Merge "Fix TV didn't initiate ARC sometimes."
diff --git a/Android.bp b/Android.bp
index 92f79d1..fdf38c6 100644
--- a/Android.bp
+++ b/Android.bp
@@ -447,9 +447,8 @@
     name: "framework-internal-utils",
     static_libs: [
         "apex_aidl_interface-java",
-        "suspend_control_aidl_interface-java",
         "framework-protos",
-        "game-driver-protos",
+        "updatable-driver-protos",
         "android.hidl.base-V1.0-java",
         "android.hardware.cas-V1.0-java",
         "android.hardware.cas-V1.1-java",
@@ -465,6 +464,7 @@
         "android.hardware.radio-V1.3-java",
         "android.hardware.radio-V1.4-java",
         "android.hardware.radio-V1.5-java",
+        "android.hardware.radio-V1.6-java",
         "android.hardware.thermal-V1.0-java-constants",
         "android.hardware.thermal-V1.0-java",
         "android.hardware.thermal-V1.1-java",
@@ -479,6 +479,8 @@
         "android.hardware.vibrator-V1.1-java",
         "android.hardware.vibrator-V1.2-java",
         "android.hardware.vibrator-V1.3-java",
+        "android.system.keystore2-java",
+        "android.system.suspend.control.internal-java",
         "devicepolicyprotosnano",
 
         "com.android.sysprop.apex",
@@ -553,6 +555,7 @@
         "framework-platform-compat-config",
         // TODO: remove gps_debug and protolog.conf.json when the build system propagates "required" properly.
         "gps_debug.conf",
+        "icu4j-platform-compat-config",
         "libcore-platform-compat-config",
         "protolog.conf.json.gz",
         "services-platform-compat-config",
@@ -570,6 +573,7 @@
         // If MimeMap ever becomes its own APEX, then this dependency would need to be removed
         // in favor of an API stubs dependency in java_library "framework" below.
         "mimemap",
+        "modules-utils-os",
     ],
     // For backwards compatibility.
     stem: "framework",
@@ -580,6 +584,7 @@
         "//frameworks/base/apex/blobstore/framework",
         "//frameworks/base/apex/jobscheduler/framework",
         "//frameworks/base/packages/Tethering/tests/unit",
+        "//packages/modules/Connectivity/Tethering/tests/unit",
     ],
 }
 
@@ -666,6 +671,7 @@
 
     srcs: [
         ":ipconnectivity-proto-src",
+        ":libstats_atom_enum_protos",
         "core/proto/**/*.proto",
         "libs/incident/**/*.proto",
     ],
@@ -692,6 +698,7 @@
 
     srcs: [
         ":ipconnectivity-proto-src",
+        ":libstats_atom_enum_protos",
         "core/proto/**/*.proto",
         "libs/incident/**/*.proto",
     ],
@@ -740,6 +747,7 @@
         "core/java/com/android/internal/util/IState.java",
         "core/java/com/android/internal/util/State.java",
         "core/java/com/android/internal/util/StateMachine.java",
+        "services/core/java/com/android/server/vcn/util/PersistableBundleUtils.java",
         "telephony/java/android/telephony/Annotation.java",
     ],
 }
@@ -769,7 +777,6 @@
     name: "framework-services-net-module-wifi-shared-srcs",
     srcs: [
         "core/java/android/net/DhcpResults.java",
-        "core/java/android/net/util/IpUtils.java",
         "core/java/android/util/LocalLog.java",
     ],
 }
@@ -807,13 +814,18 @@
     name: "platformprotos",
     srcs: [
         ":ipconnectivity-proto-src",
+        ":libstats_atom_enum_protos",
+        ":libstats_internal_protos",
         "cmds/am/proto/instrumentation_data.proto",
         "cmds/statsd/src/**/*.proto",
         "core/proto/**/*.proto",
         "libs/incident/proto/**/*.proto",
     ],
     proto: {
-        include_dirs: ["external/protobuf/src"],
+        include_dirs: [
+            "external/protobuf/src",
+            "frameworks/proto_logging/stats",
+        ],
         type: "full",
     },
     errorprone: {
@@ -836,6 +848,7 @@
     sdk_version: "9",
     srcs: [
         ":ipconnectivity-proto-src",
+        ":libstats_atom_enum_protos",
         "core/proto/**/*.proto",
         "libs/incident/proto/android/os/**/*.proto",
     ],
@@ -851,6 +864,7 @@
 
     srcs: [
         ":ipconnectivity-proto-src",
+        ":libstats_atom_enum_protos",
         "core/proto/**/*.proto",
         "libs/incident/proto/android/os/**/*.proto",
     ],
@@ -871,7 +885,9 @@
 
     proto: {
         export_proto_headers: true,
-        include_dirs: ["external/protobuf/src"],
+        include_dirs: [
+            "external/protobuf/src",
+        ],
     },
 
     cflags: [
@@ -882,6 +898,7 @@
 
     srcs: [
         ":ipconnectivity-proto-src",
+        ":libstats_atom_enum_protos",
         "core/proto/**/*.proto",
     ],
 }
@@ -1153,7 +1170,6 @@
 filegroup {
     name: "framework-telephony-common-shared-srcs",
     srcs: [
-        "core/java/android/os/BasicShellCommandHandler.java",
         "core/java/android/os/RegistrantList.java",
         "core/java/android/os/Registrant.java",
         "core/java/android/util/LocalLog.java",
@@ -1174,22 +1190,6 @@
 }
 
 // Avoid including Parcelable classes as we don't want to have two copies of
-// Parcelable cross the process. This is used by framework-telephony (frameworks/base/telephony).
-filegroup {
-    name: "framework-telephony-shared-srcs",
-    srcs: [
-        "core/java/android/util/RecurrenceRule.java",
-        "core/java/com/android/internal/os/SomeArgs.java",
-        "core/java/com/android/internal/util/BitwiseInputStream.java",
-        "core/java/com/android/internal/util/BitwiseOutputStream.java",
-        "core/java/com/android/internal/util/FunctionalUtils.java",
-        "core/java/com/android/internal/util/HexDump.java",
-        "core/java/com/android/internal/util/IndentingPrintWriter.java",
-        "core/java/com/android/internal/util/Preconditions.java",
-    ],
-}
-
-// Avoid including Parcelable classes as we don't want to have two copies of
 // Parcelable cross the process.
 filegroup {
     name: "framework-cellbroadcast-shared-srcs",
@@ -1250,7 +1250,6 @@
     name: "framework-wifi-service-shared-srcs",
     srcs: [
         "core/java/android/net/InterfaceConfiguration.java",
-        "core/java/android/os/BasicShellCommandHandler.java",
         "core/java/android/util/BackupUtils.java",
         "core/java/android/util/Rational.java",
         "core/java/com/android/internal/util/FastXmlSerializer.java",
@@ -1285,43 +1284,3 @@
     "StubLibraries.bp",
     "ApiDocs.bp",
 ]
-
-java_library {
-    name: "framework-telephony",
-    srcs: [
-        //":framework-telephony-sources",
-        //":framework-telephony-shared-srcs",
-    ],
-    // TODO: change to framework-system-stub to build against system APIs.
-    libs: [
-        "framework-minus-apex",
-        "unsupportedappusage",
-    ],
-    static_libs: [
-        "libphonenumber-platform",
-        "app-compat-annotations",
-    ],
-    sdk_version: "core_platform",
-    aidl: {
-        export_include_dirs: ["telephony/java"],
-        include_dirs: [
-            "frameworks/native/aidl/binder",
-            "frameworks/native/aidl/gui",
-        ]
-    },
-    jarjar_rules: ":framework-telephony-jarjar-rules",
-    dxflags: [
-        "--core-library",
-        "--multi-dex",
-    ],
-    // This is to break the dependency from boot jars.
-    dex_preopt: {
-        enabled: false,
-    },
-    installable: true,
-}
-
-filegroup {
-    name: "framework-telephony-jarjar-rules",
-    srcs: ["telephony/framework-telephony-jarjar-rules.txt"],
-}
diff --git a/ApiDocs.bp b/ApiDocs.bp
index ca921ff..d630209 100644
--- a/ApiDocs.bp
+++ b/ApiDocs.bp
@@ -65,7 +65,7 @@
         "test-base/src/**/*.java",
         ":opt-telephony-srcs",
         ":opt-net-voip-srcs",
-        ":art-module-public-api-stubs-source",
+        ":art.module.public.api{.public.stubs.source}",
         ":conscrypt.module.public.api{.public.stubs.source}",
         ":android_icu4j_public_api_files",
         "test-mock/src/**/*.java",
@@ -131,7 +131,7 @@
     ],
     knowntags: [
         "docs/knowntags.txt",
-        ":known-oj-tags",
+        ":art.module.public.api{.doctags}",
     ],
     custom_template: "droiddoc-templates-sdk",
     resourcesdir: "docs/html/reference/images/",
diff --git a/StubLibraries.bp b/StubLibraries.bp
index 4b0df44..90bac37 100644
--- a/StubLibraries.bp
+++ b/StubLibraries.bp
@@ -16,12 +16,12 @@
 //
 // raw source files --(metalava)--> stub source files --(javac)--> stub jar files
 //
-// The metalava conversion is done by droidstub modules *-api-stubs-docs.
-// The javac compilation is done by java_library modules android_*_stubs_current.
+// - The metalava conversion is done by droidstub modules
+// - The javac compilation is done by java_library modules
+//
 // The metalava conversion is also responsible for creating API signature files
-// and comparing them against the last API signature in api/*-current.txt files
-// and also against the latest frozen API signature in prebuilts/sdk/*/*/api/android.txt
-// files.
+// and comparing them against the checked in API signature, and also checking compatibility
+// with the latest frozen API signature.
 
 /////////////////////////////////////////////////////////////////////
 // Common metalava configs
@@ -41,21 +41,50 @@
 ]
 
 stubs_defaults {
-    name: "metalava-base-api-stubs-default",
+    name: "metalava-non-updatable-api-stubs-default",
     srcs: [
         ":framework-non-updatable-sources",
         "core/java/**/*.logtags",
         ":opt-telephony-srcs",
         ":opt-net-voip-srcs",
-        ":art-module-public-api-stubs-source",
+        ":art.module.public.api{.public.stubs.source}",
         ":android_icu4j_public_api_files",
         "**/package.html",
     ],
+    sdk_version: "core_platform",
+    arg_files: ["core/res/AndroidManifest.xml"],
     // TODO(b/147699819): remove below aidl includes.
     aidl: {
-        local_include_dirs: ["telephony/java"],
+        local_include_dirs: [
+            "apex/media/aidl/stable",
+            "telephony/java",
+        ],
     },
-    libs: ["framework-internal-utils"],
+    // These are libs from framework-internal-utils that are required (i.e. being referenced)
+    // from framework-non-updatable-sources. Add more here when there's a need.
+    // DO NOT add the entire framework-internal-utils. It might cause unnecessary circular
+    // dependencies gets bigger.
+    libs: [
+        "android.hardware.cas-V1.2-java",
+        "android.hardware.health-V1.0-java-constants",
+        "android.hardware.radio-V1.5-java",
+        "android.hardware.thermal-V1.0-java-constants",
+        "android.hardware.thermal-V2.0-java",
+        "android.hardware.tv.input-V1.0-java-constants",
+        "android.hardware.tv.tuner-V1.0-java-constants",
+        "android.hardware.usb-V1.0-java-constants",
+        "android.hardware.usb-V1.1-java-constants",
+        "android.hardware.usb.gadget-V1.0-java",
+        "android.hardware.vibrator-V1.3-java",
+        "framework-protos",
+        // There are a few classes from modules used as type arguments that
+        // need to be resolved by metalava. For now, we can use a previously
+        // finalized stub library to resolve them. If a new class gets added,
+        // this may be need to be revisited to use a manually maintained stub
+        // library with empty classes in order to resolve those references.
+        "sdk_system_30_android",
+    ],
+    high_mem: true, // Lots of sources => high memory use, see b/170701554
     installable: false,
     annotations_enabled: true,
     previous_api: ":android.api.public.latest",
@@ -66,79 +95,23 @@
     filter_packages: packages_to_document,
 }
 
-stubs_defaults {
-    name: "metalava-full-api-stubs-default",
-    defaults: ["metalava-base-api-stubs-default"],
-    srcs: [
-        ":conscrypt.module.public.api{.public.stubs.source}",
-        ":framework-updatable-sources",
-    ],
-    sdk_version: "core_platform",
-}
-
-stubs_defaults {
-    name: "metalava-non-updatable-api-stubs-default",
-    defaults: ["metalava-base-api-stubs-default"],
-    sdk_version: "core_platform",
-    // There are a few classes from modules used as type arguments that
-    // need to be resolved by metalava. For now, we can use a previously
-    // finalized stub library to resolve them. If a new class gets added,
-    // this may be need to be revisited to use a manually maintained stub
-    // library with empty classes in order to resolve those references.
-    libs: ["sdk_system_30_android"],
-    aidl: {
-        local_include_dirs: ["apex/media/aidl/stable"],
-    },
-}
-
 /////////////////////////////////////////////////////////////////////
-// *-api-stubs-docs modules providing source files for the stub libraries
+// These modules provide source files for the stub libraries
 /////////////////////////////////////////////////////////////////////
 
-// api-stubs-docs, system-api-stubs-docs, and test-api-stubs-docs have APIs
-// from the non-updatable part of the platform as well as from the updatable
-// modules
-droidstubs {
-    name: "api-stubs-docs",
-    defaults: ["metalava-full-api-stubs-default"],
-    removed_dex_api_filename: "removed-dex.txt",
-    arg_files: [
-        "core/res/AndroidManifest.xml",
-    ],
-    args: metalava_framework_docs_args,
-    check_api: {
-        current: {
-            api_file: "api/current.txt",
-            removed_api_file: "api/removed.txt",
-        },
-        last_released: {
-            api_file: ":android.api.public.latest",
-            removed_api_file: ":removed.api.public.latest",
-            baseline_file: ":public-api-incompatibilities-with-last-released",
-        },
-        api_lint: {
-            enabled: true,
-            new_since: ":android.api.public.latest",
-            baseline_file: "api/lint-baseline.txt",
-        },
-    },
-    dist: {
-        targets: ["sdk", "win_sdk"],
-        dir: "apistubs/android/public/api",
-        dest: "android.txt",
-    },
-    jdiff_enabled: true,
-}
-
 droidstubs {
     name: "api-stubs-docs-non-updatable",
     defaults: ["metalava-non-updatable-api-stubs-default"],
-    arg_files: ["core/res/AndroidManifest.xml"],
     args: metalava_framework_docs_args,
     check_api: {
         current: {
-            api_file: "non-updatable-api/current.txt",
-            removed_api_file: "non-updatable-api/removed.txt",
+            api_file: "core/api/current.txt",
+            removed_api_file: "core/api/removed.txt",
+        },
+        last_released: {
+            api_file: ":android-non-updatable.api.public.latest",
+            removed_api_file: ":android-non-updatable-removed.api.public.latest",
+            baseline_file: ":public-api-incompatibilities-with-last-released",
         },
         api_lint: {
             enabled: true,
@@ -147,84 +120,57 @@
     },
 }
 
-priv_apps = " " +
-    "--show-annotation android.annotation.SystemApi\\(" +
-        "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS" +
-    "\\) "
-
-module_libs = " " +
+priv_apps =
     " --show-annotation android.annotation.SystemApi\\(" +
-        "client=android.annotation.SystemApi.Client.MODULE_LIBRARIES" +
-    "\\)" +
+        "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS" +
+    "\\)"
+
+priv_apps_in_stubs =
     " --show-for-stub-purposes-annotation android.annotation.SystemApi\\(" +
         "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS" +
-    "\\) "
+    "\\)"
 
-droidstubs {
-    name: "system-api-stubs-docs",
-    defaults: ["metalava-full-api-stubs-default"],
-    removed_dex_api_filename: "system-removed-dex.txt",
-    arg_files: [
-        "core/res/AndroidManifest.xml",
-    ],
-    args: metalava_framework_docs_args + priv_apps,
-    check_api: {
-        current: {
-            api_file: "api/system-current.txt",
-            removed_api_file: "api/system-removed.txt",
-        },
-        last_released: {
-            api_file: ":android.api.system.latest",
-            removed_api_file: ":removed.api.system.latest",
-            baseline_file: ":system-api-incompatibilities-with-last-released"
-        },
-        api_lint: {
-            enabled: true,
-            new_since: ":android.api.system.latest",
-            baseline_file: "api/system-lint-baseline.txt",
-        },
-    },
-    dist: {
-        targets: ["sdk", "win_sdk"],
-        dir: "apistubs/android/system/api",
-        dest: "android.txt",
-    },
-    jdiff_enabled: true,
-}
+test = " --show-annotation android.annotation.TestApi"
+
+module_libs =
+    " --show-annotation android.annotation.SystemApi\\(" +
+        "client=android.annotation.SystemApi.Client.MODULE_LIBRARIES" +
+    "\\)"
 
 droidstubs {
     name: "system-api-stubs-docs-non-updatable",
     defaults: ["metalava-non-updatable-api-stubs-default"],
-    arg_files: ["core/res/AndroidManifest.xml"],
     args: metalava_framework_docs_args + priv_apps,
     check_api: {
         current: {
-            api_file: "non-updatable-api/system-current.txt",
-            removed_api_file: "non-updatable-api/system-removed.txt",
+            api_file: "core/api/system-current.txt",
+            removed_api_file: "core/api/system-removed.txt",
+        },
+        last_released: {
+            api_file: ":android-non-updatable.api.system.latest",
+            removed_api_file: ":android-non-updatable-removed.api.system.latest",
+            baseline_file: ":system-api-incompatibilities-with-last-released"
         },
         api_lint: {
             enabled: true,
             new_since: ":android-non-updatable.api.system.latest",
-            baseline_file: "non-updatable-api/system-lint-baseline.txt",
+            baseline_file: "core/api/system-lint-baseline.txt",
         },
     },
 }
 
 droidstubs {
-    name: "test-api-stubs-docs",
-    defaults: ["metalava-full-api-stubs-default"],
-    arg_files: [
-        "core/res/AndroidManifest.xml",
-    ],
-    args: metalava_framework_docs_args + " --show-annotation android.annotation.TestApi",
+    name: "test-api-stubs-docs-non-updatable",
+    defaults: ["metalava-non-updatable-api-stubs-default"],
+    args: metalava_framework_docs_args + test + priv_apps_in_stubs,
     check_api: {
         current: {
-            api_file: "api/test-current.txt",
-            removed_api_file: "api/test-removed.txt",
+            api_file: "core/api/test-current.txt",
+            removed_api_file: "core/api/test-removed.txt",
         },
         api_lint: {
             enabled: true,
-            baseline_file: "api/test-lint-baseline.txt",
+            baseline_file: "core/api/test-lint-baseline.txt",
         },
     },
     dist: {
@@ -234,52 +180,18 @@
     },
 }
 
-/////////////////////////////////////////////////////////////////////
-// Following droidstubs modules are for extra APIs for modules,
-// namely @SystemApi(client=MODULE_LIBRARIES) APIs.
-/////////////////////////////////////////////////////////////////////
-
-droidstubs {
-    name: "module-lib-api",
-    defaults: ["metalava-full-api-stubs-default"],
-    arg_files: ["core/res/AndroidManifest.xml"],
-    args: metalava_framework_docs_args + module_libs,
-
-    // Do not generate stubs as they are not needed
-    generate_stubs: false,
-
-    check_api: {
-        current: {
-            api_file: "api/module-lib-current.txt",
-            removed_api_file: "api/module-lib-removed.txt",
-        },
-        last_released: {
-            api_file: ":android.api.module-lib.latest",
-            removed_api_file: ":removed.api.module-lib.latest",
-            baseline_file: ":module-lib-api-incompatibilities-with-last-released"
-        },
-        api_lint: {
-            enabled: true,
-            new_since: ":android.api.module-lib.latest",
-            baseline_file: "api/module-lib-lint-baseline.txt",
-        },
-    },
-    dist: {
-        targets: ["sdk", "win_sdk"],
-        dir: "apistubs/android/module-lib/api",
-        dest: "android.txt",
-    },
-}
-
 droidstubs {
     name: "module-lib-api-stubs-docs-non-updatable",
     defaults: ["metalava-non-updatable-api-stubs-default"],
-    arg_files: ["core/res/AndroidManifest.xml"],
-    args: metalava_framework_docs_args + priv_apps + module_libs,
+    args: metalava_framework_docs_args + priv_apps_in_stubs + module_libs,
     check_api: {
         current: {
-            api_file: "non-updatable-api/module-lib-current.txt",
-            removed_api_file: "non-updatable-api/module-lib-removed.txt",
+            api_file: "core/api/module-lib-current.txt",
+            removed_api_file: "core/api/module-lib-removed.txt",
+        },
+        last_released: {
+            api_file: ":android-non-updatable.api.module-lib.latest",
+            removed_api_file: ":android-non-updatable-removed.api.module-lib.latest",
         },
         api_lint: {
             enabled: true,
@@ -290,7 +202,7 @@
 
 /////////////////////////////////////////////////////////////////////
 // android_*_stubs_current modules are the stubs libraries compiled
-// from *-api-stubs-docs
+// from stub sources
 /////////////////////////////////////////////////////////////////////
 
 java_defaults {
@@ -322,14 +234,7 @@
 }
 
 java_library_static {
-    name: "android_monolith_stubs_current",
-    srcs: [ ":api-stubs-docs" ],
-    static_libs: [ "private-stub-annotations-jar" ],
-    defaults: ["android_defaults_stubs_current"],
-}
-
-java_library_static {
-    name: "android_merged_stubs_current",
+    name: "android_stubs_current",
     srcs: [ ":api-stubs-docs-non-updatable" ],
     static_libs: [
         "conscrypt.module.public.api.stubs",
@@ -346,15 +251,19 @@
 }
 
 java_library_static {
-    name: "android_stubs_current",
-    static_libs: ["android_merged_stubs_current"],
-    defaults: ["android_defaults_stubs_current"],
-}
-
-java_library_static {
-    name: "android_system_monolith_stubs_current",
-    srcs: [ ":system-api-stubs-docs" ],
-    static_libs: [ "private-stub-annotations-jar" ],
+    name: "android_system_stubs_current",
+    srcs: [ ":system-api-stubs-docs-non-updatable" ],
+    static_libs: [
+        "conscrypt.module.public.api.stubs",
+        "framework-media.stubs.system",
+        "framework-mediaprovider.stubs.system",
+        "framework-permission.stubs.system",
+        "framework-sdkextensions.stubs.system",
+        "framework-statsd.stubs.system",
+        "framework-tethering.stubs.system",
+        "framework-wifi.stubs.system",
+        "private-stub-annotations-jar",
+    ],
     defaults: [
         "android_defaults_stubs_current",
         "android_stubs_dists_default",
@@ -373,9 +282,11 @@
 }
 
 java_library_static {
-    name: "android_system_merged_stubs_current",
-    srcs: [ ":system-api-stubs-docs-non-updatable" ],
+    name: "android_test_stubs_current",
+    srcs: [ ":test-api-stubs-docs-non-updatable" ],
     static_libs: [
+        // Modules do not have test APIs, but we want to include their SystemApis, like we include
+        // the SystemApi of framework-non-updatable-sources.
         "conscrypt.module.public.api.stubs",
         "framework-media.stubs.system",
         "framework-mediaprovider.stubs.system",
@@ -386,19 +297,6 @@
         "framework-wifi.stubs.system",
         "private-stub-annotations-jar",
     ],
-    defaults: ["android_defaults_stubs_current"],
-}
-
-java_library_static {
-    name: "android_system_stubs_current",
-    static_libs: ["android_system_merged_stubs_current"],
-    defaults: ["android_defaults_stubs_current"],
-}
-
-java_library_static {
-    name: "android_test_stubs_current",
-    srcs: [ ":test-api-stubs-docs" ],
-    static_libs: [ "private-stub-annotations-jar" ],
     defaults: [
         "android_defaults_stubs_current",
         "android_stubs_dists_default",
diff --git a/apct-tests/perftests/textclassifier/run.sh b/apct-tests/perftests/textclassifier/run.sh
index d36d190..9a0f4f9 100755
--- a/apct-tests/perftests/textclassifier/run.sh
+++ b/apct-tests/perftests/textclassifier/run.sh
@@ -1,8 +1,8 @@
 set -e
-build/soong/soong_ui.bash --make-mode TextClassifierPerfTests perf-setup.sh
+build/soong/soong_ui.bash --make-mode TextClassifierPerfTests perf-setup
 adb install ${OUT}/testcases/TextClassifierPerfTests/arm64/TextClassifierPerfTests.apk
 adb shell cmd package compile -m speed -f com.android.perftests.textclassifier
-adb push ${OUT}/obj/EXECUTABLES/perf-setup.sh_intermediates/perf-setup.sh /data/local/tmp/
+adb push ${OUT}/obj/EXECUTABLES/perf-setup_intermediates/perf-setup.sh /data/local/tmp/
 adb shell chmod +x /data/local/tmp/perf-setup.sh
 adb shell /data/local/tmp/perf-setup.sh
-adb shell am instrument -w -e package android.view.textclassifier com.android.perftests.textclassifier/androidx.test.runner.AndroidJUnitRunner
\ No newline at end of file
+adb shell am instrument -w -e package android.view.textclassifier com.android.perftests.textclassifier/androidx.test.runner.AndroidJUnitRunner
diff --git a/apex/Android.bp b/apex/Android.bp
index a5e2b4a..0a535a8 100644
--- a/apex/Android.bp
+++ b/apex/Android.bp
@@ -107,11 +107,13 @@
 
     // Hide impl library and stub sources
     impl_library_visibility: [
-        ":__package__",
+        ":__pkg__",
         "//frameworks/base", // For framework-all
     ],
     stubs_source_visibility: ["//visibility:private"],
 
+    defaults_visibility: ["//visibility:private"],
+
     // Collates API usages from each module for further analysis.
     plugins: ["java_api_finder"],
 
@@ -147,141 +149,6 @@
 }
 
 stubs_defaults {
-    name: "framework-module-stubs-defaults-publicapi",
-    args: mainline_framework_stubs_args,
-    installable: false,
-    sdk_version: "module_current",
-    annotations_enabled: true,
-    merge_annotations_dirs: [
-        "metalava-manual",
-    ],
-    filter_packages: framework_packages_to_document,
-    check_api: {
-        current: {
-            api_file: "api/current.txt",
-            removed_api_file: "api/removed.txt",
-        },
-        api_lint: {
-            enabled: true,
-        },
-    },
-    dist: {
-        targets: ["sdk", "win_sdk"],
-        dir: "apistubs/android/public/api",
-    },
-}
-
-stubs_defaults {
-    name: "framework-module-stubs-defaults-systemapi",
-    args: mainline_framework_stubs_args + priv_apps,
-    libs: ["framework-annotations-lib"],
-    installable: false,
-    sdk_version: "module_current",
-    annotations_enabled: true,
-    merge_annotations_dirs: [
-        "metalava-manual",
-    ],
-    filter_packages: framework_packages_to_document,
-    check_api: {
-        current: {
-            api_file: "api/system-current.txt",
-            removed_api_file: "api/system-removed.txt",
-        },
-        api_lint: {
-            enabled: true,
-        },
-    },
-    dist: {
-        targets: ["sdk", "win_sdk"],
-        dir: "apistubs/android/system/api",
-    },
-}
-
-java_defaults {
-    name: "framework-module-stubs-lib-defaults-publicapi",
-    installable: false,
-    sdk_version: "module_current",
-    libs: [ "stub-annotations" ],
-    java_version: "1.8",
-    dist: {
-        targets: ["sdk", "win_sdk"],
-        dir: "apistubs/android/public",
-    },
-}
-
-java_defaults {
-    name: "framework-module-stubs-lib-defaults-systemapi",
-    installable: false,
-    sdk_version: "module_current",
-    libs: [ "stub-annotations" ],
-    java_version: "1.8",
-    dist: {
-        targets: ["sdk", "win_sdk"],
-        dir: "apistubs/android/system",
-    },
-}
-
-java_defaults {
-    name: "framework-module-stubs-lib-defaults-module_libs_api",
-    installable: false,
-    sdk_version: "module_current",
-    libs: [ "stub-annotations" ],
-    java_version: "1.8",
-    dist: {
-        targets: ["sdk", "win_sdk"],
-        dir: "apistubs/android/module-lib",
-    },
-}
-
-// The defaults for module_libs comes in two parts - defaults for API checks
-// and defaults for stub generation. This is because we want the API txt
-// files to *only* include the module_libs_api, but the stubs to include
-// module_libs_api as well as priv_apps.
-
-stubs_defaults {
-    name: "framework-module-api-defaults-module_libs_api",
-    args: mainline_framework_stubs_args + module_libs,
-    libs: ["framework-annotations-lib"],
-    installable: false,
-    sdk_version: "module_current",
-    annotations_enabled: true,
-    merge_annotations_dirs: [
-        "metalava-manual",
-    ],
-    filter_packages: framework_packages_to_document,
-
-    // Do not generate stubs as they are not needed
-    generate_stubs: false,
-
-    check_api: {
-        current: {
-            api_file: "api/module-lib-current.txt",
-            removed_api_file: "api/module-lib-removed.txt",
-        },
-        api_lint: {
-            enabled: true,
-        },
-    },
-    dist: {
-        targets: ["sdk", "win_sdk"],
-        dir: "apistubs/android/module-lib/api",
-    },
-}
-
-stubs_defaults {
-    name: "framework-module-stubs-defaults-module_libs_api",
-    args: mainline_framework_stubs_args + module_libs + priv_apps,
-    libs: ["framework-annotations-lib"],
-    installable: false,
-    sdk_version: "module_current",
-    annotations_enabled: true,
-    merge_annotations_dirs: [
-        "metalava-manual",
-    ],
-    filter_packages: framework_packages_to_document,
-}
-
-stubs_defaults {
     name: "service-module-stubs-srcs-defaults",
     args: mainline_service_stubs_args,
     installable: false,
diff --git a/apex/extservices/Android.bp b/apex/extservices/Android.bp
deleted file mode 100644
index 0c6c4c2..0000000
--- a/apex/extservices/Android.bp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (C) 2020 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-apex {
-    name: "com.android.extservices",
-    defaults: ["com.android.extservices-defaults"],
-    manifest: "apex_manifest.json",
-}
-
-apex_defaults {
-    name: "com.android.extservices-defaults",
-    updatable: true,
-    min_sdk_version: "current",
-    key: "com.android.extservices.key",
-    certificate: ":com.android.extservices.certificate",
-    apps: ["ExtServices"],
-}
-
-apex_key {
-    name: "com.android.extservices.key",
-    public_key: "com.android.extservices.avbpubkey",
-    private_key: "com.android.extservices.pem",
-}
-
-android_app_certificate {
-    name: "com.android.extservices.certificate",
-    certificate: "com.android.extservices",
-}
diff --git a/apex/extservices/apex_manifest.json b/apex/extservices/apex_manifest.json
deleted file mode 100644
index c0b59cc..0000000
--- a/apex/extservices/apex_manifest.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "name": "com.android.extservices",
-  "version": 300900700
-}
diff --git a/apex/extservices/com.android.extservices.avbpubkey b/apex/extservices/com.android.extservices.avbpubkey
deleted file mode 100644
index f37d3e4..0000000
--- a/apex/extservices/com.android.extservices.avbpubkey
+++ /dev/null
Binary files differ
diff --git a/apex/extservices/com.android.extservices.pem b/apex/extservices/com.android.extservices.pem
deleted file mode 100644
index 7bfbd34..0000000
--- a/apex/extservices/com.android.extservices.pem
+++ /dev/null
@@ -1,51 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIJKAIBAAKCAgEAuYshVDiRkt3tmBhqcWkKOm5GcviKpLbHSPpYQDHGDwS0dqqL
-SqAd1/BgT/bVVtUkAciFApPnXn96WhNYCypptyC5FHCxM21uBCGmow+3WermD++w
-5dQk4QP2ONPIpG+KzOWBl9SiBud4SpOHDyr0JycBsrXS89Tln9kAsTDuDEFfXL/J
-8cX/S3IUwhPV0pAlgUIHdDp0DGFjZaJlEZBZ+HmImriC/AUNUMVb5lfbczXOEZPF
-0A9+JzYschfXUxn8nu1N7RN5GDbq+chszx1FMVhuFUheukkd4dLNSDl0O0RlUnD+
-C/xz1ilDzEVZhnMtMnxS9oJ8bA/HUVMfsFnaQbgGmQ0CcxFxnfbYyGXGG1H+b8vA
-MTVQi5rZXG2p+VgHIAKVrYmpETVnRPgoMqp18KuGtp5SDngi13G3YEzS7iFbqfYh
-6iW2G974nD/Dq0cSire8Oljd9PEaMCMZiP5PTFJp0G/mtw7ROoyZqsSM6rX3XVTo
-Y5dBmBMctSJ8rgDMi0ZNvRH+rq/E5+RT6yMAJ7DDbOJzBnQ3IIoGn8NzUT3P1FCB
-HYEp1U2N7QNirIQMAuVz3IlHae9N1kl3eGAO6f2CjV7vZmFpDeWw+KSYs71mRkOb
-WBgl6D9FFq4u1azrU3AwV0dj3x1eU6yVnKUy1J7ppF/mcR+VzH7ThzTdV7cCAwEA
-AQKCAgEApWFU2Mv/PYhg0bPZlLLKsiA+3RWaBo0AfpTd+oIjBpnr/OWweFjVoPcZ
-8cyShe4/RPOlUxHgJcO8m/MoA/PO/LLHJWf5GlzMthQEgs1sYVJVtBiydXitUn+E
-hUyIR8FAV7et1lZqAXtqJhbvSF7B9u/2vIMCv+GgtuTmkAmL9RKD3Jj6eG1CS84o
-oICrkx52v4rKOBgt/icEQMAKFCi1eRti3n3eCqK6JqdzbZIcAcoQnmw34mccy/im
-jx+fBuxf1oywa8NyqVmyAehazBVL6lrm7ENwY9zuLK4H2fuUFYu2QFCEsMxZt6da
-TgX2cTfSLnDQRfcyzeMWhu9vjHHabjpLNjiCKhIhGyO0rO1rtea8ajZHgM/2sxXq
-6gLynW0dlatlxmjANlN9WQPGNdzvcIFJ0TLnI4mlJnWpqCsN9iW1d4ey13WiZUVR
-DgtnR60zao+LRCCM4D3cuVLq0DjL2BlHGXnOPK/LpQG1LbI1TroZpgSEHSZlQRzT
-ql9txgNqTHxijXuPL2VhhwhW7cqDoO8sLwV3BqDMIH56U0cbUBiSA/G9fKeI/DEG
-i7LcrMgrBk+xnuAWoFHuzfBMAdD9i3kYyk+41tOmcza2TNJgxadVYp5woHFvYvS/
-GKaNiRz0XmcijO5Ir0yxgCq21BdkWzo5zVrTFABiKeR7YXiee8kCggEBAOeULWgR
-spolJJrACWJspRvKb9FGnbGiYOnCGJoAc751kuXmNxoyWnEwgcjrSEoayNPUfOtz
-IgA+twqjgl0Zec2XFPfUcgWUBrrvvUEV4NIH5ibaR7ezHGeovCWs9XoDyzHHvhDr
-c6T5kXFZ60rS5h6LGUnE1hkHFJoHuTIBbn9j7eIbri8S71i7HWQ04s4KuQ+Bwbxm
-UnkEhbc+zMWHXfXy7rx4/eEZcZwtEybIORcHXYNPGeqMfOlcEMHpKEOi+NvDA6cp
-vTaTSwJ6ZBgYh7Tw3bNgRxSknaIhcGwMD0ojStjC5xzXT1Zr2Z3GXwYvOGcq3MeZ
-z+V2cx5xuwyp7R0CggEBAM0cKKNZEZwi/1zBPUDMFB4iJoX12BxQX6e5wdlHGXgF
-XeZwCnaIxOxMDxH79M5Svmpdu/jkUijI/pRvcE1iohFyIBvTUSDmlAoy4keXqMEQ
-M2hA+TwVA3JLmMcV8HKy/MFlwwKJB1JDcoxGjnXsM5UjVTD2jilO7vlJZs3+0ws0
-R7qzRT3ED25QTpZyDYcKE2otc5bzIZG3yAaJtWd3NugWsKpxDgr2RFUGJiHBq72n
-48FkSjfgaDTn83zYcPvS0Uykb2ho8G/N+EurstL41n3nQo0I7FLbyptOopDDwsSp
-Ndejn08NVAQ+xFAafOyqHkA3Ytpl0QCZDpMBuLdvw+MCggEAOVMt1kgjPRMat4/4
-ArxANtvqyBRB7vnyIYthiaW5ARmbrntJgpuaVdCbIABWGbn9oqpD7gjHDuZ3axPE
-roUi6KiQkTSusQDOlbHI2Haw+2znJRD9ldSpoGNdh7oD3htYTk9Sll+ideEthrCq
-lRAV1NO8A83M7c8Z43Mr/dvq3XAAL+uIN7DpPL687NRGnJh87QDC039ExR5Ad3b9
-O5xhvwNO46rTtcgVnoJt7ji8IR46oMmQ8cWrGh0nLMkppWyPS98/ZT7ozryxYcCo
-TGquFTVWvBOGJO8G8l5ytNxbYI/R9Exy52nJAuyZpvu3BBHmVWt/0Y0asIOcxZmD
-owPhZQKCAQAfWAFBzReq05JQe1s/7q/YVwGqEQKgeQvVFsbvzDSxKajK0S5YJNhq
-/8iByA4GBZEBsidKhqGjh+uXhVwVB1Ca9+S+O9G3BGV1FYeMxzlLn40rjlpH+zIW
-okTLj6e5724+o61kUspioNn9Y77beGf9j3OyUsswttZAFB54tktL+AZKGqEnKjHt
-eqo3xWAZ1clXvXBfjfIAUaRok1y8XfRvDSCcO0CZHj8c+x6SpAT5q5FbeVb6KPnj
-s9p6ppzFbtb7Llm0C+1KOKCL98YRBWPJw7Bg2w86LkpM53xiQPgfk3gd5uwuaWwA
-ZhMb5qBWjjynNY+OrmZ8/+bBQk8XASZfAoIBAFkHOnZOD1JJQ0QvaJ9tuCgHi216
-I8QPMMTdm3ZEDHSYMNwl7ayeseBcmB2zaqBKYz75qcU0SK4lnZkR2wIpbsHZNSVM
-J0WpN6r9G4JdnVi11J04RsfSMjCUr/PTVMmPvw8xPHrCxkJmB+d56olSE80I1Jrx
-djCv1LtSsT10W7FIcY82/cOi4xxGLOA70lDCf+szofQgVP8WvuOA1YaFw98ca8zc
-A401CyNexk24/c3d6C19YW/MppdE0uGMxL/oHsPgwkZAf6LmvF/UF71PsBUEniLc
-YFaJl3wn1cPfBBo9L4sZzyP2qokL8YHdg+wW7b4IOsYwbeqceBvqPtcUUPs=
------END RSA PRIVATE KEY-----
diff --git a/apex/extservices/com.android.extservices.pk8 b/apex/extservices/com.android.extservices.pk8
deleted file mode 100644
index 59585a2..0000000
--- a/apex/extservices/com.android.extservices.pk8
+++ /dev/null
Binary files differ
diff --git a/apex/extservices/com.android.extservices.x509.pem b/apex/extservices/com.android.extservices.x509.pem
deleted file mode 100644
index e0343b8..0000000
--- a/apex/extservices/com.android.extservices.x509.pem
+++ /dev/null
@@ -1,36 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGLTCCBBWgAwIBAgIUdqdMmx/5OsCP3Ew3/hcr7+1ACHEwDQYJKoZIhvcNAQEL
-BQAwgaQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQH
-DA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdBbmRyb2lkMRAwDgYDVQQLDAdBbmRy
-b2lkMSAwHgYDVQQDDBdjb20uYW5kcm9pZC5leHRzZXJ2aWNlczEiMCAGCSqGSIb3
-DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAgFw0yMDAxMTcxMDIxMzZaGA80NzU3
-MTIxMzEwMjEzNlowgaQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlh
-MRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdBbmRyb2lkMRAwDgYD
-VQQLDAdBbmRyb2lkMSAwHgYDVQQDDBdjb20uYW5kcm9pZC5leHRzZXJ2aWNlczEi
-MCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCAiIwDQYJKoZIhvcN
-AQEBBQADggIPADCCAgoCggIBANKaSeLGaFRRt779vAtTfG3t2aQZrWOByUYc7yUN
-RdmJqWxU47OL5urYmanWPbz2f972Q9oi8x+8y4ny9SEY3wg0pUbzvKNTXpkxWyG1
-HE2C2zTfzuDDLpDIf2usWynt1wLVhpYC3k+7Yv2vOIK5dKkezh6PfdKmsbDae5DE
-d22tTSYZ5KwNpIWrgQle26cRG5sqhAFdkpgGMF00Huz06cjUoTjs2sNSlXTRBOTP
-CCy8UoRjBivQZkwHbddfsn+Z22ARPG8JDg/n4mEi8C0T6bJeQeirSPkBCkD6Djgq
-7RddJ2eLYZII8l8r6A6x+6cnTkXHaV5g3LUwPvi8XEn9IUuT9WJNRje/vfYLycTQ
-kP415CZMxDvsi1Ul4YsbL3enE89ryGMTpVZPogch/36DG5Sye28yISItNUy3urJa
-OXbg7mh+MwPd4bQaW4CJk+AUweKaF4aV0SZFT+nCewL4xLdGdy889KazlW98NqtK
-hOSxIg1jHkZq48ajuq2A+ns1yDKt1l0f9IYCz3mz/IXInokbkjPvHahJTJ+OMHXO
-THD8e5gBzcK841jJk+H3EsIYOHsp66uy2IgEHN+9pAS6vI0xfrXOYuKzuSL3oxcV
-FlVTimt4xokMMerdcW4KD+MC5NFEip4DUS4JKCyG0wRI3ffEs9Zcpxi3QSibrjLW
-rz+hAgMBAAGjUzBRMB0GA1UdDgQWBBTP2AhZzEUUgtAFlkaMaq+RvY06fDAfBgNV
-HSMEGDAWgBTP2AhZzEUUgtAFlkaMaq+RvY06fDAPBgNVHRMBAf8EBTADAQH/MA0G
-CSqGSIb3DQEBCwUAA4ICAQCbwtfo37j62Sudmt32PCfRN/r5ZNDNNA2JhR8uDUmX
-xXfF5YfDvSKsNLiQKcDagu6a+0C+QnzXHXCBlXZFrTJ8NAVMlmqdHGwoFoYMfJZH
-R1lCTidyFMoMLJ8GRGPJjzDkKnOeAqKMCtKvXoH2r12+JB2/ov4ooLREu/wPkEXT
-OymkyWNP5XLQTKWqfEQyXXFpuwZ+m35Wkr0Fm92mZeJpVeIZPK7M7aK3zyoj7XJP
-YLMsR/AQs8OULdpfNMddAuN3ndlYu03LZlsF6LG5bduaDDcESJ5hdJrgBa/NBKRU
-IbS+q/6WAjYKMNRT/fPGew4wUzlWKi1Ihdk79oaqKKijE1b2JSJD1/SEYiBf+JPE
-bXobUrMbBwFpdhT+YLMF9FsuPQKsUIONaWiO4QcQoY/rQwGxPP6fV8ZbBrUWJewj
-MpSdU9foZNa/TmOAgfS/JxH+nXnG4+H1m8mdNBsxvsYmF2ZuGb/jdEeA2cuHIJDZ
-FJeWwCFxzlCGZJaUsxsnZByADBuufUVaO/9gGs0YQC/JP1i9hK4DyZdKwZpXdLi2
-Nw27Qma4WEIZnMb6Rgk1nTV+7ALcOSIhGgFOOeDTuCGfnEcz2coai5fbD/K6Q7Xu
-IRNyxHQjheZPdei2x912Ex/KqKGfaFaZJxrvCSKdhzxcTFIsO4JuZs+SDpRTKcI7
-Cw==
------END CERTIFICATE-----
diff --git a/apex/extservices/testing/Android.bp b/apex/extservices/testing/Android.bp
deleted file mode 100644
index 88a4724..0000000
--- a/apex/extservices/testing/Android.bp
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (C) 2020 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-apex_test {
-    name: "test_com.android.extservices",
-    visibility: [
-        "//system/apex/tests",
-    ],
-    defaults: ["com.android.extservices-defaults"],
-    manifest: "test_manifest.json",
-    file_contexts: ":com.android.extservices-file_contexts",
-    // Test APEX, should never be installed
-    installable: false,
-}
diff --git a/apex/extservices/testing/test_manifest.json b/apex/extservices/testing/test_manifest.json
deleted file mode 100644
index 23a50e3..0000000
--- a/apex/extservices/testing/test_manifest.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "name": "com.android.extservices",
-  "version": 2147483647
-}
diff --git a/apex/jobscheduler/framework/java/android/app/job/JobInfo.java b/apex/jobscheduler/framework/java/android/app/job/JobInfo.java
index 9f98f8e..24b8055 100644
--- a/apex/jobscheduler/framework/java/android/app/job/JobInfo.java
+++ b/apex/jobscheduler/framework/java/android/app/job/JobInfo.java
@@ -210,7 +210,7 @@
     public static final int PRIORITY_BOUND_FOREGROUND_SERVICE = 30;
 
     /** @hide For backward compatibility. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int PRIORITY_FOREGROUND_APP = PRIORITY_BOUND_FOREGROUND_SERVICE;
 
     /**
@@ -218,7 +218,7 @@
      * JobInfo priority if it is smaller).
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int PRIORITY_FOREGROUND_SERVICE = 35;
 
     /**
@@ -257,7 +257,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int FLAG_WILL_BE_FOREGROUND = 1 << 0;
 
     /**
@@ -462,11 +462,11 @@
     public @NetworkType int getNetworkType() {
         if (networkRequest == null) {
             return NETWORK_TYPE_NONE;
-        } else if (networkRequest.networkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED)) {
+        } else if (networkRequest.hasCapability(NET_CAPABILITY_NOT_METERED)) {
             return NETWORK_TYPE_UNMETERED;
-        } else if (networkRequest.networkCapabilities.hasCapability(NET_CAPABILITY_NOT_ROAMING)) {
+        } else if (networkRequest.hasCapability(NET_CAPABILITY_NOT_ROAMING)) {
             return NETWORK_TYPE_NOT_ROAMING;
-        } else if (networkRequest.networkCapabilities.hasTransport(TRANSPORT_CELLULAR)) {
+        } else if (networkRequest.hasTransport(TRANSPORT_CELLULAR)) {
             return NETWORK_TYPE_CELLULAR;
         } else {
             return NETWORK_TYPE_ANY;
@@ -1007,14 +1007,14 @@
         }
 
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public Builder setPriority(int priority) {
             mPriority = priority;
             return this;
         }
 
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public Builder setFlags(int flags) {
             mFlags = flags;
             return this;
@@ -1513,7 +1513,7 @@
             }
             // We can't serialize network specifiers
             if (mIsPersisted && mNetworkRequest != null
-                    && mNetworkRequest.networkCapabilities.getNetworkSpecifier() != null) {
+                    && mNetworkRequest.getNetworkSpecifier() != null) {
                 throw new IllegalArgumentException(
                         "Network specifiers aren't supported for persistent jobs");
             }
diff --git a/apex/jobscheduler/framework/java/android/app/job/JobScheduler.java b/apex/jobscheduler/framework/java/android/app/job/JobScheduler.java
index 42725c5..e0467df 100644
--- a/apex/jobscheduler/framework/java/android/app/job/JobScheduler.java
+++ b/apex/jobscheduler/framework/java/android/app/job/JobScheduler.java
@@ -154,6 +154,7 @@
      * @param tag Debugging tag for dumps associated with this job (instead of the service class)
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS)
     public abstract @Result int scheduleAsPackage(@NonNull JobInfo job, @NonNull String packageName,
@@ -196,6 +197,7 @@
      * Returns a list of all currently-executing jobs.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract List<JobInfo> getStartedJobs();
 
     /**
@@ -205,5 +207,6 @@
      * <p class="note">This is a slow operation, so it should be called sparingly.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract List<JobSnapshot> getAllJobSnapshots();
 }
\ No newline at end of file
diff --git a/apex/jobscheduler/framework/java/android/os/IDeviceIdleController.aidl b/apex/jobscheduler/framework/java/android/os/IDeviceIdleController.aidl
index 643d47c..7d02d2d 100644
--- a/apex/jobscheduler/framework/java/android/os/IDeviceIdleController.aidl
+++ b/apex/jobscheduler/framework/java/android/os/IDeviceIdleController.aidl
@@ -31,13 +31,13 @@
     String[] getSystemPowerWhitelistExceptIdle();
     String[] getSystemPowerWhitelist();
     String[] getUserPowerWhitelist();
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     String[] getFullPowerWhitelistExceptIdle();
     String[] getFullPowerWhitelist();
     int[] getAppIdWhitelistExceptIdle();
     int[] getAppIdWhitelist();
     int[] getAppIdUserWhitelist();
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     int[] getAppIdTempWhitelist();
     boolean isPowerSaveWhitelistExceptIdleApp(String name);
     boolean isPowerSaveWhitelistApp(String name);
diff --git a/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java b/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java
index d54d857..ed818f6 100644
--- a/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java
+++ b/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java
@@ -21,7 +21,6 @@
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
-import android.annotation.TestApi;
 import android.content.Context;
 
 import java.lang.annotation.Retention;
@@ -35,7 +34,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 @SystemService(Context.POWER_WHITELIST_MANAGER)
 public class PowerWhitelistManager {
     private final Context mContext;
diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerShellCommand.java b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerShellCommand.java
index 1e72062..cc20213 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerShellCommand.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerShellCommand.java
@@ -20,10 +20,11 @@
 import android.app.AppGlobals;
 import android.content.pm.IPackageManager;
 import android.content.pm.PackageManager;
-import android.os.BasicShellCommandHandler;
 import android.os.Binder;
 import android.os.UserHandle;
 
+import com.android.modules.utils.BasicShellCommandHandler;
+
 import java.io.PrintWriter;
 
 public final class JobSchedulerShellCommand extends BasicShellCommandHandler {
diff --git a/apex/media/OWNERS b/apex/media/OWNERS
index 9b853c5..ced2fb5 100644
--- a/apex/media/OWNERS
+++ b/apex/media/OWNERS
@@ -1,4 +1,10 @@
 andrewlewis@google.com
 aquilescanta@google.com
+chz@google.com
+hdmoon@google.com
+hkuang@google.com
+jinpark@google.com
+klhyun@google.com
+lnilsson@google.com
 marcone@google.com
 sungsoo@google.com
diff --git a/apex/permission/Android.bp b/apex/permission/Android.bp
index 71a52bb..e30df05 100644
--- a/apex/permission/Android.bp
+++ b/apex/permission/Android.bp
@@ -21,7 +21,7 @@
 apex_defaults {
     name: "com.android.permission-defaults",
     updatable: true,
-    min_sdk_version: "R",
+    min_sdk_version: "30",
     key: "com.android.permission.key",
     certificate: ":com.android.permission.certificate",
     java_libs: [
diff --git a/apex/statsd/Android.bp b/apex/statsd/Android.bp
index ede8852..f13861e 100644
--- a/apex/statsd/Android.bp
+++ b/apex/statsd/Android.bp
@@ -35,7 +35,7 @@
     prebuilts: ["com.android.os.statsd.init.rc"],
     name: "com.android.os.statsd-defaults",
     updatable: true,
-    min_sdk_version: "R",
+    min_sdk_version: "30",
     key: "com.android.os.statsd.key",
     certificate: ":com.android.os.statsd.certificate",
 }
diff --git a/apex/statsd/aidl/android/os/IStatsCompanionService.aidl b/apex/statsd/aidl/android/os/IStatsCompanionService.aidl
index 5cdb324..d56a4bd 100644
--- a/apex/statsd/aidl/android/os/IStatsCompanionService.aidl
+++ b/apex/statsd/aidl/android/os/IStatsCompanionService.aidl
@@ -27,17 +27,6 @@
     oneway void statsdReady();
 
     /**
-    * Register an alarm for anomaly detection to fire at the given timestamp (ms since epoch).
-    * If anomaly alarm had already been registered, it will be replaced with the new timestamp.
-    * Uses AlarmManager.set API, so  if the timestamp is in the past, alarm fires immediately, and
-    * alarm is inexact.
-    */
-    oneway void setAnomalyAlarm(long timestampMs);
-
-    /** Cancel any anomaly detection alarm. */
-    oneway void cancelAnomalyAlarm();
-
-    /**
       * Register a repeating alarm for pulling to fire at the given timestamp and every
       * intervalMs thereafter (in ms since epoch).
       * If polling alarm had already been registered, it will be replaced by new one.
diff --git a/apex/statsd/aidl/android/os/IStatsd.aidl b/apex/statsd/aidl/android/os/IStatsd.aidl
index 0d3f420..066412a 100644
--- a/apex/statsd/aidl/android/os/IStatsd.aidl
+++ b/apex/statsd/aidl/android/os/IStatsd.aidl
@@ -42,13 +42,6 @@
     void statsCompanionReady();
 
     /**
-     * Tells statsd that an anomaly may have occurred, so statsd can check whether this is so and
-     * act accordingly.
-     * Two-way binder call so that caller's method (and corresponding wakelocks) will linger.
-     */
-    void informAnomalyAlarmFired();
-
-    /**
      * Tells statsd that it is time to poll some stats. Statsd will be responsible for determing
      * what stats to poll and initiating the polling.
      * Two-way binder call so that caller's method (and corresponding wakelocks) will linger.
diff --git a/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java b/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java
index cbc8ed6..b5e7224 100644
--- a/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java
+++ b/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java
@@ -100,7 +100,6 @@
     private static IStatsd sStatsd;
     private static final Object sStatsdLock = new Object();
 
-    private final OnAlarmListener mAnomalyAlarmListener;
     private final OnAlarmListener mPullingAlarmListener;
     private final OnAlarmListener mPeriodicAlarmListener;
 
@@ -124,7 +123,6 @@
         handlerThread.start();
         mHandler = new CompanionHandler(handlerThread.getLooper());
 
-        mAnomalyAlarmListener = new AnomalyAlarmListener(context);
         mPullingAlarmListener = new PullingAlarmListener(context);
         mPeriodicAlarmListener = new PeriodicAlarmListener(context);
     }
@@ -336,41 +334,6 @@
         }
     }
 
-    public static final class AnomalyAlarmListener implements OnAlarmListener {
-        private final Context mContext;
-
-        AnomalyAlarmListener(Context context) {
-            mContext = context;
-        }
-
-        @Override
-        public void onAlarm() {
-            if (DEBUG) {
-                Log.i(TAG, "StatsCompanionService believes an anomaly has occurred at time "
-                        + System.currentTimeMillis() + "ms.");
-            }
-            IStatsd statsd = getStatsdNonblocking();
-            if (statsd == null) {
-                Log.w(TAG, "Could not access statsd to inform it of anomaly alarm firing");
-                return;
-            }
-
-            // Wakelock needs to be retained while calling statsd.
-            Thread thread = new WakelockThread(mContext,
-                    AnomalyAlarmListener.class.getCanonicalName(), new Runnable() {
-                        @Override
-                        public void run() {
-                            try {
-                                statsd.informAnomalyAlarmFired();
-                            } catch (RemoteException e) {
-                                Log.w(TAG, "Failed to inform statsd of anomaly alarm firing", e);
-                            }
-                        }
-                    });
-            thread.start();
-        }
-    }
-
     public final static class PullingAlarmListener implements OnAlarmListener {
         private final Context mContext;
 
@@ -469,34 +432,6 @@
     }
 
     @Override // Binder call
-    public void setAnomalyAlarm(long timestampMs) {
-        StatsCompanion.enforceStatsdCallingUid();
-        if (DEBUG) Log.d(TAG, "Setting anomaly alarm for " + timestampMs);
-        final long callingToken = Binder.clearCallingIdentity();
-        try {
-            // using ELAPSED_REALTIME, not ELAPSED_REALTIME_WAKEUP, so if device is asleep, will
-            // only fire when it awakens.
-            // AlarmManager will automatically cancel any previous mAnomalyAlarmListener alarm.
-            mAlarmManager.setExact(AlarmManager.ELAPSED_REALTIME, timestampMs, TAG + ".anomaly",
-                    mAnomalyAlarmListener, mHandler);
-        } finally {
-            Binder.restoreCallingIdentity(callingToken);
-        }
-    }
-
-    @Override // Binder call
-    public void cancelAnomalyAlarm() {
-        StatsCompanion.enforceStatsdCallingUid();
-        if (DEBUG) Log.d(TAG, "Cancelling anomaly alarm");
-        final long callingToken = Binder.clearCallingIdentity();
-        try {
-            mAlarmManager.cancel(mAnomalyAlarmListener);
-        } finally {
-            Binder.restoreCallingIdentity(callingToken);
-        }
-    }
-
-    @Override // Binder call
     public void setAlarmForSubscriberTriggering(long timestampMs) {
         StatsCompanion.enforceStatsdCallingUid();
         if (DEBUG) {
@@ -666,7 +601,6 @@
         // instead of in binder death because statsd can come back and set different alarms, or not
         // want to set an alarm when it had been set. This guarantees that when we get a new statsd,
         // we cancel any alarms before it is able to set them.
-        cancelAnomalyAlarm();
         cancelPullingAlarm();
         cancelAlarmForSubscriberTriggering();
 
diff --git a/api/Android.bp b/api/Android.bp
index cb6d448..471b993 100644
--- a/api/Android.bp
+++ b/api/Android.bp
@@ -16,36 +16,17 @@
     default_visibility: ["//visibility:private"],
 }
 
-// *-current.txt files for use by modules in other directories like cts
-filegroup {
-    name: "frameworks-base-api-current.txt",
-    srcs: ["current.txt"],
-    visibility: ["//visibility:public"],
-}
-
-filegroup {
-    name: "frameworks-base-api-system-current.txt",
-    srcs: ["system-current.txt"],
-    visibility: ["//visibility:public"],
-}
-
-filegroup {
-    name: "frameworks-base-api-system-removed.txt",
-    srcs: ["system-removed.txt"],
-    visibility: ["//visibility:public"],
-}
-
 genrule {
     name: "current-api-xml",
     tools: ["metalava"],
-    srcs: ["current.txt"],
+    srcs: [":frameworks-base-api-current.txt"],
     out: ["current.api"],
     cmd: "$(location metalava) --no-banner -convert2xmlnostrip $(in) $(out)",
     visibility: ["//visibility:public"],
 }
 
 genrule {
-    name: "frameworks-base-api-current-merged.txt",
+    name: "frameworks-base-api-current.txt",
     srcs: [
         ":conscrypt.module.public.api{.public.api.txt}",
         ":framework-media{.public.api.txt}",
@@ -60,10 +41,67 @@
     out: ["current.txt"],
     tools: ["metalava"],
     cmd: "$(location metalava) --no-banner --format=v2 $(in) --api $(out)",
+    dists: [
+        {
+            targets: ["droidcore"],
+            dir: "api",
+            dest: "current.txt",
+        },
+        {
+            targets: ["sdk", "win_sdk"],
+            dir: "apistubs/android/public/api",
+            dest: "android.txt",
+        },
+    ],
+    visibility: ["//visibility:public"],
 }
 
 genrule {
-    name: "frameworks-base-api-system-current-merged.txt",
+    name: "frameworks-base-api-current.srcjar",
+    srcs: [
+        ":api-stubs-docs-non-updatable",
+        ":conscrypt.module.public.api{.public.stubs.source}",
+        ":framework-media{.public.stubs.source}",
+        ":framework-mediaprovider{.public.stubs.source}",
+        ":framework-permission{.public.stubs.source}",
+        ":framework-sdkextensions{.public.stubs.source}",
+        ":framework-statsd{.public.stubs.source}",
+        ":framework-tethering{.public.stubs.source}",
+        ":framework-wifi{.public.stubs.source}",
+    ],
+    out: ["current.srcjar"],
+    tools: ["merge_zips"],
+    cmd: "$(location merge_zips) $(out) $(in)",
+    visibility: ["//visibility:private"], // Used by make module in //development, mind.
+}
+
+genrule {
+    name: "frameworks-base-api-removed.txt",
+    srcs: [
+        ":conscrypt.module.public.api{.public.removed-api.txt}",
+        ":framework-media{.public.removed-api.txt}",
+        ":framework-mediaprovider{.public.removed-api.txt}",
+        ":framework-permission{.public.removed-api.txt}",
+        ":framework-sdkextensions{.public.removed-api.txt}",
+        ":framework-statsd{.public.removed-api.txt}",
+        ":framework-tethering{.public.removed-api.txt}",
+        ":framework-wifi{.public.removed-api.txt}",
+        ":non-updatable-removed.txt",
+    ],
+    out: ["removed.txt"],
+    tools: ["metalava"],
+    cmd: "$(location metalava) --no-banner --format=v2 $(in) --api $(out)",
+    dists: [
+        {
+            targets: ["droidcore"],
+            dir: "api",
+            dest: "removed.txt",
+        },
+    ],
+}
+
+genrule {
+    name: "frameworks-base-api-system-current.txt",
     srcs: [
         ":framework-media{.system.api.txt}",
         ":framework-mediaprovider{.system.api.txt}",
@@ -77,10 +115,48 @@
     out: ["system-current.txt"],
     tools: ["metalava"],
     cmd: "$(location metalava) --no-banner --format=v2 $(in) --api $(out)",
+    dists: [
+        {
+            targets: ["droidcore"],
+            dir: "api",
+            dest: "system-current.txt",
+        },
+        {
+            targets: ["sdk", "win_sdk"],
+            dir: "apistubs/android/system/api",
+            dest: "android.txt",
+        },
+    ],
+    visibility: ["//visibility:public"],
 }
 
 genrule {
-    name: "frameworks-base-api-module-lib-current-merged.txt",
+    name: "frameworks-base-api-system-removed.txt",
+    srcs: [
+        ":framework-media{.system.removed-api.txt}",
+        ":framework-mediaprovider{.system.removed-api.txt}",
+        ":framework-permission{.system.removed-api.txt}",
+        ":framework-sdkextensions{.system.removed-api.txt}",
+        ":framework-statsd{.system.removed-api.txt}",
+        ":framework-tethering{.system.removed-api.txt}",
+        ":framework-wifi{.system.removed-api.txt}",
+        ":non-updatable-system-removed.txt",
+    ],
+    out: ["system-removed.txt"],
+    tools: ["metalava"],
+    cmd: "$(location metalava) --no-banner --format=v2 $(in) --api $(out)",
+    dists: [
+        {
+            targets: ["droidcore"],
+            dir: "api",
+            dest: "system-removed.txt",
+        },
+    ],
+    visibility: ["//visibility:public"],
+}
+
+genrule {
+    name: "frameworks-base-api-module-lib-current.txt",
     srcs: [
         ":framework-media{.module-lib.api.txt}",
         ":framework-mediaprovider{.module-lib.api.txt}",
@@ -94,4 +170,54 @@
     out: ["module-lib-current.txt"],
     tools: ["metalava"],
     cmd: "$(location metalava) --no-banner --format=v2 $(in) --api $(out)",
+    dists: [
+        {
+            targets: ["droidcore"],
+            dir: "api",
+            dest: "module-lib-current.txt",
+        },
+        {
+            targets: ["sdk", "win_sdk"],
+            dir: "apistubs/android/module-lib/api",
+            dest: "android.txt",
+        },
+    ],
+}
+
+genrule {
+    name: "frameworks-base-api-module-lib-removed.txt",
+    srcs: [
+        ":framework-media{.module-lib.removed-api.txt}",
+        ":framework-mediaprovider{.module-lib.removed-api.txt}",
+        ":framework-permission{.module-lib.removed-api.txt}",
+        ":framework-sdkextensions{.module-lib.removed-api.txt}",
+        ":framework-statsd{.module-lib.removed-api.txt}",
+        ":framework-tethering{.module-lib.removed-api.txt}",
+        ":framework-wifi{.module-lib.removed-api.txt}",
+        ":non-updatable-module-lib-removed.txt",
+    ],
+    out: ["module-lib-removed.txt"],
+    tools: ["metalava"],
+    cmd: "$(location metalava) --no-banner --format=v2 $(in) --api $(out)",
+    dists: [
+        {
+            targets: ["droidcore"],
+            dir: "api",
+            dest: "module-lib-removed.txt",
+        },
+    ],
+}
+
+genrule {
+    name: "combined-removed-dex",
+    srcs: [
+        ":frameworks-base-api-removed.txt",
+        ":frameworks-base-api-system-removed.txt",
+        ":android.car-stubs-docs{.removed-api.txt}",
+        ":android.car-system-stubs-docs{.removed-api.txt}",
+    ],
+    tool_files: ["gen_combined_removed_dex.sh"],
+    tools: ["metalava"],
+    out: ["combined-removed-dex.txt"],
+    cmd: "$(location gen_combined_removed_dex.sh) $(location metalava) $(genDir) $(in) > $(out)",
 }
diff --git a/api/current.txt b/api/current.txt
deleted file mode 100644
index 68a22f2..0000000
--- a/api/current.txt
+++ /dev/null
@@ -1,82357 +0,0 @@
-// Signature format: 2.0
-package android {
-
-  public final class Manifest {
-    ctor public Manifest();
-  }
-
-  public static final class Manifest.permission {
-    ctor public Manifest.permission();
-    field public static final String ACCEPT_HANDOVER = "android.permission.ACCEPT_HANDOVER";
-    field public static final String ACCESS_BACKGROUND_LOCATION = "android.permission.ACCESS_BACKGROUND_LOCATION";
-    field public static final String ACCESS_CHECKIN_PROPERTIES = "android.permission.ACCESS_CHECKIN_PROPERTIES";
-    field public static final String ACCESS_COARSE_LOCATION = "android.permission.ACCESS_COARSE_LOCATION";
-    field public static final String ACCESS_FINE_LOCATION = "android.permission.ACCESS_FINE_LOCATION";
-    field public static final String ACCESS_LOCATION_EXTRA_COMMANDS = "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS";
-    field public static final String ACCESS_MEDIA_LOCATION = "android.permission.ACCESS_MEDIA_LOCATION";
-    field public static final String ACCESS_NETWORK_STATE = "android.permission.ACCESS_NETWORK_STATE";
-    field public static final String ACCESS_NOTIFICATION_POLICY = "android.permission.ACCESS_NOTIFICATION_POLICY";
-    field public static final String ACCESS_WIFI_STATE = "android.permission.ACCESS_WIFI_STATE";
-    field public static final String ACCOUNT_MANAGER = "android.permission.ACCOUNT_MANAGER";
-    field public static final String ACTIVITY_RECOGNITION = "android.permission.ACTIVITY_RECOGNITION";
-    field public static final String ADD_VOICEMAIL = "com.android.voicemail.permission.ADD_VOICEMAIL";
-    field public static final String ANSWER_PHONE_CALLS = "android.permission.ANSWER_PHONE_CALLS";
-    field public static final String BATTERY_STATS = "android.permission.BATTERY_STATS";
-    field public static final String BIND_ACCESSIBILITY_SERVICE = "android.permission.BIND_ACCESSIBILITY_SERVICE";
-    field public static final String BIND_APPWIDGET = "android.permission.BIND_APPWIDGET";
-    field public static final String BIND_AUTOFILL_SERVICE = "android.permission.BIND_AUTOFILL_SERVICE";
-    field public static final String BIND_CALL_REDIRECTION_SERVICE = "android.permission.BIND_CALL_REDIRECTION_SERVICE";
-    field public static final String BIND_CARRIER_MESSAGING_CLIENT_SERVICE = "android.permission.BIND_CARRIER_MESSAGING_CLIENT_SERVICE";
-    field @Deprecated public static final String BIND_CARRIER_MESSAGING_SERVICE = "android.permission.BIND_CARRIER_MESSAGING_SERVICE";
-    field public static final String BIND_CARRIER_SERVICES = "android.permission.BIND_CARRIER_SERVICES";
-    field @Deprecated public static final String BIND_CHOOSER_TARGET_SERVICE = "android.permission.BIND_CHOOSER_TARGET_SERVICE";
-    field public static final String BIND_CONDITION_PROVIDER_SERVICE = "android.permission.BIND_CONDITION_PROVIDER_SERVICE";
-    field public static final String BIND_CONTROLS = "android.permission.BIND_CONTROLS";
-    field public static final String BIND_DEVICE_ADMIN = "android.permission.BIND_DEVICE_ADMIN";
-    field public static final String BIND_DREAM_SERVICE = "android.permission.BIND_DREAM_SERVICE";
-    field public static final String BIND_INCALL_SERVICE = "android.permission.BIND_INCALL_SERVICE";
-    field public static final String BIND_INPUT_METHOD = "android.permission.BIND_INPUT_METHOD";
-    field public static final String BIND_MIDI_DEVICE_SERVICE = "android.permission.BIND_MIDI_DEVICE_SERVICE";
-    field public static final String BIND_NFC_SERVICE = "android.permission.BIND_NFC_SERVICE";
-    field public static final String BIND_NOTIFICATION_LISTENER_SERVICE = "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE";
-    field public static final String BIND_PRINT_SERVICE = "android.permission.BIND_PRINT_SERVICE";
-    field public static final String BIND_QUICK_ACCESS_WALLET_SERVICE = "android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE";
-    field public static final String BIND_QUICK_SETTINGS_TILE = "android.permission.BIND_QUICK_SETTINGS_TILE";
-    field public static final String BIND_REMOTEVIEWS = "android.permission.BIND_REMOTEVIEWS";
-    field public static final String BIND_SCREENING_SERVICE = "android.permission.BIND_SCREENING_SERVICE";
-    field public static final String BIND_TELECOM_CONNECTION_SERVICE = "android.permission.BIND_TELECOM_CONNECTION_SERVICE";
-    field public static final String BIND_TEXT_SERVICE = "android.permission.BIND_TEXT_SERVICE";
-    field public static final String BIND_TV_INPUT = "android.permission.BIND_TV_INPUT";
-    field public static final String BIND_VISUAL_VOICEMAIL_SERVICE = "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE";
-    field public static final String BIND_VOICE_INTERACTION = "android.permission.BIND_VOICE_INTERACTION";
-    field public static final String BIND_VPN_SERVICE = "android.permission.BIND_VPN_SERVICE";
-    field public static final String BIND_VR_LISTENER_SERVICE = "android.permission.BIND_VR_LISTENER_SERVICE";
-    field public static final String BIND_WALLPAPER = "android.permission.BIND_WALLPAPER";
-    field public static final String BLUETOOTH = "android.permission.BLUETOOTH";
-    field public static final String BLUETOOTH_ADMIN = "android.permission.BLUETOOTH_ADMIN";
-    field public static final String BLUETOOTH_PRIVILEGED = "android.permission.BLUETOOTH_PRIVILEGED";
-    field public static final String BODY_SENSORS = "android.permission.BODY_SENSORS";
-    field public static final String BROADCAST_PACKAGE_REMOVED = "android.permission.BROADCAST_PACKAGE_REMOVED";
-    field public static final String BROADCAST_SMS = "android.permission.BROADCAST_SMS";
-    field public static final String BROADCAST_STICKY = "android.permission.BROADCAST_STICKY";
-    field public static final String BROADCAST_WAP_PUSH = "android.permission.BROADCAST_WAP_PUSH";
-    field public static final String CALL_COMPANION_APP = "android.permission.CALL_COMPANION_APP";
-    field public static final String CALL_PHONE = "android.permission.CALL_PHONE";
-    field public static final String CALL_PRIVILEGED = "android.permission.CALL_PRIVILEGED";
-    field public static final String CAMERA = "android.permission.CAMERA";
-    field public static final String CAPTURE_AUDIO_OUTPUT = "android.permission.CAPTURE_AUDIO_OUTPUT";
-    field public static final String CHANGE_COMPONENT_ENABLED_STATE = "android.permission.CHANGE_COMPONENT_ENABLED_STATE";
-    field public static final String CHANGE_CONFIGURATION = "android.permission.CHANGE_CONFIGURATION";
-    field public static final String CHANGE_NETWORK_STATE = "android.permission.CHANGE_NETWORK_STATE";
-    field public static final String CHANGE_WIFI_MULTICAST_STATE = "android.permission.CHANGE_WIFI_MULTICAST_STATE";
-    field public static final String CHANGE_WIFI_STATE = "android.permission.CHANGE_WIFI_STATE";
-    field public static final String CLEAR_APP_CACHE = "android.permission.CLEAR_APP_CACHE";
-    field public static final String CONTROL_LOCATION_UPDATES = "android.permission.CONTROL_LOCATION_UPDATES";
-    field public static final String DELETE_CACHE_FILES = "android.permission.DELETE_CACHE_FILES";
-    field public static final String DELETE_PACKAGES = "android.permission.DELETE_PACKAGES";
-    field public static final String DIAGNOSTIC = "android.permission.DIAGNOSTIC";
-    field public static final String DISABLE_KEYGUARD = "android.permission.DISABLE_KEYGUARD";
-    field public static final String DUMP = "android.permission.DUMP";
-    field public static final String EXPAND_STATUS_BAR = "android.permission.EXPAND_STATUS_BAR";
-    field public static final String FACTORY_TEST = "android.permission.FACTORY_TEST";
-    field public static final String FOREGROUND_SERVICE = "android.permission.FOREGROUND_SERVICE";
-    field public static final String GET_ACCOUNTS = "android.permission.GET_ACCOUNTS";
-    field public static final String GET_ACCOUNTS_PRIVILEGED = "android.permission.GET_ACCOUNTS_PRIVILEGED";
-    field public static final String GET_PACKAGE_SIZE = "android.permission.GET_PACKAGE_SIZE";
-    field @Deprecated public static final String GET_TASKS = "android.permission.GET_TASKS";
-    field public static final String GLOBAL_SEARCH = "android.permission.GLOBAL_SEARCH";
-    field public static final String INSTALL_LOCATION_PROVIDER = "android.permission.INSTALL_LOCATION_PROVIDER";
-    field public static final String INSTALL_PACKAGES = "android.permission.INSTALL_PACKAGES";
-    field public static final String INSTALL_SHORTCUT = "com.android.launcher.permission.INSTALL_SHORTCUT";
-    field public static final String INSTANT_APP_FOREGROUND_SERVICE = "android.permission.INSTANT_APP_FOREGROUND_SERVICE";
-    field public static final String INTERACT_ACROSS_PROFILES = "android.permission.INTERACT_ACROSS_PROFILES";
-    field public static final String INTERNET = "android.permission.INTERNET";
-    field public static final String KILL_BACKGROUND_PROCESSES = "android.permission.KILL_BACKGROUND_PROCESSES";
-    field public static final String LOADER_USAGE_STATS = "android.permission.LOADER_USAGE_STATS";
-    field public static final String LOCATION_HARDWARE = "android.permission.LOCATION_HARDWARE";
-    field public static final String MANAGE_DOCUMENTS = "android.permission.MANAGE_DOCUMENTS";
-    field public static final String MANAGE_EXTERNAL_STORAGE = "android.permission.MANAGE_EXTERNAL_STORAGE";
-    field public static final String MANAGE_OWN_CALLS = "android.permission.MANAGE_OWN_CALLS";
-    field public static final String MASTER_CLEAR = "android.permission.MASTER_CLEAR";
-    field public static final String MEDIA_CONTENT_CONTROL = "android.permission.MEDIA_CONTENT_CONTROL";
-    field public static final String MODIFY_AUDIO_SETTINGS = "android.permission.MODIFY_AUDIO_SETTINGS";
-    field public static final String MODIFY_PHONE_STATE = "android.permission.MODIFY_PHONE_STATE";
-    field public static final String MOUNT_FORMAT_FILESYSTEMS = "android.permission.MOUNT_FORMAT_FILESYSTEMS";
-    field public static final String MOUNT_UNMOUNT_FILESYSTEMS = "android.permission.MOUNT_UNMOUNT_FILESYSTEMS";
-    field public static final String NFC = "android.permission.NFC";
-    field public static final String NFC_PREFERRED_PAYMENT_INFO = "android.permission.NFC_PREFERRED_PAYMENT_INFO";
-    field public static final String NFC_TRANSACTION_EVENT = "android.permission.NFC_TRANSACTION_EVENT";
-    field public static final String PACKAGE_USAGE_STATS = "android.permission.PACKAGE_USAGE_STATS";
-    field @Deprecated public static final String PERSISTENT_ACTIVITY = "android.permission.PERSISTENT_ACTIVITY";
-    field @Deprecated public static final String PROCESS_OUTGOING_CALLS = "android.permission.PROCESS_OUTGOING_CALLS";
-    field public static final String QUERY_ALL_PACKAGES = "android.permission.QUERY_ALL_PACKAGES";
-    field public static final String READ_CALENDAR = "android.permission.READ_CALENDAR";
-    field public static final String READ_CALL_LOG = "android.permission.READ_CALL_LOG";
-    field public static final String READ_CONTACTS = "android.permission.READ_CONTACTS";
-    field public static final String READ_EXTERNAL_STORAGE = "android.permission.READ_EXTERNAL_STORAGE";
-    field @Deprecated public static final String READ_INPUT_STATE = "android.permission.READ_INPUT_STATE";
-    field public static final String READ_LOGS = "android.permission.READ_LOGS";
-    field public static final String READ_PHONE_NUMBERS = "android.permission.READ_PHONE_NUMBERS";
-    field public static final String READ_PHONE_STATE = "android.permission.READ_PHONE_STATE";
-    field public static final String READ_PRECISE_PHONE_STATE = "android.permission.READ_PRECISE_PHONE_STATE";
-    field public static final String READ_SMS = "android.permission.READ_SMS";
-    field public static final String READ_SYNC_SETTINGS = "android.permission.READ_SYNC_SETTINGS";
-    field public static final String READ_SYNC_STATS = "android.permission.READ_SYNC_STATS";
-    field public static final String READ_VOICEMAIL = "com.android.voicemail.permission.READ_VOICEMAIL";
-    field public static final String REBOOT = "android.permission.REBOOT";
-    field public static final String RECEIVE_BOOT_COMPLETED = "android.permission.RECEIVE_BOOT_COMPLETED";
-    field public static final String RECEIVE_MMS = "android.permission.RECEIVE_MMS";
-    field public static final String RECEIVE_SMS = "android.permission.RECEIVE_SMS";
-    field public static final String RECEIVE_WAP_PUSH = "android.permission.RECEIVE_WAP_PUSH";
-    field public static final String RECORD_AUDIO = "android.permission.RECORD_AUDIO";
-    field public static final String REORDER_TASKS = "android.permission.REORDER_TASKS";
-    field public static final String REQUEST_COMPANION_RUN_IN_BACKGROUND = "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND";
-    field public static final String REQUEST_COMPANION_USE_DATA_IN_BACKGROUND = "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND";
-    field public static final String REQUEST_DELETE_PACKAGES = "android.permission.REQUEST_DELETE_PACKAGES";
-    field public static final String REQUEST_IGNORE_BATTERY_OPTIMIZATIONS = "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS";
-    field public static final String REQUEST_INSTALL_PACKAGES = "android.permission.REQUEST_INSTALL_PACKAGES";
-    field public static final String REQUEST_PASSWORD_COMPLEXITY = "android.permission.REQUEST_PASSWORD_COMPLEXITY";
-    field @Deprecated public static final String RESTART_PACKAGES = "android.permission.RESTART_PACKAGES";
-    field public static final String SEND_RESPOND_VIA_MESSAGE = "android.permission.SEND_RESPOND_VIA_MESSAGE";
-    field public static final String SEND_SMS = "android.permission.SEND_SMS";
-    field public static final String SET_ALARM = "com.android.alarm.permission.SET_ALARM";
-    field public static final String SET_ALWAYS_FINISH = "android.permission.SET_ALWAYS_FINISH";
-    field public static final String SET_ANIMATION_SCALE = "android.permission.SET_ANIMATION_SCALE";
-    field public static final String SET_DEBUG_APP = "android.permission.SET_DEBUG_APP";
-    field @Deprecated public static final String SET_PREFERRED_APPLICATIONS = "android.permission.SET_PREFERRED_APPLICATIONS";
-    field public static final String SET_PROCESS_LIMIT = "android.permission.SET_PROCESS_LIMIT";
-    field public static final String SET_TIME = "android.permission.SET_TIME";
-    field public static final String SET_TIME_ZONE = "android.permission.SET_TIME_ZONE";
-    field public static final String SET_WALLPAPER = "android.permission.SET_WALLPAPER";
-    field public static final String SET_WALLPAPER_HINTS = "android.permission.SET_WALLPAPER_HINTS";
-    field public static final String SIGNAL_PERSISTENT_PROCESSES = "android.permission.SIGNAL_PERSISTENT_PROCESSES";
-    field public static final String SMS_FINANCIAL_TRANSACTIONS = "android.permission.SMS_FINANCIAL_TRANSACTIONS";
-    field public static final String START_VIEW_PERMISSION_USAGE = "android.permission.START_VIEW_PERMISSION_USAGE";
-    field public static final String STATUS_BAR = "android.permission.STATUS_BAR";
-    field public static final String SYSTEM_ALERT_WINDOW = "android.permission.SYSTEM_ALERT_WINDOW";
-    field public static final String TRANSMIT_IR = "android.permission.TRANSMIT_IR";
-    field public static final String UNINSTALL_SHORTCUT = "com.android.launcher.permission.UNINSTALL_SHORTCUT";
-    field public static final String UPDATE_DEVICE_STATS = "android.permission.UPDATE_DEVICE_STATS";
-    field public static final String USE_BIOMETRIC = "android.permission.USE_BIOMETRIC";
-    field @Deprecated public static final String USE_FINGERPRINT = "android.permission.USE_FINGERPRINT";
-    field public static final String USE_FULL_SCREEN_INTENT = "android.permission.USE_FULL_SCREEN_INTENT";
-    field public static final String USE_SIP = "android.permission.USE_SIP";
-    field public static final String VIBRATE = "android.permission.VIBRATE";
-    field public static final String WAKE_LOCK = "android.permission.WAKE_LOCK";
-    field public static final String WRITE_APN_SETTINGS = "android.permission.WRITE_APN_SETTINGS";
-    field public static final String WRITE_CALENDAR = "android.permission.WRITE_CALENDAR";
-    field public static final String WRITE_CALL_LOG = "android.permission.WRITE_CALL_LOG";
-    field public static final String WRITE_CONTACTS = "android.permission.WRITE_CONTACTS";
-    field public static final String WRITE_EXTERNAL_STORAGE = "android.permission.WRITE_EXTERNAL_STORAGE";
-    field public static final String WRITE_GSERVICES = "android.permission.WRITE_GSERVICES";
-    field public static final String WRITE_SECURE_SETTINGS = "android.permission.WRITE_SECURE_SETTINGS";
-    field public static final String WRITE_SETTINGS = "android.permission.WRITE_SETTINGS";
-    field public static final String WRITE_SYNC_SETTINGS = "android.permission.WRITE_SYNC_SETTINGS";
-    field public static final String WRITE_VOICEMAIL = "com.android.voicemail.permission.WRITE_VOICEMAIL";
-  }
-
-  public static final class Manifest.permission_group {
-    ctor public Manifest.permission_group();
-    field public static final String ACTIVITY_RECOGNITION = "android.permission-group.ACTIVITY_RECOGNITION";
-    field public static final String CALENDAR = "android.permission-group.CALENDAR";
-    field public static final String CALL_LOG = "android.permission-group.CALL_LOG";
-    field public static final String CAMERA = "android.permission-group.CAMERA";
-    field public static final String CONTACTS = "android.permission-group.CONTACTS";
-    field public static final String LOCATION = "android.permission-group.LOCATION";
-    field public static final String MICROPHONE = "android.permission-group.MICROPHONE";
-    field public static final String PHONE = "android.permission-group.PHONE";
-    field public static final String SENSORS = "android.permission-group.SENSORS";
-    field public static final String SMS = "android.permission-group.SMS";
-    field public static final String STORAGE = "android.permission-group.STORAGE";
-  }
-
-  public final class R {
-    ctor public R();
-  }
-
-  public static final class R.anim {
-    ctor public R.anim();
-    field public static final int accelerate_decelerate_interpolator = 17432580; // 0x10a0004
-    field public static final int accelerate_interpolator = 17432581; // 0x10a0005
-    field public static final int anticipate_interpolator = 17432583; // 0x10a0007
-    field public static final int anticipate_overshoot_interpolator = 17432585; // 0x10a0009
-    field public static final int bounce_interpolator = 17432586; // 0x10a000a
-    field public static final int cycle_interpolator = 17432588; // 0x10a000c
-    field public static final int decelerate_interpolator = 17432582; // 0x10a0006
-    field public static final int fade_in = 17432576; // 0x10a0000
-    field public static final int fade_out = 17432577; // 0x10a0001
-    field public static final int linear_interpolator = 17432587; // 0x10a000b
-    field public static final int overshoot_interpolator = 17432584; // 0x10a0008
-    field public static final int slide_in_left = 17432578; // 0x10a0002
-    field public static final int slide_out_right = 17432579; // 0x10a0003
-  }
-
-  public static final class R.animator {
-    ctor public R.animator();
-    field public static final int fade_in = 17498112; // 0x10b0000
-    field public static final int fade_out = 17498113; // 0x10b0001
-  }
-
-  public static final class R.array {
-    ctor public R.array();
-    field public static final int emailAddressTypes = 17235968; // 0x1070000
-    field public static final int imProtocols = 17235969; // 0x1070001
-    field public static final int organizationTypes = 17235970; // 0x1070002
-    field public static final int phoneTypes = 17235971; // 0x1070003
-    field public static final int postalAddressTypes = 17235972; // 0x1070004
-  }
-
-  public static final class R.attr {
-    ctor public R.attr();
-    field public static final int absListViewStyle = 16842858; // 0x101006a
-    field public static final int accessibilityEventTypes = 16843648; // 0x1010380
-    field public static final int accessibilityFeedbackType = 16843650; // 0x1010382
-    field public static final int accessibilityFlags = 16843652; // 0x1010384
-    field public static final int accessibilityHeading = 16844160; // 0x1010580
-    field public static final int accessibilityLiveRegion = 16843758; // 0x10103ee
-    field public static final int accessibilityPaneTitle = 16844156; // 0x101057c
-    field public static final int accessibilityTraversalAfter = 16843986; // 0x10104d2
-    field public static final int accessibilityTraversalBefore = 16843985; // 0x10104d1
-    field public static final int accountPreferences = 16843423; // 0x101029f
-    field public static final int accountType = 16843407; // 0x101028f
-    field public static final int action = 16842797; // 0x101002d
-    field public static final int actionBarDivider = 16843675; // 0x101039b
-    field public static final int actionBarItemBackground = 16843676; // 0x101039c
-    field public static final int actionBarPopupTheme = 16843917; // 0x101048d
-    field public static final int actionBarSize = 16843499; // 0x10102eb
-    field public static final int actionBarSplitStyle = 16843656; // 0x1010388
-    field public static final int actionBarStyle = 16843470; // 0x10102ce
-    field public static final int actionBarTabBarStyle = 16843508; // 0x10102f4
-    field public static final int actionBarTabStyle = 16843507; // 0x10102f3
-    field public static final int actionBarTabTextStyle = 16843509; // 0x10102f5
-    field public static final int actionBarTheme = 16843825; // 0x1010431
-    field public static final int actionBarWidgetTheme = 16843671; // 0x1010397
-    field public static final int actionButtonStyle = 16843480; // 0x10102d8
-    field public static final int actionDropDownStyle = 16843479; // 0x10102d7
-    field public static final int actionLayout = 16843515; // 0x10102fb
-    field public static final int actionMenuTextAppearance = 16843616; // 0x1010360
-    field public static final int actionMenuTextColor = 16843617; // 0x1010361
-    field public static final int actionModeBackground = 16843483; // 0x10102db
-    field public static final int actionModeCloseButtonStyle = 16843511; // 0x10102f7
-    field public static final int actionModeCloseDrawable = 16843484; // 0x10102dc
-    field public static final int actionModeCopyDrawable = 16843538; // 0x1010312
-    field public static final int actionModeCutDrawable = 16843537; // 0x1010311
-    field public static final int actionModeFindDrawable = 16843898; // 0x101047a
-    field public static final int actionModePasteDrawable = 16843539; // 0x1010313
-    field public static final int actionModeSelectAllDrawable = 16843646; // 0x101037e
-    field public static final int actionModeShareDrawable = 16843897; // 0x1010479
-    field public static final int actionModeSplitBackground = 16843677; // 0x101039d
-    field public static final int actionModeStyle = 16843668; // 0x1010394
-    field public static final int actionModeWebSearchDrawable = 16843899; // 0x101047b
-    field public static final int actionOverflowButtonStyle = 16843510; // 0x10102f6
-    field public static final int actionOverflowMenuStyle = 16843844; // 0x1010444
-    field public static final int actionProviderClass = 16843657; // 0x1010389
-    field public static final int actionViewClass = 16843516; // 0x10102fc
-    field public static final int activatedBackgroundIndicator = 16843517; // 0x10102fd
-    field public static final int activityCloseEnterAnimation = 16842938; // 0x10100ba
-    field public static final int activityCloseExitAnimation = 16842939; // 0x10100bb
-    field public static final int activityOpenEnterAnimation = 16842936; // 0x10100b8
-    field public static final int activityOpenExitAnimation = 16842937; // 0x10100b9
-    field public static final int addPrintersActivity = 16843750; // 0x10103e6
-    field public static final int addStatesFromChildren = 16842992; // 0x10100f0
-    field public static final int adjustViewBounds = 16843038; // 0x101011e
-    field public static final int advancedPrintOptionsActivity = 16843761; // 0x10103f1
-    field public static final int alertDialogIcon = 16843605; // 0x1010355
-    field public static final int alertDialogStyle = 16842845; // 0x101005d
-    field public static final int alertDialogTheme = 16843529; // 0x1010309
-    field public static final int alignmentMode = 16843642; // 0x101037a
-    field public static final int allContactsName = 16843468; // 0x10102cc
-    field public static final int allowAudioPlaybackCapture = 16844289; // 0x1010601
-    field public static final int allowBackup = 16843392; // 0x1010280
-    field public static final int allowClearUserData = 16842757; // 0x1010005
-    field public static final int allowEmbedded = 16843765; // 0x10103f5
-    field public static final int allowNativeHeapPointerTagging = 16844306; // 0x1010612
-    field public static final int allowParallelSyncs = 16843570; // 0x1010332
-    field public static final int allowSingleTap = 16843353; // 0x1010259
-    field public static final int allowTaskReparenting = 16843268; // 0x1010204
-    field public static final int allowUndo = 16843999; // 0x10104df
-    field public static final int alpha = 16843551; // 0x101031f
-    field public static final int alphabeticModifiers = 16844110; // 0x101054e
-    field public static final int alphabeticShortcut = 16843235; // 0x10101e3
-    field public static final int alwaysDrawnWithCache = 16842991; // 0x10100ef
-    field public static final int alwaysRetainTaskState = 16843267; // 0x1010203
-    field @Deprecated public static final int amPmBackgroundColor = 16843941; // 0x10104a5
-    field @Deprecated public static final int amPmTextColor = 16843940; // 0x10104a4
-    field public static final int ambientShadowAlpha = 16843966; // 0x10104be
-    field public static final int angle = 16843168; // 0x10101a0
-    field public static final int animateFirstView = 16843477; // 0x10102d5
-    field public static final int animateLayoutChanges = 16843506; // 0x10102f2
-    field public static final int animateOnClick = 16843356; // 0x101025c
-    field public static final int animatedImageDrawable = 16844298; // 0x101060a
-    field public static final int animation = 16843213; // 0x10101cd
-    field public static final int animationCache = 16842989; // 0x10100ed
-    field public static final int animationDuration = 16843026; // 0x1010112
-    field public static final int animationOrder = 16843214; // 0x10101ce
-    field @Deprecated public static final int animationResolution = 16843546; // 0x101031a
-    field public static final int antialias = 16843034; // 0x101011a
-    field @Deprecated public static final int anyDensity = 16843372; // 0x101026c
-    field public static final int apduServiceBanner = 16843757; // 0x10103ed
-    field public static final int apiKey = 16843281; // 0x1010211
-    field public static final int appCategory = 16844101; // 0x1010545
-    field public static final int appComponentFactory = 16844154; // 0x101057a
-    field public static final int author = 16843444; // 0x10102b4
-    field public static final int authorities = 16842776; // 0x1010018
-    field public static final int autoAdvanceViewId = 16843535; // 0x101030f
-    field public static final int autoCompleteTextViewStyle = 16842859; // 0x101006b
-    field public static final int autoLink = 16842928; // 0x10100b0
-    field public static final int autoMirrored = 16843754; // 0x10103ea
-    field public static final int autoRemoveFromRecents = 16843847; // 0x1010447
-    field public static final int autoRevokePermissions = 16844307; // 0x1010613
-    field public static final int autoSizeMaxTextSize = 16844102; // 0x1010546
-    field public static final int autoSizeMinTextSize = 16844088; // 0x1010538
-    field public static final int autoSizePresetSizes = 16844087; // 0x1010537
-    field public static final int autoSizeStepGranularity = 16844086; // 0x1010536
-    field public static final int autoSizeTextType = 16844085; // 0x1010535
-    field public static final int autoStart = 16843445; // 0x10102b5
-    field @Deprecated public static final int autoText = 16843114; // 0x101016a
-    field public static final int autoUrlDetect = 16843404; // 0x101028c
-    field public static final int autoVerify = 16844014; // 0x10104ee
-    field public static final int autofillHints = 16844118; // 0x1010556
-    field public static final int autofilledHighlight = 16844136; // 0x1010568
-    field public static final int background = 16842964; // 0x10100d4
-    field public static final int backgroundDimAmount = 16842802; // 0x1010032
-    field public static final int backgroundDimEnabled = 16843295; // 0x101021f
-    field public static final int backgroundSplit = 16843659; // 0x101038b
-    field public static final int backgroundStacked = 16843658; // 0x101038a
-    field public static final int backgroundTint = 16843883; // 0x101046b
-    field public static final int backgroundTintMode = 16843884; // 0x101046c
-    field public static final int backupAgent = 16843391; // 0x101027f
-    field public static final int backupInForeground = 16844058; // 0x101051a
-    field public static final int banner = 16843762; // 0x10103f2
-    field public static final int baseline = 16843548; // 0x101031c
-    field public static final int baselineAlignBottom = 16843042; // 0x1010122
-    field public static final int baselineAligned = 16843046; // 0x1010126
-    field public static final int baselineAlignedChildIndex = 16843047; // 0x1010127
-    field public static final int bitmap = 16844054; // 0x1010516
-    field public static final int borderlessButtonStyle = 16843563; // 0x101032b
-    field public static final int bottom = 16843184; // 0x10101b0
-    field public static final int bottomBright = 16842957; // 0x10100cd
-    field public static final int bottomDark = 16842953; // 0x10100c9
-    field public static final int bottomLeftRadius = 16843179; // 0x10101ab
-    field public static final int bottomMedium = 16842958; // 0x10100ce
-    field public static final int bottomOffset = 16843351; // 0x1010257
-    field public static final int bottomRightRadius = 16843180; // 0x10101ac
-    field public static final int breadCrumbShortTitle = 16843524; // 0x1010304
-    field public static final int breadCrumbTitle = 16843523; // 0x1010303
-    field public static final int breakStrategy = 16843997; // 0x10104dd
-    field public static final int bufferType = 16843086; // 0x101014e
-    field public static final int button = 16843015; // 0x1010107
-    field public static final int buttonBarButtonStyle = 16843567; // 0x101032f
-    field public static final int buttonBarNegativeButtonStyle = 16843915; // 0x101048b
-    field public static final int buttonBarNeutralButtonStyle = 16843914; // 0x101048a
-    field public static final int buttonBarPositiveButtonStyle = 16843913; // 0x1010489
-    field public static final int buttonBarStyle = 16843566; // 0x101032e
-    field public static final int buttonCornerRadius = 16844149; // 0x1010575
-    field public static final int buttonGravity = 16844030; // 0x10104fe
-    field public static final int buttonStyle = 16842824; // 0x1010048
-    field public static final int buttonStyleInset = 16842826; // 0x101004a
-    field public static final int buttonStyleSmall = 16842825; // 0x1010049
-    field public static final int buttonStyleToggle = 16842827; // 0x101004b
-    field public static final int buttonTint = 16843887; // 0x101046f
-    field public static final int buttonTintMode = 16843888; // 0x1010470
-    field public static final int cacheColorHint = 16843009; // 0x1010101
-    field public static final int calendarTextColor = 16843931; // 0x101049b
-    field public static final int calendarViewShown = 16843596; // 0x101034c
-    field public static final int calendarViewStyle = 16843613; // 0x101035d
-    field public static final int canControlMagnification = 16844039; // 0x1010507
-    field public static final int canPerformGestures = 16844045; // 0x101050d
-    field public static final int canRecord = 16844060; // 0x101051c
-    field @Deprecated public static final int canRequestEnhancedWebAccessibility = 16843736; // 0x10103d8
-    field public static final int canRequestFilterKeyEvents = 16843737; // 0x10103d9
-    field public static final int canRequestFingerprintGestures = 16844109; // 0x101054d
-    field public static final int canRequestTouchExplorationMode = 16843735; // 0x10103d7
-    field public static final int canRetrieveWindowContent = 16843653; // 0x1010385
-    field public static final int canTakeScreenshot = 16844303; // 0x101060f
-    field public static final int candidatesTextStyleSpans = 16843312; // 0x1010230
-    field public static final int cantSaveState = 16844142; // 0x101056e
-    field @Deprecated public static final int capitalize = 16843113; // 0x1010169
-    field public static final int category = 16843752; // 0x10103e8
-    field public static final int centerBright = 16842956; // 0x10100cc
-    field public static final int centerColor = 16843275; // 0x101020b
-    field public static final int centerDark = 16842952; // 0x10100c8
-    field public static final int centerMedium = 16842959; // 0x10100cf
-    field public static final int centerX = 16843170; // 0x10101a2
-    field public static final int centerY = 16843171; // 0x10101a3
-    field public static final int certDigest = 16844104; // 0x1010548
-    field public static final int checkBoxPreferenceStyle = 16842895; // 0x101008f
-    field public static final int checkMark = 16843016; // 0x1010108
-    field public static final int checkMarkTint = 16843943; // 0x10104a7
-    field public static final int checkMarkTintMode = 16843944; // 0x10104a8
-    field public static final int checkable = 16843237; // 0x10101e5
-    field public static final int checkableBehavior = 16843232; // 0x10101e0
-    field public static final int checkboxStyle = 16842860; // 0x101006c
-    field public static final int checked = 16843014; // 0x1010106
-    field public static final int checkedButton = 16843080; // 0x1010148
-    field public static final int checkedTextViewStyle = 16843720; // 0x10103c8
-    field public static final int childDivider = 16843025; // 0x1010111
-    field public static final int childIndicator = 16843020; // 0x101010c
-    field public static final int childIndicatorEnd = 16843732; // 0x10103d4
-    field public static final int childIndicatorLeft = 16843023; // 0x101010f
-    field public static final int childIndicatorRight = 16843024; // 0x1010110
-    field public static final int childIndicatorStart = 16843731; // 0x10103d3
-    field public static final int choiceMode = 16843051; // 0x101012b
-    field public static final int classLoader = 16844139; // 0x101056b
-    field public static final int clearTaskOnLaunch = 16842773; // 0x1010015
-    field public static final int clickable = 16842981; // 0x10100e5
-    field public static final int clipChildren = 16842986; // 0x10100ea
-    field public static final int clipOrientation = 16843274; // 0x101020a
-    field public static final int clipToPadding = 16842987; // 0x10100eb
-    field public static final int closeIcon = 16843905; // 0x1010481
-    field @Deprecated public static final int codes = 16843330; // 0x1010242
-    field public static final int collapseColumns = 16843083; // 0x101014b
-    field public static final int collapseContentDescription = 16843984; // 0x10104d0
-    field public static final int collapseIcon = 16844031; // 0x10104ff
-    field public static final int color = 16843173; // 0x10101a5
-    field public static final int colorAccent = 16843829; // 0x1010435
-    field public static final int colorActivatedHighlight = 16843664; // 0x1010390
-    field public static final int colorBackground = 16842801; // 0x1010031
-    field public static final int colorBackgroundCacheHint = 16843435; // 0x10102ab
-    field public static final int colorBackgroundFloating = 16844002; // 0x10104e2
-    field public static final int colorButtonNormal = 16843819; // 0x101042b
-    field public static final int colorControlActivated = 16843818; // 0x101042a
-    field public static final int colorControlHighlight = 16843820; // 0x101042c
-    field public static final int colorControlNormal = 16843817; // 0x1010429
-    field public static final int colorEdgeEffect = 16843982; // 0x10104ce
-    field public static final int colorError = 16844099; // 0x1010543
-    field public static final int colorFocusedHighlight = 16843663; // 0x101038f
-    field public static final int colorForeground = 16842800; // 0x1010030
-    field public static final int colorForegroundInverse = 16843270; // 0x1010206
-    field public static final int colorLongPressedHighlight = 16843662; // 0x101038e
-    field public static final int colorMode = 16844106; // 0x101054a
-    field public static final int colorMultiSelectHighlight = 16843665; // 0x1010391
-    field public static final int colorPressedHighlight = 16843661; // 0x101038d
-    field public static final int colorPrimary = 16843827; // 0x1010433
-    field public static final int colorPrimaryDark = 16843828; // 0x1010434
-    field public static final int colorSecondary = 16844080; // 0x1010530
-    field public static final int columnCount = 16843639; // 0x1010377
-    field public static final int columnDelay = 16843215; // 0x10101cf
-    field public static final int columnOrderPreserved = 16843640; // 0x1010378
-    field public static final int columnWidth = 16843031; // 0x1010117
-    field public static final int commitIcon = 16843909; // 0x1010485
-    field public static final int compatibleWidthLimitDp = 16843621; // 0x1010365
-    field public static final int completionHint = 16843122; // 0x1010172
-    field public static final int completionHintView = 16843123; // 0x1010173
-    field public static final int completionThreshold = 16843124; // 0x1010174
-    field public static final int configChanges = 16842783; // 0x101001f
-    field public static final int configure = 16843357; // 0x101025d
-    field public static final int constantSize = 16843158; // 0x1010196
-    field public static final int content = 16843355; // 0x101025b
-    field public static final int contentAgeHint = 16843961; // 0x10104b9
-    field public static final int contentAuthority = 16843408; // 0x1010290
-    field public static final int contentDescription = 16843379; // 0x1010273
-    field public static final int contentInsetEnd = 16843860; // 0x1010454
-    field public static final int contentInsetEndWithActions = 16844067; // 0x1010523
-    field public static final int contentInsetLeft = 16843861; // 0x1010455
-    field public static final int contentInsetRight = 16843862; // 0x1010456
-    field public static final int contentInsetStart = 16843859; // 0x1010453
-    field public static final int contentInsetStartWithNavigation = 16844066; // 0x1010522
-    field public static final int contextClickable = 16844007; // 0x10104e7
-    field public static final int contextDescription = 16844078; // 0x101052e
-    field public static final int contextPopupMenuStyle = 16844033; // 0x1010501
-    field public static final int contextUri = 16844077; // 0x101052d
-    field public static final int controlX1 = 16843772; // 0x10103fc
-    field public static final int controlX2 = 16843774; // 0x10103fe
-    field public static final int controlY1 = 16843773; // 0x10103fd
-    field public static final int controlY2 = 16843775; // 0x10103ff
-    field public static final int countDown = 16844059; // 0x101051b
-    field public static final int country = 16843962; // 0x10104ba
-    field public static final int cropToPadding = 16843043; // 0x1010123
-    field public static final int crossProfile = 16844302; // 0x101060e
-    field public static final int cursorVisible = 16843090; // 0x1010152
-    field public static final int customNavigationLayout = 16843474; // 0x10102d2
-    field public static final int customTokens = 16843579; // 0x101033b
-    field public static final int cycles = 16843220; // 0x10101d4
-    field public static final int dashGap = 16843175; // 0x10101a7
-    field public static final int dashWidth = 16843174; // 0x10101a6
-    field public static final int data = 16842798; // 0x101002e
-    field public static final int datePickerDialogTheme = 16843948; // 0x10104ac
-    field public static final int datePickerMode = 16843955; // 0x10104b3
-    field public static final int datePickerStyle = 16843612; // 0x101035c
-    field public static final int dateTextAppearance = 16843593; // 0x1010349
-    field @Deprecated public static final int dayOfWeekBackground = 16843924; // 0x1010494
-    field @Deprecated public static final int dayOfWeekTextAppearance = 16843925; // 0x1010495
-    field public static final int debuggable = 16842767; // 0x101000f
-    field public static final int defaultFocusHighlightEnabled = 16844130; // 0x1010562
-    field public static final int defaultHeight = 16844021; // 0x10104f5
-    field public static final int defaultToDeviceProtectedStorage = 16844036; // 0x1010504
-    field public static final int defaultValue = 16843245; // 0x10101ed
-    field public static final int defaultWidth = 16844020; // 0x10104f4
-    field public static final int delay = 16843212; // 0x10101cc
-    field public static final int dependency = 16843244; // 0x10101ec
-    field public static final int descendantFocusability = 16842993; // 0x10100f1
-    field public static final int description = 16842784; // 0x1010020
-    field public static final int detachWallpaper = 16843430; // 0x10102a6
-    field public static final int detailColumn = 16843427; // 0x10102a3
-    field public static final int detailSocialSummary = 16843428; // 0x10102a4
-    field public static final int detailsElementBackground = 16843598; // 0x101034e
-    field public static final int dial = 16843010; // 0x1010102
-    field public static final int dialogCornerRadius = 16844145; // 0x1010571
-    field public static final int dialogIcon = 16843252; // 0x10101f4
-    field public static final int dialogLayout = 16843255; // 0x10101f7
-    field public static final int dialogMessage = 16843251; // 0x10101f3
-    field public static final int dialogPreferenceStyle = 16842897; // 0x1010091
-    field public static final int dialogPreferredPadding = 16843987; // 0x10104d3
-    field public static final int dialogTheme = 16843528; // 0x1010308
-    field public static final int dialogTitle = 16843250; // 0x10101f2
-    field public static final int digits = 16843110; // 0x1010166
-    field public static final int directBootAware = 16844037; // 0x1010505
-    field public static final int direction = 16843217; // 0x10101d1
-    field @Deprecated public static final int directionDescriptions = 16843681; // 0x10103a1
-    field public static final int directionPriority = 16843218; // 0x10101d2
-    field public static final int disableDependentsState = 16843249; // 0x10101f1
-    field public static final int disabledAlpha = 16842803; // 0x1010033
-    field public static final int displayOptions = 16843472; // 0x10102d0
-    field public static final int dither = 16843036; // 0x101011c
-    field public static final int divider = 16843049; // 0x1010129
-    field public static final int dividerHeight = 16843050; // 0x101012a
-    field public static final int dividerHorizontal = 16843564; // 0x101032c
-    field public static final int dividerPadding = 16843562; // 0x101032a
-    field public static final int dividerVertical = 16843530; // 0x101030a
-    field public static final int documentLaunchMode = 16843845; // 0x1010445
-    field public static final int drawSelectorOnTop = 16843004; // 0x10100fc
-    field public static final int drawable = 16843161; // 0x1010199
-    field public static final int drawableBottom = 16843118; // 0x101016e
-    field public static final int drawableEnd = 16843667; // 0x1010393
-    field public static final int drawableLeft = 16843119; // 0x101016f
-    field public static final int drawablePadding = 16843121; // 0x1010171
-    field public static final int drawableRight = 16843120; // 0x1010170
-    field public static final int drawableStart = 16843666; // 0x1010392
-    field public static final int drawableTint = 16843990; // 0x10104d6
-    field public static final int drawableTintMode = 16843991; // 0x10104d7
-    field public static final int drawableTop = 16843117; // 0x101016d
-    field public static final int drawingCacheQuality = 16842984; // 0x10100e8
-    field public static final int dropDownAnchor = 16843363; // 0x1010263
-    field public static final int dropDownHeight = 16843395; // 0x1010283
-    field public static final int dropDownHintAppearance = 16842888; // 0x1010088
-    field public static final int dropDownHorizontalOffset = 16843436; // 0x10102ac
-    field public static final int dropDownItemStyle = 16842886; // 0x1010086
-    field public static final int dropDownListViewStyle = 16842861; // 0x101006d
-    field public static final int dropDownSelector = 16843125; // 0x1010175
-    field public static final int dropDownSpinnerStyle = 16843478; // 0x10102d6
-    field public static final int dropDownVerticalOffset = 16843437; // 0x10102ad
-    field public static final int dropDownWidth = 16843362; // 0x1010262
-    field public static final int duplicateParentState = 16842985; // 0x10100e9
-    field public static final int duration = 16843160; // 0x1010198
-    field public static final int editTextBackground = 16843602; // 0x1010352
-    field public static final int editTextColor = 16843601; // 0x1010351
-    field public static final int editTextPreferenceStyle = 16842898; // 0x1010092
-    field public static final int editTextStyle = 16842862; // 0x101006e
-    field @Deprecated public static final int editable = 16843115; // 0x101016b
-    field public static final int editorExtras = 16843300; // 0x1010224
-    field public static final int elegantTextHeight = 16843869; // 0x101045d
-    field public static final int elevation = 16843840; // 0x1010440
-    field public static final int ellipsize = 16842923; // 0x10100ab
-    field public static final int ems = 16843096; // 0x1010158
-    field public static final int enableVrMode = 16844069; // 0x1010525
-    field public static final int enabled = 16842766; // 0x101000e
-    field public static final int end = 16843996; // 0x10104dc
-    field public static final int endColor = 16843166; // 0x101019e
-    field public static final int endX = 16844050; // 0x1010512
-    field public static final int endY = 16844051; // 0x1010513
-    field @Deprecated public static final int endYear = 16843133; // 0x101017d
-    field public static final int enforceNavigationBarContrast = 16844293; // 0x1010605
-    field public static final int enforceStatusBarContrast = 16844292; // 0x1010604
-    field public static final int enterFadeDuration = 16843532; // 0x101030c
-    field public static final int entries = 16842930; // 0x10100b2
-    field public static final int entryValues = 16843256; // 0x10101f8
-    field public static final int eventsInterceptionEnabled = 16843389; // 0x101027d
-    field public static final int excludeClass = 16843842; // 0x1010442
-    field public static final int excludeFromRecents = 16842775; // 0x1010017
-    field public static final int excludeId = 16843841; // 0x1010441
-    field public static final int excludeName = 16843854; // 0x101044e
-    field public static final int exitFadeDuration = 16843533; // 0x101030d
-    field public static final int expandableListPreferredChildIndicatorLeft = 16842834; // 0x1010052
-    field public static final int expandableListPreferredChildIndicatorRight = 16842835; // 0x1010053
-    field public static final int expandableListPreferredChildPaddingLeft = 16842831; // 0x101004f
-    field public static final int expandableListPreferredItemIndicatorLeft = 16842832; // 0x1010050
-    field public static final int expandableListPreferredItemIndicatorRight = 16842833; // 0x1010051
-    field public static final int expandableListPreferredItemPaddingLeft = 16842830; // 0x101004e
-    field public static final int expandableListViewStyle = 16842863; // 0x101006f
-    field public static final int expandableListViewWhiteStyle = 16843446; // 0x10102b6
-    field public static final int exported = 16842768; // 0x1010010
-    field public static final int externalService = 16844046; // 0x101050e
-    field public static final int extraTension = 16843371; // 0x101026b
-    field public static final int extractNativeLibs = 16844010; // 0x10104ea
-    field public static final int factor = 16843219; // 0x10101d3
-    field public static final int fadeDuration = 16843384; // 0x1010278
-    field public static final int fadeEnabled = 16843390; // 0x101027e
-    field public static final int fadeOffset = 16843383; // 0x1010277
-    field public static final int fadeScrollbars = 16843434; // 0x10102aa
-    field public static final int fadingEdge = 16842975; // 0x10100df
-    field public static final int fadingEdgeLength = 16842976; // 0x10100e0
-    field public static final int fadingMode = 16843745; // 0x10103e1
-    field public static final int fallbackLineSpacing = 16844155; // 0x101057b
-    field public static final int fastScrollAlwaysVisible = 16843573; // 0x1010335
-    field public static final int fastScrollEnabled = 16843302; // 0x1010226
-    field public static final int fastScrollOverlayPosition = 16843578; // 0x101033a
-    field public static final int fastScrollPreviewBackgroundLeft = 16843575; // 0x1010337
-    field public static final int fastScrollPreviewBackgroundRight = 16843576; // 0x1010338
-    field public static final int fastScrollStyle = 16843767; // 0x10103f7
-    field public static final int fastScrollTextColor = 16843609; // 0x1010359
-    field public static final int fastScrollThumbDrawable = 16843574; // 0x1010336
-    field public static final int fastScrollTrackDrawable = 16843577; // 0x1010339
-    field public static final int fillAfter = 16843197; // 0x10101bd
-    field public static final int fillAlpha = 16843980; // 0x10104cc
-    field public static final int fillBefore = 16843196; // 0x10101bc
-    field public static final int fillColor = 16843780; // 0x1010404
-    field public static final int fillEnabled = 16843343; // 0x101024f
-    field public static final int fillType = 16844062; // 0x101051e
-    field public static final int fillViewport = 16843130; // 0x101017a
-    field public static final int filter = 16843035; // 0x101011b
-    field public static final int filterTouchesWhenObscured = 16843460; // 0x10102c4
-    field public static final int fingerprintAuthDrawable = 16844008; // 0x10104e8
-    field public static final int finishOnCloseSystemDialogs = 16843431; // 0x10102a7
-    field public static final int finishOnTaskLaunch = 16842772; // 0x1010014
-    field public static final int firstBaselineToTopHeight = 16844157; // 0x101057d
-    field public static final int firstDayOfWeek = 16843581; // 0x101033d
-    field public static final int fitsSystemWindows = 16842973; // 0x10100dd
-    field public static final int flipInterval = 16843129; // 0x1010179
-    field public static final int focusable = 16842970; // 0x10100da
-    field public static final int focusableInTouchMode = 16842971; // 0x10100db
-    field public static final int focusedByDefault = 16844100; // 0x1010544
-    field @Deprecated public static final int focusedMonthDateColor = 16843587; // 0x1010343
-    field public static final int font = 16844082; // 0x1010532
-    field public static final int fontFamily = 16843692; // 0x10103ac
-    field public static final int fontFeatureSettings = 16843959; // 0x10104b7
-    field public static final int fontProviderAuthority = 16844112; // 0x1010550
-    field public static final int fontProviderCerts = 16844125; // 0x101055d
-    field public static final int fontProviderPackage = 16844119; // 0x1010557
-    field public static final int fontProviderQuery = 16844113; // 0x1010551
-    field public static final int fontStyle = 16844095; // 0x101053f
-    field public static final int fontVariationSettings = 16844144; // 0x1010570
-    field public static final int fontWeight = 16844083; // 0x1010533
-    field public static final int footerDividersEnabled = 16843311; // 0x101022f
-    field public static final int forceDarkAllowed = 16844172; // 0x101058c
-    field public static final int forceHasOverlappingRendering = 16844065; // 0x1010521
-    field public static final int forceQueryable = 16844296; // 0x1010608
-    field public static final int forceUriPermissions = 16844191; // 0x101059f
-    field public static final int foreground = 16843017; // 0x1010109
-    field public static final int foregroundGravity = 16843264; // 0x1010200
-    field public static final int foregroundServiceType = 16844185; // 0x1010599
-    field public static final int foregroundTint = 16843885; // 0x101046d
-    field public static final int foregroundTintMode = 16843886; // 0x101046e
-    field public static final int format = 16843013; // 0x1010105
-    field public static final int format12Hour = 16843722; // 0x10103ca
-    field public static final int format24Hour = 16843723; // 0x10103cb
-    field public static final int fraction = 16843992; // 0x10104d8
-    field public static final int fragment = 16843491; // 0x10102e3
-    field public static final int fragmentAllowEnterTransitionOverlap = 16843976; // 0x10104c8
-    field public static final int fragmentAllowReturnTransitionOverlap = 16843977; // 0x10104c9
-    field public static final int fragmentCloseEnterAnimation = 16843495; // 0x10102e7
-    field public static final int fragmentCloseExitAnimation = 16843496; // 0x10102e8
-    field public static final int fragmentEnterTransition = 16843971; // 0x10104c3
-    field public static final int fragmentExitTransition = 16843970; // 0x10104c2
-    field public static final int fragmentFadeEnterAnimation = 16843497; // 0x10102e9
-    field public static final int fragmentFadeExitAnimation = 16843498; // 0x10102ea
-    field public static final int fragmentOpenEnterAnimation = 16843493; // 0x10102e5
-    field public static final int fragmentOpenExitAnimation = 16843494; // 0x10102e6
-    field public static final int fragmentReenterTransition = 16843975; // 0x10104c7
-    field public static final int fragmentReturnTransition = 16843973; // 0x10104c5
-    field public static final int fragmentSharedElementEnterTransition = 16843972; // 0x10104c4
-    field public static final int fragmentSharedElementReturnTransition = 16843974; // 0x10104c6
-    field public static final int freezesText = 16843116; // 0x101016c
-    field public static final int fromAlpha = 16843210; // 0x10101ca
-    field public static final int fromDegrees = 16843187; // 0x10101b3
-    field public static final int fromId = 16843850; // 0x101044a
-    field public static final int fromScene = 16843741; // 0x10103dd
-    field public static final int fromXDelta = 16843206; // 0x10101c6
-    field public static final int fromXScale = 16843202; // 0x10101c2
-    field public static final int fromYDelta = 16843208; // 0x10101c8
-    field public static final int fromYScale = 16843204; // 0x10101c4
-    field public static final int fullBackupContent = 16844011; // 0x10104eb
-    field public static final int fullBackupOnly = 16843891; // 0x1010473
-    field public static final int fullBright = 16842954; // 0x10100ca
-    field public static final int fullDark = 16842950; // 0x10100c6
-    field public static final int functionalTest = 16842787; // 0x1010023
-    field public static final int galleryItemBackground = 16842828; // 0x101004c
-    field public static final int galleryStyle = 16842864; // 0x1010070
-    field public static final int gestureColor = 16843381; // 0x1010275
-    field public static final int gestureStrokeAngleThreshold = 16843388; // 0x101027c
-    field public static final int gestureStrokeLengthThreshold = 16843386; // 0x101027a
-    field public static final int gestureStrokeSquarenessThreshold = 16843387; // 0x101027b
-    field public static final int gestureStrokeType = 16843385; // 0x1010279
-    field public static final int gestureStrokeWidth = 16843380; // 0x1010274
-    field public static final int glEsVersion = 16843393; // 0x1010281
-    field public static final int goIcon = 16843906; // 0x1010482
-    field public static final int gradientRadius = 16843172; // 0x10101a4
-    field public static final int grantUriPermissions = 16842779; // 0x101001b
-    field public static final int gravity = 16842927; // 0x10100af
-    field public static final int gridViewStyle = 16842865; // 0x1010071
-    field public static final int groupIndicator = 16843019; // 0x101010b
-    field public static final int gwpAsanMode = 16844310; // 0x1010616
-    field public static final int hand_hour = 16843011; // 0x1010103
-    field public static final int hand_minute = 16843012; // 0x1010104
-    field public static final int handle = 16843354; // 0x101025a
-    field public static final int handleProfiling = 16842786; // 0x1010022
-    field public static final int hapticFeedbackEnabled = 16843358; // 0x101025e
-    field public static final int hardwareAccelerated = 16843475; // 0x10102d3
-    field public static final int hasCode = 16842764; // 0x101000c
-    field public static final int hasFragileUserData = 16844186; // 0x101059a
-    field @Deprecated public static final int headerAmPmTextAppearance = 16843936; // 0x10104a0
-    field public static final int headerBackground = 16843055; // 0x101012f
-    field @Deprecated public static final int headerDayOfMonthTextAppearance = 16843927; // 0x1010497
-    field public static final int headerDividersEnabled = 16843310; // 0x101022e
-    field @Deprecated public static final int headerMonthTextAppearance = 16843926; // 0x1010496
-    field @Deprecated public static final int headerTimeTextAppearance = 16843935; // 0x101049f
-    field @Deprecated public static final int headerYearTextAppearance = 16843928; // 0x1010498
-    field public static final int height = 16843093; // 0x1010155
-    field public static final int hideOnContentScroll = 16843843; // 0x1010443
-    field public static final int hint = 16843088; // 0x1010150
-    field public static final int homeAsUpIndicator = 16843531; // 0x101030b
-    field public static final int homeLayout = 16843549; // 0x101031d
-    field public static final int horizontalDivider = 16843053; // 0x101012d
-    field @Deprecated public static final int horizontalGap = 16843327; // 0x101023f
-    field public static final int horizontalScrollViewStyle = 16843603; // 0x1010353
-    field public static final int horizontalSpacing = 16843028; // 0x1010114
-    field public static final int host = 16842792; // 0x1010028
-    field public static final int hotSpotX = 16844055; // 0x1010517
-    field public static final int hotSpotY = 16844056; // 0x1010518
-    field public static final int htmlDescription = 16844299; // 0x101060b
-    field public static final int hyphenationFrequency = 16843998; // 0x10104de
-    field public static final int icon = 16842754; // 0x1010002
-    field @Deprecated public static final int iconPreview = 16843337; // 0x1010249
-    field public static final int iconSpaceReserved = 16844129; // 0x1010561
-    field public static final int iconTint = 16844126; // 0x101055e
-    field public static final int iconTintMode = 16844127; // 0x101055f
-    field public static final int iconifiedByDefault = 16843514; // 0x10102fa
-    field public static final int id = 16842960; // 0x10100d0
-    field public static final int identifier = 16844294; // 0x1010606
-    field public static final int ignoreGravity = 16843263; // 0x10101ff
-    field public static final int imageButtonStyle = 16842866; // 0x1010072
-    field public static final int imageWellStyle = 16842867; // 0x1010073
-    field public static final int imeActionId = 16843366; // 0x1010266
-    field public static final int imeActionLabel = 16843365; // 0x1010265
-    field public static final int imeExtractEnterAnimation = 16843368; // 0x1010268
-    field public static final int imeExtractExitAnimation = 16843369; // 0x1010269
-    field public static final int imeFullscreenBackground = 16843308; // 0x101022c
-    field public static final int imeOptions = 16843364; // 0x1010264
-    field public static final int imeSubtypeExtraValue = 16843502; // 0x10102ee
-    field public static final int imeSubtypeLocale = 16843500; // 0x10102ec
-    field public static final int imeSubtypeMode = 16843501; // 0x10102ed
-    field public static final int immersive = 16843456; // 0x10102c0
-    field public static final int importantForAccessibility = 16843690; // 0x10103aa
-    field public static final int importantForAutofill = 16844120; // 0x1010558
-    field public static final int importantForContentCapture = 16844295; // 0x1010607
-    field public static final int inAnimation = 16843127; // 0x1010177
-    field public static final int includeFontPadding = 16843103; // 0x101015f
-    field public static final int includeInGlobalSearch = 16843374; // 0x101026e
-    field public static final int indeterminate = 16843065; // 0x1010139
-    field public static final int indeterminateBehavior = 16843070; // 0x101013e
-    field public static final int indeterminateDrawable = 16843067; // 0x101013b
-    field public static final int indeterminateDuration = 16843069; // 0x101013d
-    field public static final int indeterminateOnly = 16843066; // 0x101013a
-    field public static final int indeterminateProgressStyle = 16843544; // 0x1010318
-    field public static final int indeterminateTint = 16843881; // 0x1010469
-    field public static final int indeterminateTintMode = 16843882; // 0x101046a
-    field public static final int indicatorEnd = 16843730; // 0x10103d2
-    field public static final int indicatorLeft = 16843021; // 0x101010d
-    field public static final int indicatorRight = 16843022; // 0x101010e
-    field public static final int indicatorStart = 16843729; // 0x10103d1
-    field public static final int inflatedId = 16842995; // 0x10100f3
-    field public static final int inheritShowWhenLocked = 16844188; // 0x101059c
-    field public static final int initOrder = 16842778; // 0x101001a
-    field public static final int initialKeyguardLayout = 16843714; // 0x10103c2
-    field public static final int initialLayout = 16843345; // 0x1010251
-    field public static final int innerRadius = 16843359; // 0x101025f
-    field public static final int innerRadiusRatio = 16843163; // 0x101019b
-    field @Deprecated public static final int inputMethod = 16843112; // 0x1010168
-    field public static final int inputType = 16843296; // 0x1010220
-    field public static final int inset = 16843957; // 0x10104b5
-    field public static final int insetBottom = 16843194; // 0x10101ba
-    field public static final int insetLeft = 16843191; // 0x10101b7
-    field public static final int insetRight = 16843192; // 0x10101b8
-    field public static final int insetTop = 16843193; // 0x10101b9
-    field public static final int installLocation = 16843447; // 0x10102b7
-    field public static final int interactiveUiTimeout = 16844181; // 0x1010595
-    field public static final int interpolator = 16843073; // 0x1010141
-    field public static final int isAlwaysSyncable = 16843571; // 0x1010333
-    field public static final int isAsciiCapable = 16843753; // 0x10103e9
-    field public static final int isAuxiliary = 16843647; // 0x101037f
-    field public static final int isDefault = 16843297; // 0x1010221
-    field public static final int isFeatureSplit = 16844123; // 0x101055b
-    field public static final int isGame = 16843764; // 0x10103f4
-    field public static final int isIndicator = 16843079; // 0x1010147
-    field public static final int isLightTheme = 16844176; // 0x1010590
-    field @Deprecated public static final int isModifier = 16843334; // 0x1010246
-    field @Deprecated public static final int isRepeatable = 16843336; // 0x1010248
-    field public static final int isScrollContainer = 16843342; // 0x101024e
-    field public static final int isSplitRequired = 16844177; // 0x1010591
-    field public static final int isStatic = 16844122; // 0x101055a
-    field @Deprecated public static final int isSticky = 16843335; // 0x1010247
-    field public static final int isolatedProcess = 16843689; // 0x10103a9
-    field public static final int isolatedSplits = 16844107; // 0x101054b
-    field public static final int itemBackground = 16843056; // 0x1010130
-    field public static final int itemIconDisabledAlpha = 16843057; // 0x1010131
-    field public static final int itemPadding = 16843565; // 0x101032d
-    field public static final int itemTextAppearance = 16843052; // 0x101012c
-    field public static final int justificationMode = 16844135; // 0x1010567
-    field public static final int keepScreenOn = 16843286; // 0x1010216
-    field public static final int key = 16843240; // 0x10101e8
-    field @Deprecated public static final int keyBackground = 16843315; // 0x1010233
-    field @Deprecated public static final int keyEdgeFlags = 16843333; // 0x1010245
-    field @Deprecated public static final int keyHeight = 16843326; // 0x101023e
-    field @Deprecated public static final int keyIcon = 16843340; // 0x101024c
-    field @Deprecated public static final int keyLabel = 16843339; // 0x101024b
-    field @Deprecated public static final int keyOutputText = 16843338; // 0x101024a
-    field @Deprecated public static final int keyPreviewHeight = 16843321; // 0x1010239
-    field @Deprecated public static final int keyPreviewLayout = 16843319; // 0x1010237
-    field @Deprecated public static final int keyPreviewOffset = 16843320; // 0x1010238
-    field public static final int keySet = 16843739; // 0x10103db
-    field @Deprecated public static final int keyTextColor = 16843318; // 0x1010236
-    field @Deprecated public static final int keyTextSize = 16843316; // 0x1010234
-    field @Deprecated public static final int keyWidth = 16843325; // 0x101023d
-    field public static final int keyboardLayout = 16843691; // 0x10103ab
-    field @Deprecated public static final int keyboardMode = 16843341; // 0x101024d
-    field public static final int keyboardNavigationCluster = 16844096; // 0x1010540
-    field public static final int keycode = 16842949; // 0x10100c5
-    field public static final int killAfterRestore = 16843420; // 0x101029c
-    field public static final int label = 16842753; // 0x1010001
-    field public static final int labelFor = 16843718; // 0x10103c6
-    field @Deprecated public static final int labelTextSize = 16843317; // 0x1010235
-    field public static final int languageTag = 16844040; // 0x1010508
-    field public static final int largeHeap = 16843610; // 0x101035a
-    field public static final int largeScreens = 16843398; // 0x1010286
-    field public static final int largestWidthLimitDp = 16843622; // 0x1010366
-    field public static final int lastBaselineToBottomHeight = 16844158; // 0x101057e
-    field public static final int launchMode = 16842781; // 0x101001d
-    field public static final int launchTaskBehindSourceAnimation = 16843922; // 0x1010492
-    field public static final int launchTaskBehindTargetAnimation = 16843921; // 0x1010491
-    field public static final int layerType = 16843604; // 0x1010354
-    field public static final int layout = 16842994; // 0x10100f2
-    field public static final int layoutAnimation = 16842988; // 0x10100ec
-    field public static final int layoutDirection = 16843698; // 0x10103b2
-    field public static final int layoutMode = 16843738; // 0x10103da
-    field public static final int layout_above = 16843140; // 0x1010184
-    field public static final int layout_alignBaseline = 16843142; // 0x1010186
-    field public static final int layout_alignBottom = 16843146; // 0x101018a
-    field public static final int layout_alignEnd = 16843706; // 0x10103ba
-    field public static final int layout_alignLeft = 16843143; // 0x1010187
-    field public static final int layout_alignParentBottom = 16843150; // 0x101018e
-    field public static final int layout_alignParentEnd = 16843708; // 0x10103bc
-    field public static final int layout_alignParentLeft = 16843147; // 0x101018b
-    field public static final int layout_alignParentRight = 16843149; // 0x101018d
-    field public static final int layout_alignParentStart = 16843707; // 0x10103bb
-    field public static final int layout_alignParentTop = 16843148; // 0x101018c
-    field public static final int layout_alignRight = 16843145; // 0x1010189
-    field public static final int layout_alignStart = 16843705; // 0x10103b9
-    field public static final int layout_alignTop = 16843144; // 0x1010188
-    field public static final int layout_alignWithParentIfMissing = 16843154; // 0x1010192
-    field public static final int layout_below = 16843141; // 0x1010185
-    field public static final int layout_centerHorizontal = 16843152; // 0x1010190
-    field public static final int layout_centerInParent = 16843151; // 0x101018f
-    field public static final int layout_centerVertical = 16843153; // 0x1010191
-    field public static final int layout_column = 16843084; // 0x101014c
-    field public static final int layout_columnSpan = 16843645; // 0x101037d
-    field public static final int layout_columnWeight = 16843865; // 0x1010459
-    field public static final int layout_gravity = 16842931; // 0x10100b3
-    field public static final int layout_height = 16842997; // 0x10100f5
-    field public static final int layout_margin = 16842998; // 0x10100f6
-    field public static final int layout_marginBottom = 16843002; // 0x10100fa
-    field public static final int layout_marginEnd = 16843702; // 0x10103b6
-    field public static final int layout_marginHorizontal = 16844091; // 0x101053b
-    field public static final int layout_marginLeft = 16842999; // 0x10100f7
-    field public static final int layout_marginRight = 16843001; // 0x10100f9
-    field public static final int layout_marginStart = 16843701; // 0x10103b5
-    field public static final int layout_marginTop = 16843000; // 0x10100f8
-    field public static final int layout_marginVertical = 16844092; // 0x101053c
-    field public static final int layout_row = 16843643; // 0x101037b
-    field public static final int layout_rowSpan = 16843644; // 0x101037c
-    field public static final int layout_rowWeight = 16843864; // 0x1010458
-    field public static final int layout_scale = 16843155; // 0x1010193
-    field public static final int layout_span = 16843085; // 0x101014d
-    field public static final int layout_toEndOf = 16843704; // 0x10103b8
-    field public static final int layout_toLeftOf = 16843138; // 0x1010182
-    field public static final int layout_toRightOf = 16843139; // 0x1010183
-    field public static final int layout_toStartOf = 16843703; // 0x10103b7
-    field public static final int layout_weight = 16843137; // 0x1010181
-    field public static final int layout_width = 16842996; // 0x10100f4
-    field public static final int layout_x = 16843135; // 0x101017f
-    field public static final int layout_y = 16843136; // 0x1010180
-    field public static final int left = 16843181; // 0x10101ad
-    field public static final int letterSpacing = 16843958; // 0x10104b6
-    field public static final int level = 16844032; // 0x1010500
-    field public static final int lineHeight = 16844159; // 0x101057f
-    field public static final int lineSpacingExtra = 16843287; // 0x1010217
-    field public static final int lineSpacingMultiplier = 16843288; // 0x1010218
-    field public static final int lines = 16843092; // 0x1010154
-    field public static final int linksClickable = 16842929; // 0x10100b1
-    field public static final int listChoiceBackgroundIndicator = 16843504; // 0x10102f0
-    field public static final int listChoiceIndicatorMultiple = 16843290; // 0x101021a
-    field public static final int listChoiceIndicatorSingle = 16843289; // 0x1010219
-    field public static final int listDivider = 16843284; // 0x1010214
-    field public static final int listDividerAlertDialog = 16843525; // 0x1010305
-    field public static final int listMenuViewStyle = 16844018; // 0x10104f2
-    field public static final int listPopupWindowStyle = 16843519; // 0x10102ff
-    field public static final int listPreferredItemHeight = 16842829; // 0x101004d
-    field public static final int listPreferredItemHeightLarge = 16843654; // 0x1010386
-    field public static final int listPreferredItemHeightSmall = 16843655; // 0x1010387
-    field public static final int listPreferredItemPaddingEnd = 16843710; // 0x10103be
-    field public static final int listPreferredItemPaddingLeft = 16843683; // 0x10103a3
-    field public static final int listPreferredItemPaddingRight = 16843684; // 0x10103a4
-    field public static final int listPreferredItemPaddingStart = 16843709; // 0x10103bd
-    field public static final int listSelector = 16843003; // 0x10100fb
-    field public static final int listSeparatorTextViewStyle = 16843272; // 0x1010208
-    field public static final int listViewStyle = 16842868; // 0x1010074
-    field public static final int listViewWhiteStyle = 16842869; // 0x1010075
-    field public static final int lockTaskMode = 16844013; // 0x10104ed
-    field public static final int logo = 16843454; // 0x10102be
-    field public static final int logoDescription = 16844009; // 0x10104e9
-    field public static final int longClickable = 16842982; // 0x10100e6
-    field public static final int loopViews = 16843527; // 0x1010307
-    field public static final int manageSpaceActivity = 16842756; // 0x1010004
-    field public static final int mapViewStyle = 16842890; // 0x101008a
-    field public static final int marqueeRepeatLimit = 16843293; // 0x101021d
-    field public static final int matchOrder = 16843855; // 0x101044f
-    field public static final int max = 16843062; // 0x1010136
-    field public static final int maxAspectRatio = 16844128; // 0x1010560
-    field public static final int maxButtonHeight = 16844029; // 0x10104fd
-    field public static final int maxDate = 16843584; // 0x1010340
-    field public static final int maxEms = 16843095; // 0x1010157
-    field public static final int maxHeight = 16843040; // 0x1010120
-    field public static final int maxItemsPerRow = 16843060; // 0x1010134
-    field public static final int maxLength = 16843104; // 0x1010160
-    field public static final int maxLevel = 16843186; // 0x10101b2
-    field public static final int maxLines = 16843091; // 0x1010153
-    field public static final int maxLongVersionCode = 16844163; // 0x1010583
-    field public static final int maxRecents = 16843846; // 0x1010446
-    field public static final int maxRows = 16843059; // 0x1010133
-    field public static final int maxSdkVersion = 16843377; // 0x1010271
-    field public static final int maxWidth = 16843039; // 0x101011f
-    field public static final int maximumAngle = 16843903; // 0x101047f
-    field public static final int measureAllChildren = 16843018; // 0x101010a
-    field public static final int measureWithLargestChild = 16843476; // 0x10102d4
-    field public static final int mediaRouteButtonStyle = 16843693; // 0x10103ad
-    field public static final int mediaRouteTypes = 16843694; // 0x10103ae
-    field public static final int menuCategory = 16843230; // 0x10101de
-    field public static final int mimeGroup = 16844309; // 0x1010615
-    field public static final int mimeType = 16842790; // 0x1010026
-    field public static final int min = 16844089; // 0x1010539
-    field public static final int minAspectRatio = 16844187; // 0x101059b
-    field public static final int minDate = 16843583; // 0x101033f
-    field public static final int minEms = 16843098; // 0x101015a
-    field public static final int minHeight = 16843072; // 0x1010140
-    field public static final int minLevel = 16843185; // 0x10101b1
-    field public static final int minLines = 16843094; // 0x1010156
-    field public static final int minResizeHeight = 16843670; // 0x1010396
-    field public static final int minResizeWidth = 16843669; // 0x1010395
-    field public static final int minSdkVersion = 16843276; // 0x101020c
-    field public static final int minWidth = 16843071; // 0x101013f
-    field public static final int minimumHorizontalAngle = 16843901; // 0x101047d
-    field public static final int minimumVerticalAngle = 16843902; // 0x101047e
-    field public static final int mipMap = 16843725; // 0x10103cd
-    field public static final int mirrorForRtl = 16843726; // 0x10103ce
-    field public static final int mode = 16843134; // 0x101017e
-    field public static final int moreIcon = 16843061; // 0x1010135
-    field public static final int multiArch = 16843918; // 0x101048e
-    field public static final int multiprocess = 16842771; // 0x1010013
-    field public static final int name = 16842755; // 0x1010003
-    field public static final int navigationBarColor = 16843858; // 0x1010452
-    field public static final int navigationBarDividerColor = 16844141; // 0x101056d
-    field public static final int navigationContentDescription = 16843969; // 0x10104c1
-    field public static final int navigationIcon = 16843968; // 0x10104c0
-    field public static final int navigationMode = 16843471; // 0x10102cf
-    field public static final int negativeButtonText = 16843254; // 0x10101f6
-    field public static final int nestedScrollingEnabled = 16843830; // 0x1010436
-    field public static final int networkSecurityConfig = 16844071; // 0x1010527
-    field public static final int nextClusterForward = 16844098; // 0x1010542
-    field public static final int nextFocusDown = 16842980; // 0x10100e4
-    field public static final int nextFocusForward = 16843580; // 0x101033c
-    field public static final int nextFocusLeft = 16842977; // 0x10100e1
-    field public static final int nextFocusRight = 16842978; // 0x10100e2
-    field public static final int nextFocusUp = 16842979; // 0x10100e3
-    field public static final int noHistory = 16843309; // 0x101022d
-    field public static final int nonInteractiveUiTimeout = 16844175; // 0x101058f
-    field public static final int normalScreens = 16843397; // 0x1010285
-    field public static final int notificationTimeout = 16843651; // 0x1010383
-    field public static final int numColumns = 16843032; // 0x1010118
-    field public static final int numStars = 16843076; // 0x1010144
-    field public static final int numberPickerStyle = 16844068; // 0x1010524
-    field public static final int numbersBackgroundColor = 16843938; // 0x10104a2
-    field public static final int numbersInnerTextColor = 16844001; // 0x10104e1
-    field public static final int numbersSelectorColor = 16843939; // 0x10104a3
-    field public static final int numbersTextColor = 16843937; // 0x10104a1
-    field @Deprecated public static final int numeric = 16843109; // 0x1010165
-    field public static final int numericModifiers = 16844111; // 0x101054f
-    field public static final int numericShortcut = 16843236; // 0x10101e4
-    field public static final int offset = 16844052; // 0x1010514
-    field public static final int onClick = 16843375; // 0x101026f
-    field public static final int oneshot = 16843159; // 0x1010197
-    field public static final int opacity = 16843550; // 0x101031e
-    field public static final int opticalInsetBottom = 16844171; // 0x101058b
-    field public static final int opticalInsetLeft = 16844168; // 0x1010588
-    field public static final int opticalInsetRight = 16844170; // 0x101058a
-    field public static final int opticalInsetTop = 16844169; // 0x1010589
-    field public static final int order = 16843242; // 0x10101ea
-    field public static final int orderInCategory = 16843231; // 0x10101df
-    field public static final int ordering = 16843490; // 0x10102e2
-    field public static final int orderingFromXml = 16843239; // 0x10101e7
-    field public static final int orientation = 16842948; // 0x10100c4
-    field public static final int outAnimation = 16843128; // 0x1010178
-    field public static final int outlineAmbientShadowColor = 16844162; // 0x1010582
-    field public static final int outlineProvider = 16843960; // 0x10104b8
-    field public static final int outlineSpotShadowColor = 16844161; // 0x1010581
-    field public static final int overScrollFooter = 16843459; // 0x10102c3
-    field public static final int overScrollHeader = 16843458; // 0x10102c2
-    field public static final int overScrollMode = 16843457; // 0x10102c1
-    field public static final int overlapAnchor = 16843874; // 0x1010462
-    field public static final int overridesImplicitlyEnabledSubtype = 16843682; // 0x10103a2
-    field public static final int packageNames = 16843649; // 0x1010381
-    field public static final int packageType = 16844167; // 0x1010587
-    field public static final int padding = 16842965; // 0x10100d5
-    field public static final int paddingBottom = 16842969; // 0x10100d9
-    field public static final int paddingEnd = 16843700; // 0x10103b4
-    field public static final int paddingHorizontal = 16844093; // 0x101053d
-    field public static final int paddingLeft = 16842966; // 0x10100d6
-    field public static final int paddingMode = 16843863; // 0x1010457
-    field public static final int paddingRight = 16842968; // 0x10100d8
-    field public static final int paddingStart = 16843699; // 0x10103b3
-    field public static final int paddingTop = 16842967; // 0x10100d7
-    field public static final int paddingVertical = 16844094; // 0x101053e
-    field public static final int panelBackground = 16842846; // 0x101005e
-    field public static final int panelColorBackground = 16842849; // 0x1010061
-    field public static final int panelColorForeground = 16842848; // 0x1010060
-    field public static final int panelFullBackground = 16842847; // 0x101005f
-    field public static final int panelTextAppearance = 16842850; // 0x1010062
-    field public static final int parentActivityName = 16843687; // 0x10103a7
-    field @Deprecated public static final int password = 16843100; // 0x101015c
-    field public static final int path = 16842794; // 0x101002a
-    field public static final int pathData = 16843781; // 0x1010405
-    field public static final int pathPattern = 16842796; // 0x101002c
-    field public static final int pathPrefix = 16842795; // 0x101002b
-    field public static final int patternPathData = 16843978; // 0x10104ca
-    field public static final int permission = 16842758; // 0x1010006
-    field public static final int permissionFlags = 16843719; // 0x10103c7
-    field public static final int permissionGroup = 16842762; // 0x101000a
-    field public static final int permissionGroupFlags = 16843717; // 0x10103c5
-    field public static final int persistableMode = 16843821; // 0x101042d
-    field public static final int persistent = 16842765; // 0x101000d
-    field public static final int persistentDrawingCache = 16842990; // 0x10100ee
-    field public static final int persistentWhenFeatureAvailable = 16844131; // 0x1010563
-    field @Deprecated public static final int phoneNumber = 16843111; // 0x1010167
-    field public static final int pivotX = 16843189; // 0x10101b5
-    field public static final int pivotY = 16843190; // 0x10101b6
-    field public static final int pointerIcon = 16844041; // 0x1010509
-    field public static final int popupAnimationStyle = 16843465; // 0x10102c9
-    field public static final int popupBackground = 16843126; // 0x1010176
-    field @Deprecated public static final int popupCharacters = 16843332; // 0x1010244
-    field public static final int popupElevation = 16843916; // 0x101048c
-    field public static final int popupEnterTransition = 16844063; // 0x101051f
-    field public static final int popupExitTransition = 16844064; // 0x1010520
-    field @Deprecated public static final int popupKeyboard = 16843331; // 0x1010243
-    field @Deprecated public static final int popupLayout = 16843323; // 0x101023b
-    field public static final int popupMenuStyle = 16843520; // 0x1010300
-    field public static final int popupTheme = 16843945; // 0x10104a9
-    field public static final int popupWindowStyle = 16842870; // 0x1010076
-    field public static final int port = 16842793; // 0x1010029
-    field public static final int positiveButtonText = 16843253; // 0x10101f5
-    field public static final int preferMinimalPostProcessing = 16844300; // 0x101060c
-    field public static final int preferenceCategoryStyle = 16842892; // 0x101008c
-    field public static final int preferenceFragmentStyle = 16844038; // 0x1010506
-    field public static final int preferenceInformationStyle = 16842893; // 0x101008d
-    field public static final int preferenceLayoutChild = 16842900; // 0x1010094
-    field public static final int preferenceScreenStyle = 16842891; // 0x101008b
-    field public static final int preferenceStyle = 16842894; // 0x101008e
-    field public static final int presentationTheme = 16843712; // 0x10103c0
-    field public static final int preserveLegacyExternalStorage = 16844308; // 0x1010614
-    field public static final int previewImage = 16843482; // 0x10102da
-    field public static final int primaryContentAlpha = 16844114; // 0x1010552
-    field public static final int priority = 16842780; // 0x101001c
-    field public static final int privateImeOptions = 16843299; // 0x1010223
-    field public static final int process = 16842769; // 0x1010011
-    field public static final int progress = 16843063; // 0x1010137
-    field public static final int progressBackgroundTint = 16843877; // 0x1010465
-    field public static final int progressBackgroundTintMode = 16843878; // 0x1010466
-    field public static final int progressBarPadding = 16843545; // 0x1010319
-    field public static final int progressBarStyle = 16842871; // 0x1010077
-    field public static final int progressBarStyleHorizontal = 16842872; // 0x1010078
-    field public static final int progressBarStyleInverse = 16843399; // 0x1010287
-    field public static final int progressBarStyleLarge = 16842874; // 0x101007a
-    field public static final int progressBarStyleLargeInverse = 16843401; // 0x1010289
-    field public static final int progressBarStyleSmall = 16842873; // 0x1010079
-    field public static final int progressBarStyleSmallInverse = 16843400; // 0x1010288
-    field public static final int progressBarStyleSmallTitle = 16843279; // 0x101020f
-    field public static final int progressDrawable = 16843068; // 0x101013c
-    field public static final int progressTint = 16843875; // 0x1010463
-    field public static final int progressTintMode = 16843876; // 0x1010464
-    field public static final int prompt = 16843131; // 0x101017b
-    field public static final int propertyName = 16843489; // 0x10102e1
-    field public static final int propertyXName = 16843892; // 0x1010474
-    field public static final int propertyYName = 16843893; // 0x1010475
-    field public static final int protectionLevel = 16842761; // 0x1010009
-    field public static final int publicKey = 16843686; // 0x10103a6
-    field public static final int queryActionMsg = 16843227; // 0x10101db
-    field public static final int queryAfterZeroResults = 16843394; // 0x1010282
-    field public static final int queryBackground = 16843911; // 0x1010487
-    field public static final int queryHint = 16843608; // 0x1010358
-    field public static final int quickContactBadgeStyleSmallWindowLarge = 16843443; // 0x10102b3
-    field public static final int quickContactBadgeStyleSmallWindowMedium = 16843442; // 0x10102b2
-    field public static final int quickContactBadgeStyleSmallWindowSmall = 16843441; // 0x10102b1
-    field public static final int quickContactBadgeStyleWindowLarge = 16843440; // 0x10102b0
-    field public static final int quickContactBadgeStyleWindowMedium = 16843439; // 0x10102af
-    field public static final int quickContactBadgeStyleWindowSmall = 16843438; // 0x10102ae
-    field public static final int radioButtonStyle = 16842878; // 0x101007e
-    field public static final int radius = 16843176; // 0x10101a8
-    field public static final int rating = 16843077; // 0x1010145
-    field public static final int ratingBarStyle = 16842876; // 0x101007c
-    field public static final int ratingBarStyleIndicator = 16843280; // 0x1010210
-    field public static final int ratingBarStyleSmall = 16842877; // 0x101007d
-    field public static final int readPermission = 16842759; // 0x1010007
-    field public static final int recognitionService = 16843932; // 0x101049c
-    field public static final int recreateOnConfigChanges = 16844103; // 0x1010547
-    field public static final int recycleEnabled = 16844121; // 0x1010559
-    field public static final int relinquishTaskIdentity = 16843894; // 0x1010476
-    field public static final int reparent = 16843964; // 0x10104bc
-    field public static final int reparentWithOverlay = 16843965; // 0x10104bd
-    field public static final int repeatCount = 16843199; // 0x10101bf
-    field public static final int repeatMode = 16843200; // 0x10101c0
-    field public static final int reqFiveWayNav = 16843314; // 0x1010232
-    field public static final int reqHardKeyboard = 16843305; // 0x1010229
-    field public static final int reqKeyboardType = 16843304; // 0x1010228
-    field public static final int reqNavigation = 16843306; // 0x101022a
-    field public static final int reqTouchScreen = 16843303; // 0x1010227
-    field public static final int requestLegacyExternalStorage = 16844291; // 0x1010603
-    field public static final int requireDeviceUnlock = 16843756; // 0x10103ec
-    field public static final int required = 16843406; // 0x101028e
-    field public static final int requiredAccountType = 16843734; // 0x10103d6
-    field public static final int requiredFeature = 16844116; // 0x1010554
-    field public static final int requiredForAllUsers = 16843728; // 0x10103d0
-    field public static final int requiredNotFeature = 16844117; // 0x1010555
-    field public static final int requiresFadingEdge = 16843685; // 0x10103a5
-    field public static final int requiresSmallestWidthDp = 16843620; // 0x1010364
-    field public static final int resizeClip = 16843983; // 0x10104cf
-    field public static final int resizeMode = 16843619; // 0x1010363
-    field public static final int resizeable = 16843405; // 0x101028d
-    field public static final int resizeableActivity = 16844022; // 0x10104f6
-    field public static final int resource = 16842789; // 0x1010025
-    field public static final int resourcesMap = 16844297; // 0x1010609
-    field public static final int restoreAnyVersion = 16843450; // 0x10102ba
-    field @Deprecated public static final int restoreNeedsApplication = 16843421; // 0x101029d
-    field public static final int restrictedAccountType = 16843733; // 0x10103d5
-    field public static final int restrictionType = 16843923; // 0x1010493
-    field public static final int resumeWhilePausing = 16843954; // 0x10104b2
-    field public static final int reversible = 16843851; // 0x101044b
-    field public static final int revisionCode = 16843989; // 0x10104d5
-    field public static final int right = 16843183; // 0x10101af
-    field public static final int ringtonePreferenceStyle = 16842899; // 0x1010093
-    field public static final int ringtoneType = 16843257; // 0x10101f9
-    field public static final int rotation = 16843558; // 0x1010326
-    field public static final int rotationAnimation = 16844090; // 0x101053a
-    field public static final int rotationX = 16843559; // 0x1010327
-    field public static final int rotationY = 16843560; // 0x1010328
-    field public static final int roundIcon = 16844076; // 0x101052c
-    field public static final int rowCount = 16843637; // 0x1010375
-    field public static final int rowDelay = 16843216; // 0x10101d0
-    field @Deprecated public static final int rowEdgeFlags = 16843329; // 0x1010241
-    field public static final int rowHeight = 16843058; // 0x1010132
-    field public static final int rowOrderPreserved = 16843638; // 0x1010376
-    field public static final int saveEnabled = 16842983; // 0x10100e7
-    field public static final int scaleGravity = 16843262; // 0x10101fe
-    field public static final int scaleHeight = 16843261; // 0x10101fd
-    field public static final int scaleType = 16843037; // 0x101011d
-    field public static final int scaleWidth = 16843260; // 0x10101fc
-    field public static final int scaleX = 16843556; // 0x1010324
-    field public static final int scaleY = 16843557; // 0x1010325
-    field public static final int scheme = 16842791; // 0x1010027
-    field public static final int screenDensity = 16843467; // 0x10102cb
-    field public static final int screenOrientation = 16842782; // 0x101001e
-    field public static final int screenReaderFocusable = 16844148; // 0x1010574
-    field public static final int screenSize = 16843466; // 0x10102ca
-    field public static final int scrollHorizontally = 16843099; // 0x101015b
-    field public static final int scrollIndicators = 16844006; // 0x10104e6
-    field public static final int scrollViewStyle = 16842880; // 0x1010080
-    field public static final int scrollX = 16842962; // 0x10100d2
-    field public static final int scrollY = 16842963; // 0x10100d3
-    field public static final int scrollbarAlwaysDrawHorizontalTrack = 16842856; // 0x1010068
-    field public static final int scrollbarAlwaysDrawVerticalTrack = 16842857; // 0x1010069
-    field public static final int scrollbarDefaultDelayBeforeFade = 16843433; // 0x10102a9
-    field public static final int scrollbarFadeDuration = 16843432; // 0x10102a8
-    field public static final int scrollbarSize = 16842851; // 0x1010063
-    field public static final int scrollbarStyle = 16842879; // 0x101007f
-    field public static final int scrollbarThumbHorizontal = 16842852; // 0x1010064
-    field public static final int scrollbarThumbVertical = 16842853; // 0x1010065
-    field public static final int scrollbarTrackHorizontal = 16842854; // 0x1010066
-    field public static final int scrollbarTrackVertical = 16842855; // 0x1010067
-    field public static final int scrollbars = 16842974; // 0x10100de
-    field public static final int scrollingCache = 16843006; // 0x10100fe
-    field @Deprecated public static final int searchButtonText = 16843269; // 0x1010205
-    field public static final int searchHintIcon = 16843988; // 0x10104d4
-    field public static final int searchIcon = 16843907; // 0x1010483
-    field public static final int searchMode = 16843221; // 0x10101d5
-    field public static final int searchSettingsDescription = 16843402; // 0x101028a
-    field public static final int searchSuggestAuthority = 16843222; // 0x10101d6
-    field public static final int searchSuggestIntentAction = 16843225; // 0x10101d9
-    field public static final int searchSuggestIntentData = 16843226; // 0x10101da
-    field public static final int searchSuggestPath = 16843223; // 0x10101d7
-    field public static final int searchSuggestSelection = 16843224; // 0x10101d8
-    field public static final int searchSuggestThreshold = 16843373; // 0x101026d
-    field public static final int searchViewStyle = 16843904; // 0x1010480
-    field public static final int secondaryContentAlpha = 16844115; // 0x1010553
-    field public static final int secondaryProgress = 16843064; // 0x1010138
-    field public static final int secondaryProgressTint = 16843879; // 0x1010467
-    field public static final int secondaryProgressTintMode = 16843880; // 0x1010468
-    field public static final int secureElementName = 16844290; // 0x1010602
-    field public static final int seekBarStyle = 16842875; // 0x101007b
-    field public static final int segmentedButtonStyle = 16843568; // 0x1010330
-    field public static final int selectAllOnFocus = 16843102; // 0x101015e
-    field public static final int selectable = 16843238; // 0x10101e6
-    field public static final int selectableItemBackground = 16843534; // 0x101030e
-    field public static final int selectableItemBackgroundBorderless = 16843868; // 0x101045c
-    field @Deprecated public static final int selectedDateVerticalBar = 16843591; // 0x1010347
-    field @Deprecated public static final int selectedWeekBackgroundColor = 16843586; // 0x1010342
-    field public static final int selectionDividerHeight = 16844184; // 0x1010598
-    field public static final int sessionService = 16843837; // 0x101043d
-    field public static final int settingsActivity = 16843301; // 0x1010225
-    field public static final int settingsSliceUri = 16844179; // 0x1010593
-    field public static final int setupActivity = 16843766; // 0x10103f6
-    field public static final int shadowColor = 16843105; // 0x1010161
-    field public static final int shadowDx = 16843106; // 0x1010162
-    field public static final int shadowDy = 16843107; // 0x1010163
-    field public static final int shadowRadius = 16843108; // 0x1010164
-    field public static final int shape = 16843162; // 0x101019a
-    field public static final int shareInterpolator = 16843195; // 0x10101bb
-    field @Deprecated public static final int sharedUserId = 16842763; // 0x101000b
-    field @Deprecated public static final int sharedUserLabel = 16843361; // 0x1010261
-    field public static final int shell = 16844180; // 0x1010594
-    field public static final int shortcutDisabledMessage = 16844075; // 0x101052b
-    field public static final int shortcutId = 16844072; // 0x1010528
-    field public static final int shortcutLongLabel = 16844074; // 0x101052a
-    field public static final int shortcutShortLabel = 16844073; // 0x1010529
-    field public static final int shouldDisableView = 16843246; // 0x10101ee
-    field public static final int showAsAction = 16843481; // 0x10102d9
-    field public static final int showDefault = 16843258; // 0x10101fa
-    field public static final int showDividers = 16843561; // 0x1010329
-    field public static final int showForAllUsers = 16844015; // 0x10104ef
-    field public static final int showMetadataInPreview = 16844079; // 0x101052f
-    field @Deprecated public static final int showOnLockScreen = 16843721; // 0x10103c9
-    field public static final int showSilent = 16843259; // 0x10101fb
-    field public static final int showText = 16843949; // 0x10104ad
-    field @Deprecated public static final int showWeekNumber = 16843582; // 0x101033e
-    field public static final int showWhenLocked = 16844137; // 0x1010569
-    field @Deprecated public static final int shownWeekCount = 16843585; // 0x1010341
-    field public static final int shrinkColumns = 16843082; // 0x101014a
-    field @Deprecated public static final int singleLine = 16843101; // 0x101015d
-    field public static final int singleLineTitle = 16844124; // 0x101055c
-    field public static final int singleUser = 16843711; // 0x10103bf
-    field public static final int slideEdge = 16843824; // 0x1010430
-    field public static final int smallIcon = 16843422; // 0x101029e
-    field public static final int smallScreens = 16843396; // 0x1010284
-    field public static final int smoothScrollbar = 16843313; // 0x1010231
-    field public static final int soundEffectsEnabled = 16843285; // 0x1010215
-    field public static final int spacing = 16843027; // 0x1010113
-    field public static final int spinnerDropDownItemStyle = 16842887; // 0x1010087
-    field public static final int spinnerItemStyle = 16842889; // 0x1010089
-    field public static final int spinnerMode = 16843505; // 0x10102f1
-    field public static final int spinnerStyle = 16842881; // 0x1010081
-    field public static final int spinnersShown = 16843595; // 0x101034b
-    field public static final int splitMotionEvents = 16843503; // 0x10102ef
-    field public static final int splitName = 16844105; // 0x1010549
-    field public static final int splitTrack = 16843852; // 0x101044c
-    field public static final int spotShadowAlpha = 16843967; // 0x10104bf
-    field public static final int src = 16843033; // 0x1010119
-    field public static final int ssp = 16843747; // 0x10103e3
-    field public static final int sspPattern = 16843749; // 0x10103e5
-    field public static final int sspPrefix = 16843748; // 0x10103e4
-    field public static final int stackFromBottom = 16843005; // 0x10100fd
-    field public static final int stackViewStyle = 16843838; // 0x101043e
-    field public static final int starStyle = 16842882; // 0x1010082
-    field public static final int start = 16843995; // 0x10104db
-    field public static final int startColor = 16843165; // 0x101019d
-    field public static final int startDelay = 16843746; // 0x10103e2
-    field public static final int startOffset = 16843198; // 0x10101be
-    field public static final int startX = 16844048; // 0x1010510
-    field public static final int startY = 16844049; // 0x1010511
-    field @Deprecated public static final int startYear = 16843132; // 0x101017c
-    field public static final int stateListAnimator = 16843848; // 0x1010448
-    field public static final int stateNotNeeded = 16842774; // 0x1010016
-    field public static final int state_above_anchor = 16842922; // 0x10100aa
-    field public static final int state_accelerated = 16843547; // 0x101031b
-    field public static final int state_activated = 16843518; // 0x10102fe
-    field public static final int state_active = 16842914; // 0x10100a2
-    field public static final int state_checkable = 16842911; // 0x101009f
-    field public static final int state_checked = 16842912; // 0x10100a0
-    field public static final int state_drag_can_accept = 16843624; // 0x1010368
-    field public static final int state_drag_hovered = 16843625; // 0x1010369
-    field public static final int state_empty = 16842921; // 0x10100a9
-    field public static final int state_enabled = 16842910; // 0x101009e
-    field public static final int state_expanded = 16842920; // 0x10100a8
-    field public static final int state_first = 16842916; // 0x10100a4
-    field public static final int state_focused = 16842908; // 0x101009c
-    field public static final int state_hovered = 16843623; // 0x1010367
-    field public static final int state_last = 16842918; // 0x10100a6
-    field @Deprecated public static final int state_long_pressable = 16843324; // 0x101023c
-    field public static final int state_middle = 16842917; // 0x10100a5
-    field public static final int state_multiline = 16843597; // 0x101034d
-    field public static final int state_pressed = 16842919; // 0x10100a7
-    field public static final int state_selected = 16842913; // 0x10100a1
-    field public static final int state_single = 16842915; // 0x10100a3
-    field public static final int state_window_focused = 16842909; // 0x101009d
-    field public static final int staticWallpaperPreview = 16843569; // 0x1010331
-    field public static final int statusBarColor = 16843857; // 0x1010451
-    field public static final int stepSize = 16843078; // 0x1010146
-    field public static final int stopWithTask = 16843626; // 0x101036a
-    field public static final int streamType = 16843273; // 0x1010209
-    field public static final int stretchColumns = 16843081; // 0x1010149
-    field public static final int stretchMode = 16843030; // 0x1010116
-    field public static final int strokeAlpha = 16843979; // 0x10104cb
-    field public static final int strokeColor = 16843782; // 0x1010406
-    field public static final int strokeLineCap = 16843787; // 0x101040b
-    field public static final int strokeLineJoin = 16843788; // 0x101040c
-    field public static final int strokeMiterLimit = 16843789; // 0x101040d
-    field public static final int strokeWidth = 16843783; // 0x1010407
-    field public static final int subMenuArrow = 16844019; // 0x10104f3
-    field public static final int submitBackground = 16843912; // 0x1010488
-    field public static final int subtitle = 16843473; // 0x10102d1
-    field public static final int subtitleTextAppearance = 16843823; // 0x101042f
-    field public static final int subtitleTextColor = 16844004; // 0x10104e4
-    field public static final int subtitleTextStyle = 16843513; // 0x10102f9
-    field public static final int subtypeExtraValue = 16843674; // 0x101039a
-    field public static final int subtypeId = 16843713; // 0x10103c1
-    field public static final int subtypeLocale = 16843673; // 0x1010399
-    field public static final int suggestActionMsg = 16843228; // 0x10101dc
-    field public static final int suggestActionMsgColumn = 16843229; // 0x10101dd
-    field public static final int suggestionRowLayout = 16843910; // 0x1010486
-    field public static final int summary = 16843241; // 0x10101e9
-    field public static final int summaryColumn = 16843426; // 0x10102a2
-    field public static final int summaryOff = 16843248; // 0x10101f0
-    field public static final int summaryOn = 16843247; // 0x10101ef
-    field public static final int supportsAssist = 16844016; // 0x10104f0
-    field public static final int supportsInlineSuggestions = 16844301; // 0x101060d
-    field public static final int supportsLaunchVoiceAssistFromKeyguard = 16844017; // 0x10104f1
-    field public static final int supportsLocalInteraction = 16844047; // 0x101050f
-    field public static final int supportsMultipleDisplays = 16844182; // 0x1010596
-    field public static final int supportsPictureInPicture = 16844023; // 0x10104f7
-    field public static final int supportsRtl = 16843695; // 0x10103af
-    field public static final int supportsSwitchingToNextInputMethod = 16843755; // 0x10103eb
-    field public static final int supportsUploading = 16843419; // 0x101029b
-    field public static final int switchMinWidth = 16843632; // 0x1010370
-    field public static final int switchPadding = 16843633; // 0x1010371
-    field public static final int switchPreferenceStyle = 16843629; // 0x101036d
-    field public static final int switchStyle = 16843839; // 0x101043f
-    field public static final int switchTextAppearance = 16843630; // 0x101036e
-    field public static final int switchTextOff = 16843628; // 0x101036c
-    field public static final int switchTextOn = 16843627; // 0x101036b
-    field public static final int syncable = 16842777; // 0x1010019
-    field public static final int tabStripEnabled = 16843453; // 0x10102bd
-    field public static final int tabStripLeft = 16843451; // 0x10102bb
-    field public static final int tabStripRight = 16843452; // 0x10102bc
-    field public static final int tabWidgetStyle = 16842883; // 0x1010083
-    field public static final int tag = 16842961; // 0x10100d1
-    field public static final int targetActivity = 16843266; // 0x1010202
-    field public static final int targetClass = 16842799; // 0x101002f
-    field @Deprecated public static final int targetDescriptions = 16843680; // 0x10103a0
-    field public static final int targetId = 16843740; // 0x10103dc
-    field public static final int targetName = 16843853; // 0x101044d
-    field public static final int targetPackage = 16842785; // 0x1010021
-    field public static final int targetProcesses = 16844097; // 0x1010541
-    field @Deprecated public static final int targetSandboxVersion = 16844108; // 0x101054c
-    field public static final int targetSdkVersion = 16843376; // 0x1010270
-    field public static final int taskAffinity = 16842770; // 0x1010012
-    field public static final int taskCloseEnterAnimation = 16842942; // 0x10100be
-    field public static final int taskCloseExitAnimation = 16842943; // 0x10100bf
-    field public static final int taskOpenEnterAnimation = 16842940; // 0x10100bc
-    field public static final int taskOpenExitAnimation = 16842941; // 0x10100bd
-    field public static final int taskToBackEnterAnimation = 16842946; // 0x10100c2
-    field public static final int taskToBackExitAnimation = 16842947; // 0x10100c3
-    field public static final int taskToFrontEnterAnimation = 16842944; // 0x10100c0
-    field public static final int taskToFrontExitAnimation = 16842945; // 0x10100c1
-    field public static final int tension = 16843370; // 0x101026a
-    field public static final int testOnly = 16843378; // 0x1010272
-    field public static final int text = 16843087; // 0x101014f
-    field public static final int textAlignment = 16843697; // 0x10103b1
-    field public static final int textAllCaps = 16843660; // 0x101038c
-    field public static final int textAppearance = 16842804; // 0x1010034
-    field public static final int textAppearanceButton = 16843271; // 0x1010207
-    field public static final int textAppearanceInverse = 16842805; // 0x1010035
-    field public static final int textAppearanceLarge = 16842816; // 0x1010040
-    field public static final int textAppearanceLargeInverse = 16842819; // 0x1010043
-    field public static final int textAppearanceLargePopupMenu = 16843521; // 0x1010301
-    field public static final int textAppearanceListItem = 16843678; // 0x101039e
-    field public static final int textAppearanceListItemSecondary = 16843826; // 0x1010432
-    field public static final int textAppearanceListItemSmall = 16843679; // 0x101039f
-    field public static final int textAppearanceMedium = 16842817; // 0x1010041
-    field public static final int textAppearanceMediumInverse = 16842820; // 0x1010044
-    field public static final int textAppearancePopupMenuHeader = 16844034; // 0x1010502
-    field public static final int textAppearanceSearchResultSubtitle = 16843424; // 0x10102a0
-    field public static final int textAppearanceSearchResultTitle = 16843425; // 0x10102a1
-    field public static final int textAppearanceSmall = 16842818; // 0x1010042
-    field public static final int textAppearanceSmallInverse = 16842821; // 0x1010045
-    field public static final int textAppearanceSmallPopupMenu = 16843522; // 0x1010302
-    field public static final int textCheckMark = 16842822; // 0x1010046
-    field public static final int textCheckMarkInverse = 16842823; // 0x1010047
-    field public static final int textColor = 16842904; // 0x1010098
-    field public static final int textColorAlertDialogListItem = 16843526; // 0x1010306
-    field public static final int textColorHighlight = 16842905; // 0x1010099
-    field public static final int textColorHighlightInverse = 16843599; // 0x101034f
-    field public static final int textColorHint = 16842906; // 0x101009a
-    field public static final int textColorHintInverse = 16842815; // 0x101003f
-    field public static final int textColorLink = 16842907; // 0x101009b
-    field public static final int textColorLinkInverse = 16843600; // 0x1010350
-    field public static final int textColorPrimary = 16842806; // 0x1010036
-    field public static final int textColorPrimaryDisableOnly = 16842807; // 0x1010037
-    field public static final int textColorPrimaryInverse = 16842809; // 0x1010039
-    field public static final int textColorPrimaryInverseDisableOnly = 16843403; // 0x101028b
-    field public static final int textColorPrimaryInverseNoDisable = 16842813; // 0x101003d
-    field public static final int textColorPrimaryNoDisable = 16842811; // 0x101003b
-    field public static final int textColorSecondary = 16842808; // 0x1010038
-    field public static final int textColorSecondaryInverse = 16842810; // 0x101003a
-    field public static final int textColorSecondaryInverseNoDisable = 16842814; // 0x101003e
-    field public static final int textColorSecondaryNoDisable = 16842812; // 0x101003c
-    field public static final int textColorTertiary = 16843282; // 0x1010212
-    field public static final int textColorTertiaryInverse = 16843283; // 0x1010213
-    field public static final int textCursorDrawable = 16843618; // 0x1010362
-    field public static final int textDirection = 16843696; // 0x10103b0
-    field public static final int textEditNoPasteWindowLayout = 16843541; // 0x1010315
-    field public static final int textEditPasteWindowLayout = 16843540; // 0x1010314
-    field public static final int textEditSideNoPasteWindowLayout = 16843615; // 0x101035f
-    field public static final int textEditSidePasteWindowLayout = 16843614; // 0x101035e
-    field public static final int textEditSuggestionItemLayout = 16843636; // 0x1010374
-    field public static final int textFilterEnabled = 16843007; // 0x10100ff
-    field public static final int textFontWeight = 16844165; // 0x1010585
-    field public static final int textIsSelectable = 16843542; // 0x1010316
-    field public static final int textLocale = 16844178; // 0x1010592
-    field public static final int textOff = 16843045; // 0x1010125
-    field public static final int textOn = 16843044; // 0x1010124
-    field public static final int textScaleX = 16843089; // 0x1010151
-    field public static final int textSelectHandle = 16843463; // 0x10102c7
-    field public static final int textSelectHandleLeft = 16843461; // 0x10102c5
-    field public static final int textSelectHandleRight = 16843462; // 0x10102c6
-    field public static final int textSelectHandleWindowStyle = 16843464; // 0x10102c8
-    field public static final int textSize = 16842901; // 0x1010095
-    field public static final int textStyle = 16842903; // 0x1010097
-    field public static final int textSuggestionsWindowStyle = 16843635; // 0x1010373
-    field public static final int textViewStyle = 16842884; // 0x1010084
-    field public static final int theme = 16842752; // 0x1010000
-    field public static final int thickness = 16843360; // 0x1010260
-    field public static final int thicknessRatio = 16843164; // 0x101019c
-    field public static final int thumb = 16843074; // 0x1010142
-    field public static final int thumbOffset = 16843075; // 0x1010143
-    field public static final int thumbPosition = 16844005; // 0x10104e5
-    field public static final int thumbTextPadding = 16843634; // 0x1010372
-    field public static final int thumbTint = 16843889; // 0x1010471
-    field public static final int thumbTintMode = 16843890; // 0x1010472
-    field public static final int thumbnail = 16843429; // 0x10102a5
-    field public static final int tickMark = 16844042; // 0x101050a
-    field public static final int tickMarkTint = 16844043; // 0x101050b
-    field public static final int tickMarkTintMode = 16844044; // 0x101050c
-    field public static final int tileMode = 16843265; // 0x1010201
-    field public static final int tileModeX = 16843895; // 0x1010477
-    field public static final int tileModeY = 16843896; // 0x1010478
-    field public static final int timePickerDialogTheme = 16843934; // 0x101049e
-    field public static final int timePickerMode = 16843956; // 0x10104b4
-    field public static final int timePickerStyle = 16843933; // 0x101049d
-    field public static final int timeZone = 16843724; // 0x10103cc
-    field public static final int tint = 16843041; // 0x1010121
-    field public static final int tintMode = 16843771; // 0x10103fb
-    field public static final int title = 16843233; // 0x10101e1
-    field public static final int titleCondensed = 16843234; // 0x10101e2
-    field public static final int titleMargin = 16844024; // 0x10104f8
-    field public static final int titleMarginBottom = 16844028; // 0x10104fc
-    field public static final int titleMarginEnd = 16844026; // 0x10104fa
-    field public static final int titleMarginStart = 16844025; // 0x10104f9
-    field public static final int titleMarginTop = 16844027; // 0x10104fb
-    field public static final int titleTextAppearance = 16843822; // 0x101042e
-    field public static final int titleTextColor = 16844003; // 0x10104e3
-    field public static final int titleTextStyle = 16843512; // 0x10102f8
-    field public static final int toAlpha = 16843211; // 0x10101cb
-    field public static final int toDegrees = 16843188; // 0x10101b4
-    field public static final int toId = 16843849; // 0x1010449
-    field public static final int toScene = 16843742; // 0x10103de
-    field public static final int toXDelta = 16843207; // 0x10101c7
-    field public static final int toXScale = 16843203; // 0x10101c3
-    field public static final int toYDelta = 16843209; // 0x10101c9
-    field public static final int toYScale = 16843205; // 0x10101c5
-    field public static final int toolbarStyle = 16843946; // 0x10104aa
-    field public static final int tooltipText = 16844084; // 0x1010534
-    field public static final int top = 16843182; // 0x10101ae
-    field public static final int topBright = 16842955; // 0x10100cb
-    field public static final int topDark = 16842951; // 0x10100c7
-    field public static final int topLeftRadius = 16843177; // 0x10101a9
-    field public static final int topOffset = 16843352; // 0x1010258
-    field public static final int topRightRadius = 16843178; // 0x10101aa
-    field public static final int touchscreenBlocksFocus = 16843919; // 0x101048f
-    field public static final int track = 16843631; // 0x101036f
-    field public static final int trackTint = 16843993; // 0x10104d9
-    field public static final int trackTintMode = 16843994; // 0x10104da
-    field public static final int transcriptMode = 16843008; // 0x1010100
-    field public static final int transformPivotX = 16843552; // 0x1010320
-    field public static final int transformPivotY = 16843553; // 0x1010321
-    field public static final int transition = 16843743; // 0x10103df
-    field public static final int transitionGroup = 16843777; // 0x1010401
-    field public static final int transitionName = 16843776; // 0x1010400
-    field public static final int transitionOrdering = 16843744; // 0x10103e0
-    field public static final int transitionVisibilityMode = 16843900; // 0x101047c
-    field public static final int translateX = 16843866; // 0x101045a
-    field public static final int translateY = 16843867; // 0x101045b
-    field public static final int translationX = 16843554; // 0x1010322
-    field public static final int translationY = 16843555; // 0x1010323
-    field public static final int translationZ = 16843770; // 0x10103fa
-    field public static final int trimPathEnd = 16843785; // 0x1010409
-    field public static final int trimPathOffset = 16843786; // 0x101040a
-    field public static final int trimPathStart = 16843784; // 0x1010408
-    field public static final int ttcIndex = 16844143; // 0x101056f
-    field public static final int tunerCount = 16844061; // 0x101051d
-    field public static final int turnScreenOn = 16844138; // 0x101056a
-    field public static final int type = 16843169; // 0x10101a1
-    field public static final int typeface = 16842902; // 0x1010096
-    field public static final int uiOptions = 16843672; // 0x1010398
-    field public static final int uncertainGestureColor = 16843382; // 0x1010276
-    field @Deprecated public static final int unfocusedMonthDateColor = 16843588; // 0x1010344
-    field public static final int unselectedAlpha = 16843278; // 0x101020e
-    field public static final int updatePeriodMillis = 16843344; // 0x1010250
-    field public static final int use32bitAbi = 16844053; // 0x1010515
-    field public static final int useAppZygote = 16844183; // 0x1010597
-    field public static final int useDefaultMargins = 16843641; // 0x1010379
-    field public static final int useEmbeddedDex = 16844190; // 0x101059e
-    field public static final int useIntrinsicSizeAsMinimum = 16843536; // 0x1010310
-    field public static final int useLevel = 16843167; // 0x101019f
-    field public static final int userVisible = 16843409; // 0x1010291
-    field public static final int usesCleartextTraffic = 16844012; // 0x10104ec
-    field public static final int value = 16842788; // 0x1010024
-    field public static final int valueFrom = 16843486; // 0x10102de
-    field public static final int valueTo = 16843487; // 0x10102df
-    field public static final int valueType = 16843488; // 0x10102e0
-    field public static final int variablePadding = 16843157; // 0x1010195
-    field public static final int vendor = 16843751; // 0x10103e7
-    field public static final int version = 16844057; // 0x1010519
-    field public static final int versionCode = 16843291; // 0x101021b
-    field public static final int versionCodeMajor = 16844150; // 0x1010576
-    field public static final int versionMajor = 16844151; // 0x1010577
-    field public static final int versionName = 16843292; // 0x101021c
-    field @Deprecated public static final int verticalCorrection = 16843322; // 0x101023a
-    field public static final int verticalDivider = 16843054; // 0x101012e
-    field @Deprecated public static final int verticalGap = 16843328; // 0x1010240
-    field public static final int verticalScrollbarPosition = 16843572; // 0x1010334
-    field public static final int verticalSpacing = 16843029; // 0x1010115
-    field public static final int viewportHeight = 16843779; // 0x1010403
-    field public static final int viewportWidth = 16843778; // 0x1010402
-    field public static final int visibility = 16842972; // 0x10100dc
-    field public static final int visible = 16843156; // 0x1010194
-    field public static final int visibleToInstantApps = 16844081; // 0x1010531
-    field public static final int vmSafeMode = 16843448; // 0x10102b8
-    field public static final int voiceIcon = 16843908; // 0x1010484
-    field public static final int voiceLanguage = 16843349; // 0x1010255
-    field public static final int voiceLanguageModel = 16843347; // 0x1010253
-    field public static final int voiceMaxResults = 16843350; // 0x1010256
-    field public static final int voicePromptText = 16843348; // 0x1010254
-    field public static final int voiceSearchMode = 16843346; // 0x1010252
-    field public static final int wallpaperCloseEnterAnimation = 16843413; // 0x1010295
-    field public static final int wallpaperCloseExitAnimation = 16843414; // 0x1010296
-    field public static final int wallpaperIntraCloseEnterAnimation = 16843417; // 0x1010299
-    field public static final int wallpaperIntraCloseExitAnimation = 16843418; // 0x101029a
-    field public static final int wallpaperIntraOpenEnterAnimation = 16843415; // 0x1010297
-    field public static final int wallpaperIntraOpenExitAnimation = 16843416; // 0x1010298
-    field public static final int wallpaperOpenEnterAnimation = 16843411; // 0x1010293
-    field public static final int wallpaperOpenExitAnimation = 16843412; // 0x1010294
-    field public static final int webTextViewStyle = 16843449; // 0x10102b9
-    field public static final int webViewStyle = 16842885; // 0x1010085
-    field public static final int weekDayTextAppearance = 16843592; // 0x1010348
-    field @Deprecated public static final int weekNumberColor = 16843589; // 0x1010345
-    field @Deprecated public static final int weekSeparatorLineColor = 16843590; // 0x1010346
-    field public static final int weightSum = 16843048; // 0x1010128
-    field public static final int widgetCategory = 16843716; // 0x10103c4
-    field public static final int widgetFeatures = 16844153; // 0x1010579
-    field public static final int widgetLayout = 16843243; // 0x10101eb
-    field public static final int width = 16843097; // 0x1010159
-    field public static final int windowActionBar = 16843469; // 0x10102cd
-    field public static final int windowActionBarOverlay = 16843492; // 0x10102e4
-    field public static final int windowActionModeOverlay = 16843485; // 0x10102dd
-    field public static final int windowActivityTransitions = 16843981; // 0x10104cd
-    field public static final int windowAllowEnterTransitionOverlap = 16843836; // 0x101043c
-    field public static final int windowAllowReturnTransitionOverlap = 16843835; // 0x101043b
-    field public static final int windowAnimationStyle = 16842926; // 0x10100ae
-    field public static final int windowBackground = 16842836; // 0x1010054
-    field public static final int windowBackgroundFallback = 16844035; // 0x1010503
-    field public static final int windowClipToOutline = 16843947; // 0x10104ab
-    field public static final int windowCloseOnTouchOutside = 16843611; // 0x101035b
-    field public static final int windowContentOverlay = 16842841; // 0x1010059
-    field public static final int windowContentTransitionManager = 16843769; // 0x10103f9
-    field public static final int windowContentTransitions = 16843768; // 0x10103f8
-    field public static final int windowDisablePreview = 16843298; // 0x1010222
-    field public static final int windowDrawsSystemBarBackgrounds = 16843856; // 0x1010450
-    field public static final int windowElevation = 16843920; // 0x1010490
-    field public static final int windowEnableSplitTouch = 16843543; // 0x1010317
-    field public static final int windowEnterAnimation = 16842932; // 0x10100b4
-    field public static final int windowEnterTransition = 16843831; // 0x1010437
-    field public static final int windowExitAnimation = 16842933; // 0x10100b5
-    field public static final int windowExitTransition = 16843832; // 0x1010438
-    field public static final int windowFrame = 16842837; // 0x1010055
-    field public static final int windowFullscreen = 16843277; // 0x101020d
-    field public static final int windowHideAnimation = 16842935; // 0x10100b7
-    field public static final int windowIsFloating = 16842839; // 0x1010057
-    field public static final int windowIsTranslucent = 16842840; // 0x1010058
-    field public static final int windowLayoutInDisplayCutoutMode = 16844166; // 0x1010586
-    field public static final int windowLightNavigationBar = 16844140; // 0x101056c
-    field public static final int windowLightStatusBar = 16844000; // 0x10104e0
-    field public static final int windowMinWidthMajor = 16843606; // 0x1010356
-    field public static final int windowMinWidthMinor = 16843607; // 0x1010357
-    field public static final int windowNoDisplay = 16843294; // 0x101021e
-    field public static final int windowNoTitle = 16842838; // 0x1010056
-    field @Deprecated public static final int windowOverscan = 16843727; // 0x10103cf
-    field public static final int windowReenterTransition = 16843951; // 0x10104af
-    field public static final int windowReturnTransition = 16843950; // 0x10104ae
-    field public static final int windowSharedElementEnterTransition = 16843833; // 0x1010439
-    field public static final int windowSharedElementExitTransition = 16843834; // 0x101043a
-    field public static final int windowSharedElementReenterTransition = 16843953; // 0x10104b1
-    field public static final int windowSharedElementReturnTransition = 16843952; // 0x10104b0
-    field public static final int windowSharedElementsUseOverlay = 16843963; // 0x10104bb
-    field public static final int windowShowAnimation = 16842934; // 0x10100b6
-    field public static final int windowShowWallpaper = 16843410; // 0x1010292
-    field public static final int windowSoftInputMode = 16843307; // 0x101022b
-    field public static final int windowSplashscreenContent = 16844132; // 0x1010564
-    field @Deprecated public static final int windowSwipeToDismiss = 16843763; // 0x10103f3
-    field public static final int windowTitleBackgroundStyle = 16842844; // 0x101005c
-    field public static final int windowTitleSize = 16842842; // 0x101005a
-    field public static final int windowTitleStyle = 16842843; // 0x101005b
-    field public static final int windowTransitionBackgroundFadeDuration = 16843873; // 0x1010461
-    field public static final int windowTranslucentNavigation = 16843760; // 0x10103f0
-    field public static final int windowTranslucentStatus = 16843759; // 0x10103ef
-    field public static final int writePermission = 16842760; // 0x1010008
-    field public static final int x = 16842924; // 0x10100ac
-    field public static final int xlargeScreens = 16843455; // 0x10102bf
-    field public static final int y = 16842925; // 0x10100ad
-    field @Deprecated public static final int yearListItemTextAppearance = 16843929; // 0x1010499
-    field @Deprecated public static final int yearListSelectorColor = 16843930; // 0x101049a
-    field public static final int yesNoPreferenceStyle = 16842896; // 0x1010090
-    field public static final int zAdjustment = 16843201; // 0x10101c1
-    field public static final int zygotePreloadName = 16844189; // 0x101059d
-  }
-
-  public static final class R.bool {
-    ctor public R.bool();
-  }
-
-  public static final class R.color {
-    ctor public R.color();
-    field public static final int background_dark = 17170446; // 0x106000e
-    field public static final int background_light = 17170447; // 0x106000f
-    field public static final int black = 17170444; // 0x106000c
-    field public static final int darker_gray = 17170432; // 0x1060000
-    field public static final int holo_blue_bright = 17170459; // 0x106001b
-    field public static final int holo_blue_dark = 17170451; // 0x1060013
-    field public static final int holo_blue_light = 17170450; // 0x1060012
-    field public static final int holo_green_dark = 17170453; // 0x1060015
-    field public static final int holo_green_light = 17170452; // 0x1060014
-    field public static final int holo_orange_dark = 17170457; // 0x1060019
-    field public static final int holo_orange_light = 17170456; // 0x1060018
-    field public static final int holo_purple = 17170458; // 0x106001a
-    field public static final int holo_red_dark = 17170455; // 0x1060017
-    field public static final int holo_red_light = 17170454; // 0x1060016
-    field @Deprecated public static final int primary_text_dark = 17170433; // 0x1060001
-    field @Deprecated public static final int primary_text_dark_nodisable = 17170434; // 0x1060002
-    field @Deprecated public static final int primary_text_light = 17170435; // 0x1060003
-    field @Deprecated public static final int primary_text_light_nodisable = 17170436; // 0x1060004
-    field @Deprecated public static final int secondary_text_dark = 17170437; // 0x1060005
-    field @Deprecated public static final int secondary_text_dark_nodisable = 17170438; // 0x1060006
-    field @Deprecated public static final int secondary_text_light = 17170439; // 0x1060007
-    field @Deprecated public static final int secondary_text_light_nodisable = 17170440; // 0x1060008
-    field public static final int tab_indicator_text = 17170441; // 0x1060009
-    field @Deprecated public static final int tertiary_text_dark = 17170448; // 0x1060010
-    field @Deprecated public static final int tertiary_text_light = 17170449; // 0x1060011
-    field public static final int transparent = 17170445; // 0x106000d
-    field public static final int white = 17170443; // 0x106000b
-    field public static final int widget_edittext_dark = 17170442; // 0x106000a
-  }
-
-  public static final class R.dimen {
-    ctor public R.dimen();
-    field public static final int app_icon_size = 17104896; // 0x1050000
-    field public static final int dialog_min_width_major = 17104899; // 0x1050003
-    field public static final int dialog_min_width_minor = 17104900; // 0x1050004
-    field public static final int notification_large_icon_height = 17104902; // 0x1050006
-    field public static final int notification_large_icon_width = 17104901; // 0x1050005
-    field public static final int thumbnail_height = 17104897; // 0x1050001
-    field public static final int thumbnail_width = 17104898; // 0x1050002
-  }
-
-  public static final class R.drawable {
-    ctor public R.drawable();
-    field public static final int alert_dark_frame = 17301504; // 0x1080000
-    field public static final int alert_light_frame = 17301505; // 0x1080001
-    field public static final int arrow_down_float = 17301506; // 0x1080002
-    field public static final int arrow_up_float = 17301507; // 0x1080003
-    field public static final int bottom_bar = 17301658; // 0x108009a
-    field public static final int btn_default = 17301508; // 0x1080004
-    field public static final int btn_default_small = 17301509; // 0x1080005
-    field public static final int btn_dialog = 17301527; // 0x1080017
-    field public static final int btn_dropdown = 17301510; // 0x1080006
-    field public static final int btn_minus = 17301511; // 0x1080007
-    field public static final int btn_plus = 17301512; // 0x1080008
-    field public static final int btn_radio = 17301513; // 0x1080009
-    field public static final int btn_star = 17301514; // 0x108000a
-    field public static final int btn_star_big_off = 17301515; // 0x108000b
-    field public static final int btn_star_big_on = 17301516; // 0x108000c
-    field public static final int button_onoff_indicator_off = 17301518; // 0x108000e
-    field public static final int button_onoff_indicator_on = 17301517; // 0x108000d
-    field public static final int checkbox_off_background = 17301519; // 0x108000f
-    field public static final int checkbox_on_background = 17301520; // 0x1080010
-    field public static final int dark_header = 17301669; // 0x10800a5
-    field public static final int dialog_frame = 17301521; // 0x1080011
-    field public static final int dialog_holo_dark_frame = 17301682; // 0x10800b2
-    field public static final int dialog_holo_light_frame = 17301683; // 0x10800b3
-    field public static final int divider_horizontal_bright = 17301522; // 0x1080012
-    field public static final int divider_horizontal_dark = 17301524; // 0x1080014
-    field public static final int divider_horizontal_dim_dark = 17301525; // 0x1080015
-    field public static final int divider_horizontal_textfield = 17301523; // 0x1080013
-    field public static final int edit_text = 17301526; // 0x1080016
-    field public static final int editbox_background = 17301528; // 0x1080018
-    field public static final int editbox_background_normal = 17301529; // 0x1080019
-    field public static final int editbox_dropdown_dark_frame = 17301530; // 0x108001a
-    field public static final int editbox_dropdown_light_frame = 17301531; // 0x108001b
-    field public static final int gallery_thumb = 17301532; // 0x108001c
-    field public static final int ic_btn_speak_now = 17301668; // 0x10800a4
-    field public static final int ic_delete = 17301533; // 0x108001d
-    field public static final int ic_dialog_alert = 17301543; // 0x1080027
-    field public static final int ic_dialog_dialer = 17301544; // 0x1080028
-    field public static final int ic_dialog_email = 17301545; // 0x1080029
-    field public static final int ic_dialog_info = 17301659; // 0x108009b
-    field public static final int ic_dialog_map = 17301546; // 0x108002a
-    field public static final int ic_input_add = 17301547; // 0x108002b
-    field public static final int ic_input_delete = 17301548; // 0x108002c
-    field public static final int ic_input_get = 17301549; // 0x108002d
-    field public static final int ic_lock_idle_alarm = 17301550; // 0x108002e
-    field public static final int ic_lock_idle_charging = 17301534; // 0x108001e
-    field public static final int ic_lock_idle_lock = 17301535; // 0x108001f
-    field public static final int ic_lock_idle_low_battery = 17301536; // 0x1080020
-    field public static final int ic_lock_lock = 17301551; // 0x108002f
-    field public static final int ic_lock_power_off = 17301552; // 0x1080030
-    field public static final int ic_lock_silent_mode = 17301553; // 0x1080031
-    field public static final int ic_lock_silent_mode_off = 17301554; // 0x1080032
-    field public static final int ic_media_ff = 17301537; // 0x1080021
-    field public static final int ic_media_next = 17301538; // 0x1080022
-    field public static final int ic_media_pause = 17301539; // 0x1080023
-    field public static final int ic_media_play = 17301540; // 0x1080024
-    field public static final int ic_media_previous = 17301541; // 0x1080025
-    field public static final int ic_media_rew = 17301542; // 0x1080026
-    field public static final int ic_menu_add = 17301555; // 0x1080033
-    field public static final int ic_menu_agenda = 17301556; // 0x1080034
-    field public static final int ic_menu_always_landscape_portrait = 17301557; // 0x1080035
-    field public static final int ic_menu_call = 17301558; // 0x1080036
-    field public static final int ic_menu_camera = 17301559; // 0x1080037
-    field public static final int ic_menu_close_clear_cancel = 17301560; // 0x1080038
-    field public static final int ic_menu_compass = 17301561; // 0x1080039
-    field public static final int ic_menu_crop = 17301562; // 0x108003a
-    field public static final int ic_menu_day = 17301563; // 0x108003b
-    field public static final int ic_menu_delete = 17301564; // 0x108003c
-    field public static final int ic_menu_directions = 17301565; // 0x108003d
-    field public static final int ic_menu_edit = 17301566; // 0x108003e
-    field public static final int ic_menu_gallery = 17301567; // 0x108003f
-    field public static final int ic_menu_help = 17301568; // 0x1080040
-    field public static final int ic_menu_info_details = 17301569; // 0x1080041
-    field public static final int ic_menu_manage = 17301570; // 0x1080042
-    field public static final int ic_menu_mapmode = 17301571; // 0x1080043
-    field public static final int ic_menu_month = 17301572; // 0x1080044
-    field public static final int ic_menu_more = 17301573; // 0x1080045
-    field public static final int ic_menu_my_calendar = 17301574; // 0x1080046
-    field public static final int ic_menu_mylocation = 17301575; // 0x1080047
-    field public static final int ic_menu_myplaces = 17301576; // 0x1080048
-    field public static final int ic_menu_preferences = 17301577; // 0x1080049
-    field public static final int ic_menu_recent_history = 17301578; // 0x108004a
-    field public static final int ic_menu_report_image = 17301579; // 0x108004b
-    field public static final int ic_menu_revert = 17301580; // 0x108004c
-    field public static final int ic_menu_rotate = 17301581; // 0x108004d
-    field public static final int ic_menu_save = 17301582; // 0x108004e
-    field public static final int ic_menu_search = 17301583; // 0x108004f
-    field public static final int ic_menu_send = 17301584; // 0x1080050
-    field public static final int ic_menu_set_as = 17301585; // 0x1080051
-    field public static final int ic_menu_share = 17301586; // 0x1080052
-    field public static final int ic_menu_slideshow = 17301587; // 0x1080053
-    field public static final int ic_menu_sort_alphabetically = 17301660; // 0x108009c
-    field public static final int ic_menu_sort_by_size = 17301661; // 0x108009d
-    field public static final int ic_menu_today = 17301588; // 0x1080054
-    field public static final int ic_menu_upload = 17301589; // 0x1080055
-    field public static final int ic_menu_upload_you_tube = 17301590; // 0x1080056
-    field public static final int ic_menu_view = 17301591; // 0x1080057
-    field public static final int ic_menu_week = 17301592; // 0x1080058
-    field public static final int ic_menu_zoom = 17301593; // 0x1080059
-    field public static final int ic_notification_clear_all = 17301594; // 0x108005a
-    field public static final int ic_notification_overlay = 17301595; // 0x108005b
-    field public static final int ic_partial_secure = 17301596; // 0x108005c
-    field public static final int ic_popup_disk_full = 17301597; // 0x108005d
-    field public static final int ic_popup_reminder = 17301598; // 0x108005e
-    field public static final int ic_popup_sync = 17301599; // 0x108005f
-    field public static final int ic_search_category_default = 17301600; // 0x1080060
-    field public static final int ic_secure = 17301601; // 0x1080061
-    field public static final int list_selector_background = 17301602; // 0x1080062
-    field public static final int menu_frame = 17301603; // 0x1080063
-    field public static final int menu_full_frame = 17301604; // 0x1080064
-    field public static final int menuitem_background = 17301605; // 0x1080065
-    field public static final int picture_frame = 17301606; // 0x1080066
-    field public static final int presence_audio_away = 17301679; // 0x10800af
-    field public static final int presence_audio_busy = 17301680; // 0x10800b0
-    field public static final int presence_audio_online = 17301681; // 0x10800b1
-    field public static final int presence_away = 17301607; // 0x1080067
-    field public static final int presence_busy = 17301608; // 0x1080068
-    field public static final int presence_invisible = 17301609; // 0x1080069
-    field public static final int presence_offline = 17301610; // 0x108006a
-    field public static final int presence_online = 17301611; // 0x108006b
-    field public static final int presence_video_away = 17301676; // 0x10800ac
-    field public static final int presence_video_busy = 17301677; // 0x10800ad
-    field public static final int presence_video_online = 17301678; // 0x10800ae
-    field public static final int progress_horizontal = 17301612; // 0x108006c
-    field public static final int progress_indeterminate_horizontal = 17301613; // 0x108006d
-    field public static final int radiobutton_off_background = 17301614; // 0x108006e
-    field public static final int radiobutton_on_background = 17301615; // 0x108006f
-    field public static final int screen_background_dark = 17301656; // 0x1080098
-    field public static final int screen_background_dark_transparent = 17301673; // 0x10800a9
-    field public static final int screen_background_light = 17301657; // 0x1080099
-    field public static final int screen_background_light_transparent = 17301674; // 0x10800aa
-    field public static final int spinner_background = 17301616; // 0x1080070
-    field public static final int spinner_dropdown_background = 17301617; // 0x1080071
-    field public static final int star_big_off = 17301619; // 0x1080073
-    field public static final int star_big_on = 17301618; // 0x1080072
-    field public static final int star_off = 17301621; // 0x1080075
-    field public static final int star_on = 17301620; // 0x1080074
-    field public static final int stat_notify_call_mute = 17301622; // 0x1080076
-    field public static final int stat_notify_chat = 17301623; // 0x1080077
-    field public static final int stat_notify_error = 17301624; // 0x1080078
-    field public static final int stat_notify_missed_call = 17301631; // 0x108007f
-    field public static final int stat_notify_more = 17301625; // 0x1080079
-    field public static final int stat_notify_sdcard = 17301626; // 0x108007a
-    field public static final int stat_notify_sdcard_prepare = 17301675; // 0x10800ab
-    field public static final int stat_notify_sdcard_usb = 17301627; // 0x108007b
-    field public static final int stat_notify_sync = 17301628; // 0x108007c
-    field public static final int stat_notify_sync_noanim = 17301629; // 0x108007d
-    field public static final int stat_notify_voicemail = 17301630; // 0x108007e
-    field public static final int stat_sys_data_bluetooth = 17301632; // 0x1080080
-    field public static final int stat_sys_download = 17301633; // 0x1080081
-    field public static final int stat_sys_download_done = 17301634; // 0x1080082
-    field public static final int stat_sys_headset = 17301635; // 0x1080083
-    field @Deprecated public static final int stat_sys_phone_call = 17301636; // 0x1080084
-    field @Deprecated public static final int stat_sys_phone_call_forward = 17301637; // 0x1080085
-    field @Deprecated public static final int stat_sys_phone_call_on_hold = 17301638; // 0x1080086
-    field public static final int stat_sys_speakerphone = 17301639; // 0x1080087
-    field public static final int stat_sys_upload = 17301640; // 0x1080088
-    field public static final int stat_sys_upload_done = 17301641; // 0x1080089
-    field @Deprecated public static final int stat_sys_vp_phone_call = 17301671; // 0x10800a7
-    field @Deprecated public static final int stat_sys_vp_phone_call_on_hold = 17301672; // 0x10800a8
-    field public static final int stat_sys_warning = 17301642; // 0x108008a
-    field public static final int status_bar_item_app_background = 17301643; // 0x108008b
-    field public static final int status_bar_item_background = 17301644; // 0x108008c
-    field public static final int sym_action_call = 17301645; // 0x108008d
-    field public static final int sym_action_chat = 17301646; // 0x108008e
-    field public static final int sym_action_email = 17301647; // 0x108008f
-    field public static final int sym_call_incoming = 17301648; // 0x1080090
-    field public static final int sym_call_missed = 17301649; // 0x1080091
-    field public static final int sym_call_outgoing = 17301650; // 0x1080092
-    field public static final int sym_contact_card = 17301652; // 0x1080094
-    field public static final int sym_def_app_icon = 17301651; // 0x1080093
-    field public static final int title_bar = 17301653; // 0x1080095
-    field public static final int title_bar_tall = 17301670; // 0x10800a6
-    field public static final int toast_frame = 17301654; // 0x1080096
-    field public static final int zoom_plate = 17301655; // 0x1080097
-  }
-
-  public static final class R.fraction {
-    ctor public R.fraction();
-  }
-
-  public static final class R.id {
-    ctor public R.id();
-    field public static final int accessibilityActionContextClick = 16908348; // 0x102003c
-    field public static final int accessibilityActionHideTooltip = 16908357; // 0x1020045
-    field public static final int accessibilityActionImeEnter = 16908372; // 0x1020054
-    field public static final int accessibilityActionMoveWindow = 16908354; // 0x1020042
-    field public static final int accessibilityActionPageDown = 16908359; // 0x1020047
-    field public static final int accessibilityActionPageLeft = 16908360; // 0x1020048
-    field public static final int accessibilityActionPageRight = 16908361; // 0x1020049
-    field public static final int accessibilityActionPageUp = 16908358; // 0x1020046
-    field public static final int accessibilityActionPressAndHold = 16908362; // 0x102004a
-    field public static final int accessibilityActionScrollDown = 16908346; // 0x102003a
-    field public static final int accessibilityActionScrollLeft = 16908345; // 0x1020039
-    field public static final int accessibilityActionScrollRight = 16908347; // 0x102003b
-    field public static final int accessibilityActionScrollToPosition = 16908343; // 0x1020037
-    field public static final int accessibilityActionScrollUp = 16908344; // 0x1020038
-    field public static final int accessibilityActionSetProgress = 16908349; // 0x102003d
-    field public static final int accessibilityActionShowOnScreen = 16908342; // 0x1020036
-    field public static final int accessibilityActionShowTooltip = 16908356; // 0x1020044
-    field public static final int accessibilitySystemActionBack = 16908363; // 0x102004b
-    field public static final int accessibilitySystemActionHome = 16908364; // 0x102004c
-    field public static final int accessibilitySystemActionLockScreen = 16908370; // 0x1020052
-    field public static final int accessibilitySystemActionNotifications = 16908366; // 0x102004e
-    field public static final int accessibilitySystemActionPowerDialog = 16908368; // 0x1020050
-    field public static final int accessibilitySystemActionQuickSettings = 16908367; // 0x102004f
-    field public static final int accessibilitySystemActionRecents = 16908365; // 0x102004d
-    field public static final int accessibilitySystemActionTakeScreenshot = 16908371; // 0x1020053
-    field public static final int accessibilitySystemActionToggleSplitScreen = 16908369; // 0x1020051
-    field public static final int addToDictionary = 16908330; // 0x102002a
-    field public static final int autofill = 16908355; // 0x1020043
-    field public static final int background = 16908288; // 0x1020000
-    field public static final int button1 = 16908313; // 0x1020019
-    field public static final int button2 = 16908314; // 0x102001a
-    field public static final int button3 = 16908315; // 0x102001b
-    field public static final int candidatesArea = 16908317; // 0x102001d
-    field public static final int checkbox = 16908289; // 0x1020001
-    field public static final int closeButton = 16908327; // 0x1020027
-    field public static final int content = 16908290; // 0x1020002
-    field public static final int copy = 16908321; // 0x1020021
-    field public static final int copyUrl = 16908323; // 0x1020023
-    field public static final int custom = 16908331; // 0x102002b
-    field public static final int cut = 16908320; // 0x1020020
-    field public static final int edit = 16908291; // 0x1020003
-    field public static final int empty = 16908292; // 0x1020004
-    field public static final int extractArea = 16908316; // 0x102001c
-    field public static final int hint = 16908293; // 0x1020005
-    field public static final int home = 16908332; // 0x102002c
-    field public static final int icon = 16908294; // 0x1020006
-    field public static final int icon1 = 16908295; // 0x1020007
-    field public static final int icon2 = 16908296; // 0x1020008
-    field public static final int icon_frame = 16908350; // 0x102003e
-    field public static final int input = 16908297; // 0x1020009
-    field public static final int inputArea = 16908318; // 0x102001e
-    field public static final int inputExtractEditText = 16908325; // 0x1020025
-    field @Deprecated public static final int keyboardView = 16908326; // 0x1020026
-    field public static final int list = 16908298; // 0x102000a
-    field public static final int list_container = 16908351; // 0x102003f
-    field public static final int mask = 16908334; // 0x102002e
-    field public static final int message = 16908299; // 0x102000b
-    field public static final int navigationBarBackground = 16908336; // 0x1020030
-    field public static final int paste = 16908322; // 0x1020022
-    field public static final int pasteAsPlainText = 16908337; // 0x1020031
-    field public static final int primary = 16908300; // 0x102000c
-    field public static final int progress = 16908301; // 0x102000d
-    field public static final int redo = 16908339; // 0x1020033
-    field public static final int replaceText = 16908340; // 0x1020034
-    field public static final int secondaryProgress = 16908303; // 0x102000f
-    field public static final int selectAll = 16908319; // 0x102001f
-    field public static final int selectTextMode = 16908333; // 0x102002d
-    field public static final int selectedIcon = 16908302; // 0x102000e
-    field public static final int shareText = 16908341; // 0x1020035
-    field public static final int startSelectingText = 16908328; // 0x1020028
-    field public static final int statusBarBackground = 16908335; // 0x102002f
-    field public static final int stopSelectingText = 16908329; // 0x1020029
-    field public static final int summary = 16908304; // 0x1020010
-    field public static final int switchInputMethod = 16908324; // 0x1020024
-    field public static final int switch_widget = 16908352; // 0x1020040
-    field public static final int tabcontent = 16908305; // 0x1020011
-    field public static final int tabhost = 16908306; // 0x1020012
-    field public static final int tabs = 16908307; // 0x1020013
-    field public static final int text1 = 16908308; // 0x1020014
-    field public static final int text2 = 16908309; // 0x1020015
-    field public static final int textAssist = 16908353; // 0x1020041
-    field public static final int title = 16908310; // 0x1020016
-    field public static final int toggle = 16908311; // 0x1020017
-    field public static final int undo = 16908338; // 0x1020032
-    field public static final int widget_frame = 16908312; // 0x1020018
-  }
-
-  public static final class R.integer {
-    ctor public R.integer();
-    field public static final int config_longAnimTime = 17694722; // 0x10e0002
-    field public static final int config_mediumAnimTime = 17694721; // 0x10e0001
-    field public static final int config_shortAnimTime = 17694720; // 0x10e0000
-    field public static final int status_bar_notification_info_maxnum = 17694723; // 0x10e0003
-  }
-
-  public static final class R.interpolator {
-    ctor public R.interpolator();
-    field public static final int accelerate_cubic = 17563650; // 0x10c0002
-    field public static final int accelerate_decelerate = 17563654; // 0x10c0006
-    field public static final int accelerate_quad = 17563648; // 0x10c0000
-    field public static final int accelerate_quint = 17563652; // 0x10c0004
-    field public static final int anticipate = 17563655; // 0x10c0007
-    field public static final int anticipate_overshoot = 17563657; // 0x10c0009
-    field public static final int bounce = 17563658; // 0x10c000a
-    field public static final int cycle = 17563660; // 0x10c000c
-    field public static final int decelerate_cubic = 17563651; // 0x10c0003
-    field public static final int decelerate_quad = 17563649; // 0x10c0001
-    field public static final int decelerate_quint = 17563653; // 0x10c0005
-    field public static final int fast_out_extra_slow_in = 17563674; // 0x10c001a
-    field public static final int fast_out_linear_in = 17563663; // 0x10c000f
-    field public static final int fast_out_slow_in = 17563661; // 0x10c000d
-    field public static final int linear = 17563659; // 0x10c000b
-    field public static final int linear_out_slow_in = 17563662; // 0x10c000e
-    field public static final int overshoot = 17563656; // 0x10c0008
-  }
-
-  public static final class R.layout {
-    ctor public R.layout();
-    field public static final int activity_list_item = 17367040; // 0x1090000
-    field public static final int browser_link_context_header = 17367054; // 0x109000e
-    field public static final int expandable_list_content = 17367041; // 0x1090001
-    field public static final int list_content = 17367060; // 0x1090014
-    field public static final int preference_category = 17367042; // 0x1090002
-    field public static final int select_dialog_item = 17367057; // 0x1090011
-    field public static final int select_dialog_multichoice = 17367059; // 0x1090013
-    field public static final int select_dialog_singlechoice = 17367058; // 0x1090012
-    field public static final int simple_dropdown_item_1line = 17367050; // 0x109000a
-    field public static final int simple_expandable_list_item_1 = 17367046; // 0x1090006
-    field public static final int simple_expandable_list_item_2 = 17367047; // 0x1090007
-    field public static final int simple_gallery_item = 17367051; // 0x109000b
-    field public static final int simple_list_item_1 = 17367043; // 0x1090003
-    field public static final int simple_list_item_2 = 17367044; // 0x1090004
-    field public static final int simple_list_item_activated_1 = 17367062; // 0x1090016
-    field public static final int simple_list_item_activated_2 = 17367063; // 0x1090017
-    field public static final int simple_list_item_checked = 17367045; // 0x1090005
-    field public static final int simple_list_item_multiple_choice = 17367056; // 0x1090010
-    field public static final int simple_list_item_single_choice = 17367055; // 0x109000f
-    field public static final int simple_selectable_list_item = 17367061; // 0x1090015
-    field public static final int simple_spinner_dropdown_item = 17367049; // 0x1090009
-    field public static final int simple_spinner_item = 17367048; // 0x1090008
-    field public static final int test_list_item = 17367052; // 0x109000c
-    field public static final int two_line_list_item = 17367053; // 0x109000d
-  }
-
-  public static final class R.menu {
-    ctor public R.menu();
-  }
-
-  public static final class R.mipmap {
-    ctor public R.mipmap();
-    field public static final int sym_def_app_icon = 17629184; // 0x10d0000
-  }
-
-  public static final class R.plurals {
-    ctor public R.plurals();
-  }
-
-  public static final class R.raw {
-    ctor public R.raw();
-  }
-
-  public static final class R.string {
-    ctor public R.string();
-    field public static final int VideoView_error_button = 17039376; // 0x1040010
-    field public static final int VideoView_error_text_invalid_progressive_playback = 17039381; // 0x1040015
-    field public static final int VideoView_error_text_unknown = 17039377; // 0x1040011
-    field public static final int VideoView_error_title = 17039378; // 0x1040012
-    field public static final int autofill = 17039386; // 0x104001a
-    field public static final int cancel = 17039360; // 0x1040000
-    field public static final int copy = 17039361; // 0x1040001
-    field public static final int copyUrl = 17039362; // 0x1040002
-    field public static final int cut = 17039363; // 0x1040003
-    field public static final int defaultMsisdnAlphaTag = 17039365; // 0x1040005
-    field public static final int defaultVoiceMailAlphaTag = 17039364; // 0x1040004
-    field public static final int dialog_alert_title = 17039380; // 0x1040014
-    field public static final int emptyPhoneNumber = 17039366; // 0x1040006
-    field public static final int fingerprint_icon_content_description = 17039384; // 0x1040018
-    field public static final int httpErrorBadUrl = 17039367; // 0x1040007
-    field public static final int httpErrorUnsupportedScheme = 17039368; // 0x1040008
-    field @Deprecated public static final int no = 17039369; // 0x1040009
-    field public static final int ok = 17039370; // 0x104000a
-    field public static final int paste = 17039371; // 0x104000b
-    field public static final int paste_as_plain_text = 17039385; // 0x1040019
-    field public static final int search_go = 17039372; // 0x104000c
-    field public static final int selectAll = 17039373; // 0x104000d
-    field public static final int selectTextMode = 17039382; // 0x1040016
-    field public static final int status_bar_notification_info_overflow = 17039383; // 0x1040017
-    field public static final int unknownName = 17039374; // 0x104000e
-    field public static final int untitled = 17039375; // 0x104000f
-    field @Deprecated public static final int yes = 17039379; // 0x1040013
-  }
-
-  public static final class R.style {
-    ctor public R.style();
-    field public static final int Animation = 16973824; // 0x1030000
-    field public static final int Animation_Activity = 16973825; // 0x1030001
-    field public static final int Animation_Dialog = 16973826; // 0x1030002
-    field public static final int Animation_InputMethod = 16973910; // 0x1030056
-    field public static final int Animation_Toast = 16973828; // 0x1030004
-    field public static final int Animation_Translucent = 16973827; // 0x1030003
-    field public static final int DeviceDefault_ButtonBar = 16974287; // 0x10301cf
-    field public static final int DeviceDefault_ButtonBar_AlertDialog = 16974288; // 0x10301d0
-    field public static final int DeviceDefault_Light_ButtonBar = 16974290; // 0x10301d2
-    field public static final int DeviceDefault_Light_ButtonBar_AlertDialog = 16974291; // 0x10301d3
-    field public static final int DeviceDefault_Light_SegmentedButton = 16974292; // 0x10301d4
-    field public static final int DeviceDefault_SegmentedButton = 16974289; // 0x10301d1
-    field public static final int Holo_ButtonBar = 16974053; // 0x10300e5
-    field public static final int Holo_ButtonBar_AlertDialog = 16974055; // 0x10300e7
-    field public static final int Holo_Light_ButtonBar = 16974054; // 0x10300e6
-    field public static final int Holo_Light_ButtonBar_AlertDialog = 16974056; // 0x10300e8
-    field public static final int Holo_Light_SegmentedButton = 16974058; // 0x10300ea
-    field public static final int Holo_SegmentedButton = 16974057; // 0x10300e9
-    field public static final int MediaButton = 16973879; // 0x1030037
-    field public static final int MediaButton_Ffwd = 16973883; // 0x103003b
-    field public static final int MediaButton_Next = 16973881; // 0x1030039
-    field public static final int MediaButton_Pause = 16973885; // 0x103003d
-    field public static final int MediaButton_Play = 16973882; // 0x103003a
-    field public static final int MediaButton_Previous = 16973880; // 0x1030038
-    field public static final int MediaButton_Rew = 16973884; // 0x103003c
-    field public static final int TextAppearance = 16973886; // 0x103003e
-    field public static final int TextAppearance_DeviceDefault = 16974253; // 0x10301ad
-    field public static final int TextAppearance_DeviceDefault_DialogWindowTitle = 16974264; // 0x10301b8
-    field public static final int TextAppearance_DeviceDefault_Inverse = 16974254; // 0x10301ae
-    field public static final int TextAppearance_DeviceDefault_Large = 16974255; // 0x10301af
-    field public static final int TextAppearance_DeviceDefault_Large_Inverse = 16974256; // 0x10301b0
-    field public static final int TextAppearance_DeviceDefault_Medium = 16974257; // 0x10301b1
-    field public static final int TextAppearance_DeviceDefault_Medium_Inverse = 16974258; // 0x10301b2
-    field public static final int TextAppearance_DeviceDefault_SearchResult_Subtitle = 16974262; // 0x10301b6
-    field public static final int TextAppearance_DeviceDefault_SearchResult_Title = 16974261; // 0x10301b5
-    field public static final int TextAppearance_DeviceDefault_Small = 16974259; // 0x10301b3
-    field public static final int TextAppearance_DeviceDefault_Small_Inverse = 16974260; // 0x10301b4
-    field public static final int TextAppearance_DeviceDefault_Widget = 16974265; // 0x10301b9
-    field public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Menu = 16974286; // 0x10301ce
-    field public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Subtitle = 16974279; // 0x10301c7
-    field @Deprecated public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Subtitle_Inverse = 16974283; // 0x10301cb
-    field public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Title = 16974278; // 0x10301c6
-    field @Deprecated public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Title_Inverse = 16974282; // 0x10301ca
-    field public static final int TextAppearance_DeviceDefault_Widget_ActionMode_Subtitle = 16974281; // 0x10301c9
-    field @Deprecated public static final int TextAppearance_DeviceDefault_Widget_ActionMode_Subtitle_Inverse = 16974285; // 0x10301cd
-    field public static final int TextAppearance_DeviceDefault_Widget_ActionMode_Title = 16974280; // 0x10301c8
-    field @Deprecated public static final int TextAppearance_DeviceDefault_Widget_ActionMode_Title_Inverse = 16974284; // 0x10301cc
-    field public static final int TextAppearance_DeviceDefault_Widget_Button = 16974266; // 0x10301ba
-    field public static final int TextAppearance_DeviceDefault_Widget_DropDownHint = 16974271; // 0x10301bf
-    field public static final int TextAppearance_DeviceDefault_Widget_DropDownItem = 16974272; // 0x10301c0
-    field public static final int TextAppearance_DeviceDefault_Widget_EditText = 16974274; // 0x10301c2
-    field public static final int TextAppearance_DeviceDefault_Widget_IconMenu_Item = 16974267; // 0x10301bb
-    field public static final int TextAppearance_DeviceDefault_Widget_PopupMenu = 16974275; // 0x10301c3
-    field public static final int TextAppearance_DeviceDefault_Widget_PopupMenu_Large = 16974276; // 0x10301c4
-    field public static final int TextAppearance_DeviceDefault_Widget_PopupMenu_Small = 16974277; // 0x10301c5
-    field public static final int TextAppearance_DeviceDefault_Widget_TabWidget = 16974268; // 0x10301bc
-    field public static final int TextAppearance_DeviceDefault_Widget_TextView = 16974269; // 0x10301bd
-    field public static final int TextAppearance_DeviceDefault_Widget_TextView_PopupMenu = 16974270; // 0x10301be
-    field public static final int TextAppearance_DeviceDefault_Widget_TextView_SpinnerItem = 16974273; // 0x10301c1
-    field public static final int TextAppearance_DeviceDefault_WindowTitle = 16974263; // 0x10301b7
-    field public static final int TextAppearance_DialogWindowTitle = 16973889; // 0x1030041
-    field public static final int TextAppearance_Holo = 16974075; // 0x10300fb
-    field public static final int TextAppearance_Holo_DialogWindowTitle = 16974103; // 0x1030117
-    field public static final int TextAppearance_Holo_Inverse = 16974076; // 0x10300fc
-    field public static final int TextAppearance_Holo_Large = 16974077; // 0x10300fd
-    field public static final int TextAppearance_Holo_Large_Inverse = 16974078; // 0x10300fe
-    field public static final int TextAppearance_Holo_Medium = 16974079; // 0x10300ff
-    field public static final int TextAppearance_Holo_Medium_Inverse = 16974080; // 0x1030100
-    field public static final int TextAppearance_Holo_SearchResult_Subtitle = 16974084; // 0x1030104
-    field public static final int TextAppearance_Holo_SearchResult_Title = 16974083; // 0x1030103
-    field public static final int TextAppearance_Holo_Small = 16974081; // 0x1030101
-    field public static final int TextAppearance_Holo_Small_Inverse = 16974082; // 0x1030102
-    field public static final int TextAppearance_Holo_Widget = 16974085; // 0x1030105
-    field public static final int TextAppearance_Holo_Widget_ActionBar_Menu = 16974112; // 0x1030120
-    field public static final int TextAppearance_Holo_Widget_ActionBar_Subtitle = 16974099; // 0x1030113
-    field public static final int TextAppearance_Holo_Widget_ActionBar_Subtitle_Inverse = 16974109; // 0x103011d
-    field public static final int TextAppearance_Holo_Widget_ActionBar_Title = 16974098; // 0x1030112
-    field public static final int TextAppearance_Holo_Widget_ActionBar_Title_Inverse = 16974108; // 0x103011c
-    field public static final int TextAppearance_Holo_Widget_ActionMode_Subtitle = 16974101; // 0x1030115
-    field public static final int TextAppearance_Holo_Widget_ActionMode_Subtitle_Inverse = 16974111; // 0x103011f
-    field public static final int TextAppearance_Holo_Widget_ActionMode_Title = 16974100; // 0x1030114
-    field public static final int TextAppearance_Holo_Widget_ActionMode_Title_Inverse = 16974110; // 0x103011e
-    field public static final int TextAppearance_Holo_Widget_Button = 16974086; // 0x1030106
-    field public static final int TextAppearance_Holo_Widget_DropDownHint = 16974091; // 0x103010b
-    field public static final int TextAppearance_Holo_Widget_DropDownItem = 16974092; // 0x103010c
-    field public static final int TextAppearance_Holo_Widget_EditText = 16974094; // 0x103010e
-    field public static final int TextAppearance_Holo_Widget_IconMenu_Item = 16974087; // 0x1030107
-    field public static final int TextAppearance_Holo_Widget_PopupMenu = 16974095; // 0x103010f
-    field public static final int TextAppearance_Holo_Widget_PopupMenu_Large = 16974096; // 0x1030110
-    field public static final int TextAppearance_Holo_Widget_PopupMenu_Small = 16974097; // 0x1030111
-    field public static final int TextAppearance_Holo_Widget_TabWidget = 16974088; // 0x1030108
-    field public static final int TextAppearance_Holo_Widget_TextView = 16974089; // 0x1030109
-    field public static final int TextAppearance_Holo_Widget_TextView_PopupMenu = 16974090; // 0x103010a
-    field public static final int TextAppearance_Holo_Widget_TextView_SpinnerItem = 16974093; // 0x103010d
-    field public static final int TextAppearance_Holo_WindowTitle = 16974102; // 0x1030116
-    field public static final int TextAppearance_Inverse = 16973887; // 0x103003f
-    field public static final int TextAppearance_Large = 16973890; // 0x1030042
-    field public static final int TextAppearance_Large_Inverse = 16973891; // 0x1030043
-    field public static final int TextAppearance_Material = 16974317; // 0x10301ed
-    field public static final int TextAppearance_Material_Body1 = 16974320; // 0x10301f0
-    field public static final int TextAppearance_Material_Body2 = 16974319; // 0x10301ef
-    field public static final int TextAppearance_Material_Button = 16974318; // 0x10301ee
-    field public static final int TextAppearance_Material_Caption = 16974321; // 0x10301f1
-    field public static final int TextAppearance_Material_DialogWindowTitle = 16974322; // 0x10301f2
-    field public static final int TextAppearance_Material_Display1 = 16974326; // 0x10301f6
-    field public static final int TextAppearance_Material_Display2 = 16974325; // 0x10301f5
-    field public static final int TextAppearance_Material_Display3 = 16974324; // 0x10301f4
-    field public static final int TextAppearance_Material_Display4 = 16974323; // 0x10301f3
-    field public static final int TextAppearance_Material_Headline = 16974327; // 0x10301f7
-    field public static final int TextAppearance_Material_Inverse = 16974328; // 0x10301f8
-    field public static final int TextAppearance_Material_Large = 16974329; // 0x10301f9
-    field public static final int TextAppearance_Material_Large_Inverse = 16974330; // 0x10301fa
-    field public static final int TextAppearance_Material_Medium = 16974331; // 0x10301fb
-    field public static final int TextAppearance_Material_Medium_Inverse = 16974332; // 0x10301fc
-    field public static final int TextAppearance_Material_Menu = 16974333; // 0x10301fd
-    field public static final int TextAppearance_Material_Notification = 16974334; // 0x10301fe
-    field public static final int TextAppearance_Material_Notification_Emphasis = 16974335; // 0x10301ff
-    field public static final int TextAppearance_Material_Notification_Info = 16974336; // 0x1030200
-    field public static final int TextAppearance_Material_Notification_Line2 = 16974337; // 0x1030201
-    field public static final int TextAppearance_Material_Notification_Time = 16974338; // 0x1030202
-    field public static final int TextAppearance_Material_Notification_Title = 16974339; // 0x1030203
-    field public static final int TextAppearance_Material_SearchResult_Subtitle = 16974340; // 0x1030204
-    field public static final int TextAppearance_Material_SearchResult_Title = 16974341; // 0x1030205
-    field public static final int TextAppearance_Material_Small = 16974342; // 0x1030206
-    field public static final int TextAppearance_Material_Small_Inverse = 16974343; // 0x1030207
-    field public static final int TextAppearance_Material_Subhead = 16974344; // 0x1030208
-    field public static final int TextAppearance_Material_Title = 16974345; // 0x1030209
-    field public static final int TextAppearance_Material_Widget = 16974347; // 0x103020b
-    field public static final int TextAppearance_Material_Widget_ActionBar_Menu = 16974348; // 0x103020c
-    field public static final int TextAppearance_Material_Widget_ActionBar_Subtitle = 16974349; // 0x103020d
-    field public static final int TextAppearance_Material_Widget_ActionBar_Subtitle_Inverse = 16974350; // 0x103020e
-    field public static final int TextAppearance_Material_Widget_ActionBar_Title = 16974351; // 0x103020f
-    field public static final int TextAppearance_Material_Widget_ActionBar_Title_Inverse = 16974352; // 0x1030210
-    field public static final int TextAppearance_Material_Widget_ActionMode_Subtitle = 16974353; // 0x1030211
-    field public static final int TextAppearance_Material_Widget_ActionMode_Subtitle_Inverse = 16974354; // 0x1030212
-    field public static final int TextAppearance_Material_Widget_ActionMode_Title = 16974355; // 0x1030213
-    field public static final int TextAppearance_Material_Widget_ActionMode_Title_Inverse = 16974356; // 0x1030214
-    field public static final int TextAppearance_Material_Widget_Button = 16974357; // 0x1030215
-    field public static final int TextAppearance_Material_Widget_Button_Borderless_Colored = 16974559; // 0x10302df
-    field public static final int TextAppearance_Material_Widget_Button_Colored = 16974558; // 0x10302de
-    field public static final int TextAppearance_Material_Widget_Button_Inverse = 16974548; // 0x10302d4
-    field public static final int TextAppearance_Material_Widget_DropDownHint = 16974358; // 0x1030216
-    field public static final int TextAppearance_Material_Widget_DropDownItem = 16974359; // 0x1030217
-    field public static final int TextAppearance_Material_Widget_EditText = 16974360; // 0x1030218
-    field public static final int TextAppearance_Material_Widget_IconMenu_Item = 16974361; // 0x1030219
-    field public static final int TextAppearance_Material_Widget_PopupMenu = 16974362; // 0x103021a
-    field public static final int TextAppearance_Material_Widget_PopupMenu_Large = 16974363; // 0x103021b
-    field public static final int TextAppearance_Material_Widget_PopupMenu_Small = 16974364; // 0x103021c
-    field public static final int TextAppearance_Material_Widget_TabWidget = 16974365; // 0x103021d
-    field public static final int TextAppearance_Material_Widget_TextView = 16974366; // 0x103021e
-    field public static final int TextAppearance_Material_Widget_TextView_PopupMenu = 16974367; // 0x103021f
-    field public static final int TextAppearance_Material_Widget_TextView_SpinnerItem = 16974368; // 0x1030220
-    field public static final int TextAppearance_Material_Widget_Toolbar_Subtitle = 16974369; // 0x1030221
-    field public static final int TextAppearance_Material_Widget_Toolbar_Title = 16974370; // 0x1030222
-    field public static final int TextAppearance_Material_WindowTitle = 16974346; // 0x103020a
-    field public static final int TextAppearance_Medium = 16973892; // 0x1030044
-    field public static final int TextAppearance_Medium_Inverse = 16973893; // 0x1030045
-    field public static final int TextAppearance_Small = 16973894; // 0x1030046
-    field public static final int TextAppearance_Small_Inverse = 16973895; // 0x1030047
-    field public static final int TextAppearance_StatusBar_EventContent = 16973927; // 0x1030067
-    field public static final int TextAppearance_StatusBar_EventContent_Title = 16973928; // 0x1030068
-    field public static final int TextAppearance_StatusBar_Icon = 16973926; // 0x1030066
-    field public static final int TextAppearance_StatusBar_Title = 16973925; // 0x1030065
-    field public static final int TextAppearance_SuggestionHighlight = 16974104; // 0x1030118
-    field public static final int TextAppearance_Theme = 16973888; // 0x1030040
-    field public static final int TextAppearance_Theme_Dialog = 16973896; // 0x1030048
-    field public static final int TextAppearance_Widget = 16973897; // 0x1030049
-    field public static final int TextAppearance_Widget_Button = 16973898; // 0x103004a
-    field public static final int TextAppearance_Widget_DropDownHint = 16973904; // 0x1030050
-    field public static final int TextAppearance_Widget_DropDownItem = 16973905; // 0x1030051
-    field public static final int TextAppearance_Widget_EditText = 16973900; // 0x103004c
-    field public static final int TextAppearance_Widget_IconMenu_Item = 16973899; // 0x103004b
-    field public static final int TextAppearance_Widget_PopupMenu_Large = 16973952; // 0x1030080
-    field public static final int TextAppearance_Widget_PopupMenu_Small = 16973953; // 0x1030081
-    field public static final int TextAppearance_Widget_TabWidget = 16973901; // 0x103004d
-    field public static final int TextAppearance_Widget_TextView = 16973902; // 0x103004e
-    field public static final int TextAppearance_Widget_TextView_PopupMenu = 16973903; // 0x103004f
-    field public static final int TextAppearance_Widget_TextView_SpinnerItem = 16973906; // 0x1030052
-    field public static final int TextAppearance_WindowTitle = 16973907; // 0x1030053
-    field public static final int Theme = 16973829; // 0x1030005
-    field public static final int ThemeOverlay = 16974407; // 0x1030247
-    field public static final int ThemeOverlay_DeviceDefault_Accent_DayNight = 16974564; // 0x10302e4
-    field public static final int ThemeOverlay_Material = 16974408; // 0x1030248
-    field public static final int ThemeOverlay_Material_ActionBar = 16974409; // 0x1030249
-    field public static final int ThemeOverlay_Material_Dark = 16974411; // 0x103024b
-    field public static final int ThemeOverlay_Material_Dark_ActionBar = 16974412; // 0x103024c
-    field public static final int ThemeOverlay_Material_Dialog = 16974550; // 0x10302d6
-    field public static final int ThemeOverlay_Material_Dialog_Alert = 16974551; // 0x10302d7
-    field public static final int ThemeOverlay_Material_Light = 16974410; // 0x103024a
-    field public static final int Theme_Black = 16973832; // 0x1030008
-    field public static final int Theme_Black_NoTitleBar = 16973833; // 0x1030009
-    field public static final int Theme_Black_NoTitleBar_Fullscreen = 16973834; // 0x103000a
-    field public static final int Theme_DeviceDefault = 16974120; // 0x1030128
-    field public static final int Theme_DeviceDefault_DayNight = 16974563; // 0x10302e3
-    field public static final int Theme_DeviceDefault_Dialog = 16974126; // 0x103012e
-    field public static final int Theme_DeviceDefault_DialogWhenLarge = 16974134; // 0x1030136
-    field public static final int Theme_DeviceDefault_DialogWhenLarge_NoActionBar = 16974135; // 0x1030137
-    field public static final int Theme_DeviceDefault_Dialog_Alert = 16974545; // 0x10302d1
-    field public static final int Theme_DeviceDefault_Dialog_MinWidth = 16974127; // 0x103012f
-    field public static final int Theme_DeviceDefault_Dialog_NoActionBar = 16974128; // 0x1030130
-    field public static final int Theme_DeviceDefault_Dialog_NoActionBar_MinWidth = 16974129; // 0x1030131
-    field public static final int Theme_DeviceDefault_InputMethod = 16974142; // 0x103013e
-    field public static final int Theme_DeviceDefault_Light = 16974123; // 0x103012b
-    field public static final int Theme_DeviceDefault_Light_DarkActionBar = 16974143; // 0x103013f
-    field public static final int Theme_DeviceDefault_Light_Dialog = 16974130; // 0x1030132
-    field public static final int Theme_DeviceDefault_Light_DialogWhenLarge = 16974136; // 0x1030138
-    field public static final int Theme_DeviceDefault_Light_DialogWhenLarge_NoActionBar = 16974137; // 0x1030139
-    field public static final int Theme_DeviceDefault_Light_Dialog_Alert = 16974546; // 0x10302d2
-    field public static final int Theme_DeviceDefault_Light_Dialog_MinWidth = 16974131; // 0x1030133
-    field public static final int Theme_DeviceDefault_Light_Dialog_NoActionBar = 16974132; // 0x1030134
-    field public static final int Theme_DeviceDefault_Light_Dialog_NoActionBar_MinWidth = 16974133; // 0x1030135
-    field public static final int Theme_DeviceDefault_Light_NoActionBar = 16974124; // 0x103012c
-    field public static final int Theme_DeviceDefault_Light_NoActionBar_Fullscreen = 16974125; // 0x103012d
-    field public static final int Theme_DeviceDefault_Light_NoActionBar_Overscan = 16974304; // 0x10301e0
-    field public static final int Theme_DeviceDefault_Light_NoActionBar_TranslucentDecor = 16974308; // 0x10301e4
-    field public static final int Theme_DeviceDefault_Light_Panel = 16974139; // 0x103013b
-    field public static final int Theme_DeviceDefault_NoActionBar = 16974121; // 0x1030129
-    field public static final int Theme_DeviceDefault_NoActionBar_Fullscreen = 16974122; // 0x103012a
-    field public static final int Theme_DeviceDefault_NoActionBar_Overscan = 16974303; // 0x10301df
-    field public static final int Theme_DeviceDefault_NoActionBar_TranslucentDecor = 16974307; // 0x10301e3
-    field public static final int Theme_DeviceDefault_Panel = 16974138; // 0x103013a
-    field public static final int Theme_DeviceDefault_Settings = 16974371; // 0x1030223
-    field public static final int Theme_DeviceDefault_Wallpaper = 16974140; // 0x103013c
-    field public static final int Theme_DeviceDefault_Wallpaper_NoTitleBar = 16974141; // 0x103013d
-    field public static final int Theme_Dialog = 16973835; // 0x103000b
-    field @Deprecated public static final int Theme_Holo = 16973931; // 0x103006b
-    field @Deprecated public static final int Theme_Holo_Dialog = 16973935; // 0x103006f
-    field @Deprecated public static final int Theme_Holo_DialogWhenLarge = 16973943; // 0x1030077
-    field @Deprecated public static final int Theme_Holo_DialogWhenLarge_NoActionBar = 16973944; // 0x1030078
-    field @Deprecated public static final int Theme_Holo_Dialog_MinWidth = 16973936; // 0x1030070
-    field @Deprecated public static final int Theme_Holo_Dialog_NoActionBar = 16973937; // 0x1030071
-    field @Deprecated public static final int Theme_Holo_Dialog_NoActionBar_MinWidth = 16973938; // 0x1030072
-    field @Deprecated public static final int Theme_Holo_InputMethod = 16973951; // 0x103007f
-    field @Deprecated public static final int Theme_Holo_Light = 16973934; // 0x103006e
-    field @Deprecated public static final int Theme_Holo_Light_DarkActionBar = 16974105; // 0x1030119
-    field @Deprecated public static final int Theme_Holo_Light_Dialog = 16973939; // 0x1030073
-    field @Deprecated public static final int Theme_Holo_Light_DialogWhenLarge = 16973945; // 0x1030079
-    field @Deprecated public static final int Theme_Holo_Light_DialogWhenLarge_NoActionBar = 16973946; // 0x103007a
-    field @Deprecated public static final int Theme_Holo_Light_Dialog_MinWidth = 16973940; // 0x1030074
-    field @Deprecated public static final int Theme_Holo_Light_Dialog_NoActionBar = 16973941; // 0x1030075
-    field @Deprecated public static final int Theme_Holo_Light_Dialog_NoActionBar_MinWidth = 16973942; // 0x1030076
-    field @Deprecated public static final int Theme_Holo_Light_NoActionBar = 16974064; // 0x10300f0
-    field @Deprecated public static final int Theme_Holo_Light_NoActionBar_Fullscreen = 16974065; // 0x10300f1
-    field @Deprecated public static final int Theme_Holo_Light_NoActionBar_Overscan = 16974302; // 0x10301de
-    field @Deprecated public static final int Theme_Holo_Light_NoActionBar_TranslucentDecor = 16974306; // 0x10301e2
-    field @Deprecated public static final int Theme_Holo_Light_Panel = 16973948; // 0x103007c
-    field @Deprecated public static final int Theme_Holo_NoActionBar = 16973932; // 0x103006c
-    field @Deprecated public static final int Theme_Holo_NoActionBar_Fullscreen = 16973933; // 0x103006d
-    field @Deprecated public static final int Theme_Holo_NoActionBar_Overscan = 16974301; // 0x10301dd
-    field @Deprecated public static final int Theme_Holo_NoActionBar_TranslucentDecor = 16974305; // 0x10301e1
-    field @Deprecated public static final int Theme_Holo_Panel = 16973947; // 0x103007b
-    field @Deprecated public static final int Theme_Holo_Wallpaper = 16973949; // 0x103007d
-    field @Deprecated public static final int Theme_Holo_Wallpaper_NoTitleBar = 16973950; // 0x103007e
-    field public static final int Theme_InputMethod = 16973908; // 0x1030054
-    field public static final int Theme_Light = 16973836; // 0x103000c
-    field public static final int Theme_Light_NoTitleBar = 16973837; // 0x103000d
-    field public static final int Theme_Light_NoTitleBar_Fullscreen = 16973838; // 0x103000e
-    field public static final int Theme_Light_Panel = 16973914; // 0x103005a
-    field public static final int Theme_Light_WallpaperSettings = 16973922; // 0x1030062
-    field public static final int Theme_Material = 16974372; // 0x1030224
-    field public static final int Theme_Material_Dialog = 16974373; // 0x1030225
-    field public static final int Theme_Material_DialogWhenLarge = 16974379; // 0x103022b
-    field public static final int Theme_Material_DialogWhenLarge_NoActionBar = 16974380; // 0x103022c
-    field public static final int Theme_Material_Dialog_Alert = 16974374; // 0x1030226
-    field public static final int Theme_Material_Dialog_MinWidth = 16974375; // 0x1030227
-    field public static final int Theme_Material_Dialog_NoActionBar = 16974376; // 0x1030228
-    field public static final int Theme_Material_Dialog_NoActionBar_MinWidth = 16974377; // 0x1030229
-    field public static final int Theme_Material_Dialog_Presentation = 16974378; // 0x103022a
-    field public static final int Theme_Material_InputMethod = 16974381; // 0x103022d
-    field public static final int Theme_Material_Light = 16974391; // 0x1030237
-    field public static final int Theme_Material_Light_DarkActionBar = 16974392; // 0x1030238
-    field public static final int Theme_Material_Light_Dialog = 16974393; // 0x1030239
-    field public static final int Theme_Material_Light_DialogWhenLarge = 16974399; // 0x103023f
-    field public static final int Theme_Material_Light_DialogWhenLarge_DarkActionBar = 16974552; // 0x10302d8
-    field public static final int Theme_Material_Light_DialogWhenLarge_NoActionBar = 16974400; // 0x1030240
-    field public static final int Theme_Material_Light_Dialog_Alert = 16974394; // 0x103023a
-    field public static final int Theme_Material_Light_Dialog_MinWidth = 16974395; // 0x103023b
-    field public static final int Theme_Material_Light_Dialog_NoActionBar = 16974396; // 0x103023c
-    field public static final int Theme_Material_Light_Dialog_NoActionBar_MinWidth = 16974397; // 0x103023d
-    field public static final int Theme_Material_Light_Dialog_Presentation = 16974398; // 0x103023e
-    field public static final int Theme_Material_Light_LightStatusBar = 16974549; // 0x10302d5
-    field public static final int Theme_Material_Light_NoActionBar = 16974401; // 0x1030241
-    field public static final int Theme_Material_Light_NoActionBar_Fullscreen = 16974402; // 0x1030242
-    field @Deprecated public static final int Theme_Material_Light_NoActionBar_Overscan = 16974403; // 0x1030243
-    field public static final int Theme_Material_Light_NoActionBar_TranslucentDecor = 16974404; // 0x1030244
-    field public static final int Theme_Material_Light_Panel = 16974405; // 0x1030245
-    field public static final int Theme_Material_Light_Voice = 16974406; // 0x1030246
-    field public static final int Theme_Material_NoActionBar = 16974382; // 0x103022e
-    field public static final int Theme_Material_NoActionBar_Fullscreen = 16974383; // 0x103022f
-    field @Deprecated public static final int Theme_Material_NoActionBar_Overscan = 16974384; // 0x1030230
-    field public static final int Theme_Material_NoActionBar_TranslucentDecor = 16974385; // 0x1030231
-    field public static final int Theme_Material_Panel = 16974386; // 0x1030232
-    field public static final int Theme_Material_Settings = 16974387; // 0x1030233
-    field public static final int Theme_Material_Voice = 16974388; // 0x1030234
-    field public static final int Theme_Material_Wallpaper = 16974389; // 0x1030235
-    field public static final int Theme_Material_Wallpaper_NoTitleBar = 16974390; // 0x1030236
-    field public static final int Theme_NoDisplay = 16973909; // 0x1030055
-    field public static final int Theme_NoTitleBar = 16973830; // 0x1030006
-    field public static final int Theme_NoTitleBar_Fullscreen = 16973831; // 0x1030007
-    field public static final int Theme_NoTitleBar_OverlayActionModes = 16973930; // 0x103006a
-    field public static final int Theme_Panel = 16973913; // 0x1030059
-    field public static final int Theme_Translucent = 16973839; // 0x103000f
-    field public static final int Theme_Translucent_NoTitleBar = 16973840; // 0x1030010
-    field public static final int Theme_Translucent_NoTitleBar_Fullscreen = 16973841; // 0x1030011
-    field public static final int Theme_Wallpaper = 16973918; // 0x103005e
-    field public static final int Theme_WallpaperSettings = 16973921; // 0x1030061
-    field public static final int Theme_Wallpaper_NoTitleBar = 16973919; // 0x103005f
-    field public static final int Theme_Wallpaper_NoTitleBar_Fullscreen = 16973920; // 0x1030060
-    field public static final int Theme_WithActionBar = 16973929; // 0x1030069
-    field public static final int Widget = 16973842; // 0x1030012
-    field public static final int Widget_AbsListView = 16973843; // 0x1030013
-    field public static final int Widget_ActionBar = 16973954; // 0x1030082
-    field public static final int Widget_ActionBar_TabBar = 16974068; // 0x10300f4
-    field public static final int Widget_ActionBar_TabText = 16974067; // 0x10300f3
-    field public static final int Widget_ActionBar_TabView = 16974066; // 0x10300f2
-    field public static final int Widget_ActionButton = 16973956; // 0x1030084
-    field public static final int Widget_ActionButton_CloseMode = 16973960; // 0x1030088
-    field public static final int Widget_ActionButton_Overflow = 16973959; // 0x1030087
-    field public static final int Widget_AutoCompleteTextView = 16973863; // 0x1030027
-    field public static final int Widget_Button = 16973844; // 0x1030014
-    field public static final int Widget_Button_Inset = 16973845; // 0x1030015
-    field public static final int Widget_Button_Small = 16973846; // 0x1030016
-    field public static final int Widget_Button_Toggle = 16973847; // 0x1030017
-    field public static final int Widget_CalendarView = 16974059; // 0x10300eb
-    field public static final int Widget_CompoundButton = 16973848; // 0x1030018
-    field public static final int Widget_CompoundButton_CheckBox = 16973849; // 0x1030019
-    field public static final int Widget_CompoundButton_RadioButton = 16973850; // 0x103001a
-    field public static final int Widget_CompoundButton_Star = 16973851; // 0x103001b
-    field public static final int Widget_DatePicker = 16974062; // 0x10300ee
-    field public static final int Widget_DeviceDefault = 16974144; // 0x1030140
-    field public static final int Widget_DeviceDefault_ActionBar = 16974187; // 0x103016b
-    field public static final int Widget_DeviceDefault_ActionBar_Solid = 16974195; // 0x1030173
-    field public static final int Widget_DeviceDefault_ActionBar_TabBar = 16974194; // 0x1030172
-    field public static final int Widget_DeviceDefault_ActionBar_TabText = 16974193; // 0x1030171
-    field public static final int Widget_DeviceDefault_ActionBar_TabView = 16974192; // 0x1030170
-    field public static final int Widget_DeviceDefault_ActionButton = 16974182; // 0x1030166
-    field public static final int Widget_DeviceDefault_ActionButton_CloseMode = 16974186; // 0x103016a
-    field public static final int Widget_DeviceDefault_ActionButton_Overflow = 16974183; // 0x1030167
-    field public static final int Widget_DeviceDefault_ActionButton_TextButton = 16974184; // 0x1030168
-    field public static final int Widget_DeviceDefault_ActionMode = 16974185; // 0x1030169
-    field public static final int Widget_DeviceDefault_AutoCompleteTextView = 16974151; // 0x1030147
-    field public static final int Widget_DeviceDefault_Button = 16974145; // 0x1030141
-    field public static final int Widget_DeviceDefault_Button_Borderless = 16974188; // 0x103016c
-    field public static final int Widget_DeviceDefault_Button_Borderless_Colored = 16974561; // 0x10302e1
-    field public static final int Widget_DeviceDefault_Button_Borderless_Small = 16974149; // 0x1030145
-    field public static final int Widget_DeviceDefault_Button_Colored = 16974560; // 0x10302e0
-    field public static final int Widget_DeviceDefault_Button_Inset = 16974147; // 0x1030143
-    field public static final int Widget_DeviceDefault_Button_Small = 16974146; // 0x1030142
-    field public static final int Widget_DeviceDefault_Button_Toggle = 16974148; // 0x1030144
-    field public static final int Widget_DeviceDefault_CalendarView = 16974190; // 0x103016e
-    field public static final int Widget_DeviceDefault_CheckedTextView = 16974299; // 0x10301db
-    field public static final int Widget_DeviceDefault_CompoundButton_CheckBox = 16974152; // 0x1030148
-    field public static final int Widget_DeviceDefault_CompoundButton_RadioButton = 16974169; // 0x1030159
-    field public static final int Widget_DeviceDefault_CompoundButton_Star = 16974173; // 0x103015d
-    field public static final int Widget_DeviceDefault_DatePicker = 16974191; // 0x103016f
-    field public static final int Widget_DeviceDefault_DropDownItem = 16974177; // 0x1030161
-    field public static final int Widget_DeviceDefault_DropDownItem_Spinner = 16974178; // 0x1030162
-    field public static final int Widget_DeviceDefault_EditText = 16974154; // 0x103014a
-    field public static final int Widget_DeviceDefault_ExpandableListView = 16974155; // 0x103014b
-    field public static final int Widget_DeviceDefault_FastScroll = 16974313; // 0x10301e9
-    field public static final int Widget_DeviceDefault_GridView = 16974156; // 0x103014c
-    field public static final int Widget_DeviceDefault_HorizontalScrollView = 16974171; // 0x103015b
-    field public static final int Widget_DeviceDefault_ImageButton = 16974157; // 0x103014d
-    field public static final int Widget_DeviceDefault_Light = 16974196; // 0x1030174
-    field public static final int Widget_DeviceDefault_Light_ActionBar = 16974243; // 0x10301a3
-    field public static final int Widget_DeviceDefault_Light_ActionBar_Solid = 16974247; // 0x10301a7
-    field @Deprecated public static final int Widget_DeviceDefault_Light_ActionBar_Solid_Inverse = 16974248; // 0x10301a8
-    field public static final int Widget_DeviceDefault_Light_ActionBar_TabBar = 16974246; // 0x10301a6
-    field @Deprecated public static final int Widget_DeviceDefault_Light_ActionBar_TabBar_Inverse = 16974249; // 0x10301a9
-    field public static final int Widget_DeviceDefault_Light_ActionBar_TabText = 16974245; // 0x10301a5
-    field @Deprecated public static final int Widget_DeviceDefault_Light_ActionBar_TabText_Inverse = 16974251; // 0x10301ab
-    field public static final int Widget_DeviceDefault_Light_ActionBar_TabView = 16974244; // 0x10301a4
-    field @Deprecated public static final int Widget_DeviceDefault_Light_ActionBar_TabView_Inverse = 16974250; // 0x10301aa
-    field public static final int Widget_DeviceDefault_Light_ActionButton = 16974239; // 0x103019f
-    field public static final int Widget_DeviceDefault_Light_ActionButton_CloseMode = 16974242; // 0x10301a2
-    field public static final int Widget_DeviceDefault_Light_ActionButton_Overflow = 16974240; // 0x10301a0
-    field public static final int Widget_DeviceDefault_Light_ActionMode = 16974241; // 0x10301a1
-    field @Deprecated public static final int Widget_DeviceDefault_Light_ActionMode_Inverse = 16974252; // 0x10301ac
-    field public static final int Widget_DeviceDefault_Light_AutoCompleteTextView = 16974203; // 0x103017b
-    field public static final int Widget_DeviceDefault_Light_Button = 16974197; // 0x1030175
-    field public static final int Widget_DeviceDefault_Light_Button_Borderless_Small = 16974201; // 0x1030179
-    field public static final int Widget_DeviceDefault_Light_Button_Inset = 16974199; // 0x1030177
-    field public static final int Widget_DeviceDefault_Light_Button_Small = 16974198; // 0x1030176
-    field public static final int Widget_DeviceDefault_Light_Button_Toggle = 16974200; // 0x1030178
-    field public static final int Widget_DeviceDefault_Light_CalendarView = 16974238; // 0x103019e
-    field public static final int Widget_DeviceDefault_Light_CheckedTextView = 16974300; // 0x10301dc
-    field public static final int Widget_DeviceDefault_Light_CompoundButton_CheckBox = 16974204; // 0x103017c
-    field public static final int Widget_DeviceDefault_Light_CompoundButton_RadioButton = 16974224; // 0x1030190
-    field public static final int Widget_DeviceDefault_Light_CompoundButton_Star = 16974228; // 0x1030194
-    field public static final int Widget_DeviceDefault_Light_DropDownItem = 16974232; // 0x1030198
-    field public static final int Widget_DeviceDefault_Light_DropDownItem_Spinner = 16974233; // 0x1030199
-    field public static final int Widget_DeviceDefault_Light_EditText = 16974206; // 0x103017e
-    field public static final int Widget_DeviceDefault_Light_ExpandableListView = 16974207; // 0x103017f
-    field public static final int Widget_DeviceDefault_Light_FastScroll = 16974315; // 0x10301eb
-    field public static final int Widget_DeviceDefault_Light_GridView = 16974208; // 0x1030180
-    field public static final int Widget_DeviceDefault_Light_HorizontalScrollView = 16974226; // 0x1030192
-    field public static final int Widget_DeviceDefault_Light_ImageButton = 16974209; // 0x1030181
-    field public static final int Widget_DeviceDefault_Light_ListPopupWindow = 16974235; // 0x103019b
-    field public static final int Widget_DeviceDefault_Light_ListView = 16974210; // 0x1030182
-    field public static final int Widget_DeviceDefault_Light_ListView_DropDown = 16974205; // 0x103017d
-    field public static final int Widget_DeviceDefault_Light_MediaRouteButton = 16974296; // 0x10301d8
-    field public static final int Widget_DeviceDefault_Light_PopupMenu = 16974236; // 0x103019c
-    field public static final int Widget_DeviceDefault_Light_PopupWindow = 16974211; // 0x1030183
-    field public static final int Widget_DeviceDefault_Light_ProgressBar = 16974212; // 0x1030184
-    field public static final int Widget_DeviceDefault_Light_ProgressBar_Horizontal = 16974213; // 0x1030185
-    field public static final int Widget_DeviceDefault_Light_ProgressBar_Inverse = 16974217; // 0x1030189
-    field public static final int Widget_DeviceDefault_Light_ProgressBar_Large = 16974216; // 0x1030188
-    field public static final int Widget_DeviceDefault_Light_ProgressBar_Large_Inverse = 16974219; // 0x103018b
-    field public static final int Widget_DeviceDefault_Light_ProgressBar_Small = 16974214; // 0x1030186
-    field public static final int Widget_DeviceDefault_Light_ProgressBar_Small_Inverse = 16974218; // 0x103018a
-    field public static final int Widget_DeviceDefault_Light_ProgressBar_Small_Title = 16974215; // 0x1030187
-    field public static final int Widget_DeviceDefault_Light_RatingBar = 16974221; // 0x103018d
-    field public static final int Widget_DeviceDefault_Light_RatingBar_Indicator = 16974222; // 0x103018e
-    field public static final int Widget_DeviceDefault_Light_RatingBar_Small = 16974223; // 0x103018f
-    field public static final int Widget_DeviceDefault_Light_ScrollView = 16974225; // 0x1030191
-    field public static final int Widget_DeviceDefault_Light_SeekBar = 16974220; // 0x103018c
-    field public static final int Widget_DeviceDefault_Light_Spinner = 16974227; // 0x1030193
-    field public static final int Widget_DeviceDefault_Light_StackView = 16974316; // 0x10301ec
-    field public static final int Widget_DeviceDefault_Light_Tab = 16974237; // 0x103019d
-    field public static final int Widget_DeviceDefault_Light_TabWidget = 16974229; // 0x1030195
-    field public static final int Widget_DeviceDefault_Light_TextView = 16974202; // 0x103017a
-    field public static final int Widget_DeviceDefault_Light_TextView_SpinnerItem = 16974234; // 0x103019a
-    field public static final int Widget_DeviceDefault_Light_WebTextView = 16974230; // 0x1030196
-    field public static final int Widget_DeviceDefault_Light_WebView = 16974231; // 0x1030197
-    field public static final int Widget_DeviceDefault_ListPopupWindow = 16974180; // 0x1030164
-    field public static final int Widget_DeviceDefault_ListView = 16974158; // 0x103014e
-    field public static final int Widget_DeviceDefault_ListView_DropDown = 16974153; // 0x1030149
-    field public static final int Widget_DeviceDefault_MediaRouteButton = 16974295; // 0x10301d7
-    field public static final int Widget_DeviceDefault_PopupMenu = 16974181; // 0x1030165
-    field public static final int Widget_DeviceDefault_PopupWindow = 16974159; // 0x103014f
-    field public static final int Widget_DeviceDefault_ProgressBar = 16974160; // 0x1030150
-    field public static final int Widget_DeviceDefault_ProgressBar_Horizontal = 16974161; // 0x1030151
-    field public static final int Widget_DeviceDefault_ProgressBar_Large = 16974164; // 0x1030154
-    field public static final int Widget_DeviceDefault_ProgressBar_Small = 16974162; // 0x1030152
-    field public static final int Widget_DeviceDefault_ProgressBar_Small_Title = 16974163; // 0x1030153
-    field public static final int Widget_DeviceDefault_RatingBar = 16974166; // 0x1030156
-    field public static final int Widget_DeviceDefault_RatingBar_Indicator = 16974167; // 0x1030157
-    field public static final int Widget_DeviceDefault_RatingBar_Small = 16974168; // 0x1030158
-    field public static final int Widget_DeviceDefault_ScrollView = 16974170; // 0x103015a
-    field public static final int Widget_DeviceDefault_SeekBar = 16974165; // 0x1030155
-    field public static final int Widget_DeviceDefault_Spinner = 16974172; // 0x103015c
-    field public static final int Widget_DeviceDefault_StackView = 16974314; // 0x10301ea
-    field public static final int Widget_DeviceDefault_Tab = 16974189; // 0x103016d
-    field public static final int Widget_DeviceDefault_TabWidget = 16974174; // 0x103015e
-    field public static final int Widget_DeviceDefault_TextView = 16974150; // 0x1030146
-    field public static final int Widget_DeviceDefault_TextView_SpinnerItem = 16974179; // 0x1030163
-    field public static final int Widget_DeviceDefault_WebTextView = 16974175; // 0x103015f
-    field public static final int Widget_DeviceDefault_WebView = 16974176; // 0x1030160
-    field public static final int Widget_DropDownItem = 16973867; // 0x103002b
-    field public static final int Widget_DropDownItem_Spinner = 16973868; // 0x103002c
-    field public static final int Widget_EditText = 16973859; // 0x1030023
-    field public static final int Widget_ExpandableListView = 16973860; // 0x1030024
-    field public static final int Widget_FastScroll = 16974309; // 0x10301e5
-    field public static final int Widget_FragmentBreadCrumbs = 16973961; // 0x1030089
-    field public static final int Widget_Gallery = 16973877; // 0x1030035
-    field public static final int Widget_GridView = 16973874; // 0x1030032
-    field public static final int Widget_Holo = 16973962; // 0x103008a
-    field public static final int Widget_Holo_ActionBar = 16974004; // 0x10300b4
-    field public static final int Widget_Holo_ActionBar_Solid = 16974113; // 0x1030121
-    field public static final int Widget_Holo_ActionBar_TabBar = 16974071; // 0x10300f7
-    field public static final int Widget_Holo_ActionBar_TabText = 16974070; // 0x10300f6
-    field public static final int Widget_Holo_ActionBar_TabView = 16974069; // 0x10300f5
-    field public static final int Widget_Holo_ActionButton = 16973999; // 0x10300af
-    field public static final int Widget_Holo_ActionButton_CloseMode = 16974003; // 0x10300b3
-    field public static final int Widget_Holo_ActionButton_Overflow = 16974000; // 0x10300b0
-    field public static final int Widget_Holo_ActionButton_TextButton = 16974001; // 0x10300b1
-    field public static final int Widget_Holo_ActionMode = 16974002; // 0x10300b2
-    field public static final int Widget_Holo_AutoCompleteTextView = 16973968; // 0x1030090
-    field public static final int Widget_Holo_Button = 16973963; // 0x103008b
-    field public static final int Widget_Holo_Button_Borderless = 16974050; // 0x10300e2
-    field public static final int Widget_Holo_Button_Borderless_Small = 16974106; // 0x103011a
-    field public static final int Widget_Holo_Button_Inset = 16973965; // 0x103008d
-    field public static final int Widget_Holo_Button_Small = 16973964; // 0x103008c
-    field public static final int Widget_Holo_Button_Toggle = 16973966; // 0x103008e
-    field public static final int Widget_Holo_CalendarView = 16974060; // 0x10300ec
-    field public static final int Widget_Holo_CheckedTextView = 16974297; // 0x10301d9
-    field public static final int Widget_Holo_CompoundButton_CheckBox = 16973969; // 0x1030091
-    field public static final int Widget_Holo_CompoundButton_RadioButton = 16973986; // 0x10300a2
-    field public static final int Widget_Holo_CompoundButton_Star = 16973990; // 0x10300a6
-    field public static final int Widget_Holo_DatePicker = 16974063; // 0x10300ef
-    field public static final int Widget_Holo_DropDownItem = 16973994; // 0x10300aa
-    field public static final int Widget_Holo_DropDownItem_Spinner = 16973995; // 0x10300ab
-    field public static final int Widget_Holo_EditText = 16973971; // 0x1030093
-    field public static final int Widget_Holo_ExpandableListView = 16973972; // 0x1030094
-    field public static final int Widget_Holo_GridView = 16973973; // 0x1030095
-    field public static final int Widget_Holo_HorizontalScrollView = 16973988; // 0x10300a4
-    field public static final int Widget_Holo_ImageButton = 16973974; // 0x1030096
-    field public static final int Widget_Holo_Light = 16974005; // 0x10300b5
-    field public static final int Widget_Holo_Light_ActionBar = 16974049; // 0x10300e1
-    field public static final int Widget_Holo_Light_ActionBar_Solid = 16974114; // 0x1030122
-    field public static final int Widget_Holo_Light_ActionBar_Solid_Inverse = 16974115; // 0x1030123
-    field public static final int Widget_Holo_Light_ActionBar_TabBar = 16974074; // 0x10300fa
-    field public static final int Widget_Holo_Light_ActionBar_TabBar_Inverse = 16974116; // 0x1030124
-    field public static final int Widget_Holo_Light_ActionBar_TabText = 16974073; // 0x10300f9
-    field public static final int Widget_Holo_Light_ActionBar_TabText_Inverse = 16974118; // 0x1030126
-    field public static final int Widget_Holo_Light_ActionBar_TabView = 16974072; // 0x10300f8
-    field public static final int Widget_Holo_Light_ActionBar_TabView_Inverse = 16974117; // 0x1030125
-    field public static final int Widget_Holo_Light_ActionButton = 16974045; // 0x10300dd
-    field public static final int Widget_Holo_Light_ActionButton_CloseMode = 16974048; // 0x10300e0
-    field public static final int Widget_Holo_Light_ActionButton_Overflow = 16974046; // 0x10300de
-    field public static final int Widget_Holo_Light_ActionMode = 16974047; // 0x10300df
-    field public static final int Widget_Holo_Light_ActionMode_Inverse = 16974119; // 0x1030127
-    field public static final int Widget_Holo_Light_AutoCompleteTextView = 16974011; // 0x10300bb
-    field public static final int Widget_Holo_Light_Button = 16974006; // 0x10300b6
-    field public static final int Widget_Holo_Light_Button_Borderless_Small = 16974107; // 0x103011b
-    field public static final int Widget_Holo_Light_Button_Inset = 16974008; // 0x10300b8
-    field public static final int Widget_Holo_Light_Button_Small = 16974007; // 0x10300b7
-    field public static final int Widget_Holo_Light_Button_Toggle = 16974009; // 0x10300b9
-    field public static final int Widget_Holo_Light_CalendarView = 16974061; // 0x10300ed
-    field public static final int Widget_Holo_Light_CheckedTextView = 16974298; // 0x10301da
-    field public static final int Widget_Holo_Light_CompoundButton_CheckBox = 16974012; // 0x10300bc
-    field public static final int Widget_Holo_Light_CompoundButton_RadioButton = 16974032; // 0x10300d0
-    field public static final int Widget_Holo_Light_CompoundButton_Star = 16974036; // 0x10300d4
-    field public static final int Widget_Holo_Light_DropDownItem = 16974040; // 0x10300d8
-    field public static final int Widget_Holo_Light_DropDownItem_Spinner = 16974041; // 0x10300d9
-    field public static final int Widget_Holo_Light_EditText = 16974014; // 0x10300be
-    field public static final int Widget_Holo_Light_ExpandableListView = 16974015; // 0x10300bf
-    field public static final int Widget_Holo_Light_GridView = 16974016; // 0x10300c0
-    field public static final int Widget_Holo_Light_HorizontalScrollView = 16974034; // 0x10300d2
-    field public static final int Widget_Holo_Light_ImageButton = 16974017; // 0x10300c1
-    field public static final int Widget_Holo_Light_ListPopupWindow = 16974043; // 0x10300db
-    field public static final int Widget_Holo_Light_ListView = 16974018; // 0x10300c2
-    field public static final int Widget_Holo_Light_ListView_DropDown = 16974013; // 0x10300bd
-    field public static final int Widget_Holo_Light_MediaRouteButton = 16974294; // 0x10301d6
-    field public static final int Widget_Holo_Light_PopupMenu = 16974044; // 0x10300dc
-    field public static final int Widget_Holo_Light_PopupWindow = 16974019; // 0x10300c3
-    field public static final int Widget_Holo_Light_ProgressBar = 16974020; // 0x10300c4
-    field public static final int Widget_Holo_Light_ProgressBar_Horizontal = 16974021; // 0x10300c5
-    field public static final int Widget_Holo_Light_ProgressBar_Inverse = 16974025; // 0x10300c9
-    field public static final int Widget_Holo_Light_ProgressBar_Large = 16974024; // 0x10300c8
-    field public static final int Widget_Holo_Light_ProgressBar_Large_Inverse = 16974027; // 0x10300cb
-    field public static final int Widget_Holo_Light_ProgressBar_Small = 16974022; // 0x10300c6
-    field public static final int Widget_Holo_Light_ProgressBar_Small_Inverse = 16974026; // 0x10300ca
-    field public static final int Widget_Holo_Light_ProgressBar_Small_Title = 16974023; // 0x10300c7
-    field public static final int Widget_Holo_Light_RatingBar = 16974029; // 0x10300cd
-    field public static final int Widget_Holo_Light_RatingBar_Indicator = 16974030; // 0x10300ce
-    field public static final int Widget_Holo_Light_RatingBar_Small = 16974031; // 0x10300cf
-    field public static final int Widget_Holo_Light_ScrollView = 16974033; // 0x10300d1
-    field public static final int Widget_Holo_Light_SeekBar = 16974028; // 0x10300cc
-    field public static final int Widget_Holo_Light_Spinner = 16974035; // 0x10300d3
-    field public static final int Widget_Holo_Light_Tab = 16974052; // 0x10300e4
-    field public static final int Widget_Holo_Light_TabWidget = 16974037; // 0x10300d5
-    field public static final int Widget_Holo_Light_TextView = 16974010; // 0x10300ba
-    field public static final int Widget_Holo_Light_TextView_SpinnerItem = 16974042; // 0x10300da
-    field public static final int Widget_Holo_Light_WebTextView = 16974038; // 0x10300d6
-    field public static final int Widget_Holo_Light_WebView = 16974039; // 0x10300d7
-    field public static final int Widget_Holo_ListPopupWindow = 16973997; // 0x10300ad
-    field public static final int Widget_Holo_ListView = 16973975; // 0x1030097
-    field public static final int Widget_Holo_ListView_DropDown = 16973970; // 0x1030092
-    field public static final int Widget_Holo_MediaRouteButton = 16974293; // 0x10301d5
-    field public static final int Widget_Holo_PopupMenu = 16973998; // 0x10300ae
-    field public static final int Widget_Holo_PopupWindow = 16973976; // 0x1030098
-    field public static final int Widget_Holo_ProgressBar = 16973977; // 0x1030099
-    field public static final int Widget_Holo_ProgressBar_Horizontal = 16973978; // 0x103009a
-    field public static final int Widget_Holo_ProgressBar_Large = 16973981; // 0x103009d
-    field public static final int Widget_Holo_ProgressBar_Small = 16973979; // 0x103009b
-    field public static final int Widget_Holo_ProgressBar_Small_Title = 16973980; // 0x103009c
-    field public static final int Widget_Holo_RatingBar = 16973983; // 0x103009f
-    field public static final int Widget_Holo_RatingBar_Indicator = 16973984; // 0x10300a0
-    field public static final int Widget_Holo_RatingBar_Small = 16973985; // 0x10300a1
-    field public static final int Widget_Holo_ScrollView = 16973987; // 0x10300a3
-    field public static final int Widget_Holo_SeekBar = 16973982; // 0x103009e
-    field public static final int Widget_Holo_Spinner = 16973989; // 0x10300a5
-    field public static final int Widget_Holo_Tab = 16974051; // 0x10300e3
-    field public static final int Widget_Holo_TabWidget = 16973991; // 0x10300a7
-    field public static final int Widget_Holo_TextView = 16973967; // 0x103008f
-    field public static final int Widget_Holo_TextView_SpinnerItem = 16973996; // 0x10300ac
-    field public static final int Widget_Holo_WebTextView = 16973992; // 0x10300a8
-    field public static final int Widget_Holo_WebView = 16973993; // 0x10300a9
-    field public static final int Widget_ImageButton = 16973862; // 0x1030026
-    field public static final int Widget_ImageWell = 16973861; // 0x1030025
-    field @Deprecated public static final int Widget_KeyboardView = 16973911; // 0x1030057
-    field public static final int Widget_ListPopupWindow = 16973957; // 0x1030085
-    field public static final int Widget_ListView = 16973870; // 0x103002e
-    field public static final int Widget_ListView_DropDown = 16973872; // 0x1030030
-    field public static final int Widget_ListView_Menu = 16973873; // 0x1030031
-    field public static final int Widget_ListView_White = 16973871; // 0x103002f
-    field public static final int Widget_Material = 16974413; // 0x103024d
-    field public static final int Widget_Material_ActionBar = 16974414; // 0x103024e
-    field public static final int Widget_Material_ActionBar_Solid = 16974415; // 0x103024f
-    field public static final int Widget_Material_ActionBar_TabBar = 16974416; // 0x1030250
-    field public static final int Widget_Material_ActionBar_TabText = 16974417; // 0x1030251
-    field public static final int Widget_Material_ActionBar_TabView = 16974418; // 0x1030252
-    field public static final int Widget_Material_ActionButton = 16974419; // 0x1030253
-    field public static final int Widget_Material_ActionButton_CloseMode = 16974420; // 0x1030254
-    field public static final int Widget_Material_ActionButton_Overflow = 16974421; // 0x1030255
-    field public static final int Widget_Material_ActionMode = 16974422; // 0x1030256
-    field public static final int Widget_Material_AutoCompleteTextView = 16974423; // 0x1030257
-    field public static final int Widget_Material_Button = 16974424; // 0x1030258
-    field public static final int Widget_Material_ButtonBar = 16974431; // 0x103025f
-    field public static final int Widget_Material_ButtonBar_AlertDialog = 16974432; // 0x1030260
-    field public static final int Widget_Material_Button_Borderless = 16974425; // 0x1030259
-    field public static final int Widget_Material_Button_Borderless_Colored = 16974426; // 0x103025a
-    field public static final int Widget_Material_Button_Borderless_Small = 16974427; // 0x103025b
-    field public static final int Widget_Material_Button_Colored = 16974547; // 0x10302d3
-    field public static final int Widget_Material_Button_Inset = 16974428; // 0x103025c
-    field public static final int Widget_Material_Button_Small = 16974429; // 0x103025d
-    field public static final int Widget_Material_Button_Toggle = 16974430; // 0x103025e
-    field public static final int Widget_Material_CalendarView = 16974433; // 0x1030261
-    field public static final int Widget_Material_CheckedTextView = 16974434; // 0x1030262
-    field public static final int Widget_Material_CompoundButton_CheckBox = 16974435; // 0x1030263
-    field public static final int Widget_Material_CompoundButton_RadioButton = 16974436; // 0x1030264
-    field public static final int Widget_Material_CompoundButton_Star = 16974437; // 0x1030265
-    field public static final int Widget_Material_CompoundButton_Switch = 16974554; // 0x10302da
-    field public static final int Widget_Material_DatePicker = 16974438; // 0x1030266
-    field public static final int Widget_Material_DropDownItem = 16974439; // 0x1030267
-    field public static final int Widget_Material_DropDownItem_Spinner = 16974440; // 0x1030268
-    field public static final int Widget_Material_EditText = 16974441; // 0x1030269
-    field public static final int Widget_Material_ExpandableListView = 16974442; // 0x103026a
-    field public static final int Widget_Material_FastScroll = 16974443; // 0x103026b
-    field public static final int Widget_Material_GridView = 16974444; // 0x103026c
-    field public static final int Widget_Material_HorizontalScrollView = 16974445; // 0x103026d
-    field public static final int Widget_Material_ImageButton = 16974446; // 0x103026e
-    field public static final int Widget_Material_Light = 16974478; // 0x103028e
-    field public static final int Widget_Material_Light_ActionBar = 16974479; // 0x103028f
-    field public static final int Widget_Material_Light_ActionBar_Solid = 16974480; // 0x1030290
-    field public static final int Widget_Material_Light_ActionBar_TabBar = 16974481; // 0x1030291
-    field public static final int Widget_Material_Light_ActionBar_TabText = 16974482; // 0x1030292
-    field public static final int Widget_Material_Light_ActionBar_TabView = 16974483; // 0x1030293
-    field public static final int Widget_Material_Light_ActionButton = 16974484; // 0x1030294
-    field public static final int Widget_Material_Light_ActionButton_CloseMode = 16974485; // 0x1030295
-    field public static final int Widget_Material_Light_ActionButton_Overflow = 16974486; // 0x1030296
-    field public static final int Widget_Material_Light_ActionMode = 16974487; // 0x1030297
-    field public static final int Widget_Material_Light_AutoCompleteTextView = 16974488; // 0x1030298
-    field public static final int Widget_Material_Light_Button = 16974489; // 0x1030299
-    field public static final int Widget_Material_Light_ButtonBar = 16974496; // 0x10302a0
-    field public static final int Widget_Material_Light_ButtonBar_AlertDialog = 16974497; // 0x10302a1
-    field public static final int Widget_Material_Light_Button_Borderless = 16974490; // 0x103029a
-    field public static final int Widget_Material_Light_Button_Borderless_Colored = 16974491; // 0x103029b
-    field public static final int Widget_Material_Light_Button_Borderless_Small = 16974492; // 0x103029c
-    field public static final int Widget_Material_Light_Button_Inset = 16974493; // 0x103029d
-    field public static final int Widget_Material_Light_Button_Small = 16974494; // 0x103029e
-    field public static final int Widget_Material_Light_Button_Toggle = 16974495; // 0x103029f
-    field public static final int Widget_Material_Light_CalendarView = 16974498; // 0x10302a2
-    field public static final int Widget_Material_Light_CheckedTextView = 16974499; // 0x10302a3
-    field public static final int Widget_Material_Light_CompoundButton_CheckBox = 16974500; // 0x10302a4
-    field public static final int Widget_Material_Light_CompoundButton_RadioButton = 16974501; // 0x10302a5
-    field public static final int Widget_Material_Light_CompoundButton_Star = 16974502; // 0x10302a6
-    field public static final int Widget_Material_Light_CompoundButton_Switch = 16974555; // 0x10302db
-    field public static final int Widget_Material_Light_DatePicker = 16974503; // 0x10302a7
-    field public static final int Widget_Material_Light_DropDownItem = 16974504; // 0x10302a8
-    field public static final int Widget_Material_Light_DropDownItem_Spinner = 16974505; // 0x10302a9
-    field public static final int Widget_Material_Light_EditText = 16974506; // 0x10302aa
-    field public static final int Widget_Material_Light_ExpandableListView = 16974507; // 0x10302ab
-    field public static final int Widget_Material_Light_FastScroll = 16974508; // 0x10302ac
-    field public static final int Widget_Material_Light_GridView = 16974509; // 0x10302ad
-    field public static final int Widget_Material_Light_HorizontalScrollView = 16974510; // 0x10302ae
-    field public static final int Widget_Material_Light_ImageButton = 16974511; // 0x10302af
-    field public static final int Widget_Material_Light_ListPopupWindow = 16974512; // 0x10302b0
-    field public static final int Widget_Material_Light_ListView = 16974513; // 0x10302b1
-    field public static final int Widget_Material_Light_ListView_DropDown = 16974514; // 0x10302b2
-    field public static final int Widget_Material_Light_MediaRouteButton = 16974515; // 0x10302b3
-    field public static final int Widget_Material_Light_NumberPicker = 16974557; // 0x10302dd
-    field public static final int Widget_Material_Light_PopupMenu = 16974516; // 0x10302b4
-    field public static final int Widget_Material_Light_PopupMenu_Overflow = 16974517; // 0x10302b5
-    field public static final int Widget_Material_Light_PopupWindow = 16974518; // 0x10302b6
-    field public static final int Widget_Material_Light_ProgressBar = 16974519; // 0x10302b7
-    field public static final int Widget_Material_Light_ProgressBar_Horizontal = 16974520; // 0x10302b8
-    field public static final int Widget_Material_Light_ProgressBar_Inverse = 16974521; // 0x10302b9
-    field public static final int Widget_Material_Light_ProgressBar_Large = 16974522; // 0x10302ba
-    field public static final int Widget_Material_Light_ProgressBar_Large_Inverse = 16974523; // 0x10302bb
-    field public static final int Widget_Material_Light_ProgressBar_Small = 16974524; // 0x10302bc
-    field public static final int Widget_Material_Light_ProgressBar_Small_Inverse = 16974525; // 0x10302bd
-    field public static final int Widget_Material_Light_ProgressBar_Small_Title = 16974526; // 0x10302be
-    field public static final int Widget_Material_Light_RatingBar = 16974527; // 0x10302bf
-    field public static final int Widget_Material_Light_RatingBar_Indicator = 16974528; // 0x10302c0
-    field public static final int Widget_Material_Light_RatingBar_Small = 16974529; // 0x10302c1
-    field public static final int Widget_Material_Light_ScrollView = 16974530; // 0x10302c2
-    field public static final int Widget_Material_Light_SearchView = 16974531; // 0x10302c3
-    field public static final int Widget_Material_Light_SeekBar = 16974532; // 0x10302c4
-    field public static final int Widget_Material_Light_SegmentedButton = 16974533; // 0x10302c5
-    field public static final int Widget_Material_Light_Spinner = 16974535; // 0x10302c7
-    field public static final int Widget_Material_Light_Spinner_Underlined = 16974536; // 0x10302c8
-    field public static final int Widget_Material_Light_StackView = 16974534; // 0x10302c6
-    field public static final int Widget_Material_Light_Tab = 16974537; // 0x10302c9
-    field public static final int Widget_Material_Light_TabWidget = 16974538; // 0x10302ca
-    field public static final int Widget_Material_Light_TextView = 16974539; // 0x10302cb
-    field public static final int Widget_Material_Light_TextView_SpinnerItem = 16974540; // 0x10302cc
-    field public static final int Widget_Material_Light_TimePicker = 16974541; // 0x10302cd
-    field public static final int Widget_Material_Light_WebTextView = 16974542; // 0x10302ce
-    field public static final int Widget_Material_Light_WebView = 16974543; // 0x10302cf
-    field public static final int Widget_Material_ListPopupWindow = 16974447; // 0x103026f
-    field public static final int Widget_Material_ListView = 16974448; // 0x1030270
-    field public static final int Widget_Material_ListView_DropDown = 16974449; // 0x1030271
-    field public static final int Widget_Material_MediaRouteButton = 16974450; // 0x1030272
-    field public static final int Widget_Material_NumberPicker = 16974556; // 0x10302dc
-    field public static final int Widget_Material_PopupMenu = 16974451; // 0x1030273
-    field public static final int Widget_Material_PopupMenu_Overflow = 16974452; // 0x1030274
-    field public static final int Widget_Material_PopupWindow = 16974453; // 0x1030275
-    field public static final int Widget_Material_ProgressBar = 16974454; // 0x1030276
-    field public static final int Widget_Material_ProgressBar_Horizontal = 16974455; // 0x1030277
-    field public static final int Widget_Material_ProgressBar_Large = 16974456; // 0x1030278
-    field public static final int Widget_Material_ProgressBar_Small = 16974457; // 0x1030279
-    field public static final int Widget_Material_ProgressBar_Small_Title = 16974458; // 0x103027a
-    field public static final int Widget_Material_RatingBar = 16974459; // 0x103027b
-    field public static final int Widget_Material_RatingBar_Indicator = 16974460; // 0x103027c
-    field public static final int Widget_Material_RatingBar_Small = 16974461; // 0x103027d
-    field public static final int Widget_Material_ScrollView = 16974462; // 0x103027e
-    field public static final int Widget_Material_SearchView = 16974463; // 0x103027f
-    field public static final int Widget_Material_SeekBar = 16974464; // 0x1030280
-    field public static final int Widget_Material_SeekBar_Discrete = 16974553; // 0x10302d9
-    field public static final int Widget_Material_SegmentedButton = 16974465; // 0x1030281
-    field public static final int Widget_Material_Spinner = 16974467; // 0x1030283
-    field public static final int Widget_Material_Spinner_Underlined = 16974468; // 0x1030284
-    field public static final int Widget_Material_StackView = 16974466; // 0x1030282
-    field public static final int Widget_Material_Tab = 16974469; // 0x1030285
-    field public static final int Widget_Material_TabWidget = 16974470; // 0x1030286
-    field public static final int Widget_Material_TextView = 16974471; // 0x1030287
-    field public static final int Widget_Material_TextView_SpinnerItem = 16974472; // 0x1030288
-    field public static final int Widget_Material_TimePicker = 16974473; // 0x1030289
-    field public static final int Widget_Material_Toolbar = 16974474; // 0x103028a
-    field public static final int Widget_Material_Toolbar_Button_Navigation = 16974475; // 0x103028b
-    field public static final int Widget_Material_WebTextView = 16974476; // 0x103028c
-    field public static final int Widget_Material_WebView = 16974477; // 0x103028d
-    field public static final int Widget_PopupMenu = 16973958; // 0x1030086
-    field public static final int Widget_PopupWindow = 16973878; // 0x1030036
-    field public static final int Widget_ProgressBar = 16973852; // 0x103001c
-    field public static final int Widget_ProgressBar_Horizontal = 16973855; // 0x103001f
-    field public static final int Widget_ProgressBar_Inverse = 16973915; // 0x103005b
-    field public static final int Widget_ProgressBar_Large = 16973853; // 0x103001d
-    field public static final int Widget_ProgressBar_Large_Inverse = 16973916; // 0x103005c
-    field public static final int Widget_ProgressBar_Small = 16973854; // 0x103001e
-    field public static final int Widget_ProgressBar_Small_Inverse = 16973917; // 0x103005d
-    field public static final int Widget_RatingBar = 16973857; // 0x1030021
-    field public static final int Widget_ScrollView = 16973869; // 0x103002d
-    field public static final int Widget_SeekBar = 16973856; // 0x1030020
-    field public static final int Widget_Spinner = 16973864; // 0x1030028
-    field public static final int Widget_Spinner_DropDown = 16973955; // 0x1030083
-    field public static final int Widget_StackView = 16974310; // 0x10301e6
-    field public static final int Widget_TabWidget = 16973876; // 0x1030034
-    field public static final int Widget_TextView = 16973858; // 0x1030022
-    field public static final int Widget_TextView_PopupMenu = 16973865; // 0x1030029
-    field public static final int Widget_TextView_SpinnerItem = 16973866; // 0x103002a
-    field public static final int Widget_Toolbar = 16974311; // 0x10301e7
-    field public static final int Widget_Toolbar_Button_Navigation = 16974312; // 0x10301e8
-    field public static final int Widget_WebView = 16973875; // 0x1030033
-  }
-
-  public static final class R.transition {
-    ctor public R.transition();
-    field public static final int explode = 17760259; // 0x10f0003
-    field public static final int fade = 17760258; // 0x10f0002
-    field public static final int move = 17760257; // 0x10f0001
-    field public static final int no_transition = 17760256; // 0x10f0000
-    field public static final int slide_bottom = 17760260; // 0x10f0004
-    field public static final int slide_left = 17760263; // 0x10f0007
-    field public static final int slide_right = 17760262; // 0x10f0006
-    field public static final int slide_top = 17760261; // 0x10f0005
-  }
-
-  public static final class R.xml {
-    ctor public R.xml();
-  }
-
-}
-
-package android.accessibilityservice {
-
-  public final class AccessibilityButtonController {
-    method public boolean isAccessibilityButtonAvailable();
-    method public void registerAccessibilityButtonCallback(@NonNull android.accessibilityservice.AccessibilityButtonController.AccessibilityButtonCallback);
-    method public void registerAccessibilityButtonCallback(@NonNull android.accessibilityservice.AccessibilityButtonController.AccessibilityButtonCallback, @NonNull android.os.Handler);
-    method public void unregisterAccessibilityButtonCallback(@NonNull android.accessibilityservice.AccessibilityButtonController.AccessibilityButtonCallback);
-  }
-
-  public abstract static class AccessibilityButtonController.AccessibilityButtonCallback {
-    ctor public AccessibilityButtonController.AccessibilityButtonCallback();
-    method public void onAvailabilityChanged(android.accessibilityservice.AccessibilityButtonController, boolean);
-    method public void onClicked(android.accessibilityservice.AccessibilityButtonController);
-  }
-
-  public final class AccessibilityGestureEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getDisplayId();
-    method public int getGestureId();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.accessibilityservice.AccessibilityGestureEvent> CREATOR;
-  }
-
-  public abstract class AccessibilityService extends android.app.Service {
-    ctor public AccessibilityService();
-    method public final void disableSelf();
-    method public final boolean dispatchGesture(@NonNull android.accessibilityservice.GestureDescription, @Nullable android.accessibilityservice.AccessibilityService.GestureResultCallback, @Nullable android.os.Handler);
-    method public android.view.accessibility.AccessibilityNodeInfo findFocus(int);
-    method @NonNull public final android.accessibilityservice.AccessibilityButtonController getAccessibilityButtonController();
-    method @NonNull public final android.accessibilityservice.AccessibilityButtonController getAccessibilityButtonController(int);
-    method @NonNull @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public final android.accessibilityservice.FingerprintGestureController getFingerprintGestureController();
-    method @NonNull public final android.accessibilityservice.AccessibilityService.MagnificationController getMagnificationController();
-    method public android.view.accessibility.AccessibilityNodeInfo getRootInActiveWindow();
-    method public final android.accessibilityservice.AccessibilityServiceInfo getServiceInfo();
-    method @NonNull public final android.accessibilityservice.AccessibilityService.SoftKeyboardController getSoftKeyboardController();
-    method @NonNull public final java.util.List<android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction> getSystemActions();
-    method public java.util.List<android.view.accessibility.AccessibilityWindowInfo> getWindows();
-    method @NonNull public final android.util.SparseArray<java.util.List<android.view.accessibility.AccessibilityWindowInfo>> getWindowsOnAllDisplays();
-    method public abstract void onAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method @Deprecated protected boolean onGesture(int);
-    method public boolean onGesture(@NonNull android.accessibilityservice.AccessibilityGestureEvent);
-    method public abstract void onInterrupt();
-    method protected boolean onKeyEvent(android.view.KeyEvent);
-    method protected void onServiceConnected();
-    method public void onSystemActionsChanged();
-    method public final boolean performGlobalAction(int);
-    method public void setGestureDetectionPassthroughRegion(int, @NonNull android.graphics.Region);
-    method public final void setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo);
-    method public void setTouchExplorationPassthroughRegion(int, @NonNull android.graphics.Region);
-    method public void takeScreenshot(int, @NonNull java.util.concurrent.Executor, @NonNull android.accessibilityservice.AccessibilityService.TakeScreenshotCallback);
-    field public static final int ERROR_TAKE_SCREENSHOT_INTERNAL_ERROR = 1; // 0x1
-    field public static final int ERROR_TAKE_SCREENSHOT_INTERVAL_TIME_SHORT = 3; // 0x3
-    field public static final int ERROR_TAKE_SCREENSHOT_INVALID_DISPLAY = 4; // 0x4
-    field public static final int ERROR_TAKE_SCREENSHOT_NO_ACCESSIBILITY_ACCESS = 2; // 0x2
-    field public static final int GESTURE_2_FINGER_DOUBLE_TAP = 20; // 0x14
-    field public static final int GESTURE_2_FINGER_DOUBLE_TAP_AND_HOLD = 40; // 0x28
-    field public static final int GESTURE_2_FINGER_SINGLE_TAP = 19; // 0x13
-    field public static final int GESTURE_2_FINGER_SWIPE_DOWN = 26; // 0x1a
-    field public static final int GESTURE_2_FINGER_SWIPE_LEFT = 27; // 0x1b
-    field public static final int GESTURE_2_FINGER_SWIPE_RIGHT = 28; // 0x1c
-    field public static final int GESTURE_2_FINGER_SWIPE_UP = 25; // 0x19
-    field public static final int GESTURE_2_FINGER_TRIPLE_TAP = 21; // 0x15
-    field public static final int GESTURE_3_FINGER_DOUBLE_TAP = 23; // 0x17
-    field public static final int GESTURE_3_FINGER_DOUBLE_TAP_AND_HOLD = 41; // 0x29
-    field public static final int GESTURE_3_FINGER_SINGLE_TAP = 22; // 0x16
-    field public static final int GESTURE_3_FINGER_SWIPE_DOWN = 30; // 0x1e
-    field public static final int GESTURE_3_FINGER_SWIPE_LEFT = 31; // 0x1f
-    field public static final int GESTURE_3_FINGER_SWIPE_RIGHT = 32; // 0x20
-    field public static final int GESTURE_3_FINGER_SWIPE_UP = 29; // 0x1d
-    field public static final int GESTURE_3_FINGER_TRIPLE_TAP = 24; // 0x18
-    field public static final int GESTURE_4_FINGER_DOUBLE_TAP = 38; // 0x26
-    field public static final int GESTURE_4_FINGER_DOUBLE_TAP_AND_HOLD = 42; // 0x2a
-    field public static final int GESTURE_4_FINGER_SINGLE_TAP = 37; // 0x25
-    field public static final int GESTURE_4_FINGER_SWIPE_DOWN = 34; // 0x22
-    field public static final int GESTURE_4_FINGER_SWIPE_LEFT = 35; // 0x23
-    field public static final int GESTURE_4_FINGER_SWIPE_RIGHT = 36; // 0x24
-    field public static final int GESTURE_4_FINGER_SWIPE_UP = 33; // 0x21
-    field public static final int GESTURE_4_FINGER_TRIPLE_TAP = 39; // 0x27
-    field public static final int GESTURE_DOUBLE_TAP = 17; // 0x11
-    field public static final int GESTURE_DOUBLE_TAP_AND_HOLD = 18; // 0x12
-    field public static final int GESTURE_SWIPE_DOWN = 2; // 0x2
-    field public static final int GESTURE_SWIPE_DOWN_AND_LEFT = 15; // 0xf
-    field public static final int GESTURE_SWIPE_DOWN_AND_RIGHT = 16; // 0x10
-    field public static final int GESTURE_SWIPE_DOWN_AND_UP = 8; // 0x8
-    field public static final int GESTURE_SWIPE_LEFT = 3; // 0x3
-    field public static final int GESTURE_SWIPE_LEFT_AND_DOWN = 10; // 0xa
-    field public static final int GESTURE_SWIPE_LEFT_AND_RIGHT = 5; // 0x5
-    field public static final int GESTURE_SWIPE_LEFT_AND_UP = 9; // 0x9
-    field public static final int GESTURE_SWIPE_RIGHT = 4; // 0x4
-    field public static final int GESTURE_SWIPE_RIGHT_AND_DOWN = 12; // 0xc
-    field public static final int GESTURE_SWIPE_RIGHT_AND_LEFT = 6; // 0x6
-    field public static final int GESTURE_SWIPE_RIGHT_AND_UP = 11; // 0xb
-    field public static final int GESTURE_SWIPE_UP = 1; // 0x1
-    field public static final int GESTURE_SWIPE_UP_AND_DOWN = 7; // 0x7
-    field public static final int GESTURE_SWIPE_UP_AND_LEFT = 13; // 0xd
-    field public static final int GESTURE_SWIPE_UP_AND_RIGHT = 14; // 0xe
-    field public static final int GLOBAL_ACTION_BACK = 1; // 0x1
-    field public static final int GLOBAL_ACTION_HOME = 2; // 0x2
-    field public static final int GLOBAL_ACTION_LOCK_SCREEN = 8; // 0x8
-    field public static final int GLOBAL_ACTION_NOTIFICATIONS = 4; // 0x4
-    field public static final int GLOBAL_ACTION_POWER_DIALOG = 6; // 0x6
-    field public static final int GLOBAL_ACTION_QUICK_SETTINGS = 5; // 0x5
-    field public static final int GLOBAL_ACTION_RECENTS = 3; // 0x3
-    field public static final int GLOBAL_ACTION_TAKE_SCREENSHOT = 9; // 0x9
-    field public static final int GLOBAL_ACTION_TOGGLE_SPLIT_SCREEN = 7; // 0x7
-    field public static final String SERVICE_INTERFACE = "android.accessibilityservice.AccessibilityService";
-    field public static final String SERVICE_META_DATA = "android.accessibilityservice";
-    field public static final int SHOW_MODE_AUTO = 0; // 0x0
-    field public static final int SHOW_MODE_HIDDEN = 1; // 0x1
-    field public static final int SHOW_MODE_IGNORE_HARD_KEYBOARD = 2; // 0x2
-  }
-
-  public abstract static class AccessibilityService.GestureResultCallback {
-    ctor public AccessibilityService.GestureResultCallback();
-    method public void onCancelled(android.accessibilityservice.GestureDescription);
-    method public void onCompleted(android.accessibilityservice.GestureDescription);
-  }
-
-  public static final class AccessibilityService.MagnificationController {
-    method public void addListener(@NonNull android.accessibilityservice.AccessibilityService.MagnificationController.OnMagnificationChangedListener);
-    method public void addListener(@NonNull android.accessibilityservice.AccessibilityService.MagnificationController.OnMagnificationChangedListener, @Nullable android.os.Handler);
-    method public float getCenterX();
-    method public float getCenterY();
-    method @NonNull public android.graphics.Region getMagnificationRegion();
-    method public float getScale();
-    method public boolean removeListener(@NonNull android.accessibilityservice.AccessibilityService.MagnificationController.OnMagnificationChangedListener);
-    method public boolean reset(boolean);
-    method public boolean setCenter(float, float, boolean);
-    method public boolean setScale(float, boolean);
-  }
-
-  public static interface AccessibilityService.MagnificationController.OnMagnificationChangedListener {
-    method public void onMagnificationChanged(@NonNull android.accessibilityservice.AccessibilityService.MagnificationController, @NonNull android.graphics.Region, float, float, float);
-  }
-
-  public static final class AccessibilityService.ScreenshotResult {
-    method @NonNull public android.graphics.ColorSpace getColorSpace();
-    method @NonNull public android.hardware.HardwareBuffer getHardwareBuffer();
-    method public long getTimestamp();
-  }
-
-  public static final class AccessibilityService.SoftKeyboardController {
-    method public void addOnShowModeChangedListener(@NonNull android.accessibilityservice.AccessibilityService.SoftKeyboardController.OnShowModeChangedListener);
-    method public void addOnShowModeChangedListener(@NonNull android.accessibilityservice.AccessibilityService.SoftKeyboardController.OnShowModeChangedListener, @Nullable android.os.Handler);
-    method public int getShowMode();
-    method public boolean removeOnShowModeChangedListener(@NonNull android.accessibilityservice.AccessibilityService.SoftKeyboardController.OnShowModeChangedListener);
-    method public boolean setShowMode(int);
-    method public boolean switchToInputMethod(@NonNull String);
-  }
-
-  public static interface AccessibilityService.SoftKeyboardController.OnShowModeChangedListener {
-    method public void onShowModeChanged(@NonNull android.accessibilityservice.AccessibilityService.SoftKeyboardController, int);
-  }
-
-  public static interface AccessibilityService.TakeScreenshotCallback {
-    method public void onFailure(int);
-    method public void onSuccess(@NonNull android.accessibilityservice.AccessibilityService.ScreenshotResult);
-  }
-
-  public class AccessibilityServiceInfo implements android.os.Parcelable {
-    ctor public AccessibilityServiceInfo();
-    method public static String capabilityToString(int);
-    method public int describeContents();
-    method public static String feedbackTypeToString(int);
-    method public static String flagToString(int);
-    method @Deprecated public boolean getCanRetrieveWindowContent();
-    method public int getCapabilities();
-    method @Deprecated public String getDescription();
-    method public String getId();
-    method public int getInteractiveUiTimeoutMillis();
-    method public int getNonInteractiveUiTimeoutMillis();
-    method public android.content.pm.ResolveInfo getResolveInfo();
-    method public String getSettingsActivityName();
-    method public String loadDescription(android.content.pm.PackageManager);
-    method public CharSequence loadSummary(android.content.pm.PackageManager);
-    method public void setInteractiveUiTimeoutMillis(@IntRange(from=0) int);
-    method public void setNonInteractiveUiTimeoutMillis(@IntRange(from=0) int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CAPABILITY_CAN_CONTROL_MAGNIFICATION = 16; // 0x10
-    field public static final int CAPABILITY_CAN_PERFORM_GESTURES = 32; // 0x20
-    field @Deprecated public static final int CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 4; // 0x4
-    field public static final int CAPABILITY_CAN_REQUEST_FILTER_KEY_EVENTS = 8; // 0x8
-    field public static final int CAPABILITY_CAN_REQUEST_FINGERPRINT_GESTURES = 64; // 0x40
-    field public static final int CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION = 2; // 0x2
-    field public static final int CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT = 1; // 0x1
-    field public static final int CAPABILITY_CAN_TAKE_SCREENSHOT = 128; // 0x80
-    field @NonNull public static final android.os.Parcelable.Creator<android.accessibilityservice.AccessibilityServiceInfo> CREATOR;
-    field public static final int DEFAULT = 1; // 0x1
-    field public static final int FEEDBACK_ALL_MASK = -1; // 0xffffffff
-    field public static final int FEEDBACK_AUDIBLE = 4; // 0x4
-    field public static final int FEEDBACK_BRAILLE = 32; // 0x20
-    field public static final int FEEDBACK_GENERIC = 16; // 0x10
-    field public static final int FEEDBACK_HAPTIC = 2; // 0x2
-    field public static final int FEEDBACK_SPOKEN = 1; // 0x1
-    field public static final int FEEDBACK_VISUAL = 8; // 0x8
-    field public static final int FLAG_ENABLE_ACCESSIBILITY_VOLUME = 128; // 0x80
-    field public static final int FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 2; // 0x2
-    field public static final int FLAG_REPORT_VIEW_IDS = 16; // 0x10
-    field public static final int FLAG_REQUEST_ACCESSIBILITY_BUTTON = 256; // 0x100
-    field @Deprecated public static final int FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 8; // 0x8
-    field public static final int FLAG_REQUEST_FILTER_KEY_EVENTS = 32; // 0x20
-    field public static final int FLAG_REQUEST_FINGERPRINT_GESTURES = 512; // 0x200
-    field public static final int FLAG_REQUEST_MULTI_FINGER_GESTURES = 4096; // 0x1000
-    field public static final int FLAG_REQUEST_SHORTCUT_WARNING_DIALOG_SPOKEN_FEEDBACK = 1024; // 0x400
-    field public static final int FLAG_REQUEST_TOUCH_EXPLORATION_MODE = 4; // 0x4
-    field public static final int FLAG_RETRIEVE_INTERACTIVE_WINDOWS = 64; // 0x40
-    field public static final int FLAG_SERVICE_HANDLES_DOUBLE_TAP = 2048; // 0x800
-    field public int eventTypes;
-    field public int feedbackType;
-    field public int flags;
-    field public long notificationTimeout;
-    field public String[] packageNames;
-  }
-
-  public final class FingerprintGestureController {
-    method public boolean isGestureDetectionAvailable();
-    method public void registerFingerprintGestureCallback(@NonNull android.accessibilityservice.FingerprintGestureController.FingerprintGestureCallback, @Nullable android.os.Handler);
-    method public void unregisterFingerprintGestureCallback(android.accessibilityservice.FingerprintGestureController.FingerprintGestureCallback);
-    field public static final int FINGERPRINT_GESTURE_SWIPE_DOWN = 8; // 0x8
-    field public static final int FINGERPRINT_GESTURE_SWIPE_LEFT = 2; // 0x2
-    field public static final int FINGERPRINT_GESTURE_SWIPE_RIGHT = 1; // 0x1
-    field public static final int FINGERPRINT_GESTURE_SWIPE_UP = 4; // 0x4
-  }
-
-  public abstract static class FingerprintGestureController.FingerprintGestureCallback {
-    ctor public FingerprintGestureController.FingerprintGestureCallback();
-    method public void onGestureDetected(int);
-    method public void onGestureDetectionAvailabilityChanged(boolean);
-  }
-
-  public final class GestureDescription {
-    method public int getDisplayId();
-    method public static long getMaxGestureDuration();
-    method public static int getMaxStrokeCount();
-    method public android.accessibilityservice.GestureDescription.StrokeDescription getStroke(@IntRange(from=0) int);
-    method public int getStrokeCount();
-  }
-
-  public static class GestureDescription.Builder {
-    ctor public GestureDescription.Builder();
-    method public android.accessibilityservice.GestureDescription.Builder addStroke(@NonNull android.accessibilityservice.GestureDescription.StrokeDescription);
-    method public android.accessibilityservice.GestureDescription build();
-    method @NonNull public android.accessibilityservice.GestureDescription.Builder setDisplayId(int);
-  }
-
-  public static class GestureDescription.StrokeDescription {
-    ctor public GestureDescription.StrokeDescription(@NonNull android.graphics.Path, @IntRange(from=0) long, @IntRange(from=0) long);
-    ctor public GestureDescription.StrokeDescription(@NonNull android.graphics.Path, @IntRange(from=0) long, @IntRange(from=0) long, boolean);
-    method public android.accessibilityservice.GestureDescription.StrokeDescription continueStroke(android.graphics.Path, long, long, boolean);
-    method public long getDuration();
-    method public android.graphics.Path getPath();
-    method public long getStartTime();
-    method public boolean willContinue();
-  }
-
-}
-
-package android.accounts {
-
-  public abstract class AbstractAccountAuthenticator {
-    ctor public AbstractAccountAuthenticator(android.content.Context);
-    method public abstract android.os.Bundle addAccount(android.accounts.AccountAuthenticatorResponse, String, String, String[], android.os.Bundle) throws android.accounts.NetworkErrorException;
-    method public android.os.Bundle addAccountFromCredentials(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, android.os.Bundle) throws android.accounts.NetworkErrorException;
-    method public abstract android.os.Bundle confirmCredentials(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, android.os.Bundle) throws android.accounts.NetworkErrorException;
-    method public abstract android.os.Bundle editProperties(android.accounts.AccountAuthenticatorResponse, String);
-    method public android.os.Bundle finishSession(android.accounts.AccountAuthenticatorResponse, String, android.os.Bundle) throws android.accounts.NetworkErrorException;
-    method public android.os.Bundle getAccountCredentialsForCloning(android.accounts.AccountAuthenticatorResponse, android.accounts.Account) throws android.accounts.NetworkErrorException;
-    method public android.os.Bundle getAccountRemovalAllowed(android.accounts.AccountAuthenticatorResponse, android.accounts.Account) throws android.accounts.NetworkErrorException;
-    method public abstract android.os.Bundle getAuthToken(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, String, android.os.Bundle) throws android.accounts.NetworkErrorException;
-    method public abstract String getAuthTokenLabel(String);
-    method public final android.os.IBinder getIBinder();
-    method public abstract android.os.Bundle hasFeatures(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, String[]) throws android.accounts.NetworkErrorException;
-    method public android.os.Bundle isCredentialsUpdateSuggested(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, String) throws android.accounts.NetworkErrorException;
-    method public android.os.Bundle startAddAccountSession(android.accounts.AccountAuthenticatorResponse, String, String, String[], android.os.Bundle) throws android.accounts.NetworkErrorException;
-    method public android.os.Bundle startUpdateCredentialsSession(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, String, android.os.Bundle) throws android.accounts.NetworkErrorException;
-    method public abstract android.os.Bundle updateCredentials(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, String, android.os.Bundle) throws android.accounts.NetworkErrorException;
-    field public static final String KEY_CUSTOM_TOKEN_EXPIRY = "android.accounts.expiry";
-  }
-
-  public class Account implements android.os.Parcelable {
-    ctor public Account(String, String);
-    ctor public Account(android.os.Parcel);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.accounts.Account> CREATOR;
-    field public final String name;
-    field public final String type;
-  }
-
-  @Deprecated public class AccountAuthenticatorActivity extends android.app.Activity {
-    ctor @Deprecated public AccountAuthenticatorActivity();
-    method @Deprecated public final void setAccountAuthenticatorResult(android.os.Bundle);
-  }
-
-  public class AccountAuthenticatorResponse implements android.os.Parcelable {
-    ctor public AccountAuthenticatorResponse(android.os.Parcel);
-    method public int describeContents();
-    method public void onError(int, String);
-    method public void onRequestContinued();
-    method public void onResult(android.os.Bundle);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.accounts.AccountAuthenticatorResponse> CREATOR;
-  }
-
-  public class AccountManager {
-    method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> addAccount(String, String, String[], android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public boolean addAccountExplicitly(android.accounts.Account, String, android.os.Bundle);
-    method public boolean addAccountExplicitly(android.accounts.Account, String, android.os.Bundle, java.util.Map<java.lang.String,java.lang.Integer>);
-    method @RequiresPermission(value="android.permission.GET_ACCOUNTS", apis="..22") public void addOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener, android.os.Handler, boolean);
-    method public void addOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener, android.os.Handler, boolean, String[]);
-    method @RequiresPermission(value="android.permission.USE_CREDENTIALS", apis="..22") public String blockingGetAuthToken(android.accounts.Account, String, boolean) throws android.accounts.AuthenticatorException, java.io.IOException, android.accounts.OperationCanceledException;
-    method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public void clearPassword(android.accounts.Account);
-    method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> confirmCredentials(android.accounts.Account, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-    method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> editProperties(String, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-    method public android.accounts.AccountManagerFuture<android.os.Bundle> finishSession(android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-    method public static android.accounts.AccountManager get(android.content.Context);
-    method public int getAccountVisibility(android.accounts.Account, String);
-    method @NonNull @RequiresPermission(value="android.permission.GET_ACCOUNTS", apis="..22") public android.accounts.Account[] getAccounts();
-    method public java.util.Map<android.accounts.Account,java.lang.Integer> getAccountsAndVisibilityForPackage(String, String);
-    method @NonNull @RequiresPermission(value="android.permission.GET_ACCOUNTS", apis="..22") public android.accounts.Account[] getAccountsByType(String);
-    method public android.accounts.AccountManagerFuture<android.accounts.Account[]> getAccountsByTypeAndFeatures(String, String[], android.accounts.AccountManagerCallback<android.accounts.Account[]>, android.os.Handler);
-    method @NonNull public android.accounts.Account[] getAccountsByTypeForPackage(String, String);
-    method @RequiresPermission(value="android.permission.USE_CREDENTIALS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> getAuthToken(android.accounts.Account, String, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-    method @Deprecated @RequiresPermission(value="android.permission.USE_CREDENTIALS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> getAuthToken(android.accounts.Account, String, boolean, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-    method @RequiresPermission(value="android.permission.USE_CREDENTIALS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> getAuthToken(android.accounts.Account, String, android.os.Bundle, boolean, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-    method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> getAuthTokenByFeatures(String, String, String[], android.app.Activity, android.os.Bundle, android.os.Bundle, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-    method public android.accounts.AuthenticatorDescription[] getAuthenticatorTypes();
-    method public java.util.Map<java.lang.String,java.lang.Integer> getPackagesAndVisibilityForAccount(android.accounts.Account);
-    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public String getPassword(android.accounts.Account);
-    method public String getPreviousName(android.accounts.Account);
-    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public String getUserData(android.accounts.Account, String);
-    method public android.accounts.AccountManagerFuture<java.lang.Boolean> hasFeatures(android.accounts.Account, String[], android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler);
-    method @RequiresPermission(anyOf={"android.permission.MANAGE_ACCOUNTS", "android.permission.USE_CREDENTIALS"}, apis="..22") public void invalidateAuthToken(String, String);
-    method public android.accounts.AccountManagerFuture<java.lang.Boolean> isCredentialsUpdateSuggested(android.accounts.Account, String, android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler);
-    method @Deprecated public static android.content.Intent newChooseAccountIntent(android.accounts.Account, java.util.ArrayList<android.accounts.Account>, String[], boolean, String, String, String[], android.os.Bundle);
-    method public static android.content.Intent newChooseAccountIntent(android.accounts.Account, java.util.List<android.accounts.Account>, String[], String, String, String[], android.os.Bundle);
-    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public boolean notifyAccountAuthenticated(android.accounts.Account);
-    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public String peekAuthToken(android.accounts.Account, String);
-    method @Deprecated @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<java.lang.Boolean> removeAccount(android.accounts.Account, android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler);
-    method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> removeAccount(android.accounts.Account, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public boolean removeAccountExplicitly(android.accounts.Account);
-    method public void removeOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener);
-    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.accounts.Account> renameAccount(android.accounts.Account, @Size(min=1) String, android.accounts.AccountManagerCallback<android.accounts.Account>, android.os.Handler);
-    method public boolean setAccountVisibility(android.accounts.Account, String, int);
-    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public void setAuthToken(android.accounts.Account, String, String);
-    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public void setPassword(android.accounts.Account, String);
-    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public void setUserData(android.accounts.Account, String, String);
-    method public android.accounts.AccountManagerFuture<android.os.Bundle> startAddAccountSession(String, String, String[], android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-    method public android.accounts.AccountManagerFuture<android.os.Bundle> startUpdateCredentialsSession(android.accounts.Account, String, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-    method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> updateCredentials(android.accounts.Account, String, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-    field public static final String ACTION_ACCOUNT_REMOVED = "android.accounts.action.ACCOUNT_REMOVED";
-    field public static final String ACTION_AUTHENTICATOR_INTENT = "android.accounts.AccountAuthenticator";
-    field public static final String AUTHENTICATOR_ATTRIBUTES_NAME = "account-authenticator";
-    field public static final String AUTHENTICATOR_META_DATA_NAME = "android.accounts.AccountAuthenticator";
-    field public static final int ERROR_CODE_BAD_ARGUMENTS = 7; // 0x7
-    field public static final int ERROR_CODE_BAD_AUTHENTICATION = 9; // 0x9
-    field public static final int ERROR_CODE_BAD_REQUEST = 8; // 0x8
-    field public static final int ERROR_CODE_CANCELED = 4; // 0x4
-    field public static final int ERROR_CODE_INVALID_RESPONSE = 5; // 0x5
-    field public static final int ERROR_CODE_NETWORK_ERROR = 3; // 0x3
-    field public static final int ERROR_CODE_REMOTE_EXCEPTION = 1; // 0x1
-    field public static final int ERROR_CODE_UNSUPPORTED_OPERATION = 6; // 0x6
-    field public static final String KEY_ACCOUNTS = "accounts";
-    field public static final String KEY_ACCOUNT_AUTHENTICATOR_RESPONSE = "accountAuthenticatorResponse";
-    field public static final String KEY_ACCOUNT_MANAGER_RESPONSE = "accountManagerResponse";
-    field public static final String KEY_ACCOUNT_NAME = "authAccount";
-    field public static final String KEY_ACCOUNT_SESSION_BUNDLE = "accountSessionBundle";
-    field public static final String KEY_ACCOUNT_STATUS_TOKEN = "accountStatusToken";
-    field public static final String KEY_ACCOUNT_TYPE = "accountType";
-    field public static final String KEY_ANDROID_PACKAGE_NAME = "androidPackageName";
-    field public static final String KEY_AUTHENTICATOR_TYPES = "authenticator_types";
-    field public static final String KEY_AUTHTOKEN = "authtoken";
-    field public static final String KEY_AUTH_FAILED_MESSAGE = "authFailedMessage";
-    field public static final String KEY_AUTH_TOKEN_LABEL = "authTokenLabelKey";
-    field public static final String KEY_BOOLEAN_RESULT = "booleanResult";
-    field public static final String KEY_CALLER_PID = "callerPid";
-    field public static final String KEY_CALLER_UID = "callerUid";
-    field public static final String KEY_ERROR_CODE = "errorCode";
-    field public static final String KEY_ERROR_MESSAGE = "errorMessage";
-    field public static final String KEY_INTENT = "intent";
-    field public static final String KEY_LAST_AUTHENTICATED_TIME = "lastAuthenticatedTime";
-    field public static final String KEY_PASSWORD = "password";
-    field public static final String KEY_USERDATA = "userdata";
-    field @Deprecated public static final String LOGIN_ACCOUNTS_CHANGED_ACTION = "android.accounts.LOGIN_ACCOUNTS_CHANGED";
-    field public static final String PACKAGE_NAME_KEY_LEGACY_NOT_VISIBLE = "android:accounts:key_legacy_not_visible";
-    field public static final String PACKAGE_NAME_KEY_LEGACY_VISIBLE = "android:accounts:key_legacy_visible";
-    field public static final int VISIBILITY_NOT_VISIBLE = 3; // 0x3
-    field public static final int VISIBILITY_UNDEFINED = 0; // 0x0
-    field public static final int VISIBILITY_USER_MANAGED_NOT_VISIBLE = 4; // 0x4
-    field public static final int VISIBILITY_USER_MANAGED_VISIBLE = 2; // 0x2
-    field public static final int VISIBILITY_VISIBLE = 1; // 0x1
-  }
-
-  public interface AccountManagerCallback<V> {
-    method public void run(android.accounts.AccountManagerFuture<V>);
-  }
-
-  public interface AccountManagerFuture<V> {
-    method public boolean cancel(boolean);
-    method public V getResult() throws android.accounts.AuthenticatorException, java.io.IOException, android.accounts.OperationCanceledException;
-    method public V getResult(long, java.util.concurrent.TimeUnit) throws android.accounts.AuthenticatorException, java.io.IOException, android.accounts.OperationCanceledException;
-    method public boolean isCancelled();
-    method public boolean isDone();
-  }
-
-  public class AccountsException extends java.lang.Exception {
-    ctor public AccountsException();
-    ctor public AccountsException(String);
-    ctor public AccountsException(String, Throwable);
-    ctor public AccountsException(Throwable);
-  }
-
-  public class AuthenticatorDescription implements android.os.Parcelable {
-    ctor public AuthenticatorDescription(String, String, int, int, int, int, boolean);
-    ctor public AuthenticatorDescription(String, String, int, int, int, int);
-    method public int describeContents();
-    method public static android.accounts.AuthenticatorDescription newKey(String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.accounts.AuthenticatorDescription> CREATOR;
-    field public final int accountPreferencesId;
-    field public final boolean customTokens;
-    field public final int iconId;
-    field public final int labelId;
-    field public final String packageName;
-    field public final int smallIconId;
-    field public final String type;
-  }
-
-  public class AuthenticatorException extends android.accounts.AccountsException {
-    ctor public AuthenticatorException();
-    ctor public AuthenticatorException(String);
-    ctor public AuthenticatorException(String, Throwable);
-    ctor public AuthenticatorException(Throwable);
-  }
-
-  public class NetworkErrorException extends android.accounts.AccountsException {
-    ctor public NetworkErrorException();
-    ctor public NetworkErrorException(String);
-    ctor public NetworkErrorException(String, Throwable);
-    ctor public NetworkErrorException(Throwable);
-  }
-
-  public interface OnAccountsUpdateListener {
-    method public void onAccountsUpdated(android.accounts.Account[]);
-  }
-
-  public class OperationCanceledException extends android.accounts.AccountsException {
-    ctor public OperationCanceledException();
-    ctor public OperationCanceledException(String);
-    ctor public OperationCanceledException(String, Throwable);
-    ctor public OperationCanceledException(Throwable);
-  }
-
-}
-
-package android.animation {
-
-  public abstract class Animator implements java.lang.Cloneable {
-    ctor public Animator();
-    method public void addListener(android.animation.Animator.AnimatorListener);
-    method public void addPauseListener(android.animation.Animator.AnimatorPauseListener);
-    method public void cancel();
-    method public android.animation.Animator clone();
-    method public void end();
-    method public abstract long getDuration();
-    method public android.animation.TimeInterpolator getInterpolator();
-    method public java.util.ArrayList<android.animation.Animator.AnimatorListener> getListeners();
-    method public abstract long getStartDelay();
-    method public long getTotalDuration();
-    method public boolean isPaused();
-    method public abstract boolean isRunning();
-    method public boolean isStarted();
-    method public void pause();
-    method public void removeAllListeners();
-    method public void removeListener(android.animation.Animator.AnimatorListener);
-    method public void removePauseListener(android.animation.Animator.AnimatorPauseListener);
-    method public void resume();
-    method public abstract android.animation.Animator setDuration(long);
-    method public abstract void setInterpolator(android.animation.TimeInterpolator);
-    method public abstract void setStartDelay(long);
-    method public void setTarget(@Nullable Object);
-    method public void setupEndValues();
-    method public void setupStartValues();
-    method public void start();
-    field public static final long DURATION_INFINITE = -1L; // 0xffffffffffffffffL
-  }
-
-  public static interface Animator.AnimatorListener {
-    method public void onAnimationCancel(android.animation.Animator);
-    method public default void onAnimationEnd(android.animation.Animator, boolean);
-    method public void onAnimationEnd(android.animation.Animator);
-    method public void onAnimationRepeat(android.animation.Animator);
-    method public default void onAnimationStart(android.animation.Animator, boolean);
-    method public void onAnimationStart(android.animation.Animator);
-  }
-
-  public static interface Animator.AnimatorPauseListener {
-    method public void onAnimationPause(android.animation.Animator);
-    method public void onAnimationResume(android.animation.Animator);
-  }
-
-  public class AnimatorInflater {
-    ctor public AnimatorInflater();
-    method public static android.animation.Animator loadAnimator(android.content.Context, @AnimatorRes int) throws android.content.res.Resources.NotFoundException;
-    method public static android.animation.StateListAnimator loadStateListAnimator(android.content.Context, int) throws android.content.res.Resources.NotFoundException;
-  }
-
-  public abstract class AnimatorListenerAdapter implements android.animation.Animator.AnimatorListener android.animation.Animator.AnimatorPauseListener {
-    ctor public AnimatorListenerAdapter();
-    method public void onAnimationCancel(android.animation.Animator);
-    method public void onAnimationEnd(android.animation.Animator);
-    method public void onAnimationPause(android.animation.Animator);
-    method public void onAnimationRepeat(android.animation.Animator);
-    method public void onAnimationResume(android.animation.Animator);
-    method public void onAnimationStart(android.animation.Animator);
-  }
-
-  public final class AnimatorSet extends android.animation.Animator {
-    ctor public AnimatorSet();
-    method public android.animation.AnimatorSet clone();
-    method public java.util.ArrayList<android.animation.Animator> getChildAnimations();
-    method public long getCurrentPlayTime();
-    method public long getDuration();
-    method public long getStartDelay();
-    method public boolean isRunning();
-    method public android.animation.AnimatorSet.Builder play(android.animation.Animator);
-    method public void playSequentially(android.animation.Animator...);
-    method public void playSequentially(java.util.List<android.animation.Animator>);
-    method public void playTogether(android.animation.Animator...);
-    method public void playTogether(java.util.Collection<android.animation.Animator>);
-    method public void reverse();
-    method public void setCurrentPlayTime(long);
-    method public android.animation.AnimatorSet setDuration(long);
-    method public void setInterpolator(android.animation.TimeInterpolator);
-    method public void setStartDelay(long);
-  }
-
-  public class AnimatorSet.Builder {
-    method public android.animation.AnimatorSet.Builder after(android.animation.Animator);
-    method public android.animation.AnimatorSet.Builder after(long);
-    method public android.animation.AnimatorSet.Builder before(android.animation.Animator);
-    method public android.animation.AnimatorSet.Builder with(android.animation.Animator);
-  }
-
-  public class ArgbEvaluator implements android.animation.TypeEvaluator {
-    ctor public ArgbEvaluator();
-    method public Object evaluate(float, Object, Object);
-  }
-
-  public abstract class BidirectionalTypeConverter<T, V> extends android.animation.TypeConverter<T,V> {
-    ctor public BidirectionalTypeConverter(Class<T>, Class<V>);
-    method public abstract T convertBack(V);
-    method public android.animation.BidirectionalTypeConverter<V,T> invert();
-  }
-
-  public class FloatArrayEvaluator implements android.animation.TypeEvaluator<float[]> {
-    ctor public FloatArrayEvaluator();
-    ctor public FloatArrayEvaluator(float[]);
-    method public float[] evaluate(float, float[], float[]);
-  }
-
-  public class FloatEvaluator implements android.animation.TypeEvaluator<java.lang.Number> {
-    ctor public FloatEvaluator();
-    method public Float evaluate(float, Number, Number);
-  }
-
-  public class IntArrayEvaluator implements android.animation.TypeEvaluator<int[]> {
-    ctor public IntArrayEvaluator();
-    ctor public IntArrayEvaluator(int[]);
-    method public int[] evaluate(float, int[], int[]);
-  }
-
-  public class IntEvaluator implements android.animation.TypeEvaluator<java.lang.Integer> {
-    ctor public IntEvaluator();
-    method public Integer evaluate(float, Integer, Integer);
-  }
-
-  public abstract class Keyframe implements java.lang.Cloneable {
-    ctor public Keyframe();
-    method public abstract android.animation.Keyframe clone();
-    method public float getFraction();
-    method public android.animation.TimeInterpolator getInterpolator();
-    method public Class getType();
-    method public abstract Object getValue();
-    method public boolean hasValue();
-    method public static android.animation.Keyframe ofFloat(float, float);
-    method public static android.animation.Keyframe ofFloat(float);
-    method public static android.animation.Keyframe ofInt(float, int);
-    method public static android.animation.Keyframe ofInt(float);
-    method public static android.animation.Keyframe ofObject(float, Object);
-    method public static android.animation.Keyframe ofObject(float);
-    method public void setFraction(float);
-    method public void setInterpolator(android.animation.TimeInterpolator);
-    method public abstract void setValue(Object);
-  }
-
-  public class LayoutTransition {
-    ctor public LayoutTransition();
-    method public void addChild(android.view.ViewGroup, android.view.View);
-    method public void addTransitionListener(android.animation.LayoutTransition.TransitionListener);
-    method public void disableTransitionType(int);
-    method public void enableTransitionType(int);
-    method public android.animation.Animator getAnimator(int);
-    method public long getDuration(int);
-    method public android.animation.TimeInterpolator getInterpolator(int);
-    method public long getStagger(int);
-    method public long getStartDelay(int);
-    method public java.util.List<android.animation.LayoutTransition.TransitionListener> getTransitionListeners();
-    method @Deprecated public void hideChild(android.view.ViewGroup, android.view.View);
-    method public void hideChild(android.view.ViewGroup, android.view.View, int);
-    method public boolean isChangingLayout();
-    method public boolean isRunning();
-    method public boolean isTransitionTypeEnabled(int);
-    method public void removeChild(android.view.ViewGroup, android.view.View);
-    method public void removeTransitionListener(android.animation.LayoutTransition.TransitionListener);
-    method public void setAnimateParentHierarchy(boolean);
-    method public void setAnimator(int, android.animation.Animator);
-    method public void setDuration(long);
-    method public void setDuration(int, long);
-    method public void setInterpolator(int, android.animation.TimeInterpolator);
-    method public void setStagger(int, long);
-    method public void setStartDelay(int, long);
-    method @Deprecated public void showChild(android.view.ViewGroup, android.view.View);
-    method public void showChild(android.view.ViewGroup, android.view.View, int);
-    field public static final int APPEARING = 2; // 0x2
-    field public static final int CHANGE_APPEARING = 0; // 0x0
-    field public static final int CHANGE_DISAPPEARING = 1; // 0x1
-    field public static final int CHANGING = 4; // 0x4
-    field public static final int DISAPPEARING = 3; // 0x3
-  }
-
-  public static interface LayoutTransition.TransitionListener {
-    method public void endTransition(android.animation.LayoutTransition, android.view.ViewGroup, android.view.View, int);
-    method public void startTransition(android.animation.LayoutTransition, android.view.ViewGroup, android.view.View, int);
-  }
-
-  public final class ObjectAnimator extends android.animation.ValueAnimator {
-    ctor public ObjectAnimator();
-    method public android.animation.ObjectAnimator clone();
-    method @Nullable public String getPropertyName();
-    method @Nullable public Object getTarget();
-    method public static android.animation.ObjectAnimator ofArgb(Object, String, int...);
-    method public static <T> android.animation.ObjectAnimator ofArgb(T, android.util.Property<T,java.lang.Integer>, int...);
-    method public static android.animation.ObjectAnimator ofFloat(Object, String, float...);
-    method public static android.animation.ObjectAnimator ofFloat(Object, String, String, android.graphics.Path);
-    method public static <T> android.animation.ObjectAnimator ofFloat(T, android.util.Property<T,java.lang.Float>, float...);
-    method public static <T> android.animation.ObjectAnimator ofFloat(T, android.util.Property<T,java.lang.Float>, android.util.Property<T,java.lang.Float>, android.graphics.Path);
-    method public static android.animation.ObjectAnimator ofInt(Object, String, int...);
-    method public static android.animation.ObjectAnimator ofInt(Object, String, String, android.graphics.Path);
-    method public static <T> android.animation.ObjectAnimator ofInt(T, android.util.Property<T,java.lang.Integer>, int...);
-    method public static <T> android.animation.ObjectAnimator ofInt(T, android.util.Property<T,java.lang.Integer>, android.util.Property<T,java.lang.Integer>, android.graphics.Path);
-    method public static android.animation.ObjectAnimator ofMultiFloat(Object, String, float[][]);
-    method public static android.animation.ObjectAnimator ofMultiFloat(Object, String, android.graphics.Path);
-    method @java.lang.SafeVarargs public static <T> android.animation.ObjectAnimator ofMultiFloat(Object, String, android.animation.TypeConverter<T,float[]>, android.animation.TypeEvaluator<T>, T...);
-    method public static android.animation.ObjectAnimator ofMultiInt(Object, String, int[][]);
-    method public static android.animation.ObjectAnimator ofMultiInt(Object, String, android.graphics.Path);
-    method @java.lang.SafeVarargs public static <T> android.animation.ObjectAnimator ofMultiInt(Object, String, android.animation.TypeConverter<T,int[]>, android.animation.TypeEvaluator<T>, T...);
-    method public static android.animation.ObjectAnimator ofObject(Object, String, android.animation.TypeEvaluator, java.lang.Object...);
-    method @NonNull public static android.animation.ObjectAnimator ofObject(Object, String, @Nullable android.animation.TypeConverter<android.graphics.PointF,?>, android.graphics.Path);
-    method @NonNull @java.lang.SafeVarargs public static <T, V> android.animation.ObjectAnimator ofObject(T, android.util.Property<T,V>, android.animation.TypeEvaluator<V>, V...);
-    method @NonNull @java.lang.SafeVarargs public static <T, V, P> android.animation.ObjectAnimator ofObject(T, android.util.Property<T,P>, android.animation.TypeConverter<V,P>, android.animation.TypeEvaluator<V>, V...);
-    method @NonNull public static <T, V> android.animation.ObjectAnimator ofObject(T, @NonNull android.util.Property<T,V>, @Nullable android.animation.TypeConverter<android.graphics.PointF,V>, android.graphics.Path);
-    method @NonNull public static android.animation.ObjectAnimator ofPropertyValuesHolder(Object, android.animation.PropertyValuesHolder...);
-    method public void setAutoCancel(boolean);
-    method @NonNull public android.animation.ObjectAnimator setDuration(long);
-    method public void setProperty(@NonNull android.util.Property);
-    method public void setPropertyName(@NonNull String);
-  }
-
-  public class PointFEvaluator implements android.animation.TypeEvaluator<android.graphics.PointF> {
-    ctor public PointFEvaluator();
-    ctor public PointFEvaluator(android.graphics.PointF);
-    method public android.graphics.PointF evaluate(float, android.graphics.PointF, android.graphics.PointF);
-  }
-
-  public class PropertyValuesHolder implements java.lang.Cloneable {
-    method public android.animation.PropertyValuesHolder clone();
-    method public String getPropertyName();
-    method public static android.animation.PropertyValuesHolder ofFloat(String, float...);
-    method public static android.animation.PropertyValuesHolder ofFloat(android.util.Property<?,java.lang.Float>, float...);
-    method public static android.animation.PropertyValuesHolder ofInt(String, int...);
-    method public static android.animation.PropertyValuesHolder ofInt(android.util.Property<?,java.lang.Integer>, int...);
-    method public static android.animation.PropertyValuesHolder ofKeyframe(String, android.animation.Keyframe...);
-    method public static android.animation.PropertyValuesHolder ofKeyframe(android.util.Property, android.animation.Keyframe...);
-    method public static android.animation.PropertyValuesHolder ofMultiFloat(String, float[][]);
-    method public static android.animation.PropertyValuesHolder ofMultiFloat(String, android.graphics.Path);
-    method @java.lang.SafeVarargs public static <V> android.animation.PropertyValuesHolder ofMultiFloat(String, android.animation.TypeConverter<V,float[]>, android.animation.TypeEvaluator<V>, V...);
-    method public static <T> android.animation.PropertyValuesHolder ofMultiFloat(String, android.animation.TypeConverter<T,float[]>, android.animation.TypeEvaluator<T>, android.animation.Keyframe...);
-    method public static android.animation.PropertyValuesHolder ofMultiInt(String, int[][]);
-    method public static android.animation.PropertyValuesHolder ofMultiInt(String, android.graphics.Path);
-    method @java.lang.SafeVarargs public static <V> android.animation.PropertyValuesHolder ofMultiInt(String, android.animation.TypeConverter<V,int[]>, android.animation.TypeEvaluator<V>, V...);
-    method public static <T> android.animation.PropertyValuesHolder ofMultiInt(String, android.animation.TypeConverter<T,int[]>, android.animation.TypeEvaluator<T>, android.animation.Keyframe...);
-    method public static android.animation.PropertyValuesHolder ofObject(String, android.animation.TypeEvaluator, java.lang.Object...);
-    method public static android.animation.PropertyValuesHolder ofObject(String, android.animation.TypeConverter<android.graphics.PointF,?>, android.graphics.Path);
-    method @java.lang.SafeVarargs public static <V> android.animation.PropertyValuesHolder ofObject(android.util.Property, android.animation.TypeEvaluator<V>, V...);
-    method @java.lang.SafeVarargs public static <T, V> android.animation.PropertyValuesHolder ofObject(android.util.Property<?,V>, android.animation.TypeConverter<T,V>, android.animation.TypeEvaluator<T>, T...);
-    method public static <V> android.animation.PropertyValuesHolder ofObject(android.util.Property<?,V>, android.animation.TypeConverter<android.graphics.PointF,V>, android.graphics.Path);
-    method public void setConverter(android.animation.TypeConverter);
-    method public void setEvaluator(android.animation.TypeEvaluator);
-    method public void setFloatValues(float...);
-    method public void setIntValues(int...);
-    method public void setKeyframes(android.animation.Keyframe...);
-    method public void setObjectValues(java.lang.Object...);
-    method public void setProperty(android.util.Property);
-    method public void setPropertyName(String);
-  }
-
-  public class RectEvaluator implements android.animation.TypeEvaluator<android.graphics.Rect> {
-    ctor public RectEvaluator();
-    ctor public RectEvaluator(android.graphics.Rect);
-    method public android.graphics.Rect evaluate(float, android.graphics.Rect, android.graphics.Rect);
-  }
-
-  public class StateListAnimator implements java.lang.Cloneable {
-    ctor public StateListAnimator();
-    method public void addState(int[], android.animation.Animator);
-    method public android.animation.StateListAnimator clone();
-    method public void jumpToCurrentState();
-  }
-
-  public class TimeAnimator extends android.animation.ValueAnimator {
-    ctor public TimeAnimator();
-    method public void setTimeListener(android.animation.TimeAnimator.TimeListener);
-  }
-
-  public static interface TimeAnimator.TimeListener {
-    method public void onTimeUpdate(android.animation.TimeAnimator, long, long);
-  }
-
-  public interface TimeInterpolator {
-    method public float getInterpolation(float);
-  }
-
-  public abstract class TypeConverter<T, V> {
-    ctor public TypeConverter(Class<T>, Class<V>);
-    method public abstract V convert(T);
-  }
-
-  public interface TypeEvaluator<T> {
-    method public T evaluate(float, T, T);
-  }
-
-  public class ValueAnimator extends android.animation.Animator {
-    ctor public ValueAnimator();
-    method public void addUpdateListener(android.animation.ValueAnimator.AnimatorUpdateListener);
-    method public static boolean areAnimatorsEnabled();
-    method public android.animation.ValueAnimator clone();
-    method public float getAnimatedFraction();
-    method public Object getAnimatedValue();
-    method public Object getAnimatedValue(String);
-    method public long getCurrentPlayTime();
-    method public long getDuration();
-    method public static long getFrameDelay();
-    method public int getRepeatCount();
-    method public int getRepeatMode();
-    method public long getStartDelay();
-    method public android.animation.PropertyValuesHolder[] getValues();
-    method public boolean isRunning();
-    method public static android.animation.ValueAnimator ofArgb(int...);
-    method public static android.animation.ValueAnimator ofFloat(float...);
-    method public static android.animation.ValueAnimator ofInt(int...);
-    method public static android.animation.ValueAnimator ofObject(android.animation.TypeEvaluator, java.lang.Object...);
-    method public static android.animation.ValueAnimator ofPropertyValuesHolder(android.animation.PropertyValuesHolder...);
-    method public void removeAllUpdateListeners();
-    method public void removeUpdateListener(android.animation.ValueAnimator.AnimatorUpdateListener);
-    method public void reverse();
-    method public void setCurrentFraction(float);
-    method public void setCurrentPlayTime(long);
-    method public android.animation.ValueAnimator setDuration(long);
-    method public void setEvaluator(android.animation.TypeEvaluator);
-    method public void setFloatValues(float...);
-    method public static void setFrameDelay(long);
-    method public void setIntValues(int...);
-    method public void setInterpolator(android.animation.TimeInterpolator);
-    method public void setObjectValues(java.lang.Object...);
-    method public void setRepeatCount(int);
-    method public void setRepeatMode(int);
-    method public void setStartDelay(long);
-    method public void setValues(android.animation.PropertyValuesHolder...);
-    field public static final int INFINITE = -1; // 0xffffffff
-    field public static final int RESTART = 1; // 0x1
-    field public static final int REVERSE = 2; // 0x2
-  }
-
-  public static interface ValueAnimator.AnimatorUpdateListener {
-    method public void onAnimationUpdate(android.animation.ValueAnimator);
-  }
-
-}
-
-package android.annotation {
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE, java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.LOCAL_VARIABLE}) public @interface SuppressLint {
-    method public abstract String[] value();
-  }
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.FIELD}) public @interface TargetApi {
-    method public abstract int value();
-  }
-
-}
-
-package android.app {
-
-  public abstract class ActionBar {
-    ctor public ActionBar();
-    method public abstract void addOnMenuVisibilityListener(android.app.ActionBar.OnMenuVisibilityListener);
-    method @Deprecated public abstract void addTab(android.app.ActionBar.Tab);
-    method @Deprecated public abstract void addTab(android.app.ActionBar.Tab, boolean);
-    method @Deprecated public abstract void addTab(android.app.ActionBar.Tab, int);
-    method @Deprecated public abstract void addTab(android.app.ActionBar.Tab, int, boolean);
-    method public abstract android.view.View getCustomView();
-    method public abstract int getDisplayOptions();
-    method public float getElevation();
-    method public abstract int getHeight();
-    method public int getHideOffset();
-    method @Deprecated public abstract int getNavigationItemCount();
-    method @Deprecated public abstract int getNavigationMode();
-    method @Deprecated public abstract int getSelectedNavigationIndex();
-    method @Deprecated public abstract android.app.ActionBar.Tab getSelectedTab();
-    method public abstract CharSequence getSubtitle();
-    method @Deprecated public abstract android.app.ActionBar.Tab getTabAt(int);
-    method @Deprecated public abstract int getTabCount();
-    method public android.content.Context getThemedContext();
-    method public abstract CharSequence getTitle();
-    method public abstract void hide();
-    method public boolean isHideOnContentScrollEnabled();
-    method public abstract boolean isShowing();
-    method @Deprecated public abstract android.app.ActionBar.Tab newTab();
-    method @Deprecated public abstract void removeAllTabs();
-    method public abstract void removeOnMenuVisibilityListener(android.app.ActionBar.OnMenuVisibilityListener);
-    method @Deprecated public abstract void removeTab(android.app.ActionBar.Tab);
-    method @Deprecated public abstract void removeTabAt(int);
-    method @Deprecated public abstract void selectTab(android.app.ActionBar.Tab);
-    method public abstract void setBackgroundDrawable(@Nullable android.graphics.drawable.Drawable);
-    method public abstract void setCustomView(android.view.View);
-    method public abstract void setCustomView(android.view.View, android.app.ActionBar.LayoutParams);
-    method public abstract void setCustomView(@LayoutRes int);
-    method public abstract void setDisplayHomeAsUpEnabled(boolean);
-    method public abstract void setDisplayOptions(int);
-    method public abstract void setDisplayOptions(int, int);
-    method public abstract void setDisplayShowCustomEnabled(boolean);
-    method public abstract void setDisplayShowHomeEnabled(boolean);
-    method public abstract void setDisplayShowTitleEnabled(boolean);
-    method public abstract void setDisplayUseLogoEnabled(boolean);
-    method public void setElevation(float);
-    method public void setHideOffset(int);
-    method public void setHideOnContentScrollEnabled(boolean);
-    method public void setHomeActionContentDescription(CharSequence);
-    method public void setHomeActionContentDescription(@StringRes int);
-    method public void setHomeAsUpIndicator(android.graphics.drawable.Drawable);
-    method public void setHomeAsUpIndicator(@DrawableRes int);
-    method public void setHomeButtonEnabled(boolean);
-    method public abstract void setIcon(@DrawableRes int);
-    method public abstract void setIcon(android.graphics.drawable.Drawable);
-    method @Deprecated public abstract void setListNavigationCallbacks(android.widget.SpinnerAdapter, android.app.ActionBar.OnNavigationListener);
-    method public abstract void setLogo(@DrawableRes int);
-    method public abstract void setLogo(android.graphics.drawable.Drawable);
-    method @Deprecated public abstract void setNavigationMode(int);
-    method @Deprecated public abstract void setSelectedNavigationItem(int);
-    method public void setSplitBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setStackedBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public abstract void setSubtitle(CharSequence);
-    method public abstract void setSubtitle(@StringRes int);
-    method public abstract void setTitle(CharSequence);
-    method public abstract void setTitle(@StringRes int);
-    method public abstract void show();
-    field public static final int DISPLAY_HOME_AS_UP = 4; // 0x4
-    field public static final int DISPLAY_SHOW_CUSTOM = 16; // 0x10
-    field public static final int DISPLAY_SHOW_HOME = 2; // 0x2
-    field public static final int DISPLAY_SHOW_TITLE = 8; // 0x8
-    field public static final int DISPLAY_USE_LOGO = 1; // 0x1
-    field @Deprecated public static final int NAVIGATION_MODE_LIST = 1; // 0x1
-    field @Deprecated public static final int NAVIGATION_MODE_STANDARD = 0; // 0x0
-    field @Deprecated public static final int NAVIGATION_MODE_TABS = 2; // 0x2
-  }
-
-  public static class ActionBar.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public ActionBar.LayoutParams(@NonNull android.content.Context, android.util.AttributeSet);
-    ctor public ActionBar.LayoutParams(int, int);
-    ctor public ActionBar.LayoutParams(int, int, int);
-    ctor public ActionBar.LayoutParams(int);
-    ctor public ActionBar.LayoutParams(android.app.ActionBar.LayoutParams);
-    ctor public ActionBar.LayoutParams(android.view.ViewGroup.LayoutParams);
-    field public int gravity;
-  }
-
-  public static interface ActionBar.OnMenuVisibilityListener {
-    method public void onMenuVisibilityChanged(boolean);
-  }
-
-  @Deprecated public static interface ActionBar.OnNavigationListener {
-    method @Deprecated public boolean onNavigationItemSelected(int, long);
-  }
-
-  @Deprecated public abstract static class ActionBar.Tab {
-    ctor @Deprecated public ActionBar.Tab();
-    method @Deprecated public abstract CharSequence getContentDescription();
-    method @Deprecated public abstract android.view.View getCustomView();
-    method @Deprecated public abstract android.graphics.drawable.Drawable getIcon();
-    method @Deprecated public abstract int getPosition();
-    method @Deprecated public abstract Object getTag();
-    method @Deprecated public abstract CharSequence getText();
-    method @Deprecated public abstract void select();
-    method @Deprecated public abstract android.app.ActionBar.Tab setContentDescription(@StringRes int);
-    method @Deprecated public abstract android.app.ActionBar.Tab setContentDescription(CharSequence);
-    method @Deprecated public abstract android.app.ActionBar.Tab setCustomView(android.view.View);
-    method @Deprecated public abstract android.app.ActionBar.Tab setCustomView(@LayoutRes int);
-    method @Deprecated public abstract android.app.ActionBar.Tab setIcon(android.graphics.drawable.Drawable);
-    method @Deprecated public abstract android.app.ActionBar.Tab setIcon(@DrawableRes int);
-    method @Deprecated public abstract android.app.ActionBar.Tab setTabListener(android.app.ActionBar.TabListener);
-    method @Deprecated public abstract android.app.ActionBar.Tab setTag(Object);
-    method @Deprecated public abstract android.app.ActionBar.Tab setText(CharSequence);
-    method @Deprecated public abstract android.app.ActionBar.Tab setText(@StringRes int);
-    field @Deprecated public static final int INVALID_POSITION = -1; // 0xffffffff
-  }
-
-  @Deprecated public static interface ActionBar.TabListener {
-    method @Deprecated public void onTabReselected(android.app.ActionBar.Tab, android.app.FragmentTransaction);
-    method @Deprecated public void onTabSelected(android.app.ActionBar.Tab, android.app.FragmentTransaction);
-    method @Deprecated public void onTabUnselected(android.app.ActionBar.Tab, android.app.FragmentTransaction);
-  }
-
-  public class Activity extends android.view.ContextThemeWrapper implements android.content.ComponentCallbacks2 android.view.KeyEvent.Callback android.view.LayoutInflater.Factory2 android.view.View.OnCreateContextMenuListener android.view.Window.Callback {
-    ctor public Activity();
-    method public void addContentView(android.view.View, android.view.ViewGroup.LayoutParams);
-    method public void closeContextMenu();
-    method public void closeOptionsMenu();
-    method public android.app.PendingIntent createPendingResult(int, @NonNull android.content.Intent, int);
-    method @Deprecated public final void dismissDialog(int);
-    method public final void dismissKeyboardShortcutsHelper();
-    method public boolean dispatchGenericMotionEvent(android.view.MotionEvent);
-    method public boolean dispatchKeyEvent(android.view.KeyEvent);
-    method public boolean dispatchKeyShortcutEvent(android.view.KeyEvent);
-    method public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    method public boolean dispatchTouchEvent(android.view.MotionEvent);
-    method public boolean dispatchTrackballEvent(android.view.MotionEvent);
-    method public void dump(@NonNull String, @Nullable java.io.FileDescriptor, @NonNull java.io.PrintWriter, @Nullable String[]);
-    method @Deprecated public void enterPictureInPictureMode();
-    method public boolean enterPictureInPictureMode(@NonNull android.app.PictureInPictureParams);
-    method public <T extends android.view.View> T findViewById(@IdRes int);
-    method public void finish();
-    method public void finishActivity(int);
-    method @Deprecated public void finishActivityFromChild(@NonNull android.app.Activity, int);
-    method public void finishAffinity();
-    method public void finishAfterTransition();
-    method public void finishAndRemoveTask();
-    method @Deprecated public void finishFromChild(android.app.Activity);
-    method @Nullable public android.app.ActionBar getActionBar();
-    method public final android.app.Application getApplication();
-    method @Nullable public android.content.ComponentName getCallingActivity();
-    method @Nullable public String getCallingPackage();
-    method public int getChangingConfigurations();
-    method public android.content.ComponentName getComponentName();
-    method public android.transition.Scene getContentScene();
-    method public android.transition.TransitionManager getContentTransitionManager();
-    method @Nullable public android.view.View getCurrentFocus();
-    method @Deprecated public android.app.FragmentManager getFragmentManager();
-    method public android.content.Intent getIntent();
-    method @Nullable public Object getLastNonConfigurationInstance();
-    method @NonNull public android.view.LayoutInflater getLayoutInflater();
-    method @Deprecated public android.app.LoaderManager getLoaderManager();
-    method @NonNull public String getLocalClassName();
-    method public int getMaxNumPictureInPictureActions();
-    method public final android.media.session.MediaController getMediaController();
-    method @NonNull public android.view.MenuInflater getMenuInflater();
-    method public final android.app.Activity getParent();
-    method @Nullable public android.content.Intent getParentActivityIntent();
-    method public android.content.SharedPreferences getPreferences(int);
-    method @Nullable public android.net.Uri getReferrer();
-    method public int getRequestedOrientation();
-    method public final android.view.SearchEvent getSearchEvent();
-    method public int getTaskId();
-    method public final CharSequence getTitle();
-    method public final int getTitleColor();
-    method public android.app.VoiceInteractor getVoiceInteractor();
-    method public final int getVolumeControlStream();
-    method public android.view.Window getWindow();
-    method public android.view.WindowManager getWindowManager();
-    method public boolean hasWindowFocus();
-    method public void invalidateOptionsMenu();
-    method public boolean isActivityTransitionRunning();
-    method public boolean isChangingConfigurations();
-    method public final boolean isChild();
-    method public boolean isDestroyed();
-    method public boolean isFinishing();
-    method public boolean isImmersive();
-    method public boolean isInMultiWindowMode();
-    method public boolean isInPictureInPictureMode();
-    method public boolean isLocalVoiceInteractionSupported();
-    method public boolean isTaskRoot();
-    method public boolean isVoiceInteraction();
-    method public boolean isVoiceInteractionRoot();
-    method @Deprecated public final android.database.Cursor managedQuery(android.net.Uri, String[], String, String[], String);
-    method public boolean moveTaskToBack(boolean);
-    method public boolean navigateUpTo(android.content.Intent);
-    method @Deprecated public boolean navigateUpToFromChild(android.app.Activity, android.content.Intent);
-    method @CallSuper public void onActionModeFinished(android.view.ActionMode);
-    method @CallSuper public void onActionModeStarted(android.view.ActionMode);
-    method public void onActivityReenter(int, android.content.Intent);
-    method protected void onActivityResult(int, int, android.content.Intent);
-    method @Deprecated public void onAttachFragment(android.app.Fragment);
-    method public void onAttachedToWindow();
-    method public void onBackPressed();
-    method protected void onChildTitleChanged(android.app.Activity, CharSequence);
-    method public void onConfigurationChanged(@NonNull android.content.res.Configuration);
-    method public void onContentChanged();
-    method public boolean onContextItemSelected(@NonNull android.view.MenuItem);
-    method public void onContextMenuClosed(@NonNull android.view.Menu);
-    method @CallSuper @MainThread protected void onCreate(@Nullable android.os.Bundle);
-    method public void onCreate(@Nullable android.os.Bundle, @Nullable android.os.PersistableBundle);
-    method public void onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo);
-    method @Nullable public CharSequence onCreateDescription();
-    method @Deprecated protected android.app.Dialog onCreateDialog(int);
-    method @Deprecated @Nullable protected android.app.Dialog onCreateDialog(int, android.os.Bundle);
-    method public void onCreateNavigateUpTaskStack(android.app.TaskStackBuilder);
-    method public boolean onCreateOptionsMenu(android.view.Menu);
-    method public boolean onCreatePanelMenu(int, @NonNull android.view.Menu);
-    method @Nullable public android.view.View onCreatePanelView(int);
-    method @Deprecated public boolean onCreateThumbnail(android.graphics.Bitmap, android.graphics.Canvas);
-    method @Nullable public android.view.View onCreateView(@NonNull String, @NonNull android.content.Context, @NonNull android.util.AttributeSet);
-    method @Nullable public android.view.View onCreateView(@Nullable android.view.View, @NonNull String, @NonNull android.content.Context, @NonNull android.util.AttributeSet);
-    method @CallSuper protected void onDestroy();
-    method public void onDetachedFromWindow();
-    method public void onEnterAnimationComplete();
-    method public boolean onGenericMotionEvent(android.view.MotionEvent);
-    method public void onGetDirectActions(@NonNull android.os.CancellationSignal, @NonNull java.util.function.Consumer<java.util.List<android.app.DirectAction>>);
-    method public boolean onKeyDown(int, android.view.KeyEvent);
-    method public boolean onKeyLongPress(int, android.view.KeyEvent);
-    method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
-    method public boolean onKeyShortcut(int, android.view.KeyEvent);
-    method public boolean onKeyUp(int, android.view.KeyEvent);
-    method public void onLocalVoiceInteractionStarted();
-    method public void onLocalVoiceInteractionStopped();
-    method public void onLowMemory();
-    method public boolean onMenuItemSelected(int, @NonNull android.view.MenuItem);
-    method public boolean onMenuOpened(int, @NonNull android.view.Menu);
-    method public void onMultiWindowModeChanged(boolean, android.content.res.Configuration);
-    method @Deprecated public void onMultiWindowModeChanged(boolean);
-    method public boolean onNavigateUp();
-    method @Deprecated public boolean onNavigateUpFromChild(android.app.Activity);
-    method protected void onNewIntent(android.content.Intent);
-    method public boolean onOptionsItemSelected(@NonNull android.view.MenuItem);
-    method public void onOptionsMenuClosed(android.view.Menu);
-    method public void onPanelClosed(int, @NonNull android.view.Menu);
-    method @CallSuper protected void onPause();
-    method public void onPerformDirectAction(@NonNull String, @NonNull android.os.Bundle, @NonNull android.os.CancellationSignal, @NonNull java.util.function.Consumer<android.os.Bundle>);
-    method public void onPictureInPictureModeChanged(boolean, android.content.res.Configuration);
-    method @Deprecated public void onPictureInPictureModeChanged(boolean);
-    method public boolean onPictureInPictureRequested();
-    method @CallSuper protected void onPostCreate(@Nullable android.os.Bundle);
-    method public void onPostCreate(@Nullable android.os.Bundle, @Nullable android.os.PersistableBundle);
-    method @CallSuper protected void onPostResume();
-    method @Deprecated protected void onPrepareDialog(int, android.app.Dialog);
-    method @Deprecated protected void onPrepareDialog(int, android.app.Dialog, android.os.Bundle);
-    method public void onPrepareNavigateUpTaskStack(android.app.TaskStackBuilder);
-    method public boolean onPrepareOptionsMenu(android.view.Menu);
-    method public boolean onPreparePanel(int, @Nullable android.view.View, @NonNull android.view.Menu);
-    method public void onProvideAssistContent(android.app.assist.AssistContent);
-    method public void onProvideAssistData(android.os.Bundle);
-    method public android.net.Uri onProvideReferrer();
-    method public void onRequestPermissionsResult(int, @NonNull String[], @NonNull int[]);
-    method @CallSuper protected void onRestart();
-    method protected void onRestoreInstanceState(@NonNull android.os.Bundle);
-    method public void onRestoreInstanceState(@Nullable android.os.Bundle, @Nullable android.os.PersistableBundle);
-    method @CallSuper protected void onResume();
-    method public Object onRetainNonConfigurationInstance();
-    method protected void onSaveInstanceState(@NonNull android.os.Bundle);
-    method public void onSaveInstanceState(@NonNull android.os.Bundle, @NonNull android.os.PersistableBundle);
-    method public boolean onSearchRequested(@Nullable android.view.SearchEvent);
-    method public boolean onSearchRequested();
-    method @CallSuper protected void onStart();
-    method @Deprecated public void onStateNotSaved();
-    method @CallSuper protected void onStop();
-    method protected void onTitleChanged(CharSequence, int);
-    method public void onTopResumedActivityChanged(boolean);
-    method public boolean onTouchEvent(android.view.MotionEvent);
-    method public boolean onTrackballEvent(android.view.MotionEvent);
-    method public void onTrimMemory(int);
-    method public void onUserInteraction();
-    method protected void onUserLeaveHint();
-    method @Deprecated @CallSuper public void onVisibleBehindCanceled();
-    method public void onWindowAttributesChanged(android.view.WindowManager.LayoutParams);
-    method public void onWindowFocusChanged(boolean);
-    method @Nullable public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback);
-    method @Nullable public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback, int);
-    method public void openContextMenu(android.view.View);
-    method public void openOptionsMenu();
-    method public void overridePendingTransition(int, int);
-    method public void postponeEnterTransition();
-    method public void recreate();
-    method public void registerActivityLifecycleCallbacks(@NonNull android.app.Application.ActivityLifecycleCallbacks);
-    method public void registerForContextMenu(android.view.View);
-    method public boolean releaseInstance();
-    method @Deprecated public final void removeDialog(int);
-    method public void reportFullyDrawn();
-    method public android.view.DragAndDropPermissions requestDragAndDropPermissions(android.view.DragEvent);
-    method public final void requestPermissions(@NonNull String[], int);
-    method public final void requestShowKeyboardShortcuts();
-    method @Deprecated public boolean requestVisibleBehind(boolean);
-    method public final boolean requestWindowFeature(int);
-    method @NonNull public final <T extends android.view.View> T requireViewById(@IdRes int);
-    method public final void runOnUiThread(Runnable);
-    method public void setActionBar(@Nullable android.widget.Toolbar);
-    method public void setContentTransitionManager(android.transition.TransitionManager);
-    method public void setContentView(@LayoutRes int);
-    method public void setContentView(android.view.View);
-    method public void setContentView(android.view.View, android.view.ViewGroup.LayoutParams);
-    method public final void setDefaultKeyMode(int);
-    method public void setEnterSharedElementCallback(android.app.SharedElementCallback);
-    method public void setExitSharedElementCallback(android.app.SharedElementCallback);
-    method public final void setFeatureDrawable(int, android.graphics.drawable.Drawable);
-    method public final void setFeatureDrawableAlpha(int, int);
-    method public final void setFeatureDrawableResource(int, @DrawableRes int);
-    method public final void setFeatureDrawableUri(int, android.net.Uri);
-    method public void setFinishOnTouchOutside(boolean);
-    method public void setImmersive(boolean);
-    method public void setInheritShowWhenLocked(boolean);
-    method public void setIntent(android.content.Intent);
-    method public void setLocusContext(@Nullable android.content.LocusId, @Nullable android.os.Bundle);
-    method public final void setMediaController(android.media.session.MediaController);
-    method public void setPictureInPictureParams(@NonNull android.app.PictureInPictureParams);
-    method @Deprecated public final void setProgress(int);
-    method @Deprecated public final void setProgressBarIndeterminate(boolean);
-    method @Deprecated public final void setProgressBarIndeterminateVisibility(boolean);
-    method @Deprecated public final void setProgressBarVisibility(boolean);
-    method public void setRequestedOrientation(int);
-    method public final void setResult(int);
-    method public final void setResult(int, android.content.Intent);
-    method @Deprecated public final void setSecondaryProgress(int);
-    method public void setShowWhenLocked(boolean);
-    method public void setTaskDescription(android.app.ActivityManager.TaskDescription);
-    method public void setTitle(CharSequence);
-    method public void setTitle(int);
-    method @Deprecated public void setTitleColor(int);
-    method public boolean setTranslucent(boolean);
-    method public void setTurnScreenOn(boolean);
-    method public void setVisible(boolean);
-    method public final void setVolumeControlStream(int);
-    method public void setVrModeEnabled(boolean, @NonNull android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public boolean shouldShowRequestPermissionRationale(@NonNull String);
-    method public boolean shouldUpRecreateTask(android.content.Intent);
-    method public boolean showAssist(android.os.Bundle);
-    method @Deprecated public final void showDialog(int);
-    method @Deprecated public final boolean showDialog(int, android.os.Bundle);
-    method public void showLockTaskEscapeMessage();
-    method @Nullable public android.view.ActionMode startActionMode(android.view.ActionMode.Callback);
-    method @Nullable public android.view.ActionMode startActionMode(android.view.ActionMode.Callback, int);
-    method public void startActivityForResult(@RequiresPermission android.content.Intent, int);
-    method public void startActivityForResult(@RequiresPermission android.content.Intent, int, @Nullable android.os.Bundle);
-    method @Deprecated public void startActivityFromChild(@NonNull android.app.Activity, @RequiresPermission android.content.Intent, int);
-    method @Deprecated public void startActivityFromChild(@NonNull android.app.Activity, @RequiresPermission android.content.Intent, int, @Nullable android.os.Bundle);
-    method @Deprecated public void startActivityFromFragment(@NonNull android.app.Fragment, @RequiresPermission android.content.Intent, int);
-    method @Deprecated public void startActivityFromFragment(@NonNull android.app.Fragment, @RequiresPermission android.content.Intent, int, @Nullable android.os.Bundle);
-    method public boolean startActivityIfNeeded(@NonNull @RequiresPermission android.content.Intent, int);
-    method public boolean startActivityIfNeeded(@NonNull @RequiresPermission android.content.Intent, int, @Nullable android.os.Bundle);
-    method public void startIntentSenderForResult(android.content.IntentSender, int, @Nullable android.content.Intent, int, int, int) throws android.content.IntentSender.SendIntentException;
-    method public void startIntentSenderForResult(android.content.IntentSender, int, @Nullable android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
-    method @Deprecated public void startIntentSenderFromChild(android.app.Activity, android.content.IntentSender, int, android.content.Intent, int, int, int) throws android.content.IntentSender.SendIntentException;
-    method @Deprecated public void startIntentSenderFromChild(android.app.Activity, android.content.IntentSender, int, android.content.Intent, int, int, int, @Nullable android.os.Bundle) throws android.content.IntentSender.SendIntentException;
-    method public void startLocalVoiceInteraction(android.os.Bundle);
-    method public void startLockTask();
-    method @Deprecated public void startManagingCursor(android.database.Cursor);
-    method public boolean startNextMatchingActivity(@NonNull @RequiresPermission android.content.Intent);
-    method public boolean startNextMatchingActivity(@NonNull @RequiresPermission android.content.Intent, @Nullable android.os.Bundle);
-    method public void startPostponedEnterTransition();
-    method public void startSearch(@Nullable String, boolean, @Nullable android.os.Bundle, boolean);
-    method public void stopLocalVoiceInteraction();
-    method public void stopLockTask();
-    method @Deprecated public void stopManagingCursor(android.database.Cursor);
-    method public void takeKeyEvents(boolean);
-    method public void triggerSearch(String, @Nullable android.os.Bundle);
-    method public void unregisterActivityLifecycleCallbacks(@NonNull android.app.Application.ActivityLifecycleCallbacks);
-    method public void unregisterForContextMenu(android.view.View);
-    field public static final int DEFAULT_KEYS_DIALER = 1; // 0x1
-    field public static final int DEFAULT_KEYS_DISABLE = 0; // 0x0
-    field public static final int DEFAULT_KEYS_SEARCH_GLOBAL = 4; // 0x4
-    field public static final int DEFAULT_KEYS_SEARCH_LOCAL = 3; // 0x3
-    field public static final int DEFAULT_KEYS_SHORTCUT = 2; // 0x2
-    field protected static final int[] FOCUSED_STATE_SET;
-    field public static final int RESULT_CANCELED = 0; // 0x0
-    field public static final int RESULT_FIRST_USER = 1; // 0x1
-    field public static final int RESULT_OK = -1; // 0xffffffff
-  }
-
-  @Deprecated public class ActivityGroup extends android.app.Activity {
-    ctor @Deprecated public ActivityGroup();
-    ctor @Deprecated public ActivityGroup(boolean);
-    method @Deprecated public android.app.Activity getCurrentActivity();
-    method @Deprecated public final android.app.LocalActivityManager getLocalActivityManager();
-  }
-
-  public class ActivityManager {
-    method public int addAppTask(@NonNull android.app.Activity, @NonNull android.content.Intent, @Nullable android.app.ActivityManager.TaskDescription, @NonNull android.graphics.Bitmap);
-    method public void appNotResponding(@NonNull String);
-    method public boolean clearApplicationUserData();
-    method public void clearWatchHeapLimit();
-    method @RequiresPermission(android.Manifest.permission.DUMP) public void dumpPackageState(java.io.FileDescriptor, String);
-    method public android.util.Size getAppTaskThumbnailSize();
-    method public java.util.List<android.app.ActivityManager.AppTask> getAppTasks();
-    method public android.content.pm.ConfigurationInfo getDeviceConfigurationInfo();
-    method @NonNull public java.util.List<android.app.ApplicationExitInfo> getHistoricalProcessExitReasons(@Nullable String, @IntRange(from=0) int, @IntRange(from=0) int);
-    method public int getLargeMemoryClass();
-    method public int getLauncherLargeIconDensity();
-    method public int getLauncherLargeIconSize();
-    method public int getLockTaskModeState();
-    method public int getMemoryClass();
-    method public void getMemoryInfo(android.app.ActivityManager.MemoryInfo);
-    method public static void getMyMemoryState(android.app.ActivityManager.RunningAppProcessInfo);
-    method public android.os.Debug.MemoryInfo[] getProcessMemoryInfo(int[]);
-    method public java.util.List<android.app.ActivityManager.ProcessErrorStateInfo> getProcessesInErrorState();
-    method @Deprecated public java.util.List<android.app.ActivityManager.RecentTaskInfo> getRecentTasks(int, int) throws java.lang.SecurityException;
-    method public java.util.List<android.app.ActivityManager.RunningAppProcessInfo> getRunningAppProcesses();
-    method public android.app.PendingIntent getRunningServiceControlPanel(android.content.ComponentName) throws java.lang.SecurityException;
-    method @Deprecated public java.util.List<android.app.ActivityManager.RunningServiceInfo> getRunningServices(int) throws java.lang.SecurityException;
-    method @Deprecated public java.util.List<android.app.ActivityManager.RunningTaskInfo> getRunningTasks(int) throws java.lang.SecurityException;
-    method public boolean isActivityStartAllowedOnDisplay(@NonNull android.content.Context, int, @NonNull android.content.Intent);
-    method public boolean isBackgroundRestricted();
-    method @Deprecated public boolean isInLockTaskMode();
-    method public static boolean isLowMemoryKillReportSupported();
-    method public boolean isLowRamDevice();
-    method @Deprecated public static boolean isRunningInTestHarness();
-    method public static boolean isRunningInUserTestHarness();
-    method public static boolean isUserAMonkey();
-    method @RequiresPermission(android.Manifest.permission.KILL_BACKGROUND_PROCESSES) public void killBackgroundProcesses(String);
-    method @RequiresPermission(android.Manifest.permission.REORDER_TASKS) public void moveTaskToFront(int, int);
-    method @RequiresPermission(android.Manifest.permission.REORDER_TASKS) public void moveTaskToFront(int, int, android.os.Bundle);
-    method @Deprecated public void restartPackage(String);
-    method public void setProcessStateSummary(@Nullable byte[]);
-    method public static void setVrThread(int);
-    method public void setWatchHeapLimit(long);
-    field public static final String ACTION_REPORT_HEAP_LIMIT = "android.app.action.REPORT_HEAP_LIMIT";
-    field public static final int LOCK_TASK_MODE_LOCKED = 1; // 0x1
-    field public static final int LOCK_TASK_MODE_NONE = 0; // 0x0
-    field public static final int LOCK_TASK_MODE_PINNED = 2; // 0x2
-    field public static final String META_HOME_ALTERNATE = "android.app.home.alternate";
-    field public static final int MOVE_TASK_NO_USER_ACTION = 2; // 0x2
-    field public static final int MOVE_TASK_WITH_HOME = 1; // 0x1
-    field public static final int RECENT_IGNORE_UNAVAILABLE = 2; // 0x2
-    field public static final int RECENT_WITH_EXCLUDED = 1; // 0x1
-  }
-
-  public static class ActivityManager.AppTask {
-    method public void finishAndRemoveTask();
-    method public android.app.ActivityManager.RecentTaskInfo getTaskInfo();
-    method public void moveToFront();
-    method public void setExcludeFromRecents(boolean);
-    method public void startActivity(android.content.Context, android.content.Intent, android.os.Bundle);
-  }
-
-  public static class ActivityManager.MemoryInfo implements android.os.Parcelable {
-    ctor public ActivityManager.MemoryInfo();
-    method public int describeContents();
-    method public void readFromParcel(android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.ActivityManager.MemoryInfo> CREATOR;
-    field public long availMem;
-    field public boolean lowMemory;
-    field public long threshold;
-    field public long totalMem;
-  }
-
-  public static class ActivityManager.ProcessErrorStateInfo implements android.os.Parcelable {
-    ctor public ActivityManager.ProcessErrorStateInfo();
-    method public int describeContents();
-    method public void readFromParcel(android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CRASHED = 1; // 0x1
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.ActivityManager.ProcessErrorStateInfo> CREATOR;
-    field public static final int NOT_RESPONDING = 2; // 0x2
-    field public static final int NO_ERROR = 0; // 0x0
-    field public int condition;
-    field public byte[] crashData;
-    field public String longMsg;
-    field public int pid;
-    field public String processName;
-    field public String shortMsg;
-    field public String stackTrace;
-    field public String tag;
-    field public int uid;
-  }
-
-  public static class ActivityManager.RecentTaskInfo extends android.app.TaskInfo implements android.os.Parcelable {
-    ctor public ActivityManager.RecentTaskInfo();
-    method public int describeContents();
-    method public void readFromParcel(android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.ActivityManager.RecentTaskInfo> CREATOR;
-    field @Deprecated public int affiliatedTaskId;
-    field @Deprecated public CharSequence description;
-    field @Deprecated public int id;
-    field @Deprecated public int persistentId;
-  }
-
-  public static class ActivityManager.RunningAppProcessInfo implements android.os.Parcelable {
-    ctor public ActivityManager.RunningAppProcessInfo();
-    ctor public ActivityManager.RunningAppProcessInfo(String, int, String[]);
-    method public int describeContents();
-    method public void readFromParcel(android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.ActivityManager.RunningAppProcessInfo> CREATOR;
-    field @Deprecated public static final int IMPORTANCE_BACKGROUND = 400; // 0x190
-    field public static final int IMPORTANCE_CACHED = 400; // 0x190
-    field public static final int IMPORTANCE_CANT_SAVE_STATE = 350; // 0x15e
-    field @Deprecated public static final int IMPORTANCE_EMPTY = 500; // 0x1f4
-    field public static final int IMPORTANCE_FOREGROUND = 100; // 0x64
-    field public static final int IMPORTANCE_FOREGROUND_SERVICE = 125; // 0x7d
-    field public static final int IMPORTANCE_GONE = 1000; // 0x3e8
-    field public static final int IMPORTANCE_PERCEPTIBLE = 230; // 0xe6
-    field public static final int IMPORTANCE_PERCEPTIBLE_PRE_26 = 130; // 0x82
-    field public static final int IMPORTANCE_SERVICE = 300; // 0x12c
-    field public static final int IMPORTANCE_TOP_SLEEPING = 325; // 0x145
-    field @Deprecated public static final int IMPORTANCE_TOP_SLEEPING_PRE_28 = 150; // 0x96
-    field public static final int IMPORTANCE_VISIBLE = 200; // 0xc8
-    field public static final int REASON_PROVIDER_IN_USE = 1; // 0x1
-    field public static final int REASON_SERVICE_IN_USE = 2; // 0x2
-    field public static final int REASON_UNKNOWN = 0; // 0x0
-    field public int importance;
-    field public int importanceReasonCode;
-    field public android.content.ComponentName importanceReasonComponent;
-    field public int importanceReasonPid;
-    field public int lastTrimLevel;
-    field public int lru;
-    field public int pid;
-    field public String[] pkgList;
-    field public String processName;
-    field public int uid;
-  }
-
-  public static class ActivityManager.RunningServiceInfo implements android.os.Parcelable {
-    ctor public ActivityManager.RunningServiceInfo();
-    method public int describeContents();
-    method public void readFromParcel(android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.ActivityManager.RunningServiceInfo> CREATOR;
-    field public static final int FLAG_FOREGROUND = 2; // 0x2
-    field public static final int FLAG_PERSISTENT_PROCESS = 8; // 0x8
-    field public static final int FLAG_STARTED = 1; // 0x1
-    field public static final int FLAG_SYSTEM_PROCESS = 4; // 0x4
-    field public long activeSince;
-    field public int clientCount;
-    field public int clientLabel;
-    field public String clientPackage;
-    field public int crashCount;
-    field public int flags;
-    field public boolean foreground;
-    field public long lastActivityTime;
-    field public int pid;
-    field public String process;
-    field public long restarting;
-    field public android.content.ComponentName service;
-    field public boolean started;
-    field public int uid;
-  }
-
-  public static class ActivityManager.RunningTaskInfo extends android.app.TaskInfo implements android.os.Parcelable {
-    ctor public ActivityManager.RunningTaskInfo();
-    method public int describeContents();
-    method public void readFromParcel(android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.ActivityManager.RunningTaskInfo> CREATOR;
-    field @Deprecated public CharSequence description;
-    field @Deprecated public int id;
-    field @Deprecated public int numRunning;
-    field @Deprecated public android.graphics.Bitmap thumbnail;
-  }
-
-  public static class ActivityManager.TaskDescription implements android.os.Parcelable {
-    ctor public ActivityManager.TaskDescription(String, @DrawableRes int, int);
-    ctor public ActivityManager.TaskDescription(String, @DrawableRes int);
-    ctor public ActivityManager.TaskDescription(String);
-    ctor public ActivityManager.TaskDescription();
-    ctor @Deprecated public ActivityManager.TaskDescription(String, android.graphics.Bitmap, int);
-    ctor @Deprecated public ActivityManager.TaskDescription(String, android.graphics.Bitmap);
-    ctor public ActivityManager.TaskDescription(android.app.ActivityManager.TaskDescription);
-    method public int describeContents();
-    method @Deprecated public android.graphics.Bitmap getIcon();
-    method public String getLabel();
-    method public int getPrimaryColor();
-    method public void readFromParcel(android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.ActivityManager.TaskDescription> CREATOR;
-  }
-
-  public class ActivityOptions {
-    method @Nullable public android.graphics.Rect getLaunchBounds();
-    method public int getLaunchDisplayId();
-    method public boolean getLockTaskMode();
-    method public static android.app.ActivityOptions makeBasic();
-    method public static android.app.ActivityOptions makeClipRevealAnimation(android.view.View, int, int, int, int);
-    method public static android.app.ActivityOptions makeCustomAnimation(android.content.Context, int, int);
-    method public static android.app.ActivityOptions makeScaleUpAnimation(android.view.View, int, int, int, int);
-    method public static android.app.ActivityOptions makeSceneTransitionAnimation(android.app.Activity, android.view.View, String);
-    method @java.lang.SafeVarargs public static android.app.ActivityOptions makeSceneTransitionAnimation(android.app.Activity, android.util.Pair<android.view.View,java.lang.String>...);
-    method public static android.app.ActivityOptions makeTaskLaunchBehind();
-    method public static android.app.ActivityOptions makeThumbnailScaleUpAnimation(android.view.View, android.graphics.Bitmap, int, int);
-    method public void requestUsageTimeReport(android.app.PendingIntent);
-    method public android.app.ActivityOptions setAppVerificationBundle(android.os.Bundle);
-    method public android.app.ActivityOptions setLaunchBounds(@Nullable android.graphics.Rect);
-    method public android.app.ActivityOptions setLaunchDisplayId(int);
-    method public android.app.ActivityOptions setLockTaskEnabled(boolean);
-    method public android.os.Bundle toBundle();
-    method public void update(android.app.ActivityOptions);
-    field public static final String EXTRA_USAGE_TIME_REPORT = "android.activity.usage_time";
-    field public static final String EXTRA_USAGE_TIME_REPORT_PACKAGES = "android.usage_time_packages";
-  }
-
-  public class AlarmManager {
-    method public void cancel(android.app.PendingIntent);
-    method public void cancel(android.app.AlarmManager.OnAlarmListener);
-    method public android.app.AlarmManager.AlarmClockInfo getNextAlarmClock();
-    method public void set(int, long, android.app.PendingIntent);
-    method public void set(int, long, String, android.app.AlarmManager.OnAlarmListener, android.os.Handler);
-    method public void setAlarmClock(android.app.AlarmManager.AlarmClockInfo, android.app.PendingIntent);
-    method public void setAndAllowWhileIdle(int, long, android.app.PendingIntent);
-    method public void setExact(int, long, android.app.PendingIntent);
-    method public void setExact(int, long, String, android.app.AlarmManager.OnAlarmListener, android.os.Handler);
-    method public void setExactAndAllowWhileIdle(int, long, android.app.PendingIntent);
-    method public void setInexactRepeating(int, long, long, android.app.PendingIntent);
-    method public void setRepeating(int, long, long, android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.SET_TIME) public void setTime(long);
-    method @RequiresPermission(android.Manifest.permission.SET_TIME_ZONE) public void setTimeZone(String);
-    method public void setWindow(int, long, long, android.app.PendingIntent);
-    method public void setWindow(int, long, long, String, android.app.AlarmManager.OnAlarmListener, android.os.Handler);
-    field public static final String ACTION_NEXT_ALARM_CLOCK_CHANGED = "android.app.action.NEXT_ALARM_CLOCK_CHANGED";
-    field public static final int ELAPSED_REALTIME = 3; // 0x3
-    field public static final int ELAPSED_REALTIME_WAKEUP = 2; // 0x2
-    field public static final long INTERVAL_DAY = 86400000L; // 0x5265c00L
-    field public static final long INTERVAL_FIFTEEN_MINUTES = 900000L; // 0xdbba0L
-    field public static final long INTERVAL_HALF_DAY = 43200000L; // 0x2932e00L
-    field public static final long INTERVAL_HALF_HOUR = 1800000L; // 0x1b7740L
-    field public static final long INTERVAL_HOUR = 3600000L; // 0x36ee80L
-    field public static final int RTC = 1; // 0x1
-    field public static final int RTC_WAKEUP = 0; // 0x0
-  }
-
-  public static final class AlarmManager.AlarmClockInfo implements android.os.Parcelable {
-    ctor public AlarmManager.AlarmClockInfo(long, android.app.PendingIntent);
-    method public int describeContents();
-    method public android.app.PendingIntent getShowIntent();
-    method public long getTriggerTime();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AlarmManager.AlarmClockInfo> CREATOR;
-  }
-
-  public static interface AlarmManager.OnAlarmListener {
-    method public void onAlarm();
-  }
-
-  public class AlertDialog extends android.app.Dialog implements android.content.DialogInterface {
-    ctor protected AlertDialog(android.content.Context);
-    ctor protected AlertDialog(android.content.Context, boolean, android.content.DialogInterface.OnCancelListener);
-    ctor protected AlertDialog(android.content.Context, @StyleRes int);
-    method public android.widget.Button getButton(int);
-    method public android.widget.ListView getListView();
-    method public void setButton(int, CharSequence, android.os.Message);
-    method public void setButton(int, CharSequence, android.content.DialogInterface.OnClickListener);
-    method @Deprecated public void setButton(CharSequence, android.os.Message);
-    method @Deprecated public void setButton(CharSequence, android.content.DialogInterface.OnClickListener);
-    method @Deprecated public void setButton2(CharSequence, android.os.Message);
-    method @Deprecated public void setButton2(CharSequence, android.content.DialogInterface.OnClickListener);
-    method @Deprecated public void setButton3(CharSequence, android.os.Message);
-    method @Deprecated public void setButton3(CharSequence, android.content.DialogInterface.OnClickListener);
-    method public void setCustomTitle(android.view.View);
-    method public void setIcon(@DrawableRes int);
-    method public void setIcon(android.graphics.drawable.Drawable);
-    method public void setIconAttribute(@AttrRes int);
-    method public void setInverseBackgroundForced(boolean);
-    method public void setMessage(CharSequence);
-    method public void setView(android.view.View);
-    method public void setView(android.view.View, int, int, int, int);
-    field @Deprecated public static final int THEME_DEVICE_DEFAULT_DARK = 4; // 0x4
-    field @Deprecated public static final int THEME_DEVICE_DEFAULT_LIGHT = 5; // 0x5
-    field @Deprecated public static final int THEME_HOLO_DARK = 2; // 0x2
-    field @Deprecated public static final int THEME_HOLO_LIGHT = 3; // 0x3
-    field @Deprecated public static final int THEME_TRADITIONAL = 1; // 0x1
-  }
-
-  public static class AlertDialog.Builder {
-    ctor public AlertDialog.Builder(android.content.Context);
-    ctor public AlertDialog.Builder(android.content.Context, int);
-    method public android.app.AlertDialog create();
-    method public android.content.Context getContext();
-    method public android.app.AlertDialog.Builder setAdapter(android.widget.ListAdapter, android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setCancelable(boolean);
-    method public android.app.AlertDialog.Builder setCursor(android.database.Cursor, android.content.DialogInterface.OnClickListener, String);
-    method public android.app.AlertDialog.Builder setCustomTitle(android.view.View);
-    method public android.app.AlertDialog.Builder setIcon(@DrawableRes int);
-    method public android.app.AlertDialog.Builder setIcon(android.graphics.drawable.Drawable);
-    method public android.app.AlertDialog.Builder setIconAttribute(@AttrRes int);
-    method @Deprecated public android.app.AlertDialog.Builder setInverseBackgroundForced(boolean);
-    method public android.app.AlertDialog.Builder setItems(@ArrayRes int, android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setItems(CharSequence[], android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setMessage(@StringRes int);
-    method public android.app.AlertDialog.Builder setMessage(CharSequence);
-    method public android.app.AlertDialog.Builder setMultiChoiceItems(@ArrayRes int, boolean[], android.content.DialogInterface.OnMultiChoiceClickListener);
-    method public android.app.AlertDialog.Builder setMultiChoiceItems(CharSequence[], boolean[], android.content.DialogInterface.OnMultiChoiceClickListener);
-    method public android.app.AlertDialog.Builder setMultiChoiceItems(android.database.Cursor, String, String, android.content.DialogInterface.OnMultiChoiceClickListener);
-    method public android.app.AlertDialog.Builder setNegativeButton(@StringRes int, android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setNegativeButton(CharSequence, android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setNeutralButton(@StringRes int, android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setNeutralButton(CharSequence, android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setOnCancelListener(android.content.DialogInterface.OnCancelListener);
-    method public android.app.AlertDialog.Builder setOnDismissListener(android.content.DialogInterface.OnDismissListener);
-    method public android.app.AlertDialog.Builder setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener);
-    method public android.app.AlertDialog.Builder setOnKeyListener(android.content.DialogInterface.OnKeyListener);
-    method public android.app.AlertDialog.Builder setPositiveButton(@StringRes int, android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setPositiveButton(CharSequence, android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setSingleChoiceItems(@ArrayRes int, int, android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setSingleChoiceItems(android.database.Cursor, int, String, android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setSingleChoiceItems(CharSequence[], int, android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setSingleChoiceItems(android.widget.ListAdapter, int, android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setTitle(@StringRes int);
-    method public android.app.AlertDialog.Builder setTitle(CharSequence);
-    method public android.app.AlertDialog.Builder setView(int);
-    method public android.app.AlertDialog.Builder setView(android.view.View);
-    method public android.app.AlertDialog show();
-  }
-
-  @Deprecated public class AliasActivity extends android.app.Activity {
-    ctor @Deprecated public AliasActivity();
-  }
-
-  public class AppComponentFactory {
-    ctor public AppComponentFactory();
-    method @NonNull public android.app.Activity instantiateActivity(@NonNull ClassLoader, @NonNull String, @Nullable android.content.Intent) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method @NonNull public android.app.Application instantiateApplication(@NonNull ClassLoader, @NonNull String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method @NonNull public ClassLoader instantiateClassLoader(@NonNull ClassLoader, @NonNull android.content.pm.ApplicationInfo);
-    method @NonNull public android.content.ContentProvider instantiateProvider(@NonNull ClassLoader, @NonNull String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method @NonNull public android.content.BroadcastReceiver instantiateReceiver(@NonNull ClassLoader, @NonNull String, @Nullable android.content.Intent) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method @NonNull public android.app.Service instantiateService(@NonNull ClassLoader, @NonNull String, @Nullable android.content.Intent) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-  }
-
-  public class AppOpsManager {
-    method @Deprecated public int checkOp(@NonNull String, int, @NonNull String);
-    method @Deprecated public int checkOpNoThrow(@NonNull String, int, @NonNull String);
-    method @Deprecated public void checkPackage(int, @NonNull String);
-    method @Deprecated public void finishOp(@NonNull String, int, @NonNull String);
-    method public void finishOp(@NonNull String, int, @NonNull String, @Nullable String);
-    method public boolean isOpActive(@NonNull String, int, @NonNull String);
-    method @Deprecated public int noteOp(@NonNull String, int, @NonNull String);
-    method public int noteOp(@NonNull String, int, @Nullable String, @Nullable String, @Nullable String);
-    method @Deprecated public int noteOpNoThrow(@NonNull String, int, @NonNull String);
-    method public int noteOpNoThrow(@NonNull String, int, @NonNull String, @Nullable String, @Nullable String);
-    method @Deprecated public int noteProxyOp(@NonNull String, @NonNull String);
-    method public int noteProxyOp(@NonNull String, @Nullable String, int, @Nullable String, @Nullable String);
-    method @Deprecated public int noteProxyOpNoThrow(@NonNull String, @NonNull String);
-    method @Deprecated public int noteProxyOpNoThrow(@NonNull String, @Nullable String, int);
-    method public int noteProxyOpNoThrow(@NonNull String, @Nullable String, int, @Nullable String, @Nullable String);
-    method @Nullable public static String permissionToOp(@NonNull String);
-    method public void setOnOpNotedCallback(@Nullable java.util.concurrent.Executor, @Nullable android.app.AppOpsManager.OnOpNotedCallback);
-    method @Deprecated public int startOp(@NonNull String, int, @NonNull String);
-    method public int startOp(@NonNull String, int, @Nullable String, @Nullable String, @Nullable String);
-    method @Deprecated public int startOpNoThrow(@NonNull String, int, @NonNull String);
-    method public int startOpNoThrow(@NonNull String, int, @NonNull String, @NonNull String, @Nullable String);
-    method public void startWatchingActive(@NonNull String[], @NonNull java.util.concurrent.Executor, @NonNull android.app.AppOpsManager.OnOpActiveChangedListener);
-    method public void startWatchingMode(@NonNull String, @Nullable String, @NonNull android.app.AppOpsManager.OnOpChangedListener);
-    method public void startWatchingMode(@NonNull String, @Nullable String, int, @NonNull android.app.AppOpsManager.OnOpChangedListener);
-    method public void stopWatchingActive(@NonNull android.app.AppOpsManager.OnOpActiveChangedListener);
-    method public void stopWatchingMode(@NonNull android.app.AppOpsManager.OnOpChangedListener);
-    method public int unsafeCheckOp(@NonNull String, int, @NonNull String);
-    method public int unsafeCheckOpNoThrow(@NonNull String, int, @NonNull String);
-    method public int unsafeCheckOpRaw(@NonNull String, int, @NonNull String);
-    method public int unsafeCheckOpRawNoThrow(@NonNull String, int, @NonNull String);
-    field public static final int MODE_ALLOWED = 0; // 0x0
-    field public static final int MODE_DEFAULT = 3; // 0x3
-    field public static final int MODE_ERRORED = 2; // 0x2
-    field public static final int MODE_FOREGROUND = 4; // 0x4
-    field public static final int MODE_IGNORED = 1; // 0x1
-    field public static final String OPSTR_ADD_VOICEMAIL = "android:add_voicemail";
-    field public static final String OPSTR_ANSWER_PHONE_CALLS = "android:answer_phone_calls";
-    field public static final String OPSTR_BODY_SENSORS = "android:body_sensors";
-    field public static final String OPSTR_CALL_PHONE = "android:call_phone";
-    field public static final String OPSTR_CAMERA = "android:camera";
-    field public static final String OPSTR_COARSE_LOCATION = "android:coarse_location";
-    field public static final String OPSTR_FINE_LOCATION = "android:fine_location";
-    field public static final String OPSTR_GET_USAGE_STATS = "android:get_usage_stats";
-    field public static final String OPSTR_MOCK_LOCATION = "android:mock_location";
-    field public static final String OPSTR_MONITOR_HIGH_POWER_LOCATION = "android:monitor_location_high_power";
-    field public static final String OPSTR_MONITOR_LOCATION = "android:monitor_location";
-    field public static final String OPSTR_PICTURE_IN_PICTURE = "android:picture_in_picture";
-    field public static final String OPSTR_PROCESS_OUTGOING_CALLS = "android:process_outgoing_calls";
-    field public static final String OPSTR_READ_CALENDAR = "android:read_calendar";
-    field public static final String OPSTR_READ_CALL_LOG = "android:read_call_log";
-    field public static final String OPSTR_READ_CELL_BROADCASTS = "android:read_cell_broadcasts";
-    field public static final String OPSTR_READ_CONTACTS = "android:read_contacts";
-    field public static final String OPSTR_READ_EXTERNAL_STORAGE = "android:read_external_storage";
-    field public static final String OPSTR_READ_PHONE_NUMBERS = "android:read_phone_numbers";
-    field public static final String OPSTR_READ_PHONE_STATE = "android:read_phone_state";
-    field public static final String OPSTR_READ_SMS = "android:read_sms";
-    field public static final String OPSTR_RECEIVE_MMS = "android:receive_mms";
-    field public static final String OPSTR_RECEIVE_SMS = "android:receive_sms";
-    field public static final String OPSTR_RECEIVE_WAP_PUSH = "android:receive_wap_push";
-    field public static final String OPSTR_RECORD_AUDIO = "android:record_audio";
-    field public static final String OPSTR_SEND_SMS = "android:send_sms";
-    field public static final String OPSTR_SYSTEM_ALERT_WINDOW = "android:system_alert_window";
-    field public static final String OPSTR_USE_FINGERPRINT = "android:use_fingerprint";
-    field public static final String OPSTR_USE_SIP = "android:use_sip";
-    field public static final String OPSTR_WRITE_CALENDAR = "android:write_calendar";
-    field public static final String OPSTR_WRITE_CALL_LOG = "android:write_call_log";
-    field public static final String OPSTR_WRITE_CONTACTS = "android:write_contacts";
-    field public static final String OPSTR_WRITE_EXTERNAL_STORAGE = "android:write_external_storage";
-    field public static final String OPSTR_WRITE_SETTINGS = "android:write_settings";
-    field public static final int WATCH_FOREGROUND_CHANGES = 1; // 0x1
-  }
-
-  public static interface AppOpsManager.OnOpActiveChangedListener {
-    method public void onOpActiveChanged(@NonNull String, int, @NonNull String, boolean);
-  }
-
-  public static interface AppOpsManager.OnOpChangedListener {
-    method public void onOpChanged(String, String);
-  }
-
-  public abstract static class AppOpsManager.OnOpNotedCallback {
-    ctor public AppOpsManager.OnOpNotedCallback();
-    method public abstract void onAsyncNoted(@NonNull android.app.AsyncNotedAppOp);
-    method public abstract void onNoted(@NonNull android.app.SyncNotedAppOp);
-    method public abstract void onSelfNoted(@NonNull android.app.SyncNotedAppOp);
-  }
-
-  public class Application extends android.content.ContextWrapper implements android.content.ComponentCallbacks2 {
-    ctor public Application();
-    method public static String getProcessName();
-    method @CallSuper public void onConfigurationChanged(@NonNull android.content.res.Configuration);
-    method @CallSuper public void onCreate();
-    method @CallSuper public void onLowMemory();
-    method @CallSuper public void onTerminate();
-    method @CallSuper public void onTrimMemory(int);
-    method public void registerActivityLifecycleCallbacks(android.app.Application.ActivityLifecycleCallbacks);
-    method public void registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener);
-    method public void unregisterActivityLifecycleCallbacks(android.app.Application.ActivityLifecycleCallbacks);
-    method public void unregisterOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener);
-  }
-
-  public static interface Application.ActivityLifecycleCallbacks {
-    method public void onActivityCreated(@NonNull android.app.Activity, @Nullable android.os.Bundle);
-    method public void onActivityDestroyed(@NonNull android.app.Activity);
-    method public void onActivityPaused(@NonNull android.app.Activity);
-    method public default void onActivityPostCreated(@NonNull android.app.Activity, @Nullable android.os.Bundle);
-    method public default void onActivityPostDestroyed(@NonNull android.app.Activity);
-    method public default void onActivityPostPaused(@NonNull android.app.Activity);
-    method public default void onActivityPostResumed(@NonNull android.app.Activity);
-    method public default void onActivityPostSaveInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle);
-    method public default void onActivityPostStarted(@NonNull android.app.Activity);
-    method public default void onActivityPostStopped(@NonNull android.app.Activity);
-    method public default void onActivityPreCreated(@NonNull android.app.Activity, @Nullable android.os.Bundle);
-    method public default void onActivityPreDestroyed(@NonNull android.app.Activity);
-    method public default void onActivityPrePaused(@NonNull android.app.Activity);
-    method public default void onActivityPreResumed(@NonNull android.app.Activity);
-    method public default void onActivityPreSaveInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle);
-    method public default void onActivityPreStarted(@NonNull android.app.Activity);
-    method public default void onActivityPreStopped(@NonNull android.app.Activity);
-    method public void onActivityResumed(@NonNull android.app.Activity);
-    method public void onActivitySaveInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle);
-    method public void onActivityStarted(@NonNull android.app.Activity);
-    method public void onActivityStopped(@NonNull android.app.Activity);
-  }
-
-  public static interface Application.OnProvideAssistDataListener {
-    method public void onProvideAssistData(android.app.Activity, android.os.Bundle);
-  }
-
-  public class ApplicationErrorReport implements android.os.Parcelable {
-    ctor public ApplicationErrorReport();
-    method public int describeContents();
-    method public void dump(android.util.Printer, String);
-    method public static android.content.ComponentName getErrorReportReceiver(android.content.Context, String, int);
-    method public void readFromParcel(android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.ApplicationErrorReport> CREATOR;
-    field public static final int TYPE_ANR = 2; // 0x2
-    field public static final int TYPE_BATTERY = 3; // 0x3
-    field public static final int TYPE_CRASH = 1; // 0x1
-    field public static final int TYPE_NONE = 0; // 0x0
-    field public static final int TYPE_RUNNING_SERVICE = 5; // 0x5
-    field public android.app.ApplicationErrorReport.AnrInfo anrInfo;
-    field public android.app.ApplicationErrorReport.BatteryInfo batteryInfo;
-    field public android.app.ApplicationErrorReport.CrashInfo crashInfo;
-    field public String installerPackageName;
-    field public String packageName;
-    field public String processName;
-    field public android.app.ApplicationErrorReport.RunningServiceInfo runningServiceInfo;
-    field public boolean systemApp;
-    field public long time;
-    field public int type;
-  }
-
-  public static class ApplicationErrorReport.AnrInfo {
-    ctor public ApplicationErrorReport.AnrInfo();
-    ctor public ApplicationErrorReport.AnrInfo(android.os.Parcel);
-    method public void dump(android.util.Printer, String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public String activity;
-    field public String cause;
-    field public String info;
-  }
-
-  public static class ApplicationErrorReport.BatteryInfo {
-    ctor public ApplicationErrorReport.BatteryInfo();
-    ctor public ApplicationErrorReport.BatteryInfo(android.os.Parcel);
-    method public void dump(android.util.Printer, String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public String checkinDetails;
-    field public long durationMicros;
-    field public String usageDetails;
-    field public int usagePercent;
-  }
-
-  public static class ApplicationErrorReport.CrashInfo {
-    ctor public ApplicationErrorReport.CrashInfo();
-    ctor public ApplicationErrorReport.CrashInfo(Throwable);
-    ctor public ApplicationErrorReport.CrashInfo(android.os.Parcel);
-    method public void dump(android.util.Printer, String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public String exceptionClassName;
-    field public String exceptionMessage;
-    field public String stackTrace;
-    field public String throwClassName;
-    field public String throwFileName;
-    field public int throwLineNumber;
-    field public String throwMethodName;
-  }
-
-  public static class ApplicationErrorReport.RunningServiceInfo {
-    ctor public ApplicationErrorReport.RunningServiceInfo();
-    ctor public ApplicationErrorReport.RunningServiceInfo(android.os.Parcel);
-    method public void dump(android.util.Printer, String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public long durationMillis;
-    field public String serviceDetails;
-  }
-
-  public final class ApplicationExitInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getDefiningUid();
-    method @Nullable public String getDescription();
-    method public int getImportance();
-    method public int getPackageUid();
-    method public int getPid();
-    method @NonNull public String getProcessName();
-    method @Nullable public byte[] getProcessStateSummary();
-    method public long getPss();
-    method public int getRealUid();
-    method public int getReason();
-    method public long getRss();
-    method public int getStatus();
-    method public long getTimestamp();
-    method @Nullable public java.io.InputStream getTraceInputStream() throws java.io.IOException;
-    method @NonNull public android.os.UserHandle getUserHandle();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.ApplicationExitInfo> CREATOR;
-    field public static final int REASON_ANR = 6; // 0x6
-    field public static final int REASON_CRASH = 4; // 0x4
-    field public static final int REASON_CRASH_NATIVE = 5; // 0x5
-    field public static final int REASON_DEPENDENCY_DIED = 12; // 0xc
-    field public static final int REASON_EXCESSIVE_RESOURCE_USAGE = 9; // 0x9
-    field public static final int REASON_EXIT_SELF = 1; // 0x1
-    field public static final int REASON_INITIALIZATION_FAILURE = 7; // 0x7
-    field public static final int REASON_LOW_MEMORY = 3; // 0x3
-    field public static final int REASON_OTHER = 13; // 0xd
-    field public static final int REASON_PERMISSION_CHANGE = 8; // 0x8
-    field public static final int REASON_SIGNALED = 2; // 0x2
-    field public static final int REASON_UNKNOWN = 0; // 0x0
-    field public static final int REASON_USER_REQUESTED = 10; // 0xa
-    field public static final int REASON_USER_STOPPED = 11; // 0xb
-  }
-
-  public final class AsyncNotedAppOp implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getAttributionTag();
-    method @NonNull public String getMessage();
-    method @IntRange(from=0) public int getNotingUid();
-    method @NonNull public String getOp();
-    method public long getTime();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AsyncNotedAppOp> CREATOR;
-  }
-
-  public final class AuthenticationRequiredException extends java.lang.SecurityException implements android.os.Parcelable {
-    ctor public AuthenticationRequiredException(Throwable, android.app.PendingIntent);
-    method public int describeContents();
-    method public android.app.PendingIntent getUserAction();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AuthenticationRequiredException> CREATOR;
-  }
-
-  public final class AutomaticZenRule implements android.os.Parcelable {
-    ctor @Deprecated public AutomaticZenRule(String, android.content.ComponentName, android.net.Uri, int, boolean);
-    ctor public AutomaticZenRule(@NonNull String, @Nullable android.content.ComponentName, @Nullable android.content.ComponentName, @NonNull android.net.Uri, @Nullable android.service.notification.ZenPolicy, int, boolean);
-    ctor public AutomaticZenRule(android.os.Parcel);
-    method public int describeContents();
-    method public android.net.Uri getConditionId();
-    method @Nullable public android.content.ComponentName getConfigurationActivity();
-    method public long getCreationTime();
-    method public int getInterruptionFilter();
-    method public String getName();
-    method public android.content.ComponentName getOwner();
-    method public android.service.notification.ZenPolicy getZenPolicy();
-    method public boolean isEnabled();
-    method public void setConditionId(android.net.Uri);
-    method public void setConfigurationActivity(@Nullable android.content.ComponentName);
-    method public void setEnabled(boolean);
-    method public void setInterruptionFilter(int);
-    method public void setName(String);
-    method public void setZenPolicy(android.service.notification.ZenPolicy);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AutomaticZenRule> CREATOR;
-  }
-
-  public class DatePickerDialog extends android.app.AlertDialog implements android.widget.DatePicker.OnDateChangedListener android.content.DialogInterface.OnClickListener {
-    ctor public DatePickerDialog(@NonNull android.content.Context);
-    ctor public DatePickerDialog(@NonNull android.content.Context, @StyleRes int);
-    ctor public DatePickerDialog(@NonNull android.content.Context, @Nullable android.app.DatePickerDialog.OnDateSetListener, int, int, int);
-    ctor public DatePickerDialog(@NonNull android.content.Context, @StyleRes int, @Nullable android.app.DatePickerDialog.OnDateSetListener, int, int, int);
-    method @NonNull public android.widget.DatePicker getDatePicker();
-    method public void onClick(@NonNull android.content.DialogInterface, int);
-    method public void onDateChanged(@NonNull android.widget.DatePicker, int, int, int);
-    method public void setOnDateSetListener(@Nullable android.app.DatePickerDialog.OnDateSetListener);
-    method public void updateDate(int, int, int);
-  }
-
-  public static interface DatePickerDialog.OnDateSetListener {
-    method public void onDateSet(android.widget.DatePicker, int, int, int);
-  }
-
-  public class Dialog implements android.content.DialogInterface android.view.KeyEvent.Callback android.view.View.OnCreateContextMenuListener android.view.Window.Callback {
-    ctor public Dialog(@NonNull android.content.Context);
-    ctor public Dialog(@NonNull android.content.Context, @StyleRes int);
-    ctor protected Dialog(@NonNull android.content.Context, boolean, @Nullable android.content.DialogInterface.OnCancelListener);
-    method public void addContentView(@NonNull android.view.View, @Nullable android.view.ViewGroup.LayoutParams);
-    method public void cancel();
-    method public void closeOptionsMenu();
-    method public void create();
-    method public void dismiss();
-    method public boolean dispatchGenericMotionEvent(@NonNull android.view.MotionEvent);
-    method public boolean dispatchKeyEvent(@NonNull android.view.KeyEvent);
-    method public boolean dispatchKeyShortcutEvent(@NonNull android.view.KeyEvent);
-    method public boolean dispatchPopulateAccessibilityEvent(@NonNull android.view.accessibility.AccessibilityEvent);
-    method public boolean dispatchTouchEvent(@NonNull android.view.MotionEvent);
-    method public boolean dispatchTrackballEvent(@NonNull android.view.MotionEvent);
-    method public <T extends android.view.View> T findViewById(@IdRes int);
-    method @Nullable public android.app.ActionBar getActionBar();
-    method @NonNull public final android.content.Context getContext();
-    method @Nullable public android.view.View getCurrentFocus();
-    method @NonNull public android.view.LayoutInflater getLayoutInflater();
-    method @Nullable public final android.app.Activity getOwnerActivity();
-    method @Nullable public final android.view.SearchEvent getSearchEvent();
-    method public final int getVolumeControlStream();
-    method @Nullable public android.view.Window getWindow();
-    method public void hide();
-    method public void invalidateOptionsMenu();
-    method public boolean isShowing();
-    method @CallSuper public void onActionModeFinished(android.view.ActionMode);
-    method @CallSuper public void onActionModeStarted(android.view.ActionMode);
-    method public void onAttachedToWindow();
-    method public void onBackPressed();
-    method public void onContentChanged();
-    method public boolean onContextItemSelected(@NonNull android.view.MenuItem);
-    method public void onContextMenuClosed(@NonNull android.view.Menu);
-    method protected void onCreate(android.os.Bundle);
-    method public void onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo);
-    method public boolean onCreateOptionsMenu(@NonNull android.view.Menu);
-    method public boolean onCreatePanelMenu(int, @NonNull android.view.Menu);
-    method public android.view.View onCreatePanelView(int);
-    method public void onDetachedFromWindow();
-    method public boolean onGenericMotionEvent(@NonNull android.view.MotionEvent);
-    method public boolean onKeyDown(int, @NonNull android.view.KeyEvent);
-    method public boolean onKeyLongPress(int, @NonNull android.view.KeyEvent);
-    method public boolean onKeyMultiple(int, int, @NonNull android.view.KeyEvent);
-    method public boolean onKeyShortcut(int, @NonNull android.view.KeyEvent);
-    method public boolean onKeyUp(int, @NonNull android.view.KeyEvent);
-    method public boolean onMenuItemSelected(int, @NonNull android.view.MenuItem);
-    method public boolean onMenuOpened(int, @NonNull android.view.Menu);
-    method public boolean onOptionsItemSelected(@NonNull android.view.MenuItem);
-    method public void onOptionsMenuClosed(@NonNull android.view.Menu);
-    method public void onPanelClosed(int, @NonNull android.view.Menu);
-    method public boolean onPrepareOptionsMenu(@NonNull android.view.Menu);
-    method public boolean onPreparePanel(int, @Nullable android.view.View, @NonNull android.view.Menu);
-    method public void onRestoreInstanceState(@NonNull android.os.Bundle);
-    method @NonNull public android.os.Bundle onSaveInstanceState();
-    method public boolean onSearchRequested(@NonNull android.view.SearchEvent);
-    method public boolean onSearchRequested();
-    method protected void onStart();
-    method protected void onStop();
-    method public boolean onTouchEvent(@NonNull android.view.MotionEvent);
-    method public boolean onTrackballEvent(@NonNull android.view.MotionEvent);
-    method public void onWindowAttributesChanged(android.view.WindowManager.LayoutParams);
-    method public void onWindowFocusChanged(boolean);
-    method public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback);
-    method public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback, int);
-    method public void openContextMenu(@NonNull android.view.View);
-    method public void openOptionsMenu();
-    method public void registerForContextMenu(@NonNull android.view.View);
-    method public final boolean requestWindowFeature(int);
-    method @NonNull public final <T extends android.view.View> T requireViewById(@IdRes int);
-    method public void setCancelMessage(@Nullable android.os.Message);
-    method public void setCancelable(boolean);
-    method public void setCanceledOnTouchOutside(boolean);
-    method public void setContentView(@LayoutRes int);
-    method public void setContentView(@NonNull android.view.View);
-    method public void setContentView(@NonNull android.view.View, @Nullable android.view.ViewGroup.LayoutParams);
-    method public void setDismissMessage(@Nullable android.os.Message);
-    method public final void setFeatureDrawable(int, @Nullable android.graphics.drawable.Drawable);
-    method public final void setFeatureDrawableAlpha(int, int);
-    method public final void setFeatureDrawableResource(int, @DrawableRes int);
-    method public final void setFeatureDrawableUri(int, @Nullable android.net.Uri);
-    method public void setOnCancelListener(@Nullable android.content.DialogInterface.OnCancelListener);
-    method public void setOnDismissListener(@Nullable android.content.DialogInterface.OnDismissListener);
-    method public void setOnKeyListener(@Nullable android.content.DialogInterface.OnKeyListener);
-    method public void setOnShowListener(@Nullable android.content.DialogInterface.OnShowListener);
-    method public final void setOwnerActivity(@NonNull android.app.Activity);
-    method public void setTitle(@Nullable CharSequence);
-    method public void setTitle(@StringRes int);
-    method public final void setVolumeControlStream(int);
-    method public void show();
-    method public void takeKeyEvents(boolean);
-    method public void unregisterForContextMenu(@NonNull android.view.View);
-  }
-
-  @Deprecated public class DialogFragment extends android.app.Fragment implements android.content.DialogInterface.OnCancelListener android.content.DialogInterface.OnDismissListener {
-    ctor @Deprecated public DialogFragment();
-    method @Deprecated public void dismiss();
-    method @Deprecated public void dismissAllowingStateLoss();
-    method @Deprecated public android.app.Dialog getDialog();
-    method @Deprecated public boolean getShowsDialog();
-    method @Deprecated public int getTheme();
-    method @Deprecated public boolean isCancelable();
-    method @Deprecated public void onCancel(android.content.DialogInterface);
-    method @Deprecated public android.app.Dialog onCreateDialog(android.os.Bundle);
-    method @Deprecated public void onDismiss(android.content.DialogInterface);
-    method public android.view.LayoutInflater onGetLayoutInflater(android.os.Bundle);
-    method @Deprecated public void setCancelable(boolean);
-    method @Deprecated public void setShowsDialog(boolean);
-    method @Deprecated public void setStyle(int, int);
-    method @Deprecated public void show(android.app.FragmentManager, String);
-    method @Deprecated public int show(android.app.FragmentTransaction, String);
-    field @Deprecated public static final int STYLE_NORMAL = 0; // 0x0
-    field @Deprecated public static final int STYLE_NO_FRAME = 2; // 0x2
-    field @Deprecated public static final int STYLE_NO_INPUT = 3; // 0x3
-    field @Deprecated public static final int STYLE_NO_TITLE = 1; // 0x1
-  }
-
-  public final class DirectAction implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.os.Bundle getExtras();
-    method @NonNull public String getId();
-    method @Nullable public android.content.LocusId getLocusId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.DirectAction> CREATOR;
-  }
-
-  public static final class DirectAction.Builder {
-    ctor public DirectAction.Builder(@NonNull String);
-    method @NonNull public android.app.DirectAction build();
-    method @NonNull public android.app.DirectAction.Builder setExtras(@Nullable android.os.Bundle);
-    method @NonNull public android.app.DirectAction.Builder setLocusId(@Nullable android.content.LocusId);
-  }
-
-  public class DownloadManager {
-    method @Deprecated public long addCompletedDownload(String, String, boolean, String, String, long, boolean);
-    method @Deprecated public long addCompletedDownload(String, String, boolean, String, String, long, boolean, android.net.Uri, android.net.Uri);
-    method public long enqueue(android.app.DownloadManager.Request);
-    method public static Long getMaxBytesOverMobile(android.content.Context);
-    method public String getMimeTypeForDownloadedFile(long);
-    method public static Long getRecommendedMaxBytesOverMobile(android.content.Context);
-    method public android.net.Uri getUriForDownloadedFile(long);
-    method public android.os.ParcelFileDescriptor openDownloadedFile(long) throws java.io.FileNotFoundException;
-    method public android.database.Cursor query(android.app.DownloadManager.Query);
-    method public int remove(long...);
-    field public static final String ACTION_DOWNLOAD_COMPLETE = "android.intent.action.DOWNLOAD_COMPLETE";
-    field public static final String ACTION_NOTIFICATION_CLICKED = "android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED";
-    field public static final String ACTION_VIEW_DOWNLOADS = "android.intent.action.VIEW_DOWNLOADS";
-    field public static final String COLUMN_BYTES_DOWNLOADED_SO_FAR = "bytes_so_far";
-    field public static final String COLUMN_DESCRIPTION = "description";
-    field public static final String COLUMN_ID = "_id";
-    field public static final String COLUMN_LAST_MODIFIED_TIMESTAMP = "last_modified_timestamp";
-    field @Deprecated public static final String COLUMN_LOCAL_FILENAME = "local_filename";
-    field public static final String COLUMN_LOCAL_URI = "local_uri";
-    field public static final String COLUMN_MEDIAPROVIDER_URI = "mediaprovider_uri";
-    field public static final String COLUMN_MEDIA_TYPE = "media_type";
-    field public static final String COLUMN_REASON = "reason";
-    field public static final String COLUMN_STATUS = "status";
-    field public static final String COLUMN_TITLE = "title";
-    field public static final String COLUMN_TOTAL_SIZE_BYTES = "total_size";
-    field public static final String COLUMN_URI = "uri";
-    field public static final int ERROR_CANNOT_RESUME = 1008; // 0x3f0
-    field public static final int ERROR_DEVICE_NOT_FOUND = 1007; // 0x3ef
-    field public static final int ERROR_FILE_ALREADY_EXISTS = 1009; // 0x3f1
-    field public static final int ERROR_FILE_ERROR = 1001; // 0x3e9
-    field public static final int ERROR_HTTP_DATA_ERROR = 1004; // 0x3ec
-    field public static final int ERROR_INSUFFICIENT_SPACE = 1006; // 0x3ee
-    field public static final int ERROR_TOO_MANY_REDIRECTS = 1005; // 0x3ed
-    field public static final int ERROR_UNHANDLED_HTTP_CODE = 1002; // 0x3ea
-    field public static final int ERROR_UNKNOWN = 1000; // 0x3e8
-    field public static final String EXTRA_DOWNLOAD_ID = "extra_download_id";
-    field public static final String EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS = "extra_click_download_ids";
-    field public static final String INTENT_EXTRAS_SORT_BY_SIZE = "android.app.DownloadManager.extra_sortBySize";
-    field public static final int PAUSED_QUEUED_FOR_WIFI = 3; // 0x3
-    field public static final int PAUSED_UNKNOWN = 4; // 0x4
-    field public static final int PAUSED_WAITING_FOR_NETWORK = 2; // 0x2
-    field public static final int PAUSED_WAITING_TO_RETRY = 1; // 0x1
-    field public static final int STATUS_FAILED = 16; // 0x10
-    field public static final int STATUS_PAUSED = 4; // 0x4
-    field public static final int STATUS_PENDING = 1; // 0x1
-    field public static final int STATUS_RUNNING = 2; // 0x2
-    field public static final int STATUS_SUCCESSFUL = 8; // 0x8
-  }
-
-  public static class DownloadManager.Query {
-    ctor public DownloadManager.Query();
-    method public android.app.DownloadManager.Query setFilterById(long...);
-    method public android.app.DownloadManager.Query setFilterByStatus(int);
-  }
-
-  public static class DownloadManager.Request {
-    ctor public DownloadManager.Request(android.net.Uri);
-    method public android.app.DownloadManager.Request addRequestHeader(String, String);
-    method @Deprecated public void allowScanningByMediaScanner();
-    method public android.app.DownloadManager.Request setAllowedNetworkTypes(int);
-    method public android.app.DownloadManager.Request setAllowedOverMetered(boolean);
-    method public android.app.DownloadManager.Request setAllowedOverRoaming(boolean);
-    method public android.app.DownloadManager.Request setDescription(CharSequence);
-    method public android.app.DownloadManager.Request setDestinationInExternalFilesDir(android.content.Context, String, String);
-    method public android.app.DownloadManager.Request setDestinationInExternalPublicDir(String, String);
-    method public android.app.DownloadManager.Request setDestinationUri(android.net.Uri);
-    method public android.app.DownloadManager.Request setMimeType(String);
-    method public android.app.DownloadManager.Request setNotificationVisibility(int);
-    method public android.app.DownloadManager.Request setRequiresCharging(boolean);
-    method public android.app.DownloadManager.Request setRequiresDeviceIdle(boolean);
-    method @Deprecated public android.app.DownloadManager.Request setShowRunningNotification(boolean);
-    method public android.app.DownloadManager.Request setTitle(CharSequence);
-    method @Deprecated public android.app.DownloadManager.Request setVisibleInDownloadsUi(boolean);
-    field public static final int NETWORK_MOBILE = 1; // 0x1
-    field public static final int NETWORK_WIFI = 2; // 0x2
-    field public static final int VISIBILITY_HIDDEN = 2; // 0x2
-    field public static final int VISIBILITY_VISIBLE = 0; // 0x0
-    field public static final int VISIBILITY_VISIBLE_NOTIFY_COMPLETED = 1; // 0x1
-    field public static final int VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION = 3; // 0x3
-  }
-
-  @Deprecated public class ExpandableListActivity extends android.app.Activity implements android.widget.ExpandableListView.OnChildClickListener android.widget.ExpandableListView.OnGroupCollapseListener android.widget.ExpandableListView.OnGroupExpandListener android.view.View.OnCreateContextMenuListener {
-    ctor @Deprecated public ExpandableListActivity();
-    method @Deprecated public android.widget.ExpandableListAdapter getExpandableListAdapter();
-    method @Deprecated public android.widget.ExpandableListView getExpandableListView();
-    method @Deprecated public long getSelectedId();
-    method @Deprecated public long getSelectedPosition();
-    method @Deprecated public boolean onChildClick(android.widget.ExpandableListView, android.view.View, int, int, long);
-    method @Deprecated public void onGroupCollapse(int);
-    method @Deprecated public void onGroupExpand(int);
-    method @Deprecated public void setListAdapter(android.widget.ExpandableListAdapter);
-    method @Deprecated public boolean setSelectedChild(int, int, boolean);
-    method @Deprecated public void setSelectedGroup(int);
-  }
-
-  @Deprecated public class Fragment implements android.content.ComponentCallbacks2 android.view.View.OnCreateContextMenuListener {
-    ctor @Deprecated public Fragment();
-    method @Deprecated public void dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method @Deprecated public final boolean equals(Object);
-    method @Deprecated public final android.app.Activity getActivity();
-    method @Deprecated public boolean getAllowEnterTransitionOverlap();
-    method @Deprecated public boolean getAllowReturnTransitionOverlap();
-    method @Deprecated public final android.os.Bundle getArguments();
-    method @Deprecated public final android.app.FragmentManager getChildFragmentManager();
-    method @Deprecated public android.content.Context getContext();
-    method @Deprecated public android.transition.Transition getEnterTransition();
-    method @Deprecated public android.transition.Transition getExitTransition();
-    method @Deprecated public final android.app.FragmentManager getFragmentManager();
-    method @Deprecated @Nullable public final Object getHost();
-    method @Deprecated public final int getId();
-    method @Deprecated public final android.view.LayoutInflater getLayoutInflater();
-    method @Deprecated public android.app.LoaderManager getLoaderManager();
-    method @Deprecated public final android.app.Fragment getParentFragment();
-    method @Deprecated public android.transition.Transition getReenterTransition();
-    method @Deprecated public final android.content.res.Resources getResources();
-    method @Deprecated public final boolean getRetainInstance();
-    method @Deprecated public android.transition.Transition getReturnTransition();
-    method @Deprecated public android.transition.Transition getSharedElementEnterTransition();
-    method @Deprecated public android.transition.Transition getSharedElementReturnTransition();
-    method @Deprecated public final String getString(@StringRes int);
-    method @Deprecated public final String getString(@StringRes int, java.lang.Object...);
-    method @Deprecated public final String getTag();
-    method @Deprecated public final android.app.Fragment getTargetFragment();
-    method @Deprecated public final int getTargetRequestCode();
-    method @Deprecated public final CharSequence getText(@StringRes int);
-    method @Deprecated public boolean getUserVisibleHint();
-    method @Deprecated @Nullable public android.view.View getView();
-    method @Deprecated public final int hashCode();
-    method @Deprecated public static android.app.Fragment instantiate(android.content.Context, String);
-    method @Deprecated public static android.app.Fragment instantiate(android.content.Context, String, @Nullable android.os.Bundle);
-    method @Deprecated public final boolean isAdded();
-    method @Deprecated public final boolean isDetached();
-    method @Deprecated public final boolean isHidden();
-    method @Deprecated public final boolean isInLayout();
-    method @Deprecated public final boolean isRemoving();
-    method @Deprecated public final boolean isResumed();
-    method @Deprecated public final boolean isStateSaved();
-    method @Deprecated public final boolean isVisible();
-    method @Deprecated @CallSuper public void onActivityCreated(@Nullable android.os.Bundle);
-    method @Deprecated public void onActivityResult(int, int, android.content.Intent);
-    method @Deprecated @CallSuper public void onAttach(android.content.Context);
-    method @Deprecated @CallSuper public void onAttach(android.app.Activity);
-    method @Deprecated public void onAttachFragment(android.app.Fragment);
-    method @Deprecated @CallSuper public void onConfigurationChanged(android.content.res.Configuration);
-    method @Deprecated public boolean onContextItemSelected(android.view.MenuItem);
-    method @Deprecated @CallSuper public void onCreate(@Nullable android.os.Bundle);
-    method @Deprecated public android.animation.Animator onCreateAnimator(int, boolean, int);
-    method @Deprecated public void onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo);
-    method @Deprecated public void onCreateOptionsMenu(android.view.Menu, android.view.MenuInflater);
-    method @Deprecated @Nullable public android.view.View onCreateView(android.view.LayoutInflater, @Nullable android.view.ViewGroup, android.os.Bundle);
-    method @Deprecated @CallSuper public void onDestroy();
-    method @Deprecated public void onDestroyOptionsMenu();
-    method @Deprecated @CallSuper public void onDestroyView();
-    method @Deprecated @CallSuper public void onDetach();
-    method @Deprecated public android.view.LayoutInflater onGetLayoutInflater(android.os.Bundle);
-    method @Deprecated public void onHiddenChanged(boolean);
-    method @Deprecated @CallSuper public void onInflate(android.util.AttributeSet, android.os.Bundle);
-    method @Deprecated @CallSuper public void onInflate(android.content.Context, android.util.AttributeSet, android.os.Bundle);
-    method @Deprecated @CallSuper public void onInflate(android.app.Activity, android.util.AttributeSet, android.os.Bundle);
-    method @Deprecated @CallSuper public void onLowMemory();
-    method @Deprecated public void onMultiWindowModeChanged(boolean, android.content.res.Configuration);
-    method @Deprecated public void onMultiWindowModeChanged(boolean);
-    method @Deprecated public boolean onOptionsItemSelected(android.view.MenuItem);
-    method @Deprecated public void onOptionsMenuClosed(android.view.Menu);
-    method @Deprecated @CallSuper public void onPause();
-    method @Deprecated public void onPictureInPictureModeChanged(boolean, android.content.res.Configuration);
-    method @Deprecated public void onPictureInPictureModeChanged(boolean);
-    method @Deprecated public void onPrepareOptionsMenu(android.view.Menu);
-    method @Deprecated public void onRequestPermissionsResult(int, @NonNull String[], @NonNull int[]);
-    method @Deprecated @CallSuper public void onResume();
-    method @Deprecated public void onSaveInstanceState(android.os.Bundle);
-    method @Deprecated @CallSuper public void onStart();
-    method @Deprecated @CallSuper public void onStop();
-    method @Deprecated @CallSuper public void onTrimMemory(int);
-    method @Deprecated public void onViewCreated(android.view.View, @Nullable android.os.Bundle);
-    method @Deprecated @CallSuper public void onViewStateRestored(android.os.Bundle);
-    method @Deprecated public void postponeEnterTransition();
-    method @Deprecated public void registerForContextMenu(android.view.View);
-    method @Deprecated public final void requestPermissions(@NonNull String[], int);
-    method @Deprecated public void setAllowEnterTransitionOverlap(boolean);
-    method @Deprecated public void setAllowReturnTransitionOverlap(boolean);
-    method @Deprecated public void setArguments(android.os.Bundle);
-    method @Deprecated public void setEnterSharedElementCallback(android.app.SharedElementCallback);
-    method @Deprecated public void setEnterTransition(android.transition.Transition);
-    method @Deprecated public void setExitSharedElementCallback(android.app.SharedElementCallback);
-    method @Deprecated public void setExitTransition(android.transition.Transition);
-    method @Deprecated public void setHasOptionsMenu(boolean);
-    method @Deprecated public void setInitialSavedState(android.app.Fragment.SavedState);
-    method @Deprecated public void setMenuVisibility(boolean);
-    method @Deprecated public void setReenterTransition(android.transition.Transition);
-    method @Deprecated public void setRetainInstance(boolean);
-    method @Deprecated public void setReturnTransition(android.transition.Transition);
-    method @Deprecated public void setSharedElementEnterTransition(android.transition.Transition);
-    method @Deprecated public void setSharedElementReturnTransition(android.transition.Transition);
-    method @Deprecated public void setTargetFragment(android.app.Fragment, int);
-    method @Deprecated public void setUserVisibleHint(boolean);
-    method @Deprecated public boolean shouldShowRequestPermissionRationale(@NonNull String);
-    method @Deprecated public void startActivity(android.content.Intent);
-    method @Deprecated public void startActivity(android.content.Intent, android.os.Bundle);
-    method @Deprecated public void startActivityForResult(android.content.Intent, int);
-    method @Deprecated public void startActivityForResult(android.content.Intent, int, android.os.Bundle);
-    method @Deprecated public void startIntentSenderForResult(android.content.IntentSender, int, @Nullable android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
-    method @Deprecated public void startPostponedEnterTransition();
-    method @Deprecated public void unregisterForContextMenu(android.view.View);
-  }
-
-  @Deprecated public static class Fragment.InstantiationException extends android.util.AndroidRuntimeException {
-    ctor @Deprecated public Fragment.InstantiationException(String, Exception);
-  }
-
-  @Deprecated public static class Fragment.SavedState implements android.os.Parcelable {
-    method @Deprecated public int describeContents();
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated public static final android.os.Parcelable.ClassLoaderCreator<android.app.Fragment.SavedState> CREATOR;
-  }
-
-  @Deprecated public class FragmentBreadCrumbs extends android.view.ViewGroup implements android.app.FragmentManager.OnBackStackChangedListener {
-    ctor @Deprecated public FragmentBreadCrumbs(android.content.Context);
-    ctor @Deprecated public FragmentBreadCrumbs(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public FragmentBreadCrumbs(android.content.Context, android.util.AttributeSet, int);
-    method @Deprecated public void onBackStackChanged();
-    method @Deprecated public void setActivity(android.app.Activity);
-    method @Deprecated public void setMaxVisible(int);
-    method @Deprecated public void setOnBreadCrumbClickListener(android.app.FragmentBreadCrumbs.OnBreadCrumbClickListener);
-    method @Deprecated public void setParentTitle(CharSequence, CharSequence, android.view.View.OnClickListener);
-    method @Deprecated public void setTitle(CharSequence, CharSequence);
-  }
-
-  @Deprecated public static interface FragmentBreadCrumbs.OnBreadCrumbClickListener {
-    method @Deprecated public boolean onBreadCrumbClick(android.app.FragmentManager.BackStackEntry, int);
-  }
-
-  @Deprecated public abstract class FragmentContainer {
-    ctor @Deprecated public FragmentContainer();
-    method @Deprecated @Nullable public abstract <T extends android.view.View> T onFindViewById(@IdRes int);
-    method @Deprecated public abstract boolean onHasView();
-  }
-
-  @Deprecated public class FragmentController {
-    method @Deprecated public void attachHost(android.app.Fragment);
-    method @Deprecated public static final android.app.FragmentController createController(android.app.FragmentHostCallback<?>);
-    method @Deprecated public void dispatchActivityCreated();
-    method @Deprecated public void dispatchConfigurationChanged(android.content.res.Configuration);
-    method @Deprecated public boolean dispatchContextItemSelected(android.view.MenuItem);
-    method @Deprecated public void dispatchCreate();
-    method @Deprecated public boolean dispatchCreateOptionsMenu(android.view.Menu, android.view.MenuInflater);
-    method @Deprecated public void dispatchDestroy();
-    method @Deprecated public void dispatchDestroyView();
-    method @Deprecated public void dispatchLowMemory();
-    method @Deprecated public void dispatchMultiWindowModeChanged(boolean);
-    method @Deprecated public void dispatchMultiWindowModeChanged(boolean, android.content.res.Configuration);
-    method @Deprecated public boolean dispatchOptionsItemSelected(android.view.MenuItem);
-    method @Deprecated public void dispatchOptionsMenuClosed(android.view.Menu);
-    method @Deprecated public void dispatchPause();
-    method @Deprecated public void dispatchPictureInPictureModeChanged(boolean);
-    method @Deprecated public void dispatchPictureInPictureModeChanged(boolean, android.content.res.Configuration);
-    method @Deprecated public boolean dispatchPrepareOptionsMenu(android.view.Menu);
-    method @Deprecated public void dispatchResume();
-    method @Deprecated public void dispatchStart();
-    method @Deprecated public void dispatchStop();
-    method @Deprecated public void dispatchTrimMemory(int);
-    method @Deprecated public void doLoaderDestroy();
-    method @Deprecated public void doLoaderStart();
-    method @Deprecated public void doLoaderStop(boolean);
-    method @Deprecated public void dumpLoaders(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method @Deprecated public boolean execPendingActions();
-    method @Deprecated @Nullable public android.app.Fragment findFragmentByWho(String);
-    method @Deprecated public android.app.FragmentManager getFragmentManager();
-    method @Deprecated public android.app.LoaderManager getLoaderManager();
-    method @Deprecated public void noteStateNotSaved();
-    method @Deprecated public android.view.View onCreateView(android.view.View, String, android.content.Context, android.util.AttributeSet);
-    method @Deprecated public void reportLoaderStart();
-    method @Deprecated public void restoreAllState(android.os.Parcelable, java.util.List<android.app.Fragment>);
-    method @Deprecated public void restoreAllState(android.os.Parcelable, android.app.FragmentManagerNonConfig);
-    method @Deprecated public void restoreLoaderNonConfig(android.util.ArrayMap<java.lang.String,android.app.LoaderManager>);
-    method @Deprecated public android.util.ArrayMap<java.lang.String,android.app.LoaderManager> retainLoaderNonConfig();
-    method @Deprecated public android.app.FragmentManagerNonConfig retainNestedNonConfig();
-    method @Deprecated public java.util.List<android.app.Fragment> retainNonConfig();
-    method @Deprecated public android.os.Parcelable saveAllState();
-  }
-
-  @Deprecated public abstract class FragmentHostCallback<E> extends android.app.FragmentContainer {
-    ctor @Deprecated public FragmentHostCallback(android.content.Context, android.os.Handler, int);
-    method @Deprecated public void onAttachFragment(android.app.Fragment);
-    method @Deprecated public void onDump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method @Deprecated @Nullable public <T extends android.view.View> T onFindViewById(int);
-    method @Deprecated @Nullable public abstract E onGetHost();
-    method @Deprecated public android.view.LayoutInflater onGetLayoutInflater();
-    method @Deprecated public int onGetWindowAnimations();
-    method @Deprecated public boolean onHasView();
-    method @Deprecated public boolean onHasWindowAnimations();
-    method @Deprecated public void onInvalidateOptionsMenu();
-    method @Deprecated public void onRequestPermissionsFromFragment(@NonNull android.app.Fragment, @NonNull String[], int);
-    method @Deprecated public boolean onShouldSaveFragmentState(android.app.Fragment);
-    method @Deprecated public void onStartActivityFromFragment(android.app.Fragment, android.content.Intent, int, android.os.Bundle);
-    method @Deprecated public void onStartIntentSenderFromFragment(android.app.Fragment, android.content.IntentSender, int, @Nullable android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
-    method @Deprecated public boolean onUseFragmentManagerInflaterFactory();
-  }
-
-  @Deprecated public abstract class FragmentManager {
-    ctor @Deprecated public FragmentManager();
-    method @Deprecated public abstract void addOnBackStackChangedListener(android.app.FragmentManager.OnBackStackChangedListener);
-    method @Deprecated public abstract android.app.FragmentTransaction beginTransaction();
-    method @Deprecated public abstract void dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method @Deprecated public static void enableDebugLogging(boolean);
-    method @Deprecated public abstract boolean executePendingTransactions();
-    method @Deprecated public abstract android.app.Fragment findFragmentById(int);
-    method @Deprecated public abstract android.app.Fragment findFragmentByTag(String);
-    method @Deprecated public abstract android.app.FragmentManager.BackStackEntry getBackStackEntryAt(int);
-    method @Deprecated public abstract int getBackStackEntryCount();
-    method @Deprecated public abstract android.app.Fragment getFragment(android.os.Bundle, String);
-    method @Deprecated public abstract java.util.List<android.app.Fragment> getFragments();
-    method @Deprecated public abstract android.app.Fragment getPrimaryNavigationFragment();
-    method @Deprecated public void invalidateOptionsMenu();
-    method @Deprecated public abstract boolean isDestroyed();
-    method @Deprecated public abstract boolean isStateSaved();
-    method @Deprecated public abstract void popBackStack();
-    method @Deprecated public abstract void popBackStack(String, int);
-    method @Deprecated public abstract void popBackStack(int, int);
-    method @Deprecated public abstract boolean popBackStackImmediate();
-    method @Deprecated public abstract boolean popBackStackImmediate(String, int);
-    method @Deprecated public abstract boolean popBackStackImmediate(int, int);
-    method @Deprecated public abstract void putFragment(android.os.Bundle, String, android.app.Fragment);
-    method @Deprecated public abstract void registerFragmentLifecycleCallbacks(android.app.FragmentManager.FragmentLifecycleCallbacks, boolean);
-    method @Deprecated public abstract void removeOnBackStackChangedListener(android.app.FragmentManager.OnBackStackChangedListener);
-    method @Deprecated public abstract android.app.Fragment.SavedState saveFragmentInstanceState(android.app.Fragment);
-    method @Deprecated public abstract void unregisterFragmentLifecycleCallbacks(android.app.FragmentManager.FragmentLifecycleCallbacks);
-    field @Deprecated public static final int POP_BACK_STACK_INCLUSIVE = 1; // 0x1
-  }
-
-  @Deprecated public static interface FragmentManager.BackStackEntry {
-    method @Deprecated public CharSequence getBreadCrumbShortTitle();
-    method @Deprecated public int getBreadCrumbShortTitleRes();
-    method @Deprecated public CharSequence getBreadCrumbTitle();
-    method @Deprecated public int getBreadCrumbTitleRes();
-    method @Deprecated public int getId();
-    method @Deprecated public String getName();
-  }
-
-  @Deprecated public abstract static class FragmentManager.FragmentLifecycleCallbacks {
-    ctor @Deprecated public FragmentManager.FragmentLifecycleCallbacks();
-    method @Deprecated public void onFragmentActivityCreated(android.app.FragmentManager, android.app.Fragment, android.os.Bundle);
-    method @Deprecated public void onFragmentAttached(android.app.FragmentManager, android.app.Fragment, android.content.Context);
-    method @Deprecated public void onFragmentCreated(android.app.FragmentManager, android.app.Fragment, android.os.Bundle);
-    method @Deprecated public void onFragmentDestroyed(android.app.FragmentManager, android.app.Fragment);
-    method @Deprecated public void onFragmentDetached(android.app.FragmentManager, android.app.Fragment);
-    method @Deprecated public void onFragmentPaused(android.app.FragmentManager, android.app.Fragment);
-    method @Deprecated public void onFragmentPreAttached(android.app.FragmentManager, android.app.Fragment, android.content.Context);
-    method @Deprecated public void onFragmentPreCreated(android.app.FragmentManager, android.app.Fragment, android.os.Bundle);
-    method @Deprecated public void onFragmentResumed(android.app.FragmentManager, android.app.Fragment);
-    method @Deprecated public void onFragmentSaveInstanceState(android.app.FragmentManager, android.app.Fragment, android.os.Bundle);
-    method @Deprecated public void onFragmentStarted(android.app.FragmentManager, android.app.Fragment);
-    method @Deprecated public void onFragmentStopped(android.app.FragmentManager, android.app.Fragment);
-    method @Deprecated public void onFragmentViewCreated(android.app.FragmentManager, android.app.Fragment, android.view.View, android.os.Bundle);
-    method @Deprecated public void onFragmentViewDestroyed(android.app.FragmentManager, android.app.Fragment);
-  }
-
-  @Deprecated public static interface FragmentManager.OnBackStackChangedListener {
-    method @Deprecated public void onBackStackChanged();
-  }
-
-  @Deprecated public class FragmentManagerNonConfig {
-  }
-
-  @Deprecated public abstract class FragmentTransaction {
-    ctor @Deprecated public FragmentTransaction();
-    method @Deprecated public abstract android.app.FragmentTransaction add(android.app.Fragment, String);
-    method @Deprecated public abstract android.app.FragmentTransaction add(@IdRes int, android.app.Fragment);
-    method @Deprecated public abstract android.app.FragmentTransaction add(@IdRes int, android.app.Fragment, String);
-    method @Deprecated public abstract android.app.FragmentTransaction addSharedElement(android.view.View, String);
-    method @Deprecated public abstract android.app.FragmentTransaction addToBackStack(@Nullable String);
-    method @Deprecated public abstract android.app.FragmentTransaction attach(android.app.Fragment);
-    method @Deprecated public abstract int commit();
-    method @Deprecated public abstract int commitAllowingStateLoss();
-    method @Deprecated public abstract void commitNow();
-    method @Deprecated public abstract void commitNowAllowingStateLoss();
-    method @Deprecated public abstract android.app.FragmentTransaction detach(android.app.Fragment);
-    method @Deprecated public abstract android.app.FragmentTransaction disallowAddToBackStack();
-    method @Deprecated public abstract android.app.FragmentTransaction hide(android.app.Fragment);
-    method @Deprecated public abstract boolean isAddToBackStackAllowed();
-    method @Deprecated public abstract boolean isEmpty();
-    method @Deprecated public abstract android.app.FragmentTransaction remove(android.app.Fragment);
-    method @Deprecated public abstract android.app.FragmentTransaction replace(@IdRes int, android.app.Fragment);
-    method @Deprecated public abstract android.app.FragmentTransaction replace(@IdRes int, android.app.Fragment, String);
-    method @Deprecated public abstract android.app.FragmentTransaction runOnCommit(Runnable);
-    method @Deprecated public abstract android.app.FragmentTransaction setBreadCrumbShortTitle(@StringRes int);
-    method @Deprecated public abstract android.app.FragmentTransaction setBreadCrumbShortTitle(CharSequence);
-    method @Deprecated public abstract android.app.FragmentTransaction setBreadCrumbTitle(@StringRes int);
-    method @Deprecated public abstract android.app.FragmentTransaction setBreadCrumbTitle(CharSequence);
-    method @Deprecated public abstract android.app.FragmentTransaction setCustomAnimations(@AnimatorRes int, @AnimatorRes int);
-    method @Deprecated public abstract android.app.FragmentTransaction setCustomAnimations(@AnimatorRes int, @AnimatorRes int, @AnimatorRes int, @AnimatorRes int);
-    method @Deprecated public abstract android.app.FragmentTransaction setPrimaryNavigationFragment(android.app.Fragment);
-    method @Deprecated public abstract android.app.FragmentTransaction setReorderingAllowed(boolean);
-    method @Deprecated public abstract android.app.FragmentTransaction setTransition(int);
-    method @Deprecated public abstract android.app.FragmentTransaction setTransitionStyle(@StyleRes int);
-    method @Deprecated public abstract android.app.FragmentTransaction show(android.app.Fragment);
-    field @Deprecated public static final int TRANSIT_ENTER_MASK = 4096; // 0x1000
-    field @Deprecated public static final int TRANSIT_EXIT_MASK = 8192; // 0x2000
-    field @Deprecated public static final int TRANSIT_FRAGMENT_CLOSE = 8194; // 0x2002
-    field @Deprecated public static final int TRANSIT_FRAGMENT_FADE = 4099; // 0x1003
-    field @Deprecated public static final int TRANSIT_FRAGMENT_OPEN = 4097; // 0x1001
-    field @Deprecated public static final int TRANSIT_NONE = 0; // 0x0
-    field @Deprecated public static final int TRANSIT_UNSET = -1; // 0xffffffff
-  }
-
-  public class Instrumentation {
-    ctor public Instrumentation();
-    method public android.os.TestLooperManager acquireLooperManager(android.os.Looper);
-    method public void addMonitor(android.app.Instrumentation.ActivityMonitor);
-    method public android.app.Instrumentation.ActivityMonitor addMonitor(android.content.IntentFilter, android.app.Instrumentation.ActivityResult, boolean);
-    method public android.app.Instrumentation.ActivityMonitor addMonitor(String, android.app.Instrumentation.ActivityResult, boolean);
-    method public void addResults(android.os.Bundle);
-    method public void callActivityOnCreate(android.app.Activity, android.os.Bundle);
-    method public void callActivityOnCreate(android.app.Activity, android.os.Bundle, android.os.PersistableBundle);
-    method public void callActivityOnDestroy(android.app.Activity);
-    method public void callActivityOnNewIntent(android.app.Activity, android.content.Intent);
-    method public void callActivityOnPause(android.app.Activity);
-    method public void callActivityOnPictureInPictureRequested(@NonNull android.app.Activity);
-    method public void callActivityOnPostCreate(@NonNull android.app.Activity, @Nullable android.os.Bundle);
-    method public void callActivityOnPostCreate(@NonNull android.app.Activity, @Nullable android.os.Bundle, @Nullable android.os.PersistableBundle);
-    method public void callActivityOnRestart(android.app.Activity);
-    method public void callActivityOnRestoreInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle);
-    method public void callActivityOnRestoreInstanceState(@NonNull android.app.Activity, @Nullable android.os.Bundle, @Nullable android.os.PersistableBundle);
-    method public void callActivityOnResume(android.app.Activity);
-    method public void callActivityOnSaveInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle);
-    method public void callActivityOnSaveInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle, @NonNull android.os.PersistableBundle);
-    method public void callActivityOnStart(android.app.Activity);
-    method public void callActivityOnStop(android.app.Activity);
-    method public void callActivityOnUserLeaving(android.app.Activity);
-    method public void callApplicationOnCreate(android.app.Application);
-    method public boolean checkMonitorHit(android.app.Instrumentation.ActivityMonitor, int);
-    method public void endPerformanceSnapshot();
-    method public void finish(int, android.os.Bundle);
-    method public android.os.Bundle getAllocCounts();
-    method public android.os.Bundle getBinderCounts();
-    method public android.content.ComponentName getComponentName();
-    method public android.content.Context getContext();
-    method public String getProcessName();
-    method public android.content.Context getTargetContext();
-    method public android.app.UiAutomation getUiAutomation();
-    method public android.app.UiAutomation getUiAutomation(int);
-    method public boolean invokeContextMenuAction(android.app.Activity, int, int);
-    method public boolean invokeMenuActionSync(android.app.Activity, int, int);
-    method public boolean isProfiling();
-    method public android.app.Activity newActivity(Class<?>, android.content.Context, android.os.IBinder, android.app.Application, android.content.Intent, android.content.pm.ActivityInfo, CharSequence, android.app.Activity, String, Object) throws java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public android.app.Activity newActivity(ClassLoader, String, android.content.Intent) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public android.app.Application newApplication(ClassLoader, String, android.content.Context) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public static android.app.Application newApplication(Class<?>, android.content.Context) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public void onCreate(android.os.Bundle);
-    method public void onDestroy();
-    method public boolean onException(Object, Throwable);
-    method public void onStart();
-    method public void removeMonitor(android.app.Instrumentation.ActivityMonitor);
-    method public void runOnMainSync(Runnable);
-    method public void sendCharacterSync(int);
-    method public void sendKeyDownUpSync(int);
-    method public void sendKeySync(android.view.KeyEvent);
-    method public void sendPointerSync(android.view.MotionEvent);
-    method public void sendStatus(int, android.os.Bundle);
-    method public void sendStringSync(String);
-    method public void sendTrackballEventSync(android.view.MotionEvent);
-    method public void setAutomaticPerformanceSnapshots();
-    method public void setInTouchMode(boolean);
-    method public void start();
-    method public android.app.Activity startActivitySync(android.content.Intent);
-    method @NonNull public android.app.Activity startActivitySync(@NonNull android.content.Intent, @Nullable android.os.Bundle);
-    method @Deprecated public void startAllocCounting();
-    method public void startPerformanceSnapshot();
-    method public void startProfiling();
-    method @Deprecated public void stopAllocCounting();
-    method public void stopProfiling();
-    method public void waitForIdle(Runnable);
-    method public void waitForIdleSync();
-    method public android.app.Activity waitForMonitor(android.app.Instrumentation.ActivityMonitor);
-    method public android.app.Activity waitForMonitorWithTimeout(android.app.Instrumentation.ActivityMonitor, long);
-    field public static final String REPORT_KEY_IDENTIFIER = "id";
-    field public static final String REPORT_KEY_STREAMRESULT = "stream";
-  }
-
-  public static class Instrumentation.ActivityMonitor {
-    ctor public Instrumentation.ActivityMonitor(android.content.IntentFilter, android.app.Instrumentation.ActivityResult, boolean);
-    ctor public Instrumentation.ActivityMonitor(String, android.app.Instrumentation.ActivityResult, boolean);
-    ctor public Instrumentation.ActivityMonitor();
-    method public final android.content.IntentFilter getFilter();
-    method public final int getHits();
-    method public final android.app.Activity getLastActivity();
-    method public final android.app.Instrumentation.ActivityResult getResult();
-    method public final boolean isBlocking();
-    method public android.app.Instrumentation.ActivityResult onStartActivity(android.content.Intent);
-    method public final android.app.Activity waitForActivity();
-    method public final android.app.Activity waitForActivityWithTimeout(long);
-  }
-
-  public static final class Instrumentation.ActivityResult {
-    ctor public Instrumentation.ActivityResult(int, android.content.Intent);
-    method public int getResultCode();
-    method public android.content.Intent getResultData();
-  }
-
-  @Deprecated public abstract class IntentService extends android.app.Service {
-    ctor @Deprecated public IntentService(String);
-    method @Deprecated @Nullable public android.os.IBinder onBind(android.content.Intent);
-    method @Deprecated @WorkerThread protected abstract void onHandleIntent(@Nullable android.content.Intent);
-    method @Deprecated public void onStart(@Nullable android.content.Intent, int);
-    method @Deprecated public void setIntentRedelivery(boolean);
-  }
-
-  public class KeyguardManager {
-    method @Deprecated public android.content.Intent createConfirmDeviceCredentialIntent(CharSequence, CharSequence);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.DISABLE_KEYGUARD) public void exitKeyguardSecurely(android.app.KeyguardManager.OnKeyguardExitResult);
-    method @Deprecated public boolean inKeyguardRestrictedInputMode();
-    method public boolean isDeviceLocked();
-    method public boolean isDeviceSecure();
-    method public boolean isKeyguardLocked();
-    method public boolean isKeyguardSecure();
-    method @Deprecated public android.app.KeyguardManager.KeyguardLock newKeyguardLock(String);
-    method public void requestDismissKeyguard(@NonNull android.app.Activity, @Nullable android.app.KeyguardManager.KeyguardDismissCallback);
-  }
-
-  public abstract static class KeyguardManager.KeyguardDismissCallback {
-    ctor public KeyguardManager.KeyguardDismissCallback();
-    method public void onDismissCancelled();
-    method public void onDismissError();
-    method public void onDismissSucceeded();
-  }
-
-  @Deprecated public class KeyguardManager.KeyguardLock {
-    method @Deprecated @RequiresPermission(android.Manifest.permission.DISABLE_KEYGUARD) public void disableKeyguard();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.DISABLE_KEYGUARD) public void reenableKeyguard();
-  }
-
-  @Deprecated public static interface KeyguardManager.OnKeyguardExitResult {
-    method @Deprecated public void onKeyguardExitResult(boolean);
-  }
-
-  @Deprecated public abstract class LauncherActivity extends android.app.ListActivity {
-    ctor @Deprecated public LauncherActivity();
-    method @Deprecated protected android.content.Intent getTargetIntent();
-    method @Deprecated protected android.content.Intent intentForPosition(int);
-    method @Deprecated protected android.app.LauncherActivity.ListItem itemForPosition(int);
-    method @Deprecated public java.util.List<android.app.LauncherActivity.ListItem> makeListItems();
-    method @Deprecated protected java.util.List<android.content.pm.ResolveInfo> onQueryPackageManager(android.content.Intent);
-    method @Deprecated protected void onSetContentView();
-  }
-
-  @Deprecated public class LauncherActivity.IconResizer {
-    ctor @Deprecated public LauncherActivity.IconResizer();
-    method @Deprecated public android.graphics.drawable.Drawable createIconThumbnail(android.graphics.drawable.Drawable);
-  }
-
-  @Deprecated public static class LauncherActivity.ListItem {
-    ctor @Deprecated public LauncherActivity.ListItem();
-    field @Deprecated public String className;
-    field @Deprecated public android.os.Bundle extras;
-    field @Deprecated public android.graphics.drawable.Drawable icon;
-    field @Deprecated public CharSequence label;
-    field @Deprecated public String packageName;
-    field @Deprecated public android.content.pm.ResolveInfo resolveInfo;
-  }
-
-  @Deprecated public class ListActivity extends android.app.Activity {
-    ctor @Deprecated public ListActivity();
-    method @Deprecated public android.widget.ListAdapter getListAdapter();
-    method @Deprecated public android.widget.ListView getListView();
-    method @Deprecated public long getSelectedItemId();
-    method @Deprecated public int getSelectedItemPosition();
-    method @Deprecated protected void onListItemClick(android.widget.ListView, android.view.View, int, long);
-    method @Deprecated public void setListAdapter(android.widget.ListAdapter);
-    method @Deprecated public void setSelection(int);
-  }
-
-  @Deprecated public class ListFragment extends android.app.Fragment {
-    ctor @Deprecated public ListFragment();
-    method @Deprecated public android.widget.ListAdapter getListAdapter();
-    method @Deprecated public android.widget.ListView getListView();
-    method @Deprecated public long getSelectedItemId();
-    method @Deprecated public int getSelectedItemPosition();
-    method @Deprecated public void onListItemClick(android.widget.ListView, android.view.View, int, long);
-    method @Deprecated public void setEmptyText(CharSequence);
-    method @Deprecated public void setListAdapter(android.widget.ListAdapter);
-    method @Deprecated public void setListShown(boolean);
-    method @Deprecated public void setListShownNoAnimation(boolean);
-    method @Deprecated public void setSelection(int);
-  }
-
-  @Deprecated public abstract class LoaderManager {
-    ctor @Deprecated public LoaderManager();
-    method @Deprecated public abstract void destroyLoader(int);
-    method @Deprecated public abstract void dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method @Deprecated public static void enableDebugLogging(boolean);
-    method @Deprecated public abstract <D> android.content.Loader<D> getLoader(int);
-    method @Deprecated public abstract <D> android.content.Loader<D> initLoader(int, android.os.Bundle, android.app.LoaderManager.LoaderCallbacks<D>);
-    method @Deprecated public abstract <D> android.content.Loader<D> restartLoader(int, android.os.Bundle, android.app.LoaderManager.LoaderCallbacks<D>);
-  }
-
-  @Deprecated public static interface LoaderManager.LoaderCallbacks<D> {
-    method @Deprecated public android.content.Loader<D> onCreateLoader(int, android.os.Bundle);
-    method @Deprecated public void onLoadFinished(android.content.Loader<D>, D);
-    method @Deprecated public void onLoaderReset(android.content.Loader<D>);
-  }
-
-  @Deprecated public class LocalActivityManager {
-    ctor @Deprecated public LocalActivityManager(android.app.Activity, boolean);
-    method @Deprecated public android.view.Window destroyActivity(String, boolean);
-    method @Deprecated public void dispatchCreate(android.os.Bundle);
-    method @Deprecated public void dispatchDestroy(boolean);
-    method @Deprecated public void dispatchPause(boolean);
-    method @Deprecated public void dispatchResume();
-    method @Deprecated public void dispatchStop();
-    method @Deprecated public android.app.Activity getActivity(String);
-    method @Deprecated public android.app.Activity getCurrentActivity();
-    method @Deprecated public String getCurrentId();
-    method @Deprecated public void removeAllActivities();
-    method @Deprecated public android.os.Bundle saveInstanceState();
-    method @Deprecated public android.view.Window startActivity(String, android.content.Intent);
-  }
-
-  public class MediaRouteActionProvider extends android.view.ActionProvider {
-    ctor public MediaRouteActionProvider(android.content.Context);
-    method public android.view.View onCreateActionView();
-    method public void setExtendedSettingsClickListener(android.view.View.OnClickListener);
-    method public void setRouteTypes(int);
-  }
-
-  public class MediaRouteButton extends android.view.View {
-    ctor public MediaRouteButton(android.content.Context);
-    ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet);
-    ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet, int);
-    ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet, int, int);
-    method public int getRouteTypes();
-    method public void onAttachedToWindow();
-    method public void onDetachedFromWindow();
-    method public void setExtendedSettingsClickListener(android.view.View.OnClickListener);
-    method public void setRouteTypes(int);
-    method public void showDialog();
-  }
-
-  public class NativeActivity extends android.app.Activity implements android.view.InputQueue.Callback android.view.SurfaceHolder.Callback2 android.view.ViewTreeObserver.OnGlobalLayoutListener {
-    ctor public NativeActivity();
-    method public void onGlobalLayout();
-    method public void onInputQueueCreated(android.view.InputQueue);
-    method public void onInputQueueDestroyed(android.view.InputQueue);
-    method public void surfaceChanged(android.view.SurfaceHolder, int, int, int);
-    method public void surfaceCreated(android.view.SurfaceHolder);
-    method public void surfaceDestroyed(android.view.SurfaceHolder);
-    method public void surfaceRedrawNeeded(android.view.SurfaceHolder);
-    field public static final String META_DATA_FUNC_NAME = "android.app.func_name";
-    field public static final String META_DATA_LIB_NAME = "android.app.lib_name";
-  }
-
-  public class Notification implements android.os.Parcelable {
-    ctor public Notification();
-    ctor @Deprecated public Notification(int, CharSequence, long);
-    ctor public Notification(android.os.Parcel);
-    method public android.app.Notification clone();
-    method public int describeContents();
-    method @Nullable public android.util.Pair<android.app.RemoteInput,android.app.Notification.Action> findRemoteInputActionPair(boolean);
-    method public boolean getAllowSystemGeneratedContextualActions();
-    method public int getBadgeIconType();
-    method @Nullable public android.app.Notification.BubbleMetadata getBubbleMetadata();
-    method public String getChannelId();
-    method @NonNull public java.util.List<android.app.Notification.Action> getContextualActions();
-    method public String getGroup();
-    method public int getGroupAlertBehavior();
-    method public android.graphics.drawable.Icon getLargeIcon();
-    method @Nullable public android.content.LocusId getLocusId();
-    method public CharSequence getSettingsText();
-    method public String getShortcutId();
-    method public android.graphics.drawable.Icon getSmallIcon();
-    method public String getSortKey();
-    method public long getTimeoutAfter();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.media.AudioAttributes AUDIO_ATTRIBUTES_DEFAULT;
-    field public static final int BADGE_ICON_LARGE = 2; // 0x2
-    field public static final int BADGE_ICON_NONE = 0; // 0x0
-    field public static final int BADGE_ICON_SMALL = 1; // 0x1
-    field public static final String CATEGORY_ALARM = "alarm";
-    field public static final String CATEGORY_CALL = "call";
-    field public static final String CATEGORY_EMAIL = "email";
-    field public static final String CATEGORY_ERROR = "err";
-    field public static final String CATEGORY_EVENT = "event";
-    field public static final String CATEGORY_MESSAGE = "msg";
-    field public static final String CATEGORY_NAVIGATION = "navigation";
-    field public static final String CATEGORY_PROGRESS = "progress";
-    field public static final String CATEGORY_PROMO = "promo";
-    field public static final String CATEGORY_RECOMMENDATION = "recommendation";
-    field public static final String CATEGORY_REMINDER = "reminder";
-    field public static final String CATEGORY_SERVICE = "service";
-    field public static final String CATEGORY_SOCIAL = "social";
-    field public static final String CATEGORY_STATUS = "status";
-    field public static final String CATEGORY_SYSTEM = "sys";
-    field public static final String CATEGORY_TRANSPORT = "transport";
-    field @ColorInt public static final int COLOR_DEFAULT = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.Notification> CREATOR;
-    field public static final int DEFAULT_ALL = -1; // 0xffffffff
-    field public static final int DEFAULT_LIGHTS = 4; // 0x4
-    field public static final int DEFAULT_SOUND = 1; // 0x1
-    field public static final int DEFAULT_VIBRATE = 2; // 0x2
-    field public static final String EXTRA_AUDIO_CONTENTS_URI = "android.audioContents";
-    field public static final String EXTRA_BACKGROUND_IMAGE_URI = "android.backgroundImageUri";
-    field public static final String EXTRA_BIG_TEXT = "android.bigText";
-    field public static final String EXTRA_CHANNEL_GROUP_ID = "android.intent.extra.CHANNEL_GROUP_ID";
-    field public static final String EXTRA_CHANNEL_ID = "android.intent.extra.CHANNEL_ID";
-    field public static final String EXTRA_CHRONOMETER_COUNT_DOWN = "android.chronometerCountDown";
-    field public static final String EXTRA_COLORIZED = "android.colorized";
-    field public static final String EXTRA_COMPACT_ACTIONS = "android.compactActions";
-    field public static final String EXTRA_CONVERSATION_TITLE = "android.conversationTitle";
-    field public static final String EXTRA_HISTORIC_MESSAGES = "android.messages.historic";
-    field public static final String EXTRA_INFO_TEXT = "android.infoText";
-    field public static final String EXTRA_IS_GROUP_CONVERSATION = "android.isGroupConversation";
-    field @Deprecated public static final String EXTRA_LARGE_ICON = "android.largeIcon";
-    field public static final String EXTRA_LARGE_ICON_BIG = "android.largeIcon.big";
-    field public static final String EXTRA_MEDIA_SESSION = "android.mediaSession";
-    field public static final String EXTRA_MESSAGES = "android.messages";
-    field public static final String EXTRA_MESSAGING_PERSON = "android.messagingUser";
-    field public static final String EXTRA_NOTIFICATION_ID = "android.intent.extra.NOTIFICATION_ID";
-    field public static final String EXTRA_NOTIFICATION_TAG = "android.intent.extra.NOTIFICATION_TAG";
-    field @Deprecated public static final String EXTRA_PEOPLE = "android.people";
-    field public static final String EXTRA_PEOPLE_LIST = "android.people.list";
-    field public static final String EXTRA_PICTURE = "android.picture";
-    field public static final String EXTRA_PROGRESS = "android.progress";
-    field public static final String EXTRA_PROGRESS_INDETERMINATE = "android.progressIndeterminate";
-    field public static final String EXTRA_PROGRESS_MAX = "android.progressMax";
-    field public static final String EXTRA_REMOTE_INPUT_DRAFT = "android.remoteInputDraft";
-    field public static final String EXTRA_REMOTE_INPUT_HISTORY = "android.remoteInputHistory";
-    field @Deprecated public static final String EXTRA_SELF_DISPLAY_NAME = "android.selfDisplayName";
-    field public static final String EXTRA_SHOW_CHRONOMETER = "android.showChronometer";
-    field public static final String EXTRA_SHOW_WHEN = "android.showWhen";
-    field @Deprecated public static final String EXTRA_SMALL_ICON = "android.icon";
-    field public static final String EXTRA_SUB_TEXT = "android.subText";
-    field public static final String EXTRA_SUMMARY_TEXT = "android.summaryText";
-    field public static final String EXTRA_TEMPLATE = "android.template";
-    field public static final String EXTRA_TEXT = "android.text";
-    field public static final String EXTRA_TEXT_LINES = "android.textLines";
-    field public static final String EXTRA_TITLE = "android.title";
-    field public static final String EXTRA_TITLE_BIG = "android.title.big";
-    field public static final int FLAG_AUTO_CANCEL = 16; // 0x10
-    field public static final int FLAG_BUBBLE = 4096; // 0x1000
-    field public static final int FLAG_FOREGROUND_SERVICE = 64; // 0x40
-    field public static final int FLAG_GROUP_SUMMARY = 512; // 0x200
-    field @Deprecated public static final int FLAG_HIGH_PRIORITY = 128; // 0x80
-    field public static final int FLAG_INSISTENT = 4; // 0x4
-    field public static final int FLAG_LOCAL_ONLY = 256; // 0x100
-    field public static final int FLAG_NO_CLEAR = 32; // 0x20
-    field public static final int FLAG_ONGOING_EVENT = 2; // 0x2
-    field public static final int FLAG_ONLY_ALERT_ONCE = 8; // 0x8
-    field @Deprecated public static final int FLAG_SHOW_LIGHTS = 1; // 0x1
-    field public static final int GROUP_ALERT_ALL = 0; // 0x0
-    field public static final int GROUP_ALERT_CHILDREN = 2; // 0x2
-    field public static final int GROUP_ALERT_SUMMARY = 1; // 0x1
-    field public static final String INTENT_CATEGORY_NOTIFICATION_PREFERENCES = "android.intent.category.NOTIFICATION_PREFERENCES";
-    field @Deprecated public static final int PRIORITY_DEFAULT = 0; // 0x0
-    field @Deprecated public static final int PRIORITY_HIGH = 1; // 0x1
-    field @Deprecated public static final int PRIORITY_LOW = -1; // 0xffffffff
-    field @Deprecated public static final int PRIORITY_MAX = 2; // 0x2
-    field @Deprecated public static final int PRIORITY_MIN = -2; // 0xfffffffe
-    field @Deprecated public static final int STREAM_DEFAULT = -1; // 0xffffffff
-    field public static final int VISIBILITY_PRIVATE = 0; // 0x0
-    field public static final int VISIBILITY_PUBLIC = 1; // 0x1
-    field public static final int VISIBILITY_SECRET = -1; // 0xffffffff
-    field public android.app.Notification.Action[] actions;
-    field @Deprecated public android.media.AudioAttributes audioAttributes;
-    field @Deprecated public int audioStreamType;
-    field @Deprecated public android.widget.RemoteViews bigContentView;
-    field public String category;
-    field @ColorInt public int color;
-    field public android.app.PendingIntent contentIntent;
-    field @Deprecated public android.widget.RemoteViews contentView;
-    field @Deprecated public int defaults;
-    field public android.app.PendingIntent deleteIntent;
-    field public android.os.Bundle extras;
-    field public int flags;
-    field public android.app.PendingIntent fullScreenIntent;
-    field @Deprecated public android.widget.RemoteViews headsUpContentView;
-    field @Deprecated @DrawableRes public int icon;
-    field public int iconLevel;
-    field @Deprecated public android.graphics.Bitmap largeIcon;
-    field @Deprecated @ColorInt public int ledARGB;
-    field @Deprecated public int ledOffMS;
-    field @Deprecated public int ledOnMS;
-    field public int number;
-    field @Deprecated public int priority;
-    field public android.app.Notification publicVersion;
-    field @Deprecated public android.net.Uri sound;
-    field public CharSequence tickerText;
-    field @Deprecated public android.widget.RemoteViews tickerView;
-    field @Deprecated public long[] vibrate;
-    field public int visibility;
-    field public long when;
-  }
-
-  public static class Notification.Action implements android.os.Parcelable {
-    ctor @Deprecated public Notification.Action(int, CharSequence, android.app.PendingIntent);
-    method public android.app.Notification.Action clone();
-    method public int describeContents();
-    method public boolean getAllowGeneratedReplies();
-    method public android.app.RemoteInput[] getDataOnlyRemoteInputs();
-    method public android.os.Bundle getExtras();
-    method public android.graphics.drawable.Icon getIcon();
-    method public android.app.RemoteInput[] getRemoteInputs();
-    method public int getSemanticAction();
-    method public boolean isContextual();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.Notification.Action> CREATOR;
-    field public static final int SEMANTIC_ACTION_ARCHIVE = 5; // 0x5
-    field public static final int SEMANTIC_ACTION_CALL = 10; // 0xa
-    field public static final int SEMANTIC_ACTION_DELETE = 4; // 0x4
-    field public static final int SEMANTIC_ACTION_MARK_AS_READ = 2; // 0x2
-    field public static final int SEMANTIC_ACTION_MARK_AS_UNREAD = 3; // 0x3
-    field public static final int SEMANTIC_ACTION_MUTE = 6; // 0x6
-    field public static final int SEMANTIC_ACTION_NONE = 0; // 0x0
-    field public static final int SEMANTIC_ACTION_REPLY = 1; // 0x1
-    field public static final int SEMANTIC_ACTION_THUMBS_DOWN = 9; // 0x9
-    field public static final int SEMANTIC_ACTION_THUMBS_UP = 8; // 0x8
-    field public static final int SEMANTIC_ACTION_UNMUTE = 7; // 0x7
-    field public android.app.PendingIntent actionIntent;
-    field @Deprecated public int icon;
-    field public CharSequence title;
-  }
-
-  public static final class Notification.Action.Builder {
-    ctor @Deprecated public Notification.Action.Builder(int, CharSequence, android.app.PendingIntent);
-    ctor public Notification.Action.Builder(android.graphics.drawable.Icon, CharSequence, android.app.PendingIntent);
-    ctor public Notification.Action.Builder(android.app.Notification.Action);
-    method @NonNull public android.app.Notification.Action.Builder addExtras(android.os.Bundle);
-    method @NonNull public android.app.Notification.Action.Builder addRemoteInput(android.app.RemoteInput);
-    method @NonNull public android.app.Notification.Action build();
-    method @NonNull public android.app.Notification.Action.Builder extend(android.app.Notification.Action.Extender);
-    method @NonNull public android.os.Bundle getExtras();
-    method @NonNull public android.app.Notification.Action.Builder setAllowGeneratedReplies(boolean);
-    method @NonNull public android.app.Notification.Action.Builder setContextual(boolean);
-    method @NonNull public android.app.Notification.Action.Builder setSemanticAction(int);
-  }
-
-  public static interface Notification.Action.Extender {
-    method public android.app.Notification.Action.Builder extend(android.app.Notification.Action.Builder);
-  }
-
-  public static final class Notification.Action.WearableExtender implements android.app.Notification.Action.Extender {
-    ctor public Notification.Action.WearableExtender();
-    ctor public Notification.Action.WearableExtender(android.app.Notification.Action);
-    method public android.app.Notification.Action.WearableExtender clone();
-    method public android.app.Notification.Action.Builder extend(android.app.Notification.Action.Builder);
-    method @Deprecated public CharSequence getCancelLabel();
-    method @Deprecated public CharSequence getConfirmLabel();
-    method public boolean getHintDisplayActionInline();
-    method public boolean getHintLaunchesActivity();
-    method @Deprecated public CharSequence getInProgressLabel();
-    method public boolean isAvailableOffline();
-    method public android.app.Notification.Action.WearableExtender setAvailableOffline(boolean);
-    method @Deprecated public android.app.Notification.Action.WearableExtender setCancelLabel(CharSequence);
-    method @Deprecated public android.app.Notification.Action.WearableExtender setConfirmLabel(CharSequence);
-    method public android.app.Notification.Action.WearableExtender setHintDisplayActionInline(boolean);
-    method public android.app.Notification.Action.WearableExtender setHintLaunchesActivity(boolean);
-    method @Deprecated public android.app.Notification.Action.WearableExtender setInProgressLabel(CharSequence);
-  }
-
-  public static class Notification.BigPictureStyle extends android.app.Notification.Style {
-    ctor public Notification.BigPictureStyle();
-    ctor @Deprecated public Notification.BigPictureStyle(android.app.Notification.Builder);
-    method public android.app.Notification.BigPictureStyle bigLargeIcon(android.graphics.Bitmap);
-    method public android.app.Notification.BigPictureStyle bigLargeIcon(android.graphics.drawable.Icon);
-    method public android.app.Notification.BigPictureStyle bigPicture(android.graphics.Bitmap);
-    method public android.app.Notification.BigPictureStyle setBigContentTitle(CharSequence);
-    method public android.app.Notification.BigPictureStyle setSummaryText(CharSequence);
-  }
-
-  public static class Notification.BigTextStyle extends android.app.Notification.Style {
-    ctor public Notification.BigTextStyle();
-    ctor @Deprecated public Notification.BigTextStyle(android.app.Notification.Builder);
-    method public android.app.Notification.BigTextStyle bigText(CharSequence);
-    method public android.app.Notification.BigTextStyle setBigContentTitle(CharSequence);
-    method public android.app.Notification.BigTextStyle setSummaryText(CharSequence);
-  }
-
-  public static final class Notification.BubbleMetadata implements android.os.Parcelable {
-    method public int describeContents();
-    method public boolean getAutoExpandBubble();
-    method @Nullable public android.app.PendingIntent getDeleteIntent();
-    method @Dimension(unit=android.annotation.Dimension.DP) public int getDesiredHeight();
-    method @DimenRes public int getDesiredHeightResId();
-    method @Nullable public android.graphics.drawable.Icon getIcon();
-    method @Nullable public android.app.PendingIntent getIntent();
-    method @Nullable public String getShortcutId();
-    method public boolean isNotificationSuppressed();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.Notification.BubbleMetadata> CREATOR;
-  }
-
-  public static final class Notification.BubbleMetadata.Builder {
-    ctor @Deprecated public Notification.BubbleMetadata.Builder();
-    ctor public Notification.BubbleMetadata.Builder(@NonNull String);
-    ctor public Notification.BubbleMetadata.Builder(@NonNull android.app.PendingIntent, @NonNull android.graphics.drawable.Icon);
-    method @NonNull public android.app.Notification.BubbleMetadata build();
-    method @NonNull public android.app.Notification.BubbleMetadata.Builder setAutoExpandBubble(boolean);
-    method @NonNull public android.app.Notification.BubbleMetadata.Builder setDeleteIntent(@Nullable android.app.PendingIntent);
-    method @NonNull public android.app.Notification.BubbleMetadata.Builder setDesiredHeight(@Dimension(unit=android.annotation.Dimension.DP) int);
-    method @NonNull public android.app.Notification.BubbleMetadata.Builder setDesiredHeightResId(@DimenRes int);
-    method @NonNull public android.app.Notification.BubbleMetadata.Builder setIcon(@NonNull android.graphics.drawable.Icon);
-    method @NonNull public android.app.Notification.BubbleMetadata.Builder setIntent(@NonNull android.app.PendingIntent);
-    method @NonNull public android.app.Notification.BubbleMetadata.Builder setSuppressNotification(boolean);
-  }
-
-  public static class Notification.Builder {
-    ctor public Notification.Builder(android.content.Context, String);
-    ctor @Deprecated public Notification.Builder(android.content.Context);
-    method @Deprecated public android.app.Notification.Builder addAction(int, CharSequence, android.app.PendingIntent);
-    method @NonNull public android.app.Notification.Builder addAction(android.app.Notification.Action);
-    method @NonNull public android.app.Notification.Builder addExtras(android.os.Bundle);
-    method @Deprecated public android.app.Notification.Builder addPerson(String);
-    method @NonNull public android.app.Notification.Builder addPerson(android.app.Person);
-    method @NonNull public android.app.Notification build();
-    method public android.widget.RemoteViews createBigContentView();
-    method public android.widget.RemoteViews createContentView();
-    method public android.widget.RemoteViews createHeadsUpContentView();
-    method @NonNull public android.app.Notification.Builder extend(android.app.Notification.Extender);
-    method public android.os.Bundle getExtras();
-    method @Deprecated public android.app.Notification getNotification();
-    method public android.app.Notification.Style getStyle();
-    method @NonNull public static android.app.Notification.Builder recoverBuilder(android.content.Context, android.app.Notification);
-    method @NonNull public android.app.Notification.Builder setActions(android.app.Notification.Action...);
-    method @NonNull public android.app.Notification.Builder setAllowSystemGeneratedContextualActions(boolean);
-    method @NonNull public android.app.Notification.Builder setAutoCancel(boolean);
-    method @NonNull public android.app.Notification.Builder setBadgeIconType(int);
-    method @NonNull public android.app.Notification.Builder setBubbleMetadata(@Nullable android.app.Notification.BubbleMetadata);
-    method @NonNull public android.app.Notification.Builder setCategory(String);
-    method @NonNull public android.app.Notification.Builder setChannelId(String);
-    method @NonNull public android.app.Notification.Builder setChronometerCountDown(boolean);
-    method @NonNull public android.app.Notification.Builder setColor(@ColorInt int);
-    method @NonNull public android.app.Notification.Builder setColorized(boolean);
-    method @Deprecated public android.app.Notification.Builder setContent(android.widget.RemoteViews);
-    method @Deprecated public android.app.Notification.Builder setContentInfo(CharSequence);
-    method @NonNull public android.app.Notification.Builder setContentIntent(android.app.PendingIntent);
-    method @NonNull public android.app.Notification.Builder setContentText(CharSequence);
-    method @NonNull public android.app.Notification.Builder setContentTitle(CharSequence);
-    method @NonNull public android.app.Notification.Builder setCustomBigContentView(android.widget.RemoteViews);
-    method @NonNull public android.app.Notification.Builder setCustomContentView(android.widget.RemoteViews);
-    method @NonNull public android.app.Notification.Builder setCustomHeadsUpContentView(android.widget.RemoteViews);
-    method @Deprecated public android.app.Notification.Builder setDefaults(int);
-    method @NonNull public android.app.Notification.Builder setDeleteIntent(android.app.PendingIntent);
-    method @NonNull public android.app.Notification.Builder setExtras(android.os.Bundle);
-    method @NonNull public android.app.Notification.Builder setFlag(int, boolean);
-    method @NonNull public android.app.Notification.Builder setFullScreenIntent(android.app.PendingIntent, boolean);
-    method @NonNull public android.app.Notification.Builder setGroup(String);
-    method @NonNull public android.app.Notification.Builder setGroupAlertBehavior(int);
-    method @NonNull public android.app.Notification.Builder setGroupSummary(boolean);
-    method @NonNull public android.app.Notification.Builder setLargeIcon(android.graphics.Bitmap);
-    method @NonNull public android.app.Notification.Builder setLargeIcon(android.graphics.drawable.Icon);
-    method @Deprecated public android.app.Notification.Builder setLights(@ColorInt int, int, int);
-    method @NonNull public android.app.Notification.Builder setLocalOnly(boolean);
-    method @NonNull public android.app.Notification.Builder setLocusId(@Nullable android.content.LocusId);
-    method @NonNull public android.app.Notification.Builder setNumber(int);
-    method @NonNull public android.app.Notification.Builder setOngoing(boolean);
-    method @NonNull public android.app.Notification.Builder setOnlyAlertOnce(boolean);
-    method @Deprecated public android.app.Notification.Builder setPriority(int);
-    method @NonNull public android.app.Notification.Builder setProgress(int, int, boolean);
-    method @NonNull public android.app.Notification.Builder setPublicVersion(android.app.Notification);
-    method @NonNull public android.app.Notification.Builder setRemoteInputHistory(CharSequence[]);
-    method @NonNull public android.app.Notification.Builder setSettingsText(CharSequence);
-    method @NonNull public android.app.Notification.Builder setShortcutId(String);
-    method @NonNull public android.app.Notification.Builder setShowWhen(boolean);
-    method @NonNull public android.app.Notification.Builder setSmallIcon(@DrawableRes int);
-    method @NonNull public android.app.Notification.Builder setSmallIcon(@DrawableRes int, int);
-    method @NonNull public android.app.Notification.Builder setSmallIcon(android.graphics.drawable.Icon);
-    method @NonNull public android.app.Notification.Builder setSortKey(String);
-    method @Deprecated public android.app.Notification.Builder setSound(android.net.Uri);
-    method @Deprecated public android.app.Notification.Builder setSound(android.net.Uri, int);
-    method @Deprecated public android.app.Notification.Builder setSound(android.net.Uri, android.media.AudioAttributes);
-    method @NonNull public android.app.Notification.Builder setStyle(android.app.Notification.Style);
-    method @NonNull public android.app.Notification.Builder setSubText(CharSequence);
-    method @NonNull public android.app.Notification.Builder setTicker(CharSequence);
-    method @Deprecated public android.app.Notification.Builder setTicker(CharSequence, android.widget.RemoteViews);
-    method @NonNull public android.app.Notification.Builder setTimeoutAfter(long);
-    method @NonNull public android.app.Notification.Builder setUsesChronometer(boolean);
-    method @Deprecated public android.app.Notification.Builder setVibrate(long[]);
-    method @NonNull public android.app.Notification.Builder setVisibility(int);
-    method @NonNull public android.app.Notification.Builder setWhen(long);
-  }
-
-  public static final class Notification.CarExtender implements android.app.Notification.Extender {
-    ctor public Notification.CarExtender();
-    ctor public Notification.CarExtender(android.app.Notification);
-    method public android.app.Notification.Builder extend(android.app.Notification.Builder);
-    method @ColorInt public int getColor();
-    method public android.graphics.Bitmap getLargeIcon();
-    method public android.app.Notification.CarExtender.UnreadConversation getUnreadConversation();
-    method public android.app.Notification.CarExtender setColor(@ColorInt int);
-    method public android.app.Notification.CarExtender setLargeIcon(android.graphics.Bitmap);
-    method public android.app.Notification.CarExtender setUnreadConversation(android.app.Notification.CarExtender.UnreadConversation);
-  }
-
-  public static class Notification.CarExtender.Builder {
-    ctor public Notification.CarExtender.Builder(String);
-    method public android.app.Notification.CarExtender.Builder addMessage(String);
-    method public android.app.Notification.CarExtender.UnreadConversation build();
-    method public android.app.Notification.CarExtender.Builder setLatestTimestamp(long);
-    method public android.app.Notification.CarExtender.Builder setReadPendingIntent(android.app.PendingIntent);
-    method public android.app.Notification.CarExtender.Builder setReplyAction(android.app.PendingIntent, android.app.RemoteInput);
-  }
-
-  public static class Notification.CarExtender.UnreadConversation {
-    method public long getLatestTimestamp();
-    method public String[] getMessages();
-    method public String getParticipant();
-    method public String[] getParticipants();
-    method public android.app.PendingIntent getReadPendingIntent();
-    method public android.app.RemoteInput getRemoteInput();
-    method public android.app.PendingIntent getReplyPendingIntent();
-  }
-
-  public static class Notification.DecoratedCustomViewStyle extends android.app.Notification.Style {
-    ctor public Notification.DecoratedCustomViewStyle();
-  }
-
-  public static class Notification.DecoratedMediaCustomViewStyle extends android.app.Notification.MediaStyle {
-    ctor public Notification.DecoratedMediaCustomViewStyle();
-  }
-
-  public static interface Notification.Extender {
-    method public android.app.Notification.Builder extend(android.app.Notification.Builder);
-  }
-
-  public static class Notification.InboxStyle extends android.app.Notification.Style {
-    ctor public Notification.InboxStyle();
-    ctor @Deprecated public Notification.InboxStyle(android.app.Notification.Builder);
-    method public android.app.Notification.InboxStyle addLine(CharSequence);
-    method public android.app.Notification.InboxStyle setBigContentTitle(CharSequence);
-    method public android.app.Notification.InboxStyle setSummaryText(CharSequence);
-  }
-
-  public static class Notification.MediaStyle extends android.app.Notification.Style {
-    ctor public Notification.MediaStyle();
-    ctor @Deprecated public Notification.MediaStyle(android.app.Notification.Builder);
-    method public android.app.Notification.MediaStyle setMediaSession(android.media.session.MediaSession.Token);
-    method public android.app.Notification.MediaStyle setShowActionsInCompactView(int...);
-  }
-
-  public static class Notification.MessagingStyle extends android.app.Notification.Style {
-    ctor @Deprecated public Notification.MessagingStyle(@NonNull CharSequence);
-    ctor public Notification.MessagingStyle(@NonNull android.app.Person);
-    method public android.app.Notification.MessagingStyle addHistoricMessage(android.app.Notification.MessagingStyle.Message);
-    method @Deprecated public android.app.Notification.MessagingStyle addMessage(CharSequence, long, CharSequence);
-    method public android.app.Notification.MessagingStyle addMessage(@NonNull CharSequence, long, @Nullable android.app.Person);
-    method public android.app.Notification.MessagingStyle addMessage(android.app.Notification.MessagingStyle.Message);
-    method @Nullable public CharSequence getConversationTitle();
-    method public java.util.List<android.app.Notification.MessagingStyle.Message> getHistoricMessages();
-    method public java.util.List<android.app.Notification.MessagingStyle.Message> getMessages();
-    method @NonNull public android.app.Person getUser();
-    method @Deprecated public CharSequence getUserDisplayName();
-    method public boolean isGroupConversation();
-    method public android.app.Notification.MessagingStyle setConversationTitle(@Nullable CharSequence);
-    method public android.app.Notification.MessagingStyle setGroupConversation(boolean);
-    field public static final int MAXIMUM_RETAINED_MESSAGES = 25; // 0x19
-  }
-
-  public static final class Notification.MessagingStyle.Message {
-    ctor @Deprecated public Notification.MessagingStyle.Message(CharSequence, long, CharSequence);
-    ctor public Notification.MessagingStyle.Message(@NonNull CharSequence, long, @Nullable android.app.Person);
-    method public String getDataMimeType();
-    method public android.net.Uri getDataUri();
-    method public android.os.Bundle getExtras();
-    method @NonNull public static java.util.List<android.app.Notification.MessagingStyle.Message> getMessagesFromBundleArray(@Nullable android.os.Parcelable[]);
-    method @Deprecated public CharSequence getSender();
-    method @Nullable public android.app.Person getSenderPerson();
-    method public CharSequence getText();
-    method public long getTimestamp();
-    method public android.app.Notification.MessagingStyle.Message setData(String, android.net.Uri);
-  }
-
-  public abstract static class Notification.Style {
-    ctor public Notification.Style();
-    method public android.app.Notification build();
-    method protected void checkBuilder();
-    method protected android.widget.RemoteViews getStandardView(int);
-    method protected void internalSetBigContentTitle(CharSequence);
-    method protected void internalSetSummaryText(CharSequence);
-    method public void setBuilder(android.app.Notification.Builder);
-    field protected android.app.Notification.Builder mBuilder;
-  }
-
-  public static final class Notification.WearableExtender implements android.app.Notification.Extender {
-    ctor public Notification.WearableExtender();
-    ctor public Notification.WearableExtender(android.app.Notification);
-    method public android.app.Notification.WearableExtender addAction(android.app.Notification.Action);
-    method public android.app.Notification.WearableExtender addActions(java.util.List<android.app.Notification.Action>);
-    method @Deprecated public android.app.Notification.WearableExtender addPage(android.app.Notification);
-    method @Deprecated public android.app.Notification.WearableExtender addPages(java.util.List<android.app.Notification>);
-    method public android.app.Notification.WearableExtender clearActions();
-    method @Deprecated public android.app.Notification.WearableExtender clearPages();
-    method public android.app.Notification.WearableExtender clone();
-    method public android.app.Notification.Builder extend(android.app.Notification.Builder);
-    method public java.util.List<android.app.Notification.Action> getActions();
-    method @Deprecated public android.graphics.Bitmap getBackground();
-    method public String getBridgeTag();
-    method public int getContentAction();
-    method @Deprecated public int getContentIcon();
-    method @Deprecated public int getContentIconGravity();
-    method public boolean getContentIntentAvailableOffline();
-    method @Deprecated public int getCustomContentHeight();
-    method @Deprecated public int getCustomSizePreset();
-    method public String getDismissalId();
-    method @Deprecated public android.app.PendingIntent getDisplayIntent();
-    method @Deprecated public int getGravity();
-    method @Deprecated public boolean getHintAmbientBigPicture();
-    method @Deprecated public boolean getHintAvoidBackgroundClipping();
-    method public boolean getHintContentIntentLaunchesActivity();
-    method @Deprecated public boolean getHintHideIcon();
-    method @Deprecated public int getHintScreenTimeout();
-    method @Deprecated public boolean getHintShowBackgroundOnly();
-    method @Deprecated public java.util.List<android.app.Notification> getPages();
-    method public boolean getStartScrollBottom();
-    method @Deprecated public android.app.Notification.WearableExtender setBackground(android.graphics.Bitmap);
-    method public android.app.Notification.WearableExtender setBridgeTag(String);
-    method public android.app.Notification.WearableExtender setContentAction(int);
-    method @Deprecated public android.app.Notification.WearableExtender setContentIcon(int);
-    method @Deprecated public android.app.Notification.WearableExtender setContentIconGravity(int);
-    method public android.app.Notification.WearableExtender setContentIntentAvailableOffline(boolean);
-    method @Deprecated public android.app.Notification.WearableExtender setCustomContentHeight(int);
-    method @Deprecated public android.app.Notification.WearableExtender setCustomSizePreset(int);
-    method public android.app.Notification.WearableExtender setDismissalId(String);
-    method @Deprecated public android.app.Notification.WearableExtender setDisplayIntent(android.app.PendingIntent);
-    method @Deprecated public android.app.Notification.WearableExtender setGravity(int);
-    method @Deprecated public android.app.Notification.WearableExtender setHintAmbientBigPicture(boolean);
-    method @Deprecated public android.app.Notification.WearableExtender setHintAvoidBackgroundClipping(boolean);
-    method public android.app.Notification.WearableExtender setHintContentIntentLaunchesActivity(boolean);
-    method @Deprecated public android.app.Notification.WearableExtender setHintHideIcon(boolean);
-    method @Deprecated public android.app.Notification.WearableExtender setHintScreenTimeout(int);
-    method @Deprecated public android.app.Notification.WearableExtender setHintShowBackgroundOnly(boolean);
-    method public android.app.Notification.WearableExtender setStartScrollBottom(boolean);
-    field @Deprecated public static final int SCREEN_TIMEOUT_LONG = -1; // 0xffffffff
-    field @Deprecated public static final int SCREEN_TIMEOUT_SHORT = 0; // 0x0
-    field @Deprecated public static final int SIZE_DEFAULT = 0; // 0x0
-    field @Deprecated public static final int SIZE_FULL_SCREEN = 5; // 0x5
-    field @Deprecated public static final int SIZE_LARGE = 4; // 0x4
-    field @Deprecated public static final int SIZE_MEDIUM = 3; // 0x3
-    field @Deprecated public static final int SIZE_SMALL = 2; // 0x2
-    field @Deprecated public static final int SIZE_XSMALL = 1; // 0x1
-    field public static final int UNSET_ACTION_INDEX = -1; // 0xffffffff
-  }
-
-  public final class NotificationChannel implements android.os.Parcelable {
-    ctor public NotificationChannel(String, CharSequence, int);
-    method public boolean canBubble();
-    method public boolean canBypassDnd();
-    method public boolean canShowBadge();
-    method public int describeContents();
-    method public void enableLights(boolean);
-    method public void enableVibration(boolean);
-    method public android.media.AudioAttributes getAudioAttributes();
-    method @Nullable public String getConversationId();
-    method public String getDescription();
-    method public String getGroup();
-    method public String getId();
-    method public int getImportance();
-    method public int getLightColor();
-    method public int getLockscreenVisibility();
-    method public CharSequence getName();
-    method @Nullable public String getParentChannelId();
-    method public android.net.Uri getSound();
-    method public long[] getVibrationPattern();
-    method public boolean hasUserSetImportance();
-    method public boolean hasUserSetSound();
-    method public boolean isImportantConversation();
-    method public void setAllowBubbles(boolean);
-    method public void setBypassDnd(boolean);
-    method public void setConversationId(@NonNull String, @NonNull String);
-    method public void setDescription(String);
-    method public void setGroup(String);
-    method public void setImportance(int);
-    method public void setLightColor(int);
-    method public void setLockscreenVisibility(int);
-    method public void setName(CharSequence);
-    method public void setShowBadge(boolean);
-    method public void setSound(android.net.Uri, android.media.AudioAttributes);
-    method public void setVibrationPattern(long[]);
-    method public boolean shouldShowLights();
-    method public boolean shouldVibrate();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.NotificationChannel> CREATOR;
-    field public static final String DEFAULT_CHANNEL_ID = "miscellaneous";
-  }
-
-  public final class NotificationChannelGroup implements android.os.Parcelable {
-    ctor public NotificationChannelGroup(String, CharSequence);
-    method public android.app.NotificationChannelGroup clone();
-    method public int describeContents();
-    method public java.util.List<android.app.NotificationChannel> getChannels();
-    method public String getDescription();
-    method public String getId();
-    method public CharSequence getName();
-    method public boolean isBlocked();
-    method public void setDescription(String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.NotificationChannelGroup> CREATOR;
-  }
-
-  public class NotificationManager {
-    method public String addAutomaticZenRule(android.app.AutomaticZenRule);
-    method public boolean areBubblesAllowed();
-    method public boolean areNotificationsEnabled();
-    method public boolean areNotificationsPaused();
-    method public boolean canNotifyAsPackage(@NonNull String);
-    method public void cancel(int);
-    method public void cancel(@Nullable String, int);
-    method public void cancelAll();
-    method public void cancelAsPackage(@NonNull String, @Nullable String, int);
-    method public void createNotificationChannel(@NonNull android.app.NotificationChannel);
-    method public void createNotificationChannelGroup(@NonNull android.app.NotificationChannelGroup);
-    method public void createNotificationChannelGroups(@NonNull java.util.List<android.app.NotificationChannelGroup>);
-    method public void createNotificationChannels(@NonNull java.util.List<android.app.NotificationChannel>);
-    method public void deleteNotificationChannel(String);
-    method public void deleteNotificationChannelGroup(String);
-    method public android.service.notification.StatusBarNotification[] getActiveNotifications();
-    method public android.app.AutomaticZenRule getAutomaticZenRule(String);
-    method public java.util.Map<java.lang.String,android.app.AutomaticZenRule> getAutomaticZenRules();
-    method @NonNull public android.app.NotificationManager.Policy getConsolidatedNotificationPolicy();
-    method public final int getCurrentInterruptionFilter();
-    method public int getImportance();
-    method public android.app.NotificationChannel getNotificationChannel(String);
-    method @Nullable public android.app.NotificationChannel getNotificationChannel(@NonNull String, @NonNull String);
-    method public android.app.NotificationChannelGroup getNotificationChannelGroup(String);
-    method public java.util.List<android.app.NotificationChannelGroup> getNotificationChannelGroups();
-    method public java.util.List<android.app.NotificationChannel> getNotificationChannels();
-    method @Nullable public String getNotificationDelegate();
-    method public android.app.NotificationManager.Policy getNotificationPolicy();
-    method public boolean isNotificationListenerAccessGranted(android.content.ComponentName);
-    method public boolean isNotificationPolicyAccessGranted();
-    method public void notify(int, android.app.Notification);
-    method public void notify(String, int, android.app.Notification);
-    method public void notifyAsPackage(@NonNull String, @Nullable String, int, @NonNull android.app.Notification);
-    method public boolean removeAutomaticZenRule(String);
-    method public void setAutomaticZenRuleState(@NonNull String, @NonNull android.service.notification.Condition);
-    method public final void setInterruptionFilter(int);
-    method public void setNotificationDelegate(@Nullable String);
-    method public void setNotificationPolicy(@NonNull android.app.NotificationManager.Policy);
-    method public boolean shouldHideSilentStatusBarIcons();
-    method public boolean updateAutomaticZenRule(String, android.app.AutomaticZenRule);
-    field public static final String ACTION_APP_BLOCK_STATE_CHANGED = "android.app.action.APP_BLOCK_STATE_CHANGED";
-    field public static final String ACTION_AUTOMATIC_ZEN_RULE = "android.app.action.AUTOMATIC_ZEN_RULE";
-    field public static final String ACTION_AUTOMATIC_ZEN_RULE_STATUS_CHANGED = "android.app.action.AUTOMATIC_ZEN_RULE_STATUS_CHANGED";
-    field public static final String ACTION_INTERRUPTION_FILTER_CHANGED = "android.app.action.INTERRUPTION_FILTER_CHANGED";
-    field public static final String ACTION_NOTIFICATION_CHANNEL_BLOCK_STATE_CHANGED = "android.app.action.NOTIFICATION_CHANNEL_BLOCK_STATE_CHANGED";
-    field public static final String ACTION_NOTIFICATION_CHANNEL_GROUP_BLOCK_STATE_CHANGED = "android.app.action.NOTIFICATION_CHANNEL_GROUP_BLOCK_STATE_CHANGED";
-    field public static final String ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED = "android.app.action.NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED";
-    field public static final String ACTION_NOTIFICATION_POLICY_CHANGED = "android.app.action.NOTIFICATION_POLICY_CHANGED";
-    field public static final int AUTOMATIC_RULE_STATUS_DISABLED = 2; // 0x2
-    field public static final int AUTOMATIC_RULE_STATUS_ENABLED = 1; // 0x1
-    field public static final int AUTOMATIC_RULE_STATUS_REMOVED = 3; // 0x3
-    field public static final int AUTOMATIC_RULE_STATUS_UNKNOWN = -1; // 0xffffffff
-    field public static final String EXTRA_AUTOMATIC_RULE_ID = "android.app.extra.AUTOMATIC_RULE_ID";
-    field public static final String EXTRA_AUTOMATIC_ZEN_RULE_ID = "android.app.extra.AUTOMATIC_ZEN_RULE_ID";
-    field public static final String EXTRA_AUTOMATIC_ZEN_RULE_STATUS = "android.app.extra.AUTOMATIC_ZEN_RULE_STATUS";
-    field public static final String EXTRA_BLOCKED_STATE = "android.app.extra.BLOCKED_STATE";
-    field public static final String EXTRA_NOTIFICATION_CHANNEL_GROUP_ID = "android.app.extra.NOTIFICATION_CHANNEL_GROUP_ID";
-    field public static final String EXTRA_NOTIFICATION_CHANNEL_ID = "android.app.extra.NOTIFICATION_CHANNEL_ID";
-    field public static final int IMPORTANCE_DEFAULT = 3; // 0x3
-    field public static final int IMPORTANCE_HIGH = 4; // 0x4
-    field public static final int IMPORTANCE_LOW = 2; // 0x2
-    field public static final int IMPORTANCE_MAX = 5; // 0x5
-    field public static final int IMPORTANCE_MIN = 1; // 0x1
-    field public static final int IMPORTANCE_NONE = 0; // 0x0
-    field public static final int IMPORTANCE_UNSPECIFIED = -1000; // 0xfffffc18
-    field public static final int INTERRUPTION_FILTER_ALARMS = 4; // 0x4
-    field public static final int INTERRUPTION_FILTER_ALL = 1; // 0x1
-    field public static final int INTERRUPTION_FILTER_NONE = 3; // 0x3
-    field public static final int INTERRUPTION_FILTER_PRIORITY = 2; // 0x2
-    field public static final int INTERRUPTION_FILTER_UNKNOWN = 0; // 0x0
-    field public static final String META_DATA_AUTOMATIC_RULE_TYPE = "android.service.zen.automatic.ruleType";
-    field public static final String META_DATA_RULE_INSTANCE_LIMIT = "android.service.zen.automatic.ruleInstanceLimit";
-  }
-
-  public static class NotificationManager.Policy implements android.os.Parcelable {
-    ctor public NotificationManager.Policy(int, int, int);
-    ctor public NotificationManager.Policy(int, int, int, int);
-    ctor public NotificationManager.Policy(int, int, int, int, int);
-    method public int describeContents();
-    method public static String priorityCategoriesToString(int);
-    method public static String prioritySendersToString(int);
-    method public static String suppressedEffectsToString(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CONVERSATION_SENDERS_ANYONE = 1; // 0x1
-    field public static final int CONVERSATION_SENDERS_IMPORTANT = 2; // 0x2
-    field public static final int CONVERSATION_SENDERS_NONE = 3; // 0x3
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.NotificationManager.Policy> CREATOR;
-    field public static final int PRIORITY_CATEGORY_ALARMS = 32; // 0x20
-    field public static final int PRIORITY_CATEGORY_CALLS = 8; // 0x8
-    field public static final int PRIORITY_CATEGORY_CONVERSATIONS = 256; // 0x100
-    field public static final int PRIORITY_CATEGORY_EVENTS = 2; // 0x2
-    field public static final int PRIORITY_CATEGORY_MEDIA = 64; // 0x40
-    field public static final int PRIORITY_CATEGORY_MESSAGES = 4; // 0x4
-    field public static final int PRIORITY_CATEGORY_REMINDERS = 1; // 0x1
-    field public static final int PRIORITY_CATEGORY_REPEAT_CALLERS = 16; // 0x10
-    field public static final int PRIORITY_CATEGORY_SYSTEM = 128; // 0x80
-    field public static final int PRIORITY_SENDERS_ANY = 0; // 0x0
-    field public static final int PRIORITY_SENDERS_CONTACTS = 1; // 0x1
-    field public static final int PRIORITY_SENDERS_STARRED = 2; // 0x2
-    field public static final int SUPPRESSED_EFFECT_AMBIENT = 128; // 0x80
-    field public static final int SUPPRESSED_EFFECT_BADGE = 64; // 0x40
-    field public static final int SUPPRESSED_EFFECT_FULL_SCREEN_INTENT = 4; // 0x4
-    field public static final int SUPPRESSED_EFFECT_LIGHTS = 8; // 0x8
-    field public static final int SUPPRESSED_EFFECT_NOTIFICATION_LIST = 256; // 0x100
-    field public static final int SUPPRESSED_EFFECT_PEEK = 16; // 0x10
-    field @Deprecated public static final int SUPPRESSED_EFFECT_SCREEN_OFF = 1; // 0x1
-    field @Deprecated public static final int SUPPRESSED_EFFECT_SCREEN_ON = 2; // 0x2
-    field public static final int SUPPRESSED_EFFECT_STATUS_BAR = 32; // 0x20
-    field public final int priorityCallSenders;
-    field public final int priorityCategories;
-    field public final int priorityConversationSenders;
-    field public final int priorityMessageSenders;
-    field public final int suppressedVisualEffects;
-  }
-
-  public final class PendingIntent implements android.os.Parcelable {
-    method public void cancel();
-    method public int describeContents();
-    method public static android.app.PendingIntent getActivities(android.content.Context, int, @NonNull android.content.Intent[], int);
-    method public static android.app.PendingIntent getActivities(android.content.Context, int, @NonNull android.content.Intent[], int, @Nullable android.os.Bundle);
-    method public static android.app.PendingIntent getActivity(android.content.Context, int, android.content.Intent, int);
-    method public static android.app.PendingIntent getActivity(android.content.Context, int, @NonNull android.content.Intent, int, @Nullable android.os.Bundle);
-    method public static android.app.PendingIntent getBroadcast(android.content.Context, int, android.content.Intent, int);
-    method @Nullable public String getCreatorPackage();
-    method public int getCreatorUid();
-    method @Nullable public android.os.UserHandle getCreatorUserHandle();
-    method public static android.app.PendingIntent getForegroundService(android.content.Context, int, @NonNull android.content.Intent, int);
-    method public android.content.IntentSender getIntentSender();
-    method public static android.app.PendingIntent getService(android.content.Context, int, @NonNull android.content.Intent, int);
-    method @Deprecated public String getTargetPackage();
-    method @Nullable public static android.app.PendingIntent readPendingIntentOrNullFromParcel(@NonNull android.os.Parcel);
-    method public void send() throws android.app.PendingIntent.CanceledException;
-    method public void send(int) throws android.app.PendingIntent.CanceledException;
-    method public void send(android.content.Context, int, @Nullable android.content.Intent) throws android.app.PendingIntent.CanceledException;
-    method public void send(int, @Nullable android.app.PendingIntent.OnFinished, @Nullable android.os.Handler) throws android.app.PendingIntent.CanceledException;
-    method public void send(android.content.Context, int, @Nullable android.content.Intent, @Nullable android.app.PendingIntent.OnFinished, @Nullable android.os.Handler) throws android.app.PendingIntent.CanceledException;
-    method public void send(android.content.Context, int, @Nullable android.content.Intent, @Nullable android.app.PendingIntent.OnFinished, @Nullable android.os.Handler, @Nullable String) throws android.app.PendingIntent.CanceledException;
-    method public void send(android.content.Context, int, @Nullable android.content.Intent, @Nullable android.app.PendingIntent.OnFinished, @Nullable android.os.Handler, @Nullable String, @Nullable android.os.Bundle) throws android.app.PendingIntent.CanceledException;
-    method public static void writePendingIntentOrNullToParcel(@Nullable android.app.PendingIntent, @NonNull android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.PendingIntent> CREATOR;
-    field public static final int FLAG_CANCEL_CURRENT = 268435456; // 0x10000000
-    field public static final int FLAG_IMMUTABLE = 67108864; // 0x4000000
-    field public static final int FLAG_NO_CREATE = 536870912; // 0x20000000
-    field public static final int FLAG_ONE_SHOT = 1073741824; // 0x40000000
-    field public static final int FLAG_UPDATE_CURRENT = 134217728; // 0x8000000
-  }
-
-  public static class PendingIntent.CanceledException extends android.util.AndroidException {
-    ctor public PendingIntent.CanceledException();
-    ctor public PendingIntent.CanceledException(String);
-    ctor public PendingIntent.CanceledException(Exception);
-  }
-
-  public static interface PendingIntent.OnFinished {
-    method public void onSendFinished(android.app.PendingIntent, android.content.Intent, int, String, android.os.Bundle);
-  }
-
-  public final class Person implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.graphics.drawable.Icon getIcon();
-    method @Nullable public String getKey();
-    method @Nullable public CharSequence getName();
-    method @Nullable public String getUri();
-    method public boolean isBot();
-    method public boolean isImportant();
-    method public android.app.Person.Builder toBuilder();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.Person> CREATOR;
-  }
-
-  public static class Person.Builder {
-    ctor public Person.Builder();
-    method @NonNull public android.app.Person build();
-    method @NonNull public android.app.Person.Builder setBot(boolean);
-    method @NonNull public android.app.Person.Builder setIcon(@Nullable android.graphics.drawable.Icon);
-    method @NonNull public android.app.Person.Builder setImportant(boolean);
-    method @NonNull public android.app.Person.Builder setKey(@Nullable String);
-    method @NonNull public android.app.Person.Builder setName(@Nullable CharSequence);
-    method @NonNull public android.app.Person.Builder setUri(@Nullable String);
-  }
-
-  public final class PictureInPictureParams implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.PictureInPictureParams> CREATOR;
-  }
-
-  public static class PictureInPictureParams.Builder {
-    ctor public PictureInPictureParams.Builder();
-    method public android.app.PictureInPictureParams build();
-    method public android.app.PictureInPictureParams.Builder setActions(java.util.List<android.app.RemoteAction>);
-    method public android.app.PictureInPictureParams.Builder setAspectRatio(android.util.Rational);
-    method public android.app.PictureInPictureParams.Builder setSourceRectHint(android.graphics.Rect);
-  }
-
-  public class Presentation extends android.app.Dialog {
-    ctor public Presentation(android.content.Context, android.view.Display);
-    ctor public Presentation(android.content.Context, android.view.Display, int);
-    method public android.view.Display getDisplay();
-    method public android.content.res.Resources getResources();
-    method public void onDisplayChanged();
-    method public void onDisplayRemoved();
-  }
-
-  @Deprecated public class ProgressDialog extends android.app.AlertDialog {
-    ctor @Deprecated public ProgressDialog(android.content.Context);
-    ctor @Deprecated public ProgressDialog(android.content.Context, int);
-    method @Deprecated public int getMax();
-    method @Deprecated public int getProgress();
-    method @Deprecated public int getSecondaryProgress();
-    method @Deprecated public void incrementProgressBy(int);
-    method @Deprecated public void incrementSecondaryProgressBy(int);
-    method @Deprecated public boolean isIndeterminate();
-    method @Deprecated public void onStart();
-    method @Deprecated public void setIndeterminate(boolean);
-    method @Deprecated public void setIndeterminateDrawable(android.graphics.drawable.Drawable);
-    method @Deprecated public void setMax(int);
-    method @Deprecated public void setProgress(int);
-    method @Deprecated public void setProgressDrawable(android.graphics.drawable.Drawable);
-    method @Deprecated public void setProgressNumberFormat(String);
-    method @Deprecated public void setProgressPercentFormat(java.text.NumberFormat);
-    method @Deprecated public void setProgressStyle(int);
-    method @Deprecated public void setSecondaryProgress(int);
-    method @Deprecated public static android.app.ProgressDialog show(android.content.Context, CharSequence, CharSequence);
-    method @Deprecated public static android.app.ProgressDialog show(android.content.Context, CharSequence, CharSequence, boolean);
-    method @Deprecated public static android.app.ProgressDialog show(android.content.Context, CharSequence, CharSequence, boolean, boolean);
-    method @Deprecated public static android.app.ProgressDialog show(android.content.Context, CharSequence, CharSequence, boolean, boolean, android.content.DialogInterface.OnCancelListener);
-    field @Deprecated public static final int STYLE_HORIZONTAL = 1; // 0x1
-    field @Deprecated public static final int STYLE_SPINNER = 0; // 0x0
-  }
-
-  public final class RecoverableSecurityException extends java.lang.SecurityException implements android.os.Parcelable {
-    ctor public RecoverableSecurityException(@NonNull Throwable, @NonNull CharSequence, @NonNull android.app.RemoteAction);
-    method public int describeContents();
-    method @NonNull public android.app.RemoteAction getUserAction();
-    method @NonNull public CharSequence getUserMessage();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.RecoverableSecurityException> CREATOR;
-  }
-
-  public final class RemoteAction implements android.os.Parcelable {
-    ctor public RemoteAction(@NonNull android.graphics.drawable.Icon, @NonNull CharSequence, @NonNull CharSequence, @NonNull android.app.PendingIntent);
-    method public android.app.RemoteAction clone();
-    method public int describeContents();
-    method public void dump(String, java.io.PrintWriter);
-    method @NonNull public android.app.PendingIntent getActionIntent();
-    method @NonNull public CharSequence getContentDescription();
-    method @NonNull public android.graphics.drawable.Icon getIcon();
-    method @NonNull public CharSequence getTitle();
-    method public boolean isEnabled();
-    method public void setEnabled(boolean);
-    method public void setShouldShowIcon(boolean);
-    method public boolean shouldShowIcon();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.RemoteAction> CREATOR;
-  }
-
-  public final class RemoteInput implements android.os.Parcelable {
-    method public static void addDataResultToIntent(android.app.RemoteInput, android.content.Intent, java.util.Map<java.lang.String,android.net.Uri>);
-    method public static void addResultsToIntent(android.app.RemoteInput[], android.content.Intent, android.os.Bundle);
-    method public int describeContents();
-    method public boolean getAllowFreeFormInput();
-    method public java.util.Set<java.lang.String> getAllowedDataTypes();
-    method public CharSequence[] getChoices();
-    method public static java.util.Map<java.lang.String,android.net.Uri> getDataResultsFromIntent(android.content.Intent, String);
-    method public int getEditChoicesBeforeSending();
-    method public android.os.Bundle getExtras();
-    method public CharSequence getLabel();
-    method public String getResultKey();
-    method public static android.os.Bundle getResultsFromIntent(android.content.Intent);
-    method public static int getResultsSource(android.content.Intent);
-    method public boolean isDataOnly();
-    method public static void setResultsSource(android.content.Intent, int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.RemoteInput> CREATOR;
-    field public static final int EDIT_CHOICES_BEFORE_SENDING_AUTO = 0; // 0x0
-    field public static final int EDIT_CHOICES_BEFORE_SENDING_DISABLED = 1; // 0x1
-    field public static final int EDIT_CHOICES_BEFORE_SENDING_ENABLED = 2; // 0x2
-    field public static final String EXTRA_RESULTS_DATA = "android.remoteinput.resultsData";
-    field public static final String RESULTS_CLIP_LABEL = "android.remoteinput.results";
-    field public static final int SOURCE_CHOICE = 1; // 0x1
-    field public static final int SOURCE_FREE_FORM_INPUT = 0; // 0x0
-  }
-
-  public static final class RemoteInput.Builder {
-    ctor public RemoteInput.Builder(@NonNull String);
-    method @NonNull public android.app.RemoteInput.Builder addExtras(@NonNull android.os.Bundle);
-    method @NonNull public android.app.RemoteInput build();
-    method @NonNull public android.os.Bundle getExtras();
-    method @NonNull public android.app.RemoteInput.Builder setAllowDataType(@NonNull String, boolean);
-    method @NonNull public android.app.RemoteInput.Builder setAllowFreeFormInput(boolean);
-    method @NonNull public android.app.RemoteInput.Builder setChoices(@Nullable CharSequence[]);
-    method @NonNull public android.app.RemoteInput.Builder setEditChoicesBeforeSending(int);
-    method @NonNull public android.app.RemoteInput.Builder setLabel(@Nullable CharSequence);
-  }
-
-  public class SearchManager implements android.content.DialogInterface.OnCancelListener android.content.DialogInterface.OnDismissListener {
-    method public android.content.ComponentName getGlobalSearchActivity();
-    method public android.app.SearchableInfo getSearchableInfo(android.content.ComponentName);
-    method public java.util.List<android.app.SearchableInfo> getSearchablesInGlobalSearch();
-    method @Deprecated public void onCancel(android.content.DialogInterface);
-    method @Deprecated public void onDismiss(android.content.DialogInterface);
-    method public void setOnCancelListener(android.app.SearchManager.OnCancelListener);
-    method public void setOnDismissListener(android.app.SearchManager.OnDismissListener);
-    method public void startSearch(String, boolean, android.content.ComponentName, android.os.Bundle, boolean);
-    method public void stopSearch();
-    method public void triggerSearch(String, android.content.ComponentName, android.os.Bundle);
-    field public static final String ACTION_KEY = "action_key";
-    field public static final String ACTION_MSG = "action_msg";
-    field public static final String APP_DATA = "app_data";
-    field public static final String CURSOR_EXTRA_KEY_IN_PROGRESS = "in_progress";
-    field public static final String EXTRA_DATA_KEY = "intent_extra_data_key";
-    field public static final String EXTRA_NEW_SEARCH = "new_search";
-    field public static final String EXTRA_SELECT_QUERY = "select_query";
-    field public static final String EXTRA_WEB_SEARCH_PENDINGINTENT = "web_search_pendingintent";
-    field public static final int FLAG_QUERY_REFINEMENT = 1; // 0x1
-    field public static final String INTENT_ACTION_GLOBAL_SEARCH = "android.search.action.GLOBAL_SEARCH";
-    field public static final String INTENT_ACTION_SEARCHABLES_CHANGED = "android.search.action.SEARCHABLES_CHANGED";
-    field public static final String INTENT_ACTION_SEARCH_SETTINGS = "android.search.action.SEARCH_SETTINGS";
-    field public static final String INTENT_ACTION_SEARCH_SETTINGS_CHANGED = "android.search.action.SETTINGS_CHANGED";
-    field public static final String INTENT_ACTION_WEB_SEARCH_SETTINGS = "android.search.action.WEB_SEARCH_SETTINGS";
-    field public static final String INTENT_GLOBAL_SEARCH_ACTIVITY_CHANGED = "android.search.action.GLOBAL_SEARCH_ACTIVITY_CHANGED";
-    field public static final char MENU_KEY = 115; // 0x0073 's'
-    field public static final int MENU_KEYCODE = 47; // 0x2f
-    field public static final String QUERY = "query";
-    field public static final String SHORTCUT_MIME_TYPE = "vnd.android.cursor.item/vnd.android.search.suggest";
-    field public static final String SUGGEST_COLUMN_AUDIO_CHANNEL_CONFIG = "suggest_audio_channel_config";
-    field public static final String SUGGEST_COLUMN_CONTENT_TYPE = "suggest_content_type";
-    field public static final String SUGGEST_COLUMN_DURATION = "suggest_duration";
-    field public static final String SUGGEST_COLUMN_FLAGS = "suggest_flags";
-    field public static final String SUGGEST_COLUMN_FORMAT = "suggest_format";
-    field public static final String SUGGEST_COLUMN_ICON_1 = "suggest_icon_1";
-    field public static final String SUGGEST_COLUMN_ICON_2 = "suggest_icon_2";
-    field public static final String SUGGEST_COLUMN_INTENT_ACTION = "suggest_intent_action";
-    field public static final String SUGGEST_COLUMN_INTENT_DATA = "suggest_intent_data";
-    field public static final String SUGGEST_COLUMN_INTENT_DATA_ID = "suggest_intent_data_id";
-    field public static final String SUGGEST_COLUMN_INTENT_EXTRA_DATA = "suggest_intent_extra_data";
-    field public static final String SUGGEST_COLUMN_IS_LIVE = "suggest_is_live";
-    field public static final String SUGGEST_COLUMN_LAST_ACCESS_HINT = "suggest_last_access_hint";
-    field public static final String SUGGEST_COLUMN_PRODUCTION_YEAR = "suggest_production_year";
-    field public static final String SUGGEST_COLUMN_PURCHASE_PRICE = "suggest_purchase_price";
-    field public static final String SUGGEST_COLUMN_QUERY = "suggest_intent_query";
-    field public static final String SUGGEST_COLUMN_RATING_SCORE = "suggest_rating_score";
-    field public static final String SUGGEST_COLUMN_RATING_STYLE = "suggest_rating_style";
-    field public static final String SUGGEST_COLUMN_RENTAL_PRICE = "suggest_rental_price";
-    field public static final String SUGGEST_COLUMN_RESULT_CARD_IMAGE = "suggest_result_card_image";
-    field public static final String SUGGEST_COLUMN_SHORTCUT_ID = "suggest_shortcut_id";
-    field public static final String SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING = "suggest_spinner_while_refreshing";
-    field public static final String SUGGEST_COLUMN_TEXT_1 = "suggest_text_1";
-    field public static final String SUGGEST_COLUMN_TEXT_2 = "suggest_text_2";
-    field public static final String SUGGEST_COLUMN_TEXT_2_URL = "suggest_text_2_url";
-    field public static final String SUGGEST_COLUMN_VIDEO_HEIGHT = "suggest_video_height";
-    field public static final String SUGGEST_COLUMN_VIDEO_WIDTH = "suggest_video_width";
-    field public static final String SUGGEST_MIME_TYPE = "vnd.android.cursor.dir/vnd.android.search.suggest";
-    field public static final String SUGGEST_NEVER_MAKE_SHORTCUT = "_-1";
-    field public static final String SUGGEST_PARAMETER_LIMIT = "limit";
-    field public static final String SUGGEST_URI_PATH_QUERY = "search_suggest_query";
-    field public static final String SUGGEST_URI_PATH_SHORTCUT = "search_suggest_shortcut";
-    field public static final String USER_QUERY = "user_query";
-  }
-
-  public static interface SearchManager.OnCancelListener {
-    method public void onCancel();
-  }
-
-  public static interface SearchManager.OnDismissListener {
-    method public void onDismiss();
-  }
-
-  public final class SearchableInfo implements android.os.Parcelable {
-    method public boolean autoUrlDetect();
-    method public int describeContents();
-    method public int getHintId();
-    method public int getImeOptions();
-    method public int getInputType();
-    method public android.content.ComponentName getSearchActivity();
-    method public int getSettingsDescriptionId();
-    method public String getSuggestAuthority();
-    method public String getSuggestIntentAction();
-    method public String getSuggestIntentData();
-    method public String getSuggestPackage();
-    method public String getSuggestPath();
-    method public String getSuggestSelection();
-    method public int getSuggestThreshold();
-    method @StringRes public int getVoiceLanguageId();
-    method @StringRes public int getVoiceLanguageModeId();
-    method public int getVoiceMaxResults();
-    method @StringRes public int getVoicePromptTextId();
-    method public boolean getVoiceSearchEnabled();
-    method public boolean getVoiceSearchLaunchRecognizer();
-    method public boolean getVoiceSearchLaunchWebSearch();
-    method public boolean queryAfterZeroResults();
-    method public boolean shouldIncludeInGlobalSearch();
-    method public boolean shouldRewriteQueryFromData();
-    method public boolean shouldRewriteQueryFromText();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.SearchableInfo> CREATOR;
-  }
-
-  public abstract class Service extends android.content.ContextWrapper implements android.content.ComponentCallbacks2 {
-    ctor public Service();
-    method protected void dump(java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method public final android.app.Application getApplication();
-    method public final int getForegroundServiceType();
-    method @Nullable public abstract android.os.IBinder onBind(android.content.Intent);
-    method public void onConfigurationChanged(android.content.res.Configuration);
-    method public void onCreate();
-    method public void onDestroy();
-    method public void onLowMemory();
-    method public void onRebind(android.content.Intent);
-    method @Deprecated public void onStart(android.content.Intent, int);
-    method public int onStartCommand(android.content.Intent, int, int);
-    method public void onTaskRemoved(android.content.Intent);
-    method public void onTrimMemory(int);
-    method public boolean onUnbind(android.content.Intent);
-    method public final void startForeground(int, android.app.Notification);
-    method public final void startForeground(int, @NonNull android.app.Notification, int);
-    method public final void stopForeground(boolean);
-    method public final void stopForeground(int);
-    method public final void stopSelf();
-    method public final void stopSelf(int);
-    method public final boolean stopSelfResult(int);
-    field public static final int START_CONTINUATION_MASK = 15; // 0xf
-    field public static final int START_FLAG_REDELIVERY = 1; // 0x1
-    field public static final int START_FLAG_RETRY = 2; // 0x2
-    field public static final int START_NOT_STICKY = 2; // 0x2
-    field public static final int START_REDELIVER_INTENT = 3; // 0x3
-    field public static final int START_STICKY = 1; // 0x1
-    field public static final int START_STICKY_COMPATIBILITY = 0; // 0x0
-    field public static final int STOP_FOREGROUND_DETACH = 2; // 0x2
-    field public static final int STOP_FOREGROUND_REMOVE = 1; // 0x1
-  }
-
-  public abstract class SharedElementCallback {
-    ctor public SharedElementCallback();
-    method public android.os.Parcelable onCaptureSharedElementSnapshot(android.view.View, android.graphics.Matrix, android.graphics.RectF);
-    method public android.view.View onCreateSnapshotView(android.content.Context, android.os.Parcelable);
-    method public void onMapSharedElements(java.util.List<java.lang.String>, java.util.Map<java.lang.String,android.view.View>);
-    method public void onRejectSharedElements(java.util.List<android.view.View>);
-    method public void onSharedElementEnd(java.util.List<java.lang.String>, java.util.List<android.view.View>, java.util.List<android.view.View>);
-    method public void onSharedElementStart(java.util.List<java.lang.String>, java.util.List<android.view.View>, java.util.List<android.view.View>);
-    method public void onSharedElementsArrived(java.util.List<java.lang.String>, java.util.List<android.view.View>, android.app.SharedElementCallback.OnSharedElementsReadyListener);
-  }
-
-  public static interface SharedElementCallback.OnSharedElementsReadyListener {
-    method public void onSharedElementsReady();
-  }
-
-  public class StatusBarManager {
-  }
-
-  public final class SyncNotedAppOp implements android.os.Parcelable {
-    ctor public SyncNotedAppOp(@IntRange(from=0L) int, @Nullable String);
-    method public int describeContents();
-    method @Nullable public String getAttributionTag();
-    method @NonNull public String getOp();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.SyncNotedAppOp> CREATOR;
-  }
-
-  @Deprecated public class TabActivity extends android.app.ActivityGroup {
-    ctor @Deprecated public TabActivity();
-    method @Deprecated public android.widget.TabHost getTabHost();
-    method @Deprecated public android.widget.TabWidget getTabWidget();
-    method @Deprecated public void setDefaultTab(String);
-    method @Deprecated public void setDefaultTab(int);
-  }
-
-  public class TaskInfo {
-    field @Nullable public android.content.ComponentName baseActivity;
-    field @NonNull public android.content.Intent baseIntent;
-    field public boolean isRunning;
-    field public int numActivities;
-    field @Nullable public android.content.ComponentName origActivity;
-    field @Nullable public android.app.ActivityManager.TaskDescription taskDescription;
-    field public int taskId;
-    field @Nullable public android.content.ComponentName topActivity;
-  }
-
-  public class TaskStackBuilder {
-    method public android.app.TaskStackBuilder addNextIntent(android.content.Intent);
-    method public android.app.TaskStackBuilder addNextIntentWithParentStack(android.content.Intent);
-    method public android.app.TaskStackBuilder addParentStack(android.app.Activity);
-    method public android.app.TaskStackBuilder addParentStack(Class<?>);
-    method public android.app.TaskStackBuilder addParentStack(android.content.ComponentName);
-    method public static android.app.TaskStackBuilder create(android.content.Context);
-    method public android.content.Intent editIntentAt(int);
-    method public int getIntentCount();
-    method @NonNull public android.content.Intent[] getIntents();
-    method public android.app.PendingIntent getPendingIntent(int, int);
-    method public android.app.PendingIntent getPendingIntent(int, int, android.os.Bundle);
-    method public void startActivities();
-    method public void startActivities(android.os.Bundle);
-  }
-
-  public class TimePickerDialog extends android.app.AlertDialog implements android.content.DialogInterface.OnClickListener android.widget.TimePicker.OnTimeChangedListener {
-    ctor public TimePickerDialog(android.content.Context, android.app.TimePickerDialog.OnTimeSetListener, int, int, boolean);
-    ctor public TimePickerDialog(android.content.Context, int, android.app.TimePickerDialog.OnTimeSetListener, int, int, boolean);
-    method public void onClick(android.content.DialogInterface, int);
-    method public void onTimeChanged(android.widget.TimePicker, int, int);
-    method public void updateTime(int, int);
-  }
-
-  public static interface TimePickerDialog.OnTimeSetListener {
-    method public void onTimeSet(android.widget.TimePicker, int, int);
-  }
-
-  public final class UiAutomation {
-    method public void adoptShellPermissionIdentity();
-    method public void adoptShellPermissionIdentity(@Nullable java.lang.String...);
-    method public void clearWindowAnimationFrameStats();
-    method public boolean clearWindowContentFrameStats(int);
-    method public void dropShellPermissionIdentity();
-    method public android.view.accessibility.AccessibilityEvent executeAndWaitForEvent(Runnable, android.app.UiAutomation.AccessibilityEventFilter, long) throws java.util.concurrent.TimeoutException;
-    method public android.os.ParcelFileDescriptor executeShellCommand(String);
-    method public android.view.accessibility.AccessibilityNodeInfo findFocus(int);
-    method public android.view.accessibility.AccessibilityNodeInfo getRootInActiveWindow();
-    method public android.accessibilityservice.AccessibilityServiceInfo getServiceInfo();
-    method public android.view.WindowAnimationFrameStats getWindowAnimationFrameStats();
-    method public android.view.WindowContentFrameStats getWindowContentFrameStats(int);
-    method public java.util.List<android.view.accessibility.AccessibilityWindowInfo> getWindows();
-    method @NonNull public android.util.SparseArray<java.util.List<android.view.accessibility.AccessibilityWindowInfo>> getWindowsOnAllDisplays();
-    method public void grantRuntimePermission(String, String);
-    method public void grantRuntimePermissionAsUser(String, String, android.os.UserHandle);
-    method public boolean injectInputEvent(android.view.InputEvent, boolean);
-    method public boolean performGlobalAction(int);
-    method public void revokeRuntimePermission(String, String);
-    method public void revokeRuntimePermissionAsUser(String, String, android.os.UserHandle);
-    method public void setOnAccessibilityEventListener(android.app.UiAutomation.OnAccessibilityEventListener);
-    method public boolean setRotation(int);
-    method public void setRunAsMonkey(boolean);
-    method public void setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo);
-    method public android.graphics.Bitmap takeScreenshot();
-    method public void waitForIdle(long, long) throws java.util.concurrent.TimeoutException;
-    field public static final int FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES = 1; // 0x1
-    field public static final int ROTATION_FREEZE_0 = 0; // 0x0
-    field public static final int ROTATION_FREEZE_180 = 2; // 0x2
-    field public static final int ROTATION_FREEZE_270 = 3; // 0x3
-    field public static final int ROTATION_FREEZE_90 = 1; // 0x1
-    field public static final int ROTATION_FREEZE_CURRENT = -1; // 0xffffffff
-    field public static final int ROTATION_UNFREEZE = -2; // 0xfffffffe
-  }
-
-  public static interface UiAutomation.AccessibilityEventFilter {
-    method public boolean accept(android.view.accessibility.AccessibilityEvent);
-  }
-
-  public static interface UiAutomation.OnAccessibilityEventListener {
-    method public void onAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-  }
-
-  public class UiModeManager {
-    method public void disableCarMode(int);
-    method public void enableCarMode(int);
-    method public int getCurrentModeType();
-    method @NonNull public java.time.LocalTime getCustomNightModeEnd();
-    method @NonNull public java.time.LocalTime getCustomNightModeStart();
-    method public int getNightMode();
-    method public void setCustomNightModeEnd(@NonNull java.time.LocalTime);
-    method public void setCustomNightModeStart(@NonNull java.time.LocalTime);
-    method public void setNightMode(int);
-    field public static String ACTION_ENTER_CAR_MODE;
-    field public static String ACTION_ENTER_DESK_MODE;
-    field public static String ACTION_EXIT_CAR_MODE;
-    field public static String ACTION_EXIT_DESK_MODE;
-    field public static final int DISABLE_CAR_MODE_GO_HOME = 1; // 0x1
-    field public static final int ENABLE_CAR_MODE_ALLOW_SLEEP = 2; // 0x2
-    field public static final int ENABLE_CAR_MODE_GO_CAR_HOME = 1; // 0x1
-    field public static final int MODE_NIGHT_AUTO = 0; // 0x0
-    field public static final int MODE_NIGHT_CUSTOM = 3; // 0x3
-    field public static final int MODE_NIGHT_NO = 1; // 0x1
-    field public static final int MODE_NIGHT_YES = 2; // 0x2
-  }
-
-  public final class VoiceInteractor {
-    method public android.app.VoiceInteractor.Request getActiveRequest(String);
-    method public android.app.VoiceInteractor.Request[] getActiveRequests();
-    method public boolean isDestroyed();
-    method public void notifyDirectActionsChanged();
-    method public boolean registerOnDestroyedCallback(@NonNull java.util.concurrent.Executor, @NonNull Runnable);
-    method public boolean submitRequest(android.app.VoiceInteractor.Request);
-    method public boolean submitRequest(android.app.VoiceInteractor.Request, String);
-    method public boolean[] supportsCommands(String[]);
-    method public boolean unregisterOnDestroyedCallback(@NonNull Runnable);
-  }
-
-  public static class VoiceInteractor.AbortVoiceRequest extends android.app.VoiceInteractor.Request {
-    ctor public VoiceInteractor.AbortVoiceRequest(@Nullable android.app.VoiceInteractor.Prompt, @Nullable android.os.Bundle);
-    method public void onAbortResult(android.os.Bundle);
-  }
-
-  public static class VoiceInteractor.CommandRequest extends android.app.VoiceInteractor.Request {
-    ctor public VoiceInteractor.CommandRequest(String, android.os.Bundle);
-    method public void onCommandResult(boolean, android.os.Bundle);
-  }
-
-  public static class VoiceInteractor.CompleteVoiceRequest extends android.app.VoiceInteractor.Request {
-    ctor public VoiceInteractor.CompleteVoiceRequest(@Nullable android.app.VoiceInteractor.Prompt, @Nullable android.os.Bundle);
-    method public void onCompleteResult(android.os.Bundle);
-  }
-
-  public static class VoiceInteractor.ConfirmationRequest extends android.app.VoiceInteractor.Request {
-    ctor public VoiceInteractor.ConfirmationRequest(@Nullable android.app.VoiceInteractor.Prompt, @Nullable android.os.Bundle);
-    method public void onConfirmationResult(boolean, android.os.Bundle);
-  }
-
-  public static class VoiceInteractor.PickOptionRequest extends android.app.VoiceInteractor.Request {
-    ctor public VoiceInteractor.PickOptionRequest(@Nullable android.app.VoiceInteractor.Prompt, android.app.VoiceInteractor.PickOptionRequest.Option[], @Nullable android.os.Bundle);
-    method public void onPickOptionResult(boolean, android.app.VoiceInteractor.PickOptionRequest.Option[], android.os.Bundle);
-  }
-
-  public static final class VoiceInteractor.PickOptionRequest.Option implements android.os.Parcelable {
-    ctor public VoiceInteractor.PickOptionRequest.Option(CharSequence, int);
-    method public android.app.VoiceInteractor.PickOptionRequest.Option addSynonym(CharSequence);
-    method public int countSynonyms();
-    method public int describeContents();
-    method public android.os.Bundle getExtras();
-    method public int getIndex();
-    method public CharSequence getLabel();
-    method public CharSequence getSynonymAt(int);
-    method public void setExtras(android.os.Bundle);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.VoiceInteractor.PickOptionRequest.Option> CREATOR;
-  }
-
-  public static class VoiceInteractor.Prompt implements android.os.Parcelable {
-    ctor public VoiceInteractor.Prompt(@NonNull CharSequence[], @NonNull CharSequence);
-    ctor public VoiceInteractor.Prompt(@NonNull CharSequence);
-    method public int countVoicePrompts();
-    method public int describeContents();
-    method @NonNull public CharSequence getVisualPrompt();
-    method @NonNull public CharSequence getVoicePromptAt(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.VoiceInteractor.Prompt> CREATOR;
-  }
-
-  public abstract static class VoiceInteractor.Request {
-    method public void cancel();
-    method public android.app.Activity getActivity();
-    method public android.content.Context getContext();
-    method public String getName();
-    method public void onAttached(android.app.Activity);
-    method public void onCancel();
-    method public void onDetached();
-  }
-
-  public final class WallpaperColors implements android.os.Parcelable {
-    ctor public WallpaperColors(android.os.Parcel);
-    ctor public WallpaperColors(@NonNull android.graphics.Color, @Nullable android.graphics.Color, @Nullable android.graphics.Color);
-    method public int describeContents();
-    method public static android.app.WallpaperColors fromBitmap(@NonNull android.graphics.Bitmap);
-    method public static android.app.WallpaperColors fromDrawable(android.graphics.drawable.Drawable);
-    method @NonNull public android.graphics.Color getPrimaryColor();
-    method @Nullable public android.graphics.Color getSecondaryColor();
-    method @Nullable public android.graphics.Color getTertiaryColor();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.WallpaperColors> CREATOR;
-  }
-
-  public final class WallpaperInfo implements android.os.Parcelable {
-    ctor public WallpaperInfo(android.content.Context, android.content.pm.ResolveInfo) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public int describeContents();
-    method public void dump(android.util.Printer, String);
-    method public android.content.ComponentName getComponent();
-    method public String getPackageName();
-    method public android.content.pm.ServiceInfo getServiceInfo();
-    method public String getServiceName();
-    method public String getSettingsActivity();
-    method @Nullable public android.net.Uri getSettingsSliceUri();
-    method public boolean getShowMetadataInPreview();
-    method public CharSequence loadAuthor(android.content.pm.PackageManager) throws android.content.res.Resources.NotFoundException;
-    method public CharSequence loadContextDescription(android.content.pm.PackageManager) throws android.content.res.Resources.NotFoundException;
-    method public android.net.Uri loadContextUri(android.content.pm.PackageManager) throws android.content.res.Resources.NotFoundException;
-    method public CharSequence loadDescription(android.content.pm.PackageManager) throws android.content.res.Resources.NotFoundException;
-    method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
-    method public CharSequence loadLabel(android.content.pm.PackageManager);
-    method public android.graphics.drawable.Drawable loadThumbnail(android.content.pm.PackageManager);
-    method public boolean supportsMultipleDisplays();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.WallpaperInfo> CREATOR;
-  }
-
-  public class WallpaperManager {
-    method public void addOnColorsChangedListener(@NonNull android.app.WallpaperManager.OnColorsChangedListener, @NonNull android.os.Handler);
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void clear() throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void clear(int) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void clearWallpaper();
-    method public void clearWallpaperOffsets(android.os.IBinder);
-    method public void forgetLoadedWallpaper();
-    method public android.graphics.drawable.Drawable getBuiltInDrawable();
-    method public android.graphics.drawable.Drawable getBuiltInDrawable(int);
-    method public android.graphics.drawable.Drawable getBuiltInDrawable(int, int, boolean, float, float);
-    method public android.graphics.drawable.Drawable getBuiltInDrawable(int, int, boolean, float, float, int);
-    method public android.content.Intent getCropAndSetWallpaperIntent(android.net.Uri);
-    method public int getDesiredMinimumHeight();
-    method public int getDesiredMinimumWidth();
-    method public android.graphics.drawable.Drawable getDrawable();
-    method @RequiresPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) public android.graphics.drawable.Drawable getFastDrawable();
-    method public static android.app.WallpaperManager getInstance(android.content.Context);
-    method @Nullable public android.app.WallpaperColors getWallpaperColors(int);
-    method @RequiresPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) public android.os.ParcelFileDescriptor getWallpaperFile(int);
-    method public int getWallpaperId(int);
-    method public android.app.WallpaperInfo getWallpaperInfo();
-    method public boolean hasResourceWallpaper(@RawRes int);
-    method public boolean isSetWallpaperAllowed();
-    method public boolean isWallpaperSupported();
-    method public android.graphics.drawable.Drawable peekDrawable();
-    method @RequiresPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) public android.graphics.drawable.Drawable peekFastDrawable();
-    method public void removeOnColorsChangedListener(@NonNull android.app.WallpaperManager.OnColorsChangedListener);
-    method public void sendWallpaperCommand(android.os.IBinder, String, int, int, int, android.os.Bundle);
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void setBitmap(android.graphics.Bitmap) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setBitmap(android.graphics.Bitmap, android.graphics.Rect, boolean) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setBitmap(android.graphics.Bitmap, android.graphics.Rect, boolean, int) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER_HINTS) public void setDisplayPadding(android.graphics.Rect);
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void setResource(@RawRes int) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setResource(@RawRes int, int) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void setStream(java.io.InputStream) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setStream(java.io.InputStream, android.graphics.Rect, boolean) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setStream(java.io.InputStream, android.graphics.Rect, boolean, int) throws java.io.IOException;
-    method public void setWallpaperOffsetSteps(float, float);
-    method public void setWallpaperOffsets(android.os.IBinder, float, float);
-    method public void suggestDesiredDimensions(int, int);
-    field public static final String ACTION_CHANGE_LIVE_WALLPAPER = "android.service.wallpaper.CHANGE_LIVE_WALLPAPER";
-    field public static final String ACTION_CROP_AND_SET_WALLPAPER = "android.service.wallpaper.CROP_AND_SET_WALLPAPER";
-    field public static final String ACTION_LIVE_WALLPAPER_CHOOSER = "android.service.wallpaper.LIVE_WALLPAPER_CHOOSER";
-    field public static final String COMMAND_DROP = "android.home.drop";
-    field public static final String COMMAND_SECONDARY_TAP = "android.wallpaper.secondaryTap";
-    field public static final String COMMAND_TAP = "android.wallpaper.tap";
-    field public static final String EXTRA_LIVE_WALLPAPER_COMPONENT = "android.service.wallpaper.extra.LIVE_WALLPAPER_COMPONENT";
-    field public static final int FLAG_LOCK = 2; // 0x2
-    field public static final int FLAG_SYSTEM = 1; // 0x1
-    field public static final String WALLPAPER_PREVIEW_META_DATA = "android.wallpaper.preview";
-  }
-
-  public static interface WallpaperManager.OnColorsChangedListener {
-    method public void onColorsChanged(android.app.WallpaperColors, int);
-  }
-
-  public interface ZygotePreload {
-    method public void doPreload(@NonNull android.content.pm.ApplicationInfo);
-  }
-
-}
-
-package android.app.admin {
-
-  public final class ConnectEvent extends android.app.admin.NetworkEvent implements android.os.Parcelable {
-    method public java.net.InetAddress getInetAddress();
-    method public int getPort();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.ConnectEvent> CREATOR;
-  }
-
-  public class DelegatedAdminReceiver extends android.content.BroadcastReceiver {
-    ctor public DelegatedAdminReceiver();
-    method @Nullable public String onChoosePrivateKeyAlias(@NonNull android.content.Context, @NonNull android.content.Intent, int, @Nullable android.net.Uri, @Nullable String);
-    method public void onNetworkLogsAvailable(@NonNull android.content.Context, @NonNull android.content.Intent, long, @IntRange(from=1) int);
-    method public final void onReceive(@NonNull android.content.Context, @NonNull android.content.Intent);
-  }
-
-  public final class DeviceAdminInfo implements android.os.Parcelable {
-    ctor public DeviceAdminInfo(android.content.Context, android.content.pm.ResolveInfo) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public int describeContents();
-    method public void dump(android.util.Printer, String);
-    method public android.content.pm.ActivityInfo getActivityInfo();
-    method @NonNull public android.content.ComponentName getComponent();
-    method public String getPackageName();
-    method public String getReceiverName();
-    method public String getTagForPolicy(int);
-    method public boolean isVisible();
-    method public CharSequence loadDescription(android.content.pm.PackageManager) throws android.content.res.Resources.NotFoundException;
-    method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
-    method public CharSequence loadLabel(android.content.pm.PackageManager);
-    method public boolean supportsTransferOwnership();
-    method public boolean usesPolicy(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.DeviceAdminInfo> CREATOR;
-    field public static final int USES_ENCRYPTED_STORAGE = 7; // 0x7
-    field public static final int USES_POLICY_DISABLE_CAMERA = 8; // 0x8
-    field public static final int USES_POLICY_DISABLE_KEYGUARD_FEATURES = 9; // 0x9
-    field public static final int USES_POLICY_EXPIRE_PASSWORD = 6; // 0x6
-    field public static final int USES_POLICY_FORCE_LOCK = 3; // 0x3
-    field public static final int USES_POLICY_LIMIT_PASSWORD = 0; // 0x0
-    field public static final int USES_POLICY_RESET_PASSWORD = 2; // 0x2
-    field public static final int USES_POLICY_WATCH_LOGIN = 1; // 0x1
-    field public static final int USES_POLICY_WIPE_DATA = 4; // 0x4
-  }
-
-  public class DeviceAdminReceiver extends android.content.BroadcastReceiver {
-    ctor public DeviceAdminReceiver();
-    method @NonNull public android.app.admin.DevicePolicyManager getManager(@NonNull android.content.Context);
-    method @NonNull public android.content.ComponentName getWho(@NonNull android.content.Context);
-    method public void onBugreportFailed(@NonNull android.content.Context, @NonNull android.content.Intent, int);
-    method public void onBugreportShared(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull String);
-    method public void onBugreportSharingDeclined(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method @Nullable public String onChoosePrivateKeyAlias(@NonNull android.content.Context, @NonNull android.content.Intent, int, @Nullable android.net.Uri, @Nullable String);
-    method @Nullable public CharSequence onDisableRequested(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method public void onDisabled(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method public void onEnabled(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method public void onLockTaskModeEntering(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull String);
-    method public void onLockTaskModeExiting(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method public void onNetworkLogsAvailable(@NonNull android.content.Context, @NonNull android.content.Intent, long, @IntRange(from=1) int);
-    method @Deprecated public void onPasswordChanged(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method public void onPasswordChanged(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
-    method @Deprecated public void onPasswordExpiring(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method public void onPasswordExpiring(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
-    method @Deprecated public void onPasswordFailed(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method public void onPasswordFailed(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
-    method @Deprecated public void onPasswordSucceeded(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method public void onPasswordSucceeded(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
-    method public void onProfileProvisioningComplete(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method @Deprecated public void onReadyForUserInitialization(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method public void onReceive(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method public void onSecurityLogsAvailable(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method public void onSystemUpdatePending(@NonNull android.content.Context, @NonNull android.content.Intent, long);
-    method public void onTransferAffiliatedProfileOwnershipComplete(@NonNull android.content.Context, @NonNull android.os.UserHandle);
-    method public void onTransferOwnershipComplete(@NonNull android.content.Context, @Nullable android.os.PersistableBundle);
-    method public void onUserAdded(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
-    method public void onUserRemoved(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
-    method public void onUserStarted(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
-    method public void onUserStopped(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
-    method public void onUserSwitched(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
-    field public static final String ACTION_CHOOSE_PRIVATE_KEY_ALIAS = "android.app.action.CHOOSE_PRIVATE_KEY_ALIAS";
-    field public static final String ACTION_DEVICE_ADMIN_DISABLED = "android.app.action.DEVICE_ADMIN_DISABLED";
-    field public static final String ACTION_DEVICE_ADMIN_DISABLE_REQUESTED = "android.app.action.DEVICE_ADMIN_DISABLE_REQUESTED";
-    field public static final String ACTION_DEVICE_ADMIN_ENABLED = "android.app.action.DEVICE_ADMIN_ENABLED";
-    field public static final String ACTION_LOCK_TASK_ENTERING = "android.app.action.LOCK_TASK_ENTERING";
-    field public static final String ACTION_LOCK_TASK_EXITING = "android.app.action.LOCK_TASK_EXITING";
-    field public static final String ACTION_NETWORK_LOGS_AVAILABLE = "android.app.action.NETWORK_LOGS_AVAILABLE";
-    field public static final String ACTION_PASSWORD_CHANGED = "android.app.action.ACTION_PASSWORD_CHANGED";
-    field public static final String ACTION_PASSWORD_EXPIRING = "android.app.action.ACTION_PASSWORD_EXPIRING";
-    field public static final String ACTION_PASSWORD_FAILED = "android.app.action.ACTION_PASSWORD_FAILED";
-    field public static final String ACTION_PASSWORD_SUCCEEDED = "android.app.action.ACTION_PASSWORD_SUCCEEDED";
-    field public static final String ACTION_PROFILE_PROVISIONING_COMPLETE = "android.app.action.PROFILE_PROVISIONING_COMPLETE";
-    field public static final int BUGREPORT_FAILURE_FAILED_COMPLETING = 0; // 0x0
-    field public static final int BUGREPORT_FAILURE_FILE_NO_LONGER_AVAILABLE = 1; // 0x1
-    field public static final String DEVICE_ADMIN_META_DATA = "android.app.device_admin";
-    field public static final String EXTRA_DISABLE_WARNING = "android.app.extra.DISABLE_WARNING";
-    field public static final String EXTRA_LOCK_TASK_PACKAGE = "android.app.extra.LOCK_TASK_PACKAGE";
-    field public static final String EXTRA_TRANSFER_OWNERSHIP_ADMIN_EXTRAS_BUNDLE = "android.app.extra.TRANSFER_OWNERSHIP_ADMIN_EXTRAS_BUNDLE";
-  }
-
-  public class DeviceAdminService extends android.app.Service {
-    ctor public DeviceAdminService();
-    method public final android.os.IBinder onBind(android.content.Intent);
-  }
-
-  public class DevicePolicyManager {
-    method public void addCrossProfileIntentFilter(@NonNull android.content.ComponentName, android.content.IntentFilter, int);
-    method public boolean addCrossProfileWidgetProvider(@NonNull android.content.ComponentName, String);
-    method public int addOverrideApn(@NonNull android.content.ComponentName, @NonNull android.telephony.data.ApnSetting);
-    method public void addPersistentPreferredActivity(@NonNull android.content.ComponentName, android.content.IntentFilter, @NonNull android.content.ComponentName);
-    method public void addUserRestriction(@NonNull android.content.ComponentName, String);
-    method public boolean bindDeviceAdminServiceAsUser(@NonNull android.content.ComponentName, android.content.Intent, @NonNull android.content.ServiceConnection, int, @NonNull android.os.UserHandle);
-    method public void clearApplicationUserData(@NonNull android.content.ComponentName, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.app.admin.DevicePolicyManager.OnClearApplicationUserDataListener);
-    method public void clearCrossProfileIntentFilters(@NonNull android.content.ComponentName);
-    method @Deprecated public void clearDeviceOwnerApp(String);
-    method public void clearPackagePersistentPreferredActivities(@NonNull android.content.ComponentName, String);
-    method @Deprecated public void clearProfileOwner(@NonNull android.content.ComponentName);
-    method public boolean clearResetPasswordToken(android.content.ComponentName);
-    method public void clearUserRestriction(@NonNull android.content.ComponentName, String);
-    method public android.content.Intent createAdminSupportIntent(@NonNull String);
-    method @Nullable public android.os.UserHandle createAndManageUser(@NonNull android.content.ComponentName, @NonNull String, @NonNull android.content.ComponentName, @Nullable android.os.PersistableBundle, int);
-    method public void enableSystemApp(@NonNull android.content.ComponentName, String);
-    method public int enableSystemApp(@NonNull android.content.ComponentName, android.content.Intent);
-    method public android.security.AttestedKeyPair generateKeyPair(@Nullable android.content.ComponentName, @NonNull String, @NonNull android.security.keystore.KeyGenParameterSpec, int);
-    method @Nullable public String[] getAccountTypesWithManagementDisabled();
-    method @Nullable public java.util.List<android.content.ComponentName> getActiveAdmins();
-    method @NonNull public java.util.Set<java.lang.String> getAffiliationIds(@NonNull android.content.ComponentName);
-    method @Nullable public java.util.Set<java.lang.String> getAlwaysOnVpnLockdownWhitelist(@NonNull android.content.ComponentName);
-    method @Nullable public String getAlwaysOnVpnPackage(@NonNull android.content.ComponentName);
-    method @NonNull @WorkerThread public android.os.Bundle getApplicationRestrictions(@Nullable android.content.ComponentName, String);
-    method @Deprecated @Nullable public String getApplicationRestrictionsManagingPackage(@NonNull android.content.ComponentName);
-    method public boolean getAutoTimeEnabled(@NonNull android.content.ComponentName);
-    method @Deprecated public boolean getAutoTimeRequired();
-    method public boolean getAutoTimeZoneEnabled(@NonNull android.content.ComponentName);
-    method @NonNull public java.util.List<android.os.UserHandle> getBindDeviceAdminTargetUsers(@NonNull android.content.ComponentName);
-    method public boolean getBluetoothContactSharingDisabled(@NonNull android.content.ComponentName);
-    method public boolean getCameraDisabled(@Nullable android.content.ComponentName);
-    method @Deprecated @Nullable public String getCertInstallerPackage(@NonNull android.content.ComponentName) throws java.lang.SecurityException;
-    method @Nullable public java.util.Set<java.lang.String> getCrossProfileCalendarPackages(@NonNull android.content.ComponentName);
-    method public boolean getCrossProfileCallerIdDisabled(@NonNull android.content.ComponentName);
-    method public boolean getCrossProfileContactsSearchDisabled(@NonNull android.content.ComponentName);
-    method @NonNull public java.util.Set<java.lang.String> getCrossProfilePackages(@NonNull android.content.ComponentName);
-    method @NonNull public java.util.List<java.lang.String> getCrossProfileWidgetProviders(@NonNull android.content.ComponentName);
-    method public int getCurrentFailedPasswordAttempts();
-    method @Nullable public java.util.List<java.lang.String> getDelegatePackages(@NonNull android.content.ComponentName, @NonNull String);
-    method @NonNull public java.util.List<java.lang.String> getDelegatedScopes(@Nullable android.content.ComponentName, @NonNull String);
-    method public CharSequence getDeviceOwnerLockScreenInfo();
-    method public CharSequence getEndUserSessionMessage(@NonNull android.content.ComponentName);
-    method @Nullable public android.app.admin.FactoryResetProtectionPolicy getFactoryResetProtectionPolicy(@Nullable android.content.ComponentName);
-    method @Nullable public String getGlobalPrivateDnsHost(@NonNull android.content.ComponentName);
-    method public int getGlobalPrivateDnsMode(@NonNull android.content.ComponentName);
-    method @NonNull public java.util.List<byte[]> getInstalledCaCerts(@Nullable android.content.ComponentName);
-    method @Nullable public java.util.List<java.lang.String> getKeepUninstalledPackages(@Nullable android.content.ComponentName);
-    method public int getKeyguardDisabledFeatures(@Nullable android.content.ComponentName);
-    method public int getLockTaskFeatures(@NonNull android.content.ComponentName);
-    method @NonNull public String[] getLockTaskPackages(@NonNull android.content.ComponentName);
-    method @Nullable public CharSequence getLongSupportMessage(@NonNull android.content.ComponentName);
-    method public long getManagedProfileMaximumTimeOff(@NonNull android.content.ComponentName);
-    method public int getMaximumFailedPasswordsForWipe(@Nullable android.content.ComponentName);
-    method public long getMaximumTimeToLock(@Nullable android.content.ComponentName);
-    method @NonNull public java.util.List<java.lang.String> getMeteredDataDisabledPackages(@NonNull android.content.ComponentName);
-    method @ColorInt public int getOrganizationColor(@NonNull android.content.ComponentName);
-    method @Nullable public CharSequence getOrganizationName(@NonNull android.content.ComponentName);
-    method public java.util.List<android.telephony.data.ApnSetting> getOverrideApns(@NonNull android.content.ComponentName);
-    method @NonNull public android.app.admin.DevicePolicyManager getParentProfileInstance(@NonNull android.content.ComponentName);
-    method @RequiresPermission(android.Manifest.permission.REQUEST_PASSWORD_COMPLEXITY) public int getPasswordComplexity();
-    method public long getPasswordExpiration(@Nullable android.content.ComponentName);
-    method public long getPasswordExpirationTimeout(@Nullable android.content.ComponentName);
-    method public int getPasswordHistoryLength(@Nullable android.content.ComponentName);
-    method public int getPasswordMaximumLength(int);
-    method public int getPasswordMinimumLength(@Nullable android.content.ComponentName);
-    method public int getPasswordMinimumLetters(@Nullable android.content.ComponentName);
-    method public int getPasswordMinimumLowerCase(@Nullable android.content.ComponentName);
-    method public int getPasswordMinimumNonLetter(@Nullable android.content.ComponentName);
-    method public int getPasswordMinimumNumeric(@Nullable android.content.ComponentName);
-    method public int getPasswordMinimumSymbols(@Nullable android.content.ComponentName);
-    method public int getPasswordMinimumUpperCase(@Nullable android.content.ComponentName);
-    method public int getPasswordQuality(@Nullable android.content.ComponentName);
-    method @Nullable public android.app.admin.SystemUpdateInfo getPendingSystemUpdate(@NonNull android.content.ComponentName);
-    method public int getPermissionGrantState(@Nullable android.content.ComponentName, @NonNull String, @NonNull String);
-    method public int getPermissionPolicy(android.content.ComponentName);
-    method @Nullable public java.util.List<java.lang.String> getPermittedAccessibilityServices(@NonNull android.content.ComponentName);
-    method @Nullable public java.util.List<java.lang.String> getPermittedCrossProfileNotificationListeners(@NonNull android.content.ComponentName);
-    method @Nullable public java.util.List<java.lang.String> getPermittedInputMethods(@NonNull android.content.ComponentName);
-    method public int getPersonalAppsSuspendedReasons(@NonNull android.content.ComponentName);
-    method public long getRequiredStrongAuthTimeout(@Nullable android.content.ComponentName);
-    method public boolean getScreenCaptureDisabled(@Nullable android.content.ComponentName);
-    method public java.util.List<android.os.UserHandle> getSecondaryUsers(@NonNull android.content.ComponentName);
-    method public CharSequence getShortSupportMessage(@NonNull android.content.ComponentName);
-    method public CharSequence getStartUserSessionMessage(@NonNull android.content.ComponentName);
-    method @Deprecated public boolean getStorageEncryption(@Nullable android.content.ComponentName);
-    method public int getStorageEncryptionStatus();
-    method @Nullable public android.app.admin.SystemUpdatePolicy getSystemUpdatePolicy();
-    method @Nullable public android.os.PersistableBundle getTransferOwnershipBundle();
-    method @Nullable public java.util.List<android.os.PersistableBundle> getTrustAgentConfiguration(@Nullable android.content.ComponentName, @NonNull android.content.ComponentName);
-    method @NonNull public java.util.List<java.lang.String> getUserControlDisabledPackages(@NonNull android.content.ComponentName);
-    method @NonNull public android.os.Bundle getUserRestrictions(@NonNull android.content.ComponentName);
-    method @Nullable public String getWifiMacAddress(@NonNull android.content.ComponentName);
-    method public boolean grantKeyPairToApp(@Nullable android.content.ComponentName, @NonNull String, @NonNull String);
-    method public boolean hasCaCertInstalled(@Nullable android.content.ComponentName, byte[]);
-    method public boolean hasGrantedPolicy(@NonNull android.content.ComponentName, int);
-    method public boolean hasLockdownAdminConfiguredNetworks(@NonNull android.content.ComponentName);
-    method public boolean installCaCert(@Nullable android.content.ComponentName, byte[]);
-    method public boolean installExistingPackage(@NonNull android.content.ComponentName, String);
-    method public boolean installKeyPair(@Nullable android.content.ComponentName, @NonNull java.security.PrivateKey, @NonNull java.security.cert.Certificate, @NonNull String);
-    method public boolean installKeyPair(@Nullable android.content.ComponentName, @NonNull java.security.PrivateKey, @NonNull java.security.cert.Certificate[], @NonNull String, boolean);
-    method public boolean installKeyPair(@Nullable android.content.ComponentName, @NonNull java.security.PrivateKey, @NonNull java.security.cert.Certificate[], @NonNull String, int);
-    method public void installSystemUpdate(@NonNull android.content.ComponentName, @NonNull android.net.Uri, @NonNull java.util.concurrent.Executor, @NonNull android.app.admin.DevicePolicyManager.InstallSystemUpdateCallback);
-    method public boolean isActivePasswordSufficient();
-    method public boolean isAdminActive(@NonNull android.content.ComponentName);
-    method public boolean isAffiliatedUser();
-    method public boolean isAlwaysOnVpnLockdownEnabled(@NonNull android.content.ComponentName);
-    method public boolean isApplicationHidden(@NonNull android.content.ComponentName, String);
-    method public boolean isBackupServiceEnabled(@NonNull android.content.ComponentName);
-    method @Deprecated public boolean isCallerApplicationRestrictionsManagingPackage();
-    method public boolean isCommonCriteriaModeEnabled(@Nullable android.content.ComponentName);
-    method public boolean isDeviceIdAttestationSupported();
-    method public boolean isDeviceOwnerApp(String);
-    method public boolean isEphemeralUser(@NonNull android.content.ComponentName);
-    method public boolean isLockTaskPermitted(String);
-    method public boolean isLogoutEnabled();
-    method public boolean isManagedProfile(@NonNull android.content.ComponentName);
-    method public boolean isMasterVolumeMuted(@NonNull android.content.ComponentName);
-    method public boolean isNetworkLoggingEnabled(@Nullable android.content.ComponentName);
-    method public boolean isOrganizationOwnedDeviceWithManagedProfile();
-    method public boolean isOverrideApnEnabled(@NonNull android.content.ComponentName);
-    method public boolean isPackageSuspended(@NonNull android.content.ComponentName, String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public boolean isProfileOwnerApp(String);
-    method public boolean isProvisioningAllowed(@NonNull String);
-    method public boolean isResetPasswordTokenActive(android.content.ComponentName);
-    method public boolean isSecurityLoggingEnabled(@Nullable android.content.ComponentName);
-    method public boolean isUninstallBlocked(@Nullable android.content.ComponentName, String);
-    method public boolean isUniqueDeviceAttestationSupported();
-    method public boolean isUsingUnifiedPassword(@NonNull android.content.ComponentName);
-    method public void lockNow();
-    method public void lockNow(int);
-    method public int logoutUser(@NonNull android.content.ComponentName);
-    method public void reboot(@NonNull android.content.ComponentName);
-    method public void removeActiveAdmin(@NonNull android.content.ComponentName);
-    method public boolean removeCrossProfileWidgetProvider(@NonNull android.content.ComponentName, String);
-    method public boolean removeKeyPair(@Nullable android.content.ComponentName, @NonNull String);
-    method public boolean removeOverrideApn(@NonNull android.content.ComponentName, int);
-    method public boolean removeUser(@NonNull android.content.ComponentName, @NonNull android.os.UserHandle);
-    method public boolean requestBugreport(@NonNull android.content.ComponentName);
-    method @Deprecated public boolean resetPassword(String, int);
-    method public boolean resetPasswordWithToken(@NonNull android.content.ComponentName, String, byte[], int);
-    method @Nullable public java.util.List<android.app.admin.NetworkEvent> retrieveNetworkLogs(@Nullable android.content.ComponentName, long);
-    method @Nullable public java.util.List<android.app.admin.SecurityLog.SecurityEvent> retrievePreRebootSecurityLogs(@NonNull android.content.ComponentName);
-    method @Nullable public java.util.List<android.app.admin.SecurityLog.SecurityEvent> retrieveSecurityLogs(@NonNull android.content.ComponentName);
-    method public boolean revokeKeyPairFromApp(@Nullable android.content.ComponentName, @NonNull String, @NonNull String);
-    method public void setAccountManagementDisabled(@NonNull android.content.ComponentName, String, boolean);
-    method public void setAffiliationIds(@NonNull android.content.ComponentName, @NonNull java.util.Set<java.lang.String>);
-    method public void setAlwaysOnVpnPackage(@NonNull android.content.ComponentName, @Nullable String, boolean) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public void setAlwaysOnVpnPackage(@NonNull android.content.ComponentName, @Nullable String, boolean, @Nullable java.util.Set<java.lang.String>) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public boolean setApplicationHidden(@NonNull android.content.ComponentName, String, boolean);
-    method @WorkerThread public void setApplicationRestrictions(@Nullable android.content.ComponentName, String, android.os.Bundle);
-    method @Deprecated public void setApplicationRestrictionsManagingPackage(@NonNull android.content.ComponentName, @Nullable String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public void setAutoTimeEnabled(@NonNull android.content.ComponentName, boolean);
-    method @Deprecated public void setAutoTimeRequired(@NonNull android.content.ComponentName, boolean);
-    method public void setAutoTimeZoneEnabled(@NonNull android.content.ComponentName, boolean);
-    method public void setBackupServiceEnabled(@NonNull android.content.ComponentName, boolean);
-    method public void setBluetoothContactSharingDisabled(@NonNull android.content.ComponentName, boolean);
-    method public void setCameraDisabled(@NonNull android.content.ComponentName, boolean);
-    method @Deprecated public void setCertInstallerPackage(@NonNull android.content.ComponentName, @Nullable String) throws java.lang.SecurityException;
-    method public void setCommonCriteriaModeEnabled(@NonNull android.content.ComponentName, boolean);
-    method public void setConfiguredNetworksLockdownState(@NonNull android.content.ComponentName, boolean);
-    method public void setCrossProfileCalendarPackages(@NonNull android.content.ComponentName, @Nullable java.util.Set<java.lang.String>);
-    method public void setCrossProfileCallerIdDisabled(@NonNull android.content.ComponentName, boolean);
-    method public void setCrossProfileContactsSearchDisabled(@NonNull android.content.ComponentName, boolean);
-    method public void setCrossProfilePackages(@NonNull android.content.ComponentName, @NonNull java.util.Set<java.lang.String>);
-    method public void setDefaultSmsApplication(@NonNull android.content.ComponentName, @NonNull String);
-    method public void setDelegatedScopes(@NonNull android.content.ComponentName, @NonNull String, @NonNull java.util.List<java.lang.String>);
-    method public void setDeviceOwnerLockScreenInfo(@NonNull android.content.ComponentName, CharSequence);
-    method public void setEndUserSessionMessage(@NonNull android.content.ComponentName, @Nullable CharSequence);
-    method public void setFactoryResetProtectionPolicy(@NonNull android.content.ComponentName, @Nullable android.app.admin.FactoryResetProtectionPolicy);
-    method public int setGlobalPrivateDnsModeOpportunistic(@NonNull android.content.ComponentName);
-    method @WorkerThread public int setGlobalPrivateDnsModeSpecifiedHost(@NonNull android.content.ComponentName, @NonNull String);
-    method public void setGlobalSetting(@NonNull android.content.ComponentName, String, String);
-    method public void setKeepUninstalledPackages(@Nullable android.content.ComponentName, @NonNull java.util.List<java.lang.String>);
-    method public boolean setKeyPairCertificate(@Nullable android.content.ComponentName, @NonNull String, @NonNull java.util.List<java.security.cert.Certificate>, boolean);
-    method public boolean setKeyguardDisabled(@NonNull android.content.ComponentName, boolean);
-    method public void setKeyguardDisabledFeatures(@NonNull android.content.ComponentName, int);
-    method public void setLocationEnabled(@NonNull android.content.ComponentName, boolean);
-    method public void setLockTaskFeatures(@NonNull android.content.ComponentName, int);
-    method public void setLockTaskPackages(@NonNull android.content.ComponentName, @NonNull String[]) throws java.lang.SecurityException;
-    method public void setLogoutEnabled(@NonNull android.content.ComponentName, boolean);
-    method public void setLongSupportMessage(@NonNull android.content.ComponentName, @Nullable CharSequence);
-    method public void setManagedProfileMaximumTimeOff(@NonNull android.content.ComponentName, long);
-    method public void setMasterVolumeMuted(@NonNull android.content.ComponentName, boolean);
-    method public void setMaximumFailedPasswordsForWipe(@NonNull android.content.ComponentName, int);
-    method public void setMaximumTimeToLock(@NonNull android.content.ComponentName, long);
-    method @NonNull public java.util.List<java.lang.String> setMeteredDataDisabledPackages(@NonNull android.content.ComponentName, @NonNull java.util.List<java.lang.String>);
-    method public void setNetworkLoggingEnabled(@Nullable android.content.ComponentName, boolean);
-    method public void setOrganizationColor(@NonNull android.content.ComponentName, int);
-    method public void setOrganizationName(@NonNull android.content.ComponentName, @Nullable CharSequence);
-    method public void setOverrideApnsEnabled(@NonNull android.content.ComponentName, boolean);
-    method @NonNull public String[] setPackagesSuspended(@NonNull android.content.ComponentName, @NonNull String[], boolean);
-    method public void setPasswordExpirationTimeout(@NonNull android.content.ComponentName, long);
-    method public void setPasswordHistoryLength(@NonNull android.content.ComponentName, int);
-    method public void setPasswordMinimumLength(@NonNull android.content.ComponentName, int);
-    method public void setPasswordMinimumLetters(@NonNull android.content.ComponentName, int);
-    method public void setPasswordMinimumLowerCase(@NonNull android.content.ComponentName, int);
-    method public void setPasswordMinimumNonLetter(@NonNull android.content.ComponentName, int);
-    method public void setPasswordMinimumNumeric(@NonNull android.content.ComponentName, int);
-    method public void setPasswordMinimumSymbols(@NonNull android.content.ComponentName, int);
-    method public void setPasswordMinimumUpperCase(@NonNull android.content.ComponentName, int);
-    method public void setPasswordQuality(@NonNull android.content.ComponentName, int);
-    method public boolean setPermissionGrantState(@NonNull android.content.ComponentName, @NonNull String, @NonNull String, int);
-    method public void setPermissionPolicy(@NonNull android.content.ComponentName, int);
-    method public boolean setPermittedAccessibilityServices(@NonNull android.content.ComponentName, java.util.List<java.lang.String>);
-    method public boolean setPermittedCrossProfileNotificationListeners(@NonNull android.content.ComponentName, @Nullable java.util.List<java.lang.String>);
-    method public boolean setPermittedInputMethods(@NonNull android.content.ComponentName, java.util.List<java.lang.String>);
-    method public void setPersonalAppsSuspended(@NonNull android.content.ComponentName, boolean);
-    method public void setProfileEnabled(@NonNull android.content.ComponentName);
-    method public void setProfileName(@NonNull android.content.ComponentName, String);
-    method public void setRecommendedGlobalProxy(@NonNull android.content.ComponentName, @Nullable android.net.ProxyInfo);
-    method public void setRequiredStrongAuthTimeout(@NonNull android.content.ComponentName, long);
-    method public boolean setResetPasswordToken(android.content.ComponentName, byte[]);
-    method public void setRestrictionsProvider(@NonNull android.content.ComponentName, @Nullable android.content.ComponentName);
-    method public void setScreenCaptureDisabled(@NonNull android.content.ComponentName, boolean);
-    method public void setSecureSetting(@NonNull android.content.ComponentName, String, String);
-    method public void setSecurityLoggingEnabled(@NonNull android.content.ComponentName, boolean);
-    method public void setShortSupportMessage(@NonNull android.content.ComponentName, @Nullable CharSequence);
-    method public void setStartUserSessionMessage(@NonNull android.content.ComponentName, @Nullable CharSequence);
-    method public boolean setStatusBarDisabled(@NonNull android.content.ComponentName, boolean);
-    method @Deprecated public int setStorageEncryption(@NonNull android.content.ComponentName, boolean);
-    method public void setSystemSetting(@NonNull android.content.ComponentName, @NonNull String, String);
-    method public void setSystemUpdatePolicy(@NonNull android.content.ComponentName, android.app.admin.SystemUpdatePolicy);
-    method public boolean setTime(@NonNull android.content.ComponentName, long);
-    method public boolean setTimeZone(@NonNull android.content.ComponentName, String);
-    method public void setTrustAgentConfiguration(@NonNull android.content.ComponentName, @NonNull android.content.ComponentName, android.os.PersistableBundle);
-    method public void setUninstallBlocked(@Nullable android.content.ComponentName, String, boolean);
-    method public void setUserControlDisabledPackages(@NonNull android.content.ComponentName, @NonNull java.util.List<java.lang.String>);
-    method public void setUserIcon(@NonNull android.content.ComponentName, android.graphics.Bitmap);
-    method public int startUserInBackground(@NonNull android.content.ComponentName, @NonNull android.os.UserHandle);
-    method public int stopUser(@NonNull android.content.ComponentName, @NonNull android.os.UserHandle);
-    method public boolean switchUser(@NonNull android.content.ComponentName, @Nullable android.os.UserHandle);
-    method public void transferOwnership(@NonNull android.content.ComponentName, @NonNull android.content.ComponentName, @Nullable android.os.PersistableBundle);
-    method public void uninstallAllUserCaCerts(@Nullable android.content.ComponentName);
-    method public void uninstallCaCert(@Nullable android.content.ComponentName, byte[]);
-    method public boolean updateOverrideApn(@NonNull android.content.ComponentName, int, @NonNull android.telephony.data.ApnSetting);
-    method public void wipeData(int);
-    method public void wipeData(int, @NonNull CharSequence);
-    field public static final String ACTION_ADD_DEVICE_ADMIN = "android.app.action.ADD_DEVICE_ADMIN";
-    field public static final String ACTION_ADMIN_POLICY_COMPLIANCE = "android.app.action.ADMIN_POLICY_COMPLIANCE";
-    field public static final String ACTION_APPLICATION_DELEGATION_SCOPES_CHANGED = "android.app.action.APPLICATION_DELEGATION_SCOPES_CHANGED";
-    field public static final String ACTION_CHECK_POLICY_COMPLIANCE = "android.app.action.CHECK_POLICY_COMPLIANCE";
-    field public static final String ACTION_DEVICE_ADMIN_SERVICE = "android.app.action.DEVICE_ADMIN_SERVICE";
-    field public static final String ACTION_DEVICE_OWNER_CHANGED = "android.app.action.DEVICE_OWNER_CHANGED";
-    field public static final String ACTION_GET_PROVISIONING_MODE = "android.app.action.GET_PROVISIONING_MODE";
-    field public static final String ACTION_MANAGED_PROFILE_PROVISIONED = "android.app.action.MANAGED_PROFILE_PROVISIONED";
-    field public static final String ACTION_PROFILE_OWNER_CHANGED = "android.app.action.PROFILE_OWNER_CHANGED";
-    field public static final String ACTION_PROVISIONING_SUCCESSFUL = "android.app.action.PROVISIONING_SUCCESSFUL";
-    field public static final String ACTION_PROVISION_MANAGED_DEVICE = "android.app.action.PROVISION_MANAGED_DEVICE";
-    field public static final String ACTION_PROVISION_MANAGED_PROFILE = "android.app.action.PROVISION_MANAGED_PROFILE";
-    field public static final String ACTION_SET_NEW_PARENT_PROFILE_PASSWORD = "android.app.action.SET_NEW_PARENT_PROFILE_PASSWORD";
-    field public static final String ACTION_SET_NEW_PASSWORD = "android.app.action.SET_NEW_PASSWORD";
-    field public static final String ACTION_START_ENCRYPTION = "android.app.action.START_ENCRYPTION";
-    field public static final String ACTION_SYSTEM_UPDATE_POLICY_CHANGED = "android.app.action.SYSTEM_UPDATE_POLICY_CHANGED";
-    field public static final String DELEGATION_APP_RESTRICTIONS = "delegation-app-restrictions";
-    field public static final String DELEGATION_BLOCK_UNINSTALL = "delegation-block-uninstall";
-    field public static final String DELEGATION_CERT_INSTALL = "delegation-cert-install";
-    field public static final String DELEGATION_CERT_SELECTION = "delegation-cert-selection";
-    field public static final String DELEGATION_ENABLE_SYSTEM_APP = "delegation-enable-system-app";
-    field public static final String DELEGATION_INSTALL_EXISTING_PACKAGE = "delegation-install-existing-package";
-    field public static final String DELEGATION_KEEP_UNINSTALLED_PACKAGES = "delegation-keep-uninstalled-packages";
-    field public static final String DELEGATION_NETWORK_LOGGING = "delegation-network-logging";
-    field public static final String DELEGATION_PACKAGE_ACCESS = "delegation-package-access";
-    field public static final String DELEGATION_PERMISSION_GRANT = "delegation-permission-grant";
-    field public static final int ENCRYPTION_STATUS_ACTIVATING = 2; // 0x2
-    field public static final int ENCRYPTION_STATUS_ACTIVE = 3; // 0x3
-    field public static final int ENCRYPTION_STATUS_ACTIVE_DEFAULT_KEY = 4; // 0x4
-    field public static final int ENCRYPTION_STATUS_ACTIVE_PER_USER = 5; // 0x5
-    field public static final int ENCRYPTION_STATUS_INACTIVE = 1; // 0x1
-    field public static final int ENCRYPTION_STATUS_UNSUPPORTED = 0; // 0x0
-    field public static final String EXTRA_ADD_EXPLANATION = "android.app.extra.ADD_EXPLANATION";
-    field public static final String EXTRA_DELEGATION_SCOPES = "android.app.extra.DELEGATION_SCOPES";
-    field public static final String EXTRA_DEVICE_ADMIN = "android.app.extra.DEVICE_ADMIN";
-    field @RequiresPermission(android.Manifest.permission.REQUEST_PASSWORD_COMPLEXITY) public static final String EXTRA_PASSWORD_COMPLEXITY = "android.app.extra.PASSWORD_COMPLEXITY";
-    field public static final String EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE = "android.app.extra.PROVISIONING_ACCOUNT_TO_MIGRATE";
-    field public static final String EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE = "android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE";
-    field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME = "android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME";
-    field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_MINIMUM_VERSION_CODE = "android.app.extra.PROVISIONING_DEVICE_ADMIN_MINIMUM_VERSION_CODE";
-    field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM";
-    field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER";
-    field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION";
-    field @Deprecated public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME";
-    field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM = "android.app.extra.PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM";
-    field public static final String EXTRA_PROVISIONING_DISCLAIMERS = "android.app.extra.PROVISIONING_DISCLAIMERS";
-    field public static final String EXTRA_PROVISIONING_DISCLAIMER_CONTENT = "android.app.extra.PROVISIONING_DISCLAIMER_CONTENT";
-    field public static final String EXTRA_PROVISIONING_DISCLAIMER_HEADER = "android.app.extra.PROVISIONING_DISCLAIMER_HEADER";
-    field @Deprecated public static final String EXTRA_PROVISIONING_EMAIL_ADDRESS = "android.app.extra.PROVISIONING_EMAIL_ADDRESS";
-    field public static final String EXTRA_PROVISIONING_IMEI = "android.app.extra.PROVISIONING_IMEI";
-    field public static final String EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION = "android.app.extra.PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION";
-    field public static final String EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED = "android.app.extra.PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED";
-    field public static final String EXTRA_PROVISIONING_LOCALE = "android.app.extra.PROVISIONING_LOCALE";
-    field public static final String EXTRA_PROVISIONING_LOCAL_TIME = "android.app.extra.PROVISIONING_LOCAL_TIME";
-    field public static final String EXTRA_PROVISIONING_LOGO_URI = "android.app.extra.PROVISIONING_LOGO_URI";
-    field public static final String EXTRA_PROVISIONING_MAIN_COLOR = "android.app.extra.PROVISIONING_MAIN_COLOR";
-    field public static final String EXTRA_PROVISIONING_MODE = "android.app.extra.PROVISIONING_MODE";
-    field public static final String EXTRA_PROVISIONING_SERIAL_NUMBER = "android.app.extra.PROVISIONING_SERIAL_NUMBER";
-    field public static final String EXTRA_PROVISIONING_SKIP_EDUCATION_SCREENS = "android.app.extra.PROVISIONING_SKIP_EDUCATION_SCREENS";
-    field public static final String EXTRA_PROVISIONING_SKIP_ENCRYPTION = "android.app.extra.PROVISIONING_SKIP_ENCRYPTION";
-    field public static final String EXTRA_PROVISIONING_SKIP_USER_CONSENT = "android.app.extra.PROVISIONING_SKIP_USER_CONSENT";
-    field public static final String EXTRA_PROVISIONING_TIME_ZONE = "android.app.extra.PROVISIONING_TIME_ZONE";
-    field public static final String EXTRA_PROVISIONING_WIFI_ANONYMOUS_IDENTITY = "android.app.extra.PROVISIONING_WIFI_ANONYMOUS_IDENTITY";
-    field public static final String EXTRA_PROVISIONING_WIFI_CA_CERTIFICATE = "android.app.extra.PROVISIONING_WIFI_CA_CERTIFICATE";
-    field public static final String EXTRA_PROVISIONING_WIFI_DOMAIN = "android.app.extra.PROVISIONING_WIFI_DOMAIN";
-    field public static final String EXTRA_PROVISIONING_WIFI_EAP_METHOD = "android.app.extra.PROVISIONING_WIFI_EAP_METHOD";
-    field public static final String EXTRA_PROVISIONING_WIFI_HIDDEN = "android.app.extra.PROVISIONING_WIFI_HIDDEN";
-    field public static final String EXTRA_PROVISIONING_WIFI_IDENTITY = "android.app.extra.PROVISIONING_WIFI_IDENTITY";
-    field public static final String EXTRA_PROVISIONING_WIFI_PAC_URL = "android.app.extra.PROVISIONING_WIFI_PAC_URL";
-    field public static final String EXTRA_PROVISIONING_WIFI_PASSWORD = "android.app.extra.PROVISIONING_WIFI_PASSWORD";
-    field public static final String EXTRA_PROVISIONING_WIFI_PHASE2_AUTH = "android.app.extra.PROVISIONING_WIFI_PHASE2_AUTH";
-    field public static final String EXTRA_PROVISIONING_WIFI_PROXY_BYPASS = "android.app.extra.PROVISIONING_WIFI_PROXY_BYPASS";
-    field public static final String EXTRA_PROVISIONING_WIFI_PROXY_HOST = "android.app.extra.PROVISIONING_WIFI_PROXY_HOST";
-    field public static final String EXTRA_PROVISIONING_WIFI_PROXY_PORT = "android.app.extra.PROVISIONING_WIFI_PROXY_PORT";
-    field public static final String EXTRA_PROVISIONING_WIFI_SECURITY_TYPE = "android.app.extra.PROVISIONING_WIFI_SECURITY_TYPE";
-    field public static final String EXTRA_PROVISIONING_WIFI_SSID = "android.app.extra.PROVISIONING_WIFI_SSID";
-    field public static final String EXTRA_PROVISIONING_WIFI_USER_CERTIFICATE = "android.app.extra.PROVISIONING_WIFI_USER_CERTIFICATE";
-    field public static final int FLAG_EVICT_CREDENTIAL_ENCRYPTION_KEY = 1; // 0x1
-    field public static final int FLAG_MANAGED_CAN_ACCESS_PARENT = 2; // 0x2
-    field public static final int FLAG_PARENT_CAN_ACCESS_MANAGED = 1; // 0x1
-    field public static final int ID_TYPE_BASE_INFO = 1; // 0x1
-    field public static final int ID_TYPE_IMEI = 4; // 0x4
-    field public static final int ID_TYPE_INDIVIDUAL_ATTESTATION = 16; // 0x10
-    field public static final int ID_TYPE_MEID = 8; // 0x8
-    field public static final int ID_TYPE_SERIAL = 2; // 0x2
-    field public static final int INSTALLKEY_REQUEST_CREDENTIALS_ACCESS = 1; // 0x1
-    field public static final int INSTALLKEY_SET_USER_SELECTABLE = 2; // 0x2
-    field public static final int KEYGUARD_DISABLE_BIOMETRICS = 416; // 0x1a0
-    field public static final int KEYGUARD_DISABLE_FACE = 128; // 0x80
-    field public static final int KEYGUARD_DISABLE_FEATURES_ALL = 2147483647; // 0x7fffffff
-    field public static final int KEYGUARD_DISABLE_FEATURES_NONE = 0; // 0x0
-    field public static final int KEYGUARD_DISABLE_FINGERPRINT = 32; // 0x20
-    field public static final int KEYGUARD_DISABLE_IRIS = 256; // 0x100
-    field public static final int KEYGUARD_DISABLE_REMOTE_INPUT = 64; // 0x40
-    field public static final int KEYGUARD_DISABLE_SECURE_CAMERA = 2; // 0x2
-    field public static final int KEYGUARD_DISABLE_SECURE_NOTIFICATIONS = 4; // 0x4
-    field public static final int KEYGUARD_DISABLE_TRUST_AGENTS = 16; // 0x10
-    field public static final int KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS = 8; // 0x8
-    field public static final int KEYGUARD_DISABLE_WIDGETS_ALL = 1; // 0x1
-    field public static final int LEAVE_ALL_SYSTEM_APPS_ENABLED = 16; // 0x10
-    field public static final int LOCK_TASK_FEATURE_BLOCK_ACTIVITY_START_IN_TASK = 64; // 0x40
-    field public static final int LOCK_TASK_FEATURE_GLOBAL_ACTIONS = 16; // 0x10
-    field public static final int LOCK_TASK_FEATURE_HOME = 4; // 0x4
-    field public static final int LOCK_TASK_FEATURE_KEYGUARD = 32; // 0x20
-    field public static final int LOCK_TASK_FEATURE_NONE = 0; // 0x0
-    field public static final int LOCK_TASK_FEATURE_NOTIFICATIONS = 2; // 0x2
-    field public static final int LOCK_TASK_FEATURE_OVERVIEW = 8; // 0x8
-    field public static final int LOCK_TASK_FEATURE_SYSTEM_INFO = 1; // 0x1
-    field public static final int MAKE_USER_EPHEMERAL = 2; // 0x2
-    field public static final String MIME_TYPE_PROVISIONING_NFC = "application/com.android.managedprovisioning";
-    field public static final int PASSWORD_COMPLEXITY_HIGH = 327680; // 0x50000
-    field public static final int PASSWORD_COMPLEXITY_LOW = 65536; // 0x10000
-    field public static final int PASSWORD_COMPLEXITY_MEDIUM = 196608; // 0x30000
-    field public static final int PASSWORD_COMPLEXITY_NONE = 0; // 0x0
-    field public static final int PASSWORD_QUALITY_ALPHABETIC = 262144; // 0x40000
-    field public static final int PASSWORD_QUALITY_ALPHANUMERIC = 327680; // 0x50000
-    field public static final int PASSWORD_QUALITY_BIOMETRIC_WEAK = 32768; // 0x8000
-    field public static final int PASSWORD_QUALITY_COMPLEX = 393216; // 0x60000
-    field public static final int PASSWORD_QUALITY_NUMERIC = 131072; // 0x20000
-    field public static final int PASSWORD_QUALITY_NUMERIC_COMPLEX = 196608; // 0x30000
-    field public static final int PASSWORD_QUALITY_SOMETHING = 65536; // 0x10000
-    field public static final int PASSWORD_QUALITY_UNSPECIFIED = 0; // 0x0
-    field public static final int PERMISSION_GRANT_STATE_DEFAULT = 0; // 0x0
-    field public static final int PERMISSION_GRANT_STATE_DENIED = 2; // 0x2
-    field public static final int PERMISSION_GRANT_STATE_GRANTED = 1; // 0x1
-    field public static final int PERMISSION_POLICY_AUTO_DENY = 2; // 0x2
-    field public static final int PERMISSION_POLICY_AUTO_GRANT = 1; // 0x1
-    field public static final int PERMISSION_POLICY_PROMPT = 0; // 0x0
-    field public static final int PERSONAL_APPS_NOT_SUSPENDED = 0; // 0x0
-    field public static final int PERSONAL_APPS_SUSPENDED_EXPLICITLY = 1; // 0x1
-    field public static final int PERSONAL_APPS_SUSPENDED_PROFILE_TIMEOUT = 2; // 0x2
-    field public static final String POLICY_DISABLE_CAMERA = "policy_disable_camera";
-    field public static final String POLICY_DISABLE_SCREEN_CAPTURE = "policy_disable_screen_capture";
-    field public static final int PRIVATE_DNS_MODE_OFF = 1; // 0x1
-    field public static final int PRIVATE_DNS_MODE_OPPORTUNISTIC = 2; // 0x2
-    field public static final int PRIVATE_DNS_MODE_PROVIDER_HOSTNAME = 3; // 0x3
-    field public static final int PRIVATE_DNS_MODE_UNKNOWN = 0; // 0x0
-    field public static final int PRIVATE_DNS_SET_ERROR_FAILURE_SETTING = 2; // 0x2
-    field public static final int PRIVATE_DNS_SET_ERROR_HOST_NOT_SERVING = 1; // 0x1
-    field public static final int PRIVATE_DNS_SET_NO_ERROR = 0; // 0x0
-    field public static final int PROVISIONING_MODE_FULLY_MANAGED_DEVICE = 1; // 0x1
-    field public static final int PROVISIONING_MODE_MANAGED_PROFILE = 2; // 0x2
-    field public static final int RESET_PASSWORD_DO_NOT_ASK_CREDENTIALS_ON_BOOT = 2; // 0x2
-    field public static final int RESET_PASSWORD_REQUIRE_ENTRY = 1; // 0x1
-    field public static final int SKIP_SETUP_WIZARD = 1; // 0x1
-    field public static final int WIPE_EUICC = 4; // 0x4
-    field public static final int WIPE_EXTERNAL_STORAGE = 1; // 0x1
-    field public static final int WIPE_RESET_PROTECTION_DATA = 2; // 0x2
-    field public static final int WIPE_SILENTLY = 8; // 0x8
-  }
-
-  public abstract static class DevicePolicyManager.InstallSystemUpdateCallback {
-    ctor public DevicePolicyManager.InstallSystemUpdateCallback();
-    method public void onInstallUpdateError(int, @NonNull String);
-    field public static final int UPDATE_ERROR_BATTERY_LOW = 5; // 0x5
-    field public static final int UPDATE_ERROR_FILE_NOT_FOUND = 4; // 0x4
-    field public static final int UPDATE_ERROR_INCORRECT_OS_VERSION = 2; // 0x2
-    field public static final int UPDATE_ERROR_UNKNOWN = 1; // 0x1
-    field public static final int UPDATE_ERROR_UPDATE_FILE_INVALID = 3; // 0x3
-  }
-
-  public static interface DevicePolicyManager.OnClearApplicationUserDataListener {
-    method public void onApplicationUserDataCleared(String, boolean);
-  }
-
-  public final class DnsEvent extends android.app.admin.NetworkEvent implements android.os.Parcelable {
-    method public String getHostname();
-    method public java.util.List<java.net.InetAddress> getInetAddresses();
-    method public int getTotalResolvedAddressCount();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.DnsEvent> CREATOR;
-  }
-
-  public final class FactoryResetProtectionPolicy implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public java.util.List<java.lang.String> getFactoryResetProtectionAccounts();
-    method public boolean isFactoryResetProtectionEnabled();
-    method public void writeToParcel(@NonNull android.os.Parcel, @Nullable int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.FactoryResetProtectionPolicy> CREATOR;
-  }
-
-  public static class FactoryResetProtectionPolicy.Builder {
-    ctor public FactoryResetProtectionPolicy.Builder();
-    method @NonNull public android.app.admin.FactoryResetProtectionPolicy build();
-    method @NonNull public android.app.admin.FactoryResetProtectionPolicy.Builder setFactoryResetProtectionAccounts(@NonNull java.util.List<java.lang.String>);
-    method @NonNull public android.app.admin.FactoryResetProtectionPolicy.Builder setFactoryResetProtectionEnabled(boolean);
-  }
-
-  public class FreezePeriod {
-    ctor public FreezePeriod(java.time.MonthDay, java.time.MonthDay);
-    method public java.time.MonthDay getEnd();
-    method public java.time.MonthDay getStart();
-  }
-
-  public abstract class NetworkEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getId();
-    method public String getPackageName();
-    method public long getTimestamp();
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.NetworkEvent> CREATOR;
-  }
-
-  public class SecurityLog {
-    ctor public SecurityLog();
-    field public static final int LEVEL_ERROR = 3; // 0x3
-    field public static final int LEVEL_INFO = 1; // 0x1
-    field public static final int LEVEL_WARNING = 2; // 0x2
-    field public static final int TAG_ADB_SHELL_CMD = 210002; // 0x33452
-    field public static final int TAG_ADB_SHELL_INTERACTIVE = 210001; // 0x33451
-    field public static final int TAG_APP_PROCESS_START = 210005; // 0x33455
-    field public static final int TAG_CAMERA_POLICY_SET = 210034; // 0x33472
-    field public static final int TAG_CERT_AUTHORITY_INSTALLED = 210029; // 0x3346d
-    field public static final int TAG_CERT_AUTHORITY_REMOVED = 210030; // 0x3346e
-    field public static final int TAG_CERT_VALIDATION_FAILURE = 210033; // 0x33471
-    field public static final int TAG_CRYPTO_SELF_TEST_COMPLETED = 210031; // 0x3346f
-    field public static final int TAG_KEYGUARD_DISABLED_FEATURES_SET = 210021; // 0x33465
-    field public static final int TAG_KEYGUARD_DISMISSED = 210006; // 0x33456
-    field public static final int TAG_KEYGUARD_DISMISS_AUTH_ATTEMPT = 210007; // 0x33457
-    field public static final int TAG_KEYGUARD_SECURED = 210008; // 0x33458
-    field public static final int TAG_KEY_DESTRUCTION = 210026; // 0x3346a
-    field public static final int TAG_KEY_GENERATED = 210024; // 0x33468
-    field public static final int TAG_KEY_IMPORT = 210025; // 0x33469
-    field public static final int TAG_KEY_INTEGRITY_VIOLATION = 210032; // 0x33470
-    field public static final int TAG_LOGGING_STARTED = 210011; // 0x3345b
-    field public static final int TAG_LOGGING_STOPPED = 210012; // 0x3345c
-    field public static final int TAG_LOG_BUFFER_SIZE_CRITICAL = 210015; // 0x3345f
-    field public static final int TAG_MAX_PASSWORD_ATTEMPTS_SET = 210020; // 0x33464
-    field public static final int TAG_MAX_SCREEN_LOCK_TIMEOUT_SET = 210019; // 0x33463
-    field public static final int TAG_MEDIA_MOUNT = 210013; // 0x3345d
-    field public static final int TAG_MEDIA_UNMOUNT = 210014; // 0x3345e
-    field public static final int TAG_OS_SHUTDOWN = 210010; // 0x3345a
-    field public static final int TAG_OS_STARTUP = 210009; // 0x33459
-    field public static final int TAG_PASSWORD_COMPLEXITY_SET = 210017; // 0x33461
-    field public static final int TAG_PASSWORD_EXPIRATION_SET = 210016; // 0x33460
-    field public static final int TAG_PASSWORD_HISTORY_LENGTH_SET = 210018; // 0x33462
-    field public static final int TAG_REMOTE_LOCK = 210022; // 0x33466
-    field public static final int TAG_SYNC_RECV_FILE = 210003; // 0x33453
-    field public static final int TAG_SYNC_SEND_FILE = 210004; // 0x33454
-    field public static final int TAG_USER_RESTRICTION_ADDED = 210027; // 0x3346b
-    field public static final int TAG_USER_RESTRICTION_REMOVED = 210028; // 0x3346c
-    field public static final int TAG_WIPE_FAILURE = 210023; // 0x33467
-  }
-
-  public static final class SecurityLog.SecurityEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method public Object getData();
-    method public long getId();
-    method public int getLogLevel();
-    method public int getTag();
-    method public long getTimeNanos();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.SecurityLog.SecurityEvent> CREATOR;
-  }
-
-  public final class SystemUpdateInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getReceivedTime();
-    method public int getSecurityPatchState();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.SystemUpdateInfo> CREATOR;
-    field public static final int SECURITY_PATCH_STATE_FALSE = 1; // 0x1
-    field public static final int SECURITY_PATCH_STATE_TRUE = 2; // 0x2
-    field public static final int SECURITY_PATCH_STATE_UNKNOWN = 0; // 0x0
-  }
-
-  public final class SystemUpdatePolicy implements android.os.Parcelable {
-    method public static android.app.admin.SystemUpdatePolicy createAutomaticInstallPolicy();
-    method public static android.app.admin.SystemUpdatePolicy createPostponeInstallPolicy();
-    method public static android.app.admin.SystemUpdatePolicy createWindowedInstallPolicy(int, int);
-    method public int describeContents();
-    method public java.util.List<android.app.admin.FreezePeriod> getFreezePeriods();
-    method public int getInstallWindowEnd();
-    method public int getInstallWindowStart();
-    method public int getPolicyType();
-    method public android.app.admin.SystemUpdatePolicy setFreezePeriods(java.util.List<android.app.admin.FreezePeriod>);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.SystemUpdatePolicy> CREATOR;
-    field public static final int TYPE_INSTALL_AUTOMATIC = 1; // 0x1
-    field public static final int TYPE_INSTALL_WINDOWED = 2; // 0x2
-    field public static final int TYPE_POSTPONE = 3; // 0x3
-  }
-
-  public static final class SystemUpdatePolicy.ValidationFailedException extends java.lang.IllegalArgumentException implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getErrorCode();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.SystemUpdatePolicy.ValidationFailedException> CREATOR;
-    field public static final int ERROR_COMBINED_FREEZE_PERIOD_TOO_CLOSE = 6; // 0x6
-    field public static final int ERROR_COMBINED_FREEZE_PERIOD_TOO_LONG = 5; // 0x5
-    field public static final int ERROR_DUPLICATE_OR_OVERLAP = 2; // 0x2
-    field public static final int ERROR_NEW_FREEZE_PERIOD_TOO_CLOSE = 4; // 0x4
-    field public static final int ERROR_NEW_FREEZE_PERIOD_TOO_LONG = 3; // 0x3
-    field public static final int ERROR_UNKNOWN = 1; // 0x1
-  }
-
-}
-
-package android.app.assist {
-
-  public class AssistContent implements android.os.Parcelable {
-    ctor public AssistContent();
-    method public int describeContents();
-    method public android.content.ClipData getClipData();
-    method public android.os.Bundle getExtras();
-    method public android.content.Intent getIntent();
-    method public String getStructuredData();
-    method public android.net.Uri getWebUri();
-    method public boolean isAppProvidedIntent();
-    method public boolean isAppProvidedWebUri();
-    method public void setClipData(android.content.ClipData);
-    method public void setIntent(android.content.Intent);
-    method public void setStructuredData(String);
-    method public void setWebUri(android.net.Uri);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.assist.AssistContent> CREATOR;
-  }
-
-  public class AssistStructure implements android.os.Parcelable {
-    ctor public AssistStructure();
-    method public int describeContents();
-    method public long getAcquisitionEndTime();
-    method public long getAcquisitionStartTime();
-    method public android.content.ComponentName getActivityComponent();
-    method public android.app.assist.AssistStructure.WindowNode getWindowNodeAt(int);
-    method public int getWindowNodeCount();
-    method public boolean isHomeActivity();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.assist.AssistStructure> CREATOR;
-  }
-
-  public static class AssistStructure.ViewNode {
-    method public float getAlpha();
-    method @Nullable public String[] getAutofillHints();
-    method @Nullable public android.view.autofill.AutofillId getAutofillId();
-    method @Nullable public CharSequence[] getAutofillOptions();
-    method public int getAutofillType();
-    method @Nullable public android.view.autofill.AutofillValue getAutofillValue();
-    method public android.app.assist.AssistStructure.ViewNode getChildAt(int);
-    method public int getChildCount();
-    method @Nullable public String getClassName();
-    method @Nullable public CharSequence getContentDescription();
-    method public float getElevation();
-    method @Nullable public android.os.Bundle getExtras();
-    method public int getHeight();
-    method @Nullable public String getHint();
-    method @Nullable public String getHintIdEntry();
-    method @Nullable public android.view.ViewStructure.HtmlInfo getHtmlInfo();
-    method public int getId();
-    method @Nullable public String getIdEntry();
-    method @Nullable public String getIdPackage();
-    method @Nullable public String getIdType();
-    method public int getImportantForAutofill();
-    method public int getInputType();
-    method public int getLeft();
-    method @Nullable public android.os.LocaleList getLocaleList();
-    method public int getMaxTextEms();
-    method public int getMaxTextLength();
-    method public int getMinTextEms();
-    method public int getScrollX();
-    method public int getScrollY();
-    method @Nullable public CharSequence getText();
-    method public int getTextBackgroundColor();
-    method public int getTextColor();
-    method @Nullable public String getTextIdEntry();
-    method @Nullable public int[] getTextLineBaselines();
-    method @Nullable public int[] getTextLineCharOffsets();
-    method public int getTextSelectionEnd();
-    method public int getTextSelectionStart();
-    method public float getTextSize();
-    method public int getTextStyle();
-    method public int getTop();
-    method public android.graphics.Matrix getTransformation();
-    method public int getVisibility();
-    method @Nullable public String getWebDomain();
-    method @Nullable public String getWebScheme();
-    method public int getWidth();
-    method public boolean isAccessibilityFocused();
-    method public boolean isActivated();
-    method public boolean isAssistBlocked();
-    method public boolean isCheckable();
-    method public boolean isChecked();
-    method public boolean isClickable();
-    method public boolean isContextClickable();
-    method public boolean isEnabled();
-    method public boolean isFocusable();
-    method public boolean isFocused();
-    method public boolean isLongClickable();
-    method public boolean isOpaque();
-    method public boolean isSelected();
-    field public static final int TEXT_COLOR_UNDEFINED = 1; // 0x1
-    field public static final int TEXT_STYLE_BOLD = 1; // 0x1
-    field public static final int TEXT_STYLE_ITALIC = 2; // 0x2
-    field public static final int TEXT_STYLE_STRIKE_THRU = 8; // 0x8
-    field public static final int TEXT_STYLE_UNDERLINE = 4; // 0x4
-  }
-
-  public static class AssistStructure.WindowNode {
-    method public int getDisplayId();
-    method public int getHeight();
-    method public int getLeft();
-    method public android.app.assist.AssistStructure.ViewNode getRootViewNode();
-    method public CharSequence getTitle();
-    method public int getTop();
-    method public int getWidth();
-  }
-
-}
-
-package android.app.backup {
-
-  public abstract class BackupAgent extends android.content.ContextWrapper {
-    ctor public BackupAgent();
-    method public final void fullBackupFile(java.io.File, android.app.backup.FullBackupDataOutput);
-    method public abstract void onBackup(android.os.ParcelFileDescriptor, android.app.backup.BackupDataOutput, android.os.ParcelFileDescriptor) throws java.io.IOException;
-    method public void onCreate();
-    method public void onDestroy();
-    method public void onFullBackup(android.app.backup.FullBackupDataOutput) throws java.io.IOException;
-    method public void onQuotaExceeded(long, long);
-    method public abstract void onRestore(android.app.backup.BackupDataInput, int, android.os.ParcelFileDescriptor) throws java.io.IOException;
-    method public void onRestore(android.app.backup.BackupDataInput, long, android.os.ParcelFileDescriptor) throws java.io.IOException;
-    method public void onRestoreFile(android.os.ParcelFileDescriptor, long, java.io.File, int, long, long) throws java.io.IOException;
-    method public void onRestoreFinished();
-    field public static final int FLAG_CLIENT_SIDE_ENCRYPTION_ENABLED = 1; // 0x1
-    field public static final int FLAG_DEVICE_TO_DEVICE_TRANSFER = 2; // 0x2
-    field public static final int TYPE_DIRECTORY = 2; // 0x2
-    field public static final int TYPE_FILE = 1; // 0x1
-  }
-
-  public class BackupAgentHelper extends android.app.backup.BackupAgent {
-    ctor public BackupAgentHelper();
-    method public void addHelper(String, android.app.backup.BackupHelper);
-    method public void onBackup(android.os.ParcelFileDescriptor, android.app.backup.BackupDataOutput, android.os.ParcelFileDescriptor) throws java.io.IOException;
-    method public void onRestore(android.app.backup.BackupDataInput, int, android.os.ParcelFileDescriptor) throws java.io.IOException;
-  }
-
-  public class BackupDataInput {
-    method public int getDataSize();
-    method public String getKey();
-    method public int readEntityData(byte[], int, int) throws java.io.IOException;
-    method public boolean readNextHeader() throws java.io.IOException;
-    method public void skipEntityData() throws java.io.IOException;
-  }
-
-  public class BackupDataInputStream extends java.io.InputStream {
-    method public String getKey();
-    method public int read() throws java.io.IOException;
-    method public int size();
-  }
-
-  public class BackupDataOutput {
-    method public long getQuota();
-    method public int getTransportFlags();
-    method public int writeEntityData(byte[], int) throws java.io.IOException;
-    method public int writeEntityHeader(String, int) throws java.io.IOException;
-  }
-
-  public interface BackupHelper {
-    method public void performBackup(android.os.ParcelFileDescriptor, android.app.backup.BackupDataOutput, android.os.ParcelFileDescriptor);
-    method public void restoreEntity(android.app.backup.BackupDataInputStream);
-    method public void writeNewStateDescription(android.os.ParcelFileDescriptor);
-  }
-
-  public class BackupManager {
-    ctor public BackupManager(android.content.Context);
-    method public void dataChanged();
-    method public static void dataChanged(String);
-    method @Nullable public android.os.UserHandle getUserForAncestralSerialNumber(long);
-    method @Deprecated public int requestRestore(android.app.backup.RestoreObserver);
-  }
-
-  public class FileBackupHelper implements android.app.backup.BackupHelper {
-    ctor public FileBackupHelper(android.content.Context, java.lang.String...);
-    method public void performBackup(android.os.ParcelFileDescriptor, android.app.backup.BackupDataOutput, android.os.ParcelFileDescriptor);
-    method public void restoreEntity(android.app.backup.BackupDataInputStream);
-    method public void writeNewStateDescription(android.os.ParcelFileDescriptor);
-  }
-
-  public class FullBackupDataOutput {
-    method public long getQuota();
-    method public int getTransportFlags();
-  }
-
-  public abstract class RestoreObserver {
-    ctor public RestoreObserver();
-    method public void onUpdate(int, String);
-    method public void restoreFinished(int);
-    method public void restoreStarting(int);
-  }
-
-  public class SharedPreferencesBackupHelper implements android.app.backup.BackupHelper {
-    ctor public SharedPreferencesBackupHelper(android.content.Context, java.lang.String...);
-    method public void performBackup(android.os.ParcelFileDescriptor, android.app.backup.BackupDataOutput, android.os.ParcelFileDescriptor);
-    method public void restoreEntity(android.app.backup.BackupDataInputStream);
-    method public void writeNewStateDescription(android.os.ParcelFileDescriptor);
-  }
-
-}
-
-package android.app.blob {
-
-  public final class BlobHandle implements android.os.Parcelable {
-    method @NonNull public static android.app.blob.BlobHandle createWithSha256(@NonNull byte[], @NonNull CharSequence, long, @NonNull String);
-    method public int describeContents();
-    method public long getExpiryTimeMillis();
-    method @NonNull public CharSequence getLabel();
-    method @NonNull public byte[] getSha256Digest();
-    method @NonNull public String getTag();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.blob.BlobHandle> CREATOR;
-  }
-
-  public class BlobStoreManager {
-    method public void abandonSession(@IntRange(from=1) long) throws java.io.IOException;
-    method public void acquireLease(@NonNull android.app.blob.BlobHandle, @IdRes int, long) throws java.io.IOException;
-    method public void acquireLease(@NonNull android.app.blob.BlobHandle, @NonNull CharSequence, long) throws java.io.IOException;
-    method public void acquireLease(@NonNull android.app.blob.BlobHandle, @IdRes int) throws java.io.IOException;
-    method public void acquireLease(@NonNull android.app.blob.BlobHandle, @NonNull CharSequence) throws java.io.IOException;
-    method @IntRange(from=1) public long createSession(@NonNull android.app.blob.BlobHandle) throws java.io.IOException;
-    method @NonNull public java.util.List<android.app.blob.BlobHandle> getLeasedBlobs() throws java.io.IOException;
-    method @IntRange(from=0) public long getRemainingLeaseQuotaBytes();
-    method @NonNull public android.os.ParcelFileDescriptor openBlob(@NonNull android.app.blob.BlobHandle) throws java.io.IOException;
-    method @NonNull public android.app.blob.BlobStoreManager.Session openSession(@IntRange(from=1) long) throws java.io.IOException;
-    method public void releaseLease(@NonNull android.app.blob.BlobHandle) throws java.io.IOException;
-  }
-
-  public static class BlobStoreManager.Session implements java.io.Closeable {
-    method public void abandon() throws java.io.IOException;
-    method public void allowPackageAccess(@NonNull String, @NonNull byte[]) throws java.io.IOException;
-    method public void allowPublicAccess() throws java.io.IOException;
-    method public void allowSameSignatureAccess() throws java.io.IOException;
-    method public void close() throws java.io.IOException;
-    method public void commit(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>) throws java.io.IOException;
-    method public long getSize() throws java.io.IOException;
-    method public boolean isPackageAccessAllowed(@NonNull String, @NonNull byte[]) throws java.io.IOException;
-    method public boolean isPublicAccessAllowed() throws java.io.IOException;
-    method public boolean isSameSignatureAccessAllowed() throws java.io.IOException;
-    method @NonNull public android.os.ParcelFileDescriptor openRead() throws java.io.IOException;
-    method @NonNull public android.os.ParcelFileDescriptor openWrite(long, long) throws java.io.IOException;
-  }
-
-}
-
-package android.app.job {
-
-  public class JobInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getBackoffPolicy();
-    method @Nullable public android.content.ClipData getClipData();
-    method public int getClipGrantFlags();
-    method public long getEstimatedNetworkDownloadBytes();
-    method public long getEstimatedNetworkUploadBytes();
-    method @NonNull public android.os.PersistableBundle getExtras();
-    method public long getFlexMillis();
-    method public int getId();
-    method public long getInitialBackoffMillis();
-    method public long getIntervalMillis();
-    method public long getMaxExecutionDelayMillis();
-    method public static final long getMinFlexMillis();
-    method public long getMinLatencyMillis();
-    method public static final long getMinPeriodMillis();
-    method @Deprecated public int getNetworkType();
-    method @Nullable public android.net.NetworkRequest getRequiredNetwork();
-    method @NonNull public android.content.ComponentName getService();
-    method @NonNull public android.os.Bundle getTransientExtras();
-    method public long getTriggerContentMaxDelay();
-    method public long getTriggerContentUpdateDelay();
-    method @Nullable public android.app.job.JobInfo.TriggerContentUri[] getTriggerContentUris();
-    method public boolean isImportantWhileForeground();
-    method public boolean isPeriodic();
-    method public boolean isPersisted();
-    method public boolean isPrefetch();
-    method public boolean isRequireBatteryNotLow();
-    method public boolean isRequireCharging();
-    method public boolean isRequireDeviceIdle();
-    method public boolean isRequireStorageNotLow();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int BACKOFF_POLICY_EXPONENTIAL = 1; // 0x1
-    field public static final int BACKOFF_POLICY_LINEAR = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.job.JobInfo> CREATOR;
-    field public static final long DEFAULT_INITIAL_BACKOFF_MILLIS = 30000L; // 0x7530L
-    field public static final long MAX_BACKOFF_DELAY_MILLIS = 18000000L; // 0x112a880L
-    field public static final int NETWORK_BYTES_UNKNOWN = -1; // 0xffffffff
-    field public static final int NETWORK_TYPE_ANY = 1; // 0x1
-    field public static final int NETWORK_TYPE_CELLULAR = 4; // 0x4
-    field @Deprecated public static final int NETWORK_TYPE_METERED = 4; // 0x4
-    field public static final int NETWORK_TYPE_NONE = 0; // 0x0
-    field public static final int NETWORK_TYPE_NOT_ROAMING = 3; // 0x3
-    field public static final int NETWORK_TYPE_UNMETERED = 2; // 0x2
-  }
-
-  public static final class JobInfo.Builder {
-    ctor public JobInfo.Builder(int, @NonNull android.content.ComponentName);
-    method public android.app.job.JobInfo.Builder addTriggerContentUri(@NonNull android.app.job.JobInfo.TriggerContentUri);
-    method public android.app.job.JobInfo build();
-    method public android.app.job.JobInfo.Builder setBackoffCriteria(long, int);
-    method public android.app.job.JobInfo.Builder setClipData(@Nullable android.content.ClipData, int);
-    method public android.app.job.JobInfo.Builder setEstimatedNetworkBytes(long, long);
-    method public android.app.job.JobInfo.Builder setExtras(@NonNull android.os.PersistableBundle);
-    method public android.app.job.JobInfo.Builder setImportantWhileForeground(boolean);
-    method public android.app.job.JobInfo.Builder setMinimumLatency(long);
-    method public android.app.job.JobInfo.Builder setOverrideDeadline(long);
-    method public android.app.job.JobInfo.Builder setPeriodic(long);
-    method public android.app.job.JobInfo.Builder setPeriodic(long, long);
-    method @RequiresPermission(android.Manifest.permission.RECEIVE_BOOT_COMPLETED) public android.app.job.JobInfo.Builder setPersisted(boolean);
-    method public android.app.job.JobInfo.Builder setPrefetch(boolean);
-    method public android.app.job.JobInfo.Builder setRequiredNetwork(@Nullable android.net.NetworkRequest);
-    method public android.app.job.JobInfo.Builder setRequiredNetworkType(int);
-    method public android.app.job.JobInfo.Builder setRequiresBatteryNotLow(boolean);
-    method public android.app.job.JobInfo.Builder setRequiresCharging(boolean);
-    method public android.app.job.JobInfo.Builder setRequiresDeviceIdle(boolean);
-    method public android.app.job.JobInfo.Builder setRequiresStorageNotLow(boolean);
-    method public android.app.job.JobInfo.Builder setTransientExtras(@NonNull android.os.Bundle);
-    method public android.app.job.JobInfo.Builder setTriggerContentMaxDelay(long);
-    method public android.app.job.JobInfo.Builder setTriggerContentUpdateDelay(long);
-  }
-
-  public static final class JobInfo.TriggerContentUri implements android.os.Parcelable {
-    ctor public JobInfo.TriggerContentUri(@NonNull android.net.Uri, int);
-    method public int describeContents();
-    method public int getFlags();
-    method public android.net.Uri getUri();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.job.JobInfo.TriggerContentUri> CREATOR;
-    field public static final int FLAG_NOTIFY_FOR_DESCENDANTS = 1; // 0x1
-  }
-
-  public class JobParameters implements android.os.Parcelable {
-    method public void completeWork(@NonNull android.app.job.JobWorkItem);
-    method @Nullable public android.app.job.JobWorkItem dequeueWork();
-    method public int describeContents();
-    method @Nullable public android.content.ClipData getClipData();
-    method public int getClipGrantFlags();
-    method @NonNull public android.os.PersistableBundle getExtras();
-    method public int getJobId();
-    method @Nullable public android.net.Network getNetwork();
-    method @NonNull public android.os.Bundle getTransientExtras();
-    method @Nullable public String[] getTriggeredContentAuthorities();
-    method @Nullable public android.net.Uri[] getTriggeredContentUris();
-    method public boolean isOverrideDeadlineExpired();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.job.JobParameters> CREATOR;
-  }
-
-  public abstract class JobScheduler {
-    ctor public JobScheduler();
-    method public abstract void cancel(int);
-    method public abstract void cancelAll();
-    method public abstract int enqueue(@NonNull android.app.job.JobInfo, @NonNull android.app.job.JobWorkItem);
-    method @NonNull public abstract java.util.List<android.app.job.JobInfo> getAllPendingJobs();
-    method @Nullable public abstract android.app.job.JobInfo getPendingJob(int);
-    method public abstract int schedule(@NonNull android.app.job.JobInfo);
-    field public static final int RESULT_FAILURE = 0; // 0x0
-    field public static final int RESULT_SUCCESS = 1; // 0x1
-  }
-
-  public abstract class JobService extends android.app.Service {
-    ctor public JobService();
-    method public final void jobFinished(android.app.job.JobParameters, boolean);
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method public abstract boolean onStartJob(android.app.job.JobParameters);
-    method public abstract boolean onStopJob(android.app.job.JobParameters);
-    field public static final String PERMISSION_BIND = "android.permission.BIND_JOB_SERVICE";
-  }
-
-  public abstract class JobServiceEngine {
-    ctor public JobServiceEngine(android.app.Service);
-    method public final android.os.IBinder getBinder();
-    method public void jobFinished(android.app.job.JobParameters, boolean);
-    method public abstract boolean onStartJob(android.app.job.JobParameters);
-    method public abstract boolean onStopJob(android.app.job.JobParameters);
-  }
-
-  public final class JobWorkItem implements android.os.Parcelable {
-    ctor public JobWorkItem(android.content.Intent);
-    ctor public JobWorkItem(android.content.Intent, long, long);
-    method public int describeContents();
-    method public int getDeliveryCount();
-    method public long getEstimatedNetworkDownloadBytes();
-    method public long getEstimatedNetworkUploadBytes();
-    method public android.content.Intent getIntent();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.job.JobWorkItem> CREATOR;
-  }
-
-}
-
-package android.app.role {
-
-  public final class RoleManager {
-    method @NonNull public android.content.Intent createRequestRoleIntent(@NonNull String);
-    method public boolean isRoleAvailable(@NonNull String);
-    method public boolean isRoleHeld(@NonNull String);
-    field public static final String ROLE_ASSISTANT = "android.app.role.ASSISTANT";
-    field public static final String ROLE_BROWSER = "android.app.role.BROWSER";
-    field public static final String ROLE_CALL_REDIRECTION = "android.app.role.CALL_REDIRECTION";
-    field public static final String ROLE_CALL_SCREENING = "android.app.role.CALL_SCREENING";
-    field public static final String ROLE_DIALER = "android.app.role.DIALER";
-    field public static final String ROLE_EMERGENCY = "android.app.role.EMERGENCY";
-    field public static final String ROLE_HOME = "android.app.role.HOME";
-    field public static final String ROLE_SMS = "android.app.role.SMS";
-  }
-
-}
-
-package android.app.slice {
-
-  public final class Slice implements android.os.Parcelable {
-    ctor protected Slice(android.os.Parcel);
-    method public int describeContents();
-    method public java.util.List<java.lang.String> getHints();
-    method public java.util.List<android.app.slice.SliceItem> getItems();
-    method @Nullable public android.app.slice.SliceSpec getSpec();
-    method public android.net.Uri getUri();
-    method public boolean isCallerNeeded();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.slice.Slice> CREATOR;
-    field public static final String EXTRA_RANGE_VALUE = "android.app.slice.extra.RANGE_VALUE";
-    field public static final String EXTRA_TOGGLE_STATE = "android.app.slice.extra.TOGGLE_STATE";
-    field public static final String HINT_ACTIONS = "actions";
-    field public static final String HINT_ERROR = "error";
-    field public static final String HINT_HORIZONTAL = "horizontal";
-    field public static final String HINT_KEYWORDS = "keywords";
-    field public static final String HINT_LARGE = "large";
-    field public static final String HINT_LAST_UPDATED = "last_updated";
-    field public static final String HINT_LIST = "list";
-    field public static final String HINT_LIST_ITEM = "list_item";
-    field public static final String HINT_NO_TINT = "no_tint";
-    field public static final String HINT_PARTIAL = "partial";
-    field public static final String HINT_PERMISSION_REQUEST = "permission_request";
-    field public static final String HINT_SEE_MORE = "see_more";
-    field public static final String HINT_SELECTED = "selected";
-    field public static final String HINT_SHORTCUT = "shortcut";
-    field public static final String HINT_SUMMARY = "summary";
-    field public static final String HINT_TITLE = "title";
-    field public static final String HINT_TTL = "ttl";
-    field public static final String SUBTYPE_COLOR = "color";
-    field public static final String SUBTYPE_CONTENT_DESCRIPTION = "content_description";
-    field public static final String SUBTYPE_LAYOUT_DIRECTION = "layout_direction";
-    field public static final String SUBTYPE_MAX = "max";
-    field public static final String SUBTYPE_MESSAGE = "message";
-    field public static final String SUBTYPE_MILLIS = "millis";
-    field public static final String SUBTYPE_PRIORITY = "priority";
-    field public static final String SUBTYPE_RANGE = "range";
-    field public static final String SUBTYPE_SOURCE = "source";
-    field public static final String SUBTYPE_TOGGLE = "toggle";
-    field public static final String SUBTYPE_VALUE = "value";
-  }
-
-  public static class Slice.Builder {
-    ctor public Slice.Builder(@NonNull android.net.Uri, android.app.slice.SliceSpec);
-    ctor public Slice.Builder(@NonNull android.app.slice.Slice.Builder);
-    method public android.app.slice.Slice.Builder addAction(@NonNull android.app.PendingIntent, @NonNull android.app.slice.Slice, @Nullable String);
-    method public android.app.slice.Slice.Builder addBundle(android.os.Bundle, @Nullable String, java.util.List<java.lang.String>);
-    method public android.app.slice.Slice.Builder addHints(java.util.List<java.lang.String>);
-    method public android.app.slice.Slice.Builder addIcon(android.graphics.drawable.Icon, @Nullable String, java.util.List<java.lang.String>);
-    method public android.app.slice.Slice.Builder addInt(int, @Nullable String, java.util.List<java.lang.String>);
-    method public android.app.slice.Slice.Builder addLong(long, @Nullable String, java.util.List<java.lang.String>);
-    method public android.app.slice.Slice.Builder addRemoteInput(android.app.RemoteInput, @Nullable String, java.util.List<java.lang.String>);
-    method public android.app.slice.Slice.Builder addSubSlice(@NonNull android.app.slice.Slice, @Nullable String);
-    method public android.app.slice.Slice.Builder addText(CharSequence, @Nullable String, java.util.List<java.lang.String>);
-    method public android.app.slice.Slice build();
-    method public android.app.slice.Slice.Builder setCallerNeeded(boolean);
-  }
-
-  public final class SliceItem implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.app.PendingIntent getAction();
-    method public android.os.Bundle getBundle();
-    method public String getFormat();
-    method @NonNull public java.util.List<java.lang.String> getHints();
-    method public android.graphics.drawable.Icon getIcon();
-    method public int getInt();
-    method public long getLong();
-    method public android.app.RemoteInput getRemoteInput();
-    method public android.app.slice.Slice getSlice();
-    method public String getSubType();
-    method public CharSequence getText();
-    method public boolean hasHint(String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.slice.SliceItem> CREATOR;
-    field public static final String FORMAT_ACTION = "action";
-    field public static final String FORMAT_BUNDLE = "bundle";
-    field public static final String FORMAT_IMAGE = "image";
-    field public static final String FORMAT_INT = "int";
-    field public static final String FORMAT_LONG = "long";
-    field public static final String FORMAT_REMOTE_INPUT = "input";
-    field public static final String FORMAT_SLICE = "slice";
-    field public static final String FORMAT_TEXT = "text";
-  }
-
-  public class SliceManager {
-    method @Nullable public android.app.slice.Slice bindSlice(@NonNull android.net.Uri, @NonNull java.util.Set<android.app.slice.SliceSpec>);
-    method @Nullable public android.app.slice.Slice bindSlice(@NonNull android.content.Intent, @NonNull java.util.Set<android.app.slice.SliceSpec>);
-    method public int checkSlicePermission(@NonNull android.net.Uri, int, int);
-    method @NonNull public java.util.List<android.net.Uri> getPinnedSlices();
-    method @NonNull public java.util.Set<android.app.slice.SliceSpec> getPinnedSpecs(android.net.Uri);
-    method @NonNull @WorkerThread public java.util.Collection<android.net.Uri> getSliceDescendants(@NonNull android.net.Uri);
-    method public void grantSlicePermission(@NonNull String, @NonNull android.net.Uri);
-    method @Nullable public android.net.Uri mapIntentToUri(@NonNull android.content.Intent);
-    method public void pinSlice(@NonNull android.net.Uri, @NonNull java.util.Set<android.app.slice.SliceSpec>);
-    method public void revokeSlicePermission(@NonNull String, @NonNull android.net.Uri);
-    method public void unpinSlice(@NonNull android.net.Uri);
-    field public static final String CATEGORY_SLICE = "android.app.slice.category.SLICE";
-    field public static final String SLICE_METADATA_KEY = "android.metadata.SLICE_URI";
-  }
-
-  public class SliceMetrics {
-    ctor public SliceMetrics(@NonNull android.content.Context, @NonNull android.net.Uri);
-    method public void logHidden();
-    method public void logTouch(int, @NonNull android.net.Uri);
-    method public void logVisible();
-  }
-
-  public abstract class SliceProvider extends android.content.ContentProvider {
-    ctor public SliceProvider(@NonNull java.lang.String...);
-    ctor public SliceProvider();
-    method public final int delete(android.net.Uri, String, String[]);
-    method public final String getType(android.net.Uri);
-    method public final android.net.Uri insert(android.net.Uri, android.content.ContentValues);
-    method public android.app.slice.Slice onBindSlice(android.net.Uri, java.util.Set<android.app.slice.SliceSpec>);
-    method @NonNull public android.app.PendingIntent onCreatePermissionRequest(android.net.Uri);
-    method @NonNull public java.util.Collection<android.net.Uri> onGetSliceDescendants(@NonNull android.net.Uri);
-    method @NonNull public android.net.Uri onMapIntentToUri(android.content.Intent);
-    method public void onSlicePinned(android.net.Uri);
-    method public void onSliceUnpinned(android.net.Uri);
-    method public final android.database.Cursor query(android.net.Uri, String[], String, String[], String);
-    method public final android.database.Cursor query(android.net.Uri, String[], String, String[], String, android.os.CancellationSignal);
-    method public final android.database.Cursor query(android.net.Uri, String[], android.os.Bundle, android.os.CancellationSignal);
-    method public final int update(android.net.Uri, android.content.ContentValues, String, String[]);
-    field public static final String SLICE_TYPE = "vnd.android.slice";
-  }
-
-  public final class SliceSpec implements android.os.Parcelable {
-    ctor public SliceSpec(@NonNull String, int);
-    method public boolean canRender(@NonNull android.app.slice.SliceSpec);
-    method public int describeContents();
-    method public int getRevision();
-    method public String getType();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.slice.SliceSpec> CREATOR;
-  }
-
-}
-
-package android.app.usage {
-
-  public final class ConfigurationStats implements android.os.Parcelable {
-    ctor public ConfigurationStats(android.app.usage.ConfigurationStats);
-    method public int describeContents();
-    method public int getActivationCount();
-    method public android.content.res.Configuration getConfiguration();
-    method public long getFirstTimeStamp();
-    method public long getLastTimeActive();
-    method public long getLastTimeStamp();
-    method public long getTotalTimeActive();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.usage.ConfigurationStats> CREATOR;
-  }
-
-  public final class EventStats implements android.os.Parcelable {
-    ctor public EventStats(android.app.usage.EventStats);
-    method public void add(android.app.usage.EventStats);
-    method public int describeContents();
-    method public int getCount();
-    method public int getEventType();
-    method public long getFirstTimeStamp();
-    method public long getLastEventTime();
-    method public long getLastTimeStamp();
-    method public long getTotalTime();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.usage.EventStats> CREATOR;
-  }
-
-  public final class ExternalStorageStats implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getAppBytes();
-    method public long getAudioBytes();
-    method public long getImageBytes();
-    method public long getTotalBytes();
-    method public long getVideoBytes();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.usage.ExternalStorageStats> CREATOR;
-  }
-
-  public final class NetworkStats implements java.lang.AutoCloseable {
-    method public void close();
-    method public boolean getNextBucket(android.app.usage.NetworkStats.Bucket);
-    method public boolean hasNextBucket();
-  }
-
-  public static class NetworkStats.Bucket {
-    ctor public NetworkStats.Bucket();
-    method public int getDefaultNetworkStatus();
-    method public long getEndTimeStamp();
-    method public int getMetered();
-    method public int getRoaming();
-    method public long getRxBytes();
-    method public long getRxPackets();
-    method public long getStartTimeStamp();
-    method public int getState();
-    method public int getTag();
-    method public long getTxBytes();
-    method public long getTxPackets();
-    method public int getUid();
-    field public static final int DEFAULT_NETWORK_ALL = -1; // 0xffffffff
-    field public static final int DEFAULT_NETWORK_NO = 1; // 0x1
-    field public static final int DEFAULT_NETWORK_YES = 2; // 0x2
-    field public static final int METERED_ALL = -1; // 0xffffffff
-    field public static final int METERED_NO = 1; // 0x1
-    field public static final int METERED_YES = 2; // 0x2
-    field public static final int ROAMING_ALL = -1; // 0xffffffff
-    field public static final int ROAMING_NO = 1; // 0x1
-    field public static final int ROAMING_YES = 2; // 0x2
-    field public static final int STATE_ALL = -1; // 0xffffffff
-    field public static final int STATE_DEFAULT = 1; // 0x1
-    field public static final int STATE_FOREGROUND = 2; // 0x2
-    field public static final int TAG_NONE = 0; // 0x0
-    field public static final int UID_ALL = -1; // 0xffffffff
-    field public static final int UID_REMOVED = -4; // 0xfffffffc
-    field public static final int UID_TETHERING = -5; // 0xfffffffb
-  }
-
-  public class NetworkStatsManager {
-    method public android.app.usage.NetworkStats queryDetails(int, String, long, long) throws android.os.RemoteException, java.lang.SecurityException;
-    method public android.app.usage.NetworkStats queryDetailsForUid(int, String, long, long, int) throws java.lang.SecurityException;
-    method public android.app.usage.NetworkStats queryDetailsForUidTag(int, String, long, long, int, int) throws java.lang.SecurityException;
-    method public android.app.usage.NetworkStats queryDetailsForUidTagState(int, String, long, long, int, int, int) throws java.lang.SecurityException;
-    method public android.app.usage.NetworkStats querySummary(int, String, long, long) throws android.os.RemoteException, java.lang.SecurityException;
-    method public android.app.usage.NetworkStats.Bucket querySummaryForDevice(int, String, long, long) throws android.os.RemoteException, java.lang.SecurityException;
-    method public android.app.usage.NetworkStats.Bucket querySummaryForUser(int, String, long, long) throws android.os.RemoteException, java.lang.SecurityException;
-    method public void registerUsageCallback(int, String, long, android.app.usage.NetworkStatsManager.UsageCallback);
-    method public void registerUsageCallback(int, String, long, android.app.usage.NetworkStatsManager.UsageCallback, @Nullable android.os.Handler);
-    method public void unregisterUsageCallback(android.app.usage.NetworkStatsManager.UsageCallback);
-  }
-
-  public abstract static class NetworkStatsManager.UsageCallback {
-    ctor public NetworkStatsManager.UsageCallback();
-    method public abstract void onThresholdReached(int, String);
-  }
-
-  public final class StorageStats implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getAppBytes();
-    method public long getCacheBytes();
-    method public long getDataBytes();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.usage.StorageStats> CREATOR;
-  }
-
-  public class StorageStatsManager {
-    method @WorkerThread public long getFreeBytes(@NonNull java.util.UUID) throws java.io.IOException;
-    method @WorkerThread public long getTotalBytes(@NonNull java.util.UUID) throws java.io.IOException;
-    method @NonNull @WorkerThread public android.app.usage.ExternalStorageStats queryExternalStatsForUser(@NonNull java.util.UUID, @NonNull android.os.UserHandle) throws java.io.IOException;
-    method @NonNull @WorkerThread public android.app.usage.StorageStats queryStatsForPackage(@NonNull java.util.UUID, @NonNull String, @NonNull android.os.UserHandle) throws java.io.IOException, android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull @WorkerThread public android.app.usage.StorageStats queryStatsForUid(@NonNull java.util.UUID, int) throws java.io.IOException;
-    method @NonNull @WorkerThread public android.app.usage.StorageStats queryStatsForUser(@NonNull java.util.UUID, @NonNull android.os.UserHandle) throws java.io.IOException;
-  }
-
-  public final class UsageEvents implements android.os.Parcelable {
-    method public int describeContents();
-    method public boolean getNextEvent(android.app.usage.UsageEvents.Event);
-    method public boolean hasNextEvent();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.usage.UsageEvents> CREATOR;
-  }
-
-  public static final class UsageEvents.Event {
-    ctor public UsageEvents.Event();
-    method public int getAppStandbyBucket();
-    method public String getClassName();
-    method public android.content.res.Configuration getConfiguration();
-    method public int getEventType();
-    method public String getPackageName();
-    method public String getShortcutId();
-    method public long getTimeStamp();
-    field public static final int ACTIVITY_PAUSED = 2; // 0x2
-    field public static final int ACTIVITY_RESUMED = 1; // 0x1
-    field public static final int ACTIVITY_STOPPED = 23; // 0x17
-    field public static final int CONFIGURATION_CHANGE = 5; // 0x5
-    field public static final int DEVICE_SHUTDOWN = 26; // 0x1a
-    field public static final int DEVICE_STARTUP = 27; // 0x1b
-    field public static final int FOREGROUND_SERVICE_START = 19; // 0x13
-    field public static final int FOREGROUND_SERVICE_STOP = 20; // 0x14
-    field public static final int KEYGUARD_HIDDEN = 18; // 0x12
-    field public static final int KEYGUARD_SHOWN = 17; // 0x11
-    field @Deprecated public static final int MOVE_TO_BACKGROUND = 2; // 0x2
-    field @Deprecated public static final int MOVE_TO_FOREGROUND = 1; // 0x1
-    field public static final int NONE = 0; // 0x0
-    field public static final int SCREEN_INTERACTIVE = 15; // 0xf
-    field public static final int SCREEN_NON_INTERACTIVE = 16; // 0x10
-    field public static final int SHORTCUT_INVOCATION = 8; // 0x8
-    field public static final int STANDBY_BUCKET_CHANGED = 11; // 0xb
-    field public static final int USER_INTERACTION = 7; // 0x7
-  }
-
-  public final class UsageStats implements android.os.Parcelable {
-    ctor public UsageStats(android.app.usage.UsageStats);
-    method public void add(android.app.usage.UsageStats);
-    method public int describeContents();
-    method public long getFirstTimeStamp();
-    method public long getLastTimeForegroundServiceUsed();
-    method public long getLastTimeStamp();
-    method public long getLastTimeUsed();
-    method public long getLastTimeVisible();
-    method public String getPackageName();
-    method public long getTotalTimeForegroundServiceUsed();
-    method public long getTotalTimeInForeground();
-    method public long getTotalTimeVisible();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.usage.UsageStats> CREATOR;
-  }
-
-  public final class UsageStatsManager {
-    method public int getAppStandbyBucket();
-    method public boolean isAppInactive(String);
-    method public java.util.Map<java.lang.String,android.app.usage.UsageStats> queryAndAggregateUsageStats(long, long);
-    method public java.util.List<android.app.usage.ConfigurationStats> queryConfigurations(int, long, long);
-    method public java.util.List<android.app.usage.EventStats> queryEventStats(int, long, long);
-    method public android.app.usage.UsageEvents queryEvents(long, long);
-    method public android.app.usage.UsageEvents queryEventsForSelf(long, long);
-    method public java.util.List<android.app.usage.UsageStats> queryUsageStats(int, long, long);
-    field public static final int INTERVAL_BEST = 4; // 0x4
-    field public static final int INTERVAL_DAILY = 0; // 0x0
-    field public static final int INTERVAL_MONTHLY = 2; // 0x2
-    field public static final int INTERVAL_WEEKLY = 1; // 0x1
-    field public static final int INTERVAL_YEARLY = 3; // 0x3
-    field public static final int STANDBY_BUCKET_ACTIVE = 10; // 0xa
-    field public static final int STANDBY_BUCKET_FREQUENT = 30; // 0x1e
-    field public static final int STANDBY_BUCKET_RARE = 40; // 0x28
-    field public static final int STANDBY_BUCKET_RESTRICTED = 45; // 0x2d
-    field public static final int STANDBY_BUCKET_WORKING_SET = 20; // 0x14
-  }
-
-}
-
-package android.appwidget {
-
-  public class AppWidgetHost {
-    ctor public AppWidgetHost(android.content.Context, int);
-    method public int allocateAppWidgetId();
-    method protected void clearViews();
-    method public final android.appwidget.AppWidgetHostView createView(android.content.Context, int, android.appwidget.AppWidgetProviderInfo);
-    method public static void deleteAllHosts();
-    method public void deleteAppWidgetId(int);
-    method public void deleteHost();
-    method public int[] getAppWidgetIds();
-    method public void onAppWidgetRemoved(int);
-    method protected android.appwidget.AppWidgetHostView onCreateView(android.content.Context, int, android.appwidget.AppWidgetProviderInfo);
-    method protected void onProviderChanged(int, android.appwidget.AppWidgetProviderInfo);
-    method protected void onProvidersChanged();
-    method public final void startAppWidgetConfigureActivityForResult(@NonNull android.app.Activity, int, int, int, @Nullable android.os.Bundle);
-    method public void startListening();
-    method public void stopListening();
-  }
-
-  public class AppWidgetHostView extends android.widget.FrameLayout {
-    ctor public AppWidgetHostView(android.content.Context);
-    ctor public AppWidgetHostView(android.content.Context, int, int);
-    method public int getAppWidgetId();
-    method public android.appwidget.AppWidgetProviderInfo getAppWidgetInfo();
-    method public static android.graphics.Rect getDefaultPaddingForWidget(android.content.Context, android.content.ComponentName, android.graphics.Rect);
-    method protected android.view.View getDefaultView();
-    method protected android.view.View getErrorView();
-    method protected void prepareView(android.view.View);
-    method public void setAppWidget(int, android.appwidget.AppWidgetProviderInfo);
-    method public void setExecutor(java.util.concurrent.Executor);
-    method public void setOnLightBackground(boolean);
-    method public void updateAppWidget(android.widget.RemoteViews);
-    method public void updateAppWidgetOptions(android.os.Bundle);
-    method public void updateAppWidgetSize(android.os.Bundle, int, int, int, int);
-  }
-
-  public class AppWidgetManager {
-    method public boolean bindAppWidgetIdIfAllowed(int, android.content.ComponentName);
-    method public boolean bindAppWidgetIdIfAllowed(int, android.content.ComponentName, android.os.Bundle);
-    method public boolean bindAppWidgetIdIfAllowed(int, android.os.UserHandle, android.content.ComponentName, android.os.Bundle);
-    method public int[] getAppWidgetIds(android.content.ComponentName);
-    method public android.appwidget.AppWidgetProviderInfo getAppWidgetInfo(int);
-    method public android.os.Bundle getAppWidgetOptions(int);
-    method public java.util.List<android.appwidget.AppWidgetProviderInfo> getInstalledProviders();
-    method @NonNull public java.util.List<android.appwidget.AppWidgetProviderInfo> getInstalledProvidersForPackage(@NonNull String, @Nullable android.os.UserHandle);
-    method @NonNull public java.util.List<android.appwidget.AppWidgetProviderInfo> getInstalledProvidersForProfile(@Nullable android.os.UserHandle);
-    method public static android.appwidget.AppWidgetManager getInstance(android.content.Context);
-    method public boolean isRequestPinAppWidgetSupported();
-    method public void notifyAppWidgetViewDataChanged(int[], int);
-    method public void notifyAppWidgetViewDataChanged(int, int);
-    method public void partiallyUpdateAppWidget(int[], android.widget.RemoteViews);
-    method public void partiallyUpdateAppWidget(int, android.widget.RemoteViews);
-    method public boolean requestPinAppWidget(@NonNull android.content.ComponentName, @Nullable android.os.Bundle, @Nullable android.app.PendingIntent);
-    method public void updateAppWidget(int[], android.widget.RemoteViews);
-    method public void updateAppWidget(int, android.widget.RemoteViews);
-    method public void updateAppWidget(android.content.ComponentName, android.widget.RemoteViews);
-    method public void updateAppWidgetOptions(int, android.os.Bundle);
-    method public void updateAppWidgetProviderInfo(android.content.ComponentName, @Nullable String);
-    field public static final String ACTION_APPWIDGET_BIND = "android.appwidget.action.APPWIDGET_BIND";
-    field public static final String ACTION_APPWIDGET_CONFIGURE = "android.appwidget.action.APPWIDGET_CONFIGURE";
-    field public static final String ACTION_APPWIDGET_DELETED = "android.appwidget.action.APPWIDGET_DELETED";
-    field public static final String ACTION_APPWIDGET_DISABLED = "android.appwidget.action.APPWIDGET_DISABLED";
-    field public static final String ACTION_APPWIDGET_ENABLED = "android.appwidget.action.APPWIDGET_ENABLED";
-    field public static final String ACTION_APPWIDGET_HOST_RESTORED = "android.appwidget.action.APPWIDGET_HOST_RESTORED";
-    field public static final String ACTION_APPWIDGET_OPTIONS_CHANGED = "android.appwidget.action.APPWIDGET_UPDATE_OPTIONS";
-    field public static final String ACTION_APPWIDGET_PICK = "android.appwidget.action.APPWIDGET_PICK";
-    field public static final String ACTION_APPWIDGET_RESTORED = "android.appwidget.action.APPWIDGET_RESTORED";
-    field public static final String ACTION_APPWIDGET_UPDATE = "android.appwidget.action.APPWIDGET_UPDATE";
-    field public static final String EXTRA_APPWIDGET_ID = "appWidgetId";
-    field public static final String EXTRA_APPWIDGET_IDS = "appWidgetIds";
-    field public static final String EXTRA_APPWIDGET_OLD_IDS = "appWidgetOldIds";
-    field public static final String EXTRA_APPWIDGET_OPTIONS = "appWidgetOptions";
-    field public static final String EXTRA_APPWIDGET_PREVIEW = "appWidgetPreview";
-    field public static final String EXTRA_APPWIDGET_PROVIDER = "appWidgetProvider";
-    field public static final String EXTRA_APPWIDGET_PROVIDER_PROFILE = "appWidgetProviderProfile";
-    field public static final String EXTRA_CUSTOM_EXTRAS = "customExtras";
-    field public static final String EXTRA_CUSTOM_INFO = "customInfo";
-    field public static final String EXTRA_HOST_ID = "hostId";
-    field public static final int INVALID_APPWIDGET_ID = 0; // 0x0
-    field public static final String META_DATA_APPWIDGET_PROVIDER = "android.appwidget.provider";
-    field public static final String OPTION_APPWIDGET_HOST_CATEGORY = "appWidgetCategory";
-    field public static final String OPTION_APPWIDGET_MAX_HEIGHT = "appWidgetMaxHeight";
-    field public static final String OPTION_APPWIDGET_MAX_WIDTH = "appWidgetMaxWidth";
-    field public static final String OPTION_APPWIDGET_MIN_HEIGHT = "appWidgetMinHeight";
-    field public static final String OPTION_APPWIDGET_MIN_WIDTH = "appWidgetMinWidth";
-    field public static final String OPTION_APPWIDGET_RESTORE_COMPLETED = "appWidgetRestoreCompleted";
-  }
-
-  public class AppWidgetProvider extends android.content.BroadcastReceiver {
-    ctor public AppWidgetProvider();
-    method public void onAppWidgetOptionsChanged(android.content.Context, android.appwidget.AppWidgetManager, int, android.os.Bundle);
-    method public void onDeleted(android.content.Context, int[]);
-    method public void onDisabled(android.content.Context);
-    method public void onEnabled(android.content.Context);
-    method public void onReceive(android.content.Context, android.content.Intent);
-    method public void onRestored(android.content.Context, int[], int[]);
-    method public void onUpdate(android.content.Context, android.appwidget.AppWidgetManager, int[]);
-  }
-
-  public class AppWidgetProviderInfo implements android.os.Parcelable {
-    ctor public AppWidgetProviderInfo();
-    ctor public AppWidgetProviderInfo(android.os.Parcel);
-    method public android.appwidget.AppWidgetProviderInfo clone();
-    method public int describeContents();
-    method public final android.os.UserHandle getProfile();
-    method public final android.graphics.drawable.Drawable loadIcon(@NonNull android.content.Context, int);
-    method public final String loadLabel(android.content.pm.PackageManager);
-    method public final android.graphics.drawable.Drawable loadPreviewImage(@NonNull android.content.Context, int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.appwidget.AppWidgetProviderInfo> CREATOR;
-    field public static final int RESIZE_BOTH = 3; // 0x3
-    field public static final int RESIZE_HORIZONTAL = 1; // 0x1
-    field public static final int RESIZE_NONE = 0; // 0x0
-    field public static final int RESIZE_VERTICAL = 2; // 0x2
-    field public static final int WIDGET_CATEGORY_HOME_SCREEN = 1; // 0x1
-    field public static final int WIDGET_CATEGORY_KEYGUARD = 2; // 0x2
-    field public static final int WIDGET_CATEGORY_SEARCHBOX = 4; // 0x4
-    field public static final int WIDGET_FEATURE_HIDE_FROM_PICKER = 2; // 0x2
-    field public static final int WIDGET_FEATURE_RECONFIGURABLE = 1; // 0x1
-    field public int autoAdvanceViewId;
-    field public android.content.ComponentName configure;
-    field public int icon;
-    field public int initialKeyguardLayout;
-    field public int initialLayout;
-    field @Deprecated public String label;
-    field public int minHeight;
-    field public int minResizeHeight;
-    field public int minResizeWidth;
-    field public int minWidth;
-    field public int previewImage;
-    field public android.content.ComponentName provider;
-    field public int resizeMode;
-    field public int updatePeriodMillis;
-    field public int widgetCategory;
-    field public int widgetFeatures;
-  }
-
-}
-
-package android.bluetooth {
-
-  public final class BluetoothA2dp implements android.bluetooth.BluetoothProfile {
-    method public void finalize();
-    method public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
-    method public int getConnectionState(android.bluetooth.BluetoothDevice);
-    method public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
-    method public boolean isA2dpPlaying(android.bluetooth.BluetoothDevice);
-    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.a2dp.profile.action.CONNECTION_STATE_CHANGED";
-    field public static final String ACTION_PLAYING_STATE_CHANGED = "android.bluetooth.a2dp.profile.action.PLAYING_STATE_CHANGED";
-    field public static final int STATE_NOT_PLAYING = 11; // 0xb
-    field public static final int STATE_PLAYING = 10; // 0xa
-  }
-
-  public final class BluetoothAdapter {
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean cancelDiscovery();
-    method public static boolean checkBluetoothAddress(String);
-    method public void closeProfileProxy(int, android.bluetooth.BluetoothProfile);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean disable();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean enable();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public String getAddress();
-    method public android.bluetooth.le.BluetoothLeAdvertiser getBluetoothLeAdvertiser();
-    method public android.bluetooth.le.BluetoothLeScanner getBluetoothLeScanner();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public java.util.Set<android.bluetooth.BluetoothDevice> getBondedDevices();
-    method public static android.bluetooth.BluetoothAdapter getDefaultAdapter();
-    method public int getLeMaximumAdvertisingDataLength();
-    method public String getName();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getProfileConnectionState(int);
-    method public boolean getProfileProxy(android.content.Context, android.bluetooth.BluetoothProfile.ServiceListener, int);
-    method public android.bluetooth.BluetoothDevice getRemoteDevice(String);
-    method public android.bluetooth.BluetoothDevice getRemoteDevice(byte[]);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getScanMode();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getState();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isDiscovering();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isEnabled();
-    method public boolean isLe2MPhySupported();
-    method public boolean isLeCodedPhySupported();
-    method public boolean isLeExtendedAdvertisingSupported();
-    method public boolean isLePeriodicAdvertisingSupported();
-    method public boolean isMultipleAdvertisementSupported();
-    method public boolean isOffloadedFilteringSupported();
-    method public boolean isOffloadedScanBatchingSupported();
-    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothServerSocket listenUsingInsecureL2capChannel() throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothServerSocket listenUsingInsecureRfcommWithServiceRecord(String, java.util.UUID) throws java.io.IOException;
-    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothServerSocket listenUsingL2capChannel() throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothServerSocket listenUsingRfcommWithServiceRecord(String, java.util.UUID) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean setName(String);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean startDiscovery();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean startLeScan(android.bluetooth.BluetoothAdapter.LeScanCallback);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean startLeScan(java.util.UUID[], android.bluetooth.BluetoothAdapter.LeScanCallback);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public void stopLeScan(android.bluetooth.BluetoothAdapter.LeScanCallback);
-    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.adapter.action.CONNECTION_STATE_CHANGED";
-    field public static final String ACTION_DISCOVERY_FINISHED = "android.bluetooth.adapter.action.DISCOVERY_FINISHED";
-    field public static final String ACTION_DISCOVERY_STARTED = "android.bluetooth.adapter.action.DISCOVERY_STARTED";
-    field public static final String ACTION_LOCAL_NAME_CHANGED = "android.bluetooth.adapter.action.LOCAL_NAME_CHANGED";
-    field public static final String ACTION_REQUEST_DISCOVERABLE = "android.bluetooth.adapter.action.REQUEST_DISCOVERABLE";
-    field public static final String ACTION_REQUEST_ENABLE = "android.bluetooth.adapter.action.REQUEST_ENABLE";
-    field public static final String ACTION_SCAN_MODE_CHANGED = "android.bluetooth.adapter.action.SCAN_MODE_CHANGED";
-    field public static final String ACTION_STATE_CHANGED = "android.bluetooth.adapter.action.STATE_CHANGED";
-    field public static final int ERROR = -2147483648; // 0x80000000
-    field public static final String EXTRA_CONNECTION_STATE = "android.bluetooth.adapter.extra.CONNECTION_STATE";
-    field public static final String EXTRA_DISCOVERABLE_DURATION = "android.bluetooth.adapter.extra.DISCOVERABLE_DURATION";
-    field public static final String EXTRA_LOCAL_NAME = "android.bluetooth.adapter.extra.LOCAL_NAME";
-    field public static final String EXTRA_PREVIOUS_CONNECTION_STATE = "android.bluetooth.adapter.extra.PREVIOUS_CONNECTION_STATE";
-    field public static final String EXTRA_PREVIOUS_SCAN_MODE = "android.bluetooth.adapter.extra.PREVIOUS_SCAN_MODE";
-    field public static final String EXTRA_PREVIOUS_STATE = "android.bluetooth.adapter.extra.PREVIOUS_STATE";
-    field public static final String EXTRA_SCAN_MODE = "android.bluetooth.adapter.extra.SCAN_MODE";
-    field public static final String EXTRA_STATE = "android.bluetooth.adapter.extra.STATE";
-    field public static final int SCAN_MODE_CONNECTABLE = 21; // 0x15
-    field public static final int SCAN_MODE_CONNECTABLE_DISCOVERABLE = 23; // 0x17
-    field public static final int SCAN_MODE_NONE = 20; // 0x14
-    field public static final int STATE_CONNECTED = 2; // 0x2
-    field public static final int STATE_CONNECTING = 1; // 0x1
-    field public static final int STATE_DISCONNECTED = 0; // 0x0
-    field public static final int STATE_DISCONNECTING = 3; // 0x3
-    field public static final int STATE_OFF = 10; // 0xa
-    field public static final int STATE_ON = 12; // 0xc
-    field public static final int STATE_TURNING_OFF = 13; // 0xd
-    field public static final int STATE_TURNING_ON = 11; // 0xb
-  }
-
-  public static interface BluetoothAdapter.LeScanCallback {
-    method public void onLeScan(android.bluetooth.BluetoothDevice, int, byte[]);
-  }
-
-  public class BluetoothAssignedNumbers {
-    field public static final int AAMP_OF_AMERICA = 190; // 0xbe
-    field public static final int ACCEL_SEMICONDUCTOR = 74; // 0x4a
-    field public static final int ACE_SENSOR = 188; // 0xbc
-    field public static final int ADIDAS = 195; // 0xc3
-    field public static final int ADVANCED_PANMOBIL_SYSTEMS = 145; // 0x91
-    field public static final int AIROHA_TECHNOLOGY = 148; // 0x94
-    field public static final int ALCATEL = 36; // 0x24
-    field public static final int ALPWISE = 154; // 0x9a
-    field public static final int AMICCOM_ELECTRONICS = 192; // 0xc0
-    field public static final int APLIX = 189; // 0xbd
-    field public static final int APPLE = 76; // 0x4c
-    field public static final int APT_LICENSING = 79; // 0x4f
-    field public static final int ARCHOS = 207; // 0xcf
-    field public static final int ARP_DEVICES = 168; // 0xa8
-    field public static final int ATHEROS_COMMUNICATIONS = 69; // 0x45
-    field public static final int ATMEL = 19; // 0x13
-    field public static final int AUSTCO_COMMUNICATION_SYSTEMS = 213; // 0xd5
-    field public static final int AUTONET_MOBILE = 127; // 0x7f
-    field public static final int AVAGO = 78; // 0x4e
-    field public static final int AVM_BERLIN = 31; // 0x1f
-    field public static final int A_AND_D_ENGINEERING = 105; // 0x69
-    field public static final int A_AND_R_CAMBRIDGE = 124; // 0x7c
-    field public static final int BANDSPEED = 32; // 0x20
-    field public static final int BAND_XI_INTERNATIONAL = 100; // 0x64
-    field public static final int BDE_TECHNOLOGY = 180; // 0xb4
-    field public static final int BEATS_ELECTRONICS = 204; // 0xcc
-    field public static final int BEAUTIFUL_ENTERPRISE = 108; // 0x6c
-    field public static final int BEKEY = 178; // 0xb2
-    field public static final int BELKIN_INTERNATIONAL = 92; // 0x5c
-    field public static final int BINAURIC = 203; // 0xcb
-    field public static final int BIOSENTRONICS = 219; // 0xdb
-    field public static final int BLUEGIGA = 71; // 0x47
-    field public static final int BLUERADIOS = 133; // 0x85
-    field public static final int BLUETOOTH_SIG = 63; // 0x3f
-    field public static final int BLUETREK_TECHNOLOGIES = 151; // 0x97
-    field public static final int BOSE = 158; // 0x9e
-    field public static final int BRIARTEK = 109; // 0x6d
-    field public static final int BROADCOM = 15; // 0xf
-    field public static final int CAEN_RFID = 170; // 0xaa
-    field public static final int CAMBRIDGE_SILICON_RADIO = 10; // 0xa
-    field public static final int CATC = 52; // 0x34
-    field public static final int CINETIX = 175; // 0xaf
-    field public static final int CLARINOX_TECHNOLOGIES = 179; // 0xb3
-    field public static final int COLORFY = 156; // 0x9c
-    field public static final int COMMIL = 51; // 0x33
-    field public static final int CONEXANT_SYSTEMS = 28; // 0x1c
-    field public static final int CONNECTBLUE = 113; // 0x71
-    field public static final int CONTINENTAL_AUTOMOTIVE = 75; // 0x4b
-    field public static final int CONWISE_TECHNOLOGY = 66; // 0x42
-    field public static final int CREATIVE_TECHNOLOGY = 118; // 0x76
-    field public static final int C_TECHNOLOGIES = 38; // 0x26
-    field public static final int DANLERS = 225; // 0xe1
-    field public static final int DELORME_PUBLISHING_COMPANY = 128; // 0x80
-    field public static final int DEXCOM = 208; // 0xd0
-    field public static final int DIALOG_SEMICONDUCTOR = 210; // 0xd2
-    field public static final int DIGIANSWER = 12; // 0xc
-    field public static final int ECLIPSE = 53; // 0x35
-    field public static final int ECOTEST = 136; // 0x88
-    field public static final int ELGATO_SYSTEMS = 206; // 0xce
-    field public static final int EM_MICROELECTRONIC_MARIN = 90; // 0x5a
-    field public static final int EQUINOX_AG = 134; // 0x86
-    field public static final int ERICSSON_TECHNOLOGY = 0; // 0x0
-    field public static final int EVLUMA = 201; // 0xc9
-    field public static final int FREE2MOVE = 83; // 0x53
-    field public static final int FUNAI_ELECTRIC = 144; // 0x90
-    field public static final int GARMIN_INTERNATIONAL = 135; // 0x87
-    field public static final int GCT_SEMICONDUCTOR = 45; // 0x2d
-    field public static final int GELO = 200; // 0xc8
-    field public static final int GENEQ = 194; // 0xc2
-    field public static final int GENERAL_MOTORS = 104; // 0x68
-    field public static final int GENNUM = 59; // 0x3b
-    field public static final int GEOFORCE = 157; // 0x9d
-    field public static final int GIBSON_GUITARS = 98; // 0x62
-    field public static final int GN_NETCOM = 103; // 0x67
-    field public static final int GN_RESOUND = 137; // 0x89
-    field public static final int GOOGLE = 224; // 0xe0
-    field public static final int GREEN_THROTTLE_GAMES = 172; // 0xac
-    field public static final int GROUP_SENSE = 115; // 0x73
-    field public static final int HANLYNN_TECHNOLOGIES = 123; // 0x7b
-    field public static final int HARMAN_INTERNATIONAL = 87; // 0x57
-    field public static final int HEWLETT_PACKARD = 101; // 0x65
-    field public static final int HITACHI = 41; // 0x29
-    field public static final int HOSIDEN = 221; // 0xdd
-    field public static final int IBM = 3; // 0x3
-    field public static final int INFINEON_TECHNOLOGIES = 9; // 0x9
-    field public static final int INGENIEUR_SYSTEMGRUPPE_ZAHN = 171; // 0xab
-    field public static final int INTEGRATED_SILICON_SOLUTION = 65; // 0x41
-    field public static final int INTEGRATED_SYSTEM_SOLUTION = 57; // 0x39
-    field public static final int INTEL = 2; // 0x2
-    field public static final int INVENTEL = 30; // 0x1e
-    field public static final int IPEXTREME = 61; // 0x3d
-    field public static final int I_TECH_DYNAMIC_GLOBAL_DISTRIBUTION = 153; // 0x99
-    field public static final int JAWBONE = 138; // 0x8a
-    field public static final int JIANGSU_TOPPOWER_AUTOMOTIVE_ELECTRONICS = 155; // 0x9b
-    field public static final int JOHNSON_CONTROLS = 185; // 0xb9
-    field public static final int J_AND_M = 82; // 0x52
-    field public static final int KAWANTECH = 212; // 0xd4
-    field public static final int KC_TECHNOLOGY = 22; // 0x16
-    field public static final int KENSINGTON_COMPUTER_PRODUCTS_GROUP = 160; // 0xa0
-    field public static final int LAIRD_TECHNOLOGIES = 119; // 0x77
-    field public static final int LESSWIRE = 121; // 0x79
-    field public static final int LG_ELECTRONICS = 196; // 0xc4
-    field public static final int LINAK = 164; // 0xa4
-    field public static final int LUCENT = 7; // 0x7
-    field public static final int LUDUS_HELSINKI = 132; // 0x84
-    field public static final int MACRONIX = 44; // 0x2c
-    field public static final int MAGNETI_MARELLI = 169; // 0xa9
-    field public static final int MANSELLA = 33; // 0x21
-    field public static final int MARVELL = 72; // 0x48
-    field public static final int MATSUSHITA_ELECTRIC = 58; // 0x3a
-    field public static final int MC10 = 202; // 0xca
-    field public static final int MEDIATEK = 70; // 0x46
-    field public static final int MESO_INTERNATIONAL = 182; // 0xb6
-    field public static final int META_WATCH = 163; // 0xa3
-    field public static final int MEWTEL_TECHNOLOGY = 47; // 0x2f
-    field public static final int MICOMMAND = 99; // 0x63
-    field public static final int MICROCHIP_TECHNOLOGY = 205; // 0xcd
-    field public static final int MICROSOFT = 6; // 0x6
-    field public static final int MINDTREE = 106; // 0x6a
-    field public static final int MISFIT_WEARABLES = 223; // 0xdf
-    field public static final int MITEL_SEMICONDUCTOR = 16; // 0x10
-    field public static final int MITSUBISHI_ELECTRIC = 20; // 0x14
-    field public static final int MOBILIAN_CORPORATION = 55; // 0x37
-    field public static final int MONSTER = 112; // 0x70
-    field public static final int MOTOROLA = 8; // 0x8
-    field public static final int MSTAR_SEMICONDUCTOR = 122; // 0x7a
-    field public static final int MUZIK = 222; // 0xde
-    field public static final int NEC = 34; // 0x22
-    field public static final int NEC_LIGHTING = 149; // 0x95
-    field public static final int NEWLOGIC = 23; // 0x17
-    field public static final int NIKE = 120; // 0x78
-    field public static final int NINE_SOLUTIONS = 102; // 0x66
-    field public static final int NOKIA_MOBILE_PHONES = 1; // 0x1
-    field public static final int NORDIC_SEMICONDUCTOR = 89; // 0x59
-    field public static final int NORWOOD_SYSTEMS = 46; // 0x2e
-    field public static final int ODM_TECHNOLOGY = 150; // 0x96
-    field public static final int OMEGAWAVE = 174; // 0xae
-    field public static final int ONSET_COMPUTER = 197; // 0xc5
-    field public static final int OPEN_INTERFACE = 39; // 0x27
-    field public static final int OTL_DYNAMICS = 165; // 0xa5
-    field public static final int PANDA_OCEAN = 166; // 0xa6
-    field public static final int PARROT = 67; // 0x43
-    field public static final int PARTHUS_TECHNOLOGIES = 14; // 0xe
-    field public static final int PASSIF_SEMICONDUCTOR = 176; // 0xb0
-    field public static final int PETER_SYSTEMTECHNIK = 173; // 0xad
-    field public static final int PHILIPS_SEMICONDUCTORS = 37; // 0x25
-    field public static final int PLANTRONICS = 85; // 0x55
-    field public static final int POLAR_ELECTRO = 107; // 0x6b
-    field public static final int POLAR_ELECTRO_EUROPE = 209; // 0xd1
-    field public static final int PROCTER_AND_GAMBLE = 220; // 0xdc
-    field public static final int QUALCOMM = 29; // 0x1d
-    field public static final int QUALCOMM_CONNECTED_EXPERIENCES = 216; // 0xd8
-    field public static final int QUALCOMM_INNOVATION_CENTER = 184; // 0xb8
-    field public static final int QUALCOMM_LABS = 140; // 0x8c
-    field public static final int QUALCOMM_TECHNOLOGIES = 215; // 0xd7
-    field public static final int QUINTIC = 142; // 0x8e
-    field public static final int QUUPPA = 199; // 0xc7
-    field public static final int RALINK_TECHNOLOGY = 91; // 0x5b
-    field public static final int RDA_MICROELECTRONICS = 97; // 0x61
-    field public static final int REALTEK_SEMICONDUCTOR = 93; // 0x5d
-    field public static final int RED_M = 50; // 0x32
-    field public static final int RENESAS_TECHNOLOGY = 54; // 0x36
-    field public static final int RESEARCH_IN_MOTION = 60; // 0x3c
-    field public static final int RF_MICRO_DEVICES = 40; // 0x28
-    field public static final int RIVIERAWAVES = 96; // 0x60
-    field public static final int ROHDE_AND_SCHWARZ = 25; // 0x19
-    field public static final int RTX_TELECOM = 21; // 0x15
-    field public static final int SAMSUNG_ELECTRONICS = 117; // 0x75
-    field public static final int SARIS_CYCLING_GROUP = 177; // 0xb1
-    field public static final int SEERS_TECHNOLOGY = 125; // 0x7d
-    field public static final int SEIKO_EPSON = 64; // 0x40
-    field public static final int SELFLY = 198; // 0xc6
-    field public static final int SEMILINK = 226; // 0xe2
-    field public static final int SENNHEISER_COMMUNICATIONS = 130; // 0x82
-    field public static final int SHANGHAI_SUPER_SMART_ELECTRONICS = 114; // 0x72
-    field public static final int SHENZHEN_EXCELSECU_DATA_TECHNOLOGY = 193; // 0xc1
-    field public static final int SIGNIA_TECHNOLOGIES = 27; // 0x1b
-    field public static final int SILICON_WAVE = 11; // 0xb
-    field public static final int SIRF_TECHNOLOGY = 80; // 0x50
-    field public static final int SOCKET_MOBILE = 68; // 0x44
-    field public static final int SONY_ERICSSON = 86; // 0x56
-    field public static final int SOUND_ID = 111; // 0x6f
-    field public static final int SPORTS_TRACKING_TECHNOLOGIES = 126; // 0x7e
-    field public static final int SR_MEDIZINELEKTRONIK = 161; // 0xa1
-    field public static final int STACCATO_COMMUNICATIONS = 77; // 0x4d
-    field public static final int STALMART_TECHNOLOGY = 191; // 0xbf
-    field public static final int STARKEY_LABORATORIES = 186; // 0xba
-    field public static final int STOLLMAN_E_PLUS_V = 143; // 0x8f
-    field public static final int STONESTREET_ONE = 94; // 0x5e
-    field public static final int ST_MICROELECTRONICS = 48; // 0x30
-    field public static final int SUMMIT_DATA_COMMUNICATIONS = 110; // 0x6e
-    field public static final int SUUNTO = 159; // 0x9f
-    field public static final int SWIRL_NETWORKS = 181; // 0xb5
-    field public static final int SYMBOL_TECHNOLOGIES = 42; // 0x2a
-    field public static final int SYNOPSYS = 49; // 0x31
-    field public static final int SYSTEMS_AND_CHIPS = 62; // 0x3e
-    field public static final int S_POWER_ELECTRONICS = 187; // 0xbb
-    field public static final int TAIXINGBANG_TECHNOLOGY = 211; // 0xd3
-    field public static final int TENOVIS = 43; // 0x2b
-    field public static final int TERAX = 56; // 0x38
-    field public static final int TEXAS_INSTRUMENTS = 13; // 0xd
-    field public static final int THINKOPTICS = 146; // 0x92
-    field public static final int THREECOM = 5; // 0x5
-    field public static final int THREE_DIJOY = 84; // 0x54
-    field public static final int THREE_DSP = 73; // 0x49
-    field public static final int TIMEKEEPING_SYSTEMS = 131; // 0x83
-    field public static final int TIMEX_GROUP_USA = 214; // 0xd6
-    field public static final int TOPCORN_POSITIONING_SYSTEMS = 139; // 0x8b
-    field public static final int TOSHIBA = 4; // 0x4
-    field public static final int TRANSILICA = 24; // 0x18
-    field public static final int TRELAB = 183; // 0xb7
-    field public static final int TTPCOM = 26; // 0x1a
-    field public static final int TXTR = 218; // 0xda
-    field public static final int TZERO_TECHNOLOGIES = 81; // 0x51
-    field public static final int UNIVERSAL_ELECTRONICS = 147; // 0x93
-    field public static final int VERTU = 162; // 0xa2
-    field public static final int VISTEON = 167; // 0xa7
-    field public static final int VIZIO = 88; // 0x58
-    field public static final int VOYETRA_TURTLE_BEACH = 217; // 0xd9
-    field public static final int WAVEPLUS_TECHNOLOGY = 35; // 0x23
-    field public static final int WICENTRIC = 95; // 0x5f
-    field public static final int WIDCOMM = 17; // 0x11
-    field public static final int WUXI_VIMICRO = 129; // 0x81
-    field public static final int ZEEVO = 18; // 0x12
-    field public static final int ZER01_TV = 152; // 0x98
-    field public static final int ZOMM = 116; // 0x74
-    field public static final int ZSCAN_SOFTWARE = 141; // 0x8d
-  }
-
-  public final class BluetoothClass implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getDeviceClass();
-    method public int getMajorDeviceClass();
-    method public boolean hasService(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothClass> CREATOR;
-  }
-
-  public static class BluetoothClass.Device {
-    ctor public BluetoothClass.Device();
-    field public static final int AUDIO_VIDEO_CAMCORDER = 1076; // 0x434
-    field public static final int AUDIO_VIDEO_CAR_AUDIO = 1056; // 0x420
-    field public static final int AUDIO_VIDEO_HANDSFREE = 1032; // 0x408
-    field public static final int AUDIO_VIDEO_HEADPHONES = 1048; // 0x418
-    field public static final int AUDIO_VIDEO_HIFI_AUDIO = 1064; // 0x428
-    field public static final int AUDIO_VIDEO_LOUDSPEAKER = 1044; // 0x414
-    field public static final int AUDIO_VIDEO_MICROPHONE = 1040; // 0x410
-    field public static final int AUDIO_VIDEO_PORTABLE_AUDIO = 1052; // 0x41c
-    field public static final int AUDIO_VIDEO_SET_TOP_BOX = 1060; // 0x424
-    field public static final int AUDIO_VIDEO_UNCATEGORIZED = 1024; // 0x400
-    field public static final int AUDIO_VIDEO_VCR = 1068; // 0x42c
-    field public static final int AUDIO_VIDEO_VIDEO_CAMERA = 1072; // 0x430
-    field public static final int AUDIO_VIDEO_VIDEO_CONFERENCING = 1088; // 0x440
-    field public static final int AUDIO_VIDEO_VIDEO_DISPLAY_AND_LOUDSPEAKER = 1084; // 0x43c
-    field public static final int AUDIO_VIDEO_VIDEO_GAMING_TOY = 1096; // 0x448
-    field public static final int AUDIO_VIDEO_VIDEO_MONITOR = 1080; // 0x438
-    field public static final int AUDIO_VIDEO_WEARABLE_HEADSET = 1028; // 0x404
-    field public static final int COMPUTER_DESKTOP = 260; // 0x104
-    field public static final int COMPUTER_HANDHELD_PC_PDA = 272; // 0x110
-    field public static final int COMPUTER_LAPTOP = 268; // 0x10c
-    field public static final int COMPUTER_PALM_SIZE_PC_PDA = 276; // 0x114
-    field public static final int COMPUTER_SERVER = 264; // 0x108
-    field public static final int COMPUTER_UNCATEGORIZED = 256; // 0x100
-    field public static final int COMPUTER_WEARABLE = 280; // 0x118
-    field public static final int HEALTH_BLOOD_PRESSURE = 2308; // 0x904
-    field public static final int HEALTH_DATA_DISPLAY = 2332; // 0x91c
-    field public static final int HEALTH_GLUCOSE = 2320; // 0x910
-    field public static final int HEALTH_PULSE_OXIMETER = 2324; // 0x914
-    field public static final int HEALTH_PULSE_RATE = 2328; // 0x918
-    field public static final int HEALTH_THERMOMETER = 2312; // 0x908
-    field public static final int HEALTH_UNCATEGORIZED = 2304; // 0x900
-    field public static final int HEALTH_WEIGHING = 2316; // 0x90c
-    field public static final int PHONE_CELLULAR = 516; // 0x204
-    field public static final int PHONE_CORDLESS = 520; // 0x208
-    field public static final int PHONE_ISDN = 532; // 0x214
-    field public static final int PHONE_MODEM_OR_GATEWAY = 528; // 0x210
-    field public static final int PHONE_SMART = 524; // 0x20c
-    field public static final int PHONE_UNCATEGORIZED = 512; // 0x200
-    field public static final int TOY_CONTROLLER = 2064; // 0x810
-    field public static final int TOY_DOLL_ACTION_FIGURE = 2060; // 0x80c
-    field public static final int TOY_GAME = 2068; // 0x814
-    field public static final int TOY_ROBOT = 2052; // 0x804
-    field public static final int TOY_UNCATEGORIZED = 2048; // 0x800
-    field public static final int TOY_VEHICLE = 2056; // 0x808
-    field public static final int WEARABLE_GLASSES = 1812; // 0x714
-    field public static final int WEARABLE_HELMET = 1808; // 0x710
-    field public static final int WEARABLE_JACKET = 1804; // 0x70c
-    field public static final int WEARABLE_PAGER = 1800; // 0x708
-    field public static final int WEARABLE_UNCATEGORIZED = 1792; // 0x700
-    field public static final int WEARABLE_WRIST_WATCH = 1796; // 0x704
-  }
-
-  public static class BluetoothClass.Device.Major {
-    ctor public BluetoothClass.Device.Major();
-    field public static final int AUDIO_VIDEO = 1024; // 0x400
-    field public static final int COMPUTER = 256; // 0x100
-    field public static final int HEALTH = 2304; // 0x900
-    field public static final int IMAGING = 1536; // 0x600
-    field public static final int MISC = 0; // 0x0
-    field public static final int NETWORKING = 768; // 0x300
-    field public static final int PERIPHERAL = 1280; // 0x500
-    field public static final int PHONE = 512; // 0x200
-    field public static final int TOY = 2048; // 0x800
-    field public static final int UNCATEGORIZED = 7936; // 0x1f00
-    field public static final int WEARABLE = 1792; // 0x700
-  }
-
-  public static final class BluetoothClass.Service {
-    ctor public BluetoothClass.Service();
-    field public static final int AUDIO = 2097152; // 0x200000
-    field public static final int CAPTURE = 524288; // 0x80000
-    field public static final int INFORMATION = 8388608; // 0x800000
-    field public static final int LIMITED_DISCOVERABILITY = 8192; // 0x2000
-    field public static final int NETWORKING = 131072; // 0x20000
-    field public static final int OBJECT_TRANSFER = 1048576; // 0x100000
-    field public static final int POSITIONING = 65536; // 0x10000
-    field public static final int RENDER = 262144; // 0x40000
-    field public static final int TELEPHONY = 4194304; // 0x400000
-  }
-
-  public final class BluetoothDevice implements android.os.Parcelable {
-    method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback);
-    method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback, int);
-    method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback, int, int);
-    method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback, int, int, android.os.Handler);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean createBond();
-    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothSocket createInsecureL2capChannel(int) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothSocket createInsecureRfcommSocketToServiceRecord(java.util.UUID) throws java.io.IOException;
-    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothSocket createL2capChannel(int) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothSocket createRfcommSocketToServiceRecord(java.util.UUID) throws java.io.IOException;
-    method public int describeContents();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean fetchUuidsWithSdp();
-    method public String getAddress();
-    method @Nullable @RequiresPermission(android.Manifest.permission.BLUETOOTH) public String getAlias();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothClass getBluetoothClass();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getBondState();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public String getName();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getType();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.os.ParcelUuid[] getUuids();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setPairingConfirmation(boolean);
-    method public boolean setPin(byte[]);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final String ACTION_ACL_CONNECTED = "android.bluetooth.device.action.ACL_CONNECTED";
-    field public static final String ACTION_ACL_DISCONNECTED = "android.bluetooth.device.action.ACL_DISCONNECTED";
-    field public static final String ACTION_ACL_DISCONNECT_REQUESTED = "android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED";
-    field public static final String ACTION_ALIAS_CHANGED = "android.bluetooth.device.action.ALIAS_CHANGED";
-    field public static final String ACTION_BOND_STATE_CHANGED = "android.bluetooth.device.action.BOND_STATE_CHANGED";
-    field public static final String ACTION_CLASS_CHANGED = "android.bluetooth.device.action.CLASS_CHANGED";
-    field public static final String ACTION_FOUND = "android.bluetooth.device.action.FOUND";
-    field public static final String ACTION_NAME_CHANGED = "android.bluetooth.device.action.NAME_CHANGED";
-    field public static final String ACTION_PAIRING_REQUEST = "android.bluetooth.device.action.PAIRING_REQUEST";
-    field public static final String ACTION_UUID = "android.bluetooth.device.action.UUID";
-    field public static final int BOND_BONDED = 12; // 0xc
-    field public static final int BOND_BONDING = 11; // 0xb
-    field public static final int BOND_NONE = 10; // 0xa
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothDevice> CREATOR;
-    field public static final int DEVICE_TYPE_CLASSIC = 1; // 0x1
-    field public static final int DEVICE_TYPE_DUAL = 3; // 0x3
-    field public static final int DEVICE_TYPE_LE = 2; // 0x2
-    field public static final int DEVICE_TYPE_UNKNOWN = 0; // 0x0
-    field public static final int ERROR = -2147483648; // 0x80000000
-    field public static final String EXTRA_BOND_STATE = "android.bluetooth.device.extra.BOND_STATE";
-    field public static final String EXTRA_CLASS = "android.bluetooth.device.extra.CLASS";
-    field public static final String EXTRA_DEVICE = "android.bluetooth.device.extra.DEVICE";
-    field public static final String EXTRA_NAME = "android.bluetooth.device.extra.NAME";
-    field public static final String EXTRA_PAIRING_KEY = "android.bluetooth.device.extra.PAIRING_KEY";
-    field public static final String EXTRA_PAIRING_VARIANT = "android.bluetooth.device.extra.PAIRING_VARIANT";
-    field public static final String EXTRA_PREVIOUS_BOND_STATE = "android.bluetooth.device.extra.PREVIOUS_BOND_STATE";
-    field public static final String EXTRA_RSSI = "android.bluetooth.device.extra.RSSI";
-    field public static final String EXTRA_UUID = "android.bluetooth.device.extra.UUID";
-    field public static final int PAIRING_VARIANT_PASSKEY_CONFIRMATION = 2; // 0x2
-    field public static final int PAIRING_VARIANT_PIN = 0; // 0x0
-    field public static final int PHY_LE_1M = 1; // 0x1
-    field public static final int PHY_LE_1M_MASK = 1; // 0x1
-    field public static final int PHY_LE_2M = 2; // 0x2
-    field public static final int PHY_LE_2M_MASK = 2; // 0x2
-    field public static final int PHY_LE_CODED = 3; // 0x3
-    field public static final int PHY_LE_CODED_MASK = 4; // 0x4
-    field public static final int PHY_OPTION_NO_PREFERRED = 0; // 0x0
-    field public static final int PHY_OPTION_S2 = 1; // 0x1
-    field public static final int PHY_OPTION_S8 = 2; // 0x2
-    field public static final int TRANSPORT_AUTO = 0; // 0x0
-    field public static final int TRANSPORT_BREDR = 1; // 0x1
-    field public static final int TRANSPORT_LE = 2; // 0x2
-  }
-
-  public final class BluetoothGatt implements android.bluetooth.BluetoothProfile {
-    method public void abortReliableWrite();
-    method @Deprecated public void abortReliableWrite(android.bluetooth.BluetoothDevice);
-    method public boolean beginReliableWrite();
-    method public void close();
-    method public boolean connect();
-    method public void disconnect();
-    method public boolean discoverServices();
-    method public boolean executeReliableWrite();
-    method public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
-    method public int getConnectionState(android.bluetooth.BluetoothDevice);
-    method public android.bluetooth.BluetoothDevice getDevice();
-    method public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
-    method public android.bluetooth.BluetoothGattService getService(java.util.UUID);
-    method public java.util.List<android.bluetooth.BluetoothGattService> getServices();
-    method public boolean readCharacteristic(android.bluetooth.BluetoothGattCharacteristic);
-    method public boolean readDescriptor(android.bluetooth.BluetoothGattDescriptor);
-    method public void readPhy();
-    method public boolean readRemoteRssi();
-    method public boolean requestConnectionPriority(int);
-    method public boolean requestMtu(int);
-    method public boolean setCharacteristicNotification(android.bluetooth.BluetoothGattCharacteristic, boolean);
-    method public void setPreferredPhy(int, int, int);
-    method public boolean writeCharacteristic(android.bluetooth.BluetoothGattCharacteristic);
-    method public boolean writeDescriptor(android.bluetooth.BluetoothGattDescriptor);
-    field public static final int CONNECTION_PRIORITY_BALANCED = 0; // 0x0
-    field public static final int CONNECTION_PRIORITY_HIGH = 1; // 0x1
-    field public static final int CONNECTION_PRIORITY_LOW_POWER = 2; // 0x2
-    field public static final int GATT_CONNECTION_CONGESTED = 143; // 0x8f
-    field public static final int GATT_FAILURE = 257; // 0x101
-    field public static final int GATT_INSUFFICIENT_AUTHENTICATION = 5; // 0x5
-    field public static final int GATT_INSUFFICIENT_ENCRYPTION = 15; // 0xf
-    field public static final int GATT_INVALID_ATTRIBUTE_LENGTH = 13; // 0xd
-    field public static final int GATT_INVALID_OFFSET = 7; // 0x7
-    field public static final int GATT_READ_NOT_PERMITTED = 2; // 0x2
-    field public static final int GATT_REQUEST_NOT_SUPPORTED = 6; // 0x6
-    field public static final int GATT_SUCCESS = 0; // 0x0
-    field public static final int GATT_WRITE_NOT_PERMITTED = 3; // 0x3
-  }
-
-  public abstract class BluetoothGattCallback {
-    ctor public BluetoothGattCallback();
-    method public void onCharacteristicChanged(android.bluetooth.BluetoothGatt, android.bluetooth.BluetoothGattCharacteristic);
-    method public void onCharacteristicRead(android.bluetooth.BluetoothGatt, android.bluetooth.BluetoothGattCharacteristic, int);
-    method public void onCharacteristicWrite(android.bluetooth.BluetoothGatt, android.bluetooth.BluetoothGattCharacteristic, int);
-    method public void onConnectionStateChange(android.bluetooth.BluetoothGatt, int, int);
-    method public void onDescriptorRead(android.bluetooth.BluetoothGatt, android.bluetooth.BluetoothGattDescriptor, int);
-    method public void onDescriptorWrite(android.bluetooth.BluetoothGatt, android.bluetooth.BluetoothGattDescriptor, int);
-    method public void onMtuChanged(android.bluetooth.BluetoothGatt, int, int);
-    method public void onPhyRead(android.bluetooth.BluetoothGatt, int, int, int);
-    method public void onPhyUpdate(android.bluetooth.BluetoothGatt, int, int, int);
-    method public void onReadRemoteRssi(android.bluetooth.BluetoothGatt, int, int);
-    method public void onReliableWriteCompleted(android.bluetooth.BluetoothGatt, int);
-    method public void onServicesDiscovered(android.bluetooth.BluetoothGatt, int);
-  }
-
-  public class BluetoothGattCharacteristic implements android.os.Parcelable {
-    ctor public BluetoothGattCharacteristic(java.util.UUID, int, int);
-    method public boolean addDescriptor(android.bluetooth.BluetoothGattDescriptor);
-    method public int describeContents();
-    method public android.bluetooth.BluetoothGattDescriptor getDescriptor(java.util.UUID);
-    method public java.util.List<android.bluetooth.BluetoothGattDescriptor> getDescriptors();
-    method public Float getFloatValue(int, int);
-    method public int getInstanceId();
-    method public Integer getIntValue(int, int);
-    method public int getPermissions();
-    method public int getProperties();
-    method public android.bluetooth.BluetoothGattService getService();
-    method public String getStringValue(int);
-    method public java.util.UUID getUuid();
-    method public byte[] getValue();
-    method public int getWriteType();
-    method public boolean setValue(byte[]);
-    method public boolean setValue(int, int, int);
-    method public boolean setValue(int, int, int, int);
-    method public boolean setValue(String);
-    method public void setWriteType(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothGattCharacteristic> CREATOR;
-    field public static final int FORMAT_FLOAT = 52; // 0x34
-    field public static final int FORMAT_SFLOAT = 50; // 0x32
-    field public static final int FORMAT_SINT16 = 34; // 0x22
-    field public static final int FORMAT_SINT32 = 36; // 0x24
-    field public static final int FORMAT_SINT8 = 33; // 0x21
-    field public static final int FORMAT_UINT16 = 18; // 0x12
-    field public static final int FORMAT_UINT32 = 20; // 0x14
-    field public static final int FORMAT_UINT8 = 17; // 0x11
-    field public static final int PERMISSION_READ = 1; // 0x1
-    field public static final int PERMISSION_READ_ENCRYPTED = 2; // 0x2
-    field public static final int PERMISSION_READ_ENCRYPTED_MITM = 4; // 0x4
-    field public static final int PERMISSION_WRITE = 16; // 0x10
-    field public static final int PERMISSION_WRITE_ENCRYPTED = 32; // 0x20
-    field public static final int PERMISSION_WRITE_ENCRYPTED_MITM = 64; // 0x40
-    field public static final int PERMISSION_WRITE_SIGNED = 128; // 0x80
-    field public static final int PERMISSION_WRITE_SIGNED_MITM = 256; // 0x100
-    field public static final int PROPERTY_BROADCAST = 1; // 0x1
-    field public static final int PROPERTY_EXTENDED_PROPS = 128; // 0x80
-    field public static final int PROPERTY_INDICATE = 32; // 0x20
-    field public static final int PROPERTY_NOTIFY = 16; // 0x10
-    field public static final int PROPERTY_READ = 2; // 0x2
-    field public static final int PROPERTY_SIGNED_WRITE = 64; // 0x40
-    field public static final int PROPERTY_WRITE = 8; // 0x8
-    field public static final int PROPERTY_WRITE_NO_RESPONSE = 4; // 0x4
-    field public static final int WRITE_TYPE_DEFAULT = 2; // 0x2
-    field public static final int WRITE_TYPE_NO_RESPONSE = 1; // 0x1
-    field public static final int WRITE_TYPE_SIGNED = 4; // 0x4
-    field protected java.util.List<android.bluetooth.BluetoothGattDescriptor> mDescriptors;
-  }
-
-  public class BluetoothGattDescriptor implements android.os.Parcelable {
-    ctor public BluetoothGattDescriptor(java.util.UUID, int);
-    method public int describeContents();
-    method public android.bluetooth.BluetoothGattCharacteristic getCharacteristic();
-    method public int getPermissions();
-    method public java.util.UUID getUuid();
-    method public byte[] getValue();
-    method public boolean setValue(byte[]);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothGattDescriptor> CREATOR;
-    field public static final byte[] DISABLE_NOTIFICATION_VALUE;
-    field public static final byte[] ENABLE_INDICATION_VALUE;
-    field public static final byte[] ENABLE_NOTIFICATION_VALUE;
-    field public static final int PERMISSION_READ = 1; // 0x1
-    field public static final int PERMISSION_READ_ENCRYPTED = 2; // 0x2
-    field public static final int PERMISSION_READ_ENCRYPTED_MITM = 4; // 0x4
-    field public static final int PERMISSION_WRITE = 16; // 0x10
-    field public static final int PERMISSION_WRITE_ENCRYPTED = 32; // 0x20
-    field public static final int PERMISSION_WRITE_ENCRYPTED_MITM = 64; // 0x40
-    field public static final int PERMISSION_WRITE_SIGNED = 128; // 0x80
-    field public static final int PERMISSION_WRITE_SIGNED_MITM = 256; // 0x100
-  }
-
-  public final class BluetoothGattServer implements android.bluetooth.BluetoothProfile {
-    method public boolean addService(android.bluetooth.BluetoothGattService);
-    method public void cancelConnection(android.bluetooth.BluetoothDevice);
-    method public void clearServices();
-    method public void close();
-    method public boolean connect(android.bluetooth.BluetoothDevice, boolean);
-    method public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
-    method public int getConnectionState(android.bluetooth.BluetoothDevice);
-    method public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
-    method public android.bluetooth.BluetoothGattService getService(java.util.UUID);
-    method public java.util.List<android.bluetooth.BluetoothGattService> getServices();
-    method public boolean notifyCharacteristicChanged(android.bluetooth.BluetoothDevice, android.bluetooth.BluetoothGattCharacteristic, boolean);
-    method public void readPhy(android.bluetooth.BluetoothDevice);
-    method public boolean removeService(android.bluetooth.BluetoothGattService);
-    method public boolean sendResponse(android.bluetooth.BluetoothDevice, int, int, int, byte[]);
-    method public void setPreferredPhy(android.bluetooth.BluetoothDevice, int, int, int);
-  }
-
-  public abstract class BluetoothGattServerCallback {
-    ctor public BluetoothGattServerCallback();
-    method public void onCharacteristicReadRequest(android.bluetooth.BluetoothDevice, int, int, android.bluetooth.BluetoothGattCharacteristic);
-    method public void onCharacteristicWriteRequest(android.bluetooth.BluetoothDevice, int, android.bluetooth.BluetoothGattCharacteristic, boolean, boolean, int, byte[]);
-    method public void onConnectionStateChange(android.bluetooth.BluetoothDevice, int, int);
-    method public void onDescriptorReadRequest(android.bluetooth.BluetoothDevice, int, int, android.bluetooth.BluetoothGattDescriptor);
-    method public void onDescriptorWriteRequest(android.bluetooth.BluetoothDevice, int, android.bluetooth.BluetoothGattDescriptor, boolean, boolean, int, byte[]);
-    method public void onExecuteWrite(android.bluetooth.BluetoothDevice, int, boolean);
-    method public void onMtuChanged(android.bluetooth.BluetoothDevice, int);
-    method public void onNotificationSent(android.bluetooth.BluetoothDevice, int);
-    method public void onPhyRead(android.bluetooth.BluetoothDevice, int, int, int);
-    method public void onPhyUpdate(android.bluetooth.BluetoothDevice, int, int, int);
-    method public void onServiceAdded(int, android.bluetooth.BluetoothGattService);
-  }
-
-  public class BluetoothGattService implements android.os.Parcelable {
-    ctor public BluetoothGattService(java.util.UUID, int);
-    method public boolean addCharacteristic(android.bluetooth.BluetoothGattCharacteristic);
-    method public boolean addService(android.bluetooth.BluetoothGattService);
-    method public int describeContents();
-    method public android.bluetooth.BluetoothGattCharacteristic getCharacteristic(java.util.UUID);
-    method public java.util.List<android.bluetooth.BluetoothGattCharacteristic> getCharacteristics();
-    method public java.util.List<android.bluetooth.BluetoothGattService> getIncludedServices();
-    method public int getInstanceId();
-    method public int getType();
-    method public java.util.UUID getUuid();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothGattService> CREATOR;
-    field public static final int SERVICE_TYPE_PRIMARY = 0; // 0x0
-    field public static final int SERVICE_TYPE_SECONDARY = 1; // 0x1
-    field protected java.util.List<android.bluetooth.BluetoothGattCharacteristic> mCharacteristics;
-    field protected java.util.List<android.bluetooth.BluetoothGattService> mIncludedServices;
-  }
-
-  public final class BluetoothHeadset implements android.bluetooth.BluetoothProfile {
-    method public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
-    method public int getConnectionState(android.bluetooth.BluetoothDevice);
-    method public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
-    method public boolean isAudioConnected(android.bluetooth.BluetoothDevice);
-    method public boolean sendVendorSpecificResultCode(android.bluetooth.BluetoothDevice, String, String);
-    method public boolean startVoiceRecognition(android.bluetooth.BluetoothDevice);
-    method public boolean stopVoiceRecognition(android.bluetooth.BluetoothDevice);
-    field public static final String ACTION_AUDIO_STATE_CHANGED = "android.bluetooth.headset.profile.action.AUDIO_STATE_CHANGED";
-    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.headset.profile.action.CONNECTION_STATE_CHANGED";
-    field public static final String ACTION_VENDOR_SPECIFIC_HEADSET_EVENT = "android.bluetooth.headset.action.VENDOR_SPECIFIC_HEADSET_EVENT";
-    field public static final int AT_CMD_TYPE_ACTION = 4; // 0x4
-    field public static final int AT_CMD_TYPE_BASIC = 3; // 0x3
-    field public static final int AT_CMD_TYPE_READ = 0; // 0x0
-    field public static final int AT_CMD_TYPE_SET = 2; // 0x2
-    field public static final int AT_CMD_TYPE_TEST = 1; // 0x1
-    field public static final String EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_ARGS = "android.bluetooth.headset.extra.VENDOR_SPECIFIC_HEADSET_EVENT_ARGS";
-    field public static final String EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_CMD = "android.bluetooth.headset.extra.VENDOR_SPECIFIC_HEADSET_EVENT_CMD";
-    field public static final String EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_CMD_TYPE = "android.bluetooth.headset.extra.VENDOR_SPECIFIC_HEADSET_EVENT_CMD_TYPE";
-    field public static final int STATE_AUDIO_CONNECTED = 12; // 0xc
-    field public static final int STATE_AUDIO_CONNECTING = 11; // 0xb
-    field public static final int STATE_AUDIO_DISCONNECTED = 10; // 0xa
-    field public static final String VENDOR_RESULT_CODE_COMMAND_ANDROID = "+ANDROID";
-    field public static final String VENDOR_SPECIFIC_HEADSET_EVENT_COMPANY_ID_CATEGORY = "android.bluetooth.headset.intent.category.companyid";
-  }
-
-  @Deprecated public final class BluetoothHealth implements android.bluetooth.BluetoothProfile {
-    method @Deprecated public boolean connectChannelToSource(android.bluetooth.BluetoothDevice, android.bluetooth.BluetoothHealthAppConfiguration);
-    method @Deprecated public boolean disconnectChannel(android.bluetooth.BluetoothDevice, android.bluetooth.BluetoothHealthAppConfiguration, int);
-    method @Deprecated public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
-    method @Deprecated public int getConnectionState(android.bluetooth.BluetoothDevice);
-    method @Deprecated public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
-    method @Deprecated public android.os.ParcelFileDescriptor getMainChannelFd(android.bluetooth.BluetoothDevice, android.bluetooth.BluetoothHealthAppConfiguration);
-    method @Deprecated public boolean registerSinkAppConfiguration(String, int, android.bluetooth.BluetoothHealthCallback);
-    method @Deprecated public boolean unregisterAppConfiguration(android.bluetooth.BluetoothHealthAppConfiguration);
-    field @Deprecated public static final int APP_CONFIG_REGISTRATION_FAILURE = 1; // 0x1
-    field @Deprecated public static final int APP_CONFIG_REGISTRATION_SUCCESS = 0; // 0x0
-    field @Deprecated public static final int APP_CONFIG_UNREGISTRATION_FAILURE = 3; // 0x3
-    field @Deprecated public static final int APP_CONFIG_UNREGISTRATION_SUCCESS = 2; // 0x2
-    field @Deprecated public static final int CHANNEL_TYPE_RELIABLE = 10; // 0xa
-    field @Deprecated public static final int CHANNEL_TYPE_STREAMING = 11; // 0xb
-    field @Deprecated public static final int SINK_ROLE = 2; // 0x2
-    field @Deprecated public static final int SOURCE_ROLE = 1; // 0x1
-    field @Deprecated public static final int STATE_CHANNEL_CONNECTED = 2; // 0x2
-    field @Deprecated public static final int STATE_CHANNEL_CONNECTING = 1; // 0x1
-    field @Deprecated public static final int STATE_CHANNEL_DISCONNECTED = 0; // 0x0
-    field @Deprecated public static final int STATE_CHANNEL_DISCONNECTING = 3; // 0x3
-  }
-
-  @Deprecated public final class BluetoothHealthAppConfiguration implements android.os.Parcelable {
-    method @Deprecated public int describeContents();
-    method @Deprecated public int getDataType();
-    method @Deprecated public String getName();
-    method @Deprecated public int getRole();
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothHealthAppConfiguration> CREATOR;
-  }
-
-  @Deprecated public abstract class BluetoothHealthCallback {
-    ctor @Deprecated public BluetoothHealthCallback();
-    method @Deprecated @BinderThread public void onHealthAppConfigurationStatusChange(android.bluetooth.BluetoothHealthAppConfiguration, int);
-    method @Deprecated @BinderThread public void onHealthChannelStateChange(android.bluetooth.BluetoothHealthAppConfiguration, android.bluetooth.BluetoothDevice, int, int, android.os.ParcelFileDescriptor, int);
-  }
-
-  public final class BluetoothHearingAid implements android.bluetooth.BluetoothProfile {
-    method @NonNull public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
-    method public int getConnectionState(@NonNull android.bluetooth.BluetoothDevice);
-    method @NonNull public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(@NonNull int[]);
-    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.hearingaid.profile.action.CONNECTION_STATE_CHANGED";
-  }
-
-  public final class BluetoothHidDevice implements android.bluetooth.BluetoothProfile {
-    method public boolean connect(android.bluetooth.BluetoothDevice);
-    method public boolean disconnect(android.bluetooth.BluetoothDevice);
-    method public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
-    method public int getConnectionState(android.bluetooth.BluetoothDevice);
-    method public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
-    method public boolean registerApp(android.bluetooth.BluetoothHidDeviceAppSdpSettings, android.bluetooth.BluetoothHidDeviceAppQosSettings, android.bluetooth.BluetoothHidDeviceAppQosSettings, java.util.concurrent.Executor, android.bluetooth.BluetoothHidDevice.Callback);
-    method public boolean replyReport(android.bluetooth.BluetoothDevice, byte, byte, byte[]);
-    method public boolean reportError(android.bluetooth.BluetoothDevice, byte);
-    method public boolean sendReport(android.bluetooth.BluetoothDevice, int, byte[]);
-    method public boolean unregisterApp();
-    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.hiddevice.profile.action.CONNECTION_STATE_CHANGED";
-    field public static final byte ERROR_RSP_INVALID_PARAM = 4; // 0x4
-    field public static final byte ERROR_RSP_INVALID_RPT_ID = 2; // 0x2
-    field public static final byte ERROR_RSP_NOT_READY = 1; // 0x1
-    field public static final byte ERROR_RSP_SUCCESS = 0; // 0x0
-    field public static final byte ERROR_RSP_UNKNOWN = 14; // 0xe
-    field public static final byte ERROR_RSP_UNSUPPORTED_REQ = 3; // 0x3
-    field public static final byte PROTOCOL_BOOT_MODE = 0; // 0x0
-    field public static final byte PROTOCOL_REPORT_MODE = 1; // 0x1
-    field public static final byte REPORT_TYPE_FEATURE = 3; // 0x3
-    field public static final byte REPORT_TYPE_INPUT = 1; // 0x1
-    field public static final byte REPORT_TYPE_OUTPUT = 2; // 0x2
-    field public static final byte SUBCLASS1_COMBO = -64; // 0xffffffc0
-    field public static final byte SUBCLASS1_KEYBOARD = 64; // 0x40
-    field public static final byte SUBCLASS1_MOUSE = -128; // 0xffffff80
-    field public static final byte SUBCLASS1_NONE = 0; // 0x0
-    field public static final byte SUBCLASS2_CARD_READER = 6; // 0x6
-    field public static final byte SUBCLASS2_DIGITIZER_TABLET = 5; // 0x5
-    field public static final byte SUBCLASS2_GAMEPAD = 2; // 0x2
-    field public static final byte SUBCLASS2_JOYSTICK = 1; // 0x1
-    field public static final byte SUBCLASS2_REMOTE_CONTROL = 3; // 0x3
-    field public static final byte SUBCLASS2_SENSING_DEVICE = 4; // 0x4
-    field public static final byte SUBCLASS2_UNCATEGORIZED = 0; // 0x0
-  }
-
-  public abstract static class BluetoothHidDevice.Callback {
-    ctor public BluetoothHidDevice.Callback();
-    method public void onAppStatusChanged(android.bluetooth.BluetoothDevice, boolean);
-    method public void onConnectionStateChanged(android.bluetooth.BluetoothDevice, int);
-    method public void onGetReport(android.bluetooth.BluetoothDevice, byte, byte, int);
-    method public void onInterruptData(android.bluetooth.BluetoothDevice, byte, byte[]);
-    method public void onSetProtocol(android.bluetooth.BluetoothDevice, byte);
-    method public void onSetReport(android.bluetooth.BluetoothDevice, byte, byte, byte[]);
-    method public void onVirtualCableUnplug(android.bluetooth.BluetoothDevice);
-  }
-
-  public final class BluetoothHidDeviceAppQosSettings implements android.os.Parcelable {
-    ctor public BluetoothHidDeviceAppQosSettings(int, int, int, int, int, int);
-    method public int describeContents();
-    method public int getDelayVariation();
-    method public int getLatency();
-    method public int getPeakBandwidth();
-    method public int getServiceType();
-    method public int getTokenBucketSize();
-    method public int getTokenRate();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothHidDeviceAppQosSettings> CREATOR;
-    field public static final int MAX = -1; // 0xffffffff
-    field public static final int SERVICE_BEST_EFFORT = 1; // 0x1
-    field public static final int SERVICE_GUARANTEED = 2; // 0x2
-    field public static final int SERVICE_NO_TRAFFIC = 0; // 0x0
-  }
-
-  public final class BluetoothHidDeviceAppSdpSettings implements android.os.Parcelable {
-    ctor public BluetoothHidDeviceAppSdpSettings(String, String, String, byte, byte[]);
-    method public int describeContents();
-    method public String getDescription();
-    method public byte[] getDescriptors();
-    method public String getName();
-    method public String getProvider();
-    method public byte getSubclass();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothHidDeviceAppSdpSettings> CREATOR;
-  }
-
-  public final class BluetoothManager {
-    method public android.bluetooth.BluetoothAdapter getAdapter();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices(int);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getConnectionState(android.bluetooth.BluetoothDevice, int);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int, int[]);
-    method public android.bluetooth.BluetoothGattServer openGattServer(android.content.Context, android.bluetooth.BluetoothGattServerCallback);
-  }
-
-  public interface BluetoothProfile {
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getConnectionState(android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
-    field public static final int A2DP = 2; // 0x2
-    field public static final String EXTRA_PREVIOUS_STATE = "android.bluetooth.profile.extra.PREVIOUS_STATE";
-    field public static final String EXTRA_STATE = "android.bluetooth.profile.extra.STATE";
-    field public static final int GATT = 7; // 0x7
-    field public static final int GATT_SERVER = 8; // 0x8
-    field public static final int HEADSET = 1; // 0x1
-    field @Deprecated public static final int HEALTH = 3; // 0x3
-    field public static final int HEARING_AID = 21; // 0x15
-    field public static final int HID_DEVICE = 19; // 0x13
-    field public static final int SAP = 10; // 0xa
-    field public static final int STATE_CONNECTED = 2; // 0x2
-    field public static final int STATE_CONNECTING = 1; // 0x1
-    field public static final int STATE_DISCONNECTED = 0; // 0x0
-    field public static final int STATE_DISCONNECTING = 3; // 0x3
-  }
-
-  public static interface BluetoothProfile.ServiceListener {
-    method public void onServiceConnected(int, android.bluetooth.BluetoothProfile);
-    method public void onServiceDisconnected(int);
-  }
-
-  public final class BluetoothServerSocket implements java.io.Closeable {
-    method public android.bluetooth.BluetoothSocket accept() throws java.io.IOException;
-    method public android.bluetooth.BluetoothSocket accept(int) throws java.io.IOException;
-    method public void close() throws java.io.IOException;
-    method public int getPsm();
-  }
-
-  public final class BluetoothSocket implements java.io.Closeable {
-    method public void close() throws java.io.IOException;
-    method public void connect() throws java.io.IOException;
-    method public int getConnectionType();
-    method public java.io.InputStream getInputStream() throws java.io.IOException;
-    method public int getMaxReceivePacketSize();
-    method public int getMaxTransmitPacketSize();
-    method public java.io.OutputStream getOutputStream() throws java.io.IOException;
-    method public android.bluetooth.BluetoothDevice getRemoteDevice();
-    method public boolean isConnected();
-    field public static final int TYPE_L2CAP = 3; // 0x3
-    field public static final int TYPE_RFCOMM = 1; // 0x1
-    field public static final int TYPE_SCO = 2; // 0x2
-  }
-
-}
-
-package android.bluetooth.le {
-
-  public abstract class AdvertiseCallback {
-    ctor public AdvertiseCallback();
-    method public void onStartFailure(int);
-    method public void onStartSuccess(android.bluetooth.le.AdvertiseSettings);
-    field public static final int ADVERTISE_FAILED_ALREADY_STARTED = 3; // 0x3
-    field public static final int ADVERTISE_FAILED_DATA_TOO_LARGE = 1; // 0x1
-    field public static final int ADVERTISE_FAILED_FEATURE_UNSUPPORTED = 5; // 0x5
-    field public static final int ADVERTISE_FAILED_INTERNAL_ERROR = 4; // 0x4
-    field public static final int ADVERTISE_FAILED_TOO_MANY_ADVERTISERS = 2; // 0x2
-  }
-
-  public final class AdvertiseData implements android.os.Parcelable {
-    method public int describeContents();
-    method public boolean getIncludeDeviceName();
-    method public boolean getIncludeTxPowerLevel();
-    method public android.util.SparseArray<byte[]> getManufacturerSpecificData();
-    method public java.util.Map<android.os.ParcelUuid,byte[]> getServiceData();
-    method public java.util.List<android.os.ParcelUuid> getServiceUuids();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.AdvertiseData> CREATOR;
-  }
-
-  public static final class AdvertiseData.Builder {
-    ctor public AdvertiseData.Builder();
-    method public android.bluetooth.le.AdvertiseData.Builder addManufacturerData(int, byte[]);
-    method public android.bluetooth.le.AdvertiseData.Builder addServiceData(android.os.ParcelUuid, byte[]);
-    method public android.bluetooth.le.AdvertiseData.Builder addServiceUuid(android.os.ParcelUuid);
-    method public android.bluetooth.le.AdvertiseData build();
-    method public android.bluetooth.le.AdvertiseData.Builder setIncludeDeviceName(boolean);
-    method public android.bluetooth.le.AdvertiseData.Builder setIncludeTxPowerLevel(boolean);
-  }
-
-  public final class AdvertiseSettings implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getMode();
-    method public int getTimeout();
-    method public int getTxPowerLevel();
-    method public boolean isConnectable();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ADVERTISE_MODE_BALANCED = 1; // 0x1
-    field public static final int ADVERTISE_MODE_LOW_LATENCY = 2; // 0x2
-    field public static final int ADVERTISE_MODE_LOW_POWER = 0; // 0x0
-    field public static final int ADVERTISE_TX_POWER_HIGH = 3; // 0x3
-    field public static final int ADVERTISE_TX_POWER_LOW = 1; // 0x1
-    field public static final int ADVERTISE_TX_POWER_MEDIUM = 2; // 0x2
-    field public static final int ADVERTISE_TX_POWER_ULTRA_LOW = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.AdvertiseSettings> CREATOR;
-  }
-
-  public static final class AdvertiseSettings.Builder {
-    ctor public AdvertiseSettings.Builder();
-    method public android.bluetooth.le.AdvertiseSettings build();
-    method public android.bluetooth.le.AdvertiseSettings.Builder setAdvertiseMode(int);
-    method public android.bluetooth.le.AdvertiseSettings.Builder setConnectable(boolean);
-    method public android.bluetooth.le.AdvertiseSettings.Builder setTimeout(int);
-    method public android.bluetooth.le.AdvertiseSettings.Builder setTxPowerLevel(int);
-  }
-
-  public final class AdvertisingSet {
-    method public void enableAdvertising(boolean, int, int);
-    method public void setAdvertisingData(android.bluetooth.le.AdvertiseData);
-    method public void setAdvertisingParameters(android.bluetooth.le.AdvertisingSetParameters);
-    method public void setPeriodicAdvertisingData(android.bluetooth.le.AdvertiseData);
-    method public void setPeriodicAdvertisingEnabled(boolean);
-    method public void setPeriodicAdvertisingParameters(android.bluetooth.le.PeriodicAdvertisingParameters);
-    method public void setScanResponseData(android.bluetooth.le.AdvertiseData);
-  }
-
-  public abstract class AdvertisingSetCallback {
-    ctor public AdvertisingSetCallback();
-    method public void onAdvertisingDataSet(android.bluetooth.le.AdvertisingSet, int);
-    method public void onAdvertisingEnabled(android.bluetooth.le.AdvertisingSet, boolean, int);
-    method public void onAdvertisingParametersUpdated(android.bluetooth.le.AdvertisingSet, int, int);
-    method public void onAdvertisingSetStarted(android.bluetooth.le.AdvertisingSet, int, int);
-    method public void onAdvertisingSetStopped(android.bluetooth.le.AdvertisingSet);
-    method public void onPeriodicAdvertisingDataSet(android.bluetooth.le.AdvertisingSet, int);
-    method public void onPeriodicAdvertisingEnabled(android.bluetooth.le.AdvertisingSet, boolean, int);
-    method public void onPeriodicAdvertisingParametersUpdated(android.bluetooth.le.AdvertisingSet, int);
-    method public void onScanResponseDataSet(android.bluetooth.le.AdvertisingSet, int);
-    field public static final int ADVERTISE_FAILED_ALREADY_STARTED = 3; // 0x3
-    field public static final int ADVERTISE_FAILED_DATA_TOO_LARGE = 1; // 0x1
-    field public static final int ADVERTISE_FAILED_FEATURE_UNSUPPORTED = 5; // 0x5
-    field public static final int ADVERTISE_FAILED_INTERNAL_ERROR = 4; // 0x4
-    field public static final int ADVERTISE_FAILED_TOO_MANY_ADVERTISERS = 2; // 0x2
-    field public static final int ADVERTISE_SUCCESS = 0; // 0x0
-  }
-
-  public final class AdvertisingSetParameters implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getInterval();
-    method public int getPrimaryPhy();
-    method public int getSecondaryPhy();
-    method public int getTxPowerLevel();
-    method public boolean includeTxPower();
-    method public boolean isAnonymous();
-    method public boolean isConnectable();
-    method public boolean isLegacy();
-    method public boolean isScannable();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.AdvertisingSetParameters> CREATOR;
-    field public static final int INTERVAL_HIGH = 1600; // 0x640
-    field public static final int INTERVAL_LOW = 160; // 0xa0
-    field public static final int INTERVAL_MAX = 16777215; // 0xffffff
-    field public static final int INTERVAL_MEDIUM = 400; // 0x190
-    field public static final int INTERVAL_MIN = 160; // 0xa0
-    field public static final int TX_POWER_HIGH = 1; // 0x1
-    field public static final int TX_POWER_LOW = -15; // 0xfffffff1
-    field public static final int TX_POWER_MAX = 1; // 0x1
-    field public static final int TX_POWER_MEDIUM = -7; // 0xfffffff9
-    field public static final int TX_POWER_MIN = -127; // 0xffffff81
-    field public static final int TX_POWER_ULTRA_LOW = -21; // 0xffffffeb
-  }
-
-  public static final class AdvertisingSetParameters.Builder {
-    ctor public AdvertisingSetParameters.Builder();
-    method public android.bluetooth.le.AdvertisingSetParameters build();
-    method public android.bluetooth.le.AdvertisingSetParameters.Builder setAnonymous(boolean);
-    method public android.bluetooth.le.AdvertisingSetParameters.Builder setConnectable(boolean);
-    method public android.bluetooth.le.AdvertisingSetParameters.Builder setIncludeTxPower(boolean);
-    method public android.bluetooth.le.AdvertisingSetParameters.Builder setInterval(int);
-    method public android.bluetooth.le.AdvertisingSetParameters.Builder setLegacyMode(boolean);
-    method public android.bluetooth.le.AdvertisingSetParameters.Builder setPrimaryPhy(int);
-    method public android.bluetooth.le.AdvertisingSetParameters.Builder setScannable(boolean);
-    method public android.bluetooth.le.AdvertisingSetParameters.Builder setSecondaryPhy(int);
-    method public android.bluetooth.le.AdvertisingSetParameters.Builder setTxPowerLevel(int);
-  }
-
-  public final class BluetoothLeAdvertiser {
-    method public void startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback);
-    method public void startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback);
-    method public void startAdvertisingSet(android.bluetooth.le.AdvertisingSetParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.PeriodicAdvertisingParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertisingSetCallback);
-    method public void startAdvertisingSet(android.bluetooth.le.AdvertisingSetParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.PeriodicAdvertisingParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertisingSetCallback, android.os.Handler);
-    method public void startAdvertisingSet(android.bluetooth.le.AdvertisingSetParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.PeriodicAdvertisingParameters, android.bluetooth.le.AdvertiseData, int, int, android.bluetooth.le.AdvertisingSetCallback);
-    method public void startAdvertisingSet(android.bluetooth.le.AdvertisingSetParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.PeriodicAdvertisingParameters, android.bluetooth.le.AdvertiseData, int, int, android.bluetooth.le.AdvertisingSetCallback, android.os.Handler);
-    method public void stopAdvertising(android.bluetooth.le.AdvertiseCallback);
-    method public void stopAdvertisingSet(android.bluetooth.le.AdvertisingSetCallback);
-  }
-
-  public final class BluetoothLeScanner {
-    method public void flushPendingScanResults(android.bluetooth.le.ScanCallback);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public void startScan(android.bluetooth.le.ScanCallback);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public void startScan(java.util.List<android.bluetooth.le.ScanFilter>, android.bluetooth.le.ScanSettings, android.bluetooth.le.ScanCallback);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public int startScan(@Nullable java.util.List<android.bluetooth.le.ScanFilter>, @Nullable android.bluetooth.le.ScanSettings, @NonNull android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public void stopScan(android.bluetooth.le.ScanCallback);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public void stopScan(android.app.PendingIntent);
-    field public static final String EXTRA_CALLBACK_TYPE = "android.bluetooth.le.extra.CALLBACK_TYPE";
-    field public static final String EXTRA_ERROR_CODE = "android.bluetooth.le.extra.ERROR_CODE";
-    field public static final String EXTRA_LIST_SCAN_RESULT = "android.bluetooth.le.extra.LIST_SCAN_RESULT";
-  }
-
-  public final class PeriodicAdvertisingParameters implements android.os.Parcelable {
-    method public int describeContents();
-    method public boolean getIncludeTxPower();
-    method public int getInterval();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.bluetooth.le.PeriodicAdvertisingParameters> CREATOR;
-  }
-
-  public static final class PeriodicAdvertisingParameters.Builder {
-    ctor public PeriodicAdvertisingParameters.Builder();
-    method public android.bluetooth.le.PeriodicAdvertisingParameters build();
-    method public android.bluetooth.le.PeriodicAdvertisingParameters.Builder setIncludeTxPower(boolean);
-    method public android.bluetooth.le.PeriodicAdvertisingParameters.Builder setInterval(int);
-  }
-
-  public abstract class ScanCallback {
-    ctor public ScanCallback();
-    method public void onBatchScanResults(java.util.List<android.bluetooth.le.ScanResult>);
-    method public void onScanFailed(int);
-    method public void onScanResult(int, android.bluetooth.le.ScanResult);
-    field public static final int SCAN_FAILED_ALREADY_STARTED = 1; // 0x1
-    field public static final int SCAN_FAILED_APPLICATION_REGISTRATION_FAILED = 2; // 0x2
-    field public static final int SCAN_FAILED_FEATURE_UNSUPPORTED = 4; // 0x4
-    field public static final int SCAN_FAILED_INTERNAL_ERROR = 3; // 0x3
-  }
-
-  public final class ScanFilter implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getDeviceAddress();
-    method @Nullable public String getDeviceName();
-    method @Nullable public byte[] getManufacturerData();
-    method @Nullable public byte[] getManufacturerDataMask();
-    method public int getManufacturerId();
-    method @Nullable public byte[] getServiceData();
-    method @Nullable public byte[] getServiceDataMask();
-    method @Nullable public android.os.ParcelUuid getServiceDataUuid();
-    method @Nullable public android.os.ParcelUuid getServiceSolicitationUuid();
-    method @Nullable public android.os.ParcelUuid getServiceSolicitationUuidMask();
-    method @Nullable public android.os.ParcelUuid getServiceUuid();
-    method @Nullable public android.os.ParcelUuid getServiceUuidMask();
-    method public boolean matches(android.bluetooth.le.ScanResult);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.ScanFilter> CREATOR;
-  }
-
-  public static final class ScanFilter.Builder {
-    ctor public ScanFilter.Builder();
-    method public android.bluetooth.le.ScanFilter build();
-    method public android.bluetooth.le.ScanFilter.Builder setDeviceAddress(String);
-    method public android.bluetooth.le.ScanFilter.Builder setDeviceName(String);
-    method public android.bluetooth.le.ScanFilter.Builder setManufacturerData(int, byte[]);
-    method public android.bluetooth.le.ScanFilter.Builder setManufacturerData(int, byte[], byte[]);
-    method public android.bluetooth.le.ScanFilter.Builder setServiceData(android.os.ParcelUuid, byte[]);
-    method public android.bluetooth.le.ScanFilter.Builder setServiceData(android.os.ParcelUuid, byte[], byte[]);
-    method @NonNull public android.bluetooth.le.ScanFilter.Builder setServiceSolicitationUuid(@Nullable android.os.ParcelUuid);
-    method @NonNull public android.bluetooth.le.ScanFilter.Builder setServiceSolicitationUuid(@Nullable android.os.ParcelUuid, @Nullable android.os.ParcelUuid);
-    method public android.bluetooth.le.ScanFilter.Builder setServiceUuid(android.os.ParcelUuid);
-    method public android.bluetooth.le.ScanFilter.Builder setServiceUuid(android.os.ParcelUuid, android.os.ParcelUuid);
-  }
-
-  public final class ScanRecord {
-    method public int getAdvertiseFlags();
-    method public byte[] getBytes();
-    method @Nullable public String getDeviceName();
-    method public android.util.SparseArray<byte[]> getManufacturerSpecificData();
-    method @Nullable public byte[] getManufacturerSpecificData(int);
-    method public java.util.Map<android.os.ParcelUuid,byte[]> getServiceData();
-    method @Nullable public byte[] getServiceData(android.os.ParcelUuid);
-    method @NonNull public java.util.List<android.os.ParcelUuid> getServiceSolicitationUuids();
-    method public java.util.List<android.os.ParcelUuid> getServiceUuids();
-    method public int getTxPowerLevel();
-  }
-
-  public final class ScanResult implements android.os.Parcelable {
-    ctor @Deprecated public ScanResult(android.bluetooth.BluetoothDevice, android.bluetooth.le.ScanRecord, int, long);
-    ctor public ScanResult(android.bluetooth.BluetoothDevice, int, int, int, int, int, int, int, android.bluetooth.le.ScanRecord, long);
-    method public int describeContents();
-    method public int getAdvertisingSid();
-    method public int getDataStatus();
-    method public android.bluetooth.BluetoothDevice getDevice();
-    method public int getPeriodicAdvertisingInterval();
-    method public int getPrimaryPhy();
-    method public int getRssi();
-    method @Nullable public android.bluetooth.le.ScanRecord getScanRecord();
-    method public int getSecondaryPhy();
-    method public long getTimestampNanos();
-    method public int getTxPower();
-    method public boolean isConnectable();
-    method public boolean isLegacy();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.ScanResult> CREATOR;
-    field public static final int DATA_COMPLETE = 0; // 0x0
-    field public static final int DATA_TRUNCATED = 2; // 0x2
-    field public static final int PERIODIC_INTERVAL_NOT_PRESENT = 0; // 0x0
-    field public static final int PHY_UNUSED = 0; // 0x0
-    field public static final int SID_NOT_PRESENT = 255; // 0xff
-    field public static final int TX_POWER_NOT_PRESENT = 127; // 0x7f
-  }
-
-  public final class ScanSettings implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getCallbackType();
-    method public boolean getLegacy();
-    method public int getPhy();
-    method public long getReportDelayMillis();
-    method public int getScanMode();
-    method public int getScanResultType();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CALLBACK_TYPE_ALL_MATCHES = 1; // 0x1
-    field public static final int CALLBACK_TYPE_FIRST_MATCH = 2; // 0x2
-    field public static final int CALLBACK_TYPE_MATCH_LOST = 4; // 0x4
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.ScanSettings> CREATOR;
-    field public static final int MATCH_MODE_AGGRESSIVE = 1; // 0x1
-    field public static final int MATCH_MODE_STICKY = 2; // 0x2
-    field public static final int MATCH_NUM_FEW_ADVERTISEMENT = 2; // 0x2
-    field public static final int MATCH_NUM_MAX_ADVERTISEMENT = 3; // 0x3
-    field public static final int MATCH_NUM_ONE_ADVERTISEMENT = 1; // 0x1
-    field public static final int PHY_LE_ALL_SUPPORTED = 255; // 0xff
-    field public static final int SCAN_MODE_BALANCED = 1; // 0x1
-    field public static final int SCAN_MODE_LOW_LATENCY = 2; // 0x2
-    field public static final int SCAN_MODE_LOW_POWER = 0; // 0x0
-    field public static final int SCAN_MODE_OPPORTUNISTIC = -1; // 0xffffffff
-  }
-
-  public static final class ScanSettings.Builder {
-    ctor public ScanSettings.Builder();
-    method public android.bluetooth.le.ScanSettings build();
-    method public android.bluetooth.le.ScanSettings.Builder setCallbackType(int);
-    method public android.bluetooth.le.ScanSettings.Builder setLegacy(boolean);
-    method public android.bluetooth.le.ScanSettings.Builder setMatchMode(int);
-    method public android.bluetooth.le.ScanSettings.Builder setNumOfMatches(int);
-    method public android.bluetooth.le.ScanSettings.Builder setPhy(int);
-    method public android.bluetooth.le.ScanSettings.Builder setReportDelay(long);
-    method public android.bluetooth.le.ScanSettings.Builder setScanMode(int);
-  }
-
-}
-
-package android.companion {
-
-  public final class AssociationRequest implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.companion.AssociationRequest> CREATOR;
-  }
-
-  public static final class AssociationRequest.Builder {
-    ctor public AssociationRequest.Builder();
-    method @NonNull public android.companion.AssociationRequest.Builder addDeviceFilter(@Nullable android.companion.DeviceFilter<?>);
-    method @NonNull public android.companion.AssociationRequest build();
-    method @NonNull public android.companion.AssociationRequest.Builder setSingleDevice(boolean);
-  }
-
-  public final class BluetoothDeviceFilter implements android.companion.DeviceFilter<android.bluetooth.BluetoothDevice> {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.companion.BluetoothDeviceFilter> CREATOR;
-  }
-
-  public static final class BluetoothDeviceFilter.Builder {
-    ctor public BluetoothDeviceFilter.Builder();
-    method @NonNull public android.companion.BluetoothDeviceFilter.Builder addServiceUuid(@Nullable android.os.ParcelUuid, @Nullable android.os.ParcelUuid);
-    method @NonNull public android.companion.BluetoothDeviceFilter build();
-    method @NonNull public android.companion.BluetoothDeviceFilter.Builder setAddress(@Nullable String);
-    method public android.companion.BluetoothDeviceFilter.Builder setNamePattern(@Nullable java.util.regex.Pattern);
-  }
-
-  public final class BluetoothLeDeviceFilter implements android.companion.DeviceFilter<android.bluetooth.le.ScanResult> {
-    method public int describeContents();
-    method public static int getRenamePrefixLengthLimit();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.companion.BluetoothLeDeviceFilter> CREATOR;
-  }
-
-  public static final class BluetoothLeDeviceFilter.Builder {
-    ctor public BluetoothLeDeviceFilter.Builder();
-    method @NonNull public android.companion.BluetoothLeDeviceFilter build();
-    method public android.companion.BluetoothLeDeviceFilter.Builder setNamePattern(@Nullable java.util.regex.Pattern);
-    method @NonNull public android.companion.BluetoothLeDeviceFilter.Builder setRawDataFilter(@NonNull byte[], @Nullable byte[]);
-    method @NonNull public android.companion.BluetoothLeDeviceFilter.Builder setRenameFromBytes(@NonNull String, @NonNull String, int, int, java.nio.ByteOrder);
-    method @NonNull public android.companion.BluetoothLeDeviceFilter.Builder setRenameFromName(@NonNull String, @NonNull String, int, int);
-    method @NonNull public android.companion.BluetoothLeDeviceFilter.Builder setScanFilter(@Nullable android.bluetooth.le.ScanFilter);
-  }
-
-  public final class CompanionDeviceManager {
-    method public void associate(@NonNull android.companion.AssociationRequest, @NonNull android.companion.CompanionDeviceManager.Callback, @Nullable android.os.Handler);
-    method public void disassociate(@NonNull String);
-    method @NonNull public java.util.List<java.lang.String> getAssociations();
-    method public boolean hasNotificationAccess(android.content.ComponentName);
-    method public void requestNotificationAccess(android.content.ComponentName);
-    field public static final String EXTRA_DEVICE = "android.companion.extra.DEVICE";
-  }
-
-  public abstract static class CompanionDeviceManager.Callback {
-    ctor public CompanionDeviceManager.Callback();
-    method public abstract void onDeviceFound(android.content.IntentSender);
-    method public abstract void onFailure(CharSequence);
-  }
-
-  public interface DeviceFilter<D extends android.os.Parcelable> extends android.os.Parcelable {
-  }
-
-  public final class WifiDeviceFilter implements android.companion.DeviceFilter<android.net.wifi.ScanResult> {
-    method public int describeContents();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.companion.WifiDeviceFilter> CREATOR;
-  }
-
-  public static final class WifiDeviceFilter.Builder {
-    ctor public WifiDeviceFilter.Builder();
-    method @NonNull public android.companion.WifiDeviceFilter build();
-    method @NonNull public android.companion.WifiDeviceFilter.Builder setBssid(@NonNull android.net.MacAddress);
-    method @NonNull public android.companion.WifiDeviceFilter.Builder setBssidMask(@NonNull android.net.MacAddress);
-    method @NonNull public android.companion.WifiDeviceFilter.Builder setNamePattern(@Nullable java.util.regex.Pattern);
-  }
-
-}
-
-package android.content {
-
-  public abstract class AbstractThreadedSyncAdapter {
-    ctor public AbstractThreadedSyncAdapter(android.content.Context, boolean);
-    ctor public AbstractThreadedSyncAdapter(android.content.Context, boolean, boolean);
-    method public android.content.Context getContext();
-    method public final android.os.IBinder getSyncAdapterBinder();
-    method public abstract void onPerformSync(android.accounts.Account, android.os.Bundle, String, android.content.ContentProviderClient, android.content.SyncResult);
-    method public void onSecurityException(android.accounts.Account, android.os.Bundle, String, android.content.SyncResult);
-    method public void onSyncCanceled();
-    method public void onSyncCanceled(Thread);
-    method @MainThread public boolean onUnsyncableAccount();
-    field @Deprecated public static final int LOG_SYNC_DETAILS = 2743; // 0xab7
-  }
-
-  public class ActivityNotFoundException extends java.lang.RuntimeException {
-    ctor public ActivityNotFoundException();
-    ctor public ActivityNotFoundException(String);
-  }
-
-  public abstract class AsyncQueryHandler extends android.os.Handler {
-    ctor public AsyncQueryHandler(android.content.ContentResolver);
-    method public final void cancelOperation(int);
-    method protected android.os.Handler createHandler(android.os.Looper);
-    method protected void onDeleteComplete(int, Object, int);
-    method protected void onInsertComplete(int, Object, android.net.Uri);
-    method protected void onQueryComplete(int, Object, android.database.Cursor);
-    method protected void onUpdateComplete(int, Object, int);
-    method public final void startDelete(int, Object, android.net.Uri, String, String[]);
-    method public final void startInsert(int, Object, android.net.Uri, android.content.ContentValues);
-    method public void startQuery(int, Object, android.net.Uri, String[], String, String[], String);
-    method public final void startUpdate(int, Object, android.net.Uri, android.content.ContentValues, String, String[]);
-  }
-
-  protected static final class AsyncQueryHandler.WorkerArgs {
-    ctor protected AsyncQueryHandler.WorkerArgs();
-    field public Object cookie;
-    field public android.os.Handler handler;
-    field public String orderBy;
-    field public String[] projection;
-    field public Object result;
-    field public String selection;
-    field public String[] selectionArgs;
-    field public android.net.Uri uri;
-    field public android.content.ContentValues values;
-  }
-
-  protected class AsyncQueryHandler.WorkerHandler extends android.os.Handler {
-    ctor public AsyncQueryHandler.WorkerHandler(android.os.Looper);
-  }
-
-  @Deprecated public abstract class AsyncTaskLoader<D> extends android.content.Loader<D> {
-    ctor @Deprecated public AsyncTaskLoader(android.content.Context);
-    method @Deprecated public void cancelLoadInBackground();
-    method @Deprecated public boolean isLoadInBackgroundCanceled();
-    method @Deprecated public abstract D loadInBackground();
-    method @Deprecated public void onCanceled(D);
-    method @Deprecated protected D onLoadInBackground();
-    method @Deprecated public void setUpdateThrottle(long);
-  }
-
-  public abstract class BroadcastReceiver {
-    ctor public BroadcastReceiver();
-    method public final void abortBroadcast();
-    method public final void clearAbortBroadcast();
-    method public final boolean getAbortBroadcast();
-    method public final boolean getDebugUnregister();
-    method public final int getResultCode();
-    method public final String getResultData();
-    method public final android.os.Bundle getResultExtras(boolean);
-    method public final android.content.BroadcastReceiver.PendingResult goAsync();
-    method public final boolean isInitialStickyBroadcast();
-    method public final boolean isOrderedBroadcast();
-    method public abstract void onReceive(android.content.Context, android.content.Intent);
-    method public android.os.IBinder peekService(android.content.Context, android.content.Intent);
-    method public final void setDebugUnregister(boolean);
-    method public final void setOrderedHint(boolean);
-    method public final void setResult(int, String, android.os.Bundle);
-    method public final void setResultCode(int);
-    method public final void setResultData(String);
-    method public final void setResultExtras(android.os.Bundle);
-  }
-
-  public static class BroadcastReceiver.PendingResult {
-    method public final void abortBroadcast();
-    method public final void clearAbortBroadcast();
-    method public final void finish();
-    method public final boolean getAbortBroadcast();
-    method public final int getResultCode();
-    method public final String getResultData();
-    method public final android.os.Bundle getResultExtras(boolean);
-    method public final void setResult(int, String, android.os.Bundle);
-    method public final void setResultCode(int);
-    method public final void setResultData(String);
-    method public final void setResultExtras(android.os.Bundle);
-  }
-
-  public class ClipData implements android.os.Parcelable {
-    ctor public ClipData(CharSequence, String[], android.content.ClipData.Item);
-    ctor public ClipData(android.content.ClipDescription, android.content.ClipData.Item);
-    ctor public ClipData(android.content.ClipData);
-    method public void addItem(android.content.ClipData.Item);
-    method public void addItem(android.content.ContentResolver, android.content.ClipData.Item);
-    method public int describeContents();
-    method public android.content.ClipDescription getDescription();
-    method public android.content.ClipData.Item getItemAt(int);
-    method public int getItemCount();
-    method public static android.content.ClipData newHtmlText(CharSequence, CharSequence, String);
-    method public static android.content.ClipData newIntent(CharSequence, android.content.Intent);
-    method public static android.content.ClipData newPlainText(CharSequence, CharSequence);
-    method public static android.content.ClipData newRawUri(CharSequence, android.net.Uri);
-    method public static android.content.ClipData newUri(android.content.ContentResolver, CharSequence, android.net.Uri);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.ClipData> CREATOR;
-  }
-
-  public static class ClipData.Item {
-    ctor public ClipData.Item(CharSequence);
-    ctor public ClipData.Item(CharSequence, String);
-    ctor public ClipData.Item(android.content.Intent);
-    ctor public ClipData.Item(android.net.Uri);
-    ctor public ClipData.Item(CharSequence, android.content.Intent, android.net.Uri);
-    ctor public ClipData.Item(CharSequence, String, android.content.Intent, android.net.Uri);
-    method public String coerceToHtmlText(android.content.Context);
-    method public CharSequence coerceToStyledText(android.content.Context);
-    method public CharSequence coerceToText(android.content.Context);
-    method public String getHtmlText();
-    method public android.content.Intent getIntent();
-    method public CharSequence getText();
-    method public android.net.Uri getUri();
-  }
-
-  public class ClipDescription implements android.os.Parcelable {
-    ctor public ClipDescription(CharSequence, String[]);
-    ctor public ClipDescription(android.content.ClipDescription);
-    method public static boolean compareMimeTypes(String, String);
-    method public int describeContents();
-    method public String[] filterMimeTypes(String);
-    method public android.os.PersistableBundle getExtras();
-    method public CharSequence getLabel();
-    method public String getMimeType(int);
-    method public int getMimeTypeCount();
-    method public long getTimestamp();
-    method public boolean hasMimeType(String);
-    method public void setExtras(android.os.PersistableBundle);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.ClipDescription> CREATOR;
-    field public static final String MIMETYPE_TEXT_HTML = "text/html";
-    field public static final String MIMETYPE_TEXT_INTENT = "text/vnd.android.intent";
-    field public static final String MIMETYPE_TEXT_PLAIN = "text/plain";
-    field public static final String MIMETYPE_TEXT_URILIST = "text/uri-list";
-    field public static final String MIMETYPE_UNKNOWN = "application/octet-stream";
-  }
-
-  public class ClipboardManager extends android.text.ClipboardManager {
-    method public void addPrimaryClipChangedListener(android.content.ClipboardManager.OnPrimaryClipChangedListener);
-    method public void clearPrimaryClip();
-    method @Nullable public android.content.ClipData getPrimaryClip();
-    method @Nullable public android.content.ClipDescription getPrimaryClipDescription();
-    method @Deprecated public CharSequence getText();
-    method public boolean hasPrimaryClip();
-    method @Deprecated public boolean hasText();
-    method public void removePrimaryClipChangedListener(android.content.ClipboardManager.OnPrimaryClipChangedListener);
-    method public void setPrimaryClip(@NonNull android.content.ClipData);
-    method @Deprecated public void setText(CharSequence);
-  }
-
-  public static interface ClipboardManager.OnPrimaryClipChangedListener {
-    method public void onPrimaryClipChanged();
-  }
-
-  public interface ComponentCallbacks {
-    method public void onConfigurationChanged(@NonNull android.content.res.Configuration);
-    method public void onLowMemory();
-  }
-
-  public interface ComponentCallbacks2 extends android.content.ComponentCallbacks {
-    method public void onTrimMemory(int);
-    field public static final int TRIM_MEMORY_BACKGROUND = 40; // 0x28
-    field public static final int TRIM_MEMORY_COMPLETE = 80; // 0x50
-    field public static final int TRIM_MEMORY_MODERATE = 60; // 0x3c
-    field public static final int TRIM_MEMORY_RUNNING_CRITICAL = 15; // 0xf
-    field public static final int TRIM_MEMORY_RUNNING_LOW = 10; // 0xa
-    field public static final int TRIM_MEMORY_RUNNING_MODERATE = 5; // 0x5
-    field public static final int TRIM_MEMORY_UI_HIDDEN = 20; // 0x14
-  }
-
-  public final class ComponentName implements java.lang.Cloneable java.lang.Comparable<android.content.ComponentName> android.os.Parcelable {
-    ctor public ComponentName(@NonNull String, @NonNull String);
-    ctor public ComponentName(@NonNull android.content.Context, @NonNull String);
-    ctor public ComponentName(@NonNull android.content.Context, @NonNull Class<?>);
-    ctor public ComponentName(android.os.Parcel);
-    method public android.content.ComponentName clone();
-    method public int compareTo(android.content.ComponentName);
-    method @NonNull public static android.content.ComponentName createRelative(@NonNull String, @NonNull String);
-    method @NonNull public static android.content.ComponentName createRelative(@NonNull android.content.Context, @NonNull String);
-    method public int describeContents();
-    method @NonNull public String flattenToShortString();
-    method @NonNull public String flattenToString();
-    method @NonNull public String getClassName();
-    method @NonNull public String getPackageName();
-    method public String getShortClassName();
-    method public static android.content.ComponentName readFromParcel(android.os.Parcel);
-    method public String toShortString();
-    method @Nullable public static android.content.ComponentName unflattenFromString(@NonNull String);
-    method public void writeToParcel(android.os.Parcel, int);
-    method public static void writeToParcel(android.content.ComponentName, android.os.Parcel);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.ComponentName> CREATOR;
-  }
-
-  public abstract class ContentProvider implements android.content.ComponentCallbacks2 {
-    ctor public ContentProvider();
-    method @NonNull public android.content.ContentProviderResult[] applyBatch(@NonNull String, @NonNull java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException;
-    method @NonNull public android.content.ContentProviderResult[] applyBatch(@NonNull java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException;
-    method public void attachInfo(android.content.Context, android.content.pm.ProviderInfo);
-    method public int bulkInsert(@NonNull android.net.Uri, @NonNull android.content.ContentValues[]);
-    method @Nullable public android.os.Bundle call(@NonNull String, @NonNull String, @Nullable String, @Nullable android.os.Bundle);
-    method @Nullable public android.os.Bundle call(@NonNull String, @Nullable String, @Nullable android.os.Bundle);
-    method @Nullable public android.net.Uri canonicalize(@NonNull android.net.Uri);
-    method @NonNull public final android.content.ContentProvider.CallingIdentity clearCallingIdentity();
-    method public abstract int delete(@NonNull android.net.Uri, @Nullable String, @Nullable String[]);
-    method public int delete(@NonNull android.net.Uri, @Nullable android.os.Bundle);
-    method public void dump(java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method @Nullable public final String getCallingAttributionTag();
-    method @Nullable public final String getCallingPackage();
-    method @Nullable public final String getCallingPackageUnchecked();
-    method @Nullable public final android.content.Context getContext();
-    method @Nullable public final android.content.pm.PathPermission[] getPathPermissions();
-    method @Nullable public final String getReadPermission();
-    method @Nullable public String[] getStreamTypes(@NonNull android.net.Uri, @NonNull String);
-    method @Nullable public abstract String getType(@NonNull android.net.Uri);
-    method @Nullable public final String getWritePermission();
-    method @Nullable public abstract android.net.Uri insert(@NonNull android.net.Uri, @Nullable android.content.ContentValues);
-    method @Nullable public android.net.Uri insert(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable android.os.Bundle);
-    method protected boolean isTemporary();
-    method public void onCallingPackageChanged();
-    method public void onConfigurationChanged(android.content.res.Configuration);
-    method public abstract boolean onCreate();
-    method public void onLowMemory();
-    method public void onTrimMemory(int);
-    method @Nullable public android.content.res.AssetFileDescriptor openAssetFile(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
-    method @Nullable public android.content.res.AssetFileDescriptor openAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method @Nullable public android.os.ParcelFileDescriptor openFile(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
-    method @Nullable public android.os.ParcelFileDescriptor openFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method @NonNull protected final android.os.ParcelFileDescriptor openFileHelper(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
-    method @NonNull public <T> android.os.ParcelFileDescriptor openPipeHelper(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable T, @NonNull android.content.ContentProvider.PipeDataWriter<T>) throws java.io.FileNotFoundException;
-    method @Nullable public android.content.res.AssetFileDescriptor openTypedAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle) throws java.io.FileNotFoundException;
-    method @Nullable public android.content.res.AssetFileDescriptor openTypedAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method @Nullable public abstract android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String);
-    method @Nullable public android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String, @Nullable android.os.CancellationSignal);
-    method @Nullable public android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal);
-    method public boolean refresh(android.net.Uri, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal);
-    method @NonNull public final android.content.Context requireContext();
-    method public final void restoreCallingIdentity(@NonNull android.content.ContentProvider.CallingIdentity);
-    method protected final void setPathPermissions(@Nullable android.content.pm.PathPermission[]);
-    method protected final void setReadPermission(@Nullable String);
-    method protected final void setWritePermission(@Nullable String);
-    method public void shutdown();
-    method @Nullable public android.net.Uri uncanonicalize(@NonNull android.net.Uri);
-    method public abstract int update(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable String, @Nullable String[]);
-    method public int update(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable android.os.Bundle);
-  }
-
-  public final class ContentProvider.CallingIdentity {
-  }
-
-  public static interface ContentProvider.PipeDataWriter<T> {
-    method public void writeDataToPipe(@NonNull android.os.ParcelFileDescriptor, @NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable T);
-  }
-
-  public class ContentProviderClient implements java.lang.AutoCloseable {
-    method @NonNull public android.content.ContentProviderResult[] applyBatch(@NonNull java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException, android.os.RemoteException;
-    method @NonNull public android.content.ContentProviderResult[] applyBatch(@NonNull String, @NonNull java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException, android.os.RemoteException;
-    method public int bulkInsert(@NonNull android.net.Uri, @NonNull android.content.ContentValues[]) throws android.os.RemoteException;
-    method @Nullable public android.os.Bundle call(@NonNull String, @Nullable String, @Nullable android.os.Bundle) throws android.os.RemoteException;
-    method @Nullable public android.os.Bundle call(@NonNull String, @NonNull String, @Nullable String, @Nullable android.os.Bundle) throws android.os.RemoteException;
-    method @Nullable public final android.net.Uri canonicalize(@NonNull android.net.Uri) throws android.os.RemoteException;
-    method public void close();
-    method public int delete(@NonNull android.net.Uri, @Nullable String, @Nullable String[]) throws android.os.RemoteException;
-    method public int delete(@NonNull android.net.Uri, @Nullable android.os.Bundle) throws android.os.RemoteException;
-    method @Nullable public android.content.ContentProvider getLocalContentProvider();
-    method @Nullable public String[] getStreamTypes(@NonNull android.net.Uri, @NonNull String) throws android.os.RemoteException;
-    method @Nullable public String getType(@NonNull android.net.Uri) throws android.os.RemoteException;
-    method @Nullable public android.net.Uri insert(@NonNull android.net.Uri, @Nullable android.content.ContentValues) throws android.os.RemoteException;
-    method @Nullable public android.net.Uri insert(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable android.os.Bundle) throws android.os.RemoteException;
-    method @Nullable public android.content.res.AssetFileDescriptor openAssetFile(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException, android.os.RemoteException;
-    method @Nullable public android.content.res.AssetFileDescriptor openAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
-    method @Nullable public android.os.ParcelFileDescriptor openFile(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException, android.os.RemoteException;
-    method @Nullable public android.os.ParcelFileDescriptor openFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
-    method @Nullable public final android.content.res.AssetFileDescriptor openTypedAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
-    method @Nullable public final android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle) throws java.io.FileNotFoundException, android.os.RemoteException;
-    method @Nullable public final android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
-    method @Nullable public android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String) throws android.os.RemoteException;
-    method @Nullable public android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String, @Nullable android.os.CancellationSignal) throws android.os.RemoteException;
-    method @Nullable public android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], android.os.Bundle, @Nullable android.os.CancellationSignal) throws android.os.RemoteException;
-    method public boolean refresh(android.net.Uri, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws android.os.RemoteException;
-    method @Deprecated public boolean release();
-    method @Nullable public final android.net.Uri uncanonicalize(@NonNull android.net.Uri) throws android.os.RemoteException;
-    method public int update(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable String, @Nullable String[]) throws android.os.RemoteException;
-    method public int update(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable android.os.Bundle) throws android.os.RemoteException;
-  }
-
-  public class ContentProviderOperation implements android.os.Parcelable {
-    method @NonNull public android.content.ContentProviderResult apply(@NonNull android.content.ContentProvider, @NonNull android.content.ContentProviderResult[], int) throws android.content.OperationApplicationException;
-    method public int describeContents();
-    method @NonNull public android.net.Uri getUri();
-    method public boolean isAssertQuery();
-    method public boolean isCall();
-    method public boolean isDelete();
-    method public boolean isExceptionAllowed();
-    method public boolean isInsert();
-    method public boolean isReadOperation();
-    method public boolean isUpdate();
-    method public boolean isWriteOperation();
-    method public boolean isYieldAllowed();
-    method @NonNull public static android.content.ContentProviderOperation.Builder newAssertQuery(@NonNull android.net.Uri);
-    method @NonNull public static android.content.ContentProviderOperation.Builder newCall(@NonNull android.net.Uri, @Nullable String, @Nullable String);
-    method @NonNull public static android.content.ContentProviderOperation.Builder newDelete(@NonNull android.net.Uri);
-    method @NonNull public static android.content.ContentProviderOperation.Builder newInsert(@NonNull android.net.Uri);
-    method @NonNull public static android.content.ContentProviderOperation.Builder newUpdate(@NonNull android.net.Uri);
-    method @Nullable public android.os.Bundle resolveExtrasBackReferences(@NonNull android.content.ContentProviderResult[], int);
-    method @Nullable public String[] resolveSelectionArgsBackReferences(@NonNull android.content.ContentProviderResult[], int);
-    method @Nullable public android.content.ContentValues resolveValueBackReferences(@NonNull android.content.ContentProviderResult[], int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.ContentProviderOperation> CREATOR;
-  }
-
-  public static class ContentProviderOperation.Builder {
-    method @NonNull public android.content.ContentProviderOperation build();
-    method @NonNull public android.content.ContentProviderOperation.Builder withExceptionAllowed(boolean);
-    method @NonNull public android.content.ContentProviderOperation.Builder withExpectedCount(int);
-    method @NonNull public android.content.ContentProviderOperation.Builder withExtra(@NonNull String, @Nullable Object);
-    method @NonNull public android.content.ContentProviderOperation.Builder withExtraBackReference(@NonNull String, int);
-    method @NonNull public android.content.ContentProviderOperation.Builder withExtraBackReference(@NonNull String, int, @NonNull String);
-    method @NonNull public android.content.ContentProviderOperation.Builder withExtras(@NonNull android.os.Bundle);
-    method @NonNull public android.content.ContentProviderOperation.Builder withSelection(@Nullable String, @Nullable String[]);
-    method @NonNull public android.content.ContentProviderOperation.Builder withSelectionBackReference(int, int);
-    method @NonNull public android.content.ContentProviderOperation.Builder withSelectionBackReference(int, int, @NonNull String);
-    method @NonNull public android.content.ContentProviderOperation.Builder withValue(@NonNull String, @Nullable Object);
-    method @NonNull public android.content.ContentProviderOperation.Builder withValueBackReference(@NonNull String, int);
-    method @NonNull public android.content.ContentProviderOperation.Builder withValueBackReference(@NonNull String, int, @NonNull String);
-    method @NonNull public android.content.ContentProviderOperation.Builder withValueBackReferences(@NonNull android.content.ContentValues);
-    method @NonNull public android.content.ContentProviderOperation.Builder withValues(@NonNull android.content.ContentValues);
-    method @NonNull public android.content.ContentProviderOperation.Builder withYieldAllowed(boolean);
-  }
-
-  public class ContentProviderResult implements android.os.Parcelable {
-    ctor public ContentProviderResult(@NonNull android.net.Uri);
-    ctor public ContentProviderResult(int);
-    ctor public ContentProviderResult(@NonNull android.os.Bundle);
-    ctor public ContentProviderResult(@NonNull Throwable);
-    ctor public ContentProviderResult(android.os.Parcel);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.ContentProviderResult> CREATOR;
-    field @Nullable public final Integer count;
-    field @Nullable public final Throwable exception;
-    field @Nullable public final android.os.Bundle extras;
-    field @Nullable public final android.net.Uri uri;
-  }
-
-  public class ContentQueryMap extends java.util.Observable {
-    ctor public ContentQueryMap(android.database.Cursor, String, boolean, android.os.Handler);
-    method public void close();
-    method public java.util.Map<java.lang.String,android.content.ContentValues> getRows();
-    method public android.content.ContentValues getValues(String);
-    method public void requery();
-    method public void setKeepUpdated(boolean);
-  }
-
-  public abstract class ContentResolver {
-    ctor public ContentResolver(@Nullable android.content.Context);
-    method @Nullable public final android.content.ContentProviderClient acquireContentProviderClient(@NonNull android.net.Uri);
-    method @Nullable public final android.content.ContentProviderClient acquireContentProviderClient(@NonNull String);
-    method @Nullable public final android.content.ContentProviderClient acquireUnstableContentProviderClient(@NonNull android.net.Uri);
-    method @Nullable public final android.content.ContentProviderClient acquireUnstableContentProviderClient(@NonNull String);
-    method public static void addPeriodicSync(android.accounts.Account, String, android.os.Bundle, long);
-    method public static Object addStatusChangeListener(int, android.content.SyncStatusObserver);
-    method @NonNull public android.content.ContentProviderResult[] applyBatch(@NonNull String, @NonNull java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException, android.os.RemoteException;
-    method public final int bulkInsert(@NonNull @RequiresPermission.Write android.net.Uri, @NonNull android.content.ContentValues[]);
-    method @Nullable public final android.os.Bundle call(@NonNull android.net.Uri, @NonNull String, @Nullable String, @Nullable android.os.Bundle);
-    method @Nullable public final android.os.Bundle call(@NonNull String, @NonNull String, @Nullable String, @Nullable android.os.Bundle);
-    method @Deprecated public void cancelSync(android.net.Uri);
-    method public static void cancelSync(android.accounts.Account, String);
-    method public static void cancelSync(android.content.SyncRequest);
-    method @Nullable public final android.net.Uri canonicalize(@NonNull android.net.Uri);
-    method public final int delete(@NonNull @RequiresPermission.Write android.net.Uri, @Nullable String, @Nullable String[]);
-    method public final int delete(@NonNull @RequiresPermission.Write android.net.Uri, @Nullable android.os.Bundle);
-    method @Deprecated public static android.content.SyncInfo getCurrentSync();
-    method public static java.util.List<android.content.SyncInfo> getCurrentSyncs();
-    method public static int getIsSyncable(android.accounts.Account, String);
-    method public static boolean getMasterSyncAutomatically();
-    method @NonNull public java.util.List<android.content.UriPermission> getOutgoingPersistedUriPermissions();
-    method public static java.util.List<android.content.PeriodicSync> getPeriodicSyncs(android.accounts.Account, String);
-    method @NonNull public java.util.List<android.content.UriPermission> getPersistedUriPermissions();
-    method @Nullable public String[] getStreamTypes(@NonNull android.net.Uri, @NonNull String);
-    method public static android.content.SyncAdapterType[] getSyncAdapterTypes();
-    method public static boolean getSyncAutomatically(android.accounts.Account, String);
-    method @Nullable public final String getType(@NonNull android.net.Uri);
-    method @NonNull public final android.content.ContentResolver.MimeTypeInfo getTypeInfo(@NonNull String);
-    method @Nullable public final android.net.Uri insert(@NonNull @RequiresPermission.Write android.net.Uri, @Nullable android.content.ContentValues);
-    method @Nullable public final android.net.Uri insert(@NonNull @RequiresPermission.Write android.net.Uri, @Nullable android.content.ContentValues, @Nullable android.os.Bundle);
-    method public static boolean isSyncActive(android.accounts.Account, String);
-    method public static boolean isSyncPending(android.accounts.Account, String);
-    method @NonNull public android.graphics.Bitmap loadThumbnail(@NonNull android.net.Uri, @NonNull android.util.Size, @Nullable android.os.CancellationSignal) throws java.io.IOException;
-    method public void notifyChange(@NonNull android.net.Uri, @Nullable android.database.ContentObserver);
-    method @Deprecated public void notifyChange(@NonNull android.net.Uri, @Nullable android.database.ContentObserver, boolean);
-    method public void notifyChange(@NonNull android.net.Uri, @Nullable android.database.ContentObserver, int);
-    method public void notifyChange(@NonNull java.util.Collection<android.net.Uri>, @Nullable android.database.ContentObserver, int);
-    method @Nullable public final android.content.res.AssetFileDescriptor openAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method @Nullable public final android.content.res.AssetFileDescriptor openAssetFileDescriptor(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
-    method @Nullable public final android.content.res.AssetFileDescriptor openAssetFileDescriptor(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method @Nullable public final android.os.ParcelFileDescriptor openFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method @Nullable public final android.os.ParcelFileDescriptor openFileDescriptor(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
-    method @Nullable public final android.os.ParcelFileDescriptor openFileDescriptor(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method @Nullable public final java.io.InputStream openInputStream(@NonNull android.net.Uri) throws java.io.FileNotFoundException;
-    method @Nullable public final java.io.OutputStream openOutputStream(@NonNull android.net.Uri) throws java.io.FileNotFoundException;
-    method @Nullable public final java.io.OutputStream openOutputStream(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
-    method @Nullable public final android.content.res.AssetFileDescriptor openTypedAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method @Nullable public final android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle) throws java.io.FileNotFoundException;
-    method @Nullable public final android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method @Nullable public final android.database.Cursor query(@NonNull @RequiresPermission.Read android.net.Uri, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String);
-    method @Nullable public final android.database.Cursor query(@NonNull @RequiresPermission.Read android.net.Uri, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String, @Nullable android.os.CancellationSignal);
-    method @Nullable public final android.database.Cursor query(@NonNull @RequiresPermission.Read android.net.Uri, @Nullable String[], @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal);
-    method public final boolean refresh(@NonNull android.net.Uri, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal);
-    method public final void registerContentObserver(@NonNull android.net.Uri, boolean, @NonNull android.database.ContentObserver);
-    method public void releasePersistableUriPermission(@NonNull android.net.Uri, int);
-    method public static void removePeriodicSync(android.accounts.Account, String, android.os.Bundle);
-    method public static void removeStatusChangeListener(Object);
-    method public static void requestSync(android.accounts.Account, String, android.os.Bundle);
-    method public static void requestSync(android.content.SyncRequest);
-    method public static void setIsSyncable(android.accounts.Account, String, int);
-    method public static void setMasterSyncAutomatically(boolean);
-    method public static void setSyncAutomatically(android.accounts.Account, String, boolean);
-    method @Deprecated public void startSync(android.net.Uri, android.os.Bundle);
-    method public void takePersistableUriPermission(@NonNull android.net.Uri, int);
-    method @Nullable public final android.net.Uri uncanonicalize(@NonNull android.net.Uri);
-    method public final void unregisterContentObserver(@NonNull android.database.ContentObserver);
-    method public final int update(@NonNull @RequiresPermission.Write android.net.Uri, @Nullable android.content.ContentValues, @Nullable String, @Nullable String[]);
-    method public final int update(@NonNull @RequiresPermission.Write android.net.Uri, @Nullable android.content.ContentValues, @Nullable android.os.Bundle);
-    method public static void validateSyncExtrasBundle(android.os.Bundle);
-    method @NonNull public static android.content.ContentResolver wrap(@NonNull android.content.ContentProvider);
-    method @NonNull public static android.content.ContentResolver wrap(@NonNull android.content.ContentProviderClient);
-    field public static final String ANY_CURSOR_ITEM_TYPE = "vnd.android.cursor.item/*";
-    field public static final String CURSOR_DIR_BASE_TYPE = "vnd.android.cursor.dir";
-    field public static final String CURSOR_ITEM_BASE_TYPE = "vnd.android.cursor.item";
-    field public static final String EXTRA_HONORED_ARGS = "android.content.extra.HONORED_ARGS";
-    field public static final String EXTRA_REFRESH_SUPPORTED = "android.content.extra.REFRESH_SUPPORTED";
-    field public static final String EXTRA_SIZE = "android.content.extra.SIZE";
-    field public static final String EXTRA_TOTAL_COUNT = "android.content.extra.TOTAL_COUNT";
-    field public static final int NOTIFY_DELETE = 16; // 0x10
-    field public static final int NOTIFY_INSERT = 4; // 0x4
-    field public static final int NOTIFY_SKIP_NOTIFY_FOR_DESCENDANTS = 2; // 0x2
-    field public static final int NOTIFY_SYNC_TO_NETWORK = 1; // 0x1
-    field public static final int NOTIFY_UPDATE = 8; // 0x8
-    field public static final String QUERY_ARG_GROUP_COLUMNS = "android:query-arg-group-columns";
-    field public static final String QUERY_ARG_LIMIT = "android:query-arg-limit";
-    field public static final String QUERY_ARG_OFFSET = "android:query-arg-offset";
-    field public static final String QUERY_ARG_SORT_COLLATION = "android:query-arg-sort-collation";
-    field public static final String QUERY_ARG_SORT_COLUMNS = "android:query-arg-sort-columns";
-    field public static final String QUERY_ARG_SORT_DIRECTION = "android:query-arg-sort-direction";
-    field public static final String QUERY_ARG_SORT_LOCALE = "android:query-arg-sort-locale";
-    field public static final String QUERY_ARG_SQL_GROUP_BY = "android:query-arg-sql-group-by";
-    field public static final String QUERY_ARG_SQL_HAVING = "android:query-arg-sql-having";
-    field public static final String QUERY_ARG_SQL_LIMIT = "android:query-arg-sql-limit";
-    field public static final String QUERY_ARG_SQL_SELECTION = "android:query-arg-sql-selection";
-    field public static final String QUERY_ARG_SQL_SELECTION_ARGS = "android:query-arg-sql-selection-args";
-    field public static final String QUERY_ARG_SQL_SORT_ORDER = "android:query-arg-sql-sort-order";
-    field public static final int QUERY_SORT_DIRECTION_ASCENDING = 0; // 0x0
-    field public static final int QUERY_SORT_DIRECTION_DESCENDING = 1; // 0x1
-    field public static final String SCHEME_ANDROID_RESOURCE = "android.resource";
-    field public static final String SCHEME_CONTENT = "content";
-    field public static final String SCHEME_FILE = "file";
-    field @Deprecated public static final String SYNC_EXTRAS_ACCOUNT = "account";
-    field public static final String SYNC_EXTRAS_DISCARD_LOCAL_DELETIONS = "discard_deletions";
-    field public static final String SYNC_EXTRAS_DO_NOT_RETRY = "do_not_retry";
-    field public static final String SYNC_EXTRAS_EXPEDITED = "expedited";
-    field @Deprecated public static final String SYNC_EXTRAS_FORCE = "force";
-    field public static final String SYNC_EXTRAS_IGNORE_BACKOFF = "ignore_backoff";
-    field public static final String SYNC_EXTRAS_IGNORE_SETTINGS = "ignore_settings";
-    field public static final String SYNC_EXTRAS_INITIALIZE = "initialize";
-    field public static final String SYNC_EXTRAS_MANUAL = "force";
-    field public static final String SYNC_EXTRAS_OVERRIDE_TOO_MANY_DELETIONS = "deletions_override";
-    field public static final String SYNC_EXTRAS_REQUIRE_CHARGING = "require_charging";
-    field public static final String SYNC_EXTRAS_UPLOAD = "upload";
-    field public static final int SYNC_OBSERVER_TYPE_ACTIVE = 4; // 0x4
-    field public static final int SYNC_OBSERVER_TYPE_PENDING = 2; // 0x2
-    field public static final int SYNC_OBSERVER_TYPE_SETTINGS = 1; // 0x1
-  }
-
-  public static final class ContentResolver.MimeTypeInfo {
-    method @NonNull public CharSequence getContentDescription();
-    method @NonNull public android.graphics.drawable.Icon getIcon();
-    method @NonNull public CharSequence getLabel();
-  }
-
-  public class ContentUris {
-    ctor public ContentUris();
-    method @NonNull public static android.net.Uri.Builder appendId(@NonNull android.net.Uri.Builder, long);
-    method public static long parseId(@NonNull android.net.Uri);
-    method @NonNull public static android.net.Uri removeId(@NonNull android.net.Uri);
-    method @NonNull public static android.net.Uri withAppendedId(@NonNull android.net.Uri, long);
-  }
-
-  public final class ContentValues implements android.os.Parcelable {
-    ctor public ContentValues();
-    ctor public ContentValues(int);
-    ctor public ContentValues(android.content.ContentValues);
-    method public void clear();
-    method public boolean containsKey(String);
-    method public int describeContents();
-    method public Object get(String);
-    method public Boolean getAsBoolean(String);
-    method public Byte getAsByte(String);
-    method public byte[] getAsByteArray(String);
-    method public Double getAsDouble(String);
-    method public Float getAsFloat(String);
-    method public Integer getAsInteger(String);
-    method public Long getAsLong(String);
-    method public Short getAsShort(String);
-    method public String getAsString(String);
-    method public boolean isEmpty();
-    method public java.util.Set<java.lang.String> keySet();
-    method public void put(String, String);
-    method public void put(String, Byte);
-    method public void put(String, Short);
-    method public void put(String, Integer);
-    method public void put(String, Long);
-    method public void put(String, Float);
-    method public void put(String, Double);
-    method public void put(String, Boolean);
-    method public void put(String, byte[]);
-    method public void putAll(android.content.ContentValues);
-    method public void putNull(String);
-    method public void remove(String);
-    method public int size();
-    method public java.util.Set<java.util.Map.Entry<java.lang.String,java.lang.Object>> valueSet();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.ContentValues> CREATOR;
-    field public static final String TAG = "ContentValues";
-  }
-
-  public abstract class Context {
-    ctor public Context();
-    method public boolean bindIsolatedService(@NonNull @RequiresPermission android.content.Intent, int, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.content.ServiceConnection);
-    method public abstract boolean bindService(@RequiresPermission android.content.Intent, @NonNull android.content.ServiceConnection, int);
-    method public boolean bindService(@NonNull @RequiresPermission android.content.Intent, int, @NonNull java.util.concurrent.Executor, @NonNull android.content.ServiceConnection);
-    method @RequiresPermission(anyOf={"android.permission.INTERACT_ACROSS_USERS", android.Manifest.permission.INTERACT_ACROSS_PROFILES}) public boolean bindServiceAsUser(@NonNull @RequiresPermission android.content.Intent, @NonNull android.content.ServiceConnection, int, @NonNull android.os.UserHandle);
-    method @CheckResult(suggest="#enforceCallingOrSelfPermission(String,String)") public abstract int checkCallingOrSelfPermission(@NonNull String);
-    method @CheckResult(suggest="#enforceCallingOrSelfUriPermission(Uri,int,String)") public abstract int checkCallingOrSelfUriPermission(android.net.Uri, int);
-    method @CheckResult(suggest="#enforceCallingPermission(String,String)") public abstract int checkCallingPermission(@NonNull String);
-    method @CheckResult(suggest="#enforceCallingUriPermission(Uri,int,String)") public abstract int checkCallingUriPermission(android.net.Uri, int);
-    method @CheckResult(suggest="#enforcePermission(String,int,int,String)") public abstract int checkPermission(@NonNull String, int, int);
-    method public abstract int checkSelfPermission(@NonNull String);
-    method @CheckResult(suggest="#enforceUriPermission(Uri,int,int,String)") public abstract int checkUriPermission(android.net.Uri, int, int, int);
-    method @CheckResult(suggest="#enforceUriPermission(Uri,String,String,int,int,int,String)") public abstract int checkUriPermission(@Nullable android.net.Uri, @Nullable String, @Nullable String, int, int, int);
-    method @Deprecated public abstract void clearWallpaper() throws java.io.IOException;
-    method @NonNull public android.content.Context createAttributionContext(@Nullable String);
-    method public abstract android.content.Context createConfigurationContext(@NonNull android.content.res.Configuration);
-    method public abstract android.content.Context createContextForSplit(String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public abstract android.content.Context createDeviceProtectedStorageContext();
-    method public abstract android.content.Context createDisplayContext(@NonNull android.view.Display);
-    method public abstract android.content.Context createPackageContext(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public android.content.Context createWindowContext(int, @Nullable android.os.Bundle);
-    method public abstract String[] databaseList();
-    method public abstract boolean deleteDatabase(String);
-    method public abstract boolean deleteFile(String);
-    method public abstract boolean deleteSharedPreferences(String);
-    method public abstract void enforceCallingOrSelfPermission(@NonNull String, @Nullable String);
-    method public abstract void enforceCallingOrSelfUriPermission(android.net.Uri, int, String);
-    method public abstract void enforceCallingPermission(@NonNull String, @Nullable String);
-    method public abstract void enforceCallingUriPermission(android.net.Uri, int, String);
-    method public abstract void enforcePermission(@NonNull String, int, int, @Nullable String);
-    method public abstract void enforceUriPermission(android.net.Uri, int, int, int, String);
-    method public abstract void enforceUriPermission(@Nullable android.net.Uri, @Nullable String, @Nullable String, int, int, int, @Nullable String);
-    method public abstract String[] fileList();
-    method public abstract android.content.Context getApplicationContext();
-    method public abstract android.content.pm.ApplicationInfo getApplicationInfo();
-    method public abstract android.content.res.AssetManager getAssets();
-    method @Nullable public String getAttributionTag();
-    method public abstract java.io.File getCacheDir();
-    method public abstract ClassLoader getClassLoader();
-    method public abstract java.io.File getCodeCacheDir();
-    method @ColorInt public final int getColor(@ColorRes int);
-    method @NonNull public final android.content.res.ColorStateList getColorStateList(@ColorRes int);
-    method public abstract android.content.ContentResolver getContentResolver();
-    method public abstract java.io.File getDataDir();
-    method public abstract java.io.File getDatabasePath(String);
-    method public abstract java.io.File getDir(String, int);
-    method @Nullable public android.view.Display getDisplay();
-    method @Nullable public final android.graphics.drawable.Drawable getDrawable(@DrawableRes int);
-    method @Nullable public abstract java.io.File getExternalCacheDir();
-    method public abstract java.io.File[] getExternalCacheDirs();
-    method @Nullable public abstract java.io.File getExternalFilesDir(@Nullable String);
-    method public abstract java.io.File[] getExternalFilesDirs(String);
-    method @Deprecated public abstract java.io.File[] getExternalMediaDirs();
-    method public abstract java.io.File getFileStreamPath(String);
-    method public abstract java.io.File getFilesDir();
-    method public java.util.concurrent.Executor getMainExecutor();
-    method public abstract android.os.Looper getMainLooper();
-    method public abstract java.io.File getNoBackupFilesDir();
-    method public abstract java.io.File getObbDir();
-    method public abstract java.io.File[] getObbDirs();
-    method @NonNull public String getOpPackageName();
-    method public abstract String getPackageCodePath();
-    method public abstract android.content.pm.PackageManager getPackageManager();
-    method public abstract String getPackageName();
-    method public abstract String getPackageResourcePath();
-    method public abstract android.content.res.Resources getResources();
-    method public abstract android.content.SharedPreferences getSharedPreferences(String, int);
-    method @NonNull public final String getString(@StringRes int);
-    method @NonNull public final String getString(@StringRes int, java.lang.Object...);
-    method public abstract Object getSystemService(@NonNull String);
-    method public final <T> T getSystemService(@NonNull Class<T>);
-    method @Nullable public abstract String getSystemServiceName(@NonNull Class<?>);
-    method @NonNull public final CharSequence getText(@StringRes int);
-    method public abstract android.content.res.Resources.Theme getTheme();
-    method @Deprecated public abstract android.graphics.drawable.Drawable getWallpaper();
-    method @Deprecated public abstract int getWallpaperDesiredMinimumHeight();
-    method @Deprecated public abstract int getWallpaperDesiredMinimumWidth();
-    method public abstract void grantUriPermission(String, android.net.Uri, int);
-    method public abstract boolean isDeviceProtectedStorage();
-    method public boolean isRestricted();
-    method public abstract boolean moveDatabaseFrom(android.content.Context, String);
-    method public abstract boolean moveSharedPreferencesFrom(android.content.Context, String);
-    method @NonNull public final android.content.res.TypedArray obtainStyledAttributes(@NonNull @StyleableRes int[]);
-    method @NonNull public final android.content.res.TypedArray obtainStyledAttributes(@StyleRes int, @NonNull @StyleableRes int[]) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public final android.content.res.TypedArray obtainStyledAttributes(@Nullable android.util.AttributeSet, @NonNull @StyleableRes int[]);
-    method @NonNull public final android.content.res.TypedArray obtainStyledAttributes(@Nullable android.util.AttributeSet, @NonNull @StyleableRes int[], @AttrRes int, @StyleRes int);
-    method public abstract java.io.FileInputStream openFileInput(String) throws java.io.FileNotFoundException;
-    method public abstract java.io.FileOutputStream openFileOutput(String, int) throws java.io.FileNotFoundException;
-    method public abstract android.database.sqlite.SQLiteDatabase openOrCreateDatabase(String, int, android.database.sqlite.SQLiteDatabase.CursorFactory);
-    method public abstract android.database.sqlite.SQLiteDatabase openOrCreateDatabase(String, int, android.database.sqlite.SQLiteDatabase.CursorFactory, @Nullable android.database.DatabaseErrorHandler);
-    method @Deprecated public abstract android.graphics.drawable.Drawable peekWallpaper();
-    method public void registerComponentCallbacks(android.content.ComponentCallbacks);
-    method @Nullable public abstract android.content.Intent registerReceiver(@Nullable android.content.BroadcastReceiver, android.content.IntentFilter);
-    method @Nullable public abstract android.content.Intent registerReceiver(@Nullable android.content.BroadcastReceiver, android.content.IntentFilter, int);
-    method @Nullable public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, @Nullable String, @Nullable android.os.Handler);
-    method @Nullable public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, @Nullable String, @Nullable android.os.Handler, int);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.BROADCAST_STICKY) public abstract void removeStickyBroadcast(@RequiresPermission android.content.Intent);
-    method @Deprecated @RequiresPermission(allOf={"android.permission.INTERACT_ACROSS_USERS", android.Manifest.permission.BROADCAST_STICKY}) public abstract void removeStickyBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle);
-    method public abstract void revokeUriPermission(android.net.Uri, int);
-    method public abstract void revokeUriPermission(String, android.net.Uri, int);
-    method public abstract void sendBroadcast(@RequiresPermission android.content.Intent);
-    method public abstract void sendBroadcast(@RequiresPermission android.content.Intent, @Nullable String);
-    method @RequiresPermission("android.permission.INTERACT_ACROSS_USERS") public abstract void sendBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle);
-    method @RequiresPermission("android.permission.INTERACT_ACROSS_USERS") public abstract void sendBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle, @Nullable String);
-    method public void sendBroadcastWithMultiplePermissions(@NonNull android.content.Intent, @NonNull String[]);
-    method public abstract void sendOrderedBroadcast(@RequiresPermission android.content.Intent, @Nullable String);
-    method public abstract void sendOrderedBroadcast(@NonNull @RequiresPermission android.content.Intent, @Nullable String, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
-    method public void sendOrderedBroadcast(@NonNull android.content.Intent, @Nullable String, @Nullable String, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
-    method @RequiresPermission("android.permission.INTERACT_ACROSS_USERS") public abstract void sendOrderedBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle, @Nullable String, android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.BROADCAST_STICKY) public abstract void sendStickyBroadcast(@RequiresPermission android.content.Intent);
-    method @Deprecated @RequiresPermission(allOf={"android.permission.INTERACT_ACROSS_USERS", android.Manifest.permission.BROADCAST_STICKY}) public abstract void sendStickyBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.BROADCAST_STICKY) public abstract void sendStickyOrderedBroadcast(@RequiresPermission android.content.Intent, android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
-    method @Deprecated @RequiresPermission(allOf={"android.permission.INTERACT_ACROSS_USERS", android.Manifest.permission.BROADCAST_STICKY}) public abstract void sendStickyOrderedBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle, android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
-    method public abstract void setTheme(@StyleRes int);
-    method @Deprecated public abstract void setWallpaper(android.graphics.Bitmap) throws java.io.IOException;
-    method @Deprecated public abstract void setWallpaper(java.io.InputStream) throws java.io.IOException;
-    method public abstract void startActivities(@RequiresPermission android.content.Intent[]);
-    method public abstract void startActivities(@RequiresPermission android.content.Intent[], android.os.Bundle);
-    method public abstract void startActivity(@RequiresPermission android.content.Intent);
-    method public abstract void startActivity(@RequiresPermission android.content.Intent, @Nullable android.os.Bundle);
-    method @Nullable public abstract android.content.ComponentName startForegroundService(android.content.Intent);
-    method public abstract boolean startInstrumentation(@NonNull android.content.ComponentName, @Nullable String, @Nullable android.os.Bundle);
-    method public abstract void startIntentSender(android.content.IntentSender, @Nullable android.content.Intent, int, int, int) throws android.content.IntentSender.SendIntentException;
-    method public abstract void startIntentSender(android.content.IntentSender, @Nullable android.content.Intent, int, int, int, @Nullable android.os.Bundle) throws android.content.IntentSender.SendIntentException;
-    method @Nullable public abstract android.content.ComponentName startService(android.content.Intent);
-    method public abstract boolean stopService(android.content.Intent);
-    method public abstract void unbindService(@NonNull android.content.ServiceConnection);
-    method public void unregisterComponentCallbacks(android.content.ComponentCallbacks);
-    method public abstract void unregisterReceiver(android.content.BroadcastReceiver);
-    method public void updateServiceGroup(@NonNull android.content.ServiceConnection, int, int);
-    field public static final String ACCESSIBILITY_SERVICE = "accessibility";
-    field public static final String ACCOUNT_SERVICE = "account";
-    field public static final String ACTIVITY_SERVICE = "activity";
-    field public static final String ALARM_SERVICE = "alarm";
-    field public static final String APPWIDGET_SERVICE = "appwidget";
-    field public static final String APP_OPS_SERVICE = "appops";
-    field public static final String AUDIO_SERVICE = "audio";
-    field public static final String BATTERY_SERVICE = "batterymanager";
-    field public static final int BIND_ABOVE_CLIENT = 8; // 0x8
-    field public static final int BIND_ADJUST_WITH_ACTIVITY = 128; // 0x80
-    field public static final int BIND_ALLOW_OOM_MANAGEMENT = 16; // 0x10
-    field public static final int BIND_AUTO_CREATE = 1; // 0x1
-    field public static final int BIND_DEBUG_UNBIND = 2; // 0x2
-    field public static final int BIND_EXTERNAL_SERVICE = -2147483648; // 0x80000000
-    field public static final int BIND_IMPORTANT = 64; // 0x40
-    field public static final int BIND_INCLUDE_CAPABILITIES = 4096; // 0x1000
-    field public static final int BIND_NOT_FOREGROUND = 4; // 0x4
-    field public static final int BIND_NOT_PERCEPTIBLE = 256; // 0x100
-    field public static final int BIND_WAIVE_PRIORITY = 32; // 0x20
-    field public static final String BIOMETRIC_SERVICE = "biometric";
-    field public static final String BLOB_STORE_SERVICE = "blob_store";
-    field public static final String BLUETOOTH_SERVICE = "bluetooth";
-    field public static final String CAMERA_SERVICE = "camera";
-    field public static final String CAPTIONING_SERVICE = "captioning";
-    field public static final String CARRIER_CONFIG_SERVICE = "carrier_config";
-    field public static final String CLIPBOARD_SERVICE = "clipboard";
-    field public static final String COMPANION_DEVICE_SERVICE = "companiondevice";
-    field public static final String CONNECTIVITY_DIAGNOSTICS_SERVICE = "connectivity_diagnostics";
-    field public static final String CONNECTIVITY_SERVICE = "connectivity";
-    field public static final String CONSUMER_IR_SERVICE = "consumer_ir";
-    field public static final int CONTEXT_IGNORE_SECURITY = 2; // 0x2
-    field public static final int CONTEXT_INCLUDE_CODE = 1; // 0x1
-    field public static final int CONTEXT_RESTRICTED = 4; // 0x4
-    field public static final String CROSS_PROFILE_APPS_SERVICE = "crossprofileapps";
-    field public static final String DEVICE_POLICY_SERVICE = "device_policy";
-    field public static final String DISPLAY_SERVICE = "display";
-    field public static final String DOWNLOAD_SERVICE = "download";
-    field public static final String DROPBOX_SERVICE = "dropbox";
-    field public static final String EUICC_SERVICE = "euicc";
-    field public static final String FILE_INTEGRITY_SERVICE = "file_integrity";
-    field public static final String FINGERPRINT_SERVICE = "fingerprint";
-    field public static final String HARDWARE_PROPERTIES_SERVICE = "hardware_properties";
-    field public static final String INPUT_METHOD_SERVICE = "input_method";
-    field public static final String INPUT_SERVICE = "input";
-    field public static final String IPSEC_SERVICE = "ipsec";
-    field public static final String JOB_SCHEDULER_SERVICE = "jobscheduler";
-    field public static final String KEYGUARD_SERVICE = "keyguard";
-    field public static final String LAUNCHER_APPS_SERVICE = "launcherapps";
-    field public static final String LAYOUT_INFLATER_SERVICE = "layout_inflater";
-    field public static final String LOCATION_SERVICE = "location";
-    field public static final String MEDIA_PROJECTION_SERVICE = "media_projection";
-    field public static final String MEDIA_ROUTER_SERVICE = "media_router";
-    field public static final String MEDIA_SESSION_SERVICE = "media_session";
-    field public static final String MIDI_SERVICE = "midi";
-    field public static final int MODE_APPEND = 32768; // 0x8000
-    field public static final int MODE_ENABLE_WRITE_AHEAD_LOGGING = 8; // 0x8
-    field @Deprecated public static final int MODE_MULTI_PROCESS = 4; // 0x4
-    field public static final int MODE_NO_LOCALIZED_COLLATORS = 16; // 0x10
-    field public static final int MODE_PRIVATE = 0; // 0x0
-    field @Deprecated public static final int MODE_WORLD_READABLE = 1; // 0x1
-    field @Deprecated public static final int MODE_WORLD_WRITEABLE = 2; // 0x2
-    field public static final String NETWORK_STATS_SERVICE = "netstats";
-    field public static final String NFC_SERVICE = "nfc";
-    field public static final String NOTIFICATION_SERVICE = "notification";
-    field public static final String NSD_SERVICE = "servicediscovery";
-    field public static final String POWER_SERVICE = "power";
-    field public static final String PRINT_SERVICE = "print";
-    field public static final int RECEIVER_VISIBLE_TO_INSTANT_APPS = 1; // 0x1
-    field public static final String RESTRICTIONS_SERVICE = "restrictions";
-    field public static final String ROLE_SERVICE = "role";
-    field public static final String SEARCH_SERVICE = "search";
-    field public static final String SENSOR_SERVICE = "sensor";
-    field public static final String SHORTCUT_SERVICE = "shortcut";
-    field public static final String STORAGE_SERVICE = "storage";
-    field public static final String STORAGE_STATS_SERVICE = "storagestats";
-    field public static final String SYSTEM_HEALTH_SERVICE = "systemhealth";
-    field public static final String TELECOM_SERVICE = "telecom";
-    field public static final String TELEPHONY_IMS_SERVICE = "telephony_ims";
-    field public static final String TELEPHONY_SERVICE = "phone";
-    field public static final String TELEPHONY_SUBSCRIPTION_SERVICE = "telephony_subscription_service";
-    field public static final String TEXT_CLASSIFICATION_SERVICE = "textclassification";
-    field public static final String TEXT_SERVICES_MANAGER_SERVICE = "textservices";
-    field public static final String TV_INPUT_SERVICE = "tv_input";
-    field public static final String UI_MODE_SERVICE = "uimode";
-    field public static final String USAGE_STATS_SERVICE = "usagestats";
-    field public static final String USB_SERVICE = "usb";
-    field public static final String USER_SERVICE = "user";
-    field public static final String VIBRATOR_SERVICE = "vibrator";
-    field public static final String VPN_MANAGEMENT_SERVICE = "vpn_management";
-    field public static final String WALLPAPER_SERVICE = "wallpaper";
-    field public static final String WIFI_AWARE_SERVICE = "wifiaware";
-    field public static final String WIFI_P2P_SERVICE = "wifip2p";
-    field public static final String WIFI_RTT_RANGING_SERVICE = "wifirtt";
-    field public static final String WIFI_SERVICE = "wifi";
-    field public static final String WINDOW_SERVICE = "window";
-  }
-
-  public class ContextWrapper extends android.content.Context {
-    ctor public ContextWrapper(android.content.Context);
-    method protected void attachBaseContext(android.content.Context);
-    method public boolean bindService(android.content.Intent, android.content.ServiceConnection, int);
-    method public int checkCallingOrSelfPermission(String);
-    method public int checkCallingOrSelfUriPermission(android.net.Uri, int);
-    method public int checkCallingPermission(String);
-    method public int checkCallingUriPermission(android.net.Uri, int);
-    method public int checkPermission(String, int, int);
-    method public int checkSelfPermission(String);
-    method public int checkUriPermission(android.net.Uri, int, int, int);
-    method public int checkUriPermission(android.net.Uri, String, String, int, int, int);
-    method @Deprecated public void clearWallpaper() throws java.io.IOException;
-    method public android.content.Context createConfigurationContext(android.content.res.Configuration);
-    method public android.content.Context createContextForSplit(String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public android.content.Context createDeviceProtectedStorageContext();
-    method public android.content.Context createDisplayContext(android.view.Display);
-    method public android.content.Context createPackageContext(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public String[] databaseList();
-    method public boolean deleteDatabase(String);
-    method public boolean deleteFile(String);
-    method public boolean deleteSharedPreferences(String);
-    method public void enforceCallingOrSelfPermission(String, String);
-    method public void enforceCallingOrSelfUriPermission(android.net.Uri, int, String);
-    method public void enforceCallingPermission(String, String);
-    method public void enforceCallingUriPermission(android.net.Uri, int, String);
-    method public void enforcePermission(String, int, int, String);
-    method public void enforceUriPermission(android.net.Uri, int, int, int, String);
-    method public void enforceUriPermission(android.net.Uri, String, String, int, int, int, String);
-    method public String[] fileList();
-    method public android.content.Context getApplicationContext();
-    method public android.content.pm.ApplicationInfo getApplicationInfo();
-    method public android.content.res.AssetManager getAssets();
-    method public android.content.Context getBaseContext();
-    method public java.io.File getCacheDir();
-    method public ClassLoader getClassLoader();
-    method public java.io.File getCodeCacheDir();
-    method public android.content.ContentResolver getContentResolver();
-    method public java.io.File getDataDir();
-    method public java.io.File getDatabasePath(String);
-    method public java.io.File getDir(String, int);
-    method public java.io.File getExternalCacheDir();
-    method public java.io.File[] getExternalCacheDirs();
-    method public java.io.File getExternalFilesDir(String);
-    method public java.io.File[] getExternalFilesDirs(String);
-    method public java.io.File[] getExternalMediaDirs();
-    method public java.io.File getFileStreamPath(String);
-    method public java.io.File getFilesDir();
-    method public android.os.Looper getMainLooper();
-    method public java.io.File getNoBackupFilesDir();
-    method public java.io.File getObbDir();
-    method public java.io.File[] getObbDirs();
-    method public String getPackageCodePath();
-    method public android.content.pm.PackageManager getPackageManager();
-    method public String getPackageName();
-    method public String getPackageResourcePath();
-    method public android.content.res.Resources getResources();
-    method public android.content.SharedPreferences getSharedPreferences(String, int);
-    method public Object getSystemService(String);
-    method public String getSystemServiceName(Class<?>);
-    method public android.content.res.Resources.Theme getTheme();
-    method @Deprecated public android.graphics.drawable.Drawable getWallpaper();
-    method @Deprecated public int getWallpaperDesiredMinimumHeight();
-    method @Deprecated public int getWallpaperDesiredMinimumWidth();
-    method public void grantUriPermission(String, android.net.Uri, int);
-    method public boolean isDeviceProtectedStorage();
-    method public boolean moveDatabaseFrom(android.content.Context, String);
-    method public boolean moveSharedPreferencesFrom(android.content.Context, String);
-    method public java.io.FileInputStream openFileInput(String) throws java.io.FileNotFoundException;
-    method public java.io.FileOutputStream openFileOutput(String, int) throws java.io.FileNotFoundException;
-    method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(String, int, android.database.sqlite.SQLiteDatabase.CursorFactory);
-    method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(String, int, android.database.sqlite.SQLiteDatabase.CursorFactory, android.database.DatabaseErrorHandler);
-    method @Deprecated public android.graphics.drawable.Drawable peekWallpaper();
-    method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter);
-    method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, int);
-    method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, String, android.os.Handler);
-    method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, String, android.os.Handler, int);
-    method @Deprecated public void removeStickyBroadcast(android.content.Intent);
-    method @Deprecated public void removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle);
-    method public void revokeUriPermission(android.net.Uri, int);
-    method public void revokeUriPermission(String, android.net.Uri, int);
-    method public void sendBroadcast(android.content.Intent);
-    method public void sendBroadcast(android.content.Intent, String);
-    method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle);
-    method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, String);
-    method public void sendOrderedBroadcast(android.content.Intent, String);
-    method public void sendOrderedBroadcast(android.content.Intent, String, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
-    method public void sendOrderedBroadcast(@NonNull @RequiresPermission android.content.Intent, int, @Nullable String, @Nullable String, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, @Nullable String, @Nullable android.os.Bundle, @Nullable android.os.Bundle);
-    method public void sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, String, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
-    method @Deprecated public void sendStickyBroadcast(android.content.Intent);
-    method @Deprecated public void sendStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle);
-    method @Deprecated public void sendStickyOrderedBroadcast(android.content.Intent, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
-    method @Deprecated public void sendStickyOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
-    method public void setTheme(int);
-    method @Deprecated public void setWallpaper(android.graphics.Bitmap) throws java.io.IOException;
-    method @Deprecated public void setWallpaper(java.io.InputStream) throws java.io.IOException;
-    method public void startActivities(android.content.Intent[]);
-    method public void startActivities(android.content.Intent[], android.os.Bundle);
-    method public void startActivity(android.content.Intent);
-    method public void startActivity(android.content.Intent, android.os.Bundle);
-    method public android.content.ComponentName startForegroundService(android.content.Intent);
-    method public boolean startInstrumentation(android.content.ComponentName, String, android.os.Bundle);
-    method public void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int) throws android.content.IntentSender.SendIntentException;
-    method public void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
-    method public android.content.ComponentName startService(android.content.Intent);
-    method public boolean stopService(android.content.Intent);
-    method public void unbindService(android.content.ServiceConnection);
-    method public void unregisterReceiver(android.content.BroadcastReceiver);
-  }
-
-  @Deprecated public class CursorLoader extends android.content.AsyncTaskLoader<android.database.Cursor> {
-    ctor @Deprecated public CursorLoader(android.content.Context);
-    ctor @Deprecated public CursorLoader(android.content.Context, android.net.Uri, String[], String, String[], String);
-    method @Deprecated public void deliverResult(android.database.Cursor);
-    method @Deprecated public String[] getProjection();
-    method @Deprecated public String getSelection();
-    method @Deprecated public String[] getSelectionArgs();
-    method @Deprecated public String getSortOrder();
-    method @Deprecated public android.net.Uri getUri();
-    method @Deprecated public android.database.Cursor loadInBackground();
-    method @Deprecated public void onCanceled(android.database.Cursor);
-    method @Deprecated public void setProjection(String[]);
-    method @Deprecated public void setSelection(String);
-    method @Deprecated public void setSelectionArgs(String[]);
-    method @Deprecated public void setSortOrder(String);
-    method @Deprecated public void setUri(android.net.Uri);
-  }
-
-  public interface DialogInterface {
-    method public void cancel();
-    method public void dismiss();
-    field @Deprecated public static final int BUTTON1 = -1; // 0xffffffff
-    field @Deprecated public static final int BUTTON2 = -2; // 0xfffffffe
-    field @Deprecated public static final int BUTTON3 = -3; // 0xfffffffd
-    field public static final int BUTTON_NEGATIVE = -2; // 0xfffffffe
-    field public static final int BUTTON_NEUTRAL = -3; // 0xfffffffd
-    field public static final int BUTTON_POSITIVE = -1; // 0xffffffff
-  }
-
-  public static interface DialogInterface.OnCancelListener {
-    method public void onCancel(android.content.DialogInterface);
-  }
-
-  public static interface DialogInterface.OnClickListener {
-    method public void onClick(android.content.DialogInterface, int);
-  }
-
-  public static interface DialogInterface.OnDismissListener {
-    method public void onDismiss(android.content.DialogInterface);
-  }
-
-  public static interface DialogInterface.OnKeyListener {
-    method public boolean onKey(android.content.DialogInterface, int, android.view.KeyEvent);
-  }
-
-  public static interface DialogInterface.OnMultiChoiceClickListener {
-    method public void onClick(android.content.DialogInterface, int, boolean);
-  }
-
-  public static interface DialogInterface.OnShowListener {
-    method public void onShow(android.content.DialogInterface);
-  }
-
-  public final class Entity {
-    ctor public Entity(android.content.ContentValues);
-    method public void addSubValue(android.net.Uri, android.content.ContentValues);
-    method public android.content.ContentValues getEntityValues();
-    method public java.util.ArrayList<android.content.Entity.NamedContentValues> getSubValues();
-  }
-
-  public static class Entity.NamedContentValues {
-    ctor public Entity.NamedContentValues(android.net.Uri, android.content.ContentValues);
-    field public final android.net.Uri uri;
-    field public final android.content.ContentValues values;
-  }
-
-  public interface EntityIterator extends java.util.Iterator<android.content.Entity> {
-    method public void close();
-    method public void reset();
-  }
-
-  public class Intent implements java.lang.Cloneable android.os.Parcelable {
-    ctor public Intent();
-    ctor public Intent(android.content.Intent);
-    ctor public Intent(String);
-    ctor public Intent(String, android.net.Uri);
-    ctor public Intent(android.content.Context, Class<?>);
-    ctor public Intent(String, android.net.Uri, android.content.Context, Class<?>);
-    method @NonNull public android.content.Intent addCategory(String);
-    method @NonNull public android.content.Intent addFlags(int);
-    method public Object clone();
-    method @NonNull public android.content.Intent cloneFilter();
-    method public static android.content.Intent createChooser(android.content.Intent, CharSequence);
-    method public static android.content.Intent createChooser(android.content.Intent, CharSequence, android.content.IntentSender);
-    method public int describeContents();
-    method public int fillIn(@NonNull android.content.Intent, int);
-    method public boolean filterEquals(android.content.Intent);
-    method public int filterHashCode();
-    method @Nullable public String getAction();
-    method @Nullable public boolean[] getBooleanArrayExtra(String);
-    method public boolean getBooleanExtra(String, boolean);
-    method @Nullable public android.os.Bundle getBundleExtra(String);
-    method @Nullable public byte[] getByteArrayExtra(String);
-    method public byte getByteExtra(String, byte);
-    method public java.util.Set<java.lang.String> getCategories();
-    method @Nullable public char[] getCharArrayExtra(String);
-    method public char getCharExtra(String, char);
-    method @Nullable public CharSequence[] getCharSequenceArrayExtra(String);
-    method @Nullable public java.util.ArrayList<java.lang.CharSequence> getCharSequenceArrayListExtra(String);
-    method @Nullable public CharSequence getCharSequenceExtra(String);
-    method @Nullable public android.content.ClipData getClipData();
-    method @Nullable public android.content.ComponentName getComponent();
-    method @Nullable public android.net.Uri getData();
-    method @Nullable public String getDataString();
-    method @Nullable public double[] getDoubleArrayExtra(String);
-    method public double getDoubleExtra(String, double);
-    method @Nullable public android.os.Bundle getExtras();
-    method public int getFlags();
-    method @Nullable public float[] getFloatArrayExtra(String);
-    method public float getFloatExtra(String, float);
-    method @Nullable public String getIdentifier();
-    method @Nullable public int[] getIntArrayExtra(String);
-    method public int getIntExtra(String, int);
-    method @Nullable public java.util.ArrayList<java.lang.Integer> getIntegerArrayListExtra(String);
-    method @Deprecated public static android.content.Intent getIntent(String) throws java.net.URISyntaxException;
-    method public static android.content.Intent getIntentOld(String) throws java.net.URISyntaxException;
-    method @Nullable public long[] getLongArrayExtra(String);
-    method public long getLongExtra(String, long);
-    method @Nullable public String getPackage();
-    method @Nullable public android.os.Parcelable[] getParcelableArrayExtra(String);
-    method @Nullable public <T extends android.os.Parcelable> java.util.ArrayList<T> getParcelableArrayListExtra(String);
-    method @Nullable public <T extends android.os.Parcelable> T getParcelableExtra(String);
-    method @Nullable public String getScheme();
-    method @Nullable public android.content.Intent getSelector();
-    method @Nullable public java.io.Serializable getSerializableExtra(String);
-    method @Nullable public short[] getShortArrayExtra(String);
-    method public short getShortExtra(String, short);
-    method @Nullable public android.graphics.Rect getSourceBounds();
-    method @Nullable public String[] getStringArrayExtra(String);
-    method @Nullable public java.util.ArrayList<java.lang.String> getStringArrayListExtra(String);
-    method @Nullable public String getStringExtra(String);
-    method @Nullable public String getType();
-    method public boolean hasCategory(String);
-    method public boolean hasExtra(String);
-    method public boolean hasFileDescriptors();
-    method public static android.content.Intent makeMainActivity(android.content.ComponentName);
-    method public static android.content.Intent makeMainSelectorActivity(String, String);
-    method public static android.content.Intent makeRestartActivityTask(android.content.ComponentName);
-    method @Nullable public static String normalizeMimeType(@Nullable String);
-    method @NonNull public static android.content.Intent parseIntent(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, android.util.AttributeSet) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public static android.content.Intent parseUri(String, int) throws java.net.URISyntaxException;
-    method @NonNull public android.content.Intent putCharSequenceArrayListExtra(String, @Nullable java.util.ArrayList<java.lang.CharSequence>);
-    method @NonNull public android.content.Intent putExtra(String, boolean);
-    method @NonNull public android.content.Intent putExtra(String, byte);
-    method @NonNull public android.content.Intent putExtra(String, char);
-    method @NonNull public android.content.Intent putExtra(String, short);
-    method @NonNull public android.content.Intent putExtra(String, int);
-    method @NonNull public android.content.Intent putExtra(String, long);
-    method @NonNull public android.content.Intent putExtra(String, float);
-    method @NonNull public android.content.Intent putExtra(String, double);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable String);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable CharSequence);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable android.os.Parcelable);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable android.os.Parcelable[]);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable java.io.Serializable);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable boolean[]);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable byte[]);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable short[]);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable char[]);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable int[]);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable long[]);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable float[]);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable double[]);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable String[]);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable CharSequence[]);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable android.os.Bundle);
-    method @NonNull public android.content.Intent putExtras(@NonNull android.content.Intent);
-    method @NonNull public android.content.Intent putExtras(@NonNull android.os.Bundle);
-    method @NonNull public android.content.Intent putIntegerArrayListExtra(String, @Nullable java.util.ArrayList<java.lang.Integer>);
-    method @NonNull public android.content.Intent putParcelableArrayListExtra(String, @Nullable java.util.ArrayList<? extends android.os.Parcelable>);
-    method @NonNull public android.content.Intent putStringArrayListExtra(String, @Nullable java.util.ArrayList<java.lang.String>);
-    method public void readFromParcel(android.os.Parcel);
-    method public void removeCategory(String);
-    method public void removeExtra(String);
-    method public void removeFlags(int);
-    method @NonNull public android.content.Intent replaceExtras(@NonNull android.content.Intent);
-    method @NonNull public android.content.Intent replaceExtras(@Nullable android.os.Bundle);
-    method public android.content.ComponentName resolveActivity(@NonNull android.content.pm.PackageManager);
-    method public android.content.pm.ActivityInfo resolveActivityInfo(@NonNull android.content.pm.PackageManager, int);
-    method @Nullable public String resolveType(@NonNull android.content.Context);
-    method @Nullable public String resolveType(@NonNull android.content.ContentResolver);
-    method @Nullable public String resolveTypeIfNeeded(@NonNull android.content.ContentResolver);
-    method @NonNull public android.content.Intent setAction(@Nullable String);
-    method @NonNull public android.content.Intent setClass(@NonNull android.content.Context, @NonNull Class<?>);
-    method @NonNull public android.content.Intent setClassName(@NonNull android.content.Context, @NonNull String);
-    method @NonNull public android.content.Intent setClassName(@NonNull String, @NonNull String);
-    method public void setClipData(@Nullable android.content.ClipData);
-    method @NonNull public android.content.Intent setComponent(@Nullable android.content.ComponentName);
-    method @NonNull public android.content.Intent setData(@Nullable android.net.Uri);
-    method @NonNull public android.content.Intent setDataAndNormalize(@NonNull android.net.Uri);
-    method @NonNull public android.content.Intent setDataAndType(@Nullable android.net.Uri, @Nullable String);
-    method @NonNull public android.content.Intent setDataAndTypeAndNormalize(@NonNull android.net.Uri, @Nullable String);
-    method public void setExtrasClassLoader(@Nullable ClassLoader);
-    method @NonNull public android.content.Intent setFlags(int);
-    method @NonNull public android.content.Intent setIdentifier(@Nullable String);
-    method @NonNull public android.content.Intent setPackage(@Nullable String);
-    method public void setSelector(@Nullable android.content.Intent);
-    method public void setSourceBounds(@Nullable android.graphics.Rect);
-    method @NonNull public android.content.Intent setType(@Nullable String);
-    method @NonNull public android.content.Intent setTypeAndNormalize(@Nullable String);
-    method @Deprecated public String toURI();
-    method public String toUri(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final String ACTION_AIRPLANE_MODE_CHANGED = "android.intent.action.AIRPLANE_MODE";
-    field public static final String ACTION_ALL_APPS = "android.intent.action.ALL_APPS";
-    field public static final String ACTION_ANSWER = "android.intent.action.ANSWER";
-    field public static final String ACTION_APPLICATION_PREFERENCES = "android.intent.action.APPLICATION_PREFERENCES";
-    field public static final String ACTION_APPLICATION_RESTRICTIONS_CHANGED = "android.intent.action.APPLICATION_RESTRICTIONS_CHANGED";
-    field public static final String ACTION_APP_ERROR = "android.intent.action.APP_ERROR";
-    field public static final String ACTION_ASSIST = "android.intent.action.ASSIST";
-    field public static final String ACTION_ATTACH_DATA = "android.intent.action.ATTACH_DATA";
-    field public static final String ACTION_AUTO_REVOKE_PERMISSIONS = "android.intent.action.AUTO_REVOKE_PERMISSIONS";
-    field public static final String ACTION_BATTERY_CHANGED = "android.intent.action.BATTERY_CHANGED";
-    field public static final String ACTION_BATTERY_LOW = "android.intent.action.BATTERY_LOW";
-    field public static final String ACTION_BATTERY_OKAY = "android.intent.action.BATTERY_OKAY";
-    field public static final String ACTION_BOOT_COMPLETED = "android.intent.action.BOOT_COMPLETED";
-    field public static final String ACTION_BUG_REPORT = "android.intent.action.BUG_REPORT";
-    field public static final String ACTION_CALL = "android.intent.action.CALL";
-    field public static final String ACTION_CALL_BUTTON = "android.intent.action.CALL_BUTTON";
-    field public static final String ACTION_CAMERA_BUTTON = "android.intent.action.CAMERA_BUTTON";
-    field public static final String ACTION_CARRIER_SETUP = "android.intent.action.CARRIER_SETUP";
-    field public static final String ACTION_CHOOSER = "android.intent.action.CHOOSER";
-    field public static final String ACTION_CLOSE_SYSTEM_DIALOGS = "android.intent.action.CLOSE_SYSTEM_DIALOGS";
-    field public static final String ACTION_CONFIGURATION_CHANGED = "android.intent.action.CONFIGURATION_CHANGED";
-    field public static final String ACTION_CREATE_DOCUMENT = "android.intent.action.CREATE_DOCUMENT";
-    field public static final String ACTION_CREATE_REMINDER = "android.intent.action.CREATE_REMINDER";
-    field public static final String ACTION_CREATE_SHORTCUT = "android.intent.action.CREATE_SHORTCUT";
-    field public static final String ACTION_DATE_CHANGED = "android.intent.action.DATE_CHANGED";
-    field public static final String ACTION_DEFAULT = "android.intent.action.VIEW";
-    field public static final String ACTION_DEFINE = "android.intent.action.DEFINE";
-    field public static final String ACTION_DELETE = "android.intent.action.DELETE";
-    field @Deprecated public static final String ACTION_DEVICE_STORAGE_LOW = "android.intent.action.DEVICE_STORAGE_LOW";
-    field @Deprecated public static final String ACTION_DEVICE_STORAGE_OK = "android.intent.action.DEVICE_STORAGE_OK";
-    field public static final String ACTION_DIAL = "android.intent.action.DIAL";
-    field public static final String ACTION_DOCK_EVENT = "android.intent.action.DOCK_EVENT";
-    field public static final String ACTION_DREAMING_STARTED = "android.intent.action.DREAMING_STARTED";
-    field public static final String ACTION_DREAMING_STOPPED = "android.intent.action.DREAMING_STOPPED";
-    field public static final String ACTION_EDIT = "android.intent.action.EDIT";
-    field public static final String ACTION_EXTERNAL_APPLICATIONS_AVAILABLE = "android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE";
-    field public static final String ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE = "android.intent.action.EXTERNAL_APPLICATIONS_UNAVAILABLE";
-    field public static final String ACTION_FACTORY_TEST = "android.intent.action.FACTORY_TEST";
-    field public static final String ACTION_GET_CONTENT = "android.intent.action.GET_CONTENT";
-    field public static final String ACTION_GET_RESTRICTION_ENTRIES = "android.intent.action.GET_RESTRICTION_ENTRIES";
-    field public static final String ACTION_GTALK_SERVICE_CONNECTED = "android.intent.action.GTALK_CONNECTED";
-    field public static final String ACTION_GTALK_SERVICE_DISCONNECTED = "android.intent.action.GTALK_DISCONNECTED";
-    field public static final String ACTION_HEADSET_PLUG = "android.intent.action.HEADSET_PLUG";
-    field public static final String ACTION_INPUT_METHOD_CHANGED = "android.intent.action.INPUT_METHOD_CHANGED";
-    field public static final String ACTION_INSERT = "android.intent.action.INSERT";
-    field public static final String ACTION_INSERT_OR_EDIT = "android.intent.action.INSERT_OR_EDIT";
-    field public static final String ACTION_INSTALL_FAILURE = "android.intent.action.INSTALL_FAILURE";
-    field @Deprecated public static final String ACTION_INSTALL_PACKAGE = "android.intent.action.INSTALL_PACKAGE";
-    field public static final String ACTION_LOCALE_CHANGED = "android.intent.action.LOCALE_CHANGED";
-    field public static final String ACTION_LOCKED_BOOT_COMPLETED = "android.intent.action.LOCKED_BOOT_COMPLETED";
-    field public static final String ACTION_MAIN = "android.intent.action.MAIN";
-    field public static final String ACTION_MANAGED_PROFILE_ADDED = "android.intent.action.MANAGED_PROFILE_ADDED";
-    field public static final String ACTION_MANAGED_PROFILE_AVAILABLE = "android.intent.action.MANAGED_PROFILE_AVAILABLE";
-    field public static final String ACTION_MANAGED_PROFILE_REMOVED = "android.intent.action.MANAGED_PROFILE_REMOVED";
-    field public static final String ACTION_MANAGED_PROFILE_UNAVAILABLE = "android.intent.action.MANAGED_PROFILE_UNAVAILABLE";
-    field public static final String ACTION_MANAGED_PROFILE_UNLOCKED = "android.intent.action.MANAGED_PROFILE_UNLOCKED";
-    field public static final String ACTION_MANAGE_NETWORK_USAGE = "android.intent.action.MANAGE_NETWORK_USAGE";
-    field public static final String ACTION_MANAGE_PACKAGE_STORAGE = "android.intent.action.MANAGE_PACKAGE_STORAGE";
-    field public static final String ACTION_MEDIA_BAD_REMOVAL = "android.intent.action.MEDIA_BAD_REMOVAL";
-    field public static final String ACTION_MEDIA_BUTTON = "android.intent.action.MEDIA_BUTTON";
-    field public static final String ACTION_MEDIA_CHECKING = "android.intent.action.MEDIA_CHECKING";
-    field public static final String ACTION_MEDIA_EJECT = "android.intent.action.MEDIA_EJECT";
-    field public static final String ACTION_MEDIA_MOUNTED = "android.intent.action.MEDIA_MOUNTED";
-    field public static final String ACTION_MEDIA_NOFS = "android.intent.action.MEDIA_NOFS";
-    field public static final String ACTION_MEDIA_REMOVED = "android.intent.action.MEDIA_REMOVED";
-    field public static final String ACTION_MEDIA_SCANNER_FINISHED = "android.intent.action.MEDIA_SCANNER_FINISHED";
-    field @Deprecated public static final String ACTION_MEDIA_SCANNER_SCAN_FILE = "android.intent.action.MEDIA_SCANNER_SCAN_FILE";
-    field public static final String ACTION_MEDIA_SCANNER_STARTED = "android.intent.action.MEDIA_SCANNER_STARTED";
-    field public static final String ACTION_MEDIA_SHARED = "android.intent.action.MEDIA_SHARED";
-    field public static final String ACTION_MEDIA_UNMOUNTABLE = "android.intent.action.MEDIA_UNMOUNTABLE";
-    field public static final String ACTION_MEDIA_UNMOUNTED = "android.intent.action.MEDIA_UNMOUNTED";
-    field public static final String ACTION_MY_PACKAGE_REPLACED = "android.intent.action.MY_PACKAGE_REPLACED";
-    field public static final String ACTION_MY_PACKAGE_SUSPENDED = "android.intent.action.MY_PACKAGE_SUSPENDED";
-    field public static final String ACTION_MY_PACKAGE_UNSUSPENDED = "android.intent.action.MY_PACKAGE_UNSUSPENDED";
-    field @Deprecated public static final String ACTION_NEW_OUTGOING_CALL = "android.intent.action.NEW_OUTGOING_CALL";
-    field public static final String ACTION_OPEN_DOCUMENT = "android.intent.action.OPEN_DOCUMENT";
-    field public static final String ACTION_OPEN_DOCUMENT_TREE = "android.intent.action.OPEN_DOCUMENT_TREE";
-    field public static final String ACTION_PACKAGES_SUSPENDED = "android.intent.action.PACKAGES_SUSPENDED";
-    field public static final String ACTION_PACKAGES_UNSUSPENDED = "android.intent.action.PACKAGES_UNSUSPENDED";
-    field public static final String ACTION_PACKAGE_ADDED = "android.intent.action.PACKAGE_ADDED";
-    field public static final String ACTION_PACKAGE_CHANGED = "android.intent.action.PACKAGE_CHANGED";
-    field public static final String ACTION_PACKAGE_DATA_CLEARED = "android.intent.action.PACKAGE_DATA_CLEARED";
-    field public static final String ACTION_PACKAGE_FIRST_LAUNCH = "android.intent.action.PACKAGE_FIRST_LAUNCH";
-    field public static final String ACTION_PACKAGE_FULLY_REMOVED = "android.intent.action.PACKAGE_FULLY_REMOVED";
-    field @Deprecated public static final String ACTION_PACKAGE_INSTALL = "android.intent.action.PACKAGE_INSTALL";
-    field public static final String ACTION_PACKAGE_NEEDS_VERIFICATION = "android.intent.action.PACKAGE_NEEDS_VERIFICATION";
-    field public static final String ACTION_PACKAGE_REMOVED = "android.intent.action.PACKAGE_REMOVED";
-    field public static final String ACTION_PACKAGE_REPLACED = "android.intent.action.PACKAGE_REPLACED";
-    field public static final String ACTION_PACKAGE_RESTARTED = "android.intent.action.PACKAGE_RESTARTED";
-    field public static final String ACTION_PACKAGE_VERIFIED = "android.intent.action.PACKAGE_VERIFIED";
-    field public static final String ACTION_PASTE = "android.intent.action.PASTE";
-    field public static final String ACTION_PICK = "android.intent.action.PICK";
-    field public static final String ACTION_PICK_ACTIVITY = "android.intent.action.PICK_ACTIVITY";
-    field public static final String ACTION_POWER_CONNECTED = "android.intent.action.ACTION_POWER_CONNECTED";
-    field public static final String ACTION_POWER_DISCONNECTED = "android.intent.action.ACTION_POWER_DISCONNECTED";
-    field public static final String ACTION_POWER_USAGE_SUMMARY = "android.intent.action.POWER_USAGE_SUMMARY";
-    field public static final String ACTION_PROCESS_TEXT = "android.intent.action.PROCESS_TEXT";
-    field public static final String ACTION_PROVIDER_CHANGED = "android.intent.action.PROVIDER_CHANGED";
-    field public static final String ACTION_QUICK_CLOCK = "android.intent.action.QUICK_CLOCK";
-    field public static final String ACTION_QUICK_VIEW = "android.intent.action.QUICK_VIEW";
-    field public static final String ACTION_REBOOT = "android.intent.action.REBOOT";
-    field public static final String ACTION_RUN = "android.intent.action.RUN";
-    field public static final String ACTION_SCREEN_OFF = "android.intent.action.SCREEN_OFF";
-    field public static final String ACTION_SCREEN_ON = "android.intent.action.SCREEN_ON";
-    field public static final String ACTION_SEARCH = "android.intent.action.SEARCH";
-    field public static final String ACTION_SEARCH_LONG_PRESS = "android.intent.action.SEARCH_LONG_PRESS";
-    field public static final String ACTION_SEND = "android.intent.action.SEND";
-    field public static final String ACTION_SENDTO = "android.intent.action.SENDTO";
-    field public static final String ACTION_SEND_MULTIPLE = "android.intent.action.SEND_MULTIPLE";
-    field public static final String ACTION_SET_WALLPAPER = "android.intent.action.SET_WALLPAPER";
-    field public static final String ACTION_SHOW_APP_INFO = "android.intent.action.SHOW_APP_INFO";
-    field public static final String ACTION_SHUTDOWN = "android.intent.action.ACTION_SHUTDOWN";
-    field public static final String ACTION_SYNC = "android.intent.action.SYNC";
-    field public static final String ACTION_SYSTEM_TUTORIAL = "android.intent.action.SYSTEM_TUTORIAL";
-    field public static final String ACTION_TIMEZONE_CHANGED = "android.intent.action.TIMEZONE_CHANGED";
-    field public static final String ACTION_TIME_CHANGED = "android.intent.action.TIME_SET";
-    field public static final String ACTION_TIME_TICK = "android.intent.action.TIME_TICK";
-    field public static final String ACTION_TRANSLATE = "android.intent.action.TRANSLATE";
-    field public static final String ACTION_UID_REMOVED = "android.intent.action.UID_REMOVED";
-    field @Deprecated public static final String ACTION_UMS_CONNECTED = "android.intent.action.UMS_CONNECTED";
-    field @Deprecated public static final String ACTION_UMS_DISCONNECTED = "android.intent.action.UMS_DISCONNECTED";
-    field @Deprecated public static final String ACTION_UNINSTALL_PACKAGE = "android.intent.action.UNINSTALL_PACKAGE";
-    field public static final String ACTION_USER_BACKGROUND = "android.intent.action.USER_BACKGROUND";
-    field public static final String ACTION_USER_FOREGROUND = "android.intent.action.USER_FOREGROUND";
-    field public static final String ACTION_USER_INITIALIZE = "android.intent.action.USER_INITIALIZE";
-    field public static final String ACTION_USER_PRESENT = "android.intent.action.USER_PRESENT";
-    field public static final String ACTION_USER_UNLOCKED = "android.intent.action.USER_UNLOCKED";
-    field public static final String ACTION_VIEW = "android.intent.action.VIEW";
-    field public static final String ACTION_VIEW_LOCUS = "android.intent.action.VIEW_LOCUS";
-    field @RequiresPermission(android.Manifest.permission.START_VIEW_PERMISSION_USAGE) public static final String ACTION_VIEW_PERMISSION_USAGE = "android.intent.action.VIEW_PERMISSION_USAGE";
-    field public static final String ACTION_VOICE_COMMAND = "android.intent.action.VOICE_COMMAND";
-    field @Deprecated public static final String ACTION_WALLPAPER_CHANGED = "android.intent.action.WALLPAPER_CHANGED";
-    field public static final String ACTION_WEB_SEARCH = "android.intent.action.WEB_SEARCH";
-    field public static final String CATEGORY_ACCESSIBILITY_SHORTCUT_TARGET = "android.intent.category.ACCESSIBILITY_SHORTCUT_TARGET";
-    field public static final String CATEGORY_ALTERNATIVE = "android.intent.category.ALTERNATIVE";
-    field public static final String CATEGORY_APP_BROWSER = "android.intent.category.APP_BROWSER";
-    field public static final String CATEGORY_APP_CALCULATOR = "android.intent.category.APP_CALCULATOR";
-    field public static final String CATEGORY_APP_CALENDAR = "android.intent.category.APP_CALENDAR";
-    field public static final String CATEGORY_APP_CONTACTS = "android.intent.category.APP_CONTACTS";
-    field public static final String CATEGORY_APP_EMAIL = "android.intent.category.APP_EMAIL";
-    field public static final String CATEGORY_APP_FILES = "android.intent.category.APP_FILES";
-    field public static final String CATEGORY_APP_GALLERY = "android.intent.category.APP_GALLERY";
-    field public static final String CATEGORY_APP_MAPS = "android.intent.category.APP_MAPS";
-    field public static final String CATEGORY_APP_MARKET = "android.intent.category.APP_MARKET";
-    field public static final String CATEGORY_APP_MESSAGING = "android.intent.category.APP_MESSAGING";
-    field public static final String CATEGORY_APP_MUSIC = "android.intent.category.APP_MUSIC";
-    field public static final String CATEGORY_BROWSABLE = "android.intent.category.BROWSABLE";
-    field public static final String CATEGORY_CAR_DOCK = "android.intent.category.CAR_DOCK";
-    field public static final String CATEGORY_CAR_MODE = "android.intent.category.CAR_MODE";
-    field public static final String CATEGORY_DEFAULT = "android.intent.category.DEFAULT";
-    field public static final String CATEGORY_DESK_DOCK = "android.intent.category.DESK_DOCK";
-    field public static final String CATEGORY_DEVELOPMENT_PREFERENCE = "android.intent.category.DEVELOPMENT_PREFERENCE";
-    field public static final String CATEGORY_EMBED = "android.intent.category.EMBED";
-    field public static final String CATEGORY_FRAMEWORK_INSTRUMENTATION_TEST = "android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST";
-    field public static final String CATEGORY_HE_DESK_DOCK = "android.intent.category.HE_DESK_DOCK";
-    field public static final String CATEGORY_HOME = "android.intent.category.HOME";
-    field public static final String CATEGORY_INFO = "android.intent.category.INFO";
-    field public static final String CATEGORY_LAUNCHER = "android.intent.category.LAUNCHER";
-    field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
-    field public static final String CATEGORY_LE_DESK_DOCK = "android.intent.category.LE_DESK_DOCK";
-    field public static final String CATEGORY_MONKEY = "android.intent.category.MONKEY";
-    field public static final String CATEGORY_OPENABLE = "android.intent.category.OPENABLE";
-    field public static final String CATEGORY_PREFERENCE = "android.intent.category.PREFERENCE";
-    field public static final String CATEGORY_SAMPLE_CODE = "android.intent.category.SAMPLE_CODE";
-    field public static final String CATEGORY_SECONDARY_HOME = "android.intent.category.SECONDARY_HOME";
-    field public static final String CATEGORY_SELECTED_ALTERNATIVE = "android.intent.category.SELECTED_ALTERNATIVE";
-    field public static final String CATEGORY_TAB = "android.intent.category.TAB";
-    field public static final String CATEGORY_TEST = "android.intent.category.TEST";
-    field public static final String CATEGORY_TYPED_OPENABLE = "android.intent.category.TYPED_OPENABLE";
-    field public static final String CATEGORY_UNIT_TEST = "android.intent.category.UNIT_TEST";
-    field public static final String CATEGORY_VOICE = "android.intent.category.VOICE";
-    field public static final String CATEGORY_VR_HOME = "android.intent.category.VR_HOME";
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.Intent> CREATOR;
-    field public static final String EXTRA_ALARM_COUNT = "android.intent.extra.ALARM_COUNT";
-    field public static final String EXTRA_ALLOW_MULTIPLE = "android.intent.extra.ALLOW_MULTIPLE";
-    field @Deprecated public static final String EXTRA_ALLOW_REPLACE = "android.intent.extra.ALLOW_REPLACE";
-    field public static final String EXTRA_ALTERNATE_INTENTS = "android.intent.extra.ALTERNATE_INTENTS";
-    field public static final String EXTRA_ASSIST_CONTEXT = "android.intent.extra.ASSIST_CONTEXT";
-    field public static final String EXTRA_ASSIST_INPUT_DEVICE_ID = "android.intent.extra.ASSIST_INPUT_DEVICE_ID";
-    field public static final String EXTRA_ASSIST_INPUT_HINT_KEYBOARD = "android.intent.extra.ASSIST_INPUT_HINT_KEYBOARD";
-    field public static final String EXTRA_ASSIST_PACKAGE = "android.intent.extra.ASSIST_PACKAGE";
-    field public static final String EXTRA_ASSIST_UID = "android.intent.extra.ASSIST_UID";
-    field public static final String EXTRA_AUTO_LAUNCH_SINGLE_CHOICE = "android.intent.extra.AUTO_LAUNCH_SINGLE_CHOICE";
-    field public static final String EXTRA_BCC = "android.intent.extra.BCC";
-    field public static final String EXTRA_BUG_REPORT = "android.intent.extra.BUG_REPORT";
-    field public static final String EXTRA_CC = "android.intent.extra.CC";
-    field @Deprecated public static final String EXTRA_CHANGED_COMPONENT_NAME = "android.intent.extra.changed_component_name";
-    field public static final String EXTRA_CHANGED_COMPONENT_NAME_LIST = "android.intent.extra.changed_component_name_list";
-    field public static final String EXTRA_CHANGED_PACKAGE_LIST = "android.intent.extra.changed_package_list";
-    field public static final String EXTRA_CHANGED_UID_LIST = "android.intent.extra.changed_uid_list";
-    field public static final String EXTRA_CHOOSER_REFINEMENT_INTENT_SENDER = "android.intent.extra.CHOOSER_REFINEMENT_INTENT_SENDER";
-    field public static final String EXTRA_CHOOSER_TARGETS = "android.intent.extra.CHOOSER_TARGETS";
-    field public static final String EXTRA_CHOSEN_COMPONENT = "android.intent.extra.CHOSEN_COMPONENT";
-    field public static final String EXTRA_CHOSEN_COMPONENT_INTENT_SENDER = "android.intent.extra.CHOSEN_COMPONENT_INTENT_SENDER";
-    field public static final String EXTRA_COMPONENT_NAME = "android.intent.extra.COMPONENT_NAME";
-    field public static final String EXTRA_CONTENT_ANNOTATIONS = "android.intent.extra.CONTENT_ANNOTATIONS";
-    field public static final String EXTRA_CONTENT_QUERY = "android.intent.extra.CONTENT_QUERY";
-    field public static final String EXTRA_DATA_REMOVED = "android.intent.extra.DATA_REMOVED";
-    field public static final String EXTRA_DOCK_STATE = "android.intent.extra.DOCK_STATE";
-    field public static final int EXTRA_DOCK_STATE_CAR = 2; // 0x2
-    field public static final int EXTRA_DOCK_STATE_DESK = 1; // 0x1
-    field public static final int EXTRA_DOCK_STATE_HE_DESK = 4; // 0x4
-    field public static final int EXTRA_DOCK_STATE_LE_DESK = 3; // 0x3
-    field public static final int EXTRA_DOCK_STATE_UNDOCKED = 0; // 0x0
-    field public static final String EXTRA_DONT_KILL_APP = "android.intent.extra.DONT_KILL_APP";
-    field public static final String EXTRA_DURATION_MILLIS = "android.intent.extra.DURATION_MILLIS";
-    field public static final String EXTRA_EMAIL = "android.intent.extra.EMAIL";
-    field public static final String EXTRA_EXCLUDE_COMPONENTS = "android.intent.extra.EXCLUDE_COMPONENTS";
-    field public static final String EXTRA_FROM_STORAGE = "android.intent.extra.FROM_STORAGE";
-    field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
-    field public static final String EXTRA_INDEX = "android.intent.extra.INDEX";
-    field public static final String EXTRA_INITIAL_INTENTS = "android.intent.extra.INITIAL_INTENTS";
-    field public static final String EXTRA_INSTALLER_PACKAGE_NAME = "android.intent.extra.INSTALLER_PACKAGE_NAME";
-    field public static final String EXTRA_INTENT = "android.intent.extra.INTENT";
-    field public static final String EXTRA_KEY_EVENT = "android.intent.extra.KEY_EVENT";
-    field public static final String EXTRA_LOCAL_ONLY = "android.intent.extra.LOCAL_ONLY";
-    field public static final String EXTRA_LOCUS_ID = "android.intent.extra.LOCUS_ID";
-    field public static final String EXTRA_MIME_TYPES = "android.intent.extra.MIME_TYPES";
-    field public static final String EXTRA_NOT_UNKNOWN_SOURCE = "android.intent.extra.NOT_UNKNOWN_SOURCE";
-    field public static final String EXTRA_ORIGINATING_URI = "android.intent.extra.ORIGINATING_URI";
-    field public static final String EXTRA_PACKAGE_NAME = "android.intent.extra.PACKAGE_NAME";
-    field public static final String EXTRA_PHONE_NUMBER = "android.intent.extra.PHONE_NUMBER";
-    field public static final String EXTRA_PROCESS_TEXT = "android.intent.extra.PROCESS_TEXT";
-    field public static final String EXTRA_PROCESS_TEXT_READONLY = "android.intent.extra.PROCESS_TEXT_READONLY";
-    field public static final String EXTRA_QUICK_VIEW_FEATURES = "android.intent.extra.QUICK_VIEW_FEATURES";
-    field public static final String EXTRA_QUIET_MODE = "android.intent.extra.QUIET_MODE";
-    field public static final String EXTRA_REFERRER = "android.intent.extra.REFERRER";
-    field public static final String EXTRA_REFERRER_NAME = "android.intent.extra.REFERRER_NAME";
-    field public static final String EXTRA_REMOTE_INTENT_TOKEN = "android.intent.extra.remote_intent_token";
-    field public static final String EXTRA_REPLACEMENT_EXTRAS = "android.intent.extra.REPLACEMENT_EXTRAS";
-    field public static final String EXTRA_REPLACING = "android.intent.extra.REPLACING";
-    field public static final String EXTRA_RESTRICTIONS_BUNDLE = "android.intent.extra.restrictions_bundle";
-    field public static final String EXTRA_RESTRICTIONS_INTENT = "android.intent.extra.restrictions_intent";
-    field public static final String EXTRA_RESTRICTIONS_LIST = "android.intent.extra.restrictions_list";
-    field public static final String EXTRA_RESULT_RECEIVER = "android.intent.extra.RESULT_RECEIVER";
-    field public static final String EXTRA_RETURN_RESULT = "android.intent.extra.RETURN_RESULT";
-    field @Deprecated public static final String EXTRA_SHORTCUT_ICON = "android.intent.extra.shortcut.ICON";
-    field @Deprecated public static final String EXTRA_SHORTCUT_ICON_RESOURCE = "android.intent.extra.shortcut.ICON_RESOURCE";
-    field public static final String EXTRA_SHORTCUT_ID = "android.intent.extra.shortcut.ID";
-    field @Deprecated public static final String EXTRA_SHORTCUT_INTENT = "android.intent.extra.shortcut.INTENT";
-    field @Deprecated public static final String EXTRA_SHORTCUT_NAME = "android.intent.extra.shortcut.NAME";
-    field public static final String EXTRA_SHUTDOWN_USERSPACE_ONLY = "android.intent.extra.SHUTDOWN_USERSPACE_ONLY";
-    field public static final String EXTRA_SPLIT_NAME = "android.intent.extra.SPLIT_NAME";
-    field public static final String EXTRA_STREAM = "android.intent.extra.STREAM";
-    field public static final String EXTRA_SUBJECT = "android.intent.extra.SUBJECT";
-    field public static final String EXTRA_SUSPENDED_PACKAGE_EXTRAS = "android.intent.extra.SUSPENDED_PACKAGE_EXTRAS";
-    field public static final String EXTRA_TEMPLATE = "android.intent.extra.TEMPLATE";
-    field public static final String EXTRA_TEXT = "android.intent.extra.TEXT";
-    field public static final String EXTRA_TIME = "android.intent.extra.TIME";
-    field public static final String EXTRA_TIMEZONE = "time-zone";
-    field public static final String EXTRA_TITLE = "android.intent.extra.TITLE";
-    field public static final String EXTRA_UID = "android.intent.extra.UID";
-    field public static final String EXTRA_USER = "android.intent.extra.USER";
-    field public static final int FILL_IN_ACTION = 1; // 0x1
-    field public static final int FILL_IN_CATEGORIES = 4; // 0x4
-    field public static final int FILL_IN_CLIP_DATA = 128; // 0x80
-    field public static final int FILL_IN_COMPONENT = 8; // 0x8
-    field public static final int FILL_IN_DATA = 2; // 0x2
-    field public static final int FILL_IN_IDENTIFIER = 256; // 0x100
-    field public static final int FILL_IN_PACKAGE = 16; // 0x10
-    field public static final int FILL_IN_SELECTOR = 64; // 0x40
-    field public static final int FILL_IN_SOURCE_BOUNDS = 32; // 0x20
-    field public static final int FLAG_ACTIVITY_BROUGHT_TO_FRONT = 4194304; // 0x400000
-    field public static final int FLAG_ACTIVITY_CLEAR_TASK = 32768; // 0x8000
-    field public static final int FLAG_ACTIVITY_CLEAR_TOP = 67108864; // 0x4000000
-    field @Deprecated public static final int FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET = 524288; // 0x80000
-    field public static final int FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS = 8388608; // 0x800000
-    field public static final int FLAG_ACTIVITY_FORWARD_RESULT = 33554432; // 0x2000000
-    field public static final int FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY = 1048576; // 0x100000
-    field public static final int FLAG_ACTIVITY_LAUNCH_ADJACENT = 4096; // 0x1000
-    field public static final int FLAG_ACTIVITY_MATCH_EXTERNAL = 2048; // 0x800
-    field public static final int FLAG_ACTIVITY_MULTIPLE_TASK = 134217728; // 0x8000000
-    field public static final int FLAG_ACTIVITY_NEW_DOCUMENT = 524288; // 0x80000
-    field public static final int FLAG_ACTIVITY_NEW_TASK = 268435456; // 0x10000000
-    field public static final int FLAG_ACTIVITY_NO_ANIMATION = 65536; // 0x10000
-    field public static final int FLAG_ACTIVITY_NO_HISTORY = 1073741824; // 0x40000000
-    field public static final int FLAG_ACTIVITY_NO_USER_ACTION = 262144; // 0x40000
-    field public static final int FLAG_ACTIVITY_PREVIOUS_IS_TOP = 16777216; // 0x1000000
-    field public static final int FLAG_ACTIVITY_REORDER_TO_FRONT = 131072; // 0x20000
-    field public static final int FLAG_ACTIVITY_REQUIRE_DEFAULT = 512; // 0x200
-    field public static final int FLAG_ACTIVITY_REQUIRE_NON_BROWSER = 1024; // 0x400
-    field public static final int FLAG_ACTIVITY_RESET_TASK_IF_NEEDED = 2097152; // 0x200000
-    field public static final int FLAG_ACTIVITY_RETAIN_IN_RECENTS = 8192; // 0x2000
-    field public static final int FLAG_ACTIVITY_SINGLE_TOP = 536870912; // 0x20000000
-    field public static final int FLAG_ACTIVITY_TASK_ON_HOME = 16384; // 0x4000
-    field public static final int FLAG_DEBUG_LOG_RESOLUTION = 8; // 0x8
-    field public static final int FLAG_DIRECT_BOOT_AUTO = 256; // 0x100
-    field public static final int FLAG_EXCLUDE_STOPPED_PACKAGES = 16; // 0x10
-    field public static final int FLAG_FROM_BACKGROUND = 4; // 0x4
-    field public static final int FLAG_GRANT_PERSISTABLE_URI_PERMISSION = 64; // 0x40
-    field public static final int FLAG_GRANT_PREFIX_URI_PERMISSION = 128; // 0x80
-    field public static final int FLAG_GRANT_READ_URI_PERMISSION = 1; // 0x1
-    field public static final int FLAG_GRANT_WRITE_URI_PERMISSION = 2; // 0x2
-    field public static final int FLAG_INCLUDE_STOPPED_PACKAGES = 32; // 0x20
-    field public static final int FLAG_RECEIVER_FOREGROUND = 268435456; // 0x10000000
-    field public static final int FLAG_RECEIVER_NO_ABORT = 134217728; // 0x8000000
-    field public static final int FLAG_RECEIVER_REGISTERED_ONLY = 1073741824; // 0x40000000
-    field public static final int FLAG_RECEIVER_REPLACE_PENDING = 536870912; // 0x20000000
-    field public static final int FLAG_RECEIVER_VISIBLE_TO_INSTANT_APPS = 2097152; // 0x200000
-    field public static final String METADATA_DOCK_HOME = "android.dock_home";
-    field public static final int URI_ALLOW_UNSAFE = 4; // 0x4
-    field public static final int URI_ANDROID_APP_SCHEME = 2; // 0x2
-    field public static final int URI_INTENT_SCHEME = 1; // 0x1
-  }
-
-  public static final class Intent.FilterComparison {
-    ctor public Intent.FilterComparison(android.content.Intent);
-    method public android.content.Intent getIntent();
-  }
-
-  public static class Intent.ShortcutIconResource implements android.os.Parcelable {
-    ctor public Intent.ShortcutIconResource();
-    method public int describeContents();
-    method public static android.content.Intent.ShortcutIconResource fromContext(android.content.Context, @AnyRes int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.Intent.ShortcutIconResource> CREATOR;
-    field public String packageName;
-    field public String resourceName;
-  }
-
-  public class IntentFilter implements android.os.Parcelable {
-    ctor public IntentFilter();
-    ctor public IntentFilter(String);
-    ctor public IntentFilter(String, String) throws android.content.IntentFilter.MalformedMimeTypeException;
-    ctor public IntentFilter(android.content.IntentFilter);
-    method public final java.util.Iterator<java.lang.String> actionsIterator();
-    method public final void addAction(String);
-    method public final void addCategory(String);
-    method public final void addDataAuthority(String, String);
-    method public final void addDataPath(String, int);
-    method public final void addDataScheme(String);
-    method public final void addDataSchemeSpecificPart(String, int);
-    method public final void addDataType(String) throws android.content.IntentFilter.MalformedMimeTypeException;
-    method public final java.util.Iterator<android.content.IntentFilter.AuthorityEntry> authoritiesIterator();
-    method public final java.util.Iterator<java.lang.String> categoriesIterator();
-    method public final int countActions();
-    method public final int countCategories();
-    method public final int countDataAuthorities();
-    method public final int countDataPaths();
-    method public final int countDataSchemeSpecificParts();
-    method public final int countDataSchemes();
-    method public final int countDataTypes();
-    method public static android.content.IntentFilter create(String, String);
-    method public final int describeContents();
-    method public void dump(android.util.Printer, String);
-    method public final String getAction(int);
-    method public final String getCategory(int);
-    method public final android.content.IntentFilter.AuthorityEntry getDataAuthority(int);
-    method public final android.os.PatternMatcher getDataPath(int);
-    method public final String getDataScheme(int);
-    method public final android.os.PatternMatcher getDataSchemeSpecificPart(int);
-    method public final String getDataType(int);
-    method public final int getPriority();
-    method public final boolean hasAction(String);
-    method public final boolean hasCategory(String);
-    method public final boolean hasDataAuthority(android.net.Uri);
-    method public final boolean hasDataPath(String);
-    method public final boolean hasDataScheme(String);
-    method public final boolean hasDataSchemeSpecificPart(String);
-    method public final boolean hasDataType(String);
-    method public final int match(android.content.ContentResolver, android.content.Intent, boolean, String);
-    method public final int match(String, String, String, android.net.Uri, java.util.Set<java.lang.String>, String);
-    method public final boolean matchAction(String);
-    method public final String matchCategories(java.util.Set<java.lang.String>);
-    method public final int matchData(String, String, android.net.Uri);
-    method public final int matchDataAuthority(android.net.Uri);
-    method public final java.util.Iterator<android.os.PatternMatcher> pathsIterator();
-    method public void readFromXml(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public final java.util.Iterator<android.os.PatternMatcher> schemeSpecificPartsIterator();
-    method public final java.util.Iterator<java.lang.String> schemesIterator();
-    method public final void setPriority(int);
-    method public final java.util.Iterator<java.lang.String> typesIterator();
-    method public final void writeToParcel(android.os.Parcel, int);
-    method public void writeToXml(org.xmlpull.v1.XmlSerializer) throws java.io.IOException;
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.IntentFilter> CREATOR;
-    field public static final int MATCH_ADJUSTMENT_MASK = 65535; // 0xffff
-    field public static final int MATCH_ADJUSTMENT_NORMAL = 32768; // 0x8000
-    field public static final int MATCH_CATEGORY_EMPTY = 1048576; // 0x100000
-    field public static final int MATCH_CATEGORY_HOST = 3145728; // 0x300000
-    field public static final int MATCH_CATEGORY_MASK = 268369920; // 0xfff0000
-    field public static final int MATCH_CATEGORY_PATH = 5242880; // 0x500000
-    field public static final int MATCH_CATEGORY_PORT = 4194304; // 0x400000
-    field public static final int MATCH_CATEGORY_SCHEME = 2097152; // 0x200000
-    field public static final int MATCH_CATEGORY_SCHEME_SPECIFIC_PART = 5767168; // 0x580000
-    field public static final int MATCH_CATEGORY_TYPE = 6291456; // 0x600000
-    field public static final int NO_MATCH_ACTION = -3; // 0xfffffffd
-    field public static final int NO_MATCH_CATEGORY = -4; // 0xfffffffc
-    field public static final int NO_MATCH_DATA = -2; // 0xfffffffe
-    field public static final int NO_MATCH_TYPE = -1; // 0xffffffff
-    field public static final int SYSTEM_HIGH_PRIORITY = 1000; // 0x3e8
-    field public static final int SYSTEM_LOW_PRIORITY = -1000; // 0xfffffc18
-  }
-
-  public static final class IntentFilter.AuthorityEntry {
-    ctor public IntentFilter.AuthorityEntry(String, String);
-    method public String getHost();
-    method public int getPort();
-    method public int match(android.net.Uri);
-  }
-
-  public static class IntentFilter.MalformedMimeTypeException extends android.util.AndroidException {
-    ctor public IntentFilter.MalformedMimeTypeException();
-    ctor public IntentFilter.MalformedMimeTypeException(String);
-  }
-
-  public class IntentSender implements android.os.Parcelable {
-    method public int describeContents();
-    method public String getCreatorPackage();
-    method public int getCreatorUid();
-    method public android.os.UserHandle getCreatorUserHandle();
-    method @Deprecated public String getTargetPackage();
-    method public static android.content.IntentSender readIntentSenderOrNullFromParcel(android.os.Parcel);
-    method public void sendIntent(android.content.Context, int, android.content.Intent, android.content.IntentSender.OnFinished, android.os.Handler) throws android.content.IntentSender.SendIntentException;
-    method public void sendIntent(android.content.Context, int, android.content.Intent, android.content.IntentSender.OnFinished, android.os.Handler, String) throws android.content.IntentSender.SendIntentException;
-    method public static void writeIntentSenderOrNullToParcel(android.content.IntentSender, android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.IntentSender> CREATOR;
-  }
-
-  public static interface IntentSender.OnFinished {
-    method public void onSendFinished(android.content.IntentSender, android.content.Intent, int, String, android.os.Bundle);
-  }
-
-  public static class IntentSender.SendIntentException extends android.util.AndroidException {
-    ctor public IntentSender.SendIntentException();
-    ctor public IntentSender.SendIntentException(String);
-    ctor public IntentSender.SendIntentException(Exception);
-  }
-
-  @Deprecated public class Loader<D> {
-    ctor @Deprecated public Loader(android.content.Context);
-    method @Deprecated public void abandon();
-    method @Deprecated public boolean cancelLoad();
-    method @Deprecated public void commitContentChanged();
-    method @Deprecated public String dataToString(D);
-    method @Deprecated public void deliverCancellation();
-    method @Deprecated public void deliverResult(D);
-    method @Deprecated public void dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method @Deprecated public void forceLoad();
-    method @Deprecated public android.content.Context getContext();
-    method @Deprecated public int getId();
-    method @Deprecated public boolean isAbandoned();
-    method @Deprecated public boolean isReset();
-    method @Deprecated public boolean isStarted();
-    method @Deprecated protected void onAbandon();
-    method @Deprecated protected boolean onCancelLoad();
-    method @Deprecated public void onContentChanged();
-    method @Deprecated protected void onForceLoad();
-    method @Deprecated protected void onReset();
-    method @Deprecated protected void onStartLoading();
-    method @Deprecated protected void onStopLoading();
-    method @Deprecated public void registerListener(int, android.content.Loader.OnLoadCompleteListener<D>);
-    method @Deprecated public void registerOnLoadCanceledListener(android.content.Loader.OnLoadCanceledListener<D>);
-    method @Deprecated public void reset();
-    method @Deprecated public void rollbackContentChanged();
-    method @Deprecated public final void startLoading();
-    method @Deprecated public void stopLoading();
-    method @Deprecated public boolean takeContentChanged();
-    method @Deprecated public void unregisterListener(android.content.Loader.OnLoadCompleteListener<D>);
-    method @Deprecated public void unregisterOnLoadCanceledListener(android.content.Loader.OnLoadCanceledListener<D>);
-  }
-
-  @Deprecated public final class Loader.ForceLoadContentObserver extends android.database.ContentObserver {
-    ctor @Deprecated public Loader.ForceLoadContentObserver();
-  }
-
-  @Deprecated public static interface Loader.OnLoadCanceledListener<D> {
-    method @Deprecated public void onLoadCanceled(android.content.Loader<D>);
-  }
-
-  @Deprecated public static interface Loader.OnLoadCompleteListener<D> {
-    method @Deprecated public void onLoadComplete(android.content.Loader<D>, D);
-  }
-
-  public final class LocusId implements android.os.Parcelable {
-    ctor public LocusId(@NonNull String);
-    method public int describeContents();
-    method @NonNull public String getId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.LocusId> CREATOR;
-  }
-
-  public class MutableContextWrapper extends android.content.ContextWrapper {
-    ctor public MutableContextWrapper(android.content.Context);
-    method public void setBaseContext(android.content.Context);
-  }
-
-  public class OperationApplicationException extends java.lang.Exception {
-    ctor public OperationApplicationException();
-    ctor public OperationApplicationException(String);
-    ctor public OperationApplicationException(String, Throwable);
-    ctor public OperationApplicationException(Throwable);
-    ctor public OperationApplicationException(int);
-    ctor public OperationApplicationException(String, int);
-    method public int getNumSuccessfulYieldPoints();
-  }
-
-  public class PeriodicSync implements android.os.Parcelable {
-    ctor public PeriodicSync(android.accounts.Account, String, android.os.Bundle, long);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.PeriodicSync> CREATOR;
-    field public final android.accounts.Account account;
-    field public final String authority;
-    field public final android.os.Bundle extras;
-    field public final long period;
-  }
-
-  public class QuickViewConstants {
-    field public static final String FEATURE_DELETE = "android:delete";
-    field public static final String FEATURE_DOWNLOAD = "android:download";
-    field public static final String FEATURE_EDIT = "android:edit";
-    field public static final String FEATURE_PRINT = "android:print";
-    field public static final String FEATURE_SEND = "android:send";
-    field public static final String FEATURE_VIEW = "android:view";
-  }
-
-  public class ReceiverCallNotAllowedException extends android.util.AndroidRuntimeException {
-    ctor public ReceiverCallNotAllowedException(String);
-  }
-
-  public class RestrictionEntry implements android.os.Parcelable {
-    ctor public RestrictionEntry(int, String);
-    ctor public RestrictionEntry(String, String);
-    ctor public RestrictionEntry(String, boolean);
-    ctor public RestrictionEntry(String, String[]);
-    ctor public RestrictionEntry(String, int);
-    ctor public RestrictionEntry(android.os.Parcel);
-    method public static android.content.RestrictionEntry createBundleArrayEntry(String, android.content.RestrictionEntry[]);
-    method public static android.content.RestrictionEntry createBundleEntry(String, android.content.RestrictionEntry[]);
-    method public int describeContents();
-    method public String[] getAllSelectedStrings();
-    method public String[] getChoiceEntries();
-    method public String[] getChoiceValues();
-    method public String getDescription();
-    method public int getIntValue();
-    method public String getKey();
-    method public android.content.RestrictionEntry[] getRestrictions();
-    method public boolean getSelectedState();
-    method public String getSelectedString();
-    method public String getTitle();
-    method public int getType();
-    method public void setAllSelectedStrings(String[]);
-    method public void setChoiceEntries(String[]);
-    method public void setChoiceEntries(android.content.Context, @ArrayRes int);
-    method public void setChoiceValues(String[]);
-    method public void setChoiceValues(android.content.Context, @ArrayRes int);
-    method public void setDescription(String);
-    method public void setIntValue(int);
-    method public void setRestrictions(android.content.RestrictionEntry[]);
-    method public void setSelectedState(boolean);
-    method public void setSelectedString(String);
-    method public void setTitle(String);
-    method public void setType(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.RestrictionEntry> CREATOR;
-    field public static final int TYPE_BOOLEAN = 1; // 0x1
-    field public static final int TYPE_BUNDLE = 7; // 0x7
-    field public static final int TYPE_BUNDLE_ARRAY = 8; // 0x8
-    field public static final int TYPE_CHOICE = 2; // 0x2
-    field public static final int TYPE_INTEGER = 5; // 0x5
-    field public static final int TYPE_MULTI_SELECT = 4; // 0x4
-    field public static final int TYPE_NULL = 0; // 0x0
-    field public static final int TYPE_STRING = 6; // 0x6
-  }
-
-  public class RestrictionsManager {
-    method public static android.os.Bundle convertRestrictionsToBundle(java.util.List<android.content.RestrictionEntry>);
-    method public android.content.Intent createLocalApprovalIntent();
-    method public android.os.Bundle getApplicationRestrictions();
-    method public java.util.List<android.content.RestrictionEntry> getManifestRestrictions(String);
-    method public boolean hasRestrictionsProvider();
-    method public void notifyPermissionResponse(String, android.os.PersistableBundle);
-    method public void requestPermission(String, String, android.os.PersistableBundle);
-    field public static final String ACTION_PERMISSION_RESPONSE_RECEIVED = "android.content.action.PERMISSION_RESPONSE_RECEIVED";
-    field public static final String ACTION_REQUEST_LOCAL_APPROVAL = "android.content.action.REQUEST_LOCAL_APPROVAL";
-    field public static final String ACTION_REQUEST_PERMISSION = "android.content.action.REQUEST_PERMISSION";
-    field public static final String EXTRA_PACKAGE_NAME = "android.content.extra.PACKAGE_NAME";
-    field public static final String EXTRA_REQUEST_BUNDLE = "android.content.extra.REQUEST_BUNDLE";
-    field public static final String EXTRA_REQUEST_ID = "android.content.extra.REQUEST_ID";
-    field public static final String EXTRA_REQUEST_TYPE = "android.content.extra.REQUEST_TYPE";
-    field public static final String EXTRA_RESPONSE_BUNDLE = "android.content.extra.RESPONSE_BUNDLE";
-    field public static final String META_DATA_APP_RESTRICTIONS = "android.content.APP_RESTRICTIONS";
-    field public static final String REQUEST_KEY_APPROVE_LABEL = "android.request.approve_label";
-    field public static final String REQUEST_KEY_DATA = "android.request.data";
-    field public static final String REQUEST_KEY_DENY_LABEL = "android.request.deny_label";
-    field public static final String REQUEST_KEY_ICON = "android.request.icon";
-    field public static final String REQUEST_KEY_ID = "android.request.id";
-    field public static final String REQUEST_KEY_MESSAGE = "android.request.mesg";
-    field public static final String REQUEST_KEY_NEW_REQUEST = "android.request.new_request";
-    field public static final String REQUEST_KEY_TITLE = "android.request.title";
-    field public static final String REQUEST_TYPE_APPROVAL = "android.request.type.approval";
-    field public static final String RESPONSE_KEY_ERROR_CODE = "android.response.errorcode";
-    field public static final String RESPONSE_KEY_MESSAGE = "android.response.msg";
-    field public static final String RESPONSE_KEY_RESPONSE_TIMESTAMP = "android.response.timestamp";
-    field public static final String RESPONSE_KEY_RESULT = "android.response.result";
-    field public static final int RESULT_APPROVED = 1; // 0x1
-    field public static final int RESULT_DENIED = 2; // 0x2
-    field public static final int RESULT_ERROR = 5; // 0x5
-    field public static final int RESULT_ERROR_BAD_REQUEST = 1; // 0x1
-    field public static final int RESULT_ERROR_INTERNAL = 3; // 0x3
-    field public static final int RESULT_ERROR_NETWORK = 2; // 0x2
-    field public static final int RESULT_NO_RESPONSE = 3; // 0x3
-    field public static final int RESULT_UNKNOWN_REQUEST = 4; // 0x4
-  }
-
-  public class SearchRecentSuggestionsProvider extends android.content.ContentProvider {
-    ctor public SearchRecentSuggestionsProvider();
-    method public int delete(android.net.Uri, String, String[]);
-    method public String getType(android.net.Uri);
-    method public android.net.Uri insert(android.net.Uri, android.content.ContentValues);
-    method public boolean onCreate();
-    method public android.database.Cursor query(android.net.Uri, String[], String, String[], String);
-    method protected void setupSuggestions(String, int);
-    method public int update(android.net.Uri, android.content.ContentValues, String, String[]);
-    field public static final int DATABASE_MODE_2LINES = 2; // 0x2
-    field public static final int DATABASE_MODE_QUERIES = 1; // 0x1
-  }
-
-  public interface ServiceConnection {
-    method public default void onBindingDied(android.content.ComponentName);
-    method public default void onNullBinding(android.content.ComponentName);
-    method public void onServiceConnected(android.content.ComponentName, android.os.IBinder);
-    method public void onServiceDisconnected(android.content.ComponentName);
-  }
-
-  public interface SharedPreferences {
-    method public boolean contains(String);
-    method public android.content.SharedPreferences.Editor edit();
-    method public java.util.Map<java.lang.String,?> getAll();
-    method public boolean getBoolean(String, boolean);
-    method public float getFloat(String, float);
-    method public int getInt(String, int);
-    method public long getLong(String, long);
-    method @Nullable public String getString(String, @Nullable String);
-    method @Nullable public java.util.Set<java.lang.String> getStringSet(String, @Nullable java.util.Set<java.lang.String>);
-    method public void registerOnSharedPreferenceChangeListener(android.content.SharedPreferences.OnSharedPreferenceChangeListener);
-    method public void unregisterOnSharedPreferenceChangeListener(android.content.SharedPreferences.OnSharedPreferenceChangeListener);
-  }
-
-  public static interface SharedPreferences.Editor {
-    method public void apply();
-    method public android.content.SharedPreferences.Editor clear();
-    method public boolean commit();
-    method public android.content.SharedPreferences.Editor putBoolean(String, boolean);
-    method public android.content.SharedPreferences.Editor putFloat(String, float);
-    method public android.content.SharedPreferences.Editor putInt(String, int);
-    method public android.content.SharedPreferences.Editor putLong(String, long);
-    method public android.content.SharedPreferences.Editor putString(String, @Nullable String);
-    method public android.content.SharedPreferences.Editor putStringSet(String, @Nullable java.util.Set<java.lang.String>);
-    method public android.content.SharedPreferences.Editor remove(String);
-  }
-
-  public static interface SharedPreferences.OnSharedPreferenceChangeListener {
-    method public void onSharedPreferenceChanged(android.content.SharedPreferences, String);
-  }
-
-  public class SyncAdapterType implements android.os.Parcelable {
-    ctor public SyncAdapterType(String, String, boolean, boolean);
-    ctor public SyncAdapterType(android.os.Parcel);
-    method public boolean allowParallelSyncs();
-    method public int describeContents();
-    method public String getSettingsActivity();
-    method public boolean isAlwaysSyncable();
-    method public boolean isUserVisible();
-    method public static android.content.SyncAdapterType newKey(String, String);
-    method public boolean supportsUploading();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.SyncAdapterType> CREATOR;
-    field public final String accountType;
-    field public final String authority;
-    field public final boolean isKey;
-  }
-
-  public class SyncContext {
-    method public android.os.IBinder getSyncContextBinder();
-    method public void onFinished(android.content.SyncResult);
-  }
-
-  public class SyncInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public final android.accounts.Account account;
-    field public final String authority;
-    field public final long startTime;
-  }
-
-  public class SyncRequest implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.SyncRequest> CREATOR;
-  }
-
-  public static class SyncRequest.Builder {
-    ctor public SyncRequest.Builder();
-    method public android.content.SyncRequest build();
-    method public android.content.SyncRequest.Builder setDisallowMetered(boolean);
-    method public android.content.SyncRequest.Builder setExpedited(boolean);
-    method public android.content.SyncRequest.Builder setExtras(android.os.Bundle);
-    method public android.content.SyncRequest.Builder setIgnoreBackoff(boolean);
-    method public android.content.SyncRequest.Builder setIgnoreSettings(boolean);
-    method public android.content.SyncRequest.Builder setManual(boolean);
-    method public android.content.SyncRequest.Builder setNoRetry(boolean);
-    method public android.content.SyncRequest.Builder setRequiresCharging(boolean);
-    method public android.content.SyncRequest.Builder setSyncAdapter(android.accounts.Account, String);
-    method public android.content.SyncRequest.Builder syncOnce();
-    method public android.content.SyncRequest.Builder syncPeriodic(long, long);
-  }
-
-  public final class SyncResult implements android.os.Parcelable {
-    ctor public SyncResult();
-    method public void clear();
-    method public int describeContents();
-    method public boolean hasError();
-    method public boolean hasHardError();
-    method public boolean hasSoftError();
-    method public boolean madeSomeProgress();
-    method public String toDebugString();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.content.SyncResult ALREADY_IN_PROGRESS;
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.SyncResult> CREATOR;
-    field public boolean databaseError;
-    field public long delayUntil;
-    field public boolean fullSyncRequested;
-    field public boolean moreRecordsToGet;
-    field public boolean partialSyncUnavailable;
-    field public final android.content.SyncStats stats;
-    field public final boolean syncAlreadyInProgress;
-    field public boolean tooManyDeletions;
-    field public boolean tooManyRetries;
-  }
-
-  public class SyncStats implements android.os.Parcelable {
-    ctor public SyncStats();
-    ctor public SyncStats(android.os.Parcel);
-    method public void clear();
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.SyncStats> CREATOR;
-    field public long numAuthExceptions;
-    field public long numConflictDetectedExceptions;
-    field public long numDeletes;
-    field public long numEntries;
-    field public long numInserts;
-    field public long numIoExceptions;
-    field public long numParseExceptions;
-    field public long numSkippedEntries;
-    field public long numUpdates;
-  }
-
-  public interface SyncStatusObserver {
-    method public void onStatusChanged(int);
-  }
-
-  public class UriMatcher {
-    ctor public UriMatcher(int);
-    method public void addURI(String, String, int);
-    method public int match(android.net.Uri);
-    field public static final int NO_MATCH = -1; // 0xffffffff
-  }
-
-  public final class UriPermission implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getPersistedTime();
-    method public android.net.Uri getUri();
-    method public boolean isReadPermission();
-    method public boolean isWritePermission();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.UriPermission> CREATOR;
-    field public static final long INVALID_TIME = -9223372036854775808L; // 0x8000000000000000L
-  }
-
-}
-
-package android.content.pm {
-
-  public class ActivityInfo extends android.content.pm.ComponentInfo implements android.os.Parcelable {
-    ctor public ActivityInfo();
-    ctor public ActivityInfo(android.content.pm.ActivityInfo);
-    method public int describeContents();
-    method public void dump(android.util.Printer, String);
-    method public final int getThemeResource();
-    field public static final int COLOR_MODE_DEFAULT = 0; // 0x0
-    field public static final int COLOR_MODE_HDR = 2; // 0x2
-    field public static final int COLOR_MODE_WIDE_COLOR_GAMUT = 1; // 0x1
-    field public static final int CONFIG_COLOR_MODE = 16384; // 0x4000
-    field public static final int CONFIG_DENSITY = 4096; // 0x1000
-    field public static final int CONFIG_FONT_SCALE = 1073741824; // 0x40000000
-    field public static final int CONFIG_KEYBOARD = 16; // 0x10
-    field public static final int CONFIG_KEYBOARD_HIDDEN = 32; // 0x20
-    field public static final int CONFIG_LAYOUT_DIRECTION = 8192; // 0x2000
-    field public static final int CONFIG_LOCALE = 4; // 0x4
-    field public static final int CONFIG_MCC = 1; // 0x1
-    field public static final int CONFIG_MNC = 2; // 0x2
-    field public static final int CONFIG_NAVIGATION = 64; // 0x40
-    field public static final int CONFIG_ORIENTATION = 128; // 0x80
-    field public static final int CONFIG_SCREEN_LAYOUT = 256; // 0x100
-    field public static final int CONFIG_SCREEN_SIZE = 1024; // 0x400
-    field public static final int CONFIG_SMALLEST_SCREEN_SIZE = 2048; // 0x800
-    field public static final int CONFIG_TOUCHSCREEN = 8; // 0x8
-    field public static final int CONFIG_UI_MODE = 512; // 0x200
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ActivityInfo> CREATOR;
-    field public static final int DOCUMENT_LAUNCH_ALWAYS = 2; // 0x2
-    field public static final int DOCUMENT_LAUNCH_INTO_EXISTING = 1; // 0x1
-    field public static final int DOCUMENT_LAUNCH_NEVER = 3; // 0x3
-    field public static final int DOCUMENT_LAUNCH_NONE = 0; // 0x0
-    field public static final int FLAG_ALLOW_TASK_REPARENTING = 64; // 0x40
-    field public static final int FLAG_ALWAYS_RETAIN_TASK_STATE = 8; // 0x8
-    field public static final int FLAG_AUTO_REMOVE_FROM_RECENTS = 8192; // 0x2000
-    field public static final int FLAG_CLEAR_TASK_ON_LAUNCH = 4; // 0x4
-    field public static final int FLAG_ENABLE_VR_MODE = 32768; // 0x8000
-    field public static final int FLAG_EXCLUDE_FROM_RECENTS = 32; // 0x20
-    field public static final int FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS = 256; // 0x100
-    field public static final int FLAG_FINISH_ON_TASK_LAUNCH = 2; // 0x2
-    field public static final int FLAG_HARDWARE_ACCELERATED = 512; // 0x200
-    field public static final int FLAG_IMMERSIVE = 2048; // 0x800
-    field public static final int FLAG_MULTIPROCESS = 1; // 0x1
-    field public static final int FLAG_NO_HISTORY = 128; // 0x80
-    field public static final int FLAG_PREFER_MINIMAL_POST_PROCESSING = 33554432; // 0x2000000
-    field public static final int FLAG_RELINQUISH_TASK_IDENTITY = 4096; // 0x1000
-    field public static final int FLAG_RESUME_WHILE_PAUSING = 16384; // 0x4000
-    field public static final int FLAG_SINGLE_USER = 1073741824; // 0x40000000
-    field public static final int FLAG_STATE_NOT_NEEDED = 16; // 0x10
-    field public static final int LAUNCH_MULTIPLE = 0; // 0x0
-    field public static final int LAUNCH_SINGLE_INSTANCE = 3; // 0x3
-    field public static final int LAUNCH_SINGLE_TASK = 2; // 0x2
-    field public static final int LAUNCH_SINGLE_TOP = 1; // 0x1
-    field public static final int PERSIST_ACROSS_REBOOTS = 2; // 0x2
-    field public static final int PERSIST_NEVER = 1; // 0x1
-    field public static final int PERSIST_ROOT_ONLY = 0; // 0x0
-    field public static final int SCREEN_ORIENTATION_BEHIND = 3; // 0x3
-    field public static final int SCREEN_ORIENTATION_FULL_SENSOR = 10; // 0xa
-    field public static final int SCREEN_ORIENTATION_FULL_USER = 13; // 0xd
-    field public static final int SCREEN_ORIENTATION_LANDSCAPE = 0; // 0x0
-    field public static final int SCREEN_ORIENTATION_LOCKED = 14; // 0xe
-    field public static final int SCREEN_ORIENTATION_NOSENSOR = 5; // 0x5
-    field public static final int SCREEN_ORIENTATION_PORTRAIT = 1; // 0x1
-    field public static final int SCREEN_ORIENTATION_REVERSE_LANDSCAPE = 8; // 0x8
-    field public static final int SCREEN_ORIENTATION_REVERSE_PORTRAIT = 9; // 0x9
-    field public static final int SCREEN_ORIENTATION_SENSOR = 4; // 0x4
-    field public static final int SCREEN_ORIENTATION_SENSOR_LANDSCAPE = 6; // 0x6
-    field public static final int SCREEN_ORIENTATION_SENSOR_PORTRAIT = 7; // 0x7
-    field public static final int SCREEN_ORIENTATION_UNSPECIFIED = -1; // 0xffffffff
-    field public static final int SCREEN_ORIENTATION_USER = 2; // 0x2
-    field public static final int SCREEN_ORIENTATION_USER_LANDSCAPE = 11; // 0xb
-    field public static final int SCREEN_ORIENTATION_USER_PORTRAIT = 12; // 0xc
-    field public static final int UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW = 1; // 0x1
-    field public int colorMode;
-    field public int configChanges;
-    field public int documentLaunchMode;
-    field public int flags;
-    field public int launchMode;
-    field public int maxRecents;
-    field public String parentActivityName;
-    field public String permission;
-    field public int persistableMode;
-    field public int screenOrientation;
-    field public int softInputMode;
-    field public String targetActivity;
-    field public String taskAffinity;
-    field public int theme;
-    field public int uiOptions;
-    field public android.content.pm.ActivityInfo.WindowLayout windowLayout;
-  }
-
-  public static final class ActivityInfo.WindowLayout {
-    ctor public ActivityInfo.WindowLayout(int, float, int, float, int, int, int);
-    field public final int gravity;
-    field public final int height;
-    field public final float heightFraction;
-    field public final int minHeight;
-    field public final int minWidth;
-    field public final int width;
-    field public final float widthFraction;
-  }
-
-  public class ApplicationInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
-    ctor public ApplicationInfo();
-    ctor public ApplicationInfo(android.content.pm.ApplicationInfo);
-    method public int describeContents();
-    method public void dump(android.util.Printer, String);
-    method public static CharSequence getCategoryTitle(android.content.Context, int);
-    method public int getGwpAsanMode();
-    method public boolean isProfileableByShell();
-    method public boolean isResourceOverlay();
-    method public boolean isVirtualPreload();
-    method public CharSequence loadDescription(android.content.pm.PackageManager);
-    field public static final int CATEGORY_AUDIO = 1; // 0x1
-    field public static final int CATEGORY_GAME = 0; // 0x0
-    field public static final int CATEGORY_IMAGE = 3; // 0x3
-    field public static final int CATEGORY_MAPS = 6; // 0x6
-    field public static final int CATEGORY_NEWS = 5; // 0x5
-    field public static final int CATEGORY_PRODUCTIVITY = 7; // 0x7
-    field public static final int CATEGORY_SOCIAL = 4; // 0x4
-    field public static final int CATEGORY_UNDEFINED = -1; // 0xffffffff
-    field public static final int CATEGORY_VIDEO = 2; // 0x2
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ApplicationInfo> CREATOR;
-    field public static final int FLAG_ALLOW_BACKUP = 32768; // 0x8000
-    field public static final int FLAG_ALLOW_CLEAR_USER_DATA = 64; // 0x40
-    field public static final int FLAG_ALLOW_TASK_REPARENTING = 32; // 0x20
-    field public static final int FLAG_DEBUGGABLE = 2; // 0x2
-    field public static final int FLAG_EXTERNAL_STORAGE = 262144; // 0x40000
-    field public static final int FLAG_EXTRACT_NATIVE_LIBS = 268435456; // 0x10000000
-    field public static final int FLAG_FACTORY_TEST = 16; // 0x10
-    field public static final int FLAG_FULL_BACKUP_ONLY = 67108864; // 0x4000000
-    field public static final int FLAG_HARDWARE_ACCELERATED = 536870912; // 0x20000000
-    field public static final int FLAG_HAS_CODE = 4; // 0x4
-    field public static final int FLAG_INSTALLED = 8388608; // 0x800000
-    field public static final int FLAG_IS_DATA_ONLY = 16777216; // 0x1000000
-    field @Deprecated public static final int FLAG_IS_GAME = 33554432; // 0x2000000
-    field public static final int FLAG_KILL_AFTER_RESTORE = 65536; // 0x10000
-    field public static final int FLAG_LARGE_HEAP = 1048576; // 0x100000
-    field public static final int FLAG_MULTIARCH = -2147483648; // 0x80000000
-    field public static final int FLAG_PERSISTENT = 8; // 0x8
-    field public static final int FLAG_RESIZEABLE_FOR_SCREENS = 4096; // 0x1000
-    field public static final int FLAG_RESTORE_ANY_VERSION = 131072; // 0x20000
-    field public static final int FLAG_STOPPED = 2097152; // 0x200000
-    field public static final int FLAG_SUPPORTS_LARGE_SCREENS = 2048; // 0x800
-    field public static final int FLAG_SUPPORTS_NORMAL_SCREENS = 1024; // 0x400
-    field public static final int FLAG_SUPPORTS_RTL = 4194304; // 0x400000
-    field @Deprecated public static final int FLAG_SUPPORTS_SCREEN_DENSITIES = 8192; // 0x2000
-    field public static final int FLAG_SUPPORTS_SMALL_SCREENS = 512; // 0x200
-    field public static final int FLAG_SUPPORTS_XLARGE_SCREENS = 524288; // 0x80000
-    field public static final int FLAG_SUSPENDED = 1073741824; // 0x40000000
-    field public static final int FLAG_SYSTEM = 1; // 0x1
-    field public static final int FLAG_TEST_ONLY = 256; // 0x100
-    field public static final int FLAG_UPDATED_SYSTEM_APP = 128; // 0x80
-    field public static final int FLAG_USES_CLEARTEXT_TRAFFIC = 134217728; // 0x8000000
-    field public static final int FLAG_VM_SAFE_MODE = 16384; // 0x4000
-    field public static final int GWP_ASAN_ALWAYS = 1; // 0x1
-    field public static final int GWP_ASAN_DEFAULT = -1; // 0xffffffff
-    field public static final int GWP_ASAN_NEVER = 0; // 0x0
-    field public String appComponentFactory;
-    field public String backupAgentName;
-    field public int category;
-    field public String className;
-    field public int compatibleWidthLimitDp;
-    field public String dataDir;
-    field public int descriptionRes;
-    field public String deviceProtectedDataDir;
-    field public boolean enabled;
-    field public int flags;
-    field public int largestWidthLimitDp;
-    field public String manageSpaceActivityName;
-    field public int minSdkVersion;
-    field public String nativeLibraryDir;
-    field public String permission;
-    field public String processName;
-    field public String publicSourceDir;
-    field public int requiresSmallestWidthDp;
-    field public String[] sharedLibraryFiles;
-    field public String sourceDir;
-    field public String[] splitNames;
-    field public String[] splitPublicSourceDirs;
-    field public String[] splitSourceDirs;
-    field public java.util.UUID storageUuid;
-    field public int targetSdkVersion;
-    field public String taskAffinity;
-    field public int theme;
-    field public int uiOptions;
-    field public int uid;
-  }
-
-  public static class ApplicationInfo.DisplayNameComparator implements java.util.Comparator<android.content.pm.ApplicationInfo> {
-    ctor public ApplicationInfo.DisplayNameComparator(android.content.pm.PackageManager);
-    method public final int compare(android.content.pm.ApplicationInfo, android.content.pm.ApplicationInfo);
-  }
-
-  public final class ChangedPackages implements android.os.Parcelable {
-    ctor public ChangedPackages(int, @NonNull java.util.List<java.lang.String>);
-    method public int describeContents();
-    method @NonNull public java.util.List<java.lang.String> getPackageNames();
-    method public int getSequenceNumber();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ChangedPackages> CREATOR;
-  }
-
-  public class ComponentInfo extends android.content.pm.PackageItemInfo {
-    ctor public ComponentInfo();
-    ctor public ComponentInfo(android.content.pm.ComponentInfo);
-    ctor protected ComponentInfo(android.os.Parcel);
-    method public final int getBannerResource();
-    method public final int getIconResource();
-    method public final int getLogoResource();
-    method public boolean isEnabled();
-    field public android.content.pm.ApplicationInfo applicationInfo;
-    field public int descriptionRes;
-    field public boolean directBootAware;
-    field public boolean enabled;
-    field public boolean exported;
-    field public String processName;
-    field public String splitName;
-  }
-
-  public class ConfigurationInfo implements android.os.Parcelable {
-    ctor public ConfigurationInfo();
-    ctor public ConfigurationInfo(android.content.pm.ConfigurationInfo);
-    method public int describeContents();
-    method public String getGlEsVersion();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ConfigurationInfo> CREATOR;
-    field public static final int GL_ES_VERSION_UNDEFINED = 0; // 0x0
-    field public static final int INPUT_FEATURE_FIVE_WAY_NAV = 2; // 0x2
-    field public static final int INPUT_FEATURE_HARD_KEYBOARD = 1; // 0x1
-    field public int reqGlEsVersion;
-    field public int reqInputFeatures;
-    field public int reqKeyboardType;
-    field public int reqNavigation;
-    field public int reqTouchScreen;
-  }
-
-  public class CrossProfileApps {
-    method public boolean canInteractAcrossProfiles();
-    method public boolean canRequestInteractAcrossProfiles();
-    method @NonNull public android.content.Intent createRequestInteractAcrossProfilesIntent();
-    method @NonNull public android.graphics.drawable.Drawable getProfileSwitchingIconDrawable(@NonNull android.os.UserHandle);
-    method @NonNull public CharSequence getProfileSwitchingLabel(@NonNull android.os.UserHandle);
-    method @NonNull public java.util.List<android.os.UserHandle> getTargetUserProfiles();
-    method @RequiresPermission(anyOf={android.Manifest.permission.INTERACT_ACROSS_PROFILES, "android.permission.INTERACT_ACROSS_USERS"}) public void startActivity(@NonNull android.content.Intent, @NonNull android.os.UserHandle, @Nullable android.app.Activity);
-    method @RequiresPermission(anyOf={android.Manifest.permission.INTERACT_ACROSS_PROFILES, "android.permission.INTERACT_ACROSS_USERS"}) public void startActivity(@NonNull android.content.Intent, @NonNull android.os.UserHandle, @Nullable android.app.Activity, @Nullable android.os.Bundle);
-    method public void startMainActivity(@NonNull android.content.ComponentName, @NonNull android.os.UserHandle);
-    field public static final String ACTION_CAN_INTERACT_ACROSS_PROFILES_CHANGED = "android.content.pm.action.CAN_INTERACT_ACROSS_PROFILES_CHANGED";
-  }
-
-  public final class FeatureGroupInfo implements android.os.Parcelable {
-    ctor public FeatureGroupInfo();
-    ctor public FeatureGroupInfo(android.content.pm.FeatureGroupInfo);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.FeatureGroupInfo> CREATOR;
-    field public android.content.pm.FeatureInfo[] features;
-  }
-
-  public class FeatureInfo implements android.os.Parcelable {
-    ctor public FeatureInfo();
-    ctor public FeatureInfo(android.content.pm.FeatureInfo);
-    method public int describeContents();
-    method public String getGlEsVersion();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.FeatureInfo> CREATOR;
-    field public static final int FLAG_REQUIRED = 1; // 0x1
-    field public static final int GL_ES_VERSION_UNDEFINED = 0; // 0x0
-    field public int flags;
-    field public String name;
-    field public int reqGlEsVersion;
-    field public int version;
-  }
-
-  public final class InstallSourceInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getInitiatingPackageName();
-    method @Nullable public android.content.pm.SigningInfo getInitiatingPackageSigningInfo();
-    method @Nullable public String getInstallingPackageName();
-    method @Nullable public String getOriginatingPackageName();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstallSourceInfo> CREATOR;
-  }
-
-  public class InstrumentationInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
-    ctor public InstrumentationInfo();
-    ctor public InstrumentationInfo(android.content.pm.InstrumentationInfo);
-    method public int describeContents();
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstrumentationInfo> CREATOR;
-    field public String dataDir;
-    field public boolean functionalTest;
-    field public boolean handleProfiling;
-    field public String publicSourceDir;
-    field public String sourceDir;
-    field public String[] splitNames;
-    field public String[] splitPublicSourceDirs;
-    field public String[] splitSourceDirs;
-    field public String targetPackage;
-    field public String targetProcesses;
-  }
-
-  public class LabeledIntent extends android.content.Intent {
-    ctor public LabeledIntent(android.content.Intent, String, int, int);
-    ctor public LabeledIntent(android.content.Intent, String, CharSequence, int);
-    ctor public LabeledIntent(String, int, int);
-    ctor public LabeledIntent(String, CharSequence, int);
-    method public int getIconResource();
-    method public int getLabelResource();
-    method public CharSequence getNonLocalizedLabel();
-    method public String getSourcePackage();
-    method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
-    method public CharSequence loadLabel(android.content.pm.PackageManager);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.LabeledIntent> CREATOR;
-  }
-
-  public class LauncherActivityInfo {
-    method public android.content.pm.ApplicationInfo getApplicationInfo();
-    method public android.graphics.drawable.Drawable getBadgedIcon(int);
-    method public android.content.ComponentName getComponentName();
-    method public long getFirstInstallTime();
-    method public android.graphics.drawable.Drawable getIcon(int);
-    method public CharSequence getLabel();
-    method public String getName();
-    method public android.os.UserHandle getUser();
-  }
-
-  public class LauncherApps {
-    method public java.util.List<android.content.pm.LauncherActivityInfo> getActivityList(String, android.os.UserHandle);
-    method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getAllPackageInstallerSessions();
-    method public android.content.pm.ApplicationInfo getApplicationInfo(@NonNull String, int, @NonNull android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public android.content.pm.LauncherApps.PinItemRequest getPinItemRequest(android.content.Intent);
-    method public java.util.List<android.os.UserHandle> getProfiles();
-    method public android.graphics.drawable.Drawable getShortcutBadgedIconDrawable(android.content.pm.ShortcutInfo, int);
-    method @Nullable public android.content.IntentSender getShortcutConfigActivityIntent(@NonNull android.content.pm.LauncherActivityInfo);
-    method public java.util.List<android.content.pm.LauncherActivityInfo> getShortcutConfigActivityList(@Nullable String, @NonNull android.os.UserHandle);
-    method public android.graphics.drawable.Drawable getShortcutIconDrawable(@NonNull android.content.pm.ShortcutInfo, int);
-    method @Nullable public java.util.List<android.content.pm.ShortcutInfo> getShortcuts(@NonNull android.content.pm.LauncherApps.ShortcutQuery, @NonNull android.os.UserHandle);
-    method @Nullable public android.os.Bundle getSuspendedPackageLauncherExtras(String, android.os.UserHandle);
-    method public boolean hasShortcutHostPermission();
-    method public boolean isActivityEnabled(android.content.ComponentName, android.os.UserHandle);
-    method public boolean isPackageEnabled(String, android.os.UserHandle);
-    method public void pinShortcuts(@NonNull String, @NonNull java.util.List<java.lang.String>, @NonNull android.os.UserHandle);
-    method public void registerCallback(android.content.pm.LauncherApps.Callback);
-    method public void registerCallback(android.content.pm.LauncherApps.Callback, android.os.Handler);
-    method public void registerPackageInstallerSessionCallback(@NonNull java.util.concurrent.Executor, @NonNull android.content.pm.PackageInstaller.SessionCallback);
-    method public android.content.pm.LauncherActivityInfo resolveActivity(android.content.Intent, android.os.UserHandle);
-    method public boolean shouldHideFromSuggestions(@NonNull String, @NonNull android.os.UserHandle);
-    method public void startAppDetailsActivity(android.content.ComponentName, android.os.UserHandle, android.graphics.Rect, android.os.Bundle);
-    method public void startMainActivity(android.content.ComponentName, android.os.UserHandle, android.graphics.Rect, android.os.Bundle);
-    method public void startPackageInstallerSessionDetailsActivity(@NonNull android.content.pm.PackageInstaller.SessionInfo, @Nullable android.graphics.Rect, @Nullable android.os.Bundle);
-    method public void startShortcut(@NonNull String, @NonNull String, @Nullable android.graphics.Rect, @Nullable android.os.Bundle, @NonNull android.os.UserHandle);
-    method public void startShortcut(@NonNull android.content.pm.ShortcutInfo, @Nullable android.graphics.Rect, @Nullable android.os.Bundle);
-    method public void unregisterCallback(android.content.pm.LauncherApps.Callback);
-    method public void unregisterPackageInstallerSessionCallback(@NonNull android.content.pm.PackageInstaller.SessionCallback);
-    field public static final String ACTION_CONFIRM_PIN_APPWIDGET = "android.content.pm.action.CONFIRM_PIN_APPWIDGET";
-    field public static final String ACTION_CONFIRM_PIN_SHORTCUT = "android.content.pm.action.CONFIRM_PIN_SHORTCUT";
-    field public static final String EXTRA_PIN_ITEM_REQUEST = "android.content.pm.extra.PIN_ITEM_REQUEST";
-  }
-
-  public abstract static class LauncherApps.Callback {
-    ctor public LauncherApps.Callback();
-    method public abstract void onPackageAdded(String, android.os.UserHandle);
-    method public abstract void onPackageChanged(String, android.os.UserHandle);
-    method public abstract void onPackageRemoved(String, android.os.UserHandle);
-    method public abstract void onPackagesAvailable(String[], android.os.UserHandle, boolean);
-    method public void onPackagesSuspended(String[], android.os.UserHandle);
-    method @Deprecated public void onPackagesSuspended(String[], android.os.UserHandle, @Nullable android.os.Bundle);
-    method public abstract void onPackagesUnavailable(String[], android.os.UserHandle, boolean);
-    method public void onPackagesUnsuspended(String[], android.os.UserHandle);
-    method public void onShortcutsChanged(@NonNull String, @NonNull java.util.List<android.content.pm.ShortcutInfo>, @NonNull android.os.UserHandle);
-  }
-
-  public static final class LauncherApps.PinItemRequest implements android.os.Parcelable {
-    method public boolean accept(@Nullable android.os.Bundle);
-    method public boolean accept();
-    method public int describeContents();
-    method @Nullable public android.appwidget.AppWidgetProviderInfo getAppWidgetProviderInfo(android.content.Context);
-    method @Nullable public android.os.Bundle getExtras();
-    method public int getRequestType();
-    method @Nullable public android.content.pm.ShortcutInfo getShortcutInfo();
-    method public boolean isValid();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.LauncherApps.PinItemRequest> CREATOR;
-    field public static final int REQUEST_TYPE_APPWIDGET = 2; // 0x2
-    field public static final int REQUEST_TYPE_SHORTCUT = 1; // 0x1
-  }
-
-  public static class LauncherApps.ShortcutQuery {
-    ctor public LauncherApps.ShortcutQuery();
-    method public android.content.pm.LauncherApps.ShortcutQuery setActivity(@Nullable android.content.ComponentName);
-    method public android.content.pm.LauncherApps.ShortcutQuery setChangedSince(long);
-    method @NonNull public android.content.pm.LauncherApps.ShortcutQuery setLocusIds(@Nullable java.util.List<android.content.LocusId>);
-    method public android.content.pm.LauncherApps.ShortcutQuery setPackage(@Nullable String);
-    method public android.content.pm.LauncherApps.ShortcutQuery setQueryFlags(int);
-    method public android.content.pm.LauncherApps.ShortcutQuery setShortcutIds(@Nullable java.util.List<java.lang.String>);
-    field public static final int FLAG_GET_KEY_FIELDS_ONLY = 4; // 0x4
-    field public static final int FLAG_MATCH_CACHED = 16; // 0x10
-    field public static final int FLAG_MATCH_DYNAMIC = 1; // 0x1
-    field public static final int FLAG_MATCH_MANIFEST = 8; // 0x8
-    field public static final int FLAG_MATCH_PINNED = 2; // 0x2
-    field public static final int FLAG_MATCH_PINNED_BY_ANY_LAUNCHER = 1024; // 0x400
-  }
-
-  public final class ModuleInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public CharSequence getName();
-    method @Nullable public String getPackageName();
-    method public boolean isHidden();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ModuleInfo> CREATOR;
-  }
-
-  public class PackageInfo implements android.os.Parcelable {
-    ctor public PackageInfo();
-    method public int describeContents();
-    method public long getLongVersionCode();
-    method public void setLongVersionCode(long);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.PackageInfo> CREATOR;
-    field public static final int INSTALL_LOCATION_AUTO = 0; // 0x0
-    field public static final int INSTALL_LOCATION_INTERNAL_ONLY = 1; // 0x1
-    field public static final int INSTALL_LOCATION_PREFER_EXTERNAL = 2; // 0x2
-    field public static final int REQUESTED_PERMISSION_GRANTED = 2; // 0x2
-    field public android.content.pm.ActivityInfo[] activities;
-    field public android.content.pm.ApplicationInfo applicationInfo;
-    field public int baseRevisionCode;
-    field public android.content.pm.ConfigurationInfo[] configPreferences;
-    field public android.content.pm.FeatureGroupInfo[] featureGroups;
-    field public long firstInstallTime;
-    field public int[] gids;
-    field public int installLocation;
-    field public android.content.pm.InstrumentationInfo[] instrumentation;
-    field public boolean isApex;
-    field public long lastUpdateTime;
-    field public String packageName;
-    field public android.content.pm.PermissionInfo[] permissions;
-    field public android.content.pm.ProviderInfo[] providers;
-    field public android.content.pm.ActivityInfo[] receivers;
-    field public android.content.pm.FeatureInfo[] reqFeatures;
-    field public String[] requestedPermissions;
-    field public int[] requestedPermissionsFlags;
-    field public android.content.pm.ServiceInfo[] services;
-    field public String sharedUserId;
-    field public int sharedUserLabel;
-    field @Deprecated public android.content.pm.Signature[] signatures;
-    field public android.content.pm.SigningInfo signingInfo;
-    field public String[] splitNames;
-    field public int[] splitRevisionCodes;
-    field @Deprecated public int versionCode;
-    field public String versionName;
-  }
-
-  public class PackageInstaller {
-    method public void abandonSession(int);
-    method public int createSession(@NonNull android.content.pm.PackageInstaller.SessionParams) throws java.io.IOException;
-    method @Deprecated @Nullable public android.content.pm.PackageInstaller.SessionInfo getActiveStagedSession();
-    method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getActiveStagedSessions();
-    method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getAllSessions();
-    method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getMySessions();
-    method @Nullable public android.content.pm.PackageInstaller.SessionInfo getSessionInfo(int);
-    method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getStagedSessions();
-    method @RequiresPermission(allOf={android.Manifest.permission.INSTALL_PACKAGES, "com.android.permission.INSTALL_EXISTING_PACKAGES"}) public void installExistingPackage(@NonNull String, int, @Nullable android.content.IntentSender);
-    method @NonNull public android.content.pm.PackageInstaller.Session openSession(int) throws java.io.IOException;
-    method public void registerSessionCallback(@NonNull android.content.pm.PackageInstaller.SessionCallback);
-    method public void registerSessionCallback(@NonNull android.content.pm.PackageInstaller.SessionCallback, @NonNull android.os.Handler);
-    method @RequiresPermission(anyOf={android.Manifest.permission.DELETE_PACKAGES, android.Manifest.permission.REQUEST_DELETE_PACKAGES}) public void uninstall(@NonNull String, @NonNull android.content.IntentSender);
-    method @RequiresPermission(anyOf={android.Manifest.permission.DELETE_PACKAGES, android.Manifest.permission.REQUEST_DELETE_PACKAGES}) public void uninstall(@NonNull android.content.pm.VersionedPackage, @NonNull android.content.IntentSender);
-    method public void unregisterSessionCallback(@NonNull android.content.pm.PackageInstaller.SessionCallback);
-    method public void updateSessionAppIcon(int, @Nullable android.graphics.Bitmap);
-    method public void updateSessionAppLabel(int, @Nullable CharSequence);
-    field public static final String ACTION_SESSION_COMMITTED = "android.content.pm.action.SESSION_COMMITTED";
-    field public static final String ACTION_SESSION_DETAILS = "android.content.pm.action.SESSION_DETAILS";
-    field public static final String ACTION_SESSION_UPDATED = "android.content.pm.action.SESSION_UPDATED";
-    field public static final String EXTRA_OTHER_PACKAGE_NAME = "android.content.pm.extra.OTHER_PACKAGE_NAME";
-    field public static final String EXTRA_PACKAGE_NAME = "android.content.pm.extra.PACKAGE_NAME";
-    field public static final String EXTRA_SESSION = "android.content.pm.extra.SESSION";
-    field public static final String EXTRA_SESSION_ID = "android.content.pm.extra.SESSION_ID";
-    field public static final String EXTRA_STATUS = "android.content.pm.extra.STATUS";
-    field public static final String EXTRA_STATUS_MESSAGE = "android.content.pm.extra.STATUS_MESSAGE";
-    field public static final String EXTRA_STORAGE_PATH = "android.content.pm.extra.STORAGE_PATH";
-    field public static final int STATUS_FAILURE = 1; // 0x1
-    field public static final int STATUS_FAILURE_ABORTED = 3; // 0x3
-    field public static final int STATUS_FAILURE_BLOCKED = 2; // 0x2
-    field public static final int STATUS_FAILURE_CONFLICT = 5; // 0x5
-    field public static final int STATUS_FAILURE_INCOMPATIBLE = 7; // 0x7
-    field public static final int STATUS_FAILURE_INVALID = 4; // 0x4
-    field public static final int STATUS_FAILURE_STORAGE = 6; // 0x6
-    field public static final int STATUS_PENDING_USER_ACTION = -1; // 0xffffffff
-    field public static final int STATUS_SUCCESS = 0; // 0x0
-  }
-
-  public static class PackageInstaller.Session implements java.io.Closeable {
-    method public void abandon();
-    method public void addChildSessionId(int);
-    method public void close();
-    method public void commit(@NonNull android.content.IntentSender);
-    method public void fsync(@NonNull java.io.OutputStream) throws java.io.IOException;
-    method @NonNull public int[] getChildSessionIds();
-    method @NonNull public String[] getNames() throws java.io.IOException;
-    method public int getParentSessionId();
-    method public boolean isMultiPackage();
-    method public boolean isStaged();
-    method @NonNull public java.io.InputStream openRead(@NonNull String) throws java.io.IOException;
-    method @NonNull public java.io.OutputStream openWrite(@NonNull String, long, long) throws java.io.IOException;
-    method public void removeChildSessionId(int);
-    method public void removeSplit(@NonNull String) throws java.io.IOException;
-    method public void setStagingProgress(float);
-    method public void transfer(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
-  }
-
-  public abstract static class PackageInstaller.SessionCallback {
-    ctor public PackageInstaller.SessionCallback();
-    method public abstract void onActiveChanged(int, boolean);
-    method public abstract void onBadgingChanged(int);
-    method public abstract void onCreated(int);
-    method public abstract void onFinished(int, boolean);
-    method public abstract void onProgressChanged(int, float);
-  }
-
-  public static class PackageInstaller.SessionInfo implements android.os.Parcelable {
-    method @Nullable public android.content.Intent createDetailsIntent();
-    method public int describeContents();
-    method @Nullable public android.graphics.Bitmap getAppIcon();
-    method @Nullable public CharSequence getAppLabel();
-    method @Nullable public String getAppPackageName();
-    method @NonNull public int[] getChildSessionIds();
-    method public long getCreatedMillis();
-    method public int getInstallLocation();
-    method public int getInstallReason();
-    method @Nullable public String getInstallerPackageName();
-    method public int getMode();
-    method public int getOriginatingUid();
-    method @Nullable public android.net.Uri getOriginatingUri();
-    method public int getParentSessionId();
-    method public float getProgress();
-    method @Nullable public android.net.Uri getReferrerUri();
-    method public int getSessionId();
-    method public long getSize();
-    method public int getStagedSessionErrorCode();
-    method @NonNull public String getStagedSessionErrorMessage();
-    method public long getUpdatedMillis();
-    method @NonNull public android.os.UserHandle getUser();
-    method public boolean hasParentSessionId();
-    method public boolean isActive();
-    method public boolean isCommitted();
-    method public boolean isMultiPackage();
-    method public boolean isSealed();
-    method public boolean isStaged();
-    method public boolean isStagedSessionActive();
-    method public boolean isStagedSessionApplied();
-    method public boolean isStagedSessionFailed();
-    method public boolean isStagedSessionReady();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.content.pm.PackageInstaller.SessionInfo> CREATOR;
-    field public static final int INVALID_ID = -1; // 0xffffffff
-    field public static final int STAGED_SESSION_ACTIVATION_FAILED = 2; // 0x2
-    field public static final int STAGED_SESSION_NO_ERROR = 0; // 0x0
-    field public static final int STAGED_SESSION_UNKNOWN = 3; // 0x3
-    field public static final int STAGED_SESSION_VERIFICATION_FAILED = 1; // 0x1
-  }
-
-  public static class PackageInstaller.SessionParams implements android.os.Parcelable {
-    ctor public PackageInstaller.SessionParams(int);
-    method public int describeContents();
-    method public void setAppIcon(@Nullable android.graphics.Bitmap);
-    method public void setAppLabel(@Nullable CharSequence);
-    method public void setAppPackageName(@Nullable String);
-    method public void setAutoRevokePermissionsMode(boolean);
-    method public void setInstallLocation(int);
-    method public void setInstallReason(int);
-    method public void setMultiPackage();
-    method public void setOriginatingUid(int);
-    method public void setOriginatingUri(@Nullable android.net.Uri);
-    method public void setReferrerUri(@Nullable android.net.Uri);
-    method public void setSize(long);
-    method public void setWhitelistedRestrictedPermissions(@Nullable java.util.Set<java.lang.String>);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.content.pm.PackageInstaller.SessionParams> CREATOR;
-    field public static final int MODE_FULL_INSTALL = 1; // 0x1
-    field public static final int MODE_INHERIT_EXISTING = 2; // 0x2
-    field @NonNull public static final java.util.Set<java.lang.String> RESTRICTED_PERMISSIONS_ALL;
-  }
-
-  public class PackageItemInfo {
-    ctor public PackageItemInfo();
-    ctor public PackageItemInfo(android.content.pm.PackageItemInfo);
-    ctor protected PackageItemInfo(android.os.Parcel);
-    method protected void dumpBack(android.util.Printer, String);
-    method protected void dumpFront(android.util.Printer, String);
-    method public android.graphics.drawable.Drawable loadBanner(android.content.pm.PackageManager);
-    method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
-    method @NonNull public CharSequence loadLabel(@NonNull android.content.pm.PackageManager);
-    method public android.graphics.drawable.Drawable loadLogo(android.content.pm.PackageManager);
-    method public android.graphics.drawable.Drawable loadUnbadgedIcon(android.content.pm.PackageManager);
-    method public android.content.res.XmlResourceParser loadXmlMetaData(android.content.pm.PackageManager, String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public int banner;
-    field public int icon;
-    field public int labelRes;
-    field public int logo;
-    field public android.os.Bundle metaData;
-    field public String name;
-    field public CharSequence nonLocalizedLabel;
-    field public String packageName;
-  }
-
-  public static class PackageItemInfo.DisplayNameComparator implements java.util.Comparator<android.content.pm.PackageItemInfo> {
-    ctor public PackageItemInfo.DisplayNameComparator(android.content.pm.PackageManager);
-    method public final int compare(android.content.pm.PackageItemInfo, android.content.pm.PackageItemInfo);
-  }
-
-  public abstract class PackageManager {
-    ctor @Deprecated public PackageManager();
-    method @Deprecated public abstract void addPackageToPreferred(@NonNull String);
-    method public abstract boolean addPermission(@NonNull android.content.pm.PermissionInfo);
-    method public abstract boolean addPermissionAsync(@NonNull android.content.pm.PermissionInfo);
-    method @Deprecated public abstract void addPreferredActivity(@NonNull android.content.IntentFilter, int, @Nullable android.content.ComponentName[], @NonNull android.content.ComponentName);
-    method @RequiresPermission(value="android.permission.WHITELIST_RESTRICTED_PERMISSIONS", conditional=true) public boolean addWhitelistedRestrictedPermission(@NonNull String, @NonNull String, int);
-    method public abstract boolean canRequestPackageInstalls();
-    method public abstract String[] canonicalToCurrentPackageNames(@NonNull String[]);
-    method @CheckResult public abstract int checkPermission(@NonNull String, @NonNull String);
-    method @CheckResult public abstract int checkSignatures(@NonNull String, @NonNull String);
-    method @CheckResult public abstract int checkSignatures(int, int);
-    method public abstract void clearInstantAppCookie();
-    method @Deprecated public abstract void clearPackagePreferredActivities(@NonNull String);
-    method public abstract String[] currentToCanonicalPackageNames(@NonNull String[]);
-    method public abstract void extendVerificationTimeout(int, int, long);
-    method @Nullable public abstract android.graphics.drawable.Drawable getActivityBanner(@NonNull android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @Nullable public abstract android.graphics.drawable.Drawable getActivityBanner(@NonNull android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract android.graphics.drawable.Drawable getActivityIcon(@NonNull android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract android.graphics.drawable.Drawable getActivityIcon(@NonNull android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract android.content.pm.ActivityInfo getActivityInfo(@NonNull android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @Nullable public abstract android.graphics.drawable.Drawable getActivityLogo(@NonNull android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @Nullable public abstract android.graphics.drawable.Drawable getActivityLogo(@NonNull android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract java.util.List<android.content.pm.PermissionGroupInfo> getAllPermissionGroups(int);
-    method @Nullable public abstract android.graphics.drawable.Drawable getApplicationBanner(@NonNull android.content.pm.ApplicationInfo);
-    method @Nullable public abstract android.graphics.drawable.Drawable getApplicationBanner(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public abstract int getApplicationEnabledSetting(@NonNull String);
-    method @NonNull public abstract android.graphics.drawable.Drawable getApplicationIcon(@NonNull android.content.pm.ApplicationInfo);
-    method @NonNull public abstract android.graphics.drawable.Drawable getApplicationIcon(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract android.content.pm.ApplicationInfo getApplicationInfo(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract CharSequence getApplicationLabel(@NonNull android.content.pm.ApplicationInfo);
-    method @Nullable public abstract android.graphics.drawable.Drawable getApplicationLogo(@NonNull android.content.pm.ApplicationInfo);
-    method @Nullable public abstract android.graphics.drawable.Drawable getApplicationLogo(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public CharSequence getBackgroundPermissionOptionLabel();
-    method @Nullable public abstract android.content.pm.ChangedPackages getChangedPackages(@IntRange(from=0) int);
-    method public abstract int getComponentEnabledSetting(@NonNull android.content.ComponentName);
-    method @NonNull public abstract android.graphics.drawable.Drawable getDefaultActivityIcon();
-    method @Nullable public abstract android.graphics.drawable.Drawable getDrawable(@NonNull String, @DrawableRes int, @Nullable android.content.pm.ApplicationInfo);
-    method @NonNull public android.content.pm.InstallSourceInfo getInstallSourceInfo(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract java.util.List<android.content.pm.ApplicationInfo> getInstalledApplications(int);
-    method @NonNull public java.util.List<android.content.pm.ModuleInfo> getInstalledModules(int);
-    method @NonNull public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int);
-    method @Deprecated @Nullable public abstract String getInstallerPackageName(@NonNull String);
-    method @NonNull public abstract byte[] getInstantAppCookie();
-    method public abstract int getInstantAppCookieMaxBytes();
-    method @NonNull public abstract android.content.pm.InstrumentationInfo getInstrumentationInfo(@NonNull android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @Nullable public abstract android.content.Intent getLaunchIntentForPackage(@NonNull String);
-    method @Nullable public abstract android.content.Intent getLeanbackLaunchIntentForPackage(@NonNull String);
-    method @NonNull public java.util.Set<java.lang.String> getMimeGroup(@NonNull String);
-    method @NonNull public android.content.pm.ModuleInfo getModuleInfo(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @Nullable public abstract String getNameForUid(int);
-    method @Nullable public android.content.pm.PackageInfo getPackageArchiveInfo(@NonNull String, int);
-    method public abstract int[] getPackageGids(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public abstract int[] getPackageGids(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public abstract android.content.pm.PackageInfo getPackageInfo(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public abstract android.content.pm.PackageInfo getPackageInfo(@NonNull android.content.pm.VersionedPackage, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract android.content.pm.PackageInstaller getPackageInstaller();
-    method public abstract int getPackageUid(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @Nullable public abstract String[] getPackagesForUid(int);
-    method @NonNull public abstract java.util.List<android.content.pm.PackageInfo> getPackagesHoldingPermissions(@NonNull String[], int);
-    method @NonNull public abstract android.content.pm.PermissionGroupInfo getPermissionGroupInfo(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public abstract android.content.pm.PermissionInfo getPermissionInfo(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @Deprecated public abstract int getPreferredActivities(@NonNull java.util.List<android.content.IntentFilter>, @NonNull java.util.List<android.content.ComponentName>, @Nullable String);
-    method @Deprecated @NonNull public abstract java.util.List<android.content.pm.PackageInfo> getPreferredPackages(int);
-    method @NonNull public abstract android.content.pm.ProviderInfo getProviderInfo(@NonNull android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract android.content.pm.ActivityInfo getReceiverInfo(@NonNull android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract android.content.res.Resources getResourcesForActivity(@NonNull android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract android.content.res.Resources getResourcesForApplication(@NonNull android.content.pm.ApplicationInfo) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract android.content.res.Resources getResourcesForApplication(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract android.content.pm.ServiceInfo getServiceInfo(@NonNull android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract java.util.List<android.content.pm.SharedLibraryInfo> getSharedLibraries(int);
-    method @Nullable public android.os.Bundle getSuspendedPackageAppExtras();
-    method public boolean getSyntheticAppDetailsActivityEnabled(@NonNull String);
-    method @NonNull public abstract android.content.pm.FeatureInfo[] getSystemAvailableFeatures();
-    method @Nullable public abstract String[] getSystemSharedLibraryNames();
-    method @Nullable public abstract CharSequence getText(@NonNull String, @StringRes int, @Nullable android.content.pm.ApplicationInfo);
-    method @NonNull public abstract android.graphics.drawable.Drawable getUserBadgedDrawableForDensity(@NonNull android.graphics.drawable.Drawable, @NonNull android.os.UserHandle, @Nullable android.graphics.Rect, int);
-    method @NonNull public abstract android.graphics.drawable.Drawable getUserBadgedIcon(@NonNull android.graphics.drawable.Drawable, @NonNull android.os.UserHandle);
-    method @NonNull public abstract CharSequence getUserBadgedLabel(@NonNull CharSequence, @NonNull android.os.UserHandle);
-    method @NonNull @RequiresPermission(value="android.permission.WHITELIST_RESTRICTED_PERMISSIONS", conditional=true) public java.util.Set<java.lang.String> getWhitelistedRestrictedPermissions(@NonNull String, int);
-    method @Nullable public abstract android.content.res.XmlResourceParser getXml(@NonNull String, @XmlRes int, @Nullable android.content.pm.ApplicationInfo);
-    method public boolean hasSigningCertificate(@NonNull String, @NonNull byte[], int);
-    method public boolean hasSigningCertificate(int, @NonNull byte[], int);
-    method public abstract boolean hasSystemFeature(@NonNull String);
-    method public abstract boolean hasSystemFeature(@NonNull String, int);
-    method @RequiresPermission(value="android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS", conditional=true) public boolean isAutoRevokeWhitelisted(@NonNull String);
-    method public boolean isAutoRevokeWhitelisted();
-    method public boolean isDefaultApplicationIcon(@NonNull android.graphics.drawable.Drawable);
-    method public boolean isDeviceUpgrading();
-    method public abstract boolean isInstantApp();
-    method public abstract boolean isInstantApp(@NonNull String);
-    method public boolean isPackageSuspended(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public boolean isPackageSuspended();
-    method @CheckResult public abstract boolean isPermissionRevokedByPolicy(@NonNull String, @NonNull String);
-    method public abstract boolean isSafeMode();
-    method @NonNull public abstract java.util.List<android.content.pm.ResolveInfo> queryBroadcastReceivers(@NonNull android.content.Intent, int);
-    method @NonNull public abstract java.util.List<android.content.pm.ProviderInfo> queryContentProviders(@Nullable String, int, int);
-    method @NonNull public abstract java.util.List<android.content.pm.InstrumentationInfo> queryInstrumentation(@NonNull String, int);
-    method @NonNull public abstract java.util.List<android.content.pm.ResolveInfo> queryIntentActivities(@NonNull android.content.Intent, int);
-    method @NonNull public abstract java.util.List<android.content.pm.ResolveInfo> queryIntentActivityOptions(@Nullable android.content.ComponentName, @Nullable android.content.Intent[], @NonNull android.content.Intent, int);
-    method @NonNull public abstract java.util.List<android.content.pm.ResolveInfo> queryIntentContentProviders(@NonNull android.content.Intent, int);
-    method @NonNull public abstract java.util.List<android.content.pm.ResolveInfo> queryIntentServices(@NonNull android.content.Intent, int);
-    method @NonNull public abstract java.util.List<android.content.pm.PermissionInfo> queryPermissionsByGroup(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @Deprecated public abstract void removePackageFromPreferred(@NonNull String);
-    method public abstract void removePermission(@NonNull String);
-    method @RequiresPermission(value="android.permission.WHITELIST_RESTRICTED_PERMISSIONS", conditional=true) public boolean removeWhitelistedRestrictedPermission(@NonNull String, @NonNull String, int);
-    method @Nullable public abstract android.content.pm.ResolveInfo resolveActivity(@NonNull android.content.Intent, int);
-    method @Nullable public abstract android.content.pm.ProviderInfo resolveContentProvider(@NonNull String, int);
-    method @Nullable public abstract android.content.pm.ResolveInfo resolveService(@NonNull android.content.Intent, int);
-    method public abstract void setApplicationCategoryHint(@NonNull String, int);
-    method @RequiresPermission(value=android.Manifest.permission.CHANGE_COMPONENT_ENABLED_STATE, conditional=true) public abstract void setApplicationEnabledSetting(@NonNull String, int, int);
-    method @RequiresPermission(value="android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS", conditional=true) public boolean setAutoRevokeWhitelisted(@NonNull String, boolean);
-    method @RequiresPermission(value=android.Manifest.permission.CHANGE_COMPONENT_ENABLED_STATE, conditional=true) public abstract void setComponentEnabledSetting(@NonNull android.content.ComponentName, int, int);
-    method public abstract void setInstallerPackageName(@NonNull String, @Nullable String);
-    method public void setMimeGroup(@NonNull String, @NonNull java.util.Set<java.lang.String>);
-    method public abstract void updateInstantAppCookie(@Nullable byte[]);
-    method public abstract void verifyPendingInstall(int, int);
-    field public static final int CERT_INPUT_RAW_X509 = 0; // 0x0
-    field public static final int CERT_INPUT_SHA256 = 1; // 0x1
-    field public static final int COMPONENT_ENABLED_STATE_DEFAULT = 0; // 0x0
-    field public static final int COMPONENT_ENABLED_STATE_DISABLED = 2; // 0x2
-    field public static final int COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED = 4; // 0x4
-    field public static final int COMPONENT_ENABLED_STATE_DISABLED_USER = 3; // 0x3
-    field public static final int COMPONENT_ENABLED_STATE_ENABLED = 1; // 0x1
-    field public static final int DONT_KILL_APP = 1; // 0x1
-    field public static final String EXTRA_VERIFICATION_ID = "android.content.pm.extra.VERIFICATION_ID";
-    field public static final String EXTRA_VERIFICATION_RESULT = "android.content.pm.extra.VERIFICATION_RESULT";
-    field public static final String FEATURE_ACTIVITIES_ON_SECONDARY_DISPLAYS = "android.software.activities_on_secondary_displays";
-    field public static final String FEATURE_APP_WIDGETS = "android.software.app_widgets";
-    field public static final String FEATURE_AUDIO_LOW_LATENCY = "android.hardware.audio.low_latency";
-    field public static final String FEATURE_AUDIO_OUTPUT = "android.hardware.audio.output";
-    field public static final String FEATURE_AUDIO_PRO = "android.hardware.audio.pro";
-    field public static final String FEATURE_AUTOFILL = "android.software.autofill";
-    field public static final String FEATURE_AUTOMOTIVE = "android.hardware.type.automotive";
-    field public static final String FEATURE_BACKUP = "android.software.backup";
-    field public static final String FEATURE_BLUETOOTH = "android.hardware.bluetooth";
-    field public static final String FEATURE_BLUETOOTH_LE = "android.hardware.bluetooth_le";
-    field public static final String FEATURE_CAMERA = "android.hardware.camera";
-    field public static final String FEATURE_CAMERA_ANY = "android.hardware.camera.any";
-    field public static final String FEATURE_CAMERA_AR = "android.hardware.camera.ar";
-    field public static final String FEATURE_CAMERA_AUTOFOCUS = "android.hardware.camera.autofocus";
-    field public static final String FEATURE_CAMERA_CAPABILITY_MANUAL_POST_PROCESSING = "android.hardware.camera.capability.manual_post_processing";
-    field public static final String FEATURE_CAMERA_CAPABILITY_MANUAL_SENSOR = "android.hardware.camera.capability.manual_sensor";
-    field public static final String FEATURE_CAMERA_CAPABILITY_RAW = "android.hardware.camera.capability.raw";
-    field public static final String FEATURE_CAMERA_CONCURRENT = "android.hardware.camera.concurrent";
-    field public static final String FEATURE_CAMERA_EXTERNAL = "android.hardware.camera.external";
-    field public static final String FEATURE_CAMERA_FLASH = "android.hardware.camera.flash";
-    field public static final String FEATURE_CAMERA_FRONT = "android.hardware.camera.front";
-    field public static final String FEATURE_CAMERA_LEVEL_FULL = "android.hardware.camera.level.full";
-    field public static final String FEATURE_CANT_SAVE_STATE = "android.software.cant_save_state";
-    field public static final String FEATURE_COMPANION_DEVICE_SETUP = "android.software.companion_device_setup";
-    field public static final String FEATURE_CONNECTION_SERVICE = "android.software.connectionservice";
-    field public static final String FEATURE_CONSUMER_IR = "android.hardware.consumerir";
-    field public static final String FEATURE_CONTROLS = "android.software.controls";
-    field public static final String FEATURE_DEVICE_ADMIN = "android.software.device_admin";
-    field public static final String FEATURE_EMBEDDED = "android.hardware.type.embedded";
-    field public static final String FEATURE_ETHERNET = "android.hardware.ethernet";
-    field public static final String FEATURE_FACE = "android.hardware.biometrics.face";
-    field public static final String FEATURE_FAKETOUCH = "android.hardware.faketouch";
-    field public static final String FEATURE_FAKETOUCH_MULTITOUCH_DISTINCT = "android.hardware.faketouch.multitouch.distinct";
-    field public static final String FEATURE_FAKETOUCH_MULTITOUCH_JAZZHAND = "android.hardware.faketouch.multitouch.jazzhand";
-    field public static final String FEATURE_FINGERPRINT = "android.hardware.fingerprint";
-    field public static final String FEATURE_FREEFORM_WINDOW_MANAGEMENT = "android.software.freeform_window_management";
-    field public static final String FEATURE_GAMEPAD = "android.hardware.gamepad";
-    field public static final String FEATURE_HIFI_SENSORS = "android.hardware.sensor.hifi_sensors";
-    field public static final String FEATURE_HOME_SCREEN = "android.software.home_screen";
-    field public static final String FEATURE_INPUT_METHODS = "android.software.input_methods";
-    field public static final String FEATURE_IPSEC_TUNNELS = "android.software.ipsec_tunnels";
-    field public static final String FEATURE_IRIS = "android.hardware.biometrics.iris";
-    field public static final String FEATURE_LEANBACK = "android.software.leanback";
-    field public static final String FEATURE_LEANBACK_ONLY = "android.software.leanback_only";
-    field public static final String FEATURE_LIVE_TV = "android.software.live_tv";
-    field public static final String FEATURE_LIVE_WALLPAPER = "android.software.live_wallpaper";
-    field public static final String FEATURE_LOCATION = "android.hardware.location";
-    field public static final String FEATURE_LOCATION_GPS = "android.hardware.location.gps";
-    field public static final String FEATURE_LOCATION_NETWORK = "android.hardware.location.network";
-    field public static final String FEATURE_MANAGED_USERS = "android.software.managed_users";
-    field public static final String FEATURE_MICROPHONE = "android.hardware.microphone";
-    field public static final String FEATURE_MIDI = "android.software.midi";
-    field public static final String FEATURE_NFC = "android.hardware.nfc";
-    field public static final String FEATURE_NFC_BEAM = "android.sofware.nfc.beam";
-    field public static final String FEATURE_NFC_HOST_CARD_EMULATION = "android.hardware.nfc.hce";
-    field public static final String FEATURE_NFC_HOST_CARD_EMULATION_NFCF = "android.hardware.nfc.hcef";
-    field public static final String FEATURE_NFC_OFF_HOST_CARD_EMULATION_ESE = "android.hardware.nfc.ese";
-    field public static final String FEATURE_NFC_OFF_HOST_CARD_EMULATION_UICC = "android.hardware.nfc.uicc";
-    field public static final String FEATURE_OPENGLES_EXTENSION_PACK = "android.hardware.opengles.aep";
-    field public static final String FEATURE_PC = "android.hardware.type.pc";
-    field public static final String FEATURE_PICTURE_IN_PICTURE = "android.software.picture_in_picture";
-    field public static final String FEATURE_PRINTING = "android.software.print";
-    field public static final String FEATURE_RAM_LOW = "android.hardware.ram.low";
-    field public static final String FEATURE_RAM_NORMAL = "android.hardware.ram.normal";
-    field public static final String FEATURE_SCREEN_LANDSCAPE = "android.hardware.screen.landscape";
-    field public static final String FEATURE_SCREEN_PORTRAIT = "android.hardware.screen.portrait";
-    field public static final String FEATURE_SECURELY_REMOVES_USERS = "android.software.securely_removes_users";
-    field public static final String FEATURE_SECURE_LOCK_SCREEN = "android.software.secure_lock_screen";
-    field public static final String FEATURE_SENSOR_ACCELEROMETER = "android.hardware.sensor.accelerometer";
-    field public static final String FEATURE_SENSOR_AMBIENT_TEMPERATURE = "android.hardware.sensor.ambient_temperature";
-    field public static final String FEATURE_SENSOR_BAROMETER = "android.hardware.sensor.barometer";
-    field public static final String FEATURE_SENSOR_COMPASS = "android.hardware.sensor.compass";
-    field public static final String FEATURE_SENSOR_GYROSCOPE = "android.hardware.sensor.gyroscope";
-    field public static final String FEATURE_SENSOR_HEART_RATE = "android.hardware.sensor.heartrate";
-    field public static final String FEATURE_SENSOR_HEART_RATE_ECG = "android.hardware.sensor.heartrate.ecg";
-    field public static final String FEATURE_SENSOR_HINGE_ANGLE = "android.hardware.sensor.hinge_angle";
-    field public static final String FEATURE_SENSOR_LIGHT = "android.hardware.sensor.light";
-    field public static final String FEATURE_SENSOR_PROXIMITY = "android.hardware.sensor.proximity";
-    field public static final String FEATURE_SENSOR_RELATIVE_HUMIDITY = "android.hardware.sensor.relative_humidity";
-    field public static final String FEATURE_SENSOR_STEP_COUNTER = "android.hardware.sensor.stepcounter";
-    field public static final String FEATURE_SENSOR_STEP_DETECTOR = "android.hardware.sensor.stepdetector";
-    field public static final String FEATURE_SE_OMAPI_ESE = "android.hardware.se.omapi.ese";
-    field public static final String FEATURE_SE_OMAPI_SD = "android.hardware.se.omapi.sd";
-    field public static final String FEATURE_SE_OMAPI_UICC = "android.hardware.se.omapi.uicc";
-    field public static final String FEATURE_SIP = "android.software.sip";
-    field public static final String FEATURE_SIP_VOIP = "android.software.sip.voip";
-    field public static final String FEATURE_STRONGBOX_KEYSTORE = "android.hardware.strongbox_keystore";
-    field public static final String FEATURE_TELEPHONY = "android.hardware.telephony";
-    field public static final String FEATURE_TELEPHONY_CDMA = "android.hardware.telephony.cdma";
-    field public static final String FEATURE_TELEPHONY_EUICC = "android.hardware.telephony.euicc";
-    field public static final String FEATURE_TELEPHONY_GSM = "android.hardware.telephony.gsm";
-    field public static final String FEATURE_TELEPHONY_IMS = "android.hardware.telephony.ims";
-    field public static final String FEATURE_TELEPHONY_MBMS = "android.hardware.telephony.mbms";
-    field @Deprecated public static final String FEATURE_TELEVISION = "android.hardware.type.television";
-    field public static final String FEATURE_TOUCHSCREEN = "android.hardware.touchscreen";
-    field public static final String FEATURE_TOUCHSCREEN_MULTITOUCH = "android.hardware.touchscreen.multitouch";
-    field public static final String FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT = "android.hardware.touchscreen.multitouch.distinct";
-    field public static final String FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND = "android.hardware.touchscreen.multitouch.jazzhand";
-    field public static final String FEATURE_USB_ACCESSORY = "android.hardware.usb.accessory";
-    field public static final String FEATURE_USB_HOST = "android.hardware.usb.host";
-    field public static final String FEATURE_VERIFIED_BOOT = "android.software.verified_boot";
-    field public static final String FEATURE_VR_HEADTRACKING = "android.hardware.vr.headtracking";
-    field @Deprecated public static final String FEATURE_VR_MODE = "android.software.vr.mode";
-    field public static final String FEATURE_VR_MODE_HIGH_PERFORMANCE = "android.hardware.vr.high_performance";
-    field public static final String FEATURE_VULKAN_DEQP_LEVEL = "android.software.vulkan.deqp.level";
-    field public static final String FEATURE_VULKAN_HARDWARE_COMPUTE = "android.hardware.vulkan.compute";
-    field public static final String FEATURE_VULKAN_HARDWARE_LEVEL = "android.hardware.vulkan.level";
-    field public static final String FEATURE_VULKAN_HARDWARE_VERSION = "android.hardware.vulkan.version";
-    field public static final String FEATURE_WATCH = "android.hardware.type.watch";
-    field public static final String FEATURE_WEBVIEW = "android.software.webview";
-    field public static final String FEATURE_WIFI = "android.hardware.wifi";
-    field public static final String FEATURE_WIFI_AWARE = "android.hardware.wifi.aware";
-    field public static final String FEATURE_WIFI_DIRECT = "android.hardware.wifi.direct";
-    field public static final String FEATURE_WIFI_PASSPOINT = "android.hardware.wifi.passpoint";
-    field public static final String FEATURE_WIFI_RTT = "android.hardware.wifi.rtt";
-    field public static final int FLAG_PERMISSION_WHITELIST_INSTALLER = 2; // 0x2
-    field public static final int FLAG_PERMISSION_WHITELIST_SYSTEM = 1; // 0x1
-    field public static final int FLAG_PERMISSION_WHITELIST_UPGRADE = 4; // 0x4
-    field public static final int GET_ACTIVITIES = 1; // 0x1
-    field public static final int GET_CONFIGURATIONS = 16384; // 0x4000
-    field @Deprecated public static final int GET_DISABLED_COMPONENTS = 512; // 0x200
-    field @Deprecated public static final int GET_DISABLED_UNTIL_USED_COMPONENTS = 32768; // 0x8000
-    field public static final int GET_GIDS = 256; // 0x100
-    field public static final int GET_INSTRUMENTATION = 16; // 0x10
-    field public static final int GET_INTENT_FILTERS = 32; // 0x20
-    field public static final int GET_META_DATA = 128; // 0x80
-    field public static final int GET_PERMISSIONS = 4096; // 0x1000
-    field public static final int GET_PROVIDERS = 8; // 0x8
-    field public static final int GET_RECEIVERS = 2; // 0x2
-    field public static final int GET_RESOLVED_FILTER = 64; // 0x40
-    field public static final int GET_SERVICES = 4; // 0x4
-    field public static final int GET_SHARED_LIBRARY_FILES = 1024; // 0x400
-    field @Deprecated public static final int GET_SIGNATURES = 64; // 0x40
-    field public static final int GET_SIGNING_CERTIFICATES = 134217728; // 0x8000000
-    field @Deprecated public static final int GET_UNINSTALLED_PACKAGES = 8192; // 0x2000
-    field public static final int GET_URI_PERMISSION_PATTERNS = 2048; // 0x800
-    field public static final int INSTALL_REASON_DEVICE_RESTORE = 2; // 0x2
-    field public static final int INSTALL_REASON_DEVICE_SETUP = 3; // 0x3
-    field public static final int INSTALL_REASON_POLICY = 1; // 0x1
-    field public static final int INSTALL_REASON_UNKNOWN = 0; // 0x0
-    field public static final int INSTALL_REASON_USER = 4; // 0x4
-    field public static final int MATCH_ALL = 131072; // 0x20000
-    field public static final int MATCH_APEX = 1073741824; // 0x40000000
-    field public static final int MATCH_DEFAULT_ONLY = 65536; // 0x10000
-    field public static final int MATCH_DIRECT_BOOT_AUTO = 268435456; // 0x10000000
-    field public static final int MATCH_DIRECT_BOOT_AWARE = 524288; // 0x80000
-    field public static final int MATCH_DIRECT_BOOT_UNAWARE = 262144; // 0x40000
-    field public static final int MATCH_DISABLED_COMPONENTS = 512; // 0x200
-    field public static final int MATCH_DISABLED_UNTIL_USED_COMPONENTS = 32768; // 0x8000
-    field public static final int MATCH_SYSTEM_ONLY = 1048576; // 0x100000
-    field public static final int MATCH_UNINSTALLED_PACKAGES = 8192; // 0x2000
-    field public static final long MAXIMUM_VERIFICATION_TIMEOUT = 3600000L; // 0x36ee80L
-    field public static final int PERMISSION_DENIED = -1; // 0xffffffff
-    field public static final int PERMISSION_GRANTED = 0; // 0x0
-    field public static final int SIGNATURE_FIRST_NOT_SIGNED = -1; // 0xffffffff
-    field public static final int SIGNATURE_MATCH = 0; // 0x0
-    field public static final int SIGNATURE_NEITHER_SIGNED = 1; // 0x1
-    field public static final int SIGNATURE_NO_MATCH = -3; // 0xfffffffd
-    field public static final int SIGNATURE_SECOND_NOT_SIGNED = -2; // 0xfffffffe
-    field public static final int SIGNATURE_UNKNOWN_PACKAGE = -4; // 0xfffffffc
-    field public static final int SYNCHRONOUS = 2; // 0x2
-    field public static final int VERIFICATION_ALLOW = 1; // 0x1
-    field public static final int VERIFICATION_REJECT = -1; // 0xffffffff
-    field public static final int VERSION_CODE_HIGHEST = -1; // 0xffffffff
-  }
-
-  public static class PackageManager.NameNotFoundException extends android.util.AndroidException {
-    ctor public PackageManager.NameNotFoundException();
-    ctor public PackageManager.NameNotFoundException(String);
-  }
-
-  @Deprecated public class PackageStats implements android.os.Parcelable {
-    ctor @Deprecated public PackageStats(String);
-    ctor @Deprecated public PackageStats(android.os.Parcel);
-    ctor @Deprecated public PackageStats(android.content.pm.PackageStats);
-    method @Deprecated public int describeContents();
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.content.pm.PackageStats> CREATOR;
-    field @Deprecated public long cacheSize;
-    field @Deprecated public long codeSize;
-    field @Deprecated public long dataSize;
-    field @Deprecated public long externalCacheSize;
-    field @Deprecated public long externalCodeSize;
-    field @Deprecated public long externalDataSize;
-    field @Deprecated public long externalMediaSize;
-    field @Deprecated public long externalObbSize;
-    field @Deprecated public String packageName;
-  }
-
-  public class PathPermission extends android.os.PatternMatcher {
-    ctor public PathPermission(String, int, String, String);
-    ctor public PathPermission(android.os.Parcel);
-    method public String getReadPermission();
-    method public String getWritePermission();
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.PathPermission> CREATOR;
-  }
-
-  public class PermissionGroupInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
-    ctor @Deprecated public PermissionGroupInfo();
-    ctor @Deprecated public PermissionGroupInfo(@NonNull android.content.pm.PermissionGroupInfo);
-    method public int describeContents();
-    method @Nullable public CharSequence loadDescription(@NonNull android.content.pm.PackageManager);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.PermissionGroupInfo> CREATOR;
-    field public static final int FLAG_PERSONAL_INFO = 1; // 0x1
-    field @StringRes public int descriptionRes;
-    field public int flags;
-    field @Nullable public CharSequence nonLocalizedDescription;
-    field public int priority;
-  }
-
-  public class PermissionInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
-    ctor @Deprecated public PermissionInfo();
-    ctor @Deprecated public PermissionInfo(@NonNull android.content.pm.PermissionInfo);
-    method public int describeContents();
-    method public int getProtection();
-    method public int getProtectionFlags();
-    method @Nullable public CharSequence loadDescription(@NonNull android.content.pm.PackageManager);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.PermissionInfo> CREATOR;
-    field public static final int FLAG_COSTS_MONEY = 1; // 0x1
-    field public static final int FLAG_HARD_RESTRICTED = 4; // 0x4
-    field public static final int FLAG_IMMUTABLY_RESTRICTED = 16; // 0x10
-    field public static final int FLAG_INSTALLED = 1073741824; // 0x40000000
-    field public static final int FLAG_SOFT_RESTRICTED = 8; // 0x8
-    field public static final int PROTECTION_DANGEROUS = 1; // 0x1
-    field public static final int PROTECTION_FLAG_APPOP = 64; // 0x40
-    field public static final int PROTECTION_FLAG_DEVELOPMENT = 32; // 0x20
-    field public static final int PROTECTION_FLAG_INSTALLER = 256; // 0x100
-    field public static final int PROTECTION_FLAG_INSTANT = 4096; // 0x1000
-    field public static final int PROTECTION_FLAG_PRE23 = 128; // 0x80
-    field public static final int PROTECTION_FLAG_PREINSTALLED = 1024; // 0x400
-    field public static final int PROTECTION_FLAG_PRIVILEGED = 16; // 0x10
-    field public static final int PROTECTION_FLAG_RUNTIME_ONLY = 8192; // 0x2000
-    field public static final int PROTECTION_FLAG_SETUP = 2048; // 0x800
-    field @Deprecated public static final int PROTECTION_FLAG_SYSTEM = 16; // 0x10
-    field public static final int PROTECTION_FLAG_VERIFIER = 512; // 0x200
-    field @Deprecated public static final int PROTECTION_MASK_BASE = 15; // 0xf
-    field @Deprecated public static final int PROTECTION_MASK_FLAGS = 65520; // 0xfff0
-    field public static final int PROTECTION_NORMAL = 0; // 0x0
-    field public static final int PROTECTION_SIGNATURE = 2; // 0x2
-    field @Deprecated public static final int PROTECTION_SIGNATURE_OR_SYSTEM = 3; // 0x3
-    field @StringRes public int descriptionRes;
-    field public int flags;
-    field @Nullable public String group;
-    field @Nullable public CharSequence nonLocalizedDescription;
-    field @Deprecated public int protectionLevel;
-  }
-
-  public final class ProviderInfo extends android.content.pm.ComponentInfo implements android.os.Parcelable {
-    ctor public ProviderInfo();
-    ctor public ProviderInfo(android.content.pm.ProviderInfo);
-    method public int describeContents();
-    method public void dump(android.util.Printer, String);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ProviderInfo> CREATOR;
-    field public static final int FLAG_SINGLE_USER = 1073741824; // 0x40000000
-    field public String authority;
-    field public int flags;
-    field public boolean forceUriPermissions;
-    field public boolean grantUriPermissions;
-    field public int initOrder;
-    field @Deprecated public boolean isSyncable;
-    field public boolean multiprocess;
-    field public android.content.pm.PathPermission[] pathPermissions;
-    field public String readPermission;
-    field public android.os.PatternMatcher[] uriPermissionPatterns;
-    field public String writePermission;
-  }
-
-  public class ResolveInfo implements android.os.Parcelable {
-    ctor public ResolveInfo();
-    ctor public ResolveInfo(android.content.pm.ResolveInfo);
-    method public int describeContents();
-    method public void dump(android.util.Printer, String);
-    method public final int getIconResource();
-    method public boolean isCrossProfileIntentForwarderActivity();
-    method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
-    method public CharSequence loadLabel(android.content.pm.PackageManager);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ResolveInfo> CREATOR;
-    field public android.content.pm.ActivityInfo activityInfo;
-    field public android.content.IntentFilter filter;
-    field public int icon;
-    field public boolean isDefault;
-    field public boolean isInstantAppAvailable;
-    field public int labelRes;
-    field public int match;
-    field public CharSequence nonLocalizedLabel;
-    field public int preferredOrder;
-    field public int priority;
-    field public android.content.pm.ProviderInfo providerInfo;
-    field public String resolvePackageName;
-    field public android.content.pm.ServiceInfo serviceInfo;
-    field public int specificIndex;
-  }
-
-  public static class ResolveInfo.DisplayNameComparator implements java.util.Comparator<android.content.pm.ResolveInfo> {
-    ctor public ResolveInfo.DisplayNameComparator(android.content.pm.PackageManager);
-    method public final int compare(android.content.pm.ResolveInfo, android.content.pm.ResolveInfo);
-  }
-
-  public class ServiceInfo extends android.content.pm.ComponentInfo implements android.os.Parcelable {
-    ctor public ServiceInfo();
-    ctor public ServiceInfo(android.content.pm.ServiceInfo);
-    method public int describeContents();
-    method public void dump(android.util.Printer, String);
-    method public int getForegroundServiceType();
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ServiceInfo> CREATOR;
-    field public static final int FLAG_EXTERNAL_SERVICE = 4; // 0x4
-    field public static final int FLAG_ISOLATED_PROCESS = 2; // 0x2
-    field public static final int FLAG_SINGLE_USER = 1073741824; // 0x40000000
-    field public static final int FLAG_STOP_WITH_TASK = 1; // 0x1
-    field public static final int FLAG_USE_APP_ZYGOTE = 8; // 0x8
-    field public static final int FOREGROUND_SERVICE_TYPE_CAMERA = 64; // 0x40
-    field public static final int FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE = 16; // 0x10
-    field public static final int FOREGROUND_SERVICE_TYPE_DATA_SYNC = 1; // 0x1
-    field public static final int FOREGROUND_SERVICE_TYPE_LOCATION = 8; // 0x8
-    field public static final int FOREGROUND_SERVICE_TYPE_MANIFEST = -1; // 0xffffffff
-    field public static final int FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK = 2; // 0x2
-    field public static final int FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION = 32; // 0x20
-    field public static final int FOREGROUND_SERVICE_TYPE_MICROPHONE = 128; // 0x80
-    field public static final int FOREGROUND_SERVICE_TYPE_NONE = 0; // 0x0
-    field public static final int FOREGROUND_SERVICE_TYPE_PHONE_CALL = 4; // 0x4
-    field public int flags;
-    field public String permission;
-  }
-
-  public final class SharedLibraryInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.content.pm.VersionedPackage getDeclaringPackage();
-    method @NonNull public java.util.List<android.content.pm.VersionedPackage> getDependentPackages();
-    method @IntRange(from=0xffffffff) public long getLongVersion();
-    method public String getName();
-    method public int getType();
-    method @Deprecated @IntRange(from=0xffffffff) public int getVersion();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.SharedLibraryInfo> CREATOR;
-    field public static final int TYPE_BUILTIN = 0; // 0x0
-    field public static final int TYPE_DYNAMIC = 1; // 0x1
-    field public static final int TYPE_STATIC = 2; // 0x2
-    field public static final int VERSION_UNDEFINED = -1; // 0xffffffff
-  }
-
-  public final class ShortcutInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.content.ComponentName getActivity();
-    method @Nullable public java.util.Set<java.lang.String> getCategories();
-    method @Nullable public CharSequence getDisabledMessage();
-    method public int getDisabledReason();
-    method @Nullable public android.os.PersistableBundle getExtras();
-    method @NonNull public String getId();
-    method @Nullable public android.content.Intent getIntent();
-    method @Nullable public android.content.Intent[] getIntents();
-    method public long getLastChangedTimestamp();
-    method @Nullable public android.content.LocusId getLocusId();
-    method @Nullable public CharSequence getLongLabel();
-    method @NonNull public String getPackage();
-    method public int getRank();
-    method @Nullable public CharSequence getShortLabel();
-    method public android.os.UserHandle getUserHandle();
-    method public boolean hasKeyFieldsOnly();
-    method public boolean isCached();
-    method public boolean isDeclaredInManifest();
-    method public boolean isDynamic();
-    method public boolean isEnabled();
-    method public boolean isImmutable();
-    method public boolean isPinned();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ShortcutInfo> CREATOR;
-    field public static final int DISABLED_REASON_APP_CHANGED = 2; // 0x2
-    field public static final int DISABLED_REASON_BACKUP_NOT_SUPPORTED = 101; // 0x65
-    field public static final int DISABLED_REASON_BY_APP = 1; // 0x1
-    field public static final int DISABLED_REASON_NOT_DISABLED = 0; // 0x0
-    field public static final int DISABLED_REASON_OTHER_RESTORE_ISSUE = 103; // 0x67
-    field public static final int DISABLED_REASON_SIGNATURE_MISMATCH = 102; // 0x66
-    field public static final int DISABLED_REASON_UNKNOWN = 3; // 0x3
-    field public static final int DISABLED_REASON_VERSION_LOWER = 100; // 0x64
-    field public static final String SHORTCUT_CATEGORY_CONVERSATION = "android.shortcut.conversation";
-  }
-
-  public static class ShortcutInfo.Builder {
-    ctor public ShortcutInfo.Builder(android.content.Context, String);
-    method @NonNull public android.content.pm.ShortcutInfo build();
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setActivity(@NonNull android.content.ComponentName);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setCategories(java.util.Set<java.lang.String>);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setDisabledMessage(@NonNull CharSequence);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setExtras(@NonNull android.os.PersistableBundle);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setIcon(android.graphics.drawable.Icon);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setIntent(@NonNull android.content.Intent);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setIntents(@NonNull android.content.Intent[]);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setLocusId(@NonNull android.content.LocusId);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setLongLabel(@NonNull CharSequence);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setLongLived(boolean);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setPerson(@NonNull android.app.Person);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setPersons(@NonNull android.app.Person[]);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setRank(int);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setShortLabel(@NonNull CharSequence);
-  }
-
-  public class ShortcutManager {
-    method public boolean addDynamicShortcuts(@NonNull java.util.List<android.content.pm.ShortcutInfo>);
-    method public android.content.Intent createShortcutResultIntent(@NonNull android.content.pm.ShortcutInfo);
-    method public void disableShortcuts(@NonNull java.util.List<java.lang.String>);
-    method public void disableShortcuts(@NonNull java.util.List<java.lang.String>, CharSequence);
-    method public void enableShortcuts(@NonNull java.util.List<java.lang.String>);
-    method @NonNull public java.util.List<android.content.pm.ShortcutInfo> getDynamicShortcuts();
-    method public int getIconMaxHeight();
-    method public int getIconMaxWidth();
-    method @NonNull public java.util.List<android.content.pm.ShortcutInfo> getManifestShortcuts();
-    method public int getMaxShortcutCountPerActivity();
-    method @NonNull public java.util.List<android.content.pm.ShortcutInfo> getPinnedShortcuts();
-    method @NonNull public java.util.List<android.content.pm.ShortcutInfo> getShortcuts(int);
-    method public boolean isRateLimitingActive();
-    method public boolean isRequestPinShortcutSupported();
-    method public void pushDynamicShortcut(@NonNull android.content.pm.ShortcutInfo);
-    method public void removeAllDynamicShortcuts();
-    method public void removeDynamicShortcuts(@NonNull java.util.List<java.lang.String>);
-    method public void removeLongLivedShortcuts(@NonNull java.util.List<java.lang.String>);
-    method public void reportShortcutUsed(String);
-    method public boolean requestPinShortcut(@NonNull android.content.pm.ShortcutInfo, @Nullable android.content.IntentSender);
-    method public boolean setDynamicShortcuts(@NonNull java.util.List<android.content.pm.ShortcutInfo>);
-    method public boolean updateShortcuts(@NonNull java.util.List<android.content.pm.ShortcutInfo>);
-    field public static final int FLAG_MATCH_CACHED = 8; // 0x8
-    field public static final int FLAG_MATCH_DYNAMIC = 2; // 0x2
-    field public static final int FLAG_MATCH_MANIFEST = 1; // 0x1
-    field public static final int FLAG_MATCH_PINNED = 4; // 0x4
-  }
-
-  public class Signature implements android.os.Parcelable {
-    ctor public Signature(byte[]);
-    ctor public Signature(String);
-    method public int describeContents();
-    method public byte[] toByteArray();
-    method public char[] toChars();
-    method public char[] toChars(char[], int[]);
-    method public String toCharsString();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.Signature> CREATOR;
-  }
-
-  public final class SigningInfo implements android.os.Parcelable {
-    ctor public SigningInfo();
-    ctor public SigningInfo(android.content.pm.SigningInfo);
-    method public int describeContents();
-    method public android.content.pm.Signature[] getApkContentsSigners();
-    method public android.content.pm.Signature[] getSigningCertificateHistory();
-    method public boolean hasMultipleSigners();
-    method public boolean hasPastSigningCertificates();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.SigningInfo> CREATOR;
-  }
-
-  public final class VersionedPackage implements android.os.Parcelable {
-    ctor public VersionedPackage(@NonNull String, int);
-    ctor public VersionedPackage(@NonNull String, long);
-    method public int describeContents();
-    method public long getLongVersionCode();
-    method @NonNull public String getPackageName();
-    method @Deprecated public int getVersionCode();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.VersionedPackage> CREATOR;
-  }
-
-}
-
-package android.content.res {
-
-  public class AssetFileDescriptor implements java.io.Closeable android.os.Parcelable {
-    ctor public AssetFileDescriptor(android.os.ParcelFileDescriptor, long, long);
-    ctor public AssetFileDescriptor(android.os.ParcelFileDescriptor, long, long, android.os.Bundle);
-    method public void close() throws java.io.IOException;
-    method public java.io.FileInputStream createInputStream() throws java.io.IOException;
-    method public java.io.FileOutputStream createOutputStream() throws java.io.IOException;
-    method public int describeContents();
-    method public long getDeclaredLength();
-    method public android.os.Bundle getExtras();
-    method public java.io.FileDescriptor getFileDescriptor();
-    method public long getLength();
-    method public android.os.ParcelFileDescriptor getParcelFileDescriptor();
-    method public long getStartOffset();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.res.AssetFileDescriptor> CREATOR;
-    field public static final long UNKNOWN_LENGTH = -1L; // 0xffffffffffffffffL
-  }
-
-  public static class AssetFileDescriptor.AutoCloseInputStream extends android.os.ParcelFileDescriptor.AutoCloseInputStream {
-    ctor public AssetFileDescriptor.AutoCloseInputStream(android.content.res.AssetFileDescriptor) throws java.io.IOException;
-  }
-
-  public static class AssetFileDescriptor.AutoCloseOutputStream extends android.os.ParcelFileDescriptor.AutoCloseOutputStream {
-    ctor public AssetFileDescriptor.AutoCloseOutputStream(android.content.res.AssetFileDescriptor) throws java.io.IOException;
-  }
-
-  public final class AssetManager implements java.lang.AutoCloseable {
-    method public void close();
-    method public String[] getLocales();
-    method @Nullable public String[] list(@NonNull String) throws java.io.IOException;
-    method @NonNull public java.io.InputStream open(@NonNull String) throws java.io.IOException;
-    method @NonNull public java.io.InputStream open(@NonNull String, int) throws java.io.IOException;
-    method @NonNull public android.content.res.AssetFileDescriptor openFd(@NonNull String) throws java.io.IOException;
-    method @NonNull public android.content.res.AssetFileDescriptor openNonAssetFd(@NonNull String) throws java.io.IOException;
-    method @NonNull public android.content.res.AssetFileDescriptor openNonAssetFd(int, @NonNull String) throws java.io.IOException;
-    method @NonNull public android.content.res.XmlResourceParser openXmlResourceParser(@NonNull String) throws java.io.IOException;
-    method @NonNull public android.content.res.XmlResourceParser openXmlResourceParser(int, @NonNull String) throws java.io.IOException;
-    field public static final int ACCESS_BUFFER = 3; // 0x3
-    field public static final int ACCESS_RANDOM = 1; // 0x1
-    field public static final int ACCESS_STREAMING = 2; // 0x2
-    field public static final int ACCESS_UNKNOWN = 0; // 0x0
-  }
-
-  public final class AssetManager.AssetInputStream extends java.io.InputStream {
-    method public int read() throws java.io.IOException;
-  }
-
-  public class ColorStateList implements android.os.Parcelable {
-    ctor public ColorStateList(int[][], @ColorInt int[]);
-    method @Deprecated @NonNull public static android.content.res.ColorStateList createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method @NonNull public static android.content.res.ColorStateList createFromXml(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, @Nullable android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public int describeContents();
-    method public int getChangingConfigurations();
-    method public int getColorForState(@Nullable int[], int);
-    method @ColorInt public int getDefaultColor();
-    method public boolean isOpaque();
-    method public boolean isStateful();
-    method @NonNull public static android.content.res.ColorStateList valueOf(@ColorInt int);
-    method @NonNull public android.content.res.ColorStateList withAlpha(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.res.ColorStateList> CREATOR;
-  }
-
-  public final class Configuration implements java.lang.Comparable<android.content.res.Configuration> android.os.Parcelable {
-    ctor public Configuration();
-    ctor public Configuration(android.content.res.Configuration);
-    method public int compareTo(android.content.res.Configuration);
-    method public int describeContents();
-    method public int diff(android.content.res.Configuration);
-    method public boolean equals(android.content.res.Configuration);
-    method public int getLayoutDirection();
-    method @NonNull public android.os.LocaleList getLocales();
-    method public boolean isLayoutSizeAtLeast(int);
-    method public boolean isNightModeActive();
-    method public boolean isScreenHdr();
-    method public boolean isScreenRound();
-    method public boolean isScreenWideColorGamut();
-    method public static boolean needNewResources(int, int);
-    method public void readFromParcel(android.os.Parcel);
-    method public void setLayoutDirection(java.util.Locale);
-    method public void setLocale(@Nullable java.util.Locale);
-    method public void setLocales(@Nullable android.os.LocaleList);
-    method public void setTo(android.content.res.Configuration);
-    method public void setToDefaults();
-    method public int updateFrom(@NonNull android.content.res.Configuration);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int COLOR_MODE_HDR_MASK = 12; // 0xc
-    field public static final int COLOR_MODE_HDR_NO = 4; // 0x4
-    field public static final int COLOR_MODE_HDR_SHIFT = 2; // 0x2
-    field public static final int COLOR_MODE_HDR_UNDEFINED = 0; // 0x0
-    field public static final int COLOR_MODE_HDR_YES = 8; // 0x8
-    field public static final int COLOR_MODE_UNDEFINED = 0; // 0x0
-    field public static final int COLOR_MODE_WIDE_COLOR_GAMUT_MASK = 3; // 0x3
-    field public static final int COLOR_MODE_WIDE_COLOR_GAMUT_NO = 1; // 0x1
-    field public static final int COLOR_MODE_WIDE_COLOR_GAMUT_UNDEFINED = 0; // 0x0
-    field public static final int COLOR_MODE_WIDE_COLOR_GAMUT_YES = 2; // 0x2
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.res.Configuration> CREATOR;
-    field public static final int DENSITY_DPI_UNDEFINED = 0; // 0x0
-    field public static final int HARDKEYBOARDHIDDEN_NO = 1; // 0x1
-    field public static final int HARDKEYBOARDHIDDEN_UNDEFINED = 0; // 0x0
-    field public static final int HARDKEYBOARDHIDDEN_YES = 2; // 0x2
-    field public static final int KEYBOARDHIDDEN_NO = 1; // 0x1
-    field public static final int KEYBOARDHIDDEN_UNDEFINED = 0; // 0x0
-    field public static final int KEYBOARDHIDDEN_YES = 2; // 0x2
-    field public static final int KEYBOARD_12KEY = 3; // 0x3
-    field public static final int KEYBOARD_NOKEYS = 1; // 0x1
-    field public static final int KEYBOARD_QWERTY = 2; // 0x2
-    field public static final int KEYBOARD_UNDEFINED = 0; // 0x0
-    field public static final int MNC_ZERO = 65535; // 0xffff
-    field public static final int NAVIGATIONHIDDEN_NO = 1; // 0x1
-    field public static final int NAVIGATIONHIDDEN_UNDEFINED = 0; // 0x0
-    field public static final int NAVIGATIONHIDDEN_YES = 2; // 0x2
-    field public static final int NAVIGATION_DPAD = 2; // 0x2
-    field public static final int NAVIGATION_NONAV = 1; // 0x1
-    field public static final int NAVIGATION_TRACKBALL = 3; // 0x3
-    field public static final int NAVIGATION_UNDEFINED = 0; // 0x0
-    field public static final int NAVIGATION_WHEEL = 4; // 0x4
-    field public static final int ORIENTATION_LANDSCAPE = 2; // 0x2
-    field public static final int ORIENTATION_PORTRAIT = 1; // 0x1
-    field @Deprecated public static final int ORIENTATION_SQUARE = 3; // 0x3
-    field public static final int ORIENTATION_UNDEFINED = 0; // 0x0
-    field public static final int SCREENLAYOUT_LAYOUTDIR_LTR = 64; // 0x40
-    field public static final int SCREENLAYOUT_LAYOUTDIR_MASK = 192; // 0xc0
-    field public static final int SCREENLAYOUT_LAYOUTDIR_RTL = 128; // 0x80
-    field public static final int SCREENLAYOUT_LAYOUTDIR_SHIFT = 6; // 0x6
-    field public static final int SCREENLAYOUT_LAYOUTDIR_UNDEFINED = 0; // 0x0
-    field public static final int SCREENLAYOUT_LONG_MASK = 48; // 0x30
-    field public static final int SCREENLAYOUT_LONG_NO = 16; // 0x10
-    field public static final int SCREENLAYOUT_LONG_UNDEFINED = 0; // 0x0
-    field public static final int SCREENLAYOUT_LONG_YES = 32; // 0x20
-    field public static final int SCREENLAYOUT_ROUND_MASK = 768; // 0x300
-    field public static final int SCREENLAYOUT_ROUND_NO = 256; // 0x100
-    field public static final int SCREENLAYOUT_ROUND_UNDEFINED = 0; // 0x0
-    field public static final int SCREENLAYOUT_ROUND_YES = 512; // 0x200
-    field public static final int SCREENLAYOUT_SIZE_LARGE = 3; // 0x3
-    field public static final int SCREENLAYOUT_SIZE_MASK = 15; // 0xf
-    field public static final int SCREENLAYOUT_SIZE_NORMAL = 2; // 0x2
-    field public static final int SCREENLAYOUT_SIZE_SMALL = 1; // 0x1
-    field public static final int SCREENLAYOUT_SIZE_UNDEFINED = 0; // 0x0
-    field public static final int SCREENLAYOUT_SIZE_XLARGE = 4; // 0x4
-    field public static final int SCREENLAYOUT_UNDEFINED = 0; // 0x0
-    field public static final int SCREEN_HEIGHT_DP_UNDEFINED = 0; // 0x0
-    field public static final int SCREEN_WIDTH_DP_UNDEFINED = 0; // 0x0
-    field public static final int SMALLEST_SCREEN_WIDTH_DP_UNDEFINED = 0; // 0x0
-    field public static final int TOUCHSCREEN_FINGER = 3; // 0x3
-    field public static final int TOUCHSCREEN_NOTOUCH = 1; // 0x1
-    field @Deprecated public static final int TOUCHSCREEN_STYLUS = 2; // 0x2
-    field public static final int TOUCHSCREEN_UNDEFINED = 0; // 0x0
-    field public static final int UI_MODE_NIGHT_MASK = 48; // 0x30
-    field public static final int UI_MODE_NIGHT_NO = 16; // 0x10
-    field public static final int UI_MODE_NIGHT_UNDEFINED = 0; // 0x0
-    field public static final int UI_MODE_NIGHT_YES = 32; // 0x20
-    field public static final int UI_MODE_TYPE_APPLIANCE = 5; // 0x5
-    field public static final int UI_MODE_TYPE_CAR = 3; // 0x3
-    field public static final int UI_MODE_TYPE_DESK = 2; // 0x2
-    field public static final int UI_MODE_TYPE_MASK = 15; // 0xf
-    field public static final int UI_MODE_TYPE_NORMAL = 1; // 0x1
-    field public static final int UI_MODE_TYPE_TELEVISION = 4; // 0x4
-    field public static final int UI_MODE_TYPE_UNDEFINED = 0; // 0x0
-    field public static final int UI_MODE_TYPE_VR_HEADSET = 7; // 0x7
-    field public static final int UI_MODE_TYPE_WATCH = 6; // 0x6
-    field public int colorMode;
-    field public int densityDpi;
-    field public float fontScale;
-    field public int hardKeyboardHidden;
-    field public int keyboard;
-    field public int keyboardHidden;
-    field @Deprecated public java.util.Locale locale;
-    field public int mcc;
-    field public int mnc;
-    field public int navigation;
-    field public int navigationHidden;
-    field public int orientation;
-    field public int screenHeightDp;
-    field public int screenLayout;
-    field public int screenWidthDp;
-    field public int smallestScreenWidthDp;
-    field public int touchscreen;
-    field public int uiMode;
-  }
-
-  public class ObbInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.res.ObbInfo> CREATOR;
-    field public static final int OBB_OVERLAY = 1; // 0x1
-    field public String filename;
-    field public int flags;
-    field public String packageName;
-    field public int version;
-  }
-
-  public class ObbScanner {
-    method public static android.content.res.ObbInfo getObbInfo(String) throws java.io.IOException;
-  }
-
-  public class Resources {
-    ctor @Deprecated public Resources(android.content.res.AssetManager, android.util.DisplayMetrics, android.content.res.Configuration);
-    method public void addLoaders(@NonNull android.content.res.loader.ResourcesLoader...);
-    method public final void finishPreloading();
-    method public final void flushLayoutCache();
-    method @NonNull public android.content.res.XmlResourceParser getAnimation(@AnimRes @AnimatorRes int) throws android.content.res.Resources.NotFoundException;
-    method public final android.content.res.AssetManager getAssets();
-    method @AnyRes public static int getAttributeSetSourceResId(@Nullable android.util.AttributeSet);
-    method public boolean getBoolean(@BoolRes int) throws android.content.res.Resources.NotFoundException;
-    method @Deprecated @ColorInt public int getColor(@ColorRes int) throws android.content.res.Resources.NotFoundException;
-    method @ColorInt public int getColor(@ColorRes int, @Nullable android.content.res.Resources.Theme) throws android.content.res.Resources.NotFoundException;
-    method @Deprecated @NonNull public android.content.res.ColorStateList getColorStateList(@ColorRes int) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public android.content.res.ColorStateList getColorStateList(@ColorRes int, @Nullable android.content.res.Resources.Theme) throws android.content.res.Resources.NotFoundException;
-    method public android.content.res.Configuration getConfiguration();
-    method public float getDimension(@DimenRes int) throws android.content.res.Resources.NotFoundException;
-    method public int getDimensionPixelOffset(@DimenRes int) throws android.content.res.Resources.NotFoundException;
-    method public int getDimensionPixelSize(@DimenRes int) throws android.content.res.Resources.NotFoundException;
-    method public android.util.DisplayMetrics getDisplayMetrics();
-    method @Deprecated public android.graphics.drawable.Drawable getDrawable(@DrawableRes int) throws android.content.res.Resources.NotFoundException;
-    method public android.graphics.drawable.Drawable getDrawable(@DrawableRes int, @Nullable android.content.res.Resources.Theme) throws android.content.res.Resources.NotFoundException;
-    method @Deprecated @Nullable public android.graphics.drawable.Drawable getDrawableForDensity(@DrawableRes int, int) throws android.content.res.Resources.NotFoundException;
-    method @Nullable public android.graphics.drawable.Drawable getDrawableForDensity(@DrawableRes int, int, @Nullable android.content.res.Resources.Theme);
-    method public float getFloat(@DimenRes int);
-    method @NonNull public android.graphics.Typeface getFont(@FontRes int) throws android.content.res.Resources.NotFoundException;
-    method public float getFraction(@FractionRes int, int, int);
-    method public int getIdentifier(String, String, String);
-    method @NonNull public int[] getIntArray(@ArrayRes int) throws android.content.res.Resources.NotFoundException;
-    method public int getInteger(@IntegerRes int) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public android.content.res.XmlResourceParser getLayout(@LayoutRes int) throws android.content.res.Resources.NotFoundException;
-    method @Deprecated public android.graphics.Movie getMovie(@RawRes int) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public String getQuantityString(@PluralsRes int, int, java.lang.Object...) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public String getQuantityString(@PluralsRes int, int) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public CharSequence getQuantityText(@PluralsRes int, int) throws android.content.res.Resources.NotFoundException;
-    method public String getResourceEntryName(@AnyRes int) throws android.content.res.Resources.NotFoundException;
-    method public String getResourceName(@AnyRes int) throws android.content.res.Resources.NotFoundException;
-    method public String getResourcePackageName(@AnyRes int) throws android.content.res.Resources.NotFoundException;
-    method public String getResourceTypeName(@AnyRes int) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public String getString(@StringRes int) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public String getString(@StringRes int, java.lang.Object...) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public String[] getStringArray(@ArrayRes int) throws android.content.res.Resources.NotFoundException;
-    method public static android.content.res.Resources getSystem();
-    method @NonNull public CharSequence getText(@StringRes int) throws android.content.res.Resources.NotFoundException;
-    method public CharSequence getText(@StringRes int, CharSequence);
-    method @NonNull public CharSequence[] getTextArray(@ArrayRes int) throws android.content.res.Resources.NotFoundException;
-    method public void getValue(@AnyRes int, android.util.TypedValue, boolean) throws android.content.res.Resources.NotFoundException;
-    method public void getValue(String, android.util.TypedValue, boolean) throws android.content.res.Resources.NotFoundException;
-    method public void getValueForDensity(@AnyRes int, int, android.util.TypedValue, boolean) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public android.content.res.XmlResourceParser getXml(@XmlRes int) throws android.content.res.Resources.NotFoundException;
-    method public final android.content.res.Resources.Theme newTheme();
-    method public android.content.res.TypedArray obtainAttributes(android.util.AttributeSet, @StyleableRes int[]);
-    method @NonNull public android.content.res.TypedArray obtainTypedArray(@ArrayRes int) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public java.io.InputStream openRawResource(@RawRes int) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public java.io.InputStream openRawResource(@RawRes int, android.util.TypedValue) throws android.content.res.Resources.NotFoundException;
-    method public android.content.res.AssetFileDescriptor openRawResourceFd(@RawRes int) throws android.content.res.Resources.NotFoundException;
-    method public void parseBundleExtra(String, android.util.AttributeSet, android.os.Bundle) throws org.xmlpull.v1.XmlPullParserException;
-    method public void parseBundleExtras(android.content.res.XmlResourceParser, android.os.Bundle) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public void removeLoaders(@NonNull android.content.res.loader.ResourcesLoader...);
-    method @Deprecated public void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics);
-    field @AnyRes public static final int ID_NULL = 0; // 0x0
-  }
-
-  public static class Resources.NotFoundException extends java.lang.RuntimeException {
-    ctor public Resources.NotFoundException();
-    ctor public Resources.NotFoundException(String);
-    ctor public Resources.NotFoundException(String, Exception);
-  }
-
-  public final class Resources.Theme {
-    method public void applyStyle(int, boolean);
-    method public void dump(int, String, String);
-    method @NonNull public int[] getAttributeResolutionStack(@AttrRes int, @StyleRes int, @StyleRes int);
-    method public int getChangingConfigurations();
-    method public android.graphics.drawable.Drawable getDrawable(@DrawableRes int) throws android.content.res.Resources.NotFoundException;
-    method @StyleRes public int getExplicitStyle(@Nullable android.util.AttributeSet);
-    method public android.content.res.Resources getResources();
-    method @NonNull public android.content.res.TypedArray obtainStyledAttributes(@NonNull @StyleableRes int[]);
-    method @NonNull public android.content.res.TypedArray obtainStyledAttributes(@StyleRes int, @NonNull @StyleableRes int[]) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public android.content.res.TypedArray obtainStyledAttributes(@Nullable android.util.AttributeSet, @NonNull @StyleableRes int[], @AttrRes int, @StyleRes int);
-    method public void rebase();
-    method public boolean resolveAttribute(int, android.util.TypedValue, boolean);
-    method public void setTo(android.content.res.Resources.Theme);
-  }
-
-  public class TypedArray {
-    method public boolean getBoolean(@StyleableRes int, boolean);
-    method public int getChangingConfigurations();
-    method @ColorInt public int getColor(@StyleableRes int, @ColorInt int);
-    method @Nullable public android.content.res.ColorStateList getColorStateList(@StyleableRes int);
-    method public float getDimension(@StyleableRes int, float);
-    method public int getDimensionPixelOffset(@StyleableRes int, int);
-    method public int getDimensionPixelSize(@StyleableRes int, int);
-    method @Nullable public android.graphics.drawable.Drawable getDrawable(@StyleableRes int);
-    method public float getFloat(@StyleableRes int, float);
-    method @Nullable public android.graphics.Typeface getFont(@StyleableRes int);
-    method public float getFraction(@StyleableRes int, int, int, float);
-    method public int getIndex(int);
-    method public int getIndexCount();
-    method public int getInt(@StyleableRes int, int);
-    method public int getInteger(@StyleableRes int, int);
-    method public int getLayoutDimension(@StyleableRes int, String);
-    method public int getLayoutDimension(@StyleableRes int, int);
-    method public String getNonResourceString(@StyleableRes int);
-    method public String getPositionDescription();
-    method @AnyRes public int getResourceId(@StyleableRes int, int);
-    method public android.content.res.Resources getResources();
-    method @AnyRes public int getSourceResourceId(@StyleableRes int, @AnyRes int);
-    method @Nullable public String getString(@StyleableRes int);
-    method public CharSequence getText(@StyleableRes int);
-    method public CharSequence[] getTextArray(@StyleableRes int);
-    method public int getType(@StyleableRes int);
-    method public boolean getValue(@StyleableRes int, android.util.TypedValue);
-    method public boolean hasValue(@StyleableRes int);
-    method public boolean hasValueOrEmpty(@StyleableRes int);
-    method public int length();
-    method public android.util.TypedValue peekValue(@StyleableRes int);
-    method public void recycle();
-  }
-
-  public interface XmlResourceParser extends org.xmlpull.v1.XmlPullParser android.util.AttributeSet java.lang.AutoCloseable {
-    method public void close();
-  }
-
-}
-
-package android.content.res.loader {
-
-  public interface AssetsProvider {
-    method @Nullable public default android.content.res.AssetFileDescriptor loadAssetFd(@NonNull String, int);
-  }
-
-  public class ResourcesLoader {
-    ctor public ResourcesLoader();
-    method public void addProvider(@NonNull android.content.res.loader.ResourcesProvider);
-    method public void clearProviders();
-    method @NonNull public java.util.List<android.content.res.loader.ResourcesProvider> getProviders();
-    method public void removeProvider(@NonNull android.content.res.loader.ResourcesProvider);
-    method public void setProviders(@NonNull java.util.List<android.content.res.loader.ResourcesProvider>);
-  }
-
-  public class ResourcesProvider implements java.lang.AutoCloseable java.io.Closeable {
-    method public void close();
-    method @NonNull public static android.content.res.loader.ResourcesProvider empty(@NonNull android.content.res.loader.AssetsProvider);
-    method @NonNull public static android.content.res.loader.ResourcesProvider loadFromApk(@NonNull android.os.ParcelFileDescriptor) throws java.io.IOException;
-    method @NonNull public static android.content.res.loader.ResourcesProvider loadFromApk(@NonNull android.os.ParcelFileDescriptor, @Nullable android.content.res.loader.AssetsProvider) throws java.io.IOException;
-    method @NonNull public static android.content.res.loader.ResourcesProvider loadFromDirectory(@NonNull String, @Nullable android.content.res.loader.AssetsProvider) throws java.io.IOException;
-    method @NonNull public static android.content.res.loader.ResourcesProvider loadFromSplit(@NonNull android.content.Context, @NonNull String) throws java.io.IOException;
-    method @NonNull public static android.content.res.loader.ResourcesProvider loadFromTable(@NonNull android.os.ParcelFileDescriptor, @Nullable android.content.res.loader.AssetsProvider) throws java.io.IOException;
-  }
-
-}
-
-package android.database {
-
-  public abstract class AbstractCursor implements android.database.CrossProcessCursor {
-    ctor public AbstractCursor();
-    method protected void checkPosition();
-    method public void close();
-    method public void copyStringToBuffer(int, android.database.CharArrayBuffer);
-    method public void deactivate();
-    method public void fillWindow(int, android.database.CursorWindow);
-    method protected void finalize();
-    method public byte[] getBlob(int);
-    method public int getColumnCount();
-    method public int getColumnIndex(String);
-    method public int getColumnIndexOrThrow(String);
-    method public String getColumnName(int);
-    method public android.os.Bundle getExtras();
-    method public android.net.Uri getNotificationUri();
-    method public final int getPosition();
-    method public int getType(int);
-    method @Deprecated protected Object getUpdatedField(int);
-    method public boolean getWantsAllOnMoveCalls();
-    method public android.database.CursorWindow getWindow();
-    method public final boolean isAfterLast();
-    method public final boolean isBeforeFirst();
-    method public boolean isClosed();
-    method @Deprecated protected boolean isFieldUpdated(int);
-    method public final boolean isFirst();
-    method public final boolean isLast();
-    method public final boolean move(int);
-    method public final boolean moveToFirst();
-    method public final boolean moveToLast();
-    method public final boolean moveToNext();
-    method public final boolean moveToPosition(int);
-    method public final boolean moveToPrevious();
-    method protected void onChange(boolean);
-    method public boolean onMove(int, int);
-    method public void registerContentObserver(android.database.ContentObserver);
-    method public void registerDataSetObserver(android.database.DataSetObserver);
-    method public boolean requery();
-    method public android.os.Bundle respond(android.os.Bundle);
-    method public void setExtras(android.os.Bundle);
-    method public void setNotificationUri(android.content.ContentResolver, android.net.Uri);
-    method public void unregisterContentObserver(android.database.ContentObserver);
-    method public void unregisterDataSetObserver(android.database.DataSetObserver);
-    field @Deprecated protected boolean mClosed;
-    field @Deprecated protected android.content.ContentResolver mContentResolver;
-    field @Deprecated protected int mPos;
-  }
-
-  protected static class AbstractCursor.SelfContentObserver extends android.database.ContentObserver {
-    ctor public AbstractCursor.SelfContentObserver(android.database.AbstractCursor);
-  }
-
-  public abstract class AbstractWindowedCursor extends android.database.AbstractCursor {
-    ctor public AbstractWindowedCursor();
-    method public double getDouble(int);
-    method public float getFloat(int);
-    method public int getInt(int);
-    method public long getLong(int);
-    method public short getShort(int);
-    method public String getString(int);
-    method public boolean hasWindow();
-    method @Deprecated public boolean isBlob(int);
-    method @Deprecated public boolean isFloat(int);
-    method @Deprecated public boolean isLong(int);
-    method public boolean isNull(int);
-    method @Deprecated public boolean isString(int);
-    method public void setWindow(android.database.CursorWindow);
-    field protected android.database.CursorWindow mWindow;
-  }
-
-  public final class CharArrayBuffer {
-    ctor public CharArrayBuffer(int);
-    ctor public CharArrayBuffer(char[]);
-    field public char[] data;
-    field public int sizeCopied;
-  }
-
-  public class ContentObservable extends android.database.Observable<android.database.ContentObserver> {
-    ctor public ContentObservable();
-    method @Deprecated public void dispatchChange(boolean);
-    method public void dispatchChange(boolean, android.net.Uri);
-    method @Deprecated public void notifyChange(boolean);
-    method public void registerObserver(android.database.ContentObserver);
-  }
-
-  public abstract class ContentObserver {
-    ctor public ContentObserver(android.os.Handler);
-    method public boolean deliverSelfNotifications();
-    method @Deprecated public final void dispatchChange(boolean);
-    method public final void dispatchChange(boolean, @Nullable android.net.Uri);
-    method public final void dispatchChange(boolean, @Nullable android.net.Uri, int);
-    method public final void dispatchChange(boolean, @NonNull java.util.Collection<android.net.Uri>, int);
-    method public void onChange(boolean);
-    method public void onChange(boolean, @Nullable android.net.Uri);
-    method public void onChange(boolean, @Nullable android.net.Uri, int);
-    method public void onChange(boolean, @NonNull java.util.Collection<android.net.Uri>, int);
-  }
-
-  public interface CrossProcessCursor extends android.database.Cursor {
-    method public void fillWindow(int, android.database.CursorWindow);
-    method public android.database.CursorWindow getWindow();
-    method public boolean onMove(int, int);
-  }
-
-  public class CrossProcessCursorWrapper extends android.database.CursorWrapper implements android.database.CrossProcessCursor {
-    ctor public CrossProcessCursorWrapper(android.database.Cursor);
-    method public void fillWindow(int, android.database.CursorWindow);
-    method public android.database.CursorWindow getWindow();
-    method public boolean onMove(int, int);
-  }
-
-  public interface Cursor extends java.io.Closeable {
-    method public void close();
-    method public void copyStringToBuffer(int, android.database.CharArrayBuffer);
-    method @Deprecated public void deactivate();
-    method public byte[] getBlob(int);
-    method public int getColumnCount();
-    method public int getColumnIndex(String);
-    method public int getColumnIndexOrThrow(String) throws java.lang.IllegalArgumentException;
-    method public String getColumnName(int);
-    method public String[] getColumnNames();
-    method public int getCount();
-    method public double getDouble(int);
-    method public android.os.Bundle getExtras();
-    method public float getFloat(int);
-    method public int getInt(int);
-    method public long getLong(int);
-    method public android.net.Uri getNotificationUri();
-    method @Nullable public default java.util.List<android.net.Uri> getNotificationUris();
-    method public int getPosition();
-    method public short getShort(int);
-    method public String getString(int);
-    method public int getType(int);
-    method public boolean getWantsAllOnMoveCalls();
-    method public boolean isAfterLast();
-    method public boolean isBeforeFirst();
-    method public boolean isClosed();
-    method public boolean isFirst();
-    method public boolean isLast();
-    method public boolean isNull(int);
-    method public boolean move(int);
-    method public boolean moveToFirst();
-    method public boolean moveToLast();
-    method public boolean moveToNext();
-    method public boolean moveToPosition(int);
-    method public boolean moveToPrevious();
-    method public void registerContentObserver(android.database.ContentObserver);
-    method public void registerDataSetObserver(android.database.DataSetObserver);
-    method @Deprecated public boolean requery();
-    method public android.os.Bundle respond(android.os.Bundle);
-    method public void setExtras(android.os.Bundle);
-    method public void setNotificationUri(android.content.ContentResolver, android.net.Uri);
-    method public default void setNotificationUris(@NonNull android.content.ContentResolver, @NonNull java.util.List<android.net.Uri>);
-    method public void unregisterContentObserver(android.database.ContentObserver);
-    method public void unregisterDataSetObserver(android.database.DataSetObserver);
-    field public static final int FIELD_TYPE_BLOB = 4; // 0x4
-    field public static final int FIELD_TYPE_FLOAT = 2; // 0x2
-    field public static final int FIELD_TYPE_INTEGER = 1; // 0x1
-    field public static final int FIELD_TYPE_NULL = 0; // 0x0
-    field public static final int FIELD_TYPE_STRING = 3; // 0x3
-  }
-
-  public class CursorIndexOutOfBoundsException extends java.lang.IndexOutOfBoundsException {
-    ctor public CursorIndexOutOfBoundsException(int, int);
-    ctor public CursorIndexOutOfBoundsException(String);
-  }
-
-  public final class CursorJoiner implements java.lang.Iterable<android.database.CursorJoiner.Result> java.util.Iterator<android.database.CursorJoiner.Result> {
-    ctor public CursorJoiner(android.database.Cursor, String[], android.database.Cursor, String[]);
-    method public boolean hasNext();
-    method public java.util.Iterator<android.database.CursorJoiner.Result> iterator();
-    method public android.database.CursorJoiner.Result next();
-  }
-
-  public enum CursorJoiner.Result {
-    enum_constant public static final android.database.CursorJoiner.Result BOTH;
-    enum_constant public static final android.database.CursorJoiner.Result LEFT;
-    enum_constant public static final android.database.CursorJoiner.Result RIGHT;
-  }
-
-  public class CursorWindow extends android.database.sqlite.SQLiteClosable implements android.os.Parcelable {
-    ctor public CursorWindow(String);
-    ctor public CursorWindow(String, long);
-    ctor @Deprecated public CursorWindow(boolean);
-    method public boolean allocRow();
-    method public void clear();
-    method public void copyStringToBuffer(int, int, android.database.CharArrayBuffer);
-    method public int describeContents();
-    method public void freeLastRow();
-    method public byte[] getBlob(int, int);
-    method public double getDouble(int, int);
-    method public float getFloat(int, int);
-    method public int getInt(int, int);
-    method public long getLong(int, int);
-    method public int getNumRows();
-    method public short getShort(int, int);
-    method public int getStartPosition();
-    method public String getString(int, int);
-    method public int getType(int, int);
-    method @Deprecated public boolean isBlob(int, int);
-    method @Deprecated public boolean isFloat(int, int);
-    method @Deprecated public boolean isLong(int, int);
-    method @Deprecated public boolean isNull(int, int);
-    method @Deprecated public boolean isString(int, int);
-    method public static android.database.CursorWindow newFromParcel(android.os.Parcel);
-    method protected void onAllReferencesReleased();
-    method public boolean putBlob(byte[], int, int);
-    method public boolean putDouble(double, int, int);
-    method public boolean putLong(long, int, int);
-    method public boolean putNull(int, int);
-    method public boolean putString(String, int, int);
-    method public boolean setNumColumns(int);
-    method public void setStartPosition(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.database.CursorWindow> CREATOR;
-  }
-
-  public class CursorWrapper implements android.database.Cursor {
-    ctor public CursorWrapper(android.database.Cursor);
-    method public void close();
-    method public void copyStringToBuffer(int, android.database.CharArrayBuffer);
-    method @Deprecated public void deactivate();
-    method public byte[] getBlob(int);
-    method public int getColumnCount();
-    method public int getColumnIndex(String);
-    method public int getColumnIndexOrThrow(String) throws java.lang.IllegalArgumentException;
-    method public String getColumnName(int);
-    method public String[] getColumnNames();
-    method public int getCount();
-    method public double getDouble(int);
-    method public android.os.Bundle getExtras();
-    method public float getFloat(int);
-    method public int getInt(int);
-    method public long getLong(int);
-    method public android.net.Uri getNotificationUri();
-    method public int getPosition();
-    method public short getShort(int);
-    method public String getString(int);
-    method public int getType(int);
-    method public boolean getWantsAllOnMoveCalls();
-    method public android.database.Cursor getWrappedCursor();
-    method public boolean isAfterLast();
-    method public boolean isBeforeFirst();
-    method public boolean isClosed();
-    method public boolean isFirst();
-    method public boolean isLast();
-    method public boolean isNull(int);
-    method public boolean move(int);
-    method public boolean moveToFirst();
-    method public boolean moveToLast();
-    method public boolean moveToNext();
-    method public boolean moveToPosition(int);
-    method public boolean moveToPrevious();
-    method public void registerContentObserver(android.database.ContentObserver);
-    method public void registerDataSetObserver(android.database.DataSetObserver);
-    method @Deprecated public boolean requery();
-    method public android.os.Bundle respond(android.os.Bundle);
-    method public void setExtras(android.os.Bundle);
-    method public void setNotificationUri(android.content.ContentResolver, android.net.Uri);
-    method public void unregisterContentObserver(android.database.ContentObserver);
-    method public void unregisterDataSetObserver(android.database.DataSetObserver);
-  }
-
-  public class DataSetObservable extends android.database.Observable<android.database.DataSetObserver> {
-    ctor public DataSetObservable();
-    method public void notifyChanged();
-    method public void notifyInvalidated();
-  }
-
-  public abstract class DataSetObserver {
-    ctor public DataSetObserver();
-    method public void onChanged();
-    method public void onInvalidated();
-  }
-
-  public interface DatabaseErrorHandler {
-    method public void onCorruption(android.database.sqlite.SQLiteDatabase);
-  }
-
-  public class DatabaseUtils {
-    ctor public DatabaseUtils();
-    method public static void appendEscapedSQLString(StringBuilder, String);
-    method public static String[] appendSelectionArgs(String[], String[]);
-    method public static final void appendValueToSql(StringBuilder, Object);
-    method public static void bindObjectToProgram(android.database.sqlite.SQLiteProgram, int, Object);
-    method public static android.os.ParcelFileDescriptor blobFileDescriptorForQuery(android.database.sqlite.SQLiteDatabase, String, String[]);
-    method public static android.os.ParcelFileDescriptor blobFileDescriptorForQuery(android.database.sqlite.SQLiteStatement, String[]);
-    method public static String concatenateWhere(String, String);
-    method public static void createDbFromSqlStatements(android.content.Context, String, int, String);
-    method public static void cursorDoubleToContentValues(android.database.Cursor, String, android.content.ContentValues, String);
-    method public static void cursorDoubleToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, String);
-    method public static void cursorDoubleToCursorValues(android.database.Cursor, String, android.content.ContentValues);
-    method public static void cursorFloatToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, String);
-    method public static void cursorIntToContentValues(android.database.Cursor, String, android.content.ContentValues);
-    method public static void cursorIntToContentValues(android.database.Cursor, String, android.content.ContentValues, String);
-    method public static void cursorIntToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, String);
-    method public static void cursorLongToContentValues(android.database.Cursor, String, android.content.ContentValues);
-    method public static void cursorLongToContentValues(android.database.Cursor, String, android.content.ContentValues, String);
-    method public static void cursorLongToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, String);
-    method public static void cursorRowToContentValues(android.database.Cursor, android.content.ContentValues);
-    method public static void cursorShortToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, String);
-    method public static void cursorStringToContentValues(android.database.Cursor, String, android.content.ContentValues);
-    method public static void cursorStringToContentValues(android.database.Cursor, String, android.content.ContentValues, String);
-    method public static void cursorStringToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, String);
-    method public static void cursorStringToInsertHelper(android.database.Cursor, String, android.database.DatabaseUtils.InsertHelper, int);
-    method public static void dumpCurrentRow(android.database.Cursor);
-    method public static void dumpCurrentRow(android.database.Cursor, java.io.PrintStream);
-    method public static void dumpCurrentRow(android.database.Cursor, StringBuilder);
-    method public static String dumpCurrentRowToString(android.database.Cursor);
-    method public static void dumpCursor(android.database.Cursor);
-    method public static void dumpCursor(android.database.Cursor, java.io.PrintStream);
-    method public static void dumpCursor(android.database.Cursor, StringBuilder);
-    method public static String dumpCursorToString(android.database.Cursor);
-    method public static String getCollationKey(String);
-    method public static String getHexCollationKey(String);
-    method public static int getSqlStatementType(String);
-    method public static long longForQuery(android.database.sqlite.SQLiteDatabase, String, String[]);
-    method public static long longForQuery(android.database.sqlite.SQLiteStatement, String[]);
-    method public static long queryNumEntries(android.database.sqlite.SQLiteDatabase, String);
-    method public static long queryNumEntries(android.database.sqlite.SQLiteDatabase, String, String);
-    method public static long queryNumEntries(android.database.sqlite.SQLiteDatabase, String, String, String[]);
-    method public static final void readExceptionFromParcel(android.os.Parcel);
-    method public static void readExceptionWithFileNotFoundExceptionFromParcel(android.os.Parcel) throws java.io.FileNotFoundException;
-    method public static void readExceptionWithOperationApplicationExceptionFromParcel(android.os.Parcel) throws android.content.OperationApplicationException;
-    method public static String sqlEscapeString(String);
-    method public static String stringForQuery(android.database.sqlite.SQLiteDatabase, String, String[]);
-    method public static String stringForQuery(android.database.sqlite.SQLiteStatement, String[]);
-    method public static final void writeExceptionToParcel(android.os.Parcel, Exception);
-    field public static final int STATEMENT_ABORT = 6; // 0x6
-    field public static final int STATEMENT_ATTACH = 3; // 0x3
-    field public static final int STATEMENT_BEGIN = 4; // 0x4
-    field public static final int STATEMENT_COMMIT = 5; // 0x5
-    field public static final int STATEMENT_DDL = 8; // 0x8
-    field public static final int STATEMENT_OTHER = 99; // 0x63
-    field public static final int STATEMENT_PRAGMA = 7; // 0x7
-    field public static final int STATEMENT_SELECT = 1; // 0x1
-    field public static final int STATEMENT_UNPREPARED = 9; // 0x9
-    field public static final int STATEMENT_UPDATE = 2; // 0x2
-  }
-
-  @Deprecated public static class DatabaseUtils.InsertHelper {
-    ctor @Deprecated public DatabaseUtils.InsertHelper(android.database.sqlite.SQLiteDatabase, String);
-    method @Deprecated public void bind(int, double);
-    method @Deprecated public void bind(int, float);
-    method @Deprecated public void bind(int, long);
-    method @Deprecated public void bind(int, int);
-    method @Deprecated public void bind(int, boolean);
-    method @Deprecated public void bind(int, byte[]);
-    method @Deprecated public void bind(int, String);
-    method @Deprecated public void bindNull(int);
-    method @Deprecated public void close();
-    method @Deprecated public long execute();
-    method @Deprecated public int getColumnIndex(String);
-    method @Deprecated public long insert(android.content.ContentValues);
-    method @Deprecated public void prepareForInsert();
-    method @Deprecated public void prepareForReplace();
-    method @Deprecated public long replace(android.content.ContentValues);
-  }
-
-  public final class DefaultDatabaseErrorHandler implements android.database.DatabaseErrorHandler {
-    ctor public DefaultDatabaseErrorHandler();
-    method public void onCorruption(android.database.sqlite.SQLiteDatabase);
-  }
-
-  public class MatrixCursor extends android.database.AbstractCursor {
-    ctor public MatrixCursor(String[], int);
-    ctor public MatrixCursor(String[]);
-    method public void addRow(Object[]);
-    method public void addRow(Iterable<?>);
-    method public String[] getColumnNames();
-    method public int getCount();
-    method public double getDouble(int);
-    method public float getFloat(int);
-    method public int getInt(int);
-    method public long getLong(int);
-    method public short getShort(int);
-    method public String getString(int);
-    method public boolean isNull(int);
-    method public android.database.MatrixCursor.RowBuilder newRow();
-  }
-
-  public class MatrixCursor.RowBuilder {
-    method public android.database.MatrixCursor.RowBuilder add(Object);
-    method public android.database.MatrixCursor.RowBuilder add(String, Object);
-  }
-
-  public class MergeCursor extends android.database.AbstractCursor {
-    ctor public MergeCursor(android.database.Cursor[]);
-    method public String[] getColumnNames();
-    method public int getCount();
-    method public double getDouble(int);
-    method public float getFloat(int);
-    method public int getInt(int);
-    method public long getLong(int);
-    method public short getShort(int);
-    method public String getString(int);
-    method public boolean isNull(int);
-  }
-
-  public abstract class Observable<T> {
-    ctor public Observable();
-    method public void registerObserver(T);
-    method public void unregisterAll();
-    method public void unregisterObserver(T);
-    field protected final java.util.ArrayList<T> mObservers;
-  }
-
-  public class SQLException extends java.lang.RuntimeException {
-    ctor public SQLException();
-    ctor public SQLException(String);
-    ctor public SQLException(String, Throwable);
-  }
-
-  public class StaleDataException extends java.lang.RuntimeException {
-    ctor public StaleDataException();
-    ctor public StaleDataException(String);
-  }
-
-}
-
-package android.database.sqlite {
-
-  public class SQLiteAbortException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteAbortException();
-    ctor public SQLiteAbortException(String);
-  }
-
-  public class SQLiteAccessPermException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteAccessPermException();
-    ctor public SQLiteAccessPermException(String);
-  }
-
-  public class SQLiteBindOrColumnIndexOutOfRangeException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteBindOrColumnIndexOutOfRangeException();
-    ctor public SQLiteBindOrColumnIndexOutOfRangeException(String);
-  }
-
-  public class SQLiteBlobTooBigException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteBlobTooBigException();
-    ctor public SQLiteBlobTooBigException(String);
-  }
-
-  public class SQLiteCantOpenDatabaseException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteCantOpenDatabaseException();
-    ctor public SQLiteCantOpenDatabaseException(String);
-  }
-
-  public abstract class SQLiteClosable implements java.io.Closeable {
-    ctor public SQLiteClosable();
-    method public void acquireReference();
-    method public void close();
-    method protected abstract void onAllReferencesReleased();
-    method @Deprecated protected void onAllReferencesReleasedFromContainer();
-    method public void releaseReference();
-    method @Deprecated public void releaseReferenceFromContainer();
-  }
-
-  public class SQLiteConstraintException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteConstraintException();
-    ctor public SQLiteConstraintException(String);
-  }
-
-  public class SQLiteCursor extends android.database.AbstractWindowedCursor {
-    ctor @Deprecated public SQLiteCursor(android.database.sqlite.SQLiteDatabase, android.database.sqlite.SQLiteCursorDriver, String, android.database.sqlite.SQLiteQuery);
-    ctor public SQLiteCursor(android.database.sqlite.SQLiteCursorDriver, String, android.database.sqlite.SQLiteQuery);
-    method public String[] getColumnNames();
-    method public int getCount();
-    method public android.database.sqlite.SQLiteDatabase getDatabase();
-    method public void setFillWindowForwardOnly(boolean);
-    method public void setSelectionArguments(String[]);
-  }
-
-  public interface SQLiteCursorDriver {
-    method public void cursorClosed();
-    method public void cursorDeactivated();
-    method public void cursorRequeried(android.database.Cursor);
-    method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase.CursorFactory, String[]);
-    method public void setBindArguments(String[]);
-  }
-
-  public final class SQLiteDatabase extends android.database.sqlite.SQLiteClosable {
-    method public void beginTransaction();
-    method public void beginTransactionNonExclusive();
-    method public void beginTransactionWithListener(android.database.sqlite.SQLiteTransactionListener);
-    method public void beginTransactionWithListenerNonExclusive(android.database.sqlite.SQLiteTransactionListener);
-    method public android.database.sqlite.SQLiteStatement compileStatement(String) throws android.database.SQLException;
-    method @NonNull public static android.database.sqlite.SQLiteDatabase create(@Nullable android.database.sqlite.SQLiteDatabase.CursorFactory);
-    method @NonNull public static android.database.sqlite.SQLiteDatabase createInMemory(@NonNull android.database.sqlite.SQLiteDatabase.OpenParams);
-    method public int delete(String, String, String[]);
-    method public static boolean deleteDatabase(@NonNull java.io.File);
-    method public void disableWriteAheadLogging();
-    method public boolean enableWriteAheadLogging();
-    method public void endTransaction();
-    method public void execPerConnectionSQL(@NonNull String, @Nullable Object[]) throws android.database.SQLException;
-    method public void execSQL(String) throws android.database.SQLException;
-    method public void execSQL(String, Object[]) throws android.database.SQLException;
-    method public static String findEditTable(String);
-    method public java.util.List<android.util.Pair<java.lang.String,java.lang.String>> getAttachedDbs();
-    method public long getMaximumSize();
-    method public long getPageSize();
-    method public String getPath();
-    method @Deprecated public java.util.Map<java.lang.String,java.lang.String> getSyncedTables();
-    method public int getVersion();
-    method public boolean inTransaction();
-    method public long insert(String, String, android.content.ContentValues);
-    method public long insertOrThrow(String, String, android.content.ContentValues) throws android.database.SQLException;
-    method public long insertWithOnConflict(String, String, android.content.ContentValues, int);
-    method public boolean isDatabaseIntegrityOk();
-    method public boolean isDbLockedByCurrentThread();
-    method @Deprecated public boolean isDbLockedByOtherThreads();
-    method public boolean isOpen();
-    method public boolean isReadOnly();
-    method public boolean isWriteAheadLoggingEnabled();
-    method @Deprecated public void markTableSyncable(String, String);
-    method @Deprecated public void markTableSyncable(String, String, String);
-    method public boolean needUpgrade(int);
-    method protected void onAllReferencesReleased();
-    method public static android.database.sqlite.SQLiteDatabase openDatabase(@NonNull String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, int);
-    method public static android.database.sqlite.SQLiteDatabase openDatabase(@NonNull java.io.File, @NonNull android.database.sqlite.SQLiteDatabase.OpenParams);
-    method public static android.database.sqlite.SQLiteDatabase openDatabase(@NonNull String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, int, @Nullable android.database.DatabaseErrorHandler);
-    method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(@NonNull java.io.File, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory);
-    method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(@NonNull String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory);
-    method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(@NonNull String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, @Nullable android.database.DatabaseErrorHandler);
-    method public android.database.Cursor query(boolean, String, String[], String, String[], String, String, String, String);
-    method public android.database.Cursor query(boolean, String, String[], String, String[], String, String, String, String, android.os.CancellationSignal);
-    method public android.database.Cursor query(String, String[], String, String[], String, String, String);
-    method public android.database.Cursor query(String, String[], String, String[], String, String, String, String);
-    method public android.database.Cursor queryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, boolean, String, String[], String, String[], String, String, String, String);
-    method public android.database.Cursor queryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, boolean, String, String[], String, String[], String, String, String, String, android.os.CancellationSignal);
-    method public android.database.Cursor rawQuery(String, String[]);
-    method public android.database.Cursor rawQuery(String, String[], android.os.CancellationSignal);
-    method public android.database.Cursor rawQueryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, String, String[], String);
-    method public android.database.Cursor rawQueryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, String, String[], String, android.os.CancellationSignal);
-    method public static int releaseMemory();
-    method public long replace(String, String, android.content.ContentValues);
-    method public long replaceOrThrow(String, String, android.content.ContentValues) throws android.database.SQLException;
-    method public void setCustomAggregateFunction(@NonNull String, @NonNull java.util.function.BinaryOperator<java.lang.String>) throws android.database.sqlite.SQLiteException;
-    method public void setCustomScalarFunction(@NonNull String, @NonNull java.util.function.UnaryOperator<java.lang.String>) throws android.database.sqlite.SQLiteException;
-    method public void setForeignKeyConstraintsEnabled(boolean);
-    method public void setLocale(java.util.Locale);
-    method @Deprecated public void setLockingEnabled(boolean);
-    method public void setMaxSqlCacheSize(int);
-    method public long setMaximumSize(long);
-    method public void setPageSize(long);
-    method public void setTransactionSuccessful();
-    method public void setVersion(int);
-    method public int update(String, android.content.ContentValues, String, String[]);
-    method public int updateWithOnConflict(String, android.content.ContentValues, String, String[], int);
-    method public void validateSql(@NonNull String, @Nullable android.os.CancellationSignal);
-    method @Deprecated public boolean yieldIfContended();
-    method public boolean yieldIfContendedSafely();
-    method public boolean yieldIfContendedSafely(long);
-    field public static final int CONFLICT_ABORT = 2; // 0x2
-    field public static final int CONFLICT_FAIL = 3; // 0x3
-    field public static final int CONFLICT_IGNORE = 4; // 0x4
-    field public static final int CONFLICT_NONE = 0; // 0x0
-    field public static final int CONFLICT_REPLACE = 5; // 0x5
-    field public static final int CONFLICT_ROLLBACK = 1; // 0x1
-    field public static final int CREATE_IF_NECESSARY = 268435456; // 0x10000000
-    field public static final int ENABLE_WRITE_AHEAD_LOGGING = 536870912; // 0x20000000
-    field public static final int MAX_SQL_CACHE_SIZE = 100; // 0x64
-    field public static final int NO_LOCALIZED_COLLATORS = 16; // 0x10
-    field public static final int OPEN_READONLY = 1; // 0x1
-    field public static final int OPEN_READWRITE = 0; // 0x0
-    field public static final int SQLITE_MAX_LIKE_PATTERN_LENGTH = 50000; // 0xc350
-  }
-
-  public static interface SQLiteDatabase.CursorFactory {
-    method public android.database.Cursor newCursor(android.database.sqlite.SQLiteDatabase, android.database.sqlite.SQLiteCursorDriver, String, android.database.sqlite.SQLiteQuery);
-  }
-
-  public static final class SQLiteDatabase.OpenParams {
-    method @Nullable public android.database.sqlite.SQLiteDatabase.CursorFactory getCursorFactory();
-    method @Nullable public android.database.DatabaseErrorHandler getErrorHandler();
-    method public long getIdleConnectionTimeout();
-    method @Nullable public String getJournalMode();
-    method @IntRange(from=0xffffffff) public int getLookasideSlotCount();
-    method @IntRange(from=0xffffffff) public int getLookasideSlotSize();
-    method public int getOpenFlags();
-    method @Nullable public String getSynchronousMode();
-  }
-
-  public static final class SQLiteDatabase.OpenParams.Builder {
-    ctor public SQLiteDatabase.OpenParams.Builder();
-    ctor public SQLiteDatabase.OpenParams.Builder(android.database.sqlite.SQLiteDatabase.OpenParams);
-    method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder addOpenFlags(int);
-    method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams build();
-    method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder removeOpenFlags(int);
-    method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setCursorFactory(@Nullable android.database.sqlite.SQLiteDatabase.CursorFactory);
-    method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setErrorHandler(@Nullable android.database.DatabaseErrorHandler);
-    method @Deprecated @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setIdleConnectionTimeout(@IntRange(from=0) long);
-    method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setJournalMode(@NonNull String);
-    method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setLookasideConfig(@IntRange(from=0) int, @IntRange(from=0) int);
-    method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setOpenFlags(int);
-    method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setSynchronousMode(@NonNull String);
-  }
-
-  public class SQLiteDatabaseCorruptException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteDatabaseCorruptException();
-    ctor public SQLiteDatabaseCorruptException(String);
-  }
-
-  public class SQLiteDatabaseLockedException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteDatabaseLockedException();
-    ctor public SQLiteDatabaseLockedException(String);
-  }
-
-  public class SQLiteDatatypeMismatchException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteDatatypeMismatchException();
-    ctor public SQLiteDatatypeMismatchException(String);
-  }
-
-  public class SQLiteDiskIOException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteDiskIOException();
-    ctor public SQLiteDiskIOException(String);
-  }
-
-  public class SQLiteDoneException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteDoneException();
-    ctor public SQLiteDoneException(String);
-  }
-
-  public class SQLiteException extends android.database.SQLException {
-    ctor public SQLiteException();
-    ctor public SQLiteException(String);
-    ctor public SQLiteException(String, Throwable);
-  }
-
-  public class SQLiteFullException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteFullException();
-    ctor public SQLiteFullException(String);
-  }
-
-  public class SQLiteMisuseException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteMisuseException();
-    ctor public SQLiteMisuseException(String);
-  }
-
-  public abstract class SQLiteOpenHelper implements java.lang.AutoCloseable {
-    ctor public SQLiteOpenHelper(@Nullable android.content.Context, @Nullable String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, int);
-    ctor public SQLiteOpenHelper(@Nullable android.content.Context, @Nullable String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, int, @Nullable android.database.DatabaseErrorHandler);
-    ctor public SQLiteOpenHelper(@Nullable android.content.Context, @Nullable String, int, @NonNull android.database.sqlite.SQLiteDatabase.OpenParams);
-    method public void close();
-    method public String getDatabaseName();
-    method public android.database.sqlite.SQLiteDatabase getReadableDatabase();
-    method public android.database.sqlite.SQLiteDatabase getWritableDatabase();
-    method public void onConfigure(android.database.sqlite.SQLiteDatabase);
-    method public abstract void onCreate(android.database.sqlite.SQLiteDatabase);
-    method public void onDowngrade(android.database.sqlite.SQLiteDatabase, int, int);
-    method public void onOpen(android.database.sqlite.SQLiteDatabase);
-    method public abstract void onUpgrade(android.database.sqlite.SQLiteDatabase, int, int);
-    method @Deprecated public void setIdleConnectionTimeout(@IntRange(from=0) long);
-    method public void setLookasideConfig(@IntRange(from=0) int, @IntRange(from=0) int);
-    method public void setOpenParams(@NonNull android.database.sqlite.SQLiteDatabase.OpenParams);
-    method public void setWriteAheadLoggingEnabled(boolean);
-  }
-
-  public class SQLiteOutOfMemoryException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteOutOfMemoryException();
-    ctor public SQLiteOutOfMemoryException(String);
-  }
-
-  public abstract class SQLiteProgram extends android.database.sqlite.SQLiteClosable {
-    method public void bindAllArgsAsStrings(String[]);
-    method public void bindBlob(int, byte[]);
-    method public void bindDouble(int, double);
-    method public void bindLong(int, long);
-    method public void bindNull(int);
-    method public void bindString(int, String);
-    method public void clearBindings();
-    method @Deprecated public final int getUniqueId();
-    method protected void onAllReferencesReleased();
-  }
-
-  public final class SQLiteQuery extends android.database.sqlite.SQLiteProgram {
-  }
-
-  public class SQLiteQueryBuilder {
-    ctor public SQLiteQueryBuilder();
-    method public static void appendColumns(StringBuilder, String[]);
-    method public void appendWhere(@NonNull CharSequence);
-    method public void appendWhereEscapeString(@NonNull String);
-    method public void appendWhereStandalone(@NonNull CharSequence);
-    method public String buildQuery(String[], String, String, String, String, String);
-    method @Deprecated public String buildQuery(String[], String, String[], String, String, String, String);
-    method public static String buildQueryString(boolean, String, String[], String, String, String, String, String);
-    method public String buildUnionQuery(String[], String, String);
-    method public String buildUnionSubQuery(String, String[], java.util.Set<java.lang.String>, int, String, String, String, String);
-    method @Deprecated public String buildUnionSubQuery(String, String[], java.util.Set<java.lang.String>, int, String, String, String[], String, String);
-    method public int delete(@NonNull android.database.sqlite.SQLiteDatabase, @Nullable String, @Nullable String[]);
-    method @Nullable public android.database.sqlite.SQLiteDatabase.CursorFactory getCursorFactory();
-    method @Nullable public java.util.Collection<java.util.regex.Pattern> getProjectionGreylist();
-    method @Nullable public java.util.Map<java.lang.String,java.lang.String> getProjectionMap();
-    method @Nullable public String getTables();
-    method public long insert(@NonNull android.database.sqlite.SQLiteDatabase, @NonNull android.content.ContentValues);
-    method public boolean isDistinct();
-    method public boolean isStrict();
-    method public boolean isStrictColumns();
-    method public boolean isStrictGrammar();
-    method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase, String[], String, String[], String, String, String);
-    method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase, String[], String, String[], String, String, String, String);
-    method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase, String[], String, String[], String, String, String, String, android.os.CancellationSignal);
-    method public void setCursorFactory(@Nullable android.database.sqlite.SQLiteDatabase.CursorFactory);
-    method public void setDistinct(boolean);
-    method public void setProjectionGreylist(@Nullable java.util.Collection<java.util.regex.Pattern>);
-    method public void setProjectionMap(@Nullable java.util.Map<java.lang.String,java.lang.String>);
-    method public void setStrict(boolean);
-    method public void setStrictColumns(boolean);
-    method public void setStrictGrammar(boolean);
-    method public void setTables(@Nullable String);
-    method public int update(@NonNull android.database.sqlite.SQLiteDatabase, @NonNull android.content.ContentValues, @Nullable String, @Nullable String[]);
-  }
-
-  public class SQLiteReadOnlyDatabaseException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteReadOnlyDatabaseException();
-    ctor public SQLiteReadOnlyDatabaseException(String);
-  }
-
-  public final class SQLiteStatement extends android.database.sqlite.SQLiteProgram {
-    method public void execute();
-    method public long executeInsert();
-    method public int executeUpdateDelete();
-    method public android.os.ParcelFileDescriptor simpleQueryForBlobFileDescriptor();
-    method public long simpleQueryForLong();
-    method public String simpleQueryForString();
-  }
-
-  public class SQLiteTableLockedException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteTableLockedException();
-    ctor public SQLiteTableLockedException(String);
-  }
-
-  public interface SQLiteTransactionListener {
-    method public void onBegin();
-    method public void onCommit();
-    method public void onRollback();
-  }
-
-}
-
-package android.drm {
-
-  @Deprecated public class DrmConvertedStatus {
-    ctor @Deprecated public DrmConvertedStatus(int, byte[], int);
-    field @Deprecated public static final int STATUS_ERROR = 3; // 0x3
-    field @Deprecated public static final int STATUS_INPUTDATA_ERROR = 2; // 0x2
-    field @Deprecated public static final int STATUS_OK = 1; // 0x1
-    field @Deprecated public final byte[] convertedData;
-    field @Deprecated public final int offset;
-    field @Deprecated public final int statusCode;
-  }
-
-  @Deprecated public class DrmErrorEvent extends android.drm.DrmEvent {
-    ctor @Deprecated public DrmErrorEvent(int, int, String);
-    ctor @Deprecated public DrmErrorEvent(int, int, String, java.util.HashMap<java.lang.String,java.lang.Object>);
-    field @Deprecated public static final int TYPE_ACQUIRE_DRM_INFO_FAILED = 2008; // 0x7d8
-    field @Deprecated public static final int TYPE_NOT_SUPPORTED = 2003; // 0x7d3
-    field @Deprecated public static final int TYPE_NO_INTERNET_CONNECTION = 2005; // 0x7d5
-    field @Deprecated public static final int TYPE_OUT_OF_MEMORY = 2004; // 0x7d4
-    field @Deprecated public static final int TYPE_PROCESS_DRM_INFO_FAILED = 2006; // 0x7d6
-    field @Deprecated public static final int TYPE_REMOVE_ALL_RIGHTS_FAILED = 2007; // 0x7d7
-    field @Deprecated public static final int TYPE_RIGHTS_NOT_INSTALLED = 2001; // 0x7d1
-    field @Deprecated public static final int TYPE_RIGHTS_RENEWAL_NOT_ALLOWED = 2002; // 0x7d2
-  }
-
-  @Deprecated public class DrmEvent {
-    ctor @Deprecated protected DrmEvent(int, int, String, java.util.HashMap<java.lang.String,java.lang.Object>);
-    ctor @Deprecated protected DrmEvent(int, int, String);
-    method @Deprecated public Object getAttribute(String);
-    method @Deprecated public String getMessage();
-    method @Deprecated public int getType();
-    method @Deprecated public int getUniqueId();
-    field @Deprecated public static final String DRM_INFO_OBJECT = "drm_info_object";
-    field @Deprecated public static final String DRM_INFO_STATUS_OBJECT = "drm_info_status_object";
-    field @Deprecated public static final int TYPE_ALL_RIGHTS_REMOVED = 1001; // 0x3e9
-    field @Deprecated public static final int TYPE_DRM_INFO_PROCESSED = 1002; // 0x3ea
-  }
-
-  @Deprecated public class DrmInfo {
-    ctor @Deprecated public DrmInfo(int, byte[], String);
-    ctor @Deprecated public DrmInfo(int, String, String);
-    method @Deprecated public Object get(String);
-    method @Deprecated public byte[] getData();
-    method @Deprecated public int getInfoType();
-    method @Deprecated public String getMimeType();
-    method @Deprecated public java.util.Iterator<java.lang.Object> iterator();
-    method @Deprecated public java.util.Iterator<java.lang.String> keyIterator();
-    method @Deprecated public void put(String, Object);
-  }
-
-  @Deprecated public class DrmInfoEvent extends android.drm.DrmEvent {
-    ctor @Deprecated public DrmInfoEvent(int, int, String);
-    ctor @Deprecated public DrmInfoEvent(int, int, String, java.util.HashMap<java.lang.String,java.lang.Object>);
-    field @Deprecated public static final int TYPE_ACCOUNT_ALREADY_REGISTERED = 5; // 0x5
-    field @Deprecated public static final int TYPE_ALREADY_REGISTERED_BY_ANOTHER_ACCOUNT = 1; // 0x1
-    field @Deprecated public static final int TYPE_REMOVE_RIGHTS = 2; // 0x2
-    field @Deprecated public static final int TYPE_RIGHTS_INSTALLED = 3; // 0x3
-    field @Deprecated public static final int TYPE_RIGHTS_REMOVED = 6; // 0x6
-    field @Deprecated public static final int TYPE_WAIT_FOR_RIGHTS = 4; // 0x4
-  }
-
-  @Deprecated public class DrmInfoRequest {
-    ctor @Deprecated public DrmInfoRequest(int, String);
-    method @Deprecated public Object get(String);
-    method @Deprecated public int getInfoType();
-    method @Deprecated public String getMimeType();
-    method @Deprecated public java.util.Iterator<java.lang.Object> iterator();
-    method @Deprecated public java.util.Iterator<java.lang.String> keyIterator();
-    method @Deprecated public void put(String, Object);
-    field @Deprecated public static final String ACCOUNT_ID = "account_id";
-    field @Deprecated public static final String SUBSCRIPTION_ID = "subscription_id";
-    field @Deprecated public static final int TYPE_REGISTRATION_INFO = 1; // 0x1
-    field @Deprecated public static final int TYPE_RIGHTS_ACQUISITION_INFO = 3; // 0x3
-    field @Deprecated public static final int TYPE_RIGHTS_ACQUISITION_PROGRESS_INFO = 4; // 0x4
-    field @Deprecated public static final int TYPE_UNREGISTRATION_INFO = 2; // 0x2
-  }
-
-  @Deprecated public class DrmInfoStatus {
-    ctor @Deprecated public DrmInfoStatus(int, int, android.drm.ProcessedData, String);
-    field @Deprecated public static final int STATUS_ERROR = 2; // 0x2
-    field @Deprecated public static final int STATUS_OK = 1; // 0x1
-    field @Deprecated public final android.drm.ProcessedData data;
-    field @Deprecated public final int infoType;
-    field @Deprecated public final String mimeType;
-    field @Deprecated public final int statusCode;
-  }
-
-  @Deprecated public class DrmManagerClient implements java.lang.AutoCloseable {
-    ctor @Deprecated public DrmManagerClient(android.content.Context);
-    method @Deprecated public android.drm.DrmInfo acquireDrmInfo(android.drm.DrmInfoRequest);
-    method @Deprecated public int acquireRights(android.drm.DrmInfoRequest);
-    method @Deprecated public boolean canHandle(String, String);
-    method @Deprecated public boolean canHandle(android.net.Uri, String);
-    method @Deprecated public int checkRightsStatus(String);
-    method @Deprecated public int checkRightsStatus(android.net.Uri);
-    method @Deprecated public int checkRightsStatus(String, int);
-    method @Deprecated public int checkRightsStatus(android.net.Uri, int);
-    method @Deprecated public void close();
-    method @Deprecated public android.drm.DrmConvertedStatus closeConvertSession(int);
-    method @Deprecated public android.drm.DrmConvertedStatus convertData(int, byte[]);
-    method @Deprecated public String[] getAvailableDrmEngines();
-    method @Deprecated @NonNull public java.util.Collection<android.drm.DrmSupportInfo> getAvailableDrmSupportInfo();
-    method @Deprecated public android.content.ContentValues getConstraints(String, int);
-    method @Deprecated public android.content.ContentValues getConstraints(android.net.Uri, int);
-    method @Deprecated public int getDrmObjectType(String, String);
-    method @Deprecated public int getDrmObjectType(android.net.Uri, String);
-    method @Deprecated public android.content.ContentValues getMetadata(String);
-    method @Deprecated public android.content.ContentValues getMetadata(android.net.Uri);
-    method @Deprecated public String getOriginalMimeType(String);
-    method @Deprecated public String getOriginalMimeType(android.net.Uri);
-    method @Deprecated public int openConvertSession(String);
-    method @Deprecated public int processDrmInfo(android.drm.DrmInfo);
-    method @Deprecated public void release();
-    method @Deprecated public int removeAllRights();
-    method @Deprecated public int removeRights(String);
-    method @Deprecated public int removeRights(android.net.Uri);
-    method @Deprecated public int saveRights(android.drm.DrmRights, String, String) throws java.io.IOException;
-    method @Deprecated public void setOnErrorListener(android.drm.DrmManagerClient.OnErrorListener);
-    method @Deprecated public void setOnEventListener(android.drm.DrmManagerClient.OnEventListener);
-    method @Deprecated public void setOnInfoListener(android.drm.DrmManagerClient.OnInfoListener);
-    field @Deprecated public static final int ERROR_NONE = 0; // 0x0
-    field @Deprecated public static final int ERROR_UNKNOWN = -2000; // 0xfffff830
-  }
-
-  @Deprecated public static interface DrmManagerClient.OnErrorListener {
-    method @Deprecated public void onError(android.drm.DrmManagerClient, android.drm.DrmErrorEvent);
-  }
-
-  @Deprecated public static interface DrmManagerClient.OnEventListener {
-    method @Deprecated public void onEvent(android.drm.DrmManagerClient, android.drm.DrmEvent);
-  }
-
-  @Deprecated public static interface DrmManagerClient.OnInfoListener {
-    method @Deprecated public void onInfo(android.drm.DrmManagerClient, android.drm.DrmInfoEvent);
-  }
-
-  @Deprecated public class DrmRights {
-    ctor @Deprecated public DrmRights(String, String);
-    ctor @Deprecated public DrmRights(String, String, String);
-    ctor @Deprecated public DrmRights(String, String, String, String);
-    ctor @Deprecated public DrmRights(java.io.File, String);
-    ctor @Deprecated public DrmRights(android.drm.ProcessedData, String);
-    method @Deprecated public String getAccountId();
-    method @Deprecated public byte[] getData();
-    method @Deprecated public String getMimeType();
-    method @Deprecated public String getSubscriptionId();
-  }
-
-  @Deprecated public class DrmStore {
-    ctor @Deprecated public DrmStore();
-  }
-
-  @Deprecated public static class DrmStore.Action {
-    ctor @Deprecated public DrmStore.Action();
-    field @Deprecated public static final int DEFAULT = 0; // 0x0
-    field @Deprecated public static final int DISPLAY = 7; // 0x7
-    field @Deprecated public static final int EXECUTE = 6; // 0x6
-    field @Deprecated public static final int OUTPUT = 4; // 0x4
-    field @Deprecated public static final int PLAY = 1; // 0x1
-    field @Deprecated public static final int PREVIEW = 5; // 0x5
-    field @Deprecated public static final int RINGTONE = 2; // 0x2
-    field @Deprecated public static final int TRANSFER = 3; // 0x3
-  }
-
-  @Deprecated public static interface DrmStore.ConstraintsColumns {
-    field @Deprecated public static final String EXTENDED_METADATA = "extended_metadata";
-    field @Deprecated public static final String LICENSE_AVAILABLE_TIME = "license_available_time";
-    field @Deprecated public static final String LICENSE_EXPIRY_TIME = "license_expiry_time";
-    field @Deprecated public static final String LICENSE_START_TIME = "license_start_time";
-    field @Deprecated public static final String MAX_REPEAT_COUNT = "max_repeat_count";
-    field @Deprecated public static final String REMAINING_REPEAT_COUNT = "remaining_repeat_count";
-  }
-
-  @Deprecated public static class DrmStore.DrmObjectType {
-    ctor @Deprecated public DrmStore.DrmObjectType();
-    field @Deprecated public static final int CONTENT = 1; // 0x1
-    field @Deprecated public static final int RIGHTS_OBJECT = 2; // 0x2
-    field @Deprecated public static final int TRIGGER_OBJECT = 3; // 0x3
-    field @Deprecated public static final int UNKNOWN = 0; // 0x0
-  }
-
-  @Deprecated public static class DrmStore.Playback {
-    ctor @Deprecated public DrmStore.Playback();
-    field @Deprecated public static final int PAUSE = 2; // 0x2
-    field @Deprecated public static final int RESUME = 3; // 0x3
-    field @Deprecated public static final int START = 0; // 0x0
-    field @Deprecated public static final int STOP = 1; // 0x1
-  }
-
-  @Deprecated public static class DrmStore.RightsStatus {
-    ctor @Deprecated public DrmStore.RightsStatus();
-    field @Deprecated public static final int RIGHTS_EXPIRED = 2; // 0x2
-    field @Deprecated public static final int RIGHTS_INVALID = 1; // 0x1
-    field @Deprecated public static final int RIGHTS_NOT_ACQUIRED = 3; // 0x3
-    field @Deprecated public static final int RIGHTS_VALID = 0; // 0x0
-  }
-
-  @Deprecated public class DrmSupportInfo {
-    ctor @Deprecated public DrmSupportInfo();
-    method @Deprecated public void addFileSuffix(String);
-    method @Deprecated public void addMimeType(String);
-    method @Deprecated public String getDescriprition();
-    method @Deprecated public String getDescription();
-    method @Deprecated public java.util.Iterator<java.lang.String> getFileSuffixIterator();
-    method @Deprecated public java.util.Iterator<java.lang.String> getMimeTypeIterator();
-    method @Deprecated public void setDescription(String);
-  }
-
-  @Deprecated public class DrmUtils {
-    ctor @Deprecated public DrmUtils();
-    method @Deprecated public static android.drm.DrmUtils.ExtendedMetadataParser getExtendedMetadataParser(byte[]);
-  }
-
-  @Deprecated public static class DrmUtils.ExtendedMetadataParser {
-    method @Deprecated public String get(String);
-    method @Deprecated public java.util.Iterator<java.lang.String> iterator();
-    method @Deprecated public java.util.Iterator<java.lang.String> keyIterator();
-  }
-
-  @Deprecated public class ProcessedData {
-    method @Deprecated public String getAccountId();
-    method @Deprecated public byte[] getData();
-    method @Deprecated public String getSubscriptionId();
-  }
-
-}
-
-package android.gesture {
-
-  public class Gesture implements android.os.Parcelable {
-    ctor public Gesture();
-    method public void addStroke(android.gesture.GestureStroke);
-    method public Object clone();
-    method public int describeContents();
-    method public android.graphics.RectF getBoundingBox();
-    method public long getID();
-    method public float getLength();
-    method public java.util.ArrayList<android.gesture.GestureStroke> getStrokes();
-    method public int getStrokesCount();
-    method public android.graphics.Bitmap toBitmap(int, int, int, int, int);
-    method public android.graphics.Bitmap toBitmap(int, int, int, int);
-    method public android.graphics.Path toPath();
-    method public android.graphics.Path toPath(android.graphics.Path);
-    method public android.graphics.Path toPath(int, int, int, int);
-    method public android.graphics.Path toPath(android.graphics.Path, int, int, int, int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.gesture.Gesture> CREATOR;
-  }
-
-  public final class GestureLibraries {
-    method public static android.gesture.GestureLibrary fromFile(String);
-    method public static android.gesture.GestureLibrary fromFile(java.io.File);
-    method @NonNull public static android.gesture.GestureLibrary fromFileDescriptor(@NonNull android.os.ParcelFileDescriptor);
-    method public static android.gesture.GestureLibrary fromPrivateFile(android.content.Context, String);
-    method public static android.gesture.GestureLibrary fromRawResource(android.content.Context, @RawRes int);
-  }
-
-  public abstract class GestureLibrary {
-    ctor protected GestureLibrary();
-    method public void addGesture(String, android.gesture.Gesture);
-    method public java.util.Set<java.lang.String> getGestureEntries();
-    method public java.util.ArrayList<android.gesture.Gesture> getGestures(String);
-    method public int getOrientationStyle();
-    method public int getSequenceType();
-    method public boolean isReadOnly();
-    method public abstract boolean load();
-    method public java.util.ArrayList<android.gesture.Prediction> recognize(android.gesture.Gesture);
-    method public void removeEntry(String);
-    method public void removeGesture(String, android.gesture.Gesture);
-    method public abstract boolean save();
-    method public void setOrientationStyle(int);
-    method public void setSequenceType(int);
-    field protected final android.gesture.GestureStore mStore;
-  }
-
-  public class GestureOverlayView extends android.widget.FrameLayout {
-    ctor public GestureOverlayView(android.content.Context);
-    ctor public GestureOverlayView(android.content.Context, android.util.AttributeSet);
-    ctor public GestureOverlayView(android.content.Context, android.util.AttributeSet, int);
-    ctor public GestureOverlayView(android.content.Context, android.util.AttributeSet, int, int);
-    method public void addOnGestureListener(android.gesture.GestureOverlayView.OnGestureListener);
-    method public void addOnGesturePerformedListener(android.gesture.GestureOverlayView.OnGesturePerformedListener);
-    method public void addOnGesturingListener(android.gesture.GestureOverlayView.OnGesturingListener);
-    method public void cancelClearAnimation();
-    method public void cancelGesture();
-    method public void clear(boolean);
-    method public java.util.ArrayList<android.gesture.GesturePoint> getCurrentStroke();
-    method public long getFadeOffset();
-    method public android.gesture.Gesture getGesture();
-    method @ColorInt public int getGestureColor();
-    method public android.graphics.Path getGesturePath();
-    method public android.graphics.Path getGesturePath(android.graphics.Path);
-    method public float getGestureStrokeAngleThreshold();
-    method public float getGestureStrokeLengthThreshold();
-    method public float getGestureStrokeSquarenessTreshold();
-    method public int getGestureStrokeType();
-    method public float getGestureStrokeWidth();
-    method public int getOrientation();
-    method @ColorInt public int getUncertainGestureColor();
-    method public boolean isEventsInterceptionEnabled();
-    method public boolean isFadeEnabled();
-    method public boolean isGestureVisible();
-    method public boolean isGesturing();
-    method public void removeAllOnGestureListeners();
-    method public void removeAllOnGesturePerformedListeners();
-    method public void removeAllOnGesturingListeners();
-    method public void removeOnGestureListener(android.gesture.GestureOverlayView.OnGestureListener);
-    method public void removeOnGesturePerformedListener(android.gesture.GestureOverlayView.OnGesturePerformedListener);
-    method public void removeOnGesturingListener(android.gesture.GestureOverlayView.OnGesturingListener);
-    method public void setEventsInterceptionEnabled(boolean);
-    method public void setFadeEnabled(boolean);
-    method public void setFadeOffset(long);
-    method public void setGesture(android.gesture.Gesture);
-    method public void setGestureColor(@ColorInt int);
-    method public void setGestureStrokeAngleThreshold(float);
-    method public void setGestureStrokeLengthThreshold(float);
-    method public void setGestureStrokeSquarenessTreshold(float);
-    method public void setGestureStrokeType(int);
-    method public void setGestureStrokeWidth(float);
-    method public void setGestureVisible(boolean);
-    method public void setOrientation(int);
-    method public void setUncertainGestureColor(@ColorInt int);
-    field public static final int GESTURE_STROKE_TYPE_MULTIPLE = 1; // 0x1
-    field public static final int GESTURE_STROKE_TYPE_SINGLE = 0; // 0x0
-    field public static final int ORIENTATION_HORIZONTAL = 0; // 0x0
-    field public static final int ORIENTATION_VERTICAL = 1; // 0x1
-  }
-
-  public static interface GestureOverlayView.OnGestureListener {
-    method public void onGesture(android.gesture.GestureOverlayView, android.view.MotionEvent);
-    method public void onGestureCancelled(android.gesture.GestureOverlayView, android.view.MotionEvent);
-    method public void onGestureEnded(android.gesture.GestureOverlayView, android.view.MotionEvent);
-    method public void onGestureStarted(android.gesture.GestureOverlayView, android.view.MotionEvent);
-  }
-
-  public static interface GestureOverlayView.OnGesturePerformedListener {
-    method public void onGesturePerformed(android.gesture.GestureOverlayView, android.gesture.Gesture);
-  }
-
-  public static interface GestureOverlayView.OnGesturingListener {
-    method public void onGesturingEnded(android.gesture.GestureOverlayView);
-    method public void onGesturingStarted(android.gesture.GestureOverlayView);
-  }
-
-  public class GesturePoint {
-    ctor public GesturePoint(float, float, long);
-    method public Object clone();
-    field public final long timestamp;
-    field public final float x;
-    field public final float y;
-  }
-
-  public class GestureStore {
-    ctor public GestureStore();
-    method public void addGesture(String, android.gesture.Gesture);
-    method public java.util.Set<java.lang.String> getGestureEntries();
-    method public java.util.ArrayList<android.gesture.Gesture> getGestures(String);
-    method public int getOrientationStyle();
-    method public int getSequenceType();
-    method public boolean hasChanged();
-    method public void load(java.io.InputStream) throws java.io.IOException;
-    method public void load(java.io.InputStream, boolean) throws java.io.IOException;
-    method public java.util.ArrayList<android.gesture.Prediction> recognize(android.gesture.Gesture);
-    method public void removeEntry(String);
-    method public void removeGesture(String, android.gesture.Gesture);
-    method public void save(java.io.OutputStream) throws java.io.IOException;
-    method public void save(java.io.OutputStream, boolean) throws java.io.IOException;
-    method public void setOrientationStyle(int);
-    method public void setSequenceType(int);
-    field public static final int ORIENTATION_INVARIANT = 1; // 0x1
-    field public static final int ORIENTATION_SENSITIVE = 2; // 0x2
-    field public static final int SEQUENCE_INVARIANT = 1; // 0x1
-    field public static final int SEQUENCE_SENSITIVE = 2; // 0x2
-  }
-
-  public class GestureStroke {
-    ctor public GestureStroke(java.util.ArrayList<android.gesture.GesturePoint>);
-    method public void clearPath();
-    method public Object clone();
-    method public android.gesture.OrientedBoundingBox computeOrientedBoundingBox();
-    method public android.graphics.Path getPath();
-    method public android.graphics.Path toPath(float, float, int);
-    field public final android.graphics.RectF boundingBox;
-    field public final float length;
-    field public final float[] points;
-  }
-
-  public final class GestureUtils {
-    method public static android.gesture.OrientedBoundingBox computeOrientedBoundingBox(java.util.ArrayList<android.gesture.GesturePoint>);
-    method public static android.gesture.OrientedBoundingBox computeOrientedBoundingBox(float[]);
-    method public static float[] spatialSampling(android.gesture.Gesture, int);
-    method public static float[] spatialSampling(android.gesture.Gesture, int, boolean);
-    method public static float[] temporalSampling(android.gesture.GestureStroke, int);
-  }
-
-  public class OrientedBoundingBox {
-    field public final float centerX;
-    field public final float centerY;
-    field public final float height;
-    field public final float orientation;
-    field public final float squareness;
-    field public final float width;
-  }
-
-  public class Prediction {
-    field public final String name;
-    field public double score;
-  }
-
-}
-
-package android.graphics {
-
-  public final class Bitmap implements android.os.Parcelable {
-    method @WorkerThread public boolean compress(android.graphics.Bitmap.CompressFormat, int, java.io.OutputStream);
-    method public android.graphics.Bitmap copy(android.graphics.Bitmap.Config, boolean);
-    method public void copyPixelsFromBuffer(java.nio.Buffer);
-    method public void copyPixelsToBuffer(java.nio.Buffer);
-    method public static android.graphics.Bitmap createBitmap(@NonNull android.graphics.Bitmap);
-    method public static android.graphics.Bitmap createBitmap(@NonNull android.graphics.Bitmap, int, int, int, int);
-    method public static android.graphics.Bitmap createBitmap(@NonNull android.graphics.Bitmap, int, int, int, int, @Nullable android.graphics.Matrix, boolean);
-    method public static android.graphics.Bitmap createBitmap(int, int, @NonNull android.graphics.Bitmap.Config);
-    method public static android.graphics.Bitmap createBitmap(@Nullable android.util.DisplayMetrics, int, int, @NonNull android.graphics.Bitmap.Config);
-    method public static android.graphics.Bitmap createBitmap(int, int, @NonNull android.graphics.Bitmap.Config, boolean);
-    method public static android.graphics.Bitmap createBitmap(int, int, @NonNull android.graphics.Bitmap.Config, boolean, @NonNull android.graphics.ColorSpace);
-    method public static android.graphics.Bitmap createBitmap(@Nullable android.util.DisplayMetrics, int, int, @NonNull android.graphics.Bitmap.Config, boolean);
-    method public static android.graphics.Bitmap createBitmap(@Nullable android.util.DisplayMetrics, int, int, @NonNull android.graphics.Bitmap.Config, boolean, @NonNull android.graphics.ColorSpace);
-    method public static android.graphics.Bitmap createBitmap(@ColorInt @NonNull int[], int, int, int, int, @NonNull android.graphics.Bitmap.Config);
-    method public static android.graphics.Bitmap createBitmap(@NonNull android.util.DisplayMetrics, @ColorInt @NonNull int[], int, int, int, int, @NonNull android.graphics.Bitmap.Config);
-    method public static android.graphics.Bitmap createBitmap(@ColorInt @NonNull int[], int, int, android.graphics.Bitmap.Config);
-    method public static android.graphics.Bitmap createBitmap(@Nullable android.util.DisplayMetrics, @ColorInt @NonNull int[], int, int, @NonNull android.graphics.Bitmap.Config);
-    method @NonNull public static android.graphics.Bitmap createBitmap(@NonNull android.graphics.Picture);
-    method @NonNull public static android.graphics.Bitmap createBitmap(@NonNull android.graphics.Picture, int, int, @NonNull android.graphics.Bitmap.Config);
-    method public static android.graphics.Bitmap createScaledBitmap(@NonNull android.graphics.Bitmap, int, int, boolean);
-    method public int describeContents();
-    method public void eraseColor(@ColorInt int);
-    method public void eraseColor(@ColorLong long);
-    method @CheckResult public android.graphics.Bitmap extractAlpha();
-    method @CheckResult public android.graphics.Bitmap extractAlpha(android.graphics.Paint, int[]);
-    method public int getAllocationByteCount();
-    method public int getByteCount();
-    method @NonNull public android.graphics.Color getColor(int, int);
-    method @Nullable public android.graphics.ColorSpace getColorSpace();
-    method public android.graphics.Bitmap.Config getConfig();
-    method public int getDensity();
-    method public int getGenerationId();
-    method public int getHeight();
-    method public byte[] getNinePatchChunk();
-    method @ColorInt public int getPixel(int, int);
-    method public void getPixels(@ColorInt int[], int, int, int, int, int, int);
-    method public int getRowBytes();
-    method public int getScaledHeight(android.graphics.Canvas);
-    method public int getScaledHeight(android.util.DisplayMetrics);
-    method public int getScaledHeight(int);
-    method public int getScaledWidth(android.graphics.Canvas);
-    method public int getScaledWidth(android.util.DisplayMetrics);
-    method public int getScaledWidth(int);
-    method public int getWidth();
-    method public boolean hasAlpha();
-    method public boolean hasMipMap();
-    method public boolean isMutable();
-    method public boolean isPremultiplied();
-    method public boolean isRecycled();
-    method public void prepareToDraw();
-    method public void reconfigure(int, int, android.graphics.Bitmap.Config);
-    method public void recycle();
-    method public boolean sameAs(android.graphics.Bitmap);
-    method public void setColorSpace(@NonNull android.graphics.ColorSpace);
-    method public void setConfig(android.graphics.Bitmap.Config);
-    method public void setDensity(int);
-    method public void setHasAlpha(boolean);
-    method public void setHasMipMap(boolean);
-    method public void setHeight(int);
-    method public void setPixel(int, int, @ColorInt int);
-    method public void setPixels(@ColorInt int[], int, int, int, int, int, int);
-    method public void setPremultiplied(boolean);
-    method public void setWidth(int);
-    method @Nullable public static android.graphics.Bitmap wrapHardwareBuffer(@NonNull android.hardware.HardwareBuffer, @Nullable android.graphics.ColorSpace);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.graphics.Bitmap> CREATOR;
-    field public static final int DENSITY_NONE = 0; // 0x0
-  }
-
-  public enum Bitmap.CompressFormat {
-    enum_constant public static final android.graphics.Bitmap.CompressFormat JPEG;
-    enum_constant public static final android.graphics.Bitmap.CompressFormat PNG;
-    enum_constant @Deprecated public static final android.graphics.Bitmap.CompressFormat WEBP;
-    enum_constant public static final android.graphics.Bitmap.CompressFormat WEBP_LOSSLESS;
-    enum_constant public static final android.graphics.Bitmap.CompressFormat WEBP_LOSSY;
-  }
-
-  public enum Bitmap.Config {
-    enum_constant public static final android.graphics.Bitmap.Config ALPHA_8;
-    enum_constant @Deprecated public static final android.graphics.Bitmap.Config ARGB_4444;
-    enum_constant public static final android.graphics.Bitmap.Config ARGB_8888;
-    enum_constant public static final android.graphics.Bitmap.Config HARDWARE;
-    enum_constant public static final android.graphics.Bitmap.Config RGBA_F16;
-    enum_constant public static final android.graphics.Bitmap.Config RGB_565;
-  }
-
-  public class BitmapFactory {
-    ctor public BitmapFactory();
-    method public static android.graphics.Bitmap decodeByteArray(byte[], int, int, android.graphics.BitmapFactory.Options);
-    method public static android.graphics.Bitmap decodeByteArray(byte[], int, int);
-    method public static android.graphics.Bitmap decodeFile(String, android.graphics.BitmapFactory.Options);
-    method public static android.graphics.Bitmap decodeFile(String);
-    method public static android.graphics.Bitmap decodeFileDescriptor(java.io.FileDescriptor, android.graphics.Rect, android.graphics.BitmapFactory.Options);
-    method public static android.graphics.Bitmap decodeFileDescriptor(java.io.FileDescriptor);
-    method public static android.graphics.Bitmap decodeResource(android.content.res.Resources, int, android.graphics.BitmapFactory.Options);
-    method public static android.graphics.Bitmap decodeResource(android.content.res.Resources, int);
-    method @Nullable public static android.graphics.Bitmap decodeResourceStream(@Nullable android.content.res.Resources, @Nullable android.util.TypedValue, @Nullable java.io.InputStream, @Nullable android.graphics.Rect, @Nullable android.graphics.BitmapFactory.Options);
-    method @Nullable public static android.graphics.Bitmap decodeStream(@Nullable java.io.InputStream, @Nullable android.graphics.Rect, @Nullable android.graphics.BitmapFactory.Options);
-    method public static android.graphics.Bitmap decodeStream(java.io.InputStream);
-  }
-
-  public static class BitmapFactory.Options {
-    ctor public BitmapFactory.Options();
-    method @Deprecated public void requestCancelDecode();
-    field public android.graphics.Bitmap inBitmap;
-    field public int inDensity;
-    field @Deprecated public boolean inDither;
-    field @Deprecated public boolean inInputShareable;
-    field public boolean inJustDecodeBounds;
-    field public boolean inMutable;
-    field @Deprecated public boolean inPreferQualityOverSpeed;
-    field public android.graphics.ColorSpace inPreferredColorSpace;
-    field public android.graphics.Bitmap.Config inPreferredConfig;
-    field public boolean inPremultiplied;
-    field @Deprecated public boolean inPurgeable;
-    field public int inSampleSize;
-    field public boolean inScaled;
-    field public int inScreenDensity;
-    field public int inTargetDensity;
-    field public byte[] inTempStorage;
-    field @Deprecated public boolean mCancel;
-    field public android.graphics.ColorSpace outColorSpace;
-    field public android.graphics.Bitmap.Config outConfig;
-    field public int outHeight;
-    field public String outMimeType;
-    field public int outWidth;
-  }
-
-  public final class BitmapRegionDecoder {
-    method public android.graphics.Bitmap decodeRegion(android.graphics.Rect, android.graphics.BitmapFactory.Options);
-    method public int getHeight();
-    method public int getWidth();
-    method public boolean isRecycled();
-    method public static android.graphics.BitmapRegionDecoder newInstance(byte[], int, int, boolean) throws java.io.IOException;
-    method public static android.graphics.BitmapRegionDecoder newInstance(java.io.FileDescriptor, boolean) throws java.io.IOException;
-    method public static android.graphics.BitmapRegionDecoder newInstance(java.io.InputStream, boolean) throws java.io.IOException;
-    method public static android.graphics.BitmapRegionDecoder newInstance(String, boolean) throws java.io.IOException;
-    method public void recycle();
-  }
-
-  public class BitmapShader extends android.graphics.Shader {
-    ctor public BitmapShader(@NonNull android.graphics.Bitmap, @NonNull android.graphics.Shader.TileMode, @NonNull android.graphics.Shader.TileMode);
-  }
-
-  public enum BlendMode {
-    enum_constant public static final android.graphics.BlendMode CLEAR;
-    enum_constant public static final android.graphics.BlendMode COLOR;
-    enum_constant public static final android.graphics.BlendMode COLOR_BURN;
-    enum_constant public static final android.graphics.BlendMode COLOR_DODGE;
-    enum_constant public static final android.graphics.BlendMode DARKEN;
-    enum_constant public static final android.graphics.BlendMode DIFFERENCE;
-    enum_constant public static final android.graphics.BlendMode DST;
-    enum_constant public static final android.graphics.BlendMode DST_ATOP;
-    enum_constant public static final android.graphics.BlendMode DST_IN;
-    enum_constant public static final android.graphics.BlendMode DST_OUT;
-    enum_constant public static final android.graphics.BlendMode DST_OVER;
-    enum_constant public static final android.graphics.BlendMode EXCLUSION;
-    enum_constant public static final android.graphics.BlendMode HARD_LIGHT;
-    enum_constant public static final android.graphics.BlendMode HUE;
-    enum_constant public static final android.graphics.BlendMode LIGHTEN;
-    enum_constant public static final android.graphics.BlendMode LUMINOSITY;
-    enum_constant public static final android.graphics.BlendMode MODULATE;
-    enum_constant public static final android.graphics.BlendMode MULTIPLY;
-    enum_constant public static final android.graphics.BlendMode OVERLAY;
-    enum_constant public static final android.graphics.BlendMode PLUS;
-    enum_constant public static final android.graphics.BlendMode SATURATION;
-    enum_constant public static final android.graphics.BlendMode SCREEN;
-    enum_constant public static final android.graphics.BlendMode SOFT_LIGHT;
-    enum_constant public static final android.graphics.BlendMode SRC;
-    enum_constant public static final android.graphics.BlendMode SRC_ATOP;
-    enum_constant public static final android.graphics.BlendMode SRC_IN;
-    enum_constant public static final android.graphics.BlendMode SRC_OUT;
-    enum_constant public static final android.graphics.BlendMode SRC_OVER;
-    enum_constant public static final android.graphics.BlendMode XOR;
-  }
-
-  public final class BlendModeColorFilter extends android.graphics.ColorFilter {
-    ctor public BlendModeColorFilter(@ColorInt int, @NonNull android.graphics.BlendMode);
-    method @ColorInt public int getColor();
-    method public android.graphics.BlendMode getMode();
-  }
-
-  public class BlurMaskFilter extends android.graphics.MaskFilter {
-    ctor public BlurMaskFilter(float, android.graphics.BlurMaskFilter.Blur);
-  }
-
-  public enum BlurMaskFilter.Blur {
-    enum_constant public static final android.graphics.BlurMaskFilter.Blur INNER;
-    enum_constant public static final android.graphics.BlurMaskFilter.Blur NORMAL;
-    enum_constant public static final android.graphics.BlurMaskFilter.Blur OUTER;
-    enum_constant public static final android.graphics.BlurMaskFilter.Blur SOLID;
-  }
-
-  public class Camera {
-    ctor public Camera();
-    method public void applyToCanvas(android.graphics.Canvas);
-    method public float dotWithNormal(float, float, float);
-    method public float getLocationX();
-    method public float getLocationY();
-    method public float getLocationZ();
-    method public void getMatrix(android.graphics.Matrix);
-    method public void restore();
-    method public void rotate(float, float, float);
-    method public void rotateX(float);
-    method public void rotateY(float);
-    method public void rotateZ(float);
-    method public void save();
-    method public void setLocation(float, float, float);
-    method public void translate(float, float, float);
-  }
-
-  public class Canvas {
-    ctor public Canvas();
-    ctor public Canvas(@NonNull android.graphics.Bitmap);
-    method public boolean clipOutPath(@NonNull android.graphics.Path);
-    method public boolean clipOutRect(@NonNull android.graphics.RectF);
-    method public boolean clipOutRect(@NonNull android.graphics.Rect);
-    method public boolean clipOutRect(float, float, float, float);
-    method public boolean clipOutRect(int, int, int, int);
-    method @Deprecated public boolean clipPath(@NonNull android.graphics.Path, @NonNull android.graphics.Region.Op);
-    method public boolean clipPath(@NonNull android.graphics.Path);
-    method @Deprecated public boolean clipRect(@NonNull android.graphics.RectF, @NonNull android.graphics.Region.Op);
-    method @Deprecated public boolean clipRect(@NonNull android.graphics.Rect, @NonNull android.graphics.Region.Op);
-    method public boolean clipRect(@NonNull android.graphics.RectF);
-    method public boolean clipRect(@NonNull android.graphics.Rect);
-    method @Deprecated public boolean clipRect(float, float, float, float, @NonNull android.graphics.Region.Op);
-    method public boolean clipRect(float, float, float, float);
-    method public boolean clipRect(int, int, int, int);
-    method public void concat(@Nullable android.graphics.Matrix);
-    method public void disableZ();
-    method public void drawARGB(int, int, int, int);
-    method public void drawArc(@NonNull android.graphics.RectF, float, float, boolean, @NonNull android.graphics.Paint);
-    method public void drawArc(float, float, float, float, float, float, boolean, @NonNull android.graphics.Paint);
-    method public void drawBitmap(@NonNull android.graphics.Bitmap, float, float, @Nullable android.graphics.Paint);
-    method public void drawBitmap(@NonNull android.graphics.Bitmap, @Nullable android.graphics.Rect, @NonNull android.graphics.RectF, @Nullable android.graphics.Paint);
-    method public void drawBitmap(@NonNull android.graphics.Bitmap, @Nullable android.graphics.Rect, @NonNull android.graphics.Rect, @Nullable android.graphics.Paint);
-    method @Deprecated public void drawBitmap(@NonNull int[], int, int, float, float, int, int, boolean, @Nullable android.graphics.Paint);
-    method @Deprecated public void drawBitmap(@NonNull int[], int, int, int, int, int, int, boolean, @Nullable android.graphics.Paint);
-    method public void drawBitmap(@NonNull android.graphics.Bitmap, @NonNull android.graphics.Matrix, @Nullable android.graphics.Paint);
-    method public void drawBitmapMesh(@NonNull android.graphics.Bitmap, int, int, @NonNull float[], int, @Nullable int[], int, @Nullable android.graphics.Paint);
-    method public void drawCircle(float, float, float, @NonNull android.graphics.Paint);
-    method public void drawColor(@ColorInt int);
-    method public void drawColor(@ColorLong long);
-    method public void drawColor(@ColorInt int, @NonNull android.graphics.PorterDuff.Mode);
-    method public void drawColor(@ColorInt int, @NonNull android.graphics.BlendMode);
-    method public void drawColor(@ColorLong long, @NonNull android.graphics.BlendMode);
-    method public void drawDoubleRoundRect(@NonNull android.graphics.RectF, float, float, @NonNull android.graphics.RectF, float, float, @NonNull android.graphics.Paint);
-    method public void drawDoubleRoundRect(@NonNull android.graphics.RectF, @NonNull float[], @NonNull android.graphics.RectF, @NonNull float[], @NonNull android.graphics.Paint);
-    method public void drawLine(float, float, float, float, @NonNull android.graphics.Paint);
-    method public void drawLines(@NonNull @Size(multiple=4) float[], int, int, @NonNull android.graphics.Paint);
-    method public void drawLines(@NonNull @Size(multiple=4) float[], @NonNull android.graphics.Paint);
-    method public void drawOval(@NonNull android.graphics.RectF, @NonNull android.graphics.Paint);
-    method public void drawOval(float, float, float, float, @NonNull android.graphics.Paint);
-    method public void drawPaint(@NonNull android.graphics.Paint);
-    method public void drawPath(@NonNull android.graphics.Path, @NonNull android.graphics.Paint);
-    method public void drawPicture(@NonNull android.graphics.Picture);
-    method public void drawPicture(@NonNull android.graphics.Picture, @NonNull android.graphics.RectF);
-    method public void drawPicture(@NonNull android.graphics.Picture, @NonNull android.graphics.Rect);
-    method public void drawPoint(float, float, @NonNull android.graphics.Paint);
-    method public void drawPoints(@Size(multiple=2) float[], int, int, @NonNull android.graphics.Paint);
-    method public void drawPoints(@NonNull @Size(multiple=2) float[], @NonNull android.graphics.Paint);
-    method @Deprecated public void drawPosText(@NonNull char[], int, int, @NonNull @Size(multiple=2) float[], @NonNull android.graphics.Paint);
-    method @Deprecated public void drawPosText(@NonNull String, @NonNull @Size(multiple=2) float[], @NonNull android.graphics.Paint);
-    method public void drawRGB(int, int, int);
-    method public void drawRect(@NonNull android.graphics.RectF, @NonNull android.graphics.Paint);
-    method public void drawRect(@NonNull android.graphics.Rect, @NonNull android.graphics.Paint);
-    method public void drawRect(float, float, float, float, @NonNull android.graphics.Paint);
-    method public void drawRenderNode(@NonNull android.graphics.RenderNode);
-    method public void drawRoundRect(@NonNull android.graphics.RectF, float, float, @NonNull android.graphics.Paint);
-    method public void drawRoundRect(float, float, float, float, float, float, @NonNull android.graphics.Paint);
-    method public void drawText(@NonNull char[], int, int, float, float, @NonNull android.graphics.Paint);
-    method public void drawText(@NonNull String, float, float, @NonNull android.graphics.Paint);
-    method public void drawText(@NonNull String, int, int, float, float, @NonNull android.graphics.Paint);
-    method public void drawText(@NonNull CharSequence, int, int, float, float, @NonNull android.graphics.Paint);
-    method public void drawTextOnPath(@NonNull char[], int, int, @NonNull android.graphics.Path, float, float, @NonNull android.graphics.Paint);
-    method public void drawTextOnPath(@NonNull String, @NonNull android.graphics.Path, float, float, @NonNull android.graphics.Paint);
-    method public void drawTextRun(@NonNull char[], int, int, int, int, float, float, boolean, @NonNull android.graphics.Paint);
-    method public void drawTextRun(@NonNull CharSequence, int, int, int, int, float, float, boolean, @NonNull android.graphics.Paint);
-    method public void drawTextRun(@NonNull android.graphics.text.MeasuredText, int, int, int, int, float, float, boolean, @NonNull android.graphics.Paint);
-    method public void drawVertices(@NonNull android.graphics.Canvas.VertexMode, int, @NonNull float[], int, @Nullable float[], int, @Nullable int[], int, @Nullable short[], int, int, @NonNull android.graphics.Paint);
-    method public void enableZ();
-    method public boolean getClipBounds(@Nullable android.graphics.Rect);
-    method @NonNull public final android.graphics.Rect getClipBounds();
-    method public int getDensity();
-    method @Nullable public android.graphics.DrawFilter getDrawFilter();
-    method public int getHeight();
-    method @Deprecated public void getMatrix(@NonNull android.graphics.Matrix);
-    method @Deprecated @NonNull public final android.graphics.Matrix getMatrix();
-    method public int getMaximumBitmapHeight();
-    method public int getMaximumBitmapWidth();
-    method public int getSaveCount();
-    method public int getWidth();
-    method public boolean isHardwareAccelerated();
-    method public boolean isOpaque();
-    method @Deprecated public boolean quickReject(@NonNull android.graphics.RectF, @NonNull android.graphics.Canvas.EdgeType);
-    method public boolean quickReject(@NonNull android.graphics.RectF);
-    method @Deprecated public boolean quickReject(@NonNull android.graphics.Path, @NonNull android.graphics.Canvas.EdgeType);
-    method public boolean quickReject(@NonNull android.graphics.Path);
-    method @Deprecated public boolean quickReject(float, float, float, float, @NonNull android.graphics.Canvas.EdgeType);
-    method public boolean quickReject(float, float, float, float);
-    method public void restore();
-    method public void restoreToCount(int);
-    method public void rotate(float);
-    method public final void rotate(float, float, float);
-    method public int save();
-    method @Deprecated public int saveLayer(@Nullable android.graphics.RectF, @Nullable android.graphics.Paint, int);
-    method public int saveLayer(@Nullable android.graphics.RectF, @Nullable android.graphics.Paint);
-    method @Deprecated public int saveLayer(float, float, float, float, @Nullable android.graphics.Paint, int);
-    method public int saveLayer(float, float, float, float, @Nullable android.graphics.Paint);
-    method @Deprecated public int saveLayerAlpha(@Nullable android.graphics.RectF, int, int);
-    method public int saveLayerAlpha(@Nullable android.graphics.RectF, int);
-    method @Deprecated public int saveLayerAlpha(float, float, float, float, int, int);
-    method public int saveLayerAlpha(float, float, float, float, int);
-    method public void scale(float, float);
-    method public final void scale(float, float, float, float);
-    method public void setBitmap(@Nullable android.graphics.Bitmap);
-    method public void setDensity(int);
-    method public void setDrawFilter(@Nullable android.graphics.DrawFilter);
-    method public void setMatrix(@Nullable android.graphics.Matrix);
-    method public void skew(float, float);
-    method public void translate(float, float);
-    field public static final int ALL_SAVE_FLAG = 31; // 0x1f
-  }
-
-  @Deprecated public enum Canvas.EdgeType {
-    enum_constant @Deprecated public static final android.graphics.Canvas.EdgeType AA;
-    enum_constant @Deprecated public static final android.graphics.Canvas.EdgeType BW;
-  }
-
-  public enum Canvas.VertexMode {
-    enum_constant public static final android.graphics.Canvas.VertexMode TRIANGLES;
-    enum_constant public static final android.graphics.Canvas.VertexMode TRIANGLE_FAN;
-    enum_constant public static final android.graphics.Canvas.VertexMode TRIANGLE_STRIP;
-  }
-
-  @AnyThread public class Color {
-    ctor public Color();
-    method @ColorInt public static int HSVToColor(@Size(3) float[]);
-    method @ColorInt public static int HSVToColor(@IntRange(from=0, to=255) int, @Size(3) float[]);
-    method public static void RGBToHSV(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @Size(3) float[]);
-    method public float alpha();
-    method public static float alpha(@ColorLong long);
-    method @IntRange(from=0, to=255) public static int alpha(int);
-    method @ColorInt public static int argb(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int);
-    method @ColorInt public static int argb(float, float, float, float);
-    method public float blue();
-    method public static float blue(@ColorLong long);
-    method @IntRange(from=0, to=255) public static int blue(int);
-    method @NonNull public static android.graphics.ColorSpace colorSpace(@ColorLong long);
-    method public static void colorToHSV(@ColorInt int, @Size(3) float[]);
-    method @NonNull public android.graphics.Color convert(@NonNull android.graphics.ColorSpace);
-    method @ColorLong public static long convert(@ColorInt int, @NonNull android.graphics.ColorSpace);
-    method @ColorLong public static long convert(@ColorLong long, @NonNull android.graphics.ColorSpace);
-    method @ColorLong public static long convert(float, float, float, float, @NonNull android.graphics.ColorSpace, @NonNull android.graphics.ColorSpace);
-    method @ColorLong public static long convert(@ColorLong long, @NonNull android.graphics.ColorSpace.Connector);
-    method @ColorLong public static long convert(float, float, float, float, @NonNull android.graphics.ColorSpace.Connector);
-    method @NonNull public android.graphics.ColorSpace getColorSpace();
-    method public float getComponent(@IntRange(from=0, to=4) int);
-    method @IntRange(from=4, to=5) public int getComponentCount();
-    method @NonNull @Size(min=4, max=5) public float[] getComponents();
-    method @NonNull @Size(min=4) public float[] getComponents(@Nullable @Size(min=4) float[]);
-    method public android.graphics.ColorSpace.Model getModel();
-    method public float green();
-    method public static float green(@ColorLong long);
-    method @IntRange(from=0, to=255) public static int green(int);
-    method public static boolean isInColorSpace(@ColorLong long, @NonNull android.graphics.ColorSpace);
-    method public boolean isSrgb();
-    method public static boolean isSrgb(@ColorLong long);
-    method public boolean isWideGamut();
-    method public static boolean isWideGamut(@ColorLong long);
-    method public float luminance();
-    method public static float luminance(@ColorLong long);
-    method public static float luminance(@ColorInt int);
-    method @ColorLong public long pack();
-    method @ColorLong public static long pack(@ColorInt int);
-    method @ColorLong public static long pack(float, float, float);
-    method @ColorLong public static long pack(float, float, float, float);
-    method @ColorLong public static long pack(float, float, float, float, @NonNull android.graphics.ColorSpace);
-    method @ColorInt public static int parseColor(@Size(min=1) String);
-    method public float red();
-    method public static float red(@ColorLong long);
-    method @IntRange(from=0, to=255) public static int red(int);
-    method @ColorInt public static int rgb(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int);
-    method @ColorInt public static int rgb(float, float, float);
-    method @ColorInt public int toArgb();
-    method @ColorInt public static int toArgb(@ColorLong long);
-    method @NonNull public static android.graphics.Color valueOf(@ColorInt int);
-    method @NonNull public static android.graphics.Color valueOf(@ColorLong long);
-    method @NonNull public static android.graphics.Color valueOf(float, float, float);
-    method @NonNull public static android.graphics.Color valueOf(float, float, float, float);
-    method @NonNull public static android.graphics.Color valueOf(float, float, float, float, @NonNull android.graphics.ColorSpace);
-    method @NonNull public static android.graphics.Color valueOf(@NonNull @Size(min=4, max=5) float[], @NonNull android.graphics.ColorSpace);
-    field @ColorInt public static final int BLACK = -16777216; // 0xff000000
-    field @ColorInt public static final int BLUE = -16776961; // 0xff0000ff
-    field @ColorInt public static final int CYAN = -16711681; // 0xff00ffff
-    field @ColorInt public static final int DKGRAY = -12303292; // 0xff444444
-    field @ColorInt public static final int GRAY = -7829368; // 0xff888888
-    field @ColorInt public static final int GREEN = -16711936; // 0xff00ff00
-    field @ColorInt public static final int LTGRAY = -3355444; // 0xffcccccc
-    field @ColorInt public static final int MAGENTA = -65281; // 0xffff00ff
-    field @ColorInt public static final int RED = -65536; // 0xffff0000
-    field @ColorInt public static final int TRANSPARENT = 0; // 0x0
-    field @ColorInt public static final int WHITE = -1; // 0xffffffff
-    field @ColorInt public static final int YELLOW = -256; // 0xffffff00
-  }
-
-  public class ColorFilter {
-    ctor @Deprecated public ColorFilter();
-  }
-
-  public class ColorMatrix {
-    ctor public ColorMatrix();
-    ctor public ColorMatrix(float[]);
-    ctor public ColorMatrix(android.graphics.ColorMatrix);
-    method public final float[] getArray();
-    method public void postConcat(android.graphics.ColorMatrix);
-    method public void preConcat(android.graphics.ColorMatrix);
-    method public void reset();
-    method public void set(android.graphics.ColorMatrix);
-    method public void set(float[]);
-    method public void setConcat(android.graphics.ColorMatrix, android.graphics.ColorMatrix);
-    method public void setRGB2YUV();
-    method public void setRotate(int, float);
-    method public void setSaturation(float);
-    method public void setScale(float, float, float, float);
-    method public void setYUV2RGB();
-  }
-
-  public class ColorMatrixColorFilter extends android.graphics.ColorFilter {
-    ctor public ColorMatrixColorFilter(@NonNull android.graphics.ColorMatrix);
-    ctor public ColorMatrixColorFilter(@NonNull float[]);
-    method public void getColorMatrix(android.graphics.ColorMatrix);
-  }
-
-  @AnyThread public abstract class ColorSpace {
-    method @NonNull public static android.graphics.ColorSpace adapt(@NonNull android.graphics.ColorSpace, @NonNull @Size(min=2, max=3) float[]);
-    method @NonNull public static android.graphics.ColorSpace adapt(@NonNull android.graphics.ColorSpace, @NonNull @Size(min=2, max=3) float[], @NonNull android.graphics.ColorSpace.Adaptation);
-    method @NonNull public static android.graphics.ColorSpace.Connector connect(@NonNull android.graphics.ColorSpace, @NonNull android.graphics.ColorSpace);
-    method @NonNull public static android.graphics.ColorSpace.Connector connect(@NonNull android.graphics.ColorSpace, @NonNull android.graphics.ColorSpace, @NonNull android.graphics.ColorSpace.RenderIntent);
-    method @NonNull public static android.graphics.ColorSpace.Connector connect(@NonNull android.graphics.ColorSpace);
-    method @NonNull public static android.graphics.ColorSpace.Connector connect(@NonNull android.graphics.ColorSpace, @NonNull android.graphics.ColorSpace.RenderIntent);
-    method @NonNull @Size(min=3) public float[] fromXyz(float, float, float);
-    method @NonNull @Size(min=3) public abstract float[] fromXyz(@NonNull @Size(min=3) float[]);
-    method @NonNull public static android.graphics.ColorSpace get(@NonNull android.graphics.ColorSpace.Named);
-    method @IntRange(from=1, to=4) public int getComponentCount();
-    method @IntRange(from=android.graphics.ColorSpace.MIN_ID, to=android.graphics.ColorSpace.MAX_ID) public int getId();
-    method public abstract float getMaxValue(@IntRange(from=0, to=3) int);
-    method public abstract float getMinValue(@IntRange(from=0, to=3) int);
-    method @NonNull public android.graphics.ColorSpace.Model getModel();
-    method @NonNull public String getName();
-    method public boolean isSrgb();
-    method public abstract boolean isWideGamut();
-    method @Nullable public static android.graphics.ColorSpace match(@NonNull @Size(9) float[], @NonNull android.graphics.ColorSpace.Rgb.TransferParameters);
-    method @NonNull @Size(3) public float[] toXyz(float, float, float);
-    method @NonNull @Size(min=3) public abstract float[] toXyz(@NonNull @Size(min=3) float[]);
-    field public static final float[] ILLUMINANT_A;
-    field public static final float[] ILLUMINANT_B;
-    field public static final float[] ILLUMINANT_C;
-    field public static final float[] ILLUMINANT_D50;
-    field public static final float[] ILLUMINANT_D55;
-    field public static final float[] ILLUMINANT_D60;
-    field public static final float[] ILLUMINANT_D65;
-    field public static final float[] ILLUMINANT_D75;
-    field public static final float[] ILLUMINANT_E;
-    field public static final int MAX_ID = 63; // 0x3f
-    field public static final int MIN_ID = -1; // 0xffffffff
-  }
-
-  public enum ColorSpace.Adaptation {
-    enum_constant public static final android.graphics.ColorSpace.Adaptation BRADFORD;
-    enum_constant public static final android.graphics.ColorSpace.Adaptation CIECAT02;
-    enum_constant public static final android.graphics.ColorSpace.Adaptation VON_KRIES;
-  }
-
-  @AnyThread public static class ColorSpace.Connector {
-    method @NonNull public android.graphics.ColorSpace getDestination();
-    method public android.graphics.ColorSpace.RenderIntent getRenderIntent();
-    method @NonNull public android.graphics.ColorSpace getSource();
-    method @NonNull @Size(3) public float[] transform(float, float, float);
-    method @NonNull @Size(min=3) public float[] transform(@NonNull @Size(min=3) float[]);
-  }
-
-  public enum ColorSpace.Model {
-    method @IntRange(from=1, to=4) public int getComponentCount();
-    enum_constant public static final android.graphics.ColorSpace.Model CMYK;
-    enum_constant public static final android.graphics.ColorSpace.Model LAB;
-    enum_constant public static final android.graphics.ColorSpace.Model RGB;
-    enum_constant public static final android.graphics.ColorSpace.Model XYZ;
-  }
-
-  public enum ColorSpace.Named {
-    enum_constant public static final android.graphics.ColorSpace.Named ACES;
-    enum_constant public static final android.graphics.ColorSpace.Named ACESCG;
-    enum_constant public static final android.graphics.ColorSpace.Named ADOBE_RGB;
-    enum_constant public static final android.graphics.ColorSpace.Named BT2020;
-    enum_constant public static final android.graphics.ColorSpace.Named BT709;
-    enum_constant public static final android.graphics.ColorSpace.Named CIE_LAB;
-    enum_constant public static final android.graphics.ColorSpace.Named CIE_XYZ;
-    enum_constant public static final android.graphics.ColorSpace.Named DCI_P3;
-    enum_constant public static final android.graphics.ColorSpace.Named DISPLAY_P3;
-    enum_constant public static final android.graphics.ColorSpace.Named EXTENDED_SRGB;
-    enum_constant public static final android.graphics.ColorSpace.Named LINEAR_EXTENDED_SRGB;
-    enum_constant public static final android.graphics.ColorSpace.Named LINEAR_SRGB;
-    enum_constant public static final android.graphics.ColorSpace.Named NTSC_1953;
-    enum_constant public static final android.graphics.ColorSpace.Named PRO_PHOTO_RGB;
-    enum_constant public static final android.graphics.ColorSpace.Named SMPTE_C;
-    enum_constant public static final android.graphics.ColorSpace.Named SRGB;
-  }
-
-  public enum ColorSpace.RenderIntent {
-    enum_constant public static final android.graphics.ColorSpace.RenderIntent ABSOLUTE;
-    enum_constant public static final android.graphics.ColorSpace.RenderIntent PERCEPTUAL;
-    enum_constant public static final android.graphics.ColorSpace.RenderIntent RELATIVE;
-    enum_constant public static final android.graphics.ColorSpace.RenderIntent SATURATION;
-  }
-
-  @AnyThread public static class ColorSpace.Rgb extends android.graphics.ColorSpace {
-    ctor public ColorSpace.Rgb(@NonNull @Size(min=1) String, @NonNull @Size(9) float[], @NonNull java.util.function.DoubleUnaryOperator, @NonNull java.util.function.DoubleUnaryOperator);
-    ctor public ColorSpace.Rgb(@NonNull @Size(min=1) String, @NonNull @Size(min=6, max=9) float[], @NonNull @Size(min=2, max=3) float[], @NonNull java.util.function.DoubleUnaryOperator, @NonNull java.util.function.DoubleUnaryOperator, float, float);
-    ctor public ColorSpace.Rgb(@NonNull @Size(min=1) String, @NonNull @Size(9) float[], @NonNull android.graphics.ColorSpace.Rgb.TransferParameters);
-    ctor public ColorSpace.Rgb(@NonNull @Size(min=1) String, @NonNull @Size(min=6, max=9) float[], @NonNull @Size(min=2, max=3) float[], @NonNull android.graphics.ColorSpace.Rgb.TransferParameters);
-    ctor public ColorSpace.Rgb(@NonNull @Size(min=1) String, @NonNull @Size(9) float[], double);
-    ctor public ColorSpace.Rgb(@NonNull @Size(min=1) String, @NonNull @Size(min=6, max=9) float[], @NonNull @Size(min=2, max=3) float[], double);
-    method @NonNull @Size(3) public float[] fromLinear(float, float, float);
-    method @NonNull @Size(min=3) public float[] fromLinear(@NonNull @Size(min=3) float[]);
-    method @NonNull @Size(min=3) public float[] fromXyz(@NonNull @Size(min=3) float[]);
-    method @NonNull public java.util.function.DoubleUnaryOperator getEotf();
-    method @NonNull @Size(min=9) public float[] getInverseTransform(@NonNull @Size(min=9) float[]);
-    method @NonNull @Size(9) public float[] getInverseTransform();
-    method public float getMaxValue(int);
-    method public float getMinValue(int);
-    method @NonNull public java.util.function.DoubleUnaryOperator getOetf();
-    method @NonNull @Size(min=6) public float[] getPrimaries(@NonNull @Size(min=6) float[]);
-    method @NonNull @Size(6) public float[] getPrimaries();
-    method @Nullable public android.graphics.ColorSpace.Rgb.TransferParameters getTransferParameters();
-    method @NonNull @Size(min=9) public float[] getTransform(@NonNull @Size(min=9) float[]);
-    method @NonNull @Size(9) public float[] getTransform();
-    method @NonNull @Size(min=2) public float[] getWhitePoint(@NonNull @Size(min=2) float[]);
-    method @NonNull @Size(2) public float[] getWhitePoint();
-    method public boolean isWideGamut();
-    method @NonNull @Size(3) public float[] toLinear(float, float, float);
-    method @NonNull @Size(min=3) public float[] toLinear(@NonNull @Size(min=3) float[]);
-    method @NonNull @Size(min=3) public float[] toXyz(@NonNull @Size(min=3) float[]);
-  }
-
-  public static class ColorSpace.Rgb.TransferParameters {
-    ctor public ColorSpace.Rgb.TransferParameters(double, double, double, double, double);
-    ctor public ColorSpace.Rgb.TransferParameters(double, double, double, double, double, double, double);
-    field public final double a;
-    field public final double b;
-    field public final double c;
-    field public final double d;
-    field public final double e;
-    field public final double f;
-    field public final double g;
-  }
-
-  public class ComposePathEffect extends android.graphics.PathEffect {
-    ctor public ComposePathEffect(android.graphics.PathEffect, android.graphics.PathEffect);
-  }
-
-  public class ComposeShader extends android.graphics.Shader {
-    ctor @Deprecated public ComposeShader(@NonNull android.graphics.Shader, @NonNull android.graphics.Shader, @NonNull android.graphics.Xfermode);
-    ctor public ComposeShader(@NonNull android.graphics.Shader, @NonNull android.graphics.Shader, @NonNull android.graphics.PorterDuff.Mode);
-    ctor public ComposeShader(@NonNull android.graphics.Shader, @NonNull android.graphics.Shader, @NonNull android.graphics.BlendMode);
-  }
-
-  public class CornerPathEffect extends android.graphics.PathEffect {
-    ctor public CornerPathEffect(float);
-  }
-
-  public class DashPathEffect extends android.graphics.PathEffect {
-    ctor public DashPathEffect(float[], float);
-  }
-
-  public class DiscretePathEffect extends android.graphics.PathEffect {
-    ctor public DiscretePathEffect(float, float);
-  }
-
-  public class DrawFilter {
-    ctor public DrawFilter();
-  }
-
-  public class EmbossMaskFilter extends android.graphics.MaskFilter {
-    ctor @Deprecated public EmbossMaskFilter(float[], float, float, float);
-  }
-
-  public class HardwareRenderer {
-    ctor public HardwareRenderer();
-    method public void clearContent();
-    method @NonNull public android.graphics.HardwareRenderer.FrameRenderRequest createRenderRequest();
-    method public void destroy();
-    method public boolean isOpaque();
-    method public void notifyFramePending();
-    method public void setContentRoot(@Nullable android.graphics.RenderNode);
-    method public void setLightSourceAlpha(@FloatRange(from=0.0f, to=1.0f) float, @FloatRange(from=0.0f, to=1.0f) float);
-    method public void setLightSourceGeometry(float, float, float, float);
-    method public void setName(@NonNull String);
-    method public void setOpaque(boolean);
-    method public void setSurface(@Nullable android.view.Surface);
-    method public void start();
-    method public void stop();
-    field public static final int SYNC_CONTEXT_IS_STOPPED = 4; // 0x4
-    field public static final int SYNC_FRAME_DROPPED = 8; // 0x8
-    field public static final int SYNC_LOST_SURFACE_REWARD_IF_FOUND = 2; // 0x2
-    field public static final int SYNC_OK = 0; // 0x0
-    field public static final int SYNC_REDRAW_REQUESTED = 1; // 0x1
-  }
-
-  public final class HardwareRenderer.FrameRenderRequest {
-    method @NonNull public android.graphics.HardwareRenderer.FrameRenderRequest setFrameCommitCallback(@NonNull java.util.concurrent.Executor, @NonNull Runnable);
-    method @NonNull public android.graphics.HardwareRenderer.FrameRenderRequest setVsyncTime(long);
-    method @NonNull public android.graphics.HardwareRenderer.FrameRenderRequest setWaitForPresent(boolean);
-    method public int syncAndDraw();
-  }
-
-  public final class ImageDecoder implements java.lang.AutoCloseable {
-    method public void close();
-    method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull android.content.res.Resources, int);
-    method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull android.content.ContentResolver, @NonNull android.net.Uri);
-    method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull android.content.res.AssetManager, @NonNull String);
-    method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull java.nio.ByteBuffer);
-    method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull java.io.File);
-    method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull java.util.concurrent.Callable<android.content.res.AssetFileDescriptor>);
-    method @NonNull @WorkerThread public static android.graphics.Bitmap decodeBitmap(@NonNull android.graphics.ImageDecoder.Source, @NonNull android.graphics.ImageDecoder.OnHeaderDecodedListener) throws java.io.IOException;
-    method @NonNull @WorkerThread public static android.graphics.Bitmap decodeBitmap(@NonNull android.graphics.ImageDecoder.Source) throws java.io.IOException;
-    method @NonNull @WorkerThread public static android.graphics.drawable.Drawable decodeDrawable(@NonNull android.graphics.ImageDecoder.Source, @NonNull android.graphics.ImageDecoder.OnHeaderDecodedListener) throws java.io.IOException;
-    method @NonNull @WorkerThread public static android.graphics.drawable.Drawable decodeDrawable(@NonNull android.graphics.ImageDecoder.Source) throws java.io.IOException;
-    method public int getAllocator();
-    method @Nullable public android.graphics.Rect getCrop();
-    method public int getMemorySizePolicy();
-    method @Nullable public android.graphics.ImageDecoder.OnPartialImageListener getOnPartialImageListener();
-    method @Nullable public android.graphics.PostProcessor getPostProcessor();
-    method public boolean isDecodeAsAlphaMaskEnabled();
-    method public static boolean isMimeTypeSupported(@NonNull String);
-    method public boolean isMutableRequired();
-    method public boolean isUnpremultipliedRequired();
-    method public void setAllocator(int);
-    method public void setCrop(@Nullable android.graphics.Rect);
-    method public void setDecodeAsAlphaMaskEnabled(boolean);
-    method public void setMemorySizePolicy(int);
-    method public void setMutableRequired(boolean);
-    method public void setOnPartialImageListener(@Nullable android.graphics.ImageDecoder.OnPartialImageListener);
-    method public void setPostProcessor(@Nullable android.graphics.PostProcessor);
-    method public void setTargetColorSpace(android.graphics.ColorSpace);
-    method public void setTargetSampleSize(@IntRange(from=1) int);
-    method public void setTargetSize(@IntRange(from=1) @Px int, @IntRange(from=1) @Px int);
-    method public void setUnpremultipliedRequired(boolean);
-    field public static final int ALLOCATOR_DEFAULT = 0; // 0x0
-    field public static final int ALLOCATOR_HARDWARE = 3; // 0x3
-    field public static final int ALLOCATOR_SHARED_MEMORY = 2; // 0x2
-    field public static final int ALLOCATOR_SOFTWARE = 1; // 0x1
-    field public static final int MEMORY_POLICY_DEFAULT = 1; // 0x1
-    field public static final int MEMORY_POLICY_LOW_RAM = 0; // 0x0
-  }
-
-  public static final class ImageDecoder.DecodeException extends java.io.IOException {
-    method public int getError();
-    method @NonNull public android.graphics.ImageDecoder.Source getSource();
-    field public static final int SOURCE_EXCEPTION = 1; // 0x1
-    field public static final int SOURCE_INCOMPLETE = 2; // 0x2
-    field public static final int SOURCE_MALFORMED_DATA = 3; // 0x3
-  }
-
-  public static class ImageDecoder.ImageInfo {
-    method @Nullable public android.graphics.ColorSpace getColorSpace();
-    method @NonNull public String getMimeType();
-    method @NonNull public android.util.Size getSize();
-    method public boolean isAnimated();
-  }
-
-  public static interface ImageDecoder.OnHeaderDecodedListener {
-    method public void onHeaderDecoded(@NonNull android.graphics.ImageDecoder, @NonNull android.graphics.ImageDecoder.ImageInfo, @NonNull android.graphics.ImageDecoder.Source);
-  }
-
-  public static interface ImageDecoder.OnPartialImageListener {
-    method public boolean onPartialImage(@NonNull android.graphics.ImageDecoder.DecodeException);
-  }
-
-  public abstract static class ImageDecoder.Source {
-  }
-
-  public class ImageFormat {
-    ctor public ImageFormat();
-    method public static int getBitsPerPixel(int);
-    field public static final int DEPTH16 = 1144402265; // 0x44363159
-    field public static final int DEPTH_JPEG = 1768253795; // 0x69656963
-    field public static final int DEPTH_POINT_CLOUD = 257; // 0x101
-    field public static final int FLEX_RGBA_8888 = 42; // 0x2a
-    field public static final int FLEX_RGB_888 = 41; // 0x29
-    field public static final int HEIC = 1212500294; // 0x48454946
-    field public static final int JPEG = 256; // 0x100
-    field public static final int NV16 = 16; // 0x10
-    field public static final int NV21 = 17; // 0x11
-    field public static final int PRIVATE = 34; // 0x22
-    field public static final int RAW10 = 37; // 0x25
-    field public static final int RAW12 = 38; // 0x26
-    field public static final int RAW_PRIVATE = 36; // 0x24
-    field public static final int RAW_SENSOR = 32; // 0x20
-    field public static final int RGB_565 = 4; // 0x4
-    field public static final int UNKNOWN = 0; // 0x0
-    field public static final int Y8 = 538982489; // 0x20203859
-    field public static final int YUV_420_888 = 35; // 0x23
-    field public static final int YUV_422_888 = 39; // 0x27
-    field public static final int YUV_444_888 = 40; // 0x28
-    field public static final int YUY2 = 20; // 0x14
-    field public static final int YV12 = 842094169; // 0x32315659
-  }
-
-  public final class Insets implements android.os.Parcelable {
-    method @NonNull public static android.graphics.Insets add(@NonNull android.graphics.Insets, @NonNull android.graphics.Insets);
-    method public int describeContents();
-    method @NonNull public static android.graphics.Insets max(@NonNull android.graphics.Insets, @NonNull android.graphics.Insets);
-    method @NonNull public static android.graphics.Insets min(@NonNull android.graphics.Insets, @NonNull android.graphics.Insets);
-    method @NonNull public static android.graphics.Insets of(int, int, int, int);
-    method @NonNull public static android.graphics.Insets of(@Nullable android.graphics.Rect);
-    method @NonNull public static android.graphics.Insets subtract(@NonNull android.graphics.Insets, @NonNull android.graphics.Insets);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.graphics.Insets> CREATOR;
-    field @NonNull public static final android.graphics.Insets NONE;
-    field public final int bottom;
-    field public final int left;
-    field public final int right;
-    field public final int top;
-  }
-
-  public class Interpolator {
-    ctor public Interpolator(int);
-    ctor public Interpolator(int, int);
-    method public final int getKeyFrameCount();
-    method public final int getValueCount();
-    method public void reset(int);
-    method public void reset(int, int);
-    method public void setKeyFrame(int, int, float[]);
-    method public void setKeyFrame(int, int, float[], float[]);
-    method public void setRepeatMirror(float, boolean);
-    method public android.graphics.Interpolator.Result timeToValues(float[]);
-    method public android.graphics.Interpolator.Result timeToValues(int, float[]);
-  }
-
-  public enum Interpolator.Result {
-    enum_constant public static final android.graphics.Interpolator.Result FREEZE_END;
-    enum_constant public static final android.graphics.Interpolator.Result FREEZE_START;
-    enum_constant public static final android.graphics.Interpolator.Result NORMAL;
-  }
-
-  public class LightingColorFilter extends android.graphics.ColorFilter {
-    ctor public LightingColorFilter(@ColorInt int, @ColorInt int);
-    method @ColorInt public int getColorAdd();
-    method @ColorInt public int getColorMultiply();
-  }
-
-  public class LinearGradient extends android.graphics.Shader {
-    ctor public LinearGradient(float, float, float, float, @ColorInt @NonNull int[], @Nullable float[], @NonNull android.graphics.Shader.TileMode);
-    ctor public LinearGradient(float, float, float, float, @ColorLong @NonNull long[], @Nullable float[], @NonNull android.graphics.Shader.TileMode);
-    ctor public LinearGradient(float, float, float, float, @ColorInt int, @ColorInt int, @NonNull android.graphics.Shader.TileMode);
-    ctor public LinearGradient(float, float, float, float, @ColorLong long, @ColorLong long, @NonNull android.graphics.Shader.TileMode);
-  }
-
-  public class MaskFilter {
-    ctor public MaskFilter();
-  }
-
-  public class Matrix {
-    ctor public Matrix();
-    ctor public Matrix(android.graphics.Matrix);
-    method public void getValues(float[]);
-    method public boolean invert(android.graphics.Matrix);
-    method public boolean isAffine();
-    method public boolean isIdentity();
-    method public void mapPoints(float[], int, float[], int, int);
-    method public void mapPoints(float[], float[]);
-    method public void mapPoints(float[]);
-    method public float mapRadius(float);
-    method public boolean mapRect(android.graphics.RectF, android.graphics.RectF);
-    method public boolean mapRect(android.graphics.RectF);
-    method public void mapVectors(float[], int, float[], int, int);
-    method public void mapVectors(float[], float[]);
-    method public void mapVectors(float[]);
-    method public boolean postConcat(android.graphics.Matrix);
-    method public boolean postRotate(float, float, float);
-    method public boolean postRotate(float);
-    method public boolean postScale(float, float, float, float);
-    method public boolean postScale(float, float);
-    method public boolean postSkew(float, float, float, float);
-    method public boolean postSkew(float, float);
-    method public boolean postTranslate(float, float);
-    method public boolean preConcat(android.graphics.Matrix);
-    method public boolean preRotate(float, float, float);
-    method public boolean preRotate(float);
-    method public boolean preScale(float, float, float, float);
-    method public boolean preScale(float, float);
-    method public boolean preSkew(float, float, float, float);
-    method public boolean preSkew(float, float);
-    method public boolean preTranslate(float, float);
-    method public boolean rectStaysRect();
-    method public void reset();
-    method public void set(android.graphics.Matrix);
-    method public boolean setConcat(android.graphics.Matrix, android.graphics.Matrix);
-    method public boolean setPolyToPoly(float[], int, float[], int, int);
-    method public boolean setRectToRect(android.graphics.RectF, android.graphics.RectF, android.graphics.Matrix.ScaleToFit);
-    method public void setRotate(float, float, float);
-    method public void setRotate(float);
-    method public void setScale(float, float, float, float);
-    method public void setScale(float, float);
-    method public void setSinCos(float, float, float, float);
-    method public void setSinCos(float, float);
-    method public void setSkew(float, float, float, float);
-    method public void setSkew(float, float);
-    method public void setTranslate(float, float);
-    method public void setValues(float[]);
-    method public String toShortString();
-    field public static final int MPERSP_0 = 6; // 0x6
-    field public static final int MPERSP_1 = 7; // 0x7
-    field public static final int MPERSP_2 = 8; // 0x8
-    field public static final int MSCALE_X = 0; // 0x0
-    field public static final int MSCALE_Y = 4; // 0x4
-    field public static final int MSKEW_X = 1; // 0x1
-    field public static final int MSKEW_Y = 3; // 0x3
-    field public static final int MTRANS_X = 2; // 0x2
-    field public static final int MTRANS_Y = 5; // 0x5
-  }
-
-  public enum Matrix.ScaleToFit {
-    enum_constant public static final android.graphics.Matrix.ScaleToFit CENTER;
-    enum_constant public static final android.graphics.Matrix.ScaleToFit END;
-    enum_constant public static final android.graphics.Matrix.ScaleToFit FILL;
-    enum_constant public static final android.graphics.Matrix.ScaleToFit START;
-  }
-
-  @Deprecated public class Movie {
-    method @Deprecated public static android.graphics.Movie decodeByteArray(byte[], int, int);
-    method @Deprecated public static android.graphics.Movie decodeFile(String);
-    method @Deprecated public static android.graphics.Movie decodeStream(java.io.InputStream);
-    method @Deprecated public void draw(android.graphics.Canvas, float, float, android.graphics.Paint);
-    method @Deprecated public void draw(android.graphics.Canvas, float, float);
-    method @Deprecated public int duration();
-    method @Deprecated public int height();
-    method @Deprecated public boolean isOpaque();
-    method @Deprecated public boolean setTime(int);
-    method @Deprecated public int width();
-  }
-
-  public class NinePatch {
-    ctor public NinePatch(android.graphics.Bitmap, byte[]);
-    ctor public NinePatch(android.graphics.Bitmap, byte[], String);
-    method public void draw(android.graphics.Canvas, android.graphics.RectF);
-    method public void draw(android.graphics.Canvas, android.graphics.Rect);
-    method public void draw(android.graphics.Canvas, android.graphics.Rect, android.graphics.Paint);
-    method public android.graphics.Bitmap getBitmap();
-    method public int getDensity();
-    method public int getHeight();
-    method public String getName();
-    method public android.graphics.Paint getPaint();
-    method public final android.graphics.Region getTransparentRegion(android.graphics.Rect);
-    method public int getWidth();
-    method public final boolean hasAlpha();
-    method public static boolean isNinePatchChunk(byte[]);
-    method public void setPaint(android.graphics.Paint);
-  }
-
-  public final class Outline {
-    ctor public Outline();
-    ctor public Outline(@NonNull android.graphics.Outline);
-    method public boolean canClip();
-    method public float getAlpha();
-    method public float getRadius();
-    method public boolean getRect(@NonNull android.graphics.Rect);
-    method public boolean isEmpty();
-    method public void offset(int, int);
-    method public void set(@NonNull android.graphics.Outline);
-    method public void setAlpha(@FloatRange(from=0.0, to=1.0) float);
-    method @Deprecated public void setConvexPath(@NonNull android.graphics.Path);
-    method public void setEmpty();
-    method public void setOval(int, int, int, int);
-    method public void setOval(@NonNull android.graphics.Rect);
-    method public void setPath(@NonNull android.graphics.Path);
-    method public void setRect(int, int, int, int);
-    method public void setRect(@NonNull android.graphics.Rect);
-    method public void setRoundRect(int, int, int, int, float);
-    method public void setRoundRect(@NonNull android.graphics.Rect, float);
-  }
-
-  public class Paint {
-    ctor public Paint();
-    ctor public Paint(int);
-    ctor public Paint(android.graphics.Paint);
-    method public float ascent();
-    method public int breakText(char[], int, int, float, float[]);
-    method public int breakText(CharSequence, int, int, boolean, float, float[]);
-    method public int breakText(String, boolean, float, float[]);
-    method public void clearShadowLayer();
-    method public float descent();
-    method public boolean equalsForTextMeasurement(@NonNull android.graphics.Paint);
-    method public int getAlpha();
-    method @Nullable public android.graphics.BlendMode getBlendMode();
-    method @ColorInt public int getColor();
-    method public android.graphics.ColorFilter getColorFilter();
-    method @ColorLong public long getColorLong();
-    method public int getEndHyphenEdit();
-    method public boolean getFillPath(android.graphics.Path, android.graphics.Path);
-    method public int getFlags();
-    method public String getFontFeatureSettings();
-    method public float getFontMetrics(android.graphics.Paint.FontMetrics);
-    method public android.graphics.Paint.FontMetrics getFontMetrics();
-    method public int getFontMetricsInt(android.graphics.Paint.FontMetricsInt);
-    method public android.graphics.Paint.FontMetricsInt getFontMetricsInt();
-    method public float getFontSpacing();
-    method public String getFontVariationSettings();
-    method public int getHinting();
-    method public float getLetterSpacing();
-    method public android.graphics.MaskFilter getMaskFilter();
-    method public int getOffsetForAdvance(char[], int, int, int, int, boolean, float);
-    method public int getOffsetForAdvance(CharSequence, int, int, int, int, boolean, float);
-    method public android.graphics.PathEffect getPathEffect();
-    method public float getRunAdvance(char[], int, int, int, int, boolean, int);
-    method public float getRunAdvance(CharSequence, int, int, int, int, boolean, int);
-    method public android.graphics.Shader getShader();
-    method @ColorInt public int getShadowLayerColor();
-    method @ColorLong public long getShadowLayerColorLong();
-    method public float getShadowLayerDx();
-    method public float getShadowLayerDy();
-    method public float getShadowLayerRadius();
-    method public int getStartHyphenEdit();
-    method @Px public float getStrikeThruPosition();
-    method @Px public float getStrikeThruThickness();
-    method public android.graphics.Paint.Cap getStrokeCap();
-    method public android.graphics.Paint.Join getStrokeJoin();
-    method public float getStrokeMiter();
-    method public float getStrokeWidth();
-    method public android.graphics.Paint.Style getStyle();
-    method public android.graphics.Paint.Align getTextAlign();
-    method public void getTextBounds(String, int, int, android.graphics.Rect);
-    method public void getTextBounds(@NonNull CharSequence, int, int, @NonNull android.graphics.Rect);
-    method public void getTextBounds(char[], int, int, android.graphics.Rect);
-    method @NonNull public java.util.Locale getTextLocale();
-    method @NonNull @Size(min=1) public android.os.LocaleList getTextLocales();
-    method public void getTextPath(char[], int, int, float, float, android.graphics.Path);
-    method public void getTextPath(String, int, int, float, float, android.graphics.Path);
-    method public float getTextRunAdvances(@NonNull char[], @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int, boolean, @Nullable float[], @IntRange(from=0) int);
-    method public int getTextRunCursor(@NonNull char[], @IntRange(from=0) int, @IntRange(from=0) int, boolean, @IntRange(from=0) int, int);
-    method public int getTextRunCursor(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, boolean, @IntRange(from=0) int, int);
-    method public float getTextScaleX();
-    method public float getTextSize();
-    method public float getTextSkewX();
-    method public int getTextWidths(char[], int, int, float[]);
-    method public int getTextWidths(CharSequence, int, int, float[]);
-    method public int getTextWidths(String, int, int, float[]);
-    method public int getTextWidths(String, float[]);
-    method public android.graphics.Typeface getTypeface();
-    method @Px public float getUnderlinePosition();
-    method @Px public float getUnderlineThickness();
-    method @Px public float getWordSpacing();
-    method public android.graphics.Xfermode getXfermode();
-    method public boolean hasGlyph(String);
-    method public final boolean isAntiAlias();
-    method public final boolean isDither();
-    method public boolean isElegantTextHeight();
-    method public final boolean isFakeBoldText();
-    method public final boolean isFilterBitmap();
-    method public final boolean isLinearText();
-    method public final boolean isStrikeThruText();
-    method public final boolean isSubpixelText();
-    method public final boolean isUnderlineText();
-    method public float measureText(char[], int, int);
-    method public float measureText(String, int, int);
-    method public float measureText(String);
-    method public float measureText(CharSequence, int, int);
-    method public void reset();
-    method public void set(android.graphics.Paint);
-    method public void setARGB(int, int, int, int);
-    method public void setAlpha(int);
-    method public void setAntiAlias(boolean);
-    method public void setBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setColor(@ColorInt int);
-    method public void setColor(@ColorLong long);
-    method public android.graphics.ColorFilter setColorFilter(android.graphics.ColorFilter);
-    method public void setDither(boolean);
-    method public void setElegantTextHeight(boolean);
-    method public void setEndHyphenEdit(int);
-    method public void setFakeBoldText(boolean);
-    method public void setFilterBitmap(boolean);
-    method public void setFlags(int);
-    method public void setFontFeatureSettings(String);
-    method public boolean setFontVariationSettings(String);
-    method public void setHinting(int);
-    method public void setLetterSpacing(float);
-    method public void setLinearText(boolean);
-    method public android.graphics.MaskFilter setMaskFilter(android.graphics.MaskFilter);
-    method public android.graphics.PathEffect setPathEffect(android.graphics.PathEffect);
-    method public android.graphics.Shader setShader(android.graphics.Shader);
-    method public void setShadowLayer(float, float, float, @ColorInt int);
-    method public void setShadowLayer(float, float, float, @ColorLong long);
-    method public void setStartHyphenEdit(int);
-    method public void setStrikeThruText(boolean);
-    method public void setStrokeCap(android.graphics.Paint.Cap);
-    method public void setStrokeJoin(android.graphics.Paint.Join);
-    method public void setStrokeMiter(float);
-    method public void setStrokeWidth(float);
-    method public void setStyle(android.graphics.Paint.Style);
-    method public void setSubpixelText(boolean);
-    method public void setTextAlign(android.graphics.Paint.Align);
-    method public void setTextLocale(@NonNull java.util.Locale);
-    method public void setTextLocales(@NonNull @Size(min=1) android.os.LocaleList);
-    method public void setTextScaleX(float);
-    method public void setTextSize(float);
-    method public void setTextSkewX(float);
-    method public android.graphics.Typeface setTypeface(android.graphics.Typeface);
-    method public void setUnderlineText(boolean);
-    method public void setWordSpacing(@Px float);
-    method public android.graphics.Xfermode setXfermode(android.graphics.Xfermode);
-    field public static final int ANTI_ALIAS_FLAG = 1; // 0x1
-    field public static final int CURSOR_AFTER = 0; // 0x0
-    field public static final int CURSOR_AT = 4; // 0x4
-    field public static final int CURSOR_AT_OR_AFTER = 1; // 0x1
-    field public static final int CURSOR_AT_OR_BEFORE = 3; // 0x3
-    field public static final int CURSOR_BEFORE = 2; // 0x2
-    field public static final int DEV_KERN_TEXT_FLAG = 256; // 0x100
-    field public static final int DITHER_FLAG = 4; // 0x4
-    field public static final int EMBEDDED_BITMAP_TEXT_FLAG = 1024; // 0x400
-    field public static final int END_HYPHEN_EDIT_INSERT_ARMENIAN_HYPHEN = 3; // 0x3
-    field public static final int END_HYPHEN_EDIT_INSERT_HYPHEN = 2; // 0x2
-    field public static final int END_HYPHEN_EDIT_INSERT_MAQAF = 4; // 0x4
-    field public static final int END_HYPHEN_EDIT_INSERT_UCAS_HYPHEN = 5; // 0x5
-    field public static final int END_HYPHEN_EDIT_INSERT_ZWJ_AND_HYPHEN = 6; // 0x6
-    field public static final int END_HYPHEN_EDIT_NO_EDIT = 0; // 0x0
-    field public static final int END_HYPHEN_EDIT_REPLACE_WITH_HYPHEN = 1; // 0x1
-    field public static final int FAKE_BOLD_TEXT_FLAG = 32; // 0x20
-    field public static final int FILTER_BITMAP_FLAG = 2; // 0x2
-    field public static final int HINTING_OFF = 0; // 0x0
-    field public static final int HINTING_ON = 1; // 0x1
-    field public static final int LINEAR_TEXT_FLAG = 64; // 0x40
-    field public static final int START_HYPHEN_EDIT_INSERT_HYPHEN = 1; // 0x1
-    field public static final int START_HYPHEN_EDIT_INSERT_ZWJ = 2; // 0x2
-    field public static final int START_HYPHEN_EDIT_NO_EDIT = 0; // 0x0
-    field public static final int STRIKE_THRU_TEXT_FLAG = 16; // 0x10
-    field public static final int SUBPIXEL_TEXT_FLAG = 128; // 0x80
-    field public static final int UNDERLINE_TEXT_FLAG = 8; // 0x8
-  }
-
-  public enum Paint.Align {
-    enum_constant public static final android.graphics.Paint.Align CENTER;
-    enum_constant public static final android.graphics.Paint.Align LEFT;
-    enum_constant public static final android.graphics.Paint.Align RIGHT;
-  }
-
-  public enum Paint.Cap {
-    enum_constant public static final android.graphics.Paint.Cap BUTT;
-    enum_constant public static final android.graphics.Paint.Cap ROUND;
-    enum_constant public static final android.graphics.Paint.Cap SQUARE;
-  }
-
-  public static class Paint.FontMetrics {
-    ctor public Paint.FontMetrics();
-    field public float ascent;
-    field public float bottom;
-    field public float descent;
-    field public float leading;
-    field public float top;
-  }
-
-  public static class Paint.FontMetricsInt {
-    ctor public Paint.FontMetricsInt();
-    field public int ascent;
-    field public int bottom;
-    field public int descent;
-    field public int leading;
-    field public int top;
-  }
-
-  public enum Paint.Join {
-    enum_constant public static final android.graphics.Paint.Join BEVEL;
-    enum_constant public static final android.graphics.Paint.Join MITER;
-    enum_constant public static final android.graphics.Paint.Join ROUND;
-  }
-
-  public enum Paint.Style {
-    enum_constant public static final android.graphics.Paint.Style FILL;
-    enum_constant public static final android.graphics.Paint.Style FILL_AND_STROKE;
-    enum_constant public static final android.graphics.Paint.Style STROKE;
-  }
-
-  public class PaintFlagsDrawFilter extends android.graphics.DrawFilter {
-    ctor public PaintFlagsDrawFilter(int, int);
-  }
-
-  public class Path {
-    ctor public Path();
-    ctor public Path(@Nullable android.graphics.Path);
-    method public void addArc(@NonNull android.graphics.RectF, float, float);
-    method public void addArc(float, float, float, float, float, float);
-    method public void addCircle(float, float, float, @NonNull android.graphics.Path.Direction);
-    method public void addOval(@NonNull android.graphics.RectF, @NonNull android.graphics.Path.Direction);
-    method public void addOval(float, float, float, float, @NonNull android.graphics.Path.Direction);
-    method public void addPath(@NonNull android.graphics.Path, float, float);
-    method public void addPath(@NonNull android.graphics.Path);
-    method public void addPath(@NonNull android.graphics.Path, @NonNull android.graphics.Matrix);
-    method public void addRect(@NonNull android.graphics.RectF, @NonNull android.graphics.Path.Direction);
-    method public void addRect(float, float, float, float, @NonNull android.graphics.Path.Direction);
-    method public void addRoundRect(@NonNull android.graphics.RectF, float, float, @NonNull android.graphics.Path.Direction);
-    method public void addRoundRect(float, float, float, float, float, float, @NonNull android.graphics.Path.Direction);
-    method public void addRoundRect(@NonNull android.graphics.RectF, @NonNull float[], @NonNull android.graphics.Path.Direction);
-    method public void addRoundRect(float, float, float, float, @NonNull float[], @NonNull android.graphics.Path.Direction);
-    method @NonNull @Size(min=6, multiple=3) public float[] approximate(@FloatRange(from=0) float);
-    method public void arcTo(@NonNull android.graphics.RectF, float, float, boolean);
-    method public void arcTo(@NonNull android.graphics.RectF, float, float);
-    method public void arcTo(float, float, float, float, float, float, boolean);
-    method public void close();
-    method public void computeBounds(@NonNull android.graphics.RectF, boolean);
-    method public void cubicTo(float, float, float, float, float, float);
-    method @NonNull public android.graphics.Path.FillType getFillType();
-    method public void incReserve(int);
-    method @Deprecated public boolean isConvex();
-    method public boolean isEmpty();
-    method public boolean isInverseFillType();
-    method public boolean isRect(@Nullable android.graphics.RectF);
-    method public void lineTo(float, float);
-    method public void moveTo(float, float);
-    method public void offset(float, float, @Nullable android.graphics.Path);
-    method public void offset(float, float);
-    method public boolean op(@NonNull android.graphics.Path, @NonNull android.graphics.Path.Op);
-    method public boolean op(@NonNull android.graphics.Path, @NonNull android.graphics.Path, @NonNull android.graphics.Path.Op);
-    method public void quadTo(float, float, float, float);
-    method public void rCubicTo(float, float, float, float, float, float);
-    method public void rLineTo(float, float);
-    method public void rMoveTo(float, float);
-    method public void rQuadTo(float, float, float, float);
-    method public void reset();
-    method public void rewind();
-    method public void set(@NonNull android.graphics.Path);
-    method public void setFillType(@NonNull android.graphics.Path.FillType);
-    method public void setLastPoint(float, float);
-    method public void toggleInverseFillType();
-    method public void transform(@NonNull android.graphics.Matrix, @Nullable android.graphics.Path);
-    method public void transform(@NonNull android.graphics.Matrix);
-  }
-
-  public enum Path.Direction {
-    enum_constant public static final android.graphics.Path.Direction CCW;
-    enum_constant public static final android.graphics.Path.Direction CW;
-  }
-
-  public enum Path.FillType {
-    enum_constant public static final android.graphics.Path.FillType EVEN_ODD;
-    enum_constant public static final android.graphics.Path.FillType INVERSE_EVEN_ODD;
-    enum_constant public static final android.graphics.Path.FillType INVERSE_WINDING;
-    enum_constant public static final android.graphics.Path.FillType WINDING;
-  }
-
-  public enum Path.Op {
-    enum_constant public static final android.graphics.Path.Op DIFFERENCE;
-    enum_constant public static final android.graphics.Path.Op INTERSECT;
-    enum_constant public static final android.graphics.Path.Op REVERSE_DIFFERENCE;
-    enum_constant public static final android.graphics.Path.Op UNION;
-    enum_constant public static final android.graphics.Path.Op XOR;
-  }
-
-  public class PathDashPathEffect extends android.graphics.PathEffect {
-    ctor public PathDashPathEffect(android.graphics.Path, float, float, android.graphics.PathDashPathEffect.Style);
-  }
-
-  public enum PathDashPathEffect.Style {
-    enum_constant public static final android.graphics.PathDashPathEffect.Style MORPH;
-    enum_constant public static final android.graphics.PathDashPathEffect.Style ROTATE;
-    enum_constant public static final android.graphics.PathDashPathEffect.Style TRANSLATE;
-  }
-
-  public class PathEffect {
-    ctor public PathEffect();
-  }
-
-  public class PathMeasure {
-    ctor public PathMeasure();
-    ctor public PathMeasure(android.graphics.Path, boolean);
-    method public float getLength();
-    method public boolean getMatrix(float, android.graphics.Matrix, int);
-    method public boolean getPosTan(float, float[], float[]);
-    method public boolean getSegment(float, float, android.graphics.Path, boolean);
-    method public boolean isClosed();
-    method public boolean nextContour();
-    method public void setPath(android.graphics.Path, boolean);
-    field public static final int POSITION_MATRIX_FLAG = 1; // 0x1
-    field public static final int TANGENT_MATRIX_FLAG = 2; // 0x2
-  }
-
-  public class Picture {
-    ctor public Picture();
-    ctor public Picture(android.graphics.Picture);
-    method @NonNull public android.graphics.Canvas beginRecording(int, int);
-    method public void draw(@NonNull android.graphics.Canvas);
-    method public void endRecording();
-    method public int getHeight();
-    method public int getWidth();
-    method public boolean requiresHardwareAcceleration();
-  }
-
-  public class PixelFormat {
-    ctor public PixelFormat();
-    method public static boolean formatHasAlpha(int);
-    method public static void getPixelFormatInfo(int, android.graphics.PixelFormat);
-    field @Deprecated public static final int A_8 = 8; // 0x8
-    field @Deprecated public static final int JPEG = 256; // 0x100
-    field @Deprecated public static final int LA_88 = 10; // 0xa
-    field @Deprecated public static final int L_8 = 9; // 0x9
-    field public static final int OPAQUE = -1; // 0xffffffff
-    field public static final int RGBA_1010102 = 43; // 0x2b
-    field @Deprecated public static final int RGBA_4444 = 7; // 0x7
-    field @Deprecated public static final int RGBA_5551 = 6; // 0x6
-    field public static final int RGBA_8888 = 1; // 0x1
-    field public static final int RGBA_F16 = 22; // 0x16
-    field public static final int RGBX_8888 = 2; // 0x2
-    field @Deprecated public static final int RGB_332 = 11; // 0xb
-    field public static final int RGB_565 = 4; // 0x4
-    field public static final int RGB_888 = 3; // 0x3
-    field public static final int TRANSLUCENT = -3; // 0xfffffffd
-    field public static final int TRANSPARENT = -2; // 0xfffffffe
-    field public static final int UNKNOWN = 0; // 0x0
-    field @Deprecated public static final int YCbCr_420_SP = 17; // 0x11
-    field @Deprecated public static final int YCbCr_422_I = 20; // 0x14
-    field @Deprecated public static final int YCbCr_422_SP = 16; // 0x10
-    field public int bitsPerPixel;
-    field public int bytesPerPixel;
-  }
-
-  public class Point implements android.os.Parcelable {
-    ctor public Point();
-    ctor public Point(int, int);
-    ctor public Point(@NonNull android.graphics.Point);
-    method public int describeContents();
-    method public final boolean equals(int, int);
-    method public final void negate();
-    method public final void offset(int, int);
-    method public void readFromParcel(@NonNull android.os.Parcel);
-    method public void set(int, int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.graphics.Point> CREATOR;
-    field public int x;
-    field public int y;
-  }
-
-  public class PointF implements android.os.Parcelable {
-    ctor public PointF();
-    ctor public PointF(float, float);
-    ctor public PointF(@NonNull android.graphics.Point);
-    ctor public PointF(@NonNull android.graphics.PointF);
-    method public int describeContents();
-    method public final boolean equals(float, float);
-    method public final float length();
-    method public static float length(float, float);
-    method public final void negate();
-    method public final void offset(float, float);
-    method public void readFromParcel(@NonNull android.os.Parcel);
-    method public final void set(float, float);
-    method public final void set(@NonNull android.graphics.PointF);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.graphics.PointF> CREATOR;
-    field public float x;
-    field public float y;
-  }
-
-  public class PorterDuff {
-    ctor public PorterDuff();
-  }
-
-  public enum PorterDuff.Mode {
-    enum_constant public static final android.graphics.PorterDuff.Mode ADD;
-    enum_constant public static final android.graphics.PorterDuff.Mode CLEAR;
-    enum_constant public static final android.graphics.PorterDuff.Mode DARKEN;
-    enum_constant public static final android.graphics.PorterDuff.Mode DST;
-    enum_constant public static final android.graphics.PorterDuff.Mode DST_ATOP;
-    enum_constant public static final android.graphics.PorterDuff.Mode DST_IN;
-    enum_constant public static final android.graphics.PorterDuff.Mode DST_OUT;
-    enum_constant public static final android.graphics.PorterDuff.Mode DST_OVER;
-    enum_constant public static final android.graphics.PorterDuff.Mode LIGHTEN;
-    enum_constant public static final android.graphics.PorterDuff.Mode MULTIPLY;
-    enum_constant public static final android.graphics.PorterDuff.Mode OVERLAY;
-    enum_constant public static final android.graphics.PorterDuff.Mode SCREEN;
-    enum_constant public static final android.graphics.PorterDuff.Mode SRC;
-    enum_constant public static final android.graphics.PorterDuff.Mode SRC_ATOP;
-    enum_constant public static final android.graphics.PorterDuff.Mode SRC_IN;
-    enum_constant public static final android.graphics.PorterDuff.Mode SRC_OUT;
-    enum_constant public static final android.graphics.PorterDuff.Mode SRC_OVER;
-    enum_constant public static final android.graphics.PorterDuff.Mode XOR;
-  }
-
-  public class PorterDuffColorFilter extends android.graphics.ColorFilter {
-    ctor public PorterDuffColorFilter(@ColorInt int, @NonNull android.graphics.PorterDuff.Mode);
-  }
-
-  public class PorterDuffXfermode extends android.graphics.Xfermode {
-    ctor public PorterDuffXfermode(android.graphics.PorterDuff.Mode);
-  }
-
-  public interface PostProcessor {
-    method public int onPostProcess(@NonNull android.graphics.Canvas);
-  }
-
-  public class RadialGradient extends android.graphics.Shader {
-    ctor public RadialGradient(float, float, float, @ColorInt @NonNull int[], @Nullable float[], @NonNull android.graphics.Shader.TileMode);
-    ctor public RadialGradient(float, float, float, @ColorLong @NonNull long[], @Nullable float[], @NonNull android.graphics.Shader.TileMode);
-    ctor public RadialGradient(float, float, float, @ColorInt int, @ColorInt int, @NonNull android.graphics.Shader.TileMode);
-    ctor public RadialGradient(float, float, float, @ColorLong long, @ColorLong long, @NonNull android.graphics.Shader.TileMode);
-  }
-
-  public final class RecordingCanvas extends android.graphics.Canvas {
-    method public final void drawPatch(@NonNull android.graphics.NinePatch, @NonNull android.graphics.Rect, @Nullable android.graphics.Paint);
-    method public final void drawPatch(@NonNull android.graphics.NinePatch, @NonNull android.graphics.RectF, @Nullable android.graphics.Paint);
-  }
-
-  public final class Rect implements android.os.Parcelable {
-    ctor public Rect();
-    ctor public Rect(int, int, int, int);
-    ctor public Rect(@Nullable android.graphics.Rect);
-    method public int centerX();
-    method public int centerY();
-    method public boolean contains(int, int);
-    method public boolean contains(int, int, int, int);
-    method public boolean contains(@NonNull android.graphics.Rect);
-    method public int describeContents();
-    method public float exactCenterX();
-    method public float exactCenterY();
-    method @NonNull public String flattenToString();
-    method public int height();
-    method public void inset(int, int);
-    method @CheckResult public boolean intersect(int, int, int, int);
-    method @CheckResult public boolean intersect(@NonNull android.graphics.Rect);
-    method public boolean intersects(int, int, int, int);
-    method public static boolean intersects(@NonNull android.graphics.Rect, @NonNull android.graphics.Rect);
-    method public boolean isEmpty();
-    method public void offset(int, int);
-    method public void offsetTo(int, int);
-    method public void readFromParcel(@NonNull android.os.Parcel);
-    method public void set(int, int, int, int);
-    method public void set(@NonNull android.graphics.Rect);
-    method public void setEmpty();
-    method @CheckResult public boolean setIntersect(@NonNull android.graphics.Rect, @NonNull android.graphics.Rect);
-    method public void sort();
-    method @NonNull public String toShortString();
-    method @Nullable public static android.graphics.Rect unflattenFromString(@Nullable String);
-    method public void union(int, int, int, int);
-    method public void union(@NonNull android.graphics.Rect);
-    method public void union(int, int);
-    method public int width();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.graphics.Rect> CREATOR;
-    field public int bottom;
-    field public int left;
-    field public int right;
-    field public int top;
-  }
-
-  public class RectF implements android.os.Parcelable {
-    ctor public RectF();
-    ctor public RectF(float, float, float, float);
-    ctor public RectF(@Nullable android.graphics.RectF);
-    ctor public RectF(@Nullable android.graphics.Rect);
-    method public final float centerX();
-    method public final float centerY();
-    method public boolean contains(float, float);
-    method public boolean contains(float, float, float, float);
-    method public boolean contains(@NonNull android.graphics.RectF);
-    method public int describeContents();
-    method public final float height();
-    method public void inset(float, float);
-    method public boolean intersect(float, float, float, float);
-    method public boolean intersect(@NonNull android.graphics.RectF);
-    method public boolean intersects(float, float, float, float);
-    method public static boolean intersects(@NonNull android.graphics.RectF, @NonNull android.graphics.RectF);
-    method public final boolean isEmpty();
-    method public void offset(float, float);
-    method public void offsetTo(float, float);
-    method public void readFromParcel(@NonNull android.os.Parcel);
-    method public void round(@NonNull android.graphics.Rect);
-    method public void roundOut(@NonNull android.graphics.Rect);
-    method public void set(float, float, float, float);
-    method public void set(@NonNull android.graphics.RectF);
-    method public void set(@NonNull android.graphics.Rect);
-    method public void setEmpty();
-    method public boolean setIntersect(@NonNull android.graphics.RectF, @NonNull android.graphics.RectF);
-    method public void sort();
-    method @NonNull public String toShortString();
-    method public void union(float, float, float, float);
-    method public void union(@NonNull android.graphics.RectF);
-    method public void union(float, float);
-    method public final float width();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.graphics.RectF> CREATOR;
-    field public float bottom;
-    field public float left;
-    field public float right;
-    field public float top;
-  }
-
-  public class Region implements android.os.Parcelable {
-    ctor public Region();
-    ctor public Region(@NonNull android.graphics.Region);
-    ctor public Region(@NonNull android.graphics.Rect);
-    ctor public Region(int, int, int, int);
-    method public boolean contains(int, int);
-    method public int describeContents();
-    method @NonNull public android.graphics.Path getBoundaryPath();
-    method public boolean getBoundaryPath(@NonNull android.graphics.Path);
-    method @NonNull public android.graphics.Rect getBounds();
-    method public boolean getBounds(@NonNull android.graphics.Rect);
-    method public boolean isComplex();
-    method public boolean isEmpty();
-    method public boolean isRect();
-    method public boolean op(@NonNull android.graphics.Rect, @NonNull android.graphics.Region.Op);
-    method public boolean op(int, int, int, int, @NonNull android.graphics.Region.Op);
-    method public boolean op(@NonNull android.graphics.Region, @NonNull android.graphics.Region.Op);
-    method public boolean op(@NonNull android.graphics.Rect, @NonNull android.graphics.Region, @NonNull android.graphics.Region.Op);
-    method public boolean op(@NonNull android.graphics.Region, @NonNull android.graphics.Region, @NonNull android.graphics.Region.Op);
-    method public boolean quickContains(@NonNull android.graphics.Rect);
-    method public boolean quickContains(int, int, int, int);
-    method public boolean quickReject(@NonNull android.graphics.Rect);
-    method public boolean quickReject(int, int, int, int);
-    method public boolean quickReject(android.graphics.Region);
-    method public boolean set(@NonNull android.graphics.Region);
-    method public boolean set(@NonNull android.graphics.Rect);
-    method public boolean set(int, int, int, int);
-    method public void setEmpty();
-    method public boolean setPath(@NonNull android.graphics.Path, @NonNull android.graphics.Region);
-    method public void translate(int, int);
-    method public void translate(int, int, android.graphics.Region);
-    method public final boolean union(@NonNull android.graphics.Rect);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.graphics.Region> CREATOR;
-  }
-
-  public enum Region.Op {
-    enum_constant public static final android.graphics.Region.Op DIFFERENCE;
-    enum_constant public static final android.graphics.Region.Op INTERSECT;
-    enum_constant public static final android.graphics.Region.Op REPLACE;
-    enum_constant public static final android.graphics.Region.Op REVERSE_DIFFERENCE;
-    enum_constant public static final android.graphics.Region.Op UNION;
-    enum_constant public static final android.graphics.Region.Op XOR;
-  }
-
-  public class RegionIterator {
-    ctor public RegionIterator(android.graphics.Region);
-    method public final boolean next(android.graphics.Rect);
-  }
-
-  public final class RenderNode {
-    ctor public RenderNode(@Nullable String);
-    method @NonNull public android.graphics.RecordingCanvas beginRecording(int, int);
-    method @NonNull public android.graphics.RecordingCanvas beginRecording();
-    method public long computeApproximateMemoryUsage();
-    method public void discardDisplayList();
-    method public void endRecording();
-    method public float getAlpha();
-    method @ColorInt public int getAmbientShadowColor();
-    method public int getBottom();
-    method @FloatRange(from=0.0f, to=java.lang.Float.MAX_VALUE) public float getCameraDistance();
-    method public boolean getClipToBounds();
-    method public boolean getClipToOutline();
-    method public float getElevation();
-    method public int getHeight();
-    method public void getInverseMatrix(@NonNull android.graphics.Matrix);
-    method public int getLeft();
-    method public void getMatrix(@NonNull android.graphics.Matrix);
-    method public float getPivotX();
-    method public float getPivotY();
-    method public int getRight();
-    method public float getRotationX();
-    method public float getRotationY();
-    method public float getRotationZ();
-    method public float getScaleX();
-    method public float getScaleY();
-    method @ColorInt public int getSpotShadowColor();
-    method public int getTop();
-    method public float getTranslationX();
-    method public float getTranslationY();
-    method public float getTranslationZ();
-    method public long getUniqueId();
-    method public boolean getUseCompositingLayer();
-    method public int getWidth();
-    method public boolean hasDisplayList();
-    method public boolean hasIdentityMatrix();
-    method public boolean hasOverlappingRendering();
-    method public boolean hasShadow();
-    method public boolean isForceDarkAllowed();
-    method public boolean isPivotExplicitlySet();
-    method public boolean offsetLeftAndRight(int);
-    method public boolean offsetTopAndBottom(int);
-    method public boolean resetPivot();
-    method public boolean setAlpha(float);
-    method public boolean setAmbientShadowColor(@ColorInt int);
-    method public boolean setCameraDistance(@FloatRange(from=0.0f, to=java.lang.Float.MAX_VALUE) float);
-    method public boolean setClipRect(@Nullable android.graphics.Rect);
-    method public boolean setClipToBounds(boolean);
-    method public boolean setClipToOutline(boolean);
-    method public boolean setElevation(float);
-    method public boolean setForceDarkAllowed(boolean);
-    method public boolean setHasOverlappingRendering(boolean);
-    method public boolean setOutline(@Nullable android.graphics.Outline);
-    method public boolean setPivotX(float);
-    method public boolean setPivotY(float);
-    method public boolean setPosition(int, int, int, int);
-    method public boolean setPosition(@NonNull android.graphics.Rect);
-    method public boolean setProjectBackwards(boolean);
-    method public boolean setProjectionReceiver(boolean);
-    method public boolean setRotationX(float);
-    method public boolean setRotationY(float);
-    method public boolean setRotationZ(float);
-    method public boolean setScaleX(float);
-    method public boolean setScaleY(float);
-    method public boolean setSpotShadowColor(@ColorInt int);
-    method public boolean setTranslationX(float);
-    method public boolean setTranslationY(float);
-    method public boolean setTranslationZ(float);
-    method public boolean setUseCompositingLayer(boolean, @Nullable android.graphics.Paint);
-  }
-
-  public class Shader {
-    ctor @Deprecated public Shader();
-    method public boolean getLocalMatrix(@NonNull android.graphics.Matrix);
-    method public void setLocalMatrix(@Nullable android.graphics.Matrix);
-  }
-
-  public enum Shader.TileMode {
-    enum_constant public static final android.graphics.Shader.TileMode CLAMP;
-    enum_constant public static final android.graphics.Shader.TileMode MIRROR;
-    enum_constant public static final android.graphics.Shader.TileMode REPEAT;
-  }
-
-  public class SumPathEffect extends android.graphics.PathEffect {
-    ctor public SumPathEffect(android.graphics.PathEffect, android.graphics.PathEffect);
-  }
-
-  public class SurfaceTexture {
-    ctor public SurfaceTexture(int);
-    ctor public SurfaceTexture(int, boolean);
-    ctor public SurfaceTexture(boolean);
-    method public void attachToGLContext(int);
-    method public void detachFromGLContext();
-    method public long getTimestamp();
-    method public void getTransformMatrix(float[]);
-    method public boolean isReleased();
-    method public void release();
-    method public void releaseTexImage();
-    method public void setDefaultBufferSize(int, int);
-    method public void setOnFrameAvailableListener(@Nullable android.graphics.SurfaceTexture.OnFrameAvailableListener);
-    method public void setOnFrameAvailableListener(@Nullable android.graphics.SurfaceTexture.OnFrameAvailableListener, @Nullable android.os.Handler);
-    method public void updateTexImage();
-  }
-
-  public static interface SurfaceTexture.OnFrameAvailableListener {
-    method public void onFrameAvailable(android.graphics.SurfaceTexture);
-  }
-
-  @Deprecated public static class SurfaceTexture.OutOfResourcesException extends java.lang.Exception {
-    ctor @Deprecated public SurfaceTexture.OutOfResourcesException();
-    ctor @Deprecated public SurfaceTexture.OutOfResourcesException(String);
-  }
-
-  public class SweepGradient extends android.graphics.Shader {
-    ctor public SweepGradient(float, float, @ColorInt @NonNull int[], @Nullable float[]);
-    ctor public SweepGradient(float, float, @ColorLong @NonNull long[], @Nullable float[]);
-    ctor public SweepGradient(float, float, @ColorInt int, @ColorInt int);
-    ctor public SweepGradient(float, float, @ColorLong long, @ColorLong long);
-  }
-
-  public class Typeface {
-    method public static android.graphics.Typeface create(String, int);
-    method public static android.graphics.Typeface create(android.graphics.Typeface, int);
-    method @NonNull public static android.graphics.Typeface create(@Nullable android.graphics.Typeface, @IntRange(from=1, to=1000) int, boolean);
-    method public static android.graphics.Typeface createFromAsset(android.content.res.AssetManager, String);
-    method public static android.graphics.Typeface createFromFile(@Nullable java.io.File);
-    method public static android.graphics.Typeface createFromFile(@Nullable String);
-    method public static android.graphics.Typeface defaultFromStyle(int);
-    method public int getStyle();
-    method @IntRange(from=0, to=1000) public int getWeight();
-    method public final boolean isBold();
-    method public final boolean isItalic();
-    field public static final int BOLD = 1; // 0x1
-    field public static final int BOLD_ITALIC = 3; // 0x3
-    field public static final android.graphics.Typeface DEFAULT;
-    field public static final android.graphics.Typeface DEFAULT_BOLD;
-    field public static final int ITALIC = 2; // 0x2
-    field public static final android.graphics.Typeface MONOSPACE;
-    field public static final int NORMAL = 0; // 0x0
-    field public static final android.graphics.Typeface SANS_SERIF;
-    field public static final android.graphics.Typeface SERIF;
-  }
-
-  public static final class Typeface.Builder {
-    ctor public Typeface.Builder(@NonNull java.io.File);
-    ctor public Typeface.Builder(@NonNull java.io.FileDescriptor);
-    ctor public Typeface.Builder(@NonNull String);
-    ctor public Typeface.Builder(@NonNull android.content.res.AssetManager, @NonNull String);
-    method public android.graphics.Typeface build();
-    method public android.graphics.Typeface.Builder setFallback(@Nullable String);
-    method public android.graphics.Typeface.Builder setFontVariationSettings(@Nullable String);
-    method public android.graphics.Typeface.Builder setFontVariationSettings(@Nullable android.graphics.fonts.FontVariationAxis[]);
-    method public android.graphics.Typeface.Builder setItalic(boolean);
-    method public android.graphics.Typeface.Builder setTtcIndex(@IntRange(from=0) int);
-    method public android.graphics.Typeface.Builder setWeight(@IntRange(from=1, to=1000) int);
-  }
-
-  public static final class Typeface.CustomFallbackBuilder {
-    ctor public Typeface.CustomFallbackBuilder(@NonNull android.graphics.fonts.FontFamily);
-    method @NonNull public android.graphics.Typeface.CustomFallbackBuilder addCustomFallback(@NonNull android.graphics.fonts.FontFamily);
-    method @NonNull public android.graphics.Typeface build();
-    method @IntRange(from=64) public static int getMaxCustomFallbackCount();
-    method @NonNull public android.graphics.Typeface.CustomFallbackBuilder setStyle(@NonNull android.graphics.fonts.FontStyle);
-    method @NonNull public android.graphics.Typeface.CustomFallbackBuilder setSystemFallback(@NonNull String);
-  }
-
-  public class Xfermode {
-    ctor public Xfermode();
-  }
-
-  public class YuvImage {
-    ctor public YuvImage(byte[], int, int, int, int[]);
-    method public boolean compressToJpeg(android.graphics.Rect, int, java.io.OutputStream);
-    method public int getHeight();
-    method public int[] getStrides();
-    method public int getWidth();
-    method public byte[] getYuvData();
-    method public int getYuvFormat();
-  }
-
-}
-
-package android.graphics.drawable {
-
-  public class AdaptiveIconDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
-    ctor public AdaptiveIconDrawable(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable);
-    method public void draw(android.graphics.Canvas);
-    method public android.graphics.drawable.Drawable getBackground();
-    method public static float getExtraInsetFraction();
-    method public android.graphics.drawable.Drawable getForeground();
-    method public android.graphics.Path getIconMask();
-    method public int getOpacity();
-    method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
-    method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
-    method public void setAlpha(int);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void setDither(boolean);
-    method public void setOpacity(int);
-    method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
-  }
-
-  public interface Animatable {
-    method public boolean isRunning();
-    method public void start();
-    method public void stop();
-  }
-
-  public interface Animatable2 extends android.graphics.drawable.Animatable {
-    method public void clearAnimationCallbacks();
-    method public void registerAnimationCallback(@NonNull android.graphics.drawable.Animatable2.AnimationCallback);
-    method public boolean unregisterAnimationCallback(@NonNull android.graphics.drawable.Animatable2.AnimationCallback);
-  }
-
-  public abstract static class Animatable2.AnimationCallback {
-    ctor public Animatable2.AnimationCallback();
-    method public void onAnimationEnd(android.graphics.drawable.Drawable);
-    method public void onAnimationStart(android.graphics.drawable.Drawable);
-  }
-
-  public class AnimatedImageDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Animatable2 {
-    ctor public AnimatedImageDrawable();
-    method public void clearAnimationCallbacks();
-    method public void draw(@NonNull android.graphics.Canvas);
-    method public int getOpacity();
-    method public int getRepeatCount();
-    method public final boolean isAutoMirrored();
-    method public boolean isRunning();
-    method public void registerAnimationCallback(@NonNull android.graphics.drawable.Animatable2.AnimationCallback);
-    method public void setAlpha(@IntRange(from=0, to=255) int);
-    method public void setColorFilter(@Nullable android.graphics.ColorFilter);
-    method public void setRepeatCount(@IntRange(from=android.graphics.drawable.AnimatedImageDrawable.REPEAT_INFINITE) int);
-    method public void start();
-    method public void stop();
-    method public boolean unregisterAnimationCallback(@NonNull android.graphics.drawable.Animatable2.AnimationCallback);
-    field public static final int REPEAT_INFINITE = -1; // 0xffffffff
-  }
-
-  public class AnimatedStateListDrawable extends android.graphics.drawable.StateListDrawable {
-    ctor public AnimatedStateListDrawable();
-    method public void addState(@NonNull int[], @NonNull android.graphics.drawable.Drawable, int);
-    method public <T extends android.graphics.drawable.Drawable & android.graphics.drawable.Animatable> void addTransition(int, int, @NonNull T, boolean);
-  }
-
-  public class AnimatedVectorDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Animatable2 {
-    ctor public AnimatedVectorDrawable();
-    method public void clearAnimationCallbacks();
-    method public void draw(android.graphics.Canvas);
-    method public int getOpacity();
-    method public boolean isRunning();
-    method public void registerAnimationCallback(@NonNull android.graphics.drawable.Animatable2.AnimationCallback);
-    method public void reset();
-    method public void setAlpha(int);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void start();
-    method public void stop();
-    method public boolean unregisterAnimationCallback(@NonNull android.graphics.drawable.Animatable2.AnimationCallback);
-  }
-
-  public class AnimationDrawable extends android.graphics.drawable.DrawableContainer implements android.graphics.drawable.Animatable java.lang.Runnable {
-    ctor public AnimationDrawable();
-    method public void addFrame(@NonNull android.graphics.drawable.Drawable, int);
-    method public int getDuration(int);
-    method public android.graphics.drawable.Drawable getFrame(int);
-    method public int getNumberOfFrames();
-    method public boolean isOneShot();
-    method public boolean isRunning();
-    method public void run();
-    method public void setOneShot(boolean);
-    method public void start();
-    method public void stop();
-  }
-
-  public class BitmapDrawable extends android.graphics.drawable.Drawable {
-    ctor @Deprecated public BitmapDrawable();
-    ctor @Deprecated public BitmapDrawable(android.content.res.Resources);
-    ctor @Deprecated public BitmapDrawable(android.graphics.Bitmap);
-    ctor public BitmapDrawable(android.content.res.Resources, android.graphics.Bitmap);
-    ctor @Deprecated public BitmapDrawable(String);
-    ctor public BitmapDrawable(android.content.res.Resources, String);
-    ctor @Deprecated public BitmapDrawable(java.io.InputStream);
-    ctor public BitmapDrawable(android.content.res.Resources, java.io.InputStream);
-    method public void draw(android.graphics.Canvas);
-    method public final android.graphics.Bitmap getBitmap();
-    method public final android.graphics.drawable.Drawable.ConstantState getConstantState();
-    method public int getGravity();
-    method public int getOpacity();
-    method public final android.graphics.Paint getPaint();
-    method public android.graphics.Shader.TileMode getTileModeX();
-    method public android.graphics.Shader.TileMode getTileModeY();
-    method public boolean hasAntiAlias();
-    method public boolean hasMipMap();
-    method public final boolean isAutoMirrored();
-    method public void setAlpha(int);
-    method public void setAntiAlias(boolean);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void setDither(boolean);
-    method public void setGravity(int);
-    method public void setMipMap(boolean);
-    method public void setTargetDensity(android.graphics.Canvas);
-    method public void setTargetDensity(android.util.DisplayMetrics);
-    method public void setTargetDensity(int);
-    method public void setTileModeX(android.graphics.Shader.TileMode);
-    method public void setTileModeXY(android.graphics.Shader.TileMode, android.graphics.Shader.TileMode);
-    method public final void setTileModeY(android.graphics.Shader.TileMode);
-  }
-
-  public class ClipDrawable extends android.graphics.drawable.DrawableWrapper {
-    ctor public ClipDrawable(android.graphics.drawable.Drawable, int, int);
-    field public static final int HORIZONTAL = 1; // 0x1
-    field public static final int VERTICAL = 2; // 0x2
-  }
-
-  public class ColorDrawable extends android.graphics.drawable.Drawable {
-    ctor public ColorDrawable();
-    ctor public ColorDrawable(@ColorInt int);
-    method public void draw(android.graphics.Canvas);
-    method @ColorInt public int getColor();
-    method public int getOpacity();
-    method public void setAlpha(int);
-    method public void setColor(@ColorInt int);
-    method public void setColorFilter(android.graphics.ColorFilter);
-  }
-
-  public class ColorStateListDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
-    ctor public ColorStateListDrawable();
-    ctor public ColorStateListDrawable(@NonNull android.content.res.ColorStateList);
-    method public void clearAlpha();
-    method public void draw(@NonNull android.graphics.Canvas);
-    method @NonNull public android.content.res.ColorStateList getColorStateList();
-    method public int getOpacity();
-    method public boolean hasFocusStateSpecified();
-    method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
-    method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
-    method public void setAlpha(@IntRange(from=0, to=255) int);
-    method public void setColorFilter(@Nullable android.graphics.ColorFilter);
-    method public void setColorStateList(@NonNull android.content.res.ColorStateList);
-    method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
-  }
-
-  public abstract class Drawable {
-    ctor public Drawable();
-    method public void applyTheme(@NonNull android.content.res.Resources.Theme);
-    method public boolean canApplyTheme();
-    method public void clearColorFilter();
-    method public final void copyBounds(@NonNull android.graphics.Rect);
-    method @NonNull public final android.graphics.Rect copyBounds();
-    method @Nullable public static android.graphics.drawable.Drawable createFromPath(String);
-    method public static android.graphics.drawable.Drawable createFromResourceStream(android.content.res.Resources, android.util.TypedValue, java.io.InputStream, String);
-    method @Deprecated @Nullable public static android.graphics.drawable.Drawable createFromResourceStream(@Nullable android.content.res.Resources, @Nullable android.util.TypedValue, @Nullable java.io.InputStream, @Nullable String, @Nullable android.graphics.BitmapFactory.Options);
-    method public static android.graphics.drawable.Drawable createFromStream(java.io.InputStream, String);
-    method @NonNull public static android.graphics.drawable.Drawable createFromXml(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method @NonNull public static android.graphics.drawable.Drawable createFromXml(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, @Nullable android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method @NonNull public static android.graphics.drawable.Drawable createFromXmlInner(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, @NonNull android.util.AttributeSet) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method @NonNull public static android.graphics.drawable.Drawable createFromXmlInner(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, @NonNull android.util.AttributeSet, @Nullable android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public abstract void draw(@NonNull android.graphics.Canvas);
-    method @IntRange(from=0, to=255) public int getAlpha();
-    method @NonNull public final android.graphics.Rect getBounds();
-    method @Nullable public android.graphics.drawable.Drawable.Callback getCallback();
-    method public int getChangingConfigurations();
-    method @Nullable public android.graphics.ColorFilter getColorFilter();
-    method @Nullable public android.graphics.drawable.Drawable.ConstantState getConstantState();
-    method @NonNull public android.graphics.drawable.Drawable getCurrent();
-    method @NonNull public android.graphics.Rect getDirtyBounds();
-    method public void getHotspotBounds(@NonNull android.graphics.Rect);
-    method public int getIntrinsicHeight();
-    method public int getIntrinsicWidth();
-    method public int getLayoutDirection();
-    method @IntRange(from=0, to=10000) public final int getLevel();
-    method public int getMinimumHeight();
-    method public int getMinimumWidth();
-    method @Deprecated public abstract int getOpacity();
-    method @NonNull public android.graphics.Insets getOpticalInsets();
-    method public void getOutline(@NonNull android.graphics.Outline);
-    method public boolean getPadding(@NonNull android.graphics.Rect);
-    method @NonNull public int[] getState();
-    method @Nullable public android.graphics.Region getTransparentRegion();
-    method public void inflate(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, @NonNull android.util.AttributeSet) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public void inflate(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, @NonNull android.util.AttributeSet, @Nullable android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public void invalidateSelf();
-    method public boolean isAutoMirrored();
-    method public boolean isFilterBitmap();
-    method public boolean isProjected();
-    method public boolean isStateful();
-    method public final boolean isVisible();
-    method public void jumpToCurrentState();
-    method @NonNull public android.graphics.drawable.Drawable mutate();
-    method protected void onBoundsChange(android.graphics.Rect);
-    method public boolean onLayoutDirectionChanged(int);
-    method protected boolean onLevelChange(int);
-    method protected boolean onStateChange(int[]);
-    method public static int resolveOpacity(int, int);
-    method public void scheduleSelf(@NonNull Runnable, long);
-    method public abstract void setAlpha(@IntRange(from=0, to=255) int);
-    method public void setAutoMirrored(boolean);
-    method public void setBounds(int, int, int, int);
-    method public void setBounds(@NonNull android.graphics.Rect);
-    method public final void setCallback(@Nullable android.graphics.drawable.Drawable.Callback);
-    method public void setChangingConfigurations(int);
-    method public abstract void setColorFilter(@Nullable android.graphics.ColorFilter);
-    method @Deprecated public void setColorFilter(@ColorInt int, @NonNull android.graphics.PorterDuff.Mode);
-    method @Deprecated public void setDither(boolean);
-    method public void setFilterBitmap(boolean);
-    method public void setHotspot(float, float);
-    method public void setHotspotBounds(int, int, int, int);
-    method public final boolean setLayoutDirection(int);
-    method public final boolean setLevel(@IntRange(from=0, to=10000) int);
-    method public boolean setState(@NonNull int[]);
-    method public void setTint(@ColorInt int);
-    method public void setTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setTintList(@Nullable android.content.res.ColorStateList);
-    method public void setTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public boolean setVisible(boolean, boolean);
-    method public void unscheduleSelf(@NonNull Runnable);
-  }
-
-  public static interface Drawable.Callback {
-    method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
-    method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
-    method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
-  }
-
-  public abstract static class Drawable.ConstantState {
-    ctor public Drawable.ConstantState();
-    method public boolean canApplyTheme();
-    method public abstract int getChangingConfigurations();
-    method @NonNull public abstract android.graphics.drawable.Drawable newDrawable();
-    method @NonNull public android.graphics.drawable.Drawable newDrawable(@Nullable android.content.res.Resources);
-    method @NonNull public android.graphics.drawable.Drawable newDrawable(@Nullable android.content.res.Resources, @Nullable android.content.res.Resources.Theme);
-  }
-
-  public class DrawableContainer extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
-    ctor public DrawableContainer();
-    method public void draw(android.graphics.Canvas);
-    method public int getOpacity();
-    method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
-    method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
-    method public boolean selectDrawable(int);
-    method public void setAlpha(int);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method protected void setConstantState(android.graphics.drawable.DrawableContainer.DrawableContainerState);
-    method public void setDither(boolean);
-    method public void setEnterFadeDuration(int);
-    method public void setExitFadeDuration(int);
-    method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
-  }
-
-  public abstract static class DrawableContainer.DrawableContainerState extends android.graphics.drawable.Drawable.ConstantState {
-    method public final int addChild(android.graphics.drawable.Drawable);
-    method public boolean canConstantState();
-    method protected void computeConstantSize();
-    method public int getChangingConfigurations();
-    method public final android.graphics.drawable.Drawable getChild(int);
-    method public final int getChildCount();
-    method public final android.graphics.drawable.Drawable[] getChildren();
-    method public final int getConstantHeight();
-    method public final int getConstantMinimumHeight();
-    method public final int getConstantMinimumWidth();
-    method public final android.graphics.Rect getConstantPadding();
-    method public final int getConstantWidth();
-    method public final int getEnterFadeDuration();
-    method public final int getExitFadeDuration();
-    method public final int getOpacity();
-    method public void growArray(int, int);
-    method public final boolean isConstantSize();
-    method public final boolean isStateful();
-    method public final void setConstantSize(boolean);
-    method public final void setEnterFadeDuration(int);
-    method public final void setExitFadeDuration(int);
-    method public final void setVariablePadding(boolean);
-  }
-
-  public abstract class DrawableWrapper extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
-    ctor public DrawableWrapper(@Nullable android.graphics.drawable.Drawable);
-    method public void draw(@NonNull android.graphics.Canvas);
-    method @Nullable public android.graphics.drawable.Drawable getDrawable();
-    method public int getOpacity();
-    method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
-    method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
-    method public void setAlpha(int);
-    method public void setColorFilter(@Nullable android.graphics.ColorFilter);
-    method public void setDrawable(@Nullable android.graphics.drawable.Drawable);
-    method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
-  }
-
-  public class GradientDrawable extends android.graphics.drawable.Drawable {
-    ctor public GradientDrawable();
-    ctor public GradientDrawable(android.graphics.drawable.GradientDrawable.Orientation, @ColorInt int[]);
-    method public void draw(android.graphics.Canvas);
-    method @Nullable public android.content.res.ColorStateList getColor();
-    method @Nullable public int[] getColors();
-    method @Nullable public float[] getCornerRadii();
-    method public float getCornerRadius();
-    method public float getGradientCenterX();
-    method public float getGradientCenterY();
-    method public float getGradientRadius();
-    method public int getGradientType();
-    method @Px public int getInnerRadius();
-    method public float getInnerRadiusRatio();
-    method public int getOpacity();
-    method public android.graphics.drawable.GradientDrawable.Orientation getOrientation();
-    method public int getShape();
-    method @Px public int getThickness();
-    method public float getThicknessRatio();
-    method public boolean getUseLevel();
-    method public void setAlpha(int);
-    method public void setColor(@ColorInt int);
-    method public void setColor(@Nullable android.content.res.ColorStateList);
-    method public void setColorFilter(@Nullable android.graphics.ColorFilter);
-    method public void setColors(@ColorInt @Nullable int[]);
-    method public void setColors(@ColorInt @Nullable int[], @Nullable float[]);
-    method public void setCornerRadii(@Nullable float[]);
-    method public void setCornerRadius(float);
-    method public void setDither(boolean);
-    method public void setGradientCenter(float, float);
-    method public void setGradientRadius(float);
-    method public void setGradientType(int);
-    method public void setInnerRadius(@Px int);
-    method public void setInnerRadiusRatio(@FloatRange(from=0.0f, fromInclusive=false) float);
-    method public void setOrientation(android.graphics.drawable.GradientDrawable.Orientation);
-    method public void setPadding(@Px int, @Px int, @Px int, @Px int);
-    method public void setShape(int);
-    method public void setSize(int, int);
-    method public void setStroke(int, @ColorInt int);
-    method public void setStroke(int, android.content.res.ColorStateList);
-    method public void setStroke(int, @ColorInt int, float, float);
-    method public void setStroke(int, android.content.res.ColorStateList, float, float);
-    method public void setThickness(@Px int);
-    method public void setThicknessRatio(@FloatRange(from=0.0f, fromInclusive=false) float);
-    method public void setUseLevel(boolean);
-    field public static final int LINE = 2; // 0x2
-    field public static final int LINEAR_GRADIENT = 0; // 0x0
-    field public static final int OVAL = 1; // 0x1
-    field public static final int RADIAL_GRADIENT = 1; // 0x1
-    field public static final int RECTANGLE = 0; // 0x0
-    field public static final int RING = 3; // 0x3
-    field public static final int SWEEP_GRADIENT = 2; // 0x2
-  }
-
-  public enum GradientDrawable.Orientation {
-    enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation BL_TR;
-    enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation BOTTOM_TOP;
-    enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation BR_TL;
-    enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation LEFT_RIGHT;
-    enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation RIGHT_LEFT;
-    enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation TL_BR;
-    enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation TOP_BOTTOM;
-    enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation TR_BL;
-  }
-
-  public final class Icon implements android.os.Parcelable {
-    method public static android.graphics.drawable.Icon createWithAdaptiveBitmap(android.graphics.Bitmap);
-    method @NonNull public static android.graphics.drawable.Icon createWithAdaptiveBitmapContentUri(@NonNull String);
-    method @NonNull public static android.graphics.drawable.Icon createWithAdaptiveBitmapContentUri(@NonNull android.net.Uri);
-    method public static android.graphics.drawable.Icon createWithBitmap(android.graphics.Bitmap);
-    method public static android.graphics.drawable.Icon createWithContentUri(String);
-    method public static android.graphics.drawable.Icon createWithContentUri(android.net.Uri);
-    method public static android.graphics.drawable.Icon createWithData(byte[], int, int);
-    method public static android.graphics.drawable.Icon createWithFilePath(String);
-    method public static android.graphics.drawable.Icon createWithResource(android.content.Context, @DrawableRes int);
-    method public static android.graphics.drawable.Icon createWithResource(String, @DrawableRes int);
-    method public int describeContents();
-    method @IdRes public int getResId();
-    method @NonNull public String getResPackage();
-    method public int getType();
-    method @NonNull public android.net.Uri getUri();
-    method public android.graphics.drawable.Drawable loadDrawable(android.content.Context);
-    method public void loadDrawableAsync(android.content.Context, android.os.Message);
-    method public void loadDrawableAsync(android.content.Context, android.graphics.drawable.Icon.OnDrawableLoadedListener, android.os.Handler);
-    method public android.graphics.drawable.Icon setTint(@ColorInt int);
-    method @NonNull public android.graphics.drawable.Icon setTintBlendMode(@NonNull android.graphics.BlendMode);
-    method public android.graphics.drawable.Icon setTintList(android.content.res.ColorStateList);
-    method @NonNull public android.graphics.drawable.Icon setTintMode(@NonNull android.graphics.PorterDuff.Mode);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.graphics.drawable.Icon> CREATOR;
-    field public static final int TYPE_ADAPTIVE_BITMAP = 5; // 0x5
-    field public static final int TYPE_BITMAP = 1; // 0x1
-    field public static final int TYPE_DATA = 3; // 0x3
-    field public static final int TYPE_RESOURCE = 2; // 0x2
-    field public static final int TYPE_URI = 4; // 0x4
-    field public static final int TYPE_URI_ADAPTIVE_BITMAP = 6; // 0x6
-  }
-
-  public static interface Icon.OnDrawableLoadedListener {
-    method public void onDrawableLoaded(android.graphics.drawable.Drawable);
-  }
-
-  public class InsetDrawable extends android.graphics.drawable.DrawableWrapper {
-    ctor public InsetDrawable(@Nullable android.graphics.drawable.Drawable, int);
-    ctor public InsetDrawable(@Nullable android.graphics.drawable.Drawable, float);
-    ctor public InsetDrawable(@Nullable android.graphics.drawable.Drawable, int, int, int, int);
-    ctor public InsetDrawable(@Nullable android.graphics.drawable.Drawable, float, float, float, float);
-  }
-
-  public class LayerDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
-    ctor public LayerDrawable(@NonNull android.graphics.drawable.Drawable[]);
-    method public int addLayer(android.graphics.drawable.Drawable);
-    method public void draw(android.graphics.Canvas);
-    method public android.graphics.drawable.Drawable findDrawableByLayerId(int);
-    method public int findIndexByLayerId(int);
-    method public int getBottomPadding();
-    method public android.graphics.drawable.Drawable getDrawable(int);
-    method public int getEndPadding();
-    method public int getId(int);
-    method public int getLayerGravity(int);
-    method public int getLayerHeight(int);
-    method public int getLayerInsetBottom(int);
-    method public int getLayerInsetEnd(int);
-    method public int getLayerInsetLeft(int);
-    method public int getLayerInsetRight(int);
-    method public int getLayerInsetStart(int);
-    method public int getLayerInsetTop(int);
-    method public int getLayerWidth(int);
-    method public int getLeftPadding();
-    method public int getNumberOfLayers();
-    method public int getOpacity();
-    method public int getPaddingMode();
-    method public int getRightPadding();
-    method public int getStartPadding();
-    method public int getTopPadding();
-    method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
-    method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
-    method public void setAlpha(int);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void setDither(boolean);
-    method public void setDrawable(int, android.graphics.drawable.Drawable);
-    method public boolean setDrawableByLayerId(int, android.graphics.drawable.Drawable);
-    method public void setId(int, int);
-    method public void setLayerGravity(int, int);
-    method public void setLayerHeight(int, int);
-    method public void setLayerInset(int, int, int, int, int);
-    method public void setLayerInsetBottom(int, int);
-    method public void setLayerInsetEnd(int, int);
-    method public void setLayerInsetLeft(int, int);
-    method public void setLayerInsetRelative(int, int, int, int, int);
-    method public void setLayerInsetRight(int, int);
-    method public void setLayerInsetStart(int, int);
-    method public void setLayerInsetTop(int, int);
-    method public void setLayerSize(int, int, int);
-    method public void setLayerWidth(int, int);
-    method public void setOpacity(int);
-    method public void setPadding(int, int, int, int);
-    method public void setPaddingMode(int);
-    method public void setPaddingRelative(int, int, int, int);
-    method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
-    field public static final int INSET_UNDEFINED = -2147483648; // 0x80000000
-    field public static final int PADDING_MODE_NEST = 0; // 0x0
-    field public static final int PADDING_MODE_STACK = 1; // 0x1
-  }
-
-  public class LevelListDrawable extends android.graphics.drawable.DrawableContainer {
-    ctor public LevelListDrawable();
-    method public void addLevel(int, int, android.graphics.drawable.Drawable);
-  }
-
-  public class NinePatchDrawable extends android.graphics.drawable.Drawable {
-    ctor @Deprecated public NinePatchDrawable(android.graphics.Bitmap, byte[], android.graphics.Rect, String);
-    ctor public NinePatchDrawable(android.content.res.Resources, android.graphics.Bitmap, byte[], android.graphics.Rect, String);
-    ctor @Deprecated public NinePatchDrawable(@NonNull android.graphics.NinePatch);
-    ctor public NinePatchDrawable(@Nullable android.content.res.Resources, @NonNull android.graphics.NinePatch);
-    method public void draw(android.graphics.Canvas);
-    method public int getOpacity();
-    method @NonNull public android.graphics.Paint getPaint();
-    method public void setAlpha(int);
-    method public void setColorFilter(@Nullable android.graphics.ColorFilter);
-    method public void setDither(boolean);
-    method public void setTargetDensity(@NonNull android.graphics.Canvas);
-    method public void setTargetDensity(@NonNull android.util.DisplayMetrics);
-    method public void setTargetDensity(int);
-  }
-
-  public class PaintDrawable extends android.graphics.drawable.ShapeDrawable {
-    ctor public PaintDrawable();
-    ctor public PaintDrawable(int);
-    method public void setCornerRadii(float[]);
-    method public void setCornerRadius(float);
-  }
-
-  public class PictureDrawable extends android.graphics.drawable.Drawable {
-    ctor public PictureDrawable(android.graphics.Picture);
-    method public void draw(android.graphics.Canvas);
-    method public int getOpacity();
-    method public android.graphics.Picture getPicture();
-    method public void setAlpha(int);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void setPicture(android.graphics.Picture);
-  }
-
-  public class RippleDrawable extends android.graphics.drawable.LayerDrawable {
-    ctor public RippleDrawable(@NonNull android.content.res.ColorStateList, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable);
-    method public int getRadius();
-    method public void setColor(android.content.res.ColorStateList);
-    method public void setRadius(int);
-    field public static final int RADIUS_AUTO = -1; // 0xffffffff
-  }
-
-  public class RotateDrawable extends android.graphics.drawable.DrawableWrapper {
-    ctor public RotateDrawable();
-    method public float getFromDegrees();
-    method public float getPivotX();
-    method public float getPivotY();
-    method public float getToDegrees();
-    method public boolean isPivotXRelative();
-    method public boolean isPivotYRelative();
-    method public void setFromDegrees(float);
-    method public void setPivotX(float);
-    method public void setPivotXRelative(boolean);
-    method public void setPivotY(float);
-    method public void setPivotYRelative(boolean);
-    method public void setToDegrees(float);
-  }
-
-  public class ScaleDrawable extends android.graphics.drawable.DrawableWrapper {
-    ctor public ScaleDrawable(android.graphics.drawable.Drawable, int, float, float);
-  }
-
-  public class ShapeDrawable extends android.graphics.drawable.Drawable {
-    ctor public ShapeDrawable();
-    ctor public ShapeDrawable(android.graphics.drawable.shapes.Shape);
-    method public void draw(android.graphics.Canvas);
-    method public int getOpacity();
-    method public android.graphics.Paint getPaint();
-    method public android.graphics.drawable.ShapeDrawable.ShaderFactory getShaderFactory();
-    method public android.graphics.drawable.shapes.Shape getShape();
-    method protected boolean inflateTag(String, android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet);
-    method protected void onDraw(android.graphics.drawable.shapes.Shape, android.graphics.Canvas, android.graphics.Paint);
-    method public void setAlpha(int);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void setDither(boolean);
-    method public void setIntrinsicHeight(int);
-    method public void setIntrinsicWidth(int);
-    method public void setPadding(int, int, int, int);
-    method public void setPadding(android.graphics.Rect);
-    method public void setShaderFactory(android.graphics.drawable.ShapeDrawable.ShaderFactory);
-    method public void setShape(android.graphics.drawable.shapes.Shape);
-  }
-
-  public abstract static class ShapeDrawable.ShaderFactory {
-    ctor public ShapeDrawable.ShaderFactory();
-    method public abstract android.graphics.Shader resize(int, int);
-  }
-
-  public class StateListDrawable extends android.graphics.drawable.DrawableContainer {
-    ctor public StateListDrawable();
-    method public void addState(int[], android.graphics.drawable.Drawable);
-    method public int findStateDrawableIndex(@NonNull int[]);
-    method public int getStateCount();
-    method @Nullable public android.graphics.drawable.Drawable getStateDrawable(int);
-    method @NonNull public int[] getStateSet(int);
-  }
-
-  public class TransitionDrawable extends android.graphics.drawable.LayerDrawable implements android.graphics.drawable.Drawable.Callback {
-    ctor public TransitionDrawable(android.graphics.drawable.Drawable[]);
-    method public boolean isCrossFadeEnabled();
-    method public void resetTransition();
-    method public void reverseTransition(int);
-    method public void setCrossFadeEnabled(boolean);
-    method public void startTransition(int);
-  }
-
-  public class VectorDrawable extends android.graphics.drawable.Drawable {
-    ctor public VectorDrawable();
-    method public void draw(android.graphics.Canvas);
-    method public int getOpacity();
-    method public void setAlpha(int);
-    method public void setColorFilter(android.graphics.ColorFilter);
-  }
-
-}
-
-package android.graphics.drawable.shapes {
-
-  public class ArcShape extends android.graphics.drawable.shapes.RectShape {
-    ctor public ArcShape(float, float);
-    method public android.graphics.drawable.shapes.ArcShape clone() throws java.lang.CloneNotSupportedException;
-    method public final float getStartAngle();
-    method public final float getSweepAngle();
-  }
-
-  public class OvalShape extends android.graphics.drawable.shapes.RectShape {
-    ctor public OvalShape();
-    method public android.graphics.drawable.shapes.OvalShape clone() throws java.lang.CloneNotSupportedException;
-  }
-
-  public class PathShape extends android.graphics.drawable.shapes.Shape {
-    ctor public PathShape(@NonNull android.graphics.Path, float, float);
-    method public android.graphics.drawable.shapes.PathShape clone() throws java.lang.CloneNotSupportedException;
-    method public void draw(android.graphics.Canvas, android.graphics.Paint);
-  }
-
-  public class RectShape extends android.graphics.drawable.shapes.Shape {
-    ctor public RectShape();
-    method public android.graphics.drawable.shapes.RectShape clone() throws java.lang.CloneNotSupportedException;
-    method public void draw(android.graphics.Canvas, android.graphics.Paint);
-    method protected final android.graphics.RectF rect();
-  }
-
-  public class RoundRectShape extends android.graphics.drawable.shapes.RectShape {
-    ctor public RoundRectShape(@Nullable float[], @Nullable android.graphics.RectF, @Nullable float[]);
-    method public android.graphics.drawable.shapes.RoundRectShape clone() throws java.lang.CloneNotSupportedException;
-  }
-
-  public abstract class Shape implements java.lang.Cloneable {
-    ctor public Shape();
-    method public android.graphics.drawable.shapes.Shape clone() throws java.lang.CloneNotSupportedException;
-    method public abstract void draw(android.graphics.Canvas, android.graphics.Paint);
-    method public final float getHeight();
-    method public void getOutline(@NonNull android.graphics.Outline);
-    method public final float getWidth();
-    method public boolean hasAlpha();
-    method protected void onResize(float, float);
-    method public final void resize(float, float);
-  }
-
-}
-
-package android.graphics.fonts {
-
-  public final class Font {
-    method @Nullable public android.graphics.fonts.FontVariationAxis[] getAxes();
-    method @NonNull public java.nio.ByteBuffer getBuffer();
-    method @Nullable public java.io.File getFile();
-    method @NonNull public android.os.LocaleList getLocaleList();
-    method @NonNull public android.graphics.fonts.FontStyle getStyle();
-    method @IntRange(from=0) public int getTtcIndex();
-  }
-
-  public static final class Font.Builder {
-    ctor public Font.Builder(@NonNull java.nio.ByteBuffer);
-    ctor public Font.Builder(@NonNull java.io.File);
-    ctor public Font.Builder(@NonNull android.os.ParcelFileDescriptor);
-    ctor public Font.Builder(@NonNull android.os.ParcelFileDescriptor, @IntRange(from=0) long, @IntRange(from=0xffffffff) long);
-    ctor public Font.Builder(@NonNull android.content.res.AssetManager, @NonNull String);
-    ctor public Font.Builder(@NonNull android.content.res.Resources, int);
-    method @NonNull public android.graphics.fonts.Font build() throws java.io.IOException;
-    method @NonNull public android.graphics.fonts.Font.Builder setFontVariationSettings(@Nullable String);
-    method @NonNull public android.graphics.fonts.Font.Builder setFontVariationSettings(@Nullable android.graphics.fonts.FontVariationAxis[]);
-    method @NonNull public android.graphics.fonts.Font.Builder setSlant(int);
-    method @NonNull public android.graphics.fonts.Font.Builder setTtcIndex(@IntRange(from=0) int);
-    method @NonNull public android.graphics.fonts.Font.Builder setWeight(@IntRange(from=android.graphics.fonts.FontStyle.FONT_WEIGHT_MIN, to=android.graphics.fonts.FontStyle.FONT_WEIGHT_MAX) int);
-  }
-
-  public final class FontFamily {
-    method @NonNull public android.graphics.fonts.Font getFont(@IntRange(from=0) int);
-    method @IntRange(from=1) public int getSize();
-  }
-
-  public static final class FontFamily.Builder {
-    ctor public FontFamily.Builder(@NonNull android.graphics.fonts.Font);
-    method @NonNull public android.graphics.fonts.FontFamily.Builder addFont(@NonNull android.graphics.fonts.Font);
-    method @NonNull public android.graphics.fonts.FontFamily build();
-  }
-
-  public final class FontStyle {
-    ctor public FontStyle();
-    ctor public FontStyle(int, int);
-    method public int getSlant();
-    method @IntRange(from=0, to=1000) public int getWeight();
-    field public static final int FONT_SLANT_ITALIC = 1; // 0x1
-    field public static final int FONT_SLANT_UPRIGHT = 0; // 0x0
-    field public static final int FONT_WEIGHT_BLACK = 900; // 0x384
-    field public static final int FONT_WEIGHT_BOLD = 700; // 0x2bc
-    field public static final int FONT_WEIGHT_EXTRA_BOLD = 800; // 0x320
-    field public static final int FONT_WEIGHT_EXTRA_LIGHT = 200; // 0xc8
-    field public static final int FONT_WEIGHT_LIGHT = 300; // 0x12c
-    field public static final int FONT_WEIGHT_MAX = 1000; // 0x3e8
-    field public static final int FONT_WEIGHT_MEDIUM = 500; // 0x1f4
-    field public static final int FONT_WEIGHT_MIN = 1; // 0x1
-    field public static final int FONT_WEIGHT_NORMAL = 400; // 0x190
-    field public static final int FONT_WEIGHT_SEMI_BOLD = 600; // 0x258
-    field public static final int FONT_WEIGHT_THIN = 100; // 0x64
-  }
-
-  public final class FontVariationAxis {
-    ctor public FontVariationAxis(@NonNull String, float);
-    method @Nullable public static android.graphics.fonts.FontVariationAxis[] fromFontVariationSettings(@Nullable String);
-    method public float getStyleValue();
-    method public String getTag();
-    method @NonNull public static String toFontVariationSettings(@Nullable android.graphics.fonts.FontVariationAxis[]);
-  }
-
-  public final class SystemFonts {
-    method @NonNull public static java.util.Set<android.graphics.fonts.Font> getAvailableFonts();
-  }
-
-}
-
-package android.graphics.pdf {
-
-  public class PdfDocument {
-    ctor public PdfDocument();
-    method public void close();
-    method public void finishPage(android.graphics.pdf.PdfDocument.Page);
-    method public java.util.List<android.graphics.pdf.PdfDocument.PageInfo> getPages();
-    method public android.graphics.pdf.PdfDocument.Page startPage(android.graphics.pdf.PdfDocument.PageInfo);
-    method public void writeTo(java.io.OutputStream) throws java.io.IOException;
-  }
-
-  public static final class PdfDocument.Page {
-    method public android.graphics.Canvas getCanvas();
-    method public android.graphics.pdf.PdfDocument.PageInfo getInfo();
-  }
-
-  public static final class PdfDocument.PageInfo {
-    method public android.graphics.Rect getContentRect();
-    method public int getPageHeight();
-    method public int getPageNumber();
-    method public int getPageWidth();
-  }
-
-  public static final class PdfDocument.PageInfo.Builder {
-    ctor public PdfDocument.PageInfo.Builder(int, int, int);
-    method public android.graphics.pdf.PdfDocument.PageInfo create();
-    method public android.graphics.pdf.PdfDocument.PageInfo.Builder setContentRect(android.graphics.Rect);
-  }
-
-  public final class PdfRenderer implements java.lang.AutoCloseable {
-    ctor public PdfRenderer(@NonNull android.os.ParcelFileDescriptor) throws java.io.IOException;
-    method public void close();
-    method public int getPageCount();
-    method public android.graphics.pdf.PdfRenderer.Page openPage(int);
-    method public boolean shouldScaleForPrinting();
-  }
-
-  public final class PdfRenderer.Page implements java.lang.AutoCloseable {
-    method public void close();
-    method public int getHeight();
-    method public int getIndex();
-    method public int getWidth();
-    method public void render(@NonNull android.graphics.Bitmap, @Nullable android.graphics.Rect, @Nullable android.graphics.Matrix, int);
-    field public static final int RENDER_MODE_FOR_DISPLAY = 1; // 0x1
-    field public static final int RENDER_MODE_FOR_PRINT = 2; // 0x2
-  }
-
-}
-
-package android.graphics.text {
-
-  public class LineBreaker {
-    method @NonNull public android.graphics.text.LineBreaker.Result computeLineBreaks(@NonNull android.graphics.text.MeasuredText, @NonNull android.graphics.text.LineBreaker.ParagraphConstraints, @IntRange(from=0) int);
-    field public static final int BREAK_STRATEGY_BALANCED = 2; // 0x2
-    field public static final int BREAK_STRATEGY_HIGH_QUALITY = 1; // 0x1
-    field public static final int BREAK_STRATEGY_SIMPLE = 0; // 0x0
-    field public static final int HYPHENATION_FREQUENCY_FULL = 2; // 0x2
-    field public static final int HYPHENATION_FREQUENCY_NONE = 0; // 0x0
-    field public static final int HYPHENATION_FREQUENCY_NORMAL = 1; // 0x1
-    field public static final int JUSTIFICATION_MODE_INTER_WORD = 1; // 0x1
-    field public static final int JUSTIFICATION_MODE_NONE = 0; // 0x0
-  }
-
-  public static final class LineBreaker.Builder {
-    ctor public LineBreaker.Builder();
-    method @NonNull public android.graphics.text.LineBreaker build();
-    method @NonNull public android.graphics.text.LineBreaker.Builder setBreakStrategy(int);
-    method @NonNull public android.graphics.text.LineBreaker.Builder setHyphenationFrequency(int);
-    method @NonNull public android.graphics.text.LineBreaker.Builder setIndents(@Nullable int[]);
-    method @NonNull public android.graphics.text.LineBreaker.Builder setJustificationMode(int);
-  }
-
-  public static class LineBreaker.ParagraphConstraints {
-    ctor public LineBreaker.ParagraphConstraints();
-    method @FloatRange(from=0) @Px public float getDefaultTabStop();
-    method @FloatRange(from=0.0f) @Px public float getFirstWidth();
-    method @IntRange(from=0) @Px public int getFirstWidthLineCount();
-    method @Nullable public float[] getTabStops();
-    method @FloatRange(from=0.0f) @Px public float getWidth();
-    method public void setIndent(@FloatRange(from=0.0f) @Px float, @IntRange(from=0) @Px int);
-    method public void setTabStops(@Nullable float[], @FloatRange(from=0) @Px float);
-    method public void setWidth(@FloatRange(from=0.0f) @Px float);
-  }
-
-  public static class LineBreaker.Result {
-    method public int getEndLineHyphenEdit(int);
-    method @Px public float getLineAscent(@IntRange(from=0) int);
-    method @IntRange(from=0) public int getLineBreakOffset(@IntRange(from=0) int);
-    method @IntRange(from=0) public int getLineCount();
-    method @Px public float getLineDescent(@IntRange(from=0) int);
-    method @Px public float getLineWidth(@IntRange(from=0) int);
-    method public int getStartLineHyphenEdit(int);
-    method public boolean hasLineTab(int);
-  }
-
-  public class MeasuredText {
-    method public void getBounds(@IntRange(from=0) int, @IntRange(from=0) int, @NonNull android.graphics.Rect);
-    method @FloatRange(from=0.0f) @Px public float getCharWidthAt(@IntRange(from=0) int);
-    method @FloatRange(from=0.0) @Px public float getWidth(@IntRange(from=0) int, @IntRange(from=0) int);
-  }
-
-  public static final class MeasuredText.Builder {
-    ctor public MeasuredText.Builder(@NonNull char[]);
-    ctor public MeasuredText.Builder(@NonNull android.graphics.text.MeasuredText);
-    method @NonNull public android.graphics.text.MeasuredText.Builder appendReplacementRun(@NonNull android.graphics.Paint, @IntRange(from=0) int, @FloatRange(from=0) @Px float);
-    method @NonNull public android.graphics.text.MeasuredText.Builder appendStyleRun(@NonNull android.graphics.Paint, @IntRange(from=0) int, boolean);
-    method @NonNull public android.graphics.text.MeasuredText build();
-    method @NonNull public android.graphics.text.MeasuredText.Builder setComputeHyphenation(boolean);
-    method @NonNull public android.graphics.text.MeasuredText.Builder setComputeLayout(boolean);
-  }
-
-}
-
-package android.hardware {
-
-  @Deprecated public class Camera {
-    method @Deprecated public final void addCallbackBuffer(byte[]);
-    method @Deprecated public final void autoFocus(android.hardware.Camera.AutoFocusCallback);
-    method @Deprecated public final void cancelAutoFocus();
-    method @Deprecated public final boolean enableShutterSound(boolean);
-    method @Deprecated protected void finalize();
-    method @Deprecated public static void getCameraInfo(int, android.hardware.Camera.CameraInfo);
-    method @Deprecated public static int getNumberOfCameras();
-    method @Deprecated public android.hardware.Camera.Parameters getParameters();
-    method @Deprecated public final void lock();
-    method @Deprecated public static android.hardware.Camera open(int);
-    method @Deprecated public static android.hardware.Camera open();
-    method @Deprecated public final void reconnect() throws java.io.IOException;
-    method @Deprecated public final void release();
-    method @Deprecated public void setAutoFocusMoveCallback(android.hardware.Camera.AutoFocusMoveCallback);
-    method @Deprecated public final void setDisplayOrientation(int);
-    method @Deprecated public final void setErrorCallback(android.hardware.Camera.ErrorCallback);
-    method @Deprecated public final void setFaceDetectionListener(android.hardware.Camera.FaceDetectionListener);
-    method @Deprecated public final void setOneShotPreviewCallback(android.hardware.Camera.PreviewCallback);
-    method @Deprecated public void setParameters(android.hardware.Camera.Parameters);
-    method @Deprecated public final void setPreviewCallback(android.hardware.Camera.PreviewCallback);
-    method @Deprecated public final void setPreviewCallbackWithBuffer(android.hardware.Camera.PreviewCallback);
-    method @Deprecated public final void setPreviewDisplay(android.view.SurfaceHolder) throws java.io.IOException;
-    method @Deprecated public final void setPreviewTexture(android.graphics.SurfaceTexture) throws java.io.IOException;
-    method @Deprecated public final void setZoomChangeListener(android.hardware.Camera.OnZoomChangeListener);
-    method @Deprecated public final void startFaceDetection();
-    method @Deprecated public final void startPreview();
-    method @Deprecated public final void startSmoothZoom(int);
-    method @Deprecated public final void stopFaceDetection();
-    method @Deprecated public final void stopPreview();
-    method @Deprecated public final void stopSmoothZoom();
-    method @Deprecated public final void takePicture(android.hardware.Camera.ShutterCallback, android.hardware.Camera.PictureCallback, android.hardware.Camera.PictureCallback);
-    method @Deprecated public final void takePicture(android.hardware.Camera.ShutterCallback, android.hardware.Camera.PictureCallback, android.hardware.Camera.PictureCallback, android.hardware.Camera.PictureCallback);
-    method @Deprecated public final void unlock();
-    field @Deprecated public static final String ACTION_NEW_PICTURE = "android.hardware.action.NEW_PICTURE";
-    field @Deprecated public static final String ACTION_NEW_VIDEO = "android.hardware.action.NEW_VIDEO";
-    field @Deprecated public static final int CAMERA_ERROR_EVICTED = 2; // 0x2
-    field @Deprecated public static final int CAMERA_ERROR_SERVER_DIED = 100; // 0x64
-    field @Deprecated public static final int CAMERA_ERROR_UNKNOWN = 1; // 0x1
-  }
-
-  @Deprecated public static class Camera.Area {
-    ctor @Deprecated public Camera.Area(android.graphics.Rect, int);
-    field @Deprecated public android.graphics.Rect rect;
-    field @Deprecated public int weight;
-  }
-
-  @Deprecated public static interface Camera.AutoFocusCallback {
-    method @Deprecated public void onAutoFocus(boolean, android.hardware.Camera);
-  }
-
-  @Deprecated public static interface Camera.AutoFocusMoveCallback {
-    method @Deprecated public void onAutoFocusMoving(boolean, android.hardware.Camera);
-  }
-
-  @Deprecated public static class Camera.CameraInfo {
-    ctor @Deprecated public Camera.CameraInfo();
-    field @Deprecated public static final int CAMERA_FACING_BACK = 0; // 0x0
-    field @Deprecated public static final int CAMERA_FACING_FRONT = 1; // 0x1
-    field @Deprecated public boolean canDisableShutterSound;
-    field @Deprecated public int facing;
-    field @Deprecated public int orientation;
-  }
-
-  @Deprecated public static interface Camera.ErrorCallback {
-    method @Deprecated public void onError(int, android.hardware.Camera);
-  }
-
-  @Deprecated public static class Camera.Face {
-    ctor @Deprecated public Camera.Face();
-    field @Deprecated public int id;
-    field @Deprecated public android.graphics.Point leftEye;
-    field @Deprecated public android.graphics.Point mouth;
-    field @Deprecated public android.graphics.Rect rect;
-    field @Deprecated public android.graphics.Point rightEye;
-    field @Deprecated public int score;
-  }
-
-  @Deprecated public static interface Camera.FaceDetectionListener {
-    method @Deprecated public void onFaceDetection(android.hardware.Camera.Face[], android.hardware.Camera);
-  }
-
-  @Deprecated public static interface Camera.OnZoomChangeListener {
-    method @Deprecated public void onZoomChange(int, boolean, android.hardware.Camera);
-  }
-
-  @Deprecated public class Camera.Parameters {
-    method @Deprecated public String flatten();
-    method @Deprecated public String get(String);
-    method @Deprecated public String getAntibanding();
-    method @Deprecated public boolean getAutoExposureLock();
-    method @Deprecated public boolean getAutoWhiteBalanceLock();
-    method @Deprecated public String getColorEffect();
-    method @Deprecated public int getExposureCompensation();
-    method @Deprecated public float getExposureCompensationStep();
-    method @Deprecated public String getFlashMode();
-    method @Deprecated public float getFocalLength();
-    method @Deprecated public java.util.List<android.hardware.Camera.Area> getFocusAreas();
-    method @Deprecated public void getFocusDistances(float[]);
-    method @Deprecated public String getFocusMode();
-    method @Deprecated public float getHorizontalViewAngle();
-    method @Deprecated public int getInt(String);
-    method @Deprecated public int getJpegQuality();
-    method @Deprecated public int getJpegThumbnailQuality();
-    method @Deprecated public android.hardware.Camera.Size getJpegThumbnailSize();
-    method @Deprecated public int getMaxExposureCompensation();
-    method @Deprecated public int getMaxNumDetectedFaces();
-    method @Deprecated public int getMaxNumFocusAreas();
-    method @Deprecated public int getMaxNumMeteringAreas();
-    method @Deprecated public int getMaxZoom();
-    method @Deprecated public java.util.List<android.hardware.Camera.Area> getMeteringAreas();
-    method @Deprecated public int getMinExposureCompensation();
-    method @Deprecated public int getPictureFormat();
-    method @Deprecated public android.hardware.Camera.Size getPictureSize();
-    method @Deprecated public android.hardware.Camera.Size getPreferredPreviewSizeForVideo();
-    method @Deprecated public int getPreviewFormat();
-    method @Deprecated public void getPreviewFpsRange(int[]);
-    method @Deprecated public int getPreviewFrameRate();
-    method @Deprecated public android.hardware.Camera.Size getPreviewSize();
-    method @Deprecated public String getSceneMode();
-    method @Deprecated public java.util.List<java.lang.String> getSupportedAntibanding();
-    method @Deprecated public java.util.List<java.lang.String> getSupportedColorEffects();
-    method @Deprecated public java.util.List<java.lang.String> getSupportedFlashModes();
-    method @Deprecated public java.util.List<java.lang.String> getSupportedFocusModes();
-    method @Deprecated public java.util.List<android.hardware.Camera.Size> getSupportedJpegThumbnailSizes();
-    method @Deprecated public java.util.List<java.lang.Integer> getSupportedPictureFormats();
-    method @Deprecated public java.util.List<android.hardware.Camera.Size> getSupportedPictureSizes();
-    method @Deprecated public java.util.List<java.lang.Integer> getSupportedPreviewFormats();
-    method @Deprecated public java.util.List<int[]> getSupportedPreviewFpsRange();
-    method @Deprecated public java.util.List<java.lang.Integer> getSupportedPreviewFrameRates();
-    method @Deprecated public java.util.List<android.hardware.Camera.Size> getSupportedPreviewSizes();
-    method @Deprecated public java.util.List<java.lang.String> getSupportedSceneModes();
-    method @Deprecated public java.util.List<android.hardware.Camera.Size> getSupportedVideoSizes();
-    method @Deprecated public java.util.List<java.lang.String> getSupportedWhiteBalance();
-    method @Deprecated public float getVerticalViewAngle();
-    method @Deprecated public boolean getVideoStabilization();
-    method @Deprecated public String getWhiteBalance();
-    method @Deprecated public int getZoom();
-    method @Deprecated public java.util.List<java.lang.Integer> getZoomRatios();
-    method @Deprecated public boolean isAutoExposureLockSupported();
-    method @Deprecated public boolean isAutoWhiteBalanceLockSupported();
-    method @Deprecated public boolean isSmoothZoomSupported();
-    method @Deprecated public boolean isVideoSnapshotSupported();
-    method @Deprecated public boolean isVideoStabilizationSupported();
-    method @Deprecated public boolean isZoomSupported();
-    method @Deprecated public void remove(String);
-    method @Deprecated public void removeGpsData();
-    method @Deprecated public void set(String, String);
-    method @Deprecated public void set(String, int);
-    method @Deprecated public void setAntibanding(String);
-    method @Deprecated public void setAutoExposureLock(boolean);
-    method @Deprecated public void setAutoWhiteBalanceLock(boolean);
-    method @Deprecated public void setColorEffect(String);
-    method @Deprecated public void setExposureCompensation(int);
-    method @Deprecated public void setFlashMode(String);
-    method @Deprecated public void setFocusAreas(java.util.List<android.hardware.Camera.Area>);
-    method @Deprecated public void setFocusMode(String);
-    method @Deprecated public void setGpsAltitude(double);
-    method @Deprecated public void setGpsLatitude(double);
-    method @Deprecated public void setGpsLongitude(double);
-    method @Deprecated public void setGpsProcessingMethod(String);
-    method @Deprecated public void setGpsTimestamp(long);
-    method @Deprecated public void setJpegQuality(int);
-    method @Deprecated public void setJpegThumbnailQuality(int);
-    method @Deprecated public void setJpegThumbnailSize(int, int);
-    method @Deprecated public void setMeteringAreas(java.util.List<android.hardware.Camera.Area>);
-    method @Deprecated public void setPictureFormat(int);
-    method @Deprecated public void setPictureSize(int, int);
-    method @Deprecated public void setPreviewFormat(int);
-    method @Deprecated public void setPreviewFpsRange(int, int);
-    method @Deprecated public void setPreviewFrameRate(int);
-    method @Deprecated public void setPreviewSize(int, int);
-    method @Deprecated public void setRecordingHint(boolean);
-    method @Deprecated public void setRotation(int);
-    method @Deprecated public void setSceneMode(String);
-    method @Deprecated public void setVideoStabilization(boolean);
-    method @Deprecated public void setWhiteBalance(String);
-    method @Deprecated public void setZoom(int);
-    method @Deprecated public void unflatten(String);
-    field @Deprecated public static final String ANTIBANDING_50HZ = "50hz";
-    field @Deprecated public static final String ANTIBANDING_60HZ = "60hz";
-    field @Deprecated public static final String ANTIBANDING_AUTO = "auto";
-    field @Deprecated public static final String ANTIBANDING_OFF = "off";
-    field @Deprecated public static final String EFFECT_AQUA = "aqua";
-    field @Deprecated public static final String EFFECT_BLACKBOARD = "blackboard";
-    field @Deprecated public static final String EFFECT_MONO = "mono";
-    field @Deprecated public static final String EFFECT_NEGATIVE = "negative";
-    field @Deprecated public static final String EFFECT_NONE = "none";
-    field @Deprecated public static final String EFFECT_POSTERIZE = "posterize";
-    field @Deprecated public static final String EFFECT_SEPIA = "sepia";
-    field @Deprecated public static final String EFFECT_SOLARIZE = "solarize";
-    field @Deprecated public static final String EFFECT_WHITEBOARD = "whiteboard";
-    field @Deprecated public static final String FLASH_MODE_AUTO = "auto";
-    field @Deprecated public static final String FLASH_MODE_OFF = "off";
-    field @Deprecated public static final String FLASH_MODE_ON = "on";
-    field @Deprecated public static final String FLASH_MODE_RED_EYE = "red-eye";
-    field @Deprecated public static final String FLASH_MODE_TORCH = "torch";
-    field @Deprecated public static final int FOCUS_DISTANCE_FAR_INDEX = 2; // 0x2
-    field @Deprecated public static final int FOCUS_DISTANCE_NEAR_INDEX = 0; // 0x0
-    field @Deprecated public static final int FOCUS_DISTANCE_OPTIMAL_INDEX = 1; // 0x1
-    field @Deprecated public static final String FOCUS_MODE_AUTO = "auto";
-    field @Deprecated public static final String FOCUS_MODE_CONTINUOUS_PICTURE = "continuous-picture";
-    field @Deprecated public static final String FOCUS_MODE_CONTINUOUS_VIDEO = "continuous-video";
-    field @Deprecated public static final String FOCUS_MODE_EDOF = "edof";
-    field @Deprecated public static final String FOCUS_MODE_FIXED = "fixed";
-    field @Deprecated public static final String FOCUS_MODE_INFINITY = "infinity";
-    field @Deprecated public static final String FOCUS_MODE_MACRO = "macro";
-    field @Deprecated public static final int PREVIEW_FPS_MAX_INDEX = 1; // 0x1
-    field @Deprecated public static final int PREVIEW_FPS_MIN_INDEX = 0; // 0x0
-    field @Deprecated public static final String SCENE_MODE_ACTION = "action";
-    field @Deprecated public static final String SCENE_MODE_AUTO = "auto";
-    field @Deprecated public static final String SCENE_MODE_BARCODE = "barcode";
-    field @Deprecated public static final String SCENE_MODE_BEACH = "beach";
-    field @Deprecated public static final String SCENE_MODE_CANDLELIGHT = "candlelight";
-    field @Deprecated public static final String SCENE_MODE_FIREWORKS = "fireworks";
-    field @Deprecated public static final String SCENE_MODE_HDR = "hdr";
-    field @Deprecated public static final String SCENE_MODE_LANDSCAPE = "landscape";
-    field @Deprecated public static final String SCENE_MODE_NIGHT = "night";
-    field @Deprecated public static final String SCENE_MODE_NIGHT_PORTRAIT = "night-portrait";
-    field @Deprecated public static final String SCENE_MODE_PARTY = "party";
-    field @Deprecated public static final String SCENE_MODE_PORTRAIT = "portrait";
-    field @Deprecated public static final String SCENE_MODE_SNOW = "snow";
-    field @Deprecated public static final String SCENE_MODE_SPORTS = "sports";
-    field @Deprecated public static final String SCENE_MODE_STEADYPHOTO = "steadyphoto";
-    field @Deprecated public static final String SCENE_MODE_SUNSET = "sunset";
-    field @Deprecated public static final String SCENE_MODE_THEATRE = "theatre";
-    field @Deprecated public static final String WHITE_BALANCE_AUTO = "auto";
-    field @Deprecated public static final String WHITE_BALANCE_CLOUDY_DAYLIGHT = "cloudy-daylight";
-    field @Deprecated public static final String WHITE_BALANCE_DAYLIGHT = "daylight";
-    field @Deprecated public static final String WHITE_BALANCE_FLUORESCENT = "fluorescent";
-    field @Deprecated public static final String WHITE_BALANCE_INCANDESCENT = "incandescent";
-    field @Deprecated public static final String WHITE_BALANCE_SHADE = "shade";
-    field @Deprecated public static final String WHITE_BALANCE_TWILIGHT = "twilight";
-    field @Deprecated public static final String WHITE_BALANCE_WARM_FLUORESCENT = "warm-fluorescent";
-  }
-
-  @Deprecated public static interface Camera.PictureCallback {
-    method @Deprecated public void onPictureTaken(byte[], android.hardware.Camera);
-  }
-
-  @Deprecated public static interface Camera.PreviewCallback {
-    method @Deprecated public void onPreviewFrame(byte[], android.hardware.Camera);
-  }
-
-  @Deprecated public static interface Camera.ShutterCallback {
-    method @Deprecated public void onShutter();
-  }
-
-  @Deprecated public class Camera.Size {
-    ctor @Deprecated public Camera.Size(int, int);
-    field @Deprecated public int height;
-    field @Deprecated public int width;
-  }
-
-  public final class ConsumerIrManager {
-    method public android.hardware.ConsumerIrManager.CarrierFrequencyRange[] getCarrierFrequencies();
-    method public boolean hasIrEmitter();
-    method public void transmit(int, int[]);
-  }
-
-  public final class ConsumerIrManager.CarrierFrequencyRange {
-    ctor public ConsumerIrManager.CarrierFrequencyRange(int, int);
-    method public int getMaxFrequency();
-    method public int getMinFrequency();
-  }
-
-  public class GeomagneticField {
-    ctor public GeomagneticField(float, float, float, long);
-    method public float getDeclination();
-    method public float getFieldStrength();
-    method public float getHorizontalStrength();
-    method public float getInclination();
-    method public float getX();
-    method public float getY();
-    method public float getZ();
-  }
-
-  public final class HardwareBuffer implements java.lang.AutoCloseable android.os.Parcelable {
-    method public void close();
-    method @NonNull public static android.hardware.HardwareBuffer create(@IntRange(from=1) int, @IntRange(from=1) int, int, @IntRange(from=1) int, long);
-    method public int describeContents();
-    method public int getFormat();
-    method public int getHeight();
-    method public int getLayers();
-    method public long getUsage();
-    method public int getWidth();
-    method public boolean isClosed();
-    method public static boolean isSupported(@IntRange(from=1) int, @IntRange(from=1) int, int, @IntRange(from=1) int, long);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int BLOB = 33; // 0x21
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.HardwareBuffer> CREATOR;
-    field public static final int DS_24UI8 = 50; // 0x32
-    field public static final int DS_FP32UI8 = 52; // 0x34
-    field public static final int D_16 = 48; // 0x30
-    field public static final int D_24 = 49; // 0x31
-    field public static final int D_FP32 = 51; // 0x33
-    field public static final int RGBA_1010102 = 43; // 0x2b
-    field public static final int RGBA_8888 = 1; // 0x1
-    field public static final int RGBA_FP16 = 22; // 0x16
-    field public static final int RGBX_8888 = 2; // 0x2
-    field public static final int RGB_565 = 4; // 0x4
-    field public static final int RGB_888 = 3; // 0x3
-    field public static final int S_UI8 = 53; // 0x35
-    field public static final long USAGE_CPU_READ_OFTEN = 3L; // 0x3L
-    field public static final long USAGE_CPU_READ_RARELY = 2L; // 0x2L
-    field public static final long USAGE_CPU_WRITE_OFTEN = 48L; // 0x30L
-    field public static final long USAGE_CPU_WRITE_RARELY = 32L; // 0x20L
-    field public static final long USAGE_GPU_COLOR_OUTPUT = 512L; // 0x200L
-    field public static final long USAGE_GPU_CUBE_MAP = 33554432L; // 0x2000000L
-    field public static final long USAGE_GPU_DATA_BUFFER = 16777216L; // 0x1000000L
-    field public static final long USAGE_GPU_MIPMAP_COMPLETE = 67108864L; // 0x4000000L
-    field public static final long USAGE_GPU_SAMPLED_IMAGE = 256L; // 0x100L
-    field public static final long USAGE_PROTECTED_CONTENT = 16384L; // 0x4000L
-    field public static final long USAGE_SENSOR_DIRECT_DATA = 8388608L; // 0x800000L
-    field public static final long USAGE_VIDEO_ENCODE = 65536L; // 0x10000L
-    field public static final int YCBCR_420_888 = 35; // 0x23
-  }
-
-  public final class Sensor {
-    method public int getFifoMaxEventCount();
-    method public int getFifoReservedEventCount();
-    method public int getHighestDirectReportRateLevel();
-    method public int getId();
-    method public int getMaxDelay();
-    method public float getMaximumRange();
-    method public int getMinDelay();
-    method public String getName();
-    method public float getPower();
-    method public int getReportingMode();
-    method public float getResolution();
-    method public String getStringType();
-    method public int getType();
-    method public String getVendor();
-    method public int getVersion();
-    method public boolean isAdditionalInfoSupported();
-    method public boolean isDirectChannelTypeSupported(int);
-    method public boolean isDynamicSensor();
-    method public boolean isWakeUpSensor();
-    field public static final int REPORTING_MODE_CONTINUOUS = 0; // 0x0
-    field public static final int REPORTING_MODE_ONE_SHOT = 2; // 0x2
-    field public static final int REPORTING_MODE_ON_CHANGE = 1; // 0x1
-    field public static final int REPORTING_MODE_SPECIAL_TRIGGER = 3; // 0x3
-    field public static final String STRING_TYPE_ACCELEROMETER = "android.sensor.accelerometer";
-    field public static final String STRING_TYPE_ACCELEROMETER_UNCALIBRATED = "android.sensor.accelerometer_uncalibrated";
-    field public static final String STRING_TYPE_AMBIENT_TEMPERATURE = "android.sensor.ambient_temperature";
-    field public static final String STRING_TYPE_GAME_ROTATION_VECTOR = "android.sensor.game_rotation_vector";
-    field public static final String STRING_TYPE_GEOMAGNETIC_ROTATION_VECTOR = "android.sensor.geomagnetic_rotation_vector";
-    field public static final String STRING_TYPE_GRAVITY = "android.sensor.gravity";
-    field public static final String STRING_TYPE_GYROSCOPE = "android.sensor.gyroscope";
-    field public static final String STRING_TYPE_GYROSCOPE_UNCALIBRATED = "android.sensor.gyroscope_uncalibrated";
-    field public static final String STRING_TYPE_HEART_BEAT = "android.sensor.heart_beat";
-    field public static final String STRING_TYPE_HEART_RATE = "android.sensor.heart_rate";
-    field public static final String STRING_TYPE_HINGE_ANGLE = "android.sensor.hinge_angle";
-    field public static final String STRING_TYPE_LIGHT = "android.sensor.light";
-    field public static final String STRING_TYPE_LINEAR_ACCELERATION = "android.sensor.linear_acceleration";
-    field public static final String STRING_TYPE_LOW_LATENCY_OFFBODY_DETECT = "android.sensor.low_latency_offbody_detect";
-    field public static final String STRING_TYPE_MAGNETIC_FIELD = "android.sensor.magnetic_field";
-    field public static final String STRING_TYPE_MAGNETIC_FIELD_UNCALIBRATED = "android.sensor.magnetic_field_uncalibrated";
-    field public static final String STRING_TYPE_MOTION_DETECT = "android.sensor.motion_detect";
-    field @Deprecated public static final String STRING_TYPE_ORIENTATION = "android.sensor.orientation";
-    field public static final String STRING_TYPE_POSE_6DOF = "android.sensor.pose_6dof";
-    field public static final String STRING_TYPE_PRESSURE = "android.sensor.pressure";
-    field public static final String STRING_TYPE_PROXIMITY = "android.sensor.proximity";
-    field public static final String STRING_TYPE_RELATIVE_HUMIDITY = "android.sensor.relative_humidity";
-    field public static final String STRING_TYPE_ROTATION_VECTOR = "android.sensor.rotation_vector";
-    field public static final String STRING_TYPE_SIGNIFICANT_MOTION = "android.sensor.significant_motion";
-    field public static final String STRING_TYPE_STATIONARY_DETECT = "android.sensor.stationary_detect";
-    field public static final String STRING_TYPE_STEP_COUNTER = "android.sensor.step_counter";
-    field public static final String STRING_TYPE_STEP_DETECTOR = "android.sensor.step_detector";
-    field @Deprecated public static final String STRING_TYPE_TEMPERATURE = "android.sensor.temperature";
-    field public static final int TYPE_ACCELEROMETER = 1; // 0x1
-    field public static final int TYPE_ACCELEROMETER_UNCALIBRATED = 35; // 0x23
-    field public static final int TYPE_ALL = -1; // 0xffffffff
-    field public static final int TYPE_AMBIENT_TEMPERATURE = 13; // 0xd
-    field public static final int TYPE_DEVICE_PRIVATE_BASE = 65536; // 0x10000
-    field public static final int TYPE_GAME_ROTATION_VECTOR = 15; // 0xf
-    field public static final int TYPE_GEOMAGNETIC_ROTATION_VECTOR = 20; // 0x14
-    field public static final int TYPE_GRAVITY = 9; // 0x9
-    field public static final int TYPE_GYROSCOPE = 4; // 0x4
-    field public static final int TYPE_GYROSCOPE_UNCALIBRATED = 16; // 0x10
-    field public static final int TYPE_HEART_BEAT = 31; // 0x1f
-    field public static final int TYPE_HEART_RATE = 21; // 0x15
-    field public static final int TYPE_HINGE_ANGLE = 36; // 0x24
-    field public static final int TYPE_LIGHT = 5; // 0x5
-    field public static final int TYPE_LINEAR_ACCELERATION = 10; // 0xa
-    field public static final int TYPE_LOW_LATENCY_OFFBODY_DETECT = 34; // 0x22
-    field public static final int TYPE_MAGNETIC_FIELD = 2; // 0x2
-    field public static final int TYPE_MAGNETIC_FIELD_UNCALIBRATED = 14; // 0xe
-    field public static final int TYPE_MOTION_DETECT = 30; // 0x1e
-    field @Deprecated public static final int TYPE_ORIENTATION = 3; // 0x3
-    field public static final int TYPE_POSE_6DOF = 28; // 0x1c
-    field public static final int TYPE_PRESSURE = 6; // 0x6
-    field public static final int TYPE_PROXIMITY = 8; // 0x8
-    field public static final int TYPE_RELATIVE_HUMIDITY = 12; // 0xc
-    field public static final int TYPE_ROTATION_VECTOR = 11; // 0xb
-    field public static final int TYPE_SIGNIFICANT_MOTION = 17; // 0x11
-    field public static final int TYPE_STATIONARY_DETECT = 29; // 0x1d
-    field public static final int TYPE_STEP_COUNTER = 19; // 0x13
-    field public static final int TYPE_STEP_DETECTOR = 18; // 0x12
-    field @Deprecated public static final int TYPE_TEMPERATURE = 7; // 0x7
-  }
-
-  public class SensorAdditionalInfo {
-    field public static final int TYPE_FRAME_BEGIN = 0; // 0x0
-    field public static final int TYPE_FRAME_END = 1; // 0x1
-    field public static final int TYPE_INTERNAL_TEMPERATURE = 65537; // 0x10001
-    field public static final int TYPE_SAMPLING = 65540; // 0x10004
-    field public static final int TYPE_SENSOR_PLACEMENT = 65539; // 0x10003
-    field public static final int TYPE_UNTRACKED_DELAY = 65536; // 0x10000
-    field public static final int TYPE_VEC3_CALIBRATION = 65538; // 0x10002
-    field public final float[] floatValues;
-    field public final int[] intValues;
-    field public final android.hardware.Sensor sensor;
-    field public final int serial;
-    field public final int type;
-  }
-
-  public final class SensorDirectChannel implements java.nio.channels.Channel {
-    method public void close();
-    method public int configure(android.hardware.Sensor, int);
-    method public boolean isOpen();
-    field public static final int RATE_FAST = 2; // 0x2
-    field public static final int RATE_NORMAL = 1; // 0x1
-    field public static final int RATE_STOP = 0; // 0x0
-    field public static final int RATE_VERY_FAST = 3; // 0x3
-    field public static final int TYPE_HARDWARE_BUFFER = 2; // 0x2
-    field public static final int TYPE_MEMORY_FILE = 1; // 0x1
-  }
-
-  public class SensorEvent {
-    field public int accuracy;
-    field public android.hardware.Sensor sensor;
-    field public long timestamp;
-    field public final float[] values;
-  }
-
-  public abstract class SensorEventCallback implements android.hardware.SensorEventListener2 {
-    ctor public SensorEventCallback();
-    method public void onAccuracyChanged(android.hardware.Sensor, int);
-    method public void onFlushCompleted(android.hardware.Sensor);
-    method public void onSensorAdditionalInfo(android.hardware.SensorAdditionalInfo);
-    method public void onSensorChanged(android.hardware.SensorEvent);
-  }
-
-  public interface SensorEventListener {
-    method public void onAccuracyChanged(android.hardware.Sensor, int);
-    method public void onSensorChanged(android.hardware.SensorEvent);
-  }
-
-  public interface SensorEventListener2 extends android.hardware.SensorEventListener {
-    method public void onFlushCompleted(android.hardware.Sensor);
-  }
-
-  @Deprecated public interface SensorListener {
-    method @Deprecated public void onAccuracyChanged(int, int);
-    method @Deprecated public void onSensorChanged(int, float[]);
-  }
-
-  public abstract class SensorManager {
-    method public boolean cancelTriggerSensor(android.hardware.TriggerEventListener, android.hardware.Sensor);
-    method public android.hardware.SensorDirectChannel createDirectChannel(android.os.MemoryFile);
-    method public android.hardware.SensorDirectChannel createDirectChannel(android.hardware.HardwareBuffer);
-    method public boolean flush(android.hardware.SensorEventListener);
-    method public static float getAltitude(float, float);
-    method public static void getAngleChange(float[], float[], float[]);
-    method public android.hardware.Sensor getDefaultSensor(int);
-    method public android.hardware.Sensor getDefaultSensor(int, boolean);
-    method public java.util.List<android.hardware.Sensor> getDynamicSensorList(int);
-    method public static float getInclination(float[]);
-    method public static float[] getOrientation(float[], float[]);
-    method public static void getQuaternionFromVector(float[], float[]);
-    method public static boolean getRotationMatrix(float[], float[], float[], float[]);
-    method public static void getRotationMatrixFromVector(float[], float[]);
-    method public java.util.List<android.hardware.Sensor> getSensorList(int);
-    method @Deprecated public int getSensors();
-    method public boolean isDynamicSensorDiscoverySupported();
-    method public void registerDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorCallback);
-    method public void registerDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorCallback, android.os.Handler);
-    method @Deprecated public boolean registerListener(android.hardware.SensorListener, int);
-    method @Deprecated public boolean registerListener(android.hardware.SensorListener, int, int);
-    method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int);
-    method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int, int);
-    method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int, android.os.Handler);
-    method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int, int, android.os.Handler);
-    method public static boolean remapCoordinateSystem(float[], int, int, float[]);
-    method public boolean requestTriggerSensor(android.hardware.TriggerEventListener, android.hardware.Sensor);
-    method public void unregisterDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorCallback);
-    method @Deprecated public void unregisterListener(android.hardware.SensorListener);
-    method @Deprecated public void unregisterListener(android.hardware.SensorListener, int);
-    method public void unregisterListener(android.hardware.SensorEventListener, android.hardware.Sensor);
-    method public void unregisterListener(android.hardware.SensorEventListener);
-    field public static final int AXIS_MINUS_X = 129; // 0x81
-    field public static final int AXIS_MINUS_Y = 130; // 0x82
-    field public static final int AXIS_MINUS_Z = 131; // 0x83
-    field public static final int AXIS_X = 1; // 0x1
-    field public static final int AXIS_Y = 2; // 0x2
-    field public static final int AXIS_Z = 3; // 0x3
-    field @Deprecated public static final int DATA_X = 0; // 0x0
-    field @Deprecated public static final int DATA_Y = 1; // 0x1
-    field @Deprecated public static final int DATA_Z = 2; // 0x2
-    field public static final float GRAVITY_DEATH_STAR_I = 3.5303614E-7f;
-    field public static final float GRAVITY_EARTH = 9.80665f;
-    field public static final float GRAVITY_JUPITER = 23.12f;
-    field public static final float GRAVITY_MARS = 3.71f;
-    field public static final float GRAVITY_MERCURY = 3.7f;
-    field public static final float GRAVITY_MOON = 1.6f;
-    field public static final float GRAVITY_NEPTUNE = 11.0f;
-    field public static final float GRAVITY_PLUTO = 0.6f;
-    field public static final float GRAVITY_SATURN = 8.96f;
-    field public static final float GRAVITY_SUN = 275.0f;
-    field public static final float GRAVITY_THE_ISLAND = 4.815162f;
-    field public static final float GRAVITY_URANUS = 8.69f;
-    field public static final float GRAVITY_VENUS = 8.87f;
-    field public static final float LIGHT_CLOUDY = 100.0f;
-    field public static final float LIGHT_FULLMOON = 0.25f;
-    field public static final float LIGHT_NO_MOON = 0.001f;
-    field public static final float LIGHT_OVERCAST = 10000.0f;
-    field public static final float LIGHT_SHADE = 20000.0f;
-    field public static final float LIGHT_SUNLIGHT = 110000.0f;
-    field public static final float LIGHT_SUNLIGHT_MAX = 120000.0f;
-    field public static final float LIGHT_SUNRISE = 400.0f;
-    field public static final float MAGNETIC_FIELD_EARTH_MAX = 60.0f;
-    field public static final float MAGNETIC_FIELD_EARTH_MIN = 30.0f;
-    field public static final float PRESSURE_STANDARD_ATMOSPHERE = 1013.25f;
-    field @Deprecated public static final int RAW_DATA_INDEX = 3; // 0x3
-    field @Deprecated public static final int RAW_DATA_X = 3; // 0x3
-    field @Deprecated public static final int RAW_DATA_Y = 4; // 0x4
-    field @Deprecated public static final int RAW_DATA_Z = 5; // 0x5
-    field @Deprecated public static final int SENSOR_ACCELEROMETER = 2; // 0x2
-    field @Deprecated public static final int SENSOR_ALL = 127; // 0x7f
-    field public static final int SENSOR_DELAY_FASTEST = 0; // 0x0
-    field public static final int SENSOR_DELAY_GAME = 1; // 0x1
-    field public static final int SENSOR_DELAY_NORMAL = 3; // 0x3
-    field public static final int SENSOR_DELAY_UI = 2; // 0x2
-    field @Deprecated public static final int SENSOR_LIGHT = 16; // 0x10
-    field @Deprecated public static final int SENSOR_MAGNETIC_FIELD = 8; // 0x8
-    field @Deprecated public static final int SENSOR_MAX = 64; // 0x40
-    field @Deprecated public static final int SENSOR_MIN = 1; // 0x1
-    field @Deprecated public static final int SENSOR_ORIENTATION = 1; // 0x1
-    field @Deprecated public static final int SENSOR_ORIENTATION_RAW = 128; // 0x80
-    field @Deprecated public static final int SENSOR_PROXIMITY = 32; // 0x20
-    field public static final int SENSOR_STATUS_ACCURACY_HIGH = 3; // 0x3
-    field public static final int SENSOR_STATUS_ACCURACY_LOW = 1; // 0x1
-    field public static final int SENSOR_STATUS_ACCURACY_MEDIUM = 2; // 0x2
-    field public static final int SENSOR_STATUS_NO_CONTACT = -1; // 0xffffffff
-    field public static final int SENSOR_STATUS_UNRELIABLE = 0; // 0x0
-    field @Deprecated public static final int SENSOR_TEMPERATURE = 4; // 0x4
-    field @Deprecated public static final int SENSOR_TRICORDER = 64; // 0x40
-    field public static final float STANDARD_GRAVITY = 9.80665f;
-  }
-
-  public abstract static class SensorManager.DynamicSensorCallback {
-    ctor public SensorManager.DynamicSensorCallback();
-    method public void onDynamicSensorConnected(android.hardware.Sensor);
-    method public void onDynamicSensorDisconnected(android.hardware.Sensor);
-  }
-
-  public final class TriggerEvent {
-    field public android.hardware.Sensor sensor;
-    field public long timestamp;
-    field public final float[] values;
-  }
-
-  public abstract class TriggerEventListener {
-    ctor public TriggerEventListener();
-    method public abstract void onTrigger(android.hardware.TriggerEvent);
-  }
-
-}
-
-package android.hardware.biometrics {
-
-  public class BiometricManager {
-    method @Deprecated @RequiresPermission(android.Manifest.permission.USE_BIOMETRIC) public int canAuthenticate();
-    method @RequiresPermission(android.Manifest.permission.USE_BIOMETRIC) public int canAuthenticate(int);
-    field public static final int BIOMETRIC_ERROR_HW_UNAVAILABLE = 1; // 0x1
-    field public static final int BIOMETRIC_ERROR_NONE_ENROLLED = 11; // 0xb
-    field public static final int BIOMETRIC_ERROR_NO_HARDWARE = 12; // 0xc
-    field public static final int BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED = 15; // 0xf
-    field public static final int BIOMETRIC_SUCCESS = 0; // 0x0
-  }
-
-  public static interface BiometricManager.Authenticators {
-    field public static final int BIOMETRIC_STRONG = 15; // 0xf
-    field public static final int BIOMETRIC_WEAK = 255; // 0xff
-    field public static final int DEVICE_CREDENTIAL = 32768; // 0x8000
-  }
-
-  public class BiometricPrompt {
-    method @RequiresPermission(android.Manifest.permission.USE_BIOMETRIC) public void authenticate(@NonNull android.hardware.biometrics.BiometricPrompt.CryptoObject, @NonNull android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.biometrics.BiometricPrompt.AuthenticationCallback);
-    method @RequiresPermission(android.Manifest.permission.USE_BIOMETRIC) public void authenticate(@NonNull android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.biometrics.BiometricPrompt.AuthenticationCallback);
-    method @Nullable public int getAllowedAuthenticators();
-    method @Nullable public CharSequence getDescription();
-    method @Nullable public CharSequence getNegativeButtonText();
-    method @Nullable public CharSequence getSubtitle();
-    method @NonNull public CharSequence getTitle();
-    method public boolean isConfirmationRequired();
-    field public static final int AUTHENTICATION_RESULT_TYPE_BIOMETRIC = 2; // 0x2
-    field public static final int AUTHENTICATION_RESULT_TYPE_DEVICE_CREDENTIAL = 1; // 0x1
-    field public static final int BIOMETRIC_ACQUIRED_GOOD = 0; // 0x0
-    field public static final int BIOMETRIC_ACQUIRED_IMAGER_DIRTY = 3; // 0x3
-    field public static final int BIOMETRIC_ACQUIRED_INSUFFICIENT = 2; // 0x2
-    field public static final int BIOMETRIC_ACQUIRED_PARTIAL = 1; // 0x1
-    field public static final int BIOMETRIC_ACQUIRED_TOO_FAST = 5; // 0x5
-    field public static final int BIOMETRIC_ACQUIRED_TOO_SLOW = 4; // 0x4
-    field public static final int BIOMETRIC_ERROR_CANCELED = 5; // 0x5
-    field public static final int BIOMETRIC_ERROR_HW_NOT_PRESENT = 12; // 0xc
-    field public static final int BIOMETRIC_ERROR_HW_UNAVAILABLE = 1; // 0x1
-    field public static final int BIOMETRIC_ERROR_LOCKOUT = 7; // 0x7
-    field public static final int BIOMETRIC_ERROR_LOCKOUT_PERMANENT = 9; // 0x9
-    field public static final int BIOMETRIC_ERROR_NO_BIOMETRICS = 11; // 0xb
-    field public static final int BIOMETRIC_ERROR_NO_DEVICE_CREDENTIAL = 14; // 0xe
-    field public static final int BIOMETRIC_ERROR_NO_SPACE = 4; // 0x4
-    field public static final int BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED = 15; // 0xf
-    field public static final int BIOMETRIC_ERROR_TIMEOUT = 3; // 0x3
-    field public static final int BIOMETRIC_ERROR_UNABLE_TO_PROCESS = 2; // 0x2
-    field public static final int BIOMETRIC_ERROR_USER_CANCELED = 10; // 0xa
-    field public static final int BIOMETRIC_ERROR_VENDOR = 8; // 0x8
-  }
-
-  public abstract static class BiometricPrompt.AuthenticationCallback {
-    ctor public BiometricPrompt.AuthenticationCallback();
-    method public void onAuthenticationError(int, CharSequence);
-    method public void onAuthenticationFailed();
-    method public void onAuthenticationHelp(int, CharSequence);
-    method public void onAuthenticationSucceeded(android.hardware.biometrics.BiometricPrompt.AuthenticationResult);
-  }
-
-  public static class BiometricPrompt.AuthenticationResult {
-    method public int getAuthenticationType();
-    method public android.hardware.biometrics.BiometricPrompt.CryptoObject getCryptoObject();
-  }
-
-  public static class BiometricPrompt.Builder {
-    ctor public BiometricPrompt.Builder(android.content.Context);
-    method @NonNull public android.hardware.biometrics.BiometricPrompt build();
-    method @NonNull public android.hardware.biometrics.BiometricPrompt.Builder setAllowedAuthenticators(int);
-    method @NonNull public android.hardware.biometrics.BiometricPrompt.Builder setConfirmationRequired(boolean);
-    method @NonNull public android.hardware.biometrics.BiometricPrompt.Builder setDescription(@NonNull CharSequence);
-    method @Deprecated @NonNull public android.hardware.biometrics.BiometricPrompt.Builder setDeviceCredentialAllowed(boolean);
-    method @NonNull public android.hardware.biometrics.BiometricPrompt.Builder setNegativeButton(@NonNull CharSequence, @NonNull java.util.concurrent.Executor, @NonNull android.content.DialogInterface.OnClickListener);
-    method @NonNull public android.hardware.biometrics.BiometricPrompt.Builder setSubtitle(@NonNull CharSequence);
-    method @NonNull public android.hardware.biometrics.BiometricPrompt.Builder setTitle(@NonNull CharSequence);
-  }
-
-  public static final class BiometricPrompt.CryptoObject {
-    ctor public BiometricPrompt.CryptoObject(@NonNull java.security.Signature);
-    ctor public BiometricPrompt.CryptoObject(@NonNull javax.crypto.Cipher);
-    ctor public BiometricPrompt.CryptoObject(@NonNull javax.crypto.Mac);
-    ctor public BiometricPrompt.CryptoObject(@NonNull android.security.identity.IdentityCredential);
-    method public javax.crypto.Cipher getCipher();
-    method @Nullable public android.security.identity.IdentityCredential getIdentityCredential();
-    method public javax.crypto.Mac getMac();
-    method public java.security.Signature getSignature();
-  }
-
-}
-
-package android.hardware.camera2 {
-
-  public class CameraAccessException extends android.util.AndroidException {
-    ctor public CameraAccessException(int);
-    ctor public CameraAccessException(int, String);
-    ctor public CameraAccessException(int, String, Throwable);
-    ctor public CameraAccessException(int, Throwable);
-    method public final int getReason();
-    field public static final int CAMERA_DISABLED = 1; // 0x1
-    field public static final int CAMERA_DISCONNECTED = 2; // 0x2
-    field public static final int CAMERA_ERROR = 3; // 0x3
-    field public static final int CAMERA_IN_USE = 4; // 0x4
-    field public static final int MAX_CAMERAS_IN_USE = 5; // 0x5
-  }
-
-  public abstract class CameraCaptureSession implements java.lang.AutoCloseable {
-    ctor public CameraCaptureSession();
-    method public abstract void abortCaptures() throws android.hardware.camera2.CameraAccessException;
-    method public abstract int capture(@NonNull android.hardware.camera2.CaptureRequest, @Nullable android.hardware.camera2.CameraCaptureSession.CaptureCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
-    method public abstract int captureBurst(@NonNull java.util.List<android.hardware.camera2.CaptureRequest>, @Nullable android.hardware.camera2.CameraCaptureSession.CaptureCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
-    method public int captureBurstRequests(@NonNull java.util.List<android.hardware.camera2.CaptureRequest>, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraCaptureSession.CaptureCallback) throws android.hardware.camera2.CameraAccessException;
-    method public int captureSingleRequest(@NonNull android.hardware.camera2.CaptureRequest, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraCaptureSession.CaptureCallback) throws android.hardware.camera2.CameraAccessException;
-    method public abstract void close();
-    method public abstract void finalizeOutputConfigurations(java.util.List<android.hardware.camera2.params.OutputConfiguration>) throws android.hardware.camera2.CameraAccessException;
-    method @NonNull public abstract android.hardware.camera2.CameraDevice getDevice();
-    method @Nullable public abstract android.view.Surface getInputSurface();
-    method public abstract boolean isReprocessable();
-    method public abstract void prepare(@NonNull android.view.Surface) throws android.hardware.camera2.CameraAccessException;
-    method public abstract int setRepeatingBurst(@NonNull java.util.List<android.hardware.camera2.CaptureRequest>, @Nullable android.hardware.camera2.CameraCaptureSession.CaptureCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
-    method public int setRepeatingBurstRequests(@NonNull java.util.List<android.hardware.camera2.CaptureRequest>, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraCaptureSession.CaptureCallback) throws android.hardware.camera2.CameraAccessException;
-    method public abstract int setRepeatingRequest(@NonNull android.hardware.camera2.CaptureRequest, @Nullable android.hardware.camera2.CameraCaptureSession.CaptureCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
-    method public int setSingleRepeatingRequest(@NonNull android.hardware.camera2.CaptureRequest, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraCaptureSession.CaptureCallback) throws android.hardware.camera2.CameraAccessException;
-    method public abstract void stopRepeating() throws android.hardware.camera2.CameraAccessException;
-    method public boolean supportsOfflineProcessing(@NonNull android.view.Surface);
-    method @Nullable public android.hardware.camera2.CameraOfflineSession switchToOffline(@NonNull java.util.Collection<android.view.Surface>, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraOfflineSession.CameraOfflineSessionCallback) throws android.hardware.camera2.CameraAccessException;
-    method public void updateOutputConfiguration(android.hardware.camera2.params.OutputConfiguration) throws android.hardware.camera2.CameraAccessException;
-  }
-
-  public abstract static class CameraCaptureSession.CaptureCallback {
-    ctor public CameraCaptureSession.CaptureCallback();
-    method public void onCaptureBufferLost(@NonNull android.hardware.camera2.CameraCaptureSession, @NonNull android.hardware.camera2.CaptureRequest, @NonNull android.view.Surface, long);
-    method public void onCaptureCompleted(@NonNull android.hardware.camera2.CameraCaptureSession, @NonNull android.hardware.camera2.CaptureRequest, @NonNull android.hardware.camera2.TotalCaptureResult);
-    method public void onCaptureFailed(@NonNull android.hardware.camera2.CameraCaptureSession, @NonNull android.hardware.camera2.CaptureRequest, @NonNull android.hardware.camera2.CaptureFailure);
-    method public void onCaptureProgressed(@NonNull android.hardware.camera2.CameraCaptureSession, @NonNull android.hardware.camera2.CaptureRequest, @NonNull android.hardware.camera2.CaptureResult);
-    method public void onCaptureSequenceAborted(@NonNull android.hardware.camera2.CameraCaptureSession, int);
-    method public void onCaptureSequenceCompleted(@NonNull android.hardware.camera2.CameraCaptureSession, int, long);
-    method public void onCaptureStarted(@NonNull android.hardware.camera2.CameraCaptureSession, @NonNull android.hardware.camera2.CaptureRequest, long, long);
-  }
-
-  public abstract static class CameraCaptureSession.StateCallback {
-    ctor public CameraCaptureSession.StateCallback();
-    method public void onActive(@NonNull android.hardware.camera2.CameraCaptureSession);
-    method public void onCaptureQueueEmpty(@NonNull android.hardware.camera2.CameraCaptureSession);
-    method public void onClosed(@NonNull android.hardware.camera2.CameraCaptureSession);
-    method public abstract void onConfigureFailed(@NonNull android.hardware.camera2.CameraCaptureSession);
-    method public abstract void onConfigured(@NonNull android.hardware.camera2.CameraCaptureSession);
-    method public void onReady(@NonNull android.hardware.camera2.CameraCaptureSession);
-    method public void onSurfacePrepared(@NonNull android.hardware.camera2.CameraCaptureSession, @NonNull android.view.Surface);
-  }
-
-  public final class CameraCharacteristics extends android.hardware.camera2.CameraMetadata<android.hardware.camera2.CameraCharacteristics.Key<?>> {
-    method @Nullable public <T> T get(android.hardware.camera2.CameraCharacteristics.Key<T>);
-    method @NonNull public java.util.List<android.hardware.camera2.CaptureRequest.Key<?>> getAvailableCaptureRequestKeys();
-    method @NonNull public java.util.List<android.hardware.camera2.CaptureResult.Key<?>> getAvailableCaptureResultKeys();
-    method public java.util.List<android.hardware.camera2.CaptureRequest.Key<?>> getAvailablePhysicalCameraRequestKeys();
-    method public java.util.List<android.hardware.camera2.CaptureRequest.Key<?>> getAvailableSessionKeys();
-    method @NonNull public java.util.List<android.hardware.camera2.CameraCharacteristics.Key<?>> getKeys();
-    method @NonNull public java.util.List<android.hardware.camera2.CameraCharacteristics.Key<?>> getKeysNeedingPermission();
-    method @NonNull public java.util.Set<java.lang.String> getPhysicalCameraIds();
-    method @Nullable public android.hardware.camera2.params.RecommendedStreamConfigurationMap getRecommendedStreamConfigurationMap(int);
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AE_AVAILABLE_ANTIBANDING_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AE_AVAILABLE_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Range<java.lang.Integer>[]> CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Range<java.lang.Integer>> CONTROL_AE_COMPENSATION_RANGE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Rational> CONTROL_AE_COMPENSATION_STEP;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Boolean> CONTROL_AE_LOCK_AVAILABLE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AF_AVAILABLE_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AVAILABLE_EFFECTS;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.Capability[]> CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_CAPABILITIES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AVAILABLE_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AVAILABLE_SCENE_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AWB_AVAILABLE_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Boolean> CONTROL_AWB_LOCK_AVAILABLE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> CONTROL_MAX_REGIONS_AE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> CONTROL_MAX_REGIONS_AF;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> CONTROL_MAX_REGIONS_AWB;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Range<java.lang.Integer>> CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Range<java.lang.Float>> CONTROL_ZOOM_RATIO_RANGE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Boolean> DEPTH_DEPTH_IS_EXCLUSIVE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> DISTORTION_CORRECTION_AVAILABLE_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> EDGE_AVAILABLE_EDGE_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Boolean> FLASH_INFO_AVAILABLE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> INFO_SUPPORTED_HARDWARE_LEVEL;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.String> INFO_VERSION;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Size[]> JPEG_AVAILABLE_THUMBNAIL_SIZES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_DISTORTION;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> LENS_FACING;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_INFO_AVAILABLE_APERTURES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_INFO_AVAILABLE_FILTER_DENSITIES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_INFO_AVAILABLE_FOCAL_LENGTHS;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> LENS_INFO_FOCUS_DISTANCE_CALIBRATION;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Float> LENS_INFO_HYPERFOCAL_DISTANCE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Float> LENS_INFO_MINIMUM_FOCUS_DISTANCE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_INTRINSIC_CALIBRATION;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> LENS_POSE_REFERENCE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_POSE_ROTATION;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_POSE_TRANSLATION;
-    field @Deprecated @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_RADIAL_DISTORTION;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> REPROCESS_MAX_CAPTURE_STALL;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> REQUEST_AVAILABLE_CAPABILITIES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> REQUEST_MAX_NUM_INPUT_STREAMS;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> REQUEST_MAX_NUM_OUTPUT_PROC;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> REQUEST_MAX_NUM_OUTPUT_PROC_STALLING;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> REQUEST_MAX_NUM_OUTPUT_RAW;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> REQUEST_PARTIAL_RESULT_COUNT;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Byte> REQUEST_PIPELINE_MAX_DEPTH;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Float> SCALER_AVAILABLE_MAX_DIGITAL_ZOOM;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> SCALER_CROPPING_TYPE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.MandatoryStreamCombination[]> SCALER_MANDATORY_CONCURRENT_STREAM_COMBINATIONS;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.MandatoryStreamCombination[]> SCALER_MANDATORY_STREAM_COMBINATIONS;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.StreamConfigurationMap> SCALER_STREAM_CONFIGURATION_MAP;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> SENSOR_AVAILABLE_TEST_PATTERN_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.BlackLevelPattern> SENSOR_BLACK_LEVEL_PATTERN;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.ColorSpaceTransform> SENSOR_CALIBRATION_TRANSFORM1;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.ColorSpaceTransform> SENSOR_CALIBRATION_TRANSFORM2;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.ColorSpaceTransform> SENSOR_COLOR_TRANSFORM1;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.ColorSpaceTransform> SENSOR_COLOR_TRANSFORM2;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.ColorSpaceTransform> SENSOR_FORWARD_MATRIX1;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.ColorSpaceTransform> SENSOR_FORWARD_MATRIX2;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.graphics.Rect> SENSOR_INFO_ACTIVE_ARRAY_SIZE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> SENSOR_INFO_COLOR_FILTER_ARRANGEMENT;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Range<java.lang.Long>> SENSOR_INFO_EXPOSURE_TIME_RANGE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Boolean> SENSOR_INFO_LENS_SHADING_APPLIED;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Long> SENSOR_INFO_MAX_FRAME_DURATION;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.SizeF> SENSOR_INFO_PHYSICAL_SIZE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Size> SENSOR_INFO_PIXEL_ARRAY_SIZE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.graphics.Rect> SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Range<java.lang.Integer>> SENSOR_INFO_SENSITIVITY_RANGE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> SENSOR_INFO_TIMESTAMP_SOURCE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> SENSOR_INFO_WHITE_LEVEL;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> SENSOR_MAX_ANALOG_SENSITIVITY;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.graphics.Rect[]> SENSOR_OPTICAL_BLACK_REGIONS;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> SENSOR_ORIENTATION;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> SENSOR_REFERENCE_ILLUMINANT1;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Byte> SENSOR_REFERENCE_ILLUMINANT2;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> SHADING_AVAILABLE_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<boolean[]> STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> STATISTICS_INFO_AVAILABLE_OIS_DATA_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> STATISTICS_INFO_MAX_FACE_COUNT;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> SYNC_MAX_LATENCY;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> TONEMAP_AVAILABLE_TONE_MAP_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> TONEMAP_MAX_CURVE_POINTS;
-  }
-
-  public static final class CameraCharacteristics.Key<T> {
-    ctor public CameraCharacteristics.Key(@NonNull String, @NonNull Class<T>);
-    method @NonNull public String getName();
-  }
-
-  public abstract class CameraConstrainedHighSpeedCaptureSession extends android.hardware.camera2.CameraCaptureSession {
-    ctor public CameraConstrainedHighSpeedCaptureSession();
-    method @NonNull public abstract java.util.List<android.hardware.camera2.CaptureRequest> createHighSpeedRequestList(@NonNull android.hardware.camera2.CaptureRequest) throws android.hardware.camera2.CameraAccessException;
-  }
-
-  public abstract class CameraDevice implements java.lang.AutoCloseable {
-    method public abstract void close();
-    method @NonNull public abstract android.hardware.camera2.CaptureRequest.Builder createCaptureRequest(int) throws android.hardware.camera2.CameraAccessException;
-    method @NonNull public android.hardware.camera2.CaptureRequest.Builder createCaptureRequest(int, java.util.Set<java.lang.String>) throws android.hardware.camera2.CameraAccessException;
-    method @Deprecated public abstract void createCaptureSession(@NonNull java.util.List<android.view.Surface>, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
-    method public void createCaptureSession(android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException;
-    method @Deprecated public abstract void createCaptureSessionByOutputConfigurations(java.util.List<android.hardware.camera2.params.OutputConfiguration>, android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
-    method @Deprecated public abstract void createConstrainedHighSpeedCaptureSession(@NonNull java.util.List<android.view.Surface>, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
-    method @NonNull public abstract android.hardware.camera2.CaptureRequest.Builder createReprocessCaptureRequest(@NonNull android.hardware.camera2.TotalCaptureResult) throws android.hardware.camera2.CameraAccessException;
-    method @Deprecated public abstract void createReprocessableCaptureSession(@NonNull android.hardware.camera2.params.InputConfiguration, @NonNull java.util.List<android.view.Surface>, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
-    method @Deprecated public abstract void createReprocessableCaptureSessionByConfigurations(@NonNull android.hardware.camera2.params.InputConfiguration, @NonNull java.util.List<android.hardware.camera2.params.OutputConfiguration>, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
-    method public int getCameraAudioRestriction() throws android.hardware.camera2.CameraAccessException;
-    method @NonNull public abstract String getId();
-    method public boolean isSessionConfigurationSupported(@NonNull android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException;
-    method public void setCameraAudioRestriction(int) throws android.hardware.camera2.CameraAccessException;
-    field public static final int AUDIO_RESTRICTION_NONE = 0; // 0x0
-    field public static final int AUDIO_RESTRICTION_VIBRATION = 1; // 0x1
-    field public static final int AUDIO_RESTRICTION_VIBRATION_SOUND = 3; // 0x3
-    field public static final int TEMPLATE_MANUAL = 6; // 0x6
-    field public static final int TEMPLATE_PREVIEW = 1; // 0x1
-    field public static final int TEMPLATE_RECORD = 3; // 0x3
-    field public static final int TEMPLATE_STILL_CAPTURE = 2; // 0x2
-    field public static final int TEMPLATE_VIDEO_SNAPSHOT = 4; // 0x4
-    field public static final int TEMPLATE_ZERO_SHUTTER_LAG = 5; // 0x5
-  }
-
-  public abstract static class CameraDevice.StateCallback {
-    ctor public CameraDevice.StateCallback();
-    method public void onClosed(@NonNull android.hardware.camera2.CameraDevice);
-    method public abstract void onDisconnected(@NonNull android.hardware.camera2.CameraDevice);
-    method public abstract void onError(@NonNull android.hardware.camera2.CameraDevice, int);
-    method public abstract void onOpened(@NonNull android.hardware.camera2.CameraDevice);
-    field public static final int ERROR_CAMERA_DEVICE = 4; // 0x4
-    field public static final int ERROR_CAMERA_DISABLED = 3; // 0x3
-    field public static final int ERROR_CAMERA_IN_USE = 1; // 0x1
-    field public static final int ERROR_CAMERA_SERVICE = 5; // 0x5
-    field public static final int ERROR_MAX_CAMERAS_IN_USE = 2; // 0x2
-  }
-
-  public final class CameraManager {
-    method @NonNull public android.hardware.camera2.CameraCharacteristics getCameraCharacteristics(@NonNull String) throws android.hardware.camera2.CameraAccessException;
-    method @NonNull public String[] getCameraIdList() throws android.hardware.camera2.CameraAccessException;
-    method @NonNull public java.util.Set<java.util.Set<java.lang.String>> getConcurrentCameraIds() throws android.hardware.camera2.CameraAccessException;
-    method @RequiresPermission(android.Manifest.permission.CAMERA) public boolean isConcurrentSessionConfigurationSupported(@NonNull java.util.Map<java.lang.String,android.hardware.camera2.params.SessionConfiguration>) throws android.hardware.camera2.CameraAccessException;
-    method @RequiresPermission(android.Manifest.permission.CAMERA) public void openCamera(@NonNull String, @NonNull android.hardware.camera2.CameraDevice.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
-    method @RequiresPermission(android.Manifest.permission.CAMERA) public void openCamera(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraDevice.StateCallback) throws android.hardware.camera2.CameraAccessException;
-    method public void registerAvailabilityCallback(@NonNull android.hardware.camera2.CameraManager.AvailabilityCallback, @Nullable android.os.Handler);
-    method public void registerAvailabilityCallback(@NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraManager.AvailabilityCallback);
-    method public void registerTorchCallback(@NonNull android.hardware.camera2.CameraManager.TorchCallback, @Nullable android.os.Handler);
-    method public void registerTorchCallback(@NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraManager.TorchCallback);
-    method public void setTorchMode(@NonNull String, boolean) throws android.hardware.camera2.CameraAccessException;
-    method public void unregisterAvailabilityCallback(@NonNull android.hardware.camera2.CameraManager.AvailabilityCallback);
-    method public void unregisterTorchCallback(@NonNull android.hardware.camera2.CameraManager.TorchCallback);
-  }
-
-  public abstract static class CameraManager.AvailabilityCallback {
-    ctor public CameraManager.AvailabilityCallback();
-    method public void onCameraAccessPrioritiesChanged();
-    method public void onCameraAvailable(@NonNull String);
-    method public void onCameraUnavailable(@NonNull String);
-    method public void onPhysicalCameraAvailable(@NonNull String, @NonNull String);
-    method public void onPhysicalCameraUnavailable(@NonNull String, @NonNull String);
-  }
-
-  public abstract static class CameraManager.TorchCallback {
-    ctor public CameraManager.TorchCallback();
-    method public void onTorchModeChanged(@NonNull String, boolean);
-    method public void onTorchModeUnavailable(@NonNull String);
-  }
-
-  public abstract class CameraMetadata<TKey> {
-    method @NonNull public java.util.List<TKey> getKeys();
-    field public static final int COLOR_CORRECTION_ABERRATION_MODE_FAST = 1; // 0x1
-    field public static final int COLOR_CORRECTION_ABERRATION_MODE_HIGH_QUALITY = 2; // 0x2
-    field public static final int COLOR_CORRECTION_ABERRATION_MODE_OFF = 0; // 0x0
-    field public static final int COLOR_CORRECTION_MODE_FAST = 1; // 0x1
-    field public static final int COLOR_CORRECTION_MODE_HIGH_QUALITY = 2; // 0x2
-    field public static final int COLOR_CORRECTION_MODE_TRANSFORM_MATRIX = 0; // 0x0
-    field public static final int CONTROL_AE_ANTIBANDING_MODE_50HZ = 1; // 0x1
-    field public static final int CONTROL_AE_ANTIBANDING_MODE_60HZ = 2; // 0x2
-    field public static final int CONTROL_AE_ANTIBANDING_MODE_AUTO = 3; // 0x3
-    field public static final int CONTROL_AE_ANTIBANDING_MODE_OFF = 0; // 0x0
-    field public static final int CONTROL_AE_MODE_OFF = 0; // 0x0
-    field public static final int CONTROL_AE_MODE_ON = 1; // 0x1
-    field public static final int CONTROL_AE_MODE_ON_ALWAYS_FLASH = 3; // 0x3
-    field public static final int CONTROL_AE_MODE_ON_AUTO_FLASH = 2; // 0x2
-    field public static final int CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE = 4; // 0x4
-    field public static final int CONTROL_AE_MODE_ON_EXTERNAL_FLASH = 5; // 0x5
-    field public static final int CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL = 2; // 0x2
-    field public static final int CONTROL_AE_PRECAPTURE_TRIGGER_IDLE = 0; // 0x0
-    field public static final int CONTROL_AE_PRECAPTURE_TRIGGER_START = 1; // 0x1
-    field public static final int CONTROL_AE_STATE_CONVERGED = 2; // 0x2
-    field public static final int CONTROL_AE_STATE_FLASH_REQUIRED = 4; // 0x4
-    field public static final int CONTROL_AE_STATE_INACTIVE = 0; // 0x0
-    field public static final int CONTROL_AE_STATE_LOCKED = 3; // 0x3
-    field public static final int CONTROL_AE_STATE_PRECAPTURE = 5; // 0x5
-    field public static final int CONTROL_AE_STATE_SEARCHING = 1; // 0x1
-    field public static final int CONTROL_AF_MODE_AUTO = 1; // 0x1
-    field public static final int CONTROL_AF_MODE_CONTINUOUS_PICTURE = 4; // 0x4
-    field public static final int CONTROL_AF_MODE_CONTINUOUS_VIDEO = 3; // 0x3
-    field public static final int CONTROL_AF_MODE_EDOF = 5; // 0x5
-    field public static final int CONTROL_AF_MODE_MACRO = 2; // 0x2
-    field public static final int CONTROL_AF_MODE_OFF = 0; // 0x0
-    field public static final int CONTROL_AF_SCENE_CHANGE_DETECTED = 1; // 0x1
-    field public static final int CONTROL_AF_SCENE_CHANGE_NOT_DETECTED = 0; // 0x0
-    field public static final int CONTROL_AF_STATE_ACTIVE_SCAN = 3; // 0x3
-    field public static final int CONTROL_AF_STATE_FOCUSED_LOCKED = 4; // 0x4
-    field public static final int CONTROL_AF_STATE_INACTIVE = 0; // 0x0
-    field public static final int CONTROL_AF_STATE_NOT_FOCUSED_LOCKED = 5; // 0x5
-    field public static final int CONTROL_AF_STATE_PASSIVE_FOCUSED = 2; // 0x2
-    field public static final int CONTROL_AF_STATE_PASSIVE_SCAN = 1; // 0x1
-    field public static final int CONTROL_AF_STATE_PASSIVE_UNFOCUSED = 6; // 0x6
-    field public static final int CONTROL_AF_TRIGGER_CANCEL = 2; // 0x2
-    field public static final int CONTROL_AF_TRIGGER_IDLE = 0; // 0x0
-    field public static final int CONTROL_AF_TRIGGER_START = 1; // 0x1
-    field public static final int CONTROL_AWB_MODE_AUTO = 1; // 0x1
-    field public static final int CONTROL_AWB_MODE_CLOUDY_DAYLIGHT = 6; // 0x6
-    field public static final int CONTROL_AWB_MODE_DAYLIGHT = 5; // 0x5
-    field public static final int CONTROL_AWB_MODE_FLUORESCENT = 3; // 0x3
-    field public static final int CONTROL_AWB_MODE_INCANDESCENT = 2; // 0x2
-    field public static final int CONTROL_AWB_MODE_OFF = 0; // 0x0
-    field public static final int CONTROL_AWB_MODE_SHADE = 8; // 0x8
-    field public static final int CONTROL_AWB_MODE_TWILIGHT = 7; // 0x7
-    field public static final int CONTROL_AWB_MODE_WARM_FLUORESCENT = 4; // 0x4
-    field public static final int CONTROL_AWB_STATE_CONVERGED = 2; // 0x2
-    field public static final int CONTROL_AWB_STATE_INACTIVE = 0; // 0x0
-    field public static final int CONTROL_AWB_STATE_LOCKED = 3; // 0x3
-    field public static final int CONTROL_AWB_STATE_SEARCHING = 1; // 0x1
-    field public static final int CONTROL_CAPTURE_INTENT_CUSTOM = 0; // 0x0
-    field public static final int CONTROL_CAPTURE_INTENT_MANUAL = 6; // 0x6
-    field public static final int CONTROL_CAPTURE_INTENT_MOTION_TRACKING = 7; // 0x7
-    field public static final int CONTROL_CAPTURE_INTENT_PREVIEW = 1; // 0x1
-    field public static final int CONTROL_CAPTURE_INTENT_STILL_CAPTURE = 2; // 0x2
-    field public static final int CONTROL_CAPTURE_INTENT_VIDEO_RECORD = 3; // 0x3
-    field public static final int CONTROL_CAPTURE_INTENT_VIDEO_SNAPSHOT = 4; // 0x4
-    field public static final int CONTROL_CAPTURE_INTENT_ZERO_SHUTTER_LAG = 5; // 0x5
-    field public static final int CONTROL_EFFECT_MODE_AQUA = 8; // 0x8
-    field public static final int CONTROL_EFFECT_MODE_BLACKBOARD = 7; // 0x7
-    field public static final int CONTROL_EFFECT_MODE_MONO = 1; // 0x1
-    field public static final int CONTROL_EFFECT_MODE_NEGATIVE = 2; // 0x2
-    field public static final int CONTROL_EFFECT_MODE_OFF = 0; // 0x0
-    field public static final int CONTROL_EFFECT_MODE_POSTERIZE = 5; // 0x5
-    field public static final int CONTROL_EFFECT_MODE_SEPIA = 4; // 0x4
-    field public static final int CONTROL_EFFECT_MODE_SOLARIZE = 3; // 0x3
-    field public static final int CONTROL_EFFECT_MODE_WHITEBOARD = 6; // 0x6
-    field public static final int CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUS = 2; // 0x2
-    field public static final int CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTURE = 1; // 0x1
-    field public static final int CONTROL_EXTENDED_SCENE_MODE_DISABLED = 0; // 0x0
-    field public static final int CONTROL_MODE_AUTO = 1; // 0x1
-    field public static final int CONTROL_MODE_OFF = 0; // 0x0
-    field public static final int CONTROL_MODE_OFF_KEEP_STATE = 3; // 0x3
-    field public static final int CONTROL_MODE_USE_EXTENDED_SCENE_MODE = 4; // 0x4
-    field public static final int CONTROL_MODE_USE_SCENE_MODE = 2; // 0x2
-    field public static final int CONTROL_SCENE_MODE_ACTION = 2; // 0x2
-    field public static final int CONTROL_SCENE_MODE_BARCODE = 16; // 0x10
-    field public static final int CONTROL_SCENE_MODE_BEACH = 8; // 0x8
-    field public static final int CONTROL_SCENE_MODE_CANDLELIGHT = 15; // 0xf
-    field public static final int CONTROL_SCENE_MODE_DISABLED = 0; // 0x0
-    field public static final int CONTROL_SCENE_MODE_FACE_PRIORITY = 1; // 0x1
-    field public static final int CONTROL_SCENE_MODE_FIREWORKS = 12; // 0xc
-    field public static final int CONTROL_SCENE_MODE_HDR = 18; // 0x12
-    field @Deprecated public static final int CONTROL_SCENE_MODE_HIGH_SPEED_VIDEO = 17; // 0x11
-    field public static final int CONTROL_SCENE_MODE_LANDSCAPE = 4; // 0x4
-    field public static final int CONTROL_SCENE_MODE_NIGHT = 5; // 0x5
-    field public static final int CONTROL_SCENE_MODE_NIGHT_PORTRAIT = 6; // 0x6
-    field public static final int CONTROL_SCENE_MODE_PARTY = 14; // 0xe
-    field public static final int CONTROL_SCENE_MODE_PORTRAIT = 3; // 0x3
-    field public static final int CONTROL_SCENE_MODE_SNOW = 9; // 0x9
-    field public static final int CONTROL_SCENE_MODE_SPORTS = 13; // 0xd
-    field public static final int CONTROL_SCENE_MODE_STEADYPHOTO = 11; // 0xb
-    field public static final int CONTROL_SCENE_MODE_SUNSET = 10; // 0xa
-    field public static final int CONTROL_SCENE_MODE_THEATRE = 7; // 0x7
-    field public static final int CONTROL_VIDEO_STABILIZATION_MODE_OFF = 0; // 0x0
-    field public static final int CONTROL_VIDEO_STABILIZATION_MODE_ON = 1; // 0x1
-    field public static final int DISTORTION_CORRECTION_MODE_FAST = 1; // 0x1
-    field public static final int DISTORTION_CORRECTION_MODE_HIGH_QUALITY = 2; // 0x2
-    field public static final int DISTORTION_CORRECTION_MODE_OFF = 0; // 0x0
-    field public static final int EDGE_MODE_FAST = 1; // 0x1
-    field public static final int EDGE_MODE_HIGH_QUALITY = 2; // 0x2
-    field public static final int EDGE_MODE_OFF = 0; // 0x0
-    field public static final int EDGE_MODE_ZERO_SHUTTER_LAG = 3; // 0x3
-    field public static final int FLASH_MODE_OFF = 0; // 0x0
-    field public static final int FLASH_MODE_SINGLE = 1; // 0x1
-    field public static final int FLASH_MODE_TORCH = 2; // 0x2
-    field public static final int FLASH_STATE_CHARGING = 1; // 0x1
-    field public static final int FLASH_STATE_FIRED = 3; // 0x3
-    field public static final int FLASH_STATE_PARTIAL = 4; // 0x4
-    field public static final int FLASH_STATE_READY = 2; // 0x2
-    field public static final int FLASH_STATE_UNAVAILABLE = 0; // 0x0
-    field public static final int HOT_PIXEL_MODE_FAST = 1; // 0x1
-    field public static final int HOT_PIXEL_MODE_HIGH_QUALITY = 2; // 0x2
-    field public static final int HOT_PIXEL_MODE_OFF = 0; // 0x0
-    field public static final int INFO_SUPPORTED_HARDWARE_LEVEL_3 = 3; // 0x3
-    field public static final int INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL = 4; // 0x4
-    field public static final int INFO_SUPPORTED_HARDWARE_LEVEL_FULL = 1; // 0x1
-    field public static final int INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY = 2; // 0x2
-    field public static final int INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED = 0; // 0x0
-    field public static final int LENS_FACING_BACK = 1; // 0x1
-    field public static final int LENS_FACING_EXTERNAL = 2; // 0x2
-    field public static final int LENS_FACING_FRONT = 0; // 0x0
-    field public static final int LENS_INFO_FOCUS_DISTANCE_CALIBRATION_APPROXIMATE = 1; // 0x1
-    field public static final int LENS_INFO_FOCUS_DISTANCE_CALIBRATION_CALIBRATED = 2; // 0x2
-    field public static final int LENS_INFO_FOCUS_DISTANCE_CALIBRATION_UNCALIBRATED = 0; // 0x0
-    field public static final int LENS_OPTICAL_STABILIZATION_MODE_OFF = 0; // 0x0
-    field public static final int LENS_OPTICAL_STABILIZATION_MODE_ON = 1; // 0x1
-    field public static final int LENS_POSE_REFERENCE_GYROSCOPE = 1; // 0x1
-    field public static final int LENS_POSE_REFERENCE_PRIMARY_CAMERA = 0; // 0x0
-    field public static final int LENS_POSE_REFERENCE_UNDEFINED = 2; // 0x2
-    field public static final int LENS_STATE_MOVING = 1; // 0x1
-    field public static final int LENS_STATE_STATIONARY = 0; // 0x0
-    field public static final int LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE = 0; // 0x0
-    field public static final int LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED = 1; // 0x1
-    field public static final int NOISE_REDUCTION_MODE_FAST = 1; // 0x1
-    field public static final int NOISE_REDUCTION_MODE_HIGH_QUALITY = 2; // 0x2
-    field public static final int NOISE_REDUCTION_MODE_MINIMAL = 3; // 0x3
-    field public static final int NOISE_REDUCTION_MODE_OFF = 0; // 0x0
-    field public static final int NOISE_REDUCTION_MODE_ZERO_SHUTTER_LAG = 4; // 0x4
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE = 0; // 0x0
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_BURST_CAPTURE = 6; // 0x6
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_CONSTRAINED_HIGH_SPEED_VIDEO = 9; // 0x9
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_DEPTH_OUTPUT = 8; // 0x8
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA = 11; // 0xb
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING = 2; // 0x2
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR = 1; // 0x1
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_MONOCHROME = 12; // 0xc
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_MOTION_TRACKING = 10; // 0xa
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_OFFLINE_PROCESSING = 15; // 0xf
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_PRIVATE_REPROCESSING = 4; // 0x4
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_RAW = 3; // 0x3
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_READ_SENSOR_SETTINGS = 5; // 0x5
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_SECURE_IMAGE_DATA = 13; // 0xd
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_SYSTEM_CAMERA = 14; // 0xe
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING = 7; // 0x7
-    field public static final int SCALER_CROPPING_TYPE_CENTER_ONLY = 0; // 0x0
-    field public static final int SCALER_CROPPING_TYPE_FREEFORM = 1; // 0x1
-    field public static final int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_BGGR = 3; // 0x3
-    field public static final int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GBRG = 2; // 0x2
-    field public static final int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GRBG = 1; // 0x1
-    field public static final int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_MONO = 5; // 0x5
-    field public static final int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_NIR = 6; // 0x6
-    field public static final int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGB = 4; // 0x4
-    field public static final int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGGB = 0; // 0x0
-    field public static final int SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME = 1; // 0x1
-    field public static final int SENSOR_INFO_TIMESTAMP_SOURCE_UNKNOWN = 0; // 0x0
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_CLOUDY_WEATHER = 10; // 0xa
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_COOL_WHITE_FLUORESCENT = 14; // 0xe
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_D50 = 23; // 0x17
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_D55 = 20; // 0x14
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_D65 = 21; // 0x15
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_D75 = 22; // 0x16
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT = 1; // 0x1
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT_FLUORESCENT = 12; // 0xc
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_DAY_WHITE_FLUORESCENT = 13; // 0xd
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_FINE_WEATHER = 9; // 0x9
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_FLASH = 4; // 0x4
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_FLUORESCENT = 2; // 0x2
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_ISO_STUDIO_TUNGSTEN = 24; // 0x18
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_SHADE = 11; // 0xb
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_STANDARD_A = 17; // 0x11
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_STANDARD_B = 18; // 0x12
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_STANDARD_C = 19; // 0x13
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_TUNGSTEN = 3; // 0x3
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_WHITE_FLUORESCENT = 15; // 0xf
-    field public static final int SENSOR_TEST_PATTERN_MODE_COLOR_BARS = 2; // 0x2
-    field public static final int SENSOR_TEST_PATTERN_MODE_COLOR_BARS_FADE_TO_GRAY = 3; // 0x3
-    field public static final int SENSOR_TEST_PATTERN_MODE_CUSTOM1 = 256; // 0x100
-    field public static final int SENSOR_TEST_PATTERN_MODE_OFF = 0; // 0x0
-    field public static final int SENSOR_TEST_PATTERN_MODE_PN9 = 4; // 0x4
-    field public static final int SENSOR_TEST_PATTERN_MODE_SOLID_COLOR = 1; // 0x1
-    field public static final int SHADING_MODE_FAST = 1; // 0x1
-    field public static final int SHADING_MODE_HIGH_QUALITY = 2; // 0x2
-    field public static final int SHADING_MODE_OFF = 0; // 0x0
-    field public static final int STATISTICS_FACE_DETECT_MODE_FULL = 2; // 0x2
-    field public static final int STATISTICS_FACE_DETECT_MODE_OFF = 0; // 0x0
-    field public static final int STATISTICS_FACE_DETECT_MODE_SIMPLE = 1; // 0x1
-    field public static final int STATISTICS_LENS_SHADING_MAP_MODE_OFF = 0; // 0x0
-    field public static final int STATISTICS_LENS_SHADING_MAP_MODE_ON = 1; // 0x1
-    field public static final int STATISTICS_OIS_DATA_MODE_OFF = 0; // 0x0
-    field public static final int STATISTICS_OIS_DATA_MODE_ON = 1; // 0x1
-    field public static final int STATISTICS_SCENE_FLICKER_50HZ = 1; // 0x1
-    field public static final int STATISTICS_SCENE_FLICKER_60HZ = 2; // 0x2
-    field public static final int STATISTICS_SCENE_FLICKER_NONE = 0; // 0x0
-    field public static final int SYNC_MAX_LATENCY_PER_FRAME_CONTROL = 0; // 0x0
-    field public static final int SYNC_MAX_LATENCY_UNKNOWN = -1; // 0xffffffff
-    field public static final int TONEMAP_MODE_CONTRAST_CURVE = 0; // 0x0
-    field public static final int TONEMAP_MODE_FAST = 1; // 0x1
-    field public static final int TONEMAP_MODE_GAMMA_VALUE = 3; // 0x3
-    field public static final int TONEMAP_MODE_HIGH_QUALITY = 2; // 0x2
-    field public static final int TONEMAP_MODE_PRESET_CURVE = 4; // 0x4
-    field public static final int TONEMAP_PRESET_CURVE_REC709 = 1; // 0x1
-    field public static final int TONEMAP_PRESET_CURVE_SRGB = 0; // 0x0
-  }
-
-  public abstract class CameraOfflineSession extends android.hardware.camera2.CameraCaptureSession {
-    ctor public CameraOfflineSession();
-  }
-
-  public abstract static class CameraOfflineSession.CameraOfflineSessionCallback {
-    ctor public CameraOfflineSession.CameraOfflineSessionCallback();
-    method public abstract void onClosed(@NonNull android.hardware.camera2.CameraOfflineSession);
-    method public abstract void onError(@NonNull android.hardware.camera2.CameraOfflineSession, int);
-    method public abstract void onIdle(@NonNull android.hardware.camera2.CameraOfflineSession);
-    method public abstract void onReady(@NonNull android.hardware.camera2.CameraOfflineSession);
-    method public abstract void onSwitchFailed(@NonNull android.hardware.camera2.CameraOfflineSession);
-    field public static final int STATUS_INTERNAL_ERROR = 0; // 0x0
-  }
-
-  public class CaptureFailure {
-    method public long getFrameNumber();
-    method @Nullable public String getPhysicalCameraId();
-    method public int getReason();
-    method @NonNull public android.hardware.camera2.CaptureRequest getRequest();
-    method public int getSequenceId();
-    method public boolean wasImageCaptured();
-    field public static final int REASON_ERROR = 0; // 0x0
-    field public static final int REASON_FLUSHED = 1; // 0x1
-  }
-
-  public final class CaptureRequest extends android.hardware.camera2.CameraMetadata<android.hardware.camera2.CaptureRequest.Key<?>> implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public <T> T get(android.hardware.camera2.CaptureRequest.Key<T>);
-    method @NonNull public java.util.List<android.hardware.camera2.CaptureRequest.Key<?>> getKeys();
-    method @Nullable public Object getTag();
-    method public boolean isReprocess();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Boolean> BLACK_LEVEL_LOCK;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> COLOR_CORRECTION_ABERRATION_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.hardware.camera2.params.RggbChannelVector> COLOR_CORRECTION_GAINS;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> COLOR_CORRECTION_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.hardware.camera2.params.ColorSpaceTransform> COLOR_CORRECTION_TRANSFORM;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_AE_ANTIBANDING_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_AE_EXPOSURE_COMPENSATION;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Boolean> CONTROL_AE_LOCK;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_AE_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_AE_PRECAPTURE_TRIGGER;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.hardware.camera2.params.MeteringRectangle[]> CONTROL_AE_REGIONS;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.util.Range<java.lang.Integer>> CONTROL_AE_TARGET_FPS_RANGE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_AF_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.hardware.camera2.params.MeteringRectangle[]> CONTROL_AF_REGIONS;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_AF_TRIGGER;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Boolean> CONTROL_AWB_LOCK;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_AWB_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.hardware.camera2.params.MeteringRectangle[]> CONTROL_AWB_REGIONS;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_CAPTURE_INTENT;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_EFFECT_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Boolean> CONTROL_ENABLE_ZSL;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_EXTENDED_SCENE_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_POST_RAW_SENSITIVITY_BOOST;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_SCENE_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_VIDEO_STABILIZATION_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> CONTROL_ZOOM_RATIO;
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.camera2.CaptureRequest> CREATOR;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> DISTORTION_CORRECTION_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> EDGE_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> FLASH_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> HOT_PIXEL_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.location.Location> JPEG_GPS_LOCATION;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> JPEG_ORIENTATION;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Byte> JPEG_QUALITY;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Byte> JPEG_THUMBNAIL_QUALITY;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.util.Size> JPEG_THUMBNAIL_SIZE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> LENS_APERTURE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> LENS_FILTER_DENSITY;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> LENS_FOCAL_LENGTH;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> LENS_FOCUS_DISTANCE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> LENS_OPTICAL_STABILIZATION_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> NOISE_REDUCTION_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> REPROCESS_EFFECTIVE_EXPOSURE_FACTOR;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.graphics.Rect> SCALER_CROP_REGION;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Long> SENSOR_EXPOSURE_TIME;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Long> SENSOR_FRAME_DURATION;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> SENSOR_SENSITIVITY;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<int[]> SENSOR_TEST_PATTERN_DATA;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> SENSOR_TEST_PATTERN_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> SHADING_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> STATISTICS_FACE_DETECT_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Boolean> STATISTICS_HOT_PIXEL_MAP_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> STATISTICS_LENS_SHADING_MAP_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> STATISTICS_OIS_DATA_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.hardware.camera2.params.TonemapCurve> TONEMAP_CURVE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> TONEMAP_GAMMA;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> TONEMAP_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> TONEMAP_PRESET_CURVE;
-  }
-
-  public static final class CaptureRequest.Builder {
-    method public void addTarget(@NonNull android.view.Surface);
-    method @NonNull public android.hardware.camera2.CaptureRequest build();
-    method @Nullable public <T> T get(android.hardware.camera2.CaptureRequest.Key<T>);
-    method @Nullable public <T> T getPhysicalCameraKey(android.hardware.camera2.CaptureRequest.Key<T>, @NonNull String);
-    method public void removeTarget(@NonNull android.view.Surface);
-    method public <T> void set(@NonNull android.hardware.camera2.CaptureRequest.Key<T>, T);
-    method public <T> android.hardware.camera2.CaptureRequest.Builder setPhysicalCameraKey(@NonNull android.hardware.camera2.CaptureRequest.Key<T>, T, @NonNull String);
-    method public void setTag(@Nullable Object);
-  }
-
-  public static final class CaptureRequest.Key<T> {
-    ctor public CaptureRequest.Key(@NonNull String, @NonNull Class<T>);
-    method @NonNull public String getName();
-  }
-
-  public class CaptureResult extends android.hardware.camera2.CameraMetadata<android.hardware.camera2.CaptureResult.Key<?>> {
-    method @Nullable public <T> T get(android.hardware.camera2.CaptureResult.Key<T>);
-    method public long getFrameNumber();
-    method @NonNull public java.util.List<android.hardware.camera2.CaptureResult.Key<?>> getKeys();
-    method @NonNull public android.hardware.camera2.CaptureRequest getRequest();
-    method public int getSequenceId();
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Boolean> BLACK_LEVEL_LOCK;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> COLOR_CORRECTION_ABERRATION_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.RggbChannelVector> COLOR_CORRECTION_GAINS;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> COLOR_CORRECTION_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.ColorSpaceTransform> COLOR_CORRECTION_TRANSFORM;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AE_ANTIBANDING_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AE_EXPOSURE_COMPENSATION;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Boolean> CONTROL_AE_LOCK;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AE_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AE_PRECAPTURE_TRIGGER;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.MeteringRectangle[]> CONTROL_AE_REGIONS;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AE_STATE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.util.Range<java.lang.Integer>> CONTROL_AE_TARGET_FPS_RANGE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AF_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.MeteringRectangle[]> CONTROL_AF_REGIONS;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AF_SCENE_CHANGE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AF_STATE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AF_TRIGGER;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Boolean> CONTROL_AWB_LOCK;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AWB_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.MeteringRectangle[]> CONTROL_AWB_REGIONS;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AWB_STATE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_CAPTURE_INTENT;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_EFFECT_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Boolean> CONTROL_ENABLE_ZSL;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_EXTENDED_SCENE_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_POST_RAW_SENSITIVITY_BOOST;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_SCENE_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_VIDEO_STABILIZATION_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> CONTROL_ZOOM_RATIO;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> DISTORTION_CORRECTION_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> EDGE_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> FLASH_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> FLASH_STATE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> HOT_PIXEL_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.location.Location> JPEG_GPS_LOCATION;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> JPEG_ORIENTATION;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Byte> JPEG_QUALITY;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Byte> JPEG_THUMBNAIL_QUALITY;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.util.Size> JPEG_THUMBNAIL_SIZE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> LENS_APERTURE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<float[]> LENS_DISTORTION;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> LENS_FILTER_DENSITY;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> LENS_FOCAL_LENGTH;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> LENS_FOCUS_DISTANCE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.util.Pair<java.lang.Float,java.lang.Float>> LENS_FOCUS_RANGE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<float[]> LENS_INTRINSIC_CALIBRATION;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> LENS_OPTICAL_STABILIZATION_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<float[]> LENS_POSE_ROTATION;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<float[]> LENS_POSE_TRANSLATION;
-    field @Deprecated @NonNull public static final android.hardware.camera2.CaptureResult.Key<float[]> LENS_RADIAL_DISTORTION;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> LENS_STATE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.String> LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> NOISE_REDUCTION_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> REPROCESS_EFFECTIVE_EXPOSURE_FACTOR;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Byte> REQUEST_PIPELINE_DEPTH;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.graphics.Rect> SCALER_CROP_REGION;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<float[]> SENSOR_DYNAMIC_BLACK_LEVEL;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> SENSOR_DYNAMIC_WHITE_LEVEL;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Long> SENSOR_EXPOSURE_TIME;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Long> SENSOR_FRAME_DURATION;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> SENSOR_GREEN_SPLIT;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.util.Rational[]> SENSOR_NEUTRAL_COLOR_POINT;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.util.Pair<java.lang.Double,java.lang.Double>[]> SENSOR_NOISE_PROFILE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Long> SENSOR_ROLLING_SHUTTER_SKEW;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> SENSOR_SENSITIVITY;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<int[]> SENSOR_TEST_PATTERN_DATA;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> SENSOR_TEST_PATTERN_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Long> SENSOR_TIMESTAMP;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> SHADING_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.Face[]> STATISTICS_FACES;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> STATISTICS_FACE_DETECT_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.graphics.Point[]> STATISTICS_HOT_PIXEL_MAP;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Boolean> STATISTICS_HOT_PIXEL_MAP_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.LensShadingMap> STATISTICS_LENS_SHADING_CORRECTION_MAP;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> STATISTICS_LENS_SHADING_MAP_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> STATISTICS_OIS_DATA_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.OisSample[]> STATISTICS_OIS_SAMPLES;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> STATISTICS_SCENE_FLICKER;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.TonemapCurve> TONEMAP_CURVE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> TONEMAP_GAMMA;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> TONEMAP_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> TONEMAP_PRESET_CURVE;
-  }
-
-  public static final class CaptureResult.Key<T> {
-    ctor public CaptureResult.Key(@NonNull String, @NonNull Class<T>);
-    method @NonNull public String getName();
-  }
-
-  public final class DngCreator implements java.lang.AutoCloseable {
-    ctor public DngCreator(@NonNull android.hardware.camera2.CameraCharacteristics, @NonNull android.hardware.camera2.CaptureResult);
-    method public void close();
-    method @NonNull public android.hardware.camera2.DngCreator setDescription(@NonNull String);
-    method @NonNull public android.hardware.camera2.DngCreator setLocation(@NonNull android.location.Location);
-    method @NonNull public android.hardware.camera2.DngCreator setOrientation(int);
-    method @NonNull public android.hardware.camera2.DngCreator setThumbnail(@NonNull android.graphics.Bitmap);
-    method @NonNull public android.hardware.camera2.DngCreator setThumbnail(@NonNull android.media.Image);
-    method public void writeByteBuffer(@NonNull java.io.OutputStream, @NonNull android.util.Size, @NonNull java.nio.ByteBuffer, @IntRange(from=0) long) throws java.io.IOException;
-    method public void writeImage(@NonNull java.io.OutputStream, @NonNull android.media.Image) throws java.io.IOException;
-    method public void writeInputStream(@NonNull java.io.OutputStream, @NonNull android.util.Size, @NonNull java.io.InputStream, @IntRange(from=0) long) throws java.io.IOException;
-    field public static final int MAX_THUMBNAIL_DIMENSION = 256; // 0x100
-  }
-
-  public final class TotalCaptureResult extends android.hardware.camera2.CaptureResult {
-    method @NonNull public java.util.List<android.hardware.camera2.CaptureResult> getPartialResults();
-    method public java.util.Map<java.lang.String,android.hardware.camera2.CaptureResult> getPhysicalCameraResults();
-  }
-
-}
-
-package android.hardware.camera2.params {
-
-  public final class BlackLevelPattern {
-    method public void copyTo(int[], int);
-    method public int getOffsetForIndex(int, int);
-    field public static final int COUNT = 4; // 0x4
-  }
-
-  public final class Capability {
-    method @NonNull public android.util.Size getMaxStreamingSize();
-    method public int getMode();
-    method @NonNull public android.util.Range<java.lang.Float> getZoomRatioRange();
-  }
-
-  public final class ColorSpaceTransform {
-    ctor public ColorSpaceTransform(android.util.Rational[]);
-    ctor public ColorSpaceTransform(int[]);
-    method public void copyElements(android.util.Rational[], int);
-    method public void copyElements(int[], int);
-    method public android.util.Rational getElement(int, int);
-  }
-
-  public final class Face {
-    method public android.graphics.Rect getBounds();
-    method public int getId();
-    method public android.graphics.Point getLeftEyePosition();
-    method public android.graphics.Point getMouthPosition();
-    method public android.graphics.Point getRightEyePosition();
-    method public int getScore();
-    field public static final int ID_UNSUPPORTED = -1; // 0xffffffff
-    field public static final int SCORE_MAX = 100; // 0x64
-    field public static final int SCORE_MIN = 1; // 0x1
-  }
-
-  public final class InputConfiguration {
-    ctor public InputConfiguration(int, int, int);
-    method public int getFormat();
-    method public int getHeight();
-    method public int getWidth();
-  }
-
-  public final class LensShadingMap {
-    method public void copyGainFactors(float[], int);
-    method public int getColumnCount();
-    method public float getGainFactor(int, int, int);
-    method public int getGainFactorCount();
-    method public android.hardware.camera2.params.RggbChannelVector getGainFactorVector(int, int);
-    method public int getRowCount();
-    field public static final float MINIMUM_GAIN_FACTOR = 1.0f;
-  }
-
-  public final class MandatoryStreamCombination {
-    method @NonNull public CharSequence getDescription();
-    method @NonNull public java.util.List<android.hardware.camera2.params.MandatoryStreamCombination.MandatoryStreamInformation> getStreamsInformation();
-    method public boolean isReprocessable();
-  }
-
-  public static final class MandatoryStreamCombination.MandatoryStreamInformation {
-    method @NonNull public java.util.List<android.util.Size> getAvailableSizes();
-    method public int getFormat();
-    method public boolean isInput();
-  }
-
-  public final class MeteringRectangle {
-    ctor public MeteringRectangle(int, int, int, int, int);
-    ctor public MeteringRectangle(android.graphics.Point, android.util.Size, int);
-    ctor public MeteringRectangle(android.graphics.Rect, int);
-    method public boolean equals(android.hardware.camera2.params.MeteringRectangle);
-    method public int getHeight();
-    method public int getMeteringWeight();
-    method public android.graphics.Rect getRect();
-    method public android.util.Size getSize();
-    method public android.graphics.Point getUpperLeftPoint();
-    method public int getWidth();
-    method public int getX();
-    method public int getY();
-    field public static final int METERING_WEIGHT_DONT_CARE = 0; // 0x0
-    field public static final int METERING_WEIGHT_MAX = 1000; // 0x3e8
-    field public static final int METERING_WEIGHT_MIN = 0; // 0x0
-  }
-
-  public final class OisSample {
-    ctor public OisSample(long, float, float);
-    method public long getTimestamp();
-    method public float getXshift();
-    method public float getYshift();
-  }
-
-  public final class OutputConfiguration implements android.os.Parcelable {
-    ctor public OutputConfiguration(@NonNull android.view.Surface);
-    ctor public OutputConfiguration(int, @NonNull android.view.Surface);
-    ctor public OutputConfiguration(@NonNull android.util.Size, @NonNull Class<T>);
-    method public void addSurface(@NonNull android.view.Surface);
-    method public int describeContents();
-    method public void enableSurfaceSharing();
-    method public int getMaxSharedSurfaceCount();
-    method @Nullable public android.view.Surface getSurface();
-    method public int getSurfaceGroupId();
-    method @NonNull public java.util.List<android.view.Surface> getSurfaces();
-    method public void removeSurface(@NonNull android.view.Surface);
-    method public void setPhysicalCameraId(@Nullable String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.camera2.params.OutputConfiguration> CREATOR;
-    field public static final int SURFACE_GROUP_ID_NONE = -1; // 0xffffffff
-  }
-
-  public final class RecommendedStreamConfigurationMap {
-    method @Nullable public java.util.Set<android.util.Size> getHighResolutionOutputSizes(int);
-    method @Nullable public java.util.Set<android.util.Range<java.lang.Integer>> getHighSpeedVideoFpsRanges();
-    method @Nullable public java.util.Set<android.util.Range<java.lang.Integer>> getHighSpeedVideoFpsRangesFor(@NonNull android.util.Size);
-    method @Nullable public java.util.Set<android.util.Size> getHighSpeedVideoSizes();
-    method @Nullable public java.util.Set<android.util.Size> getHighSpeedVideoSizesFor(@NonNull android.util.Range<java.lang.Integer>);
-    method @Nullable public java.util.Set<java.lang.Integer> getInputFormats();
-    method @Nullable public java.util.Set<android.util.Size> getInputSizes(int);
-    method @NonNull public java.util.Set<java.lang.Integer> getOutputFormats();
-    method @IntRange(from=0) public long getOutputMinFrameDuration(int, @NonNull android.util.Size);
-    method @IntRange(from=0) public <T> long getOutputMinFrameDuration(@NonNull Class<T>, @NonNull android.util.Size);
-    method @Nullable public java.util.Set<android.util.Size> getOutputSizes(int);
-    method @Nullable public <T> java.util.Set<android.util.Size> getOutputSizes(@NonNull Class<T>);
-    method @IntRange(from=0) public long getOutputStallDuration(int, @NonNull android.util.Size);
-    method @IntRange(from=0) public <T> long getOutputStallDuration(@NonNull Class<T>, @NonNull android.util.Size);
-    method public int getRecommendedUseCase();
-    method @Nullable public java.util.Set<java.lang.Integer> getValidOutputFormatsForInput(int);
-    method public boolean isOutputSupportedFor(int);
-    method public boolean isOutputSupportedFor(@NonNull android.view.Surface);
-    field public static final int USECASE_LOW_LATENCY_SNAPSHOT = 6; // 0x6
-    field public static final int USECASE_PREVIEW = 0; // 0x0
-    field public static final int USECASE_RAW = 5; // 0x5
-    field public static final int USECASE_RECORD = 1; // 0x1
-    field public static final int USECASE_SNAPSHOT = 3; // 0x3
-    field public static final int USECASE_VIDEO_SNAPSHOT = 2; // 0x2
-    field public static final int USECASE_ZSL = 4; // 0x4
-  }
-
-  public final class RggbChannelVector {
-    ctor public RggbChannelVector(float, float, float, float);
-    method public void copyTo(float[], int);
-    method public float getBlue();
-    method public float getComponent(int);
-    method public float getGreenEven();
-    method public float getGreenOdd();
-    method public float getRed();
-    field public static final int BLUE = 3; // 0x3
-    field public static final int COUNT = 4; // 0x4
-    field public static final int GREEN_EVEN = 1; // 0x1
-    field public static final int GREEN_ODD = 2; // 0x2
-    field public static final int RED = 0; // 0x0
-  }
-
-  public final class SessionConfiguration implements android.os.Parcelable {
-    ctor public SessionConfiguration(int, @NonNull java.util.List<android.hardware.camera2.params.OutputConfiguration>, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback);
-    method public int describeContents();
-    method public java.util.concurrent.Executor getExecutor();
-    method public android.hardware.camera2.params.InputConfiguration getInputConfiguration();
-    method public java.util.List<android.hardware.camera2.params.OutputConfiguration> getOutputConfigurations();
-    method public android.hardware.camera2.CaptureRequest getSessionParameters();
-    method public int getSessionType();
-    method public android.hardware.camera2.CameraCaptureSession.StateCallback getStateCallback();
-    method public void setInputConfiguration(@NonNull android.hardware.camera2.params.InputConfiguration);
-    method public void setSessionParameters(android.hardware.camera2.CaptureRequest);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.camera2.params.SessionConfiguration> CREATOR;
-    field public static final int SESSION_HIGH_SPEED = 1; // 0x1
-    field public static final int SESSION_REGULAR = 0; // 0x0
-  }
-
-  public final class StreamConfigurationMap {
-    method public android.util.Size[] getHighResolutionOutputSizes(int);
-    method public android.util.Range<java.lang.Integer>[] getHighSpeedVideoFpsRanges();
-    method public android.util.Range<java.lang.Integer>[] getHighSpeedVideoFpsRangesFor(android.util.Size);
-    method public android.util.Size[] getHighSpeedVideoSizes();
-    method public android.util.Size[] getHighSpeedVideoSizesFor(android.util.Range<java.lang.Integer>);
-    method public int[] getInputFormats();
-    method public android.util.Size[] getInputSizes(int);
-    method public int[] getOutputFormats();
-    method public long getOutputMinFrameDuration(int, android.util.Size);
-    method public <T> long getOutputMinFrameDuration(Class<T>, android.util.Size);
-    method public <T> android.util.Size[] getOutputSizes(Class<T>);
-    method public android.util.Size[] getOutputSizes(int);
-    method public long getOutputStallDuration(int, android.util.Size);
-    method public <T> long getOutputStallDuration(Class<T>, android.util.Size);
-    method public int[] getValidOutputFormatsForInput(int);
-    method public boolean isOutputSupportedFor(int);
-    method public static <T> boolean isOutputSupportedFor(Class<T>);
-    method public boolean isOutputSupportedFor(android.view.Surface);
-  }
-
-  public final class TonemapCurve {
-    ctor public TonemapCurve(float[], float[], float[]);
-    method public void copyColorCurve(int, float[], int);
-    method public android.graphics.PointF getPoint(int, int);
-    method public int getPointCount(int);
-    field public static final int CHANNEL_BLUE = 2; // 0x2
-    field public static final int CHANNEL_GREEN = 1; // 0x1
-    field public static final int CHANNEL_RED = 0; // 0x0
-    field public static final float LEVEL_BLACK = 0.0f;
-    field public static final float LEVEL_WHITE = 1.0f;
-    field public static final int POINT_SIZE = 2; // 0x2
-  }
-
-}
-
-package android.hardware.display {
-
-  public final class DisplayManager {
-    method public android.hardware.display.VirtualDisplay createVirtualDisplay(@NonNull String, int, int, int, @Nullable android.view.Surface, int);
-    method public android.hardware.display.VirtualDisplay createVirtualDisplay(@NonNull String, int, int, int, @Nullable android.view.Surface, int, @Nullable android.hardware.display.VirtualDisplay.Callback, @Nullable android.os.Handler);
-    method public android.view.Display getDisplay(int);
-    method public android.view.Display[] getDisplays();
-    method public android.view.Display[] getDisplays(String);
-    method public void registerDisplayListener(android.hardware.display.DisplayManager.DisplayListener, android.os.Handler);
-    method public void unregisterDisplayListener(android.hardware.display.DisplayManager.DisplayListener);
-    field public static final String DISPLAY_CATEGORY_PRESENTATION = "android.hardware.display.category.PRESENTATION";
-    field public static final int VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR = 16; // 0x10
-    field public static final int VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY = 8; // 0x8
-    field public static final int VIRTUAL_DISPLAY_FLAG_PRESENTATION = 2; // 0x2
-    field public static final int VIRTUAL_DISPLAY_FLAG_PUBLIC = 1; // 0x1
-    field public static final int VIRTUAL_DISPLAY_FLAG_SECURE = 4; // 0x4
-  }
-
-  public static interface DisplayManager.DisplayListener {
-    method public void onDisplayAdded(int);
-    method public void onDisplayChanged(int);
-    method public void onDisplayRemoved(int);
-  }
-
-  public final class VirtualDisplay {
-    method public android.view.Display getDisplay();
-    method public android.view.Surface getSurface();
-    method public void release();
-    method public void resize(int, int, int);
-    method public void setSurface(android.view.Surface);
-  }
-
-  public abstract static class VirtualDisplay.Callback {
-    ctor public VirtualDisplay.Callback();
-    method public void onPaused();
-    method public void onResumed();
-    method public void onStopped();
-  }
-
-}
-
-package android.hardware.fingerprint {
-
-  @Deprecated public class FingerprintManager {
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.USE_BIOMETRIC, android.Manifest.permission.USE_FINGERPRINT}) public void authenticate(@Nullable android.hardware.fingerprint.FingerprintManager.CryptoObject, @Nullable android.os.CancellationSignal, int, @NonNull android.hardware.fingerprint.FingerprintManager.AuthenticationCallback, @Nullable android.os.Handler);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public boolean hasEnrolledFingerprints();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public boolean isHardwareDetected();
-    field public static final int FINGERPRINT_ACQUIRED_GOOD = 0; // 0x0
-    field public static final int FINGERPRINT_ACQUIRED_IMAGER_DIRTY = 3; // 0x3
-    field public static final int FINGERPRINT_ACQUIRED_INSUFFICIENT = 2; // 0x2
-    field public static final int FINGERPRINT_ACQUIRED_PARTIAL = 1; // 0x1
-    field public static final int FINGERPRINT_ACQUIRED_TOO_FAST = 5; // 0x5
-    field public static final int FINGERPRINT_ACQUIRED_TOO_SLOW = 4; // 0x4
-    field public static final int FINGERPRINT_ERROR_CANCELED = 5; // 0x5
-    field public static final int FINGERPRINT_ERROR_HW_NOT_PRESENT = 12; // 0xc
-    field public static final int FINGERPRINT_ERROR_HW_UNAVAILABLE = 1; // 0x1
-    field public static final int FINGERPRINT_ERROR_LOCKOUT = 7; // 0x7
-    field public static final int FINGERPRINT_ERROR_LOCKOUT_PERMANENT = 9; // 0x9
-    field public static final int FINGERPRINT_ERROR_NO_FINGERPRINTS = 11; // 0xb
-    field public static final int FINGERPRINT_ERROR_NO_SPACE = 4; // 0x4
-    field public static final int FINGERPRINT_ERROR_TIMEOUT = 3; // 0x3
-    field public static final int FINGERPRINT_ERROR_UNABLE_TO_PROCESS = 2; // 0x2
-    field public static final int FINGERPRINT_ERROR_USER_CANCELED = 10; // 0xa
-    field public static final int FINGERPRINT_ERROR_VENDOR = 8; // 0x8
-  }
-
-  @Deprecated public abstract static class FingerprintManager.AuthenticationCallback {
-    ctor @Deprecated public FingerprintManager.AuthenticationCallback();
-    method @Deprecated public void onAuthenticationError(int, CharSequence);
-    method @Deprecated public void onAuthenticationFailed();
-    method @Deprecated public void onAuthenticationHelp(int, CharSequence);
-    method @Deprecated public void onAuthenticationSucceeded(android.hardware.fingerprint.FingerprintManager.AuthenticationResult);
-  }
-
-  @Deprecated public static class FingerprintManager.AuthenticationResult {
-    method @Deprecated public android.hardware.fingerprint.FingerprintManager.CryptoObject getCryptoObject();
-  }
-
-  @Deprecated public static final class FingerprintManager.CryptoObject {
-    ctor @Deprecated public FingerprintManager.CryptoObject(@NonNull java.security.Signature);
-    ctor @Deprecated public FingerprintManager.CryptoObject(@NonNull javax.crypto.Cipher);
-    ctor @Deprecated public FingerprintManager.CryptoObject(@NonNull javax.crypto.Mac);
-    method @Deprecated public javax.crypto.Cipher getCipher();
-    method @Deprecated public javax.crypto.Mac getMac();
-    method @Deprecated public java.security.Signature getSignature();
-  }
-
-}
-
-package android.hardware.input {
-
-  public final class InputManager {
-    method public android.view.InputDevice getInputDevice(int);
-    method public int[] getInputDeviceIds();
-    method public void registerInputDeviceListener(android.hardware.input.InputManager.InputDeviceListener, android.os.Handler);
-    method public void unregisterInputDeviceListener(android.hardware.input.InputManager.InputDeviceListener);
-    method @Nullable public android.view.VerifiedInputEvent verifyInputEvent(@NonNull android.view.InputEvent);
-    field public static final String ACTION_QUERY_KEYBOARD_LAYOUTS = "android.hardware.input.action.QUERY_KEYBOARD_LAYOUTS";
-    field public static final String META_DATA_KEYBOARD_LAYOUTS = "android.hardware.input.metadata.KEYBOARD_LAYOUTS";
-  }
-
-  public static interface InputManager.InputDeviceListener {
-    method public void onInputDeviceAdded(int);
-    method public void onInputDeviceChanged(int);
-    method public void onInputDeviceRemoved(int);
-  }
-
-}
-
-package android.hardware.usb {
-
-  public class UsbAccessory implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getDescription();
-    method @NonNull public String getManufacturer();
-    method @NonNull public String getModel();
-    method @Nullable public String getSerial();
-    method @Nullable public String getUri();
-    method @Nullable public String getVersion();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.usb.UsbAccessory> CREATOR;
-  }
-
-  public class UsbConfiguration implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getId();
-    method @NonNull public android.hardware.usb.UsbInterface getInterface(int);
-    method public int getInterfaceCount();
-    method public int getMaxPower();
-    method @Nullable public String getName();
-    method public boolean isRemoteWakeup();
-    method public boolean isSelfPowered();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.usb.UsbConfiguration> CREATOR;
-  }
-
-  public final class UsbConstants {
-    ctor public UsbConstants();
-    field public static final int USB_CLASS_APP_SPEC = 254; // 0xfe
-    field public static final int USB_CLASS_AUDIO = 1; // 0x1
-    field public static final int USB_CLASS_CDC_DATA = 10; // 0xa
-    field public static final int USB_CLASS_COMM = 2; // 0x2
-    field public static final int USB_CLASS_CONTENT_SEC = 13; // 0xd
-    field public static final int USB_CLASS_CSCID = 11; // 0xb
-    field public static final int USB_CLASS_HID = 3; // 0x3
-    field public static final int USB_CLASS_HUB = 9; // 0x9
-    field public static final int USB_CLASS_MASS_STORAGE = 8; // 0x8
-    field public static final int USB_CLASS_MISC = 239; // 0xef
-    field public static final int USB_CLASS_PER_INTERFACE = 0; // 0x0
-    field public static final int USB_CLASS_PHYSICA = 5; // 0x5
-    field public static final int USB_CLASS_PRINTER = 7; // 0x7
-    field public static final int USB_CLASS_STILL_IMAGE = 6; // 0x6
-    field public static final int USB_CLASS_VENDOR_SPEC = 255; // 0xff
-    field public static final int USB_CLASS_VIDEO = 14; // 0xe
-    field public static final int USB_CLASS_WIRELESS_CONTROLLER = 224; // 0xe0
-    field public static final int USB_DIR_IN = 128; // 0x80
-    field public static final int USB_DIR_OUT = 0; // 0x0
-    field public static final int USB_ENDPOINT_DIR_MASK = 128; // 0x80
-    field public static final int USB_ENDPOINT_NUMBER_MASK = 15; // 0xf
-    field public static final int USB_ENDPOINT_XFERTYPE_MASK = 3; // 0x3
-    field public static final int USB_ENDPOINT_XFER_BULK = 2; // 0x2
-    field public static final int USB_ENDPOINT_XFER_CONTROL = 0; // 0x0
-    field public static final int USB_ENDPOINT_XFER_INT = 3; // 0x3
-    field public static final int USB_ENDPOINT_XFER_ISOC = 1; // 0x1
-    field public static final int USB_INTERFACE_SUBCLASS_BOOT = 1; // 0x1
-    field public static final int USB_SUBCLASS_VENDOR_SPEC = 255; // 0xff
-    field public static final int USB_TYPE_CLASS = 32; // 0x20
-    field public static final int USB_TYPE_MASK = 96; // 0x60
-    field public static final int USB_TYPE_RESERVED = 96; // 0x60
-    field public static final int USB_TYPE_STANDARD = 0; // 0x0
-    field public static final int USB_TYPE_VENDOR = 64; // 0x40
-  }
-
-  public class UsbDevice implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.hardware.usb.UsbConfiguration getConfiguration(int);
-    method public int getConfigurationCount();
-    method public int getDeviceClass();
-    method public int getDeviceId();
-    method public static int getDeviceId(String);
-    method @NonNull public String getDeviceName();
-    method public static String getDeviceName(int);
-    method public int getDeviceProtocol();
-    method public int getDeviceSubclass();
-    method @NonNull public android.hardware.usb.UsbInterface getInterface(int);
-    method public int getInterfaceCount();
-    method @Nullable public String getManufacturerName();
-    method public int getProductId();
-    method @Nullable public String getProductName();
-    method @Nullable public String getSerialNumber();
-    method public int getVendorId();
-    method @NonNull public String getVersion();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.usb.UsbDevice> CREATOR;
-  }
-
-  public class UsbDeviceConnection {
-    method public int bulkTransfer(android.hardware.usb.UsbEndpoint, byte[], int, int);
-    method public int bulkTransfer(android.hardware.usb.UsbEndpoint, byte[], int, int, int);
-    method public boolean claimInterface(android.hardware.usb.UsbInterface, boolean);
-    method public void close();
-    method public int controlTransfer(int, int, int, int, byte[], int, int);
-    method public int controlTransfer(int, int, int, int, byte[], int, int, int);
-    method public int getFileDescriptor();
-    method public byte[] getRawDescriptors();
-    method public String getSerial();
-    method public boolean releaseInterface(android.hardware.usb.UsbInterface);
-    method public android.hardware.usb.UsbRequest requestWait();
-    method public android.hardware.usb.UsbRequest requestWait(long) throws java.util.concurrent.TimeoutException;
-    method public boolean setConfiguration(android.hardware.usb.UsbConfiguration);
-    method public boolean setInterface(android.hardware.usb.UsbInterface);
-  }
-
-  public class UsbEndpoint implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAddress();
-    method public int getAttributes();
-    method public int getDirection();
-    method public int getEndpointNumber();
-    method public int getInterval();
-    method public int getMaxPacketSize();
-    method public int getType();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.usb.UsbEndpoint> CREATOR;
-  }
-
-  public class UsbInterface implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAlternateSetting();
-    method public android.hardware.usb.UsbEndpoint getEndpoint(int);
-    method public int getEndpointCount();
-    method public int getId();
-    method public int getInterfaceClass();
-    method public int getInterfaceProtocol();
-    method public int getInterfaceSubclass();
-    method @Nullable public String getName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.usb.UsbInterface> CREATOR;
-  }
-
-  public class UsbManager {
-    method public android.hardware.usb.UsbAccessory[] getAccessoryList();
-    method public java.util.HashMap<java.lang.String,android.hardware.usb.UsbDevice> getDeviceList();
-    method public boolean hasPermission(android.hardware.usb.UsbDevice);
-    method public boolean hasPermission(android.hardware.usb.UsbAccessory);
-    method public android.os.ParcelFileDescriptor openAccessory(android.hardware.usb.UsbAccessory);
-    method public android.hardware.usb.UsbDeviceConnection openDevice(android.hardware.usb.UsbDevice);
-    method public void requestPermission(android.hardware.usb.UsbDevice, android.app.PendingIntent);
-    method public void requestPermission(android.hardware.usb.UsbAccessory, android.app.PendingIntent);
-    field public static final String ACTION_USB_ACCESSORY_ATTACHED = "android.hardware.usb.action.USB_ACCESSORY_ATTACHED";
-    field public static final String ACTION_USB_ACCESSORY_DETACHED = "android.hardware.usb.action.USB_ACCESSORY_DETACHED";
-    field public static final String ACTION_USB_DEVICE_ATTACHED = "android.hardware.usb.action.USB_DEVICE_ATTACHED";
-    field public static final String ACTION_USB_DEVICE_DETACHED = "android.hardware.usb.action.USB_DEVICE_DETACHED";
-    field public static final String EXTRA_ACCESSORY = "accessory";
-    field public static final String EXTRA_DEVICE = "device";
-    field public static final String EXTRA_PERMISSION_GRANTED = "permission";
-  }
-
-  public class UsbRequest {
-    ctor public UsbRequest();
-    method public boolean cancel();
-    method public void close();
-    method public Object getClientData();
-    method public android.hardware.usb.UsbEndpoint getEndpoint();
-    method public boolean initialize(android.hardware.usb.UsbDeviceConnection, android.hardware.usb.UsbEndpoint);
-    method @Deprecated public boolean queue(java.nio.ByteBuffer, int);
-    method public boolean queue(@Nullable java.nio.ByteBuffer);
-    method public void setClientData(Object);
-  }
-
-}
-
-package android.icu.lang {
-
-  public final class UCharacter implements android.icu.lang.UCharacterEnums.ECharacterCategory android.icu.lang.UCharacterEnums.ECharacterDirection {
-    method public static int charCount(int);
-    method public static int codePointAt(CharSequence, int);
-    method public static int codePointAt(char[], int);
-    method public static int codePointAt(char[], int, int);
-    method public static int codePointBefore(CharSequence, int);
-    method public static int codePointBefore(char[], int);
-    method public static int codePointBefore(char[], int, int);
-    method public static int codePointCount(CharSequence, int, int);
-    method public static int codePointCount(char[], int, int);
-    method public static int digit(int, int);
-    method public static int digit(int);
-    method public static int foldCase(int, boolean);
-    method public static String foldCase(String, boolean);
-    method public static int foldCase(int, int);
-    method public static String foldCase(String, int);
-    method public static char forDigit(int, int);
-    method public static android.icu.util.VersionInfo getAge(int);
-    method public static int getBidiPairedBracket(int);
-    method public static int getCharFromExtendedName(String);
-    method public static int getCharFromName(String);
-    method public static int getCharFromNameAlias(String);
-    method public static int getCodePoint(char, char);
-    method public static int getCodePoint(char);
-    method public static int getCombiningClass(int);
-    method public static int getDirection(int);
-    method public static byte getDirectionality(int);
-    method public static String getExtendedName(int);
-    method public static android.icu.util.ValueIterator getExtendedNameIterator();
-    method public static int getHanNumericValue(int);
-    method public static int getIntPropertyMaxValue(int);
-    method public static int getIntPropertyMinValue(int);
-    method public static int getIntPropertyValue(int, int);
-    method public static int getMirror(int);
-    method public static String getName(int);
-    method public static String getName(String, String);
-    method public static String getNameAlias(int);
-    method public static android.icu.util.ValueIterator getNameIterator();
-    method public static int getNumericValue(int);
-    method public static int getPropertyEnum(CharSequence);
-    method public static String getPropertyName(int, int);
-    method public static int getPropertyValueEnum(int, CharSequence);
-    method public static String getPropertyValueName(int, int, int);
-    method public static int getType(int);
-    method public static android.icu.util.RangeValueIterator getTypeIterator();
-    method public static double getUnicodeNumericValue(int);
-    method public static android.icu.util.VersionInfo getUnicodeVersion();
-    method public static boolean hasBinaryProperty(int, int);
-    method public static boolean isBMP(int);
-    method public static boolean isBaseForm(int);
-    method public static boolean isDefined(int);
-    method public static boolean isDigit(int);
-    method public static boolean isHighSurrogate(char);
-    method public static boolean isISOControl(int);
-    method public static boolean isIdentifierIgnorable(int);
-    method public static boolean isJavaIdentifierPart(int);
-    method public static boolean isJavaIdentifierStart(int);
-    method public static boolean isLegal(int);
-    method public static boolean isLegal(String);
-    method public static boolean isLetter(int);
-    method public static boolean isLetterOrDigit(int);
-    method public static boolean isLowSurrogate(char);
-    method public static boolean isLowerCase(int);
-    method public static boolean isMirrored(int);
-    method public static boolean isPrintable(int);
-    method public static boolean isSpaceChar(int);
-    method public static boolean isSupplementary(int);
-    method public static boolean isSupplementaryCodePoint(int);
-    method public static boolean isSurrogatePair(char, char);
-    method public static boolean isTitleCase(int);
-    method public static boolean isUAlphabetic(int);
-    method public static boolean isULowercase(int);
-    method public static boolean isUUppercase(int);
-    method public static boolean isUWhiteSpace(int);
-    method public static boolean isUnicodeIdentifierPart(int);
-    method public static boolean isUnicodeIdentifierStart(int);
-    method public static boolean isUpperCase(int);
-    method public static boolean isValidCodePoint(int);
-    method public static boolean isWhitespace(int);
-    method public static int offsetByCodePoints(CharSequence, int, int);
-    method public static int offsetByCodePoints(char[], int, int, int, int);
-    method public static int toChars(int, char[], int);
-    method public static char[] toChars(int);
-    method public static int toCodePoint(char, char);
-    method public static int toLowerCase(int);
-    method public static String toLowerCase(String);
-    method public static String toLowerCase(java.util.Locale, String);
-    method public static String toLowerCase(android.icu.util.ULocale, String);
-    method public static String toString(int);
-    method public static int toTitleCase(int);
-    method public static String toTitleCase(String, android.icu.text.BreakIterator);
-    method public static String toTitleCase(java.util.Locale, String, android.icu.text.BreakIterator);
-    method public static String toTitleCase(android.icu.util.ULocale, String, android.icu.text.BreakIterator);
-    method public static String toTitleCase(android.icu.util.ULocale, String, android.icu.text.BreakIterator, int);
-    method public static String toTitleCase(java.util.Locale, String, android.icu.text.BreakIterator, int);
-    method public static int toUpperCase(int);
-    method public static String toUpperCase(String);
-    method public static String toUpperCase(java.util.Locale, String);
-    method public static String toUpperCase(android.icu.util.ULocale, String);
-    field public static final int FOLD_CASE_DEFAULT = 0; // 0x0
-    field public static final int FOLD_CASE_EXCLUDE_SPECIAL_I = 1; // 0x1
-    field public static final int MAX_CODE_POINT = 1114111; // 0x10ffff
-    field public static final char MAX_HIGH_SURROGATE = 56319; // 0xdbff '\udbff'
-    field public static final char MAX_LOW_SURROGATE = 57343; // 0xdfff '\udfff'
-    field public static final int MAX_RADIX = 36; // 0x24
-    field public static final char MAX_SURROGATE = 57343; // 0xdfff '\udfff'
-    field public static final int MAX_VALUE = 1114111; // 0x10ffff
-    field public static final int MIN_CODE_POINT = 0; // 0x0
-    field public static final char MIN_HIGH_SURROGATE = 55296; // 0xd800 '\ud800'
-    field public static final char MIN_LOW_SURROGATE = 56320; // 0xdc00 '\udc00'
-    field public static final int MIN_RADIX = 2; // 0x2
-    field public static final int MIN_SUPPLEMENTARY_CODE_POINT = 65536; // 0x10000
-    field public static final char MIN_SURROGATE = 55296; // 0xd800 '\ud800'
-    field public static final int MIN_VALUE = 0; // 0x0
-    field public static final double NO_NUMERIC_VALUE = -1.23456789E8;
-    field public static final int REPLACEMENT_CHAR = 65533; // 0xfffd
-    field public static final int SUPPLEMENTARY_MIN_VALUE = 65536; // 0x10000
-    field public static final int TITLECASE_NO_BREAK_ADJUSTMENT = 512; // 0x200
-    field public static final int TITLECASE_NO_LOWERCASE = 256; // 0x100
-  }
-
-  public static interface UCharacter.BidiPairedBracketType {
-    field public static final int CLOSE = 2; // 0x2
-    field public static final int NONE = 0; // 0x0
-    field public static final int OPEN = 1; // 0x1
-  }
-
-  public static interface UCharacter.DecompositionType {
-    field public static final int CANONICAL = 1; // 0x1
-    field public static final int CIRCLE = 3; // 0x3
-    field public static final int COMPAT = 2; // 0x2
-    field public static final int FINAL = 4; // 0x4
-    field public static final int FONT = 5; // 0x5
-    field public static final int FRACTION = 6; // 0x6
-    field public static final int INITIAL = 7; // 0x7
-    field public static final int ISOLATED = 8; // 0x8
-    field public static final int MEDIAL = 9; // 0x9
-    field public static final int NARROW = 10; // 0xa
-    field public static final int NOBREAK = 11; // 0xb
-    field public static final int NONE = 0; // 0x0
-    field public static final int SMALL = 12; // 0xc
-    field public static final int SQUARE = 13; // 0xd
-    field public static final int SUB = 14; // 0xe
-    field public static final int SUPER = 15; // 0xf
-    field public static final int VERTICAL = 16; // 0x10
-    field public static final int WIDE = 17; // 0x11
-  }
-
-  public static interface UCharacter.EastAsianWidth {
-    field public static final int AMBIGUOUS = 1; // 0x1
-    field public static final int FULLWIDTH = 3; // 0x3
-    field public static final int HALFWIDTH = 2; // 0x2
-    field public static final int NARROW = 4; // 0x4
-    field public static final int NEUTRAL = 0; // 0x0
-    field public static final int WIDE = 5; // 0x5
-  }
-
-  public static interface UCharacter.GraphemeClusterBreak {
-    field public static final int CONTROL = 1; // 0x1
-    field public static final int CR = 2; // 0x2
-    field public static final int EXTEND = 3; // 0x3
-    field public static final int E_BASE = 13; // 0xd
-    field public static final int E_BASE_GAZ = 14; // 0xe
-    field public static final int E_MODIFIER = 15; // 0xf
-    field public static final int GLUE_AFTER_ZWJ = 16; // 0x10
-    field public static final int L = 4; // 0x4
-    field public static final int LF = 5; // 0x5
-    field public static final int LV = 6; // 0x6
-    field public static final int LVT = 7; // 0x7
-    field public static final int OTHER = 0; // 0x0
-    field public static final int PREPEND = 11; // 0xb
-    field public static final int REGIONAL_INDICATOR = 12; // 0xc
-    field public static final int SPACING_MARK = 10; // 0xa
-    field public static final int T = 8; // 0x8
-    field public static final int V = 9; // 0x9
-    field public static final int ZWJ = 17; // 0x11
-  }
-
-  public static interface UCharacter.HangulSyllableType {
-    field public static final int LEADING_JAMO = 1; // 0x1
-    field public static final int LVT_SYLLABLE = 5; // 0x5
-    field public static final int LV_SYLLABLE = 4; // 0x4
-    field public static final int NOT_APPLICABLE = 0; // 0x0
-    field public static final int TRAILING_JAMO = 3; // 0x3
-    field public static final int VOWEL_JAMO = 2; // 0x2
-  }
-
-  public static interface UCharacter.IndicPositionalCategory {
-    field public static final int BOTTOM = 1; // 0x1
-    field public static final int BOTTOM_AND_LEFT = 2; // 0x2
-    field public static final int BOTTOM_AND_RIGHT = 3; // 0x3
-    field public static final int LEFT = 4; // 0x4
-    field public static final int LEFT_AND_RIGHT = 5; // 0x5
-    field public static final int NA = 0; // 0x0
-    field public static final int OVERSTRUCK = 6; // 0x6
-    field public static final int RIGHT = 7; // 0x7
-    field public static final int TOP = 8; // 0x8
-    field public static final int TOP_AND_BOTTOM = 9; // 0x9
-    field public static final int TOP_AND_BOTTOM_AND_LEFT = 15; // 0xf
-    field public static final int TOP_AND_BOTTOM_AND_RIGHT = 10; // 0xa
-    field public static final int TOP_AND_LEFT = 11; // 0xb
-    field public static final int TOP_AND_LEFT_AND_RIGHT = 12; // 0xc
-    field public static final int TOP_AND_RIGHT = 13; // 0xd
-    field public static final int VISUAL_ORDER_LEFT = 14; // 0xe
-  }
-
-  public static interface UCharacter.IndicSyllabicCategory {
-    field public static final int AVAGRAHA = 1; // 0x1
-    field public static final int BINDU = 2; // 0x2
-    field public static final int BRAHMI_JOINING_NUMBER = 3; // 0x3
-    field public static final int CANTILLATION_MARK = 4; // 0x4
-    field public static final int CONSONANT = 5; // 0x5
-    field public static final int CONSONANT_DEAD = 6; // 0x6
-    field public static final int CONSONANT_FINAL = 7; // 0x7
-    field public static final int CONSONANT_HEAD_LETTER = 8; // 0x8
-    field public static final int CONSONANT_INITIAL_POSTFIXED = 9; // 0x9
-    field public static final int CONSONANT_KILLER = 10; // 0xa
-    field public static final int CONSONANT_MEDIAL = 11; // 0xb
-    field public static final int CONSONANT_PLACEHOLDER = 12; // 0xc
-    field public static final int CONSONANT_PRECEDING_REPHA = 13; // 0xd
-    field public static final int CONSONANT_PREFIXED = 14; // 0xe
-    field public static final int CONSONANT_SUBJOINED = 15; // 0xf
-    field public static final int CONSONANT_SUCCEEDING_REPHA = 16; // 0x10
-    field public static final int CONSONANT_WITH_STACKER = 17; // 0x11
-    field public static final int GEMINATION_MARK = 18; // 0x12
-    field public static final int INVISIBLE_STACKER = 19; // 0x13
-    field public static final int JOINER = 20; // 0x14
-    field public static final int MODIFYING_LETTER = 21; // 0x15
-    field public static final int NON_JOINER = 22; // 0x16
-    field public static final int NUKTA = 23; // 0x17
-    field public static final int NUMBER = 24; // 0x18
-    field public static final int NUMBER_JOINER = 25; // 0x19
-    field public static final int OTHER = 0; // 0x0
-    field public static final int PURE_KILLER = 26; // 0x1a
-    field public static final int REGISTER_SHIFTER = 27; // 0x1b
-    field public static final int SYLLABLE_MODIFIER = 28; // 0x1c
-    field public static final int TONE_LETTER = 29; // 0x1d
-    field public static final int TONE_MARK = 30; // 0x1e
-    field public static final int VIRAMA = 31; // 0x1f
-    field public static final int VISARGA = 32; // 0x20
-    field public static final int VOWEL = 33; // 0x21
-    field public static final int VOWEL_DEPENDENT = 34; // 0x22
-    field public static final int VOWEL_INDEPENDENT = 35; // 0x23
-  }
-
-  public static interface UCharacter.JoiningGroup {
-    field public static final int AFRICAN_FEH = 86; // 0x56
-    field public static final int AFRICAN_NOON = 87; // 0x57
-    field public static final int AFRICAN_QAF = 88; // 0x58
-    field public static final int AIN = 1; // 0x1
-    field public static final int ALAPH = 2; // 0x2
-    field public static final int ALEF = 3; // 0x3
-    field public static final int BEH = 4; // 0x4
-    field public static final int BETH = 5; // 0x5
-    field public static final int BURUSHASKI_YEH_BARREE = 54; // 0x36
-    field public static final int DAL = 6; // 0x6
-    field public static final int DALATH_RISH = 7; // 0x7
-    field public static final int E = 8; // 0x8
-    field public static final int FARSI_YEH = 55; // 0x37
-    field public static final int FE = 51; // 0x33
-    field public static final int FEH = 9; // 0x9
-    field public static final int FINAL_SEMKATH = 10; // 0xa
-    field public static final int GAF = 11; // 0xb
-    field public static final int GAMAL = 12; // 0xc
-    field public static final int HAH = 13; // 0xd
-    field public static final int HAMZA_ON_HEH_GOAL = 14; // 0xe
-    field public static final int HANIFI_ROHINGYA_KINNA_YA = 100; // 0x64
-    field public static final int HANIFI_ROHINGYA_PA = 101; // 0x65
-    field public static final int HE = 15; // 0xf
-    field public static final int HEH = 16; // 0x10
-    field public static final int HEH_GOAL = 17; // 0x11
-    field public static final int HETH = 18; // 0x12
-    field public static final int KAF = 19; // 0x13
-    field public static final int KAPH = 20; // 0x14
-    field public static final int KHAPH = 52; // 0x34
-    field public static final int KNOTTED_HEH = 21; // 0x15
-    field public static final int LAM = 22; // 0x16
-    field public static final int LAMADH = 23; // 0x17
-    field public static final int MALAYALAM_BHA = 89; // 0x59
-    field public static final int MALAYALAM_JA = 90; // 0x5a
-    field public static final int MALAYALAM_LLA = 91; // 0x5b
-    field public static final int MALAYALAM_LLLA = 92; // 0x5c
-    field public static final int MALAYALAM_NGA = 93; // 0x5d
-    field public static final int MALAYALAM_NNA = 94; // 0x5e
-    field public static final int MALAYALAM_NNNA = 95; // 0x5f
-    field public static final int MALAYALAM_NYA = 96; // 0x60
-    field public static final int MALAYALAM_RA = 97; // 0x61
-    field public static final int MALAYALAM_SSA = 98; // 0x62
-    field public static final int MALAYALAM_TTA = 99; // 0x63
-    field public static final int MANICHAEAN_ALEPH = 58; // 0x3a
-    field public static final int MANICHAEAN_AYIN = 59; // 0x3b
-    field public static final int MANICHAEAN_BETH = 60; // 0x3c
-    field public static final int MANICHAEAN_DALETH = 61; // 0x3d
-    field public static final int MANICHAEAN_DHAMEDH = 62; // 0x3e
-    field public static final int MANICHAEAN_FIVE = 63; // 0x3f
-    field public static final int MANICHAEAN_GIMEL = 64; // 0x40
-    field public static final int MANICHAEAN_HETH = 65; // 0x41
-    field public static final int MANICHAEAN_HUNDRED = 66; // 0x42
-    field public static final int MANICHAEAN_KAPH = 67; // 0x43
-    field public static final int MANICHAEAN_LAMEDH = 68; // 0x44
-    field public static final int MANICHAEAN_MEM = 69; // 0x45
-    field public static final int MANICHAEAN_NUN = 70; // 0x46
-    field public static final int MANICHAEAN_ONE = 71; // 0x47
-    field public static final int MANICHAEAN_PE = 72; // 0x48
-    field public static final int MANICHAEAN_QOPH = 73; // 0x49
-    field public static final int MANICHAEAN_RESH = 74; // 0x4a
-    field public static final int MANICHAEAN_SADHE = 75; // 0x4b
-    field public static final int MANICHAEAN_SAMEKH = 76; // 0x4c
-    field public static final int MANICHAEAN_TAW = 77; // 0x4d
-    field public static final int MANICHAEAN_TEN = 78; // 0x4e
-    field public static final int MANICHAEAN_TETH = 79; // 0x4f
-    field public static final int MANICHAEAN_THAMEDH = 80; // 0x50
-    field public static final int MANICHAEAN_TWENTY = 81; // 0x51
-    field public static final int MANICHAEAN_WAW = 82; // 0x52
-    field public static final int MANICHAEAN_YODH = 83; // 0x53
-    field public static final int MANICHAEAN_ZAYIN = 84; // 0x54
-    field public static final int MEEM = 24; // 0x18
-    field public static final int MIM = 25; // 0x19
-    field public static final int NOON = 26; // 0x1a
-    field public static final int NO_JOINING_GROUP = 0; // 0x0
-    field public static final int NUN = 27; // 0x1b
-    field public static final int NYA = 56; // 0x38
-    field public static final int PE = 28; // 0x1c
-    field public static final int QAF = 29; // 0x1d
-    field public static final int QAPH = 30; // 0x1e
-    field public static final int REH = 31; // 0x1f
-    field public static final int REVERSED_PE = 32; // 0x20
-    field public static final int ROHINGYA_YEH = 57; // 0x39
-    field public static final int SAD = 33; // 0x21
-    field public static final int SADHE = 34; // 0x22
-    field public static final int SEEN = 35; // 0x23
-    field public static final int SEMKATH = 36; // 0x24
-    field public static final int SHIN = 37; // 0x25
-    field public static final int STRAIGHT_WAW = 85; // 0x55
-    field public static final int SWASH_KAF = 38; // 0x26
-    field public static final int SYRIAC_WAW = 39; // 0x27
-    field public static final int TAH = 40; // 0x28
-    field public static final int TAW = 41; // 0x29
-    field public static final int TEH_MARBUTA = 42; // 0x2a
-    field public static final int TEH_MARBUTA_GOAL = 14; // 0xe
-    field public static final int TETH = 43; // 0x2b
-    field public static final int WAW = 44; // 0x2c
-    field public static final int YEH = 45; // 0x2d
-    field public static final int YEH_BARREE = 46; // 0x2e
-    field public static final int YEH_WITH_TAIL = 47; // 0x2f
-    field public static final int YUDH = 48; // 0x30
-    field public static final int YUDH_HE = 49; // 0x31
-    field public static final int ZAIN = 50; // 0x32
-    field public static final int ZHAIN = 53; // 0x35
-  }
-
-  public static interface UCharacter.JoiningType {
-    field public static final int DUAL_JOINING = 2; // 0x2
-    field public static final int JOIN_CAUSING = 1; // 0x1
-    field public static final int LEFT_JOINING = 3; // 0x3
-    field public static final int NON_JOINING = 0; // 0x0
-    field public static final int RIGHT_JOINING = 4; // 0x4
-    field public static final int TRANSPARENT = 5; // 0x5
-  }
-
-  public static interface UCharacter.LineBreak {
-    field public static final int ALPHABETIC = 2; // 0x2
-    field public static final int AMBIGUOUS = 1; // 0x1
-    field public static final int BREAK_AFTER = 4; // 0x4
-    field public static final int BREAK_BEFORE = 5; // 0x5
-    field public static final int BREAK_BOTH = 3; // 0x3
-    field public static final int BREAK_SYMBOLS = 27; // 0x1b
-    field public static final int CARRIAGE_RETURN = 10; // 0xa
-    field public static final int CLOSE_PARENTHESIS = 36; // 0x24
-    field public static final int CLOSE_PUNCTUATION = 8; // 0x8
-    field public static final int COMBINING_MARK = 9; // 0x9
-    field public static final int COMPLEX_CONTEXT = 24; // 0x18
-    field public static final int CONDITIONAL_JAPANESE_STARTER = 37; // 0x25
-    field public static final int CONTINGENT_BREAK = 7; // 0x7
-    field public static final int EXCLAMATION = 11; // 0xb
-    field public static final int E_BASE = 40; // 0x28
-    field public static final int E_MODIFIER = 41; // 0x29
-    field public static final int GLUE = 12; // 0xc
-    field public static final int H2 = 31; // 0x1f
-    field public static final int H3 = 32; // 0x20
-    field public static final int HEBREW_LETTER = 38; // 0x26
-    field public static final int HYPHEN = 13; // 0xd
-    field public static final int IDEOGRAPHIC = 14; // 0xe
-    field public static final int INFIX_NUMERIC = 16; // 0x10
-    field public static final int INSEPARABLE = 15; // 0xf
-    field public static final int INSEPERABLE = 15; // 0xf
-    field public static final int JL = 33; // 0x21
-    field public static final int JT = 34; // 0x22
-    field public static final int JV = 35; // 0x23
-    field public static final int LINE_FEED = 17; // 0x11
-    field public static final int MANDATORY_BREAK = 6; // 0x6
-    field public static final int NEXT_LINE = 29; // 0x1d
-    field public static final int NONSTARTER = 18; // 0x12
-    field public static final int NUMERIC = 19; // 0x13
-    field public static final int OPEN_PUNCTUATION = 20; // 0x14
-    field public static final int POSTFIX_NUMERIC = 21; // 0x15
-    field public static final int PREFIX_NUMERIC = 22; // 0x16
-    field public static final int QUOTATION = 23; // 0x17
-    field public static final int REGIONAL_INDICATOR = 39; // 0x27
-    field public static final int SPACE = 26; // 0x1a
-    field public static final int SURROGATE = 25; // 0x19
-    field public static final int UNKNOWN = 0; // 0x0
-    field public static final int WORD_JOINER = 30; // 0x1e
-    field public static final int ZWJ = 42; // 0x2a
-    field public static final int ZWSPACE = 28; // 0x1c
-  }
-
-  public static interface UCharacter.NumericType {
-    field public static final int DECIMAL = 1; // 0x1
-    field public static final int DIGIT = 2; // 0x2
-    field public static final int NONE = 0; // 0x0
-    field public static final int NUMERIC = 3; // 0x3
-  }
-
-  public static interface UCharacter.SentenceBreak {
-    field public static final int ATERM = 1; // 0x1
-    field public static final int CLOSE = 2; // 0x2
-    field public static final int CR = 11; // 0xb
-    field public static final int EXTEND = 12; // 0xc
-    field public static final int FORMAT = 3; // 0x3
-    field public static final int LF = 13; // 0xd
-    field public static final int LOWER = 4; // 0x4
-    field public static final int NUMERIC = 5; // 0x5
-    field public static final int OLETTER = 6; // 0x6
-    field public static final int OTHER = 0; // 0x0
-    field public static final int SCONTINUE = 14; // 0xe
-    field public static final int SEP = 7; // 0x7
-    field public static final int SP = 8; // 0x8
-    field public static final int STERM = 9; // 0x9
-    field public static final int UPPER = 10; // 0xa
-  }
-
-  public static final class UCharacter.UnicodeBlock extends java.lang.Character.Subset {
-    method public static android.icu.lang.UCharacter.UnicodeBlock forName(String);
-    method public int getID();
-    method public static android.icu.lang.UCharacter.UnicodeBlock getInstance(int);
-    method public static android.icu.lang.UCharacter.UnicodeBlock of(int);
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ADLAM;
-    field public static final int ADLAM_ID = 263; // 0x107
-    field public static final android.icu.lang.UCharacter.UnicodeBlock AEGEAN_NUMBERS;
-    field public static final int AEGEAN_NUMBERS_ID = 119; // 0x77
-    field public static final android.icu.lang.UCharacter.UnicodeBlock AHOM;
-    field public static final int AHOM_ID = 253; // 0xfd
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ALCHEMICAL_SYMBOLS;
-    field public static final int ALCHEMICAL_SYMBOLS_ID = 208; // 0xd0
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ALPHABETIC_PRESENTATION_FORMS;
-    field public static final int ALPHABETIC_PRESENTATION_FORMS_ID = 80; // 0x50
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ANATOLIAN_HIEROGLYPHS;
-    field public static final int ANATOLIAN_HIEROGLYPHS_ID = 254; // 0xfe
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ANCIENT_GREEK_MUSICAL_NOTATION;
-    field public static final int ANCIENT_GREEK_MUSICAL_NOTATION_ID = 126; // 0x7e
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ANCIENT_GREEK_NUMBERS;
-    field public static final int ANCIENT_GREEK_NUMBERS_ID = 127; // 0x7f
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ANCIENT_SYMBOLS;
-    field public static final int ANCIENT_SYMBOLS_ID = 165; // 0xa5
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ARABIC;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ARABIC_EXTENDED_A;
-    field public static final int ARABIC_EXTENDED_A_ID = 210; // 0xd2
-    field public static final int ARABIC_ID = 12; // 0xc
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS;
-    field public static final int ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS_ID = 211; // 0xd3
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ARABIC_PRESENTATION_FORMS_A;
-    field public static final int ARABIC_PRESENTATION_FORMS_A_ID = 81; // 0x51
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ARABIC_PRESENTATION_FORMS_B;
-    field public static final int ARABIC_PRESENTATION_FORMS_B_ID = 85; // 0x55
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ARABIC_SUPPLEMENT;
-    field public static final int ARABIC_SUPPLEMENT_ID = 128; // 0x80
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ARMENIAN;
-    field public static final int ARMENIAN_ID = 10; // 0xa
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ARROWS;
-    field public static final int ARROWS_ID = 46; // 0x2e
-    field public static final android.icu.lang.UCharacter.UnicodeBlock AVESTAN;
-    field public static final int AVESTAN_ID = 188; // 0xbc
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BALINESE;
-    field public static final int BALINESE_ID = 147; // 0x93
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BAMUM;
-    field public static final int BAMUM_ID = 177; // 0xb1
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BAMUM_SUPPLEMENT;
-    field public static final int BAMUM_SUPPLEMENT_ID = 202; // 0xca
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BASIC_LATIN;
-    field public static final int BASIC_LATIN_ID = 1; // 0x1
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BASSA_VAH;
-    field public static final int BASSA_VAH_ID = 221; // 0xdd
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BATAK;
-    field public static final int BATAK_ID = 199; // 0xc7
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BENGALI;
-    field public static final int BENGALI_ID = 16; // 0x10
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BHAIKSUKI;
-    field public static final int BHAIKSUKI_ID = 264; // 0x108
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BLOCK_ELEMENTS;
-    field public static final int BLOCK_ELEMENTS_ID = 53; // 0x35
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BOPOMOFO;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BOPOMOFO_EXTENDED;
-    field public static final int BOPOMOFO_EXTENDED_ID = 67; // 0x43
-    field public static final int BOPOMOFO_ID = 64; // 0x40
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BOX_DRAWING;
-    field public static final int BOX_DRAWING_ID = 52; // 0x34
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BRAHMI;
-    field public static final int BRAHMI_ID = 201; // 0xc9
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BRAILLE_PATTERNS;
-    field public static final int BRAILLE_PATTERNS_ID = 57; // 0x39
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BUGINESE;
-    field public static final int BUGINESE_ID = 129; // 0x81
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BUHID;
-    field public static final int BUHID_ID = 100; // 0x64
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BYZANTINE_MUSICAL_SYMBOLS;
-    field public static final int BYZANTINE_MUSICAL_SYMBOLS_ID = 91; // 0x5b
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CARIAN;
-    field public static final int CARIAN_ID = 168; // 0xa8
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CAUCASIAN_ALBANIAN;
-    field public static final int CAUCASIAN_ALBANIAN_ID = 222; // 0xde
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CHAKMA;
-    field public static final int CHAKMA_ID = 212; // 0xd4
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CHAM;
-    field public static final int CHAM_ID = 164; // 0xa4
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CHEROKEE;
-    field public static final int CHEROKEE_ID = 32; // 0x20
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CHEROKEE_SUPPLEMENT;
-    field public static final int CHEROKEE_SUPPLEMENT_ID = 255; // 0xff
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CHESS_SYMBOLS;
-    field public static final int CHESS_SYMBOLS_ID = 281; // 0x119
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CHORASMIAN;
-    field public static final int CHORASMIAN_ID = 301; // 0x12d
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_COMPATIBILITY;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_COMPATIBILITY_FORMS;
-    field public static final int CJK_COMPATIBILITY_FORMS_ID = 83; // 0x53
-    field public static final int CJK_COMPATIBILITY_ID = 69; // 0x45
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS;
-    field public static final int CJK_COMPATIBILITY_IDEOGRAPHS_ID = 79; // 0x4f
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT;
-    field public static final int CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_ID = 95; // 0x5f
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_RADICALS_SUPPLEMENT;
-    field public static final int CJK_RADICALS_SUPPLEMENT_ID = 58; // 0x3a
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_STROKES;
-    field public static final int CJK_STROKES_ID = 130; // 0x82
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_SYMBOLS_AND_PUNCTUATION;
-    field public static final int CJK_SYMBOLS_AND_PUNCTUATION_ID = 61; // 0x3d
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A;
-    field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_ID = 70; // 0x46
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B;
-    field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_ID = 94; // 0x5e
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C;
-    field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_ID = 197; // 0xc5
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D;
-    field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_ID = 209; // 0xd1
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E;
-    field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E_ID = 256; // 0x100
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F;
-    field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F_ID = 274; // 0x112
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G;
-    field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G_ID = 302; // 0x12e
-    field public static final int CJK_UNIFIED_IDEOGRAPHS_ID = 71; // 0x47
-    field public static final android.icu.lang.UCharacter.UnicodeBlock COMBINING_DIACRITICAL_MARKS;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock COMBINING_DIACRITICAL_MARKS_EXTENDED;
-    field public static final int COMBINING_DIACRITICAL_MARKS_EXTENDED_ID = 224; // 0xe0
-    field public static final int COMBINING_DIACRITICAL_MARKS_ID = 7; // 0x7
-    field public static final android.icu.lang.UCharacter.UnicodeBlock COMBINING_DIACRITICAL_MARKS_SUPPLEMENT;
-    field public static final int COMBINING_DIACRITICAL_MARKS_SUPPLEMENT_ID = 131; // 0x83
-    field public static final android.icu.lang.UCharacter.UnicodeBlock COMBINING_HALF_MARKS;
-    field public static final int COMBINING_HALF_MARKS_ID = 82; // 0x52
-    field public static final android.icu.lang.UCharacter.UnicodeBlock COMBINING_MARKS_FOR_SYMBOLS;
-    field public static final int COMBINING_MARKS_FOR_SYMBOLS_ID = 43; // 0x2b
-    field public static final android.icu.lang.UCharacter.UnicodeBlock COMMON_INDIC_NUMBER_FORMS;
-    field public static final int COMMON_INDIC_NUMBER_FORMS_ID = 178; // 0xb2
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CONTROL_PICTURES;
-    field public static final int CONTROL_PICTURES_ID = 49; // 0x31
-    field public static final android.icu.lang.UCharacter.UnicodeBlock COPTIC;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock COPTIC_EPACT_NUMBERS;
-    field public static final int COPTIC_EPACT_NUMBERS_ID = 223; // 0xdf
-    field public static final int COPTIC_ID = 132; // 0x84
-    field public static final android.icu.lang.UCharacter.UnicodeBlock COUNTING_ROD_NUMERALS;
-    field public static final int COUNTING_ROD_NUMERALS_ID = 154; // 0x9a
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CUNEIFORM;
-    field public static final int CUNEIFORM_ID = 152; // 0x98
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CUNEIFORM_NUMBERS_AND_PUNCTUATION;
-    field public static final int CUNEIFORM_NUMBERS_AND_PUNCTUATION_ID = 153; // 0x99
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CURRENCY_SYMBOLS;
-    field public static final int CURRENCY_SYMBOLS_ID = 42; // 0x2a
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CYPRIOT_SYLLABARY;
-    field public static final int CYPRIOT_SYLLABARY_ID = 123; // 0x7b
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CYRILLIC;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CYRILLIC_EXTENDED_A;
-    field public static final int CYRILLIC_EXTENDED_A_ID = 158; // 0x9e
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CYRILLIC_EXTENDED_B;
-    field public static final int CYRILLIC_EXTENDED_B_ID = 160; // 0xa0
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CYRILLIC_EXTENDED_C;
-    field public static final int CYRILLIC_EXTENDED_C_ID = 265; // 0x109
-    field public static final int CYRILLIC_ID = 9; // 0x9
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CYRILLIC_SUPPLEMENT;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CYRILLIC_SUPPLEMENTARY;
-    field public static final int CYRILLIC_SUPPLEMENTARY_ID = 97; // 0x61
-    field public static final int CYRILLIC_SUPPLEMENT_ID = 97; // 0x61
-    field public static final android.icu.lang.UCharacter.UnicodeBlock DESERET;
-    field public static final int DESERET_ID = 90; // 0x5a
-    field public static final android.icu.lang.UCharacter.UnicodeBlock DEVANAGARI;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock DEVANAGARI_EXTENDED;
-    field public static final int DEVANAGARI_EXTENDED_ID = 179; // 0xb3
-    field public static final int DEVANAGARI_ID = 15; // 0xf
-    field public static final android.icu.lang.UCharacter.UnicodeBlock DINGBATS;
-    field public static final int DINGBATS_ID = 56; // 0x38
-    field public static final android.icu.lang.UCharacter.UnicodeBlock DIVES_AKURU;
-    field public static final int DIVES_AKURU_ID = 303; // 0x12f
-    field public static final android.icu.lang.UCharacter.UnicodeBlock DOGRA;
-    field public static final int DOGRA_ID = 282; // 0x11a
-    field public static final android.icu.lang.UCharacter.UnicodeBlock DOMINO_TILES;
-    field public static final int DOMINO_TILES_ID = 171; // 0xab
-    field public static final android.icu.lang.UCharacter.UnicodeBlock DUPLOYAN;
-    field public static final int DUPLOYAN_ID = 225; // 0xe1
-    field public static final android.icu.lang.UCharacter.UnicodeBlock EARLY_DYNASTIC_CUNEIFORM;
-    field public static final int EARLY_DYNASTIC_CUNEIFORM_ID = 257; // 0x101
-    field public static final android.icu.lang.UCharacter.UnicodeBlock EGYPTIAN_HIEROGLYPHS;
-    field public static final int EGYPTIAN_HIEROGLYPHS_ID = 194; // 0xc2
-    field public static final android.icu.lang.UCharacter.UnicodeBlock EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS;
-    field public static final int EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS_ID = 292; // 0x124
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ELBASAN;
-    field public static final int ELBASAN_ID = 226; // 0xe2
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ELYMAIC;
-    field public static final int ELYMAIC_ID = 293; // 0x125
-    field public static final android.icu.lang.UCharacter.UnicodeBlock EMOTICONS;
-    field public static final int EMOTICONS_ID = 206; // 0xce
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ENCLOSED_ALPHANUMERICS;
-    field public static final int ENCLOSED_ALPHANUMERICS_ID = 51; // 0x33
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ENCLOSED_ALPHANUMERIC_SUPPLEMENT;
-    field public static final int ENCLOSED_ALPHANUMERIC_SUPPLEMENT_ID = 195; // 0xc3
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ENCLOSED_CJK_LETTERS_AND_MONTHS;
-    field public static final int ENCLOSED_CJK_LETTERS_AND_MONTHS_ID = 68; // 0x44
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ENCLOSED_IDEOGRAPHIC_SUPPLEMENT;
-    field public static final int ENCLOSED_IDEOGRAPHIC_SUPPLEMENT_ID = 196; // 0xc4
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ETHIOPIC;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ETHIOPIC_EXTENDED;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ETHIOPIC_EXTENDED_A;
-    field public static final int ETHIOPIC_EXTENDED_A_ID = 200; // 0xc8
-    field public static final int ETHIOPIC_EXTENDED_ID = 133; // 0x85
-    field public static final int ETHIOPIC_ID = 31; // 0x1f
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ETHIOPIC_SUPPLEMENT;
-    field public static final int ETHIOPIC_SUPPLEMENT_ID = 134; // 0x86
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GENERAL_PUNCTUATION;
-    field public static final int GENERAL_PUNCTUATION_ID = 40; // 0x28
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GEOMETRIC_SHAPES;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GEOMETRIC_SHAPES_EXTENDED;
-    field public static final int GEOMETRIC_SHAPES_EXTENDED_ID = 227; // 0xe3
-    field public static final int GEOMETRIC_SHAPES_ID = 54; // 0x36
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GEORGIAN;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GEORGIAN_EXTENDED;
-    field public static final int GEORGIAN_EXTENDED_ID = 283; // 0x11b
-    field public static final int GEORGIAN_ID = 29; // 0x1d
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GEORGIAN_SUPPLEMENT;
-    field public static final int GEORGIAN_SUPPLEMENT_ID = 135; // 0x87
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GLAGOLITIC;
-    field public static final int GLAGOLITIC_ID = 136; // 0x88
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GLAGOLITIC_SUPPLEMENT;
-    field public static final int GLAGOLITIC_SUPPLEMENT_ID = 266; // 0x10a
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GOTHIC;
-    field public static final int GOTHIC_ID = 89; // 0x59
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GRANTHA;
-    field public static final int GRANTHA_ID = 228; // 0xe4
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GREEK;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GREEK_EXTENDED;
-    field public static final int GREEK_EXTENDED_ID = 39; // 0x27
-    field public static final int GREEK_ID = 8; // 0x8
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GUJARATI;
-    field public static final int GUJARATI_ID = 18; // 0x12
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GUNJALA_GONDI;
-    field public static final int GUNJALA_GONDI_ID = 284; // 0x11c
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GURMUKHI;
-    field public static final int GURMUKHI_ID = 17; // 0x11
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HALFWIDTH_AND_FULLWIDTH_FORMS;
-    field public static final int HALFWIDTH_AND_FULLWIDTH_FORMS_ID = 87; // 0x57
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HANGUL_COMPATIBILITY_JAMO;
-    field public static final int HANGUL_COMPATIBILITY_JAMO_ID = 65; // 0x41
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HANGUL_JAMO;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HANGUL_JAMO_EXTENDED_A;
-    field public static final int HANGUL_JAMO_EXTENDED_A_ID = 180; // 0xb4
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HANGUL_JAMO_EXTENDED_B;
-    field public static final int HANGUL_JAMO_EXTENDED_B_ID = 185; // 0xb9
-    field public static final int HANGUL_JAMO_ID = 30; // 0x1e
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HANGUL_SYLLABLES;
-    field public static final int HANGUL_SYLLABLES_ID = 74; // 0x4a
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HANIFI_ROHINGYA;
-    field public static final int HANIFI_ROHINGYA_ID = 285; // 0x11d
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HANUNOO;
-    field public static final int HANUNOO_ID = 99; // 0x63
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HATRAN;
-    field public static final int HATRAN_ID = 258; // 0x102
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HEBREW;
-    field public static final int HEBREW_ID = 11; // 0xb
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HIGH_PRIVATE_USE_SURROGATES;
-    field public static final int HIGH_PRIVATE_USE_SURROGATES_ID = 76; // 0x4c
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HIGH_SURROGATES;
-    field public static final int HIGH_SURROGATES_ID = 75; // 0x4b
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HIRAGANA;
-    field public static final int HIRAGANA_ID = 62; // 0x3e
-    field public static final android.icu.lang.UCharacter.UnicodeBlock IDEOGRAPHIC_DESCRIPTION_CHARACTERS;
-    field public static final int IDEOGRAPHIC_DESCRIPTION_CHARACTERS_ID = 60; // 0x3c
-    field public static final android.icu.lang.UCharacter.UnicodeBlock IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION;
-    field public static final int IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION_ID = 267; // 0x10b
-    field public static final android.icu.lang.UCharacter.UnicodeBlock IMPERIAL_ARAMAIC;
-    field public static final int IMPERIAL_ARAMAIC_ID = 186; // 0xba
-    field public static final android.icu.lang.UCharacter.UnicodeBlock INDIC_SIYAQ_NUMBERS;
-    field public static final int INDIC_SIYAQ_NUMBERS_ID = 286; // 0x11e
-    field public static final android.icu.lang.UCharacter.UnicodeBlock INSCRIPTIONAL_PAHLAVI;
-    field public static final int INSCRIPTIONAL_PAHLAVI_ID = 190; // 0xbe
-    field public static final android.icu.lang.UCharacter.UnicodeBlock INSCRIPTIONAL_PARTHIAN;
-    field public static final int INSCRIPTIONAL_PARTHIAN_ID = 189; // 0xbd
-    field public static final android.icu.lang.UCharacter.UnicodeBlock INVALID_CODE;
-    field public static final int INVALID_CODE_ID = -1; // 0xffffffff
-    field public static final android.icu.lang.UCharacter.UnicodeBlock IPA_EXTENSIONS;
-    field public static final int IPA_EXTENSIONS_ID = 5; // 0x5
-    field public static final android.icu.lang.UCharacter.UnicodeBlock JAVANESE;
-    field public static final int JAVANESE_ID = 181; // 0xb5
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KAITHI;
-    field public static final int KAITHI_ID = 193; // 0xc1
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KANA_EXTENDED_A;
-    field public static final int KANA_EXTENDED_A_ID = 275; // 0x113
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KANA_SUPPLEMENT;
-    field public static final int KANA_SUPPLEMENT_ID = 203; // 0xcb
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KANBUN;
-    field public static final int KANBUN_ID = 66; // 0x42
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KANGXI_RADICALS;
-    field public static final int KANGXI_RADICALS_ID = 59; // 0x3b
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KANNADA;
-    field public static final int KANNADA_ID = 22; // 0x16
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KATAKANA;
-    field public static final int KATAKANA_ID = 63; // 0x3f
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KATAKANA_PHONETIC_EXTENSIONS;
-    field public static final int KATAKANA_PHONETIC_EXTENSIONS_ID = 107; // 0x6b
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KAYAH_LI;
-    field public static final int KAYAH_LI_ID = 162; // 0xa2
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KHAROSHTHI;
-    field public static final int KHAROSHTHI_ID = 137; // 0x89
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KHITAN_SMALL_SCRIPT;
-    field public static final int KHITAN_SMALL_SCRIPT_ID = 304; // 0x130
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KHMER;
-    field public static final int KHMER_ID = 36; // 0x24
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KHMER_SYMBOLS;
-    field public static final int KHMER_SYMBOLS_ID = 113; // 0x71
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KHOJKI;
-    field public static final int KHOJKI_ID = 229; // 0xe5
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KHUDAWADI;
-    field public static final int KHUDAWADI_ID = 230; // 0xe6
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LAO;
-    field public static final int LAO_ID = 26; // 0x1a
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LATIN_1_SUPPLEMENT;
-    field public static final int LATIN_1_SUPPLEMENT_ID = 2; // 0x2
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LATIN_EXTENDED_A;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LATIN_EXTENDED_ADDITIONAL;
-    field public static final int LATIN_EXTENDED_ADDITIONAL_ID = 38; // 0x26
-    field public static final int LATIN_EXTENDED_A_ID = 3; // 0x3
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LATIN_EXTENDED_B;
-    field public static final int LATIN_EXTENDED_B_ID = 4; // 0x4
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LATIN_EXTENDED_C;
-    field public static final int LATIN_EXTENDED_C_ID = 148; // 0x94
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LATIN_EXTENDED_D;
-    field public static final int LATIN_EXTENDED_D_ID = 149; // 0x95
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LATIN_EXTENDED_E;
-    field public static final int LATIN_EXTENDED_E_ID = 231; // 0xe7
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LEPCHA;
-    field public static final int LEPCHA_ID = 156; // 0x9c
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LETTERLIKE_SYMBOLS;
-    field public static final int LETTERLIKE_SYMBOLS_ID = 44; // 0x2c
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LIMBU;
-    field public static final int LIMBU_ID = 111; // 0x6f
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LINEAR_A;
-    field public static final int LINEAR_A_ID = 232; // 0xe8
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LINEAR_B_IDEOGRAMS;
-    field public static final int LINEAR_B_IDEOGRAMS_ID = 118; // 0x76
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LINEAR_B_SYLLABARY;
-    field public static final int LINEAR_B_SYLLABARY_ID = 117; // 0x75
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LISU;
-    field public static final int LISU_ID = 176; // 0xb0
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LISU_SUPPLEMENT;
-    field public static final int LISU_SUPPLEMENT_ID = 305; // 0x131
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LOW_SURROGATES;
-    field public static final int LOW_SURROGATES_ID = 77; // 0x4d
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LYCIAN;
-    field public static final int LYCIAN_ID = 167; // 0xa7
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LYDIAN;
-    field public static final int LYDIAN_ID = 169; // 0xa9
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MAHAJANI;
-    field public static final int MAHAJANI_ID = 233; // 0xe9
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MAHJONG_TILES;
-    field public static final int MAHJONG_TILES_ID = 170; // 0xaa
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MAKASAR;
-    field public static final int MAKASAR_ID = 287; // 0x11f
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MALAYALAM;
-    field public static final int MALAYALAM_ID = 23; // 0x17
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MANDAIC;
-    field public static final int MANDAIC_ID = 198; // 0xc6
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MANICHAEAN;
-    field public static final int MANICHAEAN_ID = 234; // 0xea
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MARCHEN;
-    field public static final int MARCHEN_ID = 268; // 0x10c
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MASARAM_GONDI;
-    field public static final int MASARAM_GONDI_ID = 276; // 0x114
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MATHEMATICAL_ALPHANUMERIC_SYMBOLS;
-    field public static final int MATHEMATICAL_ALPHANUMERIC_SYMBOLS_ID = 93; // 0x5d
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MATHEMATICAL_OPERATORS;
-    field public static final int MATHEMATICAL_OPERATORS_ID = 47; // 0x2f
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MAYAN_NUMERALS;
-    field public static final int MAYAN_NUMERALS_ID = 288; // 0x120
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MEDEFAIDRIN;
-    field public static final int MEDEFAIDRIN_ID = 289; // 0x121
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MEETEI_MAYEK;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MEETEI_MAYEK_EXTENSIONS;
-    field public static final int MEETEI_MAYEK_EXTENSIONS_ID = 213; // 0xd5
-    field public static final int MEETEI_MAYEK_ID = 184; // 0xb8
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MENDE_KIKAKUI;
-    field public static final int MENDE_KIKAKUI_ID = 235; // 0xeb
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MEROITIC_CURSIVE;
-    field public static final int MEROITIC_CURSIVE_ID = 214; // 0xd6
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MEROITIC_HIEROGLYPHS;
-    field public static final int MEROITIC_HIEROGLYPHS_ID = 215; // 0xd7
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MIAO;
-    field public static final int MIAO_ID = 216; // 0xd8
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A;
-    field public static final int MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A_ID = 102; // 0x66
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B;
-    field public static final int MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B_ID = 105; // 0x69
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MISCELLANEOUS_SYMBOLS;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_ARROWS;
-    field public static final int MISCELLANEOUS_SYMBOLS_AND_ARROWS_ID = 115; // 0x73
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS;
-    field public static final int MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS_ID = 205; // 0xcd
-    field public static final int MISCELLANEOUS_SYMBOLS_ID = 55; // 0x37
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MISCELLANEOUS_TECHNICAL;
-    field public static final int MISCELLANEOUS_TECHNICAL_ID = 48; // 0x30
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MODI;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MODIFIER_TONE_LETTERS;
-    field public static final int MODIFIER_TONE_LETTERS_ID = 138; // 0x8a
-    field public static final int MODI_ID = 236; // 0xec
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MONGOLIAN;
-    field public static final int MONGOLIAN_ID = 37; // 0x25
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MONGOLIAN_SUPPLEMENT;
-    field public static final int MONGOLIAN_SUPPLEMENT_ID = 269; // 0x10d
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MRO;
-    field public static final int MRO_ID = 237; // 0xed
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MULTANI;
-    field public static final int MULTANI_ID = 259; // 0x103
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MUSICAL_SYMBOLS;
-    field public static final int MUSICAL_SYMBOLS_ID = 92; // 0x5c
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MYANMAR;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MYANMAR_EXTENDED_A;
-    field public static final int MYANMAR_EXTENDED_A_ID = 182; // 0xb6
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MYANMAR_EXTENDED_B;
-    field public static final int MYANMAR_EXTENDED_B_ID = 238; // 0xee
-    field public static final int MYANMAR_ID = 28; // 0x1c
-    field public static final android.icu.lang.UCharacter.UnicodeBlock NABATAEAN;
-    field public static final int NABATAEAN_ID = 239; // 0xef
-    field public static final android.icu.lang.UCharacter.UnicodeBlock NANDINAGARI;
-    field public static final int NANDINAGARI_ID = 294; // 0x126
-    field public static final android.icu.lang.UCharacter.UnicodeBlock NEWA;
-    field public static final int NEWA_ID = 270; // 0x10e
-    field public static final android.icu.lang.UCharacter.UnicodeBlock NEW_TAI_LUE;
-    field public static final int NEW_TAI_LUE_ID = 139; // 0x8b
-    field public static final android.icu.lang.UCharacter.UnicodeBlock NKO;
-    field public static final int NKO_ID = 146; // 0x92
-    field public static final android.icu.lang.UCharacter.UnicodeBlock NO_BLOCK;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock NUMBER_FORMS;
-    field public static final int NUMBER_FORMS_ID = 45; // 0x2d
-    field public static final android.icu.lang.UCharacter.UnicodeBlock NUSHU;
-    field public static final int NUSHU_ID = 277; // 0x115
-    field public static final android.icu.lang.UCharacter.UnicodeBlock NYIAKENG_PUACHUE_HMONG;
-    field public static final int NYIAKENG_PUACHUE_HMONG_ID = 295; // 0x127
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OGHAM;
-    field public static final int OGHAM_ID = 34; // 0x22
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OLD_HUNGARIAN;
-    field public static final int OLD_HUNGARIAN_ID = 260; // 0x104
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OLD_ITALIC;
-    field public static final int OLD_ITALIC_ID = 88; // 0x58
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OLD_NORTH_ARABIAN;
-    field public static final int OLD_NORTH_ARABIAN_ID = 240; // 0xf0
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OLD_PERMIC;
-    field public static final int OLD_PERMIC_ID = 241; // 0xf1
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OLD_PERSIAN;
-    field public static final int OLD_PERSIAN_ID = 140; // 0x8c
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OLD_SOGDIAN;
-    field public static final int OLD_SOGDIAN_ID = 290; // 0x122
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OLD_SOUTH_ARABIAN;
-    field public static final int OLD_SOUTH_ARABIAN_ID = 187; // 0xbb
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OLD_TURKIC;
-    field public static final int OLD_TURKIC_ID = 191; // 0xbf
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OL_CHIKI;
-    field public static final int OL_CHIKI_ID = 157; // 0x9d
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OPTICAL_CHARACTER_RECOGNITION;
-    field public static final int OPTICAL_CHARACTER_RECOGNITION_ID = 50; // 0x32
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ORIYA;
-    field public static final int ORIYA_ID = 19; // 0x13
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ORNAMENTAL_DINGBATS;
-    field public static final int ORNAMENTAL_DINGBATS_ID = 242; // 0xf2
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OSAGE;
-    field public static final int OSAGE_ID = 271; // 0x10f
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OSMANYA;
-    field public static final int OSMANYA_ID = 122; // 0x7a
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OTTOMAN_SIYAQ_NUMBERS;
-    field public static final int OTTOMAN_SIYAQ_NUMBERS_ID = 296; // 0x128
-    field public static final android.icu.lang.UCharacter.UnicodeBlock PAHAWH_HMONG;
-    field public static final int PAHAWH_HMONG_ID = 243; // 0xf3
-    field public static final android.icu.lang.UCharacter.UnicodeBlock PALMYRENE;
-    field public static final int PALMYRENE_ID = 244; // 0xf4
-    field public static final android.icu.lang.UCharacter.UnicodeBlock PAU_CIN_HAU;
-    field public static final int PAU_CIN_HAU_ID = 245; // 0xf5
-    field public static final android.icu.lang.UCharacter.UnicodeBlock PHAGS_PA;
-    field public static final int PHAGS_PA_ID = 150; // 0x96
-    field public static final android.icu.lang.UCharacter.UnicodeBlock PHAISTOS_DISC;
-    field public static final int PHAISTOS_DISC_ID = 166; // 0xa6
-    field public static final android.icu.lang.UCharacter.UnicodeBlock PHOENICIAN;
-    field public static final int PHOENICIAN_ID = 151; // 0x97
-    field public static final android.icu.lang.UCharacter.UnicodeBlock PHONETIC_EXTENSIONS;
-    field public static final int PHONETIC_EXTENSIONS_ID = 114; // 0x72
-    field public static final android.icu.lang.UCharacter.UnicodeBlock PHONETIC_EXTENSIONS_SUPPLEMENT;
-    field public static final int PHONETIC_EXTENSIONS_SUPPLEMENT_ID = 141; // 0x8d
-    field public static final android.icu.lang.UCharacter.UnicodeBlock PLAYING_CARDS;
-    field public static final int PLAYING_CARDS_ID = 204; // 0xcc
-    field public static final android.icu.lang.UCharacter.UnicodeBlock PRIVATE_USE;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock PRIVATE_USE_AREA;
-    field public static final int PRIVATE_USE_AREA_ID = 78; // 0x4e
-    field public static final int PRIVATE_USE_ID = 78; // 0x4e
-    field public static final android.icu.lang.UCharacter.UnicodeBlock PSALTER_PAHLAVI;
-    field public static final int PSALTER_PAHLAVI_ID = 246; // 0xf6
-    field public static final android.icu.lang.UCharacter.UnicodeBlock REJANG;
-    field public static final int REJANG_ID = 163; // 0xa3
-    field public static final android.icu.lang.UCharacter.UnicodeBlock RUMI_NUMERAL_SYMBOLS;
-    field public static final int RUMI_NUMERAL_SYMBOLS_ID = 192; // 0xc0
-    field public static final android.icu.lang.UCharacter.UnicodeBlock RUNIC;
-    field public static final int RUNIC_ID = 35; // 0x23
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SAMARITAN;
-    field public static final int SAMARITAN_ID = 172; // 0xac
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SAURASHTRA;
-    field public static final int SAURASHTRA_ID = 161; // 0xa1
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SHARADA;
-    field public static final int SHARADA_ID = 217; // 0xd9
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SHAVIAN;
-    field public static final int SHAVIAN_ID = 121; // 0x79
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SHORTHAND_FORMAT_CONTROLS;
-    field public static final int SHORTHAND_FORMAT_CONTROLS_ID = 247; // 0xf7
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SIDDHAM;
-    field public static final int SIDDHAM_ID = 248; // 0xf8
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SINHALA;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SINHALA_ARCHAIC_NUMBERS;
-    field public static final int SINHALA_ARCHAIC_NUMBERS_ID = 249; // 0xf9
-    field public static final int SINHALA_ID = 24; // 0x18
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SMALL_FORM_VARIANTS;
-    field public static final int SMALL_FORM_VARIANTS_ID = 84; // 0x54
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SMALL_KANA_EXTENSION;
-    field public static final int SMALL_KANA_EXTENSION_ID = 297; // 0x129
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SOGDIAN;
-    field public static final int SOGDIAN_ID = 291; // 0x123
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SORA_SOMPENG;
-    field public static final int SORA_SOMPENG_ID = 218; // 0xda
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SOYOMBO;
-    field public static final int SOYOMBO_ID = 278; // 0x116
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SPACING_MODIFIER_LETTERS;
-    field public static final int SPACING_MODIFIER_LETTERS_ID = 6; // 0x6
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SPECIALS;
-    field public static final int SPECIALS_ID = 86; // 0x56
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SUNDANESE;
-    field public static final int SUNDANESE_ID = 155; // 0x9b
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SUNDANESE_SUPPLEMENT;
-    field public static final int SUNDANESE_SUPPLEMENT_ID = 219; // 0xdb
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPERSCRIPTS_AND_SUBSCRIPTS;
-    field public static final int SUPERSCRIPTS_AND_SUBSCRIPTS_ID = 41; // 0x29
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPPLEMENTAL_ARROWS_A;
-    field public static final int SUPPLEMENTAL_ARROWS_A_ID = 103; // 0x67
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPPLEMENTAL_ARROWS_B;
-    field public static final int SUPPLEMENTAL_ARROWS_B_ID = 104; // 0x68
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPPLEMENTAL_ARROWS_C;
-    field public static final int SUPPLEMENTAL_ARROWS_C_ID = 250; // 0xfa
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPPLEMENTAL_MATHEMATICAL_OPERATORS;
-    field public static final int SUPPLEMENTAL_MATHEMATICAL_OPERATORS_ID = 106; // 0x6a
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPPLEMENTAL_PUNCTUATION;
-    field public static final int SUPPLEMENTAL_PUNCTUATION_ID = 142; // 0x8e
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS;
-    field public static final int SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS_ID = 261; // 0x105
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_A;
-    field public static final int SUPPLEMENTARY_PRIVATE_USE_AREA_A_ID = 109; // 0x6d
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_B;
-    field public static final int SUPPLEMENTARY_PRIVATE_USE_AREA_B_ID = 110; // 0x6e
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SUTTON_SIGNWRITING;
-    field public static final int SUTTON_SIGNWRITING_ID = 262; // 0x106
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SYLOTI_NAGRI;
-    field public static final int SYLOTI_NAGRI_ID = 143; // 0x8f
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A;
-    field public static final int SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A_ID = 298; // 0x12a
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SYMBOLS_FOR_LEGACY_COMPUTING;
-    field public static final int SYMBOLS_FOR_LEGACY_COMPUTING_ID = 306; // 0x132
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SYRIAC;
-    field public static final int SYRIAC_ID = 13; // 0xd
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SYRIAC_SUPPLEMENT;
-    field public static final int SYRIAC_SUPPLEMENT_ID = 279; // 0x117
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TAGALOG;
-    field public static final int TAGALOG_ID = 98; // 0x62
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TAGBANWA;
-    field public static final int TAGBANWA_ID = 101; // 0x65
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TAGS;
-    field public static final int TAGS_ID = 96; // 0x60
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TAI_LE;
-    field public static final int TAI_LE_ID = 112; // 0x70
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TAI_THAM;
-    field public static final int TAI_THAM_ID = 174; // 0xae
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TAI_VIET;
-    field public static final int TAI_VIET_ID = 183; // 0xb7
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TAI_XUAN_JING_SYMBOLS;
-    field public static final int TAI_XUAN_JING_SYMBOLS_ID = 124; // 0x7c
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TAKRI;
-    field public static final int TAKRI_ID = 220; // 0xdc
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TAMIL;
-    field public static final int TAMIL_ID = 20; // 0x14
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TAMIL_SUPPLEMENT;
-    field public static final int TAMIL_SUPPLEMENT_ID = 299; // 0x12b
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TANGUT;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TANGUT_COMPONENTS;
-    field public static final int TANGUT_COMPONENTS_ID = 273; // 0x111
-    field public static final int TANGUT_ID = 272; // 0x110
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TANGUT_SUPPLEMENT;
-    field public static final int TANGUT_SUPPLEMENT_ID = 307; // 0x133
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TELUGU;
-    field public static final int TELUGU_ID = 21; // 0x15
-    field public static final android.icu.lang.UCharacter.UnicodeBlock THAANA;
-    field public static final int THAANA_ID = 14; // 0xe
-    field public static final android.icu.lang.UCharacter.UnicodeBlock THAI;
-    field public static final int THAI_ID = 25; // 0x19
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TIBETAN;
-    field public static final int TIBETAN_ID = 27; // 0x1b
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TIFINAGH;
-    field public static final int TIFINAGH_ID = 144; // 0x90
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TIRHUTA;
-    field public static final int TIRHUTA_ID = 251; // 0xfb
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TRANSPORT_AND_MAP_SYMBOLS;
-    field public static final int TRANSPORT_AND_MAP_SYMBOLS_ID = 207; // 0xcf
-    field public static final android.icu.lang.UCharacter.UnicodeBlock UGARITIC;
-    field public static final int UGARITIC_ID = 120; // 0x78
-    field public static final android.icu.lang.UCharacter.UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED;
-    field public static final int UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_ID = 173; // 0xad
-    field public static final int UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_ID = 33; // 0x21
-    field public static final android.icu.lang.UCharacter.UnicodeBlock VAI;
-    field public static final int VAI_ID = 159; // 0x9f
-    field public static final android.icu.lang.UCharacter.UnicodeBlock VARIATION_SELECTORS;
-    field public static final int VARIATION_SELECTORS_ID = 108; // 0x6c
-    field public static final android.icu.lang.UCharacter.UnicodeBlock VARIATION_SELECTORS_SUPPLEMENT;
-    field public static final int VARIATION_SELECTORS_SUPPLEMENT_ID = 125; // 0x7d
-    field public static final android.icu.lang.UCharacter.UnicodeBlock VEDIC_EXTENSIONS;
-    field public static final int VEDIC_EXTENSIONS_ID = 175; // 0xaf
-    field public static final android.icu.lang.UCharacter.UnicodeBlock VERTICAL_FORMS;
-    field public static final int VERTICAL_FORMS_ID = 145; // 0x91
-    field public static final android.icu.lang.UCharacter.UnicodeBlock WANCHO;
-    field public static final int WANCHO_ID = 300; // 0x12c
-    field public static final android.icu.lang.UCharacter.UnicodeBlock WARANG_CITI;
-    field public static final int WARANG_CITI_ID = 252; // 0xfc
-    field public static final android.icu.lang.UCharacter.UnicodeBlock YEZIDI;
-    field public static final int YEZIDI_ID = 308; // 0x134
-    field public static final android.icu.lang.UCharacter.UnicodeBlock YIJING_HEXAGRAM_SYMBOLS;
-    field public static final int YIJING_HEXAGRAM_SYMBOLS_ID = 116; // 0x74
-    field public static final android.icu.lang.UCharacter.UnicodeBlock YI_RADICALS;
-    field public static final int YI_RADICALS_ID = 73; // 0x49
-    field public static final android.icu.lang.UCharacter.UnicodeBlock YI_SYLLABLES;
-    field public static final int YI_SYLLABLES_ID = 72; // 0x48
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ZANABAZAR_SQUARE;
-    field public static final int ZANABAZAR_SQUARE_ID = 280; // 0x118
-  }
-
-  public static interface UCharacter.VerticalOrientation {
-    field public static final int ROTATED = 0; // 0x0
-    field public static final int TRANSFORMED_ROTATED = 1; // 0x1
-    field public static final int TRANSFORMED_UPRIGHT = 2; // 0x2
-    field public static final int UPRIGHT = 3; // 0x3
-  }
-
-  public static interface UCharacter.WordBreak {
-    field public static final int ALETTER = 1; // 0x1
-    field public static final int CR = 8; // 0x8
-    field public static final int DOUBLE_QUOTE = 16; // 0x10
-    field public static final int EXTEND = 9; // 0x9
-    field public static final int EXTENDNUMLET = 7; // 0x7
-    field public static final int E_BASE = 17; // 0x11
-    field public static final int E_BASE_GAZ = 18; // 0x12
-    field public static final int E_MODIFIER = 19; // 0x13
-    field public static final int FORMAT = 2; // 0x2
-    field public static final int GLUE_AFTER_ZWJ = 20; // 0x14
-    field public static final int HEBREW_LETTER = 14; // 0xe
-    field public static final int KATAKANA = 3; // 0x3
-    field public static final int LF = 10; // 0xa
-    field public static final int MIDLETTER = 4; // 0x4
-    field public static final int MIDNUM = 5; // 0x5
-    field public static final int MIDNUMLET = 11; // 0xb
-    field public static final int NEWLINE = 12; // 0xc
-    field public static final int NUMERIC = 6; // 0x6
-    field public static final int OTHER = 0; // 0x0
-    field public static final int REGIONAL_INDICATOR = 13; // 0xd
-    field public static final int SINGLE_QUOTE = 15; // 0xf
-    field public static final int WSEGSPACE = 22; // 0x16
-    field public static final int ZWJ = 21; // 0x15
-  }
-
-  public final class UCharacterCategory implements android.icu.lang.UCharacterEnums.ECharacterCategory {
-    method public static String toString(int);
-  }
-
-  public final class UCharacterDirection implements android.icu.lang.UCharacterEnums.ECharacterDirection {
-    method public static String toString(int);
-  }
-
-  public class UCharacterEnums {
-  }
-
-  public static interface UCharacterEnums.ECharacterCategory {
-    field public static final byte COMBINING_SPACING_MARK = 8; // 0x8
-    field public static final byte CONNECTOR_PUNCTUATION = 22; // 0x16
-    field public static final byte CONTROL = 15; // 0xf
-    field public static final byte CURRENCY_SYMBOL = 25; // 0x19
-    field public static final byte DASH_PUNCTUATION = 19; // 0x13
-    field public static final byte DECIMAL_DIGIT_NUMBER = 9; // 0x9
-    field public static final byte ENCLOSING_MARK = 7; // 0x7
-    field public static final byte END_PUNCTUATION = 21; // 0x15
-    field public static final byte FINAL_PUNCTUATION = 29; // 0x1d
-    field public static final byte FINAL_QUOTE_PUNCTUATION = 29; // 0x1d
-    field public static final byte FORMAT = 16; // 0x10
-    field public static final byte GENERAL_OTHER_TYPES = 0; // 0x0
-    field public static final byte INITIAL_PUNCTUATION = 28; // 0x1c
-    field public static final byte INITIAL_QUOTE_PUNCTUATION = 28; // 0x1c
-    field public static final byte LETTER_NUMBER = 10; // 0xa
-    field public static final byte LINE_SEPARATOR = 13; // 0xd
-    field public static final byte LOWERCASE_LETTER = 2; // 0x2
-    field public static final byte MATH_SYMBOL = 24; // 0x18
-    field public static final byte MODIFIER_LETTER = 4; // 0x4
-    field public static final byte MODIFIER_SYMBOL = 26; // 0x1a
-    field public static final byte NON_SPACING_MARK = 6; // 0x6
-    field public static final byte OTHER_LETTER = 5; // 0x5
-    field public static final byte OTHER_NUMBER = 11; // 0xb
-    field public static final byte OTHER_PUNCTUATION = 23; // 0x17
-    field public static final byte OTHER_SYMBOL = 27; // 0x1b
-    field public static final byte PARAGRAPH_SEPARATOR = 14; // 0xe
-    field public static final byte PRIVATE_USE = 17; // 0x11
-    field public static final byte SPACE_SEPARATOR = 12; // 0xc
-    field public static final byte START_PUNCTUATION = 20; // 0x14
-    field public static final byte SURROGATE = 18; // 0x12
-    field public static final byte TITLECASE_LETTER = 3; // 0x3
-    field public static final byte UNASSIGNED = 0; // 0x0
-    field public static final byte UPPERCASE_LETTER = 1; // 0x1
-  }
-
-  public static interface UCharacterEnums.ECharacterDirection {
-    field public static final int ARABIC_NUMBER = 5; // 0x5
-    field public static final int BLOCK_SEPARATOR = 7; // 0x7
-    field public static final int BOUNDARY_NEUTRAL = 18; // 0x12
-    field public static final int COMMON_NUMBER_SEPARATOR = 6; // 0x6
-    field public static final byte DIRECTIONALITY_ARABIC_NUMBER = 5; // 0x5
-    field public static final byte DIRECTIONALITY_BOUNDARY_NEUTRAL = 18; // 0x12
-    field public static final byte DIRECTIONALITY_COMMON_NUMBER_SEPARATOR = 6; // 0x6
-    field public static final byte DIRECTIONALITY_EUROPEAN_NUMBER = 2; // 0x2
-    field public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR = 3; // 0x3
-    field public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR = 4; // 0x4
-    field public static final byte DIRECTIONALITY_LEFT_TO_RIGHT = 0; // 0x0
-    field public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING = 11; // 0xb
-    field public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE = 12; // 0xc
-    field public static final byte DIRECTIONALITY_NONSPACING_MARK = 17; // 0x11
-    field public static final byte DIRECTIONALITY_OTHER_NEUTRALS = 10; // 0xa
-    field public static final byte DIRECTIONALITY_PARAGRAPH_SEPARATOR = 7; // 0x7
-    field public static final byte DIRECTIONALITY_POP_DIRECTIONAL_FORMAT = 16; // 0x10
-    field public static final byte DIRECTIONALITY_RIGHT_TO_LEFT = 1; // 0x1
-    field public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC = 13; // 0xd
-    field public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING = 14; // 0xe
-    field public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE = 15; // 0xf
-    field public static final byte DIRECTIONALITY_SEGMENT_SEPARATOR = 8; // 0x8
-    field public static final byte DIRECTIONALITY_UNDEFINED = -1; // 0xffffffff
-    field public static final byte DIRECTIONALITY_WHITESPACE = 9; // 0x9
-    field public static final int DIR_NON_SPACING_MARK = 17; // 0x11
-    field public static final int EUROPEAN_NUMBER = 2; // 0x2
-    field public static final int EUROPEAN_NUMBER_SEPARATOR = 3; // 0x3
-    field public static final int EUROPEAN_NUMBER_TERMINATOR = 4; // 0x4
-    field public static final byte FIRST_STRONG_ISOLATE = 19; // 0x13
-    field public static final int LEFT_TO_RIGHT = 0; // 0x0
-    field public static final int LEFT_TO_RIGHT_EMBEDDING = 11; // 0xb
-    field public static final byte LEFT_TO_RIGHT_ISOLATE = 20; // 0x14
-    field public static final int LEFT_TO_RIGHT_OVERRIDE = 12; // 0xc
-    field public static final int OTHER_NEUTRAL = 10; // 0xa
-    field public static final int POP_DIRECTIONAL_FORMAT = 16; // 0x10
-    field public static final byte POP_DIRECTIONAL_ISOLATE = 22; // 0x16
-    field public static final int RIGHT_TO_LEFT = 1; // 0x1
-    field public static final int RIGHT_TO_LEFT_ARABIC = 13; // 0xd
-    field public static final int RIGHT_TO_LEFT_EMBEDDING = 14; // 0xe
-    field public static final byte RIGHT_TO_LEFT_ISOLATE = 21; // 0x15
-    field public static final int RIGHT_TO_LEFT_OVERRIDE = 15; // 0xf
-    field public static final int SEGMENT_SEPARATOR = 8; // 0x8
-    field public static final int WHITE_SPACE_NEUTRAL = 9; // 0x9
-  }
-
-  public interface UProperty {
-    field public static final int AGE = 16384; // 0x4000
-    field public static final int ALPHABETIC = 0; // 0x0
-    field public static final int ASCII_HEX_DIGIT = 1; // 0x1
-    field public static final int BIDI_CLASS = 4096; // 0x1000
-    field public static final int BIDI_CONTROL = 2; // 0x2
-    field public static final int BIDI_MIRRORED = 3; // 0x3
-    field public static final int BIDI_MIRRORING_GLYPH = 16385; // 0x4001
-    field public static final int BIDI_PAIRED_BRACKET = 16397; // 0x400d
-    field public static final int BIDI_PAIRED_BRACKET_TYPE = 4117; // 0x1015
-    field public static final int BINARY_START = 0; // 0x0
-    field public static final int BLOCK = 4097; // 0x1001
-    field public static final int CANONICAL_COMBINING_CLASS = 4098; // 0x1002
-    field public static final int CASED = 49; // 0x31
-    field public static final int CASE_FOLDING = 16386; // 0x4002
-    field public static final int CASE_IGNORABLE = 50; // 0x32
-    field public static final int CASE_SENSITIVE = 34; // 0x22
-    field public static final int CHANGES_WHEN_CASEFOLDED = 54; // 0x36
-    field public static final int CHANGES_WHEN_CASEMAPPED = 55; // 0x37
-    field public static final int CHANGES_WHEN_LOWERCASED = 51; // 0x33
-    field public static final int CHANGES_WHEN_NFKC_CASEFOLDED = 56; // 0x38
-    field public static final int CHANGES_WHEN_TITLECASED = 53; // 0x35
-    field public static final int CHANGES_WHEN_UPPERCASED = 52; // 0x34
-    field public static final int DASH = 4; // 0x4
-    field public static final int DECOMPOSITION_TYPE = 4099; // 0x1003
-    field public static final int DEFAULT_IGNORABLE_CODE_POINT = 5; // 0x5
-    field public static final int DEPRECATED = 6; // 0x6
-    field public static final int DIACRITIC = 7; // 0x7
-    field public static final int DOUBLE_START = 12288; // 0x3000
-    field public static final int EAST_ASIAN_WIDTH = 4100; // 0x1004
-    field public static final int EMOJI = 57; // 0x39
-    field public static final int EMOJI_COMPONENT = 61; // 0x3d
-    field public static final int EMOJI_MODIFIER = 59; // 0x3b
-    field public static final int EMOJI_MODIFIER_BASE = 60; // 0x3c
-    field public static final int EMOJI_PRESENTATION = 58; // 0x3a
-    field public static final int EXTENDED_PICTOGRAPHIC = 64; // 0x40
-    field public static final int EXTENDER = 8; // 0x8
-    field public static final int FULL_COMPOSITION_EXCLUSION = 9; // 0x9
-    field public static final int GENERAL_CATEGORY = 4101; // 0x1005
-    field public static final int GENERAL_CATEGORY_MASK = 8192; // 0x2000
-    field public static final int GRAPHEME_BASE = 10; // 0xa
-    field public static final int GRAPHEME_CLUSTER_BREAK = 4114; // 0x1012
-    field public static final int GRAPHEME_EXTEND = 11; // 0xb
-    field public static final int GRAPHEME_LINK = 12; // 0xc
-    field public static final int HANGUL_SYLLABLE_TYPE = 4107; // 0x100b
-    field public static final int HEX_DIGIT = 13; // 0xd
-    field public static final int HYPHEN = 14; // 0xe
-    field public static final int IDEOGRAPHIC = 17; // 0x11
-    field public static final int IDS_BINARY_OPERATOR = 18; // 0x12
-    field public static final int IDS_TRINARY_OPERATOR = 19; // 0x13
-    field public static final int ID_CONTINUE = 15; // 0xf
-    field public static final int ID_START = 16; // 0x10
-    field public static final int INDIC_POSITIONAL_CATEGORY = 4118; // 0x1016
-    field public static final int INDIC_SYLLABIC_CATEGORY = 4119; // 0x1017
-    field public static final int INT_START = 4096; // 0x1000
-    field public static final int JOINING_GROUP = 4102; // 0x1006
-    field public static final int JOINING_TYPE = 4103; // 0x1007
-    field public static final int JOIN_CONTROL = 20; // 0x14
-    field public static final int LEAD_CANONICAL_COMBINING_CLASS = 4112; // 0x1010
-    field public static final int LINE_BREAK = 4104; // 0x1008
-    field public static final int LOGICAL_ORDER_EXCEPTION = 21; // 0x15
-    field public static final int LOWERCASE = 22; // 0x16
-    field public static final int LOWERCASE_MAPPING = 16388; // 0x4004
-    field public static final int MASK_START = 8192; // 0x2000
-    field public static final int MATH = 23; // 0x17
-    field public static final int NAME = 16389; // 0x4005
-    field public static final int NFC_INERT = 39; // 0x27
-    field public static final int NFC_QUICK_CHECK = 4110; // 0x100e
-    field public static final int NFD_INERT = 37; // 0x25
-    field public static final int NFD_QUICK_CHECK = 4108; // 0x100c
-    field public static final int NFKC_INERT = 40; // 0x28
-    field public static final int NFKC_QUICK_CHECK = 4111; // 0x100f
-    field public static final int NFKD_INERT = 38; // 0x26
-    field public static final int NFKD_QUICK_CHECK = 4109; // 0x100d
-    field public static final int NONCHARACTER_CODE_POINT = 24; // 0x18
-    field public static final int NUMERIC_TYPE = 4105; // 0x1009
-    field public static final int NUMERIC_VALUE = 12288; // 0x3000
-    field public static final int OTHER_PROPERTY_START = 28672; // 0x7000
-    field public static final int PATTERN_SYNTAX = 42; // 0x2a
-    field public static final int PATTERN_WHITE_SPACE = 43; // 0x2b
-    field public static final int POSIX_ALNUM = 44; // 0x2c
-    field public static final int POSIX_BLANK = 45; // 0x2d
-    field public static final int POSIX_GRAPH = 46; // 0x2e
-    field public static final int POSIX_PRINT = 47; // 0x2f
-    field public static final int POSIX_XDIGIT = 48; // 0x30
-    field public static final int PREPENDED_CONCATENATION_MARK = 63; // 0x3f
-    field public static final int QUOTATION_MARK = 25; // 0x19
-    field public static final int RADICAL = 26; // 0x1a
-    field public static final int REGIONAL_INDICATOR = 62; // 0x3e
-    field public static final int SCRIPT = 4106; // 0x100a
-    field public static final int SCRIPT_EXTENSIONS = 28672; // 0x7000
-    field public static final int SEGMENT_STARTER = 41; // 0x29
-    field public static final int SENTENCE_BREAK = 4115; // 0x1013
-    field public static final int SIMPLE_CASE_FOLDING = 16390; // 0x4006
-    field public static final int SIMPLE_LOWERCASE_MAPPING = 16391; // 0x4007
-    field public static final int SIMPLE_TITLECASE_MAPPING = 16392; // 0x4008
-    field public static final int SIMPLE_UPPERCASE_MAPPING = 16393; // 0x4009
-    field public static final int SOFT_DOTTED = 27; // 0x1b
-    field public static final int STRING_START = 16384; // 0x4000
-    field public static final int S_TERM = 35; // 0x23
-    field public static final int TERMINAL_PUNCTUATION = 28; // 0x1c
-    field public static final int TITLECASE_MAPPING = 16394; // 0x400a
-    field public static final int TRAIL_CANONICAL_COMBINING_CLASS = 4113; // 0x1011
-    field public static final int UNIFIED_IDEOGRAPH = 29; // 0x1d
-    field public static final int UPPERCASE = 30; // 0x1e
-    field public static final int UPPERCASE_MAPPING = 16396; // 0x400c
-    field public static final int VARIATION_SELECTOR = 36; // 0x24
-    field public static final int VERTICAL_ORIENTATION = 4120; // 0x1018
-    field public static final int WHITE_SPACE = 31; // 0x1f
-    field public static final int WORD_BREAK = 4116; // 0x1014
-    field public static final int XID_CONTINUE = 32; // 0x20
-    field public static final int XID_START = 33; // 0x21
-  }
-
-  public static interface UProperty.NameChoice {
-    field public static final int LONG = 1; // 0x1
-    field public static final int SHORT = 0; // 0x0
-  }
-
-  public final class UScript {
-    method public static boolean breaksBetweenLetters(int);
-    method public static int[] getCode(java.util.Locale);
-    method public static int[] getCode(android.icu.util.ULocale);
-    method public static int[] getCode(String);
-    method public static int getCodeFromName(String);
-    method public static String getName(int);
-    method public static String getSampleString(int);
-    method public static int getScript(int);
-    method public static int getScriptExtensions(int, java.util.BitSet);
-    method public static String getShortName(int);
-    method public static android.icu.lang.UScript.ScriptUsage getUsage(int);
-    method public static boolean hasScript(int, int);
-    method public static boolean isCased(int);
-    method public static boolean isRightToLeft(int);
-    field public static final int ADLAM = 167; // 0xa7
-    field public static final int AFAKA = 147; // 0x93
-    field public static final int AHOM = 161; // 0xa1
-    field public static final int ANATOLIAN_HIEROGLYPHS = 156; // 0x9c
-    field public static final int ARABIC = 2; // 0x2
-    field public static final int ARMENIAN = 3; // 0x3
-    field public static final int AVESTAN = 117; // 0x75
-    field public static final int BALINESE = 62; // 0x3e
-    field public static final int BAMUM = 130; // 0x82
-    field public static final int BASSA_VAH = 134; // 0x86
-    field public static final int BATAK = 63; // 0x3f
-    field public static final int BENGALI = 4; // 0x4
-    field public static final int BHAIKSUKI = 168; // 0xa8
-    field public static final int BLISSYMBOLS = 64; // 0x40
-    field public static final int BOOK_PAHLAVI = 124; // 0x7c
-    field public static final int BOPOMOFO = 5; // 0x5
-    field public static final int BRAHMI = 65; // 0x41
-    field public static final int BRAILLE = 46; // 0x2e
-    field public static final int BUGINESE = 55; // 0x37
-    field public static final int BUHID = 44; // 0x2c
-    field public static final int CANADIAN_ABORIGINAL = 40; // 0x28
-    field public static final int CARIAN = 104; // 0x68
-    field public static final int CAUCASIAN_ALBANIAN = 159; // 0x9f
-    field public static final int CHAKMA = 118; // 0x76
-    field public static final int CHAM = 66; // 0x42
-    field public static final int CHEROKEE = 6; // 0x6
-    field public static final int CHORASMIAN = 189; // 0xbd
-    field public static final int CIRTH = 67; // 0x43
-    field public static final int COMMON = 0; // 0x0
-    field public static final int COPTIC = 7; // 0x7
-    field public static final int CUNEIFORM = 101; // 0x65
-    field public static final int CYPRIOT = 47; // 0x2f
-    field public static final int CYRILLIC = 8; // 0x8
-    field public static final int DEMOTIC_EGYPTIAN = 69; // 0x45
-    field public static final int DESERET = 9; // 0x9
-    field public static final int DEVANAGARI = 10; // 0xa
-    field public static final int DIVES_AKURU = 190; // 0xbe
-    field public static final int DOGRA = 178; // 0xb2
-    field public static final int DUPLOYAN = 135; // 0x87
-    field public static final int EASTERN_SYRIAC = 97; // 0x61
-    field public static final int EGYPTIAN_HIEROGLYPHS = 71; // 0x47
-    field public static final int ELBASAN = 136; // 0x88
-    field public static final int ELYMAIC = 185; // 0xb9
-    field public static final int ESTRANGELO_SYRIAC = 95; // 0x5f
-    field public static final int ETHIOPIC = 11; // 0xb
-    field public static final int GEORGIAN = 12; // 0xc
-    field public static final int GLAGOLITIC = 56; // 0x38
-    field public static final int GOTHIC = 13; // 0xd
-    field public static final int GRANTHA = 137; // 0x89
-    field public static final int GREEK = 14; // 0xe
-    field public static final int GUJARATI = 15; // 0xf
-    field public static final int GUNJALA_GONDI = 179; // 0xb3
-    field public static final int GURMUKHI = 16; // 0x10
-    field public static final int HAN = 17; // 0x11
-    field public static final int HANGUL = 18; // 0x12
-    field public static final int HANIFI_ROHINGYA = 182; // 0xb6
-    field public static final int HANUNOO = 43; // 0x2b
-    field public static final int HAN_WITH_BOPOMOFO = 172; // 0xac
-    field public static final int HARAPPAN_INDUS = 77; // 0x4d
-    field public static final int HATRAN = 162; // 0xa2
-    field public static final int HEBREW = 19; // 0x13
-    field public static final int HIERATIC_EGYPTIAN = 70; // 0x46
-    field public static final int HIRAGANA = 20; // 0x14
-    field public static final int IMPERIAL_ARAMAIC = 116; // 0x74
-    field public static final int INHERITED = 1; // 0x1
-    field public static final int INSCRIPTIONAL_PAHLAVI = 122; // 0x7a
-    field public static final int INSCRIPTIONAL_PARTHIAN = 125; // 0x7d
-    field public static final int INVALID_CODE = -1; // 0xffffffff
-    field public static final int JAMO = 173; // 0xad
-    field public static final int JAPANESE = 105; // 0x69
-    field public static final int JAVANESE = 78; // 0x4e
-    field public static final int JURCHEN = 148; // 0x94
-    field public static final int KAITHI = 120; // 0x78
-    field public static final int KANNADA = 21; // 0x15
-    field public static final int KATAKANA = 22; // 0x16
-    field public static final int KATAKANA_OR_HIRAGANA = 54; // 0x36
-    field public static final int KAYAH_LI = 79; // 0x4f
-    field public static final int KHAROSHTHI = 57; // 0x39
-    field public static final int KHITAN_SMALL_SCRIPT = 191; // 0xbf
-    field public static final int KHMER = 23; // 0x17
-    field public static final int KHOJKI = 157; // 0x9d
-    field public static final int KHUDAWADI = 145; // 0x91
-    field public static final int KHUTSURI = 72; // 0x48
-    field public static final int KOREAN = 119; // 0x77
-    field public static final int KPELLE = 138; // 0x8a
-    field public static final int LANNA = 106; // 0x6a
-    field public static final int LAO = 24; // 0x18
-    field public static final int LATIN = 25; // 0x19
-    field public static final int LATIN_FRAKTUR = 80; // 0x50
-    field public static final int LATIN_GAELIC = 81; // 0x51
-    field public static final int LEPCHA = 82; // 0x52
-    field public static final int LIMBU = 48; // 0x30
-    field public static final int LINEAR_A = 83; // 0x53
-    field public static final int LINEAR_B = 49; // 0x31
-    field public static final int LISU = 131; // 0x83
-    field public static final int LOMA = 139; // 0x8b
-    field public static final int LYCIAN = 107; // 0x6b
-    field public static final int LYDIAN = 108; // 0x6c
-    field public static final int MAHAJANI = 160; // 0xa0
-    field public static final int MAKASAR = 180; // 0xb4
-    field public static final int MALAYALAM = 26; // 0x1a
-    field public static final int MANDAEAN = 84; // 0x54
-    field public static final int MANDAIC = 84; // 0x54
-    field public static final int MANICHAEAN = 121; // 0x79
-    field public static final int MARCHEN = 169; // 0xa9
-    field public static final int MASARAM_GONDI = 175; // 0xaf
-    field public static final int MATHEMATICAL_NOTATION = 128; // 0x80
-    field public static final int MAYAN_HIEROGLYPHS = 85; // 0x55
-    field public static final int MEDEFAIDRIN = 181; // 0xb5
-    field public static final int MEITEI_MAYEK = 115; // 0x73
-    field public static final int MENDE = 140; // 0x8c
-    field public static final int MEROITIC = 86; // 0x56
-    field public static final int MEROITIC_CURSIVE = 141; // 0x8d
-    field public static final int MEROITIC_HIEROGLYPHS = 86; // 0x56
-    field public static final int MIAO = 92; // 0x5c
-    field public static final int MODI = 163; // 0xa3
-    field public static final int MONGOLIAN = 27; // 0x1b
-    field public static final int MOON = 114; // 0x72
-    field public static final int MRO = 149; // 0x95
-    field public static final int MULTANI = 164; // 0xa4
-    field public static final int MYANMAR = 28; // 0x1c
-    field public static final int NABATAEAN = 143; // 0x8f
-    field public static final int NAKHI_GEBA = 132; // 0x84
-    field public static final int NANDINAGARI = 187; // 0xbb
-    field public static final int NEWA = 170; // 0xaa
-    field public static final int NEW_TAI_LUE = 59; // 0x3b
-    field public static final int NKO = 87; // 0x57
-    field public static final int NUSHU = 150; // 0x96
-    field public static final int NYIAKENG_PUACHUE_HMONG = 186; // 0xba
-    field public static final int OGHAM = 29; // 0x1d
-    field public static final int OLD_CHURCH_SLAVONIC_CYRILLIC = 68; // 0x44
-    field public static final int OLD_HUNGARIAN = 76; // 0x4c
-    field public static final int OLD_ITALIC = 30; // 0x1e
-    field public static final int OLD_NORTH_ARABIAN = 142; // 0x8e
-    field public static final int OLD_PERMIC = 89; // 0x59
-    field public static final int OLD_PERSIAN = 61; // 0x3d
-    field public static final int OLD_SOGDIAN = 184; // 0xb8
-    field public static final int OLD_SOUTH_ARABIAN = 133; // 0x85
-    field public static final int OL_CHIKI = 109; // 0x6d
-    field public static final int ORIYA = 31; // 0x1f
-    field public static final int ORKHON = 88; // 0x58
-    field public static final int OSAGE = 171; // 0xab
-    field public static final int OSMANYA = 50; // 0x32
-    field public static final int PAHAWH_HMONG = 75; // 0x4b
-    field public static final int PALMYRENE = 144; // 0x90
-    field public static final int PAU_CIN_HAU = 165; // 0xa5
-    field public static final int PHAGS_PA = 90; // 0x5a
-    field public static final int PHOENICIAN = 91; // 0x5b
-    field public static final int PHONETIC_POLLARD = 92; // 0x5c
-    field public static final int PSALTER_PAHLAVI = 123; // 0x7b
-    field public static final int REJANG = 110; // 0x6e
-    field public static final int RONGORONGO = 93; // 0x5d
-    field public static final int RUNIC = 32; // 0x20
-    field public static final int SAMARITAN = 126; // 0x7e
-    field public static final int SARATI = 94; // 0x5e
-    field public static final int SAURASHTRA = 111; // 0x6f
-    field public static final int SHARADA = 151; // 0x97
-    field public static final int SHAVIAN = 51; // 0x33
-    field public static final int SIDDHAM = 166; // 0xa6
-    field public static final int SIGN_WRITING = 112; // 0x70
-    field public static final int SIMPLIFIED_HAN = 73; // 0x49
-    field public static final int SINDHI = 145; // 0x91
-    field public static final int SINHALA = 33; // 0x21
-    field public static final int SOGDIAN = 183; // 0xb7
-    field public static final int SORA_SOMPENG = 152; // 0x98
-    field public static final int SOYOMBO = 176; // 0xb0
-    field public static final int SUNDANESE = 113; // 0x71
-    field public static final int SYLOTI_NAGRI = 58; // 0x3a
-    field public static final int SYMBOLS = 129; // 0x81
-    field public static final int SYMBOLS_EMOJI = 174; // 0xae
-    field public static final int SYRIAC = 34; // 0x22
-    field public static final int TAGALOG = 42; // 0x2a
-    field public static final int TAGBANWA = 45; // 0x2d
-    field public static final int TAI_LE = 52; // 0x34
-    field public static final int TAI_VIET = 127; // 0x7f
-    field public static final int TAKRI = 153; // 0x99
-    field public static final int TAMIL = 35; // 0x23
-    field public static final int TANGUT = 154; // 0x9a
-    field public static final int TELUGU = 36; // 0x24
-    field public static final int TENGWAR = 98; // 0x62
-    field public static final int THAANA = 37; // 0x25
-    field public static final int THAI = 38; // 0x26
-    field public static final int TIBETAN = 39; // 0x27
-    field public static final int TIFINAGH = 60; // 0x3c
-    field public static final int TIRHUTA = 158; // 0x9e
-    field public static final int TRADITIONAL_HAN = 74; // 0x4a
-    field public static final int UCAS = 40; // 0x28
-    field public static final int UGARITIC = 53; // 0x35
-    field public static final int UNKNOWN = 103; // 0x67
-    field public static final int UNWRITTEN_LANGUAGES = 102; // 0x66
-    field public static final int VAI = 99; // 0x63
-    field public static final int VISIBLE_SPEECH = 100; // 0x64
-    field public static final int WANCHO = 188; // 0xbc
-    field public static final int WARANG_CITI = 146; // 0x92
-    field public static final int WESTERN_SYRIAC = 96; // 0x60
-    field public static final int WOLEAI = 155; // 0x9b
-    field public static final int YEZIDI = 192; // 0xc0
-    field public static final int YI = 41; // 0x29
-    field public static final int ZANABAZAR_SQUARE = 177; // 0xb1
-  }
-
-  public enum UScript.ScriptUsage {
-    enum_constant public static final android.icu.lang.UScript.ScriptUsage ASPIRATIONAL;
-    enum_constant public static final android.icu.lang.UScript.ScriptUsage EXCLUDED;
-    enum_constant public static final android.icu.lang.UScript.ScriptUsage LIMITED_USE;
-    enum_constant public static final android.icu.lang.UScript.ScriptUsage NOT_ENCODED;
-    enum_constant public static final android.icu.lang.UScript.ScriptUsage RECOMMENDED;
-    enum_constant public static final android.icu.lang.UScript.ScriptUsage UNKNOWN;
-  }
-
-}
-
-package android.icu.math {
-
-  public class BigDecimal extends java.lang.Number implements java.lang.Comparable<android.icu.math.BigDecimal> java.io.Serializable {
-    ctor public BigDecimal(java.math.BigDecimal);
-    ctor public BigDecimal(java.math.BigInteger);
-    ctor public BigDecimal(java.math.BigInteger, int);
-    ctor public BigDecimal(char[]);
-    ctor public BigDecimal(char[], int, int);
-    ctor public BigDecimal(double);
-    ctor public BigDecimal(int);
-    ctor public BigDecimal(long);
-    ctor public BigDecimal(String);
-    method public android.icu.math.BigDecimal abs();
-    method public android.icu.math.BigDecimal abs(android.icu.math.MathContext);
-    method public android.icu.math.BigDecimal add(android.icu.math.BigDecimal);
-    method public android.icu.math.BigDecimal add(android.icu.math.BigDecimal, android.icu.math.MathContext);
-    method public byte byteValueExact();
-    method public int compareTo(android.icu.math.BigDecimal);
-    method public int compareTo(android.icu.math.BigDecimal, android.icu.math.MathContext);
-    method public android.icu.math.BigDecimal divide(android.icu.math.BigDecimal);
-    method public android.icu.math.BigDecimal divide(android.icu.math.BigDecimal, int);
-    method public android.icu.math.BigDecimal divide(android.icu.math.BigDecimal, int, int);
-    method public android.icu.math.BigDecimal divide(android.icu.math.BigDecimal, android.icu.math.MathContext);
-    method public android.icu.math.BigDecimal divideInteger(android.icu.math.BigDecimal);
-    method public android.icu.math.BigDecimal divideInteger(android.icu.math.BigDecimal, android.icu.math.MathContext);
-    method public double doubleValue();
-    method public float floatValue();
-    method public String format(int, int);
-    method public String format(int, int, int, int, int, int);
-    method public int intValue();
-    method public int intValueExact();
-    method public long longValue();
-    method public long longValueExact();
-    method public android.icu.math.BigDecimal max(android.icu.math.BigDecimal);
-    method public android.icu.math.BigDecimal max(android.icu.math.BigDecimal, android.icu.math.MathContext);
-    method public android.icu.math.BigDecimal min(android.icu.math.BigDecimal);
-    method public android.icu.math.BigDecimal min(android.icu.math.BigDecimal, android.icu.math.MathContext);
-    method public android.icu.math.BigDecimal movePointLeft(int);
-    method public android.icu.math.BigDecimal movePointRight(int);
-    method public android.icu.math.BigDecimal multiply(android.icu.math.BigDecimal);
-    method public android.icu.math.BigDecimal multiply(android.icu.math.BigDecimal, android.icu.math.MathContext);
-    method public android.icu.math.BigDecimal negate();
-    method public android.icu.math.BigDecimal negate(android.icu.math.MathContext);
-    method public android.icu.math.BigDecimal plus();
-    method public android.icu.math.BigDecimal plus(android.icu.math.MathContext);
-    method public android.icu.math.BigDecimal pow(android.icu.math.BigDecimal);
-    method public android.icu.math.BigDecimal pow(android.icu.math.BigDecimal, android.icu.math.MathContext);
-    method public android.icu.math.BigDecimal remainder(android.icu.math.BigDecimal);
-    method public android.icu.math.BigDecimal remainder(android.icu.math.BigDecimal, android.icu.math.MathContext);
-    method public int scale();
-    method public android.icu.math.BigDecimal setScale(int);
-    method public android.icu.math.BigDecimal setScale(int, int);
-    method public short shortValueExact();
-    method public int signum();
-    method public android.icu.math.BigDecimal subtract(android.icu.math.BigDecimal);
-    method public android.icu.math.BigDecimal subtract(android.icu.math.BigDecimal, android.icu.math.MathContext);
-    method public java.math.BigDecimal toBigDecimal();
-    method public java.math.BigInteger toBigInteger();
-    method public java.math.BigInteger toBigIntegerExact();
-    method public char[] toCharArray();
-    method public java.math.BigInteger unscaledValue();
-    method public static android.icu.math.BigDecimal valueOf(double);
-    method public static android.icu.math.BigDecimal valueOf(long);
-    method public static android.icu.math.BigDecimal valueOf(long, int);
-    field public static final android.icu.math.BigDecimal ONE;
-    field public static final int ROUND_CEILING = 2; // 0x2
-    field public static final int ROUND_DOWN = 1; // 0x1
-    field public static final int ROUND_FLOOR = 3; // 0x3
-    field public static final int ROUND_HALF_DOWN = 5; // 0x5
-    field public static final int ROUND_HALF_EVEN = 6; // 0x6
-    field public static final int ROUND_HALF_UP = 4; // 0x4
-    field public static final int ROUND_UNNECESSARY = 7; // 0x7
-    field public static final int ROUND_UP = 0; // 0x0
-    field public static final android.icu.math.BigDecimal TEN;
-    field public static final android.icu.math.BigDecimal ZERO;
-  }
-
-  public final class MathContext implements java.io.Serializable {
-    ctor public MathContext(int);
-    ctor public MathContext(int, int);
-    ctor public MathContext(int, int, boolean);
-    ctor public MathContext(int, int, boolean, int);
-    method public int getDigits();
-    method public int getForm();
-    method public boolean getLostDigits();
-    method public int getRoundingMode();
-    field public static final android.icu.math.MathContext DEFAULT;
-    field public static final int ENGINEERING = 2; // 0x2
-    field public static final int PLAIN = 0; // 0x0
-    field public static final int ROUND_CEILING = 2; // 0x2
-    field public static final int ROUND_DOWN = 1; // 0x1
-    field public static final int ROUND_FLOOR = 3; // 0x3
-    field public static final int ROUND_HALF_DOWN = 5; // 0x5
-    field public static final int ROUND_HALF_EVEN = 6; // 0x6
-    field public static final int ROUND_HALF_UP = 4; // 0x4
-    field public static final int ROUND_UNNECESSARY = 7; // 0x7
-    field public static final int ROUND_UP = 0; // 0x0
-    field public static final int SCIENTIFIC = 1; // 0x1
-  }
-
-}
-
-package android.icu.number {
-
-  public class CompactNotation extends android.icu.number.Notation {
-  }
-
-  public abstract class CurrencyPrecision extends android.icu.number.Precision {
-    method public android.icu.number.Precision withCurrency(android.icu.util.Currency);
-  }
-
-  public class FormattedNumber implements java.lang.CharSequence {
-    method public char charAt(int);
-    method public int length();
-    method public CharSequence subSequence(int, int);
-    method public java.math.BigDecimal toBigDecimal();
-    method public java.text.AttributedCharacterIterator toCharacterIterator();
-  }
-
-  public class FormattedNumberRange implements java.lang.CharSequence {
-    method public char charAt(int);
-    method public java.math.BigDecimal getFirstBigDecimal();
-    method public android.icu.number.NumberRangeFormatter.RangeIdentityResult getIdentityResult();
-    method public java.math.BigDecimal getSecondBigDecimal();
-    method public int length();
-    method public CharSequence subSequence(int, int);
-    method public java.text.AttributedCharacterIterator toCharacterIterator();
-  }
-
-  public abstract class FractionPrecision extends android.icu.number.Precision {
-    method public android.icu.number.Precision withMaxDigits(int);
-    method public android.icu.number.Precision withMinDigits(int);
-  }
-
-  public class IntegerWidth {
-    method public android.icu.number.IntegerWidth truncateAt(int);
-    method public static android.icu.number.IntegerWidth zeroFillTo(int);
-  }
-
-  public class LocalizedNumberFormatter extends android.icu.number.NumberFormatterSettings<android.icu.number.LocalizedNumberFormatter> {
-    method public android.icu.number.FormattedNumber format(long);
-    method public android.icu.number.FormattedNumber format(double);
-    method public android.icu.number.FormattedNumber format(Number);
-    method public android.icu.number.FormattedNumber format(android.icu.util.Measure);
-    method public java.text.Format toFormat();
-  }
-
-  public class LocalizedNumberRangeFormatter extends android.icu.number.NumberRangeFormatterSettings<android.icu.number.LocalizedNumberRangeFormatter> {
-    method public android.icu.number.FormattedNumberRange formatRange(int, int);
-    method public android.icu.number.FormattedNumberRange formatRange(double, double);
-    method public android.icu.number.FormattedNumberRange formatRange(Number, Number);
-  }
-
-  public class Notation {
-    method public static android.icu.number.CompactNotation compactLong();
-    method public static android.icu.number.CompactNotation compactShort();
-    method public static android.icu.number.ScientificNotation engineering();
-    method public static android.icu.number.ScientificNotation scientific();
-    method public static android.icu.number.SimpleNotation simple();
-  }
-
-  public final class NumberFormatter {
-    method public static android.icu.number.UnlocalizedNumberFormatter with();
-    method public static android.icu.number.LocalizedNumberFormatter withLocale(java.util.Locale);
-    method public static android.icu.number.LocalizedNumberFormatter withLocale(android.icu.util.ULocale);
-  }
-
-  public enum NumberFormatter.DecimalSeparatorDisplay {
-    enum_constant public static final android.icu.number.NumberFormatter.DecimalSeparatorDisplay ALWAYS;
-    enum_constant public static final android.icu.number.NumberFormatter.DecimalSeparatorDisplay AUTO;
-  }
-
-  public enum NumberFormatter.GroupingStrategy {
-    enum_constant public static final android.icu.number.NumberFormatter.GroupingStrategy AUTO;
-    enum_constant public static final android.icu.number.NumberFormatter.GroupingStrategy MIN2;
-    enum_constant public static final android.icu.number.NumberFormatter.GroupingStrategy OFF;
-    enum_constant public static final android.icu.number.NumberFormatter.GroupingStrategy ON_ALIGNED;
-    enum_constant public static final android.icu.number.NumberFormatter.GroupingStrategy THOUSANDS;
-  }
-
-  public enum NumberFormatter.SignDisplay {
-    enum_constant public static final android.icu.number.NumberFormatter.SignDisplay ACCOUNTING;
-    enum_constant public static final android.icu.number.NumberFormatter.SignDisplay ACCOUNTING_ALWAYS;
-    enum_constant public static final android.icu.number.NumberFormatter.SignDisplay ACCOUNTING_EXCEPT_ZERO;
-    enum_constant public static final android.icu.number.NumberFormatter.SignDisplay ALWAYS;
-    enum_constant public static final android.icu.number.NumberFormatter.SignDisplay AUTO;
-    enum_constant public static final android.icu.number.NumberFormatter.SignDisplay EXCEPT_ZERO;
-    enum_constant public static final android.icu.number.NumberFormatter.SignDisplay NEVER;
-  }
-
-  public enum NumberFormatter.UnitWidth {
-    enum_constant public static final android.icu.number.NumberFormatter.UnitWidth FULL_NAME;
-    enum_constant public static final android.icu.number.NumberFormatter.UnitWidth HIDDEN;
-    enum_constant public static final android.icu.number.NumberFormatter.UnitWidth ISO_CODE;
-    enum_constant public static final android.icu.number.NumberFormatter.UnitWidth NARROW;
-    enum_constant public static final android.icu.number.NumberFormatter.UnitWidth SHORT;
-  }
-
-  public abstract class NumberFormatterSettings<T extends android.icu.number.NumberFormatterSettings<?>> {
-    method public T decimal(android.icu.number.NumberFormatter.DecimalSeparatorDisplay);
-    method public T grouping(android.icu.number.NumberFormatter.GroupingStrategy);
-    method public T integerWidth(android.icu.number.IntegerWidth);
-    method public T notation(android.icu.number.Notation);
-    method public T perUnit(android.icu.util.MeasureUnit);
-    method public T precision(android.icu.number.Precision);
-    method public T roundingMode(java.math.RoundingMode);
-    method public T scale(android.icu.number.Scale);
-    method public T sign(android.icu.number.NumberFormatter.SignDisplay);
-    method public T symbols(android.icu.text.DecimalFormatSymbols);
-    method public T symbols(android.icu.text.NumberingSystem);
-    method public T unit(android.icu.util.MeasureUnit);
-    method public T unitWidth(android.icu.number.NumberFormatter.UnitWidth);
-  }
-
-  public abstract class NumberRangeFormatter {
-    method public static android.icu.number.UnlocalizedNumberRangeFormatter with();
-    method public static android.icu.number.LocalizedNumberRangeFormatter withLocale(java.util.Locale);
-    method public static android.icu.number.LocalizedNumberRangeFormatter withLocale(android.icu.util.ULocale);
-  }
-
-  public enum NumberRangeFormatter.RangeCollapse {
-    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeCollapse ALL;
-    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeCollapse AUTO;
-    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeCollapse NONE;
-    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeCollapse UNIT;
-  }
-
-  public enum NumberRangeFormatter.RangeIdentityFallback {
-    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeIdentityFallback APPROXIMATELY;
-    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeIdentityFallback APPROXIMATELY_OR_SINGLE_VALUE;
-    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeIdentityFallback RANGE;
-    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeIdentityFallback SINGLE_VALUE;
-  }
-
-  public enum NumberRangeFormatter.RangeIdentityResult {
-    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeIdentityResult EQUAL_AFTER_ROUNDING;
-    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeIdentityResult EQUAL_BEFORE_ROUNDING;
-    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeIdentityResult NOT_EQUAL;
-  }
-
-  public abstract class NumberRangeFormatterSettings<T extends android.icu.number.NumberRangeFormatterSettings<?>> {
-    method public T collapse(android.icu.number.NumberRangeFormatter.RangeCollapse);
-    method public T identityFallback(android.icu.number.NumberRangeFormatter.RangeIdentityFallback);
-    method public T numberFormatterBoth(android.icu.number.UnlocalizedNumberFormatter);
-    method public T numberFormatterFirst(android.icu.number.UnlocalizedNumberFormatter);
-    method public T numberFormatterSecond(android.icu.number.UnlocalizedNumberFormatter);
-  }
-
-  public abstract class Precision {
-    method public static android.icu.number.CurrencyPrecision currency(android.icu.util.Currency.CurrencyUsage);
-    method public static android.icu.number.FractionPrecision fixedFraction(int);
-    method public static android.icu.number.Precision fixedSignificantDigits(int);
-    method public static android.icu.number.Precision increment(java.math.BigDecimal);
-    method public static android.icu.number.FractionPrecision integer();
-    method public static android.icu.number.FractionPrecision maxFraction(int);
-    method public static android.icu.number.Precision maxSignificantDigits(int);
-    method public static android.icu.number.FractionPrecision minFraction(int);
-    method public static android.icu.number.FractionPrecision minMaxFraction(int, int);
-    method public static android.icu.number.Precision minMaxSignificantDigits(int, int);
-    method public static android.icu.number.Precision minSignificantDigits(int);
-    method public static android.icu.number.Precision unlimited();
-  }
-
-  public class Scale {
-    method public static android.icu.number.Scale byBigDecimal(java.math.BigDecimal);
-    method public static android.icu.number.Scale byDouble(double);
-    method public static android.icu.number.Scale byDoubleAndPowerOfTen(double, int);
-    method public static android.icu.number.Scale none();
-    method public static android.icu.number.Scale powerOfTen(int);
-  }
-
-  public class ScientificNotation extends android.icu.number.Notation {
-    method public android.icu.number.ScientificNotation withExponentSignDisplay(android.icu.number.NumberFormatter.SignDisplay);
-    method public android.icu.number.ScientificNotation withMinExponentDigits(int);
-  }
-
-  public class SimpleNotation extends android.icu.number.Notation {
-  }
-
-  public class UnlocalizedNumberFormatter extends android.icu.number.NumberFormatterSettings<android.icu.number.UnlocalizedNumberFormatter> {
-    method public android.icu.number.LocalizedNumberFormatter locale(java.util.Locale);
-    method public android.icu.number.LocalizedNumberFormatter locale(android.icu.util.ULocale);
-  }
-
-  public class UnlocalizedNumberRangeFormatter extends android.icu.number.NumberRangeFormatterSettings<android.icu.number.UnlocalizedNumberRangeFormatter> {
-    method public android.icu.number.LocalizedNumberRangeFormatter locale(java.util.Locale);
-    method public android.icu.number.LocalizedNumberRangeFormatter locale(android.icu.util.ULocale);
-  }
-
-}
-
-package android.icu.text {
-
-  public final class AlphabeticIndex<V> implements java.lang.Iterable<android.icu.text.AlphabeticIndex.Bucket<V>> {
-    ctor public AlphabeticIndex(android.icu.util.ULocale);
-    ctor public AlphabeticIndex(java.util.Locale);
-    ctor public AlphabeticIndex(android.icu.text.RuleBasedCollator);
-    method public android.icu.text.AlphabeticIndex<V> addLabels(android.icu.text.UnicodeSet);
-    method public android.icu.text.AlphabeticIndex<V> addLabels(android.icu.util.ULocale...);
-    method public android.icu.text.AlphabeticIndex<V> addLabels(java.util.Locale...);
-    method public android.icu.text.AlphabeticIndex<V> addRecord(CharSequence, V);
-    method public android.icu.text.AlphabeticIndex.ImmutableIndex<V> buildImmutableIndex();
-    method public android.icu.text.AlphabeticIndex<V> clearRecords();
-    method public int getBucketCount();
-    method public int getBucketIndex(CharSequence);
-    method public java.util.List<java.lang.String> getBucketLabels();
-    method public android.icu.text.RuleBasedCollator getCollator();
-    method public String getInflowLabel();
-    method public int getMaxLabelCount();
-    method public String getOverflowLabel();
-    method public int getRecordCount();
-    method public String getUnderflowLabel();
-    method public java.util.Iterator<android.icu.text.AlphabeticIndex.Bucket<V>> iterator();
-    method public android.icu.text.AlphabeticIndex<V> setInflowLabel(String);
-    method public android.icu.text.AlphabeticIndex<V> setMaxLabelCount(int);
-    method public android.icu.text.AlphabeticIndex<V> setOverflowLabel(String);
-    method public android.icu.text.AlphabeticIndex<V> setUnderflowLabel(String);
-  }
-
-  public static class AlphabeticIndex.Bucket<V> implements java.lang.Iterable<android.icu.text.AlphabeticIndex.Record<V>> {
-    method public String getLabel();
-    method public android.icu.text.AlphabeticIndex.Bucket.LabelType getLabelType();
-    method public java.util.Iterator<android.icu.text.AlphabeticIndex.Record<V>> iterator();
-    method public int size();
-  }
-
-  public enum AlphabeticIndex.Bucket.LabelType {
-    enum_constant public static final android.icu.text.AlphabeticIndex.Bucket.LabelType INFLOW;
-    enum_constant public static final android.icu.text.AlphabeticIndex.Bucket.LabelType NORMAL;
-    enum_constant public static final android.icu.text.AlphabeticIndex.Bucket.LabelType OVERFLOW;
-    enum_constant public static final android.icu.text.AlphabeticIndex.Bucket.LabelType UNDERFLOW;
-  }
-
-  public static final class AlphabeticIndex.ImmutableIndex<V> implements java.lang.Iterable<android.icu.text.AlphabeticIndex.Bucket<V>> {
-    method public android.icu.text.AlphabeticIndex.Bucket<V> getBucket(int);
-    method public int getBucketCount();
-    method public int getBucketIndex(CharSequence);
-    method public java.util.Iterator<android.icu.text.AlphabeticIndex.Bucket<V>> iterator();
-  }
-
-  public static class AlphabeticIndex.Record<V> {
-    method public V getData();
-    method public CharSequence getName();
-  }
-
-  public class Bidi {
-    ctor public Bidi();
-    ctor public Bidi(int, int);
-    ctor public Bidi(String, int);
-    ctor public Bidi(java.text.AttributedCharacterIterator);
-    ctor public Bidi(char[], int, byte[], int, int, int);
-    method public boolean baseIsLeftToRight();
-    method public int countParagraphs();
-    method public int countRuns();
-    method public android.icu.text.Bidi createLineBidi(int, int);
-    method public static byte getBaseDirection(CharSequence);
-    method public int getBaseLevel();
-    method public android.icu.text.BidiClassifier getCustomClassifier();
-    method public int getCustomizedClass(int);
-    method public byte getDirection();
-    method public int getLength();
-    method public byte getLevelAt(int);
-    method public byte[] getLevels();
-    method public int getLogicalIndex(int);
-    method public int[] getLogicalMap();
-    method public android.icu.text.BidiRun getLogicalRun(int);
-    method public byte getParaLevel();
-    method public android.icu.text.BidiRun getParagraph(int);
-    method public android.icu.text.BidiRun getParagraphByIndex(int);
-    method public int getParagraphIndex(int);
-    method public int getProcessedLength();
-    method public int getReorderingMode();
-    method public int getReorderingOptions();
-    method public int getResultLength();
-    method public int getRunCount();
-    method public int getRunLevel(int);
-    method public int getRunLimit(int);
-    method public int getRunStart(int);
-    method public char[] getText();
-    method public String getTextAsString();
-    method public int getVisualIndex(int);
-    method public int[] getVisualMap();
-    method public android.icu.text.BidiRun getVisualRun(int);
-    method public static int[] invertMap(int[]);
-    method public boolean isInverse();
-    method public boolean isLeftToRight();
-    method public boolean isMixed();
-    method public boolean isOrderParagraphsLTR();
-    method public boolean isRightToLeft();
-    method public void orderParagraphsLTR(boolean);
-    method public static int[] reorderLogical(byte[]);
-    method public static int[] reorderVisual(byte[]);
-    method public static void reorderVisually(byte[], int, Object[], int, int);
-    method public static boolean requiresBidi(char[], int, int);
-    method public void setContext(String, String);
-    method public void setCustomClassifier(android.icu.text.BidiClassifier);
-    method public void setInverse(boolean);
-    method public android.icu.text.Bidi setLine(int, int);
-    method public void setPara(String, byte, byte[]);
-    method public void setPara(char[], byte, byte[]);
-    method public void setPara(java.text.AttributedCharacterIterator);
-    method public void setReorderingMode(int);
-    method public void setReorderingOptions(int);
-    method public String writeReordered(int);
-    method public static String writeReverse(String, int);
-    field public static final int DIRECTION_DEFAULT_LEFT_TO_RIGHT = 126; // 0x7e
-    field public static final int DIRECTION_DEFAULT_RIGHT_TO_LEFT = 127; // 0x7f
-    field public static final int DIRECTION_LEFT_TO_RIGHT = 0; // 0x0
-    field public static final int DIRECTION_RIGHT_TO_LEFT = 1; // 0x1
-    field public static final short DO_MIRRORING = 2; // 0x2
-    field public static final short INSERT_LRM_FOR_NUMERIC = 4; // 0x4
-    field public static final short KEEP_BASE_COMBINING = 1; // 0x1
-    field public static final byte LEVEL_DEFAULT_LTR = 126; // 0x7e
-    field public static final byte LEVEL_DEFAULT_RTL = 127; // 0x7f
-    field public static final byte LEVEL_OVERRIDE = -128; // 0xffffff80
-    field public static final byte LTR = 0; // 0x0
-    field public static final int MAP_NOWHERE = -1; // 0xffffffff
-    field public static final byte MAX_EXPLICIT_LEVEL = 125; // 0x7d
-    field public static final byte MIXED = 2; // 0x2
-    field public static final byte NEUTRAL = 3; // 0x3
-    field public static final int OPTION_DEFAULT = 0; // 0x0
-    field public static final int OPTION_INSERT_MARKS = 1; // 0x1
-    field public static final int OPTION_REMOVE_CONTROLS = 2; // 0x2
-    field public static final int OPTION_STREAMING = 4; // 0x4
-    field public static final short OUTPUT_REVERSE = 16; // 0x10
-    field public static final short REMOVE_BIDI_CONTROLS = 8; // 0x8
-    field public static final short REORDER_DEFAULT = 0; // 0x0
-    field public static final short REORDER_GROUP_NUMBERS_WITH_R = 2; // 0x2
-    field public static final short REORDER_INVERSE_FOR_NUMBERS_SPECIAL = 6; // 0x6
-    field public static final short REORDER_INVERSE_LIKE_DIRECT = 5; // 0x5
-    field public static final short REORDER_INVERSE_NUMBERS_AS_L = 4; // 0x4
-    field public static final short REORDER_NUMBERS_SPECIAL = 1; // 0x1
-    field public static final short REORDER_RUNS_ONLY = 3; // 0x3
-    field public static final byte RTL = 1; // 0x1
-  }
-
-  public class BidiClassifier {
-    ctor public BidiClassifier(Object);
-    method public int classify(int);
-    method public Object getContext();
-    method public void setContext(Object);
-  }
-
-  public class BidiRun {
-    method public byte getDirection();
-    method public byte getEmbeddingLevel();
-    method public int getLength();
-    method public int getLimit();
-    method public int getStart();
-    method public boolean isEvenRun();
-    method public boolean isOddRun();
-  }
-
-  public abstract class BreakIterator implements java.lang.Cloneable {
-    ctor protected BreakIterator();
-    method public Object clone();
-    method public abstract int current();
-    method public abstract int first();
-    method public abstract int following(int);
-    method public static java.util.Locale[] getAvailableLocales();
-    method public static android.icu.text.BreakIterator getCharacterInstance();
-    method public static android.icu.text.BreakIterator getCharacterInstance(java.util.Locale);
-    method public static android.icu.text.BreakIterator getCharacterInstance(android.icu.util.ULocale);
-    method public static android.icu.text.BreakIterator getLineInstance();
-    method public static android.icu.text.BreakIterator getLineInstance(java.util.Locale);
-    method public static android.icu.text.BreakIterator getLineInstance(android.icu.util.ULocale);
-    method public int getRuleStatus();
-    method public int getRuleStatusVec(int[]);
-    method public static android.icu.text.BreakIterator getSentenceInstance();
-    method public static android.icu.text.BreakIterator getSentenceInstance(java.util.Locale);
-    method public static android.icu.text.BreakIterator getSentenceInstance(android.icu.util.ULocale);
-    method public abstract java.text.CharacterIterator getText();
-    method @Deprecated public static android.icu.text.BreakIterator getTitleInstance();
-    method @Deprecated public static android.icu.text.BreakIterator getTitleInstance(java.util.Locale);
-    method @Deprecated public static android.icu.text.BreakIterator getTitleInstance(android.icu.util.ULocale);
-    method public static android.icu.text.BreakIterator getWordInstance();
-    method public static android.icu.text.BreakIterator getWordInstance(java.util.Locale);
-    method public static android.icu.text.BreakIterator getWordInstance(android.icu.util.ULocale);
-    method public boolean isBoundary(int);
-    method public abstract int last();
-    method public abstract int next(int);
-    method public abstract int next();
-    method public int preceding(int);
-    method public abstract int previous();
-    method public void setText(String);
-    method public void setText(CharSequence);
-    method public abstract void setText(java.text.CharacterIterator);
-    field public static final int DONE = -1; // 0xffffffff
-    field public static final int KIND_CHARACTER = 0; // 0x0
-    field public static final int KIND_LINE = 2; // 0x2
-    field public static final int KIND_SENTENCE = 3; // 0x3
-    field @Deprecated public static final int KIND_TITLE = 4; // 0x4
-    field public static final int KIND_WORD = 1; // 0x1
-    field public static final int WORD_IDEO = 400; // 0x190
-    field public static final int WORD_IDEO_LIMIT = 500; // 0x1f4
-    field public static final int WORD_KANA = 300; // 0x12c
-    field public static final int WORD_KANA_LIMIT = 400; // 0x190
-    field public static final int WORD_LETTER = 200; // 0xc8
-    field public static final int WORD_LETTER_LIMIT = 300; // 0x12c
-    field public static final int WORD_NONE = 0; // 0x0
-    field public static final int WORD_NONE_LIMIT = 100; // 0x64
-    field public static final int WORD_NUMBER = 100; // 0x64
-    field public static final int WORD_NUMBER_LIMIT = 200; // 0xc8
-  }
-
-  public abstract class CaseMap {
-    method public static android.icu.text.CaseMap.Fold fold();
-    method public abstract android.icu.text.CaseMap omitUnchangedText();
-    method public static android.icu.text.CaseMap.Lower toLower();
-    method public static android.icu.text.CaseMap.Title toTitle();
-    method public static android.icu.text.CaseMap.Upper toUpper();
-  }
-
-  public static final class CaseMap.Fold extends android.icu.text.CaseMap {
-    method public String apply(CharSequence);
-    method public <A extends java.lang.Appendable> A apply(CharSequence, A, android.icu.text.Edits);
-    method public android.icu.text.CaseMap.Fold omitUnchangedText();
-    method public android.icu.text.CaseMap.Fold turkic();
-  }
-
-  public static final class CaseMap.Lower extends android.icu.text.CaseMap {
-    method public String apply(java.util.Locale, CharSequence);
-    method public <A extends java.lang.Appendable> A apply(java.util.Locale, CharSequence, A, android.icu.text.Edits);
-    method public android.icu.text.CaseMap.Lower omitUnchangedText();
-  }
-
-  public static final class CaseMap.Title extends android.icu.text.CaseMap {
-    method public android.icu.text.CaseMap.Title adjustToCased();
-    method public String apply(java.util.Locale, android.icu.text.BreakIterator, CharSequence);
-    method public <A extends java.lang.Appendable> A apply(java.util.Locale, android.icu.text.BreakIterator, CharSequence, A, android.icu.text.Edits);
-    method public android.icu.text.CaseMap.Title noBreakAdjustment();
-    method public android.icu.text.CaseMap.Title noLowercase();
-    method public android.icu.text.CaseMap.Title omitUnchangedText();
-    method public android.icu.text.CaseMap.Title sentences();
-    method public android.icu.text.CaseMap.Title wholeString();
-  }
-
-  public static final class CaseMap.Upper extends android.icu.text.CaseMap {
-    method public String apply(java.util.Locale, CharSequence);
-    method public <A extends java.lang.Appendable> A apply(java.util.Locale, CharSequence, A, android.icu.text.Edits);
-    method public android.icu.text.CaseMap.Upper omitUnchangedText();
-  }
-
-  public final class CollationElementIterator {
-    method public int getMaxExpansion(int);
-    method public int getOffset();
-    method public int next();
-    method public int previous();
-    method public static int primaryOrder(int);
-    method public void reset();
-    method public static int secondaryOrder(int);
-    method public void setOffset(int);
-    method public void setText(String);
-    method public void setText(android.icu.text.UCharacterIterator);
-    method public void setText(java.text.CharacterIterator);
-    method public static int tertiaryOrder(int);
-    field public static final int IGNORABLE = 0; // 0x0
-    field public static final int NULLORDER = -1; // 0xffffffff
-  }
-
-  public final class CollationKey implements java.lang.Comparable<android.icu.text.CollationKey> {
-    ctor public CollationKey(String, byte[]);
-    method public int compareTo(android.icu.text.CollationKey);
-    method public boolean equals(android.icu.text.CollationKey);
-    method public android.icu.text.CollationKey getBound(int, int);
-    method public String getSourceString();
-    method public android.icu.text.CollationKey merge(android.icu.text.CollationKey);
-    method public byte[] toByteArray();
-  }
-
-  public static final class CollationKey.BoundMode {
-    field public static final int LOWER = 0; // 0x0
-    field public static final int UPPER = 1; // 0x1
-    field public static final int UPPER_LONG = 2; // 0x2
-  }
-
-  public abstract class Collator implements java.lang.Cloneable java.util.Comparator<java.lang.Object> android.icu.util.Freezable<android.icu.text.Collator> {
-    ctor protected Collator();
-    method public Object clone() throws java.lang.CloneNotSupportedException;
-    method public android.icu.text.Collator cloneAsThawed();
-    method public abstract int compare(String, String);
-    method public int compare(Object, Object);
-    method public boolean equals(String, String);
-    method public android.icu.text.Collator freeze();
-    method public static java.util.Locale[] getAvailableLocales();
-    method public static final android.icu.util.ULocale[] getAvailableULocales();
-    method public abstract android.icu.text.CollationKey getCollationKey(String);
-    method public int getDecomposition();
-    method public static String getDisplayName(java.util.Locale, java.util.Locale);
-    method public static String getDisplayName(android.icu.util.ULocale, android.icu.util.ULocale);
-    method public static String getDisplayName(java.util.Locale);
-    method public static String getDisplayName(android.icu.util.ULocale);
-    method public static int[] getEquivalentReorderCodes(int);
-    method public static final android.icu.util.ULocale getFunctionalEquivalent(String, android.icu.util.ULocale, boolean[]);
-    method public static final android.icu.util.ULocale getFunctionalEquivalent(String, android.icu.util.ULocale);
-    method public static final android.icu.text.Collator getInstance();
-    method public static final android.icu.text.Collator getInstance(android.icu.util.ULocale);
-    method public static final android.icu.text.Collator getInstance(java.util.Locale);
-    method public static final String[] getKeywordValues(String);
-    method public static final String[] getKeywordValuesForLocale(String, android.icu.util.ULocale, boolean);
-    method public static final String[] getKeywords();
-    method public int getMaxVariable();
-    method public int[] getReorderCodes();
-    method public int getStrength();
-    method public android.icu.text.UnicodeSet getTailoredSet();
-    method public abstract android.icu.util.VersionInfo getUCAVersion();
-    method public abstract int getVariableTop();
-    method public abstract android.icu.util.VersionInfo getVersion();
-    method public boolean isFrozen();
-    method public void setDecomposition(int);
-    method public android.icu.text.Collator setMaxVariable(int);
-    method public void setReorderCodes(int...);
-    method public void setStrength(int);
-    field public static final int CANONICAL_DECOMPOSITION = 17; // 0x11
-    field public static final int FULL_DECOMPOSITION = 15; // 0xf
-    field public static final int IDENTICAL = 15; // 0xf
-    field public static final int NO_DECOMPOSITION = 16; // 0x10
-    field public static final int PRIMARY = 0; // 0x0
-    field public static final int QUATERNARY = 3; // 0x3
-    field public static final int SECONDARY = 1; // 0x1
-    field public static final int TERTIARY = 2; // 0x2
-  }
-
-  public static interface Collator.ReorderCodes {
-    field public static final int CURRENCY = 4099; // 0x1003
-    field public static final int DEFAULT = -1; // 0xffffffff
-    field public static final int DIGIT = 4100; // 0x1004
-    field public static final int FIRST = 4096; // 0x1000
-    field public static final int NONE = 103; // 0x67
-    field public static final int OTHERS = 103; // 0x67
-    field public static final int PUNCTUATION = 4097; // 0x1001
-    field public static final int SPACE = 4096; // 0x1000
-    field public static final int SYMBOL = 4098; // 0x1002
-  }
-
-  public class CompactDecimalFormat extends android.icu.text.DecimalFormat {
-    method public static android.icu.text.CompactDecimalFormat getInstance(android.icu.util.ULocale, android.icu.text.CompactDecimalFormat.CompactStyle);
-    method public static android.icu.text.CompactDecimalFormat getInstance(java.util.Locale, android.icu.text.CompactDecimalFormat.CompactStyle);
-  }
-
-  public enum CompactDecimalFormat.CompactStyle {
-    enum_constant public static final android.icu.text.CompactDecimalFormat.CompactStyle LONG;
-    enum_constant public static final android.icu.text.CompactDecimalFormat.CompactStyle SHORT;
-  }
-
-  public class CurrencyPluralInfo implements java.lang.Cloneable java.io.Serializable {
-    ctor public CurrencyPluralInfo();
-    ctor public CurrencyPluralInfo(java.util.Locale);
-    ctor public CurrencyPluralInfo(android.icu.util.ULocale);
-    method public Object clone();
-    method public String getCurrencyPluralPattern(String);
-    method public static android.icu.text.CurrencyPluralInfo getInstance();
-    method public static android.icu.text.CurrencyPluralInfo getInstance(java.util.Locale);
-    method public static android.icu.text.CurrencyPluralInfo getInstance(android.icu.util.ULocale);
-    method public android.icu.util.ULocale getLocale();
-    method public android.icu.text.PluralRules getPluralRules();
-    method public void setCurrencyPluralPattern(String, String);
-    method public void setLocale(android.icu.util.ULocale);
-    method public void setPluralRules(String);
-  }
-
-  public abstract class DateFormat extends android.icu.text.UFormat {
-    ctor protected DateFormat();
-    method public final StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
-    method public abstract StringBuffer format(android.icu.util.Calendar, StringBuffer, java.text.FieldPosition);
-    method public StringBuffer format(java.util.Date, StringBuffer, java.text.FieldPosition);
-    method public final String format(java.util.Date);
-    method public static java.util.Locale[] getAvailableLocales();
-    method public boolean getBooleanAttribute(android.icu.text.DateFormat.BooleanAttribute);
-    method public android.icu.util.Calendar getCalendar();
-    method public android.icu.text.DisplayContext getContext(android.icu.text.DisplayContext.Type);
-    method public static final android.icu.text.DateFormat getDateInstance();
-    method public static final android.icu.text.DateFormat getDateInstance(int);
-    method public static final android.icu.text.DateFormat getDateInstance(int, java.util.Locale);
-    method public static final android.icu.text.DateFormat getDateInstance(int, android.icu.util.ULocale);
-    method public static final android.icu.text.DateFormat getDateInstance(android.icu.util.Calendar, int, java.util.Locale);
-    method public static final android.icu.text.DateFormat getDateInstance(android.icu.util.Calendar, int, android.icu.util.ULocale);
-    method public static final android.icu.text.DateFormat getDateInstance(android.icu.util.Calendar, int);
-    method public static final android.icu.text.DateFormat getDateTimeInstance();
-    method public static final android.icu.text.DateFormat getDateTimeInstance(int, int);
-    method public static final android.icu.text.DateFormat getDateTimeInstance(int, int, java.util.Locale);
-    method public static final android.icu.text.DateFormat getDateTimeInstance(int, int, android.icu.util.ULocale);
-    method public static final android.icu.text.DateFormat getDateTimeInstance(android.icu.util.Calendar, int, int, java.util.Locale);
-    method public static final android.icu.text.DateFormat getDateTimeInstance(android.icu.util.Calendar, int, int, android.icu.util.ULocale);
-    method public static final android.icu.text.DateFormat getDateTimeInstance(android.icu.util.Calendar, int, int);
-    method public static final android.icu.text.DateFormat getInstance();
-    method public static final android.icu.text.DateFormat getInstance(android.icu.util.Calendar, java.util.Locale);
-    method public static final android.icu.text.DateFormat getInstance(android.icu.util.Calendar);
-    method public static final android.icu.text.DateFormat getInstanceForSkeleton(String);
-    method public static final android.icu.text.DateFormat getInstanceForSkeleton(String, java.util.Locale);
-    method public static final android.icu.text.DateFormat getInstanceForSkeleton(String, android.icu.util.ULocale);
-    method public static final android.icu.text.DateFormat getInstanceForSkeleton(android.icu.util.Calendar, String, java.util.Locale);
-    method public static final android.icu.text.DateFormat getInstanceForSkeleton(android.icu.util.Calendar, String, android.icu.util.ULocale);
-    method public android.icu.text.NumberFormat getNumberFormat();
-    method public static final android.icu.text.DateFormat getPatternInstance(String);
-    method public static final android.icu.text.DateFormat getPatternInstance(String, java.util.Locale);
-    method public static final android.icu.text.DateFormat getPatternInstance(String, android.icu.util.ULocale);
-    method public static final android.icu.text.DateFormat getPatternInstance(android.icu.util.Calendar, String, java.util.Locale);
-    method public static final android.icu.text.DateFormat getPatternInstance(android.icu.util.Calendar, String, android.icu.util.ULocale);
-    method public static final android.icu.text.DateFormat getTimeInstance();
-    method public static final android.icu.text.DateFormat getTimeInstance(int);
-    method public static final android.icu.text.DateFormat getTimeInstance(int, java.util.Locale);
-    method public static final android.icu.text.DateFormat getTimeInstance(int, android.icu.util.ULocale);
-    method public static final android.icu.text.DateFormat getTimeInstance(android.icu.util.Calendar, int, java.util.Locale);
-    method public static final android.icu.text.DateFormat getTimeInstance(android.icu.util.Calendar, int, android.icu.util.ULocale);
-    method public static final android.icu.text.DateFormat getTimeInstance(android.icu.util.Calendar, int);
-    method public android.icu.util.TimeZone getTimeZone();
-    method public boolean isCalendarLenient();
-    method public boolean isLenient();
-    method public java.util.Date parse(String) throws java.text.ParseException;
-    method public abstract void parse(String, android.icu.util.Calendar, java.text.ParsePosition);
-    method public java.util.Date parse(String, java.text.ParsePosition);
-    method public Object parseObject(String, java.text.ParsePosition);
-    method public android.icu.text.DateFormat setBooleanAttribute(android.icu.text.DateFormat.BooleanAttribute, boolean);
-    method public void setCalendar(android.icu.util.Calendar);
-    method public void setCalendarLenient(boolean);
-    method public void setContext(android.icu.text.DisplayContext);
-    method public void setLenient(boolean);
-    method public void setNumberFormat(android.icu.text.NumberFormat);
-    method public void setTimeZone(android.icu.util.TimeZone);
-    field public static final String ABBR_GENERIC_TZ = "v";
-    field public static final String ABBR_MONTH = "MMM";
-    field public static final String ABBR_MONTH_DAY = "MMMd";
-    field public static final String ABBR_MONTH_WEEKDAY_DAY = "MMMEd";
-    field public static final String ABBR_QUARTER = "QQQ";
-    field public static final String ABBR_SPECIFIC_TZ = "z";
-    field public static final String ABBR_UTC_TZ = "ZZZZ";
-    field public static final String ABBR_WEEKDAY = "E";
-    field public static final int AM_PM_FIELD = 14; // 0xe
-    field public static final int AM_PM_MIDNIGHT_NOON_FIELD = 35; // 0x23
-    field public static final int DATE_FIELD = 3; // 0x3
-    field public static final String DAY = "d";
-    field public static final int DAY_OF_WEEK_FIELD = 9; // 0x9
-    field public static final int DAY_OF_WEEK_IN_MONTH_FIELD = 11; // 0xb
-    field public static final int DAY_OF_YEAR_FIELD = 10; // 0xa
-    field public static final int DEFAULT = 2; // 0x2
-    field public static final int DOW_LOCAL_FIELD = 19; // 0x13
-    field public static final int ERA_FIELD = 0; // 0x0
-    field public static final int EXTENDED_YEAR_FIELD = 20; // 0x14
-    field public static final int FLEXIBLE_DAY_PERIOD_FIELD = 36; // 0x24
-    field public static final int FRACTIONAL_SECOND_FIELD = 8; // 0x8
-    field public static final int FULL = 0; // 0x0
-    field public static final String GENERIC_TZ = "vvvv";
-    field public static final String HOUR = "j";
-    field public static final int HOUR0_FIELD = 16; // 0x10
-    field public static final int HOUR1_FIELD = 15; // 0xf
-    field public static final String HOUR24 = "H";
-    field public static final String HOUR24_MINUTE = "Hm";
-    field public static final String HOUR24_MINUTE_SECOND = "Hms";
-    field public static final String HOUR_MINUTE = "jm";
-    field public static final String HOUR_MINUTE_SECOND = "jms";
-    field public static final int HOUR_OF_DAY0_FIELD = 5; // 0x5
-    field public static final int HOUR_OF_DAY1_FIELD = 4; // 0x4
-    field public static final int JULIAN_DAY_FIELD = 21; // 0x15
-    field public static final String LOCATION_TZ = "VVVV";
-    field public static final int LONG = 1; // 0x1
-    field public static final int MEDIUM = 2; // 0x2
-    field public static final int MILLISECONDS_IN_DAY_FIELD = 22; // 0x16
-    field public static final int MILLISECOND_FIELD = 8; // 0x8
-    field public static final String MINUTE = "m";
-    field public static final int MINUTE_FIELD = 6; // 0x6
-    field public static final String MINUTE_SECOND = "ms";
-    field public static final String MONTH = "MMMM";
-    field public static final String MONTH_DAY = "MMMMd";
-    field public static final int MONTH_FIELD = 2; // 0x2
-    field public static final String MONTH_WEEKDAY_DAY = "MMMMEEEEd";
-    field public static final int NONE = -1; // 0xffffffff
-    field public static final String NUM_MONTH = "M";
-    field public static final String NUM_MONTH_DAY = "Md";
-    field public static final String NUM_MONTH_WEEKDAY_DAY = "MEd";
-    field public static final String QUARTER = "QQQQ";
-    field public static final int QUARTER_FIELD = 27; // 0x1b
-    field public static final int RELATIVE = 128; // 0x80
-    field public static final int RELATIVE_DEFAULT = 130; // 0x82
-    field public static final int RELATIVE_FULL = 128; // 0x80
-    field public static final int RELATIVE_LONG = 129; // 0x81
-    field public static final int RELATIVE_MEDIUM = 130; // 0x82
-    field public static final int RELATIVE_SHORT = 131; // 0x83
-    field public static final String SECOND = "s";
-    field public static final int SECOND_FIELD = 7; // 0x7
-    field public static final int SHORT = 3; // 0x3
-    field public static final String SPECIFIC_TZ = "zzzz";
-    field public static final int STANDALONE_DAY_FIELD = 25; // 0x19
-    field public static final int STANDALONE_MONTH_FIELD = 26; // 0x1a
-    field public static final int STANDALONE_QUARTER_FIELD = 28; // 0x1c
-    field public static final int TIMEZONE_FIELD = 17; // 0x11
-    field public static final int TIMEZONE_GENERIC_FIELD = 24; // 0x18
-    field public static final int TIMEZONE_ISO_FIELD = 32; // 0x20
-    field public static final int TIMEZONE_ISO_LOCAL_FIELD = 33; // 0x21
-    field public static final int TIMEZONE_LOCALIZED_GMT_OFFSET_FIELD = 31; // 0x1f
-    field public static final int TIMEZONE_RFC_FIELD = 23; // 0x17
-    field public static final int TIMEZONE_SPECIAL_FIELD = 29; // 0x1d
-    field public static final String WEEKDAY = "EEEE";
-    field public static final int WEEK_OF_MONTH_FIELD = 13; // 0xd
-    field public static final int WEEK_OF_YEAR_FIELD = 12; // 0xc
-    field public static final String YEAR = "y";
-    field public static final String YEAR_ABBR_MONTH = "yMMM";
-    field public static final String YEAR_ABBR_MONTH_DAY = "yMMMd";
-    field public static final String YEAR_ABBR_MONTH_WEEKDAY_DAY = "yMMMEd";
-    field public static final String YEAR_ABBR_QUARTER = "yQQQ";
-    field public static final int YEAR_FIELD = 1; // 0x1
-    field public static final String YEAR_MONTH = "yMMMM";
-    field public static final String YEAR_MONTH_DAY = "yMMMMd";
-    field public static final String YEAR_MONTH_WEEKDAY_DAY = "yMMMMEEEEd";
-    field public static final int YEAR_NAME_FIELD = 30; // 0x1e
-    field public static final String YEAR_NUM_MONTH = "yM";
-    field public static final String YEAR_NUM_MONTH_DAY = "yMd";
-    field public static final String YEAR_NUM_MONTH_WEEKDAY_DAY = "yMEd";
-    field public static final String YEAR_QUARTER = "yQQQQ";
-    field public static final int YEAR_WOY_FIELD = 18; // 0x12
-    field protected android.icu.util.Calendar calendar;
-    field protected android.icu.text.NumberFormat numberFormat;
-  }
-
-  public enum DateFormat.BooleanAttribute {
-    enum_constant public static final android.icu.text.DateFormat.BooleanAttribute PARSE_ALLOW_NUMERIC;
-    enum_constant public static final android.icu.text.DateFormat.BooleanAttribute PARSE_ALLOW_WHITESPACE;
-    enum_constant public static final android.icu.text.DateFormat.BooleanAttribute PARSE_MULTIPLE_PATTERNS_FOR_MATCH;
-    enum_constant public static final android.icu.text.DateFormat.BooleanAttribute PARSE_PARTIAL_LITERAL_MATCH;
-  }
-
-  public static class DateFormat.Field extends java.text.Format.Field {
-    ctor protected DateFormat.Field(String, int);
-    method public int getCalendarField();
-    method public static android.icu.text.DateFormat.Field ofCalendarField(int);
-    field public static final android.icu.text.DateFormat.Field AM_PM;
-    field public static final android.icu.text.DateFormat.Field AM_PM_MIDNIGHT_NOON;
-    field public static final android.icu.text.DateFormat.Field DAY_OF_MONTH;
-    field public static final android.icu.text.DateFormat.Field DAY_OF_WEEK;
-    field public static final android.icu.text.DateFormat.Field DAY_OF_WEEK_IN_MONTH;
-    field public static final android.icu.text.DateFormat.Field DAY_OF_YEAR;
-    field public static final android.icu.text.DateFormat.Field DOW_LOCAL;
-    field public static final android.icu.text.DateFormat.Field ERA;
-    field public static final android.icu.text.DateFormat.Field EXTENDED_YEAR;
-    field public static final android.icu.text.DateFormat.Field FLEXIBLE_DAY_PERIOD;
-    field public static final android.icu.text.DateFormat.Field HOUR0;
-    field public static final android.icu.text.DateFormat.Field HOUR1;
-    field public static final android.icu.text.DateFormat.Field HOUR_OF_DAY0;
-    field public static final android.icu.text.DateFormat.Field HOUR_OF_DAY1;
-    field public static final android.icu.text.DateFormat.Field JULIAN_DAY;
-    field public static final android.icu.text.DateFormat.Field MILLISECOND;
-    field public static final android.icu.text.DateFormat.Field MILLISECONDS_IN_DAY;
-    field public static final android.icu.text.DateFormat.Field MINUTE;
-    field public static final android.icu.text.DateFormat.Field MONTH;
-    field public static final android.icu.text.DateFormat.Field QUARTER;
-    field public static final android.icu.text.DateFormat.Field SECOND;
-    field public static final android.icu.text.DateFormat.Field TIME_ZONE;
-    field public static final android.icu.text.DateFormat.Field WEEK_OF_MONTH;
-    field public static final android.icu.text.DateFormat.Field WEEK_OF_YEAR;
-    field public static final android.icu.text.DateFormat.Field YEAR;
-    field public static final android.icu.text.DateFormat.Field YEAR_WOY;
-  }
-
-  public class DateFormatSymbols implements java.lang.Cloneable java.io.Serializable {
-    ctor public DateFormatSymbols();
-    ctor public DateFormatSymbols(java.util.Locale);
-    ctor public DateFormatSymbols(android.icu.util.ULocale);
-    ctor public DateFormatSymbols(android.icu.util.Calendar, java.util.Locale);
-    ctor public DateFormatSymbols(android.icu.util.Calendar, android.icu.util.ULocale);
-    ctor public DateFormatSymbols(Class<? extends android.icu.util.Calendar>, java.util.Locale);
-    ctor public DateFormatSymbols(Class<? extends android.icu.util.Calendar>, android.icu.util.ULocale);
-    ctor public DateFormatSymbols(java.util.ResourceBundle, java.util.Locale);
-    ctor public DateFormatSymbols(java.util.ResourceBundle, android.icu.util.ULocale);
-    method public Object clone();
-    method public String[] getAmPmStrings();
-    method public static java.util.Locale[] getAvailableLocales();
-    method public String[] getEraNames();
-    method public String[] getEras();
-    method public static android.icu.text.DateFormatSymbols getInstance();
-    method public static android.icu.text.DateFormatSymbols getInstance(java.util.Locale);
-    method public static android.icu.text.DateFormatSymbols getInstance(android.icu.util.ULocale);
-    method public String getLocalPatternChars();
-    method public String[] getMonths();
-    method public String[] getMonths(int, int);
-    method public String[] getQuarters(int, int);
-    method public String[] getShortMonths();
-    method public String[] getShortWeekdays();
-    method public String[] getWeekdays();
-    method public String[] getWeekdays(int, int);
-    method public String[] getYearNames(int, int);
-    method public String[] getZodiacNames(int, int);
-    method public String[][] getZoneStrings();
-    method protected void initializeData(android.icu.util.ULocale, String);
-    method public void setAmPmStrings(String[]);
-    method public void setEraNames(String[]);
-    method public void setEras(String[]);
-    method public void setLocalPatternChars(String);
-    method public void setMonths(String[]);
-    method public void setMonths(String[], int, int);
-    method public void setQuarters(String[], int, int);
-    method public void setShortMonths(String[]);
-    method public void setShortWeekdays(String[]);
-    method public void setWeekdays(String[], int, int);
-    method public void setWeekdays(String[]);
-    method public void setYearNames(String[], int, int);
-    method public void setZodiacNames(String[], int, int);
-    method public void setZoneStrings(String[][]);
-    field public static final int ABBREVIATED = 0; // 0x0
-    field public static final int FORMAT = 0; // 0x0
-    field public static final int NARROW = 2; // 0x2
-    field public static final int SHORT = 3; // 0x3
-    field public static final int STANDALONE = 1; // 0x1
-    field public static final int WIDE = 1; // 0x1
-  }
-
-  public class DateIntervalFormat extends android.icu.text.UFormat {
-    method public final StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
-    method public final StringBuffer format(android.icu.util.DateInterval, StringBuffer, java.text.FieldPosition);
-    method public final StringBuffer format(android.icu.util.Calendar, android.icu.util.Calendar, StringBuffer, java.text.FieldPosition);
-    method public android.icu.text.DateFormat getDateFormat();
-    method public android.icu.text.DateIntervalInfo getDateIntervalInfo();
-    method public static final android.icu.text.DateIntervalFormat getInstance(String);
-    method public static final android.icu.text.DateIntervalFormat getInstance(String, java.util.Locale);
-    method public static final android.icu.text.DateIntervalFormat getInstance(String, android.icu.util.ULocale);
-    method public static final android.icu.text.DateIntervalFormat getInstance(String, android.icu.text.DateIntervalInfo);
-    method public static final android.icu.text.DateIntervalFormat getInstance(String, java.util.Locale, android.icu.text.DateIntervalInfo);
-    method public static final android.icu.text.DateIntervalFormat getInstance(String, android.icu.util.ULocale, android.icu.text.DateIntervalInfo);
-    method public android.icu.util.TimeZone getTimeZone();
-    method @Deprecated public Object parseObject(String, java.text.ParsePosition);
-    method public void setDateIntervalInfo(android.icu.text.DateIntervalInfo);
-    method public void setTimeZone(android.icu.util.TimeZone);
-  }
-
-  public class DateIntervalInfo implements java.lang.Cloneable android.icu.util.Freezable<android.icu.text.DateIntervalInfo> java.io.Serializable {
-    ctor public DateIntervalInfo(android.icu.util.ULocale);
-    ctor public DateIntervalInfo(java.util.Locale);
-    method public Object clone();
-    method public android.icu.text.DateIntervalInfo cloneAsThawed();
-    method public android.icu.text.DateIntervalInfo freeze();
-    method public boolean getDefaultOrder();
-    method public String getFallbackIntervalPattern();
-    method public android.icu.text.DateIntervalInfo.PatternInfo getIntervalPattern(String, int);
-    method public boolean isFrozen();
-    method public void setFallbackIntervalPattern(String);
-    method public void setIntervalPattern(String, int, String);
-  }
-
-  public static final class DateIntervalInfo.PatternInfo implements java.lang.Cloneable java.io.Serializable {
-    ctor public DateIntervalInfo.PatternInfo(String, String, boolean);
-    method public boolean firstDateInPtnIsLaterDate();
-    method public String getFirstPart();
-    method public String getSecondPart();
-  }
-
-  public class DateTimePatternGenerator implements java.lang.Cloneable android.icu.util.Freezable<android.icu.text.DateTimePatternGenerator> {
-    ctor protected DateTimePatternGenerator();
-    method public android.icu.text.DateTimePatternGenerator addPattern(String, boolean, android.icu.text.DateTimePatternGenerator.PatternInfo);
-    method public Object clone();
-    method public android.icu.text.DateTimePatternGenerator cloneAsThawed();
-    method public android.icu.text.DateTimePatternGenerator freeze();
-    method public String getAppendItemFormat(int);
-    method public String getAppendItemName(int);
-    method public String getBaseSkeleton(String);
-    method public java.util.Set<java.lang.String> getBaseSkeletons(java.util.Set<java.lang.String>);
-    method public String getBestPattern(String);
-    method public String getBestPattern(String, int);
-    method public String getDateTimeFormat();
-    method public String getDecimal();
-    method public static android.icu.text.DateTimePatternGenerator getEmptyInstance();
-    method public String getFieldDisplayName(int, android.icu.text.DateTimePatternGenerator.DisplayWidth);
-    method public static android.icu.text.DateTimePatternGenerator getInstance();
-    method public static android.icu.text.DateTimePatternGenerator getInstance(android.icu.util.ULocale);
-    method public static android.icu.text.DateTimePatternGenerator getInstance(java.util.Locale);
-    method public String getSkeleton(String);
-    method public java.util.Map<java.lang.String,java.lang.String> getSkeletons(java.util.Map<java.lang.String,java.lang.String>);
-    method public boolean isFrozen();
-    method public String replaceFieldTypes(String, String);
-    method public String replaceFieldTypes(String, String, int);
-    method public void setAppendItemFormat(int, String);
-    method public void setAppendItemName(int, String);
-    method public void setDateTimeFormat(String);
-    method public void setDecimal(String);
-    field public static final int DAY = 7; // 0x7
-    field public static final int DAYPERIOD = 10; // 0xa
-    field public static final int DAY_OF_WEEK_IN_MONTH = 9; // 0x9
-    field public static final int DAY_OF_YEAR = 8; // 0x8
-    field public static final int ERA = 0; // 0x0
-    field public static final int FRACTIONAL_SECOND = 14; // 0xe
-    field public static final int HOUR = 11; // 0xb
-    field public static final int MATCH_ALL_FIELDS_LENGTH = 65535; // 0xffff
-    field public static final int MATCH_HOUR_FIELD_LENGTH = 2048; // 0x800
-    field public static final int MATCH_NO_OPTIONS = 0; // 0x0
-    field public static final int MINUTE = 12; // 0xc
-    field public static final int MONTH = 3; // 0x3
-    field public static final int QUARTER = 2; // 0x2
-    field public static final int SECOND = 13; // 0xd
-    field public static final int WEEKDAY = 6; // 0x6
-    field public static final int WEEK_OF_MONTH = 5; // 0x5
-    field public static final int WEEK_OF_YEAR = 4; // 0x4
-    field public static final int YEAR = 1; // 0x1
-    field public static final int ZONE = 15; // 0xf
-  }
-
-  public enum DateTimePatternGenerator.DisplayWidth {
-    enum_constant public static final android.icu.text.DateTimePatternGenerator.DisplayWidth ABBREVIATED;
-    enum_constant public static final android.icu.text.DateTimePatternGenerator.DisplayWidth NARROW;
-    enum_constant public static final android.icu.text.DateTimePatternGenerator.DisplayWidth WIDE;
-  }
-
-  public static final class DateTimePatternGenerator.PatternInfo {
-    ctor public DateTimePatternGenerator.PatternInfo();
-    field public static final int BASE_CONFLICT = 1; // 0x1
-    field public static final int CONFLICT = 2; // 0x2
-    field public static final int OK = 0; // 0x0
-    field public String conflictingPattern;
-    field public int status;
-  }
-
-  public class DecimalFormat extends android.icu.text.NumberFormat {
-    ctor public DecimalFormat();
-    ctor public DecimalFormat(String);
-    ctor public DecimalFormat(String, android.icu.text.DecimalFormatSymbols);
-    ctor public DecimalFormat(String, android.icu.text.DecimalFormatSymbols, android.icu.text.CurrencyPluralInfo, int);
-    method public void applyLocalizedPattern(String);
-    method public void applyPattern(String);
-    method public boolean areSignificantDigitsUsed();
-    method public StringBuffer format(double, StringBuffer, java.text.FieldPosition);
-    method public StringBuffer format(long, StringBuffer, java.text.FieldPosition);
-    method public StringBuffer format(java.math.BigInteger, StringBuffer, java.text.FieldPosition);
-    method public StringBuffer format(java.math.BigDecimal, StringBuffer, java.text.FieldPosition);
-    method public StringBuffer format(android.icu.math.BigDecimal, StringBuffer, java.text.FieldPosition);
-    method public android.icu.text.CurrencyPluralInfo getCurrencyPluralInfo();
-    method public android.icu.util.Currency.CurrencyUsage getCurrencyUsage();
-    method public android.icu.text.DecimalFormatSymbols getDecimalFormatSymbols();
-    method public int getFormatWidth();
-    method public int getGroupingSize();
-    method public java.math.MathContext getMathContext();
-    method public android.icu.math.MathContext getMathContextICU();
-    method public int getMaximumSignificantDigits();
-    method public byte getMinimumExponentDigits();
-    method public int getMinimumSignificantDigits();
-    method public int getMultiplier();
-    method public String getNegativePrefix();
-    method public String getNegativeSuffix();
-    method public char getPadCharacter();
-    method public int getPadPosition();
-    method @Deprecated public int getParseMaxDigits();
-    method public String getPositivePrefix();
-    method public String getPositiveSuffix();
-    method public java.math.BigDecimal getRoundingIncrement();
-    method public int getSecondaryGroupingSize();
-    method public boolean isDecimalPatternMatchRequired();
-    method public boolean isDecimalSeparatorAlwaysShown();
-    method public boolean isExponentSignAlwaysShown();
-    method public boolean isParseBigDecimal();
-    method public boolean isScientificNotation();
-    method public Number parse(String, java.text.ParsePosition);
-    method public void setCurrencyPluralInfo(android.icu.text.CurrencyPluralInfo);
-    method public void setCurrencyUsage(android.icu.util.Currency.CurrencyUsage);
-    method public void setDecimalFormatSymbols(android.icu.text.DecimalFormatSymbols);
-    method public void setDecimalPatternMatchRequired(boolean);
-    method public void setDecimalSeparatorAlwaysShown(boolean);
-    method public void setExponentSignAlwaysShown(boolean);
-    method public void setFormatWidth(int);
-    method public void setGroupingSize(int);
-    method public void setMathContext(java.math.MathContext);
-    method public void setMathContextICU(android.icu.math.MathContext);
-    method public void setMaximumSignificantDigits(int);
-    method public void setMinimumExponentDigits(byte);
-    method public void setMinimumSignificantDigits(int);
-    method public void setMultiplier(int);
-    method public void setNegativePrefix(String);
-    method public void setNegativeSuffix(String);
-    method public void setPadCharacter(char);
-    method public void setPadPosition(int);
-    method public void setParseBigDecimal(boolean);
-    method @Deprecated public void setParseMaxDigits(int);
-    method public void setPositivePrefix(String);
-    method public void setPositiveSuffix(String);
-    method public void setRoundingIncrement(java.math.BigDecimal);
-    method public void setRoundingIncrement(android.icu.math.BigDecimal);
-    method public void setRoundingIncrement(double);
-    method public void setScientificNotation(boolean);
-    method public void setSecondaryGroupingSize(int);
-    method public void setSignificantDigitsUsed(boolean);
-    method public String toLocalizedPattern();
-    method public String toPattern();
-    field public static final int PAD_AFTER_PREFIX = 1; // 0x1
-    field public static final int PAD_AFTER_SUFFIX = 3; // 0x3
-    field public static final int PAD_BEFORE_PREFIX = 0; // 0x0
-    field public static final int PAD_BEFORE_SUFFIX = 2; // 0x2
-  }
-
-  public class DecimalFormatSymbols implements java.lang.Cloneable java.io.Serializable {
-    ctor public DecimalFormatSymbols();
-    ctor public DecimalFormatSymbols(java.util.Locale);
-    ctor public DecimalFormatSymbols(android.icu.util.ULocale);
-    method public Object clone();
-    method public static android.icu.text.DecimalFormatSymbols forNumberingSystem(java.util.Locale, android.icu.text.NumberingSystem);
-    method public static android.icu.text.DecimalFormatSymbols forNumberingSystem(android.icu.util.ULocale, android.icu.text.NumberingSystem);
-    method public static java.util.Locale[] getAvailableLocales();
-    method public android.icu.util.Currency getCurrency();
-    method public String getCurrencySymbol();
-    method public char getDecimalSeparator();
-    method public String getDecimalSeparatorString();
-    method public char getDigit();
-    method public String[] getDigitStrings();
-    method public char[] getDigits();
-    method public String getExponentMultiplicationSign();
-    method public String getExponentSeparator();
-    method public char getGroupingSeparator();
-    method public String getGroupingSeparatorString();
-    method public String getInfinity();
-    method public static android.icu.text.DecimalFormatSymbols getInstance();
-    method public static android.icu.text.DecimalFormatSymbols getInstance(java.util.Locale);
-    method public static android.icu.text.DecimalFormatSymbols getInstance(android.icu.util.ULocale);
-    method public String getInternationalCurrencySymbol();
-    method public java.util.Locale getLocale();
-    method public char getMinusSign();
-    method public String getMinusSignString();
-    method public char getMonetaryDecimalSeparator();
-    method public String getMonetaryDecimalSeparatorString();
-    method public char getMonetaryGroupingSeparator();
-    method public String getMonetaryGroupingSeparatorString();
-    method public String getNaN();
-    method public char getPadEscape();
-    method public String getPatternForCurrencySpacing(int, boolean);
-    method public char getPatternSeparator();
-    method public char getPerMill();
-    method public String getPerMillString();
-    method public char getPercent();
-    method public String getPercentString();
-    method public char getPlusSign();
-    method public String getPlusSignString();
-    method public char getSignificantDigit();
-    method public android.icu.util.ULocale getULocale();
-    method public char getZeroDigit();
-    method public void setCurrency(android.icu.util.Currency);
-    method public void setCurrencySymbol(String);
-    method public void setDecimalSeparator(char);
-    method public void setDecimalSeparatorString(String);
-    method public void setDigit(char);
-    method public void setDigitStrings(String[]);
-    method public void setExponentMultiplicationSign(String);
-    method public void setExponentSeparator(String);
-    method public void setGroupingSeparator(char);
-    method public void setGroupingSeparatorString(String);
-    method public void setInfinity(String);
-    method public void setInternationalCurrencySymbol(String);
-    method public void setMinusSign(char);
-    method public void setMinusSignString(String);
-    method public void setMonetaryDecimalSeparator(char);
-    method public void setMonetaryDecimalSeparatorString(String);
-    method public void setMonetaryGroupingSeparator(char);
-    method public void setMonetaryGroupingSeparatorString(String);
-    method public void setNaN(String);
-    method public void setPadEscape(char);
-    method public void setPatternForCurrencySpacing(int, boolean, String);
-    method public void setPatternSeparator(char);
-    method public void setPerMill(char);
-    method public void setPerMillString(String);
-    method public void setPercent(char);
-    method public void setPercentString(String);
-    method public void setPlusSign(char);
-    method public void setPlusSignString(String);
-    method public void setSignificantDigit(char);
-    method public void setZeroDigit(char);
-    field public static final int CURRENCY_SPC_CURRENCY_MATCH = 0; // 0x0
-    field public static final int CURRENCY_SPC_INSERT = 2; // 0x2
-    field public static final int CURRENCY_SPC_SURROUNDING_MATCH = 1; // 0x1
-  }
-
-  public enum DisplayContext {
-    method public android.icu.text.DisplayContext.Type type();
-    method public int value();
-    enum_constant public static final android.icu.text.DisplayContext CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE;
-    enum_constant public static final android.icu.text.DisplayContext CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE;
-    enum_constant public static final android.icu.text.DisplayContext CAPITALIZATION_FOR_STANDALONE;
-    enum_constant public static final android.icu.text.DisplayContext CAPITALIZATION_FOR_UI_LIST_OR_MENU;
-    enum_constant public static final android.icu.text.DisplayContext CAPITALIZATION_NONE;
-    enum_constant public static final android.icu.text.DisplayContext DIALECT_NAMES;
-    enum_constant public static final android.icu.text.DisplayContext LENGTH_FULL;
-    enum_constant public static final android.icu.text.DisplayContext LENGTH_SHORT;
-    enum_constant public static final android.icu.text.DisplayContext NO_SUBSTITUTE;
-    enum_constant public static final android.icu.text.DisplayContext STANDARD_NAMES;
-    enum_constant public static final android.icu.text.DisplayContext SUBSTITUTE;
-  }
-
-  public enum DisplayContext.Type {
-    enum_constant public static final android.icu.text.DisplayContext.Type CAPITALIZATION;
-    enum_constant public static final android.icu.text.DisplayContext.Type DIALECT_HANDLING;
-    enum_constant public static final android.icu.text.DisplayContext.Type DISPLAY_LENGTH;
-    enum_constant public static final android.icu.text.DisplayContext.Type SUBSTITUTE_HANDLING;
-  }
-
-  public final class Edits {
-    ctor public Edits();
-    method public void addReplace(int, int);
-    method public void addUnchanged(int);
-    method public android.icu.text.Edits.Iterator getCoarseChangesIterator();
-    method public android.icu.text.Edits.Iterator getCoarseIterator();
-    method public android.icu.text.Edits.Iterator getFineChangesIterator();
-    method public android.icu.text.Edits.Iterator getFineIterator();
-    method public boolean hasChanges();
-    method public int lengthDelta();
-    method public android.icu.text.Edits mergeAndAppend(android.icu.text.Edits, android.icu.text.Edits);
-    method public int numberOfChanges();
-    method public void reset();
-  }
-
-  public static final class Edits.Iterator {
-    method public int destinationIndex();
-    method public int destinationIndexFromSourceIndex(int);
-    method public boolean findDestinationIndex(int);
-    method public boolean findSourceIndex(int);
-    method public boolean hasChange();
-    method public int newLength();
-    method public boolean next();
-    method public int oldLength();
-    method public int replacementIndex();
-    method public int sourceIndex();
-    method public int sourceIndexFromDestinationIndex(int);
-  }
-
-  public abstract class IDNA {
-    method public static android.icu.text.IDNA getUTS46Instance(int);
-    method public abstract StringBuilder labelToASCII(CharSequence, StringBuilder, android.icu.text.IDNA.Info);
-    method public abstract StringBuilder labelToUnicode(CharSequence, StringBuilder, android.icu.text.IDNA.Info);
-    method public abstract StringBuilder nameToASCII(CharSequence, StringBuilder, android.icu.text.IDNA.Info);
-    method public abstract StringBuilder nameToUnicode(CharSequence, StringBuilder, android.icu.text.IDNA.Info);
-    field public static final int CHECK_BIDI = 4; // 0x4
-    field public static final int CHECK_CONTEXTJ = 8; // 0x8
-    field public static final int CHECK_CONTEXTO = 64; // 0x40
-    field public static final int DEFAULT = 0; // 0x0
-    field public static final int NONTRANSITIONAL_TO_ASCII = 16; // 0x10
-    field public static final int NONTRANSITIONAL_TO_UNICODE = 32; // 0x20
-    field public static final int USE_STD3_RULES = 2; // 0x2
-  }
-
-  public enum IDNA.Error {
-    enum_constant public static final android.icu.text.IDNA.Error BIDI;
-    enum_constant public static final android.icu.text.IDNA.Error CONTEXTJ;
-    enum_constant public static final android.icu.text.IDNA.Error CONTEXTO_DIGITS;
-    enum_constant public static final android.icu.text.IDNA.Error CONTEXTO_PUNCTUATION;
-    enum_constant public static final android.icu.text.IDNA.Error DISALLOWED;
-    enum_constant public static final android.icu.text.IDNA.Error DOMAIN_NAME_TOO_LONG;
-    enum_constant public static final android.icu.text.IDNA.Error EMPTY_LABEL;
-    enum_constant public static final android.icu.text.IDNA.Error HYPHEN_3_4;
-    enum_constant public static final android.icu.text.IDNA.Error INVALID_ACE_LABEL;
-    enum_constant public static final android.icu.text.IDNA.Error LABEL_HAS_DOT;
-    enum_constant public static final android.icu.text.IDNA.Error LABEL_TOO_LONG;
-    enum_constant public static final android.icu.text.IDNA.Error LEADING_COMBINING_MARK;
-    enum_constant public static final android.icu.text.IDNA.Error LEADING_HYPHEN;
-    enum_constant public static final android.icu.text.IDNA.Error PUNYCODE;
-    enum_constant public static final android.icu.text.IDNA.Error TRAILING_HYPHEN;
-  }
-
-  public static final class IDNA.Info {
-    ctor public IDNA.Info();
-    method public java.util.Set<android.icu.text.IDNA.Error> getErrors();
-    method public boolean hasErrors();
-    method public boolean isTransitionalDifferent();
-  }
-
-  public final class ListFormatter {
-    method public String format(java.lang.Object...);
-    method public String format(java.util.Collection<?>);
-    method public static android.icu.text.ListFormatter getInstance(android.icu.util.ULocale);
-    method public static android.icu.text.ListFormatter getInstance(java.util.Locale);
-    method public static android.icu.text.ListFormatter getInstance();
-    method public String getPatternForNumItems(int);
-  }
-
-  public abstract class LocaleDisplayNames {
-    method public abstract android.icu.text.DisplayContext getContext(android.icu.text.DisplayContext.Type);
-    method public abstract android.icu.text.LocaleDisplayNames.DialectHandling getDialectHandling();
-    method public static android.icu.text.LocaleDisplayNames getInstance(android.icu.util.ULocale);
-    method public static android.icu.text.LocaleDisplayNames getInstance(java.util.Locale);
-    method public static android.icu.text.LocaleDisplayNames getInstance(android.icu.util.ULocale, android.icu.text.LocaleDisplayNames.DialectHandling);
-    method public static android.icu.text.LocaleDisplayNames getInstance(android.icu.util.ULocale, android.icu.text.DisplayContext...);
-    method public static android.icu.text.LocaleDisplayNames getInstance(java.util.Locale, android.icu.text.DisplayContext...);
-    method public abstract android.icu.util.ULocale getLocale();
-    method public java.util.List<android.icu.text.LocaleDisplayNames.UiListItem> getUiList(java.util.Set<android.icu.util.ULocale>, boolean, java.util.Comparator<java.lang.Object>);
-    method public abstract java.util.List<android.icu.text.LocaleDisplayNames.UiListItem> getUiListCompareWholeItems(java.util.Set<android.icu.util.ULocale>, java.util.Comparator<android.icu.text.LocaleDisplayNames.UiListItem>);
-    method public abstract String keyDisplayName(String);
-    method public abstract String keyValueDisplayName(String, String);
-    method public abstract String languageDisplayName(String);
-    method public abstract String localeDisplayName(android.icu.util.ULocale);
-    method public abstract String localeDisplayName(java.util.Locale);
-    method public abstract String localeDisplayName(String);
-    method public abstract String regionDisplayName(String);
-    method public abstract String scriptDisplayName(String);
-    method public abstract String scriptDisplayName(int);
-    method public abstract String variantDisplayName(String);
-  }
-
-  public enum LocaleDisplayNames.DialectHandling {
-    enum_constant public static final android.icu.text.LocaleDisplayNames.DialectHandling DIALECT_NAMES;
-    enum_constant public static final android.icu.text.LocaleDisplayNames.DialectHandling STANDARD_NAMES;
-  }
-
-  public static class LocaleDisplayNames.UiListItem {
-    ctor public LocaleDisplayNames.UiListItem(android.icu.util.ULocale, android.icu.util.ULocale, String, String);
-    method public static java.util.Comparator<android.icu.text.LocaleDisplayNames.UiListItem> getComparator(java.util.Comparator<java.lang.Object>, boolean);
-    field public final android.icu.util.ULocale minimized;
-    field public final android.icu.util.ULocale modified;
-    field public final String nameInDisplayLocale;
-    field public final String nameInSelf;
-  }
-
-  public class MeasureFormat extends android.icu.text.UFormat {
-    method public final boolean equals(Object);
-    method public StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
-    method public StringBuilder formatMeasurePerUnit(android.icu.util.Measure, android.icu.util.MeasureUnit, StringBuilder, java.text.FieldPosition);
-    method public final String formatMeasures(android.icu.util.Measure...);
-    method public StringBuilder formatMeasures(StringBuilder, java.text.FieldPosition, android.icu.util.Measure...);
-    method public static android.icu.text.MeasureFormat getCurrencyFormat(android.icu.util.ULocale);
-    method public static android.icu.text.MeasureFormat getCurrencyFormat(java.util.Locale);
-    method public static android.icu.text.MeasureFormat getCurrencyFormat();
-    method public static android.icu.text.MeasureFormat getInstance(android.icu.util.ULocale, android.icu.text.MeasureFormat.FormatWidth);
-    method public static android.icu.text.MeasureFormat getInstance(java.util.Locale, android.icu.text.MeasureFormat.FormatWidth);
-    method public static android.icu.text.MeasureFormat getInstance(android.icu.util.ULocale, android.icu.text.MeasureFormat.FormatWidth, android.icu.text.NumberFormat);
-    method public static android.icu.text.MeasureFormat getInstance(java.util.Locale, android.icu.text.MeasureFormat.FormatWidth, android.icu.text.NumberFormat);
-    method public final android.icu.util.ULocale getLocale();
-    method public android.icu.text.NumberFormat getNumberFormat();
-    method public String getUnitDisplayName(android.icu.util.MeasureUnit);
-    method public android.icu.text.MeasureFormat.FormatWidth getWidth();
-    method public final int hashCode();
-    method public android.icu.util.Measure parseObject(String, java.text.ParsePosition);
-  }
-
-  public enum MeasureFormat.FormatWidth {
-    enum_constant public static final android.icu.text.MeasureFormat.FormatWidth NARROW;
-    enum_constant public static final android.icu.text.MeasureFormat.FormatWidth NUMERIC;
-    enum_constant public static final android.icu.text.MeasureFormat.FormatWidth SHORT;
-    enum_constant public static final android.icu.text.MeasureFormat.FormatWidth WIDE;
-  }
-
-  public class MessageFormat extends android.icu.text.UFormat {
-    ctor public MessageFormat(String);
-    ctor public MessageFormat(String, java.util.Locale);
-    ctor public MessageFormat(String, android.icu.util.ULocale);
-    method public void applyPattern(String);
-    method public void applyPattern(String, android.icu.text.MessagePattern.ApostropheMode);
-    method public static String autoQuoteApostrophe(String);
-    method public final StringBuffer format(Object[], StringBuffer, java.text.FieldPosition);
-    method public final StringBuffer format(java.util.Map<java.lang.String,java.lang.Object>, StringBuffer, java.text.FieldPosition);
-    method public static String format(String, java.lang.Object...);
-    method public static String format(String, java.util.Map<java.lang.String,java.lang.Object>);
-    method public final StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
-    method public android.icu.text.MessagePattern.ApostropheMode getApostropheMode();
-    method public java.util.Set<java.lang.String> getArgumentNames();
-    method public java.text.Format getFormatByArgumentName(String);
-    method public java.text.Format[] getFormats();
-    method public java.text.Format[] getFormatsByArgumentIndex();
-    method public java.util.Locale getLocale();
-    method public android.icu.util.ULocale getULocale();
-    method public Object[] parse(String, java.text.ParsePosition);
-    method public Object[] parse(String) throws java.text.ParseException;
-    method public Object parseObject(String, java.text.ParsePosition);
-    method public java.util.Map<java.lang.String,java.lang.Object> parseToMap(String, java.text.ParsePosition);
-    method public java.util.Map<java.lang.String,java.lang.Object> parseToMap(String) throws java.text.ParseException;
-    method public void setFormat(int, java.text.Format);
-    method public void setFormatByArgumentIndex(int, java.text.Format);
-    method public void setFormatByArgumentName(String, java.text.Format);
-    method public void setFormats(java.text.Format[]);
-    method public void setFormatsByArgumentIndex(java.text.Format[]);
-    method public void setFormatsByArgumentName(java.util.Map<java.lang.String,java.text.Format>);
-    method public void setLocale(java.util.Locale);
-    method public void setLocale(android.icu.util.ULocale);
-    method public String toPattern();
-    method public boolean usesNamedArguments();
-  }
-
-  public static class MessageFormat.Field extends java.text.Format.Field {
-    ctor protected MessageFormat.Field(String);
-    field public static final android.icu.text.MessageFormat.Field ARGUMENT;
-  }
-
-  public final class MessagePattern implements java.lang.Cloneable android.icu.util.Freezable<android.icu.text.MessagePattern> {
-    ctor public MessagePattern();
-    ctor public MessagePattern(android.icu.text.MessagePattern.ApostropheMode);
-    ctor public MessagePattern(String);
-    method public String autoQuoteApostropheDeep();
-    method public void clear();
-    method public void clearPatternAndSetApostropheMode(android.icu.text.MessagePattern.ApostropheMode);
-    method public Object clone();
-    method public android.icu.text.MessagePattern cloneAsThawed();
-    method public int countParts();
-    method public android.icu.text.MessagePattern freeze();
-    method public android.icu.text.MessagePattern.ApostropheMode getApostropheMode();
-    method public int getLimitPartIndex(int);
-    method public double getNumericValue(android.icu.text.MessagePattern.Part);
-    method public android.icu.text.MessagePattern.Part getPart(int);
-    method public android.icu.text.MessagePattern.Part.Type getPartType(int);
-    method public int getPatternIndex(int);
-    method public String getPatternString();
-    method public double getPluralOffset(int);
-    method public String getSubstring(android.icu.text.MessagePattern.Part);
-    method public boolean hasNamedArguments();
-    method public boolean hasNumberedArguments();
-    method public boolean isFrozen();
-    method public android.icu.text.MessagePattern parse(String);
-    method public android.icu.text.MessagePattern parseChoiceStyle(String);
-    method public android.icu.text.MessagePattern parsePluralStyle(String);
-    method public android.icu.text.MessagePattern parseSelectStyle(String);
-    method public boolean partSubstringMatches(android.icu.text.MessagePattern.Part, String);
-    method public static int validateArgumentName(String);
-    field public static final int ARG_NAME_NOT_NUMBER = -1; // 0xffffffff
-    field public static final int ARG_NAME_NOT_VALID = -2; // 0xfffffffe
-    field public static final double NO_NUMERIC_VALUE = -1.23456789E8;
-  }
-
-  public enum MessagePattern.ApostropheMode {
-    enum_constant public static final android.icu.text.MessagePattern.ApostropheMode DOUBLE_OPTIONAL;
-    enum_constant public static final android.icu.text.MessagePattern.ApostropheMode DOUBLE_REQUIRED;
-  }
-
-  public enum MessagePattern.ArgType {
-    method public boolean hasPluralStyle();
-    enum_constant public static final android.icu.text.MessagePattern.ArgType CHOICE;
-    enum_constant public static final android.icu.text.MessagePattern.ArgType NONE;
-    enum_constant public static final android.icu.text.MessagePattern.ArgType PLURAL;
-    enum_constant public static final android.icu.text.MessagePattern.ArgType SELECT;
-    enum_constant public static final android.icu.text.MessagePattern.ArgType SELECTORDINAL;
-    enum_constant public static final android.icu.text.MessagePattern.ArgType SIMPLE;
-  }
-
-  public static final class MessagePattern.Part {
-    method public android.icu.text.MessagePattern.ArgType getArgType();
-    method public int getIndex();
-    method public int getLength();
-    method public int getLimit();
-    method public android.icu.text.MessagePattern.Part.Type getType();
-    method public int getValue();
-  }
-
-  public enum MessagePattern.Part.Type {
-    method public boolean hasNumericValue();
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_DOUBLE;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_INT;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_LIMIT;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_NAME;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_NUMBER;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_SELECTOR;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_START;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_STYLE;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_TYPE;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type INSERT_CHAR;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type MSG_LIMIT;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type MSG_START;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type REPLACE_NUMBER;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type SKIP_SYNTAX;
-  }
-
-  public final class Normalizer implements java.lang.Cloneable {
-    method @Deprecated public Object clone();
-    method public static int compare(char[], int, int, char[], int, int, int);
-    method public static int compare(String, String, int);
-    method public static int compare(char[], char[], int);
-    method public static int compare(int, int, int);
-    method public static int compare(int, String, int);
-    field public static final int COMPARE_CODE_POINT_ORDER = 32768; // 0x8000
-    field public static final int COMPARE_IGNORE_CASE = 65536; // 0x10000
-    field public static final int FOLD_CASE_DEFAULT = 0; // 0x0
-    field public static final int FOLD_CASE_EXCLUDE_SPECIAL_I = 1; // 0x1
-    field public static final int INPUT_IS_FCD = 131072; // 0x20000
-    field public static final android.icu.text.Normalizer.QuickCheckResult MAYBE;
-    field public static final android.icu.text.Normalizer.QuickCheckResult NO;
-    field public static final android.icu.text.Normalizer.QuickCheckResult YES;
-  }
-
-  public static final class Normalizer.QuickCheckResult {
-  }
-
-  public abstract class Normalizer2 {
-    method public abstract StringBuilder append(StringBuilder, CharSequence);
-    method public int composePair(int, int);
-    method public int getCombiningClass(int);
-    method public abstract String getDecomposition(int);
-    method public static android.icu.text.Normalizer2 getInstance(java.io.InputStream, String, android.icu.text.Normalizer2.Mode);
-    method public static android.icu.text.Normalizer2 getNFCInstance();
-    method public static android.icu.text.Normalizer2 getNFDInstance();
-    method public static android.icu.text.Normalizer2 getNFKCCasefoldInstance();
-    method public static android.icu.text.Normalizer2 getNFKCInstance();
-    method public static android.icu.text.Normalizer2 getNFKDInstance();
-    method public String getRawDecomposition(int);
-    method public abstract boolean hasBoundaryAfter(int);
-    method public abstract boolean hasBoundaryBefore(int);
-    method public abstract boolean isInert(int);
-    method public abstract boolean isNormalized(CharSequence);
-    method public String normalize(CharSequence);
-    method public abstract StringBuilder normalize(CharSequence, StringBuilder);
-    method public abstract Appendable normalize(CharSequence, Appendable);
-    method public abstract StringBuilder normalizeSecondAndAppend(StringBuilder, CharSequence);
-    method public abstract android.icu.text.Normalizer.QuickCheckResult quickCheck(CharSequence);
-    method public abstract int spanQuickCheckYes(CharSequence);
-  }
-
-  public enum Normalizer2.Mode {
-    enum_constant public static final android.icu.text.Normalizer2.Mode COMPOSE;
-    enum_constant public static final android.icu.text.Normalizer2.Mode COMPOSE_CONTIGUOUS;
-    enum_constant public static final android.icu.text.Normalizer2.Mode DECOMPOSE;
-    enum_constant public static final android.icu.text.Normalizer2.Mode FCD;
-  }
-
-  public abstract class NumberFormat extends android.icu.text.UFormat {
-    ctor public NumberFormat();
-    method public StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
-    method public final String format(double);
-    method public final String format(long);
-    method public final String format(java.math.BigInteger);
-    method public final String format(java.math.BigDecimal);
-    method public final String format(android.icu.math.BigDecimal);
-    method public final String format(android.icu.util.CurrencyAmount);
-    method public abstract StringBuffer format(double, StringBuffer, java.text.FieldPosition);
-    method public abstract StringBuffer format(long, StringBuffer, java.text.FieldPosition);
-    method public abstract StringBuffer format(java.math.BigInteger, StringBuffer, java.text.FieldPosition);
-    method public abstract StringBuffer format(java.math.BigDecimal, StringBuffer, java.text.FieldPosition);
-    method public abstract StringBuffer format(android.icu.math.BigDecimal, StringBuffer, java.text.FieldPosition);
-    method public StringBuffer format(android.icu.util.CurrencyAmount, StringBuffer, java.text.FieldPosition);
-    method public static java.util.Locale[] getAvailableLocales();
-    method public android.icu.text.DisplayContext getContext(android.icu.text.DisplayContext.Type);
-    method public android.icu.util.Currency getCurrency();
-    method public static final android.icu.text.NumberFormat getCurrencyInstance();
-    method public static android.icu.text.NumberFormat getCurrencyInstance(java.util.Locale);
-    method public static android.icu.text.NumberFormat getCurrencyInstance(android.icu.util.ULocale);
-    method public static final android.icu.text.NumberFormat getInstance();
-    method public static android.icu.text.NumberFormat getInstance(java.util.Locale);
-    method public static android.icu.text.NumberFormat getInstance(android.icu.util.ULocale);
-    method public static final android.icu.text.NumberFormat getInstance(int);
-    method public static android.icu.text.NumberFormat getInstance(java.util.Locale, int);
-    method public static android.icu.text.NumberFormat getInstance(android.icu.util.ULocale, int);
-    method public static final android.icu.text.NumberFormat getIntegerInstance();
-    method public static android.icu.text.NumberFormat getIntegerInstance(java.util.Locale);
-    method public static android.icu.text.NumberFormat getIntegerInstance(android.icu.util.ULocale);
-    method public int getMaximumFractionDigits();
-    method public int getMaximumIntegerDigits();
-    method public int getMinimumFractionDigits();
-    method public int getMinimumIntegerDigits();
-    method public static final android.icu.text.NumberFormat getNumberInstance();
-    method public static android.icu.text.NumberFormat getNumberInstance(java.util.Locale);
-    method public static android.icu.text.NumberFormat getNumberInstance(android.icu.util.ULocale);
-    method protected static String getPattern(android.icu.util.ULocale, int);
-    method public static final android.icu.text.NumberFormat getPercentInstance();
-    method public static android.icu.text.NumberFormat getPercentInstance(java.util.Locale);
-    method public static android.icu.text.NumberFormat getPercentInstance(android.icu.util.ULocale);
-    method public int getRoundingMode();
-    method public static final android.icu.text.NumberFormat getScientificInstance();
-    method public static android.icu.text.NumberFormat getScientificInstance(java.util.Locale);
-    method public static android.icu.text.NumberFormat getScientificInstance(android.icu.util.ULocale);
-    method public boolean isGroupingUsed();
-    method public boolean isParseIntegerOnly();
-    method public boolean isParseStrict();
-    method public abstract Number parse(String, java.text.ParsePosition);
-    method public Number parse(String) throws java.text.ParseException;
-    method public android.icu.util.CurrencyAmount parseCurrency(CharSequence, java.text.ParsePosition);
-    method public final Object parseObject(String, java.text.ParsePosition);
-    method public void setContext(android.icu.text.DisplayContext);
-    method public void setCurrency(android.icu.util.Currency);
-    method public void setGroupingUsed(boolean);
-    method public void setMaximumFractionDigits(int);
-    method public void setMaximumIntegerDigits(int);
-    method public void setMinimumFractionDigits(int);
-    method public void setMinimumIntegerDigits(int);
-    method public void setParseIntegerOnly(boolean);
-    method public void setParseStrict(boolean);
-    method public void setRoundingMode(int);
-    field public static final int ACCOUNTINGCURRENCYSTYLE = 7; // 0x7
-    field public static final int CASHCURRENCYSTYLE = 8; // 0x8
-    field public static final int CURRENCYSTYLE = 1; // 0x1
-    field public static final int FRACTION_FIELD = 1; // 0x1
-    field public static final int INTEGERSTYLE = 4; // 0x4
-    field public static final int INTEGER_FIELD = 0; // 0x0
-    field public static final int ISOCURRENCYSTYLE = 5; // 0x5
-    field public static final int NUMBERSTYLE = 0; // 0x0
-    field public static final int PERCENTSTYLE = 2; // 0x2
-    field public static final int PLURALCURRENCYSTYLE = 6; // 0x6
-    field public static final int SCIENTIFICSTYLE = 3; // 0x3
-    field public static final int STANDARDCURRENCYSTYLE = 9; // 0x9
-  }
-
-  public static class NumberFormat.Field extends java.text.Format.Field {
-    ctor protected NumberFormat.Field(String);
-    field public static final android.icu.text.NumberFormat.Field CURRENCY;
-    field public static final android.icu.text.NumberFormat.Field DECIMAL_SEPARATOR;
-    field public static final android.icu.text.NumberFormat.Field EXPONENT;
-    field public static final android.icu.text.NumberFormat.Field EXPONENT_SIGN;
-    field public static final android.icu.text.NumberFormat.Field EXPONENT_SYMBOL;
-    field public static final android.icu.text.NumberFormat.Field FRACTION;
-    field public static final android.icu.text.NumberFormat.Field GROUPING_SEPARATOR;
-    field public static final android.icu.text.NumberFormat.Field INTEGER;
-    field public static final android.icu.text.NumberFormat.Field PERCENT;
-    field public static final android.icu.text.NumberFormat.Field PERMILLE;
-    field public static final android.icu.text.NumberFormat.Field SIGN;
-  }
-
-  public class NumberingSystem {
-    ctor public NumberingSystem();
-    method public static String[] getAvailableNames();
-    method public String getDescription();
-    method public static android.icu.text.NumberingSystem getInstance(int, boolean, String);
-    method public static android.icu.text.NumberingSystem getInstance(java.util.Locale);
-    method public static android.icu.text.NumberingSystem getInstance(android.icu.util.ULocale);
-    method public static android.icu.text.NumberingSystem getInstance();
-    method public static android.icu.text.NumberingSystem getInstanceByName(String);
-    method public String getName();
-    method public int getRadix();
-    method public boolean isAlgorithmic();
-    method public static boolean isValidDigitString(String);
-    field public static final android.icu.text.NumberingSystem LATIN;
-  }
-
-  public class PluralFormat extends android.icu.text.UFormat {
-    ctor public PluralFormat();
-    ctor public PluralFormat(android.icu.util.ULocale);
-    ctor public PluralFormat(java.util.Locale);
-    ctor public PluralFormat(android.icu.text.PluralRules);
-    ctor public PluralFormat(android.icu.util.ULocale, android.icu.text.PluralRules);
-    ctor public PluralFormat(java.util.Locale, android.icu.text.PluralRules);
-    ctor public PluralFormat(android.icu.util.ULocale, android.icu.text.PluralRules.PluralType);
-    ctor public PluralFormat(java.util.Locale, android.icu.text.PluralRules.PluralType);
-    ctor public PluralFormat(String);
-    ctor public PluralFormat(android.icu.util.ULocale, String);
-    ctor public PluralFormat(android.icu.text.PluralRules, String);
-    ctor public PluralFormat(android.icu.util.ULocale, android.icu.text.PluralRules, String);
-    ctor public PluralFormat(android.icu.util.ULocale, android.icu.text.PluralRules.PluralType, String);
-    method public void applyPattern(String);
-    method public boolean equals(android.icu.text.PluralFormat);
-    method public final String format(double);
-    method public StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
-    method public Number parse(String, java.text.ParsePosition);
-    method public Object parseObject(String, java.text.ParsePosition);
-    method public void setNumberFormat(android.icu.text.NumberFormat);
-    method public String toPattern();
-  }
-
-  public class PluralRules implements java.io.Serializable {
-    method public static android.icu.text.PluralRules createRules(String);
-    method public boolean equals(android.icu.text.PluralRules);
-    method public static android.icu.text.PluralRules forLocale(android.icu.util.ULocale);
-    method public static android.icu.text.PluralRules forLocale(java.util.Locale);
-    method public static android.icu.text.PluralRules forLocale(android.icu.util.ULocale, android.icu.text.PluralRules.PluralType);
-    method public static android.icu.text.PluralRules forLocale(java.util.Locale, android.icu.text.PluralRules.PluralType);
-    method public java.util.Collection<java.lang.Double> getAllKeywordValues(String);
-    method public java.util.Set<java.lang.String> getKeywords();
-    method public java.util.Collection<java.lang.Double> getSamples(String);
-    method public double getUniqueKeywordValue(String);
-    method public static android.icu.text.PluralRules parseDescription(String) throws java.text.ParseException;
-    method public String select(double);
-    field public static final android.icu.text.PluralRules DEFAULT;
-    field public static final String KEYWORD_FEW = "few";
-    field public static final String KEYWORD_MANY = "many";
-    field public static final String KEYWORD_ONE = "one";
-    field public static final String KEYWORD_OTHER = "other";
-    field public static final String KEYWORD_TWO = "two";
-    field public static final String KEYWORD_ZERO = "zero";
-    field public static final double NO_UNIQUE_VALUE = -0.00123456777;
-  }
-
-  public enum PluralRules.PluralType {
-    enum_constant public static final android.icu.text.PluralRules.PluralType CARDINAL;
-    enum_constant public static final android.icu.text.PluralRules.PluralType ORDINAL;
-  }
-
-  public final class RelativeDateTimeFormatter {
-    method public String combineDateAndTime(String, String);
-    method public String format(double, android.icu.text.RelativeDateTimeFormatter.Direction, android.icu.text.RelativeDateTimeFormatter.RelativeUnit);
-    method public String format(android.icu.text.RelativeDateTimeFormatter.Direction, android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit);
-    method public String format(double, android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit);
-    method public String formatNumeric(double, android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit);
-    method public android.icu.text.DisplayContext getCapitalizationContext();
-    method public android.icu.text.RelativeDateTimeFormatter.Style getFormatStyle();
-    method public static android.icu.text.RelativeDateTimeFormatter getInstance();
-    method public static android.icu.text.RelativeDateTimeFormatter getInstance(android.icu.util.ULocale);
-    method public static android.icu.text.RelativeDateTimeFormatter getInstance(java.util.Locale);
-    method public static android.icu.text.RelativeDateTimeFormatter getInstance(android.icu.util.ULocale, android.icu.text.NumberFormat);
-    method public static android.icu.text.RelativeDateTimeFormatter getInstance(android.icu.util.ULocale, android.icu.text.NumberFormat, android.icu.text.RelativeDateTimeFormatter.Style, android.icu.text.DisplayContext);
-    method public static android.icu.text.RelativeDateTimeFormatter getInstance(java.util.Locale, android.icu.text.NumberFormat);
-    method public android.icu.text.NumberFormat getNumberFormat();
-  }
-
-  public enum RelativeDateTimeFormatter.AbsoluteUnit {
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit DAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit FRIDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit MONDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit MONTH;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit NOW;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit SATURDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit SUNDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit THURSDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit TUESDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit WEDNESDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit WEEK;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit YEAR;
-  }
-
-  public enum RelativeDateTimeFormatter.Direction {
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Direction LAST;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Direction LAST_2;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Direction NEXT;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Direction NEXT_2;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Direction PLAIN;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Direction THIS;
-  }
-
-  public enum RelativeDateTimeFormatter.RelativeDateTimeUnit {
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit DAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit FRIDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit HOUR;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit MINUTE;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit MONDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit MONTH;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit QUARTER;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit SATURDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit SECOND;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit SUNDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit THURSDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit TUESDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit WEDNESDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit WEEK;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit YEAR;
-  }
-
-  public enum RelativeDateTimeFormatter.RelativeUnit {
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit DAYS;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit HOURS;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit MINUTES;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit MONTHS;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit SECONDS;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit WEEKS;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit YEARS;
-  }
-
-  public enum RelativeDateTimeFormatter.Style {
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Style LONG;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Style NARROW;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Style SHORT;
-  }
-
-  public interface Replaceable {
-    method public int char32At(int);
-    method public char charAt(int);
-    method public void copy(int, int, int);
-    method public void getChars(int, int, char[], int);
-    method public boolean hasMetaData();
-    method public int length();
-    method public void replace(int, int, String);
-    method public void replace(int, int, char[], int, int);
-  }
-
-  public final class RuleBasedCollator extends android.icu.text.Collator {
-    ctor public RuleBasedCollator(String) throws java.lang.Exception;
-    method public android.icu.text.RuleBasedCollator cloneAsThawed();
-    method public int compare(String, String);
-    method public android.icu.text.CollationElementIterator getCollationElementIterator(String);
-    method public android.icu.text.CollationElementIterator getCollationElementIterator(java.text.CharacterIterator);
-    method public android.icu.text.CollationElementIterator getCollationElementIterator(android.icu.text.UCharacterIterator);
-    method public android.icu.text.CollationKey getCollationKey(String);
-    method public void getContractionsAndExpansions(android.icu.text.UnicodeSet, android.icu.text.UnicodeSet, boolean) throws java.lang.Exception;
-    method public boolean getNumericCollation();
-    method public String getRules();
-    method public String getRules(boolean);
-    method public android.icu.util.VersionInfo getUCAVersion();
-    method public int getVariableTop();
-    method public android.icu.util.VersionInfo getVersion();
-    method public boolean isAlternateHandlingShifted();
-    method public boolean isCaseLevel();
-    method public boolean isFrenchCollation();
-    method public boolean isLowerCaseFirst();
-    method public boolean isUpperCaseFirst();
-    method public void setAlternateHandlingDefault();
-    method public void setAlternateHandlingShifted(boolean);
-    method public void setCaseFirstDefault();
-    method public void setCaseLevel(boolean);
-    method public void setCaseLevelDefault();
-    method public void setDecompositionDefault();
-    method public void setFrenchCollation(boolean);
-    method public void setFrenchCollationDefault();
-    method public void setLowerCaseFirst(boolean);
-    method public android.icu.text.RuleBasedCollator setMaxVariable(int);
-    method public void setNumericCollation(boolean);
-    method public void setNumericCollationDefault();
-    method public void setStrengthDefault();
-    method public void setUpperCaseFirst(boolean);
-  }
-
-  public final class ScientificNumberFormatter {
-    method public String format(Object);
-    method public static android.icu.text.ScientificNumberFormatter getMarkupInstance(android.icu.util.ULocale, String, String);
-    method public static android.icu.text.ScientificNumberFormatter getMarkupInstance(android.icu.text.DecimalFormat, String, String);
-    method public static android.icu.text.ScientificNumberFormatter getSuperscriptInstance(android.icu.util.ULocale);
-    method public static android.icu.text.ScientificNumberFormatter getSuperscriptInstance(android.icu.text.DecimalFormat);
-  }
-
-  public abstract class SearchIterator {
-    ctor protected SearchIterator(java.text.CharacterIterator, android.icu.text.BreakIterator);
-    method public final int first();
-    method public final int following(int);
-    method public android.icu.text.BreakIterator getBreakIterator();
-    method public android.icu.text.SearchIterator.ElementComparisonType getElementComparisonType();
-    method public abstract int getIndex();
-    method public int getMatchLength();
-    method public int getMatchStart();
-    method public String getMatchedText();
-    method public java.text.CharacterIterator getTarget();
-    method protected abstract int handleNext(int);
-    method protected abstract int handlePrevious(int);
-    method public boolean isOverlapping();
-    method public final int last();
-    method public int next();
-    method public final int preceding(int);
-    method public int previous();
-    method public void reset();
-    method public void setBreakIterator(android.icu.text.BreakIterator);
-    method public void setElementComparisonType(android.icu.text.SearchIterator.ElementComparisonType);
-    method public void setIndex(int);
-    method protected void setMatchLength(int);
-    method public void setOverlapping(boolean);
-    method public void setTarget(java.text.CharacterIterator);
-    field public static final int DONE = -1; // 0xffffffff
-    field protected android.icu.text.BreakIterator breakIterator;
-    field protected int matchLength;
-    field protected java.text.CharacterIterator targetText;
-  }
-
-  public enum SearchIterator.ElementComparisonType {
-    enum_constant public static final android.icu.text.SearchIterator.ElementComparisonType ANY_BASE_WEIGHT_IS_WILDCARD;
-    enum_constant public static final android.icu.text.SearchIterator.ElementComparisonType PATTERN_BASE_WEIGHT_IS_WILDCARD;
-    enum_constant public static final android.icu.text.SearchIterator.ElementComparisonType STANDARD_ELEMENT_COMPARISON;
-  }
-
-  public class SelectFormat extends java.text.Format {
-    ctor public SelectFormat(String);
-    method public void applyPattern(String);
-    method public final String format(String);
-    method public StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
-    method public Object parseObject(String, java.text.ParsePosition);
-    method public String toPattern();
-  }
-
-  public class SimpleDateFormat extends android.icu.text.DateFormat {
-    ctor public SimpleDateFormat();
-    ctor public SimpleDateFormat(String);
-    ctor public SimpleDateFormat(String, java.util.Locale);
-    ctor public SimpleDateFormat(String, android.icu.util.ULocale);
-    ctor public SimpleDateFormat(String, String, android.icu.util.ULocale);
-    ctor public SimpleDateFormat(String, android.icu.text.DateFormatSymbols);
-    method public void applyLocalizedPattern(String);
-    method public void applyPattern(String);
-    method public StringBuffer format(android.icu.util.Calendar, StringBuffer, java.text.FieldPosition);
-    method public java.util.Date get2DigitYearStart();
-    method public android.icu.text.DateFormatSymbols getDateFormatSymbols();
-    method public android.icu.text.NumberFormat getNumberFormat(char);
-    method protected android.icu.text.DateFormatSymbols getSymbols();
-    method public android.icu.text.TimeZoneFormat getTimeZoneFormat();
-    method protected int matchQuarterString(String, int, int, String[], android.icu.util.Calendar);
-    method protected int matchString(String, int, int, String[], android.icu.util.Calendar);
-    method public void parse(String, android.icu.util.Calendar, java.text.ParsePosition);
-    method protected android.icu.text.DateFormat.Field patternCharToDateFormatField(char);
-    method public void set2DigitYearStart(java.util.Date);
-    method public void setDateFormatSymbols(android.icu.text.DateFormatSymbols);
-    method public void setNumberFormat(String, android.icu.text.NumberFormat);
-    method public void setTimeZoneFormat(android.icu.text.TimeZoneFormat);
-    method protected String subFormat(char, int, int, java.text.FieldPosition, android.icu.text.DateFormatSymbols, android.icu.util.Calendar) throws java.lang.IllegalArgumentException;
-    method protected int subParse(String, int, char, int, boolean, boolean, boolean[], android.icu.util.Calendar);
-    method public String toLocalizedPattern();
-    method public String toPattern();
-    method protected String zeroPaddingNumber(long, int, int);
-  }
-
-  public class StringPrepParseException extends java.text.ParseException {
-    ctor public StringPrepParseException(String, int);
-    ctor public StringPrepParseException(String, int, String, int);
-    ctor public StringPrepParseException(String, int, String, int, int);
-    method public int getError();
-    field public static final int ACE_PREFIX_ERROR = 6; // 0x6
-    field public static final int BUFFER_OVERFLOW_ERROR = 9; // 0x9
-    field public static final int CHECK_BIDI_ERROR = 4; // 0x4
-    field public static final int DOMAIN_NAME_TOO_LONG_ERROR = 11; // 0xb
-    field public static final int ILLEGAL_CHAR_FOUND = 1; // 0x1
-    field public static final int INVALID_CHAR_FOUND = 0; // 0x0
-    field public static final int LABEL_TOO_LONG_ERROR = 8; // 0x8
-    field public static final int PROHIBITED_ERROR = 2; // 0x2
-    field public static final int STD3_ASCII_RULES_ERROR = 5; // 0x5
-    field public static final int UNASSIGNED_ERROR = 3; // 0x3
-    field public static final int VERIFICATION_ERROR = 7; // 0x7
-    field public static final int ZERO_LENGTH_LABEL = 10; // 0xa
-  }
-
-  public final class StringSearch extends android.icu.text.SearchIterator {
-    ctor public StringSearch(String, java.text.CharacterIterator, android.icu.text.RuleBasedCollator, android.icu.text.BreakIterator);
-    ctor public StringSearch(String, java.text.CharacterIterator, android.icu.text.RuleBasedCollator);
-    ctor public StringSearch(String, java.text.CharacterIterator, java.util.Locale);
-    ctor public StringSearch(String, java.text.CharacterIterator, android.icu.util.ULocale);
-    ctor public StringSearch(String, String);
-    method public android.icu.text.RuleBasedCollator getCollator();
-    method public int getIndex();
-    method public String getPattern();
-    method protected int handleNext(int);
-    method protected int handlePrevious(int);
-    method public boolean isCanonical();
-    method public void setCanonical(boolean);
-    method public void setCollator(android.icu.text.RuleBasedCollator);
-    method public void setPattern(String);
-  }
-
-  public interface SymbolTable {
-    method public char[] lookup(String);
-    method public android.icu.text.UnicodeMatcher lookupMatcher(int);
-    method public String parseReference(String, java.text.ParsePosition, int);
-    field public static final char SYMBOL_REF = 36; // 0x0024 '$'
-  }
-
-  public class TimeZoneFormat extends android.icu.text.UFormat implements android.icu.util.Freezable<android.icu.text.TimeZoneFormat> java.io.Serializable {
-    ctor protected TimeZoneFormat(android.icu.util.ULocale);
-    method public android.icu.text.TimeZoneFormat cloneAsThawed();
-    method public final String format(android.icu.text.TimeZoneFormat.Style, android.icu.util.TimeZone, long);
-    method public String format(android.icu.text.TimeZoneFormat.Style, android.icu.util.TimeZone, long, android.icu.util.Output<android.icu.text.TimeZoneFormat.TimeType>);
-    method public StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
-    method public final String formatOffsetISO8601Basic(int, boolean, boolean, boolean);
-    method public final String formatOffsetISO8601Extended(int, boolean, boolean, boolean);
-    method public String formatOffsetLocalizedGMT(int);
-    method public String formatOffsetShortLocalizedGMT(int);
-    method public android.icu.text.TimeZoneFormat freeze();
-    method public java.util.EnumSet<android.icu.text.TimeZoneFormat.ParseOption> getDefaultParseOptions();
-    method public String getGMTOffsetDigits();
-    method public String getGMTOffsetPattern(android.icu.text.TimeZoneFormat.GMTOffsetPatternType);
-    method public String getGMTPattern();
-    method public String getGMTZeroFormat();
-    method public static android.icu.text.TimeZoneFormat getInstance(android.icu.util.ULocale);
-    method public static android.icu.text.TimeZoneFormat getInstance(java.util.Locale);
-    method public android.icu.text.TimeZoneNames getTimeZoneNames();
-    method public boolean isFrozen();
-    method public android.icu.util.TimeZone parse(android.icu.text.TimeZoneFormat.Style, String, java.text.ParsePosition, java.util.EnumSet<android.icu.text.TimeZoneFormat.ParseOption>, android.icu.util.Output<android.icu.text.TimeZoneFormat.TimeType>);
-    method public android.icu.util.TimeZone parse(android.icu.text.TimeZoneFormat.Style, String, java.text.ParsePosition, android.icu.util.Output<android.icu.text.TimeZoneFormat.TimeType>);
-    method public final android.icu.util.TimeZone parse(String, java.text.ParsePosition);
-    method public final android.icu.util.TimeZone parse(String) throws java.text.ParseException;
-    method public Object parseObject(String, java.text.ParsePosition);
-    method public final int parseOffsetISO8601(String, java.text.ParsePosition);
-    method public int parseOffsetLocalizedGMT(String, java.text.ParsePosition);
-    method public int parseOffsetShortLocalizedGMT(String, java.text.ParsePosition);
-    method public android.icu.text.TimeZoneFormat setDefaultParseOptions(java.util.EnumSet<android.icu.text.TimeZoneFormat.ParseOption>);
-    method public android.icu.text.TimeZoneFormat setGMTOffsetDigits(String);
-    method public android.icu.text.TimeZoneFormat setGMTOffsetPattern(android.icu.text.TimeZoneFormat.GMTOffsetPatternType, String);
-    method public android.icu.text.TimeZoneFormat setGMTPattern(String);
-    method public android.icu.text.TimeZoneFormat setGMTZeroFormat(String);
-    method public android.icu.text.TimeZoneFormat setTimeZoneNames(android.icu.text.TimeZoneNames);
-  }
-
-  public enum TimeZoneFormat.GMTOffsetPatternType {
-    enum_constant public static final android.icu.text.TimeZoneFormat.GMTOffsetPatternType NEGATIVE_H;
-    enum_constant public static final android.icu.text.TimeZoneFormat.GMTOffsetPatternType NEGATIVE_HM;
-    enum_constant public static final android.icu.text.TimeZoneFormat.GMTOffsetPatternType NEGATIVE_HMS;
-    enum_constant public static final android.icu.text.TimeZoneFormat.GMTOffsetPatternType POSITIVE_H;
-    enum_constant public static final android.icu.text.TimeZoneFormat.GMTOffsetPatternType POSITIVE_HM;
-    enum_constant public static final android.icu.text.TimeZoneFormat.GMTOffsetPatternType POSITIVE_HMS;
-  }
-
-  public enum TimeZoneFormat.ParseOption {
-    enum_constant public static final android.icu.text.TimeZoneFormat.ParseOption ALL_STYLES;
-    enum_constant public static final android.icu.text.TimeZoneFormat.ParseOption TZ_DATABASE_ABBREVIATIONS;
-  }
-
-  public enum TimeZoneFormat.Style {
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style EXEMPLAR_LOCATION;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style GENERIC_LOCATION;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style GENERIC_LONG;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style GENERIC_SHORT;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_BASIC_FIXED;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_BASIC_FULL;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_BASIC_LOCAL_FIXED;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_BASIC_LOCAL_FULL;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_BASIC_LOCAL_SHORT;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_BASIC_SHORT;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_EXTENDED_FIXED;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_EXTENDED_FULL;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_EXTENDED_LOCAL_FIXED;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_EXTENDED_LOCAL_FULL;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style LOCALIZED_GMT;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style LOCALIZED_GMT_SHORT;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style SPECIFIC_LONG;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style SPECIFIC_SHORT;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style ZONE_ID;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style ZONE_ID_SHORT;
-  }
-
-  public enum TimeZoneFormat.TimeType {
-    enum_constant public static final android.icu.text.TimeZoneFormat.TimeType DAYLIGHT;
-    enum_constant public static final android.icu.text.TimeZoneFormat.TimeType STANDARD;
-    enum_constant public static final android.icu.text.TimeZoneFormat.TimeType UNKNOWN;
-  }
-
-  public abstract class TimeZoneNames implements java.io.Serializable {
-    method public abstract java.util.Set<java.lang.String> getAvailableMetaZoneIDs();
-    method public abstract java.util.Set<java.lang.String> getAvailableMetaZoneIDs(String);
-    method public final String getDisplayName(String, android.icu.text.TimeZoneNames.NameType, long);
-    method public String getExemplarLocationName(String);
-    method public static android.icu.text.TimeZoneNames getInstance(android.icu.util.ULocale);
-    method public static android.icu.text.TimeZoneNames getInstance(java.util.Locale);
-    method public abstract String getMetaZoneDisplayName(String, android.icu.text.TimeZoneNames.NameType);
-    method public abstract String getMetaZoneID(String, long);
-    method public abstract String getReferenceZoneID(String, String);
-    method public static android.icu.text.TimeZoneNames getTZDBInstance(android.icu.util.ULocale);
-    method public abstract String getTimeZoneDisplayName(String, android.icu.text.TimeZoneNames.NameType);
-  }
-
-  public enum TimeZoneNames.NameType {
-    enum_constant public static final android.icu.text.TimeZoneNames.NameType EXEMPLAR_LOCATION;
-    enum_constant public static final android.icu.text.TimeZoneNames.NameType LONG_DAYLIGHT;
-    enum_constant public static final android.icu.text.TimeZoneNames.NameType LONG_GENERIC;
-    enum_constant public static final android.icu.text.TimeZoneNames.NameType LONG_STANDARD;
-    enum_constant public static final android.icu.text.TimeZoneNames.NameType SHORT_DAYLIGHT;
-    enum_constant public static final android.icu.text.TimeZoneNames.NameType SHORT_GENERIC;
-    enum_constant public static final android.icu.text.TimeZoneNames.NameType SHORT_STANDARD;
-  }
-
-  public abstract class Transliterator {
-    method public static final android.icu.text.Transliterator createFromRules(String, String, int);
-    method public void filteredTransliterate(android.icu.text.Replaceable, android.icu.text.Transliterator.Position, boolean);
-    method public final void finishTransliteration(android.icu.text.Replaceable, android.icu.text.Transliterator.Position);
-    method public static final java.util.Enumeration<java.lang.String> getAvailableIDs();
-    method public static final java.util.Enumeration<java.lang.String> getAvailableSources();
-    method public static final java.util.Enumeration<java.lang.String> getAvailableTargets(String);
-    method public static final java.util.Enumeration<java.lang.String> getAvailableVariants(String, String);
-    method public static final String getDisplayName(String);
-    method public static String getDisplayName(String, java.util.Locale);
-    method public static String getDisplayName(String, android.icu.util.ULocale);
-    method public android.icu.text.Transliterator[] getElements();
-    method public final android.icu.text.UnicodeFilter getFilter();
-    method public final String getID();
-    method public static final android.icu.text.Transliterator getInstance(String);
-    method public static android.icu.text.Transliterator getInstance(String, int);
-    method public final android.icu.text.Transliterator getInverse();
-    method public final int getMaximumContextLength();
-    method public final android.icu.text.UnicodeSet getSourceSet();
-    method public android.icu.text.UnicodeSet getTargetSet();
-    method public void setFilter(android.icu.text.UnicodeFilter);
-    method public String toRules(boolean);
-    method public final int transliterate(android.icu.text.Replaceable, int, int);
-    method public final void transliterate(android.icu.text.Replaceable);
-    method public final String transliterate(String);
-    method public final void transliterate(android.icu.text.Replaceable, android.icu.text.Transliterator.Position, String);
-    method public final void transliterate(android.icu.text.Replaceable, android.icu.text.Transliterator.Position, int);
-    method public final void transliterate(android.icu.text.Replaceable, android.icu.text.Transliterator.Position);
-    field public static final int FORWARD = 0; // 0x0
-    field public static final int REVERSE = 1; // 0x1
-  }
-
-  public static class Transliterator.Position {
-    ctor public Transliterator.Position();
-    ctor public Transliterator.Position(int, int, int);
-    ctor public Transliterator.Position(int, int, int, int);
-    ctor public Transliterator.Position(android.icu.text.Transliterator.Position);
-    method public void set(android.icu.text.Transliterator.Position);
-    method public final void validate(int);
-    field public int contextLimit;
-    field public int contextStart;
-    field public int limit;
-    field public int start;
-  }
-
-  public abstract class UCharacterIterator implements java.lang.Cloneable {
-    ctor protected UCharacterIterator();
-    method public Object clone() throws java.lang.CloneNotSupportedException;
-    method public abstract int current();
-    method public int currentCodePoint();
-    method public java.text.CharacterIterator getCharacterIterator();
-    method public abstract int getIndex();
-    method public static final android.icu.text.UCharacterIterator getInstance(android.icu.text.Replaceable);
-    method public static final android.icu.text.UCharacterIterator getInstance(String);
-    method public static final android.icu.text.UCharacterIterator getInstance(char[]);
-    method public static final android.icu.text.UCharacterIterator getInstance(char[], int, int);
-    method public static final android.icu.text.UCharacterIterator getInstance(StringBuffer);
-    method public static final android.icu.text.UCharacterIterator getInstance(java.text.CharacterIterator);
-    method public abstract int getLength();
-    method public abstract int getText(char[], int);
-    method public final int getText(char[]);
-    method public String getText();
-    method public int moveCodePointIndex(int);
-    method public int moveIndex(int);
-    method public abstract int next();
-    method public int nextCodePoint();
-    method public abstract int previous();
-    method public int previousCodePoint();
-    method public abstract void setIndex(int);
-    method public void setToLimit();
-    method public void setToStart();
-    field public static final int DONE = -1; // 0xffffffff
-  }
-
-  public abstract class UFormat extends java.text.Format {
-    ctor public UFormat();
-  }
-
-  public abstract class UnicodeFilter implements android.icu.text.UnicodeMatcher {
-    method public abstract boolean contains(int);
-    method public int matches(android.icu.text.Replaceable, int[], int, boolean);
-  }
-
-  public interface UnicodeMatcher {
-    method public void addMatchSetTo(android.icu.text.UnicodeSet);
-    method public int matches(android.icu.text.Replaceable, int[], int, boolean);
-    method public boolean matchesIndexValue(int);
-    method public String toPattern(boolean);
-    field public static final char ETHER = 65535; // 0xffff '\uffff'
-    field public static final int U_MATCH = 2; // 0x2
-    field public static final int U_MISMATCH = 0; // 0x0
-    field public static final int U_PARTIAL_MATCH = 1; // 0x1
-  }
-
-  public class UnicodeSet extends android.icu.text.UnicodeFilter implements java.lang.Comparable<android.icu.text.UnicodeSet> android.icu.util.Freezable<android.icu.text.UnicodeSet> java.lang.Iterable<java.lang.String> {
-    ctor public UnicodeSet();
-    ctor public UnicodeSet(android.icu.text.UnicodeSet);
-    ctor public UnicodeSet(int, int);
-    ctor public UnicodeSet(int...);
-    ctor public UnicodeSet(String);
-    ctor public UnicodeSet(String, boolean);
-    ctor public UnicodeSet(String, int);
-    ctor public UnicodeSet(String, java.text.ParsePosition, android.icu.text.SymbolTable);
-    ctor public UnicodeSet(String, java.text.ParsePosition, android.icu.text.SymbolTable, int);
-    method public StringBuffer _generatePattern(StringBuffer, boolean);
-    method public StringBuffer _generatePattern(StringBuffer, boolean, boolean);
-    method public android.icu.text.UnicodeSet add(int, int);
-    method public final android.icu.text.UnicodeSet add(int);
-    method public final android.icu.text.UnicodeSet add(CharSequence);
-    method public android.icu.text.UnicodeSet add(Iterable<?>);
-    method public android.icu.text.UnicodeSet addAll(int, int);
-    method public final android.icu.text.UnicodeSet addAll(CharSequence);
-    method public android.icu.text.UnicodeSet addAll(android.icu.text.UnicodeSet);
-    method public android.icu.text.UnicodeSet addAll(Iterable<?>);
-    method public <T extends java.lang.CharSequence> android.icu.text.UnicodeSet addAll(T...);
-    method public <T extends java.util.Collection<java.lang.String>> T addAllTo(T);
-    method public void addMatchSetTo(android.icu.text.UnicodeSet);
-    method public android.icu.text.UnicodeSet applyIntPropertyValue(int, int);
-    method public final android.icu.text.UnicodeSet applyPattern(String);
-    method public android.icu.text.UnicodeSet applyPattern(String, boolean);
-    method public android.icu.text.UnicodeSet applyPattern(String, int);
-    method public android.icu.text.UnicodeSet applyPropertyAlias(String, String);
-    method public android.icu.text.UnicodeSet applyPropertyAlias(String, String, android.icu.text.SymbolTable);
-    method public int charAt(int);
-    method public android.icu.text.UnicodeSet clear();
-    method public Object clone();
-    method public android.icu.text.UnicodeSet cloneAsThawed();
-    method public android.icu.text.UnicodeSet closeOver(int);
-    method public android.icu.text.UnicodeSet compact();
-    method public int compareTo(android.icu.text.UnicodeSet);
-    method public int compareTo(android.icu.text.UnicodeSet, android.icu.text.UnicodeSet.ComparisonStyle);
-    method public int compareTo(Iterable<java.lang.String>);
-    method public android.icu.text.UnicodeSet complement(int, int);
-    method public final android.icu.text.UnicodeSet complement(int);
-    method public android.icu.text.UnicodeSet complement();
-    method public final android.icu.text.UnicodeSet complement(CharSequence);
-    method public final android.icu.text.UnicodeSet complementAll(CharSequence);
-    method public android.icu.text.UnicodeSet complementAll(android.icu.text.UnicodeSet);
-    method public boolean contains(int);
-    method public boolean contains(int, int);
-    method public final boolean contains(CharSequence);
-    method public boolean containsAll(android.icu.text.UnicodeSet);
-    method public boolean containsAll(String);
-    method public <T extends java.lang.CharSequence> boolean containsAll(Iterable<T>);
-    method public boolean containsNone(int, int);
-    method public boolean containsNone(android.icu.text.UnicodeSet);
-    method public boolean containsNone(CharSequence);
-    method public <T extends java.lang.CharSequence> boolean containsNone(Iterable<T>);
-    method public final boolean containsSome(int, int);
-    method public final boolean containsSome(android.icu.text.UnicodeSet);
-    method public final boolean containsSome(CharSequence);
-    method public final <T extends java.lang.CharSequence> boolean containsSome(Iterable<T>);
-    method public android.icu.text.UnicodeSet freeze();
-    method public static android.icu.text.UnicodeSet from(CharSequence);
-    method public static android.icu.text.UnicodeSet fromAll(CharSequence);
-    method public int getRangeCount();
-    method public int getRangeEnd(int);
-    method public int getRangeStart(int);
-    method public int indexOf(int);
-    method public boolean isEmpty();
-    method public boolean isFrozen();
-    method public java.util.Iterator<java.lang.String> iterator();
-    method public boolean matchesIndexValue(int);
-    method public Iterable<android.icu.text.UnicodeSet.EntryRange> ranges();
-    method public android.icu.text.UnicodeSet remove(int, int);
-    method public final android.icu.text.UnicodeSet remove(int);
-    method public final android.icu.text.UnicodeSet remove(CharSequence);
-    method public final android.icu.text.UnicodeSet removeAll(CharSequence);
-    method public android.icu.text.UnicodeSet removeAll(android.icu.text.UnicodeSet);
-    method public <T extends java.lang.CharSequence> android.icu.text.UnicodeSet removeAll(Iterable<T>);
-    method public final android.icu.text.UnicodeSet removeAllStrings();
-    method public android.icu.text.UnicodeSet retain(int, int);
-    method public final android.icu.text.UnicodeSet retain(int);
-    method public final android.icu.text.UnicodeSet retain(CharSequence);
-    method public final android.icu.text.UnicodeSet retainAll(CharSequence);
-    method public android.icu.text.UnicodeSet retainAll(android.icu.text.UnicodeSet);
-    method public <T extends java.lang.CharSequence> android.icu.text.UnicodeSet retainAll(Iterable<T>);
-    method public android.icu.text.UnicodeSet set(int, int);
-    method public android.icu.text.UnicodeSet set(android.icu.text.UnicodeSet);
-    method public int size();
-    method public int span(CharSequence, android.icu.text.UnicodeSet.SpanCondition);
-    method public int span(CharSequence, int, android.icu.text.UnicodeSet.SpanCondition);
-    method public int spanBack(CharSequence, android.icu.text.UnicodeSet.SpanCondition);
-    method public int spanBack(CharSequence, int, android.icu.text.UnicodeSet.SpanCondition);
-    method public java.util.Collection<java.lang.String> strings();
-    method public String toPattern(boolean);
-    field public static final int ADD_CASE_MAPPINGS = 4; // 0x4
-    field public static final android.icu.text.UnicodeSet ALL_CODE_POINTS;
-    field public static final int CASE = 2; // 0x2
-    field public static final int CASE_INSENSITIVE = 2; // 0x2
-    field public static final android.icu.text.UnicodeSet EMPTY;
-    field public static final int IGNORE_SPACE = 1; // 0x1
-    field public static final int MAX_VALUE = 1114111; // 0x10ffff
-    field public static final int MIN_VALUE = 0; // 0x0
-  }
-
-  public enum UnicodeSet.ComparisonStyle {
-    enum_constant public static final android.icu.text.UnicodeSet.ComparisonStyle LEXICOGRAPHIC;
-    enum_constant public static final android.icu.text.UnicodeSet.ComparisonStyle LONGER_FIRST;
-    enum_constant public static final android.icu.text.UnicodeSet.ComparisonStyle SHORTER_FIRST;
-  }
-
-  public static class UnicodeSet.EntryRange {
-    field public int codepoint;
-    field public int codepointEnd;
-  }
-
-  public enum UnicodeSet.SpanCondition {
-    enum_constant public static final android.icu.text.UnicodeSet.SpanCondition CONDITION_COUNT;
-    enum_constant public static final android.icu.text.UnicodeSet.SpanCondition CONTAINED;
-    enum_constant public static final android.icu.text.UnicodeSet.SpanCondition NOT_CONTAINED;
-    enum_constant public static final android.icu.text.UnicodeSet.SpanCondition SIMPLE;
-  }
-
-  public class UnicodeSetIterator {
-    ctor public UnicodeSetIterator(android.icu.text.UnicodeSet);
-    ctor public UnicodeSetIterator();
-    method public String getString();
-    method public boolean next();
-    method public boolean nextRange();
-    method public void reset(android.icu.text.UnicodeSet);
-    method public void reset();
-    field public static int IS_STRING;
-    field public int codepoint;
-    field public int codepointEnd;
-    field public String string;
-  }
-
-  public class UnicodeSetSpanner {
-    ctor public UnicodeSetSpanner(android.icu.text.UnicodeSet);
-    method public int countIn(CharSequence);
-    method public int countIn(CharSequence, android.icu.text.UnicodeSetSpanner.CountMethod);
-    method public int countIn(CharSequence, android.icu.text.UnicodeSetSpanner.CountMethod, android.icu.text.UnicodeSet.SpanCondition);
-    method public String deleteFrom(CharSequence);
-    method public String deleteFrom(CharSequence, android.icu.text.UnicodeSet.SpanCondition);
-    method public android.icu.text.UnicodeSet getUnicodeSet();
-    method public String replaceFrom(CharSequence, CharSequence);
-    method public String replaceFrom(CharSequence, CharSequence, android.icu.text.UnicodeSetSpanner.CountMethod);
-    method public String replaceFrom(CharSequence, CharSequence, android.icu.text.UnicodeSetSpanner.CountMethod, android.icu.text.UnicodeSet.SpanCondition);
-    method public CharSequence trim(CharSequence);
-    method public CharSequence trim(CharSequence, android.icu.text.UnicodeSetSpanner.TrimOption);
-    method public CharSequence trim(CharSequence, android.icu.text.UnicodeSetSpanner.TrimOption, android.icu.text.UnicodeSet.SpanCondition);
-  }
-
-  public enum UnicodeSetSpanner.CountMethod {
-    enum_constant public static final android.icu.text.UnicodeSetSpanner.CountMethod MIN_ELEMENTS;
-    enum_constant public static final android.icu.text.UnicodeSetSpanner.CountMethod WHOLE_SPAN;
-  }
-
-  public enum UnicodeSetSpanner.TrimOption {
-    enum_constant public static final android.icu.text.UnicodeSetSpanner.TrimOption BOTH;
-    enum_constant public static final android.icu.text.UnicodeSetSpanner.TrimOption LEADING;
-    enum_constant public static final android.icu.text.UnicodeSetSpanner.TrimOption TRAILING;
-  }
-
-}
-
-package android.icu.util {
-
-  public class BuddhistCalendar extends android.icu.util.GregorianCalendar {
-    ctor public BuddhistCalendar();
-    ctor public BuddhistCalendar(android.icu.util.TimeZone);
-    ctor public BuddhistCalendar(java.util.Locale);
-    ctor public BuddhistCalendar(android.icu.util.ULocale);
-    ctor public BuddhistCalendar(android.icu.util.TimeZone, java.util.Locale);
-    ctor public BuddhistCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
-    ctor public BuddhistCalendar(java.util.Date);
-    ctor public BuddhistCalendar(int, int, int);
-    ctor public BuddhistCalendar(int, int, int, int, int, int);
-    field public static final int BE = 0; // 0x0
-  }
-
-  public abstract class Calendar implements java.lang.Cloneable java.lang.Comparable<android.icu.util.Calendar> java.io.Serializable {
-    ctor protected Calendar();
-    ctor protected Calendar(android.icu.util.TimeZone, java.util.Locale);
-    ctor protected Calendar(android.icu.util.TimeZone, android.icu.util.ULocale);
-    method public void add(int, int);
-    method public boolean after(Object);
-    method public boolean before(Object);
-    method public final void clear();
-    method public final void clear(int);
-    method public Object clone();
-    method public int compareTo(android.icu.util.Calendar);
-    method protected void complete();
-    method protected void computeFields();
-    method protected final void computeGregorianFields(int);
-    method protected int computeGregorianMonthStart(int, int);
-    method protected int computeJulianDay();
-    method @Deprecated protected int computeMillisInDay();
-    method protected void computeTime();
-    method @Deprecated protected int computeZoneOffset(long, int);
-    method public int fieldDifference(java.util.Date, int);
-    method protected String fieldName(int);
-    method protected static final long floorDivide(long, long);
-    method protected static final int floorDivide(int, int);
-    method protected static final int floorDivide(int, int, int[]);
-    method protected static final int floorDivide(long, int, int[]);
-    method public final int get(int);
-    method public int getActualMaximum(int);
-    method public int getActualMinimum(int);
-    method public static java.util.Locale[] getAvailableLocales();
-    method public android.icu.text.DateFormat getDateTimeFormat(int, int, java.util.Locale);
-    method public android.icu.text.DateFormat getDateTimeFormat(int, int, android.icu.util.ULocale);
-    method public String getDisplayName(java.util.Locale);
-    method public String getDisplayName(android.icu.util.ULocale);
-    method public final int getFieldCount();
-    method protected int[][][] getFieldResolutionTable();
-    method public int getFirstDayOfWeek();
-    method public final int getGreatestMinimum(int);
-    method protected final int getGregorianDayOfMonth();
-    method protected final int getGregorianDayOfYear();
-    method protected final int getGregorianMonth();
-    method protected final int getGregorianYear();
-    method public static android.icu.util.Calendar getInstance();
-    method public static android.icu.util.Calendar getInstance(android.icu.util.TimeZone);
-    method public static android.icu.util.Calendar getInstance(java.util.Locale);
-    method public static android.icu.util.Calendar getInstance(android.icu.util.ULocale);
-    method public static android.icu.util.Calendar getInstance(android.icu.util.TimeZone, java.util.Locale);
-    method public static android.icu.util.Calendar getInstance(android.icu.util.TimeZone, android.icu.util.ULocale);
-    method public static final String[] getKeywordValuesForLocale(String, android.icu.util.ULocale, boolean);
-    method public final int getLeastMaximum(int);
-    method protected int getLimit(int, int);
-    method public final int getMaximum(int);
-    method public int getMinimalDaysInFirstWeek();
-    method public final int getMinimum(int);
-    method public int getRepeatedWallTimeOption();
-    method public int getSkippedWallTimeOption();
-    method protected final int getStamp(int);
-    method public final java.util.Date getTime();
-    method public long getTimeInMillis();
-    method public android.icu.util.TimeZone getTimeZone();
-    method public String getType();
-    method public android.icu.util.Calendar.WeekData getWeekData();
-    method public static android.icu.util.Calendar.WeekData getWeekDataForRegion(String);
-    method protected static final int gregorianMonthLength(int, int);
-    method protected static final int gregorianPreviousMonthLength(int, int);
-    method protected void handleComputeFields(int);
-    method protected int handleComputeJulianDay(int);
-    method protected abstract int handleComputeMonthStart(int, int, boolean);
-    method protected int[] handleCreateFields();
-    method protected android.icu.text.DateFormat handleGetDateFormat(String, java.util.Locale);
-    method protected android.icu.text.DateFormat handleGetDateFormat(String, String, java.util.Locale);
-    method protected android.icu.text.DateFormat handleGetDateFormat(String, android.icu.util.ULocale);
-    method protected abstract int handleGetExtendedYear();
-    method protected abstract int handleGetLimit(int, int);
-    method protected int handleGetMonthLength(int, int);
-    method protected int handleGetYearLength(int);
-    method protected final int internalGet(int);
-    method protected final int internalGet(int, int);
-    method protected final long internalGetTimeInMillis();
-    method protected final void internalSet(int, int);
-    method public boolean isEquivalentTo(android.icu.util.Calendar);
-    method protected static final boolean isGregorianLeapYear(int);
-    method public boolean isLenient();
-    method public final boolean isSet(int);
-    method public boolean isWeekend(java.util.Date);
-    method public boolean isWeekend();
-    method protected static final int julianDayToDayOfWeek(int);
-    method protected static final long julianDayToMillis(int);
-    method protected static final int millisToJulianDay(long);
-    method protected int newerField(int, int);
-    method protected int newestStamp(int, int, int);
-    method protected void pinField(int);
-    method protected void prepareGetActual(int, boolean);
-    method protected int resolveFields(int[][][]);
-    method public final void roll(int, boolean);
-    method public void roll(int, int);
-    method public final void set(int, int);
-    method public final void set(int, int, int);
-    method public final void set(int, int, int, int, int);
-    method public final void set(int, int, int, int, int, int);
-    method public void setFirstDayOfWeek(int);
-    method public void setLenient(boolean);
-    method public void setMinimalDaysInFirstWeek(int);
-    method public void setRepeatedWallTimeOption(int);
-    method public void setSkippedWallTimeOption(int);
-    method public final void setTime(java.util.Date);
-    method public void setTimeInMillis(long);
-    method public void setTimeZone(android.icu.util.TimeZone);
-    method public android.icu.util.Calendar setWeekData(android.icu.util.Calendar.WeekData);
-    method protected void validateField(int);
-    method protected final void validateField(int, int, int);
-    method protected void validateFields();
-    method protected int weekNumber(int, int, int);
-    method protected final int weekNumber(int, int);
-    field public static final int AM = 0; // 0x0
-    field public static final int AM_PM = 9; // 0x9
-    field public static final int APRIL = 3; // 0x3
-    field public static final int AUGUST = 7; // 0x7
-    field @Deprecated protected static final int BASE_FIELD_COUNT = 23; // 0x17
-    field public static final int DATE = 5; // 0x5
-    field public static final int DAY_OF_MONTH = 5; // 0x5
-    field public static final int DAY_OF_WEEK = 7; // 0x7
-    field public static final int DAY_OF_WEEK_IN_MONTH = 8; // 0x8
-    field public static final int DAY_OF_YEAR = 6; // 0x6
-    field public static final int DECEMBER = 11; // 0xb
-    field public static final int DOW_LOCAL = 18; // 0x12
-    field public static final int DST_OFFSET = 16; // 0x10
-    field protected static final int EPOCH_JULIAN_DAY = 2440588; // 0x253d8c
-    field public static final int ERA = 0; // 0x0
-    field public static final int EXTENDED_YEAR = 19; // 0x13
-    field public static final int FEBRUARY = 1; // 0x1
-    field public static final int FRIDAY = 6; // 0x6
-    field protected static final int GREATEST_MINIMUM = 1; // 0x1
-    field public static final int HOUR = 10; // 0xa
-    field public static final int HOUR_OF_DAY = 11; // 0xb
-    field protected static final int INTERNALLY_SET = 1; // 0x1
-    field public static final int IS_LEAP_MONTH = 22; // 0x16
-    field public static final int JANUARY = 0; // 0x0
-    field protected static final int JAN_1_1_JULIAN_DAY = 1721426; // 0x1a4452
-    field public static final int JULIAN_DAY = 20; // 0x14
-    field public static final int JULY = 6; // 0x6
-    field public static final int JUNE = 5; // 0x5
-    field protected static final int LEAST_MAXIMUM = 2; // 0x2
-    field public static final int MARCH = 2; // 0x2
-    field protected static final int MAXIMUM = 3; // 0x3
-    field protected static final java.util.Date MAX_DATE;
-    field @Deprecated protected static final int MAX_FIELD_COUNT = 32; // 0x20
-    field protected static final int MAX_JULIAN = 2130706432; // 0x7f000000
-    field protected static final long MAX_MILLIS = 183882168921600000L; // 0x28d47dbbf19b000L
-    field public static final int MAY = 4; // 0x4
-    field public static final int MILLISECOND = 14; // 0xe
-    field public static final int MILLISECONDS_IN_DAY = 21; // 0x15
-    field protected static final int MINIMUM = 0; // 0x0
-    field protected static final int MINIMUM_USER_STAMP = 2; // 0x2
-    field public static final int MINUTE = 12; // 0xc
-    field protected static final java.util.Date MIN_DATE;
-    field protected static final int MIN_JULIAN = -2130706432; // 0x81000000
-    field protected static final long MIN_MILLIS = -184303902528000000L; // 0xfd713893bf19b000L
-    field public static final int MONDAY = 2; // 0x2
-    field public static final int MONTH = 2; // 0x2
-    field public static final int NOVEMBER = 10; // 0xa
-    field public static final int OCTOBER = 9; // 0x9
-    field protected static final long ONE_DAY = 86400000L; // 0x5265c00L
-    field protected static final int ONE_HOUR = 3600000; // 0x36ee80
-    field protected static final int ONE_MINUTE = 60000; // 0xea60
-    field protected static final int ONE_SECOND = 1000; // 0x3e8
-    field protected static final long ONE_WEEK = 604800000L; // 0x240c8400L
-    field public static final int PM = 1; // 0x1
-    field protected static final int RESOLVE_REMAP = 32; // 0x20
-    field public static final int SATURDAY = 7; // 0x7
-    field public static final int SECOND = 13; // 0xd
-    field public static final int SEPTEMBER = 8; // 0x8
-    field public static final int SUNDAY = 1; // 0x1
-    field public static final int THURSDAY = 5; // 0x5
-    field public static final int TUESDAY = 3; // 0x3
-    field public static final int UNDECIMBER = 12; // 0xc
-    field protected static final int UNSET = 0; // 0x0
-    field public static final int WALLTIME_FIRST = 1; // 0x1
-    field public static final int WALLTIME_LAST = 0; // 0x0
-    field public static final int WALLTIME_NEXT_VALID = 2; // 0x2
-    field public static final int WEDNESDAY = 4; // 0x4
-    field public static final int WEEK_OF_MONTH = 4; // 0x4
-    field public static final int WEEK_OF_YEAR = 3; // 0x3
-    field public static final int YEAR = 1; // 0x1
-    field public static final int YEAR_WOY = 17; // 0x11
-    field public static final int ZONE_OFFSET = 15; // 0xf
-  }
-
-  public static final class Calendar.WeekData {
-    ctor public Calendar.WeekData(int, int, int, int, int, int);
-    field public final int firstDayOfWeek;
-    field public final int minimalDaysInFirstWeek;
-    field public final int weekendCease;
-    field public final int weekendCeaseMillis;
-    field public final int weekendOnset;
-    field public final int weekendOnsetMillis;
-  }
-
-  public class ChineseCalendar extends android.icu.util.Calendar {
-    ctor public ChineseCalendar();
-    ctor public ChineseCalendar(java.util.Date);
-    ctor public ChineseCalendar(int, int, int, int);
-    ctor public ChineseCalendar(int, int, int, int, int, int, int);
-    ctor public ChineseCalendar(int, int, int, int, int);
-    ctor public ChineseCalendar(int, int, int, int, int, int, int, int);
-    ctor public ChineseCalendar(java.util.Locale);
-    ctor public ChineseCalendar(android.icu.util.TimeZone);
-    ctor public ChineseCalendar(android.icu.util.TimeZone, java.util.Locale);
-    ctor public ChineseCalendar(android.icu.util.ULocale);
-    ctor public ChineseCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
-    method protected int handleComputeMonthStart(int, int, boolean);
-    method protected android.icu.text.DateFormat handleGetDateFormat(String, String, android.icu.util.ULocale);
-    method protected int handleGetExtendedYear();
-    method protected int handleGetLimit(int, int);
-  }
-
-  public final class CopticCalendar extends android.icu.util.Calendar {
-    ctor public CopticCalendar();
-    ctor public CopticCalendar(android.icu.util.TimeZone);
-    ctor public CopticCalendar(java.util.Locale);
-    ctor public CopticCalendar(android.icu.util.ULocale);
-    ctor public CopticCalendar(android.icu.util.TimeZone, java.util.Locale);
-    ctor public CopticCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
-    ctor public CopticCalendar(int, int, int);
-    ctor public CopticCalendar(java.util.Date);
-    ctor public CopticCalendar(int, int, int, int, int, int);
-    method @Deprecated protected void handleComputeFields(int);
-    method protected int handleComputeMonthStart(int, int, boolean);
-    method @Deprecated protected int handleGetExtendedYear();
-    method protected int handleGetLimit(int, int);
-    field public static final int AMSHIR = 5; // 0x5
-    field public static final int BABA = 1; // 0x1
-    field public static final int BARAMHAT = 6; // 0x6
-    field public static final int BARAMOUDA = 7; // 0x7
-    field public static final int BASHANS = 8; // 0x8
-    field public static final int EPEP = 10; // 0xa
-    field public static final int HATOR = 2; // 0x2
-    field public static final int KIAHK = 3; // 0x3
-    field public static final int MESRA = 11; // 0xb
-    field public static final int NASIE = 12; // 0xc
-    field public static final int PAONA = 9; // 0x9
-    field public static final int TOBA = 4; // 0x4
-    field public static final int TOUT = 0; // 0x0
-  }
-
-  public class Currency extends android.icu.util.MeasureUnit {
-    ctor protected Currency(String);
-    method public static android.icu.util.Currency fromJavaCurrency(java.util.Currency);
-    method public static java.util.Set<android.icu.util.Currency> getAvailableCurrencies();
-    method public static String[] getAvailableCurrencyCodes(android.icu.util.ULocale, java.util.Date);
-    method public static String[] getAvailableCurrencyCodes(java.util.Locale, java.util.Date);
-    method public static java.util.Locale[] getAvailableLocales();
-    method public static android.icu.util.ULocale[] getAvailableULocales();
-    method public String getCurrencyCode();
-    method public int getDefaultFractionDigits();
-    method public int getDefaultFractionDigits(android.icu.util.Currency.CurrencyUsage);
-    method public String getDisplayName();
-    method public String getDisplayName(java.util.Locale);
-    method public static android.icu.util.Currency getInstance(java.util.Locale);
-    method public static android.icu.util.Currency getInstance(android.icu.util.ULocale);
-    method public static android.icu.util.Currency getInstance(String);
-    method public static final String[] getKeywordValuesForLocale(String, android.icu.util.ULocale, boolean);
-    method public String getName(java.util.Locale, int, boolean[]);
-    method public String getName(android.icu.util.ULocale, int, boolean[]);
-    method public String getName(java.util.Locale, int, String, boolean[]);
-    method public String getName(android.icu.util.ULocale, int, String, boolean[]);
-    method public int getNumericCode();
-    method public double getRoundingIncrement();
-    method public double getRoundingIncrement(android.icu.util.Currency.CurrencyUsage);
-    method public String getSymbol();
-    method public String getSymbol(java.util.Locale);
-    method public String getSymbol(android.icu.util.ULocale);
-    method public static boolean isAvailable(String, java.util.Date, java.util.Date);
-    method public java.util.Currency toJavaCurrency();
-    field public static final int LONG_NAME = 1; // 0x1
-    field public static final int NARROW_SYMBOL_NAME = 3; // 0x3
-    field public static final int PLURAL_LONG_NAME = 2; // 0x2
-    field public static final int SYMBOL_NAME = 0; // 0x0
-  }
-
-  public enum Currency.CurrencyUsage {
-    enum_constant public static final android.icu.util.Currency.CurrencyUsage CASH;
-    enum_constant public static final android.icu.util.Currency.CurrencyUsage STANDARD;
-  }
-
-  public class CurrencyAmount extends android.icu.util.Measure {
-    ctor public CurrencyAmount(Number, android.icu.util.Currency);
-    ctor public CurrencyAmount(double, android.icu.util.Currency);
-    ctor public CurrencyAmount(Number, java.util.Currency);
-    ctor public CurrencyAmount(double, java.util.Currency);
-    method public android.icu.util.Currency getCurrency();
-  }
-
-  public final class DateInterval implements java.io.Serializable {
-    ctor public DateInterval(long, long);
-    method public long getFromDate();
-    method public long getToDate();
-  }
-
-  public final class EthiopicCalendar extends android.icu.util.Calendar {
-    ctor public EthiopicCalendar();
-    ctor public EthiopicCalendar(android.icu.util.TimeZone);
-    ctor public EthiopicCalendar(java.util.Locale);
-    ctor public EthiopicCalendar(android.icu.util.ULocale);
-    ctor public EthiopicCalendar(android.icu.util.TimeZone, java.util.Locale);
-    ctor public EthiopicCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
-    ctor public EthiopicCalendar(int, int, int);
-    ctor public EthiopicCalendar(java.util.Date);
-    ctor public EthiopicCalendar(int, int, int, int, int, int);
-    method @Deprecated protected void handleComputeFields(int);
-    method protected int handleComputeMonthStart(int, int, boolean);
-    method @Deprecated protected int handleGetExtendedYear();
-    method @Deprecated protected int handleGetLimit(int, int);
-    method public boolean isAmeteAlemEra();
-    method public void setAmeteAlemEra(boolean);
-    field public static final int GENBOT = 8; // 0x8
-    field public static final int HAMLE = 10; // 0xa
-    field public static final int HEDAR = 2; // 0x2
-    field public static final int MEGABIT = 6; // 0x6
-    field public static final int MESKEREM = 0; // 0x0
-    field public static final int MIAZIA = 7; // 0x7
-    field public static final int NEHASSE = 11; // 0xb
-    field public static final int PAGUMEN = 12; // 0xc
-    field public static final int SENE = 9; // 0x9
-    field public static final int TAHSAS = 3; // 0x3
-    field public static final int TEKEMT = 1; // 0x1
-    field public static final int TER = 4; // 0x4
-    field public static final int YEKATIT = 5; // 0x5
-  }
-
-  public interface Freezable<T> extends java.lang.Cloneable {
-    method public T cloneAsThawed();
-    method public T freeze();
-    method public boolean isFrozen();
-  }
-
-  public class GregorianCalendar extends android.icu.util.Calendar {
-    ctor public GregorianCalendar();
-    ctor public GregorianCalendar(android.icu.util.TimeZone);
-    ctor public GregorianCalendar(java.util.Locale);
-    ctor public GregorianCalendar(android.icu.util.ULocale);
-    ctor public GregorianCalendar(android.icu.util.TimeZone, java.util.Locale);
-    ctor public GregorianCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
-    ctor public GregorianCalendar(int, int, int);
-    ctor public GregorianCalendar(int, int, int, int, int);
-    ctor public GregorianCalendar(int, int, int, int, int, int);
-    method public final java.util.Date getGregorianChange();
-    method protected int handleComputeMonthStart(int, int, boolean);
-    method protected int handleGetExtendedYear();
-    method protected int handleGetLimit(int, int);
-    method public boolean isLeapYear(int);
-    method public void setGregorianChange(java.util.Date);
-    field public static final int AD = 1; // 0x1
-    field public static final int BC = 0; // 0x0
-    field protected transient boolean invertGregorian;
-    field protected transient boolean isGregorian;
-  }
-
-  public class HebrewCalendar extends android.icu.util.Calendar {
-    ctor public HebrewCalendar();
-    ctor public HebrewCalendar(android.icu.util.TimeZone);
-    ctor public HebrewCalendar(java.util.Locale);
-    ctor public HebrewCalendar(android.icu.util.ULocale);
-    ctor public HebrewCalendar(android.icu.util.TimeZone, java.util.Locale);
-    ctor public HebrewCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
-    ctor public HebrewCalendar(int, int, int);
-    ctor public HebrewCalendar(java.util.Date);
-    ctor public HebrewCalendar(int, int, int, int, int, int);
-    method protected int handleComputeMonthStart(int, int, boolean);
-    method protected int handleGetExtendedYear();
-    method protected int handleGetLimit(int, int);
-    method @Deprecated protected void validateField(int);
-    field public static final int ADAR = 6; // 0x6
-    field public static final int ADAR_1 = 5; // 0x5
-    field public static final int AV = 11; // 0xb
-    field public static final int ELUL = 12; // 0xc
-    field public static final int HESHVAN = 1; // 0x1
-    field public static final int IYAR = 8; // 0x8
-    field public static final int KISLEV = 2; // 0x2
-    field public static final int NISAN = 7; // 0x7
-    field public static final int SHEVAT = 4; // 0x4
-    field public static final int SIVAN = 9; // 0x9
-    field public static final int TAMUZ = 10; // 0xa
-    field public static final int TEVET = 3; // 0x3
-    field public static final int TISHRI = 0; // 0x0
-  }
-
-  public class ICUUncheckedIOException extends java.lang.RuntimeException {
-    ctor public ICUUncheckedIOException();
-    ctor public ICUUncheckedIOException(String);
-    ctor public ICUUncheckedIOException(Throwable);
-    ctor public ICUUncheckedIOException(String, Throwable);
-  }
-
-  public class IllformedLocaleException extends java.lang.RuntimeException {
-    ctor public IllformedLocaleException();
-    ctor public IllformedLocaleException(String);
-    ctor public IllformedLocaleException(String, int);
-    method public int getErrorIndex();
-  }
-
-  public class IndianCalendar extends android.icu.util.Calendar {
-    ctor public IndianCalendar();
-    ctor public IndianCalendar(android.icu.util.TimeZone);
-    ctor public IndianCalendar(java.util.Locale);
-    ctor public IndianCalendar(android.icu.util.ULocale);
-    ctor public IndianCalendar(android.icu.util.TimeZone, java.util.Locale);
-    ctor public IndianCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
-    ctor public IndianCalendar(java.util.Date);
-    ctor public IndianCalendar(int, int, int);
-    ctor public IndianCalendar(int, int, int, int, int, int);
-    method protected int handleComputeMonthStart(int, int, boolean);
-    method protected int handleGetExtendedYear();
-    method protected int handleGetLimit(int, int);
-    field public static final int AGRAHAYANA = 8; // 0x8
-    field public static final int ASADHA = 3; // 0x3
-    field public static final int ASVINA = 6; // 0x6
-    field public static final int BHADRA = 5; // 0x5
-    field public static final int CHAITRA = 0; // 0x0
-    field public static final int IE = 0; // 0x0
-    field public static final int JYAISTHA = 2; // 0x2
-    field public static final int KARTIKA = 7; // 0x7
-    field public static final int MAGHA = 10; // 0xa
-    field public static final int PAUSA = 9; // 0x9
-    field public static final int PHALGUNA = 11; // 0xb
-    field public static final int SRAVANA = 4; // 0x4
-    field public static final int VAISAKHA = 1; // 0x1
-  }
-
-  public class IslamicCalendar extends android.icu.util.Calendar {
-    ctor public IslamicCalendar();
-    ctor public IslamicCalendar(android.icu.util.TimeZone);
-    ctor public IslamicCalendar(java.util.Locale);
-    ctor public IslamicCalendar(android.icu.util.ULocale);
-    ctor public IslamicCalendar(android.icu.util.TimeZone, java.util.Locale);
-    ctor public IslamicCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
-    ctor public IslamicCalendar(java.util.Date);
-    ctor public IslamicCalendar(int, int, int);
-    ctor public IslamicCalendar(int, int, int, int, int, int);
-    method public android.icu.util.IslamicCalendar.CalculationType getCalculationType();
-    method protected int handleComputeMonthStart(int, int, boolean);
-    method protected int handleGetExtendedYear();
-    method protected int handleGetLimit(int, int);
-    method public void setCalculationType(android.icu.util.IslamicCalendar.CalculationType);
-    field public static final int DHU_AL_HIJJAH = 11; // 0xb
-    field public static final int DHU_AL_QIDAH = 10; // 0xa
-    field public static final int JUMADA_1 = 4; // 0x4
-    field public static final int JUMADA_2 = 5; // 0x5
-    field public static final int MUHARRAM = 0; // 0x0
-    field public static final int RABI_1 = 2; // 0x2
-    field public static final int RABI_2 = 3; // 0x3
-    field public static final int RAJAB = 6; // 0x6
-    field public static final int RAMADAN = 8; // 0x8
-    field public static final int SAFAR = 1; // 0x1
-    field public static final int SHABAN = 7; // 0x7
-    field public static final int SHAWWAL = 9; // 0x9
-  }
-
-  public enum IslamicCalendar.CalculationType {
-    enum_constant public static final android.icu.util.IslamicCalendar.CalculationType ISLAMIC;
-    enum_constant public static final android.icu.util.IslamicCalendar.CalculationType ISLAMIC_CIVIL;
-    enum_constant public static final android.icu.util.IslamicCalendar.CalculationType ISLAMIC_TBLA;
-    enum_constant public static final android.icu.util.IslamicCalendar.CalculationType ISLAMIC_UMALQURA;
-  }
-
-  public class JapaneseCalendar extends android.icu.util.GregorianCalendar {
-    ctor public JapaneseCalendar();
-    ctor public JapaneseCalendar(android.icu.util.TimeZone);
-    ctor public JapaneseCalendar(java.util.Locale);
-    ctor public JapaneseCalendar(android.icu.util.ULocale);
-    ctor public JapaneseCalendar(android.icu.util.TimeZone, java.util.Locale);
-    ctor public JapaneseCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
-    ctor public JapaneseCalendar(java.util.Date);
-    ctor public JapaneseCalendar(int, int, int, int);
-    ctor public JapaneseCalendar(int, int, int);
-    ctor public JapaneseCalendar(int, int, int, int, int, int);
-    field public static final int HEISEI;
-    field public static final int MEIJI;
-    field public static final int REIWA;
-    field public static final int SHOWA;
-    field public static final int TAISHO;
-  }
-
-  public final class LocaleData {
-    method public static android.icu.util.VersionInfo getCLDRVersion();
-    method public String getDelimiter(int);
-    method public static android.icu.util.LocaleData getInstance(android.icu.util.ULocale);
-    method public static android.icu.util.LocaleData getInstance();
-    method public static android.icu.util.LocaleData.MeasurementSystem getMeasurementSystem(android.icu.util.ULocale);
-    method public boolean getNoSubstitute();
-    method public static android.icu.util.LocaleData.PaperSize getPaperSize(android.icu.util.ULocale);
-    method public void setNoSubstitute(boolean);
-    field public static final int ALT_QUOTATION_END = 3; // 0x3
-    field public static final int ALT_QUOTATION_START = 2; // 0x2
-    field public static final int QUOTATION_END = 1; // 0x1
-    field public static final int QUOTATION_START = 0; // 0x0
-  }
-
-  public static final class LocaleData.MeasurementSystem {
-    field public static final android.icu.util.LocaleData.MeasurementSystem SI;
-    field public static final android.icu.util.LocaleData.MeasurementSystem UK;
-    field public static final android.icu.util.LocaleData.MeasurementSystem US;
-  }
-
-  public static final class LocaleData.PaperSize {
-    method public int getHeight();
-    method public int getWidth();
-  }
-
-  public class Measure {
-    ctor public Measure(Number, android.icu.util.MeasureUnit);
-    method public Number getNumber();
-    method public android.icu.util.MeasureUnit getUnit();
-  }
-
-  public class MeasureUnit implements java.io.Serializable {
-    method public static java.util.Set<android.icu.util.MeasureUnit> getAvailable(String);
-    method public static java.util.Set<android.icu.util.MeasureUnit> getAvailable();
-    method public static java.util.Set<java.lang.String> getAvailableTypes();
-    method public String getSubtype();
-    method public String getType();
-    field public static final android.icu.util.MeasureUnit ACRE;
-    field public static final android.icu.util.MeasureUnit ACRE_FOOT;
-    field public static final android.icu.util.MeasureUnit AMPERE;
-    field public static final android.icu.util.MeasureUnit ARC_MINUTE;
-    field public static final android.icu.util.MeasureUnit ARC_SECOND;
-    field public static final android.icu.util.MeasureUnit ASTRONOMICAL_UNIT;
-    field public static final android.icu.util.MeasureUnit ATMOSPHERE;
-    field public static final android.icu.util.MeasureUnit BIT;
-    field public static final android.icu.util.MeasureUnit BUSHEL;
-    field public static final android.icu.util.MeasureUnit BYTE;
-    field public static final android.icu.util.MeasureUnit CALORIE;
-    field public static final android.icu.util.MeasureUnit CARAT;
-    field public static final android.icu.util.MeasureUnit CELSIUS;
-    field public static final android.icu.util.MeasureUnit CENTILITER;
-    field public static final android.icu.util.MeasureUnit CENTIMETER;
-    field public static final android.icu.util.MeasureUnit CENTURY;
-    field public static final android.icu.util.MeasureUnit CUBIC_CENTIMETER;
-    field public static final android.icu.util.MeasureUnit CUBIC_FOOT;
-    field public static final android.icu.util.MeasureUnit CUBIC_INCH;
-    field public static final android.icu.util.MeasureUnit CUBIC_KILOMETER;
-    field public static final android.icu.util.MeasureUnit CUBIC_METER;
-    field public static final android.icu.util.MeasureUnit CUBIC_MILE;
-    field public static final android.icu.util.MeasureUnit CUBIC_YARD;
-    field public static final android.icu.util.MeasureUnit CUP;
-    field public static final android.icu.util.MeasureUnit CUP_METRIC;
-    field public static final android.icu.util.TimeUnit DAY;
-    field public static final android.icu.util.MeasureUnit DECILITER;
-    field public static final android.icu.util.MeasureUnit DECIMETER;
-    field public static final android.icu.util.MeasureUnit DEGREE;
-    field public static final android.icu.util.MeasureUnit FAHRENHEIT;
-    field public static final android.icu.util.MeasureUnit FATHOM;
-    field public static final android.icu.util.MeasureUnit FLUID_OUNCE;
-    field public static final android.icu.util.MeasureUnit FOODCALORIE;
-    field public static final android.icu.util.MeasureUnit FOOT;
-    field public static final android.icu.util.MeasureUnit FURLONG;
-    field public static final android.icu.util.MeasureUnit GALLON;
-    field public static final android.icu.util.MeasureUnit GALLON_IMPERIAL;
-    field public static final android.icu.util.MeasureUnit GENERIC_TEMPERATURE;
-    field public static final android.icu.util.MeasureUnit GIGABIT;
-    field public static final android.icu.util.MeasureUnit GIGABYTE;
-    field public static final android.icu.util.MeasureUnit GIGAHERTZ;
-    field public static final android.icu.util.MeasureUnit GIGAWATT;
-    field public static final android.icu.util.MeasureUnit GRAM;
-    field public static final android.icu.util.MeasureUnit G_FORCE;
-    field public static final android.icu.util.MeasureUnit HECTARE;
-    field public static final android.icu.util.MeasureUnit HECTOLITER;
-    field public static final android.icu.util.MeasureUnit HECTOPASCAL;
-    field public static final android.icu.util.MeasureUnit HERTZ;
-    field public static final android.icu.util.MeasureUnit HORSEPOWER;
-    field public static final android.icu.util.TimeUnit HOUR;
-    field public static final android.icu.util.MeasureUnit INCH;
-    field public static final android.icu.util.MeasureUnit INCH_HG;
-    field public static final android.icu.util.MeasureUnit JOULE;
-    field public static final android.icu.util.MeasureUnit KARAT;
-    field public static final android.icu.util.MeasureUnit KELVIN;
-    field public static final android.icu.util.MeasureUnit KILOBIT;
-    field public static final android.icu.util.MeasureUnit KILOBYTE;
-    field public static final android.icu.util.MeasureUnit KILOCALORIE;
-    field public static final android.icu.util.MeasureUnit KILOGRAM;
-    field public static final android.icu.util.MeasureUnit KILOHERTZ;
-    field public static final android.icu.util.MeasureUnit KILOJOULE;
-    field public static final android.icu.util.MeasureUnit KILOMETER;
-    field public static final android.icu.util.MeasureUnit KILOMETER_PER_HOUR;
-    field public static final android.icu.util.MeasureUnit KILOWATT;
-    field public static final android.icu.util.MeasureUnit KILOWATT_HOUR;
-    field public static final android.icu.util.MeasureUnit KNOT;
-    field public static final android.icu.util.MeasureUnit LIGHT_YEAR;
-    field public static final android.icu.util.MeasureUnit LITER;
-    field public static final android.icu.util.MeasureUnit LITER_PER_100KILOMETERS;
-    field public static final android.icu.util.MeasureUnit LITER_PER_KILOMETER;
-    field public static final android.icu.util.MeasureUnit LUX;
-    field public static final android.icu.util.MeasureUnit MEGABIT;
-    field public static final android.icu.util.MeasureUnit MEGABYTE;
-    field public static final android.icu.util.MeasureUnit MEGAHERTZ;
-    field public static final android.icu.util.MeasureUnit MEGALITER;
-    field public static final android.icu.util.MeasureUnit MEGAWATT;
-    field public static final android.icu.util.MeasureUnit METER;
-    field public static final android.icu.util.MeasureUnit METER_PER_SECOND;
-    field public static final android.icu.util.MeasureUnit METER_PER_SECOND_SQUARED;
-    field public static final android.icu.util.MeasureUnit METRIC_TON;
-    field public static final android.icu.util.MeasureUnit MICROGRAM;
-    field public static final android.icu.util.MeasureUnit MICROMETER;
-    field public static final android.icu.util.MeasureUnit MICROSECOND;
-    field public static final android.icu.util.MeasureUnit MILE;
-    field public static final android.icu.util.MeasureUnit MILE_PER_GALLON;
-    field public static final android.icu.util.MeasureUnit MILE_PER_GALLON_IMPERIAL;
-    field public static final android.icu.util.MeasureUnit MILE_PER_HOUR;
-    field public static final android.icu.util.MeasureUnit MILE_SCANDINAVIAN;
-    field public static final android.icu.util.MeasureUnit MILLIAMPERE;
-    field public static final android.icu.util.MeasureUnit MILLIBAR;
-    field public static final android.icu.util.MeasureUnit MILLIGRAM;
-    field public static final android.icu.util.MeasureUnit MILLIGRAM_PER_DECILITER;
-    field public static final android.icu.util.MeasureUnit MILLILITER;
-    field public static final android.icu.util.MeasureUnit MILLIMETER;
-    field public static final android.icu.util.MeasureUnit MILLIMETER_OF_MERCURY;
-    field public static final android.icu.util.MeasureUnit MILLIMOLE_PER_LITER;
-    field public static final android.icu.util.MeasureUnit MILLISECOND;
-    field public static final android.icu.util.MeasureUnit MILLIWATT;
-    field public static final android.icu.util.TimeUnit MINUTE;
-    field public static final android.icu.util.TimeUnit MONTH;
-    field public static final android.icu.util.MeasureUnit NANOMETER;
-    field public static final android.icu.util.MeasureUnit NANOSECOND;
-    field public static final android.icu.util.MeasureUnit NAUTICAL_MILE;
-    field public static final android.icu.util.MeasureUnit OHM;
-    field public static final android.icu.util.MeasureUnit OUNCE;
-    field public static final android.icu.util.MeasureUnit OUNCE_TROY;
-    field public static final android.icu.util.MeasureUnit PARSEC;
-    field public static final android.icu.util.MeasureUnit PART_PER_MILLION;
-    field public static final android.icu.util.MeasureUnit PERCENT;
-    field public static final android.icu.util.MeasureUnit PERMILLE;
-    field public static final android.icu.util.MeasureUnit PETABYTE;
-    field public static final android.icu.util.MeasureUnit PICOMETER;
-    field public static final android.icu.util.MeasureUnit PINT;
-    field public static final android.icu.util.MeasureUnit PINT_METRIC;
-    field public static final android.icu.util.MeasureUnit POINT;
-    field public static final android.icu.util.MeasureUnit POUND;
-    field public static final android.icu.util.MeasureUnit POUND_PER_SQUARE_INCH;
-    field public static final android.icu.util.MeasureUnit QUART;
-    field public static final android.icu.util.MeasureUnit RADIAN;
-    field public static final android.icu.util.MeasureUnit REVOLUTION_ANGLE;
-    field public static final android.icu.util.TimeUnit SECOND;
-    field public static final android.icu.util.MeasureUnit SQUARE_CENTIMETER;
-    field public static final android.icu.util.MeasureUnit SQUARE_FOOT;
-    field public static final android.icu.util.MeasureUnit SQUARE_INCH;
-    field public static final android.icu.util.MeasureUnit SQUARE_KILOMETER;
-    field public static final android.icu.util.MeasureUnit SQUARE_METER;
-    field public static final android.icu.util.MeasureUnit SQUARE_MILE;
-    field public static final android.icu.util.MeasureUnit SQUARE_YARD;
-    field public static final android.icu.util.MeasureUnit STONE;
-    field public static final android.icu.util.MeasureUnit TABLESPOON;
-    field public static final android.icu.util.MeasureUnit TEASPOON;
-    field public static final android.icu.util.MeasureUnit TERABIT;
-    field public static final android.icu.util.MeasureUnit TERABYTE;
-    field public static final android.icu.util.MeasureUnit TON;
-    field public static final android.icu.util.MeasureUnit VOLT;
-    field public static final android.icu.util.MeasureUnit WATT;
-    field public static final android.icu.util.TimeUnit WEEK;
-    field public static final android.icu.util.MeasureUnit YARD;
-    field public static final android.icu.util.TimeUnit YEAR;
-  }
-
-  public class Output<T> {
-    ctor public Output();
-    ctor public Output(T);
-    field public T value;
-  }
-
-  public interface RangeValueIterator {
-    method public boolean next(android.icu.util.RangeValueIterator.Element);
-    method public void reset();
-  }
-
-  public static class RangeValueIterator.Element {
-    ctor public RangeValueIterator.Element();
-    field public int limit;
-    field public int start;
-    field public int value;
-  }
-
-  public class TaiwanCalendar extends android.icu.util.GregorianCalendar {
-    ctor public TaiwanCalendar();
-    ctor public TaiwanCalendar(android.icu.util.TimeZone);
-    ctor public TaiwanCalendar(java.util.Locale);
-    ctor public TaiwanCalendar(android.icu.util.ULocale);
-    ctor public TaiwanCalendar(android.icu.util.TimeZone, java.util.Locale);
-    ctor public TaiwanCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
-    ctor public TaiwanCalendar(java.util.Date);
-    ctor public TaiwanCalendar(int, int, int);
-    ctor public TaiwanCalendar(int, int, int, int, int, int);
-    field public static final int BEFORE_MINGUO = 0; // 0x0
-    field public static final int MINGUO = 1; // 0x1
-  }
-
-  public class TimeUnit extends android.icu.util.MeasureUnit {
-    method public static android.icu.util.TimeUnit[] values();
-  }
-
-  public abstract class TimeZone implements java.lang.Cloneable android.icu.util.Freezable<android.icu.util.TimeZone> java.io.Serializable {
-    ctor public TimeZone();
-    method public Object clone();
-    method public android.icu.util.TimeZone cloneAsThawed();
-    method public static int countEquivalentIDs(String);
-    method public android.icu.util.TimeZone freeze();
-    method public static java.util.Set<java.lang.String> getAvailableIDs(android.icu.util.TimeZone.SystemTimeZoneType, String, Integer);
-    method public static String[] getAvailableIDs(int);
-    method public static String[] getAvailableIDs(String);
-    method public static String[] getAvailableIDs();
-    method public static String getCanonicalID(String);
-    method public static String getCanonicalID(String, boolean[]);
-    method public int getDSTSavings();
-    method public static android.icu.util.TimeZone getDefault();
-    method public final String getDisplayName();
-    method public final String getDisplayName(java.util.Locale);
-    method public final String getDisplayName(android.icu.util.ULocale);
-    method public final String getDisplayName(boolean, int);
-    method public String getDisplayName(boolean, int, java.util.Locale);
-    method public String getDisplayName(boolean, int, android.icu.util.ULocale);
-    method public static String getEquivalentID(String, int);
-    method public static android.icu.util.TimeZone getFrozenTimeZone(String);
-    method public String getID();
-    method public static String getIDForWindowsID(String, String);
-    method public abstract int getOffset(int, int, int, int, int, int);
-    method public int getOffset(long);
-    method public void getOffset(long, boolean, int[]);
-    method public abstract int getRawOffset();
-    method public static String getRegion(String);
-    method public static String getTZDataVersion();
-    method public static android.icu.util.TimeZone getTimeZone(String);
-    method public static android.icu.util.TimeZone getTimeZone(String, int);
-    method public static String getWindowsID(String);
-    method public boolean hasSameRules(android.icu.util.TimeZone);
-    method public abstract boolean inDaylightTime(java.util.Date);
-    method public boolean isFrozen();
-    method public boolean observesDaylightTime();
-    method public void setID(String);
-    method public abstract void setRawOffset(int);
-    method public abstract boolean useDaylightTime();
-    field public static final int GENERIC_LOCATION = 7; // 0x7
-    field public static final android.icu.util.TimeZone GMT_ZONE;
-    field public static final int LONG = 1; // 0x1
-    field public static final int LONG_GENERIC = 3; // 0x3
-    field public static final int LONG_GMT = 5; // 0x5
-    field public static final int SHORT = 0; // 0x0
-    field public static final int SHORT_COMMONLY_USED = 6; // 0x6
-    field public static final int SHORT_GENERIC = 2; // 0x2
-    field public static final int SHORT_GMT = 4; // 0x4
-    field public static final int TIMEZONE_ICU = 0; // 0x0
-    field public static final int TIMEZONE_JDK = 1; // 0x1
-    field public static final android.icu.util.TimeZone UNKNOWN_ZONE;
-    field public static final String UNKNOWN_ZONE_ID = "Etc/Unknown";
-  }
-
-  public enum TimeZone.SystemTimeZoneType {
-    enum_constant public static final android.icu.util.TimeZone.SystemTimeZoneType ANY;
-    enum_constant public static final android.icu.util.TimeZone.SystemTimeZoneType CANONICAL;
-    enum_constant public static final android.icu.util.TimeZone.SystemTimeZoneType CANONICAL_LOCATION;
-  }
-
-  public final class ULocale implements java.lang.Comparable<android.icu.util.ULocale> java.io.Serializable {
-    ctor public ULocale(String);
-    ctor public ULocale(String, String);
-    ctor public ULocale(String, String, String);
-    method public static android.icu.util.ULocale acceptLanguage(String, android.icu.util.ULocale[], boolean[]);
-    method public static android.icu.util.ULocale acceptLanguage(android.icu.util.ULocale[], android.icu.util.ULocale[], boolean[]);
-    method public static android.icu.util.ULocale acceptLanguage(String, boolean[]);
-    method public static android.icu.util.ULocale acceptLanguage(android.icu.util.ULocale[], boolean[]);
-    method public static android.icu.util.ULocale addLikelySubtags(android.icu.util.ULocale);
-    method public static String canonicalize(String);
-    method public Object clone();
-    method public int compareTo(android.icu.util.ULocale);
-    method public static android.icu.util.ULocale createCanonical(String);
-    method public static android.icu.util.ULocale forLanguageTag(String);
-    method public static android.icu.util.ULocale forLocale(java.util.Locale);
-    method public static android.icu.util.ULocale[] getAvailableLocales();
-    method public String getBaseName();
-    method public static String getBaseName(String);
-    method public String getCharacterOrientation();
-    method public String getCountry();
-    method public static String getCountry(String);
-    method public static android.icu.util.ULocale getDefault();
-    method public static android.icu.util.ULocale getDefault(android.icu.util.ULocale.Category);
-    method public String getDisplayCountry();
-    method public String getDisplayCountry(android.icu.util.ULocale);
-    method public static String getDisplayCountry(String, String);
-    method public static String getDisplayCountry(String, android.icu.util.ULocale);
-    method public static String getDisplayKeyword(String);
-    method public static String getDisplayKeyword(String, String);
-    method public static String getDisplayKeyword(String, android.icu.util.ULocale);
-    method public String getDisplayKeywordValue(String);
-    method public String getDisplayKeywordValue(String, android.icu.util.ULocale);
-    method public static String getDisplayKeywordValue(String, String, String);
-    method public static String getDisplayKeywordValue(String, String, android.icu.util.ULocale);
-    method public String getDisplayLanguage();
-    method public String getDisplayLanguage(android.icu.util.ULocale);
-    method public static String getDisplayLanguage(String, String);
-    method public static String getDisplayLanguage(String, android.icu.util.ULocale);
-    method public String getDisplayLanguageWithDialect();
-    method public String getDisplayLanguageWithDialect(android.icu.util.ULocale);
-    method public static String getDisplayLanguageWithDialect(String, String);
-    method public static String getDisplayLanguageWithDialect(String, android.icu.util.ULocale);
-    method public String getDisplayName();
-    method public String getDisplayName(android.icu.util.ULocale);
-    method public static String getDisplayName(String, String);
-    method public static String getDisplayName(String, android.icu.util.ULocale);
-    method public String getDisplayNameWithDialect();
-    method public String getDisplayNameWithDialect(android.icu.util.ULocale);
-    method public static String getDisplayNameWithDialect(String, String);
-    method public static String getDisplayNameWithDialect(String, android.icu.util.ULocale);
-    method public String getDisplayScript();
-    method public String getDisplayScript(android.icu.util.ULocale);
-    method public static String getDisplayScript(String, String);
-    method public static String getDisplayScript(String, android.icu.util.ULocale);
-    method public String getDisplayVariant();
-    method public String getDisplayVariant(android.icu.util.ULocale);
-    method public static String getDisplayVariant(String, String);
-    method public static String getDisplayVariant(String, android.icu.util.ULocale);
-    method public String getExtension(char);
-    method public java.util.Set<java.lang.Character> getExtensionKeys();
-    method public static String getFallback(String);
-    method public android.icu.util.ULocale getFallback();
-    method public String getISO3Country();
-    method public static String getISO3Country(String);
-    method public String getISO3Language();
-    method public static String getISO3Language(String);
-    method public static String[] getISOCountries();
-    method public static String[] getISOLanguages();
-    method public String getKeywordValue(String);
-    method public static String getKeywordValue(String, String);
-    method public java.util.Iterator<java.lang.String> getKeywords();
-    method public static java.util.Iterator<java.lang.String> getKeywords(String);
-    method public String getLanguage();
-    method public static String getLanguage(String);
-    method public String getLineOrientation();
-    method public String getName();
-    method public static String getName(String);
-    method public String getScript();
-    method public static String getScript(String);
-    method public java.util.Set<java.lang.String> getUnicodeLocaleAttributes();
-    method public java.util.Set<java.lang.String> getUnicodeLocaleKeys();
-    method public String getUnicodeLocaleType(String);
-    method public String getVariant();
-    method public static String getVariant(String);
-    method public boolean isRightToLeft();
-    method public static android.icu.util.ULocale minimizeSubtags(android.icu.util.ULocale);
-    method public android.icu.util.ULocale setKeywordValue(String, String);
-    method public static String setKeywordValue(String, String, String);
-    method public String toLanguageTag();
-    method public static String toLegacyKey(String);
-    method public static String toLegacyType(String, String);
-    method public java.util.Locale toLocale();
-    method public static String toUnicodeLocaleKey(String);
-    method public static String toUnicodeLocaleType(String, String);
-    field public static final android.icu.util.ULocale CANADA;
-    field public static final android.icu.util.ULocale CANADA_FRENCH;
-    field public static final android.icu.util.ULocale CHINA;
-    field public static final android.icu.util.ULocale CHINESE;
-    field public static final android.icu.util.ULocale ENGLISH;
-    field public static final android.icu.util.ULocale FRANCE;
-    field public static final android.icu.util.ULocale FRENCH;
-    field public static final android.icu.util.ULocale GERMAN;
-    field public static final android.icu.util.ULocale GERMANY;
-    field public static final android.icu.util.ULocale ITALIAN;
-    field public static final android.icu.util.ULocale ITALY;
-    field public static final android.icu.util.ULocale JAPAN;
-    field public static final android.icu.util.ULocale JAPANESE;
-    field public static final android.icu.util.ULocale KOREA;
-    field public static final android.icu.util.ULocale KOREAN;
-    field public static final android.icu.util.ULocale PRC;
-    field public static final char PRIVATE_USE_EXTENSION = 120; // 0x0078 'x'
-    field public static final android.icu.util.ULocale ROOT;
-    field public static final android.icu.util.ULocale SIMPLIFIED_CHINESE;
-    field public static final android.icu.util.ULocale TAIWAN;
-    field public static final android.icu.util.ULocale TRADITIONAL_CHINESE;
-    field public static final android.icu.util.ULocale UK;
-    field public static final char UNICODE_LOCALE_EXTENSION = 117; // 0x0075 'u'
-    field public static final android.icu.util.ULocale US;
-  }
-
-  public static final class ULocale.Builder {
-    ctor public ULocale.Builder();
-    method public android.icu.util.ULocale.Builder addUnicodeLocaleAttribute(String);
-    method public android.icu.util.ULocale build();
-    method public android.icu.util.ULocale.Builder clear();
-    method public android.icu.util.ULocale.Builder clearExtensions();
-    method public android.icu.util.ULocale.Builder removeUnicodeLocaleAttribute(String);
-    method public android.icu.util.ULocale.Builder setExtension(char, String);
-    method public android.icu.util.ULocale.Builder setLanguage(String);
-    method public android.icu.util.ULocale.Builder setLanguageTag(String);
-    method public android.icu.util.ULocale.Builder setLocale(android.icu.util.ULocale);
-    method public android.icu.util.ULocale.Builder setRegion(String);
-    method public android.icu.util.ULocale.Builder setScript(String);
-    method public android.icu.util.ULocale.Builder setUnicodeLocaleKeyword(String, String);
-    method public android.icu.util.ULocale.Builder setVariant(String);
-  }
-
-  public enum ULocale.Category {
-    enum_constant public static final android.icu.util.ULocale.Category DISPLAY;
-    enum_constant public static final android.icu.util.ULocale.Category FORMAT;
-  }
-
-  public final class UniversalTimeScale {
-    method public static android.icu.math.BigDecimal bigDecimalFrom(double, int);
-    method public static android.icu.math.BigDecimal bigDecimalFrom(long, int);
-    method public static android.icu.math.BigDecimal bigDecimalFrom(android.icu.math.BigDecimal, int);
-    method public static long from(long, int);
-    method public static long getTimeScaleValue(int, int);
-    method public static android.icu.math.BigDecimal toBigDecimal(long, int);
-    method public static android.icu.math.BigDecimal toBigDecimal(android.icu.math.BigDecimal, int);
-    method public static long toLong(long, int);
-    field public static final int DB2_TIME = 8; // 0x8
-    field public static final int DOTNET_DATE_TIME = 4; // 0x4
-    field public static final int EPOCH_OFFSET_PLUS_1_VALUE = 6; // 0x6
-    field public static final int EPOCH_OFFSET_VALUE = 1; // 0x1
-    field public static final int EXCEL_TIME = 7; // 0x7
-    field public static final int FROM_MAX_VALUE = 3; // 0x3
-    field public static final int FROM_MIN_VALUE = 2; // 0x2
-    field public static final int ICU4C_TIME = 2; // 0x2
-    field public static final int JAVA_TIME = 0; // 0x0
-    field public static final int MAC_OLD_TIME = 5; // 0x5
-    field public static final int MAC_TIME = 6; // 0x6
-    field @Deprecated public static final int MAX_SCALE = 10; // 0xa
-    field public static final int TO_MAX_VALUE = 5; // 0x5
-    field public static final int TO_MIN_VALUE = 4; // 0x4
-    field public static final int UNITS_VALUE = 0; // 0x0
-    field public static final int UNIX_MICROSECONDS_TIME = 9; // 0x9
-    field public static final int UNIX_TIME = 1; // 0x1
-    field public static final int WINDOWS_FILE_TIME = 3; // 0x3
-  }
-
-  public interface ValueIterator {
-    method public boolean next(android.icu.util.ValueIterator.Element);
-    method public void reset();
-    method public void setRange(int, int);
-  }
-
-  public static final class ValueIterator.Element {
-    ctor public ValueIterator.Element();
-    field public int integer;
-    field public Object value;
-  }
-
-  public final class VersionInfo implements java.lang.Comparable<android.icu.util.VersionInfo> {
-    method public int compareTo(android.icu.util.VersionInfo);
-    method public static android.icu.util.VersionInfo getInstance(String);
-    method public static android.icu.util.VersionInfo getInstance(int, int, int, int);
-    method public static android.icu.util.VersionInfo getInstance(int, int, int);
-    method public static android.icu.util.VersionInfo getInstance(int, int);
-    method public static android.icu.util.VersionInfo getInstance(int);
-    method public int getMajor();
-    method public int getMicro();
-    method public int getMilli();
-    method public int getMinor();
-    field public static final android.icu.util.VersionInfo ICU_VERSION;
-    field public static final android.icu.util.VersionInfo UCOL_BUILDER_VERSION;
-    field public static final android.icu.util.VersionInfo UCOL_RUNTIME_VERSION;
-    field public static final android.icu.util.VersionInfo UNICODE_10_0;
-    field public static final android.icu.util.VersionInfo UNICODE_11_0;
-    field public static final android.icu.util.VersionInfo UNICODE_12_0;
-    field public static final android.icu.util.VersionInfo UNICODE_12_1;
-    field public static final android.icu.util.VersionInfo UNICODE_13_0;
-    field public static final android.icu.util.VersionInfo UNICODE_1_0;
-    field public static final android.icu.util.VersionInfo UNICODE_1_0_1;
-    field public static final android.icu.util.VersionInfo UNICODE_1_1_0;
-    field public static final android.icu.util.VersionInfo UNICODE_1_1_5;
-    field public static final android.icu.util.VersionInfo UNICODE_2_0;
-    field public static final android.icu.util.VersionInfo UNICODE_2_1_2;
-    field public static final android.icu.util.VersionInfo UNICODE_2_1_5;
-    field public static final android.icu.util.VersionInfo UNICODE_2_1_8;
-    field public static final android.icu.util.VersionInfo UNICODE_2_1_9;
-    field public static final android.icu.util.VersionInfo UNICODE_3_0;
-    field public static final android.icu.util.VersionInfo UNICODE_3_0_1;
-    field public static final android.icu.util.VersionInfo UNICODE_3_1_0;
-    field public static final android.icu.util.VersionInfo UNICODE_3_1_1;
-    field public static final android.icu.util.VersionInfo UNICODE_3_2;
-    field public static final android.icu.util.VersionInfo UNICODE_4_0;
-    field public static final android.icu.util.VersionInfo UNICODE_4_0_1;
-    field public static final android.icu.util.VersionInfo UNICODE_4_1;
-    field public static final android.icu.util.VersionInfo UNICODE_5_0;
-    field public static final android.icu.util.VersionInfo UNICODE_5_1;
-    field public static final android.icu.util.VersionInfo UNICODE_5_2;
-    field public static final android.icu.util.VersionInfo UNICODE_6_0;
-    field public static final android.icu.util.VersionInfo UNICODE_6_1;
-    field public static final android.icu.util.VersionInfo UNICODE_6_2;
-    field public static final android.icu.util.VersionInfo UNICODE_6_3;
-    field public static final android.icu.util.VersionInfo UNICODE_7_0;
-    field public static final android.icu.util.VersionInfo UNICODE_8_0;
-    field public static final android.icu.util.VersionInfo UNICODE_9_0;
-  }
-
-}
-
-package android.inputmethodservice {
-
-  public abstract class AbstractInputMethodService extends android.app.Service implements android.view.KeyEvent.Callback {
-    ctor public AbstractInputMethodService();
-    method public android.view.KeyEvent.DispatcherState getKeyDispatcherState();
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method public abstract android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodImpl onCreateInputMethodInterface();
-    method public abstract android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodSessionImpl onCreateInputMethodSessionInterface();
-    method public boolean onGenericMotionEvent(android.view.MotionEvent);
-    method public boolean onTrackballEvent(android.view.MotionEvent);
-  }
-
-  public abstract class AbstractInputMethodService.AbstractInputMethodImpl implements android.view.inputmethod.InputMethod {
-    ctor public AbstractInputMethodService.AbstractInputMethodImpl();
-    method @MainThread public void createSession(android.view.inputmethod.InputMethod.SessionCallback);
-    method @MainThread public void revokeSession(android.view.inputmethod.InputMethodSession);
-    method @MainThread public void setSessionEnabled(android.view.inputmethod.InputMethodSession, boolean);
-  }
-
-  public abstract class AbstractInputMethodService.AbstractInputMethodSessionImpl implements android.view.inputmethod.InputMethodSession {
-    ctor public AbstractInputMethodService.AbstractInputMethodSessionImpl();
-    method public void dispatchGenericMotionEvent(int, android.view.MotionEvent, android.view.inputmethod.InputMethodSession.EventCallback);
-    method public void dispatchKeyEvent(int, android.view.KeyEvent, android.view.inputmethod.InputMethodSession.EventCallback);
-    method public void dispatchTrackballEvent(int, android.view.MotionEvent, android.view.inputmethod.InputMethodSession.EventCallback);
-    method public boolean isEnabled();
-    method public boolean isRevoked();
-    method public void revokeSelf();
-    method public void setEnabled(boolean);
-  }
-
-  public class ExtractEditText extends android.widget.EditText {
-    ctor public ExtractEditText(android.content.Context);
-    ctor public ExtractEditText(android.content.Context, android.util.AttributeSet);
-    ctor public ExtractEditText(android.content.Context, android.util.AttributeSet, int);
-    ctor public ExtractEditText(android.content.Context, android.util.AttributeSet, int, int);
-    method public void finishInternalChanges();
-    method public boolean hasVerticalScrollBar();
-    method public void startInternalChanges();
-  }
-
-  public class InputMethodService extends android.inputmethodservice.AbstractInputMethodService {
-    ctor public InputMethodService();
-    method @Deprecated public boolean enableHardwareAcceleration();
-    method public int getBackDisposition();
-    method public int getCandidatesHiddenVisibility();
-    method public android.view.inputmethod.InputBinding getCurrentInputBinding();
-    method public android.view.inputmethod.InputConnection getCurrentInputConnection();
-    method public android.view.inputmethod.EditorInfo getCurrentInputEditorInfo();
-    method public boolean getCurrentInputStarted();
-    method @Deprecated public int getInputMethodWindowRecommendedHeight();
-    method public android.view.LayoutInflater getLayoutInflater();
-    method public int getMaxWidth();
-    method public CharSequence getTextForImeAction(int);
-    method public android.app.Dialog getWindow();
-    method public void hideStatusIcon();
-    method public void hideWindow();
-    method public boolean isExtractViewShown();
-    method public boolean isFullscreenMode();
-    method public boolean isInputViewShown();
-    method public boolean isShowInputRequested();
-    method public void onAppPrivateCommand(String, android.os.Bundle);
-    method public void onBindInput();
-    method public void onComputeInsets(android.inputmethodservice.InputMethodService.Insets);
-    method public void onConfigureWindow(android.view.Window, boolean, boolean);
-    method public android.view.View onCreateCandidatesView();
-    method public android.view.View onCreateExtractTextView();
-    method @Nullable public android.view.inputmethod.InlineSuggestionsRequest onCreateInlineSuggestionsRequest(@NonNull android.os.Bundle);
-    method public android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodImpl onCreateInputMethodInterface();
-    method public android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodSessionImpl onCreateInputMethodSessionInterface();
-    method public android.view.View onCreateInputView();
-    method protected void onCurrentInputMethodSubtypeChanged(android.view.inputmethod.InputMethodSubtype);
-    method public void onDisplayCompletions(android.view.inputmethod.CompletionInfo[]);
-    method public boolean onEvaluateFullscreenMode();
-    method @CallSuper public boolean onEvaluateInputViewShown();
-    method public boolean onExtractTextContextMenuItem(int);
-    method public void onExtractedCursorMovement(int, int);
-    method public void onExtractedSelectionChanged(int, int);
-    method public void onExtractedTextClicked();
-    method public void onExtractingInputChanged(android.view.inputmethod.EditorInfo);
-    method public void onFinishCandidatesView(boolean);
-    method public void onFinishInput();
-    method public void onFinishInputView(boolean);
-    method public void onInitializeInterface();
-    method public boolean onInlineSuggestionsResponse(@NonNull android.view.inputmethod.InlineSuggestionsResponse);
-    method public boolean onKeyDown(int, android.view.KeyEvent);
-    method public boolean onKeyLongPress(int, android.view.KeyEvent);
-    method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
-    method public boolean onKeyUp(int, android.view.KeyEvent);
-    method public boolean onShowInputRequested(int, boolean);
-    method public void onStartCandidatesView(android.view.inputmethod.EditorInfo, boolean);
-    method public void onStartInput(android.view.inputmethod.EditorInfo, boolean);
-    method public void onStartInputView(android.view.inputmethod.EditorInfo, boolean);
-    method public void onUnbindInput();
-    method @Deprecated public void onUpdateCursor(android.graphics.Rect);
-    method public void onUpdateCursorAnchorInfo(android.view.inputmethod.CursorAnchorInfo);
-    method public void onUpdateExtractedText(int, android.view.inputmethod.ExtractedText);
-    method public void onUpdateExtractingViews(android.view.inputmethod.EditorInfo);
-    method public void onUpdateExtractingVisibility(android.view.inputmethod.EditorInfo);
-    method public void onUpdateSelection(int, int, int, int, int, int);
-    method @Deprecated public void onViewClicked(boolean);
-    method public void onWindowHidden();
-    method public void onWindowShown();
-    method public void requestHideSelf(int);
-    method public final void requestShowSelf(int);
-    method public boolean sendDefaultEditorAction(boolean);
-    method public void sendDownUpKeyEvents(int);
-    method public void sendKeyChar(char);
-    method public void setBackDisposition(int);
-    method public void setCandidatesView(android.view.View);
-    method public void setCandidatesViewShown(boolean);
-    method public void setExtractView(android.view.View);
-    method public void setExtractViewShown(boolean);
-    method public void setInputView(android.view.View);
-    method public final boolean shouldOfferSwitchingToNextInputMethod();
-    method public void showStatusIcon(@DrawableRes int);
-    method public void showWindow(boolean);
-    method public void switchInputMethod(String);
-    method public final void switchInputMethod(String, android.view.inputmethod.InputMethodSubtype);
-    method public final boolean switchToNextInputMethod(boolean);
-    method public final boolean switchToPreviousInputMethod();
-    method public void updateFullscreenMode();
-    method public void updateInputViewShown();
-    field public static final int BACK_DISPOSITION_ADJUST_NOTHING = 3; // 0x3
-    field public static final int BACK_DISPOSITION_DEFAULT = 0; // 0x0
-    field @Deprecated public static final int BACK_DISPOSITION_WILL_DISMISS = 2; // 0x2
-    field @Deprecated public static final int BACK_DISPOSITION_WILL_NOT_DISMISS = 1; // 0x1
-  }
-
-  public class InputMethodService.InputMethodImpl extends android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodImpl {
-    ctor public InputMethodService.InputMethodImpl();
-    method @MainThread public void attachToken(android.os.IBinder);
-    method @MainThread public void bindInput(android.view.inputmethod.InputBinding);
-    method @MainThread public void changeInputMethodSubtype(android.view.inputmethod.InputMethodSubtype);
-    method @MainThread public void hideSoftInput(int, android.os.ResultReceiver);
-    method @MainThread public void restartInput(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo);
-    method @MainThread public void showSoftInput(int, android.os.ResultReceiver);
-    method @MainThread public void startInput(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo);
-    method @MainThread public void unbindInput();
-  }
-
-  public class InputMethodService.InputMethodSessionImpl extends android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodSessionImpl {
-    ctor public InputMethodService.InputMethodSessionImpl();
-    method public void appPrivateCommand(String, android.os.Bundle);
-    method public void displayCompletions(android.view.inputmethod.CompletionInfo[]);
-    method public void finishInput();
-    method public void toggleSoftInput(int, int);
-    method public void updateCursor(android.graphics.Rect);
-    method public void updateCursorAnchorInfo(android.view.inputmethod.CursorAnchorInfo);
-    method public void updateExtractedText(int, android.view.inputmethod.ExtractedText);
-    method public void updateSelection(int, int, int, int, int, int);
-    method public void viewClicked(boolean);
-  }
-
-  public static final class InputMethodService.Insets {
-    ctor public InputMethodService.Insets();
-    field public static final int TOUCHABLE_INSETS_CONTENT = 1; // 0x1
-    field public static final int TOUCHABLE_INSETS_FRAME = 0; // 0x0
-    field public static final int TOUCHABLE_INSETS_REGION = 3; // 0x3
-    field public static final int TOUCHABLE_INSETS_VISIBLE = 2; // 0x2
-    field public int contentTopInsets;
-    field public int touchableInsets;
-    field public final android.graphics.Region touchableRegion;
-    field public int visibleTopInsets;
-  }
-
-  @Deprecated public class Keyboard {
-    ctor @Deprecated public Keyboard(android.content.Context, int);
-    ctor @Deprecated public Keyboard(android.content.Context, @XmlRes int, int, int, int);
-    ctor @Deprecated public Keyboard(android.content.Context, @XmlRes int, int);
-    ctor @Deprecated public Keyboard(android.content.Context, int, CharSequence, int, int);
-    method @Deprecated protected android.inputmethodservice.Keyboard.Key createKeyFromXml(android.content.res.Resources, android.inputmethodservice.Keyboard.Row, int, int, android.content.res.XmlResourceParser);
-    method @Deprecated protected android.inputmethodservice.Keyboard.Row createRowFromXml(android.content.res.Resources, android.content.res.XmlResourceParser);
-    method @Deprecated public int getHeight();
-    method @Deprecated protected int getHorizontalGap();
-    method @Deprecated protected int getKeyHeight();
-    method @Deprecated protected int getKeyWidth();
-    method @Deprecated public java.util.List<android.inputmethodservice.Keyboard.Key> getKeys();
-    method @Deprecated public int getMinWidth();
-    method @Deprecated public java.util.List<android.inputmethodservice.Keyboard.Key> getModifierKeys();
-    method @Deprecated public int[] getNearestKeys(int, int);
-    method @Deprecated public int getShiftKeyIndex();
-    method @Deprecated protected int getVerticalGap();
-    method @Deprecated public boolean isShifted();
-    method @Deprecated protected void setHorizontalGap(int);
-    method @Deprecated protected void setKeyHeight(int);
-    method @Deprecated protected void setKeyWidth(int);
-    method @Deprecated public boolean setShifted(boolean);
-    method @Deprecated protected void setVerticalGap(int);
-    field @Deprecated public static final int EDGE_BOTTOM = 8; // 0x8
-    field @Deprecated public static final int EDGE_LEFT = 1; // 0x1
-    field @Deprecated public static final int EDGE_RIGHT = 2; // 0x2
-    field @Deprecated public static final int EDGE_TOP = 4; // 0x4
-    field @Deprecated public static final int KEYCODE_ALT = -6; // 0xfffffffa
-    field @Deprecated public static final int KEYCODE_CANCEL = -3; // 0xfffffffd
-    field @Deprecated public static final int KEYCODE_DELETE = -5; // 0xfffffffb
-    field @Deprecated public static final int KEYCODE_DONE = -4; // 0xfffffffc
-    field @Deprecated public static final int KEYCODE_MODE_CHANGE = -2; // 0xfffffffe
-    field @Deprecated public static final int KEYCODE_SHIFT = -1; // 0xffffffff
-  }
-
-  @Deprecated public static class Keyboard.Key {
-    ctor @Deprecated public Keyboard.Key(android.inputmethodservice.Keyboard.Row);
-    ctor @Deprecated public Keyboard.Key(android.content.res.Resources, android.inputmethodservice.Keyboard.Row, int, int, android.content.res.XmlResourceParser);
-    method @Deprecated public int[] getCurrentDrawableState();
-    method @Deprecated public boolean isInside(int, int);
-    method @Deprecated public void onPressed();
-    method @Deprecated public void onReleased(boolean);
-    method @Deprecated public int squaredDistanceFrom(int, int);
-    field @Deprecated public int[] codes;
-    field @Deprecated public int edgeFlags;
-    field @Deprecated public int gap;
-    field @Deprecated public int height;
-    field @Deprecated public android.graphics.drawable.Drawable icon;
-    field @Deprecated public android.graphics.drawable.Drawable iconPreview;
-    field @Deprecated public CharSequence label;
-    field @Deprecated public boolean modifier;
-    field @Deprecated public boolean on;
-    field @Deprecated public CharSequence popupCharacters;
-    field @Deprecated public int popupResId;
-    field @Deprecated public boolean pressed;
-    field @Deprecated public boolean repeatable;
-    field @Deprecated public boolean sticky;
-    field @Deprecated public CharSequence text;
-    field @Deprecated public int width;
-    field @Deprecated public int x;
-    field @Deprecated public int y;
-  }
-
-  @Deprecated public static class Keyboard.Row {
-    ctor @Deprecated public Keyboard.Row(android.inputmethodservice.Keyboard);
-    ctor @Deprecated public Keyboard.Row(android.content.res.Resources, android.inputmethodservice.Keyboard, android.content.res.XmlResourceParser);
-    field @Deprecated public int defaultHeight;
-    field @Deprecated public int defaultHorizontalGap;
-    field @Deprecated public int defaultWidth;
-    field @Deprecated public int mode;
-    field @Deprecated public int rowEdgeFlags;
-    field @Deprecated public int verticalGap;
-  }
-
-  @Deprecated public class KeyboardView extends android.view.View implements android.view.View.OnClickListener {
-    ctor @Deprecated public KeyboardView(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public KeyboardView(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public KeyboardView(android.content.Context, android.util.AttributeSet, int, int);
-    method @Deprecated public void closing();
-    method @Deprecated public android.inputmethodservice.Keyboard getKeyboard();
-    method @Deprecated protected android.inputmethodservice.KeyboardView.OnKeyboardActionListener getOnKeyboardActionListener();
-    method @Deprecated public boolean handleBack();
-    method @Deprecated public void invalidateAllKeys();
-    method @Deprecated public void invalidateKey(int);
-    method @Deprecated public boolean isPreviewEnabled();
-    method @Deprecated public boolean isProximityCorrectionEnabled();
-    method @Deprecated public boolean isShifted();
-    method public void onClick(android.view.View);
-    method @Deprecated public void onDetachedFromWindow();
-    method @Deprecated public void onDraw(android.graphics.Canvas);
-    method @Deprecated protected boolean onLongPress(android.inputmethodservice.Keyboard.Key);
-    method @Deprecated public void onMeasure(int, int);
-    method @Deprecated public void onSizeChanged(int, int, int, int);
-    method @Deprecated public void setKeyboard(android.inputmethodservice.Keyboard);
-    method @Deprecated public void setOnKeyboardActionListener(android.inputmethodservice.KeyboardView.OnKeyboardActionListener);
-    method @Deprecated public void setPopupOffset(int, int);
-    method @Deprecated public void setPopupParent(android.view.View);
-    method @Deprecated public void setPreviewEnabled(boolean);
-    method @Deprecated public void setProximityCorrectionEnabled(boolean);
-    method @Deprecated public boolean setShifted(boolean);
-    method @Deprecated public void setVerticalCorrection(int);
-    method @Deprecated protected void swipeDown();
-    method @Deprecated protected void swipeLeft();
-    method @Deprecated protected void swipeRight();
-    method @Deprecated protected void swipeUp();
-  }
-
-  @Deprecated public static interface KeyboardView.OnKeyboardActionListener {
-    method @Deprecated public void onKey(int, int[]);
-    method @Deprecated public void onPress(int);
-    method @Deprecated public void onRelease(int);
-    method @Deprecated public void onText(CharSequence);
-    method @Deprecated public void swipeDown();
-    method @Deprecated public void swipeLeft();
-    method @Deprecated public void swipeRight();
-    method @Deprecated public void swipeUp();
-  }
-
-}
-
-package android.location {
-
-  public class Address implements android.os.Parcelable {
-    ctor public Address(java.util.Locale);
-    method public void clearLatitude();
-    method public void clearLongitude();
-    method public int describeContents();
-    method public String getAddressLine(int);
-    method public String getAdminArea();
-    method public String getCountryCode();
-    method public String getCountryName();
-    method public android.os.Bundle getExtras();
-    method public String getFeatureName();
-    method public double getLatitude();
-    method public java.util.Locale getLocale();
-    method public String getLocality();
-    method public double getLongitude();
-    method public int getMaxAddressLineIndex();
-    method public String getPhone();
-    method public String getPostalCode();
-    method public String getPremises();
-    method public String getSubAdminArea();
-    method public String getSubLocality();
-    method public String getSubThoroughfare();
-    method public String getThoroughfare();
-    method public String getUrl();
-    method public boolean hasLatitude();
-    method public boolean hasLongitude();
-    method public void setAddressLine(int, String);
-    method public void setAdminArea(String);
-    method public void setCountryCode(String);
-    method public void setCountryName(String);
-    method public void setExtras(android.os.Bundle);
-    method public void setFeatureName(String);
-    method public void setLatitude(double);
-    method public void setLocality(String);
-    method public void setLongitude(double);
-    method public void setPhone(String);
-    method public void setPostalCode(String);
-    method public void setPremises(String);
-    method public void setSubAdminArea(String);
-    method public void setSubLocality(String);
-    method public void setSubThoroughfare(String);
-    method public void setThoroughfare(String);
-    method public void setUrl(String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.Address> CREATOR;
-  }
-
-  public class Criteria implements android.os.Parcelable {
-    ctor public Criteria();
-    ctor public Criteria(android.location.Criteria);
-    method public int describeContents();
-    method public int getAccuracy();
-    method public int getBearingAccuracy();
-    method public int getHorizontalAccuracy();
-    method public int getPowerRequirement();
-    method public int getSpeedAccuracy();
-    method public int getVerticalAccuracy();
-    method public boolean isAltitudeRequired();
-    method public boolean isBearingRequired();
-    method public boolean isCostAllowed();
-    method public boolean isSpeedRequired();
-    method public void setAccuracy(int);
-    method public void setAltitudeRequired(boolean);
-    method public void setBearingAccuracy(int);
-    method public void setBearingRequired(boolean);
-    method public void setCostAllowed(boolean);
-    method public void setHorizontalAccuracy(int);
-    method public void setPowerRequirement(int);
-    method public void setSpeedAccuracy(int);
-    method public void setSpeedRequired(boolean);
-    method public void setVerticalAccuracy(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ACCURACY_COARSE = 2; // 0x2
-    field public static final int ACCURACY_FINE = 1; // 0x1
-    field public static final int ACCURACY_HIGH = 3; // 0x3
-    field public static final int ACCURACY_LOW = 1; // 0x1
-    field public static final int ACCURACY_MEDIUM = 2; // 0x2
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.Criteria> CREATOR;
-    field public static final int NO_REQUIREMENT = 0; // 0x0
-    field public static final int POWER_HIGH = 3; // 0x3
-    field public static final int POWER_LOW = 1; // 0x1
-    field public static final int POWER_MEDIUM = 2; // 0x2
-  }
-
-  public final class Geocoder {
-    ctor public Geocoder(android.content.Context, java.util.Locale);
-    ctor public Geocoder(android.content.Context);
-    method public java.util.List<android.location.Address> getFromLocation(double, double, int) throws java.io.IOException;
-    method public java.util.List<android.location.Address> getFromLocationName(String, int) throws java.io.IOException;
-    method public java.util.List<android.location.Address> getFromLocationName(String, int, double, double, double, double) throws java.io.IOException;
-    method public static boolean isPresent();
-  }
-
-  public final class GnssAntennaInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @FloatRange(from=0.0f) public double getCarrierFrequencyMHz();
-    method @NonNull public android.location.GnssAntennaInfo.PhaseCenterOffset getPhaseCenterOffset();
-    method @Nullable public android.location.GnssAntennaInfo.SphericalCorrections getPhaseCenterVariationCorrections();
-    method @Nullable public android.location.GnssAntennaInfo.SphericalCorrections getSignalGainCorrections();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssAntennaInfo> CREATOR;
-  }
-
-  public static class GnssAntennaInfo.Builder {
-    ctor public GnssAntennaInfo.Builder();
-    method @NonNull public android.location.GnssAntennaInfo build();
-    method @NonNull public android.location.GnssAntennaInfo.Builder setCarrierFrequencyMHz(@FloatRange(from=0.0f) double);
-    method @NonNull public android.location.GnssAntennaInfo.Builder setPhaseCenterOffset(@NonNull android.location.GnssAntennaInfo.PhaseCenterOffset);
-    method @NonNull public android.location.GnssAntennaInfo.Builder setPhaseCenterVariationCorrections(@Nullable android.location.GnssAntennaInfo.SphericalCorrections);
-    method @NonNull public android.location.GnssAntennaInfo.Builder setSignalGainCorrections(@Nullable android.location.GnssAntennaInfo.SphericalCorrections);
-  }
-
-  public static interface GnssAntennaInfo.Listener {
-    method public void onGnssAntennaInfoReceived(@NonNull java.util.List<android.location.GnssAntennaInfo>);
-  }
-
-  public static final class GnssAntennaInfo.PhaseCenterOffset implements android.os.Parcelable {
-    ctor public GnssAntennaInfo.PhaseCenterOffset(double, double, double, double, double, double);
-    method public int describeContents();
-    method @FloatRange public double getXOffsetMm();
-    method @FloatRange public double getXOffsetUncertaintyMm();
-    method @FloatRange public double getYOffsetMm();
-    method @FloatRange public double getYOffsetUncertaintyMm();
-    method @FloatRange public double getZOffsetMm();
-    method @FloatRange public double getZOffsetUncertaintyMm();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssAntennaInfo.PhaseCenterOffset> CREATOR;
-  }
-
-  public static final class GnssAntennaInfo.SphericalCorrections implements android.os.Parcelable {
-    ctor public GnssAntennaInfo.SphericalCorrections(@NonNull double[][], @NonNull double[][]);
-    method public int describeContents();
-    method @NonNull public double[][] getCorrectionUncertaintiesArray();
-    method @NonNull public double[][] getCorrectionsArray();
-    method @FloatRange(from=0.0f, to=180.0f) public double getDeltaPhi();
-    method @FloatRange(from=0.0f, to=360.0f) public double getDeltaTheta();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssAntennaInfo.SphericalCorrections> CREATOR;
-  }
-
-  public final class GnssCapabilities {
-    method public boolean hasGnssAntennaInfo();
-  }
-
-  public final class GnssClock implements android.os.Parcelable {
-    method public int describeContents();
-    method public double getBiasNanos();
-    method @FloatRange(from=0.0f) public double getBiasUncertaintyNanos();
-    method public double getDriftNanosPerSecond();
-    method @FloatRange(from=0.0f) public double getDriftUncertaintyNanosPerSecond();
-    method public long getElapsedRealtimeNanos();
-    method @FloatRange(from=0.0f) public double getElapsedRealtimeUncertaintyNanos();
-    method public long getFullBiasNanos();
-    method public int getHardwareClockDiscontinuityCount();
-    method public int getLeapSecond();
-    method @FloatRange(from=0.0) public double getReferenceCarrierFrequencyHzForIsb();
-    method @NonNull public String getReferenceCodeTypeForIsb();
-    method public int getReferenceConstellationTypeForIsb();
-    method public long getTimeNanos();
-    method @FloatRange(from=0.0f) public double getTimeUncertaintyNanos();
-    method public boolean hasBiasNanos();
-    method public boolean hasBiasUncertaintyNanos();
-    method public boolean hasDriftNanosPerSecond();
-    method public boolean hasDriftUncertaintyNanosPerSecond();
-    method public boolean hasElapsedRealtimeNanos();
-    method public boolean hasElapsedRealtimeUncertaintyNanos();
-    method public boolean hasFullBiasNanos();
-    method public boolean hasLeapSecond();
-    method public boolean hasReferenceCarrierFrequencyHzForIsb();
-    method public boolean hasReferenceCodeTypeForIsb();
-    method public boolean hasReferenceConstellationTypeForIsb();
-    method public boolean hasTimeUncertaintyNanos();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssClock> CREATOR;
-  }
-
-  public final class GnssMeasurement implements android.os.Parcelable {
-    method public int describeContents();
-    method public double getAccumulatedDeltaRangeMeters();
-    method public int getAccumulatedDeltaRangeState();
-    method public double getAccumulatedDeltaRangeUncertaintyMeters();
-    method public double getAutomaticGainControlLevelDb();
-    method @FloatRange(from=0, to=63) public double getBasebandCn0DbHz();
-    method @Deprecated public long getCarrierCycles();
-    method public float getCarrierFrequencyHz();
-    method @Deprecated public double getCarrierPhase();
-    method @Deprecated public double getCarrierPhaseUncertainty();
-    method @FloatRange(from=0, to=63) public double getCn0DbHz();
-    method @NonNull public String getCodeType();
-    method public int getConstellationType();
-    method public double getFullInterSignalBiasNanos();
-    method @FloatRange(from=0.0) public double getFullInterSignalBiasUncertaintyNanos();
-    method public int getMultipathIndicator();
-    method public double getPseudorangeRateMetersPerSecond();
-    method public double getPseudorangeRateUncertaintyMetersPerSecond();
-    method public long getReceivedSvTimeNanos();
-    method public long getReceivedSvTimeUncertaintyNanos();
-    method public double getSatelliteInterSignalBiasNanos();
-    method @FloatRange(from=0.0) public double getSatelliteInterSignalBiasUncertaintyNanos();
-    method public double getSnrInDb();
-    method public int getState();
-    method public int getSvid();
-    method public double getTimeOffsetNanos();
-    method public boolean hasAutomaticGainControlLevelDb();
-    method public boolean hasBasebandCn0DbHz();
-    method @Deprecated public boolean hasCarrierCycles();
-    method public boolean hasCarrierFrequencyHz();
-    method @Deprecated public boolean hasCarrierPhase();
-    method @Deprecated public boolean hasCarrierPhaseUncertainty();
-    method public boolean hasCodeType();
-    method public boolean hasFullInterSignalBiasNanos();
-    method public boolean hasFullInterSignalBiasUncertaintyNanos();
-    method public boolean hasSatelliteInterSignalBiasNanos();
-    method public boolean hasSatelliteInterSignalBiasUncertaintyNanos();
-    method public boolean hasSnrInDb();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ADR_STATE_CYCLE_SLIP = 4; // 0x4
-    field public static final int ADR_STATE_HALF_CYCLE_REPORTED = 16; // 0x10
-    field public static final int ADR_STATE_HALF_CYCLE_RESOLVED = 8; // 0x8
-    field public static final int ADR_STATE_RESET = 2; // 0x2
-    field public static final int ADR_STATE_UNKNOWN = 0; // 0x0
-    field public static final int ADR_STATE_VALID = 1; // 0x1
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssMeasurement> CREATOR;
-    field public static final int MULTIPATH_INDICATOR_DETECTED = 1; // 0x1
-    field public static final int MULTIPATH_INDICATOR_NOT_DETECTED = 2; // 0x2
-    field public static final int MULTIPATH_INDICATOR_UNKNOWN = 0; // 0x0
-    field public static final int STATE_2ND_CODE_LOCK = 65536; // 0x10000
-    field public static final int STATE_BDS_D2_BIT_SYNC = 256; // 0x100
-    field public static final int STATE_BDS_D2_SUBFRAME_SYNC = 512; // 0x200
-    field public static final int STATE_BIT_SYNC = 2; // 0x2
-    field public static final int STATE_CODE_LOCK = 1; // 0x1
-    field public static final int STATE_GAL_E1BC_CODE_LOCK = 1024; // 0x400
-    field public static final int STATE_GAL_E1B_PAGE_SYNC = 4096; // 0x1000
-    field public static final int STATE_GAL_E1C_2ND_CODE_LOCK = 2048; // 0x800
-    field public static final int STATE_GLO_STRING_SYNC = 64; // 0x40
-    field public static final int STATE_GLO_TOD_DECODED = 128; // 0x80
-    field public static final int STATE_GLO_TOD_KNOWN = 32768; // 0x8000
-    field public static final int STATE_MSEC_AMBIGUOUS = 16; // 0x10
-    field public static final int STATE_SBAS_SYNC = 8192; // 0x2000
-    field public static final int STATE_SUBFRAME_SYNC = 4; // 0x4
-    field public static final int STATE_SYMBOL_SYNC = 32; // 0x20
-    field public static final int STATE_TOW_DECODED = 8; // 0x8
-    field public static final int STATE_TOW_KNOWN = 16384; // 0x4000
-    field public static final int STATE_UNKNOWN = 0; // 0x0
-  }
-
-  public final class GnssMeasurementsEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.location.GnssClock getClock();
-    method @NonNull public java.util.Collection<android.location.GnssMeasurement> getMeasurements();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssMeasurementsEvent> CREATOR;
-  }
-
-  public abstract static class GnssMeasurementsEvent.Callback {
-    ctor public GnssMeasurementsEvent.Callback();
-    method public void onGnssMeasurementsReceived(android.location.GnssMeasurementsEvent);
-    method public void onStatusChanged(int);
-    field public static final int STATUS_LOCATION_DISABLED = 2; // 0x2
-    field public static final int STATUS_NOT_ALLOWED = 3; // 0x3
-    field public static final int STATUS_NOT_SUPPORTED = 0; // 0x0
-    field public static final int STATUS_READY = 1; // 0x1
-  }
-
-  public final class GnssNavigationMessage implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public byte[] getData();
-    method public int getMessageId();
-    method public int getStatus();
-    method public int getSubmessageId();
-    method public int getSvid();
-    method public int getType();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssNavigationMessage> CREATOR;
-    field public static final int STATUS_PARITY_PASSED = 1; // 0x1
-    field public static final int STATUS_PARITY_REBUILT = 2; // 0x2
-    field public static final int STATUS_UNKNOWN = 0; // 0x0
-    field public static final int TYPE_BDS_CNAV1 = 1283; // 0x503
-    field public static final int TYPE_BDS_CNAV2 = 1284; // 0x504
-    field public static final int TYPE_BDS_D1 = 1281; // 0x501
-    field public static final int TYPE_BDS_D2 = 1282; // 0x502
-    field public static final int TYPE_GAL_F = 1538; // 0x602
-    field public static final int TYPE_GAL_I = 1537; // 0x601
-    field public static final int TYPE_GLO_L1CA = 769; // 0x301
-    field public static final int TYPE_GPS_CNAV2 = 260; // 0x104
-    field public static final int TYPE_GPS_L1CA = 257; // 0x101
-    field public static final int TYPE_GPS_L2CNAV = 258; // 0x102
-    field public static final int TYPE_GPS_L5CNAV = 259; // 0x103
-    field public static final int TYPE_IRN_L5CA = 1793; // 0x701
-    field public static final int TYPE_QZS_L1CA = 1025; // 0x401
-    field public static final int TYPE_SBS = 513; // 0x201
-    field public static final int TYPE_UNKNOWN = 0; // 0x0
-  }
-
-  public abstract static class GnssNavigationMessage.Callback {
-    ctor public GnssNavigationMessage.Callback();
-    method public void onGnssNavigationMessageReceived(android.location.GnssNavigationMessage);
-    method public void onStatusChanged(int);
-    field public static final int STATUS_LOCATION_DISABLED = 2; // 0x2
-    field public static final int STATUS_NOT_SUPPORTED = 0; // 0x0
-    field public static final int STATUS_READY = 1; // 0x1
-  }
-
-  public final class GnssStatus {
-    method @FloatRange(from=0, to=360) public float getAzimuthDegrees(@IntRange(from=0) int);
-    method @FloatRange(from=0, to=63) public float getBasebandCn0DbHz(@IntRange(from=0) int);
-    method @FloatRange(from=0) public float getCarrierFrequencyHz(@IntRange(from=0) int);
-    method @FloatRange(from=0, to=63) public float getCn0DbHz(@IntRange(from=0) int);
-    method public int getConstellationType(@IntRange(from=0) int);
-    method @FloatRange(from=0xffffffa6, to=90) public float getElevationDegrees(@IntRange(from=0) int);
-    method @IntRange(from=0) public int getSatelliteCount();
-    method @IntRange(from=1, to=200) public int getSvid(@IntRange(from=0) int);
-    method public boolean hasAlmanacData(@IntRange(from=0) int);
-    method public boolean hasBasebandCn0DbHz(@IntRange(from=0) int);
-    method public boolean hasCarrierFrequencyHz(@IntRange(from=0) int);
-    method public boolean hasEphemerisData(@IntRange(from=0) int);
-    method public boolean usedInFix(@IntRange(from=0) int);
-    field public static final int CONSTELLATION_BEIDOU = 5; // 0x5
-    field public static final int CONSTELLATION_GALILEO = 6; // 0x6
-    field public static final int CONSTELLATION_GLONASS = 3; // 0x3
-    field public static final int CONSTELLATION_GPS = 1; // 0x1
-    field public static final int CONSTELLATION_IRNSS = 7; // 0x7
-    field public static final int CONSTELLATION_QZSS = 4; // 0x4
-    field public static final int CONSTELLATION_SBAS = 2; // 0x2
-    field public static final int CONSTELLATION_UNKNOWN = 0; // 0x0
-  }
-
-  public static final class GnssStatus.Builder {
-    ctor public GnssStatus.Builder();
-    method @NonNull public android.location.GnssStatus.Builder addSatellite(int, @IntRange(from=1, to=200) int, @FloatRange(from=0, to=63) float, @FloatRange(from=0xffffffa6, to=90) float, @FloatRange(from=0, to=360) float, boolean, boolean, boolean, boolean, @FloatRange(from=0) float, boolean, @FloatRange(from=0, to=63) float);
-    method @NonNull public android.location.GnssStatus build();
-    method @NonNull public android.location.GnssStatus.Builder clearSatellites();
-  }
-
-  public abstract static class GnssStatus.Callback {
-    ctor public GnssStatus.Callback();
-    method public void onFirstFix(int);
-    method public void onSatelliteStatusChanged(@NonNull android.location.GnssStatus);
-    method public void onStarted();
-    method public void onStopped();
-  }
-
-  @Deprecated public final class GpsSatellite {
-    method @Deprecated public float getAzimuth();
-    method @Deprecated public float getElevation();
-    method @Deprecated public int getPrn();
-    method @Deprecated public float getSnr();
-    method @Deprecated public boolean hasAlmanac();
-    method @Deprecated public boolean hasEphemeris();
-    method @Deprecated public boolean usedInFix();
-  }
-
-  @Deprecated public final class GpsStatus {
-    method @Deprecated @NonNull public static android.location.GpsStatus create(@NonNull android.location.GnssStatus, int);
-    method @Deprecated public int getMaxSatellites();
-    method @Deprecated public Iterable<android.location.GpsSatellite> getSatellites();
-    method @Deprecated public int getTimeToFirstFix();
-    field @Deprecated public static final int GPS_EVENT_FIRST_FIX = 3; // 0x3
-    field @Deprecated public static final int GPS_EVENT_SATELLITE_STATUS = 4; // 0x4
-    field @Deprecated public static final int GPS_EVENT_STARTED = 1; // 0x1
-    field @Deprecated public static final int GPS_EVENT_STOPPED = 2; // 0x2
-  }
-
-  @Deprecated public static interface GpsStatus.Listener {
-    method @Deprecated public void onGpsStatusChanged(int);
-  }
-
-  @Deprecated public static interface GpsStatus.NmeaListener {
-    method @Deprecated public void onNmeaReceived(long, String);
-  }
-
-  public class Location implements android.os.Parcelable {
-    ctor public Location(String);
-    ctor public Location(android.location.Location);
-    method public float bearingTo(android.location.Location);
-    method public static String convert(double, int);
-    method public static double convert(String);
-    method public int describeContents();
-    method public static void distanceBetween(double, double, double, double, float[]);
-    method public float distanceTo(android.location.Location);
-    method public void dump(android.util.Printer, String);
-    method public float getAccuracy();
-    method public double getAltitude();
-    method public float getBearing();
-    method public float getBearingAccuracyDegrees();
-    method public long getElapsedRealtimeNanos();
-    method public double getElapsedRealtimeUncertaintyNanos();
-    method public android.os.Bundle getExtras();
-    method public double getLatitude();
-    method public double getLongitude();
-    method public String getProvider();
-    method public float getSpeed();
-    method public float getSpeedAccuracyMetersPerSecond();
-    method public long getTime();
-    method public float getVerticalAccuracyMeters();
-    method public boolean hasAccuracy();
-    method public boolean hasAltitude();
-    method public boolean hasBearing();
-    method public boolean hasBearingAccuracy();
-    method public boolean hasElapsedRealtimeUncertaintyNanos();
-    method public boolean hasSpeed();
-    method public boolean hasSpeedAccuracy();
-    method public boolean hasVerticalAccuracy();
-    method public boolean isFromMockProvider();
-    method @Deprecated public void removeAccuracy();
-    method @Deprecated public void removeAltitude();
-    method @Deprecated public void removeBearing();
-    method @Deprecated public void removeSpeed();
-    method public void reset();
-    method public void set(android.location.Location);
-    method public void setAccuracy(float);
-    method public void setAltitude(double);
-    method public void setBearing(float);
-    method public void setBearingAccuracyDegrees(float);
-    method public void setElapsedRealtimeNanos(long);
-    method public void setElapsedRealtimeUncertaintyNanos(double);
-    method public void setExtras(android.os.Bundle);
-    method public void setLatitude(double);
-    method public void setLongitude(double);
-    method public void setProvider(String);
-    method public void setSpeed(float);
-    method public void setSpeedAccuracyMetersPerSecond(float);
-    method public void setTime(long);
-    method public void setVerticalAccuracyMeters(float);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.Location> CREATOR;
-    field public static final int FORMAT_DEGREES = 0; // 0x0
-    field public static final int FORMAT_MINUTES = 1; // 0x1
-    field public static final int FORMAT_SECONDS = 2; // 0x2
-  }
-
-  public interface LocationListener {
-    method public void onLocationChanged(@NonNull android.location.Location);
-    method public default void onProviderDisabled(@NonNull String);
-    method public default void onProviderEnabled(@NonNull String);
-    method @Deprecated public default void onStatusChanged(String, int, android.os.Bundle);
-  }
-
-  public class LocationManager {
-    method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addGpsStatusListener(android.location.GpsStatus.Listener);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(@NonNull android.location.GpsStatus.NmeaListener);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(@NonNull android.location.OnNmeaMessageListener);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(@NonNull android.location.OnNmeaMessageListener, @Nullable android.os.Handler);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(@NonNull java.util.concurrent.Executor, @NonNull android.location.OnNmeaMessageListener);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void addProximityAlert(double, double, float, long, @NonNull android.app.PendingIntent);
-    method public void addTestProvider(@NonNull String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int);
-    method @Deprecated public void clearTestProviderEnabled(@NonNull String);
-    method @Deprecated public void clearTestProviderLocation(@NonNull String);
-    method @Deprecated public void clearTestProviderStatus(@NonNull String);
-    method @NonNull public java.util.List<java.lang.String> getAllProviders();
-    method @Nullable public String getBestProvider(@NonNull android.location.Criteria, boolean);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void getCurrentLocation(@NonNull String, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.location.Location>);
-    method @NonNull public android.location.GnssCapabilities getGnssCapabilities();
-    method @Nullable public String getGnssHardwareModelName();
-    method public int getGnssYearOfHardware();
-    method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public android.location.GpsStatus getGpsStatus(@Nullable android.location.GpsStatus);
-    method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public android.location.Location getLastKnownLocation(@NonNull String);
-    method @Nullable public android.location.LocationProvider getProvider(@NonNull String);
-    method @NonNull public java.util.List<java.lang.String> getProviders(boolean);
-    method @NonNull public java.util.List<java.lang.String> getProviders(@NonNull android.location.Criteria, boolean);
-    method public boolean isLocationEnabled();
-    method public boolean isProviderEnabled(@NonNull String);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerAntennaInfoListener(@NonNull java.util.concurrent.Executor, @NonNull android.location.GnssAntennaInfo.Listener);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(@NonNull android.location.GnssMeasurementsEvent.Callback);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(@NonNull android.location.GnssMeasurementsEvent.Callback, @Nullable android.os.Handler);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(@NonNull java.util.concurrent.Executor, @NonNull android.location.GnssMeasurementsEvent.Callback);
-    method @Deprecated public boolean registerGnssNavigationMessageCallback(@NonNull android.location.GnssNavigationMessage.Callback);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssNavigationMessageCallback(@NonNull android.location.GnssNavigationMessage.Callback, @Nullable android.os.Handler);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssNavigationMessageCallback(@NonNull java.util.concurrent.Executor, @NonNull android.location.GnssNavigationMessage.Callback);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssStatusCallback(@NonNull android.location.GnssStatus.Callback);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssStatusCallback(@NonNull android.location.GnssStatus.Callback, @Nullable android.os.Handler);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssStatusCallback(@NonNull java.util.concurrent.Executor, @NonNull android.location.GnssStatus.Callback);
-    method @Deprecated public void removeGpsStatusListener(android.location.GpsStatus.Listener);
-    method @Deprecated public void removeNmeaListener(@NonNull android.location.GpsStatus.NmeaListener);
-    method public void removeNmeaListener(@NonNull android.location.OnNmeaMessageListener);
-    method @RequiresPermission(anyOf={"android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION"}, apis="..22") public void removeProximityAlert(@NonNull android.app.PendingIntent);
-    method public void removeTestProvider(@NonNull String);
-    method @RequiresPermission(anyOf={"android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION"}, apis="..22") public void removeUpdates(@NonNull android.location.LocationListener);
-    method public void removeUpdates(@NonNull android.app.PendingIntent);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull String, long, float, @NonNull android.location.LocationListener);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull String, long, float, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull String, long, float, @NonNull java.util.concurrent.Executor, @NonNull android.location.LocationListener);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(long, float, @NonNull android.location.Criteria, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(long, float, @NonNull android.location.Criteria, @NonNull java.util.concurrent.Executor, @NonNull android.location.LocationListener);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull String, long, float, @NonNull android.app.PendingIntent);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(long, float, @NonNull android.location.Criteria, @NonNull android.app.PendingIntent);
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(@NonNull String, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(@NonNull android.location.Criteria, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(@NonNull String, @NonNull android.app.PendingIntent);
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(@NonNull android.location.Criteria, @NonNull android.app.PendingIntent);
-    method public boolean sendExtraCommand(@NonNull String, @NonNull String, @Nullable android.os.Bundle);
-    method public void setTestProviderEnabled(@NonNull String, boolean);
-    method public void setTestProviderLocation(@NonNull String, @NonNull android.location.Location);
-    method @Deprecated public void setTestProviderStatus(@NonNull String, int, @Nullable android.os.Bundle, long);
-    method public void unregisterAntennaInfoListener(@NonNull android.location.GnssAntennaInfo.Listener);
-    method public void unregisterGnssMeasurementsCallback(@NonNull android.location.GnssMeasurementsEvent.Callback);
-    method public void unregisterGnssNavigationMessageCallback(@NonNull android.location.GnssNavigationMessage.Callback);
-    method public void unregisterGnssStatusCallback(@NonNull android.location.GnssStatus.Callback);
-    field public static final String EXTRA_LOCATION_ENABLED = "android.location.extra.LOCATION_ENABLED";
-    field public static final String EXTRA_PROVIDER_ENABLED = "android.location.extra.PROVIDER_ENABLED";
-    field public static final String EXTRA_PROVIDER_NAME = "android.location.extra.PROVIDER_NAME";
-    field public static final String GPS_PROVIDER = "gps";
-    field public static final String KEY_LOCATION_CHANGED = "location";
-    field public static final String KEY_PROVIDER_ENABLED = "providerEnabled";
-    field public static final String KEY_PROXIMITY_ENTERING = "entering";
-    field @Deprecated public static final String KEY_STATUS_CHANGED = "status";
-    field public static final String MODE_CHANGED_ACTION = "android.location.MODE_CHANGED";
-    field public static final String NETWORK_PROVIDER = "network";
-    field public static final String PASSIVE_PROVIDER = "passive";
-    field public static final String PROVIDERS_CHANGED_ACTION = "android.location.PROVIDERS_CHANGED";
-  }
-
-  public class LocationProvider {
-    method public int getAccuracy();
-    method public String getName();
-    method public int getPowerRequirement();
-    method public boolean hasMonetaryCost();
-    method public boolean meetsCriteria(android.location.Criteria);
-    method public boolean requiresCell();
-    method public boolean requiresNetwork();
-    method public boolean requiresSatellite();
-    method public boolean supportsAltitude();
-    method public boolean supportsBearing();
-    method public boolean supportsSpeed();
-    field @Deprecated public static final int AVAILABLE = 2; // 0x2
-    field @Deprecated public static final int OUT_OF_SERVICE = 0; // 0x0
-    field @Deprecated public static final int TEMPORARILY_UNAVAILABLE = 1; // 0x1
-  }
-
-  public interface OnNmeaMessageListener {
-    method public void onNmeaMessage(String, long);
-  }
-
-  public abstract class SettingInjectorService extends android.app.Service {
-    ctor public SettingInjectorService(String);
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method protected abstract boolean onGetEnabled();
-    method protected abstract String onGetSummary();
-    method public final void onStart(android.content.Intent, int);
-    method public final int onStartCommand(android.content.Intent, int, int);
-    method public static final void refreshSettings(@NonNull android.content.Context);
-    field public static final String ACTION_INJECTED_SETTING_CHANGED = "android.location.InjectedSettingChanged";
-    field public static final String ACTION_SERVICE_INTENT = "android.location.SettingInjectorService";
-    field public static final String ATTRIBUTES_NAME = "injected-location-setting";
-    field public static final String META_DATA_NAME = "android.location.SettingInjectorService";
-  }
-
-}
-
-package android.media {
-
-  public class AsyncPlayer {
-    ctor public AsyncPlayer(String);
-    method @Deprecated public void play(android.content.Context, android.net.Uri, boolean, int);
-    method public void play(@NonNull android.content.Context, @NonNull android.net.Uri, boolean, @NonNull android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
-    method public void stop();
-  }
-
-  public final class AudioAttributes implements android.os.Parcelable {
-    method public boolean areHapticChannelsMuted();
-    method public int describeContents();
-    method public int getAllowedCapturePolicy();
-    method public int getContentType();
-    method public int getFlags();
-    method public int getUsage();
-    method public int getVolumeControlStream();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ALLOW_CAPTURE_BY_ALL = 1; // 0x1
-    field public static final int ALLOW_CAPTURE_BY_NONE = 3; // 0x3
-    field public static final int ALLOW_CAPTURE_BY_SYSTEM = 2; // 0x2
-    field public static final int CONTENT_TYPE_MOVIE = 3; // 0x3
-    field public static final int CONTENT_TYPE_MUSIC = 2; // 0x2
-    field public static final int CONTENT_TYPE_SONIFICATION = 4; // 0x4
-    field public static final int CONTENT_TYPE_SPEECH = 1; // 0x1
-    field public static final int CONTENT_TYPE_UNKNOWN = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.AudioAttributes> CREATOR;
-    field public static final int FLAG_AUDIBILITY_ENFORCED = 1; // 0x1
-    field public static final int FLAG_HW_AV_SYNC = 16; // 0x10
-    field @Deprecated public static final int FLAG_LOW_LATENCY = 256; // 0x100
-    field public static final int USAGE_ALARM = 4; // 0x4
-    field public static final int USAGE_ASSISTANCE_ACCESSIBILITY = 11; // 0xb
-    field public static final int USAGE_ASSISTANCE_NAVIGATION_GUIDANCE = 12; // 0xc
-    field public static final int USAGE_ASSISTANCE_SONIFICATION = 13; // 0xd
-    field public static final int USAGE_ASSISTANT = 16; // 0x10
-    field public static final int USAGE_GAME = 14; // 0xe
-    field public static final int USAGE_MEDIA = 1; // 0x1
-    field public static final int USAGE_NOTIFICATION = 5; // 0x5
-    field public static final int USAGE_NOTIFICATION_COMMUNICATION_DELAYED = 9; // 0x9
-    field public static final int USAGE_NOTIFICATION_COMMUNICATION_INSTANT = 8; // 0x8
-    field public static final int USAGE_NOTIFICATION_COMMUNICATION_REQUEST = 7; // 0x7
-    field public static final int USAGE_NOTIFICATION_EVENT = 10; // 0xa
-    field public static final int USAGE_NOTIFICATION_RINGTONE = 6; // 0x6
-    field public static final int USAGE_UNKNOWN = 0; // 0x0
-    field public static final int USAGE_VOICE_COMMUNICATION = 2; // 0x2
-    field public static final int USAGE_VOICE_COMMUNICATION_SIGNALLING = 3; // 0x3
-  }
-
-  public static class AudioAttributes.Builder {
-    ctor public AudioAttributes.Builder();
-    ctor public AudioAttributes.Builder(android.media.AudioAttributes);
-    method public android.media.AudioAttributes build();
-    method @NonNull public android.media.AudioAttributes.Builder setAllowedCapturePolicy(int);
-    method public android.media.AudioAttributes.Builder setContentType(int);
-    method public android.media.AudioAttributes.Builder setFlags(int);
-    method @NonNull public android.media.AudioAttributes.Builder setHapticChannelsMuted(boolean);
-    method public android.media.AudioAttributes.Builder setLegacyStreamType(int);
-    method public android.media.AudioAttributes.Builder setUsage(int);
-  }
-
-  public abstract class AudioDeviceCallback {
-    ctor public AudioDeviceCallback();
-    method public void onAudioDevicesAdded(android.media.AudioDeviceInfo[]);
-    method public void onAudioDevicesRemoved(android.media.AudioDeviceInfo[]);
-  }
-
-  public final class AudioDeviceInfo {
-    method @NonNull public String getAddress();
-    method @NonNull public int[] getChannelCounts();
-    method @NonNull public int[] getChannelIndexMasks();
-    method @NonNull public int[] getChannelMasks();
-    method @NonNull public int[] getEncapsulationMetadataTypes();
-    method @NonNull public int[] getEncapsulationModes();
-    method @NonNull public int[] getEncodings();
-    method public int getId();
-    method public CharSequence getProductName();
-    method @NonNull public int[] getSampleRates();
-    method public int getType();
-    method public boolean isSink();
-    method public boolean isSource();
-    field public static final int TYPE_AUX_LINE = 19; // 0x13
-    field public static final int TYPE_BLE_HEADSET = 26; // 0x1a
-    field public static final int TYPE_BLE_SPEAKER = 27; // 0x1b
-    field public static final int TYPE_BLUETOOTH_A2DP = 8; // 0x8
-    field public static final int TYPE_BLUETOOTH_SCO = 7; // 0x7
-    field public static final int TYPE_BUILTIN_EARPIECE = 1; // 0x1
-    field public static final int TYPE_BUILTIN_MIC = 15; // 0xf
-    field public static final int TYPE_BUILTIN_SPEAKER = 2; // 0x2
-    field public static final int TYPE_BUILTIN_SPEAKER_SAFE = 24; // 0x18
-    field public static final int TYPE_BUS = 21; // 0x15
-    field public static final int TYPE_DOCK = 13; // 0xd
-    field public static final int TYPE_FM = 14; // 0xe
-    field public static final int TYPE_FM_TUNER = 16; // 0x10
-    field public static final int TYPE_HDMI = 9; // 0x9
-    field public static final int TYPE_HDMI_ARC = 10; // 0xa
-    field public static final int TYPE_HEARING_AID = 23; // 0x17
-    field public static final int TYPE_IP = 20; // 0x14
-    field public static final int TYPE_LINE_ANALOG = 5; // 0x5
-    field public static final int TYPE_LINE_DIGITAL = 6; // 0x6
-    field public static final int TYPE_TELEPHONY = 18; // 0x12
-    field public static final int TYPE_TV_TUNER = 17; // 0x11
-    field public static final int TYPE_UNKNOWN = 0; // 0x0
-    field public static final int TYPE_USB_ACCESSORY = 12; // 0xc
-    field public static final int TYPE_USB_DEVICE = 11; // 0xb
-    field public static final int TYPE_USB_HEADSET = 22; // 0x16
-    field public static final int TYPE_WIRED_HEADPHONES = 4; // 0x4
-    field public static final int TYPE_WIRED_HEADSET = 3; // 0x3
-  }
-
-  public final class AudioFocusRequest {
-    method public boolean acceptsDelayedFocusGain();
-    method @NonNull public android.media.AudioAttributes getAudioAttributes();
-    method public int getFocusGain();
-    method public boolean willPauseWhenDucked();
-  }
-
-  public static final class AudioFocusRequest.Builder {
-    ctor public AudioFocusRequest.Builder(int);
-    ctor public AudioFocusRequest.Builder(@NonNull android.media.AudioFocusRequest);
-    method public android.media.AudioFocusRequest build();
-    method @NonNull public android.media.AudioFocusRequest.Builder setAcceptsDelayedFocusGain(boolean);
-    method @NonNull public android.media.AudioFocusRequest.Builder setAudioAttributes(@NonNull android.media.AudioAttributes);
-    method @NonNull public android.media.AudioFocusRequest.Builder setFocusGain(int);
-    method @NonNull public android.media.AudioFocusRequest.Builder setForceDucking(boolean);
-    method @NonNull public android.media.AudioFocusRequest.Builder setOnAudioFocusChangeListener(@NonNull android.media.AudioManager.OnAudioFocusChangeListener);
-    method @NonNull public android.media.AudioFocusRequest.Builder setOnAudioFocusChangeListener(@NonNull android.media.AudioManager.OnAudioFocusChangeListener, @NonNull android.os.Handler);
-    method @NonNull public android.media.AudioFocusRequest.Builder setWillPauseWhenDucked(boolean);
-  }
-
-  public final class AudioFormat implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getChannelCount();
-    method public int getChannelIndexMask();
-    method public int getChannelMask();
-    method public int getEncoding();
-    method @IntRange(from=1) public int getFrameSizeInBytes();
-    method public int getSampleRate();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated public static final int CHANNEL_CONFIGURATION_DEFAULT = 1; // 0x1
-    field @Deprecated public static final int CHANNEL_CONFIGURATION_INVALID = 0; // 0x0
-    field @Deprecated public static final int CHANNEL_CONFIGURATION_MONO = 2; // 0x2
-    field @Deprecated public static final int CHANNEL_CONFIGURATION_STEREO = 3; // 0x3
-    field public static final int CHANNEL_INVALID = 0; // 0x0
-    field public static final int CHANNEL_IN_BACK = 32; // 0x20
-    field public static final int CHANNEL_IN_BACK_PROCESSED = 512; // 0x200
-    field public static final int CHANNEL_IN_DEFAULT = 1; // 0x1
-    field public static final int CHANNEL_IN_FRONT = 16; // 0x10
-    field public static final int CHANNEL_IN_FRONT_PROCESSED = 256; // 0x100
-    field public static final int CHANNEL_IN_LEFT = 4; // 0x4
-    field public static final int CHANNEL_IN_LEFT_PROCESSED = 64; // 0x40
-    field public static final int CHANNEL_IN_MONO = 16; // 0x10
-    field public static final int CHANNEL_IN_PRESSURE = 1024; // 0x400
-    field public static final int CHANNEL_IN_RIGHT = 8; // 0x8
-    field public static final int CHANNEL_IN_RIGHT_PROCESSED = 128; // 0x80
-    field public static final int CHANNEL_IN_STEREO = 12; // 0xc
-    field public static final int CHANNEL_IN_VOICE_DNLINK = 32768; // 0x8000
-    field public static final int CHANNEL_IN_VOICE_UPLINK = 16384; // 0x4000
-    field public static final int CHANNEL_IN_X_AXIS = 2048; // 0x800
-    field public static final int CHANNEL_IN_Y_AXIS = 4096; // 0x1000
-    field public static final int CHANNEL_IN_Z_AXIS = 8192; // 0x2000
-    field public static final int CHANNEL_OUT_5POINT1 = 252; // 0xfc
-    field @Deprecated public static final int CHANNEL_OUT_7POINT1 = 1020; // 0x3fc
-    field public static final int CHANNEL_OUT_7POINT1_SURROUND = 6396; // 0x18fc
-    field public static final int CHANNEL_OUT_BACK_CENTER = 1024; // 0x400
-    field public static final int CHANNEL_OUT_BACK_LEFT = 64; // 0x40
-    field public static final int CHANNEL_OUT_BACK_RIGHT = 128; // 0x80
-    field public static final int CHANNEL_OUT_DEFAULT = 1; // 0x1
-    field public static final int CHANNEL_OUT_FRONT_CENTER = 16; // 0x10
-    field public static final int CHANNEL_OUT_FRONT_LEFT = 4; // 0x4
-    field public static final int CHANNEL_OUT_FRONT_LEFT_OF_CENTER = 256; // 0x100
-    field public static final int CHANNEL_OUT_FRONT_RIGHT = 8; // 0x8
-    field public static final int CHANNEL_OUT_FRONT_RIGHT_OF_CENTER = 512; // 0x200
-    field public static final int CHANNEL_OUT_LOW_FREQUENCY = 32; // 0x20
-    field public static final int CHANNEL_OUT_MONO = 4; // 0x4
-    field public static final int CHANNEL_OUT_QUAD = 204; // 0xcc
-    field public static final int CHANNEL_OUT_SIDE_LEFT = 2048; // 0x800
-    field public static final int CHANNEL_OUT_SIDE_RIGHT = 4096; // 0x1000
-    field public static final int CHANNEL_OUT_STEREO = 12; // 0xc
-    field public static final int CHANNEL_OUT_SURROUND = 1052; // 0x41c
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.AudioFormat> CREATOR;
-    field public static final int ENCODING_AAC_ELD = 15; // 0xf
-    field public static final int ENCODING_AAC_HE_V1 = 11; // 0xb
-    field public static final int ENCODING_AAC_HE_V2 = 12; // 0xc
-    field public static final int ENCODING_AAC_LC = 10; // 0xa
-    field public static final int ENCODING_AAC_XHE = 16; // 0x10
-    field public static final int ENCODING_AC3 = 5; // 0x5
-    field public static final int ENCODING_AC4 = 17; // 0x11
-    field public static final int ENCODING_DEFAULT = 1; // 0x1
-    field public static final int ENCODING_DOLBY_MAT = 19; // 0x13
-    field public static final int ENCODING_DOLBY_TRUEHD = 14; // 0xe
-    field public static final int ENCODING_DTS = 7; // 0x7
-    field public static final int ENCODING_DTS_HD = 8; // 0x8
-    field public static final int ENCODING_E_AC3 = 6; // 0x6
-    field public static final int ENCODING_E_AC3_JOC = 18; // 0x12
-    field public static final int ENCODING_IEC61937 = 13; // 0xd
-    field public static final int ENCODING_INVALID = 0; // 0x0
-    field public static final int ENCODING_MP3 = 9; // 0x9
-    field public static final int ENCODING_OPUS = 20; // 0x14
-    field public static final int ENCODING_PCM_16BIT = 2; // 0x2
-    field public static final int ENCODING_PCM_8BIT = 3; // 0x3
-    field public static final int ENCODING_PCM_FLOAT = 4; // 0x4
-    field public static final int SAMPLE_RATE_UNSPECIFIED = 0; // 0x0
-  }
-
-  public static class AudioFormat.Builder {
-    ctor public AudioFormat.Builder();
-    ctor public AudioFormat.Builder(android.media.AudioFormat);
-    method public android.media.AudioFormat build();
-    method @NonNull public android.media.AudioFormat.Builder setChannelIndexMask(int);
-    method @NonNull public android.media.AudioFormat.Builder setChannelMask(int);
-    method public android.media.AudioFormat.Builder setEncoding(int) throws java.lang.IllegalArgumentException;
-    method public android.media.AudioFormat.Builder setSampleRate(int) throws java.lang.IllegalArgumentException;
-  }
-
-  public class AudioManager {
-    method @Deprecated public int abandonAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener);
-    method public int abandonAudioFocusRequest(@NonNull android.media.AudioFocusRequest);
-    method public void adjustStreamVolume(int, int, int);
-    method public void adjustSuggestedStreamVolume(int, int, int);
-    method public void adjustVolume(int, int);
-    method public void dispatchMediaKeyEvent(android.view.KeyEvent);
-    method public int generateAudioSessionId();
-    method @NonNull public java.util.List<android.media.AudioPlaybackConfiguration> getActivePlaybackConfigurations();
-    method @NonNull public java.util.List<android.media.AudioRecordingConfiguration> getActiveRecordingConfigurations();
-    method public int getAllowedCapturePolicy();
-    method public android.media.AudioDeviceInfo[] getDevices(int);
-    method public java.util.List<android.media.MicrophoneInfo> getMicrophones() throws java.io.IOException;
-    method public int getMode();
-    method public String getParameters(String);
-    method public String getProperty(String);
-    method public int getRingerMode();
-    method @Deprecated public int getRouting(int);
-    method public int getStreamMaxVolume(int);
-    method public int getStreamMinVolume(int);
-    method public int getStreamVolume(int);
-    method public float getStreamVolumeDb(int, int, int);
-    method @Deprecated public int getVibrateSetting(int);
-    method @Deprecated public boolean isBluetoothA2dpOn();
-    method public boolean isBluetoothScoAvailableOffCall();
-    method public boolean isBluetoothScoOn();
-    method public boolean isCallScreeningModeSupported();
-    method public static boolean isHapticPlaybackSupported();
-    method public boolean isMicrophoneMute();
-    method public boolean isMusicActive();
-    method public static boolean isOffloadedPlaybackSupported(@NonNull android.media.AudioFormat, @NonNull android.media.AudioAttributes);
-    method public boolean isSpeakerphoneOn();
-    method public boolean isStreamMute(int);
-    method public boolean isVolumeFixed();
-    method @Deprecated public boolean isWiredHeadsetOn();
-    method public void loadSoundEffects();
-    method public void playSoundEffect(int);
-    method public void playSoundEffect(int, float);
-    method public void registerAudioDeviceCallback(android.media.AudioDeviceCallback, @Nullable android.os.Handler);
-    method public void registerAudioPlaybackCallback(@NonNull android.media.AudioManager.AudioPlaybackCallback, @Nullable android.os.Handler);
-    method public void registerAudioRecordingCallback(@NonNull android.media.AudioManager.AudioRecordingCallback, @Nullable android.os.Handler);
-    method @Deprecated public void registerMediaButtonEventReceiver(android.content.ComponentName);
-    method @Deprecated public void registerMediaButtonEventReceiver(android.app.PendingIntent);
-    method @Deprecated public void registerRemoteControlClient(android.media.RemoteControlClient);
-    method @Deprecated public boolean registerRemoteController(android.media.RemoteController);
-    method @Deprecated public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, int, int);
-    method public int requestAudioFocus(@NonNull android.media.AudioFocusRequest);
-    method public void setAllowedCapturePolicy(int);
-    method @Deprecated public void setBluetoothA2dpOn(boolean);
-    method public void setBluetoothScoOn(boolean);
-    method public void setMicrophoneMute(boolean);
-    method public void setMode(int);
-    method public void setParameters(String);
-    method public void setRingerMode(int);
-    method @Deprecated public void setRouting(int, int, int);
-    method public void setSpeakerphoneOn(boolean);
-    method @Deprecated public void setStreamMute(int, boolean);
-    method @Deprecated public void setStreamSolo(int, boolean);
-    method public void setStreamVolume(int, int, int);
-    method @Deprecated public void setVibrateSetting(int, int);
-    method @Deprecated public void setWiredHeadsetOn(boolean);
-    method @Deprecated public boolean shouldVibrate(int);
-    method public void startBluetoothSco();
-    method public void stopBluetoothSco();
-    method public void unloadSoundEffects();
-    method public void unregisterAudioDeviceCallback(android.media.AudioDeviceCallback);
-    method public void unregisterAudioPlaybackCallback(@NonNull android.media.AudioManager.AudioPlaybackCallback);
-    method public void unregisterAudioRecordingCallback(@NonNull android.media.AudioManager.AudioRecordingCallback);
-    method @Deprecated public void unregisterMediaButtonEventReceiver(android.content.ComponentName);
-    method @Deprecated public void unregisterMediaButtonEventReceiver(android.app.PendingIntent);
-    method @Deprecated public void unregisterRemoteControlClient(android.media.RemoteControlClient);
-    method @Deprecated public void unregisterRemoteController(android.media.RemoteController);
-    field public static final String ACTION_AUDIO_BECOMING_NOISY = "android.media.AUDIO_BECOMING_NOISY";
-    field public static final String ACTION_HDMI_AUDIO_PLUG = "android.media.action.HDMI_AUDIO_PLUG";
-    field public static final String ACTION_HEADSET_PLUG = "android.intent.action.HEADSET_PLUG";
-    field public static final String ACTION_MICROPHONE_MUTE_CHANGED = "android.media.action.MICROPHONE_MUTE_CHANGED";
-    field @Deprecated public static final String ACTION_SCO_AUDIO_STATE_CHANGED = "android.media.SCO_AUDIO_STATE_CHANGED";
-    field public static final String ACTION_SCO_AUDIO_STATE_UPDATED = "android.media.ACTION_SCO_AUDIO_STATE_UPDATED";
-    field public static final String ACTION_SPEAKERPHONE_STATE_CHANGED = "android.media.action.SPEAKERPHONE_STATE_CHANGED";
-    field public static final int ADJUST_LOWER = -1; // 0xffffffff
-    field public static final int ADJUST_MUTE = -100; // 0xffffff9c
-    field public static final int ADJUST_RAISE = 1; // 0x1
-    field public static final int ADJUST_SAME = 0; // 0x0
-    field public static final int ADJUST_TOGGLE_MUTE = 101; // 0x65
-    field public static final int ADJUST_UNMUTE = 100; // 0x64
-    field public static final int AUDIOFOCUS_GAIN = 1; // 0x1
-    field public static final int AUDIOFOCUS_GAIN_TRANSIENT = 2; // 0x2
-    field public static final int AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE = 4; // 0x4
-    field public static final int AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK = 3; // 0x3
-    field public static final int AUDIOFOCUS_LOSS = -1; // 0xffffffff
-    field public static final int AUDIOFOCUS_LOSS_TRANSIENT = -2; // 0xfffffffe
-    field public static final int AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK = -3; // 0xfffffffd
-    field public static final int AUDIOFOCUS_NONE = 0; // 0x0
-    field public static final int AUDIOFOCUS_REQUEST_DELAYED = 2; // 0x2
-    field public static final int AUDIOFOCUS_REQUEST_FAILED = 0; // 0x0
-    field public static final int AUDIOFOCUS_REQUEST_GRANTED = 1; // 0x1
-    field public static final int AUDIO_SESSION_ID_GENERATE = 0; // 0x0
-    field public static final int ERROR = -1; // 0xffffffff
-    field public static final int ERROR_DEAD_OBJECT = -6; // 0xfffffffa
-    field public static final String EXTRA_AUDIO_PLUG_STATE = "android.media.extra.AUDIO_PLUG_STATE";
-    field public static final String EXTRA_ENCODINGS = "android.media.extra.ENCODINGS";
-    field public static final String EXTRA_MAX_CHANNEL_COUNT = "android.media.extra.MAX_CHANNEL_COUNT";
-    field public static final String EXTRA_RINGER_MODE = "android.media.EXTRA_RINGER_MODE";
-    field public static final String EXTRA_SCO_AUDIO_PREVIOUS_STATE = "android.media.extra.SCO_AUDIO_PREVIOUS_STATE";
-    field public static final String EXTRA_SCO_AUDIO_STATE = "android.media.extra.SCO_AUDIO_STATE";
-    field @Deprecated public static final String EXTRA_VIBRATE_SETTING = "android.media.EXTRA_VIBRATE_SETTING";
-    field @Deprecated public static final String EXTRA_VIBRATE_TYPE = "android.media.EXTRA_VIBRATE_TYPE";
-    field public static final int FLAG_ALLOW_RINGER_MODES = 2; // 0x2
-    field public static final int FLAG_PLAY_SOUND = 4; // 0x4
-    field public static final int FLAG_REMOVE_SOUND_AND_VIBRATE = 8; // 0x8
-    field public static final int FLAG_SHOW_UI = 1; // 0x1
-    field public static final int FLAG_VIBRATE = 16; // 0x10
-    field public static final int FX_FOCUS_NAVIGATION_DOWN = 2; // 0x2
-    field public static final int FX_FOCUS_NAVIGATION_LEFT = 3; // 0x3
-    field public static final int FX_FOCUS_NAVIGATION_RIGHT = 4; // 0x4
-    field public static final int FX_FOCUS_NAVIGATION_UP = 1; // 0x1
-    field public static final int FX_KEYPRESS_DELETE = 7; // 0x7
-    field public static final int FX_KEYPRESS_INVALID = 9; // 0x9
-    field public static final int FX_KEYPRESS_RETURN = 8; // 0x8
-    field public static final int FX_KEYPRESS_SPACEBAR = 6; // 0x6
-    field public static final int FX_KEYPRESS_STANDARD = 5; // 0x5
-    field public static final int FX_KEY_CLICK = 0; // 0x0
-    field public static final int GET_DEVICES_ALL = 3; // 0x3
-    field public static final int GET_DEVICES_INPUTS = 1; // 0x1
-    field public static final int GET_DEVICES_OUTPUTS = 2; // 0x2
-    field public static final int MODE_CALL_SCREENING = 4; // 0x4
-    field public static final int MODE_CURRENT = -1; // 0xffffffff
-    field public static final int MODE_INVALID = -2; // 0xfffffffe
-    field public static final int MODE_IN_CALL = 2; // 0x2
-    field public static final int MODE_IN_COMMUNICATION = 3; // 0x3
-    field public static final int MODE_NORMAL = 0; // 0x0
-    field public static final int MODE_RINGTONE = 1; // 0x1
-    field @Deprecated public static final int NUM_STREAMS = 5; // 0x5
-    field public static final String PROPERTY_OUTPUT_FRAMES_PER_BUFFER = "android.media.property.OUTPUT_FRAMES_PER_BUFFER";
-    field public static final String PROPERTY_OUTPUT_SAMPLE_RATE = "android.media.property.OUTPUT_SAMPLE_RATE";
-    field public static final String PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED = "android.media.property.SUPPORT_AUDIO_SOURCE_UNPROCESSED";
-    field public static final String PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND = "android.media.property.SUPPORT_MIC_NEAR_ULTRASOUND";
-    field public static final String PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND = "android.media.property.SUPPORT_SPEAKER_NEAR_ULTRASOUND";
-    field public static final String RINGER_MODE_CHANGED_ACTION = "android.media.RINGER_MODE_CHANGED";
-    field public static final int RINGER_MODE_NORMAL = 2; // 0x2
-    field public static final int RINGER_MODE_SILENT = 0; // 0x0
-    field public static final int RINGER_MODE_VIBRATE = 1; // 0x1
-    field @Deprecated public static final int ROUTE_ALL = -1; // 0xffffffff
-    field @Deprecated public static final int ROUTE_BLUETOOTH = 4; // 0x4
-    field @Deprecated public static final int ROUTE_BLUETOOTH_A2DP = 16; // 0x10
-    field @Deprecated public static final int ROUTE_BLUETOOTH_SCO = 4; // 0x4
-    field @Deprecated public static final int ROUTE_EARPIECE = 1; // 0x1
-    field @Deprecated public static final int ROUTE_HEADSET = 8; // 0x8
-    field @Deprecated public static final int ROUTE_SPEAKER = 2; // 0x2
-    field public static final int SCO_AUDIO_STATE_CONNECTED = 1; // 0x1
-    field public static final int SCO_AUDIO_STATE_CONNECTING = 2; // 0x2
-    field public static final int SCO_AUDIO_STATE_DISCONNECTED = 0; // 0x0
-    field public static final int SCO_AUDIO_STATE_ERROR = -1; // 0xffffffff
-    field public static final int STREAM_ACCESSIBILITY = 10; // 0xa
-    field public static final int STREAM_ALARM = 4; // 0x4
-    field public static final int STREAM_DTMF = 8; // 0x8
-    field public static final int STREAM_MUSIC = 3; // 0x3
-    field public static final int STREAM_NOTIFICATION = 5; // 0x5
-    field public static final int STREAM_RING = 2; // 0x2
-    field public static final int STREAM_SYSTEM = 1; // 0x1
-    field public static final int STREAM_VOICE_CALL = 0; // 0x0
-    field public static final int USE_DEFAULT_STREAM_TYPE = -2147483648; // 0x80000000
-    field @Deprecated public static final String VIBRATE_SETTING_CHANGED_ACTION = "android.media.VIBRATE_SETTING_CHANGED";
-    field @Deprecated public static final int VIBRATE_SETTING_OFF = 0; // 0x0
-    field @Deprecated public static final int VIBRATE_SETTING_ON = 1; // 0x1
-    field @Deprecated public static final int VIBRATE_SETTING_ONLY_SILENT = 2; // 0x2
-    field @Deprecated public static final int VIBRATE_TYPE_NOTIFICATION = 1; // 0x1
-    field @Deprecated public static final int VIBRATE_TYPE_RINGER = 0; // 0x0
-  }
-
-  public abstract static class AudioManager.AudioPlaybackCallback {
-    ctor public AudioManager.AudioPlaybackCallback();
-    method public void onPlaybackConfigChanged(java.util.List<android.media.AudioPlaybackConfiguration>);
-  }
-
-  public abstract static class AudioManager.AudioRecordingCallback {
-    ctor public AudioManager.AudioRecordingCallback();
-    method public void onRecordingConfigChanged(java.util.List<android.media.AudioRecordingConfiguration>);
-  }
-
-  public static interface AudioManager.OnAudioFocusChangeListener {
-    method public void onAudioFocusChange(int);
-  }
-
-  public final class AudioMetadata {
-    method @NonNull public static android.media.AudioMetadataMap createMap();
-  }
-
-  public static class AudioMetadata.Format {
-    field @NonNull public static final android.media.AudioMetadata.Key<java.lang.Boolean> KEY_ATMOS_PRESENT;
-    field @NonNull public static final android.media.AudioMetadata.Key<java.lang.Integer> KEY_AUDIO_ENCODING;
-    field @NonNull public static final android.media.AudioMetadata.Key<java.lang.Integer> KEY_BIT_RATE;
-    field @NonNull public static final android.media.AudioMetadata.Key<java.lang.Integer> KEY_BIT_WIDTH;
-    field @NonNull public static final android.media.AudioMetadata.Key<java.lang.Integer> KEY_CHANNEL_MASK;
-    field @NonNull public static final android.media.AudioMetadata.Key<java.lang.String> KEY_MIME;
-    field @NonNull public static final android.media.AudioMetadata.Key<java.lang.Integer> KEY_SAMPLE_RATE;
-  }
-
-  public static interface AudioMetadata.Key<T> {
-    method @NonNull public String getName();
-    method @NonNull public Class<T> getValueClass();
-  }
-
-  public interface AudioMetadataMap extends android.media.AudioMetadataReadMap {
-    method @Nullable public <T> T remove(@NonNull android.media.AudioMetadata.Key<T>);
-    method @Nullable public <T> T set(@NonNull android.media.AudioMetadata.Key<T>, @NonNull T);
-  }
-
-  public interface AudioMetadataReadMap {
-    method public <T> boolean containsKey(@NonNull android.media.AudioMetadata.Key<T>);
-    method @NonNull public android.media.AudioMetadataMap dup();
-    method @Nullable public <T> T get(@NonNull android.media.AudioMetadata.Key<T>);
-    method @IntRange(from=0) public int size();
-  }
-
-  public final class AudioPlaybackCaptureConfiguration {
-    method @NonNull public int[] getExcludeUids();
-    method @NonNull public int[] getExcludeUsages();
-    method @NonNull public int[] getMatchingUids();
-    method @NonNull public int[] getMatchingUsages();
-    method @NonNull public android.media.projection.MediaProjection getMediaProjection();
-  }
-
-  public static final class AudioPlaybackCaptureConfiguration.Builder {
-    ctor public AudioPlaybackCaptureConfiguration.Builder(@NonNull android.media.projection.MediaProjection);
-    method @NonNull public android.media.AudioPlaybackCaptureConfiguration.Builder addMatchingUid(int);
-    method @NonNull public android.media.AudioPlaybackCaptureConfiguration.Builder addMatchingUsage(int);
-    method @NonNull public android.media.AudioPlaybackCaptureConfiguration build();
-    method @NonNull public android.media.AudioPlaybackCaptureConfiguration.Builder excludeUid(int);
-    method @NonNull public android.media.AudioPlaybackCaptureConfiguration.Builder excludeUsage(int);
-  }
-
-  public final class AudioPlaybackConfiguration implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.media.AudioAttributes getAudioAttributes();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.AudioPlaybackConfiguration> CREATOR;
-  }
-
-  public final class AudioPresentation {
-    method public java.util.Map<java.util.Locale,java.lang.String> getLabels();
-    method public java.util.Locale getLocale();
-    method public int getMasteringIndication();
-    method public int getPresentationId();
-    method public int getProgramId();
-    method public boolean hasAudioDescription();
-    method public boolean hasDialogueEnhancement();
-    method public boolean hasSpokenSubtitles();
-    field public static final int MASTERED_FOR_3D = 3; // 0x3
-    field public static final int MASTERED_FOR_HEADPHONE = 4; // 0x4
-    field public static final int MASTERED_FOR_STEREO = 1; // 0x1
-    field public static final int MASTERED_FOR_SURROUND = 2; // 0x2
-    field public static final int MASTERING_NOT_INDICATED = 0; // 0x0
-  }
-
-  public static final class AudioPresentation.Builder {
-    ctor public AudioPresentation.Builder(int);
-    method @NonNull public android.media.AudioPresentation build();
-    method @NonNull public android.media.AudioPresentation.Builder setHasAudioDescription(boolean);
-    method @NonNull public android.media.AudioPresentation.Builder setHasDialogueEnhancement(boolean);
-    method @NonNull public android.media.AudioPresentation.Builder setHasSpokenSubtitles(boolean);
-    method @NonNull public android.media.AudioPresentation.Builder setLabels(@NonNull java.util.Map<android.icu.util.ULocale,java.lang.CharSequence>);
-    method @NonNull public android.media.AudioPresentation.Builder setLocale(@NonNull android.icu.util.ULocale);
-    method @NonNull public android.media.AudioPresentation.Builder setMasteringIndication(int);
-    method @NonNull public android.media.AudioPresentation.Builder setProgramId(int);
-  }
-
-  public class AudioRecord implements android.media.AudioRecordingMonitor android.media.AudioRouting android.media.MicrophoneDirection {
-    ctor public AudioRecord(int, int, int, int, int) throws java.lang.IllegalArgumentException;
-    method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
-    method @Deprecated public void addOnRoutingChangedListener(android.media.AudioRecord.OnRoutingChangedListener, android.os.Handler);
-    method protected void finalize();
-    method public java.util.List<android.media.MicrophoneInfo> getActiveMicrophones() throws java.io.IOException;
-    method @Nullable public android.media.AudioRecordingConfiguration getActiveRecordingConfiguration();
-    method public int getAudioFormat();
-    method public int getAudioSessionId();
-    method public int getAudioSource();
-    method public int getBufferSizeInFrames();
-    method public int getChannelConfiguration();
-    method public int getChannelCount();
-    method @NonNull public android.media.AudioFormat getFormat();
-    method public android.os.PersistableBundle getMetrics();
-    method public static int getMinBufferSize(int, int, int);
-    method public int getNotificationMarkerPosition();
-    method public int getPositionNotificationPeriod();
-    method public android.media.AudioDeviceInfo getPreferredDevice();
-    method public int getRecordingState();
-    method public android.media.AudioDeviceInfo getRoutedDevice();
-    method public int getSampleRate();
-    method public int getState();
-    method public int getTimestamp(@NonNull android.media.AudioTimestamp, int);
-    method public boolean isPrivacySensitive();
-    method public int read(@NonNull byte[], int, int);
-    method public int read(@NonNull byte[], int, int, int);
-    method public int read(@NonNull short[], int, int);
-    method public int read(@NonNull short[], int, int, int);
-    method public int read(@NonNull float[], int, int, int);
-    method public int read(@NonNull java.nio.ByteBuffer, int);
-    method public int read(@NonNull java.nio.ByteBuffer, int, int);
-    method public void registerAudioRecordingCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.AudioRecordingCallback);
-    method public void release();
-    method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
-    method @Deprecated public void removeOnRoutingChangedListener(android.media.AudioRecord.OnRoutingChangedListener);
-    method public int setNotificationMarkerPosition(int);
-    method public int setPositionNotificationPeriod(int);
-    method public boolean setPreferredDevice(android.media.AudioDeviceInfo);
-    method public boolean setPreferredMicrophoneDirection(int);
-    method public boolean setPreferredMicrophoneFieldDimension(@FloatRange(from=-1.0, to=1.0) float);
-    method public void setRecordPositionUpdateListener(android.media.AudioRecord.OnRecordPositionUpdateListener);
-    method public void setRecordPositionUpdateListener(android.media.AudioRecord.OnRecordPositionUpdateListener, android.os.Handler);
-    method public void startRecording() throws java.lang.IllegalStateException;
-    method public void startRecording(android.media.MediaSyncEvent) throws java.lang.IllegalStateException;
-    method public void stop() throws java.lang.IllegalStateException;
-    method public void unregisterAudioRecordingCallback(@NonNull android.media.AudioManager.AudioRecordingCallback);
-    field public static final int ERROR = -1; // 0xffffffff
-    field public static final int ERROR_BAD_VALUE = -2; // 0xfffffffe
-    field public static final int ERROR_DEAD_OBJECT = -6; // 0xfffffffa
-    field public static final int ERROR_INVALID_OPERATION = -3; // 0xfffffffd
-    field public static final int READ_BLOCKING = 0; // 0x0
-    field public static final int READ_NON_BLOCKING = 1; // 0x1
-    field public static final int RECORDSTATE_RECORDING = 3; // 0x3
-    field public static final int RECORDSTATE_STOPPED = 1; // 0x1
-    field public static final int STATE_INITIALIZED = 1; // 0x1
-    field public static final int STATE_UNINITIALIZED = 0; // 0x0
-    field public static final int SUCCESS = 0; // 0x0
-  }
-
-  public static class AudioRecord.Builder {
-    ctor public AudioRecord.Builder();
-    method public android.media.AudioRecord build() throws java.lang.UnsupportedOperationException;
-    method public android.media.AudioRecord.Builder setAudioFormat(@NonNull android.media.AudioFormat) throws java.lang.IllegalArgumentException;
-    method @NonNull public android.media.AudioRecord.Builder setAudioPlaybackCaptureConfig(@NonNull android.media.AudioPlaybackCaptureConfiguration);
-    method public android.media.AudioRecord.Builder setAudioSource(int) throws java.lang.IllegalArgumentException;
-    method public android.media.AudioRecord.Builder setBufferSizeInBytes(int) throws java.lang.IllegalArgumentException;
-    method @NonNull public android.media.AudioRecord.Builder setPrivacySensitive(boolean);
-  }
-
-  public static final class AudioRecord.MetricsConstants {
-    field public static final String CHANNELS = "android.media.audiorecord.channels";
-    field public static final String ENCODING = "android.media.audiorecord.encoding";
-    field @Deprecated public static final String LATENCY = "android.media.audiorecord.latency";
-    field public static final String SAMPLERATE = "android.media.audiorecord.samplerate";
-    field public static final String SOURCE = "android.media.audiorecord.source";
-  }
-
-  public static interface AudioRecord.OnRecordPositionUpdateListener {
-    method public void onMarkerReached(android.media.AudioRecord);
-    method public void onPeriodicNotification(android.media.AudioRecord);
-  }
-
-  @Deprecated public static interface AudioRecord.OnRoutingChangedListener extends android.media.AudioRouting.OnRoutingChangedListener {
-    method @Deprecated public void onRoutingChanged(android.media.AudioRecord);
-    method @Deprecated public default void onRoutingChanged(android.media.AudioRouting);
-  }
-
-  public final class AudioRecordingConfiguration implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.media.AudioDeviceInfo getAudioDevice();
-    method public int getAudioSource();
-    method public int getClientAudioSessionId();
-    method public int getClientAudioSource();
-    method @NonNull public java.util.List<android.media.audiofx.AudioEffect.Descriptor> getClientEffects();
-    method public android.media.AudioFormat getClientFormat();
-    method @NonNull public java.util.List<android.media.audiofx.AudioEffect.Descriptor> getEffects();
-    method public android.media.AudioFormat getFormat();
-    method public boolean isClientSilenced();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.AudioRecordingConfiguration> CREATOR;
-  }
-
-  public interface AudioRecordingMonitor {
-    method @Nullable public android.media.AudioRecordingConfiguration getActiveRecordingConfiguration();
-    method public void registerAudioRecordingCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.AudioRecordingCallback);
-    method public void unregisterAudioRecordingCallback(@NonNull android.media.AudioManager.AudioRecordingCallback);
-  }
-
-  public interface AudioRouting {
-    method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
-    method public android.media.AudioDeviceInfo getPreferredDevice();
-    method public android.media.AudioDeviceInfo getRoutedDevice();
-    method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
-    method public boolean setPreferredDevice(android.media.AudioDeviceInfo);
-  }
-
-  public static interface AudioRouting.OnRoutingChangedListener {
-    method public void onRoutingChanged(android.media.AudioRouting);
-  }
-
-  public final class AudioTimestamp {
-    ctor public AudioTimestamp();
-    field public static final int TIMEBASE_BOOTTIME = 1; // 0x1
-    field public static final int TIMEBASE_MONOTONIC = 0; // 0x0
-    field public long framePosition;
-    field public long nanoTime;
-  }
-
-  public class AudioTrack implements android.media.AudioRouting android.media.VolumeAutomation {
-    ctor @Deprecated public AudioTrack(int, int, int, int, int, int) throws java.lang.IllegalArgumentException;
-    ctor @Deprecated public AudioTrack(int, int, int, int, int, int, int) throws java.lang.IllegalArgumentException;
-    ctor public AudioTrack(android.media.AudioAttributes, android.media.AudioFormat, int, int, int) throws java.lang.IllegalArgumentException;
-    method public void addOnCodecFormatChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioTrack.OnCodecFormatChangedListener);
-    method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
-    method @Deprecated public void addOnRoutingChangedListener(android.media.AudioTrack.OnRoutingChangedListener, android.os.Handler);
-    method public int attachAuxEffect(int);
-    method @NonNull public android.media.VolumeShaper createVolumeShaper(@NonNull android.media.VolumeShaper.Configuration);
-    method protected void finalize();
-    method public void flush();
-    method @NonNull public android.media.AudioAttributes getAudioAttributes();
-    method public float getAudioDescriptionMixLeveldB();
-    method public int getAudioFormat();
-    method public int getAudioSessionId();
-    method @IntRange(from=0) public int getBufferCapacityInFrames();
-    method @IntRange(from=0) public int getBufferSizeInFrames();
-    method public int getChannelConfiguration();
-    method public int getChannelCount();
-    method public int getDualMonoMode();
-    method @NonNull public android.media.AudioFormat getFormat();
-    method public static float getMaxVolume();
-    method public android.os.PersistableBundle getMetrics();
-    method public static int getMinBufferSize(int, int, int);
-    method public static float getMinVolume();
-    method @Deprecated protected int getNativeFrameCount();
-    method public static int getNativeOutputSampleRate(int);
-    method public int getNotificationMarkerPosition();
-    method @IntRange(from=0) public int getOffloadDelay();
-    method @IntRange(from=0) public int getOffloadPadding();
-    method public int getPerformanceMode();
-    method public int getPlayState();
-    method public int getPlaybackHeadPosition();
-    method @NonNull public android.media.PlaybackParams getPlaybackParams();
-    method public int getPlaybackRate();
-    method public int getPositionNotificationPeriod();
-    method public android.media.AudioDeviceInfo getPreferredDevice();
-    method public android.media.AudioDeviceInfo getRoutedDevice();
-    method public int getSampleRate();
-    method public int getState();
-    method public int getStreamType();
-    method public boolean getTimestamp(android.media.AudioTimestamp);
-    method public int getUnderrunCount();
-    method public static boolean isDirectPlaybackSupported(@NonNull android.media.AudioFormat, @NonNull android.media.AudioAttributes);
-    method public boolean isOffloadedPlayback();
-    method public void pause() throws java.lang.IllegalStateException;
-    method public void play() throws java.lang.IllegalStateException;
-    method public void registerStreamEventCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioTrack.StreamEventCallback);
-    method public void release();
-    method public int reloadStaticData();
-    method public void removeOnCodecFormatChangedListener(@NonNull android.media.AudioTrack.OnCodecFormatChangedListener);
-    method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
-    method @Deprecated public void removeOnRoutingChangedListener(android.media.AudioTrack.OnRoutingChangedListener);
-    method public boolean setAudioDescriptionMixLeveldB(@FloatRange(to=48.0f, toInclusive=true) float);
-    method public int setAuxEffectSendLevel(@FloatRange(from=0.0) float);
-    method public int setBufferSizeInFrames(@IntRange(from=0) int);
-    method public boolean setDualMonoMode(int);
-    method public int setLoopPoints(@IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0xffffffff) int);
-    method public int setNotificationMarkerPosition(int);
-    method public void setOffloadDelayPadding(@IntRange(from=0) int, @IntRange(from=0) int);
-    method public void setOffloadEndOfStream();
-    method public int setPlaybackHeadPosition(@IntRange(from=0) int);
-    method public void setPlaybackParams(@NonNull android.media.PlaybackParams);
-    method public void setPlaybackPositionUpdateListener(android.media.AudioTrack.OnPlaybackPositionUpdateListener);
-    method public void setPlaybackPositionUpdateListener(android.media.AudioTrack.OnPlaybackPositionUpdateListener, android.os.Handler);
-    method public int setPlaybackRate(int);
-    method public int setPositionNotificationPeriod(int);
-    method public boolean setPreferredDevice(android.media.AudioDeviceInfo);
-    method public int setPresentation(@NonNull android.media.AudioPresentation);
-    method @Deprecated protected void setState(int);
-    method @Deprecated public int setStereoVolume(float, float);
-    method public int setVolume(float);
-    method public void stop() throws java.lang.IllegalStateException;
-    method public void unregisterStreamEventCallback(@NonNull android.media.AudioTrack.StreamEventCallback);
-    method public int write(@NonNull byte[], int, int);
-    method public int write(@NonNull byte[], int, int, int);
-    method public int write(@NonNull short[], int, int);
-    method public int write(@NonNull short[], int, int, int);
-    method public int write(@NonNull float[], int, int, int);
-    method public int write(@NonNull java.nio.ByteBuffer, int, int);
-    method public int write(@NonNull java.nio.ByteBuffer, int, int, long);
-    field public static final int DUAL_MONO_MODE_LL = 2; // 0x2
-    field public static final int DUAL_MONO_MODE_LR = 1; // 0x1
-    field public static final int DUAL_MONO_MODE_OFF = 0; // 0x0
-    field public static final int DUAL_MONO_MODE_RR = 3; // 0x3
-    field public static final int ENCAPSULATION_METADATA_TYPE_DVB_AD_DESCRIPTOR = 2; // 0x2
-    field public static final int ENCAPSULATION_METADATA_TYPE_FRAMEWORK_TUNER = 1; // 0x1
-    field public static final int ENCAPSULATION_MODE_ELEMENTARY_STREAM = 1; // 0x1
-    field public static final int ENCAPSULATION_MODE_NONE = 0; // 0x0
-    field public static final int ERROR = -1; // 0xffffffff
-    field public static final int ERROR_BAD_VALUE = -2; // 0xfffffffe
-    field public static final int ERROR_DEAD_OBJECT = -6; // 0xfffffffa
-    field public static final int ERROR_INVALID_OPERATION = -3; // 0xfffffffd
-    field public static final int MODE_STATIC = 0; // 0x0
-    field public static final int MODE_STREAM = 1; // 0x1
-    field public static final int PERFORMANCE_MODE_LOW_LATENCY = 1; // 0x1
-    field public static final int PERFORMANCE_MODE_NONE = 0; // 0x0
-    field public static final int PERFORMANCE_MODE_POWER_SAVING = 2; // 0x2
-    field public static final int PLAYSTATE_PAUSED = 2; // 0x2
-    field public static final int PLAYSTATE_PLAYING = 3; // 0x3
-    field public static final int PLAYSTATE_STOPPED = 1; // 0x1
-    field public static final int STATE_INITIALIZED = 1; // 0x1
-    field public static final int STATE_NO_STATIC_DATA = 2; // 0x2
-    field public static final int STATE_UNINITIALIZED = 0; // 0x0
-    field public static final int SUCCESS = 0; // 0x0
-    field public static final int WRITE_BLOCKING = 0; // 0x0
-    field public static final int WRITE_NON_BLOCKING = 1; // 0x1
-  }
-
-  public static class AudioTrack.Builder {
-    ctor public AudioTrack.Builder();
-    method @NonNull public android.media.AudioTrack build() throws java.lang.UnsupportedOperationException;
-    method @NonNull public android.media.AudioTrack.Builder setAudioAttributes(@NonNull android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
-    method @NonNull public android.media.AudioTrack.Builder setAudioFormat(@NonNull android.media.AudioFormat) throws java.lang.IllegalArgumentException;
-    method @NonNull public android.media.AudioTrack.Builder setBufferSizeInBytes(@IntRange(from=0) int) throws java.lang.IllegalArgumentException;
-    method @NonNull public android.media.AudioTrack.Builder setEncapsulationMode(int);
-    method @NonNull public android.media.AudioTrack.Builder setOffloadedPlayback(boolean);
-    method @NonNull public android.media.AudioTrack.Builder setPerformanceMode(int);
-    method @NonNull public android.media.AudioTrack.Builder setSessionId(@IntRange(from=1) int) throws java.lang.IllegalArgumentException;
-    method @NonNull public android.media.AudioTrack.Builder setTransferMode(int) throws java.lang.IllegalArgumentException;
-  }
-
-  public static final class AudioTrack.MetricsConstants {
-    field @Deprecated public static final String CHANNELMASK = "android.media.audiorecord.channelmask";
-    field public static final String CONTENTTYPE = "android.media.audiotrack.type";
-    field @Deprecated public static final String SAMPLERATE = "android.media.audiorecord.samplerate";
-    field public static final String STREAMTYPE = "android.media.audiotrack.streamtype";
-    field public static final String USAGE = "android.media.audiotrack.usage";
-  }
-
-  public static interface AudioTrack.OnCodecFormatChangedListener {
-    method public void onCodecFormatChanged(@NonNull android.media.AudioTrack, @Nullable android.media.AudioMetadataReadMap);
-  }
-
-  public static interface AudioTrack.OnPlaybackPositionUpdateListener {
-    method public void onMarkerReached(android.media.AudioTrack);
-    method public void onPeriodicNotification(android.media.AudioTrack);
-  }
-
-  @Deprecated public static interface AudioTrack.OnRoutingChangedListener extends android.media.AudioRouting.OnRoutingChangedListener {
-    method @Deprecated public void onRoutingChanged(android.media.AudioTrack);
-    method @Deprecated public default void onRoutingChanged(android.media.AudioRouting);
-  }
-
-  public abstract static class AudioTrack.StreamEventCallback {
-    ctor public AudioTrack.StreamEventCallback();
-    method public void onDataRequest(@NonNull android.media.AudioTrack, @IntRange(from=0) int);
-    method public void onPresentationEnded(@NonNull android.media.AudioTrack);
-    method public void onTearDown(@NonNull android.media.AudioTrack);
-  }
-
-  public class CamcorderProfile {
-    method public static android.media.CamcorderProfile get(int);
-    method public static android.media.CamcorderProfile get(int, int);
-    method public static boolean hasProfile(int);
-    method public static boolean hasProfile(int, int);
-    field public static final int QUALITY_1080P = 6; // 0x6
-    field public static final int QUALITY_2160P = 8; // 0x8
-    field public static final int QUALITY_2K = 12; // 0xc
-    field public static final int QUALITY_480P = 4; // 0x4
-    field public static final int QUALITY_4KDCI = 10; // 0xa
-    field public static final int QUALITY_720P = 5; // 0x5
-    field public static final int QUALITY_CIF = 3; // 0x3
-    field public static final int QUALITY_HIGH = 1; // 0x1
-    field public static final int QUALITY_HIGH_SPEED_1080P = 2004; // 0x7d4
-    field public static final int QUALITY_HIGH_SPEED_2160P = 2005; // 0x7d5
-    field public static final int QUALITY_HIGH_SPEED_480P = 2002; // 0x7d2
-    field public static final int QUALITY_HIGH_SPEED_4KDCI = 2008; // 0x7d8
-    field public static final int QUALITY_HIGH_SPEED_720P = 2003; // 0x7d3
-    field public static final int QUALITY_HIGH_SPEED_CIF = 2006; // 0x7d6
-    field public static final int QUALITY_HIGH_SPEED_HIGH = 2001; // 0x7d1
-    field public static final int QUALITY_HIGH_SPEED_LOW = 2000; // 0x7d0
-    field public static final int QUALITY_HIGH_SPEED_VGA = 2007; // 0x7d7
-    field public static final int QUALITY_LOW = 0; // 0x0
-    field public static final int QUALITY_QCIF = 2; // 0x2
-    field public static final int QUALITY_QHD = 11; // 0xb
-    field public static final int QUALITY_QVGA = 7; // 0x7
-    field public static final int QUALITY_TIME_LAPSE_1080P = 1006; // 0x3ee
-    field public static final int QUALITY_TIME_LAPSE_2160P = 1008; // 0x3f0
-    field public static final int QUALITY_TIME_LAPSE_2K = 1012; // 0x3f4
-    field public static final int QUALITY_TIME_LAPSE_480P = 1004; // 0x3ec
-    field public static final int QUALITY_TIME_LAPSE_4KDCI = 1010; // 0x3f2
-    field public static final int QUALITY_TIME_LAPSE_720P = 1005; // 0x3ed
-    field public static final int QUALITY_TIME_LAPSE_CIF = 1003; // 0x3eb
-    field public static final int QUALITY_TIME_LAPSE_HIGH = 1001; // 0x3e9
-    field public static final int QUALITY_TIME_LAPSE_LOW = 1000; // 0x3e8
-    field public static final int QUALITY_TIME_LAPSE_QCIF = 1002; // 0x3ea
-    field public static final int QUALITY_TIME_LAPSE_QHD = 1011; // 0x3f3
-    field public static final int QUALITY_TIME_LAPSE_QVGA = 1007; // 0x3ef
-    field public static final int QUALITY_TIME_LAPSE_VGA = 1009; // 0x3f1
-    field public static final int QUALITY_VGA = 9; // 0x9
-    field public int audioBitRate;
-    field public int audioChannels;
-    field public int audioCodec;
-    field public int audioSampleRate;
-    field public int duration;
-    field public int fileFormat;
-    field public int quality;
-    field public int videoBitRate;
-    field public int videoCodec;
-    field public int videoFrameHeight;
-    field public int videoFrameRate;
-    field public int videoFrameWidth;
-  }
-
-  public class CameraProfile {
-    ctor public CameraProfile();
-    method public static int getJpegEncodingQualityParameter(int);
-    method public static int getJpegEncodingQualityParameter(int, int);
-    field public static final int QUALITY_HIGH = 2; // 0x2
-    field public static final int QUALITY_LOW = 0; // 0x0
-    field public static final int QUALITY_MEDIUM = 1; // 0x1
-  }
-
-  public final class DeniedByServerException extends android.media.MediaDrmException {
-    ctor public DeniedByServerException(String);
-  }
-
-  public abstract class DrmInitData {
-    method @Deprecated public abstract android.media.DrmInitData.SchemeInitData get(java.util.UUID);
-    method @NonNull public android.media.DrmInitData.SchemeInitData getSchemeInitDataAt(int);
-    method public int getSchemeInitDataCount();
-  }
-
-  public static final class DrmInitData.SchemeInitData {
-    field @NonNull public static final java.util.UUID UUID_NIL;
-    field public final byte[] data;
-    field public final String mimeType;
-    field @NonNull public final java.util.UUID uuid;
-  }
-
-  public class ExifInterface {
-    ctor public ExifInterface(@NonNull java.io.File) throws java.io.IOException;
-    ctor public ExifInterface(@NonNull String) throws java.io.IOException;
-    ctor public ExifInterface(@NonNull java.io.FileDescriptor) throws java.io.IOException;
-    ctor public ExifInterface(@NonNull java.io.InputStream) throws java.io.IOException;
-    ctor public ExifInterface(@NonNull java.io.InputStream, int) throws java.io.IOException;
-    method public double getAltitude(double);
-    method @Nullable public String getAttribute(@NonNull String);
-    method @Nullable public byte[] getAttributeBytes(@NonNull String);
-    method public double getAttributeDouble(@NonNull String, double);
-    method public int getAttributeInt(@NonNull String, int);
-    method @Nullable public long[] getAttributeRange(@NonNull String);
-    method public boolean getLatLong(float[]);
-    method public byte[] getThumbnail();
-    method public android.graphics.Bitmap getThumbnailBitmap();
-    method public byte[] getThumbnailBytes();
-    method @Nullable public long[] getThumbnailRange();
-    method public boolean hasAttribute(@NonNull String);
-    method public boolean hasThumbnail();
-    method public static boolean isSupportedMimeType(@NonNull String);
-    method public boolean isThumbnailCompressed();
-    method public void saveAttributes() throws java.io.IOException;
-    method public void setAttribute(@NonNull String, @Nullable String);
-    field public static final int ORIENTATION_FLIP_HORIZONTAL = 2; // 0x2
-    field public static final int ORIENTATION_FLIP_VERTICAL = 4; // 0x4
-    field public static final int ORIENTATION_NORMAL = 1; // 0x1
-    field public static final int ORIENTATION_ROTATE_180 = 3; // 0x3
-    field public static final int ORIENTATION_ROTATE_270 = 8; // 0x8
-    field public static final int ORIENTATION_ROTATE_90 = 6; // 0x6
-    field public static final int ORIENTATION_TRANSPOSE = 5; // 0x5
-    field public static final int ORIENTATION_TRANSVERSE = 7; // 0x7
-    field public static final int ORIENTATION_UNDEFINED = 0; // 0x0
-    field public static final int STREAM_TYPE_EXIF_DATA_ONLY = 1; // 0x1
-    field public static final int STREAM_TYPE_FULL_IMAGE_DATA = 0; // 0x0
-    field @Deprecated public static final String TAG_APERTURE = "FNumber";
-    field public static final String TAG_APERTURE_VALUE = "ApertureValue";
-    field public static final String TAG_ARTIST = "Artist";
-    field public static final String TAG_BITS_PER_SAMPLE = "BitsPerSample";
-    field public static final String TAG_BRIGHTNESS_VALUE = "BrightnessValue";
-    field public static final String TAG_CFA_PATTERN = "CFAPattern";
-    field public static final String TAG_COLOR_SPACE = "ColorSpace";
-    field public static final String TAG_COMPONENTS_CONFIGURATION = "ComponentsConfiguration";
-    field public static final String TAG_COMPRESSED_BITS_PER_PIXEL = "CompressedBitsPerPixel";
-    field public static final String TAG_COMPRESSION = "Compression";
-    field public static final String TAG_CONTRAST = "Contrast";
-    field public static final String TAG_COPYRIGHT = "Copyright";
-    field public static final String TAG_CUSTOM_RENDERED = "CustomRendered";
-    field public static final String TAG_DATETIME = "DateTime";
-    field public static final String TAG_DATETIME_DIGITIZED = "DateTimeDigitized";
-    field public static final String TAG_DATETIME_ORIGINAL = "DateTimeOriginal";
-    field public static final String TAG_DEFAULT_CROP_SIZE = "DefaultCropSize";
-    field public static final String TAG_DEVICE_SETTING_DESCRIPTION = "DeviceSettingDescription";
-    field public static final String TAG_DIGITAL_ZOOM_RATIO = "DigitalZoomRatio";
-    field public static final String TAG_DNG_VERSION = "DNGVersion";
-    field public static final String TAG_EXIF_VERSION = "ExifVersion";
-    field public static final String TAG_EXPOSURE_BIAS_VALUE = "ExposureBiasValue";
-    field public static final String TAG_EXPOSURE_INDEX = "ExposureIndex";
-    field public static final String TAG_EXPOSURE_MODE = "ExposureMode";
-    field public static final String TAG_EXPOSURE_PROGRAM = "ExposureProgram";
-    field public static final String TAG_EXPOSURE_TIME = "ExposureTime";
-    field public static final String TAG_FILE_SOURCE = "FileSource";
-    field public static final String TAG_FLASH = "Flash";
-    field public static final String TAG_FLASHPIX_VERSION = "FlashpixVersion";
-    field public static final String TAG_FLASH_ENERGY = "FlashEnergy";
-    field public static final String TAG_FOCAL_LENGTH = "FocalLength";
-    field public static final String TAG_FOCAL_LENGTH_IN_35MM_FILM = "FocalLengthIn35mmFilm";
-    field public static final String TAG_FOCAL_PLANE_RESOLUTION_UNIT = "FocalPlaneResolutionUnit";
-    field public static final String TAG_FOCAL_PLANE_X_RESOLUTION = "FocalPlaneXResolution";
-    field public static final String TAG_FOCAL_PLANE_Y_RESOLUTION = "FocalPlaneYResolution";
-    field public static final String TAG_F_NUMBER = "FNumber";
-    field public static final String TAG_GAIN_CONTROL = "GainControl";
-    field public static final String TAG_GPS_ALTITUDE = "GPSAltitude";
-    field public static final String TAG_GPS_ALTITUDE_REF = "GPSAltitudeRef";
-    field public static final String TAG_GPS_AREA_INFORMATION = "GPSAreaInformation";
-    field public static final String TAG_GPS_DATESTAMP = "GPSDateStamp";
-    field public static final String TAG_GPS_DEST_BEARING = "GPSDestBearing";
-    field public static final String TAG_GPS_DEST_BEARING_REF = "GPSDestBearingRef";
-    field public static final String TAG_GPS_DEST_DISTANCE = "GPSDestDistance";
-    field public static final String TAG_GPS_DEST_DISTANCE_REF = "GPSDestDistanceRef";
-    field public static final String TAG_GPS_DEST_LATITUDE = "GPSDestLatitude";
-    field public static final String TAG_GPS_DEST_LATITUDE_REF = "GPSDestLatitudeRef";
-    field public static final String TAG_GPS_DEST_LONGITUDE = "GPSDestLongitude";
-    field public static final String TAG_GPS_DEST_LONGITUDE_REF = "GPSDestLongitudeRef";
-    field public static final String TAG_GPS_DIFFERENTIAL = "GPSDifferential";
-    field public static final String TAG_GPS_DOP = "GPSDOP";
-    field public static final String TAG_GPS_IMG_DIRECTION = "GPSImgDirection";
-    field public static final String TAG_GPS_IMG_DIRECTION_REF = "GPSImgDirectionRef";
-    field public static final String TAG_GPS_LATITUDE = "GPSLatitude";
-    field public static final String TAG_GPS_LATITUDE_REF = "GPSLatitudeRef";
-    field public static final String TAG_GPS_LONGITUDE = "GPSLongitude";
-    field public static final String TAG_GPS_LONGITUDE_REF = "GPSLongitudeRef";
-    field public static final String TAG_GPS_MAP_DATUM = "GPSMapDatum";
-    field public static final String TAG_GPS_MEASURE_MODE = "GPSMeasureMode";
-    field public static final String TAG_GPS_PROCESSING_METHOD = "GPSProcessingMethod";
-    field public static final String TAG_GPS_SATELLITES = "GPSSatellites";
-    field public static final String TAG_GPS_SPEED = "GPSSpeed";
-    field public static final String TAG_GPS_SPEED_REF = "GPSSpeedRef";
-    field public static final String TAG_GPS_STATUS = "GPSStatus";
-    field public static final String TAG_GPS_TIMESTAMP = "GPSTimeStamp";
-    field public static final String TAG_GPS_TRACK = "GPSTrack";
-    field public static final String TAG_GPS_TRACK_REF = "GPSTrackRef";
-    field public static final String TAG_GPS_VERSION_ID = "GPSVersionID";
-    field public static final String TAG_IMAGE_DESCRIPTION = "ImageDescription";
-    field public static final String TAG_IMAGE_LENGTH = "ImageLength";
-    field public static final String TAG_IMAGE_UNIQUE_ID = "ImageUniqueID";
-    field public static final String TAG_IMAGE_WIDTH = "ImageWidth";
-    field public static final String TAG_INTEROPERABILITY_INDEX = "InteroperabilityIndex";
-    field @Deprecated public static final String TAG_ISO = "ISOSpeedRatings";
-    field public static final String TAG_ISO_SPEED_RATINGS = "ISOSpeedRatings";
-    field public static final String TAG_JPEG_INTERCHANGE_FORMAT = "JPEGInterchangeFormat";
-    field public static final String TAG_JPEG_INTERCHANGE_FORMAT_LENGTH = "JPEGInterchangeFormatLength";
-    field public static final String TAG_LIGHT_SOURCE = "LightSource";
-    field public static final String TAG_MAKE = "Make";
-    field public static final String TAG_MAKER_NOTE = "MakerNote";
-    field public static final String TAG_MAX_APERTURE_VALUE = "MaxApertureValue";
-    field public static final String TAG_METERING_MODE = "MeteringMode";
-    field public static final String TAG_MODEL = "Model";
-    field public static final String TAG_NEW_SUBFILE_TYPE = "NewSubfileType";
-    field public static final String TAG_OECF = "OECF";
-    field public static final String TAG_OFFSET_TIME = "OffsetTime";
-    field public static final String TAG_OFFSET_TIME_DIGITIZED = "OffsetTimeDigitized";
-    field public static final String TAG_OFFSET_TIME_ORIGINAL = "OffsetTimeOriginal";
-    field public static final String TAG_ORF_ASPECT_FRAME = "AspectFrame";
-    field public static final String TAG_ORF_PREVIEW_IMAGE_LENGTH = "PreviewImageLength";
-    field public static final String TAG_ORF_PREVIEW_IMAGE_START = "PreviewImageStart";
-    field public static final String TAG_ORF_THUMBNAIL_IMAGE = "ThumbnailImage";
-    field public static final String TAG_ORIENTATION = "Orientation";
-    field public static final String TAG_PHOTOMETRIC_INTERPRETATION = "PhotometricInterpretation";
-    field public static final String TAG_PIXEL_X_DIMENSION = "PixelXDimension";
-    field public static final String TAG_PIXEL_Y_DIMENSION = "PixelYDimension";
-    field public static final String TAG_PLANAR_CONFIGURATION = "PlanarConfiguration";
-    field public static final String TAG_PRIMARY_CHROMATICITIES = "PrimaryChromaticities";
-    field public static final String TAG_REFERENCE_BLACK_WHITE = "ReferenceBlackWhite";
-    field public static final String TAG_RELATED_SOUND_FILE = "RelatedSoundFile";
-    field public static final String TAG_RESOLUTION_UNIT = "ResolutionUnit";
-    field public static final String TAG_ROWS_PER_STRIP = "RowsPerStrip";
-    field public static final String TAG_RW2_ISO = "ISO";
-    field public static final String TAG_RW2_JPG_FROM_RAW = "JpgFromRaw";
-    field public static final String TAG_RW2_SENSOR_BOTTOM_BORDER = "SensorBottomBorder";
-    field public static final String TAG_RW2_SENSOR_LEFT_BORDER = "SensorLeftBorder";
-    field public static final String TAG_RW2_SENSOR_RIGHT_BORDER = "SensorRightBorder";
-    field public static final String TAG_RW2_SENSOR_TOP_BORDER = "SensorTopBorder";
-    field public static final String TAG_SAMPLES_PER_PIXEL = "SamplesPerPixel";
-    field public static final String TAG_SATURATION = "Saturation";
-    field public static final String TAG_SCENE_CAPTURE_TYPE = "SceneCaptureType";
-    field public static final String TAG_SCENE_TYPE = "SceneType";
-    field public static final String TAG_SENSING_METHOD = "SensingMethod";
-    field public static final String TAG_SHARPNESS = "Sharpness";
-    field public static final String TAG_SHUTTER_SPEED_VALUE = "ShutterSpeedValue";
-    field public static final String TAG_SOFTWARE = "Software";
-    field public static final String TAG_SPATIAL_FREQUENCY_RESPONSE = "SpatialFrequencyResponse";
-    field public static final String TAG_SPECTRAL_SENSITIVITY = "SpectralSensitivity";
-    field public static final String TAG_STRIP_BYTE_COUNTS = "StripByteCounts";
-    field public static final String TAG_STRIP_OFFSETS = "StripOffsets";
-    field public static final String TAG_SUBFILE_TYPE = "SubfileType";
-    field public static final String TAG_SUBJECT_AREA = "SubjectArea";
-    field public static final String TAG_SUBJECT_DISTANCE = "SubjectDistance";
-    field public static final String TAG_SUBJECT_DISTANCE_RANGE = "SubjectDistanceRange";
-    field public static final String TAG_SUBJECT_LOCATION = "SubjectLocation";
-    field public static final String TAG_SUBSEC_TIME = "SubSecTime";
-    field @Deprecated public static final String TAG_SUBSEC_TIME_DIG = "SubSecTimeDigitized";
-    field public static final String TAG_SUBSEC_TIME_DIGITIZED = "SubSecTimeDigitized";
-    field @Deprecated public static final String TAG_SUBSEC_TIME_ORIG = "SubSecTimeOriginal";
-    field public static final String TAG_SUBSEC_TIME_ORIGINAL = "SubSecTimeOriginal";
-    field public static final String TAG_THUMBNAIL_IMAGE_LENGTH = "ThumbnailImageLength";
-    field public static final String TAG_THUMBNAIL_IMAGE_WIDTH = "ThumbnailImageWidth";
-    field public static final String TAG_THUMBNAIL_ORIENTATION = "ThumbnailOrientation";
-    field public static final String TAG_TRANSFER_FUNCTION = "TransferFunction";
-    field public static final String TAG_USER_COMMENT = "UserComment";
-    field public static final String TAG_WHITE_BALANCE = "WhiteBalance";
-    field public static final String TAG_WHITE_POINT = "WhitePoint";
-    field public static final String TAG_XMP = "Xmp";
-    field public static final String TAG_X_RESOLUTION = "XResolution";
-    field public static final String TAG_Y_CB_CR_COEFFICIENTS = "YCbCrCoefficients";
-    field public static final String TAG_Y_CB_CR_POSITIONING = "YCbCrPositioning";
-    field public static final String TAG_Y_CB_CR_SUB_SAMPLING = "YCbCrSubSampling";
-    field public static final String TAG_Y_RESOLUTION = "YResolution";
-    field public static final int WHITEBALANCE_AUTO = 0; // 0x0
-    field public static final int WHITEBALANCE_MANUAL = 1; // 0x1
-  }
-
-  public class FaceDetector {
-    ctor public FaceDetector(int, int, int);
-    method public int findFaces(android.graphics.Bitmap, android.media.FaceDetector.Face[]);
-  }
-
-  public class FaceDetector.Face {
-    method public float confidence();
-    method public float eyesDistance();
-    method public void getMidPoint(android.graphics.PointF);
-    method public float pose(int);
-    field public static final float CONFIDENCE_THRESHOLD = 0.4f;
-    field public static final int EULER_X = 0; // 0x0
-    field public static final int EULER_Y = 1; // 0x1
-    field public static final int EULER_Z = 2; // 0x2
-  }
-
-  public abstract class Image implements java.lang.AutoCloseable {
-    method public abstract void close();
-    method public android.graphics.Rect getCropRect();
-    method public abstract int getFormat();
-    method @Nullable public android.hardware.HardwareBuffer getHardwareBuffer();
-    method public abstract int getHeight();
-    method public abstract android.media.Image.Plane[] getPlanes();
-    method public abstract long getTimestamp();
-    method public abstract int getWidth();
-    method public void setCropRect(android.graphics.Rect);
-    method public void setTimestamp(long);
-  }
-
-  public abstract static class Image.Plane {
-    method public abstract java.nio.ByteBuffer getBuffer();
-    method public abstract int getPixelStride();
-    method public abstract int getRowStride();
-  }
-
-  public class ImageReader implements java.lang.AutoCloseable {
-    method public android.media.Image acquireLatestImage();
-    method public android.media.Image acquireNextImage();
-    method public void close();
-    method public void discardFreeBuffers();
-    method public int getHeight();
-    method public int getImageFormat();
-    method public int getMaxImages();
-    method public android.view.Surface getSurface();
-    method public int getWidth();
-    method @NonNull public static android.media.ImageReader newInstance(@IntRange(from=1) int, @IntRange(from=1) int, int, @IntRange(from=1) int);
-    method @NonNull public static android.media.ImageReader newInstance(@IntRange(from=1) int, @IntRange(from=1) int, int, @IntRange(from=1) int, long);
-    method public void setOnImageAvailableListener(android.media.ImageReader.OnImageAvailableListener, android.os.Handler);
-  }
-
-  public static interface ImageReader.OnImageAvailableListener {
-    method public void onImageAvailable(android.media.ImageReader);
-  }
-
-  public class ImageWriter implements java.lang.AutoCloseable {
-    method public void close();
-    method public android.media.Image dequeueInputImage();
-    method public int getFormat();
-    method public int getMaxImages();
-    method @NonNull public static android.media.ImageWriter newInstance(@NonNull android.view.Surface, @IntRange(from=1) int);
-    method @NonNull public static android.media.ImageWriter newInstance(@NonNull android.view.Surface, @IntRange(from=1) int, int);
-    method public void queueInputImage(android.media.Image);
-    method public void setOnImageReleasedListener(android.media.ImageWriter.OnImageReleasedListener, android.os.Handler);
-  }
-
-  public static interface ImageWriter.OnImageReleasedListener {
-    method public void onImageReleased(android.media.ImageWriter);
-  }
-
-  public class JetPlayer {
-    method public boolean clearQueue();
-    method public Object clone() throws java.lang.CloneNotSupportedException;
-    method public boolean closeJetFile();
-    method protected void finalize();
-    method public static android.media.JetPlayer getJetPlayer();
-    method public static int getMaxTracks();
-    method public boolean loadJetFile(String);
-    method public boolean loadJetFile(android.content.res.AssetFileDescriptor);
-    method public boolean pause();
-    method public boolean play();
-    method public boolean queueJetSegment(int, int, int, int, int, byte);
-    method public boolean queueJetSegmentMuteArray(int, int, int, int, boolean[], byte);
-    method public void release();
-    method public void setEventListener(android.media.JetPlayer.OnJetEventListener);
-    method public void setEventListener(android.media.JetPlayer.OnJetEventListener, android.os.Handler);
-    method public boolean setMuteArray(boolean[], boolean);
-    method public boolean setMuteFlag(int, boolean, boolean);
-    method public boolean setMuteFlags(int, boolean);
-    method public boolean triggerClip(int);
-  }
-
-  public static interface JetPlayer.OnJetEventListener {
-    method public void onJetEvent(android.media.JetPlayer, short, byte, byte, byte, byte);
-    method public void onJetNumQueuedSegmentUpdate(android.media.JetPlayer, int);
-    method public void onJetPauseUpdate(android.media.JetPlayer, int);
-    method public void onJetUserIdUpdate(android.media.JetPlayer, int, int);
-  }
-
-  public class MediaActionSound {
-    ctor public MediaActionSound();
-    method public void load(int);
-    method public void play(int);
-    method public void release();
-    field public static final int FOCUS_COMPLETE = 1; // 0x1
-    field public static final int SHUTTER_CLICK = 0; // 0x0
-    field public static final int START_VIDEO_RECORDING = 2; // 0x2
-    field public static final int STOP_VIDEO_RECORDING = 3; // 0x3
-  }
-
-  public final class MediaCas implements java.lang.AutoCloseable {
-    ctor public MediaCas(int) throws android.media.MediaCasException.UnsupportedCasException;
-    ctor public MediaCas(@NonNull android.content.Context, int, @Nullable String, int) throws android.media.MediaCasException.UnsupportedCasException;
-    method public void close();
-    method public static android.media.MediaCas.PluginDescriptor[] enumeratePlugins();
-    method protected void finalize();
-    method public static boolean isSystemIdSupported(int);
-    method public android.media.MediaCas.Session openSession() throws android.media.MediaCasException;
-    method @Nullable public android.media.MediaCas.Session openSession(int, int) throws android.media.MediaCasException;
-    method public void processEmm(@NonNull byte[], int, int) throws android.media.MediaCasException;
-    method public void processEmm(@NonNull byte[]) throws android.media.MediaCasException;
-    method public void provision(@NonNull String) throws android.media.MediaCasException;
-    method public void refreshEntitlements(int, @Nullable byte[]) throws android.media.MediaCasException;
-    method public void sendEvent(int, int, @Nullable byte[]) throws android.media.MediaCasException;
-    method public void setEventListener(@Nullable android.media.MediaCas.EventListener, @Nullable android.os.Handler);
-    method public void setPrivateData(@NonNull byte[]) throws android.media.MediaCasException;
-    field public static final int PLUGIN_STATUS_PHYSICAL_MODULE_CHANGED = 0; // 0x0
-    field public static final int PLUGIN_STATUS_SESSION_NUMBER_CHANGED = 1; // 0x1
-    field public static final int SCRAMBLING_MODE_AES128 = 9; // 0x9
-    field public static final int SCRAMBLING_MODE_AES_ECB = 10; // 0xa
-    field public static final int SCRAMBLING_MODE_AES_SCTE52 = 11; // 0xb
-    field public static final int SCRAMBLING_MODE_DVB_CISSA_V1 = 6; // 0x6
-    field public static final int SCRAMBLING_MODE_DVB_CSA1 = 1; // 0x1
-    field public static final int SCRAMBLING_MODE_DVB_CSA2 = 2; // 0x2
-    field public static final int SCRAMBLING_MODE_DVB_CSA3_ENHANCE = 5; // 0x5
-    field public static final int SCRAMBLING_MODE_DVB_CSA3_MINIMAL = 4; // 0x4
-    field public static final int SCRAMBLING_MODE_DVB_CSA3_STANDARD = 3; // 0x3
-    field public static final int SCRAMBLING_MODE_DVB_IDSA = 7; // 0x7
-    field public static final int SCRAMBLING_MODE_MULTI2 = 8; // 0x8
-    field public static final int SCRAMBLING_MODE_RESERVED = 0; // 0x0
-    field public static final int SCRAMBLING_MODE_TDES_ECB = 12; // 0xc
-    field public static final int SCRAMBLING_MODE_TDES_SCTE52 = 13; // 0xd
-    field public static final int SESSION_USAGE_LIVE = 0; // 0x0
-    field public static final int SESSION_USAGE_PLAYBACK = 1; // 0x1
-    field public static final int SESSION_USAGE_RECORD = 2; // 0x2
-    field public static final int SESSION_USAGE_TIMESHIFT = 3; // 0x3
-  }
-
-  public static interface MediaCas.EventListener {
-    method public void onEvent(@NonNull android.media.MediaCas, int, int, @Nullable byte[]);
-    method public default void onPluginStatusUpdate(@NonNull android.media.MediaCas, int, int);
-    method public default void onResourceLost(@NonNull android.media.MediaCas);
-    method public default void onSessionEvent(@NonNull android.media.MediaCas, @NonNull android.media.MediaCas.Session, int, int, @Nullable byte[]);
-  }
-
-  public static class MediaCas.PluginDescriptor {
-    method @NonNull public String getName();
-    method public int getSystemId();
-  }
-
-  public final class MediaCas.Session implements java.lang.AutoCloseable {
-    method public void close();
-    method @NonNull public byte[] getSessionId();
-    method public void processEcm(@NonNull byte[], int, int) throws android.media.MediaCasException;
-    method public void processEcm(@NonNull byte[]) throws android.media.MediaCasException;
-    method public void sendSessionEvent(int, int, @Nullable byte[]) throws android.media.MediaCasException;
-    method public void setPrivateData(@NonNull byte[]) throws android.media.MediaCasException;
-  }
-
-  public class MediaCasException extends java.lang.Exception {
-  }
-
-  public static final class MediaCasException.DeniedByServerException extends android.media.MediaCasException {
-  }
-
-  public static final class MediaCasException.InsufficientResourceException extends android.media.MediaCasException {
-  }
-
-  public static final class MediaCasException.NotProvisionedException extends android.media.MediaCasException {
-  }
-
-  public static final class MediaCasException.ResourceBusyException extends android.media.MediaCasException {
-  }
-
-  public static final class MediaCasException.UnsupportedCasException extends android.media.MediaCasException {
-  }
-
-  public class MediaCasStateException extends java.lang.IllegalStateException {
-    method @NonNull public String getDiagnosticInfo();
-  }
-
-  public final class MediaCodec {
-    method public void configure(@Nullable android.media.MediaFormat, @Nullable android.view.Surface, @Nullable android.media.MediaCrypto, int);
-    method public void configure(@Nullable android.media.MediaFormat, @Nullable android.view.Surface, int, @Nullable android.media.MediaDescrambler);
-    method @NonNull public static android.media.MediaCodec createByCodecName(@NonNull String) throws java.io.IOException;
-    method @NonNull public static android.media.MediaCodec createDecoderByType(@NonNull String) throws java.io.IOException;
-    method @NonNull public static android.media.MediaCodec createEncoderByType(@NonNull String) throws java.io.IOException;
-    method @NonNull public android.view.Surface createInputSurface();
-    method @NonNull public static android.view.Surface createPersistentInputSurface();
-    method public int dequeueInputBuffer(long);
-    method public int dequeueOutputBuffer(@NonNull android.media.MediaCodec.BufferInfo, long);
-    method protected void finalize();
-    method public void flush();
-    method @NonNull public String getCanonicalName();
-    method @NonNull public android.media.MediaCodecInfo getCodecInfo();
-    method @Nullable public java.nio.ByteBuffer getInputBuffer(int);
-    method @Deprecated @NonNull public java.nio.ByteBuffer[] getInputBuffers();
-    method @NonNull public android.media.MediaFormat getInputFormat();
-    method @Nullable public android.media.Image getInputImage(int);
-    method public android.os.PersistableBundle getMetrics();
-    method @NonNull public String getName();
-    method @Nullable public java.nio.ByteBuffer getOutputBuffer(int);
-    method @Deprecated @NonNull public java.nio.ByteBuffer[] getOutputBuffers();
-    method @NonNull public android.media.MediaFormat getOutputFormat();
-    method @NonNull public android.media.MediaFormat getOutputFormat(int);
-    method @NonNull public android.media.MediaCodec.OutputFrame getOutputFrame(int);
-    method @Nullable public android.media.Image getOutputImage(int);
-    method @NonNull public android.media.MediaCodec.QueueRequest getQueueRequest(int);
-    method @Nullable public static android.media.Image mapHardwareBuffer(@NonNull android.hardware.HardwareBuffer);
-    method public void queueInputBuffer(int, int, int, long, int) throws android.media.MediaCodec.CryptoException;
-    method public void queueSecureInputBuffer(int, int, @NonNull android.media.MediaCodec.CryptoInfo, long, int) throws android.media.MediaCodec.CryptoException;
-    method public void release();
-    method public void releaseOutputBuffer(int, boolean);
-    method public void releaseOutputBuffer(int, long);
-    method public void reset();
-    method public void setAudioPresentation(@NonNull android.media.AudioPresentation);
-    method public void setCallback(@Nullable android.media.MediaCodec.Callback, @Nullable android.os.Handler);
-    method public void setCallback(@Nullable android.media.MediaCodec.Callback);
-    method public void setInputSurface(@NonNull android.view.Surface);
-    method public void setOnFrameRenderedListener(@Nullable android.media.MediaCodec.OnFrameRenderedListener, @Nullable android.os.Handler);
-    method public void setOutputSurface(@NonNull android.view.Surface);
-    method public void setParameters(@Nullable android.os.Bundle);
-    method public void setVideoScalingMode(int);
-    method public void signalEndOfInputStream();
-    method public void start();
-    method public void stop();
-    field public static final int BUFFER_FLAG_CODEC_CONFIG = 2; // 0x2
-    field public static final int BUFFER_FLAG_END_OF_STREAM = 4; // 0x4
-    field public static final int BUFFER_FLAG_KEY_FRAME = 1; // 0x1
-    field public static final int BUFFER_FLAG_PARTIAL_FRAME = 8; // 0x8
-    field @Deprecated public static final int BUFFER_FLAG_SYNC_FRAME = 1; // 0x1
-    field public static final int CONFIGURE_FLAG_ENCODE = 1; // 0x1
-    field public static final int CONFIGURE_FLAG_USE_BLOCK_MODEL = 2; // 0x2
-    field public static final int CRYPTO_MODE_AES_CBC = 2; // 0x2
-    field public static final int CRYPTO_MODE_AES_CTR = 1; // 0x1
-    field public static final int CRYPTO_MODE_UNENCRYPTED = 0; // 0x0
-    field @Deprecated public static final int INFO_OUTPUT_BUFFERS_CHANGED = -3; // 0xfffffffd
-    field public static final int INFO_OUTPUT_FORMAT_CHANGED = -2; // 0xfffffffe
-    field public static final int INFO_TRY_AGAIN_LATER = -1; // 0xffffffff
-    field public static final String PARAMETER_KEY_HDR10_PLUS_INFO = "hdr10-plus-info";
-    field public static final String PARAMETER_KEY_LOW_LATENCY = "low-latency";
-    field public static final String PARAMETER_KEY_OFFSET_TIME = "time-offset-us";
-    field public static final String PARAMETER_KEY_REQUEST_SYNC_FRAME = "request-sync";
-    field public static final String PARAMETER_KEY_SUSPEND = "drop-input-frames";
-    field public static final String PARAMETER_KEY_SUSPEND_TIME = "drop-start-time-us";
-    field public static final String PARAMETER_KEY_VIDEO_BITRATE = "video-bitrate";
-    field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT = 1; // 0x1
-    field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING = 2; // 0x2
-  }
-
-  public static final class MediaCodec.BufferInfo {
-    ctor public MediaCodec.BufferInfo();
-    method public void set(int, int, long, int);
-    field public int flags;
-    field public int offset;
-    field public long presentationTimeUs;
-    field public int size;
-  }
-
-  public abstract static class MediaCodec.Callback {
-    ctor public MediaCodec.Callback();
-    method public abstract void onError(@NonNull android.media.MediaCodec, @NonNull android.media.MediaCodec.CodecException);
-    method public abstract void onInputBufferAvailable(@NonNull android.media.MediaCodec, int);
-    method public abstract void onOutputBufferAvailable(@NonNull android.media.MediaCodec, int, @NonNull android.media.MediaCodec.BufferInfo);
-    method public abstract void onOutputFormatChanged(@NonNull android.media.MediaCodec, @NonNull android.media.MediaFormat);
-  }
-
-  public static final class MediaCodec.CodecException extends java.lang.IllegalStateException {
-    method @NonNull public String getDiagnosticInfo();
-    method public int getErrorCode();
-    method public boolean isRecoverable();
-    method public boolean isTransient();
-    field public static final int ERROR_INSUFFICIENT_RESOURCE = 1100; // 0x44c
-    field public static final int ERROR_RECLAIMED = 1101; // 0x44d
-  }
-
-  public static final class MediaCodec.CryptoException extends java.lang.RuntimeException {
-    ctor public MediaCodec.CryptoException(int, @Nullable String);
-    method public int getErrorCode();
-    field public static final int ERROR_FRAME_TOO_LARGE = 8; // 0x8
-    field public static final int ERROR_INSUFFICIENT_OUTPUT_PROTECTION = 4; // 0x4
-    field public static final int ERROR_INSUFFICIENT_SECURITY = 7; // 0x7
-    field public static final int ERROR_KEY_EXPIRED = 2; // 0x2
-    field public static final int ERROR_LOST_STATE = 9; // 0x9
-    field public static final int ERROR_NO_KEY = 1; // 0x1
-    field public static final int ERROR_RESOURCE_BUSY = 3; // 0x3
-    field public static final int ERROR_SESSION_NOT_OPENED = 5; // 0x5
-    field public static final int ERROR_UNSUPPORTED_OPERATION = 6; // 0x6
-  }
-
-  public static final class MediaCodec.CryptoInfo {
-    ctor public MediaCodec.CryptoInfo();
-    method public void set(int, @NonNull int[], @NonNull int[], @NonNull byte[], @NonNull byte[], int);
-    method public void setPattern(android.media.MediaCodec.CryptoInfo.Pattern);
-    field public byte[] iv;
-    field public byte[] key;
-    field public int mode;
-    field public int[] numBytesOfClearData;
-    field public int[] numBytesOfEncryptedData;
-    field public int numSubSamples;
-  }
-
-  public static final class MediaCodec.CryptoInfo.Pattern {
-    ctor public MediaCodec.CryptoInfo.Pattern(int, int);
-    method public int getEncryptBlocks();
-    method public int getSkipBlocks();
-    method public void set(int, int);
-  }
-
-  public class MediaCodec.IncompatibleWithBlockModelException extends java.lang.RuntimeException {
-  }
-
-  public static final class MediaCodec.LinearBlock {
-    method protected void finalize();
-    method public static boolean isCodecCopyFreeCompatible(@NonNull String[]);
-    method public boolean isMappable();
-    method @NonNull public java.nio.ByteBuffer map();
-    method @Nullable public static android.media.MediaCodec.LinearBlock obtain(int, @NonNull String[]);
-    method public void recycle();
-  }
-
-  public static final class MediaCodec.MetricsConstants {
-    field public static final String CODEC = "android.media.mediacodec.codec";
-    field public static final String ENCODER = "android.media.mediacodec.encoder";
-    field public static final String HEIGHT = "android.media.mediacodec.height";
-    field public static final String MIME_TYPE = "android.media.mediacodec.mime";
-    field public static final String MODE = "android.media.mediacodec.mode";
-    field public static final String MODE_AUDIO = "audio";
-    field public static final String MODE_VIDEO = "video";
-    field public static final String ROTATION = "android.media.mediacodec.rotation";
-    field public static final String SECURE = "android.media.mediacodec.secure";
-    field public static final String WIDTH = "android.media.mediacodec.width";
-  }
-
-  public static interface MediaCodec.OnFrameRenderedListener {
-    method public void onFrameRendered(@NonNull android.media.MediaCodec, long, long);
-  }
-
-  public static final class MediaCodec.OutputFrame {
-    method @NonNull public java.util.Set<java.lang.String> getChangedKeys();
-    method public int getFlags();
-    method @NonNull public android.media.MediaFormat getFormat();
-    method @Nullable public android.hardware.HardwareBuffer getHardwareBuffer();
-    method @Nullable public android.media.MediaCodec.LinearBlock getLinearBlock();
-    method public long getPresentationTimeUs();
-  }
-
-  public final class MediaCodec.QueueRequest {
-    method public void queue();
-    method @NonNull public android.media.MediaCodec.QueueRequest setByteBufferParameter(@NonNull String, @NonNull java.nio.ByteBuffer);
-    method @NonNull public android.media.MediaCodec.QueueRequest setEncryptedLinearBlock(@NonNull android.media.MediaCodec.LinearBlock, int, int, @NonNull android.media.MediaCodec.CryptoInfo);
-    method @NonNull public android.media.MediaCodec.QueueRequest setFlags(int);
-    method @NonNull public android.media.MediaCodec.QueueRequest setFloatParameter(@NonNull String, float);
-    method @NonNull public android.media.MediaCodec.QueueRequest setHardwareBuffer(@NonNull android.hardware.HardwareBuffer);
-    method @NonNull public android.media.MediaCodec.QueueRequest setIntegerParameter(@NonNull String, int);
-    method @NonNull public android.media.MediaCodec.QueueRequest setLinearBlock(@NonNull android.media.MediaCodec.LinearBlock, int, int);
-    method @NonNull public android.media.MediaCodec.QueueRequest setLongParameter(@NonNull String, long);
-    method @NonNull public android.media.MediaCodec.QueueRequest setPresentationTimeUs(long);
-    method @NonNull public android.media.MediaCodec.QueueRequest setStringParameter(@NonNull String, @NonNull String);
-  }
-
-  public final class MediaCodecInfo {
-    method @NonNull public String getCanonicalName();
-    method public android.media.MediaCodecInfo.CodecCapabilities getCapabilitiesForType(String);
-    method @NonNull public String getName();
-    method public String[] getSupportedTypes();
-    method public boolean isAlias();
-    method public boolean isEncoder();
-    method public boolean isHardwareAccelerated();
-    method public boolean isSoftwareOnly();
-    method public boolean isVendor();
-  }
-
-  public static final class MediaCodecInfo.AudioCapabilities {
-    method public android.util.Range<java.lang.Integer> getBitrateRange();
-    method public int getMaxInputChannelCount();
-    method public android.util.Range<java.lang.Integer>[] getSupportedSampleRateRanges();
-    method public int[] getSupportedSampleRates();
-    method public boolean isSampleRateSupported(int);
-  }
-
-  public static final class MediaCodecInfo.CodecCapabilities {
-    ctor public MediaCodecInfo.CodecCapabilities();
-    method public static android.media.MediaCodecInfo.CodecCapabilities createFromProfileLevel(String, int, int);
-    method public android.media.MediaCodecInfo.AudioCapabilities getAudioCapabilities();
-    method public android.media.MediaFormat getDefaultFormat();
-    method public android.media.MediaCodecInfo.EncoderCapabilities getEncoderCapabilities();
-    method public int getMaxSupportedInstances();
-    method public String getMimeType();
-    method public android.media.MediaCodecInfo.VideoCapabilities getVideoCapabilities();
-    method public boolean isFeatureRequired(String);
-    method public boolean isFeatureSupported(String);
-    method public boolean isFormatSupported(android.media.MediaFormat);
-    field @Deprecated public static final int COLOR_Format12bitRGB444 = 3; // 0x3
-    field @Deprecated public static final int COLOR_Format16bitARGB1555 = 5; // 0x5
-    field @Deprecated public static final int COLOR_Format16bitARGB4444 = 4; // 0x4
-    field @Deprecated public static final int COLOR_Format16bitBGR565 = 7; // 0x7
-    field public static final int COLOR_Format16bitRGB565 = 6; // 0x6
-    field @Deprecated public static final int COLOR_Format18BitBGR666 = 41; // 0x29
-    field @Deprecated public static final int COLOR_Format18bitARGB1665 = 9; // 0x9
-    field @Deprecated public static final int COLOR_Format18bitRGB666 = 8; // 0x8
-    field @Deprecated public static final int COLOR_Format19bitARGB1666 = 10; // 0xa
-    field @Deprecated public static final int COLOR_Format24BitABGR6666 = 43; // 0x2b
-    field @Deprecated public static final int COLOR_Format24BitARGB6666 = 42; // 0x2a
-    field @Deprecated public static final int COLOR_Format24bitARGB1887 = 13; // 0xd
-    field public static final int COLOR_Format24bitBGR888 = 12; // 0xc
-    field @Deprecated public static final int COLOR_Format24bitRGB888 = 11; // 0xb
-    field @Deprecated public static final int COLOR_Format25bitARGB1888 = 14; // 0xe
-    field public static final int COLOR_Format32bitABGR8888 = 2130747392; // 0x7f00a000
-    field @Deprecated public static final int COLOR_Format32bitARGB8888 = 16; // 0x10
-    field @Deprecated public static final int COLOR_Format32bitBGRA8888 = 15; // 0xf
-    field @Deprecated public static final int COLOR_Format8bitRGB332 = 2; // 0x2
-    field @Deprecated public static final int COLOR_FormatCbYCrY = 27; // 0x1b
-    field @Deprecated public static final int COLOR_FormatCrYCbY = 28; // 0x1c
-    field public static final int COLOR_FormatL16 = 36; // 0x24
-    field @Deprecated public static final int COLOR_FormatL2 = 33; // 0x21
-    field @Deprecated public static final int COLOR_FormatL24 = 37; // 0x25
-    field @Deprecated public static final int COLOR_FormatL32 = 38; // 0x26
-    field @Deprecated public static final int COLOR_FormatL4 = 34; // 0x22
-    field public static final int COLOR_FormatL8 = 35; // 0x23
-    field @Deprecated public static final int COLOR_FormatMonochrome = 1; // 0x1
-    field public static final int COLOR_FormatRGBAFlexible = 2134288520; // 0x7f36a888
-    field public static final int COLOR_FormatRGBFlexible = 2134292616; // 0x7f36b888
-    field public static final int COLOR_FormatRawBayer10bit = 31; // 0x1f
-    field public static final int COLOR_FormatRawBayer8bit = 30; // 0x1e
-    field public static final int COLOR_FormatRawBayer8bitcompressed = 32; // 0x20
-    field public static final int COLOR_FormatSurface = 2130708361; // 0x7f000789
-    field @Deprecated public static final int COLOR_FormatYCbYCr = 25; // 0x19
-    field @Deprecated public static final int COLOR_FormatYCrYCb = 26; // 0x1a
-    field @Deprecated public static final int COLOR_FormatYUV411PackedPlanar = 18; // 0x12
-    field @Deprecated public static final int COLOR_FormatYUV411Planar = 17; // 0x11
-    field public static final int COLOR_FormatYUV420Flexible = 2135033992; // 0x7f420888
-    field @Deprecated public static final int COLOR_FormatYUV420PackedPlanar = 20; // 0x14
-    field @Deprecated public static final int COLOR_FormatYUV420PackedSemiPlanar = 39; // 0x27
-    field @Deprecated public static final int COLOR_FormatYUV420Planar = 19; // 0x13
-    field @Deprecated public static final int COLOR_FormatYUV420SemiPlanar = 21; // 0x15
-    field public static final int COLOR_FormatYUV422Flexible = 2135042184; // 0x7f422888
-    field @Deprecated public static final int COLOR_FormatYUV422PackedPlanar = 23; // 0x17
-    field @Deprecated public static final int COLOR_FormatYUV422PackedSemiPlanar = 40; // 0x28
-    field @Deprecated public static final int COLOR_FormatYUV422Planar = 22; // 0x16
-    field @Deprecated public static final int COLOR_FormatYUV422SemiPlanar = 24; // 0x18
-    field public static final int COLOR_FormatYUV444Flexible = 2135181448; // 0x7f444888
-    field @Deprecated public static final int COLOR_FormatYUV444Interleaved = 29; // 0x1d
-    field @Deprecated public static final int COLOR_QCOM_FormatYUV420SemiPlanar = 2141391872; // 0x7fa30c00
-    field @Deprecated public static final int COLOR_TI_FormatYUV420PackedSemiPlanar = 2130706688; // 0x7f000100
-    field public static final String FEATURE_AdaptivePlayback = "adaptive-playback";
-    field public static final String FEATURE_DynamicTimestamp = "dynamic-timestamp";
-    field public static final String FEATURE_FrameParsing = "frame-parsing";
-    field public static final String FEATURE_IntraRefresh = "intra-refresh";
-    field public static final String FEATURE_LowLatency = "low-latency";
-    field public static final String FEATURE_MultipleFrames = "multiple-frames";
-    field public static final String FEATURE_PartialFrame = "partial-frame";
-    field public static final String FEATURE_SecurePlayback = "secure-playback";
-    field public static final String FEATURE_TunneledPlayback = "tunneled-playback";
-    field public int[] colorFormats;
-    field public android.media.MediaCodecInfo.CodecProfileLevel[] profileLevels;
-  }
-
-  public static final class MediaCodecInfo.CodecProfileLevel {
-    ctor public MediaCodecInfo.CodecProfileLevel();
-    field public static final int AACObjectELD = 39; // 0x27
-    field public static final int AACObjectERLC = 17; // 0x11
-    field public static final int AACObjectERScalable = 20; // 0x14
-    field public static final int AACObjectHE = 5; // 0x5
-    field public static final int AACObjectHE_PS = 29; // 0x1d
-    field public static final int AACObjectLC = 2; // 0x2
-    field public static final int AACObjectLD = 23; // 0x17
-    field public static final int AACObjectLTP = 4; // 0x4
-    field public static final int AACObjectMain = 1; // 0x1
-    field public static final int AACObjectSSR = 3; // 0x3
-    field public static final int AACObjectScalable = 6; // 0x6
-    field public static final int AACObjectXHE = 42; // 0x2a
-    field public static final int AV1Level2 = 1; // 0x1
-    field public static final int AV1Level21 = 2; // 0x2
-    field public static final int AV1Level22 = 4; // 0x4
-    field public static final int AV1Level23 = 8; // 0x8
-    field public static final int AV1Level3 = 16; // 0x10
-    field public static final int AV1Level31 = 32; // 0x20
-    field public static final int AV1Level32 = 64; // 0x40
-    field public static final int AV1Level33 = 128; // 0x80
-    field public static final int AV1Level4 = 256; // 0x100
-    field public static final int AV1Level41 = 512; // 0x200
-    field public static final int AV1Level42 = 1024; // 0x400
-    field public static final int AV1Level43 = 2048; // 0x800
-    field public static final int AV1Level5 = 4096; // 0x1000
-    field public static final int AV1Level51 = 8192; // 0x2000
-    field public static final int AV1Level52 = 16384; // 0x4000
-    field public static final int AV1Level53 = 32768; // 0x8000
-    field public static final int AV1Level6 = 65536; // 0x10000
-    field public static final int AV1Level61 = 131072; // 0x20000
-    field public static final int AV1Level62 = 262144; // 0x40000
-    field public static final int AV1Level63 = 524288; // 0x80000
-    field public static final int AV1Level7 = 1048576; // 0x100000
-    field public static final int AV1Level71 = 2097152; // 0x200000
-    field public static final int AV1Level72 = 4194304; // 0x400000
-    field public static final int AV1Level73 = 8388608; // 0x800000
-    field public static final int AV1ProfileMain10 = 2; // 0x2
-    field public static final int AV1ProfileMain10HDR10 = 4096; // 0x1000
-    field public static final int AV1ProfileMain10HDR10Plus = 8192; // 0x2000
-    field public static final int AV1ProfileMain8 = 1; // 0x1
-    field public static final int AVCLevel1 = 1; // 0x1
-    field public static final int AVCLevel11 = 4; // 0x4
-    field public static final int AVCLevel12 = 8; // 0x8
-    field public static final int AVCLevel13 = 16; // 0x10
-    field public static final int AVCLevel1b = 2; // 0x2
-    field public static final int AVCLevel2 = 32; // 0x20
-    field public static final int AVCLevel21 = 64; // 0x40
-    field public static final int AVCLevel22 = 128; // 0x80
-    field public static final int AVCLevel3 = 256; // 0x100
-    field public static final int AVCLevel31 = 512; // 0x200
-    field public static final int AVCLevel32 = 1024; // 0x400
-    field public static final int AVCLevel4 = 2048; // 0x800
-    field public static final int AVCLevel41 = 4096; // 0x1000
-    field public static final int AVCLevel42 = 8192; // 0x2000
-    field public static final int AVCLevel5 = 16384; // 0x4000
-    field public static final int AVCLevel51 = 32768; // 0x8000
-    field public static final int AVCLevel52 = 65536; // 0x10000
-    field public static final int AVCLevel6 = 131072; // 0x20000
-    field public static final int AVCLevel61 = 262144; // 0x40000
-    field public static final int AVCLevel62 = 524288; // 0x80000
-    field public static final int AVCProfileBaseline = 1; // 0x1
-    field public static final int AVCProfileConstrainedBaseline = 65536; // 0x10000
-    field public static final int AVCProfileConstrainedHigh = 524288; // 0x80000
-    field public static final int AVCProfileExtended = 4; // 0x4
-    field public static final int AVCProfileHigh = 8; // 0x8
-    field public static final int AVCProfileHigh10 = 16; // 0x10
-    field public static final int AVCProfileHigh422 = 32; // 0x20
-    field public static final int AVCProfileHigh444 = 64; // 0x40
-    field public static final int AVCProfileMain = 2; // 0x2
-    field public static final int DolbyVisionLevelFhd24 = 4; // 0x4
-    field public static final int DolbyVisionLevelFhd30 = 8; // 0x8
-    field public static final int DolbyVisionLevelFhd60 = 16; // 0x10
-    field public static final int DolbyVisionLevelHd24 = 1; // 0x1
-    field public static final int DolbyVisionLevelHd30 = 2; // 0x2
-    field public static final int DolbyVisionLevelUhd24 = 32; // 0x20
-    field public static final int DolbyVisionLevelUhd30 = 64; // 0x40
-    field public static final int DolbyVisionLevelUhd48 = 128; // 0x80
-    field public static final int DolbyVisionLevelUhd60 = 256; // 0x100
-    field public static final int DolbyVisionProfileDvav110 = 1024; // 0x400
-    field public static final int DolbyVisionProfileDvavPen = 2; // 0x2
-    field public static final int DolbyVisionProfileDvavPer = 1; // 0x1
-    field public static final int DolbyVisionProfileDvavSe = 512; // 0x200
-    field public static final int DolbyVisionProfileDvheDen = 8; // 0x8
-    field public static final int DolbyVisionProfileDvheDer = 4; // 0x4
-    field public static final int DolbyVisionProfileDvheDtb = 128; // 0x80
-    field public static final int DolbyVisionProfileDvheDth = 64; // 0x40
-    field public static final int DolbyVisionProfileDvheDtr = 16; // 0x10
-    field public static final int DolbyVisionProfileDvheSt = 256; // 0x100
-    field public static final int DolbyVisionProfileDvheStn = 32; // 0x20
-    field public static final int H263Level10 = 1; // 0x1
-    field public static final int H263Level20 = 2; // 0x2
-    field public static final int H263Level30 = 4; // 0x4
-    field public static final int H263Level40 = 8; // 0x8
-    field public static final int H263Level45 = 16; // 0x10
-    field public static final int H263Level50 = 32; // 0x20
-    field public static final int H263Level60 = 64; // 0x40
-    field public static final int H263Level70 = 128; // 0x80
-    field public static final int H263ProfileBackwardCompatible = 4; // 0x4
-    field public static final int H263ProfileBaseline = 1; // 0x1
-    field public static final int H263ProfileH320Coding = 2; // 0x2
-    field public static final int H263ProfileHighCompression = 32; // 0x20
-    field public static final int H263ProfileHighLatency = 256; // 0x100
-    field public static final int H263ProfileISWV2 = 8; // 0x8
-    field public static final int H263ProfileISWV3 = 16; // 0x10
-    field public static final int H263ProfileInterlace = 128; // 0x80
-    field public static final int H263ProfileInternet = 64; // 0x40
-    field public static final int HEVCHighTierLevel1 = 2; // 0x2
-    field public static final int HEVCHighTierLevel2 = 8; // 0x8
-    field public static final int HEVCHighTierLevel21 = 32; // 0x20
-    field public static final int HEVCHighTierLevel3 = 128; // 0x80
-    field public static final int HEVCHighTierLevel31 = 512; // 0x200
-    field public static final int HEVCHighTierLevel4 = 2048; // 0x800
-    field public static final int HEVCHighTierLevel41 = 8192; // 0x2000
-    field public static final int HEVCHighTierLevel5 = 32768; // 0x8000
-    field public static final int HEVCHighTierLevel51 = 131072; // 0x20000
-    field public static final int HEVCHighTierLevel52 = 524288; // 0x80000
-    field public static final int HEVCHighTierLevel6 = 2097152; // 0x200000
-    field public static final int HEVCHighTierLevel61 = 8388608; // 0x800000
-    field public static final int HEVCHighTierLevel62 = 33554432; // 0x2000000
-    field public static final int HEVCMainTierLevel1 = 1; // 0x1
-    field public static final int HEVCMainTierLevel2 = 4; // 0x4
-    field public static final int HEVCMainTierLevel21 = 16; // 0x10
-    field public static final int HEVCMainTierLevel3 = 64; // 0x40
-    field public static final int HEVCMainTierLevel31 = 256; // 0x100
-    field public static final int HEVCMainTierLevel4 = 1024; // 0x400
-    field public static final int HEVCMainTierLevel41 = 4096; // 0x1000
-    field public static final int HEVCMainTierLevel5 = 16384; // 0x4000
-    field public static final int HEVCMainTierLevel51 = 65536; // 0x10000
-    field public static final int HEVCMainTierLevel52 = 262144; // 0x40000
-    field public static final int HEVCMainTierLevel6 = 1048576; // 0x100000
-    field public static final int HEVCMainTierLevel61 = 4194304; // 0x400000
-    field public static final int HEVCMainTierLevel62 = 16777216; // 0x1000000
-    field public static final int HEVCProfileMain = 1; // 0x1
-    field public static final int HEVCProfileMain10 = 2; // 0x2
-    field public static final int HEVCProfileMain10HDR10 = 4096; // 0x1000
-    field public static final int HEVCProfileMain10HDR10Plus = 8192; // 0x2000
-    field public static final int HEVCProfileMainStill = 4; // 0x4
-    field public static final int MPEG2LevelH14 = 2; // 0x2
-    field public static final int MPEG2LevelHL = 3; // 0x3
-    field public static final int MPEG2LevelHP = 4; // 0x4
-    field public static final int MPEG2LevelLL = 0; // 0x0
-    field public static final int MPEG2LevelML = 1; // 0x1
-    field public static final int MPEG2Profile422 = 2; // 0x2
-    field public static final int MPEG2ProfileHigh = 5; // 0x5
-    field public static final int MPEG2ProfileMain = 1; // 0x1
-    field public static final int MPEG2ProfileSNR = 3; // 0x3
-    field public static final int MPEG2ProfileSimple = 0; // 0x0
-    field public static final int MPEG2ProfileSpatial = 4; // 0x4
-    field public static final int MPEG4Level0 = 1; // 0x1
-    field public static final int MPEG4Level0b = 2; // 0x2
-    field public static final int MPEG4Level1 = 4; // 0x4
-    field public static final int MPEG4Level2 = 8; // 0x8
-    field public static final int MPEG4Level3 = 16; // 0x10
-    field public static final int MPEG4Level3b = 24; // 0x18
-    field public static final int MPEG4Level4 = 32; // 0x20
-    field public static final int MPEG4Level4a = 64; // 0x40
-    field public static final int MPEG4Level5 = 128; // 0x80
-    field public static final int MPEG4Level6 = 256; // 0x100
-    field public static final int MPEG4ProfileAdvancedCoding = 4096; // 0x1000
-    field public static final int MPEG4ProfileAdvancedCore = 8192; // 0x2000
-    field public static final int MPEG4ProfileAdvancedRealTime = 1024; // 0x400
-    field public static final int MPEG4ProfileAdvancedScalable = 16384; // 0x4000
-    field public static final int MPEG4ProfileAdvancedSimple = 32768; // 0x8000
-    field public static final int MPEG4ProfileBasicAnimated = 256; // 0x100
-    field public static final int MPEG4ProfileCore = 4; // 0x4
-    field public static final int MPEG4ProfileCoreScalable = 2048; // 0x800
-    field public static final int MPEG4ProfileHybrid = 512; // 0x200
-    field public static final int MPEG4ProfileMain = 8; // 0x8
-    field public static final int MPEG4ProfileNbit = 16; // 0x10
-    field public static final int MPEG4ProfileScalableTexture = 32; // 0x20
-    field public static final int MPEG4ProfileSimple = 1; // 0x1
-    field public static final int MPEG4ProfileSimpleFBA = 128; // 0x80
-    field public static final int MPEG4ProfileSimpleFace = 64; // 0x40
-    field public static final int MPEG4ProfileSimpleScalable = 2; // 0x2
-    field public static final int VP8Level_Version0 = 1; // 0x1
-    field public static final int VP8Level_Version1 = 2; // 0x2
-    field public static final int VP8Level_Version2 = 4; // 0x4
-    field public static final int VP8Level_Version3 = 8; // 0x8
-    field public static final int VP8ProfileMain = 1; // 0x1
-    field public static final int VP9Level1 = 1; // 0x1
-    field public static final int VP9Level11 = 2; // 0x2
-    field public static final int VP9Level2 = 4; // 0x4
-    field public static final int VP9Level21 = 8; // 0x8
-    field public static final int VP9Level3 = 16; // 0x10
-    field public static final int VP9Level31 = 32; // 0x20
-    field public static final int VP9Level4 = 64; // 0x40
-    field public static final int VP9Level41 = 128; // 0x80
-    field public static final int VP9Level5 = 256; // 0x100
-    field public static final int VP9Level51 = 512; // 0x200
-    field public static final int VP9Level52 = 1024; // 0x400
-    field public static final int VP9Level6 = 2048; // 0x800
-    field public static final int VP9Level61 = 4096; // 0x1000
-    field public static final int VP9Level62 = 8192; // 0x2000
-    field public static final int VP9Profile0 = 1; // 0x1
-    field public static final int VP9Profile1 = 2; // 0x2
-    field public static final int VP9Profile2 = 4; // 0x4
-    field public static final int VP9Profile2HDR = 4096; // 0x1000
-    field public static final int VP9Profile2HDR10Plus = 16384; // 0x4000
-    field public static final int VP9Profile3 = 8; // 0x8
-    field public static final int VP9Profile3HDR = 8192; // 0x2000
-    field public static final int VP9Profile3HDR10Plus = 32768; // 0x8000
-    field public int level;
-    field public int profile;
-  }
-
-  public static final class MediaCodecInfo.EncoderCapabilities {
-    method public android.util.Range<java.lang.Integer> getComplexityRange();
-    method public android.util.Range<java.lang.Integer> getQualityRange();
-    method public boolean isBitrateModeSupported(int);
-    field public static final int BITRATE_MODE_CBR = 2; // 0x2
-    field public static final int BITRATE_MODE_CQ = 0; // 0x0
-    field public static final int BITRATE_MODE_VBR = 1; // 0x1
-  }
-
-  public static final class MediaCodecInfo.VideoCapabilities {
-    method public boolean areSizeAndRateSupported(int, int, double);
-    method @Nullable public android.util.Range<java.lang.Double> getAchievableFrameRatesFor(int, int);
-    method public android.util.Range<java.lang.Integer> getBitrateRange();
-    method public int getHeightAlignment();
-    method public android.util.Range<java.lang.Integer> getSupportedFrameRates();
-    method public android.util.Range<java.lang.Double> getSupportedFrameRatesFor(int, int);
-    method public android.util.Range<java.lang.Integer> getSupportedHeights();
-    method public android.util.Range<java.lang.Integer> getSupportedHeightsFor(int);
-    method @Nullable public java.util.List<android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint> getSupportedPerformancePoints();
-    method public android.util.Range<java.lang.Integer> getSupportedWidths();
-    method public android.util.Range<java.lang.Integer> getSupportedWidthsFor(int);
-    method public int getWidthAlignment();
-    method public boolean isSizeSupported(int, int);
-  }
-
-  public static final class MediaCodecInfo.VideoCapabilities.PerformancePoint {
-    ctor public MediaCodecInfo.VideoCapabilities.PerformancePoint(int, int, int);
-    method public boolean covers(@NonNull android.media.MediaFormat);
-    method public boolean covers(@NonNull android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint);
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_100;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_120;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_200;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_24;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_240;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_25;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_30;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_50;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_60;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_100;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_120;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_200;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_24;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_240;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_25;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_30;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_50;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_60;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_24;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_25;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_30;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_48;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_50;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_60;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_100;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_120;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_200;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_24;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_240;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_25;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_30;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_50;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_60;
-  }
-
-  public final class MediaCodecList {
-    ctor public MediaCodecList(int);
-    method public String findDecoderForFormat(android.media.MediaFormat);
-    method public String findEncoderForFormat(android.media.MediaFormat);
-    method @Deprecated public static int getCodecCount();
-    method @Deprecated public static android.media.MediaCodecInfo getCodecInfoAt(int);
-    method public android.media.MediaCodecInfo[] getCodecInfos();
-    field public static final int ALL_CODECS = 1; // 0x1
-    field public static final int REGULAR_CODECS = 0; // 0x0
-  }
-
-  public class MediaController2 implements java.lang.AutoCloseable {
-    method public void cancelSessionCommand(@NonNull Object);
-    method public void close();
-    method @Nullable public android.media.Session2Token getConnectedToken();
-    method public boolean isPlaybackActive();
-    method @NonNull public Object sendSessionCommand(@NonNull android.media.Session2Command, @Nullable android.os.Bundle);
-  }
-
-  public static final class MediaController2.Builder {
-    ctor public MediaController2.Builder(@NonNull android.content.Context, @NonNull android.media.Session2Token);
-    method @NonNull public android.media.MediaController2 build();
-    method @NonNull public android.media.MediaController2.Builder setConnectionHints(@NonNull android.os.Bundle);
-    method @NonNull public android.media.MediaController2.Builder setControllerCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaController2.ControllerCallback);
-  }
-
-  public abstract static class MediaController2.ControllerCallback {
-    ctor public MediaController2.ControllerCallback();
-    method public void onCommandResult(@NonNull android.media.MediaController2, @NonNull Object, @NonNull android.media.Session2Command, @NonNull android.media.Session2Command.Result);
-    method public void onConnected(@NonNull android.media.MediaController2, @NonNull android.media.Session2CommandGroup);
-    method public void onDisconnected(@NonNull android.media.MediaController2);
-    method public void onPlaybackActiveChanged(@NonNull android.media.MediaController2, boolean);
-    method @Nullable public android.media.Session2Command.Result onSessionCommand(@NonNull android.media.MediaController2, @NonNull android.media.Session2Command, @Nullable android.os.Bundle);
-  }
-
-  public final class MediaCrypto {
-    ctor public MediaCrypto(@NonNull java.util.UUID, @NonNull byte[]) throws android.media.MediaCryptoException;
-    method protected void finalize();
-    method public static boolean isCryptoSchemeSupported(@NonNull java.util.UUID);
-    method public void release();
-    method public boolean requiresSecureDecoderComponent(@NonNull String);
-    method public void setMediaDrmSession(@NonNull byte[]) throws android.media.MediaCryptoException;
-  }
-
-  public final class MediaCryptoException extends java.lang.Exception {
-    ctor public MediaCryptoException(@Nullable String);
-  }
-
-  public abstract class MediaDataSource implements java.io.Closeable {
-    ctor public MediaDataSource();
-    method public abstract long getSize() throws java.io.IOException;
-    method public abstract int readAt(long, byte[], int, int) throws java.io.IOException;
-  }
-
-  public final class MediaDescrambler implements java.lang.AutoCloseable {
-    ctor public MediaDescrambler(int) throws android.media.MediaCasException.UnsupportedCasException;
-    method public void close();
-    method public int descramble(@NonNull java.nio.ByteBuffer, @NonNull java.nio.ByteBuffer, @NonNull android.media.MediaCodec.CryptoInfo);
-    method protected void finalize();
-    method public boolean requiresSecureDecoderComponent(@NonNull String);
-    method public void setMediaCasSession(@NonNull android.media.MediaCas.Session);
-    field public static final byte SCRAMBLE_CONTROL_EVEN_KEY = 2; // 0x2
-    field public static final byte SCRAMBLE_CONTROL_ODD_KEY = 3; // 0x3
-    field public static final byte SCRAMBLE_CONTROL_RESERVED = 1; // 0x1
-    field public static final byte SCRAMBLE_CONTROL_UNSCRAMBLED = 0; // 0x0
-    field public static final byte SCRAMBLE_FLAG_PES_HEADER = 1; // 0x1
-  }
-
-  public class MediaDescription implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public CharSequence getDescription();
-    method @Nullable public android.os.Bundle getExtras();
-    method @Nullable public android.graphics.Bitmap getIconBitmap();
-    method @Nullable public android.net.Uri getIconUri();
-    method @Nullable public String getMediaId();
-    method @Nullable public android.net.Uri getMediaUri();
-    method @Nullable public CharSequence getSubtitle();
-    method @Nullable public CharSequence getTitle();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final long BT_FOLDER_TYPE_ALBUMS = 2L; // 0x2L
-    field public static final long BT_FOLDER_TYPE_ARTISTS = 3L; // 0x3L
-    field public static final long BT_FOLDER_TYPE_GENRES = 4L; // 0x4L
-    field public static final long BT_FOLDER_TYPE_MIXED = 0L; // 0x0L
-    field public static final long BT_FOLDER_TYPE_PLAYLISTS = 5L; // 0x5L
-    field public static final long BT_FOLDER_TYPE_TITLES = 1L; // 0x1L
-    field public static final long BT_FOLDER_TYPE_YEARS = 6L; // 0x6L
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.MediaDescription> CREATOR;
-    field public static final String EXTRA_BT_FOLDER_TYPE = "android.media.extra.BT_FOLDER_TYPE";
-  }
-
-  public static class MediaDescription.Builder {
-    ctor public MediaDescription.Builder();
-    method public android.media.MediaDescription build();
-    method public android.media.MediaDescription.Builder setDescription(@Nullable CharSequence);
-    method public android.media.MediaDescription.Builder setExtras(@Nullable android.os.Bundle);
-    method public android.media.MediaDescription.Builder setIconBitmap(@Nullable android.graphics.Bitmap);
-    method public android.media.MediaDescription.Builder setIconUri(@Nullable android.net.Uri);
-    method public android.media.MediaDescription.Builder setMediaId(@Nullable String);
-    method public android.media.MediaDescription.Builder setMediaUri(@Nullable android.net.Uri);
-    method public android.media.MediaDescription.Builder setSubtitle(@Nullable CharSequence);
-    method public android.media.MediaDescription.Builder setTitle(@Nullable CharSequence);
-  }
-
-  public final class MediaDrm implements java.lang.AutoCloseable {
-    ctor public MediaDrm(@NonNull java.util.UUID) throws android.media.UnsupportedSchemeException;
-    method public void clearOnEventListener();
-    method public void clearOnExpirationUpdateListener();
-    method public void clearOnKeyStatusChangeListener();
-    method public void clearOnSessionLostStateListener();
-    method public void close();
-    method public void closeSession(@NonNull byte[]);
-    method @android.media.MediaDrm.HdcpLevel public int getConnectedHdcpLevel();
-    method public android.media.MediaDrm.CryptoSession getCryptoSession(@NonNull byte[], @NonNull String, @NonNull String);
-    method @NonNull public android.media.MediaDrm.KeyRequest getKeyRequest(@NonNull byte[], @Nullable byte[], @Nullable String, int, @Nullable java.util.HashMap<java.lang.String,java.lang.String>) throws android.media.NotProvisionedException;
-    method @android.media.MediaDrm.HdcpLevel public int getMaxHdcpLevel();
-    method public static int getMaxSecurityLevel();
-    method public int getMaxSessionCount();
-    method public android.os.PersistableBundle getMetrics();
-    method @NonNull public java.util.List<byte[]> getOfflineLicenseKeySetIds();
-    method public int getOfflineLicenseState(@NonNull byte[]);
-    method public int getOpenSessionCount();
-    method @NonNull public byte[] getPropertyByteArray(String);
-    method @NonNull public String getPropertyString(@NonNull String);
-    method @NonNull public android.media.MediaDrm.ProvisionRequest getProvisionRequest();
-    method @NonNull public byte[] getSecureStop(@NonNull byte[]);
-    method @NonNull public java.util.List<byte[]> getSecureStopIds();
-    method @NonNull public java.util.List<byte[]> getSecureStops();
-    method @android.media.MediaDrm.SecurityLevel public int getSecurityLevel(@NonNull byte[]);
-    method @NonNull public static java.util.List<java.util.UUID> getSupportedCryptoSchemes();
-    method public static boolean isCryptoSchemeSupported(@NonNull java.util.UUID);
-    method public static boolean isCryptoSchemeSupported(@NonNull java.util.UUID, @NonNull String);
-    method public static boolean isCryptoSchemeSupported(@NonNull java.util.UUID, @NonNull String, @android.media.MediaDrm.SecurityLevel int);
-    method @NonNull public byte[] openSession() throws android.media.NotProvisionedException, android.media.ResourceBusyException;
-    method @NonNull public byte[] openSession(@android.media.MediaDrm.SecurityLevel int) throws android.media.NotProvisionedException, android.media.ResourceBusyException;
-    method @Nullable public byte[] provideKeyResponse(@NonNull byte[], @NonNull byte[]) throws android.media.DeniedByServerException, android.media.NotProvisionedException;
-    method public void provideProvisionResponse(@NonNull byte[]) throws android.media.DeniedByServerException;
-    method @NonNull public java.util.HashMap<java.lang.String,java.lang.String> queryKeyStatus(@NonNull byte[]);
-    method @Deprecated public void release();
-    method @Deprecated public void releaseAllSecureStops();
-    method public void releaseSecureStops(@NonNull byte[]);
-    method public void removeAllSecureStops();
-    method public void removeKeys(@NonNull byte[]);
-    method public void removeOfflineLicense(@NonNull byte[]);
-    method public void removeSecureStop(@NonNull byte[]);
-    method public void restoreKeys(@NonNull byte[], @NonNull byte[]);
-    method public void setOnEventListener(@Nullable android.media.MediaDrm.OnEventListener);
-    method public void setOnEventListener(@Nullable android.media.MediaDrm.OnEventListener, @Nullable android.os.Handler);
-    method public void setOnEventListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaDrm.OnEventListener);
-    method public void setOnExpirationUpdateListener(@Nullable android.media.MediaDrm.OnExpirationUpdateListener, @Nullable android.os.Handler);
-    method public void setOnExpirationUpdateListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaDrm.OnExpirationUpdateListener);
-    method public void setOnKeyStatusChangeListener(@Nullable android.media.MediaDrm.OnKeyStatusChangeListener, @Nullable android.os.Handler);
-    method public void setOnKeyStatusChangeListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaDrm.OnKeyStatusChangeListener);
-    method public void setOnSessionLostStateListener(@Nullable android.media.MediaDrm.OnSessionLostStateListener, @Nullable android.os.Handler);
-    method public void setOnSessionLostStateListener(@NonNull java.util.concurrent.Executor, @Nullable android.media.MediaDrm.OnSessionLostStateListener);
-    method public void setPropertyByteArray(@NonNull String, @NonNull byte[]);
-    method public void setPropertyString(@NonNull String, @NonNull String);
-    field @Deprecated public static final int EVENT_KEY_EXPIRED = 3; // 0x3
-    field public static final int EVENT_KEY_REQUIRED = 2; // 0x2
-    field @Deprecated public static final int EVENT_PROVISION_REQUIRED = 1; // 0x1
-    field public static final int EVENT_SESSION_RECLAIMED = 5; // 0x5
-    field public static final int EVENT_VENDOR_DEFINED = 4; // 0x4
-    field public static final int HDCP_LEVEL_UNKNOWN = 0; // 0x0
-    field public static final int HDCP_NONE = 1; // 0x1
-    field public static final int HDCP_NO_DIGITAL_OUTPUT = 2147483647; // 0x7fffffff
-    field public static final int HDCP_V1 = 2; // 0x2
-    field public static final int HDCP_V2 = 3; // 0x3
-    field public static final int HDCP_V2_1 = 4; // 0x4
-    field public static final int HDCP_V2_2 = 5; // 0x5
-    field public static final int HDCP_V2_3 = 6; // 0x6
-    field public static final int KEY_TYPE_OFFLINE = 2; // 0x2
-    field public static final int KEY_TYPE_RELEASE = 3; // 0x3
-    field public static final int KEY_TYPE_STREAMING = 1; // 0x1
-    field public static final int OFFLINE_LICENSE_STATE_RELEASED = 2; // 0x2
-    field public static final int OFFLINE_LICENSE_STATE_UNKNOWN = 0; // 0x0
-    field public static final int OFFLINE_LICENSE_STATE_USABLE = 1; // 0x1
-    field public static final String PROPERTY_ALGORITHMS = "algorithms";
-    field public static final String PROPERTY_DESCRIPTION = "description";
-    field public static final String PROPERTY_DEVICE_UNIQUE_ID = "deviceUniqueId";
-    field public static final String PROPERTY_VENDOR = "vendor";
-    field public static final String PROPERTY_VERSION = "version";
-    field public static final int SECURITY_LEVEL_HW_SECURE_ALL = 5; // 0x5
-    field public static final int SECURITY_LEVEL_HW_SECURE_CRYPTO = 3; // 0x3
-    field public static final int SECURITY_LEVEL_HW_SECURE_DECODE = 4; // 0x4
-    field public static final int SECURITY_LEVEL_SW_SECURE_CRYPTO = 1; // 0x1
-    field public static final int SECURITY_LEVEL_SW_SECURE_DECODE = 2; // 0x2
-    field public static final int SECURITY_LEVEL_UNKNOWN = 0; // 0x0
-  }
-
-  public final class MediaDrm.CryptoSession {
-    method @NonNull public byte[] decrypt(@NonNull byte[], @NonNull byte[], @NonNull byte[]);
-    method @NonNull public byte[] encrypt(@NonNull byte[], @NonNull byte[], @NonNull byte[]);
-    method @NonNull public byte[] sign(@NonNull byte[], @NonNull byte[]);
-    method public boolean verify(@NonNull byte[], @NonNull byte[], @NonNull byte[]);
-  }
-
-  @Deprecated @IntDef({android.media.MediaDrm.HDCP_LEVEL_UNKNOWN, android.media.MediaDrm.HDCP_NONE, android.media.MediaDrm.HDCP_V1, android.media.MediaDrm.HDCP_V2, android.media.MediaDrm.HDCP_V2_1, android.media.MediaDrm.HDCP_V2_2, android.media.MediaDrm.HDCP_V2_3, android.media.MediaDrm.HDCP_NO_DIGITAL_OUTPUT}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface MediaDrm.HdcpLevel {
-  }
-
-  public static final class MediaDrm.KeyRequest {
-    method @NonNull public byte[] getData();
-    method @NonNull public String getDefaultUrl();
-    method public int getRequestType();
-    field public static final int REQUEST_TYPE_INITIAL = 0; // 0x0
-    field public static final int REQUEST_TYPE_NONE = 3; // 0x3
-    field public static final int REQUEST_TYPE_RELEASE = 2; // 0x2
-    field public static final int REQUEST_TYPE_RENEWAL = 1; // 0x1
-    field public static final int REQUEST_TYPE_UPDATE = 4; // 0x4
-  }
-
-  public static final class MediaDrm.KeyStatus {
-    method @NonNull public byte[] getKeyId();
-    method public int getStatusCode();
-    field public static final int STATUS_EXPIRED = 1; // 0x1
-    field public static final int STATUS_INTERNAL_ERROR = 4; // 0x4
-    field public static final int STATUS_OUTPUT_NOT_ALLOWED = 2; // 0x2
-    field public static final int STATUS_PENDING = 3; // 0x3
-    field public static final int STATUS_USABLE = 0; // 0x0
-    field public static final int STATUS_USABLE_IN_FUTURE = 5; // 0x5
-  }
-
-  public static final class MediaDrm.MediaDrmStateException extends java.lang.IllegalStateException {
-    method @NonNull public String getDiagnosticInfo();
-  }
-
-  public static final class MediaDrm.MetricsConstants {
-    field public static final String CLOSE_SESSION_ERROR_COUNT = "drm.mediadrm.close_session.error.count";
-    field public static final String CLOSE_SESSION_ERROR_LIST = "drm.mediadrm.close_session.error.list";
-    field public static final String CLOSE_SESSION_OK_COUNT = "drm.mediadrm.close_session.ok.count";
-    field public static final String EVENT_KEY_EXPIRED_COUNT = "drm.mediadrm.event.KEY_EXPIRED.count";
-    field public static final String EVENT_KEY_NEEDED_COUNT = "drm.mediadrm.event.KEY_NEEDED.count";
-    field public static final String EVENT_PROVISION_REQUIRED_COUNT = "drm.mediadrm.event.PROVISION_REQUIRED.count";
-    field public static final String EVENT_SESSION_RECLAIMED_COUNT = "drm.mediadrm.event.SESSION_RECLAIMED.count";
-    field public static final String EVENT_VENDOR_DEFINED_COUNT = "drm.mediadrm.event.VENDOR_DEFINED.count";
-    field public static final String GET_DEVICE_UNIQUE_ID_ERROR_COUNT = "drm.mediadrm.get_device_unique_id.error.count";
-    field public static final String GET_DEVICE_UNIQUE_ID_ERROR_LIST = "drm.mediadrm.get_device_unique_id.error.list";
-    field public static final String GET_DEVICE_UNIQUE_ID_OK_COUNT = "drm.mediadrm.get_device_unique_id.ok.count";
-    field public static final String GET_KEY_REQUEST_ERROR_COUNT = "drm.mediadrm.get_key_request.error.count";
-    field public static final String GET_KEY_REQUEST_ERROR_LIST = "drm.mediadrm.get_key_request.error.list";
-    field public static final String GET_KEY_REQUEST_OK_COUNT = "drm.mediadrm.get_key_request.ok.count";
-    field public static final String GET_KEY_REQUEST_OK_TIME_MICROS = "drm.mediadrm.get_key_request.ok.average_time_micros";
-    field public static final String GET_PROVISION_REQUEST_ERROR_COUNT = "drm.mediadrm.get_provision_request.error.count";
-    field public static final String GET_PROVISION_REQUEST_ERROR_LIST = "drm.mediadrm.get_provision_request.error.list";
-    field public static final String GET_PROVISION_REQUEST_OK_COUNT = "drm.mediadrm.get_provision_request.ok.count";
-    field public static final String KEY_STATUS_EXPIRED_COUNT = "drm.mediadrm.key_status.EXPIRED.count";
-    field public static final String KEY_STATUS_INTERNAL_ERROR_COUNT = "drm.mediadrm.key_status.INTERNAL_ERROR.count";
-    field public static final String KEY_STATUS_OUTPUT_NOT_ALLOWED_COUNT = "drm.mediadrm.key_status_change.OUTPUT_NOT_ALLOWED.count";
-    field public static final String KEY_STATUS_PENDING_COUNT = "drm.mediadrm.key_status_change.PENDING.count";
-    field public static final String KEY_STATUS_USABLE_COUNT = "drm.mediadrm.key_status_change.USABLE.count";
-    field public static final String OPEN_SESSION_ERROR_COUNT = "drm.mediadrm.open_session.error.count";
-    field public static final String OPEN_SESSION_ERROR_LIST = "drm.mediadrm.open_session.error.list";
-    field public static final String OPEN_SESSION_OK_COUNT = "drm.mediadrm.open_session.ok.count";
-    field public static final String PROVIDE_KEY_RESPONSE_ERROR_COUNT = "drm.mediadrm.provide_key_response.error.count";
-    field public static final String PROVIDE_KEY_RESPONSE_ERROR_LIST = "drm.mediadrm.provide_key_response.error.list";
-    field public static final String PROVIDE_KEY_RESPONSE_OK_COUNT = "drm.mediadrm.provide_key_response.ok.count";
-    field public static final String PROVIDE_KEY_RESPONSE_OK_TIME_MICROS = "drm.mediadrm.provide_key_response.ok.average_time_micros";
-    field public static final String PROVIDE_PROVISION_RESPONSE_ERROR_COUNT = "drm.mediadrm.provide_provision_response.error.count";
-    field public static final String PROVIDE_PROVISION_RESPONSE_ERROR_LIST = "drm.mediadrm.provide_provision_response.error.list";
-    field public static final String PROVIDE_PROVISION_RESPONSE_OK_COUNT = "drm.mediadrm.provide_provision_response.ok.count";
-    field public static final String SESSION_END_TIMES_MS = "drm.mediadrm.session_end_times_ms";
-    field public static final String SESSION_START_TIMES_MS = "drm.mediadrm.session_start_times_ms";
-  }
-
-  public static interface MediaDrm.OnEventListener {
-    method public void onEvent(@NonNull android.media.MediaDrm, @Nullable byte[], int, int, @Nullable byte[]);
-  }
-
-  public static interface MediaDrm.OnExpirationUpdateListener {
-    method public void onExpirationUpdate(@NonNull android.media.MediaDrm, @NonNull byte[], long);
-  }
-
-  public static interface MediaDrm.OnKeyStatusChangeListener {
-    method public void onKeyStatusChange(@NonNull android.media.MediaDrm, @NonNull byte[], @NonNull java.util.List<android.media.MediaDrm.KeyStatus>, boolean);
-  }
-
-  public static interface MediaDrm.OnSessionLostStateListener {
-    method public void onSessionLostState(@NonNull android.media.MediaDrm, @NonNull byte[]);
-  }
-
-  public static final class MediaDrm.ProvisionRequest {
-    method @NonNull public byte[] getData();
-    method @NonNull public String getDefaultUrl();
-  }
-
-  @Deprecated @IntDef({android.media.MediaDrm.SECURITY_LEVEL_UNKNOWN, android.media.MediaDrm.SECURITY_LEVEL_SW_SECURE_CRYPTO, android.media.MediaDrm.SECURITY_LEVEL_SW_SECURE_DECODE, android.media.MediaDrm.SECURITY_LEVEL_HW_SECURE_CRYPTO, android.media.MediaDrm.SECURITY_LEVEL_HW_SECURE_DECODE, android.media.MediaDrm.SECURITY_LEVEL_HW_SECURE_ALL}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface MediaDrm.SecurityLevel {
-  }
-
-  public static final class MediaDrm.SessionException extends java.lang.RuntimeException {
-    ctor public MediaDrm.SessionException(int, @Nullable String);
-    method public int getErrorCode();
-    field public static final int ERROR_RESOURCE_CONTENTION = 1; // 0x1
-    field public static final int ERROR_UNKNOWN = 0; // 0x0
-  }
-
-  public class MediaDrmException extends java.lang.Exception {
-    ctor public MediaDrmException(String);
-  }
-
-  public class MediaDrmResetException extends java.lang.IllegalStateException {
-    ctor public MediaDrmResetException(String);
-  }
-
-  public final class MediaExtractor {
-    ctor public MediaExtractor();
-    method public boolean advance();
-    method protected void finalize();
-    method @NonNull public java.util.List<android.media.AudioPresentation> getAudioPresentations(int);
-    method public long getCachedDuration();
-    method public android.media.MediaExtractor.CasInfo getCasInfo(int);
-    method public android.media.DrmInitData getDrmInitData();
-    method public android.os.PersistableBundle getMetrics();
-    method @Nullable public java.util.Map<java.util.UUID,byte[]> getPsshInfo();
-    method public boolean getSampleCryptoInfo(@NonNull android.media.MediaCodec.CryptoInfo);
-    method public int getSampleFlags();
-    method public long getSampleSize();
-    method public long getSampleTime();
-    method public int getSampleTrackIndex();
-    method public int getTrackCount();
-    method @NonNull public android.media.MediaFormat getTrackFormat(int);
-    method public boolean hasCacheReachedEndOfStream();
-    method public int readSampleData(@NonNull java.nio.ByteBuffer, int);
-    method public void release();
-    method public void seekTo(long, int);
-    method public void selectTrack(int);
-    method public void setDataSource(@NonNull android.media.MediaDataSource) throws java.io.IOException;
-    method public void setDataSource(@NonNull android.content.Context, @NonNull android.net.Uri, @Nullable java.util.Map<java.lang.String,java.lang.String>) throws java.io.IOException;
-    method public void setDataSource(@NonNull String, @Nullable java.util.Map<java.lang.String,java.lang.String>) throws java.io.IOException;
-    method public void setDataSource(@NonNull String) throws java.io.IOException;
-    method public void setDataSource(@NonNull android.content.res.AssetFileDescriptor) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void setDataSource(@NonNull java.io.FileDescriptor) throws java.io.IOException;
-    method public void setDataSource(@NonNull java.io.FileDescriptor, long, long) throws java.io.IOException;
-    method public void setMediaCas(@NonNull android.media.MediaCas);
-    method public void unselectTrack(int);
-    field public static final int SAMPLE_FLAG_ENCRYPTED = 2; // 0x2
-    field public static final int SAMPLE_FLAG_PARTIAL_FRAME = 4; // 0x4
-    field public static final int SAMPLE_FLAG_SYNC = 1; // 0x1
-    field public static final int SEEK_TO_CLOSEST_SYNC = 2; // 0x2
-    field public static final int SEEK_TO_NEXT_SYNC = 1; // 0x1
-    field public static final int SEEK_TO_PREVIOUS_SYNC = 0; // 0x0
-  }
-
-  public static final class MediaExtractor.CasInfo {
-    method @Nullable public byte[] getPrivateData();
-    method public android.media.MediaCas.Session getSession();
-    method public int getSystemId();
-  }
-
-  public static final class MediaExtractor.MetricsConstants {
-    field public static final String FORMAT = "android.media.mediaextractor.fmt";
-    field public static final String MIME_TYPE = "android.media.mediaextractor.mime";
-    field public static final String TRACKS = "android.media.mediaextractor.ntrk";
-  }
-
-  public final class MediaFormat {
-    ctor public MediaFormat();
-    ctor public MediaFormat(@NonNull android.media.MediaFormat);
-    method public boolean containsFeature(@NonNull String);
-    method public boolean containsKey(@NonNull String);
-    method @NonNull public static android.media.MediaFormat createAudioFormat(@NonNull String, int, int);
-    method @NonNull public static android.media.MediaFormat createSubtitleFormat(@NonNull String, String);
-    method @NonNull public static android.media.MediaFormat createVideoFormat(@NonNull String, int, int);
-    method @Nullable public java.nio.ByteBuffer getByteBuffer(@NonNull String);
-    method @NonNull public java.nio.ByteBuffer getByteBuffer(@NonNull String, @NonNull java.nio.ByteBuffer);
-    method public boolean getFeatureEnabled(@NonNull String);
-    method @NonNull public java.util.Set<java.lang.String> getFeatures();
-    method public float getFloat(@NonNull String);
-    method public float getFloat(@NonNull String, float);
-    method public int getInteger(@NonNull String);
-    method public int getInteger(@NonNull String, int);
-    method @NonNull public java.util.Set<java.lang.String> getKeys();
-    method public long getLong(@NonNull String);
-    method public long getLong(@NonNull String, long);
-    method @Nullable public Number getNumber(@NonNull String);
-    method @NonNull public Number getNumber(@NonNull String, @NonNull Number);
-    method @Nullable public String getString(@NonNull String);
-    method @NonNull public String getString(@NonNull String, @NonNull String);
-    method public int getValueTypeForKey(@NonNull String);
-    method public void removeFeature(@NonNull String);
-    method public void removeKey(@NonNull String);
-    method public void setByteBuffer(@NonNull String, @Nullable java.nio.ByteBuffer);
-    method public void setFeatureEnabled(@NonNull String, boolean);
-    method public void setFloat(@NonNull String, float);
-    method public void setInteger(@NonNull String, int);
-    method public void setLong(@NonNull String, long);
-    method public void setString(@NonNull String, @Nullable String);
-    field public static final int COLOR_RANGE_FULL = 1; // 0x1
-    field public static final int COLOR_RANGE_LIMITED = 2; // 0x2
-    field public static final int COLOR_STANDARD_BT2020 = 6; // 0x6
-    field public static final int COLOR_STANDARD_BT601_NTSC = 4; // 0x4
-    field public static final int COLOR_STANDARD_BT601_PAL = 2; // 0x2
-    field public static final int COLOR_STANDARD_BT709 = 1; // 0x1
-    field public static final int COLOR_TRANSFER_HLG = 7; // 0x7
-    field public static final int COLOR_TRANSFER_LINEAR = 1; // 0x1
-    field public static final int COLOR_TRANSFER_SDR_VIDEO = 3; // 0x3
-    field public static final int COLOR_TRANSFER_ST2084 = 6; // 0x6
-    field public static final String KEY_AAC_DRC_ALBUM_MODE = "aac-drc-album-mode";
-    field public static final String KEY_AAC_DRC_ATTENUATION_FACTOR = "aac-drc-cut-level";
-    field public static final String KEY_AAC_DRC_BOOST_FACTOR = "aac-drc-boost-level";
-    field public static final String KEY_AAC_DRC_EFFECT_TYPE = "aac-drc-effect-type";
-    field public static final String KEY_AAC_DRC_HEAVY_COMPRESSION = "aac-drc-heavy-compression";
-    field public static final String KEY_AAC_DRC_OUTPUT_LOUDNESS = "aac-drc-output-loudness";
-    field public static final String KEY_AAC_DRC_TARGET_REFERENCE_LEVEL = "aac-target-ref-level";
-    field public static final String KEY_AAC_ENCODED_TARGET_LEVEL = "aac-encoded-target-level";
-    field public static final String KEY_AAC_MAX_OUTPUT_CHANNEL_COUNT = "aac-max-output-channel_count";
-    field public static final String KEY_AAC_PROFILE = "aac-profile";
-    field public static final String KEY_AAC_SBR_MODE = "aac-sbr-mode";
-    field public static final String KEY_AUDIO_SESSION_ID = "audio-session-id";
-    field public static final String KEY_BITRATE_MODE = "bitrate-mode";
-    field public static final String KEY_BIT_RATE = "bitrate";
-    field public static final String KEY_CAPTION_SERVICE_NUMBER = "caption-service-number";
-    field public static final String KEY_CAPTURE_RATE = "capture-rate";
-    field public static final String KEY_CHANNEL_COUNT = "channel-count";
-    field public static final String KEY_CHANNEL_MASK = "channel-mask";
-    field public static final String KEY_CODECS_STRING = "codecs-string";
-    field public static final String KEY_COLOR_FORMAT = "color-format";
-    field public static final String KEY_COLOR_RANGE = "color-range";
-    field public static final String KEY_COLOR_STANDARD = "color-standard";
-    field public static final String KEY_COLOR_TRANSFER = "color-transfer";
-    field public static final String KEY_COMPLEXITY = "complexity";
-    field public static final String KEY_CREATE_INPUT_SURFACE_SUSPENDED = "create-input-buffers-suspended";
-    field public static final String KEY_DURATION = "durationUs";
-    field public static final String KEY_ENCODER_DELAY = "encoder-delay";
-    field public static final String KEY_ENCODER_PADDING = "encoder-padding";
-    field public static final String KEY_FLAC_COMPRESSION_LEVEL = "flac-compression-level";
-    field public static final String KEY_FRAME_RATE = "frame-rate";
-    field public static final String KEY_GRID_COLUMNS = "grid-cols";
-    field public static final String KEY_GRID_ROWS = "grid-rows";
-    field public static final String KEY_HAPTIC_CHANNEL_COUNT = "haptic-channel-count";
-    field public static final String KEY_HARDWARE_AV_SYNC_ID = "hw-av-sync-id";
-    field public static final String KEY_HDR10_PLUS_INFO = "hdr10-plus-info";
-    field public static final String KEY_HDR_STATIC_INFO = "hdr-static-info";
-    field public static final String KEY_HEIGHT = "height";
-    field public static final String KEY_INTRA_REFRESH_PERIOD = "intra-refresh-period";
-    field public static final String KEY_IS_ADTS = "is-adts";
-    field public static final String KEY_IS_AUTOSELECT = "is-autoselect";
-    field public static final String KEY_IS_DEFAULT = "is-default";
-    field public static final String KEY_IS_FORCED_SUBTITLE = "is-forced-subtitle";
-    field public static final String KEY_I_FRAME_INTERVAL = "i-frame-interval";
-    field public static final String KEY_LANGUAGE = "language";
-    field public static final String KEY_LATENCY = "latency";
-    field public static final String KEY_LEVEL = "level";
-    field public static final String KEY_LOW_LATENCY = "low-latency";
-    field public static final String KEY_MAX_B_FRAMES = "max-bframes";
-    field public static final String KEY_MAX_FPS_TO_ENCODER = "max-fps-to-encoder";
-    field public static final String KEY_MAX_HEIGHT = "max-height";
-    field public static final String KEY_MAX_INPUT_SIZE = "max-input-size";
-    field public static final String KEY_MAX_PTS_GAP_TO_ENCODER = "max-pts-gap-to-encoder";
-    field public static final String KEY_MAX_WIDTH = "max-width";
-    field public static final String KEY_MIME = "mime";
-    field public static final String KEY_OPERATING_RATE = "operating-rate";
-    field public static final String KEY_OUTPUT_REORDER_DEPTH = "output-reorder-depth";
-    field public static final String KEY_PCM_ENCODING = "pcm-encoding";
-    field public static final String KEY_PIXEL_ASPECT_RATIO_HEIGHT = "sar-height";
-    field public static final String KEY_PIXEL_ASPECT_RATIO_WIDTH = "sar-width";
-    field public static final String KEY_PREPEND_HEADER_TO_SYNC_FRAMES = "prepend-sps-pps-to-idr-frames";
-    field public static final String KEY_PRIORITY = "priority";
-    field public static final String KEY_PROFILE = "profile";
-    field public static final String KEY_PUSH_BLANK_BUFFERS_ON_STOP = "push-blank-buffers-on-shutdown";
-    field public static final String KEY_QUALITY = "quality";
-    field public static final String KEY_REPEAT_PREVIOUS_FRAME_AFTER = "repeat-previous-frame-after";
-    field public static final String KEY_ROTATION = "rotation-degrees";
-    field public static final String KEY_SAMPLE_RATE = "sample-rate";
-    field public static final String KEY_SLICE_HEIGHT = "slice-height";
-    field public static final String KEY_STRIDE = "stride";
-    field public static final String KEY_TEMPORAL_LAYERING = "ts-schema";
-    field public static final String KEY_TILE_HEIGHT = "tile-height";
-    field public static final String KEY_TILE_WIDTH = "tile-width";
-    field public static final String KEY_TRACK_ID = "track-id";
-    field public static final String KEY_WIDTH = "width";
-    field public static final String MIMETYPE_AUDIO_AAC = "audio/mp4a-latm";
-    field public static final String MIMETYPE_AUDIO_AC3 = "audio/ac3";
-    field public static final String MIMETYPE_AUDIO_AC4 = "audio/ac4";
-    field public static final String MIMETYPE_AUDIO_AMR_NB = "audio/3gpp";
-    field public static final String MIMETYPE_AUDIO_AMR_WB = "audio/amr-wb";
-    field public static final String MIMETYPE_AUDIO_EAC3 = "audio/eac3";
-    field public static final String MIMETYPE_AUDIO_EAC3_JOC = "audio/eac3-joc";
-    field public static final String MIMETYPE_AUDIO_FLAC = "audio/flac";
-    field public static final String MIMETYPE_AUDIO_G711_ALAW = "audio/g711-alaw";
-    field public static final String MIMETYPE_AUDIO_G711_MLAW = "audio/g711-mlaw";
-    field public static final String MIMETYPE_AUDIO_MPEG = "audio/mpeg";
-    field public static final String MIMETYPE_AUDIO_MSGSM = "audio/gsm";
-    field public static final String MIMETYPE_AUDIO_OPUS = "audio/opus";
-    field public static final String MIMETYPE_AUDIO_QCELP = "audio/qcelp";
-    field public static final String MIMETYPE_AUDIO_RAW = "audio/raw";
-    field public static final String MIMETYPE_AUDIO_SCRAMBLED = "audio/scrambled";
-    field public static final String MIMETYPE_AUDIO_VORBIS = "audio/vorbis";
-    field public static final String MIMETYPE_IMAGE_ANDROID_HEIC = "image/vnd.android.heic";
-    field public static final String MIMETYPE_TEXT_CEA_608 = "text/cea-608";
-    field public static final String MIMETYPE_TEXT_CEA_708 = "text/cea-708";
-    field public static final String MIMETYPE_TEXT_SUBRIP = "application/x-subrip";
-    field public static final String MIMETYPE_TEXT_VTT = "text/vtt";
-    field public static final String MIMETYPE_VIDEO_AV1 = "video/av01";
-    field public static final String MIMETYPE_VIDEO_AVC = "video/avc";
-    field public static final String MIMETYPE_VIDEO_DOLBY_VISION = "video/dolby-vision";
-    field public static final String MIMETYPE_VIDEO_H263 = "video/3gpp";
-    field public static final String MIMETYPE_VIDEO_HEVC = "video/hevc";
-    field public static final String MIMETYPE_VIDEO_MPEG2 = "video/mpeg2";
-    field public static final String MIMETYPE_VIDEO_MPEG4 = "video/mp4v-es";
-    field public static final String MIMETYPE_VIDEO_RAW = "video/raw";
-    field public static final String MIMETYPE_VIDEO_SCRAMBLED = "video/scrambled";
-    field public static final String MIMETYPE_VIDEO_VP8 = "video/x-vnd.on2.vp8";
-    field public static final String MIMETYPE_VIDEO_VP9 = "video/x-vnd.on2.vp9";
-    field public static final int TYPE_BYTE_BUFFER = 5; // 0x5
-    field public static final int TYPE_FLOAT = 3; // 0x3
-    field public static final int TYPE_INTEGER = 1; // 0x1
-    field public static final int TYPE_LONG = 2; // 0x2
-    field public static final int TYPE_NULL = 0; // 0x0
-    field public static final int TYPE_STRING = 4; // 0x4
-  }
-
-  public final class MediaMetadata implements android.os.Parcelable {
-    method public boolean containsKey(String);
-    method public int describeContents();
-    method public android.graphics.Bitmap getBitmap(String);
-    method @NonNull public android.media.MediaDescription getDescription();
-    method public long getLong(String);
-    method public android.media.Rating getRating(String);
-    method public String getString(String);
-    method public CharSequence getText(String);
-    method public java.util.Set<java.lang.String> keySet();
-    method public int size();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.MediaMetadata> CREATOR;
-    field public static final String METADATA_KEY_ALBUM = "android.media.metadata.ALBUM";
-    field public static final String METADATA_KEY_ALBUM_ART = "android.media.metadata.ALBUM_ART";
-    field public static final String METADATA_KEY_ALBUM_ARTIST = "android.media.metadata.ALBUM_ARTIST";
-    field public static final String METADATA_KEY_ALBUM_ART_URI = "android.media.metadata.ALBUM_ART_URI";
-    field public static final String METADATA_KEY_ART = "android.media.metadata.ART";
-    field public static final String METADATA_KEY_ARTIST = "android.media.metadata.ARTIST";
-    field public static final String METADATA_KEY_ART_URI = "android.media.metadata.ART_URI";
-    field public static final String METADATA_KEY_AUTHOR = "android.media.metadata.AUTHOR";
-    field public static final String METADATA_KEY_BT_FOLDER_TYPE = "android.media.metadata.BT_FOLDER_TYPE";
-    field public static final String METADATA_KEY_COMPILATION = "android.media.metadata.COMPILATION";
-    field public static final String METADATA_KEY_COMPOSER = "android.media.metadata.COMPOSER";
-    field public static final String METADATA_KEY_DATE = "android.media.metadata.DATE";
-    field public static final String METADATA_KEY_DISC_NUMBER = "android.media.metadata.DISC_NUMBER";
-    field public static final String METADATA_KEY_DISPLAY_DESCRIPTION = "android.media.metadata.DISPLAY_DESCRIPTION";
-    field public static final String METADATA_KEY_DISPLAY_ICON = "android.media.metadata.DISPLAY_ICON";
-    field public static final String METADATA_KEY_DISPLAY_ICON_URI = "android.media.metadata.DISPLAY_ICON_URI";
-    field public static final String METADATA_KEY_DISPLAY_SUBTITLE = "android.media.metadata.DISPLAY_SUBTITLE";
-    field public static final String METADATA_KEY_DISPLAY_TITLE = "android.media.metadata.DISPLAY_TITLE";
-    field public static final String METADATA_KEY_DURATION = "android.media.metadata.DURATION";
-    field public static final String METADATA_KEY_GENRE = "android.media.metadata.GENRE";
-    field public static final String METADATA_KEY_MEDIA_ID = "android.media.metadata.MEDIA_ID";
-    field public static final String METADATA_KEY_MEDIA_URI = "android.media.metadata.MEDIA_URI";
-    field public static final String METADATA_KEY_NUM_TRACKS = "android.media.metadata.NUM_TRACKS";
-    field public static final String METADATA_KEY_RATING = "android.media.metadata.RATING";
-    field public static final String METADATA_KEY_TITLE = "android.media.metadata.TITLE";
-    field public static final String METADATA_KEY_TRACK_NUMBER = "android.media.metadata.TRACK_NUMBER";
-    field public static final String METADATA_KEY_USER_RATING = "android.media.metadata.USER_RATING";
-    field public static final String METADATA_KEY_WRITER = "android.media.metadata.WRITER";
-    field public static final String METADATA_KEY_YEAR = "android.media.metadata.YEAR";
-  }
-
-  public static final class MediaMetadata.Builder {
-    ctor public MediaMetadata.Builder();
-    ctor public MediaMetadata.Builder(android.media.MediaMetadata);
-    method public android.media.MediaMetadata build();
-    method public android.media.MediaMetadata.Builder putBitmap(String, android.graphics.Bitmap);
-    method public android.media.MediaMetadata.Builder putLong(String, long);
-    method public android.media.MediaMetadata.Builder putRating(String, android.media.Rating);
-    method public android.media.MediaMetadata.Builder putString(String, String);
-    method public android.media.MediaMetadata.Builder putText(String, CharSequence);
-  }
-
-  @Deprecated public abstract class MediaMetadataEditor {
-    method @Deprecated public void addEditableKey(int);
-    method @Deprecated public abstract void apply();
-    method @Deprecated public void clear();
-    method @Deprecated public android.graphics.Bitmap getBitmap(int, android.graphics.Bitmap) throws java.lang.IllegalArgumentException;
-    method @Deprecated public int[] getEditableKeys();
-    method @Deprecated public long getLong(int, long) throws java.lang.IllegalArgumentException;
-    method @Deprecated public Object getObject(int, Object) throws java.lang.IllegalArgumentException;
-    method @Deprecated public String getString(int, String) throws java.lang.IllegalArgumentException;
-    method @Deprecated public android.media.MediaMetadataEditor putBitmap(int, android.graphics.Bitmap) throws java.lang.IllegalArgumentException;
-    method @Deprecated public android.media.MediaMetadataEditor putLong(int, long) throws java.lang.IllegalArgumentException;
-    method @Deprecated public android.media.MediaMetadataEditor putObject(int, Object) throws java.lang.IllegalArgumentException;
-    method @Deprecated public android.media.MediaMetadataEditor putString(int, String) throws java.lang.IllegalArgumentException;
-    method @Deprecated public void removeEditableKeys();
-    field @Deprecated public static final int BITMAP_KEY_ARTWORK = 100; // 0x64
-    field @Deprecated public static final int RATING_KEY_BY_OTHERS = 101; // 0x65
-    field @Deprecated public static final int RATING_KEY_BY_USER = 268435457; // 0x10000001
-  }
-
-  public class MediaMetadataRetriever implements java.lang.AutoCloseable {
-    ctor public MediaMetadataRetriever();
-    method public void close();
-    method @Nullable public String extractMetadata(int);
-    method @Nullable public byte[] getEmbeddedPicture();
-    method @Nullable public android.graphics.Bitmap getFrameAtIndex(int, @NonNull android.media.MediaMetadataRetriever.BitmapParams);
-    method @Nullable public android.graphics.Bitmap getFrameAtIndex(int);
-    method @Nullable public android.graphics.Bitmap getFrameAtTime(long, int);
-    method @Nullable public android.graphics.Bitmap getFrameAtTime(long, int, @NonNull android.media.MediaMetadataRetriever.BitmapParams);
-    method @Nullable public android.graphics.Bitmap getFrameAtTime(long);
-    method @Nullable public android.graphics.Bitmap getFrameAtTime();
-    method @NonNull public java.util.List<android.graphics.Bitmap> getFramesAtIndex(int, int, @NonNull android.media.MediaMetadataRetriever.BitmapParams);
-    method @NonNull public java.util.List<android.graphics.Bitmap> getFramesAtIndex(int, int);
-    method @Nullable public android.graphics.Bitmap getImageAtIndex(int, @NonNull android.media.MediaMetadataRetriever.BitmapParams);
-    method @Nullable public android.graphics.Bitmap getImageAtIndex(int);
-    method @Nullable public android.graphics.Bitmap getPrimaryImage(@NonNull android.media.MediaMetadataRetriever.BitmapParams);
-    method @Nullable public android.graphics.Bitmap getPrimaryImage();
-    method @Nullable public android.graphics.Bitmap getScaledFrameAtTime(long, int, @IntRange(from=1) int, @IntRange(from=1) int);
-    method @Nullable public android.graphics.Bitmap getScaledFrameAtTime(long, int, @IntRange(from=1) int, @IntRange(from=1) int, @NonNull android.media.MediaMetadataRetriever.BitmapParams);
-    method public void release();
-    method public void setDataSource(String) throws java.lang.IllegalArgumentException;
-    method public void setDataSource(String, java.util.Map<java.lang.String,java.lang.String>) throws java.lang.IllegalArgumentException;
-    method public void setDataSource(java.io.FileDescriptor, long, long) throws java.lang.IllegalArgumentException;
-    method public void setDataSource(java.io.FileDescriptor) throws java.lang.IllegalArgumentException;
-    method public void setDataSource(android.content.Context, android.net.Uri) throws java.lang.IllegalArgumentException, java.lang.SecurityException;
-    method public void setDataSource(android.media.MediaDataSource) throws java.lang.IllegalArgumentException;
-    field public static final int METADATA_KEY_ALBUM = 1; // 0x1
-    field public static final int METADATA_KEY_ALBUMARTIST = 13; // 0xd
-    field public static final int METADATA_KEY_ARTIST = 2; // 0x2
-    field public static final int METADATA_KEY_AUTHOR = 3; // 0x3
-    field public static final int METADATA_KEY_BITRATE = 20; // 0x14
-    field public static final int METADATA_KEY_CAPTURE_FRAMERATE = 25; // 0x19
-    field public static final int METADATA_KEY_CD_TRACK_NUMBER = 0; // 0x0
-    field public static final int METADATA_KEY_COLOR_RANGE = 37; // 0x25
-    field public static final int METADATA_KEY_COLOR_STANDARD = 35; // 0x23
-    field public static final int METADATA_KEY_COLOR_TRANSFER = 36; // 0x24
-    field public static final int METADATA_KEY_COMPILATION = 15; // 0xf
-    field public static final int METADATA_KEY_COMPOSER = 4; // 0x4
-    field public static final int METADATA_KEY_DATE = 5; // 0x5
-    field public static final int METADATA_KEY_DISC_NUMBER = 14; // 0xe
-    field public static final int METADATA_KEY_DURATION = 9; // 0x9
-    field public static final int METADATA_KEY_EXIF_LENGTH = 34; // 0x22
-    field public static final int METADATA_KEY_EXIF_OFFSET = 33; // 0x21
-    field public static final int METADATA_KEY_GENRE = 6; // 0x6
-    field public static final int METADATA_KEY_HAS_AUDIO = 16; // 0x10
-    field public static final int METADATA_KEY_HAS_IMAGE = 26; // 0x1a
-    field public static final int METADATA_KEY_HAS_VIDEO = 17; // 0x11
-    field public static final int METADATA_KEY_IMAGE_COUNT = 27; // 0x1b
-    field public static final int METADATA_KEY_IMAGE_HEIGHT = 30; // 0x1e
-    field public static final int METADATA_KEY_IMAGE_PRIMARY = 28; // 0x1c
-    field public static final int METADATA_KEY_IMAGE_ROTATION = 31; // 0x1f
-    field public static final int METADATA_KEY_IMAGE_WIDTH = 29; // 0x1d
-    field public static final int METADATA_KEY_LOCATION = 23; // 0x17
-    field public static final int METADATA_KEY_MIMETYPE = 12; // 0xc
-    field public static final int METADATA_KEY_NUM_TRACKS = 10; // 0xa
-    field public static final int METADATA_KEY_TITLE = 7; // 0x7
-    field public static final int METADATA_KEY_VIDEO_FRAME_COUNT = 32; // 0x20
-    field public static final int METADATA_KEY_VIDEO_HEIGHT = 19; // 0x13
-    field public static final int METADATA_KEY_VIDEO_ROTATION = 24; // 0x18
-    field public static final int METADATA_KEY_VIDEO_WIDTH = 18; // 0x12
-    field public static final int METADATA_KEY_WRITER = 11; // 0xb
-    field public static final int METADATA_KEY_YEAR = 8; // 0x8
-    field public static final int OPTION_CLOSEST = 3; // 0x3
-    field public static final int OPTION_CLOSEST_SYNC = 2; // 0x2
-    field public static final int OPTION_NEXT_SYNC = 1; // 0x1
-    field public static final int OPTION_PREVIOUS_SYNC = 0; // 0x0
-  }
-
-  public static final class MediaMetadataRetriever.BitmapParams {
-    ctor public MediaMetadataRetriever.BitmapParams();
-    method @NonNull public android.graphics.Bitmap.Config getActualConfig();
-    method @NonNull public android.graphics.Bitmap.Config getPreferredConfig();
-    method public void setPreferredConfig(@NonNull android.graphics.Bitmap.Config);
-  }
-
-  public final class MediaMuxer {
-    ctor public MediaMuxer(@NonNull String, int) throws java.io.IOException;
-    ctor public MediaMuxer(@NonNull java.io.FileDescriptor, int) throws java.io.IOException;
-    method public int addTrack(@NonNull android.media.MediaFormat);
-    method public void release();
-    method public void setLocation(float, float);
-    method public void setOrientationHint(int);
-    method public void start();
-    method public void stop();
-    method public void writeSampleData(int, @NonNull java.nio.ByteBuffer, @NonNull android.media.MediaCodec.BufferInfo);
-  }
-
-  public static final class MediaMuxer.OutputFormat {
-    field public static final int MUXER_OUTPUT_3GPP = 2; // 0x2
-    field public static final int MUXER_OUTPUT_HEIF = 3; // 0x3
-    field public static final int MUXER_OUTPUT_MPEG_4 = 0; // 0x0
-    field public static final int MUXER_OUTPUT_OGG = 4; // 0x4
-    field public static final int MUXER_OUTPUT_WEBM = 1; // 0x1
-  }
-
-  public final class MediaParser {
-    method public boolean advance(@NonNull android.media.MediaParser.SeekableInputReader) throws java.io.IOException;
-    method @NonNull public static android.media.MediaParser create(@NonNull android.media.MediaParser.OutputConsumer, @NonNull java.lang.String...);
-    method @NonNull public static android.media.MediaParser createByName(@NonNull String, @NonNull android.media.MediaParser.OutputConsumer);
-    method @NonNull public String getParserName();
-    method @NonNull public static java.util.List<java.lang.String> getParserNames(@NonNull android.media.MediaFormat);
-    method public void release();
-    method public void seek(@NonNull android.media.MediaParser.SeekPoint);
-    method @NonNull public android.media.MediaParser setParameter(@NonNull String, @NonNull Object);
-    method public boolean supportsParameter(@NonNull String);
-    field public static final String PARAMETER_ADTS_ENABLE_CBR_SEEKING = "android.media.mediaparser.adts.enableCbrSeeking";
-    field public static final String PARAMETER_AMR_ENABLE_CBR_SEEKING = "android.media.mediaparser.amr.enableCbrSeeking";
-    field public static final String PARAMETER_FLAC_DISABLE_ID3 = "android.media.mediaparser.flac.disableId3";
-    field public static final String PARAMETER_MATROSKA_DISABLE_CUES_SEEKING = "android.media.mediaparser.matroska.disableCuesSeeking";
-    field public static final String PARAMETER_MP3_DISABLE_ID3 = "android.media.mediaparser.mp3.disableId3";
-    field public static final String PARAMETER_MP3_ENABLE_CBR_SEEKING = "android.media.mediaparser.mp3.enableCbrSeeking";
-    field public static final String PARAMETER_MP3_ENABLE_INDEX_SEEKING = "android.media.mediaparser.mp3.enableIndexSeeking";
-    field public static final String PARAMETER_MP4_IGNORE_EDIT_LISTS = "android.media.mediaparser.mp4.ignoreEditLists";
-    field public static final String PARAMETER_MP4_IGNORE_TFDT_BOX = "android.media.mediaparser.mp4.ignoreTfdtBox";
-    field public static final String PARAMETER_MP4_TREAT_VIDEO_FRAMES_AS_KEYFRAMES = "android.media.mediaparser.mp4.treatVideoFramesAsKeyframes";
-    field public static final String PARAMETER_TS_ALLOW_NON_IDR_AVC_KEYFRAMES = "android.media.mediaparser.ts.allowNonIdrAvcKeyframes";
-    field public static final String PARAMETER_TS_DETECT_ACCESS_UNITS = "android.media.mediaparser.ts.ignoreDetectAccessUnits";
-    field public static final String PARAMETER_TS_ENABLE_HDMV_DTS_AUDIO_STREAMS = "android.media.mediaparser.ts.enableHdmvDtsAudioStreams";
-    field public static final String PARAMETER_TS_IGNORE_AAC_STREAM = "android.media.mediaparser.ts.ignoreAacStream";
-    field public static final String PARAMETER_TS_IGNORE_AVC_STREAM = "android.media.mediaparser.ts.ignoreAvcStream";
-    field public static final String PARAMETER_TS_IGNORE_SPLICE_INFO_STREAM = "android.media.mediaparser.ts.ignoreSpliceInfoStream";
-    field public static final String PARAMETER_TS_MODE = "android.media.mediaparser.ts.mode";
-    field public static final String PARSER_NAME_AC3 = "android.media.mediaparser.Ac3Parser";
-    field public static final String PARSER_NAME_AC4 = "android.media.mediaparser.Ac4Parser";
-    field public static final String PARSER_NAME_ADTS = "android.media.mediaparser.AdtsParser";
-    field public static final String PARSER_NAME_AMR = "android.media.mediaparser.AmrParser";
-    field public static final String PARSER_NAME_FLAC = "android.media.mediaparser.FlacParser";
-    field public static final String PARSER_NAME_FLV = "android.media.mediaparser.FlvParser";
-    field public static final String PARSER_NAME_FMP4 = "android.media.mediaparser.FragmentedMp4Parser";
-    field public static final String PARSER_NAME_MATROSKA = "android.media.mediaparser.MatroskaParser";
-    field public static final String PARSER_NAME_MP3 = "android.media.mediaparser.Mp3Parser";
-    field public static final String PARSER_NAME_MP4 = "android.media.mediaparser.Mp4Parser";
-    field public static final String PARSER_NAME_OGG = "android.media.mediaparser.OggParser";
-    field public static final String PARSER_NAME_PS = "android.media.mediaparser.PsParser";
-    field public static final String PARSER_NAME_TS = "android.media.mediaparser.TsParser";
-    field public static final String PARSER_NAME_UNKNOWN = "android.media.mediaparser.UNKNOWN";
-    field public static final String PARSER_NAME_WAV = "android.media.mediaparser.WavParser";
-    field public static final int SAMPLE_FLAG_DECODE_ONLY = -2147483648; // 0x80000000
-    field public static final int SAMPLE_FLAG_ENCRYPTED = 1073741824; // 0x40000000
-    field public static final int SAMPLE_FLAG_HAS_SUPPLEMENTAL_DATA = 268435456; // 0x10000000
-    field public static final int SAMPLE_FLAG_KEY_FRAME = 1; // 0x1
-    field public static final int SAMPLE_FLAG_LAST_SAMPLE = 536870912; // 0x20000000
-  }
-
-  public static interface MediaParser.InputReader {
-    method public long getLength();
-    method public long getPosition();
-    method public int read(@NonNull byte[], int, int) throws java.io.IOException;
-  }
-
-  public static interface MediaParser.OutputConsumer {
-    method public void onSampleCompleted(int, long, int, int, int, @Nullable android.media.MediaCodec.CryptoInfo);
-    method public void onSampleDataFound(int, @NonNull android.media.MediaParser.InputReader) throws java.io.IOException;
-    method public void onSeekMapFound(@NonNull android.media.MediaParser.SeekMap);
-    method public void onTrackCountFound(int);
-    method public void onTrackDataFound(int, @NonNull android.media.MediaParser.TrackData);
-  }
-
-  public static final class MediaParser.ParsingException extends java.io.IOException {
-  }
-
-  public static final class MediaParser.SeekMap {
-    method public long getDurationMicros();
-    method @NonNull public android.util.Pair<android.media.MediaParser.SeekPoint,android.media.MediaParser.SeekPoint> getSeekPoints(long);
-    method public boolean isSeekable();
-    field public static final int UNKNOWN_DURATION = -2147483648; // 0x80000000
-  }
-
-  public static final class MediaParser.SeekPoint {
-    field @NonNull public static final android.media.MediaParser.SeekPoint START;
-    field public final long position;
-    field public final long timeMicros;
-  }
-
-  public static interface MediaParser.SeekableInputReader extends android.media.MediaParser.InputReader {
-    method public void seekToPosition(long);
-  }
-
-  public static final class MediaParser.TrackData {
-    field @Nullable public final android.media.DrmInitData drmInitData;
-    field @NonNull public final android.media.MediaFormat mediaFormat;
-  }
-
-  public static final class MediaParser.UnrecognizedInputFormatException extends java.io.IOException {
-  }
-
-  public class MediaPlayer implements android.media.AudioRouting android.media.VolumeAutomation {
-    ctor public MediaPlayer();
-    method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
-    method public void addTimedTextSource(String, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void addTimedTextSource(android.content.Context, android.net.Uri, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void addTimedTextSource(java.io.FileDescriptor, String) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void addTimedTextSource(java.io.FileDescriptor, long, long, String) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void attachAuxEffect(int);
-    method public void clearOnMediaTimeDiscontinuityListener();
-    method public void clearOnSubtitleDataListener();
-    method public static android.media.MediaPlayer create(android.content.Context, android.net.Uri);
-    method public static android.media.MediaPlayer create(android.content.Context, android.net.Uri, android.view.SurfaceHolder);
-    method public static android.media.MediaPlayer create(android.content.Context, android.net.Uri, android.view.SurfaceHolder, android.media.AudioAttributes, int);
-    method public static android.media.MediaPlayer create(android.content.Context, int);
-    method public static android.media.MediaPlayer create(android.content.Context, int, android.media.AudioAttributes, int);
-    method @NonNull public android.media.VolumeShaper createVolumeShaper(@NonNull android.media.VolumeShaper.Configuration);
-    method public void deselectTrack(int) throws java.lang.IllegalStateException;
-    method protected void finalize();
-    method public int getAudioSessionId();
-    method public int getCurrentPosition();
-    method public android.media.MediaPlayer.DrmInfo getDrmInfo();
-    method @NonNull public String getDrmPropertyString(@NonNull String) throws android.media.MediaPlayer.NoDrmSchemeException;
-    method public int getDuration();
-    method @NonNull public android.media.MediaDrm.KeyRequest getKeyRequest(@Nullable byte[], @Nullable byte[], @Nullable String, int, @Nullable java.util.Map<java.lang.String,java.lang.String>) throws android.media.MediaPlayer.NoDrmSchemeException;
-    method public android.os.PersistableBundle getMetrics();
-    method @NonNull public android.media.PlaybackParams getPlaybackParams();
-    method public android.media.AudioDeviceInfo getPreferredDevice();
-    method public android.media.AudioDeviceInfo getRoutedDevice();
-    method public int getSelectedTrack(int) throws java.lang.IllegalStateException;
-    method @NonNull public android.media.SyncParams getSyncParams();
-    method @Nullable public android.media.MediaTimestamp getTimestamp();
-    method public android.media.MediaPlayer.TrackInfo[] getTrackInfo() throws java.lang.IllegalStateException;
-    method public int getVideoHeight();
-    method public int getVideoWidth();
-    method public boolean isLooping();
-    method public boolean isPlaying();
-    method public void pause() throws java.lang.IllegalStateException;
-    method public void prepare() throws java.io.IOException, java.lang.IllegalStateException;
-    method public void prepareAsync() throws java.lang.IllegalStateException;
-    method public void prepareDrm(@NonNull java.util.UUID) throws android.media.MediaPlayer.ProvisioningNetworkErrorException, android.media.MediaPlayer.ProvisioningServerErrorException, android.media.ResourceBusyException, android.media.UnsupportedSchemeException;
-    method public byte[] provideKeyResponse(@Nullable byte[], @NonNull byte[]) throws android.media.DeniedByServerException, android.media.MediaPlayer.NoDrmSchemeException;
-    method public void release();
-    method public void releaseDrm() throws android.media.MediaPlayer.NoDrmSchemeException;
-    method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
-    method public void reset();
-    method public void restoreKeys(@NonNull byte[]) throws android.media.MediaPlayer.NoDrmSchemeException;
-    method public void seekTo(long, int);
-    method public void seekTo(int) throws java.lang.IllegalStateException;
-    method public void selectTrack(int) throws java.lang.IllegalStateException;
-    method public void setAudioAttributes(android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
-    method public void setAudioSessionId(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method @Deprecated public void setAudioStreamType(int);
-    method public void setAuxEffectSendLevel(float);
-    method public void setDataSource(@NonNull android.content.Context, @NonNull android.net.Uri) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException;
-    method public void setDataSource(@NonNull android.content.Context, @NonNull android.net.Uri, @Nullable java.util.Map<java.lang.String,java.lang.String>, @Nullable java.util.List<java.net.HttpCookie>) throws java.io.IOException;
-    method public void setDataSource(@NonNull android.content.Context, @NonNull android.net.Uri, @Nullable java.util.Map<java.lang.String,java.lang.String>) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException;
-    method public void setDataSource(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException;
-    method public void setDataSource(@NonNull android.content.res.AssetFileDescriptor) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void setDataSource(java.io.FileDescriptor) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void setDataSource(java.io.FileDescriptor, long, long) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void setDataSource(android.media.MediaDataSource) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void setDisplay(android.view.SurfaceHolder);
-    method public void setDrmPropertyString(@NonNull String, @NonNull String) throws android.media.MediaPlayer.NoDrmSchemeException;
-    method public void setLooping(boolean);
-    method public void setNextMediaPlayer(android.media.MediaPlayer);
-    method public void setOnBufferingUpdateListener(android.media.MediaPlayer.OnBufferingUpdateListener);
-    method public void setOnCompletionListener(android.media.MediaPlayer.OnCompletionListener);
-    method public void setOnDrmConfigHelper(android.media.MediaPlayer.OnDrmConfigHelper);
-    method public void setOnDrmInfoListener(android.media.MediaPlayer.OnDrmInfoListener);
-    method public void setOnDrmInfoListener(android.media.MediaPlayer.OnDrmInfoListener, android.os.Handler);
-    method public void setOnDrmPreparedListener(android.media.MediaPlayer.OnDrmPreparedListener);
-    method public void setOnDrmPreparedListener(android.media.MediaPlayer.OnDrmPreparedListener, android.os.Handler);
-    method public void setOnErrorListener(android.media.MediaPlayer.OnErrorListener);
-    method public void setOnInfoListener(android.media.MediaPlayer.OnInfoListener);
-    method public void setOnMediaTimeDiscontinuityListener(@NonNull android.media.MediaPlayer.OnMediaTimeDiscontinuityListener, @NonNull android.os.Handler);
-    method public void setOnMediaTimeDiscontinuityListener(@NonNull android.media.MediaPlayer.OnMediaTimeDiscontinuityListener);
-    method public void setOnPreparedListener(android.media.MediaPlayer.OnPreparedListener);
-    method public void setOnSeekCompleteListener(android.media.MediaPlayer.OnSeekCompleteListener);
-    method public void setOnSubtitleDataListener(@NonNull android.media.MediaPlayer.OnSubtitleDataListener, @NonNull android.os.Handler);
-    method public void setOnSubtitleDataListener(@NonNull android.media.MediaPlayer.OnSubtitleDataListener);
-    method public void setOnTimedMetaDataAvailableListener(android.media.MediaPlayer.OnTimedMetaDataAvailableListener);
-    method public void setOnTimedTextListener(android.media.MediaPlayer.OnTimedTextListener);
-    method public void setOnVideoSizeChangedListener(android.media.MediaPlayer.OnVideoSizeChangedListener);
-    method public void setPlaybackParams(@NonNull android.media.PlaybackParams);
-    method public boolean setPreferredDevice(android.media.AudioDeviceInfo);
-    method public void setScreenOnWhilePlaying(boolean);
-    method public void setSurface(android.view.Surface);
-    method public void setSyncParams(@NonNull android.media.SyncParams);
-    method public void setVideoScalingMode(int);
-    method public void setVolume(float, float);
-    method public void setWakeMode(android.content.Context, int);
-    method public void start() throws java.lang.IllegalStateException;
-    method public void stop() throws java.lang.IllegalStateException;
-    field public static final int MEDIA_ERROR_IO = -1004; // 0xfffffc14
-    field public static final int MEDIA_ERROR_MALFORMED = -1007; // 0xfffffc11
-    field public static final int MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK = 200; // 0xc8
-    field public static final int MEDIA_ERROR_SERVER_DIED = 100; // 0x64
-    field public static final int MEDIA_ERROR_TIMED_OUT = -110; // 0xffffff92
-    field public static final int MEDIA_ERROR_UNKNOWN = 1; // 0x1
-    field public static final int MEDIA_ERROR_UNSUPPORTED = -1010; // 0xfffffc0e
-    field public static final int MEDIA_INFO_AUDIO_NOT_PLAYING = 804; // 0x324
-    field public static final int MEDIA_INFO_BAD_INTERLEAVING = 800; // 0x320
-    field public static final int MEDIA_INFO_BUFFERING_END = 702; // 0x2be
-    field public static final int MEDIA_INFO_BUFFERING_START = 701; // 0x2bd
-    field public static final int MEDIA_INFO_METADATA_UPDATE = 802; // 0x322
-    field public static final int MEDIA_INFO_NOT_SEEKABLE = 801; // 0x321
-    field public static final int MEDIA_INFO_STARTED_AS_NEXT = 2; // 0x2
-    field public static final int MEDIA_INFO_SUBTITLE_TIMED_OUT = 902; // 0x386
-    field public static final int MEDIA_INFO_UNKNOWN = 1; // 0x1
-    field public static final int MEDIA_INFO_UNSUPPORTED_SUBTITLE = 901; // 0x385
-    field public static final int MEDIA_INFO_VIDEO_NOT_PLAYING = 805; // 0x325
-    field public static final int MEDIA_INFO_VIDEO_RENDERING_START = 3; // 0x3
-    field public static final int MEDIA_INFO_VIDEO_TRACK_LAGGING = 700; // 0x2bc
-    field @Deprecated public static final String MEDIA_MIMETYPE_TEXT_SUBRIP = "application/x-subrip";
-    field public static final int PREPARE_DRM_STATUS_PREPARATION_ERROR = 3; // 0x3
-    field public static final int PREPARE_DRM_STATUS_PROVISIONING_NETWORK_ERROR = 1; // 0x1
-    field public static final int PREPARE_DRM_STATUS_PROVISIONING_SERVER_ERROR = 2; // 0x2
-    field public static final int PREPARE_DRM_STATUS_SUCCESS = 0; // 0x0
-    field public static final int SEEK_CLOSEST = 3; // 0x3
-    field public static final int SEEK_CLOSEST_SYNC = 2; // 0x2
-    field public static final int SEEK_NEXT_SYNC = 1; // 0x1
-    field public static final int SEEK_PREVIOUS_SYNC = 0; // 0x0
-    field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT = 1; // 0x1
-    field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING = 2; // 0x2
-  }
-
-  public static final class MediaPlayer.DrmInfo {
-    method public java.util.Map<java.util.UUID,byte[]> getPssh();
-    method public java.util.UUID[] getSupportedSchemes();
-  }
-
-  public static final class MediaPlayer.MetricsConstants {
-    field public static final String CODEC_AUDIO = "android.media.mediaplayer.audio.codec";
-    field public static final String CODEC_VIDEO = "android.media.mediaplayer.video.codec";
-    field public static final String DURATION = "android.media.mediaplayer.durationMs";
-    field public static final String ERRORS = "android.media.mediaplayer.err";
-    field public static final String ERROR_CODE = "android.media.mediaplayer.errcode";
-    field public static final String FRAMES = "android.media.mediaplayer.frames";
-    field public static final String FRAMES_DROPPED = "android.media.mediaplayer.dropped";
-    field public static final String HEIGHT = "android.media.mediaplayer.height";
-    field public static final String MIME_TYPE_AUDIO = "android.media.mediaplayer.audio.mime";
-    field public static final String MIME_TYPE_VIDEO = "android.media.mediaplayer.video.mime";
-    field public static final String PLAYING = "android.media.mediaplayer.playingMs";
-    field public static final String WIDTH = "android.media.mediaplayer.width";
-  }
-
-  public static final class MediaPlayer.NoDrmSchemeException extends android.media.MediaDrmException {
-    ctor public MediaPlayer.NoDrmSchemeException(String);
-  }
-
-  public static interface MediaPlayer.OnBufferingUpdateListener {
-    method public void onBufferingUpdate(android.media.MediaPlayer, int);
-  }
-
-  public static interface MediaPlayer.OnCompletionListener {
-    method public void onCompletion(android.media.MediaPlayer);
-  }
-
-  public static interface MediaPlayer.OnDrmConfigHelper {
-    method public void onDrmConfig(android.media.MediaPlayer);
-  }
-
-  public static interface MediaPlayer.OnDrmInfoListener {
-    method public void onDrmInfo(android.media.MediaPlayer, android.media.MediaPlayer.DrmInfo);
-  }
-
-  public static interface MediaPlayer.OnDrmPreparedListener {
-    method public void onDrmPrepared(android.media.MediaPlayer, int);
-  }
-
-  public static interface MediaPlayer.OnErrorListener {
-    method public boolean onError(android.media.MediaPlayer, int, int);
-  }
-
-  public static interface MediaPlayer.OnInfoListener {
-    method public boolean onInfo(android.media.MediaPlayer, int, int);
-  }
-
-  public static interface MediaPlayer.OnMediaTimeDiscontinuityListener {
-    method public void onMediaTimeDiscontinuity(@NonNull android.media.MediaPlayer, @NonNull android.media.MediaTimestamp);
-  }
-
-  public static interface MediaPlayer.OnPreparedListener {
-    method public void onPrepared(android.media.MediaPlayer);
-  }
-
-  public static interface MediaPlayer.OnSeekCompleteListener {
-    method public void onSeekComplete(android.media.MediaPlayer);
-  }
-
-  public static interface MediaPlayer.OnSubtitleDataListener {
-    method public void onSubtitleData(@NonNull android.media.MediaPlayer, @NonNull android.media.SubtitleData);
-  }
-
-  public static interface MediaPlayer.OnTimedMetaDataAvailableListener {
-    method public void onTimedMetaDataAvailable(android.media.MediaPlayer, android.media.TimedMetaData);
-  }
-
-  public static interface MediaPlayer.OnTimedTextListener {
-    method public void onTimedText(android.media.MediaPlayer, android.media.TimedText);
-  }
-
-  public static interface MediaPlayer.OnVideoSizeChangedListener {
-    method public void onVideoSizeChanged(android.media.MediaPlayer, int, int);
-  }
-
-  public static final class MediaPlayer.ProvisioningNetworkErrorException extends android.media.MediaDrmException {
-    ctor public MediaPlayer.ProvisioningNetworkErrorException(String);
-  }
-
-  public static final class MediaPlayer.ProvisioningServerErrorException extends android.media.MediaDrmException {
-    ctor public MediaPlayer.ProvisioningServerErrorException(String);
-  }
-
-  public static class MediaPlayer.TrackInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.media.MediaFormat getFormat();
-    method public String getLanguage();
-    method public int getTrackType();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int MEDIA_TRACK_TYPE_AUDIO = 2; // 0x2
-    field public static final int MEDIA_TRACK_TYPE_METADATA = 5; // 0x5
-    field public static final int MEDIA_TRACK_TYPE_SUBTITLE = 4; // 0x4
-    field public static final int MEDIA_TRACK_TYPE_TIMEDTEXT = 3; // 0x3
-    field public static final int MEDIA_TRACK_TYPE_UNKNOWN = 0; // 0x0
-    field public static final int MEDIA_TRACK_TYPE_VIDEO = 1; // 0x1
-  }
-
-  public class MediaRecorder implements android.media.AudioRecordingMonitor android.media.AudioRouting android.media.MicrophoneDirection {
-    ctor public MediaRecorder();
-    method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
-    method protected void finalize();
-    method public java.util.List<android.media.MicrophoneInfo> getActiveMicrophones() throws java.io.IOException;
-    method @Nullable public android.media.AudioRecordingConfiguration getActiveRecordingConfiguration();
-    method public static final int getAudioSourceMax();
-    method public int getMaxAmplitude() throws java.lang.IllegalStateException;
-    method public android.os.PersistableBundle getMetrics();
-    method public android.media.AudioDeviceInfo getPreferredDevice();
-    method public android.media.AudioDeviceInfo getRoutedDevice();
-    method public android.view.Surface getSurface();
-    method public boolean isPrivacySensitive();
-    method public void pause() throws java.lang.IllegalStateException;
-    method public void prepare() throws java.io.IOException, java.lang.IllegalStateException;
-    method public void registerAudioRecordingCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.AudioRecordingCallback);
-    method public void release();
-    method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
-    method public void reset();
-    method public void resume() throws java.lang.IllegalStateException;
-    method public void setAudioChannels(int);
-    method public void setAudioEncoder(int) throws java.lang.IllegalStateException;
-    method public void setAudioEncodingBitRate(int);
-    method public void setAudioSamplingRate(int);
-    method public void setAudioSource(int) throws java.lang.IllegalStateException;
-    method @Deprecated public void setCamera(android.hardware.Camera);
-    method public void setCaptureRate(double);
-    method public void setInputSurface(@NonNull android.view.Surface);
-    method public void setLocation(float, float);
-    method public void setMaxDuration(int) throws java.lang.IllegalArgumentException;
-    method public void setMaxFileSize(long) throws java.lang.IllegalArgumentException;
-    method public void setNextOutputFile(java.io.FileDescriptor) throws java.io.IOException;
-    method public void setNextOutputFile(java.io.File) throws java.io.IOException;
-    method public void setOnErrorListener(android.media.MediaRecorder.OnErrorListener);
-    method public void setOnInfoListener(android.media.MediaRecorder.OnInfoListener);
-    method public void setOrientationHint(int);
-    method public void setOutputFile(java.io.FileDescriptor) throws java.lang.IllegalStateException;
-    method public void setOutputFile(java.io.File);
-    method public void setOutputFile(String) throws java.lang.IllegalStateException;
-    method public void setOutputFormat(int) throws java.lang.IllegalStateException;
-    method public boolean setPreferredDevice(android.media.AudioDeviceInfo);
-    method public boolean setPreferredMicrophoneDirection(int);
-    method public boolean setPreferredMicrophoneFieldDimension(@FloatRange(from=-1.0, to=1.0) float);
-    method public void setPreviewDisplay(android.view.Surface);
-    method public void setPrivacySensitive(boolean);
-    method public void setProfile(android.media.CamcorderProfile);
-    method public void setVideoEncoder(int) throws java.lang.IllegalStateException;
-    method public void setVideoEncodingBitRate(int);
-    method public void setVideoEncodingProfileLevel(int, int);
-    method public void setVideoFrameRate(int) throws java.lang.IllegalStateException;
-    method public void setVideoSize(int, int) throws java.lang.IllegalStateException;
-    method public void setVideoSource(int) throws java.lang.IllegalStateException;
-    method public void start() throws java.lang.IllegalStateException;
-    method public void stop() throws java.lang.IllegalStateException;
-    method public void unregisterAudioRecordingCallback(@NonNull android.media.AudioManager.AudioRecordingCallback);
-    field public static final int MEDIA_ERROR_SERVER_DIED = 100; // 0x64
-    field public static final int MEDIA_RECORDER_ERROR_UNKNOWN = 1; // 0x1
-    field public static final int MEDIA_RECORDER_INFO_MAX_DURATION_REACHED = 800; // 0x320
-    field public static final int MEDIA_RECORDER_INFO_MAX_FILESIZE_APPROACHING = 802; // 0x322
-    field public static final int MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED = 801; // 0x321
-    field public static final int MEDIA_RECORDER_INFO_NEXT_OUTPUT_FILE_STARTED = 803; // 0x323
-    field public static final int MEDIA_RECORDER_INFO_UNKNOWN = 1; // 0x1
-  }
-
-  public final class MediaRecorder.AudioEncoder {
-    field public static final int AAC = 3; // 0x3
-    field public static final int AAC_ELD = 5; // 0x5
-    field public static final int AMR_NB = 1; // 0x1
-    field public static final int AMR_WB = 2; // 0x2
-    field public static final int DEFAULT = 0; // 0x0
-    field public static final int HE_AAC = 4; // 0x4
-    field public static final int OPUS = 7; // 0x7
-    field public static final int VORBIS = 6; // 0x6
-  }
-
-  public final class MediaRecorder.AudioSource {
-    field public static final int CAMCORDER = 5; // 0x5
-    field public static final int DEFAULT = 0; // 0x0
-    field public static final int MIC = 1; // 0x1
-    field @RequiresPermission(android.Manifest.permission.CAPTURE_AUDIO_OUTPUT) public static final int REMOTE_SUBMIX = 8; // 0x8
-    field public static final int UNPROCESSED = 9; // 0x9
-    field public static final int VOICE_CALL = 4; // 0x4
-    field public static final int VOICE_COMMUNICATION = 7; // 0x7
-    field public static final int VOICE_DOWNLINK = 3; // 0x3
-    field public static final int VOICE_PERFORMANCE = 10; // 0xa
-    field public static final int VOICE_RECOGNITION = 6; // 0x6
-    field public static final int VOICE_UPLINK = 2; // 0x2
-  }
-
-  public static final class MediaRecorder.MetricsConstants {
-    field public static final String AUDIO_BITRATE = "android.media.mediarecorder.audio-bitrate";
-    field public static final String AUDIO_CHANNELS = "android.media.mediarecorder.audio-channels";
-    field public static final String AUDIO_SAMPLERATE = "android.media.mediarecorder.audio-samplerate";
-    field public static final String AUDIO_TIMESCALE = "android.media.mediarecorder.audio-timescale";
-    field public static final String CAPTURE_FPS = "android.media.mediarecorder.capture-fps";
-    field public static final String CAPTURE_FPS_ENABLE = "android.media.mediarecorder.capture-fpsenable";
-    field public static final String FRAMERATE = "android.media.mediarecorder.frame-rate";
-    field public static final String HEIGHT = "android.media.mediarecorder.height";
-    field public static final String MOVIE_TIMESCALE = "android.media.mediarecorder.movie-timescale";
-    field public static final String ROTATION = "android.media.mediarecorder.rotation";
-    field public static final String VIDEO_BITRATE = "android.media.mediarecorder.video-bitrate";
-    field public static final String VIDEO_IFRAME_INTERVAL = "android.media.mediarecorder.video-iframe-interval";
-    field public static final String VIDEO_LEVEL = "android.media.mediarecorder.video-encoder-level";
-    field public static final String VIDEO_PROFILE = "android.media.mediarecorder.video-encoder-profile";
-    field public static final String VIDEO_TIMESCALE = "android.media.mediarecorder.video-timescale";
-    field public static final String WIDTH = "android.media.mediarecorder.width";
-  }
-
-  public static interface MediaRecorder.OnErrorListener {
-    method public void onError(android.media.MediaRecorder, int, int);
-  }
-
-  public static interface MediaRecorder.OnInfoListener {
-    method public void onInfo(android.media.MediaRecorder, int, int);
-  }
-
-  public final class MediaRecorder.OutputFormat {
-    field public static final int AAC_ADTS = 6; // 0x6
-    field public static final int AMR_NB = 3; // 0x3
-    field public static final int AMR_WB = 4; // 0x4
-    field public static final int DEFAULT = 0; // 0x0
-    field public static final int MPEG_2_TS = 8; // 0x8
-    field public static final int MPEG_4 = 2; // 0x2
-    field public static final int OGG = 11; // 0xb
-    field @Deprecated public static final int RAW_AMR = 3; // 0x3
-    field public static final int THREE_GPP = 1; // 0x1
-    field public static final int WEBM = 9; // 0x9
-  }
-
-  public final class MediaRecorder.VideoEncoder {
-    field public static final int DEFAULT = 0; // 0x0
-    field public static final int H263 = 1; // 0x1
-    field public static final int H264 = 2; // 0x2
-    field public static final int HEVC = 5; // 0x5
-    field public static final int MPEG_4_SP = 3; // 0x3
-    field public static final int VP8 = 4; // 0x4
-  }
-
-  public final class MediaRecorder.VideoSource {
-    field public static final int CAMERA = 1; // 0x1
-    field public static final int DEFAULT = 0; // 0x0
-    field public static final int SURFACE = 2; // 0x2
-  }
-
-  public final class MediaRoute2Info implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getClientPackageName();
-    method public int getConnectionState();
-    method @Nullable public CharSequence getDescription();
-    method @Nullable public android.os.Bundle getExtras();
-    method @NonNull public java.util.List<java.lang.String> getFeatures();
-    method @Nullable public android.net.Uri getIconUri();
-    method @NonNull public String getId();
-    method @NonNull public CharSequence getName();
-    method public int getVolume();
-    method public int getVolumeHandling();
-    method public int getVolumeMax();
-    method public boolean isSystemRoute();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final int CONNECTION_STATE_CONNECTED = 2; // 0x2
-    field public static final int CONNECTION_STATE_CONNECTING = 1; // 0x1
-    field public static final int CONNECTION_STATE_DISCONNECTED = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.MediaRoute2Info> CREATOR;
-    field public static final String FEATURE_LIVE_AUDIO = "android.media.route.feature.LIVE_AUDIO";
-    field public static final String FEATURE_LIVE_VIDEO = "android.media.route.feature.LIVE_VIDEO";
-    field public static final String FEATURE_REMOTE_AUDIO_PLAYBACK = "android.media.route.feature.REMOTE_AUDIO_PLAYBACK";
-    field public static final String FEATURE_REMOTE_PLAYBACK = "android.media.route.feature.REMOTE_PLAYBACK";
-    field public static final String FEATURE_REMOTE_VIDEO_PLAYBACK = "android.media.route.feature.REMOTE_VIDEO_PLAYBACK";
-    field public static final int PLAYBACK_VOLUME_FIXED = 0; // 0x0
-    field public static final int PLAYBACK_VOLUME_VARIABLE = 1; // 0x1
-  }
-
-  public static final class MediaRoute2Info.Builder {
-    ctor public MediaRoute2Info.Builder(@NonNull String, @NonNull CharSequence);
-    ctor public MediaRoute2Info.Builder(@NonNull android.media.MediaRoute2Info);
-    method @NonNull public android.media.MediaRoute2Info.Builder addFeature(@NonNull String);
-    method @NonNull public android.media.MediaRoute2Info.Builder addFeatures(@NonNull java.util.Collection<java.lang.String>);
-    method @NonNull public android.media.MediaRoute2Info build();
-    method @NonNull public android.media.MediaRoute2Info.Builder clearFeatures();
-    method @NonNull public android.media.MediaRoute2Info.Builder setClientPackageName(@Nullable String);
-    method @NonNull public android.media.MediaRoute2Info.Builder setConnectionState(int);
-    method @NonNull public android.media.MediaRoute2Info.Builder setDescription(@Nullable CharSequence);
-    method @NonNull public android.media.MediaRoute2Info.Builder setExtras(@Nullable android.os.Bundle);
-    method @NonNull public android.media.MediaRoute2Info.Builder setIconUri(@Nullable android.net.Uri);
-    method @NonNull public android.media.MediaRoute2Info.Builder setVolume(int);
-    method @NonNull public android.media.MediaRoute2Info.Builder setVolumeHandling(int);
-    method @NonNull public android.media.MediaRoute2Info.Builder setVolumeMax(int);
-  }
-
-  public abstract class MediaRoute2ProviderService extends android.app.Service {
-    ctor public MediaRoute2ProviderService();
-    method @NonNull public final java.util.List<android.media.RoutingSessionInfo> getAllSessionInfo();
-    method @Nullable public final android.media.RoutingSessionInfo getSessionInfo(@NonNull String);
-    method public final void notifyRequestFailed(long, int);
-    method public final void notifyRoutes(@NonNull java.util.Collection<android.media.MediaRoute2Info>);
-    method public final void notifySessionCreated(long, @NonNull android.media.RoutingSessionInfo);
-    method public final void notifySessionReleased(@NonNull String);
-    method public final void notifySessionUpdated(@NonNull android.media.RoutingSessionInfo);
-    method @CallSuper @Nullable public android.os.IBinder onBind(@NonNull android.content.Intent);
-    method public abstract void onCreateSession(long, @NonNull String, @NonNull String, @Nullable android.os.Bundle);
-    method public abstract void onDeselectRoute(long, @NonNull String, @NonNull String);
-    method public void onDiscoveryPreferenceChanged(@NonNull android.media.RouteDiscoveryPreference);
-    method public abstract void onReleaseSession(long, @NonNull String);
-    method public abstract void onSelectRoute(long, @NonNull String, @NonNull String);
-    method public abstract void onSetRouteVolume(long, @NonNull String, int);
-    method public abstract void onSetSessionVolume(long, @NonNull String, int);
-    method public abstract void onTransferToRoute(long, @NonNull String, @NonNull String);
-    field public static final int REASON_INVALID_COMMAND = 4; // 0x4
-    field public static final int REASON_NETWORK_ERROR = 2; // 0x2
-    field public static final int REASON_REJECTED = 1; // 0x1
-    field public static final int REASON_ROUTE_NOT_AVAILABLE = 3; // 0x3
-    field public static final int REASON_UNKNOWN_ERROR = 0; // 0x0
-    field public static final long REQUEST_ID_NONE = 0L; // 0x0L
-    field public static final String SERVICE_INTERFACE = "android.media.MediaRoute2ProviderService";
-  }
-
-  public class MediaRouter {
-    method public void addCallback(int, android.media.MediaRouter.Callback);
-    method public void addCallback(int, android.media.MediaRouter.Callback, int);
-    method public void addUserRoute(android.media.MediaRouter.UserRouteInfo);
-    method public void clearUserRoutes();
-    method public android.media.MediaRouter.RouteCategory createRouteCategory(CharSequence, boolean);
-    method public android.media.MediaRouter.RouteCategory createRouteCategory(int, boolean);
-    method public android.media.MediaRouter.UserRouteInfo createUserRoute(android.media.MediaRouter.RouteCategory);
-    method public android.media.MediaRouter.RouteCategory getCategoryAt(int);
-    method public int getCategoryCount();
-    method public android.media.MediaRouter.RouteInfo getDefaultRoute();
-    method public android.media.MediaRouter.RouteInfo getRouteAt(int);
-    method public int getRouteCount();
-    method public android.media.MediaRouter.RouteInfo getSelectedRoute(int);
-    method public void removeCallback(android.media.MediaRouter.Callback);
-    method public void removeUserRoute(android.media.MediaRouter.UserRouteInfo);
-    method public void selectRoute(int, @NonNull android.media.MediaRouter.RouteInfo);
-    field public static final int CALLBACK_FLAG_PERFORM_ACTIVE_SCAN = 1; // 0x1
-    field public static final int CALLBACK_FLAG_UNFILTERED_EVENTS = 2; // 0x2
-    field public static final int ROUTE_TYPE_LIVE_AUDIO = 1; // 0x1
-    field public static final int ROUTE_TYPE_LIVE_VIDEO = 2; // 0x2
-    field public static final int ROUTE_TYPE_USER = 8388608; // 0x800000
-  }
-
-  public abstract static class MediaRouter.Callback {
-    ctor public MediaRouter.Callback();
-    method public abstract void onRouteAdded(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
-    method public abstract void onRouteChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
-    method public abstract void onRouteGrouped(android.media.MediaRouter, android.media.MediaRouter.RouteInfo, android.media.MediaRouter.RouteGroup, int);
-    method public void onRoutePresentationDisplayChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
-    method public abstract void onRouteRemoved(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
-    method public abstract void onRouteSelected(android.media.MediaRouter, int, android.media.MediaRouter.RouteInfo);
-    method public abstract void onRouteUngrouped(android.media.MediaRouter, android.media.MediaRouter.RouteInfo, android.media.MediaRouter.RouteGroup);
-    method public abstract void onRouteUnselected(android.media.MediaRouter, int, android.media.MediaRouter.RouteInfo);
-    method public abstract void onRouteVolumeChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
-  }
-
-  public static class MediaRouter.RouteCategory {
-    method public CharSequence getName();
-    method public CharSequence getName(android.content.Context);
-    method public java.util.List<android.media.MediaRouter.RouteInfo> getRoutes(java.util.List<android.media.MediaRouter.RouteInfo>);
-    method public int getSupportedTypes();
-    method public boolean isGroupable();
-  }
-
-  public static class MediaRouter.RouteGroup extends android.media.MediaRouter.RouteInfo {
-    method public void addRoute(android.media.MediaRouter.RouteInfo);
-    method public void addRoute(android.media.MediaRouter.RouteInfo, int);
-    method public android.media.MediaRouter.RouteInfo getRouteAt(int);
-    method public int getRouteCount();
-    method public void removeRoute(android.media.MediaRouter.RouteInfo);
-    method public void removeRoute(int);
-    method public void setIconDrawable(android.graphics.drawable.Drawable);
-    method public void setIconResource(@DrawableRes int);
-  }
-
-  public static class MediaRouter.RouteInfo {
-    method public android.media.MediaRouter.RouteCategory getCategory();
-    method public CharSequence getDescription();
-    method public int getDeviceType();
-    method public android.media.MediaRouter.RouteGroup getGroup();
-    method public android.graphics.drawable.Drawable getIconDrawable();
-    method public CharSequence getName();
-    method public CharSequence getName(android.content.Context);
-    method public int getPlaybackStream();
-    method public int getPlaybackType();
-    method public android.view.Display getPresentationDisplay();
-    method public CharSequence getStatus();
-    method public int getSupportedTypes();
-    method public Object getTag();
-    method public int getVolume();
-    method public int getVolumeHandling();
-    method public int getVolumeMax();
-    method public boolean isConnecting();
-    method public boolean isEnabled();
-    method public void requestSetVolume(int);
-    method public void requestUpdateVolume(int);
-    method public void setTag(Object);
-    field public static final int DEVICE_TYPE_BLUETOOTH = 3; // 0x3
-    field public static final int DEVICE_TYPE_SPEAKER = 2; // 0x2
-    field public static final int DEVICE_TYPE_TV = 1; // 0x1
-    field public static final int DEVICE_TYPE_UNKNOWN = 0; // 0x0
-    field public static final int PLAYBACK_TYPE_LOCAL = 0; // 0x0
-    field public static final int PLAYBACK_TYPE_REMOTE = 1; // 0x1
-    field public static final int PLAYBACK_VOLUME_FIXED = 0; // 0x0
-    field public static final int PLAYBACK_VOLUME_VARIABLE = 1; // 0x1
-  }
-
-  public static class MediaRouter.SimpleCallback extends android.media.MediaRouter.Callback {
-    ctor public MediaRouter.SimpleCallback();
-    method public void onRouteAdded(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
-    method public void onRouteChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
-    method public void onRouteGrouped(android.media.MediaRouter, android.media.MediaRouter.RouteInfo, android.media.MediaRouter.RouteGroup, int);
-    method public void onRouteRemoved(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
-    method public void onRouteSelected(android.media.MediaRouter, int, android.media.MediaRouter.RouteInfo);
-    method public void onRouteUngrouped(android.media.MediaRouter, android.media.MediaRouter.RouteInfo, android.media.MediaRouter.RouteGroup);
-    method public void onRouteUnselected(android.media.MediaRouter, int, android.media.MediaRouter.RouteInfo);
-    method public void onRouteVolumeChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
-  }
-
-  public static class MediaRouter.UserRouteInfo extends android.media.MediaRouter.RouteInfo {
-    method public android.media.RemoteControlClient getRemoteControlClient();
-    method public void setDescription(CharSequence);
-    method public void setIconDrawable(android.graphics.drawable.Drawable);
-    method public void setIconResource(@DrawableRes int);
-    method public void setName(CharSequence);
-    method public void setName(int);
-    method public void setPlaybackStream(int);
-    method public void setPlaybackType(int);
-    method public void setRemoteControlClient(android.media.RemoteControlClient);
-    method public void setStatus(CharSequence);
-    method public void setVolume(int);
-    method public void setVolumeCallback(android.media.MediaRouter.VolumeCallback);
-    method public void setVolumeHandling(int);
-    method public void setVolumeMax(int);
-  }
-
-  public abstract static class MediaRouter.VolumeCallback {
-    ctor public MediaRouter.VolumeCallback();
-    method public abstract void onVolumeSetRequest(android.media.MediaRouter.RouteInfo, int);
-    method public abstract void onVolumeUpdateRequest(android.media.MediaRouter.RouteInfo, int);
-  }
-
-  public final class MediaRouter2 {
-    method @NonNull public java.util.List<android.media.MediaRouter2.RoutingController> getControllers();
-    method @NonNull public static android.media.MediaRouter2 getInstance(@NonNull android.content.Context);
-    method @NonNull public java.util.List<android.media.MediaRoute2Info> getRoutes();
-    method @NonNull public android.media.MediaRouter2.RoutingController getSystemController();
-    method public void registerControllerCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.ControllerCallback);
-    method public void registerRouteCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.RouteCallback, @NonNull android.media.RouteDiscoveryPreference);
-    method public void registerTransferCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.TransferCallback);
-    method public void setOnGetControllerHintsListener(@Nullable android.media.MediaRouter2.OnGetControllerHintsListener);
-    method public void stop();
-    method public void transferTo(@NonNull android.media.MediaRoute2Info);
-    method public void unregisterControllerCallback(@NonNull android.media.MediaRouter2.ControllerCallback);
-    method public void unregisterRouteCallback(@NonNull android.media.MediaRouter2.RouteCallback);
-    method public void unregisterTransferCallback(@NonNull android.media.MediaRouter2.TransferCallback);
-  }
-
-  public abstract static class MediaRouter2.ControllerCallback {
-    ctor public MediaRouter2.ControllerCallback();
-    method public void onControllerUpdated(@NonNull android.media.MediaRouter2.RoutingController);
-  }
-
-  public static interface MediaRouter2.OnGetControllerHintsListener {
-    method @Nullable public android.os.Bundle onGetControllerHints(@NonNull android.media.MediaRoute2Info);
-  }
-
-  public abstract static class MediaRouter2.RouteCallback {
-    ctor public MediaRouter2.RouteCallback();
-    method public void onRoutesAdded(@NonNull java.util.List<android.media.MediaRoute2Info>);
-    method public void onRoutesChanged(@NonNull java.util.List<android.media.MediaRoute2Info>);
-    method public void onRoutesRemoved(@NonNull java.util.List<android.media.MediaRoute2Info>);
-  }
-
-  public class MediaRouter2.RoutingController {
-    method public void deselectRoute(@NonNull android.media.MediaRoute2Info);
-    method @Nullable public android.os.Bundle getControlHints();
-    method @NonNull public java.util.List<android.media.MediaRoute2Info> getDeselectableRoutes();
-    method @NonNull public String getId();
-    method @NonNull public java.util.List<android.media.MediaRoute2Info> getSelectableRoutes();
-    method @NonNull public java.util.List<android.media.MediaRoute2Info> getSelectedRoutes();
-    method public int getVolume();
-    method public int getVolumeHandling();
-    method public int getVolumeMax();
-    method public boolean isReleased();
-    method public void release();
-    method public void selectRoute(@NonNull android.media.MediaRoute2Info);
-    method public void setVolume(int);
-  }
-
-  public abstract static class MediaRouter2.TransferCallback {
-    ctor public MediaRouter2.TransferCallback();
-    method public void onStop(@NonNull android.media.MediaRouter2.RoutingController);
-    method public void onTransfer(@NonNull android.media.MediaRouter2.RoutingController, @NonNull android.media.MediaRouter2.RoutingController);
-    method public void onTransferFailure(@NonNull android.media.MediaRoute2Info);
-  }
-
-  public class MediaScannerConnection implements android.content.ServiceConnection {
-    ctor public MediaScannerConnection(android.content.Context, android.media.MediaScannerConnection.MediaScannerConnectionClient);
-    method public void connect();
-    method public void disconnect();
-    method public boolean isConnected();
-    method public void onServiceConnected(android.content.ComponentName, android.os.IBinder);
-    method public void onServiceDisconnected(android.content.ComponentName);
-    method public void scanFile(String, String);
-    method public static void scanFile(android.content.Context, String[], String[], android.media.MediaScannerConnection.OnScanCompletedListener);
-  }
-
-  public static interface MediaScannerConnection.MediaScannerConnectionClient extends android.media.MediaScannerConnection.OnScanCompletedListener {
-    method public void onMediaScannerConnected();
-  }
-
-  public static interface MediaScannerConnection.OnScanCompletedListener {
-    method public void onScanCompleted(String, android.net.Uri);
-  }
-
-  public class MediaSession2 implements java.lang.AutoCloseable {
-    method public void broadcastSessionCommand(@NonNull android.media.Session2Command, @Nullable android.os.Bundle);
-    method public void cancelSessionCommand(@NonNull android.media.MediaSession2.ControllerInfo, @NonNull Object);
-    method public void close();
-    method @NonNull public java.util.List<android.media.MediaSession2.ControllerInfo> getConnectedControllers();
-    method @NonNull public String getId();
-    method @NonNull public android.media.Session2Token getToken();
-    method public boolean isPlaybackActive();
-    method @NonNull public Object sendSessionCommand(@NonNull android.media.MediaSession2.ControllerInfo, @NonNull android.media.Session2Command, @Nullable android.os.Bundle);
-    method public void setPlaybackActive(boolean);
-  }
-
-  public static final class MediaSession2.Builder {
-    ctor public MediaSession2.Builder(@NonNull android.content.Context);
-    method @NonNull public android.media.MediaSession2 build();
-    method @NonNull public android.media.MediaSession2.Builder setExtras(@NonNull android.os.Bundle);
-    method @NonNull public android.media.MediaSession2.Builder setId(@NonNull String);
-    method @NonNull public android.media.MediaSession2.Builder setSessionActivity(@Nullable android.app.PendingIntent);
-    method @NonNull public android.media.MediaSession2.Builder setSessionCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaSession2.SessionCallback);
-  }
-
-  public static final class MediaSession2.ControllerInfo {
-    method @NonNull public android.os.Bundle getConnectionHints();
-    method @NonNull public String getPackageName();
-    method @NonNull public android.media.session.MediaSessionManager.RemoteUserInfo getRemoteUserInfo();
-    method public int getUid();
-  }
-
-  public abstract static class MediaSession2.SessionCallback {
-    ctor public MediaSession2.SessionCallback();
-    method public void onCommandResult(@NonNull android.media.MediaSession2, @NonNull android.media.MediaSession2.ControllerInfo, @NonNull Object, @NonNull android.media.Session2Command, @NonNull android.media.Session2Command.Result);
-    method @Nullable public android.media.Session2CommandGroup onConnect(@NonNull android.media.MediaSession2, @NonNull android.media.MediaSession2.ControllerInfo);
-    method public void onDisconnected(@NonNull android.media.MediaSession2, @NonNull android.media.MediaSession2.ControllerInfo);
-    method public void onPostConnect(@NonNull android.media.MediaSession2, @NonNull android.media.MediaSession2.ControllerInfo);
-    method @Nullable public android.media.Session2Command.Result onSessionCommand(@NonNull android.media.MediaSession2, @NonNull android.media.MediaSession2.ControllerInfo, @NonNull android.media.Session2Command, @Nullable android.os.Bundle);
-  }
-
-  public abstract class MediaSession2Service extends android.app.Service {
-    ctor public MediaSession2Service();
-    method public final void addSession(@NonNull android.media.MediaSession2);
-    method @NonNull public final java.util.List<android.media.MediaSession2> getSessions();
-    method @CallSuper @Nullable public android.os.IBinder onBind(@NonNull android.content.Intent);
-    method @Nullable public abstract android.media.MediaSession2 onGetSession(@NonNull android.media.MediaSession2.ControllerInfo);
-    method @Nullable public abstract android.media.MediaSession2Service.MediaNotification onUpdateNotification(@NonNull android.media.MediaSession2);
-    method public final void removeSession(@NonNull android.media.MediaSession2);
-    field public static final String SERVICE_INTERFACE = "android.media.MediaSession2Service";
-  }
-
-  public static class MediaSession2Service.MediaNotification {
-    ctor public MediaSession2Service.MediaNotification(int, @NonNull android.app.Notification);
-    method @NonNull public android.app.Notification getNotification();
-    method public int getNotificationId();
-  }
-
-  public final class MediaSync {
-    ctor public MediaSync();
-    method @NonNull public android.view.Surface createInputSurface();
-    method protected void finalize();
-    method public void flush();
-    method @NonNull public android.media.PlaybackParams getPlaybackParams();
-    method @NonNull public android.media.SyncParams getSyncParams();
-    method @Nullable public android.media.MediaTimestamp getTimestamp();
-    method public void queueAudio(@NonNull java.nio.ByteBuffer, int, long);
-    method public void release();
-    method public void setAudioTrack(@Nullable android.media.AudioTrack);
-    method public void setCallback(@Nullable android.media.MediaSync.Callback, @Nullable android.os.Handler);
-    method public void setOnErrorListener(@Nullable android.media.MediaSync.OnErrorListener, @Nullable android.os.Handler);
-    method public void setPlaybackParams(@NonNull android.media.PlaybackParams);
-    method public void setSurface(@Nullable android.view.Surface);
-    method public void setSyncParams(@NonNull android.media.SyncParams);
-    field public static final int MEDIASYNC_ERROR_AUDIOTRACK_FAIL = 1; // 0x1
-    field public static final int MEDIASYNC_ERROR_SURFACE_FAIL = 2; // 0x2
-  }
-
-  public abstract static class MediaSync.Callback {
-    ctor public MediaSync.Callback();
-    method public abstract void onAudioBufferConsumed(@NonNull android.media.MediaSync, @NonNull java.nio.ByteBuffer, int);
-  }
-
-  public static interface MediaSync.OnErrorListener {
-    method public void onError(@NonNull android.media.MediaSync, int, int);
-  }
-
-  public class MediaSyncEvent {
-    method public static android.media.MediaSyncEvent createEvent(int) throws java.lang.IllegalArgumentException;
-    method public int getAudioSessionId();
-    method public int getType();
-    method public android.media.MediaSyncEvent setAudioSessionId(int) throws java.lang.IllegalArgumentException;
-    field public static final int SYNC_EVENT_NONE = 0; // 0x0
-    field public static final int SYNC_EVENT_PRESENTATION_COMPLETE = 1; // 0x1
-  }
-
-  public final class MediaTimestamp {
-    ctor public MediaTimestamp(long, long, @FloatRange(from=0.0f, to=java.lang.Float.MAX_VALUE) float);
-    method public long getAnchorMediaTimeUs();
-    method public long getAnchorSystemNanoTime();
-    method @Deprecated public long getAnchorSytemNanoTime();
-    method @FloatRange(from=0.0f, to=java.lang.Float.MAX_VALUE) public float getMediaClockRate();
-    field public static final android.media.MediaTimestamp TIMESTAMP_UNKNOWN;
-  }
-
-  public interface MicrophoneDirection {
-    method public boolean setPreferredMicrophoneDirection(int);
-    method public boolean setPreferredMicrophoneFieldDimension(@FloatRange(from=-1.0, to=1.0) float);
-    field public static final int MIC_DIRECTION_AWAY_FROM_USER = 2; // 0x2
-    field public static final int MIC_DIRECTION_EXTERNAL = 3; // 0x3
-    field public static final int MIC_DIRECTION_TOWARDS_USER = 1; // 0x1
-    field public static final int MIC_DIRECTION_UNSPECIFIED = 0; // 0x0
-  }
-
-  public final class MicrophoneInfo {
-    method @NonNull public String getAddress();
-    method public java.util.List<android.util.Pair<java.lang.Integer,java.lang.Integer>> getChannelMapping();
-    method public String getDescription();
-    method public int getDirectionality();
-    method public java.util.List<android.util.Pair<java.lang.Float,java.lang.Float>> getFrequencyResponse();
-    method public int getGroup();
-    method public int getId();
-    method public int getIndexInTheGroup();
-    method public int getLocation();
-    method public float getMaxSpl();
-    method public float getMinSpl();
-    method public android.media.MicrophoneInfo.Coordinate3F getOrientation();
-    method public android.media.MicrophoneInfo.Coordinate3F getPosition();
-    method public float getSensitivity();
-    method public int getType();
-    field public static final int CHANNEL_MAPPING_DIRECT = 1; // 0x1
-    field public static final int CHANNEL_MAPPING_PROCESSED = 2; // 0x2
-    field public static final int DIRECTIONALITY_BI_DIRECTIONAL = 2; // 0x2
-    field public static final int DIRECTIONALITY_CARDIOID = 3; // 0x3
-    field public static final int DIRECTIONALITY_HYPER_CARDIOID = 4; // 0x4
-    field public static final int DIRECTIONALITY_OMNI = 1; // 0x1
-    field public static final int DIRECTIONALITY_SUPER_CARDIOID = 5; // 0x5
-    field public static final int DIRECTIONALITY_UNKNOWN = 0; // 0x0
-    field public static final int GROUP_UNKNOWN = -1; // 0xffffffff
-    field public static final int INDEX_IN_THE_GROUP_UNKNOWN = -1; // 0xffffffff
-    field public static final int LOCATION_MAINBODY = 1; // 0x1
-    field public static final int LOCATION_MAINBODY_MOVABLE = 2; // 0x2
-    field public static final int LOCATION_PERIPHERAL = 3; // 0x3
-    field public static final int LOCATION_UNKNOWN = 0; // 0x0
-    field public static final android.media.MicrophoneInfo.Coordinate3F ORIENTATION_UNKNOWN;
-    field public static final android.media.MicrophoneInfo.Coordinate3F POSITION_UNKNOWN;
-    field public static final float SENSITIVITY_UNKNOWN = -3.4028235E38f;
-    field public static final float SPL_UNKNOWN = -3.4028235E38f;
-  }
-
-  public static final class MicrophoneInfo.Coordinate3F {
-    field public final float x;
-    field public final float y;
-    field public final float z;
-  }
-
-  public final class NotProvisionedException extends android.media.MediaDrmException {
-    ctor public NotProvisionedException(String);
-  }
-
-  public final class PlaybackParams implements android.os.Parcelable {
-    ctor public PlaybackParams();
-    method public android.media.PlaybackParams allowDefaults();
-    method public int describeContents();
-    method public int getAudioFallbackMode();
-    method public float getPitch();
-    method public float getSpeed();
-    method public android.media.PlaybackParams setAudioFallbackMode(int);
-    method public android.media.PlaybackParams setPitch(float);
-    method public android.media.PlaybackParams setSpeed(float);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int AUDIO_FALLBACK_MODE_DEFAULT = 0; // 0x0
-    field public static final int AUDIO_FALLBACK_MODE_FAIL = 2; // 0x2
-    field public static final int AUDIO_FALLBACK_MODE_MUTE = 1; // 0x1
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.PlaybackParams> CREATOR;
-  }
-
-  public final class Rating implements android.os.Parcelable {
-    method public int describeContents();
-    method public float getPercentRating();
-    method public int getRatingStyle();
-    method public float getStarRating();
-    method public boolean hasHeart();
-    method public boolean isRated();
-    method public boolean isThumbUp();
-    method public static android.media.Rating newHeartRating(boolean);
-    method public static android.media.Rating newPercentageRating(float);
-    method public static android.media.Rating newStarRating(int, float);
-    method public static android.media.Rating newThumbRating(boolean);
-    method public static android.media.Rating newUnratedRating(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.Rating> CREATOR;
-    field public static final int RATING_3_STARS = 3; // 0x3
-    field public static final int RATING_4_STARS = 4; // 0x4
-    field public static final int RATING_5_STARS = 5; // 0x5
-    field public static final int RATING_HEART = 1; // 0x1
-    field public static final int RATING_NONE = 0; // 0x0
-    field public static final int RATING_PERCENTAGE = 6; // 0x6
-    field public static final int RATING_THUMB_UP_DOWN = 2; // 0x2
-  }
-
-  @Deprecated public class RemoteControlClient {
-    ctor @Deprecated public RemoteControlClient(android.app.PendingIntent);
-    ctor @Deprecated public RemoteControlClient(android.app.PendingIntent, android.os.Looper);
-    method @Deprecated public android.media.RemoteControlClient.MetadataEditor editMetadata(boolean);
-    method @Deprecated public android.media.session.MediaSession getMediaSession();
-    method @Deprecated public void setMetadataUpdateListener(android.media.RemoteControlClient.OnMetadataUpdateListener);
-    method @Deprecated public void setOnGetPlaybackPositionListener(android.media.RemoteControlClient.OnGetPlaybackPositionListener);
-    method @Deprecated public void setPlaybackPositionUpdateListener(android.media.RemoteControlClient.OnPlaybackPositionUpdateListener);
-    method @Deprecated public void setPlaybackState(int);
-    method @Deprecated public void setPlaybackState(int, long, float);
-    method @Deprecated public void setTransportControlFlags(int);
-    field @Deprecated public static final int FLAG_KEY_MEDIA_FAST_FORWARD = 64; // 0x40
-    field @Deprecated public static final int FLAG_KEY_MEDIA_NEXT = 128; // 0x80
-    field @Deprecated public static final int FLAG_KEY_MEDIA_PAUSE = 16; // 0x10
-    field @Deprecated public static final int FLAG_KEY_MEDIA_PLAY = 4; // 0x4
-    field @Deprecated public static final int FLAG_KEY_MEDIA_PLAY_PAUSE = 8; // 0x8
-    field @Deprecated public static final int FLAG_KEY_MEDIA_POSITION_UPDATE = 256; // 0x100
-    field @Deprecated public static final int FLAG_KEY_MEDIA_PREVIOUS = 1; // 0x1
-    field @Deprecated public static final int FLAG_KEY_MEDIA_RATING = 512; // 0x200
-    field @Deprecated public static final int FLAG_KEY_MEDIA_REWIND = 2; // 0x2
-    field @Deprecated public static final int FLAG_KEY_MEDIA_STOP = 32; // 0x20
-    field @Deprecated public static final int PLAYSTATE_BUFFERING = 8; // 0x8
-    field @Deprecated public static final int PLAYSTATE_ERROR = 9; // 0x9
-    field @Deprecated public static final int PLAYSTATE_FAST_FORWARDING = 4; // 0x4
-    field @Deprecated public static final int PLAYSTATE_PAUSED = 2; // 0x2
-    field @Deprecated public static final int PLAYSTATE_PLAYING = 3; // 0x3
-    field @Deprecated public static final int PLAYSTATE_REWINDING = 5; // 0x5
-    field @Deprecated public static final int PLAYSTATE_SKIPPING_BACKWARDS = 7; // 0x7
-    field @Deprecated public static final int PLAYSTATE_SKIPPING_FORWARDS = 6; // 0x6
-    field @Deprecated public static final int PLAYSTATE_STOPPED = 1; // 0x1
-  }
-
-  @Deprecated public class RemoteControlClient.MetadataEditor extends android.media.MediaMetadataEditor {
-    method @Deprecated public void apply();
-    method public Object clone() throws java.lang.CloneNotSupportedException;
-    method @Deprecated public android.media.RemoteControlClient.MetadataEditor putBitmap(int, android.graphics.Bitmap) throws java.lang.IllegalArgumentException;
-    method @Deprecated public android.media.RemoteControlClient.MetadataEditor putLong(int, long) throws java.lang.IllegalArgumentException;
-    method @Deprecated public android.media.RemoteControlClient.MetadataEditor putObject(int, Object) throws java.lang.IllegalArgumentException;
-    method @Deprecated public android.media.RemoteControlClient.MetadataEditor putString(int, String) throws java.lang.IllegalArgumentException;
-    field @Deprecated public static final int BITMAP_KEY_ARTWORK = 100; // 0x64
-  }
-
-  @Deprecated public static interface RemoteControlClient.OnGetPlaybackPositionListener {
-    method @Deprecated public long onGetPlaybackPosition();
-  }
-
-  @Deprecated public static interface RemoteControlClient.OnMetadataUpdateListener {
-    method @Deprecated public void onMetadataUpdate(int, Object);
-  }
-
-  @Deprecated public static interface RemoteControlClient.OnPlaybackPositionUpdateListener {
-    method @Deprecated public void onPlaybackPositionUpdate(long);
-  }
-
-  @Deprecated public final class RemoteController {
-    ctor @Deprecated public RemoteController(android.content.Context, android.media.RemoteController.OnClientUpdateListener) throws java.lang.IllegalArgumentException;
-    ctor @Deprecated public RemoteController(android.content.Context, android.media.RemoteController.OnClientUpdateListener, android.os.Looper) throws java.lang.IllegalArgumentException;
-    method @Deprecated public boolean clearArtworkConfiguration();
-    method @Deprecated public android.media.RemoteController.MetadataEditor editMetadata();
-    method @Deprecated public long getEstimatedMediaPosition();
-    method @Deprecated public boolean seekTo(long) throws java.lang.IllegalArgumentException;
-    method @Deprecated public boolean sendMediaKeyEvent(android.view.KeyEvent) throws java.lang.IllegalArgumentException;
-    method @Deprecated public boolean setArtworkConfiguration(int, int) throws java.lang.IllegalArgumentException;
-    method @Deprecated public boolean setSynchronizationMode(int) throws java.lang.IllegalArgumentException;
-    field @Deprecated public static final int POSITION_SYNCHRONIZATION_CHECK = 1; // 0x1
-    field @Deprecated public static final int POSITION_SYNCHRONIZATION_NONE = 0; // 0x0
-  }
-
-  @Deprecated public class RemoteController.MetadataEditor extends android.media.MediaMetadataEditor {
-    method @Deprecated public void apply();
-  }
-
-  @Deprecated public static interface RemoteController.OnClientUpdateListener {
-    method @Deprecated public void onClientChange(boolean);
-    method @Deprecated public void onClientMetadataUpdate(android.media.RemoteController.MetadataEditor);
-    method @Deprecated public void onClientPlaybackStateUpdate(int);
-    method @Deprecated public void onClientPlaybackStateUpdate(int, long, long, float);
-    method @Deprecated public void onClientTransportControlUpdate(int);
-  }
-
-  public final class ResourceBusyException extends android.media.MediaDrmException {
-    ctor public ResourceBusyException(String);
-  }
-
-  public class Ringtone {
-    method protected void finalize();
-    method public android.media.AudioAttributes getAudioAttributes();
-    method @Deprecated public int getStreamType();
-    method public String getTitle(android.content.Context);
-    method public float getVolume();
-    method public boolean isLooping();
-    method public boolean isPlaying();
-    method public void play();
-    method public void setAudioAttributes(android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
-    method public void setLooping(boolean);
-    method @Deprecated public void setStreamType(int);
-    method public void setVolume(float);
-    method public void stop();
-  }
-
-  public class RingtoneManager {
-    ctor public RingtoneManager(android.app.Activity);
-    ctor public RingtoneManager(android.content.Context);
-    method public static android.net.Uri getActualDefaultRingtoneUri(android.content.Context, int);
-    method public android.database.Cursor getCursor();
-    method public static int getDefaultType(android.net.Uri);
-    method public static android.net.Uri getDefaultUri(int);
-    method @Deprecated public boolean getIncludeDrm();
-    method public android.media.Ringtone getRingtone(int);
-    method public static android.media.Ringtone getRingtone(android.content.Context, android.net.Uri);
-    method public int getRingtonePosition(android.net.Uri);
-    method public android.net.Uri getRingtoneUri(int);
-    method public boolean getStopPreviousRingtone();
-    method public static android.net.Uri getValidRingtoneUri(android.content.Context);
-    method public boolean hasHapticChannels(int);
-    method public static boolean hasHapticChannels(@NonNull android.net.Uri);
-    method public int inferStreamType();
-    method public static boolean isDefault(android.net.Uri);
-    method @Nullable public static android.content.res.AssetFileDescriptor openDefaultRingtoneUri(@NonNull android.content.Context, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
-    method public static void setActualDefaultRingtoneUri(android.content.Context, int, android.net.Uri);
-    method @Deprecated public void setIncludeDrm(boolean);
-    method public void setStopPreviousRingtone(boolean);
-    method public void setType(int);
-    method public void stopPreviousRingtone();
-    field public static final String ACTION_RINGTONE_PICKER = "android.intent.action.RINGTONE_PICKER";
-    field public static final String EXTRA_RINGTONE_DEFAULT_URI = "android.intent.extra.ringtone.DEFAULT_URI";
-    field public static final String EXTRA_RINGTONE_EXISTING_URI = "android.intent.extra.ringtone.EXISTING_URI";
-    field @Deprecated public static final String EXTRA_RINGTONE_INCLUDE_DRM = "android.intent.extra.ringtone.INCLUDE_DRM";
-    field public static final String EXTRA_RINGTONE_PICKED_URI = "android.intent.extra.ringtone.PICKED_URI";
-    field public static final String EXTRA_RINGTONE_SHOW_DEFAULT = "android.intent.extra.ringtone.SHOW_DEFAULT";
-    field public static final String EXTRA_RINGTONE_SHOW_SILENT = "android.intent.extra.ringtone.SHOW_SILENT";
-    field public static final String EXTRA_RINGTONE_TITLE = "android.intent.extra.ringtone.TITLE";
-    field public static final String EXTRA_RINGTONE_TYPE = "android.intent.extra.ringtone.TYPE";
-    field public static final int ID_COLUMN_INDEX = 0; // 0x0
-    field public static final int TITLE_COLUMN_INDEX = 1; // 0x1
-    field public static final int TYPE_ALARM = 4; // 0x4
-    field public static final int TYPE_ALL = 7; // 0x7
-    field public static final int TYPE_NOTIFICATION = 2; // 0x2
-    field public static final int TYPE_RINGTONE = 1; // 0x1
-    field public static final int URI_COLUMN_INDEX = 2; // 0x2
-  }
-
-  public final class RouteDiscoveryPreference implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public java.util.List<java.lang.String> getPreferredFeatures();
-    method public boolean shouldPerformActiveScan();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.RouteDiscoveryPreference> CREATOR;
-  }
-
-  public static final class RouteDiscoveryPreference.Builder {
-    ctor public RouteDiscoveryPreference.Builder(@NonNull java.util.List<java.lang.String>, boolean);
-    ctor public RouteDiscoveryPreference.Builder(@NonNull android.media.RouteDiscoveryPreference);
-    method @NonNull public android.media.RouteDiscoveryPreference build();
-    method @NonNull public android.media.RouteDiscoveryPreference.Builder setPreferredFeatures(@NonNull java.util.List<java.lang.String>);
-    method @NonNull public android.media.RouteDiscoveryPreference.Builder setShouldPerformActiveScan(boolean);
-  }
-
-  public final class RoutingSessionInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public String getClientPackageName();
-    method @Nullable public android.os.Bundle getControlHints();
-    method @NonNull public java.util.List<java.lang.String> getDeselectableRoutes();
-    method @NonNull public String getId();
-    method @Nullable public CharSequence getName();
-    method @NonNull public java.util.List<java.lang.String> getSelectableRoutes();
-    method @NonNull public java.util.List<java.lang.String> getSelectedRoutes();
-    method @NonNull public java.util.List<java.lang.String> getTransferableRoutes();
-    method public int getVolume();
-    method public int getVolumeHandling();
-    method public int getVolumeMax();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.RoutingSessionInfo> CREATOR;
-  }
-
-  public static final class RoutingSessionInfo.Builder {
-    ctor public RoutingSessionInfo.Builder(@NonNull String, @NonNull String);
-    ctor public RoutingSessionInfo.Builder(@NonNull android.media.RoutingSessionInfo);
-    method @NonNull public android.media.RoutingSessionInfo.Builder addDeselectableRoute(@NonNull String);
-    method @NonNull public android.media.RoutingSessionInfo.Builder addSelectableRoute(@NonNull String);
-    method @NonNull public android.media.RoutingSessionInfo.Builder addSelectedRoute(@NonNull String);
-    method @NonNull public android.media.RoutingSessionInfo.Builder addTransferableRoute(@NonNull String);
-    method @NonNull public android.media.RoutingSessionInfo build();
-    method @NonNull public android.media.RoutingSessionInfo.Builder clearDeselectableRoutes();
-    method @NonNull public android.media.RoutingSessionInfo.Builder clearSelectableRoutes();
-    method @NonNull public android.media.RoutingSessionInfo.Builder clearSelectedRoutes();
-    method @NonNull public android.media.RoutingSessionInfo.Builder clearTransferableRoutes();
-    method @NonNull public android.media.RoutingSessionInfo.Builder removeDeselectableRoute(@NonNull String);
-    method @NonNull public android.media.RoutingSessionInfo.Builder removeSelectableRoute(@NonNull String);
-    method @NonNull public android.media.RoutingSessionInfo.Builder removeSelectedRoute(@NonNull String);
-    method @NonNull public android.media.RoutingSessionInfo.Builder removeTransferableRoute(@NonNull String);
-    method @NonNull public android.media.RoutingSessionInfo.Builder setControlHints(@Nullable android.os.Bundle);
-    method @NonNull public android.media.RoutingSessionInfo.Builder setName(@Nullable CharSequence);
-    method @NonNull public android.media.RoutingSessionInfo.Builder setVolume(int);
-    method @NonNull public android.media.RoutingSessionInfo.Builder setVolumeHandling(int);
-    method @NonNull public android.media.RoutingSessionInfo.Builder setVolumeMax(int);
-  }
-
-  public final class Session2Command implements android.os.Parcelable {
-    ctor public Session2Command(int);
-    ctor public Session2Command(@NonNull String, @Nullable android.os.Bundle);
-    method public int describeContents();
-    method public int getCommandCode();
-    method @Nullable public String getCustomAction();
-    method @Nullable public android.os.Bundle getCustomExtras();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final int COMMAND_CODE_CUSTOM = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.Session2Command> CREATOR;
-  }
-
-  public static final class Session2Command.Result {
-    ctor public Session2Command.Result(int, @Nullable android.os.Bundle);
-    method public int getResultCode();
-    method @Nullable public android.os.Bundle getResultData();
-    field public static final int RESULT_ERROR_UNKNOWN_ERROR = -1; // 0xffffffff
-    field public static final int RESULT_INFO_SKIPPED = 1; // 0x1
-    field public static final int RESULT_SUCCESS = 0; // 0x0
-  }
-
-  public final class Session2CommandGroup implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public java.util.Set<android.media.Session2Command> getCommands();
-    method public boolean hasCommand(@NonNull android.media.Session2Command);
-    method public boolean hasCommand(int);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.Session2CommandGroup> CREATOR;
-  }
-
-  public static final class Session2CommandGroup.Builder {
-    ctor public Session2CommandGroup.Builder();
-    ctor public Session2CommandGroup.Builder(@NonNull android.media.Session2CommandGroup);
-    method @NonNull public android.media.Session2CommandGroup.Builder addCommand(@NonNull android.media.Session2Command);
-    method @NonNull public android.media.Session2CommandGroup build();
-    method @NonNull public android.media.Session2CommandGroup.Builder removeCommand(@NonNull android.media.Session2Command);
-  }
-
-  public final class Session2Token implements android.os.Parcelable {
-    ctor public Session2Token(@NonNull android.content.Context, @NonNull android.content.ComponentName);
-    method public int describeContents();
-    method @NonNull public android.os.Bundle getExtras();
-    method @NonNull public String getPackageName();
-    method @Nullable public String getServiceName();
-    method public int getType();
-    method public int getUid();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.Session2Token> CREATOR;
-    field public static final int TYPE_SESSION = 0; // 0x0
-    field public static final int TYPE_SESSION_SERVICE = 1; // 0x1
-  }
-
-  public class SoundPool {
-    ctor @Deprecated public SoundPool(int, int, int);
-    method public final void autoPause();
-    method public final void autoResume();
-    method protected void finalize();
-    method public int load(String, int);
-    method public int load(android.content.Context, int, int);
-    method public int load(android.content.res.AssetFileDescriptor, int);
-    method public int load(java.io.FileDescriptor, long, long, int);
-    method public final void pause(int);
-    method public final int play(int, float, float, int, int, float);
-    method public final void release();
-    method public final void resume(int);
-    method public final void setLoop(int, int);
-    method public void setOnLoadCompleteListener(android.media.SoundPool.OnLoadCompleteListener);
-    method public final void setPriority(int, int);
-    method public final void setRate(int, float);
-    method public final void setVolume(int, float, float);
-    method public final void stop(int);
-    method public final boolean unload(int);
-  }
-
-  public static class SoundPool.Builder {
-    ctor public SoundPool.Builder();
-    method public android.media.SoundPool build();
-    method public android.media.SoundPool.Builder setAudioAttributes(android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
-    method public android.media.SoundPool.Builder setMaxStreams(int) throws java.lang.IllegalArgumentException;
-  }
-
-  public static interface SoundPool.OnLoadCompleteListener {
-    method public void onLoadComplete(android.media.SoundPool, int, int);
-  }
-
-  public final class SubtitleData {
-    ctor public SubtitleData(int, long, long, @NonNull byte[]);
-    method @NonNull public byte[] getData();
-    method public long getDurationUs();
-    method public long getStartTimeUs();
-    method public int getTrackIndex();
-  }
-
-  public final class SyncParams {
-    ctor public SyncParams();
-    method public android.media.SyncParams allowDefaults();
-    method public int getAudioAdjustMode();
-    method public float getFrameRate();
-    method public int getSyncSource();
-    method public float getTolerance();
-    method public android.media.SyncParams setAudioAdjustMode(int);
-    method public android.media.SyncParams setFrameRate(float);
-    method public android.media.SyncParams setSyncSource(int);
-    method public android.media.SyncParams setTolerance(float);
-    field public static final int AUDIO_ADJUST_MODE_DEFAULT = 0; // 0x0
-    field public static final int AUDIO_ADJUST_MODE_RESAMPLE = 2; // 0x2
-    field public static final int AUDIO_ADJUST_MODE_STRETCH = 1; // 0x1
-    field public static final int SYNC_SOURCE_AUDIO = 2; // 0x2
-    field public static final int SYNC_SOURCE_DEFAULT = 0; // 0x0
-    field public static final int SYNC_SOURCE_SYSTEM_CLOCK = 1; // 0x1
-    field public static final int SYNC_SOURCE_VSYNC = 3; // 0x3
-  }
-
-  public class ThumbnailUtils {
-    ctor public ThumbnailUtils();
-    method @Deprecated @Nullable public static android.graphics.Bitmap createAudioThumbnail(@NonNull String, int);
-    method @NonNull public static android.graphics.Bitmap createAudioThumbnail(@NonNull java.io.File, @NonNull android.util.Size, @Nullable android.os.CancellationSignal) throws java.io.IOException;
-    method @Deprecated @Nullable public static android.graphics.Bitmap createImageThumbnail(@NonNull String, int);
-    method @NonNull public static android.graphics.Bitmap createImageThumbnail(@NonNull java.io.File, @NonNull android.util.Size, @Nullable android.os.CancellationSignal) throws java.io.IOException;
-    method @Deprecated @Nullable public static android.graphics.Bitmap createVideoThumbnail(@NonNull String, int);
-    method @NonNull public static android.graphics.Bitmap createVideoThumbnail(@NonNull java.io.File, @NonNull android.util.Size, @Nullable android.os.CancellationSignal) throws java.io.IOException;
-    method public static android.graphics.Bitmap extractThumbnail(android.graphics.Bitmap, int, int);
-    method public static android.graphics.Bitmap extractThumbnail(android.graphics.Bitmap, int, int, int);
-    field public static final int OPTIONS_RECYCLE_INPUT = 2; // 0x2
-  }
-
-  public final class TimedMetaData {
-    ctor public TimedMetaData(long, @NonNull byte[]);
-    method public byte[] getMetaData();
-    method public long getTimestamp();
-  }
-
-  public final class TimedText {
-    method public android.graphics.Rect getBounds();
-    method public String getText();
-  }
-
-  public class ToneGenerator {
-    ctor public ToneGenerator(int, int);
-    method protected void finalize();
-    method public final int getAudioSessionId();
-    method public void release();
-    method public boolean startTone(int);
-    method public boolean startTone(int, int);
-    method public void stopTone();
-    field public static final int MAX_VOLUME = 100; // 0x64
-    field public static final int MIN_VOLUME = 0; // 0x0
-    field public static final int TONE_CDMA_ABBR_ALERT = 97; // 0x61
-    field public static final int TONE_CDMA_ABBR_INTERCEPT = 37; // 0x25
-    field public static final int TONE_CDMA_ABBR_REORDER = 39; // 0x27
-    field public static final int TONE_CDMA_ALERT_AUTOREDIAL_LITE = 87; // 0x57
-    field public static final int TONE_CDMA_ALERT_CALL_GUARD = 93; // 0x5d
-    field public static final int TONE_CDMA_ALERT_INCALL_LITE = 91; // 0x5b
-    field public static final int TONE_CDMA_ALERT_NETWORK_LITE = 86; // 0x56
-    field public static final int TONE_CDMA_ANSWER = 42; // 0x2a
-    field public static final int TONE_CDMA_CALLDROP_LITE = 95; // 0x5f
-    field public static final int TONE_CDMA_CALL_SIGNAL_ISDN_INTERGROUP = 46; // 0x2e
-    field public static final int TONE_CDMA_CALL_SIGNAL_ISDN_NORMAL = 45; // 0x2d
-    field public static final int TONE_CDMA_CALL_SIGNAL_ISDN_PAT3 = 48; // 0x30
-    field public static final int TONE_CDMA_CALL_SIGNAL_ISDN_PAT5 = 50; // 0x32
-    field public static final int TONE_CDMA_CALL_SIGNAL_ISDN_PAT6 = 51; // 0x33
-    field public static final int TONE_CDMA_CALL_SIGNAL_ISDN_PAT7 = 52; // 0x34
-    field public static final int TONE_CDMA_CALL_SIGNAL_ISDN_PING_RING = 49; // 0x31
-    field public static final int TONE_CDMA_CALL_SIGNAL_ISDN_SP_PRI = 47; // 0x2f
-    field public static final int TONE_CDMA_CONFIRM = 41; // 0x29
-    field public static final int TONE_CDMA_DIAL_TONE_LITE = 34; // 0x22
-    field public static final int TONE_CDMA_EMERGENCY_RINGBACK = 92; // 0x5c
-    field public static final int TONE_CDMA_HIGH_L = 53; // 0x35
-    field public static final int TONE_CDMA_HIGH_PBX_L = 71; // 0x47
-    field public static final int TONE_CDMA_HIGH_PBX_SLS = 80; // 0x50
-    field public static final int TONE_CDMA_HIGH_PBX_SS = 74; // 0x4a
-    field public static final int TONE_CDMA_HIGH_PBX_SSL = 77; // 0x4d
-    field public static final int TONE_CDMA_HIGH_PBX_S_X4 = 83; // 0x53
-    field public static final int TONE_CDMA_HIGH_SLS = 65; // 0x41
-    field public static final int TONE_CDMA_HIGH_SS = 56; // 0x38
-    field public static final int TONE_CDMA_HIGH_SSL = 59; // 0x3b
-    field public static final int TONE_CDMA_HIGH_SS_2 = 62; // 0x3e
-    field public static final int TONE_CDMA_HIGH_S_X4 = 68; // 0x44
-    field public static final int TONE_CDMA_INTERCEPT = 36; // 0x24
-    field public static final int TONE_CDMA_KEYPAD_VOLUME_KEY_LITE = 89; // 0x59
-    field public static final int TONE_CDMA_LOW_L = 55; // 0x37
-    field public static final int TONE_CDMA_LOW_PBX_L = 73; // 0x49
-    field public static final int TONE_CDMA_LOW_PBX_SLS = 82; // 0x52
-    field public static final int TONE_CDMA_LOW_PBX_SS = 76; // 0x4c
-    field public static final int TONE_CDMA_LOW_PBX_SSL = 79; // 0x4f
-    field public static final int TONE_CDMA_LOW_PBX_S_X4 = 85; // 0x55
-    field public static final int TONE_CDMA_LOW_SLS = 67; // 0x43
-    field public static final int TONE_CDMA_LOW_SS = 58; // 0x3a
-    field public static final int TONE_CDMA_LOW_SSL = 61; // 0x3d
-    field public static final int TONE_CDMA_LOW_SS_2 = 64; // 0x40
-    field public static final int TONE_CDMA_LOW_S_X4 = 70; // 0x46
-    field public static final int TONE_CDMA_MED_L = 54; // 0x36
-    field public static final int TONE_CDMA_MED_PBX_L = 72; // 0x48
-    field public static final int TONE_CDMA_MED_PBX_SLS = 81; // 0x51
-    field public static final int TONE_CDMA_MED_PBX_SS = 75; // 0x4b
-    field public static final int TONE_CDMA_MED_PBX_SSL = 78; // 0x4e
-    field public static final int TONE_CDMA_MED_PBX_S_X4 = 84; // 0x54
-    field public static final int TONE_CDMA_MED_SLS = 66; // 0x42
-    field public static final int TONE_CDMA_MED_SS = 57; // 0x39
-    field public static final int TONE_CDMA_MED_SSL = 60; // 0x3c
-    field public static final int TONE_CDMA_MED_SS_2 = 63; // 0x3f
-    field public static final int TONE_CDMA_MED_S_X4 = 69; // 0x45
-    field public static final int TONE_CDMA_NETWORK_BUSY = 40; // 0x28
-    field public static final int TONE_CDMA_NETWORK_BUSY_ONE_SHOT = 96; // 0x60
-    field public static final int TONE_CDMA_NETWORK_CALLWAITING = 43; // 0x2b
-    field public static final int TONE_CDMA_NETWORK_USA_RINGBACK = 35; // 0x23
-    field public static final int TONE_CDMA_ONE_MIN_BEEP = 88; // 0x58
-    field public static final int TONE_CDMA_PIP = 44; // 0x2c
-    field public static final int TONE_CDMA_PRESSHOLDKEY_LITE = 90; // 0x5a
-    field public static final int TONE_CDMA_REORDER = 38; // 0x26
-    field public static final int TONE_CDMA_SIGNAL_OFF = 98; // 0x62
-    field public static final int TONE_CDMA_SOFT_ERROR_LITE = 94; // 0x5e
-    field public static final int TONE_DTMF_0 = 0; // 0x0
-    field public static final int TONE_DTMF_1 = 1; // 0x1
-    field public static final int TONE_DTMF_2 = 2; // 0x2
-    field public static final int TONE_DTMF_3 = 3; // 0x3
-    field public static final int TONE_DTMF_4 = 4; // 0x4
-    field public static final int TONE_DTMF_5 = 5; // 0x5
-    field public static final int TONE_DTMF_6 = 6; // 0x6
-    field public static final int TONE_DTMF_7 = 7; // 0x7
-    field public static final int TONE_DTMF_8 = 8; // 0x8
-    field public static final int TONE_DTMF_9 = 9; // 0x9
-    field public static final int TONE_DTMF_A = 12; // 0xc
-    field public static final int TONE_DTMF_B = 13; // 0xd
-    field public static final int TONE_DTMF_C = 14; // 0xe
-    field public static final int TONE_DTMF_D = 15; // 0xf
-    field public static final int TONE_DTMF_P = 11; // 0xb
-    field public static final int TONE_DTMF_S = 10; // 0xa
-    field public static final int TONE_PROP_ACK = 25; // 0x19
-    field public static final int TONE_PROP_BEEP = 24; // 0x18
-    field public static final int TONE_PROP_BEEP2 = 28; // 0x1c
-    field public static final int TONE_PROP_NACK = 26; // 0x1a
-    field public static final int TONE_PROP_PROMPT = 27; // 0x1b
-    field public static final int TONE_SUP_BUSY = 17; // 0x11
-    field public static final int TONE_SUP_CALL_WAITING = 22; // 0x16
-    field public static final int TONE_SUP_CONFIRM = 32; // 0x20
-    field public static final int TONE_SUP_CONGESTION = 18; // 0x12
-    field public static final int TONE_SUP_CONGESTION_ABBREV = 31; // 0x1f
-    field public static final int TONE_SUP_DIAL = 16; // 0x10
-    field public static final int TONE_SUP_ERROR = 21; // 0x15
-    field public static final int TONE_SUP_INTERCEPT = 29; // 0x1d
-    field public static final int TONE_SUP_INTERCEPT_ABBREV = 30; // 0x1e
-    field public static final int TONE_SUP_PIP = 33; // 0x21
-    field public static final int TONE_SUP_RADIO_ACK = 19; // 0x13
-    field public static final int TONE_SUP_RADIO_NOTAVAIL = 20; // 0x14
-    field public static final int TONE_SUP_RINGTONE = 23; // 0x17
-  }
-
-  public final class UnsupportedSchemeException extends android.media.MediaDrmException {
-    ctor public UnsupportedSchemeException(String);
-  }
-
-  public interface VolumeAutomation {
-    method @NonNull public android.media.VolumeShaper createVolumeShaper(@NonNull android.media.VolumeShaper.Configuration);
-  }
-
-  public abstract class VolumeProvider {
-    ctor public VolumeProvider(int, int, int);
-    ctor public VolumeProvider(int, int, int, @Nullable String);
-    method public final int getCurrentVolume();
-    method public final int getMaxVolume();
-    method public final int getVolumeControl();
-    method @Nullable public final String getVolumeControlId();
-    method public void onAdjustVolume(int);
-    method public void onSetVolumeTo(int);
-    method public final void setCurrentVolume(int);
-    field public static final int VOLUME_CONTROL_ABSOLUTE = 2; // 0x2
-    field public static final int VOLUME_CONTROL_FIXED = 0; // 0x0
-    field public static final int VOLUME_CONTROL_RELATIVE = 1; // 0x1
-  }
-
-  public final class VolumeShaper implements java.lang.AutoCloseable {
-    method public void apply(@NonNull android.media.VolumeShaper.Operation);
-    method public void close();
-    method protected void finalize();
-    method public float getVolume();
-    method public void replace(@NonNull android.media.VolumeShaper.Configuration, @NonNull android.media.VolumeShaper.Operation, boolean);
-  }
-
-  public static final class VolumeShaper.Configuration implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getDuration();
-    method public int getInterpolatorType();
-    method public static int getMaximumCurvePoints();
-    method public float[] getTimes();
-    method public float[] getVolumes();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.VolumeShaper.Configuration> CREATOR;
-    field public static final android.media.VolumeShaper.Configuration CUBIC_RAMP;
-    field public static final int INTERPOLATOR_TYPE_CUBIC = 2; // 0x2
-    field public static final int INTERPOLATOR_TYPE_CUBIC_MONOTONIC = 3; // 0x3
-    field public static final int INTERPOLATOR_TYPE_LINEAR = 1; // 0x1
-    field public static final int INTERPOLATOR_TYPE_STEP = 0; // 0x0
-    field public static final android.media.VolumeShaper.Configuration LINEAR_RAMP;
-    field public static final android.media.VolumeShaper.Configuration SCURVE_RAMP;
-    field public static final android.media.VolumeShaper.Configuration SINE_RAMP;
-  }
-
-  public static final class VolumeShaper.Configuration.Builder {
-    ctor public VolumeShaper.Configuration.Builder();
-    ctor public VolumeShaper.Configuration.Builder(@NonNull android.media.VolumeShaper.Configuration);
-    method @NonNull public android.media.VolumeShaper.Configuration build();
-    method @NonNull public android.media.VolumeShaper.Configuration.Builder invertVolumes();
-    method @NonNull public android.media.VolumeShaper.Configuration.Builder reflectTimes();
-    method @NonNull public android.media.VolumeShaper.Configuration.Builder scaleToEndVolume(float);
-    method @NonNull public android.media.VolumeShaper.Configuration.Builder scaleToStartVolume(float);
-    method @NonNull public android.media.VolumeShaper.Configuration.Builder setCurve(@NonNull float[], @NonNull float[]);
-    method @NonNull public android.media.VolumeShaper.Configuration.Builder setDuration(long);
-    method @NonNull public android.media.VolumeShaper.Configuration.Builder setInterpolatorType(int);
-  }
-
-  public static final class VolumeShaper.Operation implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.VolumeShaper.Operation> CREATOR;
-    field public static final android.media.VolumeShaper.Operation PLAY;
-    field public static final android.media.VolumeShaper.Operation REVERSE;
-  }
-
-}
-
-package android.media.audiofx {
-
-  public class AcousticEchoCanceler extends android.media.audiofx.AudioEffect {
-    method public static android.media.audiofx.AcousticEchoCanceler create(int);
-    method public static boolean isAvailable();
-  }
-
-  public class AudioEffect {
-    method protected void finalize();
-    method public android.media.audiofx.AudioEffect.Descriptor getDescriptor() throws java.lang.IllegalStateException;
-    method public boolean getEnabled() throws java.lang.IllegalStateException;
-    method public int getId() throws java.lang.IllegalStateException;
-    method public boolean hasControl() throws java.lang.IllegalStateException;
-    method public static android.media.audiofx.AudioEffect.Descriptor[] queryEffects();
-    method public void release();
-    method public void setControlStatusListener(android.media.audiofx.AudioEffect.OnControlStatusChangeListener);
-    method public void setEnableStatusListener(android.media.audiofx.AudioEffect.OnEnableStatusChangeListener);
-    method public int setEnabled(boolean) throws java.lang.IllegalStateException;
-    field public static final String ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION = "android.media.action.CLOSE_AUDIO_EFFECT_CONTROL_SESSION";
-    field public static final String ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL = "android.media.action.DISPLAY_AUDIO_EFFECT_CONTROL_PANEL";
-    field public static final String ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION = "android.media.action.OPEN_AUDIO_EFFECT_CONTROL_SESSION";
-    field public static final int ALREADY_EXISTS = -2; // 0xfffffffe
-    field public static final int CONTENT_TYPE_GAME = 2; // 0x2
-    field public static final int CONTENT_TYPE_MOVIE = 1; // 0x1
-    field public static final int CONTENT_TYPE_MUSIC = 0; // 0x0
-    field public static final int CONTENT_TYPE_VOICE = 3; // 0x3
-    field public static final String EFFECT_AUXILIARY = "Auxiliary";
-    field public static final String EFFECT_INSERT = "Insert";
-    field public static final String EFFECT_POST_PROCESSING = "Post Processing";
-    field public static final String EFFECT_PRE_PROCESSING = "Pre Processing";
-    field public static final java.util.UUID EFFECT_TYPE_AEC;
-    field public static final java.util.UUID EFFECT_TYPE_AGC;
-    field public static final java.util.UUID EFFECT_TYPE_BASS_BOOST;
-    field public static final java.util.UUID EFFECT_TYPE_DYNAMICS_PROCESSING;
-    field public static final java.util.UUID EFFECT_TYPE_ENV_REVERB;
-    field public static final java.util.UUID EFFECT_TYPE_EQUALIZER;
-    field public static final java.util.UUID EFFECT_TYPE_LOUDNESS_ENHANCER;
-    field public static final java.util.UUID EFFECT_TYPE_NS;
-    field public static final java.util.UUID EFFECT_TYPE_PRESET_REVERB;
-    field public static final java.util.UUID EFFECT_TYPE_VIRTUALIZER;
-    field public static final int ERROR = -1; // 0xffffffff
-    field public static final int ERROR_BAD_VALUE = -4; // 0xfffffffc
-    field public static final int ERROR_DEAD_OBJECT = -7; // 0xfffffff9
-    field public static final int ERROR_INVALID_OPERATION = -5; // 0xfffffffb
-    field public static final int ERROR_NO_INIT = -3; // 0xfffffffd
-    field public static final int ERROR_NO_MEMORY = -6; // 0xfffffffa
-    field public static final String EXTRA_AUDIO_SESSION = "android.media.extra.AUDIO_SESSION";
-    field public static final String EXTRA_CONTENT_TYPE = "android.media.extra.CONTENT_TYPE";
-    field public static final String EXTRA_PACKAGE_NAME = "android.media.extra.PACKAGE_NAME";
-    field public static final int SUCCESS = 0; // 0x0
-  }
-
-  public static class AudioEffect.Descriptor {
-    ctor public AudioEffect.Descriptor();
-    ctor public AudioEffect.Descriptor(String, String, String, String, String);
-    field public String connectMode;
-    field public String implementor;
-    field public String name;
-    field public java.util.UUID type;
-    field public java.util.UUID uuid;
-  }
-
-  public static interface AudioEffect.OnControlStatusChangeListener {
-    method public void onControlStatusChange(android.media.audiofx.AudioEffect, boolean);
-  }
-
-  public static interface AudioEffect.OnEnableStatusChangeListener {
-    method public void onEnableStatusChange(android.media.audiofx.AudioEffect, boolean);
-  }
-
-  public class AutomaticGainControl extends android.media.audiofx.AudioEffect {
-    method public static android.media.audiofx.AutomaticGainControl create(int);
-    method public static boolean isAvailable();
-  }
-
-  public class BassBoost extends android.media.audiofx.AudioEffect {
-    ctor public BassBoost(int, int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.RuntimeException, java.lang.UnsupportedOperationException;
-    method public android.media.audiofx.BassBoost.Settings getProperties() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short getRoundedStrength() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public boolean getStrengthSupported();
-    method public void setParameterListener(android.media.audiofx.BassBoost.OnParameterChangeListener);
-    method public void setProperties(android.media.audiofx.BassBoost.Settings) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setStrength(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    field public static final int PARAM_STRENGTH = 1; // 0x1
-    field public static final int PARAM_STRENGTH_SUPPORTED = 0; // 0x0
-  }
-
-  public static interface BassBoost.OnParameterChangeListener {
-    method public void onParameterChange(android.media.audiofx.BassBoost, int, int, short);
-  }
-
-  public static class BassBoost.Settings {
-    ctor public BassBoost.Settings();
-    ctor public BassBoost.Settings(String);
-    field public short strength;
-  }
-
-  public final class DynamicsProcessing extends android.media.audiofx.AudioEffect {
-    ctor public DynamicsProcessing(int);
-    ctor public DynamicsProcessing(int, int, @Nullable android.media.audiofx.DynamicsProcessing.Config);
-    method public android.media.audiofx.DynamicsProcessing.Channel getChannelByChannelIndex(int);
-    method public int getChannelCount();
-    method public android.media.audiofx.DynamicsProcessing.Config getConfig();
-    method public float getInputGainByChannelIndex(int);
-    method public android.media.audiofx.DynamicsProcessing.Limiter getLimiterByChannelIndex(int);
-    method public android.media.audiofx.DynamicsProcessing.MbcBand getMbcBandByChannelIndex(int, int);
-    method public android.media.audiofx.DynamicsProcessing.Mbc getMbcByChannelIndex(int);
-    method public android.media.audiofx.DynamicsProcessing.EqBand getPostEqBandByChannelIndex(int, int);
-    method public android.media.audiofx.DynamicsProcessing.Eq getPostEqByChannelIndex(int);
-    method public android.media.audiofx.DynamicsProcessing.EqBand getPreEqBandByChannelIndex(int, int);
-    method public android.media.audiofx.DynamicsProcessing.Eq getPreEqByChannelIndex(int);
-    method public void setAllChannelsTo(android.media.audiofx.DynamicsProcessing.Channel);
-    method public void setChannelTo(int, android.media.audiofx.DynamicsProcessing.Channel);
-    method public void setInputGainAllChannelsTo(float);
-    method public void setInputGainbyChannel(int, float);
-    method public void setLimiterAllChannelsTo(android.media.audiofx.DynamicsProcessing.Limiter);
-    method public void setLimiterByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Limiter);
-    method public void setMbcAllChannelsTo(android.media.audiofx.DynamicsProcessing.Mbc);
-    method public void setMbcBandAllChannelsTo(int, android.media.audiofx.DynamicsProcessing.MbcBand);
-    method public void setMbcBandByChannelIndex(int, int, android.media.audiofx.DynamicsProcessing.MbcBand);
-    method public void setMbcByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Mbc);
-    method public void setPostEqAllChannelsTo(android.media.audiofx.DynamicsProcessing.Eq);
-    method public void setPostEqBandAllChannelsTo(int, android.media.audiofx.DynamicsProcessing.EqBand);
-    method public void setPostEqBandByChannelIndex(int, int, android.media.audiofx.DynamicsProcessing.EqBand);
-    method public void setPostEqByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Eq);
-    method public void setPreEqAllChannelsTo(android.media.audiofx.DynamicsProcessing.Eq);
-    method public void setPreEqBandAllChannelsTo(int, android.media.audiofx.DynamicsProcessing.EqBand);
-    method public void setPreEqBandByChannelIndex(int, int, android.media.audiofx.DynamicsProcessing.EqBand);
-    method public void setPreEqByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Eq);
-    field public static final int VARIANT_FAVOR_FREQUENCY_RESOLUTION = 0; // 0x0
-    field public static final int VARIANT_FAVOR_TIME_RESOLUTION = 1; // 0x1
-  }
-
-  public static class DynamicsProcessing.BandBase {
-    ctor public DynamicsProcessing.BandBase(boolean, float);
-    method public float getCutoffFrequency();
-    method public boolean isEnabled();
-    method public void setCutoffFrequency(float);
-    method public void setEnabled(boolean);
-  }
-
-  public static class DynamicsProcessing.BandStage extends android.media.audiofx.DynamicsProcessing.Stage {
-    ctor public DynamicsProcessing.BandStage(boolean, boolean, int);
-    method public int getBandCount();
-  }
-
-  public static final class DynamicsProcessing.Channel {
-    ctor public DynamicsProcessing.Channel(float, boolean, int, boolean, int, boolean, int, boolean);
-    ctor public DynamicsProcessing.Channel(android.media.audiofx.DynamicsProcessing.Channel);
-    method public float getInputGain();
-    method public android.media.audiofx.DynamicsProcessing.Limiter getLimiter();
-    method public android.media.audiofx.DynamicsProcessing.Mbc getMbc();
-    method public android.media.audiofx.DynamicsProcessing.MbcBand getMbcBand(int);
-    method public android.media.audiofx.DynamicsProcessing.Eq getPostEq();
-    method public android.media.audiofx.DynamicsProcessing.EqBand getPostEqBand(int);
-    method public android.media.audiofx.DynamicsProcessing.Eq getPreEq();
-    method public android.media.audiofx.DynamicsProcessing.EqBand getPreEqBand(int);
-    method public void setInputGain(float);
-    method public void setLimiter(android.media.audiofx.DynamicsProcessing.Limiter);
-    method public void setMbc(android.media.audiofx.DynamicsProcessing.Mbc);
-    method public void setMbcBand(int, android.media.audiofx.DynamicsProcessing.MbcBand);
-    method public void setPostEq(android.media.audiofx.DynamicsProcessing.Eq);
-    method public void setPostEqBand(int, android.media.audiofx.DynamicsProcessing.EqBand);
-    method public void setPreEq(android.media.audiofx.DynamicsProcessing.Eq);
-    method public void setPreEqBand(int, android.media.audiofx.DynamicsProcessing.EqBand);
-  }
-
-  public static final class DynamicsProcessing.Config {
-    method public android.media.audiofx.DynamicsProcessing.Channel getChannelByChannelIndex(int);
-    method public float getInputGainByChannelIndex(int);
-    method public android.media.audiofx.DynamicsProcessing.Limiter getLimiterByChannelIndex(int);
-    method public android.media.audiofx.DynamicsProcessing.MbcBand getMbcBandByChannelIndex(int, int);
-    method public int getMbcBandCount();
-    method public android.media.audiofx.DynamicsProcessing.Mbc getMbcByChannelIndex(int);
-    method public android.media.audiofx.DynamicsProcessing.EqBand getPostEqBandByChannelIndex(int, int);
-    method public int getPostEqBandCount();
-    method public android.media.audiofx.DynamicsProcessing.Eq getPostEqByChannelIndex(int);
-    method public android.media.audiofx.DynamicsProcessing.EqBand getPreEqBandByChannelIndex(int, int);
-    method public int getPreEqBandCount();
-    method public android.media.audiofx.DynamicsProcessing.Eq getPreEqByChannelIndex(int);
-    method public float getPreferredFrameDuration();
-    method public int getVariant();
-    method public boolean isLimiterInUse();
-    method public boolean isMbcInUse();
-    method public boolean isPostEqInUse();
-    method public boolean isPreEqInUse();
-    method public void setAllChannelsTo(android.media.audiofx.DynamicsProcessing.Channel);
-    method public void setChannelTo(int, android.media.audiofx.DynamicsProcessing.Channel);
-    method public void setInputGainAllChannelsTo(float);
-    method public void setInputGainByChannelIndex(int, float);
-    method public void setLimiterAllChannelsTo(android.media.audiofx.DynamicsProcessing.Limiter);
-    method public void setLimiterByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Limiter);
-    method public void setMbcAllChannelsTo(android.media.audiofx.DynamicsProcessing.Mbc);
-    method public void setMbcBandAllChannelsTo(int, android.media.audiofx.DynamicsProcessing.MbcBand);
-    method public void setMbcBandByChannelIndex(int, int, android.media.audiofx.DynamicsProcessing.MbcBand);
-    method public void setMbcByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Mbc);
-    method public void setPostEqAllChannelsTo(android.media.audiofx.DynamicsProcessing.Eq);
-    method public void setPostEqBandAllChannelsTo(int, android.media.audiofx.DynamicsProcessing.EqBand);
-    method public void setPostEqBandByChannelIndex(int, int, android.media.audiofx.DynamicsProcessing.EqBand);
-    method public void setPostEqByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Eq);
-    method public void setPreEqAllChannelsTo(android.media.audiofx.DynamicsProcessing.Eq);
-    method public void setPreEqBandAllChannelsTo(int, android.media.audiofx.DynamicsProcessing.EqBand);
-    method public void setPreEqBandByChannelIndex(int, int, android.media.audiofx.DynamicsProcessing.EqBand);
-    method public void setPreEqByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Eq);
-  }
-
-  public static final class DynamicsProcessing.Config.Builder {
-    ctor public DynamicsProcessing.Config.Builder(int, int, boolean, int, boolean, int, boolean, int, boolean);
-    method public android.media.audiofx.DynamicsProcessing.Config build();
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setAllChannelsTo(android.media.audiofx.DynamicsProcessing.Channel);
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setChannelTo(int, android.media.audiofx.DynamicsProcessing.Channel);
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setInputGainAllChannelsTo(float);
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setInputGainByChannelIndex(int, float);
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setLimiterAllChannelsTo(android.media.audiofx.DynamicsProcessing.Limiter);
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setLimiterByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Limiter);
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setMbcAllChannelsTo(android.media.audiofx.DynamicsProcessing.Mbc);
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setMbcByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Mbc);
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setPostEqAllChannelsTo(android.media.audiofx.DynamicsProcessing.Eq);
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setPostEqByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Eq);
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setPreEqAllChannelsTo(android.media.audiofx.DynamicsProcessing.Eq);
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setPreEqByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Eq);
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setPreferredFrameDuration(float);
-  }
-
-  public static final class DynamicsProcessing.Eq extends android.media.audiofx.DynamicsProcessing.BandStage {
-    ctor public DynamicsProcessing.Eq(boolean, boolean, int);
-    ctor public DynamicsProcessing.Eq(android.media.audiofx.DynamicsProcessing.Eq);
-    method public android.media.audiofx.DynamicsProcessing.EqBand getBand(int);
-    method public void setBand(int, android.media.audiofx.DynamicsProcessing.EqBand);
-  }
-
-  public static final class DynamicsProcessing.EqBand extends android.media.audiofx.DynamicsProcessing.BandBase {
-    ctor public DynamicsProcessing.EqBand(boolean, float, float);
-    ctor public DynamicsProcessing.EqBand(android.media.audiofx.DynamicsProcessing.EqBand);
-    method public float getGain();
-    method public void setGain(float);
-  }
-
-  public static final class DynamicsProcessing.Limiter extends android.media.audiofx.DynamicsProcessing.Stage {
-    ctor public DynamicsProcessing.Limiter(boolean, boolean, int, float, float, float, float, float);
-    ctor public DynamicsProcessing.Limiter(android.media.audiofx.DynamicsProcessing.Limiter);
-    method public float getAttackTime();
-    method public int getLinkGroup();
-    method public float getPostGain();
-    method public float getRatio();
-    method public float getReleaseTime();
-    method public float getThreshold();
-    method public void setAttackTime(float);
-    method public void setLinkGroup(int);
-    method public void setPostGain(float);
-    method public void setRatio(float);
-    method public void setReleaseTime(float);
-    method public void setThreshold(float);
-  }
-
-  public static final class DynamicsProcessing.Mbc extends android.media.audiofx.DynamicsProcessing.BandStage {
-    ctor public DynamicsProcessing.Mbc(boolean, boolean, int);
-    ctor public DynamicsProcessing.Mbc(android.media.audiofx.DynamicsProcessing.Mbc);
-    method public android.media.audiofx.DynamicsProcessing.MbcBand getBand(int);
-    method public void setBand(int, android.media.audiofx.DynamicsProcessing.MbcBand);
-  }
-
-  public static final class DynamicsProcessing.MbcBand extends android.media.audiofx.DynamicsProcessing.BandBase {
-    ctor public DynamicsProcessing.MbcBand(boolean, float, float, float, float, float, float, float, float, float, float);
-    ctor public DynamicsProcessing.MbcBand(android.media.audiofx.DynamicsProcessing.MbcBand);
-    method public float getAttackTime();
-    method public float getExpanderRatio();
-    method public float getKneeWidth();
-    method public float getNoiseGateThreshold();
-    method public float getPostGain();
-    method public float getPreGain();
-    method public float getRatio();
-    method public float getReleaseTime();
-    method public float getThreshold();
-    method public void setAttackTime(float);
-    method public void setExpanderRatio(float);
-    method public void setKneeWidth(float);
-    method public void setNoiseGateThreshold(float);
-    method public void setPostGain(float);
-    method public void setPreGain(float);
-    method public void setRatio(float);
-    method public void setReleaseTime(float);
-    method public void setThreshold(float);
-  }
-
-  public static class DynamicsProcessing.Stage {
-    ctor public DynamicsProcessing.Stage(boolean, boolean);
-    method public boolean isEnabled();
-    method public boolean isInUse();
-    method public void setEnabled(boolean);
-  }
-
-  public class EnvironmentalReverb extends android.media.audiofx.AudioEffect {
-    ctor public EnvironmentalReverb(int, int) throws java.lang.IllegalArgumentException, java.lang.RuntimeException, java.lang.UnsupportedOperationException;
-    method public short getDecayHFRatio() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public int getDecayTime() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short getDensity() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short getDiffusion() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public android.media.audiofx.EnvironmentalReverb.Settings getProperties() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public int getReflectionsDelay() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short getReflectionsLevel() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public int getReverbDelay() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short getReverbLevel() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short getRoomHFLevel() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short getRoomLevel() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setDecayHFRatio(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setDecayTime(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setDensity(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setDiffusion(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setParameterListener(android.media.audiofx.EnvironmentalReverb.OnParameterChangeListener);
-    method public void setProperties(android.media.audiofx.EnvironmentalReverb.Settings) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setReflectionsDelay(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setReflectionsLevel(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setReverbDelay(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setReverbLevel(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setRoomHFLevel(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setRoomLevel(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    field public static final int PARAM_DECAY_HF_RATIO = 3; // 0x3
-    field public static final int PARAM_DECAY_TIME = 2; // 0x2
-    field public static final int PARAM_DENSITY = 9; // 0x9
-    field public static final int PARAM_DIFFUSION = 8; // 0x8
-    field public static final int PARAM_REFLECTIONS_DELAY = 5; // 0x5
-    field public static final int PARAM_REFLECTIONS_LEVEL = 4; // 0x4
-    field public static final int PARAM_REVERB_DELAY = 7; // 0x7
-    field public static final int PARAM_REVERB_LEVEL = 6; // 0x6
-    field public static final int PARAM_ROOM_HF_LEVEL = 1; // 0x1
-    field public static final int PARAM_ROOM_LEVEL = 0; // 0x0
-  }
-
-  public static interface EnvironmentalReverb.OnParameterChangeListener {
-    method public void onParameterChange(android.media.audiofx.EnvironmentalReverb, int, int, int);
-  }
-
-  public static class EnvironmentalReverb.Settings {
-    ctor public EnvironmentalReverb.Settings();
-    ctor public EnvironmentalReverb.Settings(String);
-    field public short decayHFRatio;
-    field public int decayTime;
-    field public short density;
-    field public short diffusion;
-    field public int reflectionsDelay;
-    field public short reflectionsLevel;
-    field public int reverbDelay;
-    field public short reverbLevel;
-    field public short roomHFLevel;
-    field public short roomLevel;
-  }
-
-  public class Equalizer extends android.media.audiofx.AudioEffect {
-    ctor public Equalizer(int, int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.RuntimeException, java.lang.UnsupportedOperationException;
-    method public short getBand(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public int[] getBandFreqRange(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short getBandLevel(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short[] getBandLevelRange() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public int getCenterFreq(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short getCurrentPreset() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short getNumberOfBands() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short getNumberOfPresets() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public String getPresetName(short);
-    method public android.media.audiofx.Equalizer.Settings getProperties() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setBandLevel(short, short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setParameterListener(android.media.audiofx.Equalizer.OnParameterChangeListener);
-    method public void setProperties(android.media.audiofx.Equalizer.Settings) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void usePreset(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    field public static final int PARAM_BAND_FREQ_RANGE = 4; // 0x4
-    field public static final int PARAM_BAND_LEVEL = 2; // 0x2
-    field public static final int PARAM_CENTER_FREQ = 3; // 0x3
-    field public static final int PARAM_CURRENT_PRESET = 6; // 0x6
-    field public static final int PARAM_GET_BAND = 5; // 0x5
-    field public static final int PARAM_GET_NUM_OF_PRESETS = 7; // 0x7
-    field public static final int PARAM_GET_PRESET_NAME = 8; // 0x8
-    field public static final int PARAM_LEVEL_RANGE = 1; // 0x1
-    field public static final int PARAM_NUM_BANDS = 0; // 0x0
-    field public static final int PARAM_STRING_SIZE_MAX = 32; // 0x20
-  }
-
-  public static interface Equalizer.OnParameterChangeListener {
-    method public void onParameterChange(android.media.audiofx.Equalizer, int, int, int, int);
-  }
-
-  public static class Equalizer.Settings {
-    ctor public Equalizer.Settings();
-    ctor public Equalizer.Settings(String);
-    field public short[] bandLevels;
-    field public short curPreset;
-    field public short numBands;
-  }
-
-  public class LoudnessEnhancer extends android.media.audiofx.AudioEffect {
-    ctor public LoudnessEnhancer(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.RuntimeException, java.lang.UnsupportedOperationException;
-    method public float getTargetGain() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setTargetGain(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    field public static final int PARAM_TARGET_GAIN_MB = 0; // 0x0
-  }
-
-  public class NoiseSuppressor extends android.media.audiofx.AudioEffect {
-    method public static android.media.audiofx.NoiseSuppressor create(int);
-    method public static boolean isAvailable();
-  }
-
-  public class PresetReverb extends android.media.audiofx.AudioEffect {
-    ctor public PresetReverb(int, int) throws java.lang.IllegalArgumentException, java.lang.RuntimeException, java.lang.UnsupportedOperationException;
-    method public short getPreset() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public android.media.audiofx.PresetReverb.Settings getProperties() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setParameterListener(android.media.audiofx.PresetReverb.OnParameterChangeListener);
-    method public void setPreset(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setProperties(android.media.audiofx.PresetReverb.Settings) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    field public static final int PARAM_PRESET = 0; // 0x0
-    field public static final short PRESET_LARGEHALL = 5; // 0x5
-    field public static final short PRESET_LARGEROOM = 3; // 0x3
-    field public static final short PRESET_MEDIUMHALL = 4; // 0x4
-    field public static final short PRESET_MEDIUMROOM = 2; // 0x2
-    field public static final short PRESET_NONE = 0; // 0x0
-    field public static final short PRESET_PLATE = 6; // 0x6
-    field public static final short PRESET_SMALLROOM = 1; // 0x1
-  }
-
-  public static interface PresetReverb.OnParameterChangeListener {
-    method public void onParameterChange(android.media.audiofx.PresetReverb, int, int, short);
-  }
-
-  public static class PresetReverb.Settings {
-    ctor public PresetReverb.Settings();
-    ctor public PresetReverb.Settings(String);
-    field public short preset;
-  }
-
-  public class Virtualizer extends android.media.audiofx.AudioEffect {
-    ctor public Virtualizer(int, int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.RuntimeException, java.lang.UnsupportedOperationException;
-    method public boolean canVirtualize(int, int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public boolean forceVirtualizationMode(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public android.media.audiofx.Virtualizer.Settings getProperties() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short getRoundedStrength() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public boolean getSpeakerAngles(int, int, int[]) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public boolean getStrengthSupported();
-    method public int getVirtualizationMode() throws java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setParameterListener(android.media.audiofx.Virtualizer.OnParameterChangeListener);
-    method public void setProperties(android.media.audiofx.Virtualizer.Settings) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setStrength(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    field public static final int PARAM_STRENGTH = 1; // 0x1
-    field public static final int PARAM_STRENGTH_SUPPORTED = 0; // 0x0
-    field public static final int VIRTUALIZATION_MODE_AUTO = 1; // 0x1
-    field public static final int VIRTUALIZATION_MODE_BINAURAL = 2; // 0x2
-    field public static final int VIRTUALIZATION_MODE_OFF = 0; // 0x0
-    field public static final int VIRTUALIZATION_MODE_TRANSAURAL = 3; // 0x3
-  }
-
-  public static interface Virtualizer.OnParameterChangeListener {
-    method public void onParameterChange(android.media.audiofx.Virtualizer, int, int, short);
-  }
-
-  public static class Virtualizer.Settings {
-    ctor public Virtualizer.Settings();
-    ctor public Virtualizer.Settings(String);
-    field public short strength;
-  }
-
-  public class Visualizer {
-    ctor public Visualizer(int) throws java.lang.RuntimeException, java.lang.UnsupportedOperationException;
-    method protected void finalize();
-    method public int getCaptureSize() throws java.lang.IllegalStateException;
-    method public static int[] getCaptureSizeRange();
-    method public boolean getEnabled();
-    method public int getFft(byte[]) throws java.lang.IllegalStateException;
-    method public static int getMaxCaptureRate();
-    method public int getMeasurementMode() throws java.lang.IllegalStateException;
-    method public int getMeasurementPeakRms(android.media.audiofx.Visualizer.MeasurementPeakRms);
-    method public int getSamplingRate() throws java.lang.IllegalStateException;
-    method public int getScalingMode() throws java.lang.IllegalStateException;
-    method public int getWaveForm(byte[]) throws java.lang.IllegalStateException;
-    method public void release();
-    method public int setCaptureSize(int) throws java.lang.IllegalStateException;
-    method public int setDataCaptureListener(android.media.audiofx.Visualizer.OnDataCaptureListener, int, boolean, boolean);
-    method public int setEnabled(boolean) throws java.lang.IllegalStateException;
-    method public int setMeasurementMode(int) throws java.lang.IllegalStateException;
-    method public int setScalingMode(int) throws java.lang.IllegalStateException;
-    field public static final int ALREADY_EXISTS = -2; // 0xfffffffe
-    field public static final int ERROR = -1; // 0xffffffff
-    field public static final int ERROR_BAD_VALUE = -4; // 0xfffffffc
-    field public static final int ERROR_DEAD_OBJECT = -7; // 0xfffffff9
-    field public static final int ERROR_INVALID_OPERATION = -5; // 0xfffffffb
-    field public static final int ERROR_NO_INIT = -3; // 0xfffffffd
-    field public static final int ERROR_NO_MEMORY = -6; // 0xfffffffa
-    field public static final int MEASUREMENT_MODE_NONE = 0; // 0x0
-    field public static final int MEASUREMENT_MODE_PEAK_RMS = 1; // 0x1
-    field public static final int SCALING_MODE_AS_PLAYED = 1; // 0x1
-    field public static final int SCALING_MODE_NORMALIZED = 0; // 0x0
-    field public static final int STATE_ENABLED = 2; // 0x2
-    field public static final int STATE_INITIALIZED = 1; // 0x1
-    field public static final int STATE_UNINITIALIZED = 0; // 0x0
-    field public static final int SUCCESS = 0; // 0x0
-  }
-
-  public static final class Visualizer.MeasurementPeakRms {
-    ctor public Visualizer.MeasurementPeakRms();
-    field public int mPeak;
-    field public int mRms;
-  }
-
-  public static interface Visualizer.OnDataCaptureListener {
-    method public void onFftDataCapture(android.media.audiofx.Visualizer, byte[], int);
-    method public void onWaveFormDataCapture(android.media.audiofx.Visualizer, byte[], int);
-  }
-
-}
-
-package android.media.browse {
-
-  public final class MediaBrowser {
-    ctor public MediaBrowser(android.content.Context, android.content.ComponentName, android.media.browse.MediaBrowser.ConnectionCallback, android.os.Bundle);
-    method public void connect();
-    method public void disconnect();
-    method @Nullable public android.os.Bundle getExtras();
-    method public void getItem(@NonNull String, @NonNull android.media.browse.MediaBrowser.ItemCallback);
-    method @NonNull public String getRoot();
-    method @NonNull public android.content.ComponentName getServiceComponent();
-    method @NonNull public android.media.session.MediaSession.Token getSessionToken();
-    method public boolean isConnected();
-    method public void subscribe(@NonNull String, @NonNull android.media.browse.MediaBrowser.SubscriptionCallback);
-    method public void subscribe(@NonNull String, @NonNull android.os.Bundle, @NonNull android.media.browse.MediaBrowser.SubscriptionCallback);
-    method public void unsubscribe(@NonNull String);
-    method public void unsubscribe(@NonNull String, @NonNull android.media.browse.MediaBrowser.SubscriptionCallback);
-    field public static final String EXTRA_PAGE = "android.media.browse.extra.PAGE";
-    field public static final String EXTRA_PAGE_SIZE = "android.media.browse.extra.PAGE_SIZE";
-  }
-
-  public static class MediaBrowser.ConnectionCallback {
-    ctor public MediaBrowser.ConnectionCallback();
-    method public void onConnected();
-    method public void onConnectionFailed();
-    method public void onConnectionSuspended();
-  }
-
-  public abstract static class MediaBrowser.ItemCallback {
-    ctor public MediaBrowser.ItemCallback();
-    method public void onError(@NonNull String);
-    method public void onItemLoaded(android.media.browse.MediaBrowser.MediaItem);
-  }
-
-  public static class MediaBrowser.MediaItem implements android.os.Parcelable {
-    ctor public MediaBrowser.MediaItem(@NonNull android.media.MediaDescription, int);
-    method public int describeContents();
-    method @NonNull public android.media.MediaDescription getDescription();
-    method public int getFlags();
-    method @Nullable public String getMediaId();
-    method public boolean isBrowsable();
-    method public boolean isPlayable();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.browse.MediaBrowser.MediaItem> CREATOR;
-    field public static final int FLAG_BROWSABLE = 1; // 0x1
-    field public static final int FLAG_PLAYABLE = 2; // 0x2
-  }
-
-  public abstract static class MediaBrowser.SubscriptionCallback {
-    ctor public MediaBrowser.SubscriptionCallback();
-    method public void onChildrenLoaded(@NonNull String, @NonNull java.util.List<android.media.browse.MediaBrowser.MediaItem>);
-    method public void onChildrenLoaded(@NonNull String, @NonNull java.util.List<android.media.browse.MediaBrowser.MediaItem>, @NonNull android.os.Bundle);
-    method public void onError(@NonNull String);
-    method public void onError(@NonNull String, @NonNull android.os.Bundle);
-  }
-
-}
-
-package android.media.effect {
-
-  public abstract class Effect {
-    ctor public Effect();
-    method public abstract void apply(int, int, int, int);
-    method public abstract String getName();
-    method public abstract void release();
-    method public abstract void setParameter(String, Object);
-    method public void setUpdateListener(android.media.effect.EffectUpdateListener);
-  }
-
-  public class EffectContext {
-    method public static android.media.effect.EffectContext createWithCurrentGlContext();
-    method public android.media.effect.EffectFactory getFactory();
-    method public void release();
-  }
-
-  public class EffectFactory {
-    method public android.media.effect.Effect createEffect(String);
-    method public static boolean isEffectSupported(String);
-    field public static final String EFFECT_AUTOFIX = "android.media.effect.effects.AutoFixEffect";
-    field public static final String EFFECT_BACKDROPPER = "android.media.effect.effects.BackDropperEffect";
-    field public static final String EFFECT_BITMAPOVERLAY = "android.media.effect.effects.BitmapOverlayEffect";
-    field public static final String EFFECT_BLACKWHITE = "android.media.effect.effects.BlackWhiteEffect";
-    field public static final String EFFECT_BRIGHTNESS = "android.media.effect.effects.BrightnessEffect";
-    field public static final String EFFECT_CONTRAST = "android.media.effect.effects.ContrastEffect";
-    field public static final String EFFECT_CROP = "android.media.effect.effects.CropEffect";
-    field public static final String EFFECT_CROSSPROCESS = "android.media.effect.effects.CrossProcessEffect";
-    field public static final String EFFECT_DOCUMENTARY = "android.media.effect.effects.DocumentaryEffect";
-    field public static final String EFFECT_DUOTONE = "android.media.effect.effects.DuotoneEffect";
-    field public static final String EFFECT_FILLLIGHT = "android.media.effect.effects.FillLightEffect";
-    field public static final String EFFECT_FISHEYE = "android.media.effect.effects.FisheyeEffect";
-    field public static final String EFFECT_FLIP = "android.media.effect.effects.FlipEffect";
-    field public static final String EFFECT_GRAIN = "android.media.effect.effects.GrainEffect";
-    field public static final String EFFECT_GRAYSCALE = "android.media.effect.effects.GrayscaleEffect";
-    field public static final String EFFECT_LOMOISH = "android.media.effect.effects.LomoishEffect";
-    field public static final String EFFECT_NEGATIVE = "android.media.effect.effects.NegativeEffect";
-    field public static final String EFFECT_POSTERIZE = "android.media.effect.effects.PosterizeEffect";
-    field public static final String EFFECT_REDEYE = "android.media.effect.effects.RedEyeEffect";
-    field public static final String EFFECT_ROTATE = "android.media.effect.effects.RotateEffect";
-    field public static final String EFFECT_SATURATE = "android.media.effect.effects.SaturateEffect";
-    field public static final String EFFECT_SEPIA = "android.media.effect.effects.SepiaEffect";
-    field public static final String EFFECT_SHARPEN = "android.media.effect.effects.SharpenEffect";
-    field public static final String EFFECT_STRAIGHTEN = "android.media.effect.effects.StraightenEffect";
-    field public static final String EFFECT_TEMPERATURE = "android.media.effect.effects.ColorTemperatureEffect";
-    field public static final String EFFECT_TINT = "android.media.effect.effects.TintEffect";
-    field public static final String EFFECT_VIGNETTE = "android.media.effect.effects.VignetteEffect";
-  }
-
-  public interface EffectUpdateListener {
-    method public void onEffectUpdated(android.media.effect.Effect, Object);
-  }
-
-}
-
-package android.media.midi {
-
-  public final class MidiDevice implements java.io.Closeable {
-    method public void close() throws java.io.IOException;
-    method public android.media.midi.MidiDevice.MidiConnection connectPorts(android.media.midi.MidiInputPort, int);
-    method public android.media.midi.MidiDeviceInfo getInfo();
-    method public android.media.midi.MidiInputPort openInputPort(int);
-    method public android.media.midi.MidiOutputPort openOutputPort(int);
-  }
-
-  public class MidiDevice.MidiConnection implements java.io.Closeable {
-    method public void close() throws java.io.IOException;
-  }
-
-  public final class MidiDeviceInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getId();
-    method public int getInputPortCount();
-    method public int getOutputPortCount();
-    method public android.media.midi.MidiDeviceInfo.PortInfo[] getPorts();
-    method public android.os.Bundle getProperties();
-    method public int getType();
-    method public boolean isPrivate();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.midi.MidiDeviceInfo> CREATOR;
-    field public static final String PROPERTY_BLUETOOTH_DEVICE = "bluetooth_device";
-    field public static final String PROPERTY_MANUFACTURER = "manufacturer";
-    field public static final String PROPERTY_NAME = "name";
-    field public static final String PROPERTY_PRODUCT = "product";
-    field public static final String PROPERTY_SERIAL_NUMBER = "serial_number";
-    field public static final String PROPERTY_USB_DEVICE = "usb_device";
-    field public static final String PROPERTY_VERSION = "version";
-    field public static final int TYPE_BLUETOOTH = 3; // 0x3
-    field public static final int TYPE_USB = 1; // 0x1
-    field public static final int TYPE_VIRTUAL = 2; // 0x2
-  }
-
-  public static final class MidiDeviceInfo.PortInfo {
-    method public String getName();
-    method public int getPortNumber();
-    method public int getType();
-    field public static final int TYPE_INPUT = 1; // 0x1
-    field public static final int TYPE_OUTPUT = 2; // 0x2
-  }
-
-  public abstract class MidiDeviceService extends android.app.Service {
-    ctor public MidiDeviceService();
-    method public final android.media.midi.MidiDeviceInfo getDeviceInfo();
-    method public final android.media.midi.MidiReceiver[] getOutputPortReceivers();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public void onClose();
-    method public void onDeviceStatusChanged(android.media.midi.MidiDeviceStatus);
-    method public abstract android.media.midi.MidiReceiver[] onGetInputPortReceivers();
-    field public static final String SERVICE_INTERFACE = "android.media.midi.MidiDeviceService";
-  }
-
-  public final class MidiDeviceStatus implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.media.midi.MidiDeviceInfo getDeviceInfo();
-    method public int getOutputPortOpenCount(int);
-    method public boolean isInputPortOpen(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.midi.MidiDeviceStatus> CREATOR;
-  }
-
-  public final class MidiInputPort extends android.media.midi.MidiReceiver implements java.io.Closeable {
-    method public void close() throws java.io.IOException;
-    method public int getPortNumber();
-    method public void onSend(byte[], int, int, long) throws java.io.IOException;
-  }
-
-  public final class MidiManager {
-    method public android.media.midi.MidiDeviceInfo[] getDevices();
-    method public void openBluetoothDevice(android.bluetooth.BluetoothDevice, android.media.midi.MidiManager.OnDeviceOpenedListener, android.os.Handler);
-    method public void openDevice(android.media.midi.MidiDeviceInfo, android.media.midi.MidiManager.OnDeviceOpenedListener, android.os.Handler);
-    method public void registerDeviceCallback(android.media.midi.MidiManager.DeviceCallback, android.os.Handler);
-    method public void unregisterDeviceCallback(android.media.midi.MidiManager.DeviceCallback);
-  }
-
-  public static class MidiManager.DeviceCallback {
-    ctor public MidiManager.DeviceCallback();
-    method public void onDeviceAdded(android.media.midi.MidiDeviceInfo);
-    method public void onDeviceRemoved(android.media.midi.MidiDeviceInfo);
-    method public void onDeviceStatusChanged(android.media.midi.MidiDeviceStatus);
-  }
-
-  public static interface MidiManager.OnDeviceOpenedListener {
-    method public void onDeviceOpened(android.media.midi.MidiDevice);
-  }
-
-  public final class MidiOutputPort extends android.media.midi.MidiSender implements java.io.Closeable {
-    method public void close() throws java.io.IOException;
-    method public int getPortNumber();
-    method public void onConnect(android.media.midi.MidiReceiver);
-    method public void onDisconnect(android.media.midi.MidiReceiver);
-  }
-
-  public abstract class MidiReceiver {
-    ctor public MidiReceiver();
-    ctor public MidiReceiver(int);
-    method public void flush() throws java.io.IOException;
-    method public final int getMaxMessageSize();
-    method public void onFlush() throws java.io.IOException;
-    method public abstract void onSend(byte[], int, int, long) throws java.io.IOException;
-    method public void send(byte[], int, int) throws java.io.IOException;
-    method public void send(byte[], int, int, long) throws java.io.IOException;
-  }
-
-  public abstract class MidiSender {
-    ctor public MidiSender();
-    method public void connect(android.media.midi.MidiReceiver);
-    method public void disconnect(android.media.midi.MidiReceiver);
-    method public abstract void onConnect(android.media.midi.MidiReceiver);
-    method public abstract void onDisconnect(android.media.midi.MidiReceiver);
-  }
-
-}
-
-package android.media.projection {
-
-  public final class MediaProjection {
-    method public android.hardware.display.VirtualDisplay createVirtualDisplay(@NonNull String, int, int, int, int, @Nullable android.view.Surface, @Nullable android.hardware.display.VirtualDisplay.Callback, @Nullable android.os.Handler);
-    method public void registerCallback(android.media.projection.MediaProjection.Callback, android.os.Handler);
-    method public void stop();
-    method public void unregisterCallback(android.media.projection.MediaProjection.Callback);
-  }
-
-  public abstract static class MediaProjection.Callback {
-    ctor public MediaProjection.Callback();
-    method public void onStop();
-  }
-
-  public final class MediaProjectionManager {
-    method public android.content.Intent createScreenCaptureIntent();
-    method public android.media.projection.MediaProjection getMediaProjection(int, @NonNull android.content.Intent);
-  }
-
-}
-
-package android.media.session {
-
-  public final class MediaController {
-    ctor public MediaController(@NonNull android.content.Context, @NonNull android.media.session.MediaSession.Token);
-    method public void adjustVolume(int, int);
-    method public boolean dispatchMediaButtonEvent(@NonNull android.view.KeyEvent);
-    method @Nullable public android.os.Bundle getExtras();
-    method public long getFlags();
-    method @Nullable public android.media.MediaMetadata getMetadata();
-    method public String getPackageName();
-    method @Nullable public android.media.session.MediaController.PlaybackInfo getPlaybackInfo();
-    method @Nullable public android.media.session.PlaybackState getPlaybackState();
-    method @Nullable public java.util.List<android.media.session.MediaSession.QueueItem> getQueue();
-    method @Nullable public CharSequence getQueueTitle();
-    method public int getRatingType();
-    method @Nullable public android.app.PendingIntent getSessionActivity();
-    method @NonNull public android.os.Bundle getSessionInfo();
-    method @NonNull public android.media.session.MediaSession.Token getSessionToken();
-    method @NonNull public String getTag();
-    method @NonNull public android.media.session.MediaController.TransportControls getTransportControls();
-    method public void registerCallback(@NonNull android.media.session.MediaController.Callback);
-    method public void registerCallback(@NonNull android.media.session.MediaController.Callback, @Nullable android.os.Handler);
-    method public void sendCommand(@NonNull String, @Nullable android.os.Bundle, @Nullable android.os.ResultReceiver);
-    method public void setVolumeTo(int, int);
-    method public void unregisterCallback(@NonNull android.media.session.MediaController.Callback);
-  }
-
-  public abstract static class MediaController.Callback {
-    ctor public MediaController.Callback();
-    method public void onAudioInfoChanged(android.media.session.MediaController.PlaybackInfo);
-    method public void onExtrasChanged(@Nullable android.os.Bundle);
-    method public void onMetadataChanged(@Nullable android.media.MediaMetadata);
-    method public void onPlaybackStateChanged(@Nullable android.media.session.PlaybackState);
-    method public void onQueueChanged(@Nullable java.util.List<android.media.session.MediaSession.QueueItem>);
-    method public void onQueueTitleChanged(@Nullable CharSequence);
-    method public void onSessionDestroyed();
-    method public void onSessionEvent(@NonNull String, @Nullable android.os.Bundle);
-  }
-
-  public static final class MediaController.PlaybackInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.media.AudioAttributes getAudioAttributes();
-    method public int getCurrentVolume();
-    method public int getMaxVolume();
-    method public int getPlaybackType();
-    method public int getVolumeControl();
-    method @Nullable public String getVolumeControlId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.session.MediaController.PlaybackInfo> CREATOR;
-    field public static final int PLAYBACK_TYPE_LOCAL = 1; // 0x1
-    field public static final int PLAYBACK_TYPE_REMOTE = 2; // 0x2
-  }
-
-  public final class MediaController.TransportControls {
-    method public void fastForward();
-    method public void pause();
-    method public void play();
-    method public void playFromMediaId(String, android.os.Bundle);
-    method public void playFromSearch(String, android.os.Bundle);
-    method public void playFromUri(android.net.Uri, android.os.Bundle);
-    method public void prepare();
-    method public void prepareFromMediaId(String, android.os.Bundle);
-    method public void prepareFromSearch(String, android.os.Bundle);
-    method public void prepareFromUri(android.net.Uri, android.os.Bundle);
-    method public void rewind();
-    method public void seekTo(long);
-    method public void sendCustomAction(@NonNull android.media.session.PlaybackState.CustomAction, @Nullable android.os.Bundle);
-    method public void sendCustomAction(@NonNull String, @Nullable android.os.Bundle);
-    method public void setPlaybackSpeed(float);
-    method public void setRating(android.media.Rating);
-    method public void skipToNext();
-    method public void skipToPrevious();
-    method public void skipToQueueItem(long);
-    method public void stop();
-  }
-
-  public final class MediaSession {
-    ctor public MediaSession(@NonNull android.content.Context, @NonNull String);
-    ctor public MediaSession(@NonNull android.content.Context, @NonNull String, @Nullable android.os.Bundle);
-    method @NonNull public android.media.session.MediaController getController();
-    method @NonNull public android.media.session.MediaSessionManager.RemoteUserInfo getCurrentControllerInfo();
-    method @NonNull public android.media.session.MediaSession.Token getSessionToken();
-    method public boolean isActive();
-    method public void release();
-    method public void sendSessionEvent(@NonNull String, @Nullable android.os.Bundle);
-    method public void setActive(boolean);
-    method public void setCallback(@Nullable android.media.session.MediaSession.Callback);
-    method public void setCallback(@Nullable android.media.session.MediaSession.Callback, @Nullable android.os.Handler);
-    method public void setExtras(@Nullable android.os.Bundle);
-    method public void setFlags(int);
-    method public void setMediaButtonReceiver(@Nullable android.app.PendingIntent);
-    method public void setMetadata(@Nullable android.media.MediaMetadata);
-    method public void setPlaybackState(@Nullable android.media.session.PlaybackState);
-    method public void setPlaybackToLocal(android.media.AudioAttributes);
-    method public void setPlaybackToRemote(@NonNull android.media.VolumeProvider);
-    method public void setQueue(@Nullable java.util.List<android.media.session.MediaSession.QueueItem>);
-    method public void setQueueTitle(@Nullable CharSequence);
-    method public void setRatingType(int);
-    method public void setSessionActivity(@Nullable android.app.PendingIntent);
-    field @Deprecated public static final int FLAG_HANDLES_MEDIA_BUTTONS = 1; // 0x1
-    field @Deprecated public static final int FLAG_HANDLES_TRANSPORT_CONTROLS = 2; // 0x2
-  }
-
-  public abstract static class MediaSession.Callback {
-    ctor public MediaSession.Callback();
-    method public void onCommand(@NonNull String, @Nullable android.os.Bundle, @Nullable android.os.ResultReceiver);
-    method public void onCustomAction(@NonNull String, @Nullable android.os.Bundle);
-    method public void onFastForward();
-    method public boolean onMediaButtonEvent(@NonNull android.content.Intent);
-    method public void onPause();
-    method public void onPlay();
-    method public void onPlayFromMediaId(String, android.os.Bundle);
-    method public void onPlayFromSearch(String, android.os.Bundle);
-    method public void onPlayFromUri(android.net.Uri, android.os.Bundle);
-    method public void onPrepare();
-    method public void onPrepareFromMediaId(String, android.os.Bundle);
-    method public void onPrepareFromSearch(String, android.os.Bundle);
-    method public void onPrepareFromUri(android.net.Uri, android.os.Bundle);
-    method public void onRewind();
-    method public void onSeekTo(long);
-    method public void onSetPlaybackSpeed(float);
-    method public void onSetRating(@NonNull android.media.Rating);
-    method public void onSkipToNext();
-    method public void onSkipToPrevious();
-    method public void onSkipToQueueItem(long);
-    method public void onStop();
-  }
-
-  public static final class MediaSession.QueueItem implements android.os.Parcelable {
-    ctor public MediaSession.QueueItem(android.media.MediaDescription, long);
-    method public int describeContents();
-    method public android.media.MediaDescription getDescription();
-    method public long getQueueId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.session.MediaSession.QueueItem> CREATOR;
-    field public static final int UNKNOWN_ID = -1; // 0xffffffff
-  }
-
-  public static final class MediaSession.Token implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.session.MediaSession.Token> CREATOR;
-  }
-
-  public final class MediaSessionManager {
-    method public void addOnActiveSessionsChangedListener(@NonNull android.media.session.MediaSessionManager.OnActiveSessionsChangedListener, @Nullable android.content.ComponentName);
-    method public void addOnActiveSessionsChangedListener(@NonNull android.media.session.MediaSessionManager.OnActiveSessionsChangedListener, @Nullable android.content.ComponentName, @Nullable android.os.Handler);
-    method public void addOnSession2TokensChangedListener(@NonNull android.media.session.MediaSessionManager.OnSession2TokensChangedListener);
-    method public void addOnSession2TokensChangedListener(@NonNull android.media.session.MediaSessionManager.OnSession2TokensChangedListener, @NonNull android.os.Handler);
-    method @NonNull public java.util.List<android.media.session.MediaController> getActiveSessions(@Nullable android.content.ComponentName);
-    method @NonNull public java.util.List<android.media.Session2Token> getSession2Tokens();
-    method public boolean isTrustedForMediaControl(@NonNull android.media.session.MediaSessionManager.RemoteUserInfo);
-    method public void notifySession2Created(@NonNull android.media.Session2Token);
-    method public void removeOnActiveSessionsChangedListener(@NonNull android.media.session.MediaSessionManager.OnActiveSessionsChangedListener);
-    method public void removeOnSession2TokensChangedListener(@NonNull android.media.session.MediaSessionManager.OnSession2TokensChangedListener);
-  }
-
-  public static interface MediaSessionManager.OnActiveSessionsChangedListener {
-    method public void onActiveSessionsChanged(@Nullable java.util.List<android.media.session.MediaController>);
-  }
-
-  public static interface MediaSessionManager.OnSession2TokensChangedListener {
-    method public void onSession2TokensChanged(@NonNull java.util.List<android.media.Session2Token>);
-  }
-
-  public static final class MediaSessionManager.RemoteUserInfo {
-    ctor public MediaSessionManager.RemoteUserInfo(@NonNull String, int, int);
-    method public String getPackageName();
-    method public int getPid();
-    method public int getUid();
-  }
-
-  public final class PlaybackState implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getActions();
-    method public long getActiveQueueItemId();
-    method public long getBufferedPosition();
-    method public java.util.List<android.media.session.PlaybackState.CustomAction> getCustomActions();
-    method public CharSequence getErrorMessage();
-    method @Nullable public android.os.Bundle getExtras();
-    method public long getLastPositionUpdateTime();
-    method public float getPlaybackSpeed();
-    method public long getPosition();
-    method public int getState();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final long ACTION_FAST_FORWARD = 64L; // 0x40L
-    field public static final long ACTION_PAUSE = 2L; // 0x2L
-    field public static final long ACTION_PLAY = 4L; // 0x4L
-    field public static final long ACTION_PLAY_FROM_MEDIA_ID = 1024L; // 0x400L
-    field public static final long ACTION_PLAY_FROM_SEARCH = 2048L; // 0x800L
-    field public static final long ACTION_PLAY_FROM_URI = 8192L; // 0x2000L
-    field public static final long ACTION_PLAY_PAUSE = 512L; // 0x200L
-    field public static final long ACTION_PREPARE = 16384L; // 0x4000L
-    field public static final long ACTION_PREPARE_FROM_MEDIA_ID = 32768L; // 0x8000L
-    field public static final long ACTION_PREPARE_FROM_SEARCH = 65536L; // 0x10000L
-    field public static final long ACTION_PREPARE_FROM_URI = 131072L; // 0x20000L
-    field public static final long ACTION_REWIND = 8L; // 0x8L
-    field public static final long ACTION_SEEK_TO = 256L; // 0x100L
-    field public static final long ACTION_SET_RATING = 128L; // 0x80L
-    field public static final long ACTION_SKIP_TO_NEXT = 32L; // 0x20L
-    field public static final long ACTION_SKIP_TO_PREVIOUS = 16L; // 0x10L
-    field public static final long ACTION_SKIP_TO_QUEUE_ITEM = 4096L; // 0x1000L
-    field public static final long ACTION_STOP = 1L; // 0x1L
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.session.PlaybackState> CREATOR;
-    field public static final long PLAYBACK_POSITION_UNKNOWN = -1L; // 0xffffffffffffffffL
-    field public static final int STATE_BUFFERING = 6; // 0x6
-    field public static final int STATE_CONNECTING = 8; // 0x8
-    field public static final int STATE_ERROR = 7; // 0x7
-    field public static final int STATE_FAST_FORWARDING = 4; // 0x4
-    field public static final int STATE_NONE = 0; // 0x0
-    field public static final int STATE_PAUSED = 2; // 0x2
-    field public static final int STATE_PLAYING = 3; // 0x3
-    field public static final int STATE_REWINDING = 5; // 0x5
-    field public static final int STATE_SKIPPING_TO_NEXT = 10; // 0xa
-    field public static final int STATE_SKIPPING_TO_PREVIOUS = 9; // 0x9
-    field public static final int STATE_SKIPPING_TO_QUEUE_ITEM = 11; // 0xb
-    field public static final int STATE_STOPPED = 1; // 0x1
-  }
-
-  public static final class PlaybackState.Builder {
-    ctor public PlaybackState.Builder();
-    ctor public PlaybackState.Builder(android.media.session.PlaybackState);
-    method public android.media.session.PlaybackState.Builder addCustomAction(String, String, int);
-    method public android.media.session.PlaybackState.Builder addCustomAction(android.media.session.PlaybackState.CustomAction);
-    method public android.media.session.PlaybackState build();
-    method public android.media.session.PlaybackState.Builder setActions(long);
-    method public android.media.session.PlaybackState.Builder setActiveQueueItemId(long);
-    method public android.media.session.PlaybackState.Builder setBufferedPosition(long);
-    method public android.media.session.PlaybackState.Builder setErrorMessage(CharSequence);
-    method public android.media.session.PlaybackState.Builder setExtras(android.os.Bundle);
-    method public android.media.session.PlaybackState.Builder setState(int, long, float, long);
-    method public android.media.session.PlaybackState.Builder setState(int, long, float);
-  }
-
-  public static final class PlaybackState.CustomAction implements android.os.Parcelable {
-    method public int describeContents();
-    method public String getAction();
-    method public android.os.Bundle getExtras();
-    method public int getIcon();
-    method public CharSequence getName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.session.PlaybackState.CustomAction> CREATOR;
-  }
-
-  public static final class PlaybackState.CustomAction.Builder {
-    ctor public PlaybackState.CustomAction.Builder(String, CharSequence, @DrawableRes int);
-    method public android.media.session.PlaybackState.CustomAction build();
-    method public android.media.session.PlaybackState.CustomAction.Builder setExtras(android.os.Bundle);
-  }
-
-}
-
-package android.media.tv {
-
-  public final class TvContentRating {
-    method public boolean contains(@NonNull android.media.tv.TvContentRating);
-    method public static android.media.tv.TvContentRating createRating(String, String, String, java.lang.String...);
-    method public String flattenToString();
-    method public String getDomain();
-    method public String getMainRating();
-    method public String getRatingSystem();
-    method public java.util.List<java.lang.String> getSubRatings();
-    method public static android.media.tv.TvContentRating unflattenFromString(String);
-    field public static final android.media.tv.TvContentRating UNRATED;
-  }
-
-  public final class TvContract {
-    method public static android.net.Uri buildChannelLogoUri(long);
-    method public static android.net.Uri buildChannelLogoUri(android.net.Uri);
-    method public static android.net.Uri buildChannelUri(long);
-    method public static android.net.Uri buildChannelUriForPassthroughInput(String);
-    method public static android.net.Uri buildChannelsUriForInput(@Nullable String);
-    method public static String buildInputId(android.content.ComponentName);
-    method public static android.net.Uri buildPreviewProgramUri(long);
-    method public static android.net.Uri buildPreviewProgramsUriForChannel(long);
-    method public static android.net.Uri buildPreviewProgramsUriForChannel(android.net.Uri);
-    method public static android.net.Uri buildProgramUri(long);
-    method public static android.net.Uri buildProgramsUriForChannel(long);
-    method public static android.net.Uri buildProgramsUriForChannel(android.net.Uri);
-    method public static android.net.Uri buildProgramsUriForChannel(long, long, long);
-    method public static android.net.Uri buildProgramsUriForChannel(android.net.Uri, long, long);
-    method public static android.net.Uri buildRecordedProgramUri(long);
-    method public static android.net.Uri buildWatchNextProgramUri(long);
-    method public static boolean isChannelUri(@NonNull android.net.Uri);
-    method public static boolean isChannelUriForPassthroughInput(@NonNull android.net.Uri);
-    method public static boolean isChannelUriForTunerInput(@NonNull android.net.Uri);
-    method public static boolean isProgramUri(@NonNull android.net.Uri);
-    method public static boolean isRecordedProgramUri(@NonNull android.net.Uri);
-    method public static void requestChannelBrowsable(android.content.Context, long);
-    field public static final String ACTION_INITIALIZE_PROGRAMS = "android.media.tv.action.INITIALIZE_PROGRAMS";
-    field public static final String ACTION_PREVIEW_PROGRAM_ADDED_TO_WATCH_NEXT = "android.media.tv.action.PREVIEW_PROGRAM_ADDED_TO_WATCH_NEXT";
-    field public static final String ACTION_PREVIEW_PROGRAM_BROWSABLE_DISABLED = "android.media.tv.action.PREVIEW_PROGRAM_BROWSABLE_DISABLED";
-    field public static final String ACTION_REQUEST_CHANNEL_BROWSABLE = "android.media.tv.action.REQUEST_CHANNEL_BROWSABLE";
-    field public static final String ACTION_WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED = "android.media.tv.action.WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED";
-    field public static final String AUTHORITY = "android.media.tv";
-    field public static final String EXTRA_CHANNEL_ID = "android.media.tv.extra.CHANNEL_ID";
-    field public static final String EXTRA_PREVIEW_PROGRAM_ID = "android.media.tv.extra.PREVIEW_PROGRAM_ID";
-    field public static final String EXTRA_WATCH_NEXT_PROGRAM_ID = "android.media.tv.extra.WATCH_NEXT_PROGRAM_ID";
-  }
-
-  public static interface TvContract.BaseTvColumns extends android.provider.BaseColumns {
-    field public static final String COLUMN_PACKAGE_NAME = "package_name";
-  }
-
-  public static final class TvContract.Channels implements android.media.tv.TvContract.BaseTvColumns {
-    method @Nullable public static String getVideoResolution(String);
-    field public static final String COLUMN_APP_LINK_COLOR = "app_link_color";
-    field public static final String COLUMN_APP_LINK_ICON_URI = "app_link_icon_uri";
-    field public static final String COLUMN_APP_LINK_INTENT_URI = "app_link_intent_uri";
-    field public static final String COLUMN_APP_LINK_POSTER_ART_URI = "app_link_poster_art_uri";
-    field public static final String COLUMN_APP_LINK_TEXT = "app_link_text";
-    field public static final String COLUMN_BROWSABLE = "browsable";
-    field public static final String COLUMN_DESCRIPTION = "description";
-    field public static final String COLUMN_DISPLAY_NAME = "display_name";
-    field public static final String COLUMN_DISPLAY_NUMBER = "display_number";
-    field public static final String COLUMN_GLOBAL_CONTENT_ID = "global_content_id";
-    field public static final String COLUMN_INPUT_ID = "input_id";
-    field public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
-    field public static final String COLUMN_INTERNAL_PROVIDER_ID = "internal_provider_id";
-    field public static final String COLUMN_LOCKED = "locked";
-    field public static final String COLUMN_NETWORK_AFFILIATION = "network_affiliation";
-    field public static final String COLUMN_ORIGINAL_NETWORK_ID = "original_network_id";
-    field public static final String COLUMN_SEARCHABLE = "searchable";
-    field public static final String COLUMN_SERVICE_ID = "service_id";
-    field public static final String COLUMN_SERVICE_TYPE = "service_type";
-    field public static final String COLUMN_TRANSIENT = "transient";
-    field public static final String COLUMN_TRANSPORT_STREAM_ID = "transport_stream_id";
-    field public static final String COLUMN_TYPE = "type";
-    field public static final String COLUMN_VERSION_NUMBER = "version_number";
-    field public static final String COLUMN_VIDEO_FORMAT = "video_format";
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/channel";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/channel";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String SERVICE_TYPE_AUDIO = "SERVICE_TYPE_AUDIO";
-    field public static final String SERVICE_TYPE_AUDIO_VIDEO = "SERVICE_TYPE_AUDIO_VIDEO";
-    field public static final String SERVICE_TYPE_OTHER = "SERVICE_TYPE_OTHER";
-    field public static final String TYPE_1SEG = "TYPE_1SEG";
-    field public static final String TYPE_ATSC3_T = "TYPE_ATSC3_T";
-    field public static final String TYPE_ATSC_C = "TYPE_ATSC_C";
-    field public static final String TYPE_ATSC_M_H = "TYPE_ATSC_M_H";
-    field public static final String TYPE_ATSC_T = "TYPE_ATSC_T";
-    field public static final String TYPE_CMMB = "TYPE_CMMB";
-    field public static final String TYPE_DTMB = "TYPE_DTMB";
-    field public static final String TYPE_DVB_C = "TYPE_DVB_C";
-    field public static final String TYPE_DVB_C2 = "TYPE_DVB_C2";
-    field public static final String TYPE_DVB_H = "TYPE_DVB_H";
-    field public static final String TYPE_DVB_S = "TYPE_DVB_S";
-    field public static final String TYPE_DVB_S2 = "TYPE_DVB_S2";
-    field public static final String TYPE_DVB_SH = "TYPE_DVB_SH";
-    field public static final String TYPE_DVB_T = "TYPE_DVB_T";
-    field public static final String TYPE_DVB_T2 = "TYPE_DVB_T2";
-    field public static final String TYPE_ISDB_C = "TYPE_ISDB_C";
-    field public static final String TYPE_ISDB_S = "TYPE_ISDB_S";
-    field public static final String TYPE_ISDB_S3 = "TYPE_ISDB_S3";
-    field public static final String TYPE_ISDB_T = "TYPE_ISDB_T";
-    field public static final String TYPE_ISDB_TB = "TYPE_ISDB_TB";
-    field public static final String TYPE_NTSC = "TYPE_NTSC";
-    field public static final String TYPE_OTHER = "TYPE_OTHER";
-    field public static final String TYPE_PAL = "TYPE_PAL";
-    field public static final String TYPE_PREVIEW = "TYPE_PREVIEW";
-    field public static final String TYPE_SECAM = "TYPE_SECAM";
-    field public static final String TYPE_S_DMB = "TYPE_S_DMB";
-    field public static final String TYPE_T_DMB = "TYPE_T_DMB";
-    field public static final String VIDEO_FORMAT_1080I = "VIDEO_FORMAT_1080I";
-    field public static final String VIDEO_FORMAT_1080P = "VIDEO_FORMAT_1080P";
-    field public static final String VIDEO_FORMAT_2160P = "VIDEO_FORMAT_2160P";
-    field public static final String VIDEO_FORMAT_240P = "VIDEO_FORMAT_240P";
-    field public static final String VIDEO_FORMAT_360P = "VIDEO_FORMAT_360P";
-    field public static final String VIDEO_FORMAT_4320P = "VIDEO_FORMAT_4320P";
-    field public static final String VIDEO_FORMAT_480I = "VIDEO_FORMAT_480I";
-    field public static final String VIDEO_FORMAT_480P = "VIDEO_FORMAT_480P";
-    field public static final String VIDEO_FORMAT_576I = "VIDEO_FORMAT_576I";
-    field public static final String VIDEO_FORMAT_576P = "VIDEO_FORMAT_576P";
-    field public static final String VIDEO_FORMAT_720P = "VIDEO_FORMAT_720P";
-    field public static final String VIDEO_RESOLUTION_ED = "VIDEO_RESOLUTION_ED";
-    field public static final String VIDEO_RESOLUTION_FHD = "VIDEO_RESOLUTION_FHD";
-    field public static final String VIDEO_RESOLUTION_HD = "VIDEO_RESOLUTION_HD";
-    field public static final String VIDEO_RESOLUTION_SD = "VIDEO_RESOLUTION_SD";
-    field public static final String VIDEO_RESOLUTION_UHD = "VIDEO_RESOLUTION_UHD";
-  }
-
-  public static final class TvContract.Channels.Logo {
-    field public static final String CONTENT_DIRECTORY = "logo";
-  }
-
-  public static final class TvContract.PreviewPrograms implements android.media.tv.TvContract.BaseTvColumns {
-    field public static final int ASPECT_RATIO_16_9 = 0; // 0x0
-    field public static final int ASPECT_RATIO_1_1 = 3; // 0x3
-    field public static final int ASPECT_RATIO_2_3 = 4; // 0x4
-    field public static final int ASPECT_RATIO_3_2 = 1; // 0x1
-    field public static final int ASPECT_RATIO_4_3 = 2; // 0x2
-    field public static final int AVAILABILITY_AVAILABLE = 0; // 0x0
-    field public static final int AVAILABILITY_FREE_WITH_SUBSCRIPTION = 1; // 0x1
-    field public static final int AVAILABILITY_PAID_CONTENT = 2; // 0x2
-    field public static final String COLUMN_AUDIO_LANGUAGE = "audio_language";
-    field public static final String COLUMN_AUTHOR = "author";
-    field public static final String COLUMN_AVAILABILITY = "availability";
-    field public static final String COLUMN_BROWSABLE = "browsable";
-    field public static final String COLUMN_CANONICAL_GENRE = "canonical_genre";
-    field public static final String COLUMN_CHANNEL_ID = "channel_id";
-    field public static final String COLUMN_CONTENT_ID = "content_id";
-    field public static final String COLUMN_CONTENT_RATING = "content_rating";
-    field public static final String COLUMN_DURATION_MILLIS = "duration_millis";
-    field public static final String COLUMN_EPISODE_DISPLAY_NUMBER = "episode_display_number";
-    field public static final String COLUMN_EPISODE_TITLE = "episode_title";
-    field public static final String COLUMN_INTENT_URI = "intent_uri";
-    field public static final String COLUMN_INTERACTION_COUNT = "interaction_count";
-    field public static final String COLUMN_INTERACTION_TYPE = "interaction_type";
-    field public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
-    field public static final String COLUMN_INTERNAL_PROVIDER_ID = "internal_provider_id";
-    field public static final String COLUMN_ITEM_COUNT = "item_count";
-    field public static final String COLUMN_LAST_PLAYBACK_POSITION_MILLIS = "last_playback_position_millis";
-    field public static final String COLUMN_LIVE = "live";
-    field public static final String COLUMN_LOGO_URI = "logo_uri";
-    field public static final String COLUMN_LONG_DESCRIPTION = "long_description";
-    field public static final String COLUMN_OFFER_PRICE = "offer_price";
-    field public static final String COLUMN_POSTER_ART_ASPECT_RATIO = "poster_art_aspect_ratio";
-    field public static final String COLUMN_POSTER_ART_URI = "poster_art_uri";
-    field public static final String COLUMN_PREVIEW_VIDEO_URI = "preview_video_uri";
-    field public static final String COLUMN_RELEASE_DATE = "release_date";
-    field public static final String COLUMN_REVIEW_RATING = "review_rating";
-    field public static final String COLUMN_REVIEW_RATING_STYLE = "review_rating_style";
-    field public static final String COLUMN_SEARCHABLE = "searchable";
-    field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
-    field public static final String COLUMN_SEASON_TITLE = "season_title";
-    field public static final String COLUMN_SERIES_ID = "series_id";
-    field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
-    field public static final String COLUMN_SPLIT_ID = "split_id";
-    field public static final String COLUMN_STARTING_PRICE = "starting_price";
-    field public static final String COLUMN_THUMBNAIL_ASPECT_RATIO = "poster_thumbnail_aspect_ratio";
-    field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
-    field public static final String COLUMN_TITLE = "title";
-    field public static final String COLUMN_TRANSIENT = "transient";
-    field public static final String COLUMN_TYPE = "type";
-    field public static final String COLUMN_VERSION_NUMBER = "version_number";
-    field public static final String COLUMN_VIDEO_HEIGHT = "video_height";
-    field public static final String COLUMN_VIDEO_WIDTH = "video_width";
-    field public static final String COLUMN_WEIGHT = "weight";
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/preview_program";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/preview_program";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final int INTERACTION_TYPE_FANS = 3; // 0x3
-    field public static final int INTERACTION_TYPE_FOLLOWERS = 2; // 0x2
-    field public static final int INTERACTION_TYPE_LIKES = 4; // 0x4
-    field public static final int INTERACTION_TYPE_LISTENS = 1; // 0x1
-    field public static final int INTERACTION_TYPE_THUMBS = 5; // 0x5
-    field public static final int INTERACTION_TYPE_VIEWERS = 6; // 0x6
-    field public static final int INTERACTION_TYPE_VIEWS = 0; // 0x0
-    field public static final int REVIEW_RATING_STYLE_PERCENTAGE = 2; // 0x2
-    field public static final int REVIEW_RATING_STYLE_STARS = 0; // 0x0
-    field public static final int REVIEW_RATING_STYLE_THUMBS_UP_DOWN = 1; // 0x1
-    field public static final int TYPE_ALBUM = 8; // 0x8
-    field public static final int TYPE_ARTIST = 9; // 0x9
-    field public static final int TYPE_CHANNEL = 6; // 0x6
-    field public static final int TYPE_CLIP = 4; // 0x4
-    field public static final int TYPE_EVENT = 5; // 0x5
-    field public static final int TYPE_MOVIE = 0; // 0x0
-    field public static final int TYPE_PLAYLIST = 10; // 0xa
-    field public static final int TYPE_STATION = 11; // 0xb
-    field public static final int TYPE_TRACK = 7; // 0x7
-    field public static final int TYPE_TV_EPISODE = 3; // 0x3
-    field public static final int TYPE_TV_SEASON = 2; // 0x2
-    field public static final int TYPE_TV_SERIES = 1; // 0x1
-  }
-
-  public static final class TvContract.Programs implements android.media.tv.TvContract.BaseTvColumns {
-    field public static final String COLUMN_AUDIO_LANGUAGE = "audio_language";
-    field public static final String COLUMN_BROADCAST_GENRE = "broadcast_genre";
-    field public static final String COLUMN_CANONICAL_GENRE = "canonical_genre";
-    field public static final String COLUMN_CHANNEL_ID = "channel_id";
-    field public static final String COLUMN_CONTENT_RATING = "content_rating";
-    field public static final String COLUMN_END_TIME_UTC_MILLIS = "end_time_utc_millis";
-    field public static final String COLUMN_EPISODE_DISPLAY_NUMBER = "episode_display_number";
-    field @Deprecated public static final String COLUMN_EPISODE_NUMBER = "episode_number";
-    field public static final String COLUMN_EPISODE_TITLE = "episode_title";
-    field public static final String COLUMN_EVENT_ID = "event_id";
-    field public static final String COLUMN_GLOBAL_CONTENT_ID = "global_content_id";
-    field public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
-    field public static final String COLUMN_LONG_DESCRIPTION = "long_description";
-    field public static final String COLUMN_POSTER_ART_URI = "poster_art_uri";
-    field public static final String COLUMN_RECORDING_PROHIBITED = "recording_prohibited";
-    field public static final String COLUMN_REVIEW_RATING = "review_rating";
-    field public static final String COLUMN_REVIEW_RATING_STYLE = "review_rating_style";
-    field public static final String COLUMN_SEARCHABLE = "searchable";
-    field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
-    field @Deprecated public static final String COLUMN_SEASON_NUMBER = "season_number";
-    field public static final String COLUMN_SEASON_TITLE = "season_title";
-    field public static final String COLUMN_SERIES_ID = "series_id";
-    field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
-    field public static final String COLUMN_SPLIT_ID = "split_id";
-    field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
-    field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
-    field public static final String COLUMN_TITLE = "title";
-    field public static final String COLUMN_VERSION_NUMBER = "version_number";
-    field public static final String COLUMN_VIDEO_HEIGHT = "video_height";
-    field public static final String COLUMN_VIDEO_WIDTH = "video_width";
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/program";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/program";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final int REVIEW_RATING_STYLE_PERCENTAGE = 2; // 0x2
-    field public static final int REVIEW_RATING_STYLE_STARS = 0; // 0x0
-    field public static final int REVIEW_RATING_STYLE_THUMBS_UP_DOWN = 1; // 0x1
-  }
-
-  public static final class TvContract.Programs.Genres {
-    method public static String[] decode(@NonNull String);
-    method public static String encode(@NonNull java.lang.String...);
-    method public static boolean isCanonical(String);
-    field public static final String ANIMAL_WILDLIFE = "ANIMAL_WILDLIFE";
-    field public static final String ARTS = "ARTS";
-    field public static final String COMEDY = "COMEDY";
-    field public static final String DRAMA = "DRAMA";
-    field public static final String EDUCATION = "EDUCATION";
-    field public static final String ENTERTAINMENT = "ENTERTAINMENT";
-    field public static final String FAMILY_KIDS = "FAMILY_KIDS";
-    field public static final String GAMING = "GAMING";
-    field public static final String LIFE_STYLE = "LIFE_STYLE";
-    field public static final String MOVIES = "MOVIES";
-    field public static final String MUSIC = "MUSIC";
-    field public static final String NEWS = "NEWS";
-    field public static final String PREMIER = "PREMIER";
-    field public static final String SHOPPING = "SHOPPING";
-    field public static final String SPORTS = "SPORTS";
-    field public static final String TECH_SCIENCE = "TECH_SCIENCE";
-    field public static final String TRAVEL = "TRAVEL";
-  }
-
-  public static final class TvContract.RecordedPrograms implements android.media.tv.TvContract.BaseTvColumns {
-    field public static final String COLUMN_AUDIO_LANGUAGE = "audio_language";
-    field public static final String COLUMN_BROADCAST_GENRE = "broadcast_genre";
-    field public static final String COLUMN_CANONICAL_GENRE = "canonical_genre";
-    field public static final String COLUMN_CHANNEL_ID = "channel_id";
-    field public static final String COLUMN_CONTENT_RATING = "content_rating";
-    field public static final String COLUMN_END_TIME_UTC_MILLIS = "end_time_utc_millis";
-    field public static final String COLUMN_EPISODE_DISPLAY_NUMBER = "episode_display_number";
-    field public static final String COLUMN_EPISODE_TITLE = "episode_title";
-    field public static final String COLUMN_INPUT_ID = "input_id";
-    field public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
-    field public static final String COLUMN_LONG_DESCRIPTION = "long_description";
-    field public static final String COLUMN_POSTER_ART_URI = "poster_art_uri";
-    field public static final String COLUMN_RECORDING_DATA_BYTES = "recording_data_bytes";
-    field public static final String COLUMN_RECORDING_DATA_URI = "recording_data_uri";
-    field public static final String COLUMN_RECORDING_DURATION_MILLIS = "recording_duration_millis";
-    field public static final String COLUMN_RECORDING_EXPIRE_TIME_UTC_MILLIS = "recording_expire_time_utc_millis";
-    field public static final String COLUMN_REVIEW_RATING = "review_rating";
-    field public static final String COLUMN_REVIEW_RATING_STYLE = "review_rating_style";
-    field public static final String COLUMN_SEARCHABLE = "searchable";
-    field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
-    field public static final String COLUMN_SEASON_TITLE = "season_title";
-    field public static final String COLUMN_SERIES_ID = "series_id";
-    field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
-    field public static final String COLUMN_SPLIT_ID = "split_id";
-    field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
-    field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
-    field public static final String COLUMN_TITLE = "title";
-    field public static final String COLUMN_VERSION_NUMBER = "version_number";
-    field public static final String COLUMN_VIDEO_HEIGHT = "video_height";
-    field public static final String COLUMN_VIDEO_WIDTH = "video_width";
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/recorded_program";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/recorded_program";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final int REVIEW_RATING_STYLE_PERCENTAGE = 2; // 0x2
-    field public static final int REVIEW_RATING_STYLE_STARS = 0; // 0x0
-    field public static final int REVIEW_RATING_STYLE_THUMBS_UP_DOWN = 1; // 0x1
-  }
-
-  public static final class TvContract.WatchNextPrograms implements android.media.tv.TvContract.BaseTvColumns {
-    field public static final int ASPECT_RATIO_16_9 = 0; // 0x0
-    field public static final int ASPECT_RATIO_1_1 = 3; // 0x3
-    field public static final int ASPECT_RATIO_2_3 = 4; // 0x4
-    field public static final int ASPECT_RATIO_3_2 = 1; // 0x1
-    field public static final int ASPECT_RATIO_4_3 = 2; // 0x2
-    field public static final int AVAILABILITY_AVAILABLE = 0; // 0x0
-    field public static final int AVAILABILITY_FREE_WITH_SUBSCRIPTION = 1; // 0x1
-    field public static final int AVAILABILITY_PAID_CONTENT = 2; // 0x2
-    field public static final String COLUMN_AUDIO_LANGUAGE = "audio_language";
-    field public static final String COLUMN_AUTHOR = "author";
-    field public static final String COLUMN_AVAILABILITY = "availability";
-    field public static final String COLUMN_BROWSABLE = "browsable";
-    field public static final String COLUMN_CANONICAL_GENRE = "canonical_genre";
-    field public static final String COLUMN_CONTENT_ID = "content_id";
-    field public static final String COLUMN_CONTENT_RATING = "content_rating";
-    field public static final String COLUMN_DURATION_MILLIS = "duration_millis";
-    field public static final String COLUMN_EPISODE_DISPLAY_NUMBER = "episode_display_number";
-    field public static final String COLUMN_EPISODE_TITLE = "episode_title";
-    field public static final String COLUMN_INTENT_URI = "intent_uri";
-    field public static final String COLUMN_INTERACTION_COUNT = "interaction_count";
-    field public static final String COLUMN_INTERACTION_TYPE = "interaction_type";
-    field public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
-    field public static final String COLUMN_INTERNAL_PROVIDER_ID = "internal_provider_id";
-    field public static final String COLUMN_ITEM_COUNT = "item_count";
-    field public static final String COLUMN_LAST_ENGAGEMENT_TIME_UTC_MILLIS = "last_engagement_time_utc_millis";
-    field public static final String COLUMN_LAST_PLAYBACK_POSITION_MILLIS = "last_playback_position_millis";
-    field public static final String COLUMN_LIVE = "live";
-    field public static final String COLUMN_LOGO_URI = "logo_uri";
-    field public static final String COLUMN_LONG_DESCRIPTION = "long_description";
-    field public static final String COLUMN_OFFER_PRICE = "offer_price";
-    field public static final String COLUMN_POSTER_ART_ASPECT_RATIO = "poster_art_aspect_ratio";
-    field public static final String COLUMN_POSTER_ART_URI = "poster_art_uri";
-    field public static final String COLUMN_PREVIEW_VIDEO_URI = "preview_video_uri";
-    field public static final String COLUMN_RELEASE_DATE = "release_date";
-    field public static final String COLUMN_REVIEW_RATING = "review_rating";
-    field public static final String COLUMN_REVIEW_RATING_STYLE = "review_rating_style";
-    field public static final String COLUMN_SEARCHABLE = "searchable";
-    field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
-    field public static final String COLUMN_SEASON_TITLE = "season_title";
-    field public static final String COLUMN_SERIES_ID = "series_id";
-    field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
-    field public static final String COLUMN_SPLIT_ID = "split_id";
-    field public static final String COLUMN_STARTING_PRICE = "starting_price";
-    field public static final String COLUMN_THUMBNAIL_ASPECT_RATIO = "poster_thumbnail_aspect_ratio";
-    field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
-    field public static final String COLUMN_TITLE = "title";
-    field public static final String COLUMN_TRANSIENT = "transient";
-    field public static final String COLUMN_TYPE = "type";
-    field public static final String COLUMN_VERSION_NUMBER = "version_number";
-    field public static final String COLUMN_VIDEO_HEIGHT = "video_height";
-    field public static final String COLUMN_VIDEO_WIDTH = "video_width";
-    field public static final String COLUMN_WATCH_NEXT_TYPE = "watch_next_type";
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/watch_next_program";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/watch_next_program";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final int INTERACTION_TYPE_FANS = 3; // 0x3
-    field public static final int INTERACTION_TYPE_FOLLOWERS = 2; // 0x2
-    field public static final int INTERACTION_TYPE_LIKES = 4; // 0x4
-    field public static final int INTERACTION_TYPE_LISTENS = 1; // 0x1
-    field public static final int INTERACTION_TYPE_THUMBS = 5; // 0x5
-    field public static final int INTERACTION_TYPE_VIEWERS = 6; // 0x6
-    field public static final int INTERACTION_TYPE_VIEWS = 0; // 0x0
-    field public static final int REVIEW_RATING_STYLE_PERCENTAGE = 2; // 0x2
-    field public static final int REVIEW_RATING_STYLE_STARS = 0; // 0x0
-    field public static final int REVIEW_RATING_STYLE_THUMBS_UP_DOWN = 1; // 0x1
-    field public static final int TYPE_ALBUM = 8; // 0x8
-    field public static final int TYPE_ARTIST = 9; // 0x9
-    field public static final int TYPE_CHANNEL = 6; // 0x6
-    field public static final int TYPE_CLIP = 4; // 0x4
-    field public static final int TYPE_EVENT = 5; // 0x5
-    field public static final int TYPE_MOVIE = 0; // 0x0
-    field public static final int TYPE_PLAYLIST = 10; // 0xa
-    field public static final int TYPE_STATION = 11; // 0xb
-    field public static final int TYPE_TRACK = 7; // 0x7
-    field public static final int TYPE_TV_EPISODE = 3; // 0x3
-    field public static final int TYPE_TV_SEASON = 2; // 0x2
-    field public static final int TYPE_TV_SERIES = 1; // 0x1
-    field public static final int WATCH_NEXT_TYPE_CONTINUE = 0; // 0x0
-    field public static final int WATCH_NEXT_TYPE_NEW = 2; // 0x2
-    field public static final int WATCH_NEXT_TYPE_NEXT = 1; // 0x1
-    field public static final int WATCH_NEXT_TYPE_WATCHLIST = 3; // 0x3
-  }
-
-  public final class TvInputInfo implements android.os.Parcelable {
-    method public boolean canRecord();
-    method @Deprecated public android.content.Intent createSettingsIntent();
-    method public android.content.Intent createSetupIntent();
-    method public int describeContents();
-    method public android.os.Bundle getExtras();
-    method public String getId();
-    method public String getParentId();
-    method public android.content.pm.ServiceInfo getServiceInfo();
-    method public int getTunerCount();
-    method public int getType();
-    method public boolean isHidden(android.content.Context);
-    method public boolean isPassthroughInput();
-    method public CharSequence loadCustomLabel(android.content.Context);
-    method public android.graphics.drawable.Drawable loadIcon(@NonNull android.content.Context);
-    method public CharSequence loadLabel(@NonNull android.content.Context);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.TvInputInfo> CREATOR;
-    field public static final String EXTRA_INPUT_ID = "android.media.tv.extra.INPUT_ID";
-    field public static final int TYPE_COMPONENT = 1004; // 0x3ec
-    field public static final int TYPE_COMPOSITE = 1001; // 0x3e9
-    field public static final int TYPE_DISPLAY_PORT = 1008; // 0x3f0
-    field public static final int TYPE_DVI = 1006; // 0x3ee
-    field public static final int TYPE_HDMI = 1007; // 0x3ef
-    field public static final int TYPE_OTHER = 1000; // 0x3e8
-    field public static final int TYPE_SCART = 1003; // 0x3eb
-    field public static final int TYPE_SVIDEO = 1002; // 0x3ea
-    field public static final int TYPE_TUNER = 0; // 0x0
-    field public static final int TYPE_VGA = 1005; // 0x3ed
-  }
-
-  public static final class TvInputInfo.Builder {
-    ctor public TvInputInfo.Builder(android.content.Context, android.content.ComponentName);
-    method public android.media.tv.TvInputInfo build();
-    method public android.media.tv.TvInputInfo.Builder setCanRecord(boolean);
-    method public android.media.tv.TvInputInfo.Builder setExtras(android.os.Bundle);
-    method public android.media.tv.TvInputInfo.Builder setTunerCount(int);
-  }
-
-  public final class TvInputManager {
-    method public java.util.List<android.media.tv.TvContentRating> getBlockedRatings();
-    method public int getInputState(@NonNull String);
-    method @Nullable public android.media.tv.TvInputInfo getTvInputInfo(@NonNull String);
-    method public java.util.List<android.media.tv.TvInputInfo> getTvInputList();
-    method public boolean isParentalControlsEnabled();
-    method public boolean isRatingBlocked(@NonNull android.media.tv.TvContentRating);
-    method public void registerCallback(@NonNull android.media.tv.TvInputManager.TvInputCallback, @NonNull android.os.Handler);
-    method public void unregisterCallback(@NonNull android.media.tv.TvInputManager.TvInputCallback);
-    method public void updateTvInputInfo(@NonNull android.media.tv.TvInputInfo);
-    field public static final String ACTION_BLOCKED_RATINGS_CHANGED = "android.media.tv.action.BLOCKED_RATINGS_CHANGED";
-    field public static final String ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED = "android.media.tv.action.PARENTAL_CONTROLS_ENABLED_CHANGED";
-    field public static final String ACTION_QUERY_CONTENT_RATING_SYSTEMS = "android.media.tv.action.QUERY_CONTENT_RATING_SYSTEMS";
-    field public static final String ACTION_SETUP_INPUTS = "android.media.tv.action.SETUP_INPUTS";
-    field public static final String ACTION_VIEW_RECORDING_SCHEDULES = "android.media.tv.action.VIEW_RECORDING_SCHEDULES";
-    field public static final int INPUT_STATE_CONNECTED = 0; // 0x0
-    field public static final int INPUT_STATE_CONNECTED_STANDBY = 1; // 0x1
-    field public static final int INPUT_STATE_DISCONNECTED = 2; // 0x2
-    field public static final String META_DATA_CONTENT_RATING_SYSTEMS = "android.media.tv.metadata.CONTENT_RATING_SYSTEMS";
-    field public static final int RECORDING_ERROR_INSUFFICIENT_SPACE = 1; // 0x1
-    field public static final int RECORDING_ERROR_RESOURCE_BUSY = 2; // 0x2
-    field public static final int RECORDING_ERROR_UNKNOWN = 0; // 0x0
-    field public static final long TIME_SHIFT_INVALID_TIME = -9223372036854775808L; // 0x8000000000000000L
-    field public static final int TIME_SHIFT_STATUS_AVAILABLE = 3; // 0x3
-    field public static final int TIME_SHIFT_STATUS_UNAVAILABLE = 2; // 0x2
-    field public static final int TIME_SHIFT_STATUS_UNKNOWN = 0; // 0x0
-    field public static final int TIME_SHIFT_STATUS_UNSUPPORTED = 1; // 0x1
-    field public static final int VIDEO_UNAVAILABLE_REASON_AUDIO_ONLY = 4; // 0x4
-    field public static final int VIDEO_UNAVAILABLE_REASON_BUFFERING = 3; // 0x3
-    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_BLACKOUT = 16; // 0x10
-    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_CARD_INVALID = 15; // 0xf
-    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_CARD_MUTE = 14; // 0xe
-    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_INSUFFICIENT_OUTPUT_PROTECTION = 7; // 0x7
-    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_LICENSE_EXPIRED = 10; // 0xa
-    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_NEED_ACTIVATION = 11; // 0xb
-    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_NEED_PAIRING = 12; // 0xc
-    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_NO_CARD = 13; // 0xd
-    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_PVR_RECORDING_NOT_ALLOWED = 8; // 0x8
-    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_REBOOTING = 17; // 0x11
-    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_UNKNOWN = 18; // 0x12
-    field public static final int VIDEO_UNAVAILABLE_REASON_INSUFFICIENT_RESOURCE = 6; // 0x6
-    field public static final int VIDEO_UNAVAILABLE_REASON_NOT_CONNECTED = 5; // 0x5
-    field public static final int VIDEO_UNAVAILABLE_REASON_TUNING = 1; // 0x1
-    field public static final int VIDEO_UNAVAILABLE_REASON_UNKNOWN = 0; // 0x0
-    field public static final int VIDEO_UNAVAILABLE_REASON_WEAK_SIGNAL = 2; // 0x2
-  }
-
-  public abstract static class TvInputManager.TvInputCallback {
-    ctor public TvInputManager.TvInputCallback();
-    method public void onInputAdded(String);
-    method public void onInputRemoved(String);
-    method public void onInputStateChanged(String, int);
-    method public void onInputUpdated(String);
-    method public void onTvInputInfoUpdated(android.media.tv.TvInputInfo);
-  }
-
-  public abstract class TvInputService extends android.app.Service {
-    ctor public TvInputService();
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method @Nullable public android.media.tv.TvInputService.RecordingSession onCreateRecordingSession(@NonNull String);
-    method @Nullable public android.media.tv.TvInputService.RecordingSession onCreateRecordingSession(@NonNull String, @NonNull String);
-    method @Nullable public abstract android.media.tv.TvInputService.Session onCreateSession(@NonNull String);
-    method @Nullable public android.media.tv.TvInputService.Session onCreateSession(@NonNull String, @NonNull String);
-    field public static final int PRIORITY_HINT_USE_CASE_TYPE_BACKGROUND = 100; // 0x64
-    field public static final int PRIORITY_HINT_USE_CASE_TYPE_LIVE = 400; // 0x190
-    field public static final int PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK = 300; // 0x12c
-    field public static final int PRIORITY_HINT_USE_CASE_TYPE_RECORD = 500; // 0x1f4
-    field public static final int PRIORITY_HINT_USE_CASE_TYPE_SCAN = 200; // 0xc8
-    field public static final String SERVICE_INTERFACE = "android.media.tv.TvInputService";
-    field public static final String SERVICE_META_DATA = "android.media.tv.input";
-  }
-
-  public abstract static class TvInputService.HardwareSession extends android.media.tv.TvInputService.Session {
-    ctor public TvInputService.HardwareSession(android.content.Context);
-    method public abstract String getHardwareInputId();
-    method public void onHardwareVideoAvailable();
-    method public void onHardwareVideoUnavailable(int);
-    method public final boolean onSetSurface(android.view.Surface);
-  }
-
-  public abstract static class TvInputService.RecordingSession {
-    ctor public TvInputService.RecordingSession(android.content.Context);
-    method public void notifyError(int);
-    method public void notifyRecordingStopped(android.net.Uri);
-    method public void notifyTuned(android.net.Uri);
-    method public void onAppPrivateCommand(@NonNull String, android.os.Bundle);
-    method public abstract void onRelease();
-    method public abstract void onStartRecording(@Nullable android.net.Uri);
-    method public void onStartRecording(@Nullable android.net.Uri, @NonNull android.os.Bundle);
-    method public abstract void onStopRecording();
-    method public abstract void onTune(android.net.Uri);
-    method public void onTune(android.net.Uri, android.os.Bundle);
-  }
-
-  public abstract static class TvInputService.Session implements android.view.KeyEvent.Callback {
-    ctor public TvInputService.Session(android.content.Context);
-    method public void layoutSurface(int, int, int, int);
-    method public void notifyChannelRetuned(android.net.Uri);
-    method public void notifyContentAllowed();
-    method public void notifyContentBlocked(@NonNull android.media.tv.TvContentRating);
-    method public void notifyTimeShiftStatusChanged(int);
-    method public void notifyTrackSelected(int, String);
-    method public void notifyTracksChanged(java.util.List<android.media.tv.TvTrackInfo>);
-    method public void notifyVideoAvailable();
-    method public void notifyVideoUnavailable(int);
-    method public void onAppPrivateCommand(@NonNull String, android.os.Bundle);
-    method public android.view.View onCreateOverlayView();
-    method public boolean onGenericMotionEvent(android.view.MotionEvent);
-    method public boolean onKeyDown(int, android.view.KeyEvent);
-    method public boolean onKeyLongPress(int, android.view.KeyEvent);
-    method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
-    method public boolean onKeyUp(int, android.view.KeyEvent);
-    method public void onOverlayViewSizeChanged(int, int);
-    method public abstract void onRelease();
-    method public boolean onSelectTrack(int, @Nullable String);
-    method public abstract void onSetCaptionEnabled(boolean);
-    method public abstract void onSetStreamVolume(@FloatRange(from=0.0, to=1.0) float);
-    method public abstract boolean onSetSurface(@Nullable android.view.Surface);
-    method public void onSurfaceChanged(int, int, int);
-    method public long onTimeShiftGetCurrentPosition();
-    method public long onTimeShiftGetStartPosition();
-    method public void onTimeShiftPause();
-    method public void onTimeShiftPlay(android.net.Uri);
-    method public void onTimeShiftResume();
-    method public void onTimeShiftSeekTo(long);
-    method public void onTimeShiftSetPlaybackParams(android.media.PlaybackParams);
-    method public boolean onTouchEvent(android.view.MotionEvent);
-    method public boolean onTrackballEvent(android.view.MotionEvent);
-    method public abstract boolean onTune(android.net.Uri);
-    method public boolean onTune(android.net.Uri, android.os.Bundle);
-    method public void onUnblockContent(android.media.tv.TvContentRating);
-    method public void setOverlayViewEnabled(boolean);
-  }
-
-  public class TvRecordingClient {
-    ctor public TvRecordingClient(android.content.Context, String, @NonNull android.media.tv.TvRecordingClient.RecordingCallback, android.os.Handler);
-    method public void release();
-    method public void sendAppPrivateCommand(@NonNull String, android.os.Bundle);
-    method public void startRecording(@Nullable android.net.Uri);
-    method public void startRecording(@Nullable android.net.Uri, @NonNull android.os.Bundle);
-    method public void stopRecording();
-    method public void tune(String, android.net.Uri);
-    method public void tune(String, android.net.Uri, android.os.Bundle);
-  }
-
-  public abstract static class TvRecordingClient.RecordingCallback {
-    ctor public TvRecordingClient.RecordingCallback();
-    method public void onConnectionFailed(String);
-    method public void onDisconnected(String);
-    method public void onError(int);
-    method public void onRecordingStopped(android.net.Uri);
-    method public void onTuned(android.net.Uri);
-  }
-
-  public final class TvTrackInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAudioChannelCount();
-    method public int getAudioSampleRate();
-    method public CharSequence getDescription();
-    method @Nullable public String getEncoding();
-    method public android.os.Bundle getExtra();
-    method public String getId();
-    method public String getLanguage();
-    method public int getType();
-    method public byte getVideoActiveFormatDescription();
-    method public float getVideoFrameRate();
-    method public int getVideoHeight();
-    method public float getVideoPixelAspectRatio();
-    method public int getVideoWidth();
-    method public boolean isAudioDescription();
-    method public boolean isEncrypted();
-    method public boolean isHardOfHearing();
-    method public boolean isSpokenSubtitle();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.TvTrackInfo> CREATOR;
-    field public static final int TYPE_AUDIO = 0; // 0x0
-    field public static final int TYPE_SUBTITLE = 2; // 0x2
-    field public static final int TYPE_VIDEO = 1; // 0x1
-  }
-
-  public static final class TvTrackInfo.Builder {
-    ctor public TvTrackInfo.Builder(int, @NonNull String);
-    method @NonNull public android.media.tv.TvTrackInfo build();
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setAudioChannelCount(int);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setAudioDescription(boolean);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setAudioSampleRate(int);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setDescription(@NonNull CharSequence);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setEncoding(@Nullable String);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setEncrypted(boolean);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setExtra(@NonNull android.os.Bundle);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setHardOfHearing(boolean);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setLanguage(@NonNull String);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setSpokenSubtitle(boolean);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setVideoActiveFormatDescription(byte);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setVideoFrameRate(float);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setVideoHeight(int);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setVideoPixelAspectRatio(float);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setVideoWidth(int);
-  }
-
-  public class TvView extends android.view.ViewGroup {
-    ctor public TvView(android.content.Context);
-    ctor public TvView(android.content.Context, android.util.AttributeSet);
-    ctor public TvView(android.content.Context, android.util.AttributeSet, int);
-    method public boolean dispatchUnhandledInputEvent(android.view.InputEvent);
-    method public String getSelectedTrack(int);
-    method public java.util.List<android.media.tv.TvTrackInfo> getTracks(int);
-    method public boolean onUnhandledInputEvent(android.view.InputEvent);
-    method public void reset();
-    method public void selectTrack(int, String);
-    method public void sendAppPrivateCommand(@NonNull String, android.os.Bundle);
-    method public void setCallback(@Nullable android.media.tv.TvView.TvInputCallback);
-    method public void setCaptionEnabled(boolean);
-    method public void setOnUnhandledInputEventListener(android.media.tv.TvView.OnUnhandledInputEventListener);
-    method public void setStreamVolume(@FloatRange(from=0.0, to=1.0) float);
-    method public void setTimeShiftPositionCallback(@Nullable android.media.tv.TvView.TimeShiftPositionCallback);
-    method public void setZOrderMediaOverlay(boolean);
-    method public void setZOrderOnTop(boolean);
-    method public void timeShiftPause();
-    method public void timeShiftPlay(String, android.net.Uri);
-    method public void timeShiftResume();
-    method public void timeShiftSeekTo(long);
-    method public void timeShiftSetPlaybackParams(@NonNull android.media.PlaybackParams);
-    method public void tune(@NonNull String, android.net.Uri);
-    method public void tune(String, android.net.Uri, android.os.Bundle);
-  }
-
-  public static interface TvView.OnUnhandledInputEventListener {
-    method public boolean onUnhandledInputEvent(android.view.InputEvent);
-  }
-
-  public abstract static class TvView.TimeShiftPositionCallback {
-    ctor public TvView.TimeShiftPositionCallback();
-    method public void onTimeShiftCurrentPositionChanged(String, long);
-    method public void onTimeShiftStartPositionChanged(String, long);
-  }
-
-  public abstract static class TvView.TvInputCallback {
-    ctor public TvView.TvInputCallback();
-    method public void onChannelRetuned(String, android.net.Uri);
-    method public void onConnectionFailed(String);
-    method public void onContentAllowed(String);
-    method public void onContentBlocked(String, android.media.tv.TvContentRating);
-    method public void onDisconnected(String);
-    method public void onTimeShiftStatusChanged(String, int);
-    method public void onTrackSelected(String, int, String);
-    method public void onTracksChanged(String, java.util.List<android.media.tv.TvTrackInfo>);
-    method public void onVideoAvailable(String);
-    method public void onVideoSizeChanged(String, int, int);
-    method public void onVideoUnavailable(String, int);
-  }
-
-}
-
-package android.mtp {
-
-  public final class MtpConstants {
-    ctor public MtpConstants();
-    method public static boolean isAbstractObject(int);
-    field public static final int ASSOCIATION_TYPE_GENERIC_FOLDER = 1; // 0x1
-    field public static final int FORMAT_3GP_CONTAINER = 47492; // 0xb984
-    field public static final int FORMAT_AAC = 47363; // 0xb903
-    field public static final int FORMAT_ABSTRACT_AUDIO_ALBUM = 47619; // 0xba03
-    field public static final int FORMAT_ABSTRACT_AUDIO_PLAYLIST = 47625; // 0xba09
-    field public static final int FORMAT_ABSTRACT_AV_PLAYLIST = 47621; // 0xba05
-    field public static final int FORMAT_ABSTRACT_DOCUMENT = 47745; // 0xba81
-    field public static final int FORMAT_ABSTRACT_IMAGE_ALBUM = 47618; // 0xba02
-    field public static final int FORMAT_ABSTRACT_MEDIACAST = 47627; // 0xba0b
-    field public static final int FORMAT_ABSTRACT_MULTIMEDIA_ALBUM = 47617; // 0xba01
-    field public static final int FORMAT_ABSTRACT_VIDEO_ALBUM = 47620; // 0xba04
-    field public static final int FORMAT_ABSTRACT_VIDEO_PLAYLIST = 47626; // 0xba0a
-    field public static final int FORMAT_AIFF = 12295; // 0x3007
-    field public static final int FORMAT_ASF = 12300; // 0x300c
-    field public static final int FORMAT_ASSOCIATION = 12289; // 0x3001
-    field public static final int FORMAT_ASX_PLAYLIST = 47635; // 0xba13
-    field public static final int FORMAT_AUDIBLE = 47364; // 0xb904
-    field public static final int FORMAT_AVI = 12298; // 0x300a
-    field public static final int FORMAT_BMP = 14340; // 0x3804
-    field public static final int FORMAT_DEFINED = 14336; // 0x3800
-    field public static final int FORMAT_DNG = 14353; // 0x3811
-    field public static final int FORMAT_DPOF = 12294; // 0x3006
-    field public static final int FORMAT_EXECUTABLE = 12291; // 0x3003
-    field public static final int FORMAT_EXIF_JPEG = 14337; // 0x3801
-    field public static final int FORMAT_FLAC = 47366; // 0xb906
-    field public static final int FORMAT_GIF = 14343; // 0x3807
-    field public static final int FORMAT_HTML = 12293; // 0x3005
-    field public static final int FORMAT_JFIF = 14344; // 0x3808
-    field public static final int FORMAT_JP2 = 14351; // 0x380f
-    field public static final int FORMAT_JPX = 14352; // 0x3810
-    field public static final int FORMAT_M3U_PLAYLIST = 47633; // 0xba11
-    field public static final int FORMAT_MP2 = 47491; // 0xb983
-    field public static final int FORMAT_MP3 = 12297; // 0x3009
-    field public static final int FORMAT_MP4_CONTAINER = 47490; // 0xb982
-    field public static final int FORMAT_MPEG = 12299; // 0x300b
-    field public static final int FORMAT_MPL_PLAYLIST = 47634; // 0xba12
-    field public static final int FORMAT_MS_EXCEL_SPREADSHEET = 47749; // 0xba85
-    field public static final int FORMAT_MS_POWERPOINT_PRESENTATION = 47750; // 0xba86
-    field public static final int FORMAT_MS_WORD_DOCUMENT = 47747; // 0xba83
-    field public static final int FORMAT_OGG = 47362; // 0xb902
-    field public static final int FORMAT_PICT = 14346; // 0x380a
-    field public static final int FORMAT_PLS_PLAYLIST = 47636; // 0xba14
-    field public static final int FORMAT_PNG = 14347; // 0x380b
-    field public static final int FORMAT_SCRIPT = 12290; // 0x3002
-    field public static final int FORMAT_TEXT = 12292; // 0x3004
-    field public static final int FORMAT_TIFF = 14349; // 0x380d
-    field public static final int FORMAT_TIFF_EP = 14338; // 0x3802
-    field public static final int FORMAT_UNDEFINED = 12288; // 0x3000
-    field public static final int FORMAT_UNDEFINED_AUDIO = 47360; // 0xb900
-    field public static final int FORMAT_UNDEFINED_COLLECTION = 47616; // 0xba00
-    field public static final int FORMAT_UNDEFINED_DOCUMENT = 47744; // 0xba80
-    field public static final int FORMAT_UNDEFINED_FIRMWARE = 47106; // 0xb802
-    field public static final int FORMAT_UNDEFINED_VIDEO = 47488; // 0xb980
-    field public static final int FORMAT_WAV = 12296; // 0x3008
-    field public static final int FORMAT_WINDOWS_IMAGE_FORMAT = 47233; // 0xb881
-    field public static final int FORMAT_WMA = 47361; // 0xb901
-    field public static final int FORMAT_WMV = 47489; // 0xb981
-    field public static final int FORMAT_WPL_PLAYLIST = 47632; // 0xba10
-    field public static final int FORMAT_XML_DOCUMENT = 47746; // 0xba82
-    field public static final int OPERATION_CLOSE_SESSION = 4099; // 0x1003
-    field public static final int OPERATION_COPY_OBJECT = 4122; // 0x101a
-    field public static final int OPERATION_DELETE_OBJECT = 4107; // 0x100b
-    field public static final int OPERATION_FORMAT_STORE = 4111; // 0x100f
-    field public static final int OPERATION_GET_DEVICE_INFO = 4097; // 0x1001
-    field public static final int OPERATION_GET_DEVICE_PROP_DESC = 4116; // 0x1014
-    field public static final int OPERATION_GET_DEVICE_PROP_VALUE = 4117; // 0x1015
-    field public static final int OPERATION_GET_NUM_OBJECTS = 4102; // 0x1006
-    field public static final int OPERATION_GET_OBJECT = 4105; // 0x1009
-    field public static final int OPERATION_GET_OBJECT_HANDLES = 4103; // 0x1007
-    field public static final int OPERATION_GET_OBJECT_INFO = 4104; // 0x1008
-    field public static final int OPERATION_GET_OBJECT_PROPS_SUPPORTED = 38913; // 0x9801
-    field public static final int OPERATION_GET_OBJECT_PROP_DESC = 38914; // 0x9802
-    field public static final int OPERATION_GET_OBJECT_PROP_VALUE = 38915; // 0x9803
-    field public static final int OPERATION_GET_OBJECT_REFERENCES = 38928; // 0x9810
-    field public static final int OPERATION_GET_PARTIAL_OBJECT = 4123; // 0x101b
-    field public static final int OPERATION_GET_PARTIAL_OBJECT_64 = 38337; // 0x95c1
-    field public static final int OPERATION_GET_STORAGE_INFO = 4101; // 0x1005
-    field public static final int OPERATION_GET_STORAGE_I_DS = 4100; // 0x1004
-    field public static final int OPERATION_GET_THUMB = 4106; // 0x100a
-    field public static final int OPERATION_INITIATE_CAPTURE = 4110; // 0x100e
-    field public static final int OPERATION_INITIATE_OPEN_CAPTURE = 4124; // 0x101c
-    field public static final int OPERATION_MOVE_OBJECT = 4121; // 0x1019
-    field public static final int OPERATION_OPEN_SESSION = 4098; // 0x1002
-    field public static final int OPERATION_POWER_DOWN = 4115; // 0x1013
-    field public static final int OPERATION_RESET_DEVICE = 4112; // 0x1010
-    field public static final int OPERATION_RESET_DEVICE_PROP_VALUE = 4119; // 0x1017
-    field public static final int OPERATION_SELF_TEST = 4113; // 0x1011
-    field public static final int OPERATION_SEND_OBJECT = 4109; // 0x100d
-    field public static final int OPERATION_SEND_OBJECT_INFO = 4108; // 0x100c
-    field public static final int OPERATION_SET_DEVICE_PROP_VALUE = 4118; // 0x1016
-    field public static final int OPERATION_SET_OBJECT_PROP_VALUE = 38916; // 0x9804
-    field public static final int OPERATION_SET_OBJECT_PROTECTION = 4114; // 0x1012
-    field public static final int OPERATION_SET_OBJECT_REFERENCES = 38929; // 0x9811
-    field public static final int OPERATION_SKIP = 38944; // 0x9820
-    field public static final int OPERATION_TERMINATE_OPEN_CAPTURE = 4120; // 0x1018
-    field public static final int PROTECTION_STATUS_NONE = 0; // 0x0
-    field public static final int PROTECTION_STATUS_NON_TRANSFERABLE_DATA = 32771; // 0x8003
-    field public static final int PROTECTION_STATUS_READ_ONLY = 32769; // 0x8001
-    field public static final int PROTECTION_STATUS_READ_ONLY_DATA = 32770; // 0x8002
-  }
-
-  public final class MtpDevice {
-    ctor public MtpDevice(@NonNull android.hardware.usb.UsbDevice);
-    method public void close();
-    method public boolean deleteObject(int);
-    method public int getDeviceId();
-    method @Nullable public android.mtp.MtpDeviceInfo getDeviceInfo();
-    method @NonNull public String getDeviceName();
-    method @Nullable public byte[] getObject(int, int);
-    method @Nullable public int[] getObjectHandles(int, int, int);
-    method @Nullable public android.mtp.MtpObjectInfo getObjectInfo(int);
-    method public long getParent(int);
-    method public long getPartialObject(int, long, long, @NonNull byte[]) throws java.io.IOException;
-    method public long getPartialObject64(int, long, long, @NonNull byte[]) throws java.io.IOException;
-    method public long getStorageId(int);
-    method @Nullable public int[] getStorageIds();
-    method @Nullable public android.mtp.MtpStorageInfo getStorageInfo(int);
-    method @Nullable public byte[] getThumbnail(int);
-    method public boolean importFile(int, @NonNull String);
-    method public boolean importFile(int, @NonNull android.os.ParcelFileDescriptor);
-    method public boolean open(@NonNull android.hardware.usb.UsbDeviceConnection);
-    method @NonNull public android.mtp.MtpEvent readEvent(@Nullable android.os.CancellationSignal) throws java.io.IOException;
-    method public boolean sendObject(int, long, @NonNull android.os.ParcelFileDescriptor);
-    method @Nullable public android.mtp.MtpObjectInfo sendObjectInfo(@NonNull android.mtp.MtpObjectInfo);
-  }
-
-  public class MtpDeviceInfo {
-    method @NonNull public final int[] getEventsSupported();
-    method @NonNull public final String getManufacturer();
-    method @NonNull public final String getModel();
-    method @NonNull public final int[] getOperationsSupported();
-    method @NonNull public final String getSerialNumber();
-    method @NonNull public final String getVersion();
-    method public boolean isEventSupported(int);
-    method public boolean isOperationSupported(int);
-  }
-
-  public class MtpEvent {
-    method public int getDevicePropCode();
-    method public int getEventCode();
-    method public int getObjectFormatCode();
-    method public int getObjectHandle();
-    method public int getObjectPropCode();
-    method public int getParameter1();
-    method public int getParameter2();
-    method public int getParameter3();
-    method public int getStorageId();
-    method public int getTransactionId();
-    field public static final int EVENT_CANCEL_TRANSACTION = 16385; // 0x4001
-    field public static final int EVENT_CAPTURE_COMPLETE = 16397; // 0x400d
-    field public static final int EVENT_DEVICE_INFO_CHANGED = 16392; // 0x4008
-    field public static final int EVENT_DEVICE_PROP_CHANGED = 16390; // 0x4006
-    field public static final int EVENT_DEVICE_RESET = 16395; // 0x400b
-    field public static final int EVENT_OBJECT_ADDED = 16386; // 0x4002
-    field public static final int EVENT_OBJECT_INFO_CHANGED = 16391; // 0x4007
-    field public static final int EVENT_OBJECT_PROP_CHANGED = 51201; // 0xc801
-    field public static final int EVENT_OBJECT_PROP_DESC_CHANGED = 51202; // 0xc802
-    field public static final int EVENT_OBJECT_REFERENCES_CHANGED = 51203; // 0xc803
-    field public static final int EVENT_OBJECT_REMOVED = 16387; // 0x4003
-    field public static final int EVENT_REQUEST_OBJECT_TRANSFER = 16393; // 0x4009
-    field public static final int EVENT_STORAGE_INFO_CHANGED = 16396; // 0x400c
-    field public static final int EVENT_STORE_ADDED = 16388; // 0x4004
-    field public static final int EVENT_STORE_FULL = 16394; // 0x400a
-    field public static final int EVENT_STORE_REMOVED = 16389; // 0x4005
-    field public static final int EVENT_UNDEFINED = 16384; // 0x4000
-    field public static final int EVENT_UNREPORTED_STATUS = 16398; // 0x400e
-  }
-
-  public final class MtpObjectInfo {
-    method public int getAssociationDesc();
-    method public int getAssociationType();
-    method public int getCompressedSize();
-    method public long getCompressedSizeLong();
-    method public long getDateCreated();
-    method public long getDateModified();
-    method public int getFormat();
-    method public int getImagePixDepth();
-    method public long getImagePixDepthLong();
-    method public int getImagePixHeight();
-    method public long getImagePixHeightLong();
-    method public int getImagePixWidth();
-    method public long getImagePixWidthLong();
-    method @NonNull public String getKeywords();
-    method @NonNull public String getName();
-    method public int getObjectHandle();
-    method public int getParent();
-    method public int getProtectionStatus();
-    method public int getSequenceNumber();
-    method public long getSequenceNumberLong();
-    method public int getStorageId();
-    method public int getThumbCompressedSize();
-    method public long getThumbCompressedSizeLong();
-    method public int getThumbFormat();
-    method public int getThumbPixHeight();
-    method public long getThumbPixHeightLong();
-    method public int getThumbPixWidth();
-    method public long getThumbPixWidthLong();
-  }
-
-  public static class MtpObjectInfo.Builder {
-    ctor public MtpObjectInfo.Builder();
-    ctor public MtpObjectInfo.Builder(android.mtp.MtpObjectInfo);
-    method public android.mtp.MtpObjectInfo build();
-    method public android.mtp.MtpObjectInfo.Builder setAssociationDesc(int);
-    method public android.mtp.MtpObjectInfo.Builder setAssociationType(int);
-    method public android.mtp.MtpObjectInfo.Builder setCompressedSize(long);
-    method public android.mtp.MtpObjectInfo.Builder setDateCreated(long);
-    method public android.mtp.MtpObjectInfo.Builder setDateModified(long);
-    method public android.mtp.MtpObjectInfo.Builder setFormat(int);
-    method public android.mtp.MtpObjectInfo.Builder setImagePixDepth(long);
-    method public android.mtp.MtpObjectInfo.Builder setImagePixHeight(long);
-    method public android.mtp.MtpObjectInfo.Builder setImagePixWidth(long);
-    method public android.mtp.MtpObjectInfo.Builder setKeywords(@NonNull String);
-    method public android.mtp.MtpObjectInfo.Builder setName(@NonNull String);
-    method public android.mtp.MtpObjectInfo.Builder setObjectHandle(int);
-    method public android.mtp.MtpObjectInfo.Builder setParent(int);
-    method public android.mtp.MtpObjectInfo.Builder setProtectionStatus(int);
-    method public android.mtp.MtpObjectInfo.Builder setSequenceNumber(long);
-    method public android.mtp.MtpObjectInfo.Builder setStorageId(int);
-    method public android.mtp.MtpObjectInfo.Builder setThumbCompressedSize(long);
-    method public android.mtp.MtpObjectInfo.Builder setThumbFormat(int);
-    method public android.mtp.MtpObjectInfo.Builder setThumbPixHeight(long);
-    method public android.mtp.MtpObjectInfo.Builder setThumbPixWidth(long);
-  }
-
-  public final class MtpStorageInfo {
-    method @NonNull public String getDescription();
-    method public long getFreeSpace();
-    method public long getMaxCapacity();
-    method public int getStorageId();
-    method @NonNull public String getVolumeIdentifier();
-  }
-
-}
-
-package android.net {
-
-  public class CaptivePortal implements android.os.Parcelable {
-    method public int describeContents();
-    method public void ignoreNetwork();
-    method public void reportCaptivePortalDismissed();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.CaptivePortal> CREATOR;
-  }
-
-  public class ConnectivityDiagnosticsManager {
-    method public void registerConnectivityDiagnosticsCallback(@NonNull android.net.NetworkRequest, @NonNull java.util.concurrent.Executor, @NonNull android.net.ConnectivityDiagnosticsManager.ConnectivityDiagnosticsCallback);
-    method public void unregisterConnectivityDiagnosticsCallback(@NonNull android.net.ConnectivityDiagnosticsManager.ConnectivityDiagnosticsCallback);
-  }
-
-  public abstract static class ConnectivityDiagnosticsManager.ConnectivityDiagnosticsCallback {
-    ctor public ConnectivityDiagnosticsManager.ConnectivityDiagnosticsCallback();
-    method public void onConnectivityReportAvailable(@NonNull android.net.ConnectivityDiagnosticsManager.ConnectivityReport);
-    method public void onDataStallSuspected(@NonNull android.net.ConnectivityDiagnosticsManager.DataStallReport);
-    method public void onNetworkConnectivityReported(@NonNull android.net.Network, boolean);
-  }
-
-  public static final class ConnectivityDiagnosticsManager.ConnectivityReport implements android.os.Parcelable {
-    ctor public ConnectivityDiagnosticsManager.ConnectivityReport(@NonNull android.net.Network, long, @NonNull android.net.LinkProperties, @NonNull android.net.NetworkCapabilities, @NonNull android.os.PersistableBundle);
-    method public int describeContents();
-    method @NonNull public android.os.PersistableBundle getAdditionalInfo();
-    method @NonNull public android.net.LinkProperties getLinkProperties();
-    method @NonNull public android.net.Network getNetwork();
-    method @NonNull public android.net.NetworkCapabilities getNetworkCapabilities();
-    method public long getReportTimestamp();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.ConnectivityDiagnosticsManager.ConnectivityReport> CREATOR;
-    field public static final String KEY_NETWORK_PROBES_ATTEMPTED_BITMASK = "networkProbesAttempted";
-    field public static final String KEY_NETWORK_PROBES_SUCCEEDED_BITMASK = "networkProbesSucceeded";
-    field public static final String KEY_NETWORK_VALIDATION_RESULT = "networkValidationResult";
-    field public static final int NETWORK_PROBE_DNS = 4; // 0x4
-    field public static final int NETWORK_PROBE_FALLBACK = 32; // 0x20
-    field public static final int NETWORK_PROBE_HTTP = 8; // 0x8
-    field public static final int NETWORK_PROBE_HTTPS = 16; // 0x10
-    field public static final int NETWORK_PROBE_PRIVATE_DNS = 64; // 0x40
-    field public static final int NETWORK_VALIDATION_RESULT_INVALID = 0; // 0x0
-    field public static final int NETWORK_VALIDATION_RESULT_PARTIALLY_VALID = 2; // 0x2
-    field public static final int NETWORK_VALIDATION_RESULT_SKIPPED = 3; // 0x3
-    field public static final int NETWORK_VALIDATION_RESULT_VALID = 1; // 0x1
-  }
-
-  public static final class ConnectivityDiagnosticsManager.DataStallReport implements android.os.Parcelable {
-    ctor public ConnectivityDiagnosticsManager.DataStallReport(@NonNull android.net.Network, long, int, @NonNull android.net.LinkProperties, @NonNull android.net.NetworkCapabilities, @NonNull android.os.PersistableBundle);
-    method public int describeContents();
-    method public int getDetectionMethod();
-    method @NonNull public android.net.LinkProperties getLinkProperties();
-    method @NonNull public android.net.Network getNetwork();
-    method @NonNull public android.net.NetworkCapabilities getNetworkCapabilities();
-    method public long getReportTimestamp();
-    method @NonNull public android.os.PersistableBundle getStallDetails();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.ConnectivityDiagnosticsManager.DataStallReport> CREATOR;
-    field public static final int DETECTION_METHOD_DNS_EVENTS = 1; // 0x1
-    field public static final int DETECTION_METHOD_TCP_METRICS = 2; // 0x2
-    field public static final String KEY_DNS_CONSECUTIVE_TIMEOUTS = "dnsConsecutiveTimeouts";
-    field public static final String KEY_TCP_METRICS_COLLECTION_PERIOD_MILLIS = "tcpMetricsCollectionPeriodMillis";
-    field public static final String KEY_TCP_PACKET_FAIL_RATE = "tcpPacketFailRate";
-  }
-
-  public class ConnectivityManager {
-    method public void addDefaultNetworkActiveListener(android.net.ConnectivityManager.OnNetworkActiveListener);
-    method public boolean bindProcessToNetwork(@Nullable android.net.Network);
-    method @NonNull public android.net.SocketKeepalive createSocketKeepalive(@NonNull android.net.Network, @NonNull android.net.IpSecManager.UdpEncapsulationSocket, @NonNull java.net.InetAddress, @NonNull java.net.InetAddress, @NonNull java.util.concurrent.Executor, @NonNull android.net.SocketKeepalive.Callback);
-    method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.Network getActiveNetwork();
-    method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.NetworkInfo getActiveNetworkInfo();
-    method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.NetworkInfo[] getAllNetworkInfo();
-    method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.Network[] getAllNetworks();
-    method @Deprecated public boolean getBackgroundDataSetting();
-    method @Nullable public android.net.Network getBoundNetworkForProcess();
-    method public int getConnectionOwnerUid(int, @NonNull java.net.InetSocketAddress, @NonNull java.net.InetSocketAddress);
-    method @Nullable public android.net.ProxyInfo getDefaultProxy();
-    method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.LinkProperties getLinkProperties(@Nullable android.net.Network);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public int getMultipathPreference(@Nullable android.net.Network);
-    method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.NetworkCapabilities getNetworkCapabilities(@Nullable android.net.Network);
-    method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.NetworkInfo getNetworkInfo(int);
-    method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.NetworkInfo getNetworkInfo(@Nullable android.net.Network);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public int getNetworkPreference();
-    method @Nullable public byte[] getNetworkWatchlistConfigHash();
-    method @Deprecated @Nullable public static android.net.Network getProcessDefaultNetwork();
-    method public int getRestrictBackgroundStatus();
-    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public boolean isActiveNetworkMetered();
-    method public boolean isDefaultNetworkActive();
-    method @Deprecated public static boolean isNetworkTypeValid(int);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerDefaultNetworkCallback(@NonNull android.net.ConnectivityManager.NetworkCallback);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerDefaultNetworkCallback(@NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerNetworkCallback(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerNetworkCallback(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerNetworkCallback(@NonNull android.net.NetworkRequest, @NonNull android.app.PendingIntent);
-    method public void releaseNetworkRequest(@NonNull android.app.PendingIntent);
-    method public void removeDefaultNetworkActiveListener(@NonNull android.net.ConnectivityManager.OnNetworkActiveListener);
-    method @Deprecated public void reportBadNetwork(@Nullable android.net.Network);
-    method public void reportNetworkConnectivity(@Nullable android.net.Network, boolean);
-    method public boolean requestBandwidthUpdate(@NonNull android.net.Network);
-    method public void requestNetwork(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback);
-    method public void requestNetwork(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
-    method public void requestNetwork(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback, int);
-    method public void requestNetwork(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler, int);
-    method public void requestNetwork(@NonNull android.net.NetworkRequest, @NonNull android.app.PendingIntent);
-    method @Deprecated public void setNetworkPreference(int);
-    method @Deprecated public static boolean setProcessDefaultNetwork(@Nullable android.net.Network);
-    method public void unregisterNetworkCallback(@NonNull android.net.ConnectivityManager.NetworkCallback);
-    method public void unregisterNetworkCallback(@NonNull android.app.PendingIntent);
-    field @Deprecated public static final String ACTION_BACKGROUND_DATA_SETTING_CHANGED = "android.net.conn.BACKGROUND_DATA_SETTING_CHANGED";
-    field public static final String ACTION_CAPTIVE_PORTAL_SIGN_IN = "android.net.conn.CAPTIVE_PORTAL";
-    field public static final String ACTION_RESTRICT_BACKGROUND_CHANGED = "android.net.conn.RESTRICT_BACKGROUND_CHANGED";
-    field @Deprecated public static final String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
-    field @Deprecated public static final int DEFAULT_NETWORK_PREFERENCE = 1; // 0x1
-    field public static final String EXTRA_CAPTIVE_PORTAL = "android.net.extra.CAPTIVE_PORTAL";
-    field public static final String EXTRA_CAPTIVE_PORTAL_URL = "android.net.extra.CAPTIVE_PORTAL_URL";
-    field @Deprecated public static final String EXTRA_EXTRA_INFO = "extraInfo";
-    field @Deprecated public static final String EXTRA_IS_FAILOVER = "isFailover";
-    field public static final String EXTRA_NETWORK = "android.net.extra.NETWORK";
-    field @Deprecated public static final String EXTRA_NETWORK_INFO = "networkInfo";
-    field public static final String EXTRA_NETWORK_REQUEST = "android.net.extra.NETWORK_REQUEST";
-    field @Deprecated public static final String EXTRA_NETWORK_TYPE = "networkType";
-    field public static final String EXTRA_NO_CONNECTIVITY = "noConnectivity";
-    field @Deprecated public static final String EXTRA_OTHER_NETWORK_INFO = "otherNetwork";
-    field public static final String EXTRA_REASON = "reason";
-    field public static final int MULTIPATH_PREFERENCE_HANDOVER = 1; // 0x1
-    field public static final int MULTIPATH_PREFERENCE_PERFORMANCE = 4; // 0x4
-    field public static final int MULTIPATH_PREFERENCE_RELIABILITY = 2; // 0x2
-    field public static final int RESTRICT_BACKGROUND_STATUS_DISABLED = 1; // 0x1
-    field public static final int RESTRICT_BACKGROUND_STATUS_ENABLED = 3; // 0x3
-    field public static final int RESTRICT_BACKGROUND_STATUS_WHITELISTED = 2; // 0x2
-    field @Deprecated public static final int TYPE_BLUETOOTH = 7; // 0x7
-    field @Deprecated public static final int TYPE_DUMMY = 8; // 0x8
-    field @Deprecated public static final int TYPE_ETHERNET = 9; // 0x9
-    field @Deprecated public static final int TYPE_MOBILE = 0; // 0x0
-    field @Deprecated public static final int TYPE_MOBILE_DUN = 4; // 0x4
-    field @Deprecated public static final int TYPE_MOBILE_HIPRI = 5; // 0x5
-    field @Deprecated public static final int TYPE_MOBILE_MMS = 2; // 0x2
-    field @Deprecated public static final int TYPE_MOBILE_SUPL = 3; // 0x3
-    field @Deprecated public static final int TYPE_VPN = 17; // 0x11
-    field @Deprecated public static final int TYPE_WIFI = 1; // 0x1
-    field @Deprecated public static final int TYPE_WIMAX = 6; // 0x6
-  }
-
-  public static class ConnectivityManager.NetworkCallback {
-    ctor public ConnectivityManager.NetworkCallback();
-    method public void onAvailable(@NonNull android.net.Network);
-    method public void onBlockedStatusChanged(@NonNull android.net.Network, boolean);
-    method public void onCapabilitiesChanged(@NonNull android.net.Network, @NonNull android.net.NetworkCapabilities);
-    method public void onLinkPropertiesChanged(@NonNull android.net.Network, @NonNull android.net.LinkProperties);
-    method public void onLosing(@NonNull android.net.Network, int);
-    method public void onLost(@NonNull android.net.Network);
-    method public void onUnavailable();
-  }
-
-  public static interface ConnectivityManager.OnNetworkActiveListener {
-    method public void onNetworkActive();
-  }
-
-  public class Credentials {
-    ctor public Credentials(int, int, int);
-    method public int getGid();
-    method public int getPid();
-    method public int getUid();
-  }
-
-  public class DhcpInfo implements android.os.Parcelable {
-    ctor public DhcpInfo();
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.DhcpInfo> CREATOR;
-    field public int dns1;
-    field public int dns2;
-    field public int gateway;
-    field public int ipAddress;
-    field public int leaseDuration;
-    field public int netmask;
-    field public int serverAddress;
-  }
-
-  public final class DnsResolver {
-    method @NonNull public static android.net.DnsResolver getInstance();
-    method public void query(@Nullable android.net.Network, @NonNull String, int, @NonNull java.util.concurrent.Executor, @Nullable android.os.CancellationSignal, @NonNull android.net.DnsResolver.Callback<? super java.util.List<java.net.InetAddress>>);
-    method public void query(@Nullable android.net.Network, @NonNull String, int, int, @NonNull java.util.concurrent.Executor, @Nullable android.os.CancellationSignal, @NonNull android.net.DnsResolver.Callback<? super java.util.List<java.net.InetAddress>>);
-    method public void rawQuery(@Nullable android.net.Network, @NonNull byte[], int, @NonNull java.util.concurrent.Executor, @Nullable android.os.CancellationSignal, @NonNull android.net.DnsResolver.Callback<? super byte[]>);
-    method public void rawQuery(@Nullable android.net.Network, @NonNull String, int, int, int, @NonNull java.util.concurrent.Executor, @Nullable android.os.CancellationSignal, @NonNull android.net.DnsResolver.Callback<? super byte[]>);
-    field public static final int CLASS_IN = 1; // 0x1
-    field public static final int ERROR_PARSE = 0; // 0x0
-    field public static final int ERROR_SYSTEM = 1; // 0x1
-    field public static final int FLAG_EMPTY = 0; // 0x0
-    field public static final int FLAG_NO_CACHE_LOOKUP = 4; // 0x4
-    field public static final int FLAG_NO_CACHE_STORE = 2; // 0x2
-    field public static final int FLAG_NO_RETRY = 1; // 0x1
-    field public static final int TYPE_A = 1; // 0x1
-    field public static final int TYPE_AAAA = 28; // 0x1c
-  }
-
-  public static interface DnsResolver.Callback<T> {
-    method public void onAnswer(@NonNull T, int);
-    method public void onError(@NonNull android.net.DnsResolver.DnsException);
-  }
-
-  public static class DnsResolver.DnsException extends java.lang.Exception {
-    field public final int code;
-  }
-
-  public final class Ikev2VpnProfile extends android.net.PlatformVpnProfile {
-    method @NonNull public java.util.List<java.lang.String> getAllowedAlgorithms();
-    method public int getMaxMtu();
-    method @Nullable public String getPassword();
-    method @Nullable public byte[] getPresharedKey();
-    method @Nullable public android.net.ProxyInfo getProxyInfo();
-    method @Nullable public java.security.PrivateKey getRsaPrivateKey();
-    method @NonNull public String getServerAddr();
-    method @Nullable public java.security.cert.X509Certificate getServerRootCaCert();
-    method @Nullable public java.security.cert.X509Certificate getUserCert();
-    method @NonNull public String getUserIdentity();
-    method @Nullable public String getUsername();
-    method public boolean isBypassable();
-    method public boolean isMetered();
-  }
-
-  public static final class Ikev2VpnProfile.Builder {
-    ctor public Ikev2VpnProfile.Builder(@NonNull String, @NonNull String);
-    method @NonNull public android.net.Ikev2VpnProfile build();
-    method @NonNull public android.net.Ikev2VpnProfile.Builder setAllowedAlgorithms(@NonNull java.util.List<java.lang.String>);
-    method @NonNull public android.net.Ikev2VpnProfile.Builder setAuthDigitalSignature(@NonNull java.security.cert.X509Certificate, @NonNull java.security.PrivateKey, @Nullable java.security.cert.X509Certificate);
-    method @NonNull public android.net.Ikev2VpnProfile.Builder setAuthPsk(@NonNull byte[]);
-    method @NonNull public android.net.Ikev2VpnProfile.Builder setAuthUsernamePassword(@NonNull String, @NonNull String, @Nullable java.security.cert.X509Certificate);
-    method @NonNull public android.net.Ikev2VpnProfile.Builder setBypassable(boolean);
-    method @NonNull public android.net.Ikev2VpnProfile.Builder setMaxMtu(int);
-    method @NonNull public android.net.Ikev2VpnProfile.Builder setMetered(boolean);
-    method @NonNull public android.net.Ikev2VpnProfile.Builder setProxy(@Nullable android.net.ProxyInfo);
-  }
-
-  public class InetAddresses {
-    method public static boolean isNumericAddress(@NonNull String);
-    method @NonNull public static java.net.InetAddress parseNumericAddress(@NonNull String);
-  }
-
-  public final class IpPrefix implements android.os.Parcelable {
-    method public boolean contains(@NonNull java.net.InetAddress);
-    method public int describeContents();
-    method @NonNull public java.net.InetAddress getAddress();
-    method @IntRange(from=0, to=128) public int getPrefixLength();
-    method @NonNull public byte[] getRawAddress();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.IpPrefix> CREATOR;
-  }
-
-  public final class IpSecAlgorithm implements android.os.Parcelable {
-    ctor public IpSecAlgorithm(@NonNull String, @NonNull byte[]);
-    ctor public IpSecAlgorithm(@NonNull String, @NonNull byte[], int);
-    method public int describeContents();
-    method @NonNull public byte[] getKey();
-    method @NonNull public String getName();
-    method public int getTruncationLengthBits();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final String AUTH_CRYPT_AES_GCM = "rfc4106(gcm(aes))";
-    field public static final String AUTH_HMAC_MD5 = "hmac(md5)";
-    field public static final String AUTH_HMAC_SHA1 = "hmac(sha1)";
-    field public static final String AUTH_HMAC_SHA256 = "hmac(sha256)";
-    field public static final String AUTH_HMAC_SHA384 = "hmac(sha384)";
-    field public static final String AUTH_HMAC_SHA512 = "hmac(sha512)";
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.IpSecAlgorithm> CREATOR;
-    field public static final String CRYPT_AES_CBC = "cbc(aes)";
-  }
-
-  public final class IpSecManager {
-    method @NonNull public android.net.IpSecManager.SecurityParameterIndex allocateSecurityParameterIndex(@NonNull java.net.InetAddress) throws android.net.IpSecManager.ResourceUnavailableException;
-    method @NonNull public android.net.IpSecManager.SecurityParameterIndex allocateSecurityParameterIndex(@NonNull java.net.InetAddress, int) throws android.net.IpSecManager.ResourceUnavailableException, android.net.IpSecManager.SpiUnavailableException;
-    method public void applyTransportModeTransform(@NonNull java.net.Socket, int, @NonNull android.net.IpSecTransform) throws java.io.IOException;
-    method public void applyTransportModeTransform(@NonNull java.net.DatagramSocket, int, @NonNull android.net.IpSecTransform) throws java.io.IOException;
-    method public void applyTransportModeTransform(@NonNull java.io.FileDescriptor, int, @NonNull android.net.IpSecTransform) throws java.io.IOException;
-    method @NonNull public android.net.IpSecManager.UdpEncapsulationSocket openUdpEncapsulationSocket(int) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException;
-    method @NonNull public android.net.IpSecManager.UdpEncapsulationSocket openUdpEncapsulationSocket() throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException;
-    method public void removeTransportModeTransforms(@NonNull java.net.Socket) throws java.io.IOException;
-    method public void removeTransportModeTransforms(@NonNull java.net.DatagramSocket) throws java.io.IOException;
-    method public void removeTransportModeTransforms(@NonNull java.io.FileDescriptor) throws java.io.IOException;
-    field public static final int DIRECTION_IN = 0; // 0x0
-    field public static final int DIRECTION_OUT = 1; // 0x1
-  }
-
-  public static final class IpSecManager.ResourceUnavailableException extends android.util.AndroidException {
-  }
-
-  public static final class IpSecManager.SecurityParameterIndex implements java.lang.AutoCloseable {
-    method public void close();
-    method public int getSpi();
-  }
-
-  public static final class IpSecManager.SpiUnavailableException extends android.util.AndroidException {
-    method public int getSpi();
-  }
-
-  public static final class IpSecManager.UdpEncapsulationSocket implements java.lang.AutoCloseable {
-    method public void close() throws java.io.IOException;
-    method public java.io.FileDescriptor getFileDescriptor();
-    method public int getPort();
-  }
-
-  public final class IpSecTransform implements java.lang.AutoCloseable {
-    method public void close();
-  }
-
-  public static class IpSecTransform.Builder {
-    ctor public IpSecTransform.Builder(@NonNull android.content.Context);
-    method @NonNull public android.net.IpSecTransform buildTransportModeTransform(@NonNull java.net.InetAddress, @NonNull android.net.IpSecManager.SecurityParameterIndex) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException, android.net.IpSecManager.SpiUnavailableException;
-    method @NonNull public android.net.IpSecTransform.Builder setAuthenticatedEncryption(@NonNull android.net.IpSecAlgorithm);
-    method @NonNull public android.net.IpSecTransform.Builder setAuthentication(@NonNull android.net.IpSecAlgorithm);
-    method @NonNull public android.net.IpSecTransform.Builder setEncryption(@NonNull android.net.IpSecAlgorithm);
-    method @NonNull public android.net.IpSecTransform.Builder setIpv4Encapsulation(@NonNull android.net.IpSecManager.UdpEncapsulationSocket, int);
-  }
-
-  public class LinkAddress implements android.os.Parcelable {
-    method public int describeContents();
-    method public java.net.InetAddress getAddress();
-    method public int getFlags();
-    method @IntRange(from=0, to=128) public int getPrefixLength();
-    method public int getScope();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.LinkAddress> CREATOR;
-  }
-
-  public final class LinkProperties implements android.os.Parcelable {
-    ctor public LinkProperties();
-    method public boolean addRoute(@NonNull android.net.RouteInfo);
-    method public void clear();
-    method public int describeContents();
-    method @Nullable public java.net.Inet4Address getDhcpServerAddress();
-    method @NonNull public java.util.List<java.net.InetAddress> getDnsServers();
-    method @Nullable public String getDomains();
-    method @Nullable public android.net.ProxyInfo getHttpProxy();
-    method @Nullable public String getInterfaceName();
-    method @NonNull public java.util.List<android.net.LinkAddress> getLinkAddresses();
-    method public int getMtu();
-    method @Nullable public android.net.IpPrefix getNat64Prefix();
-    method @Nullable public String getPrivateDnsServerName();
-    method @NonNull public java.util.List<android.net.RouteInfo> getRoutes();
-    method public boolean isPrivateDnsActive();
-    method public boolean isWakeOnLanSupported();
-    method public void setDhcpServerAddress(@Nullable java.net.Inet4Address);
-    method public void setDnsServers(@NonNull java.util.Collection<java.net.InetAddress>);
-    method public void setDomains(@Nullable String);
-    method public void setHttpProxy(@Nullable android.net.ProxyInfo);
-    method public void setInterfaceName(@Nullable String);
-    method public void setLinkAddresses(@NonNull java.util.Collection<android.net.LinkAddress>);
-    method public void setMtu(int);
-    method public void setNat64Prefix(@Nullable android.net.IpPrefix);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.LinkProperties> CREATOR;
-  }
-
-  public class LocalServerSocket implements java.io.Closeable {
-    ctor public LocalServerSocket(String) throws java.io.IOException;
-    ctor public LocalServerSocket(java.io.FileDescriptor) throws java.io.IOException;
-    method public android.net.LocalSocket accept() throws java.io.IOException;
-    method public void close() throws java.io.IOException;
-    method public java.io.FileDescriptor getFileDescriptor();
-    method public android.net.LocalSocketAddress getLocalSocketAddress();
-  }
-
-  public class LocalSocket implements java.io.Closeable {
-    ctor public LocalSocket();
-    ctor public LocalSocket(int);
-    method public void bind(android.net.LocalSocketAddress) throws java.io.IOException;
-    method public void close() throws java.io.IOException;
-    method public void connect(android.net.LocalSocketAddress) throws java.io.IOException;
-    method public void connect(android.net.LocalSocketAddress, int) throws java.io.IOException;
-    method public java.io.FileDescriptor[] getAncillaryFileDescriptors() throws java.io.IOException;
-    method public java.io.FileDescriptor getFileDescriptor();
-    method public java.io.InputStream getInputStream() throws java.io.IOException;
-    method public android.net.LocalSocketAddress getLocalSocketAddress();
-    method public java.io.OutputStream getOutputStream() throws java.io.IOException;
-    method public android.net.Credentials getPeerCredentials() throws java.io.IOException;
-    method public int getReceiveBufferSize() throws java.io.IOException;
-    method public android.net.LocalSocketAddress getRemoteSocketAddress();
-    method public int getSendBufferSize() throws java.io.IOException;
-    method public int getSoTimeout() throws java.io.IOException;
-    method public boolean isBound();
-    method public boolean isClosed();
-    method public boolean isConnected();
-    method public boolean isInputShutdown();
-    method public boolean isOutputShutdown();
-    method public void setFileDescriptorsForSend(java.io.FileDescriptor[]);
-    method public void setReceiveBufferSize(int) throws java.io.IOException;
-    method public void setSendBufferSize(int) throws java.io.IOException;
-    method public void setSoTimeout(int) throws java.io.IOException;
-    method public void shutdownInput() throws java.io.IOException;
-    method public void shutdownOutput() throws java.io.IOException;
-    field public static final int SOCKET_DGRAM = 1; // 0x1
-    field public static final int SOCKET_SEQPACKET = 3; // 0x3
-    field public static final int SOCKET_STREAM = 2; // 0x2
-  }
-
-  public class LocalSocketAddress {
-    ctor public LocalSocketAddress(String, android.net.LocalSocketAddress.Namespace);
-    ctor public LocalSocketAddress(String);
-    method public String getName();
-    method public android.net.LocalSocketAddress.Namespace getNamespace();
-  }
-
-  public enum LocalSocketAddress.Namespace {
-    enum_constant public static final android.net.LocalSocketAddress.Namespace ABSTRACT;
-    enum_constant public static final android.net.LocalSocketAddress.Namespace FILESYSTEM;
-    enum_constant public static final android.net.LocalSocketAddress.Namespace RESERVED;
-  }
-
-  public final class MacAddress implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public static android.net.MacAddress fromBytes(@NonNull byte[]);
-    method @NonNull public static android.net.MacAddress fromString(@NonNull String);
-    method public int getAddressType();
-    method @Nullable public java.net.Inet6Address getLinkLocalIpv6FromEui48Mac();
-    method public boolean isLocallyAssigned();
-    method public boolean matches(@NonNull android.net.MacAddress, @NonNull android.net.MacAddress);
-    method @NonNull public byte[] toByteArray();
-    method @NonNull public String toOuiString();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.net.MacAddress BROADCAST_ADDRESS;
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.MacAddress> CREATOR;
-    field public static final int TYPE_BROADCAST = 3; // 0x3
-    field public static final int TYPE_MULTICAST = 2; // 0x2
-    field public static final int TYPE_UNICAST = 1; // 0x1
-  }
-
-  public class MailTo {
-    method public String getBody();
-    method public String getCc();
-    method public java.util.Map<java.lang.String,java.lang.String> getHeaders();
-    method public String getSubject();
-    method public String getTo();
-    method public static boolean isMailTo(String);
-    method public static android.net.MailTo parse(String) throws android.net.ParseException;
-    field public static final String MAILTO_SCHEME = "mailto:";
-  }
-
-  public class Network implements android.os.Parcelable {
-    method public void bindSocket(java.net.DatagramSocket) throws java.io.IOException;
-    method public void bindSocket(java.net.Socket) throws java.io.IOException;
-    method public void bindSocket(java.io.FileDescriptor) throws java.io.IOException;
-    method public int describeContents();
-    method public static android.net.Network fromNetworkHandle(long);
-    method public java.net.InetAddress[] getAllByName(String) throws java.net.UnknownHostException;
-    method public java.net.InetAddress getByName(String) throws java.net.UnknownHostException;
-    method public long getNetworkHandle();
-    method public javax.net.SocketFactory getSocketFactory();
-    method public java.net.URLConnection openConnection(java.net.URL) throws java.io.IOException;
-    method public java.net.URLConnection openConnection(java.net.URL, java.net.Proxy) throws java.io.IOException;
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.Network> CREATOR;
-  }
-
-  public final class NetworkCapabilities implements android.os.Parcelable {
-    ctor public NetworkCapabilities();
-    ctor public NetworkCapabilities(android.net.NetworkCapabilities);
-    method public int describeContents();
-    method public int getLinkDownstreamBandwidthKbps();
-    method public int getLinkUpstreamBandwidthKbps();
-    method @Nullable public android.net.NetworkSpecifier getNetworkSpecifier();
-    method public int getOwnerUid();
-    method public int getSignalStrength();
-    method @Nullable public android.net.TransportInfo getTransportInfo();
-    method public boolean hasCapability(int);
-    method public boolean hasTransport(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkCapabilities> CREATOR;
-    field public static final int NET_CAPABILITY_CAPTIVE_PORTAL = 17; // 0x11
-    field public static final int NET_CAPABILITY_CBS = 5; // 0x5
-    field public static final int NET_CAPABILITY_DUN = 2; // 0x2
-    field public static final int NET_CAPABILITY_EIMS = 10; // 0xa
-    field public static final int NET_CAPABILITY_FOREGROUND = 19; // 0x13
-    field public static final int NET_CAPABILITY_FOTA = 3; // 0x3
-    field public static final int NET_CAPABILITY_IA = 7; // 0x7
-    field public static final int NET_CAPABILITY_IMS = 4; // 0x4
-    field public static final int NET_CAPABILITY_INTERNET = 12; // 0xc
-    field public static final int NET_CAPABILITY_MCX = 23; // 0x17
-    field public static final int NET_CAPABILITY_MMS = 0; // 0x0
-    field public static final int NET_CAPABILITY_NOT_CONGESTED = 20; // 0x14
-    field public static final int NET_CAPABILITY_NOT_METERED = 11; // 0xb
-    field public static final int NET_CAPABILITY_NOT_RESTRICTED = 13; // 0xd
-    field public static final int NET_CAPABILITY_NOT_ROAMING = 18; // 0x12
-    field public static final int NET_CAPABILITY_NOT_SUSPENDED = 21; // 0x15
-    field public static final int NET_CAPABILITY_NOT_VPN = 15; // 0xf
-    field public static final int NET_CAPABILITY_RCS = 8; // 0x8
-    field public static final int NET_CAPABILITY_SUPL = 1; // 0x1
-    field public static final int NET_CAPABILITY_TEMPORARILY_NOT_METERED = 25; // 0x19
-    field public static final int NET_CAPABILITY_TRUSTED = 14; // 0xe
-    field public static final int NET_CAPABILITY_VALIDATED = 16; // 0x10
-    field public static final int NET_CAPABILITY_WIFI_P2P = 6; // 0x6
-    field public static final int NET_CAPABILITY_XCAP = 9; // 0x9
-    field public static final int SIGNAL_STRENGTH_UNSPECIFIED = -2147483648; // 0x80000000
-    field public static final int TRANSPORT_BLUETOOTH = 2; // 0x2
-    field public static final int TRANSPORT_CELLULAR = 0; // 0x0
-    field public static final int TRANSPORT_ETHERNET = 3; // 0x3
-    field public static final int TRANSPORT_LOWPAN = 6; // 0x6
-    field public static final int TRANSPORT_VPN = 4; // 0x4
-    field public static final int TRANSPORT_WIFI = 1; // 0x1
-    field public static final int TRANSPORT_WIFI_AWARE = 5; // 0x5
-  }
-
-  @Deprecated public class NetworkInfo implements android.os.Parcelable {
-    ctor @Deprecated public NetworkInfo(int, int, @Nullable String, @Nullable String);
-    method @Deprecated public int describeContents();
-    method @Deprecated @NonNull public android.net.NetworkInfo.DetailedState getDetailedState();
-    method @Deprecated public String getExtraInfo();
-    method @Deprecated public String getReason();
-    method @Deprecated public android.net.NetworkInfo.State getState();
-    method @Deprecated public int getSubtype();
-    method @Deprecated public String getSubtypeName();
-    method @Deprecated public int getType();
-    method @Deprecated public String getTypeName();
-    method @Deprecated public boolean isAvailable();
-    method @Deprecated public boolean isConnected();
-    method @Deprecated public boolean isConnectedOrConnecting();
-    method @Deprecated public boolean isFailover();
-    method @Deprecated public boolean isRoaming();
-    method @Deprecated public void setDetailedState(@NonNull android.net.NetworkInfo.DetailedState, @Nullable String, @Nullable String);
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkInfo> CREATOR;
-  }
-
-  @Deprecated public enum NetworkInfo.DetailedState {
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState AUTHENTICATING;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState BLOCKED;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState CAPTIVE_PORTAL_CHECK;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState CONNECTED;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState CONNECTING;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState DISCONNECTED;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState DISCONNECTING;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState FAILED;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState IDLE;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState OBTAINING_IPADDR;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState SCANNING;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState SUSPENDED;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState VERIFYING_POOR_LINK;
-  }
-
-  @Deprecated public enum NetworkInfo.State {
-    enum_constant @Deprecated public static final android.net.NetworkInfo.State CONNECTED;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.State CONNECTING;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.State DISCONNECTED;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.State DISCONNECTING;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.State SUSPENDED;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.State UNKNOWN;
-  }
-
-  public class NetworkRequest implements android.os.Parcelable {
-    method public boolean canBeSatisfiedBy(@Nullable android.net.NetworkCapabilities);
-    method public int describeContents();
-    method @Nullable public android.net.NetworkSpecifier getNetworkSpecifier();
-    method public boolean hasCapability(int);
-    method public boolean hasTransport(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkRequest> CREATOR;
-  }
-
-  public static class NetworkRequest.Builder {
-    ctor public NetworkRequest.Builder();
-    method public android.net.NetworkRequest.Builder addCapability(int);
-    method public android.net.NetworkRequest.Builder addTransportType(int);
-    method public android.net.NetworkRequest build();
-    method @NonNull public android.net.NetworkRequest.Builder clearCapabilities();
-    method public android.net.NetworkRequest.Builder removeCapability(int);
-    method public android.net.NetworkRequest.Builder removeTransportType(int);
-    method @Deprecated public android.net.NetworkRequest.Builder setNetworkSpecifier(String);
-    method public android.net.NetworkRequest.Builder setNetworkSpecifier(android.net.NetworkSpecifier);
-  }
-
-  public abstract class NetworkSpecifier {
-    ctor public NetworkSpecifier();
-  }
-
-  public class ParseException extends java.lang.RuntimeException {
-    field public String response;
-  }
-
-  public abstract class PlatformVpnProfile {
-    method public final int getType();
-    method @NonNull public final String getTypeString();
-    field public static final int TYPE_IKEV2_IPSEC_PSK = 7; // 0x7
-    field public static final int TYPE_IKEV2_IPSEC_RSA = 8; // 0x8
-    field public static final int TYPE_IKEV2_IPSEC_USER_PASS = 6; // 0x6
-  }
-
-  public final class Proxy {
-    ctor public Proxy();
-    method @Deprecated public static String getDefaultHost();
-    method @Deprecated public static int getDefaultPort();
-    method @Deprecated public static String getHost(android.content.Context);
-    method @Deprecated public static int getPort(android.content.Context);
-    field @Deprecated public static final String EXTRA_PROXY_INFO = "android.intent.extra.PROXY_INFO";
-    field public static final String PROXY_CHANGE_ACTION = "android.intent.action.PROXY_CHANGE";
-  }
-
-  public class ProxyInfo implements android.os.Parcelable {
-    ctor public ProxyInfo(@Nullable android.net.ProxyInfo);
-    method public static android.net.ProxyInfo buildDirectProxy(String, int);
-    method public static android.net.ProxyInfo buildDirectProxy(String, int, java.util.List<java.lang.String>);
-    method public static android.net.ProxyInfo buildPacProxy(android.net.Uri);
-    method @NonNull public static android.net.ProxyInfo buildPacProxy(@NonNull android.net.Uri, int);
-    method public int describeContents();
-    method public String[] getExclusionList();
-    method public String getHost();
-    method public android.net.Uri getPacFileUrl();
-    method public int getPort();
-    method public boolean isValid();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.ProxyInfo> CREATOR;
-  }
-
-  public final class RouteInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.net.IpPrefix getDestination();
-    method @Nullable public java.net.InetAddress getGateway();
-    method @Nullable public String getInterface();
-    method public boolean hasGateway();
-    method public boolean isDefaultRoute();
-    method public boolean matches(java.net.InetAddress);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.RouteInfo> CREATOR;
-  }
-
-  @Deprecated public class SSLCertificateSocketFactory extends javax.net.ssl.SSLSocketFactory {
-    ctor @Deprecated public SSLCertificateSocketFactory(int);
-    method @Deprecated public java.net.Socket createSocket(java.net.Socket, String, int, boolean) throws java.io.IOException;
-    method @Deprecated public java.net.Socket createSocket(java.net.InetAddress, int, java.net.InetAddress, int) throws java.io.IOException;
-    method @Deprecated public java.net.Socket createSocket(java.net.InetAddress, int) throws java.io.IOException;
-    method @Deprecated public java.net.Socket createSocket(String, int, java.net.InetAddress, int) throws java.io.IOException;
-    method @Deprecated public java.net.Socket createSocket(String, int) throws java.io.IOException;
-    method @Deprecated public static javax.net.SocketFactory getDefault(int);
-    method @Deprecated public static javax.net.ssl.SSLSocketFactory getDefault(int, android.net.SSLSessionCache);
-    method @Deprecated public String[] getDefaultCipherSuites();
-    method @Deprecated public static javax.net.ssl.SSLSocketFactory getInsecure(int, android.net.SSLSessionCache);
-    method @Deprecated public byte[] getNpnSelectedProtocol(java.net.Socket);
-    method @Deprecated public String[] getSupportedCipherSuites();
-    method @Deprecated public void setHostname(java.net.Socket, String);
-    method @Deprecated public void setKeyManagers(javax.net.ssl.KeyManager[]);
-    method @Deprecated public void setNpnProtocols(byte[][]);
-    method @Deprecated public void setTrustManagers(javax.net.ssl.TrustManager[]);
-    method @Deprecated public void setUseSessionTickets(java.net.Socket, boolean);
-  }
-
-  public final class SSLSessionCache {
-    ctor public SSLSessionCache(java.io.File) throws java.io.IOException;
-    ctor public SSLSessionCache(android.content.Context);
-  }
-
-  public abstract class SocketKeepalive implements java.lang.AutoCloseable {
-    method public final void close();
-    method public final void start(@IntRange(from=0xa, to=0xe10) int);
-    method public final void stop();
-    field public static final int ERROR_HARDWARE_ERROR = -31; // 0xffffffe1
-    field public static final int ERROR_INSUFFICIENT_RESOURCES = -32; // 0xffffffe0
-    field public static final int ERROR_INVALID_INTERVAL = -24; // 0xffffffe8
-    field public static final int ERROR_INVALID_IP_ADDRESS = -21; // 0xffffffeb
-    field public static final int ERROR_INVALID_LENGTH = -23; // 0xffffffe9
-    field public static final int ERROR_INVALID_NETWORK = -20; // 0xffffffec
-    field public static final int ERROR_INVALID_PORT = -22; // 0xffffffea
-    field public static final int ERROR_INVALID_SOCKET = -25; // 0xffffffe7
-    field public static final int ERROR_SOCKET_NOT_IDLE = -26; // 0xffffffe6
-    field public static final int ERROR_UNSUPPORTED = -30; // 0xffffffe2
-  }
-
-  public static class SocketKeepalive.Callback {
-    ctor public SocketKeepalive.Callback();
-    method public void onDataReceived();
-    method public void onError(int);
-    method public void onStarted();
-    method public void onStopped();
-  }
-
-  public final class TelephonyNetworkSpecifier extends android.net.NetworkSpecifier implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getSubscriptionId();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.TelephonyNetworkSpecifier> CREATOR;
-  }
-
-  public static final class TelephonyNetworkSpecifier.Builder {
-    ctor public TelephonyNetworkSpecifier.Builder();
-    method @NonNull public android.net.TelephonyNetworkSpecifier build();
-    method @NonNull public android.net.TelephonyNetworkSpecifier.Builder setSubscriptionId(int);
-  }
-
-  public class TrafficStats {
-    ctor public TrafficStats();
-    method public static void clearThreadStatsTag();
-    method public static void clearThreadStatsUid();
-    method public static int getAndSetThreadStatsTag(int);
-    method public static long getMobileRxBytes();
-    method public static long getMobileRxPackets();
-    method public static long getMobileTxBytes();
-    method public static long getMobileTxPackets();
-    method public static long getRxPackets(@NonNull String);
-    method public static int getThreadStatsTag();
-    method public static int getThreadStatsUid();
-    method public static long getTotalRxBytes();
-    method public static long getTotalRxPackets();
-    method public static long getTotalTxBytes();
-    method public static long getTotalTxPackets();
-    method public static long getTxPackets(@NonNull String);
-    method public static long getUidRxBytes(int);
-    method public static long getUidRxPackets(int);
-    method @Deprecated public static long getUidTcpRxBytes(int);
-    method @Deprecated public static long getUidTcpRxSegments(int);
-    method @Deprecated public static long getUidTcpTxBytes(int);
-    method @Deprecated public static long getUidTcpTxSegments(int);
-    method public static long getUidTxBytes(int);
-    method public static long getUidTxPackets(int);
-    method @Deprecated public static long getUidUdpRxBytes(int);
-    method @Deprecated public static long getUidUdpRxPackets(int);
-    method @Deprecated public static long getUidUdpTxBytes(int);
-    method @Deprecated public static long getUidUdpTxPackets(int);
-    method public static void incrementOperationCount(int);
-    method public static void incrementOperationCount(int, int);
-    method public static void setThreadStatsTag(int);
-    method public static void setThreadStatsUid(int);
-    method public static void tagDatagramSocket(java.net.DatagramSocket) throws java.net.SocketException;
-    method public static void tagFileDescriptor(java.io.FileDescriptor) throws java.io.IOException;
-    method public static void tagSocket(java.net.Socket) throws java.net.SocketException;
-    method public static void untagDatagramSocket(java.net.DatagramSocket) throws java.net.SocketException;
-    method public static void untagFileDescriptor(java.io.FileDescriptor) throws java.io.IOException;
-    method public static void untagSocket(java.net.Socket) throws java.net.SocketException;
-    field public static final int UNSUPPORTED = -1; // 0xffffffff
-  }
-
-  public interface TransportInfo {
-  }
-
-  public abstract class Uri implements java.lang.Comparable<android.net.Uri> android.os.Parcelable {
-    method public abstract android.net.Uri.Builder buildUpon();
-    method public int compareTo(android.net.Uri);
-    method public static String decode(String);
-    method public static String encode(String);
-    method public static String encode(String, String);
-    method public static android.net.Uri fromFile(java.io.File);
-    method public static android.net.Uri fromParts(String, String, String);
-    method @Nullable public abstract String getAuthority();
-    method public boolean getBooleanQueryParameter(String, boolean);
-    method @Nullable public abstract String getEncodedAuthority();
-    method @Nullable public abstract String getEncodedFragment();
-    method @Nullable public abstract String getEncodedPath();
-    method @Nullable public abstract String getEncodedQuery();
-    method public abstract String getEncodedSchemeSpecificPart();
-    method @Nullable public abstract String getEncodedUserInfo();
-    method @Nullable public abstract String getFragment();
-    method @Nullable public abstract String getHost();
-    method @Nullable public abstract String getLastPathSegment();
-    method @Nullable public abstract String getPath();
-    method public abstract java.util.List<java.lang.String> getPathSegments();
-    method public abstract int getPort();
-    method @Nullable public abstract String getQuery();
-    method @Nullable public String getQueryParameter(String);
-    method public java.util.Set<java.lang.String> getQueryParameterNames();
-    method public java.util.List<java.lang.String> getQueryParameters(String);
-    method @Nullable public abstract String getScheme();
-    method public abstract String getSchemeSpecificPart();
-    method @Nullable public abstract String getUserInfo();
-    method public boolean isAbsolute();
-    method public abstract boolean isHierarchical();
-    method public boolean isOpaque();
-    method public abstract boolean isRelative();
-    method public android.net.Uri normalizeScheme();
-    method public static android.net.Uri parse(String);
-    method public abstract String toString();
-    method public static android.net.Uri withAppendedPath(android.net.Uri, String);
-    method public static void writeToParcel(android.os.Parcel, android.net.Uri);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.Uri> CREATOR;
-    field public static final android.net.Uri EMPTY;
-  }
-
-  public static final class Uri.Builder {
-    ctor public Uri.Builder();
-    method public android.net.Uri.Builder appendEncodedPath(String);
-    method public android.net.Uri.Builder appendPath(String);
-    method public android.net.Uri.Builder appendQueryParameter(String, String);
-    method public android.net.Uri.Builder authority(String);
-    method public android.net.Uri build();
-    method public android.net.Uri.Builder clearQuery();
-    method public android.net.Uri.Builder encodedAuthority(String);
-    method public android.net.Uri.Builder encodedFragment(String);
-    method public android.net.Uri.Builder encodedOpaquePart(String);
-    method public android.net.Uri.Builder encodedPath(String);
-    method public android.net.Uri.Builder encodedQuery(String);
-    method public android.net.Uri.Builder fragment(String);
-    method public android.net.Uri.Builder opaquePart(String);
-    method public android.net.Uri.Builder path(String);
-    method public android.net.Uri.Builder query(String);
-    method public android.net.Uri.Builder scheme(String);
-  }
-
-  public class UrlQuerySanitizer {
-    ctor public UrlQuerySanitizer();
-    ctor public UrlQuerySanitizer(String);
-    method protected void addSanitizedEntry(String, String);
-    method protected void clear();
-    method protected int decodeHexDigit(char);
-    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getAllButNulAndAngleBracketsLegal();
-    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getAllButNulLegal();
-    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getAllButWhitespaceLegal();
-    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getAllIllegal();
-    method public boolean getAllowUnregisteredParamaters();
-    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getAmpAndSpaceLegal();
-    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getAmpLegal();
-    method public android.net.UrlQuerySanitizer.ValueSanitizer getEffectiveValueSanitizer(String);
-    method public java.util.List<android.net.UrlQuerySanitizer.ParameterValuePair> getParameterList();
-    method public java.util.Set<java.lang.String> getParameterSet();
-    method public boolean getPreferFirstRepeatedParameter();
-    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getSpaceLegal();
-    method public android.net.UrlQuerySanitizer.ValueSanitizer getUnregisteredParameterValueSanitizer();
-    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getUrlAndSpaceLegal();
-    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getUrlLegal();
-    method public String getValue(String);
-    method public android.net.UrlQuerySanitizer.ValueSanitizer getValueSanitizer(String);
-    method public boolean hasParameter(String);
-    method protected boolean isHexDigit(char);
-    method protected void parseEntry(String, String);
-    method public void parseQuery(String);
-    method public void parseUrl(String);
-    method public void registerParameter(String, android.net.UrlQuerySanitizer.ValueSanitizer);
-    method public void registerParameters(String[], android.net.UrlQuerySanitizer.ValueSanitizer);
-    method public void setAllowUnregisteredParamaters(boolean);
-    method public void setPreferFirstRepeatedParameter(boolean);
-    method public void setUnregisteredParameterValueSanitizer(android.net.UrlQuerySanitizer.ValueSanitizer);
-    method public String unescape(String);
-  }
-
-  public static class UrlQuerySanitizer.IllegalCharacterValueSanitizer implements android.net.UrlQuerySanitizer.ValueSanitizer {
-    ctor public UrlQuerySanitizer.IllegalCharacterValueSanitizer(int);
-    method public String sanitize(String);
-    field public static final int ALL_BUT_NUL_AND_ANGLE_BRACKETS_LEGAL = 1439; // 0x59f
-    field public static final int ALL_BUT_NUL_LEGAL = 1535; // 0x5ff
-    field public static final int ALL_BUT_WHITESPACE_LEGAL = 1532; // 0x5fc
-    field public static final int ALL_ILLEGAL = 0; // 0x0
-    field public static final int ALL_OK = 2047; // 0x7ff
-    field public static final int ALL_WHITESPACE_OK = 3; // 0x3
-    field public static final int AMP_AND_SPACE_LEGAL = 129; // 0x81
-    field public static final int AMP_LEGAL = 128; // 0x80
-    field public static final int AMP_OK = 128; // 0x80
-    field public static final int DQUOTE_OK = 8; // 0x8
-    field public static final int GT_OK = 64; // 0x40
-    field public static final int LT_OK = 32; // 0x20
-    field public static final int NON_7_BIT_ASCII_OK = 4; // 0x4
-    field public static final int NUL_OK = 512; // 0x200
-    field public static final int OTHER_WHITESPACE_OK = 2; // 0x2
-    field public static final int PCT_OK = 256; // 0x100
-    field public static final int SCRIPT_URL_OK = 1024; // 0x400
-    field public static final int SPACE_LEGAL = 1; // 0x1
-    field public static final int SPACE_OK = 1; // 0x1
-    field public static final int SQUOTE_OK = 16; // 0x10
-    field public static final int URL_AND_SPACE_LEGAL = 405; // 0x195
-    field public static final int URL_LEGAL = 404; // 0x194
-  }
-
-  public class UrlQuerySanitizer.ParameterValuePair {
-    ctor public UrlQuerySanitizer.ParameterValuePair(String, String);
-    field public String mParameter;
-    field public String mValue;
-  }
-
-  public static interface UrlQuerySanitizer.ValueSanitizer {
-    method public String sanitize(String);
-  }
-
-  public class VpnManager {
-    method public void deleteProvisionedVpnProfile();
-    method @Nullable public android.content.Intent provisionVpnProfile(@NonNull android.net.PlatformVpnProfile);
-    method public void startProvisionedVpnProfile();
-    method public void stopProvisionedVpnProfile();
-  }
-
-  public class VpnService extends android.app.Service {
-    ctor public VpnService();
-    method public final boolean isAlwaysOn();
-    method public final boolean isLockdownEnabled();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public void onRevoke();
-    method public static android.content.Intent prepare(android.content.Context);
-    method public boolean protect(int);
-    method public boolean protect(java.net.Socket);
-    method public boolean protect(java.net.DatagramSocket);
-    method public boolean setUnderlyingNetworks(android.net.Network[]);
-    field public static final String SERVICE_INTERFACE = "android.net.VpnService";
-    field public static final String SERVICE_META_DATA_SUPPORTS_ALWAYS_ON = "android.net.VpnService.SUPPORTS_ALWAYS_ON";
-  }
-
-  public class VpnService.Builder {
-    ctor public VpnService.Builder();
-    method @NonNull public android.net.VpnService.Builder addAddress(@NonNull java.net.InetAddress, int);
-    method @NonNull public android.net.VpnService.Builder addAddress(@NonNull String, int);
-    method @NonNull public android.net.VpnService.Builder addAllowedApplication(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public android.net.VpnService.Builder addDisallowedApplication(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public android.net.VpnService.Builder addDnsServer(@NonNull java.net.InetAddress);
-    method @NonNull public android.net.VpnService.Builder addDnsServer(@NonNull String);
-    method @NonNull public android.net.VpnService.Builder addRoute(@NonNull java.net.InetAddress, int);
-    method @NonNull public android.net.VpnService.Builder addRoute(@NonNull String, int);
-    method @NonNull public android.net.VpnService.Builder addSearchDomain(@NonNull String);
-    method @NonNull public android.net.VpnService.Builder allowBypass();
-    method @NonNull public android.net.VpnService.Builder allowFamily(int);
-    method @Nullable public android.os.ParcelFileDescriptor establish();
-    method @NonNull public android.net.VpnService.Builder setBlocking(boolean);
-    method @NonNull public android.net.VpnService.Builder setConfigureIntent(@NonNull android.app.PendingIntent);
-    method @NonNull public android.net.VpnService.Builder setHttpProxy(@NonNull android.net.ProxyInfo);
-    method @NonNull public android.net.VpnService.Builder setMetered(boolean);
-    method @NonNull public android.net.VpnService.Builder setMtu(int);
-    method @NonNull public android.net.VpnService.Builder setSession(@NonNull String);
-    method @NonNull public android.net.VpnService.Builder setUnderlyingNetworks(@Nullable android.net.Network[]);
-  }
-
-}
-
-package android.net.http {
-
-  public final class HttpResponseCache extends java.net.ResponseCache implements java.io.Closeable {
-    method public void close() throws java.io.IOException;
-    method public void delete() throws java.io.IOException;
-    method public void flush();
-    method public java.net.CacheResponse get(java.net.URI, String, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
-    method public int getHitCount();
-    method public static android.net.http.HttpResponseCache getInstalled();
-    method public int getNetworkCount();
-    method public int getRequestCount();
-    method public static android.net.http.HttpResponseCache install(java.io.File, long) throws java.io.IOException;
-    method public long maxSize();
-    method public java.net.CacheRequest put(java.net.URI, java.net.URLConnection) throws java.io.IOException;
-    method public long size();
-  }
-
-  public class SslCertificate {
-    ctor @Deprecated public SslCertificate(String, String, String, String);
-    ctor @Deprecated public SslCertificate(String, String, java.util.Date, java.util.Date);
-    ctor public SslCertificate(java.security.cert.X509Certificate);
-    method public android.net.http.SslCertificate.DName getIssuedBy();
-    method public android.net.http.SslCertificate.DName getIssuedTo();
-    method @Deprecated public String getValidNotAfter();
-    method public java.util.Date getValidNotAfterDate();
-    method @Deprecated public String getValidNotBefore();
-    method public java.util.Date getValidNotBeforeDate();
-    method @Nullable public java.security.cert.X509Certificate getX509Certificate();
-    method public static android.net.http.SslCertificate restoreState(android.os.Bundle);
-    method public static android.os.Bundle saveState(android.net.http.SslCertificate);
-  }
-
-  public class SslCertificate.DName {
-    ctor public SslCertificate.DName(String);
-    method public String getCName();
-    method public String getDName();
-    method public String getOName();
-    method public String getUName();
-  }
-
-  public class SslError {
-    ctor @Deprecated public SslError(int, android.net.http.SslCertificate);
-    ctor @Deprecated public SslError(int, java.security.cert.X509Certificate);
-    ctor public SslError(int, android.net.http.SslCertificate, String);
-    ctor public SslError(int, java.security.cert.X509Certificate, String);
-    method public boolean addError(int);
-    method public android.net.http.SslCertificate getCertificate();
-    method public int getPrimaryError();
-    method public String getUrl();
-    method public boolean hasError(int);
-    field public static final int SSL_DATE_INVALID = 4; // 0x4
-    field public static final int SSL_EXPIRED = 1; // 0x1
-    field public static final int SSL_IDMISMATCH = 2; // 0x2
-    field public static final int SSL_INVALID = 5; // 0x5
-    field @Deprecated public static final int SSL_MAX_ERROR = 6; // 0x6
-    field public static final int SSL_NOTYETVALID = 0; // 0x0
-    field public static final int SSL_UNTRUSTED = 3; // 0x3
-  }
-
-  public class X509TrustManagerExtensions {
-    ctor public X509TrustManagerExtensions(javax.net.ssl.X509TrustManager) throws java.lang.IllegalArgumentException;
-    method public java.util.List<java.security.cert.X509Certificate> checkServerTrusted(java.security.cert.X509Certificate[], String, String) throws java.security.cert.CertificateException;
-    method public boolean isSameTrustConfiguration(String, String);
-    method public boolean isUserAddedCertificate(java.security.cert.X509Certificate);
-  }
-
-}
-
-package android.net.nsd {
-
-  public final class NsdManager {
-    method public void discoverServices(String, int, android.net.nsd.NsdManager.DiscoveryListener);
-    method public void registerService(android.net.nsd.NsdServiceInfo, int, android.net.nsd.NsdManager.RegistrationListener);
-    method public void resolveService(android.net.nsd.NsdServiceInfo, android.net.nsd.NsdManager.ResolveListener);
-    method public void stopServiceDiscovery(android.net.nsd.NsdManager.DiscoveryListener);
-    method public void unregisterService(android.net.nsd.NsdManager.RegistrationListener);
-    field public static final String ACTION_NSD_STATE_CHANGED = "android.net.nsd.STATE_CHANGED";
-    field public static final String EXTRA_NSD_STATE = "nsd_state";
-    field public static final int FAILURE_ALREADY_ACTIVE = 3; // 0x3
-    field public static final int FAILURE_INTERNAL_ERROR = 0; // 0x0
-    field public static final int FAILURE_MAX_LIMIT = 4; // 0x4
-    field public static final int NSD_STATE_DISABLED = 1; // 0x1
-    field public static final int NSD_STATE_ENABLED = 2; // 0x2
-    field public static final int PROTOCOL_DNS_SD = 1; // 0x1
-  }
-
-  public static interface NsdManager.DiscoveryListener {
-    method public void onDiscoveryStarted(String);
-    method public void onDiscoveryStopped(String);
-    method public void onServiceFound(android.net.nsd.NsdServiceInfo);
-    method public void onServiceLost(android.net.nsd.NsdServiceInfo);
-    method public void onStartDiscoveryFailed(String, int);
-    method public void onStopDiscoveryFailed(String, int);
-  }
-
-  public static interface NsdManager.RegistrationListener {
-    method public void onRegistrationFailed(android.net.nsd.NsdServiceInfo, int);
-    method public void onServiceRegistered(android.net.nsd.NsdServiceInfo);
-    method public void onServiceUnregistered(android.net.nsd.NsdServiceInfo);
-    method public void onUnregistrationFailed(android.net.nsd.NsdServiceInfo, int);
-  }
-
-  public static interface NsdManager.ResolveListener {
-    method public void onResolveFailed(android.net.nsd.NsdServiceInfo, int);
-    method public void onServiceResolved(android.net.nsd.NsdServiceInfo);
-  }
-
-  public final class NsdServiceInfo implements android.os.Parcelable {
-    ctor public NsdServiceInfo();
-    method public int describeContents();
-    method public java.util.Map<java.lang.String,byte[]> getAttributes();
-    method public java.net.InetAddress getHost();
-    method public int getPort();
-    method public String getServiceName();
-    method public String getServiceType();
-    method public void removeAttribute(String);
-    method public void setAttribute(String, String);
-    method public void setHost(java.net.InetAddress);
-    method public void setPort(int);
-    method public void setServiceName(String);
-    method public void setServiceType(String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.nsd.NsdServiceInfo> CREATOR;
-  }
-
-}
-
-package android.net.rtp {
-
-  public class AudioCodec {
-    method public static android.net.rtp.AudioCodec getCodec(int, String, String);
-    method public static android.net.rtp.AudioCodec[] getCodecs();
-    field public static final android.net.rtp.AudioCodec AMR;
-    field public static final android.net.rtp.AudioCodec GSM;
-    field public static final android.net.rtp.AudioCodec GSM_EFR;
-    field public static final android.net.rtp.AudioCodec PCMA;
-    field public static final android.net.rtp.AudioCodec PCMU;
-    field public final String fmtp;
-    field public final String rtpmap;
-    field public final int type;
-  }
-
-  public class AudioGroup {
-    ctor @Deprecated public AudioGroup();
-    ctor public AudioGroup(@NonNull android.content.Context);
-    method public void clear();
-    method public int getMode();
-    method public android.net.rtp.AudioStream[] getStreams();
-    method public void sendDtmf(int);
-    method public void setMode(int);
-    field public static final int MODE_ECHO_SUPPRESSION = 3; // 0x3
-    field public static final int MODE_MUTED = 1; // 0x1
-    field public static final int MODE_NORMAL = 2; // 0x2
-    field public static final int MODE_ON_HOLD = 0; // 0x0
-  }
-
-  public class AudioStream extends android.net.rtp.RtpStream {
-    ctor public AudioStream(java.net.InetAddress) throws java.net.SocketException;
-    method public android.net.rtp.AudioCodec getCodec();
-    method public int getDtmfType();
-    method public android.net.rtp.AudioGroup getGroup();
-    method public final boolean isBusy();
-    method public void join(android.net.rtp.AudioGroup);
-    method public void setCodec(android.net.rtp.AudioCodec);
-    method public void setDtmfType(int);
-  }
-
-  public class RtpStream {
-    method public void associate(java.net.InetAddress, int);
-    method public java.net.InetAddress getLocalAddress();
-    method public int getLocalPort();
-    method public int getMode();
-    method public java.net.InetAddress getRemoteAddress();
-    method public int getRemotePort();
-    method public boolean isBusy();
-    method public void release();
-    method public void setMode(int);
-    field public static final int MODE_NORMAL = 0; // 0x0
-    field public static final int MODE_RECEIVE_ONLY = 2; // 0x2
-    field public static final int MODE_SEND_ONLY = 1; // 0x1
-  }
-
-}
-
-package android.net.sip {
-
-  public class SipAudioCall {
-    ctor public SipAudioCall(android.content.Context, android.net.sip.SipProfile);
-    method public void answerCall(int) throws android.net.sip.SipException;
-    method public void attachCall(android.net.sip.SipSession, String) throws android.net.sip.SipException;
-    method public void close();
-    method public void continueCall(int) throws android.net.sip.SipException;
-    method public void endCall() throws android.net.sip.SipException;
-    method public android.net.sip.SipProfile getLocalProfile();
-    method public android.net.sip.SipProfile getPeerProfile();
-    method public int getState();
-    method public void holdCall(int) throws android.net.sip.SipException;
-    method public boolean isInCall();
-    method public boolean isMuted();
-    method public boolean isOnHold();
-    method public void makeCall(android.net.sip.SipProfile, android.net.sip.SipSession, int) throws android.net.sip.SipException;
-    method public void sendDtmf(int);
-    method public void sendDtmf(int, android.os.Message);
-    method public void setListener(android.net.sip.SipAudioCall.Listener);
-    method public void setListener(android.net.sip.SipAudioCall.Listener, boolean);
-    method public void setSpeakerMode(boolean);
-    method public void startAudio();
-    method public void toggleMute();
-  }
-
-  public static class SipAudioCall.Listener {
-    ctor public SipAudioCall.Listener();
-    method public void onCallBusy(android.net.sip.SipAudioCall);
-    method public void onCallEnded(android.net.sip.SipAudioCall);
-    method public void onCallEstablished(android.net.sip.SipAudioCall);
-    method public void onCallHeld(android.net.sip.SipAudioCall);
-    method public void onCalling(android.net.sip.SipAudioCall);
-    method public void onChanged(android.net.sip.SipAudioCall);
-    method public void onError(android.net.sip.SipAudioCall, int, String);
-    method public void onReadyToCall(android.net.sip.SipAudioCall);
-    method public void onRinging(android.net.sip.SipAudioCall, android.net.sip.SipProfile);
-    method public void onRingingBack(android.net.sip.SipAudioCall);
-  }
-
-  public class SipErrorCode {
-    method public static String toString(int);
-    field public static final int CLIENT_ERROR = -4; // 0xfffffffc
-    field public static final int CROSS_DOMAIN_AUTHENTICATION = -11; // 0xfffffff5
-    field public static final int DATA_CONNECTION_LOST = -10; // 0xfffffff6
-    field public static final int INVALID_CREDENTIALS = -8; // 0xfffffff8
-    field public static final int INVALID_REMOTE_URI = -6; // 0xfffffffa
-    field public static final int IN_PROGRESS = -9; // 0xfffffff7
-    field public static final int NO_ERROR = 0; // 0x0
-    field public static final int PEER_NOT_REACHABLE = -7; // 0xfffffff9
-    field public static final int SERVER_ERROR = -2; // 0xfffffffe
-    field public static final int SERVER_UNREACHABLE = -12; // 0xfffffff4
-    field public static final int SOCKET_ERROR = -1; // 0xffffffff
-    field public static final int TIME_OUT = -5; // 0xfffffffb
-    field public static final int TRANSACTION_TERMINTED = -3; // 0xfffffffd
-  }
-
-  public class SipException extends java.lang.Exception {
-    ctor public SipException();
-    ctor public SipException(String);
-    ctor public SipException(String, Throwable);
-  }
-
-  public class SipManager {
-    method public void close(String) throws android.net.sip.SipException;
-    method public android.net.sip.SipSession createSipSession(android.net.sip.SipProfile, android.net.sip.SipSession.Listener) throws android.net.sip.SipException;
-    method public static String getCallId(android.content.Intent);
-    method public static String getOfferSessionDescription(android.content.Intent);
-    method public android.net.sip.SipSession getSessionFor(android.content.Intent) throws android.net.sip.SipException;
-    method public static boolean isApiSupported(android.content.Context);
-    method public static boolean isIncomingCallIntent(android.content.Intent);
-    method public boolean isOpened(String) throws android.net.sip.SipException;
-    method public boolean isRegistered(String) throws android.net.sip.SipException;
-    method public static boolean isSipWifiOnly(android.content.Context);
-    method public static boolean isVoipSupported(android.content.Context);
-    method public android.net.sip.SipAudioCall makeAudioCall(android.net.sip.SipProfile, android.net.sip.SipProfile, android.net.sip.SipAudioCall.Listener, int) throws android.net.sip.SipException;
-    method public android.net.sip.SipAudioCall makeAudioCall(String, String, android.net.sip.SipAudioCall.Listener, int) throws android.net.sip.SipException;
-    method public static android.net.sip.SipManager newInstance(android.content.Context);
-    method public void open(android.net.sip.SipProfile) throws android.net.sip.SipException;
-    method public void open(android.net.sip.SipProfile, android.app.PendingIntent, android.net.sip.SipRegistrationListener) throws android.net.sip.SipException;
-    method public void register(android.net.sip.SipProfile, int, android.net.sip.SipRegistrationListener) throws android.net.sip.SipException;
-    method public void setRegistrationListener(String, android.net.sip.SipRegistrationListener) throws android.net.sip.SipException;
-    method public android.net.sip.SipAudioCall takeAudioCall(android.content.Intent, android.net.sip.SipAudioCall.Listener) throws android.net.sip.SipException;
-    method public void unregister(android.net.sip.SipProfile, android.net.sip.SipRegistrationListener) throws android.net.sip.SipException;
-    field public static final String EXTRA_CALL_ID = "android:sipCallID";
-    field public static final String EXTRA_OFFER_SD = "android:sipOfferSD";
-    field public static final int INCOMING_CALL_RESULT_CODE = 101; // 0x65
-  }
-
-  public class SipProfile implements java.lang.Cloneable android.os.Parcelable java.io.Serializable {
-    method public int describeContents();
-    method public String getAuthUserName();
-    method public boolean getAutoRegistration();
-    method public String getDisplayName();
-    method public String getPassword();
-    method public int getPort();
-    method public String getProfileName();
-    method public String getProtocol();
-    method public String getProxyAddress();
-    method public boolean getSendKeepAlive();
-    method public String getSipDomain();
-    method public String getUriString();
-    method public String getUserName();
-    method public void setCallingUid(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.net.sip.SipProfile> CREATOR;
-  }
-
-  public static class SipProfile.Builder {
-    ctor public SipProfile.Builder(android.net.sip.SipProfile);
-    ctor public SipProfile.Builder(String) throws java.text.ParseException;
-    ctor public SipProfile.Builder(String, String) throws java.text.ParseException;
-    method public android.net.sip.SipProfile build();
-    method public android.net.sip.SipProfile.Builder setAuthUserName(String);
-    method public android.net.sip.SipProfile.Builder setAutoRegistration(boolean);
-    method public android.net.sip.SipProfile.Builder setDisplayName(String);
-    method public android.net.sip.SipProfile.Builder setOutboundProxy(String);
-    method public android.net.sip.SipProfile.Builder setPassword(String);
-    method public android.net.sip.SipProfile.Builder setPort(int) throws java.lang.IllegalArgumentException;
-    method public android.net.sip.SipProfile.Builder setProfileName(String);
-    method public android.net.sip.SipProfile.Builder setProtocol(String) throws java.lang.IllegalArgumentException;
-    method public android.net.sip.SipProfile.Builder setSendKeepAlive(boolean);
-  }
-
-  public interface SipRegistrationListener {
-    method public void onRegistering(String);
-    method public void onRegistrationDone(String, long);
-    method public void onRegistrationFailed(String, int, String);
-  }
-
-  public final class SipSession {
-    method public void answerCall(String, int);
-    method public void changeCall(String, int);
-    method public void endCall();
-    method public String getCallId();
-    method public String getLocalIp();
-    method public android.net.sip.SipProfile getLocalProfile();
-    method public android.net.sip.SipProfile getPeerProfile();
-    method public int getState();
-    method public boolean isInCall();
-    method public void makeCall(android.net.sip.SipProfile, String, int);
-    method public void register(int);
-    method public void setListener(android.net.sip.SipSession.Listener);
-    method public void unregister();
-  }
-
-  public static class SipSession.Listener {
-    ctor public SipSession.Listener();
-    method public void onCallBusy(android.net.sip.SipSession);
-    method public void onCallChangeFailed(android.net.sip.SipSession, int, String);
-    method public void onCallEnded(android.net.sip.SipSession);
-    method public void onCallEstablished(android.net.sip.SipSession, String);
-    method public void onCalling(android.net.sip.SipSession);
-    method public void onError(android.net.sip.SipSession, int, String);
-    method public void onRegistering(android.net.sip.SipSession);
-    method public void onRegistrationDone(android.net.sip.SipSession, int);
-    method public void onRegistrationFailed(android.net.sip.SipSession, int, String);
-    method public void onRegistrationTimeout(android.net.sip.SipSession);
-    method public void onRinging(android.net.sip.SipSession, android.net.sip.SipProfile, String);
-    method public void onRingingBack(android.net.sip.SipSession);
-  }
-
-  public static class SipSession.State {
-    method public static String toString(int);
-    field public static final int DEREGISTERING = 2; // 0x2
-    field public static final int INCOMING_CALL = 3; // 0x3
-    field public static final int INCOMING_CALL_ANSWERING = 4; // 0x4
-    field public static final int IN_CALL = 8; // 0x8
-    field public static final int NOT_DEFINED = 101; // 0x65
-    field public static final int OUTGOING_CALL = 5; // 0x5
-    field public static final int OUTGOING_CALL_CANCELING = 7; // 0x7
-    field public static final int OUTGOING_CALL_RING_BACK = 6; // 0x6
-    field public static final int PINGING = 9; // 0x9
-    field public static final int READY_TO_CALL = 0; // 0x0
-    field public static final int REGISTERING = 1; // 0x1
-  }
-
-}
-
-package android.net.ssl {
-
-  public class SSLEngines {
-    method public static boolean isSupportedEngine(@NonNull javax.net.ssl.SSLEngine);
-    method public static void setUseSessionTickets(@NonNull javax.net.ssl.SSLEngine, boolean);
-  }
-
-  public class SSLSockets {
-    method public static boolean isSupportedSocket(@NonNull javax.net.ssl.SSLSocket);
-    method public static void setUseSessionTickets(@NonNull javax.net.ssl.SSLSocket, boolean);
-  }
-
-}
-
-package android.net.wifi {
-
-  public abstract class EasyConnectStatusCallback {
-    field public static final int EASY_CONNECT_EVENT_FAILURE_AUTHENTICATION = -2; // 0xfffffffe
-    field public static final int EASY_CONNECT_EVENT_FAILURE_BUSY = -5; // 0xfffffffb
-    field public static final int EASY_CONNECT_EVENT_FAILURE_CANNOT_FIND_NETWORK = -10; // 0xfffffff6
-    field public static final int EASY_CONNECT_EVENT_FAILURE_CONFIGURATION = -4; // 0xfffffffc
-    field public static final int EASY_CONNECT_EVENT_FAILURE_ENROLLEE_AUTHENTICATION = -11; // 0xfffffff5
-    field public static final int EASY_CONNECT_EVENT_FAILURE_ENROLLEE_REJECTED_CONFIGURATION = -12; // 0xfffffff4
-    field public static final int EASY_CONNECT_EVENT_FAILURE_GENERIC = -7; // 0xfffffff9
-    field public static final int EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK = -9; // 0xfffffff7
-    field public static final int EASY_CONNECT_EVENT_FAILURE_INVALID_URI = -1; // 0xffffffff
-    field public static final int EASY_CONNECT_EVENT_FAILURE_NOT_COMPATIBLE = -3; // 0xfffffffd
-    field public static final int EASY_CONNECT_EVENT_FAILURE_NOT_SUPPORTED = -8; // 0xfffffff8
-    field public static final int EASY_CONNECT_EVENT_FAILURE_TIMEOUT = -6; // 0xfffffffa
-  }
-
-  public final class ScanResult implements android.os.Parcelable {
-    ctor public ScanResult(@NonNull android.net.wifi.ScanResult);
-    ctor public ScanResult();
-    method public int describeContents();
-    method @NonNull public java.util.List<android.net.wifi.ScanResult.InformationElement> getInformationElements();
-    method public int getWifiStandard();
-    method public boolean is80211mcResponder();
-    method public boolean isPasspointNetwork();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public String BSSID;
-    field public static final int CHANNEL_WIDTH_160MHZ = 3; // 0x3
-    field public static final int CHANNEL_WIDTH_20MHZ = 0; // 0x0
-    field public static final int CHANNEL_WIDTH_40MHZ = 1; // 0x1
-    field public static final int CHANNEL_WIDTH_80MHZ = 2; // 0x2
-    field public static final int CHANNEL_WIDTH_80MHZ_PLUS_MHZ = 4; // 0x4
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.ScanResult> CREATOR;
-    field public String SSID;
-    field public static final int WIFI_STANDARD_11AC = 5; // 0x5
-    field public static final int WIFI_STANDARD_11AX = 6; // 0x6
-    field public static final int WIFI_STANDARD_11N = 4; // 0x4
-    field public static final int WIFI_STANDARD_LEGACY = 1; // 0x1
-    field public static final int WIFI_STANDARD_UNKNOWN = 0; // 0x0
-    field public String capabilities;
-    field public int centerFreq0;
-    field public int centerFreq1;
-    field public int channelWidth;
-    field public int frequency;
-    field public int level;
-    field public CharSequence operatorFriendlyName;
-    field public long timestamp;
-    field public CharSequence venueName;
-  }
-
-  public static class ScanResult.InformationElement {
-    ctor public ScanResult.InformationElement(@NonNull android.net.wifi.ScanResult.InformationElement);
-    method @NonNull public java.nio.ByteBuffer getBytes();
-    method public int getId();
-    method public int getIdExt();
-  }
-
-  public final class SoftApConfiguration implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.net.MacAddress getBssid();
-    method @Nullable public String getPassphrase();
-    method public int getSecurityType();
-    method @Nullable public String getSsid();
-    method public boolean isHiddenSsid();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.SoftApConfiguration> CREATOR;
-    field public static final int SECURITY_TYPE_OPEN = 0; // 0x0
-    field public static final int SECURITY_TYPE_WPA2_PSK = 1; // 0x1
-    field public static final int SECURITY_TYPE_WPA3_SAE = 3; // 0x3
-    field public static final int SECURITY_TYPE_WPA3_SAE_TRANSITION = 2; // 0x2
-  }
-
-  public enum SupplicantState implements android.os.Parcelable {
-    method public int describeContents();
-    method public static boolean isValidState(android.net.wifi.SupplicantState);
-    method public void writeToParcel(android.os.Parcel, int);
-    enum_constant public static final android.net.wifi.SupplicantState ASSOCIATED;
-    enum_constant public static final android.net.wifi.SupplicantState ASSOCIATING;
-    enum_constant public static final android.net.wifi.SupplicantState AUTHENTICATING;
-    enum_constant public static final android.net.wifi.SupplicantState COMPLETED;
-    enum_constant public static final android.net.wifi.SupplicantState DISCONNECTED;
-    enum_constant public static final android.net.wifi.SupplicantState DORMANT;
-    enum_constant public static final android.net.wifi.SupplicantState FOUR_WAY_HANDSHAKE;
-    enum_constant public static final android.net.wifi.SupplicantState GROUP_HANDSHAKE;
-    enum_constant public static final android.net.wifi.SupplicantState INACTIVE;
-    enum_constant public static final android.net.wifi.SupplicantState INTERFACE_DISABLED;
-    enum_constant public static final android.net.wifi.SupplicantState INVALID;
-    enum_constant public static final android.net.wifi.SupplicantState SCANNING;
-    enum_constant public static final android.net.wifi.SupplicantState UNINITIALIZED;
-  }
-
-  @Deprecated public class WifiConfiguration implements android.os.Parcelable {
-    ctor @Deprecated public WifiConfiguration();
-    ctor @Deprecated public WifiConfiguration(@NonNull android.net.wifi.WifiConfiguration);
-    method public int describeContents();
-    method @Deprecated public android.net.ProxyInfo getHttpProxy();
-    method @Deprecated @NonNull public String getKey();
-    method @Deprecated @NonNull public android.net.MacAddress getRandomizedMacAddress();
-    method @Deprecated public boolean isPasspoint();
-    method @Deprecated public void setHttpProxy(android.net.ProxyInfo);
-    method @Deprecated public void setSecurityParams(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated public String BSSID;
-    field @Deprecated public String FQDN;
-    field @Deprecated public static final int SECURITY_TYPE_EAP = 3; // 0x3
-    field @Deprecated public static final int SECURITY_TYPE_EAP_SUITE_B = 5; // 0x5
-    field @Deprecated public static final int SECURITY_TYPE_OPEN = 0; // 0x0
-    field @Deprecated public static final int SECURITY_TYPE_OWE = 6; // 0x6
-    field @Deprecated public static final int SECURITY_TYPE_PSK = 2; // 0x2
-    field @Deprecated public static final int SECURITY_TYPE_SAE = 4; // 0x4
-    field @Deprecated public static final int SECURITY_TYPE_WAPI_CERT = 8; // 0x8
-    field @Deprecated public static final int SECURITY_TYPE_WAPI_PSK = 7; // 0x7
-    field @Deprecated public static final int SECURITY_TYPE_WEP = 1; // 0x1
-    field @Deprecated public String SSID;
-    field @Deprecated @NonNull public java.util.BitSet allowedAuthAlgorithms;
-    field @Deprecated @NonNull public java.util.BitSet allowedGroupCiphers;
-    field @Deprecated @NonNull public java.util.BitSet allowedGroupManagementCiphers;
-    field @Deprecated @NonNull public java.util.BitSet allowedKeyManagement;
-    field @Deprecated @NonNull public java.util.BitSet allowedPairwiseCiphers;
-    field @Deprecated @NonNull public java.util.BitSet allowedProtocols;
-    field @Deprecated @NonNull public java.util.BitSet allowedSuiteBCiphers;
-    field @Deprecated public android.net.wifi.WifiEnterpriseConfig enterpriseConfig;
-    field @Deprecated public boolean hiddenSSID;
-    field @Deprecated public boolean isHomeProviderNetwork;
-    field @Deprecated public int networkId;
-    field @Deprecated public String preSharedKey;
-    field @Deprecated public int priority;
-    field @Deprecated public String providerFriendlyName;
-    field @Deprecated public long[] roamingConsortiumIds;
-    field @Deprecated public int status;
-    field @Deprecated public String[] wepKeys;
-    field @Deprecated public int wepTxKeyIndex;
-  }
-
-  @Deprecated public static class WifiConfiguration.AuthAlgorithm {
-    field @Deprecated public static final int LEAP = 2; // 0x2
-    field @Deprecated public static final int OPEN = 0; // 0x0
-    field @Deprecated public static final int SAE = 3; // 0x3
-    field @Deprecated public static final int SHARED = 1; // 0x1
-    field @Deprecated public static final String[] strings;
-    field @Deprecated public static final String varName = "auth_alg";
-  }
-
-  @Deprecated public static class WifiConfiguration.GroupCipher {
-    field @Deprecated public static final int CCMP = 3; // 0x3
-    field @Deprecated public static final int GCMP_256 = 5; // 0x5
-    field @Deprecated public static final int SMS4 = 6; // 0x6
-    field @Deprecated public static final int TKIP = 2; // 0x2
-    field @Deprecated public static final int WEP104 = 1; // 0x1
-    field @Deprecated public static final int WEP40 = 0; // 0x0
-    field @Deprecated public static final String[] strings;
-    field @Deprecated public static final String varName = "group";
-  }
-
-  @Deprecated public static class WifiConfiguration.GroupMgmtCipher {
-    field @Deprecated public static final int BIP_CMAC_256 = 0; // 0x0
-    field @Deprecated public static final int BIP_GMAC_128 = 1; // 0x1
-    field @Deprecated public static final int BIP_GMAC_256 = 2; // 0x2
-  }
-
-  @Deprecated public static class WifiConfiguration.KeyMgmt {
-    field @Deprecated public static final int IEEE8021X = 3; // 0x3
-    field @Deprecated public static final int NONE = 0; // 0x0
-    field @Deprecated public static final int OWE = 9; // 0x9
-    field @Deprecated public static final int SAE = 8; // 0x8
-    field @Deprecated public static final int SUITE_B_192 = 10; // 0xa
-    field @Deprecated public static final int WPA_EAP = 2; // 0x2
-    field @Deprecated public static final int WPA_PSK = 1; // 0x1
-    field @Deprecated public static final String[] strings;
-    field @Deprecated public static final String varName = "key_mgmt";
-  }
-
-  @Deprecated public static class WifiConfiguration.PairwiseCipher {
-    field @Deprecated public static final int CCMP = 2; // 0x2
-    field @Deprecated public static final int GCMP_256 = 3; // 0x3
-    field @Deprecated public static final int NONE = 0; // 0x0
-    field @Deprecated public static final int SMS4 = 4; // 0x4
-    field @Deprecated public static final int TKIP = 1; // 0x1
-    field @Deprecated public static final String[] strings;
-    field @Deprecated public static final String varName = "pairwise";
-  }
-
-  @Deprecated public static class WifiConfiguration.Protocol {
-    field @Deprecated public static final int RSN = 1; // 0x1
-    field @Deprecated public static final int WAPI = 3; // 0x3
-    field @Deprecated public static final int WPA = 0; // 0x0
-    field @Deprecated public static final String[] strings;
-    field @Deprecated public static final String varName = "proto";
-  }
-
-  @Deprecated public static class WifiConfiguration.Status {
-    field @Deprecated public static final int CURRENT = 0; // 0x0
-    field @Deprecated public static final int DISABLED = 1; // 0x1
-    field @Deprecated public static final int ENABLED = 2; // 0x2
-    field @Deprecated public static final String[] strings;
-  }
-
-  public class WifiEnterpriseConfig implements android.os.Parcelable {
-    ctor public WifiEnterpriseConfig();
-    ctor public WifiEnterpriseConfig(android.net.wifi.WifiEnterpriseConfig);
-    method public int describeContents();
-    method public String getAltSubjectMatch();
-    method public String getAnonymousIdentity();
-    method @Nullable public java.security.cert.X509Certificate getCaCertificate();
-    method @Nullable public java.security.cert.X509Certificate[] getCaCertificates();
-    method public java.security.cert.X509Certificate getClientCertificate();
-    method @Nullable public java.security.cert.X509Certificate[] getClientCertificateChain();
-    method @Nullable public java.security.PrivateKey getClientPrivateKey();
-    method public String getDomainSuffixMatch();
-    method public int getEapMethod();
-    method public String getIdentity();
-    method public String getPassword();
-    method public int getPhase2Method();
-    method public String getPlmn();
-    method public String getRealm();
-    method @Deprecated public String getSubjectMatch();
-    method public boolean isAuthenticationSimBased();
-    method public void setAltSubjectMatch(String);
-    method public void setAnonymousIdentity(String);
-    method public void setCaCertificate(@Nullable java.security.cert.X509Certificate);
-    method public void setCaCertificates(@Nullable java.security.cert.X509Certificate[]);
-    method public void setClientKeyEntry(java.security.PrivateKey, java.security.cert.X509Certificate);
-    method public void setClientKeyEntryWithCertificateChain(java.security.PrivateKey, java.security.cert.X509Certificate[]);
-    method public void setDomainSuffixMatch(String);
-    method public void setEapMethod(int);
-    method public void setIdentity(String);
-    method public void setPassword(String);
-    method public void setPhase2Method(int);
-    method public void setPlmn(String);
-    method public void setRealm(String);
-    method @Deprecated public void setSubjectMatch(String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.WifiEnterpriseConfig> CREATOR;
-    field public static final String EXTRA_WAPI_AS_CERTIFICATE_DATA = "android.net.wifi.extra.WAPI_AS_CERTIFICATE_DATA";
-    field public static final String EXTRA_WAPI_AS_CERTIFICATE_NAME = "android.net.wifi.extra.WAPI_AS_CERTIFICATE_NAME";
-    field public static final String EXTRA_WAPI_USER_CERTIFICATE_DATA = "android.net.wifi.extra.WAPI_USER_CERTIFICATE_DATA";
-    field public static final String EXTRA_WAPI_USER_CERTIFICATE_NAME = "android.net.wifi.extra.WAPI_USER_CERTIFICATE_NAME";
-    field public static final String WAPI_AS_CERTIFICATE = "WAPIAS_";
-    field public static final String WAPI_USER_CERTIFICATE = "WAPIUSR_";
-  }
-
-  public static final class WifiEnterpriseConfig.Eap {
-    field public static final int AKA = 5; // 0x5
-    field public static final int AKA_PRIME = 6; // 0x6
-    field public static final int NONE = -1; // 0xffffffff
-    field public static final int PEAP = 0; // 0x0
-    field public static final int PWD = 3; // 0x3
-    field public static final int SIM = 4; // 0x4
-    field public static final int TLS = 1; // 0x1
-    field public static final int TTLS = 2; // 0x2
-    field public static final int UNAUTH_TLS = 7; // 0x7
-    field public static final int WAPI_CERT = 8; // 0x8
-  }
-
-  public static final class WifiEnterpriseConfig.Phase2 {
-    field public static final int AKA = 6; // 0x6
-    field public static final int AKA_PRIME = 7; // 0x7
-    field public static final int GTC = 4; // 0x4
-    field public static final int MSCHAP = 2; // 0x2
-    field public static final int MSCHAPV2 = 3; // 0x3
-    field public static final int NONE = 0; // 0x0
-    field public static final int PAP = 1; // 0x1
-    field public static final int SIM = 5; // 0x5
-  }
-
-  public class WifiInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public String getBSSID();
-    method public static android.net.NetworkInfo.DetailedState getDetailedStateOf(android.net.wifi.SupplicantState);
-    method public int getFrequency();
-    method public boolean getHiddenSSID();
-    method public int getIpAddress();
-    method public int getLinkSpeed();
-    method public String getMacAddress();
-    method public int getMaxSupportedRxLinkSpeedMbps();
-    method public int getMaxSupportedTxLinkSpeedMbps();
-    method public int getNetworkId();
-    method @Nullable public String getPasspointFqdn();
-    method @Nullable public String getPasspointProviderFriendlyName();
-    method public int getRssi();
-    method @IntRange(from=0xffffffff) public int getRxLinkSpeedMbps();
-    method public String getSSID();
-    method public android.net.wifi.SupplicantState getSupplicantState();
-    method @IntRange(from=0xffffffff) public int getTxLinkSpeedMbps();
-    method public int getWifiStandard();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final String FREQUENCY_UNITS = "MHz";
-    field public static final String LINK_SPEED_UNITS = "Mbps";
-    field public static final int LINK_SPEED_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public static final class WifiInfo.Builder {
-    ctor public WifiInfo.Builder();
-    method @NonNull public android.net.wifi.WifiInfo build();
-    method @NonNull public android.net.wifi.WifiInfo.Builder setBssid(@NonNull String);
-    method @NonNull public android.net.wifi.WifiInfo.Builder setNetworkId(int);
-    method @NonNull public android.net.wifi.WifiInfo.Builder setRssi(int);
-    method @NonNull public android.net.wifi.WifiInfo.Builder setSsid(@NonNull byte[]);
-  }
-
-  public class WifiManager {
-    method @Deprecated public int addNetwork(android.net.wifi.WifiConfiguration);
-    method @RequiresPermission(android.Manifest.permission.CHANGE_WIFI_STATE) public int addNetworkSuggestions(@NonNull java.util.List<android.net.wifi.WifiNetworkSuggestion>);
-    method public void addOrUpdatePasspointConfiguration(android.net.wifi.hotspot2.PasspointConfiguration);
-    method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_WIFI_STATE}) public void addSuggestionConnectionStatusListener(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.SuggestionConnectionStatusListener);
-    method @Deprecated public static int calculateSignalLevel(int, int);
-    method @IntRange(from=0) public int calculateSignalLevel(int);
-    method @Deprecated public void cancelWps(android.net.wifi.WifiManager.WpsCallback);
-    method public static int compareSignalLevel(int, int);
-    method public android.net.wifi.WifiManager.MulticastLock createMulticastLock(String);
-    method public android.net.wifi.WifiManager.WifiLock createWifiLock(int, String);
-    method @Deprecated public android.net.wifi.WifiManager.WifiLock createWifiLock(String);
-    method @Deprecated public boolean disableNetwork(int);
-    method @Deprecated public boolean disconnect();
-    method @Deprecated public boolean enableNetwork(int, boolean);
-    method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_WIFI_STATE}) public java.util.List<android.net.wifi.WifiConfiguration> getConfiguredNetworks();
-    method public android.net.wifi.WifiInfo getConnectionInfo();
-    method public android.net.DhcpInfo getDhcpInfo();
-    method public int getMaxNumberOfNetworkSuggestionsPerApp();
-    method @IntRange(from=0) public int getMaxSignalLevel();
-    method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public java.util.List<android.net.wifi.WifiNetworkSuggestion> getNetworkSuggestions();
-    method @Deprecated @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", "android.permission.NETWORK_SETUP_WIZARD"}) public java.util.List<android.net.wifi.hotspot2.PasspointConfiguration> getPasspointConfigurations();
-    method public java.util.List<android.net.wifi.ScanResult> getScanResults();
-    method public int getWifiState();
-    method public boolean is5GHzBandSupported();
-    method public boolean is6GHzBandSupported();
-    method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public boolean isAutoWakeupEnabled();
-    method @Deprecated public boolean isDeviceToApRttSupported();
-    method public boolean isEasyConnectSupported();
-    method public boolean isEnhancedOpenSupported();
-    method public boolean isEnhancedPowerReportingSupported();
-    method public boolean isP2pSupported();
-    method public boolean isPreferredNetworkOffloadSupported();
-    method @Deprecated public boolean isScanAlwaysAvailable();
-    method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public boolean isScanThrottleEnabled();
-    method public boolean isStaApConcurrencySupported();
-    method public boolean isTdlsSupported();
-    method public boolean isWapiSupported();
-    method public boolean isWifiEnabled();
-    method public boolean isWifiStandardSupported(int);
-    method public boolean isWpa3SaeSupported();
-    method public boolean isWpa3SuiteBSupported();
-    method @Deprecated public boolean pingSupplicant();
-    method @Deprecated public boolean reassociate();
-    method @Deprecated public boolean reconnect();
-    method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public void registerScanResultsCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.ScanResultsCallback);
-    method @Deprecated public boolean removeNetwork(int);
-    method @RequiresPermission(android.Manifest.permission.CHANGE_WIFI_STATE) public int removeNetworkSuggestions(@NonNull java.util.List<android.net.wifi.WifiNetworkSuggestion>);
-    method @Deprecated @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", "android.permission.NETWORK_CARRIER_PROVISIONING"}) public void removePasspointConfiguration(String);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public void removeSuggestionConnectionStatusListener(@NonNull android.net.wifi.WifiManager.SuggestionConnectionStatusListener);
-    method @Deprecated public boolean saveConfiguration();
-    method public void setTdlsEnabled(java.net.InetAddress, boolean);
-    method public void setTdlsEnabledWithMacAddress(String, boolean);
-    method @Deprecated public boolean setWifiEnabled(boolean);
-    method @RequiresPermission(allOf={android.Manifest.permission.CHANGE_WIFI_STATE, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void startLocalOnlyHotspot(android.net.wifi.WifiManager.LocalOnlyHotspotCallback, @Nullable android.os.Handler);
-    method @Deprecated public boolean startScan();
-    method @Deprecated public void startWps(android.net.wifi.WpsInfo, android.net.wifi.WifiManager.WpsCallback);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public void unregisterScanResultsCallback(@NonNull android.net.wifi.WifiManager.ScanResultsCallback);
-    method @Deprecated public int updateNetwork(android.net.wifi.WifiConfiguration);
-    field public static final String ACTION_PICK_WIFI_NETWORK = "android.net.wifi.PICK_WIFI_NETWORK";
-    field public static final String ACTION_REQUEST_SCAN_ALWAYS_AVAILABLE = "android.net.wifi.action.REQUEST_SCAN_ALWAYS_AVAILABLE";
-    field public static final String ACTION_WIFI_NETWORK_SUGGESTION_POST_CONNECTION = "android.net.wifi.action.WIFI_NETWORK_SUGGESTION_POST_CONNECTION";
-    field public static final String ACTION_WIFI_SCAN_AVAILABILITY_CHANGED = "android.net.wifi.action.WIFI_SCAN_AVAILABILITY_CHANGED";
-    field @Deprecated public static final int ERROR_AUTHENTICATING = 1; // 0x1
-    field @Deprecated public static final String EXTRA_BSSID = "bssid";
-    field public static final String EXTRA_NETWORK_INFO = "networkInfo";
-    field public static final String EXTRA_NETWORK_SUGGESTION = "android.net.wifi.extra.NETWORK_SUGGESTION";
-    field public static final String EXTRA_NEW_RSSI = "newRssi";
-    field @Deprecated public static final String EXTRA_NEW_STATE = "newState";
-    field public static final String EXTRA_PREVIOUS_WIFI_STATE = "previous_wifi_state";
-    field public static final String EXTRA_RESULTS_UPDATED = "resultsUpdated";
-    field public static final String EXTRA_SCAN_AVAILABLE = "android.net.wifi.extra.SCAN_AVAILABLE";
-    field @Deprecated public static final String EXTRA_SUPPLICANT_CONNECTED = "connected";
-    field @Deprecated public static final String EXTRA_SUPPLICANT_ERROR = "supplicantError";
-    field @Deprecated public static final String EXTRA_WIFI_INFO = "wifiInfo";
-    field public static final String EXTRA_WIFI_STATE = "wifi_state";
-    field public static final String NETWORK_IDS_CHANGED_ACTION = "android.net.wifi.NETWORK_IDS_CHANGED";
-    field public static final String NETWORK_STATE_CHANGED_ACTION = "android.net.wifi.STATE_CHANGE";
-    field public static final String RSSI_CHANGED_ACTION = "android.net.wifi.RSSI_CHANGED";
-    field public static final String SCAN_RESULTS_AVAILABLE_ACTION = "android.net.wifi.SCAN_RESULTS";
-    field public static final int STATUS_NETWORK_SUGGESTIONS_ERROR_ADD_DUPLICATE = 3; // 0x3
-    field public static final int STATUS_NETWORK_SUGGESTIONS_ERROR_ADD_EXCEEDS_MAX_PER_APP = 4; // 0x4
-    field public static final int STATUS_NETWORK_SUGGESTIONS_ERROR_ADD_INVALID = 7; // 0x7
-    field public static final int STATUS_NETWORK_SUGGESTIONS_ERROR_ADD_NOT_ALLOWED = 6; // 0x6
-    field public static final int STATUS_NETWORK_SUGGESTIONS_ERROR_APP_DISALLOWED = 2; // 0x2
-    field public static final int STATUS_NETWORK_SUGGESTIONS_ERROR_INTERNAL = 1; // 0x1
-    field public static final int STATUS_NETWORK_SUGGESTIONS_ERROR_REMOVE_INVALID = 5; // 0x5
-    field public static final int STATUS_NETWORK_SUGGESTIONS_SUCCESS = 0; // 0x0
-    field public static final int STATUS_SUGGESTION_CONNECTION_FAILURE_ASSOCIATION = 1; // 0x1
-    field public static final int STATUS_SUGGESTION_CONNECTION_FAILURE_AUTHENTICATION = 2; // 0x2
-    field public static final int STATUS_SUGGESTION_CONNECTION_FAILURE_IP_PROVISIONING = 3; // 0x3
-    field public static final int STATUS_SUGGESTION_CONNECTION_FAILURE_UNKNOWN = 0; // 0x0
-    field @Deprecated public static final String SUPPLICANT_CONNECTION_CHANGE_ACTION = "android.net.wifi.supplicant.CONNECTION_CHANGE";
-    field @Deprecated public static final String SUPPLICANT_STATE_CHANGED_ACTION = "android.net.wifi.supplicant.STATE_CHANGE";
-    field public static final String UNKNOWN_SSID = "<unknown ssid>";
-    field @Deprecated public static final int WIFI_MODE_FULL = 1; // 0x1
-    field public static final int WIFI_MODE_FULL_HIGH_PERF = 3; // 0x3
-    field public static final int WIFI_MODE_FULL_LOW_LATENCY = 4; // 0x4
-    field @Deprecated public static final int WIFI_MODE_SCAN_ONLY = 2; // 0x2
-    field public static final String WIFI_STATE_CHANGED_ACTION = "android.net.wifi.WIFI_STATE_CHANGED";
-    field public static final int WIFI_STATE_DISABLED = 1; // 0x1
-    field public static final int WIFI_STATE_DISABLING = 0; // 0x0
-    field public static final int WIFI_STATE_ENABLED = 3; // 0x3
-    field public static final int WIFI_STATE_ENABLING = 2; // 0x2
-    field public static final int WIFI_STATE_UNKNOWN = 4; // 0x4
-    field @Deprecated public static final int WPS_AUTH_FAILURE = 6; // 0x6
-    field @Deprecated public static final int WPS_OVERLAP_ERROR = 3; // 0x3
-    field @Deprecated public static final int WPS_TIMED_OUT = 7; // 0x7
-    field @Deprecated public static final int WPS_TKIP_ONLY_PROHIBITED = 5; // 0x5
-    field @Deprecated public static final int WPS_WEP_PROHIBITED = 4; // 0x4
-  }
-
-  public static class WifiManager.LocalOnlyHotspotCallback {
-    ctor public WifiManager.LocalOnlyHotspotCallback();
-    method public void onFailed(int);
-    method public void onStarted(android.net.wifi.WifiManager.LocalOnlyHotspotReservation);
-    method public void onStopped();
-    field public static final int ERROR_GENERIC = 2; // 0x2
-    field public static final int ERROR_INCOMPATIBLE_MODE = 3; // 0x3
-    field public static final int ERROR_NO_CHANNEL = 1; // 0x1
-    field public static final int ERROR_TETHERING_DISALLOWED = 4; // 0x4
-  }
-
-  public class WifiManager.LocalOnlyHotspotReservation implements java.lang.AutoCloseable {
-    method public void close();
-    method @NonNull public android.net.wifi.SoftApConfiguration getSoftApConfiguration();
-    method @Deprecated @Nullable public android.net.wifi.WifiConfiguration getWifiConfiguration();
-  }
-
-  public class WifiManager.MulticastLock {
-    method public void acquire();
-    method public boolean isHeld();
-    method public void release();
-    method public void setReferenceCounted(boolean);
-  }
-
-  public abstract static class WifiManager.ScanResultsCallback {
-    ctor public WifiManager.ScanResultsCallback();
-    method public abstract void onScanResultsAvailable();
-  }
-
-  public static interface WifiManager.SuggestionConnectionStatusListener {
-    method public void onConnectionStatus(@NonNull android.net.wifi.WifiNetworkSuggestion, int);
-  }
-
-  public class WifiManager.WifiLock {
-    method public void acquire();
-    method public boolean isHeld();
-    method public void release();
-    method public void setReferenceCounted(boolean);
-    method public void setWorkSource(android.os.WorkSource);
-  }
-
-  @Deprecated public abstract static class WifiManager.WpsCallback {
-    ctor @Deprecated public WifiManager.WpsCallback();
-    method @Deprecated public abstract void onFailed(int);
-    method @Deprecated public abstract void onStarted(String);
-    method @Deprecated public abstract void onSucceeded();
-  }
-
-  public final class WifiNetworkSpecifier extends android.net.NetworkSpecifier implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.WifiNetworkSpecifier> CREATOR;
-  }
-
-  public static final class WifiNetworkSpecifier.Builder {
-    ctor public WifiNetworkSpecifier.Builder();
-    method @NonNull public android.net.wifi.WifiNetworkSpecifier build();
-    method @NonNull public android.net.wifi.WifiNetworkSpecifier.Builder setBssid(@NonNull android.net.MacAddress);
-    method @NonNull public android.net.wifi.WifiNetworkSpecifier.Builder setBssidPattern(@NonNull android.net.MacAddress, @NonNull android.net.MacAddress);
-    method @NonNull public android.net.wifi.WifiNetworkSpecifier.Builder setIsEnhancedOpen(boolean);
-    method @NonNull public android.net.wifi.WifiNetworkSpecifier.Builder setIsHiddenSsid(boolean);
-    method @NonNull public android.net.wifi.WifiNetworkSpecifier.Builder setSsid(@NonNull String);
-    method @NonNull public android.net.wifi.WifiNetworkSpecifier.Builder setSsidPattern(@NonNull android.os.PatternMatcher);
-    method @NonNull public android.net.wifi.WifiNetworkSpecifier.Builder setWpa2EnterpriseConfig(@NonNull android.net.wifi.WifiEnterpriseConfig);
-    method @NonNull public android.net.wifi.WifiNetworkSpecifier.Builder setWpa2Passphrase(@NonNull String);
-    method @NonNull public android.net.wifi.WifiNetworkSpecifier.Builder setWpa3EnterpriseConfig(@NonNull android.net.wifi.WifiEnterpriseConfig);
-    method @NonNull public android.net.wifi.WifiNetworkSpecifier.Builder setWpa3Passphrase(@NonNull String);
-  }
-
-  public final class WifiNetworkSuggestion implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.net.MacAddress getBssid();
-    method @Nullable public android.net.wifi.WifiEnterpriseConfig getEnterpriseConfig();
-    method @Nullable public String getPassphrase();
-    method @Nullable public android.net.wifi.hotspot2.PasspointConfiguration getPasspointConfig();
-    method @IntRange(from=0) public int getPriority();
-    method @Nullable public String getSsid();
-    method public boolean isAppInteractionRequired();
-    method public boolean isCredentialSharedWithUser();
-    method public boolean isEnhancedOpen();
-    method public boolean isHiddenSsid();
-    method public boolean isInitialAutojoinEnabled();
-    method public boolean isMetered();
-    method public boolean isUntrusted();
-    method public boolean isUserInteractionRequired();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.WifiNetworkSuggestion> CREATOR;
-  }
-
-  public static final class WifiNetworkSuggestion.Builder {
-    ctor public WifiNetworkSuggestion.Builder();
-    method @NonNull public android.net.wifi.WifiNetworkSuggestion build();
-    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setBssid(@NonNull android.net.MacAddress);
-    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setCredentialSharedWithUser(boolean);
-    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsAppInteractionRequired(boolean);
-    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsEnhancedOpen(boolean);
-    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsHiddenSsid(boolean);
-    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsInitialAutojoinEnabled(boolean);
-    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsMetered(boolean);
-    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsUserInteractionRequired(boolean);
-    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setPasspointConfig(@NonNull android.net.wifi.hotspot2.PasspointConfiguration);
-    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setPriority(@IntRange(from=0) int);
-    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setSsid(@NonNull String);
-    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setUntrusted(boolean);
-    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setWapiEnterpriseConfig(@NonNull android.net.wifi.WifiEnterpriseConfig);
-    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setWapiPassphrase(@NonNull String);
-    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setWpa2EnterpriseConfig(@NonNull android.net.wifi.WifiEnterpriseConfig);
-    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setWpa2Passphrase(@NonNull String);
-    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setWpa3EnterpriseConfig(@NonNull android.net.wifi.WifiEnterpriseConfig);
-    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setWpa3Passphrase(@NonNull String);
-  }
-
-  public class WpsInfo implements android.os.Parcelable {
-    ctor public WpsInfo();
-    ctor public WpsInfo(android.net.wifi.WpsInfo);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public String BSSID;
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.WpsInfo> CREATOR;
-    field public static final int DISPLAY = 1; // 0x1
-    field public static final int INVALID = 4; // 0x4
-    field public static final int KEYPAD = 2; // 0x2
-    field public static final int LABEL = 3; // 0x3
-    field public static final int PBC = 0; // 0x0
-    field public String pin;
-    field public int setup;
-  }
-
-}
-
-package android.net.wifi.aware {
-
-  public class AttachCallback {
-    ctor public AttachCallback();
-    method public void onAttachFailed();
-    method public void onAttached(android.net.wifi.aware.WifiAwareSession);
-  }
-
-  public final class Characteristics implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getMaxMatchFilterLength();
-    method public int getMaxServiceNameLength();
-    method public int getMaxServiceSpecificInfoLength();
-    method public int getSupportedCipherSuites();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.aware.Characteristics> CREATOR;
-    field public static final int WIFI_AWARE_CIPHER_SUITE_NCS_SK_128 = 1; // 0x1
-    field public static final int WIFI_AWARE_CIPHER_SUITE_NCS_SK_256 = 2; // 0x2
-  }
-
-  public class DiscoverySession implements java.lang.AutoCloseable {
-    method public void close();
-    method @Deprecated public android.net.NetworkSpecifier createNetworkSpecifierOpen(@NonNull android.net.wifi.aware.PeerHandle);
-    method @Deprecated public android.net.NetworkSpecifier createNetworkSpecifierPassphrase(@NonNull android.net.wifi.aware.PeerHandle, @NonNull String);
-    method public void sendMessage(@NonNull android.net.wifi.aware.PeerHandle, int, @Nullable byte[]);
-  }
-
-  public class DiscoverySessionCallback {
-    ctor public DiscoverySessionCallback();
-    method public void onMessageReceived(android.net.wifi.aware.PeerHandle, byte[]);
-    method public void onMessageSendFailed(int);
-    method public void onMessageSendSucceeded(int);
-    method public void onPublishStarted(@NonNull android.net.wifi.aware.PublishDiscoverySession);
-    method public void onServiceDiscovered(android.net.wifi.aware.PeerHandle, byte[], java.util.List<byte[]>);
-    method public void onServiceDiscoveredWithinRange(android.net.wifi.aware.PeerHandle, byte[], java.util.List<byte[]>, int);
-    method public void onSessionConfigFailed();
-    method public void onSessionConfigUpdated();
-    method public void onSessionTerminated();
-    method public void onSubscribeStarted(@NonNull android.net.wifi.aware.SubscribeDiscoverySession);
-  }
-
-  public class IdentityChangedListener {
-    ctor public IdentityChangedListener();
-    method public void onIdentityChanged(byte[]);
-  }
-
-  public final class ParcelablePeerHandle extends android.net.wifi.aware.PeerHandle implements android.os.Parcelable {
-    ctor public ParcelablePeerHandle(@NonNull android.net.wifi.aware.PeerHandle);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.aware.ParcelablePeerHandle> CREATOR;
-  }
-
-  public class PeerHandle {
-  }
-
-  public final class PublishConfig implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.aware.PublishConfig> CREATOR;
-    field public static final int PUBLISH_TYPE_SOLICITED = 1; // 0x1
-    field public static final int PUBLISH_TYPE_UNSOLICITED = 0; // 0x0
-  }
-
-  public static final class PublishConfig.Builder {
-    ctor public PublishConfig.Builder();
-    method public android.net.wifi.aware.PublishConfig build();
-    method public android.net.wifi.aware.PublishConfig.Builder setMatchFilter(@Nullable java.util.List<byte[]>);
-    method public android.net.wifi.aware.PublishConfig.Builder setPublishType(int);
-    method public android.net.wifi.aware.PublishConfig.Builder setRangingEnabled(boolean);
-    method public android.net.wifi.aware.PublishConfig.Builder setServiceName(@NonNull String);
-    method public android.net.wifi.aware.PublishConfig.Builder setServiceSpecificInfo(@Nullable byte[]);
-    method public android.net.wifi.aware.PublishConfig.Builder setTerminateNotificationEnabled(boolean);
-    method public android.net.wifi.aware.PublishConfig.Builder setTtlSec(int);
-  }
-
-  public class PublishDiscoverySession extends android.net.wifi.aware.DiscoverySession {
-    method public void updatePublish(@NonNull android.net.wifi.aware.PublishConfig);
-  }
-
-  public final class SubscribeConfig implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.aware.SubscribeConfig> CREATOR;
-    field public static final int SUBSCRIBE_TYPE_ACTIVE = 1; // 0x1
-    field public static final int SUBSCRIBE_TYPE_PASSIVE = 0; // 0x0
-  }
-
-  public static final class SubscribeConfig.Builder {
-    ctor public SubscribeConfig.Builder();
-    method public android.net.wifi.aware.SubscribeConfig build();
-    method public android.net.wifi.aware.SubscribeConfig.Builder setMatchFilter(@Nullable java.util.List<byte[]>);
-    method public android.net.wifi.aware.SubscribeConfig.Builder setMaxDistanceMm(int);
-    method public android.net.wifi.aware.SubscribeConfig.Builder setMinDistanceMm(int);
-    method public android.net.wifi.aware.SubscribeConfig.Builder setServiceName(@NonNull String);
-    method public android.net.wifi.aware.SubscribeConfig.Builder setServiceSpecificInfo(@Nullable byte[]);
-    method public android.net.wifi.aware.SubscribeConfig.Builder setSubscribeType(int);
-    method public android.net.wifi.aware.SubscribeConfig.Builder setTerminateNotificationEnabled(boolean);
-    method public android.net.wifi.aware.SubscribeConfig.Builder setTtlSec(int);
-  }
-
-  public class SubscribeDiscoverySession extends android.net.wifi.aware.DiscoverySession {
-    method public void updateSubscribe(@NonNull android.net.wifi.aware.SubscribeConfig);
-  }
-
-  public class WifiAwareManager {
-    method public void attach(@NonNull android.net.wifi.aware.AttachCallback, @Nullable android.os.Handler);
-    method public void attach(@NonNull android.net.wifi.aware.AttachCallback, @NonNull android.net.wifi.aware.IdentityChangedListener, @Nullable android.os.Handler);
-    method public android.net.wifi.aware.Characteristics getCharacteristics();
-    method public boolean isAvailable();
-    field public static final String ACTION_WIFI_AWARE_STATE_CHANGED = "android.net.wifi.aware.action.WIFI_AWARE_STATE_CHANGED";
-    field public static final int WIFI_AWARE_DATA_PATH_ROLE_INITIATOR = 0; // 0x0
-    field public static final int WIFI_AWARE_DATA_PATH_ROLE_RESPONDER = 1; // 0x1
-  }
-
-  public final class WifiAwareNetworkInfo implements android.os.Parcelable android.net.TransportInfo {
-    method public int describeContents();
-    method @Nullable public java.net.Inet6Address getPeerIpv6Addr();
-    method public int getPort();
-    method public int getTransportProtocol();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.aware.WifiAwareNetworkInfo> CREATOR;
-  }
-
-  public final class WifiAwareNetworkSpecifier extends android.net.NetworkSpecifier implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.aware.WifiAwareNetworkSpecifier> CREATOR;
-  }
-
-  public static final class WifiAwareNetworkSpecifier.Builder {
-    ctor public WifiAwareNetworkSpecifier.Builder(@NonNull android.net.wifi.aware.DiscoverySession, @NonNull android.net.wifi.aware.PeerHandle);
-    method @NonNull public android.net.wifi.aware.WifiAwareNetworkSpecifier build();
-    method @NonNull public android.net.wifi.aware.WifiAwareNetworkSpecifier.Builder setPmk(@NonNull byte[]);
-    method @NonNull public android.net.wifi.aware.WifiAwareNetworkSpecifier.Builder setPort(@IntRange(from=0, to=65535) int);
-    method @NonNull public android.net.wifi.aware.WifiAwareNetworkSpecifier.Builder setPskPassphrase(@NonNull String);
-    method @NonNull public android.net.wifi.aware.WifiAwareNetworkSpecifier.Builder setTransportProtocol(@IntRange(from=0, to=255) int);
-  }
-
-  public class WifiAwareSession implements java.lang.AutoCloseable {
-    method public void close();
-    method public android.net.NetworkSpecifier createNetworkSpecifierOpen(int, @NonNull byte[]);
-    method public android.net.NetworkSpecifier createNetworkSpecifierPassphrase(int, @NonNull byte[], @NonNull String);
-    method public void publish(@NonNull android.net.wifi.aware.PublishConfig, @NonNull android.net.wifi.aware.DiscoverySessionCallback, @Nullable android.os.Handler);
-    method public void subscribe(@NonNull android.net.wifi.aware.SubscribeConfig, @NonNull android.net.wifi.aware.DiscoverySessionCallback, @Nullable android.os.Handler);
-  }
-
-}
-
-package android.net.wifi.hotspot2 {
-
-  public final class ConfigParser {
-    method public static android.net.wifi.hotspot2.PasspointConfiguration parsePasspointConfig(String, byte[]);
-  }
-
-  public final class PasspointConfiguration implements android.os.Parcelable {
-    ctor public PasspointConfiguration();
-    ctor public PasspointConfiguration(android.net.wifi.hotspot2.PasspointConfiguration);
-    method public int describeContents();
-    method public android.net.wifi.hotspot2.pps.Credential getCredential();
-    method public android.net.wifi.hotspot2.pps.HomeSp getHomeSp();
-    method public long getSubscriptionExpirationTimeMillis();
-    method @NonNull public String getUniqueId();
-    method public boolean isOsuProvisioned();
-    method public void setCredential(android.net.wifi.hotspot2.pps.Credential);
-    method public void setHomeSp(android.net.wifi.hotspot2.pps.HomeSp);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.hotspot2.PasspointConfiguration> CREATOR;
-  }
-
-}
-
-package android.net.wifi.hotspot2.omadm {
-
-  public final class PpsMoParser {
-    method public static android.net.wifi.hotspot2.PasspointConfiguration parseMoText(String);
-  }
-
-}
-
-package android.net.wifi.hotspot2.pps {
-
-  public final class Credential implements android.os.Parcelable {
-    ctor public Credential();
-    ctor public Credential(android.net.wifi.hotspot2.pps.Credential);
-    method public int describeContents();
-    method public java.security.cert.X509Certificate getCaCertificate();
-    method public android.net.wifi.hotspot2.pps.Credential.CertificateCredential getCertCredential();
-    method public java.security.cert.X509Certificate[] getClientCertificateChain();
-    method public java.security.PrivateKey getClientPrivateKey();
-    method public String getRealm();
-    method public android.net.wifi.hotspot2.pps.Credential.SimCredential getSimCredential();
-    method public android.net.wifi.hotspot2.pps.Credential.UserCredential getUserCredential();
-    method public void setCaCertificate(java.security.cert.X509Certificate);
-    method public void setCertCredential(android.net.wifi.hotspot2.pps.Credential.CertificateCredential);
-    method public void setClientCertificateChain(java.security.cert.X509Certificate[]);
-    method public void setClientPrivateKey(java.security.PrivateKey);
-    method public void setRealm(String);
-    method public void setSimCredential(android.net.wifi.hotspot2.pps.Credential.SimCredential);
-    method public void setUserCredential(android.net.wifi.hotspot2.pps.Credential.UserCredential);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.hotspot2.pps.Credential> CREATOR;
-  }
-
-  public static final class Credential.CertificateCredential implements android.os.Parcelable {
-    ctor public Credential.CertificateCredential();
-    ctor public Credential.CertificateCredential(android.net.wifi.hotspot2.pps.Credential.CertificateCredential);
-    method public int describeContents();
-    method public byte[] getCertSha256Fingerprint();
-    method public String getCertType();
-    method public void setCertSha256Fingerprint(byte[]);
-    method public void setCertType(String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.hotspot2.pps.Credential.CertificateCredential> CREATOR;
-  }
-
-  public static final class Credential.SimCredential implements android.os.Parcelable {
-    ctor public Credential.SimCredential();
-    ctor public Credential.SimCredential(android.net.wifi.hotspot2.pps.Credential.SimCredential);
-    method public int describeContents();
-    method public int getEapType();
-    method public String getImsi();
-    method public void setEapType(int);
-    method public void setImsi(String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.hotspot2.pps.Credential.SimCredential> CREATOR;
-  }
-
-  public static final class Credential.UserCredential implements android.os.Parcelable {
-    ctor public Credential.UserCredential();
-    ctor public Credential.UserCredential(android.net.wifi.hotspot2.pps.Credential.UserCredential);
-    method public int describeContents();
-    method public int getEapType();
-    method public String getNonEapInnerMethod();
-    method public String getPassword();
-    method public String getUsername();
-    method public void setEapType(int);
-    method public void setNonEapInnerMethod(String);
-    method public void setPassword(String);
-    method public void setUsername(String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.hotspot2.pps.Credential.UserCredential> CREATOR;
-  }
-
-  public final class HomeSp implements android.os.Parcelable {
-    ctor public HomeSp();
-    ctor public HomeSp(android.net.wifi.hotspot2.pps.HomeSp);
-    method public int describeContents();
-    method public String getFqdn();
-    method public String getFriendlyName();
-    method public long[] getRoamingConsortiumOis();
-    method public void setFqdn(String);
-    method public void setFriendlyName(String);
-    method public void setRoamingConsortiumOis(long[]);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.hotspot2.pps.HomeSp> CREATOR;
-  }
-
-}
-
-package android.net.wifi.p2p {
-
-  public class WifiP2pConfig implements android.os.Parcelable {
-    ctor public WifiP2pConfig();
-    ctor public WifiP2pConfig(android.net.wifi.p2p.WifiP2pConfig);
-    method public int describeContents();
-    method public int getGroupOwnerBand();
-    method public int getNetworkId();
-    method @Nullable public String getNetworkName();
-    method @Nullable public String getPassphrase();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.p2p.WifiP2pConfig> CREATOR;
-    field public static final int GROUP_OWNER_BAND_2GHZ = 1; // 0x1
-    field public static final int GROUP_OWNER_BAND_5GHZ = 2; // 0x2
-    field public static final int GROUP_OWNER_BAND_AUTO = 0; // 0x0
-    field public static final int GROUP_OWNER_INTENT_AUTO = -1; // 0xffffffff
-    field public static final int GROUP_OWNER_INTENT_MAX = 15; // 0xf
-    field public static final int GROUP_OWNER_INTENT_MIN = 0; // 0x0
-    field public String deviceAddress;
-    field @IntRange(from=0, to=15) public int groupOwnerIntent;
-    field public android.net.wifi.WpsInfo wps;
-  }
-
-  public static final class WifiP2pConfig.Builder {
-    ctor public WifiP2pConfig.Builder();
-    method @NonNull public android.net.wifi.p2p.WifiP2pConfig build();
-    method @NonNull public android.net.wifi.p2p.WifiP2pConfig.Builder enablePersistentMode(boolean);
-    method @NonNull public android.net.wifi.p2p.WifiP2pConfig.Builder setDeviceAddress(@Nullable android.net.MacAddress);
-    method @NonNull public android.net.wifi.p2p.WifiP2pConfig.Builder setGroupOperatingBand(int);
-    method @NonNull public android.net.wifi.p2p.WifiP2pConfig.Builder setGroupOperatingFrequency(int);
-    method @NonNull public android.net.wifi.p2p.WifiP2pConfig.Builder setNetworkName(@NonNull String);
-    method @NonNull public android.net.wifi.p2p.WifiP2pConfig.Builder setPassphrase(@NonNull String);
-  }
-
-  public class WifiP2pDevice implements android.os.Parcelable {
-    ctor public WifiP2pDevice();
-    ctor public WifiP2pDevice(android.net.wifi.p2p.WifiP2pDevice);
-    method public int describeContents();
-    method @Nullable public android.net.wifi.p2p.WifiP2pWfdInfo getWfdInfo();
-    method public boolean isGroupOwner();
-    method public boolean isServiceDiscoveryCapable();
-    method public void update(@NonNull android.net.wifi.p2p.WifiP2pDevice);
-    method public boolean wpsDisplaySupported();
-    method public boolean wpsKeypadSupported();
-    method public boolean wpsPbcSupported();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int AVAILABLE = 3; // 0x3
-    field public static final int CONNECTED = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.p2p.WifiP2pDevice> CREATOR;
-    field public static final int FAILED = 2; // 0x2
-    field public static final int INVITED = 1; // 0x1
-    field public static final int UNAVAILABLE = 4; // 0x4
-    field public String deviceAddress;
-    field public String deviceName;
-    field public String primaryDeviceType;
-    field public String secondaryDeviceType;
-    field public int status;
-  }
-
-  public class WifiP2pDeviceList implements android.os.Parcelable {
-    ctor public WifiP2pDeviceList();
-    ctor public WifiP2pDeviceList(android.net.wifi.p2p.WifiP2pDeviceList);
-    method public int describeContents();
-    method public android.net.wifi.p2p.WifiP2pDevice get(String);
-    method public java.util.Collection<android.net.wifi.p2p.WifiP2pDevice> getDeviceList();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.p2p.WifiP2pDeviceList> CREATOR;
-  }
-
-  public class WifiP2pGroup implements android.os.Parcelable {
-    ctor public WifiP2pGroup();
-    ctor public WifiP2pGroup(android.net.wifi.p2p.WifiP2pGroup);
-    method public int describeContents();
-    method public java.util.Collection<android.net.wifi.p2p.WifiP2pDevice> getClientList();
-    method public int getFrequency();
-    method public String getInterface();
-    method public int getNetworkId();
-    method public String getNetworkName();
-    method public android.net.wifi.p2p.WifiP2pDevice getOwner();
-    method public String getPassphrase();
-    method public boolean isGroupOwner();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.p2p.WifiP2pGroup> CREATOR;
-    field public static final int NETWORK_ID_PERSISTENT = -2; // 0xfffffffe
-    field public static final int NETWORK_ID_TEMPORARY = -1; // 0xffffffff
-  }
-
-  public class WifiP2pInfo implements android.os.Parcelable {
-    ctor public WifiP2pInfo();
-    ctor public WifiP2pInfo(android.net.wifi.p2p.WifiP2pInfo);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.p2p.WifiP2pInfo> CREATOR;
-    field public boolean groupFormed;
-    field public java.net.InetAddress groupOwnerAddress;
-    field public boolean isGroupOwner;
-  }
-
-  public class WifiP2pManager {
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public void addLocalService(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.nsd.WifiP2pServiceInfo, android.net.wifi.p2p.WifiP2pManager.ActionListener);
-    method public void addServiceRequest(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.nsd.WifiP2pServiceRequest, android.net.wifi.p2p.WifiP2pManager.ActionListener);
-    method public void cancelConnect(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener);
-    method public void clearLocalServices(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener);
-    method public void clearServiceRequests(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public void connect(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pConfig, android.net.wifi.p2p.WifiP2pManager.ActionListener);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public void createGroup(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public void createGroup(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @Nullable android.net.wifi.p2p.WifiP2pConfig, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public void discoverPeers(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public void discoverServices(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener);
-    method public android.net.wifi.p2p.WifiP2pManager.Channel initialize(android.content.Context, android.os.Looper, android.net.wifi.p2p.WifiP2pManager.ChannelListener);
-    method public void removeGroup(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener);
-    method public void removeLocalService(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.nsd.WifiP2pServiceInfo, android.net.wifi.p2p.WifiP2pManager.ActionListener);
-    method public void removeServiceRequest(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.nsd.WifiP2pServiceRequest, android.net.wifi.p2p.WifiP2pManager.ActionListener);
-    method public void requestConnectionInfo(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ConnectionInfoListener);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public void requestDeviceInfo(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @NonNull android.net.wifi.p2p.WifiP2pManager.DeviceInfoListener);
-    method public void requestDiscoveryState(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @NonNull android.net.wifi.p2p.WifiP2pManager.DiscoveryStateListener);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public void requestGroupInfo(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.GroupInfoListener);
-    method public void requestNetworkInfo(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @NonNull android.net.wifi.p2p.WifiP2pManager.NetworkInfoListener);
-    method public void requestP2pState(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @NonNull android.net.wifi.p2p.WifiP2pManager.P2pStateListener);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public void requestPeers(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.PeerListListener);
-    method public void setDnsSdResponseListeners(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.DnsSdServiceResponseListener, android.net.wifi.p2p.WifiP2pManager.DnsSdTxtRecordListener);
-    method public void setServiceResponseListener(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ServiceResponseListener);
-    method public void setUpnpServiceResponseListener(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.UpnpServiceResponseListener);
-    method public void stopPeerDiscovery(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener);
-    field public static final int BUSY = 2; // 0x2
-    field public static final int ERROR = 0; // 0x0
-    field public static final String EXTRA_DISCOVERY_STATE = "discoveryState";
-    field public static final String EXTRA_NETWORK_INFO = "networkInfo";
-    field public static final String EXTRA_P2P_DEVICE_LIST = "wifiP2pDeviceList";
-    field public static final String EXTRA_WIFI_P2P_DEVICE = "wifiP2pDevice";
-    field public static final String EXTRA_WIFI_P2P_GROUP = "p2pGroupInfo";
-    field public static final String EXTRA_WIFI_P2P_INFO = "wifiP2pInfo";
-    field public static final String EXTRA_WIFI_STATE = "wifi_p2p_state";
-    field public static final int NO_SERVICE_REQUESTS = 3; // 0x3
-    field public static final int P2P_UNSUPPORTED = 1; // 0x1
-    field public static final String WIFI_P2P_CONNECTION_CHANGED_ACTION = "android.net.wifi.p2p.CONNECTION_STATE_CHANGE";
-    field public static final String WIFI_P2P_DISCOVERY_CHANGED_ACTION = "android.net.wifi.p2p.DISCOVERY_STATE_CHANGE";
-    field public static final int WIFI_P2P_DISCOVERY_STARTED = 2; // 0x2
-    field public static final int WIFI_P2P_DISCOVERY_STOPPED = 1; // 0x1
-    field public static final String WIFI_P2P_PEERS_CHANGED_ACTION = "android.net.wifi.p2p.PEERS_CHANGED";
-    field public static final String WIFI_P2P_STATE_CHANGED_ACTION = "android.net.wifi.p2p.STATE_CHANGED";
-    field public static final int WIFI_P2P_STATE_DISABLED = 1; // 0x1
-    field public static final int WIFI_P2P_STATE_ENABLED = 2; // 0x2
-    field public static final String WIFI_P2P_THIS_DEVICE_CHANGED_ACTION = "android.net.wifi.p2p.THIS_DEVICE_CHANGED";
-  }
-
-  public static interface WifiP2pManager.ActionListener {
-    method public void onFailure(int);
-    method public void onSuccess();
-  }
-
-  public static class WifiP2pManager.Channel implements java.lang.AutoCloseable {
-    method public void close();
-  }
-
-  public static interface WifiP2pManager.ChannelListener {
-    method public void onChannelDisconnected();
-  }
-
-  public static interface WifiP2pManager.ConnectionInfoListener {
-    method public void onConnectionInfoAvailable(android.net.wifi.p2p.WifiP2pInfo);
-  }
-
-  public static interface WifiP2pManager.DeviceInfoListener {
-    method public void onDeviceInfoAvailable(@Nullable android.net.wifi.p2p.WifiP2pDevice);
-  }
-
-  public static interface WifiP2pManager.DiscoveryStateListener {
-    method public void onDiscoveryStateAvailable(int);
-  }
-
-  public static interface WifiP2pManager.DnsSdServiceResponseListener {
-    method public void onDnsSdServiceAvailable(String, String, android.net.wifi.p2p.WifiP2pDevice);
-  }
-
-  public static interface WifiP2pManager.DnsSdTxtRecordListener {
-    method public void onDnsSdTxtRecordAvailable(String, java.util.Map<java.lang.String,java.lang.String>, android.net.wifi.p2p.WifiP2pDevice);
-  }
-
-  public static interface WifiP2pManager.GroupInfoListener {
-    method public void onGroupInfoAvailable(android.net.wifi.p2p.WifiP2pGroup);
-  }
-
-  public static interface WifiP2pManager.NetworkInfoListener {
-    method public void onNetworkInfoAvailable(@NonNull android.net.NetworkInfo);
-  }
-
-  public static interface WifiP2pManager.P2pStateListener {
-    method public void onP2pStateAvailable(int);
-  }
-
-  public static interface WifiP2pManager.PeerListListener {
-    method public void onPeersAvailable(android.net.wifi.p2p.WifiP2pDeviceList);
-  }
-
-  public static interface WifiP2pManager.ServiceResponseListener {
-    method public void onServiceAvailable(int, byte[], android.net.wifi.p2p.WifiP2pDevice);
-  }
-
-  public static interface WifiP2pManager.UpnpServiceResponseListener {
-    method public void onUpnpServiceAvailable(java.util.List<java.lang.String>, android.net.wifi.p2p.WifiP2pDevice);
-  }
-
-  public final class WifiP2pWfdInfo implements android.os.Parcelable {
-    ctor public WifiP2pWfdInfo();
-    ctor public WifiP2pWfdInfo(@Nullable android.net.wifi.p2p.WifiP2pWfdInfo);
-    method public int describeContents();
-    method public int getControlPort();
-    method public int getDeviceType();
-    method public int getMaxThroughput();
-    method public boolean isContentProtectionSupported();
-    method public boolean isEnabled();
-    method public boolean isSessionAvailable();
-    method public void setContentProtectionSupported(boolean);
-    method public void setControlPort(@IntRange(from=0) int);
-    method public boolean setDeviceType(int);
-    method public void setEnabled(boolean);
-    method public void setMaxThroughput(@IntRange(from=0) int);
-    method public void setSessionAvailable(boolean);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.p2p.WifiP2pWfdInfo> CREATOR;
-    field public static final int DEVICE_TYPE_PRIMARY_SINK = 1; // 0x1
-    field public static final int DEVICE_TYPE_SECONDARY_SINK = 2; // 0x2
-    field public static final int DEVICE_TYPE_SOURCE_OR_PRIMARY_SINK = 3; // 0x3
-    field public static final int DEVICE_TYPE_WFD_SOURCE = 0; // 0x0
-  }
-
-}
-
-package android.net.wifi.p2p.nsd {
-
-  public class WifiP2pDnsSdServiceInfo extends android.net.wifi.p2p.nsd.WifiP2pServiceInfo {
-    method public static android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceInfo newInstance(String, String, java.util.Map<java.lang.String,java.lang.String>);
-  }
-
-  public class WifiP2pDnsSdServiceRequest extends android.net.wifi.p2p.nsd.WifiP2pServiceRequest {
-    method public static android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceRequest newInstance();
-    method public static android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceRequest newInstance(String);
-    method public static android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceRequest newInstance(String, String);
-  }
-
-  public class WifiP2pServiceInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int SERVICE_TYPE_ALL = 0; // 0x0
-    field public static final int SERVICE_TYPE_BONJOUR = 1; // 0x1
-    field public static final int SERVICE_TYPE_UPNP = 2; // 0x2
-    field public static final int SERVICE_TYPE_VENDOR_SPECIFIC = 255; // 0xff
-  }
-
-  public class WifiP2pServiceRequest implements android.os.Parcelable {
-    method public int describeContents();
-    method public static android.net.wifi.p2p.nsd.WifiP2pServiceRequest newInstance(int, String);
-    method public static android.net.wifi.p2p.nsd.WifiP2pServiceRequest newInstance(int);
-    method public void writeToParcel(android.os.Parcel, int);
-  }
-
-  public class WifiP2pUpnpServiceInfo extends android.net.wifi.p2p.nsd.WifiP2pServiceInfo {
-    method public static android.net.wifi.p2p.nsd.WifiP2pUpnpServiceInfo newInstance(String, String, java.util.List<java.lang.String>);
-  }
-
-  public class WifiP2pUpnpServiceRequest extends android.net.wifi.p2p.nsd.WifiP2pServiceRequest {
-    method public static android.net.wifi.p2p.nsd.WifiP2pUpnpServiceRequest newInstance();
-    method public static android.net.wifi.p2p.nsd.WifiP2pUpnpServiceRequest newInstance(String);
-  }
-
-}
-
-package android.net.wifi.rtt {
-
-  public class CivicLocationKeys {
-    field public static final int ADDITIONAL_CODE = 32; // 0x20
-    field public static final int APT = 26; // 0x1a
-    field public static final int BOROUGH = 4; // 0x4
-    field public static final int BRANCH_ROAD_NAME = 36; // 0x24
-    field public static final int BUILDING = 25; // 0x19
-    field public static final int CITY = 3; // 0x3
-    field public static final int COUNTY = 2; // 0x2
-    field public static final int DESK = 33; // 0x21
-    field public static final int FLOOR = 27; // 0x1b
-    field public static final int GROUP_OF_STREETS = 6; // 0x6
-    field public static final int HNO = 19; // 0x13
-    field public static final int HNS = 20; // 0x14
-    field public static final int LANGUAGE = 0; // 0x0
-    field public static final int LMK = 21; // 0x15
-    field public static final int LOC = 22; // 0x16
-    field public static final int NAM = 23; // 0x17
-    field public static final int NEIGHBORHOOD = 5; // 0x5
-    field public static final int PCN = 30; // 0x1e
-    field public static final int POD = 17; // 0x11
-    field public static final int POSTAL_CODE = 24; // 0x18
-    field public static final int PO_BOX = 31; // 0x1f
-    field public static final int PRD = 16; // 0x10
-    field public static final int PRIMARY_ROAD_NAME = 34; // 0x22
-    field public static final int ROAD_SECTION = 35; // 0x23
-    field public static final int ROOM = 28; // 0x1c
-    field public static final int SCRIPT = 128; // 0x80
-    field public static final int STATE = 1; // 0x1
-    field public static final int STREET_NAME_POST_MODIFIER = 39; // 0x27
-    field public static final int STREET_NAME_PRE_MODIFIER = 38; // 0x26
-    field public static final int STS = 18; // 0x12
-    field public static final int SUBBRANCH_ROAD_NAME = 37; // 0x25
-    field public static final int TYPE_OF_PLACE = 29; // 0x1d
-  }
-
-  public final class RangingRequest implements android.os.Parcelable {
-    method public int describeContents();
-    method public static int getMaxPeers();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.rtt.RangingRequest> CREATOR;
-  }
-
-  public static final class RangingRequest.Builder {
-    ctor public RangingRequest.Builder();
-    method public android.net.wifi.rtt.RangingRequest.Builder addAccessPoint(@NonNull android.net.wifi.ScanResult);
-    method public android.net.wifi.rtt.RangingRequest.Builder addAccessPoints(@NonNull java.util.List<android.net.wifi.ScanResult>);
-    method public android.net.wifi.rtt.RangingRequest.Builder addWifiAwarePeer(@NonNull android.net.MacAddress);
-    method public android.net.wifi.rtt.RangingRequest.Builder addWifiAwarePeer(@NonNull android.net.wifi.aware.PeerHandle);
-    method public android.net.wifi.rtt.RangingRequest build();
-  }
-
-  public final class RangingResult implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getDistanceMm();
-    method public int getDistanceStdDevMm();
-    method @Nullable public android.net.MacAddress getMacAddress();
-    method public int getNumAttemptedMeasurements();
-    method public int getNumSuccessfulMeasurements();
-    method @Nullable public android.net.wifi.aware.PeerHandle getPeerHandle();
-    method public long getRangingTimestampMillis();
-    method public int getRssi();
-    method public int getStatus();
-    method @Nullable public android.net.wifi.rtt.ResponderLocation getUnverifiedResponderLocation();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.rtt.RangingResult> CREATOR;
-    field public static final int STATUS_FAIL = 1; // 0x1
-    field public static final int STATUS_RESPONDER_DOES_NOT_SUPPORT_IEEE80211MC = 2; // 0x2
-    field public static final int STATUS_SUCCESS = 0; // 0x0
-  }
-
-  public abstract class RangingResultCallback {
-    ctor public RangingResultCallback();
-    method public abstract void onRangingFailure(int);
-    method public abstract void onRangingResults(@NonNull java.util.List<android.net.wifi.rtt.RangingResult>);
-    field public static final int STATUS_CODE_FAIL = 1; // 0x1
-    field public static final int STATUS_CODE_FAIL_RTT_NOT_AVAILABLE = 2; // 0x2
-  }
-
-  public final class ResponderLocation implements android.os.Parcelable {
-    method public int describeContents();
-    method public double getAltitude();
-    method public int getAltitudeType();
-    method public double getAltitudeUncertainty();
-    method public java.util.List<android.net.MacAddress> getColocatedBssids();
-    method public int getDatum();
-    method public int getExpectedToMove();
-    method public double getFloorNumber();
-    method public double getHeightAboveFloorMeters();
-    method public double getHeightAboveFloorUncertaintyMeters();
-    method public double getLatitude();
-    method public double getLatitudeUncertainty();
-    method public int getLciVersion();
-    method public double getLongitude();
-    method public double getLongitudeUncertainty();
-    method @Nullable public String getMapImageMimeType();
-    method @Nullable public android.net.Uri getMapImageUri();
-    method public boolean getRegisteredLocationAgreementIndication();
-    method public boolean isLciSubelementValid();
-    method public boolean isZaxisSubelementValid();
-    method @Nullable public android.location.Address toCivicLocationAddress();
-    method @Nullable public android.util.SparseArray<java.lang.String> toCivicLocationSparseArray();
-    method @NonNull public android.location.Location toLocation();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ALTITUDE_FLOORS = 2; // 0x2
-    field public static final int ALTITUDE_METERS = 1; // 0x1
-    field public static final int ALTITUDE_UNDEFINED = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.rtt.ResponderLocation> CREATOR;
-    field public static final int DATUM_NAD83_MLLW = 3; // 0x3
-    field public static final int DATUM_NAD83_NAV88 = 2; // 0x2
-    field public static final int DATUM_UNDEFINED = 0; // 0x0
-    field public static final int DATUM_WGS84 = 1; // 0x1
-    field public static final int LCI_VERSION_1 = 1; // 0x1
-    field public static final int LOCATION_FIXED = 0; // 0x0
-    field public static final int LOCATION_MOVEMENT_UNKNOWN = 2; // 0x2
-    field public static final int LOCATION_RESERVED = 3; // 0x3
-    field public static final int LOCATION_VARIABLE = 1; // 0x1
-  }
-
-  public class WifiRttManager {
-    method public boolean isAvailable();
-    method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.CHANGE_WIFI_STATE, android.Manifest.permission.ACCESS_WIFI_STATE}) public void startRanging(@NonNull android.net.wifi.rtt.RangingRequest, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.rtt.RangingResultCallback);
-    field public static final String ACTION_WIFI_RTT_STATE_CHANGED = "android.net.wifi.rtt.action.WIFI_RTT_STATE_CHANGED";
-  }
-
-}
-
-package android.nfc {
-
-  public class FormatException extends java.lang.Exception {
-    ctor public FormatException();
-    ctor public FormatException(String);
-    ctor public FormatException(String, Throwable);
-  }
-
-  public final class NdefMessage implements android.os.Parcelable {
-    ctor public NdefMessage(byte[]) throws android.nfc.FormatException;
-    ctor public NdefMessage(android.nfc.NdefRecord, android.nfc.NdefRecord...);
-    ctor public NdefMessage(android.nfc.NdefRecord[]);
-    method public int describeContents();
-    method public int getByteArrayLength();
-    method public android.nfc.NdefRecord[] getRecords();
-    method public byte[] toByteArray();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.nfc.NdefMessage> CREATOR;
-  }
-
-  public final class NdefRecord implements android.os.Parcelable {
-    ctor public NdefRecord(short, byte[], byte[], byte[]);
-    ctor @Deprecated public NdefRecord(byte[]) throws android.nfc.FormatException;
-    method public static android.nfc.NdefRecord createApplicationRecord(String);
-    method public static android.nfc.NdefRecord createExternal(String, String, byte[]);
-    method public static android.nfc.NdefRecord createMime(String, byte[]);
-    method public static android.nfc.NdefRecord createTextRecord(String, String);
-    method public static android.nfc.NdefRecord createUri(android.net.Uri);
-    method public static android.nfc.NdefRecord createUri(String);
-    method public int describeContents();
-    method public byte[] getId();
-    method public byte[] getPayload();
-    method public short getTnf();
-    method public byte[] getType();
-    method @Deprecated public byte[] toByteArray();
-    method public String toMimeType();
-    method public android.net.Uri toUri();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.nfc.NdefRecord> CREATOR;
-    field public static final byte[] RTD_ALTERNATIVE_CARRIER;
-    field public static final byte[] RTD_HANDOVER_CARRIER;
-    field public static final byte[] RTD_HANDOVER_REQUEST;
-    field public static final byte[] RTD_HANDOVER_SELECT;
-    field public static final byte[] RTD_SMART_POSTER;
-    field public static final byte[] RTD_TEXT;
-    field public static final byte[] RTD_URI;
-    field public static final short TNF_ABSOLUTE_URI = 3; // 0x3
-    field public static final short TNF_EMPTY = 0; // 0x0
-    field public static final short TNF_EXTERNAL_TYPE = 4; // 0x4
-    field public static final short TNF_MIME_MEDIA = 2; // 0x2
-    field public static final short TNF_UNCHANGED = 6; // 0x6
-    field public static final short TNF_UNKNOWN = 5; // 0x5
-    field public static final short TNF_WELL_KNOWN = 1; // 0x1
-  }
-
-  public final class NfcAdapter {
-    method public void disableForegroundDispatch(android.app.Activity);
-    method @Deprecated public void disableForegroundNdefPush(android.app.Activity);
-    method public void disableReaderMode(android.app.Activity);
-    method public void enableForegroundDispatch(android.app.Activity, android.app.PendingIntent, android.content.IntentFilter[], String[][]);
-    method @Deprecated public void enableForegroundNdefPush(android.app.Activity, android.nfc.NdefMessage);
-    method public void enableReaderMode(android.app.Activity, android.nfc.NfcAdapter.ReaderCallback, int, android.os.Bundle);
-    method public static android.nfc.NfcAdapter getDefaultAdapter(android.content.Context);
-    method public boolean ignore(android.nfc.Tag, int, android.nfc.NfcAdapter.OnTagRemovedListener, android.os.Handler);
-    method @Deprecated public boolean invokeBeam(android.app.Activity);
-    method public boolean isEnabled();
-    method @Deprecated public boolean isNdefPushEnabled();
-    method public boolean isSecureNfcEnabled();
-    method public boolean isSecureNfcSupported();
-    method @Deprecated public void setBeamPushUris(android.net.Uri[], android.app.Activity);
-    method @Deprecated public void setBeamPushUrisCallback(android.nfc.NfcAdapter.CreateBeamUrisCallback, android.app.Activity);
-    method @Deprecated public void setNdefPushMessage(android.nfc.NdefMessage, android.app.Activity, android.app.Activity...);
-    method @Deprecated public void setNdefPushMessageCallback(android.nfc.NfcAdapter.CreateNdefMessageCallback, android.app.Activity, android.app.Activity...);
-    method @Deprecated public void setOnNdefPushCompleteCallback(android.nfc.NfcAdapter.OnNdefPushCompleteCallback, android.app.Activity, android.app.Activity...);
-    field public static final String ACTION_ADAPTER_STATE_CHANGED = "android.nfc.action.ADAPTER_STATE_CHANGED";
-    field public static final String ACTION_NDEF_DISCOVERED = "android.nfc.action.NDEF_DISCOVERED";
-    field @RequiresPermission(android.Manifest.permission.NFC_PREFERRED_PAYMENT_INFO) public static final String ACTION_PREFERRED_PAYMENT_CHANGED = "android.nfc.action.PREFERRED_PAYMENT_CHANGED";
-    field public static final String ACTION_TAG_DISCOVERED = "android.nfc.action.TAG_DISCOVERED";
-    field public static final String ACTION_TECH_DISCOVERED = "android.nfc.action.TECH_DISCOVERED";
-    field @RequiresPermission(android.Manifest.permission.NFC_TRANSACTION_EVENT) public static final String ACTION_TRANSACTION_DETECTED = "android.nfc.action.TRANSACTION_DETECTED";
-    field public static final String EXTRA_ADAPTER_STATE = "android.nfc.extra.ADAPTER_STATE";
-    field public static final String EXTRA_AID = "android.nfc.extra.AID";
-    field public static final String EXTRA_DATA = "android.nfc.extra.DATA";
-    field public static final String EXTRA_ID = "android.nfc.extra.ID";
-    field public static final String EXTRA_NDEF_MESSAGES = "android.nfc.extra.NDEF_MESSAGES";
-    field public static final String EXTRA_PREFERRED_PAYMENT_CHANGED_REASON = "android.nfc.extra.PREFERRED_PAYMENT_CHANGED_REASON";
-    field public static final String EXTRA_READER_PRESENCE_CHECK_DELAY = "presence";
-    field public static final String EXTRA_SECURE_ELEMENT_NAME = "android.nfc.extra.SECURE_ELEMENT_NAME";
-    field public static final String EXTRA_TAG = "android.nfc.extra.TAG";
-    field public static final int FLAG_READER_NFC_A = 1; // 0x1
-    field public static final int FLAG_READER_NFC_B = 2; // 0x2
-    field public static final int FLAG_READER_NFC_BARCODE = 16; // 0x10
-    field public static final int FLAG_READER_NFC_F = 4; // 0x4
-    field public static final int FLAG_READER_NFC_V = 8; // 0x8
-    field public static final int FLAG_READER_NO_PLATFORM_SOUNDS = 256; // 0x100
-    field public static final int FLAG_READER_SKIP_NDEF_CHECK = 128; // 0x80
-    field public static final int PREFERRED_PAYMENT_CHANGED = 2; // 0x2
-    field public static final int PREFERRED_PAYMENT_LOADED = 1; // 0x1
-    field public static final int PREFERRED_PAYMENT_UPDATED = 3; // 0x3
-    field public static final int STATE_OFF = 1; // 0x1
-    field public static final int STATE_ON = 3; // 0x3
-    field public static final int STATE_TURNING_OFF = 4; // 0x4
-    field public static final int STATE_TURNING_ON = 2; // 0x2
-  }
-
-  @Deprecated public static interface NfcAdapter.CreateBeamUrisCallback {
-    method @Deprecated public android.net.Uri[] createBeamUris(android.nfc.NfcEvent);
-  }
-
-  @Deprecated public static interface NfcAdapter.CreateNdefMessageCallback {
-    method @Deprecated public android.nfc.NdefMessage createNdefMessage(android.nfc.NfcEvent);
-  }
-
-  @Deprecated public static interface NfcAdapter.OnNdefPushCompleteCallback {
-    method @Deprecated public void onNdefPushComplete(android.nfc.NfcEvent);
-  }
-
-  public static interface NfcAdapter.OnTagRemovedListener {
-    method public void onTagRemoved();
-  }
-
-  public static interface NfcAdapter.ReaderCallback {
-    method public void onTagDiscovered(android.nfc.Tag);
-  }
-
-  public final class NfcEvent {
-    field public final android.nfc.NfcAdapter nfcAdapter;
-    field public final int peerLlcpMajorVersion;
-    field public final int peerLlcpMinorVersion;
-  }
-
-  public final class NfcManager {
-    method public android.nfc.NfcAdapter getDefaultAdapter();
-  }
-
-  public final class Tag implements android.os.Parcelable {
-    method public int describeContents();
-    method public byte[] getId();
-    method public String[] getTechList();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.nfc.Tag> CREATOR;
-  }
-
-  public class TagLostException extends java.io.IOException {
-    ctor public TagLostException();
-    ctor public TagLostException(String);
-  }
-
-}
-
-package android.nfc.cardemulation {
-
-  public final class CardEmulation {
-    method public boolean categoryAllowsForegroundPreference(String);
-    method @Nullable @RequiresPermission(android.Manifest.permission.NFC_PREFERRED_PAYMENT_INFO) public java.util.List<java.lang.String> getAidsForPreferredPaymentService();
-    method public java.util.List<java.lang.String> getAidsForService(android.content.ComponentName, String);
-    method @Nullable @RequiresPermission(android.Manifest.permission.NFC_PREFERRED_PAYMENT_INFO) public CharSequence getDescriptionForPreferredPaymentService();
-    method public static android.nfc.cardemulation.CardEmulation getInstance(android.nfc.NfcAdapter);
-    method @Nullable @RequiresPermission(android.Manifest.permission.NFC_PREFERRED_PAYMENT_INFO) public String getRouteDestinationForPreferredPaymentService();
-    method public int getSelectionModeForCategory(String);
-    method public boolean isDefaultServiceForAid(android.content.ComponentName, String);
-    method public boolean isDefaultServiceForCategory(android.content.ComponentName, String);
-    method public boolean registerAidsForService(android.content.ComponentName, String, java.util.List<java.lang.String>);
-    method public boolean removeAidsForService(android.content.ComponentName, String);
-    method @NonNull @RequiresPermission(android.Manifest.permission.NFC) public boolean setOffHostForService(@NonNull android.content.ComponentName, @NonNull String);
-    method public boolean setPreferredService(android.app.Activity, android.content.ComponentName);
-    method public boolean supportsAidPrefixRegistration();
-    method @NonNull @RequiresPermission(android.Manifest.permission.NFC) public boolean unsetOffHostForService(@NonNull android.content.ComponentName);
-    method public boolean unsetPreferredService(android.app.Activity);
-    field public static final String ACTION_CHANGE_DEFAULT = "android.nfc.cardemulation.action.ACTION_CHANGE_DEFAULT";
-    field public static final String CATEGORY_OTHER = "other";
-    field public static final String CATEGORY_PAYMENT = "payment";
-    field public static final String EXTRA_CATEGORY = "category";
-    field public static final String EXTRA_SERVICE_COMPONENT = "component";
-    field public static final int SELECTION_MODE_ALWAYS_ASK = 1; // 0x1
-    field public static final int SELECTION_MODE_ASK_IF_CONFLICT = 2; // 0x2
-    field public static final int SELECTION_MODE_PREFER_DEFAULT = 0; // 0x0
-  }
-
-  public abstract class HostApduService extends android.app.Service {
-    ctor public HostApduService();
-    method public final void notifyUnhandled();
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method public abstract void onDeactivated(int);
-    method public abstract byte[] processCommandApdu(byte[], android.os.Bundle);
-    method public final void sendResponseApdu(byte[]);
-    field public static final int DEACTIVATION_DESELECTED = 1; // 0x1
-    field public static final int DEACTIVATION_LINK_LOSS = 0; // 0x0
-    field public static final String SERVICE_INTERFACE = "android.nfc.cardemulation.action.HOST_APDU_SERVICE";
-    field public static final String SERVICE_META_DATA = "android.nfc.cardemulation.host_apdu_service";
-  }
-
-  public abstract class HostNfcFService extends android.app.Service {
-    ctor public HostNfcFService();
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method public abstract void onDeactivated(int);
-    method public abstract byte[] processNfcFPacket(byte[], android.os.Bundle);
-    method public final void sendResponsePacket(byte[]);
-    field public static final int DEACTIVATION_LINK_LOSS = 0; // 0x0
-    field public static final String SERVICE_INTERFACE = "android.nfc.cardemulation.action.HOST_NFCF_SERVICE";
-    field public static final String SERVICE_META_DATA = "android.nfc.cardemulation.host_nfcf_service";
-  }
-
-  public final class NfcFCardEmulation {
-    method public boolean disableService(android.app.Activity) throws java.lang.RuntimeException;
-    method public boolean enableService(android.app.Activity, android.content.ComponentName) throws java.lang.RuntimeException;
-    method public static android.nfc.cardemulation.NfcFCardEmulation getInstance(android.nfc.NfcAdapter);
-    method public String getNfcid2ForService(android.content.ComponentName) throws java.lang.RuntimeException;
-    method public String getSystemCodeForService(android.content.ComponentName) throws java.lang.RuntimeException;
-    method public boolean registerSystemCodeForService(android.content.ComponentName, String) throws java.lang.RuntimeException;
-    method public boolean setNfcid2ForService(android.content.ComponentName, String) throws java.lang.RuntimeException;
-    method public boolean unregisterSystemCodeForService(android.content.ComponentName) throws java.lang.RuntimeException;
-  }
-
-  public abstract class OffHostApduService extends android.app.Service {
-    ctor public OffHostApduService();
-    field public static final String SERVICE_INTERFACE = "android.nfc.cardemulation.action.OFF_HOST_APDU_SERVICE";
-    field public static final String SERVICE_META_DATA = "android.nfc.cardemulation.off_host_apdu_service";
-  }
-
-}
-
-package android.nfc.tech {
-
-  public final class IsoDep implements android.nfc.tech.TagTechnology {
-    method public void close() throws java.io.IOException;
-    method public void connect() throws java.io.IOException;
-    method public static android.nfc.tech.IsoDep get(android.nfc.Tag);
-    method public byte[] getHiLayerResponse();
-    method public byte[] getHistoricalBytes();
-    method public int getMaxTransceiveLength();
-    method public android.nfc.Tag getTag();
-    method public int getTimeout();
-    method public boolean isConnected();
-    method public boolean isExtendedLengthApduSupported();
-    method public void setTimeout(int);
-    method public byte[] transceive(byte[]) throws java.io.IOException;
-  }
-
-  public final class MifareClassic implements android.nfc.tech.TagTechnology {
-    method public boolean authenticateSectorWithKeyA(int, byte[]) throws java.io.IOException;
-    method public boolean authenticateSectorWithKeyB(int, byte[]) throws java.io.IOException;
-    method public int blockToSector(int);
-    method public void close() throws java.io.IOException;
-    method public void connect() throws java.io.IOException;
-    method public void decrement(int, int) throws java.io.IOException;
-    method public static android.nfc.tech.MifareClassic get(android.nfc.Tag);
-    method public int getBlockCount();
-    method public int getBlockCountInSector(int);
-    method public int getMaxTransceiveLength();
-    method public int getSectorCount();
-    method public int getSize();
-    method public android.nfc.Tag getTag();
-    method public int getTimeout();
-    method public int getType();
-    method public void increment(int, int) throws java.io.IOException;
-    method public boolean isConnected();
-    method public byte[] readBlock(int) throws java.io.IOException;
-    method public void restore(int) throws java.io.IOException;
-    method public int sectorToBlock(int);
-    method public void setTimeout(int);
-    method public byte[] transceive(byte[]) throws java.io.IOException;
-    method public void transfer(int) throws java.io.IOException;
-    method public void writeBlock(int, byte[]) throws java.io.IOException;
-    field public static final int BLOCK_SIZE = 16; // 0x10
-    field public static final byte[] KEY_DEFAULT;
-    field public static final byte[] KEY_MIFARE_APPLICATION_DIRECTORY;
-    field public static final byte[] KEY_NFC_FORUM;
-    field public static final int SIZE_1K = 1024; // 0x400
-    field public static final int SIZE_2K = 2048; // 0x800
-    field public static final int SIZE_4K = 4096; // 0x1000
-    field public static final int SIZE_MINI = 320; // 0x140
-    field public static final int TYPE_CLASSIC = 0; // 0x0
-    field public static final int TYPE_PLUS = 1; // 0x1
-    field public static final int TYPE_PRO = 2; // 0x2
-    field public static final int TYPE_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public final class MifareUltralight implements android.nfc.tech.TagTechnology {
-    method public void close() throws java.io.IOException;
-    method public void connect() throws java.io.IOException;
-    method public static android.nfc.tech.MifareUltralight get(android.nfc.Tag);
-    method public int getMaxTransceiveLength();
-    method public android.nfc.Tag getTag();
-    method public int getTimeout();
-    method public int getType();
-    method public boolean isConnected();
-    method public byte[] readPages(int) throws java.io.IOException;
-    method public void setTimeout(int);
-    method public byte[] transceive(byte[]) throws java.io.IOException;
-    method public void writePage(int, byte[]) throws java.io.IOException;
-    field public static final int PAGE_SIZE = 4; // 0x4
-    field public static final int TYPE_ULTRALIGHT = 1; // 0x1
-    field public static final int TYPE_ULTRALIGHT_C = 2; // 0x2
-    field public static final int TYPE_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public final class Ndef implements android.nfc.tech.TagTechnology {
-    method public boolean canMakeReadOnly();
-    method public void close() throws java.io.IOException;
-    method public void connect() throws java.io.IOException;
-    method public static android.nfc.tech.Ndef get(android.nfc.Tag);
-    method public android.nfc.NdefMessage getCachedNdefMessage();
-    method public int getMaxSize();
-    method public android.nfc.NdefMessage getNdefMessage() throws android.nfc.FormatException, java.io.IOException;
-    method public android.nfc.Tag getTag();
-    method public String getType();
-    method public boolean isConnected();
-    method public boolean isWritable();
-    method public boolean makeReadOnly() throws java.io.IOException;
-    method public void writeNdefMessage(android.nfc.NdefMessage) throws android.nfc.FormatException, java.io.IOException;
-    field public static final String MIFARE_CLASSIC = "com.nxp.ndef.mifareclassic";
-    field public static final String NFC_FORUM_TYPE_1 = "org.nfcforum.ndef.type1";
-    field public static final String NFC_FORUM_TYPE_2 = "org.nfcforum.ndef.type2";
-    field public static final String NFC_FORUM_TYPE_3 = "org.nfcforum.ndef.type3";
-    field public static final String NFC_FORUM_TYPE_4 = "org.nfcforum.ndef.type4";
-  }
-
-  public final class NdefFormatable implements android.nfc.tech.TagTechnology {
-    method public void close() throws java.io.IOException;
-    method public void connect() throws java.io.IOException;
-    method public void format(android.nfc.NdefMessage) throws android.nfc.FormatException, java.io.IOException;
-    method public void formatReadOnly(android.nfc.NdefMessage) throws android.nfc.FormatException, java.io.IOException;
-    method public static android.nfc.tech.NdefFormatable get(android.nfc.Tag);
-    method public android.nfc.Tag getTag();
-    method public boolean isConnected();
-  }
-
-  public final class NfcA implements android.nfc.tech.TagTechnology {
-    method public void close() throws java.io.IOException;
-    method public void connect() throws java.io.IOException;
-    method public static android.nfc.tech.NfcA get(android.nfc.Tag);
-    method public byte[] getAtqa();
-    method public int getMaxTransceiveLength();
-    method public short getSak();
-    method public android.nfc.Tag getTag();
-    method public int getTimeout();
-    method public boolean isConnected();
-    method public void setTimeout(int);
-    method public byte[] transceive(byte[]) throws java.io.IOException;
-  }
-
-  public final class NfcB implements android.nfc.tech.TagTechnology {
-    method public void close() throws java.io.IOException;
-    method public void connect() throws java.io.IOException;
-    method public static android.nfc.tech.NfcB get(android.nfc.Tag);
-    method public byte[] getApplicationData();
-    method public int getMaxTransceiveLength();
-    method public byte[] getProtocolInfo();
-    method public android.nfc.Tag getTag();
-    method public boolean isConnected();
-    method public byte[] transceive(byte[]) throws java.io.IOException;
-  }
-
-  public final class NfcBarcode implements android.nfc.tech.TagTechnology {
-    method public void close() throws java.io.IOException;
-    method public void connect() throws java.io.IOException;
-    method public static android.nfc.tech.NfcBarcode get(android.nfc.Tag);
-    method public byte[] getBarcode();
-    method public android.nfc.Tag getTag();
-    method public int getType();
-    method public boolean isConnected();
-    field public static final int TYPE_KOVIO = 1; // 0x1
-    field public static final int TYPE_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public final class NfcF implements android.nfc.tech.TagTechnology {
-    method public void close() throws java.io.IOException;
-    method public void connect() throws java.io.IOException;
-    method public static android.nfc.tech.NfcF get(android.nfc.Tag);
-    method public byte[] getManufacturer();
-    method public int getMaxTransceiveLength();
-    method public byte[] getSystemCode();
-    method public android.nfc.Tag getTag();
-    method public int getTimeout();
-    method public boolean isConnected();
-    method public void setTimeout(int);
-    method public byte[] transceive(byte[]) throws java.io.IOException;
-  }
-
-  public final class NfcV implements android.nfc.tech.TagTechnology {
-    method public void close() throws java.io.IOException;
-    method public void connect() throws java.io.IOException;
-    method public static android.nfc.tech.NfcV get(android.nfc.Tag);
-    method public byte getDsfId();
-    method public int getMaxTransceiveLength();
-    method public byte getResponseFlags();
-    method public android.nfc.Tag getTag();
-    method public boolean isConnected();
-    method public byte[] transceive(byte[]) throws java.io.IOException;
-  }
-
-  public interface TagTechnology extends java.io.Closeable {
-    method public void connect() throws java.io.IOException;
-    method public android.nfc.Tag getTag();
-    method public boolean isConnected();
-  }
-
-}
-
-package android.opengl {
-
-  public class EGL14 {
-    ctor public EGL14();
-    method public static boolean eglBindAPI(int);
-    method public static boolean eglBindTexImage(android.opengl.EGLDisplay, android.opengl.EGLSurface, int);
-    method public static boolean eglChooseConfig(android.opengl.EGLDisplay, int[], int, android.opengl.EGLConfig[], int, int, int[], int);
-    method public static boolean eglCopyBuffers(android.opengl.EGLDisplay, android.opengl.EGLSurface, int);
-    method public static android.opengl.EGLContext eglCreateContext(android.opengl.EGLDisplay, android.opengl.EGLConfig, android.opengl.EGLContext, int[], int);
-    method public static android.opengl.EGLSurface eglCreatePbufferFromClientBuffer(android.opengl.EGLDisplay, int, int, android.opengl.EGLConfig, int[], int);
-    method public static android.opengl.EGLSurface eglCreatePbufferSurface(android.opengl.EGLDisplay, android.opengl.EGLConfig, int[], int);
-    method @Deprecated public static android.opengl.EGLSurface eglCreatePixmapSurface(android.opengl.EGLDisplay, android.opengl.EGLConfig, int, int[], int);
-    method public static android.opengl.EGLSurface eglCreateWindowSurface(android.opengl.EGLDisplay, android.opengl.EGLConfig, Object, int[], int);
-    method public static boolean eglDestroyContext(android.opengl.EGLDisplay, android.opengl.EGLContext);
-    method public static boolean eglDestroySurface(android.opengl.EGLDisplay, android.opengl.EGLSurface);
-    method public static boolean eglGetConfigAttrib(android.opengl.EGLDisplay, android.opengl.EGLConfig, int, int[], int);
-    method public static boolean eglGetConfigs(android.opengl.EGLDisplay, android.opengl.EGLConfig[], int, int, int[], int);
-    method public static android.opengl.EGLContext eglGetCurrentContext();
-    method public static android.opengl.EGLDisplay eglGetCurrentDisplay();
-    method public static android.opengl.EGLSurface eglGetCurrentSurface(int);
-    method public static android.opengl.EGLDisplay eglGetDisplay(int);
-    method public static int eglGetError();
-    method public static boolean eglInitialize(android.opengl.EGLDisplay, int[], int, int[], int);
-    method public static boolean eglMakeCurrent(android.opengl.EGLDisplay, android.opengl.EGLSurface, android.opengl.EGLSurface, android.opengl.EGLContext);
-    method public static int eglQueryAPI();
-    method public static boolean eglQueryContext(android.opengl.EGLDisplay, android.opengl.EGLContext, int, int[], int);
-    method public static String eglQueryString(android.opengl.EGLDisplay, int);
-    method public static boolean eglQuerySurface(android.opengl.EGLDisplay, android.opengl.EGLSurface, int, int[], int);
-    method public static boolean eglReleaseTexImage(android.opengl.EGLDisplay, android.opengl.EGLSurface, int);
-    method public static boolean eglReleaseThread();
-    method public static boolean eglSurfaceAttrib(android.opengl.EGLDisplay, android.opengl.EGLSurface, int, int);
-    method public static boolean eglSwapBuffers(android.opengl.EGLDisplay, android.opengl.EGLSurface);
-    method public static boolean eglSwapInterval(android.opengl.EGLDisplay, int);
-    method public static boolean eglTerminate(android.opengl.EGLDisplay);
-    method public static boolean eglWaitClient();
-    method public static boolean eglWaitGL();
-    method public static boolean eglWaitNative(int);
-    field public static final int EGL_ALPHA_MASK_SIZE = 12350; // 0x303e
-    field public static final int EGL_ALPHA_SIZE = 12321; // 0x3021
-    field public static final int EGL_BACK_BUFFER = 12420; // 0x3084
-    field public static final int EGL_BAD_ACCESS = 12290; // 0x3002
-    field public static final int EGL_BAD_ALLOC = 12291; // 0x3003
-    field public static final int EGL_BAD_ATTRIBUTE = 12292; // 0x3004
-    field public static final int EGL_BAD_CONFIG = 12293; // 0x3005
-    field public static final int EGL_BAD_CONTEXT = 12294; // 0x3006
-    field public static final int EGL_BAD_CURRENT_SURFACE = 12295; // 0x3007
-    field public static final int EGL_BAD_DISPLAY = 12296; // 0x3008
-    field public static final int EGL_BAD_MATCH = 12297; // 0x3009
-    field public static final int EGL_BAD_NATIVE_PIXMAP = 12298; // 0x300a
-    field public static final int EGL_BAD_NATIVE_WINDOW = 12299; // 0x300b
-    field public static final int EGL_BAD_PARAMETER = 12300; // 0x300c
-    field public static final int EGL_BAD_SURFACE = 12301; // 0x300d
-    field public static final int EGL_BIND_TO_TEXTURE_RGB = 12345; // 0x3039
-    field public static final int EGL_BIND_TO_TEXTURE_RGBA = 12346; // 0x303a
-    field public static final int EGL_BLUE_SIZE = 12322; // 0x3022
-    field public static final int EGL_BUFFER_DESTROYED = 12437; // 0x3095
-    field public static final int EGL_BUFFER_PRESERVED = 12436; // 0x3094
-    field public static final int EGL_BUFFER_SIZE = 12320; // 0x3020
-    field public static final int EGL_CLIENT_APIS = 12429; // 0x308d
-    field public static final int EGL_COLOR_BUFFER_TYPE = 12351; // 0x303f
-    field public static final int EGL_CONFIG_CAVEAT = 12327; // 0x3027
-    field public static final int EGL_CONFIG_ID = 12328; // 0x3028
-    field public static final int EGL_CONFORMANT = 12354; // 0x3042
-    field public static final int EGL_CONTEXT_CLIENT_TYPE = 12439; // 0x3097
-    field public static final int EGL_CONTEXT_CLIENT_VERSION = 12440; // 0x3098
-    field public static final int EGL_CONTEXT_LOST = 12302; // 0x300e
-    field public static final int EGL_CORE_NATIVE_ENGINE = 12379; // 0x305b
-    field public static final int EGL_DEFAULT_DISPLAY = 0; // 0x0
-    field public static final int EGL_DEPTH_SIZE = 12325; // 0x3025
-    field public static final int EGL_DISPLAY_SCALING = 10000; // 0x2710
-    field public static final int EGL_DRAW = 12377; // 0x3059
-    field public static final int EGL_EXTENSIONS = 12373; // 0x3055
-    field public static final int EGL_FALSE = 0; // 0x0
-    field public static final int EGL_GREEN_SIZE = 12323; // 0x3023
-    field public static final int EGL_HEIGHT = 12374; // 0x3056
-    field public static final int EGL_HORIZONTAL_RESOLUTION = 12432; // 0x3090
-    field public static final int EGL_LARGEST_PBUFFER = 12376; // 0x3058
-    field public static final int EGL_LEVEL = 12329; // 0x3029
-    field public static final int EGL_LUMINANCE_BUFFER = 12431; // 0x308f
-    field public static final int EGL_LUMINANCE_SIZE = 12349; // 0x303d
-    field public static final int EGL_MATCH_NATIVE_PIXMAP = 12353; // 0x3041
-    field public static final int EGL_MAX_PBUFFER_HEIGHT = 12330; // 0x302a
-    field public static final int EGL_MAX_PBUFFER_PIXELS = 12331; // 0x302b
-    field public static final int EGL_MAX_PBUFFER_WIDTH = 12332; // 0x302c
-    field public static final int EGL_MAX_SWAP_INTERVAL = 12348; // 0x303c
-    field public static final int EGL_MIN_SWAP_INTERVAL = 12347; // 0x303b
-    field public static final int EGL_MIPMAP_LEVEL = 12419; // 0x3083
-    field public static final int EGL_MIPMAP_TEXTURE = 12418; // 0x3082
-    field public static final int EGL_MULTISAMPLE_RESOLVE = 12441; // 0x3099
-    field public static final int EGL_MULTISAMPLE_RESOLVE_BOX = 12443; // 0x309b
-    field public static final int EGL_MULTISAMPLE_RESOLVE_BOX_BIT = 512; // 0x200
-    field public static final int EGL_MULTISAMPLE_RESOLVE_DEFAULT = 12442; // 0x309a
-    field public static final int EGL_NATIVE_RENDERABLE = 12333; // 0x302d
-    field public static final int EGL_NATIVE_VISUAL_ID = 12334; // 0x302e
-    field public static final int EGL_NATIVE_VISUAL_TYPE = 12335; // 0x302f
-    field public static final int EGL_NONE = 12344; // 0x3038
-    field public static final int EGL_NON_CONFORMANT_CONFIG = 12369; // 0x3051
-    field public static final int EGL_NOT_INITIALIZED = 12289; // 0x3001
-    field public static android.opengl.EGLContext EGL_NO_CONTEXT;
-    field public static android.opengl.EGLDisplay EGL_NO_DISPLAY;
-    field public static android.opengl.EGLSurface EGL_NO_SURFACE;
-    field public static final int EGL_NO_TEXTURE = 12380; // 0x305c
-    field public static final int EGL_OPENGL_API = 12450; // 0x30a2
-    field public static final int EGL_OPENGL_BIT = 8; // 0x8
-    field public static final int EGL_OPENGL_ES2_BIT = 4; // 0x4
-    field public static final int EGL_OPENGL_ES_API = 12448; // 0x30a0
-    field public static final int EGL_OPENGL_ES_BIT = 1; // 0x1
-    field public static final int EGL_OPENVG_API = 12449; // 0x30a1
-    field public static final int EGL_OPENVG_BIT = 2; // 0x2
-    field public static final int EGL_OPENVG_IMAGE = 12438; // 0x3096
-    field public static final int EGL_PBUFFER_BIT = 1; // 0x1
-    field public static final int EGL_PIXEL_ASPECT_RATIO = 12434; // 0x3092
-    field public static final int EGL_PIXMAP_BIT = 2; // 0x2
-    field public static final int EGL_READ = 12378; // 0x305a
-    field public static final int EGL_RED_SIZE = 12324; // 0x3024
-    field public static final int EGL_RENDERABLE_TYPE = 12352; // 0x3040
-    field public static final int EGL_RENDER_BUFFER = 12422; // 0x3086
-    field public static final int EGL_RGB_BUFFER = 12430; // 0x308e
-    field public static final int EGL_SAMPLES = 12337; // 0x3031
-    field public static final int EGL_SAMPLE_BUFFERS = 12338; // 0x3032
-    field public static final int EGL_SINGLE_BUFFER = 12421; // 0x3085
-    field public static final int EGL_SLOW_CONFIG = 12368; // 0x3050
-    field public static final int EGL_STENCIL_SIZE = 12326; // 0x3026
-    field public static final int EGL_SUCCESS = 12288; // 0x3000
-    field public static final int EGL_SURFACE_TYPE = 12339; // 0x3033
-    field public static final int EGL_SWAP_BEHAVIOR = 12435; // 0x3093
-    field public static final int EGL_SWAP_BEHAVIOR_PRESERVED_BIT = 1024; // 0x400
-    field public static final int EGL_TEXTURE_2D = 12383; // 0x305f
-    field public static final int EGL_TEXTURE_FORMAT = 12416; // 0x3080
-    field public static final int EGL_TEXTURE_RGB = 12381; // 0x305d
-    field public static final int EGL_TEXTURE_RGBA = 12382; // 0x305e
-    field public static final int EGL_TEXTURE_TARGET = 12417; // 0x3081
-    field public static final int EGL_TRANSPARENT_BLUE_VALUE = 12341; // 0x3035
-    field public static final int EGL_TRANSPARENT_GREEN_VALUE = 12342; // 0x3036
-    field public static final int EGL_TRANSPARENT_RED_VALUE = 12343; // 0x3037
-    field public static final int EGL_TRANSPARENT_RGB = 12370; // 0x3052
-    field public static final int EGL_TRANSPARENT_TYPE = 12340; // 0x3034
-    field public static final int EGL_TRUE = 1; // 0x1
-    field public static final int EGL_VENDOR = 12371; // 0x3053
-    field public static final int EGL_VERSION = 12372; // 0x3054
-    field public static final int EGL_VERTICAL_RESOLUTION = 12433; // 0x3091
-    field public static final int EGL_VG_ALPHA_FORMAT = 12424; // 0x3088
-    field public static final int EGL_VG_ALPHA_FORMAT_NONPRE = 12427; // 0x308b
-    field public static final int EGL_VG_ALPHA_FORMAT_PRE = 12428; // 0x308c
-    field public static final int EGL_VG_ALPHA_FORMAT_PRE_BIT = 64; // 0x40
-    field public static final int EGL_VG_COLORSPACE = 12423; // 0x3087
-    field public static final int EGL_VG_COLORSPACE_LINEAR = 12426; // 0x308a
-    field public static final int EGL_VG_COLORSPACE_LINEAR_BIT = 32; // 0x20
-    field public static final int EGL_VG_COLORSPACE_sRGB = 12425; // 0x3089
-    field public static final int EGL_WIDTH = 12375; // 0x3057
-    field public static final int EGL_WINDOW_BIT = 4; // 0x4
-  }
-
-  public final class EGL15 {
-    method public static int eglClientWaitSync(android.opengl.EGLDisplay, android.opengl.EGLSync, int, long);
-    method public static android.opengl.EGLImage eglCreateImage(android.opengl.EGLDisplay, android.opengl.EGLContext, int, long, long[], int);
-    method public static android.opengl.EGLSurface eglCreatePlatformPixmapSurface(android.opengl.EGLDisplay, android.opengl.EGLConfig, java.nio.Buffer, long[], int);
-    method public static android.opengl.EGLSurface eglCreatePlatformWindowSurface(android.opengl.EGLDisplay, android.opengl.EGLConfig, java.nio.Buffer, long[], int);
-    method public static android.opengl.EGLSync eglCreateSync(android.opengl.EGLDisplay, int, long[], int);
-    method public static boolean eglDestroyImage(android.opengl.EGLDisplay, android.opengl.EGLImage);
-    method public static boolean eglDestroySync(android.opengl.EGLDisplay, android.opengl.EGLSync);
-    method public static android.opengl.EGLDisplay eglGetPlatformDisplay(int, long, long[], int);
-    method public static boolean eglGetSyncAttrib(android.opengl.EGLDisplay, android.opengl.EGLSync, int, long[], int);
-    method public static boolean eglWaitSync(android.opengl.EGLDisplay, android.opengl.EGLSync, int);
-    field public static final int EGL_CL_EVENT_HANDLE = 12444; // 0x309c
-    field public static final int EGL_CONDITION_SATISFIED = 12534; // 0x30f6
-    field public static final int EGL_CONTEXT_MAJOR_VERSION = 12440; // 0x3098
-    field public static final int EGL_CONTEXT_MINOR_VERSION = 12539; // 0x30fb
-    field public static final int EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT = 2; // 0x2
-    field public static final int EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT = 1; // 0x1
-    field public static final int EGL_CONTEXT_OPENGL_DEBUG = 12720; // 0x31b0
-    field public static final int EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE = 12721; // 0x31b1
-    field public static final int EGL_CONTEXT_OPENGL_PROFILE_MASK = 12541; // 0x30fd
-    field public static final int EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY = 12733; // 0x31bd
-    field public static final int EGL_CONTEXT_OPENGL_ROBUST_ACCESS = 12722; // 0x31b2
-    field public static final long EGL_FOREVER = -1L; // 0xffffffffffffffffL
-    field public static final int EGL_GL_COLORSPACE = 12445; // 0x309d
-    field public static final int EGL_GL_COLORSPACE_LINEAR = 12426; // 0x308a
-    field public static final int EGL_GL_COLORSPACE_SRGB = 12425; // 0x3089
-    field public static final int EGL_GL_RENDERBUFFER = 12473; // 0x30b9
-    field public static final int EGL_GL_TEXTURE_2D = 12465; // 0x30b1
-    field public static final int EGL_GL_TEXTURE_3D = 12466; // 0x30b2
-    field public static final int EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 12468; // 0x30b4
-    field public static final int EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 12470; // 0x30b6
-    field public static final int EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 12472; // 0x30b8
-    field public static final int EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X = 12467; // 0x30b3
-    field public static final int EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 12469; // 0x30b5
-    field public static final int EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 12471; // 0x30b7
-    field public static final int EGL_GL_TEXTURE_LEVEL = 12476; // 0x30bc
-    field public static final int EGL_GL_TEXTURE_ZOFFSET = 12477; // 0x30bd
-    field public static final int EGL_IMAGE_PRESERVED = 12498; // 0x30d2
-    field public static final int EGL_LOSE_CONTEXT_ON_RESET = 12735; // 0x31bf
-    field public static final android.opengl.EGLContext EGL_NO_CONTEXT;
-    field public static final android.opengl.EGLDisplay EGL_NO_DISPLAY;
-    field public static final android.opengl.EGLImage EGL_NO_IMAGE;
-    field public static final int EGL_NO_RESET_NOTIFICATION = 12734; // 0x31be
-    field public static final android.opengl.EGLSurface EGL_NO_SURFACE;
-    field public static final android.opengl.EGLSync EGL_NO_SYNC;
-    field public static final int EGL_OPENGL_ES3_BIT = 64; // 0x40
-    field public static final int EGL_PLATFORM_ANDROID_KHR = 12609; // 0x3141
-    field public static final int EGL_SIGNALED = 12530; // 0x30f2
-    field public static final int EGL_SYNC_CL_EVENT = 12542; // 0x30fe
-    field public static final int EGL_SYNC_CL_EVENT_COMPLETE = 12543; // 0x30ff
-    field public static final int EGL_SYNC_CONDITION = 12536; // 0x30f8
-    field public static final int EGL_SYNC_FENCE = 12537; // 0x30f9
-    field public static final int EGL_SYNC_FLUSH_COMMANDS_BIT = 1; // 0x1
-    field public static final int EGL_SYNC_PRIOR_COMMANDS_COMPLETE = 12528; // 0x30f0
-    field public static final int EGL_SYNC_STATUS = 12529; // 0x30f1
-    field public static final int EGL_SYNC_TYPE = 12535; // 0x30f7
-    field public static final int EGL_TIMEOUT_EXPIRED = 12533; // 0x30f5
-    field public static final int EGL_UNSIGNALED = 12531; // 0x30f3
-  }
-
-  public class EGLConfig extends android.opengl.EGLObjectHandle {
-  }
-
-  public class EGLContext extends android.opengl.EGLObjectHandle {
-  }
-
-  public class EGLDisplay extends android.opengl.EGLObjectHandle {
-  }
-
-  public class EGLExt {
-    ctor public EGLExt();
-    method public static boolean eglPresentationTimeANDROID(android.opengl.EGLDisplay, android.opengl.EGLSurface, long);
-    field public static final int EGL_CONTEXT_FLAGS_KHR = 12540; // 0x30fc
-    field public static final int EGL_CONTEXT_MAJOR_VERSION_KHR = 12440; // 0x3098
-    field public static final int EGL_CONTEXT_MINOR_VERSION_KHR = 12539; // 0x30fb
-    field public static final int EGL_OPENGL_ES3_BIT_KHR = 64; // 0x40
-    field public static final int EGL_RECORDABLE_ANDROID = 12610; // 0x3142
-  }
-
-  public class EGLImage extends android.opengl.EGLObjectHandle {
-  }
-
-  public abstract class EGLObjectHandle {
-    ctor @Deprecated protected EGLObjectHandle(int);
-    ctor protected EGLObjectHandle(long);
-    method @Deprecated public int getHandle();
-    method public long getNativeHandle();
-  }
-
-  public class EGLSurface extends android.opengl.EGLObjectHandle {
-  }
-
-  public class EGLSync extends android.opengl.EGLObjectHandle {
-  }
-
-  public class ETC1 {
-    ctor public ETC1();
-    method public static void decodeBlock(java.nio.Buffer, java.nio.Buffer);
-    method public static void decodeImage(java.nio.Buffer, java.nio.Buffer, int, int, int, int);
-    method public static void encodeBlock(java.nio.Buffer, int, java.nio.Buffer);
-    method public static void encodeImage(java.nio.Buffer, int, int, int, int, java.nio.Buffer);
-    method public static void formatHeader(java.nio.Buffer, int, int);
-    method public static int getEncodedDataSize(int, int);
-    method public static int getHeight(java.nio.Buffer);
-    method public static int getWidth(java.nio.Buffer);
-    method public static boolean isValid(java.nio.Buffer);
-    field public static final int DECODED_BLOCK_SIZE = 48; // 0x30
-    field public static final int ENCODED_BLOCK_SIZE = 8; // 0x8
-    field public static final int ETC1_RGB8_OES = 36196; // 0x8d64
-    field public static final int ETC_PKM_HEADER_SIZE = 16; // 0x10
-  }
-
-  public class ETC1Util {
-    ctor public ETC1Util();
-    method public static android.opengl.ETC1Util.ETC1Texture compressTexture(java.nio.Buffer, int, int, int, int);
-    method public static android.opengl.ETC1Util.ETC1Texture createTexture(java.io.InputStream) throws java.io.IOException;
-    method public static boolean isETC1Supported();
-    method public static void loadTexture(int, int, int, int, int, java.io.InputStream) throws java.io.IOException;
-    method public static void loadTexture(int, int, int, int, int, android.opengl.ETC1Util.ETC1Texture);
-    method public static void writeTexture(android.opengl.ETC1Util.ETC1Texture, java.io.OutputStream) throws java.io.IOException;
-  }
-
-  public static class ETC1Util.ETC1Texture {
-    ctor public ETC1Util.ETC1Texture(int, int, java.nio.ByteBuffer);
-    method public java.nio.ByteBuffer getData();
-    method public int getHeight();
-    method public int getWidth();
-  }
-
-  public class GLDebugHelper {
-    ctor public GLDebugHelper();
-    method public static javax.microedition.khronos.opengles.GL wrap(javax.microedition.khronos.opengles.GL, int, java.io.Writer);
-    method public static javax.microedition.khronos.egl.EGL wrap(javax.microedition.khronos.egl.EGL, int, java.io.Writer);
-    field public static final int CONFIG_CHECK_GL_ERROR = 1; // 0x1
-    field public static final int CONFIG_CHECK_THREAD = 2; // 0x2
-    field public static final int CONFIG_LOG_ARGUMENT_NAMES = 4; // 0x4
-    field public static final int ERROR_WRONG_THREAD = 28672; // 0x7000
-  }
-
-  public class GLES10 {
-    ctor public GLES10();
-    method public static void glActiveTexture(int);
-    method public static void glAlphaFunc(int, float);
-    method public static void glAlphaFuncx(int, int);
-    method public static void glBindTexture(int, int);
-    method public static void glBlendFunc(int, int);
-    method public static void glClear(int);
-    method public static void glClearColor(float, float, float, float);
-    method public static void glClearColorx(int, int, int, int);
-    method public static void glClearDepthf(float);
-    method public static void glClearDepthx(int);
-    method public static void glClearStencil(int);
-    method public static void glClientActiveTexture(int);
-    method public static void glColor4f(float, float, float, float);
-    method public static void glColor4x(int, int, int, int);
-    method public static void glColorMask(boolean, boolean, boolean, boolean);
-    method public static void glColorPointer(int, int, int, java.nio.Buffer);
-    method public static void glCompressedTexImage2D(int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glCompressedTexSubImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glCopyTexImage2D(int, int, int, int, int, int, int, int);
-    method public static void glCopyTexSubImage2D(int, int, int, int, int, int, int, int);
-    method public static void glCullFace(int);
-    method public static void glDeleteTextures(int, int[], int);
-    method public static void glDeleteTextures(int, java.nio.IntBuffer);
-    method public static void glDepthFunc(int);
-    method public static void glDepthMask(boolean);
-    method public static void glDepthRangef(float, float);
-    method public static void glDepthRangex(int, int);
-    method public static void glDisable(int);
-    method public static void glDisableClientState(int);
-    method public static void glDrawArrays(int, int, int);
-    method public static void glDrawElements(int, int, int, java.nio.Buffer);
-    method public static void glEnable(int);
-    method public static void glEnableClientState(int);
-    method public static void glFinish();
-    method public static void glFlush();
-    method public static void glFogf(int, float);
-    method public static void glFogfv(int, float[], int);
-    method public static void glFogfv(int, java.nio.FloatBuffer);
-    method public static void glFogx(int, int);
-    method public static void glFogxv(int, int[], int);
-    method public static void glFogxv(int, java.nio.IntBuffer);
-    method public static void glFrontFace(int);
-    method public static void glFrustumf(float, float, float, float, float, float);
-    method public static void glFrustumx(int, int, int, int, int, int);
-    method public static void glGenTextures(int, int[], int);
-    method public static void glGenTextures(int, java.nio.IntBuffer);
-    method public static int glGetError();
-    method public static void glGetIntegerv(int, int[], int);
-    method public static void glGetIntegerv(int, java.nio.IntBuffer);
-    method public static String glGetString(int);
-    method public static void glHint(int, int);
-    method public static void glLightModelf(int, float);
-    method public static void glLightModelfv(int, float[], int);
-    method public static void glLightModelfv(int, java.nio.FloatBuffer);
-    method public static void glLightModelx(int, int);
-    method public static void glLightModelxv(int, int[], int);
-    method public static void glLightModelxv(int, java.nio.IntBuffer);
-    method public static void glLightf(int, int, float);
-    method public static void glLightfv(int, int, float[], int);
-    method public static void glLightfv(int, int, java.nio.FloatBuffer);
-    method public static void glLightx(int, int, int);
-    method public static void glLightxv(int, int, int[], int);
-    method public static void glLightxv(int, int, java.nio.IntBuffer);
-    method public static void glLineWidth(float);
-    method public static void glLineWidthx(int);
-    method public static void glLoadIdentity();
-    method public static void glLoadMatrixf(float[], int);
-    method public static void glLoadMatrixf(java.nio.FloatBuffer);
-    method public static void glLoadMatrixx(int[], int);
-    method public static void glLoadMatrixx(java.nio.IntBuffer);
-    method public static void glLogicOp(int);
-    method public static void glMaterialf(int, int, float);
-    method public static void glMaterialfv(int, int, float[], int);
-    method public static void glMaterialfv(int, int, java.nio.FloatBuffer);
-    method public static void glMaterialx(int, int, int);
-    method public static void glMaterialxv(int, int, int[], int);
-    method public static void glMaterialxv(int, int, java.nio.IntBuffer);
-    method public static void glMatrixMode(int);
-    method public static void glMultMatrixf(float[], int);
-    method public static void glMultMatrixf(java.nio.FloatBuffer);
-    method public static void glMultMatrixx(int[], int);
-    method public static void glMultMatrixx(java.nio.IntBuffer);
-    method public static void glMultiTexCoord4f(int, float, float, float, float);
-    method public static void glMultiTexCoord4x(int, int, int, int, int);
-    method public static void glNormal3f(float, float, float);
-    method public static void glNormal3x(int, int, int);
-    method public static void glNormalPointer(int, int, java.nio.Buffer);
-    method public static void glOrthof(float, float, float, float, float, float);
-    method public static void glOrthox(int, int, int, int, int, int);
-    method public static void glPixelStorei(int, int);
-    method public static void glPointSize(float);
-    method public static void glPointSizex(int);
-    method public static void glPolygonOffset(float, float);
-    method public static void glPolygonOffsetx(int, int);
-    method public static void glPopMatrix();
-    method public static void glPushMatrix();
-    method public static void glReadPixels(int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glRotatef(float, float, float, float);
-    method public static void glRotatex(int, int, int, int);
-    method public static void glSampleCoverage(float, boolean);
-    method public static void glSampleCoveragex(int, boolean);
-    method public static void glScalef(float, float, float);
-    method public static void glScalex(int, int, int);
-    method public static void glScissor(int, int, int, int);
-    method public static void glShadeModel(int);
-    method public static void glStencilFunc(int, int, int);
-    method public static void glStencilMask(int);
-    method public static void glStencilOp(int, int, int);
-    method public static void glTexCoordPointer(int, int, int, java.nio.Buffer);
-    method public static void glTexEnvf(int, int, float);
-    method public static void glTexEnvfv(int, int, float[], int);
-    method public static void glTexEnvfv(int, int, java.nio.FloatBuffer);
-    method public static void glTexEnvx(int, int, int);
-    method public static void glTexEnvxv(int, int, int[], int);
-    method public static void glTexEnvxv(int, int, java.nio.IntBuffer);
-    method public static void glTexImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glTexParameterf(int, int, float);
-    method public static void glTexParameterx(int, int, int);
-    method public static void glTexSubImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glTranslatef(float, float, float);
-    method public static void glTranslatex(int, int, int);
-    method public static void glVertexPointer(int, int, int, java.nio.Buffer);
-    method public static void glViewport(int, int, int, int);
-    field public static final int GL_ADD = 260; // 0x104
-    field public static final int GL_ALIASED_LINE_WIDTH_RANGE = 33902; // 0x846e
-    field public static final int GL_ALIASED_POINT_SIZE_RANGE = 33901; // 0x846d
-    field public static final int GL_ALPHA = 6406; // 0x1906
-    field public static final int GL_ALPHA_BITS = 3413; // 0xd55
-    field public static final int GL_ALPHA_TEST = 3008; // 0xbc0
-    field public static final int GL_ALWAYS = 519; // 0x207
-    field public static final int GL_AMBIENT = 4608; // 0x1200
-    field public static final int GL_AMBIENT_AND_DIFFUSE = 5634; // 0x1602
-    field public static final int GL_AND = 5377; // 0x1501
-    field public static final int GL_AND_INVERTED = 5380; // 0x1504
-    field public static final int GL_AND_REVERSE = 5378; // 0x1502
-    field public static final int GL_BACK = 1029; // 0x405
-    field public static final int GL_BLEND = 3042; // 0xbe2
-    field public static final int GL_BLUE_BITS = 3412; // 0xd54
-    field public static final int GL_BYTE = 5120; // 0x1400
-    field public static final int GL_CCW = 2305; // 0x901
-    field public static final int GL_CLAMP_TO_EDGE = 33071; // 0x812f
-    field public static final int GL_CLEAR = 5376; // 0x1500
-    field public static final int GL_COLOR_ARRAY = 32886; // 0x8076
-    field public static final int GL_COLOR_BUFFER_BIT = 16384; // 0x4000
-    field public static final int GL_COLOR_LOGIC_OP = 3058; // 0xbf2
-    field public static final int GL_COLOR_MATERIAL = 2903; // 0xb57
-    field public static final int GL_COMPRESSED_TEXTURE_FORMATS = 34467; // 0x86a3
-    field public static final int GL_CONSTANT_ATTENUATION = 4615; // 0x1207
-    field public static final int GL_COPY = 5379; // 0x1503
-    field public static final int GL_COPY_INVERTED = 5388; // 0x150c
-    field public static final int GL_CULL_FACE = 2884; // 0xb44
-    field public static final int GL_CW = 2304; // 0x900
-    field public static final int GL_DECAL = 8449; // 0x2101
-    field public static final int GL_DECR = 7683; // 0x1e03
-    field public static final int GL_DEPTH_BITS = 3414; // 0xd56
-    field public static final int GL_DEPTH_BUFFER_BIT = 256; // 0x100
-    field public static final int GL_DEPTH_TEST = 2929; // 0xb71
-    field public static final int GL_DIFFUSE = 4609; // 0x1201
-    field public static final int GL_DITHER = 3024; // 0xbd0
-    field public static final int GL_DONT_CARE = 4352; // 0x1100
-    field public static final int GL_DST_ALPHA = 772; // 0x304
-    field public static final int GL_DST_COLOR = 774; // 0x306
-    field public static final int GL_EMISSION = 5632; // 0x1600
-    field public static final int GL_EQUAL = 514; // 0x202
-    field public static final int GL_EQUIV = 5385; // 0x1509
-    field public static final int GL_EXP = 2048; // 0x800
-    field public static final int GL_EXP2 = 2049; // 0x801
-    field public static final int GL_EXTENSIONS = 7939; // 0x1f03
-    field public static final int GL_FALSE = 0; // 0x0
-    field public static final int GL_FASTEST = 4353; // 0x1101
-    field public static final int GL_FIXED = 5132; // 0x140c
-    field public static final int GL_FLAT = 7424; // 0x1d00
-    field public static final int GL_FLOAT = 5126; // 0x1406
-    field public static final int GL_FOG = 2912; // 0xb60
-    field public static final int GL_FOG_COLOR = 2918; // 0xb66
-    field public static final int GL_FOG_DENSITY = 2914; // 0xb62
-    field public static final int GL_FOG_END = 2916; // 0xb64
-    field public static final int GL_FOG_HINT = 3156; // 0xc54
-    field public static final int GL_FOG_MODE = 2917; // 0xb65
-    field public static final int GL_FOG_START = 2915; // 0xb63
-    field public static final int GL_FRONT = 1028; // 0x404
-    field public static final int GL_FRONT_AND_BACK = 1032; // 0x408
-    field public static final int GL_GEQUAL = 518; // 0x206
-    field public static final int GL_GREATER = 516; // 0x204
-    field public static final int GL_GREEN_BITS = 3411; // 0xd53
-    field public static final int GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES = 35739; // 0x8b9b
-    field public static final int GL_IMPLEMENTATION_COLOR_READ_TYPE_OES = 35738; // 0x8b9a
-    field public static final int GL_INCR = 7682; // 0x1e02
-    field public static final int GL_INVALID_ENUM = 1280; // 0x500
-    field public static final int GL_INVALID_OPERATION = 1282; // 0x502
-    field public static final int GL_INVALID_VALUE = 1281; // 0x501
-    field public static final int GL_INVERT = 5386; // 0x150a
-    field public static final int GL_KEEP = 7680; // 0x1e00
-    field public static final int GL_LEQUAL = 515; // 0x203
-    field public static final int GL_LESS = 513; // 0x201
-    field public static final int GL_LIGHT0 = 16384; // 0x4000
-    field public static final int GL_LIGHT1 = 16385; // 0x4001
-    field public static final int GL_LIGHT2 = 16386; // 0x4002
-    field public static final int GL_LIGHT3 = 16387; // 0x4003
-    field public static final int GL_LIGHT4 = 16388; // 0x4004
-    field public static final int GL_LIGHT5 = 16389; // 0x4005
-    field public static final int GL_LIGHT6 = 16390; // 0x4006
-    field public static final int GL_LIGHT7 = 16391; // 0x4007
-    field public static final int GL_LIGHTING = 2896; // 0xb50
-    field public static final int GL_LIGHT_MODEL_AMBIENT = 2899; // 0xb53
-    field public static final int GL_LIGHT_MODEL_TWO_SIDE = 2898; // 0xb52
-    field public static final int GL_LINEAR = 9729; // 0x2601
-    field public static final int GL_LINEAR_ATTENUATION = 4616; // 0x1208
-    field public static final int GL_LINEAR_MIPMAP_LINEAR = 9987; // 0x2703
-    field public static final int GL_LINEAR_MIPMAP_NEAREST = 9985; // 0x2701
-    field public static final int GL_LINES = 1; // 0x1
-    field public static final int GL_LINE_LOOP = 2; // 0x2
-    field public static final int GL_LINE_SMOOTH = 2848; // 0xb20
-    field public static final int GL_LINE_SMOOTH_HINT = 3154; // 0xc52
-    field public static final int GL_LINE_STRIP = 3; // 0x3
-    field public static final int GL_LUMINANCE = 6409; // 0x1909
-    field public static final int GL_LUMINANCE_ALPHA = 6410; // 0x190a
-    field public static final int GL_MAX_ELEMENTS_INDICES = 33001; // 0x80e9
-    field public static final int GL_MAX_ELEMENTS_VERTICES = 33000; // 0x80e8
-    field public static final int GL_MAX_LIGHTS = 3377; // 0xd31
-    field public static final int GL_MAX_MODELVIEW_STACK_DEPTH = 3382; // 0xd36
-    field public static final int GL_MAX_PROJECTION_STACK_DEPTH = 3384; // 0xd38
-    field public static final int GL_MAX_TEXTURE_SIZE = 3379; // 0xd33
-    field public static final int GL_MAX_TEXTURE_STACK_DEPTH = 3385; // 0xd39
-    field public static final int GL_MAX_TEXTURE_UNITS = 34018; // 0x84e2
-    field public static final int GL_MAX_VIEWPORT_DIMS = 3386; // 0xd3a
-    field public static final int GL_MODELVIEW = 5888; // 0x1700
-    field public static final int GL_MODULATE = 8448; // 0x2100
-    field public static final int GL_MULTISAMPLE = 32925; // 0x809d
-    field public static final int GL_NAND = 5390; // 0x150e
-    field public static final int GL_NEAREST = 9728; // 0x2600
-    field public static final int GL_NEAREST_MIPMAP_LINEAR = 9986; // 0x2702
-    field public static final int GL_NEAREST_MIPMAP_NEAREST = 9984; // 0x2700
-    field public static final int GL_NEVER = 512; // 0x200
-    field public static final int GL_NICEST = 4354; // 0x1102
-    field public static final int GL_NOOP = 5381; // 0x1505
-    field public static final int GL_NOR = 5384; // 0x1508
-    field public static final int GL_NORMALIZE = 2977; // 0xba1
-    field public static final int GL_NORMAL_ARRAY = 32885; // 0x8075
-    field public static final int GL_NOTEQUAL = 517; // 0x205
-    field public static final int GL_NO_ERROR = 0; // 0x0
-    field public static final int GL_NUM_COMPRESSED_TEXTURE_FORMATS = 34466; // 0x86a2
-    field public static final int GL_ONE = 1; // 0x1
-    field public static final int GL_ONE_MINUS_DST_ALPHA = 773; // 0x305
-    field public static final int GL_ONE_MINUS_DST_COLOR = 775; // 0x307
-    field public static final int GL_ONE_MINUS_SRC_ALPHA = 771; // 0x303
-    field public static final int GL_ONE_MINUS_SRC_COLOR = 769; // 0x301
-    field public static final int GL_OR = 5383; // 0x1507
-    field public static final int GL_OR_INVERTED = 5389; // 0x150d
-    field public static final int GL_OR_REVERSE = 5387; // 0x150b
-    field public static final int GL_OUT_OF_MEMORY = 1285; // 0x505
-    field public static final int GL_PACK_ALIGNMENT = 3333; // 0xd05
-    field public static final int GL_PALETTE4_R5_G6_B5_OES = 35730; // 0x8b92
-    field public static final int GL_PALETTE4_RGB5_A1_OES = 35732; // 0x8b94
-    field public static final int GL_PALETTE4_RGB8_OES = 35728; // 0x8b90
-    field public static final int GL_PALETTE4_RGBA4_OES = 35731; // 0x8b93
-    field public static final int GL_PALETTE4_RGBA8_OES = 35729; // 0x8b91
-    field public static final int GL_PALETTE8_R5_G6_B5_OES = 35735; // 0x8b97
-    field public static final int GL_PALETTE8_RGB5_A1_OES = 35737; // 0x8b99
-    field public static final int GL_PALETTE8_RGB8_OES = 35733; // 0x8b95
-    field public static final int GL_PALETTE8_RGBA4_OES = 35736; // 0x8b98
-    field public static final int GL_PALETTE8_RGBA8_OES = 35734; // 0x8b96
-    field public static final int GL_PERSPECTIVE_CORRECTION_HINT = 3152; // 0xc50
-    field public static final int GL_POINTS = 0; // 0x0
-    field public static final int GL_POINT_FADE_THRESHOLD_SIZE = 33064; // 0x8128
-    field public static final int GL_POINT_SIZE = 2833; // 0xb11
-    field public static final int GL_POINT_SMOOTH = 2832; // 0xb10
-    field public static final int GL_POINT_SMOOTH_HINT = 3153; // 0xc51
-    field public static final int GL_POLYGON_OFFSET_FILL = 32823; // 0x8037
-    field public static final int GL_POLYGON_SMOOTH_HINT = 3155; // 0xc53
-    field public static final int GL_POSITION = 4611; // 0x1203
-    field public static final int GL_PROJECTION = 5889; // 0x1701
-    field public static final int GL_QUADRATIC_ATTENUATION = 4617; // 0x1209
-    field public static final int GL_RED_BITS = 3410; // 0xd52
-    field public static final int GL_RENDERER = 7937; // 0x1f01
-    field public static final int GL_REPEAT = 10497; // 0x2901
-    field public static final int GL_REPLACE = 7681; // 0x1e01
-    field public static final int GL_RESCALE_NORMAL = 32826; // 0x803a
-    field public static final int GL_RGB = 6407; // 0x1907
-    field public static final int GL_RGBA = 6408; // 0x1908
-    field public static final int GL_SAMPLE_ALPHA_TO_COVERAGE = 32926; // 0x809e
-    field public static final int GL_SAMPLE_ALPHA_TO_ONE = 32927; // 0x809f
-    field public static final int GL_SAMPLE_COVERAGE = 32928; // 0x80a0
-    field public static final int GL_SCISSOR_TEST = 3089; // 0xc11
-    field public static final int GL_SET = 5391; // 0x150f
-    field public static final int GL_SHININESS = 5633; // 0x1601
-    field public static final int GL_SHORT = 5122; // 0x1402
-    field public static final int GL_SMOOTH = 7425; // 0x1d01
-    field public static final int GL_SMOOTH_LINE_WIDTH_RANGE = 2850; // 0xb22
-    field public static final int GL_SMOOTH_POINT_SIZE_RANGE = 2834; // 0xb12
-    field public static final int GL_SPECULAR = 4610; // 0x1202
-    field public static final int GL_SPOT_CUTOFF = 4614; // 0x1206
-    field public static final int GL_SPOT_DIRECTION = 4612; // 0x1204
-    field public static final int GL_SPOT_EXPONENT = 4613; // 0x1205
-    field public static final int GL_SRC_ALPHA = 770; // 0x302
-    field public static final int GL_SRC_ALPHA_SATURATE = 776; // 0x308
-    field public static final int GL_SRC_COLOR = 768; // 0x300
-    field public static final int GL_STACK_OVERFLOW = 1283; // 0x503
-    field public static final int GL_STACK_UNDERFLOW = 1284; // 0x504
-    field public static final int GL_STENCIL_BITS = 3415; // 0xd57
-    field public static final int GL_STENCIL_BUFFER_BIT = 1024; // 0x400
-    field public static final int GL_STENCIL_TEST = 2960; // 0xb90
-    field public static final int GL_SUBPIXEL_BITS = 3408; // 0xd50
-    field public static final int GL_TEXTURE = 5890; // 0x1702
-    field public static final int GL_TEXTURE0 = 33984; // 0x84c0
-    field public static final int GL_TEXTURE1 = 33985; // 0x84c1
-    field public static final int GL_TEXTURE10 = 33994; // 0x84ca
-    field public static final int GL_TEXTURE11 = 33995; // 0x84cb
-    field public static final int GL_TEXTURE12 = 33996; // 0x84cc
-    field public static final int GL_TEXTURE13 = 33997; // 0x84cd
-    field public static final int GL_TEXTURE14 = 33998; // 0x84ce
-    field public static final int GL_TEXTURE15 = 33999; // 0x84cf
-    field public static final int GL_TEXTURE16 = 34000; // 0x84d0
-    field public static final int GL_TEXTURE17 = 34001; // 0x84d1
-    field public static final int GL_TEXTURE18 = 34002; // 0x84d2
-    field public static final int GL_TEXTURE19 = 34003; // 0x84d3
-    field public static final int GL_TEXTURE2 = 33986; // 0x84c2
-    field public static final int GL_TEXTURE20 = 34004; // 0x84d4
-    field public static final int GL_TEXTURE21 = 34005; // 0x84d5
-    field public static final int GL_TEXTURE22 = 34006; // 0x84d6
-    field public static final int GL_TEXTURE23 = 34007; // 0x84d7
-    field public static final int GL_TEXTURE24 = 34008; // 0x84d8
-    field public static final int GL_TEXTURE25 = 34009; // 0x84d9
-    field public static final int GL_TEXTURE26 = 34010; // 0x84da
-    field public static final int GL_TEXTURE27 = 34011; // 0x84db
-    field public static final int GL_TEXTURE28 = 34012; // 0x84dc
-    field public static final int GL_TEXTURE29 = 34013; // 0x84dd
-    field public static final int GL_TEXTURE3 = 33987; // 0x84c3
-    field public static final int GL_TEXTURE30 = 34014; // 0x84de
-    field public static final int GL_TEXTURE31 = 34015; // 0x84df
-    field public static final int GL_TEXTURE4 = 33988; // 0x84c4
-    field public static final int GL_TEXTURE5 = 33989; // 0x84c5
-    field public static final int GL_TEXTURE6 = 33990; // 0x84c6
-    field public static final int GL_TEXTURE7 = 33991; // 0x84c7
-    field public static final int GL_TEXTURE8 = 33992; // 0x84c8
-    field public static final int GL_TEXTURE9 = 33993; // 0x84c9
-    field public static final int GL_TEXTURE_2D = 3553; // 0xde1
-    field public static final int GL_TEXTURE_COORD_ARRAY = 32888; // 0x8078
-    field public static final int GL_TEXTURE_ENV = 8960; // 0x2300
-    field public static final int GL_TEXTURE_ENV_COLOR = 8705; // 0x2201
-    field public static final int GL_TEXTURE_ENV_MODE = 8704; // 0x2200
-    field public static final int GL_TEXTURE_MAG_FILTER = 10240; // 0x2800
-    field public static final int GL_TEXTURE_MIN_FILTER = 10241; // 0x2801
-    field public static final int GL_TEXTURE_WRAP_S = 10242; // 0x2802
-    field public static final int GL_TEXTURE_WRAP_T = 10243; // 0x2803
-    field public static final int GL_TRIANGLES = 4; // 0x4
-    field public static final int GL_TRIANGLE_FAN = 6; // 0x6
-    field public static final int GL_TRIANGLE_STRIP = 5; // 0x5
-    field public static final int GL_TRUE = 1; // 0x1
-    field public static final int GL_UNPACK_ALIGNMENT = 3317; // 0xcf5
-    field public static final int GL_UNSIGNED_BYTE = 5121; // 0x1401
-    field public static final int GL_UNSIGNED_SHORT = 5123; // 0x1403
-    field public static final int GL_UNSIGNED_SHORT_4_4_4_4 = 32819; // 0x8033
-    field public static final int GL_UNSIGNED_SHORT_5_5_5_1 = 32820; // 0x8034
-    field public static final int GL_UNSIGNED_SHORT_5_6_5 = 33635; // 0x8363
-    field public static final int GL_VENDOR = 7936; // 0x1f00
-    field public static final int GL_VERSION = 7938; // 0x1f02
-    field public static final int GL_VERTEX_ARRAY = 32884; // 0x8074
-    field public static final int GL_XOR = 5382; // 0x1506
-    field public static final int GL_ZERO = 0; // 0x0
-  }
-
-  public class GLES10Ext {
-    ctor public GLES10Ext();
-    method public static int glQueryMatrixxOES(int[], int, int[], int);
-    method public static int glQueryMatrixxOES(java.nio.IntBuffer, java.nio.IntBuffer);
-  }
-
-  public class GLES11 extends android.opengl.GLES10 {
-    ctor public GLES11();
-    method public static void glBindBuffer(int, int);
-    method public static void glBufferData(int, int, java.nio.Buffer, int);
-    method public static void glBufferSubData(int, int, int, java.nio.Buffer);
-    method public static void glClipPlanef(int, float[], int);
-    method public static void glClipPlanef(int, java.nio.FloatBuffer);
-    method public static void glClipPlanex(int, int[], int);
-    method public static void glClipPlanex(int, java.nio.IntBuffer);
-    method public static void glColor4ub(byte, byte, byte, byte);
-    method public static void glColorPointer(int, int, int, int);
-    method public static void glDeleteBuffers(int, int[], int);
-    method public static void glDeleteBuffers(int, java.nio.IntBuffer);
-    method public static void glDrawElements(int, int, int, int);
-    method public static void glGenBuffers(int, int[], int);
-    method public static void glGenBuffers(int, java.nio.IntBuffer);
-    method public static void glGetBooleanv(int, boolean[], int);
-    method public static void glGetBooleanv(int, java.nio.IntBuffer);
-    method public static void glGetBufferParameteriv(int, int, int[], int);
-    method public static void glGetBufferParameteriv(int, int, java.nio.IntBuffer);
-    method public static void glGetClipPlanef(int, float[], int);
-    method public static void glGetClipPlanef(int, java.nio.FloatBuffer);
-    method public static void glGetClipPlanex(int, int[], int);
-    method public static void glGetClipPlanex(int, java.nio.IntBuffer);
-    method public static void glGetFixedv(int, int[], int);
-    method public static void glGetFixedv(int, java.nio.IntBuffer);
-    method public static void glGetFloatv(int, float[], int);
-    method public static void glGetFloatv(int, java.nio.FloatBuffer);
-    method public static void glGetLightfv(int, int, float[], int);
-    method public static void glGetLightfv(int, int, java.nio.FloatBuffer);
-    method public static void glGetLightxv(int, int, int[], int);
-    method public static void glGetLightxv(int, int, java.nio.IntBuffer);
-    method public static void glGetMaterialfv(int, int, float[], int);
-    method public static void glGetMaterialfv(int, int, java.nio.FloatBuffer);
-    method public static void glGetMaterialxv(int, int, int[], int);
-    method public static void glGetMaterialxv(int, int, java.nio.IntBuffer);
-    method public static void glGetTexEnvfv(int, int, float[], int);
-    method public static void glGetTexEnvfv(int, int, java.nio.FloatBuffer);
-    method public static void glGetTexEnviv(int, int, int[], int);
-    method public static void glGetTexEnviv(int, int, java.nio.IntBuffer);
-    method public static void glGetTexEnvxv(int, int, int[], int);
-    method public static void glGetTexEnvxv(int, int, java.nio.IntBuffer);
-    method public static void glGetTexParameterfv(int, int, float[], int);
-    method public static void glGetTexParameterfv(int, int, java.nio.FloatBuffer);
-    method public static void glGetTexParameteriv(int, int, int[], int);
-    method public static void glGetTexParameteriv(int, int, java.nio.IntBuffer);
-    method public static void glGetTexParameterxv(int, int, int[], int);
-    method public static void glGetTexParameterxv(int, int, java.nio.IntBuffer);
-    method public static boolean glIsBuffer(int);
-    method public static boolean glIsEnabled(int);
-    method public static boolean glIsTexture(int);
-    method public static void glNormalPointer(int, int, int);
-    method public static void glPointParameterf(int, float);
-    method public static void glPointParameterfv(int, float[], int);
-    method public static void glPointParameterfv(int, java.nio.FloatBuffer);
-    method public static void glPointParameterx(int, int);
-    method public static void glPointParameterxv(int, int[], int);
-    method public static void glPointParameterxv(int, java.nio.IntBuffer);
-    method public static void glPointSizePointerOES(int, int, java.nio.Buffer);
-    method public static void glTexCoordPointer(int, int, int, int);
-    method public static void glTexEnvi(int, int, int);
-    method public static void glTexEnviv(int, int, int[], int);
-    method public static void glTexEnviv(int, int, java.nio.IntBuffer);
-    method public static void glTexParameterfv(int, int, float[], int);
-    method public static void glTexParameterfv(int, int, java.nio.FloatBuffer);
-    method public static void glTexParameteri(int, int, int);
-    method public static void glTexParameteriv(int, int, int[], int);
-    method public static void glTexParameteriv(int, int, java.nio.IntBuffer);
-    method public static void glTexParameterxv(int, int, int[], int);
-    method public static void glTexParameterxv(int, int, java.nio.IntBuffer);
-    method public static void glVertexPointer(int, int, int, int);
-    field public static final int GL_ACTIVE_TEXTURE = 34016; // 0x84e0
-    field public static final int GL_ADD_SIGNED = 34164; // 0x8574
-    field public static final int GL_ALPHA_SCALE = 3356; // 0xd1c
-    field public static final int GL_ALPHA_TEST_FUNC = 3009; // 0xbc1
-    field public static final int GL_ALPHA_TEST_REF = 3010; // 0xbc2
-    field public static final int GL_ARRAY_BUFFER = 34962; // 0x8892
-    field public static final int GL_ARRAY_BUFFER_BINDING = 34964; // 0x8894
-    field public static final int GL_BLEND_DST = 3040; // 0xbe0
-    field public static final int GL_BLEND_SRC = 3041; // 0xbe1
-    field public static final int GL_BUFFER_ACCESS = 35003; // 0x88bb
-    field public static final int GL_BUFFER_SIZE = 34660; // 0x8764
-    field public static final int GL_BUFFER_USAGE = 34661; // 0x8765
-    field public static final int GL_CLIENT_ACTIVE_TEXTURE = 34017; // 0x84e1
-    field public static final int GL_CLIP_PLANE0 = 12288; // 0x3000
-    field public static final int GL_CLIP_PLANE1 = 12289; // 0x3001
-    field public static final int GL_CLIP_PLANE2 = 12290; // 0x3002
-    field public static final int GL_CLIP_PLANE3 = 12291; // 0x3003
-    field public static final int GL_CLIP_PLANE4 = 12292; // 0x3004
-    field public static final int GL_CLIP_PLANE5 = 12293; // 0x3005
-    field public static final int GL_COLOR_ARRAY_BUFFER_BINDING = 34968; // 0x8898
-    field public static final int GL_COLOR_ARRAY_POINTER = 32912; // 0x8090
-    field public static final int GL_COLOR_ARRAY_SIZE = 32897; // 0x8081
-    field public static final int GL_COLOR_ARRAY_STRIDE = 32899; // 0x8083
-    field public static final int GL_COLOR_ARRAY_TYPE = 32898; // 0x8082
-    field public static final int GL_COLOR_CLEAR_VALUE = 3106; // 0xc22
-    field public static final int GL_COLOR_WRITEMASK = 3107; // 0xc23
-    field public static final int GL_COMBINE = 34160; // 0x8570
-    field public static final int GL_COMBINE_ALPHA = 34162; // 0x8572
-    field public static final int GL_COMBINE_RGB = 34161; // 0x8571
-    field public static final int GL_CONSTANT = 34166; // 0x8576
-    field public static final int GL_COORD_REPLACE_OES = 34914; // 0x8862
-    field public static final int GL_CULL_FACE_MODE = 2885; // 0xb45
-    field public static final int GL_CURRENT_COLOR = 2816; // 0xb00
-    field public static final int GL_CURRENT_NORMAL = 2818; // 0xb02
-    field public static final int GL_CURRENT_TEXTURE_COORDS = 2819; // 0xb03
-    field public static final int GL_DEPTH_CLEAR_VALUE = 2931; // 0xb73
-    field public static final int GL_DEPTH_FUNC = 2932; // 0xb74
-    field public static final int GL_DEPTH_RANGE = 2928; // 0xb70
-    field public static final int GL_DEPTH_WRITEMASK = 2930; // 0xb72
-    field public static final int GL_DOT3_RGB = 34478; // 0x86ae
-    field public static final int GL_DOT3_RGBA = 34479; // 0x86af
-    field public static final int GL_DYNAMIC_DRAW = 35048; // 0x88e8
-    field public static final int GL_ELEMENT_ARRAY_BUFFER = 34963; // 0x8893
-    field public static final int GL_ELEMENT_ARRAY_BUFFER_BINDING = 34965; // 0x8895
-    field public static final int GL_FRONT_FACE = 2886; // 0xb46
-    field public static final int GL_GENERATE_MIPMAP = 33169; // 0x8191
-    field public static final int GL_GENERATE_MIPMAP_HINT = 33170; // 0x8192
-    field public static final int GL_INTERPOLATE = 34165; // 0x8575
-    field public static final int GL_LINE_WIDTH = 2849; // 0xb21
-    field public static final int GL_LOGIC_OP_MODE = 3056; // 0xbf0
-    field public static final int GL_MATRIX_MODE = 2976; // 0xba0
-    field public static final int GL_MAX_CLIP_PLANES = 3378; // 0xd32
-    field public static final int GL_MODELVIEW_MATRIX = 2982; // 0xba6
-    field public static final int GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES = 35213; // 0x898d
-    field public static final int GL_MODELVIEW_STACK_DEPTH = 2979; // 0xba3
-    field public static final int GL_NORMAL_ARRAY_BUFFER_BINDING = 34967; // 0x8897
-    field public static final int GL_NORMAL_ARRAY_POINTER = 32911; // 0x808f
-    field public static final int GL_NORMAL_ARRAY_STRIDE = 32895; // 0x807f
-    field public static final int GL_NORMAL_ARRAY_TYPE = 32894; // 0x807e
-    field public static final int GL_OPERAND0_ALPHA = 34200; // 0x8598
-    field public static final int GL_OPERAND0_RGB = 34192; // 0x8590
-    field public static final int GL_OPERAND1_ALPHA = 34201; // 0x8599
-    field public static final int GL_OPERAND1_RGB = 34193; // 0x8591
-    field public static final int GL_OPERAND2_ALPHA = 34202; // 0x859a
-    field public static final int GL_OPERAND2_RGB = 34194; // 0x8592
-    field public static final int GL_POINT_DISTANCE_ATTENUATION = 33065; // 0x8129
-    field public static final int GL_POINT_FADE_THRESHOLD_SIZE = 33064; // 0x8128
-    field public static final int GL_POINT_SIZE = 2833; // 0xb11
-    field public static final int GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES = 35743; // 0x8b9f
-    field public static final int GL_POINT_SIZE_ARRAY_OES = 35740; // 0x8b9c
-    field public static final int GL_POINT_SIZE_ARRAY_POINTER_OES = 35212; // 0x898c
-    field public static final int GL_POINT_SIZE_ARRAY_STRIDE_OES = 35211; // 0x898b
-    field public static final int GL_POINT_SIZE_ARRAY_TYPE_OES = 35210; // 0x898a
-    field public static final int GL_POINT_SIZE_MAX = 33063; // 0x8127
-    field public static final int GL_POINT_SIZE_MIN = 33062; // 0x8126
-    field public static final int GL_POINT_SPRITE_OES = 34913; // 0x8861
-    field public static final int GL_POLYGON_OFFSET_FACTOR = 32824; // 0x8038
-    field public static final int GL_POLYGON_OFFSET_UNITS = 10752; // 0x2a00
-    field public static final int GL_PREVIOUS = 34168; // 0x8578
-    field public static final int GL_PRIMARY_COLOR = 34167; // 0x8577
-    field public static final int GL_PROJECTION_MATRIX = 2983; // 0xba7
-    field public static final int GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES = 35214; // 0x898e
-    field public static final int GL_PROJECTION_STACK_DEPTH = 2980; // 0xba4
-    field public static final int GL_RGB_SCALE = 34163; // 0x8573
-    field public static final int GL_SAMPLES = 32937; // 0x80a9
-    field public static final int GL_SAMPLE_BUFFERS = 32936; // 0x80a8
-    field public static final int GL_SAMPLE_COVERAGE_INVERT = 32939; // 0x80ab
-    field public static final int GL_SAMPLE_COVERAGE_VALUE = 32938; // 0x80aa
-    field public static final int GL_SCISSOR_BOX = 3088; // 0xc10
-    field public static final int GL_SHADE_MODEL = 2900; // 0xb54
-    field public static final int GL_SRC0_ALPHA = 34184; // 0x8588
-    field public static final int GL_SRC0_RGB = 34176; // 0x8580
-    field public static final int GL_SRC1_ALPHA = 34185; // 0x8589
-    field public static final int GL_SRC1_RGB = 34177; // 0x8581
-    field public static final int GL_SRC2_ALPHA = 34186; // 0x858a
-    field public static final int GL_SRC2_RGB = 34178; // 0x8582
-    field public static final int GL_STATIC_DRAW = 35044; // 0x88e4
-    field public static final int GL_STENCIL_CLEAR_VALUE = 2961; // 0xb91
-    field public static final int GL_STENCIL_FAIL = 2964; // 0xb94
-    field public static final int GL_STENCIL_FUNC = 2962; // 0xb92
-    field public static final int GL_STENCIL_PASS_DEPTH_FAIL = 2965; // 0xb95
-    field public static final int GL_STENCIL_PASS_DEPTH_PASS = 2966; // 0xb96
-    field public static final int GL_STENCIL_REF = 2967; // 0xb97
-    field public static final int GL_STENCIL_VALUE_MASK = 2963; // 0xb93
-    field public static final int GL_STENCIL_WRITEMASK = 2968; // 0xb98
-    field public static final int GL_SUBTRACT = 34023; // 0x84e7
-    field public static final int GL_TEXTURE_BINDING_2D = 32873; // 0x8069
-    field public static final int GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING = 34970; // 0x889a
-    field public static final int GL_TEXTURE_COORD_ARRAY_POINTER = 32914; // 0x8092
-    field public static final int GL_TEXTURE_COORD_ARRAY_SIZE = 32904; // 0x8088
-    field public static final int GL_TEXTURE_COORD_ARRAY_STRIDE = 32906; // 0x808a
-    field public static final int GL_TEXTURE_COORD_ARRAY_TYPE = 32905; // 0x8089
-    field public static final int GL_TEXTURE_MATRIX = 2984; // 0xba8
-    field public static final int GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES = 35215; // 0x898f
-    field public static final int GL_TEXTURE_STACK_DEPTH = 2981; // 0xba5
-    field public static final int GL_VERTEX_ARRAY_BUFFER_BINDING = 34966; // 0x8896
-    field public static final int GL_VERTEX_ARRAY_POINTER = 32910; // 0x808e
-    field public static final int GL_VERTEX_ARRAY_SIZE = 32890; // 0x807a
-    field public static final int GL_VERTEX_ARRAY_STRIDE = 32892; // 0x807c
-    field public static final int GL_VERTEX_ARRAY_TYPE = 32891; // 0x807b
-    field public static final int GL_VIEWPORT = 2978; // 0xba2
-    field public static final int GL_WRITE_ONLY = 35001; // 0x88b9
-  }
-
-  public class GLES11Ext {
-    ctor public GLES11Ext();
-    method public static void glAlphaFuncxOES(int, int);
-    method public static void glBindFramebufferOES(int, int);
-    method public static void glBindRenderbufferOES(int, int);
-    method public static void glBlendEquationOES(int);
-    method public static void glBlendEquationSeparateOES(int, int);
-    method public static void glBlendFuncSeparateOES(int, int, int, int);
-    method public static int glCheckFramebufferStatusOES(int);
-    method public static void glClearColorxOES(int, int, int, int);
-    method public static void glClearDepthfOES(float);
-    method public static void glClearDepthxOES(int);
-    method public static void glClipPlanefOES(int, float[], int);
-    method public static void glClipPlanefOES(int, java.nio.FloatBuffer);
-    method public static void glClipPlanexOES(int, int[], int);
-    method public static void glClipPlanexOES(int, java.nio.IntBuffer);
-    method public static void glColor4xOES(int, int, int, int);
-    method public static void glCurrentPaletteMatrixOES(int);
-    method public static void glDeleteFramebuffersOES(int, int[], int);
-    method public static void glDeleteFramebuffersOES(int, java.nio.IntBuffer);
-    method public static void glDeleteRenderbuffersOES(int, int[], int);
-    method public static void glDeleteRenderbuffersOES(int, java.nio.IntBuffer);
-    method public static void glDepthRangefOES(float, float);
-    method public static void glDepthRangexOES(int, int);
-    method public static void glDrawTexfOES(float, float, float, float, float);
-    method public static void glDrawTexfvOES(float[], int);
-    method public static void glDrawTexfvOES(java.nio.FloatBuffer);
-    method public static void glDrawTexiOES(int, int, int, int, int);
-    method public static void glDrawTexivOES(int[], int);
-    method public static void glDrawTexivOES(java.nio.IntBuffer);
-    method public static void glDrawTexsOES(short, short, short, short, short);
-    method public static void glDrawTexsvOES(short[], int);
-    method public static void glDrawTexsvOES(java.nio.ShortBuffer);
-    method public static void glDrawTexxOES(int, int, int, int, int);
-    method public static void glDrawTexxvOES(int[], int);
-    method public static void glDrawTexxvOES(java.nio.IntBuffer);
-    method public static void glEGLImageTargetRenderbufferStorageOES(int, java.nio.Buffer);
-    method public static void glEGLImageTargetTexture2DOES(int, java.nio.Buffer);
-    method public static void glFogxOES(int, int);
-    method public static void glFogxvOES(int, int[], int);
-    method public static void glFogxvOES(int, java.nio.IntBuffer);
-    method public static void glFramebufferRenderbufferOES(int, int, int, int);
-    method public static void glFramebufferTexture2DOES(int, int, int, int, int);
-    method public static void glFrustumfOES(float, float, float, float, float, float);
-    method public static void glFrustumxOES(int, int, int, int, int, int);
-    method public static void glGenFramebuffersOES(int, int[], int);
-    method public static void glGenFramebuffersOES(int, java.nio.IntBuffer);
-    method public static void glGenRenderbuffersOES(int, int[], int);
-    method public static void glGenRenderbuffersOES(int, java.nio.IntBuffer);
-    method public static void glGenerateMipmapOES(int);
-    method public static void glGetClipPlanefOES(int, float[], int);
-    method public static void glGetClipPlanefOES(int, java.nio.FloatBuffer);
-    method public static void glGetClipPlanexOES(int, int[], int);
-    method public static void glGetClipPlanexOES(int, java.nio.IntBuffer);
-    method public static void glGetFixedvOES(int, int[], int);
-    method public static void glGetFixedvOES(int, java.nio.IntBuffer);
-    method public static void glGetFramebufferAttachmentParameterivOES(int, int, int, int[], int);
-    method public static void glGetFramebufferAttachmentParameterivOES(int, int, int, java.nio.IntBuffer);
-    method public static void glGetLightxvOES(int, int, int[], int);
-    method public static void glGetLightxvOES(int, int, java.nio.IntBuffer);
-    method public static void glGetMaterialxvOES(int, int, int[], int);
-    method public static void glGetMaterialxvOES(int, int, java.nio.IntBuffer);
-    method public static void glGetRenderbufferParameterivOES(int, int, int[], int);
-    method public static void glGetRenderbufferParameterivOES(int, int, java.nio.IntBuffer);
-    method public static void glGetTexEnvxvOES(int, int, int[], int);
-    method public static void glGetTexEnvxvOES(int, int, java.nio.IntBuffer);
-    method public static void glGetTexGenfvOES(int, int, float[], int);
-    method public static void glGetTexGenfvOES(int, int, java.nio.FloatBuffer);
-    method public static void glGetTexGenivOES(int, int, int[], int);
-    method public static void glGetTexGenivOES(int, int, java.nio.IntBuffer);
-    method public static void glGetTexGenxvOES(int, int, int[], int);
-    method public static void glGetTexGenxvOES(int, int, java.nio.IntBuffer);
-    method public static void glGetTexParameterxvOES(int, int, int[], int);
-    method public static void glGetTexParameterxvOES(int, int, java.nio.IntBuffer);
-    method public static boolean glIsFramebufferOES(int);
-    method public static boolean glIsRenderbufferOES(int);
-    method public static void glLightModelxOES(int, int);
-    method public static void glLightModelxvOES(int, int[], int);
-    method public static void glLightModelxvOES(int, java.nio.IntBuffer);
-    method public static void glLightxOES(int, int, int);
-    method public static void glLightxvOES(int, int, int[], int);
-    method public static void glLightxvOES(int, int, java.nio.IntBuffer);
-    method public static void glLineWidthxOES(int);
-    method public static void glLoadMatrixxOES(int[], int);
-    method public static void glLoadMatrixxOES(java.nio.IntBuffer);
-    method public static void glLoadPaletteFromModelViewMatrixOES();
-    method public static void glMaterialxOES(int, int, int);
-    method public static void glMaterialxvOES(int, int, int[], int);
-    method public static void glMaterialxvOES(int, int, java.nio.IntBuffer);
-    method public static void glMatrixIndexPointerOES(int, int, int, java.nio.Buffer);
-    method public static void glMultMatrixxOES(int[], int);
-    method public static void glMultMatrixxOES(java.nio.IntBuffer);
-    method public static void glMultiTexCoord4xOES(int, int, int, int, int);
-    method public static void glNormal3xOES(int, int, int);
-    method public static void glOrthofOES(float, float, float, float, float, float);
-    method public static void glOrthoxOES(int, int, int, int, int, int);
-    method public static void glPointParameterxOES(int, int);
-    method public static void glPointParameterxvOES(int, int[], int);
-    method public static void glPointParameterxvOES(int, java.nio.IntBuffer);
-    method public static void glPointSizexOES(int);
-    method public static void glPolygonOffsetxOES(int, int);
-    method public static void glRenderbufferStorageOES(int, int, int, int);
-    method public static void glRotatexOES(int, int, int, int);
-    method public static void glSampleCoveragexOES(int, boolean);
-    method public static void glScalexOES(int, int, int);
-    method public static void glTexEnvxOES(int, int, int);
-    method public static void glTexEnvxvOES(int, int, int[], int);
-    method public static void glTexEnvxvOES(int, int, java.nio.IntBuffer);
-    method public static void glTexGenfOES(int, int, float);
-    method public static void glTexGenfvOES(int, int, float[], int);
-    method public static void glTexGenfvOES(int, int, java.nio.FloatBuffer);
-    method public static void glTexGeniOES(int, int, int);
-    method public static void glTexGenivOES(int, int, int[], int);
-    method public static void glTexGenivOES(int, int, java.nio.IntBuffer);
-    method public static void glTexGenxOES(int, int, int);
-    method public static void glTexGenxvOES(int, int, int[], int);
-    method public static void glTexGenxvOES(int, int, java.nio.IntBuffer);
-    method public static void glTexParameterxOES(int, int, int);
-    method public static void glTexParameterxvOES(int, int, int[], int);
-    method public static void glTexParameterxvOES(int, int, java.nio.IntBuffer);
-    method public static void glTranslatexOES(int, int, int);
-    method public static void glWeightPointerOES(int, int, int, java.nio.Buffer);
-    field public static final int GL_3DC_XY_AMD = 34810; // 0x87fa
-    field public static final int GL_3DC_X_AMD = 34809; // 0x87f9
-    field public static final int GL_ATC_RGBA_EXPLICIT_ALPHA_AMD = 35987; // 0x8c93
-    field public static final int GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD = 34798; // 0x87ee
-    field public static final int GL_ATC_RGB_AMD = 35986; // 0x8c92
-    field public static final int GL_BGRA = 32993; // 0x80e1
-    field public static final int GL_BLEND_DST_ALPHA_OES = 32970; // 0x80ca
-    field public static final int GL_BLEND_DST_RGB_OES = 32968; // 0x80c8
-    field public static final int GL_BLEND_EQUATION_ALPHA_OES = 34877; // 0x883d
-    field public static final int GL_BLEND_EQUATION_OES = 32777; // 0x8009
-    field public static final int GL_BLEND_EQUATION_RGB_OES = 32777; // 0x8009
-    field public static final int GL_BLEND_SRC_ALPHA_OES = 32971; // 0x80cb
-    field public static final int GL_BLEND_SRC_RGB_OES = 32969; // 0x80c9
-    field public static final int GL_BUFFER_ACCESS_OES = 35003; // 0x88bb
-    field public static final int GL_BUFFER_MAPPED_OES = 35004; // 0x88bc
-    field public static final int GL_BUFFER_MAP_POINTER_OES = 35005; // 0x88bd
-    field public static final int GL_COLOR_ATTACHMENT0_OES = 36064; // 0x8ce0
-    field public static final int GL_CURRENT_PALETTE_MATRIX_OES = 34883; // 0x8843
-    field public static final int GL_DECR_WRAP_OES = 34056; // 0x8508
-    field public static final int GL_DEPTH24_STENCIL8_OES = 35056; // 0x88f0
-    field public static final int GL_DEPTH_ATTACHMENT_OES = 36096; // 0x8d00
-    field public static final int GL_DEPTH_COMPONENT16_OES = 33189; // 0x81a5
-    field public static final int GL_DEPTH_COMPONENT24_OES = 33190; // 0x81a6
-    field public static final int GL_DEPTH_COMPONENT32_OES = 33191; // 0x81a7
-    field public static final int GL_DEPTH_STENCIL_OES = 34041; // 0x84f9
-    field public static final int GL_ETC1_RGB8_OES = 36196; // 0x8d64
-    field public static final int GL_FIXED_OES = 5132; // 0x140c
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES = 36049; // 0x8cd1
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES = 36048; // 0x8cd0
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES = 36051; // 0x8cd3
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES = 36050; // 0x8cd2
-    field public static final int GL_FRAMEBUFFER_BINDING_OES = 36006; // 0x8ca6
-    field public static final int GL_FRAMEBUFFER_COMPLETE_OES = 36053; // 0x8cd5
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES = 36054; // 0x8cd6
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES = 36057; // 0x8cd9
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES = 36058; // 0x8cda
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES = 36055; // 0x8cd7
-    field public static final int GL_FRAMEBUFFER_OES = 36160; // 0x8d40
-    field public static final int GL_FRAMEBUFFER_UNSUPPORTED_OES = 36061; // 0x8cdd
-    field public static final int GL_FUNC_ADD_OES = 32774; // 0x8006
-    field public static final int GL_FUNC_REVERSE_SUBTRACT_OES = 32779; // 0x800b
-    field public static final int GL_FUNC_SUBTRACT_OES = 32778; // 0x800a
-    field public static final int GL_INCR_WRAP_OES = 34055; // 0x8507
-    field public static final int GL_INVALID_FRAMEBUFFER_OPERATION_OES = 1286; // 0x506
-    field public static final int GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES = 35742; // 0x8b9e
-    field public static final int GL_MATRIX_INDEX_ARRAY_OES = 34884; // 0x8844
-    field public static final int GL_MATRIX_INDEX_ARRAY_POINTER_OES = 34889; // 0x8849
-    field public static final int GL_MATRIX_INDEX_ARRAY_SIZE_OES = 34886; // 0x8846
-    field public static final int GL_MATRIX_INDEX_ARRAY_STRIDE_OES = 34888; // 0x8848
-    field public static final int GL_MATRIX_INDEX_ARRAY_TYPE_OES = 34887; // 0x8847
-    field public static final int GL_MATRIX_PALETTE_OES = 34880; // 0x8840
-    field public static final int GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES = 34076; // 0x851c
-    field public static final int GL_MAX_PALETTE_MATRICES_OES = 34882; // 0x8842
-    field public static final int GL_MAX_RENDERBUFFER_SIZE_OES = 34024; // 0x84e8
-    field public static final int GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 34047; // 0x84ff
-    field public static final int GL_MAX_VERTEX_UNITS_OES = 34468; // 0x86a4
-    field public static final int GL_MIRRORED_REPEAT_OES = 33648; // 0x8370
-    field public static final int GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES = 35213; // 0x898d
-    field public static final int GL_NONE_OES = 0; // 0x0
-    field public static final int GL_NORMAL_MAP_OES = 34065; // 0x8511
-    field public static final int GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES = 35214; // 0x898e
-    field public static final int GL_REFLECTION_MAP_OES = 34066; // 0x8512
-    field public static final int GL_RENDERBUFFER_ALPHA_SIZE_OES = 36179; // 0x8d53
-    field public static final int GL_RENDERBUFFER_BINDING_OES = 36007; // 0x8ca7
-    field public static final int GL_RENDERBUFFER_BLUE_SIZE_OES = 36178; // 0x8d52
-    field public static final int GL_RENDERBUFFER_DEPTH_SIZE_OES = 36180; // 0x8d54
-    field public static final int GL_RENDERBUFFER_GREEN_SIZE_OES = 36177; // 0x8d51
-    field public static final int GL_RENDERBUFFER_HEIGHT_OES = 36163; // 0x8d43
-    field public static final int GL_RENDERBUFFER_INTERNAL_FORMAT_OES = 36164; // 0x8d44
-    field public static final int GL_RENDERBUFFER_OES = 36161; // 0x8d41
-    field public static final int GL_RENDERBUFFER_RED_SIZE_OES = 36176; // 0x8d50
-    field public static final int GL_RENDERBUFFER_STENCIL_SIZE_OES = 36181; // 0x8d55
-    field public static final int GL_RENDERBUFFER_WIDTH_OES = 36162; // 0x8d42
-    field public static final int GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES = 36200; // 0x8d68
-    field public static final int GL_RGB565_OES = 36194; // 0x8d62
-    field public static final int GL_RGB5_A1_OES = 32855; // 0x8057
-    field public static final int GL_RGB8_OES = 32849; // 0x8051
-    field public static final int GL_RGBA4_OES = 32854; // 0x8056
-    field public static final int GL_RGBA8_OES = 32856; // 0x8058
-    field public static final int GL_SAMPLER_EXTERNAL_OES = 36198; // 0x8d66
-    field public static final int GL_STENCIL_ATTACHMENT_OES = 36128; // 0x8d20
-    field public static final int GL_STENCIL_INDEX1_OES = 36166; // 0x8d46
-    field public static final int GL_STENCIL_INDEX4_OES = 36167; // 0x8d47
-    field public static final int GL_STENCIL_INDEX8_OES = 36168; // 0x8d48
-    field public static final int GL_TEXTURE_BINDING_CUBE_MAP_OES = 34068; // 0x8514
-    field public static final int GL_TEXTURE_BINDING_EXTERNAL_OES = 36199; // 0x8d67
-    field public static final int GL_TEXTURE_CROP_RECT_OES = 35741; // 0x8b9d
-    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES = 34070; // 0x8516
-    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES = 34072; // 0x8518
-    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES = 34074; // 0x851a
-    field public static final int GL_TEXTURE_CUBE_MAP_OES = 34067; // 0x8513
-    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES = 34069; // 0x8515
-    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES = 34071; // 0x8517
-    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES = 34073; // 0x8519
-    field public static final int GL_TEXTURE_EXTERNAL_OES = 36197; // 0x8d65
-    field public static final int GL_TEXTURE_GEN_MODE_OES = 9472; // 0x2500
-    field public static final int GL_TEXTURE_GEN_STR_OES = 36192; // 0x8d60
-    field public static final int GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES = 35215; // 0x898f
-    field public static final int GL_TEXTURE_MAX_ANISOTROPY_EXT = 34046; // 0x84fe
-    field public static final int GL_UNSIGNED_INT_24_8_OES = 34042; // 0x84fa
-    field public static final int GL_WEIGHT_ARRAY_BUFFER_BINDING_OES = 34974; // 0x889e
-    field public static final int GL_WEIGHT_ARRAY_OES = 34477; // 0x86ad
-    field public static final int GL_WEIGHT_ARRAY_POINTER_OES = 34476; // 0x86ac
-    field public static final int GL_WEIGHT_ARRAY_SIZE_OES = 34475; // 0x86ab
-    field public static final int GL_WEIGHT_ARRAY_STRIDE_OES = 34474; // 0x86aa
-    field public static final int GL_WEIGHT_ARRAY_TYPE_OES = 34473; // 0x86a9
-    field public static final int GL_WRITE_ONLY_OES = 35001; // 0x88b9
-  }
-
-  public class GLES20 {
-    ctor public GLES20();
-    method public static void glActiveTexture(int);
-    method public static void glAttachShader(int, int);
-    method public static void glBindAttribLocation(int, int, String);
-    method public static void glBindBuffer(int, int);
-    method public static void glBindFramebuffer(int, int);
-    method public static void glBindRenderbuffer(int, int);
-    method public static void glBindTexture(int, int);
-    method public static void glBlendColor(float, float, float, float);
-    method public static void glBlendEquation(int);
-    method public static void glBlendEquationSeparate(int, int);
-    method public static void glBlendFunc(int, int);
-    method public static void glBlendFuncSeparate(int, int, int, int);
-    method public static void glBufferData(int, int, java.nio.Buffer, int);
-    method public static void glBufferSubData(int, int, int, java.nio.Buffer);
-    method public static int glCheckFramebufferStatus(int);
-    method public static void glClear(int);
-    method public static void glClearColor(float, float, float, float);
-    method public static void glClearDepthf(float);
-    method public static void glClearStencil(int);
-    method public static void glColorMask(boolean, boolean, boolean, boolean);
-    method public static void glCompileShader(int);
-    method public static void glCompressedTexImage2D(int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glCompressedTexSubImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glCopyTexImage2D(int, int, int, int, int, int, int, int);
-    method public static void glCopyTexSubImage2D(int, int, int, int, int, int, int, int);
-    method public static int glCreateProgram();
-    method public static int glCreateShader(int);
-    method public static void glCullFace(int);
-    method public static void glDeleteBuffers(int, int[], int);
-    method public static void glDeleteBuffers(int, java.nio.IntBuffer);
-    method public static void glDeleteFramebuffers(int, int[], int);
-    method public static void glDeleteFramebuffers(int, java.nio.IntBuffer);
-    method public static void glDeleteProgram(int);
-    method public static void glDeleteRenderbuffers(int, int[], int);
-    method public static void glDeleteRenderbuffers(int, java.nio.IntBuffer);
-    method public static void glDeleteShader(int);
-    method public static void glDeleteTextures(int, int[], int);
-    method public static void glDeleteTextures(int, java.nio.IntBuffer);
-    method public static void glDepthFunc(int);
-    method public static void glDepthMask(boolean);
-    method public static void glDepthRangef(float, float);
-    method public static void glDetachShader(int, int);
-    method public static void glDisable(int);
-    method public static void glDisableVertexAttribArray(int);
-    method public static void glDrawArrays(int, int, int);
-    method public static void glDrawElements(int, int, int, int);
-    method public static void glDrawElements(int, int, int, java.nio.Buffer);
-    method public static void glEnable(int);
-    method public static void glEnableVertexAttribArray(int);
-    method public static void glFinish();
-    method public static void glFlush();
-    method public static void glFramebufferRenderbuffer(int, int, int, int);
-    method public static void glFramebufferTexture2D(int, int, int, int, int);
-    method public static void glFrontFace(int);
-    method public static void glGenBuffers(int, int[], int);
-    method public static void glGenBuffers(int, java.nio.IntBuffer);
-    method public static void glGenFramebuffers(int, int[], int);
-    method public static void glGenFramebuffers(int, java.nio.IntBuffer);
-    method public static void glGenRenderbuffers(int, int[], int);
-    method public static void glGenRenderbuffers(int, java.nio.IntBuffer);
-    method public static void glGenTextures(int, int[], int);
-    method public static void glGenTextures(int, java.nio.IntBuffer);
-    method public static void glGenerateMipmap(int);
-    method public static void glGetActiveAttrib(int, int, int, int[], int, int[], int, int[], int, byte[], int);
-    method public static String glGetActiveAttrib(int, int, int[], int, int[], int);
-    method public static String glGetActiveAttrib(int, int, java.nio.IntBuffer, java.nio.IntBuffer);
-    method public static void glGetActiveUniform(int, int, int, int[], int, int[], int, int[], int, byte[], int);
-    method public static String glGetActiveUniform(int, int, int[], int, int[], int);
-    method public static String glGetActiveUniform(int, int, java.nio.IntBuffer, java.nio.IntBuffer);
-    method public static void glGetAttachedShaders(int, int, int[], int, int[], int);
-    method public static void glGetAttachedShaders(int, int, java.nio.IntBuffer, java.nio.IntBuffer);
-    method public static int glGetAttribLocation(int, String);
-    method public static void glGetBooleanv(int, boolean[], int);
-    method public static void glGetBooleanv(int, java.nio.IntBuffer);
-    method public static void glGetBufferParameteriv(int, int, int[], int);
-    method public static void glGetBufferParameteriv(int, int, java.nio.IntBuffer);
-    method public static int glGetError();
-    method public static void glGetFloatv(int, float[], int);
-    method public static void glGetFloatv(int, java.nio.FloatBuffer);
-    method public static void glGetFramebufferAttachmentParameteriv(int, int, int, int[], int);
-    method public static void glGetFramebufferAttachmentParameteriv(int, int, int, java.nio.IntBuffer);
-    method public static void glGetIntegerv(int, int[], int);
-    method public static void glGetIntegerv(int, java.nio.IntBuffer);
-    method public static String glGetProgramInfoLog(int);
-    method public static void glGetProgramiv(int, int, int[], int);
-    method public static void glGetProgramiv(int, int, java.nio.IntBuffer);
-    method public static void glGetRenderbufferParameteriv(int, int, int[], int);
-    method public static void glGetRenderbufferParameteriv(int, int, java.nio.IntBuffer);
-    method public static String glGetShaderInfoLog(int);
-    method public static void glGetShaderPrecisionFormat(int, int, int[], int, int[], int);
-    method public static void glGetShaderPrecisionFormat(int, int, java.nio.IntBuffer, java.nio.IntBuffer);
-    method public static void glGetShaderSource(int, int, int[], int, byte[], int);
-    method public static String glGetShaderSource(int);
-    method public static void glGetShaderiv(int, int, int[], int);
-    method public static void glGetShaderiv(int, int, java.nio.IntBuffer);
-    method public static String glGetString(int);
-    method public static void glGetTexParameterfv(int, int, float[], int);
-    method public static void glGetTexParameterfv(int, int, java.nio.FloatBuffer);
-    method public static void glGetTexParameteriv(int, int, int[], int);
-    method public static void glGetTexParameteriv(int, int, java.nio.IntBuffer);
-    method public static int glGetUniformLocation(int, String);
-    method public static void glGetUniformfv(int, int, float[], int);
-    method public static void glGetUniformfv(int, int, java.nio.FloatBuffer);
-    method public static void glGetUniformiv(int, int, int[], int);
-    method public static void glGetUniformiv(int, int, java.nio.IntBuffer);
-    method public static void glGetVertexAttribfv(int, int, float[], int);
-    method public static void glGetVertexAttribfv(int, int, java.nio.FloatBuffer);
-    method public static void glGetVertexAttribiv(int, int, int[], int);
-    method public static void glGetVertexAttribiv(int, int, java.nio.IntBuffer);
-    method public static void glHint(int, int);
-    method public static boolean glIsBuffer(int);
-    method public static boolean glIsEnabled(int);
-    method public static boolean glIsFramebuffer(int);
-    method public static boolean glIsProgram(int);
-    method public static boolean glIsRenderbuffer(int);
-    method public static boolean glIsShader(int);
-    method public static boolean glIsTexture(int);
-    method public static void glLineWidth(float);
-    method public static void glLinkProgram(int);
-    method public static void glPixelStorei(int, int);
-    method public static void glPolygonOffset(float, float);
-    method public static void glReadPixels(int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glReleaseShaderCompiler();
-    method public static void glRenderbufferStorage(int, int, int, int);
-    method public static void glSampleCoverage(float, boolean);
-    method public static void glScissor(int, int, int, int);
-    method public static void glShaderBinary(int, int[], int, int, java.nio.Buffer, int);
-    method public static void glShaderBinary(int, java.nio.IntBuffer, int, java.nio.Buffer, int);
-    method public static void glShaderSource(int, String);
-    method public static void glStencilFunc(int, int, int);
-    method public static void glStencilFuncSeparate(int, int, int, int);
-    method public static void glStencilMask(int);
-    method public static void glStencilMaskSeparate(int, int);
-    method public static void glStencilOp(int, int, int);
-    method public static void glStencilOpSeparate(int, int, int, int);
-    method public static void glTexImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glTexParameterf(int, int, float);
-    method public static void glTexParameterfv(int, int, float[], int);
-    method public static void glTexParameterfv(int, int, java.nio.FloatBuffer);
-    method public static void glTexParameteri(int, int, int);
-    method public static void glTexParameteriv(int, int, int[], int);
-    method public static void glTexParameteriv(int, int, java.nio.IntBuffer);
-    method public static void glTexSubImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glUniform1f(int, float);
-    method public static void glUniform1fv(int, int, float[], int);
-    method public static void glUniform1fv(int, int, java.nio.FloatBuffer);
-    method public static void glUniform1i(int, int);
-    method public static void glUniform1iv(int, int, int[], int);
-    method public static void glUniform1iv(int, int, java.nio.IntBuffer);
-    method public static void glUniform2f(int, float, float);
-    method public static void glUniform2fv(int, int, float[], int);
-    method public static void glUniform2fv(int, int, java.nio.FloatBuffer);
-    method public static void glUniform2i(int, int, int);
-    method public static void glUniform2iv(int, int, int[], int);
-    method public static void glUniform2iv(int, int, java.nio.IntBuffer);
-    method public static void glUniform3f(int, float, float, float);
-    method public static void glUniform3fv(int, int, float[], int);
-    method public static void glUniform3fv(int, int, java.nio.FloatBuffer);
-    method public static void glUniform3i(int, int, int, int);
-    method public static void glUniform3iv(int, int, int[], int);
-    method public static void glUniform3iv(int, int, java.nio.IntBuffer);
-    method public static void glUniform4f(int, float, float, float, float);
-    method public static void glUniform4fv(int, int, float[], int);
-    method public static void glUniform4fv(int, int, java.nio.FloatBuffer);
-    method public static void glUniform4i(int, int, int, int, int);
-    method public static void glUniform4iv(int, int, int[], int);
-    method public static void glUniform4iv(int, int, java.nio.IntBuffer);
-    method public static void glUniformMatrix2fv(int, int, boolean, float[], int);
-    method public static void glUniformMatrix2fv(int, int, boolean, java.nio.FloatBuffer);
-    method public static void glUniformMatrix3fv(int, int, boolean, float[], int);
-    method public static void glUniformMatrix3fv(int, int, boolean, java.nio.FloatBuffer);
-    method public static void glUniformMatrix4fv(int, int, boolean, float[], int);
-    method public static void glUniformMatrix4fv(int, int, boolean, java.nio.FloatBuffer);
-    method public static void glUseProgram(int);
-    method public static void glValidateProgram(int);
-    method public static void glVertexAttrib1f(int, float);
-    method public static void glVertexAttrib1fv(int, float[], int);
-    method public static void glVertexAttrib1fv(int, java.nio.FloatBuffer);
-    method public static void glVertexAttrib2f(int, float, float);
-    method public static void glVertexAttrib2fv(int, float[], int);
-    method public static void glVertexAttrib2fv(int, java.nio.FloatBuffer);
-    method public static void glVertexAttrib3f(int, float, float, float);
-    method public static void glVertexAttrib3fv(int, float[], int);
-    method public static void glVertexAttrib3fv(int, java.nio.FloatBuffer);
-    method public static void glVertexAttrib4f(int, float, float, float, float);
-    method public static void glVertexAttrib4fv(int, float[], int);
-    method public static void glVertexAttrib4fv(int, java.nio.FloatBuffer);
-    method public static void glVertexAttribPointer(int, int, int, boolean, int, int);
-    method public static void glVertexAttribPointer(int, int, int, boolean, int, java.nio.Buffer);
-    method public static void glViewport(int, int, int, int);
-    field public static final int GL_ACTIVE_ATTRIBUTES = 35721; // 0x8b89
-    field public static final int GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = 35722; // 0x8b8a
-    field public static final int GL_ACTIVE_TEXTURE = 34016; // 0x84e0
-    field public static final int GL_ACTIVE_UNIFORMS = 35718; // 0x8b86
-    field public static final int GL_ACTIVE_UNIFORM_MAX_LENGTH = 35719; // 0x8b87
-    field public static final int GL_ALIASED_LINE_WIDTH_RANGE = 33902; // 0x846e
-    field public static final int GL_ALIASED_POINT_SIZE_RANGE = 33901; // 0x846d
-    field public static final int GL_ALPHA = 6406; // 0x1906
-    field public static final int GL_ALPHA_BITS = 3413; // 0xd55
-    field public static final int GL_ALWAYS = 519; // 0x207
-    field public static final int GL_ARRAY_BUFFER = 34962; // 0x8892
-    field public static final int GL_ARRAY_BUFFER_BINDING = 34964; // 0x8894
-    field public static final int GL_ATTACHED_SHADERS = 35717; // 0x8b85
-    field public static final int GL_BACK = 1029; // 0x405
-    field public static final int GL_BLEND = 3042; // 0xbe2
-    field public static final int GL_BLEND_COLOR = 32773; // 0x8005
-    field public static final int GL_BLEND_DST_ALPHA = 32970; // 0x80ca
-    field public static final int GL_BLEND_DST_RGB = 32968; // 0x80c8
-    field public static final int GL_BLEND_EQUATION = 32777; // 0x8009
-    field public static final int GL_BLEND_EQUATION_ALPHA = 34877; // 0x883d
-    field public static final int GL_BLEND_EQUATION_RGB = 32777; // 0x8009
-    field public static final int GL_BLEND_SRC_ALPHA = 32971; // 0x80cb
-    field public static final int GL_BLEND_SRC_RGB = 32969; // 0x80c9
-    field public static final int GL_BLUE_BITS = 3412; // 0xd54
-    field public static final int GL_BOOL = 35670; // 0x8b56
-    field public static final int GL_BOOL_VEC2 = 35671; // 0x8b57
-    field public static final int GL_BOOL_VEC3 = 35672; // 0x8b58
-    field public static final int GL_BOOL_VEC4 = 35673; // 0x8b59
-    field public static final int GL_BUFFER_SIZE = 34660; // 0x8764
-    field public static final int GL_BUFFER_USAGE = 34661; // 0x8765
-    field public static final int GL_BYTE = 5120; // 0x1400
-    field public static final int GL_CCW = 2305; // 0x901
-    field public static final int GL_CLAMP_TO_EDGE = 33071; // 0x812f
-    field public static final int GL_COLOR_ATTACHMENT0 = 36064; // 0x8ce0
-    field public static final int GL_COLOR_BUFFER_BIT = 16384; // 0x4000
-    field public static final int GL_COLOR_CLEAR_VALUE = 3106; // 0xc22
-    field public static final int GL_COLOR_WRITEMASK = 3107; // 0xc23
-    field public static final int GL_COMPILE_STATUS = 35713; // 0x8b81
-    field public static final int GL_COMPRESSED_TEXTURE_FORMATS = 34467; // 0x86a3
-    field public static final int GL_CONSTANT_ALPHA = 32771; // 0x8003
-    field public static final int GL_CONSTANT_COLOR = 32769; // 0x8001
-    field public static final int GL_CULL_FACE = 2884; // 0xb44
-    field public static final int GL_CULL_FACE_MODE = 2885; // 0xb45
-    field public static final int GL_CURRENT_PROGRAM = 35725; // 0x8b8d
-    field public static final int GL_CURRENT_VERTEX_ATTRIB = 34342; // 0x8626
-    field public static final int GL_CW = 2304; // 0x900
-    field public static final int GL_DECR = 7683; // 0x1e03
-    field public static final int GL_DECR_WRAP = 34056; // 0x8508
-    field public static final int GL_DELETE_STATUS = 35712; // 0x8b80
-    field public static final int GL_DEPTH_ATTACHMENT = 36096; // 0x8d00
-    field public static final int GL_DEPTH_BITS = 3414; // 0xd56
-    field public static final int GL_DEPTH_BUFFER_BIT = 256; // 0x100
-    field public static final int GL_DEPTH_CLEAR_VALUE = 2931; // 0xb73
-    field public static final int GL_DEPTH_COMPONENT = 6402; // 0x1902
-    field public static final int GL_DEPTH_COMPONENT16 = 33189; // 0x81a5
-    field public static final int GL_DEPTH_FUNC = 2932; // 0xb74
-    field public static final int GL_DEPTH_RANGE = 2928; // 0xb70
-    field public static final int GL_DEPTH_TEST = 2929; // 0xb71
-    field public static final int GL_DEPTH_WRITEMASK = 2930; // 0xb72
-    field public static final int GL_DITHER = 3024; // 0xbd0
-    field public static final int GL_DONT_CARE = 4352; // 0x1100
-    field public static final int GL_DST_ALPHA = 772; // 0x304
-    field public static final int GL_DST_COLOR = 774; // 0x306
-    field public static final int GL_DYNAMIC_DRAW = 35048; // 0x88e8
-    field public static final int GL_ELEMENT_ARRAY_BUFFER = 34963; // 0x8893
-    field public static final int GL_ELEMENT_ARRAY_BUFFER_BINDING = 34965; // 0x8895
-    field public static final int GL_EQUAL = 514; // 0x202
-    field public static final int GL_EXTENSIONS = 7939; // 0x1f03
-    field public static final int GL_FALSE = 0; // 0x0
-    field public static final int GL_FASTEST = 4353; // 0x1101
-    field public static final int GL_FIXED = 5132; // 0x140c
-    field public static final int GL_FLOAT = 5126; // 0x1406
-    field public static final int GL_FLOAT_MAT2 = 35674; // 0x8b5a
-    field public static final int GL_FLOAT_MAT3 = 35675; // 0x8b5b
-    field public static final int GL_FLOAT_MAT4 = 35676; // 0x8b5c
-    field public static final int GL_FLOAT_VEC2 = 35664; // 0x8b50
-    field public static final int GL_FLOAT_VEC3 = 35665; // 0x8b51
-    field public static final int GL_FLOAT_VEC4 = 35666; // 0x8b52
-    field public static final int GL_FRAGMENT_SHADER = 35632; // 0x8b30
-    field public static final int GL_FRAMEBUFFER = 36160; // 0x8d40
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 36049; // 0x8cd1
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 36048; // 0x8cd0
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 36051; // 0x8cd3
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 36050; // 0x8cd2
-    field public static final int GL_FRAMEBUFFER_BINDING = 36006; // 0x8ca6
-    field public static final int GL_FRAMEBUFFER_COMPLETE = 36053; // 0x8cd5
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 36054; // 0x8cd6
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 36057; // 0x8cd9
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 36055; // 0x8cd7
-    field public static final int GL_FRAMEBUFFER_UNSUPPORTED = 36061; // 0x8cdd
-    field public static final int GL_FRONT = 1028; // 0x404
-    field public static final int GL_FRONT_AND_BACK = 1032; // 0x408
-    field public static final int GL_FRONT_FACE = 2886; // 0xb46
-    field public static final int GL_FUNC_ADD = 32774; // 0x8006
-    field public static final int GL_FUNC_REVERSE_SUBTRACT = 32779; // 0x800b
-    field public static final int GL_FUNC_SUBTRACT = 32778; // 0x800a
-    field public static final int GL_GENERATE_MIPMAP_HINT = 33170; // 0x8192
-    field public static final int GL_GEQUAL = 518; // 0x206
-    field public static final int GL_GREATER = 516; // 0x204
-    field public static final int GL_GREEN_BITS = 3411; // 0xd53
-    field public static final int GL_HIGH_FLOAT = 36338; // 0x8df2
-    field public static final int GL_HIGH_INT = 36341; // 0x8df5
-    field public static final int GL_IMPLEMENTATION_COLOR_READ_FORMAT = 35739; // 0x8b9b
-    field public static final int GL_IMPLEMENTATION_COLOR_READ_TYPE = 35738; // 0x8b9a
-    field public static final int GL_INCR = 7682; // 0x1e02
-    field public static final int GL_INCR_WRAP = 34055; // 0x8507
-    field public static final int GL_INFO_LOG_LENGTH = 35716; // 0x8b84
-    field public static final int GL_INT = 5124; // 0x1404
-    field public static final int GL_INT_VEC2 = 35667; // 0x8b53
-    field public static final int GL_INT_VEC3 = 35668; // 0x8b54
-    field public static final int GL_INT_VEC4 = 35669; // 0x8b55
-    field public static final int GL_INVALID_ENUM = 1280; // 0x500
-    field public static final int GL_INVALID_FRAMEBUFFER_OPERATION = 1286; // 0x506
-    field public static final int GL_INVALID_OPERATION = 1282; // 0x502
-    field public static final int GL_INVALID_VALUE = 1281; // 0x501
-    field public static final int GL_INVERT = 5386; // 0x150a
-    field public static final int GL_KEEP = 7680; // 0x1e00
-    field public static final int GL_LEQUAL = 515; // 0x203
-    field public static final int GL_LESS = 513; // 0x201
-    field public static final int GL_LINEAR = 9729; // 0x2601
-    field public static final int GL_LINEAR_MIPMAP_LINEAR = 9987; // 0x2703
-    field public static final int GL_LINEAR_MIPMAP_NEAREST = 9985; // 0x2701
-    field public static final int GL_LINES = 1; // 0x1
-    field public static final int GL_LINE_LOOP = 2; // 0x2
-    field public static final int GL_LINE_STRIP = 3; // 0x3
-    field public static final int GL_LINE_WIDTH = 2849; // 0xb21
-    field public static final int GL_LINK_STATUS = 35714; // 0x8b82
-    field public static final int GL_LOW_FLOAT = 36336; // 0x8df0
-    field public static final int GL_LOW_INT = 36339; // 0x8df3
-    field public static final int GL_LUMINANCE = 6409; // 0x1909
-    field public static final int GL_LUMINANCE_ALPHA = 6410; // 0x190a
-    field public static final int GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 35661; // 0x8b4d
-    field public static final int GL_MAX_CUBE_MAP_TEXTURE_SIZE = 34076; // 0x851c
-    field public static final int GL_MAX_FRAGMENT_UNIFORM_VECTORS = 36349; // 0x8dfd
-    field public static final int GL_MAX_RENDERBUFFER_SIZE = 34024; // 0x84e8
-    field public static final int GL_MAX_TEXTURE_IMAGE_UNITS = 34930; // 0x8872
-    field public static final int GL_MAX_TEXTURE_SIZE = 3379; // 0xd33
-    field public static final int GL_MAX_VARYING_VECTORS = 36348; // 0x8dfc
-    field public static final int GL_MAX_VERTEX_ATTRIBS = 34921; // 0x8869
-    field public static final int GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 35660; // 0x8b4c
-    field public static final int GL_MAX_VERTEX_UNIFORM_VECTORS = 36347; // 0x8dfb
-    field public static final int GL_MAX_VIEWPORT_DIMS = 3386; // 0xd3a
-    field public static final int GL_MEDIUM_FLOAT = 36337; // 0x8df1
-    field public static final int GL_MEDIUM_INT = 36340; // 0x8df4
-    field public static final int GL_MIRRORED_REPEAT = 33648; // 0x8370
-    field public static final int GL_NEAREST = 9728; // 0x2600
-    field public static final int GL_NEAREST_MIPMAP_LINEAR = 9986; // 0x2702
-    field public static final int GL_NEAREST_MIPMAP_NEAREST = 9984; // 0x2700
-    field public static final int GL_NEVER = 512; // 0x200
-    field public static final int GL_NICEST = 4354; // 0x1102
-    field public static final int GL_NONE = 0; // 0x0
-    field public static final int GL_NOTEQUAL = 517; // 0x205
-    field public static final int GL_NO_ERROR = 0; // 0x0
-    field public static final int GL_NUM_COMPRESSED_TEXTURE_FORMATS = 34466; // 0x86a2
-    field public static final int GL_NUM_SHADER_BINARY_FORMATS = 36345; // 0x8df9
-    field public static final int GL_ONE = 1; // 0x1
-    field public static final int GL_ONE_MINUS_CONSTANT_ALPHA = 32772; // 0x8004
-    field public static final int GL_ONE_MINUS_CONSTANT_COLOR = 32770; // 0x8002
-    field public static final int GL_ONE_MINUS_DST_ALPHA = 773; // 0x305
-    field public static final int GL_ONE_MINUS_DST_COLOR = 775; // 0x307
-    field public static final int GL_ONE_MINUS_SRC_ALPHA = 771; // 0x303
-    field public static final int GL_ONE_MINUS_SRC_COLOR = 769; // 0x301
-    field public static final int GL_OUT_OF_MEMORY = 1285; // 0x505
-    field public static final int GL_PACK_ALIGNMENT = 3333; // 0xd05
-    field public static final int GL_POINTS = 0; // 0x0
-    field public static final int GL_POLYGON_OFFSET_FACTOR = 32824; // 0x8038
-    field public static final int GL_POLYGON_OFFSET_FILL = 32823; // 0x8037
-    field public static final int GL_POLYGON_OFFSET_UNITS = 10752; // 0x2a00
-    field public static final int GL_RED_BITS = 3410; // 0xd52
-    field public static final int GL_RENDERBUFFER = 36161; // 0x8d41
-    field public static final int GL_RENDERBUFFER_ALPHA_SIZE = 36179; // 0x8d53
-    field public static final int GL_RENDERBUFFER_BINDING = 36007; // 0x8ca7
-    field public static final int GL_RENDERBUFFER_BLUE_SIZE = 36178; // 0x8d52
-    field public static final int GL_RENDERBUFFER_DEPTH_SIZE = 36180; // 0x8d54
-    field public static final int GL_RENDERBUFFER_GREEN_SIZE = 36177; // 0x8d51
-    field public static final int GL_RENDERBUFFER_HEIGHT = 36163; // 0x8d43
-    field public static final int GL_RENDERBUFFER_INTERNAL_FORMAT = 36164; // 0x8d44
-    field public static final int GL_RENDERBUFFER_RED_SIZE = 36176; // 0x8d50
-    field public static final int GL_RENDERBUFFER_STENCIL_SIZE = 36181; // 0x8d55
-    field public static final int GL_RENDERBUFFER_WIDTH = 36162; // 0x8d42
-    field public static final int GL_RENDERER = 7937; // 0x1f01
-    field public static final int GL_REPEAT = 10497; // 0x2901
-    field public static final int GL_REPLACE = 7681; // 0x1e01
-    field public static final int GL_RGB = 6407; // 0x1907
-    field public static final int GL_RGB565 = 36194; // 0x8d62
-    field public static final int GL_RGB5_A1 = 32855; // 0x8057
-    field public static final int GL_RGBA = 6408; // 0x1908
-    field public static final int GL_RGBA4 = 32854; // 0x8056
-    field public static final int GL_SAMPLER_2D = 35678; // 0x8b5e
-    field public static final int GL_SAMPLER_CUBE = 35680; // 0x8b60
-    field public static final int GL_SAMPLES = 32937; // 0x80a9
-    field public static final int GL_SAMPLE_ALPHA_TO_COVERAGE = 32926; // 0x809e
-    field public static final int GL_SAMPLE_BUFFERS = 32936; // 0x80a8
-    field public static final int GL_SAMPLE_COVERAGE = 32928; // 0x80a0
-    field public static final int GL_SAMPLE_COVERAGE_INVERT = 32939; // 0x80ab
-    field public static final int GL_SAMPLE_COVERAGE_VALUE = 32938; // 0x80aa
-    field public static final int GL_SCISSOR_BOX = 3088; // 0xc10
-    field public static final int GL_SCISSOR_TEST = 3089; // 0xc11
-    field public static final int GL_SHADER_BINARY_FORMATS = 36344; // 0x8df8
-    field public static final int GL_SHADER_COMPILER = 36346; // 0x8dfa
-    field public static final int GL_SHADER_SOURCE_LENGTH = 35720; // 0x8b88
-    field public static final int GL_SHADER_TYPE = 35663; // 0x8b4f
-    field public static final int GL_SHADING_LANGUAGE_VERSION = 35724; // 0x8b8c
-    field public static final int GL_SHORT = 5122; // 0x1402
-    field public static final int GL_SRC_ALPHA = 770; // 0x302
-    field public static final int GL_SRC_ALPHA_SATURATE = 776; // 0x308
-    field public static final int GL_SRC_COLOR = 768; // 0x300
-    field public static final int GL_STATIC_DRAW = 35044; // 0x88e4
-    field public static final int GL_STENCIL_ATTACHMENT = 36128; // 0x8d20
-    field public static final int GL_STENCIL_BACK_FAIL = 34817; // 0x8801
-    field public static final int GL_STENCIL_BACK_FUNC = 34816; // 0x8800
-    field public static final int GL_STENCIL_BACK_PASS_DEPTH_FAIL = 34818; // 0x8802
-    field public static final int GL_STENCIL_BACK_PASS_DEPTH_PASS = 34819; // 0x8803
-    field public static final int GL_STENCIL_BACK_REF = 36003; // 0x8ca3
-    field public static final int GL_STENCIL_BACK_VALUE_MASK = 36004; // 0x8ca4
-    field public static final int GL_STENCIL_BACK_WRITEMASK = 36005; // 0x8ca5
-    field public static final int GL_STENCIL_BITS = 3415; // 0xd57
-    field public static final int GL_STENCIL_BUFFER_BIT = 1024; // 0x400
-    field public static final int GL_STENCIL_CLEAR_VALUE = 2961; // 0xb91
-    field public static final int GL_STENCIL_FAIL = 2964; // 0xb94
-    field public static final int GL_STENCIL_FUNC = 2962; // 0xb92
-    field @Deprecated public static final int GL_STENCIL_INDEX = 6401; // 0x1901
-    field public static final int GL_STENCIL_INDEX8 = 36168; // 0x8d48
-    field public static final int GL_STENCIL_PASS_DEPTH_FAIL = 2965; // 0xb95
-    field public static final int GL_STENCIL_PASS_DEPTH_PASS = 2966; // 0xb96
-    field public static final int GL_STENCIL_REF = 2967; // 0xb97
-    field public static final int GL_STENCIL_TEST = 2960; // 0xb90
-    field public static final int GL_STENCIL_VALUE_MASK = 2963; // 0xb93
-    field public static final int GL_STENCIL_WRITEMASK = 2968; // 0xb98
-    field public static final int GL_STREAM_DRAW = 35040; // 0x88e0
-    field public static final int GL_SUBPIXEL_BITS = 3408; // 0xd50
-    field public static final int GL_TEXTURE = 5890; // 0x1702
-    field public static final int GL_TEXTURE0 = 33984; // 0x84c0
-    field public static final int GL_TEXTURE1 = 33985; // 0x84c1
-    field public static final int GL_TEXTURE10 = 33994; // 0x84ca
-    field public static final int GL_TEXTURE11 = 33995; // 0x84cb
-    field public static final int GL_TEXTURE12 = 33996; // 0x84cc
-    field public static final int GL_TEXTURE13 = 33997; // 0x84cd
-    field public static final int GL_TEXTURE14 = 33998; // 0x84ce
-    field public static final int GL_TEXTURE15 = 33999; // 0x84cf
-    field public static final int GL_TEXTURE16 = 34000; // 0x84d0
-    field public static final int GL_TEXTURE17 = 34001; // 0x84d1
-    field public static final int GL_TEXTURE18 = 34002; // 0x84d2
-    field public static final int GL_TEXTURE19 = 34003; // 0x84d3
-    field public static final int GL_TEXTURE2 = 33986; // 0x84c2
-    field public static final int GL_TEXTURE20 = 34004; // 0x84d4
-    field public static final int GL_TEXTURE21 = 34005; // 0x84d5
-    field public static final int GL_TEXTURE22 = 34006; // 0x84d6
-    field public static final int GL_TEXTURE23 = 34007; // 0x84d7
-    field public static final int GL_TEXTURE24 = 34008; // 0x84d8
-    field public static final int GL_TEXTURE25 = 34009; // 0x84d9
-    field public static final int GL_TEXTURE26 = 34010; // 0x84da
-    field public static final int GL_TEXTURE27 = 34011; // 0x84db
-    field public static final int GL_TEXTURE28 = 34012; // 0x84dc
-    field public static final int GL_TEXTURE29 = 34013; // 0x84dd
-    field public static final int GL_TEXTURE3 = 33987; // 0x84c3
-    field public static final int GL_TEXTURE30 = 34014; // 0x84de
-    field public static final int GL_TEXTURE31 = 34015; // 0x84df
-    field public static final int GL_TEXTURE4 = 33988; // 0x84c4
-    field public static final int GL_TEXTURE5 = 33989; // 0x84c5
-    field public static final int GL_TEXTURE6 = 33990; // 0x84c6
-    field public static final int GL_TEXTURE7 = 33991; // 0x84c7
-    field public static final int GL_TEXTURE8 = 33992; // 0x84c8
-    field public static final int GL_TEXTURE9 = 33993; // 0x84c9
-    field public static final int GL_TEXTURE_2D = 3553; // 0xde1
-    field public static final int GL_TEXTURE_BINDING_2D = 32873; // 0x8069
-    field public static final int GL_TEXTURE_BINDING_CUBE_MAP = 34068; // 0x8514
-    field public static final int GL_TEXTURE_CUBE_MAP = 34067; // 0x8513
-    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 34070; // 0x8516
-    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072; // 0x8518
-    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074; // 0x851a
-    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_X = 34069; // 0x8515
-    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 34071; // 0x8517
-    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 34073; // 0x8519
-    field public static final int GL_TEXTURE_MAG_FILTER = 10240; // 0x2800
-    field public static final int GL_TEXTURE_MIN_FILTER = 10241; // 0x2801
-    field public static final int GL_TEXTURE_WRAP_S = 10242; // 0x2802
-    field public static final int GL_TEXTURE_WRAP_T = 10243; // 0x2803
-    field public static final int GL_TRIANGLES = 4; // 0x4
-    field public static final int GL_TRIANGLE_FAN = 6; // 0x6
-    field public static final int GL_TRIANGLE_STRIP = 5; // 0x5
-    field public static final int GL_TRUE = 1; // 0x1
-    field public static final int GL_UNPACK_ALIGNMENT = 3317; // 0xcf5
-    field public static final int GL_UNSIGNED_BYTE = 5121; // 0x1401
-    field public static final int GL_UNSIGNED_INT = 5125; // 0x1405
-    field public static final int GL_UNSIGNED_SHORT = 5123; // 0x1403
-    field public static final int GL_UNSIGNED_SHORT_4_4_4_4 = 32819; // 0x8033
-    field public static final int GL_UNSIGNED_SHORT_5_5_5_1 = 32820; // 0x8034
-    field public static final int GL_UNSIGNED_SHORT_5_6_5 = 33635; // 0x8363
-    field public static final int GL_VALIDATE_STATUS = 35715; // 0x8b83
-    field public static final int GL_VENDOR = 7936; // 0x1f00
-    field public static final int GL_VERSION = 7938; // 0x1f02
-    field public static final int GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 34975; // 0x889f
-    field public static final int GL_VERTEX_ATTRIB_ARRAY_ENABLED = 34338; // 0x8622
-    field public static final int GL_VERTEX_ATTRIB_ARRAY_NORMALIZED = 34922; // 0x886a
-    field public static final int GL_VERTEX_ATTRIB_ARRAY_POINTER = 34373; // 0x8645
-    field public static final int GL_VERTEX_ATTRIB_ARRAY_SIZE = 34339; // 0x8623
-    field public static final int GL_VERTEX_ATTRIB_ARRAY_STRIDE = 34340; // 0x8624
-    field public static final int GL_VERTEX_ATTRIB_ARRAY_TYPE = 34341; // 0x8625
-    field public static final int GL_VERTEX_SHADER = 35633; // 0x8b31
-    field public static final int GL_VIEWPORT = 2978; // 0xba2
-    field public static final int GL_ZERO = 0; // 0x0
-  }
-
-  public class GLES30 extends android.opengl.GLES20 {
-    ctor public GLES30();
-    method public static void glBeginQuery(int, int);
-    method public static void glBeginTransformFeedback(int);
-    method public static void glBindBufferBase(int, int, int);
-    method public static void glBindBufferRange(int, int, int, int, int);
-    method public static void glBindSampler(int, int);
-    method public static void glBindTransformFeedback(int, int);
-    method public static void glBindVertexArray(int);
-    method public static void glBlitFramebuffer(int, int, int, int, int, int, int, int, int, int);
-    method public static void glClearBufferfi(int, int, float, int);
-    method public static void glClearBufferfv(int, int, float[], int);
-    method public static void glClearBufferfv(int, int, java.nio.FloatBuffer);
-    method public static void glClearBufferiv(int, int, int[], int);
-    method public static void glClearBufferiv(int, int, java.nio.IntBuffer);
-    method public static void glClearBufferuiv(int, int, int[], int);
-    method public static void glClearBufferuiv(int, int, java.nio.IntBuffer);
-    method public static int glClientWaitSync(long, int, long);
-    method public static void glCompressedTexImage3D(int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glCompressedTexImage3D(int, int, int, int, int, int, int, int, int);
-    method public static void glCompressedTexSubImage3D(int, int, int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glCompressedTexSubImage3D(int, int, int, int, int, int, int, int, int, int, int);
-    method public static void glCopyBufferSubData(int, int, int, int, int);
-    method public static void glCopyTexSubImage3D(int, int, int, int, int, int, int, int, int);
-    method public static void glDeleteQueries(int, int[], int);
-    method public static void glDeleteQueries(int, java.nio.IntBuffer);
-    method public static void glDeleteSamplers(int, int[], int);
-    method public static void glDeleteSamplers(int, java.nio.IntBuffer);
-    method public static void glDeleteSync(long);
-    method public static void glDeleteTransformFeedbacks(int, int[], int);
-    method public static void glDeleteTransformFeedbacks(int, java.nio.IntBuffer);
-    method public static void glDeleteVertexArrays(int, int[], int);
-    method public static void glDeleteVertexArrays(int, java.nio.IntBuffer);
-    method public static void glDrawArraysInstanced(int, int, int, int);
-    method public static void glDrawBuffers(int, int[], int);
-    method public static void glDrawBuffers(int, java.nio.IntBuffer);
-    method public static void glDrawElementsInstanced(int, int, int, java.nio.Buffer, int);
-    method public static void glDrawElementsInstanced(int, int, int, int, int);
-    method public static void glDrawRangeElements(int, int, int, int, int, java.nio.Buffer);
-    method public static void glDrawRangeElements(int, int, int, int, int, int);
-    method public static void glEndQuery(int);
-    method public static void glEndTransformFeedback();
-    method public static long glFenceSync(int, int);
-    method public static void glFlushMappedBufferRange(int, int, int);
-    method public static void glFramebufferTextureLayer(int, int, int, int, int);
-    method public static void glGenQueries(int, int[], int);
-    method public static void glGenQueries(int, java.nio.IntBuffer);
-    method public static void glGenSamplers(int, int[], int);
-    method public static void glGenSamplers(int, java.nio.IntBuffer);
-    method public static void glGenTransformFeedbacks(int, int[], int);
-    method public static void glGenTransformFeedbacks(int, java.nio.IntBuffer);
-    method public static void glGenVertexArrays(int, int[], int);
-    method public static void glGenVertexArrays(int, java.nio.IntBuffer);
-    method public static void glGetActiveUniformBlockName(int, int, int, int[], int, byte[], int);
-    method public static void glGetActiveUniformBlockName(int, int, java.nio.Buffer, java.nio.Buffer);
-    method public static String glGetActiveUniformBlockName(int, int);
-    method public static void glGetActiveUniformBlockiv(int, int, int, int[], int);
-    method public static void glGetActiveUniformBlockiv(int, int, int, java.nio.IntBuffer);
-    method public static void glGetActiveUniformsiv(int, int, int[], int, int, int[], int);
-    method public static void glGetActiveUniformsiv(int, int, java.nio.IntBuffer, int, java.nio.IntBuffer);
-    method public static void glGetBufferParameteri64v(int, int, long[], int);
-    method public static void glGetBufferParameteri64v(int, int, java.nio.LongBuffer);
-    method public static java.nio.Buffer glGetBufferPointerv(int, int);
-    method public static int glGetFragDataLocation(int, String);
-    method public static void glGetInteger64i_v(int, int, long[], int);
-    method public static void glGetInteger64i_v(int, int, java.nio.LongBuffer);
-    method public static void glGetInteger64v(int, long[], int);
-    method public static void glGetInteger64v(int, java.nio.LongBuffer);
-    method public static void glGetIntegeri_v(int, int, int[], int);
-    method public static void glGetIntegeri_v(int, int, java.nio.IntBuffer);
-    method public static void glGetInternalformativ(int, int, int, int, int[], int);
-    method public static void glGetInternalformativ(int, int, int, int, java.nio.IntBuffer);
-    method public static void glGetProgramBinary(int, int, int[], int, int[], int, java.nio.Buffer);
-    method public static void glGetProgramBinary(int, int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.Buffer);
-    method public static void glGetQueryObjectuiv(int, int, int[], int);
-    method public static void glGetQueryObjectuiv(int, int, java.nio.IntBuffer);
-    method public static void glGetQueryiv(int, int, int[], int);
-    method public static void glGetQueryiv(int, int, java.nio.IntBuffer);
-    method public static void glGetSamplerParameterfv(int, int, float[], int);
-    method public static void glGetSamplerParameterfv(int, int, java.nio.FloatBuffer);
-    method public static void glGetSamplerParameteriv(int, int, int[], int);
-    method public static void glGetSamplerParameteriv(int, int, java.nio.IntBuffer);
-    method public static String glGetStringi(int, int);
-    method public static void glGetSynciv(long, int, int, int[], int, int[], int);
-    method public static void glGetSynciv(long, int, int, java.nio.IntBuffer, java.nio.IntBuffer);
-    method public static void glGetTransformFeedbackVarying(int, int, int, int[], int, int[], int, int[], int, byte[], int);
-    method @Deprecated public static void glGetTransformFeedbackVarying(int, int, int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, byte);
-    method public static void glGetTransformFeedbackVarying(int, int, int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.ByteBuffer);
-    method public static String glGetTransformFeedbackVarying(int, int, int[], int, int[], int);
-    method public static String glGetTransformFeedbackVarying(int, int, java.nio.IntBuffer, java.nio.IntBuffer);
-    method public static int glGetUniformBlockIndex(int, String);
-    method public static void glGetUniformIndices(int, String[], int[], int);
-    method public static void glGetUniformIndices(int, String[], java.nio.IntBuffer);
-    method public static void glGetUniformuiv(int, int, int[], int);
-    method public static void glGetUniformuiv(int, int, java.nio.IntBuffer);
-    method public static void glGetVertexAttribIiv(int, int, int[], int);
-    method public static void glGetVertexAttribIiv(int, int, java.nio.IntBuffer);
-    method public static void glGetVertexAttribIuiv(int, int, int[], int);
-    method public static void glGetVertexAttribIuiv(int, int, java.nio.IntBuffer);
-    method public static void glInvalidateFramebuffer(int, int, int[], int);
-    method public static void glInvalidateFramebuffer(int, int, java.nio.IntBuffer);
-    method public static void glInvalidateSubFramebuffer(int, int, int[], int, int, int, int, int);
-    method public static void glInvalidateSubFramebuffer(int, int, java.nio.IntBuffer, int, int, int, int);
-    method public static boolean glIsQuery(int);
-    method public static boolean glIsSampler(int);
-    method public static boolean glIsSync(long);
-    method public static boolean glIsTransformFeedback(int);
-    method public static boolean glIsVertexArray(int);
-    method public static java.nio.Buffer glMapBufferRange(int, int, int, int);
-    method public static void glPauseTransformFeedback();
-    method public static void glProgramBinary(int, int, java.nio.Buffer, int);
-    method public static void glProgramParameteri(int, int, int);
-    method public static void glReadBuffer(int);
-    method public static void glReadPixels(int, int, int, int, int, int, int);
-    method public static void glRenderbufferStorageMultisample(int, int, int, int, int);
-    method public static void glResumeTransformFeedback();
-    method public static void glSamplerParameterf(int, int, float);
-    method public static void glSamplerParameterfv(int, int, float[], int);
-    method public static void glSamplerParameterfv(int, int, java.nio.FloatBuffer);
-    method public static void glSamplerParameteri(int, int, int);
-    method public static void glSamplerParameteriv(int, int, int[], int);
-    method public static void glSamplerParameteriv(int, int, java.nio.IntBuffer);
-    method public static void glTexImage3D(int, int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glTexImage3D(int, int, int, int, int, int, int, int, int, int);
-    method public static void glTexStorage2D(int, int, int, int, int);
-    method public static void glTexStorage3D(int, int, int, int, int, int);
-    method public static void glTexSubImage3D(int, int, int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glTexSubImage3D(int, int, int, int, int, int, int, int, int, int, int);
-    method public static void glTransformFeedbackVaryings(int, String[], int);
-    method public static void glUniform1ui(int, int);
-    method public static void glUniform1uiv(int, int, int[], int);
-    method public static void glUniform1uiv(int, int, java.nio.IntBuffer);
-    method public static void glUniform2ui(int, int, int);
-    method public static void glUniform2uiv(int, int, int[], int);
-    method public static void glUniform2uiv(int, int, java.nio.IntBuffer);
-    method public static void glUniform3ui(int, int, int, int);
-    method public static void glUniform3uiv(int, int, int[], int);
-    method public static void glUniform3uiv(int, int, java.nio.IntBuffer);
-    method public static void glUniform4ui(int, int, int, int, int);
-    method public static void glUniform4uiv(int, int, int[], int);
-    method public static void glUniform4uiv(int, int, java.nio.IntBuffer);
-    method public static void glUniformBlockBinding(int, int, int);
-    method public static void glUniformMatrix2x3fv(int, int, boolean, float[], int);
-    method public static void glUniformMatrix2x3fv(int, int, boolean, java.nio.FloatBuffer);
-    method public static void glUniformMatrix2x4fv(int, int, boolean, float[], int);
-    method public static void glUniformMatrix2x4fv(int, int, boolean, java.nio.FloatBuffer);
-    method public static void glUniformMatrix3x2fv(int, int, boolean, float[], int);
-    method public static void glUniformMatrix3x2fv(int, int, boolean, java.nio.FloatBuffer);
-    method public static void glUniformMatrix3x4fv(int, int, boolean, float[], int);
-    method public static void glUniformMatrix3x4fv(int, int, boolean, java.nio.FloatBuffer);
-    method public static void glUniformMatrix4x2fv(int, int, boolean, float[], int);
-    method public static void glUniformMatrix4x2fv(int, int, boolean, java.nio.FloatBuffer);
-    method public static void glUniformMatrix4x3fv(int, int, boolean, float[], int);
-    method public static void glUniformMatrix4x3fv(int, int, boolean, java.nio.FloatBuffer);
-    method public static boolean glUnmapBuffer(int);
-    method public static void glVertexAttribDivisor(int, int);
-    method public static void glVertexAttribI4i(int, int, int, int, int);
-    method public static void glVertexAttribI4iv(int, int[], int);
-    method public static void glVertexAttribI4iv(int, java.nio.IntBuffer);
-    method public static void glVertexAttribI4ui(int, int, int, int, int);
-    method public static void glVertexAttribI4uiv(int, int[], int);
-    method public static void glVertexAttribI4uiv(int, java.nio.IntBuffer);
-    method public static void glVertexAttribIPointer(int, int, int, int, java.nio.Buffer);
-    method public static void glVertexAttribIPointer(int, int, int, int, int);
-    method public static void glWaitSync(long, int, long);
-    field public static final int GL_ACTIVE_UNIFORM_BLOCKS = 35382; // 0x8a36
-    field public static final int GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = 35381; // 0x8a35
-    field public static final int GL_ALREADY_SIGNALED = 37146; // 0x911a
-    field public static final int GL_ANY_SAMPLES_PASSED = 35887; // 0x8c2f
-    field public static final int GL_ANY_SAMPLES_PASSED_CONSERVATIVE = 36202; // 0x8d6a
-    field public static final int GL_BLUE = 6405; // 0x1905
-    field public static final int GL_BUFFER_ACCESS_FLAGS = 37151; // 0x911f
-    field public static final int GL_BUFFER_MAPPED = 35004; // 0x88bc
-    field public static final int GL_BUFFER_MAP_LENGTH = 37152; // 0x9120
-    field public static final int GL_BUFFER_MAP_OFFSET = 37153; // 0x9121
-    field public static final int GL_BUFFER_MAP_POINTER = 35005; // 0x88bd
-    field public static final int GL_COLOR = 6144; // 0x1800
-    field public static final int GL_COLOR_ATTACHMENT1 = 36065; // 0x8ce1
-    field public static final int GL_COLOR_ATTACHMENT10 = 36074; // 0x8cea
-    field public static final int GL_COLOR_ATTACHMENT11 = 36075; // 0x8ceb
-    field public static final int GL_COLOR_ATTACHMENT12 = 36076; // 0x8cec
-    field public static final int GL_COLOR_ATTACHMENT13 = 36077; // 0x8ced
-    field public static final int GL_COLOR_ATTACHMENT14 = 36078; // 0x8cee
-    field public static final int GL_COLOR_ATTACHMENT15 = 36079; // 0x8cef
-    field public static final int GL_COLOR_ATTACHMENT2 = 36066; // 0x8ce2
-    field public static final int GL_COLOR_ATTACHMENT3 = 36067; // 0x8ce3
-    field public static final int GL_COLOR_ATTACHMENT4 = 36068; // 0x8ce4
-    field public static final int GL_COLOR_ATTACHMENT5 = 36069; // 0x8ce5
-    field public static final int GL_COLOR_ATTACHMENT6 = 36070; // 0x8ce6
-    field public static final int GL_COLOR_ATTACHMENT7 = 36071; // 0x8ce7
-    field public static final int GL_COLOR_ATTACHMENT8 = 36072; // 0x8ce8
-    field public static final int GL_COLOR_ATTACHMENT9 = 36073; // 0x8ce9
-    field public static final int GL_COMPARE_REF_TO_TEXTURE = 34894; // 0x884e
-    field public static final int GL_COMPRESSED_R11_EAC = 37488; // 0x9270
-    field public static final int GL_COMPRESSED_RG11_EAC = 37490; // 0x9272
-    field public static final int GL_COMPRESSED_RGB8_ETC2 = 37492; // 0x9274
-    field public static final int GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37494; // 0x9276
-    field public static final int GL_COMPRESSED_RGBA8_ETC2_EAC = 37496; // 0x9278
-    field public static final int GL_COMPRESSED_SIGNED_R11_EAC = 37489; // 0x9271
-    field public static final int GL_COMPRESSED_SIGNED_RG11_EAC = 37491; // 0x9273
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 37497; // 0x9279
-    field public static final int GL_COMPRESSED_SRGB8_ETC2 = 37493; // 0x9275
-    field public static final int GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37495; // 0x9277
-    field public static final int GL_CONDITION_SATISFIED = 37148; // 0x911c
-    field public static final int GL_COPY_READ_BUFFER = 36662; // 0x8f36
-    field public static final int GL_COPY_READ_BUFFER_BINDING = 36662; // 0x8f36
-    field public static final int GL_COPY_WRITE_BUFFER = 36663; // 0x8f37
-    field public static final int GL_COPY_WRITE_BUFFER_BINDING = 36663; // 0x8f37
-    field public static final int GL_CURRENT_QUERY = 34917; // 0x8865
-    field public static final int GL_DEPTH = 6145; // 0x1801
-    field public static final int GL_DEPTH24_STENCIL8 = 35056; // 0x88f0
-    field public static final int GL_DEPTH32F_STENCIL8 = 36013; // 0x8cad
-    field public static final int GL_DEPTH_COMPONENT24 = 33190; // 0x81a6
-    field public static final int GL_DEPTH_COMPONENT32F = 36012; // 0x8cac
-    field public static final int GL_DEPTH_STENCIL = 34041; // 0x84f9
-    field public static final int GL_DEPTH_STENCIL_ATTACHMENT = 33306; // 0x821a
-    field public static final int GL_DRAW_BUFFER0 = 34853; // 0x8825
-    field public static final int GL_DRAW_BUFFER1 = 34854; // 0x8826
-    field public static final int GL_DRAW_BUFFER10 = 34863; // 0x882f
-    field public static final int GL_DRAW_BUFFER11 = 34864; // 0x8830
-    field public static final int GL_DRAW_BUFFER12 = 34865; // 0x8831
-    field public static final int GL_DRAW_BUFFER13 = 34866; // 0x8832
-    field public static final int GL_DRAW_BUFFER14 = 34867; // 0x8833
-    field public static final int GL_DRAW_BUFFER15 = 34868; // 0x8834
-    field public static final int GL_DRAW_BUFFER2 = 34855; // 0x8827
-    field public static final int GL_DRAW_BUFFER3 = 34856; // 0x8828
-    field public static final int GL_DRAW_BUFFER4 = 34857; // 0x8829
-    field public static final int GL_DRAW_BUFFER5 = 34858; // 0x882a
-    field public static final int GL_DRAW_BUFFER6 = 34859; // 0x882b
-    field public static final int GL_DRAW_BUFFER7 = 34860; // 0x882c
-    field public static final int GL_DRAW_BUFFER8 = 34861; // 0x882d
-    field public static final int GL_DRAW_BUFFER9 = 34862; // 0x882e
-    field public static final int GL_DRAW_FRAMEBUFFER = 36009; // 0x8ca9
-    field public static final int GL_DRAW_FRAMEBUFFER_BINDING = 36006; // 0x8ca6
-    field public static final int GL_DYNAMIC_COPY = 35050; // 0x88ea
-    field public static final int GL_DYNAMIC_READ = 35049; // 0x88e9
-    field public static final int GL_FLOAT_32_UNSIGNED_INT_24_8_REV = 36269; // 0x8dad
-    field public static final int GL_FLOAT_MAT2x3 = 35685; // 0x8b65
-    field public static final int GL_FLOAT_MAT2x4 = 35686; // 0x8b66
-    field public static final int GL_FLOAT_MAT3x2 = 35687; // 0x8b67
-    field public static final int GL_FLOAT_MAT3x4 = 35688; // 0x8b68
-    field public static final int GL_FLOAT_MAT4x2 = 35689; // 0x8b69
-    field public static final int GL_FLOAT_MAT4x3 = 35690; // 0x8b6a
-    field public static final int GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 35723; // 0x8b8b
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 33301; // 0x8215
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 33300; // 0x8214
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 33296; // 0x8210
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 33297; // 0x8211
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 33302; // 0x8216
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 33299; // 0x8213
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE = 33298; // 0x8212
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 33303; // 0x8217
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 36052; // 0x8cd4
-    field public static final int GL_FRAMEBUFFER_DEFAULT = 33304; // 0x8218
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 36182; // 0x8d56
-    field public static final int GL_FRAMEBUFFER_UNDEFINED = 33305; // 0x8219
-    field public static final int GL_GREEN = 6404; // 0x1904
-    field public static final int GL_HALF_FLOAT = 5131; // 0x140b
-    field public static final int GL_INTERLEAVED_ATTRIBS = 35980; // 0x8c8c
-    field public static final int GL_INT_2_10_10_10_REV = 36255; // 0x8d9f
-    field public static final int GL_INT_SAMPLER_2D = 36298; // 0x8dca
-    field public static final int GL_INT_SAMPLER_2D_ARRAY = 36303; // 0x8dcf
-    field public static final int GL_INT_SAMPLER_3D = 36299; // 0x8dcb
-    field public static final int GL_INT_SAMPLER_CUBE = 36300; // 0x8dcc
-    field public static final int GL_INVALID_INDEX = -1; // 0xffffffff
-    field public static final int GL_MAJOR_VERSION = 33307; // 0x821b
-    field public static final int GL_MAP_FLUSH_EXPLICIT_BIT = 16; // 0x10
-    field public static final int GL_MAP_INVALIDATE_BUFFER_BIT = 8; // 0x8
-    field public static final int GL_MAP_INVALIDATE_RANGE_BIT = 4; // 0x4
-    field public static final int GL_MAP_READ_BIT = 1; // 0x1
-    field public static final int GL_MAP_UNSYNCHRONIZED_BIT = 32; // 0x20
-    field public static final int GL_MAP_WRITE_BIT = 2; // 0x2
-    field public static final int GL_MAX = 32776; // 0x8008
-    field public static final int GL_MAX_3D_TEXTURE_SIZE = 32883; // 0x8073
-    field public static final int GL_MAX_ARRAY_TEXTURE_LAYERS = 35071; // 0x88ff
-    field public static final int GL_MAX_COLOR_ATTACHMENTS = 36063; // 0x8cdf
-    field public static final int GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 35379; // 0x8a33
-    field public static final int GL_MAX_COMBINED_UNIFORM_BLOCKS = 35374; // 0x8a2e
-    field public static final int GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 35377; // 0x8a31
-    field public static final int GL_MAX_DRAW_BUFFERS = 34852; // 0x8824
-    field public static final int GL_MAX_ELEMENTS_INDICES = 33001; // 0x80e9
-    field public static final int GL_MAX_ELEMENTS_VERTICES = 33000; // 0x80e8
-    field public static final int GL_MAX_ELEMENT_INDEX = 36203; // 0x8d6b
-    field public static final int GL_MAX_FRAGMENT_INPUT_COMPONENTS = 37157; // 0x9125
-    field public static final int GL_MAX_FRAGMENT_UNIFORM_BLOCKS = 35373; // 0x8a2d
-    field public static final int GL_MAX_FRAGMENT_UNIFORM_COMPONENTS = 35657; // 0x8b49
-    field public static final int GL_MAX_PROGRAM_TEXEL_OFFSET = 35077; // 0x8905
-    field public static final int GL_MAX_SAMPLES = 36183; // 0x8d57
-    field public static final int GL_MAX_SERVER_WAIT_TIMEOUT = 37137; // 0x9111
-    field public static final int GL_MAX_TEXTURE_LOD_BIAS = 34045; // 0x84fd
-    field public static final int GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 35978; // 0x8c8a
-    field public static final int GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 35979; // 0x8c8b
-    field public static final int GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 35968; // 0x8c80
-    field public static final int GL_MAX_UNIFORM_BLOCK_SIZE = 35376; // 0x8a30
-    field public static final int GL_MAX_UNIFORM_BUFFER_BINDINGS = 35375; // 0x8a2f
-    field public static final int GL_MAX_VARYING_COMPONENTS = 35659; // 0x8b4b
-    field public static final int GL_MAX_VERTEX_OUTPUT_COMPONENTS = 37154; // 0x9122
-    field public static final int GL_MAX_VERTEX_UNIFORM_BLOCKS = 35371; // 0x8a2b
-    field public static final int GL_MAX_VERTEX_UNIFORM_COMPONENTS = 35658; // 0x8b4a
-    field public static final int GL_MIN = 32775; // 0x8007
-    field public static final int GL_MINOR_VERSION = 33308; // 0x821c
-    field public static final int GL_MIN_PROGRAM_TEXEL_OFFSET = 35076; // 0x8904
-    field public static final int GL_NUM_EXTENSIONS = 33309; // 0x821d
-    field public static final int GL_NUM_PROGRAM_BINARY_FORMATS = 34814; // 0x87fe
-    field public static final int GL_NUM_SAMPLE_COUNTS = 37760; // 0x9380
-    field public static final int GL_OBJECT_TYPE = 37138; // 0x9112
-    field public static final int GL_PACK_ROW_LENGTH = 3330; // 0xd02
-    field public static final int GL_PACK_SKIP_PIXELS = 3332; // 0xd04
-    field public static final int GL_PACK_SKIP_ROWS = 3331; // 0xd03
-    field public static final int GL_PIXEL_PACK_BUFFER = 35051; // 0x88eb
-    field public static final int GL_PIXEL_PACK_BUFFER_BINDING = 35053; // 0x88ed
-    field public static final int GL_PIXEL_UNPACK_BUFFER = 35052; // 0x88ec
-    field public static final int GL_PIXEL_UNPACK_BUFFER_BINDING = 35055; // 0x88ef
-    field public static final int GL_PRIMITIVE_RESTART_FIXED_INDEX = 36201; // 0x8d69
-    field public static final int GL_PROGRAM_BINARY_FORMATS = 34815; // 0x87ff
-    field public static final int GL_PROGRAM_BINARY_LENGTH = 34625; // 0x8741
-    field public static final int GL_PROGRAM_BINARY_RETRIEVABLE_HINT = 33367; // 0x8257
-    field public static final int GL_QUERY_RESULT = 34918; // 0x8866
-    field public static final int GL_QUERY_RESULT_AVAILABLE = 34919; // 0x8867
-    field public static final int GL_R11F_G11F_B10F = 35898; // 0x8c3a
-    field public static final int GL_R16F = 33325; // 0x822d
-    field public static final int GL_R16I = 33331; // 0x8233
-    field public static final int GL_R16UI = 33332; // 0x8234
-    field public static final int GL_R32F = 33326; // 0x822e
-    field public static final int GL_R32I = 33333; // 0x8235
-    field public static final int GL_R32UI = 33334; // 0x8236
-    field public static final int GL_R8 = 33321; // 0x8229
-    field public static final int GL_R8I = 33329; // 0x8231
-    field public static final int GL_R8UI = 33330; // 0x8232
-    field public static final int GL_R8_SNORM = 36756; // 0x8f94
-    field public static final int GL_RASTERIZER_DISCARD = 35977; // 0x8c89
-    field public static final int GL_READ_BUFFER = 3074; // 0xc02
-    field public static final int GL_READ_FRAMEBUFFER = 36008; // 0x8ca8
-    field public static final int GL_READ_FRAMEBUFFER_BINDING = 36010; // 0x8caa
-    field public static final int GL_RED = 6403; // 0x1903
-    field public static final int GL_RED_INTEGER = 36244; // 0x8d94
-    field public static final int GL_RENDERBUFFER_SAMPLES = 36011; // 0x8cab
-    field public static final int GL_RG = 33319; // 0x8227
-    field public static final int GL_RG16F = 33327; // 0x822f
-    field public static final int GL_RG16I = 33337; // 0x8239
-    field public static final int GL_RG16UI = 33338; // 0x823a
-    field public static final int GL_RG32F = 33328; // 0x8230
-    field public static final int GL_RG32I = 33339; // 0x823b
-    field public static final int GL_RG32UI = 33340; // 0x823c
-    field public static final int GL_RG8 = 33323; // 0x822b
-    field public static final int GL_RG8I = 33335; // 0x8237
-    field public static final int GL_RG8UI = 33336; // 0x8238
-    field public static final int GL_RG8_SNORM = 36757; // 0x8f95
-    field public static final int GL_RGB10_A2 = 32857; // 0x8059
-    field public static final int GL_RGB10_A2UI = 36975; // 0x906f
-    field public static final int GL_RGB16F = 34843; // 0x881b
-    field public static final int GL_RGB16I = 36233; // 0x8d89
-    field public static final int GL_RGB16UI = 36215; // 0x8d77
-    field public static final int GL_RGB32F = 34837; // 0x8815
-    field public static final int GL_RGB32I = 36227; // 0x8d83
-    field public static final int GL_RGB32UI = 36209; // 0x8d71
-    field public static final int GL_RGB8 = 32849; // 0x8051
-    field public static final int GL_RGB8I = 36239; // 0x8d8f
-    field public static final int GL_RGB8UI = 36221; // 0x8d7d
-    field public static final int GL_RGB8_SNORM = 36758; // 0x8f96
-    field public static final int GL_RGB9_E5 = 35901; // 0x8c3d
-    field public static final int GL_RGBA16F = 34842; // 0x881a
-    field public static final int GL_RGBA16I = 36232; // 0x8d88
-    field public static final int GL_RGBA16UI = 36214; // 0x8d76
-    field public static final int GL_RGBA32F = 34836; // 0x8814
-    field public static final int GL_RGBA32I = 36226; // 0x8d82
-    field public static final int GL_RGBA32UI = 36208; // 0x8d70
-    field public static final int GL_RGBA8 = 32856; // 0x8058
-    field public static final int GL_RGBA8I = 36238; // 0x8d8e
-    field public static final int GL_RGBA8UI = 36220; // 0x8d7c
-    field public static final int GL_RGBA8_SNORM = 36759; // 0x8f97
-    field public static final int GL_RGBA_INTEGER = 36249; // 0x8d99
-    field public static final int GL_RGB_INTEGER = 36248; // 0x8d98
-    field public static final int GL_RG_INTEGER = 33320; // 0x8228
-    field public static final int GL_SAMPLER_2D_ARRAY = 36289; // 0x8dc1
-    field public static final int GL_SAMPLER_2D_ARRAY_SHADOW = 36292; // 0x8dc4
-    field public static final int GL_SAMPLER_2D_SHADOW = 35682; // 0x8b62
-    field public static final int GL_SAMPLER_3D = 35679; // 0x8b5f
-    field public static final int GL_SAMPLER_BINDING = 35097; // 0x8919
-    field public static final int GL_SAMPLER_CUBE_SHADOW = 36293; // 0x8dc5
-    field public static final int GL_SEPARATE_ATTRIBS = 35981; // 0x8c8d
-    field public static final int GL_SIGNALED = 37145; // 0x9119
-    field public static final int GL_SIGNED_NORMALIZED = 36764; // 0x8f9c
-    field public static final int GL_SRGB = 35904; // 0x8c40
-    field public static final int GL_SRGB8 = 35905; // 0x8c41
-    field public static final int GL_SRGB8_ALPHA8 = 35907; // 0x8c43
-    field public static final int GL_STATIC_COPY = 35046; // 0x88e6
-    field public static final int GL_STATIC_READ = 35045; // 0x88e5
-    field public static final int GL_STENCIL = 6146; // 0x1802
-    field public static final int GL_STREAM_COPY = 35042; // 0x88e2
-    field public static final int GL_STREAM_READ = 35041; // 0x88e1
-    field public static final int GL_SYNC_CONDITION = 37139; // 0x9113
-    field public static final int GL_SYNC_FENCE = 37142; // 0x9116
-    field public static final int GL_SYNC_FLAGS = 37141; // 0x9115
-    field public static final int GL_SYNC_FLUSH_COMMANDS_BIT = 1; // 0x1
-    field public static final int GL_SYNC_GPU_COMMANDS_COMPLETE = 37143; // 0x9117
-    field public static final int GL_SYNC_STATUS = 37140; // 0x9114
-    field public static final int GL_TEXTURE_2D_ARRAY = 35866; // 0x8c1a
-    field public static final int GL_TEXTURE_3D = 32879; // 0x806f
-    field public static final int GL_TEXTURE_BASE_LEVEL = 33084; // 0x813c
-    field public static final int GL_TEXTURE_BINDING_2D_ARRAY = 35869; // 0x8c1d
-    field public static final int GL_TEXTURE_BINDING_3D = 32874; // 0x806a
-    field public static final int GL_TEXTURE_COMPARE_FUNC = 34893; // 0x884d
-    field public static final int GL_TEXTURE_COMPARE_MODE = 34892; // 0x884c
-    field public static final int GL_TEXTURE_IMMUTABLE_FORMAT = 37167; // 0x912f
-    field public static final int GL_TEXTURE_IMMUTABLE_LEVELS = 33503; // 0x82df
-    field public static final int GL_TEXTURE_MAX_LEVEL = 33085; // 0x813d
-    field public static final int GL_TEXTURE_MAX_LOD = 33083; // 0x813b
-    field public static final int GL_TEXTURE_MIN_LOD = 33082; // 0x813a
-    field public static final int GL_TEXTURE_SWIZZLE_A = 36421; // 0x8e45
-    field public static final int GL_TEXTURE_SWIZZLE_B = 36420; // 0x8e44
-    field public static final int GL_TEXTURE_SWIZZLE_G = 36419; // 0x8e43
-    field public static final int GL_TEXTURE_SWIZZLE_R = 36418; // 0x8e42
-    field public static final int GL_TEXTURE_WRAP_R = 32882; // 0x8072
-    field public static final int GL_TIMEOUT_EXPIRED = 37147; // 0x911b
-    field public static final long GL_TIMEOUT_IGNORED = -1L; // 0xffffffffffffffffL
-    field public static final int GL_TRANSFORM_FEEDBACK = 36386; // 0x8e22
-    field public static final int GL_TRANSFORM_FEEDBACK_ACTIVE = 36388; // 0x8e24
-    field public static final int GL_TRANSFORM_FEEDBACK_BINDING = 36389; // 0x8e25
-    field public static final int GL_TRANSFORM_FEEDBACK_BUFFER = 35982; // 0x8c8e
-    field public static final int GL_TRANSFORM_FEEDBACK_BUFFER_BINDING = 35983; // 0x8c8f
-    field public static final int GL_TRANSFORM_FEEDBACK_BUFFER_MODE = 35967; // 0x8c7f
-    field public static final int GL_TRANSFORM_FEEDBACK_BUFFER_SIZE = 35973; // 0x8c85
-    field public static final int GL_TRANSFORM_FEEDBACK_BUFFER_START = 35972; // 0x8c84
-    field public static final int GL_TRANSFORM_FEEDBACK_PAUSED = 36387; // 0x8e23
-    field public static final int GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 35976; // 0x8c88
-    field public static final int GL_TRANSFORM_FEEDBACK_VARYINGS = 35971; // 0x8c83
-    field public static final int GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = 35958; // 0x8c76
-    field public static final int GL_UNIFORM_ARRAY_STRIDE = 35388; // 0x8a3c
-    field public static final int GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS = 35394; // 0x8a42
-    field public static final int GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 35395; // 0x8a43
-    field public static final int GL_UNIFORM_BLOCK_BINDING = 35391; // 0x8a3f
-    field public static final int GL_UNIFORM_BLOCK_DATA_SIZE = 35392; // 0x8a40
-    field public static final int GL_UNIFORM_BLOCK_INDEX = 35386; // 0x8a3a
-    field public static final int GL_UNIFORM_BLOCK_NAME_LENGTH = 35393; // 0x8a41
-    field public static final int GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 35398; // 0x8a46
-    field public static final int GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 35396; // 0x8a44
-    field public static final int GL_UNIFORM_BUFFER = 35345; // 0x8a11
-    field public static final int GL_UNIFORM_BUFFER_BINDING = 35368; // 0x8a28
-    field public static final int GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT = 35380; // 0x8a34
-    field public static final int GL_UNIFORM_BUFFER_SIZE = 35370; // 0x8a2a
-    field public static final int GL_UNIFORM_BUFFER_START = 35369; // 0x8a29
-    field public static final int GL_UNIFORM_IS_ROW_MAJOR = 35390; // 0x8a3e
-    field public static final int GL_UNIFORM_MATRIX_STRIDE = 35389; // 0x8a3d
-    field public static final int GL_UNIFORM_NAME_LENGTH = 35385; // 0x8a39
-    field public static final int GL_UNIFORM_OFFSET = 35387; // 0x8a3b
-    field public static final int GL_UNIFORM_SIZE = 35384; // 0x8a38
-    field public static final int GL_UNIFORM_TYPE = 35383; // 0x8a37
-    field public static final int GL_UNPACK_IMAGE_HEIGHT = 32878; // 0x806e
-    field public static final int GL_UNPACK_ROW_LENGTH = 3314; // 0xcf2
-    field public static final int GL_UNPACK_SKIP_IMAGES = 32877; // 0x806d
-    field public static final int GL_UNPACK_SKIP_PIXELS = 3316; // 0xcf4
-    field public static final int GL_UNPACK_SKIP_ROWS = 3315; // 0xcf3
-    field public static final int GL_UNSIGNALED = 37144; // 0x9118
-    field public static final int GL_UNSIGNED_INT_10F_11F_11F_REV = 35899; // 0x8c3b
-    field public static final int GL_UNSIGNED_INT_24_8 = 34042; // 0x84fa
-    field public static final int GL_UNSIGNED_INT_2_10_10_10_REV = 33640; // 0x8368
-    field public static final int GL_UNSIGNED_INT_5_9_9_9_REV = 35902; // 0x8c3e
-    field public static final int GL_UNSIGNED_INT_SAMPLER_2D = 36306; // 0x8dd2
-    field public static final int GL_UNSIGNED_INT_SAMPLER_2D_ARRAY = 36311; // 0x8dd7
-    field public static final int GL_UNSIGNED_INT_SAMPLER_3D = 36307; // 0x8dd3
-    field public static final int GL_UNSIGNED_INT_SAMPLER_CUBE = 36308; // 0x8dd4
-    field public static final int GL_UNSIGNED_INT_VEC2 = 36294; // 0x8dc6
-    field public static final int GL_UNSIGNED_INT_VEC3 = 36295; // 0x8dc7
-    field public static final int GL_UNSIGNED_INT_VEC4 = 36296; // 0x8dc8
-    field public static final int GL_UNSIGNED_NORMALIZED = 35863; // 0x8c17
-    field public static final int GL_VERTEX_ARRAY_BINDING = 34229; // 0x85b5
-    field public static final int GL_VERTEX_ATTRIB_ARRAY_DIVISOR = 35070; // 0x88fe
-    field public static final int GL_VERTEX_ATTRIB_ARRAY_INTEGER = 35069; // 0x88fd
-    field public static final int GL_WAIT_FAILED = 37149; // 0x911d
-  }
-
-  public class GLES31 extends android.opengl.GLES30 {
-    method public static void glActiveShaderProgram(int, int);
-    method public static void glBindImageTexture(int, int, int, boolean, int, int, int);
-    method public static void glBindProgramPipeline(int);
-    method public static void glBindVertexBuffer(int, int, long, int);
-    method public static int glCreateShaderProgramv(int, String[]);
-    method public static void glDeleteProgramPipelines(int, int[], int);
-    method public static void glDeleteProgramPipelines(int, java.nio.IntBuffer);
-    method public static void glDispatchCompute(int, int, int);
-    method public static void glDispatchComputeIndirect(long);
-    method public static void glDrawArraysIndirect(int, long);
-    method public static void glDrawElementsIndirect(int, int, long);
-    method public static void glFramebufferParameteri(int, int, int);
-    method public static void glGenProgramPipelines(int, int[], int);
-    method public static void glGenProgramPipelines(int, java.nio.IntBuffer);
-    method public static void glGetBooleani_v(int, int, boolean[], int);
-    method public static void glGetBooleani_v(int, int, java.nio.IntBuffer);
-    method public static void glGetFramebufferParameteriv(int, int, int[], int);
-    method public static void glGetFramebufferParameteriv(int, int, java.nio.IntBuffer);
-    method public static void glGetMultisamplefv(int, int, float[], int);
-    method public static void glGetMultisamplefv(int, int, java.nio.FloatBuffer);
-    method public static void glGetProgramInterfaceiv(int, int, int, int[], int);
-    method public static void glGetProgramInterfaceiv(int, int, int, java.nio.IntBuffer);
-    method public static String glGetProgramPipelineInfoLog(int);
-    method public static void glGetProgramPipelineiv(int, int, int[], int);
-    method public static void glGetProgramPipelineiv(int, int, java.nio.IntBuffer);
-    method public static int glGetProgramResourceIndex(int, int, String);
-    method public static int glGetProgramResourceLocation(int, int, String);
-    method public static String glGetProgramResourceName(int, int, int);
-    method public static void glGetProgramResourceiv(int, int, int, int, int[], int, int, int[], int, int[], int);
-    method public static void glGetProgramResourceiv(int, int, int, int, java.nio.IntBuffer, int, java.nio.IntBuffer, java.nio.IntBuffer);
-    method public static void glGetTexLevelParameterfv(int, int, int, float[], int);
-    method public static void glGetTexLevelParameterfv(int, int, int, java.nio.FloatBuffer);
-    method public static void glGetTexLevelParameteriv(int, int, int, int[], int);
-    method public static void glGetTexLevelParameteriv(int, int, int, java.nio.IntBuffer);
-    method public static boolean glIsProgramPipeline(int);
-    method public static void glMemoryBarrier(int);
-    method public static void glMemoryBarrierByRegion(int);
-    method public static void glProgramUniform1f(int, int, float);
-    method public static void glProgramUniform1fv(int, int, int, float[], int);
-    method public static void glProgramUniform1fv(int, int, int, java.nio.FloatBuffer);
-    method public static void glProgramUniform1i(int, int, int);
-    method public static void glProgramUniform1iv(int, int, int, int[], int);
-    method public static void glProgramUniform1iv(int, int, int, java.nio.IntBuffer);
-    method public static void glProgramUniform1ui(int, int, int);
-    method public static void glProgramUniform1uiv(int, int, int, int[], int);
-    method public static void glProgramUniform1uiv(int, int, int, java.nio.IntBuffer);
-    method public static void glProgramUniform2f(int, int, float, float);
-    method public static void glProgramUniform2fv(int, int, int, float[], int);
-    method public static void glProgramUniform2fv(int, int, int, java.nio.FloatBuffer);
-    method public static void glProgramUniform2i(int, int, int, int);
-    method public static void glProgramUniform2iv(int, int, int, int[], int);
-    method public static void glProgramUniform2iv(int, int, int, java.nio.IntBuffer);
-    method public static void glProgramUniform2ui(int, int, int, int);
-    method public static void glProgramUniform2uiv(int, int, int, int[], int);
-    method public static void glProgramUniform2uiv(int, int, int, java.nio.IntBuffer);
-    method public static void glProgramUniform3f(int, int, float, float, float);
-    method public static void glProgramUniform3fv(int, int, int, float[], int);
-    method public static void glProgramUniform3fv(int, int, int, java.nio.FloatBuffer);
-    method public static void glProgramUniform3i(int, int, int, int, int);
-    method public static void glProgramUniform3iv(int, int, int, int[], int);
-    method public static void glProgramUniform3iv(int, int, int, java.nio.IntBuffer);
-    method public static void glProgramUniform3ui(int, int, int, int, int);
-    method public static void glProgramUniform3uiv(int, int, int, int[], int);
-    method public static void glProgramUniform3uiv(int, int, int, java.nio.IntBuffer);
-    method public static void glProgramUniform4f(int, int, float, float, float, float);
-    method public static void glProgramUniform4fv(int, int, int, float[], int);
-    method public static void glProgramUniform4fv(int, int, int, java.nio.FloatBuffer);
-    method public static void glProgramUniform4i(int, int, int, int, int, int);
-    method public static void glProgramUniform4iv(int, int, int, int[], int);
-    method public static void glProgramUniform4iv(int, int, int, java.nio.IntBuffer);
-    method public static void glProgramUniform4ui(int, int, int, int, int, int);
-    method public static void glProgramUniform4uiv(int, int, int, int[], int);
-    method public static void glProgramUniform4uiv(int, int, int, java.nio.IntBuffer);
-    method public static void glProgramUniformMatrix2fv(int, int, int, boolean, float[], int);
-    method public static void glProgramUniformMatrix2fv(int, int, int, boolean, java.nio.FloatBuffer);
-    method public static void glProgramUniformMatrix2x3fv(int, int, int, boolean, float[], int);
-    method public static void glProgramUniformMatrix2x3fv(int, int, int, boolean, java.nio.FloatBuffer);
-    method public static void glProgramUniformMatrix2x4fv(int, int, int, boolean, float[], int);
-    method public static void glProgramUniformMatrix2x4fv(int, int, int, boolean, java.nio.FloatBuffer);
-    method public static void glProgramUniformMatrix3fv(int, int, int, boolean, float[], int);
-    method public static void glProgramUniformMatrix3fv(int, int, int, boolean, java.nio.FloatBuffer);
-    method public static void glProgramUniformMatrix3x2fv(int, int, int, boolean, float[], int);
-    method public static void glProgramUniformMatrix3x2fv(int, int, int, boolean, java.nio.FloatBuffer);
-    method public static void glProgramUniformMatrix3x4fv(int, int, int, boolean, float[], int);
-    method public static void glProgramUniformMatrix3x4fv(int, int, int, boolean, java.nio.FloatBuffer);
-    method public static void glProgramUniformMatrix4fv(int, int, int, boolean, float[], int);
-    method public static void glProgramUniformMatrix4fv(int, int, int, boolean, java.nio.FloatBuffer);
-    method public static void glProgramUniformMatrix4x2fv(int, int, int, boolean, float[], int);
-    method public static void glProgramUniformMatrix4x2fv(int, int, int, boolean, java.nio.FloatBuffer);
-    method public static void glProgramUniformMatrix4x3fv(int, int, int, boolean, float[], int);
-    method public static void glProgramUniformMatrix4x3fv(int, int, int, boolean, java.nio.FloatBuffer);
-    method public static void glSampleMaski(int, int);
-    method public static void glTexStorage2DMultisample(int, int, int, int, int, boolean);
-    method public static void glUseProgramStages(int, int, int);
-    method public static void glValidateProgramPipeline(int);
-    method public static void glVertexAttribBinding(int, int);
-    method public static void glVertexAttribFormat(int, int, int, boolean, int);
-    method public static void glVertexAttribIFormat(int, int, int, int);
-    method public static void glVertexBindingDivisor(int, int);
-    field public static final int GL_ACTIVE_ATOMIC_COUNTER_BUFFERS = 37593; // 0x92d9
-    field public static final int GL_ACTIVE_PROGRAM = 33369; // 0x8259
-    field public static final int GL_ACTIVE_RESOURCES = 37621; // 0x92f5
-    field public static final int GL_ACTIVE_VARIABLES = 37637; // 0x9305
-    field public static final int GL_ALL_BARRIER_BITS = -1; // 0xffffffff
-    field public static final int GL_ALL_SHADER_BITS = -1; // 0xffffffff
-    field public static final int GL_ARRAY_SIZE = 37627; // 0x92fb
-    field public static final int GL_ARRAY_STRIDE = 37630; // 0x92fe
-    field public static final int GL_ATOMIC_COUNTER_BARRIER_BIT = 4096; // 0x1000
-    field public static final int GL_ATOMIC_COUNTER_BUFFER = 37568; // 0x92c0
-    field public static final int GL_ATOMIC_COUNTER_BUFFER_BINDING = 37569; // 0x92c1
-    field public static final int GL_ATOMIC_COUNTER_BUFFER_INDEX = 37633; // 0x9301
-    field public static final int GL_ATOMIC_COUNTER_BUFFER_SIZE = 37571; // 0x92c3
-    field public static final int GL_ATOMIC_COUNTER_BUFFER_START = 37570; // 0x92c2
-    field public static final int GL_BLOCK_INDEX = 37629; // 0x92fd
-    field public static final int GL_BUFFER_BINDING = 37634; // 0x9302
-    field public static final int GL_BUFFER_DATA_SIZE = 37635; // 0x9303
-    field public static final int GL_BUFFER_UPDATE_BARRIER_BIT = 512; // 0x200
-    field public static final int GL_BUFFER_VARIABLE = 37605; // 0x92e5
-    field public static final int GL_COMMAND_BARRIER_BIT = 64; // 0x40
-    field public static final int GL_COMPUTE_SHADER = 37305; // 0x91b9
-    field public static final int GL_COMPUTE_SHADER_BIT = 32; // 0x20
-    field public static final int GL_COMPUTE_WORK_GROUP_SIZE = 33383; // 0x8267
-    field public static final int GL_DEPTH_STENCIL_TEXTURE_MODE = 37098; // 0x90ea
-    field public static final int GL_DISPATCH_INDIRECT_BUFFER = 37102; // 0x90ee
-    field public static final int GL_DISPATCH_INDIRECT_BUFFER_BINDING = 37103; // 0x90ef
-    field public static final int GL_DRAW_INDIRECT_BUFFER = 36671; // 0x8f3f
-    field public static final int GL_DRAW_INDIRECT_BUFFER_BINDING = 36675; // 0x8f43
-    field public static final int GL_ELEMENT_ARRAY_BARRIER_BIT = 2; // 0x2
-    field public static final int GL_FRAGMENT_SHADER_BIT = 2; // 0x2
-    field public static final int GL_FRAMEBUFFER_BARRIER_BIT = 1024; // 0x400
-    field public static final int GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS = 37652; // 0x9314
-    field public static final int GL_FRAMEBUFFER_DEFAULT_HEIGHT = 37649; // 0x9311
-    field public static final int GL_FRAMEBUFFER_DEFAULT_SAMPLES = 37651; // 0x9313
-    field public static final int GL_FRAMEBUFFER_DEFAULT_WIDTH = 37648; // 0x9310
-    field public static final int GL_IMAGE_2D = 36941; // 0x904d
-    field public static final int GL_IMAGE_2D_ARRAY = 36947; // 0x9053
-    field public static final int GL_IMAGE_3D = 36942; // 0x904e
-    field public static final int GL_IMAGE_BINDING_ACCESS = 36670; // 0x8f3e
-    field public static final int GL_IMAGE_BINDING_FORMAT = 36974; // 0x906e
-    field public static final int GL_IMAGE_BINDING_LAYER = 36669; // 0x8f3d
-    field public static final int GL_IMAGE_BINDING_LAYERED = 36668; // 0x8f3c
-    field public static final int GL_IMAGE_BINDING_LEVEL = 36667; // 0x8f3b
-    field public static final int GL_IMAGE_BINDING_NAME = 36666; // 0x8f3a
-    field public static final int GL_IMAGE_CUBE = 36944; // 0x9050
-    field public static final int GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS = 37065; // 0x90c9
-    field public static final int GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE = 37064; // 0x90c8
-    field public static final int GL_IMAGE_FORMAT_COMPATIBILITY_TYPE = 37063; // 0x90c7
-    field public static final int GL_INT_IMAGE_2D = 36952; // 0x9058
-    field public static final int GL_INT_IMAGE_2D_ARRAY = 36958; // 0x905e
-    field public static final int GL_INT_IMAGE_3D = 36953; // 0x9059
-    field public static final int GL_INT_IMAGE_CUBE = 36955; // 0x905b
-    field public static final int GL_INT_SAMPLER_2D_MULTISAMPLE = 37129; // 0x9109
-    field public static final int GL_IS_ROW_MAJOR = 37632; // 0x9300
-    field public static final int GL_LOCATION = 37646; // 0x930e
-    field public static final int GL_MATRIX_STRIDE = 37631; // 0x92ff
-    field public static final int GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS = 37596; // 0x92dc
-    field public static final int GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE = 37592; // 0x92d8
-    field public static final int GL_MAX_COLOR_TEXTURE_SAMPLES = 37134; // 0x910e
-    field public static final int GL_MAX_COMBINED_ATOMIC_COUNTERS = 37591; // 0x92d7
-    field public static final int GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS = 37585; // 0x92d1
-    field public static final int GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS = 33382; // 0x8266
-    field public static final int GL_MAX_COMBINED_IMAGE_UNIFORMS = 37071; // 0x90cf
-    field public static final int GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES = 36665; // 0x8f39
-    field public static final int GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS = 37084; // 0x90dc
-    field public static final int GL_MAX_COMPUTE_ATOMIC_COUNTERS = 33381; // 0x8265
-    field public static final int GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS = 33380; // 0x8264
-    field public static final int GL_MAX_COMPUTE_IMAGE_UNIFORMS = 37309; // 0x91bd
-    field public static final int GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS = 37083; // 0x90db
-    field public static final int GL_MAX_COMPUTE_SHARED_MEMORY_SIZE = 33378; // 0x8262
-    field public static final int GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS = 37308; // 0x91bc
-    field public static final int GL_MAX_COMPUTE_UNIFORM_BLOCKS = 37307; // 0x91bb
-    field public static final int GL_MAX_COMPUTE_UNIFORM_COMPONENTS = 33379; // 0x8263
-    field public static final int GL_MAX_COMPUTE_WORK_GROUP_COUNT = 37310; // 0x91be
-    field public static final int GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS = 37099; // 0x90eb
-    field public static final int GL_MAX_COMPUTE_WORK_GROUP_SIZE = 37311; // 0x91bf
-    field public static final int GL_MAX_DEPTH_TEXTURE_SAMPLES = 37135; // 0x910f
-    field public static final int GL_MAX_FRAGMENT_ATOMIC_COUNTERS = 37590; // 0x92d6
-    field public static final int GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS = 37584; // 0x92d0
-    field public static final int GL_MAX_FRAGMENT_IMAGE_UNIFORMS = 37070; // 0x90ce
-    field public static final int GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS = 37082; // 0x90da
-    field public static final int GL_MAX_FRAMEBUFFER_HEIGHT = 37654; // 0x9316
-    field public static final int GL_MAX_FRAMEBUFFER_SAMPLES = 37656; // 0x9318
-    field public static final int GL_MAX_FRAMEBUFFER_WIDTH = 37653; // 0x9315
-    field public static final int GL_MAX_IMAGE_UNITS = 36664; // 0x8f38
-    field public static final int GL_MAX_INTEGER_SAMPLES = 37136; // 0x9110
-    field public static final int GL_MAX_NAME_LENGTH = 37622; // 0x92f6
-    field public static final int GL_MAX_NUM_ACTIVE_VARIABLES = 37623; // 0x92f7
-    field public static final int GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET = 36447; // 0x8e5f
-    field public static final int GL_MAX_SAMPLE_MASK_WORDS = 36441; // 0x8e59
-    field public static final int GL_MAX_SHADER_STORAGE_BLOCK_SIZE = 37086; // 0x90de
-    field public static final int GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS = 37085; // 0x90dd
-    field public static final int GL_MAX_UNIFORM_LOCATIONS = 33390; // 0x826e
-    field public static final int GL_MAX_VERTEX_ATOMIC_COUNTERS = 37586; // 0x92d2
-    field public static final int GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS = 37580; // 0x92cc
-    field public static final int GL_MAX_VERTEX_ATTRIB_BINDINGS = 33498; // 0x82da
-    field public static final int GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET = 33497; // 0x82d9
-    field public static final int GL_MAX_VERTEX_ATTRIB_STRIDE = 33509; // 0x82e5
-    field public static final int GL_MAX_VERTEX_IMAGE_UNIFORMS = 37066; // 0x90ca
-    field public static final int GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS = 37078; // 0x90d6
-    field public static final int GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET = 36446; // 0x8e5e
-    field public static final int GL_NAME_LENGTH = 37625; // 0x92f9
-    field public static final int GL_NUM_ACTIVE_VARIABLES = 37636; // 0x9304
-    field public static final int GL_OFFSET = 37628; // 0x92fc
-    field public static final int GL_PIXEL_BUFFER_BARRIER_BIT = 128; // 0x80
-    field public static final int GL_PROGRAM_INPUT = 37603; // 0x92e3
-    field public static final int GL_PROGRAM_OUTPUT = 37604; // 0x92e4
-    field public static final int GL_PROGRAM_PIPELINE_BINDING = 33370; // 0x825a
-    field public static final int GL_PROGRAM_SEPARABLE = 33368; // 0x8258
-    field public static final int GL_READ_ONLY = 35000; // 0x88b8
-    field public static final int GL_READ_WRITE = 35002; // 0x88ba
-    field public static final int GL_REFERENCED_BY_COMPUTE_SHADER = 37643; // 0x930b
-    field public static final int GL_REFERENCED_BY_FRAGMENT_SHADER = 37642; // 0x930a
-    field public static final int GL_REFERENCED_BY_VERTEX_SHADER = 37638; // 0x9306
-    field public static final int GL_SAMPLER_2D_MULTISAMPLE = 37128; // 0x9108
-    field public static final int GL_SAMPLE_MASK = 36433; // 0x8e51
-    field public static final int GL_SAMPLE_MASK_VALUE = 36434; // 0x8e52
-    field public static final int GL_SAMPLE_POSITION = 36432; // 0x8e50
-    field public static final int GL_SHADER_IMAGE_ACCESS_BARRIER_BIT = 32; // 0x20
-    field public static final int GL_SHADER_STORAGE_BARRIER_BIT = 8192; // 0x2000
-    field public static final int GL_SHADER_STORAGE_BLOCK = 37606; // 0x92e6
-    field public static final int GL_SHADER_STORAGE_BUFFER = 37074; // 0x90d2
-    field public static final int GL_SHADER_STORAGE_BUFFER_BINDING = 37075; // 0x90d3
-    field public static final int GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT = 37087; // 0x90df
-    field public static final int GL_SHADER_STORAGE_BUFFER_SIZE = 37077; // 0x90d5
-    field public static final int GL_SHADER_STORAGE_BUFFER_START = 37076; // 0x90d4
-    field public static final int GL_STENCIL_INDEX = 6401; // 0x1901
-    field public static final int GL_TEXTURE_2D_MULTISAMPLE = 37120; // 0x9100
-    field public static final int GL_TEXTURE_ALPHA_SIZE = 32863; // 0x805f
-    field public static final int GL_TEXTURE_ALPHA_TYPE = 35859; // 0x8c13
-    field public static final int GL_TEXTURE_BINDING_2D_MULTISAMPLE = 37124; // 0x9104
-    field public static final int GL_TEXTURE_BLUE_SIZE = 32862; // 0x805e
-    field public static final int GL_TEXTURE_BLUE_TYPE = 35858; // 0x8c12
-    field public static final int GL_TEXTURE_COMPRESSED = 34465; // 0x86a1
-    field public static final int GL_TEXTURE_DEPTH = 32881; // 0x8071
-    field public static final int GL_TEXTURE_DEPTH_SIZE = 34890; // 0x884a
-    field public static final int GL_TEXTURE_DEPTH_TYPE = 35862; // 0x8c16
-    field public static final int GL_TEXTURE_FETCH_BARRIER_BIT = 8; // 0x8
-    field public static final int GL_TEXTURE_FIXED_SAMPLE_LOCATIONS = 37127; // 0x9107
-    field public static final int GL_TEXTURE_GREEN_SIZE = 32861; // 0x805d
-    field public static final int GL_TEXTURE_GREEN_TYPE = 35857; // 0x8c11
-    field public static final int GL_TEXTURE_HEIGHT = 4097; // 0x1001
-    field public static final int GL_TEXTURE_INTERNAL_FORMAT = 4099; // 0x1003
-    field public static final int GL_TEXTURE_RED_SIZE = 32860; // 0x805c
-    field public static final int GL_TEXTURE_RED_TYPE = 35856; // 0x8c10
-    field public static final int GL_TEXTURE_SAMPLES = 37126; // 0x9106
-    field public static final int GL_TEXTURE_SHARED_SIZE = 35903; // 0x8c3f
-    field public static final int GL_TEXTURE_STENCIL_SIZE = 35057; // 0x88f1
-    field public static final int GL_TEXTURE_UPDATE_BARRIER_BIT = 256; // 0x100
-    field public static final int GL_TEXTURE_WIDTH = 4096; // 0x1000
-    field public static final int GL_TOP_LEVEL_ARRAY_SIZE = 37644; // 0x930c
-    field public static final int GL_TOP_LEVEL_ARRAY_STRIDE = 37645; // 0x930d
-    field public static final int GL_TRANSFORM_FEEDBACK_BARRIER_BIT = 2048; // 0x800
-    field public static final int GL_TRANSFORM_FEEDBACK_VARYING = 37620; // 0x92f4
-    field public static final int GL_TYPE = 37626; // 0x92fa
-    field public static final int GL_UNIFORM = 37601; // 0x92e1
-    field public static final int GL_UNIFORM_BARRIER_BIT = 4; // 0x4
-    field public static final int GL_UNIFORM_BLOCK = 37602; // 0x92e2
-    field public static final int GL_UNSIGNED_INT_ATOMIC_COUNTER = 37595; // 0x92db
-    field public static final int GL_UNSIGNED_INT_IMAGE_2D = 36963; // 0x9063
-    field public static final int GL_UNSIGNED_INT_IMAGE_2D_ARRAY = 36969; // 0x9069
-    field public static final int GL_UNSIGNED_INT_IMAGE_3D = 36964; // 0x9064
-    field public static final int GL_UNSIGNED_INT_IMAGE_CUBE = 36966; // 0x9066
-    field public static final int GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = 37130; // 0x910a
-    field public static final int GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT = 1; // 0x1
-    field public static final int GL_VERTEX_ATTRIB_BINDING = 33492; // 0x82d4
-    field public static final int GL_VERTEX_ATTRIB_RELATIVE_OFFSET = 33493; // 0x82d5
-    field public static final int GL_VERTEX_BINDING_BUFFER = 36687; // 0x8f4f
-    field public static final int GL_VERTEX_BINDING_DIVISOR = 33494; // 0x82d6
-    field public static final int GL_VERTEX_BINDING_OFFSET = 33495; // 0x82d7
-    field public static final int GL_VERTEX_BINDING_STRIDE = 33496; // 0x82d8
-    field public static final int GL_VERTEX_SHADER_BIT = 1; // 0x1
-    field public static final int GL_WRITE_ONLY = 35001; // 0x88b9
-  }
-
-  public class GLES31Ext {
-    method public static void glBlendBarrierKHR();
-    method public static void glBlendEquationSeparateiEXT(int, int, int);
-    method public static void glBlendEquationiEXT(int, int);
-    method public static void glBlendFuncSeparateiEXT(int, int, int, int, int);
-    method public static void glBlendFunciEXT(int, int, int);
-    method public static void glColorMaskiEXT(int, boolean, boolean, boolean, boolean);
-    method public static void glCopyImageSubDataEXT(int, int, int, int, int, int, int, int, int, int, int, int, int, int, int);
-    method public static void glDebugMessageCallbackKHR(android.opengl.GLES31Ext.DebugProcKHR);
-    method public static void glDebugMessageControlKHR(int, int, int, int, int[], int, boolean);
-    method public static void glDebugMessageControlKHR(int, int, int, int, java.nio.IntBuffer, boolean);
-    method public static void glDebugMessageInsertKHR(int, int, int, int, String);
-    method public static void glDisableiEXT(int, int);
-    method public static void glEnableiEXT(int, int);
-    method public static void glFramebufferTextureEXT(int, int, int, int);
-    method public static android.opengl.GLES31Ext.DebugProcKHR glGetDebugMessageCallbackKHR();
-    method public static int glGetDebugMessageLogKHR(int, int, int[], int, int[], int, int[], int, int[], int, int[], int, byte[], int);
-    method public static int glGetDebugMessageLogKHR(int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.ByteBuffer);
-    method public static String[] glGetDebugMessageLogKHR(int, int[], int, int[], int, int[], int, int[], int);
-    method public static String[] glGetDebugMessageLogKHR(int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer);
-    method public static String glGetObjectLabelKHR(int, int);
-    method public static String glGetObjectPtrLabelKHR(long);
-    method public static void glGetSamplerParameterIivEXT(int, int, int[], int);
-    method public static void glGetSamplerParameterIivEXT(int, int, java.nio.IntBuffer);
-    method public static void glGetSamplerParameterIuivEXT(int, int, int[], int);
-    method public static void glGetSamplerParameterIuivEXT(int, int, java.nio.IntBuffer);
-    method public static void glGetTexParameterIivEXT(int, int, int[], int);
-    method public static void glGetTexParameterIivEXT(int, int, java.nio.IntBuffer);
-    method public static void glGetTexParameterIuivEXT(int, int, int[], int);
-    method public static void glGetTexParameterIuivEXT(int, int, java.nio.IntBuffer);
-    method public static boolean glIsEnablediEXT(int, int);
-    method public static void glMinSampleShadingOES(float);
-    method public static void glObjectLabelKHR(int, int, int, String);
-    method public static void glObjectPtrLabelKHR(long, String);
-    method public static void glPatchParameteriEXT(int, int);
-    method public static void glPopDebugGroupKHR();
-    method public static void glPrimitiveBoundingBoxEXT(float, float, float, float, float, float, float, float);
-    method public static void glPushDebugGroupKHR(int, int, int, String);
-    method public static void glSamplerParameterIivEXT(int, int, int[], int);
-    method public static void glSamplerParameterIivEXT(int, int, java.nio.IntBuffer);
-    method public static void glSamplerParameterIuivEXT(int, int, int[], int);
-    method public static void glSamplerParameterIuivEXT(int, int, java.nio.IntBuffer);
-    method public static void glTexBufferEXT(int, int, int);
-    method public static void glTexBufferRangeEXT(int, int, int, int, int);
-    method public static void glTexParameterIivEXT(int, int, int[], int);
-    method public static void glTexParameterIivEXT(int, int, java.nio.IntBuffer);
-    method public static void glTexParameterIuivEXT(int, int, int[], int);
-    method public static void glTexParameterIuivEXT(int, int, java.nio.IntBuffer);
-    method public static void glTexStorage3DMultisampleOES(int, int, int, int, int, int, boolean);
-    field public static final int GL_BLEND_ADVANCED_COHERENT_KHR = 37509; // 0x9285
-    field public static final int GL_BUFFER_KHR = 33504; // 0x82e0
-    field public static final int GL_CLAMP_TO_BORDER_EXT = 33069; // 0x812d
-    field public static final int GL_COLORBURN_KHR = 37530; // 0x929a
-    field public static final int GL_COLORDODGE_KHR = 37529; // 0x9299
-    field public static final int GL_COMPRESSED_RGBA_ASTC_10x10_KHR = 37819; // 0x93bb
-    field public static final int GL_COMPRESSED_RGBA_ASTC_10x5_KHR = 37816; // 0x93b8
-    field public static final int GL_COMPRESSED_RGBA_ASTC_10x6_KHR = 37817; // 0x93b9
-    field public static final int GL_COMPRESSED_RGBA_ASTC_10x8_KHR = 37818; // 0x93ba
-    field public static final int GL_COMPRESSED_RGBA_ASTC_12x10_KHR = 37820; // 0x93bc
-    field public static final int GL_COMPRESSED_RGBA_ASTC_12x12_KHR = 37821; // 0x93bd
-    field public static final int GL_COMPRESSED_RGBA_ASTC_4x4_KHR = 37808; // 0x93b0
-    field public static final int GL_COMPRESSED_RGBA_ASTC_5x4_KHR = 37809; // 0x93b1
-    field public static final int GL_COMPRESSED_RGBA_ASTC_5x5_KHR = 37810; // 0x93b2
-    field public static final int GL_COMPRESSED_RGBA_ASTC_6x5_KHR = 37811; // 0x93b3
-    field public static final int GL_COMPRESSED_RGBA_ASTC_6x6_KHR = 37812; // 0x93b4
-    field public static final int GL_COMPRESSED_RGBA_ASTC_8x5_KHR = 37813; // 0x93b5
-    field public static final int GL_COMPRESSED_RGBA_ASTC_8x6_KHR = 37814; // 0x93b6
-    field public static final int GL_COMPRESSED_RGBA_ASTC_8x8_KHR = 37815; // 0x93b7
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR = 37851; // 0x93db
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR = 37848; // 0x93d8
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR = 37849; // 0x93d9
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR = 37850; // 0x93da
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR = 37852; // 0x93dc
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR = 37853; // 0x93dd
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR = 37840; // 0x93d0
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR = 37841; // 0x93d1
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR = 37842; // 0x93d2
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR = 37843; // 0x93d3
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR = 37844; // 0x93d4
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR = 37845; // 0x93d5
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR = 37846; // 0x93d6
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR = 37847; // 0x93d7
-    field public static final int GL_CONTEXT_FLAG_DEBUG_BIT_KHR = 2; // 0x2
-    field public static final int GL_DARKEN_KHR = 37527; // 0x9297
-    field public static final int GL_DEBUG_CALLBACK_FUNCTION_KHR = 33348; // 0x8244
-    field public static final int GL_DEBUG_CALLBACK_USER_PARAM_KHR = 33349; // 0x8245
-    field public static final int GL_DEBUG_GROUP_STACK_DEPTH_KHR = 33389; // 0x826d
-    field public static final int GL_DEBUG_LOGGED_MESSAGES_KHR = 37189; // 0x9145
-    field public static final int GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR = 33347; // 0x8243
-    field public static final int GL_DEBUG_OUTPUT_KHR = 37600; // 0x92e0
-    field public static final int GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR = 33346; // 0x8242
-    field public static final int GL_DEBUG_SEVERITY_HIGH_KHR = 37190; // 0x9146
-    field public static final int GL_DEBUG_SEVERITY_LOW_KHR = 37192; // 0x9148
-    field public static final int GL_DEBUG_SEVERITY_MEDIUM_KHR = 37191; // 0x9147
-    field public static final int GL_DEBUG_SEVERITY_NOTIFICATION_KHR = 33387; // 0x826b
-    field public static final int GL_DEBUG_SOURCE_API_KHR = 33350; // 0x8246
-    field public static final int GL_DEBUG_SOURCE_APPLICATION_KHR = 33354; // 0x824a
-    field public static final int GL_DEBUG_SOURCE_OTHER_KHR = 33355; // 0x824b
-    field public static final int GL_DEBUG_SOURCE_SHADER_COMPILER_KHR = 33352; // 0x8248
-    field public static final int GL_DEBUG_SOURCE_THIRD_PARTY_KHR = 33353; // 0x8249
-    field public static final int GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR = 33351; // 0x8247
-    field public static final int GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR = 33357; // 0x824d
-    field public static final int GL_DEBUG_TYPE_ERROR_KHR = 33356; // 0x824c
-    field public static final int GL_DEBUG_TYPE_MARKER_KHR = 33384; // 0x8268
-    field public static final int GL_DEBUG_TYPE_OTHER_KHR = 33361; // 0x8251
-    field public static final int GL_DEBUG_TYPE_PERFORMANCE_KHR = 33360; // 0x8250
-    field public static final int GL_DEBUG_TYPE_POP_GROUP_KHR = 33386; // 0x826a
-    field public static final int GL_DEBUG_TYPE_PORTABILITY_KHR = 33359; // 0x824f
-    field public static final int GL_DEBUG_TYPE_PUSH_GROUP_KHR = 33385; // 0x8269
-    field public static final int GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR = 33358; // 0x824e
-    field public static final int GL_DECODE_EXT = 35401; // 0x8a49
-    field public static final int GL_DIFFERENCE_KHR = 37534; // 0x929e
-    field public static final int GL_EXCLUSION_KHR = 37536; // 0x92a0
-    field public static final int GL_FIRST_VERTEX_CONVENTION_EXT = 36429; // 0x8e4d
-    field public static final int GL_FRACTIONAL_EVEN_EXT = 36476; // 0x8e7c
-    field public static final int GL_FRACTIONAL_ODD_EXT = 36475; // 0x8e7b
-    field public static final int GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES = 36445; // 0x8e5d
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT = 36263; // 0x8da7
-    field public static final int GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT = 37650; // 0x9312
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT = 36264; // 0x8da8
-    field public static final int GL_GEOMETRY_LINKED_INPUT_TYPE_EXT = 35095; // 0x8917
-    field public static final int GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT = 35096; // 0x8918
-    field public static final int GL_GEOMETRY_LINKED_VERTICES_OUT_EXT = 35094; // 0x8916
-    field public static final int GL_GEOMETRY_SHADER_BIT_EXT = 4; // 0x4
-    field public static final int GL_GEOMETRY_SHADER_EXT = 36313; // 0x8dd9
-    field public static final int GL_GEOMETRY_SHADER_INVOCATIONS_EXT = 34943; // 0x887f
-    field public static final int GL_HARDLIGHT_KHR = 37531; // 0x929b
-    field public static final int GL_HSL_COLOR_KHR = 37551; // 0x92af
-    field public static final int GL_HSL_HUE_KHR = 37549; // 0x92ad
-    field public static final int GL_HSL_LUMINOSITY_KHR = 37552; // 0x92b0
-    field public static final int GL_HSL_SATURATION_KHR = 37550; // 0x92ae
-    field public static final int GL_IMAGE_BUFFER_EXT = 36945; // 0x9051
-    field public static final int GL_IMAGE_CUBE_MAP_ARRAY_EXT = 36948; // 0x9054
-    field public static final int GL_INT_IMAGE_BUFFER_EXT = 36956; // 0x905c
-    field public static final int GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT = 36959; // 0x905f
-    field public static final int GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = 37132; // 0x910c
-    field public static final int GL_INT_SAMPLER_BUFFER_EXT = 36304; // 0x8dd0
-    field public static final int GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT = 36878; // 0x900e
-    field public static final int GL_ISOLINES_EXT = 36474; // 0x8e7a
-    field public static final int GL_IS_PER_PATCH_EXT = 37607; // 0x92e7
-    field public static final int GL_LAST_VERTEX_CONVENTION_EXT = 36430; // 0x8e4e
-    field public static final int GL_LAYER_PROVOKING_VERTEX_EXT = 33374; // 0x825e
-    field public static final int GL_LIGHTEN_KHR = 37528; // 0x9298
-    field public static final int GL_LINES_ADJACENCY_EXT = 10; // 0xa
-    field public static final int GL_LINE_STRIP_ADJACENCY_EXT = 11; // 0xb
-    field public static final int GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT = 35378; // 0x8a32
-    field public static final int GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT = 36382; // 0x8e1e
-    field public static final int GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT = 36383; // 0x8e1f
-    field public static final int GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR = 33388; // 0x826c
-    field public static final int GL_MAX_DEBUG_LOGGED_MESSAGES_KHR = 37188; // 0x9144
-    field public static final int GL_MAX_DEBUG_MESSAGE_LENGTH_KHR = 37187; // 0x9143
-    field public static final int GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES = 36444; // 0x8e5c
-    field public static final int GL_MAX_FRAMEBUFFER_LAYERS_EXT = 37655; // 0x9317
-    field public static final int GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT = 37589; // 0x92d5
-    field public static final int GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT = 37583; // 0x92cf
-    field public static final int GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT = 37069; // 0x90cd
-    field public static final int GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT = 37155; // 0x9123
-    field public static final int GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT = 37156; // 0x9124
-    field public static final int GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT = 36320; // 0x8de0
-    field public static final int GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT = 36442; // 0x8e5a
-    field public static final int GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT = 37079; // 0x90d7
-    field public static final int GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT = 35881; // 0x8c29
-    field public static final int GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT = 36321; // 0x8de1
-    field public static final int GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT = 35372; // 0x8a2c
-    field public static final int GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT = 36319; // 0x8ddf
-    field public static final int GL_MAX_LABEL_LENGTH_KHR = 33512; // 0x82e8
-    field public static final int GL_MAX_PATCH_VERTICES_EXT = 36477; // 0x8e7d
-    field public static final int GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT = 37587; // 0x92d3
-    field public static final int GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT = 37581; // 0x92cd
-    field public static final int GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT = 37067; // 0x90cb
-    field public static final int GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT = 34924; // 0x886c
-    field public static final int GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT = 36483; // 0x8e83
-    field public static final int GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT = 37080; // 0x90d8
-    field public static final int GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT = 36481; // 0x8e81
-    field public static final int GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT = 36485; // 0x8e85
-    field public static final int GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT = 36489; // 0x8e89
-    field public static final int GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT = 36479; // 0x8e7f
-    field public static final int GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT = 37588; // 0x92d4
-    field public static final int GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT = 37582; // 0x92ce
-    field public static final int GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT = 37068; // 0x90cc
-    field public static final int GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT = 34925; // 0x886d
-    field public static final int GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT = 36486; // 0x8e86
-    field public static final int GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT = 37081; // 0x90d9
-    field public static final int GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT = 36482; // 0x8e82
-    field public static final int GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT = 36490; // 0x8e8a
-    field public static final int GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT = 36480; // 0x8e80
-    field public static final int GL_MAX_TESS_GEN_LEVEL_EXT = 36478; // 0x8e7e
-    field public static final int GL_MAX_TESS_PATCH_COMPONENTS_EXT = 36484; // 0x8e84
-    field public static final int GL_MAX_TEXTURE_BUFFER_SIZE_EXT = 35883; // 0x8c2b
-    field public static final int GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES = 36443; // 0x8e5b
-    field public static final int GL_MIN_SAMPLE_SHADING_VALUE_OES = 35895; // 0x8c37
-    field public static final int GL_MULTIPLY_KHR = 37524; // 0x9294
-    field public static final int GL_OVERLAY_KHR = 37526; // 0x9296
-    field public static final int GL_PATCHES_EXT = 14; // 0xe
-    field public static final int GL_PATCH_VERTICES_EXT = 36466; // 0x8e72
-    field public static final int GL_PRIMITIVES_GENERATED_EXT = 35975; // 0x8c87
-    field public static final int GL_PRIMITIVE_BOUNDING_BOX_EXT = 37566; // 0x92be
-    field public static final int GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED = 33313; // 0x8221
-    field public static final int GL_PROGRAM_KHR = 33506; // 0x82e2
-    field public static final int GL_QUADS_EXT = 7; // 0x7
-    field public static final int GL_QUERY_KHR = 33507; // 0x82e3
-    field public static final int GL_REFERENCED_BY_GEOMETRY_SHADER_EXT = 37641; // 0x9309
-    field public static final int GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT = 37639; // 0x9307
-    field public static final int GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT = 37640; // 0x9308
-    field public static final int GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = 37131; // 0x910b
-    field public static final int GL_SAMPLER_BUFFER_EXT = 36290; // 0x8dc2
-    field public static final int GL_SAMPLER_CUBE_MAP_ARRAY_EXT = 36876; // 0x900c
-    field public static final int GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT = 36877; // 0x900d
-    field public static final int GL_SAMPLER_KHR = 33510; // 0x82e6
-    field public static final int GL_SAMPLE_SHADING_OES = 35894; // 0x8c36
-    field public static final int GL_SCREEN_KHR = 37525; // 0x9295
-    field public static final int GL_SHADER_KHR = 33505; // 0x82e1
-    field public static final int GL_SKIP_DECODE_EXT = 35402; // 0x8a4a
-    field public static final int GL_SOFTLIGHT_KHR = 37532; // 0x929c
-    field public static final int GL_STACK_OVERFLOW_KHR = 1283; // 0x503
-    field public static final int GL_STACK_UNDERFLOW_KHR = 1284; // 0x504
-    field public static final int GL_STENCIL_INDEX8_OES = 36168; // 0x8d48
-    field public static final int GL_STENCIL_INDEX_OES = 6401; // 0x1901
-    field public static final int GL_TESS_CONTROL_OUTPUT_VERTICES_EXT = 36469; // 0x8e75
-    field public static final int GL_TESS_CONTROL_SHADER_BIT_EXT = 8; // 0x8
-    field public static final int GL_TESS_CONTROL_SHADER_EXT = 36488; // 0x8e88
-    field public static final int GL_TESS_EVALUATION_SHADER_BIT_EXT = 16; // 0x10
-    field public static final int GL_TESS_EVALUATION_SHADER_EXT = 36487; // 0x8e87
-    field public static final int GL_TESS_GEN_MODE_EXT = 36470; // 0x8e76
-    field public static final int GL_TESS_GEN_POINT_MODE_EXT = 36473; // 0x8e79
-    field public static final int GL_TESS_GEN_SPACING_EXT = 36471; // 0x8e77
-    field public static final int GL_TESS_GEN_VERTEX_ORDER_EXT = 36472; // 0x8e78
-    field public static final int GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES = 37122; // 0x9102
-    field public static final int GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES = 37125; // 0x9105
-    field public static final int GL_TEXTURE_BINDING_BUFFER_EXT = 35884; // 0x8c2c
-    field public static final int GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT = 36874; // 0x900a
-    field public static final int GL_TEXTURE_BORDER_COLOR_EXT = 4100; // 0x1004
-    field public static final int GL_TEXTURE_BUFFER_BINDING_EXT = 35882; // 0x8c2a
-    field public static final int GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT = 35885; // 0x8c2d
-    field public static final int GL_TEXTURE_BUFFER_EXT = 35882; // 0x8c2a
-    field public static final int GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT = 37279; // 0x919f
-    field public static final int GL_TEXTURE_BUFFER_OFFSET_EXT = 37277; // 0x919d
-    field public static final int GL_TEXTURE_BUFFER_SIZE_EXT = 37278; // 0x919e
-    field public static final int GL_TEXTURE_CUBE_MAP_ARRAY_EXT = 36873; // 0x9009
-    field public static final int GL_TEXTURE_SRGB_DECODE_EXT = 35400; // 0x8a48
-    field public static final int GL_TRIANGLES_ADJACENCY_EXT = 12; // 0xc
-    field public static final int GL_TRIANGLE_STRIP_ADJACENCY_EXT = 13; // 0xd
-    field public static final int GL_UNDEFINED_VERTEX_EXT = 33376; // 0x8260
-    field public static final int GL_UNSIGNED_INT_IMAGE_BUFFER_EXT = 36967; // 0x9067
-    field public static final int GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT = 36970; // 0x906a
-    field public static final int GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = 37133; // 0x910d
-    field public static final int GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT = 36312; // 0x8dd8
-    field public static final int GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT = 36879; // 0x900f
-    field public static final int GL_VERTEX_ARRAY_KHR = 32884; // 0x8074
-  }
-
-  public static interface GLES31Ext.DebugProcKHR {
-    method public void onMessage(int, int, int, int, String);
-  }
-
-  public class GLES32 extends android.opengl.GLES31 {
-    method public static void glBlendBarrier();
-    method public static void glBlendEquationSeparatei(int, int, int);
-    method public static void glBlendEquationi(int, int);
-    method public static void glBlendFuncSeparatei(int, int, int, int, int);
-    method public static void glBlendFunci(int, int, int);
-    method public static void glColorMaski(int, boolean, boolean, boolean, boolean);
-    method public static void glCopyImageSubData(int, int, int, int, int, int, int, int, int, int, int, int, int, int, int);
-    method public static void glDebugMessageCallback(android.opengl.GLES32.DebugProc);
-    method public static void glDebugMessageControl(int, int, int, int, int[], int, boolean);
-    method public static void glDebugMessageControl(int, int, int, int, java.nio.IntBuffer, boolean);
-    method public static void glDebugMessageInsert(int, int, int, int, int, String);
-    method public static void glDisablei(int, int);
-    method public static void glDrawElementsBaseVertex(int, int, int, java.nio.Buffer, int);
-    method public static void glDrawElementsInstancedBaseVertex(int, int, int, java.nio.Buffer, int, int);
-    method public static void glDrawElementsInstancedBaseVertex(int, int, int, int, int, int);
-    method public static void glDrawRangeElementsBaseVertex(int, int, int, int, int, java.nio.Buffer, int);
-    method public static void glEnablei(int, int);
-    method public static void glFramebufferTexture(int, int, int, int);
-    method public static int glGetDebugMessageLog(int, int, int[], int, int[], int, int[], int, int[], int, int[], int, byte[], int);
-    method public static int glGetDebugMessageLog(int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.ByteBuffer);
-    method public static String[] glGetDebugMessageLog(int, int[], int, int[], int, int[], int, int[], int);
-    method public static String[] glGetDebugMessageLog(int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer);
-    method public static int glGetGraphicsResetStatus();
-    method public static String glGetObjectLabel(int, int);
-    method public static String glGetObjectPtrLabel(long);
-    method public static long glGetPointerv(int);
-    method public static void glGetSamplerParameterIiv(int, int, int[], int);
-    method public static void glGetSamplerParameterIiv(int, int, java.nio.IntBuffer);
-    method public static void glGetSamplerParameterIuiv(int, int, int[], int);
-    method public static void glGetSamplerParameterIuiv(int, int, java.nio.IntBuffer);
-    method public static void glGetTexParameterIiv(int, int, int[], int);
-    method public static void glGetTexParameterIiv(int, int, java.nio.IntBuffer);
-    method public static void glGetTexParameterIuiv(int, int, int[], int);
-    method public static void glGetTexParameterIuiv(int, int, java.nio.IntBuffer);
-    method public static void glGetnUniformfv(int, int, int, float[], int);
-    method public static void glGetnUniformfv(int, int, int, java.nio.FloatBuffer);
-    method public static void glGetnUniformiv(int, int, int, int[], int);
-    method public static void glGetnUniformiv(int, int, int, java.nio.IntBuffer);
-    method public static void glGetnUniformuiv(int, int, int, int[], int);
-    method public static void glGetnUniformuiv(int, int, int, java.nio.IntBuffer);
-    method public static boolean glIsEnabledi(int, int);
-    method public static void glMinSampleShading(float);
-    method public static void glObjectLabel(int, int, int, String);
-    method public static void glObjectPtrLabel(long, String);
-    method public static void glPatchParameteri(int, int);
-    method public static void glPopDebugGroup();
-    method public static void glPrimitiveBoundingBox(float, float, float, float, float, float, float, float);
-    method public static void glPushDebugGroup(int, int, int, String);
-    method public static void glReadnPixels(int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glSamplerParameterIiv(int, int, int[], int);
-    method public static void glSamplerParameterIiv(int, int, java.nio.IntBuffer);
-    method public static void glSamplerParameterIuiv(int, int, int[], int);
-    method public static void glSamplerParameterIuiv(int, int, java.nio.IntBuffer);
-    method public static void glTexBuffer(int, int, int);
-    method public static void glTexBufferRange(int, int, int, int, int);
-    method public static void glTexParameterIiv(int, int, int[], int);
-    method public static void glTexParameterIiv(int, int, java.nio.IntBuffer);
-    method public static void glTexParameterIuiv(int, int, int[], int);
-    method public static void glTexParameterIuiv(int, int, java.nio.IntBuffer);
-    method public static void glTexStorage3DMultisample(int, int, int, int, int, int, boolean);
-    field public static final int GL_BUFFER = 33504; // 0x82e0
-    field public static final int GL_CLAMP_TO_BORDER = 33069; // 0x812d
-    field public static final int GL_COLORBURN = 37530; // 0x929a
-    field public static final int GL_COLORDODGE = 37529; // 0x9299
-    field public static final int GL_COMPRESSED_RGBA_ASTC_10x10 = 37819; // 0x93bb
-    field public static final int GL_COMPRESSED_RGBA_ASTC_10x5 = 37816; // 0x93b8
-    field public static final int GL_COMPRESSED_RGBA_ASTC_10x6 = 37817; // 0x93b9
-    field public static final int GL_COMPRESSED_RGBA_ASTC_10x8 = 37818; // 0x93ba
-    field public static final int GL_COMPRESSED_RGBA_ASTC_12x10 = 37820; // 0x93bc
-    field public static final int GL_COMPRESSED_RGBA_ASTC_12x12 = 37821; // 0x93bd
-    field public static final int GL_COMPRESSED_RGBA_ASTC_4x4 = 37808; // 0x93b0
-    field public static final int GL_COMPRESSED_RGBA_ASTC_5x4 = 37809; // 0x93b1
-    field public static final int GL_COMPRESSED_RGBA_ASTC_5x5 = 37810; // 0x93b2
-    field public static final int GL_COMPRESSED_RGBA_ASTC_6x5 = 37811; // 0x93b3
-    field public static final int GL_COMPRESSED_RGBA_ASTC_6x6 = 37812; // 0x93b4
-    field public static final int GL_COMPRESSED_RGBA_ASTC_8x5 = 37813; // 0x93b5
-    field public static final int GL_COMPRESSED_RGBA_ASTC_8x6 = 37814; // 0x93b6
-    field public static final int GL_COMPRESSED_RGBA_ASTC_8x8 = 37815; // 0x93b7
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10 = 37851; // 0x93db
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5 = 37848; // 0x93d8
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6 = 37849; // 0x93d9
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8 = 37850; // 0x93da
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10 = 37852; // 0x93dc
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12 = 37853; // 0x93dd
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4 = 37840; // 0x93d0
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4 = 37841; // 0x93d1
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5 = 37842; // 0x93d2
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5 = 37843; // 0x93d3
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6 = 37844; // 0x93d4
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5 = 37845; // 0x93d5
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6 = 37846; // 0x93d6
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8 = 37847; // 0x93d7
-    field public static final int GL_CONTEXT_FLAGS = 33310; // 0x821e
-    field public static final int GL_CONTEXT_FLAG_DEBUG_BIT = 2; // 0x2
-    field public static final int GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT = 4; // 0x4
-    field public static final int GL_CONTEXT_LOST = 1287; // 0x507
-    field public static final int GL_DARKEN = 37527; // 0x9297
-    field public static final int GL_DEBUG_CALLBACK_FUNCTION = 33348; // 0x8244
-    field public static final int GL_DEBUG_CALLBACK_USER_PARAM = 33349; // 0x8245
-    field public static final int GL_DEBUG_GROUP_STACK_DEPTH = 33389; // 0x826d
-    field public static final int GL_DEBUG_LOGGED_MESSAGES = 37189; // 0x9145
-    field public static final int GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH = 33347; // 0x8243
-    field public static final int GL_DEBUG_OUTPUT = 37600; // 0x92e0
-    field public static final int GL_DEBUG_OUTPUT_SYNCHRONOUS = 33346; // 0x8242
-    field public static final int GL_DEBUG_SEVERITY_HIGH = 37190; // 0x9146
-    field public static final int GL_DEBUG_SEVERITY_LOW = 37192; // 0x9148
-    field public static final int GL_DEBUG_SEVERITY_MEDIUM = 37191; // 0x9147
-    field public static final int GL_DEBUG_SEVERITY_NOTIFICATION = 33387; // 0x826b
-    field public static final int GL_DEBUG_SOURCE_API = 33350; // 0x8246
-    field public static final int GL_DEBUG_SOURCE_APPLICATION = 33354; // 0x824a
-    field public static final int GL_DEBUG_SOURCE_OTHER = 33355; // 0x824b
-    field public static final int GL_DEBUG_SOURCE_SHADER_COMPILER = 33352; // 0x8248
-    field public static final int GL_DEBUG_SOURCE_THIRD_PARTY = 33353; // 0x8249
-    field public static final int GL_DEBUG_SOURCE_WINDOW_SYSTEM = 33351; // 0x8247
-    field public static final int GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR = 33357; // 0x824d
-    field public static final int GL_DEBUG_TYPE_ERROR = 33356; // 0x824c
-    field public static final int GL_DEBUG_TYPE_MARKER = 33384; // 0x8268
-    field public static final int GL_DEBUG_TYPE_OTHER = 33361; // 0x8251
-    field public static final int GL_DEBUG_TYPE_PERFORMANCE = 33360; // 0x8250
-    field public static final int GL_DEBUG_TYPE_POP_GROUP = 33386; // 0x826a
-    field public static final int GL_DEBUG_TYPE_PORTABILITY = 33359; // 0x824f
-    field public static final int GL_DEBUG_TYPE_PUSH_GROUP = 33385; // 0x8269
-    field public static final int GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR = 33358; // 0x824e
-    field public static final int GL_DIFFERENCE = 37534; // 0x929e
-    field public static final int GL_EXCLUSION = 37536; // 0x92a0
-    field public static final int GL_FIRST_VERTEX_CONVENTION = 36429; // 0x8e4d
-    field public static final int GL_FRACTIONAL_EVEN = 36476; // 0x8e7c
-    field public static final int GL_FRACTIONAL_ODD = 36475; // 0x8e7b
-    field public static final int GL_FRAGMENT_INTERPOLATION_OFFSET_BITS = 36445; // 0x8e5d
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_LAYERED = 36263; // 0x8da7
-    field public static final int GL_FRAMEBUFFER_DEFAULT_LAYERS = 37650; // 0x9312
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = 36264; // 0x8da8
-    field public static final int GL_GEOMETRY_INPUT_TYPE = 35095; // 0x8917
-    field public static final int GL_GEOMETRY_OUTPUT_TYPE = 35096; // 0x8918
-    field public static final int GL_GEOMETRY_SHADER = 36313; // 0x8dd9
-    field public static final int GL_GEOMETRY_SHADER_BIT = 4; // 0x4
-    field public static final int GL_GEOMETRY_SHADER_INVOCATIONS = 34943; // 0x887f
-    field public static final int GL_GEOMETRY_VERTICES_OUT = 35094; // 0x8916
-    field public static final int GL_GUILTY_CONTEXT_RESET = 33363; // 0x8253
-    field public static final int GL_HARDLIGHT = 37531; // 0x929b
-    field public static final int GL_HSL_COLOR = 37551; // 0x92af
-    field public static final int GL_HSL_HUE = 37549; // 0x92ad
-    field public static final int GL_HSL_LUMINOSITY = 37552; // 0x92b0
-    field public static final int GL_HSL_SATURATION = 37550; // 0x92ae
-    field public static final int GL_IMAGE_BUFFER = 36945; // 0x9051
-    field public static final int GL_IMAGE_CUBE_MAP_ARRAY = 36948; // 0x9054
-    field public static final int GL_INNOCENT_CONTEXT_RESET = 33364; // 0x8254
-    field public static final int GL_INT_IMAGE_BUFFER = 36956; // 0x905c
-    field public static final int GL_INT_IMAGE_CUBE_MAP_ARRAY = 36959; // 0x905f
-    field public static final int GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 37132; // 0x910c
-    field public static final int GL_INT_SAMPLER_BUFFER = 36304; // 0x8dd0
-    field public static final int GL_INT_SAMPLER_CUBE_MAP_ARRAY = 36878; // 0x900e
-    field public static final int GL_ISOLINES = 36474; // 0x8e7a
-    field public static final int GL_IS_PER_PATCH = 37607; // 0x92e7
-    field public static final int GL_LAST_VERTEX_CONVENTION = 36430; // 0x8e4e
-    field public static final int GL_LAYER_PROVOKING_VERTEX = 33374; // 0x825e
-    field public static final int GL_LIGHTEN = 37528; // 0x9298
-    field public static final int GL_LINES_ADJACENCY = 10; // 0xa
-    field public static final int GL_LINE_STRIP_ADJACENCY = 11; // 0xb
-    field public static final int GL_LOSE_CONTEXT_ON_RESET = 33362; // 0x8252
-    field public static final int GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS = 35378; // 0x8a32
-    field public static final int GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS = 36382; // 0x8e1e
-    field public static final int GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS = 36383; // 0x8e1f
-    field public static final int GL_MAX_DEBUG_GROUP_STACK_DEPTH = 33388; // 0x826c
-    field public static final int GL_MAX_DEBUG_LOGGED_MESSAGES = 37188; // 0x9144
-    field public static final int GL_MAX_DEBUG_MESSAGE_LENGTH = 37187; // 0x9143
-    field public static final int GL_MAX_FRAGMENT_INTERPOLATION_OFFSET = 36444; // 0x8e5c
-    field public static final int GL_MAX_FRAMEBUFFER_LAYERS = 37655; // 0x9317
-    field public static final int GL_MAX_GEOMETRY_ATOMIC_COUNTERS = 37589; // 0x92d5
-    field public static final int GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS = 37583; // 0x92cf
-    field public static final int GL_MAX_GEOMETRY_IMAGE_UNIFORMS = 37069; // 0x90cd
-    field public static final int GL_MAX_GEOMETRY_INPUT_COMPONENTS = 37155; // 0x9123
-    field public static final int GL_MAX_GEOMETRY_OUTPUT_COMPONENTS = 37156; // 0x9124
-    field public static final int GL_MAX_GEOMETRY_OUTPUT_VERTICES = 36320; // 0x8de0
-    field public static final int GL_MAX_GEOMETRY_SHADER_INVOCATIONS = 36442; // 0x8e5a
-    field public static final int GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS = 37079; // 0x90d7
-    field public static final int GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = 35881; // 0x8c29
-    field public static final int GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 36321; // 0x8de1
-    field public static final int GL_MAX_GEOMETRY_UNIFORM_BLOCKS = 35372; // 0x8a2c
-    field public static final int GL_MAX_GEOMETRY_UNIFORM_COMPONENTS = 36319; // 0x8ddf
-    field public static final int GL_MAX_LABEL_LENGTH = 33512; // 0x82e8
-    field public static final int GL_MAX_PATCH_VERTICES = 36477; // 0x8e7d
-    field public static final int GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS = 37587; // 0x92d3
-    field public static final int GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS = 37581; // 0x92cd
-    field public static final int GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS = 37067; // 0x90cb
-    field public static final int GL_MAX_TESS_CONTROL_INPUT_COMPONENTS = 34924; // 0x886c
-    field public static final int GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS = 36483; // 0x8e83
-    field public static final int GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS = 37080; // 0x90d8
-    field public static final int GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS = 36481; // 0x8e81
-    field public static final int GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS = 36485; // 0x8e85
-    field public static final int GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS = 36489; // 0x8e89
-    field public static final int GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS = 36479; // 0x8e7f
-    field public static final int GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS = 37588; // 0x92d4
-    field public static final int GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS = 37582; // 0x92ce
-    field public static final int GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS = 37068; // 0x90cc
-    field public static final int GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS = 34925; // 0x886d
-    field public static final int GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS = 36486; // 0x8e86
-    field public static final int GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS = 37081; // 0x90d9
-    field public static final int GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS = 36482; // 0x8e82
-    field public static final int GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS = 36490; // 0x8e8a
-    field public static final int GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS = 36480; // 0x8e80
-    field public static final int GL_MAX_TESS_GEN_LEVEL = 36478; // 0x8e7e
-    field public static final int GL_MAX_TESS_PATCH_COMPONENTS = 36484; // 0x8e84
-    field public static final int GL_MAX_TEXTURE_BUFFER_SIZE = 35883; // 0x8c2b
-    field public static final int GL_MIN_FRAGMENT_INTERPOLATION_OFFSET = 36443; // 0x8e5b
-    field public static final int GL_MIN_SAMPLE_SHADING_VALUE = 35895; // 0x8c37
-    field public static final int GL_MULTIPLY = 37524; // 0x9294
-    field public static final int GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY = 37762; // 0x9382
-    field public static final int GL_MULTISAMPLE_LINE_WIDTH_RANGE = 37761; // 0x9381
-    field public static final int GL_NO_RESET_NOTIFICATION = 33377; // 0x8261
-    field public static final int GL_OVERLAY = 37526; // 0x9296
-    field public static final int GL_PATCHES = 14; // 0xe
-    field public static final int GL_PATCH_VERTICES = 36466; // 0x8e72
-    field public static final int GL_PRIMITIVES_GENERATED = 35975; // 0x8c87
-    field public static final int GL_PRIMITIVE_BOUNDING_BOX = 37566; // 0x92be
-    field public static final int GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED = 33313; // 0x8221
-    field public static final int GL_PROGRAM = 33506; // 0x82e2
-    field public static final int GL_PROGRAM_PIPELINE = 33508; // 0x82e4
-    field public static final int GL_QUADS = 7; // 0x7
-    field public static final int GL_QUERY = 33507; // 0x82e3
-    field public static final int GL_REFERENCED_BY_GEOMETRY_SHADER = 37641; // 0x9309
-    field public static final int GL_REFERENCED_BY_TESS_CONTROL_SHADER = 37639; // 0x9307
-    field public static final int GL_REFERENCED_BY_TESS_EVALUATION_SHADER = 37640; // 0x9308
-    field public static final int GL_RESET_NOTIFICATION_STRATEGY = 33366; // 0x8256
-    field public static final int GL_SAMPLER = 33510; // 0x82e6
-    field public static final int GL_SAMPLER_2D_MULTISAMPLE_ARRAY = 37131; // 0x910b
-    field public static final int GL_SAMPLER_BUFFER = 36290; // 0x8dc2
-    field public static final int GL_SAMPLER_CUBE_MAP_ARRAY = 36876; // 0x900c
-    field public static final int GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW = 36877; // 0x900d
-    field public static final int GL_SAMPLE_SHADING = 35894; // 0x8c36
-    field public static final int GL_SCREEN = 37525; // 0x9295
-    field public static final int GL_SHADER = 33505; // 0x82e1
-    field public static final int GL_SOFTLIGHT = 37532; // 0x929c
-    field public static final int GL_STACK_OVERFLOW = 1283; // 0x503
-    field public static final int GL_STACK_UNDERFLOW = 1284; // 0x504
-    field public static final int GL_TESS_CONTROL_OUTPUT_VERTICES = 36469; // 0x8e75
-    field public static final int GL_TESS_CONTROL_SHADER = 36488; // 0x8e88
-    field public static final int GL_TESS_CONTROL_SHADER_BIT = 8; // 0x8
-    field public static final int GL_TESS_EVALUATION_SHADER = 36487; // 0x8e87
-    field public static final int GL_TESS_EVALUATION_SHADER_BIT = 16; // 0x10
-    field public static final int GL_TESS_GEN_MODE = 36470; // 0x8e76
-    field public static final int GL_TESS_GEN_POINT_MODE = 36473; // 0x8e79
-    field public static final int GL_TESS_GEN_SPACING = 36471; // 0x8e77
-    field public static final int GL_TESS_GEN_VERTEX_ORDER = 36472; // 0x8e78
-    field public static final int GL_TEXTURE_2D_MULTISAMPLE_ARRAY = 37122; // 0x9102
-    field public static final int GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY = 37125; // 0x9105
-    field public static final int GL_TEXTURE_BINDING_BUFFER = 35884; // 0x8c2c
-    field public static final int GL_TEXTURE_BINDING_CUBE_MAP_ARRAY = 36874; // 0x900a
-    field public static final int GL_TEXTURE_BORDER_COLOR = 4100; // 0x1004
-    field public static final int GL_TEXTURE_BUFFER = 35882; // 0x8c2a
-    field public static final int GL_TEXTURE_BUFFER_BINDING = 35882; // 0x8c2a
-    field public static final int GL_TEXTURE_BUFFER_DATA_STORE_BINDING = 35885; // 0x8c2d
-    field public static final int GL_TEXTURE_BUFFER_OFFSET = 37277; // 0x919d
-    field public static final int GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT = 37279; // 0x919f
-    field public static final int GL_TEXTURE_BUFFER_SIZE = 37278; // 0x919e
-    field public static final int GL_TEXTURE_CUBE_MAP_ARRAY = 36873; // 0x9009
-    field public static final int GL_TRIANGLES_ADJACENCY = 12; // 0xc
-    field public static final int GL_TRIANGLE_STRIP_ADJACENCY = 13; // 0xd
-    field public static final int GL_UNDEFINED_VERTEX = 33376; // 0x8260
-    field public static final int GL_UNKNOWN_CONTEXT_RESET = 33365; // 0x8255
-    field public static final int GL_UNSIGNED_INT_IMAGE_BUFFER = 36967; // 0x9067
-    field public static final int GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY = 36970; // 0x906a
-    field public static final int GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 37133; // 0x910d
-    field public static final int GL_UNSIGNED_INT_SAMPLER_BUFFER = 36312; // 0x8dd8
-    field public static final int GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY = 36879; // 0x900f
-    field public static final int GL_VERTEX_ARRAY = 32884; // 0x8074
-  }
-
-  public static interface GLES32.DebugProc {
-    method public void onMessage(int, int, int, int, String);
-  }
-
-  public class GLException extends java.lang.RuntimeException {
-    ctor public GLException(int);
-    ctor public GLException(int, String);
-  }
-
-  public class GLSurfaceView extends android.view.SurfaceView implements android.view.SurfaceHolder.Callback2 {
-    ctor public GLSurfaceView(android.content.Context);
-    ctor public GLSurfaceView(android.content.Context, android.util.AttributeSet);
-    method public int getDebugFlags();
-    method public boolean getPreserveEGLContextOnPause();
-    method public int getRenderMode();
-    method public void onPause();
-    method public void onResume();
-    method public void queueEvent(Runnable);
-    method public void requestRender();
-    method public void setDebugFlags(int);
-    method public void setEGLConfigChooser(android.opengl.GLSurfaceView.EGLConfigChooser);
-    method public void setEGLConfigChooser(boolean);
-    method public void setEGLConfigChooser(int, int, int, int, int, int);
-    method public void setEGLContextClientVersion(int);
-    method public void setEGLContextFactory(android.opengl.GLSurfaceView.EGLContextFactory);
-    method public void setEGLWindowSurfaceFactory(android.opengl.GLSurfaceView.EGLWindowSurfaceFactory);
-    method public void setGLWrapper(android.opengl.GLSurfaceView.GLWrapper);
-    method public void setPreserveEGLContextOnPause(boolean);
-    method public void setRenderMode(int);
-    method public void setRenderer(android.opengl.GLSurfaceView.Renderer);
-    method public void surfaceChanged(android.view.SurfaceHolder, int, int, int);
-    method public void surfaceCreated(android.view.SurfaceHolder);
-    method public void surfaceDestroyed(android.view.SurfaceHolder);
-    method @Deprecated public void surfaceRedrawNeeded(android.view.SurfaceHolder);
-    field public static final int DEBUG_CHECK_GL_ERROR = 1; // 0x1
-    field public static final int DEBUG_LOG_GL_CALLS = 2; // 0x2
-    field public static final int RENDERMODE_CONTINUOUSLY = 1; // 0x1
-    field public static final int RENDERMODE_WHEN_DIRTY = 0; // 0x0
-  }
-
-  public static interface GLSurfaceView.EGLConfigChooser {
-    method public javax.microedition.khronos.egl.EGLConfig chooseConfig(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay);
-  }
-
-  public static interface GLSurfaceView.EGLContextFactory {
-    method public javax.microedition.khronos.egl.EGLContext createContext(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig);
-    method public void destroyContext(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLContext);
-  }
-
-  public static interface GLSurfaceView.EGLWindowSurfaceFactory {
-    method public javax.microedition.khronos.egl.EGLSurface createWindowSurface(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, Object);
-    method public void destroySurface(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface);
-  }
-
-  public static interface GLSurfaceView.GLWrapper {
-    method public javax.microedition.khronos.opengles.GL wrap(javax.microedition.khronos.opengles.GL);
-  }
-
-  public static interface GLSurfaceView.Renderer {
-    method public void onDrawFrame(javax.microedition.khronos.opengles.GL10);
-    method public void onSurfaceChanged(javax.microedition.khronos.opengles.GL10, int, int);
-    method public void onSurfaceCreated(javax.microedition.khronos.opengles.GL10, javax.microedition.khronos.egl.EGLConfig);
-  }
-
-  public class GLU {
-    ctor public GLU();
-    method public static String gluErrorString(int);
-    method public static void gluLookAt(javax.microedition.khronos.opengles.GL10, float, float, float, float, float, float, float, float, float);
-    method public static void gluOrtho2D(javax.microedition.khronos.opengles.GL10, float, float, float, float);
-    method public static void gluPerspective(javax.microedition.khronos.opengles.GL10, float, float, float, float);
-    method public static int gluProject(float, float, float, float[], int, float[], int, int[], int, float[], int);
-    method public static int gluUnProject(float, float, float, float[], int, float[], int, int[], int, float[], int);
-  }
-
-  public final class GLUtils {
-    method public static String getEGLErrorString(int);
-    method public static int getInternalFormat(android.graphics.Bitmap);
-    method public static int getType(android.graphics.Bitmap);
-    method public static void texImage2D(int, int, int, android.graphics.Bitmap, int);
-    method public static void texImage2D(int, int, int, android.graphics.Bitmap, int, int);
-    method public static void texImage2D(int, int, android.graphics.Bitmap, int);
-    method public static void texSubImage2D(int, int, int, int, android.graphics.Bitmap);
-    method public static void texSubImage2D(int, int, int, int, android.graphics.Bitmap, int, int);
-  }
-
-  public class Matrix {
-    ctor @Deprecated public Matrix();
-    method public static void frustumM(float[], int, float, float, float, float, float, float);
-    method public static boolean invertM(float[], int, float[], int);
-    method public static float length(float, float, float);
-    method public static void multiplyMM(float[], int, float[], int, float[], int);
-    method public static void multiplyMV(float[], int, float[], int, float[], int);
-    method public static void orthoM(float[], int, float, float, float, float, float, float);
-    method public static void perspectiveM(float[], int, float, float, float, float);
-    method public static void rotateM(float[], int, float[], int, float, float, float, float);
-    method public static void rotateM(float[], int, float, float, float, float);
-    method public static void scaleM(float[], int, float[], int, float, float, float);
-    method public static void scaleM(float[], int, float, float, float);
-    method public static void setIdentityM(float[], int);
-    method public static void setLookAtM(float[], int, float, float, float, float, float, float, float, float, float);
-    method public static void setRotateEulerM(float[], int, float, float, float);
-    method public static void setRotateM(float[], int, float, float, float, float);
-    method public static void translateM(float[], int, float[], int, float, float, float);
-    method public static void translateM(float[], int, float, float, float);
-    method public static void transposeM(float[], int, float[], int);
-  }
-
-  public class Visibility {
-    ctor public Visibility();
-    method public static void computeBoundingSphere(float[], int, int, float[], int);
-    method public static int frustumCullSpheres(float[], int, float[], int, int, int[], int, int);
-    method public static int visibilityTest(float[], int, float[], int, char[], int, int);
-  }
-
-}
-
-package android.os {
-
-  @Deprecated public abstract class AsyncTask<Params, Progress, Result> {
-    ctor @Deprecated public AsyncTask();
-    method @Deprecated public final boolean cancel(boolean);
-    method @Deprecated @WorkerThread protected abstract Result doInBackground(Params...);
-    method @Deprecated @MainThread public final android.os.AsyncTask<Params,Progress,Result> execute(Params...);
-    method @Deprecated @MainThread public static void execute(Runnable);
-    method @Deprecated @MainThread public final android.os.AsyncTask<Params,Progress,Result> executeOnExecutor(java.util.concurrent.Executor, Params...);
-    method @Deprecated public final Result get() throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
-    method @Deprecated public final Result get(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
-    method @Deprecated public final android.os.AsyncTask.Status getStatus();
-    method @Deprecated public final boolean isCancelled();
-    method @Deprecated @MainThread protected void onCancelled(Result);
-    method @Deprecated @MainThread protected void onCancelled();
-    method @Deprecated @MainThread protected void onPostExecute(Result);
-    method @Deprecated @MainThread protected void onPreExecute();
-    method @Deprecated @MainThread protected void onProgressUpdate(Progress...);
-    method @Deprecated @WorkerThread protected final void publishProgress(Progress...);
-    field @Deprecated public static final java.util.concurrent.Executor SERIAL_EXECUTOR;
-    field @Deprecated public static final java.util.concurrent.Executor THREAD_POOL_EXECUTOR;
-  }
-
-  @Deprecated public enum AsyncTask.Status {
-    enum_constant @Deprecated public static final android.os.AsyncTask.Status FINISHED;
-    enum_constant @Deprecated public static final android.os.AsyncTask.Status PENDING;
-    enum_constant @Deprecated public static final android.os.AsyncTask.Status RUNNING;
-  }
-
-  public class BadParcelableException extends android.util.AndroidRuntimeException {
-    ctor public BadParcelableException(String);
-    ctor public BadParcelableException(Exception);
-  }
-
-  public class BaseBundle {
-    method public void clear();
-    method public boolean containsKey(String);
-    method @Nullable public Object get(String);
-    method public boolean getBoolean(String);
-    method public boolean getBoolean(String, boolean);
-    method @Nullable public boolean[] getBooleanArray(@Nullable String);
-    method public double getDouble(String);
-    method public double getDouble(String, double);
-    method @Nullable public double[] getDoubleArray(@Nullable String);
-    method public int getInt(String);
-    method public int getInt(String, int);
-    method @Nullable public int[] getIntArray(@Nullable String);
-    method public long getLong(String);
-    method public long getLong(String, long);
-    method @Nullable public long[] getLongArray(@Nullable String);
-    method @Nullable public String getString(@Nullable String);
-    method public String getString(@Nullable String, String);
-    method @Nullable public String[] getStringArray(@Nullable String);
-    method public boolean isEmpty();
-    method public java.util.Set<java.lang.String> keySet();
-    method public void putAll(android.os.PersistableBundle);
-    method public void putBoolean(@Nullable String, boolean);
-    method public void putBooleanArray(@Nullable String, @Nullable boolean[]);
-    method public void putDouble(@Nullable String, double);
-    method public void putDoubleArray(@Nullable String, @Nullable double[]);
-    method public void putInt(@Nullable String, int);
-    method public void putIntArray(@Nullable String, @Nullable int[]);
-    method public void putLong(@Nullable String, long);
-    method public void putLongArray(@Nullable String, @Nullable long[]);
-    method public void putString(@Nullable String, @Nullable String);
-    method public void putStringArray(@Nullable String, @Nullable String[]);
-    method public void remove(String);
-    method public int size();
-  }
-
-  public class BatteryManager {
-    method public long computeChargeTimeRemaining();
-    method public int getIntProperty(int);
-    method public long getLongProperty(int);
-    method public boolean isCharging();
-    field public static final String ACTION_CHARGING = "android.os.action.CHARGING";
-    field public static final String ACTION_DISCHARGING = "android.os.action.DISCHARGING";
-    field public static final int BATTERY_HEALTH_COLD = 7; // 0x7
-    field public static final int BATTERY_HEALTH_DEAD = 4; // 0x4
-    field public static final int BATTERY_HEALTH_GOOD = 2; // 0x2
-    field public static final int BATTERY_HEALTH_OVERHEAT = 3; // 0x3
-    field public static final int BATTERY_HEALTH_OVER_VOLTAGE = 5; // 0x5
-    field public static final int BATTERY_HEALTH_UNKNOWN = 1; // 0x1
-    field public static final int BATTERY_HEALTH_UNSPECIFIED_FAILURE = 6; // 0x6
-    field public static final int BATTERY_PLUGGED_AC = 1; // 0x1
-    field public static final int BATTERY_PLUGGED_USB = 2; // 0x2
-    field public static final int BATTERY_PLUGGED_WIRELESS = 4; // 0x4
-    field public static final int BATTERY_PROPERTY_CAPACITY = 4; // 0x4
-    field public static final int BATTERY_PROPERTY_CHARGE_COUNTER = 1; // 0x1
-    field public static final int BATTERY_PROPERTY_CURRENT_AVERAGE = 3; // 0x3
-    field public static final int BATTERY_PROPERTY_CURRENT_NOW = 2; // 0x2
-    field public static final int BATTERY_PROPERTY_ENERGY_COUNTER = 5; // 0x5
-    field public static final int BATTERY_PROPERTY_STATUS = 6; // 0x6
-    field public static final int BATTERY_STATUS_CHARGING = 2; // 0x2
-    field public static final int BATTERY_STATUS_DISCHARGING = 3; // 0x3
-    field public static final int BATTERY_STATUS_FULL = 5; // 0x5
-    field public static final int BATTERY_STATUS_NOT_CHARGING = 4; // 0x4
-    field public static final int BATTERY_STATUS_UNKNOWN = 1; // 0x1
-    field public static final String EXTRA_BATTERY_LOW = "battery_low";
-    field public static final String EXTRA_HEALTH = "health";
-    field public static final String EXTRA_ICON_SMALL = "icon-small";
-    field public static final String EXTRA_LEVEL = "level";
-    field public static final String EXTRA_PLUGGED = "plugged";
-    field public static final String EXTRA_PRESENT = "present";
-    field public static final String EXTRA_SCALE = "scale";
-    field public static final String EXTRA_STATUS = "status";
-    field public static final String EXTRA_TECHNOLOGY = "technology";
-    field public static final String EXTRA_TEMPERATURE = "temperature";
-    field public static final String EXTRA_VOLTAGE = "voltage";
-  }
-
-  public class Binder implements android.os.IBinder {
-    ctor public Binder();
-    ctor public Binder(@Nullable String);
-    method public void attachInterface(@Nullable android.os.IInterface, @Nullable String);
-    method public static final long clearCallingIdentity();
-    method public static final long clearCallingWorkSource();
-    method public void dump(@NonNull java.io.FileDescriptor, @Nullable String[]);
-    method protected void dump(@NonNull java.io.FileDescriptor, @NonNull java.io.PrintWriter, @Nullable String[]);
-    method public void dumpAsync(@NonNull java.io.FileDescriptor, @Nullable String[]);
-    method public static final void flushPendingCommands();
-    method public static final int getCallingPid();
-    method public static final int getCallingUid();
-    method public static final int getCallingUidOrThrow();
-    method @NonNull public static final android.os.UserHandle getCallingUserHandle();
-    method public static final int getCallingWorkSourceUid();
-    method @Nullable public String getInterfaceDescriptor();
-    method public boolean isBinderAlive();
-    method public static final void joinThreadPool();
-    method public void linkToDeath(@NonNull android.os.IBinder.DeathRecipient, int);
-    method protected boolean onTransact(int, @NonNull android.os.Parcel, @Nullable android.os.Parcel, int) throws android.os.RemoteException;
-    method public boolean pingBinder();
-    method @Nullable public android.os.IInterface queryLocalInterface(@NonNull String);
-    method public static final void restoreCallingIdentity(long);
-    method public static final void restoreCallingWorkSource(long);
-    method public static final long setCallingWorkSourceUid(int);
-    method public final boolean transact(int, @NonNull android.os.Parcel, @Nullable android.os.Parcel, int) throws android.os.RemoteException;
-    method public boolean unlinkToDeath(@NonNull android.os.IBinder.DeathRecipient, int);
-  }
-
-  public class Build {
-    ctor public Build();
-    method @NonNull public static java.util.List<android.os.Build.Partition> getFingerprintedPartitions();
-    method public static String getRadioVersion();
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public static String getSerial();
-    field public static final String BOARD;
-    field public static final String BOOTLOADER;
-    field public static final String BRAND;
-    field @Deprecated public static final String CPU_ABI;
-    field @Deprecated public static final String CPU_ABI2;
-    field public static final String DEVICE;
-    field public static final String DISPLAY;
-    field public static final String FINGERPRINT;
-    field public static final String HARDWARE;
-    field public static final String HOST;
-    field public static final String ID;
-    field public static final String MANUFACTURER;
-    field public static final String MODEL;
-    field public static final String PRODUCT;
-    field @Deprecated public static final String RADIO;
-    field @Deprecated public static final String SERIAL;
-    field @NonNull public static final String SKU;
-    field public static final String[] SUPPORTED_32_BIT_ABIS;
-    field public static final String[] SUPPORTED_64_BIT_ABIS;
-    field public static final String[] SUPPORTED_ABIS;
-    field public static final String TAGS;
-    field public static final long TIME;
-    field public static final String TYPE;
-    field public static final String UNKNOWN = "unknown";
-    field public static final String USER;
-  }
-
-  public static class Build.Partition {
-    method public long getBuildTimeMillis();
-    method @NonNull public String getFingerprint();
-    method @NonNull public String getName();
-    field public static final String PARTITION_NAME_SYSTEM = "system";
-  }
-
-  public static class Build.VERSION {
-    ctor public Build.VERSION();
-    field public static final String BASE_OS;
-    field public static final String CODENAME;
-    field public static final String INCREMENTAL;
-    field public static final int PREVIEW_SDK_INT;
-    field public static final String RELEASE;
-    field @NonNull public static final String RELEASE_OR_CODENAME;
-    field @Deprecated public static final String SDK;
-    field public static final int SDK_INT;
-    field public static final String SECURITY_PATCH;
-  }
-
-  public static class Build.VERSION_CODES {
-    ctor public Build.VERSION_CODES();
-    field public static final int BASE = 1; // 0x1
-    field public static final int BASE_1_1 = 2; // 0x2
-    field public static final int CUPCAKE = 3; // 0x3
-    field public static final int CUR_DEVELOPMENT = 10000; // 0x2710
-    field public static final int DONUT = 4; // 0x4
-    field public static final int ECLAIR = 5; // 0x5
-    field public static final int ECLAIR_0_1 = 6; // 0x6
-    field public static final int ECLAIR_MR1 = 7; // 0x7
-    field public static final int FROYO = 8; // 0x8
-    field public static final int GINGERBREAD = 9; // 0x9
-    field public static final int GINGERBREAD_MR1 = 10; // 0xa
-    field public static final int HONEYCOMB = 11; // 0xb
-    field public static final int HONEYCOMB_MR1 = 12; // 0xc
-    field public static final int HONEYCOMB_MR2 = 13; // 0xd
-    field public static final int ICE_CREAM_SANDWICH = 14; // 0xe
-    field public static final int ICE_CREAM_SANDWICH_MR1 = 15; // 0xf
-    field public static final int JELLY_BEAN = 16; // 0x10
-    field public static final int JELLY_BEAN_MR1 = 17; // 0x11
-    field public static final int JELLY_BEAN_MR2 = 18; // 0x12
-    field public static final int KITKAT = 19; // 0x13
-    field public static final int KITKAT_WATCH = 20; // 0x14
-    field public static final int LOLLIPOP = 21; // 0x15
-    field public static final int LOLLIPOP_MR1 = 22; // 0x16
-    field public static final int M = 23; // 0x17
-    field public static final int N = 24; // 0x18
-    field public static final int N_MR1 = 25; // 0x19
-    field public static final int O = 26; // 0x1a
-    field public static final int O_MR1 = 27; // 0x1b
-    field public static final int P = 28; // 0x1c
-    field public static final int Q = 29; // 0x1d
-    field public static final int R = 30; // 0x1e
-  }
-
-  public final class Bundle extends android.os.BaseBundle implements java.lang.Cloneable android.os.Parcelable {
-    ctor public Bundle();
-    ctor public Bundle(ClassLoader);
-    ctor public Bundle(int);
-    ctor public Bundle(android.os.Bundle);
-    ctor public Bundle(android.os.PersistableBundle);
-    method public Object clone();
-    method public android.os.Bundle deepCopy();
-    method public int describeContents();
-    method @Nullable public android.os.IBinder getBinder(@Nullable String);
-    method @Nullable public android.os.Bundle getBundle(@Nullable String);
-    method public byte getByte(String);
-    method public Byte getByte(String, byte);
-    method @Nullable public byte[] getByteArray(@Nullable String);
-    method public char getChar(String);
-    method public char getChar(String, char);
-    method @Nullable public char[] getCharArray(@Nullable String);
-    method @Nullable public CharSequence getCharSequence(@Nullable String);
-    method public CharSequence getCharSequence(@Nullable String, CharSequence);
-    method @Nullable public CharSequence[] getCharSequenceArray(@Nullable String);
-    method @Nullable public java.util.ArrayList<java.lang.CharSequence> getCharSequenceArrayList(@Nullable String);
-    method public ClassLoader getClassLoader();
-    method public float getFloat(String);
-    method public float getFloat(String, float);
-    method @Nullable public float[] getFloatArray(@Nullable String);
-    method @Nullable public java.util.ArrayList<java.lang.Integer> getIntegerArrayList(@Nullable String);
-    method @Nullable public <T extends android.os.Parcelable> T getParcelable(@Nullable String);
-    method @Nullable public android.os.Parcelable[] getParcelableArray(@Nullable String);
-    method @Nullable public <T extends android.os.Parcelable> java.util.ArrayList<T> getParcelableArrayList(@Nullable String);
-    method @Nullable public java.io.Serializable getSerializable(@Nullable String);
-    method public short getShort(String);
-    method public short getShort(String, short);
-    method @Nullable public short[] getShortArray(@Nullable String);
-    method @Nullable public android.util.Size getSize(@Nullable String);
-    method @Nullable public android.util.SizeF getSizeF(@Nullable String);
-    method @Nullable public <T extends android.os.Parcelable> android.util.SparseArray<T> getSparseParcelableArray(@Nullable String);
-    method @Nullable public java.util.ArrayList<java.lang.String> getStringArrayList(@Nullable String);
-    method public boolean hasFileDescriptors();
-    method public void putAll(android.os.Bundle);
-    method public void putBinder(@Nullable String, @Nullable android.os.IBinder);
-    method public void putBundle(@Nullable String, @Nullable android.os.Bundle);
-    method public void putByte(@Nullable String, byte);
-    method public void putByteArray(@Nullable String, @Nullable byte[]);
-    method public void putChar(@Nullable String, char);
-    method public void putCharArray(@Nullable String, @Nullable char[]);
-    method public void putCharSequence(@Nullable String, @Nullable CharSequence);
-    method public void putCharSequenceArray(@Nullable String, @Nullable CharSequence[]);
-    method public void putCharSequenceArrayList(@Nullable String, @Nullable java.util.ArrayList<java.lang.CharSequence>);
-    method public void putFloat(@Nullable String, float);
-    method public void putFloatArray(@Nullable String, @Nullable float[]);
-    method public void putIntegerArrayList(@Nullable String, @Nullable java.util.ArrayList<java.lang.Integer>);
-    method public void putParcelable(@Nullable String, @Nullable android.os.Parcelable);
-    method public void putParcelableArray(@Nullable String, @Nullable android.os.Parcelable[]);
-    method public void putParcelableArrayList(@Nullable String, @Nullable java.util.ArrayList<? extends android.os.Parcelable>);
-    method public void putSerializable(@Nullable String, @Nullable java.io.Serializable);
-    method public void putShort(@Nullable String, short);
-    method public void putShortArray(@Nullable String, @Nullable short[]);
-    method public void putSize(@Nullable String, @Nullable android.util.Size);
-    method public void putSizeF(@Nullable String, @Nullable android.util.SizeF);
-    method public void putSparseParcelableArray(@Nullable String, @Nullable android.util.SparseArray<? extends android.os.Parcelable>);
-    method public void putStringArrayList(@Nullable String, @Nullable java.util.ArrayList<java.lang.String>);
-    method public void readFromParcel(android.os.Parcel);
-    method public void setClassLoader(ClassLoader);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.Bundle> CREATOR;
-    field public static final android.os.Bundle EMPTY;
-  }
-
-  public final class CancellationSignal {
-    ctor public CancellationSignal();
-    method public void cancel();
-    method public boolean isCanceled();
-    method public void setOnCancelListener(android.os.CancellationSignal.OnCancelListener);
-    method public void throwIfCanceled();
-  }
-
-  public static interface CancellationSignal.OnCancelListener {
-    method public void onCancel();
-  }
-
-  public class ConditionVariable {
-    ctor public ConditionVariable();
-    ctor public ConditionVariable(boolean);
-    method public void block();
-    method public boolean block(long);
-    method public void close();
-    method public void open();
-  }
-
-  public abstract class CountDownTimer {
-    ctor public CountDownTimer(long, long);
-    method public final void cancel();
-    method public abstract void onFinish();
-    method public abstract void onTick(long);
-    method public final android.os.CountDownTimer start();
-  }
-
-  public final class CpuUsageInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getActive();
-    method public long getTotal();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.CpuUsageInfo> CREATOR;
-  }
-
-  public class DeadObjectException extends android.os.RemoteException {
-    ctor public DeadObjectException();
-    ctor public DeadObjectException(String);
-  }
-
-  public class DeadSystemException extends android.os.DeadObjectException {
-    ctor public DeadSystemException();
-  }
-
-  public final class Debug {
-    method public static void attachJvmtiAgent(@NonNull String, @Nullable String, @Nullable ClassLoader) throws java.io.IOException;
-    method @Deprecated public static void changeDebugPort(int);
-    method public static void dumpHprofData(String) throws java.io.IOException;
-    method public static boolean dumpService(String, java.io.FileDescriptor, String[]);
-    method public static void enableEmulatorTraceOutput();
-    method public static int getBinderDeathObjectCount();
-    method public static int getBinderLocalObjectCount();
-    method public static int getBinderProxyObjectCount();
-    method public static int getBinderReceivedTransactions();
-    method public static int getBinderSentTransactions();
-    method @Deprecated public static int getGlobalAllocCount();
-    method @Deprecated public static int getGlobalAllocSize();
-    method @Deprecated public static int getGlobalClassInitCount();
-    method @Deprecated public static int getGlobalClassInitTime();
-    method @Deprecated public static int getGlobalExternalAllocCount();
-    method @Deprecated public static int getGlobalExternalAllocSize();
-    method @Deprecated public static int getGlobalExternalFreedCount();
-    method @Deprecated public static int getGlobalExternalFreedSize();
-    method @Deprecated public static int getGlobalFreedCount();
-    method @Deprecated public static int getGlobalFreedSize();
-    method @Deprecated public static int getGlobalGcInvocationCount();
-    method public static int getLoadedClassCount();
-    method public static void getMemoryInfo(android.os.Debug.MemoryInfo);
-    method public static long getNativeHeapAllocatedSize();
-    method public static long getNativeHeapFreeSize();
-    method public static long getNativeHeapSize();
-    method public static long getPss();
-    method public static String getRuntimeStat(String);
-    method public static java.util.Map<java.lang.String,java.lang.String> getRuntimeStats();
-    method @Deprecated public static int getThreadAllocCount();
-    method @Deprecated public static int getThreadAllocSize();
-    method @Deprecated public static int getThreadExternalAllocCount();
-    method @Deprecated public static int getThreadExternalAllocSize();
-    method @Deprecated public static int getThreadGcInvocationCount();
-    method public static boolean isDebuggerConnected();
-    method public static void printLoadedClasses(int);
-    method @Deprecated public static void resetAllCounts();
-    method @Deprecated public static void resetGlobalAllocCount();
-    method @Deprecated public static void resetGlobalAllocSize();
-    method @Deprecated public static void resetGlobalClassInitCount();
-    method @Deprecated public static void resetGlobalClassInitTime();
-    method @Deprecated public static void resetGlobalExternalAllocCount();
-    method @Deprecated public static void resetGlobalExternalAllocSize();
-    method @Deprecated public static void resetGlobalExternalFreedCount();
-    method @Deprecated public static void resetGlobalExternalFreedSize();
-    method @Deprecated public static void resetGlobalFreedCount();
-    method @Deprecated public static void resetGlobalFreedSize();
-    method @Deprecated public static void resetGlobalGcInvocationCount();
-    method @Deprecated public static void resetThreadAllocCount();
-    method @Deprecated public static void resetThreadAllocSize();
-    method @Deprecated public static void resetThreadExternalAllocCount();
-    method @Deprecated public static void resetThreadExternalAllocSize();
-    method @Deprecated public static void resetThreadGcInvocationCount();
-    method @Deprecated public static int setAllocationLimit(int);
-    method @Deprecated public static int setGlobalAllocationLimit(int);
-    method @Deprecated public static void startAllocCounting();
-    method public static void startMethodTracing();
-    method public static void startMethodTracing(String);
-    method public static void startMethodTracing(String, int);
-    method public static void startMethodTracing(String, int, int);
-    method public static void startMethodTracingSampling(String, int, int);
-    method public static void startNativeTracing();
-    method @Deprecated public static void stopAllocCounting();
-    method public static void stopMethodTracing();
-    method public static void stopNativeTracing();
-    method public static long threadCpuTimeNanos();
-    method public static void waitForDebugger();
-    method public static boolean waitingForDebugger();
-    field public static final int SHOW_CLASSLOADER = 2; // 0x2
-    field public static final int SHOW_FULL_DETAIL = 1; // 0x1
-    field public static final int SHOW_INITIALIZED = 4; // 0x4
-    field @Deprecated public static final int TRACE_COUNT_ALLOCS = 1; // 0x1
-  }
-
-  @Deprecated public static class Debug.InstructionCount {
-    ctor @Deprecated public Debug.InstructionCount();
-    method @Deprecated public boolean collect();
-    method @Deprecated public int globalMethodInvocations();
-    method @Deprecated public int globalTotal();
-    method @Deprecated public boolean resetAndStart();
-  }
-
-  public static class Debug.MemoryInfo implements android.os.Parcelable {
-    ctor public Debug.MemoryInfo();
-    method public int describeContents();
-    method public String getMemoryStat(String);
-    method public java.util.Map<java.lang.String,java.lang.String> getMemoryStats();
-    method public int getTotalPrivateClean();
-    method public int getTotalPrivateDirty();
-    method public int getTotalPss();
-    method public int getTotalSharedClean();
-    method public int getTotalSharedDirty();
-    method public int getTotalSwappablePss();
-    method public void readFromParcel(android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.Debug.MemoryInfo> CREATOR;
-    field public int dalvikPrivateDirty;
-    field public int dalvikPss;
-    field public int dalvikSharedDirty;
-    field public int nativePrivateDirty;
-    field public int nativePss;
-    field public int nativeSharedDirty;
-    field public int otherPrivateDirty;
-    field public int otherPss;
-    field public int otherSharedDirty;
-  }
-
-  public class DropBoxManager {
-    ctor protected DropBoxManager();
-    method public void addData(String, byte[], int);
-    method public void addFile(String, java.io.File, int) throws java.io.IOException;
-    method public void addText(String, String);
-    method @Nullable @RequiresPermission(allOf={android.Manifest.permission.READ_LOGS, android.Manifest.permission.PACKAGE_USAGE_STATS}) public android.os.DropBoxManager.Entry getNextEntry(String, long);
-    method public boolean isTagEnabled(String);
-    field public static final String ACTION_DROPBOX_ENTRY_ADDED = "android.intent.action.DROPBOX_ENTRY_ADDED";
-    field public static final String EXTRA_DROPPED_COUNT = "android.os.extra.DROPPED_COUNT";
-    field public static final String EXTRA_TAG = "tag";
-    field public static final String EXTRA_TIME = "time";
-    field public static final int IS_EMPTY = 1; // 0x1
-    field public static final int IS_GZIPPED = 4; // 0x4
-    field public static final int IS_TEXT = 2; // 0x2
-  }
-
-  public static class DropBoxManager.Entry implements java.io.Closeable android.os.Parcelable {
-    ctor public DropBoxManager.Entry(String, long);
-    ctor public DropBoxManager.Entry(String, long, String);
-    ctor public DropBoxManager.Entry(String, long, byte[], int);
-    ctor public DropBoxManager.Entry(String, long, android.os.ParcelFileDescriptor, int);
-    ctor public DropBoxManager.Entry(String, long, java.io.File, int) throws java.io.IOException;
-    method public void close();
-    method public int describeContents();
-    method public int getFlags();
-    method public java.io.InputStream getInputStream() throws java.io.IOException;
-    method public String getTag();
-    method public String getText(int);
-    method public long getTimeMillis();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.DropBoxManager.Entry> CREATOR;
-  }
-
-  public class Environment {
-    ctor public Environment();
-    method public static java.io.File getDataDirectory();
-    method public static java.io.File getDownloadCacheDirectory();
-    method @Deprecated public static java.io.File getExternalStorageDirectory();
-    method @Deprecated public static java.io.File getExternalStoragePublicDirectory(String);
-    method public static String getExternalStorageState();
-    method public static String getExternalStorageState(java.io.File);
-    method @NonNull public static java.io.File getRootDirectory();
-    method @NonNull public static java.io.File getStorageDirectory();
-    method @Deprecated public static String getStorageState(java.io.File);
-    method public static boolean isExternalStorageEmulated();
-    method public static boolean isExternalStorageEmulated(@NonNull java.io.File);
-    method public static boolean isExternalStorageLegacy();
-    method public static boolean isExternalStorageLegacy(@NonNull java.io.File);
-    method public static boolean isExternalStorageManager();
-    method public static boolean isExternalStorageManager(@NonNull java.io.File);
-    method public static boolean isExternalStorageRemovable();
-    method public static boolean isExternalStorageRemovable(@NonNull java.io.File);
-    field public static String DIRECTORY_ALARMS;
-    field public static String DIRECTORY_AUDIOBOOKS;
-    field public static String DIRECTORY_DCIM;
-    field public static String DIRECTORY_DOCUMENTS;
-    field public static String DIRECTORY_DOWNLOADS;
-    field public static String DIRECTORY_MOVIES;
-    field public static String DIRECTORY_MUSIC;
-    field public static String DIRECTORY_NOTIFICATIONS;
-    field public static String DIRECTORY_PICTURES;
-    field public static String DIRECTORY_PODCASTS;
-    field public static String DIRECTORY_RINGTONES;
-    field public static String DIRECTORY_SCREENSHOTS;
-    field public static final String MEDIA_BAD_REMOVAL = "bad_removal";
-    field public static final String MEDIA_CHECKING = "checking";
-    field public static final String MEDIA_EJECTING = "ejecting";
-    field public static final String MEDIA_MOUNTED = "mounted";
-    field public static final String MEDIA_MOUNTED_READ_ONLY = "mounted_ro";
-    field public static final String MEDIA_NOFS = "nofs";
-    field public static final String MEDIA_REMOVED = "removed";
-    field public static final String MEDIA_SHARED = "shared";
-    field public static final String MEDIA_UNKNOWN = "unknown";
-    field public static final String MEDIA_UNMOUNTABLE = "unmountable";
-    field public static final String MEDIA_UNMOUNTED = "unmounted";
-  }
-
-  public abstract class FileObserver {
-    ctor @Deprecated public FileObserver(String);
-    ctor public FileObserver(@NonNull java.io.File);
-    ctor public FileObserver(@NonNull java.util.List<java.io.File>);
-    ctor @Deprecated public FileObserver(String, int);
-    ctor public FileObserver(@NonNull java.io.File, int);
-    ctor public FileObserver(@NonNull java.util.List<java.io.File>, int);
-    method protected void finalize();
-    method public abstract void onEvent(int, @Nullable String);
-    method public void startWatching();
-    method public void stopWatching();
-    field public static final int ACCESS = 1; // 0x1
-    field public static final int ALL_EVENTS = 4095; // 0xfff
-    field public static final int ATTRIB = 4; // 0x4
-    field public static final int CLOSE_NOWRITE = 16; // 0x10
-    field public static final int CLOSE_WRITE = 8; // 0x8
-    field public static final int CREATE = 256; // 0x100
-    field public static final int DELETE = 512; // 0x200
-    field public static final int DELETE_SELF = 1024; // 0x400
-    field public static final int MODIFY = 2; // 0x2
-    field public static final int MOVED_FROM = 64; // 0x40
-    field public static final int MOVED_TO = 128; // 0x80
-    field public static final int MOVE_SELF = 2048; // 0x800
-    field public static final int OPEN = 32; // 0x20
-  }
-
-  public class FileUriExposedException extends java.lang.RuntimeException {
-    ctor public FileUriExposedException(String);
-  }
-
-  public final class FileUtils {
-    method @Deprecated public static void closeQuietly(@Nullable AutoCloseable);
-    method @Deprecated public static void closeQuietly(@Nullable java.io.FileDescriptor);
-    method public static long copy(@NonNull java.io.InputStream, @NonNull java.io.OutputStream) throws java.io.IOException;
-    method public static long copy(@NonNull java.io.InputStream, @NonNull java.io.OutputStream, @Nullable android.os.CancellationSignal, @Nullable java.util.concurrent.Executor, @Nullable android.os.FileUtils.ProgressListener) throws java.io.IOException;
-    method public static long copy(@NonNull java.io.FileDescriptor, @NonNull java.io.FileDescriptor) throws java.io.IOException;
-    method public static long copy(@NonNull java.io.FileDescriptor, @NonNull java.io.FileDescriptor, @Nullable android.os.CancellationSignal, @Nullable java.util.concurrent.Executor, @Nullable android.os.FileUtils.ProgressListener) throws java.io.IOException;
-  }
-
-  public static interface FileUtils.ProgressListener {
-    method public void onProgress(long);
-  }
-
-  public class Handler {
-    ctor @Deprecated public Handler();
-    ctor @Deprecated public Handler(@Nullable android.os.Handler.Callback);
-    ctor public Handler(@NonNull android.os.Looper);
-    ctor public Handler(@NonNull android.os.Looper, @Nullable android.os.Handler.Callback);
-    method @NonNull public static android.os.Handler createAsync(@NonNull android.os.Looper);
-    method @NonNull public static android.os.Handler createAsync(@NonNull android.os.Looper, @NonNull android.os.Handler.Callback);
-    method public void dispatchMessage(@NonNull android.os.Message);
-    method public final void dump(@NonNull android.util.Printer, @NonNull String);
-    method @NonNull public final android.os.Looper getLooper();
-    method @NonNull public String getMessageName(@NonNull android.os.Message);
-    method public void handleMessage(@NonNull android.os.Message);
-    method public final boolean hasCallbacks(@NonNull Runnable);
-    method public final boolean hasMessages(int);
-    method public final boolean hasMessages(int, @Nullable Object);
-    method @NonNull public final android.os.Message obtainMessage();
-    method @NonNull public final android.os.Message obtainMessage(int);
-    method @NonNull public final android.os.Message obtainMessage(int, @Nullable Object);
-    method @NonNull public final android.os.Message obtainMessage(int, int, int);
-    method @NonNull public final android.os.Message obtainMessage(int, int, int, @Nullable Object);
-    method public final boolean post(@NonNull Runnable);
-    method public final boolean postAtFrontOfQueue(@NonNull Runnable);
-    method public final boolean postAtTime(@NonNull Runnable, long);
-    method public final boolean postAtTime(@NonNull Runnable, @Nullable Object, long);
-    method public final boolean postDelayed(@NonNull Runnable, long);
-    method public final boolean postDelayed(@NonNull Runnable, @Nullable Object, long);
-    method public final void removeCallbacks(@NonNull Runnable);
-    method public final void removeCallbacks(@NonNull Runnable, @Nullable Object);
-    method public final void removeCallbacksAndMessages(@Nullable Object);
-    method public final void removeMessages(int);
-    method public final void removeMessages(int, @Nullable Object);
-    method public final boolean sendEmptyMessage(int);
-    method public final boolean sendEmptyMessageAtTime(int, long);
-    method public final boolean sendEmptyMessageDelayed(int, long);
-    method public final boolean sendMessage(@NonNull android.os.Message);
-    method public final boolean sendMessageAtFrontOfQueue(@NonNull android.os.Message);
-    method public boolean sendMessageAtTime(@NonNull android.os.Message, long);
-    method public final boolean sendMessageDelayed(@NonNull android.os.Message, long);
-  }
-
-  public static interface Handler.Callback {
-    method public boolean handleMessage(@NonNull android.os.Message);
-  }
-
-  public class HandlerThread extends java.lang.Thread {
-    ctor public HandlerThread(String);
-    ctor public HandlerThread(String, int);
-    method public android.os.Looper getLooper();
-    method public int getThreadId();
-    method protected void onLooperPrepared();
-    method public boolean quit();
-    method public boolean quitSafely();
-  }
-
-  public class HardwarePropertiesManager {
-    method @NonNull public android.os.CpuUsageInfo[] getCpuUsages();
-    method @NonNull public float[] getDeviceTemperatures(int, int);
-    method @NonNull public float[] getFanSpeeds();
-    field public static final int DEVICE_TEMPERATURE_BATTERY = 2; // 0x2
-    field public static final int DEVICE_TEMPERATURE_CPU = 0; // 0x0
-    field public static final int DEVICE_TEMPERATURE_GPU = 1; // 0x1
-    field public static final int DEVICE_TEMPERATURE_SKIN = 3; // 0x3
-    field public static final int TEMPERATURE_CURRENT = 0; // 0x0
-    field public static final int TEMPERATURE_SHUTDOWN = 2; // 0x2
-    field public static final int TEMPERATURE_THROTTLING = 1; // 0x1
-    field public static final int TEMPERATURE_THROTTLING_BELOW_VR_MIN = 3; // 0x3
-    field public static final float UNDEFINED_TEMPERATURE = -3.4028235E38f;
-  }
-
-  public interface IBinder {
-    method public void dump(@NonNull java.io.FileDescriptor, @Nullable String[]) throws android.os.RemoteException;
-    method public void dumpAsync(@NonNull java.io.FileDescriptor, @Nullable String[]) throws android.os.RemoteException;
-    method @Nullable public String getInterfaceDescriptor() throws android.os.RemoteException;
-    method public static int getSuggestedMaxIpcSizeBytes();
-    method public boolean isBinderAlive();
-    method public void linkToDeath(@NonNull android.os.IBinder.DeathRecipient, int) throws android.os.RemoteException;
-    method public boolean pingBinder();
-    method @Nullable public android.os.IInterface queryLocalInterface(@NonNull String);
-    method public boolean transact(int, @NonNull android.os.Parcel, @Nullable android.os.Parcel, int) throws android.os.RemoteException;
-    method public boolean unlinkToDeath(@NonNull android.os.IBinder.DeathRecipient, int);
-    field public static final int DUMP_TRANSACTION = 1598311760; // 0x5f444d50
-    field public static final int FIRST_CALL_TRANSACTION = 1; // 0x1
-    field public static final int FLAG_ONEWAY = 1; // 0x1
-    field public static final int INTERFACE_TRANSACTION = 1598968902; // 0x5f4e5446
-    field public static final int LAST_CALL_TRANSACTION = 16777215; // 0xffffff
-    field public static final int LIKE_TRANSACTION = 1598835019; // 0x5f4c494b
-    field public static final int PING_TRANSACTION = 1599098439; // 0x5f504e47
-    field public static final int TWEET_TRANSACTION = 1599362900; // 0x5f545754
-  }
-
-  public static interface IBinder.DeathRecipient {
-    method public void binderDied();
-  }
-
-  public interface IInterface {
-    method public android.os.IBinder asBinder();
-  }
-
-  public class LimitExceededException extends java.lang.IllegalStateException {
-    ctor public LimitExceededException();
-    ctor public LimitExceededException(@NonNull String);
-  }
-
-  public final class LocaleList implements android.os.Parcelable {
-    ctor public LocaleList(@NonNull java.util.Locale...);
-    method public int describeContents();
-    method @NonNull public static android.os.LocaleList forLanguageTags(@Nullable String);
-    method public java.util.Locale get(int);
-    method @NonNull @Size(min=1) public static android.os.LocaleList getAdjustedDefault();
-    method @NonNull @Size(min=1) public static android.os.LocaleList getDefault();
-    method @NonNull public static android.os.LocaleList getEmptyLocaleList();
-    method @Nullable public java.util.Locale getFirstMatch(String[]);
-    method @IntRange(from=0xffffffff) public int indexOf(java.util.Locale);
-    method public boolean isEmpty();
-    method public static boolean isPseudoLocale(@Nullable android.icu.util.ULocale);
-    method public static void setDefault(@NonNull @Size(min=1) android.os.LocaleList);
-    method @IntRange(from=0) public int size();
-    method @NonNull public String toLanguageTags();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.LocaleList> CREATOR;
-  }
-
-  public final class Looper {
-    method public void dump(@NonNull android.util.Printer, @NonNull String);
-    method public static android.os.Looper getMainLooper();
-    method @NonNull public android.os.MessageQueue getQueue();
-    method @NonNull public Thread getThread();
-    method public boolean isCurrentThread();
-    method public static void loop();
-    method @Nullable public static android.os.Looper myLooper();
-    method @NonNull public static android.os.MessageQueue myQueue();
-    method public static void prepare();
-    method @Deprecated public static void prepareMainLooper();
-    method public void quit();
-    method public void quitSafely();
-    method public void setMessageLogging(@Nullable android.util.Printer);
-  }
-
-  public class MemoryFile {
-    ctor public MemoryFile(String, int) throws java.io.IOException;
-    method @Deprecated public boolean allowPurging(boolean) throws java.io.IOException;
-    method public void close();
-    method public java.io.InputStream getInputStream();
-    method public java.io.OutputStream getOutputStream();
-    method @Deprecated public boolean isPurgingAllowed();
-    method public int length();
-    method public int readBytes(byte[], int, int, int) throws java.io.IOException;
-    method public void writeBytes(byte[], int, int, int) throws java.io.IOException;
-  }
-
-  public final class Message implements android.os.Parcelable {
-    ctor public Message();
-    method public void copyFrom(android.os.Message);
-    method public int describeContents();
-    method public Runnable getCallback();
-    method public android.os.Bundle getData();
-    method public android.os.Handler getTarget();
-    method public long getWhen();
-    method public boolean isAsynchronous();
-    method public static android.os.Message obtain();
-    method public static android.os.Message obtain(android.os.Message);
-    method public static android.os.Message obtain(android.os.Handler);
-    method public static android.os.Message obtain(android.os.Handler, Runnable);
-    method public static android.os.Message obtain(android.os.Handler, int);
-    method public static android.os.Message obtain(android.os.Handler, int, Object);
-    method public static android.os.Message obtain(android.os.Handler, int, int, int);
-    method public static android.os.Message obtain(android.os.Handler, int, int, int, Object);
-    method public android.os.Bundle peekData();
-    method public void recycle();
-    method public void sendToTarget();
-    method public void setAsynchronous(boolean);
-    method public void setData(android.os.Bundle);
-    method public void setTarget(android.os.Handler);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.Message> CREATOR;
-    field public int arg1;
-    field public int arg2;
-    field public Object obj;
-    field public android.os.Messenger replyTo;
-    field public int sendingUid;
-    field public int what;
-  }
-
-  public final class MessageQueue {
-    method public void addIdleHandler(@NonNull android.os.MessageQueue.IdleHandler);
-    method public void addOnFileDescriptorEventListener(@NonNull java.io.FileDescriptor, int, @NonNull android.os.MessageQueue.OnFileDescriptorEventListener);
-    method public boolean isIdle();
-    method public void removeIdleHandler(@NonNull android.os.MessageQueue.IdleHandler);
-    method public void removeOnFileDescriptorEventListener(@NonNull java.io.FileDescriptor);
-  }
-
-  public static interface MessageQueue.IdleHandler {
-    method public boolean queueIdle();
-  }
-
-  public static interface MessageQueue.OnFileDescriptorEventListener {
-    method public int onFileDescriptorEvents(@NonNull java.io.FileDescriptor, int);
-    field public static final int EVENT_ERROR = 4; // 0x4
-    field public static final int EVENT_INPUT = 1; // 0x1
-    field public static final int EVENT_OUTPUT = 2; // 0x2
-  }
-
-  public final class Messenger implements android.os.Parcelable {
-    ctor public Messenger(android.os.Handler);
-    ctor public Messenger(android.os.IBinder);
-    method public int describeContents();
-    method public android.os.IBinder getBinder();
-    method public static android.os.Messenger readMessengerOrNullFromParcel(android.os.Parcel);
-    method public void send(android.os.Message) throws android.os.RemoteException;
-    method public static void writeMessengerOrNullToParcel(android.os.Messenger, android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.Messenger> CREATOR;
-  }
-
-  public class NetworkOnMainThreadException extends java.lang.RuntimeException {
-    ctor public NetworkOnMainThreadException();
-  }
-
-  public class OperationCanceledException extends java.lang.RuntimeException {
-    ctor public OperationCanceledException();
-    ctor public OperationCanceledException(String);
-  }
-
-  public final class Parcel {
-    method public void appendFrom(android.os.Parcel, int, int);
-    method @Nullable public android.os.IBinder[] createBinderArray();
-    method @Nullable public java.util.ArrayList<android.os.IBinder> createBinderArrayList();
-    method @Nullable public boolean[] createBooleanArray();
-    method @Nullable public byte[] createByteArray();
-    method @Nullable public char[] createCharArray();
-    method @Nullable public double[] createDoubleArray();
-    method @Nullable public float[] createFloatArray();
-    method @Nullable public int[] createIntArray();
-    method @Nullable public long[] createLongArray();
-    method @Nullable public String[] createStringArray();
-    method @Nullable public java.util.ArrayList<java.lang.String> createStringArrayList();
-    method @Nullable public <T> T[] createTypedArray(@NonNull android.os.Parcelable.Creator<T>);
-    method @Nullable public <T> java.util.ArrayList<T> createTypedArrayList(@NonNull android.os.Parcelable.Creator<T>);
-    method @Nullable public <T extends android.os.Parcelable> android.util.ArrayMap<java.lang.String,T> createTypedArrayMap(@NonNull android.os.Parcelable.Creator<T>);
-    method @Nullable public <T extends android.os.Parcelable> android.util.SparseArray<T> createTypedSparseArray(@NonNull android.os.Parcelable.Creator<T>);
-    method public int dataAvail();
-    method public int dataCapacity();
-    method public int dataPosition();
-    method public int dataSize();
-    method public void enforceInterface(String);
-    method public boolean hasFileDescriptors();
-    method public byte[] marshall();
-    method @NonNull public static android.os.Parcel obtain();
-    method @Nullable public Object[] readArray(@Nullable ClassLoader);
-    method @Nullable public java.util.ArrayList readArrayList(@Nullable ClassLoader);
-    method public void readBinderArray(@NonNull android.os.IBinder[]);
-    method public void readBinderList(@NonNull java.util.List<android.os.IBinder>);
-    method public boolean readBoolean();
-    method public void readBooleanArray(@NonNull boolean[]);
-    method @Nullable public android.os.Bundle readBundle();
-    method @Nullable public android.os.Bundle readBundle(@Nullable ClassLoader);
-    method public byte readByte();
-    method public void readByteArray(@NonNull byte[]);
-    method public void readCharArray(@NonNull char[]);
-    method public double readDouble();
-    method public void readDoubleArray(@NonNull double[]);
-    method public void readException();
-    method public void readException(int, String);
-    method public android.os.ParcelFileDescriptor readFileDescriptor();
-    method public float readFloat();
-    method public void readFloatArray(@NonNull float[]);
-    method @Nullable public java.util.HashMap readHashMap(@Nullable ClassLoader);
-    method public int readInt();
-    method public void readIntArray(@NonNull int[]);
-    method public void readList(@NonNull java.util.List, @Nullable ClassLoader);
-    method public long readLong();
-    method public void readLongArray(@NonNull long[]);
-    method public void readMap(@NonNull java.util.Map, @Nullable ClassLoader);
-    method @Nullable public <T extends android.os.Parcelable> T readParcelable(@Nullable ClassLoader);
-    method @Nullable public android.os.Parcelable[] readParcelableArray(@Nullable ClassLoader);
-    method @Nullable public android.os.Parcelable.Creator<?> readParcelableCreator(@Nullable ClassLoader);
-    method @NonNull public <T extends android.os.Parcelable> java.util.List<T> readParcelableList(@NonNull java.util.List<T>, @Nullable ClassLoader);
-    method @Nullable public android.os.PersistableBundle readPersistableBundle();
-    method @Nullable public android.os.PersistableBundle readPersistableBundle(@Nullable ClassLoader);
-    method @Nullable public java.io.Serializable readSerializable();
-    method @NonNull public android.util.Size readSize();
-    method @NonNull public android.util.SizeF readSizeF();
-    method @Nullable public <T> android.util.SparseArray<T> readSparseArray(@Nullable ClassLoader);
-    method @Nullable public android.util.SparseBooleanArray readSparseBooleanArray();
-    method @Nullable public String readString();
-    method public void readStringArray(@NonNull String[]);
-    method public void readStringList(@NonNull java.util.List<java.lang.String>);
-    method public android.os.IBinder readStrongBinder();
-    method public <T> void readTypedArray(@NonNull T[], @NonNull android.os.Parcelable.Creator<T>);
-    method public <T> void readTypedList(@NonNull java.util.List<T>, @NonNull android.os.Parcelable.Creator<T>);
-    method @Nullable public <T> T readTypedObject(@NonNull android.os.Parcelable.Creator<T>);
-    method @Nullable public Object readValue(@Nullable ClassLoader);
-    method public void recycle();
-    method public void setDataCapacity(int);
-    method public void setDataPosition(int);
-    method public void setDataSize(int);
-    method public void unmarshall(@NonNull byte[], int, int);
-    method public void writeArray(@Nullable Object[]);
-    method public void writeBinderArray(@Nullable android.os.IBinder[]);
-    method public void writeBinderList(@Nullable java.util.List<android.os.IBinder>);
-    method public void writeBoolean(boolean);
-    method public void writeBooleanArray(@Nullable boolean[]);
-    method public void writeBundle(@Nullable android.os.Bundle);
-    method public void writeByte(byte);
-    method public void writeByteArray(@Nullable byte[]);
-    method public void writeByteArray(@Nullable byte[], int, int);
-    method public void writeCharArray(@Nullable char[]);
-    method public void writeDouble(double);
-    method public void writeDoubleArray(@Nullable double[]);
-    method public void writeException(@NonNull Exception);
-    method public void writeFileDescriptor(@NonNull java.io.FileDescriptor);
-    method public void writeFloat(float);
-    method public void writeFloatArray(@Nullable float[]);
-    method public void writeInt(int);
-    method public void writeIntArray(@Nullable int[]);
-    method public void writeInterfaceToken(String);
-    method public void writeList(@Nullable java.util.List);
-    method public void writeLong(long);
-    method public void writeLongArray(@Nullable long[]);
-    method public void writeMap(@Nullable java.util.Map);
-    method public void writeNoException();
-    method public void writeParcelable(@Nullable android.os.Parcelable, int);
-    method public <T extends android.os.Parcelable> void writeParcelableArray(@Nullable T[], int);
-    method public void writeParcelableCreator(@NonNull android.os.Parcelable);
-    method public <T extends android.os.Parcelable> void writeParcelableList(@Nullable java.util.List<T>, int);
-    method public void writePersistableBundle(@Nullable android.os.PersistableBundle);
-    method public void writeSerializable(@Nullable java.io.Serializable);
-    method public void writeSize(@NonNull android.util.Size);
-    method public void writeSizeF(@NonNull android.util.SizeF);
-    method public <T> void writeSparseArray(@Nullable android.util.SparseArray<T>);
-    method public void writeSparseBooleanArray(@Nullable android.util.SparseBooleanArray);
-    method public void writeString(@Nullable String);
-    method public void writeStringArray(@Nullable String[]);
-    method public void writeStringList(@Nullable java.util.List<java.lang.String>);
-    method public void writeStrongBinder(android.os.IBinder);
-    method public void writeStrongInterface(android.os.IInterface);
-    method public <T extends android.os.Parcelable> void writeTypedArray(@Nullable T[], int);
-    method public <T extends android.os.Parcelable> void writeTypedArrayMap(@Nullable android.util.ArrayMap<java.lang.String,T>, int);
-    method public <T extends android.os.Parcelable> void writeTypedList(@Nullable java.util.List<T>);
-    method public <T extends android.os.Parcelable> void writeTypedObject(@Nullable T, int);
-    method public <T extends android.os.Parcelable> void writeTypedSparseArray(@Nullable android.util.SparseArray<T>, int);
-    method public void writeValue(@Nullable Object);
-    field public static final android.os.Parcelable.Creator<java.lang.String> STRING_CREATOR;
-  }
-
-  public class ParcelFileDescriptor implements java.io.Closeable android.os.Parcelable {
-    ctor public ParcelFileDescriptor(android.os.ParcelFileDescriptor);
-    method public static android.os.ParcelFileDescriptor adoptFd(int);
-    method public boolean canDetectErrors();
-    method public void checkError() throws java.io.IOException;
-    method public void close() throws java.io.IOException;
-    method public void closeWithError(String) throws java.io.IOException;
-    method public static android.os.ParcelFileDescriptor[] createPipe() throws java.io.IOException;
-    method public static android.os.ParcelFileDescriptor[] createReliablePipe() throws java.io.IOException;
-    method public static android.os.ParcelFileDescriptor[] createReliableSocketPair() throws java.io.IOException;
-    method public static android.os.ParcelFileDescriptor[] createSocketPair() throws java.io.IOException;
-    method public int describeContents();
-    method public int detachFd();
-    method public static android.os.ParcelFileDescriptor dup(java.io.FileDescriptor) throws java.io.IOException;
-    method public android.os.ParcelFileDescriptor dup() throws java.io.IOException;
-    method public static android.os.ParcelFileDescriptor fromDatagramSocket(java.net.DatagramSocket);
-    method public static android.os.ParcelFileDescriptor fromFd(int) throws java.io.IOException;
-    method public static android.os.ParcelFileDescriptor fromSocket(java.net.Socket);
-    method public int getFd();
-    method public java.io.FileDescriptor getFileDescriptor();
-    method public long getStatSize();
-    method public static android.os.ParcelFileDescriptor open(java.io.File, int) throws java.io.FileNotFoundException;
-    method public static android.os.ParcelFileDescriptor open(java.io.File, int, android.os.Handler, android.os.ParcelFileDescriptor.OnCloseListener) throws java.io.IOException;
-    method public static int parseMode(String);
-    method @NonNull public static android.os.ParcelFileDescriptor wrap(@NonNull android.os.ParcelFileDescriptor, @NonNull android.os.Handler, @NonNull android.os.ParcelFileDescriptor.OnCloseListener) throws java.io.IOException;
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.ParcelFileDescriptor> CREATOR;
-    field public static final int MODE_APPEND = 33554432; // 0x2000000
-    field public static final int MODE_CREATE = 134217728; // 0x8000000
-    field public static final int MODE_READ_ONLY = 268435456; // 0x10000000
-    field public static final int MODE_READ_WRITE = 805306368; // 0x30000000
-    field public static final int MODE_TRUNCATE = 67108864; // 0x4000000
-    field @Deprecated public static final int MODE_WORLD_READABLE = 1; // 0x1
-    field @Deprecated public static final int MODE_WORLD_WRITEABLE = 2; // 0x2
-    field public static final int MODE_WRITE_ONLY = 536870912; // 0x20000000
-  }
-
-  public static class ParcelFileDescriptor.AutoCloseInputStream extends java.io.FileInputStream {
-    ctor public ParcelFileDescriptor.AutoCloseInputStream(android.os.ParcelFileDescriptor);
-  }
-
-  public static class ParcelFileDescriptor.AutoCloseOutputStream extends java.io.FileOutputStream {
-    ctor public ParcelFileDescriptor.AutoCloseOutputStream(android.os.ParcelFileDescriptor);
-  }
-
-  public static class ParcelFileDescriptor.FileDescriptorDetachedException extends java.io.IOException {
-    ctor public ParcelFileDescriptor.FileDescriptorDetachedException();
-  }
-
-  public static interface ParcelFileDescriptor.OnCloseListener {
-    method public void onClose(java.io.IOException);
-  }
-
-  public class ParcelFormatException extends java.lang.RuntimeException {
-    ctor public ParcelFormatException();
-    ctor public ParcelFormatException(String);
-  }
-
-  public final class ParcelUuid implements android.os.Parcelable {
-    ctor public ParcelUuid(java.util.UUID);
-    method public int describeContents();
-    method public static android.os.ParcelUuid fromString(String);
-    method public java.util.UUID getUuid();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.ParcelUuid> CREATOR;
-  }
-
-  public interface Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CONTENTS_FILE_DESCRIPTOR = 1; // 0x1
-    field public static final int PARCELABLE_WRITE_RETURN_VALUE = 1; // 0x1
-  }
-
-  public static interface Parcelable.ClassLoaderCreator<T> extends android.os.Parcelable.Creator<T> {
-    method public T createFromParcel(android.os.Parcel, ClassLoader);
-  }
-
-  public static interface Parcelable.Creator<T> {
-    method public T createFromParcel(android.os.Parcel);
-    method public T[] newArray(int);
-  }
-
-  public class PatternMatcher implements android.os.Parcelable {
-    ctor public PatternMatcher(String, int);
-    ctor public PatternMatcher(android.os.Parcel);
-    method public int describeContents();
-    method public final String getPath();
-    method public final int getType();
-    method public boolean match(String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.PatternMatcher> CREATOR;
-    field public static final int PATTERN_ADVANCED_GLOB = 3; // 0x3
-    field public static final int PATTERN_LITERAL = 0; // 0x0
-    field public static final int PATTERN_PREFIX = 1; // 0x1
-    field public static final int PATTERN_SIMPLE_GLOB = 2; // 0x2
-  }
-
-  public final class PersistableBundle extends android.os.BaseBundle implements java.lang.Cloneable android.os.Parcelable {
-    ctor public PersistableBundle();
-    ctor public PersistableBundle(int);
-    ctor public PersistableBundle(android.os.PersistableBundle);
-    method public Object clone();
-    method public android.os.PersistableBundle deepCopy();
-    method public int describeContents();
-    method @Nullable public android.os.PersistableBundle getPersistableBundle(@Nullable String);
-    method public void putPersistableBundle(@Nullable String, @Nullable android.os.PersistableBundle);
-    method @NonNull public static android.os.PersistableBundle readFromStream(@NonNull java.io.InputStream) throws java.io.IOException;
-    method public void writeToParcel(android.os.Parcel, int);
-    method public void writeToStream(@NonNull java.io.OutputStream) throws java.io.IOException;
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.PersistableBundle> CREATOR;
-    field public static final android.os.PersistableBundle EMPTY;
-  }
-
-  public final class PowerManager {
-    method public void addThermalStatusListener(@NonNull android.os.PowerManager.OnThermalStatusChangedListener);
-    method public void addThermalStatusListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.PowerManager.OnThermalStatusChangedListener);
-    method public int getCurrentThermalStatus();
-    method public int getLocationPowerSaveMode();
-    method public float getThermalHeadroom(@IntRange(from=0, to=60) int);
-    method public boolean isDeviceIdleMode();
-    method public boolean isIgnoringBatteryOptimizations(String);
-    method public boolean isInteractive();
-    method public boolean isPowerSaveMode();
-    method public boolean isRebootingUserspaceSupported();
-    method @Deprecated public boolean isScreenOn();
-    method public boolean isSustainedPerformanceModeSupported();
-    method public boolean isWakeLockLevelSupported(int);
-    method public android.os.PowerManager.WakeLock newWakeLock(int, String);
-    method @RequiresPermission(android.Manifest.permission.REBOOT) public void reboot(@Nullable String);
-    method public void removeThermalStatusListener(@NonNull android.os.PowerManager.OnThermalStatusChangedListener);
-    field public static final int ACQUIRE_CAUSES_WAKEUP = 268435456; // 0x10000000
-    field public static final String ACTION_DEVICE_IDLE_MODE_CHANGED = "android.os.action.DEVICE_IDLE_MODE_CHANGED";
-    field public static final String ACTION_POWER_SAVE_MODE_CHANGED = "android.os.action.POWER_SAVE_MODE_CHANGED";
-    field @Deprecated public static final int FULL_WAKE_LOCK = 26; // 0x1a
-    field public static final int LOCATION_MODE_ALL_DISABLED_WHEN_SCREEN_OFF = 2; // 0x2
-    field public static final int LOCATION_MODE_FOREGROUND_ONLY = 3; // 0x3
-    field public static final int LOCATION_MODE_GPS_DISABLED_WHEN_SCREEN_OFF = 1; // 0x1
-    field public static final int LOCATION_MODE_NO_CHANGE = 0; // 0x0
-    field public static final int LOCATION_MODE_THROTTLE_REQUESTS_WHEN_SCREEN_OFF = 4; // 0x4
-    field public static final int ON_AFTER_RELEASE = 536870912; // 0x20000000
-    field public static final int PARTIAL_WAKE_LOCK = 1; // 0x1
-    field public static final int PROXIMITY_SCREEN_OFF_WAKE_LOCK = 32; // 0x20
-    field public static final int RELEASE_FLAG_WAIT_FOR_NO_PROXIMITY = 1; // 0x1
-    field @Deprecated public static final int SCREEN_BRIGHT_WAKE_LOCK = 10; // 0xa
-    field @Deprecated public static final int SCREEN_DIM_WAKE_LOCK = 6; // 0x6
-    field public static final int THERMAL_STATUS_CRITICAL = 4; // 0x4
-    field public static final int THERMAL_STATUS_EMERGENCY = 5; // 0x5
-    field public static final int THERMAL_STATUS_LIGHT = 1; // 0x1
-    field public static final int THERMAL_STATUS_MODERATE = 2; // 0x2
-    field public static final int THERMAL_STATUS_NONE = 0; // 0x0
-    field public static final int THERMAL_STATUS_SEVERE = 3; // 0x3
-    field public static final int THERMAL_STATUS_SHUTDOWN = 6; // 0x6
-  }
-
-  public static interface PowerManager.OnThermalStatusChangedListener {
-    method public void onThermalStatusChanged(int);
-  }
-
-  public final class PowerManager.WakeLock {
-    method public void acquire();
-    method public void acquire(long);
-    method public boolean isHeld();
-    method public void release();
-    method public void release(int);
-    method public void setReferenceCounted(boolean);
-    method public void setWorkSource(android.os.WorkSource);
-  }
-
-  public class Process {
-    ctor public Process();
-    method public static final long getElapsedCpuTime();
-    method public static final int[] getExclusiveCores();
-    method public static final int getGidForName(String);
-    method public static final long getStartElapsedRealtime();
-    method public static final long getStartUptimeMillis();
-    method public static final int getThreadPriority(int) throws java.lang.IllegalArgumentException;
-    method public static final int getUidForName(String);
-    method public static final boolean is64Bit();
-    method public static boolean isApplicationUid(int);
-    method public static final boolean isIsolated();
-    method public static final void killProcess(int);
-    method public static final int myPid();
-    method public static final int myTid();
-    method public static final int myUid();
-    method public static android.os.UserHandle myUserHandle();
-    method public static final void sendSignal(int, int);
-    method public static final void setThreadPriority(int, int) throws java.lang.IllegalArgumentException, java.lang.SecurityException;
-    method public static final void setThreadPriority(int) throws java.lang.IllegalArgumentException, java.lang.SecurityException;
-    method @Deprecated public static final boolean supportsProcesses();
-    field public static final int BLUETOOTH_UID = 1002; // 0x3ea
-    field public static final int FIRST_APPLICATION_UID = 10000; // 0x2710
-    field public static final int INVALID_UID = -1; // 0xffffffff
-    field public static final int LAST_APPLICATION_UID = 19999; // 0x4e1f
-    field public static final int PHONE_UID = 1001; // 0x3e9
-    field public static final int ROOT_UID = 0; // 0x0
-    field public static final int SHELL_UID = 2000; // 0x7d0
-    field public static final int SIGNAL_KILL = 9; // 0x9
-    field public static final int SIGNAL_QUIT = 3; // 0x3
-    field public static final int SIGNAL_USR1 = 10; // 0xa
-    field public static final int SYSTEM_UID = 1000; // 0x3e8
-    field public static final int THREAD_PRIORITY_AUDIO = -16; // 0xfffffff0
-    field public static final int THREAD_PRIORITY_BACKGROUND = 10; // 0xa
-    field public static final int THREAD_PRIORITY_DEFAULT = 0; // 0x0
-    field public static final int THREAD_PRIORITY_DISPLAY = -4; // 0xfffffffc
-    field public static final int THREAD_PRIORITY_FOREGROUND = -2; // 0xfffffffe
-    field public static final int THREAD_PRIORITY_LESS_FAVORABLE = 1; // 0x1
-    field public static final int THREAD_PRIORITY_LOWEST = 19; // 0x13
-    field public static final int THREAD_PRIORITY_MORE_FAVORABLE = -1; // 0xffffffff
-    field public static final int THREAD_PRIORITY_URGENT_AUDIO = -19; // 0xffffffed
-    field public static final int THREAD_PRIORITY_URGENT_DISPLAY = -8; // 0xfffffff8
-    field public static final int THREAD_PRIORITY_VIDEO = -10; // 0xfffffff6
-    field public static final int WIFI_UID = 1010; // 0x3f2
-  }
-
-  public abstract class ProxyFileDescriptorCallback {
-    ctor public ProxyFileDescriptorCallback();
-    method public void onFsync() throws android.system.ErrnoException;
-    method public long onGetSize() throws android.system.ErrnoException;
-    method public int onRead(long, int, byte[]) throws android.system.ErrnoException;
-    method public abstract void onRelease();
-    method public int onWrite(long, int, byte[]) throws android.system.ErrnoException;
-  }
-
-  public class RecoverySystem {
-    method @RequiresPermission("android.permission.RECOVERY") public static void installPackage(android.content.Context, java.io.File) throws java.io.IOException;
-    method public static void rebootWipeCache(android.content.Context) throws java.io.IOException;
-    method public static void rebootWipeUserData(android.content.Context) throws java.io.IOException;
-    method public static void verifyPackage(java.io.File, android.os.RecoverySystem.ProgressListener, java.io.File) throws java.security.GeneralSecurityException, java.io.IOException;
-  }
-
-  public static interface RecoverySystem.ProgressListener {
-    method public void onProgress(int);
-  }
-
-  public class RemoteCallbackList<E extends android.os.IInterface> {
-    ctor public RemoteCallbackList();
-    method public int beginBroadcast();
-    method public void finishBroadcast();
-    method public Object getBroadcastCookie(int);
-    method public E getBroadcastItem(int);
-    method public Object getRegisteredCallbackCookie(int);
-    method public int getRegisteredCallbackCount();
-    method public E getRegisteredCallbackItem(int);
-    method public void kill();
-    method public void onCallbackDied(E);
-    method public void onCallbackDied(E, Object);
-    method public boolean register(E);
-    method public boolean register(E, Object);
-    method public boolean unregister(E);
-  }
-
-  public class RemoteException extends android.util.AndroidException {
-    ctor public RemoteException();
-    ctor public RemoteException(String);
-    method @NonNull public RuntimeException rethrowAsRuntimeException();
-    method @NonNull public RuntimeException rethrowFromSystemServer();
-  }
-
-  public class ResultReceiver implements android.os.Parcelable {
-    ctor public ResultReceiver(android.os.Handler);
-    method public int describeContents();
-    method protected void onReceiveResult(int, android.os.Bundle);
-    method public void send(int, android.os.Bundle);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.ResultReceiver> CREATOR;
-  }
-
-  public final class SharedMemory implements java.io.Closeable android.os.Parcelable {
-    method public void close();
-    method @NonNull public static android.os.SharedMemory create(@Nullable String, int) throws android.system.ErrnoException;
-    method public int describeContents();
-    method public int getSize();
-    method @NonNull public java.nio.ByteBuffer map(int, int, int) throws android.system.ErrnoException;
-    method @NonNull public java.nio.ByteBuffer mapReadOnly() throws android.system.ErrnoException;
-    method @NonNull public java.nio.ByteBuffer mapReadWrite() throws android.system.ErrnoException;
-    method public boolean setProtect(int);
-    method public static void unmap(@NonNull java.nio.ByteBuffer);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.SharedMemory> CREATOR;
-  }
-
-  public class StatFs {
-    ctor public StatFs(String);
-    method @Deprecated public int getAvailableBlocks();
-    method public long getAvailableBlocksLong();
-    method public long getAvailableBytes();
-    method @Deprecated public int getBlockCount();
-    method public long getBlockCountLong();
-    method @Deprecated public int getBlockSize();
-    method public long getBlockSizeLong();
-    method @Deprecated public int getFreeBlocks();
-    method public long getFreeBlocksLong();
-    method public long getFreeBytes();
-    method public long getTotalBytes();
-    method public void restat(String);
-  }
-
-  public final class StrictMode {
-    method public static android.os.StrictMode.ThreadPolicy allowThreadDiskReads();
-    method public static android.os.StrictMode.ThreadPolicy allowThreadDiskWrites();
-    method public static void enableDefaults();
-    method public static android.os.StrictMode.ThreadPolicy getThreadPolicy();
-    method public static android.os.StrictMode.VmPolicy getVmPolicy();
-    method public static void noteSlowCall(String);
-    method public static void setThreadPolicy(android.os.StrictMode.ThreadPolicy);
-    method public static void setVmPolicy(android.os.StrictMode.VmPolicy);
-  }
-
-  public static interface StrictMode.OnThreadViolationListener {
-    method public void onThreadViolation(android.os.strictmode.Violation);
-  }
-
-  public static interface StrictMode.OnVmViolationListener {
-    method public void onVmViolation(android.os.strictmode.Violation);
-  }
-
-  public static final class StrictMode.ThreadPolicy {
-    field public static final android.os.StrictMode.ThreadPolicy LAX;
-  }
-
-  public static final class StrictMode.ThreadPolicy.Builder {
-    ctor public StrictMode.ThreadPolicy.Builder();
-    ctor public StrictMode.ThreadPolicy.Builder(android.os.StrictMode.ThreadPolicy);
-    method public android.os.StrictMode.ThreadPolicy build();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectAll();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectCustomSlowCalls();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectDiskReads();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectDiskWrites();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectNetwork();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectResourceMismatches();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectUnbufferedIo();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder penaltyDeath();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder penaltyDeathOnNetwork();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder penaltyDialog();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder penaltyDropBox();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder penaltyFlashScreen();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder penaltyListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.StrictMode.OnThreadViolationListener);
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder penaltyLog();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitAll();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitCustomSlowCalls();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitDiskReads();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitDiskWrites();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitNetwork();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitResourceMismatches();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitUnbufferedIo();
-  }
-
-  public static final class StrictMode.VmPolicy {
-    field public static final android.os.StrictMode.VmPolicy LAX;
-  }
-
-  public static final class StrictMode.VmPolicy.Builder {
-    ctor public StrictMode.VmPolicy.Builder();
-    ctor public StrictMode.VmPolicy.Builder(android.os.StrictMode.VmPolicy);
-    method public android.os.StrictMode.VmPolicy build();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectActivityLeaks();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectAll();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectCleartextNetwork();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectContentUriWithoutPermission();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectCredentialProtectedWhileLocked();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectFileUriExposure();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectImplicitDirectBoot();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectLeakedClosableObjects();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectLeakedRegistrationObjects();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectLeakedSqlLiteObjects();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectNonSdkApiUsage();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectUntaggedSockets();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder penaltyDeath();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder penaltyDeathOnCleartextNetwork();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder penaltyDeathOnFileUriExposure();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder penaltyDropBox();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder penaltyListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.StrictMode.OnVmViolationListener);
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder penaltyLog();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder permitNonSdkApiUsage();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder setClassInstanceLimit(Class, int);
-  }
-
-  public final class SystemClock {
-    method @NonNull public static java.time.Clock currentGnssTimeClock();
-    method public static long currentThreadTimeMillis();
-    method public static long elapsedRealtime();
-    method public static long elapsedRealtimeNanos();
-    method public static boolean setCurrentTimeMillis(long);
-    method public static void sleep(long);
-    method public static long uptimeMillis();
-  }
-
-  public class TestLooperManager {
-    method public void execute(android.os.Message);
-    method public android.os.MessageQueue getMessageQueue();
-    method public boolean hasMessages(android.os.Handler, Object, int);
-    method public boolean hasMessages(android.os.Handler, Object, Runnable);
-    method public android.os.Message next();
-    method public void recycle(android.os.Message);
-    method public void release();
-  }
-
-  public abstract class TokenWatcher {
-    ctor public TokenWatcher(android.os.Handler, String);
-    method public void acquire(android.os.IBinder, String);
-    method public abstract void acquired();
-    method public void cleanup(android.os.IBinder, boolean);
-    method public void dump();
-    method public void dump(java.io.PrintWriter);
-    method public boolean isAcquired();
-    method public void release(android.os.IBinder);
-    method public abstract void released();
-  }
-
-  public final class Trace {
-    method public static void beginAsyncSection(@NonNull String, int);
-    method public static void beginSection(@NonNull String);
-    method public static void endAsyncSection(@NonNull String, int);
-    method public static void endSection();
-    method public static boolean isEnabled();
-    method public static void setCounter(@NonNull String, long);
-  }
-
-  public class TransactionTooLargeException extends android.os.RemoteException {
-    ctor public TransactionTooLargeException();
-    ctor public TransactionTooLargeException(String);
-  }
-
-  public final class UserHandle implements android.os.Parcelable {
-    ctor public UserHandle(android.os.Parcel);
-    method public int describeContents();
-    method public static android.os.UserHandle getUserHandleForUid(int);
-    method public static android.os.UserHandle readFromParcel(android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    method public static void writeToParcel(android.os.UserHandle, android.os.Parcel);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.UserHandle> CREATOR;
-  }
-
-  public class UserManager {
-    method public static android.content.Intent createUserCreationIntent(@Nullable String, @Nullable String, @Nullable String, @Nullable android.os.PersistableBundle);
-    method @WorkerThread public android.os.Bundle getApplicationRestrictions(String);
-    method public long getSerialNumberForUser(android.os.UserHandle);
-    method @RequiresPermission("android.permission.MANAGE_USERS") public int getUserCount();
-    method public long getUserCreationTime(android.os.UserHandle);
-    method public android.os.UserHandle getUserForSerialNumber(long);
-    method @NonNull @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", android.Manifest.permission.GET_ACCOUNTS_PRIVILEGED}, conditional=true) public String getUserName();
-    method public java.util.List<android.os.UserHandle> getUserProfiles();
-    method public android.os.Bundle getUserRestrictions();
-    method @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.INTERACT_ACROSS_USERS"}, conditional=true) public android.os.Bundle getUserRestrictions(android.os.UserHandle);
-    method public boolean hasUserRestriction(String);
-    method public boolean isDemoUser();
-    method public boolean isManagedProfile();
-    method public boolean isQuietModeEnabled(android.os.UserHandle);
-    method public boolean isSystemUser();
-    method public boolean isUserAGoat();
-    method @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.INTERACT_ACROSS_USERS"}, conditional=true) public boolean isUserRunning(android.os.UserHandle);
-    method @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.INTERACT_ACROSS_USERS"}, conditional=true) public boolean isUserRunningOrStopping(android.os.UserHandle);
-    method public boolean isUserUnlocked();
-    method @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.INTERACT_ACROSS_USERS"}, conditional=true) public boolean isUserUnlocked(android.os.UserHandle);
-    method @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.MODIFY_QUIET_MODE"}, conditional=true) public boolean requestQuietModeEnabled(boolean, @NonNull android.os.UserHandle);
-    method public boolean requestQuietModeEnabled(boolean, @NonNull android.os.UserHandle, int);
-    method @Deprecated public boolean setRestrictionsChallenge(String);
-    method @Deprecated @RequiresPermission("android.permission.MANAGE_USERS") public void setUserRestriction(String, boolean);
-    method @Deprecated public void setUserRestrictions(android.os.Bundle);
-    method @Deprecated public void setUserRestrictions(android.os.Bundle, android.os.UserHandle);
-    method public static boolean supportsMultipleUsers();
-    field public static final String ALLOW_PARENT_PROFILE_APP_LINKING = "allow_parent_profile_app_linking";
-    field @Deprecated public static final String DISALLOW_ADD_MANAGED_PROFILE = "no_add_managed_profile";
-    field public static final String DISALLOW_ADD_USER = "no_add_user";
-    field public static final String DISALLOW_ADJUST_VOLUME = "no_adjust_volume";
-    field public static final String DISALLOW_AIRPLANE_MODE = "no_airplane_mode";
-    field public static final String DISALLOW_AMBIENT_DISPLAY = "no_ambient_display";
-    field public static final String DISALLOW_APPS_CONTROL = "no_control_apps";
-    field public static final String DISALLOW_AUTOFILL = "no_autofill";
-    field public static final String DISALLOW_BLUETOOTH = "no_bluetooth";
-    field public static final String DISALLOW_BLUETOOTH_SHARING = "no_bluetooth_sharing";
-    field public static final String DISALLOW_CONFIG_BLUETOOTH = "no_config_bluetooth";
-    field public static final String DISALLOW_CONFIG_BRIGHTNESS = "no_config_brightness";
-    field public static final String DISALLOW_CONFIG_CELL_BROADCASTS = "no_config_cell_broadcasts";
-    field public static final String DISALLOW_CONFIG_CREDENTIALS = "no_config_credentials";
-    field public static final String DISALLOW_CONFIG_DATE_TIME = "no_config_date_time";
-    field public static final String DISALLOW_CONFIG_LOCALE = "no_config_locale";
-    field public static final String DISALLOW_CONFIG_LOCATION = "no_config_location";
-    field public static final String DISALLOW_CONFIG_MOBILE_NETWORKS = "no_config_mobile_networks";
-    field public static final String DISALLOW_CONFIG_PRIVATE_DNS = "disallow_config_private_dns";
-    field public static final String DISALLOW_CONFIG_SCREEN_TIMEOUT = "no_config_screen_timeout";
-    field public static final String DISALLOW_CONFIG_TETHERING = "no_config_tethering";
-    field public static final String DISALLOW_CONFIG_VPN = "no_config_vpn";
-    field public static final String DISALLOW_CONFIG_WIFI = "no_config_wifi";
-    field public static final String DISALLOW_CONTENT_CAPTURE = "no_content_capture";
-    field public static final String DISALLOW_CONTENT_SUGGESTIONS = "no_content_suggestions";
-    field public static final String DISALLOW_CREATE_WINDOWS = "no_create_windows";
-    field public static final String DISALLOW_CROSS_PROFILE_COPY_PASTE = "no_cross_profile_copy_paste";
-    field public static final String DISALLOW_DATA_ROAMING = "no_data_roaming";
-    field public static final String DISALLOW_DEBUGGING_FEATURES = "no_debugging_features";
-    field public static final String DISALLOW_FACTORY_RESET = "no_factory_reset";
-    field public static final String DISALLOW_FUN = "no_fun";
-    field public static final String DISALLOW_INSTALL_APPS = "no_install_apps";
-    field public static final String DISALLOW_INSTALL_UNKNOWN_SOURCES = "no_install_unknown_sources";
-    field public static final String DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY = "no_install_unknown_sources_globally";
-    field public static final String DISALLOW_MODIFY_ACCOUNTS = "no_modify_accounts";
-    field public static final String DISALLOW_MOUNT_PHYSICAL_MEDIA = "no_physical_media";
-    field public static final String DISALLOW_NETWORK_RESET = "no_network_reset";
-    field public static final String DISALLOW_OUTGOING_BEAM = "no_outgoing_beam";
-    field public static final String DISALLOW_OUTGOING_CALLS = "no_outgoing_calls";
-    field public static final String DISALLOW_PRINTING = "no_printing";
-    field @Deprecated public static final String DISALLOW_REMOVE_MANAGED_PROFILE = "no_remove_managed_profile";
-    field public static final String DISALLOW_REMOVE_USER = "no_remove_user";
-    field public static final String DISALLOW_SAFE_BOOT = "no_safe_boot";
-    field public static final String DISALLOW_SET_USER_ICON = "no_set_user_icon";
-    field public static final String DISALLOW_SET_WALLPAPER = "no_set_wallpaper";
-    field public static final String DISALLOW_SHARE_INTO_MANAGED_PROFILE = "no_sharing_into_profile";
-    field public static final String DISALLOW_SHARE_LOCATION = "no_share_location";
-    field public static final String DISALLOW_SMS = "no_sms";
-    field public static final String DISALLOW_SYSTEM_ERROR_DIALOGS = "no_system_error_dialogs";
-    field public static final String DISALLOW_UNIFIED_PASSWORD = "no_unified_password";
-    field public static final String DISALLOW_UNINSTALL_APPS = "no_uninstall_apps";
-    field public static final String DISALLOW_UNMUTE_MICROPHONE = "no_unmute_microphone";
-    field public static final String DISALLOW_USB_FILE_TRANSFER = "no_usb_file_transfer";
-    field public static final String DISALLOW_USER_SWITCH = "no_user_switch";
-    field public static final String ENSURE_VERIFY_APPS = "ensure_verify_apps";
-    field public static final String KEY_RESTRICTIONS_PENDING = "restrictions_pending";
-    field public static final int QUIET_MODE_DISABLE_ONLY_IF_CREDENTIAL_NOT_REQUIRED = 1; // 0x1
-    field public static final int USER_CREATION_FAILED_NOT_PERMITTED = 1; // 0x1
-    field public static final int USER_CREATION_FAILED_NO_MORE_USERS = 2; // 0x2
-    field public static final int USER_OPERATION_ERROR_CURRENT_USER = 4; // 0x4
-    field public static final int USER_OPERATION_ERROR_LOW_STORAGE = 5; // 0x5
-    field public static final int USER_OPERATION_ERROR_MANAGED_PROFILE = 2; // 0x2
-    field public static final int USER_OPERATION_ERROR_MAX_RUNNING_USERS = 3; // 0x3
-    field public static final int USER_OPERATION_ERROR_MAX_USERS = 6; // 0x6
-    field public static final int USER_OPERATION_ERROR_UNKNOWN = 1; // 0x1
-    field public static final int USER_OPERATION_SUCCESS = 0; // 0x0
-  }
-
-  public static class UserManager.UserOperationException extends java.lang.RuntimeException {
-    method public int getUserOperationResult();
-  }
-
-  public final class VibrationAttributes implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getFlags();
-    method public int getUsage();
-    method public int getUsageClass();
-    method public boolean isFlagSet(int);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.VibrationAttributes> CREATOR;
-    field public static final int FLAG_BYPASS_INTERRUPTION_POLICY = 1; // 0x1
-    field public static final int USAGE_ALARM = 17; // 0x11
-    field public static final int USAGE_CLASS_ALARM = 1; // 0x1
-    field public static final int USAGE_CLASS_FEEDBACK = 2; // 0x2
-    field public static final int USAGE_CLASS_MASK = 15; // 0xf
-    field public static final int USAGE_CLASS_UNKNOWN = 0; // 0x0
-    field public static final int USAGE_COMMUNICATION_REQUEST = 65; // 0x41
-    field public static final int USAGE_HARDWARE_FEEDBACK = 50; // 0x32
-    field public static final int USAGE_NOTIFICATION = 49; // 0x31
-    field public static final int USAGE_PHYSICAL_EMULATION = 34; // 0x22
-    field public static final int USAGE_RINGTONE = 33; // 0x21
-    field public static final int USAGE_TOUCH = 18; // 0x12
-    field public static final int USAGE_UNKNOWN = 0; // 0x0
-  }
-
-  public static final class VibrationAttributes.Builder {
-    ctor public VibrationAttributes.Builder();
-    ctor public VibrationAttributes.Builder(@Nullable android.os.VibrationAttributes);
-    method @NonNull public android.os.VibrationAttributes build();
-    method @NonNull public android.os.VibrationAttributes.Builder setFlags(int, int);
-    method @NonNull public android.os.VibrationAttributes.Builder setUsage(int);
-  }
-
-  public abstract class VibrationEffect implements android.os.Parcelable {
-    method public static android.os.VibrationEffect createOneShot(long, int);
-    method @NonNull public static android.os.VibrationEffect createPredefined(int);
-    method public static android.os.VibrationEffect createWaveform(long[], int);
-    method public static android.os.VibrationEffect createWaveform(long[], int[], int);
-    method public int describeContents();
-    method @NonNull public static android.os.VibrationEffect.Composition startComposition();
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.VibrationEffect> CREATOR;
-    field public static final int DEFAULT_AMPLITUDE = -1; // 0xffffffff
-    field public static final int EFFECT_CLICK = 0; // 0x0
-    field public static final int EFFECT_DOUBLE_CLICK = 1; // 0x1
-    field public static final int EFFECT_HEAVY_CLICK = 5; // 0x5
-    field public static final int EFFECT_TICK = 2; // 0x2
-  }
-
-  public static final class VibrationEffect.Composition {
-    method @NonNull public android.os.VibrationEffect.Composition addPrimitive(int);
-    method @NonNull public android.os.VibrationEffect.Composition addPrimitive(int, @FloatRange(from=0.0f, to=1.0f) float);
-    method @NonNull public android.os.VibrationEffect.Composition addPrimitive(int, @FloatRange(from=0.0f, to=1.0f) float, @IntRange(from=0) int);
-    method @NonNull public android.os.VibrationEffect compose();
-    field public static final int PRIMITIVE_CLICK = 1; // 0x1
-    field public static final int PRIMITIVE_QUICK_FALL = 6; // 0x6
-    field public static final int PRIMITIVE_QUICK_RISE = 4; // 0x4
-    field public static final int PRIMITIVE_SLOW_RISE = 5; // 0x5
-    field public static final int PRIMITIVE_TICK = 7; // 0x7
-  }
-
-  public abstract class Vibrator {
-    method public final int areAllEffectsSupported(@NonNull int...);
-    method public final boolean areAllPrimitivesSupported(@NonNull int...);
-    method @NonNull public int[] areEffectsSupported(@NonNull int...);
-    method @NonNull public boolean[] arePrimitivesSupported(@NonNull int...);
-    method @RequiresPermission(android.Manifest.permission.VIBRATE) public abstract void cancel();
-    method public abstract boolean hasAmplitudeControl();
-    method public abstract boolean hasVibrator();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(long);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(long, android.media.AudioAttributes);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(long[], int);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(long[], int, android.media.AudioAttributes);
-    method @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(android.os.VibrationEffect);
-    method @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(android.os.VibrationEffect, android.media.AudioAttributes);
-    field public static final int VIBRATION_EFFECT_SUPPORT_NO = 2; // 0x2
-    field public static final int VIBRATION_EFFECT_SUPPORT_UNKNOWN = 0; // 0x0
-    field public static final int VIBRATION_EFFECT_SUPPORT_YES = 1; // 0x1
-  }
-
-  public class WorkSource implements android.os.Parcelable {
-    ctor public WorkSource();
-    ctor public WorkSource(android.os.WorkSource);
-    method public boolean add(android.os.WorkSource);
-    method public void clear();
-    method public int describeContents();
-    method public boolean diff(android.os.WorkSource);
-    method public boolean remove(android.os.WorkSource);
-    method public void set(android.os.WorkSource);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.WorkSource> CREATOR;
-  }
-
-}
-
-package android.os.health {
-
-  public class HealthStats {
-    method public String getDataType();
-    method public long getMeasurement(int);
-    method public int getMeasurementKeyAt(int);
-    method public int getMeasurementKeyCount();
-    method public java.util.Map<java.lang.String,java.lang.Long> getMeasurements(int);
-    method public int getMeasurementsKeyAt(int);
-    method public int getMeasurementsKeyCount();
-    method public java.util.Map<java.lang.String,android.os.health.HealthStats> getStats(int);
-    method public int getStatsKeyAt(int);
-    method public int getStatsKeyCount();
-    method public android.os.health.TimerStat getTimer(int);
-    method public int getTimerCount(int);
-    method public int getTimerKeyAt(int);
-    method public int getTimerKeyCount();
-    method public long getTimerTime(int);
-    method public java.util.Map<java.lang.String,android.os.health.TimerStat> getTimers(int);
-    method public int getTimersKeyAt(int);
-    method public int getTimersKeyCount();
-    method public boolean hasMeasurement(int);
-    method public boolean hasMeasurements(int);
-    method public boolean hasStats(int);
-    method public boolean hasTimer(int);
-    method public boolean hasTimers(int);
-  }
-
-  public final class PackageHealthStats {
-    field public static final int MEASUREMENTS_WAKEUP_ALARMS_COUNT = 40002; // 0x9c42
-    field public static final int STATS_SERVICES = 40001; // 0x9c41
-  }
-
-  public final class PidHealthStats {
-    field public static final int MEASUREMENT_WAKE_NESTING_COUNT = 20001; // 0x4e21
-    field public static final int MEASUREMENT_WAKE_START_MS = 20003; // 0x4e23
-    field public static final int MEASUREMENT_WAKE_SUM_MS = 20002; // 0x4e22
-  }
-
-  public final class ProcessHealthStats {
-    field public static final int MEASUREMENT_ANR_COUNT = 30005; // 0x7535
-    field public static final int MEASUREMENT_CRASHES_COUNT = 30004; // 0x7534
-    field public static final int MEASUREMENT_FOREGROUND_MS = 30006; // 0x7536
-    field public static final int MEASUREMENT_STARTS_COUNT = 30003; // 0x7533
-    field public static final int MEASUREMENT_SYSTEM_TIME_MS = 30002; // 0x7532
-    field public static final int MEASUREMENT_USER_TIME_MS = 30001; // 0x7531
-  }
-
-  public final class ServiceHealthStats {
-    field public static final int MEASUREMENT_LAUNCH_COUNT = 50002; // 0xc352
-    field public static final int MEASUREMENT_START_SERVICE_COUNT = 50001; // 0xc351
-  }
-
-  public class SystemHealthManager {
-    method public android.os.health.HealthStats takeMyUidSnapshot();
-    method public android.os.health.HealthStats takeUidSnapshot(int);
-    method public android.os.health.HealthStats[] takeUidSnapshots(int[]);
-  }
-
-  public final class TimerStat implements android.os.Parcelable {
-    ctor public TimerStat();
-    ctor public TimerStat(int, long);
-    ctor public TimerStat(android.os.Parcel);
-    method public int describeContents();
-    method public int getCount();
-    method public long getTime();
-    method public void setCount(int);
-    method public void setTime(long);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.health.TimerStat> CREATOR;
-  }
-
-  public final class UidHealthStats {
-    field public static final int MEASUREMENT_BLUETOOTH_IDLE_MS = 10020; // 0x2724
-    field public static final int MEASUREMENT_BLUETOOTH_POWER_MAMS = 10023; // 0x2727
-    field public static final int MEASUREMENT_BLUETOOTH_RX_BYTES = 10052; // 0x2744
-    field public static final int MEASUREMENT_BLUETOOTH_RX_MS = 10021; // 0x2725
-    field public static final int MEASUREMENT_BLUETOOTH_RX_PACKETS = 10058; // 0x274a
-    field public static final int MEASUREMENT_BLUETOOTH_TX_BYTES = 10053; // 0x2745
-    field public static final int MEASUREMENT_BLUETOOTH_TX_MS = 10022; // 0x2726
-    field public static final int MEASUREMENT_BLUETOOTH_TX_PACKETS = 10059; // 0x274b
-    field public static final int MEASUREMENT_BUTTON_USER_ACTIVITY_COUNT = 10046; // 0x273e
-    field @Deprecated public static final int MEASUREMENT_CPU_POWER_MAMS = 10064; // 0x2750
-    field public static final int MEASUREMENT_MOBILE_IDLE_MS = 10024; // 0x2728
-    field public static final int MEASUREMENT_MOBILE_POWER_MAMS = 10027; // 0x272b
-    field public static final int MEASUREMENT_MOBILE_RX_BYTES = 10048; // 0x2740
-    field public static final int MEASUREMENT_MOBILE_RX_MS = 10025; // 0x2729
-    field public static final int MEASUREMENT_MOBILE_RX_PACKETS = 10054; // 0x2746
-    field public static final int MEASUREMENT_MOBILE_TX_BYTES = 10049; // 0x2741
-    field public static final int MEASUREMENT_MOBILE_TX_MS = 10026; // 0x272a
-    field public static final int MEASUREMENT_MOBILE_TX_PACKETS = 10055; // 0x2747
-    field public static final int MEASUREMENT_OTHER_USER_ACTIVITY_COUNT = 10045; // 0x273d
-    field public static final int MEASUREMENT_REALTIME_BATTERY_MS = 10001; // 0x2711
-    field public static final int MEASUREMENT_REALTIME_SCREEN_OFF_BATTERY_MS = 10003; // 0x2713
-    field public static final int MEASUREMENT_SYSTEM_CPU_TIME_MS = 10063; // 0x274f
-    field public static final int MEASUREMENT_TOUCH_USER_ACTIVITY_COUNT = 10047; // 0x273f
-    field public static final int MEASUREMENT_UPTIME_BATTERY_MS = 10002; // 0x2712
-    field public static final int MEASUREMENT_UPTIME_SCREEN_OFF_BATTERY_MS = 10004; // 0x2714
-    field public static final int MEASUREMENT_USER_CPU_TIME_MS = 10062; // 0x274e
-    field public static final int MEASUREMENT_WIFI_FULL_LOCK_MS = 10029; // 0x272d
-    field public static final int MEASUREMENT_WIFI_IDLE_MS = 10016; // 0x2720
-    field public static final int MEASUREMENT_WIFI_MULTICAST_MS = 10031; // 0x272f
-    field public static final int MEASUREMENT_WIFI_POWER_MAMS = 10019; // 0x2723
-    field public static final int MEASUREMENT_WIFI_RUNNING_MS = 10028; // 0x272c
-    field public static final int MEASUREMENT_WIFI_RX_BYTES = 10050; // 0x2742
-    field public static final int MEASUREMENT_WIFI_RX_MS = 10017; // 0x2721
-    field public static final int MEASUREMENT_WIFI_RX_PACKETS = 10056; // 0x2748
-    field public static final int MEASUREMENT_WIFI_TX_BYTES = 10051; // 0x2743
-    field public static final int MEASUREMENT_WIFI_TX_MS = 10018; // 0x2722
-    field public static final int MEASUREMENT_WIFI_TX_PACKETS = 10057; // 0x2749
-    field public static final int STATS_PACKAGES = 10015; // 0x271f
-    field public static final int STATS_PIDS = 10013; // 0x271d
-    field public static final int STATS_PROCESSES = 10014; // 0x271e
-    field public static final int TIMERS_JOBS = 10010; // 0x271a
-    field public static final int TIMERS_SENSORS = 10012; // 0x271c
-    field public static final int TIMERS_SYNCS = 10009; // 0x2719
-    field public static final int TIMERS_WAKELOCKS_DRAW = 10008; // 0x2718
-    field public static final int TIMERS_WAKELOCKS_FULL = 10005; // 0x2715
-    field public static final int TIMERS_WAKELOCKS_PARTIAL = 10006; // 0x2716
-    field public static final int TIMERS_WAKELOCKS_WINDOW = 10007; // 0x2717
-    field public static final int TIMER_AUDIO = 10032; // 0x2730
-    field public static final int TIMER_BLUETOOTH_SCAN = 10037; // 0x2735
-    field public static final int TIMER_CAMERA = 10035; // 0x2733
-    field public static final int TIMER_FLASHLIGHT = 10034; // 0x2732
-    field public static final int TIMER_FOREGROUND_ACTIVITY = 10036; // 0x2734
-    field public static final int TIMER_GPS_SENSOR = 10011; // 0x271b
-    field public static final int TIMER_MOBILE_RADIO_ACTIVE = 10061; // 0x274d
-    field public static final int TIMER_PROCESS_STATE_BACKGROUND_MS = 10042; // 0x273a
-    field public static final int TIMER_PROCESS_STATE_CACHED_MS = 10043; // 0x273b
-    field public static final int TIMER_PROCESS_STATE_FOREGROUND_MS = 10041; // 0x2739
-    field public static final int TIMER_PROCESS_STATE_FOREGROUND_SERVICE_MS = 10039; // 0x2737
-    field public static final int TIMER_PROCESS_STATE_TOP_MS = 10038; // 0x2736
-    field public static final int TIMER_PROCESS_STATE_TOP_SLEEPING_MS = 10040; // 0x2738
-    field public static final int TIMER_VIBRATOR = 10044; // 0x273c
-    field public static final int TIMER_VIDEO = 10033; // 0x2731
-    field public static final int TIMER_WIFI_SCAN = 10030; // 0x272e
-  }
-
-}
-
-package android.os.storage {
-
-  public abstract class OnObbStateChangeListener {
-    ctor public OnObbStateChangeListener();
-    method public void onObbStateChange(String, int);
-    field public static final int ERROR_ALREADY_MOUNTED = 24; // 0x18
-    field public static final int ERROR_COULD_NOT_MOUNT = 21; // 0x15
-    field public static final int ERROR_COULD_NOT_UNMOUNT = 22; // 0x16
-    field public static final int ERROR_INTERNAL = 20; // 0x14
-    field public static final int ERROR_NOT_MOUNTED = 23; // 0x17
-    field public static final int ERROR_PERMISSION_DENIED = 25; // 0x19
-    field public static final int MOUNTED = 1; // 0x1
-    field public static final int UNMOUNTED = 2; // 0x2
-  }
-
-  public class StorageManager {
-    method @WorkerThread public void allocateBytes(@NonNull java.util.UUID, long) throws java.io.IOException;
-    method @WorkerThread public void allocateBytes(java.io.FileDescriptor, long) throws java.io.IOException;
-    method @WorkerThread public long getAllocatableBytes(@NonNull java.util.UUID) throws java.io.IOException;
-    method @WorkerThread public long getCacheQuotaBytes(@NonNull java.util.UUID) throws java.io.IOException;
-    method @WorkerThread public long getCacheSizeBytes(@NonNull java.util.UUID) throws java.io.IOException;
-    method public String getMountedObbPath(String);
-    method @NonNull public android.os.storage.StorageVolume getPrimaryStorageVolume();
-    method @NonNull public java.util.List<android.os.storage.StorageVolume> getRecentStorageVolumes();
-    method @Nullable public android.os.storage.StorageVolume getStorageVolume(@NonNull java.io.File);
-    method @NonNull public android.os.storage.StorageVolume getStorageVolume(@NonNull android.net.Uri);
-    method @NonNull public java.util.List<android.os.storage.StorageVolume> getStorageVolumes();
-    method @NonNull public java.util.UUID getUuidForPath(@NonNull java.io.File) throws java.io.IOException;
-    method public boolean isAllocationSupported(@NonNull java.io.FileDescriptor);
-    method public boolean isCacheBehaviorGroup(java.io.File) throws java.io.IOException;
-    method public boolean isCacheBehaviorTombstone(java.io.File) throws java.io.IOException;
-    method public boolean isCheckpointSupported();
-    method public boolean isEncrypted(java.io.File);
-    method public boolean isObbMounted(String);
-    method public boolean mountObb(String, String, android.os.storage.OnObbStateChangeListener);
-    method @NonNull public android.os.ParcelFileDescriptor openProxyFileDescriptor(int, android.os.ProxyFileDescriptorCallback, android.os.Handler) throws java.io.IOException;
-    method public void registerStorageVolumeCallback(@NonNull java.util.concurrent.Executor, @NonNull android.os.storage.StorageManager.StorageVolumeCallback);
-    method public void setCacheBehaviorGroup(java.io.File, boolean) throws java.io.IOException;
-    method public void setCacheBehaviorTombstone(java.io.File, boolean) throws java.io.IOException;
-    method public boolean unmountObb(String, boolean, android.os.storage.OnObbStateChangeListener);
-    method public void unregisterStorageVolumeCallback(@NonNull android.os.storage.StorageManager.StorageVolumeCallback);
-    field @RequiresPermission(android.Manifest.permission.MANAGE_EXTERNAL_STORAGE) public static final String ACTION_CLEAR_APP_CACHE = "android.os.storage.action.CLEAR_APP_CACHE";
-    field public static final String ACTION_MANAGE_STORAGE = "android.os.storage.action.MANAGE_STORAGE";
-    field public static final String EXTRA_REQUESTED_BYTES = "android.os.storage.extra.REQUESTED_BYTES";
-    field public static final String EXTRA_UUID = "android.os.storage.extra.UUID";
-    field public static final java.util.UUID UUID_DEFAULT;
-  }
-
-  public static class StorageManager.StorageVolumeCallback {
-    ctor public StorageManager.StorageVolumeCallback();
-    method public void onStateChanged(@NonNull android.os.storage.StorageVolume);
-  }
-
-  public final class StorageVolume implements android.os.Parcelable {
-    method @Deprecated @Nullable public android.content.Intent createAccessIntent(String);
-    method @NonNull public android.content.Intent createOpenDocumentTreeIntent();
-    method public int describeContents();
-    method public String getDescription(android.content.Context);
-    method @Nullable public java.io.File getDirectory();
-    method @Nullable public String getMediaStoreVolumeName();
-    method public String getState();
-    method @Nullable public String getUuid();
-    method public boolean isEmulated();
-    method public boolean isPrimary();
-    method public boolean isRemovable();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.storage.StorageVolume> CREATOR;
-    field public static final String EXTRA_STORAGE_VOLUME = "android.os.storage.extra.STORAGE_VOLUME";
-  }
-
-}
-
-package android.os.strictmode {
-
-  public final class CleartextNetworkViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class ContentUriWithoutPermissionViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class CredentialProtectedWhileLockedViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class CustomViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class DiskReadViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class DiskWriteViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class FileUriExposedViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class ImplicitDirectBootViolation extends android.os.strictmode.Violation {
-  }
-
-  public class InstanceCountViolation extends android.os.strictmode.Violation {
-    method public long getNumberOfInstances();
-  }
-
-  public final class IntentReceiverLeakedViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class LeakedClosableViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class NetworkViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class NonSdkApiUsedViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class ResourceMismatchViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class ServiceConnectionLeakedViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class SqliteObjectLeakedViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class UnbufferedIoViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class UntaggedSocketViolation extends android.os.strictmode.Violation {
-  }
-
-  public abstract class Violation extends java.lang.Throwable {
-  }
-
-  public final class WebViewMethodCalledOnWrongThreadViolation extends android.os.strictmode.Violation {
-  }
-
-}
-
-package android.preference {
-
-  @Deprecated public class CheckBoxPreference extends android.preference.TwoStatePreference {
-    ctor @Deprecated public CheckBoxPreference(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public CheckBoxPreference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor @Deprecated public CheckBoxPreference(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public CheckBoxPreference(android.content.Context);
-  }
-
-  @Deprecated public abstract class DialogPreference extends android.preference.Preference implements android.content.DialogInterface.OnClickListener android.content.DialogInterface.OnDismissListener android.preference.PreferenceManager.OnActivityDestroyListener {
-    ctor @Deprecated public DialogPreference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor @Deprecated public DialogPreference(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public DialogPreference(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public DialogPreference(android.content.Context);
-    method @Deprecated public android.app.Dialog getDialog();
-    method @Deprecated public android.graphics.drawable.Drawable getDialogIcon();
-    method @Deprecated public int getDialogLayoutResource();
-    method @Deprecated public CharSequence getDialogMessage();
-    method @Deprecated public CharSequence getDialogTitle();
-    method @Deprecated public CharSequence getNegativeButtonText();
-    method @Deprecated public CharSequence getPositiveButtonText();
-    method @Deprecated public void onActivityDestroy();
-    method @Deprecated @CallSuper protected void onBindDialogView(android.view.View);
-    method @Deprecated public void onClick(android.content.DialogInterface, int);
-    method @Deprecated protected android.view.View onCreateDialogView();
-    method @Deprecated protected void onDialogClosed(boolean);
-    method @Deprecated public void onDismiss(android.content.DialogInterface);
-    method @Deprecated protected void onPrepareDialogBuilder(android.app.AlertDialog.Builder);
-    method @Deprecated public void setDialogIcon(android.graphics.drawable.Drawable);
-    method @Deprecated public void setDialogIcon(@DrawableRes int);
-    method @Deprecated public void setDialogLayoutResource(int);
-    method @Deprecated public void setDialogMessage(CharSequence);
-    method @Deprecated public void setDialogMessage(int);
-    method @Deprecated public void setDialogTitle(CharSequence);
-    method @Deprecated public void setDialogTitle(int);
-    method @Deprecated public void setNegativeButtonText(CharSequence);
-    method @Deprecated public void setNegativeButtonText(@StringRes int);
-    method @Deprecated public void setPositiveButtonText(CharSequence);
-    method @Deprecated public void setPositiveButtonText(@StringRes int);
-    method @Deprecated protected void showDialog(android.os.Bundle);
-  }
-
-  @Deprecated public class EditTextPreference extends android.preference.DialogPreference {
-    ctor @Deprecated public EditTextPreference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor @Deprecated public EditTextPreference(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public EditTextPreference(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public EditTextPreference(android.content.Context);
-    method @Deprecated public android.widget.EditText getEditText();
-    method @Deprecated public String getText();
-    method @Deprecated protected void onAddEditTextToDialogView(android.view.View, android.widget.EditText);
-    method @Deprecated public void setText(String);
-  }
-
-  @Deprecated public class ListPreference extends android.preference.DialogPreference {
-    ctor @Deprecated public ListPreference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor @Deprecated public ListPreference(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public ListPreference(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public ListPreference(android.content.Context);
-    method @Deprecated public int findIndexOfValue(String);
-    method @Deprecated public CharSequence[] getEntries();
-    method @Deprecated public CharSequence getEntry();
-    method @Deprecated public CharSequence[] getEntryValues();
-    method @Deprecated public String getValue();
-    method @Deprecated public void setEntries(CharSequence[]);
-    method @Deprecated public void setEntries(@ArrayRes int);
-    method @Deprecated public void setEntryValues(CharSequence[]);
-    method @Deprecated public void setEntryValues(@ArrayRes int);
-    method @Deprecated public void setValue(String);
-    method @Deprecated public void setValueIndex(int);
-  }
-
-  @Deprecated public class MultiSelectListPreference extends android.preference.DialogPreference {
-    ctor @Deprecated public MultiSelectListPreference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor @Deprecated public MultiSelectListPreference(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public MultiSelectListPreference(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public MultiSelectListPreference(android.content.Context);
-    method @Deprecated public int findIndexOfValue(String);
-    method @Deprecated public CharSequence[] getEntries();
-    method @Deprecated public CharSequence[] getEntryValues();
-    method @Deprecated public java.util.Set<java.lang.String> getValues();
-    method @Deprecated public void setEntries(CharSequence[]);
-    method @Deprecated public void setEntries(@ArrayRes int);
-    method @Deprecated public void setEntryValues(CharSequence[]);
-    method @Deprecated public void setEntryValues(@ArrayRes int);
-    method @Deprecated public void setValues(java.util.Set<java.lang.String>);
-  }
-
-  @Deprecated public class Preference implements java.lang.Comparable<android.preference.Preference> {
-    ctor @Deprecated public Preference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor @Deprecated public Preference(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public Preference(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public Preference(android.content.Context);
-    method @Deprecated protected boolean callChangeListener(Object);
-    method @Deprecated public int compareTo(android.preference.Preference);
-    method @Deprecated protected android.preference.Preference findPreferenceInHierarchy(String);
-    method @Deprecated public android.content.Context getContext();
-    method @Deprecated public String getDependency();
-    method @Deprecated public android.content.SharedPreferences.Editor getEditor();
-    method @Deprecated public android.os.Bundle getExtras();
-    method @Deprecated public String getFragment();
-    method @Deprecated public android.graphics.drawable.Drawable getIcon();
-    method @Deprecated public android.content.Intent getIntent();
-    method @Deprecated public String getKey();
-    method @Deprecated @LayoutRes public int getLayoutResource();
-    method @Deprecated public android.preference.Preference.OnPreferenceChangeListener getOnPreferenceChangeListener();
-    method @Deprecated public android.preference.Preference.OnPreferenceClickListener getOnPreferenceClickListener();
-    method @Deprecated public int getOrder();
-    method @Deprecated @Nullable public android.preference.PreferenceGroup getParent();
-    method @Deprecated protected boolean getPersistedBoolean(boolean);
-    method @Deprecated protected float getPersistedFloat(float);
-    method @Deprecated protected int getPersistedInt(int);
-    method @Deprecated protected long getPersistedLong(long);
-    method @Deprecated protected String getPersistedString(String);
-    method @Deprecated public java.util.Set<java.lang.String> getPersistedStringSet(java.util.Set<java.lang.String>);
-    method @Deprecated @Nullable public android.preference.PreferenceDataStore getPreferenceDataStore();
-    method @Deprecated public android.preference.PreferenceManager getPreferenceManager();
-    method @Deprecated public android.content.SharedPreferences getSharedPreferences();
-    method @Deprecated public boolean getShouldDisableView();
-    method @Deprecated public CharSequence getSummary();
-    method @Deprecated public CharSequence getTitle();
-    method @Deprecated @StringRes public int getTitleRes();
-    method @Deprecated public android.view.View getView(android.view.View, android.view.ViewGroup);
-    method @Deprecated @LayoutRes public int getWidgetLayoutResource();
-    method @Deprecated public boolean hasKey();
-    method @Deprecated public boolean isEnabled();
-    method @Deprecated public boolean isIconSpaceReserved();
-    method @Deprecated public boolean isPersistent();
-    method @Deprecated public boolean isRecycleEnabled();
-    method @Deprecated public boolean isSelectable();
-    method @Deprecated public boolean isSingleLineTitle();
-    method @Deprecated protected void notifyChanged();
-    method @Deprecated public void notifyDependencyChange(boolean);
-    method @Deprecated protected void notifyHierarchyChanged();
-    method @Deprecated protected void onAttachedToActivity();
-    method @Deprecated protected void onAttachedToHierarchy(android.preference.PreferenceManager);
-    method @Deprecated @CallSuper protected void onBindView(android.view.View);
-    method @Deprecated protected void onClick();
-    method @Deprecated @CallSuper protected android.view.View onCreateView(android.view.ViewGroup);
-    method @Deprecated public void onDependencyChanged(android.preference.Preference, boolean);
-    method @Deprecated protected Object onGetDefaultValue(android.content.res.TypedArray, int);
-    method @Deprecated public void onParentChanged(android.preference.Preference, boolean);
-    method @Deprecated @CallSuper protected void onPrepareForRemoval();
-    method @Deprecated protected void onRestoreInstanceState(android.os.Parcelable);
-    method @Deprecated protected android.os.Parcelable onSaveInstanceState();
-    method @Deprecated protected void onSetInitialValue(boolean, Object);
-    method @Deprecated public android.os.Bundle peekExtras();
-    method @Deprecated protected boolean persistBoolean(boolean);
-    method @Deprecated protected boolean persistFloat(float);
-    method @Deprecated protected boolean persistInt(int);
-    method @Deprecated protected boolean persistLong(long);
-    method @Deprecated protected boolean persistString(String);
-    method @Deprecated public boolean persistStringSet(java.util.Set<java.lang.String>);
-    method @Deprecated public void restoreHierarchyState(android.os.Bundle);
-    method @Deprecated public void saveHierarchyState(android.os.Bundle);
-    method @Deprecated public void setDefaultValue(Object);
-    method @Deprecated public void setDependency(String);
-    method @Deprecated public void setEnabled(boolean);
-    method @Deprecated public void setFragment(String);
-    method @Deprecated public void setIcon(android.graphics.drawable.Drawable);
-    method @Deprecated public void setIcon(@DrawableRes int);
-    method @Deprecated public void setIconSpaceReserved(boolean);
-    method @Deprecated public void setIntent(android.content.Intent);
-    method @Deprecated public void setKey(String);
-    method @Deprecated public void setLayoutResource(@LayoutRes int);
-    method @Deprecated public void setOnPreferenceChangeListener(android.preference.Preference.OnPreferenceChangeListener);
-    method @Deprecated public void setOnPreferenceClickListener(android.preference.Preference.OnPreferenceClickListener);
-    method @Deprecated public void setOrder(int);
-    method @Deprecated public void setPersistent(boolean);
-    method @Deprecated public void setPreferenceDataStore(android.preference.PreferenceDataStore);
-    method @Deprecated @CallSuper public void setRecycleEnabled(boolean);
-    method @Deprecated public void setSelectable(boolean);
-    method @Deprecated public void setShouldDisableView(boolean);
-    method @Deprecated public void setSingleLineTitle(boolean);
-    method @Deprecated public void setSummary(CharSequence);
-    method @Deprecated public void setSummary(@StringRes int);
-    method @Deprecated public void setTitle(CharSequence);
-    method @Deprecated public void setTitle(@StringRes int);
-    method @Deprecated public void setWidgetLayoutResource(@LayoutRes int);
-    method @Deprecated public boolean shouldCommit();
-    method @Deprecated public boolean shouldDisableDependents();
-    method @Deprecated protected boolean shouldPersist();
-    field @Deprecated public static final int DEFAULT_ORDER = 2147483647; // 0x7fffffff
-  }
-
-  @Deprecated public static class Preference.BaseSavedState extends android.view.AbsSavedState {
-    ctor @Deprecated public Preference.BaseSavedState(android.os.Parcel);
-    ctor @Deprecated public Preference.BaseSavedState(android.os.Parcelable);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.preference.Preference.BaseSavedState> CREATOR;
-  }
-
-  @Deprecated public static interface Preference.OnPreferenceChangeListener {
-    method @Deprecated public boolean onPreferenceChange(android.preference.Preference, Object);
-  }
-
-  @Deprecated public static interface Preference.OnPreferenceClickListener {
-    method @Deprecated public boolean onPreferenceClick(android.preference.Preference);
-  }
-
-  @Deprecated public abstract class PreferenceActivity extends android.app.ListActivity implements android.preference.PreferenceFragment.OnPreferenceStartFragmentCallback {
-    ctor @Deprecated public PreferenceActivity();
-    method @Deprecated public void addPreferencesFromIntent(android.content.Intent);
-    method @Deprecated public void addPreferencesFromResource(int);
-    method @Deprecated public android.preference.Preference findPreference(CharSequence);
-    method @Deprecated public void finishPreferencePanel(android.app.Fragment, int, android.content.Intent);
-    method @Deprecated public android.preference.PreferenceManager getPreferenceManager();
-    method @Deprecated public android.preference.PreferenceScreen getPreferenceScreen();
-    method @Deprecated public boolean hasHeaders();
-    method @Deprecated public void invalidateHeaders();
-    method @Deprecated public boolean isMultiPane();
-    method @Deprecated protected boolean isValidFragment(String);
-    method @Deprecated public void loadHeadersFromResource(@XmlRes int, java.util.List<android.preference.PreferenceActivity.Header>);
-    method @Deprecated public void onBuildHeaders(java.util.List<android.preference.PreferenceActivity.Header>);
-    method @Deprecated public android.content.Intent onBuildStartFragmentIntent(String, android.os.Bundle, @StringRes int, int);
-    method @Deprecated public android.preference.PreferenceActivity.Header onGetInitialHeader();
-    method @Deprecated public android.preference.PreferenceActivity.Header onGetNewHeader();
-    method @Deprecated public void onHeaderClick(android.preference.PreferenceActivity.Header, int);
-    method @Deprecated public boolean onIsHidingHeaders();
-    method @Deprecated public boolean onIsMultiPane();
-    method @Deprecated public boolean onPreferenceStartFragment(android.preference.PreferenceFragment, android.preference.Preference);
-    method @Deprecated public boolean onPreferenceTreeClick(android.preference.PreferenceScreen, android.preference.Preference);
-    method @Deprecated public void setListFooter(android.view.View);
-    method @Deprecated public void setParentTitle(CharSequence, CharSequence, android.view.View.OnClickListener);
-    method @Deprecated public void setPreferenceScreen(android.preference.PreferenceScreen);
-    method @Deprecated public void showBreadCrumbs(CharSequence, CharSequence);
-    method @Deprecated public void startPreferenceFragment(android.app.Fragment, boolean);
-    method @Deprecated public void startPreferencePanel(String, android.os.Bundle, @StringRes int, CharSequence, android.app.Fragment, int);
-    method @Deprecated public void startWithFragment(String, android.os.Bundle, android.app.Fragment, int);
-    method @Deprecated public void startWithFragment(String, android.os.Bundle, android.app.Fragment, int, @StringRes int, @StringRes int);
-    method @Deprecated public void switchToHeader(String, android.os.Bundle);
-    method @Deprecated public void switchToHeader(android.preference.PreferenceActivity.Header);
-    field @Deprecated public static final String EXTRA_NO_HEADERS = ":android:no_headers";
-    field @Deprecated public static final String EXTRA_SHOW_FRAGMENT = ":android:show_fragment";
-    field @Deprecated public static final String EXTRA_SHOW_FRAGMENT_ARGUMENTS = ":android:show_fragment_args";
-    field @Deprecated public static final String EXTRA_SHOW_FRAGMENT_SHORT_TITLE = ":android:show_fragment_short_title";
-    field @Deprecated public static final String EXTRA_SHOW_FRAGMENT_TITLE = ":android:show_fragment_title";
-    field @Deprecated public static final long HEADER_ID_UNDEFINED = -1L; // 0xffffffffffffffffL
-  }
-
-  @Deprecated public static final class PreferenceActivity.Header implements android.os.Parcelable {
-    ctor @Deprecated public PreferenceActivity.Header();
-    method @Deprecated public int describeContents();
-    method @Deprecated public CharSequence getBreadCrumbShortTitle(android.content.res.Resources);
-    method @Deprecated public CharSequence getBreadCrumbTitle(android.content.res.Resources);
-    method @Deprecated public CharSequence getSummary(android.content.res.Resources);
-    method @Deprecated public CharSequence getTitle(android.content.res.Resources);
-    method @Deprecated public void readFromParcel(android.os.Parcel);
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.preference.PreferenceActivity.Header> CREATOR;
-    field @Deprecated public CharSequence breadCrumbShortTitle;
-    field @Deprecated @StringRes public int breadCrumbShortTitleRes;
-    field @Deprecated public CharSequence breadCrumbTitle;
-    field @Deprecated @StringRes public int breadCrumbTitleRes;
-    field @Deprecated public android.os.Bundle extras;
-    field @Deprecated public String fragment;
-    field @Deprecated public android.os.Bundle fragmentArguments;
-    field @Deprecated public int iconRes;
-    field @Deprecated public long id;
-    field @Deprecated public android.content.Intent intent;
-    field @Deprecated public CharSequence summary;
-    field @Deprecated @StringRes public int summaryRes;
-    field @Deprecated public CharSequence title;
-    field @Deprecated @StringRes public int titleRes;
-  }
-
-  @Deprecated public class PreferenceCategory extends android.preference.PreferenceGroup {
-    ctor @Deprecated public PreferenceCategory(android.content.Context, android.util.AttributeSet, int, int);
-    ctor @Deprecated public PreferenceCategory(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public PreferenceCategory(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public PreferenceCategory(android.content.Context);
-  }
-
-  @Deprecated public interface PreferenceDataStore {
-    method @Deprecated public default boolean getBoolean(String, boolean);
-    method @Deprecated public default float getFloat(String, float);
-    method @Deprecated public default int getInt(String, int);
-    method @Deprecated public default long getLong(String, long);
-    method @Deprecated @Nullable public default String getString(String, @Nullable String);
-    method @Deprecated @Nullable public default java.util.Set<java.lang.String> getStringSet(String, @Nullable java.util.Set<java.lang.String>);
-    method @Deprecated public default void putBoolean(String, boolean);
-    method @Deprecated public default void putFloat(String, float);
-    method @Deprecated public default void putInt(String, int);
-    method @Deprecated public default void putLong(String, long);
-    method @Deprecated public default void putString(String, @Nullable String);
-    method @Deprecated public default void putStringSet(String, @Nullable java.util.Set<java.lang.String>);
-  }
-
-  @Deprecated public abstract class PreferenceFragment extends android.app.Fragment {
-    ctor @Deprecated public PreferenceFragment();
-    method @Deprecated public void addPreferencesFromIntent(android.content.Intent);
-    method @Deprecated public void addPreferencesFromResource(@XmlRes int);
-    method @Deprecated public android.preference.Preference findPreference(CharSequence);
-    method @Deprecated public android.preference.PreferenceManager getPreferenceManager();
-    method @Deprecated public android.preference.PreferenceScreen getPreferenceScreen();
-    method @Deprecated public boolean onPreferenceTreeClick(android.preference.PreferenceScreen, android.preference.Preference);
-    method @Deprecated public void setPreferenceScreen(android.preference.PreferenceScreen);
-  }
-
-  @Deprecated public static interface PreferenceFragment.OnPreferenceStartFragmentCallback {
-    method @Deprecated public boolean onPreferenceStartFragment(android.preference.PreferenceFragment, android.preference.Preference);
-  }
-
-  @Deprecated public abstract class PreferenceGroup extends android.preference.Preference {
-    ctor @Deprecated public PreferenceGroup(android.content.Context, android.util.AttributeSet, int, int);
-    ctor @Deprecated public PreferenceGroup(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public PreferenceGroup(android.content.Context, android.util.AttributeSet);
-    method @Deprecated public void addItemFromInflater(android.preference.Preference);
-    method @Deprecated public boolean addPreference(android.preference.Preference);
-    method @Deprecated protected void dispatchRestoreInstanceState(android.os.Bundle);
-    method @Deprecated protected void dispatchSaveInstanceState(android.os.Bundle);
-    method @Deprecated public android.preference.Preference findPreference(CharSequence);
-    method @Deprecated public android.preference.Preference getPreference(int);
-    method @Deprecated public int getPreferenceCount();
-    method @Deprecated protected boolean isOnSameScreenAsChildren();
-    method @Deprecated public boolean isOrderingAsAdded();
-    method @Deprecated protected boolean onPrepareAddPreference(android.preference.Preference);
-    method @Deprecated public void removeAll();
-    method @Deprecated public boolean removePreference(android.preference.Preference);
-    method @Deprecated public void setOrderingAsAdded(boolean);
-  }
-
-  @Deprecated public class PreferenceManager {
-    method @Deprecated public android.preference.PreferenceScreen createPreferenceScreen(android.content.Context);
-    method @Deprecated @Nullable public android.preference.Preference findPreference(CharSequence);
-    method @Deprecated public static android.content.SharedPreferences getDefaultSharedPreferences(android.content.Context);
-    method @Deprecated public static String getDefaultSharedPreferencesName(android.content.Context);
-    method @Deprecated @Nullable public android.preference.PreferenceDataStore getPreferenceDataStore();
-    method @Deprecated public android.content.SharedPreferences getSharedPreferences();
-    method @Deprecated public int getSharedPreferencesMode();
-    method @Deprecated public String getSharedPreferencesName();
-    method @Deprecated public boolean isStorageDefault();
-    method @Deprecated public boolean isStorageDeviceProtected();
-    method @Deprecated public static void setDefaultValues(android.content.Context, @XmlRes int, boolean);
-    method @Deprecated public static void setDefaultValues(android.content.Context, String, int, int, boolean);
-    method @Deprecated public void setPreferenceDataStore(android.preference.PreferenceDataStore);
-    method @Deprecated public void setSharedPreferencesMode(int);
-    method @Deprecated public void setSharedPreferencesName(String);
-    method @Deprecated public void setStorageDefault();
-    method @Deprecated public void setStorageDeviceProtected();
-    field @Deprecated public static final String KEY_HAS_SET_DEFAULT_VALUES = "_has_set_default_values";
-    field @Deprecated public static final String METADATA_KEY_PREFERENCES = "android.preference";
-  }
-
-  @Deprecated public static interface PreferenceManager.OnActivityDestroyListener {
-    method @Deprecated public void onActivityDestroy();
-  }
-
-  @Deprecated public static interface PreferenceManager.OnActivityResultListener {
-    method @Deprecated public boolean onActivityResult(int, int, android.content.Intent);
-  }
-
-  @Deprecated public static interface PreferenceManager.OnActivityStopListener {
-    method @Deprecated public void onActivityStop();
-  }
-
-  @Deprecated public final class PreferenceScreen extends android.preference.PreferenceGroup implements android.widget.AdapterView.OnItemClickListener android.content.DialogInterface.OnDismissListener {
-    method @Deprecated public void bind(android.widget.ListView);
-    method @Deprecated public android.app.Dialog getDialog();
-    method @Deprecated public android.widget.ListAdapter getRootAdapter();
-    method @Deprecated protected android.widget.ListAdapter onCreateRootAdapter();
-    method @Deprecated public void onDismiss(android.content.DialogInterface);
-    method @Deprecated public void onItemClick(android.widget.AdapterView, android.view.View, int, long);
-  }
-
-  @Deprecated public class RingtonePreference extends android.preference.Preference implements android.preference.PreferenceManager.OnActivityResultListener {
-    ctor @Deprecated public RingtonePreference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor @Deprecated public RingtonePreference(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public RingtonePreference(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public RingtonePreference(android.content.Context);
-    method @Deprecated public int getRingtoneType();
-    method @Deprecated public boolean getShowDefault();
-    method @Deprecated public boolean getShowSilent();
-    method @Deprecated public boolean onActivityResult(int, int, android.content.Intent);
-    method @Deprecated protected void onPrepareRingtonePickerIntent(android.content.Intent);
-    method @Deprecated protected android.net.Uri onRestoreRingtone();
-    method @Deprecated protected void onSaveRingtone(android.net.Uri);
-    method @Deprecated public void setRingtoneType(int);
-    method @Deprecated public void setShowDefault(boolean);
-    method @Deprecated public void setShowSilent(boolean);
-  }
-
-  @Deprecated public class SwitchPreference extends android.preference.TwoStatePreference {
-    ctor @Deprecated public SwitchPreference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor @Deprecated public SwitchPreference(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public SwitchPreference(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public SwitchPreference(android.content.Context);
-    method @Deprecated public CharSequence getSwitchTextOff();
-    method @Deprecated public CharSequence getSwitchTextOn();
-    method @Deprecated public void setSwitchTextOff(CharSequence);
-    method @Deprecated public void setSwitchTextOff(@StringRes int);
-    method @Deprecated public void setSwitchTextOn(CharSequence);
-    method @Deprecated public void setSwitchTextOn(@StringRes int);
-  }
-
-  @Deprecated public abstract class TwoStatePreference extends android.preference.Preference {
-    ctor @Deprecated public TwoStatePreference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor @Deprecated public TwoStatePreference(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public TwoStatePreference(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public TwoStatePreference(android.content.Context);
-    method @Deprecated public boolean getDisableDependentsState();
-    method @Deprecated public CharSequence getSummaryOff();
-    method @Deprecated public CharSequence getSummaryOn();
-    method @Deprecated public boolean isChecked();
-    method @Deprecated public void setChecked(boolean);
-    method @Deprecated public void setDisableDependentsState(boolean);
-    method @Deprecated public void setSummaryOff(CharSequence);
-    method @Deprecated public void setSummaryOff(@StringRes int);
-    method @Deprecated public void setSummaryOn(CharSequence);
-    method @Deprecated public void setSummaryOn(@StringRes int);
-  }
-
-}
-
-package android.print {
-
-  public final class PageRange implements android.os.Parcelable {
-    ctor public PageRange(@IntRange(from=0) int, @IntRange(from=0) int);
-    method public int describeContents();
-    method @IntRange(from=0) public int getEnd();
-    method @IntRange(from=0) public int getStart();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.print.PageRange ALL_PAGES;
-    field @NonNull public static final android.os.Parcelable.Creator<android.print.PageRange> CREATOR;
-  }
-
-  public final class PrintAttributes implements android.os.Parcelable {
-    method public int describeContents();
-    method @IntRange(from=0) public int getColorMode();
-    method @IntRange(from=0) public int getDuplexMode();
-    method @Nullable public android.print.PrintAttributes.MediaSize getMediaSize();
-    method @Nullable public android.print.PrintAttributes.Margins getMinMargins();
-    method @Nullable public android.print.PrintAttributes.Resolution getResolution();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int COLOR_MODE_COLOR = 2; // 0x2
-    field public static final int COLOR_MODE_MONOCHROME = 1; // 0x1
-    field @NonNull public static final android.os.Parcelable.Creator<android.print.PrintAttributes> CREATOR;
-    field public static final int DUPLEX_MODE_LONG_EDGE = 2; // 0x2
-    field public static final int DUPLEX_MODE_NONE = 1; // 0x1
-    field public static final int DUPLEX_MODE_SHORT_EDGE = 4; // 0x4
-  }
-
-  public static final class PrintAttributes.Builder {
-    ctor public PrintAttributes.Builder();
-    method @NonNull public android.print.PrintAttributes build();
-    method @NonNull public android.print.PrintAttributes.Builder setColorMode(int);
-    method @NonNull public android.print.PrintAttributes.Builder setDuplexMode(int);
-    method @NonNull public android.print.PrintAttributes.Builder setMediaSize(@NonNull android.print.PrintAttributes.MediaSize);
-    method @NonNull public android.print.PrintAttributes.Builder setMinMargins(@NonNull android.print.PrintAttributes.Margins);
-    method @NonNull public android.print.PrintAttributes.Builder setResolution(@NonNull android.print.PrintAttributes.Resolution);
-  }
-
-  public static final class PrintAttributes.Margins {
-    ctor public PrintAttributes.Margins(int, int, int, int);
-    method public int getBottomMils();
-    method public int getLeftMils();
-    method public int getRightMils();
-    method public int getTopMils();
-    field public static final android.print.PrintAttributes.Margins NO_MARGINS;
-  }
-
-  public static final class PrintAttributes.MediaSize {
-    ctor public PrintAttributes.MediaSize(@NonNull String, @NonNull String, @IntRange(from=1) int, @IntRange(from=1) int);
-    method @NonNull public android.print.PrintAttributes.MediaSize asLandscape();
-    method @NonNull public android.print.PrintAttributes.MediaSize asPortrait();
-    method @IntRange(from=1) public int getHeightMils();
-    method @NonNull public String getId();
-    method @NonNull public String getLabel(@NonNull android.content.pm.PackageManager);
-    method @IntRange(from=1) public int getWidthMils();
-    method public boolean isPortrait();
-    field public static final android.print.PrintAttributes.MediaSize ISO_A0;
-    field public static final android.print.PrintAttributes.MediaSize ISO_A1;
-    field public static final android.print.PrintAttributes.MediaSize ISO_A10;
-    field public static final android.print.PrintAttributes.MediaSize ISO_A2;
-    field public static final android.print.PrintAttributes.MediaSize ISO_A3;
-    field public static final android.print.PrintAttributes.MediaSize ISO_A4;
-    field public static final android.print.PrintAttributes.MediaSize ISO_A5;
-    field public static final android.print.PrintAttributes.MediaSize ISO_A6;
-    field public static final android.print.PrintAttributes.MediaSize ISO_A7;
-    field public static final android.print.PrintAttributes.MediaSize ISO_A8;
-    field public static final android.print.PrintAttributes.MediaSize ISO_A9;
-    field public static final android.print.PrintAttributes.MediaSize ISO_B0;
-    field public static final android.print.PrintAttributes.MediaSize ISO_B1;
-    field public static final android.print.PrintAttributes.MediaSize ISO_B10;
-    field public static final android.print.PrintAttributes.MediaSize ISO_B2;
-    field public static final android.print.PrintAttributes.MediaSize ISO_B3;
-    field public static final android.print.PrintAttributes.MediaSize ISO_B4;
-    field public static final android.print.PrintAttributes.MediaSize ISO_B5;
-    field public static final android.print.PrintAttributes.MediaSize ISO_B6;
-    field public static final android.print.PrintAttributes.MediaSize ISO_B7;
-    field public static final android.print.PrintAttributes.MediaSize ISO_B8;
-    field public static final android.print.PrintAttributes.MediaSize ISO_B9;
-    field public static final android.print.PrintAttributes.MediaSize ISO_C0;
-    field public static final android.print.PrintAttributes.MediaSize ISO_C1;
-    field public static final android.print.PrintAttributes.MediaSize ISO_C10;
-    field public static final android.print.PrintAttributes.MediaSize ISO_C2;
-    field public static final android.print.PrintAttributes.MediaSize ISO_C3;
-    field public static final android.print.PrintAttributes.MediaSize ISO_C4;
-    field public static final android.print.PrintAttributes.MediaSize ISO_C5;
-    field public static final android.print.PrintAttributes.MediaSize ISO_C6;
-    field public static final android.print.PrintAttributes.MediaSize ISO_C7;
-    field public static final android.print.PrintAttributes.MediaSize ISO_C8;
-    field public static final android.print.PrintAttributes.MediaSize ISO_C9;
-    field public static final android.print.PrintAttributes.MediaSize JIS_B0;
-    field public static final android.print.PrintAttributes.MediaSize JIS_B1;
-    field public static final android.print.PrintAttributes.MediaSize JIS_B10;
-    field public static final android.print.PrintAttributes.MediaSize JIS_B2;
-    field public static final android.print.PrintAttributes.MediaSize JIS_B3;
-    field public static final android.print.PrintAttributes.MediaSize JIS_B4;
-    field public static final android.print.PrintAttributes.MediaSize JIS_B5;
-    field public static final android.print.PrintAttributes.MediaSize JIS_B6;
-    field public static final android.print.PrintAttributes.MediaSize JIS_B7;
-    field public static final android.print.PrintAttributes.MediaSize JIS_B8;
-    field public static final android.print.PrintAttributes.MediaSize JIS_B9;
-    field public static final android.print.PrintAttributes.MediaSize JIS_EXEC;
-    field public static final android.print.PrintAttributes.MediaSize JPN_CHOU2;
-    field public static final android.print.PrintAttributes.MediaSize JPN_CHOU3;
-    field public static final android.print.PrintAttributes.MediaSize JPN_CHOU4;
-    field public static final android.print.PrintAttributes.MediaSize JPN_HAGAKI;
-    field public static final android.print.PrintAttributes.MediaSize JPN_KAHU;
-    field public static final android.print.PrintAttributes.MediaSize JPN_KAKU2;
-    field public static final android.print.PrintAttributes.MediaSize JPN_OUFUKU;
-    field public static final android.print.PrintAttributes.MediaSize JPN_YOU4;
-    field public static final android.print.PrintAttributes.MediaSize NA_FOOLSCAP;
-    field public static final android.print.PrintAttributes.MediaSize NA_GOVT_LETTER;
-    field public static final android.print.PrintAttributes.MediaSize NA_INDEX_3X5;
-    field public static final android.print.PrintAttributes.MediaSize NA_INDEX_4X6;
-    field public static final android.print.PrintAttributes.MediaSize NA_INDEX_5X8;
-    field public static final android.print.PrintAttributes.MediaSize NA_JUNIOR_LEGAL;
-    field public static final android.print.PrintAttributes.MediaSize NA_LEDGER;
-    field public static final android.print.PrintAttributes.MediaSize NA_LEGAL;
-    field public static final android.print.PrintAttributes.MediaSize NA_LETTER;
-    field public static final android.print.PrintAttributes.MediaSize NA_MONARCH;
-    field public static final android.print.PrintAttributes.MediaSize NA_QUARTO;
-    field public static final android.print.PrintAttributes.MediaSize NA_TABLOID;
-    field public static final android.print.PrintAttributes.MediaSize OM_DAI_PA_KAI;
-    field public static final android.print.PrintAttributes.MediaSize OM_JUURO_KU_KAI;
-    field public static final android.print.PrintAttributes.MediaSize OM_PA_KAI;
-    field public static final android.print.PrintAttributes.MediaSize PRC_1;
-    field public static final android.print.PrintAttributes.MediaSize PRC_10;
-    field public static final android.print.PrintAttributes.MediaSize PRC_16K;
-    field public static final android.print.PrintAttributes.MediaSize PRC_2;
-    field public static final android.print.PrintAttributes.MediaSize PRC_3;
-    field public static final android.print.PrintAttributes.MediaSize PRC_4;
-    field public static final android.print.PrintAttributes.MediaSize PRC_5;
-    field public static final android.print.PrintAttributes.MediaSize PRC_6;
-    field public static final android.print.PrintAttributes.MediaSize PRC_7;
-    field public static final android.print.PrintAttributes.MediaSize PRC_8;
-    field public static final android.print.PrintAttributes.MediaSize PRC_9;
-    field public static final android.print.PrintAttributes.MediaSize ROC_16K;
-    field public static final android.print.PrintAttributes.MediaSize ROC_8K;
-    field public static final android.print.PrintAttributes.MediaSize UNKNOWN_LANDSCAPE;
-    field public static final android.print.PrintAttributes.MediaSize UNKNOWN_PORTRAIT;
-  }
-
-  public static final class PrintAttributes.Resolution {
-    ctor public PrintAttributes.Resolution(@NonNull String, @NonNull String, @IntRange(from=1) int, @IntRange(from=1) int);
-    method @IntRange(from=1) public int getHorizontalDpi();
-    method @NonNull public String getId();
-    method @NonNull public String getLabel();
-    method @IntRange(from=1) public int getVerticalDpi();
-  }
-
-  public abstract class PrintDocumentAdapter {
-    ctor public PrintDocumentAdapter();
-    method public void onFinish();
-    method public abstract void onLayout(android.print.PrintAttributes, android.print.PrintAttributes, android.os.CancellationSignal, android.print.PrintDocumentAdapter.LayoutResultCallback, android.os.Bundle);
-    method public void onStart();
-    method public abstract void onWrite(android.print.PageRange[], android.os.ParcelFileDescriptor, android.os.CancellationSignal, android.print.PrintDocumentAdapter.WriteResultCallback);
-    field public static final String EXTRA_PRINT_PREVIEW = "EXTRA_PRINT_PREVIEW";
-  }
-
-  public abstract static class PrintDocumentAdapter.LayoutResultCallback {
-    method public void onLayoutCancelled();
-    method public void onLayoutFailed(CharSequence);
-    method public void onLayoutFinished(android.print.PrintDocumentInfo, boolean);
-  }
-
-  public abstract static class PrintDocumentAdapter.WriteResultCallback {
-    method public void onWriteCancelled();
-    method public void onWriteFailed(CharSequence);
-    method public void onWriteFinished(android.print.PageRange[]);
-  }
-
-  public final class PrintDocumentInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getContentType();
-    method @IntRange(from=0) public long getDataSize();
-    method @NonNull public String getName();
-    method @IntRange(from=0xffffffff) public int getPageCount();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CONTENT_TYPE_DOCUMENT = 0; // 0x0
-    field public static final int CONTENT_TYPE_PHOTO = 1; // 0x1
-    field public static final int CONTENT_TYPE_UNKNOWN = -1; // 0xffffffff
-    field @NonNull public static final android.os.Parcelable.Creator<android.print.PrintDocumentInfo> CREATOR;
-    field public static final int PAGE_COUNT_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public static final class PrintDocumentInfo.Builder {
-    ctor public PrintDocumentInfo.Builder(@NonNull String);
-    method @NonNull public android.print.PrintDocumentInfo build();
-    method @NonNull public android.print.PrintDocumentInfo.Builder setContentType(int);
-    method @NonNull public android.print.PrintDocumentInfo.Builder setPageCount(@IntRange(from=0xffffffff) int);
-  }
-
-  public final class PrintJob {
-    method public void cancel();
-    method @Nullable public android.print.PrintJobId getId();
-    method @NonNull public android.print.PrintJobInfo getInfo();
-    method public boolean isBlocked();
-    method public boolean isCancelled();
-    method public boolean isCompleted();
-    method public boolean isFailed();
-    method public boolean isQueued();
-    method public boolean isStarted();
-    method public void restart();
-  }
-
-  public final class PrintJobId implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.print.PrintJobId> CREATOR;
-  }
-
-  public final class PrintJobInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAdvancedIntOption(String);
-    method public String getAdvancedStringOption(String);
-    method @NonNull public android.print.PrintAttributes getAttributes();
-    method @IntRange(from=0) public int getCopies();
-    method public long getCreationTime();
-    method @Nullable public android.print.PrintJobId getId();
-    method @NonNull public String getLabel();
-    method @Nullable public android.print.PageRange[] getPages();
-    method @Nullable public android.print.PrinterId getPrinterId();
-    method public int getState();
-    method public boolean hasAdvancedOption(String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.print.PrintJobInfo> CREATOR;
-    field public static final int STATE_BLOCKED = 4; // 0x4
-    field public static final int STATE_CANCELED = 7; // 0x7
-    field public static final int STATE_COMPLETED = 5; // 0x5
-    field public static final int STATE_CREATED = 1; // 0x1
-    field public static final int STATE_FAILED = 6; // 0x6
-    field public static final int STATE_QUEUED = 2; // 0x2
-    field public static final int STATE_STARTED = 3; // 0x3
-  }
-
-  public static final class PrintJobInfo.Builder {
-    ctor public PrintJobInfo.Builder(@Nullable android.print.PrintJobInfo);
-    method @NonNull public android.print.PrintJobInfo build();
-    method public void putAdvancedOption(@NonNull String, @Nullable String);
-    method public void putAdvancedOption(@NonNull String, int);
-    method public void setAttributes(@NonNull android.print.PrintAttributes);
-    method public void setCopies(@IntRange(from=1) int);
-    method public void setPages(@NonNull android.print.PageRange[]);
-  }
-
-  public final class PrintManager {
-    method @NonNull public java.util.List<android.print.PrintJob> getPrintJobs();
-    method @NonNull public android.print.PrintJob print(@NonNull String, @NonNull android.print.PrintDocumentAdapter, @Nullable android.print.PrintAttributes);
-  }
-
-  public final class PrinterCapabilitiesInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getColorModes();
-    method @NonNull public android.print.PrintAttributes getDefaults();
-    method public int getDuplexModes();
-    method @NonNull public java.util.List<android.print.PrintAttributes.MediaSize> getMediaSizes();
-    method @NonNull public android.print.PrintAttributes.Margins getMinMargins();
-    method @NonNull public java.util.List<android.print.PrintAttributes.Resolution> getResolutions();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.print.PrinterCapabilitiesInfo> CREATOR;
-  }
-
-  public static final class PrinterCapabilitiesInfo.Builder {
-    ctor public PrinterCapabilitiesInfo.Builder(@NonNull android.print.PrinterId);
-    method @NonNull public android.print.PrinterCapabilitiesInfo.Builder addMediaSize(@NonNull android.print.PrintAttributes.MediaSize, boolean);
-    method @NonNull public android.print.PrinterCapabilitiesInfo.Builder addResolution(@NonNull android.print.PrintAttributes.Resolution, boolean);
-    method @NonNull public android.print.PrinterCapabilitiesInfo build();
-    method @NonNull public android.print.PrinterCapabilitiesInfo.Builder setColorModes(int, int);
-    method @NonNull public android.print.PrinterCapabilitiesInfo.Builder setDuplexModes(int, int);
-    method @NonNull public android.print.PrinterCapabilitiesInfo.Builder setMinMargins(@NonNull android.print.PrintAttributes.Margins);
-  }
-
-  public final class PrinterId implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public String getLocalId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.print.PrinterId> CREATOR;
-  }
-
-  public final class PrinterInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.print.PrinterCapabilitiesInfo getCapabilities();
-    method @Nullable public String getDescription();
-    method @NonNull public android.print.PrinterId getId();
-    method @NonNull public String getName();
-    method public int getStatus();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.print.PrinterInfo> CREATOR;
-    field public static final int STATUS_BUSY = 2; // 0x2
-    field public static final int STATUS_IDLE = 1; // 0x1
-    field public static final int STATUS_UNAVAILABLE = 3; // 0x3
-  }
-
-  public static final class PrinterInfo.Builder {
-    ctor public PrinterInfo.Builder(@NonNull android.print.PrinterId, @NonNull String, int);
-    ctor public PrinterInfo.Builder(@NonNull android.print.PrinterInfo);
-    method @NonNull public android.print.PrinterInfo build();
-    method @NonNull public android.print.PrinterInfo.Builder setCapabilities(@NonNull android.print.PrinterCapabilitiesInfo);
-    method @NonNull public android.print.PrinterInfo.Builder setDescription(@NonNull String);
-    method @NonNull public android.print.PrinterInfo.Builder setHasCustomPrinterIcon(boolean);
-    method @NonNull public android.print.PrinterInfo.Builder setIconResourceId(@DrawableRes int);
-    method @NonNull public android.print.PrinterInfo.Builder setInfoIntent(@NonNull android.app.PendingIntent);
-    method @NonNull public android.print.PrinterInfo.Builder setName(@NonNull String);
-    method @NonNull public android.print.PrinterInfo.Builder setStatus(int);
-  }
-
-}
-
-package android.print.pdf {
-
-  public class PrintedPdfDocument extends android.graphics.pdf.PdfDocument {
-    ctor public PrintedPdfDocument(@NonNull android.content.Context, @NonNull android.print.PrintAttributes);
-    method @NonNull public android.graphics.Rect getPageContentRect();
-    method @IntRange(from=0) public int getPageHeight();
-    method @IntRange(from=0) public int getPageWidth();
-    method @NonNull public android.graphics.pdf.PdfDocument.Page startPage(@IntRange(from=0) int);
-  }
-
-}
-
-package android.printservice {
-
-  public final class CustomPrinterIconCallback {
-    method public boolean onCustomPrinterIconLoaded(@Nullable android.graphics.drawable.Icon);
-  }
-
-  public final class PrintDocument {
-    method @Nullable public android.os.ParcelFileDescriptor getData();
-    method @NonNull public android.print.PrintDocumentInfo getInfo();
-  }
-
-  public final class PrintJob {
-    method @MainThread public boolean block(@Nullable String);
-    method @MainThread public boolean cancel();
-    method @MainThread public boolean complete();
-    method @MainThread public boolean fail(@Nullable String);
-    method @MainThread public int getAdvancedIntOption(String);
-    method @MainThread public String getAdvancedStringOption(String);
-    method @MainThread @NonNull public android.printservice.PrintDocument getDocument();
-    method @MainThread public android.print.PrintJobId getId();
-    method @MainThread @NonNull public android.print.PrintJobInfo getInfo();
-    method @MainThread @Nullable public String getTag();
-    method @MainThread public boolean hasAdvancedOption(String);
-    method @MainThread public boolean isBlocked();
-    method @MainThread public boolean isCancelled();
-    method @MainThread public boolean isCompleted();
-    method @MainThread public boolean isFailed();
-    method @MainThread public boolean isQueued();
-    method @MainThread public boolean isStarted();
-    method @MainThread public void setProgress(@FloatRange(from=0.0, to=1.0) float);
-    method @MainThread public void setStatus(@Nullable CharSequence);
-    method @MainThread public void setStatus(@StringRes int);
-    method @MainThread public boolean setTag(@NonNull String);
-    method @MainThread public boolean start();
-  }
-
-  public abstract class PrintService extends android.app.Service {
-    ctor public PrintService();
-    method protected final void attachBaseContext(android.content.Context);
-    method @NonNull public final android.print.PrinterId generatePrinterId(String);
-    method public final java.util.List<android.printservice.PrintJob> getActivePrintJobs();
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method protected void onConnected();
-    method @Nullable protected abstract android.printservice.PrinterDiscoverySession onCreatePrinterDiscoverySession();
-    method protected void onDisconnected();
-    method protected abstract void onPrintJobQueued(android.printservice.PrintJob);
-    method protected abstract void onRequestCancelPrintJob(android.printservice.PrintJob);
-    field public static final String EXTRA_CAN_SELECT_PRINTER = "android.printservice.extra.CAN_SELECT_PRINTER";
-    field public static final String EXTRA_PRINTER_INFO = "android.intent.extra.print.EXTRA_PRINTER_INFO";
-    field public static final String EXTRA_PRINT_DOCUMENT_INFO = "android.printservice.extra.PRINT_DOCUMENT_INFO";
-    field public static final String EXTRA_PRINT_JOB_INFO = "android.intent.extra.print.PRINT_JOB_INFO";
-    field public static final String EXTRA_SELECT_PRINTER = "android.printservice.extra.SELECT_PRINTER";
-    field public static final String SERVICE_INTERFACE = "android.printservice.PrintService";
-    field public static final String SERVICE_META_DATA = "android.printservice";
-  }
-
-  public abstract class PrinterDiscoverySession {
-    ctor public PrinterDiscoverySession();
-    method public final void addPrinters(@NonNull java.util.List<android.print.PrinterInfo>);
-    method @NonNull public final java.util.List<android.print.PrinterInfo> getPrinters();
-    method @NonNull public final java.util.List<android.print.PrinterId> getTrackedPrinters();
-    method public final boolean isDestroyed();
-    method public final boolean isPrinterDiscoveryStarted();
-    method public abstract void onDestroy();
-    method public void onRequestCustomPrinterIcon(@NonNull android.print.PrinterId, @NonNull android.os.CancellationSignal, @NonNull android.printservice.CustomPrinterIconCallback);
-    method public abstract void onStartPrinterDiscovery(@NonNull java.util.List<android.print.PrinterId>);
-    method public abstract void onStartPrinterStateTracking(@NonNull android.print.PrinterId);
-    method public abstract void onStopPrinterDiscovery();
-    method public abstract void onStopPrinterStateTracking(@NonNull android.print.PrinterId);
-    method public abstract void onValidatePrinters(@NonNull java.util.List<android.print.PrinterId>);
-    method public final void removePrinters(@NonNull java.util.List<android.print.PrinterId>);
-  }
-
-}
-
-package android.provider {
-
-  public final class AlarmClock {
-    ctor public AlarmClock();
-    field public static final String ACTION_DISMISS_ALARM = "android.intent.action.DISMISS_ALARM";
-    field public static final String ACTION_DISMISS_TIMER = "android.intent.action.DISMISS_TIMER";
-    field public static final String ACTION_SET_ALARM = "android.intent.action.SET_ALARM";
-    field public static final String ACTION_SET_TIMER = "android.intent.action.SET_TIMER";
-    field public static final String ACTION_SHOW_ALARMS = "android.intent.action.SHOW_ALARMS";
-    field public static final String ACTION_SHOW_TIMERS = "android.intent.action.SHOW_TIMERS";
-    field public static final String ACTION_SNOOZE_ALARM = "android.intent.action.SNOOZE_ALARM";
-    field public static final String ALARM_SEARCH_MODE_ALL = "android.all";
-    field public static final String ALARM_SEARCH_MODE_LABEL = "android.label";
-    field public static final String ALARM_SEARCH_MODE_NEXT = "android.next";
-    field public static final String ALARM_SEARCH_MODE_TIME = "android.time";
-    field public static final String EXTRA_ALARM_SEARCH_MODE = "android.intent.extra.alarm.SEARCH_MODE";
-    field public static final String EXTRA_ALARM_SNOOZE_DURATION = "android.intent.extra.alarm.SNOOZE_DURATION";
-    field public static final String EXTRA_DAYS = "android.intent.extra.alarm.DAYS";
-    field public static final String EXTRA_HOUR = "android.intent.extra.alarm.HOUR";
-    field public static final String EXTRA_IS_PM = "android.intent.extra.alarm.IS_PM";
-    field public static final String EXTRA_LENGTH = "android.intent.extra.alarm.LENGTH";
-    field public static final String EXTRA_MESSAGE = "android.intent.extra.alarm.MESSAGE";
-    field public static final String EXTRA_MINUTES = "android.intent.extra.alarm.MINUTES";
-    field public static final String EXTRA_RINGTONE = "android.intent.extra.alarm.RINGTONE";
-    field public static final String EXTRA_SKIP_UI = "android.intent.extra.alarm.SKIP_UI";
-    field public static final String EXTRA_VIBRATE = "android.intent.extra.alarm.VIBRATE";
-    field public static final String VALUE_RINGTONE_SILENT = "silent";
-  }
-
-  public interface BaseColumns {
-    field public static final String _COUNT = "_count";
-    field public static final String _ID = "_id";
-  }
-
-  public class BlockedNumberContract {
-    method public static boolean canCurrentUserBlockNumbers(android.content.Context);
-    method @WorkerThread public static boolean isBlocked(android.content.Context, String);
-    method @WorkerThread public static int unblock(android.content.Context, String);
-    field public static final String AUTHORITY = "com.android.blockednumber";
-    field public static final android.net.Uri AUTHORITY_URI;
-  }
-
-  public static class BlockedNumberContract.BlockedNumbers {
-    field public static final String COLUMN_E164_NUMBER = "e164_number";
-    field public static final String COLUMN_ID = "_id";
-    field public static final String COLUMN_ORIGINAL_NUMBER = "original_number";
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/blocked_number";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/blocked_number";
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  public class Browser {
-    ctor public Browser();
-    method public static final void sendString(android.content.Context, String);
-    field public static final String EXTRA_APPLICATION_ID = "com.android.browser.application_id";
-    field public static final String EXTRA_CREATE_NEW_TAB = "create_new_tab";
-    field public static final String EXTRA_HEADERS = "com.android.browser.headers";
-    field public static final String INITIAL_ZOOM_LEVEL = "browser.initialZoomLevel";
-  }
-
-  public final class CalendarContract {
-    method public static boolean startViewCalendarEventInManagedProfile(@NonNull android.content.Context, long, long, long, boolean, int);
-    field public static final String ACCOUNT_TYPE_LOCAL = "LOCAL";
-    field public static final String ACTION_EVENT_REMINDER = "android.intent.action.EVENT_REMINDER";
-    field public static final String ACTION_HANDLE_CUSTOM_EVENT = "android.provider.calendar.action.HANDLE_CUSTOM_EVENT";
-    field public static final String ACTION_VIEW_MANAGED_PROFILE_CALENDAR_EVENT = "android.provider.calendar.action.VIEW_MANAGED_PROFILE_CALENDAR_EVENT";
-    field public static final String AUTHORITY = "com.android.calendar";
-    field public static final String CALLER_IS_SYNCADAPTER = "caller_is_syncadapter";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String EXTRA_CUSTOM_APP_URI = "customAppUri";
-    field public static final String EXTRA_EVENT_ALL_DAY = "allDay";
-    field public static final String EXTRA_EVENT_BEGIN_TIME = "beginTime";
-    field public static final String EXTRA_EVENT_END_TIME = "endTime";
-    field public static final String EXTRA_EVENT_ID = "id";
-  }
-
-  public static final class CalendarContract.Attendees implements android.provider.BaseColumns android.provider.CalendarContract.AttendeesColumns android.provider.CalendarContract.EventsColumns {
-    method public static android.database.Cursor query(android.content.ContentResolver, long, String[]);
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  protected static interface CalendarContract.AttendeesColumns {
-    field public static final String ATTENDEE_EMAIL = "attendeeEmail";
-    field public static final String ATTENDEE_IDENTITY = "attendeeIdentity";
-    field public static final String ATTENDEE_ID_NAMESPACE = "attendeeIdNamespace";
-    field public static final String ATTENDEE_NAME = "attendeeName";
-    field public static final String ATTENDEE_RELATIONSHIP = "attendeeRelationship";
-    field public static final String ATTENDEE_STATUS = "attendeeStatus";
-    field public static final int ATTENDEE_STATUS_ACCEPTED = 1; // 0x1
-    field public static final int ATTENDEE_STATUS_DECLINED = 2; // 0x2
-    field public static final int ATTENDEE_STATUS_INVITED = 3; // 0x3
-    field public static final int ATTENDEE_STATUS_NONE = 0; // 0x0
-    field public static final int ATTENDEE_STATUS_TENTATIVE = 4; // 0x4
-    field public static final String ATTENDEE_TYPE = "attendeeType";
-    field public static final String EVENT_ID = "event_id";
-    field public static final int RELATIONSHIP_ATTENDEE = 1; // 0x1
-    field public static final int RELATIONSHIP_NONE = 0; // 0x0
-    field public static final int RELATIONSHIP_ORGANIZER = 2; // 0x2
-    field public static final int RELATIONSHIP_PERFORMER = 3; // 0x3
-    field public static final int RELATIONSHIP_SPEAKER = 4; // 0x4
-    field public static final int TYPE_NONE = 0; // 0x0
-    field public static final int TYPE_OPTIONAL = 2; // 0x2
-    field public static final int TYPE_REQUIRED = 1; // 0x1
-    field public static final int TYPE_RESOURCE = 3; // 0x3
-  }
-
-  public static final class CalendarContract.CalendarAlerts implements android.provider.BaseColumns android.provider.CalendarContract.CalendarAlertsColumns android.provider.CalendarContract.CalendarColumns android.provider.CalendarContract.EventsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final android.net.Uri CONTENT_URI_BY_INSTANCE;
-  }
-
-  protected static interface CalendarContract.CalendarAlertsColumns {
-    field public static final String ALARM_TIME = "alarmTime";
-    field public static final String BEGIN = "begin";
-    field public static final String CREATION_TIME = "creationTime";
-    field public static final String DEFAULT_SORT_ORDER = "begin ASC,title ASC";
-    field public static final String END = "end";
-    field public static final String EVENT_ID = "event_id";
-    field public static final String MINUTES = "minutes";
-    field public static final String NOTIFY_TIME = "notifyTime";
-    field public static final String RECEIVED_TIME = "receivedTime";
-    field public static final String STATE = "state";
-    field public static final int STATE_DISMISSED = 2; // 0x2
-    field public static final int STATE_FIRED = 1; // 0x1
-    field public static final int STATE_SCHEDULED = 0; // 0x0
-  }
-
-  public static final class CalendarContract.CalendarCache implements android.provider.CalendarContract.CalendarCacheColumns {
-    field public static final String KEY_TIMEZONE_INSTANCES = "timezoneInstances";
-    field public static final String KEY_TIMEZONE_INSTANCES_PREVIOUS = "timezoneInstancesPrevious";
-    field public static final String KEY_TIMEZONE_TYPE = "timezoneType";
-    field public static final String TIMEZONE_TYPE_AUTO = "auto";
-    field public static final String TIMEZONE_TYPE_HOME = "home";
-    field public static final android.net.Uri URI;
-  }
-
-  protected static interface CalendarContract.CalendarCacheColumns {
-    field public static final String KEY = "key";
-    field public static final String VALUE = "value";
-  }
-
-  protected static interface CalendarContract.CalendarColumns {
-    field public static final String ALLOWED_ATTENDEE_TYPES = "allowedAttendeeTypes";
-    field public static final String ALLOWED_AVAILABILITY = "allowedAvailability";
-    field public static final String ALLOWED_REMINDERS = "allowedReminders";
-    field public static final String CALENDAR_ACCESS_LEVEL = "calendar_access_level";
-    field public static final String CALENDAR_COLOR = "calendar_color";
-    field public static final String CALENDAR_COLOR_KEY = "calendar_color_index";
-    field public static final String CALENDAR_DISPLAY_NAME = "calendar_displayName";
-    field public static final String CALENDAR_TIME_ZONE = "calendar_timezone";
-    field public static final int CAL_ACCESS_CONTRIBUTOR = 500; // 0x1f4
-    field public static final int CAL_ACCESS_EDITOR = 600; // 0x258
-    field public static final int CAL_ACCESS_FREEBUSY = 100; // 0x64
-    field public static final int CAL_ACCESS_NONE = 0; // 0x0
-    field public static final int CAL_ACCESS_OVERRIDE = 400; // 0x190
-    field public static final int CAL_ACCESS_OWNER = 700; // 0x2bc
-    field public static final int CAL_ACCESS_READ = 200; // 0xc8
-    field public static final int CAL_ACCESS_RESPOND = 300; // 0x12c
-    field public static final int CAL_ACCESS_ROOT = 800; // 0x320
-    field public static final String CAN_MODIFY_TIME_ZONE = "canModifyTimeZone";
-    field public static final String CAN_ORGANIZER_RESPOND = "canOrganizerRespond";
-    field public static final String IS_PRIMARY = "isPrimary";
-    field public static final String MAX_REMINDERS = "maxReminders";
-    field public static final String OWNER_ACCOUNT = "ownerAccount";
-    field public static final String SYNC_EVENTS = "sync_events";
-    field public static final String VISIBLE = "visible";
-  }
-
-  public static final class CalendarContract.CalendarEntity implements android.provider.BaseColumns android.provider.CalendarContract.CalendarColumns android.provider.CalendarContract.SyncColumns {
-    method public static android.content.EntityIterator newEntityIterator(android.database.Cursor);
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  protected static interface CalendarContract.CalendarSyncColumns {
-    field public static final String CAL_SYNC1 = "cal_sync1";
-    field public static final String CAL_SYNC10 = "cal_sync10";
-    field public static final String CAL_SYNC2 = "cal_sync2";
-    field public static final String CAL_SYNC3 = "cal_sync3";
-    field public static final String CAL_SYNC4 = "cal_sync4";
-    field public static final String CAL_SYNC5 = "cal_sync5";
-    field public static final String CAL_SYNC6 = "cal_sync6";
-    field public static final String CAL_SYNC7 = "cal_sync7";
-    field public static final String CAL_SYNC8 = "cal_sync8";
-    field public static final String CAL_SYNC9 = "cal_sync9";
-  }
-
-  public static final class CalendarContract.Calendars implements android.provider.BaseColumns android.provider.CalendarContract.CalendarColumns android.provider.CalendarContract.SyncColumns {
-    field public static final String CALENDAR_LOCATION = "calendar_location";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "calendar_displayName";
-    field @NonNull public static final android.net.Uri ENTERPRISE_CONTENT_URI;
-    field public static final String NAME = "name";
-  }
-
-  public static final class CalendarContract.Colors implements android.provider.CalendarContract.ColorsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  protected static interface CalendarContract.ColorsColumns extends android.provider.SyncStateContract.Columns {
-    field public static final String COLOR = "color";
-    field public static final String COLOR_KEY = "color_index";
-    field public static final String COLOR_TYPE = "color_type";
-    field public static final int TYPE_CALENDAR = 0; // 0x0
-    field public static final int TYPE_EVENT = 1; // 0x1
-  }
-
-  public static final class CalendarContract.EventDays implements android.provider.CalendarContract.EventDaysColumns {
-    method public static android.database.Cursor query(android.content.ContentResolver, int, int, String[]);
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  protected static interface CalendarContract.EventDaysColumns {
-    field public static final String ENDDAY = "endDay";
-    field public static final String STARTDAY = "startDay";
-  }
-
-  public static final class CalendarContract.Events implements android.provider.BaseColumns android.provider.CalendarContract.CalendarColumns android.provider.CalendarContract.EventsColumns android.provider.CalendarContract.SyncColumns {
-    field public static final android.net.Uri CONTENT_EXCEPTION_URI;
-    field public static final android.net.Uri CONTENT_URI;
-    field @NonNull public static final android.net.Uri ENTERPRISE_CONTENT_URI;
-  }
-
-  protected static interface CalendarContract.EventsColumns {
-    field public static final int ACCESS_CONFIDENTIAL = 1; // 0x1
-    field public static final int ACCESS_DEFAULT = 0; // 0x0
-    field public static final String ACCESS_LEVEL = "accessLevel";
-    field public static final int ACCESS_PRIVATE = 2; // 0x2
-    field public static final int ACCESS_PUBLIC = 3; // 0x3
-    field public static final String ALL_DAY = "allDay";
-    field public static final String AVAILABILITY = "availability";
-    field public static final int AVAILABILITY_BUSY = 0; // 0x0
-    field public static final int AVAILABILITY_FREE = 1; // 0x1
-    field public static final int AVAILABILITY_TENTATIVE = 2; // 0x2
-    field public static final String CALENDAR_ID = "calendar_id";
-    field public static final String CAN_INVITE_OTHERS = "canInviteOthers";
-    field public static final String CUSTOM_APP_PACKAGE = "customAppPackage";
-    field public static final String CUSTOM_APP_URI = "customAppUri";
-    field public static final String DESCRIPTION = "description";
-    field public static final String DISPLAY_COLOR = "displayColor";
-    field public static final String DTEND = "dtend";
-    field public static final String DTSTART = "dtstart";
-    field public static final String DURATION = "duration";
-    field public static final String EVENT_COLOR = "eventColor";
-    field public static final String EVENT_COLOR_KEY = "eventColor_index";
-    field public static final String EVENT_END_TIMEZONE = "eventEndTimezone";
-    field public static final String EVENT_LOCATION = "eventLocation";
-    field public static final String EVENT_TIMEZONE = "eventTimezone";
-    field public static final String EXDATE = "exdate";
-    field public static final String EXRULE = "exrule";
-    field public static final String GUESTS_CAN_INVITE_OTHERS = "guestsCanInviteOthers";
-    field public static final String GUESTS_CAN_MODIFY = "guestsCanModify";
-    field public static final String GUESTS_CAN_SEE_GUESTS = "guestsCanSeeGuests";
-    field public static final String HAS_ALARM = "hasAlarm";
-    field public static final String HAS_ATTENDEE_DATA = "hasAttendeeData";
-    field public static final String HAS_EXTENDED_PROPERTIES = "hasExtendedProperties";
-    field public static final String IS_ORGANIZER = "isOrganizer";
-    field public static final String LAST_DATE = "lastDate";
-    field public static final String LAST_SYNCED = "lastSynced";
-    field public static final String ORGANIZER = "organizer";
-    field public static final String ORIGINAL_ALL_DAY = "originalAllDay";
-    field public static final String ORIGINAL_ID = "original_id";
-    field public static final String ORIGINAL_INSTANCE_TIME = "originalInstanceTime";
-    field public static final String ORIGINAL_SYNC_ID = "original_sync_id";
-    field public static final String RDATE = "rdate";
-    field public static final String RRULE = "rrule";
-    field public static final String SELF_ATTENDEE_STATUS = "selfAttendeeStatus";
-    field public static final String STATUS = "eventStatus";
-    field public static final int STATUS_CANCELED = 2; // 0x2
-    field public static final int STATUS_CONFIRMED = 1; // 0x1
-    field public static final int STATUS_TENTATIVE = 0; // 0x0
-    field public static final String SYNC_DATA1 = "sync_data1";
-    field public static final String SYNC_DATA10 = "sync_data10";
-    field public static final String SYNC_DATA2 = "sync_data2";
-    field public static final String SYNC_DATA3 = "sync_data3";
-    field public static final String SYNC_DATA4 = "sync_data4";
-    field public static final String SYNC_DATA5 = "sync_data5";
-    field public static final String SYNC_DATA6 = "sync_data6";
-    field public static final String SYNC_DATA7 = "sync_data7";
-    field public static final String SYNC_DATA8 = "sync_data8";
-    field public static final String SYNC_DATA9 = "sync_data9";
-    field public static final String TITLE = "title";
-    field public static final String UID_2445 = "uid2445";
-  }
-
-  public static final class CalendarContract.EventsEntity implements android.provider.BaseColumns android.provider.CalendarContract.EventsColumns android.provider.CalendarContract.SyncColumns {
-    method public static android.content.EntityIterator newEntityIterator(android.database.Cursor, android.content.ContentResolver);
-    method public static android.content.EntityIterator newEntityIterator(android.database.Cursor, android.content.ContentProviderClient);
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  public static final class CalendarContract.ExtendedProperties implements android.provider.BaseColumns android.provider.CalendarContract.EventsColumns android.provider.CalendarContract.ExtendedPropertiesColumns {
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  protected static interface CalendarContract.ExtendedPropertiesColumns {
-    field public static final String EVENT_ID = "event_id";
-    field public static final String NAME = "name";
-    field public static final String VALUE = "value";
-  }
-
-  public static final class CalendarContract.Instances implements android.provider.BaseColumns android.provider.CalendarContract.CalendarColumns android.provider.CalendarContract.EventsColumns {
-    method public static android.database.Cursor query(android.content.ContentResolver, String[], long, long);
-    method public static android.database.Cursor query(android.content.ContentResolver, String[], long, long, String);
-    field public static final String BEGIN = "begin";
-    field public static final android.net.Uri CONTENT_BY_DAY_URI;
-    field public static final android.net.Uri CONTENT_SEARCH_BY_DAY_URI;
-    field public static final android.net.Uri CONTENT_SEARCH_URI;
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String END = "end";
-    field public static final String END_DAY = "endDay";
-    field public static final String END_MINUTE = "endMinute";
-    field @NonNull public static final android.net.Uri ENTERPRISE_CONTENT_BY_DAY_URI;
-    field @NonNull public static final android.net.Uri ENTERPRISE_CONTENT_SEARCH_BY_DAY_URI;
-    field @NonNull public static final android.net.Uri ENTERPRISE_CONTENT_SEARCH_URI;
-    field @NonNull public static final android.net.Uri ENTERPRISE_CONTENT_URI;
-    field public static final String EVENT_ID = "event_id";
-    field public static final String START_DAY = "startDay";
-    field public static final String START_MINUTE = "startMinute";
-  }
-
-  public static final class CalendarContract.Reminders implements android.provider.BaseColumns android.provider.CalendarContract.EventsColumns android.provider.CalendarContract.RemindersColumns {
-    method public static android.database.Cursor query(android.content.ContentResolver, long, String[]);
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  protected static interface CalendarContract.RemindersColumns {
-    field public static final String EVENT_ID = "event_id";
-    field public static final String METHOD = "method";
-    field public static final int METHOD_ALARM = 4; // 0x4
-    field public static final int METHOD_ALERT = 1; // 0x1
-    field public static final int METHOD_DEFAULT = 0; // 0x0
-    field public static final int METHOD_EMAIL = 2; // 0x2
-    field public static final int METHOD_SMS = 3; // 0x3
-    field public static final String MINUTES = "minutes";
-    field public static final int MINUTES_DEFAULT = -1; // 0xffffffff
-  }
-
-  protected static interface CalendarContract.SyncColumns extends android.provider.CalendarContract.CalendarSyncColumns {
-    field public static final String ACCOUNT_NAME = "account_name";
-    field public static final String ACCOUNT_TYPE = "account_type";
-    field public static final String CAN_PARTIALLY_UPDATE = "canPartiallyUpdate";
-    field public static final String DELETED = "deleted";
-    field public static final String DIRTY = "dirty";
-    field public static final String MUTATORS = "mutators";
-    field public static final String _SYNC_ID = "_sync_id";
-  }
-
-  public static final class CalendarContract.SyncState implements android.provider.SyncStateContract.Columns {
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  public class CallLog {
-    ctor public CallLog();
-    field public static final String AUTHORITY = "call_log";
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  public static class CallLog.Calls implements android.provider.BaseColumns {
-    ctor public CallLog.Calls();
-    method public static String getLastOutgoingCall(android.content.Context);
-    field public static final int ANSWERED_EXTERNALLY_TYPE = 7; // 0x7
-    field public static final int BLOCKED_TYPE = 6; // 0x6
-    field public static final String BLOCK_REASON = "block_reason";
-    field public static final int BLOCK_REASON_BLOCKED_NUMBER = 3; // 0x3
-    field public static final int BLOCK_REASON_CALL_SCREENING_SERVICE = 1; // 0x1
-    field public static final int BLOCK_REASON_DIRECT_TO_VOICEMAIL = 2; // 0x2
-    field public static final int BLOCK_REASON_NOT_BLOCKED = 0; // 0x0
-    field public static final int BLOCK_REASON_NOT_IN_CONTACTS = 7; // 0x7
-    field public static final int BLOCK_REASON_PAY_PHONE = 6; // 0x6
-    field public static final int BLOCK_REASON_RESTRICTED_NUMBER = 5; // 0x5
-    field public static final int BLOCK_REASON_UNKNOWN_NUMBER = 4; // 0x4
-    field public static final String CACHED_FORMATTED_NUMBER = "formatted_number";
-    field public static final String CACHED_LOOKUP_URI = "lookup_uri";
-    field public static final String CACHED_MATCHED_NUMBER = "matched_number";
-    field public static final String CACHED_NAME = "name";
-    field public static final String CACHED_NORMALIZED_NUMBER = "normalized_number";
-    field public static final String CACHED_NUMBER_LABEL = "numberlabel";
-    field public static final String CACHED_NUMBER_TYPE = "numbertype";
-    field public static final String CACHED_PHOTO_ID = "photo_id";
-    field public static final String CACHED_PHOTO_URI = "photo_uri";
-    field public static final String CALL_SCREENING_APP_NAME = "call_screening_app_name";
-    field public static final String CALL_SCREENING_COMPONENT_NAME = "call_screening_component_name";
-    field public static final android.net.Uri CONTENT_FILTER_URI;
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/calls";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/calls";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final android.net.Uri CONTENT_URI_WITH_VOICEMAIL;
-    field public static final String COUNTRY_ISO = "countryiso";
-    field public static final String DATA_USAGE = "data_usage";
-    field public static final String DATE = "date";
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-    field public static final String DURATION = "duration";
-    field public static final String EXTRA_CALL_TYPE_FILTER = "android.provider.extra.CALL_TYPE_FILTER";
-    field public static final String FEATURES = "features";
-    field public static final int FEATURES_ASSISTED_DIALING_USED = 16; // 0x10
-    field public static final int FEATURES_HD_CALL = 4; // 0x4
-    field public static final int FEATURES_PULLED_EXTERNALLY = 2; // 0x2
-    field public static final int FEATURES_RTT = 32; // 0x20
-    field public static final int FEATURES_VIDEO = 1; // 0x1
-    field public static final int FEATURES_VOLTE = 64; // 0x40
-    field public static final int FEATURES_WIFI = 8; // 0x8
-    field public static final String GEOCODED_LOCATION = "geocoded_location";
-    field public static final int INCOMING_TYPE = 1; // 0x1
-    field public static final String IS_READ = "is_read";
-    field public static final String LAST_MODIFIED = "last_modified";
-    field public static final String LIMIT_PARAM_KEY = "limit";
-    field public static final int MISSED_TYPE = 3; // 0x3
-    field public static final String NEW = "new";
-    field public static final String NUMBER = "number";
-    field public static final String NUMBER_PRESENTATION = "presentation";
-    field public static final String OFFSET_PARAM_KEY = "offset";
-    field public static final int OUTGOING_TYPE = 2; // 0x2
-    field public static final String PHONE_ACCOUNT_COMPONENT_NAME = "subscription_component_name";
-    field public static final String PHONE_ACCOUNT_ID = "subscription_id";
-    field public static final String POST_DIAL_DIGITS = "post_dial_digits";
-    field public static final int PRESENTATION_ALLOWED = 1; // 0x1
-    field public static final int PRESENTATION_PAYPHONE = 4; // 0x4
-    field public static final int PRESENTATION_RESTRICTED = 2; // 0x2
-    field public static final int PRESENTATION_UNKNOWN = 3; // 0x3
-    field public static final int REJECTED_TYPE = 5; // 0x5
-    field public static final String TRANSCRIPTION = "transcription";
-    field public static final String TYPE = "type";
-    field public static final String VIA_NUMBER = "via_number";
-    field public static final int VOICEMAIL_TYPE = 4; // 0x4
-    field public static final String VOICEMAIL_URI = "voicemail_uri";
-  }
-
-  @Deprecated public class Contacts {
-    field @Deprecated public static final String AUTHORITY = "contacts";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final int KIND_EMAIL = 1; // 0x1
-    field @Deprecated public static final int KIND_IM = 3; // 0x3
-    field @Deprecated public static final int KIND_ORGANIZATION = 4; // 0x4
-    field @Deprecated public static final int KIND_PHONE = 5; // 0x5
-    field @Deprecated public static final int KIND_POSTAL = 2; // 0x2
-  }
-
-  @Deprecated public static final class Contacts.ContactMethods implements android.provider.BaseColumns android.provider.Contacts.ContactMethodsColumns android.provider.Contacts.PeopleColumns {
-    method @Deprecated public void addPostalLocation(android.content.Context, long, double, double);
-    method @Deprecated public static Object decodeImProtocol(String);
-    method @Deprecated public static String encodeCustomImProtocol(String);
-    method @Deprecated public static String encodePredefinedImProtocol(int);
-    method @Deprecated public static CharSequence getDisplayLabel(android.content.Context, int, int, CharSequence);
-    field @Deprecated public static final String CONTENT_EMAIL_ITEM_TYPE = "vnd.android.cursor.item/email";
-    field @Deprecated public static final String CONTENT_EMAIL_TYPE = "vnd.android.cursor.dir/email";
-    field @Deprecated public static final android.net.Uri CONTENT_EMAIL_URI;
-    field @Deprecated public static final String CONTENT_IM_ITEM_TYPE = "vnd.android.cursor.item/jabber-im";
-    field @Deprecated public static final String CONTENT_POSTAL_ITEM_TYPE = "vnd.android.cursor.item/postal-address";
-    field @Deprecated public static final String CONTENT_POSTAL_TYPE = "vnd.android.cursor.dir/postal-address";
-    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact-methods";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "name ASC";
-    field @Deprecated public static final String PERSON_ID = "person";
-    field @Deprecated public static final String POSTAL_LOCATION_LATITUDE = "data";
-    field @Deprecated public static final String POSTAL_LOCATION_LONGITUDE = "aux_data";
-    field @Deprecated public static final int PROTOCOL_AIM = 0; // 0x0
-    field @Deprecated public static final int PROTOCOL_GOOGLE_TALK = 5; // 0x5
-    field @Deprecated public static final int PROTOCOL_ICQ = 6; // 0x6
-    field @Deprecated public static final int PROTOCOL_JABBER = 7; // 0x7
-    field @Deprecated public static final int PROTOCOL_MSN = 1; // 0x1
-    field @Deprecated public static final int PROTOCOL_QQ = 4; // 0x4
-    field @Deprecated public static final int PROTOCOL_SKYPE = 3; // 0x3
-    field @Deprecated public static final int PROTOCOL_YAHOO = 2; // 0x2
-  }
-
-  @Deprecated public static interface Contacts.ContactMethodsColumns {
-    field @Deprecated public static final String AUX_DATA = "aux_data";
-    field @Deprecated public static final String DATA = "data";
-    field @Deprecated public static final String ISPRIMARY = "isprimary";
-    field @Deprecated public static final String KIND = "kind";
-    field @Deprecated public static final String LABEL = "label";
-    field @Deprecated public static final String TYPE = "type";
-    field @Deprecated public static final int TYPE_CUSTOM = 0; // 0x0
-    field @Deprecated public static final int TYPE_HOME = 1; // 0x1
-    field @Deprecated public static final int TYPE_OTHER = 3; // 0x3
-    field @Deprecated public static final int TYPE_WORK = 2; // 0x2
-  }
-
-  @Deprecated public static final class Contacts.Extensions implements android.provider.BaseColumns android.provider.Contacts.ExtensionsColumns {
-    field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_extensions";
-    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact_extensions";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "person, name ASC";
-    field @Deprecated public static final String PERSON_ID = "person";
-  }
-
-  @Deprecated public static interface Contacts.ExtensionsColumns {
-    field @Deprecated public static final String NAME = "name";
-    field @Deprecated public static final String VALUE = "value";
-  }
-
-  @Deprecated public static final class Contacts.GroupMembership implements android.provider.BaseColumns android.provider.Contacts.GroupsColumns {
-    field @Deprecated public static final String CONTENT_DIRECTORY = "groupmembership";
-    field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contactsgroupmembership";
-    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contactsgroupmembership";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "group_id ASC";
-    field @Deprecated public static final String GROUP_ID = "group_id";
-    field @Deprecated public static final String GROUP_SYNC_ACCOUNT = "group_sync_account";
-    field @Deprecated public static final String GROUP_SYNC_ACCOUNT_TYPE = "group_sync_account_type";
-    field @Deprecated public static final String GROUP_SYNC_ID = "group_sync_id";
-    field @Deprecated public static final String PERSON_ID = "person";
-    field @Deprecated public static final android.net.Uri RAW_CONTENT_URI;
-  }
-
-  @Deprecated public static final class Contacts.Groups implements android.provider.BaseColumns android.provider.Contacts.GroupsColumns {
-    field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contactsgroup";
-    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contactsgroup";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "name ASC";
-    field @Deprecated public static final android.net.Uri DELETED_CONTENT_URI;
-    field @Deprecated public static final String GROUP_ANDROID_STARRED = "Starred in Android";
-    field @Deprecated public static final String GROUP_MY_CONTACTS = "Contacts";
-  }
-
-  @Deprecated public static interface Contacts.GroupsColumns {
-    field @Deprecated public static final String NAME = "name";
-    field @Deprecated public static final String NOTES = "notes";
-    field @Deprecated public static final String SHOULD_SYNC = "should_sync";
-    field @Deprecated public static final String SYSTEM_ID = "system_id";
-  }
-
-  @Deprecated public static final class Contacts.Intents {
-    ctor @Deprecated public Contacts.Intents();
-    field @Deprecated public static final String ATTACH_IMAGE = "com.android.contacts.action.ATTACH_IMAGE";
-    field @Deprecated public static final String EXTRA_CREATE_DESCRIPTION = "com.android.contacts.action.CREATE_DESCRIPTION";
-    field @Deprecated public static final String EXTRA_FORCE_CREATE = "com.android.contacts.action.FORCE_CREATE";
-    field @Deprecated public static final String SEARCH_SUGGESTION_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CLICKED";
-    field @Deprecated public static final String SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED";
-    field @Deprecated public static final String SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED";
-    field @Deprecated public static final String SHOW_OR_CREATE_CONTACT = "com.android.contacts.action.SHOW_OR_CREATE_CONTACT";
-  }
-
-  @Deprecated public static final class Contacts.Intents.Insert {
-    ctor @Deprecated public Contacts.Intents.Insert();
-    field @Deprecated public static final String ACTION = "android.intent.action.INSERT";
-    field @Deprecated public static final String COMPANY = "company";
-    field @Deprecated public static final String EMAIL = "email";
-    field @Deprecated public static final String EMAIL_ISPRIMARY = "email_isprimary";
-    field @Deprecated public static final String EMAIL_TYPE = "email_type";
-    field @Deprecated public static final String FULL_MODE = "full_mode";
-    field @Deprecated public static final String IM_HANDLE = "im_handle";
-    field @Deprecated public static final String IM_ISPRIMARY = "im_isprimary";
-    field @Deprecated public static final String IM_PROTOCOL = "im_protocol";
-    field @Deprecated public static final String JOB_TITLE = "job_title";
-    field @Deprecated public static final String NAME = "name";
-    field @Deprecated public static final String NOTES = "notes";
-    field @Deprecated public static final String PHONE = "phone";
-    field @Deprecated public static final String PHONETIC_NAME = "phonetic_name";
-    field @Deprecated public static final String PHONE_ISPRIMARY = "phone_isprimary";
-    field @Deprecated public static final String PHONE_TYPE = "phone_type";
-    field @Deprecated public static final String POSTAL = "postal";
-    field @Deprecated public static final String POSTAL_ISPRIMARY = "postal_isprimary";
-    field @Deprecated public static final String POSTAL_TYPE = "postal_type";
-    field @Deprecated public static final String SECONDARY_EMAIL = "secondary_email";
-    field @Deprecated public static final String SECONDARY_EMAIL_TYPE = "secondary_email_type";
-    field @Deprecated public static final String SECONDARY_PHONE = "secondary_phone";
-    field @Deprecated public static final String SECONDARY_PHONE_TYPE = "secondary_phone_type";
-    field @Deprecated public static final String TERTIARY_EMAIL = "tertiary_email";
-    field @Deprecated public static final String TERTIARY_EMAIL_TYPE = "tertiary_email_type";
-    field @Deprecated public static final String TERTIARY_PHONE = "tertiary_phone";
-    field @Deprecated public static final String TERTIARY_PHONE_TYPE = "tertiary_phone_type";
-  }
-
-  @Deprecated public static final class Contacts.Intents.UI {
-    ctor @Deprecated public Contacts.Intents.UI();
-    field @Deprecated public static final String FILTER_CONTACTS_ACTION = "com.android.contacts.action.FILTER_CONTACTS";
-    field @Deprecated public static final String FILTER_TEXT_EXTRA_KEY = "com.android.contacts.extra.FILTER_TEXT";
-    field @Deprecated public static final String GROUP_NAME_EXTRA_KEY = "com.android.contacts.extra.GROUP";
-    field @Deprecated public static final String LIST_ALL_CONTACTS_ACTION = "com.android.contacts.action.LIST_ALL_CONTACTS";
-    field @Deprecated public static final String LIST_CONTACTS_WITH_PHONES_ACTION = "com.android.contacts.action.LIST_CONTACTS_WITH_PHONES";
-    field @Deprecated public static final String LIST_DEFAULT = "com.android.contacts.action.LIST_DEFAULT";
-    field @Deprecated public static final String LIST_FREQUENT_ACTION = "com.android.contacts.action.LIST_FREQUENT";
-    field @Deprecated public static final String LIST_GROUP_ACTION = "com.android.contacts.action.LIST_GROUP";
-    field @Deprecated public static final String LIST_STARRED_ACTION = "com.android.contacts.action.LIST_STARRED";
-    field @Deprecated public static final String LIST_STREQUENT_ACTION = "com.android.contacts.action.LIST_STREQUENT";
-    field @Deprecated public static final String TITLE_EXTRA_KEY = "com.android.contacts.extra.TITLE_EXTRA";
-  }
-
-  @Deprecated public static interface Contacts.OrganizationColumns {
-    field @Deprecated public static final String COMPANY = "company";
-    field @Deprecated public static final String ISPRIMARY = "isprimary";
-    field @Deprecated public static final String LABEL = "label";
-    field @Deprecated public static final String PERSON_ID = "person";
-    field @Deprecated public static final String TITLE = "title";
-    field @Deprecated public static final String TYPE = "type";
-    field @Deprecated public static final int TYPE_CUSTOM = 0; // 0x0
-    field @Deprecated public static final int TYPE_OTHER = 2; // 0x2
-    field @Deprecated public static final int TYPE_WORK = 1; // 0x1
-  }
-
-  @Deprecated public static final class Contacts.Organizations implements android.provider.BaseColumns android.provider.Contacts.OrganizationColumns {
-    method @Deprecated public static CharSequence getDisplayLabel(android.content.Context, int, CharSequence);
-    field @Deprecated public static final String CONTENT_DIRECTORY = "organizations";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "company, title, isprimary ASC";
-  }
-
-  @Deprecated public static final class Contacts.People implements android.provider.BaseColumns android.provider.Contacts.PeopleColumns android.provider.Contacts.PhonesColumns android.provider.Contacts.PresenceColumns {
-    method @Deprecated public static android.net.Uri addToGroup(android.content.ContentResolver, long, String);
-    method @Deprecated public static android.net.Uri addToGroup(android.content.ContentResolver, long, long);
-    method @Deprecated public static android.net.Uri addToMyContactsGroup(android.content.ContentResolver, long);
-    method @Deprecated public static android.net.Uri createPersonInMyContactsGroup(android.content.ContentResolver, android.content.ContentValues);
-    method @Deprecated public static android.graphics.Bitmap loadContactPhoto(android.content.Context, android.net.Uri, int, android.graphics.BitmapFactory.Options);
-    method @Deprecated public static void markAsContacted(android.content.ContentResolver, long);
-    method @Deprecated public static java.io.InputStream openContactPhotoInputStream(android.content.ContentResolver, android.net.Uri);
-    method @Deprecated public static android.database.Cursor queryGroups(android.content.ContentResolver, long);
-    method @Deprecated public static void setPhotoData(android.content.ContentResolver, android.net.Uri, byte[]);
-    field @Deprecated public static final android.net.Uri CONTENT_FILTER_URI;
-    field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/person";
-    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/person";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "name ASC";
-    field @Deprecated public static final android.net.Uri DELETED_CONTENT_URI;
-    field @Deprecated public static final String PRIMARY_EMAIL_ID = "primary_email";
-    field @Deprecated public static final String PRIMARY_ORGANIZATION_ID = "primary_organization";
-    field @Deprecated public static final String PRIMARY_PHONE_ID = "primary_phone";
-  }
-
-  @Deprecated public static final class Contacts.People.ContactMethods implements android.provider.BaseColumns android.provider.Contacts.ContactMethodsColumns android.provider.Contacts.PeopleColumns {
-    field @Deprecated public static final String CONTENT_DIRECTORY = "contact_methods";
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "data ASC";
-  }
-
-  @Deprecated public static class Contacts.People.Extensions implements android.provider.BaseColumns android.provider.Contacts.ExtensionsColumns {
-    field @Deprecated public static final String CONTENT_DIRECTORY = "extensions";
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "name ASC";
-    field @Deprecated public static final String PERSON_ID = "person";
-  }
-
-  @Deprecated public static final class Contacts.People.Phones implements android.provider.BaseColumns android.provider.Contacts.PeopleColumns android.provider.Contacts.PhonesColumns {
-    field @Deprecated public static final String CONTENT_DIRECTORY = "phones";
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "number ASC";
-  }
-
-  @Deprecated public static interface Contacts.PeopleColumns {
-    field @Deprecated public static final String CUSTOM_RINGTONE = "custom_ringtone";
-    field @Deprecated public static final String DISPLAY_NAME = "display_name";
-    field @Deprecated public static final String LAST_TIME_CONTACTED = "last_time_contacted";
-    field @Deprecated public static final String NAME = "name";
-    field @Deprecated public static final String NOTES = "notes";
-    field @Deprecated public static final String PHONETIC_NAME = "phonetic_name";
-    field @Deprecated public static final String PHOTO_VERSION = "photo_version";
-    field @Deprecated public static final String SEND_TO_VOICEMAIL = "send_to_voicemail";
-    field @Deprecated public static final String STARRED = "starred";
-    field @Deprecated public static final String TIMES_CONTACTED = "times_contacted";
-  }
-
-  @Deprecated public static final class Contacts.Phones implements android.provider.BaseColumns android.provider.Contacts.PeopleColumns android.provider.Contacts.PhonesColumns {
-    method @Deprecated public static CharSequence getDisplayLabel(android.content.Context, int, CharSequence, CharSequence[]);
-    method @Deprecated public static CharSequence getDisplayLabel(android.content.Context, int, CharSequence);
-    field @Deprecated public static final android.net.Uri CONTENT_FILTER_URL;
-    field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/phone";
-    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/phone";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "name ASC";
-    field @Deprecated public static final String PERSON_ID = "person";
-  }
-
-  @Deprecated public static interface Contacts.PhonesColumns {
-    field @Deprecated public static final String ISPRIMARY = "isprimary";
-    field @Deprecated public static final String LABEL = "label";
-    field @Deprecated public static final String NUMBER = "number";
-    field @Deprecated public static final String NUMBER_KEY = "number_key";
-    field @Deprecated public static final String TYPE = "type";
-    field @Deprecated public static final int TYPE_CUSTOM = 0; // 0x0
-    field @Deprecated public static final int TYPE_FAX_HOME = 5; // 0x5
-    field @Deprecated public static final int TYPE_FAX_WORK = 4; // 0x4
-    field @Deprecated public static final int TYPE_HOME = 1; // 0x1
-    field @Deprecated public static final int TYPE_MOBILE = 2; // 0x2
-    field @Deprecated public static final int TYPE_OTHER = 7; // 0x7
-    field @Deprecated public static final int TYPE_PAGER = 6; // 0x6
-    field @Deprecated public static final int TYPE_WORK = 3; // 0x3
-  }
-
-  @Deprecated public static final class Contacts.Photos implements android.provider.BaseColumns android.provider.Contacts.PhotosColumns {
-    field @Deprecated public static final String CONTENT_DIRECTORY = "photo";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "person ASC";
-  }
-
-  @Deprecated public static interface Contacts.PhotosColumns {
-    field @Deprecated public static final String DATA = "data";
-    field @Deprecated public static final String DOWNLOAD_REQUIRED = "download_required";
-    field @Deprecated public static final String EXISTS_ON_SERVER = "exists_on_server";
-    field @Deprecated public static final String LOCAL_VERSION = "local_version";
-    field @Deprecated public static final String PERSON_ID = "person";
-    field @Deprecated public static final String SYNC_ERROR = "sync_error";
-  }
-
-  @Deprecated public static interface Contacts.PresenceColumns {
-    field @Deprecated public static final int AVAILABLE = 5; // 0x5
-    field @Deprecated public static final int AWAY = 2; // 0x2
-    field @Deprecated public static final int DO_NOT_DISTURB = 4; // 0x4
-    field @Deprecated public static final int IDLE = 3; // 0x3
-    field @Deprecated public static final String IM_ACCOUNT = "im_account";
-    field @Deprecated public static final String IM_HANDLE = "im_handle";
-    field @Deprecated public static final String IM_PROTOCOL = "im_protocol";
-    field @Deprecated public static final int INVISIBLE = 1; // 0x1
-    field @Deprecated public static final int OFFLINE = 0; // 0x0
-    field @Deprecated public static final String PRESENCE_CUSTOM_STATUS = "status";
-    field @Deprecated public static final String PRESENCE_STATUS = "mode";
-    field @Deprecated public static final String PRIORITY = "priority";
-  }
-
-  @Deprecated public static final class Contacts.Settings implements android.provider.BaseColumns android.provider.Contacts.SettingsColumns {
-    method @Deprecated public static String getSetting(android.content.ContentResolver, String, String);
-    method @Deprecated public static void setSetting(android.content.ContentResolver, String, String, String);
-    field @Deprecated public static final String CONTENT_DIRECTORY = "settings";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "key ASC";
-    field @Deprecated public static final String SYNC_EVERYTHING = "syncEverything";
-  }
-
-  @Deprecated public static interface Contacts.SettingsColumns {
-    field @Deprecated public static final String KEY = "key";
-    field @Deprecated public static final String VALUE = "value";
-    field @Deprecated public static final String _SYNC_ACCOUNT = "_sync_account";
-    field @Deprecated public static final String _SYNC_ACCOUNT_TYPE = "_sync_account_type";
-  }
-
-  public final class ContactsContract {
-    ctor public ContactsContract();
-    method public static boolean isProfileId(long);
-    field public static final String AUTHORITY = "com.android.contacts";
-    field public static final android.net.Uri AUTHORITY_URI;
-    field public static final String CALLER_IS_SYNCADAPTER = "caller_is_syncadapter";
-    field public static final String DEFERRED_SNIPPETING = "deferred_snippeting";
-    field public static final String DEFERRED_SNIPPETING_QUERY = "deferred_snippeting_query";
-    field public static final String DIRECTORY_PARAM_KEY = "directory";
-    field public static final String LIMIT_PARAM_KEY = "limit";
-    field public static final String PRIMARY_ACCOUNT_NAME = "name_for_primary_account";
-    field public static final String PRIMARY_ACCOUNT_TYPE = "type_for_primary_account";
-    field public static final String REMOVE_DUPLICATE_ENTRIES = "remove_duplicate_entries";
-    field public static final String STREQUENT_PHONE_ONLY = "strequent_phone_only";
-  }
-
-  public static final class ContactsContract.AggregationExceptions implements android.provider.BaseColumns {
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/aggregation_exception";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/aggregation_exception";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String RAW_CONTACT_ID1 = "raw_contact_id1";
-    field public static final String RAW_CONTACT_ID2 = "raw_contact_id2";
-    field public static final String TYPE = "type";
-    field public static final int TYPE_AUTOMATIC = 0; // 0x0
-    field public static final int TYPE_KEEP_SEPARATE = 2; // 0x2
-    field public static final int TYPE_KEEP_TOGETHER = 1; // 0x1
-  }
-
-  protected static interface ContactsContract.BaseSyncColumns {
-    field public static final String SYNC1 = "sync1";
-    field public static final String SYNC2 = "sync2";
-    field public static final String SYNC3 = "sync3";
-    field public static final String SYNC4 = "sync4";
-  }
-
-  public static final class ContactsContract.CommonDataKinds {
-  }
-
-  public static interface ContactsContract.CommonDataKinds.BaseTypes {
-    field public static final int TYPE_CUSTOM = 0; // 0x0
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Callable implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    ctor public ContactsContract.CommonDataKinds.Callable();
-    field public static final android.net.Uri CONTENT_FILTER_URI;
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final android.net.Uri ENTERPRISE_CONTENT_FILTER_URI;
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-  }
-
-  protected static interface ContactsContract.CommonDataKinds.CommonColumns extends android.provider.ContactsContract.CommonDataKinds.BaseTypes {
-    field public static final String DATA = "data1";
-    field public static final String LABEL = "data3";
-    field public static final String TYPE = "data2";
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Contactables implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    ctor public ContactsContract.CommonDataKinds.Contactables();
-    field public static final android.net.Uri CONTENT_FILTER_URI;
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String VISIBLE_CONTACTS_ONLY = "visible_contacts_only";
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Email implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
-    method public static int getTypeLabelResource(int);
-    field public static final String ADDRESS = "data1";
-    field public static final android.net.Uri CONTENT_FILTER_URI;
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/email_v2";
-    field public static final android.net.Uri CONTENT_LOOKUP_URI;
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/email_v2";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DISPLAY_NAME = "data4";
-    field public static final android.net.Uri ENTERPRISE_CONTENT_FILTER_URI;
-    field public static final android.net.Uri ENTERPRISE_CONTENT_LOOKUP_URI;
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final int TYPE_HOME = 1; // 0x1
-    field public static final int TYPE_MOBILE = 4; // 0x4
-    field public static final int TYPE_OTHER = 3; // 0x3
-    field public static final int TYPE_WORK = 2; // 0x2
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Event implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
-    method public static int getTypeResource(Integer);
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_event";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String START_DATE = "data1";
-    field public static final int TYPE_ANNIVERSARY = 1; // 0x1
-    field public static final int TYPE_BIRTHDAY = 3; // 0x3
-    field public static final int TYPE_OTHER = 2; // 0x2
-  }
-
-  public static final class ContactsContract.CommonDataKinds.GroupMembership implements android.provider.ContactsContract.DataColumnsWithJoins {
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/group_membership";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String GROUP_ROW_ID = "data1";
-    field public static final String GROUP_SOURCE_ID = "group_sourceid";
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Identity implements android.provider.ContactsContract.DataColumnsWithJoins {
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/identity";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String IDENTITY = "data1";
-    field public static final String NAMESPACE = "data2";
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Im implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    method public static CharSequence getProtocolLabel(android.content.res.Resources, int, CharSequence);
-    method public static int getProtocolLabelResource(int);
-    method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
-    method public static int getTypeLabelResource(int);
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/im";
-    field public static final String CUSTOM_PROTOCOL = "data6";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String PROTOCOL = "data5";
-    field public static final int PROTOCOL_AIM = 0; // 0x0
-    field public static final int PROTOCOL_CUSTOM = -1; // 0xffffffff
-    field public static final int PROTOCOL_GOOGLE_TALK = 5; // 0x5
-    field public static final int PROTOCOL_ICQ = 6; // 0x6
-    field public static final int PROTOCOL_JABBER = 7; // 0x7
-    field public static final int PROTOCOL_MSN = 1; // 0x1
-    field public static final int PROTOCOL_NETMEETING = 8; // 0x8
-    field public static final int PROTOCOL_QQ = 4; // 0x4
-    field public static final int PROTOCOL_SKYPE = 3; // 0x3
-    field public static final int PROTOCOL_YAHOO = 2; // 0x2
-    field public static final int TYPE_HOME = 1; // 0x1
-    field public static final int TYPE_OTHER = 3; // 0x3
-    field public static final int TYPE_WORK = 2; // 0x2
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Nickname implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/nickname";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String NAME = "data1";
-    field public static final int TYPE_DEFAULT = 1; // 0x1
-    field public static final int TYPE_INITIALS = 5; // 0x5
-    field public static final int TYPE_MAIDEN_NAME = 3; // 0x3
-    field @Deprecated public static final int TYPE_MAINDEN_NAME = 3; // 0x3
-    field public static final int TYPE_OTHER_NAME = 2; // 0x2
-    field public static final int TYPE_SHORT_NAME = 4; // 0x4
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Note implements android.provider.ContactsContract.DataColumnsWithJoins {
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/note";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String NOTE = "data1";
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Organization implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
-    method public static int getTypeLabelResource(int);
-    field public static final String COMPANY = "data1";
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/organization";
-    field public static final String DEPARTMENT = "data5";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String JOB_DESCRIPTION = "data6";
-    field public static final String OFFICE_LOCATION = "data9";
-    field public static final String PHONETIC_NAME = "data8";
-    field public static final String PHONETIC_NAME_STYLE = "data10";
-    field public static final String SYMBOL = "data7";
-    field public static final String TITLE = "data4";
-    field public static final int TYPE_OTHER = 2; // 0x2
-    field public static final int TYPE_WORK = 1; // 0x1
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Phone implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
-    method public static int getTypeLabelResource(int);
-    field public static final android.net.Uri CONTENT_FILTER_URI;
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/phone_v2";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/phone_v2";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final android.net.Uri ENTERPRISE_CONTENT_FILTER_URI;
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String NORMALIZED_NUMBER = "data4";
-    field public static final String NUMBER = "data1";
-    field public static final String SEARCH_DISPLAY_NAME_KEY = "search_display_name";
-    field public static final String SEARCH_PHONE_NUMBER_KEY = "search_phone_number";
-    field public static final int TYPE_ASSISTANT = 19; // 0x13
-    field public static final int TYPE_CALLBACK = 8; // 0x8
-    field public static final int TYPE_CAR = 9; // 0x9
-    field public static final int TYPE_COMPANY_MAIN = 10; // 0xa
-    field public static final int TYPE_FAX_HOME = 5; // 0x5
-    field public static final int TYPE_FAX_WORK = 4; // 0x4
-    field public static final int TYPE_HOME = 1; // 0x1
-    field public static final int TYPE_ISDN = 11; // 0xb
-    field public static final int TYPE_MAIN = 12; // 0xc
-    field public static final int TYPE_MMS = 20; // 0x14
-    field public static final int TYPE_MOBILE = 2; // 0x2
-    field public static final int TYPE_OTHER = 7; // 0x7
-    field public static final int TYPE_OTHER_FAX = 13; // 0xd
-    field public static final int TYPE_PAGER = 6; // 0x6
-    field public static final int TYPE_RADIO = 14; // 0xe
-    field public static final int TYPE_TELEX = 15; // 0xf
-    field public static final int TYPE_TTY_TDD = 16; // 0x10
-    field public static final int TYPE_WORK = 3; // 0x3
-    field public static final int TYPE_WORK_MOBILE = 17; // 0x11
-    field public static final int TYPE_WORK_PAGER = 18; // 0x12
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Photo implements android.provider.ContactsContract.DataColumnsWithJoins {
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/photo";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String PHOTO = "data15";
-    field public static final String PHOTO_FILE_ID = "data14";
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Relation implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
-    method public static int getTypeLabelResource(int);
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/relation";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String NAME = "data1";
-    field public static final int TYPE_ASSISTANT = 1; // 0x1
-    field public static final int TYPE_BROTHER = 2; // 0x2
-    field public static final int TYPE_CHILD = 3; // 0x3
-    field public static final int TYPE_DOMESTIC_PARTNER = 4; // 0x4
-    field public static final int TYPE_FATHER = 5; // 0x5
-    field public static final int TYPE_FRIEND = 6; // 0x6
-    field public static final int TYPE_MANAGER = 7; // 0x7
-    field public static final int TYPE_MOTHER = 8; // 0x8
-    field public static final int TYPE_PARENT = 9; // 0x9
-    field public static final int TYPE_PARTNER = 10; // 0xa
-    field public static final int TYPE_REFERRED_BY = 11; // 0xb
-    field public static final int TYPE_RELATIVE = 12; // 0xc
-    field public static final int TYPE_SISTER = 13; // 0xd
-    field public static final int TYPE_SPOUSE = 14; // 0xe
-  }
-
-  public static final class ContactsContract.CommonDataKinds.SipAddress implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
-    method public static int getTypeLabelResource(int);
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/sip_address";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String SIP_ADDRESS = "data1";
-    field public static final int TYPE_HOME = 1; // 0x1
-    field public static final int TYPE_OTHER = 3; // 0x3
-    field public static final int TYPE_WORK = 2; // 0x2
-  }
-
-  public static final class ContactsContract.CommonDataKinds.StructuredName implements android.provider.ContactsContract.DataColumnsWithJoins {
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/name";
-    field public static final String DISPLAY_NAME = "data1";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String FAMILY_NAME = "data3";
-    field public static final String FULL_NAME_STYLE = "data10";
-    field public static final String GIVEN_NAME = "data2";
-    field public static final String MIDDLE_NAME = "data5";
-    field public static final String PHONETIC_FAMILY_NAME = "data9";
-    field public static final String PHONETIC_GIVEN_NAME = "data7";
-    field public static final String PHONETIC_MIDDLE_NAME = "data8";
-    field public static final String PHONETIC_NAME_STYLE = "data11";
-    field public static final String PREFIX = "data4";
-    field public static final String SUFFIX = "data6";
-  }
-
-  public static final class ContactsContract.CommonDataKinds.StructuredPostal implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
-    method public static int getTypeLabelResource(int);
-    field public static final String CITY = "data7";
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/postal-address_v2";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/postal-address_v2";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String COUNTRY = "data10";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String FORMATTED_ADDRESS = "data1";
-    field public static final String NEIGHBORHOOD = "data6";
-    field public static final String POBOX = "data5";
-    field public static final String POSTCODE = "data9";
-    field public static final String REGION = "data8";
-    field public static final String STREET = "data4";
-    field public static final int TYPE_HOME = 1; // 0x1
-    field public static final int TYPE_OTHER = 3; // 0x3
-    field public static final int TYPE_WORK = 2; // 0x2
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Website implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/website";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final int TYPE_BLOG = 2; // 0x2
-    field public static final int TYPE_FTP = 6; // 0x6
-    field public static final int TYPE_HOME = 4; // 0x4
-    field public static final int TYPE_HOMEPAGE = 1; // 0x1
-    field public static final int TYPE_OTHER = 7; // 0x7
-    field public static final int TYPE_PROFILE = 3; // 0x3
-    field public static final int TYPE_WORK = 5; // 0x5
-    field public static final String URL = "data1";
-  }
-
-  protected static interface ContactsContract.ContactNameColumns {
-    field public static final String DISPLAY_NAME_ALTERNATIVE = "display_name_alt";
-    field public static final String DISPLAY_NAME_PRIMARY = "display_name";
-    field public static final String DISPLAY_NAME_SOURCE = "display_name_source";
-    field public static final String PHONETIC_NAME = "phonetic_name";
-    field public static final String PHONETIC_NAME_STYLE = "phonetic_name_style";
-    field public static final String SORT_KEY_ALTERNATIVE = "sort_key_alt";
-    field public static final String SORT_KEY_PRIMARY = "sort_key";
-  }
-
-  protected static interface ContactsContract.ContactOptionsColumns {
-    field public static final String CUSTOM_RINGTONE = "custom_ringtone";
-    field @Deprecated public static final String LAST_TIME_CONTACTED = "last_time_contacted";
-    field public static final String PINNED = "pinned";
-    field public static final String SEND_TO_VOICEMAIL = "send_to_voicemail";
-    field public static final String STARRED = "starred";
-    field @Deprecated public static final String TIMES_CONTACTED = "times_contacted";
-  }
-
-  protected static interface ContactsContract.ContactStatusColumns {
-    field public static final String CONTACT_CHAT_CAPABILITY = "contact_chat_capability";
-    field public static final String CONTACT_PRESENCE = "contact_presence";
-    field public static final String CONTACT_STATUS = "contact_status";
-    field public static final String CONTACT_STATUS_ICON = "contact_status_icon";
-    field public static final String CONTACT_STATUS_LABEL = "contact_status_label";
-    field public static final String CONTACT_STATUS_RES_PACKAGE = "contact_status_res_package";
-    field public static final String CONTACT_STATUS_TIMESTAMP = "contact_status_ts";
-  }
-
-  public static class ContactsContract.Contacts implements android.provider.BaseColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.ContactsColumns {
-    method public static android.net.Uri getLookupUri(android.content.ContentResolver, android.net.Uri);
-    method public static android.net.Uri getLookupUri(long, String);
-    method public static boolean isEnterpriseContactId(long);
-    method public static android.net.Uri lookupContact(android.content.ContentResolver, android.net.Uri);
-    method @Deprecated public static void markAsContacted(android.content.ContentResolver, long);
-    method public static java.io.InputStream openContactPhotoInputStream(android.content.ContentResolver, android.net.Uri, boolean);
-    method public static java.io.InputStream openContactPhotoInputStream(android.content.ContentResolver, android.net.Uri);
-    field public static final android.net.Uri CONTENT_FILTER_URI;
-    field @Deprecated public static final android.net.Uri CONTENT_FREQUENT_URI;
-    field public static final android.net.Uri CONTENT_GROUP_URI;
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact";
-    field public static final android.net.Uri CONTENT_LOOKUP_URI;
-    field public static final android.net.Uri CONTENT_MULTI_VCARD_URI;
-    field public static final android.net.Uri CONTENT_STREQUENT_FILTER_URI;
-    field public static final android.net.Uri CONTENT_STREQUENT_URI;
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String CONTENT_VCARD_TYPE = "text/x-vcard";
-    field public static final android.net.Uri CONTENT_VCARD_URI;
-    field public static final android.net.Uri ENTERPRISE_CONTENT_FILTER_URI;
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String QUERY_PARAMETER_VCARD_NO_PHOTO = "no_photo";
-  }
-
-  public static final class ContactsContract.Contacts.AggregationSuggestions implements android.provider.BaseColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.ContactsColumns {
-    field public static final String CONTENT_DIRECTORY = "suggestions";
-  }
-
-  public static final class ContactsContract.Contacts.AggregationSuggestions.Builder {
-    ctor public ContactsContract.Contacts.AggregationSuggestions.Builder();
-    method public android.provider.ContactsContract.Contacts.AggregationSuggestions.Builder addNameParameter(String);
-    method public android.net.Uri build();
-    method public android.provider.ContactsContract.Contacts.AggregationSuggestions.Builder setContactId(long);
-    method public android.provider.ContactsContract.Contacts.AggregationSuggestions.Builder setLimit(int);
-  }
-
-  public static final class ContactsContract.Contacts.Data implements android.provider.BaseColumns android.provider.ContactsContract.DataColumns {
-    field public static final String CONTENT_DIRECTORY = "data";
-  }
-
-  public static final class ContactsContract.Contacts.Entity implements android.provider.BaseColumns android.provider.ContactsContract.BaseSyncColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.ContactsColumns android.provider.ContactsContract.DataColumns android.provider.ContactsContract.DataUsageStatColumns android.provider.ContactsContract.RawContactsColumns android.provider.ContactsContract.StatusColumns android.provider.ContactsContract.SyncColumns {
-    field public static final String CONTENT_DIRECTORY = "entities";
-    field public static final String DATA_ID = "data_id";
-    field public static final String RAW_CONTACT_ID = "raw_contact_id";
-  }
-
-  public static final class ContactsContract.Contacts.Photo implements android.provider.BaseColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    field public static final String CONTENT_DIRECTORY = "photo";
-    field public static final String DISPLAY_PHOTO = "display_photo";
-    field public static final String PHOTO = "data15";
-    field public static final String PHOTO_FILE_ID = "data14";
-  }
-
-  protected static interface ContactsContract.ContactsColumns {
-    field public static final String CONTACT_LAST_UPDATED_TIMESTAMP = "contact_last_updated_timestamp";
-    field public static final String DISPLAY_NAME = "display_name";
-    field public static final String HAS_PHONE_NUMBER = "has_phone_number";
-    field public static final String IN_DEFAULT_DIRECTORY = "in_default_directory";
-    field public static final String IN_VISIBLE_GROUP = "in_visible_group";
-    field public static final String IS_USER_PROFILE = "is_user_profile";
-    field public static final String LOOKUP_KEY = "lookup";
-    field public static final String NAME_RAW_CONTACT_ID = "name_raw_contact_id";
-    field public static final String PHOTO_FILE_ID = "photo_file_id";
-    field public static final String PHOTO_ID = "photo_id";
-    field public static final String PHOTO_THUMBNAIL_URI = "photo_thumb_uri";
-    field public static final String PHOTO_URI = "photo_uri";
-  }
-
-  public static final class ContactsContract.Data implements android.provider.ContactsContract.DataColumnsWithJoins {
-    method public static android.net.Uri getContactLookupUri(android.content.ContentResolver, android.net.Uri);
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/data";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String VISIBLE_CONTACTS_ONLY = "visible_contacts_only";
-  }
-
-  protected static interface ContactsContract.DataColumns {
-    field public static final String CARRIER_PRESENCE = "carrier_presence";
-    field public static final int CARRIER_PRESENCE_VT_CAPABLE = 1; // 0x1
-    field public static final String DATA1 = "data1";
-    field public static final String DATA10 = "data10";
-    field public static final String DATA11 = "data11";
-    field public static final String DATA12 = "data12";
-    field public static final String DATA13 = "data13";
-    field public static final String DATA14 = "data14";
-    field public static final String DATA15 = "data15";
-    field public static final String DATA2 = "data2";
-    field public static final String DATA3 = "data3";
-    field public static final String DATA4 = "data4";
-    field public static final String DATA5 = "data5";
-    field public static final String DATA6 = "data6";
-    field public static final String DATA7 = "data7";
-    field public static final String DATA8 = "data8";
-    field public static final String DATA9 = "data9";
-    field public static final String DATA_VERSION = "data_version";
-    field public static final String IS_PRIMARY = "is_primary";
-    field public static final String IS_READ_ONLY = "is_read_only";
-    field public static final String IS_SUPER_PRIMARY = "is_super_primary";
-    field public static final String MIMETYPE = "mimetype";
-    field public static final String PREFERRED_PHONE_ACCOUNT_COMPONENT_NAME = "preferred_phone_account_component_name";
-    field public static final String PREFERRED_PHONE_ACCOUNT_ID = "preferred_phone_account_id";
-    field public static final String RAW_CONTACT_ID = "raw_contact_id";
-    field public static final String RES_PACKAGE = "res_package";
-    field public static final String SYNC1 = "data_sync1";
-    field public static final String SYNC2 = "data_sync2";
-    field public static final String SYNC3 = "data_sync3";
-    field public static final String SYNC4 = "data_sync4";
-  }
-
-  protected static interface ContactsContract.DataColumnsWithJoins extends android.provider.BaseColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.ContactsColumns android.provider.ContactsContract.DataColumns android.provider.ContactsContract.DataUsageStatColumns android.provider.ContactsContract.RawContactsColumns android.provider.ContactsContract.StatusColumns {
-  }
-
-  @Deprecated public static final class ContactsContract.DataUsageFeedback {
-    ctor @Deprecated public ContactsContract.DataUsageFeedback();
-    field @Deprecated public static final android.net.Uri DELETE_USAGE_URI;
-    field @Deprecated public static final android.net.Uri FEEDBACK_URI;
-    field @Deprecated public static final String USAGE_TYPE = "type";
-    field @Deprecated public static final String USAGE_TYPE_CALL = "call";
-    field @Deprecated public static final String USAGE_TYPE_LONG_TEXT = "long_text";
-    field @Deprecated public static final String USAGE_TYPE_SHORT_TEXT = "short_text";
-  }
-
-  protected static interface ContactsContract.DataUsageStatColumns {
-    field @Deprecated public static final String LAST_TIME_USED = "last_time_used";
-    field @Deprecated public static final String TIMES_USED = "times_used";
-  }
-
-  public static final class ContactsContract.DeletedContacts implements android.provider.ContactsContract.DeletedContactsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final long DAYS_KEPT_MILLISECONDS = 2592000000L; // 0x9a7ec800L
-  }
-
-  protected static interface ContactsContract.DeletedContactsColumns {
-    field public static final String CONTACT_DELETED_TIMESTAMP = "contact_deleted_timestamp";
-    field public static final String CONTACT_ID = "contact_id";
-  }
-
-  public static final class ContactsContract.Directory implements android.provider.BaseColumns {
-    method public static boolean isEnterpriseDirectoryId(long);
-    method public static boolean isRemoteDirectoryId(long);
-    method public static void notifyDirectoryChange(android.content.ContentResolver);
-    field public static final String ACCOUNT_NAME = "accountName";
-    field public static final String ACCOUNT_TYPE = "accountType";
-    field public static final String CALLER_PACKAGE_PARAM_KEY = "callerPackage";
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_directory";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact_directories";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final long DEFAULT = 0L; // 0x0L
-    field public static final String DIRECTORY_AUTHORITY = "authority";
-    field public static final String DISPLAY_NAME = "displayName";
-    field public static final android.net.Uri ENTERPRISE_CONTENT_URI;
-    field public static final long ENTERPRISE_DEFAULT = 1000000000L; // 0x3b9aca00L
-    field public static final long ENTERPRISE_LOCAL_INVISIBLE = 1000000001L; // 0x3b9aca01L
-    field public static final String EXPORT_SUPPORT = "exportSupport";
-    field public static final int EXPORT_SUPPORT_ANY_ACCOUNT = 2; // 0x2
-    field public static final int EXPORT_SUPPORT_NONE = 0; // 0x0
-    field public static final int EXPORT_SUPPORT_SAME_ACCOUNT_ONLY = 1; // 0x1
-    field public static final long LOCAL_INVISIBLE = 1L; // 0x1L
-    field public static final String PACKAGE_NAME = "packageName";
-    field public static final String PHOTO_SUPPORT = "photoSupport";
-    field public static final int PHOTO_SUPPORT_FULL = 3; // 0x3
-    field public static final int PHOTO_SUPPORT_FULL_SIZE_ONLY = 2; // 0x2
-    field public static final int PHOTO_SUPPORT_NONE = 0; // 0x0
-    field public static final int PHOTO_SUPPORT_THUMBNAIL_ONLY = 1; // 0x1
-    field public static final String SHORTCUT_SUPPORT = "shortcutSupport";
-    field public static final int SHORTCUT_SUPPORT_DATA_ITEMS_ONLY = 1; // 0x1
-    field public static final int SHORTCUT_SUPPORT_FULL = 2; // 0x2
-    field public static final int SHORTCUT_SUPPORT_NONE = 0; // 0x0
-    field public static final String TYPE_RESOURCE_ID = "typeResourceId";
-  }
-
-  public static interface ContactsContract.DisplayNameSources {
-    field public static final int EMAIL = 10; // 0xa
-    field public static final int NICKNAME = 35; // 0x23
-    field public static final int ORGANIZATION = 30; // 0x1e
-    field public static final int PHONE = 20; // 0x14
-    field public static final int STRUCTURED_NAME = 40; // 0x28
-    field public static final int STRUCTURED_PHONETIC_NAME = 37; // 0x25
-    field public static final int UNDEFINED = 0; // 0x0
-  }
-
-  public static final class ContactsContract.DisplayPhoto {
-    field public static final android.net.Uri CONTENT_MAX_DIMENSIONS_URI;
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DISPLAY_MAX_DIM = "display_max_dim";
-    field public static final String THUMBNAIL_MAX_DIM = "thumbnail_max_dim";
-  }
-
-  public static interface ContactsContract.FullNameStyle {
-    field public static final int CHINESE = 3; // 0x3
-    field public static final int CJK = 2; // 0x2
-    field public static final int JAPANESE = 4; // 0x4
-    field public static final int KOREAN = 5; // 0x5
-    field public static final int UNDEFINED = 0; // 0x0
-    field public static final int WESTERN = 1; // 0x1
-  }
-
-  public static final class ContactsContract.Groups implements android.provider.BaseColumns android.provider.ContactsContract.GroupsColumns android.provider.ContactsContract.SyncColumns {
-    method public static android.content.EntityIterator newEntityIterator(android.database.Cursor);
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/group";
-    field public static final android.net.Uri CONTENT_SUMMARY_URI;
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/group";
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  protected static interface ContactsContract.GroupsColumns {
-    field public static final String AUTO_ADD = "auto_add";
-    field public static final String DATA_SET = "data_set";
-    field public static final String DELETED = "deleted";
-    field public static final String FAVORITES = "favorites";
-    field public static final String GROUP_IS_READ_ONLY = "group_is_read_only";
-    field public static final String GROUP_VISIBLE = "group_visible";
-    field public static final String NOTES = "notes";
-    field public static final String RES_PACKAGE = "res_package";
-    field public static final String SHOULD_SYNC = "should_sync";
-    field public static final String SUMMARY_COUNT = "summ_count";
-    field public static final String SUMMARY_WITH_PHONES = "summ_phones";
-    field public static final String SYSTEM_ID = "system_id";
-    field public static final String TITLE = "title";
-    field public static final String TITLE_RES = "title_res";
-  }
-
-  public static final class ContactsContract.Intents {
-    ctor public ContactsContract.Intents();
-    field public static final String ACTION_VOICE_SEND_MESSAGE_TO_CONTACTS = "android.provider.action.VOICE_SEND_MESSAGE_TO_CONTACTS";
-    field public static final String ATTACH_IMAGE = "com.android.contacts.action.ATTACH_IMAGE";
-    field public static final String CONTACTS_DATABASE_CREATED = "android.provider.Contacts.DATABASE_CREATED";
-    field public static final String EXTRA_CREATE_DESCRIPTION = "com.android.contacts.action.CREATE_DESCRIPTION";
-    field public static final String EXTRA_FORCE_CREATE = "com.android.contacts.action.FORCE_CREATE";
-    field public static final String EXTRA_RECIPIENT_CONTACT_CHAT_ID = "android.provider.extra.RECIPIENT_CONTACT_CHAT_ID";
-    field public static final String EXTRA_RECIPIENT_CONTACT_NAME = "android.provider.extra.RECIPIENT_CONTACT_NAME";
-    field public static final String EXTRA_RECIPIENT_CONTACT_URI = "android.provider.extra.RECIPIENT_CONTACT_URI";
-    field public static final String INVITE_CONTACT = "com.android.contacts.action.INVITE_CONTACT";
-    field public static final String METADATA_ACCOUNT_TYPE = "android.provider.account_type";
-    field public static final String METADATA_MIMETYPE = "android.provider.mimetype";
-    field public static final String SEARCH_SUGGESTION_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CLICKED";
-    field public static final String SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED";
-    field public static final String SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED";
-    field public static final String SHOW_OR_CREATE_CONTACT = "com.android.contacts.action.SHOW_OR_CREATE_CONTACT";
-  }
-
-  public static final class ContactsContract.Intents.Insert {
-    ctor public ContactsContract.Intents.Insert();
-    field public static final String ACTION = "android.intent.action.INSERT";
-    field public static final String COMPANY = "company";
-    field public static final String DATA = "data";
-    field public static final String EMAIL = "email";
-    field public static final String EMAIL_ISPRIMARY = "email_isprimary";
-    field public static final String EMAIL_TYPE = "email_type";
-    field public static final String EXTRA_ACCOUNT = "android.provider.extra.ACCOUNT";
-    field public static final String EXTRA_DATA_SET = "android.provider.extra.DATA_SET";
-    field public static final String FULL_MODE = "full_mode";
-    field public static final String IM_HANDLE = "im_handle";
-    field public static final String IM_ISPRIMARY = "im_isprimary";
-    field public static final String IM_PROTOCOL = "im_protocol";
-    field public static final String JOB_TITLE = "job_title";
-    field public static final String NAME = "name";
-    field public static final String NOTES = "notes";
-    field public static final String PHONE = "phone";
-    field public static final String PHONETIC_NAME = "phonetic_name";
-    field public static final String PHONE_ISPRIMARY = "phone_isprimary";
-    field public static final String PHONE_TYPE = "phone_type";
-    field public static final String POSTAL = "postal";
-    field public static final String POSTAL_ISPRIMARY = "postal_isprimary";
-    field public static final String POSTAL_TYPE = "postal_type";
-    field public static final String SECONDARY_EMAIL = "secondary_email";
-    field public static final String SECONDARY_EMAIL_TYPE = "secondary_email_type";
-    field public static final String SECONDARY_PHONE = "secondary_phone";
-    field public static final String SECONDARY_PHONE_TYPE = "secondary_phone_type";
-    field public static final String TERTIARY_EMAIL = "tertiary_email";
-    field public static final String TERTIARY_EMAIL_TYPE = "tertiary_email_type";
-    field public static final String TERTIARY_PHONE = "tertiary_phone";
-    field public static final String TERTIARY_PHONE_TYPE = "tertiary_phone_type";
-  }
-
-  public static final class ContactsContract.PhoneLookup implements android.provider.BaseColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactsColumns android.provider.ContactsContract.PhoneLookupColumns {
-    field public static final android.net.Uri CONTENT_FILTER_URI;
-    field public static final android.net.Uri ENTERPRISE_CONTENT_FILTER_URI;
-    field public static final String QUERY_PARAMETER_SIP_ADDRESS = "sip";
-  }
-
-  protected static interface ContactsContract.PhoneLookupColumns {
-    field public static final String CONTACT_ID = "contact_id";
-    field public static final String DATA_ID = "data_id";
-    field public static final String LABEL = "label";
-    field public static final String NORMALIZED_NUMBER = "normalized_number";
-    field public static final String NUMBER = "number";
-    field public static final String TYPE = "type";
-  }
-
-  public static interface ContactsContract.PhoneticNameStyle {
-    field public static final int JAPANESE = 4; // 0x4
-    field public static final int KOREAN = 5; // 0x5
-    field public static final int PINYIN = 3; // 0x3
-    field public static final int UNDEFINED = 0; // 0x0
-  }
-
-  public static final class ContactsContract.PinnedPositions {
-    ctor public ContactsContract.PinnedPositions();
-    method public static void pin(android.content.ContentResolver, long, int);
-    method public static void undemote(android.content.ContentResolver, long);
-    field public static final int DEMOTED = -1; // 0xffffffff
-    field public static final int UNPINNED = 0; // 0x0
-  }
-
-  @Deprecated public static final class ContactsContract.Presence extends android.provider.ContactsContract.StatusUpdates {
-    ctor @Deprecated public ContactsContract.Presence();
-  }
-
-  protected static interface ContactsContract.PresenceColumns {
-    field public static final String CUSTOM_PROTOCOL = "custom_protocol";
-    field public static final String DATA_ID = "presence_data_id";
-    field public static final String IM_ACCOUNT = "im_account";
-    field public static final String IM_HANDLE = "im_handle";
-    field public static final String PROTOCOL = "protocol";
-  }
-
-  public static final class ContactsContract.Profile implements android.provider.BaseColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.ContactsColumns {
-    field public static final android.net.Uri CONTENT_RAW_CONTACTS_URI;
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final android.net.Uri CONTENT_VCARD_URI;
-    field public static final long MIN_ID = 9223372034707292160L; // 0x7fffffff80000000L
-  }
-
-  public static final class ContactsContract.ProfileSyncState implements android.provider.SyncStateContract.Columns {
-    method public static byte[] get(android.content.ContentProviderClient, android.accounts.Account) throws android.os.RemoteException;
-    method public static android.util.Pair<android.net.Uri,byte[]> getWithUri(android.content.ContentProviderClient, android.accounts.Account) throws android.os.RemoteException;
-    method public static android.content.ContentProviderOperation newSetOperation(android.accounts.Account, byte[]);
-    method public static void set(android.content.ContentProviderClient, android.accounts.Account, byte[]) throws android.os.RemoteException;
-    field public static final String CONTENT_DIRECTORY = "syncstate";
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  public static final class ContactsContract.ProviderStatus {
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/provider_status";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DATABASE_CREATION_TIMESTAMP = "database_creation_timestamp";
-    field public static final String STATUS = "status";
-    field public static final int STATUS_BUSY = 1; // 0x1
-    field public static final int STATUS_EMPTY = 2; // 0x2
-    field public static final int STATUS_NORMAL = 0; // 0x0
-  }
-
-  public static final class ContactsContract.QuickContact {
-    ctor public ContactsContract.QuickContact();
-    method public static void showQuickContact(android.content.Context, android.view.View, android.net.Uri, int, String[]);
-    method public static void showQuickContact(android.content.Context, android.graphics.Rect, android.net.Uri, int, String[]);
-    method public static void showQuickContact(android.content.Context, android.view.View, android.net.Uri, String[], String);
-    method public static void showQuickContact(android.content.Context, android.graphics.Rect, android.net.Uri, String[], String);
-    field public static final String ACTION_QUICK_CONTACT = "android.provider.action.QUICK_CONTACT";
-    field public static final String EXTRA_EXCLUDE_MIMES = "android.provider.extra.EXCLUDE_MIMES";
-    field public static final String EXTRA_MODE = "android.provider.extra.MODE";
-    field public static final String EXTRA_PRIORITIZED_MIMETYPE = "android.provider.extra.PRIORITIZED_MIMETYPE";
-    field public static final int MODE_LARGE = 3; // 0x3
-    field public static final int MODE_MEDIUM = 2; // 0x2
-    field public static final int MODE_SMALL = 1; // 0x1
-  }
-
-  public static final class ContactsContract.RawContacts implements android.provider.BaseColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.RawContactsColumns android.provider.ContactsContract.SyncColumns {
-    method public static android.net.Uri getContactLookupUri(android.content.ContentResolver, android.net.Uri);
-    method @Nullable public static String getLocalAccountName(@NonNull android.content.Context);
-    method @Nullable public static String getLocalAccountType(@NonNull android.content.Context);
-    method public static android.content.EntityIterator newEntityIterator(android.database.Cursor);
-    field public static final int AGGREGATION_MODE_DEFAULT = 0; // 0x0
-    field public static final int AGGREGATION_MODE_DISABLED = 3; // 0x3
-    field @Deprecated public static final int AGGREGATION_MODE_IMMEDIATE = 1; // 0x1
-    field public static final int AGGREGATION_MODE_SUSPENDED = 2; // 0x2
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/raw_contact";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/raw_contact";
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  public static final class ContactsContract.RawContacts.Data implements android.provider.BaseColumns android.provider.ContactsContract.DataColumns {
-    field public static final String CONTENT_DIRECTORY = "data";
-  }
-
-  public static final class ContactsContract.RawContacts.DisplayPhoto {
-    field public static final String CONTENT_DIRECTORY = "display_photo";
-  }
-
-  public static final class ContactsContract.RawContacts.Entity implements android.provider.BaseColumns android.provider.ContactsContract.DataColumns {
-    field public static final String CONTENT_DIRECTORY = "entity";
-    field public static final String DATA_ID = "data_id";
-  }
-
-  protected static interface ContactsContract.RawContactsColumns {
-    field public static final String ACCOUNT_TYPE_AND_DATA_SET = "account_type_and_data_set";
-    field public static final String AGGREGATION_MODE = "aggregation_mode";
-    field public static final String BACKUP_ID = "backup_id";
-    field public static final String CONTACT_ID = "contact_id";
-    field public static final String DATA_SET = "data_set";
-    field public static final String DELETED = "deleted";
-    field @Deprecated public static final String METADATA_DIRTY = "metadata_dirty";
-    field public static final String RAW_CONTACT_IS_READ_ONLY = "raw_contact_is_read_only";
-    field public static final String RAW_CONTACT_IS_USER_PROFILE = "raw_contact_is_user_profile";
-  }
-
-  public static final class ContactsContract.RawContactsEntity implements android.provider.BaseColumns android.provider.ContactsContract.DataColumns android.provider.ContactsContract.RawContactsColumns {
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/raw_contact_entity";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DATA_ID = "data_id";
-    field public static final android.net.Uri PROFILE_CONTENT_URI;
-  }
-
-  public static class ContactsContract.SearchSnippets {
-    ctor public ContactsContract.SearchSnippets();
-    field public static final String DEFERRED_SNIPPETING_KEY = "deferred_snippeting";
-    field public static final String SNIPPET = "snippet";
-  }
-
-  public static final class ContactsContract.Settings implements android.provider.ContactsContract.SettingsColumns {
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/setting";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/setting";
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  protected static interface ContactsContract.SettingsColumns {
-    field public static final String ACCOUNT_NAME = "account_name";
-    field public static final String ACCOUNT_TYPE = "account_type";
-    field public static final String ANY_UNSYNCED = "any_unsynced";
-    field public static final String DATA_SET = "data_set";
-    field public static final String SHOULD_SYNC = "should_sync";
-    field public static final String UNGROUPED_COUNT = "summ_count";
-    field public static final String UNGROUPED_VISIBLE = "ungrouped_visible";
-    field public static final String UNGROUPED_WITH_PHONES = "summ_phones";
-  }
-
-  protected static interface ContactsContract.StatusColumns {
-    field public static final int AVAILABLE = 5; // 0x5
-    field public static final int AWAY = 2; // 0x2
-    field public static final int CAPABILITY_HAS_CAMERA = 4; // 0x4
-    field public static final int CAPABILITY_HAS_VIDEO = 2; // 0x2
-    field public static final int CAPABILITY_HAS_VOICE = 1; // 0x1
-    field public static final String CHAT_CAPABILITY = "chat_capability";
-    field public static final int DO_NOT_DISTURB = 4; // 0x4
-    field public static final int IDLE = 3; // 0x3
-    field public static final int INVISIBLE = 1; // 0x1
-    field public static final int OFFLINE = 0; // 0x0
-    field public static final String PRESENCE = "mode";
-    field @Deprecated public static final String PRESENCE_CUSTOM_STATUS = "status";
-    field @Deprecated public static final String PRESENCE_STATUS = "mode";
-    field public static final String STATUS = "status";
-    field public static final String STATUS_ICON = "status_icon";
-    field public static final String STATUS_LABEL = "status_label";
-    field public static final String STATUS_RES_PACKAGE = "status_res_package";
-    field public static final String STATUS_TIMESTAMP = "status_ts";
-  }
-
-  public static class ContactsContract.StatusUpdates implements android.provider.ContactsContract.PresenceColumns android.provider.ContactsContract.StatusColumns {
-    method public static final int getPresenceIconResourceId(int);
-    method public static final int getPresencePrecedence(int);
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/status-update";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/status-update";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final android.net.Uri PROFILE_CONTENT_URI;
-  }
-
-  protected static interface ContactsContract.SyncColumns extends android.provider.ContactsContract.BaseSyncColumns {
-    field public static final String ACCOUNT_NAME = "account_name";
-    field public static final String ACCOUNT_TYPE = "account_type";
-    field public static final String DIRTY = "dirty";
-    field public static final String SOURCE_ID = "sourceid";
-    field public static final String VERSION = "version";
-  }
-
-  public static final class ContactsContract.SyncState implements android.provider.SyncStateContract.Columns {
-    method public static byte[] get(android.content.ContentProviderClient, android.accounts.Account) throws android.os.RemoteException;
-    method public static android.util.Pair<android.net.Uri,byte[]> getWithUri(android.content.ContentProviderClient, android.accounts.Account) throws android.os.RemoteException;
-    method public static android.content.ContentProviderOperation newSetOperation(android.accounts.Account, byte[]);
-    method public static void set(android.content.ContentProviderClient, android.accounts.Account, byte[]) throws android.os.RemoteException;
-    field public static final String CONTENT_DIRECTORY = "syncstate";
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  public final class DocumentsContract {
-    method public static android.net.Uri buildChildDocumentsUri(String, String);
-    method public static android.net.Uri buildChildDocumentsUriUsingTree(android.net.Uri, String);
-    method public static android.net.Uri buildDocumentUri(String, String);
-    method public static android.net.Uri buildDocumentUriUsingTree(android.net.Uri, String);
-    method public static android.net.Uri buildRecentDocumentsUri(String, String);
-    method public static android.net.Uri buildRootUri(String, String);
-    method public static android.net.Uri buildRootsUri(String);
-    method public static android.net.Uri buildSearchDocumentsUri(String, String, String);
-    method public static android.net.Uri buildTreeDocumentUri(String, String);
-    method @Nullable public static android.net.Uri copyDocument(@NonNull android.content.ContentResolver, @NonNull android.net.Uri, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
-    method @Nullable public static android.net.Uri createDocument(@NonNull android.content.ContentResolver, @NonNull android.net.Uri, @NonNull String, @NonNull String) throws java.io.FileNotFoundException;
-    method @Nullable public static android.content.IntentSender createWebLinkIntent(@NonNull android.content.ContentResolver, @NonNull android.net.Uri, @Nullable android.os.Bundle) throws java.io.FileNotFoundException;
-    method public static boolean deleteDocument(@NonNull android.content.ContentResolver, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
-    method public static void ejectRoot(@NonNull android.content.ContentResolver, @NonNull android.net.Uri);
-    method @Nullable public static android.provider.DocumentsContract.Path findDocumentPath(@NonNull android.content.ContentResolver, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
-    method public static String getDocumentId(android.net.Uri);
-    method @Nullable public static android.os.Bundle getDocumentMetadata(@NonNull android.content.ContentResolver, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
-    method @Nullable public static android.graphics.Bitmap getDocumentThumbnail(@NonNull android.content.ContentResolver, @NonNull android.net.Uri, @NonNull android.graphics.Point, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method public static String getRootId(android.net.Uri);
-    method public static String getSearchDocumentsQuery(android.net.Uri);
-    method public static String getTreeDocumentId(android.net.Uri);
-    method public static boolean isChildDocument(@NonNull android.content.ContentResolver, @NonNull android.net.Uri, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
-    method public static boolean isDocumentUri(android.content.Context, @Nullable android.net.Uri);
-    method public static boolean isRootUri(@NonNull android.content.Context, @Nullable android.net.Uri);
-    method public static boolean isRootsUri(@NonNull android.content.Context, @Nullable android.net.Uri);
-    method public static boolean isTreeUri(android.net.Uri);
-    method @Nullable public static android.net.Uri moveDocument(@NonNull android.content.ContentResolver, @NonNull android.net.Uri, @NonNull android.net.Uri, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
-    method public static boolean removeDocument(@NonNull android.content.ContentResolver, @NonNull android.net.Uri, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
-    method @Nullable public static android.net.Uri renameDocument(@NonNull android.content.ContentResolver, @NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
-    field public static final String ACTION_DOCUMENT_SETTINGS = "android.provider.action.DOCUMENT_SETTINGS";
-    field public static final String EXTRA_ERROR = "error";
-    field public static final String EXTRA_EXCLUDE_SELF = "android.provider.extra.EXCLUDE_SELF";
-    field public static final String EXTRA_INFO = "info";
-    field public static final String EXTRA_INITIAL_URI = "android.provider.extra.INITIAL_URI";
-    field public static final String EXTRA_LOADING = "loading";
-    field public static final String EXTRA_ORIENTATION = "android.provider.extra.ORIENTATION";
-    field public static final String EXTRA_PROMPT = "android.provider.extra.PROMPT";
-    field public static final String METADATA_EXIF = "android:documentExif";
-    field public static final String METADATA_TREE_COUNT = "android:metadataTreeCount";
-    field public static final String METADATA_TREE_SIZE = "android:metadataTreeSize";
-    field public static final String METADATA_TYPES = "android:documentMetadataTypes";
-    field public static final String PROVIDER_INTERFACE = "android.content.action.DOCUMENTS_PROVIDER";
-    field public static final String QUERY_ARG_DISPLAY_NAME = "android:query-arg-display-name";
-    field public static final String QUERY_ARG_EXCLUDE_MEDIA = "android:query-arg-exclude-media";
-    field public static final String QUERY_ARG_FILE_SIZE_OVER = "android:query-arg-file-size-over";
-    field public static final String QUERY_ARG_LAST_MODIFIED_AFTER = "android:query-arg-last-modified-after";
-    field public static final String QUERY_ARG_MIME_TYPES = "android:query-arg-mime-types";
-  }
-
-  public static final class DocumentsContract.Document {
-    field public static final String COLUMN_DISPLAY_NAME = "_display_name";
-    field public static final String COLUMN_DOCUMENT_ID = "document_id";
-    field public static final String COLUMN_FLAGS = "flags";
-    field public static final String COLUMN_ICON = "icon";
-    field public static final String COLUMN_LAST_MODIFIED = "last_modified";
-    field public static final String COLUMN_MIME_TYPE = "mime_type";
-    field public static final String COLUMN_SIZE = "_size";
-    field public static final String COLUMN_SUMMARY = "summary";
-    field public static final int FLAG_DIR_BLOCKS_OPEN_DOCUMENT_TREE = 32768; // 0x8000
-    field public static final int FLAG_DIR_PREFERS_GRID = 16; // 0x10
-    field public static final int FLAG_DIR_PREFERS_LAST_MODIFIED = 32; // 0x20
-    field public static final int FLAG_DIR_SUPPORTS_CREATE = 8; // 0x8
-    field public static final int FLAG_PARTIAL = 8192; // 0x2000
-    field public static final int FLAG_SUPPORTS_COPY = 128; // 0x80
-    field public static final int FLAG_SUPPORTS_DELETE = 4; // 0x4
-    field public static final int FLAG_SUPPORTS_METADATA = 16384; // 0x4000
-    field public static final int FLAG_SUPPORTS_MOVE = 256; // 0x100
-    field public static final int FLAG_SUPPORTS_REMOVE = 1024; // 0x400
-    field public static final int FLAG_SUPPORTS_RENAME = 64; // 0x40
-    field public static final int FLAG_SUPPORTS_SETTINGS = 2048; // 0x800
-    field public static final int FLAG_SUPPORTS_THUMBNAIL = 1; // 0x1
-    field public static final int FLAG_SUPPORTS_WRITE = 2; // 0x2
-    field public static final int FLAG_VIRTUAL_DOCUMENT = 512; // 0x200
-    field public static final int FLAG_WEB_LINKABLE = 4096; // 0x1000
-    field public static final String MIME_TYPE_DIR = "vnd.android.document/directory";
-  }
-
-  public static final class DocumentsContract.Path implements android.os.Parcelable {
-    ctor public DocumentsContract.Path(@Nullable String, java.util.List<java.lang.String>);
-    method public int describeContents();
-    method public java.util.List<java.lang.String> getPath();
-    method @Nullable public String getRootId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.provider.DocumentsContract.Path> CREATOR;
-  }
-
-  public static final class DocumentsContract.Root {
-    field public static final String COLUMN_AVAILABLE_BYTES = "available_bytes";
-    field public static final String COLUMN_CAPACITY_BYTES = "capacity_bytes";
-    field public static final String COLUMN_DOCUMENT_ID = "document_id";
-    field public static final String COLUMN_FLAGS = "flags";
-    field public static final String COLUMN_ICON = "icon";
-    field public static final String COLUMN_MIME_TYPES = "mime_types";
-    field public static final String COLUMN_QUERY_ARGS = "query_args";
-    field public static final String COLUMN_ROOT_ID = "root_id";
-    field public static final String COLUMN_SUMMARY = "summary";
-    field public static final String COLUMN_TITLE = "title";
-    field public static final int FLAG_EMPTY = 64; // 0x40
-    field public static final int FLAG_LOCAL_ONLY = 2; // 0x2
-    field public static final int FLAG_SUPPORTS_CREATE = 1; // 0x1
-    field public static final int FLAG_SUPPORTS_EJECT = 32; // 0x20
-    field public static final int FLAG_SUPPORTS_IS_CHILD = 16; // 0x10
-    field public static final int FLAG_SUPPORTS_RECENTS = 4; // 0x4
-    field public static final int FLAG_SUPPORTS_SEARCH = 8; // 0x8
-    field public static final String MIME_TYPE_ITEM = "vnd.android.document/root";
-  }
-
-  public abstract class DocumentsProvider extends android.content.ContentProvider {
-    ctor public DocumentsProvider();
-    method public String copyDocument(String, String) throws java.io.FileNotFoundException;
-    method public String createDocument(String, String, String) throws java.io.FileNotFoundException;
-    method public android.content.IntentSender createWebLinkIntent(String, @Nullable android.os.Bundle) throws java.io.FileNotFoundException;
-    method public final int delete(android.net.Uri, String, String[]);
-    method public void deleteDocument(String) throws java.io.FileNotFoundException;
-    method public void ejectRoot(String);
-    method public android.provider.DocumentsContract.Path findDocumentPath(@Nullable String, String) throws java.io.FileNotFoundException;
-    method @Nullable public android.os.Bundle getDocumentMetadata(@NonNull String) throws java.io.FileNotFoundException;
-    method public String[] getDocumentStreamTypes(String, String);
-    method public String getDocumentType(String) throws java.io.FileNotFoundException;
-    method public final String getType(android.net.Uri);
-    method public final android.net.Uri insert(android.net.Uri, android.content.ContentValues);
-    method public boolean isChildDocument(String, String);
-    method public String moveDocument(String, String, String) throws java.io.FileNotFoundException;
-    method public final android.content.res.AssetFileDescriptor openAssetFile(android.net.Uri, String) throws java.io.FileNotFoundException;
-    method public final android.content.res.AssetFileDescriptor openAssetFile(android.net.Uri, String, android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method public abstract android.os.ParcelFileDescriptor openDocument(String, String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method public android.content.res.AssetFileDescriptor openDocumentThumbnail(String, android.graphics.Point, android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method public final android.os.ParcelFileDescriptor openFile(android.net.Uri, String) throws java.io.FileNotFoundException;
-    method public final android.os.ParcelFileDescriptor openFile(android.net.Uri, String, android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method public final android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, String, android.os.Bundle) throws java.io.FileNotFoundException;
-    method public final android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, String, android.os.Bundle, android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method public android.content.res.AssetFileDescriptor openTypedDocument(String, String, android.os.Bundle, android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method public final android.database.Cursor query(android.net.Uri, String[], String, String[], String);
-    method public final android.database.Cursor query(android.net.Uri, String[], android.os.Bundle, android.os.CancellationSignal);
-    method public abstract android.database.Cursor queryChildDocuments(String, String[], String) throws java.io.FileNotFoundException;
-    method public android.database.Cursor queryChildDocuments(String, @Nullable String[], @Nullable android.os.Bundle) throws java.io.FileNotFoundException;
-    method public abstract android.database.Cursor queryDocument(String, String[]) throws java.io.FileNotFoundException;
-    method public android.database.Cursor queryRecentDocuments(String, String[]) throws java.io.FileNotFoundException;
-    method @Nullable public android.database.Cursor queryRecentDocuments(@NonNull String, @Nullable String[], @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method public abstract android.database.Cursor queryRoots(String[]) throws java.io.FileNotFoundException;
-    method public android.database.Cursor querySearchDocuments(String, String, String[]) throws java.io.FileNotFoundException;
-    method @Nullable public android.database.Cursor querySearchDocuments(@NonNull String, @Nullable String[], @NonNull android.os.Bundle) throws java.io.FileNotFoundException;
-    method public void removeDocument(String, String) throws java.io.FileNotFoundException;
-    method public String renameDocument(String, String) throws java.io.FileNotFoundException;
-    method public final void revokeDocumentPermission(String);
-    method public final int update(android.net.Uri, android.content.ContentValues, String, String[]);
-  }
-
-  public final class FontRequest {
-    ctor public FontRequest(@NonNull String, @NonNull String, @NonNull String);
-    ctor public FontRequest(@NonNull String, @NonNull String, @NonNull String, @NonNull java.util.List<java.util.List<byte[]>>);
-    method public java.util.List<java.util.List<byte[]>> getCertificates();
-    method public String getProviderAuthority();
-    method public String getProviderPackage();
-    method public String getQuery();
-  }
-
-  public class FontsContract {
-    method public static android.graphics.Typeface buildTypeface(@NonNull android.content.Context, @Nullable android.os.CancellationSignal, @NonNull android.provider.FontsContract.FontInfo[]);
-    method @NonNull public static android.provider.FontsContract.FontFamilyResult fetchFonts(@NonNull android.content.Context, @Nullable android.os.CancellationSignal, @NonNull android.provider.FontRequest) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public static void requestFonts(@NonNull android.content.Context, @NonNull android.provider.FontRequest, @NonNull android.os.Handler, @Nullable android.os.CancellationSignal, @NonNull android.provider.FontsContract.FontRequestCallback);
-  }
-
-  public static final class FontsContract.Columns implements android.provider.BaseColumns {
-    field public static final String FILE_ID = "file_id";
-    field public static final String ITALIC = "font_italic";
-    field public static final String RESULT_CODE = "result_code";
-    field public static final int RESULT_CODE_FONT_NOT_FOUND = 1; // 0x1
-    field public static final int RESULT_CODE_FONT_UNAVAILABLE = 2; // 0x2
-    field public static final int RESULT_CODE_MALFORMED_QUERY = 3; // 0x3
-    field public static final int RESULT_CODE_OK = 0; // 0x0
-    field public static final String TTC_INDEX = "font_ttc_index";
-    field public static final String VARIATION_SETTINGS = "font_variation_settings";
-    field public static final String WEIGHT = "font_weight";
-  }
-
-  public static class FontsContract.FontFamilyResult {
-    method @NonNull public android.provider.FontsContract.FontInfo[] getFonts();
-    method public int getStatusCode();
-    field public static final int STATUS_OK = 0; // 0x0
-    field public static final int STATUS_REJECTED = 3; // 0x3
-    field public static final int STATUS_UNEXPECTED_DATA_PROVIDED = 2; // 0x2
-    field public static final int STATUS_WRONG_CERTIFICATES = 1; // 0x1
-  }
-
-  public static class FontsContract.FontInfo {
-    method @Nullable public android.graphics.fonts.FontVariationAxis[] getAxes();
-    method public int getResultCode();
-    method @IntRange(from=0) public int getTtcIndex();
-    method @NonNull public android.net.Uri getUri();
-    method @IntRange(from=1, to=1000) public int getWeight();
-    method public boolean isItalic();
-  }
-
-  public static class FontsContract.FontRequestCallback {
-    ctor public FontsContract.FontRequestCallback();
-    method public void onTypefaceRequestFailed(int);
-    method public void onTypefaceRetrieved(android.graphics.Typeface);
-    field public static final int FAIL_REASON_FONT_LOAD_ERROR = -3; // 0xfffffffd
-    field public static final int FAIL_REASON_FONT_NOT_FOUND = 1; // 0x1
-    field public static final int FAIL_REASON_FONT_UNAVAILABLE = 2; // 0x2
-    field public static final int FAIL_REASON_MALFORMED_QUERY = 3; // 0x3
-    field public static final int FAIL_REASON_PROVIDER_NOT_FOUND = -1; // 0xffffffff
-    field public static final int FAIL_REASON_WRONG_CERTIFICATES = -2; // 0xfffffffe
-  }
-
-  @Deprecated public final class LiveFolders implements android.provider.BaseColumns {
-    field @Deprecated public static final String ACTION_CREATE_LIVE_FOLDER = "android.intent.action.CREATE_LIVE_FOLDER";
-    field @Deprecated public static final String DESCRIPTION = "description";
-    field @Deprecated public static final int DISPLAY_MODE_GRID = 1; // 0x1
-    field @Deprecated public static final int DISPLAY_MODE_LIST = 2; // 0x2
-    field @Deprecated public static final String EXTRA_LIVE_FOLDER_BASE_INTENT = "android.intent.extra.livefolder.BASE_INTENT";
-    field @Deprecated public static final String EXTRA_LIVE_FOLDER_DISPLAY_MODE = "android.intent.extra.livefolder.DISPLAY_MODE";
-    field @Deprecated public static final String EXTRA_LIVE_FOLDER_ICON = "android.intent.extra.livefolder.ICON";
-    field @Deprecated public static final String EXTRA_LIVE_FOLDER_NAME = "android.intent.extra.livefolder.NAME";
-    field @Deprecated public static final String ICON_BITMAP = "icon_bitmap";
-    field @Deprecated public static final String ICON_PACKAGE = "icon_package";
-    field @Deprecated public static final String ICON_RESOURCE = "icon_resource";
-    field @Deprecated public static final String INTENT = "intent";
-    field @Deprecated public static final String NAME = "name";
-  }
-
-  public final class MediaStore {
-    ctor public MediaStore();
-    method @NonNull public static android.app.PendingIntent createDeleteRequest(@NonNull android.content.ContentResolver, @NonNull java.util.Collection<android.net.Uri>);
-    method @NonNull public static android.app.PendingIntent createFavoriteRequest(@NonNull android.content.ContentResolver, @NonNull java.util.Collection<android.net.Uri>, boolean);
-    method @NonNull public static android.app.PendingIntent createTrashRequest(@NonNull android.content.ContentResolver, @NonNull java.util.Collection<android.net.Uri>, boolean);
-    method @NonNull public static android.app.PendingIntent createWriteRequest(@NonNull android.content.ContentResolver, @NonNull java.util.Collection<android.net.Uri>);
-    method @Nullable public static android.net.Uri getDocumentUri(@NonNull android.content.Context, @NonNull android.net.Uri);
-    method @NonNull public static java.util.Set<java.lang.String> getExternalVolumeNames(@NonNull android.content.Context);
-    method public static long getGeneration(@NonNull android.content.Context, @NonNull String);
-    method public static android.net.Uri getMediaScannerUri();
-    method @Nullable public static android.net.Uri getMediaUri(@NonNull android.content.Context, @NonNull android.net.Uri);
-    method @NonNull public static java.util.Set<java.lang.String> getRecentExternalVolumeNames(@NonNull android.content.Context);
-    method public static boolean getRequireOriginal(@NonNull android.net.Uri);
-    method @NonNull public static String getVersion(@NonNull android.content.Context);
-    method @NonNull public static String getVersion(@NonNull android.content.Context, @NonNull String);
-    method @NonNull public static String getVolumeName(@NonNull android.net.Uri);
-    method @Deprecated @NonNull public static android.net.Uri setIncludePending(@NonNull android.net.Uri);
-    method @NonNull public static android.net.Uri setRequireOriginal(@NonNull android.net.Uri);
-    field public static final String ACTION_IMAGE_CAPTURE = "android.media.action.IMAGE_CAPTURE";
-    field public static final String ACTION_IMAGE_CAPTURE_SECURE = "android.media.action.IMAGE_CAPTURE_SECURE";
-    field public static final String ACTION_REVIEW = "android.provider.action.REVIEW";
-    field public static final String ACTION_REVIEW_SECURE = "android.provider.action.REVIEW_SECURE";
-    field public static final String ACTION_VIDEO_CAPTURE = "android.media.action.VIDEO_CAPTURE";
-    field public static final String AUTHORITY = "media";
-    field @NonNull public static final android.net.Uri AUTHORITY_URI;
-    field public static final String EXTRA_BRIGHTNESS = "android.provider.extra.BRIGHTNESS";
-    field public static final String EXTRA_DURATION_LIMIT = "android.intent.extra.durationLimit";
-    field public static final String EXTRA_FINISH_ON_COMPLETION = "android.intent.extra.finishOnCompletion";
-    field public static final String EXTRA_FULL_SCREEN = "android.intent.extra.fullScreen";
-    field public static final String EXTRA_MEDIA_ALBUM = "android.intent.extra.album";
-    field public static final String EXTRA_MEDIA_ARTIST = "android.intent.extra.artist";
-    field public static final String EXTRA_MEDIA_FOCUS = "android.intent.extra.focus";
-    field public static final String EXTRA_MEDIA_GENRE = "android.intent.extra.genre";
-    field public static final String EXTRA_MEDIA_PLAYLIST = "android.intent.extra.playlist";
-    field public static final String EXTRA_MEDIA_RADIO_CHANNEL = "android.intent.extra.radio_channel";
-    field public static final String EXTRA_MEDIA_TITLE = "android.intent.extra.title";
-    field public static final String EXTRA_OUTPUT = "output";
-    field public static final String EXTRA_SCREEN_ORIENTATION = "android.intent.extra.screenOrientation";
-    field public static final String EXTRA_SHOW_ACTION_ICONS = "android.intent.extra.showActionIcons";
-    field public static final String EXTRA_SIZE_LIMIT = "android.intent.extra.sizeLimit";
-    field public static final String EXTRA_VIDEO_QUALITY = "android.intent.extra.videoQuality";
-    field public static final String INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH = "android.media.action.MEDIA_PLAY_FROM_SEARCH";
-    field public static final String INTENT_ACTION_MEDIA_SEARCH = "android.intent.action.MEDIA_SEARCH";
-    field @Deprecated public static final String INTENT_ACTION_MUSIC_PLAYER = "android.intent.action.MUSIC_PLAYER";
-    field public static final String INTENT_ACTION_STILL_IMAGE_CAMERA = "android.media.action.STILL_IMAGE_CAMERA";
-    field public static final String INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE = "android.media.action.STILL_IMAGE_CAMERA_SECURE";
-    field public static final String INTENT_ACTION_TEXT_OPEN_FROM_SEARCH = "android.media.action.TEXT_OPEN_FROM_SEARCH";
-    field public static final String INTENT_ACTION_VIDEO_CAMERA = "android.media.action.VIDEO_CAMERA";
-    field public static final String INTENT_ACTION_VIDEO_PLAY_FROM_SEARCH = "android.media.action.VIDEO_PLAY_FROM_SEARCH";
-    field public static final int MATCH_DEFAULT = 0; // 0x0
-    field public static final int MATCH_EXCLUDE = 2; // 0x2
-    field public static final int MATCH_INCLUDE = 1; // 0x1
-    field public static final int MATCH_ONLY = 3; // 0x3
-    field public static final String MEDIA_IGNORE_FILENAME = ".nomedia";
-    field public static final String MEDIA_SCANNER_VOLUME = "volume";
-    field public static final String META_DATA_REVIEW_GALLERY_PREWARM_SERVICE = "android.media.review_gallery_prewarm_service";
-    field public static final String META_DATA_STILL_IMAGE_CAMERA_PREWARM_SERVICE = "android.media.still_image_camera_preview_service";
-    field public static final String QUERY_ARG_MATCH_FAVORITE = "android:query-arg-match-favorite";
-    field public static final String QUERY_ARG_MATCH_PENDING = "android:query-arg-match-pending";
-    field public static final String QUERY_ARG_MATCH_TRASHED = "android:query-arg-match-trashed";
-    field public static final String QUERY_ARG_RELATED_URI = "android:query-arg-related-uri";
-    field public static final String UNKNOWN_STRING = "<unknown>";
-    field public static final String VOLUME_EXTERNAL = "external";
-    field public static final String VOLUME_EXTERNAL_PRIMARY = "external_primary";
-    field public static final String VOLUME_INTERNAL = "internal";
-  }
-
-  public static final class MediaStore.Audio {
-    ctor public MediaStore.Audio();
-    method @Deprecated @Nullable public static String keyFor(@Nullable String);
-  }
-
-  public static interface MediaStore.Audio.AlbumColumns {
-    field public static final String ALBUM = "album";
-    field @Deprecated public static final String ALBUM_ART = "album_art";
-    field public static final String ALBUM_ID = "album_id";
-    field @Deprecated public static final String ALBUM_KEY = "album_key";
-    field public static final String ARTIST = "artist";
-    field public static final String ARTIST_ID = "artist_id";
-    field @Deprecated public static final String ARTIST_KEY = "artist_key";
-    field public static final String FIRST_YEAR = "minyear";
-    field public static final String LAST_YEAR = "maxyear";
-    field public static final String NUMBER_OF_SONGS = "numsongs";
-    field public static final String NUMBER_OF_SONGS_FOR_ARTIST = "numsongs_by_artist";
-  }
-
-  public static final class MediaStore.Audio.Albums implements android.provider.BaseColumns android.provider.MediaStore.Audio.AlbumColumns {
-    ctor public MediaStore.Audio.Albums();
-    method public static android.net.Uri getContentUri(String);
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/albums";
-    field public static final String DEFAULT_SORT_ORDER = "album_key";
-    field public static final String ENTRY_CONTENT_TYPE = "vnd.android.cursor.item/album";
-    field public static final android.net.Uri EXTERNAL_CONTENT_URI;
-    field public static final android.net.Uri INTERNAL_CONTENT_URI;
-  }
-
-  public static interface MediaStore.Audio.ArtistColumns {
-    field public static final String ARTIST = "artist";
-    field @Deprecated public static final String ARTIST_KEY = "artist_key";
-    field public static final String NUMBER_OF_ALBUMS = "number_of_albums";
-    field public static final String NUMBER_OF_TRACKS = "number_of_tracks";
-  }
-
-  public static final class MediaStore.Audio.Artists implements android.provider.BaseColumns android.provider.MediaStore.Audio.ArtistColumns {
-    ctor public MediaStore.Audio.Artists();
-    method public static android.net.Uri getContentUri(String);
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/artists";
-    field public static final String DEFAULT_SORT_ORDER = "artist_key";
-    field public static final String ENTRY_CONTENT_TYPE = "vnd.android.cursor.item/artist";
-    field public static final android.net.Uri EXTERNAL_CONTENT_URI;
-    field public static final android.net.Uri INTERNAL_CONTENT_URI;
-  }
-
-  public static final class MediaStore.Audio.Artists.Albums implements android.provider.MediaStore.Audio.AlbumColumns {
-    ctor public MediaStore.Audio.Artists.Albums();
-    method public static android.net.Uri getContentUri(String, long);
-  }
-
-  public static interface MediaStore.Audio.AudioColumns extends android.provider.MediaStore.MediaColumns {
-    field public static final String ALBUM_ID = "album_id";
-    field @Deprecated public static final String ALBUM_KEY = "album_key";
-    field public static final String ARTIST_ID = "artist_id";
-    field @Deprecated public static final String ARTIST_KEY = "artist_key";
-    field public static final String BOOKMARK = "bookmark";
-    field public static final String GENRE = "genre";
-    field public static final String GENRE_ID = "genre_id";
-    field @Deprecated public static final String GENRE_KEY = "genre_key";
-    field public static final String IS_ALARM = "is_alarm";
-    field public static final String IS_AUDIOBOOK = "is_audiobook";
-    field public static final String IS_MUSIC = "is_music";
-    field public static final String IS_NOTIFICATION = "is_notification";
-    field public static final String IS_PODCAST = "is_podcast";
-    field public static final String IS_RINGTONE = "is_ringtone";
-    field @Deprecated public static final String TITLE_KEY = "title_key";
-    field public static final String TITLE_RESOURCE_URI = "title_resource_uri";
-    field public static final String TRACK = "track";
-    field public static final String YEAR = "year";
-  }
-
-  public static final class MediaStore.Audio.Genres implements android.provider.BaseColumns android.provider.MediaStore.Audio.GenresColumns {
-    ctor public MediaStore.Audio.Genres();
-    method public static android.net.Uri getContentUri(String);
-    method public static android.net.Uri getContentUriForAudioId(String, int);
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/genre";
-    field public static final String DEFAULT_SORT_ORDER = "name";
-    field public static final String ENTRY_CONTENT_TYPE = "vnd.android.cursor.item/genre";
-    field public static final android.net.Uri EXTERNAL_CONTENT_URI;
-    field public static final android.net.Uri INTERNAL_CONTENT_URI;
-  }
-
-  public static final class MediaStore.Audio.Genres.Members implements android.provider.MediaStore.Audio.AudioColumns {
-    ctor public MediaStore.Audio.Genres.Members();
-    method public static android.net.Uri getContentUri(String, long);
-    field public static final String AUDIO_ID = "audio_id";
-    field public static final String CONTENT_DIRECTORY = "members";
-    field public static final String DEFAULT_SORT_ORDER = "title_key";
-    field public static final String GENRE_ID = "genre_id";
-  }
-
-  public static interface MediaStore.Audio.GenresColumns {
-    field public static final String NAME = "name";
-  }
-
-  public static final class MediaStore.Audio.Media implements android.provider.MediaStore.Audio.AudioColumns {
-    ctor public MediaStore.Audio.Media();
-    method public static android.net.Uri getContentUri(String);
-    method @NonNull public static android.net.Uri getContentUri(@NonNull String, long);
-    method @Deprecated @Nullable public static android.net.Uri getContentUriForPath(@NonNull String);
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/audio";
-    field public static final String DEFAULT_SORT_ORDER = "title_key";
-    field public static final String ENTRY_CONTENT_TYPE = "vnd.android.cursor.item/audio";
-    field public static final android.net.Uri EXTERNAL_CONTENT_URI;
-    field public static final String EXTRA_MAX_BYTES = "android.provider.MediaStore.extra.MAX_BYTES";
-    field public static final android.net.Uri INTERNAL_CONTENT_URI;
-    field public static final String RECORD_SOUND_ACTION = "android.provider.MediaStore.RECORD_SOUND";
-  }
-
-  public static final class MediaStore.Audio.Playlists implements android.provider.BaseColumns android.provider.MediaStore.Audio.PlaylistsColumns {
-    ctor public MediaStore.Audio.Playlists();
-    method public static android.net.Uri getContentUri(String);
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/playlist";
-    field public static final String DEFAULT_SORT_ORDER = "name";
-    field public static final String ENTRY_CONTENT_TYPE = "vnd.android.cursor.item/playlist";
-    field public static final android.net.Uri EXTERNAL_CONTENT_URI;
-    field public static final android.net.Uri INTERNAL_CONTENT_URI;
-  }
-
-  public static final class MediaStore.Audio.Playlists.Members implements android.provider.MediaStore.Audio.AudioColumns {
-    ctor public MediaStore.Audio.Playlists.Members();
-    method public static android.net.Uri getContentUri(String, long);
-    method public static boolean moveItem(android.content.ContentResolver, long, int, int);
-    field public static final String AUDIO_ID = "audio_id";
-    field public static final String CONTENT_DIRECTORY = "members";
-    field public static final String DEFAULT_SORT_ORDER = "play_order";
-    field public static final String PLAYLIST_ID = "playlist_id";
-    field public static final String PLAY_ORDER = "play_order";
-    field public static final String _ID = "_id";
-  }
-
-  public static interface MediaStore.Audio.PlaylistsColumns extends android.provider.MediaStore.MediaColumns {
-    field @Deprecated public static final String DATA = "_data";
-    field public static final String DATE_ADDED = "date_added";
-    field public static final String DATE_MODIFIED = "date_modified";
-    field public static final String NAME = "name";
-  }
-
-  public static final class MediaStore.Audio.Radio {
-    field public static final String ENTRY_CONTENT_TYPE = "vnd.android.cursor.item/radio";
-  }
-
-  public static interface MediaStore.DownloadColumns extends android.provider.MediaStore.MediaColumns {
-    field public static final String DOWNLOAD_URI = "download_uri";
-    field public static final String REFERER_URI = "referer_uri";
-  }
-
-  public static final class MediaStore.Downloads implements android.provider.MediaStore.DownloadColumns {
-    method @NonNull public static android.net.Uri getContentUri(@NonNull String);
-    method @NonNull public static android.net.Uri getContentUri(@NonNull String, long);
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/download";
-    field @NonNull public static final android.net.Uri EXTERNAL_CONTENT_URI;
-    field @NonNull public static final android.net.Uri INTERNAL_CONTENT_URI;
-  }
-
-  public static final class MediaStore.Files {
-    ctor public MediaStore.Files();
-    method public static android.net.Uri getContentUri(String);
-    method public static android.net.Uri getContentUri(String, long);
-  }
-
-  public static interface MediaStore.Files.FileColumns extends android.provider.MediaStore.MediaColumns {
-    field public static final String MEDIA_TYPE = "media_type";
-    field public static final int MEDIA_TYPE_AUDIO = 2; // 0x2
-    field public static final int MEDIA_TYPE_DOCUMENT = 6; // 0x6
-    field public static final int MEDIA_TYPE_IMAGE = 1; // 0x1
-    field public static final int MEDIA_TYPE_NONE = 0; // 0x0
-    field public static final int MEDIA_TYPE_PLAYLIST = 4; // 0x4
-    field public static final int MEDIA_TYPE_SUBTITLE = 5; // 0x5
-    field public static final int MEDIA_TYPE_VIDEO = 3; // 0x3
-    field public static final String MIME_TYPE = "mime_type";
-    field public static final String PARENT = "parent";
-  }
-
-  public static final class MediaStore.Images {
-    ctor public MediaStore.Images();
-  }
-
-  public static interface MediaStore.Images.ImageColumns extends android.provider.MediaStore.MediaColumns {
-    field public static final String DESCRIPTION = "description";
-    field public static final String EXPOSURE_TIME = "exposure_time";
-    field public static final String F_NUMBER = "f_number";
-    field public static final String ISO = "iso";
-    field public static final String IS_PRIVATE = "isprivate";
-    field @Deprecated public static final String LATITUDE = "latitude";
-    field @Deprecated public static final String LONGITUDE = "longitude";
-    field @Deprecated public static final String MINI_THUMB_MAGIC = "mini_thumb_magic";
-    field @Deprecated public static final String PICASA_ID = "picasa_id";
-    field public static final String SCENE_CAPTURE_TYPE = "scene_capture_type";
-  }
-
-  public static final class MediaStore.Images.Media implements android.provider.MediaStore.Images.ImageColumns {
-    ctor public MediaStore.Images.Media();
-    method @Deprecated public static android.graphics.Bitmap getBitmap(android.content.ContentResolver, android.net.Uri) throws java.io.FileNotFoundException, java.io.IOException;
-    method public static android.net.Uri getContentUri(String);
-    method @NonNull public static android.net.Uri getContentUri(@NonNull String, long);
-    method @Deprecated public static String insertImage(android.content.ContentResolver, String, String, String) throws java.io.FileNotFoundException;
-    method @Deprecated public static String insertImage(android.content.ContentResolver, android.graphics.Bitmap, String, String);
-    method @Deprecated public static android.database.Cursor query(android.content.ContentResolver, android.net.Uri, String[]);
-    method @Deprecated public static android.database.Cursor query(android.content.ContentResolver, android.net.Uri, String[], String, String);
-    method @Deprecated public static android.database.Cursor query(android.content.ContentResolver, android.net.Uri, String[], String, String[], String);
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/image";
-    field public static final String DEFAULT_SORT_ORDER = "bucket_display_name";
-    field public static final android.net.Uri EXTERNAL_CONTENT_URI;
-    field public static final android.net.Uri INTERNAL_CONTENT_URI;
-  }
-
-  @Deprecated public static class MediaStore.Images.Thumbnails implements android.provider.BaseColumns {
-    ctor @Deprecated public MediaStore.Images.Thumbnails();
-    method @Deprecated public static void cancelThumbnailRequest(android.content.ContentResolver, long);
-    method @Deprecated public static void cancelThumbnailRequest(android.content.ContentResolver, long, long);
-    method @Deprecated public static android.net.Uri getContentUri(String);
-    method @Deprecated @NonNull public static android.util.Size getKindSize(int);
-    method @Deprecated public static android.graphics.Bitmap getThumbnail(android.content.ContentResolver, long, int, android.graphics.BitmapFactory.Options);
-    method @Deprecated public static android.graphics.Bitmap getThumbnail(android.content.ContentResolver, long, long, int, android.graphics.BitmapFactory.Options);
-    method @Deprecated public static final android.database.Cursor query(android.content.ContentResolver, android.net.Uri, String[]);
-    method @Deprecated public static final android.database.Cursor queryMiniThumbnail(android.content.ContentResolver, long, int, String[]);
-    method @Deprecated public static final android.database.Cursor queryMiniThumbnails(android.content.ContentResolver, android.net.Uri, int, String[]);
-    field @Deprecated public static final String DATA = "_data";
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "image_id ASC";
-    field @Deprecated public static final android.net.Uri EXTERNAL_CONTENT_URI;
-    field @Deprecated public static final int FULL_SCREEN_KIND = 2; // 0x2
-    field @Deprecated public static final String HEIGHT = "height";
-    field @Deprecated public static final String IMAGE_ID = "image_id";
-    field @Deprecated public static final android.net.Uri INTERNAL_CONTENT_URI;
-    field @Deprecated public static final String KIND = "kind";
-    field @Deprecated public static final int MICRO_KIND = 3; // 0x3
-    field @Deprecated public static final int MINI_KIND = 1; // 0x1
-    field @Deprecated public static final String THUMB_DATA = "thumb_data";
-    field @Deprecated public static final String WIDTH = "width";
-  }
-
-  public static interface MediaStore.MediaColumns extends android.provider.BaseColumns {
-    field public static final String ALBUM = "album";
-    field public static final String ALBUM_ARTIST = "album_artist";
-    field public static final String ARTIST = "artist";
-    field public static final String AUTHOR = "author";
-    field public static final String BITRATE = "bitrate";
-    field public static final String BUCKET_DISPLAY_NAME = "bucket_display_name";
-    field public static final String BUCKET_ID = "bucket_id";
-    field public static final String CAPTURE_FRAMERATE = "capture_framerate";
-    field public static final String CD_TRACK_NUMBER = "cd_track_number";
-    field public static final String COMPILATION = "compilation";
-    field public static final String COMPOSER = "composer";
-    field @Deprecated public static final String DATA = "_data";
-    field public static final String DATE_ADDED = "date_added";
-    field public static final String DATE_EXPIRES = "date_expires";
-    field public static final String DATE_MODIFIED = "date_modified";
-    field public static final String DATE_TAKEN = "datetaken";
-    field public static final String DISC_NUMBER = "disc_number";
-    field public static final String DISPLAY_NAME = "_display_name";
-    field public static final String DOCUMENT_ID = "document_id";
-    field public static final String DURATION = "duration";
-    field public static final String GENERATION_ADDED = "generation_added";
-    field public static final String GENERATION_MODIFIED = "generation_modified";
-    field public static final String GENRE = "genre";
-    field public static final String HEIGHT = "height";
-    field public static final String INSTANCE_ID = "instance_id";
-    field public static final String IS_DOWNLOAD = "is_download";
-    field public static final String IS_DRM = "is_drm";
-    field public static final String IS_FAVORITE = "is_favorite";
-    field public static final String IS_PENDING = "is_pending";
-    field public static final String IS_TRASHED = "is_trashed";
-    field public static final String MIME_TYPE = "mime_type";
-    field public static final String NUM_TRACKS = "num_tracks";
-    field public static final String ORIENTATION = "orientation";
-    field public static final String ORIGINAL_DOCUMENT_ID = "original_document_id";
-    field public static final String OWNER_PACKAGE_NAME = "owner_package_name";
-    field public static final String RELATIVE_PATH = "relative_path";
-    field public static final String RESOLUTION = "resolution";
-    field public static final String SIZE = "_size";
-    field public static final String TITLE = "title";
-    field public static final String VOLUME_NAME = "volume_name";
-    field public static final String WIDTH = "width";
-    field public static final String WRITER = "writer";
-    field public static final String XMP = "xmp";
-    field public static final String YEAR = "year";
-  }
-
-  public static final class MediaStore.Video {
-    ctor public MediaStore.Video();
-    method @Deprecated public static android.database.Cursor query(android.content.ContentResolver, android.net.Uri, String[]);
-    field public static final String DEFAULT_SORT_ORDER = "_display_name";
-  }
-
-  public static final class MediaStore.Video.Media implements android.provider.MediaStore.Video.VideoColumns {
-    ctor public MediaStore.Video.Media();
-    method public static android.net.Uri getContentUri(String);
-    method @NonNull public static android.net.Uri getContentUri(@NonNull String, long);
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/video";
-    field public static final String DEFAULT_SORT_ORDER = "title";
-    field public static final android.net.Uri EXTERNAL_CONTENT_URI;
-    field public static final android.net.Uri INTERNAL_CONTENT_URI;
-  }
-
-  @Deprecated public static class MediaStore.Video.Thumbnails implements android.provider.BaseColumns {
-    ctor @Deprecated public MediaStore.Video.Thumbnails();
-    method @Deprecated public static void cancelThumbnailRequest(android.content.ContentResolver, long);
-    method @Deprecated public static void cancelThumbnailRequest(android.content.ContentResolver, long, long);
-    method @Deprecated public static android.net.Uri getContentUri(String);
-    method @Deprecated @NonNull public static android.util.Size getKindSize(int);
-    method @Deprecated public static android.graphics.Bitmap getThumbnail(android.content.ContentResolver, long, int, android.graphics.BitmapFactory.Options);
-    method @Deprecated public static android.graphics.Bitmap getThumbnail(android.content.ContentResolver, long, long, int, android.graphics.BitmapFactory.Options);
-    field @Deprecated public static final String DATA = "_data";
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "video_id ASC";
-    field @Deprecated public static final android.net.Uri EXTERNAL_CONTENT_URI;
-    field @Deprecated public static final int FULL_SCREEN_KIND = 2; // 0x2
-    field @Deprecated public static final String HEIGHT = "height";
-    field @Deprecated public static final android.net.Uri INTERNAL_CONTENT_URI;
-    field @Deprecated public static final String KIND = "kind";
-    field @Deprecated public static final int MICRO_KIND = 3; // 0x3
-    field @Deprecated public static final int MINI_KIND = 1; // 0x1
-    field @Deprecated public static final String VIDEO_ID = "video_id";
-    field @Deprecated public static final String WIDTH = "width";
-  }
-
-  public static interface MediaStore.Video.VideoColumns extends android.provider.MediaStore.MediaColumns {
-    field public static final String BOOKMARK = "bookmark";
-    field public static final String CATEGORY = "category";
-    field public static final String COLOR_RANGE = "color_range";
-    field public static final String COLOR_STANDARD = "color_standard";
-    field public static final String COLOR_TRANSFER = "color_transfer";
-    field public static final String DESCRIPTION = "description";
-    field public static final String IS_PRIVATE = "isprivate";
-    field public static final String LANGUAGE = "language";
-    field @Deprecated public static final String LATITUDE = "latitude";
-    field @Deprecated public static final String LONGITUDE = "longitude";
-    field @Deprecated public static final String MINI_THUMB_MAGIC = "mini_thumb_magic";
-    field public static final String TAGS = "tags";
-  }
-
-  public interface OpenableColumns {
-    field public static final String DISPLAY_NAME = "_display_name";
-    field public static final String SIZE = "_size";
-  }
-
-  public class SearchRecentSuggestions {
-    ctor public SearchRecentSuggestions(android.content.Context, String, int);
-    method public void clearHistory();
-    method public void saveRecentQuery(String, String);
-    method protected void truncateHistory(android.content.ContentResolver, int);
-    field public static final String[] QUERIES_PROJECTION_1LINE;
-    field public static final String[] QUERIES_PROJECTION_2LINE;
-    field public static final int QUERIES_PROJECTION_DATE_INDEX = 1; // 0x1
-    field public static final int QUERIES_PROJECTION_DISPLAY1_INDEX = 3; // 0x3
-    field public static final int QUERIES_PROJECTION_DISPLAY2_INDEX = 4; // 0x4
-    field public static final int QUERIES_PROJECTION_QUERY_INDEX = 2; // 0x2
-  }
-
-  public final class Settings {
-    ctor public Settings();
-    method public static boolean canDrawOverlays(android.content.Context);
-    field public static final String ACTION_ACCESSIBILITY_SETTINGS = "android.settings.ACCESSIBILITY_SETTINGS";
-    field public static final String ACTION_ADD_ACCOUNT = "android.settings.ADD_ACCOUNT_SETTINGS";
-    field public static final String ACTION_AIRPLANE_MODE_SETTINGS = "android.settings.AIRPLANE_MODE_SETTINGS";
-    field public static final String ACTION_APN_SETTINGS = "android.settings.APN_SETTINGS";
-    field public static final String ACTION_APPLICATION_DETAILS_SETTINGS = "android.settings.APPLICATION_DETAILS_SETTINGS";
-    field public static final String ACTION_APPLICATION_DEVELOPMENT_SETTINGS = "android.settings.APPLICATION_DEVELOPMENT_SETTINGS";
-    field public static final String ACTION_APPLICATION_SETTINGS = "android.settings.APPLICATION_SETTINGS";
-    field public static final String ACTION_APP_NOTIFICATION_BUBBLE_SETTINGS = "android.settings.APP_NOTIFICATION_BUBBLE_SETTINGS";
-    field public static final String ACTION_APP_NOTIFICATION_SETTINGS = "android.settings.APP_NOTIFICATION_SETTINGS";
-    field public static final String ACTION_APP_SEARCH_SETTINGS = "android.settings.APP_SEARCH_SETTINGS";
-    field public static final String ACTION_APP_USAGE_SETTINGS = "android.settings.action.APP_USAGE_SETTINGS";
-    field public static final String ACTION_BATTERY_SAVER_SETTINGS = "android.settings.BATTERY_SAVER_SETTINGS";
-    field public static final String ACTION_BIOMETRIC_ENROLL = "android.settings.BIOMETRIC_ENROLL";
-    field public static final String ACTION_BLUETOOTH_SETTINGS = "android.settings.BLUETOOTH_SETTINGS";
-    field public static final String ACTION_CAPTIONING_SETTINGS = "android.settings.CAPTIONING_SETTINGS";
-    field public static final String ACTION_CAST_SETTINGS = "android.settings.CAST_SETTINGS";
-    field public static final String ACTION_CHANNEL_NOTIFICATION_SETTINGS = "android.settings.CHANNEL_NOTIFICATION_SETTINGS";
-    field public static final String ACTION_CONDITION_PROVIDER_SETTINGS = "android.settings.ACTION_CONDITION_PROVIDER_SETTINGS";
-    field public static final String ACTION_DATA_ROAMING_SETTINGS = "android.settings.DATA_ROAMING_SETTINGS";
-    field public static final String ACTION_DATA_USAGE_SETTINGS = "android.settings.DATA_USAGE_SETTINGS";
-    field public static final String ACTION_DATE_SETTINGS = "android.settings.DATE_SETTINGS";
-    field public static final String ACTION_DEVICE_INFO_SETTINGS = "android.settings.DEVICE_INFO_SETTINGS";
-    field public static final String ACTION_DISPLAY_SETTINGS = "android.settings.DISPLAY_SETTINGS";
-    field public static final String ACTION_DREAM_SETTINGS = "android.settings.DREAM_SETTINGS";
-    field @Deprecated public static final String ACTION_FINGERPRINT_ENROLL = "android.settings.FINGERPRINT_ENROLL";
-    field public static final String ACTION_HARD_KEYBOARD_SETTINGS = "android.settings.HARD_KEYBOARD_SETTINGS";
-    field public static final String ACTION_HOME_SETTINGS = "android.settings.HOME_SETTINGS";
-    field public static final String ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS = "android.settings.IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS";
-    field public static final String ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS = "android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS";
-    field public static final String ACTION_INPUT_METHOD_SETTINGS = "android.settings.INPUT_METHOD_SETTINGS";
-    field public static final String ACTION_INPUT_METHOD_SUBTYPE_SETTINGS = "android.settings.INPUT_METHOD_SUBTYPE_SETTINGS";
-    field public static final String ACTION_INTERNAL_STORAGE_SETTINGS = "android.settings.INTERNAL_STORAGE_SETTINGS";
-    field public static final String ACTION_LOCALE_SETTINGS = "android.settings.LOCALE_SETTINGS";
-    field public static final String ACTION_LOCATION_SOURCE_SETTINGS = "android.settings.LOCATION_SOURCE_SETTINGS";
-    field public static final String ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS = "android.settings.MANAGE_ALL_APPLICATIONS_SETTINGS";
-    field public static final String ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION = "android.settings.MANAGE_ALL_FILES_ACCESS_PERMISSION";
-    field public static final String ACTION_MANAGE_APPLICATIONS_SETTINGS = "android.settings.MANAGE_APPLICATIONS_SETTINGS";
-    field public static final String ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION = "android.settings.MANAGE_APP_ALL_FILES_ACCESS_PERMISSION";
-    field public static final String ACTION_MANAGE_DEFAULT_APPS_SETTINGS = "android.settings.MANAGE_DEFAULT_APPS_SETTINGS";
-    field public static final String ACTION_MANAGE_OVERLAY_PERMISSION = "android.settings.action.MANAGE_OVERLAY_PERMISSION";
-    field public static final String ACTION_MANAGE_UNKNOWN_APP_SOURCES = "android.settings.MANAGE_UNKNOWN_APP_SOURCES";
-    field public static final String ACTION_MANAGE_WRITE_SETTINGS = "android.settings.action.MANAGE_WRITE_SETTINGS";
-    field public static final String ACTION_MEMORY_CARD_SETTINGS = "android.settings.MEMORY_CARD_SETTINGS";
-    field public static final String ACTION_NETWORK_OPERATOR_SETTINGS = "android.settings.NETWORK_OPERATOR_SETTINGS";
-    field public static final String ACTION_NFCSHARING_SETTINGS = "android.settings.NFCSHARING_SETTINGS";
-    field public static final String ACTION_NFC_PAYMENT_SETTINGS = "android.settings.NFC_PAYMENT_SETTINGS";
-    field public static final String ACTION_NFC_SETTINGS = "android.settings.NFC_SETTINGS";
-    field public static final String ACTION_NIGHT_DISPLAY_SETTINGS = "android.settings.NIGHT_DISPLAY_SETTINGS";
-    field public static final String ACTION_NOTIFICATION_ASSISTANT_SETTINGS = "android.settings.NOTIFICATION_ASSISTANT_SETTINGS";
-    field public static final String ACTION_NOTIFICATION_LISTENER_DETAIL_SETTINGS = "android.settings.NOTIFICATION_LISTENER_DETAIL_SETTINGS";
-    field public static final String ACTION_NOTIFICATION_LISTENER_SETTINGS = "android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS";
-    field public static final String ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS = "android.settings.NOTIFICATION_POLICY_ACCESS_SETTINGS";
-    field public static final String ACTION_PRINT_SETTINGS = "android.settings.ACTION_PRINT_SETTINGS";
-    field public static final String ACTION_PRIVACY_SETTINGS = "android.settings.PRIVACY_SETTINGS";
-    field public static final String ACTION_PROCESS_WIFI_EASY_CONNECT_URI = "android.settings.PROCESS_WIFI_EASY_CONNECT_URI";
-    field public static final String ACTION_QUICK_ACCESS_WALLET_SETTINGS = "android.settings.QUICK_ACCESS_WALLET_SETTINGS";
-    field public static final String ACTION_QUICK_LAUNCH_SETTINGS = "android.settings.QUICK_LAUNCH_SETTINGS";
-    field public static final String ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS = "android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS";
-    field public static final String ACTION_REQUEST_SET_AUTOFILL_SERVICE = "android.settings.REQUEST_SET_AUTOFILL_SERVICE";
-    field public static final String ACTION_SEARCH_SETTINGS = "android.search.action.SEARCH_SETTINGS";
-    field public static final String ACTION_SECURITY_SETTINGS = "android.settings.SECURITY_SETTINGS";
-    field public static final String ACTION_SETTINGS = "android.settings.SETTINGS";
-    field public static final String ACTION_SHOW_REGULATORY_INFO = "android.settings.SHOW_REGULATORY_INFO";
-    field public static final String ACTION_SHOW_WORK_POLICY_INFO = "android.settings.SHOW_WORK_POLICY_INFO";
-    field public static final String ACTION_SOUND_SETTINGS = "android.settings.SOUND_SETTINGS";
-    field @Deprecated public static final String ACTION_STORAGE_VOLUME_ACCESS_SETTINGS = "android.settings.STORAGE_VOLUME_ACCESS_SETTINGS";
-    field public static final String ACTION_SYNC_SETTINGS = "android.settings.SYNC_SETTINGS";
-    field public static final String ACTION_USAGE_ACCESS_SETTINGS = "android.settings.USAGE_ACCESS_SETTINGS";
-    field public static final String ACTION_USER_DICTIONARY_SETTINGS = "android.settings.USER_DICTIONARY_SETTINGS";
-    field public static final String ACTION_VOICE_CONTROL_AIRPLANE_MODE = "android.settings.VOICE_CONTROL_AIRPLANE_MODE";
-    field public static final String ACTION_VOICE_CONTROL_BATTERY_SAVER_MODE = "android.settings.VOICE_CONTROL_BATTERY_SAVER_MODE";
-    field public static final String ACTION_VOICE_CONTROL_DO_NOT_DISTURB_MODE = "android.settings.VOICE_CONTROL_DO_NOT_DISTURB_MODE";
-    field public static final String ACTION_VOICE_INPUT_SETTINGS = "android.settings.VOICE_INPUT_SETTINGS";
-    field public static final String ACTION_VPN_SETTINGS = "android.settings.VPN_SETTINGS";
-    field public static final String ACTION_VR_LISTENER_SETTINGS = "android.settings.VR_LISTENER_SETTINGS";
-    field public static final String ACTION_WEBVIEW_SETTINGS = "android.settings.WEBVIEW_SETTINGS";
-    field public static final String ACTION_WIFI_ADD_NETWORKS = "android.settings.WIFI_ADD_NETWORKS";
-    field public static final String ACTION_WIFI_IP_SETTINGS = "android.settings.WIFI_IP_SETTINGS";
-    field public static final String ACTION_WIFI_SETTINGS = "android.settings.WIFI_SETTINGS";
-    field public static final String ACTION_WIRELESS_SETTINGS = "android.settings.WIRELESS_SETTINGS";
-    field public static final String ACTION_ZEN_MODE_PRIORITY_SETTINGS = "android.settings.ZEN_MODE_PRIORITY_SETTINGS";
-    field public static final int ADD_WIFI_RESULT_ADD_OR_UPDATE_FAILED = 1; // 0x1
-    field public static final int ADD_WIFI_RESULT_ALREADY_EXISTS = 2; // 0x2
-    field public static final int ADD_WIFI_RESULT_SUCCESS = 0; // 0x0
-    field public static final String AUTHORITY = "settings";
-    field public static final String EXTRA_ACCOUNT_TYPES = "account_types";
-    field public static final String EXTRA_AIRPLANE_MODE_ENABLED = "airplane_mode_enabled";
-    field public static final String EXTRA_APP_PACKAGE = "android.provider.extra.APP_PACKAGE";
-    field public static final String EXTRA_AUTHORITIES = "authorities";
-    field public static final String EXTRA_BATTERY_SAVER_MODE_ENABLED = "android.settings.extra.battery_saver_mode_enabled";
-    field public static final String EXTRA_BIOMETRIC_AUTHENTICATORS_ALLOWED = "android.provider.extra.BIOMETRIC_AUTHENTICATORS_ALLOWED";
-    field public static final String EXTRA_CHANNEL_ID = "android.provider.extra.CHANNEL_ID";
-    field public static final String EXTRA_CONVERSATION_ID = "android.provider.extra.CONVERSATION_ID";
-    field public static final String EXTRA_DO_NOT_DISTURB_MODE_ENABLED = "android.settings.extra.do_not_disturb_mode_enabled";
-    field public static final String EXTRA_DO_NOT_DISTURB_MODE_MINUTES = "android.settings.extra.do_not_disturb_mode_minutes";
-    field public static final String EXTRA_EASY_CONNECT_ATTEMPTED_SSID = "android.provider.extra.EASY_CONNECT_ATTEMPTED_SSID";
-    field public static final String EXTRA_EASY_CONNECT_BAND_LIST = "android.provider.extra.EASY_CONNECT_BAND_LIST";
-    field public static final String EXTRA_EASY_CONNECT_CHANNEL_LIST = "android.provider.extra.EASY_CONNECT_CHANNEL_LIST";
-    field public static final String EXTRA_EASY_CONNECT_ERROR_CODE = "android.provider.extra.EASY_CONNECT_ERROR_CODE";
-    field public static final String EXTRA_INPUT_METHOD_ID = "input_method_id";
-    field public static final String EXTRA_NOTIFICATION_LISTENER_COMPONENT_NAME = "android.provider.extra.NOTIFICATION_LISTENER_COMPONENT_NAME";
-    field public static final String EXTRA_SUB_ID = "android.provider.extra.SUB_ID";
-    field public static final String EXTRA_WIFI_NETWORK_LIST = "android.provider.extra.WIFI_NETWORK_LIST";
-    field public static final String EXTRA_WIFI_NETWORK_RESULT_LIST = "android.provider.extra.WIFI_NETWORK_RESULT_LIST";
-    field public static final String INTENT_CATEGORY_USAGE_ACCESS_CONFIG = "android.intent.category.USAGE_ACCESS_CONFIG";
-    field public static final String METADATA_USAGE_ACCESS_REASON = "android.settings.metadata.USAGE_ACCESS_REASON";
-  }
-
-  public static final class Settings.Global extends android.provider.Settings.NameValueTable {
-    ctor public Settings.Global();
-    method public static float getFloat(android.content.ContentResolver, String, float);
-    method public static float getFloat(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
-    method public static int getInt(android.content.ContentResolver, String, int);
-    method public static int getInt(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
-    method public static long getLong(android.content.ContentResolver, String, long);
-    method public static long getLong(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
-    method public static String getString(android.content.ContentResolver, String);
-    method public static android.net.Uri getUriFor(String);
-    method public static boolean putFloat(android.content.ContentResolver, String, float);
-    method public static boolean putInt(android.content.ContentResolver, String, int);
-    method public static boolean putLong(android.content.ContentResolver, String, long);
-    method public static boolean putString(android.content.ContentResolver, String, String);
-    field public static final String ADB_ENABLED = "adb_enabled";
-    field public static final String AIRPLANE_MODE_ON = "airplane_mode_on";
-    field public static final String AIRPLANE_MODE_RADIOS = "airplane_mode_radios";
-    field public static final String ALWAYS_FINISH_ACTIVITIES = "always_finish_activities";
-    field public static final String ANIMATOR_DURATION_SCALE = "animator_duration_scale";
-    field public static final String APPLY_RAMPING_RINGER = "apply_ramping_ringer";
-    field public static final String AUTO_TIME = "auto_time";
-    field public static final String AUTO_TIME_ZONE = "auto_time_zone";
-    field public static final String BLUETOOTH_ON = "bluetooth_on";
-    field public static final String BOOT_COUNT = "boot_count";
-    field public static final String CONTACT_METADATA_SYNC_ENABLED = "contact_metadata_sync_enabled";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DATA_ROAMING = "data_roaming";
-    field public static final String DEBUG_APP = "debug_app";
-    field public static final String DEVELOPMENT_SETTINGS_ENABLED = "development_settings_enabled";
-    field public static final String DEVICE_NAME = "device_name";
-    field public static final String DEVICE_PROVISIONED = "device_provisioned";
-    field public static final String HTTP_PROXY = "http_proxy";
-    field @Deprecated public static final String INSTALL_NON_MARKET_APPS = "install_non_market_apps";
-    field public static final String MODE_RINGER = "mode_ringer";
-    field public static final String NETWORK_PREFERENCE = "network_preference";
-    field public static final String RADIO_BLUETOOTH = "bluetooth";
-    field public static final String RADIO_CELL = "cell";
-    field public static final String RADIO_NFC = "nfc";
-    field public static final String RADIO_WIFI = "wifi";
-    field @Deprecated public static final String SHOW_PROCESSES = "show_processes";
-    field public static final String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
-    field public static final String TRANSITION_ANIMATION_SCALE = "transition_animation_scale";
-    field public static final String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
-    field public static final String USE_GOOGLE_MAIL = "use_google_mail";
-    field public static final String WAIT_FOR_DEBUGGER = "wait_for_debugger";
-    field public static final String WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN = "wifi_device_owner_configs_lockdown";
-    field public static final String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count";
-    field public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = "wifi_mobile_data_transition_wakelock_timeout_ms";
-    field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = "wifi_networks_available_notification_on";
-    field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = "wifi_networks_available_repeat_delay";
-    field @Deprecated public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept";
-    field public static final String WIFI_ON = "wifi_on";
-    field @Deprecated public static final String WIFI_SLEEP_POLICY = "wifi_sleep_policy";
-    field @Deprecated public static final int WIFI_SLEEP_POLICY_DEFAULT = 0; // 0x0
-    field @Deprecated public static final int WIFI_SLEEP_POLICY_NEVER = 2; // 0x2
-    field @Deprecated public static final int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED = 1; // 0x1
-    field public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on";
-    field public static final String WINDOW_ANIMATION_SCALE = "window_animation_scale";
-  }
-
-  public static class Settings.NameValueTable implements android.provider.BaseColumns {
-    ctor public Settings.NameValueTable();
-    method public static android.net.Uri getUriFor(android.net.Uri, String);
-    method protected static boolean putString(android.content.ContentResolver, android.net.Uri, String, String);
-    field public static final String NAME = "name";
-    field public static final String VALUE = "value";
-  }
-
-  public static final class Settings.Panel {
-    field public static final String ACTION_INTERNET_CONNECTIVITY = "android.settings.panel.action.INTERNET_CONNECTIVITY";
-    field public static final String ACTION_NFC = "android.settings.panel.action.NFC";
-    field public static final String ACTION_VOLUME = "android.settings.panel.action.VOLUME";
-    field public static final String ACTION_WIFI = "android.settings.panel.action.WIFI";
-  }
-
-  public static final class Settings.Secure extends android.provider.Settings.NameValueTable {
-    ctor public Settings.Secure();
-    method public static float getFloat(android.content.ContentResolver, String, float);
-    method public static float getFloat(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
-    method public static int getInt(android.content.ContentResolver, String, int);
-    method public static int getInt(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
-    method public static long getLong(android.content.ContentResolver, String, long);
-    method public static long getLong(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
-    method public static String getString(android.content.ContentResolver, String);
-    method public static android.net.Uri getUriFor(String);
-    method @Deprecated public static boolean isLocationProviderEnabled(android.content.ContentResolver, String);
-    method public static boolean putFloat(android.content.ContentResolver, String, float);
-    method public static boolean putInt(android.content.ContentResolver, String, int);
-    method public static boolean putLong(android.content.ContentResolver, String, long);
-    method public static boolean putString(android.content.ContentResolver, String, String);
-    method @Deprecated public static void setLocationProviderEnabled(android.content.ContentResolver, String, boolean);
-    field public static final String ACCESSIBILITY_DISPLAY_INVERSION_ENABLED = "accessibility_display_inversion_enabled";
-    field public static final String ACCESSIBILITY_ENABLED = "accessibility_enabled";
-    field @Deprecated public static final String ACCESSIBILITY_SPEAK_PASSWORD = "speak_password";
-    field @Deprecated public static final String ADB_ENABLED = "adb_enabled";
-    field public static final String ALLOWED_GEOLOCATION_ORIGINS = "allowed_geolocation_origins";
-    field @Deprecated public static final String ALLOW_MOCK_LOCATION = "mock_location";
-    field public static final String ANDROID_ID = "android_id";
-    field @Deprecated public static final String BACKGROUND_DATA = "background_data";
-    field @Deprecated public static final String BLUETOOTH_ON = "bluetooth_on";
-    field public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String DATA_ROAMING = "data_roaming";
-    field public static final String DEFAULT_INPUT_METHOD = "default_input_method";
-    field @Deprecated public static final String DEVELOPMENT_SETTINGS_ENABLED = "development_settings_enabled";
-    field @Deprecated public static final String DEVICE_PROVISIONED = "device_provisioned";
-    field public static final String ENABLED_ACCESSIBILITY_SERVICES = "enabled_accessibility_services";
-    field public static final String ENABLED_INPUT_METHODS = "enabled_input_methods";
-    field @Deprecated public static final String HTTP_PROXY = "http_proxy";
-    field public static final String INPUT_METHOD_SELECTOR_VISIBILITY = "input_method_selector_visibility";
-    field @Deprecated public static final String INSTALL_NON_MARKET_APPS = "install_non_market_apps";
-    field @Deprecated public static final String LOCATION_MODE = "location_mode";
-    field @Deprecated public static final int LOCATION_MODE_BATTERY_SAVING = 2; // 0x2
-    field @Deprecated public static final int LOCATION_MODE_HIGH_ACCURACY = 3; // 0x3
-    field public static final int LOCATION_MODE_OFF = 0; // 0x0
-    field @Deprecated public static final int LOCATION_MODE_SENSORS_ONLY = 1; // 0x1
-    field @Deprecated public static final String LOCATION_PROVIDERS_ALLOWED = "location_providers_allowed";
-    field @Deprecated public static final String LOCK_PATTERN_ENABLED = "lock_pattern_autolock";
-    field @Deprecated public static final String LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED = "lock_pattern_tactile_feedback_enabled";
-    field @Deprecated public static final String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern";
-    field @Deprecated public static final String LOGGING_ID = "logging_id";
-    field @Deprecated public static final String NETWORK_PREFERENCE = "network_preference";
-    field public static final String PARENTAL_CONTROL_ENABLED = "parental_control_enabled";
-    field public static final String PARENTAL_CONTROL_LAST_UPDATE = "parental_control_last_update";
-    field public static final String PARENTAL_CONTROL_REDIRECT_URL = "parental_control_redirect_url";
-    field public static final String RTT_CALLING_MODE = "rtt_calling_mode";
-    field public static final String SECURE_FRP_MODE = "secure_frp_mode";
-    field public static final String SELECTED_INPUT_METHOD_SUBTYPE = "selected_input_method_subtype";
-    field public static final String SETTINGS_CLASSNAME = "settings_classname";
-    field public static final String SKIP_FIRST_USE_HINTS = "skip_first_use_hints";
-    field public static final String TOUCH_EXPLORATION_ENABLED = "touch_exploration_enabled";
-    field @Deprecated public static final String TTS_DEFAULT_COUNTRY = "tts_default_country";
-    field @Deprecated public static final String TTS_DEFAULT_LANG = "tts_default_lang";
-    field public static final String TTS_DEFAULT_PITCH = "tts_default_pitch";
-    field public static final String TTS_DEFAULT_RATE = "tts_default_rate";
-    field public static final String TTS_DEFAULT_SYNTH = "tts_default_synth";
-    field @Deprecated public static final String TTS_DEFAULT_VARIANT = "tts_default_variant";
-    field public static final String TTS_ENABLED_PLUGINS = "tts_enabled_plugins";
-    field @Deprecated public static final String TTS_USE_DEFAULTS = "tts_use_defaults";
-    field @Deprecated public static final String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
-    field @Deprecated public static final String USE_GOOGLE_MAIL = "use_google_mail";
-    field @Deprecated public static final String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count";
-    field @Deprecated public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = "wifi_mobile_data_transition_wakelock_timeout_ms";
-    field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = "wifi_networks_available_notification_on";
-    field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = "wifi_networks_available_repeat_delay";
-    field @Deprecated public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept";
-    field @Deprecated public static final String WIFI_ON = "wifi_on";
-    field @Deprecated public static final String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE = "wifi_watchdog_acceptable_packet_loss_percentage";
-    field @Deprecated public static final String WIFI_WATCHDOG_AP_COUNT = "wifi_watchdog_ap_count";
-    field @Deprecated public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS = "wifi_watchdog_background_check_delay_ms";
-    field @Deprecated public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED = "wifi_watchdog_background_check_enabled";
-    field @Deprecated public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS = "wifi_watchdog_background_check_timeout_ms";
-    field @Deprecated public static final String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT = "wifi_watchdog_initial_ignored_ping_count";
-    field @Deprecated public static final String WIFI_WATCHDOG_MAX_AP_CHECKS = "wifi_watchdog_max_ap_checks";
-    field @Deprecated public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on";
-    field @Deprecated public static final String WIFI_WATCHDOG_PING_COUNT = "wifi_watchdog_ping_count";
-    field @Deprecated public static final String WIFI_WATCHDOG_PING_DELAY_MS = "wifi_watchdog_ping_delay_ms";
-    field @Deprecated public static final String WIFI_WATCHDOG_PING_TIMEOUT_MS = "wifi_watchdog_ping_timeout_ms";
-    field @Deprecated public static final String WIFI_WATCHDOG_WATCH_LIST = "wifi_watchdog_watch_list";
-  }
-
-  public static class Settings.SettingNotFoundException extends android.util.AndroidException {
-    ctor public Settings.SettingNotFoundException(String);
-  }
-
-  public static final class Settings.System extends android.provider.Settings.NameValueTable {
-    ctor public Settings.System();
-    method public static boolean canWrite(android.content.Context);
-    method public static void getConfiguration(android.content.ContentResolver, android.content.res.Configuration);
-    method public static float getFloat(android.content.ContentResolver, String, float);
-    method public static float getFloat(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
-    method public static int getInt(android.content.ContentResolver, String, int);
-    method public static int getInt(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
-    method public static long getLong(android.content.ContentResolver, String, long);
-    method public static long getLong(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
-    method @Deprecated public static boolean getShowGTalkServiceStatus(android.content.ContentResolver);
-    method public static String getString(android.content.ContentResolver, String);
-    method public static android.net.Uri getUriFor(String);
-    method public static boolean putConfiguration(android.content.ContentResolver, android.content.res.Configuration);
-    method public static boolean putFloat(android.content.ContentResolver, String, float);
-    method public static boolean putInt(android.content.ContentResolver, String, int);
-    method public static boolean putLong(android.content.ContentResolver, String, long);
-    method public static boolean putString(android.content.ContentResolver, String, String);
-    method @Deprecated public static void setShowGTalkServiceStatus(android.content.ContentResolver, boolean);
-    field public static final String ACCELEROMETER_ROTATION = "accelerometer_rotation";
-    field @Deprecated public static final String ADB_ENABLED = "adb_enabled";
-    field @Deprecated public static final String AIRPLANE_MODE_ON = "airplane_mode_on";
-    field @Deprecated public static final String AIRPLANE_MODE_RADIOS = "airplane_mode_radios";
-    field public static final String ALARM_ALERT = "alarm_alert";
-    field @Deprecated public static final String ALWAYS_FINISH_ACTIVITIES = "always_finish_activities";
-    field @Deprecated public static final String ANDROID_ID = "android_id";
-    field @Deprecated public static final String ANIMATOR_DURATION_SCALE = "animator_duration_scale";
-    field @Deprecated public static final String AUTO_TIME = "auto_time";
-    field @Deprecated public static final String AUTO_TIME_ZONE = "auto_time_zone";
-    field public static final String BLUETOOTH_DISCOVERABILITY = "bluetooth_discoverability";
-    field public static final String BLUETOOTH_DISCOVERABILITY_TIMEOUT = "bluetooth_discoverability_timeout";
-    field @Deprecated public static final String BLUETOOTH_ON = "bluetooth_on";
-    field public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String DATA_ROAMING = "data_roaming";
-    field public static final String DATE_FORMAT = "date_format";
-    field @Deprecated public static final String DEBUG_APP = "debug_app";
-    field public static final android.net.Uri DEFAULT_ALARM_ALERT_URI;
-    field public static final android.net.Uri DEFAULT_NOTIFICATION_URI;
-    field public static final android.net.Uri DEFAULT_RINGTONE_URI;
-    field @Deprecated public static final String DEVICE_PROVISIONED = "device_provisioned";
-    field @Deprecated public static final String DIM_SCREEN = "dim_screen";
-    field public static final String DTMF_TONE_TYPE_WHEN_DIALING = "dtmf_tone_type";
-    field public static final String DTMF_TONE_WHEN_DIALING = "dtmf_tone";
-    field public static final String END_BUTTON_BEHAVIOR = "end_button_behavior";
-    field public static final String FONT_SCALE = "font_scale";
-    field public static final String HAPTIC_FEEDBACK_ENABLED = "haptic_feedback_enabled";
-    field @Deprecated public static final String HTTP_PROXY = "http_proxy";
-    field @Deprecated public static final String INSTALL_NON_MARKET_APPS = "install_non_market_apps";
-    field @Deprecated public static final String LOCATION_PROVIDERS_ALLOWED = "location_providers_allowed";
-    field @Deprecated public static final String LOCK_PATTERN_ENABLED = "lock_pattern_autolock";
-    field @Deprecated public static final String LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED = "lock_pattern_tactile_feedback_enabled";
-    field @Deprecated public static final String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern";
-    field @Deprecated public static final String LOGGING_ID = "logging_id";
-    field @Deprecated public static final String MODE_RINGER = "mode_ringer";
-    field public static final String MODE_RINGER_STREAMS_AFFECTED = "mode_ringer_streams_affected";
-    field public static final String MUTE_STREAMS_AFFECTED = "mute_streams_affected";
-    field @Deprecated public static final String NETWORK_PREFERENCE = "network_preference";
-    field @Deprecated public static final String NEXT_ALARM_FORMATTED = "next_alarm_formatted";
-    field public static final String NOTIFICATION_SOUND = "notification_sound";
-    field @Deprecated public static final String PARENTAL_CONTROL_ENABLED = "parental_control_enabled";
-    field @Deprecated public static final String PARENTAL_CONTROL_LAST_UPDATE = "parental_control_last_update";
-    field @Deprecated public static final String PARENTAL_CONTROL_REDIRECT_URL = "parental_control_redirect_url";
-    field @Deprecated public static final String RADIO_BLUETOOTH = "bluetooth";
-    field @Deprecated public static final String RADIO_CELL = "cell";
-    field @Deprecated public static final String RADIO_NFC = "nfc";
-    field @Deprecated public static final String RADIO_WIFI = "wifi";
-    field public static final String RINGTONE = "ringtone";
-    field public static final String SCREEN_BRIGHTNESS = "screen_brightness";
-    field public static final String SCREEN_BRIGHTNESS_MODE = "screen_brightness_mode";
-    field public static final int SCREEN_BRIGHTNESS_MODE_AUTOMATIC = 1; // 0x1
-    field public static final int SCREEN_BRIGHTNESS_MODE_MANUAL = 0; // 0x0
-    field public static final String SCREEN_OFF_TIMEOUT = "screen_off_timeout";
-    field @Deprecated public static final String SETTINGS_CLASSNAME = "settings_classname";
-    field public static final String SETUP_WIZARD_HAS_RUN = "setup_wizard_has_run";
-    field public static final String SHOW_GTALK_SERVICE_STATUS = "SHOW_GTALK_SERVICE_STATUS";
-    field @Deprecated public static final String SHOW_PROCESSES = "show_processes";
-    field @Deprecated public static final String SHOW_WEB_SUGGESTIONS = "show_web_suggestions";
-    field public static final String SOUND_EFFECTS_ENABLED = "sound_effects_enabled";
-    field @Deprecated public static final String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
-    field public static final String TEXT_AUTO_CAPS = "auto_caps";
-    field public static final String TEXT_AUTO_PUNCTUATE = "auto_punctuate";
-    field public static final String TEXT_AUTO_REPLACE = "auto_replace";
-    field public static final String TEXT_SHOW_PASSWORD = "show_password";
-    field public static final String TIME_12_24 = "time_12_24";
-    field @Deprecated public static final String TRANSITION_ANIMATION_SCALE = "transition_animation_scale";
-    field @Deprecated public static final String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
-    field public static final String USER_ROTATION = "user_rotation";
-    field @Deprecated public static final String USE_GOOGLE_MAIL = "use_google_mail";
-    field public static final String VIBRATE_ON = "vibrate_on";
-    field public static final String VIBRATE_WHEN_RINGING = "vibrate_when_ringing";
-    field @Deprecated public static final String WAIT_FOR_DEBUGGER = "wait_for_debugger";
-    field @Deprecated public static final String WALLPAPER_ACTIVITY = "wallpaper_activity";
-    field @Deprecated public static final String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count";
-    field @Deprecated public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = "wifi_mobile_data_transition_wakelock_timeout_ms";
-    field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = "wifi_networks_available_notification_on";
-    field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = "wifi_networks_available_repeat_delay";
-    field @Deprecated public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept";
-    field @Deprecated public static final String WIFI_ON = "wifi_on";
-    field @Deprecated public static final String WIFI_SLEEP_POLICY = "wifi_sleep_policy";
-    field @Deprecated public static final int WIFI_SLEEP_POLICY_DEFAULT = 0; // 0x0
-    field @Deprecated public static final int WIFI_SLEEP_POLICY_NEVER = 2; // 0x2
-    field @Deprecated public static final int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED = 1; // 0x1
-    field @Deprecated public static final String WIFI_STATIC_DNS1 = "wifi_static_dns1";
-    field @Deprecated public static final String WIFI_STATIC_DNS2 = "wifi_static_dns2";
-    field @Deprecated public static final String WIFI_STATIC_GATEWAY = "wifi_static_gateway";
-    field @Deprecated public static final String WIFI_STATIC_IP = "wifi_static_ip";
-    field @Deprecated public static final String WIFI_STATIC_NETMASK = "wifi_static_netmask";
-    field @Deprecated public static final String WIFI_USE_STATIC_IP = "wifi_use_static_ip";
-    field @Deprecated public static final String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE = "wifi_watchdog_acceptable_packet_loss_percentage";
-    field @Deprecated public static final String WIFI_WATCHDOG_AP_COUNT = "wifi_watchdog_ap_count";
-    field @Deprecated public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS = "wifi_watchdog_background_check_delay_ms";
-    field @Deprecated public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED = "wifi_watchdog_background_check_enabled";
-    field @Deprecated public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS = "wifi_watchdog_background_check_timeout_ms";
-    field @Deprecated public static final String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT = "wifi_watchdog_initial_ignored_ping_count";
-    field @Deprecated public static final String WIFI_WATCHDOG_MAX_AP_CHECKS = "wifi_watchdog_max_ap_checks";
-    field @Deprecated public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on";
-    field @Deprecated public static final String WIFI_WATCHDOG_PING_COUNT = "wifi_watchdog_ping_count";
-    field @Deprecated public static final String WIFI_WATCHDOG_PING_DELAY_MS = "wifi_watchdog_ping_delay_ms";
-    field @Deprecated public static final String WIFI_WATCHDOG_PING_TIMEOUT_MS = "wifi_watchdog_ping_timeout_ms";
-    field @Deprecated public static final String WINDOW_ANIMATION_SCALE = "window_animation_scale";
-  }
-
-  public class SettingsSlicesContract {
-    field public static final String AUTHORITY = "android.settings.slices";
-    field public static final android.net.Uri BASE_URI;
-    field public static final String KEY_AIRPLANE_MODE = "airplane_mode";
-    field public static final String KEY_BATTERY_SAVER = "battery_saver";
-    field public static final String KEY_BLUETOOTH = "bluetooth";
-    field public static final String KEY_LOCATION = "location";
-    field public static final String KEY_WIFI = "wifi";
-    field public static final String PATH_SETTING_ACTION = "action";
-    field public static final String PATH_SETTING_INTENT = "intent";
-  }
-
-  public class SyncStateContract {
-    ctor public SyncStateContract();
-  }
-
-  public static interface SyncStateContract.Columns extends android.provider.BaseColumns {
-    field public static final String ACCOUNT_NAME = "account_name";
-    field public static final String ACCOUNT_TYPE = "account_type";
-    field public static final String DATA = "data";
-  }
-
-  public static class SyncStateContract.Constants implements android.provider.SyncStateContract.Columns {
-    ctor public SyncStateContract.Constants();
-    field public static final String CONTENT_DIRECTORY = "syncstate";
-  }
-
-  public static final class SyncStateContract.Helpers {
-    ctor public SyncStateContract.Helpers();
-    method public static byte[] get(android.content.ContentProviderClient, android.net.Uri, android.accounts.Account) throws android.os.RemoteException;
-    method public static android.util.Pair<android.net.Uri,byte[]> getWithUri(android.content.ContentProviderClient, android.net.Uri, android.accounts.Account) throws android.os.RemoteException;
-    method public static android.net.Uri insert(android.content.ContentProviderClient, android.net.Uri, android.accounts.Account, byte[]) throws android.os.RemoteException;
-    method public static android.content.ContentProviderOperation newSetOperation(android.net.Uri, android.accounts.Account, byte[]);
-    method public static android.content.ContentProviderOperation newUpdateOperation(android.net.Uri, byte[]);
-    method public static void set(android.content.ContentProviderClient, android.net.Uri, android.accounts.Account, byte[]) throws android.os.RemoteException;
-    method public static void update(android.content.ContentProviderClient, android.net.Uri, byte[]) throws android.os.RemoteException;
-  }
-
-  public final class Telephony {
-  }
-
-  public static interface Telephony.BaseMmsColumns extends android.provider.BaseColumns {
-    field public static final String CONTENT_CLASS = "ct_cls";
-    field public static final String CONTENT_LOCATION = "ct_l";
-    field public static final String CONTENT_TYPE = "ct_t";
-    field public static final String CREATOR = "creator";
-    field public static final String DATE = "date";
-    field public static final String DATE_SENT = "date_sent";
-    field public static final String DELIVERY_REPORT = "d_rpt";
-    field public static final String DELIVERY_TIME = "d_tm";
-    field public static final String EXPIRY = "exp";
-    field public static final String LOCKED = "locked";
-    field public static final String MESSAGE_BOX = "msg_box";
-    field public static final int MESSAGE_BOX_ALL = 0; // 0x0
-    field public static final int MESSAGE_BOX_DRAFTS = 3; // 0x3
-    field public static final int MESSAGE_BOX_FAILED = 5; // 0x5
-    field public static final int MESSAGE_BOX_INBOX = 1; // 0x1
-    field public static final int MESSAGE_BOX_OUTBOX = 4; // 0x4
-    field public static final int MESSAGE_BOX_SENT = 2; // 0x2
-    field public static final String MESSAGE_CLASS = "m_cls";
-    field public static final String MESSAGE_ID = "m_id";
-    field public static final String MESSAGE_SIZE = "m_size";
-    field public static final String MESSAGE_TYPE = "m_type";
-    field public static final String MMS_VERSION = "v";
-    field public static final String PRIORITY = "pri";
-    field public static final String READ = "read";
-    field public static final String READ_REPORT = "rr";
-    field public static final String READ_STATUS = "read_status";
-    field public static final String REPORT_ALLOWED = "rpt_a";
-    field public static final String RESPONSE_STATUS = "resp_st";
-    field public static final String RESPONSE_TEXT = "resp_txt";
-    field public static final String RETRIEVE_STATUS = "retr_st";
-    field public static final String RETRIEVE_TEXT = "retr_txt";
-    field public static final String RETRIEVE_TEXT_CHARSET = "retr_txt_cs";
-    field public static final String SEEN = "seen";
-    field public static final String STATUS = "st";
-    field public static final String SUBJECT = "sub";
-    field public static final String SUBJECT_CHARSET = "sub_cs";
-    field public static final String SUBSCRIPTION_ID = "sub_id";
-    field public static final String TEXT_ONLY = "text_only";
-    field public static final String THREAD_ID = "thread_id";
-    field public static final String TRANSACTION_ID = "tr_id";
-  }
-
-  public static interface Telephony.CanonicalAddressesColumns extends android.provider.BaseColumns {
-    field public static final String ADDRESS = "address";
-  }
-
-  public static final class Telephony.CarrierId implements android.provider.BaseColumns {
-    method @NonNull public static android.net.Uri getSpecificCarrierIdUriForSubscriptionId(int);
-    method public static android.net.Uri getUriForSubscriptionId(int);
-    field public static final String CARRIER_ID = "carrier_id";
-    field public static final String CARRIER_NAME = "carrier_name";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String SPECIFIC_CARRIER_ID = "specific_carrier_id";
-    field public static final String SPECIFIC_CARRIER_ID_NAME = "specific_carrier_id_name";
-  }
-
-  public static final class Telephony.Carriers implements android.provider.BaseColumns {
-    field public static final String APN = "apn";
-    field public static final String AUTH_TYPE = "authtype";
-    field @Deprecated public static final String BEARER = "bearer";
-    field public static final String CARRIER_ENABLED = "carrier_enabled";
-    field public static final String CARRIER_ID = "carrier_id";
-    field @NonNull public static final android.net.Uri CONTENT_URI;
-    field public static final String CURRENT = "current";
-    field public static final String DEFAULT_SORT_ORDER = "name ASC";
-    field @Deprecated public static final String MCC = "mcc";
-    field public static final String MMSC = "mmsc";
-    field public static final String MMSPORT = "mmsport";
-    field public static final String MMSPROXY = "mmsproxy";
-    field @Deprecated public static final String MNC = "mnc";
-    field @Deprecated public static final String MVNO_MATCH_DATA = "mvno_match_data";
-    field @Deprecated public static final String MVNO_TYPE = "mvno_type";
-    field public static final String NAME = "name";
-    field public static final String NETWORK_TYPE_BITMASK = "network_type_bitmask";
-    field @Deprecated public static final String NUMERIC = "numeric";
-    field public static final String PASSWORD = "password";
-    field public static final String PORT = "port";
-    field public static final String PROTOCOL = "protocol";
-    field public static final String PROXY = "proxy";
-    field public static final String ROAMING_PROTOCOL = "roaming_protocol";
-    field public static final String SERVER = "server";
-    field @NonNull public static final android.net.Uri SIM_APN_URI;
-    field public static final String SUBSCRIPTION_ID = "sub_id";
-    field public static final String TYPE = "type";
-    field public static final String USER = "user";
-  }
-
-  public static final class Telephony.Mms implements android.provider.Telephony.BaseMmsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-    field public static final android.net.Uri REPORT_REQUEST_URI;
-    field public static final android.net.Uri REPORT_STATUS_URI;
-  }
-
-  public static final class Telephony.Mms.Addr implements android.provider.BaseColumns {
-    method @NonNull public static android.net.Uri getAddrUriForMessage(@NonNull String);
-    field public static final String ADDRESS = "address";
-    field public static final String CHARSET = "charset";
-    field public static final String CONTACT_ID = "contact_id";
-    field public static final String MSG_ID = "msg_id";
-    field public static final String TYPE = "type";
-  }
-
-  public static final class Telephony.Mms.Draft implements android.provider.Telephony.BaseMmsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-  }
-
-  public static final class Telephony.Mms.Inbox implements android.provider.Telephony.BaseMmsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-  }
-
-  public static final class Telephony.Mms.Intents {
-    field public static final String CONTENT_CHANGED_ACTION = "android.intent.action.CONTENT_CHANGED";
-    field public static final String DELETED_CONTENTS = "deleted_contents";
-  }
-
-  public static final class Telephony.Mms.Outbox implements android.provider.Telephony.BaseMmsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-  }
-
-  public static final class Telephony.Mms.Part implements android.provider.BaseColumns {
-    method @NonNull public static android.net.Uri getPartUriForMessage(@NonNull String);
-    field public static final String CHARSET = "chset";
-    field public static final String CONTENT_DISPOSITION = "cd";
-    field public static final String CONTENT_ID = "cid";
-    field public static final String CONTENT_LOCATION = "cl";
-    field public static final String CONTENT_TYPE = "ct";
-    field @NonNull public static final android.net.Uri CONTENT_URI;
-    field public static final String CT_START = "ctt_s";
-    field public static final String CT_TYPE = "ctt_t";
-    field public static final String FILENAME = "fn";
-    field public static final String MSG_ID = "mid";
-    field public static final String NAME = "name";
-    field public static final String SEQ = "seq";
-    field public static final String TEXT = "text";
-    field public static final String _DATA = "_data";
-  }
-
-  public static final class Telephony.Mms.Rate {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String SENT_TIME = "sent_time";
-  }
-
-  public static final class Telephony.Mms.Sent implements android.provider.Telephony.BaseMmsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-  }
-
-  public static final class Telephony.MmsSms implements android.provider.BaseColumns {
-    field public static final android.net.Uri CONTENT_CONVERSATIONS_URI;
-    field public static final android.net.Uri CONTENT_DRAFT_URI;
-    field public static final android.net.Uri CONTENT_FILTER_BYPHONE_URI;
-    field public static final android.net.Uri CONTENT_LOCKED_URI;
-    field public static final android.net.Uri CONTENT_UNDELIVERED_URI;
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final int ERR_TYPE_GENERIC = 1; // 0x1
-    field public static final int ERR_TYPE_GENERIC_PERMANENT = 10; // 0xa
-    field public static final int ERR_TYPE_MMS_PROTO_PERMANENT = 12; // 0xc
-    field public static final int ERR_TYPE_MMS_PROTO_TRANSIENT = 3; // 0x3
-    field public static final int ERR_TYPE_SMS_PROTO_PERMANENT = 11; // 0xb
-    field public static final int ERR_TYPE_SMS_PROTO_TRANSIENT = 2; // 0x2
-    field public static final int ERR_TYPE_TRANSPORT_FAILURE = 4; // 0x4
-    field public static final int MMS_PROTO = 1; // 0x1
-    field public static final int NO_ERROR = 0; // 0x0
-    field public static final android.net.Uri SEARCH_URI;
-    field public static final int SMS_PROTO = 0; // 0x0
-    field public static final String TYPE_DISCRIMINATOR_COLUMN = "transport_type";
-  }
-
-  public static final class Telephony.MmsSms.PendingMessages implements android.provider.BaseColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DUE_TIME = "due_time";
-    field public static final String ERROR_CODE = "err_code";
-    field public static final String ERROR_TYPE = "err_type";
-    field public static final String LAST_TRY = "last_try";
-    field public static final String MSG_ID = "msg_id";
-    field public static final String MSG_TYPE = "msg_type";
-    field public static final String PROTO_TYPE = "proto_type";
-    field public static final String RETRY_INDEX = "retry_index";
-    field public static final String SUBSCRIPTION_ID = "pending_sub_id";
-  }
-
-  public static final class Telephony.ServiceStateTable {
-    method public static android.net.Uri getUriForSubscriptionId(int);
-    method public static android.net.Uri getUriForSubscriptionIdAndField(int, String);
-    field public static final String AUTHORITY = "service-state";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String IS_MANUAL_NETWORK_SELECTION = "is_manual_network_selection";
-    field public static final String VOICE_OPERATOR_NUMERIC = "voice_operator_numeric";
-    field public static final String VOICE_REG_STATE = "voice_reg_state";
-  }
-
-  public static final class Telephony.Sms implements android.provider.BaseColumns android.provider.Telephony.TextBasedSmsColumns {
-    method public static String getDefaultSmsPackage(android.content.Context);
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-  }
-
-  public static final class Telephony.Sms.Conversations implements android.provider.BaseColumns android.provider.Telephony.TextBasedSmsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-    field public static final String MESSAGE_COUNT = "msg_count";
-    field public static final String SNIPPET = "snippet";
-  }
-
-  public static final class Telephony.Sms.Draft implements android.provider.BaseColumns android.provider.Telephony.TextBasedSmsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-  }
-
-  public static final class Telephony.Sms.Inbox implements android.provider.BaseColumns android.provider.Telephony.TextBasedSmsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-  }
-
-  public static final class Telephony.Sms.Intents {
-    method public static android.telephony.SmsMessage[] getMessagesFromIntent(android.content.Intent);
-    field public static final String ACTION_CHANGE_DEFAULT = "android.provider.Telephony.ACTION_CHANGE_DEFAULT";
-    field public static final String ACTION_DEFAULT_SMS_PACKAGE_CHANGED = "android.provider.action.DEFAULT_SMS_PACKAGE_CHANGED";
-    field public static final String ACTION_EXTERNAL_PROVIDER_CHANGE = "android.provider.action.EXTERNAL_PROVIDER_CHANGE";
-    field public static final String DATA_SMS_RECEIVED_ACTION = "android.intent.action.DATA_SMS_RECEIVED";
-    field public static final String EXTRA_IS_DEFAULT_SMS_APP = "android.provider.extra.IS_DEFAULT_SMS_APP";
-    field public static final String EXTRA_PACKAGE_NAME = "package";
-    field public static final int RESULT_SMS_DATABASE_ERROR = 10; // 0xa
-    field public static final int RESULT_SMS_DISPATCH_FAILURE = 6; // 0x6
-    field public static final int RESULT_SMS_DUPLICATED = 5; // 0x5
-    field public static final int RESULT_SMS_GENERIC_ERROR = 2; // 0x2
-    field public static final int RESULT_SMS_HANDLED = 1; // 0x1
-    field public static final int RESULT_SMS_INVALID_URI = 11; // 0xb
-    field public static final int RESULT_SMS_NULL_MESSAGE = 8; // 0x8
-    field public static final int RESULT_SMS_NULL_PDU = 7; // 0x7
-    field public static final int RESULT_SMS_OUT_OF_MEMORY = 3; // 0x3
-    field public static final int RESULT_SMS_RECEIVED_WHILE_ENCRYPTED = 9; // 0x9
-    field public static final int RESULT_SMS_UNSUPPORTED = 4; // 0x4
-    field @Deprecated public static final String SECRET_CODE_ACTION = "android.provider.Telephony.SECRET_CODE";
-    field public static final String SIM_FULL_ACTION = "android.provider.Telephony.SIM_FULL";
-    field public static final String SMS_CB_RECEIVED_ACTION = "android.provider.Telephony.SMS_CB_RECEIVED";
-    field public static final String SMS_DELIVER_ACTION = "android.provider.Telephony.SMS_DELIVER";
-    field public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
-    field public static final String SMS_REJECTED_ACTION = "android.provider.Telephony.SMS_REJECTED";
-    field public static final String SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED_ACTION = "android.provider.Telephony.SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED";
-    field public static final String WAP_PUSH_DELIVER_ACTION = "android.provider.Telephony.WAP_PUSH_DELIVER";
-    field public static final String WAP_PUSH_RECEIVED_ACTION = "android.provider.Telephony.WAP_PUSH_RECEIVED";
-  }
-
-  public static final class Telephony.Sms.Outbox implements android.provider.BaseColumns android.provider.Telephony.TextBasedSmsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-  }
-
-  public static final class Telephony.Sms.Sent implements android.provider.BaseColumns android.provider.Telephony.TextBasedSmsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-  }
-
-  public static interface Telephony.TextBasedSmsColumns {
-    field public static final String ADDRESS = "address";
-    field public static final String BODY = "body";
-    field public static final String CREATOR = "creator";
-    field public static final String DATE = "date";
-    field public static final String DATE_SENT = "date_sent";
-    field public static final String ERROR_CODE = "error_code";
-    field public static final String LOCKED = "locked";
-    field public static final int MESSAGE_TYPE_ALL = 0; // 0x0
-    field public static final int MESSAGE_TYPE_DRAFT = 3; // 0x3
-    field public static final int MESSAGE_TYPE_FAILED = 5; // 0x5
-    field public static final int MESSAGE_TYPE_INBOX = 1; // 0x1
-    field public static final int MESSAGE_TYPE_OUTBOX = 4; // 0x4
-    field public static final int MESSAGE_TYPE_QUEUED = 6; // 0x6
-    field public static final int MESSAGE_TYPE_SENT = 2; // 0x2
-    field public static final String PERSON = "person";
-    field public static final String PROTOCOL = "protocol";
-    field public static final String READ = "read";
-    field public static final String REPLY_PATH_PRESENT = "reply_path_present";
-    field public static final String SEEN = "seen";
-    field public static final String SERVICE_CENTER = "service_center";
-    field public static final String STATUS = "status";
-    field public static final int STATUS_COMPLETE = 0; // 0x0
-    field public static final int STATUS_FAILED = 64; // 0x40
-    field public static final int STATUS_NONE = -1; // 0xffffffff
-    field public static final int STATUS_PENDING = 32; // 0x20
-    field public static final String SUBJECT = "subject";
-    field public static final String SUBSCRIPTION_ID = "sub_id";
-    field public static final String THREAD_ID = "thread_id";
-    field public static final String TYPE = "type";
-  }
-
-  public static final class Telephony.Threads implements android.provider.Telephony.ThreadsColumns {
-    method public static long getOrCreateThreadId(android.content.Context, String);
-    method public static long getOrCreateThreadId(android.content.Context, java.util.Set<java.lang.String>);
-    field public static final int BROADCAST_THREAD = 1; // 0x1
-    field public static final int COMMON_THREAD = 0; // 0x0
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final android.net.Uri OBSOLETE_THREADS_URI;
-  }
-
-  public static interface Telephony.ThreadsColumns extends android.provider.BaseColumns {
-    field public static final String ARCHIVED = "archived";
-    field public static final String DATE = "date";
-    field public static final String ERROR = "error";
-    field public static final String HAS_ATTACHMENT = "has_attachment";
-    field public static final String MESSAGE_COUNT = "message_count";
-    field public static final String READ = "read";
-    field public static final String RECIPIENT_IDS = "recipient_ids";
-    field public static final String SNIPPET = "snippet";
-    field public static final String SNIPPET_CHARSET = "snippet_cs";
-    field public static final String TYPE = "type";
-  }
-
-  public class UserDictionary {
-    ctor public UserDictionary();
-    field public static final String AUTHORITY = "user_dictionary";
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  public static class UserDictionary.Words implements android.provider.BaseColumns {
-    ctor public UserDictionary.Words();
-    method @Deprecated public static void addWord(android.content.Context, String, int, int);
-    method public static void addWord(android.content.Context, String, int, String, java.util.Locale);
-    field public static final String APP_ID = "appid";
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/vnd.google.userword";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.google.userword";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "frequency DESC";
-    field public static final String FREQUENCY = "frequency";
-    field public static final String LOCALE = "locale";
-    field @Deprecated public static final int LOCALE_TYPE_ALL = 0; // 0x0
-    field @Deprecated public static final int LOCALE_TYPE_CURRENT = 1; // 0x1
-    field public static final String SHORTCUT = "shortcut";
-    field public static final String WORD = "word";
-    field public static final String _ID = "_id";
-  }
-
-  public class VoicemailContract {
-    field public static final String ACTION_FETCH_VOICEMAIL = "android.intent.action.FETCH_VOICEMAIL";
-    field public static final String ACTION_NEW_VOICEMAIL = "android.intent.action.NEW_VOICEMAIL";
-    field public static final String ACTION_SYNC_VOICEMAIL = "android.provider.action.SYNC_VOICEMAIL";
-    field public static final String AUTHORITY = "com.android.voicemail";
-    field public static final String EXTRA_PHONE_ACCOUNT_HANDLE = "android.provider.extra.PHONE_ACCOUNT_HANDLE";
-    field public static final String EXTRA_SELF_CHANGE = "com.android.voicemail.extra.SELF_CHANGE";
-    field public static final String PARAM_KEY_SOURCE_PACKAGE = "source_package";
-  }
-
-  public static final class VoicemailContract.Status implements android.provider.BaseColumns {
-    method public static android.net.Uri buildSourceUri(String);
-    field public static final String CONFIGURATION_STATE = "configuration_state";
-    field public static final int CONFIGURATION_STATE_CAN_BE_CONFIGURED = 2; // 0x2
-    field public static final int CONFIGURATION_STATE_CONFIGURING = 3; // 0x3
-    field public static final int CONFIGURATION_STATE_DISABLED = 5; // 0x5
-    field public static final int CONFIGURATION_STATE_FAILED = 4; // 0x4
-    field public static final int CONFIGURATION_STATE_NOT_CONFIGURED = 1; // 0x1
-    field public static final int CONFIGURATION_STATE_OK = 0; // 0x0
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DATA_CHANNEL_STATE = "data_channel_state";
-    field public static final int DATA_CHANNEL_STATE_BAD_CONFIGURATION = 3; // 0x3
-    field public static final int DATA_CHANNEL_STATE_COMMUNICATION_ERROR = 4; // 0x4
-    field public static final int DATA_CHANNEL_STATE_NO_CONNECTION = 1; // 0x1
-    field public static final int DATA_CHANNEL_STATE_NO_CONNECTION_CELLULAR_REQUIRED = 2; // 0x2
-    field public static final int DATA_CHANNEL_STATE_OK = 0; // 0x0
-    field public static final int DATA_CHANNEL_STATE_SERVER_CONNECTION_ERROR = 6; // 0x6
-    field public static final int DATA_CHANNEL_STATE_SERVER_ERROR = 5; // 0x5
-    field public static final String DIR_TYPE = "vnd.android.cursor.dir/voicemail.source.status";
-    field public static final String ITEM_TYPE = "vnd.android.cursor.item/voicemail.source.status";
-    field public static final String NOTIFICATION_CHANNEL_STATE = "notification_channel_state";
-    field public static final int NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING = 2; // 0x2
-    field public static final int NOTIFICATION_CHANNEL_STATE_NO_CONNECTION = 1; // 0x1
-    field public static final int NOTIFICATION_CHANNEL_STATE_OK = 0; // 0x0
-    field public static final String PHONE_ACCOUNT_COMPONENT_NAME = "phone_account_component_name";
-    field public static final String PHONE_ACCOUNT_ID = "phone_account_id";
-    field public static final String QUOTA_OCCUPIED = "quota_occupied";
-    field public static final String QUOTA_TOTAL = "quota_total";
-    field public static final int QUOTA_UNAVAILABLE = -1; // 0xffffffff
-    field public static final String SETTINGS_URI = "settings_uri";
-    field public static final String SOURCE_PACKAGE = "source_package";
-    field public static final String SOURCE_TYPE = "source_type";
-    field public static final String VOICEMAIL_ACCESS_URI = "voicemail_access_uri";
-  }
-
-  public static final class VoicemailContract.Voicemails implements android.provider.BaseColumns android.provider.OpenableColumns {
-    method public static android.net.Uri buildSourceUri(String);
-    field public static final String ARCHIVED = "archived";
-    field public static final String BACKED_UP = "backed_up";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DATE = "date";
-    field public static final String DELETED = "deleted";
-    field public static final String DIRTY = "dirty";
-    field public static final int DIRTY_RETAIN = -1; // 0xffffffff
-    field public static final String DIR_TYPE = "vnd.android.cursor.dir/voicemails";
-    field public static final String DURATION = "duration";
-    field public static final String HAS_CONTENT = "has_content";
-    field public static final String IS_OMTP_VOICEMAIL = "is_omtp_voicemail";
-    field public static final String IS_READ = "is_read";
-    field public static final String ITEM_TYPE = "vnd.android.cursor.item/voicemail";
-    field public static final String LAST_MODIFIED = "last_modified";
-    field public static final String MIME_TYPE = "mime_type";
-    field public static final String NEW = "new";
-    field public static final String NUMBER = "number";
-    field public static final String PHONE_ACCOUNT_COMPONENT_NAME = "subscription_component_name";
-    field public static final String PHONE_ACCOUNT_ID = "subscription_id";
-    field public static final String RESTORED = "restored";
-    field public static final String SOURCE_DATA = "source_data";
-    field public static final String SOURCE_PACKAGE = "source_package";
-    field public static final String TRANSCRIPTION = "transcription";
-  }
-
-}
-
-package android.renderscript {
-
-  public class Allocation extends android.renderscript.BaseObj {
-    method public void copy1DRangeFrom(int, int, Object);
-    method public void copy1DRangeFrom(int, int, int[]);
-    method public void copy1DRangeFrom(int, int, short[]);
-    method public void copy1DRangeFrom(int, int, byte[]);
-    method public void copy1DRangeFrom(int, int, float[]);
-    method public void copy1DRangeFrom(int, int, android.renderscript.Allocation, int);
-    method public void copy1DRangeFromUnchecked(int, int, Object);
-    method public void copy1DRangeFromUnchecked(int, int, int[]);
-    method public void copy1DRangeFromUnchecked(int, int, short[]);
-    method public void copy1DRangeFromUnchecked(int, int, byte[]);
-    method public void copy1DRangeFromUnchecked(int, int, float[]);
-    method public void copy1DRangeTo(int, int, Object);
-    method public void copy1DRangeTo(int, int, int[]);
-    method public void copy1DRangeTo(int, int, short[]);
-    method public void copy1DRangeTo(int, int, byte[]);
-    method public void copy1DRangeTo(int, int, float[]);
-    method public void copy1DRangeToUnchecked(int, int, Object);
-    method public void copy1DRangeToUnchecked(int, int, int[]);
-    method public void copy1DRangeToUnchecked(int, int, short[]);
-    method public void copy1DRangeToUnchecked(int, int, byte[]);
-    method public void copy1DRangeToUnchecked(int, int, float[]);
-    method public void copy2DRangeFrom(int, int, int, int, Object);
-    method public void copy2DRangeFrom(int, int, int, int, byte[]);
-    method public void copy2DRangeFrom(int, int, int, int, short[]);
-    method public void copy2DRangeFrom(int, int, int, int, int[]);
-    method public void copy2DRangeFrom(int, int, int, int, float[]);
-    method public void copy2DRangeFrom(int, int, int, int, android.renderscript.Allocation, int, int);
-    method public void copy2DRangeFrom(int, int, android.graphics.Bitmap);
-    method public void copy2DRangeTo(int, int, int, int, Object);
-    method public void copy2DRangeTo(int, int, int, int, byte[]);
-    method public void copy2DRangeTo(int, int, int, int, short[]);
-    method public void copy2DRangeTo(int, int, int, int, int[]);
-    method public void copy2DRangeTo(int, int, int, int, float[]);
-    method public void copy3DRangeFrom(int, int, int, int, int, int, Object);
-    method public void copy3DRangeFrom(int, int, int, int, int, int, android.renderscript.Allocation, int, int, int);
-    method public void copy3DRangeTo(int, int, int, int, int, int, Object);
-    method public void copyFrom(android.renderscript.BaseObj[]);
-    method public void copyFrom(Object);
-    method public void copyFrom(int[]);
-    method public void copyFrom(short[]);
-    method public void copyFrom(byte[]);
-    method public void copyFrom(float[]);
-    method public void copyFrom(android.graphics.Bitmap);
-    method public void copyFrom(android.renderscript.Allocation);
-    method public void copyFromUnchecked(Object);
-    method public void copyFromUnchecked(int[]);
-    method public void copyFromUnchecked(short[]);
-    method public void copyFromUnchecked(byte[]);
-    method public void copyFromUnchecked(float[]);
-    method public void copyTo(android.graphics.Bitmap);
-    method public void copyTo(Object);
-    method public void copyTo(byte[]);
-    method public void copyTo(short[]);
-    method public void copyTo(int[]);
-    method public void copyTo(float[]);
-    method public static android.renderscript.Allocation[] createAllocations(android.renderscript.RenderScript, android.renderscript.Type, int, int);
-    method public static android.renderscript.Allocation createCubemapFromBitmap(android.renderscript.RenderScript, android.graphics.Bitmap, android.renderscript.Allocation.MipmapControl, int);
-    method public static android.renderscript.Allocation createCubemapFromBitmap(android.renderscript.RenderScript, android.graphics.Bitmap);
-    method public static android.renderscript.Allocation createCubemapFromCubeFaces(android.renderscript.RenderScript, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.renderscript.Allocation.MipmapControl, int);
-    method public static android.renderscript.Allocation createCubemapFromCubeFaces(android.renderscript.RenderScript, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap);
-    method public static android.renderscript.Allocation createFromBitmap(android.renderscript.RenderScript, android.graphics.Bitmap, android.renderscript.Allocation.MipmapControl, int);
-    method public static android.renderscript.Allocation createFromBitmap(android.renderscript.RenderScript, android.graphics.Bitmap);
-    method public static android.renderscript.Allocation createFromBitmapResource(android.renderscript.RenderScript, android.content.res.Resources, int, android.renderscript.Allocation.MipmapControl, int);
-    method public static android.renderscript.Allocation createFromBitmapResource(android.renderscript.RenderScript, android.content.res.Resources, int);
-    method public static android.renderscript.Allocation createFromString(android.renderscript.RenderScript, String, int);
-    method public static android.renderscript.Allocation createSized(android.renderscript.RenderScript, android.renderscript.Element, int, int);
-    method public static android.renderscript.Allocation createSized(android.renderscript.RenderScript, android.renderscript.Element, int);
-    method public static android.renderscript.Allocation createTyped(android.renderscript.RenderScript, android.renderscript.Type, android.renderscript.Allocation.MipmapControl, int);
-    method public static android.renderscript.Allocation createTyped(android.renderscript.RenderScript, android.renderscript.Type, int);
-    method public static android.renderscript.Allocation createTyped(android.renderscript.RenderScript, android.renderscript.Type);
-    method public void generateMipmaps();
-    method public java.nio.ByteBuffer getByteBuffer();
-    method public int getBytesSize();
-    method public android.renderscript.Element getElement();
-    method public long getStride();
-    method public android.view.Surface getSurface();
-    method public long getTimeStamp();
-    method public android.renderscript.Type getType();
-    method public int getUsage();
-    method public void ioReceive();
-    method public void ioSend();
-    method @Deprecated public void resize(int);
-    method public void setAutoPadding(boolean);
-    method public void setFromFieldPacker(int, android.renderscript.FieldPacker);
-    method public void setFromFieldPacker(int, int, android.renderscript.FieldPacker);
-    method public void setFromFieldPacker(int, int, int, int, android.renderscript.FieldPacker);
-    method public void setOnBufferAvailableListener(android.renderscript.Allocation.OnBufferAvailableListener);
-    method public void setSurface(android.view.Surface);
-    method public void syncAll(int);
-    field public static final int USAGE_GRAPHICS_CONSTANTS = 8; // 0x8
-    field public static final int USAGE_GRAPHICS_RENDER_TARGET = 16; // 0x10
-    field public static final int USAGE_GRAPHICS_TEXTURE = 2; // 0x2
-    field public static final int USAGE_GRAPHICS_VERTEX = 4; // 0x4
-    field public static final int USAGE_IO_INPUT = 32; // 0x20
-    field public static final int USAGE_IO_OUTPUT = 64; // 0x40
-    field public static final int USAGE_SCRIPT = 1; // 0x1
-    field public static final int USAGE_SHARED = 128; // 0x80
-  }
-
-  public enum Allocation.MipmapControl {
-    enum_constant public static final android.renderscript.Allocation.MipmapControl MIPMAP_FULL;
-    enum_constant public static final android.renderscript.Allocation.MipmapControl MIPMAP_NONE;
-    enum_constant public static final android.renderscript.Allocation.MipmapControl MIPMAP_ON_SYNC_TO_TEXTURE;
-  }
-
-  public static interface Allocation.OnBufferAvailableListener {
-    method public void onBufferAvailable(android.renderscript.Allocation);
-  }
-
-  public class AllocationAdapter extends android.renderscript.Allocation {
-    method public static android.renderscript.AllocationAdapter create1D(android.renderscript.RenderScript, android.renderscript.Allocation);
-    method public static android.renderscript.AllocationAdapter create2D(android.renderscript.RenderScript, android.renderscript.Allocation);
-    method public static android.renderscript.AllocationAdapter createTyped(android.renderscript.RenderScript, android.renderscript.Allocation, android.renderscript.Type);
-    method public void resize(int);
-    method public void setFace(android.renderscript.Type.CubemapFace);
-    method public void setLOD(int);
-    method public void setX(int);
-    method public void setY(int);
-    method public void setZ(int);
-  }
-
-  public class BaseObj {
-    method public void destroy();
-    method public String getName();
-    method public void setName(String);
-  }
-
-  public class Byte2 {
-    ctor public Byte2();
-    ctor public Byte2(byte, byte);
-    field public byte x;
-    field public byte y;
-  }
-
-  public class Byte3 {
-    ctor public Byte3();
-    ctor public Byte3(byte, byte, byte);
-    field public byte x;
-    field public byte y;
-    field public byte z;
-  }
-
-  public class Byte4 {
-    ctor public Byte4();
-    ctor public Byte4(byte, byte, byte, byte);
-    field public byte w;
-    field public byte x;
-    field public byte y;
-    field public byte z;
-  }
-
-  public class Double2 {
-    ctor public Double2();
-    ctor public Double2(double, double);
-    field public double x;
-    field public double y;
-  }
-
-  public class Double3 {
-    ctor public Double3();
-    ctor public Double3(double, double, double);
-    field public double x;
-    field public double y;
-    field public double z;
-  }
-
-  public class Double4 {
-    ctor public Double4();
-    ctor public Double4(double, double, double, double);
-    field public double w;
-    field public double x;
-    field public double y;
-    field public double z;
-  }
-
-  public class Element extends android.renderscript.BaseObj {
-    method public static android.renderscript.Element ALLOCATION(android.renderscript.RenderScript);
-    method public static android.renderscript.Element A_8(android.renderscript.RenderScript);
-    method public static android.renderscript.Element BOOLEAN(android.renderscript.RenderScript);
-    method public static android.renderscript.Element ELEMENT(android.renderscript.RenderScript);
-    method public static android.renderscript.Element F16(android.renderscript.RenderScript);
-    method public static android.renderscript.Element F16_2(android.renderscript.RenderScript);
-    method public static android.renderscript.Element F16_3(android.renderscript.RenderScript);
-    method public static android.renderscript.Element F16_4(android.renderscript.RenderScript);
-    method public static android.renderscript.Element F32(android.renderscript.RenderScript);
-    method public static android.renderscript.Element F32_2(android.renderscript.RenderScript);
-    method public static android.renderscript.Element F32_3(android.renderscript.RenderScript);
-    method public static android.renderscript.Element F32_4(android.renderscript.RenderScript);
-    method public static android.renderscript.Element F64(android.renderscript.RenderScript);
-    method public static android.renderscript.Element F64_2(android.renderscript.RenderScript);
-    method public static android.renderscript.Element F64_3(android.renderscript.RenderScript);
-    method public static android.renderscript.Element F64_4(android.renderscript.RenderScript);
-    method public static android.renderscript.Element FONT(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I16(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I16_2(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I16_3(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I16_4(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I32(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I32_2(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I32_3(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I32_4(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I64(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I64_2(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I64_3(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I64_4(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I8(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I8_2(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I8_3(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I8_4(android.renderscript.RenderScript);
-    method @Deprecated public static android.renderscript.Element MATRIX4X4(android.renderscript.RenderScript);
-    method public static android.renderscript.Element MATRIX_2X2(android.renderscript.RenderScript);
-    method public static android.renderscript.Element MATRIX_3X3(android.renderscript.RenderScript);
-    method public static android.renderscript.Element MATRIX_4X4(android.renderscript.RenderScript);
-    method public static android.renderscript.Element MESH(android.renderscript.RenderScript);
-    method public static android.renderscript.Element PROGRAM_FRAGMENT(android.renderscript.RenderScript);
-    method public static android.renderscript.Element PROGRAM_RASTER(android.renderscript.RenderScript);
-    method public static android.renderscript.Element PROGRAM_STORE(android.renderscript.RenderScript);
-    method public static android.renderscript.Element PROGRAM_VERTEX(android.renderscript.RenderScript);
-    method public static android.renderscript.Element RGBA_4444(android.renderscript.RenderScript);
-    method public static android.renderscript.Element RGBA_5551(android.renderscript.RenderScript);
-    method public static android.renderscript.Element RGBA_8888(android.renderscript.RenderScript);
-    method public static android.renderscript.Element RGB_565(android.renderscript.RenderScript);
-    method public static android.renderscript.Element RGB_888(android.renderscript.RenderScript);
-    method public static android.renderscript.Element SAMPLER(android.renderscript.RenderScript);
-    method public static android.renderscript.Element SCRIPT(android.renderscript.RenderScript);
-    method public static android.renderscript.Element TYPE(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U16(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U16_2(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U16_3(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U16_4(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U32(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U32_2(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U32_3(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U32_4(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U64(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U64_2(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U64_3(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U64_4(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U8(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U8_2(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U8_3(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U8_4(android.renderscript.RenderScript);
-    method public static android.renderscript.Element YUV(android.renderscript.RenderScript);
-    method public static android.renderscript.Element createPixel(android.renderscript.RenderScript, android.renderscript.Element.DataType, android.renderscript.Element.DataKind);
-    method public static android.renderscript.Element createVector(android.renderscript.RenderScript, android.renderscript.Element.DataType, int);
-    method public int getBytesSize();
-    method public android.renderscript.Element.DataKind getDataKind();
-    method public android.renderscript.Element.DataType getDataType();
-    method public android.renderscript.Element getSubElement(int);
-    method public int getSubElementArraySize(int);
-    method public int getSubElementCount();
-    method public String getSubElementName(int);
-    method public int getSubElementOffsetBytes(int);
-    method public int getVectorSize();
-    method public boolean isCompatible(android.renderscript.Element);
-    method public boolean isComplex();
-  }
-
-  public static class Element.Builder {
-    ctor public Element.Builder(android.renderscript.RenderScript);
-    method public android.renderscript.Element.Builder add(android.renderscript.Element, String, int);
-    method public android.renderscript.Element.Builder add(android.renderscript.Element, String);
-    method public android.renderscript.Element create();
-  }
-
-  public enum Element.DataKind {
-    enum_constant public static final android.renderscript.Element.DataKind PIXEL_A;
-    enum_constant public static final android.renderscript.Element.DataKind PIXEL_DEPTH;
-    enum_constant public static final android.renderscript.Element.DataKind PIXEL_L;
-    enum_constant public static final android.renderscript.Element.DataKind PIXEL_LA;
-    enum_constant public static final android.renderscript.Element.DataKind PIXEL_RGB;
-    enum_constant public static final android.renderscript.Element.DataKind PIXEL_RGBA;
-    enum_constant public static final android.renderscript.Element.DataKind PIXEL_YUV;
-    enum_constant public static final android.renderscript.Element.DataKind USER;
-  }
-
-  public enum Element.DataType {
-    enum_constant public static final android.renderscript.Element.DataType BOOLEAN;
-    enum_constant public static final android.renderscript.Element.DataType FLOAT_16;
-    enum_constant public static final android.renderscript.Element.DataType FLOAT_32;
-    enum_constant public static final android.renderscript.Element.DataType FLOAT_64;
-    enum_constant public static final android.renderscript.Element.DataType MATRIX_2X2;
-    enum_constant public static final android.renderscript.Element.DataType MATRIX_3X3;
-    enum_constant public static final android.renderscript.Element.DataType MATRIX_4X4;
-    enum_constant public static final android.renderscript.Element.DataType NONE;
-    enum_constant public static final android.renderscript.Element.DataType RS_ALLOCATION;
-    enum_constant public static final android.renderscript.Element.DataType RS_ELEMENT;
-    enum_constant public static final android.renderscript.Element.DataType RS_FONT;
-    enum_constant public static final android.renderscript.Element.DataType RS_MESH;
-    enum_constant public static final android.renderscript.Element.DataType RS_PROGRAM_FRAGMENT;
-    enum_constant public static final android.renderscript.Element.DataType RS_PROGRAM_RASTER;
-    enum_constant public static final android.renderscript.Element.DataType RS_PROGRAM_STORE;
-    enum_constant public static final android.renderscript.Element.DataType RS_PROGRAM_VERTEX;
-    enum_constant public static final android.renderscript.Element.DataType RS_SAMPLER;
-    enum_constant public static final android.renderscript.Element.DataType RS_SCRIPT;
-    enum_constant public static final android.renderscript.Element.DataType RS_TYPE;
-    enum_constant public static final android.renderscript.Element.DataType SIGNED_16;
-    enum_constant public static final android.renderscript.Element.DataType SIGNED_32;
-    enum_constant public static final android.renderscript.Element.DataType SIGNED_64;
-    enum_constant public static final android.renderscript.Element.DataType SIGNED_8;
-    enum_constant public static final android.renderscript.Element.DataType UNSIGNED_16;
-    enum_constant public static final android.renderscript.Element.DataType UNSIGNED_32;
-    enum_constant public static final android.renderscript.Element.DataType UNSIGNED_4_4_4_4;
-    enum_constant public static final android.renderscript.Element.DataType UNSIGNED_5_5_5_1;
-    enum_constant public static final android.renderscript.Element.DataType UNSIGNED_5_6_5;
-    enum_constant public static final android.renderscript.Element.DataType UNSIGNED_64;
-    enum_constant public static final android.renderscript.Element.DataType UNSIGNED_8;
-  }
-
-  public class FieldPacker {
-    ctor public FieldPacker(int);
-    ctor public FieldPacker(byte[]);
-    method public void addBoolean(boolean);
-    method public void addF32(float);
-    method public void addF32(android.renderscript.Float2);
-    method public void addF32(android.renderscript.Float3);
-    method public void addF32(android.renderscript.Float4);
-    method public void addF64(double);
-    method public void addF64(android.renderscript.Double2);
-    method public void addF64(android.renderscript.Double3);
-    method public void addF64(android.renderscript.Double4);
-    method public void addI16(short);
-    method public void addI16(android.renderscript.Short2);
-    method public void addI16(android.renderscript.Short3);
-    method public void addI16(android.renderscript.Short4);
-    method public void addI32(int);
-    method public void addI32(android.renderscript.Int2);
-    method public void addI32(android.renderscript.Int3);
-    method public void addI32(android.renderscript.Int4);
-    method public void addI64(long);
-    method public void addI64(android.renderscript.Long2);
-    method public void addI64(android.renderscript.Long3);
-    method public void addI64(android.renderscript.Long4);
-    method public void addI8(byte);
-    method public void addI8(android.renderscript.Byte2);
-    method public void addI8(android.renderscript.Byte3);
-    method public void addI8(android.renderscript.Byte4);
-    method public void addMatrix(android.renderscript.Matrix4f);
-    method public void addMatrix(android.renderscript.Matrix3f);
-    method public void addMatrix(android.renderscript.Matrix2f);
-    method public void addObj(android.renderscript.BaseObj);
-    method public void addU16(int);
-    method public void addU16(android.renderscript.Int2);
-    method public void addU16(android.renderscript.Int3);
-    method public void addU16(android.renderscript.Int4);
-    method public void addU32(long);
-    method public void addU32(android.renderscript.Long2);
-    method public void addU32(android.renderscript.Long3);
-    method public void addU32(android.renderscript.Long4);
-    method public void addU64(long);
-    method public void addU64(android.renderscript.Long2);
-    method public void addU64(android.renderscript.Long3);
-    method public void addU64(android.renderscript.Long4);
-    method public void addU8(short);
-    method public void addU8(android.renderscript.Short2);
-    method public void addU8(android.renderscript.Short3);
-    method public void addU8(android.renderscript.Short4);
-    method public void align(int);
-    method public final byte[] getData();
-    method public void reset();
-    method public void reset(int);
-    method public void skip(int);
-    method public boolean subBoolean();
-    method public android.renderscript.Byte2 subByte2();
-    method public android.renderscript.Byte3 subByte3();
-    method public android.renderscript.Byte4 subByte4();
-    method public android.renderscript.Double2 subDouble2();
-    method public android.renderscript.Double3 subDouble3();
-    method public android.renderscript.Double4 subDouble4();
-    method public float subF32();
-    method public double subF64();
-    method public android.renderscript.Float2 subFloat2();
-    method public android.renderscript.Float3 subFloat3();
-    method public android.renderscript.Float4 subFloat4();
-    method public short subI16();
-    method public int subI32();
-    method public long subI64();
-    method public byte subI8();
-    method public android.renderscript.Int2 subInt2();
-    method public android.renderscript.Int3 subInt3();
-    method public android.renderscript.Int4 subInt4();
-    method public android.renderscript.Long2 subLong2();
-    method public android.renderscript.Long3 subLong3();
-    method public android.renderscript.Long4 subLong4();
-    method public android.renderscript.Matrix2f subMatrix2f();
-    method public android.renderscript.Matrix3f subMatrix3f();
-    method public android.renderscript.Matrix4f subMatrix4f();
-    method public android.renderscript.Short2 subShort2();
-    method public android.renderscript.Short3 subShort3();
-    method public android.renderscript.Short4 subShort4();
-    method public void subalign(int);
-  }
-
-  public class Float2 {
-    ctor public Float2();
-    ctor public Float2(float, float);
-    field public float x;
-    field public float y;
-  }
-
-  public class Float3 {
-    ctor public Float3();
-    ctor public Float3(float, float, float);
-    field public float x;
-    field public float y;
-    field public float z;
-  }
-
-  public class Float4 {
-    ctor public Float4();
-    ctor public Float4(float, float, float, float);
-    field public float w;
-    field public float x;
-    field public float y;
-    field public float z;
-  }
-
-  public class Int2 {
-    ctor public Int2();
-    ctor public Int2(int, int);
-    field public int x;
-    field public int y;
-  }
-
-  public class Int3 {
-    ctor public Int3();
-    ctor public Int3(int, int, int);
-    field public int x;
-    field public int y;
-    field public int z;
-  }
-
-  public class Int4 {
-    ctor public Int4();
-    ctor public Int4(int, int, int, int);
-    field public int w;
-    field public int x;
-    field public int y;
-    field public int z;
-  }
-
-  public class Long2 {
-    ctor public Long2();
-    ctor public Long2(long, long);
-    field public long x;
-    field public long y;
-  }
-
-  public class Long3 {
-    ctor public Long3();
-    ctor public Long3(long, long, long);
-    field public long x;
-    field public long y;
-    field public long z;
-  }
-
-  public class Long4 {
-    ctor public Long4();
-    ctor public Long4(long, long, long, long);
-    field public long w;
-    field public long x;
-    field public long y;
-    field public long z;
-  }
-
-  public class Matrix2f {
-    ctor public Matrix2f();
-    ctor public Matrix2f(float[]);
-    method public float get(int, int);
-    method public float[] getArray();
-    method public void load(android.renderscript.Matrix2f);
-    method public void loadIdentity();
-    method public void loadMultiply(android.renderscript.Matrix2f, android.renderscript.Matrix2f);
-    method public void loadRotate(float);
-    method public void loadScale(float, float);
-    method public void multiply(android.renderscript.Matrix2f);
-    method public void rotate(float);
-    method public void scale(float, float);
-    method public void set(int, int, float);
-    method public void transpose();
-  }
-
-  public class Matrix3f {
-    ctor public Matrix3f();
-    ctor public Matrix3f(float[]);
-    method public float get(int, int);
-    method public float[] getArray();
-    method public void load(android.renderscript.Matrix3f);
-    method public void loadIdentity();
-    method public void loadMultiply(android.renderscript.Matrix3f, android.renderscript.Matrix3f);
-    method public void loadRotate(float, float, float, float);
-    method public void loadRotate(float);
-    method public void loadScale(float, float);
-    method public void loadScale(float, float, float);
-    method public void loadTranslate(float, float);
-    method public void multiply(android.renderscript.Matrix3f);
-    method public void rotate(float, float, float, float);
-    method public void rotate(float);
-    method public void scale(float, float);
-    method public void scale(float, float, float);
-    method public void set(int, int, float);
-    method public void translate(float, float);
-    method public void transpose();
-  }
-
-  public class Matrix4f {
-    ctor public Matrix4f();
-    ctor public Matrix4f(float[]);
-    method public float get(int, int);
-    method public float[] getArray();
-    method public boolean inverse();
-    method public boolean inverseTranspose();
-    method public void load(android.renderscript.Matrix4f);
-    method public void loadFrustum(float, float, float, float, float, float);
-    method public void loadIdentity();
-    method public void loadMultiply(android.renderscript.Matrix4f, android.renderscript.Matrix4f);
-    method public void loadOrtho(float, float, float, float, float, float);
-    method public void loadOrthoWindow(int, int);
-    method public void loadPerspective(float, float, float, float);
-    method public void loadProjectionNormalized(int, int);
-    method public void loadRotate(float, float, float, float);
-    method public void loadScale(float, float, float);
-    method public void loadTranslate(float, float, float);
-    method public void multiply(android.renderscript.Matrix4f);
-    method public void rotate(float, float, float, float);
-    method public void scale(float, float, float);
-    method public void set(int, int, float);
-    method public void translate(float, float, float);
-    method public void transpose();
-  }
-
-  public class RSDriverException extends android.renderscript.RSRuntimeException {
-    ctor public RSDriverException(String);
-  }
-
-  public class RSIllegalArgumentException extends android.renderscript.RSRuntimeException {
-    ctor public RSIllegalArgumentException(String);
-  }
-
-  public class RSInvalidStateException extends android.renderscript.RSRuntimeException {
-    ctor public RSInvalidStateException(String);
-  }
-
-  public class RSRuntimeException extends java.lang.RuntimeException {
-    ctor public RSRuntimeException(String);
-  }
-
-  public class RenderScript {
-    method public void contextDump();
-    method public static android.renderscript.RenderScript create(android.content.Context);
-    method public static android.renderscript.RenderScript create(android.content.Context, android.renderscript.RenderScript.ContextType);
-    method public static android.renderscript.RenderScript create(android.content.Context, android.renderscript.RenderScript.ContextType, int);
-    method public static android.renderscript.RenderScript createMultiContext(android.content.Context, android.renderscript.RenderScript.ContextType, int, int);
-    method public void destroy();
-    method public void finish();
-    method public final android.content.Context getApplicationContext();
-    method public android.renderscript.RenderScript.RSErrorHandler getErrorHandler();
-    method public android.renderscript.RenderScript.RSMessageHandler getMessageHandler();
-    method public static long getMinorVersion();
-    method public static void releaseAllContexts();
-    method public void sendMessage(int, int[]);
-    method public void setErrorHandler(android.renderscript.RenderScript.RSErrorHandler);
-    method public void setMessageHandler(android.renderscript.RenderScript.RSMessageHandler);
-    method public void setPriority(android.renderscript.RenderScript.Priority);
-    field public static final int CREATE_FLAG_LOW_LATENCY = 2; // 0x2
-    field public static final int CREATE_FLAG_LOW_POWER = 4; // 0x4
-    field public static final int CREATE_FLAG_NONE = 0; // 0x0
-  }
-
-  public enum RenderScript.ContextType {
-    enum_constant public static final android.renderscript.RenderScript.ContextType DEBUG;
-    enum_constant public static final android.renderscript.RenderScript.ContextType NORMAL;
-    enum_constant public static final android.renderscript.RenderScript.ContextType PROFILE;
-  }
-
-  public enum RenderScript.Priority {
-    enum_constant public static final android.renderscript.RenderScript.Priority LOW;
-    enum_constant public static final android.renderscript.RenderScript.Priority NORMAL;
-  }
-
-  public static class RenderScript.RSErrorHandler implements java.lang.Runnable {
-    ctor public RenderScript.RSErrorHandler();
-    method public void run();
-    field protected String mErrorMessage;
-    field protected int mErrorNum;
-  }
-
-  public static class RenderScript.RSMessageHandler implements java.lang.Runnable {
-    ctor public RenderScript.RSMessageHandler();
-    method public void run();
-    field protected int[] mData;
-    field protected int mID;
-    field protected int mLength;
-  }
-
-  public class Sampler extends android.renderscript.BaseObj {
-    method public static android.renderscript.Sampler CLAMP_LINEAR(android.renderscript.RenderScript);
-    method public static android.renderscript.Sampler CLAMP_LINEAR_MIP_LINEAR(android.renderscript.RenderScript);
-    method public static android.renderscript.Sampler CLAMP_NEAREST(android.renderscript.RenderScript);
-    method public static android.renderscript.Sampler MIRRORED_REPEAT_LINEAR(android.renderscript.RenderScript);
-    method public static android.renderscript.Sampler MIRRORED_REPEAT_LINEAR_MIP_LINEAR(android.renderscript.RenderScript);
-    method public static android.renderscript.Sampler MIRRORED_REPEAT_NEAREST(android.renderscript.RenderScript);
-    method public static android.renderscript.Sampler WRAP_LINEAR(android.renderscript.RenderScript);
-    method public static android.renderscript.Sampler WRAP_LINEAR_MIP_LINEAR(android.renderscript.RenderScript);
-    method public static android.renderscript.Sampler WRAP_NEAREST(android.renderscript.RenderScript);
-    method public float getAnisotropy();
-    method public android.renderscript.Sampler.Value getMagnification();
-    method public android.renderscript.Sampler.Value getMinification();
-    method public android.renderscript.Sampler.Value getWrapS();
-    method public android.renderscript.Sampler.Value getWrapT();
-  }
-
-  public static class Sampler.Builder {
-    ctor public Sampler.Builder(android.renderscript.RenderScript);
-    method public android.renderscript.Sampler create();
-    method public void setAnisotropy(float);
-    method public void setMagnification(android.renderscript.Sampler.Value);
-    method public void setMinification(android.renderscript.Sampler.Value);
-    method public void setWrapS(android.renderscript.Sampler.Value);
-    method public void setWrapT(android.renderscript.Sampler.Value);
-  }
-
-  public enum Sampler.Value {
-    enum_constant public static final android.renderscript.Sampler.Value CLAMP;
-    enum_constant public static final android.renderscript.Sampler.Value LINEAR;
-    enum_constant public static final android.renderscript.Sampler.Value LINEAR_MIP_LINEAR;
-    enum_constant public static final android.renderscript.Sampler.Value LINEAR_MIP_NEAREST;
-    enum_constant public static final android.renderscript.Sampler.Value MIRRORED_REPEAT;
-    enum_constant public static final android.renderscript.Sampler.Value NEAREST;
-    enum_constant public static final android.renderscript.Sampler.Value WRAP;
-  }
-
-  public class Script extends android.renderscript.BaseObj {
-    method public void bindAllocation(android.renderscript.Allocation, int);
-    method protected android.renderscript.Script.FieldID createFieldID(int, android.renderscript.Element);
-    method protected android.renderscript.Script.InvokeID createInvokeID(int);
-    method protected android.renderscript.Script.KernelID createKernelID(int, int, android.renderscript.Element, android.renderscript.Element);
-    method protected void forEach(int, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.FieldPacker);
-    method protected void forEach(int, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.FieldPacker, android.renderscript.Script.LaunchOptions);
-    method protected void forEach(int, android.renderscript.Allocation[], android.renderscript.Allocation, android.renderscript.FieldPacker);
-    method protected void forEach(int, android.renderscript.Allocation[], android.renderscript.Allocation, android.renderscript.FieldPacker, android.renderscript.Script.LaunchOptions);
-    method public boolean getVarB(int);
-    method public double getVarD(int);
-    method public float getVarF(int);
-    method public int getVarI(int);
-    method public long getVarJ(int);
-    method public void getVarV(int, android.renderscript.FieldPacker);
-    method protected void invoke(int);
-    method protected void invoke(int, android.renderscript.FieldPacker);
-    method protected void reduce(int, android.renderscript.Allocation[], android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void setTimeZone(String);
-    method public void setVar(int, float);
-    method public void setVar(int, double);
-    method public void setVar(int, int);
-    method public void setVar(int, long);
-    method public void setVar(int, boolean);
-    method public void setVar(int, android.renderscript.BaseObj);
-    method public void setVar(int, android.renderscript.FieldPacker);
-    method public void setVar(int, android.renderscript.FieldPacker, android.renderscript.Element, int[]);
-  }
-
-  public static class Script.Builder {
-  }
-
-  public static class Script.FieldBase {
-    ctor protected Script.FieldBase();
-    method public android.renderscript.Allocation getAllocation();
-    method public android.renderscript.Element getElement();
-    method public android.renderscript.Type getType();
-    method protected void init(android.renderscript.RenderScript, int);
-    method protected void init(android.renderscript.RenderScript, int, int);
-    method public void updateAllocation();
-    field protected android.renderscript.Allocation mAllocation;
-    field protected android.renderscript.Element mElement;
-  }
-
-  public static final class Script.FieldID extends android.renderscript.BaseObj {
-  }
-
-  public static final class Script.InvokeID extends android.renderscript.BaseObj {
-  }
-
-  public static final class Script.KernelID extends android.renderscript.BaseObj {
-  }
-
-  public static final class Script.LaunchOptions {
-    ctor public Script.LaunchOptions();
-    method public int getXEnd();
-    method public int getXStart();
-    method public int getYEnd();
-    method public int getYStart();
-    method public int getZEnd();
-    method public int getZStart();
-    method public android.renderscript.Script.LaunchOptions setX(int, int);
-    method public android.renderscript.Script.LaunchOptions setY(int, int);
-    method public android.renderscript.Script.LaunchOptions setZ(int, int);
-  }
-
-  public class ScriptC extends android.renderscript.Script {
-    ctor protected ScriptC(int, android.renderscript.RenderScript);
-    ctor protected ScriptC(long, android.renderscript.RenderScript);
-    ctor protected ScriptC(android.renderscript.RenderScript, android.content.res.Resources, int);
-    ctor protected ScriptC(android.renderscript.RenderScript, String, byte[], byte[]);
-  }
-
-  public final class ScriptGroup extends android.renderscript.BaseObj {
-    method public Object[] execute(java.lang.Object...);
-    method @Deprecated public void execute();
-    method @Deprecated public void setInput(android.renderscript.Script.KernelID, android.renderscript.Allocation);
-    method @Deprecated public void setOutput(android.renderscript.Script.KernelID, android.renderscript.Allocation);
-  }
-
-  public static final class ScriptGroup.Binding {
-    ctor public ScriptGroup.Binding(android.renderscript.Script.FieldID, Object);
-  }
-
-  @Deprecated public static final class ScriptGroup.Builder {
-    ctor @Deprecated public ScriptGroup.Builder(android.renderscript.RenderScript);
-    method @Deprecated public android.renderscript.ScriptGroup.Builder addConnection(android.renderscript.Type, android.renderscript.Script.KernelID, android.renderscript.Script.FieldID);
-    method @Deprecated public android.renderscript.ScriptGroup.Builder addConnection(android.renderscript.Type, android.renderscript.Script.KernelID, android.renderscript.Script.KernelID);
-    method @Deprecated public android.renderscript.ScriptGroup.Builder addKernel(android.renderscript.Script.KernelID);
-    method @Deprecated public android.renderscript.ScriptGroup create();
-  }
-
-  public static final class ScriptGroup.Builder2 {
-    ctor public ScriptGroup.Builder2(android.renderscript.RenderScript);
-    method public android.renderscript.ScriptGroup.Input addInput();
-    method public android.renderscript.ScriptGroup.Closure addInvoke(android.renderscript.Script.InvokeID, java.lang.Object...);
-    method public android.renderscript.ScriptGroup.Closure addKernel(android.renderscript.Script.KernelID, android.renderscript.Type, java.lang.Object...);
-    method public android.renderscript.ScriptGroup create(String, android.renderscript.ScriptGroup.Future...);
-  }
-
-  public static final class ScriptGroup.Closure extends android.renderscript.BaseObj {
-    method public android.renderscript.ScriptGroup.Future getGlobal(android.renderscript.Script.FieldID);
-    method public android.renderscript.ScriptGroup.Future getReturn();
-  }
-
-  public static final class ScriptGroup.Future {
-  }
-
-  public static final class ScriptGroup.Input {
-  }
-
-  public abstract class ScriptIntrinsic extends android.renderscript.Script {
-  }
-
-  public final class ScriptIntrinsic3DLUT extends android.renderscript.ScriptIntrinsic {
-    method public static android.renderscript.ScriptIntrinsic3DLUT create(android.renderscript.RenderScript, android.renderscript.Element);
-    method public void forEach(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEach(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public android.renderscript.Script.KernelID getKernelID();
-    method public void setLUT(android.renderscript.Allocation);
-  }
-
-  public final class ScriptIntrinsicBLAS extends android.renderscript.ScriptIntrinsic {
-    method public void BNNM(android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation, int, int);
-    method public void CGBMV(int, int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Float2, android.renderscript.Allocation, int);
-    method public void CGEMM(int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Float2, android.renderscript.Allocation);
-    method public void CGEMV(int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Float2, android.renderscript.Allocation, int);
-    method public void CGERC(android.renderscript.Float2, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void CGERU(android.renderscript.Float2, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void CHBMV(int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Float2, android.renderscript.Allocation, int);
-    method public void CHEMM(int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Float2, android.renderscript.Allocation);
-    method public void CHEMV(int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Float2, android.renderscript.Allocation, int);
-    method public void CHER(int, float, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void CHER2(int, android.renderscript.Float2, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void CHER2K(int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, float, android.renderscript.Allocation);
-    method public void CHERK(int, int, float, android.renderscript.Allocation, float, android.renderscript.Allocation);
-    method public void CHPMV(int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Float2, android.renderscript.Allocation, int);
-    method public void CHPR(int, float, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void CHPR2(int, android.renderscript.Float2, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void CSYMM(int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Float2, android.renderscript.Allocation);
-    method public void CSYR2K(int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Float2, android.renderscript.Allocation);
-    method public void CSYRK(int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Float2, android.renderscript.Allocation);
-    method public void CTBMV(int, int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void CTBSV(int, int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void CTPMV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void CTPSV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void CTRMM(int, int, int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void CTRMV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void CTRSM(int, int, int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void CTRSV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void DGBMV(int, int, int, double, android.renderscript.Allocation, android.renderscript.Allocation, int, double, android.renderscript.Allocation, int);
-    method public void DGEMM(int, int, double, android.renderscript.Allocation, android.renderscript.Allocation, double, android.renderscript.Allocation);
-    method public void DGEMV(int, double, android.renderscript.Allocation, android.renderscript.Allocation, int, double, android.renderscript.Allocation, int);
-    method public void DGER(double, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void DSBMV(int, int, double, android.renderscript.Allocation, android.renderscript.Allocation, int, double, android.renderscript.Allocation, int);
-    method public void DSPMV(int, double, android.renderscript.Allocation, android.renderscript.Allocation, int, double, android.renderscript.Allocation, int);
-    method public void DSPR(int, double, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void DSPR2(int, double, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void DSYMM(int, int, double, android.renderscript.Allocation, android.renderscript.Allocation, double, android.renderscript.Allocation);
-    method public void DSYMV(int, double, android.renderscript.Allocation, android.renderscript.Allocation, int, double, android.renderscript.Allocation, int);
-    method public void DSYR(int, double, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void DSYR2(int, double, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void DSYR2K(int, int, double, android.renderscript.Allocation, android.renderscript.Allocation, double, android.renderscript.Allocation);
-    method public void DSYRK(int, int, double, android.renderscript.Allocation, double, android.renderscript.Allocation);
-    method public void DTBMV(int, int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void DTBSV(int, int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void DTPMV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void DTPSV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void DTRMM(int, int, int, int, double, android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void DTRMV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void DTRSM(int, int, int, int, double, android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void DTRSV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void SGBMV(int, int, int, float, android.renderscript.Allocation, android.renderscript.Allocation, int, float, android.renderscript.Allocation, int);
-    method public void SGEMM(int, int, float, android.renderscript.Allocation, android.renderscript.Allocation, float, android.renderscript.Allocation);
-    method public void SGEMV(int, float, android.renderscript.Allocation, android.renderscript.Allocation, int, float, android.renderscript.Allocation, int);
-    method public void SGER(float, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void SSBMV(int, int, float, android.renderscript.Allocation, android.renderscript.Allocation, int, float, android.renderscript.Allocation, int);
-    method public void SSPMV(int, float, android.renderscript.Allocation, android.renderscript.Allocation, int, float, android.renderscript.Allocation, int);
-    method public void SSPR(int, float, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void SSPR2(int, float, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void SSYMM(int, int, float, android.renderscript.Allocation, android.renderscript.Allocation, float, android.renderscript.Allocation);
-    method public void SSYMV(int, float, android.renderscript.Allocation, android.renderscript.Allocation, int, float, android.renderscript.Allocation, int);
-    method public void SSYR(int, float, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void SSYR2(int, float, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void SSYR2K(int, int, float, android.renderscript.Allocation, android.renderscript.Allocation, float, android.renderscript.Allocation);
-    method public void SSYRK(int, int, float, android.renderscript.Allocation, float, android.renderscript.Allocation);
-    method public void STBMV(int, int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void STBSV(int, int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void STPMV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void STPSV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void STRMM(int, int, int, int, float, android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void STRMV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void STRSM(int, int, int, int, float, android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void STRSV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void ZGBMV(int, int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Double2, android.renderscript.Allocation, int);
-    method public void ZGEMM(int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Double2, android.renderscript.Allocation);
-    method public void ZGEMV(int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Double2, android.renderscript.Allocation, int);
-    method public void ZGERC(android.renderscript.Double2, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void ZGERU(android.renderscript.Double2, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void ZHBMV(int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Double2, android.renderscript.Allocation, int);
-    method public void ZHEMM(int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Double2, android.renderscript.Allocation);
-    method public void ZHEMV(int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Double2, android.renderscript.Allocation, int);
-    method public void ZHER(int, double, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void ZHER2(int, android.renderscript.Double2, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void ZHER2K(int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, double, android.renderscript.Allocation);
-    method public void ZHERK(int, int, double, android.renderscript.Allocation, double, android.renderscript.Allocation);
-    method public void ZHPMV(int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Double2, android.renderscript.Allocation, int);
-    method public void ZHPR(int, double, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void ZHPR2(int, android.renderscript.Double2, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void ZSYMM(int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Double2, android.renderscript.Allocation);
-    method public void ZSYR2K(int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Double2, android.renderscript.Allocation);
-    method public void ZSYRK(int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Double2, android.renderscript.Allocation);
-    method public void ZTBMV(int, int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void ZTBSV(int, int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void ZTPMV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void ZTPSV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void ZTRMM(int, int, int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void ZTRMV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void ZTRSM(int, int, int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void ZTRSV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public static android.renderscript.ScriptIntrinsicBLAS create(android.renderscript.RenderScript);
-    field public static final int CONJ_TRANSPOSE = 113; // 0x71
-    field public static final int LEFT = 141; // 0x8d
-    field public static final int LOWER = 122; // 0x7a
-    field public static final int NON_UNIT = 131; // 0x83
-    field public static final int NO_TRANSPOSE = 111; // 0x6f
-    field public static final int RIGHT = 142; // 0x8e
-    field public static final int TRANSPOSE = 112; // 0x70
-    field public static final int UNIT = 132; // 0x84
-    field public static final int UPPER = 121; // 0x79
-  }
-
-  public class ScriptIntrinsicBlend extends android.renderscript.ScriptIntrinsic {
-    method public static android.renderscript.ScriptIntrinsicBlend create(android.renderscript.RenderScript, android.renderscript.Element);
-    method public void forEachAdd(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachAdd(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachClear(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachClear(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachDst(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachDst(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachDstAtop(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachDstAtop(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachDstIn(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachDstIn(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachDstOut(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachDstOut(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachDstOver(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachDstOver(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachMultiply(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachMultiply(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachSrc(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachSrc(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachSrcAtop(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachSrcAtop(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachSrcIn(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachSrcIn(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachSrcOut(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachSrcOut(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachSrcOver(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachSrcOver(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachSubtract(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachSubtract(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachXor(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachXor(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public android.renderscript.Script.KernelID getKernelIDAdd();
-    method public android.renderscript.Script.KernelID getKernelIDClear();
-    method public android.renderscript.Script.KernelID getKernelIDDst();
-    method public android.renderscript.Script.KernelID getKernelIDDstAtop();
-    method public android.renderscript.Script.KernelID getKernelIDDstIn();
-    method public android.renderscript.Script.KernelID getKernelIDDstOut();
-    method public android.renderscript.Script.KernelID getKernelIDDstOver();
-    method public android.renderscript.Script.KernelID getKernelIDMultiply();
-    method public android.renderscript.Script.KernelID getKernelIDSrc();
-    method public android.renderscript.Script.KernelID getKernelIDSrcAtop();
-    method public android.renderscript.Script.KernelID getKernelIDSrcIn();
-    method public android.renderscript.Script.KernelID getKernelIDSrcOut();
-    method public android.renderscript.Script.KernelID getKernelIDSrcOver();
-    method public android.renderscript.Script.KernelID getKernelIDSubtract();
-    method public android.renderscript.Script.KernelID getKernelIDXor();
-  }
-
-  public final class ScriptIntrinsicBlur extends android.renderscript.ScriptIntrinsic {
-    method public static android.renderscript.ScriptIntrinsicBlur create(android.renderscript.RenderScript, android.renderscript.Element);
-    method public void forEach(android.renderscript.Allocation);
-    method public void forEach(android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public android.renderscript.Script.FieldID getFieldID_Input();
-    method public android.renderscript.Script.KernelID getKernelID();
-    method public void setInput(android.renderscript.Allocation);
-    method public void setRadius(float);
-  }
-
-  public final class ScriptIntrinsicColorMatrix extends android.renderscript.ScriptIntrinsic {
-    method @Deprecated public static android.renderscript.ScriptIntrinsicColorMatrix create(android.renderscript.RenderScript, android.renderscript.Element);
-    method public static android.renderscript.ScriptIntrinsicColorMatrix create(android.renderscript.RenderScript);
-    method public void forEach(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEach(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public android.renderscript.Script.KernelID getKernelID();
-    method public void setAdd(android.renderscript.Float4);
-    method public void setAdd(float, float, float, float);
-    method public void setColorMatrix(android.renderscript.Matrix4f);
-    method public void setColorMatrix(android.renderscript.Matrix3f);
-    method public void setGreyscale();
-    method public void setRGBtoYUV();
-    method public void setYUVtoRGB();
-  }
-
-  public final class ScriptIntrinsicConvolve3x3 extends android.renderscript.ScriptIntrinsic {
-    method public static android.renderscript.ScriptIntrinsicConvolve3x3 create(android.renderscript.RenderScript, android.renderscript.Element);
-    method public void forEach(android.renderscript.Allocation);
-    method public void forEach(android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public android.renderscript.Script.FieldID getFieldID_Input();
-    method public android.renderscript.Script.KernelID getKernelID();
-    method public void setCoefficients(float[]);
-    method public void setInput(android.renderscript.Allocation);
-  }
-
-  public final class ScriptIntrinsicConvolve5x5 extends android.renderscript.ScriptIntrinsic {
-    method public static android.renderscript.ScriptIntrinsicConvolve5x5 create(android.renderscript.RenderScript, android.renderscript.Element);
-    method public void forEach(android.renderscript.Allocation);
-    method public void forEach(android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public android.renderscript.Script.FieldID getFieldID_Input();
-    method public android.renderscript.Script.KernelID getKernelID();
-    method public void setCoefficients(float[]);
-    method public void setInput(android.renderscript.Allocation);
-  }
-
-  public final class ScriptIntrinsicHistogram extends android.renderscript.ScriptIntrinsic {
-    method public static android.renderscript.ScriptIntrinsicHistogram create(android.renderscript.RenderScript, android.renderscript.Element);
-    method public void forEach(android.renderscript.Allocation);
-    method public void forEach(android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEach_Dot(android.renderscript.Allocation);
-    method public void forEach_Dot(android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public android.renderscript.Script.FieldID getFieldID_Input();
-    method public android.renderscript.Script.KernelID getKernelID_Separate();
-    method public void setDotCoefficients(float, float, float, float);
-    method public void setOutput(android.renderscript.Allocation);
-  }
-
-  public final class ScriptIntrinsicLUT extends android.renderscript.ScriptIntrinsic {
-    method public static android.renderscript.ScriptIntrinsicLUT create(android.renderscript.RenderScript, android.renderscript.Element);
-    method public void forEach(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEach(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public android.renderscript.Script.KernelID getKernelID();
-    method public void setAlpha(int, int);
-    method public void setBlue(int, int);
-    method public void setGreen(int, int);
-    method public void setRed(int, int);
-  }
-
-  public final class ScriptIntrinsicResize extends android.renderscript.ScriptIntrinsic {
-    method public static android.renderscript.ScriptIntrinsicResize create(android.renderscript.RenderScript);
-    method public void forEach_bicubic(android.renderscript.Allocation);
-    method public void forEach_bicubic(android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public android.renderscript.Script.FieldID getFieldID_Input();
-    method public android.renderscript.Script.KernelID getKernelID_bicubic();
-    method public void setInput(android.renderscript.Allocation);
-  }
-
-  public final class ScriptIntrinsicYuvToRGB extends android.renderscript.ScriptIntrinsic {
-    method public static android.renderscript.ScriptIntrinsicYuvToRGB create(android.renderscript.RenderScript, android.renderscript.Element);
-    method public void forEach(android.renderscript.Allocation);
-    method public android.renderscript.Script.FieldID getFieldID_Input();
-    method public android.renderscript.Script.KernelID getKernelID();
-    method public void setInput(android.renderscript.Allocation);
-  }
-
-  public class Short2 {
-    ctor public Short2();
-    ctor public Short2(short, short);
-    field public short x;
-    field public short y;
-  }
-
-  public class Short3 {
-    ctor public Short3();
-    ctor public Short3(short, short, short);
-    field public short x;
-    field public short y;
-    field public short z;
-  }
-
-  public class Short4 {
-    ctor public Short4();
-    ctor public Short4(short, short, short, short);
-    field public short w;
-    field public short x;
-    field public short y;
-    field public short z;
-  }
-
-  public class Type extends android.renderscript.BaseObj {
-    method public static android.renderscript.Type createX(android.renderscript.RenderScript, android.renderscript.Element, int);
-    method public static android.renderscript.Type createXY(android.renderscript.RenderScript, android.renderscript.Element, int, int);
-    method public static android.renderscript.Type createXYZ(android.renderscript.RenderScript, android.renderscript.Element, int, int, int);
-    method public int getCount();
-    method public android.renderscript.Element getElement();
-    method public int getX();
-    method public int getY();
-    method public int getYuv();
-    method public int getZ();
-    method public boolean hasFaces();
-    method public boolean hasMipmaps();
-  }
-
-  public static class Type.Builder {
-    ctor public Type.Builder(android.renderscript.RenderScript, android.renderscript.Element);
-    method public android.renderscript.Type create();
-    method public android.renderscript.Type.Builder setFaces(boolean);
-    method public android.renderscript.Type.Builder setMipmaps(boolean);
-    method public android.renderscript.Type.Builder setX(int);
-    method public android.renderscript.Type.Builder setY(int);
-    method public android.renderscript.Type.Builder setYuvFormat(int);
-    method public android.renderscript.Type.Builder setZ(int);
-  }
-
-  public enum Type.CubemapFace {
-    enum_constant public static final android.renderscript.Type.CubemapFace NEGATIVE_X;
-    enum_constant public static final android.renderscript.Type.CubemapFace NEGATIVE_Y;
-    enum_constant public static final android.renderscript.Type.CubemapFace NEGATIVE_Z;
-    enum_constant public static final android.renderscript.Type.CubemapFace POSITIVE_X;
-    enum_constant public static final android.renderscript.Type.CubemapFace POSITIVE_Y;
-    enum_constant public static final android.renderscript.Type.CubemapFace POSITIVE_Z;
-    enum_constant @Deprecated public static final android.renderscript.Type.CubemapFace POSITVE_X;
-    enum_constant @Deprecated public static final android.renderscript.Type.CubemapFace POSITVE_Y;
-    enum_constant @Deprecated public static final android.renderscript.Type.CubemapFace POSITVE_Z;
-  }
-
-}
-
-package android.sax {
-
-  public class Element {
-    method public android.sax.Element getChild(String);
-    method public android.sax.Element getChild(String, String);
-    method public android.sax.Element requireChild(String);
-    method public android.sax.Element requireChild(String, String);
-    method public void setElementListener(android.sax.ElementListener);
-    method public void setEndElementListener(android.sax.EndElementListener);
-    method public void setEndTextElementListener(android.sax.EndTextElementListener);
-    method public void setStartElementListener(android.sax.StartElementListener);
-    method public void setTextElementListener(android.sax.TextElementListener);
-  }
-
-  public interface ElementListener extends android.sax.StartElementListener android.sax.EndElementListener {
-  }
-
-  public interface EndElementListener {
-    method public void end();
-  }
-
-  public interface EndTextElementListener {
-    method public void end(String);
-  }
-
-  public class RootElement extends android.sax.Element {
-    ctor public RootElement(String, String);
-    ctor public RootElement(String);
-    method public org.xml.sax.ContentHandler getContentHandler();
-  }
-
-  public interface StartElementListener {
-    method public void start(org.xml.sax.Attributes);
-  }
-
-  public interface TextElementListener extends android.sax.StartElementListener android.sax.EndTextElementListener {
-  }
-
-}
-
-package android.se.omapi {
-
-  public final class Channel implements java.nio.channels.Channel {
-    method public void close();
-    method @Nullable public byte[] getSelectResponse();
-    method @NonNull public android.se.omapi.Session getSession();
-    method public boolean isBasicChannel();
-    method public boolean isOpen();
-    method public boolean selectNext() throws java.io.IOException;
-    method @NonNull public byte[] transmit(@NonNull byte[]) throws java.io.IOException;
-  }
-
-  public final class Reader {
-    method public void closeSessions();
-    method @NonNull public String getName();
-    method @NonNull public android.se.omapi.SEService getSEService();
-    method public boolean isSecureElementPresent();
-    method @NonNull public android.se.omapi.Session openSession() throws java.io.IOException;
-  }
-
-  public final class SEService {
-    ctor public SEService(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, @NonNull android.se.omapi.SEService.OnConnectedListener);
-    method @NonNull public android.se.omapi.Reader[] getReaders();
-    method @NonNull public android.se.omapi.Reader getUiccReader(int);
-    method @NonNull public String getVersion();
-    method public boolean isConnected();
-    method public void shutdown();
-  }
-
-  public static interface SEService.OnConnectedListener {
-    method public void onConnected();
-  }
-
-  public final class Session {
-    method public void close();
-    method public void closeChannels();
-    method @Nullable public byte[] getATR();
-    method @NonNull public android.se.omapi.Reader getReader();
-    method public boolean isClosed();
-    method @Nullable public android.se.omapi.Channel openBasicChannel(@Nullable byte[], @Nullable byte) throws java.io.IOException;
-    method @Nullable public android.se.omapi.Channel openBasicChannel(@Nullable byte[]) throws java.io.IOException;
-    method @Nullable public android.se.omapi.Channel openLogicalChannel(@Nullable byte[], @Nullable byte) throws java.io.IOException;
-    method @Nullable public android.se.omapi.Channel openLogicalChannel(@Nullable byte[]) throws java.io.IOException;
-  }
-
-}
-
-package android.security {
-
-  public final class AttestedKeyPair {
-    ctor public AttestedKeyPair(@Nullable java.security.KeyPair, @NonNull java.util.List<java.security.cert.Certificate>);
-    method @NonNull public java.util.List<java.security.cert.Certificate> getAttestationRecord();
-    method @Nullable public java.security.KeyPair getKeyPair();
-  }
-
-  public class ConfirmationAlreadyPresentingException extends java.lang.Exception {
-    ctor public ConfirmationAlreadyPresentingException();
-    ctor public ConfirmationAlreadyPresentingException(String);
-  }
-
-  public abstract class ConfirmationCallback {
-    ctor public ConfirmationCallback();
-    method public void onCanceled();
-    method public void onConfirmed(@NonNull byte[]);
-    method public void onDismissed();
-    method public void onError(Throwable);
-  }
-
-  public class ConfirmationNotAvailableException extends java.lang.Exception {
-    ctor public ConfirmationNotAvailableException();
-    ctor public ConfirmationNotAvailableException(String);
-  }
-
-  public class ConfirmationPrompt {
-    method public void cancelPrompt();
-    method public static boolean isSupported(android.content.Context);
-    method public void presentPrompt(@NonNull java.util.concurrent.Executor, @NonNull android.security.ConfirmationCallback) throws android.security.ConfirmationAlreadyPresentingException, android.security.ConfirmationNotAvailableException;
-  }
-
-  public static final class ConfirmationPrompt.Builder {
-    ctor public ConfirmationPrompt.Builder(android.content.Context);
-    method public android.security.ConfirmationPrompt build();
-    method public android.security.ConfirmationPrompt.Builder setExtraData(byte[]);
-    method public android.security.ConfirmationPrompt.Builder setPromptText(CharSequence);
-  }
-
-  public final class FileIntegrityManager {
-    method public boolean isApkVeritySupported();
-    method @RequiresPermission(anyOf={android.Manifest.permission.INSTALL_PACKAGES, android.Manifest.permission.REQUEST_INSTALL_PACKAGES}) public boolean isAppSourceCertificateTrusted(@NonNull java.security.cert.X509Certificate) throws java.security.cert.CertificateEncodingException;
-  }
-
-  public final class KeyChain {
-    ctor public KeyChain();
-    method public static void choosePrivateKeyAlias(@NonNull android.app.Activity, @NonNull android.security.KeyChainAliasCallback, @Nullable String[], @Nullable java.security.Principal[], @Nullable String, int, @Nullable String);
-    method public static void choosePrivateKeyAlias(@NonNull android.app.Activity, @NonNull android.security.KeyChainAliasCallback, @Nullable String[], @Nullable java.security.Principal[], @Nullable android.net.Uri, @Nullable String);
-    method @NonNull public static android.content.Intent createInstallIntent();
-    method @Nullable @WorkerThread public static java.security.cert.X509Certificate[] getCertificateChain(@NonNull android.content.Context, @NonNull String) throws java.lang.InterruptedException, android.security.KeyChainException;
-    method @Nullable @WorkerThread public static java.security.PrivateKey getPrivateKey(@NonNull android.content.Context, @NonNull String) throws java.lang.InterruptedException, android.security.KeyChainException;
-    method @Deprecated public static boolean isBoundKeyAlgorithm(@NonNull String);
-    method public static boolean isKeyAlgorithmSupported(@NonNull String);
-    field public static final String ACTION_KEYCHAIN_CHANGED = "android.security.action.KEYCHAIN_CHANGED";
-    field public static final String ACTION_KEY_ACCESS_CHANGED = "android.security.action.KEY_ACCESS_CHANGED";
-    field @Deprecated public static final String ACTION_STORAGE_CHANGED = "android.security.STORAGE_CHANGED";
-    field public static final String ACTION_TRUST_STORE_CHANGED = "android.security.action.TRUST_STORE_CHANGED";
-    field public static final String EXTRA_CERTIFICATE = "CERT";
-    field public static final String EXTRA_KEY_ACCESSIBLE = "android.security.extra.KEY_ACCESSIBLE";
-    field public static final String EXTRA_KEY_ALIAS = "android.security.extra.KEY_ALIAS";
-    field public static final String EXTRA_NAME = "name";
-    field public static final String EXTRA_PKCS12 = "PKCS12";
-    field public static final String KEY_ALIAS_SELECTION_DENIED = "android:alias-selection-denied";
-  }
-
-  public interface KeyChainAliasCallback {
-    method public void alias(@Nullable String);
-  }
-
-  public class KeyChainException extends java.lang.Exception {
-    ctor public KeyChainException();
-    ctor public KeyChainException(String);
-    ctor public KeyChainException(String, Throwable);
-    ctor public KeyChainException(Throwable);
-  }
-
-  @Deprecated public final class KeyPairGeneratorSpec implements java.security.spec.AlgorithmParameterSpec {
-    method @Deprecated @NonNull public java.security.spec.AlgorithmParameterSpec getAlgorithmParameterSpec();
-    method @Deprecated public android.content.Context getContext();
-    method @Deprecated @NonNull public java.util.Date getEndDate();
-    method @Deprecated public int getKeySize();
-    method @Deprecated @Nullable public String getKeyType();
-    method @Deprecated public String getKeystoreAlias();
-    method @Deprecated @NonNull public java.math.BigInteger getSerialNumber();
-    method @Deprecated @NonNull public java.util.Date getStartDate();
-    method @Deprecated @NonNull public javax.security.auth.x500.X500Principal getSubjectDN();
-    method @Deprecated public boolean isEncryptionRequired();
-  }
-
-  @Deprecated public static final class KeyPairGeneratorSpec.Builder {
-    ctor @Deprecated public KeyPairGeneratorSpec.Builder(@NonNull android.content.Context);
-    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec build();
-    method @Deprecated public android.security.KeyPairGeneratorSpec.Builder setAlgorithmParameterSpec(@NonNull java.security.spec.AlgorithmParameterSpec);
-    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setAlias(@NonNull String);
-    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setEncryptionRequired();
-    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setEndDate(@NonNull java.util.Date);
-    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setKeySize(int);
-    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setKeyType(@NonNull String) throws java.security.NoSuchAlgorithmException;
-    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setSerialNumber(@NonNull java.math.BigInteger);
-    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setStartDate(@NonNull java.util.Date);
-    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setSubject(@NonNull javax.security.auth.x500.X500Principal);
-  }
-
-  @Deprecated public final class KeyStoreParameter implements java.security.KeyStore.ProtectionParameter {
-    method @Deprecated public boolean isEncryptionRequired();
-  }
-
-  @Deprecated public static final class KeyStoreParameter.Builder {
-    ctor @Deprecated public KeyStoreParameter.Builder(@NonNull android.content.Context);
-    method @Deprecated @NonNull public android.security.KeyStoreParameter build();
-    method @Deprecated @NonNull public android.security.KeyStoreParameter.Builder setEncryptionRequired(boolean);
-  }
-
-  public class NetworkSecurityPolicy {
-    method public static android.security.NetworkSecurityPolicy getInstance();
-    method public boolean isCleartextTrafficPermitted();
-    method public boolean isCleartextTrafficPermitted(String);
-  }
-
-}
-
-package android.security.identity {
-
-  public class AccessControlProfile {
-  }
-
-  public static final class AccessControlProfile.Builder {
-    ctor public AccessControlProfile.Builder(@NonNull android.security.identity.AccessControlProfileId);
-    method @NonNull public android.security.identity.AccessControlProfile build();
-    method @NonNull public android.security.identity.AccessControlProfile.Builder setReaderCertificate(@NonNull java.security.cert.X509Certificate);
-    method @NonNull public android.security.identity.AccessControlProfile.Builder setUserAuthenticationRequired(boolean);
-    method @NonNull public android.security.identity.AccessControlProfile.Builder setUserAuthenticationTimeout(long);
-  }
-
-  public class AccessControlProfileId {
-    ctor public AccessControlProfileId(int);
-    method public int getId();
-  }
-
-  public class AlreadyPersonalizedException extends android.security.identity.IdentityCredentialException {
-    ctor public AlreadyPersonalizedException(@NonNull String);
-    ctor public AlreadyPersonalizedException(@NonNull String, @NonNull Throwable);
-  }
-
-  public class CipherSuiteNotSupportedException extends android.security.identity.IdentityCredentialException {
-    ctor public CipherSuiteNotSupportedException(@NonNull String);
-    ctor public CipherSuiteNotSupportedException(@NonNull String, @NonNull Throwable);
-  }
-
-  public class DocTypeNotSupportedException extends android.security.identity.IdentityCredentialException {
-    ctor public DocTypeNotSupportedException(@NonNull String);
-    ctor public DocTypeNotSupportedException(@NonNull String, @NonNull Throwable);
-  }
-
-  public class EphemeralPublicKeyNotFoundException extends android.security.identity.IdentityCredentialException {
-    ctor public EphemeralPublicKeyNotFoundException(@NonNull String);
-    ctor public EphemeralPublicKeyNotFoundException(@NonNull String, @NonNull Throwable);
-  }
-
-  public abstract class IdentityCredential {
-    method @NonNull public abstract java.security.KeyPair createEphemeralKeyPair();
-    method @NonNull public abstract byte[] decryptMessageFromReader(@NonNull byte[]) throws android.security.identity.MessageDecryptionException;
-    method @NonNull public abstract byte[] encryptMessageToReader(@NonNull byte[]);
-    method @NonNull public abstract java.util.Collection<java.security.cert.X509Certificate> getAuthKeysNeedingCertification();
-    method @NonNull public abstract int[] getAuthenticationDataUsageCount();
-    method @NonNull public abstract java.util.Collection<java.security.cert.X509Certificate> getCredentialKeyCertificateChain();
-    method @NonNull public abstract android.security.identity.ResultData getEntries(@Nullable byte[], @NonNull java.util.Map<java.lang.String,java.util.Collection<java.lang.String>>, @Nullable byte[], @Nullable byte[]) throws android.security.identity.EphemeralPublicKeyNotFoundException, android.security.identity.InvalidReaderSignatureException, android.security.identity.InvalidRequestMessageException, android.security.identity.NoAuthenticationKeyAvailableException, android.security.identity.SessionTranscriptMismatchException;
-    method public abstract void setAllowUsingExhaustedKeys(boolean);
-    method public abstract void setAvailableAuthenticationKeys(int, int);
-    method public abstract void setReaderEphemeralPublicKey(@NonNull java.security.PublicKey) throws java.security.InvalidKeyException;
-    method public abstract void storeStaticAuthenticationData(@NonNull java.security.cert.X509Certificate, @NonNull byte[]) throws android.security.identity.UnknownAuthenticationKeyException;
-  }
-
-  public class IdentityCredentialException extends java.lang.Exception {
-    ctor public IdentityCredentialException(@NonNull String);
-    ctor public IdentityCredentialException(@NonNull String, @NonNull Throwable);
-  }
-
-  public abstract class IdentityCredentialStore {
-    method @NonNull public abstract android.security.identity.WritableIdentityCredential createCredential(@NonNull String, @NonNull String) throws android.security.identity.AlreadyPersonalizedException, android.security.identity.DocTypeNotSupportedException;
-    method @Nullable public abstract byte[] deleteCredentialByName(@NonNull String);
-    method @Nullable public abstract android.security.identity.IdentityCredential getCredentialByName(@NonNull String, int) throws android.security.identity.CipherSuiteNotSupportedException;
-    method @Nullable public static android.security.identity.IdentityCredentialStore getDirectAccessInstance(@NonNull android.content.Context);
-    method @Nullable public static android.security.identity.IdentityCredentialStore getInstance(@NonNull android.content.Context);
-    method @NonNull public abstract String[] getSupportedDocTypes();
-    field public static final int CIPHERSUITE_ECDHE_HKDF_ECDSA_WITH_AES_256_GCM_SHA256 = 1; // 0x1
-  }
-
-  public class InvalidReaderSignatureException extends android.security.identity.IdentityCredentialException {
-    ctor public InvalidReaderSignatureException(@NonNull String);
-    ctor public InvalidReaderSignatureException(@NonNull String, @NonNull Throwable);
-  }
-
-  public class InvalidRequestMessageException extends android.security.identity.IdentityCredentialException {
-    ctor public InvalidRequestMessageException(@NonNull String);
-    ctor public InvalidRequestMessageException(@NonNull String, @NonNull Throwable);
-  }
-
-  public class MessageDecryptionException extends android.security.identity.IdentityCredentialException {
-    ctor public MessageDecryptionException(@NonNull String);
-    ctor public MessageDecryptionException(@NonNull String, @NonNull Throwable);
-  }
-
-  public class NoAuthenticationKeyAvailableException extends android.security.identity.IdentityCredentialException {
-    ctor public NoAuthenticationKeyAvailableException(@NonNull String);
-    ctor public NoAuthenticationKeyAvailableException(@NonNull String, @NonNull Throwable);
-  }
-
-  public class PersonalizationData {
-  }
-
-  public static final class PersonalizationData.Builder {
-    ctor public PersonalizationData.Builder();
-    method @NonNull public android.security.identity.PersonalizationData.Builder addAccessControlProfile(@NonNull android.security.identity.AccessControlProfile);
-    method @NonNull public android.security.identity.PersonalizationData build();
-    method @NonNull public android.security.identity.PersonalizationData.Builder putEntry(@NonNull String, @NonNull String, @NonNull java.util.Collection<android.security.identity.AccessControlProfileId>, @NonNull byte[]);
-  }
-
-  public abstract class ResultData {
-    method @NonNull public abstract byte[] getAuthenticatedData();
-    method @Nullable public abstract byte[] getEntry(@NonNull String, @NonNull String);
-    method @Nullable public abstract java.util.Collection<java.lang.String> getEntryNames(@NonNull String);
-    method @Nullable public abstract byte[] getMessageAuthenticationCode();
-    method @NonNull public abstract java.util.Collection<java.lang.String> getNamespaces();
-    method @Nullable public abstract java.util.Collection<java.lang.String> getRetrievedEntryNames(@NonNull String);
-    method @NonNull public abstract byte[] getStaticAuthenticationData();
-    method public abstract int getStatus(@NonNull String, @NonNull String);
-    field public static final int STATUS_NOT_IN_REQUEST_MESSAGE = 3; // 0x3
-    field public static final int STATUS_NOT_REQUESTED = 2; // 0x2
-    field public static final int STATUS_NO_ACCESS_CONTROL_PROFILES = 6; // 0x6
-    field public static final int STATUS_NO_SUCH_ENTRY = 1; // 0x1
-    field public static final int STATUS_OK = 0; // 0x0
-    field public static final int STATUS_READER_AUTHENTICATION_FAILED = 5; // 0x5
-    field public static final int STATUS_USER_AUTHENTICATION_FAILED = 4; // 0x4
-  }
-
-  public class SessionTranscriptMismatchException extends android.security.identity.IdentityCredentialException {
-    ctor public SessionTranscriptMismatchException(@NonNull String);
-    ctor public SessionTranscriptMismatchException(@NonNull String, @NonNull Throwable);
-  }
-
-  public class UnknownAuthenticationKeyException extends android.security.identity.IdentityCredentialException {
-    ctor public UnknownAuthenticationKeyException(@NonNull String);
-    ctor public UnknownAuthenticationKeyException(@NonNull String, @NonNull Throwable);
-  }
-
-  public abstract class WritableIdentityCredential {
-    method @NonNull public abstract java.util.Collection<java.security.cert.X509Certificate> getCredentialKeyCertificateChain(@NonNull byte[]);
-    method @NonNull public abstract byte[] personalize(@NonNull android.security.identity.PersonalizationData);
-  }
-
-}
-
-package android.security.keystore {
-
-  public class KeyExpiredException extends java.security.InvalidKeyException {
-    ctor public KeyExpiredException();
-    ctor public KeyExpiredException(String);
-    ctor public KeyExpiredException(String, Throwable);
-  }
-
-  public final class KeyGenParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    method @Nullable public java.security.spec.AlgorithmParameterSpec getAlgorithmParameterSpec();
-    method public byte[] getAttestationChallenge();
-    method @NonNull public String[] getBlockModes();
-    method @NonNull public java.util.Date getCertificateNotAfter();
-    method @NonNull public java.util.Date getCertificateNotBefore();
-    method @NonNull public java.math.BigInteger getCertificateSerialNumber();
-    method @NonNull public javax.security.auth.x500.X500Principal getCertificateSubject();
-    method @NonNull public String[] getDigests();
-    method @NonNull public String[] getEncryptionPaddings();
-    method public int getKeySize();
-    method @Nullable public java.util.Date getKeyValidityForConsumptionEnd();
-    method @Nullable public java.util.Date getKeyValidityForOriginationEnd();
-    method @Nullable public java.util.Date getKeyValidityStart();
-    method @NonNull public String getKeystoreAlias();
-    method public int getPurposes();
-    method @NonNull public String[] getSignaturePaddings();
-    method public int getUserAuthenticationType();
-    method public int getUserAuthenticationValidityDurationSeconds();
-    method public boolean isDevicePropertiesAttestationIncluded();
-    method @NonNull public boolean isDigestsSpecified();
-    method public boolean isInvalidatedByBiometricEnrollment();
-    method public boolean isRandomizedEncryptionRequired();
-    method public boolean isStrongBoxBacked();
-    method public boolean isUnlockedDeviceRequired();
-    method public boolean isUserAuthenticationRequired();
-    method public boolean isUserAuthenticationValidWhileOnBody();
-    method public boolean isUserConfirmationRequired();
-    method public boolean isUserPresenceRequired();
-  }
-
-  public static final class KeyGenParameterSpec.Builder {
-    ctor public KeyGenParameterSpec.Builder(@NonNull String, int);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec build();
-    method public android.security.keystore.KeyGenParameterSpec.Builder setAlgorithmParameterSpec(@NonNull java.security.spec.AlgorithmParameterSpec);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setAttestationChallenge(byte[]);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setBlockModes(java.lang.String...);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setCertificateNotAfter(@NonNull java.util.Date);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setCertificateNotBefore(@NonNull java.util.Date);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setCertificateSerialNumber(@NonNull java.math.BigInteger);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setCertificateSubject(@NonNull javax.security.auth.x500.X500Principal);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setDevicePropertiesAttestationIncluded(boolean);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setDigests(java.lang.String...);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setEncryptionPaddings(java.lang.String...);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setInvalidatedByBiometricEnrollment(boolean);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setIsStrongBoxBacked(boolean);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setKeySize(int);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setKeyValidityEnd(java.util.Date);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setKeyValidityForConsumptionEnd(java.util.Date);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setKeyValidityForOriginationEnd(java.util.Date);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setKeyValidityStart(java.util.Date);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setRandomizedEncryptionRequired(boolean);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setSignaturePaddings(java.lang.String...);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUnlockedDeviceRequired(boolean);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserAuthenticationParameters(@IntRange(from=0) int, int);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserAuthenticationRequired(boolean);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserAuthenticationValidWhileOnBody(boolean);
-    method @Deprecated @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserAuthenticationValidityDurationSeconds(@IntRange(from=0xffffffff) int);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserConfirmationRequired(boolean);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserPresenceRequired(boolean);
-  }
-
-  public class KeyInfo implements java.security.spec.KeySpec {
-    method @NonNull public String[] getBlockModes();
-    method @NonNull public String[] getDigests();
-    method @NonNull public String[] getEncryptionPaddings();
-    method public int getKeySize();
-    method @Nullable public java.util.Date getKeyValidityForConsumptionEnd();
-    method @Nullable public java.util.Date getKeyValidityForOriginationEnd();
-    method @Nullable public java.util.Date getKeyValidityStart();
-    method public String getKeystoreAlias();
-    method public int getOrigin();
-    method public int getPurposes();
-    method @NonNull public String[] getSignaturePaddings();
-    method public int getUserAuthenticationType();
-    method public int getUserAuthenticationValidityDurationSeconds();
-    method public boolean isInsideSecureHardware();
-    method public boolean isInvalidatedByBiometricEnrollment();
-    method public boolean isTrustedUserPresenceRequired();
-    method public boolean isUserAuthenticationRequired();
-    method public boolean isUserAuthenticationRequirementEnforcedBySecureHardware();
-    method public boolean isUserAuthenticationValidWhileOnBody();
-    method public boolean isUserConfirmationRequired();
-  }
-
-  public class KeyNotYetValidException extends java.security.InvalidKeyException {
-    ctor public KeyNotYetValidException();
-    ctor public KeyNotYetValidException(String);
-    ctor public KeyNotYetValidException(String, Throwable);
-  }
-
-  public class KeyPermanentlyInvalidatedException extends java.security.InvalidKeyException {
-    ctor public KeyPermanentlyInvalidatedException();
-    ctor public KeyPermanentlyInvalidatedException(String);
-    ctor public KeyPermanentlyInvalidatedException(String, Throwable);
-  }
-
-  public abstract class KeyProperties {
-    field public static final int AUTH_BIOMETRIC_STRONG = 2; // 0x2
-    field public static final int AUTH_DEVICE_CREDENTIAL = 1; // 0x1
-    field public static final String BLOCK_MODE_CBC = "CBC";
-    field public static final String BLOCK_MODE_CTR = "CTR";
-    field public static final String BLOCK_MODE_ECB = "ECB";
-    field public static final String BLOCK_MODE_GCM = "GCM";
-    field public static final String DIGEST_MD5 = "MD5";
-    field public static final String DIGEST_NONE = "NONE";
-    field public static final String DIGEST_SHA1 = "SHA-1";
-    field public static final String DIGEST_SHA224 = "SHA-224";
-    field public static final String DIGEST_SHA256 = "SHA-256";
-    field public static final String DIGEST_SHA384 = "SHA-384";
-    field public static final String DIGEST_SHA512 = "SHA-512";
-    field public static final String ENCRYPTION_PADDING_NONE = "NoPadding";
-    field public static final String ENCRYPTION_PADDING_PKCS7 = "PKCS7Padding";
-    field public static final String ENCRYPTION_PADDING_RSA_OAEP = "OAEPPadding";
-    field public static final String ENCRYPTION_PADDING_RSA_PKCS1 = "PKCS1Padding";
-    field @Deprecated public static final String KEY_ALGORITHM_3DES = "DESede";
-    field public static final String KEY_ALGORITHM_AES = "AES";
-    field public static final String KEY_ALGORITHM_EC = "EC";
-    field public static final String KEY_ALGORITHM_HMAC_SHA1 = "HmacSHA1";
-    field public static final String KEY_ALGORITHM_HMAC_SHA224 = "HmacSHA224";
-    field public static final String KEY_ALGORITHM_HMAC_SHA256 = "HmacSHA256";
-    field public static final String KEY_ALGORITHM_HMAC_SHA384 = "HmacSHA384";
-    field public static final String KEY_ALGORITHM_HMAC_SHA512 = "HmacSHA512";
-    field public static final String KEY_ALGORITHM_RSA = "RSA";
-    field public static final int ORIGIN_GENERATED = 1; // 0x1
-    field public static final int ORIGIN_IMPORTED = 2; // 0x2
-    field public static final int ORIGIN_SECURELY_IMPORTED = 8; // 0x8
-    field public static final int ORIGIN_UNKNOWN = 4; // 0x4
-    field public static final int PURPOSE_DECRYPT = 2; // 0x2
-    field public static final int PURPOSE_ENCRYPT = 1; // 0x1
-    field public static final int PURPOSE_SIGN = 4; // 0x4
-    field public static final int PURPOSE_VERIFY = 8; // 0x8
-    field public static final int PURPOSE_WRAP_KEY = 32; // 0x20
-    field public static final String SIGNATURE_PADDING_RSA_PKCS1 = "PKCS1";
-    field public static final String SIGNATURE_PADDING_RSA_PSS = "PSS";
-  }
-
-  public final class KeyProtection implements java.security.KeyStore.ProtectionParameter {
-    method @NonNull public String[] getBlockModes();
-    method @NonNull public String[] getDigests();
-    method @NonNull public String[] getEncryptionPaddings();
-    method @Nullable public java.util.Date getKeyValidityForConsumptionEnd();
-    method @Nullable public java.util.Date getKeyValidityForOriginationEnd();
-    method @Nullable public java.util.Date getKeyValidityStart();
-    method public int getPurposes();
-    method @NonNull public String[] getSignaturePaddings();
-    method public int getUserAuthenticationType();
-    method public int getUserAuthenticationValidityDurationSeconds();
-    method public boolean isDigestsSpecified();
-    method public boolean isInvalidatedByBiometricEnrollment();
-    method public boolean isRandomizedEncryptionRequired();
-    method public boolean isUnlockedDeviceRequired();
-    method public boolean isUserAuthenticationRequired();
-    method public boolean isUserAuthenticationValidWhileOnBody();
-    method public boolean isUserConfirmationRequired();
-    method public boolean isUserPresenceRequired();
-  }
-
-  public static final class KeyProtection.Builder {
-    ctor public KeyProtection.Builder(int);
-    method @NonNull public android.security.keystore.KeyProtection build();
-    method @NonNull public android.security.keystore.KeyProtection.Builder setBlockModes(java.lang.String...);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setDigests(java.lang.String...);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setEncryptionPaddings(java.lang.String...);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setInvalidatedByBiometricEnrollment(boolean);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setKeyValidityEnd(java.util.Date);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setKeyValidityForConsumptionEnd(java.util.Date);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setKeyValidityForOriginationEnd(java.util.Date);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setKeyValidityStart(java.util.Date);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setRandomizedEncryptionRequired(boolean);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setSignaturePaddings(java.lang.String...);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setUnlockedDeviceRequired(boolean);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setUserAuthenticationParameters(@IntRange(from=0) int, int);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setUserAuthenticationRequired(boolean);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setUserAuthenticationValidWhileOnBody(boolean);
-    method @Deprecated @NonNull public android.security.keystore.KeyProtection.Builder setUserAuthenticationValidityDurationSeconds(@IntRange(from=0xffffffff) int);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setUserConfirmationRequired(boolean);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setUserPresenceRequired(boolean);
-  }
-
-  public class SecureKeyImportUnavailableException extends java.security.ProviderException {
-    ctor public SecureKeyImportUnavailableException();
-    ctor public SecureKeyImportUnavailableException(String);
-    ctor public SecureKeyImportUnavailableException(String, Throwable);
-    ctor public SecureKeyImportUnavailableException(Throwable);
-  }
-
-  public class StrongBoxUnavailableException extends java.security.ProviderException {
-    ctor public StrongBoxUnavailableException();
-    ctor public StrongBoxUnavailableException(String);
-    ctor public StrongBoxUnavailableException(String, Throwable);
-    ctor public StrongBoxUnavailableException(Throwable);
-  }
-
-  public class UserNotAuthenticatedException extends java.security.InvalidKeyException {
-    ctor public UserNotAuthenticatedException();
-    ctor public UserNotAuthenticatedException(String);
-    ctor public UserNotAuthenticatedException(String, Throwable);
-  }
-
-  public class UserPresenceUnavailableException extends java.security.InvalidKeyException {
-    ctor public UserPresenceUnavailableException();
-    ctor public UserPresenceUnavailableException(String);
-    ctor public UserPresenceUnavailableException(String, Throwable);
-  }
-
-  public class WrappedKeyEntry implements java.security.KeyStore.Entry {
-    ctor public WrappedKeyEntry(byte[], String, String, java.security.spec.AlgorithmParameterSpec);
-    method public java.security.spec.AlgorithmParameterSpec getAlgorithmParameterSpec();
-    method public String getTransformation();
-    method public byte[] getWrappedKeyBytes();
-    method public String getWrappingKeyAlias();
-  }
-
-}
-
-package android.service.autofill {
-
-  public abstract class AutofillService extends android.app.Service {
-    ctor public AutofillService();
-    method @Nullable public final android.service.autofill.FillEventHistory getFillEventHistory();
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method public void onConnected();
-    method public void onDisconnected();
-    method public abstract void onFillRequest(@NonNull android.service.autofill.FillRequest, @NonNull android.os.CancellationSignal, @NonNull android.service.autofill.FillCallback);
-    method public abstract void onSaveRequest(@NonNull android.service.autofill.SaveRequest, @NonNull android.service.autofill.SaveCallback);
-    field public static final String SERVICE_INTERFACE = "android.service.autofill.AutofillService";
-    field public static final String SERVICE_META_DATA = "android.autofill";
-  }
-
-  public final class BatchUpdates implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.BatchUpdates> CREATOR;
-  }
-
-  public static class BatchUpdates.Builder {
-    ctor public BatchUpdates.Builder();
-    method public android.service.autofill.BatchUpdates build();
-    method public android.service.autofill.BatchUpdates.Builder transformChild(int, @NonNull android.service.autofill.Transformation);
-    method public android.service.autofill.BatchUpdates.Builder updateTemplate(@NonNull android.widget.RemoteViews);
-  }
-
-  public final class CharSequenceTransformation implements android.os.Parcelable android.service.autofill.Transformation {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.CharSequenceTransformation> CREATOR;
-  }
-
-  public static class CharSequenceTransformation.Builder {
-    ctor public CharSequenceTransformation.Builder(@NonNull android.view.autofill.AutofillId, @NonNull java.util.regex.Pattern, @NonNull String);
-    method public android.service.autofill.CharSequenceTransformation.Builder addField(@NonNull android.view.autofill.AutofillId, @NonNull java.util.regex.Pattern, @NonNull String);
-    method public android.service.autofill.CharSequenceTransformation build();
-  }
-
-  public final class CustomDescription implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.CustomDescription> CREATOR;
-  }
-
-  public static class CustomDescription.Builder {
-    ctor public CustomDescription.Builder(@NonNull android.widget.RemoteViews);
-    method @NonNull public android.service.autofill.CustomDescription.Builder addChild(int, @NonNull android.service.autofill.Transformation);
-    method @NonNull public android.service.autofill.CustomDescription.Builder addOnClickAction(int, @NonNull android.service.autofill.OnClickAction);
-    method @NonNull public android.service.autofill.CustomDescription.Builder batchUpdate(@NonNull android.service.autofill.Validator, @NonNull android.service.autofill.BatchUpdates);
-    method @NonNull public android.service.autofill.CustomDescription build();
-  }
-
-  public final class Dataset implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.Dataset> CREATOR;
-  }
-
-  public static final class Dataset.Builder {
-    ctor public Dataset.Builder(@NonNull android.widget.RemoteViews);
-    ctor public Dataset.Builder();
-    method @NonNull public android.service.autofill.Dataset build();
-    method @NonNull public android.service.autofill.Dataset.Builder setAuthentication(@Nullable android.content.IntentSender);
-    method @NonNull public android.service.autofill.Dataset.Builder setId(@Nullable String);
-    method @NonNull public android.service.autofill.Dataset.Builder setInlinePresentation(@NonNull android.service.autofill.InlinePresentation);
-    method @NonNull public android.service.autofill.Dataset.Builder setValue(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue);
-    method @NonNull public android.service.autofill.Dataset.Builder setValue(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue, @NonNull android.widget.RemoteViews);
-    method @NonNull public android.service.autofill.Dataset.Builder setValue(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue, @Nullable java.util.regex.Pattern);
-    method @NonNull public android.service.autofill.Dataset.Builder setValue(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue, @Nullable java.util.regex.Pattern, @NonNull android.widget.RemoteViews);
-    method @NonNull public android.service.autofill.Dataset.Builder setValue(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue, @NonNull android.widget.RemoteViews, @NonNull android.service.autofill.InlinePresentation);
-    method @NonNull public android.service.autofill.Dataset.Builder setValue(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue, @Nullable java.util.regex.Pattern, @NonNull android.widget.RemoteViews, @NonNull android.service.autofill.InlinePresentation);
-  }
-
-  public final class DateTransformation implements android.os.Parcelable android.service.autofill.Transformation {
-    ctor public DateTransformation(@NonNull android.view.autofill.AutofillId, @NonNull android.icu.text.DateFormat);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.DateTransformation> CREATOR;
-  }
-
-  public final class DateValueSanitizer implements android.os.Parcelable android.service.autofill.Sanitizer {
-    ctor public DateValueSanitizer(@NonNull android.icu.text.DateFormat);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.DateValueSanitizer> CREATOR;
-  }
-
-  public final class FieldClassification {
-    method @NonNull public java.util.List<android.service.autofill.FieldClassification.Match> getMatches();
-  }
-
-  public static final class FieldClassification.Match {
-    method @NonNull public String getCategoryId();
-    method public float getScore();
-  }
-
-  public final class FillCallback {
-    method public void onFailure(@Nullable CharSequence);
-    method public void onSuccess(@Nullable android.service.autofill.FillResponse);
-  }
-
-  public final class FillContext implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.view.autofill.AutofillId getFocusedId();
-    method public int getRequestId();
-    method @NonNull public android.app.assist.AssistStructure getStructure();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.FillContext> CREATOR;
-  }
-
-  public final class FillEventHistory implements android.os.Parcelable {
-    method public int describeContents();
-    method @Deprecated @Nullable public android.os.Bundle getClientState();
-    method @Nullable public java.util.List<android.service.autofill.FillEventHistory.Event> getEvents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.FillEventHistory> CREATOR;
-  }
-
-  public static final class FillEventHistory.Event {
-    method @NonNull public java.util.Map<android.view.autofill.AutofillId,java.lang.String> getChangedFields();
-    method @Nullable public android.os.Bundle getClientState();
-    method @Nullable public String getDatasetId();
-    method @NonNull public java.util.Map<android.view.autofill.AutofillId,android.service.autofill.FieldClassification> getFieldsClassification();
-    method @NonNull public java.util.Set<java.lang.String> getIgnoredDatasetIds();
-    method @NonNull public java.util.Map<android.view.autofill.AutofillId,java.util.Set<java.lang.String>> getManuallyEnteredField();
-    method @NonNull public java.util.Set<java.lang.String> getSelectedDatasetIds();
-    method public int getType();
-    field public static final int TYPE_AUTHENTICATION_SELECTED = 2; // 0x2
-    field public static final int TYPE_CONTEXT_COMMITTED = 4; // 0x4
-    field public static final int TYPE_DATASETS_SHOWN = 5; // 0x5
-    field public static final int TYPE_DATASET_AUTHENTICATION_SELECTED = 1; // 0x1
-    field public static final int TYPE_DATASET_SELECTED = 0; // 0x0
-    field public static final int TYPE_SAVE_SHOWN = 3; // 0x3
-  }
-
-  public final class FillRequest implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.os.Bundle getClientState();
-    method @NonNull public java.util.List<android.service.autofill.FillContext> getFillContexts();
-    method public int getFlags();
-    method public int getId();
-    method @Nullable public android.view.inputmethod.InlineSuggestionsRequest getInlineSuggestionsRequest();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.FillRequest> CREATOR;
-    field public static final int FLAG_COMPATIBILITY_MODE_REQUEST = 2; // 0x2
-    field public static final int FLAG_MANUAL_REQUEST = 1; // 0x1
-  }
-
-  public final class FillResponse implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.FillResponse> CREATOR;
-    field public static final int FLAG_DISABLE_ACTIVITY_ONLY = 2; // 0x2
-    field public static final int FLAG_TRACK_CONTEXT_COMMITED = 1; // 0x1
-  }
-
-  public static final class FillResponse.Builder {
-    ctor public FillResponse.Builder();
-    method @NonNull public android.service.autofill.FillResponse.Builder addDataset(@Nullable android.service.autofill.Dataset);
-    method @NonNull public android.service.autofill.FillResponse build();
-    method @NonNull public android.service.autofill.FillResponse.Builder disableAutofill(long);
-    method @NonNull public android.service.autofill.FillResponse.Builder setAuthentication(@NonNull android.view.autofill.AutofillId[], @Nullable android.content.IntentSender, @Nullable android.widget.RemoteViews);
-    method @NonNull public android.service.autofill.FillResponse.Builder setAuthentication(@NonNull android.view.autofill.AutofillId[], @Nullable android.content.IntentSender, @Nullable android.widget.RemoteViews, @Nullable android.service.autofill.InlinePresentation);
-    method @NonNull public android.service.autofill.FillResponse.Builder setClientState(@Nullable android.os.Bundle);
-    method @NonNull public android.service.autofill.FillResponse.Builder setFieldClassificationIds(@NonNull android.view.autofill.AutofillId...);
-    method @NonNull public android.service.autofill.FillResponse.Builder setFlags(int);
-    method @NonNull public android.service.autofill.FillResponse.Builder setFooter(@NonNull android.widget.RemoteViews);
-    method @NonNull public android.service.autofill.FillResponse.Builder setHeader(@NonNull android.widget.RemoteViews);
-    method @NonNull public android.service.autofill.FillResponse.Builder setIgnoredIds(android.view.autofill.AutofillId...);
-    method @NonNull public android.service.autofill.FillResponse.Builder setPresentationCancelIds(@Nullable int[]);
-    method @NonNull public android.service.autofill.FillResponse.Builder setSaveInfo(@NonNull android.service.autofill.SaveInfo);
-    method @NonNull public android.service.autofill.FillResponse.Builder setUserData(@NonNull android.service.autofill.UserData);
-  }
-
-  public final class ImageTransformation implements android.os.Parcelable android.service.autofill.Transformation {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.ImageTransformation> CREATOR;
-  }
-
-  public static class ImageTransformation.Builder {
-    ctor @Deprecated public ImageTransformation.Builder(@NonNull android.view.autofill.AutofillId, @NonNull java.util.regex.Pattern, @DrawableRes int);
-    ctor public ImageTransformation.Builder(@NonNull android.view.autofill.AutofillId, @NonNull java.util.regex.Pattern, @DrawableRes int, @NonNull CharSequence);
-    method @Deprecated public android.service.autofill.ImageTransformation.Builder addOption(@NonNull java.util.regex.Pattern, @DrawableRes int);
-    method public android.service.autofill.ImageTransformation.Builder addOption(@NonNull java.util.regex.Pattern, @DrawableRes int, @NonNull CharSequence);
-    method public android.service.autofill.ImageTransformation build();
-  }
-
-  public final class InlinePresentation implements android.os.Parcelable {
-    ctor public InlinePresentation(@NonNull android.app.slice.Slice, @NonNull android.widget.inline.InlinePresentationSpec, boolean);
-    method public int describeContents();
-    method @NonNull public android.widget.inline.InlinePresentationSpec getInlinePresentationSpec();
-    method @NonNull public android.app.slice.Slice getSlice();
-    method public boolean isPinned();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.InlinePresentation> CREATOR;
-  }
-
-  public final class LuhnChecksumValidator implements android.os.Parcelable android.service.autofill.Validator {
-    ctor public LuhnChecksumValidator(@NonNull android.view.autofill.AutofillId...);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.LuhnChecksumValidator> CREATOR;
-  }
-
-  public interface OnClickAction {
-  }
-
-  public final class RegexValidator implements android.os.Parcelable android.service.autofill.Validator {
-    ctor public RegexValidator(@NonNull android.view.autofill.AutofillId, @NonNull java.util.regex.Pattern);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.RegexValidator> CREATOR;
-  }
-
-  public interface Sanitizer {
-  }
-
-  public final class SaveCallback {
-    method public void onFailure(CharSequence);
-    method public void onSuccess();
-    method public void onSuccess(@NonNull android.content.IntentSender);
-  }
-
-  public final class SaveInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.SaveInfo> CREATOR;
-    field public static final int FLAG_DELAY_SAVE = 4; // 0x4
-    field public static final int FLAG_DONT_SAVE_ON_FINISH = 2; // 0x2
-    field public static final int FLAG_SAVE_ON_ALL_VIEWS_INVISIBLE = 1; // 0x1
-    field public static final int NEGATIVE_BUTTON_STYLE_CANCEL = 0; // 0x0
-    field public static final int NEGATIVE_BUTTON_STYLE_NEVER = 2; // 0x2
-    field public static final int NEGATIVE_BUTTON_STYLE_REJECT = 1; // 0x1
-    field public static final int POSITIVE_BUTTON_STYLE_CONTINUE = 1; // 0x1
-    field public static final int POSITIVE_BUTTON_STYLE_SAVE = 0; // 0x0
-    field public static final int SAVE_DATA_TYPE_ADDRESS = 2; // 0x2
-    field public static final int SAVE_DATA_TYPE_CREDIT_CARD = 4; // 0x4
-    field public static final int SAVE_DATA_TYPE_DEBIT_CARD = 32; // 0x20
-    field public static final int SAVE_DATA_TYPE_EMAIL_ADDRESS = 16; // 0x10
-    field public static final int SAVE_DATA_TYPE_GENERIC = 0; // 0x0
-    field public static final int SAVE_DATA_TYPE_GENERIC_CARD = 128; // 0x80
-    field public static final int SAVE_DATA_TYPE_PASSWORD = 1; // 0x1
-    field public static final int SAVE_DATA_TYPE_PAYMENT_CARD = 64; // 0x40
-    field public static final int SAVE_DATA_TYPE_USERNAME = 8; // 0x8
-  }
-
-  public static final class SaveInfo.Builder {
-    ctor public SaveInfo.Builder(int, @NonNull android.view.autofill.AutofillId[]);
-    ctor public SaveInfo.Builder(int);
-    method @NonNull public android.service.autofill.SaveInfo.Builder addSanitizer(@NonNull android.service.autofill.Sanitizer, @NonNull android.view.autofill.AutofillId...);
-    method public android.service.autofill.SaveInfo build();
-    method @NonNull public android.service.autofill.SaveInfo.Builder setCustomDescription(@NonNull android.service.autofill.CustomDescription);
-    method @NonNull public android.service.autofill.SaveInfo.Builder setDescription(@Nullable CharSequence);
-    method @NonNull public android.service.autofill.SaveInfo.Builder setFlags(int);
-    method @NonNull public android.service.autofill.SaveInfo.Builder setNegativeAction(int, @Nullable android.content.IntentSender);
-    method @NonNull public android.service.autofill.SaveInfo.Builder setOptionalIds(@NonNull android.view.autofill.AutofillId[]);
-    method @NonNull public android.service.autofill.SaveInfo.Builder setPositiveAction(int);
-    method @NonNull public android.service.autofill.SaveInfo.Builder setTriggerId(@NonNull android.view.autofill.AutofillId);
-    method @NonNull public android.service.autofill.SaveInfo.Builder setValidator(@NonNull android.service.autofill.Validator);
-  }
-
-  public final class SaveRequest implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.os.Bundle getClientState();
-    method @Nullable public java.util.List<java.lang.String> getDatasetIds();
-    method @NonNull public java.util.List<android.service.autofill.FillContext> getFillContexts();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.SaveRequest> CREATOR;
-  }
-
-  public final class TextValueSanitizer implements android.os.Parcelable android.service.autofill.Sanitizer {
-    ctor public TextValueSanitizer(@NonNull java.util.regex.Pattern, @NonNull String);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.TextValueSanitizer> CREATOR;
-  }
-
-  public interface Transformation {
-  }
-
-  public final class UserData implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getFieldClassificationAlgorithm();
-    method @Nullable public String getFieldClassificationAlgorithmForCategory(@NonNull String);
-    method public String getId();
-    method public static int getMaxCategoryCount();
-    method public static int getMaxFieldClassificationIdsSize();
-    method public static int getMaxUserDataSize();
-    method public static int getMaxValueLength();
-    method public static int getMinValueLength();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.UserData> CREATOR;
-  }
-
-  public static final class UserData.Builder {
-    ctor public UserData.Builder(@NonNull String, @NonNull String, @NonNull String);
-    method @NonNull public android.service.autofill.UserData.Builder add(@NonNull String, @NonNull String);
-    method @NonNull public android.service.autofill.UserData build();
-    method @NonNull public android.service.autofill.UserData.Builder setFieldClassificationAlgorithm(@Nullable String, @Nullable android.os.Bundle);
-    method @NonNull public android.service.autofill.UserData.Builder setFieldClassificationAlgorithmForCategory(@NonNull String, @Nullable String, @Nullable android.os.Bundle);
-  }
-
-  public interface Validator {
-  }
-
-  public final class Validators {
-    method @NonNull public static android.service.autofill.Validator and(@NonNull android.service.autofill.Validator...);
-    method @NonNull public static android.service.autofill.Validator not(@NonNull android.service.autofill.Validator);
-    method @NonNull public static android.service.autofill.Validator or(@NonNull android.service.autofill.Validator...);
-  }
-
-  public final class VisibilitySetterAction implements android.service.autofill.OnClickAction android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.VisibilitySetterAction> CREATOR;
-  }
-
-  public static final class VisibilitySetterAction.Builder {
-    ctor public VisibilitySetterAction.Builder(@IdRes int, int);
-    method @NonNull public android.service.autofill.VisibilitySetterAction build();
-    method @NonNull public android.service.autofill.VisibilitySetterAction.Builder setVisibility(@IdRes int, int);
-  }
-
-}
-
-package android.service.carrier {
-
-  public class CarrierIdentifier implements android.os.Parcelable {
-    ctor public CarrierIdentifier(String, String, @Nullable String, @Nullable String, @Nullable String, @Nullable String);
-    ctor public CarrierIdentifier(@NonNull String, @NonNull String, @Nullable String, @Nullable String, @Nullable String, @Nullable String, int, int);
-    ctor public CarrierIdentifier(byte[], @Nullable String, @Nullable String);
-    method public int describeContents();
-    method public int getCarrierId();
-    method @Nullable public String getGid1();
-    method @Nullable public String getGid2();
-    method @Nullable public String getImsi();
-    method public String getMcc();
-    method public String getMnc();
-    method public int getSpecificCarrierId();
-    method @Nullable public String getSpn();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.carrier.CarrierIdentifier> CREATOR;
-  }
-
-  public class CarrierMessagingClientService extends android.app.Service {
-    ctor public CarrierMessagingClientService();
-    method @NonNull public final android.os.IBinder onBind(@Nullable android.content.Intent);
-  }
-
-  public abstract class CarrierMessagingService extends android.app.Service {
-    ctor public CarrierMessagingService();
-    method @Nullable public android.os.IBinder onBind(@NonNull android.content.Intent);
-    method public void onDownloadMms(@NonNull android.net.Uri, int, @NonNull android.net.Uri, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<java.lang.Integer>);
-    method @Deprecated public void onFilterSms(@NonNull android.service.carrier.MessagePdu, @NonNull String, int, int, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<java.lang.Boolean>);
-    method public void onReceiveTextSms(@NonNull android.service.carrier.MessagePdu, @NonNull String, int, int, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<java.lang.Integer>);
-    method @Deprecated public void onSendDataSms(@NonNull byte[], int, @NonNull String, int, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendSmsResult>);
-    method public void onSendDataSms(@NonNull byte[], int, @NonNull String, int, int, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendSmsResult>);
-    method public void onSendMms(@NonNull android.net.Uri, int, @Nullable android.net.Uri, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendMmsResult>);
-    method @Deprecated public void onSendMultipartTextSms(@NonNull java.util.List<java.lang.String>, int, @NonNull String, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendMultipartSmsResult>);
-    method public void onSendMultipartTextSms(@NonNull java.util.List<java.lang.String>, int, @NonNull String, int, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendMultipartSmsResult>);
-    method @Deprecated public void onSendTextSms(@NonNull String, int, @NonNull String, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendSmsResult>);
-    method public void onSendTextSms(@NonNull String, int, @NonNull String, int, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendSmsResult>);
-    field public static final int DOWNLOAD_STATUS_ERROR = 2; // 0x2
-    field public static final int DOWNLOAD_STATUS_OK = 0; // 0x0
-    field public static final int DOWNLOAD_STATUS_RETRY_ON_CARRIER_NETWORK = 1; // 0x1
-    field public static final int RECEIVE_OPTIONS_DEFAULT = 0; // 0x0
-    field public static final int RECEIVE_OPTIONS_DROP = 1; // 0x1
-    field public static final int RECEIVE_OPTIONS_SKIP_NOTIFY_WHEN_CREDENTIAL_PROTECTED_STORAGE_UNAVAILABLE = 2; // 0x2
-    field public static final int SEND_FLAG_REQUEST_DELIVERY_STATUS = 1; // 0x1
-    field public static final int SEND_STATUS_ERROR = 2; // 0x2
-    field public static final int SEND_STATUS_OK = 0; // 0x0
-    field public static final int SEND_STATUS_RETRY_ON_CARRIER_NETWORK = 1; // 0x1
-    field public static final String SERVICE_INTERFACE = "android.service.carrier.CarrierMessagingService";
-  }
-
-  public static interface CarrierMessagingService.ResultCallback<T> {
-    method public void onReceiveResult(@NonNull T) throws android.os.RemoteException;
-  }
-
-  public static final class CarrierMessagingService.SendMmsResult {
-    ctor public CarrierMessagingService.SendMmsResult(int, @Nullable byte[]);
-    method @Nullable public byte[] getSendConfPdu();
-    method public int getSendStatus();
-  }
-
-  public static final class CarrierMessagingService.SendMultipartSmsResult {
-    ctor public CarrierMessagingService.SendMultipartSmsResult(int, @Nullable int[]);
-    method @Nullable public int[] getMessageRefs();
-    method public int getSendStatus();
-  }
-
-  public static final class CarrierMessagingService.SendSmsResult {
-    ctor public CarrierMessagingService.SendSmsResult(int, int);
-    method public int getMessageRef();
-    method public int getSendStatus();
-  }
-
-  public abstract class CarrierService extends android.app.Service {
-    ctor public CarrierService();
-    method public final void notifyCarrierNetworkChange(boolean);
-    method @CallSuper public android.os.IBinder onBind(android.content.Intent);
-    method public abstract android.os.PersistableBundle onLoadConfig(android.service.carrier.CarrierIdentifier);
-    field public static final String CARRIER_SERVICE_INTERFACE = "android.service.carrier.CarrierService";
-  }
-
-  public final class MessagePdu implements android.os.Parcelable {
-    ctor public MessagePdu(@NonNull java.util.List<byte[]>);
-    method public int describeContents();
-    method @NonNull public java.util.List<byte[]> getPdus();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.carrier.MessagePdu> CREATOR;
-  }
-
-}
-
-package android.service.chooser {
-
-  @Deprecated public final class ChooserTarget implements android.os.Parcelable {
-    ctor @Deprecated public ChooserTarget(CharSequence, android.graphics.drawable.Icon, float, android.content.ComponentName, @Nullable android.os.Bundle);
-    method @Deprecated public int describeContents();
-    method @Deprecated public android.content.ComponentName getComponentName();
-    method @Deprecated public android.graphics.drawable.Icon getIcon();
-    method @Deprecated public android.os.Bundle getIntentExtras();
-    method @Deprecated public float getScore();
-    method @Deprecated public CharSequence getTitle();
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.service.chooser.ChooserTarget> CREATOR;
-  }
-
-  @Deprecated public abstract class ChooserTargetService extends android.app.Service {
-    ctor @Deprecated public ChooserTargetService();
-    method @Deprecated public android.os.IBinder onBind(android.content.Intent);
-    method @Deprecated public abstract java.util.List<android.service.chooser.ChooserTarget> onGetChooserTargets(android.content.ComponentName, android.content.IntentFilter);
-    field @Deprecated public static final String BIND_PERMISSION = "android.permission.BIND_CHOOSER_TARGET_SERVICE";
-    field @Deprecated public static final String META_DATA_NAME = "android.service.chooser.chooser_target_service";
-    field @Deprecated public static final String SERVICE_INTERFACE = "android.service.chooser.ChooserTargetService";
-  }
-
-}
-
-package android.service.controls {
-
-  public final class Control implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.app.PendingIntent getAppIntent();
-    method @NonNull public String getControlId();
-    method @NonNull public android.service.controls.templates.ControlTemplate getControlTemplate();
-    method @Nullable public android.content.res.ColorStateList getCustomColor();
-    method @Nullable public android.graphics.drawable.Icon getCustomIcon();
-    method public int getDeviceType();
-    method public int getStatus();
-    method @NonNull public CharSequence getStatusText();
-    method @Nullable public CharSequence getStructure();
-    method @NonNull public CharSequence getSubtitle();
-    method @NonNull public CharSequence getTitle();
-    method @Nullable public CharSequence getZone();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.controls.Control> CREATOR;
-    field public static final int STATUS_DISABLED = 4; // 0x4
-    field public static final int STATUS_ERROR = 3; // 0x3
-    field public static final int STATUS_NOT_FOUND = 2; // 0x2
-    field public static final int STATUS_OK = 1; // 0x1
-    field public static final int STATUS_UNKNOWN = 0; // 0x0
-  }
-
-  public static final class Control.StatefulBuilder {
-    ctor public Control.StatefulBuilder(@NonNull String, @NonNull android.app.PendingIntent);
-    ctor public Control.StatefulBuilder(@NonNull android.service.controls.Control);
-    method @NonNull public android.service.controls.Control build();
-    method @NonNull public android.service.controls.Control.StatefulBuilder setAppIntent(@NonNull android.app.PendingIntent);
-    method @NonNull public android.service.controls.Control.StatefulBuilder setControlId(@NonNull String);
-    method @NonNull public android.service.controls.Control.StatefulBuilder setControlTemplate(@NonNull android.service.controls.templates.ControlTemplate);
-    method @NonNull public android.service.controls.Control.StatefulBuilder setCustomColor(@Nullable android.content.res.ColorStateList);
-    method @NonNull public android.service.controls.Control.StatefulBuilder setCustomIcon(@Nullable android.graphics.drawable.Icon);
-    method @NonNull public android.service.controls.Control.StatefulBuilder setDeviceType(int);
-    method @NonNull public android.service.controls.Control.StatefulBuilder setStatus(int);
-    method @NonNull public android.service.controls.Control.StatefulBuilder setStatusText(@NonNull CharSequence);
-    method @NonNull public android.service.controls.Control.StatefulBuilder setStructure(@Nullable CharSequence);
-    method @NonNull public android.service.controls.Control.StatefulBuilder setSubtitle(@NonNull CharSequence);
-    method @NonNull public android.service.controls.Control.StatefulBuilder setTitle(@NonNull CharSequence);
-    method @NonNull public android.service.controls.Control.StatefulBuilder setZone(@Nullable CharSequence);
-  }
-
-  public static final class Control.StatelessBuilder {
-    ctor public Control.StatelessBuilder(@NonNull String, @NonNull android.app.PendingIntent);
-    ctor public Control.StatelessBuilder(@NonNull android.service.controls.Control);
-    method @NonNull public android.service.controls.Control build();
-    method @NonNull public android.service.controls.Control.StatelessBuilder setAppIntent(@NonNull android.app.PendingIntent);
-    method @NonNull public android.service.controls.Control.StatelessBuilder setControlId(@NonNull String);
-    method @NonNull public android.service.controls.Control.StatelessBuilder setCustomColor(@Nullable android.content.res.ColorStateList);
-    method @NonNull public android.service.controls.Control.StatelessBuilder setCustomIcon(@Nullable android.graphics.drawable.Icon);
-    method @NonNull public android.service.controls.Control.StatelessBuilder setDeviceType(int);
-    method @NonNull public android.service.controls.Control.StatelessBuilder setStructure(@Nullable CharSequence);
-    method @NonNull public android.service.controls.Control.StatelessBuilder setSubtitle(@NonNull CharSequence);
-    method @NonNull public android.service.controls.Control.StatelessBuilder setTitle(@NonNull CharSequence);
-    method @NonNull public android.service.controls.Control.StatelessBuilder setZone(@Nullable CharSequence);
-  }
-
-  public abstract class ControlsProviderService extends android.app.Service {
-    ctor public ControlsProviderService();
-    method @NonNull public abstract java.util.concurrent.Flow.Publisher<android.service.controls.Control> createPublisherFor(@NonNull java.util.List<java.lang.String>);
-    method @NonNull public abstract java.util.concurrent.Flow.Publisher<android.service.controls.Control> createPublisherForAllAvailable();
-    method @Nullable public java.util.concurrent.Flow.Publisher<android.service.controls.Control> createPublisherForSuggested();
-    method @NonNull public final android.os.IBinder onBind(@NonNull android.content.Intent);
-    method public final boolean onUnbind(@NonNull android.content.Intent);
-    method public abstract void performControlAction(@NonNull String, @NonNull android.service.controls.actions.ControlAction, @NonNull java.util.function.Consumer<java.lang.Integer>);
-    method public static void requestAddControl(@NonNull android.content.Context, @NonNull android.content.ComponentName, @NonNull android.service.controls.Control);
-    field public static final String SERVICE_CONTROLS = "android.service.controls.ControlsProviderService";
-    field @NonNull public static final String TAG = "ControlsProviderService";
-  }
-
-  public class DeviceTypes {
-    method public static boolean validDeviceType(int);
-    field public static final int TYPE_AC_HEATER = 1; // 0x1
-    field public static final int TYPE_AC_UNIT = 2; // 0x2
-    field public static final int TYPE_AIR_FRESHENER = 3; // 0x3
-    field public static final int TYPE_AIR_PURIFIER = 4; // 0x4
-    field public static final int TYPE_AWNING = 33; // 0x21
-    field public static final int TYPE_BLINDS = 34; // 0x22
-    field public static final int TYPE_CAMERA = 50; // 0x32
-    field public static final int TYPE_CLOSET = 35; // 0x23
-    field public static final int TYPE_COFFEE_MAKER = 5; // 0x5
-    field public static final int TYPE_CURTAIN = 36; // 0x24
-    field public static final int TYPE_DEHUMIDIFIER = 6; // 0x6
-    field public static final int TYPE_DISHWASHER = 24; // 0x18
-    field public static final int TYPE_DISPLAY = 7; // 0x7
-    field public static final int TYPE_DOOR = 37; // 0x25
-    field public static final int TYPE_DOORBELL = 51; // 0x33
-    field public static final int TYPE_DRAWER = 38; // 0x26
-    field public static final int TYPE_DRYER = 25; // 0x19
-    field public static final int TYPE_FAN = 8; // 0x8
-    field public static final int TYPE_GARAGE = 39; // 0x27
-    field public static final int TYPE_GATE = 40; // 0x28
-    field public static final int TYPE_GENERIC_ARM_DISARM = -5; // 0xfffffffb
-    field public static final int TYPE_GENERIC_LOCK_UNLOCK = -4; // 0xfffffffc
-    field public static final int TYPE_GENERIC_ON_OFF = -1; // 0xffffffff
-    field public static final int TYPE_GENERIC_OPEN_CLOSE = -3; // 0xfffffffd
-    field public static final int TYPE_GENERIC_START_STOP = -2; // 0xfffffffe
-    field public static final int TYPE_GENERIC_TEMP_SETTING = -6; // 0xfffffffa
-    field public static final int TYPE_GENERIC_VIEWSTREAM = -7; // 0xfffffff9
-    field public static final int TYPE_HEATER = 47; // 0x2f
-    field public static final int TYPE_HOOD = 10; // 0xa
-    field public static final int TYPE_HUMIDIFIER = 11; // 0xb
-    field public static final int TYPE_KETTLE = 12; // 0xc
-    field public static final int TYPE_LIGHT = 13; // 0xd
-    field public static final int TYPE_LOCK = 45; // 0x2d
-    field public static final int TYPE_MICROWAVE = 14; // 0xe
-    field public static final int TYPE_MOP = 26; // 0x1a
-    field public static final int TYPE_MOWER = 27; // 0x1b
-    field public static final int TYPE_MULTICOOKER = 28; // 0x1c
-    field public static final int TYPE_OUTLET = 15; // 0xf
-    field public static final int TYPE_PERGOLA = 41; // 0x29
-    field public static final int TYPE_RADIATOR = 16; // 0x10
-    field public static final int TYPE_REFRIGERATOR = 48; // 0x30
-    field public static final int TYPE_REMOTE_CONTROL = 17; // 0x11
-    field public static final int TYPE_ROUTINE = 52; // 0x34
-    field public static final int TYPE_SECURITY_SYSTEM = 46; // 0x2e
-    field public static final int TYPE_SET_TOP = 18; // 0x12
-    field public static final int TYPE_SHOWER = 29; // 0x1d
-    field public static final int TYPE_SHUTTER = 42; // 0x2a
-    field public static final int TYPE_SPRINKLER = 30; // 0x1e
-    field public static final int TYPE_STANDMIXER = 19; // 0x13
-    field public static final int TYPE_STYLER = 20; // 0x14
-    field public static final int TYPE_SWITCH = 21; // 0x15
-    field public static final int TYPE_THERMOSTAT = 49; // 0x31
-    field public static final int TYPE_TV = 22; // 0x16
-    field public static final int TYPE_UNKNOWN = 0; // 0x0
-    field public static final int TYPE_VACUUM = 32; // 0x20
-    field public static final int TYPE_VALVE = 44; // 0x2c
-    field public static final int TYPE_WASHER = 31; // 0x1f
-    field public static final int TYPE_WATER_HEATER = 23; // 0x17
-    field public static final int TYPE_WINDOW = 43; // 0x2b
-  }
-
-}
-
-package android.service.controls.actions {
-
-  public final class BooleanAction extends android.service.controls.actions.ControlAction {
-    ctor public BooleanAction(@NonNull String, boolean);
-    ctor public BooleanAction(@NonNull String, boolean, @Nullable String);
-    method public int getActionType();
-    method public boolean getNewState();
-  }
-
-  public final class CommandAction extends android.service.controls.actions.ControlAction {
-    ctor public CommandAction(@NonNull String, @Nullable String);
-    ctor public CommandAction(@NonNull String);
-    method public int getActionType();
-  }
-
-  public abstract class ControlAction {
-    method public abstract int getActionType();
-    method @Nullable public String getChallengeValue();
-    method @NonNull public static android.service.controls.actions.ControlAction getErrorAction();
-    method @NonNull public String getTemplateId();
-    method public static final boolean isValidResponse(int);
-    field public static final int RESPONSE_CHALLENGE_ACK = 3; // 0x3
-    field public static final int RESPONSE_CHALLENGE_PASSPHRASE = 5; // 0x5
-    field public static final int RESPONSE_CHALLENGE_PIN = 4; // 0x4
-    field public static final int RESPONSE_FAIL = 2; // 0x2
-    field public static final int RESPONSE_OK = 1; // 0x1
-    field public static final int RESPONSE_UNKNOWN = 0; // 0x0
-    field public static final int TYPE_BOOLEAN = 1; // 0x1
-    field public static final int TYPE_COMMAND = 5; // 0x5
-    field public static final int TYPE_ERROR = -1; // 0xffffffff
-    field public static final int TYPE_FLOAT = 2; // 0x2
-    field public static final int TYPE_MODE = 4; // 0x4
-  }
-
-  public final class FloatAction extends android.service.controls.actions.ControlAction {
-    ctor public FloatAction(@NonNull String, float);
-    ctor public FloatAction(@NonNull String, float, @Nullable String);
-    method public int getActionType();
-    method public float getNewValue();
-  }
-
-  public final class ModeAction extends android.service.controls.actions.ControlAction {
-    ctor public ModeAction(@NonNull String, int, @Nullable String);
-    ctor public ModeAction(@NonNull String, int);
-    method public int getActionType();
-    method public int getNewMode();
-  }
-
-}
-
-package android.service.controls.templates {
-
-  public final class ControlButton implements android.os.Parcelable {
-    ctor public ControlButton(boolean, @NonNull CharSequence);
-    method public int describeContents();
-    method @NonNull public CharSequence getActionDescription();
-    method public boolean isChecked();
-    method @NonNull public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.controls.templates.ControlButton> CREATOR;
-  }
-
-  public abstract class ControlTemplate {
-    method @NonNull public static android.service.controls.templates.ControlTemplate getErrorTemplate();
-    method @NonNull public static android.service.controls.templates.ControlTemplate getNoTemplateObject();
-    method @NonNull public String getTemplateId();
-    method public abstract int getTemplateType();
-    field public static final int TYPE_ERROR = -1; // 0xffffffff
-    field public static final int TYPE_NO_TEMPLATE = 0; // 0x0
-    field public static final int TYPE_RANGE = 2; // 0x2
-    field public static final int TYPE_STATELESS = 8; // 0x8
-    field public static final int TYPE_TEMPERATURE = 7; // 0x7
-    field public static final int TYPE_TOGGLE = 1; // 0x1
-    field public static final int TYPE_TOGGLE_RANGE = 6; // 0x6
-  }
-
-  public final class RangeTemplate extends android.service.controls.templates.ControlTemplate {
-    ctor public RangeTemplate(@NonNull String, float, float, float, float, @Nullable CharSequence);
-    method public float getCurrentValue();
-    method @NonNull public CharSequence getFormatString();
-    method public float getMaxValue();
-    method public float getMinValue();
-    method public float getStepValue();
-    method public int getTemplateType();
-  }
-
-  public final class StatelessTemplate extends android.service.controls.templates.ControlTemplate {
-    ctor public StatelessTemplate(@NonNull String);
-    method public int getTemplateType();
-  }
-
-  public final class TemperatureControlTemplate extends android.service.controls.templates.ControlTemplate {
-    ctor public TemperatureControlTemplate(@NonNull String, @NonNull android.service.controls.templates.ControlTemplate, int, int, int);
-    method public int getCurrentActiveMode();
-    method public int getCurrentMode();
-    method public int getModes();
-    method @NonNull public android.service.controls.templates.ControlTemplate getTemplate();
-    method public int getTemplateType();
-    field public static final int FLAG_MODE_COOL = 8; // 0x8
-    field public static final int FLAG_MODE_ECO = 32; // 0x20
-    field public static final int FLAG_MODE_HEAT = 4; // 0x4
-    field public static final int FLAG_MODE_HEAT_COOL = 16; // 0x10
-    field public static final int FLAG_MODE_OFF = 2; // 0x2
-    field public static final int MODE_COOL = 3; // 0x3
-    field public static final int MODE_ECO = 5; // 0x5
-    field public static final int MODE_HEAT = 2; // 0x2
-    field public static final int MODE_HEAT_COOL = 4; // 0x4
-    field public static final int MODE_OFF = 1; // 0x1
-    field public static final int MODE_UNKNOWN = 0; // 0x0
-  }
-
-  public final class ToggleRangeTemplate extends android.service.controls.templates.ControlTemplate {
-    ctor public ToggleRangeTemplate(@NonNull String, @NonNull android.service.controls.templates.ControlButton, @NonNull android.service.controls.templates.RangeTemplate);
-    ctor public ToggleRangeTemplate(@NonNull String, boolean, @NonNull CharSequence, @NonNull android.service.controls.templates.RangeTemplate);
-    method @NonNull public CharSequence getActionDescription();
-    method @NonNull public android.service.controls.templates.RangeTemplate getRange();
-    method public int getTemplateType();
-    method public boolean isChecked();
-  }
-
-  public final class ToggleTemplate extends android.service.controls.templates.ControlTemplate {
-    ctor public ToggleTemplate(@NonNull String, @NonNull android.service.controls.templates.ControlButton);
-    method @NonNull public CharSequence getContentDescription();
-    method public int getTemplateType();
-    method public boolean isChecked();
-  }
-
-}
-
-package android.service.dreams {
-
-  public class DreamService extends android.app.Service implements android.view.Window.Callback {
-    ctor public DreamService();
-    method public void addContentView(android.view.View, android.view.ViewGroup.LayoutParams);
-    method public boolean dispatchGenericMotionEvent(android.view.MotionEvent);
-    method public boolean dispatchKeyEvent(android.view.KeyEvent);
-    method public boolean dispatchKeyShortcutEvent(android.view.KeyEvent);
-    method public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    method public boolean dispatchTouchEvent(android.view.MotionEvent);
-    method public boolean dispatchTrackballEvent(android.view.MotionEvent);
-    method public <T extends android.view.View> T findViewById(@IdRes int);
-    method public final void finish();
-    method public android.view.Window getWindow();
-    method public android.view.WindowManager getWindowManager();
-    method public boolean isFullscreen();
-    method public boolean isInteractive();
-    method public boolean isScreenBright();
-    method public void onActionModeFinished(android.view.ActionMode);
-    method public void onActionModeStarted(android.view.ActionMode);
-    method public void onAttachedToWindow();
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method public void onContentChanged();
-    method public boolean onCreatePanelMenu(int, android.view.Menu);
-    method public android.view.View onCreatePanelView(int);
-    method public void onDetachedFromWindow();
-    method public void onDreamingStarted();
-    method public void onDreamingStopped();
-    method public boolean onMenuItemSelected(int, android.view.MenuItem);
-    method public boolean onMenuOpened(int, android.view.Menu);
-    method public void onPanelClosed(int, android.view.Menu);
-    method public boolean onPreparePanel(int, android.view.View, android.view.Menu);
-    method public boolean onSearchRequested(android.view.SearchEvent);
-    method public boolean onSearchRequested();
-    method public void onWakeUp();
-    method public void onWindowAttributesChanged(android.view.WindowManager.LayoutParams);
-    method public void onWindowFocusChanged(boolean);
-    method public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback);
-    method public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback, int);
-    method @NonNull public final <T extends android.view.View> T requireViewById(@IdRes int);
-    method public void setContentView(@LayoutRes int);
-    method public void setContentView(android.view.View);
-    method public void setContentView(android.view.View, android.view.ViewGroup.LayoutParams);
-    method public void setFullscreen(boolean);
-    method public void setInteractive(boolean);
-    method public void setScreenBright(boolean);
-    method public final void wakeUp();
-    field public static final String DREAM_META_DATA = "android.service.dream";
-    field public static final String SERVICE_INTERFACE = "android.service.dreams.DreamService";
-  }
-
-}
-
-package android.service.media {
-
-  public abstract class CameraPrewarmService extends android.app.Service {
-    ctor public CameraPrewarmService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public abstract void onCooldown(boolean);
-    method public abstract void onPrewarm();
-  }
-
-  public abstract class MediaBrowserService extends android.app.Service {
-    ctor public MediaBrowserService();
-    method public void dump(java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method public final android.os.Bundle getBrowserRootHints();
-    method public final android.media.session.MediaSessionManager.RemoteUserInfo getCurrentBrowserInfo();
-    method @Nullable public android.media.session.MediaSession.Token getSessionToken();
-    method public void notifyChildrenChanged(@NonNull String);
-    method public void notifyChildrenChanged(@NonNull String, @NonNull android.os.Bundle);
-    method public android.os.IBinder onBind(android.content.Intent);
-    method @Nullable public abstract android.service.media.MediaBrowserService.BrowserRoot onGetRoot(@NonNull String, int, @Nullable android.os.Bundle);
-    method public abstract void onLoadChildren(@NonNull String, @NonNull android.service.media.MediaBrowserService.Result<java.util.List<android.media.browse.MediaBrowser.MediaItem>>);
-    method public void onLoadChildren(@NonNull String, @NonNull android.service.media.MediaBrowserService.Result<java.util.List<android.media.browse.MediaBrowser.MediaItem>>, @NonNull android.os.Bundle);
-    method public void onLoadItem(String, android.service.media.MediaBrowserService.Result<android.media.browse.MediaBrowser.MediaItem>);
-    method public void setSessionToken(android.media.session.MediaSession.Token);
-    field public static final String SERVICE_INTERFACE = "android.media.browse.MediaBrowserService";
-  }
-
-  public static final class MediaBrowserService.BrowserRoot {
-    ctor public MediaBrowserService.BrowserRoot(@NonNull String, @Nullable android.os.Bundle);
-    method public android.os.Bundle getExtras();
-    method public String getRootId();
-    field public static final String EXTRA_OFFLINE = "android.service.media.extra.OFFLINE";
-    field public static final String EXTRA_RECENT = "android.service.media.extra.RECENT";
-    field public static final String EXTRA_SUGGESTED = "android.service.media.extra.SUGGESTED";
-  }
-
-  public class MediaBrowserService.Result<T> {
-    method public void detach();
-    method public void sendResult(T);
-  }
-
-}
-
-package android.service.notification {
-
-  public final class Condition implements android.os.Parcelable {
-    ctor public Condition(android.net.Uri, String, int);
-    ctor public Condition(android.net.Uri, String, String, String, int, int, int);
-    ctor public Condition(android.os.Parcel);
-    method public android.service.notification.Condition copy();
-    method public int describeContents();
-    method public static boolean isValidId(android.net.Uri, String);
-    method public static android.net.Uri.Builder newId(android.content.Context);
-    method public static String relevanceToString(int);
-    method public static String stateToString(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.Condition> CREATOR;
-    field public static final int FLAG_RELEVANT_ALWAYS = 2; // 0x2
-    field public static final int FLAG_RELEVANT_NOW = 1; // 0x1
-    field public static final String SCHEME = "condition";
-    field public static final int STATE_ERROR = 3; // 0x3
-    field public static final int STATE_FALSE = 0; // 0x0
-    field public static final int STATE_TRUE = 1; // 0x1
-    field public static final int STATE_UNKNOWN = 2; // 0x2
-    field public final int flags;
-    field public final int icon;
-    field public final android.net.Uri id;
-    field public final String line1;
-    field public final String line2;
-    field public final int state;
-    field public final String summary;
-  }
-
-  @Deprecated public abstract class ConditionProviderService extends android.app.Service {
-    ctor @Deprecated public ConditionProviderService();
-    method @Deprecated public final void notifyCondition(android.service.notification.Condition);
-    method @Deprecated public final void notifyConditions(android.service.notification.Condition...);
-    method @Deprecated public android.os.IBinder onBind(android.content.Intent);
-    method @Deprecated public abstract void onConnected();
-    method @Deprecated public void onRequestConditions(int);
-    method @Deprecated public abstract void onSubscribe(android.net.Uri);
-    method @Deprecated public abstract void onUnsubscribe(android.net.Uri);
-    method @Deprecated public static final void requestRebind(android.content.ComponentName);
-    method @Deprecated public final void requestUnbind();
-    field @Deprecated public static final String EXTRA_RULE_ID = "android.service.notification.extra.RULE_ID";
-    field @Deprecated public static final String META_DATA_CONFIGURATION_ACTIVITY = "android.service.zen.automatic.configurationActivity";
-    field @Deprecated public static final String META_DATA_RULE_INSTANCE_LIMIT = "android.service.zen.automatic.ruleInstanceLimit";
-    field @Deprecated public static final String META_DATA_RULE_TYPE = "android.service.zen.automatic.ruleType";
-    field @Deprecated public static final String SERVICE_INTERFACE = "android.service.notification.ConditionProviderService";
-  }
-
-  public abstract class NotificationListenerService extends android.app.Service {
-    ctor public NotificationListenerService();
-    method public final void cancelAllNotifications();
-    method @Deprecated public final void cancelNotification(String, String, int);
-    method public final void cancelNotification(String);
-    method public final void cancelNotifications(String[]);
-    method public final void clearRequestedListenerHints();
-    method public android.service.notification.StatusBarNotification[] getActiveNotifications();
-    method public android.service.notification.StatusBarNotification[] getActiveNotifications(String[]);
-    method public final int getCurrentInterruptionFilter();
-    method public final int getCurrentListenerHints();
-    method public android.service.notification.NotificationListenerService.RankingMap getCurrentRanking();
-    method public final java.util.List<android.app.NotificationChannelGroup> getNotificationChannelGroups(@NonNull String, @NonNull android.os.UserHandle);
-    method public final java.util.List<android.app.NotificationChannel> getNotificationChannels(@NonNull String, @NonNull android.os.UserHandle);
-    method public final android.service.notification.StatusBarNotification[] getSnoozedNotifications();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public void onInterruptionFilterChanged(int);
-    method public void onListenerConnected();
-    method public void onListenerDisconnected();
-    method public void onListenerHintsChanged(int);
-    method public void onNotificationChannelGroupModified(String, android.os.UserHandle, android.app.NotificationChannelGroup, int);
-    method public void onNotificationChannelModified(String, android.os.UserHandle, android.app.NotificationChannel, int);
-    method public void onNotificationPosted(android.service.notification.StatusBarNotification);
-    method public void onNotificationPosted(android.service.notification.StatusBarNotification, android.service.notification.NotificationListenerService.RankingMap);
-    method public void onNotificationRankingUpdate(android.service.notification.NotificationListenerService.RankingMap);
-    method public void onNotificationRemoved(android.service.notification.StatusBarNotification);
-    method public void onNotificationRemoved(android.service.notification.StatusBarNotification, android.service.notification.NotificationListenerService.RankingMap);
-    method public void onNotificationRemoved(android.service.notification.StatusBarNotification, android.service.notification.NotificationListenerService.RankingMap, int);
-    method public void onSilentStatusBarIconsVisibilityChanged(boolean);
-    method public final void requestInterruptionFilter(int);
-    method public final void requestListenerHints(int);
-    method public static void requestRebind(android.content.ComponentName);
-    method public final void requestUnbind();
-    method public final void setNotificationsShown(String[]);
-    method public final void snoozeNotification(String, long);
-    method public final void updateNotificationChannel(@NonNull String, @NonNull android.os.UserHandle, @NonNull android.app.NotificationChannel);
-    field public static final int HINT_HOST_DISABLE_CALL_EFFECTS = 4; // 0x4
-    field public static final int HINT_HOST_DISABLE_EFFECTS = 1; // 0x1
-    field public static final int HINT_HOST_DISABLE_NOTIFICATION_EFFECTS = 2; // 0x2
-    field public static final int INTERRUPTION_FILTER_ALARMS = 4; // 0x4
-    field public static final int INTERRUPTION_FILTER_ALL = 1; // 0x1
-    field public static final int INTERRUPTION_FILTER_NONE = 3; // 0x3
-    field public static final int INTERRUPTION_FILTER_PRIORITY = 2; // 0x2
-    field public static final int INTERRUPTION_FILTER_UNKNOWN = 0; // 0x0
-    field public static final int NOTIFICATION_CHANNEL_OR_GROUP_ADDED = 1; // 0x1
-    field public static final int NOTIFICATION_CHANNEL_OR_GROUP_DELETED = 3; // 0x3
-    field public static final int NOTIFICATION_CHANNEL_OR_GROUP_UPDATED = 2; // 0x2
-    field public static final int REASON_APP_CANCEL = 8; // 0x8
-    field public static final int REASON_APP_CANCEL_ALL = 9; // 0x9
-    field public static final int REASON_CANCEL = 2; // 0x2
-    field public static final int REASON_CANCEL_ALL = 3; // 0x3
-    field public static final int REASON_CHANNEL_BANNED = 17; // 0x11
-    field public static final int REASON_CLICK = 1; // 0x1
-    field public static final int REASON_ERROR = 4; // 0x4
-    field public static final int REASON_GROUP_OPTIMIZATION = 13; // 0xd
-    field public static final int REASON_GROUP_SUMMARY_CANCELED = 12; // 0xc
-    field public static final int REASON_LISTENER_CANCEL = 10; // 0xa
-    field public static final int REASON_LISTENER_CANCEL_ALL = 11; // 0xb
-    field public static final int REASON_PACKAGE_BANNED = 7; // 0x7
-    field public static final int REASON_PACKAGE_CHANGED = 5; // 0x5
-    field public static final int REASON_PACKAGE_SUSPENDED = 14; // 0xe
-    field public static final int REASON_PROFILE_TURNED_OFF = 15; // 0xf
-    field public static final int REASON_SNOOZED = 18; // 0x12
-    field public static final int REASON_TIMEOUT = 19; // 0x13
-    field public static final int REASON_UNAUTOBUNDLED = 16; // 0x10
-    field public static final int REASON_USER_STOPPED = 6; // 0x6
-    field public static final String SERVICE_INTERFACE = "android.service.notification.NotificationListenerService";
-    field @Deprecated public static final int SUPPRESSED_EFFECT_SCREEN_OFF = 1; // 0x1
-    field @Deprecated public static final int SUPPRESSED_EFFECT_SCREEN_ON = 2; // 0x2
-  }
-
-  public static class NotificationListenerService.Ranking {
-    ctor public NotificationListenerService.Ranking();
-    method public boolean canBubble();
-    method public boolean canShowBadge();
-    method public android.app.NotificationChannel getChannel();
-    method public int getImportance();
-    method public CharSequence getImportanceExplanation();
-    method public String getKey();
-    method public long getLastAudiblyAlertedMillis();
-    method public String getOverrideGroupKey();
-    method public int getRank();
-    method @NonNull public java.util.List<android.app.Notification.Action> getSmartActions();
-    method @NonNull public java.util.List<java.lang.CharSequence> getSmartReplies();
-    method public int getSuppressedVisualEffects();
-    method public int getUserSentiment();
-    method public boolean isAmbient();
-    method public boolean isSuspended();
-    method public boolean matchesInterruptionFilter();
-    field public static final int USER_SENTIMENT_NEGATIVE = -1; // 0xffffffff
-    field public static final int USER_SENTIMENT_NEUTRAL = 0; // 0x0
-    field public static final int USER_SENTIMENT_POSITIVE = 1; // 0x1
-  }
-
-  public static class NotificationListenerService.RankingMap implements android.os.Parcelable {
-    method public int describeContents();
-    method public String[] getOrderedKeys();
-    method public boolean getRanking(String, android.service.notification.NotificationListenerService.Ranking);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.NotificationListenerService.RankingMap> CREATOR;
-  }
-
-  public class StatusBarNotification implements android.os.Parcelable {
-    ctor @Deprecated public StatusBarNotification(String, String, int, String, int, int, int, android.app.Notification, android.os.UserHandle, long);
-    ctor public StatusBarNotification(android.os.Parcel);
-    method public android.service.notification.StatusBarNotification clone();
-    method public int describeContents();
-    method public String getGroupKey();
-    method public int getId();
-    method public String getKey();
-    method public android.app.Notification getNotification();
-    method @NonNull public String getOpPkg();
-    method public String getOverrideGroupKey();
-    method public String getPackageName();
-    method public long getPostTime();
-    method public String getTag();
-    method public int getUid();
-    method public android.os.UserHandle getUser();
-    method @Deprecated public int getUserId();
-    method public boolean isAppGroup();
-    method public boolean isClearable();
-    method public boolean isGroup();
-    method public boolean isOngoing();
-    method public void setOverrideGroupKey(String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.StatusBarNotification> CREATOR;
-  }
-
-  public final class ZenPolicy implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getPriorityCallSenders();
-    method public int getPriorityCategoryAlarms();
-    method public int getPriorityCategoryCalls();
-    method public int getPriorityCategoryConversations();
-    method public int getPriorityCategoryEvents();
-    method public int getPriorityCategoryMedia();
-    method public int getPriorityCategoryMessages();
-    method public int getPriorityCategoryReminders();
-    method public int getPriorityCategoryRepeatCallers();
-    method public int getPriorityCategorySystem();
-    method public int getPriorityConversationSenders();
-    method public int getPriorityMessageSenders();
-    method public int getVisualEffectAmbient();
-    method public int getVisualEffectBadge();
-    method public int getVisualEffectFullScreenIntent();
-    method public int getVisualEffectLights();
-    method public int getVisualEffectNotificationList();
-    method public int getVisualEffectPeek();
-    method public int getVisualEffectStatusBar();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CONVERSATION_SENDERS_ANYONE = 1; // 0x1
-    field public static final int CONVERSATION_SENDERS_IMPORTANT = 2; // 0x2
-    field public static final int CONVERSATION_SENDERS_NONE = 3; // 0x3
-    field public static final int CONVERSATION_SENDERS_UNSET = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.ZenPolicy> CREATOR;
-    field public static final int PEOPLE_TYPE_ANYONE = 1; // 0x1
-    field public static final int PEOPLE_TYPE_CONTACTS = 2; // 0x2
-    field public static final int PEOPLE_TYPE_NONE = 4; // 0x4
-    field public static final int PEOPLE_TYPE_STARRED = 3; // 0x3
-    field public static final int PEOPLE_TYPE_UNSET = 0; // 0x0
-    field public static final int STATE_ALLOW = 1; // 0x1
-    field public static final int STATE_DISALLOW = 2; // 0x2
-    field public static final int STATE_UNSET = 0; // 0x0
-  }
-
-  public static final class ZenPolicy.Builder {
-    ctor public ZenPolicy.Builder();
-    method @NonNull public android.service.notification.ZenPolicy.Builder allowAlarms(boolean);
-    method @NonNull public android.service.notification.ZenPolicy.Builder allowAllSounds();
-    method @NonNull public android.service.notification.ZenPolicy.Builder allowCalls(int);
-    method @NonNull public android.service.notification.ZenPolicy.Builder allowConversations(int);
-    method @NonNull public android.service.notification.ZenPolicy.Builder allowEvents(boolean);
-    method @NonNull public android.service.notification.ZenPolicy.Builder allowMedia(boolean);
-    method @NonNull public android.service.notification.ZenPolicy.Builder allowMessages(int);
-    method @NonNull public android.service.notification.ZenPolicy.Builder allowReminders(boolean);
-    method @NonNull public android.service.notification.ZenPolicy.Builder allowRepeatCallers(boolean);
-    method @NonNull public android.service.notification.ZenPolicy.Builder allowSystem(boolean);
-    method @NonNull public android.service.notification.ZenPolicy build();
-    method @NonNull public android.service.notification.ZenPolicy.Builder disallowAllSounds();
-    method @NonNull public android.service.notification.ZenPolicy.Builder hideAllVisualEffects();
-    method @NonNull public android.service.notification.ZenPolicy.Builder showAllVisualEffects();
-    method @NonNull public android.service.notification.ZenPolicy.Builder showBadges(boolean);
-    method @NonNull public android.service.notification.ZenPolicy.Builder showFullScreenIntent(boolean);
-    method @NonNull public android.service.notification.ZenPolicy.Builder showInAmbientDisplay(boolean);
-    method @NonNull public android.service.notification.ZenPolicy.Builder showInNotificationList(boolean);
-    method @NonNull public android.service.notification.ZenPolicy.Builder showLights(boolean);
-    method @NonNull public android.service.notification.ZenPolicy.Builder showPeeking(boolean);
-    method @NonNull public android.service.notification.ZenPolicy.Builder showStatusBarIcons(boolean);
-  }
-
-}
-
-package android.service.quickaccesswallet {
-
-  public interface GetWalletCardsCallback {
-    method public void onFailure(@NonNull android.service.quickaccesswallet.GetWalletCardsError);
-    method public void onSuccess(@NonNull android.service.quickaccesswallet.GetWalletCardsResponse);
-  }
-
-  public final class GetWalletCardsError implements android.os.Parcelable {
-    ctor public GetWalletCardsError(@Nullable android.graphics.drawable.Icon, @Nullable CharSequence);
-    method public int describeContents();
-    method @Nullable public android.graphics.drawable.Icon getIcon();
-    method @Nullable public CharSequence getMessage();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.quickaccesswallet.GetWalletCardsError> CREATOR;
-  }
-
-  public final class GetWalletCardsRequest implements android.os.Parcelable {
-    ctor public GetWalletCardsRequest(int, int, int, int);
-    method public int describeContents();
-    method public int getCardHeightPx();
-    method public int getCardWidthPx();
-    method public int getIconSizePx();
-    method public int getMaxCards();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.quickaccesswallet.GetWalletCardsRequest> CREATOR;
-  }
-
-  public final class GetWalletCardsResponse implements android.os.Parcelable {
-    ctor public GetWalletCardsResponse(@NonNull java.util.List<android.service.quickaccesswallet.WalletCard>, int);
-    method public int describeContents();
-    method public int getSelectedIndex();
-    method @NonNull public java.util.List<android.service.quickaccesswallet.WalletCard> getWalletCards();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.quickaccesswallet.GetWalletCardsResponse> CREATOR;
-  }
-
-  public abstract class QuickAccessWalletService extends android.app.Service {
-    ctor public QuickAccessWalletService();
-    method @Nullable public android.os.IBinder onBind(@NonNull android.content.Intent);
-    method public abstract void onWalletCardSelected(@NonNull android.service.quickaccesswallet.SelectWalletCardRequest);
-    method public abstract void onWalletCardsRequested(@NonNull android.service.quickaccesswallet.GetWalletCardsRequest, @NonNull android.service.quickaccesswallet.GetWalletCardsCallback);
-    method public abstract void onWalletDismissed();
-    method public final void sendWalletServiceEvent(@NonNull android.service.quickaccesswallet.WalletServiceEvent);
-    field public static final String ACTION_VIEW_WALLET = "android.service.quickaccesswallet.action.VIEW_WALLET";
-    field public static final String ACTION_VIEW_WALLET_SETTINGS = "android.service.quickaccesswallet.action.VIEW_WALLET_SETTINGS";
-    field public static final String SERVICE_INTERFACE = "android.service.quickaccesswallet.QuickAccessWalletService";
-    field public static final String SERVICE_META_DATA = "android.quickaccesswallet";
-  }
-
-  public final class SelectWalletCardRequest implements android.os.Parcelable {
-    ctor public SelectWalletCardRequest(@NonNull String);
-    method public int describeContents();
-    method @NonNull public String getCardId();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.quickaccesswallet.SelectWalletCardRequest> CREATOR;
-  }
-
-  public final class WalletCard implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.graphics.drawable.Icon getCardIcon();
-    method @NonNull public String getCardId();
-    method @NonNull public android.graphics.drawable.Icon getCardImage();
-    method @Nullable public CharSequence getCardLabel();
-    method @NonNull public CharSequence getContentDescription();
-    method @NonNull public android.app.PendingIntent getPendingIntent();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.quickaccesswallet.WalletCard> CREATOR;
-  }
-
-  public static final class WalletCard.Builder {
-    ctor public WalletCard.Builder(@NonNull String, @NonNull android.graphics.drawable.Icon, @NonNull CharSequence, @NonNull android.app.PendingIntent);
-    method @NonNull public android.service.quickaccesswallet.WalletCard build();
-    method @NonNull public android.service.quickaccesswallet.WalletCard.Builder setCardIcon(@Nullable android.graphics.drawable.Icon);
-    method @NonNull public android.service.quickaccesswallet.WalletCard.Builder setCardLabel(@Nullable CharSequence);
-  }
-
-  public final class WalletServiceEvent implements android.os.Parcelable {
-    ctor public WalletServiceEvent(int);
-    method public int describeContents();
-    method public int getEventType();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.quickaccesswallet.WalletServiceEvent> CREATOR;
-    field public static final int TYPE_NFC_PAYMENT_STARTED = 1; // 0x1
-  }
-
-}
-
-package android.service.quicksettings {
-
-  public final class Tile implements android.os.Parcelable {
-    method public int describeContents();
-    method public CharSequence getContentDescription();
-    method public android.graphics.drawable.Icon getIcon();
-    method public CharSequence getLabel();
-    method public int getState();
-    method @Nullable public CharSequence getStateDescription();
-    method @Nullable public CharSequence getSubtitle();
-    method public void setContentDescription(CharSequence);
-    method public void setIcon(android.graphics.drawable.Icon);
-    method public void setLabel(CharSequence);
-    method public void setState(int);
-    method public void setStateDescription(@Nullable CharSequence);
-    method public void setSubtitle(@Nullable CharSequence);
-    method public void updateTile();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.quicksettings.Tile> CREATOR;
-    field public static final int STATE_ACTIVE = 2; // 0x2
-    field public static final int STATE_INACTIVE = 1; // 0x1
-    field public static final int STATE_UNAVAILABLE = 0; // 0x0
-  }
-
-  public class TileService extends android.app.Service {
-    ctor public TileService();
-    method public final android.service.quicksettings.Tile getQsTile();
-    method public final boolean isLocked();
-    method public final boolean isSecure();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public void onClick();
-    method public void onStartListening();
-    method public void onStopListening();
-    method public void onTileAdded();
-    method public void onTileRemoved();
-    method public static final void requestListeningState(android.content.Context, android.content.ComponentName);
-    method public final void showDialog(android.app.Dialog);
-    method public final void startActivityAndCollapse(android.content.Intent);
-    method public final void unlockAndRun(Runnable);
-    field public static final String ACTION_QS_TILE = "android.service.quicksettings.action.QS_TILE";
-    field public static final String ACTION_QS_TILE_PREFERENCES = "android.service.quicksettings.action.QS_TILE_PREFERENCES";
-    field public static final String META_DATA_ACTIVE_TILE = "android.service.quicksettings.ACTIVE_TILE";
-    field public static final String META_DATA_TOGGLEABLE_TILE = "android.service.quicksettings.TOGGLEABLE_TILE";
-  }
-
-}
-
-package android.service.restrictions {
-
-  public abstract class RestrictionsReceiver extends android.content.BroadcastReceiver {
-    ctor public RestrictionsReceiver();
-    method public void onReceive(android.content.Context, android.content.Intent);
-    method public abstract void onRequestPermission(android.content.Context, String, String, String, android.os.PersistableBundle);
-  }
-
-}
-
-package android.service.textservice {
-
-  public abstract class SpellCheckerService extends android.app.Service {
-    ctor public SpellCheckerService();
-    method public abstract android.service.textservice.SpellCheckerService.Session createSession();
-    method public final android.os.IBinder onBind(android.content.Intent);
-    field public static final String SERVICE_INTERFACE = "android.service.textservice.SpellCheckerService";
-  }
-
-  public abstract static class SpellCheckerService.Session {
-    ctor public SpellCheckerService.Session();
-    method public android.os.Bundle getBundle();
-    method public String getLocale();
-    method public void onCancel();
-    method public void onClose();
-    method public abstract void onCreate();
-    method public android.view.textservice.SentenceSuggestionsInfo[] onGetSentenceSuggestionsMultiple(android.view.textservice.TextInfo[], int);
-    method public abstract android.view.textservice.SuggestionsInfo onGetSuggestions(android.view.textservice.TextInfo, int);
-    method public android.view.textservice.SuggestionsInfo[] onGetSuggestionsMultiple(android.view.textservice.TextInfo[], int, boolean);
-  }
-
-}
-
-package android.service.voice {
-
-  public class AlwaysOnHotwordDetector {
-    method public android.content.Intent createEnrollIntent();
-    method public android.content.Intent createReEnrollIntent();
-    method public android.content.Intent createUnEnrollIntent();
-    method public int getParameter(int);
-    method public int getSupportedAudioCapabilities();
-    method public int getSupportedRecognitionModes();
-    method @Nullable public android.service.voice.AlwaysOnHotwordDetector.ModelParamRange queryParameter(int);
-    method public int setParameter(int, int);
-    method public boolean startRecognition(int);
-    method public boolean stopRecognition();
-    field public static final int AUDIO_CAPABILITY_ECHO_CANCELLATION = 1; // 0x1
-    field public static final int AUDIO_CAPABILITY_NOISE_SUPPRESSION = 2; // 0x2
-    field public static final int MODEL_PARAM_THRESHOLD_FACTOR = 0; // 0x0
-    field public static final int RECOGNITION_FLAG_ALLOW_MULTIPLE_TRIGGERS = 2; // 0x2
-    field public static final int RECOGNITION_FLAG_CAPTURE_TRIGGER_AUDIO = 1; // 0x1
-    field public static final int RECOGNITION_FLAG_ENABLE_AUDIO_ECHO_CANCELLATION = 4; // 0x4
-    field public static final int RECOGNITION_FLAG_ENABLE_AUDIO_NOISE_SUPPRESSION = 8; // 0x8
-    field public static final int RECOGNITION_MODE_USER_IDENTIFICATION = 2; // 0x2
-    field public static final int RECOGNITION_MODE_VOICE_TRIGGER = 1; // 0x1
-    field public static final int STATE_HARDWARE_UNAVAILABLE = -2; // 0xfffffffe
-    field public static final int STATE_KEYPHRASE_ENROLLED = 2; // 0x2
-    field public static final int STATE_KEYPHRASE_UNENROLLED = 1; // 0x1
-    field @Deprecated public static final int STATE_KEYPHRASE_UNSUPPORTED = -1; // 0xffffffff
-  }
-
-  public abstract static class AlwaysOnHotwordDetector.Callback {
-    ctor public AlwaysOnHotwordDetector.Callback();
-    method public abstract void onAvailabilityChanged(int);
-    method public abstract void onDetected(@NonNull android.service.voice.AlwaysOnHotwordDetector.EventPayload);
-    method public abstract void onError();
-    method public abstract void onRecognitionPaused();
-    method public abstract void onRecognitionResumed();
-  }
-
-  public static class AlwaysOnHotwordDetector.EventPayload {
-    method @Nullable public android.media.AudioFormat getCaptureAudioFormat();
-    method @Nullable public byte[] getTriggerAudio();
-  }
-
-  public static final class AlwaysOnHotwordDetector.ModelParamRange {
-    method public int getEnd();
-    method public int getStart();
-  }
-
-  public class VoiceInteractionService extends android.app.Service {
-    ctor public VoiceInteractionService();
-    method public final android.service.voice.AlwaysOnHotwordDetector createAlwaysOnHotwordDetector(String, java.util.Locale, android.service.voice.AlwaysOnHotwordDetector.Callback);
-    method public int getDisabledShowContext();
-    method public static boolean isActiveService(android.content.Context, android.content.ComponentName);
-    method public android.os.IBinder onBind(android.content.Intent);
-    method @NonNull public java.util.Set<java.lang.String> onGetSupportedVoiceActions(@NonNull java.util.Set<java.lang.String>);
-    method public void onLaunchVoiceAssistFromKeyguard();
-    method public void onReady();
-    method public void onShutdown();
-    method public void setDisabledShowContext(int);
-    method public final void setUiHints(@NonNull android.os.Bundle);
-    method public void showSession(android.os.Bundle, int);
-    field public static final String SERVICE_INTERFACE = "android.service.voice.VoiceInteractionService";
-    field public static final String SERVICE_META_DATA = "android.voice_interaction";
-  }
-
-  public class VoiceInteractionSession implements android.content.ComponentCallbacks2 android.view.KeyEvent.Callback {
-    ctor public VoiceInteractionSession(android.content.Context);
-    ctor public VoiceInteractionSession(android.content.Context, android.os.Handler);
-    method public void closeSystemDialogs();
-    method public void dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method public void finish();
-    method public android.content.Context getContext();
-    method public int getDisabledShowContext();
-    method public android.view.LayoutInflater getLayoutInflater();
-    method public int getUserDisabledShowContext();
-    method public android.app.Dialog getWindow();
-    method public void hide();
-    method public void onAssistStructureFailure(Throwable);
-    method public void onBackPressed();
-    method public void onCancelRequest(android.service.voice.VoiceInteractionSession.Request);
-    method public void onCloseSystemDialogs();
-    method public void onComputeInsets(android.service.voice.VoiceInteractionSession.Insets);
-    method public void onConfigurationChanged(android.content.res.Configuration);
-    method public void onCreate();
-    method public android.view.View onCreateContentView();
-    method public void onDestroy();
-    method public void onDirectActionsInvalidated(@NonNull android.service.voice.VoiceInteractionSession.ActivityId);
-    method public boolean[] onGetSupportedCommands(String[]);
-    method @Deprecated public void onHandleAssist(@Nullable android.os.Bundle, @Nullable android.app.assist.AssistStructure, @Nullable android.app.assist.AssistContent);
-    method public void onHandleAssist(@NonNull android.service.voice.VoiceInteractionSession.AssistState);
-    method @Deprecated public void onHandleAssistSecondary(@Nullable android.os.Bundle, @Nullable android.app.assist.AssistStructure, @Nullable android.app.assist.AssistContent, int, int);
-    method public void onHandleScreenshot(@Nullable android.graphics.Bitmap);
-    method public void onHide();
-    method public boolean onKeyDown(int, android.view.KeyEvent);
-    method public boolean onKeyLongPress(int, android.view.KeyEvent);
-    method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
-    method public boolean onKeyUp(int, android.view.KeyEvent);
-    method public void onLockscreenShown();
-    method public void onLowMemory();
-    method public void onPrepareShow(android.os.Bundle, int);
-    method public void onRequestAbortVoice(android.service.voice.VoiceInteractionSession.AbortVoiceRequest);
-    method public void onRequestCommand(android.service.voice.VoiceInteractionSession.CommandRequest);
-    method public void onRequestCompleteVoice(android.service.voice.VoiceInteractionSession.CompleteVoiceRequest);
-    method public void onRequestConfirmation(android.service.voice.VoiceInteractionSession.ConfirmationRequest);
-    method public void onRequestPickOption(android.service.voice.VoiceInteractionSession.PickOptionRequest);
-    method public void onShow(android.os.Bundle, int);
-    method public void onTaskFinished(android.content.Intent, int);
-    method public void onTaskStarted(android.content.Intent, int);
-    method public void onTrimMemory(int);
-    method public final void performDirectAction(@NonNull android.app.DirectAction, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.os.Bundle>);
-    method public final void requestDirectActions(@NonNull android.service.voice.VoiceInteractionSession.ActivityId, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.util.List<android.app.DirectAction>>);
-    method public void setContentView(android.view.View);
-    method public void setDisabledShowContext(int);
-    method public void setKeepAwake(boolean);
-    method public void setTheme(int);
-    method public void setUiEnabled(boolean);
-    method public void show(android.os.Bundle, int);
-    method public void startAssistantActivity(android.content.Intent);
-    method public void startVoiceActivity(android.content.Intent);
-    field public static final int SHOW_SOURCE_ACTIVITY = 16; // 0x10
-    field public static final int SHOW_SOURCE_APPLICATION = 8; // 0x8
-    field public static final int SHOW_SOURCE_ASSIST_GESTURE = 4; // 0x4
-    field public static final int SHOW_SOURCE_AUTOMOTIVE_SYSTEM_UI = 128; // 0x80
-    field public static final int SHOW_SOURCE_NOTIFICATION = 64; // 0x40
-    field public static final int SHOW_SOURCE_PUSH_TO_TALK = 32; // 0x20
-    field public static final int SHOW_WITH_ASSIST = 1; // 0x1
-    field public static final int SHOW_WITH_SCREENSHOT = 2; // 0x2
-  }
-
-  public static final class VoiceInteractionSession.AbortVoiceRequest extends android.service.voice.VoiceInteractionSession.Request {
-    method @Deprecated @Nullable public CharSequence getMessage();
-    method @Nullable public android.app.VoiceInteractor.Prompt getVoicePrompt();
-    method public void sendAbortResult(android.os.Bundle);
-  }
-
-  public static class VoiceInteractionSession.ActivityId {
-  }
-
-  public static final class VoiceInteractionSession.AssistState {
-    method @NonNull public android.service.voice.VoiceInteractionSession.ActivityId getActivityId();
-    method @Nullable public android.app.assist.AssistContent getAssistContent();
-    method @Nullable public android.os.Bundle getAssistData();
-    method @Nullable public android.app.assist.AssistStructure getAssistStructure();
-    method @IntRange(from=0) public int getCount();
-    method @IntRange(from=0xffffffff) public int getIndex();
-    method public boolean isFocused();
-  }
-
-  public static final class VoiceInteractionSession.CommandRequest extends android.service.voice.VoiceInteractionSession.Request {
-    method public String getCommand();
-    method public void sendIntermediateResult(android.os.Bundle);
-    method public void sendResult(android.os.Bundle);
-  }
-
-  public static final class VoiceInteractionSession.CompleteVoiceRequest extends android.service.voice.VoiceInteractionSession.Request {
-    method @Deprecated @Nullable public CharSequence getMessage();
-    method @Nullable public android.app.VoiceInteractor.Prompt getVoicePrompt();
-    method public void sendCompleteResult(android.os.Bundle);
-  }
-
-  public static final class VoiceInteractionSession.ConfirmationRequest extends android.service.voice.VoiceInteractionSession.Request {
-    method @Deprecated @Nullable public CharSequence getPrompt();
-    method @Nullable public android.app.VoiceInteractor.Prompt getVoicePrompt();
-    method public void sendConfirmationResult(boolean, android.os.Bundle);
-  }
-
-  public static final class VoiceInteractionSession.Insets {
-    ctor public VoiceInteractionSession.Insets();
-    field public static final int TOUCHABLE_INSETS_CONTENT = 1; // 0x1
-    field public static final int TOUCHABLE_INSETS_FRAME = 0; // 0x0
-    field public static final int TOUCHABLE_INSETS_REGION = 3; // 0x3
-    field public final android.graphics.Rect contentInsets;
-    field public int touchableInsets;
-    field public final android.graphics.Region touchableRegion;
-  }
-
-  public static final class VoiceInteractionSession.PickOptionRequest extends android.service.voice.VoiceInteractionSession.Request {
-    method public android.app.VoiceInteractor.PickOptionRequest.Option[] getOptions();
-    method @Deprecated @Nullable public CharSequence getPrompt();
-    method @Nullable public android.app.VoiceInteractor.Prompt getVoicePrompt();
-    method public void sendIntermediatePickOptionResult(android.app.VoiceInteractor.PickOptionRequest.Option[], android.os.Bundle);
-    method public void sendPickOptionResult(android.app.VoiceInteractor.PickOptionRequest.Option[], android.os.Bundle);
-  }
-
-  public static class VoiceInteractionSession.Request {
-    method public void cancel();
-    method public String getCallingPackage();
-    method public int getCallingUid();
-    method public android.os.Bundle getExtras();
-    method public boolean isActive();
-  }
-
-  public abstract class VoiceInteractionSessionService extends android.app.Service {
-    ctor public VoiceInteractionSessionService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public abstract android.service.voice.VoiceInteractionSession onNewSession(android.os.Bundle);
-  }
-
-}
-
-package android.service.vr {
-
-  public abstract class VrListenerService extends android.app.Service {
-    ctor public VrListenerService();
-    method public static final boolean isVrModePackageEnabled(@NonNull android.content.Context, @NonNull android.content.ComponentName);
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public void onCurrentVrActivityChanged(android.content.ComponentName);
-    field public static final String SERVICE_INTERFACE = "android.service.vr.VrListenerService";
-  }
-
-}
-
-package android.service.wallpaper {
-
-  public abstract class WallpaperService extends android.app.Service {
-    ctor public WallpaperService();
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method public abstract android.service.wallpaper.WallpaperService.Engine onCreateEngine();
-    field public static final String SERVICE_INTERFACE = "android.service.wallpaper.WallpaperService";
-    field public static final String SERVICE_META_DATA = "android.service.wallpaper";
-  }
-
-  public class WallpaperService.Engine {
-    ctor public WallpaperService.Engine();
-    method protected void dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method public int getDesiredMinimumHeight();
-    method public int getDesiredMinimumWidth();
-    method @Nullable public android.content.Context getDisplayContext();
-    method public android.view.SurfaceHolder getSurfaceHolder();
-    method public boolean isPreview();
-    method public boolean isVisible();
-    method public void notifyColorsChanged();
-    method public void onApplyWindowInsets(android.view.WindowInsets);
-    method public android.os.Bundle onCommand(String, int, int, int, android.os.Bundle, boolean);
-    method @Nullable public android.app.WallpaperColors onComputeColors();
-    method public void onCreate(android.view.SurfaceHolder);
-    method public void onDesiredSizeChanged(int, int);
-    method public void onDestroy();
-    method public void onOffsetsChanged(float, float, float, float, int, int);
-    method public void onSurfaceChanged(android.view.SurfaceHolder, int, int, int);
-    method public void onSurfaceCreated(android.view.SurfaceHolder);
-    method public void onSurfaceDestroyed(android.view.SurfaceHolder);
-    method public void onSurfaceRedrawNeeded(android.view.SurfaceHolder);
-    method public void onTouchEvent(android.view.MotionEvent);
-    method public void onVisibilityChanged(boolean);
-    method public void onZoomChanged(@FloatRange(from=0.0f, to=1.0f) float);
-    method public void setOffsetNotificationsEnabled(boolean);
-    method public void setTouchEventsEnabled(boolean);
-  }
-
-}
-
-package android.speech {
-
-  public interface RecognitionListener {
-    method public void onBeginningOfSpeech();
-    method public void onBufferReceived(byte[]);
-    method public void onEndOfSpeech();
-    method public void onError(int);
-    method public void onEvent(int, android.os.Bundle);
-    method public void onPartialResults(android.os.Bundle);
-    method public void onReadyForSpeech(android.os.Bundle);
-    method public void onResults(android.os.Bundle);
-    method public void onRmsChanged(float);
-  }
-
-  public abstract class RecognitionService extends android.app.Service {
-    ctor public RecognitionService();
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method protected abstract void onCancel(android.speech.RecognitionService.Callback);
-    method protected abstract void onStartListening(android.content.Intent, android.speech.RecognitionService.Callback);
-    method protected abstract void onStopListening(android.speech.RecognitionService.Callback);
-    field public static final String SERVICE_INTERFACE = "android.speech.RecognitionService";
-    field public static final String SERVICE_META_DATA = "android.speech";
-  }
-
-  public class RecognitionService.Callback {
-    method public void beginningOfSpeech() throws android.os.RemoteException;
-    method public void bufferReceived(byte[]) throws android.os.RemoteException;
-    method public void endOfSpeech() throws android.os.RemoteException;
-    method public void error(int) throws android.os.RemoteException;
-    method public int getCallingUid();
-    method public void partialResults(android.os.Bundle) throws android.os.RemoteException;
-    method public void readyForSpeech(android.os.Bundle) throws android.os.RemoteException;
-    method public void results(android.os.Bundle) throws android.os.RemoteException;
-    method public void rmsChanged(float) throws android.os.RemoteException;
-  }
-
-  public class RecognizerIntent {
-    method public static final android.content.Intent getVoiceDetailsIntent(android.content.Context);
-    field public static final String ACTION_GET_LANGUAGE_DETAILS = "android.speech.action.GET_LANGUAGE_DETAILS";
-    field public static final String ACTION_RECOGNIZE_SPEECH = "android.speech.action.RECOGNIZE_SPEECH";
-    field public static final String ACTION_VOICE_SEARCH_HANDS_FREE = "android.speech.action.VOICE_SEARCH_HANDS_FREE";
-    field public static final String ACTION_WEB_SEARCH = "android.speech.action.WEB_SEARCH";
-    field public static final String DETAILS_META_DATA = "android.speech.DETAILS";
-    field public static final String EXTRA_CALLING_PACKAGE = "calling_package";
-    field public static final String EXTRA_CONFIDENCE_SCORES = "android.speech.extra.CONFIDENCE_SCORES";
-    field public static final String EXTRA_LANGUAGE = "android.speech.extra.LANGUAGE";
-    field public static final String EXTRA_LANGUAGE_MODEL = "android.speech.extra.LANGUAGE_MODEL";
-    field public static final String EXTRA_LANGUAGE_PREFERENCE = "android.speech.extra.LANGUAGE_PREFERENCE";
-    field public static final String EXTRA_MAX_RESULTS = "android.speech.extra.MAX_RESULTS";
-    field public static final String EXTRA_ONLY_RETURN_LANGUAGE_PREFERENCE = "android.speech.extra.ONLY_RETURN_LANGUAGE_PREFERENCE";
-    field public static final String EXTRA_ORIGIN = "android.speech.extra.ORIGIN";
-    field public static final String EXTRA_PARTIAL_RESULTS = "android.speech.extra.PARTIAL_RESULTS";
-    field public static final String EXTRA_PREFER_OFFLINE = "android.speech.extra.PREFER_OFFLINE";
-    field public static final String EXTRA_PROMPT = "android.speech.extra.PROMPT";
-    field public static final String EXTRA_RESULTS = "android.speech.extra.RESULTS";
-    field public static final String EXTRA_RESULTS_PENDINGINTENT = "android.speech.extra.RESULTS_PENDINGINTENT";
-    field public static final String EXTRA_RESULTS_PENDINGINTENT_BUNDLE = "android.speech.extra.RESULTS_PENDINGINTENT_BUNDLE";
-    field public static final String EXTRA_SECURE = "android.speech.extras.EXTRA_SECURE";
-    field public static final String EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS = "android.speech.extras.SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS";
-    field public static final String EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS = "android.speech.extras.SPEECH_INPUT_MINIMUM_LENGTH_MILLIS";
-    field public static final String EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS = "android.speech.extras.SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS";
-    field public static final String EXTRA_SUPPORTED_LANGUAGES = "android.speech.extra.SUPPORTED_LANGUAGES";
-    field public static final String EXTRA_WEB_SEARCH_ONLY = "android.speech.extra.WEB_SEARCH_ONLY";
-    field public static final String LANGUAGE_MODEL_FREE_FORM = "free_form";
-    field public static final String LANGUAGE_MODEL_WEB_SEARCH = "web_search";
-    field public static final int RESULT_AUDIO_ERROR = 5; // 0x5
-    field public static final int RESULT_CLIENT_ERROR = 2; // 0x2
-    field public static final int RESULT_NETWORK_ERROR = 4; // 0x4
-    field public static final int RESULT_NO_MATCH = 1; // 0x1
-    field public static final int RESULT_SERVER_ERROR = 3; // 0x3
-  }
-
-  public class RecognizerResultsIntent {
-    field public static final String ACTION_VOICE_SEARCH_RESULTS = "android.speech.action.VOICE_SEARCH_RESULTS";
-    field public static final String EXTRA_VOICE_SEARCH_RESULT_HTML = "android.speech.extras.VOICE_SEARCH_RESULT_HTML";
-    field public static final String EXTRA_VOICE_SEARCH_RESULT_HTML_BASE_URLS = "android.speech.extras.VOICE_SEARCH_RESULT_HTML_BASE_URLS";
-    field public static final String EXTRA_VOICE_SEARCH_RESULT_HTTP_HEADERS = "android.speech.extras.EXTRA_VOICE_SEARCH_RESULT_HTTP_HEADERS";
-    field public static final String EXTRA_VOICE_SEARCH_RESULT_STRINGS = "android.speech.extras.VOICE_SEARCH_RESULT_STRINGS";
-    field public static final String EXTRA_VOICE_SEARCH_RESULT_URLS = "android.speech.extras.VOICE_SEARCH_RESULT_URLS";
-    field public static final String URI_SCHEME_INLINE = "inline";
-  }
-
-  public class SpeechRecognizer {
-    method public void cancel();
-    method public static android.speech.SpeechRecognizer createSpeechRecognizer(android.content.Context);
-    method public static android.speech.SpeechRecognizer createSpeechRecognizer(android.content.Context, android.content.ComponentName);
-    method public void destroy();
-    method public static boolean isRecognitionAvailable(android.content.Context);
-    method public void setRecognitionListener(android.speech.RecognitionListener);
-    method public void startListening(android.content.Intent);
-    method public void stopListening();
-    field public static final String CONFIDENCE_SCORES = "confidence_scores";
-    field public static final int ERROR_AUDIO = 3; // 0x3
-    field public static final int ERROR_CLIENT = 5; // 0x5
-    field public static final int ERROR_INSUFFICIENT_PERMISSIONS = 9; // 0x9
-    field public static final int ERROR_NETWORK = 2; // 0x2
-    field public static final int ERROR_NETWORK_TIMEOUT = 1; // 0x1
-    field public static final int ERROR_NO_MATCH = 7; // 0x7
-    field public static final int ERROR_RECOGNIZER_BUSY = 8; // 0x8
-    field public static final int ERROR_SERVER = 4; // 0x4
-    field public static final int ERROR_SPEECH_TIMEOUT = 6; // 0x6
-    field public static final String RESULTS_RECOGNITION = "results_recognition";
-  }
-
-}
-
-package android.speech.tts {
-
-  public interface SynthesisCallback {
-    method public int audioAvailable(byte[], int, int);
-    method public int done();
-    method public void error();
-    method public void error(int);
-    method public int getMaxBufferSize();
-    method public boolean hasFinished();
-    method public boolean hasStarted();
-    method public default void rangeStart(int, int, int);
-    method public int start(int, int, @IntRange(from=1, to=2) int);
-  }
-
-  public final class SynthesisRequest {
-    ctor public SynthesisRequest(String, android.os.Bundle);
-    ctor public SynthesisRequest(CharSequence, android.os.Bundle);
-    method public int getCallerUid();
-    method public CharSequence getCharSequenceText();
-    method public String getCountry();
-    method public String getLanguage();
-    method public android.os.Bundle getParams();
-    method public int getPitch();
-    method public int getSpeechRate();
-    method @Deprecated public String getText();
-    method public String getVariant();
-    method public String getVoiceName();
-  }
-
-  public class TextToSpeech {
-    ctor public TextToSpeech(android.content.Context, android.speech.tts.TextToSpeech.OnInitListener);
-    ctor public TextToSpeech(android.content.Context, android.speech.tts.TextToSpeech.OnInitListener, String);
-    method public int addEarcon(String, String, @RawRes int);
-    method @Deprecated public int addEarcon(String, String);
-    method public int addEarcon(String, java.io.File);
-    method public int addSpeech(String, String, @RawRes int);
-    method public int addSpeech(CharSequence, String, @RawRes int);
-    method public int addSpeech(String, String);
-    method public int addSpeech(CharSequence, java.io.File);
-    method @Deprecated public boolean areDefaultsEnforced();
-    method public java.util.Set<java.util.Locale> getAvailableLanguages();
-    method public String getDefaultEngine();
-    method @Deprecated public java.util.Locale getDefaultLanguage();
-    method public android.speech.tts.Voice getDefaultVoice();
-    method public java.util.List<android.speech.tts.TextToSpeech.EngineInfo> getEngines();
-    method @Deprecated public java.util.Set<java.lang.String> getFeatures(java.util.Locale);
-    method @Deprecated public java.util.Locale getLanguage();
-    method public static int getMaxSpeechInputLength();
-    method public android.speech.tts.Voice getVoice();
-    method public java.util.Set<android.speech.tts.Voice> getVoices();
-    method public int isLanguageAvailable(java.util.Locale);
-    method public boolean isSpeaking();
-    method public int playEarcon(String, int, android.os.Bundle, String);
-    method @Deprecated public int playEarcon(String, int, java.util.HashMap<java.lang.String,java.lang.String>);
-    method @Deprecated public int playSilence(long, int, java.util.HashMap<java.lang.String,java.lang.String>);
-    method public int playSilentUtterance(long, int, String);
-    method public int setAudioAttributes(android.media.AudioAttributes);
-    method @Deprecated public int setEngineByPackageName(String);
-    method public int setLanguage(java.util.Locale);
-    method @Deprecated public int setOnUtteranceCompletedListener(android.speech.tts.TextToSpeech.OnUtteranceCompletedListener);
-    method public int setOnUtteranceProgressListener(android.speech.tts.UtteranceProgressListener);
-    method public int setPitch(float);
-    method public int setSpeechRate(float);
-    method public int setVoice(android.speech.tts.Voice);
-    method public void shutdown();
-    method public int speak(CharSequence, int, android.os.Bundle, String);
-    method @Deprecated public int speak(String, int, java.util.HashMap<java.lang.String,java.lang.String>);
-    method public int stop();
-    method public int synthesizeToFile(@NonNull CharSequence, @NonNull android.os.Bundle, @NonNull android.os.ParcelFileDescriptor, @NonNull String);
-    method public int synthesizeToFile(CharSequence, android.os.Bundle, java.io.File, String);
-    method @Deprecated public int synthesizeToFile(String, java.util.HashMap<java.lang.String,java.lang.String>, String);
-    field public static final String ACTION_TTS_QUEUE_PROCESSING_COMPLETED = "android.speech.tts.TTS_QUEUE_PROCESSING_COMPLETED";
-    field public static final int ERROR = -1; // 0xffffffff
-    field public static final int ERROR_INVALID_REQUEST = -8; // 0xfffffff8
-    field public static final int ERROR_NETWORK = -6; // 0xfffffffa
-    field public static final int ERROR_NETWORK_TIMEOUT = -7; // 0xfffffff9
-    field public static final int ERROR_NOT_INSTALLED_YET = -9; // 0xfffffff7
-    field public static final int ERROR_OUTPUT = -5; // 0xfffffffb
-    field public static final int ERROR_SERVICE = -4; // 0xfffffffc
-    field public static final int ERROR_SYNTHESIS = -3; // 0xfffffffd
-    field public static final int LANG_AVAILABLE = 0; // 0x0
-    field public static final int LANG_COUNTRY_AVAILABLE = 1; // 0x1
-    field public static final int LANG_COUNTRY_VAR_AVAILABLE = 2; // 0x2
-    field public static final int LANG_MISSING_DATA = -1; // 0xffffffff
-    field public static final int LANG_NOT_SUPPORTED = -2; // 0xfffffffe
-    field public static final int QUEUE_ADD = 1; // 0x1
-    field public static final int QUEUE_FLUSH = 0; // 0x0
-    field public static final int STOPPED = -2; // 0xfffffffe
-    field public static final int SUCCESS = 0; // 0x0
-  }
-
-  public class TextToSpeech.Engine {
-    ctor public TextToSpeech.Engine();
-    field public static final String ACTION_CHECK_TTS_DATA = "android.speech.tts.engine.CHECK_TTS_DATA";
-    field public static final String ACTION_GET_SAMPLE_TEXT = "android.speech.tts.engine.GET_SAMPLE_TEXT";
-    field public static final String ACTION_INSTALL_TTS_DATA = "android.speech.tts.engine.INSTALL_TTS_DATA";
-    field public static final String ACTION_TTS_DATA_INSTALLED = "android.speech.tts.engine.TTS_DATA_INSTALLED";
-    field @Deprecated public static final int CHECK_VOICE_DATA_BAD_DATA = -1; // 0xffffffff
-    field public static final int CHECK_VOICE_DATA_FAIL = 0; // 0x0
-    field @Deprecated public static final int CHECK_VOICE_DATA_MISSING_DATA = -2; // 0xfffffffe
-    field @Deprecated public static final int CHECK_VOICE_DATA_MISSING_VOLUME = -3; // 0xfffffffd
-    field public static final int CHECK_VOICE_DATA_PASS = 1; // 0x1
-    field public static final int DEFAULT_STREAM = 3; // 0x3
-    field public static final String EXTRA_AVAILABLE_VOICES = "availableVoices";
-    field @Deprecated public static final String EXTRA_CHECK_VOICE_DATA_FOR = "checkVoiceDataFor";
-    field public static final String EXTRA_SAMPLE_TEXT = "sampleText";
-    field @Deprecated public static final String EXTRA_TTS_DATA_INSTALLED = "dataInstalled";
-    field public static final String EXTRA_UNAVAILABLE_VOICES = "unavailableVoices";
-    field @Deprecated public static final String EXTRA_VOICE_DATA_FILES = "dataFiles";
-    field @Deprecated public static final String EXTRA_VOICE_DATA_FILES_INFO = "dataFilesInfo";
-    field @Deprecated public static final String EXTRA_VOICE_DATA_ROOT_DIRECTORY = "dataRoot";
-    field public static final String INTENT_ACTION_TTS_SERVICE = "android.intent.action.TTS_SERVICE";
-    field @Deprecated public static final String KEY_FEATURE_EMBEDDED_SYNTHESIS = "embeddedTts";
-    field public static final String KEY_FEATURE_NETWORK_RETRIES_COUNT = "networkRetriesCount";
-    field @Deprecated public static final String KEY_FEATURE_NETWORK_SYNTHESIS = "networkTts";
-    field public static final String KEY_FEATURE_NETWORK_TIMEOUT_MS = "networkTimeoutMs";
-    field public static final String KEY_FEATURE_NOT_INSTALLED = "notInstalled";
-    field public static final String KEY_PARAM_PAN = "pan";
-    field public static final String KEY_PARAM_SESSION_ID = "sessionId";
-    field public static final String KEY_PARAM_STREAM = "streamType";
-    field public static final String KEY_PARAM_UTTERANCE_ID = "utteranceId";
-    field public static final String KEY_PARAM_VOLUME = "volume";
-    field public static final String SERVICE_META_DATA = "android.speech.tts";
-  }
-
-  public static class TextToSpeech.EngineInfo {
-    ctor public TextToSpeech.EngineInfo();
-    field public int icon;
-    field public String label;
-    field public String name;
-  }
-
-  public static interface TextToSpeech.OnInitListener {
-    method public void onInit(int);
-  }
-
-  @Deprecated public static interface TextToSpeech.OnUtteranceCompletedListener {
-    method @Deprecated public void onUtteranceCompleted(String);
-  }
-
-  public abstract class TextToSpeechService extends android.app.Service {
-    ctor public TextToSpeechService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public String onGetDefaultVoiceNameFor(String, String, String);
-    method protected java.util.Set<java.lang.String> onGetFeaturesForLanguage(String, String, String);
-    method protected abstract String[] onGetLanguage();
-    method public java.util.List<android.speech.tts.Voice> onGetVoices();
-    method protected abstract int onIsLanguageAvailable(String, String, String);
-    method public int onIsValidVoiceName(String);
-    method protected abstract int onLoadLanguage(String, String, String);
-    method public int onLoadVoice(String);
-    method protected abstract void onStop();
-    method protected abstract void onSynthesizeText(android.speech.tts.SynthesisRequest, android.speech.tts.SynthesisCallback);
-  }
-
-  public abstract class UtteranceProgressListener {
-    ctor public UtteranceProgressListener();
-    method public void onAudioAvailable(String, byte[]);
-    method public void onBeginSynthesis(String, int, int, int);
-    method public abstract void onDone(String);
-    method @Deprecated public abstract void onError(String);
-    method public void onError(String, int);
-    method public void onRangeStart(String, int, int, int);
-    method public abstract void onStart(String);
-    method public void onStop(String, boolean);
-  }
-
-  public class Voice implements android.os.Parcelable {
-    ctor public Voice(String, java.util.Locale, int, int, boolean, java.util.Set<java.lang.String>);
-    method public int describeContents();
-    method public java.util.Set<java.lang.String> getFeatures();
-    method public int getLatency();
-    method public java.util.Locale getLocale();
-    method public String getName();
-    method public int getQuality();
-    method public boolean isNetworkConnectionRequired();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.speech.tts.Voice> CREATOR;
-    field public static final int LATENCY_HIGH = 400; // 0x190
-    field public static final int LATENCY_LOW = 200; // 0xc8
-    field public static final int LATENCY_NORMAL = 300; // 0x12c
-    field public static final int LATENCY_VERY_HIGH = 500; // 0x1f4
-    field public static final int LATENCY_VERY_LOW = 100; // 0x64
-    field public static final int QUALITY_HIGH = 400; // 0x190
-    field public static final int QUALITY_LOW = 200; // 0xc8
-    field public static final int QUALITY_NORMAL = 300; // 0x12c
-    field public static final int QUALITY_VERY_HIGH = 500; // 0x1f4
-    field public static final int QUALITY_VERY_LOW = 100; // 0x64
-  }
-
-}
-
-package android.system {
-
-  public final class ErrnoException extends java.lang.Exception {
-    ctor public ErrnoException(String, int);
-    ctor public ErrnoException(String, int, Throwable);
-    method @NonNull public java.io.IOException rethrowAsIOException() throws java.io.IOException;
-    method @NonNull public java.net.SocketException rethrowAsSocketException() throws java.net.SocketException;
-    field public final int errno;
-  }
-
-  public class Int64Ref {
-    ctor public Int64Ref(long);
-    field public long value;
-  }
-
-  public final class Os {
-    method public static java.io.FileDescriptor accept(java.io.FileDescriptor, java.net.InetSocketAddress) throws android.system.ErrnoException, java.net.SocketException;
-    method public static boolean access(String, int) throws android.system.ErrnoException;
-    method public static void bind(java.io.FileDescriptor, java.net.InetAddress, int) throws android.system.ErrnoException, java.net.SocketException;
-    method public static void bind(@NonNull java.io.FileDescriptor, @NonNull java.net.SocketAddress) throws android.system.ErrnoException, java.net.SocketException;
-    method public static void chmod(String, int) throws android.system.ErrnoException;
-    method public static void chown(String, int, int) throws android.system.ErrnoException;
-    method public static void close(java.io.FileDescriptor) throws android.system.ErrnoException;
-    method public static void connect(java.io.FileDescriptor, java.net.InetAddress, int) throws android.system.ErrnoException, java.net.SocketException;
-    method public static void connect(@NonNull java.io.FileDescriptor, @NonNull java.net.SocketAddress) throws android.system.ErrnoException, java.net.SocketException;
-    method public static java.io.FileDescriptor dup(java.io.FileDescriptor) throws android.system.ErrnoException;
-    method public static java.io.FileDescriptor dup2(java.io.FileDescriptor, int) throws android.system.ErrnoException;
-    method public static String[] environ();
-    method public static void execv(String, String[]) throws android.system.ErrnoException;
-    method public static void execve(String, String[], String[]) throws android.system.ErrnoException;
-    method public static void fchmod(java.io.FileDescriptor, int) throws android.system.ErrnoException;
-    method public static void fchown(java.io.FileDescriptor, int, int) throws android.system.ErrnoException;
-    method public static int fcntlInt(@NonNull java.io.FileDescriptor, int, int) throws android.system.ErrnoException;
-    method public static void fdatasync(java.io.FileDescriptor) throws android.system.ErrnoException;
-    method public static android.system.StructStat fstat(java.io.FileDescriptor) throws android.system.ErrnoException;
-    method public static android.system.StructStatVfs fstatvfs(java.io.FileDescriptor) throws android.system.ErrnoException;
-    method public static void fsync(java.io.FileDescriptor) throws android.system.ErrnoException;
-    method public static void ftruncate(java.io.FileDescriptor, long) throws android.system.ErrnoException;
-    method public static String gai_strerror(int);
-    method public static int getegid();
-    method public static String getenv(String);
-    method public static int geteuid();
-    method public static int getgid();
-    method public static java.net.SocketAddress getpeername(java.io.FileDescriptor) throws android.system.ErrnoException;
-    method public static int getpid();
-    method public static int getppid();
-    method public static java.net.SocketAddress getsockname(java.io.FileDescriptor) throws android.system.ErrnoException;
-    method @NonNull public static android.system.StructTimeval getsockoptTimeval(@NonNull java.io.FileDescriptor, int, int) throws android.system.ErrnoException;
-    method public static int gettid();
-    method public static int getuid();
-    method public static byte[] getxattr(String, String) throws android.system.ErrnoException;
-    method public static String if_indextoname(int);
-    method public static int if_nametoindex(String);
-    method public static java.net.InetAddress inet_pton(int, String);
-    method public static boolean isatty(java.io.FileDescriptor);
-    method public static void kill(int, int) throws android.system.ErrnoException;
-    method public static void lchown(String, int, int) throws android.system.ErrnoException;
-    method public static void link(String, String) throws android.system.ErrnoException;
-    method public static void listen(java.io.FileDescriptor, int) throws android.system.ErrnoException;
-    method public static String[] listxattr(String) throws android.system.ErrnoException;
-    method public static long lseek(java.io.FileDescriptor, long, int) throws android.system.ErrnoException;
-    method public static android.system.StructStat lstat(String) throws android.system.ErrnoException;
-    method @NonNull public static java.io.FileDescriptor memfd_create(@NonNull String, int) throws android.system.ErrnoException;
-    method public static void mincore(long, long, byte[]) throws android.system.ErrnoException;
-    method public static void mkdir(String, int) throws android.system.ErrnoException;
-    method public static void mkfifo(String, int) throws android.system.ErrnoException;
-    method public static void mlock(long, long) throws android.system.ErrnoException;
-    method public static long mmap(long, long, int, int, java.io.FileDescriptor, long) throws android.system.ErrnoException;
-    method public static void msync(long, long, int) throws android.system.ErrnoException;
-    method public static void munlock(long, long) throws android.system.ErrnoException;
-    method public static void munmap(long, long) throws android.system.ErrnoException;
-    method public static java.io.FileDescriptor open(String, int, int) throws android.system.ErrnoException;
-    method public static java.io.FileDescriptor[] pipe() throws android.system.ErrnoException;
-    method public static int poll(android.system.StructPollfd[], int) throws android.system.ErrnoException;
-    method public static void posix_fallocate(java.io.FileDescriptor, long, long) throws android.system.ErrnoException;
-    method public static int prctl(int, long, long, long, long) throws android.system.ErrnoException;
-    method public static int pread(java.io.FileDescriptor, java.nio.ByteBuffer, long) throws android.system.ErrnoException, java.io.InterruptedIOException;
-    method public static int pread(java.io.FileDescriptor, byte[], int, int, long) throws android.system.ErrnoException, java.io.InterruptedIOException;
-    method public static int pwrite(java.io.FileDescriptor, java.nio.ByteBuffer, long) throws android.system.ErrnoException, java.io.InterruptedIOException;
-    method public static int pwrite(java.io.FileDescriptor, byte[], int, int, long) throws android.system.ErrnoException, java.io.InterruptedIOException;
-    method public static int read(java.io.FileDescriptor, java.nio.ByteBuffer) throws android.system.ErrnoException, java.io.InterruptedIOException;
-    method public static int read(java.io.FileDescriptor, byte[], int, int) throws android.system.ErrnoException, java.io.InterruptedIOException;
-    method public static String readlink(String) throws android.system.ErrnoException;
-    method public static int readv(java.io.FileDescriptor, Object[], int[], int[]) throws android.system.ErrnoException, java.io.InterruptedIOException;
-    method public static int recvfrom(java.io.FileDescriptor, java.nio.ByteBuffer, int, java.net.InetSocketAddress) throws android.system.ErrnoException, java.net.SocketException;
-    method public static int recvfrom(java.io.FileDescriptor, byte[], int, int, int, java.net.InetSocketAddress) throws android.system.ErrnoException, java.net.SocketException;
-    method public static void remove(String) throws android.system.ErrnoException;
-    method public static void removexattr(String, String) throws android.system.ErrnoException;
-    method public static void rename(String, String) throws android.system.ErrnoException;
-    method public static long sendfile(java.io.FileDescriptor, java.io.FileDescriptor, android.system.Int64Ref, long) throws android.system.ErrnoException;
-    method public static int sendto(java.io.FileDescriptor, java.nio.ByteBuffer, int, java.net.InetAddress, int) throws android.system.ErrnoException, java.net.SocketException;
-    method public static int sendto(java.io.FileDescriptor, byte[], int, int, int, java.net.InetAddress, int) throws android.system.ErrnoException, java.net.SocketException;
-    method public static int sendto(@NonNull java.io.FileDescriptor, @NonNull byte[], int, int, int, @Nullable java.net.SocketAddress) throws android.system.ErrnoException, java.net.SocketException;
-    method @Deprecated public static void setegid(int) throws android.system.ErrnoException;
-    method public static void setenv(String, String, boolean) throws android.system.ErrnoException;
-    method @Deprecated public static void seteuid(int) throws android.system.ErrnoException;
-    method @Deprecated public static void setgid(int) throws android.system.ErrnoException;
-    method public static int setsid() throws android.system.ErrnoException;
-    method public static void setsockoptInt(java.io.FileDescriptor, int, int, int) throws android.system.ErrnoException;
-    method public static void setsockoptTimeval(@NonNull java.io.FileDescriptor, int, int, @NonNull android.system.StructTimeval) throws android.system.ErrnoException;
-    method @Deprecated public static void setuid(int) throws android.system.ErrnoException;
-    method public static void setxattr(String, String, byte[], int) throws android.system.ErrnoException;
-    method public static void shutdown(java.io.FileDescriptor, int) throws android.system.ErrnoException;
-    method public static java.io.FileDescriptor socket(int, int, int) throws android.system.ErrnoException;
-    method public static void socketpair(int, int, int, java.io.FileDescriptor, java.io.FileDescriptor) throws android.system.ErrnoException;
-    method public static android.system.StructStat stat(String) throws android.system.ErrnoException;
-    method public static android.system.StructStatVfs statvfs(String) throws android.system.ErrnoException;
-    method public static String strerror(int);
-    method public static String strsignal(int);
-    method public static void symlink(String, String) throws android.system.ErrnoException;
-    method public static long sysconf(int);
-    method public static void tcdrain(java.io.FileDescriptor) throws android.system.ErrnoException;
-    method public static void tcsendbreak(java.io.FileDescriptor, int) throws android.system.ErrnoException;
-    method public static int umask(int);
-    method public static android.system.StructUtsname uname();
-    method public static void unsetenv(String) throws android.system.ErrnoException;
-    method public static int write(java.io.FileDescriptor, java.nio.ByteBuffer) throws android.system.ErrnoException, java.io.InterruptedIOException;
-    method public static int write(java.io.FileDescriptor, byte[], int, int) throws android.system.ErrnoException, java.io.InterruptedIOException;
-    method public static int writev(java.io.FileDescriptor, Object[], int[], int[]) throws android.system.ErrnoException, java.io.InterruptedIOException;
-  }
-
-  public final class OsConstants {
-    method public static boolean S_ISBLK(int);
-    method public static boolean S_ISCHR(int);
-    method public static boolean S_ISDIR(int);
-    method public static boolean S_ISFIFO(int);
-    method public static boolean S_ISLNK(int);
-    method public static boolean S_ISREG(int);
-    method public static boolean S_ISSOCK(int);
-    method public static boolean WCOREDUMP(int);
-    method public static int WEXITSTATUS(int);
-    method public static boolean WIFEXITED(int);
-    method public static boolean WIFSIGNALED(int);
-    method public static boolean WIFSTOPPED(int);
-    method public static int WSTOPSIG(int);
-    method public static int WTERMSIG(int);
-    method public static String errnoName(int);
-    method public static String gaiName(int);
-    field public static final int AF_INET;
-    field public static final int AF_INET6;
-    field public static final int AF_NETLINK;
-    field public static final int AF_PACKET;
-    field public static final int AF_UNIX;
-    field public static final int AF_UNSPEC;
-    field public static final int AI_ADDRCONFIG;
-    field public static final int AI_ALL;
-    field public static final int AI_CANONNAME;
-    field public static final int AI_NUMERICHOST;
-    field public static final int AI_NUMERICSERV;
-    field public static final int AI_PASSIVE;
-    field public static final int AI_V4MAPPED;
-    field public static final int ARPHRD_ETHER;
-    field public static final int CAP_AUDIT_CONTROL;
-    field public static final int CAP_AUDIT_WRITE;
-    field public static final int CAP_BLOCK_SUSPEND;
-    field public static final int CAP_CHOWN;
-    field public static final int CAP_DAC_OVERRIDE;
-    field public static final int CAP_DAC_READ_SEARCH;
-    field public static final int CAP_FOWNER;
-    field public static final int CAP_FSETID;
-    field public static final int CAP_IPC_LOCK;
-    field public static final int CAP_IPC_OWNER;
-    field public static final int CAP_KILL;
-    field public static final int CAP_LAST_CAP;
-    field public static final int CAP_LEASE;
-    field public static final int CAP_LINUX_IMMUTABLE;
-    field public static final int CAP_MAC_ADMIN;
-    field public static final int CAP_MAC_OVERRIDE;
-    field public static final int CAP_MKNOD;
-    field public static final int CAP_NET_ADMIN;
-    field public static final int CAP_NET_BIND_SERVICE;
-    field public static final int CAP_NET_BROADCAST;
-    field public static final int CAP_NET_RAW;
-    field public static final int CAP_SETFCAP;
-    field public static final int CAP_SETGID;
-    field public static final int CAP_SETPCAP;
-    field public static final int CAP_SETUID;
-    field public static final int CAP_SYSLOG;
-    field public static final int CAP_SYS_ADMIN;
-    field public static final int CAP_SYS_BOOT;
-    field public static final int CAP_SYS_CHROOT;
-    field public static final int CAP_SYS_MODULE;
-    field public static final int CAP_SYS_NICE;
-    field public static final int CAP_SYS_PACCT;
-    field public static final int CAP_SYS_PTRACE;
-    field public static final int CAP_SYS_RAWIO;
-    field public static final int CAP_SYS_RESOURCE;
-    field public static final int CAP_SYS_TIME;
-    field public static final int CAP_SYS_TTY_CONFIG;
-    field public static final int CAP_WAKE_ALARM;
-    field public static final int E2BIG;
-    field public static final int EACCES;
-    field public static final int EADDRINUSE;
-    field public static final int EADDRNOTAVAIL;
-    field public static final int EAFNOSUPPORT;
-    field public static final int EAGAIN;
-    field public static final int EAI_AGAIN;
-    field public static final int EAI_BADFLAGS;
-    field public static final int EAI_FAIL;
-    field public static final int EAI_FAMILY;
-    field public static final int EAI_MEMORY;
-    field public static final int EAI_NODATA;
-    field public static final int EAI_NONAME;
-    field public static final int EAI_OVERFLOW;
-    field public static final int EAI_SERVICE;
-    field public static final int EAI_SOCKTYPE;
-    field public static final int EAI_SYSTEM;
-    field public static final int EALREADY;
-    field public static final int EBADF;
-    field public static final int EBADMSG;
-    field public static final int EBUSY;
-    field public static final int ECANCELED;
-    field public static final int ECHILD;
-    field public static final int ECONNABORTED;
-    field public static final int ECONNREFUSED;
-    field public static final int ECONNRESET;
-    field public static final int EDEADLK;
-    field public static final int EDESTADDRREQ;
-    field public static final int EDOM;
-    field public static final int EDQUOT;
-    field public static final int EEXIST;
-    field public static final int EFAULT;
-    field public static final int EFBIG;
-    field public static final int EHOSTUNREACH;
-    field public static final int EIDRM;
-    field public static final int EILSEQ;
-    field public static final int EINPROGRESS;
-    field public static final int EINTR;
-    field public static final int EINVAL;
-    field public static final int EIO;
-    field public static final int EISCONN;
-    field public static final int EISDIR;
-    field public static final int ELOOP;
-    field public static final int EMFILE;
-    field public static final int EMLINK;
-    field public static final int EMSGSIZE;
-    field public static final int EMULTIHOP;
-    field public static final int ENAMETOOLONG;
-    field public static final int ENETDOWN;
-    field public static final int ENETRESET;
-    field public static final int ENETUNREACH;
-    field public static final int ENFILE;
-    field public static final int ENOBUFS;
-    field public static final int ENODATA;
-    field public static final int ENODEV;
-    field public static final int ENOENT;
-    field public static final int ENOEXEC;
-    field public static final int ENOLCK;
-    field public static final int ENOLINK;
-    field public static final int ENOMEM;
-    field public static final int ENOMSG;
-    field public static final int ENOPROTOOPT;
-    field public static final int ENOSPC;
-    field public static final int ENOSR;
-    field public static final int ENOSTR;
-    field public static final int ENOSYS;
-    field public static final int ENOTCONN;
-    field public static final int ENOTDIR;
-    field public static final int ENOTEMPTY;
-    field public static final int ENOTSOCK;
-    field public static final int ENOTSUP;
-    field public static final int ENOTTY;
-    field public static final int ENXIO;
-    field public static final int EOPNOTSUPP;
-    field public static final int EOVERFLOW;
-    field public static final int EPERM;
-    field public static final int EPIPE;
-    field public static final int EPROTO;
-    field public static final int EPROTONOSUPPORT;
-    field public static final int EPROTOTYPE;
-    field public static final int ERANGE;
-    field public static final int EROFS;
-    field public static final int ESPIPE;
-    field public static final int ESRCH;
-    field public static final int ESTALE;
-    field public static final int ETH_P_ALL;
-    field public static final int ETH_P_ARP;
-    field public static final int ETH_P_IP;
-    field public static final int ETH_P_IPV6;
-    field public static final int ETIME;
-    field public static final int ETIMEDOUT;
-    field public static final int ETXTBSY;
-    field public static final int EXDEV;
-    field public static final int EXIT_FAILURE;
-    field public static final int EXIT_SUCCESS;
-    field public static final int FD_CLOEXEC;
-    field public static final int FIONREAD;
-    field public static final int F_DUPFD;
-    field public static final int F_DUPFD_CLOEXEC;
-    field public static final int F_GETFD;
-    field public static final int F_GETFL;
-    field public static final int F_GETLK;
-    field public static final int F_GETLK64;
-    field public static final int F_GETOWN;
-    field public static final int F_OK;
-    field public static final int F_RDLCK;
-    field public static final int F_SETFD;
-    field public static final int F_SETFL;
-    field public static final int F_SETLK;
-    field public static final int F_SETLK64;
-    field public static final int F_SETLKW;
-    field public static final int F_SETLKW64;
-    field public static final int F_SETOWN;
-    field public static final int F_UNLCK;
-    field public static final int F_WRLCK;
-    field public static final int ICMP6_ECHO_REPLY;
-    field public static final int ICMP6_ECHO_REQUEST;
-    field public static final int ICMP_ECHO;
-    field public static final int ICMP_ECHOREPLY;
-    field public static final int IFA_F_DADFAILED;
-    field public static final int IFA_F_DEPRECATED;
-    field public static final int IFA_F_HOMEADDRESS;
-    field public static final int IFA_F_NODAD;
-    field public static final int IFA_F_OPTIMISTIC;
-    field public static final int IFA_F_PERMANENT;
-    field public static final int IFA_F_SECONDARY;
-    field public static final int IFA_F_TEMPORARY;
-    field public static final int IFA_F_TENTATIVE;
-    field public static final int IFF_ALLMULTI;
-    field public static final int IFF_AUTOMEDIA;
-    field public static final int IFF_BROADCAST;
-    field public static final int IFF_DEBUG;
-    field public static final int IFF_DYNAMIC;
-    field public static final int IFF_LOOPBACK;
-    field public static final int IFF_MASTER;
-    field public static final int IFF_MULTICAST;
-    field public static final int IFF_NOARP;
-    field public static final int IFF_NOTRAILERS;
-    field public static final int IFF_POINTOPOINT;
-    field public static final int IFF_PORTSEL;
-    field public static final int IFF_PROMISC;
-    field public static final int IFF_RUNNING;
-    field public static final int IFF_SLAVE;
-    field public static final int IFF_UP;
-    field public static final int IPPROTO_ICMP;
-    field public static final int IPPROTO_ICMPV6;
-    field public static final int IPPROTO_IP;
-    field public static final int IPPROTO_IPV6;
-    field public static final int IPPROTO_RAW;
-    field public static final int IPPROTO_TCP;
-    field public static final int IPPROTO_UDP;
-    field public static final int IPV6_CHECKSUM;
-    field public static final int IPV6_MULTICAST_HOPS;
-    field public static final int IPV6_MULTICAST_IF;
-    field public static final int IPV6_MULTICAST_LOOP;
-    field public static final int IPV6_RECVDSTOPTS;
-    field public static final int IPV6_RECVHOPLIMIT;
-    field public static final int IPV6_RECVHOPOPTS;
-    field public static final int IPV6_RECVPKTINFO;
-    field public static final int IPV6_RECVRTHDR;
-    field public static final int IPV6_RECVTCLASS;
-    field public static final int IPV6_TCLASS;
-    field public static final int IPV6_UNICAST_HOPS;
-    field public static final int IPV6_V6ONLY;
-    field public static final int IP_MULTICAST_IF;
-    field public static final int IP_MULTICAST_LOOP;
-    field public static final int IP_MULTICAST_TTL;
-    field public static final int IP_TOS;
-    field public static final int IP_TTL;
-    field public static final int MAP_ANONYMOUS;
-    field public static final int MAP_FIXED;
-    field public static final int MAP_PRIVATE;
-    field public static final int MAP_SHARED;
-    field public static final int MCAST_BLOCK_SOURCE;
-    field public static final int MCAST_JOIN_GROUP;
-    field public static final int MCAST_JOIN_SOURCE_GROUP;
-    field public static final int MCAST_LEAVE_GROUP;
-    field public static final int MCAST_LEAVE_SOURCE_GROUP;
-    field public static final int MCAST_UNBLOCK_SOURCE;
-    field public static final int MCL_CURRENT;
-    field public static final int MCL_FUTURE;
-    field public static final int MFD_CLOEXEC;
-    field public static final int MSG_CTRUNC;
-    field public static final int MSG_DONTROUTE;
-    field public static final int MSG_EOR;
-    field public static final int MSG_OOB;
-    field public static final int MSG_PEEK;
-    field public static final int MSG_TRUNC;
-    field public static final int MSG_WAITALL;
-    field public static final int MS_ASYNC;
-    field public static final int MS_INVALIDATE;
-    field public static final int MS_SYNC;
-    field public static final int NETLINK_INET_DIAG;
-    field public static final int NETLINK_NETFILTER;
-    field public static final int NETLINK_ROUTE;
-    field public static final int NI_DGRAM;
-    field public static final int NI_NAMEREQD;
-    field public static final int NI_NOFQDN;
-    field public static final int NI_NUMERICHOST;
-    field public static final int NI_NUMERICSERV;
-    field public static final int O_ACCMODE;
-    field public static final int O_APPEND;
-    field public static final int O_CLOEXEC;
-    field public static final int O_CREAT;
-    field public static final int O_DSYNC;
-    field public static final int O_EXCL;
-    field public static final int O_NOCTTY;
-    field public static final int O_NOFOLLOW;
-    field public static final int O_NONBLOCK;
-    field public static final int O_RDONLY;
-    field public static final int O_RDWR;
-    field public static final int O_SYNC;
-    field public static final int O_TRUNC;
-    field public static final int O_WRONLY;
-    field public static final int POLLERR;
-    field public static final int POLLHUP;
-    field public static final int POLLIN;
-    field public static final int POLLNVAL;
-    field public static final int POLLOUT;
-    field public static final int POLLPRI;
-    field public static final int POLLRDBAND;
-    field public static final int POLLRDNORM;
-    field public static final int POLLWRBAND;
-    field public static final int POLLWRNORM;
-    field public static final int PROT_EXEC;
-    field public static final int PROT_NONE;
-    field public static final int PROT_READ;
-    field public static final int PROT_WRITE;
-    field public static final int PR_GET_DUMPABLE;
-    field public static final int PR_SET_DUMPABLE;
-    field public static final int PR_SET_NO_NEW_PRIVS;
-    field public static final int RTMGRP_NEIGH;
-    field public static final int RT_SCOPE_HOST;
-    field public static final int RT_SCOPE_LINK;
-    field public static final int RT_SCOPE_NOWHERE;
-    field public static final int RT_SCOPE_SITE;
-    field public static final int RT_SCOPE_UNIVERSE;
-    field public static final int R_OK;
-    field public static final int SEEK_CUR;
-    field public static final int SEEK_END;
-    field public static final int SEEK_SET;
-    field public static final int SHUT_RD;
-    field public static final int SHUT_RDWR;
-    field public static final int SHUT_WR;
-    field public static final int SIGABRT;
-    field public static final int SIGALRM;
-    field public static final int SIGBUS;
-    field public static final int SIGCHLD;
-    field public static final int SIGCONT;
-    field public static final int SIGFPE;
-    field public static final int SIGHUP;
-    field public static final int SIGILL;
-    field public static final int SIGINT;
-    field public static final int SIGIO;
-    field public static final int SIGKILL;
-    field public static final int SIGPIPE;
-    field public static final int SIGPROF;
-    field public static final int SIGPWR;
-    field public static final int SIGQUIT;
-    field public static final int SIGRTMAX;
-    field public static final int SIGRTMIN;
-    field public static final int SIGSEGV;
-    field public static final int SIGSTKFLT;
-    field public static final int SIGSTOP;
-    field public static final int SIGSYS;
-    field public static final int SIGTERM;
-    field public static final int SIGTRAP;
-    field public static final int SIGTSTP;
-    field public static final int SIGTTIN;
-    field public static final int SIGTTOU;
-    field public static final int SIGURG;
-    field public static final int SIGUSR1;
-    field public static final int SIGUSR2;
-    field public static final int SIGVTALRM;
-    field public static final int SIGWINCH;
-    field public static final int SIGXCPU;
-    field public static final int SIGXFSZ;
-    field public static final int SIOCGIFADDR;
-    field public static final int SIOCGIFBRDADDR;
-    field public static final int SIOCGIFDSTADDR;
-    field public static final int SIOCGIFNETMASK;
-    field public static final int SOCK_CLOEXEC;
-    field public static final int SOCK_DGRAM;
-    field public static final int SOCK_NONBLOCK;
-    field public static final int SOCK_RAW;
-    field public static final int SOCK_SEQPACKET;
-    field public static final int SOCK_STREAM;
-    field public static final int SOL_SOCKET;
-    field public static final int SO_BINDTODEVICE;
-    field public static final int SO_BROADCAST;
-    field public static final int SO_DEBUG;
-    field public static final int SO_DONTROUTE;
-    field public static final int SO_ERROR;
-    field public static final int SO_KEEPALIVE;
-    field public static final int SO_LINGER;
-    field public static final int SO_OOBINLINE;
-    field public static final int SO_PASSCRED;
-    field public static final int SO_PEERCRED;
-    field public static final int SO_RCVBUF;
-    field public static final int SO_RCVLOWAT;
-    field public static final int SO_RCVTIMEO;
-    field public static final int SO_REUSEADDR;
-    field public static final int SO_SNDBUF;
-    field public static final int SO_SNDLOWAT;
-    field public static final int SO_SNDTIMEO;
-    field public static final int SO_TYPE;
-    field public static final int STDERR_FILENO;
-    field public static final int STDIN_FILENO;
-    field public static final int STDOUT_FILENO;
-    field public static final int ST_MANDLOCK;
-    field public static final int ST_NOATIME;
-    field public static final int ST_NODEV;
-    field public static final int ST_NODIRATIME;
-    field public static final int ST_NOEXEC;
-    field public static final int ST_NOSUID;
-    field public static final int ST_RDONLY;
-    field public static final int ST_RELATIME;
-    field public static final int ST_SYNCHRONOUS;
-    field public static final int S_IFBLK;
-    field public static final int S_IFCHR;
-    field public static final int S_IFDIR;
-    field public static final int S_IFIFO;
-    field public static final int S_IFLNK;
-    field public static final int S_IFMT;
-    field public static final int S_IFREG;
-    field public static final int S_IFSOCK;
-    field public static final int S_IRGRP;
-    field public static final int S_IROTH;
-    field public static final int S_IRUSR;
-    field public static final int S_IRWXG;
-    field public static final int S_IRWXO;
-    field public static final int S_IRWXU;
-    field public static final int S_ISGID;
-    field public static final int S_ISUID;
-    field public static final int S_ISVTX;
-    field public static final int S_IWGRP;
-    field public static final int S_IWOTH;
-    field public static final int S_IWUSR;
-    field public static final int S_IXGRP;
-    field public static final int S_IXOTH;
-    field public static final int S_IXUSR;
-    field public static final int TCP_NODELAY;
-    field public static final int TCP_USER_TIMEOUT;
-    field public static final int WCONTINUED;
-    field public static final int WEXITED;
-    field public static final int WNOHANG;
-    field public static final int WNOWAIT;
-    field public static final int WSTOPPED;
-    field public static final int WUNTRACED;
-    field public static final int W_OK;
-    field public static final int X_OK;
-    field public static final int _SC_2_CHAR_TERM;
-    field public static final int _SC_2_C_BIND;
-    field public static final int _SC_2_C_DEV;
-    field public static final int _SC_2_C_VERSION;
-    field public static final int _SC_2_FORT_DEV;
-    field public static final int _SC_2_FORT_RUN;
-    field public static final int _SC_2_LOCALEDEF;
-    field public static final int _SC_2_SW_DEV;
-    field public static final int _SC_2_UPE;
-    field public static final int _SC_2_VERSION;
-    field public static final int _SC_AIO_LISTIO_MAX;
-    field public static final int _SC_AIO_MAX;
-    field public static final int _SC_AIO_PRIO_DELTA_MAX;
-    field public static final int _SC_ARG_MAX;
-    field public static final int _SC_ASYNCHRONOUS_IO;
-    field public static final int _SC_ATEXIT_MAX;
-    field public static final int _SC_AVPHYS_PAGES;
-    field public static final int _SC_BC_BASE_MAX;
-    field public static final int _SC_BC_DIM_MAX;
-    field public static final int _SC_BC_SCALE_MAX;
-    field public static final int _SC_BC_STRING_MAX;
-    field public static final int _SC_CHILD_MAX;
-    field public static final int _SC_CLK_TCK;
-    field public static final int _SC_COLL_WEIGHTS_MAX;
-    field public static final int _SC_DELAYTIMER_MAX;
-    field public static final int _SC_EXPR_NEST_MAX;
-    field public static final int _SC_FSYNC;
-    field public static final int _SC_GETGR_R_SIZE_MAX;
-    field public static final int _SC_GETPW_R_SIZE_MAX;
-    field public static final int _SC_IOV_MAX;
-    field public static final int _SC_JOB_CONTROL;
-    field public static final int _SC_LINE_MAX;
-    field public static final int _SC_LOGIN_NAME_MAX;
-    field public static final int _SC_MAPPED_FILES;
-    field public static final int _SC_MEMLOCK;
-    field public static final int _SC_MEMLOCK_RANGE;
-    field public static final int _SC_MEMORY_PROTECTION;
-    field public static final int _SC_MESSAGE_PASSING;
-    field public static final int _SC_MQ_OPEN_MAX;
-    field public static final int _SC_MQ_PRIO_MAX;
-    field public static final int _SC_NGROUPS_MAX;
-    field public static final int _SC_NPROCESSORS_CONF;
-    field public static final int _SC_NPROCESSORS_ONLN;
-    field public static final int _SC_OPEN_MAX;
-    field public static final int _SC_PAGESIZE;
-    field public static final int _SC_PAGE_SIZE;
-    field public static final int _SC_PASS_MAX;
-    field public static final int _SC_PHYS_PAGES;
-    field public static final int _SC_PRIORITIZED_IO;
-    field public static final int _SC_PRIORITY_SCHEDULING;
-    field public static final int _SC_REALTIME_SIGNALS;
-    field public static final int _SC_RE_DUP_MAX;
-    field public static final int _SC_RTSIG_MAX;
-    field public static final int _SC_SAVED_IDS;
-    field public static final int _SC_SEMAPHORES;
-    field public static final int _SC_SEM_NSEMS_MAX;
-    field public static final int _SC_SEM_VALUE_MAX;
-    field public static final int _SC_SHARED_MEMORY_OBJECTS;
-    field public static final int _SC_SIGQUEUE_MAX;
-    field public static final int _SC_STREAM_MAX;
-    field public static final int _SC_SYNCHRONIZED_IO;
-    field public static final int _SC_THREADS;
-    field public static final int _SC_THREAD_ATTR_STACKADDR;
-    field public static final int _SC_THREAD_ATTR_STACKSIZE;
-    field public static final int _SC_THREAD_DESTRUCTOR_ITERATIONS;
-    field public static final int _SC_THREAD_KEYS_MAX;
-    field public static final int _SC_THREAD_PRIORITY_SCHEDULING;
-    field public static final int _SC_THREAD_PRIO_INHERIT;
-    field public static final int _SC_THREAD_PRIO_PROTECT;
-    field public static final int _SC_THREAD_SAFE_FUNCTIONS;
-    field public static final int _SC_THREAD_STACK_MIN;
-    field public static final int _SC_THREAD_THREADS_MAX;
-    field public static final int _SC_TIMERS;
-    field public static final int _SC_TIMER_MAX;
-    field public static final int _SC_TTY_NAME_MAX;
-    field public static final int _SC_TZNAME_MAX;
-    field public static final int _SC_VERSION;
-    field public static final int _SC_XBS5_ILP32_OFF32;
-    field public static final int _SC_XBS5_ILP32_OFFBIG;
-    field public static final int _SC_XBS5_LP64_OFF64;
-    field public static final int _SC_XBS5_LPBIG_OFFBIG;
-    field public static final int _SC_XOPEN_CRYPT;
-    field public static final int _SC_XOPEN_ENH_I18N;
-    field public static final int _SC_XOPEN_LEGACY;
-    field public static final int _SC_XOPEN_REALTIME;
-    field public static final int _SC_XOPEN_REALTIME_THREADS;
-    field public static final int _SC_XOPEN_SHM;
-    field public static final int _SC_XOPEN_UNIX;
-    field public static final int _SC_XOPEN_VERSION;
-    field public static final int _SC_XOPEN_XCU_VERSION;
-  }
-
-  public final class StructPollfd {
-    ctor public StructPollfd();
-    field public short events;
-    field public java.io.FileDescriptor fd;
-    field public short revents;
-    field public Object userData;
-  }
-
-  public final class StructStat {
-    ctor public StructStat(long, long, int, long, int, int, long, long, long, long, long, long, long);
-    ctor public StructStat(long, long, int, long, int, int, long, long, android.system.StructTimespec, android.system.StructTimespec, android.system.StructTimespec, long, long);
-    field public final android.system.StructTimespec st_atim;
-    field public final long st_atime;
-    field public final long st_blksize;
-    field public final long st_blocks;
-    field public final android.system.StructTimespec st_ctim;
-    field public final long st_ctime;
-    field public final long st_dev;
-    field public final int st_gid;
-    field public final long st_ino;
-    field public final int st_mode;
-    field public final android.system.StructTimespec st_mtim;
-    field public final long st_mtime;
-    field public final long st_nlink;
-    field public final long st_rdev;
-    field public final long st_size;
-    field public final int st_uid;
-  }
-
-  public final class StructStatVfs {
-    ctor public StructStatVfs(long, long, long, long, long, long, long, long, long, long, long);
-    field public final long f_bavail;
-    field public final long f_bfree;
-    field public final long f_blocks;
-    field public final long f_bsize;
-    field public final long f_favail;
-    field public final long f_ffree;
-    field public final long f_files;
-    field public final long f_flag;
-    field public final long f_frsize;
-    field public final long f_fsid;
-    field public final long f_namemax;
-  }
-
-  public final class StructTimespec implements java.lang.Comparable<android.system.StructTimespec> {
-    ctor public StructTimespec(long, long);
-    method public int compareTo(android.system.StructTimespec);
-    field public final long tv_nsec;
-    field public final long tv_sec;
-  }
-
-  public final class StructTimeval {
-    method @NonNull public static android.system.StructTimeval fromMillis(long);
-    method public long toMillis();
-    field public final long tv_sec;
-    field public final long tv_usec;
-  }
-
-  public final class StructUtsname {
-    ctor public StructUtsname(String, String, String, String, String);
-    field public final String machine;
-    field public final String nodename;
-    field public final String release;
-    field public final String sysname;
-    field public final String version;
-  }
-
-}
-
-package android.telecom {
-
-  public final class Call {
-    method public void addConferenceParticipants(@NonNull java.util.List<android.net.Uri>);
-    method public void answer(int);
-    method public void conference(android.telecom.Call);
-    method public void deflect(android.net.Uri);
-    method public void disconnect();
-    method public java.util.List<java.lang.String> getCannedTextResponses();
-    method public java.util.List<android.telecom.Call> getChildren();
-    method public java.util.List<android.telecom.Call> getConferenceableCalls();
-    method public android.telecom.Call.Details getDetails();
-    method @Nullable public android.telecom.Call getGenericConferenceActiveChildCall();
-    method public android.telecom.Call getParent();
-    method public String getRemainingPostDialSequence();
-    method @Nullable public android.telecom.Call.RttCall getRttCall();
-    method public int getState();
-    method public android.telecom.InCallService.VideoCall getVideoCall();
-    method public void handoverTo(android.telecom.PhoneAccountHandle, int, android.os.Bundle);
-    method public void hold();
-    method public boolean isRttActive();
-    method public void mergeConference();
-    method public void phoneAccountSelected(android.telecom.PhoneAccountHandle, boolean);
-    method public void playDtmfTone(char);
-    method public void postDialContinue(boolean);
-    method public void pullExternalCall();
-    method public void putExtras(android.os.Bundle);
-    method public void registerCallback(android.telecom.Call.Callback);
-    method public void registerCallback(android.telecom.Call.Callback, android.os.Handler);
-    method public void reject(boolean, String);
-    method public void reject(int);
-    method public void removeExtras(java.util.List<java.lang.String>);
-    method public void removeExtras(java.lang.String...);
-    method public void respondToRttRequest(int, boolean);
-    method public void sendCallEvent(String, android.os.Bundle);
-    method public void sendRttRequest();
-    method public void splitFromConference();
-    method public void stopDtmfTone();
-    method public void stopRtt();
-    method public void swapConference();
-    method public void unhold();
-    method public void unregisterCallback(android.telecom.Call.Callback);
-    field @Deprecated public static final String AVAILABLE_PHONE_ACCOUNTS = "selectPhoneAccountAccounts";
-    field public static final String EXTRA_LAST_EMERGENCY_CALLBACK_TIME_MILLIS = "android.telecom.extra.LAST_EMERGENCY_CALLBACK_TIME_MILLIS";
-    field public static final String EXTRA_SILENT_RINGING_REQUESTED = "android.telecom.extra.SILENT_RINGING_REQUESTED";
-    field public static final String EXTRA_SUGGESTED_PHONE_ACCOUNTS = "android.telecom.extra.SUGGESTED_PHONE_ACCOUNTS";
-    field public static final int REJECT_REASON_DECLINED = 1; // 0x1
-    field public static final int REJECT_REASON_UNWANTED = 2; // 0x2
-    field public static final int STATE_ACTIVE = 4; // 0x4
-    field public static final int STATE_AUDIO_PROCESSING = 12; // 0xc
-    field public static final int STATE_CONNECTING = 9; // 0x9
-    field public static final int STATE_DIALING = 1; // 0x1
-    field public static final int STATE_DISCONNECTED = 7; // 0x7
-    field public static final int STATE_DISCONNECTING = 10; // 0xa
-    field public static final int STATE_HOLDING = 3; // 0x3
-    field public static final int STATE_NEW = 0; // 0x0
-    field public static final int STATE_PULLING_CALL = 11; // 0xb
-    field public static final int STATE_RINGING = 2; // 0x2
-    field public static final int STATE_SELECT_PHONE_ACCOUNT = 8; // 0x8
-    field public static final int STATE_SIMULATED_RINGING = 13; // 0xd
-  }
-
-  public abstract static class Call.Callback {
-    ctor public Call.Callback();
-    method public void onCallDestroyed(android.telecom.Call);
-    method public void onCannedTextResponsesLoaded(android.telecom.Call, java.util.List<java.lang.String>);
-    method public void onChildrenChanged(android.telecom.Call, java.util.List<android.telecom.Call>);
-    method public void onConferenceableCallsChanged(android.telecom.Call, java.util.List<android.telecom.Call>);
-    method public void onConnectionEvent(android.telecom.Call, String, android.os.Bundle);
-    method public void onDetailsChanged(android.telecom.Call, android.telecom.Call.Details);
-    method public void onHandoverComplete(android.telecom.Call);
-    method public void onHandoverFailed(android.telecom.Call, int);
-    method public void onParentChanged(android.telecom.Call, android.telecom.Call);
-    method public void onPostDialWait(android.telecom.Call, String);
-    method public void onRttInitiationFailure(android.telecom.Call, int);
-    method public void onRttModeChanged(android.telecom.Call, int);
-    method public void onRttRequest(android.telecom.Call, int);
-    method public void onRttStatusChanged(android.telecom.Call, boolean, android.telecom.Call.RttCall);
-    method public void onStateChanged(android.telecom.Call, int);
-    method public void onVideoCallChanged(android.telecom.Call, android.telecom.InCallService.VideoCall);
-    field public static final int HANDOVER_FAILURE_DEST_APP_REJECTED = 1; // 0x1
-    field public static final int HANDOVER_FAILURE_NOT_SUPPORTED = 2; // 0x2
-    field public static final int HANDOVER_FAILURE_ONGOING_EMERGENCY_CALL = 4; // 0x4
-    field public static final int HANDOVER_FAILURE_UNKNOWN = 5; // 0x5
-    field public static final int HANDOVER_FAILURE_USER_REJECTED = 3; // 0x3
-  }
-
-  public static class Call.Details {
-    method public static boolean can(int, int);
-    method public boolean can(int);
-    method public static String capabilitiesToString(int);
-    method public android.telecom.PhoneAccountHandle getAccountHandle();
-    method public int getCallCapabilities();
-    method public int getCallDirection();
-    method public int getCallProperties();
-    method public String getCallerDisplayName();
-    method public int getCallerDisplayNamePresentation();
-    method public int getCallerNumberVerificationStatus();
-    method public final long getConnectTimeMillis();
-    method @Nullable public String getContactDisplayName();
-    method public long getCreationTimeMillis();
-    method public android.telecom.DisconnectCause getDisconnectCause();
-    method public android.os.Bundle getExtras();
-    method public android.telecom.GatewayInfo getGatewayInfo();
-    method public android.net.Uri getHandle();
-    method public int getHandlePresentation();
-    method public android.os.Bundle getIntentExtras();
-    method public android.telecom.StatusHints getStatusHints();
-    method public int getVideoState();
-    method public static boolean hasProperty(int, int);
-    method public boolean hasProperty(int);
-    method public static String propertiesToString(int);
-    field public static final int CAPABILITY_ADD_PARTICIPANT = 33554432; // 0x2000000
-    field public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 4194304; // 0x400000
-    field public static final int CAPABILITY_CAN_PAUSE_VIDEO = 1048576; // 0x100000
-    field public static final int CAPABILITY_CAN_PULL_CALL = 8388608; // 0x800000
-    field public static final int CAPABILITY_DISCONNECT_FROM_CONFERENCE = 8192; // 0x2000
-    field public static final int CAPABILITY_HOLD = 1; // 0x1
-    field public static final int CAPABILITY_MANAGE_CONFERENCE = 128; // 0x80
-    field public static final int CAPABILITY_MERGE_CONFERENCE = 4; // 0x4
-    field public static final int CAPABILITY_MUTE = 64; // 0x40
-    field public static final int CAPABILITY_RESPOND_VIA_TEXT = 32; // 0x20
-    field public static final int CAPABILITY_SEPARATE_FROM_CONFERENCE = 4096; // 0x1000
-    field public static final int CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL = 768; // 0x300
-    field public static final int CAPABILITY_SUPPORTS_VT_LOCAL_RX = 256; // 0x100
-    field public static final int CAPABILITY_SUPPORTS_VT_LOCAL_TX = 512; // 0x200
-    field public static final int CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL = 3072; // 0xc00
-    field public static final int CAPABILITY_SUPPORTS_VT_REMOTE_RX = 1024; // 0x400
-    field public static final int CAPABILITY_SUPPORTS_VT_REMOTE_TX = 2048; // 0x800
-    field public static final int CAPABILITY_SUPPORT_DEFLECT = 16777216; // 0x1000000
-    field public static final int CAPABILITY_SUPPORT_HOLD = 2; // 0x2
-    field public static final int CAPABILITY_SWAP_CONFERENCE = 8; // 0x8
-    field public static final int DIRECTION_INCOMING = 0; // 0x0
-    field public static final int DIRECTION_OUTGOING = 1; // 0x1
-    field public static final int DIRECTION_UNKNOWN = -1; // 0xffffffff
-    field public static final int PROPERTY_ASSISTED_DIALING = 512; // 0x200
-    field public static final int PROPERTY_CONFERENCE = 1; // 0x1
-    field public static final int PROPERTY_EMERGENCY_CALLBACK_MODE = 4; // 0x4
-    field public static final int PROPERTY_ENTERPRISE_CALL = 32; // 0x20
-    field public static final int PROPERTY_GENERIC_CONFERENCE = 2; // 0x2
-    field public static final int PROPERTY_HAS_CDMA_VOICE_PRIVACY = 128; // 0x80
-    field public static final int PROPERTY_HIGH_DEF_AUDIO = 16; // 0x10
-    field public static final int PROPERTY_IS_ADHOC_CONFERENCE = 8192; // 0x2000
-    field public static final int PROPERTY_IS_EXTERNAL_CALL = 64; // 0x40
-    field public static final int PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL = 2048; // 0x800
-    field public static final int PROPERTY_RTT = 1024; // 0x400
-    field public static final int PROPERTY_SELF_MANAGED = 256; // 0x100
-    field public static final int PROPERTY_VOIP_AUDIO_MODE = 4096; // 0x1000
-    field public static final int PROPERTY_WIFI = 8; // 0x8
-  }
-
-  public static final class Call.RttCall {
-    method public int getRttAudioMode();
-    method public String read();
-    method public String readImmediately() throws java.io.IOException;
-    method public void setRttMode(int);
-    method public void write(String) throws java.io.IOException;
-    field public static final int RTT_MODE_FULL = 1; // 0x1
-    field public static final int RTT_MODE_HCO = 2; // 0x2
-    field public static final int RTT_MODE_VCO = 3; // 0x3
-  }
-
-  public final class CallAudioState implements android.os.Parcelable {
-    ctor public CallAudioState(boolean, int, int);
-    method public static String audioRouteToString(int);
-    method public int describeContents();
-    method public android.bluetooth.BluetoothDevice getActiveBluetoothDevice();
-    method public int getRoute();
-    method public java.util.Collection<android.bluetooth.BluetoothDevice> getSupportedBluetoothDevices();
-    method public int getSupportedRouteMask();
-    method public boolean isMuted();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.CallAudioState> CREATOR;
-    field public static final int ROUTE_BLUETOOTH = 2; // 0x2
-    field public static final int ROUTE_EARPIECE = 1; // 0x1
-    field public static final int ROUTE_SPEAKER = 8; // 0x8
-    field public static final int ROUTE_WIRED_HEADSET = 4; // 0x4
-    field public static final int ROUTE_WIRED_OR_EARPIECE = 5; // 0x5
-  }
-
-  public abstract class CallRedirectionService extends android.app.Service {
-    ctor public CallRedirectionService();
-    method public final void cancelCall();
-    method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
-    method public abstract void onPlaceCall(@NonNull android.net.Uri, @NonNull android.telecom.PhoneAccountHandle, boolean);
-    method public final boolean onUnbind(@NonNull android.content.Intent);
-    method public final void placeCallUnmodified();
-    method public final void redirectCall(@NonNull android.net.Uri, @NonNull android.telecom.PhoneAccountHandle, boolean);
-    field public static final String SERVICE_INTERFACE = "android.telecom.CallRedirectionService";
-  }
-
-  public abstract class CallScreeningService extends android.app.Service {
-    ctor public CallScreeningService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public abstract void onScreenCall(@NonNull android.telecom.Call.Details);
-    method public final void respondToCall(@NonNull android.telecom.Call.Details, @NonNull android.telecom.CallScreeningService.CallResponse);
-    field public static final String SERVICE_INTERFACE = "android.telecom.CallScreeningService";
-  }
-
-  public static class CallScreeningService.CallResponse {
-    method public boolean getDisallowCall();
-    method public boolean getRejectCall();
-    method public boolean getSilenceCall();
-    method public boolean getSkipCallLog();
-    method public boolean getSkipNotification();
-  }
-
-  public static class CallScreeningService.CallResponse.Builder {
-    ctor public CallScreeningService.CallResponse.Builder();
-    method public android.telecom.CallScreeningService.CallResponse build();
-    method public android.telecom.CallScreeningService.CallResponse.Builder setDisallowCall(boolean);
-    method public android.telecom.CallScreeningService.CallResponse.Builder setRejectCall(boolean);
-    method @NonNull public android.telecom.CallScreeningService.CallResponse.Builder setSilenceCall(boolean);
-    method public android.telecom.CallScreeningService.CallResponse.Builder setSkipCallLog(boolean);
-    method public android.telecom.CallScreeningService.CallResponse.Builder setSkipNotification(boolean);
-  }
-
-  public abstract class Conference extends android.telecom.Conferenceable {
-    ctor public Conference(android.telecom.PhoneAccountHandle);
-    method public final boolean addConnection(android.telecom.Connection);
-    method @NonNull public static android.telecom.Conference createFailedConference(@NonNull android.telecom.DisconnectCause, @NonNull android.telecom.PhoneAccountHandle);
-    method public final void destroy();
-    method public final android.telecom.CallAudioState getCallAudioState();
-    method public final java.util.List<android.telecom.Connection> getConferenceableConnections();
-    method public final int getConnectionCapabilities();
-    method public final int getConnectionProperties();
-    method public final long getConnectionStartElapsedRealtimeMillis();
-    method @IntRange(from=0) public final long getConnectionTime();
-    method public final java.util.List<android.telecom.Connection> getConnections();
-    method public final android.telecom.DisconnectCause getDisconnectCause();
-    method public final android.os.Bundle getExtras();
-    method public final android.telecom.PhoneAccountHandle getPhoneAccountHandle();
-    method public final int getState();
-    method public final android.telecom.StatusHints getStatusHints();
-    method public android.telecom.Connection.VideoProvider getVideoProvider();
-    method public int getVideoState();
-    method public final boolean isRingbackRequested();
-    method public void onAddConferenceParticipants(@NonNull java.util.List<android.net.Uri>);
-    method public void onAnswer(int);
-    method public void onCallAudioStateChanged(android.telecom.CallAudioState);
-    method public void onConnectionAdded(android.telecom.Connection);
-    method public void onDisconnect();
-    method public void onExtrasChanged(android.os.Bundle);
-    method public void onHold();
-    method public void onMerge(android.telecom.Connection);
-    method public void onMerge();
-    method public void onPlayDtmfTone(char);
-    method public void onReject();
-    method public void onSeparate(android.telecom.Connection);
-    method public void onStopDtmfTone();
-    method public void onSwap();
-    method public void onUnhold();
-    method public final void putExtras(@NonNull android.os.Bundle);
-    method public final void removeConnection(android.telecom.Connection);
-    method public final void removeExtras(java.util.List<java.lang.String>);
-    method public final void removeExtras(java.lang.String...);
-    method public void sendConferenceEvent(@NonNull String, @Nullable android.os.Bundle);
-    method public final void setActive();
-    method public final void setConferenceableConnections(java.util.List<android.telecom.Connection>);
-    method public final void setConnectionCapabilities(int);
-    method public final void setConnectionProperties(int);
-    method @Deprecated public final void setConnectionStartElapsedRealTime(long);
-    method public final void setConnectionStartElapsedRealtimeMillis(long);
-    method public final void setConnectionTime(@IntRange(from=0) long);
-    method public final void setDialing();
-    method public final void setDisconnected(android.telecom.DisconnectCause);
-    method public final void setExtras(@Nullable android.os.Bundle);
-    method public final void setOnHold();
-    method public final void setRingbackRequested(boolean);
-    method public final void setRinging();
-    method public final void setStatusHints(android.telecom.StatusHints);
-    method public final void setVideoProvider(android.telecom.Connection, android.telecom.Connection.VideoProvider);
-    method public final void setVideoState(android.telecom.Connection, int);
-    field public static final long CONNECT_TIME_NOT_SPECIFIED = 0L; // 0x0L
-  }
-
-  public abstract class Conferenceable {
-  }
-
-  public abstract class Connection extends android.telecom.Conferenceable {
-    ctor public Connection();
-    method public static String capabilitiesToString(int);
-    method public static android.telecom.Connection createCanceledConnection();
-    method public static android.telecom.Connection createFailedConnection(android.telecom.DisconnectCause);
-    method public final void destroy();
-    method public final android.net.Uri getAddress();
-    method public final int getAddressPresentation();
-    method public final boolean getAudioModeIsVoip();
-    method public final android.telecom.CallAudioState getCallAudioState();
-    method public final String getCallerDisplayName();
-    method public final int getCallerDisplayNamePresentation();
-    method public final int getCallerNumberVerificationStatus();
-    method public final android.telecom.Conference getConference();
-    method public final java.util.List<android.telecom.Conferenceable> getConferenceables();
-    method public final int getConnectionCapabilities();
-    method public final int getConnectionProperties();
-    method public final android.telecom.DisconnectCause getDisconnectCause();
-    method public final android.os.Bundle getExtras();
-    method public final int getState();
-    method public final android.telecom.StatusHints getStatusHints();
-    method public final android.telecom.Connection.VideoProvider getVideoProvider();
-    method public final int getVideoState();
-    method public void handleRttUpgradeResponse(@Nullable android.telecom.Connection.RttTextStream);
-    method public final boolean isRingbackRequested();
-    method public final void notifyConferenceMergeFailed();
-    method public void onAbort();
-    method public void onAddConferenceParticipants(@NonNull java.util.List<android.net.Uri>);
-    method public void onAnswer(int);
-    method public void onAnswer();
-    method public void onCallAudioStateChanged(android.telecom.CallAudioState);
-    method public void onCallEvent(String, android.os.Bundle);
-    method public void onDeflect(android.net.Uri);
-    method public void onDisconnect();
-    method public void onExtrasChanged(android.os.Bundle);
-    method public void onHandoverComplete();
-    method public void onHold();
-    method public void onPlayDtmfTone(char);
-    method public void onPostDialContinue(boolean);
-    method public void onPullExternalCall();
-    method public void onReject();
-    method public void onReject(int);
-    method public void onReject(String);
-    method public void onSeparate();
-    method public void onShowIncomingCallUi();
-    method public void onSilence();
-    method public void onStartRtt(@NonNull android.telecom.Connection.RttTextStream);
-    method public void onStateChanged(int);
-    method public void onStopDtmfTone();
-    method public void onStopRtt();
-    method public void onUnhold();
-    method public static String propertiesToString(int);
-    method public final void putExtras(@NonNull android.os.Bundle);
-    method public final void removeExtras(java.util.List<java.lang.String>);
-    method public final void removeExtras(java.lang.String...);
-    method public void requestBluetoothAudio(@NonNull android.bluetooth.BluetoothDevice);
-    method public void sendConnectionEvent(String, android.os.Bundle);
-    method public final void sendRemoteRttRequest();
-    method public final void sendRttInitiationFailure(int);
-    method public final void sendRttInitiationSuccess();
-    method public final void sendRttSessionRemotelyTerminated();
-    method public final void setActive();
-    method public final void setAddress(android.net.Uri, int);
-    method public final void setAudioModeIsVoip(boolean);
-    method public final void setAudioRoute(int);
-    method public final void setCallerDisplayName(String, int);
-    method public final void setCallerNumberVerificationStatus(int);
-    method public final void setConferenceableConnections(java.util.List<android.telecom.Connection>);
-    method public final void setConferenceables(java.util.List<android.telecom.Conferenceable>);
-    method public final void setConnectionCapabilities(int);
-    method public final void setConnectionProperties(int);
-    method public final void setDialing();
-    method public final void setDisconnected(android.telecom.DisconnectCause);
-    method public final void setExtras(@Nullable android.os.Bundle);
-    method public final void setInitialized();
-    method public final void setInitializing();
-    method public final void setNextPostDialChar(char);
-    method public final void setOnHold();
-    method public final void setPostDialWait(String);
-    method public final void setPulling();
-    method public final void setRingbackRequested(boolean);
-    method public final void setRinging();
-    method public final void setStatusHints(android.telecom.StatusHints);
-    method public final void setVideoProvider(android.telecom.Connection.VideoProvider);
-    method public final void setVideoState(int);
-    method public static String stateToString(int);
-    field public static final int AUDIO_CODEC_AMR = 1; // 0x1
-    field public static final int AUDIO_CODEC_AMR_WB = 2; // 0x2
-    field public static final int AUDIO_CODEC_EVRC = 4; // 0x4
-    field public static final int AUDIO_CODEC_EVRC_B = 5; // 0x5
-    field public static final int AUDIO_CODEC_EVRC_NW = 7; // 0x7
-    field public static final int AUDIO_CODEC_EVRC_WB = 6; // 0x6
-    field public static final int AUDIO_CODEC_EVS_FB = 20; // 0x14
-    field public static final int AUDIO_CODEC_EVS_NB = 17; // 0x11
-    field public static final int AUDIO_CODEC_EVS_SWB = 19; // 0x13
-    field public static final int AUDIO_CODEC_EVS_WB = 18; // 0x12
-    field public static final int AUDIO_CODEC_G711A = 13; // 0xd
-    field public static final int AUDIO_CODEC_G711AB = 15; // 0xf
-    field public static final int AUDIO_CODEC_G711U = 11; // 0xb
-    field public static final int AUDIO_CODEC_G722 = 14; // 0xe
-    field public static final int AUDIO_CODEC_G723 = 12; // 0xc
-    field public static final int AUDIO_CODEC_G729 = 16; // 0x10
-    field public static final int AUDIO_CODEC_GSM_EFR = 8; // 0x8
-    field public static final int AUDIO_CODEC_GSM_FR = 9; // 0x9
-    field public static final int AUDIO_CODEC_GSM_HR = 10; // 0xa
-    field public static final int AUDIO_CODEC_NONE = 0; // 0x0
-    field public static final int AUDIO_CODEC_QCELP13K = 3; // 0x3
-    field public static final int CAPABILITY_ADD_PARTICIPANT = 67108864; // 0x4000000
-    field public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 8388608; // 0x800000
-    field public static final int CAPABILITY_CAN_PAUSE_VIDEO = 1048576; // 0x100000
-    field public static final int CAPABILITY_CAN_PULL_CALL = 16777216; // 0x1000000
-    field public static final int CAPABILITY_CAN_SEND_RESPONSE_VIA_CONNECTION = 4194304; // 0x400000
-    field @Deprecated public static final int CAPABILITY_CAN_UPGRADE_TO_VIDEO = 524288; // 0x80000
-    field public static final int CAPABILITY_DISCONNECT_FROM_CONFERENCE = 8192; // 0x2000
-    field public static final int CAPABILITY_HOLD = 1; // 0x1
-    field public static final int CAPABILITY_MANAGE_CONFERENCE = 128; // 0x80
-    field public static final int CAPABILITY_MERGE_CONFERENCE = 4; // 0x4
-    field public static final int CAPABILITY_MUTE = 64; // 0x40
-    field public static final int CAPABILITY_RESPOND_VIA_TEXT = 32; // 0x20
-    field public static final int CAPABILITY_SEPARATE_FROM_CONFERENCE = 4096; // 0x1000
-    field public static final int CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL = 768; // 0x300
-    field public static final int CAPABILITY_SUPPORTS_VT_LOCAL_RX = 256; // 0x100
-    field public static final int CAPABILITY_SUPPORTS_VT_LOCAL_TX = 512; // 0x200
-    field public static final int CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL = 3072; // 0xc00
-    field public static final int CAPABILITY_SUPPORTS_VT_REMOTE_RX = 1024; // 0x400
-    field public static final int CAPABILITY_SUPPORTS_VT_REMOTE_TX = 2048; // 0x800
-    field public static final int CAPABILITY_SUPPORT_DEFLECT = 33554432; // 0x2000000
-    field public static final int CAPABILITY_SUPPORT_HOLD = 2; // 0x2
-    field public static final int CAPABILITY_SWAP_CONFERENCE = 8; // 0x8
-    field public static final String EVENT_CALL_HOLD_FAILED = "android.telecom.event.CALL_HOLD_FAILED";
-    field public static final String EVENT_CALL_MERGE_FAILED = "android.telecom.event.CALL_MERGE_FAILED";
-    field public static final String EVENT_CALL_PULL_FAILED = "android.telecom.event.CALL_PULL_FAILED";
-    field public static final String EVENT_CALL_REMOTELY_HELD = "android.telecom.event.CALL_REMOTELY_HELD";
-    field public static final String EVENT_CALL_REMOTELY_UNHELD = "android.telecom.event.CALL_REMOTELY_UNHELD";
-    field public static final String EVENT_CALL_SWITCH_FAILED = "android.telecom.event.CALL_SWITCH_FAILED";
-    field public static final String EVENT_MERGE_COMPLETE = "android.telecom.event.MERGE_COMPLETE";
-    field public static final String EVENT_MERGE_START = "android.telecom.event.MERGE_START";
-    field public static final String EVENT_ON_HOLD_TONE_END = "android.telecom.event.ON_HOLD_TONE_END";
-    field public static final String EVENT_ON_HOLD_TONE_START = "android.telecom.event.ON_HOLD_TONE_START";
-    field public static final String EVENT_RTT_AUDIO_INDICATION_CHANGED = "android.telecom.event.RTT_AUDIO_INDICATION_CHANGED";
-    field public static final String EXTRA_ANSWERING_DROPS_FG_CALL = "android.telecom.extra.ANSWERING_DROPS_FG_CALL";
-    field public static final String EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME = "android.telecom.extra.ANSWERING_DROPS_FG_CALL_APP_NAME";
-    field public static final String EXTRA_AUDIO_CODEC = "android.telecom.extra.AUDIO_CODEC";
-    field public static final String EXTRA_CALL_SUBJECT = "android.telecom.extra.CALL_SUBJECT";
-    field public static final String EXTRA_CHILD_ADDRESS = "android.telecom.extra.CHILD_ADDRESS";
-    field public static final String EXTRA_IS_RTT_AUDIO_PRESENT = "android.telecom.extra.IS_RTT_AUDIO_PRESENT";
-    field public static final String EXTRA_LAST_FORWARDED_NUMBER = "android.telecom.extra.LAST_FORWARDED_NUMBER";
-    field public static final String EXTRA_SIP_INVITE = "android.telecom.extra.SIP_INVITE";
-    field public static final int PROPERTY_ASSISTED_DIALING = 512; // 0x200
-    field public static final int PROPERTY_HAS_CDMA_VOICE_PRIVACY = 32; // 0x20
-    field public static final int PROPERTY_HIGH_DEF_AUDIO = 4; // 0x4
-    field public static final int PROPERTY_IS_ADHOC_CONFERENCE = 4096; // 0x1000
-    field public static final int PROPERTY_IS_EXTERNAL_CALL = 16; // 0x10
-    field public static final int PROPERTY_IS_RTT = 256; // 0x100
-    field public static final int PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL = 1024; // 0x400
-    field public static final int PROPERTY_SELF_MANAGED = 128; // 0x80
-    field public static final int PROPERTY_WIFI = 8; // 0x8
-    field public static final int STATE_ACTIVE = 4; // 0x4
-    field public static final int STATE_DIALING = 3; // 0x3
-    field public static final int STATE_DISCONNECTED = 6; // 0x6
-    field public static final int STATE_HOLDING = 5; // 0x5
-    field public static final int STATE_INITIALIZING = 0; // 0x0
-    field public static final int STATE_NEW = 1; // 0x1
-    field public static final int STATE_PULLING_CALL = 7; // 0x7
-    field public static final int STATE_RINGING = 2; // 0x2
-    field public static final int VERIFICATION_STATUS_FAILED = 2; // 0x2
-    field public static final int VERIFICATION_STATUS_NOT_VERIFIED = 0; // 0x0
-    field public static final int VERIFICATION_STATUS_PASSED = 1; // 0x1
-  }
-
-  public static final class Connection.RttModifyStatus {
-    field public static final int SESSION_MODIFY_REQUEST_FAIL = 2; // 0x2
-    field public static final int SESSION_MODIFY_REQUEST_INVALID = 3; // 0x3
-    field public static final int SESSION_MODIFY_REQUEST_REJECTED_BY_REMOTE = 5; // 0x5
-    field public static final int SESSION_MODIFY_REQUEST_SUCCESS = 1; // 0x1
-    field public static final int SESSION_MODIFY_REQUEST_TIMED_OUT = 4; // 0x4
-  }
-
-  public static final class Connection.RttTextStream {
-    method public String read() throws java.io.IOException;
-    method public String readImmediately() throws java.io.IOException;
-    method public void write(String) throws java.io.IOException;
-  }
-
-  public abstract static class Connection.VideoProvider {
-    ctor public Connection.VideoProvider();
-    method public void changeCameraCapabilities(android.telecom.VideoProfile.CameraCapabilities);
-    method public void changePeerDimensions(int, int);
-    method public void changeVideoQuality(int);
-    method public void handleCallSessionEvent(int);
-    method public abstract void onRequestCameraCapabilities();
-    method public abstract void onRequestConnectionDataUsage();
-    method public abstract void onSendSessionModifyRequest(android.telecom.VideoProfile, android.telecom.VideoProfile);
-    method public abstract void onSendSessionModifyResponse(android.telecom.VideoProfile);
-    method public abstract void onSetCamera(String);
-    method public abstract void onSetDeviceOrientation(int);
-    method public abstract void onSetDisplaySurface(android.view.Surface);
-    method public abstract void onSetPauseImage(android.net.Uri);
-    method public abstract void onSetPreviewSurface(android.view.Surface);
-    method public abstract void onSetZoom(float);
-    method public void receiveSessionModifyRequest(android.telecom.VideoProfile);
-    method public void receiveSessionModifyResponse(int, android.telecom.VideoProfile, android.telecom.VideoProfile);
-    method public void setCallDataUsage(long);
-    field public static final int SESSION_EVENT_CAMERA_FAILURE = 5; // 0x5
-    field public static final int SESSION_EVENT_CAMERA_PERMISSION_ERROR = 7; // 0x7
-    field public static final int SESSION_EVENT_CAMERA_READY = 6; // 0x6
-    field public static final int SESSION_EVENT_RX_PAUSE = 1; // 0x1
-    field public static final int SESSION_EVENT_RX_RESUME = 2; // 0x2
-    field public static final int SESSION_EVENT_TX_START = 3; // 0x3
-    field public static final int SESSION_EVENT_TX_STOP = 4; // 0x4
-    field public static final int SESSION_MODIFY_REQUEST_FAIL = 2; // 0x2
-    field public static final int SESSION_MODIFY_REQUEST_INVALID = 3; // 0x3
-    field public static final int SESSION_MODIFY_REQUEST_REJECTED_BY_REMOTE = 5; // 0x5
-    field public static final int SESSION_MODIFY_REQUEST_SUCCESS = 1; // 0x1
-    field public static final int SESSION_MODIFY_REQUEST_TIMED_OUT = 4; // 0x4
-  }
-
-  public final class ConnectionRequest implements android.os.Parcelable {
-    ctor public ConnectionRequest(android.telecom.PhoneAccountHandle, android.net.Uri, android.os.Bundle);
-    ctor public ConnectionRequest(android.telecom.PhoneAccountHandle, android.net.Uri, android.os.Bundle, int);
-    method public int describeContents();
-    method public android.telecom.PhoneAccountHandle getAccountHandle();
-    method public android.net.Uri getAddress();
-    method public android.os.Bundle getExtras();
-    method @Nullable public java.util.List<android.net.Uri> getParticipants();
-    method public android.telecom.Connection.RttTextStream getRttTextStream();
-    method public int getVideoState();
-    method public boolean isAdhocConferenceCall();
-    method public boolean isRequestingRtt();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.ConnectionRequest> CREATOR;
-  }
-
-  public abstract class ConnectionService extends android.app.Service {
-    ctor public ConnectionService();
-    method public final void addConference(android.telecom.Conference);
-    method public final void addExistingConnection(android.telecom.PhoneAccountHandle, android.telecom.Connection);
-    method public final void conferenceRemoteConnections(android.telecom.RemoteConnection, android.telecom.RemoteConnection);
-    method public final void connectionServiceFocusReleased();
-    method @Nullable public final android.telecom.RemoteConference createRemoteIncomingConference(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest);
-    method public final android.telecom.RemoteConnection createRemoteIncomingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
-    method @Nullable public final android.telecom.RemoteConference createRemoteOutgoingConference(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest);
-    method public final android.telecom.RemoteConnection createRemoteOutgoingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
-    method public final java.util.Collection<android.telecom.Conference> getAllConferences();
-    method public final java.util.Collection<android.telecom.Connection> getAllConnections();
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method public void onConference(android.telecom.Connection, android.telecom.Connection);
-    method public void onConnectionServiceFocusGained();
-    method public void onConnectionServiceFocusLost();
-    method @Nullable public android.telecom.Conference onCreateIncomingConference(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest);
-    method public void onCreateIncomingConferenceFailed(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest);
-    method public android.telecom.Connection onCreateIncomingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
-    method public void onCreateIncomingConnectionFailed(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
-    method public android.telecom.Connection onCreateIncomingHandoverConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
-    method @Nullable public android.telecom.Conference onCreateOutgoingConference(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest);
-    method public void onCreateOutgoingConferenceFailed(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest);
-    method public android.telecom.Connection onCreateOutgoingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
-    method public void onCreateOutgoingConnectionFailed(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
-    method public android.telecom.Connection onCreateOutgoingHandoverConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
-    method public void onHandoverFailed(android.telecom.ConnectionRequest, int);
-    method public void onRemoteConferenceAdded(android.telecom.RemoteConference);
-    method public void onRemoteExistingConnectionAdded(android.telecom.RemoteConnection);
-    field public static final String SERVICE_INTERFACE = "android.telecom.ConnectionService";
-  }
-
-  public final class DisconnectCause implements android.os.Parcelable {
-    ctor public DisconnectCause(int);
-    ctor public DisconnectCause(int, String);
-    ctor public DisconnectCause(int, CharSequence, CharSequence, String);
-    ctor public DisconnectCause(int, CharSequence, CharSequence, String, int);
-    method public int describeContents();
-    method public int getCode();
-    method public CharSequence getDescription();
-    method public CharSequence getLabel();
-    method public String getReason();
-    method public int getTone();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ANSWERED_ELSEWHERE = 11; // 0xb
-    field public static final int BUSY = 7; // 0x7
-    field public static final int CALL_PULLED = 12; // 0xc
-    field public static final int CANCELED = 4; // 0x4
-    field public static final int CONNECTION_MANAGER_NOT_SUPPORTED = 10; // 0xa
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.DisconnectCause> CREATOR;
-    field public static final int ERROR = 1; // 0x1
-    field public static final int LOCAL = 2; // 0x2
-    field public static final int MISSED = 5; // 0x5
-    field public static final int OTHER = 9; // 0x9
-    field public static final String REASON_EMERGENCY_CALL_PLACED = "REASON_EMERGENCY_CALL_PLACED";
-    field public static final String REASON_IMS_ACCESS_BLOCKED = "REASON_IMS_ACCESS_BLOCKED";
-    field public static final String REASON_WIFI_ON_BUT_WFC_OFF = "REASON_WIFI_ON_BUT_WFC_OFF";
-    field public static final int REJECTED = 6; // 0x6
-    field public static final int REMOTE = 3; // 0x3
-    field public static final int RESTRICTED = 8; // 0x8
-    field public static final int UNKNOWN = 0; // 0x0
-  }
-
-  public class GatewayInfo implements android.os.Parcelable {
-    ctor public GatewayInfo(String, android.net.Uri, android.net.Uri);
-    method public int describeContents();
-    method public android.net.Uri getGatewayAddress();
-    method public String getGatewayProviderPackageName();
-    method public android.net.Uri getOriginalAddress();
-    method public boolean isEmpty();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.GatewayInfo> CREATOR;
-  }
-
-  public abstract class InCallService extends android.app.Service {
-    ctor public InCallService();
-    method public final boolean canAddCall();
-    method public final android.telecom.CallAudioState getCallAudioState();
-    method public final java.util.List<android.telecom.Call> getCalls();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public void onBringToForeground(boolean);
-    method public void onCallAdded(android.telecom.Call);
-    method public void onCallAudioStateChanged(android.telecom.CallAudioState);
-    method public void onCallRemoved(android.telecom.Call);
-    method public void onCanAddCallChanged(boolean);
-    method public void onConnectionEvent(android.telecom.Call, String, android.os.Bundle);
-    method public void onSilenceRinger();
-    method public final void requestBluetoothAudio(@NonNull android.bluetooth.BluetoothDevice);
-    method public final void setAudioRoute(int);
-    method public final void setMuted(boolean);
-    field public static final String SERVICE_INTERFACE = "android.telecom.InCallService";
-  }
-
-  public abstract static class InCallService.VideoCall {
-    ctor public InCallService.VideoCall();
-    method public abstract void registerCallback(android.telecom.InCallService.VideoCall.Callback);
-    method public abstract void registerCallback(android.telecom.InCallService.VideoCall.Callback, android.os.Handler);
-    method public abstract void requestCallDataUsage();
-    method public abstract void requestCameraCapabilities();
-    method public abstract void sendSessionModifyRequest(android.telecom.VideoProfile);
-    method public abstract void sendSessionModifyResponse(android.telecom.VideoProfile);
-    method public abstract void setCamera(String);
-    method public abstract void setDeviceOrientation(int);
-    method public abstract void setDisplaySurface(android.view.Surface);
-    method public abstract void setPauseImage(android.net.Uri);
-    method public abstract void setPreviewSurface(android.view.Surface);
-    method public abstract void setZoom(float);
-    method public abstract void unregisterCallback(android.telecom.InCallService.VideoCall.Callback);
-  }
-
-  public abstract static class InCallService.VideoCall.Callback {
-    ctor public InCallService.VideoCall.Callback();
-    method public abstract void onCallDataUsageChanged(long);
-    method public abstract void onCallSessionEvent(int);
-    method public abstract void onCameraCapabilitiesChanged(android.telecom.VideoProfile.CameraCapabilities);
-    method public abstract void onPeerDimensionsChanged(int, int);
-    method public abstract void onSessionModifyRequestReceived(android.telecom.VideoProfile);
-    method public abstract void onSessionModifyResponseReceived(int, android.telecom.VideoProfile, android.telecom.VideoProfile);
-    method public abstract void onVideoQualityChanged(int);
-  }
-
-  public final class PhoneAccount implements android.os.Parcelable {
-    method public static android.telecom.PhoneAccount.Builder builder(android.telecom.PhoneAccountHandle, CharSequence);
-    method public int describeContents();
-    method public android.telecom.PhoneAccountHandle getAccountHandle();
-    method public android.net.Uri getAddress();
-    method public int getCapabilities();
-    method public android.os.Bundle getExtras();
-    method public int getHighlightColor();
-    method public android.graphics.drawable.Icon getIcon();
-    method public CharSequence getLabel();
-    method public CharSequence getShortDescription();
-    method public android.net.Uri getSubscriptionAddress();
-    method public java.util.List<java.lang.String> getSupportedUriSchemes();
-    method public boolean hasCapabilities(int);
-    method public boolean isEnabled();
-    method public boolean supportsUriScheme(String);
-    method public android.telecom.PhoneAccount.Builder toBuilder();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CAPABILITY_ADHOC_CONFERENCE_CALLING = 16384; // 0x4000
-    field public static final int CAPABILITY_CALL_PROVIDER = 2; // 0x2
-    field public static final int CAPABILITY_CALL_SUBJECT = 64; // 0x40
-    field public static final int CAPABILITY_CONNECTION_MANAGER = 1; // 0x1
-    field public static final int CAPABILITY_PLACE_EMERGENCY_CALLS = 16; // 0x10
-    field public static final int CAPABILITY_RTT = 4096; // 0x1000
-    field public static final int CAPABILITY_SELF_MANAGED = 2048; // 0x800
-    field public static final int CAPABILITY_SIM_SUBSCRIPTION = 4; // 0x4
-    field public static final int CAPABILITY_SUPPORTS_VIDEO_CALLING = 1024; // 0x400
-    field public static final int CAPABILITY_VIDEO_CALLING = 8; // 0x8
-    field public static final int CAPABILITY_VIDEO_CALLING_RELIES_ON_PRESENCE = 256; // 0x100
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.PhoneAccount> CREATOR;
-    field public static final String EXTRA_ALWAYS_USE_VOIP_AUDIO_MODE = "android.telecom.extra.ALWAYS_USE_VOIP_AUDIO_MODE";
-    field public static final String EXTRA_CALL_SUBJECT_CHARACTER_ENCODING = "android.telecom.extra.CALL_SUBJECT_CHARACTER_ENCODING";
-    field public static final String EXTRA_CALL_SUBJECT_MAX_LENGTH = "android.telecom.extra.CALL_SUBJECT_MAX_LENGTH";
-    field public static final String EXTRA_LOG_SELF_MANAGED_CALLS = "android.telecom.extra.LOG_SELF_MANAGED_CALLS";
-    field public static final String EXTRA_SUPPORTS_HANDOVER_FROM = "android.telecom.extra.SUPPORTS_HANDOVER_FROM";
-    field public static final String EXTRA_SUPPORTS_HANDOVER_TO = "android.telecom.extra.SUPPORTS_HANDOVER_TO";
-    field public static final int NO_HIGHLIGHT_COLOR = 0; // 0x0
-    field public static final int NO_RESOURCE_ID = -1; // 0xffffffff
-    field public static final String SCHEME_SIP = "sip";
-    field public static final String SCHEME_TEL = "tel";
-    field public static final String SCHEME_VOICEMAIL = "voicemail";
-  }
-
-  public static class PhoneAccount.Builder {
-    ctor public PhoneAccount.Builder(android.telecom.PhoneAccountHandle, CharSequence);
-    ctor public PhoneAccount.Builder(android.telecom.PhoneAccount);
-    method public android.telecom.PhoneAccount.Builder addSupportedUriScheme(String);
-    method public android.telecom.PhoneAccount build();
-    method public android.telecom.PhoneAccount.Builder setAddress(android.net.Uri);
-    method public android.telecom.PhoneAccount.Builder setCapabilities(int);
-    method public android.telecom.PhoneAccount.Builder setExtras(android.os.Bundle);
-    method public android.telecom.PhoneAccount.Builder setHighlightColor(int);
-    method public android.telecom.PhoneAccount.Builder setIcon(android.graphics.drawable.Icon);
-    method public android.telecom.PhoneAccount.Builder setShortDescription(CharSequence);
-    method public android.telecom.PhoneAccount.Builder setSubscriptionAddress(android.net.Uri);
-    method public android.telecom.PhoneAccount.Builder setSupportedUriSchemes(java.util.List<java.lang.String>);
-  }
-
-  public final class PhoneAccountHandle implements android.os.Parcelable {
-    ctor public PhoneAccountHandle(@NonNull android.content.ComponentName, @NonNull String);
-    ctor public PhoneAccountHandle(@NonNull android.content.ComponentName, @NonNull String, @NonNull android.os.UserHandle);
-    method public int describeContents();
-    method public android.content.ComponentName getComponentName();
-    method public String getId();
-    method public android.os.UserHandle getUserHandle();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.PhoneAccountHandle> CREATOR;
-  }
-
-  public final class PhoneAccountSuggestion implements android.os.Parcelable {
-    ctor public PhoneAccountSuggestion(@NonNull android.telecom.PhoneAccountHandle, int, boolean);
-    method public int describeContents();
-    method @NonNull public android.telecom.PhoneAccountHandle getPhoneAccountHandle();
-    method public int getReason();
-    method public boolean shouldAutoSelect();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.PhoneAccountSuggestion> CREATOR;
-    field public static final int REASON_FREQUENT = 2; // 0x2
-    field public static final int REASON_INTRA_CARRIER = 1; // 0x1
-    field public static final int REASON_NONE = 0; // 0x0
-    field public static final int REASON_OTHER = 4; // 0x4
-    field public static final int REASON_USER_SET = 3; // 0x3
-  }
-
-  public final class RemoteConference {
-    method public void disconnect();
-    method public java.util.List<android.telecom.RemoteConnection> getConferenceableConnections();
-    method public int getConnectionCapabilities();
-    method public int getConnectionProperties();
-    method public java.util.List<android.telecom.RemoteConnection> getConnections();
-    method public android.telecom.DisconnectCause getDisconnectCause();
-    method public android.os.Bundle getExtras();
-    method public int getState();
-    method public void hold();
-    method public void merge();
-    method public void playDtmfTone(char);
-    method public void registerCallback(android.telecom.RemoteConference.Callback);
-    method public void registerCallback(android.telecom.RemoteConference.Callback, android.os.Handler);
-    method public void separate(android.telecom.RemoteConnection);
-    method public void setCallAudioState(android.telecom.CallAudioState);
-    method public void stopDtmfTone();
-    method public void swap();
-    method public void unhold();
-    method public void unregisterCallback(android.telecom.RemoteConference.Callback);
-  }
-
-  public abstract static class RemoteConference.Callback {
-    ctor public RemoteConference.Callback();
-    method public void onConferenceableConnectionsChanged(android.telecom.RemoteConference, java.util.List<android.telecom.RemoteConnection>);
-    method public void onConnectionAdded(android.telecom.RemoteConference, android.telecom.RemoteConnection);
-    method public void onConnectionCapabilitiesChanged(android.telecom.RemoteConference, int);
-    method public void onConnectionPropertiesChanged(android.telecom.RemoteConference, int);
-    method public void onConnectionRemoved(android.telecom.RemoteConference, android.telecom.RemoteConnection);
-    method public void onDestroyed(android.telecom.RemoteConference);
-    method public void onDisconnected(android.telecom.RemoteConference, android.telecom.DisconnectCause);
-    method public void onExtrasChanged(android.telecom.RemoteConference, @Nullable android.os.Bundle);
-    method public void onStateChanged(android.telecom.RemoteConference, int, int);
-  }
-
-  public final class RemoteConnection {
-    method public void abort();
-    method public void addConferenceParticipants(@NonNull java.util.List<android.net.Uri>);
-    method public void answer();
-    method public void disconnect();
-    method public android.net.Uri getAddress();
-    method public int getAddressPresentation();
-    method public CharSequence getCallerDisplayName();
-    method public int getCallerDisplayNamePresentation();
-    method public android.telecom.RemoteConference getConference();
-    method public java.util.List<android.telecom.RemoteConnection> getConferenceableConnections();
-    method public int getConnectionCapabilities();
-    method public int getConnectionProperties();
-    method public android.telecom.DisconnectCause getDisconnectCause();
-    method public android.os.Bundle getExtras();
-    method public int getState();
-    method public android.telecom.StatusHints getStatusHints();
-    method public android.telecom.RemoteConnection.VideoProvider getVideoProvider();
-    method public int getVideoState();
-    method public void hold();
-    method public boolean isRingbackRequested();
-    method public boolean isVoipAudioMode();
-    method public void playDtmfTone(char);
-    method public void postDialContinue(boolean);
-    method public void pullExternalCall();
-    method public void registerCallback(android.telecom.RemoteConnection.Callback);
-    method public void registerCallback(android.telecom.RemoteConnection.Callback, android.os.Handler);
-    method public void reject();
-    method public void setCallAudioState(android.telecom.CallAudioState);
-    method public void stopDtmfTone();
-    method public void unhold();
-    method public void unregisterCallback(android.telecom.RemoteConnection.Callback);
-  }
-
-  public abstract static class RemoteConnection.Callback {
-    ctor public RemoteConnection.Callback();
-    method public void onAddressChanged(android.telecom.RemoteConnection, android.net.Uri, int);
-    method public void onCallerDisplayNameChanged(android.telecom.RemoteConnection, String, int);
-    method public void onConferenceChanged(android.telecom.RemoteConnection, android.telecom.RemoteConference);
-    method public void onConferenceableConnectionsChanged(android.telecom.RemoteConnection, java.util.List<android.telecom.RemoteConnection>);
-    method public void onConnectionCapabilitiesChanged(android.telecom.RemoteConnection, int);
-    method public void onConnectionEvent(android.telecom.RemoteConnection, String, android.os.Bundle);
-    method public void onConnectionPropertiesChanged(android.telecom.RemoteConnection, int);
-    method public void onDestroyed(android.telecom.RemoteConnection);
-    method public void onDisconnected(android.telecom.RemoteConnection, android.telecom.DisconnectCause);
-    method public void onExtrasChanged(android.telecom.RemoteConnection, @Nullable android.os.Bundle);
-    method public void onPostDialChar(android.telecom.RemoteConnection, char);
-    method public void onPostDialWait(android.telecom.RemoteConnection, String);
-    method public void onRingbackRequested(android.telecom.RemoteConnection, boolean);
-    method public void onStateChanged(android.telecom.RemoteConnection, int);
-    method public void onStatusHintsChanged(android.telecom.RemoteConnection, android.telecom.StatusHints);
-    method public void onVideoProviderChanged(android.telecom.RemoteConnection, android.telecom.RemoteConnection.VideoProvider);
-    method public void onVideoStateChanged(android.telecom.RemoteConnection, int);
-    method public void onVoipAudioChanged(android.telecom.RemoteConnection, boolean);
-  }
-
-  public static class RemoteConnection.VideoProvider {
-    method public void registerCallback(android.telecom.RemoteConnection.VideoProvider.Callback);
-    method public void requestCallDataUsage();
-    method public void requestCameraCapabilities();
-    method public void sendSessionModifyRequest(android.telecom.VideoProfile, android.telecom.VideoProfile);
-    method public void sendSessionModifyResponse(android.telecom.VideoProfile);
-    method public void setCamera(String);
-    method public void setDeviceOrientation(int);
-    method public void setDisplaySurface(android.view.Surface);
-    method public void setPauseImage(android.net.Uri);
-    method public void setPreviewSurface(android.view.Surface);
-    method public void setZoom(float);
-    method public void unregisterCallback(android.telecom.RemoteConnection.VideoProvider.Callback);
-  }
-
-  public abstract static class RemoteConnection.VideoProvider.Callback {
-    ctor public RemoteConnection.VideoProvider.Callback();
-    method public void onCallDataUsageChanged(android.telecom.RemoteConnection.VideoProvider, long);
-    method public void onCallSessionEvent(android.telecom.RemoteConnection.VideoProvider, int);
-    method public void onCameraCapabilitiesChanged(android.telecom.RemoteConnection.VideoProvider, android.telecom.VideoProfile.CameraCapabilities);
-    method public void onPeerDimensionsChanged(android.telecom.RemoteConnection.VideoProvider, int, int);
-    method public void onSessionModifyRequestReceived(android.telecom.RemoteConnection.VideoProvider, android.telecom.VideoProfile);
-    method public void onSessionModifyResponseReceived(android.telecom.RemoteConnection.VideoProvider, int, android.telecom.VideoProfile, android.telecom.VideoProfile);
-    method public void onVideoQualityChanged(android.telecom.RemoteConnection.VideoProvider, int);
-  }
-
-  public final class StatusHints implements android.os.Parcelable {
-    ctor public StatusHints(CharSequence, android.graphics.drawable.Icon, android.os.Bundle);
-    method public int describeContents();
-    method public android.os.Bundle getExtras();
-    method public android.graphics.drawable.Icon getIcon();
-    method public CharSequence getLabel();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.StatusHints> CREATOR;
-  }
-
-  public class TelecomManager {
-    method public void acceptHandover(android.net.Uri, int, android.telecom.PhoneAccountHandle);
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ANSWER_PHONE_CALLS, android.Manifest.permission.MODIFY_PHONE_STATE}) public void acceptRingingCall();
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ANSWER_PHONE_CALLS, android.Manifest.permission.MODIFY_PHONE_STATE}) public void acceptRingingCall(int);
-    method public void addNewIncomingCall(android.telecom.PhoneAccountHandle, android.os.Bundle);
-    method public void addNewIncomingConference(@NonNull android.telecom.PhoneAccountHandle, @NonNull android.os.Bundle);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void cancelMissedCallsNotification();
-    method public android.content.Intent createManageBlockedNumbersIntent();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.ANSWER_PHONE_CALLS) public boolean endCall();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.net.Uri getAdnUriForPhoneAccount(android.telecom.PhoneAccountHandle);
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<android.telecom.PhoneAccountHandle> getCallCapablePhoneAccounts();
-    method public String getDefaultDialerPackage();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public android.telecom.PhoneAccountHandle getDefaultOutgoingPhoneAccount(String);
-    method @RequiresPermission(anyOf={android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.READ_SMS, android.Manifest.permission.READ_PHONE_NUMBERS}, conditional=true) public String getLine1Number(android.telecom.PhoneAccountHandle);
-    method public android.telecom.PhoneAccount getPhoneAccount(android.telecom.PhoneAccountHandle);
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<android.telecom.PhoneAccountHandle> getSelfManagedPhoneAccounts();
-    method public android.telecom.PhoneAccountHandle getSimCallManager();
-    method @Nullable public android.telecom.PhoneAccountHandle getSimCallManagerForSubscription(int);
-    method @Nullable public String getSystemDialerPackage();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public android.telecom.PhoneAccountHandle getUserSelectedOutgoingPhoneAccount();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getVoiceMailNumber(android.telecom.PhoneAccountHandle);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handleMmi(String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handleMmi(String, android.telecom.PhoneAccountHandle);
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isInCall();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isInManagedCall();
-    method public boolean isIncomingCallPermitted(android.telecom.PhoneAccountHandle);
-    method public boolean isOutgoingCallPermitted(android.telecom.PhoneAccountHandle);
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PHONE_STATE}) public boolean isTtySupported();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isVoiceMailNumber(android.telecom.PhoneAccountHandle, String);
-    method @RequiresPermission(anyOf={android.Manifest.permission.CALL_PHONE, android.Manifest.permission.MANAGE_OWN_CALLS}) public void placeCall(android.net.Uri, android.os.Bundle);
-    method public void registerPhoneAccount(android.telecom.PhoneAccount);
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public void showInCallScreen(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void silenceRinger();
-    method @RequiresPermission(android.Manifest.permission.CALL_PHONE) public void startConference(@NonNull java.util.List<android.net.Uri>, @NonNull android.os.Bundle);
-    method public void unregisterPhoneAccount(android.telecom.PhoneAccountHandle);
-    field public static final String ACTION_CHANGE_DEFAULT_DIALER = "android.telecom.action.CHANGE_DEFAULT_DIALER";
-    field public static final String ACTION_CHANGE_PHONE_ACCOUNTS = "android.telecom.action.CHANGE_PHONE_ACCOUNTS";
-    field public static final String ACTION_CONFIGURE_PHONE_ACCOUNT = "android.telecom.action.CONFIGURE_PHONE_ACCOUNT";
-    field public static final String ACTION_DEFAULT_CALL_SCREENING_APP_CHANGED = "android.telecom.action.DEFAULT_CALL_SCREENING_APP_CHANGED";
-    field public static final String ACTION_DEFAULT_DIALER_CHANGED = "android.telecom.action.DEFAULT_DIALER_CHANGED";
-    field @Deprecated public static final String ACTION_INCOMING_CALL = "android.telecom.action.INCOMING_CALL";
-    field public static final String ACTION_PHONE_ACCOUNT_REGISTERED = "android.telecom.action.PHONE_ACCOUNT_REGISTERED";
-    field public static final String ACTION_PHONE_ACCOUNT_UNREGISTERED = "android.telecom.action.PHONE_ACCOUNT_UNREGISTERED";
-    field public static final String ACTION_POST_CALL = "android.telecom.action.POST_CALL";
-    field public static final String ACTION_SHOW_CALL_ACCESSIBILITY_SETTINGS = "android.telecom.action.SHOW_CALL_ACCESSIBILITY_SETTINGS";
-    field public static final String ACTION_SHOW_CALL_SETTINGS = "android.telecom.action.SHOW_CALL_SETTINGS";
-    field public static final String ACTION_SHOW_MISSED_CALLS_NOTIFICATION = "android.telecom.action.SHOW_MISSED_CALLS_NOTIFICATION";
-    field public static final String ACTION_SHOW_RESPOND_VIA_SMS_SETTINGS = "android.telecom.action.SHOW_RESPOND_VIA_SMS_SETTINGS";
-    field public static final char DTMF_CHARACTER_PAUSE = 44; // 0x002c ','
-    field public static final char DTMF_CHARACTER_WAIT = 59; // 0x003b ';'
-    field public static final int DURATION_LONG = 3; // 0x3
-    field public static final int DURATION_MEDIUM = 2; // 0x2
-    field public static final int DURATION_SHORT = 1; // 0x1
-    field public static final int DURATION_VERY_SHORT = 0; // 0x0
-    field public static final String EXTRA_CALL_BACK_NUMBER = "android.telecom.extra.CALL_BACK_NUMBER";
-    field public static final String EXTRA_CALL_DISCONNECT_CAUSE = "android.telecom.extra.CALL_DISCONNECT_CAUSE";
-    field public static final String EXTRA_CALL_DISCONNECT_MESSAGE = "android.telecom.extra.CALL_DISCONNECT_MESSAGE";
-    field public static final String EXTRA_CALL_DURATION = "android.telecom.extra.CALL_DURATION";
-    field public static final String EXTRA_CALL_NETWORK_TYPE = "android.telecom.extra.CALL_NETWORK_TYPE";
-    field public static final String EXTRA_CALL_SUBJECT = "android.telecom.extra.CALL_SUBJECT";
-    field public static final String EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME = "android.telecom.extra.CHANGE_DEFAULT_DIALER_PACKAGE_NAME";
-    field public static final String EXTRA_DEFAULT_CALL_SCREENING_APP_COMPONENT_NAME = "android.telecom.extra.DEFAULT_CALL_SCREENING_APP_COMPONENT_NAME";
-    field public static final String EXTRA_DISCONNECT_CAUSE = "android.telecom.extra.DISCONNECT_CAUSE";
-    field public static final String EXTRA_HANDLE = "android.telecom.extra.HANDLE";
-    field public static final String EXTRA_INCOMING_CALL_ADDRESS = "android.telecom.extra.INCOMING_CALL_ADDRESS";
-    field public static final String EXTRA_INCOMING_CALL_EXTRAS = "android.telecom.extra.INCOMING_CALL_EXTRAS";
-    field public static final String EXTRA_INCOMING_VIDEO_STATE = "android.telecom.extra.INCOMING_VIDEO_STATE";
-    field public static final String EXTRA_IS_DEFAULT_CALL_SCREENING_APP = "android.telecom.extra.IS_DEFAULT_CALL_SCREENING_APP";
-    field public static final String EXTRA_NOTIFICATION_COUNT = "android.telecom.extra.NOTIFICATION_COUNT";
-    field public static final String EXTRA_NOTIFICATION_PHONE_NUMBER = "android.telecom.extra.NOTIFICATION_PHONE_NUMBER";
-    field public static final String EXTRA_OUTGOING_CALL_EXTRAS = "android.telecom.extra.OUTGOING_CALL_EXTRAS";
-    field public static final String EXTRA_PHONE_ACCOUNT_HANDLE = "android.telecom.extra.PHONE_ACCOUNT_HANDLE";
-    field public static final String EXTRA_START_CALL_WITH_RTT = "android.telecom.extra.START_CALL_WITH_RTT";
-    field public static final String EXTRA_START_CALL_WITH_SPEAKERPHONE = "android.telecom.extra.START_CALL_WITH_SPEAKERPHONE";
-    field public static final String EXTRA_START_CALL_WITH_VIDEO_STATE = "android.telecom.extra.START_CALL_WITH_VIDEO_STATE";
-    field public static final String EXTRA_USE_ASSISTED_DIALING = "android.telecom.extra.USE_ASSISTED_DIALING";
-    field public static final String GATEWAY_ORIGINAL_ADDRESS = "android.telecom.extra.GATEWAY_ORIGINAL_ADDRESS";
-    field public static final String GATEWAY_PROVIDER_PACKAGE = "android.telecom.extra.GATEWAY_PROVIDER_PACKAGE";
-    field public static final String METADATA_INCLUDE_EXTERNAL_CALLS = "android.telecom.INCLUDE_EXTERNAL_CALLS";
-    field public static final String METADATA_INCLUDE_SELF_MANAGED_CALLS = "android.telecom.INCLUDE_SELF_MANAGED_CALLS";
-    field public static final String METADATA_IN_CALL_SERVICE_CAR_MODE_UI = "android.telecom.IN_CALL_SERVICE_CAR_MODE_UI";
-    field public static final String METADATA_IN_CALL_SERVICE_RINGING = "android.telecom.IN_CALL_SERVICE_RINGING";
-    field public static final String METADATA_IN_CALL_SERVICE_UI = "android.telecom.IN_CALL_SERVICE_UI";
-    field public static final int PRESENTATION_ALLOWED = 1; // 0x1
-    field public static final int PRESENTATION_PAYPHONE = 4; // 0x4
-    field public static final int PRESENTATION_RESTRICTED = 2; // 0x2
-    field public static final int PRESENTATION_UNKNOWN = 3; // 0x3
-  }
-
-  public class VideoProfile implements android.os.Parcelable {
-    ctor public VideoProfile(int);
-    ctor public VideoProfile(int, int);
-    method public int describeContents();
-    method public int getQuality();
-    method public int getVideoState();
-    method public static boolean isAudioOnly(int);
-    method public static boolean isBidirectional(int);
-    method public static boolean isPaused(int);
-    method public static boolean isReceptionEnabled(int);
-    method public static boolean isTransmissionEnabled(int);
-    method public static boolean isVideo(int);
-    method public static String videoStateToString(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.VideoProfile> CREATOR;
-    field public static final int QUALITY_DEFAULT = 4; // 0x4
-    field public static final int QUALITY_HIGH = 1; // 0x1
-    field public static final int QUALITY_LOW = 3; // 0x3
-    field public static final int QUALITY_MEDIUM = 2; // 0x2
-    field public static final int STATE_AUDIO_ONLY = 0; // 0x0
-    field public static final int STATE_BIDIRECTIONAL = 3; // 0x3
-    field public static final int STATE_PAUSED = 4; // 0x4
-    field public static final int STATE_RX_ENABLED = 2; // 0x2
-    field public static final int STATE_TX_ENABLED = 1; // 0x1
-  }
-
-  public static final class VideoProfile.CameraCapabilities implements android.os.Parcelable {
-    ctor public VideoProfile.CameraCapabilities(@IntRange(from=0) int, @IntRange(from=0) int);
-    ctor public VideoProfile.CameraCapabilities(@IntRange(from=0) int, @IntRange(from=0) int, boolean, @FloatRange(from=1.0f) float);
-    method public int describeContents();
-    method public int getHeight();
-    method public float getMaxZoom();
-    method public int getWidth();
-    method public boolean isZoomSupported();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.VideoProfile.CameraCapabilities> CREATOR;
-  }
-
-}
-
-package android.telephony {
-
-  public final class AccessNetworkConstants {
-    field public static final int TRANSPORT_TYPE_WLAN = 2; // 0x2
-    field public static final int TRANSPORT_TYPE_WWAN = 1; // 0x1
-  }
-
-  public static final class AccessNetworkConstants.AccessNetworkType {
-    field public static final int CDMA2000 = 4; // 0x4
-    field public static final int EUTRAN = 3; // 0x3
-    field public static final int GERAN = 1; // 0x1
-    field public static final int IWLAN = 5; // 0x5
-    field public static final int NGRAN = 6; // 0x6
-    field public static final int UNKNOWN = 0; // 0x0
-    field public static final int UTRAN = 2; // 0x2
-  }
-
-  public static final class AccessNetworkConstants.EutranBand {
-    field public static final int BAND_1 = 1; // 0x1
-    field public static final int BAND_10 = 10; // 0xa
-    field public static final int BAND_11 = 11; // 0xb
-    field public static final int BAND_12 = 12; // 0xc
-    field public static final int BAND_13 = 13; // 0xd
-    field public static final int BAND_14 = 14; // 0xe
-    field public static final int BAND_17 = 17; // 0x11
-    field public static final int BAND_18 = 18; // 0x12
-    field public static final int BAND_19 = 19; // 0x13
-    field public static final int BAND_2 = 2; // 0x2
-    field public static final int BAND_20 = 20; // 0x14
-    field public static final int BAND_21 = 21; // 0x15
-    field public static final int BAND_22 = 22; // 0x16
-    field public static final int BAND_23 = 23; // 0x17
-    field public static final int BAND_24 = 24; // 0x18
-    field public static final int BAND_25 = 25; // 0x19
-    field public static final int BAND_26 = 26; // 0x1a
-    field public static final int BAND_27 = 27; // 0x1b
-    field public static final int BAND_28 = 28; // 0x1c
-    field public static final int BAND_3 = 3; // 0x3
-    field public static final int BAND_30 = 30; // 0x1e
-    field public static final int BAND_31 = 31; // 0x1f
-    field public static final int BAND_33 = 33; // 0x21
-    field public static final int BAND_34 = 34; // 0x22
-    field public static final int BAND_35 = 35; // 0x23
-    field public static final int BAND_36 = 36; // 0x24
-    field public static final int BAND_37 = 37; // 0x25
-    field public static final int BAND_38 = 38; // 0x26
-    field public static final int BAND_39 = 39; // 0x27
-    field public static final int BAND_4 = 4; // 0x4
-    field public static final int BAND_40 = 40; // 0x28
-    field public static final int BAND_41 = 41; // 0x29
-    field public static final int BAND_42 = 42; // 0x2a
-    field public static final int BAND_43 = 43; // 0x2b
-    field public static final int BAND_44 = 44; // 0x2c
-    field public static final int BAND_45 = 45; // 0x2d
-    field public static final int BAND_46 = 46; // 0x2e
-    field public static final int BAND_47 = 47; // 0x2f
-    field public static final int BAND_48 = 48; // 0x30
-    field public static final int BAND_49 = 49; // 0x31
-    field public static final int BAND_5 = 5; // 0x5
-    field public static final int BAND_50 = 50; // 0x32
-    field public static final int BAND_51 = 51; // 0x33
-    field public static final int BAND_52 = 52; // 0x34
-    field public static final int BAND_53 = 53; // 0x35
-    field public static final int BAND_6 = 6; // 0x6
-    field public static final int BAND_65 = 65; // 0x41
-    field public static final int BAND_66 = 66; // 0x42
-    field public static final int BAND_68 = 68; // 0x44
-    field public static final int BAND_7 = 7; // 0x7
-    field public static final int BAND_70 = 70; // 0x46
-    field public static final int BAND_71 = 71; // 0x47
-    field public static final int BAND_72 = 72; // 0x48
-    field public static final int BAND_73 = 73; // 0x49
-    field public static final int BAND_74 = 74; // 0x4a
-    field public static final int BAND_8 = 8; // 0x8
-    field public static final int BAND_85 = 85; // 0x55
-    field public static final int BAND_87 = 87; // 0x57
-    field public static final int BAND_88 = 88; // 0x58
-    field public static final int BAND_9 = 9; // 0x9
-  }
-
-  public static final class AccessNetworkConstants.GeranBand {
-    field public static final int BAND_450 = 3; // 0x3
-    field public static final int BAND_480 = 4; // 0x4
-    field public static final int BAND_710 = 5; // 0x5
-    field public static final int BAND_750 = 6; // 0x6
-    field public static final int BAND_850 = 8; // 0x8
-    field public static final int BAND_DCS1800 = 12; // 0xc
-    field public static final int BAND_E900 = 10; // 0xa
-    field public static final int BAND_ER900 = 14; // 0xe
-    field public static final int BAND_P900 = 9; // 0x9
-    field public static final int BAND_PCS1900 = 13; // 0xd
-    field public static final int BAND_R900 = 11; // 0xb
-    field public static final int BAND_T380 = 1; // 0x1
-    field public static final int BAND_T410 = 2; // 0x2
-    field public static final int BAND_T810 = 7; // 0x7
-  }
-
-  public static final class AccessNetworkConstants.NgranBands {
-    field public static final int BAND_1 = 1; // 0x1
-    field public static final int BAND_12 = 12; // 0xc
-    field public static final int BAND_14 = 14; // 0xe
-    field public static final int BAND_18 = 18; // 0x12
-    field public static final int BAND_2 = 2; // 0x2
-    field public static final int BAND_20 = 20; // 0x14
-    field public static final int BAND_25 = 25; // 0x19
-    field public static final int BAND_257 = 257; // 0x101
-    field public static final int BAND_258 = 258; // 0x102
-    field public static final int BAND_260 = 260; // 0x104
-    field public static final int BAND_261 = 261; // 0x105
-    field public static final int BAND_28 = 28; // 0x1c
-    field public static final int BAND_29 = 29; // 0x1d
-    field public static final int BAND_3 = 3; // 0x3
-    field public static final int BAND_30 = 30; // 0x1e
-    field public static final int BAND_34 = 34; // 0x22
-    field public static final int BAND_38 = 38; // 0x26
-    field public static final int BAND_39 = 39; // 0x27
-    field public static final int BAND_40 = 40; // 0x28
-    field public static final int BAND_41 = 41; // 0x29
-    field public static final int BAND_48 = 48; // 0x30
-    field public static final int BAND_5 = 5; // 0x5
-    field public static final int BAND_50 = 50; // 0x32
-    field public static final int BAND_51 = 51; // 0x33
-    field public static final int BAND_65 = 65; // 0x41
-    field public static final int BAND_66 = 66; // 0x42
-    field public static final int BAND_7 = 7; // 0x7
-    field public static final int BAND_70 = 70; // 0x46
-    field public static final int BAND_71 = 71; // 0x47
-    field public static final int BAND_74 = 74; // 0x4a
-    field public static final int BAND_75 = 75; // 0x4b
-    field public static final int BAND_76 = 76; // 0x4c
-    field public static final int BAND_77 = 77; // 0x4d
-    field public static final int BAND_78 = 78; // 0x4e
-    field public static final int BAND_79 = 79; // 0x4f
-    field public static final int BAND_8 = 8; // 0x8
-    field public static final int BAND_80 = 80; // 0x50
-    field public static final int BAND_81 = 81; // 0x51
-    field public static final int BAND_82 = 82; // 0x52
-    field public static final int BAND_83 = 83; // 0x53
-    field public static final int BAND_84 = 84; // 0x54
-    field public static final int BAND_86 = 86; // 0x56
-    field public static final int BAND_89 = 89; // 0x59
-    field public static final int BAND_90 = 90; // 0x5a
-    field public static final int BAND_91 = 91; // 0x5b
-    field public static final int BAND_92 = 92; // 0x5c
-    field public static final int BAND_93 = 93; // 0x5d
-    field public static final int BAND_94 = 94; // 0x5e
-    field public static final int BAND_95 = 95; // 0x5f
-  }
-
-  public static final class AccessNetworkConstants.UtranBand {
-    field public static final int BAND_1 = 1; // 0x1
-    field public static final int BAND_10 = 10; // 0xa
-    field public static final int BAND_11 = 11; // 0xb
-    field public static final int BAND_12 = 12; // 0xc
-    field public static final int BAND_13 = 13; // 0xd
-    field public static final int BAND_14 = 14; // 0xe
-    field public static final int BAND_19 = 19; // 0x13
-    field public static final int BAND_2 = 2; // 0x2
-    field public static final int BAND_20 = 20; // 0x14
-    field public static final int BAND_21 = 21; // 0x15
-    field public static final int BAND_22 = 22; // 0x16
-    field public static final int BAND_25 = 25; // 0x19
-    field public static final int BAND_26 = 26; // 0x1a
-    field public static final int BAND_3 = 3; // 0x3
-    field public static final int BAND_4 = 4; // 0x4
-    field public static final int BAND_5 = 5; // 0x5
-    field public static final int BAND_6 = 6; // 0x6
-    field public static final int BAND_7 = 7; // 0x7
-    field public static final int BAND_8 = 8; // 0x8
-    field public static final int BAND_9 = 9; // 0x9
-    field public static final int BAND_A = 101; // 0x65
-    field public static final int BAND_B = 102; // 0x66
-    field public static final int BAND_C = 103; // 0x67
-    field public static final int BAND_D = 104; // 0x68
-    field public static final int BAND_E = 105; // 0x69
-    field public static final int BAND_F = 106; // 0x6a
-  }
-
-  public final class AvailableNetworkInfo implements android.os.Parcelable {
-    ctor public AvailableNetworkInfo(int, int, @NonNull java.util.List<java.lang.String>, @NonNull java.util.List<java.lang.Integer>);
-    method public int describeContents();
-    method @NonNull public java.util.List<java.lang.Integer> getBands();
-    method @NonNull public java.util.List<java.lang.String> getMccMncs();
-    method public int getPriority();
-    method public int getSubId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.AvailableNetworkInfo> CREATOR;
-    field public static final int PRIORITY_HIGH = 1; // 0x1
-    field public static final int PRIORITY_LOW = 3; // 0x3
-    field public static final int PRIORITY_MED = 2; // 0x2
-  }
-
-  public final class BarringInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.telephony.BarringInfo.BarringServiceInfo getBarringServiceInfo(int);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final int BARRING_SERVICE_TYPE_CS_FALLBACK = 5; // 0x5
-    field public static final int BARRING_SERVICE_TYPE_CS_SERVICE = 0; // 0x0
-    field public static final int BARRING_SERVICE_TYPE_CS_VOICE = 2; // 0x2
-    field public static final int BARRING_SERVICE_TYPE_EMERGENCY = 8; // 0x8
-    field public static final int BARRING_SERVICE_TYPE_MMTEL_VIDEO = 7; // 0x7
-    field public static final int BARRING_SERVICE_TYPE_MMTEL_VOICE = 6; // 0x6
-    field public static final int BARRING_SERVICE_TYPE_MO_DATA = 4; // 0x4
-    field public static final int BARRING_SERVICE_TYPE_MO_SIGNALLING = 3; // 0x3
-    field public static final int BARRING_SERVICE_TYPE_PS_SERVICE = 1; // 0x1
-    field public static final int BARRING_SERVICE_TYPE_SMS = 9; // 0x9
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.BarringInfo> CREATOR;
-  }
-
-  public static final class BarringInfo.BarringServiceInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getBarringType();
-    method public int getConditionalBarringFactor();
-    method public int getConditionalBarringTimeSeconds();
-    method public boolean isBarred();
-    method public boolean isConditionallyBarred();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final int BARRING_TYPE_CONDITIONAL = 1; // 0x1
-    field public static final int BARRING_TYPE_NONE = 0; // 0x0
-    field public static final int BARRING_TYPE_UNCONDITIONAL = 2; // 0x2
-    field public static final int BARRING_TYPE_UNKNOWN = -1; // 0xffffffff
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.BarringInfo.BarringServiceInfo> CREATOR;
-  }
-
-  public class CarrierConfigManager {
-    method @Nullable public android.os.PersistableBundle getConfig();
-    method @Nullable public android.os.PersistableBundle getConfigByComponentForSubId(@NonNull String, int);
-    method @Nullable public android.os.PersistableBundle getConfigForSubId(int);
-    method public static boolean isConfigForIdentifiedCarrier(android.os.PersistableBundle);
-    method public void notifyConfigChangedForSubId(int);
-    field public static final String ACTION_CARRIER_CONFIG_CHANGED = "android.telephony.action.CARRIER_CONFIG_CHANGED";
-    field public static final int DATA_CYCLE_THRESHOLD_DISABLED = -2; // 0xfffffffe
-    field public static final int DATA_CYCLE_USE_PLATFORM_DEFAULT = -1; // 0xffffffff
-    field public static final String ENABLE_EAP_METHOD_PREFIX_BOOL = "enable_eap_method_prefix_bool";
-    field public static final String EXTRA_SLOT_INDEX = "android.telephony.extra.SLOT_INDEX";
-    field public static final String EXTRA_SUBSCRIPTION_INDEX = "android.telephony.extra.SUBSCRIPTION_INDEX";
-    field public static final String IMSI_KEY_AVAILABILITY_INT = "imsi_key_availability_int";
-    field public static final String KEY_5G_NR_SSRSRP_THRESHOLDS_INT_ARRAY = "5g_nr_ssrsrp_thresholds_int_array";
-    field public static final String KEY_5G_NR_SSRSRQ_THRESHOLDS_INT_ARRAY = "5g_nr_ssrsrq_thresholds_int_array";
-    field public static final String KEY_5G_NR_SSSINR_THRESHOLDS_INT_ARRAY = "5g_nr_sssinr_thresholds_int_array";
-    field public static final String KEY_ADDITIONAL_CALL_SETTING_BOOL = "additional_call_setting_bool";
-    field public static final String KEY_ALLOW_ADDING_APNS_BOOL = "allow_adding_apns_bool";
-    field public static final String KEY_ALLOW_ADD_CALL_DURING_VIDEO_CALL_BOOL = "allow_add_call_during_video_call";
-    field public static final String KEY_ALLOW_EMERGENCY_NUMBERS_IN_CALL_LOG_BOOL = "allow_emergency_numbers_in_call_log_bool";
-    field public static final String KEY_ALLOW_EMERGENCY_VIDEO_CALLS_BOOL = "allow_emergency_video_calls_bool";
-    field public static final String KEY_ALLOW_HOLD_CALL_DURING_EMERGENCY_BOOL = "allow_hold_call_during_emergency_bool";
-    field public static final String KEY_ALLOW_HOLD_VIDEO_CALL_BOOL = "allow_hold_video_call_bool";
-    field public static final String KEY_ALLOW_LOCAL_DTMF_TONES_BOOL = "allow_local_dtmf_tones_bool";
-    field public static final String KEY_ALLOW_MERGE_WIFI_CALLS_WHEN_VOWIFI_OFF_BOOL = "allow_merge_wifi_calls_when_vowifi_off_bool";
-    field public static final String KEY_ALLOW_NON_EMERGENCY_CALLS_IN_ECM_BOOL = "allow_non_emergency_calls_in_ecm_bool";
-    field public static final String KEY_ALLOW_VIDEO_CALLING_FALLBACK_BOOL = "allow_video_calling_fallback_bool";
-    field public static final String KEY_ALWAYS_SHOW_DATA_RAT_ICON_BOOL = "always_show_data_rat_icon_bool";
-    field @Deprecated public static final String KEY_ALWAYS_SHOW_EMERGENCY_ALERT_ONOFF_BOOL = "always_show_emergency_alert_onoff_bool";
-    field public static final String KEY_ALWAYS_SHOW_PRIMARY_SIGNAL_BAR_IN_OPPORTUNISTIC_NETWORK_BOOLEAN = "always_show_primary_signal_bar_in_opportunistic_network_boolean";
-    field public static final String KEY_APN_EXPAND_BOOL = "apn_expand_bool";
-    field public static final String KEY_APN_SETTINGS_DEFAULT_APN_TYPES_STRING_ARRAY = "apn_settings_default_apn_types_string_array";
-    field public static final String KEY_AUTO_RETRY_ENABLED_BOOL = "auto_retry_enabled_bool";
-    field public static final String KEY_CALL_BARRING_DEFAULT_SERVICE_CLASS_INT = "call_barring_default_service_class_int";
-    field public static final String KEY_CALL_BARRING_SUPPORTS_DEACTIVATE_ALL_BOOL = "call_barring_supports_deactivate_all_bool";
-    field public static final String KEY_CALL_BARRING_SUPPORTS_PASSWORD_CHANGE_BOOL = "call_barring_supports_password_change_bool";
-    field public static final String KEY_CALL_BARRING_VISIBILITY_BOOL = "call_barring_visibility_bool";
-    field public static final String KEY_CALL_FORWARDING_BLOCKS_WHILE_ROAMING_STRING_ARRAY = "call_forwarding_blocks_while_roaming_string_array";
-    field public static final String KEY_CALL_REDIRECTION_SERVICE_COMPONENT_NAME_STRING = "call_redirection_service_component_name_string";
-    field public static final String KEY_CARRIER_ALLOW_DEFLECT_IMS_CALL_BOOL = "carrier_allow_deflect_ims_call_bool";
-    field public static final String KEY_CARRIER_ALLOW_TURNOFF_IMS_BOOL = "carrier_allow_turnoff_ims_bool";
-    field public static final String KEY_CARRIER_APP_REQUIRED_DURING_SIM_SETUP_BOOL = "carrier_app_required_during_setup_bool";
-    field public static final String KEY_CARRIER_CALL_SCREENING_APP_STRING = "call_screening_app";
-    field public static final String KEY_CARRIER_CERTIFICATE_STRING_ARRAY = "carrier_certificate_string_array";
-    field public static final String KEY_CARRIER_CONFIG_APPLIED_BOOL = "carrier_config_applied_bool";
-    field public static final String KEY_CARRIER_CONFIG_VERSION_STRING = "carrier_config_version_string";
-    field public static final String KEY_CARRIER_DATA_CALL_PERMANENT_FAILURE_STRINGS = "carrier_data_call_permanent_failure_strings";
-    field public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_DCFAILURE_STRING_ARRAY = "carrier_default_actions_on_dcfailure_string_array";
-    field public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_DEFAULT_NETWORK_AVAILABLE = "carrier_default_actions_on_default_network_available_string_array";
-    field public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY = "carrier_default_actions_on_redirection_string_array";
-    field public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_RESET = "carrier_default_actions_on_reset_string_array";
-    field public static final String KEY_CARRIER_DEFAULT_REDIRECTION_URL_STRING_ARRAY = "carrier_default_redirection_url_string_array";
-    field public static final String KEY_CARRIER_DEFAULT_WFC_IMS_ENABLED_BOOL = "carrier_default_wfc_ims_enabled_bool";
-    field public static final String KEY_CARRIER_DEFAULT_WFC_IMS_MODE_INT = "carrier_default_wfc_ims_mode_int";
-    field public static final String KEY_CARRIER_DEFAULT_WFC_IMS_ROAMING_MODE_INT = "carrier_default_wfc_ims_roaming_mode_int";
-    field @Deprecated public static final String KEY_CARRIER_FORCE_DISABLE_ETWS_CMAS_TEST_BOOL = "carrier_force_disable_etws_cmas_test_bool";
-    field public static final String KEY_CARRIER_IMS_GBA_REQUIRED_BOOL = "carrier_ims_gba_required_bool";
-    field public static final String KEY_CARRIER_INSTANT_LETTERING_AVAILABLE_BOOL = "carrier_instant_lettering_available_bool";
-    field public static final String KEY_CARRIER_INSTANT_LETTERING_ENCODING_STRING = "carrier_instant_lettering_encoding_string";
-    field public static final String KEY_CARRIER_INSTANT_LETTERING_ESCAPED_CHARS_STRING = "carrier_instant_lettering_escaped_chars_string";
-    field public static final String KEY_CARRIER_INSTANT_LETTERING_INVALID_CHARS_STRING = "carrier_instant_lettering_invalid_chars_string";
-    field public static final String KEY_CARRIER_INSTANT_LETTERING_LENGTH_LIMIT_INT = "carrier_instant_lettering_length_limit_int";
-    field public static final String KEY_CARRIER_NAME_OVERRIDE_BOOL = "carrier_name_override_bool";
-    field public static final String KEY_CARRIER_NAME_STRING = "carrier_name_string";
-    field public static final String KEY_CARRIER_RCS_PROVISIONING_REQUIRED_BOOL = "carrier_rcs_provisioning_required_bool";
-    field public static final String KEY_CARRIER_SETTINGS_ACTIVITY_COMPONENT_NAME_STRING = "carrier_settings_activity_component_name_string";
-    field public static final String KEY_CARRIER_SETTINGS_ENABLE_BOOL = "carrier_settings_enable_bool";
-    field public static final String KEY_CARRIER_SUPPORTS_SS_OVER_UT_BOOL = "carrier_supports_ss_over_ut_bool";
-    field public static final String KEY_CARRIER_USE_IMS_FIRST_FOR_EMERGENCY_BOOL = "carrier_use_ims_first_for_emergency_bool";
-    field public static final String KEY_CARRIER_UT_PROVISIONING_REQUIRED_BOOL = "carrier_ut_provisioning_required_bool";
-    field public static final String KEY_CARRIER_VOLTE_AVAILABLE_BOOL = "carrier_volte_available_bool";
-    field public static final String KEY_CARRIER_VOLTE_OVERRIDE_WFC_PROVISIONING_BOOL = "carrier_volte_override_wfc_provisioning_bool";
-    field public static final String KEY_CARRIER_VOLTE_PROVISIONED_BOOL = "carrier_volte_provisioned_bool";
-    field public static final String KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL = "carrier_volte_provisioning_required_bool";
-    field public static final String KEY_CARRIER_VOLTE_TTY_SUPPORTED_BOOL = "carrier_volte_tty_supported_bool";
-    field public static final String KEY_CARRIER_VT_AVAILABLE_BOOL = "carrier_vt_available_bool";
-    field @Deprecated public static final String KEY_CARRIER_VVM_PACKAGE_NAME_STRING = "carrier_vvm_package_name_string";
-    field public static final String KEY_CARRIER_VVM_PACKAGE_NAME_STRING_ARRAY = "carrier_vvm_package_name_string_array";
-    field public static final String KEY_CARRIER_WFC_IMS_AVAILABLE_BOOL = "carrier_wfc_ims_available_bool";
-    field public static final String KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL = "carrier_wfc_supports_wifi_only_bool";
-    field public static final String KEY_CDMA_3WAYCALL_FLASH_DELAY_INT = "cdma_3waycall_flash_delay_int";
-    field public static final String KEY_CDMA_DTMF_TONE_DELAY_INT = "cdma_dtmf_tone_delay_int";
-    field public static final String KEY_CDMA_NONROAMING_NETWORKS_STRING_ARRAY = "cdma_nonroaming_networks_string_array";
-    field public static final String KEY_CDMA_ROAMING_MODE_INT = "cdma_roaming_mode_int";
-    field public static final String KEY_CDMA_ROAMING_NETWORKS_STRING_ARRAY = "cdma_roaming_networks_string_array";
-    field public static final String KEY_CHECK_PRICING_WITH_CARRIER_FOR_DATA_ROAMING_BOOL = "check_pricing_with_carrier_data_roaming_bool";
-    field public static final String KEY_CI_ACTION_ON_SYS_UPDATE_BOOL = "ci_action_on_sys_update_bool";
-    field public static final String KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_STRING = "ci_action_on_sys_update_extra_string";
-    field public static final String KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_VAL_STRING = "ci_action_on_sys_update_extra_val_string";
-    field public static final String KEY_CI_ACTION_ON_SYS_UPDATE_INTENT_STRING = "ci_action_on_sys_update_intent_string";
-    field public static final String KEY_CONFIG_IMS_MMTEL_PACKAGE_OVERRIDE_STRING = "config_ims_mmtel_package_override_string";
-    field @Deprecated public static final String KEY_CONFIG_IMS_PACKAGE_OVERRIDE_STRING = "config_ims_package_override_string";
-    field public static final String KEY_CONFIG_IMS_RCS_PACKAGE_OVERRIDE_STRING = "config_ims_rcs_package_override_string";
-    field public static final String KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING = "config_plans_package_override_string";
-    field public static final String KEY_CONFIG_TELEPHONY_USE_OWN_NUMBER_FOR_VOICEMAIL_BOOL = "config_telephony_use_own_number_for_voicemail_bool";
-    field public static final String KEY_CONFIG_WIFI_DISABLE_IN_ECBM = "config_wifi_disable_in_ecbm";
-    field public static final String KEY_CSP_ENABLED_BOOL = "csp_enabled_bool";
-    field public static final String KEY_DATA_LIMIT_NOTIFICATION_BOOL = "data_limit_notification_bool";
-    field public static final String KEY_DATA_LIMIT_THRESHOLD_BYTES_LONG = "data_limit_threshold_bytes_long";
-    field public static final String KEY_DATA_RAPID_NOTIFICATION_BOOL = "data_rapid_notification_bool";
-    field public static final String KEY_DATA_SWITCH_VALIDATION_TIMEOUT_LONG = "data_switch_validation_timeout_long";
-    field public static final String KEY_DATA_WARNING_NOTIFICATION_BOOL = "data_warning_notification_bool";
-    field public static final String KEY_DATA_WARNING_THRESHOLD_BYTES_LONG = "data_warning_threshold_bytes_long";
-    field public static final String KEY_DEFAULT_SIM_CALL_MANAGER_STRING = "default_sim_call_manager_string";
-    field public static final String KEY_DEFAULT_VM_NUMBER_ROAMING_AND_IMS_UNREGISTERED_STRING = "default_vm_number_roaming_and_ims_unregistered_string";
-    field public static final String KEY_DEFAULT_VM_NUMBER_STRING = "default_vm_number_string";
-    field public static final String KEY_DIAL_STRING_REPLACE_STRING_ARRAY = "dial_string_replace_string_array";
-    field public static final String KEY_DISABLE_CDMA_ACTIVATION_CODE_BOOL = "disable_cdma_activation_code_bool";
-    field public static final String KEY_DISABLE_CHARGE_INDICATION_BOOL = "disable_charge_indication_bool";
-    field public static final String KEY_DISABLE_SUPPLEMENTARY_SERVICES_IN_AIRPLANE_MODE_BOOL = "disable_supplementary_services_in_airplane_mode_bool";
-    field public static final String KEY_DISCONNECT_CAUSE_PLAY_BUSYTONE_INT_ARRAY = "disconnect_cause_play_busytone_int_array";
-    field public static final String KEY_DISPLAY_HD_AUDIO_PROPERTY_BOOL = "display_hd_audio_property_bool";
-    field public static final String KEY_DROP_VIDEO_CALL_WHEN_ANSWERING_AUDIO_CALL_BOOL = "drop_video_call_when_answering_audio_call_bool";
-    field public static final String KEY_DTMF_TYPE_ENABLED_BOOL = "dtmf_type_enabled_bool";
-    field public static final String KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT = "duration_blocking_disabled_after_emergency_int";
-    field public static final String KEY_EDITABLE_ENHANCED_4G_LTE_BOOL = "editable_enhanced_4g_lte_bool";
-    field public static final String KEY_EDITABLE_VOICEMAIL_NUMBER_BOOL = "editable_voicemail_number_bool";
-    field public static final String KEY_EDITABLE_VOICEMAIL_NUMBER_SETTING_BOOL = "editable_voicemail_number_setting_bool";
-    field public static final String KEY_EDITABLE_WFC_MODE_BOOL = "editable_wfc_mode_bool";
-    field public static final String KEY_EDITABLE_WFC_ROAMING_MODE_BOOL = "editable_wfc_roaming_mode_bool";
-    field public static final String KEY_EMERGENCY_NOTIFICATION_DELAY_INT = "emergency_notification_delay_int";
-    field public static final String KEY_EMERGENCY_NUMBER_PREFIX_STRING_ARRAY = "emergency_number_prefix_string_array";
-    field public static final String KEY_ENABLE_DIALER_KEY_VIBRATION_BOOL = "enable_dialer_key_vibration_bool";
-    field public static final String KEY_ENHANCED_4G_LTE_ON_BY_DEFAULT_BOOL = "enhanced_4g_lte_on_by_default_bool";
-    field public static final String KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT = "enhanced_4g_lte_title_variant_int";
-    field public static final String KEY_FORCE_HOME_NETWORK_BOOL = "force_home_network_bool";
-    field public static final String KEY_GSM_DTMF_TONE_DELAY_INT = "gsm_dtmf_tone_delay_int";
-    field public static final String KEY_GSM_NONROAMING_NETWORKS_STRING_ARRAY = "gsm_nonroaming_networks_string_array";
-    field public static final String KEY_GSM_ROAMING_NETWORKS_STRING_ARRAY = "gsm_roaming_networks_string_array";
-    field public static final String KEY_HAS_IN_CALL_NOISE_SUPPRESSION_BOOL = "has_in_call_noise_suppression_bool";
-    field public static final String KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL = "hide_carrier_network_settings_bool";
-    field public static final String KEY_HIDE_ENHANCED_4G_LTE_BOOL = "hide_enhanced_4g_lte_bool";
-    field public static final String KEY_HIDE_IMS_APN_BOOL = "hide_ims_apn_bool";
-    field public static final String KEY_HIDE_LTE_PLUS_DATA_ICON_BOOL = "hide_lte_plus_data_icon_bool";
-    field public static final String KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL = "hide_preferred_network_type_bool";
-    field public static final String KEY_HIDE_PRESET_APN_DETAILS_BOOL = "hide_preset_apn_details_bool";
-    field public static final String KEY_HIDE_SIM_LOCK_SETTINGS_BOOL = "hide_sim_lock_settings_bool";
-    field public static final String KEY_HIDE_TTY_HCO_VCO_WITH_RTT_BOOL = "hide_tty_hco_vco_with_rtt";
-    field public static final String KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS = "ignore_data_enabled_changed_for_video_calls";
-    field public static final String KEY_IGNORE_RTT_MODE_SETTING_BOOL = "ignore_rtt_mode_setting_bool";
-    field public static final String KEY_IGNORE_SIM_NETWORK_LOCKED_EVENTS_BOOL = "ignore_sim_network_locked_events_bool";
-    field public static final String KEY_IMS_CONFERENCE_SIZE_LIMIT_INT = "ims_conference_size_limit_int";
-    field public static final String KEY_IMS_DTMF_TONE_DELAY_INT = "ims_dtmf_tone_delay_int";
-    field public static final String KEY_IS_IMS_CONFERENCE_SIZE_ENFORCED_BOOL = "is_ims_conference_size_enforced_bool";
-    field public static final String KEY_LTE_ENABLED_BOOL = "lte_enabled_bool";
-    field public static final String KEY_LTE_RSRQ_THRESHOLDS_INT_ARRAY = "lte_rsrq_thresholds_int_array";
-    field public static final String KEY_LTE_RSSNR_THRESHOLDS_INT_ARRAY = "lte_rssnr_thresholds_int_array";
-    field public static final String KEY_MDN_IS_ADDITIONAL_VOICEMAIL_NUMBER_BOOL = "mdn_is_additional_voicemail_number_bool";
-    field public static final String KEY_MMS_ALIAS_ENABLED_BOOL = "aliasEnabled";
-    field public static final String KEY_MMS_ALIAS_MAX_CHARS_INT = "aliasMaxChars";
-    field public static final String KEY_MMS_ALIAS_MIN_CHARS_INT = "aliasMinChars";
-    field public static final String KEY_MMS_ALLOW_ATTACH_AUDIO_BOOL = "allowAttachAudio";
-    field public static final String KEY_MMS_APPEND_TRANSACTION_ID_BOOL = "enabledTransID";
-    field public static final String KEY_MMS_CLOSE_CONNECTION_BOOL = "mmsCloseConnection";
-    field public static final String KEY_MMS_EMAIL_GATEWAY_NUMBER_STRING = "emailGatewayNumber";
-    field public static final String KEY_MMS_GROUP_MMS_ENABLED_BOOL = "enableGroupMms";
-    field public static final String KEY_MMS_HTTP_PARAMS_STRING = "httpParams";
-    field public static final String KEY_MMS_HTTP_SOCKET_TIMEOUT_INT = "httpSocketTimeout";
-    field public static final String KEY_MMS_MAX_IMAGE_HEIGHT_INT = "maxImageHeight";
-    field public static final String KEY_MMS_MAX_IMAGE_WIDTH_INT = "maxImageWidth";
-    field public static final String KEY_MMS_MAX_MESSAGE_SIZE_INT = "maxMessageSize";
-    field public static final String KEY_MMS_MESSAGE_TEXT_MAX_SIZE_INT = "maxMessageTextSize";
-    field public static final String KEY_MMS_MMS_DELIVERY_REPORT_ENABLED_BOOL = "enableMMSDeliveryReports";
-    field public static final String KEY_MMS_MMS_ENABLED_BOOL = "enabledMMS";
-    field public static final String KEY_MMS_MMS_READ_REPORT_ENABLED_BOOL = "enableMMSReadReports";
-    field public static final String KEY_MMS_MULTIPART_SMS_ENABLED_BOOL = "enableMultipartSMS";
-    field public static final String KEY_MMS_NAI_SUFFIX_STRING = "naiSuffix";
-    field public static final String KEY_MMS_NOTIFY_WAP_MMSC_ENABLED_BOOL = "enabledNotifyWapMMSC";
-    field public static final String KEY_MMS_RECIPIENT_LIMIT_INT = "recipientLimit";
-    field public static final String KEY_MMS_SEND_MULTIPART_SMS_AS_SEPARATE_MESSAGES_BOOL = "sendMultipartSmsAsSeparateMessages";
-    field public static final String KEY_MMS_SHOW_CELL_BROADCAST_APP_LINKS_BOOL = "config_cellBroadcastAppLinks";
-    field public static final String KEY_MMS_SMS_DELIVERY_REPORT_ENABLED_BOOL = "enableSMSDeliveryReports";
-    field public static final String KEY_MMS_SMS_TO_MMS_TEXT_LENGTH_THRESHOLD_INT = "smsToMmsTextLengthThreshold";
-    field public static final String KEY_MMS_SMS_TO_MMS_TEXT_THRESHOLD_INT = "smsToMmsTextThreshold";
-    field public static final String KEY_MMS_SUBJECT_MAX_LENGTH_INT = "maxSubjectLength";
-    field public static final String KEY_MMS_SUPPORT_HTTP_CHARSET_HEADER_BOOL = "supportHttpCharsetHeader";
-    field public static final String KEY_MMS_SUPPORT_MMS_CONTENT_DISPOSITION_BOOL = "supportMmsContentDisposition";
-    field public static final String KEY_MMS_UA_PROF_TAG_NAME_STRING = "uaProfTagName";
-    field public static final String KEY_MMS_UA_PROF_URL_STRING = "uaProfUrl";
-    field public static final String KEY_MMS_USER_AGENT_STRING = "userAgent";
-    field public static final String KEY_MONTHLY_DATA_CYCLE_DAY_INT = "monthly_data_cycle_day_int";
-    field public static final String KEY_ONLY_AUTO_SELECT_IN_HOME_NETWORK_BOOL = "only_auto_select_in_home_network";
-    field public static final String KEY_ONLY_SINGLE_DC_ALLOWED_INT_ARRAY = "only_single_dc_allowed_int_array";
-    field public static final String KEY_OPERATOR_SELECTION_EXPAND_BOOL = "operator_selection_expand_bool";
-    field public static final String KEY_OPPORTUNISTIC_NETWORK_BACKOFF_TIME_LONG = "opportunistic_network_backoff_time_long";
-    field public static final String KEY_OPPORTUNISTIC_NETWORK_DATA_SWITCH_EXIT_HYSTERESIS_TIME_LONG = "opportunistic_network_data_switch_exit_hysteresis_time_long";
-    field public static final String KEY_OPPORTUNISTIC_NETWORK_DATA_SWITCH_HYSTERESIS_TIME_LONG = "opportunistic_network_data_switch_hysteresis_time_long";
-    field public static final String KEY_OPPORTUNISTIC_NETWORK_ENTRY_OR_EXIT_HYSTERESIS_TIME_LONG = "opportunistic_network_entry_or_exit_hysteresis_time_long";
-    field public static final String KEY_OPPORTUNISTIC_NETWORK_ENTRY_THRESHOLD_BANDWIDTH_INT = "opportunistic_network_entry_threshold_bandwidth_int";
-    field public static final String KEY_OPPORTUNISTIC_NETWORK_ENTRY_THRESHOLD_RSRP_INT = "opportunistic_network_entry_threshold_rsrp_int";
-    field public static final String KEY_OPPORTUNISTIC_NETWORK_ENTRY_THRESHOLD_RSSNR_INT = "opportunistic_network_entry_threshold_rssnr_int";
-    field public static final String KEY_OPPORTUNISTIC_NETWORK_EXIT_THRESHOLD_RSRP_INT = "opportunistic_network_exit_threshold_rsrp_int";
-    field public static final String KEY_OPPORTUNISTIC_NETWORK_EXIT_THRESHOLD_RSSNR_INT = "opportunistic_network_exit_threshold_rssnr_int";
-    field public static final String KEY_OPPORTUNISTIC_NETWORK_MAX_BACKOFF_TIME_LONG = "opportunistic_network_max_backoff_time_long";
-    field public static final String KEY_OPPORTUNISTIC_NETWORK_PING_PONG_TIME_LONG = "opportunistic_network_ping_pong_time_long";
-    field public static final String KEY_PING_TEST_BEFORE_DATA_SWITCH_BOOL = "ping_test_before_data_switch_bool";
-    field public static final String KEY_PREFER_2G_BOOL = "prefer_2g_bool";
-    field public static final String KEY_PREVENT_CLIR_ACTIVATION_AND_DEACTIVATION_CODE_BOOL = "prevent_clir_activation_and_deactivation_code_bool";
-    field public static final String KEY_RADIO_RESTART_FAILURE_CAUSES_INT_ARRAY = "radio_restart_failure_causes_int_array";
-    field public static final String KEY_RCS_CONFIG_SERVER_URL_STRING = "rcs_config_server_url_string";
-    field public static final String KEY_READ_ONLY_APN_FIELDS_STRING_ARRAY = "read_only_apn_fields_string_array";
-    field public static final String KEY_READ_ONLY_APN_TYPES_STRING_ARRAY = "read_only_apn_types_string_array";
-    field public static final String KEY_REQUIRE_ENTITLEMENT_CHECKS_BOOL = "require_entitlement_checks_bool";
-    field @Deprecated public static final String KEY_RESTART_RADIO_ON_PDP_FAIL_REGULAR_DEACTIVATION_BOOL = "restart_radio_on_pdp_fail_regular_deactivation_bool";
-    field public static final String KEY_RTT_AUTO_UPGRADE_BOOL = "rtt_auto_upgrade_bool";
-    field public static final String KEY_RTT_DOWNGRADE_SUPPORTED_BOOL = "rtt_downgrade_supported_bool";
-    field public static final String KEY_RTT_SUPPORTED_BOOL = "rtt_supported_bool";
-    field public static final String KEY_RTT_SUPPORTED_FOR_VT_BOOL = "rtt_supported_for_vt_bool";
-    field public static final String KEY_RTT_UPGRADE_SUPPORTED_BOOL = "rtt_upgrade_supported_bool";
-    field public static final String KEY_SHOW_4G_FOR_3G_DATA_ICON_BOOL = "show_4g_for_3g_data_icon_bool";
-    field public static final String KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL = "show_4g_for_lte_data_icon_bool";
-    field public static final String KEY_SHOW_APN_SETTING_CDMA_BOOL = "show_apn_setting_cdma_bool";
-    field public static final String KEY_SHOW_BLOCKING_PAY_PHONE_OPTION_BOOL = "show_blocking_pay_phone_option_bool";
-    field public static final String KEY_SHOW_CALL_BLOCKING_DISABLED_NOTIFICATION_ALWAYS_BOOL = "show_call_blocking_disabled_notification_always_bool";
-    field public static final String KEY_SHOW_CDMA_CHOICES_BOOL = "show_cdma_choices_bool";
-    field public static final String KEY_SHOW_FORWARDED_NUMBER_BOOL = "show_forwarded_number_bool";
-    field public static final String KEY_SHOW_ICCID_IN_SIM_STATUS_BOOL = "show_iccid_in_sim_status_bool";
-    field public static final String KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL = "show_ims_registration_status_bool";
-    field public static final String KEY_SHOW_ONSCREEN_DIAL_BUTTON_BOOL = "show_onscreen_dial_button_bool";
-    field public static final String KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL = "show_signal_strength_in_sim_status_bool";
-    field public static final String KEY_SHOW_VIDEO_CALL_CHARGES_ALERT_DIALOG_BOOL = "show_video_call_charges_alert_dialog_bool";
-    field public static final String KEY_SHOW_WFC_LOCATION_PRIVACY_POLICY_BOOL = "show_wfc_location_privacy_policy_bool";
-    field public static final String KEY_SIMPLIFIED_NETWORK_SETTINGS_BOOL = "simplified_network_settings_bool";
-    field public static final String KEY_SIM_NETWORK_UNLOCK_ALLOW_DISMISS_BOOL = "sim_network_unlock_allow_dismiss_bool";
-    field public static final String KEY_SMS_REQUIRES_DESTINATION_NUMBER_CONVERSION_BOOL = "sms_requires_destination_number_conversion_bool";
-    field public static final String KEY_SUPPORT_3GPP_CALL_FORWARDING_WHILE_ROAMING_BOOL = "support_3gpp_call_forwarding_while_roaming_bool";
-    field public static final String KEY_SUPPORT_ADD_CONFERENCE_PARTICIPANTS_BOOL = "support_add_conference_participants_bool";
-    field public static final String KEY_SUPPORT_ADHOC_CONFERENCE_CALLS_BOOL = "support_adhoc_conference_calls_bool";
-    field public static final String KEY_SUPPORT_CLIR_NETWORK_DEFAULT_BOOL = "support_clir_network_default_bool";
-    field public static final String KEY_SUPPORT_CONFERENCE_CALL_BOOL = "support_conference_call_bool";
-    field public static final String KEY_SUPPORT_EMERGENCY_SMS_OVER_IMS_BOOL = "support_emergency_sms_over_ims_bool";
-    field public static final String KEY_SUPPORT_ENHANCED_CALL_BLOCKING_BOOL = "support_enhanced_call_blocking_bool";
-    field public static final String KEY_SUPPORT_IMS_CONFERENCE_EVENT_PACKAGE_BOOL = "support_ims_conference_event_package_bool";
-    field public static final String KEY_SUPPORT_PAUSE_IMS_VIDEO_CALLS_BOOL = "support_pause_ims_video_calls_bool";
-    field public static final String KEY_SUPPORT_SWAP_AFTER_MERGE_BOOL = "support_swap_after_merge_bool";
-    field public static final String KEY_SUPPORT_TDSCDMA_BOOL = "support_tdscdma_bool";
-    field public static final String KEY_SUPPORT_TDSCDMA_ROAMING_NETWORKS_STRING_ARRAY = "support_tdscdma_roaming_networks_string_array";
-    field public static final String KEY_SWITCH_DATA_TO_PRIMARY_IF_PRIMARY_IS_OOS_BOOL = "switch_data_to_primary_if_primary_is_oos_bool";
-    field public static final String KEY_TREAT_DOWNGRADED_VIDEO_CALLS_AS_VIDEO_CALLS_BOOL = "treat_downgraded_video_calls_as_video_calls_bool";
-    field public static final String KEY_TTY_SUPPORTED_BOOL = "tty_supported_bool";
-    field public static final String KEY_UNLOGGABLE_NUMBERS_STRING_ARRAY = "unloggable_numbers_string_array";
-    field public static final String KEY_USE_HFA_FOR_PROVISIONING_BOOL = "use_hfa_for_provisioning_bool";
-    field public static final String KEY_USE_OTASP_FOR_PROVISIONING_BOOL = "use_otasp_for_provisioning_bool";
-    field public static final String KEY_USE_RCS_PRESENCE_BOOL = "use_rcs_presence_bool";
-    field public static final String KEY_USE_RCS_SIP_OPTIONS_BOOL = "use_rcs_sip_options_bool";
-    field public static final String KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL = "use_wfc_home_network_mode_in_roaming_network_bool";
-    field public static final String KEY_VOICEMAIL_NOTIFICATION_PERSISTENT_BOOL = "voicemail_notification_persistent_bool";
-    field public static final String KEY_VOICE_PRIVACY_DISABLE_UI_BOOL = "voice_privacy_disable_ui_bool";
-    field public static final String KEY_VOLTE_REPLACEMENT_RAT_INT = "volte_replacement_rat_int";
-    field public static final String KEY_VVM_CELLULAR_DATA_REQUIRED_BOOL = "vvm_cellular_data_required_bool";
-    field public static final String KEY_VVM_CLIENT_PREFIX_STRING = "vvm_client_prefix_string";
-    field public static final String KEY_VVM_DESTINATION_NUMBER_STRING = "vvm_destination_number_string";
-    field public static final String KEY_VVM_DISABLED_CAPABILITIES_STRING_ARRAY = "vvm_disabled_capabilities_string_array";
-    field public static final String KEY_VVM_LEGACY_MODE_ENABLED_BOOL = "vvm_legacy_mode_enabled_bool";
-    field public static final String KEY_VVM_PORT_NUMBER_INT = "vvm_port_number_int";
-    field public static final String KEY_VVM_PREFETCH_BOOL = "vvm_prefetch_bool";
-    field public static final String KEY_VVM_SSL_ENABLED_BOOL = "vvm_ssl_enabled_bool";
-    field public static final String KEY_VVM_TYPE_STRING = "vvm_type_string";
-    field public static final String KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING = "wfc_emergency_address_carrier_app_string";
-    field public static final String KEY_WORLD_MODE_ENABLED_BOOL = "world_mode_enabled_bool";
-    field public static final String KEY_WORLD_PHONE_BOOL = "world_phone_bool";
-    field public static final int SERVICE_CLASS_NONE = 0; // 0x0
-    field public static final int SERVICE_CLASS_VOICE = 1; // 0x1
-  }
-
-  public static final class CarrierConfigManager.Apn {
-    field public static final String KEY_PREFIX = "apn.";
-    field public static final String KEY_SETTINGS_DEFAULT_PROTOCOL_STRING = "apn.settings_default_protocol_string";
-    field public static final String KEY_SETTINGS_DEFAULT_ROAMING_PROTOCOL_STRING = "apn.settings_default_roaming_protocol_string";
-    field public static final String PROTOCOL_IPV4 = "IP";
-    field public static final String PROTOCOL_IPV4V6 = "IPV4V6";
-    field public static final String PROTOCOL_IPV6 = "IPV6";
-  }
-
-  public static final class CarrierConfigManager.Gps {
-    field public static final String KEY_PERSIST_LPP_MODE_BOOL = "gps.persist_lpp_mode_bool";
-    field public static final String KEY_PREFIX = "gps.";
-  }
-
-  public static final class CarrierConfigManager.Ims {
-    field public static final String KEY_PREFIX = "ims.";
-    field public static final String KEY_WIFI_OFF_DEFERRING_TIME_MILLIS_INT = "ims.wifi_off_deferring_time_millis_int";
-  }
-
-  public abstract class CellIdentity implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public CharSequence getOperatorAlphaLong();
-    method @Nullable public CharSequence getOperatorAlphaShort();
-    method @CallSuper public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellIdentity> CREATOR;
-  }
-
-  public final class CellIdentityCdma extends android.telephony.CellIdentity {
-    method public int getBasestationId();
-    method public int getLatitude();
-    method public int getLongitude();
-    method public int getNetworkId();
-    method public int getSystemId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellIdentityCdma> CREATOR;
-  }
-
-  public final class CellIdentityGsm extends android.telephony.CellIdentity {
-    method @NonNull public java.util.Set<java.lang.String> getAdditionalPlmns();
-    method public int getArfcn();
-    method public int getBsic();
-    method public int getCid();
-    method public int getLac();
-    method @Deprecated public int getMcc();
-    method @Nullable public String getMccString();
-    method @Deprecated public int getMnc();
-    method @Nullable public String getMncString();
-    method @Nullable public String getMobileNetworkOperator();
-    method @Deprecated public int getPsc();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellIdentityGsm> CREATOR;
-  }
-
-  public final class CellIdentityLte extends android.telephony.CellIdentity {
-    method @NonNull public java.util.Set<java.lang.String> getAdditionalPlmns();
-    method @NonNull public int[] getBands();
-    method public int getBandwidth();
-    method public int getCi();
-    method @Nullable public android.telephony.ClosedSubscriberGroupInfo getClosedSubscriberGroupInfo();
-    method public int getEarfcn();
-    method @Deprecated public int getMcc();
-    method @Nullable public String getMccString();
-    method @Deprecated public int getMnc();
-    method @Nullable public String getMncString();
-    method @Nullable public String getMobileNetworkOperator();
-    method public int getPci();
-    method public int getTac();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellIdentityLte> CREATOR;
-  }
-
-  public final class CellIdentityNr extends android.telephony.CellIdentity {
-    method @NonNull public java.util.Set<java.lang.String> getAdditionalPlmns();
-    method @NonNull public int[] getBands();
-    method @Nullable public String getMccString();
-    method @Nullable public String getMncString();
-    method public long getNci();
-    method @IntRange(from=0, to=3279165) public int getNrarfcn();
-    method @IntRange(from=0, to=1007) public int getPci();
-    method @IntRange(from=0, to=65535) public int getTac();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellIdentityNr> CREATOR;
-  }
-
-  public final class CellIdentityTdscdma extends android.telephony.CellIdentity {
-    method @NonNull public java.util.Set<java.lang.String> getAdditionalPlmns();
-    method public int getCid();
-    method @Nullable public android.telephony.ClosedSubscriberGroupInfo getClosedSubscriberGroupInfo();
-    method public int getCpid();
-    method public int getLac();
-    method @Nullable public String getMccString();
-    method @Nullable public String getMncString();
-    method @Nullable public String getMobileNetworkOperator();
-    method public int getUarfcn();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellIdentityTdscdma> CREATOR;
-  }
-
-  public final class CellIdentityWcdma extends android.telephony.CellIdentity {
-    method @NonNull public java.util.Set<java.lang.String> getAdditionalPlmns();
-    method public int getCid();
-    method @Nullable public android.telephony.ClosedSubscriberGroupInfo getClosedSubscriberGroupInfo();
-    method public int getLac();
-    method @Deprecated public int getMcc();
-    method @Nullable public String getMccString();
-    method @Deprecated public int getMnc();
-    method @Nullable public String getMncString();
-    method @Nullable public String getMobileNetworkOperator();
-    method public int getPsc();
-    method public int getUarfcn();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellIdentityWcdma> CREATOR;
-  }
-
-  public abstract class CellInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getCellConnectionStatus();
-    method @NonNull public abstract android.telephony.CellIdentity getCellIdentity();
-    method @NonNull public abstract android.telephony.CellSignalStrength getCellSignalStrength();
-    method @Deprecated public long getTimeStamp();
-    method public long getTimestampMillis();
-    method public boolean isRegistered();
-    field public static final int CONNECTION_NONE = 0; // 0x0
-    field public static final int CONNECTION_PRIMARY_SERVING = 1; // 0x1
-    field public static final int CONNECTION_SECONDARY_SERVING = 2; // 0x2
-    field public static final int CONNECTION_UNKNOWN = 2147483647; // 0x7fffffff
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellInfo> CREATOR;
-    field public static final int UNAVAILABLE = 2147483647; // 0x7fffffff
-    field public static final long UNAVAILABLE_LONG = 9223372036854775807L; // 0x7fffffffffffffffL
-  }
-
-  public final class CellInfoCdma extends android.telephony.CellInfo implements android.os.Parcelable {
-    method @NonNull public android.telephony.CellIdentityCdma getCellIdentity();
-    method @NonNull public android.telephony.CellSignalStrengthCdma getCellSignalStrength();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellInfoCdma> CREATOR;
-  }
-
-  public final class CellInfoGsm extends android.telephony.CellInfo implements android.os.Parcelable {
-    method @NonNull public android.telephony.CellIdentityGsm getCellIdentity();
-    method @NonNull public android.telephony.CellSignalStrengthGsm getCellSignalStrength();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellInfoGsm> CREATOR;
-  }
-
-  public final class CellInfoLte extends android.telephony.CellInfo implements android.os.Parcelable {
-    method @NonNull public android.telephony.CellIdentityLte getCellIdentity();
-    method @NonNull public android.telephony.CellSignalStrengthLte getCellSignalStrength();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellInfoLte> CREATOR;
-  }
-
-  public final class CellInfoNr extends android.telephony.CellInfo {
-    method @NonNull public android.telephony.CellIdentity getCellIdentity();
-    method @NonNull public android.telephony.CellSignalStrength getCellSignalStrength();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellInfoNr> CREATOR;
-  }
-
-  public final class CellInfoTdscdma extends android.telephony.CellInfo implements android.os.Parcelable {
-    method @NonNull public android.telephony.CellIdentityTdscdma getCellIdentity();
-    method @NonNull public android.telephony.CellSignalStrengthTdscdma getCellSignalStrength();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellInfoTdscdma> CREATOR;
-  }
-
-  public final class CellInfoWcdma extends android.telephony.CellInfo implements android.os.Parcelable {
-    method public android.telephony.CellIdentityWcdma getCellIdentity();
-    method public android.telephony.CellSignalStrengthWcdma getCellSignalStrength();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellInfoWcdma> CREATOR;
-  }
-
-  public abstract class CellLocation {
-    ctor public CellLocation();
-    method public static android.telephony.CellLocation getEmpty();
-    method @Deprecated public static void requestLocationUpdate();
-  }
-
-  public abstract class CellSignalStrength {
-    method public abstract boolean equals(Object);
-    method public abstract int getAsuLevel();
-    method public abstract int getDbm();
-    method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public abstract int getLevel();
-    method public abstract int hashCode();
-    field public static final int SIGNAL_STRENGTH_GOOD = 3; // 0x3
-    field public static final int SIGNAL_STRENGTH_GREAT = 4; // 0x4
-    field public static final int SIGNAL_STRENGTH_MODERATE = 2; // 0x2
-    field public static final int SIGNAL_STRENGTH_NONE_OR_UNKNOWN = 0; // 0x0
-    field public static final int SIGNAL_STRENGTH_POOR = 1; // 0x1
-  }
-
-  public final class CellSignalStrengthCdma extends android.telephony.CellSignalStrength implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAsuLevel();
-    method public int getCdmaDbm();
-    method public int getCdmaEcio();
-    method public int getCdmaLevel();
-    method public int getDbm();
-    method public int getEvdoDbm();
-    method public int getEvdoEcio();
-    method public int getEvdoLevel();
-    method public int getEvdoSnr();
-    method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public int getLevel();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthCdma> CREATOR;
-  }
-
-  public final class CellSignalStrengthGsm extends android.telephony.CellSignalStrength implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAsuLevel();
-    method public int getBitErrorRate();
-    method public int getDbm();
-    method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public int getLevel();
-    method public int getRssi();
-    method public int getTimingAdvance();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthGsm> CREATOR;
-  }
-
-  public final class CellSignalStrengthLte extends android.telephony.CellSignalStrength implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAsuLevel();
-    method public int getCqi();
-    method public int getDbm();
-    method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public int getLevel();
-    method public int getRsrp();
-    method public int getRsrq();
-    method public int getRssi();
-    method public int getRssnr();
-    method public int getTimingAdvance();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthLte> CREATOR;
-  }
-
-  public final class CellSignalStrengthNr extends android.telephony.CellSignalStrength implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAsuLevel();
-    method public int getCsiRsrp();
-    method public int getCsiRsrq();
-    method public int getCsiSinr();
-    method public int getDbm();
-    method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public int getLevel();
-    method public int getSsRsrp();
-    method public int getSsRsrq();
-    method public int getSsSinr();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthNr> CREATOR;
-  }
-
-  public final class CellSignalStrengthTdscdma extends android.telephony.CellSignalStrength implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAsuLevel();
-    method public int getDbm();
-    method @IntRange(from=0, to=4) public int getLevel();
-    method public int getRscp();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthTdscdma> CREATOR;
-  }
-
-  public final class CellSignalStrengthWcdma extends android.telephony.CellSignalStrength implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAsuLevel();
-    method public int getDbm();
-    method public int getEcNo();
-    method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public int getLevel();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthWcdma> CREATOR;
-  }
-
-  public final class ClosedSubscriberGroupInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @IntRange(from=0, to=134217727) public int getCsgIdentity();
-    method public boolean getCsgIndicator();
-    method @NonNull public String getHomeNodebName();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ClosedSubscriberGroupInfo> CREATOR;
-  }
-
-  public final class DataFailCause {
-    field public static final int ACCESS_ATTEMPT_ALREADY_IN_PROGRESS = 2219; // 0x8ab
-    field public static final int ACCESS_BLOCK = 2087; // 0x827
-    field public static final int ACCESS_BLOCK_ALL = 2088; // 0x828
-    field public static final int ACCESS_CLASS_DSAC_REJECTION = 2108; // 0x83c
-    field public static final int ACCESS_CONTROL_LIST_CHECK_FAILURE = 2128; // 0x850
-    field public static final int ACTIVATION_REJECTED_BCM_VIOLATION = 48; // 0x30
-    field public static final int ACTIVATION_REJECT_GGSN = 30; // 0x1e
-    field public static final int ACTIVATION_REJECT_UNSPECIFIED = 31; // 0x1f
-    field public static final int ACTIVE_PDP_CONTEXT_MAX_NUMBER_REACHED = 65; // 0x41
-    field public static final int APN_DISABLED = 2045; // 0x7fd
-    field public static final int APN_DISALLOWED_ON_ROAMING = 2059; // 0x80b
-    field public static final int APN_MISMATCH = 2054; // 0x806
-    field public static final int APN_PARAMETERS_CHANGED = 2060; // 0x80c
-    field public static final int APN_PENDING_HANDOVER = 2041; // 0x7f9
-    field public static final int APN_TYPE_CONFLICT = 112; // 0x70
-    field public static final int AUTH_FAILURE_ON_EMERGENCY_CALL = 122; // 0x7a
-    field public static final int BEARER_HANDLING_NOT_SUPPORTED = 60; // 0x3c
-    field public static final int CALL_DISALLOWED_IN_ROAMING = 2068; // 0x814
-    field public static final int CALL_PREEMPT_BY_EMERGENCY_APN = 127; // 0x7f
-    field public static final int CANNOT_ENCODE_OTA_MESSAGE = 2159; // 0x86f
-    field public static final int CDMA_ALERT_STOP = 2077; // 0x81d
-    field public static final int CDMA_INCOMING_CALL = 2076; // 0x81c
-    field public static final int CDMA_INTERCEPT = 2073; // 0x819
-    field public static final int CDMA_LOCK = 2072; // 0x818
-    field public static final int CDMA_RELEASE_DUE_TO_SO_REJECTION = 2075; // 0x81b
-    field public static final int CDMA_REORDER = 2074; // 0x81a
-    field public static final int CDMA_RETRY_ORDER = 2086; // 0x826
-    field public static final int CHANNEL_ACQUISITION_FAILURE = 2078; // 0x81e
-    field public static final int CLOSE_IN_PROGRESS = 2030; // 0x7ee
-    field public static final int COLLISION_WITH_NETWORK_INITIATED_REQUEST = 56; // 0x38
-    field public static final int COMPANION_IFACE_IN_USE = 118; // 0x76
-    field public static final int CONCURRENT_SERVICES_INCOMPATIBLE = 2083; // 0x823
-    field public static final int CONCURRENT_SERVICES_NOT_ALLOWED = 2091; // 0x82b
-    field public static final int CONCURRENT_SERVICE_NOT_SUPPORTED_BY_BASE_STATION = 2080; // 0x820
-    field public static final int CONDITIONAL_IE_ERROR = 100; // 0x64
-    field public static final int CONGESTION = 2106; // 0x83a
-    field public static final int CONNECTION_RELEASED = 2113; // 0x841
-    field public static final int CS_DOMAIN_NOT_AVAILABLE = 2181; // 0x885
-    field public static final int CS_FALLBACK_CALL_ESTABLISHMENT_NOT_ALLOWED = 2188; // 0x88c
-    field public static final int DATA_PLAN_EXPIRED = 2198; // 0x896
-    field public static final int DATA_ROAMING_SETTINGS_DISABLED = 2064; // 0x810
-    field public static final int DATA_SETTINGS_DISABLED = 2063; // 0x80f
-    field public static final int DBM_OR_SMS_IN_PROGRESS = 2211; // 0x8a3
-    field public static final int DDS_SWITCHED = 2065; // 0x811
-    field public static final int DDS_SWITCH_IN_PROGRESS = 2067; // 0x813
-    field public static final int DRB_RELEASED_BY_RRC = 2112; // 0x840
-    field public static final int DS_EXPLICIT_DEACTIVATION = 2125; // 0x84d
-    field public static final int DUAL_SWITCH = 2227; // 0x8b3
-    field public static final int DUN_CALL_DISALLOWED = 2056; // 0x808
-    field public static final int DUPLICATE_BEARER_ID = 2118; // 0x846
-    field public static final int EHRPD_TO_HRPD_FALLBACK = 2049; // 0x801
-    field public static final int EMBMS_NOT_ENABLED = 2193; // 0x891
-    field public static final int EMBMS_REGULAR_DEACTIVATION = 2195; // 0x893
-    field public static final int EMERGENCY_IFACE_ONLY = 116; // 0x74
-    field public static final int EMERGENCY_MODE = 2221; // 0x8ad
-    field public static final int EMM_ACCESS_BARRED = 115; // 0x73
-    field public static final int EMM_ACCESS_BARRED_INFINITE_RETRY = 121; // 0x79
-    field public static final int EMM_ATTACH_FAILED = 2115; // 0x843
-    field public static final int EMM_ATTACH_STARTED = 2116; // 0x844
-    field public static final int EMM_DETACHED = 2114; // 0x842
-    field public static final int EMM_T3417_EXPIRED = 2130; // 0x852
-    field public static final int EMM_T3417_EXT_EXPIRED = 2131; // 0x853
-    field public static final int EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED = 2178; // 0x882
-    field public static final int EPS_SERVICES_NOT_ALLOWED_IN_PLMN = 2179; // 0x883
-    field public static final int ERROR_UNSPECIFIED = 65535; // 0xffff
-    field public static final int ESM_BAD_OTA_MESSAGE = 2122; // 0x84a
-    field public static final int ESM_BEARER_DEACTIVATED_TO_SYNC_WITH_NETWORK = 2120; // 0x848
-    field public static final int ESM_COLLISION_SCENARIOS = 2119; // 0x847
-    field public static final int ESM_CONTEXT_TRANSFERRED_DUE_TO_IRAT = 2124; // 0x84c
-    field public static final int ESM_DOWNLOAD_SERVER_REJECTED_THE_CALL = 2123; // 0x84b
-    field public static final int ESM_FAILURE = 2182; // 0x886
-    field public static final int ESM_INFO_NOT_RECEIVED = 53; // 0x35
-    field public static final int ESM_LOCAL_CAUSE_NONE = 2126; // 0x84e
-    field public static final int ESM_NW_ACTIVATED_DED_BEARER_WITH_ID_OF_DEF_BEARER = 2121; // 0x849
-    field public static final int ESM_PROCEDURE_TIME_OUT = 2155; // 0x86b
-    field public static final int ESM_UNKNOWN_EPS_BEARER_CONTEXT = 2111; // 0x83f
-    field public static final int EVDO_CONNECTION_DENY_BY_BILLING_OR_AUTHENTICATION_FAILURE = 2201; // 0x899
-    field public static final int EVDO_CONNECTION_DENY_BY_GENERAL_OR_NETWORK_BUSY = 2200; // 0x898
-    field public static final int EVDO_HDR_CHANGED = 2202; // 0x89a
-    field public static final int EVDO_HDR_CONNECTION_SETUP_TIMEOUT = 2206; // 0x89e
-    field public static final int EVDO_HDR_EXITED = 2203; // 0x89b
-    field public static final int EVDO_HDR_NO_SESSION = 2204; // 0x89c
-    field public static final int EVDO_USING_GPS_FIX_INSTEAD_OF_HDR_CALL = 2205; // 0x89d
-    field public static final int FADE = 2217; // 0x8a9
-    field public static final int FAILED_TO_ACQUIRE_COLOCATED_HDR = 2207; // 0x89f
-    field public static final int FEATURE_NOT_SUPP = 40; // 0x28
-    field public static final int FILTER_SEMANTIC_ERROR = 44; // 0x2c
-    field public static final int FILTER_SYTAX_ERROR = 45; // 0x2d
-    field public static final int FORBIDDEN_APN_NAME = 2066; // 0x812
-    field public static final int GPRS_REGISTRATION_FAIL = -2; // 0xfffffffe
-    field public static final int GPRS_SERVICES_AND_NON_GPRS_SERVICES_NOT_ALLOWED = 2097; // 0x831
-    field public static final int GPRS_SERVICES_NOT_ALLOWED = 2098; // 0x832
-    field public static final int GPRS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN = 2103; // 0x837
-    field public static final int HANDOFF_PREFERENCE_CHANGED = 2251; // 0x8cb
-    field public static final int HDR_ACCESS_FAILURE = 2213; // 0x8a5
-    field public static final int HDR_FADE = 2212; // 0x8a4
-    field public static final int HDR_NO_LOCK_GRANTED = 2210; // 0x8a2
-    field public static final int IFACE_AND_POL_FAMILY_MISMATCH = 120; // 0x78
-    field public static final int IFACE_MISMATCH = 117; // 0x75
-    field public static final int ILLEGAL_ME = 2096; // 0x830
-    field public static final int ILLEGAL_MS = 2095; // 0x82f
-    field public static final int IMEI_NOT_ACCEPTED = 2177; // 0x881
-    field public static final int IMPLICITLY_DETACHED = 2100; // 0x834
-    field public static final int IMSI_UNKNOWN_IN_HOME_SUBSCRIBER_SERVER = 2176; // 0x880
-    field public static final int INCOMING_CALL_REJECTED = 2092; // 0x82c
-    field public static final int INSUFFICIENT_RESOURCES = 26; // 0x1a
-    field public static final int INTERFACE_IN_USE = 2058; // 0x80a
-    field public static final int INTERNAL_CALL_PREEMPT_BY_HIGH_PRIO_APN = 114; // 0x72
-    field public static final int INTERNAL_EPC_NONEPC_TRANSITION = 2057; // 0x809
-    field public static final int INVALID_CONNECTION_ID = 2156; // 0x86c
-    field public static final int INVALID_DNS_ADDR = 123; // 0x7b
-    field public static final int INVALID_EMM_STATE = 2190; // 0x88e
-    field public static final int INVALID_MANDATORY_INFO = 96; // 0x60
-    field public static final int INVALID_MODE = 2223; // 0x8af
-    field public static final int INVALID_PCSCF_ADDR = 113; // 0x71
-    field public static final int INVALID_PCSCF_OR_DNS_ADDRESS = 124; // 0x7c
-    field public static final int INVALID_PRIMARY_NSAPI = 2158; // 0x86e
-    field public static final int INVALID_SIM_STATE = 2224; // 0x8b0
-    field public static final int INVALID_TRANSACTION_ID = 81; // 0x51
-    field public static final int IPV6_ADDRESS_TRANSFER_FAILED = 2047; // 0x7ff
-    field public static final int IPV6_PREFIX_UNAVAILABLE = 2250; // 0x8ca
-    field public static final int IP_ADDRESS_MISMATCH = 119; // 0x77
-    field public static final int IP_VERSION_MISMATCH = 2055; // 0x807
-    field public static final int IRAT_HANDOVER_FAILED = 2194; // 0x892
-    field public static final int IS707B_MAX_ACCESS_PROBES = 2089; // 0x829
-    field public static final int LIMITED_TO_IPV4 = 2234; // 0x8ba
-    field public static final int LIMITED_TO_IPV6 = 2235; // 0x8bb
-    field public static final int LLC_SNDCP = 25; // 0x19
-    field public static final int LOCAL_END = 2215; // 0x8a7
-    field public static final int LOCATION_AREA_NOT_ALLOWED = 2102; // 0x836
-    field public static final int LOST_CONNECTION = 65540; // 0x10004
-    field public static final int LOWER_LAYER_REGISTRATION_FAILURE = 2197; // 0x895
-    field public static final int LOW_POWER_MODE_OR_POWERING_DOWN = 2044; // 0x7fc
-    field public static final int LTE_NAS_SERVICE_REQUEST_FAILED = 2117; // 0x845
-    field public static final int LTE_THROTTLING_NOT_REQUIRED = 2127; // 0x84f
-    field public static final int MAC_FAILURE = 2183; // 0x887
-    field public static final int MAXIMIUM_NSAPIS_EXCEEDED = 2157; // 0x86d
-    field public static final int MAXINUM_SIZE_OF_L2_MESSAGE_EXCEEDED = 2166; // 0x876
-    field public static final int MAX_ACCESS_PROBE = 2079; // 0x81f
-    field public static final int MAX_IPV4_CONNECTIONS = 2052; // 0x804
-    field public static final int MAX_IPV6_CONNECTIONS = 2053; // 0x805
-    field public static final int MAX_PPP_INACTIVITY_TIMER_EXPIRED = 2046; // 0x7fe
-    field public static final int MESSAGE_INCORRECT_SEMANTIC = 95; // 0x5f
-    field public static final int MESSAGE_TYPE_UNSUPPORTED = 97; // 0x61
-    field public static final int MIP_CONFIG_FAILURE = 2050; // 0x802
-    field public static final int MIP_FA_ADMIN_PROHIBITED = 2001; // 0x7d1
-    field public static final int MIP_FA_DELIVERY_STYLE_NOT_SUPPORTED = 2012; // 0x7dc
-    field public static final int MIP_FA_ENCAPSULATION_UNAVAILABLE = 2008; // 0x7d8
-    field public static final int MIP_FA_HOME_AGENT_AUTHENTICATION_FAILURE = 2004; // 0x7d4
-    field public static final int MIP_FA_INSUFFICIENT_RESOURCES = 2002; // 0x7d2
-    field public static final int MIP_FA_MALFORMED_REPLY = 2007; // 0x7d7
-    field public static final int MIP_FA_MALFORMED_REQUEST = 2006; // 0x7d6
-    field public static final int MIP_FA_MISSING_CHALLENGE = 2017; // 0x7e1
-    field public static final int MIP_FA_MISSING_HOME_ADDRESS = 2015; // 0x7df
-    field public static final int MIP_FA_MISSING_HOME_AGENT = 2014; // 0x7de
-    field public static final int MIP_FA_MISSING_NAI = 2013; // 0x7dd
-    field public static final int MIP_FA_MOBILE_NODE_AUTHENTICATION_FAILURE = 2003; // 0x7d3
-    field public static final int MIP_FA_REASON_UNSPECIFIED = 2000; // 0x7d0
-    field public static final int MIP_FA_REQUESTED_LIFETIME_TOO_LONG = 2005; // 0x7d5
-    field public static final int MIP_FA_REVERSE_TUNNEL_IS_MANDATORY = 2011; // 0x7db
-    field public static final int MIP_FA_REVERSE_TUNNEL_UNAVAILABLE = 2010; // 0x7da
-    field public static final int MIP_FA_STALE_CHALLENGE = 2018; // 0x7e2
-    field public static final int MIP_FA_UNKNOWN_CHALLENGE = 2016; // 0x7e0
-    field public static final int MIP_FA_VJ_HEADER_COMPRESSION_UNAVAILABLE = 2009; // 0x7d9
-    field public static final int MIP_HA_ADMIN_PROHIBITED = 2020; // 0x7e4
-    field public static final int MIP_HA_ENCAPSULATION_UNAVAILABLE = 2029; // 0x7ed
-    field public static final int MIP_HA_FOREIGN_AGENT_AUTHENTICATION_FAILURE = 2023; // 0x7e7
-    field public static final int MIP_HA_INSUFFICIENT_RESOURCES = 2021; // 0x7e5
-    field public static final int MIP_HA_MALFORMED_REQUEST = 2025; // 0x7e9
-    field public static final int MIP_HA_MOBILE_NODE_AUTHENTICATION_FAILURE = 2022; // 0x7e6
-    field public static final int MIP_HA_REASON_UNSPECIFIED = 2019; // 0x7e3
-    field public static final int MIP_HA_REGISTRATION_ID_MISMATCH = 2024; // 0x7e8
-    field public static final int MIP_HA_REVERSE_TUNNEL_IS_MANDATORY = 2028; // 0x7ec
-    field public static final int MIP_HA_REVERSE_TUNNEL_UNAVAILABLE = 2027; // 0x7eb
-    field public static final int MIP_HA_UNKNOWN_HOME_AGENT_ADDRESS = 2026; // 0x7ea
-    field public static final int MISSING_UNKNOWN_APN = 27; // 0x1b
-    field public static final int MODEM_APP_PREEMPTED = 2032; // 0x7f0
-    field public static final int MODEM_RESTART = 2037; // 0x7f5
-    field public static final int MSC_TEMPORARILY_NOT_REACHABLE = 2180; // 0x884
-    field public static final int MSG_AND_PROTOCOL_STATE_UNCOMPATIBLE = 101; // 0x65
-    field public static final int MSG_TYPE_NONCOMPATIBLE_STATE = 98; // 0x62
-    field public static final int MS_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK = 2099; // 0x833
-    field public static final int MULTIPLE_PDP_CALL_NOT_ALLOWED = 2192; // 0x890
-    field public static final int MULTI_CONN_TO_SAME_PDN_NOT_ALLOWED = 55; // 0x37
-    field public static final int NAS_LAYER_FAILURE = 2191; // 0x88f
-    field public static final int NAS_REQUEST_REJECTED_BY_NETWORK = 2167; // 0x877
-    field public static final int NAS_SIGNALLING = 14; // 0xe
-    field public static final int NETWORK_FAILURE = 38; // 0x26
-    field public static final int NETWORK_INITIATED_DETACH_NO_AUTO_REATTACH = 2154; // 0x86a
-    field public static final int NETWORK_INITIATED_DETACH_WITH_AUTO_REATTACH = 2153; // 0x869
-    field public static final int NETWORK_INITIATED_TERMINATION = 2031; // 0x7ef
-    field public static final int NONE = 0; // 0x0
-    field public static final int NON_IP_NOT_SUPPORTED = 2069; // 0x815
-    field public static final int NORMAL_RELEASE = 2218; // 0x8aa
-    field public static final int NO_CDMA_SERVICE = 2084; // 0x824
-    field public static final int NO_COLLOCATED_HDR = 2225; // 0x8b1
-    field public static final int NO_EPS_BEARER_CONTEXT_ACTIVATED = 2189; // 0x88d
-    field public static final int NO_GPRS_CONTEXT = 2094; // 0x82e
-    field public static final int NO_HYBRID_HDR_SERVICE = 2209; // 0x8a1
-    field public static final int NO_PDP_CONTEXT_ACTIVATED = 2107; // 0x83b
-    field public static final int NO_RESPONSE_FROM_BASE_STATION = 2081; // 0x821
-    field public static final int NO_SERVICE = 2216; // 0x8a8
-    field public static final int NO_SERVICE_ON_GATEWAY = 2093; // 0x82d
-    field public static final int NSAPI_IN_USE = 35; // 0x23
-    field public static final int NULL_APN_DISALLOWED = 2061; // 0x80d
-    field public static final int OEM_DCFAILCAUSE_1 = 4097; // 0x1001
-    field public static final int OEM_DCFAILCAUSE_10 = 4106; // 0x100a
-    field public static final int OEM_DCFAILCAUSE_11 = 4107; // 0x100b
-    field public static final int OEM_DCFAILCAUSE_12 = 4108; // 0x100c
-    field public static final int OEM_DCFAILCAUSE_13 = 4109; // 0x100d
-    field public static final int OEM_DCFAILCAUSE_14 = 4110; // 0x100e
-    field public static final int OEM_DCFAILCAUSE_15 = 4111; // 0x100f
-    field public static final int OEM_DCFAILCAUSE_2 = 4098; // 0x1002
-    field public static final int OEM_DCFAILCAUSE_3 = 4099; // 0x1003
-    field public static final int OEM_DCFAILCAUSE_4 = 4100; // 0x1004
-    field public static final int OEM_DCFAILCAUSE_5 = 4101; // 0x1005
-    field public static final int OEM_DCFAILCAUSE_6 = 4102; // 0x1006
-    field public static final int OEM_DCFAILCAUSE_7 = 4103; // 0x1007
-    field public static final int OEM_DCFAILCAUSE_8 = 4104; // 0x1008
-    field public static final int OEM_DCFAILCAUSE_9 = 4105; // 0x1009
-    field public static final int ONLY_IPV4V6_ALLOWED = 57; // 0x39
-    field public static final int ONLY_IPV4_ALLOWED = 50; // 0x32
-    field public static final int ONLY_IPV6_ALLOWED = 51; // 0x33
-    field public static final int ONLY_NON_IP_ALLOWED = 58; // 0x3a
-    field public static final int ONLY_SINGLE_BEARER_ALLOWED = 52; // 0x34
-    field public static final int OPERATOR_BARRED = 8; // 0x8
-    field public static final int OTASP_COMMIT_IN_PROGRESS = 2208; // 0x8a0
-    field public static final int PDN_CONN_DOES_NOT_EXIST = 54; // 0x36
-    field public static final int PDN_INACTIVITY_TIMER_EXPIRED = 2051; // 0x803
-    field public static final int PDN_IPV4_CALL_DISALLOWED = 2033; // 0x7f1
-    field public static final int PDN_IPV4_CALL_THROTTLED = 2034; // 0x7f2
-    field public static final int PDN_IPV6_CALL_DISALLOWED = 2035; // 0x7f3
-    field public static final int PDN_IPV6_CALL_THROTTLED = 2036; // 0x7f4
-    field public static final int PDN_NON_IP_CALL_DISALLOWED = 2071; // 0x817
-    field public static final int PDN_NON_IP_CALL_THROTTLED = 2070; // 0x816
-    field public static final int PDP_ACTIVATE_MAX_RETRY_FAILED = 2109; // 0x83d
-    field public static final int PDP_DUPLICATE = 2104; // 0x838
-    field public static final int PDP_ESTABLISH_TIMEOUT_EXPIRED = 2161; // 0x871
-    field public static final int PDP_INACTIVE_TIMEOUT_EXPIRED = 2163; // 0x873
-    field public static final int PDP_LOWERLAYER_ERROR = 2164; // 0x874
-    field public static final int PDP_MODIFY_COLLISION = 2165; // 0x875
-    field public static final int PDP_MODIFY_TIMEOUT_EXPIRED = 2162; // 0x872
-    field public static final int PDP_PPP_NOT_SUPPORTED = 2038; // 0x7f6
-    field public static final int PDP_WITHOUT_ACTIVE_TFT = 46; // 0x2e
-    field public static final int PHONE_IN_USE = 2222; // 0x8ae
-    field public static final int PHYSICAL_LINK_CLOSE_IN_PROGRESS = 2040; // 0x7f8
-    field public static final int PLMN_NOT_ALLOWED = 2101; // 0x835
-    field public static final int PPP_AUTH_FAILURE = 2229; // 0x8b5
-    field public static final int PPP_CHAP_FAILURE = 2232; // 0x8b8
-    field public static final int PPP_CLOSE_IN_PROGRESS = 2233; // 0x8b9
-    field public static final int PPP_OPTION_MISMATCH = 2230; // 0x8b6
-    field public static final int PPP_PAP_FAILURE = 2231; // 0x8b7
-    field public static final int PPP_TIMEOUT = 2228; // 0x8b4
-    field public static final int PREF_RADIO_TECH_CHANGED = -4; // 0xfffffffc
-    field public static final int PROFILE_BEARER_INCOMPATIBLE = 2042; // 0x7fa
-    field public static final int PROTOCOL_ERRORS = 111; // 0x6f
-    field public static final int QOS_NOT_ACCEPTED = 37; // 0x25
-    field public static final int RADIO_ACCESS_BEARER_FAILURE = 2110; // 0x83e
-    field public static final int RADIO_ACCESS_BEARER_SETUP_FAILURE = 2160; // 0x870
-    field public static final int RADIO_NOT_AVAILABLE = 65537; // 0x10001
-    field public static final int RADIO_POWER_OFF = -5; // 0xfffffffb
-    field public static final int REDIRECTION_OR_HANDOFF_IN_PROGRESS = 2220; // 0x8ac
-    field public static final int REGISTRATION_FAIL = -1; // 0xffffffff
-    field public static final int REGULAR_DEACTIVATION = 36; // 0x24
-    field public static final int REJECTED_BY_BASE_STATION = 2082; // 0x822
-    field public static final int RRC_CONNECTION_ABORTED_AFTER_HANDOVER = 2173; // 0x87d
-    field public static final int RRC_CONNECTION_ABORTED_AFTER_IRAT_CELL_CHANGE = 2174; // 0x87e
-    field public static final int RRC_CONNECTION_ABORTED_DUE_TO_IRAT_CHANGE = 2171; // 0x87b
-    field public static final int RRC_CONNECTION_ABORTED_DURING_IRAT_CELL_CHANGE = 2175; // 0x87f
-    field public static final int RRC_CONNECTION_ABORT_REQUEST = 2151; // 0x867
-    field public static final int RRC_CONNECTION_ACCESS_BARRED = 2139; // 0x85b
-    field public static final int RRC_CONNECTION_ACCESS_STRATUM_FAILURE = 2137; // 0x859
-    field public static final int RRC_CONNECTION_ANOTHER_PROCEDURE_IN_PROGRESS = 2138; // 0x85a
-    field public static final int RRC_CONNECTION_CELL_NOT_CAMPED = 2144; // 0x860
-    field public static final int RRC_CONNECTION_CELL_RESELECTION = 2140; // 0x85c
-    field public static final int RRC_CONNECTION_CONFIG_FAILURE = 2141; // 0x85d
-    field public static final int RRC_CONNECTION_INVALID_REQUEST = 2168; // 0x878
-    field public static final int RRC_CONNECTION_LINK_FAILURE = 2143; // 0x85f
-    field public static final int RRC_CONNECTION_NORMAL_RELEASE = 2147; // 0x863
-    field public static final int RRC_CONNECTION_OUT_OF_SERVICE_DURING_CELL_REGISTER = 2150; // 0x866
-    field public static final int RRC_CONNECTION_RADIO_LINK_FAILURE = 2148; // 0x864
-    field public static final int RRC_CONNECTION_REESTABLISHMENT_FAILURE = 2149; // 0x865
-    field public static final int RRC_CONNECTION_REJECT_BY_NETWORK = 2146; // 0x862
-    field public static final int RRC_CONNECTION_RELEASED_SECURITY_NOT_ACTIVE = 2172; // 0x87c
-    field public static final int RRC_CONNECTION_RF_UNAVAILABLE = 2170; // 0x87a
-    field public static final int RRC_CONNECTION_SYSTEM_INFORMATION_BLOCK_READ_ERROR = 2152; // 0x868
-    field public static final int RRC_CONNECTION_SYSTEM_INTERVAL_FAILURE = 2145; // 0x861
-    field public static final int RRC_CONNECTION_TIMER_EXPIRED = 2142; // 0x85e
-    field public static final int RRC_CONNECTION_TRACKING_AREA_ID_CHANGED = 2169; // 0x879
-    field public static final int RRC_UPLINK_CONNECTION_RELEASE = 2134; // 0x856
-    field public static final int RRC_UPLINK_DATA_TRANSMISSION_FAILURE = 2132; // 0x854
-    field public static final int RRC_UPLINK_DELIVERY_FAILED_DUE_TO_HANDOVER = 2133; // 0x855
-    field public static final int RRC_UPLINK_ERROR_REQUEST_FROM_NAS = 2136; // 0x858
-    field public static final int RRC_UPLINK_RADIO_LINK_FAILURE = 2135; // 0x857
-    field public static final int RUIM_NOT_PRESENT = 2085; // 0x825
-    field public static final int SECURITY_MODE_REJECTED = 2186; // 0x88a
-    field public static final int SERVICE_NOT_ALLOWED_ON_PLMN = 2129; // 0x851
-    field public static final int SERVICE_OPTION_NOT_SUBSCRIBED = 33; // 0x21
-    field public static final int SERVICE_OPTION_NOT_SUPPORTED = 32; // 0x20
-    field public static final int SERVICE_OPTION_OUT_OF_ORDER = 34; // 0x22
-    field public static final int SIGNAL_LOST = -3; // 0xfffffffd
-    field public static final int SIM_CARD_CHANGED = 2043; // 0x7fb
-    field public static final int SYNCHRONIZATION_FAILURE = 2184; // 0x888
-    field public static final int TEST_LOOPBACK_REGULAR_DEACTIVATION = 2196; // 0x894
-    field public static final int TETHERED_CALL_ACTIVE = -6; // 0xfffffffa
-    field public static final int TFT_SEMANTIC_ERROR = 41; // 0x29
-    field public static final int TFT_SYTAX_ERROR = 42; // 0x2a
-    field public static final int THERMAL_EMERGENCY = 2090; // 0x82a
-    field public static final int THERMAL_MITIGATION = 2062; // 0x80e
-    field public static final int TRAT_SWAP_FAILED = 2048; // 0x800
-    field public static final int UE_INITIATED_DETACH_OR_DISCONNECT = 128; // 0x80
-    field public static final int UE_IS_ENTERING_POWERSAVE_MODE = 2226; // 0x8b2
-    field public static final int UE_RAT_CHANGE = 2105; // 0x839
-    field public static final int UE_SECURITY_CAPABILITIES_MISMATCH = 2185; // 0x889
-    field public static final int UMTS_HANDOVER_TO_IWLAN = 2199; // 0x897
-    field public static final int UMTS_REACTIVATION_REQ = 39; // 0x27
-    field public static final int UNACCEPTABLE_NETWORK_PARAMETER = 65538; // 0x10002
-    field public static final int UNACCEPTABLE_NON_EPS_AUTHENTICATION = 2187; // 0x88b
-    field public static final int UNKNOWN = 65536; // 0x10000
-    field public static final int UNKNOWN_INFO_ELEMENT = 99; // 0x63
-    field public static final int UNKNOWN_PDP_ADDRESS_TYPE = 28; // 0x1c
-    field public static final int UNKNOWN_PDP_CONTEXT = 43; // 0x2b
-    field public static final int UNPREFERRED_RAT = 2039; // 0x7f7
-    field public static final int UNSUPPORTED_1X_PREV = 2214; // 0x8a6
-    field public static final int UNSUPPORTED_APN_IN_CURRENT_PLMN = 66; // 0x42
-    field public static final int UNSUPPORTED_QCI_VALUE = 59; // 0x3b
-    field public static final int USER_AUTHENTICATION = 29; // 0x1d
-    field public static final int VSNCP_ADMINISTRATIVELY_PROHIBITED = 2245; // 0x8c5
-    field public static final int VSNCP_APN_UNAUTHORIZED = 2238; // 0x8be
-    field public static final int VSNCP_GEN_ERROR = 2237; // 0x8bd
-    field public static final int VSNCP_INSUFFICIENT_PARAMETERS = 2243; // 0x8c3
-    field public static final int VSNCP_NO_PDN_GATEWAY_ADDRESS = 2240; // 0x8c0
-    field public static final int VSNCP_PDN_EXISTS_FOR_THIS_APN = 2248; // 0x8c8
-    field public static final int VSNCP_PDN_GATEWAY_REJECT = 2242; // 0x8c2
-    field public static final int VSNCP_PDN_GATEWAY_UNREACHABLE = 2241; // 0x8c1
-    field public static final int VSNCP_PDN_ID_IN_USE = 2246; // 0x8c6
-    field public static final int VSNCP_PDN_LIMIT_EXCEEDED = 2239; // 0x8bf
-    field public static final int VSNCP_RECONNECT_NOT_ALLOWED = 2249; // 0x8c9
-    field public static final int VSNCP_RESOURCE_UNAVAILABLE = 2244; // 0x8c4
-    field public static final int VSNCP_SUBSCRIBER_LIMITATION = 2247; // 0x8c7
-    field public static final int VSNCP_TIMEOUT = 2236; // 0x8bc
-  }
-
-  public final class DisconnectCause {
-    field public static final int ALREADY_DIALING = 72; // 0x48
-    field public static final int ANSWERED_ELSEWHERE = 52; // 0x34
-    field public static final int BUSY = 4; // 0x4
-    field public static final int CALLING_DISABLED = 74; // 0x4a
-    field public static final int CALL_BARRED = 20; // 0x14
-    field public static final int CALL_PULLED = 51; // 0x33
-    field public static final int CANT_CALL_WHILE_RINGING = 73; // 0x49
-    field public static final int CDMA_ACCESS_BLOCKED = 35; // 0x23
-    field public static final int CDMA_ACCESS_FAILURE = 32; // 0x20
-    field public static final int CDMA_ALREADY_ACTIVATED = 49; // 0x31
-    field public static final int CDMA_DROP = 27; // 0x1b
-    field public static final int CDMA_INTERCEPT = 28; // 0x1c
-    field public static final int CDMA_LOCKED_UNTIL_POWER_CYCLE = 26; // 0x1a
-    field public static final int CDMA_NOT_EMERGENCY = 34; // 0x22
-    field public static final int CDMA_PREEMPTED = 33; // 0x21
-    field public static final int CDMA_REORDER = 29; // 0x1d
-    field public static final int CDMA_RETRY_ORDER = 31; // 0x1f
-    field public static final int CDMA_SO_REJECT = 30; // 0x1e
-    field public static final int CONGESTION = 5; // 0x5
-    field public static final int CS_RESTRICTED = 22; // 0x16
-    field public static final int CS_RESTRICTED_EMERGENCY = 24; // 0x18
-    field public static final int CS_RESTRICTED_NORMAL = 23; // 0x17
-    field public static final int DATA_DISABLED = 54; // 0x36
-    field public static final int DATA_LIMIT_REACHED = 55; // 0x37
-    field public static final int DIALED_CALL_FORWARDING_WHILE_ROAMING = 57; // 0x39
-    field public static final int DIALED_MMI = 39; // 0x27
-    field public static final int DIAL_LOW_BATTERY = 62; // 0x3e
-    field public static final int DIAL_MODIFIED_TO_DIAL = 48; // 0x30
-    field public static final int DIAL_MODIFIED_TO_DIAL_VIDEO = 66; // 0x42
-    field public static final int DIAL_MODIFIED_TO_SS = 47; // 0x2f
-    field public static final int DIAL_MODIFIED_TO_USSD = 46; // 0x2e
-    field public static final int DIAL_VIDEO_MODIFIED_TO_DIAL = 69; // 0x45
-    field public static final int DIAL_VIDEO_MODIFIED_TO_DIAL_VIDEO = 70; // 0x46
-    field public static final int DIAL_VIDEO_MODIFIED_TO_SS = 67; // 0x43
-    field public static final int DIAL_VIDEO_MODIFIED_TO_USSD = 68; // 0x44
-    field public static final int EMERGENCY_CALL_OVER_WFC_NOT_AVAILABLE = 78; // 0x4e
-    field public static final int EMERGENCY_PERM_FAILURE = 64; // 0x40
-    field public static final int EMERGENCY_TEMP_FAILURE = 63; // 0x3f
-    field public static final int ERROR_UNSPECIFIED = 36; // 0x24
-    field public static final int FDN_BLOCKED = 21; // 0x15
-    field public static final int ICC_ERROR = 19; // 0x13
-    field public static final int IMEI_NOT_ACCEPTED = 58; // 0x3a
-    field public static final int IMS_ACCESS_BLOCKED = 60; // 0x3c
-    field public static final int IMS_MERGED_SUCCESSFULLY = 45; // 0x2d
-    field public static final int IMS_SIP_ALTERNATE_EMERGENCY_CALL = 71; // 0x47
-    field public static final int INCOMING_AUTO_REJECTED = 81; // 0x51
-    field public static final int INCOMING_MISSED = 1; // 0x1
-    field public static final int INCOMING_REJECTED = 16; // 0x10
-    field public static final int INVALID_CREDENTIALS = 10; // 0xa
-    field public static final int INVALID_NUMBER = 7; // 0x7
-    field public static final int LIMIT_EXCEEDED = 15; // 0xf
-    field public static final int LOCAL = 3; // 0x3
-    field public static final int LOST_SIGNAL = 14; // 0xe
-    field public static final int LOW_BATTERY = 61; // 0x3d
-    field public static final int MAXIMUM_NUMBER_OF_CALLS_REACHED = 53; // 0x35
-    field public static final int MEDIA_TIMEOUT = 77; // 0x4d
-    field public static final int MMI = 6; // 0x6
-    field public static final int NORMAL = 2; // 0x2
-    field public static final int NORMAL_UNSPECIFIED = 65; // 0x41
-    field public static final int NOT_DISCONNECTED = 0; // 0x0
-    field public static final int NOT_VALID = -1; // 0xffffffff
-    field public static final int NO_PHONE_NUMBER_SUPPLIED = 38; // 0x26
-    field public static final int NUMBER_UNREACHABLE = 8; // 0x8
-    field public static final int OTASP_PROVISIONING_IN_PROCESS = 76; // 0x4c
-    field public static final int OUTGOING_CANCELED = 44; // 0x2c
-    field public static final int OUTGOING_EMERGENCY_CALL_PLACED = 80; // 0x50
-    field public static final int OUTGOING_FAILURE = 43; // 0x2b
-    field public static final int OUT_OF_NETWORK = 11; // 0xb
-    field public static final int OUT_OF_SERVICE = 18; // 0x12
-    field public static final int POWER_OFF = 17; // 0x11
-    field public static final int SERVER_ERROR = 12; // 0xc
-    field public static final int SERVER_UNREACHABLE = 9; // 0x9
-    field public static final int TIMED_OUT = 13; // 0xd
-    field public static final int TOO_MANY_ONGOING_CALLS = 75; // 0x4b
-    field public static final int UNOBTAINABLE_NUMBER = 25; // 0x19
-    field public static final int VIDEO_CALL_NOT_ALLOWED_WHILE_TTY_ENABLED = 50; // 0x32
-    field public static final int VOICEMAIL_NUMBER_MISSING = 40; // 0x28
-    field public static final int WFC_SERVICE_NOT_AVAILABLE_IN_THIS_LOCATION = 79; // 0x4f
-    field public static final int WIFI_LOST = 59; // 0x3b
-  }
-
-  public class IccOpenLogicalChannelResponse implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getChannel();
-    method public byte[] getSelectResponse();
-    method public int getStatus();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.IccOpenLogicalChannelResponse> CREATOR;
-    field public static final int INVALID_CHANNEL = -1; // 0xffffffff
-    field public static final int STATUS_MISSING_RESOURCE = 2; // 0x2
-    field public static final int STATUS_NO_ERROR = 1; // 0x1
-    field public static final int STATUS_NO_SUCH_ELEMENT = 3; // 0x3
-    field public static final int STATUS_UNKNOWN_ERROR = 4; // 0x4
-  }
-
-  public class MbmsDownloadSession implements java.lang.AutoCloseable {
-    method public void addProgressListener(@NonNull android.telephony.mbms.DownloadRequest, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.DownloadProgressListener);
-    method public void addServiceAnnouncement(@NonNull byte[]);
-    method public void addStatusListener(@NonNull android.telephony.mbms.DownloadRequest, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.DownloadStatusListener);
-    method public void cancelDownload(@NonNull android.telephony.mbms.DownloadRequest);
-    method public void close();
-    method public static android.telephony.MbmsDownloadSession create(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.MbmsDownloadSessionCallback);
-    method @Nullable public static android.telephony.MbmsDownloadSession create(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, int, @NonNull android.telephony.mbms.MbmsDownloadSessionCallback);
-    method public void download(@NonNull android.telephony.mbms.DownloadRequest);
-    method public static int getMaximumServiceAnnouncementSize();
-    method @Nullable public java.io.File getTempFileRootDirectory();
-    method @NonNull public java.util.List<android.telephony.mbms.DownloadRequest> listPendingDownloads();
-    method public void removeProgressListener(@NonNull android.telephony.mbms.DownloadRequest, @NonNull android.telephony.mbms.DownloadProgressListener);
-    method public void removeStatusListener(@NonNull android.telephony.mbms.DownloadRequest, @NonNull android.telephony.mbms.DownloadStatusListener);
-    method public void requestDownloadState(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo);
-    method public void requestUpdateFileServices(@NonNull java.util.List<java.lang.String>);
-    method public void resetDownloadKnowledge(android.telephony.mbms.DownloadRequest);
-    method public void setTempFileRootDirectory(@NonNull java.io.File);
-    field public static final String DEFAULT_TOP_LEVEL_TEMP_DIRECTORY = "androidMbmsTempFileRoot";
-    field public static final String EXTRA_MBMS_COMPLETED_FILE_URI = "android.telephony.extra.MBMS_COMPLETED_FILE_URI";
-    field public static final String EXTRA_MBMS_DOWNLOAD_REQUEST = "android.telephony.extra.MBMS_DOWNLOAD_REQUEST";
-    field public static final String EXTRA_MBMS_DOWNLOAD_RESULT = "android.telephony.extra.MBMS_DOWNLOAD_RESULT";
-    field public static final String EXTRA_MBMS_FILE_INFO = "android.telephony.extra.MBMS_FILE_INFO";
-    field public static final int RESULT_CANCELLED = 2; // 0x2
-    field public static final int RESULT_DOWNLOAD_FAILURE = 6; // 0x6
-    field public static final int RESULT_EXPIRED = 3; // 0x3
-    field public static final int RESULT_FILE_ROOT_UNREACHABLE = 8; // 0x8
-    field public static final int RESULT_IO_ERROR = 4; // 0x4
-    field public static final int RESULT_OUT_OF_STORAGE = 7; // 0x7
-    field public static final int RESULT_SERVICE_ID_NOT_DEFINED = 5; // 0x5
-    field public static final int RESULT_SUCCESSFUL = 1; // 0x1
-    field public static final int STATUS_ACTIVELY_DOWNLOADING = 1; // 0x1
-    field public static final int STATUS_PENDING_DOWNLOAD = 2; // 0x2
-    field public static final int STATUS_PENDING_DOWNLOAD_WINDOW = 4; // 0x4
-    field public static final int STATUS_PENDING_REPAIR = 3; // 0x3
-    field public static final int STATUS_UNKNOWN = 0; // 0x0
-  }
-
-  public class MbmsGroupCallSession implements java.lang.AutoCloseable {
-    method public void close();
-    method @Nullable public static android.telephony.MbmsGroupCallSession create(@NonNull android.content.Context, int, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.MbmsGroupCallSessionCallback);
-    method @Nullable public static android.telephony.MbmsGroupCallSession create(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.MbmsGroupCallSessionCallback);
-    method @Nullable public android.telephony.mbms.GroupCall startGroupCall(long, @NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.lang.Integer>, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.GroupCallCallback);
-  }
-
-  public class MbmsStreamingSession implements java.lang.AutoCloseable {
-    method public void close();
-    method @Nullable public static android.telephony.MbmsStreamingSession create(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, int, @NonNull android.telephony.mbms.MbmsStreamingSessionCallback);
-    method public static android.telephony.MbmsStreamingSession create(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.MbmsStreamingSessionCallback);
-    method public void requestUpdateStreamingServices(java.util.List<java.lang.String>);
-    method @Nullable public android.telephony.mbms.StreamingService startStreaming(android.telephony.mbms.StreamingServiceInfo, @NonNull java.util.concurrent.Executor, android.telephony.mbms.StreamingServiceCallback);
-  }
-
-  @Deprecated public class NeighboringCellInfo implements android.os.Parcelable {
-    ctor @Deprecated public NeighboringCellInfo();
-    ctor @Deprecated public NeighboringCellInfo(int, int);
-    ctor @Deprecated public NeighboringCellInfo(int, String, int);
-    ctor @Deprecated public NeighboringCellInfo(android.os.Parcel);
-    method @Deprecated public int describeContents();
-    method @Deprecated public int getCid();
-    method @Deprecated public int getLac();
-    method @Deprecated public int getNetworkType();
-    method @Deprecated public int getPsc();
-    method @Deprecated public int getRssi();
-    method @Deprecated public void setCid(int);
-    method @Deprecated public void setRssi(int);
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.telephony.NeighboringCellInfo> CREATOR;
-    field @Deprecated public static final int UNKNOWN_CID = -1; // 0xffffffff
-    field @Deprecated public static final int UNKNOWN_RSSI = 99; // 0x63
-  }
-
-  public final class NetworkRegistrationInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAccessNetworkTechnology();
-    method @NonNull public java.util.List<java.lang.Integer> getAvailableServices();
-    method @Nullable public android.telephony.CellIdentity getCellIdentity();
-    method public int getDomain();
-    method @Nullable public String getRegisteredPlmn();
-    method public int getTransportType();
-    method public boolean isRegistered();
-    method public boolean isRoaming();
-    method public boolean isSearching();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.NetworkRegistrationInfo> CREATOR;
-    field public static final int DOMAIN_CS = 1; // 0x1
-    field public static final int DOMAIN_CS_PS = 3; // 0x3
-    field public static final int DOMAIN_PS = 2; // 0x2
-    field public static final int DOMAIN_UNKNOWN = 0; // 0x0
-    field public static final int NR_STATE_CONNECTED = 3; // 0x3
-    field public static final int NR_STATE_NONE = 0; // 0x0
-    field public static final int NR_STATE_NOT_RESTRICTED = 2; // 0x2
-    field public static final int NR_STATE_RESTRICTED = 1; // 0x1
-    field public static final int SERVICE_TYPE_DATA = 2; // 0x2
-    field public static final int SERVICE_TYPE_EMERGENCY = 5; // 0x5
-    field public static final int SERVICE_TYPE_SMS = 3; // 0x3
-    field public static final int SERVICE_TYPE_UNKNOWN = 0; // 0x0
-    field public static final int SERVICE_TYPE_VIDEO = 4; // 0x4
-    field public static final int SERVICE_TYPE_VOICE = 1; // 0x1
-  }
-
-  public class NetworkScan {
-    method public void stopScan();
-    field public static final int ERROR_INTERRUPTED = 10002; // 0x2712
-    field public static final int ERROR_INVALID_SCAN = 2; // 0x2
-    field public static final int ERROR_INVALID_SCANID = 10001; // 0x2711
-    field public static final int ERROR_MODEM_ERROR = 1; // 0x1
-    field public static final int ERROR_MODEM_UNAVAILABLE = 3; // 0x3
-    field public static final int ERROR_RADIO_INTERFACE_ERROR = 10000; // 0x2710
-    field public static final int ERROR_UNSUPPORTED = 4; // 0x4
-    field public static final int SUCCESS = 0; // 0x0
-  }
-
-  public final class NetworkScanRequest implements android.os.Parcelable {
-    ctor public NetworkScanRequest(int, android.telephony.RadioAccessSpecifier[], int, int, boolean, int, java.util.ArrayList<java.lang.String>);
-    method public int describeContents();
-    method public boolean getIncrementalResults();
-    method public int getIncrementalResultsPeriodicity();
-    method public int getMaxSearchTime();
-    method public java.util.ArrayList<java.lang.String> getPlmns();
-    method public int getScanType();
-    method public int getSearchPeriodicity();
-    method public android.telephony.RadioAccessSpecifier[] getSpecifiers();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.NetworkScanRequest> CREATOR;
-    field public static final int SCAN_TYPE_ONE_SHOT = 0; // 0x0
-    field public static final int SCAN_TYPE_PERIODIC = 1; // 0x1
-  }
-
-  public class PhoneNumberFormattingTextWatcher implements android.text.TextWatcher {
-    ctor public PhoneNumberFormattingTextWatcher();
-    ctor public PhoneNumberFormattingTextWatcher(String);
-    method public void afterTextChanged(android.text.Editable);
-    method public void beforeTextChanged(CharSequence, int, int, int);
-    method public void onTextChanged(CharSequence, int, int, int);
-  }
-
-  public class PhoneNumberUtils {
-    ctor public PhoneNumberUtils();
-    method public static void addTtsSpan(android.text.Spannable, int, int);
-    method @Deprecated public static String calledPartyBCDFragmentToString(byte[], int, int);
-    method public static String calledPartyBCDFragmentToString(byte[], int, int, int);
-    method @Deprecated public static String calledPartyBCDToString(byte[], int, int);
-    method public static String calledPartyBCDToString(byte[], int, int, int);
-    method public static boolean compare(String, String);
-    method public static boolean compare(android.content.Context, String, String);
-    method public static String convertKeypadLettersToDigits(String);
-    method public static android.text.style.TtsSpan createTtsSpan(String);
-    method public static CharSequence createTtsSpannable(CharSequence);
-    method public static String extractNetworkPortion(String);
-    method public static String extractPostDialPortion(String);
-    method @Deprecated public static void formatJapaneseNumber(android.text.Editable);
-    method @Deprecated public static void formatNanpNumber(android.text.Editable);
-    method @Deprecated public static String formatNumber(String);
-    method @Deprecated public static void formatNumber(android.text.Editable, int);
-    method public static String formatNumber(String, String);
-    method public static String formatNumber(String, String, String);
-    method public static String formatNumberToE164(String, String);
-    method public static String formatNumberToRFC3966(String, String);
-    method @Deprecated public static int getFormatTypeForLocale(java.util.Locale);
-    method public static String getNumberFromIntent(android.content.Intent, android.content.Context);
-    method public static String getStrippedReversed(String);
-    method public static final boolean is12Key(char);
-    method public static final boolean isDialable(char);
-    method @Deprecated public static boolean isEmergencyNumber(String);
-    method public static boolean isGlobalPhoneNumber(String);
-    method public static boolean isISODigit(char);
-    method @Deprecated public static boolean isLocalEmergencyNumber(android.content.Context, String);
-    method public static final boolean isNonSeparator(char);
-    method public static final boolean isReallyDialable(char);
-    method public static final boolean isStartsPostDial(char);
-    method public static boolean isVoiceMailNumber(String);
-    method public static boolean isWellFormedSmsAddress(String);
-    method public static byte[] networkPortionToCalledPartyBCD(String);
-    method public static byte[] networkPortionToCalledPartyBCDWithLength(String);
-    method public static String normalizeNumber(String);
-    method @Deprecated public static byte[] numberToCalledPartyBCD(String);
-    method public static byte[] numberToCalledPartyBCD(String, int);
-    method public static String replaceUnicodeDigits(String);
-    method public static String stringFromStringAndTOA(String, int);
-    method public static String stripSeparators(String);
-    method public static String toCallerIDMinMatch(String);
-    method public static int toaFromString(String);
-    field public static final int BCD_EXTENDED_TYPE_CALLED_PARTY = 2; // 0x2
-    field public static final int BCD_EXTENDED_TYPE_EF_ADN = 1; // 0x1
-    field public static final int FORMAT_JAPAN = 2; // 0x2
-    field public static final int FORMAT_NANP = 1; // 0x1
-    field public static final int FORMAT_UNKNOWN = 0; // 0x0
-    field public static final char PAUSE = 44; // 0x002c ','
-    field public static final int TOA_International = 145; // 0x91
-    field public static final int TOA_Unknown = 129; // 0x81
-    field public static final char WAIT = 59; // 0x003b ';'
-    field public static final char WILD = 78; // 0x004e 'N'
-  }
-
-  public class PhoneStateListener {
-    ctor public PhoneStateListener();
-    ctor public PhoneStateListener(@NonNull java.util.concurrent.Executor);
-    method public void onActiveDataSubscriptionIdChanged(int);
-    method public void onBarringInfoChanged(@NonNull android.telephony.BarringInfo);
-    method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onCallDisconnectCauseChanged(int, int);
-    method public void onCallForwardingIndicatorChanged(boolean);
-    method public void onCallStateChanged(int, String);
-    method public void onCellInfoChanged(java.util.List<android.telephony.CellInfo>);
-    method public void onCellLocationChanged(android.telephony.CellLocation);
-    method public void onDataActivity(int);
-    method public void onDataConnectionStateChanged(int);
-    method public void onDataConnectionStateChanged(int, int);
-    method @RequiresPermission("android.permission.READ_PHONE_STATE") public void onDisplayInfoChanged(@NonNull android.telephony.TelephonyDisplayInfo);
-    method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onImsCallDisconnectCauseChanged(@NonNull android.telephony.ims.ImsReasonInfo);
-    method public void onMessageWaitingIndicatorChanged(boolean);
-    method @RequiresPermission("android.permission.MODIFY_PHONE_STATE") public void onPreciseDataConnectionStateChanged(@NonNull android.telephony.PreciseDataConnectionState);
-    method public void onRegistrationFailed(@NonNull android.telephony.CellIdentity, @NonNull String, int, int, int);
-    method public void onServiceStateChanged(android.telephony.ServiceState);
-    method @Deprecated public void onSignalStrengthChanged(int);
-    method public void onSignalStrengthsChanged(android.telephony.SignalStrength);
-    method public void onUserMobileDataStateChanged(boolean);
-    field public static final int LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE = 4194304; // 0x400000
-    field @RequiresPermission(android.Manifest.permission.READ_PRECISE_PHONE_STATE) public static final int LISTEN_BARRING_INFO = -2147483648; // 0x80000000
-    field @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public static final int LISTEN_CALL_DISCONNECT_CAUSES = 33554432; // 0x2000000
-    field public static final int LISTEN_CALL_FORWARDING_INDICATOR = 8; // 0x8
-    field public static final int LISTEN_CALL_STATE = 32; // 0x20
-    field public static final int LISTEN_CELL_INFO = 1024; // 0x400
-    field public static final int LISTEN_CELL_LOCATION = 16; // 0x10
-    field public static final int LISTEN_DATA_ACTIVITY = 128; // 0x80
-    field public static final int LISTEN_DATA_CONNECTION_STATE = 64; // 0x40
-    field public static final int LISTEN_DISPLAY_INFO_CHANGED = 1048576; // 0x100000
-    field public static final int LISTEN_EMERGENCY_NUMBER_LIST = 16777216; // 0x1000000
-    field @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public static final int LISTEN_IMS_CALL_DISCONNECT_CAUSES = 134217728; // 0x8000000
-    field public static final int LISTEN_MESSAGE_WAITING_INDICATOR = 4; // 0x4
-    field public static final int LISTEN_NONE = 0; // 0x0
-    field @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public static final int LISTEN_PRECISE_DATA_CONNECTION_STATE = 4096; // 0x1000
-    field @RequiresPermission(android.Manifest.permission.READ_PRECISE_PHONE_STATE) public static final int LISTEN_REGISTRATION_FAILURE = 1073741824; // 0x40000000
-    field public static final int LISTEN_SERVICE_STATE = 1; // 0x1
-    field @Deprecated public static final int LISTEN_SIGNAL_STRENGTH = 2; // 0x2
-    field public static final int LISTEN_SIGNAL_STRENGTHS = 256; // 0x100
-    field public static final int LISTEN_USER_MOBILE_DATA_STATE = 524288; // 0x80000
-  }
-
-  public final class PreciseDataConnectionState implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.telephony.data.ApnSetting getApnSetting();
-    method public int getLastCauseCode();
-    method @Nullable public android.net.LinkProperties getLinkProperties();
-    method public int getNetworkType();
-    method public int getState();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.PreciseDataConnectionState> CREATOR;
-  }
-
-  public final class RadioAccessSpecifier implements android.os.Parcelable {
-    ctor public RadioAccessSpecifier(int, int[], int[]);
-    method public int describeContents();
-    method public int[] getBands();
-    method public int[] getChannels();
-    method public int getRadioAccessNetwork();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.RadioAccessSpecifier> CREATOR;
-  }
-
-  public class ServiceState implements android.os.Parcelable {
-    ctor public ServiceState();
-    ctor public ServiceState(android.telephony.ServiceState);
-    ctor @Deprecated public ServiceState(android.os.Parcel);
-    method protected void copyFrom(android.telephony.ServiceState);
-    method public int describeContents();
-    method public int getCdmaNetworkId();
-    method public int getCdmaSystemId();
-    method public int[] getCellBandwidths();
-    method public int getChannelNumber();
-    method public int getDuplexMode();
-    method public boolean getIsManualSelection();
-    method @NonNull public java.util.List<android.telephony.NetworkRegistrationInfo> getNetworkRegistrationInfoList();
-    method public String getOperatorAlphaLong();
-    method public String getOperatorAlphaShort();
-    method public String getOperatorNumeric();
-    method public boolean getRoaming();
-    method public int getState();
-    method public boolean isSearching();
-    method public void setIsManualSelection(boolean);
-    method public void setOperatorName(String, String, String);
-    method public void setRoaming(boolean);
-    method public void setState(int);
-    method public void setStateOff();
-    method public void setStateOutOfService();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ServiceState> CREATOR;
-    field public static final int DUPLEX_MODE_FDD = 1; // 0x1
-    field public static final int DUPLEX_MODE_TDD = 2; // 0x2
-    field public static final int DUPLEX_MODE_UNKNOWN = 0; // 0x0
-    field public static final int STATE_EMERGENCY_ONLY = 2; // 0x2
-    field public static final int STATE_IN_SERVICE = 0; // 0x0
-    field public static final int STATE_OUT_OF_SERVICE = 1; // 0x1
-    field public static final int STATE_POWER_OFF = 3; // 0x3
-    field public static final int UNKNOWN_ID = -1; // 0xffffffff
-  }
-
-  public class SignalStrength implements android.os.Parcelable {
-    method public int describeContents();
-    method @Deprecated public int getCdmaDbm();
-    method @Deprecated public int getCdmaEcio();
-    method @NonNull public java.util.List<android.telephony.CellSignalStrength> getCellSignalStrengths();
-    method @NonNull public <T extends android.telephony.CellSignalStrength> java.util.List<T> getCellSignalStrengths(@NonNull Class<T>);
-    method @Deprecated public int getEvdoDbm();
-    method @Deprecated public int getEvdoEcio();
-    method @Deprecated public int getEvdoSnr();
-    method @Deprecated public int getGsmBitErrorRate();
-    method @Deprecated public int getGsmSignalStrength();
-    method public int getLevel();
-    method public long getTimestampMillis();
-    method @Deprecated public boolean isGsm();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SignalStrength> CREATOR;
-    field public static final int INVALID = 2147483647; // 0x7fffffff
-  }
-
-  public final class SmsManager {
-    method public String createAppSpecificSmsToken(android.app.PendingIntent);
-    method @Nullable public String createAppSpecificSmsTokenWithPackageInfo(@Nullable String, @NonNull android.app.PendingIntent);
-    method public java.util.ArrayList<java.lang.String> divideMessage(String);
-    method public void downloadMultimediaMessage(android.content.Context, String, android.net.Uri, android.os.Bundle, android.app.PendingIntent);
-    method @NonNull public android.os.Bundle getCarrierConfigValues();
-    method public static android.telephony.SmsManager getDefault();
-    method public static int getDefaultSmsSubscriptionId();
-    method public static android.telephony.SmsManager getSmsManagerForSubscriptionId(int);
-    method @RequiresPermission(android.Manifest.permission.SMS_FINANCIAL_TRANSACTIONS) public void getSmsMessagesForFinancialApp(android.os.Bundle, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.SmsManager.FinancialSmsCallback);
-    method @Nullable @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getSmscAddress();
-    method public int getSubscriptionId();
-    method public void injectSmsPdu(byte[], String, android.app.PendingIntent);
-    method public void sendDataMessage(String, String, short, byte[], android.app.PendingIntent, android.app.PendingIntent);
-    method public void sendMultimediaMessage(android.content.Context, android.net.Uri, String, android.os.Bundle, android.app.PendingIntent);
-    method public void sendMultipartTextMessage(String, String, java.util.ArrayList<java.lang.String>, java.util.ArrayList<android.app.PendingIntent>, java.util.ArrayList<android.app.PendingIntent>);
-    method public void sendMultipartTextMessage(@NonNull String, @Nullable String, @NonNull java.util.List<java.lang.String>, @Nullable java.util.List<android.app.PendingIntent>, @Nullable java.util.List<android.app.PendingIntent>, long);
-    method public void sendMultipartTextMessage(@NonNull String, @Nullable String, @NonNull java.util.List<java.lang.String>, @Nullable java.util.List<android.app.PendingIntent>, @Nullable java.util.List<android.app.PendingIntent>, @NonNull String, @Nullable String);
-    method public void sendTextMessage(String, String, String, android.app.PendingIntent, android.app.PendingIntent);
-    method public void sendTextMessage(@NonNull String, @Nullable String, @NonNull String, @Nullable android.app.PendingIntent, @Nullable android.app.PendingIntent, long);
-    method @RequiresPermission(allOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.SEND_SMS}) public void sendTextMessageWithoutPersisting(String, String, String, android.app.PendingIntent, android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setSmscAddress(@NonNull String);
-    field public static final String EXTRA_MMS_DATA = "android.telephony.extra.MMS_DATA";
-    field public static final String EXTRA_MMS_HTTP_STATUS = "android.telephony.extra.MMS_HTTP_STATUS";
-    field public static final String MMS_CONFIG_ALIAS_ENABLED = "aliasEnabled";
-    field public static final String MMS_CONFIG_ALIAS_MAX_CHARS = "aliasMaxChars";
-    field public static final String MMS_CONFIG_ALIAS_MIN_CHARS = "aliasMinChars";
-    field public static final String MMS_CONFIG_ALLOW_ATTACH_AUDIO = "allowAttachAudio";
-    field public static final String MMS_CONFIG_APPEND_TRANSACTION_ID = "enabledTransID";
-    field public static final String MMS_CONFIG_EMAIL_GATEWAY_NUMBER = "emailGatewayNumber";
-    field public static final String MMS_CONFIG_GROUP_MMS_ENABLED = "enableGroupMms";
-    field public static final String MMS_CONFIG_HTTP_PARAMS = "httpParams";
-    field public static final String MMS_CONFIG_HTTP_SOCKET_TIMEOUT = "httpSocketTimeout";
-    field public static final String MMS_CONFIG_MAX_IMAGE_HEIGHT = "maxImageHeight";
-    field public static final String MMS_CONFIG_MAX_IMAGE_WIDTH = "maxImageWidth";
-    field public static final String MMS_CONFIG_MAX_MESSAGE_SIZE = "maxMessageSize";
-    field public static final String MMS_CONFIG_MESSAGE_TEXT_MAX_SIZE = "maxMessageTextSize";
-    field public static final String MMS_CONFIG_MMS_DELIVERY_REPORT_ENABLED = "enableMMSDeliveryReports";
-    field public static final String MMS_CONFIG_MMS_ENABLED = "enabledMMS";
-    field public static final String MMS_CONFIG_MMS_READ_REPORT_ENABLED = "enableMMSReadReports";
-    field public static final String MMS_CONFIG_MULTIPART_SMS_ENABLED = "enableMultipartSMS";
-    field public static final String MMS_CONFIG_NAI_SUFFIX = "naiSuffix";
-    field public static final String MMS_CONFIG_NOTIFY_WAP_MMSC_ENABLED = "enabledNotifyWapMMSC";
-    field public static final String MMS_CONFIG_RECIPIENT_LIMIT = "recipientLimit";
-    field public static final String MMS_CONFIG_SEND_MULTIPART_SMS_AS_SEPARATE_MESSAGES = "sendMultipartSmsAsSeparateMessages";
-    field public static final String MMS_CONFIG_SHOW_CELL_BROADCAST_APP_LINKS = "config_cellBroadcastAppLinks";
-    field public static final String MMS_CONFIG_SMS_DELIVERY_REPORT_ENABLED = "enableSMSDeliveryReports";
-    field public static final String MMS_CONFIG_SMS_TO_MMS_TEXT_LENGTH_THRESHOLD = "smsToMmsTextLengthThreshold";
-    field public static final String MMS_CONFIG_SMS_TO_MMS_TEXT_THRESHOLD = "smsToMmsTextThreshold";
-    field public static final String MMS_CONFIG_SUBJECT_MAX_LENGTH = "maxSubjectLength";
-    field public static final String MMS_CONFIG_SUPPORT_HTTP_CHARSET_HEADER = "supportHttpCharsetHeader";
-    field public static final String MMS_CONFIG_SUPPORT_MMS_CONTENT_DISPOSITION = "supportMmsContentDisposition";
-    field public static final String MMS_CONFIG_UA_PROF_TAG_NAME = "uaProfTagName";
-    field public static final String MMS_CONFIG_UA_PROF_URL = "uaProfUrl";
-    field public static final String MMS_CONFIG_USER_AGENT = "userAgent";
-    field public static final int MMS_ERROR_CONFIGURATION_ERROR = 7; // 0x7
-    field public static final int MMS_ERROR_HTTP_FAILURE = 4; // 0x4
-    field public static final int MMS_ERROR_INVALID_APN = 2; // 0x2
-    field public static final int MMS_ERROR_IO_ERROR = 5; // 0x5
-    field public static final int MMS_ERROR_NO_DATA_NETWORK = 8; // 0x8
-    field public static final int MMS_ERROR_RETRY = 6; // 0x6
-    field public static final int MMS_ERROR_UNABLE_CONNECT_MMS = 3; // 0x3
-    field public static final int MMS_ERROR_UNSPECIFIED = 1; // 0x1
-    field public static final int RESULT_BLUETOOTH_DISCONNECTED = 27; // 0x1b
-    field public static final int RESULT_CANCELLED = 23; // 0x17
-    field public static final int RESULT_ENCODING_ERROR = 18; // 0x12
-    field public static final int RESULT_ERROR_FDN_CHECK_FAILURE = 6; // 0x6
-    field public static final int RESULT_ERROR_GENERIC_FAILURE = 1; // 0x1
-    field public static final int RESULT_ERROR_LIMIT_EXCEEDED = 5; // 0x5
-    field public static final int RESULT_ERROR_NONE = 0; // 0x0
-    field public static final int RESULT_ERROR_NO_SERVICE = 4; // 0x4
-    field public static final int RESULT_ERROR_NULL_PDU = 3; // 0x3
-    field public static final int RESULT_ERROR_RADIO_OFF = 2; // 0x2
-    field public static final int RESULT_ERROR_SHORT_CODE_NEVER_ALLOWED = 8; // 0x8
-    field public static final int RESULT_ERROR_SHORT_CODE_NOT_ALLOWED = 7; // 0x7
-    field public static final int RESULT_INTERNAL_ERROR = 21; // 0x15
-    field public static final int RESULT_INVALID_ARGUMENTS = 11; // 0xb
-    field public static final int RESULT_INVALID_BLUETOOTH_ADDRESS = 26; // 0x1a
-    field public static final int RESULT_INVALID_SMSC_ADDRESS = 19; // 0x13
-    field public static final int RESULT_INVALID_SMS_FORMAT = 14; // 0xe
-    field public static final int RESULT_INVALID_STATE = 12; // 0xc
-    field public static final int RESULT_MODEM_ERROR = 16; // 0x10
-    field public static final int RESULT_NETWORK_ERROR = 17; // 0x11
-    field public static final int RESULT_NETWORK_REJECT = 10; // 0xa
-    field public static final int RESULT_NO_BLUETOOTH_SERVICE = 25; // 0x19
-    field public static final int RESULT_NO_DEFAULT_SMS_APP = 32; // 0x20
-    field public static final int RESULT_NO_MEMORY = 13; // 0xd
-    field public static final int RESULT_NO_RESOURCES = 22; // 0x16
-    field public static final int RESULT_OPERATION_NOT_ALLOWED = 20; // 0x14
-    field public static final int RESULT_RADIO_NOT_AVAILABLE = 9; // 0x9
-    field public static final int RESULT_RECEIVE_DISPATCH_FAILURE = 500; // 0x1f4
-    field public static final int RESULT_RECEIVE_INJECTED_NULL_PDU = 501; // 0x1f5
-    field public static final int RESULT_RECEIVE_NULL_MESSAGE_FROM_RIL = 503; // 0x1f7
-    field public static final int RESULT_RECEIVE_RUNTIME_EXCEPTION = 502; // 0x1f6
-    field public static final int RESULT_RECEIVE_SQL_EXCEPTION = 505; // 0x1f9
-    field public static final int RESULT_RECEIVE_URI_EXCEPTION = 506; // 0x1fa
-    field public static final int RESULT_RECEIVE_WHILE_ENCRYPTED = 504; // 0x1f8
-    field public static final int RESULT_REMOTE_EXCEPTION = 31; // 0x1f
-    field public static final int RESULT_REQUEST_NOT_SUPPORTED = 24; // 0x18
-    field public static final int RESULT_RIL_CANCELLED = 119; // 0x77
-    field public static final int RESULT_RIL_ENCODING_ERR = 109; // 0x6d
-    field public static final int RESULT_RIL_INTERNAL_ERR = 113; // 0x71
-    field public static final int RESULT_RIL_INVALID_ARGUMENTS = 104; // 0x68
-    field public static final int RESULT_RIL_INVALID_MODEM_STATE = 115; // 0x73
-    field public static final int RESULT_RIL_INVALID_SMSC_ADDRESS = 110; // 0x6e
-    field public static final int RESULT_RIL_INVALID_SMS_FORMAT = 107; // 0x6b
-    field public static final int RESULT_RIL_INVALID_STATE = 103; // 0x67
-    field public static final int RESULT_RIL_MODEM_ERR = 111; // 0x6f
-    field public static final int RESULT_RIL_NETWORK_ERR = 112; // 0x70
-    field public static final int RESULT_RIL_NETWORK_NOT_READY = 116; // 0x74
-    field public static final int RESULT_RIL_NETWORK_REJECT = 102; // 0x66
-    field public static final int RESULT_RIL_NO_MEMORY = 105; // 0x69
-    field public static final int RESULT_RIL_NO_RESOURCES = 118; // 0x76
-    field public static final int RESULT_RIL_OPERATION_NOT_ALLOWED = 117; // 0x75
-    field public static final int RESULT_RIL_RADIO_NOT_AVAILABLE = 100; // 0x64
-    field public static final int RESULT_RIL_REQUEST_NOT_SUPPORTED = 114; // 0x72
-    field public static final int RESULT_RIL_REQUEST_RATE_LIMITED = 106; // 0x6a
-    field public static final int RESULT_RIL_SIM_ABSENT = 120; // 0x78
-    field public static final int RESULT_RIL_SMS_SEND_FAIL_RETRY = 101; // 0x65
-    field public static final int RESULT_RIL_SYSTEM_ERR = 108; // 0x6c
-    field public static final int RESULT_SMS_BLOCKED_DURING_EMERGENCY = 29; // 0x1d
-    field public static final int RESULT_SMS_SEND_RETRY_FAILED = 30; // 0x1e
-    field public static final int RESULT_SYSTEM_ERROR = 15; // 0xf
-    field public static final int RESULT_UNEXPECTED_EVENT_STOP_SENDING = 28; // 0x1c
-    field public static final int STATUS_ON_ICC_FREE = 0; // 0x0
-    field public static final int STATUS_ON_ICC_READ = 1; // 0x1
-    field public static final int STATUS_ON_ICC_SENT = 5; // 0x5
-    field public static final int STATUS_ON_ICC_UNREAD = 3; // 0x3
-    field public static final int STATUS_ON_ICC_UNSENT = 7; // 0x7
-  }
-
-  public abstract static class SmsManager.FinancialSmsCallback {
-    ctor public SmsManager.FinancialSmsCallback();
-    method public abstract void onFinancialSmsMessages(android.database.CursorWindow);
-  }
-
-  public class SmsMessage {
-    method public static int[] calculateLength(CharSequence, boolean);
-    method public static int[] calculateLength(String, boolean);
-    method @Deprecated public static android.telephony.SmsMessage createFromPdu(byte[]);
-    method public static android.telephony.SmsMessage createFromPdu(byte[], String);
-    method @Nullable public static android.telephony.SmsMessage createSmsSubmitPdu(@NonNull byte[], boolean);
-    method public String getDisplayMessageBody();
-    method public String getDisplayOriginatingAddress();
-    method public String getEmailBody();
-    method public String getEmailFrom();
-    method public int getIndexOnIcc();
-    method @Deprecated public int getIndexOnSim();
-    method public String getMessageBody();
-    method public android.telephony.SmsMessage.MessageClass getMessageClass();
-    method @Nullable public String getOriginatingAddress();
-    method public byte[] getPdu();
-    method public int getProtocolIdentifier();
-    method public String getPseudoSubject();
-    method public String getServiceCenterAddress();
-    method public int getStatus();
-    method public int getStatusOnIcc();
-    method @Deprecated public int getStatusOnSim();
-    method public static android.telephony.SmsMessage.SubmitPdu getSubmitPdu(String, String, String, boolean);
-    method public static android.telephony.SmsMessage.SubmitPdu getSubmitPdu(String, String, short, byte[], boolean);
-    method public static int getTPLayerLengthForPDU(String);
-    method public long getTimestampMillis();
-    method public byte[] getUserData();
-    method public boolean isCphsMwiMessage();
-    method public boolean isEmail();
-    method public boolean isMWIClearMessage();
-    method public boolean isMWISetMessage();
-    method public boolean isMwiDontStore();
-    method public boolean isReplace();
-    method public boolean isReplyPathPresent();
-    method public boolean isStatusReportMessage();
-    field public static final int ENCODING_16BIT = 3; // 0x3
-    field public static final int ENCODING_7BIT = 1; // 0x1
-    field public static final int ENCODING_8BIT = 2; // 0x2
-    field public static final int ENCODING_UNKNOWN = 0; // 0x0
-    field public static final String FORMAT_3GPP = "3gpp";
-    field public static final String FORMAT_3GPP2 = "3gpp2";
-    field public static final int MAX_USER_DATA_BYTES = 140; // 0x8c
-    field public static final int MAX_USER_DATA_BYTES_WITH_HEADER = 134; // 0x86
-    field public static final int MAX_USER_DATA_SEPTETS = 160; // 0xa0
-    field public static final int MAX_USER_DATA_SEPTETS_WITH_HEADER = 153; // 0x99
-  }
-
-  public enum SmsMessage.MessageClass {
-    enum_constant public static final android.telephony.SmsMessage.MessageClass CLASS_0;
-    enum_constant public static final android.telephony.SmsMessage.MessageClass CLASS_1;
-    enum_constant public static final android.telephony.SmsMessage.MessageClass CLASS_2;
-    enum_constant public static final android.telephony.SmsMessage.MessageClass CLASS_3;
-    enum_constant public static final android.telephony.SmsMessage.MessageClass UNKNOWN;
-  }
-
-  public static class SmsMessage.SubmitPdu {
-    field public byte[] encodedMessage;
-    field public byte[] encodedScAddress;
-  }
-
-  public class SubscriptionInfo implements android.os.Parcelable {
-    method public android.graphics.Bitmap createIconBitmap(android.content.Context);
-    method public int describeContents();
-    method public int getCardId();
-    method public int getCarrierId();
-    method public CharSequence getCarrierName();
-    method public String getCountryIso();
-    method public int getDataRoaming();
-    method public CharSequence getDisplayName();
-    method @Nullable public android.os.ParcelUuid getGroupUuid();
-    method public String getIccId();
-    method public int getIconTint();
-    method @Deprecated public int getMcc();
-    method @Nullable public String getMccString();
-    method @Deprecated public int getMnc();
-    method @Nullable public String getMncString();
-    method public String getNumber();
-    method public int getSimSlotIndex();
-    method public int getSubscriptionId();
-    method public int getSubscriptionType();
-    method public boolean isEmbedded();
-    method public boolean isOpportunistic();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SubscriptionInfo> CREATOR;
-  }
-
-  public class SubscriptionManager {
-    method public void addOnOpportunisticSubscriptionsChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.SubscriptionManager.OnOpportunisticSubscriptionsChangedListener);
-    method @Deprecated public void addOnSubscriptionsChangedListener(android.telephony.SubscriptionManager.OnSubscriptionsChangedListener);
-    method public void addOnSubscriptionsChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.SubscriptionManager.OnSubscriptionsChangedListener);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void addSubscriptionsIntoGroup(@NonNull java.util.List<java.lang.Integer>, @NonNull android.os.ParcelUuid);
-    method public boolean canManageSubscription(android.telephony.SubscriptionInfo);
-    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.os.ParcelUuid createSubscriptionGroup(@NonNull java.util.List<java.lang.Integer>);
-    method @Deprecated public static android.telephony.SubscriptionManager from(android.content.Context);
-    method public java.util.List<android.telephony.SubscriptionInfo> getAccessibleSubscriptionInfoList();
-    method public static int getActiveDataSubscriptionId();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public android.telephony.SubscriptionInfo getActiveSubscriptionInfo(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getActiveSubscriptionInfoCount();
-    method public int getActiveSubscriptionInfoCountMax();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public android.telephony.SubscriptionInfo getActiveSubscriptionInfoForSimSlotIndex(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<android.telephony.SubscriptionInfo> getActiveSubscriptionInfoList();
-    method @NonNull public java.util.List<android.telephony.SubscriptionInfo> getCompleteActiveSubscriptionInfoList();
-    method public static int getDefaultDataSubscriptionId();
-    method public static int getDefaultSmsSubscriptionId();
-    method public static int getDefaultSubscriptionId();
-    method public static int getDefaultVoiceSubscriptionId();
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<android.telephony.SubscriptionInfo> getOpportunisticSubscriptions();
-    method public static int getSlotIndex(int);
-    method @Nullable public int[] getSubscriptionIds(int);
-    method @NonNull public java.util.List<android.telephony.SubscriptionPlan> getSubscriptionPlans(int);
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<android.telephony.SubscriptionInfo> getSubscriptionsInGroup(@NonNull android.os.ParcelUuid);
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isActiveSubscriptionId(int);
-    method public boolean isNetworkRoaming(int);
-    method public static boolean isUsableSubscriptionId(int);
-    method public static boolean isValidSubscriptionId(int);
-    method public void removeOnOpportunisticSubscriptionsChangedListener(@NonNull android.telephony.SubscriptionManager.OnOpportunisticSubscriptionsChangedListener);
-    method public void removeOnSubscriptionsChangedListener(android.telephony.SubscriptionManager.OnSubscriptionsChangedListener);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void removeSubscriptionsFromGroup(@NonNull java.util.List<java.lang.Integer>, @NonNull android.os.ParcelUuid);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setOpportunistic(boolean, int);
-    method public void setSubscriptionOverrideCongested(int, boolean, long);
-    method public void setSubscriptionOverrideUnmetered(int, boolean, long);
-    method public void setSubscriptionPlans(int, @NonNull java.util.List<android.telephony.SubscriptionPlan>);
-    method @RequiresPermission("android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS") public void switchToSubscription(int, @NonNull android.app.PendingIntent);
-    field public static final String ACTION_DEFAULT_SMS_SUBSCRIPTION_CHANGED = "android.telephony.action.DEFAULT_SMS_SUBSCRIPTION_CHANGED";
-    field public static final String ACTION_DEFAULT_SUBSCRIPTION_CHANGED = "android.telephony.action.DEFAULT_SUBSCRIPTION_CHANGED";
-    field public static final String ACTION_MANAGE_SUBSCRIPTION_PLANS = "android.telephony.action.MANAGE_SUBSCRIPTION_PLANS";
-    field public static final String ACTION_REFRESH_SUBSCRIPTION_PLANS = "android.telephony.action.REFRESH_SUBSCRIPTION_PLANS";
-    field public static final int DATA_ROAMING_DISABLE = 0; // 0x0
-    field public static final int DATA_ROAMING_ENABLE = 1; // 0x1
-    field public static final int DEFAULT_SUBSCRIPTION_ID = 2147483647; // 0x7fffffff
-    field public static final String EXTRA_SLOT_INDEX = "android.telephony.extra.SLOT_INDEX";
-    field public static final String EXTRA_SUBSCRIPTION_INDEX = "android.telephony.extra.SUBSCRIPTION_INDEX";
-    field public static final int INVALID_SIM_SLOT_INDEX = -1; // 0xffffffff
-    field public static final int INVALID_SUBSCRIPTION_ID = -1; // 0xffffffff
-    field public static final int SUBSCRIPTION_TYPE_LOCAL_SIM = 0; // 0x0
-    field public static final int SUBSCRIPTION_TYPE_REMOTE_SIM = 1; // 0x1
-  }
-
-  public static class SubscriptionManager.OnOpportunisticSubscriptionsChangedListener {
-    ctor public SubscriptionManager.OnOpportunisticSubscriptionsChangedListener();
-    method public void onOpportunisticSubscriptionsChanged();
-  }
-
-  public static class SubscriptionManager.OnSubscriptionsChangedListener {
-    ctor public SubscriptionManager.OnSubscriptionsChangedListener();
-    method public void onSubscriptionsChanged();
-  }
-
-  public final class SubscriptionPlan implements android.os.Parcelable {
-    method public java.util.Iterator<android.util.Range<java.time.ZonedDateTime>> cycleIterator();
-    method public int describeContents();
-    method public int getDataLimitBehavior();
-    method public long getDataLimitBytes();
-    method public long getDataUsageBytes();
-    method public long getDataUsageTime();
-    method @NonNull public int[] getNetworkTypes();
-    method @Nullable public CharSequence getSummary();
-    method @Nullable public CharSequence getTitle();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final long BYTES_UNKNOWN = -1L; // 0xffffffffffffffffL
-    field public static final long BYTES_UNLIMITED = 9223372036854775807L; // 0x7fffffffffffffffL
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SubscriptionPlan> CREATOR;
-    field public static final int LIMIT_BEHAVIOR_BILLED = 1; // 0x1
-    field public static final int LIMIT_BEHAVIOR_DISABLED = 0; // 0x0
-    field public static final int LIMIT_BEHAVIOR_THROTTLED = 2; // 0x2
-    field public static final int LIMIT_BEHAVIOR_UNKNOWN = -1; // 0xffffffff
-    field public static final long TIME_UNKNOWN = -1L; // 0xffffffffffffffffL
-  }
-
-  public static class SubscriptionPlan.Builder {
-    method public android.telephony.SubscriptionPlan build();
-    method public static android.telephony.SubscriptionPlan.Builder createNonrecurring(java.time.ZonedDateTime, java.time.ZonedDateTime);
-    method public static android.telephony.SubscriptionPlan.Builder createRecurring(java.time.ZonedDateTime, java.time.Period);
-    method @NonNull public android.telephony.SubscriptionPlan.Builder resetNetworkTypes();
-    method public android.telephony.SubscriptionPlan.Builder setDataLimit(long, int);
-    method public android.telephony.SubscriptionPlan.Builder setDataUsage(long, long);
-    method @NonNull public android.telephony.SubscriptionPlan.Builder setNetworkTypes(@NonNull int[]);
-    method public android.telephony.SubscriptionPlan.Builder setSummary(@Nullable CharSequence);
-    method public android.telephony.SubscriptionPlan.Builder setTitle(@Nullable CharSequence);
-  }
-
-  public final class TelephonyDisplayInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getNetworkType();
-    method public int getOverrideNetworkType();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.TelephonyDisplayInfo> CREATOR;
-    field public static final int OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO = 2; // 0x2
-    field public static final int OVERRIDE_NETWORK_TYPE_LTE_CA = 1; // 0x1
-    field public static final int OVERRIDE_NETWORK_TYPE_NONE = 0; // 0x0
-    field public static final int OVERRIDE_NETWORK_TYPE_NR_NSA = 3; // 0x3
-    field public static final int OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE = 4; // 0x4
-  }
-
-  public class TelephonyManager {
-    method public boolean canChangeDtmfToneLength();
-    method @Nullable public android.telephony.TelephonyManager createForPhoneAccountHandle(android.telecom.PhoneAccountHandle);
-    method public android.telephony.TelephonyManager createForSubscriptionId(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean doesSwitchMultiSimConfigTriggerReboot();
-    method public int getActiveModemCount();
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public java.util.List<android.telephony.CellInfo> getAllCellInfo();
-    method public int getCallState();
-    method public int getCardIdForDefaultEuicc();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) @WorkerThread public android.os.PersistableBundle getCarrierConfig();
-    method public int getCarrierIdFromSimMccMnc();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public android.telephony.CellLocation getCellLocation();
-    method public int getDataActivity();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getDataNetworkType();
-    method public int getDataState();
-    method @Deprecated @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getDeviceId();
-    method @Deprecated @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getDeviceId(int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getDeviceSoftwareVersion();
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.Map<java.lang.Integer,java.util.List<android.telephony.emergency.EmergencyNumber>> getEmergencyNumberList();
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.Map<java.lang.Integer,java.util.List<android.telephony.emergency.EmergencyNumber>> getEmergencyNumberList(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String[] getForbiddenPlmns();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getGroupIdLevel1();
-    method public String getIccAuthentication(int, int, String);
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getImei();
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getImei(int);
-    method @RequiresPermission(anyOf={android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.READ_SMS, android.Manifest.permission.READ_PHONE_NUMBERS}) public String getLine1Number();
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRECISE_PHONE_STATE) public String getManualNetworkSelectionPlmn();
-    method @Nullable public String getManufacturerCode();
-    method @Nullable public String getManufacturerCode(int);
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getMeid();
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getMeid(int);
-    method public String getMmsUAProfUrl();
-    method public String getMmsUserAgent();
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getNai();
-    method public String getNetworkCountryIso();
-    method @NonNull public String getNetworkCountryIso(int);
-    method public String getNetworkOperator();
-    method public String getNetworkOperatorName();
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public int getNetworkSelectionMode();
-    method public String getNetworkSpecifier();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getNetworkType();
-    method @Deprecated public int getPhoneCount();
-    method public int getPhoneType();
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PHONE_STATE}) public int getPreferredOpportunisticDataSubscription();
-    method @RequiresPermission(allOf={android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.ACCESS_COARSE_LOCATION}) public android.telephony.ServiceState getServiceState();
-    method @Nullable public android.telephony.SignalStrength getSignalStrength();
-    method public int getSimCarrierId();
-    method @Nullable public CharSequence getSimCarrierIdName();
-    method public String getSimCountryIso();
-    method public String getSimOperator();
-    method public String getSimOperatorName();
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getSimSerialNumber();
-    method public int getSimSpecificCarrierId();
-    method @Nullable public CharSequence getSimSpecificCarrierIdName();
-    method public int getSimState();
-    method public int getSimState(int);
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getSubscriberId();
-    method public int getSubscriptionId();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getSubscriptionId(@NonNull android.telecom.PhoneAccountHandle);
-    method public int getSupportedModemCount();
-    method @Nullable public String getTypeAllocationCode();
-    method @Nullable public String getTypeAllocationCode(int);
-    method @NonNull @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public java.util.List<android.telephony.UiccCardInfo> getUiccCardsInfo();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getVisualVoicemailPackageName();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getVoiceMailAlphaTag();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getVoiceMailNumber();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getVoiceNetworkType();
-    method public android.net.Uri getVoicemailRingtoneUri(android.telecom.PhoneAccountHandle);
-    method public boolean hasCarrierPrivileges();
-    method public boolean hasIccCard();
-    method @Deprecated public boolean iccCloseLogicalChannel(int);
-    method @Deprecated public byte[] iccExchangeSimIO(int, int, int, int, int, String);
-    method @Deprecated public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(String);
-    method @Deprecated public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(String, int);
-    method @Deprecated public String iccTransmitApduBasicChannel(int, int, int, int, int, String);
-    method @Deprecated public String iccTransmitApduLogicalChannel(int, int, int, int, int, int, String);
-    method public boolean isConcurrentVoiceAndDataSupported();
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.MODIFY_PHONE_STATE}) public boolean isDataEnabled();
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isDataRoamingEnabled();
-    method public boolean isEmergencyNumber(@NonNull String);
-    method public boolean isHearingAidCompatibilitySupported();
-    method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRECISE_PHONE_STATE, "android.permission.READ_PRIVILEGED_PHONE_STATE"}) public boolean isManualNetworkSelectionAllowed();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isModemEnabledForSlot(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int isMultiSimSupported();
-    method public boolean isNetworkRoaming();
-    method public boolean isRttSupported();
-    method public boolean isSmsCapable();
-    method @Deprecated public boolean isTtyModeSupported();
-    method public boolean isVoiceCapable();
-    method public boolean isVoicemailVibrationEnabled(android.telecom.PhoneAccountHandle);
-    method public boolean isWorldPhone();
-    method public void listen(android.telephony.PhoneStateListener, int);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public void requestCellInfoUpdate(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.TelephonyManager.CellInfoCallback);
-    method @RequiresPermission(allOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.ACCESS_FINE_LOCATION}) public android.telephony.NetworkScan requestNetworkScan(android.telephony.NetworkScanRequest, java.util.concurrent.Executor, android.telephony.TelephonyScanManager.NetworkScanCallback);
-    method public void sendDialerSpecialCode(String);
-    method @Deprecated public String sendEnvelopeWithStatus(String);
-    method @RequiresPermission(android.Manifest.permission.CALL_PHONE) public void sendUssdRequest(String, android.telephony.TelephonyManager.UssdResponseCallback, android.os.Handler);
-    method public void sendVisualVoicemailSms(String, int, String, android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int setForbiddenPlmns(@NonNull java.util.List<java.lang.String>);
-    method public boolean setLine1NumberForDisplay(String, String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setNetworkSelectionModeAutomatic();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setNetworkSelectionModeManual(String, boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setNetworkSelectionModeManual(@NonNull String, boolean, int);
-    method public boolean setOperatorBrandOverride(String);
-    method public boolean setPreferredNetworkTypeToGlobal();
-    method public void setPreferredOpportunisticDataSubscription(int, boolean, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<java.lang.Integer>);
-    method public void setVisualVoicemailSmsFilterSettings(android.telephony.VisualVoicemailSmsFilterSettings);
-    method public boolean setVoiceMailNumber(String, String);
-    method @Deprecated public void setVoicemailRingtoneUri(android.telecom.PhoneAccountHandle, android.net.Uri);
-    method @Deprecated public void setVoicemailVibrationEnabled(android.telecom.PhoneAccountHandle, boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void switchMultiSimConfig(int);
-    method public void updateAvailableNetworks(@NonNull java.util.List<android.telephony.AvailableNetworkInfo>, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<java.lang.Integer>);
-    field public static final String ACTION_CARRIER_MESSAGING_CLIENT_SERVICE = "android.telephony.action.CARRIER_MESSAGING_CLIENT_SERVICE";
-    field public static final String ACTION_CONFIGURE_VOICEMAIL = "android.telephony.action.CONFIGURE_VOICEMAIL";
-    field public static final String ACTION_MULTI_SIM_CONFIG_CHANGED = "android.telephony.action.MULTI_SIM_CONFIG_CHANGED";
-    field public static final String ACTION_NETWORK_COUNTRY_CHANGED = "android.telephony.action.NETWORK_COUNTRY_CHANGED";
-    field @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public static final String ACTION_PHONE_STATE_CHANGED = "android.intent.action.PHONE_STATE";
-    field public static final String ACTION_RESPOND_VIA_MESSAGE = "android.intent.action.RESPOND_VIA_MESSAGE";
-    field public static final String ACTION_SECRET_CODE = "android.telephony.action.SECRET_CODE";
-    field public static final String ACTION_SHOW_VOICEMAIL_NOTIFICATION = "android.telephony.action.SHOW_VOICEMAIL_NOTIFICATION";
-    field public static final String ACTION_SUBSCRIPTION_CARRIER_IDENTITY_CHANGED = "android.telephony.action.SUBSCRIPTION_CARRIER_IDENTITY_CHANGED";
-    field public static final String ACTION_SUBSCRIPTION_SPECIFIC_CARRIER_IDENTITY_CHANGED = "android.telephony.action.SUBSCRIPTION_SPECIFIC_CARRIER_IDENTITY_CHANGED";
-    field public static final int APPTYPE_CSIM = 4; // 0x4
-    field public static final int APPTYPE_ISIM = 5; // 0x5
-    field public static final int APPTYPE_RUIM = 3; // 0x3
-    field public static final int APPTYPE_SIM = 1; // 0x1
-    field public static final int APPTYPE_USIM = 2; // 0x2
-    field public static final int AUTHTYPE_EAP_AKA = 129; // 0x81
-    field public static final int AUTHTYPE_EAP_SIM = 128; // 0x80
-    field public static final int CALL_STATE_IDLE = 0; // 0x0
-    field public static final int CALL_STATE_OFFHOOK = 2; // 0x2
-    field public static final int CALL_STATE_RINGING = 1; // 0x1
-    field public static final int CDMA_ROAMING_MODE_AFFILIATED = 1; // 0x1
-    field public static final int CDMA_ROAMING_MODE_ANY = 2; // 0x2
-    field public static final int CDMA_ROAMING_MODE_HOME = 0; // 0x0
-    field public static final int CDMA_ROAMING_MODE_RADIO_DEFAULT = -1; // 0xffffffff
-    field public static final int DATA_ACTIVITY_DORMANT = 4; // 0x4
-    field public static final int DATA_ACTIVITY_IN = 1; // 0x1
-    field public static final int DATA_ACTIVITY_INOUT = 3; // 0x3
-    field public static final int DATA_ACTIVITY_NONE = 0; // 0x0
-    field public static final int DATA_ACTIVITY_OUT = 2; // 0x2
-    field public static final int DATA_CONNECTED = 2; // 0x2
-    field public static final int DATA_CONNECTING = 1; // 0x1
-    field public static final int DATA_DISCONNECTED = 0; // 0x0
-    field public static final int DATA_DISCONNECTING = 4; // 0x4
-    field public static final int DATA_SUSPENDED = 3; // 0x3
-    field public static final int DATA_UNKNOWN = -1; // 0xffffffff
-    field public static final String EXTRA_ACTIVE_SIM_SUPPORTED_COUNT = "android.telephony.extra.ACTIVE_SIM_SUPPORTED_COUNT";
-    field public static final String EXTRA_CALL_VOICEMAIL_INTENT = "android.telephony.extra.CALL_VOICEMAIL_INTENT";
-    field public static final String EXTRA_CARRIER_ID = "android.telephony.extra.CARRIER_ID";
-    field public static final String EXTRA_CARRIER_NAME = "android.telephony.extra.CARRIER_NAME";
-    field public static final String EXTRA_HIDE_PUBLIC_SETTINGS = "android.telephony.extra.HIDE_PUBLIC_SETTINGS";
-    field @Deprecated public static final String EXTRA_INCOMING_NUMBER = "incoming_number";
-    field public static final String EXTRA_IS_REFRESH = "android.telephony.extra.IS_REFRESH";
-    field public static final String EXTRA_LAUNCH_VOICEMAIL_SETTINGS_INTENT = "android.telephony.extra.LAUNCH_VOICEMAIL_SETTINGS_INTENT";
-    field public static final String EXTRA_NETWORK_COUNTRY = "android.telephony.extra.NETWORK_COUNTRY";
-    field public static final String EXTRA_NOTIFICATION_COUNT = "android.telephony.extra.NOTIFICATION_COUNT";
-    field public static final String EXTRA_PHONE_ACCOUNT_HANDLE = "android.telephony.extra.PHONE_ACCOUNT_HANDLE";
-    field public static final String EXTRA_SPECIFIC_CARRIER_ID = "android.telephony.extra.SPECIFIC_CARRIER_ID";
-    field public static final String EXTRA_SPECIFIC_CARRIER_NAME = "android.telephony.extra.SPECIFIC_CARRIER_NAME";
-    field public static final String EXTRA_STATE = "state";
-    field public static final String EXTRA_STATE_IDLE;
-    field public static final String EXTRA_STATE_OFFHOOK;
-    field public static final String EXTRA_STATE_RINGING;
-    field public static final String EXTRA_SUBSCRIPTION_ID = "android.telephony.extra.SUBSCRIPTION_ID";
-    field public static final String EXTRA_VOICEMAIL_NUMBER = "android.telephony.extra.VOICEMAIL_NUMBER";
-    field public static final String METADATA_HIDE_VOICEMAIL_SETTINGS_MENU = "android.telephony.HIDE_VOICEMAIL_SETTINGS_MENU";
-    field public static final int MULTISIM_ALLOWED = 0; // 0x0
-    field public static final int MULTISIM_NOT_SUPPORTED_BY_CARRIER = 2; // 0x2
-    field public static final int MULTISIM_NOT_SUPPORTED_BY_HARDWARE = 1; // 0x1
-    field public static final int NETWORK_SELECTION_MODE_AUTO = 1; // 0x1
-    field public static final int NETWORK_SELECTION_MODE_MANUAL = 2; // 0x2
-    field public static final int NETWORK_SELECTION_MODE_UNKNOWN = 0; // 0x0
-    field public static final int NETWORK_TYPE_1xRTT = 7; // 0x7
-    field public static final int NETWORK_TYPE_CDMA = 4; // 0x4
-    field public static final int NETWORK_TYPE_EDGE = 2; // 0x2
-    field public static final int NETWORK_TYPE_EHRPD = 14; // 0xe
-    field public static final int NETWORK_TYPE_EVDO_0 = 5; // 0x5
-    field public static final int NETWORK_TYPE_EVDO_A = 6; // 0x6
-    field public static final int NETWORK_TYPE_EVDO_B = 12; // 0xc
-    field public static final int NETWORK_TYPE_GPRS = 1; // 0x1
-    field public static final int NETWORK_TYPE_GSM = 16; // 0x10
-    field public static final int NETWORK_TYPE_HSDPA = 8; // 0x8
-    field public static final int NETWORK_TYPE_HSPA = 10; // 0xa
-    field public static final int NETWORK_TYPE_HSPAP = 15; // 0xf
-    field public static final int NETWORK_TYPE_HSUPA = 9; // 0x9
-    field public static final int NETWORK_TYPE_IDEN = 11; // 0xb
-    field public static final int NETWORK_TYPE_IWLAN = 18; // 0x12
-    field public static final int NETWORK_TYPE_LTE = 13; // 0xd
-    field public static final int NETWORK_TYPE_NR = 20; // 0x14
-    field public static final int NETWORK_TYPE_TD_SCDMA = 17; // 0x11
-    field public static final int NETWORK_TYPE_UMTS = 3; // 0x3
-    field public static final int NETWORK_TYPE_UNKNOWN = 0; // 0x0
-    field public static final int PHONE_TYPE_CDMA = 2; // 0x2
-    field public static final int PHONE_TYPE_GSM = 1; // 0x1
-    field public static final int PHONE_TYPE_NONE = 0; // 0x0
-    field public static final int PHONE_TYPE_SIP = 3; // 0x3
-    field public static final int SET_OPPORTUNISTIC_SUB_INACTIVE_SUBSCRIPTION = 2; // 0x2
-    field public static final int SET_OPPORTUNISTIC_SUB_NO_OPPORTUNISTIC_SUB_AVAILABLE = 3; // 0x3
-    field public static final int SET_OPPORTUNISTIC_SUB_REMOTE_SERVICE_EXCEPTION = 4; // 0x4
-    field public static final int SET_OPPORTUNISTIC_SUB_SUCCESS = 0; // 0x0
-    field public static final int SET_OPPORTUNISTIC_SUB_VALIDATION_FAILED = 1; // 0x1
-    field public static final int SIM_STATE_ABSENT = 1; // 0x1
-    field public static final int SIM_STATE_CARD_IO_ERROR = 8; // 0x8
-    field public static final int SIM_STATE_CARD_RESTRICTED = 9; // 0x9
-    field public static final int SIM_STATE_NETWORK_LOCKED = 4; // 0x4
-    field public static final int SIM_STATE_NOT_READY = 6; // 0x6
-    field public static final int SIM_STATE_PERM_DISABLED = 7; // 0x7
-    field public static final int SIM_STATE_PIN_REQUIRED = 2; // 0x2
-    field public static final int SIM_STATE_PUK_REQUIRED = 3; // 0x3
-    field public static final int SIM_STATE_READY = 5; // 0x5
-    field public static final int SIM_STATE_UNKNOWN = 0; // 0x0
-    field public static final int UNINITIALIZED_CARD_ID = -2; // 0xfffffffe
-    field public static final int UNKNOWN_CARRIER_ID = -1; // 0xffffffff
-    field public static final int UNSUPPORTED_CARD_ID = -1; // 0xffffffff
-    field public static final int UPDATE_AVAILABLE_NETWORKS_ABORTED = 2; // 0x2
-    field public static final int UPDATE_AVAILABLE_NETWORKS_DISABLE_MODEM_FAIL = 5; // 0x5
-    field public static final int UPDATE_AVAILABLE_NETWORKS_ENABLE_MODEM_FAIL = 6; // 0x6
-    field public static final int UPDATE_AVAILABLE_NETWORKS_INVALID_ARGUMENTS = 3; // 0x3
-    field public static final int UPDATE_AVAILABLE_NETWORKS_MULTIPLE_NETWORKS_NOT_SUPPORTED = 7; // 0x7
-    field public static final int UPDATE_AVAILABLE_NETWORKS_NO_CARRIER_PRIVILEGE = 4; // 0x4
-    field public static final int UPDATE_AVAILABLE_NETWORKS_NO_OPPORTUNISTIC_SUB_AVAILABLE = 8; // 0x8
-    field public static final int UPDATE_AVAILABLE_NETWORKS_REMOTE_SERVICE_EXCEPTION = 9; // 0x9
-    field public static final int UPDATE_AVAILABLE_NETWORKS_SERVICE_IS_DISABLED = 10; // 0xa
-    field public static final int UPDATE_AVAILABLE_NETWORKS_SUCCESS = 0; // 0x0
-    field public static final int UPDATE_AVAILABLE_NETWORKS_UNKNOWN_FAILURE = 1; // 0x1
-    field public static final int USSD_ERROR_SERVICE_UNAVAIL = -2; // 0xfffffffe
-    field public static final int USSD_RETURN_FAILURE = -1; // 0xffffffff
-    field public static final String VVM_TYPE_CVVM = "vvm_type_cvvm";
-    field public static final String VVM_TYPE_OMTP = "vvm_type_omtp";
-  }
-
-  public abstract static class TelephonyManager.CellInfoCallback {
-    ctor public TelephonyManager.CellInfoCallback();
-    method public abstract void onCellInfo(@NonNull java.util.List<android.telephony.CellInfo>);
-    method public void onError(int, @Nullable Throwable);
-    field public static final int ERROR_MODEM_ERROR = 2; // 0x2
-    field public static final int ERROR_TIMEOUT = 1; // 0x1
-  }
-
-  public abstract static class TelephonyManager.UssdResponseCallback {
-    ctor public TelephonyManager.UssdResponseCallback();
-    method public void onReceiveUssdResponse(android.telephony.TelephonyManager, String, CharSequence);
-    method public void onReceiveUssdResponseFailed(android.telephony.TelephonyManager, String, int);
-  }
-
-  public final class TelephonyScanManager {
-    ctor public TelephonyScanManager();
-  }
-
-  public abstract static class TelephonyScanManager.NetworkScanCallback {
-    ctor public TelephonyScanManager.NetworkScanCallback();
-    method public void onComplete();
-    method public void onError(int);
-    method public void onResults(java.util.List<android.telephony.CellInfo>);
-  }
-
-  public final class UiccCardInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getCardId();
-    method @Nullable public String getEid();
-    method @Nullable public String getIccId();
-    method public int getSlotIndex();
-    method public boolean isEuicc();
-    method public boolean isRemovable();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.UiccCardInfo> CREATOR;
-  }
-
-  public abstract class VisualVoicemailService extends android.app.Service {
-    ctor public VisualVoicemailService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method @MainThread public abstract void onCellServiceConnected(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telecom.PhoneAccountHandle);
-    method @MainThread public abstract void onSimRemoved(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telecom.PhoneAccountHandle);
-    method @MainThread public abstract void onSmsReceived(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telephony.VisualVoicemailSms);
-    method @MainThread public abstract void onStopped(android.telephony.VisualVoicemailService.VisualVoicemailTask);
-    field public static final String SERVICE_INTERFACE = "android.telephony.VisualVoicemailService";
-  }
-
-  public static class VisualVoicemailService.VisualVoicemailTask {
-    method public final void finish();
-  }
-
-  public final class VisualVoicemailSms implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.os.Bundle getFields();
-    method public String getMessageBody();
-    method public android.telecom.PhoneAccountHandle getPhoneAccountHandle();
-    method public String getPrefix();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.VisualVoicemailSms> CREATOR;
-  }
-
-  public final class VisualVoicemailSmsFilterSettings implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.VisualVoicemailSmsFilterSettings> CREATOR;
-    field public static final int DESTINATION_PORT_ANY = -1; // 0xffffffff
-    field public static final int DESTINATION_PORT_DATA_SMS = -2; // 0xfffffffe
-    field public final String clientPrefix;
-    field public final int destinationPort;
-    field public final java.util.List<java.lang.String> originatingNumbers;
-  }
-
-  public static class VisualVoicemailSmsFilterSettings.Builder {
-    ctor public VisualVoicemailSmsFilterSettings.Builder();
-    method public android.telephony.VisualVoicemailSmsFilterSettings build();
-    method public android.telephony.VisualVoicemailSmsFilterSettings.Builder setClientPrefix(String);
-    method public android.telephony.VisualVoicemailSmsFilterSettings.Builder setDestinationPort(int);
-    method public android.telephony.VisualVoicemailSmsFilterSettings.Builder setOriginatingNumbers(java.util.List<java.lang.String>);
-  }
-
-}
-
-package android.telephony.cdma {
-
-  public class CdmaCellLocation extends android.telephony.CellLocation {
-    ctor public CdmaCellLocation();
-    ctor public CdmaCellLocation(android.os.Bundle);
-    method public static double convertQuartSecToDecDegrees(int);
-    method public void fillInNotifierBundle(android.os.Bundle);
-    method public int getBaseStationId();
-    method public int getBaseStationLatitude();
-    method public int getBaseStationLongitude();
-    method public int getNetworkId();
-    method public int getSystemId();
-    method public void setCellLocationData(int, int, int);
-    method public void setCellLocationData(int, int, int, int, int);
-    method public void setStateInvalid();
-  }
-
-}
-
-package android.telephony.data {
-
-  public class ApnSetting implements android.os.Parcelable {
-    method public int describeContents();
-    method public String getApnName();
-    method public int getApnTypeBitmask();
-    method public int getAuthType();
-    method public int getCarrierId();
-    method public String getEntryName();
-    method public int getId();
-    method @Deprecated public java.net.InetAddress getMmsProxyAddress();
-    method public String getMmsProxyAddressAsString();
-    method public int getMmsProxyPort();
-    method public android.net.Uri getMmsc();
-    method public int getMvnoType();
-    method public int getNetworkTypeBitmask();
-    method public String getOperatorNumeric();
-    method public String getPassword();
-    method public int getProtocol();
-    method @Deprecated public java.net.InetAddress getProxyAddress();
-    method public String getProxyAddressAsString();
-    method public int getProxyPort();
-    method public int getRoamingProtocol();
-    method public String getUser();
-    method public boolean isEnabled();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final int AUTH_TYPE_CHAP = 2; // 0x2
-    field public static final int AUTH_TYPE_NONE = 0; // 0x0
-    field public static final int AUTH_TYPE_PAP = 1; // 0x1
-    field public static final int AUTH_TYPE_PAP_OR_CHAP = 3; // 0x3
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.ApnSetting> CREATOR;
-    field public static final int MVNO_TYPE_GID = 2; // 0x2
-    field public static final int MVNO_TYPE_ICCID = 3; // 0x3
-    field public static final int MVNO_TYPE_IMSI = 1; // 0x1
-    field public static final int MVNO_TYPE_SPN = 0; // 0x0
-    field public static final int PROTOCOL_IP = 0; // 0x0
-    field public static final int PROTOCOL_IPV4V6 = 2; // 0x2
-    field public static final int PROTOCOL_IPV6 = 1; // 0x1
-    field public static final int PROTOCOL_NON_IP = 4; // 0x4
-    field public static final int PROTOCOL_PPP = 3; // 0x3
-    field public static final int PROTOCOL_UNSTRUCTURED = 5; // 0x5
-    field public static final int TYPE_CBS = 128; // 0x80
-    field public static final int TYPE_DEFAULT = 17; // 0x11
-    field public static final int TYPE_DUN = 8; // 0x8
-    field public static final int TYPE_EMERGENCY = 512; // 0x200
-    field public static final int TYPE_FOTA = 32; // 0x20
-    field public static final int TYPE_HIPRI = 16; // 0x10
-    field public static final int TYPE_IA = 256; // 0x100
-    field public static final int TYPE_IMS = 64; // 0x40
-    field public static final int TYPE_MCX = 1024; // 0x400
-    field public static final int TYPE_MMS = 2; // 0x2
-    field public static final int TYPE_SUPL = 4; // 0x4
-    field public static final int TYPE_XCAP = 2048; // 0x800
-  }
-
-  public static class ApnSetting.Builder {
-    ctor public ApnSetting.Builder();
-    method public android.telephony.data.ApnSetting build();
-    method @NonNull public android.telephony.data.ApnSetting.Builder setApnName(@Nullable String);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setApnTypeBitmask(int);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setAuthType(int);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setCarrierEnabled(boolean);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setCarrierId(int);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setEntryName(@Nullable String);
-    method @Deprecated public android.telephony.data.ApnSetting.Builder setMmsProxyAddress(java.net.InetAddress);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setMmsProxyAddress(@Nullable String);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setMmsProxyPort(int);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setMmsc(@Nullable android.net.Uri);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setMvnoType(int);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setNetworkTypeBitmask(int);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setOperatorNumeric(@Nullable String);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setPassword(@Nullable String);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setProtocol(int);
-    method @Deprecated public android.telephony.data.ApnSetting.Builder setProxyAddress(java.net.InetAddress);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setProxyAddress(@Nullable String);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setProxyPort(int);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setRoamingProtocol(int);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setUser(@Nullable String);
-  }
-
-}
-
-package android.telephony.emergency {
-
-  public final class EmergencyNumber implements java.lang.Comparable<android.telephony.emergency.EmergencyNumber> android.os.Parcelable {
-    method public int compareTo(@NonNull android.telephony.emergency.EmergencyNumber);
-    method public int describeContents();
-    method @NonNull public String getCountryIso();
-    method public int getEmergencyCallRouting();
-    method @NonNull public java.util.List<java.lang.Integer> getEmergencyNumberSources();
-    method @NonNull public java.util.List<java.lang.Integer> getEmergencyServiceCategories();
-    method @NonNull public java.util.List<java.lang.String> getEmergencyUrns();
-    method @NonNull public String getMnc();
-    method @NonNull public String getNumber();
-    method public boolean isFromSources(int);
-    method public boolean isInEmergencyServiceCategories(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.emergency.EmergencyNumber> CREATOR;
-    field public static final int EMERGENCY_CALL_ROUTING_EMERGENCY = 1; // 0x1
-    field public static final int EMERGENCY_CALL_ROUTING_NORMAL = 2; // 0x2
-    field public static final int EMERGENCY_CALL_ROUTING_UNKNOWN = 0; // 0x0
-    field public static final int EMERGENCY_NUMBER_SOURCE_DATABASE = 16; // 0x10
-    field public static final int EMERGENCY_NUMBER_SOURCE_DEFAULT = 8; // 0x8
-    field public static final int EMERGENCY_NUMBER_SOURCE_MODEM_CONFIG = 4; // 0x4
-    field public static final int EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING = 1; // 0x1
-    field public static final int EMERGENCY_NUMBER_SOURCE_SIM = 2; // 0x2
-    field public static final int EMERGENCY_SERVICE_CATEGORY_AIEC = 64; // 0x40
-    field public static final int EMERGENCY_SERVICE_CATEGORY_AMBULANCE = 2; // 0x2
-    field public static final int EMERGENCY_SERVICE_CATEGORY_FIRE_BRIGADE = 4; // 0x4
-    field public static final int EMERGENCY_SERVICE_CATEGORY_MARINE_GUARD = 8; // 0x8
-    field public static final int EMERGENCY_SERVICE_CATEGORY_MIEC = 32; // 0x20
-    field public static final int EMERGENCY_SERVICE_CATEGORY_MOUNTAIN_RESCUE = 16; // 0x10
-    field public static final int EMERGENCY_SERVICE_CATEGORY_POLICE = 1; // 0x1
-    field public static final int EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED = 0; // 0x0
-  }
-
-}
-
-package android.telephony.euicc {
-
-  public final class DownloadableSubscription implements android.os.Parcelable {
-    method public int describeContents();
-    method public static android.telephony.euicc.DownloadableSubscription forActivationCode(String);
-    method @Nullable public String getConfirmationCode();
-    method @Nullable public String getEncodedActivationCode();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.euicc.DownloadableSubscription> CREATOR;
-  }
-
-  public final class EuiccInfo implements android.os.Parcelable {
-    ctor public EuiccInfo(@Nullable String);
-    method public int describeContents();
-    method @Nullable public String getOsVersion();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.euicc.EuiccInfo> CREATOR;
-  }
-
-  public class EuiccManager {
-    method @NonNull public android.telephony.euicc.EuiccManager createForCardId(int);
-    method @RequiresPermission("android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS") public void deleteSubscription(int, android.app.PendingIntent);
-    method @RequiresPermission("android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS") public void downloadSubscription(android.telephony.euicc.DownloadableSubscription, boolean, android.app.PendingIntent);
-    method @Nullable public String getEid();
-    method @Nullable public android.telephony.euicc.EuiccInfo getEuiccInfo();
-    method public boolean isEnabled();
-    method public void startResolutionActivity(android.app.Activity, int, android.content.Intent, android.app.PendingIntent) throws android.content.IntentSender.SendIntentException;
-    method @RequiresPermission("android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS") public void switchToSubscription(int, android.app.PendingIntent);
-    method @RequiresPermission("android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS") public void updateSubscriptionNickname(int, @Nullable String, @NonNull android.app.PendingIntent);
-    field public static final String ACTION_MANAGE_EMBEDDED_SUBSCRIPTIONS = "android.telephony.euicc.action.MANAGE_EMBEDDED_SUBSCRIPTIONS";
-    field public static final String ACTION_NOTIFY_CARRIER_SETUP_INCOMPLETE = "android.telephony.euicc.action.NOTIFY_CARRIER_SETUP_INCOMPLETE";
-    field public static final String ACTION_START_EUICC_ACTIVATION = "android.telephony.euicc.action.START_EUICC_ACTIVATION";
-    field public static final int EMBEDDED_SUBSCRIPTION_RESULT_ERROR = 2; // 0x2
-    field public static final int EMBEDDED_SUBSCRIPTION_RESULT_OK = 0; // 0x0
-    field public static final int EMBEDDED_SUBSCRIPTION_RESULT_RESOLVABLE_ERROR = 1; // 0x1
-    field public static final int ERROR_ADDRESS_MISSING = 10011; // 0x271b
-    field public static final int ERROR_CARRIER_LOCKED = 10000; // 0x2710
-    field public static final int ERROR_CERTIFICATE_ERROR = 10012; // 0x271c
-    field public static final int ERROR_CONNECTION_ERROR = 10014; // 0x271e
-    field public static final int ERROR_DISALLOWED_BY_PPR = 10010; // 0x271a
-    field public static final int ERROR_EUICC_INSUFFICIENT_MEMORY = 10004; // 0x2714
-    field public static final int ERROR_EUICC_MISSING = 10006; // 0x2716
-    field public static final int ERROR_INCOMPATIBLE_CARRIER = 10003; // 0x2713
-    field public static final int ERROR_INSTALL_PROFILE = 10009; // 0x2719
-    field public static final int ERROR_INVALID_ACTIVATION_CODE = 10001; // 0x2711
-    field public static final int ERROR_INVALID_CONFIRMATION_CODE = 10002; // 0x2712
-    field public static final int ERROR_INVALID_RESPONSE = 10015; // 0x271f
-    field public static final int ERROR_NO_PROFILES_AVAILABLE = 10013; // 0x271d
-    field public static final int ERROR_OPERATION_BUSY = 10016; // 0x2720
-    field public static final int ERROR_SIM_MISSING = 10008; // 0x2718
-    field public static final int ERROR_TIME_OUT = 10005; // 0x2715
-    field public static final int ERROR_UNSUPPORTED_VERSION = 10007; // 0x2717
-    field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_DETAILED_CODE";
-    field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_DOWNLOADABLE_SUBSCRIPTION = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_DOWNLOADABLE_SUBSCRIPTION";
-    field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_ERROR_CODE = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_ERROR_CODE";
-    field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_OPERATION_CODE";
-    field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE";
-    field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE";
-    field public static final String EXTRA_USE_QR_SCANNER = "android.telephony.euicc.extra.USE_QR_SCANNER";
-    field public static final String META_DATA_CARRIER_ICON = "android.telephony.euicc.carriericon";
-    field public static final int OPERATION_APDU = 8; // 0x8
-    field public static final int OPERATION_DOWNLOAD = 5; // 0x5
-    field public static final int OPERATION_EUICC_CARD = 3; // 0x3
-    field public static final int OPERATION_EUICC_GSMA = 7; // 0x7
-    field public static final int OPERATION_HTTP = 11; // 0xb
-    field public static final int OPERATION_METADATA = 6; // 0x6
-    field public static final int OPERATION_SIM_SLOT = 2; // 0x2
-    field public static final int OPERATION_SMDX = 9; // 0x9
-    field public static final int OPERATION_SMDX_SUBJECT_REASON_CODE = 10; // 0xa
-    field public static final int OPERATION_SWITCH = 4; // 0x4
-    field public static final int OPERATION_SYSTEM = 1; // 0x1
-  }
-
-}
-
-package android.telephony.gsm {
-
-  public class GsmCellLocation extends android.telephony.CellLocation {
-    ctor public GsmCellLocation();
-    ctor public GsmCellLocation(android.os.Bundle);
-    method public void fillInNotifierBundle(android.os.Bundle);
-    method public int getCid();
-    method public int getLac();
-    method public int getPsc();
-    method public void setLacAndCid(int, int);
-    method public void setStateInvalid();
-  }
-
-  @Deprecated public final class SmsManager {
-    method @Deprecated public java.util.ArrayList<java.lang.String> divideMessage(String);
-    method @Deprecated public static android.telephony.gsm.SmsManager getDefault();
-    method @Deprecated public void sendDataMessage(String, String, short, byte[], android.app.PendingIntent, android.app.PendingIntent);
-    method @Deprecated public void sendMultipartTextMessage(String, String, java.util.ArrayList<java.lang.String>, java.util.ArrayList<android.app.PendingIntent>, java.util.ArrayList<android.app.PendingIntent>);
-    method @Deprecated public void sendTextMessage(String, String, String, android.app.PendingIntent, android.app.PendingIntent);
-    field @Deprecated public static final int RESULT_ERROR_GENERIC_FAILURE = 1; // 0x1
-    field @Deprecated public static final int RESULT_ERROR_NO_SERVICE = 4; // 0x4
-    field @Deprecated public static final int RESULT_ERROR_NULL_PDU = 3; // 0x3
-    field @Deprecated public static final int RESULT_ERROR_RADIO_OFF = 2; // 0x2
-    field @Deprecated public static final int STATUS_ON_SIM_FREE = 0; // 0x0
-    field @Deprecated public static final int STATUS_ON_SIM_READ = 1; // 0x1
-    field @Deprecated public static final int STATUS_ON_SIM_SENT = 5; // 0x5
-    field @Deprecated public static final int STATUS_ON_SIM_UNREAD = 3; // 0x3
-    field @Deprecated public static final int STATUS_ON_SIM_UNSENT = 7; // 0x7
-  }
-
-  @Deprecated public class SmsMessage {
-    ctor @Deprecated public SmsMessage();
-    method @Deprecated public static int[] calculateLength(CharSequence, boolean);
-    method @Deprecated public static int[] calculateLength(String, boolean);
-    method @Deprecated public static android.telephony.gsm.SmsMessage createFromPdu(byte[]);
-    method @Deprecated public String getDisplayMessageBody();
-    method @Deprecated public String getDisplayOriginatingAddress();
-    method @Deprecated public String getEmailBody();
-    method @Deprecated public String getEmailFrom();
-    method @Deprecated public int getIndexOnSim();
-    method @Deprecated public String getMessageBody();
-    method @Deprecated public android.telephony.gsm.SmsMessage.MessageClass getMessageClass();
-    method @Deprecated public String getOriginatingAddress();
-    method @Deprecated public byte[] getPdu();
-    method @Deprecated public int getProtocolIdentifier();
-    method @Deprecated public String getPseudoSubject();
-    method @Deprecated public String getServiceCenterAddress();
-    method @Deprecated public int getStatus();
-    method @Deprecated public int getStatusOnSim();
-    method @Deprecated public static android.telephony.gsm.SmsMessage.SubmitPdu getSubmitPdu(String, String, String, boolean);
-    method @Deprecated public static android.telephony.gsm.SmsMessage.SubmitPdu getSubmitPdu(String, String, short, byte[], boolean);
-    method @Deprecated public static int getTPLayerLengthForPDU(String);
-    method @Deprecated public long getTimestampMillis();
-    method @Deprecated public byte[] getUserData();
-    method @Deprecated public boolean isCphsMwiMessage();
-    method @Deprecated public boolean isEmail();
-    method @Deprecated public boolean isMWIClearMessage();
-    method @Deprecated public boolean isMWISetMessage();
-    method @Deprecated public boolean isMwiDontStore();
-    method @Deprecated public boolean isReplace();
-    method @Deprecated public boolean isReplyPathPresent();
-    method @Deprecated public boolean isStatusReportMessage();
-    field @Deprecated public static final int ENCODING_16BIT = 3; // 0x3
-    field @Deprecated public static final int ENCODING_7BIT = 1; // 0x1
-    field @Deprecated public static final int ENCODING_8BIT = 2; // 0x2
-    field @Deprecated public static final int ENCODING_UNKNOWN = 0; // 0x0
-    field @Deprecated public static final int MAX_USER_DATA_BYTES = 140; // 0x8c
-    field @Deprecated public static final int MAX_USER_DATA_SEPTETS = 160; // 0xa0
-    field @Deprecated public static final int MAX_USER_DATA_SEPTETS_WITH_HEADER = 153; // 0x99
-  }
-
-  @Deprecated public enum SmsMessage.MessageClass {
-    enum_constant @Deprecated public static final android.telephony.gsm.SmsMessage.MessageClass CLASS_0;
-    enum_constant @Deprecated public static final android.telephony.gsm.SmsMessage.MessageClass CLASS_1;
-    enum_constant @Deprecated public static final android.telephony.gsm.SmsMessage.MessageClass CLASS_2;
-    enum_constant @Deprecated public static final android.telephony.gsm.SmsMessage.MessageClass CLASS_3;
-    enum_constant @Deprecated public static final android.telephony.gsm.SmsMessage.MessageClass UNKNOWN;
-  }
-
-  @Deprecated public static class SmsMessage.SubmitPdu {
-    ctor @Deprecated public SmsMessage.SubmitPdu();
-    field @Deprecated public byte[] encodedMessage;
-    field @Deprecated public byte[] encodedScAddress;
-  }
-
-}
-
-package android.telephony.ims {
-
-  public final class ImsException extends java.lang.Exception {
-    method public int getCode();
-    field public static final int CODE_ERROR_INVALID_SUBSCRIPTION = 3; // 0x3
-    field public static final int CODE_ERROR_SERVICE_UNAVAILABLE = 1; // 0x1
-    field public static final int CODE_ERROR_UNSPECIFIED = 0; // 0x0
-    field public static final int CODE_ERROR_UNSUPPORTED_OPERATION = 2; // 0x2
-  }
-
-  public class ImsManager {
-    method @NonNull public android.telephony.ims.ImsMmTelManager getImsMmTelManager(int);
-    method @NonNull public android.telephony.ims.ImsRcsManager getImsRcsManager(int);
-    field public static final String ACTION_WFC_IMS_REGISTRATION_ERROR = "android.telephony.ims.action.WFC_IMS_REGISTRATION_ERROR";
-    field public static final String EXTRA_WFC_REGISTRATION_FAILURE_MESSAGE = "android.telephony.ims.extra.WFC_REGISTRATION_FAILURE_MESSAGE";
-    field public static final String EXTRA_WFC_REGISTRATION_FAILURE_TITLE = "android.telephony.ims.extra.WFC_REGISTRATION_FAILURE_TITLE";
-  }
-
-  public class ImsMmTelManager implements android.telephony.ims.RegistrationManager {
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getRegistrationState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public void getRegistrationTransportType(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public int getVoWiFiModeSetting();
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public boolean isAdvancedCallingSettingEnabled();
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public boolean isTtyOverVolteEnabled();
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public boolean isVoWiFiRoamingSettingEnabled();
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public boolean isVoWiFiSettingEnabled();
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public boolean isVtSettingEnabled();
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public void registerImsRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.RegistrationManager.RegistrationCallback) throws android.telephony.ims.ImsException;
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public void registerMmTelCapabilityCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ImsMmTelManager.CapabilityCallback) throws android.telephony.ims.ImsException;
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.RegistrationManager.RegistrationCallback);
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public void unregisterMmTelCapabilityCallback(@NonNull android.telephony.ims.ImsMmTelManager.CapabilityCallback);
-    field public static final int WIFI_MODE_CELLULAR_PREFERRED = 1; // 0x1
-    field public static final int WIFI_MODE_WIFI_ONLY = 0; // 0x0
-    field public static final int WIFI_MODE_WIFI_PREFERRED = 2; // 0x2
-  }
-
-  public static class ImsMmTelManager.CapabilityCallback {
-    ctor public ImsMmTelManager.CapabilityCallback();
-    method public void onCapabilitiesStatusChanged(@NonNull android.telephony.ims.feature.MmTelFeature.MmTelCapabilities);
-  }
-
-  public class ImsRcsManager {
-    method @NonNull public android.telephony.ims.RcsUceAdapter getUceAdapter();
-    field public static final String ACTION_SHOW_CAPABILITY_DISCOVERY_OPT_IN = "android.telephony.ims.action.SHOW_CAPABILITY_DISCOVERY_OPT_IN";
-  }
-
-  public final class ImsReasonInfo implements android.os.Parcelable {
-    ctor public ImsReasonInfo(int, int, @Nullable String);
-    method public int describeContents();
-    method public int getCode();
-    method public int getExtraCode();
-    method @Nullable public String getExtraMessage();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final int CODE_ACCESS_CLASS_BLOCKED = 1512; // 0x5e8
-    field public static final int CODE_ANSWERED_ELSEWHERE = 1014; // 0x3f6
-    field public static final int CODE_BLACKLISTED_CALL_ID = 506; // 0x1fa
-    field public static final int CODE_CALL_BARRED = 240; // 0xf0
-    field public static final int CODE_CALL_DROP_IWLAN_TO_LTE_UNAVAILABLE = 1100; // 0x44c
-    field public static final int CODE_CALL_END_CAUSE_CALL_PULL = 1016; // 0x3f8
-    field public static final int CODE_CALL_PULL_OUT_OF_SYNC = 1015; // 0x3f7
-    field public static final int CODE_DATA_DISABLED = 1406; // 0x57e
-    field public static final int CODE_DATA_LIMIT_REACHED = 1405; // 0x57d
-    field public static final int CODE_DIAL_MODIFIED_TO_DIAL = 246; // 0xf6
-    field public static final int CODE_DIAL_MODIFIED_TO_DIAL_VIDEO = 247; // 0xf7
-    field public static final int CODE_DIAL_MODIFIED_TO_SS = 245; // 0xf5
-    field public static final int CODE_DIAL_MODIFIED_TO_USSD = 244; // 0xf4
-    field public static final int CODE_DIAL_VIDEO_MODIFIED_TO_DIAL = 248; // 0xf8
-    field public static final int CODE_DIAL_VIDEO_MODIFIED_TO_DIAL_VIDEO = 249; // 0xf9
-    field public static final int CODE_DIAL_VIDEO_MODIFIED_TO_SS = 250; // 0xfa
-    field public static final int CODE_DIAL_VIDEO_MODIFIED_TO_USSD = 251; // 0xfb
-    field public static final int CODE_ECBM_NOT_SUPPORTED = 901; // 0x385
-    field public static final int CODE_EMERGENCY_PERM_FAILURE = 364; // 0x16c
-    field public static final int CODE_EMERGENCY_TEMP_FAILURE = 363; // 0x16b
-    field public static final int CODE_EPDG_TUNNEL_ESTABLISH_FAILURE = 1400; // 0x578
-    field public static final int CODE_EPDG_TUNNEL_LOST_CONNECTION = 1402; // 0x57a
-    field public static final int CODE_EPDG_TUNNEL_REKEY_FAILURE = 1401; // 0x579
-    field public static final int CODE_FDN_BLOCKED = 241; // 0xf1
-    field public static final int CODE_IKEV2_AUTH_FAILURE = 1408; // 0x580
-    field public static final int CODE_IMEI_NOT_ACCEPTED = 243; // 0xf3
-    field public static final int CODE_IWLAN_DPD_FAILURE = 1300; // 0x514
-    field public static final int CODE_LOCAL_CALL_BUSY = 142; // 0x8e
-    field public static final int CODE_LOCAL_CALL_CS_RETRY_REQUIRED = 146; // 0x92
-    field public static final int CODE_LOCAL_CALL_DECLINE = 143; // 0x8f
-    field public static final int CODE_LOCAL_CALL_EXCEEDED = 141; // 0x8d
-    field public static final int CODE_LOCAL_CALL_RESOURCE_RESERVATION_FAILED = 145; // 0x91
-    field public static final int CODE_LOCAL_CALL_TERMINATED = 148; // 0x94
-    field public static final int CODE_LOCAL_CALL_VCC_ON_PROGRESSING = 144; // 0x90
-    field public static final int CODE_LOCAL_CALL_VOLTE_RETRY_REQUIRED = 147; // 0x93
-    field public static final int CODE_LOCAL_ENDED_BY_CONFERENCE_MERGE = 108; // 0x6c
-    field public static final int CODE_LOCAL_HO_NOT_FEASIBLE = 149; // 0x95
-    field public static final int CODE_LOCAL_ILLEGAL_ARGUMENT = 101; // 0x65
-    field public static final int CODE_LOCAL_ILLEGAL_STATE = 102; // 0x66
-    field public static final int CODE_LOCAL_IMS_SERVICE_DOWN = 106; // 0x6a
-    field public static final int CODE_LOCAL_INTERNAL_ERROR = 103; // 0x67
-    field public static final int CODE_LOCAL_LOW_BATTERY = 112; // 0x70
-    field public static final int CODE_LOCAL_NETWORK_IP_CHANGED = 124; // 0x7c
-    field public static final int CODE_LOCAL_NETWORK_NO_LTE_COVERAGE = 122; // 0x7a
-    field public static final int CODE_LOCAL_NETWORK_NO_SERVICE = 121; // 0x79
-    field public static final int CODE_LOCAL_NETWORK_ROAMING = 123; // 0x7b
-    field public static final int CODE_LOCAL_NOT_REGISTERED = 132; // 0x84
-    field public static final int CODE_LOCAL_NO_PENDING_CALL = 107; // 0x6b
-    field public static final int CODE_LOCAL_POWER_OFF = 111; // 0x6f
-    field public static final int CODE_LOCAL_SERVICE_UNAVAILABLE = 131; // 0x83
-    field public static final int CODE_LOW_BATTERY = 505; // 0x1f9
-    field public static final int CODE_MAXIMUM_NUMBER_OF_CALLS_REACHED = 1403; // 0x57b
-    field public static final int CODE_MEDIA_INIT_FAILED = 401; // 0x191
-    field public static final int CODE_MEDIA_NOT_ACCEPTABLE = 403; // 0x193
-    field public static final int CODE_MEDIA_NO_DATA = 402; // 0x192
-    field public static final int CODE_MEDIA_UNSPECIFIED = 404; // 0x194
-    field public static final int CODE_MULTIENDPOINT_NOT_SUPPORTED = 902; // 0x386
-    field public static final int CODE_NETWORK_DETACH = 1513; // 0x5e9
-    field public static final int CODE_NETWORK_REJECT = 1504; // 0x5e0
-    field public static final int CODE_NETWORK_RESP_TIMEOUT = 1503; // 0x5df
-    field public static final int CODE_NO_CSFB_IN_CS_ROAM = 1516; // 0x5ec
-    field public static final int CODE_NO_VALID_SIM = 1501; // 0x5dd
-    field public static final int CODE_OEM_CAUSE_1 = 61441; // 0xf001
-    field public static final int CODE_OEM_CAUSE_10 = 61450; // 0xf00a
-    field public static final int CODE_OEM_CAUSE_11 = 61451; // 0xf00b
-    field public static final int CODE_OEM_CAUSE_12 = 61452; // 0xf00c
-    field public static final int CODE_OEM_CAUSE_13 = 61453; // 0xf00d
-    field public static final int CODE_OEM_CAUSE_14 = 61454; // 0xf00e
-    field public static final int CODE_OEM_CAUSE_15 = 61455; // 0xf00f
-    field public static final int CODE_OEM_CAUSE_2 = 61442; // 0xf002
-    field public static final int CODE_OEM_CAUSE_3 = 61443; // 0xf003
-    field public static final int CODE_OEM_CAUSE_4 = 61444; // 0xf004
-    field public static final int CODE_OEM_CAUSE_5 = 61445; // 0xf005
-    field public static final int CODE_OEM_CAUSE_6 = 61446; // 0xf006
-    field public static final int CODE_OEM_CAUSE_7 = 61447; // 0xf007
-    field public static final int CODE_OEM_CAUSE_8 = 61448; // 0xf008
-    field public static final int CODE_OEM_CAUSE_9 = 61449; // 0xf009
-    field public static final int CODE_RADIO_ACCESS_FAILURE = 1505; // 0x5e1
-    field public static final int CODE_RADIO_INTERNAL_ERROR = 1502; // 0x5de
-    field public static final int CODE_RADIO_LINK_FAILURE = 1506; // 0x5e2
-    field public static final int CODE_RADIO_LINK_LOST = 1507; // 0x5e3
-    field public static final int CODE_RADIO_OFF = 1500; // 0x5dc
-    field public static final int CODE_RADIO_RELEASE_ABNORMAL = 1511; // 0x5e7
-    field public static final int CODE_RADIO_RELEASE_NORMAL = 1510; // 0x5e6
-    field public static final int CODE_RADIO_SETUP_FAILURE = 1509; // 0x5e5
-    field public static final int CODE_RADIO_UPLINK_FAILURE = 1508; // 0x5e4
-    field public static final int CODE_REGISTRATION_ERROR = 1000; // 0x3e8
-    field public static final int CODE_REJECTED_ELSEWHERE = 1017; // 0x3f9
-    field public static final int CODE_REJECT_1X_COLLISION = 1603; // 0x643
-    field public static final int CODE_REJECT_CALL_ON_OTHER_SUB = 1602; // 0x642
-    field public static final int CODE_REJECT_CALL_TYPE_NOT_ALLOWED = 1605; // 0x645
-    field public static final int CODE_REJECT_CONFERENCE_TTY_NOT_ALLOWED = 1617; // 0x651
-    field public static final int CODE_REJECT_INTERNAL_ERROR = 1612; // 0x64c
-    field public static final int CODE_REJECT_MAX_CALL_LIMIT_REACHED = 1608; // 0x648
-    field public static final int CODE_REJECT_ONGOING_CALL_SETUP = 1607; // 0x647
-    field public static final int CODE_REJECT_ONGOING_CALL_TRANSFER = 1611; // 0x64b
-    field public static final int CODE_REJECT_ONGOING_CALL_UPGRADE = 1616; // 0x650
-    field public static final int CODE_REJECT_ONGOING_CALL_WAITING_DISABLED = 1601; // 0x641
-    field public static final int CODE_REJECT_ONGOING_CONFERENCE_CALL = 1618; // 0x652
-    field public static final int CODE_REJECT_ONGOING_CS_CALL = 1621; // 0x655
-    field public static final int CODE_REJECT_ONGOING_E911_CALL = 1606; // 0x646
-    field public static final int CODE_REJECT_ONGOING_ENCRYPTED_CALL = 1620; // 0x654
-    field public static final int CODE_REJECT_ONGOING_HANDOVER = 1614; // 0x64e
-    field public static final int CODE_REJECT_QOS_FAILURE = 1613; // 0x64d
-    field public static final int CODE_REJECT_SERVICE_NOT_REGISTERED = 1604; // 0x644
-    field public static final int CODE_REJECT_UNKNOWN = 1600; // 0x640
-    field public static final int CODE_REJECT_UNSUPPORTED_SDP_HEADERS = 1610; // 0x64a
-    field public static final int CODE_REJECT_UNSUPPORTED_SIP_HEADERS = 1609; // 0x649
-    field public static final int CODE_REJECT_VT_AVPF_NOT_ALLOWED = 1619; // 0x653
-    field public static final int CODE_REJECT_VT_TTY_NOT_ALLOWED = 1615; // 0x64f
-    field public static final int CODE_REMOTE_CALL_DECLINE = 1404; // 0x57c
-    field public static final int CODE_SESSION_MODIFICATION_FAILED = 1517; // 0x5ed
-    field public static final int CODE_SIP_ALTERNATE_EMERGENCY_CALL = 1514; // 0x5ea
-    field public static final int CODE_SIP_AMBIGUOUS = 376; // 0x178
-    field public static final int CODE_SIP_BAD_ADDRESS = 337; // 0x151
-    field public static final int CODE_SIP_BAD_REQUEST = 331; // 0x14b
-    field public static final int CODE_SIP_BUSY = 338; // 0x152
-    field public static final int CODE_SIP_CALL_OR_TRANS_DOES_NOT_EXIST = 372; // 0x174
-    field public static final int CODE_SIP_CLIENT_ERROR = 342; // 0x156
-    field public static final int CODE_SIP_EXTENSION_REQUIRED = 370; // 0x172
-    field public static final int CODE_SIP_FORBIDDEN = 332; // 0x14c
-    field public static final int CODE_SIP_GLOBAL_ERROR = 362; // 0x16a
-    field public static final int CODE_SIP_INTERVAL_TOO_BRIEF = 371; // 0x173
-    field public static final int CODE_SIP_LOOP_DETECTED = 373; // 0x175
-    field public static final int CODE_SIP_METHOD_NOT_ALLOWED = 366; // 0x16e
-    field public static final int CODE_SIP_NOT_ACCEPTABLE = 340; // 0x154
-    field public static final int CODE_SIP_NOT_FOUND = 333; // 0x14d
-    field public static final int CODE_SIP_NOT_REACHABLE = 341; // 0x155
-    field public static final int CODE_SIP_NOT_SUPPORTED = 334; // 0x14e
-    field public static final int CODE_SIP_PROXY_AUTHENTICATION_REQUIRED = 367; // 0x16f
-    field public static final int CODE_SIP_REDIRECTED = 321; // 0x141
-    field public static final int CODE_SIP_REQUEST_CANCELLED = 339; // 0x153
-    field public static final int CODE_SIP_REQUEST_ENTITY_TOO_LARGE = 368; // 0x170
-    field public static final int CODE_SIP_REQUEST_PENDING = 377; // 0x179
-    field public static final int CODE_SIP_REQUEST_TIMEOUT = 335; // 0x14f
-    field public static final int CODE_SIP_REQUEST_URI_TOO_LARGE = 369; // 0x171
-    field public static final int CODE_SIP_SERVER_ERROR = 354; // 0x162
-    field public static final int CODE_SIP_SERVER_INTERNAL_ERROR = 351; // 0x15f
-    field public static final int CODE_SIP_SERVER_TIMEOUT = 353; // 0x161
-    field public static final int CODE_SIP_SERVICE_UNAVAILABLE = 352; // 0x160
-    field public static final int CODE_SIP_TEMPRARILY_UNAVAILABLE = 336; // 0x150
-    field public static final int CODE_SIP_TOO_MANY_HOPS = 374; // 0x176
-    field public static final int CODE_SIP_TRANSACTION_DOES_NOT_EXIST = 343; // 0x157
-    field public static final int CODE_SIP_UNDECIPHERABLE = 378; // 0x17a
-    field public static final int CODE_SIP_USER_MARKED_UNWANTED = 365; // 0x16d
-    field public static final int CODE_SIP_USER_REJECTED = 361; // 0x169
-    field public static final int CODE_SUPP_SVC_CANCELLED = 1202; // 0x4b2
-    field public static final int CODE_SUPP_SVC_FAILED = 1201; // 0x4b1
-    field public static final int CODE_SUPP_SVC_REINVITE_COLLISION = 1203; // 0x4b3
-    field public static final int CODE_TIMEOUT_1XX_WAITING = 201; // 0xc9
-    field public static final int CODE_TIMEOUT_NO_ANSWER = 202; // 0xca
-    field public static final int CODE_TIMEOUT_NO_ANSWER_CALL_UPDATE = 203; // 0xcb
-    field public static final int CODE_UNSPECIFIED = 0; // 0x0
-    field public static final int CODE_USER_CANCELLED_SESSION_MODIFICATION = 512; // 0x200
-    field public static final int CODE_USER_DECLINE = 504; // 0x1f8
-    field public static final int CODE_USER_IGNORE = 503; // 0x1f7
-    field public static final int CODE_USER_NOANSWER = 502; // 0x1f6
-    field public static final int CODE_USER_REJECTED_SESSION_MODIFICATION = 511; // 0x1ff
-    field public static final int CODE_USER_TERMINATED = 501; // 0x1f5
-    field public static final int CODE_USER_TERMINATED_BY_REMOTE = 510; // 0x1fe
-    field public static final int CODE_UT_CB_PASSWORD_MISMATCH = 821; // 0x335
-    field public static final int CODE_UT_NETWORK_ERROR = 804; // 0x324
-    field public static final int CODE_UT_NOT_SUPPORTED = 801; // 0x321
-    field public static final int CODE_UT_OPERATION_NOT_ALLOWED = 803; // 0x323
-    field public static final int CODE_UT_SERVICE_UNAVAILABLE = 802; // 0x322
-    field public static final int CODE_UT_SS_MODIFIED_TO_DIAL = 822; // 0x336
-    field public static final int CODE_UT_SS_MODIFIED_TO_DIAL_VIDEO = 825; // 0x339
-    field public static final int CODE_UT_SS_MODIFIED_TO_SS = 824; // 0x338
-    field public static final int CODE_UT_SS_MODIFIED_TO_USSD = 823; // 0x337
-    field public static final int CODE_WIFI_LOST = 1407; // 0x57f
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsReasonInfo> CREATOR;
-    field public static final int EXTRA_CODE_CALL_RETRY_BY_SETTINGS = 3; // 0x3
-    field public static final int EXTRA_CODE_CALL_RETRY_NORMAL = 1; // 0x1
-    field public static final int EXTRA_CODE_CALL_RETRY_SILENT_REDIAL = 2; // 0x2
-  }
-
-  public class RcsUceAdapter {
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isUceSettingEnabled() throws android.telephony.ims.ImsException;
-  }
-
-  public interface RegistrationManager {
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getRegistrationState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getRegistrationTransportType(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void registerImsRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.RegistrationManager.RegistrationCallback) throws android.telephony.ims.ImsException;
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.RegistrationManager.RegistrationCallback);
-    field public static final int REGISTRATION_STATE_NOT_REGISTERED = 0; // 0x0
-    field public static final int REGISTRATION_STATE_REGISTERED = 2; // 0x2
-    field public static final int REGISTRATION_STATE_REGISTERING = 1; // 0x1
-  }
-
-  public static class RegistrationManager.RegistrationCallback {
-    ctor public RegistrationManager.RegistrationCallback();
-    method public void onRegistered(int);
-    method public void onRegistering(int);
-    method public void onTechnologyChangeFailed(int, @NonNull android.telephony.ims.ImsReasonInfo);
-    method public void onUnregistered(@NonNull android.telephony.ims.ImsReasonInfo);
-  }
-
-}
-
-package android.telephony.ims.feature {
-
-  public class MmTelFeature {
-  }
-
-  public static class MmTelFeature.MmTelCapabilities {
-    field public static final int CAPABILITY_TYPE_SMS = 8; // 0x8
-    field public static final int CAPABILITY_TYPE_UT = 4; // 0x4
-    field public static final int CAPABILITY_TYPE_VIDEO = 2; // 0x2
-    field public static final int CAPABILITY_TYPE_VOICE = 1; // 0x1
-  }
-
-}
-
-package android.telephony.mbms {
-
-  public class DownloadProgressListener {
-    ctor public DownloadProgressListener();
-    method public void onProgressUpdated(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo, int, int, int, int);
-  }
-
-  public final class DownloadRequest implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.net.Uri getDestinationUri();
-    method public String getFileServiceId();
-    method public static int getMaxAppIntentSize();
-    method public static int getMaxDestinationUriSize();
-    method public android.net.Uri getSourceUri();
-    method public int getSubscriptionId();
-    method public byte[] toByteArray();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.mbms.DownloadRequest> CREATOR;
-  }
-
-  public static class DownloadRequest.Builder {
-    ctor public DownloadRequest.Builder(@NonNull android.net.Uri, @NonNull android.net.Uri);
-    method public android.telephony.mbms.DownloadRequest build();
-    method public static android.telephony.mbms.DownloadRequest.Builder fromDownloadRequest(android.telephony.mbms.DownloadRequest);
-    method public static android.telephony.mbms.DownloadRequest.Builder fromSerializedRequest(byte[]);
-    method public android.telephony.mbms.DownloadRequest.Builder setAppIntent(android.content.Intent);
-    method public android.telephony.mbms.DownloadRequest.Builder setServiceInfo(android.telephony.mbms.FileServiceInfo);
-    method public android.telephony.mbms.DownloadRequest.Builder setSubscriptionId(int);
-  }
-
-  public class DownloadStatusListener {
-    ctor public DownloadStatusListener();
-    method public void onStatusUpdated(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo, int);
-  }
-
-  public final class FileInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public String getMimeType();
-    method public android.net.Uri getUri();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.mbms.FileInfo> CREATOR;
-  }
-
-  public final class FileServiceInfo extends android.telephony.mbms.ServiceInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public java.util.List<android.telephony.mbms.FileInfo> getFiles();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.mbms.FileServiceInfo> CREATOR;
-  }
-
-  public class GroupCall implements java.lang.AutoCloseable {
-    method public void close();
-    method public long getTmgi();
-    method public void updateGroupCall(@NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.lang.Integer>);
-    field public static final int REASON_BY_USER_REQUEST = 1; // 0x1
-    field public static final int REASON_FREQUENCY_CONFLICT = 3; // 0x3
-    field public static final int REASON_LEFT_MBMS_BROADCAST_AREA = 6; // 0x6
-    field public static final int REASON_NONE = 0; // 0x0
-    field public static final int REASON_NOT_CONNECTED_TO_HOMECARRIER_LTE = 5; // 0x5
-    field public static final int REASON_OUT_OF_MEMORY = 4; // 0x4
-    field public static final int STATE_STALLED = 3; // 0x3
-    field public static final int STATE_STARTED = 2; // 0x2
-    field public static final int STATE_STOPPED = 1; // 0x1
-  }
-
-  public interface GroupCallCallback {
-    method public default void onBroadcastSignalStrengthUpdated(@IntRange(from=0xffffffff, to=4) int);
-    method public default void onError(int, @Nullable String);
-    method public default void onGroupCallStateChanged(int, int);
-    field public static final int SIGNAL_STRENGTH_UNAVAILABLE = -1; // 0xffffffff
-  }
-
-  public class MbmsDownloadReceiver extends android.content.BroadcastReceiver {
-    ctor public MbmsDownloadReceiver();
-    method public void onReceive(android.content.Context, android.content.Intent);
-  }
-
-  public class MbmsDownloadSessionCallback {
-    ctor public MbmsDownloadSessionCallback();
-    method public void onError(int, String);
-    method public void onFileServicesUpdated(java.util.List<android.telephony.mbms.FileServiceInfo>);
-    method public void onMiddlewareReady();
-  }
-
-  public class MbmsErrors {
-    field public static final int ERROR_MIDDLEWARE_LOST = 3; // 0x3
-    field public static final int ERROR_MIDDLEWARE_NOT_BOUND = 2; // 0x2
-    field public static final int ERROR_NO_UNIQUE_MIDDLEWARE = 1; // 0x1
-    field public static final int SUCCESS = 0; // 0x0
-    field public static final int UNKNOWN = -1; // 0xffffffff
-  }
-
-  public static class MbmsErrors.DownloadErrors {
-    field public static final int ERROR_CANNOT_CHANGE_TEMP_FILE_ROOT = 401; // 0x191
-    field public static final int ERROR_MALFORMED_SERVICE_ANNOUNCEMENT = 404; // 0x194
-    field public static final int ERROR_UNKNOWN_DOWNLOAD_REQUEST = 402; // 0x192
-    field public static final int ERROR_UNKNOWN_FILE_INFO = 403; // 0x193
-  }
-
-  public static class MbmsErrors.GeneralErrors {
-    field public static final int ERROR_CARRIER_CHANGE_NOT_ALLOWED = 207; // 0xcf
-    field public static final int ERROR_IN_E911 = 204; // 0xcc
-    field public static final int ERROR_MIDDLEWARE_NOT_YET_READY = 201; // 0xc9
-    field public static final int ERROR_MIDDLEWARE_TEMPORARILY_UNAVAILABLE = 203; // 0xcb
-    field public static final int ERROR_NOT_CONNECTED_TO_HOME_CARRIER_LTE = 205; // 0xcd
-    field public static final int ERROR_OUT_OF_MEMORY = 202; // 0xca
-    field public static final int ERROR_UNABLE_TO_READ_SIM = 206; // 0xce
-  }
-
-  public static class MbmsErrors.GroupCallErrors {
-    field public static final int ERROR_DUPLICATE_START_GROUP_CALL = 502; // 0x1f6
-    field public static final int ERROR_UNABLE_TO_START_SERVICE = 501; // 0x1f5
-  }
-
-  public static class MbmsErrors.InitializationErrors {
-    field public static final int ERROR_APP_PERMISSIONS_NOT_GRANTED = 102; // 0x66
-    field public static final int ERROR_DUPLICATE_INITIALIZE = 101; // 0x65
-    field public static final int ERROR_UNABLE_TO_INITIALIZE = 103; // 0x67
-  }
-
-  public static class MbmsErrors.StreamingErrors {
-    field public static final int ERROR_CONCURRENT_SERVICE_LIMIT_REACHED = 301; // 0x12d
-    field public static final int ERROR_DUPLICATE_START_STREAM = 303; // 0x12f
-    field public static final int ERROR_UNABLE_TO_START_SERVICE = 302; // 0x12e
-  }
-
-  public interface MbmsGroupCallSessionCallback {
-    method public default void onAvailableSaisUpdated(@NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.util.List<java.lang.Integer>>);
-    method public default void onError(int, @Nullable String);
-    method public default void onMiddlewareReady();
-    method public default void onServiceInterfaceAvailable(@NonNull String, int);
-  }
-
-  public class MbmsStreamingSessionCallback {
-    ctor public MbmsStreamingSessionCallback();
-    method public void onError(int, @Nullable String);
-    method public void onMiddlewareReady();
-    method public void onStreamingServicesUpdated(java.util.List<android.telephony.mbms.StreamingServiceInfo>);
-  }
-
-  public class ServiceInfo {
-    method public java.util.List<java.util.Locale> getLocales();
-    method @NonNull public CharSequence getNameForLocale(@NonNull java.util.Locale);
-    method @NonNull public java.util.Set<java.util.Locale> getNamedContentLocales();
-    method public String getServiceClassName();
-    method public String getServiceId();
-    method public java.util.Date getSessionEndTime();
-    method public java.util.Date getSessionStartTime();
-  }
-
-  public class StreamingService implements java.lang.AutoCloseable {
-    method public void close();
-    method public android.telephony.mbms.StreamingServiceInfo getInfo();
-    method @Nullable public android.net.Uri getPlaybackUri();
-    field public static final int BROADCAST_METHOD = 1; // 0x1
-    field public static final int REASON_BY_USER_REQUEST = 1; // 0x1
-    field public static final int REASON_END_OF_SESSION = 2; // 0x2
-    field public static final int REASON_FREQUENCY_CONFLICT = 3; // 0x3
-    field public static final int REASON_LEFT_MBMS_BROADCAST_AREA = 6; // 0x6
-    field public static final int REASON_NONE = 0; // 0x0
-    field public static final int REASON_NOT_CONNECTED_TO_HOMECARRIER_LTE = 5; // 0x5
-    field public static final int REASON_OUT_OF_MEMORY = 4; // 0x4
-    field public static final int STATE_STALLED = 3; // 0x3
-    field public static final int STATE_STARTED = 2; // 0x2
-    field public static final int STATE_STOPPED = 1; // 0x1
-    field public static final int UNICAST_METHOD = 2; // 0x2
-  }
-
-  public class StreamingServiceCallback {
-    ctor public StreamingServiceCallback();
-    method public void onBroadcastSignalStrengthUpdated(int);
-    method public void onError(int, @Nullable String);
-    method public void onMediaDescriptionUpdated();
-    method public void onStreamMethodUpdated(int);
-    method public void onStreamStateUpdated(int, int);
-    field public static final int SIGNAL_STRENGTH_UNAVAILABLE = -1; // 0xffffffff
-  }
-
-  public final class StreamingServiceInfo extends android.telephony.mbms.ServiceInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.mbms.StreamingServiceInfo> CREATOR;
-  }
-
-}
-
-package android.text {
-
-  @Deprecated public class AlteredCharSequence implements java.lang.CharSequence android.text.GetChars {
-    method @Deprecated public char charAt(int);
-    method @Deprecated public void getChars(int, int, char[], int);
-    method @Deprecated public int length();
-    method @Deprecated public static android.text.AlteredCharSequence make(CharSequence, char[], int, int);
-    method @Deprecated public CharSequence subSequence(int, int);
-  }
-
-  @Deprecated public class AndroidCharacter {
-    ctor @Deprecated public AndroidCharacter();
-    method @Deprecated public static void getDirectionalities(char[], byte[], int);
-    method @Deprecated public static int getEastAsianWidth(char);
-    method @Deprecated public static void getEastAsianWidths(char[], int, int, byte[]);
-    method @Deprecated public static char getMirror(char);
-    method @Deprecated public static boolean mirror(char[], int, int);
-    field @Deprecated public static final int EAST_ASIAN_WIDTH_AMBIGUOUS = 1; // 0x1
-    field @Deprecated public static final int EAST_ASIAN_WIDTH_FULL_WIDTH = 3; // 0x3
-    field @Deprecated public static final int EAST_ASIAN_WIDTH_HALF_WIDTH = 2; // 0x2
-    field @Deprecated public static final int EAST_ASIAN_WIDTH_NARROW = 4; // 0x4
-    field @Deprecated public static final int EAST_ASIAN_WIDTH_NEUTRAL = 0; // 0x0
-    field @Deprecated public static final int EAST_ASIAN_WIDTH_WIDE = 5; // 0x5
-  }
-
-  public class Annotation implements android.text.ParcelableSpan {
-    ctor public Annotation(String, String);
-    ctor public Annotation(android.os.Parcel);
-    method public int describeContents();
-    method public String getKey();
-    method public int getSpanTypeId();
-    method public String getValue();
-    method public void writeToParcel(android.os.Parcel, int);
-  }
-
-  public class AutoText {
-    method public static String get(CharSequence, int, int, android.view.View);
-    method public static int getSize(android.view.View);
-  }
-
-  public final class BidiFormatter {
-    method public static android.text.BidiFormatter getInstance();
-    method public static android.text.BidiFormatter getInstance(boolean);
-    method public static android.text.BidiFormatter getInstance(java.util.Locale);
-    method public boolean getStereoReset();
-    method public boolean isRtl(String);
-    method public boolean isRtl(CharSequence);
-    method public boolean isRtlContext();
-    method @Nullable public String unicodeWrap(@Nullable String, android.text.TextDirectionHeuristic, boolean);
-    method @Nullable public CharSequence unicodeWrap(@Nullable CharSequence, android.text.TextDirectionHeuristic, boolean);
-    method public String unicodeWrap(String, android.text.TextDirectionHeuristic);
-    method public CharSequence unicodeWrap(CharSequence, android.text.TextDirectionHeuristic);
-    method public String unicodeWrap(String, boolean);
-    method public CharSequence unicodeWrap(CharSequence, boolean);
-    method public String unicodeWrap(String);
-    method public CharSequence unicodeWrap(CharSequence);
-  }
-
-  public static final class BidiFormatter.Builder {
-    ctor public BidiFormatter.Builder();
-    ctor public BidiFormatter.Builder(boolean);
-    ctor public BidiFormatter.Builder(java.util.Locale);
-    method public android.text.BidiFormatter build();
-    method public android.text.BidiFormatter.Builder setTextDirectionHeuristic(android.text.TextDirectionHeuristic);
-    method public android.text.BidiFormatter.Builder stereoReset(boolean);
-  }
-
-  public class BoringLayout extends android.text.Layout implements android.text.TextUtils.EllipsizeCallback {
-    ctor public BoringLayout(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean);
-    ctor public BoringLayout(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean, android.text.TextUtils.TruncateAt, int);
-    method public void ellipsized(int, int);
-    method public int getBottomPadding();
-    method public int getEllipsisCount(int);
-    method public int getEllipsisStart(int);
-    method public boolean getLineContainsTab(int);
-    method public int getLineCount();
-    method public int getLineDescent(int);
-    method public final android.text.Layout.Directions getLineDirections(int);
-    method public int getLineStart(int);
-    method public int getLineTop(int);
-    method public int getParagraphDirection(int);
-    method public int getTopPadding();
-    method public static android.text.BoringLayout.Metrics isBoring(CharSequence, android.text.TextPaint);
-    method public static android.text.BoringLayout.Metrics isBoring(CharSequence, android.text.TextPaint, android.text.BoringLayout.Metrics);
-    method public static android.text.BoringLayout make(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean);
-    method public static android.text.BoringLayout make(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean, android.text.TextUtils.TruncateAt, int);
-    method public android.text.BoringLayout replaceOrMake(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean);
-    method public android.text.BoringLayout replaceOrMake(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean, android.text.TextUtils.TruncateAt, int);
-  }
-
-  public static class BoringLayout.Metrics extends android.graphics.Paint.FontMetricsInt {
-    ctor public BoringLayout.Metrics();
-    field public int width;
-  }
-
-  @Deprecated public abstract class ClipboardManager {
-    ctor @Deprecated public ClipboardManager();
-    method @Deprecated public abstract CharSequence getText();
-    method @Deprecated public abstract boolean hasText();
-    method @Deprecated public abstract void setText(CharSequence);
-  }
-
-  public class DynamicLayout extends android.text.Layout {
-    ctor @Deprecated public DynamicLayout(@NonNull CharSequence, @NonNull android.text.TextPaint, @IntRange(from=0) int, @NonNull android.text.Layout.Alignment, @FloatRange(from=0.0) float, float, boolean);
-    ctor @Deprecated public DynamicLayout(@NonNull CharSequence, @NonNull CharSequence, @NonNull android.text.TextPaint, @IntRange(from=0) int, @NonNull android.text.Layout.Alignment, @FloatRange(from=0.0) float, float, boolean);
-    ctor @Deprecated public DynamicLayout(@NonNull CharSequence, @NonNull CharSequence, @NonNull android.text.TextPaint, @IntRange(from=0) int, @NonNull android.text.Layout.Alignment, @FloatRange(from=0.0) float, float, boolean, @Nullable android.text.TextUtils.TruncateAt, @IntRange(from=0) int);
-    method public int getBottomPadding();
-    method public int getEllipsisCount(int);
-    method public int getEllipsisStart(int);
-    method public boolean getLineContainsTab(int);
-    method public int getLineCount();
-    method public int getLineDescent(int);
-    method public final android.text.Layout.Directions getLineDirections(int);
-    method public int getLineStart(int);
-    method public int getLineTop(int);
-    method public int getParagraphDirection(int);
-    method public int getTopPadding();
-  }
-
-  public static final class DynamicLayout.Builder {
-    method @NonNull public android.text.DynamicLayout build();
-    method @NonNull public static android.text.DynamicLayout.Builder obtain(@NonNull CharSequence, @NonNull android.text.TextPaint, @IntRange(from=0) int);
-    method @NonNull public android.text.DynamicLayout.Builder setAlignment(@NonNull android.text.Layout.Alignment);
-    method @NonNull public android.text.DynamicLayout.Builder setBreakStrategy(int);
-    method @NonNull public android.text.DynamicLayout.Builder setDisplayText(@NonNull CharSequence);
-    method public android.text.DynamicLayout.Builder setEllipsize(@Nullable android.text.TextUtils.TruncateAt);
-    method @NonNull public android.text.DynamicLayout.Builder setEllipsizedWidth(@IntRange(from=0) int);
-    method @NonNull public android.text.DynamicLayout.Builder setHyphenationFrequency(int);
-    method @NonNull public android.text.DynamicLayout.Builder setIncludePad(boolean);
-    method @NonNull public android.text.DynamicLayout.Builder setJustificationMode(int);
-    method @NonNull public android.text.DynamicLayout.Builder setLineSpacing(float, @FloatRange(from=0.0) float);
-    method @NonNull public android.text.DynamicLayout.Builder setTextDirection(@NonNull android.text.TextDirectionHeuristic);
-    method @NonNull public android.text.DynamicLayout.Builder setUseLineSpacingFromFallbacks(boolean);
-  }
-
-  public interface Editable extends java.lang.CharSequence java.lang.Appendable android.text.GetChars android.text.Spannable {
-    method public android.text.Editable append(CharSequence);
-    method public android.text.Editable append(CharSequence, int, int);
-    method public android.text.Editable append(char);
-    method public void clear();
-    method public void clearSpans();
-    method public android.text.Editable delete(int, int);
-    method public android.text.InputFilter[] getFilters();
-    method public android.text.Editable insert(int, CharSequence, int, int);
-    method public android.text.Editable insert(int, CharSequence);
-    method public android.text.Editable replace(int, int, CharSequence, int, int);
-    method public android.text.Editable replace(int, int, CharSequence);
-    method public void setFilters(android.text.InputFilter[]);
-  }
-
-  public static class Editable.Factory {
-    ctor public Editable.Factory();
-    method public static android.text.Editable.Factory getInstance();
-    method public android.text.Editable newEditable(CharSequence);
-  }
-
-  public interface GetChars extends java.lang.CharSequence {
-    method public void getChars(int, int, char[], int);
-  }
-
-  public class Html {
-    method public static String escapeHtml(CharSequence);
-    method @Deprecated public static android.text.Spanned fromHtml(String);
-    method public static android.text.Spanned fromHtml(String, int);
-    method @Deprecated public static android.text.Spanned fromHtml(String, android.text.Html.ImageGetter, android.text.Html.TagHandler);
-    method public static android.text.Spanned fromHtml(String, int, android.text.Html.ImageGetter, android.text.Html.TagHandler);
-    method @Deprecated public static String toHtml(android.text.Spanned);
-    method public static String toHtml(android.text.Spanned, int);
-    field public static final int FROM_HTML_MODE_COMPACT = 63; // 0x3f
-    field public static final int FROM_HTML_MODE_LEGACY = 0; // 0x0
-    field public static final int FROM_HTML_OPTION_USE_CSS_COLORS = 256; // 0x100
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_BLOCKQUOTE = 32; // 0x20
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_DIV = 16; // 0x10
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_HEADING = 2; // 0x2
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_LIST = 8; // 0x8
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_LIST_ITEM = 4; // 0x4
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_PARAGRAPH = 1; // 0x1
-    field public static final int TO_HTML_PARAGRAPH_LINES_CONSECUTIVE = 0; // 0x0
-    field public static final int TO_HTML_PARAGRAPH_LINES_INDIVIDUAL = 1; // 0x1
-  }
-
-  public static interface Html.ImageGetter {
-    method public android.graphics.drawable.Drawable getDrawable(String);
-  }
-
-  public static interface Html.TagHandler {
-    method public void handleTag(boolean, String, android.text.Editable, org.xml.sax.XMLReader);
-  }
-
-  public interface InputFilter {
-    method public CharSequence filter(CharSequence, int, int, android.text.Spanned, int, int);
-  }
-
-  public static class InputFilter.AllCaps implements android.text.InputFilter {
-    ctor public InputFilter.AllCaps();
-    ctor public InputFilter.AllCaps(@NonNull java.util.Locale);
-    method public CharSequence filter(CharSequence, int, int, android.text.Spanned, int, int);
-  }
-
-  public static class InputFilter.LengthFilter implements android.text.InputFilter {
-    ctor public InputFilter.LengthFilter(int);
-    method public CharSequence filter(CharSequence, int, int, android.text.Spanned, int, int);
-    method public int getMax();
-  }
-
-  public interface InputType {
-    field public static final int TYPE_CLASS_DATETIME = 4; // 0x4
-    field public static final int TYPE_CLASS_NUMBER = 2; // 0x2
-    field public static final int TYPE_CLASS_PHONE = 3; // 0x3
-    field public static final int TYPE_CLASS_TEXT = 1; // 0x1
-    field public static final int TYPE_DATETIME_VARIATION_DATE = 16; // 0x10
-    field public static final int TYPE_DATETIME_VARIATION_NORMAL = 0; // 0x0
-    field public static final int TYPE_DATETIME_VARIATION_TIME = 32; // 0x20
-    field public static final int TYPE_MASK_CLASS = 15; // 0xf
-    field public static final int TYPE_MASK_FLAGS = 16773120; // 0xfff000
-    field public static final int TYPE_MASK_VARIATION = 4080; // 0xff0
-    field public static final int TYPE_NULL = 0; // 0x0
-    field public static final int TYPE_NUMBER_FLAG_DECIMAL = 8192; // 0x2000
-    field public static final int TYPE_NUMBER_FLAG_SIGNED = 4096; // 0x1000
-    field public static final int TYPE_NUMBER_VARIATION_NORMAL = 0; // 0x0
-    field public static final int TYPE_NUMBER_VARIATION_PASSWORD = 16; // 0x10
-    field public static final int TYPE_TEXT_FLAG_AUTO_COMPLETE = 65536; // 0x10000
-    field public static final int TYPE_TEXT_FLAG_AUTO_CORRECT = 32768; // 0x8000
-    field public static final int TYPE_TEXT_FLAG_CAP_CHARACTERS = 4096; // 0x1000
-    field public static final int TYPE_TEXT_FLAG_CAP_SENTENCES = 16384; // 0x4000
-    field public static final int TYPE_TEXT_FLAG_CAP_WORDS = 8192; // 0x2000
-    field public static final int TYPE_TEXT_FLAG_IME_MULTI_LINE = 262144; // 0x40000
-    field public static final int TYPE_TEXT_FLAG_MULTI_LINE = 131072; // 0x20000
-    field public static final int TYPE_TEXT_FLAG_NO_SUGGESTIONS = 524288; // 0x80000
-    field public static final int TYPE_TEXT_VARIATION_EMAIL_ADDRESS = 32; // 0x20
-    field public static final int TYPE_TEXT_VARIATION_EMAIL_SUBJECT = 48; // 0x30
-    field public static final int TYPE_TEXT_VARIATION_FILTER = 176; // 0xb0
-    field public static final int TYPE_TEXT_VARIATION_LONG_MESSAGE = 80; // 0x50
-    field public static final int TYPE_TEXT_VARIATION_NORMAL = 0; // 0x0
-    field public static final int TYPE_TEXT_VARIATION_PASSWORD = 128; // 0x80
-    field public static final int TYPE_TEXT_VARIATION_PERSON_NAME = 96; // 0x60
-    field public static final int TYPE_TEXT_VARIATION_PHONETIC = 192; // 0xc0
-    field public static final int TYPE_TEXT_VARIATION_POSTAL_ADDRESS = 112; // 0x70
-    field public static final int TYPE_TEXT_VARIATION_SHORT_MESSAGE = 64; // 0x40
-    field public static final int TYPE_TEXT_VARIATION_URI = 16; // 0x10
-    field public static final int TYPE_TEXT_VARIATION_VISIBLE_PASSWORD = 144; // 0x90
-    field public static final int TYPE_TEXT_VARIATION_WEB_EDIT_TEXT = 160; // 0xa0
-    field public static final int TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS = 208; // 0xd0
-    field public static final int TYPE_TEXT_VARIATION_WEB_PASSWORD = 224; // 0xe0
-  }
-
-  public abstract class Layout {
-    ctor protected Layout(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float);
-    method public void draw(android.graphics.Canvas);
-    method public void draw(android.graphics.Canvas, android.graphics.Path, android.graphics.Paint, int);
-    method public final android.text.Layout.Alignment getAlignment();
-    method public abstract int getBottomPadding();
-    method public void getCursorPath(int, android.graphics.Path, CharSequence);
-    method public static float getDesiredWidth(CharSequence, android.text.TextPaint);
-    method public static float getDesiredWidth(CharSequence, int, int, android.text.TextPaint);
-    method public abstract int getEllipsisCount(int);
-    method public abstract int getEllipsisStart(int);
-    method public int getEllipsizedWidth();
-    method public int getHeight();
-    method public final int getLineAscent(int);
-    method public final int getLineBaseline(int);
-    method public final int getLineBottom(int);
-    method public int getLineBounds(int, android.graphics.Rect);
-    method public abstract boolean getLineContainsTab(int);
-    method public abstract int getLineCount();
-    method public abstract int getLineDescent(int);
-    method public abstract android.text.Layout.Directions getLineDirections(int);
-    method public final int getLineEnd(int);
-    method public int getLineForOffset(int);
-    method public int getLineForVertical(int);
-    method public float getLineLeft(int);
-    method public float getLineMax(int);
-    method public float getLineRight(int);
-    method public abstract int getLineStart(int);
-    method public abstract int getLineTop(int);
-    method public int getLineVisibleEnd(int);
-    method public float getLineWidth(int);
-    method public int getOffsetForHorizontal(int, float);
-    method public int getOffsetToLeftOf(int);
-    method public int getOffsetToRightOf(int);
-    method public final android.text.TextPaint getPaint();
-    method public final android.text.Layout.Alignment getParagraphAlignment(int);
-    method public abstract int getParagraphDirection(int);
-    method public final int getParagraphLeft(int);
-    method public final int getParagraphRight(int);
-    method public float getPrimaryHorizontal(int);
-    method public float getSecondaryHorizontal(int);
-    method public void getSelectionPath(int, int, android.graphics.Path);
-    method public final float getSpacingAdd();
-    method public final float getSpacingMultiplier();
-    method public final CharSequence getText();
-    method public abstract int getTopPadding();
-    method public final int getWidth();
-    method public final void increaseWidthTo(int);
-    method public boolean isRtlCharAt(int);
-    method protected final boolean isSpanned();
-    field public static final int BREAK_STRATEGY_BALANCED = 2; // 0x2
-    field public static final int BREAK_STRATEGY_HIGH_QUALITY = 1; // 0x1
-    field public static final int BREAK_STRATEGY_SIMPLE = 0; // 0x0
-    field public static final float DEFAULT_LINESPACING_ADDITION = 0.0f;
-    field public static final float DEFAULT_LINESPACING_MULTIPLIER = 1.0f;
-    field public static final int DIR_LEFT_TO_RIGHT = 1; // 0x1
-    field public static final int DIR_RIGHT_TO_LEFT = -1; // 0xffffffff
-    field public static final int HYPHENATION_FREQUENCY_FULL = 2; // 0x2
-    field public static final int HYPHENATION_FREQUENCY_NONE = 0; // 0x0
-    field public static final int HYPHENATION_FREQUENCY_NORMAL = 1; // 0x1
-    field public static final int JUSTIFICATION_MODE_INTER_WORD = 1; // 0x1
-    field public static final int JUSTIFICATION_MODE_NONE = 0; // 0x0
-  }
-
-  public enum Layout.Alignment {
-    enum_constant public static final android.text.Layout.Alignment ALIGN_CENTER;
-    enum_constant public static final android.text.Layout.Alignment ALIGN_NORMAL;
-    enum_constant public static final android.text.Layout.Alignment ALIGN_OPPOSITE;
-  }
-
-  public static class Layout.Directions {
-  }
-
-  @Deprecated public abstract class LoginFilter implements android.text.InputFilter {
-    method @Deprecated public CharSequence filter(CharSequence, int, int, android.text.Spanned, int, int);
-    method @Deprecated public abstract boolean isAllowed(char);
-    method @Deprecated public void onInvalidCharacter(char);
-    method @Deprecated public void onStart();
-    method @Deprecated public void onStop();
-  }
-
-  @Deprecated public static class LoginFilter.PasswordFilterGMail extends android.text.LoginFilter {
-    ctor @Deprecated public LoginFilter.PasswordFilterGMail();
-    ctor @Deprecated public LoginFilter.PasswordFilterGMail(boolean);
-    method @Deprecated public boolean isAllowed(char);
-  }
-
-  @Deprecated public static class LoginFilter.UsernameFilterGMail extends android.text.LoginFilter {
-    ctor @Deprecated public LoginFilter.UsernameFilterGMail();
-    ctor @Deprecated public LoginFilter.UsernameFilterGMail(boolean);
-    method @Deprecated public boolean isAllowed(char);
-  }
-
-  @Deprecated public static class LoginFilter.UsernameFilterGeneric extends android.text.LoginFilter {
-    ctor @Deprecated public LoginFilter.UsernameFilterGeneric();
-    ctor @Deprecated public LoginFilter.UsernameFilterGeneric(boolean);
-    method @Deprecated public boolean isAllowed(char);
-  }
-
-  public interface NoCopySpan {
-  }
-
-  public static class NoCopySpan.Concrete implements android.text.NoCopySpan {
-    ctor public NoCopySpan.Concrete();
-  }
-
-  public interface ParcelableSpan extends android.os.Parcelable {
-    method public int getSpanTypeId();
-  }
-
-  public class PrecomputedText implements android.text.Spannable {
-    method public char charAt(int);
-    method public static android.text.PrecomputedText create(@NonNull CharSequence, @NonNull android.text.PrecomputedText.Params);
-    method public void getBounds(@IntRange(from=0) int, @IntRange(from=0) int, @NonNull android.graphics.Rect);
-    method @IntRange(from=0) public int getParagraphCount();
-    method @IntRange(from=0) public int getParagraphEnd(@IntRange(from=0) int);
-    method @IntRange(from=0) public int getParagraphStart(@IntRange(from=0) int);
-    method @NonNull public android.text.PrecomputedText.Params getParams();
-    method public int getSpanEnd(Object);
-    method public int getSpanFlags(Object);
-    method public int getSpanStart(Object);
-    method public <T> T[] getSpans(int, int, Class<T>);
-    method @FloatRange(from=0) public float getWidth(@IntRange(from=0) int, @IntRange(from=0) int);
-    method public int length();
-    method public int nextSpanTransition(int, int, Class);
-    method public void removeSpan(Object);
-    method public void setSpan(Object, int, int, int);
-    method public CharSequence subSequence(int, int);
-  }
-
-  public static final class PrecomputedText.Params {
-    method public int getBreakStrategy();
-    method public int getHyphenationFrequency();
-    method @NonNull public android.text.TextDirectionHeuristic getTextDirection();
-    method @NonNull public android.text.TextPaint getTextPaint();
-  }
-
-  public static class PrecomputedText.Params.Builder {
-    ctor public PrecomputedText.Params.Builder(@NonNull android.text.TextPaint);
-    ctor public PrecomputedText.Params.Builder(@NonNull android.text.PrecomputedText.Params);
-    method @NonNull public android.text.PrecomputedText.Params build();
-    method public android.text.PrecomputedText.Params.Builder setBreakStrategy(int);
-    method public android.text.PrecomputedText.Params.Builder setHyphenationFrequency(int);
-    method public android.text.PrecomputedText.Params.Builder setTextDirection(@NonNull android.text.TextDirectionHeuristic);
-  }
-
-  public class Selection {
-    method public static boolean extendDown(android.text.Spannable, android.text.Layout);
-    method public static boolean extendLeft(android.text.Spannable, android.text.Layout);
-    method public static boolean extendRight(android.text.Spannable, android.text.Layout);
-    method public static final void extendSelection(android.text.Spannable, int);
-    method public static boolean extendToLeftEdge(android.text.Spannable, android.text.Layout);
-    method public static boolean extendToRightEdge(android.text.Spannable, android.text.Layout);
-    method public static boolean extendUp(android.text.Spannable, android.text.Layout);
-    method public static final int getSelectionEnd(CharSequence);
-    method public static final int getSelectionStart(CharSequence);
-    method public static boolean moveDown(android.text.Spannable, android.text.Layout);
-    method public static boolean moveLeft(android.text.Spannable, android.text.Layout);
-    method public static boolean moveRight(android.text.Spannable, android.text.Layout);
-    method public static boolean moveToLeftEdge(android.text.Spannable, android.text.Layout);
-    method public static boolean moveToRightEdge(android.text.Spannable, android.text.Layout);
-    method public static boolean moveUp(android.text.Spannable, android.text.Layout);
-    method public static final void removeSelection(android.text.Spannable);
-    method public static final void selectAll(android.text.Spannable);
-    method public static void setSelection(android.text.Spannable, int, int);
-    method public static final void setSelection(android.text.Spannable, int);
-    field public static final Object SELECTION_END;
-    field public static final Object SELECTION_START;
-  }
-
-  public interface SpanWatcher extends android.text.NoCopySpan {
-    method public void onSpanAdded(android.text.Spannable, Object, int, int);
-    method public void onSpanChanged(android.text.Spannable, Object, int, int, int, int);
-    method public void onSpanRemoved(android.text.Spannable, Object, int, int);
-  }
-
-  public interface Spannable extends android.text.Spanned {
-    method public void removeSpan(Object);
-    method public void setSpan(Object, int, int, int);
-  }
-
-  public static class Spannable.Factory {
-    ctor public Spannable.Factory();
-    method public static android.text.Spannable.Factory getInstance();
-    method public android.text.Spannable newSpannable(CharSequence);
-  }
-
-  public class SpannableString implements java.lang.CharSequence android.text.GetChars android.text.Spannable {
-    ctor public SpannableString(CharSequence);
-    method public final char charAt(int);
-    method public final void getChars(int, int, char[], int);
-    method public int getSpanEnd(Object);
-    method public int getSpanFlags(Object);
-    method public int getSpanStart(Object);
-    method public <T> T[] getSpans(int, int, Class<T>);
-    method public final int length();
-    method public int nextSpanTransition(int, int, Class);
-    method public void removeSpan(Object);
-    method public void setSpan(Object, int, int, int);
-    method public final CharSequence subSequence(int, int);
-    method public final String toString();
-    method public static android.text.SpannableString valueOf(CharSequence);
-  }
-
-  public class SpannableStringBuilder implements java.lang.Appendable java.lang.CharSequence android.text.Editable android.text.GetChars android.text.Spannable {
-    ctor public SpannableStringBuilder();
-    ctor public SpannableStringBuilder(CharSequence);
-    ctor public SpannableStringBuilder(CharSequence, int, int);
-    method public android.text.SpannableStringBuilder append(CharSequence);
-    method public android.text.SpannableStringBuilder append(CharSequence, Object, int);
-    method public android.text.SpannableStringBuilder append(CharSequence, int, int);
-    method public android.text.SpannableStringBuilder append(char);
-    method public char charAt(int);
-    method public void clear();
-    method public void clearSpans();
-    method public android.text.SpannableStringBuilder delete(int, int);
-    method public void getChars(int, int, char[], int);
-    method public android.text.InputFilter[] getFilters();
-    method public int getSpanEnd(Object);
-    method public int getSpanFlags(Object);
-    method public int getSpanStart(Object);
-    method public <T> T[] getSpans(int, int, @Nullable Class<T>);
-    method @Deprecated public int getTextRunCursor(int, int, int, int, int, android.graphics.Paint);
-    method public int getTextWatcherDepth();
-    method public android.text.SpannableStringBuilder insert(int, CharSequence, int, int);
-    method public android.text.SpannableStringBuilder insert(int, CharSequence);
-    method public int length();
-    method public int nextSpanTransition(int, int, Class);
-    method public void removeSpan(Object);
-    method public android.text.SpannableStringBuilder replace(int, int, CharSequence);
-    method public android.text.SpannableStringBuilder replace(int, int, CharSequence, int, int);
-    method public void setFilters(android.text.InputFilter[]);
-    method public void setSpan(Object, int, int, int);
-    method public CharSequence subSequence(int, int);
-    method public static android.text.SpannableStringBuilder valueOf(CharSequence);
-  }
-
-  public interface Spanned extends java.lang.CharSequence {
-    method public int getSpanEnd(Object);
-    method public int getSpanFlags(Object);
-    method public int getSpanStart(Object);
-    method public <T> T[] getSpans(int, int, Class<T>);
-    method public int nextSpanTransition(int, int, Class);
-    field public static final int SPAN_COMPOSING = 256; // 0x100
-    field public static final int SPAN_EXCLUSIVE_EXCLUSIVE = 33; // 0x21
-    field public static final int SPAN_EXCLUSIVE_INCLUSIVE = 34; // 0x22
-    field public static final int SPAN_INCLUSIVE_EXCLUSIVE = 17; // 0x11
-    field public static final int SPAN_INCLUSIVE_INCLUSIVE = 18; // 0x12
-    field public static final int SPAN_INTERMEDIATE = 512; // 0x200
-    field public static final int SPAN_MARK_MARK = 17; // 0x11
-    field public static final int SPAN_MARK_POINT = 18; // 0x12
-    field public static final int SPAN_PARAGRAPH = 51; // 0x33
-    field public static final int SPAN_POINT_MARK = 33; // 0x21
-    field public static final int SPAN_POINT_MARK_MASK = 51; // 0x33
-    field public static final int SPAN_POINT_POINT = 34; // 0x22
-    field public static final int SPAN_PRIORITY = 16711680; // 0xff0000
-    field public static final int SPAN_PRIORITY_SHIFT = 16; // 0x10
-    field public static final int SPAN_USER = -16777216; // 0xff000000
-    field public static final int SPAN_USER_SHIFT = 24; // 0x18
-  }
-
-  public final class SpannedString implements java.lang.CharSequence android.text.GetChars android.text.Spanned {
-    ctor public SpannedString(CharSequence);
-    method public final char charAt(int);
-    method public final void getChars(int, int, char[], int);
-    method public int getSpanEnd(Object);
-    method public int getSpanFlags(Object);
-    method public int getSpanStart(Object);
-    method public <T> T[] getSpans(int, int, Class<T>);
-    method public final int length();
-    method public int nextSpanTransition(int, int, Class);
-    method public CharSequence subSequence(int, int);
-    method public static android.text.SpannedString valueOf(CharSequence);
-  }
-
-  public class StaticLayout extends android.text.Layout {
-    ctor @Deprecated public StaticLayout(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, boolean);
-    ctor @Deprecated public StaticLayout(CharSequence, int, int, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, boolean);
-    ctor @Deprecated public StaticLayout(CharSequence, int, int, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, boolean, android.text.TextUtils.TruncateAt, int);
-    method public int getBottomPadding();
-    method public int getEllipsisCount(int);
-    method public int getEllipsisStart(int);
-    method public boolean getLineContainsTab(int);
-    method public int getLineCount();
-    method public int getLineDescent(int);
-    method public final android.text.Layout.Directions getLineDirections(int);
-    method public int getLineStart(int);
-    method public int getLineTop(int);
-    method public int getParagraphDirection(int);
-    method public int getTopPadding();
-  }
-
-  public static final class StaticLayout.Builder {
-    method @NonNull public android.text.StaticLayout build();
-    method @NonNull public static android.text.StaticLayout.Builder obtain(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @NonNull android.text.TextPaint, @IntRange(from=0) int);
-    method @NonNull public android.text.StaticLayout.Builder setAlignment(@NonNull android.text.Layout.Alignment);
-    method @NonNull public android.text.StaticLayout.Builder setBreakStrategy(int);
-    method @NonNull public android.text.StaticLayout.Builder setEllipsize(@Nullable android.text.TextUtils.TruncateAt);
-    method @NonNull public android.text.StaticLayout.Builder setEllipsizedWidth(@IntRange(from=0) int);
-    method @NonNull public android.text.StaticLayout.Builder setHyphenationFrequency(int);
-    method @NonNull public android.text.StaticLayout.Builder setIncludePad(boolean);
-    method @NonNull public android.text.StaticLayout.Builder setIndents(@Nullable int[], @Nullable int[]);
-    method @NonNull public android.text.StaticLayout.Builder setJustificationMode(int);
-    method @NonNull public android.text.StaticLayout.Builder setLineSpacing(float, @FloatRange(from=0.0) float);
-    method @NonNull public android.text.StaticLayout.Builder setMaxLines(@IntRange(from=0) int);
-    method public android.text.StaticLayout.Builder setText(CharSequence);
-    method @NonNull public android.text.StaticLayout.Builder setTextDirection(@NonNull android.text.TextDirectionHeuristic);
-    method @NonNull public android.text.StaticLayout.Builder setUseLineSpacingFromFallbacks(boolean);
-  }
-
-  public interface TextDirectionHeuristic {
-    method public boolean isRtl(char[], int, int);
-    method public boolean isRtl(CharSequence, int, int);
-  }
-
-  public class TextDirectionHeuristics {
-    ctor public TextDirectionHeuristics();
-    field public static final android.text.TextDirectionHeuristic ANYRTL_LTR;
-    field public static final android.text.TextDirectionHeuristic FIRSTSTRONG_LTR;
-    field public static final android.text.TextDirectionHeuristic FIRSTSTRONG_RTL;
-    field public static final android.text.TextDirectionHeuristic LOCALE;
-    field public static final android.text.TextDirectionHeuristic LTR;
-    field public static final android.text.TextDirectionHeuristic RTL;
-  }
-
-  public class TextPaint extends android.graphics.Paint {
-    ctor public TextPaint();
-    ctor public TextPaint(int);
-    ctor public TextPaint(android.graphics.Paint);
-    method public void set(android.text.TextPaint);
-    field public int baselineShift;
-    field @ColorInt public int bgColor;
-    field public float density;
-    field public int[] drawableState;
-    field @ColorInt public int linkColor;
-    field @ColorInt public int underlineColor;
-    field @Px public float underlineThickness;
-  }
-
-  public class TextUtils {
-    method @Deprecated public static CharSequence commaEllipsize(CharSequence, android.text.TextPaint, float, String, String);
-    method public static CharSequence concat(java.lang.CharSequence...);
-    method public static void copySpansFrom(android.text.Spanned, int, int, Class, android.text.Spannable, int);
-    method public static void dumpSpans(CharSequence, android.util.Printer, String);
-    method public static CharSequence ellipsize(CharSequence, android.text.TextPaint, float, android.text.TextUtils.TruncateAt);
-    method public static CharSequence ellipsize(CharSequence, android.text.TextPaint, float, android.text.TextUtils.TruncateAt, boolean, @Nullable android.text.TextUtils.EllipsizeCallback);
-    method public static boolean equals(CharSequence, CharSequence);
-    method public static CharSequence expandTemplate(CharSequence, java.lang.CharSequence...);
-    method public static int getCapsMode(CharSequence, int, int);
-    method public static void getChars(CharSequence, int, int, char[], int);
-    method public static int getLayoutDirectionFromLocale(java.util.Locale);
-    method public static int getOffsetAfter(CharSequence, int);
-    method public static int getOffsetBefore(CharSequence, int);
-    method @Deprecated public static CharSequence getReverse(CharSequence, int, int);
-    method public static int getTrimmedLength(CharSequence);
-    method public static String htmlEncode(String);
-    method public static int indexOf(CharSequence, char);
-    method public static int indexOf(CharSequence, char, int);
-    method public static int indexOf(CharSequence, char, int, int);
-    method public static int indexOf(CharSequence, CharSequence);
-    method public static int indexOf(CharSequence, CharSequence, int);
-    method public static int indexOf(CharSequence, CharSequence, int, int);
-    method public static boolean isDigitsOnly(CharSequence);
-    method public static boolean isEmpty(@Nullable CharSequence);
-    method public static boolean isGraphic(CharSequence);
-    method @Deprecated public static boolean isGraphic(char);
-    method public static String join(@NonNull CharSequence, @NonNull Object[]);
-    method public static String join(@NonNull CharSequence, @NonNull Iterable);
-    method public static int lastIndexOf(CharSequence, char);
-    method public static int lastIndexOf(CharSequence, char, int);
-    method public static int lastIndexOf(CharSequence, char, int, int);
-    method public static CharSequence listEllipsize(@Nullable android.content.Context, @Nullable java.util.List<java.lang.CharSequence>, @NonNull String, @NonNull android.text.TextPaint, @FloatRange(from=0.0, fromInclusive=false) float, @PluralsRes int);
-    method @NonNull public static CharSequence makeSafeForPresentation(@NonNull String, @IntRange(from=0) int, @FloatRange(from=0) float, int);
-    method public static boolean regionMatches(CharSequence, int, CharSequence, int, int);
-    method public static CharSequence replace(CharSequence, String[], CharSequence[]);
-    method public static String[] split(String, String);
-    method public static String[] split(String, java.util.regex.Pattern);
-    method public static CharSequence stringOrSpannedString(CharSequence);
-    method public static String substring(CharSequence, int, int);
-    method public static void writeToParcel(@Nullable CharSequence, @NonNull android.os.Parcel, int);
-    field public static final int CAP_MODE_CHARACTERS = 4096; // 0x1000
-    field public static final int CAP_MODE_SENTENCES = 16384; // 0x4000
-    field public static final int CAP_MODE_WORDS = 8192; // 0x2000
-    field public static final android.os.Parcelable.Creator<java.lang.CharSequence> CHAR_SEQUENCE_CREATOR;
-    field public static final int SAFE_STRING_FLAG_FIRST_LINE = 4; // 0x4
-    field public static final int SAFE_STRING_FLAG_SINGLE_LINE = 2; // 0x2
-    field public static final int SAFE_STRING_FLAG_TRIM = 1; // 0x1
-  }
-
-  public static interface TextUtils.EllipsizeCallback {
-    method public void ellipsized(int, int);
-  }
-
-  public static class TextUtils.SimpleStringSplitter implements java.util.Iterator<java.lang.String> android.text.TextUtils.StringSplitter {
-    ctor public TextUtils.SimpleStringSplitter(char);
-    method public boolean hasNext();
-    method public java.util.Iterator<java.lang.String> iterator();
-    method public String next();
-    method public void setString(String);
-  }
-
-  public static interface TextUtils.StringSplitter extends java.lang.Iterable<java.lang.String> {
-    method public void setString(String);
-  }
-
-  public enum TextUtils.TruncateAt {
-    enum_constant public static final android.text.TextUtils.TruncateAt END;
-    enum_constant public static final android.text.TextUtils.TruncateAt MARQUEE;
-    enum_constant public static final android.text.TextUtils.TruncateAt MIDDLE;
-    enum_constant public static final android.text.TextUtils.TruncateAt START;
-  }
-
-  public interface TextWatcher extends android.text.NoCopySpan {
-    method public void afterTextChanged(android.text.Editable);
-    method public void beforeTextChanged(CharSequence, int, int, int);
-    method public void onTextChanged(CharSequence, int, int, int);
-  }
-
-}
-
-package android.text.format {
-
-  public class DateFormat {
-    ctor public DateFormat();
-    method public static CharSequence format(CharSequence, long);
-    method public static CharSequence format(CharSequence, java.util.Date);
-    method public static CharSequence format(CharSequence, java.util.Calendar);
-    method public static String getBestDateTimePattern(java.util.Locale, String);
-    method public static java.text.DateFormat getDateFormat(android.content.Context);
-    method public static char[] getDateFormatOrder(android.content.Context);
-    method public static java.text.DateFormat getLongDateFormat(android.content.Context);
-    method public static java.text.DateFormat getMediumDateFormat(android.content.Context);
-    method public static java.text.DateFormat getTimeFormat(android.content.Context);
-    method public static boolean is24HourFormat(android.content.Context);
-  }
-
-  public class DateUtils {
-    ctor public DateUtils();
-    method public static String formatDateRange(android.content.Context, long, long, int);
-    method public static java.util.Formatter formatDateRange(android.content.Context, java.util.Formatter, long, long, int);
-    method public static java.util.Formatter formatDateRange(android.content.Context, java.util.Formatter, long, long, int, String);
-    method public static String formatDateTime(android.content.Context, long, int);
-    method public static String formatElapsedTime(long);
-    method public static String formatElapsedTime(StringBuilder, long);
-    method public static final CharSequence formatSameDayTime(long, long, int, int);
-    method @Deprecated public static String getAMPMString(int);
-    method @Deprecated public static String getDayOfWeekString(int, int);
-    method @Deprecated public static String getMonthString(int, int);
-    method public static CharSequence getRelativeDateTimeString(android.content.Context, long, long, long, int);
-    method public static CharSequence getRelativeTimeSpanString(long);
-    method public static CharSequence getRelativeTimeSpanString(long, long, long);
-    method public static CharSequence getRelativeTimeSpanString(long, long, long, int);
-    method public static CharSequence getRelativeTimeSpanString(android.content.Context, long, boolean);
-    method public static CharSequence getRelativeTimeSpanString(android.content.Context, long);
-    method public static boolean isToday(long);
-    field @Deprecated public static final String ABBREV_MONTH_FORMAT = "%b";
-    field public static final String ABBREV_WEEKDAY_FORMAT = "%a";
-    field public static final long DAY_IN_MILLIS = 86400000L; // 0x5265c00L
-    field @Deprecated public static final int FORMAT_12HOUR = 64; // 0x40
-    field @Deprecated public static final int FORMAT_24HOUR = 128; // 0x80
-    field public static final int FORMAT_ABBREV_ALL = 524288; // 0x80000
-    field public static final int FORMAT_ABBREV_MONTH = 65536; // 0x10000
-    field public static final int FORMAT_ABBREV_RELATIVE = 262144; // 0x40000
-    field public static final int FORMAT_ABBREV_TIME = 16384; // 0x4000
-    field public static final int FORMAT_ABBREV_WEEKDAY = 32768; // 0x8000
-    field @Deprecated public static final int FORMAT_CAP_AMPM = 256; // 0x100
-    field @Deprecated public static final int FORMAT_CAP_MIDNIGHT = 4096; // 0x1000
-    field @Deprecated public static final int FORMAT_CAP_NOON = 1024; // 0x400
-    field @Deprecated public static final int FORMAT_CAP_NOON_MIDNIGHT = 5120; // 0x1400
-    field public static final int FORMAT_NO_MIDNIGHT = 2048; // 0x800
-    field public static final int FORMAT_NO_MONTH_DAY = 32; // 0x20
-    field public static final int FORMAT_NO_NOON = 512; // 0x200
-    field @Deprecated public static final int FORMAT_NO_NOON_MIDNIGHT = 2560; // 0xa00
-    field public static final int FORMAT_NO_YEAR = 8; // 0x8
-    field public static final int FORMAT_NUMERIC_DATE = 131072; // 0x20000
-    field public static final int FORMAT_SHOW_DATE = 16; // 0x10
-    field public static final int FORMAT_SHOW_TIME = 1; // 0x1
-    field public static final int FORMAT_SHOW_WEEKDAY = 2; // 0x2
-    field public static final int FORMAT_SHOW_YEAR = 4; // 0x4
-    field @Deprecated public static final int FORMAT_UTC = 8192; // 0x2000
-    field public static final long HOUR_IN_MILLIS = 3600000L; // 0x36ee80L
-    field @Deprecated public static final String HOUR_MINUTE_24 = "%H:%M";
-    field @Deprecated public static final int LENGTH_LONG = 10; // 0xa
-    field @Deprecated public static final int LENGTH_MEDIUM = 20; // 0x14
-    field @Deprecated public static final int LENGTH_SHORT = 30; // 0x1e
-    field @Deprecated public static final int LENGTH_SHORTER = 40; // 0x28
-    field @Deprecated public static final int LENGTH_SHORTEST = 50; // 0x32
-    field public static final long MINUTE_IN_MILLIS = 60000L; // 0xea60L
-    field public static final String MONTH_DAY_FORMAT = "%-d";
-    field public static final String MONTH_FORMAT = "%B";
-    field public static final String NUMERIC_MONTH_FORMAT = "%m";
-    field public static final long SECOND_IN_MILLIS = 1000L; // 0x3e8L
-    field public static final String WEEKDAY_FORMAT = "%A";
-    field public static final long WEEK_IN_MILLIS = 604800000L; // 0x240c8400L
-    field public static final String YEAR_FORMAT = "%Y";
-    field public static final String YEAR_FORMAT_TWO_DIGITS = "%g";
-    field @Deprecated public static final long YEAR_IN_MILLIS = 31449600000L; // 0x7528ad000L
-    field @Deprecated public static final int[] sameMonthTable;
-    field @Deprecated public static final int[] sameYearTable;
-  }
-
-  public final class Formatter {
-    ctor public Formatter();
-    method public static String formatFileSize(@Nullable android.content.Context, long);
-    method @Deprecated public static String formatIpAddress(int);
-    method public static String formatShortFileSize(@Nullable android.content.Context, long);
-  }
-
-  @Deprecated public class Time {
-    ctor @Deprecated public Time(String);
-    ctor @Deprecated public Time();
-    ctor @Deprecated public Time(android.text.format.Time);
-    method @Deprecated public boolean after(android.text.format.Time);
-    method @Deprecated public boolean before(android.text.format.Time);
-    method @Deprecated public void clear(String);
-    method @Deprecated public static int compare(android.text.format.Time, android.text.format.Time);
-    method @Deprecated public String format(String);
-    method @Deprecated public String format2445();
-    method @Deprecated public String format3339(boolean);
-    method @Deprecated public int getActualMaximum(int);
-    method @Deprecated public static String getCurrentTimezone();
-    method @Deprecated public static int getJulianDay(long, long);
-    method @Deprecated public static int getJulianMondayFromWeeksSinceEpoch(int);
-    method @Deprecated public int getWeekNumber();
-    method @Deprecated public static int getWeeksSinceEpochFromJulianDay(int, int);
-    method @Deprecated public static boolean isEpoch(android.text.format.Time);
-    method @Deprecated public long normalize(boolean);
-    method @Deprecated public boolean parse(String);
-    method @Deprecated public boolean parse3339(String);
-    method @Deprecated public void set(long);
-    method @Deprecated public void set(android.text.format.Time);
-    method @Deprecated public void set(int, int, int, int, int, int);
-    method @Deprecated public void set(int, int, int);
-    method @Deprecated public long setJulianDay(int);
-    method @Deprecated public void setToNow();
-    method @Deprecated public void switchTimezone(String);
-    method @Deprecated public long toMillis(boolean);
-    field @Deprecated public static final int EPOCH_JULIAN_DAY = 2440588; // 0x253d8c
-    field @Deprecated public static final int FRIDAY = 5; // 0x5
-    field @Deprecated public static final int HOUR = 3; // 0x3
-    field @Deprecated public static final int MINUTE = 2; // 0x2
-    field @Deprecated public static final int MONDAY = 1; // 0x1
-    field @Deprecated public static final int MONDAY_BEFORE_JULIAN_EPOCH = 2440585; // 0x253d89
-    field @Deprecated public static final int MONTH = 5; // 0x5
-    field @Deprecated public static final int MONTH_DAY = 4; // 0x4
-    field @Deprecated public static final int SATURDAY = 6; // 0x6
-    field @Deprecated public static final int SECOND = 1; // 0x1
-    field @Deprecated public static final int SUNDAY = 0; // 0x0
-    field @Deprecated public static final int THURSDAY = 4; // 0x4
-    field @Deprecated public static final String TIMEZONE_UTC = "UTC";
-    field @Deprecated public static final int TUESDAY = 2; // 0x2
-    field @Deprecated public static final int WEDNESDAY = 3; // 0x3
-    field @Deprecated public static final int WEEK_DAY = 7; // 0x7
-    field @Deprecated public static final int WEEK_NUM = 9; // 0x9
-    field @Deprecated public static final int YEAR = 6; // 0x6
-    field @Deprecated public static final int YEAR_DAY = 8; // 0x8
-    field @Deprecated public boolean allDay;
-    field @Deprecated public long gmtoff;
-    field @Deprecated public int hour;
-    field @Deprecated public int isDst;
-    field @Deprecated public int minute;
-    field @Deprecated public int month;
-    field @Deprecated public int monthDay;
-    field @Deprecated public int second;
-    field @Deprecated public String timezone;
-    field @Deprecated public int weekDay;
-    field @Deprecated public int year;
-    field @Deprecated public int yearDay;
-  }
-
-}
-
-package android.text.method {
-
-  public class ArrowKeyMovementMethod extends android.text.method.BaseMovementMethod implements android.text.method.MovementMethod {
-    ctor public ArrowKeyMovementMethod();
-    method public static android.text.method.MovementMethod getInstance();
-  }
-
-  public abstract class BaseKeyListener extends android.text.method.MetaKeyKeyListener implements android.text.method.KeyListener {
-    ctor public BaseKeyListener();
-    method public boolean backspace(android.view.View, android.text.Editable, int, android.view.KeyEvent);
-    method public boolean forwardDelete(android.view.View, android.text.Editable, int, android.view.KeyEvent);
-    method public boolean onKeyOther(android.view.View, android.text.Editable, android.view.KeyEvent);
-  }
-
-  public class BaseMovementMethod implements android.text.method.MovementMethod {
-    ctor public BaseMovementMethod();
-    method protected boolean bottom(android.widget.TextView, android.text.Spannable);
-    method public boolean canSelectArbitrarily();
-    method protected boolean down(android.widget.TextView, android.text.Spannable);
-    method protected boolean end(android.widget.TextView, android.text.Spannable);
-    method protected int getMovementMetaState(android.text.Spannable, android.view.KeyEvent);
-    method protected boolean handleMovementKey(android.widget.TextView, android.text.Spannable, int, int, android.view.KeyEvent);
-    method protected boolean home(android.widget.TextView, android.text.Spannable);
-    method public void initialize(android.widget.TextView, android.text.Spannable);
-    method protected boolean left(android.widget.TextView, android.text.Spannable);
-    method protected boolean lineEnd(android.widget.TextView, android.text.Spannable);
-    method protected boolean lineStart(android.widget.TextView, android.text.Spannable);
-    method public boolean onGenericMotionEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
-    method public boolean onKeyDown(android.widget.TextView, android.text.Spannable, int, android.view.KeyEvent);
-    method public boolean onKeyOther(android.widget.TextView, android.text.Spannable, android.view.KeyEvent);
-    method public boolean onKeyUp(android.widget.TextView, android.text.Spannable, int, android.view.KeyEvent);
-    method public void onTakeFocus(android.widget.TextView, android.text.Spannable, int);
-    method public boolean onTouchEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
-    method public boolean onTrackballEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
-    method protected boolean pageDown(android.widget.TextView, android.text.Spannable);
-    method protected boolean pageUp(android.widget.TextView, android.text.Spannable);
-    method protected boolean right(android.widget.TextView, android.text.Spannable);
-    method protected boolean top(android.widget.TextView, android.text.Spannable);
-    method protected boolean up(android.widget.TextView, android.text.Spannable);
-  }
-
-  public class CharacterPickerDialog extends android.app.Dialog implements android.widget.AdapterView.OnItemClickListener android.view.View.OnClickListener {
-    ctor public CharacterPickerDialog(android.content.Context, android.view.View, android.text.Editable, String, boolean);
-    method public void onClick(android.view.View);
-    method public void onItemClick(android.widget.AdapterView, android.view.View, int, long);
-  }
-
-  public class DateKeyListener extends android.text.method.NumberKeyListener {
-    ctor @Deprecated public DateKeyListener();
-    ctor public DateKeyListener(@Nullable java.util.Locale);
-    method @NonNull protected char[] getAcceptedChars();
-    method public int getInputType();
-    method @Deprecated @NonNull public static android.text.method.DateKeyListener getInstance();
-    method @NonNull public static android.text.method.DateKeyListener getInstance(@Nullable java.util.Locale);
-    field @Deprecated public static final char[] CHARACTERS;
-  }
-
-  public class DateTimeKeyListener extends android.text.method.NumberKeyListener {
-    ctor @Deprecated public DateTimeKeyListener();
-    ctor public DateTimeKeyListener(@Nullable java.util.Locale);
-    method @NonNull protected char[] getAcceptedChars();
-    method public int getInputType();
-    method @Deprecated @NonNull public static android.text.method.DateTimeKeyListener getInstance();
-    method @NonNull public static android.text.method.DateTimeKeyListener getInstance(@Nullable java.util.Locale);
-    field @Deprecated public static final char[] CHARACTERS;
-  }
-
-  public class DialerKeyListener extends android.text.method.NumberKeyListener {
-    ctor public DialerKeyListener();
-    method protected char[] getAcceptedChars();
-    method public int getInputType();
-    method public static android.text.method.DialerKeyListener getInstance();
-    field public static final char[] CHARACTERS;
-  }
-
-  public class DigitsKeyListener extends android.text.method.NumberKeyListener {
-    ctor @Deprecated public DigitsKeyListener();
-    ctor @Deprecated public DigitsKeyListener(boolean, boolean);
-    ctor public DigitsKeyListener(@Nullable java.util.Locale);
-    ctor public DigitsKeyListener(@Nullable java.util.Locale, boolean, boolean);
-    method protected char[] getAcceptedChars();
-    method public int getInputType();
-    method @Deprecated @NonNull public static android.text.method.DigitsKeyListener getInstance();
-    method @Deprecated @NonNull public static android.text.method.DigitsKeyListener getInstance(boolean, boolean);
-    method @NonNull public static android.text.method.DigitsKeyListener getInstance(@Nullable java.util.Locale);
-    method @NonNull public static android.text.method.DigitsKeyListener getInstance(@Nullable java.util.Locale, boolean, boolean);
-    method @NonNull public static android.text.method.DigitsKeyListener getInstance(@NonNull String);
-  }
-
-  public class HideReturnsTransformationMethod extends android.text.method.ReplacementTransformationMethod {
-    ctor public HideReturnsTransformationMethod();
-    method public static android.text.method.HideReturnsTransformationMethod getInstance();
-    method protected char[] getOriginal();
-    method protected char[] getReplacement();
-  }
-
-  public interface KeyListener {
-    method public void clearMetaKeyState(android.view.View, android.text.Editable, int);
-    method public int getInputType();
-    method public boolean onKeyDown(android.view.View, android.text.Editable, int, android.view.KeyEvent);
-    method public boolean onKeyOther(android.view.View, android.text.Editable, android.view.KeyEvent);
-    method public boolean onKeyUp(android.view.View, android.text.Editable, int, android.view.KeyEvent);
-  }
-
-  public class LinkMovementMethod extends android.text.method.ScrollingMovementMethod {
-    ctor public LinkMovementMethod();
-    method public static android.text.method.MovementMethod getInstance();
-  }
-
-  public abstract class MetaKeyKeyListener {
-    ctor public MetaKeyKeyListener();
-    method public static void adjustMetaAfterKeypress(android.text.Spannable);
-    method public static long adjustMetaAfterKeypress(long);
-    method public void clearMetaKeyState(android.view.View, android.text.Editable, int);
-    method public static void clearMetaKeyState(android.text.Editable, int);
-    method public long clearMetaKeyState(long, int);
-    method public static final int getMetaState(CharSequence);
-    method public static final int getMetaState(CharSequence, android.view.KeyEvent);
-    method public static final int getMetaState(CharSequence, int);
-    method public static final int getMetaState(CharSequence, int, android.view.KeyEvent);
-    method public static final int getMetaState(long);
-    method public static final int getMetaState(long, int);
-    method public static long handleKeyDown(long, int, android.view.KeyEvent);
-    method public static long handleKeyUp(long, int, android.view.KeyEvent);
-    method public static boolean isMetaTracker(CharSequence, Object);
-    method public static boolean isSelectingMetaTracker(CharSequence, Object);
-    method public boolean onKeyDown(android.view.View, android.text.Editable, int, android.view.KeyEvent);
-    method public boolean onKeyUp(android.view.View, android.text.Editable, int, android.view.KeyEvent);
-    method protected static void resetLockedMeta(android.text.Spannable);
-    method public static long resetLockedMeta(long);
-    method public static void resetMetaState(android.text.Spannable);
-    field public static final int META_ALT_LOCKED = 512; // 0x200
-    field public static final int META_ALT_ON = 2; // 0x2
-    field public static final int META_CAP_LOCKED = 256; // 0x100
-    field public static final int META_SHIFT_ON = 1; // 0x1
-    field public static final int META_SYM_LOCKED = 1024; // 0x400
-    field public static final int META_SYM_ON = 4; // 0x4
-  }
-
-  public interface MovementMethod {
-    method public boolean canSelectArbitrarily();
-    method public void initialize(android.widget.TextView, android.text.Spannable);
-    method public boolean onGenericMotionEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
-    method public boolean onKeyDown(android.widget.TextView, android.text.Spannable, int, android.view.KeyEvent);
-    method public boolean onKeyOther(android.widget.TextView, android.text.Spannable, android.view.KeyEvent);
-    method public boolean onKeyUp(android.widget.TextView, android.text.Spannable, int, android.view.KeyEvent);
-    method public void onTakeFocus(android.widget.TextView, android.text.Spannable, int);
-    method public boolean onTouchEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
-    method public boolean onTrackballEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
-  }
-
-  public class MultiTapKeyListener extends android.text.method.BaseKeyListener implements android.text.SpanWatcher {
-    ctor public MultiTapKeyListener(android.text.method.TextKeyListener.Capitalize, boolean);
-    method public int getInputType();
-    method public static android.text.method.MultiTapKeyListener getInstance(boolean, android.text.method.TextKeyListener.Capitalize);
-    method public void onSpanAdded(android.text.Spannable, Object, int, int);
-    method public void onSpanChanged(android.text.Spannable, Object, int, int, int, int);
-    method public void onSpanRemoved(android.text.Spannable, Object, int, int);
-  }
-
-  public abstract class NumberKeyListener extends android.text.method.BaseKeyListener implements android.text.InputFilter {
-    ctor public NumberKeyListener();
-    method public CharSequence filter(CharSequence, int, int, android.text.Spanned, int, int);
-    method @NonNull protected abstract char[] getAcceptedChars();
-    method protected int lookup(android.view.KeyEvent, android.text.Spannable);
-    method protected static boolean ok(char[], char);
-  }
-
-  public class PasswordTransformationMethod implements android.text.TextWatcher android.text.method.TransformationMethod {
-    ctor public PasswordTransformationMethod();
-    method public void afterTextChanged(android.text.Editable);
-    method public void beforeTextChanged(CharSequence, int, int, int);
-    method public static android.text.method.PasswordTransformationMethod getInstance();
-    method public CharSequence getTransformation(CharSequence, android.view.View);
-    method public void onFocusChanged(android.view.View, CharSequence, boolean, int, android.graphics.Rect);
-    method public void onTextChanged(CharSequence, int, int, int);
-  }
-
-  public class QwertyKeyListener extends android.text.method.BaseKeyListener {
-    ctor public QwertyKeyListener(android.text.method.TextKeyListener.Capitalize, boolean);
-    method public int getInputType();
-    method public static android.text.method.QwertyKeyListener getInstance(boolean, android.text.method.TextKeyListener.Capitalize);
-    method public static android.text.method.QwertyKeyListener getInstanceForFullKeyboard();
-    method public static void markAsReplaced(android.text.Spannable, int, int, String);
-  }
-
-  public abstract class ReplacementTransformationMethod implements android.text.method.TransformationMethod {
-    ctor public ReplacementTransformationMethod();
-    method protected abstract char[] getOriginal();
-    method protected abstract char[] getReplacement();
-    method public CharSequence getTransformation(CharSequence, android.view.View);
-    method public void onFocusChanged(android.view.View, CharSequence, boolean, int, android.graphics.Rect);
-  }
-
-  public class ScrollingMovementMethod extends android.text.method.BaseMovementMethod implements android.text.method.MovementMethod {
-    ctor public ScrollingMovementMethod();
-    method public static android.text.method.MovementMethod getInstance();
-  }
-
-  public class SingleLineTransformationMethod extends android.text.method.ReplacementTransformationMethod {
-    ctor public SingleLineTransformationMethod();
-    method public static android.text.method.SingleLineTransformationMethod getInstance();
-    method protected char[] getOriginal();
-    method protected char[] getReplacement();
-  }
-
-  public class TextKeyListener extends android.text.method.BaseKeyListener implements android.text.SpanWatcher {
-    ctor public TextKeyListener(android.text.method.TextKeyListener.Capitalize, boolean);
-    method public static void clear(android.text.Editable);
-    method public int getInputType();
-    method public static android.text.method.TextKeyListener getInstance(boolean, android.text.method.TextKeyListener.Capitalize);
-    method public static android.text.method.TextKeyListener getInstance();
-    method public void onSpanAdded(android.text.Spannable, Object, int, int);
-    method public void onSpanChanged(android.text.Spannable, Object, int, int, int, int);
-    method public void onSpanRemoved(android.text.Spannable, Object, int, int);
-    method public void release();
-    method public static boolean shouldCap(android.text.method.TextKeyListener.Capitalize, CharSequence, int);
-  }
-
-  public enum TextKeyListener.Capitalize {
-    enum_constant public static final android.text.method.TextKeyListener.Capitalize CHARACTERS;
-    enum_constant public static final android.text.method.TextKeyListener.Capitalize NONE;
-    enum_constant public static final android.text.method.TextKeyListener.Capitalize SENTENCES;
-    enum_constant public static final android.text.method.TextKeyListener.Capitalize WORDS;
-  }
-
-  public class TimeKeyListener extends android.text.method.NumberKeyListener {
-    ctor @Deprecated public TimeKeyListener();
-    ctor public TimeKeyListener(@Nullable java.util.Locale);
-    method @NonNull protected char[] getAcceptedChars();
-    method public int getInputType();
-    method @Deprecated @NonNull public static android.text.method.TimeKeyListener getInstance();
-    method @NonNull public static android.text.method.TimeKeyListener getInstance(@Nullable java.util.Locale);
-    field @Deprecated public static final char[] CHARACTERS;
-  }
-
-  public class Touch {
-    method public static int getInitialScrollX(android.widget.TextView, android.text.Spannable);
-    method public static int getInitialScrollY(android.widget.TextView, android.text.Spannable);
-    method public static boolean onTouchEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
-    method public static void scrollTo(android.widget.TextView, android.text.Layout, int, int);
-  }
-
-  public interface TransformationMethod {
-    method public CharSequence getTransformation(CharSequence, android.view.View);
-    method public void onFocusChanged(android.view.View, CharSequence, boolean, int, android.graphics.Rect);
-  }
-
-}
-
-package android.text.style {
-
-  public class AbsoluteSizeSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
-    ctor public AbsoluteSizeSpan(int);
-    ctor public AbsoluteSizeSpan(int, boolean);
-    ctor public AbsoluteSizeSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public boolean getDip();
-    method public int getSize();
-    method public int getSpanTypeId();
-    method public void updateDrawState(@NonNull android.text.TextPaint);
-    method public void updateMeasureState(@NonNull android.text.TextPaint);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-  }
-
-  public interface AlignmentSpan extends android.text.style.ParagraphStyle {
-    method public android.text.Layout.Alignment getAlignment();
-  }
-
-  public static class AlignmentSpan.Standard implements android.text.style.AlignmentSpan android.text.ParcelableSpan {
-    ctor public AlignmentSpan.Standard(@NonNull android.text.Layout.Alignment);
-    ctor public AlignmentSpan.Standard(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public android.text.Layout.Alignment getAlignment();
-    method public int getSpanTypeId();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-  }
-
-  public class BackgroundColorSpan extends android.text.style.CharacterStyle implements android.text.ParcelableSpan android.text.style.UpdateAppearance {
-    ctor public BackgroundColorSpan(@ColorInt int);
-    ctor public BackgroundColorSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method @ColorInt public int getBackgroundColor();
-    method public int getSpanTypeId();
-    method public void updateDrawState(@NonNull android.text.TextPaint);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-  }
-
-  public class BulletSpan implements android.text.style.LeadingMarginSpan android.text.ParcelableSpan {
-    ctor public BulletSpan();
-    ctor public BulletSpan(int);
-    ctor public BulletSpan(int, @ColorInt int);
-    ctor public BulletSpan(int, @ColorInt int, @IntRange(from=0) int);
-    ctor public BulletSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public void drawLeadingMargin(@NonNull android.graphics.Canvas, @NonNull android.graphics.Paint, int, int, int, int, int, @NonNull CharSequence, int, int, boolean, @Nullable android.text.Layout);
-    method public int getBulletRadius();
-    method public int getColor();
-    method public int getGapWidth();
-    method public int getLeadingMargin(boolean);
-    method public int getSpanTypeId();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final int STANDARD_GAP_WIDTH = 2; // 0x2
-  }
-
-  public abstract class CharacterStyle {
-    ctor public CharacterStyle();
-    method public android.text.style.CharacterStyle getUnderlying();
-    method public abstract void updateDrawState(android.text.TextPaint);
-    method public static android.text.style.CharacterStyle wrap(android.text.style.CharacterStyle);
-  }
-
-  public abstract class ClickableSpan extends android.text.style.CharacterStyle implements android.text.style.UpdateAppearance {
-    ctor public ClickableSpan();
-    method public abstract void onClick(@NonNull android.view.View);
-    method public void updateDrawState(@NonNull android.text.TextPaint);
-  }
-
-  public class DrawableMarginSpan implements android.text.style.LeadingMarginSpan android.text.style.LineHeightSpan {
-    ctor public DrawableMarginSpan(@NonNull android.graphics.drawable.Drawable);
-    ctor public DrawableMarginSpan(@NonNull android.graphics.drawable.Drawable, int);
-    method public void chooseHeight(@NonNull CharSequence, int, int, int, int, @NonNull android.graphics.Paint.FontMetricsInt);
-    method public void drawLeadingMargin(@NonNull android.graphics.Canvas, @NonNull android.graphics.Paint, int, int, int, int, int, @NonNull CharSequence, int, int, boolean, @NonNull android.text.Layout);
-    method public int getLeadingMargin(boolean);
-  }
-
-  public abstract class DynamicDrawableSpan extends android.text.style.ReplacementSpan {
-    ctor public DynamicDrawableSpan();
-    ctor protected DynamicDrawableSpan(int);
-    method public void draw(@NonNull android.graphics.Canvas, CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, float, int, int, int, @NonNull android.graphics.Paint);
-    method public abstract android.graphics.drawable.Drawable getDrawable();
-    method public int getSize(@NonNull android.graphics.Paint, CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @Nullable android.graphics.Paint.FontMetricsInt);
-    method public int getVerticalAlignment();
-    field public static final int ALIGN_BASELINE = 1; // 0x1
-    field public static final int ALIGN_BOTTOM = 0; // 0x0
-    field public static final int ALIGN_CENTER = 2; // 0x2
-    field protected final int mVerticalAlignment;
-  }
-
-  public class EasyEditSpan implements android.text.ParcelableSpan {
-    ctor public EasyEditSpan();
-    ctor public EasyEditSpan(android.app.PendingIntent);
-    ctor public EasyEditSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public int getSpanTypeId();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final String EXTRA_TEXT_CHANGED_TYPE = "android.text.style.EXTRA_TEXT_CHANGED_TYPE";
-    field public static final int TEXT_DELETED = 1; // 0x1
-    field public static final int TEXT_MODIFIED = 2; // 0x2
-  }
-
-  public class ForegroundColorSpan extends android.text.style.CharacterStyle implements android.text.ParcelableSpan android.text.style.UpdateAppearance {
-    ctor public ForegroundColorSpan(@ColorInt int);
-    ctor public ForegroundColorSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method @ColorInt public int getForegroundColor();
-    method public int getSpanTypeId();
-    method public void updateDrawState(@NonNull android.text.TextPaint);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-  }
-
-  public class IconMarginSpan implements android.text.style.LeadingMarginSpan android.text.style.LineHeightSpan {
-    ctor public IconMarginSpan(@NonNull android.graphics.Bitmap);
-    ctor public IconMarginSpan(@NonNull android.graphics.Bitmap, @IntRange(from=0) int);
-    method public void chooseHeight(CharSequence, int, int, int, int, android.graphics.Paint.FontMetricsInt);
-    method public void drawLeadingMargin(android.graphics.Canvas, android.graphics.Paint, int, int, int, int, int, CharSequence, int, int, boolean, android.text.Layout);
-    method public int getLeadingMargin(boolean);
-  }
-
-  public class ImageSpan extends android.text.style.DynamicDrawableSpan {
-    ctor @Deprecated public ImageSpan(@NonNull android.graphics.Bitmap);
-    ctor @Deprecated public ImageSpan(@NonNull android.graphics.Bitmap, int);
-    ctor public ImageSpan(@NonNull android.content.Context, @NonNull android.graphics.Bitmap);
-    ctor public ImageSpan(@NonNull android.content.Context, @NonNull android.graphics.Bitmap, int);
-    ctor public ImageSpan(@NonNull android.graphics.drawable.Drawable);
-    ctor public ImageSpan(@NonNull android.graphics.drawable.Drawable, int);
-    ctor public ImageSpan(@NonNull android.graphics.drawable.Drawable, @NonNull String);
-    ctor public ImageSpan(@NonNull android.graphics.drawable.Drawable, @NonNull String, int);
-    ctor public ImageSpan(@NonNull android.content.Context, @NonNull android.net.Uri);
-    ctor public ImageSpan(@NonNull android.content.Context, @NonNull android.net.Uri, int);
-    ctor public ImageSpan(@NonNull android.content.Context, @DrawableRes int);
-    ctor public ImageSpan(@NonNull android.content.Context, @DrawableRes int, int);
-    method public android.graphics.drawable.Drawable getDrawable();
-    method @Nullable public String getSource();
-  }
-
-  public interface LeadingMarginSpan extends android.text.style.ParagraphStyle {
-    method public void drawLeadingMargin(android.graphics.Canvas, android.graphics.Paint, int, int, int, int, int, CharSequence, int, int, boolean, android.text.Layout);
-    method public int getLeadingMargin(boolean);
-  }
-
-  public static interface LeadingMarginSpan.LeadingMarginSpan2 extends android.text.style.LeadingMarginSpan android.text.style.WrapTogetherSpan {
-    method public int getLeadingMarginLineCount();
-  }
-
-  public static class LeadingMarginSpan.Standard implements android.text.style.LeadingMarginSpan android.text.ParcelableSpan {
-    ctor public LeadingMarginSpan.Standard(int, int);
-    ctor public LeadingMarginSpan.Standard(int);
-    ctor public LeadingMarginSpan.Standard(android.os.Parcel);
-    method public int describeContents();
-    method public void drawLeadingMargin(android.graphics.Canvas, android.graphics.Paint, int, int, int, int, int, CharSequence, int, int, boolean, android.text.Layout);
-    method public int getLeadingMargin(boolean);
-    method public int getSpanTypeId();
-    method public void writeToParcel(android.os.Parcel, int);
-  }
-
-  public interface LineBackgroundSpan extends android.text.style.ParagraphStyle {
-    method public void drawBackground(@NonNull android.graphics.Canvas, @NonNull android.graphics.Paint, @Px int, @Px int, @Px int, @Px int, @Px int, @NonNull CharSequence, int, int, int);
-  }
-
-  public static class LineBackgroundSpan.Standard implements android.text.style.LineBackgroundSpan android.text.ParcelableSpan {
-    ctor public LineBackgroundSpan.Standard(@ColorInt int);
-    ctor public LineBackgroundSpan.Standard(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public void drawBackground(@NonNull android.graphics.Canvas, @NonNull android.graphics.Paint, @Px int, @Px int, @Px int, @Px int, @Px int, @NonNull CharSequence, int, int, int);
-    method @ColorInt public final int getColor();
-    method public int getSpanTypeId();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-  }
-
-  public interface LineHeightSpan extends android.text.style.ParagraphStyle android.text.style.WrapTogetherSpan {
-    method public void chooseHeight(CharSequence, int, int, int, int, android.graphics.Paint.FontMetricsInt);
-  }
-
-  public static class LineHeightSpan.Standard implements android.text.style.LineHeightSpan android.text.ParcelableSpan {
-    ctor public LineHeightSpan.Standard(@IntRange(from=1) @Px int);
-    ctor public LineHeightSpan.Standard(@NonNull android.os.Parcel);
-    method public void chooseHeight(@NonNull CharSequence, int, int, int, int, @NonNull android.graphics.Paint.FontMetricsInt);
-    method public int describeContents();
-    method @Px public int getHeight();
-    method public int getSpanTypeId();
-    method public void writeToParcel(android.os.Parcel, int);
-  }
-
-  public static interface LineHeightSpan.WithDensity extends android.text.style.LineHeightSpan {
-    method public void chooseHeight(CharSequence, int, int, int, int, android.graphics.Paint.FontMetricsInt, android.text.TextPaint);
-  }
-
-  public class LocaleSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
-    ctor public LocaleSpan(@Nullable java.util.Locale);
-    ctor public LocaleSpan(@NonNull android.os.LocaleList);
-    ctor public LocaleSpan(android.os.Parcel);
-    method public int describeContents();
-    method @Nullable public java.util.Locale getLocale();
-    method @NonNull public android.os.LocaleList getLocales();
-    method public int getSpanTypeId();
-    method public void updateDrawState(android.text.TextPaint);
-    method public void updateMeasureState(android.text.TextPaint);
-    method public void writeToParcel(android.os.Parcel, int);
-  }
-
-  public class MaskFilterSpan extends android.text.style.CharacterStyle implements android.text.style.UpdateAppearance {
-    ctor public MaskFilterSpan(android.graphics.MaskFilter);
-    method public android.graphics.MaskFilter getMaskFilter();
-    method public void updateDrawState(android.text.TextPaint);
-  }
-
-  public abstract class MetricAffectingSpan extends android.text.style.CharacterStyle implements android.text.style.UpdateLayout {
-    ctor public MetricAffectingSpan();
-    method public android.text.style.MetricAffectingSpan getUnderlying();
-    method public abstract void updateMeasureState(@NonNull android.text.TextPaint);
-  }
-
-  public interface ParagraphStyle {
-  }
-
-  public class QuoteSpan implements android.text.style.LeadingMarginSpan android.text.ParcelableSpan {
-    ctor public QuoteSpan();
-    ctor public QuoteSpan(@ColorInt int);
-    ctor public QuoteSpan(@ColorInt int, @IntRange(from=0) int, @IntRange(from=0) int);
-    ctor public QuoteSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public void drawLeadingMargin(@NonNull android.graphics.Canvas, @NonNull android.graphics.Paint, int, int, int, int, int, @NonNull CharSequence, int, int, boolean, @NonNull android.text.Layout);
-    method @ColorInt public int getColor();
-    method public int getGapWidth();
-    method public int getLeadingMargin(boolean);
-    method public int getSpanTypeId();
-    method public int getStripeWidth();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @ColorInt public static final int STANDARD_COLOR = -16776961; // 0xff0000ff
-    field public static final int STANDARD_GAP_WIDTH_PX = 2; // 0x2
-    field public static final int STANDARD_STRIPE_WIDTH_PX = 2; // 0x2
-  }
-
-  public class RelativeSizeSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
-    ctor public RelativeSizeSpan(@FloatRange(from=0) float);
-    ctor public RelativeSizeSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public float getSizeChange();
-    method public int getSpanTypeId();
-    method public void updateDrawState(@NonNull android.text.TextPaint);
-    method public void updateMeasureState(@NonNull android.text.TextPaint);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-  }
-
-  public abstract class ReplacementSpan extends android.text.style.MetricAffectingSpan {
-    ctor public ReplacementSpan();
-    method public abstract void draw(@NonNull android.graphics.Canvas, CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, float, int, int, int, @NonNull android.graphics.Paint);
-    method @Nullable public CharSequence getContentDescription();
-    method public abstract int getSize(@NonNull android.graphics.Paint, CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @Nullable android.graphics.Paint.FontMetricsInt);
-    method public void setContentDescription(@Nullable CharSequence);
-    method public void updateDrawState(android.text.TextPaint);
-    method public void updateMeasureState(android.text.TextPaint);
-  }
-
-  public class ScaleXSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
-    ctor public ScaleXSpan(@FloatRange(from=0) float);
-    ctor public ScaleXSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public float getScaleX();
-    method public int getSpanTypeId();
-    method public void updateDrawState(android.text.TextPaint);
-    method public void updateMeasureState(android.text.TextPaint);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-  }
-
-  public class StrikethroughSpan extends android.text.style.CharacterStyle implements android.text.ParcelableSpan android.text.style.UpdateAppearance {
-    ctor public StrikethroughSpan();
-    ctor public StrikethroughSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public int getSpanTypeId();
-    method public void updateDrawState(@NonNull android.text.TextPaint);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-  }
-
-  public class StyleSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
-    ctor public StyleSpan(int);
-    ctor public StyleSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public int getSpanTypeId();
-    method public int getStyle();
-    method public void updateDrawState(android.text.TextPaint);
-    method public void updateMeasureState(android.text.TextPaint);
-    method public void writeToParcel(android.os.Parcel, int);
-  }
-
-  public class SubscriptSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
-    ctor public SubscriptSpan();
-    ctor public SubscriptSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public int getSpanTypeId();
-    method public void updateDrawState(@NonNull android.text.TextPaint);
-    method public void updateMeasureState(@NonNull android.text.TextPaint);
-    method public void writeToParcel(android.os.Parcel, int);
-  }
-
-  public class SuggestionSpan extends android.text.style.CharacterStyle implements android.text.ParcelableSpan {
-    ctor public SuggestionSpan(android.content.Context, String[], int);
-    ctor public SuggestionSpan(java.util.Locale, String[], int);
-    ctor public SuggestionSpan(android.content.Context, java.util.Locale, String[], int, Class<?>);
-    ctor public SuggestionSpan(android.os.Parcel);
-    method public int describeContents();
-    method public int getFlags();
-    method @Deprecated @NonNull public String getLocale();
-    method @Nullable public java.util.Locale getLocaleObject();
-    method public int getSpanTypeId();
-    method public String[] getSuggestions();
-    method @ColorInt public int getUnderlineColor();
-    method public void setFlags(int);
-    method public void updateDrawState(android.text.TextPaint);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated public static final String ACTION_SUGGESTION_PICKED = "android.text.style.SUGGESTION_PICKED";
-    field @NonNull public static final android.os.Parcelable.Creator<android.text.style.SuggestionSpan> CREATOR;
-    field public static final int FLAG_AUTO_CORRECTION = 4; // 0x4
-    field public static final int FLAG_EASY_CORRECT = 1; // 0x1
-    field public static final int FLAG_MISSPELLED = 2; // 0x2
-    field public static final int SUGGESTIONS_MAX_SIZE = 5; // 0x5
-    field @Deprecated public static final String SUGGESTION_SPAN_PICKED_AFTER = "after";
-    field @Deprecated public static final String SUGGESTION_SPAN_PICKED_BEFORE = "before";
-    field @Deprecated public static final String SUGGESTION_SPAN_PICKED_HASHCODE = "hashcode";
-  }
-
-  public class SuperscriptSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
-    ctor public SuperscriptSpan();
-    ctor public SuperscriptSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public int getSpanTypeId();
-    method public void updateDrawState(@NonNull android.text.TextPaint);
-    method public void updateMeasureState(@NonNull android.text.TextPaint);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-  }
-
-  public interface TabStopSpan extends android.text.style.ParagraphStyle {
-    method public int getTabStop();
-  }
-
-  public static class TabStopSpan.Standard implements android.text.style.TabStopSpan {
-    ctor public TabStopSpan.Standard(@IntRange(from=0) int);
-    method public int getTabStop();
-  }
-
-  public class TextAppearanceSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
-    ctor public TextAppearanceSpan(android.content.Context, int);
-    ctor public TextAppearanceSpan(android.content.Context, int, int);
-    ctor public TextAppearanceSpan(String, int, int, android.content.res.ColorStateList, android.content.res.ColorStateList);
-    ctor public TextAppearanceSpan(android.os.Parcel);
-    method public int describeContents();
-    method public String getFamily();
-    method @Nullable public String getFontFeatureSettings();
-    method @Nullable public String getFontVariationSettings();
-    method public android.content.res.ColorStateList getLinkTextColor();
-    method public int getShadowColor();
-    method public float getShadowDx();
-    method public float getShadowDy();
-    method public float getShadowRadius();
-    method public int getSpanTypeId();
-    method public android.content.res.ColorStateList getTextColor();
-    method public int getTextFontWeight();
-    method @Nullable public android.os.LocaleList getTextLocales();
-    method public int getTextSize();
-    method public int getTextStyle();
-    method @Nullable public android.graphics.Typeface getTypeface();
-    method public boolean isElegantTextHeight();
-    method public void updateDrawState(android.text.TextPaint);
-    method public void updateMeasureState(android.text.TextPaint);
-    method public void writeToParcel(android.os.Parcel, int);
-  }
-
-  public class TtsSpan implements android.text.ParcelableSpan {
-    ctor public TtsSpan(String, android.os.PersistableBundle);
-    ctor public TtsSpan(android.os.Parcel);
-    method public int describeContents();
-    method public android.os.PersistableBundle getArgs();
-    method public int getSpanTypeId();
-    method public String getType();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final String ANIMACY_ANIMATE = "android.animate";
-    field public static final String ANIMACY_INANIMATE = "android.inanimate";
-    field public static final String ARG_ANIMACY = "android.arg.animacy";
-    field public static final String ARG_CASE = "android.arg.case";
-    field public static final String ARG_COUNTRY_CODE = "android.arg.country_code";
-    field public static final String ARG_CURRENCY = "android.arg.money";
-    field public static final String ARG_DAY = "android.arg.day";
-    field public static final String ARG_DENOMINATOR = "android.arg.denominator";
-    field public static final String ARG_DIGITS = "android.arg.digits";
-    field public static final String ARG_DOMAIN = "android.arg.domain";
-    field public static final String ARG_EXTENSION = "android.arg.extension";
-    field public static final String ARG_FRACTIONAL_PART = "android.arg.fractional_part";
-    field public static final String ARG_FRAGMENT_ID = "android.arg.fragment_id";
-    field public static final String ARG_GENDER = "android.arg.gender";
-    field public static final String ARG_HOURS = "android.arg.hours";
-    field public static final String ARG_INTEGER_PART = "android.arg.integer_part";
-    field public static final String ARG_MINUTES = "android.arg.minutes";
-    field public static final String ARG_MONTH = "android.arg.month";
-    field public static final String ARG_MULTIPLICITY = "android.arg.multiplicity";
-    field public static final String ARG_NUMBER = "android.arg.number";
-    field public static final String ARG_NUMBER_PARTS = "android.arg.number_parts";
-    field public static final String ARG_NUMERATOR = "android.arg.numerator";
-    field public static final String ARG_PASSWORD = "android.arg.password";
-    field public static final String ARG_PATH = "android.arg.path";
-    field public static final String ARG_PORT = "android.arg.port";
-    field public static final String ARG_PROTOCOL = "android.arg.protocol";
-    field public static final String ARG_QUANTITY = "android.arg.quantity";
-    field public static final String ARG_QUERY_STRING = "android.arg.query_string";
-    field public static final String ARG_TEXT = "android.arg.text";
-    field public static final String ARG_UNIT = "android.arg.unit";
-    field public static final String ARG_USERNAME = "android.arg.username";
-    field public static final String ARG_VERBATIM = "android.arg.verbatim";
-    field public static final String ARG_WEEKDAY = "android.arg.weekday";
-    field public static final String ARG_YEAR = "android.arg.year";
-    field public static final String CASE_ABLATIVE = "android.ablative";
-    field public static final String CASE_ACCUSATIVE = "android.accusative";
-    field public static final String CASE_DATIVE = "android.dative";
-    field public static final String CASE_GENITIVE = "android.genitive";
-    field public static final String CASE_INSTRUMENTAL = "android.instrumental";
-    field public static final String CASE_LOCATIVE = "android.locative";
-    field public static final String CASE_NOMINATIVE = "android.nominative";
-    field public static final String CASE_VOCATIVE = "android.vocative";
-    field public static final String GENDER_FEMALE = "android.female";
-    field public static final String GENDER_MALE = "android.male";
-    field public static final String GENDER_NEUTRAL = "android.neutral";
-    field public static final int MONTH_APRIL = 3; // 0x3
-    field public static final int MONTH_AUGUST = 7; // 0x7
-    field public static final int MONTH_DECEMBER = 11; // 0xb
-    field public static final int MONTH_FEBRUARY = 1; // 0x1
-    field public static final int MONTH_JANUARY = 0; // 0x0
-    field public static final int MONTH_JULY = 6; // 0x6
-    field public static final int MONTH_JUNE = 5; // 0x5
-    field public static final int MONTH_MARCH = 2; // 0x2
-    field public static final int MONTH_MAY = 4; // 0x4
-    field public static final int MONTH_NOVEMBER = 10; // 0xa
-    field public static final int MONTH_OCTOBER = 9; // 0x9
-    field public static final int MONTH_SEPTEMBER = 8; // 0x8
-    field public static final String MULTIPLICITY_DUAL = "android.dual";
-    field public static final String MULTIPLICITY_PLURAL = "android.plural";
-    field public static final String MULTIPLICITY_SINGLE = "android.single";
-    field public static final String TYPE_CARDINAL = "android.type.cardinal";
-    field public static final String TYPE_DATE = "android.type.date";
-    field public static final String TYPE_DECIMAL = "android.type.decimal";
-    field public static final String TYPE_DIGITS = "android.type.digits";
-    field public static final String TYPE_ELECTRONIC = "android.type.electronic";
-    field public static final String TYPE_FRACTION = "android.type.fraction";
-    field public static final String TYPE_MEASURE = "android.type.measure";
-    field public static final String TYPE_MONEY = "android.type.money";
-    field public static final String TYPE_ORDINAL = "android.type.ordinal";
-    field public static final String TYPE_TELEPHONE = "android.type.telephone";
-    field public static final String TYPE_TEXT = "android.type.text";
-    field public static final String TYPE_TIME = "android.type.time";
-    field public static final String TYPE_VERBATIM = "android.type.verbatim";
-    field public static final int WEEKDAY_FRIDAY = 6; // 0x6
-    field public static final int WEEKDAY_MONDAY = 2; // 0x2
-    field public static final int WEEKDAY_SATURDAY = 7; // 0x7
-    field public static final int WEEKDAY_SUNDAY = 1; // 0x1
-    field public static final int WEEKDAY_THURSDAY = 5; // 0x5
-    field public static final int WEEKDAY_TUESDAY = 3; // 0x3
-    field public static final int WEEKDAY_WEDNESDAY = 4; // 0x4
-  }
-
-  public static class TtsSpan.Builder<C extends android.text.style.TtsSpan.Builder<?>> {
-    ctor public TtsSpan.Builder(String);
-    method public android.text.style.TtsSpan build();
-    method public C setIntArgument(String, int);
-    method public C setLongArgument(String, long);
-    method public C setStringArgument(String, String);
-  }
-
-  public static class TtsSpan.CardinalBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.CardinalBuilder> {
-    ctor public TtsSpan.CardinalBuilder();
-    ctor public TtsSpan.CardinalBuilder(long);
-    ctor public TtsSpan.CardinalBuilder(String);
-    method public android.text.style.TtsSpan.CardinalBuilder setNumber(long);
-    method public android.text.style.TtsSpan.CardinalBuilder setNumber(String);
-  }
-
-  public static class TtsSpan.DateBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.DateBuilder> {
-    ctor public TtsSpan.DateBuilder();
-    ctor public TtsSpan.DateBuilder(Integer, Integer, Integer, Integer);
-    method public android.text.style.TtsSpan.DateBuilder setDay(int);
-    method public android.text.style.TtsSpan.DateBuilder setMonth(int);
-    method public android.text.style.TtsSpan.DateBuilder setWeekday(int);
-    method public android.text.style.TtsSpan.DateBuilder setYear(int);
-  }
-
-  public static class TtsSpan.DecimalBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.DecimalBuilder> {
-    ctor public TtsSpan.DecimalBuilder();
-    ctor public TtsSpan.DecimalBuilder(double, int, int);
-    ctor public TtsSpan.DecimalBuilder(String, String);
-    method public android.text.style.TtsSpan.DecimalBuilder setArgumentsFromDouble(double, int, int);
-    method public android.text.style.TtsSpan.DecimalBuilder setFractionalPart(String);
-    method public android.text.style.TtsSpan.DecimalBuilder setIntegerPart(long);
-    method public android.text.style.TtsSpan.DecimalBuilder setIntegerPart(String);
-  }
-
-  public static class TtsSpan.DigitsBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.DigitsBuilder> {
-    ctor public TtsSpan.DigitsBuilder();
-    ctor public TtsSpan.DigitsBuilder(String);
-    method public android.text.style.TtsSpan.DigitsBuilder setDigits(String);
-  }
-
-  public static class TtsSpan.ElectronicBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.ElectronicBuilder> {
-    ctor public TtsSpan.ElectronicBuilder();
-    method public android.text.style.TtsSpan.ElectronicBuilder setDomain(String);
-    method public android.text.style.TtsSpan.ElectronicBuilder setEmailArguments(String, String);
-    method public android.text.style.TtsSpan.ElectronicBuilder setFragmentId(String);
-    method public android.text.style.TtsSpan.ElectronicBuilder setPassword(String);
-    method public android.text.style.TtsSpan.ElectronicBuilder setPath(String);
-    method public android.text.style.TtsSpan.ElectronicBuilder setPort(int);
-    method public android.text.style.TtsSpan.ElectronicBuilder setProtocol(String);
-    method public android.text.style.TtsSpan.ElectronicBuilder setQueryString(String);
-    method public android.text.style.TtsSpan.ElectronicBuilder setUsername(String);
-  }
-
-  public static class TtsSpan.FractionBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.FractionBuilder> {
-    ctor public TtsSpan.FractionBuilder();
-    ctor public TtsSpan.FractionBuilder(long, long, long);
-    method public android.text.style.TtsSpan.FractionBuilder setDenominator(long);
-    method public android.text.style.TtsSpan.FractionBuilder setDenominator(String);
-    method public android.text.style.TtsSpan.FractionBuilder setIntegerPart(long);
-    method public android.text.style.TtsSpan.FractionBuilder setIntegerPart(String);
-    method public android.text.style.TtsSpan.FractionBuilder setNumerator(long);
-    method public android.text.style.TtsSpan.FractionBuilder setNumerator(String);
-  }
-
-  public static class TtsSpan.MeasureBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.MeasureBuilder> {
-    ctor public TtsSpan.MeasureBuilder();
-    method public android.text.style.TtsSpan.MeasureBuilder setDenominator(long);
-    method public android.text.style.TtsSpan.MeasureBuilder setDenominator(String);
-    method public android.text.style.TtsSpan.MeasureBuilder setFractionalPart(String);
-    method public android.text.style.TtsSpan.MeasureBuilder setIntegerPart(long);
-    method public android.text.style.TtsSpan.MeasureBuilder setIntegerPart(String);
-    method public android.text.style.TtsSpan.MeasureBuilder setNumber(long);
-    method public android.text.style.TtsSpan.MeasureBuilder setNumber(String);
-    method public android.text.style.TtsSpan.MeasureBuilder setNumerator(long);
-    method public android.text.style.TtsSpan.MeasureBuilder setNumerator(String);
-    method public android.text.style.TtsSpan.MeasureBuilder setUnit(String);
-  }
-
-  public static class TtsSpan.MoneyBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.MoneyBuilder> {
-    ctor public TtsSpan.MoneyBuilder();
-    method public android.text.style.TtsSpan.MoneyBuilder setCurrency(String);
-    method public android.text.style.TtsSpan.MoneyBuilder setFractionalPart(String);
-    method public android.text.style.TtsSpan.MoneyBuilder setIntegerPart(long);
-    method public android.text.style.TtsSpan.MoneyBuilder setIntegerPart(String);
-    method public android.text.style.TtsSpan.MoneyBuilder setQuantity(String);
-  }
-
-  public static class TtsSpan.OrdinalBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.OrdinalBuilder> {
-    ctor public TtsSpan.OrdinalBuilder();
-    ctor public TtsSpan.OrdinalBuilder(long);
-    ctor public TtsSpan.OrdinalBuilder(String);
-    method public android.text.style.TtsSpan.OrdinalBuilder setNumber(long);
-    method public android.text.style.TtsSpan.OrdinalBuilder setNumber(String);
-  }
-
-  public static class TtsSpan.SemioticClassBuilder<C extends android.text.style.TtsSpan.SemioticClassBuilder<?>> extends android.text.style.TtsSpan.Builder<C> {
-    ctor public TtsSpan.SemioticClassBuilder(String);
-    method public C setAnimacy(String);
-    method public C setCase(String);
-    method public C setGender(String);
-    method public C setMultiplicity(String);
-  }
-
-  public static class TtsSpan.TelephoneBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.TelephoneBuilder> {
-    ctor public TtsSpan.TelephoneBuilder();
-    ctor public TtsSpan.TelephoneBuilder(String);
-    method public android.text.style.TtsSpan.TelephoneBuilder setCountryCode(String);
-    method public android.text.style.TtsSpan.TelephoneBuilder setExtension(String);
-    method public android.text.style.TtsSpan.TelephoneBuilder setNumberParts(String);
-  }
-
-  public static class TtsSpan.TextBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.TextBuilder> {
-    ctor public TtsSpan.TextBuilder();
-    ctor public TtsSpan.TextBuilder(String);
-    method public android.text.style.TtsSpan.TextBuilder setText(String);
-  }
-
-  public static class TtsSpan.TimeBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.TimeBuilder> {
-    ctor public TtsSpan.TimeBuilder();
-    ctor public TtsSpan.TimeBuilder(int, int);
-    method public android.text.style.TtsSpan.TimeBuilder setHours(int);
-    method public android.text.style.TtsSpan.TimeBuilder setMinutes(int);
-  }
-
-  public static class TtsSpan.VerbatimBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.VerbatimBuilder> {
-    ctor public TtsSpan.VerbatimBuilder();
-    ctor public TtsSpan.VerbatimBuilder(String);
-    method public android.text.style.TtsSpan.VerbatimBuilder setVerbatim(String);
-  }
-
-  public class TypefaceSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
-    ctor public TypefaceSpan(@Nullable String);
-    ctor public TypefaceSpan(@NonNull android.graphics.Typeface);
-    ctor public TypefaceSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method @Nullable public String getFamily();
-    method public int getSpanTypeId();
-    method @Nullable public android.graphics.Typeface getTypeface();
-    method public void updateDrawState(@NonNull android.text.TextPaint);
-    method public void updateMeasureState(@NonNull android.text.TextPaint);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-  }
-
-  public class URLSpan extends android.text.style.ClickableSpan implements android.text.ParcelableSpan {
-    ctor public URLSpan(String);
-    ctor public URLSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public int getSpanTypeId();
-    method public String getURL();
-    method public void onClick(android.view.View);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-  }
-
-  public class UnderlineSpan extends android.text.style.CharacterStyle implements android.text.ParcelableSpan android.text.style.UpdateAppearance {
-    ctor public UnderlineSpan();
-    ctor public UnderlineSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public int getSpanTypeId();
-    method public void updateDrawState(@NonNull android.text.TextPaint);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-  }
-
-  public interface UpdateAppearance {
-  }
-
-  public interface UpdateLayout extends android.text.style.UpdateAppearance {
-  }
-
-  public interface WrapTogetherSpan extends android.text.style.ParagraphStyle {
-  }
-
-}
-
-package android.text.util {
-
-  public class Linkify {
-    ctor public Linkify();
-    method public static final boolean addLinks(@NonNull android.text.Spannable, int);
-    method public static final boolean addLinks(@NonNull android.text.Spannable, int, @Nullable java.util.function.Function<java.lang.String,android.text.style.URLSpan>);
-    method public static final boolean addLinks(@NonNull android.widget.TextView, int);
-    method public static final void addLinks(@NonNull android.widget.TextView, @NonNull java.util.regex.Pattern, @Nullable String);
-    method public static final void addLinks(@NonNull android.widget.TextView, @NonNull java.util.regex.Pattern, @Nullable String, @Nullable android.text.util.Linkify.MatchFilter, @Nullable android.text.util.Linkify.TransformFilter);
-    method public static final void addLinks(@NonNull android.widget.TextView, @NonNull java.util.regex.Pattern, @Nullable String, @Nullable String[], @Nullable android.text.util.Linkify.MatchFilter, @Nullable android.text.util.Linkify.TransformFilter);
-    method public static final boolean addLinks(@NonNull android.text.Spannable, @NonNull java.util.regex.Pattern, @Nullable String);
-    method public static final boolean addLinks(@NonNull android.text.Spannable, @NonNull java.util.regex.Pattern, @Nullable String, @Nullable android.text.util.Linkify.MatchFilter, @Nullable android.text.util.Linkify.TransformFilter);
-    method public static final boolean addLinks(@NonNull android.text.Spannable, @NonNull java.util.regex.Pattern, @Nullable String, @Nullable String[], @Nullable android.text.util.Linkify.MatchFilter, @Nullable android.text.util.Linkify.TransformFilter);
-    method public static final boolean addLinks(@NonNull android.text.Spannable, @NonNull java.util.regex.Pattern, @Nullable String, @Nullable String[], @Nullable android.text.util.Linkify.MatchFilter, @Nullable android.text.util.Linkify.TransformFilter, @Nullable java.util.function.Function<java.lang.String,android.text.style.URLSpan>);
-    field public static final int ALL = 15; // 0xf
-    field public static final int EMAIL_ADDRESSES = 2; // 0x2
-    field @Deprecated public static final int MAP_ADDRESSES = 8; // 0x8
-    field public static final int PHONE_NUMBERS = 4; // 0x4
-    field public static final int WEB_URLS = 1; // 0x1
-    field public static final android.text.util.Linkify.MatchFilter sPhoneNumberMatchFilter;
-    field public static final android.text.util.Linkify.TransformFilter sPhoneNumberTransformFilter;
-    field public static final android.text.util.Linkify.MatchFilter sUrlMatchFilter;
-  }
-
-  public static interface Linkify.MatchFilter {
-    method public boolean acceptMatch(CharSequence, int, int);
-  }
-
-  public static interface Linkify.TransformFilter {
-    method public String transformUrl(java.util.regex.Matcher, String);
-  }
-
-  public class Rfc822Token {
-    ctor public Rfc822Token(@Nullable String, @Nullable String, @Nullable String);
-    method @Nullable public String getAddress();
-    method @Nullable public String getComment();
-    method @Nullable public String getName();
-    method public static String quoteComment(String);
-    method public static String quoteName(String);
-    method public static String quoteNameIfNecessary(String);
-    method public void setAddress(@Nullable String);
-    method public void setComment(@Nullable String);
-    method public void setName(@Nullable String);
-  }
-
-  public class Rfc822Tokenizer implements android.widget.MultiAutoCompleteTextView.Tokenizer {
-    ctor public Rfc822Tokenizer();
-    method public int findTokenEnd(CharSequence, int);
-    method public int findTokenStart(CharSequence, int);
-    method public CharSequence terminateToken(CharSequence);
-    method public static void tokenize(CharSequence, java.util.Collection<android.text.util.Rfc822Token>);
-    method public static android.text.util.Rfc822Token[] tokenize(CharSequence);
-  }
-
-}
-
-package android.transition {
-
-  public class ArcMotion extends android.transition.PathMotion {
-    ctor public ArcMotion();
-    ctor public ArcMotion(android.content.Context, android.util.AttributeSet);
-    method public float getMaximumAngle();
-    method public float getMinimumHorizontalAngle();
-    method public float getMinimumVerticalAngle();
-    method public android.graphics.Path getPath(float, float, float, float);
-    method public void setMaximumAngle(float);
-    method public void setMinimumHorizontalAngle(float);
-    method public void setMinimumVerticalAngle(float);
-  }
-
-  public class AutoTransition extends android.transition.TransitionSet {
-    ctor public AutoTransition();
-    ctor public AutoTransition(android.content.Context, android.util.AttributeSet);
-  }
-
-  public class ChangeBounds extends android.transition.Transition {
-    ctor public ChangeBounds();
-    ctor public ChangeBounds(android.content.Context, android.util.AttributeSet);
-    method public void captureEndValues(android.transition.TransitionValues);
-    method public void captureStartValues(android.transition.TransitionValues);
-    method public boolean getResizeClip();
-    method @Deprecated public void setReparent(boolean);
-    method public void setResizeClip(boolean);
-  }
-
-  public class ChangeClipBounds extends android.transition.Transition {
-    ctor public ChangeClipBounds();
-    ctor public ChangeClipBounds(android.content.Context, android.util.AttributeSet);
-    method public void captureEndValues(android.transition.TransitionValues);
-    method public void captureStartValues(android.transition.TransitionValues);
-  }
-
-  public class ChangeImageTransform extends android.transition.Transition {
-    ctor public ChangeImageTransform();
-    ctor public ChangeImageTransform(android.content.Context, android.util.AttributeSet);
-    method public void captureEndValues(android.transition.TransitionValues);
-    method public void captureStartValues(android.transition.TransitionValues);
-  }
-
-  public class ChangeScroll extends android.transition.Transition {
-    ctor public ChangeScroll();
-    ctor public ChangeScroll(android.content.Context, android.util.AttributeSet);
-    method public void captureEndValues(android.transition.TransitionValues);
-    method public void captureStartValues(android.transition.TransitionValues);
-  }
-
-  public class ChangeTransform extends android.transition.Transition {
-    ctor public ChangeTransform();
-    ctor public ChangeTransform(android.content.Context, android.util.AttributeSet);
-    method public void captureEndValues(android.transition.TransitionValues);
-    method public void captureStartValues(android.transition.TransitionValues);
-    method public boolean getReparent();
-    method public boolean getReparentWithOverlay();
-    method public void setReparent(boolean);
-    method public void setReparentWithOverlay(boolean);
-  }
-
-  public class CircularPropagation extends android.transition.VisibilityPropagation {
-    ctor public CircularPropagation();
-    method public long getStartDelay(android.view.ViewGroup, android.transition.Transition, android.transition.TransitionValues, android.transition.TransitionValues);
-    method public void setPropagationSpeed(float);
-  }
-
-  public class Explode extends android.transition.Visibility {
-    ctor public Explode();
-    ctor public Explode(android.content.Context, android.util.AttributeSet);
-  }
-
-  public class Fade extends android.transition.Visibility {
-    ctor public Fade();
-    ctor public Fade(int);
-    ctor public Fade(android.content.Context, android.util.AttributeSet);
-    field public static final int IN = 1; // 0x1
-    field public static final int OUT = 2; // 0x2
-  }
-
-  public abstract class PathMotion {
-    ctor public PathMotion();
-    ctor public PathMotion(android.content.Context, android.util.AttributeSet);
-    method public abstract android.graphics.Path getPath(float, float, float, float);
-  }
-
-  public class PatternPathMotion extends android.transition.PathMotion {
-    ctor public PatternPathMotion();
-    ctor public PatternPathMotion(android.content.Context, android.util.AttributeSet);
-    ctor public PatternPathMotion(android.graphics.Path);
-    method public android.graphics.Path getPath(float, float, float, float);
-    method public android.graphics.Path getPatternPath();
-    method public void setPatternPath(android.graphics.Path);
-  }
-
-  public final class Scene {
-    ctor public Scene(android.view.ViewGroup);
-    ctor public Scene(android.view.ViewGroup, android.view.View);
-    ctor @Deprecated public Scene(android.view.ViewGroup, android.view.ViewGroup);
-    method public void enter();
-    method public void exit();
-    method @Nullable public static android.transition.Scene getCurrentScene(@NonNull android.view.ViewGroup);
-    method public static android.transition.Scene getSceneForLayout(android.view.ViewGroup, int, android.content.Context);
-    method public android.view.ViewGroup getSceneRoot();
-    method public void setEnterAction(Runnable);
-    method public void setExitAction(Runnable);
-  }
-
-  public class SidePropagation extends android.transition.VisibilityPropagation {
-    ctor public SidePropagation();
-    method public long getStartDelay(android.view.ViewGroup, android.transition.Transition, android.transition.TransitionValues, android.transition.TransitionValues);
-    method public void setPropagationSpeed(float);
-    method public void setSide(int);
-  }
-
-  public class Slide extends android.transition.Visibility {
-    ctor public Slide();
-    ctor public Slide(int);
-    ctor public Slide(android.content.Context, android.util.AttributeSet);
-    method public int getSlideEdge();
-    method public void setSlideEdge(int);
-  }
-
-  public abstract class Transition implements java.lang.Cloneable {
-    ctor public Transition();
-    ctor public Transition(android.content.Context, android.util.AttributeSet);
-    method public android.transition.Transition addListener(android.transition.Transition.TransitionListener);
-    method public android.transition.Transition addTarget(int);
-    method public android.transition.Transition addTarget(String);
-    method public android.transition.Transition addTarget(Class);
-    method public android.transition.Transition addTarget(android.view.View);
-    method public boolean canRemoveViews();
-    method public abstract void captureEndValues(android.transition.TransitionValues);
-    method public abstract void captureStartValues(android.transition.TransitionValues);
-    method public android.transition.Transition clone();
-    method public android.animation.Animator createAnimator(android.view.ViewGroup, android.transition.TransitionValues, android.transition.TransitionValues);
-    method public android.transition.Transition excludeChildren(int, boolean);
-    method public android.transition.Transition excludeChildren(android.view.View, boolean);
-    method public android.transition.Transition excludeChildren(Class, boolean);
-    method public android.transition.Transition excludeTarget(int, boolean);
-    method public android.transition.Transition excludeTarget(String, boolean);
-    method public android.transition.Transition excludeTarget(android.view.View, boolean);
-    method public android.transition.Transition excludeTarget(Class, boolean);
-    method public long getDuration();
-    method public android.graphics.Rect getEpicenter();
-    method public android.transition.Transition.EpicenterCallback getEpicenterCallback();
-    method public android.animation.TimeInterpolator getInterpolator();
-    method public String getName();
-    method public android.transition.PathMotion getPathMotion();
-    method public android.transition.TransitionPropagation getPropagation();
-    method public long getStartDelay();
-    method public java.util.List<java.lang.Integer> getTargetIds();
-    method public java.util.List<java.lang.String> getTargetNames();
-    method public java.util.List<java.lang.Class> getTargetTypes();
-    method public java.util.List<android.view.View> getTargets();
-    method public String[] getTransitionProperties();
-    method public android.transition.TransitionValues getTransitionValues(android.view.View, boolean);
-    method public boolean isTransitionRequired(@Nullable android.transition.TransitionValues, @Nullable android.transition.TransitionValues);
-    method public android.transition.Transition removeListener(android.transition.Transition.TransitionListener);
-    method public android.transition.Transition removeTarget(int);
-    method public android.transition.Transition removeTarget(String);
-    method public android.transition.Transition removeTarget(android.view.View);
-    method public android.transition.Transition removeTarget(Class);
-    method public android.transition.Transition setDuration(long);
-    method public void setEpicenterCallback(android.transition.Transition.EpicenterCallback);
-    method public android.transition.Transition setInterpolator(android.animation.TimeInterpolator);
-    method public void setMatchOrder(int...);
-    method public void setPathMotion(android.transition.PathMotion);
-    method public void setPropagation(android.transition.TransitionPropagation);
-    method public android.transition.Transition setStartDelay(long);
-    field public static final int MATCH_ID = 3; // 0x3
-    field public static final int MATCH_INSTANCE = 1; // 0x1
-    field public static final int MATCH_ITEM_ID = 4; // 0x4
-    field public static final int MATCH_NAME = 2; // 0x2
-  }
-
-  public abstract static class Transition.EpicenterCallback {
-    ctor public Transition.EpicenterCallback();
-    method public abstract android.graphics.Rect onGetEpicenter(android.transition.Transition);
-  }
-
-  public static interface Transition.TransitionListener {
-    method public void onTransitionCancel(android.transition.Transition);
-    method public void onTransitionEnd(android.transition.Transition);
-    method public void onTransitionPause(android.transition.Transition);
-    method public void onTransitionResume(android.transition.Transition);
-    method public void onTransitionStart(android.transition.Transition);
-  }
-
-  public class TransitionInflater {
-    method public static android.transition.TransitionInflater from(android.content.Context);
-    method public android.transition.Transition inflateTransition(@TransitionRes int);
-    method public android.transition.TransitionManager inflateTransitionManager(@TransitionRes int, android.view.ViewGroup);
-  }
-
-  public abstract class TransitionListenerAdapter implements android.transition.Transition.TransitionListener {
-    ctor public TransitionListenerAdapter();
-    method public void onTransitionCancel(android.transition.Transition);
-    method public void onTransitionEnd(android.transition.Transition);
-    method public void onTransitionPause(android.transition.Transition);
-    method public void onTransitionResume(android.transition.Transition);
-    method public void onTransitionStart(android.transition.Transition);
-  }
-
-  public class TransitionManager {
-    ctor public TransitionManager();
-    method public static void beginDelayedTransition(android.view.ViewGroup);
-    method public static void beginDelayedTransition(android.view.ViewGroup, android.transition.Transition);
-    method public static void endTransitions(android.view.ViewGroup);
-    method public static void go(android.transition.Scene);
-    method public static void go(android.transition.Scene, android.transition.Transition);
-    method public void setTransition(android.transition.Scene, android.transition.Transition);
-    method public void setTransition(android.transition.Scene, android.transition.Scene, android.transition.Transition);
-    method public void transitionTo(android.transition.Scene);
-  }
-
-  public abstract class TransitionPropagation {
-    ctor public TransitionPropagation();
-    method public abstract void captureValues(android.transition.TransitionValues);
-    method public abstract String[] getPropagationProperties();
-    method public abstract long getStartDelay(android.view.ViewGroup, android.transition.Transition, android.transition.TransitionValues, android.transition.TransitionValues);
-  }
-
-  public class TransitionSet extends android.transition.Transition {
-    ctor public TransitionSet();
-    ctor public TransitionSet(android.content.Context, android.util.AttributeSet);
-    method public android.transition.TransitionSet addListener(android.transition.Transition.TransitionListener);
-    method public android.transition.TransitionSet addTarget(android.view.View);
-    method public android.transition.TransitionSet addTarget(int);
-    method public android.transition.TransitionSet addTarget(String);
-    method public android.transition.TransitionSet addTarget(Class);
-    method public android.transition.TransitionSet addTransition(android.transition.Transition);
-    method public void captureEndValues(android.transition.TransitionValues);
-    method public void captureStartValues(android.transition.TransitionValues);
-    method public android.transition.TransitionSet clone();
-    method public int getOrdering();
-    method public android.transition.Transition getTransitionAt(int);
-    method public int getTransitionCount();
-    method public android.transition.TransitionSet removeListener(android.transition.Transition.TransitionListener);
-    method public android.transition.TransitionSet removeTarget(int);
-    method public android.transition.TransitionSet removeTarget(android.view.View);
-    method public android.transition.TransitionSet removeTarget(Class);
-    method public android.transition.TransitionSet removeTarget(String);
-    method public android.transition.TransitionSet removeTransition(android.transition.Transition);
-    method public android.transition.TransitionSet setDuration(long);
-    method public android.transition.TransitionSet setInterpolator(android.animation.TimeInterpolator);
-    method public android.transition.TransitionSet setOrdering(int);
-    method public android.transition.TransitionSet setStartDelay(long);
-    field public static final int ORDERING_SEQUENTIAL = 1; // 0x1
-    field public static final int ORDERING_TOGETHER = 0; // 0x0
-  }
-
-  public class TransitionValues {
-    ctor @Deprecated public TransitionValues();
-    ctor public TransitionValues(@NonNull android.view.View);
-    field @NonNull public final java.util.Map<java.lang.String,java.lang.Object> values;
-    field @NonNull public android.view.View view;
-  }
-
-  public abstract class Visibility extends android.transition.Transition {
-    ctor public Visibility();
-    ctor public Visibility(android.content.Context, android.util.AttributeSet);
-    method public void captureEndValues(android.transition.TransitionValues);
-    method public void captureStartValues(android.transition.TransitionValues);
-    method public int getMode();
-    method public boolean isVisible(android.transition.TransitionValues);
-    method public android.animation.Animator onAppear(android.view.ViewGroup, android.transition.TransitionValues, int, android.transition.TransitionValues, int);
-    method public android.animation.Animator onAppear(android.view.ViewGroup, android.view.View, android.transition.TransitionValues, android.transition.TransitionValues);
-    method public android.animation.Animator onDisappear(android.view.ViewGroup, android.transition.TransitionValues, int, android.transition.TransitionValues, int);
-    method public android.animation.Animator onDisappear(android.view.ViewGroup, android.view.View, android.transition.TransitionValues, android.transition.TransitionValues);
-    method public void setMode(int);
-    field public static final int MODE_IN = 1; // 0x1
-    field public static final int MODE_OUT = 2; // 0x2
-  }
-
-  public abstract class VisibilityPropagation extends android.transition.TransitionPropagation {
-    ctor public VisibilityPropagation();
-    method public void captureValues(android.transition.TransitionValues);
-    method public String[] getPropagationProperties();
-    method public int getViewVisibility(android.transition.TransitionValues);
-    method public int getViewX(android.transition.TransitionValues);
-    method public int getViewY(android.transition.TransitionValues);
-  }
-
-}
-
-package android.util {
-
-  public class AndroidException extends java.lang.Exception {
-    ctor public AndroidException();
-    ctor public AndroidException(String);
-    ctor public AndroidException(String, Throwable);
-    ctor public AndroidException(Exception);
-  }
-
-  public class AndroidRuntimeException extends java.lang.RuntimeException {
-    ctor public AndroidRuntimeException();
-    ctor public AndroidRuntimeException(String);
-    ctor public AndroidRuntimeException(String, Throwable);
-    ctor public AndroidRuntimeException(Exception);
-  }
-
-  public final class ArrayMap<K, V> implements java.util.Map<K,V> {
-    ctor public ArrayMap();
-    ctor public ArrayMap(int);
-    ctor public ArrayMap(android.util.ArrayMap<K,V>);
-    method public void clear();
-    method public boolean containsAll(java.util.Collection<?>);
-    method public boolean containsKey(Object);
-    method public boolean containsValue(Object);
-    method public void ensureCapacity(int);
-    method public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
-    method public V get(Object);
-    method public int indexOfKey(Object);
-    method public int indexOfValue(Object);
-    method public boolean isEmpty();
-    method public K keyAt(int);
-    method public java.util.Set<K> keySet();
-    method public V put(K, V);
-    method public void putAll(android.util.ArrayMap<? extends K,? extends V>);
-    method public void putAll(java.util.Map<? extends K,? extends V>);
-    method public V remove(Object);
-    method public boolean removeAll(java.util.Collection<?>);
-    method public V removeAt(int);
-    method public boolean retainAll(java.util.Collection<?>);
-    method public V setValueAt(int, V);
-    method public int size();
-    method public V valueAt(int);
-    method public java.util.Collection<V> values();
-  }
-
-  public final class ArraySet<E> implements java.util.Collection<E> java.util.Set<E> {
-    ctor public ArraySet();
-    ctor public ArraySet(int);
-    ctor public ArraySet(android.util.ArraySet<E>);
-    ctor public ArraySet(java.util.Collection<? extends E>);
-    ctor public ArraySet(@Nullable E[]);
-    method public boolean add(E);
-    method public void addAll(android.util.ArraySet<? extends E>);
-    method public boolean addAll(java.util.Collection<? extends E>);
-    method public void clear();
-    method public boolean contains(Object);
-    method public boolean containsAll(java.util.Collection<?>);
-    method public void ensureCapacity(int);
-    method public int indexOf(Object);
-    method public boolean isEmpty();
-    method public java.util.Iterator<E> iterator();
-    method public boolean remove(Object);
-    method public boolean removeAll(android.util.ArraySet<? extends E>);
-    method public boolean removeAll(java.util.Collection<?>);
-    method public E removeAt(int);
-    method public boolean retainAll(java.util.Collection<?>);
-    method public int size();
-    method public Object[] toArray();
-    method public <T> T[] toArray(T[]);
-    method public E valueAt(int);
-  }
-
-  public class AtomicFile {
-    ctor public AtomicFile(java.io.File);
-    method public void delete();
-    method public void failWrite(java.io.FileOutputStream);
-    method public void finishWrite(java.io.FileOutputStream);
-    method public java.io.File getBaseFile();
-    method public java.io.FileInputStream openRead() throws java.io.FileNotFoundException;
-    method public byte[] readFully() throws java.io.IOException;
-    method public java.io.FileOutputStream startWrite() throws java.io.IOException;
-  }
-
-  public interface AttributeSet {
-    method public boolean getAttributeBooleanValue(String, String, boolean);
-    method public boolean getAttributeBooleanValue(int, boolean);
-    method public int getAttributeCount();
-    method public float getAttributeFloatValue(String, String, float);
-    method public float getAttributeFloatValue(int, float);
-    method public int getAttributeIntValue(String, String, int);
-    method public int getAttributeIntValue(int, int);
-    method public int getAttributeListValue(String, String, String[], int);
-    method public int getAttributeListValue(int, String[], int);
-    method public String getAttributeName(int);
-    method public int getAttributeNameResource(int);
-    method public default String getAttributeNamespace(int);
-    method public int getAttributeResourceValue(String, String, int);
-    method public int getAttributeResourceValue(int, int);
-    method public int getAttributeUnsignedIntValue(String, String, int);
-    method public int getAttributeUnsignedIntValue(int, int);
-    method public String getAttributeValue(int);
-    method public String getAttributeValue(String, String);
-    method public String getClassAttribute();
-    method public String getIdAttribute();
-    method public int getIdAttributeResourceValue(int);
-    method public String getPositionDescription();
-    method public int getStyleAttribute();
-  }
-
-  public class Base64 {
-    method public static byte[] decode(String, int);
-    method public static byte[] decode(byte[], int);
-    method public static byte[] decode(byte[], int, int, int);
-    method public static byte[] encode(byte[], int);
-    method public static byte[] encode(byte[], int, int, int);
-    method public static String encodeToString(byte[], int);
-    method public static String encodeToString(byte[], int, int, int);
-    field public static final int CRLF = 4; // 0x4
-    field public static final int DEFAULT = 0; // 0x0
-    field public static final int NO_CLOSE = 16; // 0x10
-    field public static final int NO_PADDING = 1; // 0x1
-    field public static final int NO_WRAP = 2; // 0x2
-    field public static final int URL_SAFE = 8; // 0x8
-  }
-
-  public class Base64DataException extends java.io.IOException {
-    ctor public Base64DataException(String);
-  }
-
-  public class Base64InputStream extends java.io.FilterInputStream {
-    ctor public Base64InputStream(java.io.InputStream, int);
-    method public int available();
-    method public void reset();
-  }
-
-  public class Base64OutputStream extends java.io.FilterOutputStream {
-    ctor public Base64OutputStream(java.io.OutputStream, int);
-  }
-
-  public final class CloseGuard {
-    ctor public CloseGuard();
-    method public void close();
-    method public void open(@NonNull String);
-    method public void warnIfOpen();
-  }
-
-  @Deprecated public final class Config {
-    field @Deprecated public static final boolean DEBUG = false;
-    field @Deprecated public static final boolean LOGD = true;
-    field @Deprecated public static final boolean LOGV = false;
-    field @Deprecated public static final boolean PROFILE = false;
-    field @Deprecated public static final boolean RELEASE = true;
-  }
-
-  public class DebugUtils {
-    method public static boolean isObjectSelected(Object);
-  }
-
-  public class DisplayMetrics {
-    ctor public DisplayMetrics();
-    method public boolean equals(android.util.DisplayMetrics);
-    method public void setTo(android.util.DisplayMetrics);
-    method public void setToDefaults();
-    field public static final int DENSITY_140 = 140; // 0x8c
-    field public static final int DENSITY_180 = 180; // 0xb4
-    field public static final int DENSITY_200 = 200; // 0xc8
-    field public static final int DENSITY_220 = 220; // 0xdc
-    field public static final int DENSITY_260 = 260; // 0x104
-    field public static final int DENSITY_280 = 280; // 0x118
-    field public static final int DENSITY_300 = 300; // 0x12c
-    field public static final int DENSITY_340 = 340; // 0x154
-    field public static final int DENSITY_360 = 360; // 0x168
-    field public static final int DENSITY_400 = 400; // 0x190
-    field public static final int DENSITY_420 = 420; // 0x1a4
-    field public static final int DENSITY_440 = 440; // 0x1b8
-    field public static final int DENSITY_450 = 450; // 0x1c2
-    field public static final int DENSITY_560 = 560; // 0x230
-    field public static final int DENSITY_600 = 600; // 0x258
-    field public static final int DENSITY_DEFAULT = 160; // 0xa0
-    field public static final int DENSITY_DEVICE_STABLE;
-    field public static final int DENSITY_HIGH = 240; // 0xf0
-    field public static final int DENSITY_LOW = 120; // 0x78
-    field public static final int DENSITY_MEDIUM = 160; // 0xa0
-    field public static final int DENSITY_TV = 213; // 0xd5
-    field public static final int DENSITY_XHIGH = 320; // 0x140
-    field public static final int DENSITY_XXHIGH = 480; // 0x1e0
-    field public static final int DENSITY_XXXHIGH = 640; // 0x280
-    field public float density;
-    field public int densityDpi;
-    field public int heightPixels;
-    field public float scaledDensity;
-    field public int widthPixels;
-    field public float xdpi;
-    field public float ydpi;
-  }
-
-  public class EventLog {
-    method public static int getTagCode(String);
-    method public static String getTagName(int);
-    method public static void readEvents(int[], java.util.Collection<android.util.EventLog.Event>) throws java.io.IOException;
-    method public static int writeEvent(int, int);
-    method public static int writeEvent(int, long);
-    method public static int writeEvent(int, float);
-    method public static int writeEvent(int, String);
-    method public static int writeEvent(int, java.lang.Object...);
-  }
-
-  public static final class EventLog.Event {
-    method public Object getData();
-    method public int getProcessId();
-    method public int getTag();
-    method public int getThreadId();
-    method public long getTimeNanos();
-  }
-
-  @Deprecated public class EventLogTags {
-    ctor @Deprecated public EventLogTags() throws java.io.IOException;
-    ctor @Deprecated public EventLogTags(java.io.BufferedReader) throws java.io.IOException;
-    method @Deprecated public android.util.EventLogTags.Description get(String);
-    method @Deprecated public android.util.EventLogTags.Description get(int);
-  }
-
-  @Deprecated public static class EventLogTags.Description {
-    field @Deprecated public final String mName;
-    field @Deprecated public final int mTag;
-  }
-
-  @Deprecated public class FloatMath {
-  }
-
-  public abstract class FloatProperty<T> extends android.util.Property<T,java.lang.Float> {
-    ctor public FloatProperty(String);
-    method public final void set(T, Float);
-    method public abstract void setValue(T, float);
-  }
-
-  public final class Half extends java.lang.Number implements java.lang.Comparable<android.util.Half> {
-    ctor public Half(@HalfFloat short);
-    ctor public Half(float);
-    ctor public Half(double);
-    ctor public Half(@NonNull String) throws java.lang.NumberFormatException;
-    method @HalfFloat public static short abs(@HalfFloat short);
-    method @HalfFloat public static short ceil(@HalfFloat short);
-    method public static int compare(@HalfFloat short, @HalfFloat short);
-    method public int compareTo(@NonNull android.util.Half);
-    method @HalfFloat public static short copySign(@HalfFloat short, @HalfFloat short);
-    method public double doubleValue();
-    method public static boolean equals(@HalfFloat short, @HalfFloat short);
-    method public float floatValue();
-    method @HalfFloat public static short floor(@HalfFloat short);
-    method public static int getExponent(@HalfFloat short);
-    method public static int getSign(@HalfFloat short);
-    method public static int getSignificand(@HalfFloat short);
-    method public static boolean greater(@HalfFloat short, @HalfFloat short);
-    method public static boolean greaterEquals(@HalfFloat short, @HalfFloat short);
-    method public static int halfToIntBits(@HalfFloat short);
-    method public static int halfToRawIntBits(@HalfFloat short);
-    method @HalfFloat public static short halfToShortBits(@HalfFloat short);
-    method @HalfFloat public short halfValue();
-    method public static int hashCode(@HalfFloat short);
-    method @HalfFloat public static short intBitsToHalf(int);
-    method public int intValue();
-    method public static boolean isInfinite(@HalfFloat short);
-    method public boolean isNaN();
-    method public static boolean isNaN(@HalfFloat short);
-    method public static boolean isNormalized(@HalfFloat short);
-    method public static boolean less(@HalfFloat short, @HalfFloat short);
-    method public static boolean lessEquals(@HalfFloat short, @HalfFloat short);
-    method public long longValue();
-    method @HalfFloat public static short max(@HalfFloat short, @HalfFloat short);
-    method @HalfFloat public static short min(@HalfFloat short, @HalfFloat short);
-    method @HalfFloat public static short parseHalf(@NonNull String) throws java.lang.NumberFormatException;
-    method @HalfFloat public static short round(@HalfFloat short);
-    method public static float toFloat(@HalfFloat short);
-    method @HalfFloat public static short toHalf(float);
-    method @NonNull public static String toHexString(@HalfFloat short);
-    method @NonNull public static String toString(@HalfFloat short);
-    method @HalfFloat public static short trunc(@HalfFloat short);
-    method @NonNull public static android.util.Half valueOf(@HalfFloat short);
-    method @NonNull public static android.util.Half valueOf(float);
-    method @NonNull public static android.util.Half valueOf(@NonNull String);
-    field @HalfFloat public static final short EPSILON = 5120; // 0x1400
-    field @HalfFloat public static final short LOWEST_VALUE = -1025; // 0xfffffbff
-    field public static final int MAX_EXPONENT = 15; // 0xf
-    field @HalfFloat public static final short MAX_VALUE = 31743; // 0x7bff
-    field public static final int MIN_EXPONENT = -14; // 0xfffffff2
-    field @HalfFloat public static final short MIN_NORMAL = 1024; // 0x400
-    field @HalfFloat public static final short MIN_VALUE = 1; // 0x1
-    field @HalfFloat public static final short NEGATIVE_INFINITY = -1024; // 0xfffffc00
-    field @HalfFloat public static final short NEGATIVE_ZERO = -32768; // 0xffff8000
-    field @HalfFloat public static final short NaN = 32256; // 0x7e00
-    field @HalfFloat public static final short POSITIVE_INFINITY = 31744; // 0x7c00
-    field @HalfFloat public static final short POSITIVE_ZERO = 0; // 0x0
-    field public static final int SIZE = 16; // 0x10
-  }
-
-  public abstract class IntProperty<T> extends android.util.Property<T,java.lang.Integer> {
-    ctor public IntProperty(String);
-    method public final void set(T, Integer);
-    method public abstract void setValue(T, int);
-  }
-
-  public final class JsonReader implements java.io.Closeable {
-    ctor public JsonReader(java.io.Reader);
-    method public void beginArray() throws java.io.IOException;
-    method public void beginObject() throws java.io.IOException;
-    method public void close() throws java.io.IOException;
-    method public void endArray() throws java.io.IOException;
-    method public void endObject() throws java.io.IOException;
-    method public boolean hasNext() throws java.io.IOException;
-    method public boolean isLenient();
-    method public boolean nextBoolean() throws java.io.IOException;
-    method public double nextDouble() throws java.io.IOException;
-    method public int nextInt() throws java.io.IOException;
-    method public long nextLong() throws java.io.IOException;
-    method public String nextName() throws java.io.IOException;
-    method public void nextNull() throws java.io.IOException;
-    method public String nextString() throws java.io.IOException;
-    method public android.util.JsonToken peek() throws java.io.IOException;
-    method public void setLenient(boolean);
-    method public void skipValue() throws java.io.IOException;
-  }
-
-  public enum JsonToken {
-    enum_constant public static final android.util.JsonToken BEGIN_ARRAY;
-    enum_constant public static final android.util.JsonToken BEGIN_OBJECT;
-    enum_constant public static final android.util.JsonToken BOOLEAN;
-    enum_constant public static final android.util.JsonToken END_ARRAY;
-    enum_constant public static final android.util.JsonToken END_DOCUMENT;
-    enum_constant public static final android.util.JsonToken END_OBJECT;
-    enum_constant public static final android.util.JsonToken NAME;
-    enum_constant public static final android.util.JsonToken NULL;
-    enum_constant public static final android.util.JsonToken NUMBER;
-    enum_constant public static final android.util.JsonToken STRING;
-  }
-
-  public final class JsonWriter implements java.io.Closeable {
-    ctor public JsonWriter(java.io.Writer);
-    method public android.util.JsonWriter beginArray() throws java.io.IOException;
-    method public android.util.JsonWriter beginObject() throws java.io.IOException;
-    method public void close() throws java.io.IOException;
-    method public android.util.JsonWriter endArray() throws java.io.IOException;
-    method public android.util.JsonWriter endObject() throws java.io.IOException;
-    method public void flush() throws java.io.IOException;
-    method public boolean isLenient();
-    method public android.util.JsonWriter name(String) throws java.io.IOException;
-    method public android.util.JsonWriter nullValue() throws java.io.IOException;
-    method public void setIndent(String);
-    method public void setLenient(boolean);
-    method public android.util.JsonWriter value(String) throws java.io.IOException;
-    method public android.util.JsonWriter value(boolean) throws java.io.IOException;
-    method public android.util.JsonWriter value(double) throws java.io.IOException;
-    method public android.util.JsonWriter value(long) throws java.io.IOException;
-    method public android.util.JsonWriter value(Number) throws java.io.IOException;
-  }
-
-  public final class LayoutDirection {
-    field public static final int INHERIT = 2; // 0x2
-    field public static final int LOCALE = 3; // 0x3
-    field public static final int LTR = 0; // 0x0
-    field public static final int RTL = 1; // 0x1
-  }
-
-  public final class Log {
-    method public static int d(@Nullable String, @NonNull String);
-    method public static int d(@Nullable String, @Nullable String, @Nullable Throwable);
-    method public static int e(@Nullable String, @NonNull String);
-    method public static int e(@Nullable String, @Nullable String, @Nullable Throwable);
-    method @NonNull public static String getStackTraceString(@Nullable Throwable);
-    method public static int i(@Nullable String, @NonNull String);
-    method public static int i(@Nullable String, @Nullable String, @Nullable Throwable);
-    method public static boolean isLoggable(@Nullable @Size(max=23, apis="..23") String, int);
-    method public static int println(int, @Nullable String, @NonNull String);
-    method public static int v(@Nullable String, @NonNull String);
-    method public static int v(@Nullable String, @Nullable String, @Nullable Throwable);
-    method public static int w(@Nullable String, @NonNull String);
-    method public static int w(@Nullable String, @Nullable String, @Nullable Throwable);
-    method public static int w(@Nullable String, @Nullable Throwable);
-    method public static int wtf(@Nullable String, @Nullable String);
-    method public static int wtf(@Nullable String, @NonNull Throwable);
-    method public static int wtf(@Nullable String, @Nullable String, @Nullable Throwable);
-    field public static final int ASSERT = 7; // 0x7
-    field public static final int DEBUG = 3; // 0x3
-    field public static final int ERROR = 6; // 0x6
-    field public static final int INFO = 4; // 0x4
-    field public static final int VERBOSE = 2; // 0x2
-    field public static final int WARN = 5; // 0x5
-  }
-
-  public class LogPrinter implements android.util.Printer {
-    ctor public LogPrinter(int, String);
-    method public void println(String);
-  }
-
-  public class LongSparseArray<E> implements java.lang.Cloneable {
-    ctor public LongSparseArray();
-    ctor public LongSparseArray(int);
-    method public void append(long, E);
-    method public void clear();
-    method public android.util.LongSparseArray<E> clone();
-    method public void delete(long);
-    method public E get(long);
-    method public E get(long, E);
-    method public int indexOfKey(long);
-    method public int indexOfValue(E);
-    method public long keyAt(int);
-    method public void put(long, E);
-    method public void remove(long);
-    method public void removeAt(int);
-    method public void setValueAt(int, E);
-    method public int size();
-    method public E valueAt(int);
-  }
-
-  public class LruCache<K, V> {
-    ctor public LruCache(int);
-    method protected V create(K);
-    method public final int createCount();
-    method protected void entryRemoved(boolean, K, V, V);
-    method public final void evictAll();
-    method public final int evictionCount();
-    method public final V get(K);
-    method public final int hitCount();
-    method public final int maxSize();
-    method public final int missCount();
-    method public final V put(K, V);
-    method public final int putCount();
-    method public final V remove(K);
-    method public void resize(int);
-    method public final int size();
-    method protected int sizeOf(K, V);
-    method public final java.util.Map<K,V> snapshot();
-    method public final String toString();
-    method public void trimToSize(int);
-  }
-
-  public final class MalformedJsonException extends java.io.IOException {
-    ctor public MalformedJsonException(String);
-  }
-
-  public class MonthDisplayHelper {
-    ctor public MonthDisplayHelper(int, int, int);
-    ctor public MonthDisplayHelper(int, int);
-    method public int getColumnOf(int);
-    method public int getDayAt(int, int);
-    method public int[] getDigitsForRow(int);
-    method public int getFirstDayOfMonth();
-    method public int getMonth();
-    method public int getNumberOfDaysInMonth();
-    method public int getOffset();
-    method public int getRowOf(int);
-    method public int getWeekStartDay();
-    method public int getYear();
-    method public boolean isWithinCurrentMonth(int, int);
-    method public void nextMonth();
-    method public void previousMonth();
-  }
-
-  @Deprecated public final class MutableBoolean {
-    ctor @Deprecated public MutableBoolean(boolean);
-    field @Deprecated public boolean value;
-  }
-
-  @Deprecated public final class MutableByte {
-    ctor @Deprecated public MutableByte(byte);
-    field @Deprecated public byte value;
-  }
-
-  @Deprecated public final class MutableChar {
-    ctor @Deprecated public MutableChar(char);
-    field @Deprecated public char value;
-  }
-
-  @Deprecated public final class MutableDouble {
-    ctor @Deprecated public MutableDouble(double);
-    field @Deprecated public double value;
-  }
-
-  @Deprecated public final class MutableFloat {
-    ctor @Deprecated public MutableFloat(float);
-    field @Deprecated public float value;
-  }
-
-  @Deprecated public final class MutableInt {
-    ctor @Deprecated public MutableInt(int);
-    field @Deprecated public int value;
-  }
-
-  @Deprecated public final class MutableLong {
-    ctor @Deprecated public MutableLong(long);
-    field @Deprecated public long value;
-  }
-
-  @Deprecated public final class MutableShort {
-    ctor @Deprecated public MutableShort(short);
-    field @Deprecated public short value;
-  }
-
-  public class NoSuchPropertyException extends java.lang.RuntimeException {
-    ctor public NoSuchPropertyException(String);
-  }
-
-  public class Pair<F, S> {
-    ctor public Pair(F, S);
-    method public static <A, B> android.util.Pair<A,B> create(A, B);
-    field public final F first;
-    field public final S second;
-  }
-
-  public class Patterns {
-    method public static final String concatGroups(java.util.regex.Matcher);
-    method public static final String digitsAndPlusOnly(java.util.regex.Matcher);
-    field public static final java.util.regex.Pattern DOMAIN_NAME;
-    field public static final java.util.regex.Pattern EMAIL_ADDRESS;
-    field @Deprecated public static final String GOOD_IRI_CHAR = "a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef";
-    field public static final java.util.regex.Pattern IP_ADDRESS;
-    field public static final java.util.regex.Pattern PHONE;
-    field @Deprecated public static final java.util.regex.Pattern TOP_LEVEL_DOMAIN;
-    field @Deprecated public static final String TOP_LEVEL_DOMAIN_STR = "((aero|arpa|asia|a[cdefgilmnoqrstuwxz])|(biz|b[abdefghijmnorstvwyz])|(cat|com|coop|c[acdfghiklmnoruvxyz])|d[ejkmoz]|(edu|e[cegrstu])|f[ijkmor]|(gov|g[abdefghilmnpqrstuwy])|h[kmnrtu]|(info|int|i[delmnoqrst])|(jobs|j[emop])|k[eghimnprwyz]|l[abcikrstuvy]|(mil|mobi|museum|m[acdeghklmnopqrstuvwxyz])|(name|net|n[acefgilopruz])|(org|om)|(pro|p[aefghklmnrstwy])|qa|r[eosuw]|s[abcdeghijklmnortuvyz]|(tel|travel|t[cdfghjklmnoprtvwz])|u[agksyz]|v[aceginu]|w[fs]|(\u03b4\u03bf\u03ba\u03b9\u03bc\u03ae|\u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0435|\u0440\u0444|\u0441\u0440\u0431|\u05d8\u05e2\u05e1\u05d8|\u0622\u0632\u0645\u0627\u06cc\u0634\u06cc|\u0625\u062e\u062a\u0628\u0627\u0631|\u0627\u0644\u0627\u0631\u062f\u0646|\u0627\u0644\u062c\u0632\u0627\u0626\u0631|\u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629|\u0627\u0644\u0645\u063a\u0631\u0628|\u0627\u0645\u0627\u0631\u0627\u062a|\u0628\u06be\u0627\u0631\u062a|\u062a\u0648\u0646\u0633|\u0633\u0648\u0631\u064a\u0629|\u0641\u0644\u0633\u0637\u064a\u0646|\u0642\u0637\u0631|\u0645\u0635\u0631|\u092a\u0930\u0940\u0915\u094d\u0937\u093e|\u092d\u093e\u0930\u0924|\u09ad\u09be\u09b0\u09a4|\u0a2d\u0a3e\u0a30\u0a24|\u0aad\u0abe\u0ab0\u0aa4|\u0b87\u0ba8\u0bcd\u0ba4\u0bbf\u0baf\u0bbe|\u0b87\u0bb2\u0b99\u0bcd\u0b95\u0bc8|\u0b9a\u0bbf\u0b99\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0bc2\u0bb0\u0bcd|\u0baa\u0bb0\u0bbf\u0b9f\u0bcd\u0b9a\u0bc8|\u0c2d\u0c3e\u0c30\u0c24\u0c4d|\u0dbd\u0d82\u0d9a\u0dcf|\u0e44\u0e17\u0e22|\u30c6\u30b9\u30c8|\u4e2d\u56fd|\u4e2d\u570b|\u53f0\u6e7e|\u53f0\u7063|\u65b0\u52a0\u5761|\u6d4b\u8bd5|\u6e2c\u8a66|\u9999\u6e2f|\ud14c\uc2a4\ud2b8|\ud55c\uad6d|xn\\-\\-0zwm56d|xn\\-\\-11b5bs3a9aj6g|xn\\-\\-3e0b707e|xn\\-\\-45brj9c|xn\\-\\-80akhbyknj4f|xn\\-\\-90a3ac|xn\\-\\-9t4b11yi5a|xn\\-\\-clchc0ea0b2g2a9gcd|xn\\-\\-deba0ad|xn\\-\\-fiqs8s|xn\\-\\-fiqz9s|xn\\-\\-fpcrj9c3d|xn\\-\\-fzc2c9e2c|xn\\-\\-g6w251d|xn\\-\\-gecrj9c|xn\\-\\-h2brj9c|xn\\-\\-hgbk6aj7f53bba|xn\\-\\-hlcj6aya9esc7a|xn\\-\\-j6w193g|xn\\-\\-jxalpdlp|xn\\-\\-kgbechtv|xn\\-\\-kprw13d|xn\\-\\-kpry57d|xn\\-\\-lgbbat1ad8j|xn\\-\\-mgbaam7a8h|xn\\-\\-mgbayh7gpa|xn\\-\\-mgbbh1a71e|xn\\-\\-mgbc0a9azcg|xn\\-\\-mgberp4a5d4ar|xn\\-\\-o3cw4h|xn\\-\\-ogbpf8fl|xn\\-\\-p1ai|xn\\-\\-pgbs0dh|xn\\-\\-s9brj9c|xn\\-\\-wgbh1c|xn\\-\\-wgbl6a|xn\\-\\-xkc2al3hye2a|xn\\-\\-xkc2dl3a5ee0h|xn\\-\\-yfro4i67o|xn\\-\\-ygbi2ammx|xn\\-\\-zckzah|xxx)|y[et]|z[amw])";
-    field @Deprecated public static final String TOP_LEVEL_DOMAIN_STR_FOR_WEB_URL = "(?:(?:aero|arpa|asia|a[cdefgilmnoqrstuwxz])|(?:biz|b[abdefghijmnorstvwyz])|(?:cat|com|coop|c[acdfghiklmnoruvxyz])|d[ejkmoz]|(?:edu|e[cegrstu])|f[ijkmor]|(?:gov|g[abdefghilmnpqrstuwy])|h[kmnrtu]|(?:info|int|i[delmnoqrst])|(?:jobs|j[emop])|k[eghimnprwyz]|l[abcikrstuvy]|(?:mil|mobi|museum|m[acdeghklmnopqrstuvwxyz])|(?:name|net|n[acefgilopruz])|(?:org|om)|(?:pro|p[aefghklmnrstwy])|qa|r[eosuw]|s[abcdeghijklmnortuvyz]|(?:tel|travel|t[cdfghjklmnoprtvwz])|u[agksyz]|v[aceginu]|w[fs]|(?:\u03b4\u03bf\u03ba\u03b9\u03bc\u03ae|\u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0435|\u0440\u0444|\u0441\u0440\u0431|\u05d8\u05e2\u05e1\u05d8|\u0622\u0632\u0645\u0627\u06cc\u0634\u06cc|\u0625\u062e\u062a\u0628\u0627\u0631|\u0627\u0644\u0627\u0631\u062f\u0646|\u0627\u0644\u062c\u0632\u0627\u0626\u0631|\u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629|\u0627\u0644\u0645\u063a\u0631\u0628|\u0627\u0645\u0627\u0631\u0627\u062a|\u0628\u06be\u0627\u0631\u062a|\u062a\u0648\u0646\u0633|\u0633\u0648\u0631\u064a\u0629|\u0641\u0644\u0633\u0637\u064a\u0646|\u0642\u0637\u0631|\u0645\u0635\u0631|\u092a\u0930\u0940\u0915\u094d\u0937\u093e|\u092d\u093e\u0930\u0924|\u09ad\u09be\u09b0\u09a4|\u0a2d\u0a3e\u0a30\u0a24|\u0aad\u0abe\u0ab0\u0aa4|\u0b87\u0ba8\u0bcd\u0ba4\u0bbf\u0baf\u0bbe|\u0b87\u0bb2\u0b99\u0bcd\u0b95\u0bc8|\u0b9a\u0bbf\u0b99\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0bc2\u0bb0\u0bcd|\u0baa\u0bb0\u0bbf\u0b9f\u0bcd\u0b9a\u0bc8|\u0c2d\u0c3e\u0c30\u0c24\u0c4d|\u0dbd\u0d82\u0d9a\u0dcf|\u0e44\u0e17\u0e22|\u30c6\u30b9\u30c8|\u4e2d\u56fd|\u4e2d\u570b|\u53f0\u6e7e|\u53f0\u7063|\u65b0\u52a0\u5761|\u6d4b\u8bd5|\u6e2c\u8a66|\u9999\u6e2f|\ud14c\uc2a4\ud2b8|\ud55c\uad6d|xn\\-\\-0zwm56d|xn\\-\\-11b5bs3a9aj6g|xn\\-\\-3e0b707e|xn\\-\\-45brj9c|xn\\-\\-80akhbyknj4f|xn\\-\\-90a3ac|xn\\-\\-9t4b11yi5a|xn\\-\\-clchc0ea0b2g2a9gcd|xn\\-\\-deba0ad|xn\\-\\-fiqs8s|xn\\-\\-fiqz9s|xn\\-\\-fpcrj9c3d|xn\\-\\-fzc2c9e2c|xn\\-\\-g6w251d|xn\\-\\-gecrj9c|xn\\-\\-h2brj9c|xn\\-\\-hgbk6aj7f53bba|xn\\-\\-hlcj6aya9esc7a|xn\\-\\-j6w193g|xn\\-\\-jxalpdlp|xn\\-\\-kgbechtv|xn\\-\\-kprw13d|xn\\-\\-kpry57d|xn\\-\\-lgbbat1ad8j|xn\\-\\-mgbaam7a8h|xn\\-\\-mgbayh7gpa|xn\\-\\-mgbbh1a71e|xn\\-\\-mgbc0a9azcg|xn\\-\\-mgberp4a5d4ar|xn\\-\\-o3cw4h|xn\\-\\-ogbpf8fl|xn\\-\\-p1ai|xn\\-\\-pgbs0dh|xn\\-\\-s9brj9c|xn\\-\\-wgbh1c|xn\\-\\-wgbl6a|xn\\-\\-xkc2al3hye2a|xn\\-\\-xkc2dl3a5ee0h|xn\\-\\-yfro4i67o|xn\\-\\-ygbi2ammx|xn\\-\\-zckzah|xxx)|y[et]|z[amw]))";
-    field public static final java.util.regex.Pattern WEB_URL;
-  }
-
-  public class PrintStreamPrinter implements android.util.Printer {
-    ctor public PrintStreamPrinter(java.io.PrintStream);
-    method public void println(String);
-  }
-
-  public class PrintWriterPrinter implements android.util.Printer {
-    ctor public PrintWriterPrinter(java.io.PrintWriter);
-    method public void println(String);
-  }
-
-  public interface Printer {
-    method public void println(String);
-  }
-
-  public abstract class Property<T, V> {
-    ctor public Property(Class<V>, String);
-    method public abstract V get(T);
-    method public String getName();
-    method public Class<V> getType();
-    method public boolean isReadOnly();
-    method public static <T, V> android.util.Property<T,V> of(Class<T>, Class<V>, String);
-    method public void set(T, V);
-  }
-
-  public final class Range<T extends java.lang.Comparable<? super T>> {
-    ctor public Range(T, T);
-    method public T clamp(T);
-    method public boolean contains(T);
-    method public boolean contains(android.util.Range<T>);
-    method public static <T extends java.lang.Comparable<? super T>> android.util.Range<T> create(T, T);
-    method public android.util.Range<T> extend(android.util.Range<T>);
-    method public android.util.Range<T> extend(T, T);
-    method public android.util.Range<T> extend(T);
-    method public T getLower();
-    method public T getUpper();
-    method public android.util.Range<T> intersect(android.util.Range<T>);
-    method public android.util.Range<T> intersect(T, T);
-  }
-
-  public final class Rational extends java.lang.Number implements java.lang.Comparable<android.util.Rational> {
-    ctor public Rational(int, int);
-    method public int compareTo(android.util.Rational);
-    method public double doubleValue();
-    method public float floatValue();
-    method public int getDenominator();
-    method public int getNumerator();
-    method public int intValue();
-    method public boolean isFinite();
-    method public boolean isInfinite();
-    method public boolean isNaN();
-    method public boolean isZero();
-    method public long longValue();
-    method public static android.util.Rational parseRational(String) throws java.lang.NumberFormatException;
-    field public static final android.util.Rational NEGATIVE_INFINITY;
-    field public static final android.util.Rational NaN;
-    field public static final android.util.Rational POSITIVE_INFINITY;
-    field public static final android.util.Rational ZERO;
-  }
-
-  public final class Size {
-    ctor public Size(int, int);
-    method public int getHeight();
-    method public int getWidth();
-    method public static android.util.Size parseSize(String) throws java.lang.NumberFormatException;
-  }
-
-  public final class SizeF {
-    ctor public SizeF(float, float);
-    method public float getHeight();
-    method public float getWidth();
-    method public static android.util.SizeF parseSizeF(String) throws java.lang.NumberFormatException;
-  }
-
-  public class SparseArray<E> implements java.lang.Cloneable {
-    ctor public SparseArray();
-    ctor public SparseArray(int);
-    method public void append(int, E);
-    method public void clear();
-    method public android.util.SparseArray<E> clone();
-    method public boolean contains(int);
-    method public void delete(int);
-    method public E get(int);
-    method public E get(int, E);
-    method public int indexOfKey(int);
-    method public int indexOfValue(E);
-    method public int keyAt(int);
-    method public void put(int, E);
-    method public void remove(int);
-    method public void removeAt(int);
-    method public void removeAtRange(int, int);
-    method public void setValueAt(int, E);
-    method public int size();
-    method public E valueAt(int);
-  }
-
-  public class SparseBooleanArray implements java.lang.Cloneable {
-    ctor public SparseBooleanArray();
-    ctor public SparseBooleanArray(int);
-    method public void append(int, boolean);
-    method public void clear();
-    method public android.util.SparseBooleanArray clone();
-    method public void delete(int);
-    method public boolean get(int);
-    method public boolean get(int, boolean);
-    method public int indexOfKey(int);
-    method public int indexOfValue(boolean);
-    method public int keyAt(int);
-    method public void put(int, boolean);
-    method public void removeAt(int);
-    method public void setValueAt(int, boolean);
-    method public int size();
-    method public boolean valueAt(int);
-  }
-
-  public class SparseIntArray implements java.lang.Cloneable {
-    ctor public SparseIntArray();
-    ctor public SparseIntArray(int);
-    method public void append(int, int);
-    method public void clear();
-    method public android.util.SparseIntArray clone();
-    method public void delete(int);
-    method public int get(int);
-    method public int get(int, int);
-    method public int indexOfKey(int);
-    method public int indexOfValue(int);
-    method public int keyAt(int);
-    method public void put(int, int);
-    method public void removeAt(int);
-    method public void setValueAt(int, int);
-    method public int size();
-    method public int valueAt(int);
-  }
-
-  public class SparseLongArray implements java.lang.Cloneable {
-    ctor public SparseLongArray();
-    ctor public SparseLongArray(int);
-    method public void append(int, long);
-    method public void clear();
-    method public android.util.SparseLongArray clone();
-    method public void delete(int);
-    method public long get(int);
-    method public long get(int, long);
-    method public int indexOfKey(int);
-    method public int indexOfValue(long);
-    method public int keyAt(int);
-    method public void put(int, long);
-    method public void removeAt(int);
-    method public int size();
-    method public long valueAt(int);
-  }
-
-  public class StateSet {
-    method public static String dump(int[]);
-    method public static boolean isWildCard(int[]);
-    method public static boolean stateSetMatches(int[], int[]);
-    method public static boolean stateSetMatches(int[], int);
-    method public static int[] trimStateSet(int[], int);
-    field public static final int[] NOTHING;
-    field public static final int[] WILD_CARD;
-  }
-
-  public final class StatsLog {
-    method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public static boolean logBinaryPushStateChanged(@NonNull String, long, int, int, @NonNull long[]);
-    method public static boolean logEvent(int);
-    method public static boolean logStart(int);
-    method public static boolean logStop(int);
-  }
-
-  public class StringBuilderPrinter implements android.util.Printer {
-    ctor public StringBuilderPrinter(StringBuilder);
-    method public void println(String);
-  }
-
-  public class TimeFormatException extends java.lang.RuntimeException {
-  }
-
-  public class TimeUtils {
-    method public static java.util.TimeZone getTimeZone(int, boolean, long, String);
-    method public static String getTimeZoneDatabaseVersion();
-    method @Nullable public static java.util.List<java.lang.String> getTimeZoneIdsForCountryCode(@NonNull String);
-    method public static boolean isTimeBetween(@NonNull java.time.LocalTime, @NonNull java.time.LocalTime, @NonNull java.time.LocalTime);
-  }
-
-  @Deprecated public class TimingLogger {
-    ctor @Deprecated public TimingLogger(String, String);
-    method @Deprecated public void addSplit(String);
-    method @Deprecated public void dumpToLog();
-    method @Deprecated public void reset(String, String);
-    method @Deprecated public void reset();
-  }
-
-  public class TypedValue {
-    ctor public TypedValue();
-    method public static float applyDimension(int, float, android.util.DisplayMetrics);
-    method public final CharSequence coerceToString();
-    method public static final String coerceToString(int, int);
-    method public static float complexToDimension(int, android.util.DisplayMetrics);
-    method public static int complexToDimensionPixelOffset(int, android.util.DisplayMetrics);
-    method public static int complexToDimensionPixelSize(int, android.util.DisplayMetrics);
-    method public static float complexToFloat(int);
-    method public static float complexToFraction(int, float, float);
-    method public int getComplexUnit();
-    method public float getDimension(android.util.DisplayMetrics);
-    method public final float getFloat();
-    method public float getFraction(float, float);
-    method public boolean isColorType();
-    method public void setTo(android.util.TypedValue);
-    field public static final int COMPLEX_MANTISSA_MASK = 16777215; // 0xffffff
-    field public static final int COMPLEX_MANTISSA_SHIFT = 8; // 0x8
-    field public static final int COMPLEX_RADIX_0p23 = 3; // 0x3
-    field public static final int COMPLEX_RADIX_16p7 = 1; // 0x1
-    field public static final int COMPLEX_RADIX_23p0 = 0; // 0x0
-    field public static final int COMPLEX_RADIX_8p15 = 2; // 0x2
-    field public static final int COMPLEX_RADIX_MASK = 3; // 0x3
-    field public static final int COMPLEX_RADIX_SHIFT = 4; // 0x4
-    field public static final int COMPLEX_UNIT_DIP = 1; // 0x1
-    field public static final int COMPLEX_UNIT_FRACTION = 0; // 0x0
-    field public static final int COMPLEX_UNIT_FRACTION_PARENT = 1; // 0x1
-    field public static final int COMPLEX_UNIT_IN = 4; // 0x4
-    field public static final int COMPLEX_UNIT_MASK = 15; // 0xf
-    field public static final int COMPLEX_UNIT_MM = 5; // 0x5
-    field public static final int COMPLEX_UNIT_PT = 3; // 0x3
-    field public static final int COMPLEX_UNIT_PX = 0; // 0x0
-    field public static final int COMPLEX_UNIT_SHIFT = 0; // 0x0
-    field public static final int COMPLEX_UNIT_SP = 2; // 0x2
-    field public static final int DATA_NULL_EMPTY = 1; // 0x1
-    field public static final int DATA_NULL_UNDEFINED = 0; // 0x0
-    field public static final int DENSITY_DEFAULT = 0; // 0x0
-    field public static final int DENSITY_NONE = 65535; // 0xffff
-    field public static final int TYPE_ATTRIBUTE = 2; // 0x2
-    field public static final int TYPE_DIMENSION = 5; // 0x5
-    field public static final int TYPE_FIRST_COLOR_INT = 28; // 0x1c
-    field public static final int TYPE_FIRST_INT = 16; // 0x10
-    field public static final int TYPE_FLOAT = 4; // 0x4
-    field public static final int TYPE_FRACTION = 6; // 0x6
-    field public static final int TYPE_INT_BOOLEAN = 18; // 0x12
-    field public static final int TYPE_INT_COLOR_ARGB4 = 30; // 0x1e
-    field public static final int TYPE_INT_COLOR_ARGB8 = 28; // 0x1c
-    field public static final int TYPE_INT_COLOR_RGB4 = 31; // 0x1f
-    field public static final int TYPE_INT_COLOR_RGB8 = 29; // 0x1d
-    field public static final int TYPE_INT_DEC = 16; // 0x10
-    field public static final int TYPE_INT_HEX = 17; // 0x11
-    field public static final int TYPE_LAST_COLOR_INT = 31; // 0x1f
-    field public static final int TYPE_LAST_INT = 31; // 0x1f
-    field public static final int TYPE_NULL = 0; // 0x0
-    field public static final int TYPE_REFERENCE = 1; // 0x1
-    field public static final int TYPE_STRING = 3; // 0x3
-    field public int assetCookie;
-    field public int changingConfigurations;
-    field public int data;
-    field public int density;
-    field @AnyRes public int resourceId;
-    field public int sourceResourceId;
-    field public CharSequence string;
-    field public int type;
-  }
-
-  public class Xml {
-    method public static android.util.AttributeSet asAttributeSet(org.xmlpull.v1.XmlPullParser);
-    method public static android.util.Xml.Encoding findEncodingByName(String) throws java.io.UnsupportedEncodingException;
-    method public static org.xmlpull.v1.XmlPullParser newPullParser();
-    method public static org.xmlpull.v1.XmlSerializer newSerializer();
-    method public static void parse(String, org.xml.sax.ContentHandler) throws org.xml.sax.SAXException;
-    method public static void parse(java.io.Reader, org.xml.sax.ContentHandler) throws java.io.IOException, org.xml.sax.SAXException;
-    method public static void parse(java.io.InputStream, android.util.Xml.Encoding, org.xml.sax.ContentHandler) throws java.io.IOException, org.xml.sax.SAXException;
-    field public static String FEATURE_RELAXED;
-  }
-
-  public enum Xml.Encoding {
-    enum_constant public static final android.util.Xml.Encoding ISO_8859_1;
-    enum_constant public static final android.util.Xml.Encoding US_ASCII;
-    enum_constant public static final android.util.Xml.Encoding UTF_16;
-    enum_constant public static final android.util.Xml.Encoding UTF_8;
-  }
-
-}
-
-package android.util.proto {
-
-  public final class ProtoOutputStream {
-    ctor public ProtoOutputStream();
-    ctor public ProtoOutputStream(int);
-    ctor public ProtoOutputStream(@NonNull java.io.OutputStream);
-    method public static int checkFieldId(long, long);
-    method public void dump(@NonNull String);
-    method public void end(long);
-    method public void flush();
-    method @NonNull public byte[] getBytes();
-    method @Nullable public static String getFieldCountString(long);
-    method @NonNull public static String getFieldIdString(long);
-    method @Nullable public static String getFieldTypeString(long);
-    method public int getRawSize();
-    method @Nullable public static String getWireTypeString(int);
-    method public static long makeFieldId(int, long);
-    method public static long makeToken(int, boolean, int, int, int);
-    method public long start(long);
-    method @NonNull public static String token2String(long);
-    method public void write(long, double);
-    method public void write(long, float);
-    method public void write(long, int);
-    method public void write(long, long);
-    method public void write(long, boolean);
-    method public void write(long, @Nullable String);
-    method public void write(long, @Nullable byte[]);
-    method public void writeTag(int, int);
-    field public static final long FIELD_COUNT_MASK = 16492674416640L; // 0xf0000000000L
-    field public static final long FIELD_COUNT_PACKED = 5497558138880L; // 0x50000000000L
-    field public static final long FIELD_COUNT_REPEATED = 2199023255552L; // 0x20000000000L
-    field public static final int FIELD_COUNT_SHIFT = 40; // 0x28
-    field public static final long FIELD_COUNT_SINGLE = 1099511627776L; // 0x10000000000L
-    field public static final long FIELD_COUNT_UNKNOWN = 0L; // 0x0L
-    field public static final int FIELD_ID_SHIFT = 3; // 0x3
-    field public static final long FIELD_TYPE_BOOL = 34359738368L; // 0x800000000L
-    field public static final long FIELD_TYPE_BYTES = 51539607552L; // 0xc00000000L
-    field public static final long FIELD_TYPE_DOUBLE = 4294967296L; // 0x100000000L
-    field public static final long FIELD_TYPE_ENUM = 60129542144L; // 0xe00000000L
-    field public static final long FIELD_TYPE_FIXED32 = 30064771072L; // 0x700000000L
-    field public static final long FIELD_TYPE_FIXED64 = 25769803776L; // 0x600000000L
-    field public static final long FIELD_TYPE_FLOAT = 8589934592L; // 0x200000000L
-    field public static final long FIELD_TYPE_INT32 = 21474836480L; // 0x500000000L
-    field public static final long FIELD_TYPE_INT64 = 12884901888L; // 0x300000000L
-    field public static final long FIELD_TYPE_MASK = 1095216660480L; // 0xff00000000L
-    field public static final long FIELD_TYPE_MESSAGE = 47244640256L; // 0xb00000000L
-    field public static final long FIELD_TYPE_SFIXED32 = 64424509440L; // 0xf00000000L
-    field public static final long FIELD_TYPE_SFIXED64 = 68719476736L; // 0x1000000000L
-    field public static final int FIELD_TYPE_SHIFT = 32; // 0x20
-    field public static final long FIELD_TYPE_SINT32 = 73014444032L; // 0x1100000000L
-    field public static final long FIELD_TYPE_SINT64 = 77309411328L; // 0x1200000000L
-    field public static final long FIELD_TYPE_STRING = 38654705664L; // 0x900000000L
-    field public static final long FIELD_TYPE_UINT32 = 55834574848L; // 0xd00000000L
-    field public static final long FIELD_TYPE_UINT64 = 17179869184L; // 0x400000000L
-    field public static final int WIRE_TYPE_END_GROUP = 4; // 0x4
-    field public static final int WIRE_TYPE_FIXED32 = 5; // 0x5
-    field public static final int WIRE_TYPE_FIXED64 = 1; // 0x1
-    field public static final int WIRE_TYPE_LENGTH_DELIMITED = 2; // 0x2
-    field public static final int WIRE_TYPE_MASK = 7; // 0x7
-    field public static final int WIRE_TYPE_START_GROUP = 3; // 0x3
-    field public static final int WIRE_TYPE_VARINT = 0; // 0x0
-  }
-
-}
-
-package android.view {
-
-  public abstract class AbsSavedState implements android.os.Parcelable {
-    ctor protected AbsSavedState(android.os.Parcelable);
-    ctor protected AbsSavedState(android.os.Parcel);
-    ctor protected AbsSavedState(android.os.Parcel, ClassLoader);
-    method public int describeContents();
-    method public final android.os.Parcelable getSuperState();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.AbsSavedState> CREATOR;
-    field public static final android.view.AbsSavedState EMPTY_STATE;
-  }
-
-  public abstract class ActionMode {
-    ctor public ActionMode();
-    method public abstract void finish();
-    method public abstract android.view.View getCustomView();
-    method public abstract android.view.Menu getMenu();
-    method public abstract android.view.MenuInflater getMenuInflater();
-    method public abstract CharSequence getSubtitle();
-    method public Object getTag();
-    method public abstract CharSequence getTitle();
-    method public boolean getTitleOptionalHint();
-    method public int getType();
-    method public void hide(long);
-    method public abstract void invalidate();
-    method public void invalidateContentRect();
-    method public boolean isTitleOptional();
-    method public void onWindowFocusChanged(boolean);
-    method public abstract void setCustomView(android.view.View);
-    method public abstract void setSubtitle(CharSequence);
-    method public abstract void setSubtitle(@StringRes int);
-    method public void setTag(Object);
-    method public abstract void setTitle(CharSequence);
-    method public abstract void setTitle(@StringRes int);
-    method public void setTitleOptionalHint(boolean);
-    method public void setType(int);
-    field public static final int DEFAULT_HIDE_DURATION = -1; // 0xffffffff
-    field public static final int TYPE_FLOATING = 1; // 0x1
-    field public static final int TYPE_PRIMARY = 0; // 0x0
-  }
-
-  public static interface ActionMode.Callback {
-    method public boolean onActionItemClicked(android.view.ActionMode, android.view.MenuItem);
-    method public boolean onCreateActionMode(android.view.ActionMode, android.view.Menu);
-    method public void onDestroyActionMode(android.view.ActionMode);
-    method public boolean onPrepareActionMode(android.view.ActionMode, android.view.Menu);
-  }
-
-  public abstract static class ActionMode.Callback2 implements android.view.ActionMode.Callback {
-    ctor public ActionMode.Callback2();
-    method public void onGetContentRect(android.view.ActionMode, android.view.View, android.graphics.Rect);
-  }
-
-  public abstract class ActionProvider {
-    ctor public ActionProvider(android.content.Context);
-    method public boolean hasSubMenu();
-    method public boolean isVisible();
-    method @Deprecated public abstract android.view.View onCreateActionView();
-    method public android.view.View onCreateActionView(android.view.MenuItem);
-    method public boolean onPerformDefaultAction();
-    method public void onPrepareSubMenu(android.view.SubMenu);
-    method public boolean overridesItemVisibility();
-    method public void refreshVisibility();
-    method public void setVisibilityListener(android.view.ActionProvider.VisibilityListener);
-  }
-
-  public static interface ActionProvider.VisibilityListener {
-    method public void onActionProviderVisibilityChanged(boolean);
-  }
-
-  public final class Choreographer {
-    method public static android.view.Choreographer getInstance();
-    method public void postFrameCallback(android.view.Choreographer.FrameCallback);
-    method public void postFrameCallbackDelayed(android.view.Choreographer.FrameCallback, long);
-    method public void removeFrameCallback(android.view.Choreographer.FrameCallback);
-  }
-
-  public static interface Choreographer.FrameCallback {
-    method public void doFrame(long);
-  }
-
-  public interface CollapsibleActionView {
-    method public void onActionViewCollapsed();
-    method public void onActionViewExpanded();
-  }
-
-  public interface ContextMenu extends android.view.Menu {
-    method public void clearHeader();
-    method public android.view.ContextMenu setHeaderIcon(@DrawableRes int);
-    method public android.view.ContextMenu setHeaderIcon(android.graphics.drawable.Drawable);
-    method public android.view.ContextMenu setHeaderTitle(@StringRes int);
-    method public android.view.ContextMenu setHeaderTitle(CharSequence);
-    method public android.view.ContextMenu setHeaderView(android.view.View);
-  }
-
-  public static interface ContextMenu.ContextMenuInfo {
-  }
-
-  public class ContextThemeWrapper extends android.content.ContextWrapper {
-    ctor public ContextThemeWrapper();
-    ctor public ContextThemeWrapper(android.content.Context, @StyleRes int);
-    ctor public ContextThemeWrapper(android.content.Context, android.content.res.Resources.Theme);
-    method public void applyOverrideConfiguration(android.content.res.Configuration);
-    method protected void onApplyThemeResource(android.content.res.Resources.Theme, int, boolean);
-    method public void setTheme(@Nullable android.content.res.Resources.Theme);
-  }
-
-  public final class Display {
-    method public long getAppVsyncOffsetNanos();
-    method public void getCurrentSizeRange(android.graphics.Point, android.graphics.Point);
-    method @Nullable public android.view.DisplayCutout getCutout();
-    method public int getDisplayId();
-    method public int getFlags();
-    method public android.view.Display.HdrCapabilities getHdrCapabilities();
-    method @Deprecated public int getHeight();
-    method @Deprecated public void getMetrics(android.util.DisplayMetrics);
-    method public android.view.Display.Mode getMode();
-    method public String getName();
-    method @Deprecated public int getOrientation();
-    method @Deprecated public int getPixelFormat();
-    method @Nullable public android.graphics.ColorSpace getPreferredWideGamutColorSpace();
-    method public long getPresentationDeadlineNanos();
-    method public void getRealMetrics(android.util.DisplayMetrics);
-    method public void getRealSize(android.graphics.Point);
-    method @Deprecated public void getRectSize(android.graphics.Rect);
-    method public float getRefreshRate();
-    method public int getRotation();
-    method @Deprecated public void getSize(android.graphics.Point);
-    method public int getState();
-    method public android.view.Display.Mode[] getSupportedModes();
-    method @Deprecated public float[] getSupportedRefreshRates();
-    method @Deprecated public int getWidth();
-    method public boolean isHdr();
-    method public boolean isMinimalPostProcessingSupported();
-    method public boolean isValid();
-    method public boolean isWideColorGamut();
-    field public static final int DEFAULT_DISPLAY = 0; // 0x0
-    field public static final int FLAG_PRESENTATION = 8; // 0x8
-    field public static final int FLAG_PRIVATE = 4; // 0x4
-    field public static final int FLAG_ROUND = 16; // 0x10
-    field public static final int FLAG_SECURE = 2; // 0x2
-    field public static final int FLAG_SUPPORTS_PROTECTED_BUFFERS = 1; // 0x1
-    field public static final int INVALID_DISPLAY = -1; // 0xffffffff
-    field public static final int STATE_DOZE = 3; // 0x3
-    field public static final int STATE_DOZE_SUSPEND = 4; // 0x4
-    field public static final int STATE_OFF = 1; // 0x1
-    field public static final int STATE_ON = 2; // 0x2
-    field public static final int STATE_ON_SUSPEND = 6; // 0x6
-    field public static final int STATE_UNKNOWN = 0; // 0x0
-    field public static final int STATE_VR = 5; // 0x5
-  }
-
-  public static final class Display.HdrCapabilities implements android.os.Parcelable {
-    method public int describeContents();
-    method public float getDesiredMaxAverageLuminance();
-    method public float getDesiredMaxLuminance();
-    method public float getDesiredMinLuminance();
-    method public int[] getSupportedHdrTypes();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.Display.HdrCapabilities> CREATOR;
-    field public static final int HDR_TYPE_DOLBY_VISION = 1; // 0x1
-    field public static final int HDR_TYPE_HDR10 = 2; // 0x2
-    field public static final int HDR_TYPE_HDR10_PLUS = 4; // 0x4
-    field public static final int HDR_TYPE_HLG = 3; // 0x3
-    field public static final float INVALID_LUMINANCE = -1.0f;
-  }
-
-  public static final class Display.Mode implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getModeId();
-    method public int getPhysicalHeight();
-    method public int getPhysicalWidth();
-    method public float getRefreshRate();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.Display.Mode> CREATOR;
-  }
-
-  public final class DisplayCutout {
-    ctor public DisplayCutout(@NonNull android.graphics.Insets, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect);
-    ctor public DisplayCutout(@NonNull android.graphics.Insets, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect, @NonNull android.graphics.Insets);
-    ctor @Deprecated public DisplayCutout(@Nullable android.graphics.Rect, @Nullable java.util.List<android.graphics.Rect>);
-    method @NonNull public android.graphics.Rect getBoundingRectBottom();
-    method @NonNull public android.graphics.Rect getBoundingRectLeft();
-    method @NonNull public android.graphics.Rect getBoundingRectRight();
-    method @NonNull public android.graphics.Rect getBoundingRectTop();
-    method @NonNull public java.util.List<android.graphics.Rect> getBoundingRects();
-    method public int getSafeInsetBottom();
-    method public int getSafeInsetLeft();
-    method public int getSafeInsetRight();
-    method public int getSafeInsetTop();
-    method @NonNull public android.graphics.Insets getWaterfallInsets();
-  }
-
-  public final class DragAndDropPermissions implements android.os.Parcelable {
-    method public int describeContents();
-    method public void release();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.DragAndDropPermissions> CREATOR;
-  }
-
-  public class DragEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAction();
-    method public android.content.ClipData getClipData();
-    method public android.content.ClipDescription getClipDescription();
-    method public Object getLocalState();
-    method public boolean getResult();
-    method public float getX();
-    method public float getY();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ACTION_DRAG_ENDED = 4; // 0x4
-    field public static final int ACTION_DRAG_ENTERED = 5; // 0x5
-    field public static final int ACTION_DRAG_EXITED = 6; // 0x6
-    field public static final int ACTION_DRAG_LOCATION = 2; // 0x2
-    field public static final int ACTION_DRAG_STARTED = 1; // 0x1
-    field public static final int ACTION_DROP = 3; // 0x3
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.DragEvent> CREATOR;
-  }
-
-  public class FocusFinder {
-    method public android.view.View findNearestTouchable(android.view.ViewGroup, int, int, int, int[]);
-    method public final android.view.View findNextFocus(android.view.ViewGroup, android.view.View, int);
-    method public android.view.View findNextFocusFromRect(android.view.ViewGroup, android.graphics.Rect, int);
-    method public android.view.View findNextKeyboardNavigationCluster(@NonNull android.view.View, @Nullable android.view.View, int);
-    method public static android.view.FocusFinder getInstance();
-  }
-
-  public final class FrameMetrics {
-    ctor public FrameMetrics(android.view.FrameMetrics);
-    method public long getMetric(int);
-    field public static final int ANIMATION_DURATION = 2; // 0x2
-    field public static final int COMMAND_ISSUE_DURATION = 6; // 0x6
-    field public static final int DRAW_DURATION = 4; // 0x4
-    field public static final int FIRST_DRAW_FRAME = 9; // 0x9
-    field public static final int INPUT_HANDLING_DURATION = 1; // 0x1
-    field public static final int INTENDED_VSYNC_TIMESTAMP = 10; // 0xa
-    field public static final int LAYOUT_MEASURE_DURATION = 3; // 0x3
-    field public static final int SWAP_BUFFERS_DURATION = 7; // 0x7
-    field public static final int SYNC_DURATION = 5; // 0x5
-    field public static final int TOTAL_DURATION = 8; // 0x8
-    field public static final int UNKNOWN_DELAY_DURATION = 0; // 0x0
-    field public static final int VSYNC_TIMESTAMP = 11; // 0xb
-  }
-
-  public abstract class FrameStats {
-    ctor public FrameStats();
-    method public final long getEndTimeNano();
-    method public final int getFrameCount();
-    method public final long getFramePresentedTimeNano(int);
-    method public final long getRefreshPeriodNano();
-    method public final long getStartTimeNano();
-    field public static final long UNDEFINED_TIME_NANO = -1L; // 0xffffffffffffffffL
-  }
-
-  public class GestureDetector {
-    ctor @Deprecated public GestureDetector(android.view.GestureDetector.OnGestureListener, android.os.Handler);
-    ctor @Deprecated public GestureDetector(android.view.GestureDetector.OnGestureListener);
-    ctor public GestureDetector(android.content.Context, android.view.GestureDetector.OnGestureListener);
-    ctor public GestureDetector(android.content.Context, android.view.GestureDetector.OnGestureListener, android.os.Handler);
-    ctor public GestureDetector(android.content.Context, android.view.GestureDetector.OnGestureListener, android.os.Handler, boolean);
-    method public boolean isLongpressEnabled();
-    method public boolean onGenericMotionEvent(android.view.MotionEvent);
-    method public boolean onTouchEvent(android.view.MotionEvent);
-    method public void setContextClickListener(android.view.GestureDetector.OnContextClickListener);
-    method public void setIsLongpressEnabled(boolean);
-    method public void setOnDoubleTapListener(android.view.GestureDetector.OnDoubleTapListener);
-  }
-
-  public static interface GestureDetector.OnContextClickListener {
-    method public boolean onContextClick(android.view.MotionEvent);
-  }
-
-  public static interface GestureDetector.OnDoubleTapListener {
-    method public boolean onDoubleTap(android.view.MotionEvent);
-    method public boolean onDoubleTapEvent(android.view.MotionEvent);
-    method public boolean onSingleTapConfirmed(android.view.MotionEvent);
-  }
-
-  public static interface GestureDetector.OnGestureListener {
-    method public boolean onDown(android.view.MotionEvent);
-    method public boolean onFling(android.view.MotionEvent, android.view.MotionEvent, float, float);
-    method public void onLongPress(android.view.MotionEvent);
-    method public boolean onScroll(android.view.MotionEvent, android.view.MotionEvent, float, float);
-    method public void onShowPress(android.view.MotionEvent);
-    method public boolean onSingleTapUp(android.view.MotionEvent);
-  }
-
-  public static class GestureDetector.SimpleOnGestureListener implements android.view.GestureDetector.OnContextClickListener android.view.GestureDetector.OnDoubleTapListener android.view.GestureDetector.OnGestureListener {
-    ctor public GestureDetector.SimpleOnGestureListener();
-    method public boolean onContextClick(android.view.MotionEvent);
-    method public boolean onDoubleTap(android.view.MotionEvent);
-    method public boolean onDoubleTapEvent(android.view.MotionEvent);
-    method public boolean onDown(android.view.MotionEvent);
-    method public boolean onFling(android.view.MotionEvent, android.view.MotionEvent, float, float);
-    method public void onLongPress(android.view.MotionEvent);
-    method public boolean onScroll(android.view.MotionEvent, android.view.MotionEvent, float, float);
-    method public void onShowPress(android.view.MotionEvent);
-    method public boolean onSingleTapConfirmed(android.view.MotionEvent);
-    method public boolean onSingleTapUp(android.view.MotionEvent);
-  }
-
-  public class Gravity {
-    ctor public Gravity();
-    method public static void apply(int, int, int, android.graphics.Rect, android.graphics.Rect);
-    method public static void apply(int, int, int, android.graphics.Rect, android.graphics.Rect, int);
-    method public static void apply(int, int, int, android.graphics.Rect, int, int, android.graphics.Rect);
-    method public static void apply(int, int, int, android.graphics.Rect, int, int, android.graphics.Rect, int);
-    method public static void applyDisplay(int, android.graphics.Rect, android.graphics.Rect);
-    method public static void applyDisplay(int, android.graphics.Rect, android.graphics.Rect, int);
-    method public static int getAbsoluteGravity(int, int);
-    method public static boolean isHorizontal(int);
-    method public static boolean isVertical(int);
-    field public static final int AXIS_CLIP = 8; // 0x8
-    field public static final int AXIS_PULL_AFTER = 4; // 0x4
-    field public static final int AXIS_PULL_BEFORE = 2; // 0x2
-    field public static final int AXIS_SPECIFIED = 1; // 0x1
-    field public static final int AXIS_X_SHIFT = 0; // 0x0
-    field public static final int AXIS_Y_SHIFT = 4; // 0x4
-    field public static final int BOTTOM = 80; // 0x50
-    field public static final int CENTER = 17; // 0x11
-    field public static final int CENTER_HORIZONTAL = 1; // 0x1
-    field public static final int CENTER_VERTICAL = 16; // 0x10
-    field public static final int CLIP_HORIZONTAL = 8; // 0x8
-    field public static final int CLIP_VERTICAL = 128; // 0x80
-    field public static final int DISPLAY_CLIP_HORIZONTAL = 16777216; // 0x1000000
-    field public static final int DISPLAY_CLIP_VERTICAL = 268435456; // 0x10000000
-    field public static final int END = 8388613; // 0x800005
-    field public static final int FILL = 119; // 0x77
-    field public static final int FILL_HORIZONTAL = 7; // 0x7
-    field public static final int FILL_VERTICAL = 112; // 0x70
-    field public static final int HORIZONTAL_GRAVITY_MASK = 7; // 0x7
-    field public static final int LEFT = 3; // 0x3
-    field public static final int NO_GRAVITY = 0; // 0x0
-    field public static final int RELATIVE_HORIZONTAL_GRAVITY_MASK = 8388615; // 0x800007
-    field public static final int RELATIVE_LAYOUT_DIRECTION = 8388608; // 0x800000
-    field public static final int RIGHT = 5; // 0x5
-    field public static final int START = 8388611; // 0x800003
-    field public static final int TOP = 48; // 0x30
-    field public static final int VERTICAL_GRAVITY_MASK = 112; // 0x70
-  }
-
-  public class HapticFeedbackConstants {
-    field public static final int CLOCK_TICK = 4; // 0x4
-    field public static final int CONFIRM = 16; // 0x10
-    field public static final int CONTEXT_CLICK = 6; // 0x6
-    field public static final int FLAG_IGNORE_GLOBAL_SETTING = 2; // 0x2
-    field public static final int FLAG_IGNORE_VIEW_SETTING = 1; // 0x1
-    field public static final int GESTURE_END = 13; // 0xd
-    field public static final int GESTURE_START = 12; // 0xc
-    field public static final int KEYBOARD_PRESS = 3; // 0x3
-    field public static final int KEYBOARD_RELEASE = 7; // 0x7
-    field public static final int KEYBOARD_TAP = 3; // 0x3
-    field public static final int LONG_PRESS = 0; // 0x0
-    field public static final int REJECT = 17; // 0x11
-    field public static final int TEXT_HANDLE_MOVE = 9; // 0x9
-    field public static final int VIRTUAL_KEY = 1; // 0x1
-    field public static final int VIRTUAL_KEY_RELEASE = 8; // 0x8
-  }
-
-  public class InflateException extends java.lang.RuntimeException {
-    ctor public InflateException();
-    ctor public InflateException(String, Throwable);
-    ctor public InflateException(String);
-    ctor public InflateException(Throwable);
-  }
-
-  public final class InputDevice implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getControllerNumber();
-    method public String getDescriptor();
-    method public static android.view.InputDevice getDevice(int);
-    method public static int[] getDeviceIds();
-    method public int getId();
-    method public android.view.KeyCharacterMap getKeyCharacterMap();
-    method public int getKeyboardType();
-    method public android.view.InputDevice.MotionRange getMotionRange(int);
-    method public android.view.InputDevice.MotionRange getMotionRange(int, int);
-    method public java.util.List<android.view.InputDevice.MotionRange> getMotionRanges();
-    method public String getName();
-    method public int getProductId();
-    method public int getSources();
-    method public int getVendorId();
-    method public android.os.Vibrator getVibrator();
-    method public boolean[] hasKeys(int...);
-    method public boolean hasMicrophone();
-    method public boolean isEnabled();
-    method public boolean isExternal();
-    method public boolean isVirtual();
-    method public boolean supportsSource(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.InputDevice> CREATOR;
-    field public static final int KEYBOARD_TYPE_ALPHABETIC = 2; // 0x2
-    field public static final int KEYBOARD_TYPE_NONE = 0; // 0x0
-    field public static final int KEYBOARD_TYPE_NON_ALPHABETIC = 1; // 0x1
-    field @Deprecated public static final int MOTION_RANGE_ORIENTATION = 8; // 0x8
-    field @Deprecated public static final int MOTION_RANGE_PRESSURE = 2; // 0x2
-    field @Deprecated public static final int MOTION_RANGE_SIZE = 3; // 0x3
-    field @Deprecated public static final int MOTION_RANGE_TOOL_MAJOR = 6; // 0x6
-    field @Deprecated public static final int MOTION_RANGE_TOOL_MINOR = 7; // 0x7
-    field @Deprecated public static final int MOTION_RANGE_TOUCH_MAJOR = 4; // 0x4
-    field @Deprecated public static final int MOTION_RANGE_TOUCH_MINOR = 5; // 0x5
-    field @Deprecated public static final int MOTION_RANGE_X = 0; // 0x0
-    field @Deprecated public static final int MOTION_RANGE_Y = 1; // 0x1
-    field public static final int SOURCE_ANY = -256; // 0xffffff00
-    field public static final int SOURCE_BLUETOOTH_STYLUS = 49154; // 0xc002
-    field public static final int SOURCE_CLASS_BUTTON = 1; // 0x1
-    field public static final int SOURCE_CLASS_JOYSTICK = 16; // 0x10
-    field public static final int SOURCE_CLASS_MASK = 255; // 0xff
-    field public static final int SOURCE_CLASS_NONE = 0; // 0x0
-    field public static final int SOURCE_CLASS_POINTER = 2; // 0x2
-    field public static final int SOURCE_CLASS_POSITION = 8; // 0x8
-    field public static final int SOURCE_CLASS_TRACKBALL = 4; // 0x4
-    field public static final int SOURCE_DPAD = 513; // 0x201
-    field public static final int SOURCE_GAMEPAD = 1025; // 0x401
-    field public static final int SOURCE_HDMI = 33554433; // 0x2000001
-    field public static final int SOURCE_JOYSTICK = 16777232; // 0x1000010
-    field public static final int SOURCE_KEYBOARD = 257; // 0x101
-    field public static final int SOURCE_MOUSE = 8194; // 0x2002
-    field public static final int SOURCE_MOUSE_RELATIVE = 131076; // 0x20004
-    field public static final int SOURCE_ROTARY_ENCODER = 4194304; // 0x400000
-    field public static final int SOURCE_STYLUS = 16386; // 0x4002
-    field public static final int SOURCE_TOUCHPAD = 1048584; // 0x100008
-    field public static final int SOURCE_TOUCHSCREEN = 4098; // 0x1002
-    field public static final int SOURCE_TOUCH_NAVIGATION = 2097152; // 0x200000
-    field public static final int SOURCE_TRACKBALL = 65540; // 0x10004
-    field public static final int SOURCE_UNKNOWN = 0; // 0x0
-  }
-
-  public static final class InputDevice.MotionRange {
-    method public int getAxis();
-    method public float getFlat();
-    method public float getFuzz();
-    method public float getMax();
-    method public float getMin();
-    method public float getRange();
-    method public float getResolution();
-    method public int getSource();
-    method public boolean isFromSource(int);
-  }
-
-  public abstract class InputEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method public final android.view.InputDevice getDevice();
-    method public abstract int getDeviceId();
-    method public abstract long getEventTime();
-    method public abstract int getSource();
-    method public boolean isFromSource(int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.InputEvent> CREATOR;
-  }
-
-  public final class InputQueue {
-  }
-
-  public static interface InputQueue.Callback {
-    method public void onInputQueueCreated(android.view.InputQueue);
-    method public void onInputQueueDestroyed(android.view.InputQueue);
-  }
-
-  public class KeyCharacterMap implements android.os.Parcelable {
-    method public int describeContents();
-    method public static boolean deviceHasKey(int);
-    method public static boolean[] deviceHasKeys(int[]);
-    method public int get(int, int);
-    method public static int getDeadChar(int, int);
-    method public char getDisplayLabel(int);
-    method public android.view.KeyEvent[] getEvents(char[]);
-    method @Deprecated public boolean getKeyData(int, android.view.KeyCharacterMap.KeyData);
-    method public int getKeyboardType();
-    method public char getMatch(int, char[]);
-    method public char getMatch(int, char[], int);
-    method public int getModifierBehavior();
-    method public char getNumber(int);
-    method public boolean isPrintingKey(int);
-    method public static android.view.KeyCharacterMap load(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ALPHA = 3; // 0x3
-    field @Deprecated public static final int BUILT_IN_KEYBOARD = 0; // 0x0
-    field public static final int COMBINING_ACCENT = -2147483648; // 0x80000000
-    field public static final int COMBINING_ACCENT_MASK = 2147483647; // 0x7fffffff
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.KeyCharacterMap> CREATOR;
-    field public static final int FULL = 4; // 0x4
-    field public static final char HEX_INPUT = 61184; // 0xef00 '\uef00'
-    field public static final int MODIFIER_BEHAVIOR_CHORDED = 0; // 0x0
-    field public static final int MODIFIER_BEHAVIOR_CHORDED_OR_TOGGLED = 1; // 0x1
-    field public static final int NUMERIC = 1; // 0x1
-    field public static final char PICKER_DIALOG_INPUT = 61185; // 0xef01 '\uef01'
-    field public static final int PREDICTIVE = 2; // 0x2
-    field public static final int SPECIAL_FUNCTION = 5; // 0x5
-    field public static final int VIRTUAL_KEYBOARD = -1; // 0xffffffff
-  }
-
-  @Deprecated public static class KeyCharacterMap.KeyData {
-    ctor @Deprecated public KeyCharacterMap.KeyData();
-    field @Deprecated public static final int META_LENGTH = 4; // 0x4
-    field @Deprecated public char displayLabel;
-    field @Deprecated public char[] meta;
-    field @Deprecated public char number;
-  }
-
-  public static class KeyCharacterMap.UnavailableException extends android.util.AndroidRuntimeException {
-    ctor public KeyCharacterMap.UnavailableException(String);
-  }
-
-  public class KeyEvent extends android.view.InputEvent implements android.os.Parcelable {
-    ctor public KeyEvent(int, int);
-    ctor public KeyEvent(long, long, int, int, int);
-    ctor public KeyEvent(long, long, int, int, int, int);
-    ctor public KeyEvent(long, long, int, int, int, int, int, int);
-    ctor public KeyEvent(long, long, int, int, int, int, int, int, int);
-    ctor public KeyEvent(long, long, int, int, int, int, int, int, int, int);
-    ctor public KeyEvent(long, String, int, int);
-    ctor public KeyEvent(android.view.KeyEvent);
-    ctor @Deprecated public KeyEvent(android.view.KeyEvent, long, int);
-    method public static android.view.KeyEvent changeAction(android.view.KeyEvent, int);
-    method public static android.view.KeyEvent changeFlags(android.view.KeyEvent, int);
-    method public static android.view.KeyEvent changeTimeRepeat(android.view.KeyEvent, long, int);
-    method public static android.view.KeyEvent changeTimeRepeat(android.view.KeyEvent, long, int, int);
-    method @Deprecated public final boolean dispatch(android.view.KeyEvent.Callback);
-    method public final boolean dispatch(android.view.KeyEvent.Callback, android.view.KeyEvent.DispatcherState, Object);
-    method public final int getAction();
-    method @Deprecated public final String getCharacters();
-    method public static int getDeadChar(int, int);
-    method public final int getDeviceId();
-    method public char getDisplayLabel();
-    method public final long getDownTime();
-    method public final long getEventTime();
-    method public final int getFlags();
-    method public final android.view.KeyCharacterMap getKeyCharacterMap();
-    method public final int getKeyCode();
-    method @Deprecated public boolean getKeyData(android.view.KeyCharacterMap.KeyData);
-    method public char getMatch(char[]);
-    method public char getMatch(char[], int);
-    method public static int getMaxKeyCode();
-    method public final int getMetaState();
-    method public static int getModifierMetaStateMask();
-    method public final int getModifiers();
-    method public char getNumber();
-    method public final int getRepeatCount();
-    method public final int getScanCode();
-    method public final int getSource();
-    method public int getUnicodeChar();
-    method public int getUnicodeChar(int);
-    method public final boolean hasModifiers(int);
-    method public final boolean hasNoModifiers();
-    method public final boolean isAltPressed();
-    method public final boolean isCanceled();
-    method public final boolean isCapsLockOn();
-    method public final boolean isCtrlPressed();
-    method public final boolean isFunctionPressed();
-    method public static final boolean isGamepadButton(int);
-    method public final boolean isLongPress();
-    method public final boolean isMetaPressed();
-    method public static boolean isModifierKey(int);
-    method public final boolean isNumLockOn();
-    method public boolean isPrintingKey();
-    method public final boolean isScrollLockOn();
-    method public final boolean isShiftPressed();
-    method public final boolean isSymPressed();
-    method public final boolean isSystem();
-    method public final boolean isTracking();
-    method public static int keyCodeFromString(@NonNull String);
-    method public static String keyCodeToString(int);
-    method public static boolean metaStateHasModifiers(int, int);
-    method public static boolean metaStateHasNoModifiers(int);
-    method public static int normalizeMetaState(int);
-    method public final void setSource(int);
-    method public final void startTracking();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ACTION_DOWN = 0; // 0x0
-    field @Deprecated public static final int ACTION_MULTIPLE = 2; // 0x2
-    field public static final int ACTION_UP = 1; // 0x1
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.KeyEvent> CREATOR;
-    field public static final int FLAG_CANCELED = 32; // 0x20
-    field public static final int FLAG_CANCELED_LONG_PRESS = 256; // 0x100
-    field public static final int FLAG_EDITOR_ACTION = 16; // 0x10
-    field public static final int FLAG_FALLBACK = 1024; // 0x400
-    field public static final int FLAG_FROM_SYSTEM = 8; // 0x8
-    field public static final int FLAG_KEEP_TOUCH_MODE = 4; // 0x4
-    field public static final int FLAG_LONG_PRESS = 128; // 0x80
-    field public static final int FLAG_SOFT_KEYBOARD = 2; // 0x2
-    field public static final int FLAG_TRACKING = 512; // 0x200
-    field public static final int FLAG_VIRTUAL_HARD_KEY = 64; // 0x40
-    field @Deprecated public static final int FLAG_WOKE_HERE = 1; // 0x1
-    field public static final int KEYCODE_0 = 7; // 0x7
-    field public static final int KEYCODE_1 = 8; // 0x8
-    field public static final int KEYCODE_11 = 227; // 0xe3
-    field public static final int KEYCODE_12 = 228; // 0xe4
-    field public static final int KEYCODE_2 = 9; // 0x9
-    field public static final int KEYCODE_3 = 10; // 0xa
-    field public static final int KEYCODE_3D_MODE = 206; // 0xce
-    field public static final int KEYCODE_4 = 11; // 0xb
-    field public static final int KEYCODE_5 = 12; // 0xc
-    field public static final int KEYCODE_6 = 13; // 0xd
-    field public static final int KEYCODE_7 = 14; // 0xe
-    field public static final int KEYCODE_8 = 15; // 0xf
-    field public static final int KEYCODE_9 = 16; // 0x10
-    field public static final int KEYCODE_A = 29; // 0x1d
-    field public static final int KEYCODE_ALL_APPS = 284; // 0x11c
-    field public static final int KEYCODE_ALT_LEFT = 57; // 0x39
-    field public static final int KEYCODE_ALT_RIGHT = 58; // 0x3a
-    field public static final int KEYCODE_APOSTROPHE = 75; // 0x4b
-    field public static final int KEYCODE_APP_SWITCH = 187; // 0xbb
-    field public static final int KEYCODE_ASSIST = 219; // 0xdb
-    field public static final int KEYCODE_AT = 77; // 0x4d
-    field public static final int KEYCODE_AVR_INPUT = 182; // 0xb6
-    field public static final int KEYCODE_AVR_POWER = 181; // 0xb5
-    field public static final int KEYCODE_B = 30; // 0x1e
-    field public static final int KEYCODE_BACK = 4; // 0x4
-    field public static final int KEYCODE_BACKSLASH = 73; // 0x49
-    field public static final int KEYCODE_BOOKMARK = 174; // 0xae
-    field public static final int KEYCODE_BREAK = 121; // 0x79
-    field public static final int KEYCODE_BRIGHTNESS_DOWN = 220; // 0xdc
-    field public static final int KEYCODE_BRIGHTNESS_UP = 221; // 0xdd
-    field public static final int KEYCODE_BUTTON_1 = 188; // 0xbc
-    field public static final int KEYCODE_BUTTON_10 = 197; // 0xc5
-    field public static final int KEYCODE_BUTTON_11 = 198; // 0xc6
-    field public static final int KEYCODE_BUTTON_12 = 199; // 0xc7
-    field public static final int KEYCODE_BUTTON_13 = 200; // 0xc8
-    field public static final int KEYCODE_BUTTON_14 = 201; // 0xc9
-    field public static final int KEYCODE_BUTTON_15 = 202; // 0xca
-    field public static final int KEYCODE_BUTTON_16 = 203; // 0xcb
-    field public static final int KEYCODE_BUTTON_2 = 189; // 0xbd
-    field public static final int KEYCODE_BUTTON_3 = 190; // 0xbe
-    field public static final int KEYCODE_BUTTON_4 = 191; // 0xbf
-    field public static final int KEYCODE_BUTTON_5 = 192; // 0xc0
-    field public static final int KEYCODE_BUTTON_6 = 193; // 0xc1
-    field public static final int KEYCODE_BUTTON_7 = 194; // 0xc2
-    field public static final int KEYCODE_BUTTON_8 = 195; // 0xc3
-    field public static final int KEYCODE_BUTTON_9 = 196; // 0xc4
-    field public static final int KEYCODE_BUTTON_A = 96; // 0x60
-    field public static final int KEYCODE_BUTTON_B = 97; // 0x61
-    field public static final int KEYCODE_BUTTON_C = 98; // 0x62
-    field public static final int KEYCODE_BUTTON_L1 = 102; // 0x66
-    field public static final int KEYCODE_BUTTON_L2 = 104; // 0x68
-    field public static final int KEYCODE_BUTTON_MODE = 110; // 0x6e
-    field public static final int KEYCODE_BUTTON_R1 = 103; // 0x67
-    field public static final int KEYCODE_BUTTON_R2 = 105; // 0x69
-    field public static final int KEYCODE_BUTTON_SELECT = 109; // 0x6d
-    field public static final int KEYCODE_BUTTON_START = 108; // 0x6c
-    field public static final int KEYCODE_BUTTON_THUMBL = 106; // 0x6a
-    field public static final int KEYCODE_BUTTON_THUMBR = 107; // 0x6b
-    field public static final int KEYCODE_BUTTON_X = 99; // 0x63
-    field public static final int KEYCODE_BUTTON_Y = 100; // 0x64
-    field public static final int KEYCODE_BUTTON_Z = 101; // 0x65
-    field public static final int KEYCODE_C = 31; // 0x1f
-    field public static final int KEYCODE_CALCULATOR = 210; // 0xd2
-    field public static final int KEYCODE_CALENDAR = 208; // 0xd0
-    field public static final int KEYCODE_CALL = 5; // 0x5
-    field public static final int KEYCODE_CAMERA = 27; // 0x1b
-    field public static final int KEYCODE_CAPS_LOCK = 115; // 0x73
-    field public static final int KEYCODE_CAPTIONS = 175; // 0xaf
-    field public static final int KEYCODE_CHANNEL_DOWN = 167; // 0xa7
-    field public static final int KEYCODE_CHANNEL_UP = 166; // 0xa6
-    field public static final int KEYCODE_CLEAR = 28; // 0x1c
-    field public static final int KEYCODE_COMMA = 55; // 0x37
-    field public static final int KEYCODE_CONTACTS = 207; // 0xcf
-    field public static final int KEYCODE_COPY = 278; // 0x116
-    field public static final int KEYCODE_CTRL_LEFT = 113; // 0x71
-    field public static final int KEYCODE_CTRL_RIGHT = 114; // 0x72
-    field public static final int KEYCODE_CUT = 277; // 0x115
-    field public static final int KEYCODE_D = 32; // 0x20
-    field public static final int KEYCODE_DEL = 67; // 0x43
-    field public static final int KEYCODE_DPAD_CENTER = 23; // 0x17
-    field public static final int KEYCODE_DPAD_DOWN = 20; // 0x14
-    field public static final int KEYCODE_DPAD_DOWN_LEFT = 269; // 0x10d
-    field public static final int KEYCODE_DPAD_DOWN_RIGHT = 271; // 0x10f
-    field public static final int KEYCODE_DPAD_LEFT = 21; // 0x15
-    field public static final int KEYCODE_DPAD_RIGHT = 22; // 0x16
-    field public static final int KEYCODE_DPAD_UP = 19; // 0x13
-    field public static final int KEYCODE_DPAD_UP_LEFT = 268; // 0x10c
-    field public static final int KEYCODE_DPAD_UP_RIGHT = 270; // 0x10e
-    field public static final int KEYCODE_DVR = 173; // 0xad
-    field public static final int KEYCODE_E = 33; // 0x21
-    field public static final int KEYCODE_EISU = 212; // 0xd4
-    field public static final int KEYCODE_ENDCALL = 6; // 0x6
-    field public static final int KEYCODE_ENTER = 66; // 0x42
-    field public static final int KEYCODE_ENVELOPE = 65; // 0x41
-    field public static final int KEYCODE_EQUALS = 70; // 0x46
-    field public static final int KEYCODE_ESCAPE = 111; // 0x6f
-    field public static final int KEYCODE_EXPLORER = 64; // 0x40
-    field public static final int KEYCODE_F = 34; // 0x22
-    field public static final int KEYCODE_F1 = 131; // 0x83
-    field public static final int KEYCODE_F10 = 140; // 0x8c
-    field public static final int KEYCODE_F11 = 141; // 0x8d
-    field public static final int KEYCODE_F12 = 142; // 0x8e
-    field public static final int KEYCODE_F2 = 132; // 0x84
-    field public static final int KEYCODE_F3 = 133; // 0x85
-    field public static final int KEYCODE_F4 = 134; // 0x86
-    field public static final int KEYCODE_F5 = 135; // 0x87
-    field public static final int KEYCODE_F6 = 136; // 0x88
-    field public static final int KEYCODE_F7 = 137; // 0x89
-    field public static final int KEYCODE_F8 = 138; // 0x8a
-    field public static final int KEYCODE_F9 = 139; // 0x8b
-    field public static final int KEYCODE_FOCUS = 80; // 0x50
-    field public static final int KEYCODE_FORWARD = 125; // 0x7d
-    field public static final int KEYCODE_FORWARD_DEL = 112; // 0x70
-    field public static final int KEYCODE_FUNCTION = 119; // 0x77
-    field public static final int KEYCODE_G = 35; // 0x23
-    field public static final int KEYCODE_GRAVE = 68; // 0x44
-    field public static final int KEYCODE_GUIDE = 172; // 0xac
-    field public static final int KEYCODE_H = 36; // 0x24
-    field public static final int KEYCODE_HEADSETHOOK = 79; // 0x4f
-    field public static final int KEYCODE_HELP = 259; // 0x103
-    field public static final int KEYCODE_HENKAN = 214; // 0xd6
-    field public static final int KEYCODE_HOME = 3; // 0x3
-    field public static final int KEYCODE_I = 37; // 0x25
-    field public static final int KEYCODE_INFO = 165; // 0xa5
-    field public static final int KEYCODE_INSERT = 124; // 0x7c
-    field public static final int KEYCODE_J = 38; // 0x26
-    field public static final int KEYCODE_K = 39; // 0x27
-    field public static final int KEYCODE_KANA = 218; // 0xda
-    field public static final int KEYCODE_KATAKANA_HIRAGANA = 215; // 0xd7
-    field public static final int KEYCODE_L = 40; // 0x28
-    field public static final int KEYCODE_LANGUAGE_SWITCH = 204; // 0xcc
-    field public static final int KEYCODE_LAST_CHANNEL = 229; // 0xe5
-    field public static final int KEYCODE_LEFT_BRACKET = 71; // 0x47
-    field public static final int KEYCODE_M = 41; // 0x29
-    field public static final int KEYCODE_MANNER_MODE = 205; // 0xcd
-    field public static final int KEYCODE_MEDIA_AUDIO_TRACK = 222; // 0xde
-    field public static final int KEYCODE_MEDIA_CLOSE = 128; // 0x80
-    field public static final int KEYCODE_MEDIA_EJECT = 129; // 0x81
-    field public static final int KEYCODE_MEDIA_FAST_FORWARD = 90; // 0x5a
-    field public static final int KEYCODE_MEDIA_NEXT = 87; // 0x57
-    field public static final int KEYCODE_MEDIA_PAUSE = 127; // 0x7f
-    field public static final int KEYCODE_MEDIA_PLAY = 126; // 0x7e
-    field public static final int KEYCODE_MEDIA_PLAY_PAUSE = 85; // 0x55
-    field public static final int KEYCODE_MEDIA_PREVIOUS = 88; // 0x58
-    field public static final int KEYCODE_MEDIA_RECORD = 130; // 0x82
-    field public static final int KEYCODE_MEDIA_REWIND = 89; // 0x59
-    field public static final int KEYCODE_MEDIA_SKIP_BACKWARD = 273; // 0x111
-    field public static final int KEYCODE_MEDIA_SKIP_FORWARD = 272; // 0x110
-    field public static final int KEYCODE_MEDIA_STEP_BACKWARD = 275; // 0x113
-    field public static final int KEYCODE_MEDIA_STEP_FORWARD = 274; // 0x112
-    field public static final int KEYCODE_MEDIA_STOP = 86; // 0x56
-    field public static final int KEYCODE_MEDIA_TOP_MENU = 226; // 0xe2
-    field public static final int KEYCODE_MENU = 82; // 0x52
-    field public static final int KEYCODE_META_LEFT = 117; // 0x75
-    field public static final int KEYCODE_META_RIGHT = 118; // 0x76
-    field public static final int KEYCODE_MINUS = 69; // 0x45
-    field public static final int KEYCODE_MOVE_END = 123; // 0x7b
-    field public static final int KEYCODE_MOVE_HOME = 122; // 0x7a
-    field public static final int KEYCODE_MUHENKAN = 213; // 0xd5
-    field public static final int KEYCODE_MUSIC = 209; // 0xd1
-    field public static final int KEYCODE_MUTE = 91; // 0x5b
-    field public static final int KEYCODE_N = 42; // 0x2a
-    field public static final int KEYCODE_NAVIGATE_IN = 262; // 0x106
-    field public static final int KEYCODE_NAVIGATE_NEXT = 261; // 0x105
-    field public static final int KEYCODE_NAVIGATE_OUT = 263; // 0x107
-    field public static final int KEYCODE_NAVIGATE_PREVIOUS = 260; // 0x104
-    field public static final int KEYCODE_NOTIFICATION = 83; // 0x53
-    field public static final int KEYCODE_NUM = 78; // 0x4e
-    field public static final int KEYCODE_NUMPAD_0 = 144; // 0x90
-    field public static final int KEYCODE_NUMPAD_1 = 145; // 0x91
-    field public static final int KEYCODE_NUMPAD_2 = 146; // 0x92
-    field public static final int KEYCODE_NUMPAD_3 = 147; // 0x93
-    field public static final int KEYCODE_NUMPAD_4 = 148; // 0x94
-    field public static final int KEYCODE_NUMPAD_5 = 149; // 0x95
-    field public static final int KEYCODE_NUMPAD_6 = 150; // 0x96
-    field public static final int KEYCODE_NUMPAD_7 = 151; // 0x97
-    field public static final int KEYCODE_NUMPAD_8 = 152; // 0x98
-    field public static final int KEYCODE_NUMPAD_9 = 153; // 0x99
-    field public static final int KEYCODE_NUMPAD_ADD = 157; // 0x9d
-    field public static final int KEYCODE_NUMPAD_COMMA = 159; // 0x9f
-    field public static final int KEYCODE_NUMPAD_DIVIDE = 154; // 0x9a
-    field public static final int KEYCODE_NUMPAD_DOT = 158; // 0x9e
-    field public static final int KEYCODE_NUMPAD_ENTER = 160; // 0xa0
-    field public static final int KEYCODE_NUMPAD_EQUALS = 161; // 0xa1
-    field public static final int KEYCODE_NUMPAD_LEFT_PAREN = 162; // 0xa2
-    field public static final int KEYCODE_NUMPAD_MULTIPLY = 155; // 0x9b
-    field public static final int KEYCODE_NUMPAD_RIGHT_PAREN = 163; // 0xa3
-    field public static final int KEYCODE_NUMPAD_SUBTRACT = 156; // 0x9c
-    field public static final int KEYCODE_NUM_LOCK = 143; // 0x8f
-    field public static final int KEYCODE_O = 43; // 0x2b
-    field public static final int KEYCODE_P = 44; // 0x2c
-    field public static final int KEYCODE_PAGE_DOWN = 93; // 0x5d
-    field public static final int KEYCODE_PAGE_UP = 92; // 0x5c
-    field public static final int KEYCODE_PAIRING = 225; // 0xe1
-    field public static final int KEYCODE_PASTE = 279; // 0x117
-    field public static final int KEYCODE_PERIOD = 56; // 0x38
-    field public static final int KEYCODE_PICTSYMBOLS = 94; // 0x5e
-    field public static final int KEYCODE_PLUS = 81; // 0x51
-    field public static final int KEYCODE_POUND = 18; // 0x12
-    field public static final int KEYCODE_POWER = 26; // 0x1a
-    field public static final int KEYCODE_PROFILE_SWITCH = 288; // 0x120
-    field public static final int KEYCODE_PROG_BLUE = 186; // 0xba
-    field public static final int KEYCODE_PROG_GREEN = 184; // 0xb8
-    field public static final int KEYCODE_PROG_RED = 183; // 0xb7
-    field public static final int KEYCODE_PROG_YELLOW = 185; // 0xb9
-    field public static final int KEYCODE_Q = 45; // 0x2d
-    field public static final int KEYCODE_R = 46; // 0x2e
-    field public static final int KEYCODE_REFRESH = 285; // 0x11d
-    field public static final int KEYCODE_RIGHT_BRACKET = 72; // 0x48
-    field public static final int KEYCODE_RO = 217; // 0xd9
-    field public static final int KEYCODE_S = 47; // 0x2f
-    field public static final int KEYCODE_SCROLL_LOCK = 116; // 0x74
-    field public static final int KEYCODE_SEARCH = 84; // 0x54
-    field public static final int KEYCODE_SEMICOLON = 74; // 0x4a
-    field public static final int KEYCODE_SETTINGS = 176; // 0xb0
-    field public static final int KEYCODE_SHIFT_LEFT = 59; // 0x3b
-    field public static final int KEYCODE_SHIFT_RIGHT = 60; // 0x3c
-    field public static final int KEYCODE_SLASH = 76; // 0x4c
-    field public static final int KEYCODE_SLEEP = 223; // 0xdf
-    field public static final int KEYCODE_SOFT_LEFT = 1; // 0x1
-    field public static final int KEYCODE_SOFT_RIGHT = 2; // 0x2
-    field public static final int KEYCODE_SOFT_SLEEP = 276; // 0x114
-    field public static final int KEYCODE_SPACE = 62; // 0x3e
-    field public static final int KEYCODE_STAR = 17; // 0x11
-    field public static final int KEYCODE_STB_INPUT = 180; // 0xb4
-    field public static final int KEYCODE_STB_POWER = 179; // 0xb3
-    field public static final int KEYCODE_STEM_1 = 265; // 0x109
-    field public static final int KEYCODE_STEM_2 = 266; // 0x10a
-    field public static final int KEYCODE_STEM_3 = 267; // 0x10b
-    field public static final int KEYCODE_STEM_PRIMARY = 264; // 0x108
-    field public static final int KEYCODE_SWITCH_CHARSET = 95; // 0x5f
-    field public static final int KEYCODE_SYM = 63; // 0x3f
-    field public static final int KEYCODE_SYSRQ = 120; // 0x78
-    field public static final int KEYCODE_SYSTEM_NAVIGATION_DOWN = 281; // 0x119
-    field public static final int KEYCODE_SYSTEM_NAVIGATION_LEFT = 282; // 0x11a
-    field public static final int KEYCODE_SYSTEM_NAVIGATION_RIGHT = 283; // 0x11b
-    field public static final int KEYCODE_SYSTEM_NAVIGATION_UP = 280; // 0x118
-    field public static final int KEYCODE_T = 48; // 0x30
-    field public static final int KEYCODE_TAB = 61; // 0x3d
-    field public static final int KEYCODE_THUMBS_DOWN = 287; // 0x11f
-    field public static final int KEYCODE_THUMBS_UP = 286; // 0x11e
-    field public static final int KEYCODE_TV = 170; // 0xaa
-    field public static final int KEYCODE_TV_ANTENNA_CABLE = 242; // 0xf2
-    field public static final int KEYCODE_TV_AUDIO_DESCRIPTION = 252; // 0xfc
-    field public static final int KEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN = 254; // 0xfe
-    field public static final int KEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP = 253; // 0xfd
-    field public static final int KEYCODE_TV_CONTENTS_MENU = 256; // 0x100
-    field public static final int KEYCODE_TV_DATA_SERVICE = 230; // 0xe6
-    field public static final int KEYCODE_TV_INPUT = 178; // 0xb2
-    field public static final int KEYCODE_TV_INPUT_COMPONENT_1 = 249; // 0xf9
-    field public static final int KEYCODE_TV_INPUT_COMPONENT_2 = 250; // 0xfa
-    field public static final int KEYCODE_TV_INPUT_COMPOSITE_1 = 247; // 0xf7
-    field public static final int KEYCODE_TV_INPUT_COMPOSITE_2 = 248; // 0xf8
-    field public static final int KEYCODE_TV_INPUT_HDMI_1 = 243; // 0xf3
-    field public static final int KEYCODE_TV_INPUT_HDMI_2 = 244; // 0xf4
-    field public static final int KEYCODE_TV_INPUT_HDMI_3 = 245; // 0xf5
-    field public static final int KEYCODE_TV_INPUT_HDMI_4 = 246; // 0xf6
-    field public static final int KEYCODE_TV_INPUT_VGA_1 = 251; // 0xfb
-    field public static final int KEYCODE_TV_MEDIA_CONTEXT_MENU = 257; // 0x101
-    field public static final int KEYCODE_TV_NETWORK = 241; // 0xf1
-    field public static final int KEYCODE_TV_NUMBER_ENTRY = 234; // 0xea
-    field public static final int KEYCODE_TV_POWER = 177; // 0xb1
-    field public static final int KEYCODE_TV_RADIO_SERVICE = 232; // 0xe8
-    field public static final int KEYCODE_TV_SATELLITE = 237; // 0xed
-    field public static final int KEYCODE_TV_SATELLITE_BS = 238; // 0xee
-    field public static final int KEYCODE_TV_SATELLITE_CS = 239; // 0xef
-    field public static final int KEYCODE_TV_SATELLITE_SERVICE = 240; // 0xf0
-    field public static final int KEYCODE_TV_TELETEXT = 233; // 0xe9
-    field public static final int KEYCODE_TV_TERRESTRIAL_ANALOG = 235; // 0xeb
-    field public static final int KEYCODE_TV_TERRESTRIAL_DIGITAL = 236; // 0xec
-    field public static final int KEYCODE_TV_TIMER_PROGRAMMING = 258; // 0x102
-    field public static final int KEYCODE_TV_ZOOM_MODE = 255; // 0xff
-    field public static final int KEYCODE_U = 49; // 0x31
-    field public static final int KEYCODE_UNKNOWN = 0; // 0x0
-    field public static final int KEYCODE_V = 50; // 0x32
-    field public static final int KEYCODE_VOICE_ASSIST = 231; // 0xe7
-    field public static final int KEYCODE_VOLUME_DOWN = 25; // 0x19
-    field public static final int KEYCODE_VOLUME_MUTE = 164; // 0xa4
-    field public static final int KEYCODE_VOLUME_UP = 24; // 0x18
-    field public static final int KEYCODE_W = 51; // 0x33
-    field public static final int KEYCODE_WAKEUP = 224; // 0xe0
-    field public static final int KEYCODE_WINDOW = 171; // 0xab
-    field public static final int KEYCODE_X = 52; // 0x34
-    field public static final int KEYCODE_Y = 53; // 0x35
-    field public static final int KEYCODE_YEN = 216; // 0xd8
-    field public static final int KEYCODE_Z = 54; // 0x36
-    field public static final int KEYCODE_ZENKAKU_HANKAKU = 211; // 0xd3
-    field public static final int KEYCODE_ZOOM_IN = 168; // 0xa8
-    field public static final int KEYCODE_ZOOM_OUT = 169; // 0xa9
-    field @Deprecated public static final int MAX_KEYCODE = 84; // 0x54
-    field public static final int META_ALT_LEFT_ON = 16; // 0x10
-    field public static final int META_ALT_MASK = 50; // 0x32
-    field public static final int META_ALT_ON = 2; // 0x2
-    field public static final int META_ALT_RIGHT_ON = 32; // 0x20
-    field public static final int META_CAPS_LOCK_ON = 1048576; // 0x100000
-    field public static final int META_CTRL_LEFT_ON = 8192; // 0x2000
-    field public static final int META_CTRL_MASK = 28672; // 0x7000
-    field public static final int META_CTRL_ON = 4096; // 0x1000
-    field public static final int META_CTRL_RIGHT_ON = 16384; // 0x4000
-    field public static final int META_FUNCTION_ON = 8; // 0x8
-    field public static final int META_META_LEFT_ON = 131072; // 0x20000
-    field public static final int META_META_MASK = 458752; // 0x70000
-    field public static final int META_META_ON = 65536; // 0x10000
-    field public static final int META_META_RIGHT_ON = 262144; // 0x40000
-    field public static final int META_NUM_LOCK_ON = 2097152; // 0x200000
-    field public static final int META_SCROLL_LOCK_ON = 4194304; // 0x400000
-    field public static final int META_SHIFT_LEFT_ON = 64; // 0x40
-    field public static final int META_SHIFT_MASK = 193; // 0xc1
-    field public static final int META_SHIFT_ON = 1; // 0x1
-    field public static final int META_SHIFT_RIGHT_ON = 128; // 0x80
-    field public static final int META_SYM_ON = 4; // 0x4
-  }
-
-  public static interface KeyEvent.Callback {
-    method public boolean onKeyDown(int, android.view.KeyEvent);
-    method public boolean onKeyLongPress(int, android.view.KeyEvent);
-    method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
-    method public boolean onKeyUp(int, android.view.KeyEvent);
-  }
-
-  public static class KeyEvent.DispatcherState {
-    ctor public KeyEvent.DispatcherState();
-    method public void handleUpEvent(android.view.KeyEvent);
-    method public boolean isTracking(android.view.KeyEvent);
-    method public void performedLongPress(android.view.KeyEvent);
-    method public void reset();
-    method public void reset(Object);
-    method public void startTracking(android.view.KeyEvent, Object);
-  }
-
-  public final class KeyboardShortcutGroup implements android.os.Parcelable {
-    ctor public KeyboardShortcutGroup(@Nullable CharSequence, @NonNull java.util.List<android.view.KeyboardShortcutInfo>);
-    ctor public KeyboardShortcutGroup(@Nullable CharSequence);
-    method public void addItem(android.view.KeyboardShortcutInfo);
-    method public int describeContents();
-    method public java.util.List<android.view.KeyboardShortcutInfo> getItems();
-    method public CharSequence getLabel();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.KeyboardShortcutGroup> CREATOR;
-  }
-
-  public final class KeyboardShortcutInfo implements android.os.Parcelable {
-    ctor public KeyboardShortcutInfo(CharSequence, int, int);
-    ctor public KeyboardShortcutInfo(CharSequence, char, int);
-    method public int describeContents();
-    method public char getBaseCharacter();
-    method public int getKeycode();
-    method @Nullable public CharSequence getLabel();
-    method public int getModifiers();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.KeyboardShortcutInfo> CREATOR;
-  }
-
-  public abstract class LayoutInflater {
-    ctor protected LayoutInflater(android.content.Context);
-    ctor protected LayoutInflater(android.view.LayoutInflater, android.content.Context);
-    method public abstract android.view.LayoutInflater cloneInContext(android.content.Context);
-    method public final android.view.View createView(String, String, android.util.AttributeSet) throws java.lang.ClassNotFoundException, android.view.InflateException;
-    method @Nullable public final android.view.View createView(@NonNull android.content.Context, @NonNull String, @Nullable String, @Nullable android.util.AttributeSet) throws java.lang.ClassNotFoundException, android.view.InflateException;
-    method public static android.view.LayoutInflater from(android.content.Context);
-    method public android.content.Context getContext();
-    method public final android.view.LayoutInflater.Factory getFactory();
-    method public final android.view.LayoutInflater.Factory2 getFactory2();
-    method public android.view.LayoutInflater.Filter getFilter();
-    method public android.view.View inflate(@LayoutRes int, @Nullable android.view.ViewGroup);
-    method public android.view.View inflate(org.xmlpull.v1.XmlPullParser, @Nullable android.view.ViewGroup);
-    method public android.view.View inflate(@LayoutRes int, @Nullable android.view.ViewGroup, boolean);
-    method public android.view.View inflate(org.xmlpull.v1.XmlPullParser, @Nullable android.view.ViewGroup, boolean);
-    method protected android.view.View onCreateView(String, android.util.AttributeSet) throws java.lang.ClassNotFoundException;
-    method protected android.view.View onCreateView(android.view.View, String, android.util.AttributeSet) throws java.lang.ClassNotFoundException;
-    method @Nullable public android.view.View onCreateView(@NonNull android.content.Context, @Nullable android.view.View, @NonNull String, @Nullable android.util.AttributeSet) throws java.lang.ClassNotFoundException;
-    method public void setFactory(android.view.LayoutInflater.Factory);
-    method public void setFactory2(android.view.LayoutInflater.Factory2);
-    method public void setFilter(android.view.LayoutInflater.Filter);
-  }
-
-  public static interface LayoutInflater.Factory {
-    method @Nullable public android.view.View onCreateView(@NonNull String, @NonNull android.content.Context, @NonNull android.util.AttributeSet);
-  }
-
-  public static interface LayoutInflater.Factory2 extends android.view.LayoutInflater.Factory {
-    method @Nullable public android.view.View onCreateView(@Nullable android.view.View, @NonNull String, @NonNull android.content.Context, @NonNull android.util.AttributeSet);
-  }
-
-  public static interface LayoutInflater.Filter {
-    method public boolean onLoadClass(Class);
-  }
-
-  public interface Menu {
-    method public android.view.MenuItem add(CharSequence);
-    method public android.view.MenuItem add(@StringRes int);
-    method public android.view.MenuItem add(int, int, int, CharSequence);
-    method public android.view.MenuItem add(int, int, int, @StringRes int);
-    method public int addIntentOptions(int, int, int, android.content.ComponentName, android.content.Intent[], android.content.Intent, int, android.view.MenuItem[]);
-    method public android.view.SubMenu addSubMenu(CharSequence);
-    method public android.view.SubMenu addSubMenu(@StringRes int);
-    method public android.view.SubMenu addSubMenu(int, int, int, CharSequence);
-    method public android.view.SubMenu addSubMenu(int, int, int, @StringRes int);
-    method public void clear();
-    method public void close();
-    method public android.view.MenuItem findItem(int);
-    method public android.view.MenuItem getItem(int);
-    method public boolean hasVisibleItems();
-    method public boolean isShortcutKey(int, android.view.KeyEvent);
-    method public boolean performIdentifierAction(int, int);
-    method public boolean performShortcut(int, android.view.KeyEvent, int);
-    method public void removeGroup(int);
-    method public void removeItem(int);
-    method public void setGroupCheckable(int, boolean, boolean);
-    method public default void setGroupDividerEnabled(boolean);
-    method public void setGroupEnabled(int, boolean);
-    method public void setGroupVisible(int, boolean);
-    method public void setQwertyMode(boolean);
-    method public int size();
-    field public static final int CATEGORY_ALTERNATIVE = 262144; // 0x40000
-    field public static final int CATEGORY_CONTAINER = 65536; // 0x10000
-    field public static final int CATEGORY_SECONDARY = 196608; // 0x30000
-    field public static final int CATEGORY_SYSTEM = 131072; // 0x20000
-    field public static final int FIRST = 1; // 0x1
-    field public static final int FLAG_ALWAYS_PERFORM_CLOSE = 2; // 0x2
-    field public static final int FLAG_APPEND_TO_GROUP = 1; // 0x1
-    field public static final int FLAG_PERFORM_NO_CLOSE = 1; // 0x1
-    field public static final int NONE = 0; // 0x0
-    field public static final int SUPPORTED_MODIFIERS_MASK = 69647; // 0x1100f
-  }
-
-  public class MenuInflater {
-    ctor public MenuInflater(android.content.Context);
-    method public void inflate(@MenuRes int, android.view.Menu);
-  }
-
-  public interface MenuItem {
-    method public boolean collapseActionView();
-    method public boolean expandActionView();
-    method public android.view.ActionProvider getActionProvider();
-    method public android.view.View getActionView();
-    method public default int getAlphabeticModifiers();
-    method public char getAlphabeticShortcut();
-    method public default CharSequence getContentDescription();
-    method public int getGroupId();
-    method public android.graphics.drawable.Drawable getIcon();
-    method @Nullable public default android.graphics.BlendMode getIconTintBlendMode();
-    method @Nullable public default android.content.res.ColorStateList getIconTintList();
-    method @Nullable public default android.graphics.PorterDuff.Mode getIconTintMode();
-    method public android.content.Intent getIntent();
-    method public int getItemId();
-    method public android.view.ContextMenu.ContextMenuInfo getMenuInfo();
-    method public default int getNumericModifiers();
-    method public char getNumericShortcut();
-    method public int getOrder();
-    method public android.view.SubMenu getSubMenu();
-    method public CharSequence getTitle();
-    method public CharSequence getTitleCondensed();
-    method public default CharSequence getTooltipText();
-    method public boolean hasSubMenu();
-    method public boolean isActionViewExpanded();
-    method public boolean isCheckable();
-    method public boolean isChecked();
-    method public boolean isEnabled();
-    method public boolean isVisible();
-    method public android.view.MenuItem setActionProvider(android.view.ActionProvider);
-    method public android.view.MenuItem setActionView(android.view.View);
-    method public android.view.MenuItem setActionView(@LayoutRes int);
-    method public android.view.MenuItem setAlphabeticShortcut(char);
-    method public default android.view.MenuItem setAlphabeticShortcut(char, int);
-    method public android.view.MenuItem setCheckable(boolean);
-    method public android.view.MenuItem setChecked(boolean);
-    method public default android.view.MenuItem setContentDescription(CharSequence);
-    method public android.view.MenuItem setEnabled(boolean);
-    method public android.view.MenuItem setIcon(android.graphics.drawable.Drawable);
-    method public android.view.MenuItem setIcon(@DrawableRes int);
-    method @NonNull public default android.view.MenuItem setIconTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public default android.view.MenuItem setIconTintList(@Nullable android.content.res.ColorStateList);
-    method @NonNull public default android.view.MenuItem setIconTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public android.view.MenuItem setIntent(android.content.Intent);
-    method public android.view.MenuItem setNumericShortcut(char);
-    method public default android.view.MenuItem setNumericShortcut(char, int);
-    method public android.view.MenuItem setOnActionExpandListener(android.view.MenuItem.OnActionExpandListener);
-    method public android.view.MenuItem setOnMenuItemClickListener(android.view.MenuItem.OnMenuItemClickListener);
-    method public android.view.MenuItem setShortcut(char, char);
-    method public default android.view.MenuItem setShortcut(char, char, int, int);
-    method public void setShowAsAction(int);
-    method public android.view.MenuItem setShowAsActionFlags(int);
-    method public android.view.MenuItem setTitle(CharSequence);
-    method public android.view.MenuItem setTitle(@StringRes int);
-    method public android.view.MenuItem setTitleCondensed(CharSequence);
-    method public default android.view.MenuItem setTooltipText(CharSequence);
-    method public android.view.MenuItem setVisible(boolean);
-    field public static final int SHOW_AS_ACTION_ALWAYS = 2; // 0x2
-    field public static final int SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW = 8; // 0x8
-    field public static final int SHOW_AS_ACTION_IF_ROOM = 1; // 0x1
-    field public static final int SHOW_AS_ACTION_NEVER = 0; // 0x0
-    field public static final int SHOW_AS_ACTION_WITH_TEXT = 4; // 0x4
-  }
-
-  public static interface MenuItem.OnActionExpandListener {
-    method public boolean onMenuItemActionCollapse(android.view.MenuItem);
-    method public boolean onMenuItemActionExpand(android.view.MenuItem);
-  }
-
-  public static interface MenuItem.OnMenuItemClickListener {
-    method public boolean onMenuItemClick(android.view.MenuItem);
-  }
-
-  public final class MotionEvent extends android.view.InputEvent implements android.os.Parcelable {
-    method public static String actionToString(int);
-    method public void addBatch(long, float, float, float, float, int);
-    method public void addBatch(long, android.view.MotionEvent.PointerCoords[], int);
-    method public static int axisFromString(String);
-    method public static String axisToString(int);
-    method public int findPointerIndex(int);
-    method public int getAction();
-    method public int getActionButton();
-    method public int getActionIndex();
-    method public int getActionMasked();
-    method public float getAxisValue(int);
-    method public float getAxisValue(int, int);
-    method public int getButtonState();
-    method public int getClassification();
-    method public int getDeviceId();
-    method public long getDownTime();
-    method public int getEdgeFlags();
-    method public long getEventTime();
-    method public int getFlags();
-    method public float getHistoricalAxisValue(int, int);
-    method public float getHistoricalAxisValue(int, int, int);
-    method public long getHistoricalEventTime(int);
-    method public float getHistoricalOrientation(int);
-    method public float getHistoricalOrientation(int, int);
-    method public void getHistoricalPointerCoords(int, int, android.view.MotionEvent.PointerCoords);
-    method public float getHistoricalPressure(int);
-    method public float getHistoricalPressure(int, int);
-    method public float getHistoricalSize(int);
-    method public float getHistoricalSize(int, int);
-    method public float getHistoricalToolMajor(int);
-    method public float getHistoricalToolMajor(int, int);
-    method public float getHistoricalToolMinor(int);
-    method public float getHistoricalToolMinor(int, int);
-    method public float getHistoricalTouchMajor(int);
-    method public float getHistoricalTouchMajor(int, int);
-    method public float getHistoricalTouchMinor(int);
-    method public float getHistoricalTouchMinor(int, int);
-    method public float getHistoricalX(int);
-    method public float getHistoricalX(int, int);
-    method public float getHistoricalY(int);
-    method public float getHistoricalY(int, int);
-    method public int getHistorySize();
-    method public int getMetaState();
-    method public float getOrientation();
-    method public float getOrientation(int);
-    method public void getPointerCoords(int, android.view.MotionEvent.PointerCoords);
-    method public int getPointerCount();
-    method public int getPointerId(int);
-    method public void getPointerProperties(int, android.view.MotionEvent.PointerProperties);
-    method public float getPressure();
-    method public float getPressure(int);
-    method public float getRawX();
-    method public float getRawX(int);
-    method public float getRawY();
-    method public float getRawY(int);
-    method public float getSize();
-    method public float getSize(int);
-    method public int getSource();
-    method public float getToolMajor();
-    method public float getToolMajor(int);
-    method public float getToolMinor();
-    method public float getToolMinor(int);
-    method public int getToolType(int);
-    method public float getTouchMajor();
-    method public float getTouchMajor(int);
-    method public float getTouchMinor();
-    method public float getTouchMinor(int);
-    method public float getX();
-    method public float getX(int);
-    method public float getXPrecision();
-    method public float getY();
-    method public float getY(int);
-    method public float getYPrecision();
-    method public boolean isButtonPressed(int);
-    method public static android.view.MotionEvent obtain(long, long, int, int, android.view.MotionEvent.PointerProperties[], android.view.MotionEvent.PointerCoords[], int, int, float, float, int, int, int, int);
-    method @Deprecated public static android.view.MotionEvent obtain(long, long, int, int, int[], android.view.MotionEvent.PointerCoords[], int, float, float, int, int, int, int);
-    method public static android.view.MotionEvent obtain(long, long, int, float, float, float, float, int, float, float, int, int);
-    method @Deprecated public static android.view.MotionEvent obtain(long, long, int, int, float, float, float, float, int, float, float, int, int);
-    method public static android.view.MotionEvent obtain(long, long, int, float, float, int);
-    method public static android.view.MotionEvent obtain(android.view.MotionEvent);
-    method public static android.view.MotionEvent obtainNoHistory(android.view.MotionEvent);
-    method public void offsetLocation(float, float);
-    method public void recycle();
-    method public void setAction(int);
-    method public void setEdgeFlags(int);
-    method public void setLocation(float, float);
-    method public void setSource(int);
-    method public void transform(android.graphics.Matrix);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ACTION_BUTTON_PRESS = 11; // 0xb
-    field public static final int ACTION_BUTTON_RELEASE = 12; // 0xc
-    field public static final int ACTION_CANCEL = 3; // 0x3
-    field public static final int ACTION_DOWN = 0; // 0x0
-    field public static final int ACTION_HOVER_ENTER = 9; // 0x9
-    field public static final int ACTION_HOVER_EXIT = 10; // 0xa
-    field public static final int ACTION_HOVER_MOVE = 7; // 0x7
-    field public static final int ACTION_MASK = 255; // 0xff
-    field public static final int ACTION_MOVE = 2; // 0x2
-    field public static final int ACTION_OUTSIDE = 4; // 0x4
-    field @Deprecated public static final int ACTION_POINTER_1_DOWN = 5; // 0x5
-    field @Deprecated public static final int ACTION_POINTER_1_UP = 6; // 0x6
-    field @Deprecated public static final int ACTION_POINTER_2_DOWN = 261; // 0x105
-    field @Deprecated public static final int ACTION_POINTER_2_UP = 262; // 0x106
-    field @Deprecated public static final int ACTION_POINTER_3_DOWN = 517; // 0x205
-    field @Deprecated public static final int ACTION_POINTER_3_UP = 518; // 0x206
-    field public static final int ACTION_POINTER_DOWN = 5; // 0x5
-    field @Deprecated public static final int ACTION_POINTER_ID_MASK = 65280; // 0xff00
-    field @Deprecated public static final int ACTION_POINTER_ID_SHIFT = 8; // 0x8
-    field public static final int ACTION_POINTER_INDEX_MASK = 65280; // 0xff00
-    field public static final int ACTION_POINTER_INDEX_SHIFT = 8; // 0x8
-    field public static final int ACTION_POINTER_UP = 6; // 0x6
-    field public static final int ACTION_SCROLL = 8; // 0x8
-    field public static final int ACTION_UP = 1; // 0x1
-    field public static final int AXIS_BRAKE = 23; // 0x17
-    field public static final int AXIS_DISTANCE = 24; // 0x18
-    field public static final int AXIS_GAS = 22; // 0x16
-    field public static final int AXIS_GENERIC_1 = 32; // 0x20
-    field public static final int AXIS_GENERIC_10 = 41; // 0x29
-    field public static final int AXIS_GENERIC_11 = 42; // 0x2a
-    field public static final int AXIS_GENERIC_12 = 43; // 0x2b
-    field public static final int AXIS_GENERIC_13 = 44; // 0x2c
-    field public static final int AXIS_GENERIC_14 = 45; // 0x2d
-    field public static final int AXIS_GENERIC_15 = 46; // 0x2e
-    field public static final int AXIS_GENERIC_16 = 47; // 0x2f
-    field public static final int AXIS_GENERIC_2 = 33; // 0x21
-    field public static final int AXIS_GENERIC_3 = 34; // 0x22
-    field public static final int AXIS_GENERIC_4 = 35; // 0x23
-    field public static final int AXIS_GENERIC_5 = 36; // 0x24
-    field public static final int AXIS_GENERIC_6 = 37; // 0x25
-    field public static final int AXIS_GENERIC_7 = 38; // 0x26
-    field public static final int AXIS_GENERIC_8 = 39; // 0x27
-    field public static final int AXIS_GENERIC_9 = 40; // 0x28
-    field public static final int AXIS_HAT_X = 15; // 0xf
-    field public static final int AXIS_HAT_Y = 16; // 0x10
-    field public static final int AXIS_HSCROLL = 10; // 0xa
-    field public static final int AXIS_LTRIGGER = 17; // 0x11
-    field public static final int AXIS_ORIENTATION = 8; // 0x8
-    field public static final int AXIS_PRESSURE = 2; // 0x2
-    field public static final int AXIS_RELATIVE_X = 27; // 0x1b
-    field public static final int AXIS_RELATIVE_Y = 28; // 0x1c
-    field public static final int AXIS_RTRIGGER = 18; // 0x12
-    field public static final int AXIS_RUDDER = 20; // 0x14
-    field public static final int AXIS_RX = 12; // 0xc
-    field public static final int AXIS_RY = 13; // 0xd
-    field public static final int AXIS_RZ = 14; // 0xe
-    field public static final int AXIS_SCROLL = 26; // 0x1a
-    field public static final int AXIS_SIZE = 3; // 0x3
-    field public static final int AXIS_THROTTLE = 19; // 0x13
-    field public static final int AXIS_TILT = 25; // 0x19
-    field public static final int AXIS_TOOL_MAJOR = 6; // 0x6
-    field public static final int AXIS_TOOL_MINOR = 7; // 0x7
-    field public static final int AXIS_TOUCH_MAJOR = 4; // 0x4
-    field public static final int AXIS_TOUCH_MINOR = 5; // 0x5
-    field public static final int AXIS_VSCROLL = 9; // 0x9
-    field public static final int AXIS_WHEEL = 21; // 0x15
-    field public static final int AXIS_X = 0; // 0x0
-    field public static final int AXIS_Y = 1; // 0x1
-    field public static final int AXIS_Z = 11; // 0xb
-    field public static final int BUTTON_BACK = 8; // 0x8
-    field public static final int BUTTON_FORWARD = 16; // 0x10
-    field public static final int BUTTON_PRIMARY = 1; // 0x1
-    field public static final int BUTTON_SECONDARY = 2; // 0x2
-    field public static final int BUTTON_STYLUS_PRIMARY = 32; // 0x20
-    field public static final int BUTTON_STYLUS_SECONDARY = 64; // 0x40
-    field public static final int BUTTON_TERTIARY = 4; // 0x4
-    field public static final int CLASSIFICATION_AMBIGUOUS_GESTURE = 1; // 0x1
-    field public static final int CLASSIFICATION_DEEP_PRESS = 2; // 0x2
-    field public static final int CLASSIFICATION_NONE = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.MotionEvent> CREATOR;
-    field public static final int EDGE_BOTTOM = 2; // 0x2
-    field public static final int EDGE_LEFT = 4; // 0x4
-    field public static final int EDGE_RIGHT = 8; // 0x8
-    field public static final int EDGE_TOP = 1; // 0x1
-    field public static final int FLAG_WINDOW_IS_OBSCURED = 1; // 0x1
-    field public static final int FLAG_WINDOW_IS_PARTIALLY_OBSCURED = 2; // 0x2
-    field public static final int INVALID_POINTER_ID = -1; // 0xffffffff
-    field public static final int TOOL_TYPE_ERASER = 4; // 0x4
-    field public static final int TOOL_TYPE_FINGER = 1; // 0x1
-    field public static final int TOOL_TYPE_MOUSE = 3; // 0x3
-    field public static final int TOOL_TYPE_STYLUS = 2; // 0x2
-    field public static final int TOOL_TYPE_UNKNOWN = 0; // 0x0
-  }
-
-  public static final class MotionEvent.PointerCoords {
-    ctor public MotionEvent.PointerCoords();
-    ctor public MotionEvent.PointerCoords(android.view.MotionEvent.PointerCoords);
-    method public void clear();
-    method public void copyFrom(android.view.MotionEvent.PointerCoords);
-    method public float getAxisValue(int);
-    method public void setAxisValue(int, float);
-    field public float orientation;
-    field public float pressure;
-    field public float size;
-    field public float toolMajor;
-    field public float toolMinor;
-    field public float touchMajor;
-    field public float touchMinor;
-    field public float x;
-    field public float y;
-  }
-
-  public static final class MotionEvent.PointerProperties {
-    ctor public MotionEvent.PointerProperties();
-    ctor public MotionEvent.PointerProperties(android.view.MotionEvent.PointerProperties);
-    method public void clear();
-    method public void copyFrom(android.view.MotionEvent.PointerProperties);
-    field public int id;
-    field public int toolType;
-  }
-
-  public abstract class OrientationEventListener {
-    ctor public OrientationEventListener(android.content.Context);
-    ctor public OrientationEventListener(android.content.Context, int);
-    method public boolean canDetectOrientation();
-    method public void disable();
-    method public void enable();
-    method public abstract void onOrientationChanged(int);
-    field public static final int ORIENTATION_UNKNOWN = -1; // 0xffffffff
-  }
-
-  @Deprecated public abstract class OrientationListener implements android.hardware.SensorListener {
-    ctor @Deprecated public OrientationListener(android.content.Context);
-    ctor @Deprecated public OrientationListener(android.content.Context, int);
-    method @Deprecated public void disable();
-    method @Deprecated public void enable();
-    method @Deprecated public void onAccuracyChanged(int, int);
-    method @Deprecated public abstract void onOrientationChanged(int);
-    method @Deprecated public void onSensorChanged(int, float[]);
-    field @Deprecated public static final int ORIENTATION_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public final class PixelCopy {
-    method public static void request(@NonNull android.view.SurfaceView, @NonNull android.graphics.Bitmap, @NonNull android.view.PixelCopy.OnPixelCopyFinishedListener, @NonNull android.os.Handler);
-    method public static void request(@NonNull android.view.SurfaceView, @Nullable android.graphics.Rect, @NonNull android.graphics.Bitmap, @NonNull android.view.PixelCopy.OnPixelCopyFinishedListener, @NonNull android.os.Handler);
-    method public static void request(@NonNull android.view.Surface, @NonNull android.graphics.Bitmap, @NonNull android.view.PixelCopy.OnPixelCopyFinishedListener, @NonNull android.os.Handler);
-    method public static void request(@NonNull android.view.Surface, @Nullable android.graphics.Rect, @NonNull android.graphics.Bitmap, @NonNull android.view.PixelCopy.OnPixelCopyFinishedListener, @NonNull android.os.Handler);
-    method public static void request(@NonNull android.view.Window, @NonNull android.graphics.Bitmap, @NonNull android.view.PixelCopy.OnPixelCopyFinishedListener, @NonNull android.os.Handler);
-    method public static void request(@NonNull android.view.Window, @Nullable android.graphics.Rect, @NonNull android.graphics.Bitmap, @NonNull android.view.PixelCopy.OnPixelCopyFinishedListener, @NonNull android.os.Handler);
-    field public static final int ERROR_DESTINATION_INVALID = 5; // 0x5
-    field public static final int ERROR_SOURCE_INVALID = 4; // 0x4
-    field public static final int ERROR_SOURCE_NO_DATA = 3; // 0x3
-    field public static final int ERROR_TIMEOUT = 2; // 0x2
-    field public static final int ERROR_UNKNOWN = 1; // 0x1
-    field public static final int SUCCESS = 0; // 0x0
-  }
-
-  public static interface PixelCopy.OnPixelCopyFinishedListener {
-    method public void onPixelCopyFinished(int);
-  }
-
-  public final class PointerIcon implements android.os.Parcelable {
-    method public static android.view.PointerIcon create(@NonNull android.graphics.Bitmap, float, float);
-    method public int describeContents();
-    method public static android.view.PointerIcon getSystemIcon(@NonNull android.content.Context, int);
-    method public static android.view.PointerIcon load(@NonNull android.content.res.Resources, @XmlRes int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.PointerIcon> CREATOR;
-    field public static final int TYPE_ALIAS = 1010; // 0x3f2
-    field public static final int TYPE_ALL_SCROLL = 1013; // 0x3f5
-    field public static final int TYPE_ARROW = 1000; // 0x3e8
-    field public static final int TYPE_CELL = 1006; // 0x3ee
-    field public static final int TYPE_CONTEXT_MENU = 1001; // 0x3e9
-    field public static final int TYPE_COPY = 1011; // 0x3f3
-    field public static final int TYPE_CROSSHAIR = 1007; // 0x3ef
-    field public static final int TYPE_DEFAULT = 1000; // 0x3e8
-    field public static final int TYPE_GRAB = 1020; // 0x3fc
-    field public static final int TYPE_GRABBING = 1021; // 0x3fd
-    field public static final int TYPE_HAND = 1002; // 0x3ea
-    field public static final int TYPE_HELP = 1003; // 0x3eb
-    field public static final int TYPE_HORIZONTAL_DOUBLE_ARROW = 1014; // 0x3f6
-    field public static final int TYPE_NO_DROP = 1012; // 0x3f4
-    field public static final int TYPE_NULL = 0; // 0x0
-    field public static final int TYPE_TEXT = 1008; // 0x3f0
-    field public static final int TYPE_TOP_LEFT_DIAGONAL_DOUBLE_ARROW = 1017; // 0x3f9
-    field public static final int TYPE_TOP_RIGHT_DIAGONAL_DOUBLE_ARROW = 1016; // 0x3f8
-    field public static final int TYPE_VERTICAL_DOUBLE_ARROW = 1015; // 0x3f7
-    field public static final int TYPE_VERTICAL_TEXT = 1009; // 0x3f1
-    field public static final int TYPE_WAIT = 1004; // 0x3ec
-    field public static final int TYPE_ZOOM_IN = 1018; // 0x3fa
-    field public static final int TYPE_ZOOM_OUT = 1019; // 0x3fb
-  }
-
-  public class ScaleGestureDetector {
-    ctor public ScaleGestureDetector(android.content.Context, android.view.ScaleGestureDetector.OnScaleGestureListener);
-    ctor public ScaleGestureDetector(android.content.Context, android.view.ScaleGestureDetector.OnScaleGestureListener, android.os.Handler);
-    method public float getCurrentSpan();
-    method public float getCurrentSpanX();
-    method public float getCurrentSpanY();
-    method public long getEventTime();
-    method public float getFocusX();
-    method public float getFocusY();
-    method public float getPreviousSpan();
-    method public float getPreviousSpanX();
-    method public float getPreviousSpanY();
-    method public float getScaleFactor();
-    method public long getTimeDelta();
-    method public boolean isInProgress();
-    method public boolean isQuickScaleEnabled();
-    method public boolean isStylusScaleEnabled();
-    method public boolean onTouchEvent(android.view.MotionEvent);
-    method public void setQuickScaleEnabled(boolean);
-    method public void setStylusScaleEnabled(boolean);
-  }
-
-  public static interface ScaleGestureDetector.OnScaleGestureListener {
-    method public boolean onScale(android.view.ScaleGestureDetector);
-    method public boolean onScaleBegin(android.view.ScaleGestureDetector);
-    method public void onScaleEnd(android.view.ScaleGestureDetector);
-  }
-
-  public static class ScaleGestureDetector.SimpleOnScaleGestureListener implements android.view.ScaleGestureDetector.OnScaleGestureListener {
-    ctor public ScaleGestureDetector.SimpleOnScaleGestureListener();
-    method public boolean onScale(android.view.ScaleGestureDetector);
-    method public boolean onScaleBegin(android.view.ScaleGestureDetector);
-    method public void onScaleEnd(android.view.ScaleGestureDetector);
-  }
-
-  public class SearchEvent {
-    ctor public SearchEvent(android.view.InputDevice);
-    method public android.view.InputDevice getInputDevice();
-  }
-
-  public class SoundEffectConstants {
-    method public static int getContantForFocusDirection(int);
-    field public static final int CLICK = 0; // 0x0
-    field public static final int NAVIGATION_DOWN = 4; // 0x4
-    field public static final int NAVIGATION_LEFT = 1; // 0x1
-    field public static final int NAVIGATION_RIGHT = 3; // 0x3
-    field public static final int NAVIGATION_UP = 2; // 0x2
-  }
-
-  public interface SubMenu extends android.view.Menu {
-    method public void clearHeader();
-    method public android.view.MenuItem getItem();
-    method public android.view.SubMenu setHeaderIcon(@DrawableRes int);
-    method public android.view.SubMenu setHeaderIcon(android.graphics.drawable.Drawable);
-    method public android.view.SubMenu setHeaderTitle(@StringRes int);
-    method public android.view.SubMenu setHeaderTitle(CharSequence);
-    method public android.view.SubMenu setHeaderView(android.view.View);
-    method public android.view.SubMenu setIcon(@DrawableRes int);
-    method public android.view.SubMenu setIcon(android.graphics.drawable.Drawable);
-  }
-
-  public class Surface implements android.os.Parcelable {
-    ctor public Surface(@NonNull android.view.SurfaceControl);
-    ctor public Surface(android.graphics.SurfaceTexture);
-    method public int describeContents();
-    method public boolean isValid();
-    method public android.graphics.Canvas lockCanvas(android.graphics.Rect) throws java.lang.IllegalArgumentException, android.view.Surface.OutOfResourcesException;
-    method public android.graphics.Canvas lockHardwareCanvas();
-    method public void readFromParcel(android.os.Parcel);
-    method public void release();
-    method public void setFrameRate(@FloatRange(from=0.0) float, int);
-    method @Deprecated public void unlockCanvas(android.graphics.Canvas);
-    method public void unlockCanvasAndPost(android.graphics.Canvas);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.Surface> CREATOR;
-    field public static final int FRAME_RATE_COMPATIBILITY_DEFAULT = 0; // 0x0
-    field public static final int FRAME_RATE_COMPATIBILITY_FIXED_SOURCE = 1; // 0x1
-    field public static final int ROTATION_0 = 0; // 0x0
-    field public static final int ROTATION_180 = 2; // 0x2
-    field public static final int ROTATION_270 = 3; // 0x3
-    field public static final int ROTATION_90 = 1; // 0x1
-  }
-
-  public static class Surface.OutOfResourcesException extends java.lang.RuntimeException {
-    ctor public Surface.OutOfResourcesException();
-    ctor public Surface.OutOfResourcesException(String);
-  }
-
-  public final class SurfaceControl implements android.os.Parcelable {
-    method public int describeContents();
-    method public boolean isValid();
-    method public void readFromParcel(android.os.Parcel);
-    method public void release();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.SurfaceControl> CREATOR;
-  }
-
-  public static class SurfaceControl.Builder {
-    ctor public SurfaceControl.Builder();
-    method @NonNull public android.view.SurfaceControl build();
-    method @NonNull public android.view.SurfaceControl.Builder setBufferSize(@IntRange(from=0) int, @IntRange(from=0) int);
-    method @NonNull public android.view.SurfaceControl.Builder setFormat(int);
-    method @NonNull public android.view.SurfaceControl.Builder setName(@NonNull String);
-    method @NonNull public android.view.SurfaceControl.Builder setOpaque(boolean);
-    method @NonNull public android.view.SurfaceControl.Builder setParent(@Nullable android.view.SurfaceControl);
-  }
-
-  public static class SurfaceControl.Transaction implements java.io.Closeable android.os.Parcelable {
-    ctor public SurfaceControl.Transaction();
-    method public void apply();
-    method public void close();
-    method public int describeContents();
-    method @NonNull public android.view.SurfaceControl.Transaction merge(@NonNull android.view.SurfaceControl.Transaction);
-    method @NonNull public android.view.SurfaceControl.Transaction reparent(@NonNull android.view.SurfaceControl, @Nullable android.view.SurfaceControl);
-    method @NonNull public android.view.SurfaceControl.Transaction setAlpha(@NonNull android.view.SurfaceControl, @FloatRange(from=0.0, to=1.0) float);
-    method @NonNull public android.view.SurfaceControl.Transaction setBufferSize(@NonNull android.view.SurfaceControl, @IntRange(from=0) int, @IntRange(from=0) int);
-    method @NonNull public android.view.SurfaceControl.Transaction setFrameRate(@NonNull android.view.SurfaceControl, @FloatRange(from=0.0) float, int);
-    method @NonNull public android.view.SurfaceControl.Transaction setGeometry(@NonNull android.view.SurfaceControl, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect, int);
-    method @NonNull public android.view.SurfaceControl.Transaction setLayer(@NonNull android.view.SurfaceControl, @IntRange(from=java.lang.Integer.MIN_VALUE, to=java.lang.Integer.MAX_VALUE) int);
-    method @NonNull public android.view.SurfaceControl.Transaction setVisibility(@NonNull android.view.SurfaceControl, boolean);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.SurfaceControl.Transaction> CREATOR;
-  }
-
-  public class SurfaceControlViewHost {
-    ctor public SurfaceControlViewHost(@NonNull android.content.Context, @NonNull android.view.Display, @Nullable android.os.IBinder);
-    method @Nullable public android.view.SurfaceControlViewHost.SurfacePackage getSurfacePackage();
-    method @Nullable public android.view.View getView();
-    method public void relayout(int, int);
-    method public void release();
-    method public void setView(@NonNull android.view.View, int, int);
-  }
-
-  public static final class SurfaceControlViewHost.SurfacePackage implements android.os.Parcelable {
-    method public int describeContents();
-    method public void release();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.SurfaceControlViewHost.SurfacePackage> CREATOR;
-  }
-
-  public interface SurfaceHolder {
-    method public void addCallback(android.view.SurfaceHolder.Callback);
-    method public android.view.Surface getSurface();
-    method public android.graphics.Rect getSurfaceFrame();
-    method public boolean isCreating();
-    method public android.graphics.Canvas lockCanvas();
-    method public android.graphics.Canvas lockCanvas(android.graphics.Rect);
-    method public default android.graphics.Canvas lockHardwareCanvas();
-    method public void removeCallback(android.view.SurfaceHolder.Callback);
-    method public void setFixedSize(int, int);
-    method public void setFormat(int);
-    method public void setKeepScreenOn(boolean);
-    method public void setSizeFromLayout();
-    method @Deprecated public void setType(int);
-    method public void unlockCanvasAndPost(android.graphics.Canvas);
-    field @Deprecated public static final int SURFACE_TYPE_GPU = 2; // 0x2
-    field @Deprecated public static final int SURFACE_TYPE_HARDWARE = 1; // 0x1
-    field @Deprecated public static final int SURFACE_TYPE_NORMAL = 0; // 0x0
-    field @Deprecated public static final int SURFACE_TYPE_PUSH_BUFFERS = 3; // 0x3
-  }
-
-  public static class SurfaceHolder.BadSurfaceTypeException extends java.lang.RuntimeException {
-    ctor public SurfaceHolder.BadSurfaceTypeException();
-    ctor public SurfaceHolder.BadSurfaceTypeException(String);
-  }
-
-  public static interface SurfaceHolder.Callback {
-    method public void surfaceChanged(@NonNull android.view.SurfaceHolder, int, @IntRange(from=0) int, @IntRange(from=0) int);
-    method public void surfaceCreated(@NonNull android.view.SurfaceHolder);
-    method public void surfaceDestroyed(@NonNull android.view.SurfaceHolder);
-  }
-
-  public static interface SurfaceHolder.Callback2 extends android.view.SurfaceHolder.Callback {
-    method public void surfaceRedrawNeeded(@NonNull android.view.SurfaceHolder);
-    method public default void surfaceRedrawNeededAsync(@NonNull android.view.SurfaceHolder, @NonNull Runnable);
-  }
-
-  public class SurfaceView extends android.view.View {
-    ctor public SurfaceView(android.content.Context);
-    ctor public SurfaceView(android.content.Context, android.util.AttributeSet);
-    ctor public SurfaceView(android.content.Context, android.util.AttributeSet, int);
-    ctor public SurfaceView(android.content.Context, android.util.AttributeSet, int, int);
-    method public boolean gatherTransparentRegion(android.graphics.Region);
-    method public android.view.SurfaceHolder getHolder();
-    method @Nullable public android.os.IBinder getHostToken();
-    method public android.view.SurfaceControl getSurfaceControl();
-    method public void setChildSurfacePackage(@NonNull android.view.SurfaceControlViewHost.SurfacePackage);
-    method public void setSecure(boolean);
-    method public void setZOrderMediaOverlay(boolean);
-    method public void setZOrderOnTop(boolean);
-  }
-
-  public class TextureView extends android.view.View {
-    ctor public TextureView(@NonNull android.content.Context);
-    ctor public TextureView(@NonNull android.content.Context, @Nullable android.util.AttributeSet);
-    ctor public TextureView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, int);
-    ctor public TextureView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, int, int);
-    method public final void draw(android.graphics.Canvas);
-    method @Nullable public android.graphics.Bitmap getBitmap();
-    method @Nullable public android.graphics.Bitmap getBitmap(int, int);
-    method @NonNull public android.graphics.Bitmap getBitmap(@NonNull android.graphics.Bitmap);
-    method @Nullable public android.graphics.SurfaceTexture getSurfaceTexture();
-    method @Nullable public android.view.TextureView.SurfaceTextureListener getSurfaceTextureListener();
-    method @NonNull public android.graphics.Matrix getTransform(@Nullable android.graphics.Matrix);
-    method public boolean isAvailable();
-    method @Nullable public android.graphics.Canvas lockCanvas();
-    method @Nullable public android.graphics.Canvas lockCanvas(@Nullable android.graphics.Rect);
-    method protected final void onDraw(android.graphics.Canvas);
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setOpaque(boolean);
-    method public void setSurfaceTexture(@NonNull android.graphics.SurfaceTexture);
-    method public void setSurfaceTextureListener(@Nullable android.view.TextureView.SurfaceTextureListener);
-    method public void setTransform(@Nullable android.graphics.Matrix);
-    method public void unlockCanvasAndPost(@NonNull android.graphics.Canvas);
-  }
-
-  public static interface TextureView.SurfaceTextureListener {
-    method public void onSurfaceTextureAvailable(@NonNull android.graphics.SurfaceTexture, int, int);
-    method public boolean onSurfaceTextureDestroyed(@NonNull android.graphics.SurfaceTexture);
-    method public void onSurfaceTextureSizeChanged(@NonNull android.graphics.SurfaceTexture, int, int);
-    method public void onSurfaceTextureUpdated(@NonNull android.graphics.SurfaceTexture);
-  }
-
-  public class TouchDelegate {
-    ctor public TouchDelegate(android.graphics.Rect, android.view.View);
-    method @NonNull public android.view.accessibility.AccessibilityNodeInfo.TouchDelegateInfo getTouchDelegateInfo();
-    method public boolean onTouchEvent(@NonNull android.view.MotionEvent);
-    method public boolean onTouchExplorationHoverEvent(@NonNull android.view.MotionEvent);
-    field public static final int ABOVE = 1; // 0x1
-    field public static final int BELOW = 2; // 0x2
-    field public static final int TO_LEFT = 4; // 0x4
-    field public static final int TO_RIGHT = 8; // 0x8
-  }
-
-  public final class VelocityTracker {
-    method public void addMovement(android.view.MotionEvent);
-    method public void clear();
-    method public void computeCurrentVelocity(int);
-    method public void computeCurrentVelocity(int, float);
-    method public float getXVelocity();
-    method public float getXVelocity(int);
-    method public float getYVelocity();
-    method public float getYVelocity(int);
-    method public static android.view.VelocityTracker obtain();
-    method public void recycle();
-  }
-
-  public abstract class VerifiedInputEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getDeviceId();
-    method public int getDisplayId();
-    method public long getEventTimeNanos();
-    method public int getSource();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.VerifiedInputEvent> CREATOR;
-  }
-
-  public final class VerifiedKeyEvent extends android.view.VerifiedInputEvent implements android.os.Parcelable {
-    method public int getAction();
-    method public long getDownTimeNanos();
-    method @Nullable public Boolean getFlag(int);
-    method public int getKeyCode();
-    method public int getMetaState();
-    method public int getRepeatCount();
-    method public int getScanCode();
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.VerifiedKeyEvent> CREATOR;
-  }
-
-  public final class VerifiedMotionEvent extends android.view.VerifiedInputEvent implements android.os.Parcelable {
-    method public int getActionMasked();
-    method public int getButtonState();
-    method public long getDownTimeNanos();
-    method @Nullable public Boolean getFlag(int);
-    method public int getMetaState();
-    method public float getRawX();
-    method public float getRawY();
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.VerifiedMotionEvent> CREATOR;
-  }
-
-  @UiThread public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.view.KeyEvent.Callback {
-    ctor public View(android.content.Context);
-    ctor public View(android.content.Context, @Nullable android.util.AttributeSet);
-    ctor public View(android.content.Context, @Nullable android.util.AttributeSet, int);
-    ctor public View(android.content.Context, @Nullable android.util.AttributeSet, int, int);
-    method public void addChildrenForAccessibility(java.util.ArrayList<android.view.View>);
-    method public void addExtraDataToAccessibilityNodeInfo(@NonNull android.view.accessibility.AccessibilityNodeInfo, @NonNull String, @Nullable android.os.Bundle);
-    method public void addFocusables(java.util.ArrayList<android.view.View>, int);
-    method public void addFocusables(java.util.ArrayList<android.view.View>, int, int);
-    method public void addKeyboardNavigationClusters(@NonNull java.util.Collection<android.view.View>, int);
-    method public void addOnAttachStateChangeListener(android.view.View.OnAttachStateChangeListener);
-    method public void addOnLayoutChangeListener(android.view.View.OnLayoutChangeListener);
-    method public void addOnUnhandledKeyEventListener(android.view.View.OnUnhandledKeyEventListener);
-    method public void addTouchables(java.util.ArrayList<android.view.View>);
-    method public android.view.ViewPropertyAnimator animate();
-    method public void announceForAccessibility(CharSequence);
-    method public void autofill(android.view.autofill.AutofillValue);
-    method public void autofill(@NonNull android.util.SparseArray<android.view.autofill.AutofillValue>);
-    method protected boolean awakenScrollBars();
-    method protected boolean awakenScrollBars(int);
-    method protected boolean awakenScrollBars(int, boolean);
-    method public void bringToFront();
-    method @Deprecated public void buildDrawingCache();
-    method @Deprecated public void buildDrawingCache(boolean);
-    method public void buildLayer();
-    method public boolean callOnClick();
-    method public boolean canResolveLayoutDirection();
-    method public boolean canResolveTextAlignment();
-    method public boolean canResolveTextDirection();
-    method public boolean canScrollHorizontally(int);
-    method public boolean canScrollVertically(int);
-    method public final void cancelDragAndDrop();
-    method public void cancelLongPress();
-    method public final void cancelPendingInputEvents();
-    method public boolean checkInputConnectionProxy(android.view.View);
-    method public void clearAnimation();
-    method public void clearFocus();
-    method public static int combineMeasuredStates(int, int);
-    method protected int computeHorizontalScrollExtent();
-    method protected int computeHorizontalScrollOffset();
-    method protected int computeHorizontalScrollRange();
-    method public void computeScroll();
-    method public android.view.WindowInsets computeSystemWindowInsets(android.view.WindowInsets, android.graphics.Rect);
-    method protected int computeVerticalScrollExtent();
-    method protected int computeVerticalScrollOffset();
-    method protected int computeVerticalScrollRange();
-    method public android.view.accessibility.AccessibilityNodeInfo createAccessibilityNodeInfo();
-    method public void createContextMenu(android.view.ContextMenu);
-    method @Deprecated public void destroyDrawingCache();
-    method public android.view.WindowInsets dispatchApplyWindowInsets(android.view.WindowInsets);
-    method public boolean dispatchCapturedPointerEvent(android.view.MotionEvent);
-    method public void dispatchConfigurationChanged(android.content.res.Configuration);
-    method public void dispatchDisplayHint(int);
-    method public boolean dispatchDragEvent(android.view.DragEvent);
-    method protected void dispatchDraw(android.graphics.Canvas);
-    method public void dispatchDrawableHotspotChanged(float, float);
-    method @CallSuper public void dispatchFinishTemporaryDetach();
-    method protected boolean dispatchGenericFocusedEvent(android.view.MotionEvent);
-    method public boolean dispatchGenericMotionEvent(android.view.MotionEvent);
-    method protected boolean dispatchGenericPointerEvent(android.view.MotionEvent);
-    method protected boolean dispatchHoverEvent(android.view.MotionEvent);
-    method public boolean dispatchKeyEvent(android.view.KeyEvent);
-    method public boolean dispatchKeyEventPreIme(android.view.KeyEvent);
-    method public boolean dispatchKeyShortcutEvent(android.view.KeyEvent);
-    method public boolean dispatchNestedFling(float, float, boolean);
-    method public boolean dispatchNestedPreFling(float, float);
-    method public boolean dispatchNestedPrePerformAccessibilityAction(int, android.os.Bundle);
-    method public boolean dispatchNestedPreScroll(int, int, @Nullable @Size(2) int[], @Nullable @Size(2) int[]);
-    method public boolean dispatchNestedScroll(int, int, int, int, @Nullable @Size(2) int[]);
-    method public void dispatchPointerCaptureChanged(boolean);
-    method public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    method public void dispatchProvideAutofillStructure(@NonNull android.view.ViewStructure, int);
-    method public void dispatchProvideStructure(android.view.ViewStructure);
-    method protected void dispatchRestoreInstanceState(android.util.SparseArray<android.os.Parcelable>);
-    method protected void dispatchSaveInstanceState(android.util.SparseArray<android.os.Parcelable>);
-    method protected void dispatchSetActivated(boolean);
-    method protected void dispatchSetPressed(boolean);
-    method protected void dispatchSetSelected(boolean);
-    method @CallSuper public void dispatchStartTemporaryDetach();
-    method @Deprecated public void dispatchSystemUiVisibilityChanged(int);
-    method public boolean dispatchTouchEvent(android.view.MotionEvent);
-    method public boolean dispatchTrackballEvent(android.view.MotionEvent);
-    method public boolean dispatchUnhandledMove(android.view.View, int);
-    method protected void dispatchVisibilityChanged(@NonNull android.view.View, int);
-    method public void dispatchWindowFocusChanged(boolean);
-    method public void dispatchWindowInsetsAnimationEnd(@NonNull android.view.WindowInsetsAnimation);
-    method public void dispatchWindowInsetsAnimationPrepare(@NonNull android.view.WindowInsetsAnimation);
-    method @NonNull public android.view.WindowInsets dispatchWindowInsetsAnimationProgress(@NonNull android.view.WindowInsets, @NonNull java.util.List<android.view.WindowInsetsAnimation>);
-    method @NonNull public android.view.WindowInsetsAnimation.Bounds dispatchWindowInsetsAnimationStart(@NonNull android.view.WindowInsetsAnimation, @NonNull android.view.WindowInsetsAnimation.Bounds);
-    method @Deprecated public void dispatchWindowSystemUiVisiblityChanged(int);
-    method public void dispatchWindowVisibilityChanged(int);
-    method @CallSuper public void draw(android.graphics.Canvas);
-    method @CallSuper public void drawableHotspotChanged(float, float);
-    method @CallSuper protected void drawableStateChanged();
-    method public android.view.View findFocus();
-    method public final <T extends android.view.View> T findViewById(@IdRes int);
-    method public final <T extends android.view.View> T findViewWithTag(Object);
-    method public void findViewsWithText(java.util.ArrayList<android.view.View>, CharSequence, int);
-    method @Deprecated protected boolean fitSystemWindows(android.graphics.Rect);
-    method public android.view.View focusSearch(int);
-    method public void forceHasOverlappingRendering(boolean);
-    method public void forceLayout();
-    method public static int generateViewId();
-    method public CharSequence getAccessibilityClassName();
-    method public android.view.View.AccessibilityDelegate getAccessibilityDelegate();
-    method public int getAccessibilityLiveRegion();
-    method public android.view.accessibility.AccessibilityNodeProvider getAccessibilityNodeProvider();
-    method @Nullable public CharSequence getAccessibilityPaneTitle();
-    method @IdRes public int getAccessibilityTraversalAfter();
-    method @IdRes public int getAccessibilityTraversalBefore();
-    method public float getAlpha();
-    method public android.view.animation.Animation getAnimation();
-    method @Nullable public android.graphics.Matrix getAnimationMatrix();
-    method public android.os.IBinder getApplicationWindowToken();
-    method @NonNull public int[] getAttributeResolutionStack(@AttrRes int);
-    method @NonNull public java.util.Map<java.lang.Integer,java.lang.Integer> getAttributeSourceResourceMap();
-    method @Nullable public String[] getAutofillHints();
-    method public final android.view.autofill.AutofillId getAutofillId();
-    method public int getAutofillType();
-    method @Nullable public android.view.autofill.AutofillValue getAutofillValue();
-    method public android.graphics.drawable.Drawable getBackground();
-    method @Nullable public android.graphics.BlendMode getBackgroundTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getBackgroundTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getBackgroundTintMode();
-    method public int getBaseline();
-    method public final int getBottom();
-    method protected float getBottomFadingEdgeStrength();
-    method protected int getBottomPaddingOffset();
-    method public float getCameraDistance();
-    method public android.graphics.Rect getClipBounds();
-    method public boolean getClipBounds(android.graphics.Rect);
-    method public final boolean getClipToOutline();
-    method @Nullable public final android.view.contentcapture.ContentCaptureSession getContentCaptureSession();
-    method public CharSequence getContentDescription();
-    method public final android.content.Context getContext();
-    method protected android.view.ContextMenu.ContextMenuInfo getContextMenuInfo();
-    method public final boolean getDefaultFocusHighlightEnabled();
-    method public static int getDefaultSize(int, int);
-    method public android.view.Display getDisplay();
-    method public final int[] getDrawableState();
-    method @Deprecated public android.graphics.Bitmap getDrawingCache();
-    method @Deprecated public android.graphics.Bitmap getDrawingCache(boolean);
-    method @Deprecated @ColorInt public int getDrawingCacheBackgroundColor();
-    method @Deprecated public int getDrawingCacheQuality();
-    method public void getDrawingRect(android.graphics.Rect);
-    method public long getDrawingTime();
-    method public float getElevation();
-    method @StyleRes public int getExplicitStyle();
-    method public boolean getFilterTouchesWhenObscured();
-    method public boolean getFitsSystemWindows();
-    method public int getFocusable();
-    method public java.util.ArrayList<android.view.View> getFocusables(int);
-    method public void getFocusedRect(android.graphics.Rect);
-    method public android.graphics.drawable.Drawable getForeground();
-    method public int getForegroundGravity();
-    method @Nullable public android.graphics.BlendMode getForegroundTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getForegroundTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getForegroundTintMode();
-    method public boolean getGlobalVisibleRect(android.graphics.Rect, android.graphics.Point);
-    method public final boolean getGlobalVisibleRect(android.graphics.Rect);
-    method public android.os.Handler getHandler();
-    method public final boolean getHasOverlappingRendering();
-    method public final int getHeight();
-    method public void getHitRect(android.graphics.Rect);
-    method public int getHorizontalFadingEdgeLength();
-    method protected int getHorizontalScrollbarHeight();
-    method @Nullable public android.graphics.drawable.Drawable getHorizontalScrollbarThumbDrawable();
-    method @Nullable public android.graphics.drawable.Drawable getHorizontalScrollbarTrackDrawable();
-    method @IdRes public int getId();
-    method public int getImportantForAccessibility();
-    method public int getImportantForAutofill();
-    method public int getImportantForContentCapture();
-    method public boolean getKeepScreenOn();
-    method public android.view.KeyEvent.DispatcherState getKeyDispatcherState();
-    method @IdRes public int getLabelFor();
-    method public int getLayerType();
-    method public int getLayoutDirection();
-    method public android.view.ViewGroup.LayoutParams getLayoutParams();
-    method public final int getLeft();
-    method protected float getLeftFadingEdgeStrength();
-    method protected int getLeftPaddingOffset();
-    method public final boolean getLocalVisibleRect(android.graphics.Rect);
-    method public void getLocationInSurface(@NonNull @Size(2) int[]);
-    method public void getLocationInWindow(@Size(2) int[]);
-    method public void getLocationOnScreen(@Size(2) int[]);
-    method public android.graphics.Matrix getMatrix();
-    method public final int getMeasuredHeight();
-    method public final int getMeasuredHeightAndState();
-    method public final int getMeasuredState();
-    method public final int getMeasuredWidth();
-    method public final int getMeasuredWidthAndState();
-    method public int getMinimumHeight();
-    method public int getMinimumWidth();
-    method @IdRes public int getNextClusterForwardId();
-    method @IdRes public int getNextFocusDownId();
-    method @IdRes public int getNextFocusForwardId();
-    method @IdRes public int getNextFocusLeftId();
-    method @IdRes public int getNextFocusRightId();
-    method @IdRes public int getNextFocusUpId();
-    method public android.view.View.OnFocusChangeListener getOnFocusChangeListener();
-    method @ColorInt public int getOutlineAmbientShadowColor();
-    method public android.view.ViewOutlineProvider getOutlineProvider();
-    method @ColorInt public int getOutlineSpotShadowColor();
-    method public int getOverScrollMode();
-    method public android.view.ViewOverlay getOverlay();
-    method public int getPaddingBottom();
-    method public int getPaddingEnd();
-    method public int getPaddingLeft();
-    method public int getPaddingRight();
-    method public int getPaddingStart();
-    method public int getPaddingTop();
-    method public final android.view.ViewParent getParent();
-    method public android.view.ViewParent getParentForAccessibility();
-    method public float getPivotX();
-    method public float getPivotY();
-    method public android.view.PointerIcon getPointerIcon();
-    method public android.content.res.Resources getResources();
-    method public final boolean getRevealOnFocusHint();
-    method public final int getRight();
-    method protected float getRightFadingEdgeStrength();
-    method protected int getRightPaddingOffset();
-    method public android.view.View getRootView();
-    method public android.view.WindowInsets getRootWindowInsets();
-    method public float getRotation();
-    method public float getRotationX();
-    method public float getRotationY();
-    method public float getScaleX();
-    method public float getScaleY();
-    method public int getScrollBarDefaultDelayBeforeFade();
-    method public int getScrollBarFadeDuration();
-    method public int getScrollBarSize();
-    method public int getScrollBarStyle();
-    method public int getScrollIndicators();
-    method public final int getScrollX();
-    method public final int getScrollY();
-    method @ColorInt public int getSolidColor();
-    method @LayoutRes public int getSourceLayoutResId();
-    method @Nullable public final CharSequence getStateDescription();
-    method public android.animation.StateListAnimator getStateListAnimator();
-    method protected int getSuggestedMinimumHeight();
-    method protected int getSuggestedMinimumWidth();
-    method @NonNull public java.util.List<android.graphics.Rect> getSystemGestureExclusionRects();
-    method @Deprecated public int getSystemUiVisibility();
-    method public Object getTag();
-    method public Object getTag(int);
-    method public int getTextAlignment();
-    method public int getTextDirection();
-    method @Nullable public CharSequence getTooltipText();
-    method public final int getTop();
-    method protected float getTopFadingEdgeStrength();
-    method protected int getTopPaddingOffset();
-    method public android.view.TouchDelegate getTouchDelegate();
-    method public java.util.ArrayList<android.view.View> getTouchables();
-    method public float getTransitionAlpha();
-    method public String getTransitionName();
-    method public float getTranslationX();
-    method public float getTranslationY();
-    method public float getTranslationZ();
-    method public long getUniqueDrawingId();
-    method public int getVerticalFadingEdgeLength();
-    method public int getVerticalScrollbarPosition();
-    method @Nullable public android.graphics.drawable.Drawable getVerticalScrollbarThumbDrawable();
-    method @Nullable public android.graphics.drawable.Drawable getVerticalScrollbarTrackDrawable();
-    method public int getVerticalScrollbarWidth();
-    method public android.view.ViewTreeObserver getViewTreeObserver();
-    method public int getVisibility();
-    method public final int getWidth();
-    method protected int getWindowAttachCount();
-    method public android.view.WindowId getWindowId();
-    method @Nullable public android.view.WindowInsetsController getWindowInsetsController();
-    method @Deprecated public int getWindowSystemUiVisibility();
-    method public android.os.IBinder getWindowToken();
-    method public int getWindowVisibility();
-    method public void getWindowVisibleDisplayFrame(android.graphics.Rect);
-    method public float getX();
-    method public float getY();
-    method public float getZ();
-    method public boolean hasExplicitFocusable();
-    method public boolean hasFocus();
-    method public boolean hasFocusable();
-    method public boolean hasNestedScrollingParent();
-    method public boolean hasOnClickListeners();
-    method public boolean hasOnLongClickListeners();
-    method public boolean hasOverlappingRendering();
-    method public boolean hasPointerCapture();
-    method public boolean hasTransientState();
-    method public boolean hasWindowFocus();
-    method public static android.view.View inflate(android.content.Context, @LayoutRes int, android.view.ViewGroup);
-    method @Deprecated public void invalidate(android.graphics.Rect);
-    method @Deprecated public void invalidate(int, int, int, int);
-    method public void invalidate();
-    method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
-    method public void invalidateOutline();
-    method public boolean isAccessibilityFocused();
-    method public boolean isAccessibilityHeading();
-    method public boolean isActivated();
-    method public boolean isAttachedToWindow();
-    method public boolean isClickable();
-    method public boolean isContextClickable();
-    method public boolean isDirty();
-    method @Deprecated public boolean isDrawingCacheEnabled();
-    method public boolean isDuplicateParentStateEnabled();
-    method public boolean isEnabled();
-    method public final boolean isFocusable();
-    method public final boolean isFocusableInTouchMode();
-    method public boolean isFocused();
-    method public final boolean isFocusedByDefault();
-    method public boolean isForceDarkAllowed();
-    method public boolean isHapticFeedbackEnabled();
-    method public boolean isHardwareAccelerated();
-    method public boolean isHorizontalFadingEdgeEnabled();
-    method public boolean isHorizontalScrollBarEnabled();
-    method public boolean isHovered();
-    method public boolean isImportantForAccessibility();
-    method public final boolean isImportantForAutofill();
-    method public final boolean isImportantForContentCapture();
-    method public boolean isInEditMode();
-    method public boolean isInLayout();
-    method public boolean isInTouchMode();
-    method public final boolean isKeyboardNavigationCluster();
-    method public boolean isLaidOut();
-    method public boolean isLayoutDirectionResolved();
-    method public boolean isLayoutRequested();
-    method public boolean isLongClickable();
-    method public boolean isNestedScrollingEnabled();
-    method public boolean isOpaque();
-    method protected boolean isPaddingOffsetRequired();
-    method public boolean isPaddingRelative();
-    method public boolean isPivotSet();
-    method public boolean isPressed();
-    method public boolean isSaveEnabled();
-    method public boolean isSaveFromParentEnabled();
-    method public boolean isScreenReaderFocusable();
-    method public boolean isScrollContainer();
-    method public boolean isScrollbarFadingEnabled();
-    method public boolean isSelected();
-    method public final boolean isShowingLayoutBounds();
-    method public boolean isShown();
-    method public boolean isSoundEffectsEnabled();
-    method public final boolean isTemporarilyDetached();
-    method public boolean isTextAlignmentResolved();
-    method public boolean isTextDirectionResolved();
-    method public boolean isVerticalFadingEdgeEnabled();
-    method public boolean isVerticalScrollBarEnabled();
-    method public boolean isVisibleToUserForAutofill(int);
-    method @CallSuper public void jumpDrawablesToCurrentState();
-    method public android.view.View keyboardNavigationClusterSearch(android.view.View, int);
-    method public void layout(int, int, int, int);
-    method public final void measure(int, int);
-    method protected static int[] mergeDrawableStates(int[], int[]);
-    method public void offsetLeftAndRight(int);
-    method public void offsetTopAndBottom(int);
-    method @CallSuper protected void onAnimationEnd();
-    method @CallSuper protected void onAnimationStart();
-    method public android.view.WindowInsets onApplyWindowInsets(android.view.WindowInsets);
-    method @CallSuper protected void onAttachedToWindow();
-    method public void onCancelPendingInputEvents();
-    method public boolean onCapturedPointerEvent(android.view.MotionEvent);
-    method public boolean onCheckIsTextEditor();
-    method protected void onConfigurationChanged(android.content.res.Configuration);
-    method protected void onCreateContextMenu(android.view.ContextMenu);
-    method protected int[] onCreateDrawableState(int);
-    method public android.view.inputmethod.InputConnection onCreateInputConnection(android.view.inputmethod.EditorInfo);
-    method @CallSuper protected void onDetachedFromWindow();
-    method protected void onDisplayHint(int);
-    method public boolean onDragEvent(android.view.DragEvent);
-    method protected void onDraw(android.graphics.Canvas);
-    method public void onDrawForeground(android.graphics.Canvas);
-    method protected final void onDrawScrollBars(android.graphics.Canvas);
-    method public boolean onFilterTouchEventForSecurity(android.view.MotionEvent);
-    method @CallSuper protected void onFinishInflate();
-    method public void onFinishTemporaryDetach();
-    method @CallSuper protected void onFocusChanged(boolean, int, @Nullable android.graphics.Rect);
-    method public boolean onGenericMotionEvent(android.view.MotionEvent);
-    method public void onHoverChanged(boolean);
-    method public boolean onHoverEvent(android.view.MotionEvent);
-    method @CallSuper public void onInitializeAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    method @CallSuper public void onInitializeAccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo);
-    method public boolean onKeyDown(int, android.view.KeyEvent);
-    method public boolean onKeyLongPress(int, android.view.KeyEvent);
-    method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
-    method public boolean onKeyPreIme(int, android.view.KeyEvent);
-    method public boolean onKeyShortcut(int, android.view.KeyEvent);
-    method public boolean onKeyUp(int, android.view.KeyEvent);
-    method protected void onLayout(boolean, int, int, int, int);
-    method protected void onMeasure(int, int);
-    method protected void onOverScrolled(int, int, boolean, boolean);
-    method @CallSuper public void onPointerCaptureChange(boolean);
-    method @CallSuper public void onPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    method public void onProvideAutofillStructure(android.view.ViewStructure, int);
-    method public void onProvideAutofillVirtualStructure(android.view.ViewStructure, int);
-    method public void onProvideContentCaptureStructure(@NonNull android.view.ViewStructure, int);
-    method public void onProvideStructure(android.view.ViewStructure);
-    method public void onProvideVirtualStructure(android.view.ViewStructure);
-    method public android.view.PointerIcon onResolvePointerIcon(android.view.MotionEvent, int);
-    method @CallSuper protected void onRestoreInstanceState(android.os.Parcelable);
-    method public void onRtlPropertiesChanged(int);
-    method @CallSuper @Nullable protected android.os.Parcelable onSaveInstanceState();
-    method public void onScreenStateChanged(int);
-    method protected void onScrollChanged(int, int, int, int);
-    method protected boolean onSetAlpha(int);
-    method protected void onSizeChanged(int, int, int, int);
-    method public void onStartTemporaryDetach();
-    method public boolean onTouchEvent(android.view.MotionEvent);
-    method public boolean onTrackballEvent(android.view.MotionEvent);
-    method @CallSuper public void onVisibilityAggregated(boolean);
-    method protected void onVisibilityChanged(@NonNull android.view.View, int);
-    method public void onWindowFocusChanged(boolean);
-    method @Deprecated public void onWindowSystemUiVisibilityChanged(int);
-    method protected void onWindowVisibilityChanged(int);
-    method protected boolean overScrollBy(int, int, int, int, int, int, int, int, boolean);
-    method public boolean performAccessibilityAction(int, android.os.Bundle);
-    method public boolean performClick();
-    method public boolean performContextClick(float, float);
-    method public boolean performContextClick();
-    method public boolean performHapticFeedback(int);
-    method public boolean performHapticFeedback(int, int);
-    method public boolean performLongClick();
-    method public boolean performLongClick(float, float);
-    method public void playSoundEffect(int);
-    method public boolean post(Runnable);
-    method public boolean postDelayed(Runnable, long);
-    method public void postInvalidate();
-    method public void postInvalidate(int, int, int, int);
-    method public void postInvalidateDelayed(long);
-    method public void postInvalidateDelayed(long, int, int, int, int);
-    method public void postInvalidateOnAnimation();
-    method public void postInvalidateOnAnimation(int, int, int, int);
-    method public void postOnAnimation(Runnable);
-    method public void postOnAnimationDelayed(Runnable, long);
-    method public void refreshDrawableState();
-    method public void releasePointerCapture();
-    method public boolean removeCallbacks(Runnable);
-    method public void removeOnAttachStateChangeListener(android.view.View.OnAttachStateChangeListener);
-    method public void removeOnLayoutChangeListener(android.view.View.OnLayoutChangeListener);
-    method public void removeOnUnhandledKeyEventListener(android.view.View.OnUnhandledKeyEventListener);
-    method public void requestApplyInsets();
-    method @Deprecated public void requestFitSystemWindows();
-    method public final boolean requestFocus();
-    method public final boolean requestFocus(int);
-    method public boolean requestFocus(int, android.graphics.Rect);
-    method public final boolean requestFocusFromTouch();
-    method @CallSuper public void requestLayout();
-    method public void requestPointerCapture();
-    method public boolean requestRectangleOnScreen(android.graphics.Rect);
-    method public boolean requestRectangleOnScreen(android.graphics.Rect, boolean);
-    method public final void requestUnbufferedDispatch(android.view.MotionEvent);
-    method public final void requestUnbufferedDispatch(int);
-    method @NonNull public final <T extends android.view.View> T requireViewById(@IdRes int);
-    method public void resetPivot();
-    method public static int resolveSize(int, int);
-    method public static int resolveSizeAndState(int, int, int);
-    method public boolean restoreDefaultFocus();
-    method public void restoreHierarchyState(android.util.SparseArray<android.os.Parcelable>);
-    method public final void saveAttributeDataForStyleable(@NonNull android.content.Context, @NonNull int[], @Nullable android.util.AttributeSet, @NonNull android.content.res.TypedArray, int, int);
-    method public void saveHierarchyState(android.util.SparseArray<android.os.Parcelable>);
-    method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
-    method public void scrollBy(int, int);
-    method public void scrollTo(int, int);
-    method public void sendAccessibilityEvent(int);
-    method public void sendAccessibilityEventUnchecked(android.view.accessibility.AccessibilityEvent);
-    method public void setAccessibilityDelegate(@Nullable android.view.View.AccessibilityDelegate);
-    method public void setAccessibilityHeading(boolean);
-    method public void setAccessibilityLiveRegion(int);
-    method public void setAccessibilityPaneTitle(@Nullable CharSequence);
-    method public void setAccessibilityTraversalAfter(@IdRes int);
-    method public void setAccessibilityTraversalBefore(@IdRes int);
-    method public void setActivated(boolean);
-    method public void setAlpha(@FloatRange(from=0.0, to=1.0) float);
-    method public void setAnimation(android.view.animation.Animation);
-    method public void setAnimationMatrix(@Nullable android.graphics.Matrix);
-    method public void setAutofillHints(@Nullable java.lang.String...);
-    method public void setAutofillId(@Nullable android.view.autofill.AutofillId);
-    method public void setBackground(android.graphics.drawable.Drawable);
-    method public void setBackgroundColor(@ColorInt int);
-    method @Deprecated public void setBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setBackgroundResource(@DrawableRes int);
-    method public void setBackgroundTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setBackgroundTintList(@Nullable android.content.res.ColorStateList);
-    method public void setBackgroundTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public final void setBottom(int);
-    method public void setCameraDistance(float);
-    method public void setClickable(boolean);
-    method public void setClipBounds(android.graphics.Rect);
-    method public void setClipToOutline(boolean);
-    method public void setContentCaptureSession(@Nullable android.view.contentcapture.ContentCaptureSession);
-    method public void setContentDescription(CharSequence);
-    method public void setContextClickable(boolean);
-    method public void setDefaultFocusHighlightEnabled(boolean);
-    method @Deprecated public void setDrawingCacheBackgroundColor(@ColorInt int);
-    method @Deprecated public void setDrawingCacheEnabled(boolean);
-    method @Deprecated public void setDrawingCacheQuality(int);
-    method public void setDuplicateParentStateEnabled(boolean);
-    method public void setElevation(float);
-    method public void setEnabled(boolean);
-    method public void setFadingEdgeLength(int);
-    method public void setFilterTouchesWhenObscured(boolean);
-    method public void setFitsSystemWindows(boolean);
-    method public void setFocusable(boolean);
-    method public void setFocusable(int);
-    method public void setFocusableInTouchMode(boolean);
-    method public void setFocusedByDefault(boolean);
-    method public void setForceDarkAllowed(boolean);
-    method public void setForeground(android.graphics.drawable.Drawable);
-    method public void setForegroundGravity(int);
-    method public void setForegroundTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setForegroundTintList(@Nullable android.content.res.ColorStateList);
-    method public void setForegroundTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public void setHapticFeedbackEnabled(boolean);
-    method public void setHasTransientState(boolean);
-    method public void setHorizontalFadingEdgeEnabled(boolean);
-    method public void setHorizontalScrollBarEnabled(boolean);
-    method public void setHorizontalScrollbarThumbDrawable(@Nullable android.graphics.drawable.Drawable);
-    method public void setHorizontalScrollbarTrackDrawable(@Nullable android.graphics.drawable.Drawable);
-    method public void setHovered(boolean);
-    method public void setId(@IdRes int);
-    method public void setImportantForAccessibility(int);
-    method public void setImportantForAutofill(int);
-    method public void setImportantForContentCapture(int);
-    method public void setKeepScreenOn(boolean);
-    method public void setKeyboardNavigationCluster(boolean);
-    method public void setLabelFor(@IdRes int);
-    method public void setLayerPaint(@Nullable android.graphics.Paint);
-    method public void setLayerType(int, @Nullable android.graphics.Paint);
-    method public void setLayoutDirection(int);
-    method public void setLayoutParams(android.view.ViewGroup.LayoutParams);
-    method public final void setLeft(int);
-    method public final void setLeftTopRightBottom(int, int, int, int);
-    method public void setLongClickable(boolean);
-    method protected final void setMeasuredDimension(int, int);
-    method public void setMinimumHeight(int);
-    method public void setMinimumWidth(int);
-    method public void setNestedScrollingEnabled(boolean);
-    method public void setNextClusterForwardId(@IdRes int);
-    method public void setNextFocusDownId(@IdRes int);
-    method public void setNextFocusForwardId(@IdRes int);
-    method public void setNextFocusLeftId(@IdRes int);
-    method public void setNextFocusRightId(@IdRes int);
-    method public void setNextFocusUpId(@IdRes int);
-    method public void setOnApplyWindowInsetsListener(android.view.View.OnApplyWindowInsetsListener);
-    method public void setOnCapturedPointerListener(android.view.View.OnCapturedPointerListener);
-    method public void setOnClickListener(@Nullable android.view.View.OnClickListener);
-    method public void setOnContextClickListener(@Nullable android.view.View.OnContextClickListener);
-    method public void setOnCreateContextMenuListener(android.view.View.OnCreateContextMenuListener);
-    method public void setOnDragListener(android.view.View.OnDragListener);
-    method public void setOnFocusChangeListener(android.view.View.OnFocusChangeListener);
-    method public void setOnGenericMotionListener(android.view.View.OnGenericMotionListener);
-    method public void setOnHoverListener(android.view.View.OnHoverListener);
-    method public void setOnKeyListener(android.view.View.OnKeyListener);
-    method public void setOnLongClickListener(@Nullable android.view.View.OnLongClickListener);
-    method public void setOnScrollChangeListener(android.view.View.OnScrollChangeListener);
-    method @Deprecated public void setOnSystemUiVisibilityChangeListener(android.view.View.OnSystemUiVisibilityChangeListener);
-    method public void setOnTouchListener(android.view.View.OnTouchListener);
-    method public void setOutlineAmbientShadowColor(@ColorInt int);
-    method public void setOutlineProvider(android.view.ViewOutlineProvider);
-    method public void setOutlineSpotShadowColor(@ColorInt int);
-    method public void setOverScrollMode(int);
-    method public void setPadding(int, int, int, int);
-    method public void setPaddingRelative(int, int, int, int);
-    method public void setPivotX(float);
-    method public void setPivotY(float);
-    method public void setPointerIcon(android.view.PointerIcon);
-    method public void setPressed(boolean);
-    method public final void setRevealOnFocusHint(boolean);
-    method public final void setRight(int);
-    method public void setRotation(float);
-    method public void setRotationX(float);
-    method public void setRotationY(float);
-    method public void setSaveEnabled(boolean);
-    method public void setSaveFromParentEnabled(boolean);
-    method public void setScaleX(float);
-    method public void setScaleY(float);
-    method public void setScreenReaderFocusable(boolean);
-    method public void setScrollBarDefaultDelayBeforeFade(int);
-    method public void setScrollBarFadeDuration(int);
-    method public void setScrollBarSize(int);
-    method public void setScrollBarStyle(int);
-    method public void setScrollContainer(boolean);
-    method public void setScrollIndicators(int);
-    method public void setScrollIndicators(int, int);
-    method public void setScrollX(int);
-    method public void setScrollY(int);
-    method public void setScrollbarFadingEnabled(boolean);
-    method public void setSelected(boolean);
-    method public void setSoundEffectsEnabled(boolean);
-    method public void setStateDescription(@Nullable CharSequence);
-    method public void setStateListAnimator(android.animation.StateListAnimator);
-    method public void setSystemGestureExclusionRects(@NonNull java.util.List<android.graphics.Rect>);
-    method @Deprecated public void setSystemUiVisibility(int);
-    method public void setTag(Object);
-    method public void setTag(int, Object);
-    method public void setTextAlignment(int);
-    method public void setTextDirection(int);
-    method public void setTooltipText(@Nullable CharSequence);
-    method public final void setTop(int);
-    method public void setTouchDelegate(android.view.TouchDelegate);
-    method public void setTransitionAlpha(float);
-    method public final void setTransitionName(String);
-    method public void setTransitionVisibility(int);
-    method public void setTranslationX(float);
-    method public void setTranslationY(float);
-    method public void setTranslationZ(float);
-    method public void setVerticalFadingEdgeEnabled(boolean);
-    method public void setVerticalScrollBarEnabled(boolean);
-    method public void setVerticalScrollbarPosition(int);
-    method public void setVerticalScrollbarThumbDrawable(@Nullable android.graphics.drawable.Drawable);
-    method public void setVerticalScrollbarTrackDrawable(@Nullable android.graphics.drawable.Drawable);
-    method public void setVisibility(int);
-    method @Deprecated public void setWillNotCacheDrawing(boolean);
-    method public void setWillNotDraw(boolean);
-    method public void setWindowInsetsAnimationCallback(@Nullable android.view.WindowInsetsAnimation.Callback);
-    method public void setX(float);
-    method public void setY(float);
-    method public void setZ(float);
-    method public boolean showContextMenu();
-    method public boolean showContextMenu(float, float);
-    method public android.view.ActionMode startActionMode(android.view.ActionMode.Callback);
-    method public android.view.ActionMode startActionMode(android.view.ActionMode.Callback, int);
-    method public void startAnimation(android.view.animation.Animation);
-    method @Deprecated public final boolean startDrag(android.content.ClipData, android.view.View.DragShadowBuilder, Object, int);
-    method public final boolean startDragAndDrop(android.content.ClipData, android.view.View.DragShadowBuilder, Object, int);
-    method public boolean startNestedScroll(int);
-    method public void stopNestedScroll();
-    method public void transformMatrixToGlobal(@NonNull android.graphics.Matrix);
-    method public void transformMatrixToLocal(@NonNull android.graphics.Matrix);
-    method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
-    method public void unscheduleDrawable(android.graphics.drawable.Drawable);
-    method public final void updateDragShadow(android.view.View.DragShadowBuilder);
-    method @CallSuper protected boolean verifyDrawable(@NonNull android.graphics.drawable.Drawable);
-    method @Deprecated public boolean willNotCacheDrawing();
-    method public boolean willNotDraw();
-    field public static final int ACCESSIBILITY_LIVE_REGION_ASSERTIVE = 2; // 0x2
-    field public static final int ACCESSIBILITY_LIVE_REGION_NONE = 0; // 0x0
-    field public static final int ACCESSIBILITY_LIVE_REGION_POLITE = 1; // 0x1
-    field public static final android.util.Property<android.view.View,java.lang.Float> ALPHA;
-    field public static final int AUTOFILL_FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 1; // 0x1
-    field public static final String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE = "creditCardExpirationDate";
-    field public static final String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DAY = "creditCardExpirationDay";
-    field public static final String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH = "creditCardExpirationMonth";
-    field public static final String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR = "creditCardExpirationYear";
-    field public static final String AUTOFILL_HINT_CREDIT_CARD_NUMBER = "creditCardNumber";
-    field public static final String AUTOFILL_HINT_CREDIT_CARD_SECURITY_CODE = "creditCardSecurityCode";
-    field public static final String AUTOFILL_HINT_EMAIL_ADDRESS = "emailAddress";
-    field public static final String AUTOFILL_HINT_NAME = "name";
-    field public static final String AUTOFILL_HINT_PASSWORD = "password";
-    field public static final String AUTOFILL_HINT_PHONE = "phone";
-    field public static final String AUTOFILL_HINT_POSTAL_ADDRESS = "postalAddress";
-    field public static final String AUTOFILL_HINT_POSTAL_CODE = "postalCode";
-    field public static final String AUTOFILL_HINT_USERNAME = "username";
-    field public static final int AUTOFILL_TYPE_DATE = 4; // 0x4
-    field public static final int AUTOFILL_TYPE_LIST = 3; // 0x3
-    field public static final int AUTOFILL_TYPE_NONE = 0; // 0x0
-    field public static final int AUTOFILL_TYPE_TEXT = 1; // 0x1
-    field public static final int AUTOFILL_TYPE_TOGGLE = 2; // 0x2
-    field public static final int DRAG_FLAG_GLOBAL = 256; // 0x100
-    field public static final int DRAG_FLAG_GLOBAL_PERSISTABLE_URI_PERMISSION = 64; // 0x40
-    field public static final int DRAG_FLAG_GLOBAL_PREFIX_URI_PERMISSION = 128; // 0x80
-    field public static final int DRAG_FLAG_GLOBAL_URI_READ = 1; // 0x1
-    field public static final int DRAG_FLAG_GLOBAL_URI_WRITE = 2; // 0x2
-    field public static final int DRAG_FLAG_OPAQUE = 512; // 0x200
-    field @Deprecated public static final int DRAWING_CACHE_QUALITY_AUTO = 0; // 0x0
-    field @Deprecated public static final int DRAWING_CACHE_QUALITY_HIGH = 1048576; // 0x100000
-    field @Deprecated public static final int DRAWING_CACHE_QUALITY_LOW = 524288; // 0x80000
-    field protected static final int[] EMPTY_STATE_SET;
-    field protected static final int[] ENABLED_FOCUSED_SELECTED_STATE_SET;
-    field protected static final int[] ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
-    field protected static final int[] ENABLED_FOCUSED_STATE_SET;
-    field protected static final int[] ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET;
-    field protected static final int[] ENABLED_SELECTED_STATE_SET;
-    field protected static final int[] ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET;
-    field protected static final int[] ENABLED_STATE_SET;
-    field protected static final int[] ENABLED_WINDOW_FOCUSED_STATE_SET;
-    field public static final int FIND_VIEWS_WITH_CONTENT_DESCRIPTION = 2; // 0x2
-    field public static final int FIND_VIEWS_WITH_TEXT = 1; // 0x1
-    field public static final int FOCUSABLE = 1; // 0x1
-    field public static final int FOCUSABLES_ALL = 0; // 0x0
-    field public static final int FOCUSABLES_TOUCH_MODE = 1; // 0x1
-    field public static final int FOCUSABLE_AUTO = 16; // 0x10
-    field protected static final int[] FOCUSED_SELECTED_STATE_SET;
-    field protected static final int[] FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
-    field protected static final int[] FOCUSED_STATE_SET;
-    field protected static final int[] FOCUSED_WINDOW_FOCUSED_STATE_SET;
-    field public static final int FOCUS_BACKWARD = 1; // 0x1
-    field public static final int FOCUS_DOWN = 130; // 0x82
-    field public static final int FOCUS_FORWARD = 2; // 0x2
-    field public static final int FOCUS_LEFT = 17; // 0x11
-    field public static final int FOCUS_RIGHT = 66; // 0x42
-    field public static final int FOCUS_UP = 33; // 0x21
-    field public static final int GONE = 8; // 0x8
-    field public static final int HAPTIC_FEEDBACK_ENABLED = 268435456; // 0x10000000
-    field public static final int IMPORTANT_FOR_ACCESSIBILITY_AUTO = 0; // 0x0
-    field public static final int IMPORTANT_FOR_ACCESSIBILITY_NO = 2; // 0x2
-    field public static final int IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS = 4; // 0x4
-    field public static final int IMPORTANT_FOR_ACCESSIBILITY_YES = 1; // 0x1
-    field public static final int IMPORTANT_FOR_AUTOFILL_AUTO = 0; // 0x0
-    field public static final int IMPORTANT_FOR_AUTOFILL_NO = 2; // 0x2
-    field public static final int IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS = 8; // 0x8
-    field public static final int IMPORTANT_FOR_AUTOFILL_YES = 1; // 0x1
-    field public static final int IMPORTANT_FOR_AUTOFILL_YES_EXCLUDE_DESCENDANTS = 4; // 0x4
-    field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_AUTO = 0; // 0x0
-    field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_NO = 2; // 0x2
-    field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS = 8; // 0x8
-    field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_YES = 1; // 0x1
-    field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS = 4; // 0x4
-    field public static final int INVISIBLE = 4; // 0x4
-    field public static final int KEEP_SCREEN_ON = 67108864; // 0x4000000
-    field public static final int LAYER_TYPE_HARDWARE = 2; // 0x2
-    field public static final int LAYER_TYPE_NONE = 0; // 0x0
-    field public static final int LAYER_TYPE_SOFTWARE = 1; // 0x1
-    field public static final int LAYOUT_DIRECTION_INHERIT = 2; // 0x2
-    field public static final int LAYOUT_DIRECTION_LOCALE = 3; // 0x3
-    field public static final int LAYOUT_DIRECTION_LTR = 0; // 0x0
-    field public static final int LAYOUT_DIRECTION_RTL = 1; // 0x1
-    field public static final int MEASURED_HEIGHT_STATE_SHIFT = 16; // 0x10
-    field public static final int MEASURED_SIZE_MASK = 16777215; // 0xffffff
-    field public static final int MEASURED_STATE_MASK = -16777216; // 0xff000000
-    field public static final int MEASURED_STATE_TOO_SMALL = 16777216; // 0x1000000
-    field public static final int NOT_FOCUSABLE = 0; // 0x0
-    field public static final int NO_ID = -1; // 0xffffffff
-    field public static final int OVER_SCROLL_ALWAYS = 0; // 0x0
-    field public static final int OVER_SCROLL_IF_CONTENT_SCROLLS = 1; // 0x1
-    field public static final int OVER_SCROLL_NEVER = 2; // 0x2
-    field protected static final int[] PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET;
-    field protected static final int[] PRESSED_ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
-    field protected static final int[] PRESSED_ENABLED_FOCUSED_STATE_SET;
-    field protected static final int[] PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET;
-    field protected static final int[] PRESSED_ENABLED_SELECTED_STATE_SET;
-    field protected static final int[] PRESSED_ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET;
-    field protected static final int[] PRESSED_ENABLED_STATE_SET;
-    field protected static final int[] PRESSED_ENABLED_WINDOW_FOCUSED_STATE_SET;
-    field protected static final int[] PRESSED_FOCUSED_SELECTED_STATE_SET;
-    field protected static final int[] PRESSED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
-    field protected static final int[] PRESSED_FOCUSED_STATE_SET;
-    field protected static final int[] PRESSED_FOCUSED_WINDOW_FOCUSED_STATE_SET;
-    field protected static final int[] PRESSED_SELECTED_STATE_SET;
-    field protected static final int[] PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
-    field protected static final int[] PRESSED_STATE_SET;
-    field protected static final int[] PRESSED_WINDOW_FOCUSED_STATE_SET;
-    field public static final android.util.Property<android.view.View,java.lang.Float> ROTATION;
-    field public static final android.util.Property<android.view.View,java.lang.Float> ROTATION_X;
-    field public static final android.util.Property<android.view.View,java.lang.Float> ROTATION_Y;
-    field public static final android.util.Property<android.view.View,java.lang.Float> SCALE_X;
-    field public static final android.util.Property<android.view.View,java.lang.Float> SCALE_Y;
-    field public static final int SCREEN_STATE_OFF = 0; // 0x0
-    field public static final int SCREEN_STATE_ON = 1; // 0x1
-    field public static final int SCROLLBARS_INSIDE_INSET = 16777216; // 0x1000000
-    field public static final int SCROLLBARS_INSIDE_OVERLAY = 0; // 0x0
-    field public static final int SCROLLBARS_OUTSIDE_INSET = 50331648; // 0x3000000
-    field public static final int SCROLLBARS_OUTSIDE_OVERLAY = 33554432; // 0x2000000
-    field public static final int SCROLLBAR_POSITION_DEFAULT = 0; // 0x0
-    field public static final int SCROLLBAR_POSITION_LEFT = 1; // 0x1
-    field public static final int SCROLLBAR_POSITION_RIGHT = 2; // 0x2
-    field public static final int SCROLL_AXIS_HORIZONTAL = 1; // 0x1
-    field public static final int SCROLL_AXIS_NONE = 0; // 0x0
-    field public static final int SCROLL_AXIS_VERTICAL = 2; // 0x2
-    field public static final int SCROLL_INDICATOR_BOTTOM = 2; // 0x2
-    field public static final int SCROLL_INDICATOR_END = 32; // 0x20
-    field public static final int SCROLL_INDICATOR_LEFT = 4; // 0x4
-    field public static final int SCROLL_INDICATOR_RIGHT = 8; // 0x8
-    field public static final int SCROLL_INDICATOR_START = 16; // 0x10
-    field public static final int SCROLL_INDICATOR_TOP = 1; // 0x1
-    field protected static final int[] SELECTED_STATE_SET;
-    field protected static final int[] SELECTED_WINDOW_FOCUSED_STATE_SET;
-    field public static final int SOUND_EFFECTS_ENABLED = 134217728; // 0x8000000
-    field @Deprecated public static final int STATUS_BAR_HIDDEN = 1; // 0x1
-    field @Deprecated public static final int STATUS_BAR_VISIBLE = 0; // 0x0
-    field @Deprecated public static final int SYSTEM_UI_FLAG_FULLSCREEN = 4; // 0x4
-    field @Deprecated public static final int SYSTEM_UI_FLAG_HIDE_NAVIGATION = 2; // 0x2
-    field @Deprecated public static final int SYSTEM_UI_FLAG_IMMERSIVE = 2048; // 0x800
-    field @Deprecated public static final int SYSTEM_UI_FLAG_IMMERSIVE_STICKY = 4096; // 0x1000
-    field @Deprecated public static final int SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN = 1024; // 0x400
-    field @Deprecated public static final int SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION = 512; // 0x200
-    field @Deprecated public static final int SYSTEM_UI_FLAG_LAYOUT_STABLE = 256; // 0x100
-    field @Deprecated public static final int SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR = 16; // 0x10
-    field @Deprecated public static final int SYSTEM_UI_FLAG_LIGHT_STATUS_BAR = 8192; // 0x2000
-    field @Deprecated public static final int SYSTEM_UI_FLAG_LOW_PROFILE = 1; // 0x1
-    field @Deprecated public static final int SYSTEM_UI_FLAG_VISIBLE = 0; // 0x0
-    field @Deprecated public static final int SYSTEM_UI_LAYOUT_FLAGS = 1536; // 0x600
-    field public static final int TEXT_ALIGNMENT_CENTER = 4; // 0x4
-    field public static final int TEXT_ALIGNMENT_GRAVITY = 1; // 0x1
-    field public static final int TEXT_ALIGNMENT_INHERIT = 0; // 0x0
-    field public static final int TEXT_ALIGNMENT_TEXT_END = 3; // 0x3
-    field public static final int TEXT_ALIGNMENT_TEXT_START = 2; // 0x2
-    field public static final int TEXT_ALIGNMENT_VIEW_END = 6; // 0x6
-    field public static final int TEXT_ALIGNMENT_VIEW_START = 5; // 0x5
-    field public static final int TEXT_DIRECTION_ANY_RTL = 2; // 0x2
-    field public static final int TEXT_DIRECTION_FIRST_STRONG = 1; // 0x1
-    field public static final int TEXT_DIRECTION_FIRST_STRONG_LTR = 6; // 0x6
-    field public static final int TEXT_DIRECTION_FIRST_STRONG_RTL = 7; // 0x7
-    field public static final int TEXT_DIRECTION_INHERIT = 0; // 0x0
-    field public static final int TEXT_DIRECTION_LOCALE = 5; // 0x5
-    field public static final int TEXT_DIRECTION_LTR = 3; // 0x3
-    field public static final int TEXT_DIRECTION_RTL = 4; // 0x4
-    field public static final android.util.Property<android.view.View,java.lang.Float> TRANSLATION_X;
-    field public static final android.util.Property<android.view.View,java.lang.Float> TRANSLATION_Y;
-    field public static final android.util.Property<android.view.View,java.lang.Float> TRANSLATION_Z;
-    field protected static final String VIEW_LOG_TAG = "View";
-    field public static final int VISIBLE = 0; // 0x0
-    field protected static final int[] WINDOW_FOCUSED_STATE_SET;
-    field public static final android.util.Property<android.view.View,java.lang.Float> X;
-    field public static final android.util.Property<android.view.View,java.lang.Float> Y;
-    field public static final android.util.Property<android.view.View,java.lang.Float> Z;
-  }
-
-  public static class View.AccessibilityDelegate {
-    ctor public View.AccessibilityDelegate();
-    method public void addExtraDataToAccessibilityNodeInfo(@NonNull android.view.View, @NonNull android.view.accessibility.AccessibilityNodeInfo, @NonNull String, @Nullable android.os.Bundle);
-    method public boolean dispatchPopulateAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
-    method public android.view.accessibility.AccessibilityNodeProvider getAccessibilityNodeProvider(android.view.View);
-    method public void onInitializeAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
-    method public void onInitializeAccessibilityNodeInfo(android.view.View, android.view.accessibility.AccessibilityNodeInfo);
-    method public void onPopulateAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
-    method public boolean onRequestSendAccessibilityEvent(android.view.ViewGroup, android.view.View, android.view.accessibility.AccessibilityEvent);
-    method public boolean performAccessibilityAction(android.view.View, int, android.os.Bundle);
-    method public void sendAccessibilityEvent(android.view.View, int);
-    method public void sendAccessibilityEventUnchecked(android.view.View, android.view.accessibility.AccessibilityEvent);
-  }
-
-  public static class View.BaseSavedState extends android.view.AbsSavedState {
-    ctor public View.BaseSavedState(android.os.Parcel);
-    ctor public View.BaseSavedState(android.os.Parcel, ClassLoader);
-    ctor public View.BaseSavedState(android.os.Parcelable);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.View.BaseSavedState> CREATOR;
-  }
-
-  public static class View.DragShadowBuilder {
-    ctor public View.DragShadowBuilder(android.view.View);
-    ctor public View.DragShadowBuilder();
-    method public final android.view.View getView();
-    method public void onDrawShadow(android.graphics.Canvas);
-    method public void onProvideShadowMetrics(android.graphics.Point, android.graphics.Point);
-  }
-
-  public static class View.MeasureSpec {
-    ctor public View.MeasureSpec();
-    method public static int getMode(int);
-    method public static int getSize(int);
-    method public static int makeMeasureSpec(@IntRange(from=0, to=0x40000000 - 1) int, int);
-    method public static String toString(int);
-    field public static final int AT_MOST = -2147483648; // 0x80000000
-    field public static final int EXACTLY = 1073741824; // 0x40000000
-    field public static final int UNSPECIFIED = 0; // 0x0
-  }
-
-  public static interface View.OnApplyWindowInsetsListener {
-    method public android.view.WindowInsets onApplyWindowInsets(android.view.View, android.view.WindowInsets);
-  }
-
-  public static interface View.OnAttachStateChangeListener {
-    method public void onViewAttachedToWindow(android.view.View);
-    method public void onViewDetachedFromWindow(android.view.View);
-  }
-
-  public static interface View.OnCapturedPointerListener {
-    method public boolean onCapturedPointer(android.view.View, android.view.MotionEvent);
-  }
-
-  public static interface View.OnClickListener {
-    method public void onClick(android.view.View);
-  }
-
-  public static interface View.OnContextClickListener {
-    method public boolean onContextClick(android.view.View);
-  }
-
-  public static interface View.OnCreateContextMenuListener {
-    method public void onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo);
-  }
-
-  public static interface View.OnDragListener {
-    method public boolean onDrag(android.view.View, android.view.DragEvent);
-  }
-
-  public static interface View.OnFocusChangeListener {
-    method public void onFocusChange(android.view.View, boolean);
-  }
-
-  public static interface View.OnGenericMotionListener {
-    method public boolean onGenericMotion(android.view.View, android.view.MotionEvent);
-  }
-
-  public static interface View.OnHoverListener {
-    method public boolean onHover(android.view.View, android.view.MotionEvent);
-  }
-
-  public static interface View.OnKeyListener {
-    method public boolean onKey(android.view.View, int, android.view.KeyEvent);
-  }
-
-  public static interface View.OnLayoutChangeListener {
-    method public void onLayoutChange(android.view.View, int, int, int, int, int, int, int, int);
-  }
-
-  public static interface View.OnLongClickListener {
-    method public boolean onLongClick(android.view.View);
-  }
-
-  public static interface View.OnScrollChangeListener {
-    method public void onScrollChange(android.view.View, int, int, int, int);
-  }
-
-  @Deprecated public static interface View.OnSystemUiVisibilityChangeListener {
-    method @Deprecated public void onSystemUiVisibilityChange(int);
-  }
-
-  public static interface View.OnTouchListener {
-    method public boolean onTouch(android.view.View, android.view.MotionEvent);
-  }
-
-  public static interface View.OnUnhandledKeyEventListener {
-    method public boolean onUnhandledKeyEvent(android.view.View, android.view.KeyEvent);
-  }
-
-  public final class ViewAnimationUtils {
-    method public static android.animation.Animator createCircularReveal(android.view.View, int, int, float, float);
-  }
-
-  public class ViewConfiguration {
-    ctor @Deprecated public ViewConfiguration();
-    method public static android.view.ViewConfiguration get(android.content.Context);
-    method @Deprecated @FloatRange(from=1.0) public static float getAmbiguousGestureMultiplier();
-    method public static long getDefaultActionModeHideDuration();
-    method public static int getDoubleTapTimeout();
-    method @Deprecated public static int getEdgeSlop();
-    method @Deprecated public static int getFadingEdgeLength();
-    method @Deprecated public static long getGlobalActionKeyTimeout();
-    method public static int getJumpTapTimeout();
-    method public static int getKeyRepeatDelay();
-    method public static int getKeyRepeatTimeout();
-    method public static int getLongPressTimeout();
-    method @Deprecated public static int getMaximumDrawingCacheSize();
-    method @Deprecated public static int getMaximumFlingVelocity();
-    method @Deprecated public static int getMinimumFlingVelocity();
-    method public static int getPressedStateDuration();
-    method @FloatRange(from=1.0) public float getScaledAmbiguousGestureMultiplier();
-    method public int getScaledDoubleTapSlop();
-    method public int getScaledEdgeSlop();
-    method public int getScaledFadingEdgeLength();
-    method public float getScaledHorizontalScrollFactor();
-    method public int getScaledHoverSlop();
-    method public int getScaledMaximumDrawingCacheSize();
-    method public int getScaledMaximumFlingVelocity();
-    method public int getScaledMinimumFlingVelocity();
-    method public int getScaledMinimumScalingSpan();
-    method public int getScaledOverflingDistance();
-    method public int getScaledOverscrollDistance();
-    method public int getScaledPagingTouchSlop();
-    method public int getScaledScrollBarSize();
-    method public int getScaledTouchSlop();
-    method public float getScaledVerticalScrollFactor();
-    method public int getScaledWindowTouchSlop();
-    method public static int getScrollBarFadeDuration();
-    method @Deprecated public static int getScrollBarSize();
-    method public static int getScrollDefaultDelay();
-    method public static float getScrollFriction();
-    method public static int getTapTimeout();
-    method @Deprecated public static int getTouchSlop();
-    method @Deprecated public static int getWindowTouchSlop();
-    method public static long getZoomControlsTimeout();
-    method public boolean hasPermanentMenuKey();
-    method public boolean shouldShowMenuShortcutsWhenKeyboardPresent();
-  }
-
-  public class ViewDebug {
-    ctor public ViewDebug();
-    method public static void dumpCapturedView(String, Object);
-    method @Deprecated public static void startHierarchyTracing(String, android.view.View);
-    method @Deprecated public static void startRecyclerTracing(String, android.view.View);
-    method @Deprecated public static void stopHierarchyTracing();
-    method @Deprecated public static void stopRecyclerTracing();
-    method @Deprecated public static void trace(android.view.View, android.view.ViewDebug.RecyclerTraceType, int...);
-    method @Deprecated public static void trace(android.view.View, android.view.ViewDebug.HierarchyTraceType);
-    field @Deprecated public static final boolean TRACE_HIERARCHY = false;
-    field @Deprecated public static final boolean TRACE_RECYCLER = false;
-  }
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD}) public static @interface ViewDebug.CapturedViewProperty {
-    method public abstract boolean retrieveReturn() default false;
-  }
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD}) public static @interface ViewDebug.ExportedProperty {
-    method public abstract String category() default "";
-    method public abstract boolean deepExport() default false;
-    method public abstract android.view.ViewDebug.FlagToString[] flagMapping() default {};
-    method public abstract boolean formatToHexString() default false;
-    method public abstract boolean hasAdjacentMapping() default false;
-    method public abstract android.view.ViewDebug.IntToString[] indexMapping() default {};
-    method public abstract android.view.ViewDebug.IntToString[] mapping() default {};
-    method public abstract String prefix() default "";
-    method public abstract boolean resolveId() default false;
-  }
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE}) public static @interface ViewDebug.FlagToString {
-    method public abstract int equals();
-    method public abstract int mask();
-    method public abstract String name();
-    method public abstract boolean outputIf() default true;
-  }
-
-  @Deprecated public enum ViewDebug.HierarchyTraceType {
-    enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType BUILD_CACHE;
-    enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType DRAW;
-    enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType INVALIDATE;
-    enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType INVALIDATE_CHILD;
-    enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType INVALIDATE_CHILD_IN_PARENT;
-    enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType ON_LAYOUT;
-    enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType ON_MEASURE;
-    enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType REQUEST_LAYOUT;
-  }
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE}) public static @interface ViewDebug.IntToString {
-    method public abstract int from();
-    method public abstract String to();
-  }
-
-  @Deprecated public enum ViewDebug.RecyclerTraceType {
-    enum_constant @Deprecated public static final android.view.ViewDebug.RecyclerTraceType BIND_VIEW;
-    enum_constant @Deprecated public static final android.view.ViewDebug.RecyclerTraceType MOVE_FROM_ACTIVE_TO_SCRAP_HEAP;
-    enum_constant @Deprecated public static final android.view.ViewDebug.RecyclerTraceType MOVE_TO_SCRAP_HEAP;
-    enum_constant @Deprecated public static final android.view.ViewDebug.RecyclerTraceType NEW_VIEW;
-    enum_constant @Deprecated public static final android.view.ViewDebug.RecyclerTraceType RECYCLE_FROM_ACTIVE_HEAP;
-    enum_constant @Deprecated public static final android.view.ViewDebug.RecyclerTraceType RECYCLE_FROM_SCRAP_HEAP;
-  }
-
-  @UiThread public abstract class ViewGroup extends android.view.View implements android.view.ViewManager android.view.ViewParent {
-    ctor public ViewGroup(android.content.Context);
-    ctor public ViewGroup(android.content.Context, android.util.AttributeSet);
-    ctor public ViewGroup(android.content.Context, android.util.AttributeSet, int);
-    ctor public ViewGroup(android.content.Context, android.util.AttributeSet, int, int);
-    method public boolean addStatesFromChildren();
-    method public void addView(android.view.View);
-    method public void addView(android.view.View, int);
-    method public void addView(android.view.View, int, int);
-    method public void addView(android.view.View, android.view.ViewGroup.LayoutParams);
-    method public void addView(android.view.View, int, android.view.ViewGroup.LayoutParams);
-    method protected boolean addViewInLayout(android.view.View, int, android.view.ViewGroup.LayoutParams);
-    method protected boolean addViewInLayout(android.view.View, int, android.view.ViewGroup.LayoutParams, boolean);
-    method protected void attachLayoutAnimationParameters(android.view.View, android.view.ViewGroup.LayoutParams, int, int);
-    method protected void attachViewToParent(android.view.View, int, android.view.ViewGroup.LayoutParams);
-    method public void bringChildToFront(android.view.View);
-    method protected boolean canAnimate();
-    method protected boolean checkLayoutParams(android.view.ViewGroup.LayoutParams);
-    method public void childDrawableStateChanged(android.view.View);
-    method public void childHasTransientStateChanged(android.view.View, boolean);
-    method protected void cleanupLayoutState(android.view.View);
-    method public void clearChildFocus(android.view.View);
-    method public void clearDisappearingChildren();
-    method protected void debug(int);
-    method protected void detachAllViewsFromParent();
-    method protected void detachViewFromParent(android.view.View);
-    method protected void detachViewFromParent(int);
-    method protected void detachViewsFromParent(int, int);
-    method protected void dispatchFreezeSelfOnly(android.util.SparseArray<android.os.Parcelable>);
-    method public void dispatchSetActivated(boolean);
-    method public void dispatchSetSelected(boolean);
-    method protected void dispatchThawSelfOnly(android.util.SparseArray<android.os.Parcelable>);
-    method protected boolean drawChild(android.graphics.Canvas, android.view.View, long);
-    method public void endViewTransition(android.view.View);
-    method public android.view.View focusSearch(android.view.View, int);
-    method public void focusableViewAvailable(android.view.View);
-    method public boolean gatherTransparentRegion(android.graphics.Region);
-    method protected android.view.ViewGroup.LayoutParams generateDefaultLayoutParams();
-    method public android.view.ViewGroup.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method protected android.view.ViewGroup.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams);
-    method public android.view.View getChildAt(int);
-    method public int getChildCount();
-    method protected int getChildDrawingOrder(int, int);
-    method public final int getChildDrawingOrder(int);
-    method public static int getChildMeasureSpec(int, int, int);
-    method protected boolean getChildStaticTransformation(android.view.View, android.view.animation.Transformation);
-    method public boolean getChildVisibleRect(android.view.View, android.graphics.Rect, android.graphics.Point);
-    method public boolean getClipChildren();
-    method public boolean getClipToPadding();
-    method public int getDescendantFocusability();
-    method public android.view.View getFocusedChild();
-    method public android.view.animation.LayoutAnimationController getLayoutAnimation();
-    method public android.view.animation.Animation.AnimationListener getLayoutAnimationListener();
-    method public int getLayoutMode();
-    method public android.animation.LayoutTransition getLayoutTransition();
-    method public int getNestedScrollAxes();
-    method public android.view.ViewGroupOverlay getOverlay();
-    method @Deprecated public int getPersistentDrawingCache();
-    method public boolean getTouchscreenBlocksFocus();
-    method public int indexOfChild(android.view.View);
-    method @Deprecated public final void invalidateChild(android.view.View, android.graphics.Rect);
-    method @Deprecated public android.view.ViewParent invalidateChildInParent(int[], android.graphics.Rect);
-    method @Deprecated public boolean isAlwaysDrawnWithCacheEnabled();
-    method @Deprecated public boolean isAnimationCacheEnabled();
-    method protected boolean isChildrenDrawingOrderEnabled();
-    method @Deprecated protected boolean isChildrenDrawnWithCacheEnabled();
-    method public boolean isLayoutSuppressed();
-    method public boolean isMotionEventSplittingEnabled();
-    method public boolean isTransitionGroup();
-    method public final void layout(int, int, int, int);
-    method protected void measureChild(android.view.View, int, int);
-    method protected void measureChildWithMargins(android.view.View, int, int, int, int);
-    method protected void measureChildren(int, int);
-    method public void notifySubtreeAccessibilityStateChanged(android.view.View, android.view.View, int);
-    method public final void offsetDescendantRectToMyCoords(android.view.View, android.graphics.Rect);
-    method public final void offsetRectIntoDescendantCoords(android.view.View, android.graphics.Rect);
-    method public boolean onInterceptHoverEvent(android.view.MotionEvent);
-    method public boolean onInterceptTouchEvent(android.view.MotionEvent);
-    method protected abstract void onLayout(boolean, int, int, int, int);
-    method public boolean onNestedFling(android.view.View, float, float, boolean);
-    method public boolean onNestedPreFling(android.view.View, float, float);
-    method public boolean onNestedPrePerformAccessibilityAction(android.view.View, int, android.os.Bundle);
-    method public void onNestedPreScroll(android.view.View, int, int, int[]);
-    method public void onNestedScroll(android.view.View, int, int, int, int);
-    method public void onNestedScrollAccepted(android.view.View, android.view.View, int);
-    method protected boolean onRequestFocusInDescendants(int, android.graphics.Rect);
-    method public boolean onRequestSendAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
-    method public boolean onStartNestedScroll(android.view.View, android.view.View, int);
-    method public void onStopNestedScroll(android.view.View);
-    method public void onViewAdded(android.view.View);
-    method public void onViewRemoved(android.view.View);
-    method public void recomputeViewAttributes(android.view.View);
-    method public void removeAllViews();
-    method public void removeAllViewsInLayout();
-    method protected void removeDetachedView(android.view.View, boolean);
-    method public void removeView(android.view.View);
-    method public void removeViewAt(int);
-    method public void removeViewInLayout(android.view.View);
-    method public void removeViews(int, int);
-    method public void removeViewsInLayout(int, int);
-    method public void requestChildFocus(android.view.View, android.view.View);
-    method public boolean requestChildRectangleOnScreen(android.view.View, android.graphics.Rect, boolean);
-    method public void requestDisallowInterceptTouchEvent(boolean);
-    method public boolean requestSendAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
-    method public void requestTransparentRegion(android.view.View);
-    method public void scheduleLayoutAnimation();
-    method public void setAddStatesFromChildren(boolean);
-    method @Deprecated public void setAlwaysDrawnWithCacheEnabled(boolean);
-    method @Deprecated public void setAnimationCacheEnabled(boolean);
-    method @Deprecated protected void setChildrenDrawingCacheEnabled(boolean);
-    method protected void setChildrenDrawingOrderEnabled(boolean);
-    method @Deprecated protected void setChildrenDrawnWithCacheEnabled(boolean);
-    method public void setClipChildren(boolean);
-    method public void setClipToPadding(boolean);
-    method public void setDescendantFocusability(int);
-    method public void setLayoutAnimation(android.view.animation.LayoutAnimationController);
-    method public void setLayoutAnimationListener(android.view.animation.Animation.AnimationListener);
-    method public void setLayoutMode(int);
-    method public void setLayoutTransition(android.animation.LayoutTransition);
-    method public void setMotionEventSplittingEnabled(boolean);
-    method public void setOnHierarchyChangeListener(android.view.ViewGroup.OnHierarchyChangeListener);
-    method @Deprecated public void setPersistentDrawingCache(int);
-    method protected void setStaticTransformationsEnabled(boolean);
-    method public void setTouchscreenBlocksFocus(boolean);
-    method public void setTransitionGroup(boolean);
-    method public boolean shouldDelayChildPressedState();
-    method public boolean showContextMenuForChild(android.view.View);
-    method public boolean showContextMenuForChild(android.view.View, float, float);
-    method public android.view.ActionMode startActionModeForChild(android.view.View, android.view.ActionMode.Callback);
-    method public android.view.ActionMode startActionModeForChild(android.view.View, android.view.ActionMode.Callback, int);
-    method public void startLayoutAnimation();
-    method public void startViewTransition(android.view.View);
-    method public void suppressLayout(boolean);
-    method public void updateViewLayout(android.view.View, android.view.ViewGroup.LayoutParams);
-    field protected static final int CLIP_TO_PADDING_MASK = 34; // 0x22
-    field public static final int FOCUS_AFTER_DESCENDANTS = 262144; // 0x40000
-    field public static final int FOCUS_BEFORE_DESCENDANTS = 131072; // 0x20000
-    field public static final int FOCUS_BLOCK_DESCENDANTS = 393216; // 0x60000
-    field public static final int LAYOUT_MODE_CLIP_BOUNDS = 0; // 0x0
-    field public static final int LAYOUT_MODE_OPTICAL_BOUNDS = 1; // 0x1
-    field @Deprecated public static final int PERSISTENT_ALL_CACHES = 3; // 0x3
-    field @Deprecated public static final int PERSISTENT_ANIMATION_CACHE = 1; // 0x1
-    field @Deprecated public static final int PERSISTENT_NO_CACHE = 0; // 0x0
-    field @Deprecated public static final int PERSISTENT_SCROLLING_CACHE = 2; // 0x2
-  }
-
-  public static class ViewGroup.LayoutParams {
-    ctor public ViewGroup.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public ViewGroup.LayoutParams(int, int);
-    ctor public ViewGroup.LayoutParams(android.view.ViewGroup.LayoutParams);
-    method public void resolveLayoutDirection(int);
-    method protected void setBaseAttributes(android.content.res.TypedArray, int, int);
-    field @Deprecated public static final int FILL_PARENT = -1; // 0xffffffff
-    field public static final int MATCH_PARENT = -1; // 0xffffffff
-    field public static final int WRAP_CONTENT = -2; // 0xfffffffe
-    field public int height;
-    field public android.view.animation.LayoutAnimationController.AnimationParameters layoutAnimationParameters;
-    field public int width;
-  }
-
-  public static class ViewGroup.MarginLayoutParams extends android.view.ViewGroup.LayoutParams {
-    ctor public ViewGroup.MarginLayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public ViewGroup.MarginLayoutParams(int, int);
-    ctor public ViewGroup.MarginLayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    ctor public ViewGroup.MarginLayoutParams(android.view.ViewGroup.LayoutParams);
-    method public int getLayoutDirection();
-    method public int getMarginEnd();
-    method public int getMarginStart();
-    method public boolean isMarginRelative();
-    method public void setLayoutDirection(int);
-    method public void setMarginEnd(int);
-    method public void setMarginStart(int);
-    method public void setMargins(int, int, int, int);
-    field public int bottomMargin;
-    field public int leftMargin;
-    field public int rightMargin;
-    field public int topMargin;
-  }
-
-  public static interface ViewGroup.OnHierarchyChangeListener {
-    method public void onChildViewAdded(android.view.View, android.view.View);
-    method public void onChildViewRemoved(android.view.View, android.view.View);
-  }
-
-  public class ViewGroupOverlay extends android.view.ViewOverlay {
-    method public void add(@NonNull android.view.View);
-    method public void remove(@NonNull android.view.View);
-  }
-
-  public interface ViewManager {
-    method public void addView(android.view.View, android.view.ViewGroup.LayoutParams);
-    method public void removeView(android.view.View);
-    method public void updateViewLayout(android.view.View, android.view.ViewGroup.LayoutParams);
-  }
-
-  public abstract class ViewOutlineProvider {
-    ctor public ViewOutlineProvider();
-    method public abstract void getOutline(android.view.View, android.graphics.Outline);
-    field public static final android.view.ViewOutlineProvider BACKGROUND;
-    field public static final android.view.ViewOutlineProvider BOUNDS;
-    field public static final android.view.ViewOutlineProvider PADDED_BOUNDS;
-  }
-
-  public class ViewOverlay {
-    method public void add(@NonNull android.graphics.drawable.Drawable);
-    method public void clear();
-    method public void remove(@NonNull android.graphics.drawable.Drawable);
-  }
-
-  public interface ViewParent {
-    method public void bringChildToFront(android.view.View);
-    method public boolean canResolveLayoutDirection();
-    method public boolean canResolveTextAlignment();
-    method public boolean canResolveTextDirection();
-    method public void childDrawableStateChanged(android.view.View);
-    method public void childHasTransientStateChanged(android.view.View, boolean);
-    method public void clearChildFocus(android.view.View);
-    method public void createContextMenu(android.view.ContextMenu);
-    method public android.view.View focusSearch(android.view.View, int);
-    method public void focusableViewAvailable(android.view.View);
-    method public boolean getChildVisibleRect(android.view.View, android.graphics.Rect, android.graphics.Point);
-    method public int getLayoutDirection();
-    method public android.view.ViewParent getParent();
-    method public android.view.ViewParent getParentForAccessibility();
-    method public int getTextAlignment();
-    method public int getTextDirection();
-    method @Deprecated public void invalidateChild(android.view.View, android.graphics.Rect);
-    method @Deprecated public android.view.ViewParent invalidateChildInParent(int[], android.graphics.Rect);
-    method public boolean isLayoutDirectionResolved();
-    method public boolean isLayoutRequested();
-    method public boolean isTextAlignmentResolved();
-    method public boolean isTextDirectionResolved();
-    method public android.view.View keyboardNavigationClusterSearch(android.view.View, int);
-    method public void notifySubtreeAccessibilityStateChanged(android.view.View, @NonNull android.view.View, int);
-    method public default void onDescendantInvalidated(@NonNull android.view.View, @NonNull android.view.View);
-    method public boolean onNestedFling(android.view.View, float, float, boolean);
-    method public boolean onNestedPreFling(android.view.View, float, float);
-    method public boolean onNestedPrePerformAccessibilityAction(android.view.View, int, android.os.Bundle);
-    method public void onNestedPreScroll(android.view.View, int, int, int[]);
-    method public void onNestedScroll(android.view.View, int, int, int, int);
-    method public void onNestedScrollAccepted(android.view.View, android.view.View, int);
-    method public boolean onStartNestedScroll(android.view.View, android.view.View, int);
-    method public void onStopNestedScroll(android.view.View);
-    method public void recomputeViewAttributes(android.view.View);
-    method public void requestChildFocus(android.view.View, android.view.View);
-    method public boolean requestChildRectangleOnScreen(android.view.View, android.graphics.Rect, boolean);
-    method public void requestDisallowInterceptTouchEvent(boolean);
-    method public void requestFitSystemWindows();
-    method public void requestLayout();
-    method public boolean requestSendAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
-    method public void requestTransparentRegion(android.view.View);
-    method public boolean showContextMenuForChild(android.view.View);
-    method public boolean showContextMenuForChild(android.view.View, float, float);
-    method public android.view.ActionMode startActionModeForChild(android.view.View, android.view.ActionMode.Callback);
-    method public android.view.ActionMode startActionModeForChild(android.view.View, android.view.ActionMode.Callback, int);
-  }
-
-  public class ViewPropertyAnimator {
-    method public android.view.ViewPropertyAnimator alpha(float);
-    method public android.view.ViewPropertyAnimator alphaBy(float);
-    method public void cancel();
-    method public long getDuration();
-    method public android.animation.TimeInterpolator getInterpolator();
-    method public long getStartDelay();
-    method public android.view.ViewPropertyAnimator rotation(float);
-    method public android.view.ViewPropertyAnimator rotationBy(float);
-    method public android.view.ViewPropertyAnimator rotationX(float);
-    method public android.view.ViewPropertyAnimator rotationXBy(float);
-    method public android.view.ViewPropertyAnimator rotationY(float);
-    method public android.view.ViewPropertyAnimator rotationYBy(float);
-    method public android.view.ViewPropertyAnimator scaleX(float);
-    method public android.view.ViewPropertyAnimator scaleXBy(float);
-    method public android.view.ViewPropertyAnimator scaleY(float);
-    method public android.view.ViewPropertyAnimator scaleYBy(float);
-    method public android.view.ViewPropertyAnimator setDuration(long);
-    method public android.view.ViewPropertyAnimator setInterpolator(android.animation.TimeInterpolator);
-    method public android.view.ViewPropertyAnimator setListener(android.animation.Animator.AnimatorListener);
-    method public android.view.ViewPropertyAnimator setStartDelay(long);
-    method public android.view.ViewPropertyAnimator setUpdateListener(android.animation.ValueAnimator.AnimatorUpdateListener);
-    method public void start();
-    method public android.view.ViewPropertyAnimator translationX(float);
-    method public android.view.ViewPropertyAnimator translationXBy(float);
-    method public android.view.ViewPropertyAnimator translationY(float);
-    method public android.view.ViewPropertyAnimator translationYBy(float);
-    method public android.view.ViewPropertyAnimator translationZ(float);
-    method public android.view.ViewPropertyAnimator translationZBy(float);
-    method public android.view.ViewPropertyAnimator withEndAction(Runnable);
-    method public android.view.ViewPropertyAnimator withLayer();
-    method public android.view.ViewPropertyAnimator withStartAction(Runnable);
-    method public android.view.ViewPropertyAnimator x(float);
-    method public android.view.ViewPropertyAnimator xBy(float);
-    method public android.view.ViewPropertyAnimator y(float);
-    method public android.view.ViewPropertyAnimator yBy(float);
-    method public android.view.ViewPropertyAnimator z(float);
-    method public android.view.ViewPropertyAnimator zBy(float);
-  }
-
-  public abstract class ViewStructure {
-    ctor public ViewStructure();
-    method public abstract int addChildCount(int);
-    method public abstract void asyncCommit();
-    method public abstract android.view.ViewStructure asyncNewChild(int);
-    method @Nullable public abstract android.view.autofill.AutofillId getAutofillId();
-    method public abstract int getChildCount();
-    method public abstract android.os.Bundle getExtras();
-    method public abstract CharSequence getHint();
-    method public abstract CharSequence getText();
-    method public abstract int getTextSelectionEnd();
-    method public abstract int getTextSelectionStart();
-    method public abstract boolean hasExtras();
-    method public abstract android.view.ViewStructure newChild(int);
-    method public abstract android.view.ViewStructure.HtmlInfo.Builder newHtmlInfoBuilder(@NonNull String);
-    method public abstract void setAccessibilityFocused(boolean);
-    method public abstract void setActivated(boolean);
-    method public abstract void setAlpha(float);
-    method public abstract void setAutofillHints(@Nullable String[]);
-    method public abstract void setAutofillId(@NonNull android.view.autofill.AutofillId);
-    method public abstract void setAutofillId(@NonNull android.view.autofill.AutofillId, int);
-    method public abstract void setAutofillOptions(CharSequence[]);
-    method public abstract void setAutofillType(int);
-    method public abstract void setAutofillValue(android.view.autofill.AutofillValue);
-    method public abstract void setCheckable(boolean);
-    method public abstract void setChecked(boolean);
-    method public abstract void setChildCount(int);
-    method public abstract void setClassName(String);
-    method public abstract void setClickable(boolean);
-    method public abstract void setContentDescription(CharSequence);
-    method public abstract void setContextClickable(boolean);
-    method public abstract void setDataIsSensitive(boolean);
-    method public abstract void setDimens(int, int, int, int, int, int);
-    method public abstract void setElevation(float);
-    method public abstract void setEnabled(boolean);
-    method public abstract void setFocusable(boolean);
-    method public abstract void setFocused(boolean);
-    method public abstract void setHint(CharSequence);
-    method public void setHintIdEntry(@NonNull String);
-    method public abstract void setHtmlInfo(@NonNull android.view.ViewStructure.HtmlInfo);
-    method public abstract void setId(int, String, String, String);
-    method public void setImportantForAutofill(int);
-    method public abstract void setInputType(int);
-    method public abstract void setLocaleList(android.os.LocaleList);
-    method public abstract void setLongClickable(boolean);
-    method public void setMaxTextEms(int);
-    method public void setMaxTextLength(int);
-    method public void setMinTextEms(int);
-    method public abstract void setOpaque(boolean);
-    method public abstract void setSelected(boolean);
-    method public abstract void setText(CharSequence);
-    method public abstract void setText(CharSequence, int, int);
-    method public void setTextIdEntry(@NonNull String);
-    method public abstract void setTextLines(int[], int[]);
-    method public abstract void setTextStyle(float, int, int, int);
-    method public abstract void setTransformation(android.graphics.Matrix);
-    method public abstract void setVisibility(int);
-    method public abstract void setWebDomain(@Nullable String);
-  }
-
-  public abstract static class ViewStructure.HtmlInfo {
-    ctor public ViewStructure.HtmlInfo();
-    method @Nullable public abstract java.util.List<android.util.Pair<java.lang.String,java.lang.String>> getAttributes();
-    method @NonNull public abstract String getTag();
-  }
-
-  public abstract static class ViewStructure.HtmlInfo.Builder {
-    ctor public ViewStructure.HtmlInfo.Builder();
-    method public abstract android.view.ViewStructure.HtmlInfo.Builder addAttribute(@NonNull String, @NonNull String);
-    method public abstract android.view.ViewStructure.HtmlInfo build();
-  }
-
-  @android.widget.RemoteViews.RemoteView public final class ViewStub extends android.view.View {
-    ctor public ViewStub(android.content.Context);
-    ctor public ViewStub(android.content.Context, @LayoutRes int);
-    ctor public ViewStub(android.content.Context, android.util.AttributeSet);
-    ctor public ViewStub(android.content.Context, android.util.AttributeSet, int);
-    ctor public ViewStub(android.content.Context, android.util.AttributeSet, int, int);
-    method @IdRes public int getInflatedId();
-    method public android.view.LayoutInflater getLayoutInflater();
-    method @LayoutRes public int getLayoutResource();
-    method public android.view.View inflate();
-    method public void setInflatedId(@IdRes int);
-    method public void setLayoutInflater(android.view.LayoutInflater);
-    method public void setLayoutResource(@LayoutRes int);
-    method public void setOnInflateListener(android.view.ViewStub.OnInflateListener);
-  }
-
-  public static interface ViewStub.OnInflateListener {
-    method public void onInflate(android.view.ViewStub, android.view.View);
-  }
-
-  public final class ViewTreeObserver {
-    method public void addOnDrawListener(android.view.ViewTreeObserver.OnDrawListener);
-    method public void addOnGlobalFocusChangeListener(android.view.ViewTreeObserver.OnGlobalFocusChangeListener);
-    method public void addOnGlobalLayoutListener(android.view.ViewTreeObserver.OnGlobalLayoutListener);
-    method public void addOnPreDrawListener(android.view.ViewTreeObserver.OnPreDrawListener);
-    method public void addOnScrollChangedListener(android.view.ViewTreeObserver.OnScrollChangedListener);
-    method public void addOnSystemGestureExclusionRectsChangedListener(@NonNull java.util.function.Consumer<java.util.List<android.graphics.Rect>>);
-    method public void addOnTouchModeChangeListener(android.view.ViewTreeObserver.OnTouchModeChangeListener);
-    method public void addOnWindowAttachListener(android.view.ViewTreeObserver.OnWindowAttachListener);
-    method public void addOnWindowFocusChangeListener(android.view.ViewTreeObserver.OnWindowFocusChangeListener);
-    method public void dispatchOnDraw();
-    method public void dispatchOnGlobalLayout();
-    method public boolean dispatchOnPreDraw();
-    method public boolean isAlive();
-    method public void registerFrameCommitCallback(@NonNull Runnable);
-    method @Deprecated public void removeGlobalOnLayoutListener(android.view.ViewTreeObserver.OnGlobalLayoutListener);
-    method public void removeOnDrawListener(android.view.ViewTreeObserver.OnDrawListener);
-    method public void removeOnGlobalFocusChangeListener(android.view.ViewTreeObserver.OnGlobalFocusChangeListener);
-    method public void removeOnGlobalLayoutListener(android.view.ViewTreeObserver.OnGlobalLayoutListener);
-    method public void removeOnPreDrawListener(android.view.ViewTreeObserver.OnPreDrawListener);
-    method public void removeOnScrollChangedListener(android.view.ViewTreeObserver.OnScrollChangedListener);
-    method public void removeOnSystemGestureExclusionRectsChangedListener(@NonNull java.util.function.Consumer<java.util.List<android.graphics.Rect>>);
-    method public void removeOnTouchModeChangeListener(android.view.ViewTreeObserver.OnTouchModeChangeListener);
-    method public void removeOnWindowAttachListener(android.view.ViewTreeObserver.OnWindowAttachListener);
-    method public void removeOnWindowFocusChangeListener(android.view.ViewTreeObserver.OnWindowFocusChangeListener);
-    method public boolean unregisterFrameCommitCallback(@NonNull Runnable);
-  }
-
-  public static interface ViewTreeObserver.OnDrawListener {
-    method public void onDraw();
-  }
-
-  public static interface ViewTreeObserver.OnGlobalFocusChangeListener {
-    method public void onGlobalFocusChanged(android.view.View, android.view.View);
-  }
-
-  public static interface ViewTreeObserver.OnGlobalLayoutListener {
-    method public void onGlobalLayout();
-  }
-
-  public static interface ViewTreeObserver.OnPreDrawListener {
-    method public boolean onPreDraw();
-  }
-
-  public static interface ViewTreeObserver.OnScrollChangedListener {
-    method public void onScrollChanged();
-  }
-
-  public static interface ViewTreeObserver.OnTouchModeChangeListener {
-    method public void onTouchModeChanged(boolean);
-  }
-
-  public static interface ViewTreeObserver.OnWindowAttachListener {
-    method public void onWindowAttached();
-    method public void onWindowDetached();
-  }
-
-  public static interface ViewTreeObserver.OnWindowFocusChangeListener {
-    method public void onWindowFocusChanged(boolean);
-  }
-
-  public abstract class Window {
-    ctor public Window(android.content.Context);
-    method public abstract void addContentView(android.view.View, android.view.ViewGroup.LayoutParams);
-    method public void addFlags(int);
-    method public final void addOnFrameMetricsAvailableListener(@NonNull android.view.Window.OnFrameMetricsAvailableListener, android.os.Handler);
-    method public void clearFlags(int);
-    method public abstract void closeAllPanels();
-    method public abstract void closePanel(int);
-    method public <T extends android.view.View> T findViewById(@IdRes int);
-    method public boolean getAllowEnterTransitionOverlap();
-    method public boolean getAllowReturnTransitionOverlap();
-    method public final android.view.WindowManager.LayoutParams getAttributes();
-    method public final android.view.Window.Callback getCallback();
-    method public int getColorMode();
-    method public final android.view.Window getContainer();
-    method public android.transition.Scene getContentScene();
-    method public final android.content.Context getContext();
-    method @Nullable public abstract android.view.View getCurrentFocus();
-    method @NonNull public abstract android.view.View getDecorView();
-    method public static int getDefaultFeatures(android.content.Context);
-    method public android.transition.Transition getEnterTransition();
-    method public android.transition.Transition getExitTransition();
-    method protected final int getFeatures();
-    method protected final int getForcedWindowFlags();
-    method @Nullable public android.view.WindowInsetsController getInsetsController();
-    method @NonNull public abstract android.view.LayoutInflater getLayoutInflater();
-    method protected final int getLocalFeatures();
-    method public android.media.session.MediaController getMediaController();
-    method @ColorInt public abstract int getNavigationBarColor();
-    method @ColorInt public int getNavigationBarDividerColor();
-    method public android.transition.Transition getReenterTransition();
-    method public android.transition.Transition getReturnTransition();
-    method public android.transition.Transition getSharedElementEnterTransition();
-    method public android.transition.Transition getSharedElementExitTransition();
-    method public android.transition.Transition getSharedElementReenterTransition();
-    method public android.transition.Transition getSharedElementReturnTransition();
-    method public boolean getSharedElementsUseOverlay();
-    method @ColorInt public abstract int getStatusBarColor();
-    method @NonNull public java.util.List<android.graphics.Rect> getSystemGestureExclusionRects();
-    method public long getTransitionBackgroundFadeDuration();
-    method public android.transition.TransitionManager getTransitionManager();
-    method public abstract int getVolumeControlStream();
-    method public android.view.WindowManager getWindowManager();
-    method public final android.content.res.TypedArray getWindowStyle();
-    method public final boolean hasChildren();
-    method public boolean hasFeature(int);
-    method protected final boolean hasSoftInputMode();
-    method public void injectInputEvent(android.view.InputEvent);
-    method public abstract void invalidatePanelMenu(int);
-    method public final boolean isActive();
-    method public abstract boolean isFloating();
-    method public boolean isNavigationBarContrastEnforced();
-    method public abstract boolean isShortcutKey(int, android.view.KeyEvent);
-    method public boolean isStatusBarContrastEnforced();
-    method public boolean isWideColorGamut();
-    method public final void makeActive();
-    method protected abstract void onActive();
-    method public abstract void onConfigurationChanged(android.content.res.Configuration);
-    method public abstract void openPanel(int, android.view.KeyEvent);
-    method public abstract android.view.View peekDecorView();
-    method public abstract boolean performContextMenuIdentifierAction(int, int);
-    method public abstract boolean performPanelIdentifierAction(int, int, int);
-    method public abstract boolean performPanelShortcut(int, int, android.view.KeyEvent, int);
-    method public final void removeOnFrameMetricsAvailableListener(android.view.Window.OnFrameMetricsAvailableListener);
-    method public boolean requestFeature(int);
-    method @NonNull public final <T extends android.view.View> T requireViewById(@IdRes int);
-    method public abstract void restoreHierarchyState(android.os.Bundle);
-    method public abstract android.os.Bundle saveHierarchyState();
-    method public void setAllowEnterTransitionOverlap(boolean);
-    method public void setAllowReturnTransitionOverlap(boolean);
-    method public void setAttributes(android.view.WindowManager.LayoutParams);
-    method public abstract void setBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setBackgroundDrawableResource(@DrawableRes int);
-    method public void setCallback(android.view.Window.Callback);
-    method public abstract void setChildDrawable(int, android.graphics.drawable.Drawable);
-    method public abstract void setChildInt(int, int);
-    method public void setClipToOutline(boolean);
-    method public void setColorMode(int);
-    method public void setContainer(android.view.Window);
-    method public abstract void setContentView(@LayoutRes int);
-    method public abstract void setContentView(android.view.View);
-    method public abstract void setContentView(android.view.View, android.view.ViewGroup.LayoutParams);
-    method public abstract void setDecorCaptionShade(int);
-    method public void setDecorFitsSystemWindows(boolean);
-    method protected void setDefaultWindowFormat(int);
-    method public void setDimAmount(float);
-    method public void setElevation(float);
-    method public void setEnterTransition(android.transition.Transition);
-    method public void setExitTransition(android.transition.Transition);
-    method public abstract void setFeatureDrawable(int, android.graphics.drawable.Drawable);
-    method public abstract void setFeatureDrawableAlpha(int, int);
-    method public abstract void setFeatureDrawableResource(int, @DrawableRes int);
-    method public abstract void setFeatureDrawableUri(int, android.net.Uri);
-    method public abstract void setFeatureInt(int, int);
-    method public void setFlags(int, int);
-    method public void setFormat(int);
-    method public void setGravity(int);
-    method public void setIcon(@DrawableRes int);
-    method public void setLayout(int, int);
-    method public void setLocalFocus(boolean, boolean);
-    method public void setLogo(@DrawableRes int);
-    method public void setMediaController(android.media.session.MediaController);
-    method public abstract void setNavigationBarColor(@ColorInt int);
-    method public void setNavigationBarContrastEnforced(boolean);
-    method public void setNavigationBarDividerColor(@ColorInt int);
-    method public void setPreferMinimalPostProcessing(boolean);
-    method public void setReenterTransition(android.transition.Transition);
-    method public abstract void setResizingCaptionDrawable(android.graphics.drawable.Drawable);
-    method public final void setRestrictedCaptionAreaListener(android.view.Window.OnRestrictedCaptionAreaChangedListener);
-    method public void setReturnTransition(android.transition.Transition);
-    method public void setSharedElementEnterTransition(android.transition.Transition);
-    method public void setSharedElementExitTransition(android.transition.Transition);
-    method public void setSharedElementReenterTransition(android.transition.Transition);
-    method public void setSharedElementReturnTransition(android.transition.Transition);
-    method public void setSharedElementsUseOverlay(boolean);
-    method public void setSoftInputMode(int);
-    method public abstract void setStatusBarColor(@ColorInt int);
-    method public void setStatusBarContrastEnforced(boolean);
-    method public void setSustainedPerformanceMode(boolean);
-    method public void setSystemGestureExclusionRects(@NonNull java.util.List<android.graphics.Rect>);
-    method public abstract void setTitle(CharSequence);
-    method @Deprecated public abstract void setTitleColor(@ColorInt int);
-    method public void setTransitionBackgroundFadeDuration(long);
-    method public void setTransitionManager(android.transition.TransitionManager);
-    method public void setType(int);
-    method public void setUiOptions(int);
-    method public void setUiOptions(int, int);
-    method public abstract void setVolumeControlStream(int);
-    method public void setWindowAnimations(@StyleRes int);
-    method public void setWindowManager(android.view.WindowManager, android.os.IBinder, String);
-    method public void setWindowManager(android.view.WindowManager, android.os.IBinder, String, boolean);
-    method public abstract boolean superDispatchGenericMotionEvent(android.view.MotionEvent);
-    method public abstract boolean superDispatchKeyEvent(android.view.KeyEvent);
-    method public abstract boolean superDispatchKeyShortcutEvent(android.view.KeyEvent);
-    method public abstract boolean superDispatchTouchEvent(android.view.MotionEvent);
-    method public abstract boolean superDispatchTrackballEvent(android.view.MotionEvent);
-    method public abstract void takeInputQueue(android.view.InputQueue.Callback);
-    method public abstract void takeKeyEvents(boolean);
-    method public abstract void takeSurface(android.view.SurfaceHolder.Callback2);
-    method public abstract void togglePanel(int, android.view.KeyEvent);
-    field public static final int DECOR_CAPTION_SHADE_AUTO = 0; // 0x0
-    field public static final int DECOR_CAPTION_SHADE_DARK = 2; // 0x2
-    field public static final int DECOR_CAPTION_SHADE_LIGHT = 1; // 0x1
-    field @Deprecated protected static final int DEFAULT_FEATURES = 65; // 0x41
-    field public static final int FEATURE_ACTION_BAR = 8; // 0x8
-    field public static final int FEATURE_ACTION_BAR_OVERLAY = 9; // 0x9
-    field public static final int FEATURE_ACTION_MODE_OVERLAY = 10; // 0xa
-    field public static final int FEATURE_ACTIVITY_TRANSITIONS = 13; // 0xd
-    field public static final int FEATURE_CONTENT_TRANSITIONS = 12; // 0xc
-    field public static final int FEATURE_CONTEXT_MENU = 6; // 0x6
-    field public static final int FEATURE_CUSTOM_TITLE = 7; // 0x7
-    field @Deprecated public static final int FEATURE_INDETERMINATE_PROGRESS = 5; // 0x5
-    field public static final int FEATURE_LEFT_ICON = 3; // 0x3
-    field public static final int FEATURE_NO_TITLE = 1; // 0x1
-    field public static final int FEATURE_OPTIONS_PANEL = 0; // 0x0
-    field @Deprecated public static final int FEATURE_PROGRESS = 2; // 0x2
-    field public static final int FEATURE_RIGHT_ICON = 4; // 0x4
-    field @Deprecated public static final int FEATURE_SWIPE_TO_DISMISS = 11; // 0xb
-    field public static final int ID_ANDROID_CONTENT = 16908290; // 0x1020002
-    field public static final String NAVIGATION_BAR_BACKGROUND_TRANSITION_NAME = "android:navigation:background";
-    field @Deprecated public static final int PROGRESS_END = 10000; // 0x2710
-    field @Deprecated public static final int PROGRESS_INDETERMINATE_OFF = -4; // 0xfffffffc
-    field @Deprecated public static final int PROGRESS_INDETERMINATE_ON = -3; // 0xfffffffd
-    field @Deprecated public static final int PROGRESS_SECONDARY_END = 30000; // 0x7530
-    field @Deprecated public static final int PROGRESS_SECONDARY_START = 20000; // 0x4e20
-    field @Deprecated public static final int PROGRESS_START = 0; // 0x0
-    field @Deprecated public static final int PROGRESS_VISIBILITY_OFF = -2; // 0xfffffffe
-    field @Deprecated public static final int PROGRESS_VISIBILITY_ON = -1; // 0xffffffff
-    field public static final String STATUS_BAR_BACKGROUND_TRANSITION_NAME = "android:status:background";
-  }
-
-  public static interface Window.Callback {
-    method public boolean dispatchGenericMotionEvent(android.view.MotionEvent);
-    method public boolean dispatchKeyEvent(android.view.KeyEvent);
-    method public boolean dispatchKeyShortcutEvent(android.view.KeyEvent);
-    method public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    method public boolean dispatchTouchEvent(android.view.MotionEvent);
-    method public boolean dispatchTrackballEvent(android.view.MotionEvent);
-    method public void onActionModeFinished(android.view.ActionMode);
-    method public void onActionModeStarted(android.view.ActionMode);
-    method public void onAttachedToWindow();
-    method public void onContentChanged();
-    method public boolean onCreatePanelMenu(int, @NonNull android.view.Menu);
-    method @Nullable public android.view.View onCreatePanelView(int);
-    method public void onDetachedFromWindow();
-    method public boolean onMenuItemSelected(int, @NonNull android.view.MenuItem);
-    method public boolean onMenuOpened(int, @NonNull android.view.Menu);
-    method public void onPanelClosed(int, @NonNull android.view.Menu);
-    method public default void onPointerCaptureChanged(boolean);
-    method public boolean onPreparePanel(int, @Nullable android.view.View, @NonNull android.view.Menu);
-    method public default void onProvideKeyboardShortcuts(java.util.List<android.view.KeyboardShortcutGroup>, @Nullable android.view.Menu, int);
-    method public boolean onSearchRequested();
-    method public boolean onSearchRequested(android.view.SearchEvent);
-    method public void onWindowAttributesChanged(android.view.WindowManager.LayoutParams);
-    method public void onWindowFocusChanged(boolean);
-    method @Nullable public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback);
-    method @Nullable public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback, int);
-  }
-
-  public static interface Window.OnFrameMetricsAvailableListener {
-    method public void onFrameMetricsAvailable(android.view.Window, android.view.FrameMetrics, int);
-  }
-
-  public static interface Window.OnRestrictedCaptionAreaChangedListener {
-    method public void onRestrictedCaptionAreaChanged(android.graphics.Rect);
-  }
-
-  public final class WindowAnimationFrameStats extends android.view.FrameStats implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.WindowAnimationFrameStats> CREATOR;
-  }
-
-  public final class WindowContentFrameStats extends android.view.FrameStats implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getFramePostedTimeNano(int);
-    method public long getFrameReadyTimeNano(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.WindowContentFrameStats> CREATOR;
-  }
-
-  public class WindowId implements android.os.Parcelable {
-    method public int describeContents();
-    method public boolean isFocused();
-    method public void registerFocusObserver(android.view.WindowId.FocusObserver);
-    method public void unregisterFocusObserver(android.view.WindowId.FocusObserver);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.WindowId> CREATOR;
-  }
-
-  public abstract static class WindowId.FocusObserver {
-    ctor public WindowId.FocusObserver();
-    method public abstract void onFocusGained(android.view.WindowId);
-    method public abstract void onFocusLost(android.view.WindowId);
-  }
-
-  public final class WindowInsets {
-    ctor public WindowInsets(android.view.WindowInsets);
-    method @Deprecated @NonNull public android.view.WindowInsets consumeDisplayCutout();
-    method @Deprecated @NonNull public android.view.WindowInsets consumeStableInsets();
-    method @Deprecated @NonNull public android.view.WindowInsets consumeSystemWindowInsets();
-    method @Nullable public android.view.DisplayCutout getDisplayCutout();
-    method @NonNull public android.graphics.Insets getInsets(int);
-    method @NonNull public android.graphics.Insets getInsetsIgnoringVisibility(int);
-    method @Deprecated @NonNull public android.graphics.Insets getMandatorySystemGestureInsets();
-    method @Deprecated public int getStableInsetBottom();
-    method @Deprecated public int getStableInsetLeft();
-    method @Deprecated public int getStableInsetRight();
-    method @Deprecated public int getStableInsetTop();
-    method @Deprecated @NonNull public android.graphics.Insets getStableInsets();
-    method @Deprecated @NonNull public android.graphics.Insets getSystemGestureInsets();
-    method @Deprecated public int getSystemWindowInsetBottom();
-    method @Deprecated public int getSystemWindowInsetLeft();
-    method @Deprecated public int getSystemWindowInsetRight();
-    method @Deprecated public int getSystemWindowInsetTop();
-    method @Deprecated @NonNull public android.graphics.Insets getSystemWindowInsets();
-    method @Deprecated @NonNull public android.graphics.Insets getTappableElementInsets();
-    method public boolean hasInsets();
-    method @Deprecated public boolean hasStableInsets();
-    method @Deprecated public boolean hasSystemWindowInsets();
-    method @NonNull public android.view.WindowInsets inset(@NonNull android.graphics.Insets);
-    method @NonNull public android.view.WindowInsets inset(@IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int);
-    method public boolean isConsumed();
-    method public boolean isRound();
-    method public boolean isVisible(int);
-    method @Deprecated @NonNull public android.view.WindowInsets replaceSystemWindowInsets(int, int, int, int);
-    method @Deprecated @NonNull public android.view.WindowInsets replaceSystemWindowInsets(android.graphics.Rect);
-    field @NonNull public static final android.view.WindowInsets CONSUMED;
-  }
-
-  public static final class WindowInsets.Builder {
-    ctor public WindowInsets.Builder();
-    ctor public WindowInsets.Builder(@NonNull android.view.WindowInsets);
-    method @NonNull public android.view.WindowInsets build();
-    method @NonNull public android.view.WindowInsets.Builder setDisplayCutout(@Nullable android.view.DisplayCutout);
-    method @NonNull public android.view.WindowInsets.Builder setInsets(int, @NonNull android.graphics.Insets);
-    method @NonNull public android.view.WindowInsets.Builder setInsetsIgnoringVisibility(int, @NonNull android.graphics.Insets) throws java.lang.IllegalArgumentException;
-    method @Deprecated @NonNull public android.view.WindowInsets.Builder setMandatorySystemGestureInsets(@NonNull android.graphics.Insets);
-    method @Deprecated @NonNull public android.view.WindowInsets.Builder setStableInsets(@NonNull android.graphics.Insets);
-    method @Deprecated @NonNull public android.view.WindowInsets.Builder setSystemGestureInsets(@NonNull android.graphics.Insets);
-    method @Deprecated @NonNull public android.view.WindowInsets.Builder setSystemWindowInsets(@NonNull android.graphics.Insets);
-    method @Deprecated @NonNull public android.view.WindowInsets.Builder setTappableElementInsets(@NonNull android.graphics.Insets);
-    method @NonNull public android.view.WindowInsets.Builder setVisible(int, boolean);
-  }
-
-  public static final class WindowInsets.Side {
-    method public static int all();
-    field public static final int BOTTOM = 8; // 0x8
-    field public static final int LEFT = 1; // 0x1
-    field public static final int RIGHT = 4; // 0x4
-    field public static final int TOP = 2; // 0x2
-  }
-
-  public static final class WindowInsets.Type {
-    method public static int captionBar();
-    method public static int displayCutout();
-    method public static int ime();
-    method public static int mandatorySystemGestures();
-    method public static int navigationBars();
-    method public static int statusBars();
-    method public static int systemBars();
-    method public static int systemGestures();
-    method public static int tappableElement();
-  }
-
-  public final class WindowInsetsAnimation {
-    ctor public WindowInsetsAnimation(int, @Nullable android.view.animation.Interpolator, long);
-    method @FloatRange(from=0.0f, to=1.0f) public float getAlpha();
-    method public long getDurationMillis();
-    method @FloatRange(from=0.0f, to=1.0f) public float getFraction();
-    method public float getInterpolatedFraction();
-    method @Nullable public android.view.animation.Interpolator getInterpolator();
-    method public int getTypeMask();
-    method public void setAlpha(@FloatRange(from=0.0f, to=1.0f) float);
-    method public void setFraction(@FloatRange(from=0.0f, to=1.0f) float);
-  }
-
-  public static final class WindowInsetsAnimation.Bounds {
-    ctor public WindowInsetsAnimation.Bounds(@NonNull android.graphics.Insets, @NonNull android.graphics.Insets);
-    method @NonNull public android.graphics.Insets getLowerBound();
-    method @NonNull public android.graphics.Insets getUpperBound();
-    method @NonNull public android.view.WindowInsetsAnimation.Bounds inset(@NonNull android.graphics.Insets);
-  }
-
-  public abstract static class WindowInsetsAnimation.Callback {
-    ctor public WindowInsetsAnimation.Callback(int);
-    method public final int getDispatchMode();
-    method public void onEnd(@NonNull android.view.WindowInsetsAnimation);
-    method public void onPrepare(@NonNull android.view.WindowInsetsAnimation);
-    method @NonNull public abstract android.view.WindowInsets onProgress(@NonNull android.view.WindowInsets, @NonNull java.util.List<android.view.WindowInsetsAnimation>);
-    method @NonNull public android.view.WindowInsetsAnimation.Bounds onStart(@NonNull android.view.WindowInsetsAnimation, @NonNull android.view.WindowInsetsAnimation.Bounds);
-    field public static final int DISPATCH_MODE_CONTINUE_ON_SUBTREE = 1; // 0x1
-    field public static final int DISPATCH_MODE_STOP = 0; // 0x0
-  }
-
-  public interface WindowInsetsAnimationControlListener {
-    method public void onCancelled(@Nullable android.view.WindowInsetsAnimationController);
-    method public void onFinished(@NonNull android.view.WindowInsetsAnimationController);
-    method public void onReady(@NonNull android.view.WindowInsetsAnimationController, int);
-  }
-
-  public interface WindowInsetsAnimationController {
-    method public void finish(boolean);
-    method public float getCurrentAlpha();
-    method @FloatRange(from=0.0f, to=1.0f) public float getCurrentFraction();
-    method @NonNull public android.graphics.Insets getCurrentInsets();
-    method @NonNull public android.graphics.Insets getHiddenStateInsets();
-    method @NonNull public android.graphics.Insets getShownStateInsets();
-    method public int getTypes();
-    method public boolean isCancelled();
-    method public boolean isFinished();
-    method public default boolean isReady();
-    method public void setInsetsAndAlpha(@Nullable android.graphics.Insets, @FloatRange(from=0.0f, to=1.0f) float, @FloatRange(from=0.0f, to=1.0f) float);
-  }
-
-  public interface WindowInsetsController {
-    method public void addOnControllableInsetsChangedListener(@NonNull android.view.WindowInsetsController.OnControllableInsetsChangedListener);
-    method public void controlWindowInsetsAnimation(int, long, @Nullable android.view.animation.Interpolator, @Nullable android.os.CancellationSignal, @NonNull android.view.WindowInsetsAnimationControlListener);
-    method public int getSystemBarsAppearance();
-    method public int getSystemBarsBehavior();
-    method public void hide(int);
-    method public void removeOnControllableInsetsChangedListener(@NonNull android.view.WindowInsetsController.OnControllableInsetsChangedListener);
-    method public void setSystemBarsAppearance(int, int);
-    method public void setSystemBarsBehavior(int);
-    method public void show(int);
-    field public static final int APPEARANCE_LIGHT_NAVIGATION_BARS = 16; // 0x10
-    field public static final int APPEARANCE_LIGHT_STATUS_BARS = 8; // 0x8
-    field public static final int BEHAVIOR_SHOW_BARS_BY_SWIPE = 1; // 0x1
-    field public static final int BEHAVIOR_SHOW_BARS_BY_TOUCH = 0; // 0x0
-    field public static final int BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE = 2; // 0x2
-  }
-
-  public static interface WindowInsetsController.OnControllableInsetsChangedListener {
-    method public void onControllableInsetsChanged(@NonNull android.view.WindowInsetsController, int);
-  }
-
-  public interface WindowManager extends android.view.ViewManager {
-    method @NonNull public default android.view.WindowMetrics getCurrentWindowMetrics();
-    method @Deprecated public android.view.Display getDefaultDisplay();
-    method @NonNull public default android.view.WindowMetrics getMaximumWindowMetrics();
-    method public void removeViewImmediate(android.view.View);
-  }
-
-  public static class WindowManager.BadTokenException extends java.lang.RuntimeException {
-    ctor public WindowManager.BadTokenException();
-    ctor public WindowManager.BadTokenException(String);
-  }
-
-  public static class WindowManager.InvalidDisplayException extends java.lang.RuntimeException {
-    ctor public WindowManager.InvalidDisplayException();
-    ctor public WindowManager.InvalidDisplayException(String);
-  }
-
-  public static class WindowManager.LayoutParams extends android.view.ViewGroup.LayoutParams implements android.os.Parcelable {
-    ctor public WindowManager.LayoutParams();
-    ctor public WindowManager.LayoutParams(int);
-    ctor public WindowManager.LayoutParams(int, int);
-    ctor public WindowManager.LayoutParams(int, int, int);
-    ctor public WindowManager.LayoutParams(int, int, int, int, int);
-    ctor public WindowManager.LayoutParams(int, int, int, int, int, int, int);
-    ctor public WindowManager.LayoutParams(android.os.Parcel);
-    method public final int copyFrom(android.view.WindowManager.LayoutParams);
-    method public String debug(String);
-    method public int describeContents();
-    method public int getColorMode();
-    method public int getFitInsetsSides();
-    method public int getFitInsetsTypes();
-    method public final CharSequence getTitle();
-    method public boolean isFitInsetsIgnoringVisibility();
-    method public static boolean mayUseInputMethod(int);
-    method public void setColorMode(int);
-    method public void setFitInsetsIgnoringVisibility(boolean);
-    method public void setFitInsetsSides(int);
-    method public void setFitInsetsTypes(int);
-    method public final void setTitle(CharSequence);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ALPHA_CHANGED = 128; // 0x80
-    field public static final int ANIMATION_CHANGED = 16; // 0x10
-    field public static final float BRIGHTNESS_OVERRIDE_FULL = 1.0f;
-    field public static final float BRIGHTNESS_OVERRIDE_NONE = -1.0f;
-    field public static final float BRIGHTNESS_OVERRIDE_OFF = 0.0f;
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.WindowManager.LayoutParams> CREATOR;
-    field public static final int DIM_AMOUNT_CHANGED = 32; // 0x20
-    field public static final int FIRST_APPLICATION_WINDOW = 1; // 0x1
-    field public static final int FIRST_SUB_WINDOW = 1000; // 0x3e8
-    field public static final int FIRST_SYSTEM_WINDOW = 2000; // 0x7d0
-    field public static final int FLAGS_CHANGED = 4; // 0x4
-    field public static final int FLAG_ALLOW_LOCK_WHILE_SCREEN_ON = 1; // 0x1
-    field public static final int FLAG_ALT_FOCUSABLE_IM = 131072; // 0x20000
-    field @Deprecated public static final int FLAG_BLUR_BEHIND = 4; // 0x4
-    field public static final int FLAG_DIM_BEHIND = 2; // 0x2
-    field @Deprecated public static final int FLAG_DISMISS_KEYGUARD = 4194304; // 0x400000
-    field @Deprecated public static final int FLAG_DITHER = 4096; // 0x1000
-    field public static final int FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS = -2147483648; // 0x80000000
-    field @Deprecated public static final int FLAG_FORCE_NOT_FULLSCREEN = 2048; // 0x800
-    field @Deprecated public static final int FLAG_FULLSCREEN = 1024; // 0x400
-    field public static final int FLAG_HARDWARE_ACCELERATED = 16777216; // 0x1000000
-    field public static final int FLAG_IGNORE_CHEEK_PRESSES = 32768; // 0x8000
-    field public static final int FLAG_KEEP_SCREEN_ON = 128; // 0x80
-    field @Deprecated public static final int FLAG_LAYOUT_ATTACHED_IN_DECOR = 1073741824; // 0x40000000
-    field @Deprecated public static final int FLAG_LAYOUT_INSET_DECOR = 65536; // 0x10000
-    field @Deprecated public static final int FLAG_LAYOUT_IN_OVERSCAN = 33554432; // 0x2000000
-    field public static final int FLAG_LAYOUT_IN_SCREEN = 256; // 0x100
-    field public static final int FLAG_LAYOUT_NO_LIMITS = 512; // 0x200
-    field public static final int FLAG_LOCAL_FOCUS_MODE = 268435456; // 0x10000000
-    field public static final int FLAG_NOT_FOCUSABLE = 8; // 0x8
-    field public static final int FLAG_NOT_TOUCHABLE = 16; // 0x10
-    field public static final int FLAG_NOT_TOUCH_MODAL = 32; // 0x20
-    field public static final int FLAG_SCALED = 16384; // 0x4000
-    field public static final int FLAG_SECURE = 8192; // 0x2000
-    field public static final int FLAG_SHOW_WALLPAPER = 1048576; // 0x100000
-    field @Deprecated public static final int FLAG_SHOW_WHEN_LOCKED = 524288; // 0x80000
-    field public static final int FLAG_SPLIT_TOUCH = 8388608; // 0x800000
-    field @Deprecated public static final int FLAG_TOUCHABLE_WHEN_WAKING = 64; // 0x40
-    field @Deprecated public static final int FLAG_TRANSLUCENT_NAVIGATION = 134217728; // 0x8000000
-    field @Deprecated public static final int FLAG_TRANSLUCENT_STATUS = 67108864; // 0x4000000
-    field @Deprecated public static final int FLAG_TURN_SCREEN_ON = 2097152; // 0x200000
-    field public static final int FLAG_WATCH_OUTSIDE_TOUCH = 262144; // 0x40000
-    field public static final int FORMAT_CHANGED = 8; // 0x8
-    field public static final int LAST_APPLICATION_WINDOW = 99; // 0x63
-    field public static final int LAST_SUB_WINDOW = 1999; // 0x7cf
-    field public static final int LAST_SYSTEM_WINDOW = 2999; // 0xbb7
-    field public static final int LAYOUT_CHANGED = 1; // 0x1
-    field public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS = 3; // 0x3
-    field public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT = 0; // 0x0
-    field public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER = 2; // 0x2
-    field public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES = 1; // 0x1
-    field public static final int MEMORY_TYPE_CHANGED = 256; // 0x100
-    field @Deprecated public static final int MEMORY_TYPE_GPU = 2; // 0x2
-    field @Deprecated public static final int MEMORY_TYPE_HARDWARE = 1; // 0x1
-    field @Deprecated public static final int MEMORY_TYPE_NORMAL = 0; // 0x0
-    field @Deprecated public static final int MEMORY_TYPE_PUSH_BUFFERS = 3; // 0x3
-    field public static final int ROTATION_ANIMATION_CHANGED = 4096; // 0x1000
-    field public static final int ROTATION_ANIMATION_CROSSFADE = 1; // 0x1
-    field public static final int ROTATION_ANIMATION_JUMPCUT = 2; // 0x2
-    field public static final int ROTATION_ANIMATION_ROTATE = 0; // 0x0
-    field public static final int ROTATION_ANIMATION_SEAMLESS = 3; // 0x3
-    field public static final int SCREEN_BRIGHTNESS_CHANGED = 2048; // 0x800
-    field public static final int SCREEN_ORIENTATION_CHANGED = 1024; // 0x400
-    field public static final int SOFT_INPUT_ADJUST_NOTHING = 48; // 0x30
-    field public static final int SOFT_INPUT_ADJUST_PAN = 32; // 0x20
-    field @Deprecated public static final int SOFT_INPUT_ADJUST_RESIZE = 16; // 0x10
-    field public static final int SOFT_INPUT_ADJUST_UNSPECIFIED = 0; // 0x0
-    field public static final int SOFT_INPUT_IS_FORWARD_NAVIGATION = 256; // 0x100
-    field public static final int SOFT_INPUT_MASK_ADJUST = 240; // 0xf0
-    field public static final int SOFT_INPUT_MASK_STATE = 15; // 0xf
-    field public static final int SOFT_INPUT_MODE_CHANGED = 512; // 0x200
-    field public static final int SOFT_INPUT_STATE_ALWAYS_HIDDEN = 3; // 0x3
-    field public static final int SOFT_INPUT_STATE_ALWAYS_VISIBLE = 5; // 0x5
-    field public static final int SOFT_INPUT_STATE_HIDDEN = 2; // 0x2
-    field public static final int SOFT_INPUT_STATE_UNCHANGED = 1; // 0x1
-    field public static final int SOFT_INPUT_STATE_UNSPECIFIED = 0; // 0x0
-    field public static final int SOFT_INPUT_STATE_VISIBLE = 4; // 0x4
-    field public static final int TITLE_CHANGED = 64; // 0x40
-    field public static final int TYPE_ACCESSIBILITY_OVERLAY = 2032; // 0x7f0
-    field public static final int TYPE_APPLICATION = 2; // 0x2
-    field public static final int TYPE_APPLICATION_ATTACHED_DIALOG = 1003; // 0x3eb
-    field public static final int TYPE_APPLICATION_MEDIA = 1001; // 0x3e9
-    field public static final int TYPE_APPLICATION_OVERLAY = 2038; // 0x7f6
-    field public static final int TYPE_APPLICATION_PANEL = 1000; // 0x3e8
-    field public static final int TYPE_APPLICATION_STARTING = 3; // 0x3
-    field public static final int TYPE_APPLICATION_SUB_PANEL = 1002; // 0x3ea
-    field public static final int TYPE_BASE_APPLICATION = 1; // 0x1
-    field public static final int TYPE_CHANGED = 2; // 0x2
-    field public static final int TYPE_DRAWN_APPLICATION = 4; // 0x4
-    field public static final int TYPE_INPUT_METHOD = 2011; // 0x7db
-    field public static final int TYPE_INPUT_METHOD_DIALOG = 2012; // 0x7dc
-    field public static final int TYPE_KEYGUARD_DIALOG = 2009; // 0x7d9
-    field @Deprecated public static final int TYPE_PHONE = 2002; // 0x7d2
-    field @Deprecated public static final int TYPE_PRIORITY_PHONE = 2007; // 0x7d7
-    field public static final int TYPE_PRIVATE_PRESENTATION = 2030; // 0x7ee
-    field public static final int TYPE_SEARCH_BAR = 2001; // 0x7d1
-    field public static final int TYPE_STATUS_BAR = 2000; // 0x7d0
-    field @Deprecated public static final int TYPE_STATUS_BAR_PANEL = 2014; // 0x7de
-    field @Deprecated public static final int TYPE_SYSTEM_ALERT = 2003; // 0x7d3
-    field public static final int TYPE_SYSTEM_DIALOG = 2008; // 0x7d8
-    field @Deprecated public static final int TYPE_SYSTEM_ERROR = 2010; // 0x7da
-    field @Deprecated public static final int TYPE_SYSTEM_OVERLAY = 2006; // 0x7d6
-    field @Deprecated public static final int TYPE_TOAST = 2005; // 0x7d5
-    field public static final int TYPE_WALLPAPER = 2013; // 0x7dd
-    field public float alpha;
-    field public float buttonBrightness;
-    field public float dimAmount;
-    field public int flags;
-    field public int format;
-    field public int gravity;
-    field public float horizontalMargin;
-    field public float horizontalWeight;
-    field public int layoutInDisplayCutoutMode;
-    field @Deprecated public int memoryType;
-    field public String packageName;
-    field public boolean preferMinimalPostProcessing;
-    field public int preferredDisplayModeId;
-    field @Deprecated public float preferredRefreshRate;
-    field public int rotationAnimation;
-    field public float screenBrightness;
-    field public int screenOrientation;
-    field public int softInputMode;
-    field @Deprecated public int systemUiVisibility;
-    field public android.os.IBinder token;
-    field public int type;
-    field public float verticalMargin;
-    field public float verticalWeight;
-    field public int windowAnimations;
-    field public int x;
-    field public int y;
-  }
-
-  public final class WindowMetrics {
-    ctor public WindowMetrics(@NonNull android.graphics.Rect, @NonNull android.view.WindowInsets);
-    method @NonNull public android.graphics.Rect getBounds();
-    method @NonNull public android.view.WindowInsets getWindowInsets();
-  }
-
-}
-
-package android.view.accessibility {
-
-  public final class AccessibilityEvent extends android.view.accessibility.AccessibilityRecord implements android.os.Parcelable {
-    ctor public AccessibilityEvent();
-    ctor public AccessibilityEvent(int);
-    ctor public AccessibilityEvent(@NonNull android.view.accessibility.AccessibilityEvent);
-    method public void appendRecord(android.view.accessibility.AccessibilityRecord);
-    method public int describeContents();
-    method public static String eventTypeToString(int);
-    method public int getAction();
-    method public int getContentChangeTypes();
-    method public long getEventTime();
-    method public int getEventType();
-    method public int getMovementGranularity();
-    method public CharSequence getPackageName();
-    method public android.view.accessibility.AccessibilityRecord getRecord(int);
-    method public int getRecordCount();
-    method public int getWindowChanges();
-    method public void initFromParcel(android.os.Parcel);
-    method public static android.view.accessibility.AccessibilityEvent obtain(int);
-    method public static android.view.accessibility.AccessibilityEvent obtain(android.view.accessibility.AccessibilityEvent);
-    method public static android.view.accessibility.AccessibilityEvent obtain();
-    method public void setAction(int);
-    method public void setContentChangeTypes(int);
-    method public void setEventTime(long);
-    method public void setEventType(int);
-    method public void setMovementGranularity(int);
-    method public void setPackageName(CharSequence);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 4; // 0x4
-    field public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 16; // 0x10
-    field public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 32; // 0x20
-    field public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 8; // 0x8
-    field public static final int CONTENT_CHANGE_TYPE_STATE_DESCRIPTION = 64; // 0x40
-    field public static final int CONTENT_CHANGE_TYPE_SUBTREE = 1; // 0x1
-    field public static final int CONTENT_CHANGE_TYPE_TEXT = 2; // 0x2
-    field public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.accessibility.AccessibilityEvent> CREATOR;
-    field public static final int INVALID_POSITION = -1; // 0xffffffff
-    field @Deprecated public static final int MAX_TEXT_LENGTH = 500; // 0x1f4
-    field public static final int TYPES_ALL_MASK = -1; // 0xffffffff
-    field public static final int TYPE_ANNOUNCEMENT = 16384; // 0x4000
-    field public static final int TYPE_ASSIST_READING_CONTEXT = 16777216; // 0x1000000
-    field public static final int TYPE_GESTURE_DETECTION_END = 524288; // 0x80000
-    field public static final int TYPE_GESTURE_DETECTION_START = 262144; // 0x40000
-    field public static final int TYPE_NOTIFICATION_STATE_CHANGED = 64; // 0x40
-    field public static final int TYPE_TOUCH_EXPLORATION_GESTURE_END = 1024; // 0x400
-    field public static final int TYPE_TOUCH_EXPLORATION_GESTURE_START = 512; // 0x200
-    field public static final int TYPE_TOUCH_INTERACTION_END = 2097152; // 0x200000
-    field public static final int TYPE_TOUCH_INTERACTION_START = 1048576; // 0x100000
-    field public static final int TYPE_VIEW_ACCESSIBILITY_FOCUSED = 32768; // 0x8000
-    field public static final int TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED = 65536; // 0x10000
-    field public static final int TYPE_VIEW_CLICKED = 1; // 0x1
-    field public static final int TYPE_VIEW_CONTEXT_CLICKED = 8388608; // 0x800000
-    field public static final int TYPE_VIEW_FOCUSED = 8; // 0x8
-    field public static final int TYPE_VIEW_HOVER_ENTER = 128; // 0x80
-    field public static final int TYPE_VIEW_HOVER_EXIT = 256; // 0x100
-    field public static final int TYPE_VIEW_LONG_CLICKED = 2; // 0x2
-    field public static final int TYPE_VIEW_SCROLLED = 4096; // 0x1000
-    field public static final int TYPE_VIEW_SELECTED = 4; // 0x4
-    field public static final int TYPE_VIEW_TEXT_CHANGED = 16; // 0x10
-    field public static final int TYPE_VIEW_TEXT_SELECTION_CHANGED = 8192; // 0x2000
-    field public static final int TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY = 131072; // 0x20000
-    field public static final int TYPE_WINDOWS_CHANGED = 4194304; // 0x400000
-    field public static final int TYPE_WINDOW_CONTENT_CHANGED = 2048; // 0x800
-    field public static final int TYPE_WINDOW_STATE_CHANGED = 32; // 0x20
-    field public static final int WINDOWS_CHANGE_ACCESSIBILITY_FOCUSED = 128; // 0x80
-    field public static final int WINDOWS_CHANGE_ACTIVE = 32; // 0x20
-    field public static final int WINDOWS_CHANGE_ADDED = 1; // 0x1
-    field public static final int WINDOWS_CHANGE_BOUNDS = 8; // 0x8
-    field public static final int WINDOWS_CHANGE_CHILDREN = 512; // 0x200
-    field public static final int WINDOWS_CHANGE_FOCUSED = 64; // 0x40
-    field public static final int WINDOWS_CHANGE_LAYER = 16; // 0x10
-    field public static final int WINDOWS_CHANGE_PARENT = 256; // 0x100
-    field public static final int WINDOWS_CHANGE_PIP = 1024; // 0x400
-    field public static final int WINDOWS_CHANGE_REMOVED = 2; // 0x2
-    field public static final int WINDOWS_CHANGE_TITLE = 4; // 0x4
-  }
-
-  public interface AccessibilityEventSource {
-    method public void sendAccessibilityEvent(int);
-    method public void sendAccessibilityEventUnchecked(android.view.accessibility.AccessibilityEvent);
-  }
-
-  public final class AccessibilityManager {
-    method public void addAccessibilityRequestPreparer(android.view.accessibility.AccessibilityRequestPreparer);
-    method public boolean addAccessibilityStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener);
-    method public void addAccessibilityStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener, @Nullable android.os.Handler);
-    method public boolean addTouchExplorationStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener);
-    method public void addTouchExplorationStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener, @Nullable android.os.Handler);
-    method @Deprecated public java.util.List<android.content.pm.ServiceInfo> getAccessibilityServiceList();
-    method public java.util.List<android.accessibilityservice.AccessibilityServiceInfo> getEnabledAccessibilityServiceList(int);
-    method public java.util.List<android.accessibilityservice.AccessibilityServiceInfo> getInstalledAccessibilityServiceList();
-    method public int getRecommendedTimeoutMillis(int, int);
-    method public void interrupt();
-    method public static boolean isAccessibilityButtonSupported();
-    method public boolean isEnabled();
-    method public boolean isTouchExplorationEnabled();
-    method public void removeAccessibilityRequestPreparer(android.view.accessibility.AccessibilityRequestPreparer);
-    method public boolean removeAccessibilityStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener);
-    method public boolean removeTouchExplorationStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener);
-    method public void sendAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    field public static final int FLAG_CONTENT_CONTROLS = 4; // 0x4
-    field public static final int FLAG_CONTENT_ICONS = 1; // 0x1
-    field public static final int FLAG_CONTENT_TEXT = 2; // 0x2
-  }
-
-  public static interface AccessibilityManager.AccessibilityStateChangeListener {
-    method public void onAccessibilityStateChanged(boolean);
-  }
-
-  public static interface AccessibilityManager.TouchExplorationStateChangeListener {
-    method public void onTouchExplorationStateChanged(boolean);
-  }
-
-  public class AccessibilityNodeInfo implements android.os.Parcelable {
-    ctor public AccessibilityNodeInfo();
-    ctor public AccessibilityNodeInfo(@NonNull android.view.View);
-    ctor public AccessibilityNodeInfo(@NonNull android.view.View, int);
-    ctor public AccessibilityNodeInfo(@NonNull android.view.accessibility.AccessibilityNodeInfo);
-    method public void addAction(android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction);
-    method @Deprecated public void addAction(int);
-    method public void addChild(android.view.View);
-    method public void addChild(android.view.View, int);
-    method public boolean canOpenPopup();
-    method public int describeContents();
-    method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByText(String);
-    method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByViewId(String);
-    method public android.view.accessibility.AccessibilityNodeInfo findFocus(int);
-    method public android.view.accessibility.AccessibilityNodeInfo focusSearch(int);
-    method public java.util.List<android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction> getActionList();
-    method @Deprecated public int getActions();
-    method public java.util.List<java.lang.String> getAvailableExtraData();
-    method @Deprecated public void getBoundsInParent(android.graphics.Rect);
-    method public void getBoundsInScreen(android.graphics.Rect);
-    method public android.view.accessibility.AccessibilityNodeInfo getChild(int);
-    method public int getChildCount();
-    method public CharSequence getClassName();
-    method public android.view.accessibility.AccessibilityNodeInfo.CollectionInfo getCollectionInfo();
-    method public android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo getCollectionItemInfo();
-    method public CharSequence getContentDescription();
-    method public int getDrawingOrder();
-    method public CharSequence getError();
-    method @Nullable public android.view.accessibility.AccessibilityNodeInfo.ExtraRenderingInfo getExtraRenderingInfo();
-    method public android.os.Bundle getExtras();
-    method public CharSequence getHintText();
-    method public int getInputType();
-    method public android.view.accessibility.AccessibilityNodeInfo getLabelFor();
-    method public android.view.accessibility.AccessibilityNodeInfo getLabeledBy();
-    method public int getLiveRegion();
-    method public int getMaxTextLength();
-    method public int getMovementGranularities();
-    method public CharSequence getPackageName();
-    method @Nullable public CharSequence getPaneTitle();
-    method public android.view.accessibility.AccessibilityNodeInfo getParent();
-    method public android.view.accessibility.AccessibilityNodeInfo.RangeInfo getRangeInfo();
-    method @Nullable public CharSequence getStateDescription();
-    method public CharSequence getText();
-    method public int getTextSelectionEnd();
-    method public int getTextSelectionStart();
-    method @Nullable public CharSequence getTooltipText();
-    method @Nullable public android.view.accessibility.AccessibilityNodeInfo.TouchDelegateInfo getTouchDelegateInfo();
-    method public android.view.accessibility.AccessibilityNodeInfo getTraversalAfter();
-    method public android.view.accessibility.AccessibilityNodeInfo getTraversalBefore();
-    method public String getViewIdResourceName();
-    method public android.view.accessibility.AccessibilityWindowInfo getWindow();
-    method public int getWindowId();
-    method public boolean isAccessibilityFocused();
-    method public boolean isCheckable();
-    method public boolean isChecked();
-    method public boolean isClickable();
-    method public boolean isContentInvalid();
-    method public boolean isContextClickable();
-    method public boolean isDismissable();
-    method public boolean isEditable();
-    method public boolean isEnabled();
-    method public boolean isFocusable();
-    method public boolean isFocused();
-    method public boolean isHeading();
-    method public boolean isImportantForAccessibility();
-    method public boolean isLongClickable();
-    method public boolean isMultiLine();
-    method public boolean isPassword();
-    method public boolean isScreenReaderFocusable();
-    method public boolean isScrollable();
-    method public boolean isSelected();
-    method public boolean isShowingHintText();
-    method public boolean isTextEntryKey();
-    method public boolean isVisibleToUser();
-    method public static android.view.accessibility.AccessibilityNodeInfo obtain(android.view.View);
-    method public static android.view.accessibility.AccessibilityNodeInfo obtain(android.view.View, int);
-    method public static android.view.accessibility.AccessibilityNodeInfo obtain();
-    method public static android.view.accessibility.AccessibilityNodeInfo obtain(android.view.accessibility.AccessibilityNodeInfo);
-    method public boolean performAction(int);
-    method public boolean performAction(int, android.os.Bundle);
-    method public void recycle();
-    method public boolean refresh();
-    method public boolean refreshWithExtraData(String, android.os.Bundle);
-    method @Deprecated public void removeAction(int);
-    method public boolean removeAction(android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction);
-    method public boolean removeChild(android.view.View);
-    method public boolean removeChild(android.view.View, int);
-    method public void setAccessibilityFocused(boolean);
-    method public void setAvailableExtraData(java.util.List<java.lang.String>);
-    method @Deprecated public void setBoundsInParent(android.graphics.Rect);
-    method public void setBoundsInScreen(android.graphics.Rect);
-    method public void setCanOpenPopup(boolean);
-    method public void setCheckable(boolean);
-    method public void setChecked(boolean);
-    method public void setClassName(CharSequence);
-    method public void setClickable(boolean);
-    method public void setCollectionInfo(android.view.accessibility.AccessibilityNodeInfo.CollectionInfo);
-    method public void setCollectionItemInfo(android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo);
-    method public void setContentDescription(CharSequence);
-    method public void setContentInvalid(boolean);
-    method public void setContextClickable(boolean);
-    method public void setDismissable(boolean);
-    method public void setDrawingOrder(int);
-    method public void setEditable(boolean);
-    method public void setEnabled(boolean);
-    method public void setError(CharSequence);
-    method public void setFocusable(boolean);
-    method public void setFocused(boolean);
-    method public void setHeading(boolean);
-    method public void setHintText(CharSequence);
-    method public void setImportantForAccessibility(boolean);
-    method public void setInputType(int);
-    method public void setLabelFor(android.view.View);
-    method public void setLabelFor(android.view.View, int);
-    method public void setLabeledBy(android.view.View);
-    method public void setLabeledBy(android.view.View, int);
-    method public void setLiveRegion(int);
-    method public void setLongClickable(boolean);
-    method public void setMaxTextLength(int);
-    method public void setMovementGranularities(int);
-    method public void setMultiLine(boolean);
-    method public void setPackageName(CharSequence);
-    method public void setPaneTitle(@Nullable CharSequence);
-    method public void setParent(android.view.View);
-    method public void setParent(android.view.View, int);
-    method public void setPassword(boolean);
-    method public void setRangeInfo(android.view.accessibility.AccessibilityNodeInfo.RangeInfo);
-    method public void setScreenReaderFocusable(boolean);
-    method public void setScrollable(boolean);
-    method public void setSelected(boolean);
-    method public void setShowingHintText(boolean);
-    method public void setSource(android.view.View);
-    method public void setSource(android.view.View, int);
-    method public void setStateDescription(@Nullable CharSequence);
-    method public void setText(CharSequence);
-    method public void setTextEntryKey(boolean);
-    method public void setTextSelection(int, int);
-    method public void setTooltipText(@Nullable CharSequence);
-    method public void setTouchDelegateInfo(@NonNull android.view.accessibility.AccessibilityNodeInfo.TouchDelegateInfo);
-    method public void setTraversalAfter(android.view.View);
-    method public void setTraversalAfter(android.view.View, int);
-    method public void setTraversalBefore(android.view.View);
-    method public void setTraversalBefore(android.view.View, int);
-    method public void setViewIdResourceName(String);
-    method public void setVisibleToUser(boolean);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ACTION_ACCESSIBILITY_FOCUS = 64; // 0x40
-    field public static final String ACTION_ARGUMENT_COLUMN_INT = "android.view.accessibility.action.ARGUMENT_COLUMN_INT";
-    field public static final String ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN = "ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN";
-    field public static final String ACTION_ARGUMENT_HTML_ELEMENT_STRING = "ACTION_ARGUMENT_HTML_ELEMENT_STRING";
-    field public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
-    field public static final String ACTION_ARGUMENT_MOVE_WINDOW_X = "ACTION_ARGUMENT_MOVE_WINDOW_X";
-    field public static final String ACTION_ARGUMENT_MOVE_WINDOW_Y = "ACTION_ARGUMENT_MOVE_WINDOW_Y";
-    field public static final String ACTION_ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT = "android.view.accessibility.action.ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT";
-    field public static final String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
-    field public static final String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
-    field public static final String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
-    field public static final String ACTION_ARGUMENT_SELECTION_START_INT = "ACTION_ARGUMENT_SELECTION_START_INT";
-    field public static final String ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE = "ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE";
-    field public static final int ACTION_CLEAR_ACCESSIBILITY_FOCUS = 128; // 0x80
-    field public static final int ACTION_CLEAR_FOCUS = 2; // 0x2
-    field public static final int ACTION_CLEAR_SELECTION = 8; // 0x8
-    field public static final int ACTION_CLICK = 16; // 0x10
-    field public static final int ACTION_COLLAPSE = 524288; // 0x80000
-    field public static final int ACTION_COPY = 16384; // 0x4000
-    field public static final int ACTION_CUT = 65536; // 0x10000
-    field public static final int ACTION_DISMISS = 1048576; // 0x100000
-    field public static final int ACTION_EXPAND = 262144; // 0x40000
-    field public static final int ACTION_FOCUS = 1; // 0x1
-    field public static final int ACTION_LONG_CLICK = 32; // 0x20
-    field public static final int ACTION_NEXT_AT_MOVEMENT_GRANULARITY = 256; // 0x100
-    field public static final int ACTION_NEXT_HTML_ELEMENT = 1024; // 0x400
-    field public static final int ACTION_PASTE = 32768; // 0x8000
-    field public static final int ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY = 512; // 0x200
-    field public static final int ACTION_PREVIOUS_HTML_ELEMENT = 2048; // 0x800
-    field public static final int ACTION_SCROLL_BACKWARD = 8192; // 0x2000
-    field public static final int ACTION_SCROLL_FORWARD = 4096; // 0x1000
-    field public static final int ACTION_SELECT = 4; // 0x4
-    field public static final int ACTION_SET_SELECTION = 131072; // 0x20000
-    field public static final int ACTION_SET_TEXT = 2097152; // 0x200000
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.accessibility.AccessibilityNodeInfo> CREATOR;
-    field public static final String EXTRA_DATA_RENDERING_INFO_KEY = "android.view.accessibility.extra.DATA_RENDERING_INFO_KEY";
-    field public static final String EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_LENGTH = "android.view.accessibility.extra.DATA_TEXT_CHARACTER_LOCATION_ARG_LENGTH";
-    field public static final String EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_START_INDEX = "android.view.accessibility.extra.DATA_TEXT_CHARACTER_LOCATION_ARG_START_INDEX";
-    field public static final String EXTRA_DATA_TEXT_CHARACTER_LOCATION_KEY = "android.view.accessibility.extra.DATA_TEXT_CHARACTER_LOCATION_KEY";
-    field public static final int FOCUS_ACCESSIBILITY = 2; // 0x2
-    field public static final int FOCUS_INPUT = 1; // 0x1
-    field public static final int MOVEMENT_GRANULARITY_CHARACTER = 1; // 0x1
-    field public static final int MOVEMENT_GRANULARITY_LINE = 4; // 0x4
-    field public static final int MOVEMENT_GRANULARITY_PAGE = 16; // 0x10
-    field public static final int MOVEMENT_GRANULARITY_PARAGRAPH = 8; // 0x8
-    field public static final int MOVEMENT_GRANULARITY_WORD = 2; // 0x2
-  }
-
-  public static final class AccessibilityNodeInfo.AccessibilityAction implements android.os.Parcelable {
-    ctor public AccessibilityNodeInfo.AccessibilityAction(int, @Nullable CharSequence);
-    method public int describeContents();
-    method public int getId();
-    method public CharSequence getLabel();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_ACCESSIBILITY_FOCUS;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_CLEAR_ACCESSIBILITY_FOCUS;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_CLEAR_FOCUS;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_CLEAR_SELECTION;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_CLICK;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_COLLAPSE;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_CONTEXT_CLICK;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_COPY;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_CUT;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_DISMISS;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_EXPAND;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_FOCUS;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_HIDE_TOOLTIP;
-    field @NonNull public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_IME_ENTER;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_LONG_CLICK;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_MOVE_WINDOW;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_NEXT_AT_MOVEMENT_GRANULARITY;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_NEXT_HTML_ELEMENT;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PAGE_DOWN;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PAGE_LEFT;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PAGE_RIGHT;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PAGE_UP;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PASTE;
-    field @NonNull public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PRESS_AND_HOLD;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PREVIOUS_HTML_ELEMENT;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SCROLL_BACKWARD;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SCROLL_DOWN;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SCROLL_FORWARD;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SCROLL_LEFT;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SCROLL_RIGHT;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SCROLL_TO_POSITION;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SCROLL_UP;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SELECT;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SET_PROGRESS;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SET_SELECTION;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SET_TEXT;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SHOW_ON_SCREEN;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SHOW_TOOLTIP;
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction> CREATOR;
-  }
-
-  public static final class AccessibilityNodeInfo.CollectionInfo {
-    ctor public AccessibilityNodeInfo.CollectionInfo(int, int, boolean);
-    ctor public AccessibilityNodeInfo.CollectionInfo(int, int, boolean, int);
-    method public int getColumnCount();
-    method public int getRowCount();
-    method public int getSelectionMode();
-    method public boolean isHierarchical();
-    method public static android.view.accessibility.AccessibilityNodeInfo.CollectionInfo obtain(int, int, boolean);
-    method public static android.view.accessibility.AccessibilityNodeInfo.CollectionInfo obtain(int, int, boolean, int);
-    field public static final int SELECTION_MODE_MULTIPLE = 2; // 0x2
-    field public static final int SELECTION_MODE_NONE = 0; // 0x0
-    field public static final int SELECTION_MODE_SINGLE = 1; // 0x1
-  }
-
-  public static final class AccessibilityNodeInfo.CollectionItemInfo {
-    ctor public AccessibilityNodeInfo.CollectionItemInfo(int, int, int, int, boolean);
-    ctor public AccessibilityNodeInfo.CollectionItemInfo(int, int, int, int, boolean, boolean);
-    method public int getColumnIndex();
-    method public int getColumnSpan();
-    method public int getRowIndex();
-    method public int getRowSpan();
-    method @Deprecated public boolean isHeading();
-    method public boolean isSelected();
-    method public static android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo obtain(int, int, int, int, boolean);
-    method public static android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo obtain(int, int, int, int, boolean, boolean);
-  }
-
-  public static final class AccessibilityNodeInfo.ExtraRenderingInfo {
-    method @Nullable public android.util.Size getLayoutSize();
-    method public float getTextSizeInPx();
-    method public int getTextSizeUnit();
-  }
-
-  public static final class AccessibilityNodeInfo.RangeInfo {
-    ctor public AccessibilityNodeInfo.RangeInfo(int, float, float, float);
-    method public float getCurrent();
-    method public float getMax();
-    method public float getMin();
-    method public int getType();
-    method public static android.view.accessibility.AccessibilityNodeInfo.RangeInfo obtain(int, float, float, float);
-    field public static final int RANGE_TYPE_FLOAT = 1; // 0x1
-    field public static final int RANGE_TYPE_INT = 0; // 0x0
-    field public static final int RANGE_TYPE_PERCENT = 2; // 0x2
-  }
-
-  public static final class AccessibilityNodeInfo.TouchDelegateInfo implements android.os.Parcelable {
-    ctor public AccessibilityNodeInfo.TouchDelegateInfo(@NonNull java.util.Map<android.graphics.Region,android.view.View>);
-    method public int describeContents();
-    method @NonNull public android.graphics.Region getRegionAt(int);
-    method public int getRegionCount();
-    method @Nullable public android.view.accessibility.AccessibilityNodeInfo getTargetForRegion(@NonNull android.graphics.Region);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.accessibility.AccessibilityNodeInfo.TouchDelegateInfo> CREATOR;
-  }
-
-  public abstract class AccessibilityNodeProvider {
-    ctor public AccessibilityNodeProvider();
-    method public void addExtraDataToAccessibilityNodeInfo(int, android.view.accessibility.AccessibilityNodeInfo, String, android.os.Bundle);
-    method public android.view.accessibility.AccessibilityNodeInfo createAccessibilityNodeInfo(int);
-    method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByText(String, int);
-    method public android.view.accessibility.AccessibilityNodeInfo findFocus(int);
-    method public boolean performAction(int, int, android.os.Bundle);
-    field public static final int HOST_VIEW_ID = -1; // 0xffffffff
-  }
-
-  public class AccessibilityRecord {
-    ctor public AccessibilityRecord();
-    ctor public AccessibilityRecord(@NonNull android.view.accessibility.AccessibilityRecord);
-    method public int getAddedCount();
-    method public CharSequence getBeforeText();
-    method public CharSequence getClassName();
-    method public CharSequence getContentDescription();
-    method public int getCurrentItemIndex();
-    method public int getFromIndex();
-    method public int getItemCount();
-    method public int getMaxScrollX();
-    method public int getMaxScrollY();
-    method public android.os.Parcelable getParcelableData();
-    method public int getRemovedCount();
-    method public int getScrollDeltaX();
-    method public int getScrollDeltaY();
-    method public int getScrollX();
-    method public int getScrollY();
-    method public android.view.accessibility.AccessibilityNodeInfo getSource();
-    method public java.util.List<java.lang.CharSequence> getText();
-    method public int getToIndex();
-    method public int getWindowId();
-    method public boolean isChecked();
-    method public boolean isEnabled();
-    method public boolean isFullScreen();
-    method public boolean isPassword();
-    method public boolean isScrollable();
-    method public static android.view.accessibility.AccessibilityRecord obtain(android.view.accessibility.AccessibilityRecord);
-    method public static android.view.accessibility.AccessibilityRecord obtain();
-    method public void recycle();
-    method public void setAddedCount(int);
-    method public void setBeforeText(CharSequence);
-    method public void setChecked(boolean);
-    method public void setClassName(CharSequence);
-    method public void setContentDescription(CharSequence);
-    method public void setCurrentItemIndex(int);
-    method public void setEnabled(boolean);
-    method public void setFromIndex(int);
-    method public void setFullScreen(boolean);
-    method public void setItemCount(int);
-    method public void setMaxScrollX(int);
-    method public void setMaxScrollY(int);
-    method public void setParcelableData(android.os.Parcelable);
-    method public void setPassword(boolean);
-    method public void setRemovedCount(int);
-    method public void setScrollDeltaX(int);
-    method public void setScrollDeltaY(int);
-    method public void setScrollX(int);
-    method public void setScrollY(int);
-    method public void setScrollable(boolean);
-    method public void setSource(android.view.View);
-    method public void setSource(@Nullable android.view.View, int);
-    method public void setToIndex(int);
-  }
-
-  public abstract class AccessibilityRequestPreparer {
-    ctor public AccessibilityRequestPreparer(android.view.View, int);
-    method @Nullable public android.view.View getView();
-    method public abstract void onPrepareExtraData(int, String, android.os.Bundle, android.os.Message);
-    field public static final int REQUEST_TYPE_EXTRA_DATA = 1; // 0x1
-  }
-
-  public final class AccessibilityWindowInfo implements android.os.Parcelable {
-    ctor public AccessibilityWindowInfo();
-    ctor public AccessibilityWindowInfo(@NonNull android.view.accessibility.AccessibilityWindowInfo);
-    method public int describeContents();
-    method public android.view.accessibility.AccessibilityNodeInfo getAnchor();
-    method public void getBoundsInScreen(android.graphics.Rect);
-    method public android.view.accessibility.AccessibilityWindowInfo getChild(int);
-    method public int getChildCount();
-    method public int getDisplayId();
-    method public int getId();
-    method public int getLayer();
-    method public android.view.accessibility.AccessibilityWindowInfo getParent();
-    method public void getRegionInScreen(@NonNull android.graphics.Region);
-    method public android.view.accessibility.AccessibilityNodeInfo getRoot();
-    method @Nullable public CharSequence getTitle();
-    method public int getType();
-    method public boolean isAccessibilityFocused();
-    method public boolean isActive();
-    method public boolean isFocused();
-    method public boolean isInPictureInPictureMode();
-    method public static android.view.accessibility.AccessibilityWindowInfo obtain();
-    method public static android.view.accessibility.AccessibilityWindowInfo obtain(android.view.accessibility.AccessibilityWindowInfo);
-    method public void recycle();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.accessibility.AccessibilityWindowInfo> CREATOR;
-    field public static final int TYPE_ACCESSIBILITY_OVERLAY = 4; // 0x4
-    field public static final int TYPE_APPLICATION = 1; // 0x1
-    field public static final int TYPE_INPUT_METHOD = 2; // 0x2
-    field public static final int TYPE_SPLIT_SCREEN_DIVIDER = 5; // 0x5
-    field public static final int TYPE_SYSTEM = 3; // 0x3
-  }
-
-  public class CaptioningManager {
-    method public void addCaptioningChangeListener(@NonNull android.view.accessibility.CaptioningManager.CaptioningChangeListener);
-    method public final float getFontScale();
-    method @Nullable public final java.util.Locale getLocale();
-    method @NonNull public android.view.accessibility.CaptioningManager.CaptionStyle getUserStyle();
-    method public final boolean isEnabled();
-    method public void removeCaptioningChangeListener(@NonNull android.view.accessibility.CaptioningManager.CaptioningChangeListener);
-  }
-
-  public static final class CaptioningManager.CaptionStyle {
-    method @Nullable public android.graphics.Typeface getTypeface();
-    method public boolean hasBackgroundColor();
-    method public boolean hasEdgeColor();
-    method public boolean hasEdgeType();
-    method public boolean hasForegroundColor();
-    method public boolean hasWindowColor();
-    field public static final int EDGE_TYPE_DEPRESSED = 4; // 0x4
-    field public static final int EDGE_TYPE_DROP_SHADOW = 2; // 0x2
-    field public static final int EDGE_TYPE_NONE = 0; // 0x0
-    field public static final int EDGE_TYPE_OUTLINE = 1; // 0x1
-    field public static final int EDGE_TYPE_RAISED = 3; // 0x3
-    field public static final int EDGE_TYPE_UNSPECIFIED = -1; // 0xffffffff
-    field public final int backgroundColor;
-    field public final int edgeColor;
-    field public final int edgeType;
-    field public final int foregroundColor;
-    field public final int windowColor;
-  }
-
-  public abstract static class CaptioningManager.CaptioningChangeListener {
-    ctor public CaptioningManager.CaptioningChangeListener();
-    method public void onEnabledChanged(boolean);
-    method public void onFontScaleChanged(float);
-    method public void onLocaleChanged(@Nullable java.util.Locale);
-    method public void onUserStyleChanged(@NonNull android.view.accessibility.CaptioningManager.CaptionStyle);
-  }
-
-}
-
-package android.view.animation {
-
-  public class AccelerateDecelerateInterpolator extends android.view.animation.BaseInterpolator {
-    ctor public AccelerateDecelerateInterpolator();
-    ctor public AccelerateDecelerateInterpolator(android.content.Context, android.util.AttributeSet);
-    method public float getInterpolation(float);
-  }
-
-  public class AccelerateInterpolator extends android.view.animation.BaseInterpolator {
-    ctor public AccelerateInterpolator();
-    ctor public AccelerateInterpolator(float);
-    ctor public AccelerateInterpolator(android.content.Context, android.util.AttributeSet);
-    method public float getInterpolation(float);
-  }
-
-  public class AlphaAnimation extends android.view.animation.Animation {
-    ctor public AlphaAnimation(android.content.Context, android.util.AttributeSet);
-    ctor public AlphaAnimation(float, float);
-  }
-
-  public abstract class Animation implements java.lang.Cloneable {
-    ctor public Animation();
-    ctor public Animation(android.content.Context, android.util.AttributeSet);
-    method protected void applyTransformation(float, android.view.animation.Transformation);
-    method public void cancel();
-    method protected android.view.animation.Animation clone() throws java.lang.CloneNotSupportedException;
-    method public long computeDurationHint();
-    method protected void ensureInterpolator();
-    method @Deprecated @ColorInt public int getBackgroundColor();
-    method @Deprecated public boolean getDetachWallpaper();
-    method public long getDuration();
-    method public boolean getFillAfter();
-    method public boolean getFillBefore();
-    method public android.view.animation.Interpolator getInterpolator();
-    method public int getRepeatCount();
-    method public int getRepeatMode();
-    method protected float getScaleFactor();
-    method public long getStartOffset();
-    method public long getStartTime();
-    method public boolean getTransformation(long, android.view.animation.Transformation);
-    method public boolean getTransformation(long, android.view.animation.Transformation, float);
-    method public int getZAdjustment();
-    method public boolean hasEnded();
-    method public boolean hasStarted();
-    method public void initialize(int, int, int, int);
-    method public boolean isFillEnabled();
-    method public boolean isInitialized();
-    method public void reset();
-    method protected float resolveSize(int, float, int, int);
-    method public void restrictDuration(long);
-    method public void scaleCurrentDuration(float);
-    method public void setAnimationListener(android.view.animation.Animation.AnimationListener);
-    method @Deprecated public void setBackgroundColor(@ColorInt int);
-    method @Deprecated public void setDetachWallpaper(boolean);
-    method public void setDuration(long);
-    method public void setFillAfter(boolean);
-    method public void setFillBefore(boolean);
-    method public void setFillEnabled(boolean);
-    method public void setInterpolator(android.content.Context, @AnimRes @InterpolatorRes int);
-    method public void setInterpolator(android.view.animation.Interpolator);
-    method public void setRepeatCount(int);
-    method public void setRepeatMode(int);
-    method public void setStartOffset(long);
-    method public void setStartTime(long);
-    method public void setZAdjustment(int);
-    method public void start();
-    method public void startNow();
-    method public boolean willChangeBounds();
-    method public boolean willChangeTransformationMatrix();
-    field public static final int ABSOLUTE = 0; // 0x0
-    field public static final int INFINITE = -1; // 0xffffffff
-    field public static final int RELATIVE_TO_PARENT = 2; // 0x2
-    field public static final int RELATIVE_TO_SELF = 1; // 0x1
-    field public static final int RESTART = 1; // 0x1
-    field public static final int REVERSE = 2; // 0x2
-    field public static final int START_ON_FIRST_FRAME = -1; // 0xffffffff
-    field public static final int ZORDER_BOTTOM = -1; // 0xffffffff
-    field public static final int ZORDER_NORMAL = 0; // 0x0
-    field public static final int ZORDER_TOP = 1; // 0x1
-  }
-
-  public static interface Animation.AnimationListener {
-    method public void onAnimationEnd(android.view.animation.Animation);
-    method public void onAnimationRepeat(android.view.animation.Animation);
-    method public void onAnimationStart(android.view.animation.Animation);
-  }
-
-  protected static class Animation.Description {
-    ctor protected Animation.Description();
-    field public int type;
-    field public float value;
-  }
-
-  public class AnimationSet extends android.view.animation.Animation {
-    ctor public AnimationSet(android.content.Context, android.util.AttributeSet);
-    ctor public AnimationSet(boolean);
-    method public void addAnimation(android.view.animation.Animation);
-    method protected android.view.animation.AnimationSet clone() throws java.lang.CloneNotSupportedException;
-    method public java.util.List<android.view.animation.Animation> getAnimations();
-  }
-
-  public class AnimationUtils {
-    ctor public AnimationUtils();
-    method public static long currentAnimationTimeMillis();
-    method public static android.view.animation.Animation loadAnimation(android.content.Context, @AnimRes int) throws android.content.res.Resources.NotFoundException;
-    method public static android.view.animation.Interpolator loadInterpolator(android.content.Context, @AnimRes @InterpolatorRes int) throws android.content.res.Resources.NotFoundException;
-    method public static android.view.animation.LayoutAnimationController loadLayoutAnimation(android.content.Context, @AnimRes int) throws android.content.res.Resources.NotFoundException;
-    method public static android.view.animation.Animation makeInAnimation(android.content.Context, boolean);
-    method public static android.view.animation.Animation makeInChildBottomAnimation(android.content.Context);
-    method public static android.view.animation.Animation makeOutAnimation(android.content.Context, boolean);
-  }
-
-  public class AnticipateInterpolator extends android.view.animation.BaseInterpolator {
-    ctor public AnticipateInterpolator();
-    ctor public AnticipateInterpolator(float);
-    ctor public AnticipateInterpolator(android.content.Context, android.util.AttributeSet);
-    method public float getInterpolation(float);
-  }
-
-  public class AnticipateOvershootInterpolator extends android.view.animation.BaseInterpolator {
-    ctor public AnticipateOvershootInterpolator();
-    ctor public AnticipateOvershootInterpolator(float);
-    ctor public AnticipateOvershootInterpolator(float, float);
-    ctor public AnticipateOvershootInterpolator(android.content.Context, android.util.AttributeSet);
-    method public float getInterpolation(float);
-  }
-
-  public abstract class BaseInterpolator implements android.view.animation.Interpolator {
-    ctor public BaseInterpolator();
-  }
-
-  public class BounceInterpolator extends android.view.animation.BaseInterpolator {
-    ctor public BounceInterpolator();
-    ctor public BounceInterpolator(android.content.Context, android.util.AttributeSet);
-    method public float getInterpolation(float);
-  }
-
-  public class CycleInterpolator extends android.view.animation.BaseInterpolator {
-    ctor public CycleInterpolator(float);
-    ctor public CycleInterpolator(android.content.Context, android.util.AttributeSet);
-    method public float getInterpolation(float);
-  }
-
-  public class DecelerateInterpolator extends android.view.animation.BaseInterpolator {
-    ctor public DecelerateInterpolator();
-    ctor public DecelerateInterpolator(float);
-    ctor public DecelerateInterpolator(android.content.Context, android.util.AttributeSet);
-    method public float getInterpolation(float);
-  }
-
-  public class GridLayoutAnimationController extends android.view.animation.LayoutAnimationController {
-    ctor public GridLayoutAnimationController(android.content.Context, android.util.AttributeSet);
-    ctor public GridLayoutAnimationController(android.view.animation.Animation);
-    ctor public GridLayoutAnimationController(android.view.animation.Animation, float, float);
-    method public float getColumnDelay();
-    method public int getDirection();
-    method public int getDirectionPriority();
-    method public float getRowDelay();
-    method public void setColumnDelay(float);
-    method public void setDirection(int);
-    method public void setDirectionPriority(int);
-    method public void setRowDelay(float);
-    field public static final int DIRECTION_BOTTOM_TO_TOP = 2; // 0x2
-    field public static final int DIRECTION_HORIZONTAL_MASK = 1; // 0x1
-    field public static final int DIRECTION_LEFT_TO_RIGHT = 0; // 0x0
-    field public static final int DIRECTION_RIGHT_TO_LEFT = 1; // 0x1
-    field public static final int DIRECTION_TOP_TO_BOTTOM = 0; // 0x0
-    field public static final int DIRECTION_VERTICAL_MASK = 2; // 0x2
-    field public static final int PRIORITY_COLUMN = 1; // 0x1
-    field public static final int PRIORITY_NONE = 0; // 0x0
-    field public static final int PRIORITY_ROW = 2; // 0x2
-  }
-
-  public static class GridLayoutAnimationController.AnimationParameters extends android.view.animation.LayoutAnimationController.AnimationParameters {
-    ctor public GridLayoutAnimationController.AnimationParameters();
-    field public int column;
-    field public int columnsCount;
-    field public int row;
-    field public int rowsCount;
-  }
-
-  public interface Interpolator extends android.animation.TimeInterpolator {
-  }
-
-  public class LayoutAnimationController {
-    ctor public LayoutAnimationController(android.content.Context, android.util.AttributeSet);
-    ctor public LayoutAnimationController(android.view.animation.Animation);
-    ctor public LayoutAnimationController(android.view.animation.Animation, float);
-    method public android.view.animation.Animation getAnimation();
-    method public final android.view.animation.Animation getAnimationForView(android.view.View);
-    method public float getDelay();
-    method protected long getDelayForView(android.view.View);
-    method public android.view.animation.Interpolator getInterpolator();
-    method public int getOrder();
-    method protected int getTransformedIndex(android.view.animation.LayoutAnimationController.AnimationParameters);
-    method public boolean isDone();
-    method public void setAnimation(android.content.Context, @AnimRes int);
-    method public void setAnimation(android.view.animation.Animation);
-    method public void setDelay(float);
-    method public void setInterpolator(android.content.Context, @InterpolatorRes int);
-    method public void setInterpolator(android.view.animation.Interpolator);
-    method public void setOrder(int);
-    method public void start();
-    method public boolean willOverlap();
-    field public static final int ORDER_NORMAL = 0; // 0x0
-    field public static final int ORDER_RANDOM = 2; // 0x2
-    field public static final int ORDER_REVERSE = 1; // 0x1
-    field protected android.view.animation.Animation mAnimation;
-    field protected android.view.animation.Interpolator mInterpolator;
-    field protected java.util.Random mRandomizer;
-  }
-
-  public static class LayoutAnimationController.AnimationParameters {
-    ctor public LayoutAnimationController.AnimationParameters();
-    field public int count;
-    field public int index;
-  }
-
-  public class LinearInterpolator extends android.view.animation.BaseInterpolator {
-    ctor public LinearInterpolator();
-    ctor public LinearInterpolator(android.content.Context, android.util.AttributeSet);
-    method public float getInterpolation(float);
-  }
-
-  public class OvershootInterpolator extends android.view.animation.BaseInterpolator {
-    ctor public OvershootInterpolator();
-    ctor public OvershootInterpolator(float);
-    ctor public OvershootInterpolator(android.content.Context, android.util.AttributeSet);
-    method public float getInterpolation(float);
-  }
-
-  public class PathInterpolator extends android.view.animation.BaseInterpolator {
-    ctor public PathInterpolator(android.graphics.Path);
-    ctor public PathInterpolator(float, float);
-    ctor public PathInterpolator(float, float, float, float);
-    ctor public PathInterpolator(android.content.Context, android.util.AttributeSet);
-    method public float getInterpolation(float);
-  }
-
-  public class RotateAnimation extends android.view.animation.Animation {
-    ctor public RotateAnimation(android.content.Context, android.util.AttributeSet);
-    ctor public RotateAnimation(float, float);
-    ctor public RotateAnimation(float, float, float, float);
-    ctor public RotateAnimation(float, float, int, float, int, float);
-  }
-
-  public class ScaleAnimation extends android.view.animation.Animation {
-    ctor public ScaleAnimation(android.content.Context, android.util.AttributeSet);
-    ctor public ScaleAnimation(float, float, float, float);
-    ctor public ScaleAnimation(float, float, float, float, float, float);
-    ctor public ScaleAnimation(float, float, float, float, int, float, int, float);
-  }
-
-  public class Transformation {
-    ctor public Transformation();
-    method public void clear();
-    method public void compose(android.view.animation.Transformation);
-    method public float getAlpha();
-    method public android.graphics.Matrix getMatrix();
-    method public int getTransformationType();
-    method public void set(android.view.animation.Transformation);
-    method public void setAlpha(@FloatRange(from=0.0, to=1.0) float);
-    method public void setTransformationType(int);
-    method public String toShortString();
-    field public static final int TYPE_ALPHA = 1; // 0x1
-    field public static final int TYPE_BOTH = 3; // 0x3
-    field public static final int TYPE_IDENTITY = 0; // 0x0
-    field public static final int TYPE_MATRIX = 2; // 0x2
-    field protected float mAlpha;
-    field protected android.graphics.Matrix mMatrix;
-    field protected int mTransformationType;
-  }
-
-  public class TranslateAnimation extends android.view.animation.Animation {
-    ctor public TranslateAnimation(android.content.Context, android.util.AttributeSet);
-    ctor public TranslateAnimation(float, float, float, float);
-    ctor public TranslateAnimation(int, float, int, float, int, float, int, float);
-  }
-
-}
-
-package android.view.autofill {
-
-  public final class AutofillId implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.autofill.AutofillId> CREATOR;
-  }
-
-  public final class AutofillManager {
-    method public void cancel();
-    method public void commit();
-    method public void disableAutofillServices();
-    method @Nullable public android.content.ComponentName getAutofillServiceComponentName();
-    method @NonNull public java.util.List<java.lang.String> getAvailableFieldClassificationAlgorithms();
-    method @Nullable public String getDefaultFieldClassificationAlgorithm();
-    method @Nullable public android.view.autofill.AutofillId getNextAutofillId();
-    method @Nullable public android.service.autofill.UserData getUserData();
-    method @Nullable public String getUserDataId();
-    method public boolean hasEnabledAutofillServices();
-    method public boolean isAutofillSupported();
-    method public boolean isEnabled();
-    method public boolean isFieldClassificationEnabled();
-    method public void notifyValueChanged(android.view.View);
-    method public void notifyValueChanged(android.view.View, int, android.view.autofill.AutofillValue);
-    method public void notifyViewClicked(@NonNull android.view.View);
-    method public void notifyViewClicked(@NonNull android.view.View, int);
-    method public void notifyViewEntered(@NonNull android.view.View);
-    method public void notifyViewEntered(@NonNull android.view.View, int, @NonNull android.graphics.Rect);
-    method public void notifyViewExited(@NonNull android.view.View);
-    method public void notifyViewExited(@NonNull android.view.View, int);
-    method public void notifyViewVisibilityChanged(@NonNull android.view.View, boolean);
-    method public void notifyViewVisibilityChanged(@NonNull android.view.View, int, boolean);
-    method public void registerCallback(@Nullable android.view.autofill.AutofillManager.AutofillCallback);
-    method public void requestAutofill(@NonNull android.view.View);
-    method public void requestAutofill(@NonNull android.view.View, int, @NonNull android.graphics.Rect);
-    method public void setUserData(@Nullable android.service.autofill.UserData);
-    method public void unregisterCallback(@Nullable android.view.autofill.AutofillManager.AutofillCallback);
-    field public static final String EXTRA_ASSIST_STRUCTURE = "android.view.autofill.extra.ASSIST_STRUCTURE";
-    field public static final String EXTRA_AUTHENTICATION_RESULT = "android.view.autofill.extra.AUTHENTICATION_RESULT";
-    field public static final String EXTRA_CLIENT_STATE = "android.view.autofill.extra.CLIENT_STATE";
-  }
-
-  public abstract static class AutofillManager.AutofillCallback {
-    ctor public AutofillManager.AutofillCallback();
-    method public void onAutofillEvent(@NonNull android.view.View, int);
-    method public void onAutofillEvent(@NonNull android.view.View, int, int);
-    field public static final int EVENT_INPUT_HIDDEN = 2; // 0x2
-    field public static final int EVENT_INPUT_SHOWN = 1; // 0x1
-    field public static final int EVENT_INPUT_UNAVAILABLE = 3; // 0x3
-  }
-
-  public final class AutofillValue implements android.os.Parcelable {
-    method public int describeContents();
-    method public static android.view.autofill.AutofillValue forDate(long);
-    method public static android.view.autofill.AutofillValue forList(int);
-    method public static android.view.autofill.AutofillValue forText(@Nullable CharSequence);
-    method public static android.view.autofill.AutofillValue forToggle(boolean);
-    method public long getDateValue();
-    method public int getListValue();
-    method @NonNull public CharSequence getTextValue();
-    method public boolean getToggleValue();
-    method public boolean isDate();
-    method public boolean isList();
-    method public boolean isText();
-    method public boolean isToggle();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.autofill.AutofillValue> CREATOR;
-  }
-
-}
-
-package android.view.contentcapture {
-
-  public final class ContentCaptureCondition implements android.os.Parcelable {
-    ctor public ContentCaptureCondition(@NonNull android.content.LocusId, int);
-    method public int describeContents();
-    method public int getFlags();
-    method @NonNull public android.content.LocusId getLocusId();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.contentcapture.ContentCaptureCondition> CREATOR;
-    field public static final int FLAG_IS_REGEX = 2; // 0x2
-  }
-
-  public final class ContentCaptureContext implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public static android.view.contentcapture.ContentCaptureContext forLocusId(@NonNull String);
-    method @Nullable public android.os.Bundle getExtras();
-    method @Nullable public android.content.LocusId getLocusId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.contentcapture.ContentCaptureContext> CREATOR;
-  }
-
-  public static final class ContentCaptureContext.Builder {
-    ctor public ContentCaptureContext.Builder(@NonNull android.content.LocusId);
-    method @NonNull public android.view.contentcapture.ContentCaptureContext build();
-    method @NonNull public android.view.contentcapture.ContentCaptureContext.Builder setExtras(@NonNull android.os.Bundle);
-  }
-
-  public final class ContentCaptureManager {
-    method @Nullable public java.util.Set<android.view.contentcapture.ContentCaptureCondition> getContentCaptureConditions();
-    method @Nullable public android.content.ComponentName getServiceComponentName();
-    method public boolean isContentCaptureEnabled();
-    method public void removeData(@NonNull android.view.contentcapture.DataRemovalRequest);
-    method public void setContentCaptureEnabled(boolean);
-    method public void shareData(@NonNull android.view.contentcapture.DataShareRequest, @NonNull java.util.concurrent.Executor, @NonNull android.view.contentcapture.DataShareWriteAdapter);
-    field public static final int DATA_SHARE_ERROR_CONCURRENT_REQUEST = 2; // 0x2
-    field public static final int DATA_SHARE_ERROR_TIMEOUT_INTERRUPTED = 3; // 0x3
-    field public static final int DATA_SHARE_ERROR_UNKNOWN = 1; // 0x1
-  }
-
-  public abstract class ContentCaptureSession implements java.lang.AutoCloseable {
-    method public void close();
-    method @NonNull public final android.view.contentcapture.ContentCaptureSession createContentCaptureSession(@NonNull android.view.contentcapture.ContentCaptureContext);
-    method public final void destroy();
-    method @Nullable public final android.view.contentcapture.ContentCaptureContext getContentCaptureContext();
-    method @NonNull public final android.view.contentcapture.ContentCaptureSessionId getContentCaptureSessionId();
-    method @NonNull public android.view.autofill.AutofillId newAutofillId(@NonNull android.view.autofill.AutofillId, long);
-    method @NonNull public final android.view.ViewStructure newViewStructure(@NonNull android.view.View);
-    method @NonNull public final android.view.ViewStructure newVirtualViewStructure(@NonNull android.view.autofill.AutofillId, long);
-    method public final void notifySessionPaused();
-    method public final void notifySessionResumed();
-    method public final void notifyViewAppeared(@NonNull android.view.ViewStructure);
-    method public final void notifyViewDisappeared(@NonNull android.view.autofill.AutofillId);
-    method public final void notifyViewInsetsChanged(@NonNull android.graphics.Insets);
-    method public final void notifyViewTextChanged(@NonNull android.view.autofill.AutofillId, @Nullable CharSequence);
-    method public final void notifyViewsDisappeared(@NonNull android.view.autofill.AutofillId, @NonNull long[]);
-    method public final void setContentCaptureContext(@Nullable android.view.contentcapture.ContentCaptureContext);
-  }
-
-  public final class ContentCaptureSessionId implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.contentcapture.ContentCaptureSessionId> CREATOR;
-  }
-
-  public final class DataRemovalRequest implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public java.util.List<android.view.contentcapture.DataRemovalRequest.LocusIdRequest> getLocusIdRequests();
-    method @NonNull public String getPackageName();
-    method public boolean isForEverything();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.contentcapture.DataRemovalRequest> CREATOR;
-    field public static final int FLAG_IS_PREFIX = 1; // 0x1
-  }
-
-  public static final class DataRemovalRequest.Builder {
-    ctor public DataRemovalRequest.Builder();
-    method @NonNull public android.view.contentcapture.DataRemovalRequest.Builder addLocusId(@NonNull android.content.LocusId, int);
-    method @NonNull public android.view.contentcapture.DataRemovalRequest build();
-    method @NonNull public android.view.contentcapture.DataRemovalRequest.Builder forEverything();
-  }
-
-  public final class DataRemovalRequest.LocusIdRequest {
-    method @NonNull public int getFlags();
-    method @NonNull public android.content.LocusId getLocusId();
-  }
-
-  public final class DataShareRequest implements android.os.Parcelable {
-    ctor public DataShareRequest(@Nullable android.content.LocusId, @NonNull String);
-    method public int describeContents();
-    method @Nullable public android.content.LocusId getLocusId();
-    method @NonNull public String getMimeType();
-    method @NonNull public String getPackageName();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.contentcapture.DataShareRequest> CREATOR;
-  }
-
-  public interface DataShareWriteAdapter {
-    method public default void onError(int);
-    method public void onRejected();
-    method public void onWrite(@NonNull android.os.ParcelFileDescriptor);
-  }
-
-}
-
-package android.view.inputmethod {
-
-  public class BaseInputConnection implements android.view.inputmethod.InputConnection {
-    ctor public BaseInputConnection(android.view.View, boolean);
-    method public boolean beginBatchEdit();
-    method public boolean clearMetaKeyStates(int);
-    method @CallSuper public void closeConnection();
-    method public boolean commitCompletion(android.view.inputmethod.CompletionInfo);
-    method public boolean commitContent(android.view.inputmethod.InputContentInfo, int, android.os.Bundle);
-    method public boolean commitCorrection(android.view.inputmethod.CorrectionInfo);
-    method public boolean commitText(CharSequence, int);
-    method public boolean deleteSurroundingText(int, int);
-    method public boolean deleteSurroundingTextInCodePoints(int, int);
-    method public boolean endBatchEdit();
-    method public boolean finishComposingText();
-    method public static int getComposingSpanEnd(android.text.Spannable);
-    method public static int getComposingSpanStart(android.text.Spannable);
-    method public int getCursorCapsMode(int);
-    method public android.text.Editable getEditable();
-    method public android.view.inputmethod.ExtractedText getExtractedText(android.view.inputmethod.ExtractedTextRequest, int);
-    method public android.os.Handler getHandler();
-    method public CharSequence getSelectedText(int);
-    method public CharSequence getTextAfterCursor(int, int);
-    method public CharSequence getTextBeforeCursor(int, int);
-    method public boolean performContextMenuAction(int);
-    method public boolean performEditorAction(int);
-    method public boolean performPrivateCommand(String, android.os.Bundle);
-    method public static final void removeComposingSpans(android.text.Spannable);
-    method public boolean reportFullscreenMode(boolean);
-    method public boolean requestCursorUpdates(int);
-    method public boolean sendKeyEvent(android.view.KeyEvent);
-    method public boolean setComposingRegion(int, int);
-    method public static void setComposingSpans(android.text.Spannable);
-    method public boolean setComposingText(CharSequence, int);
-    method public boolean setSelection(int, int);
-  }
-
-  public final class CompletionInfo implements android.os.Parcelable {
-    ctor public CompletionInfo(long, int, CharSequence);
-    ctor public CompletionInfo(long, int, CharSequence, CharSequence);
-    method public int describeContents();
-    method public long getId();
-    method public CharSequence getLabel();
-    method public int getPosition();
-    method public CharSequence getText();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.CompletionInfo> CREATOR;
-  }
-
-  public final class CorrectionInfo implements android.os.Parcelable {
-    ctor public CorrectionInfo(int, CharSequence, CharSequence);
-    method public int describeContents();
-    method public CharSequence getNewText();
-    method public int getOffset();
-    method public CharSequence getOldText();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.CorrectionInfo> CREATOR;
-  }
-
-  public final class CursorAnchorInfo implements android.os.Parcelable {
-    ctor public CursorAnchorInfo(android.os.Parcel);
-    method public int describeContents();
-    method public android.graphics.RectF getCharacterBounds(int);
-    method public int getCharacterBoundsFlags(int);
-    method public CharSequence getComposingText();
-    method public int getComposingTextStart();
-    method public float getInsertionMarkerBaseline();
-    method public float getInsertionMarkerBottom();
-    method public int getInsertionMarkerFlags();
-    method public float getInsertionMarkerHorizontal();
-    method public float getInsertionMarkerTop();
-    method public android.graphics.Matrix getMatrix();
-    method public int getSelectionEnd();
-    method public int getSelectionStart();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.CursorAnchorInfo> CREATOR;
-    field public static final int FLAG_HAS_INVISIBLE_REGION = 2; // 0x2
-    field public static final int FLAG_HAS_VISIBLE_REGION = 1; // 0x1
-    field public static final int FLAG_IS_RTL = 4; // 0x4
-  }
-
-  public static final class CursorAnchorInfo.Builder {
-    ctor public CursorAnchorInfo.Builder();
-    method public android.view.inputmethod.CursorAnchorInfo.Builder addCharacterBounds(int, float, float, float, float, int);
-    method public android.view.inputmethod.CursorAnchorInfo build();
-    method public void reset();
-    method public android.view.inputmethod.CursorAnchorInfo.Builder setComposingText(int, CharSequence);
-    method public android.view.inputmethod.CursorAnchorInfo.Builder setInsertionMarkerLocation(float, float, float, float, int);
-    method public android.view.inputmethod.CursorAnchorInfo.Builder setMatrix(android.graphics.Matrix);
-    method public android.view.inputmethod.CursorAnchorInfo.Builder setSelectionRange(int, int);
-  }
-
-  public class EditorInfo implements android.text.InputType android.os.Parcelable {
-    ctor public EditorInfo();
-    method public int describeContents();
-    method public void dump(android.util.Printer, String);
-    method @Nullable public CharSequence getInitialSelectedText(int);
-    method @Nullable public CharSequence getInitialTextAfterCursor(int, int);
-    method @Nullable public CharSequence getInitialTextBeforeCursor(int, int);
-    method public final void makeCompatible(int);
-    method public void setInitialSurroundingSubText(@NonNull CharSequence, int);
-    method public void setInitialSurroundingText(@NonNull CharSequence);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.EditorInfo> CREATOR;
-    field public static final int IME_ACTION_DONE = 6; // 0x6
-    field public static final int IME_ACTION_GO = 2; // 0x2
-    field public static final int IME_ACTION_NEXT = 5; // 0x5
-    field public static final int IME_ACTION_NONE = 1; // 0x1
-    field public static final int IME_ACTION_PREVIOUS = 7; // 0x7
-    field public static final int IME_ACTION_SEARCH = 3; // 0x3
-    field public static final int IME_ACTION_SEND = 4; // 0x4
-    field public static final int IME_ACTION_UNSPECIFIED = 0; // 0x0
-    field public static final int IME_FLAG_FORCE_ASCII = -2147483648; // 0x80000000
-    field public static final int IME_FLAG_NAVIGATE_NEXT = 134217728; // 0x8000000
-    field public static final int IME_FLAG_NAVIGATE_PREVIOUS = 67108864; // 0x4000000
-    field public static final int IME_FLAG_NO_ACCESSORY_ACTION = 536870912; // 0x20000000
-    field public static final int IME_FLAG_NO_ENTER_ACTION = 1073741824; // 0x40000000
-    field public static final int IME_FLAG_NO_EXTRACT_UI = 268435456; // 0x10000000
-    field public static final int IME_FLAG_NO_FULLSCREEN = 33554432; // 0x2000000
-    field public static final int IME_FLAG_NO_PERSONALIZED_LEARNING = 16777216; // 0x1000000
-    field public static final int IME_MASK_ACTION = 255; // 0xff
-    field public static final int IME_NULL = 0; // 0x0
-    field public int actionId;
-    field public CharSequence actionLabel;
-    field @Nullable public String[] contentMimeTypes;
-    field public android.os.Bundle extras;
-    field public int fieldId;
-    field public String fieldName;
-    field @Nullable public android.os.LocaleList hintLocales;
-    field public CharSequence hintText;
-    field public int imeOptions;
-    field public int initialCapsMode;
-    field public int initialSelEnd;
-    field public int initialSelStart;
-    field public int inputType;
-    field public CharSequence label;
-    field public String packageName;
-    field public String privateImeOptions;
-  }
-
-  public class ExtractedText implements android.os.Parcelable {
-    ctor public ExtractedText();
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.ExtractedText> CREATOR;
-    field public static final int FLAG_SELECTING = 2; // 0x2
-    field public static final int FLAG_SINGLE_LINE = 1; // 0x1
-    field public int flags;
-    field public CharSequence hint;
-    field public int partialEndOffset;
-    field public int partialStartOffset;
-    field public int selectionEnd;
-    field public int selectionStart;
-    field public int startOffset;
-    field public CharSequence text;
-  }
-
-  public class ExtractedTextRequest implements android.os.Parcelable {
-    ctor public ExtractedTextRequest();
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.ExtractedTextRequest> CREATOR;
-    field public int flags;
-    field public int hintMaxChars;
-    field public int hintMaxLines;
-    field public int token;
-  }
-
-  public final class InlineSuggestion implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.view.inputmethod.InlineSuggestionInfo getInfo();
-    method public void inflate(@NonNull android.content.Context, @NonNull android.util.Size, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.widget.inline.InlineContentView>);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InlineSuggestion> CREATOR;
-  }
-
-  public final class InlineSuggestionInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String[] getAutofillHints();
-    method @NonNull public android.widget.inline.InlinePresentationSpec getInlinePresentationSpec();
-    method @NonNull public String getSource();
-    method @NonNull public String getType();
-    method public boolean isPinned();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InlineSuggestionInfo> CREATOR;
-    field public static final String SOURCE_AUTOFILL = "android:autofill";
-    field public static final String SOURCE_PLATFORM = "android:platform";
-    field public static final String TYPE_ACTION = "android:autofill:action";
-    field public static final String TYPE_SUGGESTION = "android:autofill:suggestion";
-  }
-
-  public final class InlineSuggestionsRequest implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.os.Bundle getExtras();
-    method @NonNull public String getHostPackageName();
-    method @NonNull public java.util.List<android.widget.inline.InlinePresentationSpec> getInlinePresentationSpecs();
-    method public int getMaxSuggestionCount();
-    method @NonNull public android.os.LocaleList getSupportedLocales();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InlineSuggestionsRequest> CREATOR;
-    field public static final int SUGGESTION_COUNT_UNLIMITED = 2147483647; // 0x7fffffff
-  }
-
-  public static final class InlineSuggestionsRequest.Builder {
-    ctor public InlineSuggestionsRequest.Builder(@NonNull java.util.List<android.widget.inline.InlinePresentationSpec>);
-    method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder addInlinePresentationSpecs(@NonNull android.widget.inline.InlinePresentationSpec);
-    method @NonNull public android.view.inputmethod.InlineSuggestionsRequest build();
-    method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setExtras(@NonNull android.os.Bundle);
-    method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setInlinePresentationSpecs(@NonNull java.util.List<android.widget.inline.InlinePresentationSpec>);
-    method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setMaxSuggestionCount(int);
-    method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setSupportedLocales(@NonNull android.os.LocaleList);
-  }
-
-  public final class InlineSuggestionsResponse implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public java.util.List<android.view.inputmethod.InlineSuggestion> getInlineSuggestions();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InlineSuggestionsResponse> CREATOR;
-  }
-
-  public final class InputBinding implements android.os.Parcelable {
-    ctor public InputBinding(android.view.inputmethod.InputConnection, android.os.IBinder, int, int);
-    ctor public InputBinding(android.view.inputmethod.InputConnection, android.view.inputmethod.InputBinding);
-    method public int describeContents();
-    method public android.view.inputmethod.InputConnection getConnection();
-    method public android.os.IBinder getConnectionToken();
-    method public int getPid();
-    method public int getUid();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InputBinding> CREATOR;
-  }
-
-  public interface InputConnection {
-    method public boolean beginBatchEdit();
-    method public boolean clearMetaKeyStates(int);
-    method public void closeConnection();
-    method public boolean commitCompletion(android.view.inputmethod.CompletionInfo);
-    method public boolean commitContent(@NonNull android.view.inputmethod.InputContentInfo, int, @Nullable android.os.Bundle);
-    method public boolean commitCorrection(android.view.inputmethod.CorrectionInfo);
-    method public boolean commitText(CharSequence, int);
-    method public boolean deleteSurroundingText(int, int);
-    method public boolean deleteSurroundingTextInCodePoints(int, int);
-    method public boolean endBatchEdit();
-    method public boolean finishComposingText();
-    method public int getCursorCapsMode(int);
-    method public android.view.inputmethod.ExtractedText getExtractedText(android.view.inputmethod.ExtractedTextRequest, int);
-    method public android.os.Handler getHandler();
-    method public CharSequence getSelectedText(int);
-    method public CharSequence getTextAfterCursor(int, int);
-    method public CharSequence getTextBeforeCursor(int, int);
-    method public boolean performContextMenuAction(int);
-    method public boolean performEditorAction(int);
-    method public boolean performPrivateCommand(String, android.os.Bundle);
-    method public boolean reportFullscreenMode(boolean);
-    method public boolean requestCursorUpdates(int);
-    method public boolean sendKeyEvent(android.view.KeyEvent);
-    method public boolean setComposingRegion(int, int);
-    method public boolean setComposingText(CharSequence, int);
-    method public boolean setSelection(int, int);
-    field public static final int CURSOR_UPDATE_IMMEDIATE = 1; // 0x1
-    field public static final int CURSOR_UPDATE_MONITOR = 2; // 0x2
-    field public static final int GET_EXTRACTED_TEXT_MONITOR = 1; // 0x1
-    field public static final int GET_TEXT_WITH_STYLES = 1; // 0x1
-    field public static final int INPUT_CONTENT_GRANT_READ_URI_PERMISSION = 1; // 0x1
-  }
-
-  public class InputConnectionWrapper implements android.view.inputmethod.InputConnection {
-    ctor public InputConnectionWrapper(android.view.inputmethod.InputConnection, boolean);
-    method public boolean beginBatchEdit();
-    method public boolean clearMetaKeyStates(int);
-    method public void closeConnection();
-    method public boolean commitCompletion(android.view.inputmethod.CompletionInfo);
-    method public boolean commitContent(android.view.inputmethod.InputContentInfo, int, android.os.Bundle);
-    method public boolean commitCorrection(android.view.inputmethod.CorrectionInfo);
-    method public boolean commitText(CharSequence, int);
-    method public boolean deleteSurroundingText(int, int);
-    method public boolean deleteSurroundingTextInCodePoints(int, int);
-    method public boolean endBatchEdit();
-    method public boolean finishComposingText();
-    method public int getCursorCapsMode(int);
-    method public android.view.inputmethod.ExtractedText getExtractedText(android.view.inputmethod.ExtractedTextRequest, int);
-    method public android.os.Handler getHandler();
-    method public CharSequence getSelectedText(int);
-    method public CharSequence getTextAfterCursor(int, int);
-    method public CharSequence getTextBeforeCursor(int, int);
-    method public boolean performContextMenuAction(int);
-    method public boolean performEditorAction(int);
-    method public boolean performPrivateCommand(String, android.os.Bundle);
-    method public boolean reportFullscreenMode(boolean);
-    method public boolean requestCursorUpdates(int);
-    method public boolean sendKeyEvent(android.view.KeyEvent);
-    method public boolean setComposingRegion(int, int);
-    method public boolean setComposingText(CharSequence, int);
-    method public boolean setSelection(int, int);
-    method public void setTarget(android.view.inputmethod.InputConnection);
-  }
-
-  public final class InputContentInfo implements android.os.Parcelable {
-    ctor public InputContentInfo(@NonNull android.net.Uri, @NonNull android.content.ClipDescription);
-    ctor public InputContentInfo(@NonNull android.net.Uri, @NonNull android.content.ClipDescription, @Nullable android.net.Uri);
-    method public int describeContents();
-    method @NonNull public android.net.Uri getContentUri();
-    method @NonNull public android.content.ClipDescription getDescription();
-    method @Nullable public android.net.Uri getLinkUri();
-    method public void releasePermission();
-    method public void requestPermission();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InputContentInfo> CREATOR;
-  }
-
-  public interface InputMethod {
-    method @MainThread public void attachToken(android.os.IBinder);
-    method @MainThread public void bindInput(android.view.inputmethod.InputBinding);
-    method @MainThread public void changeInputMethodSubtype(android.view.inputmethod.InputMethodSubtype);
-    method @MainThread public void createSession(android.view.inputmethod.InputMethod.SessionCallback);
-    method @MainThread public void hideSoftInput(int, android.os.ResultReceiver);
-    method @MainThread public void restartInput(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo);
-    method @MainThread public void revokeSession(android.view.inputmethod.InputMethodSession);
-    method @MainThread public void setSessionEnabled(android.view.inputmethod.InputMethodSession, boolean);
-    method @MainThread public void showSoftInput(int, android.os.ResultReceiver);
-    method @MainThread public void startInput(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo);
-    method @MainThread public void unbindInput();
-    field public static final String SERVICE_INTERFACE = "android.view.InputMethod";
-    field public static final String SERVICE_META_DATA = "android.view.im";
-    field public static final int SHOW_EXPLICIT = 1; // 0x1
-    field public static final int SHOW_FORCED = 2; // 0x2
-  }
-
-  public static interface InputMethod.SessionCallback {
-    method public void sessionCreated(android.view.inputmethod.InputMethodSession);
-  }
-
-  public final class InputMethodInfo implements android.os.Parcelable {
-    ctor public InputMethodInfo(android.content.Context, android.content.pm.ResolveInfo) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    ctor public InputMethodInfo(String, String, CharSequence, String);
-    method public int describeContents();
-    method public void dump(android.util.Printer, String);
-    method public android.content.ComponentName getComponent();
-    method public String getId();
-    method public int getIsDefaultResourceId();
-    method public String getPackageName();
-    method public android.content.pm.ServiceInfo getServiceInfo();
-    method public String getServiceName();
-    method public String getSettingsActivity();
-    method public android.view.inputmethod.InputMethodSubtype getSubtypeAt(int);
-    method public int getSubtypeCount();
-    method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
-    method public CharSequence loadLabel(android.content.pm.PackageManager);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InputMethodInfo> CREATOR;
-  }
-
-  public final class InputMethodManager {
-    method public void dispatchKeyEventFromInputMethod(@Nullable android.view.View, @NonNull android.view.KeyEvent);
-    method public void displayCompletions(android.view.View, android.view.inputmethod.CompletionInfo[]);
-    method public android.view.inputmethod.InputMethodSubtype getCurrentInputMethodSubtype();
-    method public java.util.List<android.view.inputmethod.InputMethodInfo> getEnabledInputMethodList();
-    method public java.util.List<android.view.inputmethod.InputMethodSubtype> getEnabledInputMethodSubtypeList(android.view.inputmethod.InputMethodInfo, boolean);
-    method public java.util.List<android.view.inputmethod.InputMethodInfo> getInputMethodList();
-    method public android.view.inputmethod.InputMethodSubtype getLastInputMethodSubtype();
-    method public java.util.Map<android.view.inputmethod.InputMethodInfo,java.util.List<android.view.inputmethod.InputMethodSubtype>> getShortcutInputMethodsAndSubtypes();
-    method @Deprecated public void hideSoftInputFromInputMethod(android.os.IBinder, int);
-    method public boolean hideSoftInputFromWindow(android.os.IBinder, int);
-    method public boolean hideSoftInputFromWindow(android.os.IBinder, int, android.os.ResultReceiver);
-    method @Deprecated public void hideStatusIcon(android.os.IBinder);
-    method public boolean isAcceptingText();
-    method public boolean isActive(android.view.View);
-    method public boolean isActive();
-    method public boolean isFullscreenMode();
-    method @Deprecated public boolean isWatchingCursor(android.view.View);
-    method public void restartInput(android.view.View);
-    method public void sendAppPrivateCommand(android.view.View, String, android.os.Bundle);
-    method @Deprecated public void setAdditionalInputMethodSubtypes(String, android.view.inputmethod.InputMethodSubtype[]);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean setCurrentInputMethodSubtype(android.view.inputmethod.InputMethodSubtype);
-    method @Deprecated public void setInputMethod(android.os.IBinder, String);
-    method @Deprecated public void setInputMethodAndSubtype(@NonNull android.os.IBinder, String, android.view.inputmethod.InputMethodSubtype);
-    method @Deprecated public boolean shouldOfferSwitchingToNextInputMethod(android.os.IBinder);
-    method public void showInputMethodAndSubtypeEnabler(String);
-    method public void showInputMethodPicker();
-    method public boolean showSoftInput(android.view.View, int);
-    method public boolean showSoftInput(android.view.View, int, android.os.ResultReceiver);
-    method @Deprecated public void showSoftInputFromInputMethod(android.os.IBinder, int);
-    method @Deprecated public void showStatusIcon(android.os.IBinder, String, @DrawableRes int);
-    method @Deprecated public boolean switchToLastInputMethod(android.os.IBinder);
-    method @Deprecated public boolean switchToNextInputMethod(android.os.IBinder, boolean);
-    method public void toggleSoftInput(int, int);
-    method public void toggleSoftInputFromWindow(android.os.IBinder, int, int);
-    method @Deprecated public void updateCursor(android.view.View, int, int, int, int);
-    method public void updateCursorAnchorInfo(android.view.View, android.view.inputmethod.CursorAnchorInfo);
-    method public void updateExtractedText(android.view.View, int, android.view.inputmethod.ExtractedText);
-    method public void updateSelection(android.view.View, int, int, int, int);
-    method @Deprecated public void viewClicked(android.view.View);
-    field public static final int HIDE_IMPLICIT_ONLY = 1; // 0x1
-    field public static final int HIDE_NOT_ALWAYS = 2; // 0x2
-    field public static final int RESULT_HIDDEN = 3; // 0x3
-    field public static final int RESULT_SHOWN = 2; // 0x2
-    field public static final int RESULT_UNCHANGED_HIDDEN = 1; // 0x1
-    field public static final int RESULT_UNCHANGED_SHOWN = 0; // 0x0
-    field public static final int SHOW_FORCED = 2; // 0x2
-    field public static final int SHOW_IMPLICIT = 1; // 0x1
-  }
-
-  public interface InputMethodSession {
-    method public void appPrivateCommand(String, android.os.Bundle);
-    method public void dispatchGenericMotionEvent(int, android.view.MotionEvent, android.view.inputmethod.InputMethodSession.EventCallback);
-    method public void dispatchKeyEvent(int, android.view.KeyEvent, android.view.inputmethod.InputMethodSession.EventCallback);
-    method public void dispatchTrackballEvent(int, android.view.MotionEvent, android.view.inputmethod.InputMethodSession.EventCallback);
-    method public void displayCompletions(android.view.inputmethod.CompletionInfo[]);
-    method public void finishInput();
-    method public void toggleSoftInput(int, int);
-    method public void updateCursor(android.graphics.Rect);
-    method public void updateCursorAnchorInfo(android.view.inputmethod.CursorAnchorInfo);
-    method public void updateExtractedText(int, android.view.inputmethod.ExtractedText);
-    method public void updateSelection(int, int, int, int, int, int);
-    method public void viewClicked(boolean);
-  }
-
-  public static interface InputMethodSession.EventCallback {
-    method public void finishedEvent(int, boolean);
-  }
-
-  public final class InputMethodSubtype implements android.os.Parcelable {
-    ctor @Deprecated public InputMethodSubtype(int, int, String, String, String, boolean, boolean);
-    ctor @Deprecated public InputMethodSubtype(int, int, String, String, String, boolean, boolean, int);
-    method public boolean containsExtraValueKey(String);
-    method public int describeContents();
-    method @NonNull public CharSequence getDisplayName(android.content.Context, String, android.content.pm.ApplicationInfo);
-    method public String getExtraValue();
-    method public String getExtraValueOf(String);
-    method public int getIconResId();
-    method @NonNull public String getLanguageTag();
-    method @Deprecated @NonNull public String getLocale();
-    method public String getMode();
-    method public int getNameResId();
-    method public boolean isAsciiCapable();
-    method public boolean isAuxiliary();
-    method public boolean overridesImplicitlyEnabledSubtype();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InputMethodSubtype> CREATOR;
-  }
-
-  public static class InputMethodSubtype.InputMethodSubtypeBuilder {
-    ctor public InputMethodSubtype.InputMethodSubtypeBuilder();
-    method public android.view.inputmethod.InputMethodSubtype build();
-    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setIsAsciiCapable(boolean);
-    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setIsAuxiliary(boolean);
-    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setLanguageTag(String);
-    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setOverridesImplicitlyEnabledSubtype(boolean);
-    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeExtraValue(String);
-    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeIconResId(int);
-    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeId(int);
-    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeLocale(String);
-    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeMode(String);
-    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeNameResId(int);
-  }
-
-}
-
-package android.view.inspector {
-
-  public interface InspectionCompanion<T> {
-    method public void mapProperties(@NonNull android.view.inspector.PropertyMapper);
-    method public void readProperties(@NonNull T, @NonNull android.view.inspector.PropertyReader);
-  }
-
-  public static class InspectionCompanion.UninitializedPropertyMapException extends java.lang.RuntimeException {
-    ctor public InspectionCompanion.UninitializedPropertyMapException();
-  }
-
-  public interface InspectionCompanionProvider {
-    method @Nullable public <T> android.view.inspector.InspectionCompanion<T> provide(@NonNull Class<T>);
-  }
-
-  public final class IntFlagMapping {
-    ctor public IntFlagMapping();
-    method public void add(int, int, @NonNull String);
-    method @NonNull public java.util.Set<java.lang.String> get(int);
-  }
-
-  public interface PropertyMapper {
-    method public int mapBoolean(@NonNull String, @AttrRes int);
-    method public int mapByte(@NonNull String, @AttrRes int);
-    method public int mapChar(@NonNull String, @AttrRes int);
-    method public int mapColor(@NonNull String, @AttrRes int);
-    method public int mapDouble(@NonNull String, @AttrRes int);
-    method public int mapFloat(@NonNull String, @AttrRes int);
-    method public int mapGravity(@NonNull String, @AttrRes int);
-    method public int mapInt(@NonNull String, @AttrRes int);
-    method public int mapIntEnum(@NonNull String, @AttrRes int, @NonNull java.util.function.IntFunction<java.lang.String>);
-    method public int mapIntFlag(@NonNull String, @AttrRes int, @NonNull java.util.function.IntFunction<java.util.Set<java.lang.String>>);
-    method public int mapLong(@NonNull String, @AttrRes int);
-    method public int mapObject(@NonNull String, @AttrRes int);
-    method public int mapResourceId(@NonNull String, @AttrRes int);
-    method public int mapShort(@NonNull String, @AttrRes int);
-  }
-
-  public static class PropertyMapper.PropertyConflictException extends java.lang.RuntimeException {
-    ctor public PropertyMapper.PropertyConflictException(@NonNull String, @NonNull String, @NonNull String);
-  }
-
-  public interface PropertyReader {
-    method public void readBoolean(int, boolean);
-    method public void readByte(int, byte);
-    method public void readChar(int, char);
-    method public void readColor(int, @ColorInt int);
-    method public void readColor(int, @ColorLong long);
-    method public void readColor(int, @Nullable android.graphics.Color);
-    method public void readDouble(int, double);
-    method public void readFloat(int, float);
-    method public void readGravity(int, int);
-    method public void readInt(int, int);
-    method public void readIntEnum(int, int);
-    method public void readIntFlag(int, int);
-    method public void readLong(int, long);
-    method public void readObject(int, @Nullable Object);
-    method public void readResourceId(int, @AnyRes int);
-    method public void readShort(int, short);
-  }
-
-  public static class PropertyReader.PropertyTypeMismatchException extends java.lang.RuntimeException {
-    ctor public PropertyReader.PropertyTypeMismatchException(int, @NonNull String, @NonNull String, @Nullable String);
-    ctor public PropertyReader.PropertyTypeMismatchException(int, @NonNull String, @NonNull String);
-  }
-
-  public class StaticInspectionCompanionProvider implements android.view.inspector.InspectionCompanionProvider {
-    ctor public StaticInspectionCompanionProvider();
-    method @Nullable public <T> android.view.inspector.InspectionCompanion<T> provide(@NonNull Class<T>);
-  }
-
-  public final class WindowInspector {
-    method @NonNull public static java.util.List<android.view.View> getGlobalWindowViews();
-  }
-
-}
-
-package android.view.textclassifier {
-
-  public final class ConversationAction implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.app.RemoteAction getAction();
-    method @FloatRange(from=0, to=1) public float getConfidenceScore();
-    method @NonNull public android.os.Bundle getExtras();
-    method @Nullable public CharSequence getTextReply();
-    method @NonNull public String getType();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.ConversationAction> CREATOR;
-    field public static final String TYPE_CALL_PHONE = "call_phone";
-    field public static final String TYPE_CREATE_REMINDER = "create_reminder";
-    field public static final String TYPE_OPEN_URL = "open_url";
-    field public static final String TYPE_SEND_EMAIL = "send_email";
-    field public static final String TYPE_SEND_SMS = "send_sms";
-    field public static final String TYPE_SHARE_LOCATION = "share_location";
-    field public static final String TYPE_TEXT_REPLY = "text_reply";
-    field public static final String TYPE_TRACK_FLIGHT = "track_flight";
-    field public static final String TYPE_VIEW_CALENDAR = "view_calendar";
-    field public static final String TYPE_VIEW_MAP = "view_map";
-  }
-
-  public static final class ConversationAction.Builder {
-    ctor public ConversationAction.Builder(@NonNull String);
-    method @NonNull public android.view.textclassifier.ConversationAction build();
-    method @NonNull public android.view.textclassifier.ConversationAction.Builder setAction(@Nullable android.app.RemoteAction);
-    method @NonNull public android.view.textclassifier.ConversationAction.Builder setConfidenceScore(@FloatRange(from=0, to=1) float);
-    method @NonNull public android.view.textclassifier.ConversationAction.Builder setExtras(@Nullable android.os.Bundle);
-    method @NonNull public android.view.textclassifier.ConversationAction.Builder setTextReply(@Nullable CharSequence);
-  }
-
-  public final class ConversationActions implements android.os.Parcelable {
-    ctor public ConversationActions(@NonNull java.util.List<android.view.textclassifier.ConversationAction>, @Nullable String);
-    method public int describeContents();
-    method @NonNull public java.util.List<android.view.textclassifier.ConversationAction> getConversationActions();
-    method @Nullable public String getId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.ConversationActions> CREATOR;
-  }
-
-  public static final class ConversationActions.Message implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.app.Person getAuthor();
-    method @NonNull public android.os.Bundle getExtras();
-    method @Nullable public java.time.ZonedDateTime getReferenceTime();
-    method @Nullable public CharSequence getText();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.ConversationActions.Message> CREATOR;
-    field @NonNull public static final android.app.Person PERSON_USER_OTHERS;
-    field @NonNull public static final android.app.Person PERSON_USER_SELF;
-  }
-
-  public static final class ConversationActions.Message.Builder {
-    ctor public ConversationActions.Message.Builder(@NonNull android.app.Person);
-    method @NonNull public android.view.textclassifier.ConversationActions.Message build();
-    method @NonNull public android.view.textclassifier.ConversationActions.Message.Builder setExtras(@Nullable android.os.Bundle);
-    method @NonNull public android.view.textclassifier.ConversationActions.Message.Builder setReferenceTime(@Nullable java.time.ZonedDateTime);
-    method @NonNull public android.view.textclassifier.ConversationActions.Message.Builder setText(@Nullable CharSequence);
-  }
-
-  public static final class ConversationActions.Request implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getCallingPackageName();
-    method @NonNull public java.util.List<android.view.textclassifier.ConversationActions.Message> getConversation();
-    method @NonNull public android.os.Bundle getExtras();
-    method @NonNull public java.util.List<java.lang.String> getHints();
-    method @IntRange(from=0xffffffff) public int getMaxSuggestions();
-    method @NonNull public android.view.textclassifier.TextClassifier.EntityConfig getTypeConfig();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.ConversationActions.Request> CREATOR;
-    field public static final String HINT_FOR_IN_APP = "in_app";
-    field public static final String HINT_FOR_NOTIFICATION = "notification";
-  }
-
-  public static final class ConversationActions.Request.Builder {
-    ctor public ConversationActions.Request.Builder(@NonNull java.util.List<android.view.textclassifier.ConversationActions.Message>);
-    method @NonNull public android.view.textclassifier.ConversationActions.Request build();
-    method @NonNull public android.view.textclassifier.ConversationActions.Request.Builder setExtras(@Nullable android.os.Bundle);
-    method @NonNull public android.view.textclassifier.ConversationActions.Request.Builder setHints(@Nullable java.util.List<java.lang.String>);
-    method @NonNull public android.view.textclassifier.ConversationActions.Request.Builder setMaxSuggestions(@IntRange(from=0xffffffff) int);
-    method @NonNull public android.view.textclassifier.ConversationActions.Request.Builder setTypeConfig(@Nullable android.view.textclassifier.TextClassifier.EntityConfig);
-  }
-
-  public final class SelectionEvent implements android.os.Parcelable {
-    method @NonNull public static android.view.textclassifier.SelectionEvent createSelectionActionEvent(int, int, int);
-    method @NonNull public static android.view.textclassifier.SelectionEvent createSelectionActionEvent(int, int, int, @NonNull android.view.textclassifier.TextClassification);
-    method @NonNull public static android.view.textclassifier.SelectionEvent createSelectionModifiedEvent(int, int);
-    method @NonNull public static android.view.textclassifier.SelectionEvent createSelectionModifiedEvent(int, int, @NonNull android.view.textclassifier.TextClassification);
-    method @NonNull public static android.view.textclassifier.SelectionEvent createSelectionModifiedEvent(int, int, @NonNull android.view.textclassifier.TextSelection);
-    method @NonNull public static android.view.textclassifier.SelectionEvent createSelectionStartedEvent(int, int);
-    method public int describeContents();
-    method public long getDurationSincePreviousEvent();
-    method public long getDurationSinceSessionStart();
-    method public int getEnd();
-    method @NonNull public String getEntityType();
-    method public int getEventIndex();
-    method public long getEventTime();
-    method public int getEventType();
-    method public int getInvocationMethod();
-    method @NonNull public String getPackageName();
-    method @Nullable public String getResultId();
-    method @Nullable public android.view.textclassifier.TextClassificationSessionId getSessionId();
-    method public int getSmartEnd();
-    method public int getSmartStart();
-    method public int getStart();
-    method @NonNull public String getWidgetType();
-    method @Nullable public String getWidgetVersion();
-    method public static boolean isTerminal(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ACTION_ABANDON = 107; // 0x6b
-    field public static final int ACTION_COPY = 101; // 0x65
-    field public static final int ACTION_CUT = 103; // 0x67
-    field public static final int ACTION_DRAG = 106; // 0x6a
-    field public static final int ACTION_OTHER = 108; // 0x6c
-    field public static final int ACTION_OVERTYPE = 100; // 0x64
-    field public static final int ACTION_PASTE = 102; // 0x66
-    field public static final int ACTION_RESET = 201; // 0xc9
-    field public static final int ACTION_SELECT_ALL = 200; // 0xc8
-    field public static final int ACTION_SHARE = 104; // 0x68
-    field public static final int ACTION_SMART_SHARE = 105; // 0x69
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.SelectionEvent> CREATOR;
-    field public static final int EVENT_AUTO_SELECTION = 5; // 0x5
-    field public static final int EVENT_SELECTION_MODIFIED = 2; // 0x2
-    field public static final int EVENT_SELECTION_STARTED = 1; // 0x1
-    field public static final int EVENT_SMART_SELECTION_MULTI = 4; // 0x4
-    field public static final int EVENT_SMART_SELECTION_SINGLE = 3; // 0x3
-    field public static final int INVOCATION_LINK = 2; // 0x2
-    field public static final int INVOCATION_MANUAL = 1; // 0x1
-    field public static final int INVOCATION_UNKNOWN = 0; // 0x0
-  }
-
-  public final class TextClassification implements android.os.Parcelable {
-    method public int describeContents();
-    method public java.util.List<android.app.RemoteAction> getActions();
-    method @FloatRange(from=0.0, to=1.0) public float getConfidenceScore(String);
-    method @NonNull public String getEntity(int);
-    method @IntRange(from=0) public int getEntityCount();
-    method @NonNull public android.os.Bundle getExtras();
-    method @Deprecated @Nullable public android.graphics.drawable.Drawable getIcon();
-    method @Nullable public String getId();
-    method @Deprecated @Nullable public android.content.Intent getIntent();
-    method @Deprecated @Nullable public CharSequence getLabel();
-    method @Deprecated @Nullable public android.view.View.OnClickListener getOnClickListener();
-    method @Nullable public String getText();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassification> CREATOR;
-  }
-
-  public static final class TextClassification.Builder {
-    ctor public TextClassification.Builder();
-    method @NonNull public android.view.textclassifier.TextClassification.Builder addAction(@NonNull android.app.RemoteAction);
-    method @NonNull public android.view.textclassifier.TextClassification build();
-    method @NonNull public android.view.textclassifier.TextClassification.Builder setEntityType(@NonNull String, @FloatRange(from=0.0, to=1.0) float);
-    method @NonNull public android.view.textclassifier.TextClassification.Builder setExtras(@Nullable android.os.Bundle);
-    method @Deprecated @NonNull public android.view.textclassifier.TextClassification.Builder setIcon(@Nullable android.graphics.drawable.Drawable);
-    method @NonNull public android.view.textclassifier.TextClassification.Builder setId(@Nullable String);
-    method @Deprecated @NonNull public android.view.textclassifier.TextClassification.Builder setIntent(@Nullable android.content.Intent);
-    method @Deprecated @NonNull public android.view.textclassifier.TextClassification.Builder setLabel(@Nullable String);
-    method @Deprecated @NonNull public android.view.textclassifier.TextClassification.Builder setOnClickListener(@Nullable android.view.View.OnClickListener);
-    method @NonNull public android.view.textclassifier.TextClassification.Builder setText(@Nullable String);
-  }
-
-  public static final class TextClassification.Request implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getCallingPackageName();
-    method @Nullable public android.os.LocaleList getDefaultLocales();
-    method @IntRange(from=0) public int getEndIndex();
-    method @NonNull public android.os.Bundle getExtras();
-    method @Nullable public java.time.ZonedDateTime getReferenceTime();
-    method @IntRange(from=0) public int getStartIndex();
-    method @NonNull public CharSequence getText();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassification.Request> CREATOR;
-  }
-
-  public static final class TextClassification.Request.Builder {
-    ctor public TextClassification.Request.Builder(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int);
-    method @NonNull public android.view.textclassifier.TextClassification.Request build();
-    method @NonNull public android.view.textclassifier.TextClassification.Request.Builder setDefaultLocales(@Nullable android.os.LocaleList);
-    method @NonNull public android.view.textclassifier.TextClassification.Request.Builder setExtras(@Nullable android.os.Bundle);
-    method @NonNull public android.view.textclassifier.TextClassification.Request.Builder setReferenceTime(@Nullable java.time.ZonedDateTime);
-  }
-
-  public final class TextClassificationContext implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public String getPackageName();
-    method @NonNull public String getWidgetType();
-    method @Nullable public String getWidgetVersion();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassificationContext> CREATOR;
-  }
-
-  public static final class TextClassificationContext.Builder {
-    ctor public TextClassificationContext.Builder(@NonNull String, @NonNull String);
-    method @NonNull public android.view.textclassifier.TextClassificationContext build();
-    method public android.view.textclassifier.TextClassificationContext.Builder setWidgetVersion(@Nullable String);
-  }
-
-  public final class TextClassificationManager {
-    method @NonNull public android.view.textclassifier.TextClassifier createTextClassificationSession(@NonNull android.view.textclassifier.TextClassificationContext);
-    method @NonNull public android.view.textclassifier.TextClassifier getTextClassifier();
-    method public void setTextClassificationSessionFactory(@Nullable android.view.textclassifier.TextClassificationSessionFactory);
-    method public void setTextClassifier(@Nullable android.view.textclassifier.TextClassifier);
-  }
-
-  public interface TextClassificationSessionFactory {
-    method @NonNull public android.view.textclassifier.TextClassifier createTextClassificationSession(@NonNull android.view.textclassifier.TextClassificationContext);
-  }
-
-  public final class TextClassificationSessionId implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public String getValue();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassificationSessionId> CREATOR;
-  }
-
-  public interface TextClassifier {
-    method @NonNull @WorkerThread public default android.view.textclassifier.TextClassification classifyText(@NonNull android.view.textclassifier.TextClassification.Request);
-    method @NonNull @WorkerThread public default android.view.textclassifier.TextClassification classifyText(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @Nullable android.os.LocaleList);
-    method public default void destroy();
-    method @NonNull @WorkerThread public default android.view.textclassifier.TextLanguage detectLanguage(@NonNull android.view.textclassifier.TextLanguage.Request);
-    method @NonNull @WorkerThread public default android.view.textclassifier.TextLinks generateLinks(@NonNull android.view.textclassifier.TextLinks.Request);
-    method @WorkerThread public default int getMaxGenerateLinksTextLength();
-    method public default boolean isDestroyed();
-    method public default void onSelectionEvent(@NonNull android.view.textclassifier.SelectionEvent);
-    method public default void onTextClassifierEvent(@NonNull android.view.textclassifier.TextClassifierEvent);
-    method @NonNull @WorkerThread public default android.view.textclassifier.ConversationActions suggestConversationActions(@NonNull android.view.textclassifier.ConversationActions.Request);
-    method @NonNull @WorkerThread public default android.view.textclassifier.TextSelection suggestSelection(@NonNull android.view.textclassifier.TextSelection.Request);
-    method @NonNull @WorkerThread public default android.view.textclassifier.TextSelection suggestSelection(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @Nullable android.os.LocaleList);
-    field public static final String EXTRA_FROM_TEXT_CLASSIFIER = "android.view.textclassifier.extra.FROM_TEXT_CLASSIFIER";
-    field public static final String HINT_TEXT_IS_EDITABLE = "android.text_is_editable";
-    field public static final String HINT_TEXT_IS_NOT_EDITABLE = "android.text_is_not_editable";
-    field public static final android.view.textclassifier.TextClassifier NO_OP;
-    field public static final String TYPE_ADDRESS = "address";
-    field public static final String TYPE_DATE = "date";
-    field public static final String TYPE_DATE_TIME = "datetime";
-    field public static final String TYPE_EMAIL = "email";
-    field public static final String TYPE_FLIGHT_NUMBER = "flight";
-    field public static final String TYPE_OTHER = "other";
-    field public static final String TYPE_PHONE = "phone";
-    field public static final String TYPE_UNKNOWN = "";
-    field public static final String TYPE_URL = "url";
-    field public static final String WIDGET_TYPE_CUSTOM_EDITTEXT = "customedit";
-    field public static final String WIDGET_TYPE_CUSTOM_TEXTVIEW = "customview";
-    field public static final String WIDGET_TYPE_CUSTOM_UNSELECTABLE_TEXTVIEW = "nosel-customview";
-    field public static final String WIDGET_TYPE_EDITTEXT = "edittext";
-    field public static final String WIDGET_TYPE_EDIT_WEBVIEW = "edit-webview";
-    field public static final String WIDGET_TYPE_NOTIFICATION = "notification";
-    field public static final String WIDGET_TYPE_TEXTVIEW = "textview";
-    field public static final String WIDGET_TYPE_UNKNOWN = "unknown";
-    field public static final String WIDGET_TYPE_UNSELECTABLE_TEXTVIEW = "nosel-textview";
-    field public static final String WIDGET_TYPE_WEBVIEW = "webview";
-  }
-
-  public static final class TextClassifier.EntityConfig implements android.os.Parcelable {
-    method @Deprecated public static android.view.textclassifier.TextClassifier.EntityConfig create(@Nullable java.util.Collection<java.lang.String>, @Nullable java.util.Collection<java.lang.String>, @Nullable java.util.Collection<java.lang.String>);
-    method @Deprecated public static android.view.textclassifier.TextClassifier.EntityConfig createWithExplicitEntityList(@Nullable java.util.Collection<java.lang.String>);
-    method @Deprecated public static android.view.textclassifier.TextClassifier.EntityConfig createWithHints(@Nullable java.util.Collection<java.lang.String>);
-    method public int describeContents();
-    method public java.util.Collection<java.lang.String> getHints();
-    method public java.util.Collection<java.lang.String> resolveEntityListModifications(@NonNull java.util.Collection<java.lang.String>);
-    method public boolean shouldIncludeTypesFromTextClassifier();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassifier.EntityConfig> CREATOR;
-  }
-
-  public static final class TextClassifier.EntityConfig.Builder {
-    ctor public TextClassifier.EntityConfig.Builder();
-    method @NonNull public android.view.textclassifier.TextClassifier.EntityConfig build();
-    method @NonNull public android.view.textclassifier.TextClassifier.EntityConfig.Builder includeTypesFromTextClassifier(boolean);
-    method @NonNull public android.view.textclassifier.TextClassifier.EntityConfig.Builder setExcludedTypes(@Nullable java.util.Collection<java.lang.String>);
-    method @NonNull public android.view.textclassifier.TextClassifier.EntityConfig.Builder setHints(@Nullable java.util.Collection<java.lang.String>);
-    method @NonNull public android.view.textclassifier.TextClassifier.EntityConfig.Builder setIncludedTypes(@Nullable java.util.Collection<java.lang.String>);
-  }
-
-  public abstract class TextClassifierEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public int[] getActionIndices();
-    method @NonNull public String[] getEntityTypes();
-    method public int getEventCategory();
-    method @Nullable public android.view.textclassifier.TextClassificationContext getEventContext();
-    method public int getEventIndex();
-    method public int getEventType();
-    method @NonNull public android.os.Bundle getExtras();
-    method @Nullable public android.icu.util.ULocale getLocale();
-    method @Nullable public String getModelName();
-    method @Nullable public String getResultId();
-    method @NonNull public float[] getScores();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CATEGORY_CONVERSATION_ACTIONS = 3; // 0x3
-    field public static final int CATEGORY_LANGUAGE_DETECTION = 4; // 0x4
-    field public static final int CATEGORY_LINKIFY = 2; // 0x2
-    field public static final int CATEGORY_SELECTION = 1; // 0x1
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassifierEvent> CREATOR;
-    field public static final int TYPE_ACTIONS_GENERATED = 20; // 0x14
-    field public static final int TYPE_ACTIONS_SHOWN = 6; // 0x6
-    field public static final int TYPE_AUTO_SELECTION = 5; // 0x5
-    field public static final int TYPE_COPY_ACTION = 9; // 0x9
-    field public static final int TYPE_CUT_ACTION = 11; // 0xb
-    field public static final int TYPE_LINKS_GENERATED = 21; // 0x15
-    field public static final int TYPE_LINK_CLICKED = 7; // 0x7
-    field public static final int TYPE_MANUAL_REPLY = 19; // 0x13
-    field public static final int TYPE_OTHER_ACTION = 16; // 0x10
-    field public static final int TYPE_OVERTYPE = 8; // 0x8
-    field public static final int TYPE_PASTE_ACTION = 10; // 0xa
-    field public static final int TYPE_SELECTION_DESTROYED = 15; // 0xf
-    field public static final int TYPE_SELECTION_DRAG = 14; // 0xe
-    field public static final int TYPE_SELECTION_MODIFIED = 2; // 0x2
-    field public static final int TYPE_SELECTION_RESET = 18; // 0x12
-    field public static final int TYPE_SELECTION_STARTED = 1; // 0x1
-    field public static final int TYPE_SELECT_ALL = 17; // 0x11
-    field public static final int TYPE_SHARE_ACTION = 12; // 0xc
-    field public static final int TYPE_SMART_ACTION = 13; // 0xd
-    field public static final int TYPE_SMART_SELECTION_MULTI = 4; // 0x4
-    field public static final int TYPE_SMART_SELECTION_SINGLE = 3; // 0x3
-  }
-
-  public abstract static class TextClassifierEvent.Builder<T extends android.view.textclassifier.TextClassifierEvent.Builder<T>> {
-    method @NonNull public T setActionIndices(@NonNull int...);
-    method @NonNull public T setEntityTypes(@NonNull java.lang.String...);
-    method @NonNull public T setEventContext(@Nullable android.view.textclassifier.TextClassificationContext);
-    method @NonNull public T setEventIndex(int);
-    method @NonNull public T setExtras(@NonNull android.os.Bundle);
-    method @NonNull public T setLocale(@Nullable android.icu.util.ULocale);
-    method @NonNull public T setModelName(@Nullable String);
-    method @NonNull public T setResultId(@Nullable String);
-    method @NonNull public T setScores(@NonNull float...);
-  }
-
-  public static final class TextClassifierEvent.ConversationActionsEvent extends android.view.textclassifier.TextClassifierEvent implements android.os.Parcelable {
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassifierEvent.ConversationActionsEvent> CREATOR;
-  }
-
-  public static final class TextClassifierEvent.ConversationActionsEvent.Builder extends android.view.textclassifier.TextClassifierEvent.Builder<android.view.textclassifier.TextClassifierEvent.ConversationActionsEvent.Builder> {
-    ctor public TextClassifierEvent.ConversationActionsEvent.Builder(int);
-    method @NonNull public android.view.textclassifier.TextClassifierEvent.ConversationActionsEvent build();
-  }
-
-  public static final class TextClassifierEvent.LanguageDetectionEvent extends android.view.textclassifier.TextClassifierEvent implements android.os.Parcelable {
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassifierEvent.LanguageDetectionEvent> CREATOR;
-  }
-
-  public static final class TextClassifierEvent.LanguageDetectionEvent.Builder extends android.view.textclassifier.TextClassifierEvent.Builder<android.view.textclassifier.TextClassifierEvent.LanguageDetectionEvent.Builder> {
-    ctor public TextClassifierEvent.LanguageDetectionEvent.Builder(int);
-    method @NonNull public android.view.textclassifier.TextClassifierEvent.LanguageDetectionEvent build();
-  }
-
-  public static final class TextClassifierEvent.TextLinkifyEvent extends android.view.textclassifier.TextClassifierEvent implements android.os.Parcelable {
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassifierEvent.TextLinkifyEvent> CREATOR;
-  }
-
-  public static final class TextClassifierEvent.TextLinkifyEvent.Builder extends android.view.textclassifier.TextClassifierEvent.Builder<android.view.textclassifier.TextClassifierEvent.TextLinkifyEvent.Builder> {
-    ctor public TextClassifierEvent.TextLinkifyEvent.Builder(int);
-    method @NonNull public android.view.textclassifier.TextClassifierEvent.TextLinkifyEvent build();
-  }
-
-  public static final class TextClassifierEvent.TextSelectionEvent extends android.view.textclassifier.TextClassifierEvent implements android.os.Parcelable {
-    method public int getRelativeSuggestedWordEndIndex();
-    method public int getRelativeSuggestedWordStartIndex();
-    method public int getRelativeWordEndIndex();
-    method public int getRelativeWordStartIndex();
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassifierEvent.TextSelectionEvent> CREATOR;
-  }
-
-  public static final class TextClassifierEvent.TextSelectionEvent.Builder extends android.view.textclassifier.TextClassifierEvent.Builder<android.view.textclassifier.TextClassifierEvent.TextSelectionEvent.Builder> {
-    ctor public TextClassifierEvent.TextSelectionEvent.Builder(int);
-    method @NonNull public android.view.textclassifier.TextClassifierEvent.TextSelectionEvent build();
-    method @NonNull public android.view.textclassifier.TextClassifierEvent.TextSelectionEvent.Builder setRelativeSuggestedWordEndIndex(int);
-    method @NonNull public android.view.textclassifier.TextClassifierEvent.TextSelectionEvent.Builder setRelativeSuggestedWordStartIndex(int);
-    method @NonNull public android.view.textclassifier.TextClassifierEvent.TextSelectionEvent.Builder setRelativeWordEndIndex(int);
-    method @NonNull public android.view.textclassifier.TextClassifierEvent.TextSelectionEvent.Builder setRelativeWordStartIndex(int);
-  }
-
-  public final class TextLanguage implements android.os.Parcelable {
-    method public int describeContents();
-    method @FloatRange(from=0.0, to=1.0) public float getConfidenceScore(@NonNull android.icu.util.ULocale);
-    method @NonNull public android.os.Bundle getExtras();
-    method @Nullable public String getId();
-    method @NonNull public android.icu.util.ULocale getLocale(int);
-    method @IntRange(from=0) public int getLocaleHypothesisCount();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextLanguage> CREATOR;
-  }
-
-  public static final class TextLanguage.Builder {
-    ctor public TextLanguage.Builder();
-    method @NonNull public android.view.textclassifier.TextLanguage build();
-    method @NonNull public android.view.textclassifier.TextLanguage.Builder putLocale(@NonNull android.icu.util.ULocale, @FloatRange(from=0.0, to=1.0) float);
-    method @NonNull public android.view.textclassifier.TextLanguage.Builder setExtras(@NonNull android.os.Bundle);
-    method @NonNull public android.view.textclassifier.TextLanguage.Builder setId(@Nullable String);
-  }
-
-  public static final class TextLanguage.Request implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getCallingPackageName();
-    method @NonNull public android.os.Bundle getExtras();
-    method @NonNull public CharSequence getText();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextLanguage.Request> CREATOR;
-  }
-
-  public static final class TextLanguage.Request.Builder {
-    ctor public TextLanguage.Request.Builder(@NonNull CharSequence);
-    method @NonNull public android.view.textclassifier.TextLanguage.Request build();
-    method @NonNull public android.view.textclassifier.TextLanguage.Request.Builder setExtras(@NonNull android.os.Bundle);
-  }
-
-  public final class TextLinks implements android.os.Parcelable {
-    method public int apply(@NonNull android.text.Spannable, int, @Nullable java.util.function.Function<android.view.textclassifier.TextLinks.TextLink,android.view.textclassifier.TextLinks.TextLinkSpan>);
-    method public int describeContents();
-    method @NonNull public android.os.Bundle getExtras();
-    method @NonNull public java.util.Collection<android.view.textclassifier.TextLinks.TextLink> getLinks();
-    method @NonNull public CharSequence getText();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int APPLY_STRATEGY_IGNORE = 0; // 0x0
-    field public static final int APPLY_STRATEGY_REPLACE = 1; // 0x1
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextLinks> CREATOR;
-    field public static final int STATUS_DIFFERENT_TEXT = 3; // 0x3
-    field public static final int STATUS_LINKS_APPLIED = 0; // 0x0
-    field public static final int STATUS_NO_LINKS_APPLIED = 2; // 0x2
-    field public static final int STATUS_NO_LINKS_FOUND = 1; // 0x1
-    field public static final int STATUS_UNSUPPORTED_CHARACTER = 4; // 0x4
-  }
-
-  public static final class TextLinks.Builder {
-    ctor public TextLinks.Builder(@NonNull String);
-    method @NonNull public android.view.textclassifier.TextLinks.Builder addLink(int, int, @NonNull java.util.Map<java.lang.String,java.lang.Float>);
-    method @NonNull public android.view.textclassifier.TextLinks.Builder addLink(int, int, @NonNull java.util.Map<java.lang.String,java.lang.Float>, @NonNull android.os.Bundle);
-    method @NonNull public android.view.textclassifier.TextLinks build();
-    method @NonNull public android.view.textclassifier.TextLinks.Builder clearTextLinks();
-    method @NonNull public android.view.textclassifier.TextLinks.Builder setExtras(@Nullable android.os.Bundle);
-  }
-
-  public static final class TextLinks.Request implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getCallingPackageName();
-    method @Nullable public android.os.LocaleList getDefaultLocales();
-    method @Nullable public android.view.textclassifier.TextClassifier.EntityConfig getEntityConfig();
-    method @NonNull public android.os.Bundle getExtras();
-    method @Nullable public java.time.ZonedDateTime getReferenceTime();
-    method @NonNull public CharSequence getText();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextLinks.Request> CREATOR;
-  }
-
-  public static final class TextLinks.Request.Builder {
-    ctor public TextLinks.Request.Builder(@NonNull CharSequence);
-    method @NonNull public android.view.textclassifier.TextLinks.Request build();
-    method @NonNull public android.view.textclassifier.TextLinks.Request.Builder setDefaultLocales(@Nullable android.os.LocaleList);
-    method @NonNull public android.view.textclassifier.TextLinks.Request.Builder setEntityConfig(@Nullable android.view.textclassifier.TextClassifier.EntityConfig);
-    method public android.view.textclassifier.TextLinks.Request.Builder setExtras(@Nullable android.os.Bundle);
-    method @NonNull public android.view.textclassifier.TextLinks.Request.Builder setReferenceTime(@Nullable java.time.ZonedDateTime);
-  }
-
-  public static final class TextLinks.TextLink implements android.os.Parcelable {
-    method public int describeContents();
-    method @FloatRange(from=0.0, to=1.0) public float getConfidenceScore(String);
-    method public int getEnd();
-    method @NonNull public String getEntity(int);
-    method public int getEntityCount();
-    method @NonNull public android.os.Bundle getExtras();
-    method public int getStart();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextLinks.TextLink> CREATOR;
-  }
-
-  public static class TextLinks.TextLinkSpan extends android.text.style.ClickableSpan {
-    ctor public TextLinks.TextLinkSpan(@NonNull android.view.textclassifier.TextLinks.TextLink);
-    method public final android.view.textclassifier.TextLinks.TextLink getTextLink();
-    method public void onClick(android.view.View);
-  }
-
-  public final class TextSelection implements android.os.Parcelable {
-    method public int describeContents();
-    method @FloatRange(from=0.0, to=1.0) public float getConfidenceScore(String);
-    method @NonNull public String getEntity(int);
-    method @IntRange(from=0) public int getEntityCount();
-    method @NonNull public android.os.Bundle getExtras();
-    method @Nullable public String getId();
-    method public int getSelectionEndIndex();
-    method public int getSelectionStartIndex();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextSelection> CREATOR;
-  }
-
-  public static final class TextSelection.Builder {
-    ctor public TextSelection.Builder(@IntRange(from=0) int, @IntRange(from=0) int);
-    method @NonNull public android.view.textclassifier.TextSelection build();
-    method @NonNull public android.view.textclassifier.TextSelection.Builder setEntityType(@NonNull String, @FloatRange(from=0.0, to=1.0) float);
-    method @NonNull public android.view.textclassifier.TextSelection.Builder setExtras(@Nullable android.os.Bundle);
-    method @NonNull public android.view.textclassifier.TextSelection.Builder setId(@Nullable String);
-  }
-
-  public static final class TextSelection.Request implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getCallingPackageName();
-    method @Nullable public android.os.LocaleList getDefaultLocales();
-    method @IntRange(from=0) public int getEndIndex();
-    method @NonNull public android.os.Bundle getExtras();
-    method @IntRange(from=0) public int getStartIndex();
-    method @NonNull public CharSequence getText();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextSelection.Request> CREATOR;
-  }
-
-  public static final class TextSelection.Request.Builder {
-    ctor public TextSelection.Request.Builder(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int);
-    method @NonNull public android.view.textclassifier.TextSelection.Request build();
-    method @NonNull public android.view.textclassifier.TextSelection.Request.Builder setDefaultLocales(@Nullable android.os.LocaleList);
-    method @NonNull public android.view.textclassifier.TextSelection.Request.Builder setExtras(@Nullable android.os.Bundle);
-  }
-
-}
-
-package android.view.textservice {
-
-  public final class SentenceSuggestionsInfo implements android.os.Parcelable {
-    ctor public SentenceSuggestionsInfo(android.view.textservice.SuggestionsInfo[], int[], int[]);
-    ctor public SentenceSuggestionsInfo(android.os.Parcel);
-    method public int describeContents();
-    method public int getLengthAt(int);
-    method public int getOffsetAt(int);
-    method public int getSuggestionsCount();
-    method public android.view.textservice.SuggestionsInfo getSuggestionsInfoAt(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textservice.SentenceSuggestionsInfo> CREATOR;
-  }
-
-  public final class SpellCheckerInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.content.ComponentName getComponent();
-    method public String getId();
-    method public String getPackageName();
-    method public android.content.pm.ServiceInfo getServiceInfo();
-    method public String getSettingsActivity();
-    method public android.view.textservice.SpellCheckerSubtype getSubtypeAt(int);
-    method public int getSubtypeCount();
-    method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
-    method public CharSequence loadLabel(android.content.pm.PackageManager);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textservice.SpellCheckerInfo> CREATOR;
-  }
-
-  public class SpellCheckerSession {
-    method public void cancel();
-    method public void close();
-    method public void getSentenceSuggestions(android.view.textservice.TextInfo[], int);
-    method public android.view.textservice.SpellCheckerInfo getSpellChecker();
-    method @Deprecated public void getSuggestions(android.view.textservice.TextInfo, int);
-    method @Deprecated public void getSuggestions(android.view.textservice.TextInfo[], int, boolean);
-    method public boolean isSessionDisconnected();
-    field public static final String SERVICE_META_DATA = "android.view.textservice.scs";
-  }
-
-  public static interface SpellCheckerSession.SpellCheckerSessionListener {
-    method public void onGetSentenceSuggestions(android.view.textservice.SentenceSuggestionsInfo[]);
-    method public void onGetSuggestions(android.view.textservice.SuggestionsInfo[]);
-  }
-
-  public final class SpellCheckerSubtype implements android.os.Parcelable {
-    ctor @Deprecated public SpellCheckerSubtype(int, String, String);
-    method public boolean containsExtraValueKey(String);
-    method public int describeContents();
-    method public CharSequence getDisplayName(android.content.Context, String, android.content.pm.ApplicationInfo);
-    method public String getExtraValue();
-    method public String getExtraValueOf(String);
-    method @NonNull public String getLanguageTag();
-    method @Deprecated @NonNull public String getLocale();
-    method public int getNameResId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textservice.SpellCheckerSubtype> CREATOR;
-  }
-
-  public final class SuggestionsInfo implements android.os.Parcelable {
-    ctor public SuggestionsInfo(int, String[]);
-    ctor public SuggestionsInfo(int, String[], int, int);
-    ctor public SuggestionsInfo(android.os.Parcel);
-    method public int describeContents();
-    method public int getCookie();
-    method public int getSequence();
-    method public String getSuggestionAt(int);
-    method public int getSuggestionsAttributes();
-    method public int getSuggestionsCount();
-    method public void setCookieAndSequence(int, int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textservice.SuggestionsInfo> CREATOR;
-    field public static final int RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS = 4; // 0x4
-    field public static final int RESULT_ATTR_IN_THE_DICTIONARY = 1; // 0x1
-    field public static final int RESULT_ATTR_LOOKS_LIKE_TYPO = 2; // 0x2
-  }
-
-  public final class TextInfo implements android.os.Parcelable {
-    ctor public TextInfo(String);
-    ctor public TextInfo(String, int, int);
-    ctor public TextInfo(CharSequence, int, int, int, int);
-    ctor public TextInfo(android.os.Parcel);
-    method public int describeContents();
-    method public CharSequence getCharSequence();
-    method public int getCookie();
-    method public int getSequence();
-    method public String getText();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textservice.TextInfo> CREATOR;
-  }
-
-  public final class TextServicesManager {
-    method public android.view.textservice.SpellCheckerSession newSpellCheckerSession(android.os.Bundle, java.util.Locale, android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener, boolean);
-  }
-
-}
-
-package android.webkit {
-
-  public abstract class ClientCertRequest {
-    ctor public ClientCertRequest();
-    method public abstract void cancel();
-    method public abstract String getHost();
-    method @Nullable public abstract String[] getKeyTypes();
-    method public abstract int getPort();
-    method @Nullable public abstract java.security.Principal[] getPrincipals();
-    method public abstract void ignore();
-    method public abstract void proceed(java.security.PrivateKey, java.security.cert.X509Certificate[]);
-  }
-
-  public class ConsoleMessage {
-    ctor public ConsoleMessage(String, String, int, android.webkit.ConsoleMessage.MessageLevel);
-    method public int lineNumber();
-    method public String message();
-    method public android.webkit.ConsoleMessage.MessageLevel messageLevel();
-    method public String sourceId();
-  }
-
-  public enum ConsoleMessage.MessageLevel {
-    enum_constant public static final android.webkit.ConsoleMessage.MessageLevel DEBUG;
-    enum_constant public static final android.webkit.ConsoleMessage.MessageLevel ERROR;
-    enum_constant public static final android.webkit.ConsoleMessage.MessageLevel LOG;
-    enum_constant public static final android.webkit.ConsoleMessage.MessageLevel TIP;
-    enum_constant public static final android.webkit.ConsoleMessage.MessageLevel WARNING;
-  }
-
-  public abstract class CookieManager {
-    ctor @Deprecated public CookieManager();
-    method public abstract boolean acceptCookie();
-    method public abstract boolean acceptThirdPartyCookies(android.webkit.WebView);
-    method public static boolean allowFileSchemeCookies();
-    method public abstract void flush();
-    method public abstract String getCookie(String);
-    method public static android.webkit.CookieManager getInstance();
-    method public abstract boolean hasCookies();
-    method @Deprecated public abstract void removeAllCookie();
-    method public abstract void removeAllCookies(@Nullable android.webkit.ValueCallback<java.lang.Boolean>);
-    method @Deprecated public abstract void removeExpiredCookie();
-    method @Deprecated public abstract void removeSessionCookie();
-    method public abstract void removeSessionCookies(@Nullable android.webkit.ValueCallback<java.lang.Boolean>);
-    method public abstract void setAcceptCookie(boolean);
-    method @Deprecated public static void setAcceptFileSchemeCookies(boolean);
-    method public abstract void setAcceptThirdPartyCookies(android.webkit.WebView, boolean);
-    method public abstract void setCookie(String, String);
-    method public abstract void setCookie(String, String, @Nullable android.webkit.ValueCallback<java.lang.Boolean>);
-  }
-
-  @Deprecated public final class CookieSyncManager implements java.lang.Runnable {
-    method @Deprecated public static android.webkit.CookieSyncManager createInstance(android.content.Context);
-    method @Deprecated public static android.webkit.CookieSyncManager getInstance();
-    method @Deprecated public void resetSync();
-    method @Deprecated public void run();
-    method @Deprecated public void startSync();
-    method @Deprecated public void stopSync();
-    method @Deprecated public void sync();
-    method @Deprecated protected void syncFromRamToFlash();
-  }
-
-  public class DateSorter {
-    ctor public DateSorter(android.content.Context);
-    method public long getBoundary(int);
-    method public int getIndex(long);
-    method public String getLabel(int);
-    field public static final int DAY_COUNT = 5; // 0x5
-  }
-
-  public interface DownloadListener {
-    method public void onDownloadStart(String, String, String, String, long);
-  }
-
-  public class GeolocationPermissions {
-    method public void allow(String);
-    method public void clear(String);
-    method public void clearAll();
-    method public void getAllowed(String, android.webkit.ValueCallback<java.lang.Boolean>);
-    method public static android.webkit.GeolocationPermissions getInstance();
-    method public void getOrigins(android.webkit.ValueCallback<java.util.Set<java.lang.String>>);
-  }
-
-  public static interface GeolocationPermissions.Callback {
-    method public void invoke(String, boolean, boolean);
-  }
-
-  public class HttpAuthHandler extends android.os.Handler {
-    method public void cancel();
-    method public void proceed(String, String);
-    method public boolean useHttpAuthUsernamePassword();
-  }
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD}) public @interface JavascriptInterface {
-  }
-
-  public class JsPromptResult extends android.webkit.JsResult {
-    method public void confirm(String);
-  }
-
-  public class JsResult {
-    method public final void cancel();
-    method public final void confirm();
-  }
-
-  public class MimeTypeMap {
-    method @Nullable public String getExtensionFromMimeType(String);
-    method public static String getFileExtensionFromUrl(String);
-    method @Nullable public String getMimeTypeFromExtension(String);
-    method public static android.webkit.MimeTypeMap getSingleton();
-    method public boolean hasExtension(String);
-    method public boolean hasMimeType(String);
-  }
-
-  public abstract class PermissionRequest {
-    ctor public PermissionRequest();
-    method public abstract void deny();
-    method public abstract android.net.Uri getOrigin();
-    method public abstract String[] getResources();
-    method public abstract void grant(String[]);
-    field public static final String RESOURCE_AUDIO_CAPTURE = "android.webkit.resource.AUDIO_CAPTURE";
-    field public static final String RESOURCE_MIDI_SYSEX = "android.webkit.resource.MIDI_SYSEX";
-    field public static final String RESOURCE_PROTECTED_MEDIA_ID = "android.webkit.resource.PROTECTED_MEDIA_ID";
-    field public static final String RESOURCE_VIDEO_CAPTURE = "android.webkit.resource.VIDEO_CAPTURE";
-  }
-
-  public interface PluginStub {
-    method public android.view.View getEmbeddedView(int, android.content.Context);
-    method public android.view.View getFullScreenView(int, android.content.Context);
-  }
-
-  public abstract class RenderProcessGoneDetail {
-    ctor @Deprecated public RenderProcessGoneDetail();
-    method public abstract boolean didCrash();
-    method public abstract int rendererPriorityAtExit();
-  }
-
-  public abstract class SafeBrowsingResponse {
-    ctor @Deprecated public SafeBrowsingResponse();
-    method public abstract void backToSafety(boolean);
-    method public abstract void proceed(boolean);
-    method public abstract void showInterstitial(boolean);
-  }
-
-  public class ServiceWorkerClient {
-    ctor public ServiceWorkerClient();
-    method @Nullable public android.webkit.WebResourceResponse shouldInterceptRequest(android.webkit.WebResourceRequest);
-  }
-
-  public abstract class ServiceWorkerController {
-    ctor @Deprecated public ServiceWorkerController();
-    method @NonNull public static android.webkit.ServiceWorkerController getInstance();
-    method @NonNull public abstract android.webkit.ServiceWorkerWebSettings getServiceWorkerWebSettings();
-    method public abstract void setServiceWorkerClient(@Nullable android.webkit.ServiceWorkerClient);
-  }
-
-  public abstract class ServiceWorkerWebSettings {
-    ctor public ServiceWorkerWebSettings();
-    method public abstract boolean getAllowContentAccess();
-    method public abstract boolean getAllowFileAccess();
-    method public abstract boolean getBlockNetworkLoads();
-    method public abstract int getCacheMode();
-    method public abstract void setAllowContentAccess(boolean);
-    method public abstract void setAllowFileAccess(boolean);
-    method public abstract void setBlockNetworkLoads(boolean);
-    method public abstract void setCacheMode(int);
-  }
-
-  public class SslErrorHandler extends android.os.Handler {
-    method public void cancel();
-    method public void proceed();
-  }
-
-  public class TracingConfig {
-    method @NonNull public java.util.List<java.lang.String> getCustomIncludedCategories();
-    method public int getPredefinedCategories();
-    method public int getTracingMode();
-    field public static final int CATEGORIES_ALL = 1; // 0x1
-    field public static final int CATEGORIES_ANDROID_WEBVIEW = 2; // 0x2
-    field public static final int CATEGORIES_FRAME_VIEWER = 64; // 0x40
-    field public static final int CATEGORIES_INPUT_LATENCY = 8; // 0x8
-    field public static final int CATEGORIES_JAVASCRIPT_AND_RENDERING = 32; // 0x20
-    field public static final int CATEGORIES_NONE = 0; // 0x0
-    field public static final int CATEGORIES_RENDERING = 16; // 0x10
-    field public static final int CATEGORIES_WEB_DEVELOPER = 4; // 0x4
-    field public static final int RECORD_CONTINUOUSLY = 1; // 0x1
-    field public static final int RECORD_UNTIL_FULL = 0; // 0x0
-  }
-
-  public static class TracingConfig.Builder {
-    ctor public TracingConfig.Builder();
-    method public android.webkit.TracingConfig.Builder addCategories(int...);
-    method public android.webkit.TracingConfig.Builder addCategories(java.lang.String...);
-    method public android.webkit.TracingConfig.Builder addCategories(java.util.Collection<java.lang.String>);
-    method public android.webkit.TracingConfig build();
-    method public android.webkit.TracingConfig.Builder setTracingMode(int);
-  }
-
-  public abstract class TracingController {
-    ctor @Deprecated public TracingController();
-    method @NonNull public static android.webkit.TracingController getInstance();
-    method public abstract boolean isTracing();
-    method public abstract void start(@NonNull android.webkit.TracingConfig);
-    method public abstract boolean stop(@Nullable java.io.OutputStream, @NonNull java.util.concurrent.Executor);
-  }
-
-  public final class URLUtil {
-    ctor public URLUtil();
-    method public static String composeSearchUrl(String, String, String);
-    method public static byte[] decode(byte[]) throws java.lang.IllegalArgumentException;
-    method public static String guessFileName(String, @Nullable String, @Nullable String);
-    method public static String guessUrl(String);
-    method public static boolean isAboutUrl(String);
-    method public static boolean isAssetUrl(String);
-    method public static boolean isContentUrl(String);
-    method @Deprecated public static boolean isCookielessProxyUrl(String);
-    method public static boolean isDataUrl(String);
-    method public static boolean isFileUrl(String);
-    method public static boolean isHttpUrl(String);
-    method public static boolean isHttpsUrl(String);
-    method public static boolean isJavaScriptUrl(String);
-    method public static boolean isNetworkUrl(String);
-    method public static boolean isValidUrl(String);
-    method public static String stripAnchor(String);
-  }
-
-  public interface ValueCallback<T> {
-    method public void onReceiveValue(T);
-  }
-
-  public abstract class WebBackForwardList implements java.lang.Cloneable java.io.Serializable {
-    ctor public WebBackForwardList();
-    method protected abstract android.webkit.WebBackForwardList clone();
-    method public abstract int getCurrentIndex();
-    method @Nullable public abstract android.webkit.WebHistoryItem getCurrentItem();
-    method public abstract android.webkit.WebHistoryItem getItemAtIndex(int);
-    method public abstract int getSize();
-  }
-
-  public class WebChromeClient {
-    ctor public WebChromeClient();
-    method @Nullable public android.graphics.Bitmap getDefaultVideoPoster();
-    method @Nullable public android.view.View getVideoLoadingProgressView();
-    method public void getVisitedHistory(android.webkit.ValueCallback<java.lang.String[]>);
-    method public void onCloseWindow(android.webkit.WebView);
-    method @Deprecated public void onConsoleMessage(String, int, String);
-    method public boolean onConsoleMessage(android.webkit.ConsoleMessage);
-    method public boolean onCreateWindow(android.webkit.WebView, boolean, boolean, android.os.Message);
-    method @Deprecated public void onExceededDatabaseQuota(String, String, long, long, long, android.webkit.WebStorage.QuotaUpdater);
-    method public void onGeolocationPermissionsHidePrompt();
-    method public void onGeolocationPermissionsShowPrompt(String, android.webkit.GeolocationPermissions.Callback);
-    method public void onHideCustomView();
-    method public boolean onJsAlert(android.webkit.WebView, String, String, android.webkit.JsResult);
-    method public boolean onJsBeforeUnload(android.webkit.WebView, String, String, android.webkit.JsResult);
-    method public boolean onJsConfirm(android.webkit.WebView, String, String, android.webkit.JsResult);
-    method public boolean onJsPrompt(android.webkit.WebView, String, String, String, android.webkit.JsPromptResult);
-    method @Deprecated public boolean onJsTimeout();
-    method public void onPermissionRequest(android.webkit.PermissionRequest);
-    method public void onPermissionRequestCanceled(android.webkit.PermissionRequest);
-    method public void onProgressChanged(android.webkit.WebView, int);
-    method @Deprecated public void onReachedMaxAppCacheSize(long, long, android.webkit.WebStorage.QuotaUpdater);
-    method public void onReceivedIcon(android.webkit.WebView, android.graphics.Bitmap);
-    method public void onReceivedTitle(android.webkit.WebView, String);
-    method public void onReceivedTouchIconUrl(android.webkit.WebView, String, boolean);
-    method public void onRequestFocus(android.webkit.WebView);
-    method public void onShowCustomView(android.view.View, android.webkit.WebChromeClient.CustomViewCallback);
-    method @Deprecated public void onShowCustomView(android.view.View, int, android.webkit.WebChromeClient.CustomViewCallback);
-    method public boolean onShowFileChooser(android.webkit.WebView, android.webkit.ValueCallback<android.net.Uri[]>, android.webkit.WebChromeClient.FileChooserParams);
-  }
-
-  public static interface WebChromeClient.CustomViewCallback {
-    method public void onCustomViewHidden();
-  }
-
-  public abstract static class WebChromeClient.FileChooserParams {
-    ctor public WebChromeClient.FileChooserParams();
-    method public abstract android.content.Intent createIntent();
-    method public abstract String[] getAcceptTypes();
-    method @Nullable public abstract String getFilenameHint();
-    method public abstract int getMode();
-    method @Nullable public abstract CharSequence getTitle();
-    method public abstract boolean isCaptureEnabled();
-    method @Nullable public static android.net.Uri[] parseResult(int, android.content.Intent);
-    field public static final int MODE_OPEN = 0; // 0x0
-    field public static final int MODE_OPEN_MULTIPLE = 1; // 0x1
-    field public static final int MODE_SAVE = 3; // 0x3
-  }
-
-  public abstract class WebHistoryItem implements java.lang.Cloneable {
-    ctor public WebHistoryItem();
-    method protected abstract android.webkit.WebHistoryItem clone();
-    method @Nullable public abstract android.graphics.Bitmap getFavicon();
-    method public abstract String getOriginalUrl();
-    method public abstract String getTitle();
-    method public abstract String getUrl();
-  }
-
-  @Deprecated public abstract class WebIconDatabase {
-    ctor @Deprecated public WebIconDatabase();
-    method @Deprecated public abstract void close();
-    method @Deprecated public static android.webkit.WebIconDatabase getInstance();
-    method @Deprecated public abstract void open(String);
-    method @Deprecated public abstract void releaseIconForPageUrl(String);
-    method @Deprecated public abstract void removeAllIcons();
-    method @Deprecated public abstract void requestIconForPageUrl(String, android.webkit.WebIconDatabase.IconListener);
-    method @Deprecated public abstract void retainIconForPageUrl(String);
-  }
-
-  @Deprecated public static interface WebIconDatabase.IconListener {
-    method @Deprecated public void onReceivedIcon(String, android.graphics.Bitmap);
-  }
-
-  public class WebMessage {
-    ctor public WebMessage(String);
-    ctor public WebMessage(String, android.webkit.WebMessagePort[]);
-    method public String getData();
-    method @Nullable public android.webkit.WebMessagePort[] getPorts();
-  }
-
-  public abstract class WebMessagePort {
-    method public abstract void close();
-    method public abstract void postMessage(android.webkit.WebMessage);
-    method public abstract void setWebMessageCallback(android.webkit.WebMessagePort.WebMessageCallback);
-    method public abstract void setWebMessageCallback(android.webkit.WebMessagePort.WebMessageCallback, android.os.Handler);
-  }
-
-  public abstract static class WebMessagePort.WebMessageCallback {
-    ctor public WebMessagePort.WebMessageCallback();
-    method public void onMessage(android.webkit.WebMessagePort, android.webkit.WebMessage);
-  }
-
-  public abstract class WebResourceError {
-    method public abstract CharSequence getDescription();
-    method public abstract int getErrorCode();
-  }
-
-  public interface WebResourceRequest {
-    method public String getMethod();
-    method public java.util.Map<java.lang.String,java.lang.String> getRequestHeaders();
-    method public android.net.Uri getUrl();
-    method public boolean hasGesture();
-    method public boolean isForMainFrame();
-    method public boolean isRedirect();
-  }
-
-  public class WebResourceResponse {
-    ctor public WebResourceResponse(String, String, java.io.InputStream);
-    ctor public WebResourceResponse(String, String, int, @NonNull String, java.util.Map<java.lang.String,java.lang.String>, java.io.InputStream);
-    method public java.io.InputStream getData();
-    method public String getEncoding();
-    method public String getMimeType();
-    method public String getReasonPhrase();
-    method public java.util.Map<java.lang.String,java.lang.String> getResponseHeaders();
-    method public int getStatusCode();
-    method public void setData(java.io.InputStream);
-    method public void setEncoding(String);
-    method public void setMimeType(String);
-    method public void setResponseHeaders(java.util.Map<java.lang.String,java.lang.String>);
-    method public void setStatusCodeAndReasonPhrase(int, @NonNull String);
-  }
-
-  public abstract class WebSettings {
-    ctor public WebSettings();
-    method @Deprecated public abstract boolean enableSmoothTransition();
-    method public abstract boolean getAllowContentAccess();
-    method public abstract boolean getAllowFileAccess();
-    method public abstract boolean getAllowFileAccessFromFileURLs();
-    method public abstract boolean getAllowUniversalAccessFromFileURLs();
-    method public abstract boolean getBlockNetworkImage();
-    method public abstract boolean getBlockNetworkLoads();
-    method public abstract boolean getBuiltInZoomControls();
-    method public abstract int getCacheMode();
-    method public abstract String getCursiveFontFamily();
-    method public abstract boolean getDatabaseEnabled();
-    method @Deprecated public abstract String getDatabasePath();
-    method public abstract int getDefaultFixedFontSize();
-    method public abstract int getDefaultFontSize();
-    method public abstract String getDefaultTextEncodingName();
-    method public static String getDefaultUserAgent(android.content.Context);
-    method @Deprecated public abstract android.webkit.WebSettings.ZoomDensity getDefaultZoom();
-    method public abstract int getDisabledActionModeMenuItems();
-    method public abstract boolean getDisplayZoomControls();
-    method public abstract boolean getDomStorageEnabled();
-    method public abstract String getFantasyFontFamily();
-    method public abstract String getFixedFontFamily();
-    method public int getForceDark();
-    method public abstract boolean getJavaScriptCanOpenWindowsAutomatically();
-    method public abstract boolean getJavaScriptEnabled();
-    method public abstract android.webkit.WebSettings.LayoutAlgorithm getLayoutAlgorithm();
-    method @Deprecated public abstract boolean getLightTouchEnabled();
-    method public abstract boolean getLoadWithOverviewMode();
-    method public abstract boolean getLoadsImagesAutomatically();
-    method public abstract boolean getMediaPlaybackRequiresUserGesture();
-    method public abstract int getMinimumFontSize();
-    method public abstract int getMinimumLogicalFontSize();
-    method public abstract int getMixedContentMode();
-    method public abstract boolean getOffscreenPreRaster();
-    method @Deprecated public abstract android.webkit.WebSettings.PluginState getPluginState();
-    method public abstract boolean getSafeBrowsingEnabled();
-    method public abstract String getSansSerifFontFamily();
-    method @Deprecated public abstract boolean getSaveFormData();
-    method @Deprecated public abstract boolean getSavePassword();
-    method public abstract String getSerifFontFamily();
-    method public abstract String getStandardFontFamily();
-    method @Deprecated public android.webkit.WebSettings.TextSize getTextSize();
-    method public abstract int getTextZoom();
-    method public abstract boolean getUseWideViewPort();
-    method public abstract String getUserAgentString();
-    method public abstract void setAllowContentAccess(boolean);
-    method public abstract void setAllowFileAccess(boolean);
-    method @Deprecated public abstract void setAllowFileAccessFromFileURLs(boolean);
-    method @Deprecated public abstract void setAllowUniversalAccessFromFileURLs(boolean);
-    method @Deprecated public abstract void setAppCacheEnabled(boolean);
-    method @Deprecated public abstract void setAppCacheMaxSize(long);
-    method @Deprecated public abstract void setAppCachePath(String);
-    method public abstract void setBlockNetworkImage(boolean);
-    method public abstract void setBlockNetworkLoads(boolean);
-    method public abstract void setBuiltInZoomControls(boolean);
-    method public abstract void setCacheMode(int);
-    method public abstract void setCursiveFontFamily(String);
-    method public abstract void setDatabaseEnabled(boolean);
-    method @Deprecated public abstract void setDatabasePath(String);
-    method public abstract void setDefaultFixedFontSize(int);
-    method public abstract void setDefaultFontSize(int);
-    method public abstract void setDefaultTextEncodingName(String);
-    method @Deprecated public abstract void setDefaultZoom(android.webkit.WebSettings.ZoomDensity);
-    method public abstract void setDisabledActionModeMenuItems(int);
-    method public abstract void setDisplayZoomControls(boolean);
-    method public abstract void setDomStorageEnabled(boolean);
-    method @Deprecated public abstract void setEnableSmoothTransition(boolean);
-    method public abstract void setFantasyFontFamily(String);
-    method public abstract void setFixedFontFamily(String);
-    method public void setForceDark(int);
-    method @Deprecated public abstract void setGeolocationDatabasePath(String);
-    method public abstract void setGeolocationEnabled(boolean);
-    method public abstract void setJavaScriptCanOpenWindowsAutomatically(boolean);
-    method public abstract void setJavaScriptEnabled(boolean);
-    method public abstract void setLayoutAlgorithm(android.webkit.WebSettings.LayoutAlgorithm);
-    method @Deprecated public abstract void setLightTouchEnabled(boolean);
-    method public abstract void setLoadWithOverviewMode(boolean);
-    method public abstract void setLoadsImagesAutomatically(boolean);
-    method public abstract void setMediaPlaybackRequiresUserGesture(boolean);
-    method public abstract void setMinimumFontSize(int);
-    method public abstract void setMinimumLogicalFontSize(int);
-    method public abstract void setMixedContentMode(int);
-    method public abstract void setNeedInitialFocus(boolean);
-    method public abstract void setOffscreenPreRaster(boolean);
-    method @Deprecated public abstract void setPluginState(android.webkit.WebSettings.PluginState);
-    method @Deprecated public abstract void setRenderPriority(android.webkit.WebSettings.RenderPriority);
-    method public abstract void setSafeBrowsingEnabled(boolean);
-    method public abstract void setSansSerifFontFamily(String);
-    method @Deprecated public abstract void setSaveFormData(boolean);
-    method @Deprecated public abstract void setSavePassword(boolean);
-    method public abstract void setSerifFontFamily(String);
-    method public abstract void setStandardFontFamily(String);
-    method public abstract void setSupportMultipleWindows(boolean);
-    method public abstract void setSupportZoom(boolean);
-    method @Deprecated public void setTextSize(android.webkit.WebSettings.TextSize);
-    method public abstract void setTextZoom(int);
-    method public abstract void setUseWideViewPort(boolean);
-    method public abstract void setUserAgentString(@Nullable String);
-    method public abstract boolean supportMultipleWindows();
-    method public abstract boolean supportZoom();
-    field public static final int FORCE_DARK_AUTO = 1; // 0x1
-    field public static final int FORCE_DARK_OFF = 0; // 0x0
-    field public static final int FORCE_DARK_ON = 2; // 0x2
-    field public static final int LOAD_CACHE_ELSE_NETWORK = 1; // 0x1
-    field public static final int LOAD_CACHE_ONLY = 3; // 0x3
-    field public static final int LOAD_DEFAULT = -1; // 0xffffffff
-    field @Deprecated public static final int LOAD_NORMAL = 0; // 0x0
-    field public static final int LOAD_NO_CACHE = 2; // 0x2
-    field public static final int MENU_ITEM_NONE = 0; // 0x0
-    field public static final int MENU_ITEM_PROCESS_TEXT = 4; // 0x4
-    field public static final int MENU_ITEM_SHARE = 1; // 0x1
-    field public static final int MENU_ITEM_WEB_SEARCH = 2; // 0x2
-    field public static final int MIXED_CONTENT_ALWAYS_ALLOW = 0; // 0x0
-    field public static final int MIXED_CONTENT_COMPATIBILITY_MODE = 2; // 0x2
-    field public static final int MIXED_CONTENT_NEVER_ALLOW = 1; // 0x1
-  }
-
-  public enum WebSettings.LayoutAlgorithm {
-    enum_constant @Deprecated public static final android.webkit.WebSettings.LayoutAlgorithm NARROW_COLUMNS;
-    enum_constant public static final android.webkit.WebSettings.LayoutAlgorithm NORMAL;
-    enum_constant @Deprecated public static final android.webkit.WebSettings.LayoutAlgorithm SINGLE_COLUMN;
-    enum_constant public static final android.webkit.WebSettings.LayoutAlgorithm TEXT_AUTOSIZING;
-  }
-
-  public enum WebSettings.PluginState {
-    enum_constant public static final android.webkit.WebSettings.PluginState OFF;
-    enum_constant public static final android.webkit.WebSettings.PluginState ON;
-    enum_constant public static final android.webkit.WebSettings.PluginState ON_DEMAND;
-  }
-
-  public enum WebSettings.RenderPriority {
-    enum_constant public static final android.webkit.WebSettings.RenderPriority HIGH;
-    enum_constant public static final android.webkit.WebSettings.RenderPriority LOW;
-    enum_constant public static final android.webkit.WebSettings.RenderPriority NORMAL;
-  }
-
-  @Deprecated public enum WebSettings.TextSize {
-    enum_constant @Deprecated public static final android.webkit.WebSettings.TextSize LARGER;
-    enum_constant @Deprecated public static final android.webkit.WebSettings.TextSize LARGEST;
-    enum_constant @Deprecated public static final android.webkit.WebSettings.TextSize NORMAL;
-    enum_constant @Deprecated public static final android.webkit.WebSettings.TextSize SMALLER;
-    enum_constant @Deprecated public static final android.webkit.WebSettings.TextSize SMALLEST;
-  }
-
-  public enum WebSettings.ZoomDensity {
-    enum_constant public static final android.webkit.WebSettings.ZoomDensity CLOSE;
-    enum_constant public static final android.webkit.WebSettings.ZoomDensity FAR;
-    enum_constant public static final android.webkit.WebSettings.ZoomDensity MEDIUM;
-  }
-
-  public class WebStorage {
-    method public void deleteAllData();
-    method public void deleteOrigin(String);
-    method public static android.webkit.WebStorage getInstance();
-    method public void getOrigins(android.webkit.ValueCallback<java.util.Map>);
-    method public void getQuotaForOrigin(String, android.webkit.ValueCallback<java.lang.Long>);
-    method public void getUsageForOrigin(String, android.webkit.ValueCallback<java.lang.Long>);
-    method @Deprecated public void setQuotaForOrigin(String, long);
-  }
-
-  public static class WebStorage.Origin {
-    method public String getOrigin();
-    method public long getQuota();
-    method public long getUsage();
-  }
-
-  @Deprecated public static interface WebStorage.QuotaUpdater {
-    method @Deprecated public void updateQuota(long);
-  }
-
-  public class WebView extends android.widget.AbsoluteLayout implements android.view.ViewGroup.OnHierarchyChangeListener android.view.ViewTreeObserver.OnGlobalFocusChangeListener {
-    ctor public WebView(@NonNull android.content.Context);
-    ctor public WebView(@NonNull android.content.Context, @Nullable android.util.AttributeSet);
-    ctor public WebView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, int);
-    ctor public WebView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, int, int);
-    ctor @Deprecated public WebView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, int, boolean);
-    method public void addJavascriptInterface(@NonNull Object, @NonNull String);
-    method public boolean canGoBack();
-    method public boolean canGoBackOrForward(int);
-    method public boolean canGoForward();
-    method @Deprecated public boolean canZoomIn();
-    method @Deprecated public boolean canZoomOut();
-    method @Deprecated public android.graphics.Picture capturePicture();
-    method public void clearCache(boolean);
-    method public static void clearClientCertPreferences(@Nullable Runnable);
-    method public void clearFormData();
-    method public void clearHistory();
-    method public void clearMatches();
-    method public void clearSslPreferences();
-    method @Deprecated public void clearView();
-    method @NonNull public android.webkit.WebBackForwardList copyBackForwardList();
-    method @Deprecated public android.print.PrintDocumentAdapter createPrintDocumentAdapter();
-    method @NonNull public android.print.PrintDocumentAdapter createPrintDocumentAdapter(@NonNull String);
-    method @NonNull public android.webkit.WebMessagePort[] createWebMessageChannel();
-    method public void destroy();
-    method public static void disableWebView();
-    method public void documentHasImages(@NonNull android.os.Message);
-    method public static void enableSlowWholeDocumentDraw();
-    method public void evaluateJavascript(@NonNull String, @Nullable android.webkit.ValueCallback<java.lang.String>);
-    method @Deprecated @Nullable public static String findAddress(String);
-    method @Deprecated public int findAll(String);
-    method public void findAllAsync(@NonNull String);
-    method public void findNext(boolean);
-    method public void flingScroll(int, int);
-    method @Deprecated public void freeMemory();
-    method @Nullable public android.net.http.SslCertificate getCertificate();
-    method public int getContentHeight();
-    method @Nullable public static android.content.pm.PackageInfo getCurrentWebViewPackage();
-    method @Nullable public android.graphics.Bitmap getFavicon();
-    method @NonNull public android.webkit.WebView.HitTestResult getHitTestResult();
-    method @Deprecated @Nullable public String[] getHttpAuthUsernamePassword(String, String);
-    method @Nullable public String getOriginalUrl();
-    method public int getProgress();
-    method public boolean getRendererPriorityWaivedWhenNotVisible();
-    method public int getRendererRequestedPriority();
-    method @NonNull public static android.net.Uri getSafeBrowsingPrivacyPolicyUrl();
-    method @Deprecated public float getScale();
-    method @NonNull public android.webkit.WebSettings getSettings();
-    method @NonNull public android.view.textclassifier.TextClassifier getTextClassifier();
-    method @Nullable public String getTitle();
-    method @Nullable public String getUrl();
-    method @Nullable public android.webkit.WebChromeClient getWebChromeClient();
-    method @NonNull public static ClassLoader getWebViewClassLoader();
-    method @NonNull public android.webkit.WebViewClient getWebViewClient();
-    method @NonNull public android.os.Looper getWebViewLooper();
-    method @Nullable public android.webkit.WebViewRenderProcess getWebViewRenderProcess();
-    method @Nullable public android.webkit.WebViewRenderProcessClient getWebViewRenderProcessClient();
-    method public void goBack();
-    method public void goBackOrForward(int);
-    method public void goForward();
-    method public void invokeZoomPicker();
-    method public boolean isPrivateBrowsingEnabled();
-    method public void loadData(@NonNull String, @Nullable String, @Nullable String);
-    method public void loadDataWithBaseURL(@Nullable String, @NonNull String, @Nullable String, @Nullable String, @Nullable String);
-    method public void loadUrl(@NonNull String, @NonNull java.util.Map<java.lang.String,java.lang.String>);
-    method public void loadUrl(@NonNull String);
-    method @Deprecated public void onChildViewAdded(android.view.View, android.view.View);
-    method @Deprecated public void onChildViewRemoved(android.view.View, android.view.View);
-    method @Deprecated public void onGlobalFocusChanged(android.view.View, android.view.View);
-    method public void onPause();
-    method public void onResume();
-    method @Deprecated public boolean overlayHorizontalScrollbar();
-    method @Deprecated public boolean overlayVerticalScrollbar();
-    method public boolean pageDown(boolean);
-    method public boolean pageUp(boolean);
-    method public void pauseTimers();
-    method public void postUrl(@NonNull String, @NonNull byte[]);
-    method public void postVisualStateCallback(long, @NonNull android.webkit.WebView.VisualStateCallback);
-    method public void postWebMessage(@NonNull android.webkit.WebMessage, @NonNull android.net.Uri);
-    method public void reload();
-    method public void removeJavascriptInterface(@NonNull String);
-    method public void requestFocusNodeHref(@Nullable android.os.Message);
-    method public void requestImageRef(@NonNull android.os.Message);
-    method @Nullable public android.webkit.WebBackForwardList restoreState(@NonNull android.os.Bundle);
-    method public void resumeTimers();
-    method @Deprecated public void savePassword(String, String, String);
-    method @Nullable public android.webkit.WebBackForwardList saveState(@NonNull android.os.Bundle);
-    method public void saveWebArchive(@NonNull String);
-    method public void saveWebArchive(@NonNull String, boolean, @Nullable android.webkit.ValueCallback<java.lang.String>);
-    method @Deprecated public void setCertificate(android.net.http.SslCertificate);
-    method public static void setDataDirectorySuffix(@NonNull String);
-    method public void setDownloadListener(@Nullable android.webkit.DownloadListener);
-    method public void setFindListener(@Nullable android.webkit.WebView.FindListener);
-    method @Deprecated public void setHorizontalScrollbarOverlay(boolean);
-    method @Deprecated public void setHttpAuthUsernamePassword(String, String, String, String);
-    method public void setInitialScale(int);
-    method @Deprecated public void setMapTrackballToArrowKeys(boolean);
-    method public void setNetworkAvailable(boolean);
-    method @Deprecated public void setPictureListener(android.webkit.WebView.PictureListener);
-    method public void setRendererPriorityPolicy(int, boolean);
-    method public static void setSafeBrowsingWhitelist(@NonNull java.util.List<java.lang.String>, @Nullable android.webkit.ValueCallback<java.lang.Boolean>);
-    method public void setTextClassifier(@Nullable android.view.textclassifier.TextClassifier);
-    method @Deprecated public void setVerticalScrollbarOverlay(boolean);
-    method public void setWebChromeClient(@Nullable android.webkit.WebChromeClient);
-    method public static void setWebContentsDebuggingEnabled(boolean);
-    method public void setWebViewClient(@NonNull android.webkit.WebViewClient);
-    method public void setWebViewRenderProcessClient(@NonNull java.util.concurrent.Executor, @NonNull android.webkit.WebViewRenderProcessClient);
-    method public void setWebViewRenderProcessClient(@Nullable android.webkit.WebViewRenderProcessClient);
-    method @Deprecated public boolean shouldDelayChildPressedState();
-    method @Deprecated public boolean showFindDialog(@Nullable String, boolean);
-    method public static void startSafeBrowsing(@NonNull android.content.Context, @Nullable android.webkit.ValueCallback<java.lang.Boolean>);
-    method public void stopLoading();
-    method public void zoomBy(float);
-    method public boolean zoomIn();
-    method public boolean zoomOut();
-    field public static final int RENDERER_PRIORITY_BOUND = 1; // 0x1
-    field public static final int RENDERER_PRIORITY_IMPORTANT = 2; // 0x2
-    field public static final int RENDERER_PRIORITY_WAIVED = 0; // 0x0
-    field public static final String SCHEME_GEO = "geo:0,0?q=";
-    field public static final String SCHEME_MAILTO = "mailto:";
-    field public static final String SCHEME_TEL = "tel:";
-  }
-
-  public static interface WebView.FindListener {
-    method public void onFindResultReceived(int, int, boolean);
-  }
-
-  public static class WebView.HitTestResult {
-    method @Nullable public String getExtra();
-    method public int getType();
-    field @Deprecated public static final int ANCHOR_TYPE = 1; // 0x1
-    field public static final int EDIT_TEXT_TYPE = 9; // 0x9
-    field public static final int EMAIL_TYPE = 4; // 0x4
-    field public static final int GEO_TYPE = 3; // 0x3
-    field @Deprecated public static final int IMAGE_ANCHOR_TYPE = 6; // 0x6
-    field public static final int IMAGE_TYPE = 5; // 0x5
-    field public static final int PHONE_TYPE = 2; // 0x2
-    field public static final int SRC_ANCHOR_TYPE = 7; // 0x7
-    field public static final int SRC_IMAGE_ANCHOR_TYPE = 8; // 0x8
-    field public static final int UNKNOWN_TYPE = 0; // 0x0
-  }
-
-  @Deprecated public static interface WebView.PictureListener {
-    method @Deprecated public void onNewPicture(android.webkit.WebView, @Nullable android.graphics.Picture);
-  }
-
-  public abstract static class WebView.VisualStateCallback {
-    ctor public WebView.VisualStateCallback();
-    method public abstract void onComplete(long);
-  }
-
-  public class WebView.WebViewTransport {
-    ctor public WebView.WebViewTransport();
-    method @Nullable public android.webkit.WebView getWebView();
-    method public void setWebView(@Nullable android.webkit.WebView);
-  }
-
-  public class WebViewClient {
-    ctor public WebViewClient();
-    method public void doUpdateVisitedHistory(android.webkit.WebView, String, boolean);
-    method public void onFormResubmission(android.webkit.WebView, android.os.Message, android.os.Message);
-    method public void onLoadResource(android.webkit.WebView, String);
-    method public void onPageCommitVisible(android.webkit.WebView, String);
-    method public void onPageFinished(android.webkit.WebView, String);
-    method public void onPageStarted(android.webkit.WebView, String, android.graphics.Bitmap);
-    method public void onReceivedClientCertRequest(android.webkit.WebView, android.webkit.ClientCertRequest);
-    method @Deprecated public void onReceivedError(android.webkit.WebView, int, String, String);
-    method public void onReceivedError(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceError);
-    method public void onReceivedHttpAuthRequest(android.webkit.WebView, android.webkit.HttpAuthHandler, String, String);
-    method public void onReceivedHttpError(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceResponse);
-    method public void onReceivedLoginRequest(android.webkit.WebView, String, @Nullable String, String);
-    method public void onReceivedSslError(android.webkit.WebView, android.webkit.SslErrorHandler, android.net.http.SslError);
-    method public boolean onRenderProcessGone(android.webkit.WebView, android.webkit.RenderProcessGoneDetail);
-    method public void onSafeBrowsingHit(android.webkit.WebView, android.webkit.WebResourceRequest, int, android.webkit.SafeBrowsingResponse);
-    method public void onScaleChanged(android.webkit.WebView, float, float);
-    method @Deprecated public void onTooManyRedirects(android.webkit.WebView, android.os.Message, android.os.Message);
-    method public void onUnhandledKeyEvent(android.webkit.WebView, android.view.KeyEvent);
-    method @Deprecated @Nullable public android.webkit.WebResourceResponse shouldInterceptRequest(android.webkit.WebView, String);
-    method @Nullable public android.webkit.WebResourceResponse shouldInterceptRequest(android.webkit.WebView, android.webkit.WebResourceRequest);
-    method public boolean shouldOverrideKeyEvent(android.webkit.WebView, android.view.KeyEvent);
-    method @Deprecated public boolean shouldOverrideUrlLoading(android.webkit.WebView, String);
-    method public boolean shouldOverrideUrlLoading(android.webkit.WebView, android.webkit.WebResourceRequest);
-    field public static final int ERROR_AUTHENTICATION = -4; // 0xfffffffc
-    field public static final int ERROR_BAD_URL = -12; // 0xfffffff4
-    field public static final int ERROR_CONNECT = -6; // 0xfffffffa
-    field public static final int ERROR_FAILED_SSL_HANDSHAKE = -11; // 0xfffffff5
-    field public static final int ERROR_FILE = -13; // 0xfffffff3
-    field public static final int ERROR_FILE_NOT_FOUND = -14; // 0xfffffff2
-    field public static final int ERROR_HOST_LOOKUP = -2; // 0xfffffffe
-    field public static final int ERROR_IO = -7; // 0xfffffff9
-    field public static final int ERROR_PROXY_AUTHENTICATION = -5; // 0xfffffffb
-    field public static final int ERROR_REDIRECT_LOOP = -9; // 0xfffffff7
-    field public static final int ERROR_TIMEOUT = -8; // 0xfffffff8
-    field public static final int ERROR_TOO_MANY_REQUESTS = -15; // 0xfffffff1
-    field public static final int ERROR_UNKNOWN = -1; // 0xffffffff
-    field public static final int ERROR_UNSAFE_RESOURCE = -16; // 0xfffffff0
-    field public static final int ERROR_UNSUPPORTED_AUTH_SCHEME = -3; // 0xfffffffd
-    field public static final int ERROR_UNSUPPORTED_SCHEME = -10; // 0xfffffff6
-    field public static final int SAFE_BROWSING_THREAT_BILLING = 4; // 0x4
-    field public static final int SAFE_BROWSING_THREAT_MALWARE = 1; // 0x1
-    field public static final int SAFE_BROWSING_THREAT_PHISHING = 2; // 0x2
-    field public static final int SAFE_BROWSING_THREAT_UNKNOWN = 0; // 0x0
-    field public static final int SAFE_BROWSING_THREAT_UNWANTED_SOFTWARE = 3; // 0x3
-  }
-
-  public abstract class WebViewDatabase {
-    ctor @Deprecated public WebViewDatabase();
-    method @Deprecated public abstract void clearFormData();
-    method public abstract void clearHttpAuthUsernamePassword();
-    method @Deprecated public abstract void clearUsernamePassword();
-    method @Nullable public abstract String[] getHttpAuthUsernamePassword(String, String);
-    method public static android.webkit.WebViewDatabase getInstance(android.content.Context);
-    method @Deprecated public abstract boolean hasFormData();
-    method public abstract boolean hasHttpAuthUsernamePassword();
-    method @Deprecated public abstract boolean hasUsernamePassword();
-    method public abstract void setHttpAuthUsernamePassword(String, String, String, String);
-  }
-
-  @Deprecated public class WebViewFragment extends android.app.Fragment {
-    ctor @Deprecated public WebViewFragment();
-    method @Deprecated public android.webkit.WebView getWebView();
-  }
-
-  public abstract class WebViewRenderProcess {
-    ctor public WebViewRenderProcess();
-    method public abstract boolean terminate();
-  }
-
-  public abstract class WebViewRenderProcessClient {
-    ctor public WebViewRenderProcessClient();
-    method public abstract void onRenderProcessResponsive(@NonNull android.webkit.WebView, @Nullable android.webkit.WebViewRenderProcess);
-    method public abstract void onRenderProcessUnresponsive(@NonNull android.webkit.WebView, @Nullable android.webkit.WebViewRenderProcess);
-  }
-
-}
-
-package android.widget {
-
-  public abstract class AbsListView extends android.widget.AdapterView<android.widget.ListAdapter> implements android.widget.Filter.FilterListener android.text.TextWatcher android.view.ViewTreeObserver.OnGlobalLayoutListener android.view.ViewTreeObserver.OnTouchModeChangeListener {
-    ctor public AbsListView(android.content.Context);
-    ctor public AbsListView(android.content.Context, android.util.AttributeSet);
-    ctor public AbsListView(android.content.Context, android.util.AttributeSet, int);
-    ctor public AbsListView(android.content.Context, android.util.AttributeSet, int, int);
-    method public void afterTextChanged(android.text.Editable);
-    method public void beforeTextChanged(CharSequence, int, int, int);
-    method public boolean canScrollList(int);
-    method public void clearChoices();
-    method public void clearTextFilter();
-    method public void deferNotifyDataSetChanged();
-    method public void fling(int);
-    method public android.widget.AbsListView.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method @ColorInt public int getBottomEdgeEffectColor();
-    method @ColorInt public int getCacheColorHint();
-    method public int getCheckedItemCount();
-    method public long[] getCheckedItemIds();
-    method public int getCheckedItemPosition();
-    method public android.util.SparseBooleanArray getCheckedItemPositions();
-    method public int getChoiceMode();
-    method public int getListPaddingBottom();
-    method public int getListPaddingLeft();
-    method public int getListPaddingRight();
-    method public int getListPaddingTop();
-    method public android.view.View getSelectedView();
-    method public android.graphics.drawable.Drawable getSelector();
-    method public CharSequence getTextFilter();
-    method @ColorInt public int getTopEdgeEffectColor();
-    method public int getTranscriptMode();
-    method protected void handleDataChanged();
-    method public boolean hasTextFilter();
-    method public void invalidateViews();
-    method public boolean isDrawSelectorOnTop();
-    method public boolean isFastScrollAlwaysVisible();
-    method public boolean isFastScrollEnabled();
-    method protected boolean isInFilterMode();
-    method public boolean isItemChecked(int);
-    method public boolean isScrollingCacheEnabled();
-    method public boolean isSmoothScrollbarEnabled();
-    method public boolean isStackFromBottom();
-    method public boolean isTextFilterEnabled();
-    method protected void layoutChildren();
-    method public void onFilterComplete(int);
-    method public void onGlobalLayout();
-    method public void onInitializeAccessibilityNodeInfoForItem(android.view.View, int, android.view.accessibility.AccessibilityNodeInfo);
-    method public boolean onRemoteAdapterConnected();
-    method public void onRemoteAdapterDisconnected();
-    method public void onRestoreInstanceState(android.os.Parcelable);
-    method public android.os.Parcelable onSaveInstanceState();
-    method public void onTextChanged(CharSequence, int, int, int);
-    method public void onTouchModeChanged(boolean);
-    method public int pointToPosition(int, int);
-    method public long pointToRowId(int, int);
-    method public void reclaimViews(java.util.List<android.view.View>);
-    method public void scrollListBy(int);
-    method public void setAdapter(android.widget.ListAdapter);
-    method public void setBottomEdgeEffectColor(@ColorInt int);
-    method public void setCacheColorHint(@ColorInt int);
-    method public void setChoiceMode(int);
-    method public void setDrawSelectorOnTop(boolean);
-    method public void setEdgeEffectColor(@ColorInt int);
-    method public void setFastScrollAlwaysVisible(boolean);
-    method public void setFastScrollEnabled(boolean);
-    method public void setFastScrollStyle(int);
-    method public void setFilterText(String);
-    method public void setFriction(float);
-    method public void setItemChecked(int, boolean);
-    method public void setMultiChoiceModeListener(android.widget.AbsListView.MultiChoiceModeListener);
-    method public void setOnScrollListener(android.widget.AbsListView.OnScrollListener);
-    method public void setRecyclerListener(android.widget.AbsListView.RecyclerListener);
-    method public void setRemoteViewsAdapter(android.content.Intent);
-    method public void setScrollIndicators(android.view.View, android.view.View);
-    method public void setScrollingCacheEnabled(boolean);
-    method public void setSelectionFromTop(int, int);
-    method public void setSelector(@DrawableRes int);
-    method public void setSelector(android.graphics.drawable.Drawable);
-    method public void setSmoothScrollbarEnabled(boolean);
-    method public void setStackFromBottom(boolean);
-    method public void setTextFilterEnabled(boolean);
-    method public void setTopEdgeEffectColor(@ColorInt int);
-    method public void setTranscriptMode(int);
-    method public void setVelocityScale(float);
-    method public void smoothScrollBy(int, int);
-    method public void smoothScrollToPosition(int);
-    method public void smoothScrollToPosition(int, int);
-    method public void smoothScrollToPositionFromTop(int, int, int);
-    method public void smoothScrollToPositionFromTop(int, int);
-    method public boolean verifyDrawable(@NonNull android.graphics.drawable.Drawable);
-    field public static final int CHOICE_MODE_MULTIPLE = 2; // 0x2
-    field public static final int CHOICE_MODE_MULTIPLE_MODAL = 3; // 0x3
-    field public static final int CHOICE_MODE_NONE = 0; // 0x0
-    field public static final int CHOICE_MODE_SINGLE = 1; // 0x1
-    field public static final int TRANSCRIPT_MODE_ALWAYS_SCROLL = 2; // 0x2
-    field public static final int TRANSCRIPT_MODE_DISABLED = 0; // 0x0
-    field public static final int TRANSCRIPT_MODE_NORMAL = 1; // 0x1
-  }
-
-  public static class AbsListView.LayoutParams extends android.view.ViewGroup.LayoutParams {
-    ctor public AbsListView.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public AbsListView.LayoutParams(int, int);
-    ctor public AbsListView.LayoutParams(int, int, int);
-    ctor public AbsListView.LayoutParams(android.view.ViewGroup.LayoutParams);
-  }
-
-  public static interface AbsListView.MultiChoiceModeListener extends android.view.ActionMode.Callback {
-    method public void onItemCheckedStateChanged(android.view.ActionMode, int, long, boolean);
-  }
-
-  public static interface AbsListView.OnScrollListener {
-    method public void onScroll(android.widget.AbsListView, int, int, int);
-    method public void onScrollStateChanged(android.widget.AbsListView, int);
-    field public static final int SCROLL_STATE_FLING = 2; // 0x2
-    field public static final int SCROLL_STATE_IDLE = 0; // 0x0
-    field public static final int SCROLL_STATE_TOUCH_SCROLL = 1; // 0x1
-  }
-
-  public static interface AbsListView.RecyclerListener {
-    method public void onMovedToScrapHeap(android.view.View);
-  }
-
-  public static interface AbsListView.SelectionBoundsAdjuster {
-    method public void adjustListItemSelectionBounds(android.graphics.Rect);
-  }
-
-  public abstract class AbsSeekBar extends android.widget.ProgressBar {
-    ctor public AbsSeekBar(android.content.Context);
-    ctor public AbsSeekBar(android.content.Context, android.util.AttributeSet);
-    ctor public AbsSeekBar(android.content.Context, android.util.AttributeSet, int);
-    ctor public AbsSeekBar(android.content.Context, android.util.AttributeSet, int, int);
-    method public int getKeyProgressIncrement();
-    method public boolean getSplitTrack();
-    method public android.graphics.drawable.Drawable getThumb();
-    method public int getThumbOffset();
-    method @Nullable public android.graphics.BlendMode getThumbTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getThumbTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getThumbTintMode();
-    method public android.graphics.drawable.Drawable getTickMark();
-    method @Nullable public android.graphics.BlendMode getTickMarkTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getTickMarkTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getTickMarkTintMode();
-    method public void setKeyProgressIncrement(int);
-    method public void setSplitTrack(boolean);
-    method public void setThumb(android.graphics.drawable.Drawable);
-    method public void setThumbOffset(int);
-    method public void setThumbTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setThumbTintList(@Nullable android.content.res.ColorStateList);
-    method public void setThumbTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public void setTickMark(android.graphics.drawable.Drawable);
-    method public void setTickMarkTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setTickMarkTintList(@Nullable android.content.res.ColorStateList);
-    method public void setTickMarkTintMode(@Nullable android.graphics.PorterDuff.Mode);
-  }
-
-  public abstract class AbsSpinner extends android.widget.AdapterView<android.widget.SpinnerAdapter> {
-    ctor public AbsSpinner(android.content.Context);
-    ctor public AbsSpinner(android.content.Context, android.util.AttributeSet);
-    ctor public AbsSpinner(android.content.Context, android.util.AttributeSet, int);
-    ctor public AbsSpinner(android.content.Context, android.util.AttributeSet, int, int);
-    method public android.widget.SpinnerAdapter getAdapter();
-    method public android.view.View getSelectedView();
-    method public void onRestoreInstanceState(android.os.Parcelable);
-    method public android.os.Parcelable onSaveInstanceState();
-    method public int pointToPosition(int, int);
-    method public void setAdapter(android.widget.SpinnerAdapter);
-    method public void setSelection(int, boolean);
-    method public void setSelection(int);
-  }
-
-  @Deprecated @android.widget.RemoteViews.RemoteView public class AbsoluteLayout extends android.view.ViewGroup {
-    ctor @Deprecated public AbsoluteLayout(android.content.Context);
-    ctor @Deprecated public AbsoluteLayout(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public AbsoluteLayout(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public AbsoluteLayout(android.content.Context, android.util.AttributeSet, int, int);
-  }
-
-  @Deprecated public static class AbsoluteLayout.LayoutParams extends android.view.ViewGroup.LayoutParams {
-    ctor @Deprecated public AbsoluteLayout.LayoutParams(int, int, int, int);
-    ctor @Deprecated public AbsoluteLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public AbsoluteLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
-    method @Deprecated public String debug(String);
-    field @Deprecated public int x;
-    field @Deprecated public int y;
-  }
-
-  public class ActionMenuView extends android.widget.LinearLayout {
-    ctor public ActionMenuView(android.content.Context);
-    ctor public ActionMenuView(android.content.Context, android.util.AttributeSet);
-    method public void dismissPopupMenus();
-    method protected android.widget.ActionMenuView.LayoutParams generateDefaultLayoutParams();
-    method public android.widget.ActionMenuView.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method protected android.widget.ActionMenuView.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams);
-    method public android.view.Menu getMenu();
-    method @Nullable public android.graphics.drawable.Drawable getOverflowIcon();
-    method public int getPopupTheme();
-    method public boolean hideOverflowMenu();
-    method public boolean isOverflowMenuShowing();
-    method public void onConfigurationChanged(android.content.res.Configuration);
-    method public void onDetachedFromWindow();
-    method public void setOnMenuItemClickListener(android.widget.ActionMenuView.OnMenuItemClickListener);
-    method public void setOverflowIcon(@Nullable android.graphics.drawable.Drawable);
-    method public void setPopupTheme(@StyleRes int);
-    method public boolean showOverflowMenu();
-  }
-
-  public static class ActionMenuView.LayoutParams extends android.widget.LinearLayout.LayoutParams {
-    ctor public ActionMenuView.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public ActionMenuView.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public ActionMenuView.LayoutParams(android.widget.ActionMenuView.LayoutParams);
-    ctor public ActionMenuView.LayoutParams(int, int);
-  }
-
-  public static interface ActionMenuView.OnMenuItemClickListener {
-    method public boolean onMenuItemClick(android.view.MenuItem);
-  }
-
-  public interface Adapter {
-    method @Nullable public default CharSequence[] getAutofillOptions();
-    method public int getCount();
-    method public Object getItem(int);
-    method public long getItemId(int);
-    method public int getItemViewType(int);
-    method public android.view.View getView(int, android.view.View, android.view.ViewGroup);
-    method public int getViewTypeCount();
-    method public boolean hasStableIds();
-    method public boolean isEmpty();
-    method public void registerDataSetObserver(android.database.DataSetObserver);
-    method public void unregisterDataSetObserver(android.database.DataSetObserver);
-    field public static final int IGNORE_ITEM_VIEW_TYPE = -1; // 0xffffffff
-    field public static final int NO_SELECTION = -2147483648; // 0x80000000
-  }
-
-  public abstract class AdapterView<T extends android.widget.Adapter> extends android.view.ViewGroup {
-    ctor public AdapterView(android.content.Context);
-    ctor public AdapterView(android.content.Context, android.util.AttributeSet);
-    ctor public AdapterView(android.content.Context, android.util.AttributeSet, int);
-    ctor public AdapterView(android.content.Context, android.util.AttributeSet, int, int);
-    method public abstract T getAdapter();
-    method public int getCount();
-    method public android.view.View getEmptyView();
-    method public int getFirstVisiblePosition();
-    method public Object getItemAtPosition(int);
-    method public long getItemIdAtPosition(int);
-    method public int getLastVisiblePosition();
-    method @Nullable public final android.widget.AdapterView.OnItemClickListener getOnItemClickListener();
-    method public final android.widget.AdapterView.OnItemLongClickListener getOnItemLongClickListener();
-    method @Nullable public final android.widget.AdapterView.OnItemSelectedListener getOnItemSelectedListener();
-    method public int getPositionForView(android.view.View);
-    method public Object getSelectedItem();
-    method public long getSelectedItemId();
-    method public int getSelectedItemPosition();
-    method public abstract android.view.View getSelectedView();
-    method public boolean performItemClick(android.view.View, int, long);
-    method public abstract void setAdapter(T);
-    method public void setEmptyView(android.view.View);
-    method public void setOnItemClickListener(@Nullable android.widget.AdapterView.OnItemClickListener);
-    method public void setOnItemLongClickListener(android.widget.AdapterView.OnItemLongClickListener);
-    method public void setOnItemSelectedListener(@Nullable android.widget.AdapterView.OnItemSelectedListener);
-    method public abstract void setSelection(int);
-    field public static final int INVALID_POSITION = -1; // 0xffffffff
-    field public static final long INVALID_ROW_ID = -9223372036854775808L; // 0x8000000000000000L
-    field public static final int ITEM_VIEW_TYPE_HEADER_OR_FOOTER = -2; // 0xfffffffe
-    field public static final int ITEM_VIEW_TYPE_IGNORE = -1; // 0xffffffff
-  }
-
-  public static class AdapterView.AdapterContextMenuInfo implements android.view.ContextMenu.ContextMenuInfo {
-    ctor public AdapterView.AdapterContextMenuInfo(android.view.View, int, long);
-    field public long id;
-    field public int position;
-    field public android.view.View targetView;
-  }
-
-  public static interface AdapterView.OnItemClickListener {
-    method public void onItemClick(android.widget.AdapterView<?>, android.view.View, int, long);
-  }
-
-  public static interface AdapterView.OnItemLongClickListener {
-    method public boolean onItemLongClick(android.widget.AdapterView<?>, android.view.View, int, long);
-  }
-
-  public static interface AdapterView.OnItemSelectedListener {
-    method public void onItemSelected(android.widget.AdapterView<?>, android.view.View, int, long);
-    method public void onNothingSelected(android.widget.AdapterView<?>);
-  }
-
-  public abstract class AdapterViewAnimator extends android.widget.AdapterView<android.widget.Adapter> implements android.widget.Advanceable {
-    ctor public AdapterViewAnimator(android.content.Context);
-    ctor public AdapterViewAnimator(android.content.Context, android.util.AttributeSet);
-    ctor public AdapterViewAnimator(android.content.Context, android.util.AttributeSet, int);
-    ctor public AdapterViewAnimator(android.content.Context, android.util.AttributeSet, int, int);
-    method public void advance();
-    method public void deferNotifyDataSetChanged();
-    method public void fyiWillBeAdvancedByHostKThx();
-    method public android.widget.Adapter getAdapter();
-    method public android.view.View getCurrentView();
-    method public int getDisplayedChild();
-    method public android.animation.ObjectAnimator getInAnimation();
-    method public android.animation.ObjectAnimator getOutAnimation();
-    method public android.view.View getSelectedView();
-    method public boolean onRemoteAdapterConnected();
-    method public void onRemoteAdapterDisconnected();
-    method public void onRestoreInstanceState(android.os.Parcelable);
-    method public android.os.Parcelable onSaveInstanceState();
-    method public void setAdapter(android.widget.Adapter);
-    method public void setAnimateFirstView(boolean);
-    method public void setDisplayedChild(int);
-    method public void setInAnimation(android.animation.ObjectAnimator);
-    method public void setInAnimation(android.content.Context, int);
-    method public void setOutAnimation(android.animation.ObjectAnimator);
-    method public void setOutAnimation(android.content.Context, int);
-    method public void setRemoteViewsAdapter(android.content.Intent);
-    method public void setSelection(int);
-    method public void showNext();
-    method public void showPrevious();
-  }
-
-  @android.widget.RemoteViews.RemoteView public class AdapterViewFlipper extends android.widget.AdapterViewAnimator {
-    ctor public AdapterViewFlipper(android.content.Context);
-    ctor public AdapterViewFlipper(android.content.Context, android.util.AttributeSet);
-    ctor public AdapterViewFlipper(android.content.Context, android.util.AttributeSet, int);
-    ctor public AdapterViewFlipper(android.content.Context, android.util.AttributeSet, int, int);
-    method public int getFlipInterval();
-    method public boolean isAutoStart();
-    method public boolean isFlipping();
-    method public void setAutoStart(boolean);
-    method public void setFlipInterval(int);
-    method public void startFlipping();
-    method public void stopFlipping();
-  }
-
-  public interface Advanceable {
-    method public void advance();
-    method public void fyiWillBeAdvancedByHostKThx();
-  }
-
-  public class AlphabetIndexer extends android.database.DataSetObserver implements android.widget.SectionIndexer {
-    ctor public AlphabetIndexer(android.database.Cursor, int, CharSequence);
-    method protected int compare(String, String);
-    method public int getPositionForSection(int);
-    method public int getSectionForPosition(int);
-    method public Object[] getSections();
-    method public void setCursor(android.database.Cursor);
-    field protected CharSequence mAlphabet;
-    field protected int mColumnIndex;
-    field protected android.database.Cursor mDataCursor;
-  }
-
-  @Deprecated @android.widget.RemoteViews.RemoteView public class AnalogClock extends android.view.View {
-    ctor @Deprecated public AnalogClock(android.content.Context);
-    ctor @Deprecated public AnalogClock(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public AnalogClock(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public AnalogClock(android.content.Context, android.util.AttributeSet, int, int);
-  }
-
-  public class ArrayAdapter<T> extends android.widget.BaseAdapter implements android.widget.Filterable android.widget.ThemedSpinnerAdapter {
-    ctor public ArrayAdapter(@NonNull android.content.Context, @LayoutRes int);
-    ctor public ArrayAdapter(@NonNull android.content.Context, @LayoutRes int, @IdRes int);
-    ctor public ArrayAdapter(@NonNull android.content.Context, @LayoutRes int, @NonNull T[]);
-    ctor public ArrayAdapter(@NonNull android.content.Context, @LayoutRes int, @IdRes int, @NonNull T[]);
-    ctor public ArrayAdapter(@NonNull android.content.Context, @LayoutRes int, @NonNull java.util.List<T>);
-    ctor public ArrayAdapter(@NonNull android.content.Context, @LayoutRes int, @IdRes int, @NonNull java.util.List<T>);
-    method public void add(@Nullable T);
-    method public void addAll(@NonNull java.util.Collection<? extends T>);
-    method public void addAll(T...);
-    method public void clear();
-    method @NonNull public static android.widget.ArrayAdapter<java.lang.CharSequence> createFromResource(@NonNull android.content.Context, @ArrayRes int, @LayoutRes int);
-    method @NonNull public android.content.Context getContext();
-    method public int getCount();
-    method @Nullable public android.content.res.Resources.Theme getDropDownViewTheme();
-    method @NonNull public android.widget.Filter getFilter();
-    method @Nullable public T getItem(int);
-    method public long getItemId(int);
-    method public int getPosition(@Nullable T);
-    method @NonNull public android.view.View getView(int, @Nullable android.view.View, @NonNull android.view.ViewGroup);
-    method public void insert(@Nullable T, int);
-    method public void remove(@Nullable T);
-    method public void setDropDownViewResource(@LayoutRes int);
-    method public void setDropDownViewTheme(@Nullable android.content.res.Resources.Theme);
-    method public void setNotifyOnChange(boolean);
-    method public void sort(@NonNull java.util.Comparator<? super T>);
-  }
-
-  public class AutoCompleteTextView extends android.widget.EditText implements android.widget.Filter.FilterListener {
-    ctor public AutoCompleteTextView(android.content.Context);
-    ctor public AutoCompleteTextView(android.content.Context, android.util.AttributeSet);
-    ctor public AutoCompleteTextView(android.content.Context, android.util.AttributeSet, int);
-    ctor public AutoCompleteTextView(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public AutoCompleteTextView(android.content.Context, android.util.AttributeSet, int, int, android.content.res.Resources.Theme);
-    method public void clearListSelection();
-    method protected CharSequence convertSelectionToString(Object);
-    method public void dismissDropDown();
-    method public boolean enoughToFilter();
-    method public android.widget.ListAdapter getAdapter();
-    method public CharSequence getCompletionHint();
-    method public int getDropDownAnchor();
-    method public android.graphics.drawable.Drawable getDropDownBackground();
-    method public int getDropDownHeight();
-    method public int getDropDownHorizontalOffset();
-    method public int getDropDownVerticalOffset();
-    method public int getDropDownWidth();
-    method protected android.widget.Filter getFilter();
-    method public int getInputMethodMode();
-    method @Deprecated public android.widget.AdapterView.OnItemClickListener getItemClickListener();
-    method @Deprecated public android.widget.AdapterView.OnItemSelectedListener getItemSelectedListener();
-    method public int getListSelection();
-    method public android.widget.AdapterView.OnItemClickListener getOnItemClickListener();
-    method public android.widget.AdapterView.OnItemSelectedListener getOnItemSelectedListener();
-    method public int getThreshold();
-    method public android.widget.AutoCompleteTextView.Validator getValidator();
-    method public boolean isPerformingCompletion();
-    method public boolean isPopupShowing();
-    method public void onFilterComplete(int);
-    method public void performCompletion();
-    method protected void performFiltering(CharSequence, int);
-    method public void performValidation();
-    method public final void refreshAutoCompleteResults();
-    method protected void replaceText(CharSequence);
-    method public <T extends android.widget.ListAdapter & android.widget.Filterable> void setAdapter(T);
-    method public void setCompletionHint(CharSequence);
-    method public void setDropDownAnchor(int);
-    method public void setDropDownBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setDropDownBackgroundResource(@DrawableRes int);
-    method public void setDropDownHeight(int);
-    method public void setDropDownHorizontalOffset(int);
-    method public void setDropDownVerticalOffset(int);
-    method public void setDropDownWidth(int);
-    method public void setInputMethodMode(int);
-    method public void setListSelection(int);
-    method public void setOnDismissListener(android.widget.AutoCompleteTextView.OnDismissListener);
-    method public void setOnItemClickListener(android.widget.AdapterView.OnItemClickListener);
-    method public void setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener);
-    method public void setText(CharSequence, boolean);
-    method public void setThreshold(int);
-    method public void setValidator(android.widget.AutoCompleteTextView.Validator);
-    method public void showDropDown();
-  }
-
-  public static interface AutoCompleteTextView.OnDismissListener {
-    method public void onDismiss();
-  }
-
-  public static interface AutoCompleteTextView.Validator {
-    method public CharSequence fixText(CharSequence);
-    method public boolean isValid(CharSequence);
-  }
-
-  public abstract class BaseAdapter implements android.widget.ListAdapter android.widget.SpinnerAdapter {
-    ctor public BaseAdapter();
-    method public boolean areAllItemsEnabled();
-    method public android.view.View getDropDownView(int, android.view.View, android.view.ViewGroup);
-    method public int getItemViewType(int);
-    method public int getViewTypeCount();
-    method public boolean hasStableIds();
-    method public boolean isEmpty();
-    method public boolean isEnabled(int);
-    method public void notifyDataSetChanged();
-    method public void notifyDataSetInvalidated();
-    method public void registerDataSetObserver(android.database.DataSetObserver);
-    method public void setAutofillOptions(@Nullable java.lang.CharSequence...);
-    method public void unregisterDataSetObserver(android.database.DataSetObserver);
-  }
-
-  public abstract class BaseExpandableListAdapter implements android.widget.ExpandableListAdapter android.widget.HeterogeneousExpandableList {
-    ctor public BaseExpandableListAdapter();
-    method public boolean areAllItemsEnabled();
-    method public int getChildType(int, int);
-    method public int getChildTypeCount();
-    method public long getCombinedChildId(long, long);
-    method public long getCombinedGroupId(long);
-    method public int getGroupType(int);
-    method public int getGroupTypeCount();
-    method public boolean isEmpty();
-    method public void notifyDataSetChanged();
-    method public void notifyDataSetInvalidated();
-    method public void onGroupCollapsed(int);
-    method public void onGroupExpanded(int);
-    method public void registerDataSetObserver(android.database.DataSetObserver);
-    method public void unregisterDataSetObserver(android.database.DataSetObserver);
-  }
-
-  @android.widget.RemoteViews.RemoteView public class Button extends android.widget.TextView {
-    ctor public Button(android.content.Context);
-    ctor public Button(android.content.Context, android.util.AttributeSet);
-    ctor public Button(android.content.Context, android.util.AttributeSet, int);
-    ctor public Button(android.content.Context, android.util.AttributeSet, int, int);
-  }
-
-  public class CalendarView extends android.widget.FrameLayout {
-    ctor public CalendarView(@NonNull android.content.Context);
-    ctor public CalendarView(@NonNull android.content.Context, @Nullable android.util.AttributeSet);
-    ctor public CalendarView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, @AttrRes int);
-    ctor public CalendarView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, @AttrRes int, @StyleRes int);
-    method public long getDate();
-    method @StyleRes public int getDateTextAppearance();
-    method public int getFirstDayOfWeek();
-    method @Deprecated @ColorInt public int getFocusedMonthDateColor();
-    method public long getMaxDate();
-    method public long getMinDate();
-    method @Deprecated public android.graphics.drawable.Drawable getSelectedDateVerticalBar();
-    method @Deprecated @ColorInt public int getSelectedWeekBackgroundColor();
-    method @Deprecated public boolean getShowWeekNumber();
-    method @Deprecated public int getShownWeekCount();
-    method @Deprecated @ColorInt public int getUnfocusedMonthDateColor();
-    method @StyleRes public int getWeekDayTextAppearance();
-    method @Deprecated @ColorInt public int getWeekNumberColor();
-    method @Deprecated @ColorInt public int getWeekSeparatorLineColor();
-    method public void setDate(long);
-    method public void setDate(long, boolean, boolean);
-    method public void setDateTextAppearance(@StyleRes int);
-    method public void setFirstDayOfWeek(int);
-    method @Deprecated public void setFocusedMonthDateColor(@ColorInt int);
-    method public void setMaxDate(long);
-    method public void setMinDate(long);
-    method public void setOnDateChangeListener(android.widget.CalendarView.OnDateChangeListener);
-    method @Deprecated public void setSelectedDateVerticalBar(@DrawableRes int);
-    method @Deprecated public void setSelectedDateVerticalBar(android.graphics.drawable.Drawable);
-    method @Deprecated public void setSelectedWeekBackgroundColor(@ColorInt int);
-    method @Deprecated public void setShowWeekNumber(boolean);
-    method @Deprecated public void setShownWeekCount(int);
-    method @Deprecated public void setUnfocusedMonthDateColor(@ColorInt int);
-    method public void setWeekDayTextAppearance(@StyleRes int);
-    method @Deprecated public void setWeekNumberColor(@ColorInt int);
-    method @Deprecated public void setWeekSeparatorLineColor(@ColorInt int);
-  }
-
-  public static interface CalendarView.OnDateChangeListener {
-    method public void onSelectedDayChange(@NonNull android.widget.CalendarView, int, int, int);
-  }
-
-  public class CheckBox extends android.widget.CompoundButton {
-    ctor public CheckBox(android.content.Context);
-    ctor public CheckBox(android.content.Context, android.util.AttributeSet);
-    ctor public CheckBox(android.content.Context, android.util.AttributeSet, int);
-    ctor public CheckBox(android.content.Context, android.util.AttributeSet, int, int);
-  }
-
-  public interface Checkable {
-    method public boolean isChecked();
-    method public void setChecked(boolean);
-    method public void toggle();
-  }
-
-  public class CheckedTextView extends android.widget.TextView implements android.widget.Checkable {
-    ctor public CheckedTextView(android.content.Context);
-    ctor public CheckedTextView(android.content.Context, android.util.AttributeSet);
-    ctor public CheckedTextView(android.content.Context, android.util.AttributeSet, int);
-    ctor public CheckedTextView(android.content.Context, android.util.AttributeSet, int, int);
-    method public android.graphics.drawable.Drawable getCheckMarkDrawable();
-    method @Nullable public android.graphics.BlendMode getCheckMarkTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getCheckMarkTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getCheckMarkTintMode();
-    method public boolean isChecked();
-    method public void setCheckMarkDrawable(@DrawableRes int);
-    method public void setCheckMarkDrawable(@Nullable android.graphics.drawable.Drawable);
-    method public void setCheckMarkTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setCheckMarkTintList(@Nullable android.content.res.ColorStateList);
-    method public void setCheckMarkTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public void setChecked(boolean);
-    method public void toggle();
-  }
-
-  @android.widget.RemoteViews.RemoteView public class Chronometer extends android.widget.TextView {
-    ctor public Chronometer(android.content.Context);
-    ctor public Chronometer(android.content.Context, android.util.AttributeSet);
-    ctor public Chronometer(android.content.Context, android.util.AttributeSet, int);
-    ctor public Chronometer(android.content.Context, android.util.AttributeSet, int, int);
-    method public long getBase();
-    method public String getFormat();
-    method public android.widget.Chronometer.OnChronometerTickListener getOnChronometerTickListener();
-    method public boolean isCountDown();
-    method public boolean isTheFinalCountDown();
-    method public void setBase(long);
-    method public void setCountDown(boolean);
-    method public void setFormat(String);
-    method public void setOnChronometerTickListener(android.widget.Chronometer.OnChronometerTickListener);
-    method public void start();
-    method public void stop();
-  }
-
-  public static interface Chronometer.OnChronometerTickListener {
-    method public void onChronometerTick(android.widget.Chronometer);
-  }
-
-  public abstract class CompoundButton extends android.widget.Button implements android.widget.Checkable {
-    ctor public CompoundButton(android.content.Context);
-    ctor public CompoundButton(android.content.Context, android.util.AttributeSet);
-    ctor public CompoundButton(android.content.Context, android.util.AttributeSet, int);
-    ctor public CompoundButton(android.content.Context, android.util.AttributeSet, int, int);
-    method @Nullable public android.graphics.drawable.Drawable getButtonDrawable();
-    method @Nullable public android.graphics.BlendMode getButtonTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getButtonTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getButtonTintMode();
-    method public boolean isChecked();
-    method public void setButtonDrawable(@DrawableRes int);
-    method public void setButtonDrawable(@Nullable android.graphics.drawable.Drawable);
-    method public void setButtonTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setButtonTintList(@Nullable android.content.res.ColorStateList);
-    method public void setButtonTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public void setChecked(boolean);
-    method public void setOnCheckedChangeListener(@Nullable android.widget.CompoundButton.OnCheckedChangeListener);
-    method public void toggle();
-  }
-
-  public static interface CompoundButton.OnCheckedChangeListener {
-    method public void onCheckedChanged(android.widget.CompoundButton, boolean);
-  }
-
-  public abstract class CursorAdapter extends android.widget.BaseAdapter implements android.widget.Filterable android.widget.ThemedSpinnerAdapter {
-    ctor @Deprecated public CursorAdapter(android.content.Context, android.database.Cursor);
-    ctor public CursorAdapter(android.content.Context, android.database.Cursor, boolean);
-    ctor public CursorAdapter(android.content.Context, android.database.Cursor, int);
-    method public abstract void bindView(android.view.View, android.content.Context, android.database.Cursor);
-    method public void changeCursor(android.database.Cursor);
-    method public CharSequence convertToString(android.database.Cursor);
-    method public int getCount();
-    method public android.database.Cursor getCursor();
-    method public android.content.res.Resources.Theme getDropDownViewTheme();
-    method public android.widget.Filter getFilter();
-    method public android.widget.FilterQueryProvider getFilterQueryProvider();
-    method public Object getItem(int);
-    method public long getItemId(int);
-    method public android.view.View getView(int, android.view.View, android.view.ViewGroup);
-    method @Deprecated protected void init(android.content.Context, android.database.Cursor, boolean);
-    method public android.view.View newDropDownView(android.content.Context, android.database.Cursor, android.view.ViewGroup);
-    method public abstract android.view.View newView(android.content.Context, android.database.Cursor, android.view.ViewGroup);
-    method protected void onContentChanged();
-    method @WorkerThread public android.database.Cursor runQueryOnBackgroundThread(CharSequence);
-    method public void setDropDownViewTheme(android.content.res.Resources.Theme);
-    method public void setFilterQueryProvider(android.widget.FilterQueryProvider);
-    method public android.database.Cursor swapCursor(android.database.Cursor);
-    field @Deprecated public static final int FLAG_AUTO_REQUERY = 1; // 0x1
-    field public static final int FLAG_REGISTER_CONTENT_OBSERVER = 2; // 0x2
-  }
-
-  public abstract class CursorTreeAdapter extends android.widget.BaseExpandableListAdapter implements android.widget.Filterable {
-    ctor public CursorTreeAdapter(android.database.Cursor, android.content.Context);
-    ctor public CursorTreeAdapter(android.database.Cursor, android.content.Context, boolean);
-    method protected abstract void bindChildView(android.view.View, android.content.Context, android.database.Cursor, boolean);
-    method protected abstract void bindGroupView(android.view.View, android.content.Context, android.database.Cursor, boolean);
-    method public void changeCursor(android.database.Cursor);
-    method public String convertToString(android.database.Cursor);
-    method public android.database.Cursor getChild(int, int);
-    method public long getChildId(int, int);
-    method public android.view.View getChildView(int, int, boolean, android.view.View, android.view.ViewGroup);
-    method public int getChildrenCount(int);
-    method protected abstract android.database.Cursor getChildrenCursor(android.database.Cursor);
-    method public android.database.Cursor getCursor();
-    method public android.widget.Filter getFilter();
-    method public android.widget.FilterQueryProvider getFilterQueryProvider();
-    method public android.database.Cursor getGroup(int);
-    method public int getGroupCount();
-    method public long getGroupId(int);
-    method public android.view.View getGroupView(int, boolean, android.view.View, android.view.ViewGroup);
-    method public boolean hasStableIds();
-    method public boolean isChildSelectable(int, int);
-    method protected abstract android.view.View newChildView(android.content.Context, android.database.Cursor, boolean, android.view.ViewGroup);
-    method protected abstract android.view.View newGroupView(android.content.Context, android.database.Cursor, boolean, android.view.ViewGroup);
-    method public void notifyDataSetChanged(boolean);
-    method public android.database.Cursor runQueryOnBackgroundThread(CharSequence);
-    method public void setChildrenCursor(int, android.database.Cursor);
-    method public void setFilterQueryProvider(android.widget.FilterQueryProvider);
-    method public void setGroupCursor(android.database.Cursor);
-  }
-
-  public class DatePicker extends android.widget.FrameLayout {
-    ctor public DatePicker(android.content.Context);
-    ctor public DatePicker(android.content.Context, android.util.AttributeSet);
-    ctor public DatePicker(android.content.Context, android.util.AttributeSet, int);
-    ctor public DatePicker(android.content.Context, android.util.AttributeSet, int, int);
-    method @Deprecated public android.widget.CalendarView getCalendarView();
-    method @Deprecated public boolean getCalendarViewShown();
-    method public int getDayOfMonth();
-    method public int getFirstDayOfWeek();
-    method public long getMaxDate();
-    method public long getMinDate();
-    method public int getMonth();
-    method @Deprecated public boolean getSpinnersShown();
-    method public int getYear();
-    method public void init(int, int, int, android.widget.DatePicker.OnDateChangedListener);
-    method @Deprecated public void setCalendarViewShown(boolean);
-    method public void setFirstDayOfWeek(int);
-    method public void setMaxDate(long);
-    method public void setMinDate(long);
-    method public void setOnDateChangedListener(android.widget.DatePicker.OnDateChangedListener);
-    method @Deprecated public void setSpinnersShown(boolean);
-    method public void updateDate(int, int, int);
-  }
-
-  public static interface DatePicker.OnDateChangedListener {
-    method public void onDateChanged(android.widget.DatePicker, int, int, int);
-  }
-
-  @Deprecated public class DialerFilter extends android.widget.RelativeLayout {
-    ctor @Deprecated public DialerFilter(android.content.Context);
-    ctor @Deprecated public DialerFilter(android.content.Context, android.util.AttributeSet);
-    method @Deprecated public void append(String);
-    method @Deprecated public void clearText();
-    method @Deprecated public CharSequence getDigits();
-    method @Deprecated public CharSequence getFilterText();
-    method @Deprecated public CharSequence getLetters();
-    method @Deprecated public int getMode();
-    method @Deprecated public boolean isQwertyKeyboard();
-    method @Deprecated protected void onModeChange(int, int);
-    method @Deprecated public void removeFilterWatcher(android.text.TextWatcher);
-    method @Deprecated public void setDigitsWatcher(android.text.TextWatcher);
-    method @Deprecated public void setFilterWatcher(android.text.TextWatcher);
-    method @Deprecated public void setLettersWatcher(android.text.TextWatcher);
-    method @Deprecated public void setMode(int);
-    field @Deprecated public static final int DIGITS_AND_LETTERS = 1; // 0x1
-    field @Deprecated public static final int DIGITS_AND_LETTERS_NO_DIGITS = 2; // 0x2
-    field @Deprecated public static final int DIGITS_AND_LETTERS_NO_LETTERS = 3; // 0x3
-    field @Deprecated public static final int DIGITS_ONLY = 4; // 0x4
-    field @Deprecated public static final int LETTERS_ONLY = 5; // 0x5
-  }
-
-  @Deprecated public class DigitalClock extends android.widget.TextView {
-    ctor @Deprecated public DigitalClock(android.content.Context);
-    ctor @Deprecated public DigitalClock(android.content.Context, android.util.AttributeSet);
-  }
-
-  public class EdgeEffect {
-    ctor public EdgeEffect(android.content.Context);
-    method public boolean draw(android.graphics.Canvas);
-    method public void finish();
-    method @Nullable public android.graphics.BlendMode getBlendMode();
-    method @ColorInt public int getColor();
-    method public int getMaxHeight();
-    method public boolean isFinished();
-    method public void onAbsorb(int);
-    method public void onPull(float);
-    method public void onPull(float, float);
-    method public void onRelease();
-    method public void setBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setColor(@ColorInt int);
-    method public void setSize(int, int);
-    field public static final android.graphics.BlendMode DEFAULT_BLEND_MODE;
-  }
-
-  public class EditText extends android.widget.TextView {
-    ctor public EditText(android.content.Context);
-    ctor public EditText(android.content.Context, android.util.AttributeSet);
-    ctor public EditText(android.content.Context, android.util.AttributeSet, int);
-    ctor public EditText(android.content.Context, android.util.AttributeSet, int, int);
-    method public void extendSelection(int);
-    method public android.text.Editable getText();
-    method public void selectAll();
-    method public void setSelection(int, int);
-    method public void setSelection(int);
-  }
-
-  public interface ExpandableListAdapter {
-    method public boolean areAllItemsEnabled();
-    method public Object getChild(int, int);
-    method public long getChildId(int, int);
-    method public android.view.View getChildView(int, int, boolean, android.view.View, android.view.ViewGroup);
-    method public int getChildrenCount(int);
-    method public long getCombinedChildId(long, long);
-    method public long getCombinedGroupId(long);
-    method public Object getGroup(int);
-    method public int getGroupCount();
-    method public long getGroupId(int);
-    method public android.view.View getGroupView(int, boolean, android.view.View, android.view.ViewGroup);
-    method public boolean hasStableIds();
-    method public boolean isChildSelectable(int, int);
-    method public boolean isEmpty();
-    method public void onGroupCollapsed(int);
-    method public void onGroupExpanded(int);
-    method public void registerDataSetObserver(android.database.DataSetObserver);
-    method public void unregisterDataSetObserver(android.database.DataSetObserver);
-  }
-
-  public class ExpandableListView extends android.widget.ListView {
-    ctor public ExpandableListView(android.content.Context);
-    ctor public ExpandableListView(android.content.Context, android.util.AttributeSet);
-    ctor public ExpandableListView(android.content.Context, android.util.AttributeSet, int);
-    ctor public ExpandableListView(android.content.Context, android.util.AttributeSet, int, int);
-    method public boolean collapseGroup(int);
-    method public boolean expandGroup(int);
-    method public boolean expandGroup(int, boolean);
-    method public android.widget.ExpandableListAdapter getExpandableListAdapter();
-    method public long getExpandableListPosition(int);
-    method public int getFlatListPosition(long);
-    method public static int getPackedPositionChild(long);
-    method public static long getPackedPositionForChild(int, int);
-    method public static long getPackedPositionForGroup(int);
-    method public static int getPackedPositionGroup(long);
-    method public static int getPackedPositionType(long);
-    method public long getSelectedId();
-    method public long getSelectedPosition();
-    method public boolean isGroupExpanded(int);
-    method public void setAdapter(android.widget.ExpandableListAdapter);
-    method public void setChildDivider(android.graphics.drawable.Drawable);
-    method public void setChildIndicator(android.graphics.drawable.Drawable);
-    method public void setChildIndicatorBounds(int, int);
-    method public void setChildIndicatorBoundsRelative(int, int);
-    method public void setGroupIndicator(android.graphics.drawable.Drawable);
-    method public void setIndicatorBounds(int, int);
-    method public void setIndicatorBoundsRelative(int, int);
-    method public void setOnChildClickListener(android.widget.ExpandableListView.OnChildClickListener);
-    method public void setOnGroupClickListener(android.widget.ExpandableListView.OnGroupClickListener);
-    method public void setOnGroupCollapseListener(android.widget.ExpandableListView.OnGroupCollapseListener);
-    method public void setOnGroupExpandListener(android.widget.ExpandableListView.OnGroupExpandListener);
-    method public boolean setSelectedChild(int, int, boolean);
-    method public void setSelectedGroup(int);
-    field public static final int CHILD_INDICATOR_INHERIT = -1; // 0xffffffff
-    field public static final int PACKED_POSITION_TYPE_CHILD = 1; // 0x1
-    field public static final int PACKED_POSITION_TYPE_GROUP = 0; // 0x0
-    field public static final int PACKED_POSITION_TYPE_NULL = 2; // 0x2
-    field public static final long PACKED_POSITION_VALUE_NULL = 4294967295L; // 0xffffffffL
-  }
-
-  public static class ExpandableListView.ExpandableListContextMenuInfo implements android.view.ContextMenu.ContextMenuInfo {
-    ctor public ExpandableListView.ExpandableListContextMenuInfo(android.view.View, long, long);
-    field public long id;
-    field public long packedPosition;
-    field public android.view.View targetView;
-  }
-
-  public static interface ExpandableListView.OnChildClickListener {
-    method public boolean onChildClick(android.widget.ExpandableListView, android.view.View, int, int, long);
-  }
-
-  public static interface ExpandableListView.OnGroupClickListener {
-    method public boolean onGroupClick(android.widget.ExpandableListView, android.view.View, int, long);
-  }
-
-  public static interface ExpandableListView.OnGroupCollapseListener {
-    method public void onGroupCollapse(int);
-  }
-
-  public static interface ExpandableListView.OnGroupExpandListener {
-    method public void onGroupExpand(int);
-  }
-
-  public abstract class Filter {
-    ctor public Filter();
-    method public CharSequence convertResultToString(Object);
-    method public final void filter(CharSequence);
-    method public final void filter(CharSequence, android.widget.Filter.FilterListener);
-    method protected abstract android.widget.Filter.FilterResults performFiltering(CharSequence);
-    method protected abstract void publishResults(CharSequence, android.widget.Filter.FilterResults);
-  }
-
-  public static interface Filter.FilterListener {
-    method public void onFilterComplete(int);
-  }
-
-  protected static class Filter.FilterResults {
-    ctor public Filter.FilterResults();
-    field public int count;
-    field public Object values;
-  }
-
-  public interface FilterQueryProvider {
-    method public android.database.Cursor runQuery(CharSequence);
-  }
-
-  public interface Filterable {
-    method public android.widget.Filter getFilter();
-  }
-
-  @android.widget.RemoteViews.RemoteView public class FrameLayout extends android.view.ViewGroup {
-    ctor public FrameLayout(@NonNull android.content.Context);
-    ctor public FrameLayout(@NonNull android.content.Context, @Nullable android.util.AttributeSet);
-    ctor public FrameLayout(@NonNull android.content.Context, @Nullable android.util.AttributeSet, @AttrRes int);
-    ctor public FrameLayout(@NonNull android.content.Context, @Nullable android.util.AttributeSet, @AttrRes int, @StyleRes int);
-    method protected android.widget.FrameLayout.LayoutParams generateDefaultLayoutParams();
-    method public android.widget.FrameLayout.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method @Deprecated public boolean getConsiderGoneChildrenWhenMeasuring();
-    method public boolean getMeasureAllChildren();
-    method public void setMeasureAllChildren(boolean);
-  }
-
-  public static class FrameLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public FrameLayout.LayoutParams(@NonNull android.content.Context, @Nullable android.util.AttributeSet);
-    ctor public FrameLayout.LayoutParams(int, int);
-    ctor public FrameLayout.LayoutParams(int, int, int);
-    ctor public FrameLayout.LayoutParams(@NonNull android.view.ViewGroup.LayoutParams);
-    ctor public FrameLayout.LayoutParams(@NonNull android.view.ViewGroup.MarginLayoutParams);
-    ctor public FrameLayout.LayoutParams(@NonNull android.widget.FrameLayout.LayoutParams);
-    field public static final int UNSPECIFIED_GRAVITY = -1; // 0xffffffff
-    field public int gravity;
-  }
-
-  @Deprecated public class Gallery extends android.widget.AbsSpinner implements android.view.GestureDetector.OnGestureListener {
-    ctor @Deprecated public Gallery(android.content.Context);
-    ctor @Deprecated public Gallery(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public Gallery(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public Gallery(android.content.Context, android.util.AttributeSet, int, int);
-    method @Deprecated public boolean onDown(android.view.MotionEvent);
-    method @Deprecated public boolean onFling(android.view.MotionEvent, android.view.MotionEvent, float, float);
-    method @Deprecated public void onLongPress(@NonNull android.view.MotionEvent);
-    method @Deprecated public boolean onScroll(android.view.MotionEvent, android.view.MotionEvent, float, float);
-    method @Deprecated public void onShowPress(android.view.MotionEvent);
-    method @Deprecated public boolean onSingleTapUp(android.view.MotionEvent);
-    method @Deprecated public void setAnimationDuration(int);
-    method @Deprecated public void setCallbackDuringFling(boolean);
-    method @Deprecated public void setGravity(int);
-    method @Deprecated public void setSpacing(int);
-    method @Deprecated public void setUnselectedAlpha(float);
-  }
-
-  @Deprecated public static class Gallery.LayoutParams extends android.view.ViewGroup.LayoutParams {
-    ctor @Deprecated public Gallery.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public Gallery.LayoutParams(int, int);
-    ctor @Deprecated public Gallery.LayoutParams(android.view.ViewGroup.LayoutParams);
-  }
-
-  @android.widget.RemoteViews.RemoteView public class GridLayout extends android.view.ViewGroup {
-    ctor public GridLayout(android.content.Context);
-    ctor public GridLayout(android.content.Context, android.util.AttributeSet);
-    ctor public GridLayout(android.content.Context, android.util.AttributeSet, int);
-    ctor public GridLayout(android.content.Context, android.util.AttributeSet, int, int);
-    method protected android.widget.GridLayout.LayoutParams generateDefaultLayoutParams();
-    method public android.widget.GridLayout.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method protected android.widget.GridLayout.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams);
-    method public int getAlignmentMode();
-    method public int getColumnCount();
-    method public int getOrientation();
-    method public int getRowCount();
-    method public boolean getUseDefaultMargins();
-    method public boolean isColumnOrderPreserved();
-    method public boolean isRowOrderPreserved();
-    method public void setAlignmentMode(int);
-    method public void setColumnCount(int);
-    method public void setColumnOrderPreserved(boolean);
-    method public void setOrientation(int);
-    method public void setRowCount(int);
-    method public void setRowOrderPreserved(boolean);
-    method public void setUseDefaultMargins(boolean);
-    method public static android.widget.GridLayout.Spec spec(int, int, android.widget.GridLayout.Alignment, float);
-    method public static android.widget.GridLayout.Spec spec(int, android.widget.GridLayout.Alignment, float);
-    method public static android.widget.GridLayout.Spec spec(int, int, float);
-    method public static android.widget.GridLayout.Spec spec(int, float);
-    method public static android.widget.GridLayout.Spec spec(int, int, android.widget.GridLayout.Alignment);
-    method public static android.widget.GridLayout.Spec spec(int, android.widget.GridLayout.Alignment);
-    method public static android.widget.GridLayout.Spec spec(int, int);
-    method public static android.widget.GridLayout.Spec spec(int);
-    field public static final int ALIGN_BOUNDS = 0; // 0x0
-    field public static final int ALIGN_MARGINS = 1; // 0x1
-    field public static final android.widget.GridLayout.Alignment BASELINE;
-    field public static final android.widget.GridLayout.Alignment BOTTOM;
-    field public static final android.widget.GridLayout.Alignment CENTER;
-    field public static final android.widget.GridLayout.Alignment END;
-    field public static final android.widget.GridLayout.Alignment FILL;
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final android.widget.GridLayout.Alignment LEFT;
-    field public static final android.widget.GridLayout.Alignment RIGHT;
-    field public static final android.widget.GridLayout.Alignment START;
-    field public static final android.widget.GridLayout.Alignment TOP;
-    field public static final int UNDEFINED = -2147483648; // 0x80000000
-    field public static final int VERTICAL = 1; // 0x1
-  }
-
-  public abstract static class GridLayout.Alignment {
-  }
-
-  public static class GridLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public GridLayout.LayoutParams(android.widget.GridLayout.Spec, android.widget.GridLayout.Spec);
-    ctor public GridLayout.LayoutParams();
-    ctor public GridLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public GridLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    ctor public GridLayout.LayoutParams(android.widget.GridLayout.LayoutParams);
-    ctor public GridLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
-    method public void setGravity(int);
-    field public android.widget.GridLayout.Spec columnSpec;
-    field public android.widget.GridLayout.Spec rowSpec;
-  }
-
-  public static class GridLayout.Spec {
-  }
-
-  @android.widget.RemoteViews.RemoteView public class GridView extends android.widget.AbsListView {
-    ctor public GridView(android.content.Context);
-    ctor public GridView(android.content.Context, android.util.AttributeSet);
-    ctor public GridView(android.content.Context, android.util.AttributeSet, int);
-    ctor public GridView(android.content.Context, android.util.AttributeSet, int, int);
-    method public android.widget.ListAdapter getAdapter();
-    method public int getColumnWidth();
-    method public int getGravity();
-    method public int getHorizontalSpacing();
-    method public int getNumColumns();
-    method public int getRequestedColumnWidth();
-    method public int getRequestedHorizontalSpacing();
-    method public int getStretchMode();
-    method public int getVerticalSpacing();
-    method public void setColumnWidth(int);
-    method public void setGravity(int);
-    method public void setHorizontalSpacing(int);
-    method public void setNumColumns(int);
-    method public void setSelection(int);
-    method public void setStretchMode(int);
-    method public void setVerticalSpacing(int);
-    method public void smoothScrollByOffset(int);
-    field public static final int AUTO_FIT = -1; // 0xffffffff
-    field public static final int NO_STRETCH = 0; // 0x0
-    field public static final int STRETCH_COLUMN_WIDTH = 2; // 0x2
-    field public static final int STRETCH_SPACING = 1; // 0x1
-    field public static final int STRETCH_SPACING_UNIFORM = 3; // 0x3
-  }
-
-  public class HeaderViewListAdapter implements android.widget.Filterable android.widget.WrapperListAdapter {
-    ctor public HeaderViewListAdapter(java.util.ArrayList<android.widget.ListView.FixedViewInfo>, java.util.ArrayList<android.widget.ListView.FixedViewInfo>, android.widget.ListAdapter);
-    method public boolean areAllItemsEnabled();
-    method public int getCount();
-    method public android.widget.Filter getFilter();
-    method public int getFootersCount();
-    method public int getHeadersCount();
-    method public Object getItem(int);
-    method public long getItemId(int);
-    method public int getItemViewType(int);
-    method public android.view.View getView(int, android.view.View, android.view.ViewGroup);
-    method public int getViewTypeCount();
-    method public android.widget.ListAdapter getWrappedAdapter();
-    method public boolean hasStableIds();
-    method public boolean isEmpty();
-    method public boolean isEnabled(int);
-    method public void registerDataSetObserver(android.database.DataSetObserver);
-    method public boolean removeFooter(android.view.View);
-    method public boolean removeHeader(android.view.View);
-    method public void unregisterDataSetObserver(android.database.DataSetObserver);
-  }
-
-  public interface HeterogeneousExpandableList {
-    method public int getChildType(int, int);
-    method public int getChildTypeCount();
-    method public int getGroupType(int);
-    method public int getGroupTypeCount();
-  }
-
-  public class HorizontalScrollView extends android.widget.FrameLayout {
-    ctor public HorizontalScrollView(android.content.Context);
-    ctor public HorizontalScrollView(android.content.Context, android.util.AttributeSet);
-    ctor public HorizontalScrollView(android.content.Context, android.util.AttributeSet, int);
-    ctor public HorizontalScrollView(android.content.Context, android.util.AttributeSet, int, int);
-    method public boolean arrowScroll(int);
-    method protected int computeScrollDeltaToGetChildRectOnScreen(android.graphics.Rect);
-    method public boolean executeKeyEvent(android.view.KeyEvent);
-    method public void fling(int);
-    method public boolean fullScroll(int);
-    method @ColorInt public int getLeftEdgeEffectColor();
-    method public int getMaxScrollAmount();
-    method @ColorInt public int getRightEdgeEffectColor();
-    method public boolean isFillViewport();
-    method public boolean isSmoothScrollingEnabled();
-    method public boolean pageScroll(int);
-    method public void setEdgeEffectColor(@ColorInt int);
-    method public void setFillViewport(boolean);
-    method public void setLeftEdgeEffectColor(@ColorInt int);
-    method public void setRightEdgeEffectColor(@ColorInt int);
-    method public void setSmoothScrollingEnabled(boolean);
-    method public final void smoothScrollBy(int, int);
-    method public final void smoothScrollTo(int, int);
-  }
-
-  @android.widget.RemoteViews.RemoteView public class ImageButton extends android.widget.ImageView {
-    ctor public ImageButton(android.content.Context);
-    ctor public ImageButton(android.content.Context, android.util.AttributeSet);
-    ctor public ImageButton(android.content.Context, android.util.AttributeSet, int);
-    ctor public ImageButton(android.content.Context, android.util.AttributeSet, int, int);
-  }
-
-  public class ImageSwitcher extends android.widget.ViewSwitcher {
-    ctor public ImageSwitcher(android.content.Context);
-    ctor public ImageSwitcher(android.content.Context, android.util.AttributeSet);
-    method public void setImageDrawable(android.graphics.drawable.Drawable);
-    method public void setImageResource(@DrawableRes int);
-    method public void setImageURI(android.net.Uri);
-  }
-
-  @android.widget.RemoteViews.RemoteView public class ImageView extends android.view.View {
-    ctor public ImageView(android.content.Context);
-    ctor public ImageView(android.content.Context, @Nullable android.util.AttributeSet);
-    ctor public ImageView(android.content.Context, @Nullable android.util.AttributeSet, int);
-    ctor public ImageView(android.content.Context, @Nullable android.util.AttributeSet, int, int);
-    method public void animateTransform(@Nullable android.graphics.Matrix);
-    method public final void clearColorFilter();
-    method public boolean getAdjustViewBounds();
-    method public boolean getBaselineAlignBottom();
-    method public android.graphics.ColorFilter getColorFilter();
-    method public boolean getCropToPadding();
-    method public android.graphics.drawable.Drawable getDrawable();
-    method public int getImageAlpha();
-    method public android.graphics.Matrix getImageMatrix();
-    method @Nullable public android.graphics.BlendMode getImageTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getImageTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getImageTintMode();
-    method public int getMaxHeight();
-    method public int getMaxWidth();
-    method public android.widget.ImageView.ScaleType getScaleType();
-    method public int[] onCreateDrawableState(int);
-    method public void setAdjustViewBounds(boolean);
-    method @Deprecated public void setAlpha(int);
-    method public void setBaseline(int);
-    method public void setBaselineAlignBottom(boolean);
-    method public final void setColorFilter(int, android.graphics.PorterDuff.Mode);
-    method public final void setColorFilter(int);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void setCropToPadding(boolean);
-    method protected boolean setFrame(int, int, int, int);
-    method public void setImageAlpha(int);
-    method public void setImageBitmap(android.graphics.Bitmap);
-    method public void setImageDrawable(@Nullable android.graphics.drawable.Drawable);
-    method public void setImageIcon(@Nullable android.graphics.drawable.Icon);
-    method public void setImageLevel(int);
-    method public void setImageMatrix(android.graphics.Matrix);
-    method public void setImageResource(@DrawableRes int);
-    method public void setImageState(int[], boolean);
-    method public void setImageTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setImageTintList(@Nullable android.content.res.ColorStateList);
-    method public void setImageTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public void setImageURI(@Nullable android.net.Uri);
-    method public void setMaxHeight(int);
-    method public void setMaxWidth(int);
-    method public void setScaleType(android.widget.ImageView.ScaleType);
-  }
-
-  public enum ImageView.ScaleType {
-    enum_constant public static final android.widget.ImageView.ScaleType CENTER;
-    enum_constant public static final android.widget.ImageView.ScaleType CENTER_CROP;
-    enum_constant public static final android.widget.ImageView.ScaleType CENTER_INSIDE;
-    enum_constant public static final android.widget.ImageView.ScaleType FIT_CENTER;
-    enum_constant public static final android.widget.ImageView.ScaleType FIT_END;
-    enum_constant public static final android.widget.ImageView.ScaleType FIT_START;
-    enum_constant public static final android.widget.ImageView.ScaleType FIT_XY;
-    enum_constant public static final android.widget.ImageView.ScaleType MATRIX;
-  }
-
-  @android.widget.RemoteViews.RemoteView public class LinearLayout extends android.view.ViewGroup {
-    ctor public LinearLayout(android.content.Context);
-    ctor public LinearLayout(android.content.Context, @Nullable android.util.AttributeSet);
-    ctor public LinearLayout(android.content.Context, @Nullable android.util.AttributeSet, int);
-    ctor public LinearLayout(android.content.Context, android.util.AttributeSet, int, int);
-    method protected android.widget.LinearLayout.LayoutParams generateDefaultLayoutParams();
-    method public android.widget.LinearLayout.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method protected android.widget.LinearLayout.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams);
-    method public int getBaselineAlignedChildIndex();
-    method public android.graphics.drawable.Drawable getDividerDrawable();
-    method public int getDividerPadding();
-    method public int getGravity();
-    method public int getOrientation();
-    method public int getShowDividers();
-    method public float getWeightSum();
-    method public boolean isBaselineAligned();
-    method public boolean isMeasureWithLargestChildEnabled();
-    method public void setBaselineAligned(boolean);
-    method public void setBaselineAlignedChildIndex(int);
-    method public void setDividerDrawable(android.graphics.drawable.Drawable);
-    method public void setDividerPadding(int);
-    method public void setGravity(int);
-    method public void setHorizontalGravity(int);
-    method public void setMeasureWithLargestChildEnabled(boolean);
-    method public void setOrientation(int);
-    method public void setShowDividers(int);
-    method public void setVerticalGravity(int);
-    method public void setWeightSum(float);
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int SHOW_DIVIDER_BEGINNING = 1; // 0x1
-    field public static final int SHOW_DIVIDER_END = 4; // 0x4
-    field public static final int SHOW_DIVIDER_MIDDLE = 2; // 0x2
-    field public static final int SHOW_DIVIDER_NONE = 0; // 0x0
-    field public static final int VERTICAL = 1; // 0x1
-  }
-
-  public static class LinearLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public LinearLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public LinearLayout.LayoutParams(int, int);
-    ctor public LinearLayout.LayoutParams(int, int, float);
-    ctor public LinearLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public LinearLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    ctor public LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams);
-    method public String debug(String);
-    field public int gravity;
-    field public float weight;
-  }
-
-  public interface ListAdapter extends android.widget.Adapter {
-    method public boolean areAllItemsEnabled();
-    method public boolean isEnabled(int);
-  }
-
-  public class ListPopupWindow {
-    ctor public ListPopupWindow(@NonNull android.content.Context);
-    ctor public ListPopupWindow(@NonNull android.content.Context, @Nullable android.util.AttributeSet);
-    ctor public ListPopupWindow(@NonNull android.content.Context, @Nullable android.util.AttributeSet, @AttrRes int);
-    ctor public ListPopupWindow(@NonNull android.content.Context, @Nullable android.util.AttributeSet, @AttrRes int, @StyleRes int);
-    method public void clearListSelection();
-    method public android.view.View.OnTouchListener createDragToOpenListener(android.view.View);
-    method public void dismiss();
-    method @Nullable public android.view.View getAnchorView();
-    method @StyleRes public int getAnimationStyle();
-    method @Nullable public android.graphics.drawable.Drawable getBackground();
-    method @Nullable public android.graphics.Rect getEpicenterBounds();
-    method public int getHeight();
-    method public int getHorizontalOffset();
-    method public int getInputMethodMode();
-    method @Nullable public android.widget.ListView getListView();
-    method public int getPromptPosition();
-    method @Nullable public Object getSelectedItem();
-    method public long getSelectedItemId();
-    method public int getSelectedItemPosition();
-    method @Nullable public android.view.View getSelectedView();
-    method public int getSoftInputMode();
-    method public int getVerticalOffset();
-    method public int getWidth();
-    method public boolean isInputMethodNotNeeded();
-    method public boolean isModal();
-    method public boolean isShowing();
-    method public boolean onKeyDown(int, @NonNull android.view.KeyEvent);
-    method public boolean onKeyPreIme(int, @NonNull android.view.KeyEvent);
-    method public boolean onKeyUp(int, @NonNull android.view.KeyEvent);
-    method public boolean performItemClick(int);
-    method public void postShow();
-    method public void setAdapter(@Nullable android.widget.ListAdapter);
-    method public void setAnchorView(@Nullable android.view.View);
-    method public void setAnimationStyle(@StyleRes int);
-    method public void setBackgroundDrawable(@Nullable android.graphics.drawable.Drawable);
-    method public void setContentWidth(int);
-    method public void setDropDownGravity(int);
-    method public void setEpicenterBounds(@Nullable android.graphics.Rect);
-    method public void setHeight(int);
-    method public void setHorizontalOffset(int);
-    method public void setInputMethodMode(int);
-    method public void setListSelector(android.graphics.drawable.Drawable);
-    method public void setModal(boolean);
-    method public void setOnDismissListener(@Nullable android.widget.PopupWindow.OnDismissListener);
-    method public void setOnItemClickListener(@Nullable android.widget.AdapterView.OnItemClickListener);
-    method public void setOnItemSelectedListener(@Nullable android.widget.AdapterView.OnItemSelectedListener);
-    method public void setPromptPosition(int);
-    method public void setPromptView(@Nullable android.view.View);
-    method public void setSelection(int);
-    method public void setSoftInputMode(int);
-    method public void setVerticalOffset(int);
-    method public void setWidth(int);
-    method public void setWindowLayoutType(int);
-    method public void show();
-    field public static final int INPUT_METHOD_FROM_FOCUSABLE = 0; // 0x0
-    field public static final int INPUT_METHOD_NEEDED = 1; // 0x1
-    field public static final int INPUT_METHOD_NOT_NEEDED = 2; // 0x2
-    field public static final int MATCH_PARENT = -1; // 0xffffffff
-    field public static final int POSITION_PROMPT_ABOVE = 0; // 0x0
-    field public static final int POSITION_PROMPT_BELOW = 1; // 0x1
-    field public static final int WRAP_CONTENT = -2; // 0xfffffffe
-  }
-
-  @android.widget.RemoteViews.RemoteView public class ListView extends android.widget.AbsListView {
-    ctor public ListView(android.content.Context);
-    ctor public ListView(android.content.Context, android.util.AttributeSet);
-    ctor public ListView(android.content.Context, android.util.AttributeSet, int);
-    ctor public ListView(android.content.Context, android.util.AttributeSet, int, int);
-    method public void addFooterView(android.view.View, Object, boolean);
-    method public void addFooterView(android.view.View);
-    method public void addHeaderView(android.view.View, Object, boolean);
-    method public void addHeaderView(android.view.View);
-    method public boolean areFooterDividersEnabled();
-    method public boolean areHeaderDividersEnabled();
-    method public android.widget.ListAdapter getAdapter();
-    method @Deprecated public long[] getCheckItemIds();
-    method @Nullable public android.graphics.drawable.Drawable getDivider();
-    method public int getDividerHeight();
-    method public int getFooterViewsCount();
-    method public int getHeaderViewsCount();
-    method public boolean getItemsCanFocus();
-    method public int getMaxScrollAmount();
-    method public android.graphics.drawable.Drawable getOverscrollFooter();
-    method public android.graphics.drawable.Drawable getOverscrollHeader();
-    method public boolean removeFooterView(android.view.View);
-    method public boolean removeHeaderView(android.view.View);
-    method public void setDivider(@Nullable android.graphics.drawable.Drawable);
-    method public void setDividerHeight(int);
-    method public void setFooterDividersEnabled(boolean);
-    method public void setHeaderDividersEnabled(boolean);
-    method public void setItemsCanFocus(boolean);
-    method public void setOverscrollFooter(android.graphics.drawable.Drawable);
-    method public void setOverscrollHeader(android.graphics.drawable.Drawable);
-    method public void setSelection(int);
-    method public void setSelectionAfterHeaderView();
-    method public void smoothScrollByOffset(int);
-  }
-
-  public class ListView.FixedViewInfo {
-    ctor public ListView.FixedViewInfo();
-    field public Object data;
-    field public boolean isSelectable;
-    field public android.view.View view;
-  }
-
-  @UiThread public final class Magnifier {
-    ctor @Deprecated public Magnifier(@NonNull android.view.View);
-    method public void dismiss();
-    method @Px public float getCornerRadius();
-    method @Px public int getDefaultHorizontalSourceToMagnifierOffset();
-    method @Px public int getDefaultVerticalSourceToMagnifierOffset();
-    method @Px public float getElevation();
-    method @Px public int getHeight();
-    method @Nullable public android.graphics.drawable.Drawable getOverlay();
-    method @Nullable public android.graphics.Point getPosition();
-    method @Px public int getSourceHeight();
-    method @Nullable public android.graphics.Point getSourcePosition();
-    method @Px public int getSourceWidth();
-    method @Px public int getWidth();
-    method public float getZoom();
-    method public boolean isClippingEnabled();
-    method public void setZoom(@FloatRange(from=0.0f) float);
-    method public void show(@FloatRange(from=0) float, @FloatRange(from=0) float);
-    method public void show(@FloatRange(from=0) float, @FloatRange(from=0) float, float, float);
-    method public void update();
-    field public static final int SOURCE_BOUND_MAX_IN_SURFACE = 0; // 0x0
-    field public static final int SOURCE_BOUND_MAX_VISIBLE = 1; // 0x1
-  }
-
-  public static final class Magnifier.Builder {
-    ctor public Magnifier.Builder(@NonNull android.view.View);
-    method @NonNull public android.widget.Magnifier build();
-    method @NonNull public android.widget.Magnifier.Builder setClippingEnabled(boolean);
-    method @NonNull public android.widget.Magnifier.Builder setCornerRadius(@FloatRange(from=0) @Px float);
-    method @NonNull public android.widget.Magnifier.Builder setDefaultSourceToMagnifierOffset(@Px int, @Px int);
-    method @NonNull public android.widget.Magnifier.Builder setElevation(@FloatRange(from=0) @Px float);
-    method @NonNull public android.widget.Magnifier.Builder setInitialZoom(@FloatRange(from=0.0f) float);
-    method @NonNull public android.widget.Magnifier.Builder setOverlay(@Nullable android.graphics.drawable.Drawable);
-    method @NonNull public android.widget.Magnifier.Builder setSize(@IntRange(from=0) @Px int, @IntRange(from=0) @Px int);
-    method @NonNull public android.widget.Magnifier.Builder setSourceBounds(int, int, int, int);
-  }
-
-  public class MediaController extends android.widget.FrameLayout {
-    ctor public MediaController(android.content.Context, android.util.AttributeSet);
-    ctor public MediaController(android.content.Context, boolean);
-    ctor public MediaController(android.content.Context);
-    method public void hide();
-    method public boolean isShowing();
-    method public void onFinishInflate();
-    method public void setAnchorView(android.view.View);
-    method public void setMediaPlayer(android.widget.MediaController.MediaPlayerControl);
-    method public void setPrevNextListeners(android.view.View.OnClickListener, android.view.View.OnClickListener);
-    method public void show();
-    method public void show(int);
-  }
-
-  public static interface MediaController.MediaPlayerControl {
-    method public boolean canPause();
-    method public boolean canSeekBackward();
-    method public boolean canSeekForward();
-    method public int getAudioSessionId();
-    method public int getBufferPercentage();
-    method public int getCurrentPosition();
-    method public int getDuration();
-    method public boolean isPlaying();
-    method public void pause();
-    method public void seekTo(int);
-    method public void start();
-  }
-
-  public class MultiAutoCompleteTextView extends android.widget.AutoCompleteTextView {
-    ctor public MultiAutoCompleteTextView(android.content.Context);
-    ctor public MultiAutoCompleteTextView(android.content.Context, android.util.AttributeSet);
-    ctor public MultiAutoCompleteTextView(android.content.Context, android.util.AttributeSet, int);
-    ctor public MultiAutoCompleteTextView(android.content.Context, android.util.AttributeSet, int, int);
-    method protected void performFiltering(CharSequence, int, int, int);
-    method public void setTokenizer(android.widget.MultiAutoCompleteTextView.Tokenizer);
-  }
-
-  public static class MultiAutoCompleteTextView.CommaTokenizer implements android.widget.MultiAutoCompleteTextView.Tokenizer {
-    ctor public MultiAutoCompleteTextView.CommaTokenizer();
-    method public int findTokenEnd(CharSequence, int);
-    method public int findTokenStart(CharSequence, int);
-    method public CharSequence terminateToken(CharSequence);
-  }
-
-  public static interface MultiAutoCompleteTextView.Tokenizer {
-    method public int findTokenEnd(CharSequence, int);
-    method public int findTokenStart(CharSequence, int);
-    method public CharSequence terminateToken(CharSequence);
-  }
-
-  public class NumberPicker extends android.widget.LinearLayout {
-    ctor public NumberPicker(android.content.Context);
-    ctor public NumberPicker(android.content.Context, android.util.AttributeSet);
-    ctor public NumberPicker(android.content.Context, android.util.AttributeSet, int);
-    ctor public NumberPicker(android.content.Context, android.util.AttributeSet, int, int);
-    method public String[] getDisplayedValues();
-    method public int getMaxValue();
-    method public int getMinValue();
-    method @Px public int getSelectionDividerHeight();
-    method @ColorInt public int getTextColor();
-    method @FloatRange(from=0.0, fromInclusive=false) public float getTextSize();
-    method public int getValue();
-    method public boolean getWrapSelectorWheel();
-    method public void setDisplayedValues(String[]);
-    method public void setFormatter(android.widget.NumberPicker.Formatter);
-    method public void setMaxValue(int);
-    method public void setMinValue(int);
-    method public void setOnLongPressUpdateInterval(long);
-    method public void setOnScrollListener(android.widget.NumberPicker.OnScrollListener);
-    method public void setOnValueChangedListener(android.widget.NumberPicker.OnValueChangeListener);
-    method public void setSelectionDividerHeight(@IntRange(from=0) @Px int);
-    method public void setTextColor(@ColorInt int);
-    method public void setTextSize(@FloatRange(from=0.0, fromInclusive=false) float);
-    method public void setValue(int);
-    method public void setWrapSelectorWheel(boolean);
-  }
-
-  public static interface NumberPicker.Formatter {
-    method public String format(int);
-  }
-
-  public static interface NumberPicker.OnScrollListener {
-    method public void onScrollStateChange(android.widget.NumberPicker, int);
-    field public static final int SCROLL_STATE_FLING = 2; // 0x2
-    field public static final int SCROLL_STATE_IDLE = 0; // 0x0
-    field public static final int SCROLL_STATE_TOUCH_SCROLL = 1; // 0x1
-  }
-
-  public static interface NumberPicker.OnValueChangeListener {
-    method public void onValueChange(android.widget.NumberPicker, int, int);
-  }
-
-  public class OverScroller {
-    ctor public OverScroller(android.content.Context);
-    ctor public OverScroller(android.content.Context, android.view.animation.Interpolator);
-    ctor @Deprecated public OverScroller(android.content.Context, android.view.animation.Interpolator, float, float);
-    ctor @Deprecated public OverScroller(android.content.Context, android.view.animation.Interpolator, float, float, boolean);
-    method public void abortAnimation();
-    method public boolean computeScrollOffset();
-    method public void fling(int, int, int, int, int, int, int, int);
-    method public void fling(int, int, int, int, int, int, int, int, int, int);
-    method public final void forceFinished(boolean);
-    method public float getCurrVelocity();
-    method public final int getCurrX();
-    method public final int getCurrY();
-    method public final int getFinalX();
-    method public final int getFinalY();
-    method public final int getStartX();
-    method public final int getStartY();
-    method public final boolean isFinished();
-    method public boolean isOverScrolled();
-    method public void notifyHorizontalEdgeReached(int, int, int);
-    method public void notifyVerticalEdgeReached(int, int, int);
-    method public final void setFriction(float);
-    method public boolean springBack(int, int, int, int, int, int);
-    method public void startScroll(int, int, int, int);
-    method public void startScroll(int, int, int, int, int);
-  }
-
-  public class PopupMenu {
-    ctor public PopupMenu(android.content.Context, android.view.View);
-    ctor public PopupMenu(android.content.Context, android.view.View, int);
-    ctor public PopupMenu(android.content.Context, android.view.View, int, int, int);
-    method public void dismiss();
-    method public android.view.View.OnTouchListener getDragToOpenListener();
-    method public int getGravity();
-    method public android.view.Menu getMenu();
-    method public android.view.MenuInflater getMenuInflater();
-    method public void inflate(@MenuRes int);
-    method public void setForceShowIcon(boolean);
-    method public void setGravity(int);
-    method public void setOnDismissListener(android.widget.PopupMenu.OnDismissListener);
-    method public void setOnMenuItemClickListener(android.widget.PopupMenu.OnMenuItemClickListener);
-    method public void show();
-  }
-
-  public static interface PopupMenu.OnDismissListener {
-    method public void onDismiss(android.widget.PopupMenu);
-  }
-
-  public static interface PopupMenu.OnMenuItemClickListener {
-    method public boolean onMenuItemClick(android.view.MenuItem);
-  }
-
-  public class PopupWindow {
-    ctor public PopupWindow(android.content.Context);
-    ctor public PopupWindow(android.content.Context, android.util.AttributeSet);
-    ctor public PopupWindow(android.content.Context, android.util.AttributeSet, int);
-    ctor public PopupWindow(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public PopupWindow();
-    ctor public PopupWindow(android.view.View);
-    ctor public PopupWindow(int, int);
-    ctor public PopupWindow(android.view.View, int, int);
-    ctor public PopupWindow(android.view.View, int, int, boolean);
-    method public void dismiss();
-    method public int getAnimationStyle();
-    method public android.graphics.drawable.Drawable getBackground();
-    method public android.view.View getContentView();
-    method public float getElevation();
-    method @Nullable public android.transition.Transition getEnterTransition();
-    method @Nullable public android.graphics.Rect getEpicenterBounds();
-    method @Nullable public android.transition.Transition getExitTransition();
-    method public int getHeight();
-    method public int getInputMethodMode();
-    method public int getMaxAvailableHeight(@NonNull android.view.View);
-    method public int getMaxAvailableHeight(@NonNull android.view.View, int);
-    method public int getMaxAvailableHeight(@NonNull android.view.View, int, boolean);
-    method public boolean getOverlapAnchor();
-    method public int getSoftInputMode();
-    method public int getWidth();
-    method public int getWindowLayoutType();
-    method public boolean isAboveAnchor();
-    method public boolean isAttachedInDecor();
-    method public boolean isClippedToScreen();
-    method public boolean isClippingEnabled();
-    method public boolean isFocusable();
-    method public boolean isLaidOutInScreen();
-    method public boolean isOutsideTouchable();
-    method public boolean isShowing();
-    method public boolean isSplitTouchEnabled();
-    method public boolean isTouchModal();
-    method public boolean isTouchable();
-    method public void setAnimationStyle(int);
-    method public void setAttachedInDecor(boolean);
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setClippingEnabled(boolean);
-    method public void setContentView(android.view.View);
-    method public void setElevation(float);
-    method public void setEnterTransition(@Nullable android.transition.Transition);
-    method public void setEpicenterBounds(@Nullable android.graphics.Rect);
-    method public void setExitTransition(@Nullable android.transition.Transition);
-    method public void setFocusable(boolean);
-    method public void setHeight(int);
-    method public void setIgnoreCheekPress();
-    method public void setInputMethodMode(int);
-    method public void setIsClippedToScreen(boolean);
-    method public void setIsLaidOutInScreen(boolean);
-    method public void setOnDismissListener(android.widget.PopupWindow.OnDismissListener);
-    method public void setOutsideTouchable(boolean);
-    method public void setOverlapAnchor(boolean);
-    method public void setSoftInputMode(int);
-    method public void setSplitTouchEnabled(boolean);
-    method public void setTouchInterceptor(android.view.View.OnTouchListener);
-    method public void setTouchModal(boolean);
-    method public void setTouchable(boolean);
-    method public void setWidth(int);
-    method @Deprecated public void setWindowLayoutMode(int, int);
-    method public void setWindowLayoutType(int);
-    method public void showAsDropDown(android.view.View);
-    method public void showAsDropDown(android.view.View, int, int);
-    method public void showAsDropDown(android.view.View, int, int, int);
-    method public void showAtLocation(android.view.View, int, int, int);
-    method public void update();
-    method public void update(int, int);
-    method public void update(int, int, int, int);
-    method public void update(int, int, int, int, boolean);
-    method public void update(android.view.View, int, int);
-    method public void update(android.view.View, int, int, int, int);
-    field public static final int INPUT_METHOD_FROM_FOCUSABLE = 0; // 0x0
-    field public static final int INPUT_METHOD_NEEDED = 1; // 0x1
-    field public static final int INPUT_METHOD_NOT_NEEDED = 2; // 0x2
-  }
-
-  public static interface PopupWindow.OnDismissListener {
-    method public void onDismiss();
-  }
-
-  @android.widget.RemoteViews.RemoteView public class ProgressBar extends android.view.View {
-    ctor public ProgressBar(android.content.Context);
-    ctor public ProgressBar(android.content.Context, android.util.AttributeSet);
-    ctor public ProgressBar(android.content.Context, android.util.AttributeSet, int);
-    ctor public ProgressBar(android.content.Context, android.util.AttributeSet, int, int);
-    method @Nullable public android.graphics.drawable.Drawable getCurrentDrawable();
-    method public android.graphics.drawable.Drawable getIndeterminateDrawable();
-    method @Nullable public android.graphics.BlendMode getIndeterminateTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getIndeterminateTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getIndeterminateTintMode();
-    method public android.view.animation.Interpolator getInterpolator();
-    method public int getMax();
-    method @Px public int getMaxHeight();
-    method @Px public int getMaxWidth();
-    method public int getMin();
-    method @Px public int getMinHeight();
-    method @Px public int getMinWidth();
-    method public int getProgress();
-    method @Nullable public android.graphics.BlendMode getProgressBackgroundTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getProgressBackgroundTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getProgressBackgroundTintMode();
-    method public android.graphics.drawable.Drawable getProgressDrawable();
-    method @Nullable public android.graphics.BlendMode getProgressTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getProgressTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getProgressTintMode();
-    method public int getSecondaryProgress();
-    method @Nullable public android.graphics.BlendMode getSecondaryProgressTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getSecondaryProgressTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getSecondaryProgressTintMode();
-    method public final void incrementProgressBy(int);
-    method public final void incrementSecondaryProgressBy(int);
-    method public boolean isAnimating();
-    method public boolean isIndeterminate();
-    method public void onRestoreInstanceState(android.os.Parcelable);
-    method public android.os.Parcelable onSaveInstanceState();
-    method public void setIndeterminate(boolean);
-    method public void setIndeterminateDrawable(android.graphics.drawable.Drawable);
-    method public void setIndeterminateDrawableTiled(android.graphics.drawable.Drawable);
-    method public void setIndeterminateTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setIndeterminateTintList(@Nullable android.content.res.ColorStateList);
-    method public void setIndeterminateTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public void setInterpolator(android.content.Context, @InterpolatorRes int);
-    method public void setInterpolator(android.view.animation.Interpolator);
-    method public void setMax(int);
-    method public void setMaxHeight(@Px int);
-    method public void setMaxWidth(@Px int);
-    method public void setMin(int);
-    method public void setMinHeight(@Px int);
-    method public void setMinWidth(@Px int);
-    method public void setProgress(int);
-    method public void setProgress(int, boolean);
-    method public void setProgressBackgroundTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setProgressBackgroundTintList(@Nullable android.content.res.ColorStateList);
-    method public void setProgressBackgroundTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public void setProgressDrawable(android.graphics.drawable.Drawable);
-    method public void setProgressDrawableTiled(android.graphics.drawable.Drawable);
-    method public void setProgressTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setProgressTintList(@Nullable android.content.res.ColorStateList);
-    method public void setProgressTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public void setSecondaryProgress(int);
-    method public void setSecondaryProgressTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setSecondaryProgressTintList(@Nullable android.content.res.ColorStateList);
-    method public void setSecondaryProgressTintMode(@Nullable android.graphics.PorterDuff.Mode);
-  }
-
-  public class QuickContactBadge extends android.widget.ImageView implements android.view.View.OnClickListener {
-    ctor public QuickContactBadge(android.content.Context);
-    ctor public QuickContactBadge(android.content.Context, android.util.AttributeSet);
-    ctor public QuickContactBadge(android.content.Context, android.util.AttributeSet, int);
-    ctor public QuickContactBadge(android.content.Context, android.util.AttributeSet, int, int);
-    method public void assignContactFromEmail(String, boolean);
-    method public void assignContactFromEmail(String, boolean, android.os.Bundle);
-    method public void assignContactFromPhone(String, boolean);
-    method public void assignContactFromPhone(String, boolean, android.os.Bundle);
-    method public void assignContactUri(android.net.Uri);
-    method public void onClick(android.view.View);
-    method public void setExcludeMimes(String[]);
-    method public void setImageToDefault();
-    method public void setMode(int);
-    method public void setOverlay(android.graphics.drawable.Drawable);
-    method public void setPrioritizedMimeType(String);
-    field protected String[] mExcludeMimes;
-  }
-
-  public class RadioButton extends android.widget.CompoundButton {
-    ctor public RadioButton(android.content.Context);
-    ctor public RadioButton(android.content.Context, android.util.AttributeSet);
-    ctor public RadioButton(android.content.Context, android.util.AttributeSet, int);
-    ctor public RadioButton(android.content.Context, android.util.AttributeSet, int, int);
-  }
-
-  public class RadioGroup extends android.widget.LinearLayout {
-    ctor public RadioGroup(android.content.Context);
-    ctor public RadioGroup(android.content.Context, android.util.AttributeSet);
-    method public void check(@IdRes int);
-    method public void clearCheck();
-    method public android.widget.RadioGroup.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method @IdRes public int getCheckedRadioButtonId();
-    method public void setOnCheckedChangeListener(android.widget.RadioGroup.OnCheckedChangeListener);
-  }
-
-  public static class RadioGroup.LayoutParams extends android.widget.LinearLayout.LayoutParams {
-    ctor public RadioGroup.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public RadioGroup.LayoutParams(int, int);
-    ctor public RadioGroup.LayoutParams(int, int, float);
-    ctor public RadioGroup.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public RadioGroup.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-  }
-
-  public static interface RadioGroup.OnCheckedChangeListener {
-    method public void onCheckedChanged(android.widget.RadioGroup, @IdRes int);
-  }
-
-  public class RatingBar extends android.widget.AbsSeekBar {
-    ctor public RatingBar(android.content.Context, android.util.AttributeSet, int);
-    ctor public RatingBar(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public RatingBar(android.content.Context, android.util.AttributeSet);
-    ctor public RatingBar(android.content.Context);
-    method public int getNumStars();
-    method public android.widget.RatingBar.OnRatingBarChangeListener getOnRatingBarChangeListener();
-    method public float getRating();
-    method public float getStepSize();
-    method public boolean isIndicator();
-    method public void setIsIndicator(boolean);
-    method public void setNumStars(int);
-    method public void setOnRatingBarChangeListener(android.widget.RatingBar.OnRatingBarChangeListener);
-    method public void setRating(float);
-    method public void setStepSize(float);
-  }
-
-  public static interface RatingBar.OnRatingBarChangeListener {
-    method public void onRatingChanged(android.widget.RatingBar, float, boolean);
-  }
-
-  @android.widget.RemoteViews.RemoteView public class RelativeLayout extends android.view.ViewGroup {
-    ctor public RelativeLayout(android.content.Context);
-    ctor public RelativeLayout(android.content.Context, android.util.AttributeSet);
-    ctor public RelativeLayout(android.content.Context, android.util.AttributeSet, int);
-    ctor public RelativeLayout(android.content.Context, android.util.AttributeSet, int, int);
-    method public android.widget.RelativeLayout.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method public int getGravity();
-    method public int getIgnoreGravity();
-    method public void setGravity(int);
-    method public void setHorizontalGravity(int);
-    method public void setIgnoreGravity(int);
-    method public void setVerticalGravity(int);
-    field public static final int ABOVE = 2; // 0x2
-    field public static final int ALIGN_BASELINE = 4; // 0x4
-    field public static final int ALIGN_BOTTOM = 8; // 0x8
-    field public static final int ALIGN_END = 19; // 0x13
-    field public static final int ALIGN_LEFT = 5; // 0x5
-    field public static final int ALIGN_PARENT_BOTTOM = 12; // 0xc
-    field public static final int ALIGN_PARENT_END = 21; // 0x15
-    field public static final int ALIGN_PARENT_LEFT = 9; // 0x9
-    field public static final int ALIGN_PARENT_RIGHT = 11; // 0xb
-    field public static final int ALIGN_PARENT_START = 20; // 0x14
-    field public static final int ALIGN_PARENT_TOP = 10; // 0xa
-    field public static final int ALIGN_RIGHT = 7; // 0x7
-    field public static final int ALIGN_START = 18; // 0x12
-    field public static final int ALIGN_TOP = 6; // 0x6
-    field public static final int BELOW = 3; // 0x3
-    field public static final int CENTER_HORIZONTAL = 14; // 0xe
-    field public static final int CENTER_IN_PARENT = 13; // 0xd
-    field public static final int CENTER_VERTICAL = 15; // 0xf
-    field public static final int END_OF = 17; // 0x11
-    field public static final int LEFT_OF = 0; // 0x0
-    field public static final int RIGHT_OF = 1; // 0x1
-    field public static final int START_OF = 16; // 0x10
-    field public static final int TRUE = -1; // 0xffffffff
-  }
-
-  public static class RelativeLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public RelativeLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public RelativeLayout.LayoutParams(int, int);
-    ctor public RelativeLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public RelativeLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    ctor public RelativeLayout.LayoutParams(android.widget.RelativeLayout.LayoutParams);
-    method public void addRule(int);
-    method public void addRule(int, int);
-    method public String debug(String);
-    method public int getRule(int);
-    method public int[] getRules();
-    method public void removeRule(int);
-    field public boolean alignWithParent;
-  }
-
-  public class RemoteViews implements android.view.LayoutInflater.Filter android.os.Parcelable {
-    ctor public RemoteViews(String, int);
-    ctor public RemoteViews(android.widget.RemoteViews, android.widget.RemoteViews);
-    ctor public RemoteViews(android.widget.RemoteViews);
-    ctor public RemoteViews(android.os.Parcel);
-    method public void addView(int, android.widget.RemoteViews);
-    method public android.view.View apply(android.content.Context, android.view.ViewGroup);
-    method @Deprecated public android.widget.RemoteViews clone();
-    method public int describeContents();
-    method public int getLayoutId();
-    method public String getPackage();
-    method @Deprecated public boolean onLoadClass(Class);
-    method public void reapply(android.content.Context, android.view.View);
-    method public void removeAllViews(int);
-    method public void setAccessibilityTraversalAfter(int, int);
-    method public void setAccessibilityTraversalBefore(int, int);
-    method public void setBitmap(int, String, android.graphics.Bitmap);
-    method public void setBoolean(int, String, boolean);
-    method public void setBundle(int, String, android.os.Bundle);
-    method public void setByte(int, String, byte);
-    method public void setChar(int, String, char);
-    method public void setCharSequence(int, String, CharSequence);
-    method public void setChronometer(int, long, String, boolean);
-    method public void setChronometerCountDown(int, boolean);
-    method public void setContentDescription(int, CharSequence);
-    method public void setDisplayedChild(int, int);
-    method public void setDouble(int, String, double);
-    method public void setEmptyView(int, int);
-    method public void setFloat(int, String, float);
-    method public void setIcon(int, String, android.graphics.drawable.Icon);
-    method public void setImageViewBitmap(int, android.graphics.Bitmap);
-    method public void setImageViewIcon(int, android.graphics.drawable.Icon);
-    method public void setImageViewResource(int, int);
-    method public void setImageViewUri(int, android.net.Uri);
-    method public void setInt(int, String, int);
-    method public void setIntent(int, String, android.content.Intent);
-    method public void setLabelFor(int, int);
-    method public void setLightBackgroundLayoutId(@LayoutRes int);
-    method public void setLong(int, String, long);
-    method public void setOnClickFillInIntent(int, android.content.Intent);
-    method public void setOnClickPendingIntent(int, android.app.PendingIntent);
-    method public void setOnClickResponse(int, @NonNull android.widget.RemoteViews.RemoteResponse);
-    method public void setPendingIntentTemplate(int, android.app.PendingIntent);
-    method public void setProgressBar(int, int, int, boolean);
-    method public void setRelativeScrollPosition(int, int);
-    method @Deprecated public void setRemoteAdapter(int, int, android.content.Intent);
-    method public void setRemoteAdapter(int, android.content.Intent);
-    method public void setScrollPosition(int, int);
-    method public void setShort(int, String, short);
-    method public void setString(int, String, String);
-    method public void setTextColor(int, @ColorInt int);
-    method public void setTextViewCompoundDrawables(int, int, int, int, int);
-    method public void setTextViewCompoundDrawablesRelative(int, int, int, int, int);
-    method public void setTextViewText(int, CharSequence);
-    method public void setTextViewTextSize(int, int, float);
-    method public void setUri(int, String, android.net.Uri);
-    method public void setViewPadding(int, int, int, int, int);
-    method public void setViewVisibility(int, int);
-    method public void showNext(int);
-    method public void showPrevious(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.widget.RemoteViews> CREATOR;
-    field public static final String EXTRA_SHARED_ELEMENT_BOUNDS = "android.widget.extra.SHARED_ELEMENT_BOUNDS";
-  }
-
-  public static class RemoteViews.ActionException extends java.lang.RuntimeException {
-    ctor public RemoteViews.ActionException(Exception);
-    ctor public RemoteViews.ActionException(String);
-  }
-
-  public static class RemoteViews.RemoteResponse {
-    ctor public RemoteViews.RemoteResponse();
-    method @NonNull public android.widget.RemoteViews.RemoteResponse addSharedElement(int, @NonNull String);
-    method @NonNull public static android.widget.RemoteViews.RemoteResponse fromFillInIntent(@NonNull android.content.Intent);
-    method @NonNull public static android.widget.RemoteViews.RemoteResponse fromPendingIntent(@NonNull android.app.PendingIntent);
-  }
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE}) public static @interface RemoteViews.RemoteView {
-  }
-
-  public abstract class RemoteViewsService extends android.app.Service {
-    ctor public RemoteViewsService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public abstract android.widget.RemoteViewsService.RemoteViewsFactory onGetViewFactory(android.content.Intent);
-  }
-
-  public static interface RemoteViewsService.RemoteViewsFactory {
-    method public int getCount();
-    method public long getItemId(int);
-    method public android.widget.RemoteViews getLoadingView();
-    method public android.widget.RemoteViews getViewAt(int);
-    method public int getViewTypeCount();
-    method public boolean hasStableIds();
-    method public void onCreate();
-    method public void onDataSetChanged();
-    method public void onDestroy();
-  }
-
-  public abstract class ResourceCursorAdapter extends android.widget.CursorAdapter {
-    ctor @Deprecated public ResourceCursorAdapter(android.content.Context, int, android.database.Cursor);
-    ctor public ResourceCursorAdapter(android.content.Context, int, android.database.Cursor, boolean);
-    ctor public ResourceCursorAdapter(android.content.Context, int, android.database.Cursor, int);
-    method public android.view.View newView(android.content.Context, android.database.Cursor, android.view.ViewGroup);
-    method public void setDropDownViewResource(int);
-    method public void setViewResource(int);
-  }
-
-  public abstract class ResourceCursorTreeAdapter extends android.widget.CursorTreeAdapter {
-    ctor public ResourceCursorTreeAdapter(android.content.Context, android.database.Cursor, int, int, int, int);
-    ctor public ResourceCursorTreeAdapter(android.content.Context, android.database.Cursor, int, int, int);
-    ctor public ResourceCursorTreeAdapter(android.content.Context, android.database.Cursor, int, int);
-    method public android.view.View newChildView(android.content.Context, android.database.Cursor, boolean, android.view.ViewGroup);
-    method public android.view.View newGroupView(android.content.Context, android.database.Cursor, boolean, android.view.ViewGroup);
-  }
-
-  public class ScrollView extends android.widget.FrameLayout {
-    ctor public ScrollView(android.content.Context);
-    ctor public ScrollView(android.content.Context, android.util.AttributeSet);
-    ctor public ScrollView(android.content.Context, android.util.AttributeSet, int);
-    ctor public ScrollView(android.content.Context, android.util.AttributeSet, int, int);
-    method public boolean arrowScroll(int);
-    method protected int computeScrollDeltaToGetChildRectOnScreen(android.graphics.Rect);
-    method public boolean executeKeyEvent(android.view.KeyEvent);
-    method public void fling(int);
-    method public boolean fullScroll(int);
-    method @ColorInt public int getBottomEdgeEffectColor();
-    method public int getMaxScrollAmount();
-    method @ColorInt public int getTopEdgeEffectColor();
-    method public boolean isFillViewport();
-    method public boolean isSmoothScrollingEnabled();
-    method public boolean pageScroll(int);
-    method public void scrollToDescendant(@NonNull android.view.View);
-    method public void setBottomEdgeEffectColor(@ColorInt int);
-    method public void setEdgeEffectColor(@ColorInt int);
-    method public void setFillViewport(boolean);
-    method public void setSmoothScrollingEnabled(boolean);
-    method public void setTopEdgeEffectColor(@ColorInt int);
-    method public final void smoothScrollBy(int, int);
-    method public final void smoothScrollTo(int, int);
-  }
-
-  public class Scroller {
-    ctor public Scroller(android.content.Context);
-    ctor public Scroller(android.content.Context, android.view.animation.Interpolator);
-    ctor public Scroller(android.content.Context, android.view.animation.Interpolator, boolean);
-    method public void abortAnimation();
-    method public boolean computeScrollOffset();
-    method public void extendDuration(int);
-    method public void fling(int, int, int, int, int, int, int, int);
-    method public final void forceFinished(boolean);
-    method public float getCurrVelocity();
-    method public final int getCurrX();
-    method public final int getCurrY();
-    method public final int getDuration();
-    method public final int getFinalX();
-    method public final int getFinalY();
-    method public final int getStartX();
-    method public final int getStartY();
-    method public final boolean isFinished();
-    method public void setFinalX(int);
-    method public void setFinalY(int);
-    method public final void setFriction(float);
-    method public void startScroll(int, int, int, int);
-    method public void startScroll(int, int, int, int, int);
-    method public int timePassed();
-  }
-
-  public class SearchView extends android.widget.LinearLayout implements android.view.CollapsibleActionView {
-    ctor public SearchView(android.content.Context);
-    ctor public SearchView(android.content.Context, android.util.AttributeSet);
-    ctor public SearchView(android.content.Context, android.util.AttributeSet, int);
-    ctor public SearchView(android.content.Context, android.util.AttributeSet, int, int);
-    method public int getImeOptions();
-    method public int getInputType();
-    method public int getMaxWidth();
-    method public CharSequence getQuery();
-    method @Nullable public CharSequence getQueryHint();
-    method public android.widget.CursorAdapter getSuggestionsAdapter();
-    method @Deprecated public boolean isIconfiedByDefault();
-    method public boolean isIconified();
-    method public boolean isIconifiedByDefault();
-    method public boolean isQueryRefinementEnabled();
-    method public boolean isSubmitButtonEnabled();
-    method public void onActionViewCollapsed();
-    method public void onActionViewExpanded();
-    method public void setIconified(boolean);
-    method public void setIconifiedByDefault(boolean);
-    method public void setImeOptions(int);
-    method public void setInputType(int);
-    method public void setMaxWidth(int);
-    method public void setOnCloseListener(android.widget.SearchView.OnCloseListener);
-    method public void setOnQueryTextFocusChangeListener(android.view.View.OnFocusChangeListener);
-    method public void setOnQueryTextListener(android.widget.SearchView.OnQueryTextListener);
-    method public void setOnSearchClickListener(android.view.View.OnClickListener);
-    method public void setOnSuggestionListener(android.widget.SearchView.OnSuggestionListener);
-    method public void setQuery(CharSequence, boolean);
-    method public void setQueryHint(@Nullable CharSequence);
-    method public void setQueryRefinementEnabled(boolean);
-    method public void setSearchableInfo(android.app.SearchableInfo);
-    method public void setSubmitButtonEnabled(boolean);
-    method public void setSuggestionsAdapter(android.widget.CursorAdapter);
-  }
-
-  public static interface SearchView.OnCloseListener {
-    method public boolean onClose();
-  }
-
-  public static interface SearchView.OnQueryTextListener {
-    method public boolean onQueryTextChange(String);
-    method public boolean onQueryTextSubmit(String);
-  }
-
-  public static interface SearchView.OnSuggestionListener {
-    method public boolean onSuggestionClick(int);
-    method public boolean onSuggestionSelect(int);
-  }
-
-  public interface SectionIndexer {
-    method public int getPositionForSection(int);
-    method public int getSectionForPosition(int);
-    method public Object[] getSections();
-  }
-
-  public class SeekBar extends android.widget.AbsSeekBar {
-    ctor public SeekBar(android.content.Context);
-    ctor public SeekBar(android.content.Context, android.util.AttributeSet);
-    ctor public SeekBar(android.content.Context, android.util.AttributeSet, int);
-    ctor public SeekBar(android.content.Context, android.util.AttributeSet, int, int);
-    method public void setOnSeekBarChangeListener(android.widget.SeekBar.OnSeekBarChangeListener);
-  }
-
-  public static interface SeekBar.OnSeekBarChangeListener {
-    method public void onProgressChanged(android.widget.SeekBar, int, boolean);
-    method public void onStartTrackingTouch(android.widget.SeekBar);
-    method public void onStopTrackingTouch(android.widget.SeekBar);
-  }
-
-  public class ShareActionProvider extends android.view.ActionProvider {
-    ctor public ShareActionProvider(android.content.Context);
-    method public android.view.View onCreateActionView();
-    method public void setOnShareTargetSelectedListener(android.widget.ShareActionProvider.OnShareTargetSelectedListener);
-    method public void setShareHistoryFileName(String);
-    method public void setShareIntent(android.content.Intent);
-    field public static final String DEFAULT_SHARE_HISTORY_FILE_NAME = "share_history.xml";
-  }
-
-  public static interface ShareActionProvider.OnShareTargetSelectedListener {
-    method public boolean onShareTargetSelected(android.widget.ShareActionProvider, android.content.Intent);
-  }
-
-  public class SimpleAdapter extends android.widget.BaseAdapter implements android.widget.Filterable android.widget.ThemedSpinnerAdapter {
-    ctor public SimpleAdapter(android.content.Context, java.util.List<? extends java.util.Map<java.lang.String,?>>, @LayoutRes int, String[], @IdRes int[]);
-    method public int getCount();
-    method public android.content.res.Resources.Theme getDropDownViewTheme();
-    method public android.widget.Filter getFilter();
-    method public Object getItem(int);
-    method public long getItemId(int);
-    method public android.view.View getView(int, android.view.View, android.view.ViewGroup);
-    method public android.widget.SimpleAdapter.ViewBinder getViewBinder();
-    method public void setDropDownViewResource(int);
-    method public void setDropDownViewTheme(android.content.res.Resources.Theme);
-    method public void setViewBinder(android.widget.SimpleAdapter.ViewBinder);
-    method public void setViewImage(android.widget.ImageView, int);
-    method public void setViewImage(android.widget.ImageView, String);
-    method public void setViewText(android.widget.TextView, String);
-  }
-
-  public static interface SimpleAdapter.ViewBinder {
-    method public boolean setViewValue(android.view.View, Object, String);
-  }
-
-  public class SimpleCursorAdapter extends android.widget.ResourceCursorAdapter {
-    ctor @Deprecated public SimpleCursorAdapter(android.content.Context, int, android.database.Cursor, String[], int[]);
-    ctor public SimpleCursorAdapter(android.content.Context, int, android.database.Cursor, String[], int[], int);
-    method public void bindView(android.view.View, android.content.Context, android.database.Cursor);
-    method public void changeCursorAndColumns(android.database.Cursor, String[], int[]);
-    method public android.widget.SimpleCursorAdapter.CursorToStringConverter getCursorToStringConverter();
-    method public int getStringConversionColumn();
-    method public android.widget.SimpleCursorAdapter.ViewBinder getViewBinder();
-    method public void setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter);
-    method public void setStringConversionColumn(int);
-    method public void setViewBinder(android.widget.SimpleCursorAdapter.ViewBinder);
-    method public void setViewImage(android.widget.ImageView, String);
-    method public void setViewText(android.widget.TextView, String);
-  }
-
-  public static interface SimpleCursorAdapter.CursorToStringConverter {
-    method public CharSequence convertToString(android.database.Cursor);
-  }
-
-  public static interface SimpleCursorAdapter.ViewBinder {
-    method public boolean setViewValue(android.view.View, android.database.Cursor, int);
-  }
-
-  public abstract class SimpleCursorTreeAdapter extends android.widget.ResourceCursorTreeAdapter {
-    ctor public SimpleCursorTreeAdapter(android.content.Context, android.database.Cursor, int, int, String[], int[], int, int, String[], int[]);
-    ctor public SimpleCursorTreeAdapter(android.content.Context, android.database.Cursor, int, int, String[], int[], int, String[], int[]);
-    ctor public SimpleCursorTreeAdapter(android.content.Context, android.database.Cursor, int, String[], int[], int, String[], int[]);
-    method protected void bindChildView(android.view.View, android.content.Context, android.database.Cursor, boolean);
-    method protected void bindGroupView(android.view.View, android.content.Context, android.database.Cursor, boolean);
-    method public android.widget.SimpleCursorTreeAdapter.ViewBinder getViewBinder();
-    method public void setViewBinder(android.widget.SimpleCursorTreeAdapter.ViewBinder);
-    method protected void setViewImage(android.widget.ImageView, String);
-    method public void setViewText(android.widget.TextView, String);
-  }
-
-  public static interface SimpleCursorTreeAdapter.ViewBinder {
-    method public boolean setViewValue(android.view.View, android.database.Cursor, int);
-  }
-
-  public class SimpleExpandableListAdapter extends android.widget.BaseExpandableListAdapter {
-    ctor public SimpleExpandableListAdapter(android.content.Context, java.util.List<? extends java.util.Map<java.lang.String,?>>, int, String[], int[], java.util.List<? extends java.util.List<? extends java.util.Map<java.lang.String,?>>>, int, String[], int[]);
-    ctor public SimpleExpandableListAdapter(android.content.Context, java.util.List<? extends java.util.Map<java.lang.String,?>>, int, int, String[], int[], java.util.List<? extends java.util.List<? extends java.util.Map<java.lang.String,?>>>, int, String[], int[]);
-    ctor public SimpleExpandableListAdapter(android.content.Context, java.util.List<? extends java.util.Map<java.lang.String,?>>, int, int, String[], int[], java.util.List<? extends java.util.List<? extends java.util.Map<java.lang.String,?>>>, int, int, String[], int[]);
-    method public Object getChild(int, int);
-    method public long getChildId(int, int);
-    method public android.view.View getChildView(int, int, boolean, android.view.View, android.view.ViewGroup);
-    method public int getChildrenCount(int);
-    method public Object getGroup(int);
-    method public int getGroupCount();
-    method public long getGroupId(int);
-    method public android.view.View getGroupView(int, boolean, android.view.View, android.view.ViewGroup);
-    method public boolean hasStableIds();
-    method public boolean isChildSelectable(int, int);
-    method public android.view.View newChildView(boolean, android.view.ViewGroup);
-    method public android.view.View newGroupView(boolean, android.view.ViewGroup);
-  }
-
-  @Deprecated public class SlidingDrawer extends android.view.ViewGroup {
-    ctor @Deprecated public SlidingDrawer(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public SlidingDrawer(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public SlidingDrawer(android.content.Context, android.util.AttributeSet, int, int);
-    method @Deprecated public void animateClose();
-    method @Deprecated public void animateOpen();
-    method @Deprecated public void animateToggle();
-    method @Deprecated public void close();
-    method @Deprecated public android.view.View getContent();
-    method @Deprecated public android.view.View getHandle();
-    method @Deprecated public boolean isMoving();
-    method @Deprecated public boolean isOpened();
-    method @Deprecated public void lock();
-    method @Deprecated public void open();
-    method @Deprecated public void setOnDrawerCloseListener(android.widget.SlidingDrawer.OnDrawerCloseListener);
-    method @Deprecated public void setOnDrawerOpenListener(android.widget.SlidingDrawer.OnDrawerOpenListener);
-    method @Deprecated public void setOnDrawerScrollListener(android.widget.SlidingDrawer.OnDrawerScrollListener);
-    method @Deprecated public void toggle();
-    method @Deprecated public void unlock();
-    field @Deprecated public static final int ORIENTATION_HORIZONTAL = 0; // 0x0
-    field @Deprecated public static final int ORIENTATION_VERTICAL = 1; // 0x1
-  }
-
-  @Deprecated public static interface SlidingDrawer.OnDrawerCloseListener {
-    method @Deprecated public void onDrawerClosed();
-  }
-
-  @Deprecated public static interface SlidingDrawer.OnDrawerOpenListener {
-    method @Deprecated public void onDrawerOpened();
-  }
-
-  @Deprecated public static interface SlidingDrawer.OnDrawerScrollListener {
-    method @Deprecated public void onScrollEnded();
-    method @Deprecated public void onScrollStarted();
-  }
-
-  public final class Space extends android.view.View {
-    ctor public Space(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public Space(android.content.Context, android.util.AttributeSet, int);
-    ctor public Space(android.content.Context, android.util.AttributeSet);
-    ctor public Space(android.content.Context);
-  }
-
-  public class Spinner extends android.widget.AbsSpinner implements android.content.DialogInterface.OnClickListener {
-    ctor public Spinner(android.content.Context);
-    ctor public Spinner(android.content.Context, int);
-    ctor public Spinner(android.content.Context, android.util.AttributeSet);
-    ctor public Spinner(android.content.Context, android.util.AttributeSet, int);
-    ctor public Spinner(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public Spinner(android.content.Context, android.util.AttributeSet, int, int, int);
-    ctor public Spinner(android.content.Context, android.util.AttributeSet, int, int, int, android.content.res.Resources.Theme);
-    method public int getDropDownHorizontalOffset();
-    method public int getDropDownVerticalOffset();
-    method public int getDropDownWidth();
-    method public int getGravity();
-    method public android.graphics.drawable.Drawable getPopupBackground();
-    method public android.content.Context getPopupContext();
-    method public CharSequence getPrompt();
-    method public void onClick(android.content.DialogInterface, int);
-    method public void setDropDownHorizontalOffset(int);
-    method public void setDropDownVerticalOffset(int);
-    method public void setDropDownWidth(int);
-    method public void setGravity(int);
-    method public void setPopupBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setPopupBackgroundResource(@DrawableRes int);
-    method public void setPrompt(CharSequence);
-    method public void setPromptId(int);
-    field public static final int MODE_DIALOG = 0; // 0x0
-    field public static final int MODE_DROPDOWN = 1; // 0x1
-  }
-
-  public interface SpinnerAdapter extends android.widget.Adapter {
-    method public android.view.View getDropDownView(int, android.view.View, android.view.ViewGroup);
-  }
-
-  @android.widget.RemoteViews.RemoteView public class StackView extends android.widget.AdapterViewAnimator {
-    ctor public StackView(android.content.Context);
-    ctor public StackView(android.content.Context, android.util.AttributeSet);
-    ctor public StackView(android.content.Context, android.util.AttributeSet, int);
-    ctor public StackView(android.content.Context, android.util.AttributeSet, int, int);
-  }
-
-  public class Switch extends android.widget.CompoundButton {
-    ctor public Switch(android.content.Context);
-    ctor public Switch(android.content.Context, android.util.AttributeSet);
-    ctor public Switch(android.content.Context, android.util.AttributeSet, int);
-    ctor public Switch(android.content.Context, android.util.AttributeSet, int, int);
-    method public boolean getShowText();
-    method public boolean getSplitTrack();
-    method public int getSwitchMinWidth();
-    method public int getSwitchPadding();
-    method public CharSequence getTextOff();
-    method public CharSequence getTextOn();
-    method public android.graphics.drawable.Drawable getThumbDrawable();
-    method public int getThumbTextPadding();
-    method @Nullable public android.graphics.BlendMode getThumbTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getThumbTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getThumbTintMode();
-    method public android.graphics.drawable.Drawable getTrackDrawable();
-    method @Nullable public android.graphics.BlendMode getTrackTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getTrackTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getTrackTintMode();
-    method public void onMeasure(int, int);
-    method public void setShowText(boolean);
-    method public void setSplitTrack(boolean);
-    method public void setSwitchMinWidth(int);
-    method public void setSwitchPadding(int);
-    method public void setSwitchTextAppearance(android.content.Context, @StyleRes int);
-    method public void setSwitchTypeface(android.graphics.Typeface, int);
-    method public void setSwitchTypeface(android.graphics.Typeface);
-    method public void setTextOff(CharSequence);
-    method public void setTextOn(CharSequence);
-    method public void setThumbDrawable(android.graphics.drawable.Drawable);
-    method public void setThumbResource(@DrawableRes int);
-    method public void setThumbTextPadding(int);
-    method public void setThumbTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setThumbTintList(@Nullable android.content.res.ColorStateList);
-    method public void setThumbTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public void setTrackDrawable(android.graphics.drawable.Drawable);
-    method public void setTrackResource(@DrawableRes int);
-    method public void setTrackTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setTrackTintList(@Nullable android.content.res.ColorStateList);
-    method public void setTrackTintMode(@Nullable android.graphics.PorterDuff.Mode);
-  }
-
-  @Deprecated public class TabHost extends android.widget.FrameLayout implements android.view.ViewTreeObserver.OnTouchModeChangeListener {
-    ctor @Deprecated public TabHost(android.content.Context);
-    ctor @Deprecated public TabHost(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public TabHost(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public TabHost(android.content.Context, android.util.AttributeSet, int, int);
-    method @Deprecated public void addTab(android.widget.TabHost.TabSpec);
-    method @Deprecated public void clearAllTabs();
-    method @Deprecated @Nullable public int getCurrentTab();
-    method @Deprecated @Nullable public String getCurrentTabTag();
-    method @Deprecated @Nullable public android.view.View getCurrentTabView();
-    method @Deprecated public android.view.View getCurrentView();
-    method @Deprecated public android.widget.FrameLayout getTabContentView();
-    method @Deprecated public android.widget.TabWidget getTabWidget();
-    method @Deprecated @NonNull public android.widget.TabHost.TabSpec newTabSpec(@NonNull String);
-    method @Deprecated public void onTouchModeChanged(boolean);
-    method @Deprecated public void setCurrentTab(int);
-    method @Deprecated public void setCurrentTabByTag(String);
-    method @Deprecated public void setOnTabChangedListener(android.widget.TabHost.OnTabChangeListener);
-    method @Deprecated public void setup();
-    method @Deprecated public void setup(android.app.LocalActivityManager);
-  }
-
-  @Deprecated public static interface TabHost.OnTabChangeListener {
-    method @Deprecated public void onTabChanged(String);
-  }
-
-  @Deprecated public static interface TabHost.TabContentFactory {
-    method @Deprecated public android.view.View createTabContent(String);
-  }
-
-  @Deprecated public class TabHost.TabSpec {
-    method @Deprecated @NonNull public String getTag();
-    method @Deprecated public android.widget.TabHost.TabSpec setContent(int);
-    method @Deprecated public android.widget.TabHost.TabSpec setContent(android.widget.TabHost.TabContentFactory);
-    method @Deprecated public android.widget.TabHost.TabSpec setContent(android.content.Intent);
-    method @Deprecated public android.widget.TabHost.TabSpec setIndicator(CharSequence);
-    method @Deprecated public android.widget.TabHost.TabSpec setIndicator(CharSequence, android.graphics.drawable.Drawable);
-    method @Deprecated public android.widget.TabHost.TabSpec setIndicator(android.view.View);
-  }
-
-  @Deprecated public class TabWidget extends android.widget.LinearLayout implements android.view.View.OnFocusChangeListener {
-    ctor @Deprecated public TabWidget(android.content.Context);
-    ctor @Deprecated public TabWidget(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public TabWidget(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public TabWidget(android.content.Context, android.util.AttributeSet, int, int);
-    method @Deprecated public void dispatchDraw(android.graphics.Canvas);
-    method @Deprecated public void focusCurrentTab(int);
-    method @Deprecated public android.view.View getChildTabViewAt(int);
-    method @Deprecated @Nullable public android.graphics.drawable.Drawable getLeftStripDrawable();
-    method @Deprecated @Nullable public android.graphics.drawable.Drawable getRightStripDrawable();
-    method @Deprecated public int getTabCount();
-    method @Deprecated public boolean isStripEnabled();
-    method @Deprecated public void onFocusChange(android.view.View, boolean);
-    method @Deprecated public void setCurrentTab(int);
-    method @Deprecated public void setDividerDrawable(@DrawableRes int);
-    method @Deprecated public void setLeftStripDrawable(@Nullable android.graphics.drawable.Drawable);
-    method @Deprecated public void setLeftStripDrawable(@DrawableRes int);
-    method @Deprecated public void setRightStripDrawable(@Nullable android.graphics.drawable.Drawable);
-    method @Deprecated public void setRightStripDrawable(@DrawableRes int);
-    method @Deprecated public void setStripEnabled(boolean);
-  }
-
-  public class TableLayout extends android.widget.LinearLayout {
-    ctor public TableLayout(android.content.Context);
-    ctor public TableLayout(android.content.Context, android.util.AttributeSet);
-    method public android.widget.TableLayout.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method public boolean isColumnCollapsed(int);
-    method public boolean isColumnShrinkable(int);
-    method public boolean isColumnStretchable(int);
-    method public boolean isShrinkAllColumns();
-    method public boolean isStretchAllColumns();
-    method public void setColumnCollapsed(int, boolean);
-    method public void setColumnShrinkable(int, boolean);
-    method public void setColumnStretchable(int, boolean);
-    method public void setShrinkAllColumns(boolean);
-    method public void setStretchAllColumns(boolean);
-  }
-
-  public static class TableLayout.LayoutParams extends android.widget.LinearLayout.LayoutParams {
-    ctor public TableLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public TableLayout.LayoutParams(int, int);
-    ctor public TableLayout.LayoutParams(int, int, float);
-    ctor public TableLayout.LayoutParams();
-    ctor public TableLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public TableLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-  }
-
-  public class TableRow extends android.widget.LinearLayout {
-    ctor public TableRow(android.content.Context);
-    ctor public TableRow(android.content.Context, android.util.AttributeSet);
-    method public android.widget.TableRow.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method public android.view.View getVirtualChildAt(int);
-    method public int getVirtualChildCount();
-  }
-
-  public static class TableRow.LayoutParams extends android.widget.LinearLayout.LayoutParams {
-    ctor public TableRow.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public TableRow.LayoutParams(int, int);
-    ctor public TableRow.LayoutParams(int, int, float);
-    ctor public TableRow.LayoutParams();
-    ctor public TableRow.LayoutParams(int);
-    ctor public TableRow.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public TableRow.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    field public int column;
-    field public int span;
-  }
-
-  @android.widget.RemoteViews.RemoteView public class TextClock extends android.widget.TextView {
-    ctor public TextClock(android.content.Context);
-    ctor public TextClock(android.content.Context, android.util.AttributeSet);
-    ctor public TextClock(android.content.Context, android.util.AttributeSet, int);
-    ctor public TextClock(android.content.Context, android.util.AttributeSet, int, int);
-    method public CharSequence getFormat12Hour();
-    method public CharSequence getFormat24Hour();
-    method public String getTimeZone();
-    method public boolean is24HourModeEnabled();
-    method public void refreshTime();
-    method public void setFormat12Hour(CharSequence);
-    method public void setFormat24Hour(CharSequence);
-    method public void setTimeZone(String);
-    field @Deprecated public static final CharSequence DEFAULT_FORMAT_12_HOUR;
-    field @Deprecated public static final CharSequence DEFAULT_FORMAT_24_HOUR;
-  }
-
-  public class TextSwitcher extends android.widget.ViewSwitcher {
-    ctor public TextSwitcher(android.content.Context);
-    ctor public TextSwitcher(android.content.Context, android.util.AttributeSet);
-    method public void setCurrentText(CharSequence);
-    method public void setText(CharSequence);
-  }
-
-  @android.widget.RemoteViews.RemoteView public class TextView extends android.view.View implements android.view.ViewTreeObserver.OnPreDrawListener {
-    ctor public TextView(android.content.Context);
-    ctor public TextView(android.content.Context, @Nullable android.util.AttributeSet);
-    ctor public TextView(android.content.Context, @Nullable android.util.AttributeSet, int);
-    ctor public TextView(android.content.Context, @Nullable android.util.AttributeSet, int, int);
-    method public void addTextChangedListener(android.text.TextWatcher);
-    method public final void append(CharSequence);
-    method public void append(CharSequence, int, int);
-    method public void beginBatchEdit();
-    method public boolean bringPointIntoView(int);
-    method public void clearComposingText();
-    method public void debug(int);
-    method public boolean didTouchFocusSelect();
-    method public void endBatchEdit();
-    method public boolean extractText(android.view.inputmethod.ExtractedTextRequest, android.view.inputmethod.ExtractedText);
-    method public final int getAutoLinkMask();
-    method public int getAutoSizeMaxTextSize();
-    method public int getAutoSizeMinTextSize();
-    method public int getAutoSizeStepGranularity();
-    method public int[] getAutoSizeTextAvailableSizes();
-    method public int getAutoSizeTextType();
-    method public int getBreakStrategy();
-    method public int getCompoundDrawablePadding();
-    method @Nullable public android.graphics.BlendMode getCompoundDrawableTintBlendMode();
-    method public android.content.res.ColorStateList getCompoundDrawableTintList();
-    method public android.graphics.PorterDuff.Mode getCompoundDrawableTintMode();
-    method @NonNull public android.graphics.drawable.Drawable[] getCompoundDrawables();
-    method @NonNull public android.graphics.drawable.Drawable[] getCompoundDrawablesRelative();
-    method public int getCompoundPaddingBottom();
-    method public int getCompoundPaddingEnd();
-    method public int getCompoundPaddingLeft();
-    method public int getCompoundPaddingRight();
-    method public int getCompoundPaddingStart();
-    method public int getCompoundPaddingTop();
-    method @ColorInt public final int getCurrentHintTextColor();
-    method @ColorInt public final int getCurrentTextColor();
-    method public android.view.ActionMode.Callback getCustomInsertionActionModeCallback();
-    method public android.view.ActionMode.Callback getCustomSelectionActionModeCallback();
-    method protected boolean getDefaultEditable();
-    method protected android.text.method.MovementMethod getDefaultMovementMethod();
-    method public android.text.Editable getEditableText();
-    method public android.text.TextUtils.TruncateAt getEllipsize();
-    method public CharSequence getError();
-    method public int getExtendedPaddingBottom();
-    method public int getExtendedPaddingTop();
-    method public android.text.InputFilter[] getFilters();
-    method public int getFirstBaselineToTopHeight();
-    method @Nullable public String getFontFeatureSettings();
-    method @Nullable public String getFontVariationSettings();
-    method public boolean getFreezesText();
-    method public int getGravity();
-    method @ColorInt public int getHighlightColor();
-    method public CharSequence getHint();
-    method public final android.content.res.ColorStateList getHintTextColors();
-    method public int getHyphenationFrequency();
-    method public int getImeActionId();
-    method public CharSequence getImeActionLabel();
-    method @Nullable public android.os.LocaleList getImeHintLocales();
-    method public int getImeOptions();
-    method public boolean getIncludeFontPadding();
-    method public android.os.Bundle getInputExtras(boolean);
-    method public int getInputType();
-    method public int getJustificationMode();
-    method public final android.text.method.KeyListener getKeyListener();
-    method public int getLastBaselineToBottomHeight();
-    method public final android.text.Layout getLayout();
-    method public float getLetterSpacing();
-    method public int getLineBounds(int, android.graphics.Rect);
-    method public int getLineCount();
-    method public int getLineHeight();
-    method public float getLineSpacingExtra();
-    method public float getLineSpacingMultiplier();
-    method public final android.content.res.ColorStateList getLinkTextColors();
-    method public final boolean getLinksClickable();
-    method public int getMarqueeRepeatLimit();
-    method public int getMaxEms();
-    method public int getMaxHeight();
-    method public int getMaxLines();
-    method public int getMaxWidth();
-    method public int getMinEms();
-    method public int getMinHeight();
-    method public int getMinLines();
-    method public int getMinWidth();
-    method public final android.text.method.MovementMethod getMovementMethod();
-    method public int getOffsetForPosition(float, float);
-    method public android.text.TextPaint getPaint();
-    method public int getPaintFlags();
-    method public String getPrivateImeOptions();
-    method public int getSelectionEnd();
-    method public int getSelectionStart();
-    method @ColorInt public int getShadowColor();
-    method public float getShadowDx();
-    method public float getShadowDy();
-    method public float getShadowRadius();
-    method public final boolean getShowSoftInputOnFocus();
-    method public CharSequence getText();
-    method @NonNull public android.view.textclassifier.TextClassifier getTextClassifier();
-    method public final android.content.res.ColorStateList getTextColors();
-    method @Nullable public android.graphics.drawable.Drawable getTextCursorDrawable();
-    method @NonNull public android.text.TextDirectionHeuristic getTextDirectionHeuristic();
-    method @NonNull public java.util.Locale getTextLocale();
-    method @NonNull @Size(min=1) public android.os.LocaleList getTextLocales();
-    method @NonNull public android.text.PrecomputedText.Params getTextMetricsParams();
-    method public float getTextScaleX();
-    method @Nullable public android.graphics.drawable.Drawable getTextSelectHandle();
-    method @Nullable public android.graphics.drawable.Drawable getTextSelectHandleLeft();
-    method @Nullable public android.graphics.drawable.Drawable getTextSelectHandleRight();
-    method public float getTextSize();
-    method public int getTextSizeUnit();
-    method public int getTotalPaddingBottom();
-    method public int getTotalPaddingEnd();
-    method public int getTotalPaddingLeft();
-    method public int getTotalPaddingRight();
-    method public int getTotalPaddingStart();
-    method public int getTotalPaddingTop();
-    method public final android.text.method.TransformationMethod getTransformationMethod();
-    method public android.graphics.Typeface getTypeface();
-    method public android.text.style.URLSpan[] getUrls();
-    method public boolean hasSelection();
-    method public boolean isAllCaps();
-    method public boolean isCursorVisible();
-    method public boolean isElegantTextHeight();
-    method public boolean isFallbackLineSpacing();
-    method public final boolean isHorizontallyScrollable();
-    method public boolean isInputMethodTarget();
-    method public boolean isSingleLine();
-    method public boolean isSuggestionsEnabled();
-    method public boolean isTextSelectable();
-    method public int length();
-    method public boolean moveCursorToVisibleOffset();
-    method public void onBeginBatchEdit();
-    method public void onCommitCompletion(android.view.inputmethod.CompletionInfo);
-    method public void onCommitCorrection(android.view.inputmethod.CorrectionInfo);
-    method public void onEditorAction(int);
-    method public void onEndBatchEdit();
-    method public boolean onPreDraw();
-    method public boolean onPrivateIMECommand(String, android.os.Bundle);
-    method public void onRestoreInstanceState(android.os.Parcelable);
-    method public android.os.Parcelable onSaveInstanceState();
-    method @CallSuper protected void onSelectionChanged(int, int);
-    method protected void onTextChanged(CharSequence, int, int, int);
-    method public boolean onTextContextMenuItem(int);
-    method public void removeTextChangedListener(android.text.TextWatcher);
-    method public void setAllCaps(boolean);
-    method public final void setAutoLinkMask(int);
-    method public void setAutoSizeTextTypeUniformWithConfiguration(int, int, int, int);
-    method public void setAutoSizeTextTypeUniformWithPresetSizes(@NonNull int[], int);
-    method public void setAutoSizeTextTypeWithDefaults(int);
-    method public void setBreakStrategy(int);
-    method public void setCompoundDrawablePadding(int);
-    method public void setCompoundDrawableTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setCompoundDrawableTintList(@Nullable android.content.res.ColorStateList);
-    method public void setCompoundDrawableTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public void setCompoundDrawables(@Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable);
-    method public void setCompoundDrawablesRelative(@Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable);
-    method public void setCompoundDrawablesRelativeWithIntrinsicBounds(@DrawableRes int, @DrawableRes int, @DrawableRes int, @DrawableRes int);
-    method public void setCompoundDrawablesRelativeWithIntrinsicBounds(@Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable);
-    method public void setCompoundDrawablesWithIntrinsicBounds(@DrawableRes int, @DrawableRes int, @DrawableRes int, @DrawableRes int);
-    method public void setCompoundDrawablesWithIntrinsicBounds(@Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable);
-    method public void setCursorVisible(boolean);
-    method public void setCustomInsertionActionModeCallback(android.view.ActionMode.Callback);
-    method public void setCustomSelectionActionModeCallback(android.view.ActionMode.Callback);
-    method public final void setEditableFactory(android.text.Editable.Factory);
-    method public void setElegantTextHeight(boolean);
-    method public void setEllipsize(android.text.TextUtils.TruncateAt);
-    method public void setEms(int);
-    method public void setError(CharSequence);
-    method public void setError(CharSequence, android.graphics.drawable.Drawable);
-    method public void setExtractedText(android.view.inputmethod.ExtractedText);
-    method public void setFallbackLineSpacing(boolean);
-    method public void setFilters(android.text.InputFilter[]);
-    method public void setFirstBaselineToTopHeight(@IntRange(from=0) @Px int);
-    method public void setFontFeatureSettings(@Nullable String);
-    method public boolean setFontVariationSettings(@Nullable String);
-    method protected boolean setFrame(int, int, int, int);
-    method public void setFreezesText(boolean);
-    method public void setGravity(int);
-    method public void setHeight(int);
-    method public void setHighlightColor(@ColorInt int);
-    method public final void setHint(CharSequence);
-    method public final void setHint(@StringRes int);
-    method public final void setHintTextColor(@ColorInt int);
-    method public final void setHintTextColor(android.content.res.ColorStateList);
-    method public void setHorizontallyScrolling(boolean);
-    method public void setHyphenationFrequency(int);
-    method public void setImeActionLabel(CharSequence, int);
-    method public void setImeHintLocales(@Nullable android.os.LocaleList);
-    method public void setImeOptions(int);
-    method public void setIncludeFontPadding(boolean);
-    method public void setInputExtras(@XmlRes int) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public void setInputType(int);
-    method public void setJustificationMode(int);
-    method public void setKeyListener(android.text.method.KeyListener);
-    method public void setLastBaselineToBottomHeight(@IntRange(from=0) @Px int);
-    method public void setLetterSpacing(float);
-    method public void setLineHeight(@IntRange(from=0) @Px int);
-    method public void setLineSpacing(float, float);
-    method public void setLines(int);
-    method public final void setLinkTextColor(@ColorInt int);
-    method public final void setLinkTextColor(android.content.res.ColorStateList);
-    method public final void setLinksClickable(boolean);
-    method public void setMarqueeRepeatLimit(int);
-    method public void setMaxEms(int);
-    method public void setMaxHeight(int);
-    method public void setMaxLines(int);
-    method public void setMaxWidth(int);
-    method public void setMinEms(int);
-    method public void setMinHeight(int);
-    method public void setMinLines(int);
-    method public void setMinWidth(int);
-    method public final void setMovementMethod(android.text.method.MovementMethod);
-    method public void setOnEditorActionListener(android.widget.TextView.OnEditorActionListener);
-    method public void setPaintFlags(int);
-    method public void setPrivateImeOptions(String);
-    method public void setRawInputType(int);
-    method public void setScroller(android.widget.Scroller);
-    method public void setSelectAllOnFocus(boolean);
-    method public void setShadowLayer(float, float, float, int);
-    method public final void setShowSoftInputOnFocus(boolean);
-    method public void setSingleLine();
-    method public void setSingleLine(boolean);
-    method public final void setSpannableFactory(android.text.Spannable.Factory);
-    method public final void setText(CharSequence);
-    method public void setText(CharSequence, android.widget.TextView.BufferType);
-    method public final void setText(char[], int, int);
-    method public final void setText(@StringRes int);
-    method public final void setText(@StringRes int, android.widget.TextView.BufferType);
-    method public void setTextAppearance(@StyleRes int);
-    method @Deprecated public void setTextAppearance(android.content.Context, @StyleRes int);
-    method public void setTextClassifier(@Nullable android.view.textclassifier.TextClassifier);
-    method public void setTextColor(@ColorInt int);
-    method public void setTextColor(android.content.res.ColorStateList);
-    method public void setTextCursorDrawable(@Nullable android.graphics.drawable.Drawable);
-    method public void setTextCursorDrawable(@DrawableRes int);
-    method public void setTextIsSelectable(boolean);
-    method public final void setTextKeepState(CharSequence);
-    method public final void setTextKeepState(CharSequence, android.widget.TextView.BufferType);
-    method public void setTextLocale(@NonNull java.util.Locale);
-    method public void setTextLocales(@NonNull @Size(min=1) android.os.LocaleList);
-    method public void setTextMetricsParams(@NonNull android.text.PrecomputedText.Params);
-    method public void setTextScaleX(float);
-    method public void setTextSelectHandle(@NonNull android.graphics.drawable.Drawable);
-    method public void setTextSelectHandle(@DrawableRes int);
-    method public void setTextSelectHandleLeft(@NonNull android.graphics.drawable.Drawable);
-    method public void setTextSelectHandleLeft(@DrawableRes int);
-    method public void setTextSelectHandleRight(@NonNull android.graphics.drawable.Drawable);
-    method public void setTextSelectHandleRight(@DrawableRes int);
-    method public void setTextSize(float);
-    method public void setTextSize(int, float);
-    method public final void setTransformationMethod(android.text.method.TransformationMethod);
-    method public void setTypeface(@Nullable android.graphics.Typeface, int);
-    method public void setTypeface(@Nullable android.graphics.Typeface);
-    method public void setWidth(int);
-    field public static final int AUTO_SIZE_TEXT_TYPE_NONE = 0; // 0x0
-    field public static final int AUTO_SIZE_TEXT_TYPE_UNIFORM = 1; // 0x1
-  }
-
-  public enum TextView.BufferType {
-    enum_constant public static final android.widget.TextView.BufferType EDITABLE;
-    enum_constant public static final android.widget.TextView.BufferType NORMAL;
-    enum_constant public static final android.widget.TextView.BufferType SPANNABLE;
-  }
-
-  public static interface TextView.OnEditorActionListener {
-    method public boolean onEditorAction(android.widget.TextView, int, android.view.KeyEvent);
-  }
-
-  public static class TextView.SavedState extends android.view.View.BaseSavedState {
-    field @NonNull public static final android.os.Parcelable.Creator<android.widget.TextView.SavedState> CREATOR;
-  }
-
-  public interface ThemedSpinnerAdapter extends android.widget.SpinnerAdapter {
-    method @Nullable public android.content.res.Resources.Theme getDropDownViewTheme();
-    method public void setDropDownViewTheme(@Nullable android.content.res.Resources.Theme);
-  }
-
-  public class TimePicker extends android.widget.FrameLayout {
-    ctor public TimePicker(android.content.Context);
-    ctor public TimePicker(android.content.Context, android.util.AttributeSet);
-    ctor public TimePicker(android.content.Context, android.util.AttributeSet, int);
-    ctor public TimePicker(android.content.Context, android.util.AttributeSet, int, int);
-    method @Deprecated @NonNull public Integer getCurrentHour();
-    method @Deprecated @NonNull public Integer getCurrentMinute();
-    method public int getHour();
-    method public int getMinute();
-    method public boolean is24HourView();
-    method @Deprecated public void setCurrentHour(@NonNull Integer);
-    method @Deprecated public void setCurrentMinute(@NonNull Integer);
-    method public void setHour(@IntRange(from=0, to=23) int);
-    method public void setIs24HourView(@NonNull Boolean);
-    method public void setMinute(@IntRange(from=0, to=59) int);
-    method public void setOnTimeChangedListener(android.widget.TimePicker.OnTimeChangedListener);
-    method public boolean validateInput();
-  }
-
-  public static interface TimePicker.OnTimeChangedListener {
-    method public void onTimeChanged(android.widget.TimePicker, int, int);
-  }
-
-  public class Toast {
-    ctor public Toast(android.content.Context);
-    method public void addCallback(@NonNull android.widget.Toast.Callback);
-    method public void cancel();
-    method public int getDuration();
-    method public int getGravity();
-    method public float getHorizontalMargin();
-    method public float getVerticalMargin();
-    method @Deprecated @Nullable public android.view.View getView();
-    method public int getXOffset();
-    method public int getYOffset();
-    method public static android.widget.Toast makeText(android.content.Context, CharSequence, int);
-    method public static android.widget.Toast makeText(android.content.Context, @StringRes int, int) throws android.content.res.Resources.NotFoundException;
-    method public void removeCallback(@NonNull android.widget.Toast.Callback);
-    method public void setDuration(int);
-    method public void setGravity(int, int, int);
-    method public void setMargin(float, float);
-    method public void setText(@StringRes int);
-    method public void setText(CharSequence);
-    method @Deprecated public void setView(android.view.View);
-    method public void show();
-    field public static final int LENGTH_LONG = 1; // 0x1
-    field public static final int LENGTH_SHORT = 0; // 0x0
-  }
-
-  public abstract static class Toast.Callback {
-    ctor public Toast.Callback();
-    method public void onToastHidden();
-    method public void onToastShown();
-  }
-
-  public class ToggleButton extends android.widget.CompoundButton {
-    ctor public ToggleButton(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public ToggleButton(android.content.Context, android.util.AttributeSet, int);
-    ctor public ToggleButton(android.content.Context, android.util.AttributeSet);
-    ctor public ToggleButton(android.content.Context);
-    method @FloatRange(from=0.0, to=1.0) public float getDisabledAlpha();
-    method public CharSequence getTextOff();
-    method public CharSequence getTextOn();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setTextOff(CharSequence);
-    method public void setTextOn(CharSequence);
-  }
-
-  public class Toolbar extends android.view.ViewGroup {
-    ctor public Toolbar(android.content.Context);
-    ctor public Toolbar(android.content.Context, android.util.AttributeSet);
-    ctor public Toolbar(android.content.Context, android.util.AttributeSet, int);
-    ctor public Toolbar(android.content.Context, android.util.AttributeSet, int, int);
-    method public void collapseActionView();
-    method public void dismissPopupMenus();
-    method protected android.widget.Toolbar.LayoutParams generateDefaultLayoutParams();
-    method public android.widget.Toolbar.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method protected android.widget.Toolbar.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams);
-    method @Nullable public CharSequence getCollapseContentDescription();
-    method @Nullable public android.graphics.drawable.Drawable getCollapseIcon();
-    method public int getContentInsetEnd();
-    method public int getContentInsetEndWithActions();
-    method public int getContentInsetLeft();
-    method public int getContentInsetRight();
-    method public int getContentInsetStart();
-    method public int getContentInsetStartWithNavigation();
-    method public int getCurrentContentInsetEnd();
-    method public int getCurrentContentInsetLeft();
-    method public int getCurrentContentInsetRight();
-    method public int getCurrentContentInsetStart();
-    method public android.graphics.drawable.Drawable getLogo();
-    method public CharSequence getLogoDescription();
-    method public android.view.Menu getMenu();
-    method @Nullable public CharSequence getNavigationContentDescription();
-    method @Nullable public android.graphics.drawable.Drawable getNavigationIcon();
-    method @Nullable public android.graphics.drawable.Drawable getOverflowIcon();
-    method public int getPopupTheme();
-    method public CharSequence getSubtitle();
-    method public CharSequence getTitle();
-    method public int getTitleMarginBottom();
-    method public int getTitleMarginEnd();
-    method public int getTitleMarginStart();
-    method public int getTitleMarginTop();
-    method public boolean hasExpandedActionView();
-    method public boolean hideOverflowMenu();
-    method public void inflateMenu(@MenuRes int);
-    method public boolean isOverflowMenuShowing();
-    method public void setCollapseContentDescription(@StringRes int);
-    method public void setCollapseContentDescription(@Nullable CharSequence);
-    method public void setCollapseIcon(@DrawableRes int);
-    method public void setCollapseIcon(@Nullable android.graphics.drawable.Drawable);
-    method public void setContentInsetEndWithActions(int);
-    method public void setContentInsetStartWithNavigation(int);
-    method public void setContentInsetsAbsolute(int, int);
-    method public void setContentInsetsRelative(int, int);
-    method public void setLogo(@DrawableRes int);
-    method public void setLogo(android.graphics.drawable.Drawable);
-    method public void setLogoDescription(@StringRes int);
-    method public void setLogoDescription(CharSequence);
-    method public void setNavigationContentDescription(@StringRes int);
-    method public void setNavigationContentDescription(@Nullable CharSequence);
-    method public void setNavigationIcon(@DrawableRes int);
-    method public void setNavigationIcon(@Nullable android.graphics.drawable.Drawable);
-    method public void setNavigationOnClickListener(android.view.View.OnClickListener);
-    method public void setOnMenuItemClickListener(android.widget.Toolbar.OnMenuItemClickListener);
-    method public void setOverflowIcon(@Nullable android.graphics.drawable.Drawable);
-    method public void setPopupTheme(@StyleRes int);
-    method public void setSubtitle(@StringRes int);
-    method public void setSubtitle(CharSequence);
-    method public void setSubtitleTextAppearance(android.content.Context, @StyleRes int);
-    method public void setSubtitleTextColor(@ColorInt int);
-    method public void setTitle(@StringRes int);
-    method public void setTitle(CharSequence);
-    method public void setTitleMargin(int, int, int, int);
-    method public void setTitleMarginBottom(int);
-    method public void setTitleMarginEnd(int);
-    method public void setTitleMarginStart(int);
-    method public void setTitleMarginTop(int);
-    method public void setTitleTextAppearance(android.content.Context, @StyleRes int);
-    method public void setTitleTextColor(@ColorInt int);
-    method public boolean showOverflowMenu();
-  }
-
-  public static class Toolbar.LayoutParams extends android.app.ActionBar.LayoutParams {
-    ctor public Toolbar.LayoutParams(@NonNull android.content.Context, android.util.AttributeSet);
-    ctor public Toolbar.LayoutParams(int, int);
-    ctor public Toolbar.LayoutParams(int, int, int);
-    ctor public Toolbar.LayoutParams(int);
-    ctor public Toolbar.LayoutParams(android.widget.Toolbar.LayoutParams);
-    ctor public Toolbar.LayoutParams(android.app.ActionBar.LayoutParams);
-    ctor public Toolbar.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    ctor public Toolbar.LayoutParams(android.view.ViewGroup.LayoutParams);
-  }
-
-  public static interface Toolbar.OnMenuItemClickListener {
-    method public boolean onMenuItemClick(android.view.MenuItem);
-  }
-
-  @Deprecated public class TwoLineListItem extends android.widget.RelativeLayout {
-    ctor @Deprecated public TwoLineListItem(android.content.Context);
-    ctor @Deprecated public TwoLineListItem(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public TwoLineListItem(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public TwoLineListItem(android.content.Context, android.util.AttributeSet, int, int);
-    method @Deprecated public android.widget.TextView getText1();
-    method @Deprecated public android.widget.TextView getText2();
-  }
-
-  public class VideoView extends android.view.SurfaceView implements android.widget.MediaController.MediaPlayerControl {
-    ctor public VideoView(android.content.Context);
-    ctor public VideoView(android.content.Context, android.util.AttributeSet);
-    ctor public VideoView(android.content.Context, android.util.AttributeSet, int);
-    ctor public VideoView(android.content.Context, android.util.AttributeSet, int, int);
-    method public void addSubtitleSource(java.io.InputStream, android.media.MediaFormat);
-    method public boolean canPause();
-    method public boolean canSeekBackward();
-    method public boolean canSeekForward();
-    method public int getAudioSessionId();
-    method public int getBufferPercentage();
-    method public int getCurrentPosition();
-    method public int getDuration();
-    method public boolean isPlaying();
-    method public void pause();
-    method public int resolveAdjustedSize(int, int);
-    method public void resume();
-    method public void seekTo(int);
-    method public void setAudioAttributes(@NonNull android.media.AudioAttributes);
-    method public void setAudioFocusRequest(int);
-    method public void setMediaController(android.widget.MediaController);
-    method public void setOnCompletionListener(android.media.MediaPlayer.OnCompletionListener);
-    method public void setOnErrorListener(android.media.MediaPlayer.OnErrorListener);
-    method public void setOnInfoListener(android.media.MediaPlayer.OnInfoListener);
-    method public void setOnPreparedListener(android.media.MediaPlayer.OnPreparedListener);
-    method public void setVideoPath(String);
-    method public void setVideoURI(android.net.Uri);
-    method public void setVideoURI(android.net.Uri, java.util.Map<java.lang.String,java.lang.String>);
-    method public void start();
-    method public void stopPlayback();
-    method public void suspend();
-  }
-
-  public class ViewAnimator extends android.widget.FrameLayout {
-    ctor public ViewAnimator(android.content.Context);
-    ctor public ViewAnimator(android.content.Context, android.util.AttributeSet);
-    method public boolean getAnimateFirstView();
-    method public android.view.View getCurrentView();
-    method public int getDisplayedChild();
-    method public android.view.animation.Animation getInAnimation();
-    method public android.view.animation.Animation getOutAnimation();
-    method public void setAnimateFirstView(boolean);
-    method public void setDisplayedChild(int);
-    method public void setInAnimation(android.view.animation.Animation);
-    method public void setInAnimation(android.content.Context, @AnimRes int);
-    method public void setOutAnimation(android.view.animation.Animation);
-    method public void setOutAnimation(android.content.Context, @AnimRes int);
-    method public void showNext();
-    method public void showPrevious();
-  }
-
-  @android.widget.RemoteViews.RemoteView public class ViewFlipper extends android.widget.ViewAnimator {
-    ctor public ViewFlipper(android.content.Context);
-    ctor public ViewFlipper(android.content.Context, android.util.AttributeSet);
-    method @IntRange(from=0) public int getFlipInterval();
-    method public boolean isAutoStart();
-    method public boolean isFlipping();
-    method public void setAutoStart(boolean);
-    method public void setFlipInterval(@IntRange(from=0) int);
-    method public void startFlipping();
-    method public void stopFlipping();
-  }
-
-  public class ViewSwitcher extends android.widget.ViewAnimator {
-    ctor public ViewSwitcher(android.content.Context);
-    ctor public ViewSwitcher(android.content.Context, android.util.AttributeSet);
-    method public android.view.View getNextView();
-    method public void reset();
-    method public void setFactory(android.widget.ViewSwitcher.ViewFactory);
-  }
-
-  public static interface ViewSwitcher.ViewFactory {
-    method public android.view.View makeView();
-  }
-
-  public interface WrapperListAdapter extends android.widget.ListAdapter {
-    method public android.widget.ListAdapter getWrappedAdapter();
-  }
-
-  @Deprecated public class ZoomButton extends android.widget.ImageButton implements android.view.View.OnLongClickListener {
-    ctor @Deprecated public ZoomButton(android.content.Context);
-    ctor @Deprecated public ZoomButton(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public ZoomButton(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public ZoomButton(android.content.Context, android.util.AttributeSet, int, int);
-    method @Deprecated public boolean onLongClick(android.view.View);
-    method @Deprecated public void setZoomSpeed(long);
-  }
-
-  @Deprecated public class ZoomButtonsController implements android.view.View.OnTouchListener {
-    ctor @Deprecated public ZoomButtonsController(android.view.View);
-    method @Deprecated public android.view.ViewGroup getContainer();
-    method @Deprecated public android.view.View getZoomControls();
-    method @Deprecated public boolean isAutoDismissed();
-    method @Deprecated public boolean isVisible();
-    method public boolean onTouch(android.view.View, android.view.MotionEvent);
-    method @Deprecated public void setAutoDismissed(boolean);
-    method @Deprecated public void setFocusable(boolean);
-    method @Deprecated public void setOnZoomListener(android.widget.ZoomButtonsController.OnZoomListener);
-    method @Deprecated public void setVisible(boolean);
-    method @Deprecated public void setZoomInEnabled(boolean);
-    method @Deprecated public void setZoomOutEnabled(boolean);
-    method @Deprecated public void setZoomSpeed(long);
-  }
-
-  @Deprecated public static interface ZoomButtonsController.OnZoomListener {
-    method @Deprecated public void onVisibilityChanged(boolean);
-    method @Deprecated public void onZoom(boolean);
-  }
-
-  @Deprecated public class ZoomControls extends android.widget.LinearLayout {
-    ctor @Deprecated public ZoomControls(android.content.Context);
-    ctor @Deprecated public ZoomControls(android.content.Context, android.util.AttributeSet);
-    method @Deprecated public void hide();
-    method @Deprecated public void setIsZoomInEnabled(boolean);
-    method @Deprecated public void setIsZoomOutEnabled(boolean);
-    method @Deprecated public void setOnZoomInClickListener(android.view.View.OnClickListener);
-    method @Deprecated public void setOnZoomOutClickListener(android.view.View.OnClickListener);
-    method @Deprecated public void setZoomSpeed(long);
-    method @Deprecated public void show();
-  }
-
-}
-
-package android.widget.inline {
-
-  public class InlineContentView extends android.view.ViewGroup {
-    method @Nullable public android.view.SurfaceControl getSurfaceControl();
-    method public boolean isZOrderedOnTop();
-    method public void onLayout(boolean, int, int, int, int);
-    method public void setSurfaceControlCallback(@Nullable android.widget.inline.InlineContentView.SurfaceControlCallback);
-    method public boolean setZOrderedOnTop(boolean);
-  }
-
-  public static interface InlineContentView.SurfaceControlCallback {
-    method public void onCreated(@NonNull android.view.SurfaceControl);
-    method public void onDestroyed(@NonNull android.view.SurfaceControl);
-  }
-
-  public final class InlinePresentationSpec implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.util.Size getMaxSize();
-    method @NonNull public android.util.Size getMinSize();
-    method @NonNull public android.os.Bundle getStyle();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.widget.inline.InlinePresentationSpec> CREATOR;
-  }
-
-  public static final class InlinePresentationSpec.Builder {
-    ctor public InlinePresentationSpec.Builder(@NonNull android.util.Size, @NonNull android.util.Size);
-    method @NonNull public android.widget.inline.InlinePresentationSpec build();
-    method @NonNull public android.widget.inline.InlinePresentationSpec.Builder setStyle(@NonNull android.os.Bundle);
-  }
-
-}
-
-package dalvik.annotation {
-
-  @Deprecated @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.ANNOTATION_TYPE}) public @interface TestTarget {
-    method @Deprecated public abstract String conceptName() default "";
-    method @Deprecated public abstract Class<?>[] methodArgs() default {};
-    method @Deprecated public abstract String methodName() default "";
-  }
-
-  @Deprecated @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE}) public @interface TestTargetClass {
-    method @Deprecated public abstract Class<?> value();
-  }
-
-}
-
-package dalvik.bytecode {
-
-  public final class OpcodeInfo {
-    field public static final int MAXIMUM_PACKED_VALUE;
-    field public static final int MAXIMUM_VALUE;
-  }
-
-  public interface Opcodes {
-    field public static final int OP_ADD_DOUBLE = 171; // 0xab
-    field public static final int OP_ADD_DOUBLE_2ADDR = 203; // 0xcb
-    field public static final int OP_ADD_FLOAT = 166; // 0xa6
-    field public static final int OP_ADD_FLOAT_2ADDR = 198; // 0xc6
-    field public static final int OP_ADD_INT = 144; // 0x90
-    field public static final int OP_ADD_INT_2ADDR = 176; // 0xb0
-    field public static final int OP_ADD_INT_LIT16 = 208; // 0xd0
-    field public static final int OP_ADD_INT_LIT8 = 216; // 0xd8
-    field public static final int OP_ADD_LONG = 155; // 0x9b
-    field public static final int OP_ADD_LONG_2ADDR = 187; // 0xbb
-    field public static final int OP_AGET = 68; // 0x44
-    field public static final int OP_AGET_BOOLEAN = 71; // 0x47
-    field public static final int OP_AGET_BYTE = 72; // 0x48
-    field public static final int OP_AGET_CHAR = 73; // 0x49
-    field public static final int OP_AGET_OBJECT = 70; // 0x46
-    field public static final int OP_AGET_SHORT = 74; // 0x4a
-    field public static final int OP_AGET_WIDE = 69; // 0x45
-    field public static final int OP_AND_INT = 149; // 0x95
-    field public static final int OP_AND_INT_2ADDR = 181; // 0xb5
-    field public static final int OP_AND_INT_LIT16 = 213; // 0xd5
-    field public static final int OP_AND_INT_LIT8 = 221; // 0xdd
-    field public static final int OP_AND_LONG = 160; // 0xa0
-    field public static final int OP_AND_LONG_2ADDR = 192; // 0xc0
-    field public static final int OP_APUT = 75; // 0x4b
-    field public static final int OP_APUT_BOOLEAN = 78; // 0x4e
-    field public static final int OP_APUT_BYTE = 79; // 0x4f
-    field public static final int OP_APUT_CHAR = 80; // 0x50
-    field public static final int OP_APUT_OBJECT = 77; // 0x4d
-    field public static final int OP_APUT_SHORT = 81; // 0x51
-    field public static final int OP_APUT_WIDE = 76; // 0x4c
-    field public static final int OP_ARRAY_LENGTH = 33; // 0x21
-    field @Deprecated public static final int OP_BREAKPOINT = 236; // 0xec
-    field public static final int OP_CHECK_CAST = 31; // 0x1f
-    field public static final int OP_CHECK_CAST_JUMBO = 511; // 0x1ff
-    field public static final int OP_CMPG_DOUBLE = 48; // 0x30
-    field public static final int OP_CMPG_FLOAT = 46; // 0x2e
-    field public static final int OP_CMPL_DOUBLE = 47; // 0x2f
-    field public static final int OP_CMPL_FLOAT = 45; // 0x2d
-    field public static final int OP_CMP_LONG = 49; // 0x31
-    field public static final int OP_CONST = 20; // 0x14
-    field public static final int OP_CONST_16 = 19; // 0x13
-    field public static final int OP_CONST_4 = 18; // 0x12
-    field public static final int OP_CONST_CLASS = 28; // 0x1c
-    field public static final int OP_CONST_CLASS_JUMBO = 255; // 0xff
-    field public static final int OP_CONST_HIGH16 = 21; // 0x15
-    field public static final int OP_CONST_METHOD_HANDLE = 254; // 0xfe
-    field public static final int OP_CONST_METHOD_TYPE = 255; // 0xff
-    field public static final int OP_CONST_STRING = 26; // 0x1a
-    field public static final int OP_CONST_STRING_JUMBO = 27; // 0x1b
-    field public static final int OP_CONST_WIDE = 24; // 0x18
-    field public static final int OP_CONST_WIDE_16 = 22; // 0x16
-    field public static final int OP_CONST_WIDE_32 = 23; // 0x17
-    field public static final int OP_CONST_WIDE_HIGH16 = 25; // 0x19
-    field public static final int OP_DIV_DOUBLE = 174; // 0xae
-    field public static final int OP_DIV_DOUBLE_2ADDR = 206; // 0xce
-    field public static final int OP_DIV_FLOAT = 169; // 0xa9
-    field public static final int OP_DIV_FLOAT_2ADDR = 201; // 0xc9
-    field public static final int OP_DIV_INT = 147; // 0x93
-    field public static final int OP_DIV_INT_2ADDR = 179; // 0xb3
-    field public static final int OP_DIV_INT_LIT16 = 211; // 0xd3
-    field public static final int OP_DIV_INT_LIT8 = 219; // 0xdb
-    field public static final int OP_DIV_LONG = 158; // 0x9e
-    field public static final int OP_DIV_LONG_2ADDR = 190; // 0xbe
-    field public static final int OP_DOUBLE_TO_FLOAT = 140; // 0x8c
-    field public static final int OP_DOUBLE_TO_INT = 138; // 0x8a
-    field public static final int OP_DOUBLE_TO_LONG = 139; // 0x8b
-    field @Deprecated public static final int OP_EXECUTE_INLINE = 238; // 0xee
-    field @Deprecated public static final int OP_EXECUTE_INLINE_RANGE = 239; // 0xef
-    field public static final int OP_FILLED_NEW_ARRAY = 36; // 0x24
-    field public static final int OP_FILLED_NEW_ARRAY_JUMBO = 1535; // 0x5ff
-    field public static final int OP_FILLED_NEW_ARRAY_RANGE = 37; // 0x25
-    field public static final int OP_FILL_ARRAY_DATA = 38; // 0x26
-    field public static final int OP_FLOAT_TO_DOUBLE = 137; // 0x89
-    field public static final int OP_FLOAT_TO_INT = 135; // 0x87
-    field public static final int OP_FLOAT_TO_LONG = 136; // 0x88
-    field public static final int OP_GOTO = 40; // 0x28
-    field public static final int OP_GOTO_16 = 41; // 0x29
-    field public static final int OP_GOTO_32 = 42; // 0x2a
-    field public static final int OP_IF_EQ = 50; // 0x32
-    field public static final int OP_IF_EQZ = 56; // 0x38
-    field public static final int OP_IF_GE = 53; // 0x35
-    field public static final int OP_IF_GEZ = 59; // 0x3b
-    field public static final int OP_IF_GT = 54; // 0x36
-    field public static final int OP_IF_GTZ = 60; // 0x3c
-    field public static final int OP_IF_LE = 55; // 0x37
-    field public static final int OP_IF_LEZ = 61; // 0x3d
-    field public static final int OP_IF_LT = 52; // 0x34
-    field public static final int OP_IF_LTZ = 58; // 0x3a
-    field public static final int OP_IF_NE = 51; // 0x33
-    field public static final int OP_IF_NEZ = 57; // 0x39
-    field public static final int OP_IGET = 82; // 0x52
-    field public static final int OP_IGET_BOOLEAN = 85; // 0x55
-    field public static final int OP_IGET_BOOLEAN_JUMBO = 2559; // 0x9ff
-    field public static final int OP_IGET_BYTE = 86; // 0x56
-    field public static final int OP_IGET_BYTE_JUMBO = 2815; // 0xaff
-    field public static final int OP_IGET_CHAR = 87; // 0x57
-    field public static final int OP_IGET_CHAR_JUMBO = 3071; // 0xbff
-    field public static final int OP_IGET_JUMBO = 1791; // 0x6ff
-    field public static final int OP_IGET_OBJECT = 84; // 0x54
-    field public static final int OP_IGET_OBJECT_JUMBO = 2303; // 0x8ff
-    field @Deprecated public static final int OP_IGET_OBJECT_QUICK = 244; // 0xf4
-    field @Deprecated public static final int OP_IGET_QUICK = 242; // 0xf2
-    field public static final int OP_IGET_SHORT = 88; // 0x58
-    field public static final int OP_IGET_SHORT_JUMBO = 3327; // 0xcff
-    field public static final int OP_IGET_WIDE = 83; // 0x53
-    field public static final int OP_IGET_WIDE_JUMBO = 2047; // 0x7ff
-    field @Deprecated public static final int OP_IGET_WIDE_QUICK = 243; // 0xf3
-    field @Deprecated public static final int OP_IGET_WIDE_VOLATILE = 232; // 0xe8
-    field public static final int OP_INSTANCE_OF = 32; // 0x20
-    field public static final int OP_INSTANCE_OF_JUMBO = 767; // 0x2ff
-    field public static final int OP_INT_TO_BYTE = 141; // 0x8d
-    field public static final int OP_INT_TO_CHAR = 142; // 0x8e
-    field public static final int OP_INT_TO_DOUBLE = 131; // 0x83
-    field public static final int OP_INT_TO_FLOAT = 130; // 0x82
-    field public static final int OP_INT_TO_LONG = 129; // 0x81
-    field public static final int OP_INT_TO_SHORT = 143; // 0x8f
-    field public static final int OP_INVOKE_CUSTOM = 252; // 0xfc
-    field public static final int OP_INVOKE_CUSTOM_RANGE = 253; // 0xfd
-    field public static final int OP_INVOKE_DIRECT = 112; // 0x70
-    field @Deprecated public static final int OP_INVOKE_DIRECT_EMPTY = 240; // 0xf0
-    field public static final int OP_INVOKE_DIRECT_JUMBO = 9471; // 0x24ff
-    field public static final int OP_INVOKE_DIRECT_RANGE = 118; // 0x76
-    field public static final int OP_INVOKE_INTERFACE = 114; // 0x72
-    field public static final int OP_INVOKE_INTERFACE_JUMBO = 9983; // 0x26ff
-    field public static final int OP_INVOKE_INTERFACE_RANGE = 120; // 0x78
-    field public static final int OP_INVOKE_POLYMORPHIC = 250; // 0xfa
-    field public static final int OP_INVOKE_POLYMORPHIC_RANGE = 251; // 0xfb
-    field public static final int OP_INVOKE_STATIC = 113; // 0x71
-    field public static final int OP_INVOKE_STATIC_JUMBO = 9727; // 0x25ff
-    field public static final int OP_INVOKE_STATIC_RANGE = 119; // 0x77
-    field public static final int OP_INVOKE_SUPER = 111; // 0x6f
-    field public static final int OP_INVOKE_SUPER_JUMBO = 9215; // 0x23ff
-    field @Deprecated public static final int OP_INVOKE_SUPER_QUICK = 250; // 0xfa
-    field @Deprecated public static final int OP_INVOKE_SUPER_QUICK_RANGE = 251; // 0xfb
-    field public static final int OP_INVOKE_SUPER_RANGE = 117; // 0x75
-    field public static final int OP_INVOKE_VIRTUAL = 110; // 0x6e
-    field public static final int OP_INVOKE_VIRTUAL_JUMBO = 8959; // 0x22ff
-    field @Deprecated public static final int OP_INVOKE_VIRTUAL_QUICK = 248; // 0xf8
-    field @Deprecated public static final int OP_INVOKE_VIRTUAL_QUICK_RANGE = 249; // 0xf9
-    field public static final int OP_INVOKE_VIRTUAL_RANGE = 116; // 0x74
-    field public static final int OP_IPUT = 89; // 0x59
-    field public static final int OP_IPUT_BOOLEAN = 92; // 0x5c
-    field public static final int OP_IPUT_BOOLEAN_JUMBO = 4351; // 0x10ff
-    field public static final int OP_IPUT_BYTE = 93; // 0x5d
-    field public static final int OP_IPUT_BYTE_JUMBO = 4607; // 0x11ff
-    field public static final int OP_IPUT_CHAR = 94; // 0x5e
-    field public static final int OP_IPUT_CHAR_JUMBO = 4863; // 0x12ff
-    field public static final int OP_IPUT_JUMBO = 3583; // 0xdff
-    field public static final int OP_IPUT_OBJECT = 91; // 0x5b
-    field public static final int OP_IPUT_OBJECT_JUMBO = 4095; // 0xfff
-    field @Deprecated public static final int OP_IPUT_OBJECT_QUICK = 247; // 0xf7
-    field @Deprecated public static final int OP_IPUT_QUICK = 245; // 0xf5
-    field public static final int OP_IPUT_SHORT = 95; // 0x5f
-    field public static final int OP_IPUT_SHORT_JUMBO = 5119; // 0x13ff
-    field public static final int OP_IPUT_WIDE = 90; // 0x5a
-    field public static final int OP_IPUT_WIDE_JUMBO = 3839; // 0xeff
-    field @Deprecated public static final int OP_IPUT_WIDE_QUICK = 246; // 0xf6
-    field @Deprecated public static final int OP_IPUT_WIDE_VOLATILE = 233; // 0xe9
-    field public static final int OP_LONG_TO_DOUBLE = 134; // 0x86
-    field public static final int OP_LONG_TO_FLOAT = 133; // 0x85
-    field public static final int OP_LONG_TO_INT = 132; // 0x84
-    field public static final int OP_MONITOR_ENTER = 29; // 0x1d
-    field public static final int OP_MONITOR_EXIT = 30; // 0x1e
-    field public static final int OP_MOVE = 1; // 0x1
-    field public static final int OP_MOVE_16 = 3; // 0x3
-    field public static final int OP_MOVE_EXCEPTION = 13; // 0xd
-    field public static final int OP_MOVE_FROM16 = 2; // 0x2
-    field public static final int OP_MOVE_OBJECT = 7; // 0x7
-    field public static final int OP_MOVE_OBJECT_16 = 9; // 0x9
-    field public static final int OP_MOVE_OBJECT_FROM16 = 8; // 0x8
-    field public static final int OP_MOVE_RESULT = 10; // 0xa
-    field public static final int OP_MOVE_RESULT_OBJECT = 12; // 0xc
-    field public static final int OP_MOVE_RESULT_WIDE = 11; // 0xb
-    field public static final int OP_MOVE_WIDE = 4; // 0x4
-    field public static final int OP_MOVE_WIDE_16 = 6; // 0x6
-    field public static final int OP_MOVE_WIDE_FROM16 = 5; // 0x5
-    field public static final int OP_MUL_DOUBLE = 173; // 0xad
-    field public static final int OP_MUL_DOUBLE_2ADDR = 205; // 0xcd
-    field public static final int OP_MUL_FLOAT = 168; // 0xa8
-    field public static final int OP_MUL_FLOAT_2ADDR = 200; // 0xc8
-    field public static final int OP_MUL_INT = 146; // 0x92
-    field public static final int OP_MUL_INT_2ADDR = 178; // 0xb2
-    field public static final int OP_MUL_INT_LIT16 = 210; // 0xd2
-    field public static final int OP_MUL_INT_LIT8 = 218; // 0xda
-    field public static final int OP_MUL_LONG = 157; // 0x9d
-    field public static final int OP_MUL_LONG_2ADDR = 189; // 0xbd
-    field public static final int OP_NEG_DOUBLE = 128; // 0x80
-    field public static final int OP_NEG_FLOAT = 127; // 0x7f
-    field public static final int OP_NEG_INT = 123; // 0x7b
-    field public static final int OP_NEG_LONG = 125; // 0x7d
-    field public static final int OP_NEW_ARRAY = 35; // 0x23
-    field public static final int OP_NEW_ARRAY_JUMBO = 1279; // 0x4ff
-    field public static final int OP_NEW_INSTANCE = 34; // 0x22
-    field public static final int OP_NEW_INSTANCE_JUMBO = 1023; // 0x3ff
-    field public static final int OP_NOP = 0; // 0x0
-    field public static final int OP_NOT_INT = 124; // 0x7c
-    field public static final int OP_NOT_LONG = 126; // 0x7e
-    field public static final int OP_OR_INT = 150; // 0x96
-    field public static final int OP_OR_INT_2ADDR = 182; // 0xb6
-    field public static final int OP_OR_INT_LIT16 = 214; // 0xd6
-    field public static final int OP_OR_INT_LIT8 = 222; // 0xde
-    field public static final int OP_OR_LONG = 161; // 0xa1
-    field public static final int OP_OR_LONG_2ADDR = 193; // 0xc1
-    field public static final int OP_PACKED_SWITCH = 43; // 0x2b
-    field public static final int OP_REM_DOUBLE = 175; // 0xaf
-    field public static final int OP_REM_DOUBLE_2ADDR = 207; // 0xcf
-    field public static final int OP_REM_FLOAT = 170; // 0xaa
-    field public static final int OP_REM_FLOAT_2ADDR = 202; // 0xca
-    field public static final int OP_REM_INT = 148; // 0x94
-    field public static final int OP_REM_INT_2ADDR = 180; // 0xb4
-    field public static final int OP_REM_INT_LIT16 = 212; // 0xd4
-    field public static final int OP_REM_INT_LIT8 = 220; // 0xdc
-    field public static final int OP_REM_LONG = 159; // 0x9f
-    field public static final int OP_REM_LONG_2ADDR = 191; // 0xbf
-    field public static final int OP_RETURN = 15; // 0xf
-    field public static final int OP_RETURN_OBJECT = 17; // 0x11
-    field public static final int OP_RETURN_VOID = 14; // 0xe
-    field public static final int OP_RETURN_WIDE = 16; // 0x10
-    field public static final int OP_RSUB_INT = 209; // 0xd1
-    field public static final int OP_RSUB_INT_LIT8 = 217; // 0xd9
-    field public static final int OP_SGET = 96; // 0x60
-    field public static final int OP_SGET_BOOLEAN = 99; // 0x63
-    field public static final int OP_SGET_BOOLEAN_JUMBO = 6143; // 0x17ff
-    field public static final int OP_SGET_BYTE = 100; // 0x64
-    field public static final int OP_SGET_BYTE_JUMBO = 6399; // 0x18ff
-    field public static final int OP_SGET_CHAR = 101; // 0x65
-    field public static final int OP_SGET_CHAR_JUMBO = 6655; // 0x19ff
-    field public static final int OP_SGET_JUMBO = 5375; // 0x14ff
-    field public static final int OP_SGET_OBJECT = 98; // 0x62
-    field public static final int OP_SGET_OBJECT_JUMBO = 5887; // 0x16ff
-    field public static final int OP_SGET_SHORT = 102; // 0x66
-    field public static final int OP_SGET_SHORT_JUMBO = 6911; // 0x1aff
-    field public static final int OP_SGET_WIDE = 97; // 0x61
-    field public static final int OP_SGET_WIDE_JUMBO = 5631; // 0x15ff
-    field @Deprecated public static final int OP_SGET_WIDE_VOLATILE = 234; // 0xea
-    field public static final int OP_SHL_INT = 152; // 0x98
-    field public static final int OP_SHL_INT_2ADDR = 184; // 0xb8
-    field public static final int OP_SHL_INT_LIT8 = 224; // 0xe0
-    field public static final int OP_SHL_LONG = 163; // 0xa3
-    field public static final int OP_SHL_LONG_2ADDR = 195; // 0xc3
-    field public static final int OP_SHR_INT = 153; // 0x99
-    field public static final int OP_SHR_INT_2ADDR = 185; // 0xb9
-    field public static final int OP_SHR_INT_LIT8 = 225; // 0xe1
-    field public static final int OP_SHR_LONG = 164; // 0xa4
-    field public static final int OP_SHR_LONG_2ADDR = 196; // 0xc4
-    field public static final int OP_SPARSE_SWITCH = 44; // 0x2c
-    field public static final int OP_SPUT = 103; // 0x67
-    field public static final int OP_SPUT_BOOLEAN = 106; // 0x6a
-    field public static final int OP_SPUT_BOOLEAN_JUMBO = 7935; // 0x1eff
-    field public static final int OP_SPUT_BYTE = 107; // 0x6b
-    field public static final int OP_SPUT_BYTE_JUMBO = 8191; // 0x1fff
-    field public static final int OP_SPUT_CHAR = 108; // 0x6c
-    field public static final int OP_SPUT_CHAR_JUMBO = 8447; // 0x20ff
-    field public static final int OP_SPUT_JUMBO = 7167; // 0x1bff
-    field public static final int OP_SPUT_OBJECT = 105; // 0x69
-    field public static final int OP_SPUT_OBJECT_JUMBO = 7679; // 0x1dff
-    field public static final int OP_SPUT_SHORT = 109; // 0x6d
-    field public static final int OP_SPUT_SHORT_JUMBO = 8703; // 0x21ff
-    field public static final int OP_SPUT_WIDE = 104; // 0x68
-    field public static final int OP_SPUT_WIDE_JUMBO = 7423; // 0x1cff
-    field @Deprecated public static final int OP_SPUT_WIDE_VOLATILE = 235; // 0xeb
-    field public static final int OP_SUB_DOUBLE = 172; // 0xac
-    field public static final int OP_SUB_DOUBLE_2ADDR = 204; // 0xcc
-    field public static final int OP_SUB_FLOAT = 167; // 0xa7
-    field public static final int OP_SUB_FLOAT_2ADDR = 199; // 0xc7
-    field public static final int OP_SUB_INT = 145; // 0x91
-    field public static final int OP_SUB_INT_2ADDR = 177; // 0xb1
-    field public static final int OP_SUB_LONG = 156; // 0x9c
-    field public static final int OP_SUB_LONG_2ADDR = 188; // 0xbc
-    field public static final int OP_THROW = 39; // 0x27
-    field @Deprecated public static final int OP_THROW_VERIFICATION_ERROR = 237; // 0xed
-    field public static final int OP_USHR_INT = 154; // 0x9a
-    field public static final int OP_USHR_INT_2ADDR = 186; // 0xba
-    field public static final int OP_USHR_INT_LIT8 = 226; // 0xe2
-    field public static final int OP_USHR_LONG = 165; // 0xa5
-    field public static final int OP_USHR_LONG_2ADDR = 197; // 0xc5
-    field public static final int OP_XOR_INT = 151; // 0x97
-    field public static final int OP_XOR_INT_2ADDR = 183; // 0xb7
-    field public static final int OP_XOR_INT_LIT16 = 215; // 0xd7
-    field public static final int OP_XOR_INT_LIT8 = 223; // 0xdf
-    field public static final int OP_XOR_LONG = 162; // 0xa2
-    field public static final int OP_XOR_LONG_2ADDR = 194; // 0xc2
-  }
-
-}
-
-package dalvik.system {
-
-  public class BaseDexClassLoader extends java.lang.ClassLoader {
-    ctor public BaseDexClassLoader(String, java.io.File, String, ClassLoader);
-    method public String findLibrary(String);
-    method protected java.util.Enumeration<java.net.URL> findResources(String);
-  }
-
-  public final class DelegateLastClassLoader extends dalvik.system.PathClassLoader {
-    ctor public DelegateLastClassLoader(String, ClassLoader);
-    ctor public DelegateLastClassLoader(String, String, ClassLoader);
-    ctor public DelegateLastClassLoader(@NonNull String, @Nullable String, @Nullable ClassLoader, boolean);
-  }
-
-  public class DexClassLoader extends dalvik.system.BaseDexClassLoader {
-    ctor public DexClassLoader(String, String, String, ClassLoader);
-  }
-
-  @Deprecated public final class DexFile {
-    ctor @Deprecated public DexFile(java.io.File) throws java.io.IOException;
-    ctor @Deprecated public DexFile(String) throws java.io.IOException;
-    method @Deprecated public void close() throws java.io.IOException;
-    method @Deprecated public java.util.Enumeration<java.lang.String> entries();
-    method @Deprecated public String getName();
-    method @Deprecated public static boolean isDexOptNeeded(String) throws java.io.FileNotFoundException, java.io.IOException;
-    method @Deprecated public Class loadClass(String, ClassLoader);
-    method @Deprecated public static dalvik.system.DexFile loadDex(String, String, int) throws java.io.IOException;
-  }
-
-  public final class InMemoryDexClassLoader extends dalvik.system.BaseDexClassLoader {
-    ctor public InMemoryDexClassLoader(@NonNull java.nio.ByteBuffer[], @Nullable String, @Nullable ClassLoader);
-    ctor public InMemoryDexClassLoader(@NonNull java.nio.ByteBuffer[], @Nullable ClassLoader);
-    ctor public InMemoryDexClassLoader(@NonNull java.nio.ByteBuffer, @Nullable ClassLoader);
-  }
-
-  public class PathClassLoader extends dalvik.system.BaseDexClassLoader {
-    ctor public PathClassLoader(String, ClassLoader);
-    ctor public PathClassLoader(String, String, ClassLoader);
-  }
-
-}
-
-package java.awt.font {
-
-  public final class NumericShaper implements java.io.Serializable {
-    method public static java.awt.font.NumericShaper getContextualShaper(int);
-    method public static java.awt.font.NumericShaper getContextualShaper(java.util.Set<java.awt.font.NumericShaper.Range>);
-    method public static java.awt.font.NumericShaper getContextualShaper(int, int);
-    method public static java.awt.font.NumericShaper getContextualShaper(java.util.Set<java.awt.font.NumericShaper.Range>, java.awt.font.NumericShaper.Range);
-    method public java.util.Set<java.awt.font.NumericShaper.Range> getRangeSet();
-    method public int getRanges();
-    method public static java.awt.font.NumericShaper getShaper(int);
-    method public static java.awt.font.NumericShaper getShaper(java.awt.font.NumericShaper.Range);
-    method public boolean isContextual();
-    method public void shape(char[], int, int);
-    method public void shape(char[], int, int, int);
-    method public void shape(char[], int, int, java.awt.font.NumericShaper.Range);
-    field public static final int ALL_RANGES = 524287; // 0x7ffff
-    field public static final int ARABIC = 2; // 0x2
-    field public static final int BENGALI = 16; // 0x10
-    field public static final int DEVANAGARI = 8; // 0x8
-    field public static final int EASTERN_ARABIC = 4; // 0x4
-    field public static final int ETHIOPIC = 65536; // 0x10000
-    field public static final int EUROPEAN = 1; // 0x1
-    field public static final int GUJARATI = 64; // 0x40
-    field public static final int GURMUKHI = 32; // 0x20
-    field public static final int KANNADA = 1024; // 0x400
-    field public static final int KHMER = 131072; // 0x20000
-    field public static final int LAO = 8192; // 0x2000
-    field public static final int MALAYALAM = 2048; // 0x800
-    field public static final int MONGOLIAN = 262144; // 0x40000
-    field public static final int MYANMAR = 32768; // 0x8000
-    field public static final int ORIYA = 128; // 0x80
-    field public static final int TAMIL = 256; // 0x100
-    field public static final int TELUGU = 512; // 0x200
-    field public static final int THAI = 4096; // 0x1000
-    field public static final int TIBETAN = 16384; // 0x4000
-  }
-
-  public enum NumericShaper.Range {
-    enum_constant public static final java.awt.font.NumericShaper.Range ARABIC;
-    enum_constant public static final java.awt.font.NumericShaper.Range BALINESE;
-    enum_constant public static final java.awt.font.NumericShaper.Range BENGALI;
-    enum_constant public static final java.awt.font.NumericShaper.Range CHAM;
-    enum_constant public static final java.awt.font.NumericShaper.Range DEVANAGARI;
-    enum_constant public static final java.awt.font.NumericShaper.Range EASTERN_ARABIC;
-    enum_constant public static final java.awt.font.NumericShaper.Range ETHIOPIC;
-    enum_constant public static final java.awt.font.NumericShaper.Range EUROPEAN;
-    enum_constant public static final java.awt.font.NumericShaper.Range GUJARATI;
-    enum_constant public static final java.awt.font.NumericShaper.Range GURMUKHI;
-    enum_constant public static final java.awt.font.NumericShaper.Range JAVANESE;
-    enum_constant public static final java.awt.font.NumericShaper.Range KANNADA;
-    enum_constant public static final java.awt.font.NumericShaper.Range KAYAH_LI;
-    enum_constant public static final java.awt.font.NumericShaper.Range KHMER;
-    enum_constant public static final java.awt.font.NumericShaper.Range LAO;
-    enum_constant public static final java.awt.font.NumericShaper.Range LEPCHA;
-    enum_constant public static final java.awt.font.NumericShaper.Range LIMBU;
-    enum_constant public static final java.awt.font.NumericShaper.Range MALAYALAM;
-    enum_constant public static final java.awt.font.NumericShaper.Range MEETEI_MAYEK;
-    enum_constant public static final java.awt.font.NumericShaper.Range MONGOLIAN;
-    enum_constant public static final java.awt.font.NumericShaper.Range MYANMAR;
-    enum_constant public static final java.awt.font.NumericShaper.Range MYANMAR_SHAN;
-    enum_constant public static final java.awt.font.NumericShaper.Range NEW_TAI_LUE;
-    enum_constant public static final java.awt.font.NumericShaper.Range NKO;
-    enum_constant public static final java.awt.font.NumericShaper.Range OL_CHIKI;
-    enum_constant public static final java.awt.font.NumericShaper.Range ORIYA;
-    enum_constant public static final java.awt.font.NumericShaper.Range SAURASHTRA;
-    enum_constant public static final java.awt.font.NumericShaper.Range SUNDANESE;
-    enum_constant public static final java.awt.font.NumericShaper.Range TAI_THAM_HORA;
-    enum_constant public static final java.awt.font.NumericShaper.Range TAI_THAM_THAM;
-    enum_constant public static final java.awt.font.NumericShaper.Range TAMIL;
-    enum_constant public static final java.awt.font.NumericShaper.Range TELUGU;
-    enum_constant public static final java.awt.font.NumericShaper.Range THAI;
-    enum_constant public static final java.awt.font.NumericShaper.Range TIBETAN;
-    enum_constant public static final java.awt.font.NumericShaper.Range VAI;
-  }
-
-  public final class TextAttribute extends java.text.AttributedCharacterIterator.Attribute {
-    ctor protected TextAttribute(String);
-    field public static final java.awt.font.TextAttribute BACKGROUND;
-    field public static final java.awt.font.TextAttribute BIDI_EMBEDDING;
-    field public static final java.awt.font.TextAttribute CHAR_REPLACEMENT;
-    field public static final java.awt.font.TextAttribute FAMILY;
-    field public static final java.awt.font.TextAttribute FONT;
-    field public static final java.awt.font.TextAttribute FOREGROUND;
-    field public static final java.awt.font.TextAttribute INPUT_METHOD_HIGHLIGHT;
-    field public static final java.awt.font.TextAttribute INPUT_METHOD_UNDERLINE;
-    field public static final java.awt.font.TextAttribute JUSTIFICATION;
-    field public static final Float JUSTIFICATION_FULL;
-    field public static final Float JUSTIFICATION_NONE;
-    field public static final java.awt.font.TextAttribute KERNING;
-    field public static final Integer KERNING_ON;
-    field public static final java.awt.font.TextAttribute LIGATURES;
-    field public static final Integer LIGATURES_ON;
-    field public static final java.awt.font.TextAttribute NUMERIC_SHAPING;
-    field public static final java.awt.font.TextAttribute POSTURE;
-    field public static final Float POSTURE_OBLIQUE;
-    field public static final Float POSTURE_REGULAR;
-    field public static final java.awt.font.TextAttribute RUN_DIRECTION;
-    field public static final Boolean RUN_DIRECTION_LTR;
-    field public static final Boolean RUN_DIRECTION_RTL;
-    field public static final java.awt.font.TextAttribute SIZE;
-    field public static final java.awt.font.TextAttribute STRIKETHROUGH;
-    field public static final Boolean STRIKETHROUGH_ON;
-    field public static final java.awt.font.TextAttribute SUPERSCRIPT;
-    field public static final Integer SUPERSCRIPT_SUB;
-    field public static final Integer SUPERSCRIPT_SUPER;
-    field public static final java.awt.font.TextAttribute SWAP_COLORS;
-    field public static final Boolean SWAP_COLORS_ON;
-    field public static final java.awt.font.TextAttribute TRACKING;
-    field public static final Float TRACKING_LOOSE;
-    field public static final Float TRACKING_TIGHT;
-    field public static final java.awt.font.TextAttribute TRANSFORM;
-    field public static final java.awt.font.TextAttribute UNDERLINE;
-    field public static final Integer UNDERLINE_LOW_DASHED;
-    field public static final Integer UNDERLINE_LOW_DOTTED;
-    field public static final Integer UNDERLINE_LOW_GRAY;
-    field public static final Integer UNDERLINE_LOW_ONE_PIXEL;
-    field public static final Integer UNDERLINE_LOW_TWO_PIXEL;
-    field public static final Integer UNDERLINE_ON;
-    field public static final java.awt.font.TextAttribute WEIGHT;
-    field public static final Float WEIGHT_BOLD;
-    field public static final Float WEIGHT_DEMIBOLD;
-    field public static final Float WEIGHT_DEMILIGHT;
-    field public static final Float WEIGHT_EXTRABOLD;
-    field public static final Float WEIGHT_EXTRA_LIGHT;
-    field public static final Float WEIGHT_HEAVY;
-    field public static final Float WEIGHT_LIGHT;
-    field public static final Float WEIGHT_MEDIUM;
-    field public static final Float WEIGHT_REGULAR;
-    field public static final Float WEIGHT_SEMIBOLD;
-    field public static final Float WEIGHT_ULTRABOLD;
-    field public static final java.awt.font.TextAttribute WIDTH;
-    field public static final Float WIDTH_CONDENSED;
-    field public static final Float WIDTH_EXTENDED;
-    field public static final Float WIDTH_REGULAR;
-    field public static final Float WIDTH_SEMI_CONDENSED;
-    field public static final Float WIDTH_SEMI_EXTENDED;
-  }
-
-}
-
-package java.beans {
-
-  public class IndexedPropertyChangeEvent extends java.beans.PropertyChangeEvent {
-    ctor public IndexedPropertyChangeEvent(Object, String, Object, Object, int);
-    method public int getIndex();
-  }
-
-  public class PropertyChangeEvent extends java.util.EventObject {
-    ctor public PropertyChangeEvent(Object, String, Object, Object);
-    method public Object getNewValue();
-    method public Object getOldValue();
-    method public Object getPropagationId();
-    method public String getPropertyName();
-    method public void setPropagationId(Object);
-  }
-
-  public interface PropertyChangeListener extends java.util.EventListener {
-    method public void propertyChange(java.beans.PropertyChangeEvent);
-  }
-
-  public class PropertyChangeListenerProxy extends java.util.EventListenerProxy<java.beans.PropertyChangeListener> implements java.beans.PropertyChangeListener {
-    ctor public PropertyChangeListenerProxy(String, java.beans.PropertyChangeListener);
-    method public String getPropertyName();
-    method public void propertyChange(java.beans.PropertyChangeEvent);
-  }
-
-  public class PropertyChangeSupport implements java.io.Serializable {
-    ctor public PropertyChangeSupport(Object);
-    method public void addPropertyChangeListener(java.beans.PropertyChangeListener);
-    method public void addPropertyChangeListener(String, java.beans.PropertyChangeListener);
-    method public void fireIndexedPropertyChange(String, int, Object, Object);
-    method public void fireIndexedPropertyChange(String, int, int, int);
-    method public void fireIndexedPropertyChange(String, int, boolean, boolean);
-    method public void firePropertyChange(String, Object, Object);
-    method public void firePropertyChange(String, int, int);
-    method public void firePropertyChange(String, boolean, boolean);
-    method public void firePropertyChange(java.beans.PropertyChangeEvent);
-    method public java.beans.PropertyChangeListener[] getPropertyChangeListeners();
-    method public java.beans.PropertyChangeListener[] getPropertyChangeListeners(String);
-    method public boolean hasListeners(String);
-    method public void removePropertyChangeListener(java.beans.PropertyChangeListener);
-    method public void removePropertyChangeListener(String, java.beans.PropertyChangeListener);
-  }
-
-}
-
-package java.io {
-
-  public class BufferedInputStream extends java.io.FilterInputStream {
-    ctor public BufferedInputStream(java.io.InputStream);
-    ctor public BufferedInputStream(java.io.InputStream, int);
-    field protected volatile byte[] buf;
-    field protected int count;
-    field protected int marklimit;
-    field protected int markpos;
-    field protected int pos;
-  }
-
-  public class BufferedOutputStream extends java.io.FilterOutputStream {
-    ctor public BufferedOutputStream(java.io.OutputStream);
-    ctor public BufferedOutputStream(java.io.OutputStream, int);
-    field protected byte[] buf;
-    field protected int count;
-  }
-
-  public class BufferedReader extends java.io.Reader {
-    ctor public BufferedReader(java.io.Reader, int);
-    ctor public BufferedReader(java.io.Reader);
-    method public void close() throws java.io.IOException;
-    method public java.util.stream.Stream<java.lang.String> lines();
-    method public int read(char[], int, int) throws java.io.IOException;
-    method public String readLine() throws java.io.IOException;
-  }
-
-  public class BufferedWriter extends java.io.Writer {
-    ctor public BufferedWriter(java.io.Writer);
-    ctor public BufferedWriter(java.io.Writer, int);
-    method public void close() throws java.io.IOException;
-    method public void flush() throws java.io.IOException;
-    method public void newLine() throws java.io.IOException;
-    method public void write(char[], int, int) throws java.io.IOException;
-  }
-
-  public class ByteArrayInputStream extends java.io.InputStream {
-    ctor public ByteArrayInputStream(byte[]);
-    ctor public ByteArrayInputStream(byte[], int, int);
-    method public int available();
-    method public int read();
-    method public int read(byte[], int, int);
-    method public void reset();
-    method public long skip(long);
-    field protected byte[] buf;
-    field protected int count;
-    field protected int mark;
-    field protected int pos;
-  }
-
-  public class ByteArrayOutputStream extends java.io.OutputStream {
-    ctor public ByteArrayOutputStream();
-    ctor public ByteArrayOutputStream(int);
-    method public void reset();
-    method public int size();
-    method @NonNull public byte[] toByteArray();
-    method @NonNull public String toString(@NonNull String) throws java.io.UnsupportedEncodingException;
-    method @Deprecated @NonNull public String toString(int);
-    method public void write(int);
-    method public void write(@NonNull byte[], int, int);
-    method public void writeTo(@NonNull java.io.OutputStream) throws java.io.IOException;
-    field @NonNull protected byte[] buf;
-    field protected int count;
-  }
-
-  public class CharArrayReader extends java.io.Reader {
-    ctor public CharArrayReader(char[]);
-    ctor public CharArrayReader(char[], int, int);
-    method public void close();
-    method public int read(char[], int, int) throws java.io.IOException;
-    field protected char[] buf;
-    field protected int count;
-    field protected int markedPos;
-    field protected int pos;
-  }
-
-  public class CharArrayWriter extends java.io.Writer {
-    ctor public CharArrayWriter();
-    ctor public CharArrayWriter(int);
-    method public java.io.CharArrayWriter append(CharSequence);
-    method public java.io.CharArrayWriter append(CharSequence, int, int);
-    method public java.io.CharArrayWriter append(char);
-    method public void close();
-    method public void flush();
-    method public void reset();
-    method public int size();
-    method public char[] toCharArray();
-    method public void write(int);
-    method public void write(char[], int, int);
-    method public void write(String, int, int);
-    method public void writeTo(java.io.Writer) throws java.io.IOException;
-    field protected char[] buf;
-    field protected int count;
-  }
-
-  public class CharConversionException extends java.io.IOException {
-    ctor public CharConversionException();
-    ctor public CharConversionException(String);
-  }
-
-  public interface Closeable extends java.lang.AutoCloseable {
-    method public void close() throws java.io.IOException;
-  }
-
-  public final class Console implements java.io.Flushable {
-    method public void flush();
-    method public java.io.Console format(String, java.lang.Object...);
-    method public java.io.Console printf(String, java.lang.Object...);
-    method public String readLine(String, java.lang.Object...);
-    method public String readLine();
-    method public char[] readPassword(String, java.lang.Object...);
-    method public char[] readPassword();
-    method public java.io.Reader reader();
-    method public java.io.PrintWriter writer();
-  }
-
-  public interface DataInput {
-    method public boolean readBoolean() throws java.io.IOException;
-    method public byte readByte() throws java.io.IOException;
-    method public char readChar() throws java.io.IOException;
-    method public double readDouble() throws java.io.IOException;
-    method public float readFloat() throws java.io.IOException;
-    method public void readFully(byte[]) throws java.io.IOException;
-    method public void readFully(byte[], int, int) throws java.io.IOException;
-    method public int readInt() throws java.io.IOException;
-    method public String readLine() throws java.io.IOException;
-    method public long readLong() throws java.io.IOException;
-    method public short readShort() throws java.io.IOException;
-    method public String readUTF() throws java.io.IOException;
-    method public int readUnsignedByte() throws java.io.IOException;
-    method public int readUnsignedShort() throws java.io.IOException;
-    method public int skipBytes(int) throws java.io.IOException;
-  }
-
-  public class DataInputStream extends java.io.FilterInputStream implements java.io.DataInput {
-    ctor public DataInputStream(java.io.InputStream);
-    method public final int read(byte[]) throws java.io.IOException;
-    method public final int read(byte[], int, int) throws java.io.IOException;
-    method public final boolean readBoolean() throws java.io.IOException;
-    method public final byte readByte() throws java.io.IOException;
-    method public final char readChar() throws java.io.IOException;
-    method public final double readDouble() throws java.io.IOException;
-    method public final float readFloat() throws java.io.IOException;
-    method public final void readFully(byte[]) throws java.io.IOException;
-    method public final void readFully(byte[], int, int) throws java.io.IOException;
-    method public final int readInt() throws java.io.IOException;
-    method @Deprecated public final String readLine() throws java.io.IOException;
-    method public final long readLong() throws java.io.IOException;
-    method public final short readShort() throws java.io.IOException;
-    method public final String readUTF() throws java.io.IOException;
-    method public static final String readUTF(java.io.DataInput) throws java.io.IOException;
-    method public final int readUnsignedByte() throws java.io.IOException;
-    method public final int readUnsignedShort() throws java.io.IOException;
-    method public final int skipBytes(int) throws java.io.IOException;
-  }
-
-  public interface DataOutput {
-    method public void write(int) throws java.io.IOException;
-    method public void write(byte[]) throws java.io.IOException;
-    method public void write(byte[], int, int) throws java.io.IOException;
-    method public void writeBoolean(boolean) throws java.io.IOException;
-    method public void writeByte(int) throws java.io.IOException;
-    method public void writeBytes(String) throws java.io.IOException;
-    method public void writeChar(int) throws java.io.IOException;
-    method public void writeChars(String) throws java.io.IOException;
-    method public void writeDouble(double) throws java.io.IOException;
-    method public void writeFloat(float) throws java.io.IOException;
-    method public void writeInt(int) throws java.io.IOException;
-    method public void writeLong(long) throws java.io.IOException;
-    method public void writeShort(int) throws java.io.IOException;
-    method public void writeUTF(String) throws java.io.IOException;
-  }
-
-  public class DataOutputStream extends java.io.FilterOutputStream implements java.io.DataOutput {
-    ctor public DataOutputStream(java.io.OutputStream);
-    method public final int size();
-    method public final void writeBoolean(boolean) throws java.io.IOException;
-    method public final void writeByte(int) throws java.io.IOException;
-    method public final void writeBytes(String) throws java.io.IOException;
-    method public final void writeChar(int) throws java.io.IOException;
-    method public final void writeChars(String) throws java.io.IOException;
-    method public final void writeDouble(double) throws java.io.IOException;
-    method public final void writeFloat(float) throws java.io.IOException;
-    method public final void writeInt(int) throws java.io.IOException;
-    method public final void writeLong(long) throws java.io.IOException;
-    method public final void writeShort(int) throws java.io.IOException;
-    method public final void writeUTF(String) throws java.io.IOException;
-    field protected int written;
-  }
-
-  public class EOFException extends java.io.IOException {
-    ctor public EOFException();
-    ctor public EOFException(String);
-  }
-
-  public interface Externalizable extends java.io.Serializable {
-    method public void readExternal(java.io.ObjectInput) throws java.lang.ClassNotFoundException, java.io.IOException;
-    method public void writeExternal(java.io.ObjectOutput) throws java.io.IOException;
-  }
-
-  public class File implements java.lang.Comparable<java.io.File> java.io.Serializable {
-    ctor public File(@NonNull String);
-    ctor public File(@Nullable String, @NonNull String);
-    ctor public File(@Nullable java.io.File, @NonNull String);
-    ctor public File(@NonNull java.net.URI);
-    method public boolean canExecute();
-    method public boolean canRead();
-    method public boolean canWrite();
-    method public int compareTo(@NonNull java.io.File);
-    method public boolean createNewFile() throws java.io.IOException;
-    method @NonNull public static java.io.File createTempFile(@NonNull String, @Nullable String, @Nullable java.io.File) throws java.io.IOException;
-    method @NonNull public static java.io.File createTempFile(@NonNull String, @Nullable String) throws java.io.IOException;
-    method public boolean delete();
-    method public void deleteOnExit();
-    method public boolean exists();
-    method @NonNull public java.io.File getAbsoluteFile();
-    method @NonNull public String getAbsolutePath();
-    method @NonNull public java.io.File getCanonicalFile() throws java.io.IOException;
-    method @NonNull public String getCanonicalPath() throws java.io.IOException;
-    method public long getFreeSpace();
-    method @NonNull public String getName();
-    method @Nullable public String getParent();
-    method @Nullable public java.io.File getParentFile();
-    method @NonNull public String getPath();
-    method public long getTotalSpace();
-    method public long getUsableSpace();
-    method public boolean isAbsolute();
-    method public boolean isDirectory();
-    method public boolean isFile();
-    method public boolean isHidden();
-    method public long lastModified();
-    method public long length();
-    method @Nullable public String[] list();
-    method @Nullable public String[] list(@Nullable java.io.FilenameFilter);
-    method @Nullable public java.io.File[] listFiles();
-    method @Nullable public java.io.File[] listFiles(@Nullable java.io.FilenameFilter);
-    method @Nullable public java.io.File[] listFiles(@Nullable java.io.FileFilter);
-    method @NonNull public static java.io.File[] listRoots();
-    method public boolean mkdir();
-    method public boolean mkdirs();
-    method public boolean renameTo(@NonNull java.io.File);
-    method public boolean setExecutable(boolean, boolean);
-    method public boolean setExecutable(boolean);
-    method public boolean setLastModified(long);
-    method public boolean setReadOnly();
-    method public boolean setReadable(boolean, boolean);
-    method public boolean setReadable(boolean);
-    method public boolean setWritable(boolean, boolean);
-    method public boolean setWritable(boolean);
-    method @NonNull public java.nio.file.Path toPath();
-    method @NonNull public java.net.URI toURI();
-    method @Deprecated @NonNull public java.net.URL toURL() throws java.net.MalformedURLException;
-    field @NonNull public static final String pathSeparator;
-    field public static final char pathSeparatorChar;
-    field @NonNull public static final String separator;
-    field public static final char separatorChar;
-  }
-
-  public final class FileDescriptor {
-    ctor public FileDescriptor();
-    method public void sync() throws java.io.SyncFailedException;
-    method public boolean valid();
-    field public static final java.io.FileDescriptor err;
-    field public static final java.io.FileDescriptor in;
-    field public static final java.io.FileDescriptor out;
-  }
-
-  @java.lang.FunctionalInterface public interface FileFilter {
-    method public boolean accept(java.io.File);
-  }
-
-  public class FileInputStream extends java.io.InputStream {
-    ctor public FileInputStream(String) throws java.io.FileNotFoundException;
-    ctor public FileInputStream(java.io.File) throws java.io.FileNotFoundException;
-    ctor public FileInputStream(java.io.FileDescriptor);
-    method protected void finalize() throws java.io.IOException;
-    method public java.nio.channels.FileChannel getChannel();
-    method public final java.io.FileDescriptor getFD() throws java.io.IOException;
-    method public int read() throws java.io.IOException;
-  }
-
-  public class FileNotFoundException extends java.io.IOException {
-    ctor public FileNotFoundException();
-    ctor public FileNotFoundException(String);
-  }
-
-  public class FileOutputStream extends java.io.OutputStream {
-    ctor public FileOutputStream(String) throws java.io.FileNotFoundException;
-    ctor public FileOutputStream(String, boolean) throws java.io.FileNotFoundException;
-    ctor public FileOutputStream(java.io.File) throws java.io.FileNotFoundException;
-    ctor public FileOutputStream(java.io.File, boolean) throws java.io.FileNotFoundException;
-    ctor public FileOutputStream(java.io.FileDescriptor);
-    method protected void finalize() throws java.io.IOException;
-    method public java.nio.channels.FileChannel getChannel();
-    method public final java.io.FileDescriptor getFD() throws java.io.IOException;
-    method public void write(int) throws java.io.IOException;
-  }
-
-  public final class FilePermission extends java.security.Permission implements java.io.Serializable {
-    ctor public FilePermission(String, String);
-    method public String getActions();
-    method public boolean implies(java.security.Permission);
-  }
-
-  public class FileReader extends java.io.InputStreamReader {
-    ctor public FileReader(String) throws java.io.FileNotFoundException;
-    ctor public FileReader(java.io.File) throws java.io.FileNotFoundException;
-    ctor public FileReader(java.io.FileDescriptor);
-  }
-
-  public class FileWriter extends java.io.OutputStreamWriter {
-    ctor public FileWriter(String) throws java.io.IOException;
-    ctor public FileWriter(String, boolean) throws java.io.IOException;
-    ctor public FileWriter(java.io.File) throws java.io.IOException;
-    ctor public FileWriter(java.io.File, boolean) throws java.io.IOException;
-    ctor public FileWriter(java.io.FileDescriptor);
-  }
-
-  @java.lang.FunctionalInterface public interface FilenameFilter {
-    method public boolean accept(java.io.File, String);
-  }
-
-  public class FilterInputStream extends java.io.InputStream {
-    ctor protected FilterInputStream(java.io.InputStream);
-    method public int read() throws java.io.IOException;
-    field protected volatile java.io.InputStream in;
-  }
-
-  public class FilterOutputStream extends java.io.OutputStream {
-    ctor public FilterOutputStream(java.io.OutputStream);
-    method public void write(int) throws java.io.IOException;
-    field protected java.io.OutputStream out;
-  }
-
-  public abstract class FilterReader extends java.io.Reader {
-    ctor protected FilterReader(java.io.Reader);
-    method public void close() throws java.io.IOException;
-    method public int read(char[], int, int) throws java.io.IOException;
-    field protected java.io.Reader in;
-  }
-
-  public abstract class FilterWriter extends java.io.Writer {
-    ctor protected FilterWriter(java.io.Writer);
-    method public void close() throws java.io.IOException;
-    method public void flush() throws java.io.IOException;
-    method public void write(char[], int, int) throws java.io.IOException;
-    field protected java.io.Writer out;
-  }
-
-  public interface Flushable {
-    method public void flush() throws java.io.IOException;
-  }
-
-  public class IOError extends java.lang.Error {
-    ctor public IOError(Throwable);
-  }
-
-  public class IOException extends java.lang.Exception {
-    ctor public IOException();
-    ctor public IOException(String);
-    ctor public IOException(String, Throwable);
-    ctor public IOException(Throwable);
-  }
-
-  public abstract class InputStream implements java.io.Closeable {
-    ctor public InputStream();
-    method public int available() throws java.io.IOException;
-    method public void close() throws java.io.IOException;
-    method public void mark(int);
-    method public boolean markSupported();
-    method public abstract int read() throws java.io.IOException;
-    method public int read(byte[]) throws java.io.IOException;
-    method public int read(byte[], int, int) throws java.io.IOException;
-    method public void reset() throws java.io.IOException;
-    method public long skip(long) throws java.io.IOException;
-  }
-
-  public class InputStreamReader extends java.io.Reader {
-    ctor public InputStreamReader(java.io.InputStream);
-    ctor public InputStreamReader(java.io.InputStream, String) throws java.io.UnsupportedEncodingException;
-    ctor public InputStreamReader(java.io.InputStream, java.nio.charset.Charset);
-    ctor public InputStreamReader(java.io.InputStream, java.nio.charset.CharsetDecoder);
-    method public void close() throws java.io.IOException;
-    method public String getEncoding();
-    method public int read(char[], int, int) throws java.io.IOException;
-  }
-
-  public class InterruptedIOException extends java.io.IOException {
-    ctor public InterruptedIOException();
-    ctor public InterruptedIOException(String);
-    field public int bytesTransferred;
-  }
-
-  public class InvalidClassException extends java.io.ObjectStreamException {
-    ctor public InvalidClassException(String);
-    ctor public InvalidClassException(String, String);
-    field public String classname;
-  }
-
-  public class InvalidObjectException extends java.io.ObjectStreamException {
-    ctor public InvalidObjectException(String);
-  }
-
-  @Deprecated public class LineNumberInputStream extends java.io.FilterInputStream {
-    ctor @Deprecated public LineNumberInputStream(java.io.InputStream);
-    method @Deprecated public int getLineNumber();
-    method @Deprecated public void setLineNumber(int);
-  }
-
-  public class LineNumberReader extends java.io.BufferedReader {
-    ctor public LineNumberReader(java.io.Reader);
-    ctor public LineNumberReader(java.io.Reader, int);
-    method public int getLineNumber();
-    method public void setLineNumber(int);
-  }
-
-  public class NotActiveException extends java.io.ObjectStreamException {
-    ctor public NotActiveException(String);
-    ctor public NotActiveException();
-  }
-
-  public class NotSerializableException extends java.io.ObjectStreamException {
-    ctor public NotSerializableException(String);
-    ctor public NotSerializableException();
-  }
-
-  public interface ObjectInput extends java.io.DataInput java.lang.AutoCloseable {
-    method public int available() throws java.io.IOException;
-    method public void close() throws java.io.IOException;
-    method public int read() throws java.io.IOException;
-    method public int read(byte[]) throws java.io.IOException;
-    method public int read(byte[], int, int) throws java.io.IOException;
-    method public Object readObject() throws java.lang.ClassNotFoundException, java.io.IOException;
-    method public long skip(long) throws java.io.IOException;
-  }
-
-  public class ObjectInputStream extends java.io.InputStream implements java.io.ObjectInput java.io.ObjectStreamConstants {
-    ctor public ObjectInputStream(java.io.InputStream) throws java.io.IOException;
-    ctor protected ObjectInputStream() throws java.io.IOException, java.lang.SecurityException;
-    method public void defaultReadObject() throws java.lang.ClassNotFoundException, java.io.IOException;
-    method protected boolean enableResolveObject(boolean) throws java.lang.SecurityException;
-    method public int read() throws java.io.IOException;
-    method public boolean readBoolean() throws java.io.IOException;
-    method public byte readByte() throws java.io.IOException;
-    method public char readChar() throws java.io.IOException;
-    method protected java.io.ObjectStreamClass readClassDescriptor() throws java.lang.ClassNotFoundException, java.io.IOException;
-    method public double readDouble() throws java.io.IOException;
-    method public java.io.ObjectInputStream.GetField readFields() throws java.lang.ClassNotFoundException, java.io.IOException;
-    method public float readFloat() throws java.io.IOException;
-    method public void readFully(byte[]) throws java.io.IOException;
-    method public void readFully(byte[], int, int) throws java.io.IOException;
-    method public int readInt() throws java.io.IOException;
-    method @Deprecated public String readLine() throws java.io.IOException;
-    method public long readLong() throws java.io.IOException;
-    method public final Object readObject() throws java.lang.ClassNotFoundException, java.io.IOException;
-    method protected Object readObjectOverride() throws java.lang.ClassNotFoundException, java.io.IOException;
-    method public short readShort() throws java.io.IOException;
-    method protected void readStreamHeader() throws java.io.IOException, java.io.StreamCorruptedException;
-    method public String readUTF() throws java.io.IOException;
-    method public Object readUnshared() throws java.lang.ClassNotFoundException, java.io.IOException;
-    method public int readUnsignedByte() throws java.io.IOException;
-    method public int readUnsignedShort() throws java.io.IOException;
-    method public void registerValidation(java.io.ObjectInputValidation, int) throws java.io.InvalidObjectException, java.io.NotActiveException;
-    method protected Class<?> resolveClass(java.io.ObjectStreamClass) throws java.lang.ClassNotFoundException, java.io.IOException;
-    method protected Object resolveObject(Object) throws java.io.IOException;
-    method protected Class<?> resolveProxyClass(String[]) throws java.lang.ClassNotFoundException, java.io.IOException;
-    method public int skipBytes(int) throws java.io.IOException;
-  }
-
-  public abstract static class ObjectInputStream.GetField {
-    ctor public ObjectInputStream.GetField();
-    method public abstract boolean defaulted(String) throws java.io.IOException;
-    method public abstract boolean get(String, boolean) throws java.io.IOException;
-    method public abstract byte get(String, byte) throws java.io.IOException;
-    method public abstract char get(String, char) throws java.io.IOException;
-    method public abstract short get(String, short) throws java.io.IOException;
-    method public abstract int get(String, int) throws java.io.IOException;
-    method public abstract long get(String, long) throws java.io.IOException;
-    method public abstract float get(String, float) throws java.io.IOException;
-    method public abstract double get(String, double) throws java.io.IOException;
-    method public abstract Object get(String, Object) throws java.io.IOException;
-    method public abstract java.io.ObjectStreamClass getObjectStreamClass();
-  }
-
-  public interface ObjectInputValidation {
-    method public void validateObject() throws java.io.InvalidObjectException;
-  }
-
-  public interface ObjectOutput extends java.io.DataOutput java.lang.AutoCloseable {
-    method public void close() throws java.io.IOException;
-    method public void flush() throws java.io.IOException;
-    method public void writeObject(Object) throws java.io.IOException;
-  }
-
-  public class ObjectOutputStream extends java.io.OutputStream implements java.io.ObjectOutput java.io.ObjectStreamConstants {
-    ctor public ObjectOutputStream(java.io.OutputStream) throws java.io.IOException;
-    ctor protected ObjectOutputStream() throws java.io.IOException, java.lang.SecurityException;
-    method protected void annotateClass(Class<?>) throws java.io.IOException;
-    method protected void annotateProxyClass(Class<?>) throws java.io.IOException;
-    method public void defaultWriteObject() throws java.io.IOException;
-    method protected void drain() throws java.io.IOException;
-    method protected boolean enableReplaceObject(boolean) throws java.lang.SecurityException;
-    method public java.io.ObjectOutputStream.PutField putFields() throws java.io.IOException;
-    method protected Object replaceObject(Object) throws java.io.IOException;
-    method public void reset() throws java.io.IOException;
-    method public void useProtocolVersion(int) throws java.io.IOException;
-    method public void write(int) throws java.io.IOException;
-    method public void writeBoolean(boolean) throws java.io.IOException;
-    method public void writeByte(int) throws java.io.IOException;
-    method public void writeBytes(String) throws java.io.IOException;
-    method public void writeChar(int) throws java.io.IOException;
-    method public void writeChars(String) throws java.io.IOException;
-    method protected void writeClassDescriptor(java.io.ObjectStreamClass) throws java.io.IOException;
-    method public void writeDouble(double) throws java.io.IOException;
-    method public void writeFields() throws java.io.IOException;
-    method public void writeFloat(float) throws java.io.IOException;
-    method public void writeInt(int) throws java.io.IOException;
-    method public void writeLong(long) throws java.io.IOException;
-    method public final void writeObject(Object) throws java.io.IOException;
-    method protected void writeObjectOverride(Object) throws java.io.IOException;
-    method public void writeShort(int) throws java.io.IOException;
-    method protected void writeStreamHeader() throws java.io.IOException;
-    method public void writeUTF(String) throws java.io.IOException;
-    method public void writeUnshared(Object) throws java.io.IOException;
-  }
-
-  public abstract static class ObjectOutputStream.PutField {
-    ctor public ObjectOutputStream.PutField();
-    method public abstract void put(String, boolean);
-    method public abstract void put(String, byte);
-    method public abstract void put(String, char);
-    method public abstract void put(String, short);
-    method public abstract void put(String, int);
-    method public abstract void put(String, long);
-    method public abstract void put(String, float);
-    method public abstract void put(String, double);
-    method public abstract void put(String, Object);
-    method @Deprecated public abstract void write(java.io.ObjectOutput) throws java.io.IOException;
-  }
-
-  public class ObjectStreamClass implements java.io.Serializable {
-    method public Class<?> forClass();
-    method public java.io.ObjectStreamField getField(String);
-    method public java.io.ObjectStreamField[] getFields();
-    method public String getName();
-    method public long getSerialVersionUID();
-    method public static java.io.ObjectStreamClass lookup(Class<?>);
-    method public static java.io.ObjectStreamClass lookupAny(Class<?>);
-    field public static final java.io.ObjectStreamField[] NO_FIELDS;
-  }
-
-  public interface ObjectStreamConstants {
-    field public static final int PROTOCOL_VERSION_1 = 1; // 0x1
-    field public static final int PROTOCOL_VERSION_2 = 2; // 0x2
-    field public static final byte SC_BLOCK_DATA = 8; // 0x8
-    field public static final byte SC_ENUM = 16; // 0x10
-    field public static final byte SC_EXTERNALIZABLE = 4; // 0x4
-    field public static final byte SC_SERIALIZABLE = 2; // 0x2
-    field public static final byte SC_WRITE_METHOD = 1; // 0x1
-    field public static final short STREAM_MAGIC = -21267; // 0xffffaced
-    field public static final short STREAM_VERSION = 5; // 0x5
-    field public static final java.io.SerializablePermission SUBCLASS_IMPLEMENTATION_PERMISSION;
-    field public static final java.io.SerializablePermission SUBSTITUTION_PERMISSION;
-    field public static final byte TC_ARRAY = 117; // 0x75
-    field public static final byte TC_BASE = 112; // 0x70
-    field public static final byte TC_BLOCKDATA = 119; // 0x77
-    field public static final byte TC_BLOCKDATALONG = 122; // 0x7a
-    field public static final byte TC_CLASS = 118; // 0x76
-    field public static final byte TC_CLASSDESC = 114; // 0x72
-    field public static final byte TC_ENDBLOCKDATA = 120; // 0x78
-    field public static final byte TC_ENUM = 126; // 0x7e
-    field public static final byte TC_EXCEPTION = 123; // 0x7b
-    field public static final byte TC_LONGSTRING = 124; // 0x7c
-    field public static final byte TC_MAX = 126; // 0x7e
-    field public static final byte TC_NULL = 112; // 0x70
-    field public static final byte TC_OBJECT = 115; // 0x73
-    field public static final byte TC_PROXYCLASSDESC = 125; // 0x7d
-    field public static final byte TC_REFERENCE = 113; // 0x71
-    field public static final byte TC_RESET = 121; // 0x79
-    field public static final byte TC_STRING = 116; // 0x74
-    field public static final int baseWireHandle = 8257536; // 0x7e0000
-  }
-
-  public abstract class ObjectStreamException extends java.io.IOException {
-    ctor protected ObjectStreamException(String);
-    ctor protected ObjectStreamException();
-  }
-
-  public class ObjectStreamField implements java.lang.Comparable<java.lang.Object> {
-    ctor public ObjectStreamField(String, Class<?>);
-    ctor public ObjectStreamField(String, Class<?>, boolean);
-    method public int compareTo(Object);
-    method public String getName();
-    method public int getOffset();
-    method public Class<?> getType();
-    method public char getTypeCode();
-    method public String getTypeString();
-    method public boolean isPrimitive();
-    method public boolean isUnshared();
-    method protected void setOffset(int);
-  }
-
-  public class OptionalDataException extends java.io.ObjectStreamException {
-    field public boolean eof;
-    field public int length;
-  }
-
-  public abstract class OutputStream implements java.io.Closeable java.io.Flushable {
-    ctor public OutputStream();
-    method public void close() throws java.io.IOException;
-    method public void flush() throws java.io.IOException;
-    method public abstract void write(int) throws java.io.IOException;
-    method public void write(byte[]) throws java.io.IOException;
-    method public void write(byte[], int, int) throws java.io.IOException;
-  }
-
-  public class OutputStreamWriter extends java.io.Writer {
-    ctor public OutputStreamWriter(java.io.OutputStream, String) throws java.io.UnsupportedEncodingException;
-    ctor public OutputStreamWriter(java.io.OutputStream);
-    ctor public OutputStreamWriter(java.io.OutputStream, java.nio.charset.Charset);
-    ctor public OutputStreamWriter(java.io.OutputStream, java.nio.charset.CharsetEncoder);
-    method public void close() throws java.io.IOException;
-    method public void flush() throws java.io.IOException;
-    method public String getEncoding();
-    method public void write(char[], int, int) throws java.io.IOException;
-  }
-
-  public class PipedInputStream extends java.io.InputStream {
-    ctor public PipedInputStream(java.io.PipedOutputStream) throws java.io.IOException;
-    ctor public PipedInputStream(java.io.PipedOutputStream, int) throws java.io.IOException;
-    ctor public PipedInputStream();
-    ctor public PipedInputStream(int);
-    method public void connect(java.io.PipedOutputStream) throws java.io.IOException;
-    method public int read() throws java.io.IOException;
-    method protected void receive(int) throws java.io.IOException;
-    field protected static final int PIPE_SIZE = 1024; // 0x400
-    field protected byte[] buffer;
-    field protected int in;
-    field protected int out;
-  }
-
-  public class PipedOutputStream extends java.io.OutputStream {
-    ctor public PipedOutputStream(java.io.PipedInputStream) throws java.io.IOException;
-    ctor public PipedOutputStream();
-    method public void connect(java.io.PipedInputStream) throws java.io.IOException;
-    method public void write(int) throws java.io.IOException;
-  }
-
-  public class PipedReader extends java.io.Reader {
-    ctor public PipedReader(java.io.PipedWriter) throws java.io.IOException;
-    ctor public PipedReader(java.io.PipedWriter, int) throws java.io.IOException;
-    ctor public PipedReader();
-    ctor public PipedReader(int);
-    method public void close() throws java.io.IOException;
-    method public void connect(java.io.PipedWriter) throws java.io.IOException;
-    method public int read(char[], int, int) throws java.io.IOException;
-  }
-
-  public class PipedWriter extends java.io.Writer {
-    ctor public PipedWriter(java.io.PipedReader) throws java.io.IOException;
-    ctor public PipedWriter();
-    method public void close() throws java.io.IOException;
-    method public void connect(java.io.PipedReader) throws java.io.IOException;
-    method public void flush() throws java.io.IOException;
-    method public void write(char[], int, int) throws java.io.IOException;
-  }
-
-  public class PrintStream extends java.io.FilterOutputStream implements java.lang.Appendable java.io.Closeable {
-    ctor public PrintStream(java.io.OutputStream);
-    ctor public PrintStream(java.io.OutputStream, boolean);
-    ctor public PrintStream(java.io.OutputStream, boolean, String) throws java.io.UnsupportedEncodingException;
-    ctor public PrintStream(String) throws java.io.FileNotFoundException;
-    ctor public PrintStream(String, String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
-    ctor public PrintStream(java.io.File) throws java.io.FileNotFoundException;
-    ctor public PrintStream(java.io.File, String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
-    method public java.io.PrintStream append(CharSequence);
-    method public java.io.PrintStream append(CharSequence, int, int);
-    method public java.io.PrintStream append(char);
-    method public boolean checkError();
-    method protected void clearError();
-    method public void close();
-    method public void flush();
-    method public java.io.PrintStream format(String, java.lang.Object...);
-    method public java.io.PrintStream format(java.util.Locale, String, java.lang.Object...);
-    method public void print(boolean);
-    method public void print(char);
-    method public void print(int);
-    method public void print(long);
-    method public void print(float);
-    method public void print(double);
-    method public void print(char[]);
-    method public void print(String);
-    method public void print(Object);
-    method public java.io.PrintStream printf(String, java.lang.Object...);
-    method public java.io.PrintStream printf(java.util.Locale, String, java.lang.Object...);
-    method public void println();
-    method public void println(boolean);
-    method public void println(char);
-    method public void println(int);
-    method public void println(long);
-    method public void println(float);
-    method public void println(double);
-    method public void println(char[]);
-    method public void println(String);
-    method public void println(Object);
-    method protected void setError();
-    method public void write(int);
-    method public void write(byte[], int, int);
-  }
-
-  public class PrintWriter extends java.io.Writer {
-    ctor public PrintWriter(@NonNull java.io.Writer);
-    ctor public PrintWriter(@NonNull java.io.Writer, boolean);
-    ctor public PrintWriter(@NonNull java.io.OutputStream);
-    ctor public PrintWriter(@NonNull java.io.OutputStream, boolean);
-    ctor public PrintWriter(@NonNull String) throws java.io.FileNotFoundException;
-    ctor public PrintWriter(@NonNull String, @NonNull String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
-    ctor public PrintWriter(@NonNull java.io.File) throws java.io.FileNotFoundException;
-    ctor public PrintWriter(@NonNull java.io.File, @NonNull String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
-    method @NonNull public java.io.PrintWriter append(@Nullable CharSequence);
-    method @NonNull public java.io.PrintWriter append(@Nullable CharSequence, int, int);
-    method @NonNull public java.io.PrintWriter append(char);
-    method public boolean checkError();
-    method protected void clearError();
-    method public void close();
-    method public void flush();
-    method @NonNull public java.io.PrintWriter format(@NonNull String, @NonNull java.lang.Object...);
-    method @NonNull public java.io.PrintWriter format(@Nullable java.util.Locale, @NonNull String, @NonNull java.lang.Object...);
-    method public void print(boolean);
-    method public void print(char);
-    method public void print(int);
-    method public void print(long);
-    method public void print(float);
-    method public void print(double);
-    method public void print(char[]);
-    method public void print(@Nullable String);
-    method public void print(@Nullable Object);
-    method @NonNull public java.io.PrintWriter printf(@NonNull String, @NonNull java.lang.Object...);
-    method @NonNull public java.io.PrintWriter printf(@Nullable java.util.Locale, @NonNull String, @NonNull java.lang.Object...);
-    method public void println();
-    method public void println(boolean);
-    method public void println(char);
-    method public void println(int);
-    method public void println(long);
-    method public void println(float);
-    method public void println(double);
-    method public void println(char[]);
-    method public void println(@Nullable String);
-    method public void println(@Nullable Object);
-    method protected void setError();
-    method public void write(int);
-    method public void write(char[], int, int);
-    method public void write(char[]);
-    method public void write(@NonNull String, int, int);
-    method public void write(@NonNull String);
-    field protected java.io.Writer out;
-  }
-
-  public class PushbackInputStream extends java.io.FilterInputStream {
-    ctor public PushbackInputStream(java.io.InputStream, int);
-    ctor public PushbackInputStream(java.io.InputStream);
-    method public void unread(int) throws java.io.IOException;
-    method public void unread(byte[], int, int) throws java.io.IOException;
-    method public void unread(byte[]) throws java.io.IOException;
-    field protected byte[] buf;
-    field protected int pos;
-  }
-
-  public class PushbackReader extends java.io.FilterReader {
-    ctor public PushbackReader(java.io.Reader, int);
-    ctor public PushbackReader(java.io.Reader);
-    method public void unread(int) throws java.io.IOException;
-    method public void unread(char[], int, int) throws java.io.IOException;
-    method public void unread(char[]) throws java.io.IOException;
-  }
-
-  public class RandomAccessFile implements java.io.Closeable java.io.DataInput java.io.DataOutput {
-    ctor public RandomAccessFile(String, String) throws java.io.FileNotFoundException;
-    ctor public RandomAccessFile(java.io.File, String) throws java.io.FileNotFoundException;
-    method public void close() throws java.io.IOException;
-    method public final java.nio.channels.FileChannel getChannel();
-    method public final java.io.FileDescriptor getFD() throws java.io.IOException;
-    method public long getFilePointer() throws java.io.IOException;
-    method public long length() throws java.io.IOException;
-    method public int read() throws java.io.IOException;
-    method public int read(byte[], int, int) throws java.io.IOException;
-    method public int read(byte[]) throws java.io.IOException;
-    method public final boolean readBoolean() throws java.io.IOException;
-    method public final byte readByte() throws java.io.IOException;
-    method public final char readChar() throws java.io.IOException;
-    method public final double readDouble() throws java.io.IOException;
-    method public final float readFloat() throws java.io.IOException;
-    method public final void readFully(byte[]) throws java.io.IOException;
-    method public final void readFully(byte[], int, int) throws java.io.IOException;
-    method public final int readInt() throws java.io.IOException;
-    method public final String readLine() throws java.io.IOException;
-    method public final long readLong() throws java.io.IOException;
-    method public final short readShort() throws java.io.IOException;
-    method public final String readUTF() throws java.io.IOException;
-    method public final int readUnsignedByte() throws java.io.IOException;
-    method public final int readUnsignedShort() throws java.io.IOException;
-    method public void seek(long) throws java.io.IOException;
-    method public void setLength(long) throws java.io.IOException;
-    method public int skipBytes(int) throws java.io.IOException;
-    method public void write(int) throws java.io.IOException;
-    method public void write(byte[]) throws java.io.IOException;
-    method public void write(byte[], int, int) throws java.io.IOException;
-    method public final void writeBoolean(boolean) throws java.io.IOException;
-    method public final void writeByte(int) throws java.io.IOException;
-    method public final void writeBytes(String) throws java.io.IOException;
-    method public final void writeChar(int) throws java.io.IOException;
-    method public final void writeChars(String) throws java.io.IOException;
-    method public final void writeDouble(double) throws java.io.IOException;
-    method public final void writeFloat(float) throws java.io.IOException;
-    method public final void writeInt(int) throws java.io.IOException;
-    method public final void writeLong(long) throws java.io.IOException;
-    method public final void writeShort(int) throws java.io.IOException;
-    method public final void writeUTF(String) throws java.io.IOException;
-  }
-
-  public abstract class Reader implements java.io.Closeable java.lang.Readable {
-    ctor protected Reader();
-    ctor protected Reader(Object);
-    method public void mark(int) throws java.io.IOException;
-    method public boolean markSupported();
-    method public int read(java.nio.CharBuffer) throws java.io.IOException;
-    method public int read() throws java.io.IOException;
-    method public int read(char[]) throws java.io.IOException;
-    method public abstract int read(char[], int, int) throws java.io.IOException;
-    method public boolean ready() throws java.io.IOException;
-    method public void reset() throws java.io.IOException;
-    method public long skip(long) throws java.io.IOException;
-    field protected Object lock;
-  }
-
-  public class SequenceInputStream extends java.io.InputStream {
-    ctor public SequenceInputStream(java.util.Enumeration<? extends java.io.InputStream>);
-    ctor public SequenceInputStream(java.io.InputStream, java.io.InputStream);
-    method public int read() throws java.io.IOException;
-  }
-
-  public interface Serializable {
-  }
-
-  public final class SerializablePermission extends java.security.BasicPermission {
-    ctor public SerializablePermission(String);
-    ctor public SerializablePermission(String, String);
-  }
-
-  public class StreamCorruptedException extends java.io.ObjectStreamException {
-    ctor public StreamCorruptedException(String);
-    ctor public StreamCorruptedException();
-  }
-
-  public class StreamTokenizer {
-    ctor @Deprecated public StreamTokenizer(java.io.InputStream);
-    ctor public StreamTokenizer(java.io.Reader);
-    method public void commentChar(int);
-    method public void eolIsSignificant(boolean);
-    method public int lineno();
-    method public void lowerCaseMode(boolean);
-    method public int nextToken() throws java.io.IOException;
-    method public void ordinaryChar(int);
-    method public void ordinaryChars(int, int);
-    method public void parseNumbers();
-    method public void pushBack();
-    method public void quoteChar(int);
-    method public void resetSyntax();
-    method public void slashSlashComments(boolean);
-    method public void slashStarComments(boolean);
-    method public void whitespaceChars(int, int);
-    method public void wordChars(int, int);
-    field public static final int TT_EOF = -1; // 0xffffffff
-    field public static final int TT_EOL = 10; // 0xa
-    field public static final int TT_NUMBER = -2; // 0xfffffffe
-    field public static final int TT_WORD = -3; // 0xfffffffd
-    field public double nval;
-    field public String sval;
-    field public int ttype;
-  }
-
-  @Deprecated public class StringBufferInputStream extends java.io.InputStream {
-    ctor @Deprecated public StringBufferInputStream(String);
-    method @Deprecated public int available();
-    method @Deprecated public int read();
-    method @Deprecated public int read(byte[], int, int);
-    method @Deprecated public void reset();
-    method @Deprecated public long skip(long);
-    field @Deprecated protected String buffer;
-    field @Deprecated protected int count;
-    field @Deprecated protected int pos;
-  }
-
-  public class StringReader extends java.io.Reader {
-    ctor public StringReader(String);
-    method public void close();
-    method public int read(char[], int, int) throws java.io.IOException;
-  }
-
-  public class StringWriter extends java.io.Writer {
-    ctor public StringWriter();
-    ctor public StringWriter(int);
-    method public java.io.StringWriter append(CharSequence);
-    method public java.io.StringWriter append(CharSequence, int, int);
-    method public java.io.StringWriter append(char);
-    method public void close() throws java.io.IOException;
-    method public void flush();
-    method public StringBuffer getBuffer();
-    method public void write(int);
-    method public void write(char[], int, int);
-    method public void write(String);
-    method public void write(String, int, int);
-  }
-
-  public class SyncFailedException extends java.io.IOException {
-    ctor public SyncFailedException(String);
-  }
-
-  public class UTFDataFormatException extends java.io.IOException {
-    ctor public UTFDataFormatException();
-    ctor public UTFDataFormatException(String);
-  }
-
-  public class UncheckedIOException extends java.lang.RuntimeException {
-    ctor public UncheckedIOException(String, java.io.IOException);
-    ctor public UncheckedIOException(java.io.IOException);
-    method public java.io.IOException getCause();
-  }
-
-  public class UnsupportedEncodingException extends java.io.IOException {
-    ctor public UnsupportedEncodingException();
-    ctor public UnsupportedEncodingException(String);
-  }
-
-  public class WriteAbortedException extends java.io.ObjectStreamException {
-    ctor public WriteAbortedException(String, Exception);
-    field public Exception detail;
-  }
-
-  public abstract class Writer implements java.lang.Appendable java.io.Closeable java.io.Flushable {
-    ctor protected Writer();
-    ctor protected Writer(Object);
-    method public java.io.Writer append(CharSequence) throws java.io.IOException;
-    method public java.io.Writer append(CharSequence, int, int) throws java.io.IOException;
-    method public java.io.Writer append(char) throws java.io.IOException;
-    method public void write(int) throws java.io.IOException;
-    method public void write(char[]) throws java.io.IOException;
-    method public abstract void write(char[], int, int) throws java.io.IOException;
-    method public void write(String) throws java.io.IOException;
-    method public void write(String, int, int) throws java.io.IOException;
-    field protected Object lock;
-  }
-
-}
-
-package java.lang {
-
-  public class AbstractMethodError extends java.lang.IncompatibleClassChangeError {
-    ctor public AbstractMethodError();
-    ctor public AbstractMethodError(String);
-  }
-
-  public interface Appendable {
-    method @NonNull public Appendable append(@Nullable CharSequence) throws java.io.IOException;
-    method @NonNull public Appendable append(@Nullable CharSequence, int, int) throws java.io.IOException;
-    method @NonNull public Appendable append(char) throws java.io.IOException;
-  }
-
-  public class ArithmeticException extends java.lang.RuntimeException {
-    ctor public ArithmeticException();
-    ctor public ArithmeticException(String);
-  }
-
-  public class ArrayIndexOutOfBoundsException extends java.lang.IndexOutOfBoundsException {
-    ctor public ArrayIndexOutOfBoundsException();
-    ctor public ArrayIndexOutOfBoundsException(int);
-    ctor public ArrayIndexOutOfBoundsException(String);
-  }
-
-  public class ArrayStoreException extends java.lang.RuntimeException {
-    ctor public ArrayStoreException();
-    ctor public ArrayStoreException(String);
-  }
-
-  public class AssertionError extends java.lang.Error {
-    ctor public AssertionError();
-    ctor public AssertionError(Object);
-    ctor public AssertionError(boolean);
-    ctor public AssertionError(char);
-    ctor public AssertionError(int);
-    ctor public AssertionError(long);
-    ctor public AssertionError(float);
-    ctor public AssertionError(double);
-    ctor public AssertionError(String, Throwable);
-  }
-
-  public interface AutoCloseable {
-    method public void close() throws java.lang.Exception;
-  }
-
-  public final class Boolean implements java.lang.Comparable<java.lang.Boolean> java.io.Serializable {
-    ctor public Boolean(boolean);
-    ctor public Boolean(@Nullable String);
-    method public boolean booleanValue();
-    method public static int compare(boolean, boolean);
-    method public int compareTo(@NonNull Boolean);
-    method public static boolean getBoolean(@NonNull String);
-    method public static int hashCode(boolean);
-    method public static boolean logicalAnd(boolean, boolean);
-    method public static boolean logicalOr(boolean, boolean);
-    method public static boolean logicalXor(boolean, boolean);
-    method public static boolean parseBoolean(@Nullable String);
-    method @NonNull public static String toString(boolean);
-    method @NonNull public static Boolean valueOf(boolean);
-    method @NonNull public static Boolean valueOf(@Nullable String);
-    field public static final Boolean FALSE;
-    field public static final Boolean TRUE;
-    field public static final Class<java.lang.Boolean> TYPE;
-  }
-
-  public class BootstrapMethodError extends java.lang.LinkageError {
-    ctor public BootstrapMethodError();
-    ctor public BootstrapMethodError(String);
-    ctor public BootstrapMethodError(String, Throwable);
-    ctor public BootstrapMethodError(Throwable);
-  }
-
-  public final class Byte extends java.lang.Number implements java.lang.Comparable<java.lang.Byte> {
-    ctor public Byte(byte);
-    ctor public Byte(@NonNull String) throws java.lang.NumberFormatException;
-    method public static int compare(byte, byte);
-    method public int compareTo(@NonNull Byte);
-    method @NonNull public static Byte decode(@NonNull String) throws java.lang.NumberFormatException;
-    method public double doubleValue();
-    method public float floatValue();
-    method public static int hashCode(byte);
-    method public int intValue();
-    method public long longValue();
-    method public static byte parseByte(@NonNull String, int) throws java.lang.NumberFormatException;
-    method public static byte parseByte(@NonNull String) throws java.lang.NumberFormatException;
-    method @NonNull public static String toString(byte);
-    method public static int toUnsignedInt(byte);
-    method public static long toUnsignedLong(byte);
-    method @NonNull public static Byte valueOf(byte);
-    method @NonNull public static Byte valueOf(@NonNull String, int) throws java.lang.NumberFormatException;
-    method @NonNull public static Byte valueOf(@NonNull String) throws java.lang.NumberFormatException;
-    field public static final int BYTES = 1; // 0x1
-    field public static final byte MAX_VALUE = 127; // 0x7f
-    field public static final byte MIN_VALUE = -128; // 0xffffff80
-    field public static final int SIZE = 8; // 0x8
-    field public static final Class<java.lang.Byte> TYPE;
-  }
-
-  public interface CharSequence {
-    method public char charAt(int);
-    method @NonNull public default java.util.stream.IntStream chars();
-    method @NonNull public default java.util.stream.IntStream codePoints();
-    method public int length();
-    method @NonNull public CharSequence subSequence(int, int);
-    method @NonNull public String toString();
-  }
-
-  public final class Character implements java.lang.Comparable<java.lang.Character> java.io.Serializable {
-    ctor public Character(char);
-    method public static int charCount(int);
-    method public char charValue();
-    method public static int codePointAt(@NonNull CharSequence, int);
-    method public static int codePointAt(char[], int);
-    method public static int codePointAt(char[], int, int);
-    method public static int codePointBefore(@NonNull CharSequence, int);
-    method public static int codePointBefore(char[], int);
-    method public static int codePointBefore(char[], int, int);
-    method public static int codePointCount(@NonNull CharSequence, int, int);
-    method public static int codePointCount(char[], int, int);
-    method public static int compare(char, char);
-    method public int compareTo(@NonNull Character);
-    method public static int digit(char, int);
-    method public static int digit(int, int);
-    method public static char forDigit(int, int);
-    method public static byte getDirectionality(char);
-    method public static byte getDirectionality(int);
-    method @Nullable public static String getName(int);
-    method public static int getNumericValue(char);
-    method public static int getNumericValue(int);
-    method public static int getType(char);
-    method public static int getType(int);
-    method public static int hashCode(char);
-    method public static char highSurrogate(int);
-    method public static boolean isAlphabetic(int);
-    method public static boolean isBmpCodePoint(int);
-    method public static boolean isDefined(char);
-    method public static boolean isDefined(int);
-    method public static boolean isDigit(char);
-    method public static boolean isDigit(int);
-    method public static boolean isHighSurrogate(char);
-    method public static boolean isISOControl(char);
-    method public static boolean isISOControl(int);
-    method public static boolean isIdentifierIgnorable(char);
-    method public static boolean isIdentifierIgnorable(int);
-    method public static boolean isIdeographic(int);
-    method public static boolean isJavaIdentifierPart(char);
-    method public static boolean isJavaIdentifierPart(int);
-    method public static boolean isJavaIdentifierStart(char);
-    method public static boolean isJavaIdentifierStart(int);
-    method @Deprecated public static boolean isJavaLetter(char);
-    method @Deprecated public static boolean isJavaLetterOrDigit(char);
-    method public static boolean isLetter(char);
-    method public static boolean isLetter(int);
-    method public static boolean isLetterOrDigit(char);
-    method public static boolean isLetterOrDigit(int);
-    method public static boolean isLowSurrogate(char);
-    method public static boolean isLowerCase(char);
-    method public static boolean isLowerCase(int);
-    method public static boolean isMirrored(char);
-    method public static boolean isMirrored(int);
-    method @Deprecated public static boolean isSpace(char);
-    method public static boolean isSpaceChar(char);
-    method public static boolean isSpaceChar(int);
-    method public static boolean isSupplementaryCodePoint(int);
-    method public static boolean isSurrogate(char);
-    method public static boolean isSurrogatePair(char, char);
-    method public static boolean isTitleCase(char);
-    method public static boolean isTitleCase(int);
-    method public static boolean isUnicodeIdentifierPart(char);
-    method public static boolean isUnicodeIdentifierPart(int);
-    method public static boolean isUnicodeIdentifierStart(char);
-    method public static boolean isUnicodeIdentifierStart(int);
-    method public static boolean isUpperCase(char);
-    method public static boolean isUpperCase(int);
-    method public static boolean isValidCodePoint(int);
-    method public static boolean isWhitespace(char);
-    method public static boolean isWhitespace(int);
-    method public static char lowSurrogate(int);
-    method public static int offsetByCodePoints(@NonNull CharSequence, int, int);
-    method public static int offsetByCodePoints(char[], int, int, int, int);
-    method public static char reverseBytes(char);
-    method public static int toChars(int, char[], int);
-    method public static char[] toChars(int);
-    method public static int toCodePoint(char, char);
-    method public static char toLowerCase(char);
-    method public static int toLowerCase(int);
-    method @NonNull public static String toString(char);
-    method public static char toTitleCase(char);
-    method public static int toTitleCase(int);
-    method public static char toUpperCase(char);
-    method public static int toUpperCase(int);
-    method @NonNull public static Character valueOf(char);
-    field public static final int BYTES = 2; // 0x2
-    field public static final byte COMBINING_SPACING_MARK = 8; // 0x8
-    field public static final byte CONNECTOR_PUNCTUATION = 23; // 0x17
-    field public static final byte CONTROL = 15; // 0xf
-    field public static final byte CURRENCY_SYMBOL = 26; // 0x1a
-    field public static final byte DASH_PUNCTUATION = 20; // 0x14
-    field public static final byte DECIMAL_DIGIT_NUMBER = 9; // 0x9
-    field public static final byte DIRECTIONALITY_ARABIC_NUMBER = 6; // 0x6
-    field public static final byte DIRECTIONALITY_BOUNDARY_NEUTRAL = 9; // 0x9
-    field public static final byte DIRECTIONALITY_COMMON_NUMBER_SEPARATOR = 7; // 0x7
-    field public static final byte DIRECTIONALITY_EUROPEAN_NUMBER = 3; // 0x3
-    field public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR = 4; // 0x4
-    field public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR = 5; // 0x5
-    field public static final byte DIRECTIONALITY_LEFT_TO_RIGHT = 0; // 0x0
-    field public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING = 14; // 0xe
-    field public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE = 15; // 0xf
-    field public static final byte DIRECTIONALITY_NONSPACING_MARK = 8; // 0x8
-    field public static final byte DIRECTIONALITY_OTHER_NEUTRALS = 13; // 0xd
-    field public static final byte DIRECTIONALITY_PARAGRAPH_SEPARATOR = 10; // 0xa
-    field public static final byte DIRECTIONALITY_POP_DIRECTIONAL_FORMAT = 18; // 0x12
-    field public static final byte DIRECTIONALITY_RIGHT_TO_LEFT = 1; // 0x1
-    field public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC = 2; // 0x2
-    field public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING = 16; // 0x10
-    field public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE = 17; // 0x11
-    field public static final byte DIRECTIONALITY_SEGMENT_SEPARATOR = 11; // 0xb
-    field public static final byte DIRECTIONALITY_UNDEFINED = -1; // 0xffffffff
-    field public static final byte DIRECTIONALITY_WHITESPACE = 12; // 0xc
-    field public static final byte ENCLOSING_MARK = 7; // 0x7
-    field public static final byte END_PUNCTUATION = 22; // 0x16
-    field public static final byte FINAL_QUOTE_PUNCTUATION = 30; // 0x1e
-    field public static final byte FORMAT = 16; // 0x10
-    field public static final byte INITIAL_QUOTE_PUNCTUATION = 29; // 0x1d
-    field public static final byte LETTER_NUMBER = 10; // 0xa
-    field public static final byte LINE_SEPARATOR = 13; // 0xd
-    field public static final byte LOWERCASE_LETTER = 2; // 0x2
-    field public static final byte MATH_SYMBOL = 25; // 0x19
-    field public static final int MAX_CODE_POINT = 1114111; // 0x10ffff
-    field public static final char MAX_HIGH_SURROGATE = 56319; // 0xdbff '\udbff'
-    field public static final char MAX_LOW_SURROGATE = 57343; // 0xdfff '\udfff'
-    field public static final int MAX_RADIX = 36; // 0x24
-    field public static final char MAX_SURROGATE = 57343; // 0xdfff '\udfff'
-    field public static final char MAX_VALUE = 65535; // 0xffff '\uffff'
-    field public static final int MIN_CODE_POINT = 0; // 0x0
-    field public static final char MIN_HIGH_SURROGATE = 55296; // 0xd800 '\ud800'
-    field public static final char MIN_LOW_SURROGATE = 56320; // 0xdc00 '\udc00'
-    field public static final int MIN_RADIX = 2; // 0x2
-    field public static final int MIN_SUPPLEMENTARY_CODE_POINT = 65536; // 0x10000
-    field public static final char MIN_SURROGATE = 55296; // 0xd800 '\ud800'
-    field public static final char MIN_VALUE = 0; // 0x0000 '\u0000'
-    field public static final byte MODIFIER_LETTER = 4; // 0x4
-    field public static final byte MODIFIER_SYMBOL = 27; // 0x1b
-    field public static final byte NON_SPACING_MARK = 6; // 0x6
-    field public static final byte OTHER_LETTER = 5; // 0x5
-    field public static final byte OTHER_NUMBER = 11; // 0xb
-    field public static final byte OTHER_PUNCTUATION = 24; // 0x18
-    field public static final byte OTHER_SYMBOL = 28; // 0x1c
-    field public static final byte PARAGRAPH_SEPARATOR = 14; // 0xe
-    field public static final byte PRIVATE_USE = 18; // 0x12
-    field public static final int SIZE = 16; // 0x10
-    field public static final byte SPACE_SEPARATOR = 12; // 0xc
-    field public static final byte START_PUNCTUATION = 21; // 0x15
-    field public static final byte SURROGATE = 19; // 0x13
-    field public static final byte TITLECASE_LETTER = 3; // 0x3
-    field public static final Class<java.lang.Character> TYPE;
-    field public static final byte UNASSIGNED = 0; // 0x0
-    field public static final byte UPPERCASE_LETTER = 1; // 0x1
-  }
-
-  public static class Character.Subset {
-    ctor protected Character.Subset(@NonNull String);
-    method public final boolean equals(@Nullable Object);
-    method public final int hashCode();
-    method @NonNull public final String toString();
-  }
-
-  public static final class Character.UnicodeBlock extends java.lang.Character.Subset {
-    method @NonNull public static java.lang.Character.UnicodeBlock forName(@NonNull String);
-    method @Nullable public static java.lang.Character.UnicodeBlock of(char);
-    method @Nullable public static java.lang.Character.UnicodeBlock of(int);
-    field public static final java.lang.Character.UnicodeBlock AEGEAN_NUMBERS;
-    field public static final java.lang.Character.UnicodeBlock ALCHEMICAL_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock ALPHABETIC_PRESENTATION_FORMS;
-    field public static final java.lang.Character.UnicodeBlock ANCIENT_GREEK_MUSICAL_NOTATION;
-    field public static final java.lang.Character.UnicodeBlock ANCIENT_GREEK_NUMBERS;
-    field public static final java.lang.Character.UnicodeBlock ANCIENT_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock ARABIC;
-    field public static final java.lang.Character.UnicodeBlock ARABIC_EXTENDED_A;
-    field public static final java.lang.Character.UnicodeBlock ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock ARABIC_PRESENTATION_FORMS_A;
-    field public static final java.lang.Character.UnicodeBlock ARABIC_PRESENTATION_FORMS_B;
-    field public static final java.lang.Character.UnicodeBlock ARABIC_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock ARMENIAN;
-    field public static final java.lang.Character.UnicodeBlock ARROWS;
-    field public static final java.lang.Character.UnicodeBlock AVESTAN;
-    field public static final java.lang.Character.UnicodeBlock BALINESE;
-    field public static final java.lang.Character.UnicodeBlock BAMUM;
-    field public static final java.lang.Character.UnicodeBlock BAMUM_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock BASIC_LATIN;
-    field public static final java.lang.Character.UnicodeBlock BATAK;
-    field public static final java.lang.Character.UnicodeBlock BENGALI;
-    field public static final java.lang.Character.UnicodeBlock BLOCK_ELEMENTS;
-    field public static final java.lang.Character.UnicodeBlock BOPOMOFO;
-    field public static final java.lang.Character.UnicodeBlock BOPOMOFO_EXTENDED;
-    field public static final java.lang.Character.UnicodeBlock BOX_DRAWING;
-    field public static final java.lang.Character.UnicodeBlock BRAHMI;
-    field public static final java.lang.Character.UnicodeBlock BRAILLE_PATTERNS;
-    field public static final java.lang.Character.UnicodeBlock BUGINESE;
-    field public static final java.lang.Character.UnicodeBlock BUHID;
-    field public static final java.lang.Character.UnicodeBlock BYZANTINE_MUSICAL_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock CARIAN;
-    field public static final java.lang.Character.UnicodeBlock CHAKMA;
-    field public static final java.lang.Character.UnicodeBlock CHAM;
-    field public static final java.lang.Character.UnicodeBlock CHEROKEE;
-    field public static final java.lang.Character.UnicodeBlock CJK_COMPATIBILITY;
-    field public static final java.lang.Character.UnicodeBlock CJK_COMPATIBILITY_FORMS;
-    field public static final java.lang.Character.UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS;
-    field public static final java.lang.Character.UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock CJK_RADICALS_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock CJK_STROKES;
-    field public static final java.lang.Character.UnicodeBlock CJK_SYMBOLS_AND_PUNCTUATION;
-    field public static final java.lang.Character.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS;
-    field public static final java.lang.Character.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A;
-    field public static final java.lang.Character.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B;
-    field public static final java.lang.Character.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C;
-    field public static final java.lang.Character.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D;
-    field public static final java.lang.Character.UnicodeBlock COMBINING_DIACRITICAL_MARKS;
-    field public static final java.lang.Character.UnicodeBlock COMBINING_DIACRITICAL_MARKS_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock COMBINING_HALF_MARKS;
-    field public static final java.lang.Character.UnicodeBlock COMBINING_MARKS_FOR_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock COMMON_INDIC_NUMBER_FORMS;
-    field public static final java.lang.Character.UnicodeBlock CONTROL_PICTURES;
-    field public static final java.lang.Character.UnicodeBlock COPTIC;
-    field public static final java.lang.Character.UnicodeBlock COUNTING_ROD_NUMERALS;
-    field public static final java.lang.Character.UnicodeBlock CUNEIFORM;
-    field public static final java.lang.Character.UnicodeBlock CUNEIFORM_NUMBERS_AND_PUNCTUATION;
-    field public static final java.lang.Character.UnicodeBlock CURRENCY_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock CYPRIOT_SYLLABARY;
-    field public static final java.lang.Character.UnicodeBlock CYRILLIC;
-    field public static final java.lang.Character.UnicodeBlock CYRILLIC_EXTENDED_A;
-    field public static final java.lang.Character.UnicodeBlock CYRILLIC_EXTENDED_B;
-    field public static final java.lang.Character.UnicodeBlock CYRILLIC_SUPPLEMENTARY;
-    field public static final java.lang.Character.UnicodeBlock DESERET;
-    field public static final java.lang.Character.UnicodeBlock DEVANAGARI;
-    field public static final java.lang.Character.UnicodeBlock DEVANAGARI_EXTENDED;
-    field public static final java.lang.Character.UnicodeBlock DINGBATS;
-    field public static final java.lang.Character.UnicodeBlock DOMINO_TILES;
-    field public static final java.lang.Character.UnicodeBlock EGYPTIAN_HIEROGLYPHS;
-    field public static final java.lang.Character.UnicodeBlock EMOTICONS;
-    field public static final java.lang.Character.UnicodeBlock ENCLOSED_ALPHANUMERICS;
-    field public static final java.lang.Character.UnicodeBlock ENCLOSED_ALPHANUMERIC_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock ENCLOSED_CJK_LETTERS_AND_MONTHS;
-    field public static final java.lang.Character.UnicodeBlock ENCLOSED_IDEOGRAPHIC_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock ETHIOPIC;
-    field public static final java.lang.Character.UnicodeBlock ETHIOPIC_EXTENDED;
-    field public static final java.lang.Character.UnicodeBlock ETHIOPIC_EXTENDED_A;
-    field public static final java.lang.Character.UnicodeBlock ETHIOPIC_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock GENERAL_PUNCTUATION;
-    field public static final java.lang.Character.UnicodeBlock GEOMETRIC_SHAPES;
-    field public static final java.lang.Character.UnicodeBlock GEORGIAN;
-    field public static final java.lang.Character.UnicodeBlock GEORGIAN_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock GLAGOLITIC;
-    field public static final java.lang.Character.UnicodeBlock GOTHIC;
-    field public static final java.lang.Character.UnicodeBlock GREEK;
-    field public static final java.lang.Character.UnicodeBlock GREEK_EXTENDED;
-    field public static final java.lang.Character.UnicodeBlock GUJARATI;
-    field public static final java.lang.Character.UnicodeBlock GURMUKHI;
-    field public static final java.lang.Character.UnicodeBlock HALFWIDTH_AND_FULLWIDTH_FORMS;
-    field public static final java.lang.Character.UnicodeBlock HANGUL_COMPATIBILITY_JAMO;
-    field public static final java.lang.Character.UnicodeBlock HANGUL_JAMO;
-    field public static final java.lang.Character.UnicodeBlock HANGUL_JAMO_EXTENDED_A;
-    field public static final java.lang.Character.UnicodeBlock HANGUL_JAMO_EXTENDED_B;
-    field public static final java.lang.Character.UnicodeBlock HANGUL_SYLLABLES;
-    field public static final java.lang.Character.UnicodeBlock HANUNOO;
-    field public static final java.lang.Character.UnicodeBlock HEBREW;
-    field public static final java.lang.Character.UnicodeBlock HIGH_PRIVATE_USE_SURROGATES;
-    field public static final java.lang.Character.UnicodeBlock HIGH_SURROGATES;
-    field public static final java.lang.Character.UnicodeBlock HIRAGANA;
-    field public static final java.lang.Character.UnicodeBlock IDEOGRAPHIC_DESCRIPTION_CHARACTERS;
-    field public static final java.lang.Character.UnicodeBlock IMPERIAL_ARAMAIC;
-    field public static final java.lang.Character.UnicodeBlock INSCRIPTIONAL_PAHLAVI;
-    field public static final java.lang.Character.UnicodeBlock INSCRIPTIONAL_PARTHIAN;
-    field public static final java.lang.Character.UnicodeBlock IPA_EXTENSIONS;
-    field public static final java.lang.Character.UnicodeBlock JAVANESE;
-    field public static final java.lang.Character.UnicodeBlock KAITHI;
-    field public static final java.lang.Character.UnicodeBlock KANA_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock KANBUN;
-    field public static final java.lang.Character.UnicodeBlock KANGXI_RADICALS;
-    field public static final java.lang.Character.UnicodeBlock KANNADA;
-    field public static final java.lang.Character.UnicodeBlock KATAKANA;
-    field public static final java.lang.Character.UnicodeBlock KATAKANA_PHONETIC_EXTENSIONS;
-    field public static final java.lang.Character.UnicodeBlock KAYAH_LI;
-    field public static final java.lang.Character.UnicodeBlock KHAROSHTHI;
-    field public static final java.lang.Character.UnicodeBlock KHMER;
-    field public static final java.lang.Character.UnicodeBlock KHMER_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock LAO;
-    field public static final java.lang.Character.UnicodeBlock LATIN_1_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock LATIN_EXTENDED_A;
-    field public static final java.lang.Character.UnicodeBlock LATIN_EXTENDED_ADDITIONAL;
-    field public static final java.lang.Character.UnicodeBlock LATIN_EXTENDED_B;
-    field public static final java.lang.Character.UnicodeBlock LATIN_EXTENDED_C;
-    field public static final java.lang.Character.UnicodeBlock LATIN_EXTENDED_D;
-    field public static final java.lang.Character.UnicodeBlock LEPCHA;
-    field public static final java.lang.Character.UnicodeBlock LETTERLIKE_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock LIMBU;
-    field public static final java.lang.Character.UnicodeBlock LINEAR_B_IDEOGRAMS;
-    field public static final java.lang.Character.UnicodeBlock LINEAR_B_SYLLABARY;
-    field public static final java.lang.Character.UnicodeBlock LISU;
-    field public static final java.lang.Character.UnicodeBlock LOW_SURROGATES;
-    field public static final java.lang.Character.UnicodeBlock LYCIAN;
-    field public static final java.lang.Character.UnicodeBlock LYDIAN;
-    field public static final java.lang.Character.UnicodeBlock MAHJONG_TILES;
-    field public static final java.lang.Character.UnicodeBlock MALAYALAM;
-    field public static final java.lang.Character.UnicodeBlock MANDAIC;
-    field public static final java.lang.Character.UnicodeBlock MATHEMATICAL_ALPHANUMERIC_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock MATHEMATICAL_OPERATORS;
-    field public static final java.lang.Character.UnicodeBlock MEETEI_MAYEK;
-    field public static final java.lang.Character.UnicodeBlock MEETEI_MAYEK_EXTENSIONS;
-    field public static final java.lang.Character.UnicodeBlock MEROITIC_CURSIVE;
-    field public static final java.lang.Character.UnicodeBlock MEROITIC_HIEROGLYPHS;
-    field public static final java.lang.Character.UnicodeBlock MIAO;
-    field public static final java.lang.Character.UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A;
-    field public static final java.lang.Character.UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B;
-    field public static final java.lang.Character.UnicodeBlock MISCELLANEOUS_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_ARROWS;
-    field public static final java.lang.Character.UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS;
-    field public static final java.lang.Character.UnicodeBlock MISCELLANEOUS_TECHNICAL;
-    field public static final java.lang.Character.UnicodeBlock MODIFIER_TONE_LETTERS;
-    field public static final java.lang.Character.UnicodeBlock MONGOLIAN;
-    field public static final java.lang.Character.UnicodeBlock MUSICAL_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock MYANMAR;
-    field public static final java.lang.Character.UnicodeBlock MYANMAR_EXTENDED_A;
-    field public static final java.lang.Character.UnicodeBlock NEW_TAI_LUE;
-    field public static final java.lang.Character.UnicodeBlock NKO;
-    field public static final java.lang.Character.UnicodeBlock NUMBER_FORMS;
-    field public static final java.lang.Character.UnicodeBlock OGHAM;
-    field public static final java.lang.Character.UnicodeBlock OLD_ITALIC;
-    field public static final java.lang.Character.UnicodeBlock OLD_PERSIAN;
-    field public static final java.lang.Character.UnicodeBlock OLD_SOUTH_ARABIAN;
-    field public static final java.lang.Character.UnicodeBlock OLD_TURKIC;
-    field public static final java.lang.Character.UnicodeBlock OL_CHIKI;
-    field public static final java.lang.Character.UnicodeBlock OPTICAL_CHARACTER_RECOGNITION;
-    field public static final java.lang.Character.UnicodeBlock ORIYA;
-    field public static final java.lang.Character.UnicodeBlock OSMANYA;
-    field public static final java.lang.Character.UnicodeBlock PHAGS_PA;
-    field public static final java.lang.Character.UnicodeBlock PHAISTOS_DISC;
-    field public static final java.lang.Character.UnicodeBlock PHOENICIAN;
-    field public static final java.lang.Character.UnicodeBlock PHONETIC_EXTENSIONS;
-    field public static final java.lang.Character.UnicodeBlock PHONETIC_EXTENSIONS_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock PLAYING_CARDS;
-    field public static final java.lang.Character.UnicodeBlock PRIVATE_USE_AREA;
-    field public static final java.lang.Character.UnicodeBlock REJANG;
-    field public static final java.lang.Character.UnicodeBlock RUMI_NUMERAL_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock RUNIC;
-    field public static final java.lang.Character.UnicodeBlock SAMARITAN;
-    field public static final java.lang.Character.UnicodeBlock SAURASHTRA;
-    field public static final java.lang.Character.UnicodeBlock SHARADA;
-    field public static final java.lang.Character.UnicodeBlock SHAVIAN;
-    field public static final java.lang.Character.UnicodeBlock SINHALA;
-    field public static final java.lang.Character.UnicodeBlock SMALL_FORM_VARIANTS;
-    field public static final java.lang.Character.UnicodeBlock SORA_SOMPENG;
-    field public static final java.lang.Character.UnicodeBlock SPACING_MODIFIER_LETTERS;
-    field public static final java.lang.Character.UnicodeBlock SPECIALS;
-    field public static final java.lang.Character.UnicodeBlock SUNDANESE;
-    field public static final java.lang.Character.UnicodeBlock SUNDANESE_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock SUPERSCRIPTS_AND_SUBSCRIPTS;
-    field public static final java.lang.Character.UnicodeBlock SUPPLEMENTAL_ARROWS_A;
-    field public static final java.lang.Character.UnicodeBlock SUPPLEMENTAL_ARROWS_B;
-    field public static final java.lang.Character.UnicodeBlock SUPPLEMENTAL_MATHEMATICAL_OPERATORS;
-    field public static final java.lang.Character.UnicodeBlock SUPPLEMENTAL_PUNCTUATION;
-    field public static final java.lang.Character.UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_A;
-    field public static final java.lang.Character.UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_B;
-    field @Deprecated public static final java.lang.Character.UnicodeBlock SURROGATES_AREA;
-    field public static final java.lang.Character.UnicodeBlock SYLOTI_NAGRI;
-    field public static final java.lang.Character.UnicodeBlock SYRIAC;
-    field public static final java.lang.Character.UnicodeBlock TAGALOG;
-    field public static final java.lang.Character.UnicodeBlock TAGBANWA;
-    field public static final java.lang.Character.UnicodeBlock TAGS;
-    field public static final java.lang.Character.UnicodeBlock TAI_LE;
-    field public static final java.lang.Character.UnicodeBlock TAI_THAM;
-    field public static final java.lang.Character.UnicodeBlock TAI_VIET;
-    field public static final java.lang.Character.UnicodeBlock TAI_XUAN_JING_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock TAKRI;
-    field public static final java.lang.Character.UnicodeBlock TAMIL;
-    field public static final java.lang.Character.UnicodeBlock TELUGU;
-    field public static final java.lang.Character.UnicodeBlock THAANA;
-    field public static final java.lang.Character.UnicodeBlock THAI;
-    field public static final java.lang.Character.UnicodeBlock TIBETAN;
-    field public static final java.lang.Character.UnicodeBlock TIFINAGH;
-    field public static final java.lang.Character.UnicodeBlock TRANSPORT_AND_MAP_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock UGARITIC;
-    field public static final java.lang.Character.UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS;
-    field public static final java.lang.Character.UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED;
-    field public static final java.lang.Character.UnicodeBlock VAI;
-    field public static final java.lang.Character.UnicodeBlock VARIATION_SELECTORS;
-    field public static final java.lang.Character.UnicodeBlock VARIATION_SELECTORS_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock VEDIC_EXTENSIONS;
-    field public static final java.lang.Character.UnicodeBlock VERTICAL_FORMS;
-    field public static final java.lang.Character.UnicodeBlock YIJING_HEXAGRAM_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock YI_RADICALS;
-    field public static final java.lang.Character.UnicodeBlock YI_SYLLABLES;
-  }
-
-  public enum Character.UnicodeScript {
-    method @NonNull public static java.lang.Character.UnicodeScript forName(@NonNull String);
-    method @NonNull public static java.lang.Character.UnicodeScript of(int);
-    enum_constant public static final java.lang.Character.UnicodeScript ARABIC;
-    enum_constant public static final java.lang.Character.UnicodeScript ARMENIAN;
-    enum_constant public static final java.lang.Character.UnicodeScript AVESTAN;
-    enum_constant public static final java.lang.Character.UnicodeScript BALINESE;
-    enum_constant public static final java.lang.Character.UnicodeScript BAMUM;
-    enum_constant public static final java.lang.Character.UnicodeScript BATAK;
-    enum_constant public static final java.lang.Character.UnicodeScript BENGALI;
-    enum_constant public static final java.lang.Character.UnicodeScript BOPOMOFO;
-    enum_constant public static final java.lang.Character.UnicodeScript BRAHMI;
-    enum_constant public static final java.lang.Character.UnicodeScript BRAILLE;
-    enum_constant public static final java.lang.Character.UnicodeScript BUGINESE;
-    enum_constant public static final java.lang.Character.UnicodeScript BUHID;
-    enum_constant public static final java.lang.Character.UnicodeScript CANADIAN_ABORIGINAL;
-    enum_constant public static final java.lang.Character.UnicodeScript CARIAN;
-    enum_constant public static final java.lang.Character.UnicodeScript CHAKMA;
-    enum_constant public static final java.lang.Character.UnicodeScript CHAM;
-    enum_constant public static final java.lang.Character.UnicodeScript CHEROKEE;
-    enum_constant public static final java.lang.Character.UnicodeScript COMMON;
-    enum_constant public static final java.lang.Character.UnicodeScript COPTIC;
-    enum_constant public static final java.lang.Character.UnicodeScript CUNEIFORM;
-    enum_constant public static final java.lang.Character.UnicodeScript CYPRIOT;
-    enum_constant public static final java.lang.Character.UnicodeScript CYRILLIC;
-    enum_constant public static final java.lang.Character.UnicodeScript DESERET;
-    enum_constant public static final java.lang.Character.UnicodeScript DEVANAGARI;
-    enum_constant public static final java.lang.Character.UnicodeScript EGYPTIAN_HIEROGLYPHS;
-    enum_constant public static final java.lang.Character.UnicodeScript ETHIOPIC;
-    enum_constant public static final java.lang.Character.UnicodeScript GEORGIAN;
-    enum_constant public static final java.lang.Character.UnicodeScript GLAGOLITIC;
-    enum_constant public static final java.lang.Character.UnicodeScript GOTHIC;
-    enum_constant public static final java.lang.Character.UnicodeScript GREEK;
-    enum_constant public static final java.lang.Character.UnicodeScript GUJARATI;
-    enum_constant public static final java.lang.Character.UnicodeScript GURMUKHI;
-    enum_constant public static final java.lang.Character.UnicodeScript HAN;
-    enum_constant public static final java.lang.Character.UnicodeScript HANGUL;
-    enum_constant public static final java.lang.Character.UnicodeScript HANUNOO;
-    enum_constant public static final java.lang.Character.UnicodeScript HEBREW;
-    enum_constant public static final java.lang.Character.UnicodeScript HIRAGANA;
-    enum_constant public static final java.lang.Character.UnicodeScript IMPERIAL_ARAMAIC;
-    enum_constant public static final java.lang.Character.UnicodeScript INHERITED;
-    enum_constant public static final java.lang.Character.UnicodeScript INSCRIPTIONAL_PAHLAVI;
-    enum_constant public static final java.lang.Character.UnicodeScript INSCRIPTIONAL_PARTHIAN;
-    enum_constant public static final java.lang.Character.UnicodeScript JAVANESE;
-    enum_constant public static final java.lang.Character.UnicodeScript KAITHI;
-    enum_constant public static final java.lang.Character.UnicodeScript KANNADA;
-    enum_constant public static final java.lang.Character.UnicodeScript KATAKANA;
-    enum_constant public static final java.lang.Character.UnicodeScript KAYAH_LI;
-    enum_constant public static final java.lang.Character.UnicodeScript KHAROSHTHI;
-    enum_constant public static final java.lang.Character.UnicodeScript KHMER;
-    enum_constant public static final java.lang.Character.UnicodeScript LAO;
-    enum_constant public static final java.lang.Character.UnicodeScript LATIN;
-    enum_constant public static final java.lang.Character.UnicodeScript LEPCHA;
-    enum_constant public static final java.lang.Character.UnicodeScript LIMBU;
-    enum_constant public static final java.lang.Character.UnicodeScript LINEAR_B;
-    enum_constant public static final java.lang.Character.UnicodeScript LISU;
-    enum_constant public static final java.lang.Character.UnicodeScript LYCIAN;
-    enum_constant public static final java.lang.Character.UnicodeScript LYDIAN;
-    enum_constant public static final java.lang.Character.UnicodeScript MALAYALAM;
-    enum_constant public static final java.lang.Character.UnicodeScript MANDAIC;
-    enum_constant public static final java.lang.Character.UnicodeScript MEETEI_MAYEK;
-    enum_constant public static final java.lang.Character.UnicodeScript MEROITIC_CURSIVE;
-    enum_constant public static final java.lang.Character.UnicodeScript MEROITIC_HIEROGLYPHS;
-    enum_constant public static final java.lang.Character.UnicodeScript MIAO;
-    enum_constant public static final java.lang.Character.UnicodeScript MONGOLIAN;
-    enum_constant public static final java.lang.Character.UnicodeScript MYANMAR;
-    enum_constant public static final java.lang.Character.UnicodeScript NEW_TAI_LUE;
-    enum_constant public static final java.lang.Character.UnicodeScript NKO;
-    enum_constant public static final java.lang.Character.UnicodeScript OGHAM;
-    enum_constant public static final java.lang.Character.UnicodeScript OLD_ITALIC;
-    enum_constant public static final java.lang.Character.UnicodeScript OLD_PERSIAN;
-    enum_constant public static final java.lang.Character.UnicodeScript OLD_SOUTH_ARABIAN;
-    enum_constant public static final java.lang.Character.UnicodeScript OLD_TURKIC;
-    enum_constant public static final java.lang.Character.UnicodeScript OL_CHIKI;
-    enum_constant public static final java.lang.Character.UnicodeScript ORIYA;
-    enum_constant public static final java.lang.Character.UnicodeScript OSMANYA;
-    enum_constant public static final java.lang.Character.UnicodeScript PHAGS_PA;
-    enum_constant public static final java.lang.Character.UnicodeScript PHOENICIAN;
-    enum_constant public static final java.lang.Character.UnicodeScript REJANG;
-    enum_constant public static final java.lang.Character.UnicodeScript RUNIC;
-    enum_constant public static final java.lang.Character.UnicodeScript SAMARITAN;
-    enum_constant public static final java.lang.Character.UnicodeScript SAURASHTRA;
-    enum_constant public static final java.lang.Character.UnicodeScript SHARADA;
-    enum_constant public static final java.lang.Character.UnicodeScript SHAVIAN;
-    enum_constant public static final java.lang.Character.UnicodeScript SINHALA;
-    enum_constant public static final java.lang.Character.UnicodeScript SORA_SOMPENG;
-    enum_constant public static final java.lang.Character.UnicodeScript SUNDANESE;
-    enum_constant public static final java.lang.Character.UnicodeScript SYLOTI_NAGRI;
-    enum_constant public static final java.lang.Character.UnicodeScript SYRIAC;
-    enum_constant public static final java.lang.Character.UnicodeScript TAGALOG;
-    enum_constant public static final java.lang.Character.UnicodeScript TAGBANWA;
-    enum_constant public static final java.lang.Character.UnicodeScript TAI_LE;
-    enum_constant public static final java.lang.Character.UnicodeScript TAI_THAM;
-    enum_constant public static final java.lang.Character.UnicodeScript TAI_VIET;
-    enum_constant public static final java.lang.Character.UnicodeScript TAKRI;
-    enum_constant public static final java.lang.Character.UnicodeScript TAMIL;
-    enum_constant public static final java.lang.Character.UnicodeScript TELUGU;
-    enum_constant public static final java.lang.Character.UnicodeScript THAANA;
-    enum_constant public static final java.lang.Character.UnicodeScript THAI;
-    enum_constant public static final java.lang.Character.UnicodeScript TIBETAN;
-    enum_constant public static final java.lang.Character.UnicodeScript TIFINAGH;
-    enum_constant public static final java.lang.Character.UnicodeScript UGARITIC;
-    enum_constant public static final java.lang.Character.UnicodeScript UNKNOWN;
-    enum_constant public static final java.lang.Character.UnicodeScript VAI;
-    enum_constant public static final java.lang.Character.UnicodeScript YI;
-  }
-
-  public final class Class<T> implements java.lang.reflect.AnnotatedElement java.lang.reflect.GenericDeclaration java.io.Serializable java.lang.reflect.Type {
-    method @NonNull public <U> Class<? extends U> asSubclass(@NonNull Class<U>);
-    method @Nullable public T cast(@Nullable Object);
-    method public boolean desiredAssertionStatus();
-    method @NonNull public static Class<?> forName(@NonNull String) throws java.lang.ClassNotFoundException;
-    method @NonNull public static Class<?> forName(@NonNull String, boolean, @Nullable ClassLoader) throws java.lang.ClassNotFoundException;
-    method @Nullable public <A extends java.lang.annotation.Annotation> A getAnnotation(@NonNull Class<A>);
-    method @NonNull public java.lang.annotation.Annotation[] getAnnotations();
-    method @NonNull public <A extends java.lang.annotation.Annotation> A[] getAnnotationsByType(@NonNull Class<A>);
-    method @Nullable public String getCanonicalName();
-    method @Nullable public ClassLoader getClassLoader();
-    method @NonNull public Class<?>[] getClasses();
-    method @Nullable public Class<?> getComponentType();
-    method @NonNull public java.lang.reflect.Constructor<T> getConstructor(@Nullable Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
-    method @NonNull public java.lang.reflect.Constructor<?>[] getConstructors() throws java.lang.SecurityException;
-    method @Nullable public <A extends java.lang.annotation.Annotation> A getDeclaredAnnotation(@NonNull Class<A>);
-    method @NonNull public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    method @NonNull public Class<?>[] getDeclaredClasses();
-    method @NonNull public java.lang.reflect.Constructor<T> getDeclaredConstructor(@Nullable Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
-    method @NonNull public java.lang.reflect.Constructor<?>[] getDeclaredConstructors() throws java.lang.SecurityException;
-    method @NonNull public java.lang.reflect.Field getDeclaredField(@NonNull String) throws java.lang.NoSuchFieldException;
-    method @NonNull public java.lang.reflect.Field[] getDeclaredFields();
-    method @NonNull public java.lang.reflect.Method getDeclaredMethod(@NonNull String, @Nullable Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
-    method @NonNull public java.lang.reflect.Method[] getDeclaredMethods() throws java.lang.SecurityException;
-    method @Nullable public Class<?> getDeclaringClass();
-    method @Nullable public Class<?> getEnclosingClass();
-    method @Nullable public java.lang.reflect.Constructor<?> getEnclosingConstructor();
-    method @Nullable public java.lang.reflect.Method getEnclosingMethod();
-    method @Nullable public T[] getEnumConstants();
-    method @NonNull public java.lang.reflect.Field getField(@NonNull String) throws java.lang.NoSuchFieldException;
-    method @NonNull public java.lang.reflect.Field[] getFields() throws java.lang.SecurityException;
-    method @NonNull public java.lang.reflect.Type[] getGenericInterfaces();
-    method @Nullable public java.lang.reflect.Type getGenericSuperclass();
-    method @NonNull public Class<?>[] getInterfaces();
-    method @NonNull public java.lang.reflect.Method getMethod(@NonNull String, @Nullable Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
-    method @NonNull public java.lang.reflect.Method[] getMethods() throws java.lang.SecurityException;
-    method public int getModifiers();
-    method @NonNull public String getName();
-    method @Nullable public Package getPackage();
-    method @Nullable public java.security.ProtectionDomain getProtectionDomain();
-    method @Nullable public java.net.URL getResource(@NonNull String);
-    method @Nullable public java.io.InputStream getResourceAsStream(@NonNull String);
-    method @Nullable public Object[] getSigners();
-    method @NonNull public String getSimpleName();
-    method @Nullable public Class<? super T> getSuperclass();
-    method @NonNull public java.lang.reflect.TypeVariable<java.lang.Class<T>>[] getTypeParameters();
-    method public boolean isAnnotation();
-    method public boolean isAnonymousClass();
-    method public boolean isArray();
-    method public boolean isAssignableFrom(@NonNull Class<?>);
-    method public boolean isEnum();
-    method public boolean isInstance(@Nullable Object);
-    method public boolean isInterface();
-    method public boolean isLocalClass();
-    method public boolean isMemberClass();
-    method public boolean isPrimitive();
-    method public boolean isSynthetic();
-    method @NonNull public T newInstance() throws java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method @NonNull public String toGenericString();
-  }
-
-  public class ClassCastException extends java.lang.RuntimeException {
-    ctor public ClassCastException();
-    ctor public ClassCastException(String);
-  }
-
-  public class ClassCircularityError extends java.lang.LinkageError {
-    ctor public ClassCircularityError();
-    ctor public ClassCircularityError(String);
-  }
-
-  public class ClassFormatError extends java.lang.LinkageError {
-    ctor public ClassFormatError();
-    ctor public ClassFormatError(String);
-  }
-
-  public abstract class ClassLoader {
-    ctor protected ClassLoader(ClassLoader);
-    ctor protected ClassLoader();
-    method public void clearAssertionStatus();
-    method @Deprecated protected final Class<?> defineClass(byte[], int, int) throws java.lang.ClassFormatError;
-    method protected final Class<?> defineClass(String, byte[], int, int) throws java.lang.ClassFormatError;
-    method protected final Class<?> defineClass(String, byte[], int, int, java.security.ProtectionDomain) throws java.lang.ClassFormatError;
-    method protected final Class<?> defineClass(String, java.nio.ByteBuffer, java.security.ProtectionDomain) throws java.lang.ClassFormatError;
-    method protected Package definePackage(String, String, String, String, String, String, String, java.net.URL) throws java.lang.IllegalArgumentException;
-    method protected Class<?> findClass(String) throws java.lang.ClassNotFoundException;
-    method protected String findLibrary(String);
-    method protected final Class<?> findLoadedClass(String);
-    method protected java.net.URL findResource(String);
-    method protected java.util.Enumeration<java.net.URL> findResources(String) throws java.io.IOException;
-    method protected final Class<?> findSystemClass(String) throws java.lang.ClassNotFoundException;
-    method protected Package getPackage(String);
-    method protected Package[] getPackages();
-    method public final ClassLoader getParent();
-    method public java.net.URL getResource(String);
-    method public java.io.InputStream getResourceAsStream(String);
-    method public java.util.Enumeration<java.net.URL> getResources(String) throws java.io.IOException;
-    method public static ClassLoader getSystemClassLoader();
-    method public static java.net.URL getSystemResource(String);
-    method public static java.io.InputStream getSystemResourceAsStream(String);
-    method public static java.util.Enumeration<java.net.URL> getSystemResources(String) throws java.io.IOException;
-    method public Class<?> loadClass(String) throws java.lang.ClassNotFoundException;
-    method protected Class<?> loadClass(String, boolean) throws java.lang.ClassNotFoundException;
-    method protected static boolean registerAsParallelCapable();
-    method protected final void resolveClass(Class<?>);
-    method public void setClassAssertionStatus(String, boolean);
-    method public void setDefaultAssertionStatus(boolean);
-    method public void setPackageAssertionStatus(String, boolean);
-    method protected final void setSigners(Class<?>, Object[]);
-  }
-
-  public class ClassNotFoundException extends java.lang.ReflectiveOperationException {
-    ctor public ClassNotFoundException();
-    ctor public ClassNotFoundException(String);
-    ctor public ClassNotFoundException(String, Throwable);
-    method public Throwable getException();
-  }
-
-  public class CloneNotSupportedException extends java.lang.Exception {
-    ctor public CloneNotSupportedException();
-    ctor public CloneNotSupportedException(String);
-  }
-
-  public interface Cloneable {
-  }
-
-  public interface Comparable<T> {
-    method public int compareTo(T);
-  }
-
-  public final class Compiler {
-    method public static Object command(Object);
-    method public static boolean compileClass(Class<?>);
-    method public static boolean compileClasses(String);
-    method public static void disable();
-    method public static void enable();
-  }
-
-  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PACKAGE, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.TYPE}) public @interface Deprecated {
-  }
-
-  public final class Double extends java.lang.Number implements java.lang.Comparable<java.lang.Double> {
-    ctor public Double(double);
-    ctor public Double(@NonNull String) throws java.lang.NumberFormatException;
-    method public static int compare(double, double);
-    method public int compareTo(@NonNull Double);
-    method public static long doubleToLongBits(double);
-    method public static long doubleToRawLongBits(double);
-    method public double doubleValue();
-    method public float floatValue();
-    method public static int hashCode(double);
-    method public int intValue();
-    method public static boolean isFinite(double);
-    method public static boolean isInfinite(double);
-    method public boolean isInfinite();
-    method public static boolean isNaN(double);
-    method public boolean isNaN();
-    method public static double longBitsToDouble(long);
-    method public long longValue();
-    method public static double max(double, double);
-    method public static double min(double, double);
-    method public static double parseDouble(@NonNull String) throws java.lang.NumberFormatException;
-    method public static double sum(double, double);
-    method @NonNull public static String toHexString(double);
-    method @NonNull public static String toString(double);
-    method @NonNull public static Double valueOf(@NonNull String) throws java.lang.NumberFormatException;
-    method @NonNull public static Double valueOf(double);
-    field public static final int BYTES = 8; // 0x8
-    field public static final int MAX_EXPONENT = 1023; // 0x3ff
-    field public static final double MAX_VALUE = 1.7976931348623157E308;
-    field public static final int MIN_EXPONENT = -1022; // 0xfffffc02
-    field public static final double MIN_NORMAL = 2.2250738585072014E-308;
-    field public static final double MIN_VALUE = 4.9E-324;
-    field public static final double NEGATIVE_INFINITY = (-1.0/0.0);
-    field public static final double NaN = (0.0/0.0);
-    field public static final double POSITIVE_INFINITY = (1.0/0.0);
-    field public static final int SIZE = 64; // 0x40
-    field public static final Class<java.lang.Double> TYPE;
-  }
-
-  public abstract class Enum<E extends java.lang.Enum<E>> implements java.lang.Comparable<E> java.io.Serializable {
-    ctor protected Enum(@NonNull String, int);
-    method @NonNull protected final Object clone() throws java.lang.CloneNotSupportedException;
-    method public final int compareTo(E);
-    method public final boolean equals(@Nullable Object);
-    method protected final void finalize();
-    method @NonNull public final Class<E> getDeclaringClass();
-    method public final int hashCode();
-    method @NonNull public final String name();
-    method public final int ordinal();
-    method @NonNull public static <T extends java.lang.Enum<T>> T valueOf(@NonNull Class<T>, @NonNull String);
-  }
-
-  public class EnumConstantNotPresentException extends java.lang.RuntimeException {
-    ctor public EnumConstantNotPresentException(Class<? extends java.lang.Enum>, String);
-    method public String constantName();
-    method public Class<? extends java.lang.Enum> enumType();
-  }
-
-  public class Error extends java.lang.Throwable {
-    ctor public Error();
-    ctor public Error(String);
-    ctor public Error(String, Throwable);
-    ctor public Error(Throwable);
-    ctor protected Error(String, Throwable, boolean, boolean);
-  }
-
-  public class Exception extends java.lang.Throwable {
-    ctor public Exception();
-    ctor public Exception(String);
-    ctor public Exception(String, Throwable);
-    ctor public Exception(Throwable);
-    ctor protected Exception(String, Throwable, boolean, boolean);
-  }
-
-  public class ExceptionInInitializerError extends java.lang.LinkageError {
-    ctor public ExceptionInInitializerError();
-    ctor public ExceptionInInitializerError(Throwable);
-    ctor public ExceptionInInitializerError(String);
-    method public Throwable getException();
-  }
-
-  public final class Float extends java.lang.Number implements java.lang.Comparable<java.lang.Float> {
-    ctor public Float(float);
-    ctor public Float(double);
-    ctor public Float(@NonNull String) throws java.lang.NumberFormatException;
-    method public static int compare(float, float);
-    method public int compareTo(@NonNull Float);
-    method public double doubleValue();
-    method public static int floatToIntBits(float);
-    method public static int floatToRawIntBits(float);
-    method public float floatValue();
-    method public static int hashCode(float);
-    method public static float intBitsToFloat(int);
-    method public int intValue();
-    method public static boolean isFinite(float);
-    method public static boolean isInfinite(float);
-    method public boolean isInfinite();
-    method public static boolean isNaN(float);
-    method public boolean isNaN();
-    method public long longValue();
-    method public static float max(float, float);
-    method public static float min(float, float);
-    method public static float parseFloat(@NonNull String) throws java.lang.NumberFormatException;
-    method public static float sum(float, float);
-    method @NonNull public static String toHexString(float);
-    method @NonNull public static String toString(float);
-    method @NonNull public static Float valueOf(@NonNull String) throws java.lang.NumberFormatException;
-    method @NonNull public static Float valueOf(float);
-    field public static final int BYTES = 4; // 0x4
-    field public static final int MAX_EXPONENT = 127; // 0x7f
-    field public static final float MAX_VALUE = 3.4028235E38f;
-    field public static final int MIN_EXPONENT = -126; // 0xffffff82
-    field public static final float MIN_NORMAL = 1.17549435E-38f;
-    field public static final float MIN_VALUE = 1.4E-45f;
-    field public static final float NEGATIVE_INFINITY = (-1.0f/0.0f);
-    field public static final float NaN = (0.0f/0.0f);
-    field public static final float POSITIVE_INFINITY = (1.0f/0.0f);
-    field public static final int SIZE = 32; // 0x20
-    field public static final Class<java.lang.Float> TYPE;
-  }
-
-  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.TYPE) public @interface FunctionalInterface {
-  }
-
-  public class IllegalAccessError extends java.lang.IncompatibleClassChangeError {
-    ctor public IllegalAccessError();
-    ctor public IllegalAccessError(String);
-  }
-
-  public class IllegalAccessException extends java.lang.ReflectiveOperationException {
-    ctor public IllegalAccessException();
-    ctor public IllegalAccessException(String);
-  }
-
-  public class IllegalArgumentException extends java.lang.RuntimeException {
-    ctor public IllegalArgumentException();
-    ctor public IllegalArgumentException(String);
-    ctor public IllegalArgumentException(String, Throwable);
-    ctor public IllegalArgumentException(Throwable);
-  }
-
-  public class IllegalMonitorStateException extends java.lang.RuntimeException {
-    ctor public IllegalMonitorStateException();
-    ctor public IllegalMonitorStateException(String);
-  }
-
-  public class IllegalStateException extends java.lang.RuntimeException {
-    ctor public IllegalStateException();
-    ctor public IllegalStateException(String);
-    ctor public IllegalStateException(String, Throwable);
-    ctor public IllegalStateException(Throwable);
-  }
-
-  public class IllegalThreadStateException extends java.lang.IllegalArgumentException {
-    ctor public IllegalThreadStateException();
-    ctor public IllegalThreadStateException(String);
-  }
-
-  public class IncompatibleClassChangeError extends java.lang.LinkageError {
-    ctor public IncompatibleClassChangeError();
-    ctor public IncompatibleClassChangeError(String);
-  }
-
-  public class IndexOutOfBoundsException extends java.lang.RuntimeException {
-    ctor public IndexOutOfBoundsException();
-    ctor public IndexOutOfBoundsException(String);
-  }
-
-  public class InheritableThreadLocal<T> extends java.lang.ThreadLocal<T> {
-    ctor public InheritableThreadLocal();
-    method protected T childValue(T);
-  }
-
-  public class InstantiationError extends java.lang.IncompatibleClassChangeError {
-    ctor public InstantiationError();
-    ctor public InstantiationError(String);
-  }
-
-  public class InstantiationException extends java.lang.ReflectiveOperationException {
-    ctor public InstantiationException();
-    ctor public InstantiationException(String);
-  }
-
-  public final class Integer extends java.lang.Number implements java.lang.Comparable<java.lang.Integer> {
-    ctor public Integer(int);
-    ctor public Integer(@NonNull String) throws java.lang.NumberFormatException;
-    method public static int bitCount(int);
-    method public static int compare(int, int);
-    method public int compareTo(@NonNull Integer);
-    method public static int compareUnsigned(int, int);
-    method @NonNull public static Integer decode(@NonNull String) throws java.lang.NumberFormatException;
-    method public static int divideUnsigned(int, int);
-    method public double doubleValue();
-    method public float floatValue();
-    method @Nullable public static Integer getInteger(@NonNull String);
-    method @Nullable public static Integer getInteger(@NonNull String, int);
-    method @Nullable public static Integer getInteger(@NonNull String, @Nullable Integer);
-    method public static int hashCode(int);
-    method public static int highestOneBit(int);
-    method public int intValue();
-    method public long longValue();
-    method public static int lowestOneBit(int);
-    method public static int max(int, int);
-    method public static int min(int, int);
-    method public static int numberOfLeadingZeros(int);
-    method public static int numberOfTrailingZeros(int);
-    method public static int parseInt(@NonNull String, int) throws java.lang.NumberFormatException;
-    method public static int parseInt(@NonNull String) throws java.lang.NumberFormatException;
-    method public static int parseUnsignedInt(@NonNull String, int) throws java.lang.NumberFormatException;
-    method public static int parseUnsignedInt(@NonNull String) throws java.lang.NumberFormatException;
-    method public static int remainderUnsigned(int, int);
-    method public static int reverse(int);
-    method public static int reverseBytes(int);
-    method public static int rotateLeft(int, int);
-    method public static int rotateRight(int, int);
-    method public static int signum(int);
-    method public static int sum(int, int);
-    method @NonNull public static String toBinaryString(int);
-    method @NonNull public static String toHexString(int);
-    method @NonNull public static String toOctalString(int);
-    method @NonNull public static String toString(int, int);
-    method @NonNull public static String toString(int);
-    method public static long toUnsignedLong(int);
-    method @NonNull public static String toUnsignedString(int, int);
-    method @NonNull public static String toUnsignedString(int);
-    method @NonNull public static Integer valueOf(@NonNull String, int) throws java.lang.NumberFormatException;
-    method @NonNull public static Integer valueOf(@NonNull String) throws java.lang.NumberFormatException;
-    method @NonNull public static Integer valueOf(int);
-    field public static final int BYTES = 4; // 0x4
-    field public static final int MAX_VALUE = 2147483647; // 0x7fffffff
-    field public static final int MIN_VALUE = -2147483648; // 0x80000000
-    field public static final int SIZE = 32; // 0x20
-    field public static final Class<java.lang.Integer> TYPE;
-  }
-
-  public class InternalError extends java.lang.VirtualMachineError {
-    ctor public InternalError();
-    ctor public InternalError(String);
-    ctor public InternalError(String, Throwable);
-    ctor public InternalError(Throwable);
-  }
-
-  public class InterruptedException extends java.lang.Exception {
-    ctor public InterruptedException();
-    ctor public InterruptedException(String);
-  }
-
-  public interface Iterable<T> {
-    method public default void forEach(@NonNull java.util.function.Consumer<? super T>);
-    method @NonNull public java.util.Iterator<T> iterator();
-    method @NonNull public default java.util.Spliterator<T> spliterator();
-  }
-
-  public class LinkageError extends java.lang.Error {
-    ctor public LinkageError();
-    ctor public LinkageError(String);
-    ctor public LinkageError(String, Throwable);
-  }
-
-  public final class Long extends java.lang.Number implements java.lang.Comparable<java.lang.Long> {
-    ctor public Long(long);
-    ctor public Long(@NonNull String) throws java.lang.NumberFormatException;
-    method public static int bitCount(long);
-    method public static int compare(long, long);
-    method public int compareTo(@NonNull Long);
-    method public static int compareUnsigned(long, long);
-    method @NonNull public static Long decode(@NonNull String) throws java.lang.NumberFormatException;
-    method public static long divideUnsigned(long, long);
-    method public double doubleValue();
-    method public float floatValue();
-    method @Nullable public static Long getLong(@NonNull String);
-    method @Nullable public static Long getLong(@NonNull String, long);
-    method @Nullable public static Long getLong(@NonNull String, @Nullable Long);
-    method public static int hashCode(long);
-    method public static long highestOneBit(long);
-    method public int intValue();
-    method public long longValue();
-    method public static long lowestOneBit(long);
-    method public static long max(long, long);
-    method public static long min(long, long);
-    method public static int numberOfLeadingZeros(long);
-    method public static int numberOfTrailingZeros(long);
-    method public static long parseLong(@NonNull String, int) throws java.lang.NumberFormatException;
-    method public static long parseLong(@NonNull String) throws java.lang.NumberFormatException;
-    method public static long parseUnsignedLong(@NonNull String, int) throws java.lang.NumberFormatException;
-    method public static long parseUnsignedLong(@NonNull String) throws java.lang.NumberFormatException;
-    method public static long remainderUnsigned(long, long);
-    method public static long reverse(long);
-    method public static long reverseBytes(long);
-    method public static long rotateLeft(long, int);
-    method public static long rotateRight(long, int);
-    method public static int signum(long);
-    method public static long sum(long, long);
-    method @NonNull public static String toBinaryString(long);
-    method @NonNull public static String toHexString(long);
-    method @NonNull public static String toOctalString(long);
-    method @NonNull public static String toString(long, int);
-    method @NonNull public static String toString(long);
-    method @NonNull public static String toUnsignedString(long, int);
-    method @NonNull public static String toUnsignedString(long);
-    method @NonNull public static Long valueOf(@NonNull String, int) throws java.lang.NumberFormatException;
-    method @NonNull public static Long valueOf(@NonNull String) throws java.lang.NumberFormatException;
-    method @NonNull public static Long valueOf(long);
-    field public static final int BYTES = 8; // 0x8
-    field public static final long MAX_VALUE = 9223372036854775807L; // 0x7fffffffffffffffL
-    field public static final long MIN_VALUE = -9223372036854775808L; // 0x8000000000000000L
-    field public static final int SIZE = 64; // 0x40
-    field public static final Class<java.lang.Long> TYPE;
-  }
-
-  public final class Math {
-    method public static double IEEEremainder(double, double);
-    method public static int abs(int);
-    method public static long abs(long);
-    method public static float abs(float);
-    method public static double abs(double);
-    method public static double acos(double);
-    method public static int addExact(int, int);
-    method public static long addExact(long, long);
-    method public static double asin(double);
-    method public static double atan(double);
-    method public static double atan2(double, double);
-    method public static double cbrt(double);
-    method public static double ceil(double);
-    method public static double copySign(double, double);
-    method public static float copySign(float, float);
-    method public static double cos(double);
-    method public static double cosh(double);
-    method public static int decrementExact(int);
-    method public static long decrementExact(long);
-    method public static double exp(double);
-    method public static double expm1(double);
-    method public static double floor(double);
-    method public static int floorDiv(int, int);
-    method public static long floorDiv(long, long);
-    method public static int floorMod(int, int);
-    method public static long floorMod(long, long);
-    method public static int getExponent(float);
-    method public static int getExponent(double);
-    method public static double hypot(double, double);
-    method public static int incrementExact(int);
-    method public static long incrementExact(long);
-    method public static double log(double);
-    method public static double log10(double);
-    method public static double log1p(double);
-    method public static int max(int, int);
-    method public static long max(long, long);
-    method public static float max(float, float);
-    method public static double max(double, double);
-    method public static int min(int, int);
-    method public static long min(long, long);
-    method public static float min(float, float);
-    method public static double min(double, double);
-    method public static int multiplyExact(int, int);
-    method public static long multiplyExact(long, long);
-    method public static int negateExact(int);
-    method public static long negateExact(long);
-    method public static double nextAfter(double, double);
-    method public static float nextAfter(float, double);
-    method public static double nextDown(double);
-    method public static float nextDown(float);
-    method public static double nextUp(double);
-    method public static float nextUp(float);
-    method public static double pow(double, double);
-    method public static double random();
-    method public static double rint(double);
-    method public static int round(float);
-    method public static long round(double);
-    method public static double scalb(double, int);
-    method public static float scalb(float, int);
-    method public static double signum(double);
-    method public static float signum(float);
-    method public static double sin(double);
-    method public static double sinh(double);
-    method public static double sqrt(double);
-    method public static int subtractExact(int, int);
-    method public static long subtractExact(long, long);
-    method public static double tan(double);
-    method public static double tanh(double);
-    method public static double toDegrees(double);
-    method public static int toIntExact(long);
-    method public static double toRadians(double);
-    method public static double ulp(double);
-    method public static float ulp(float);
-    field public static final double E = 2.718281828459045;
-    field public static final double PI = 3.141592653589793;
-  }
-
-  public class NegativeArraySizeException extends java.lang.RuntimeException {
-    ctor public NegativeArraySizeException();
-    ctor public NegativeArraySizeException(String);
-  }
-
-  public class NoClassDefFoundError extends java.lang.LinkageError {
-    ctor public NoClassDefFoundError();
-    ctor public NoClassDefFoundError(String);
-  }
-
-  public class NoSuchFieldError extends java.lang.IncompatibleClassChangeError {
-    ctor public NoSuchFieldError();
-    ctor public NoSuchFieldError(String);
-  }
-
-  public class NoSuchFieldException extends java.lang.ReflectiveOperationException {
-    ctor public NoSuchFieldException();
-    ctor public NoSuchFieldException(String);
-  }
-
-  public class NoSuchMethodError extends java.lang.IncompatibleClassChangeError {
-    ctor public NoSuchMethodError();
-    ctor public NoSuchMethodError(String);
-  }
-
-  public class NoSuchMethodException extends java.lang.ReflectiveOperationException {
-    ctor public NoSuchMethodException();
-    ctor public NoSuchMethodException(String);
-  }
-
-  public class NullPointerException extends java.lang.RuntimeException {
-    ctor public NullPointerException();
-    ctor public NullPointerException(String);
-  }
-
-  public abstract class Number implements java.io.Serializable {
-    ctor public Number();
-    method public byte byteValue();
-    method public abstract double doubleValue();
-    method public abstract float floatValue();
-    method public abstract int intValue();
-    method public abstract long longValue();
-    method public short shortValue();
-  }
-
-  public class NumberFormatException extends java.lang.IllegalArgumentException {
-    ctor public NumberFormatException();
-    ctor public NumberFormatException(String);
-  }
-
-  public class Object {
-    ctor public Object();
-    method @NonNull protected Object clone() throws java.lang.CloneNotSupportedException;
-    method public boolean equals(@Nullable Object);
-    method protected void finalize() throws java.lang.Throwable;
-    method @NonNull public final Class<?> getClass();
-    method public int hashCode();
-    method public final void notify();
-    method public final void notifyAll();
-    method @NonNull public String toString();
-    method public final void wait(long) throws java.lang.InterruptedException;
-    method public final void wait(long, int) throws java.lang.InterruptedException;
-    method public final void wait() throws java.lang.InterruptedException;
-  }
-
-  public class OutOfMemoryError extends java.lang.VirtualMachineError {
-    ctor public OutOfMemoryError();
-    ctor public OutOfMemoryError(String);
-  }
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target(java.lang.annotation.ElementType.METHOD) public @interface Override {
-  }
-
-  public class Package implements java.lang.reflect.AnnotatedElement {
-    method public <A extends java.lang.annotation.Annotation> A getAnnotation(Class<A>);
-    method public java.lang.annotation.Annotation[] getAnnotations();
-    method public <A extends java.lang.annotation.Annotation> A[] getAnnotationsByType(Class<A>);
-    method public <A extends java.lang.annotation.Annotation> A getDeclaredAnnotation(Class<A>);
-    method public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    method public <A extends java.lang.annotation.Annotation> A[] getDeclaredAnnotationsByType(Class<A>);
-    method public String getImplementationTitle();
-    method public String getImplementationVendor();
-    method public String getImplementationVersion();
-    method public String getName();
-    method public static Package getPackage(String);
-    method public static Package[] getPackages();
-    method public String getSpecificationTitle();
-    method public String getSpecificationVendor();
-    method public String getSpecificationVersion();
-    method public boolean isCompatibleWith(String) throws java.lang.NumberFormatException;
-    method public boolean isSealed();
-    method public boolean isSealed(java.net.URL);
-  }
-
-  public abstract class Process {
-    ctor public Process();
-    method public abstract void destroy();
-    method public Process destroyForcibly();
-    method public abstract int exitValue();
-    method public abstract java.io.InputStream getErrorStream();
-    method public abstract java.io.InputStream getInputStream();
-    method public abstract java.io.OutputStream getOutputStream();
-    method public boolean isAlive();
-    method public abstract int waitFor() throws java.lang.InterruptedException;
-    method public boolean waitFor(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-  }
-
-  public final class ProcessBuilder {
-    ctor public ProcessBuilder(java.util.List<java.lang.String>);
-    ctor public ProcessBuilder(java.lang.String...);
-    method public ProcessBuilder command(java.util.List<java.lang.String>);
-    method public ProcessBuilder command(java.lang.String...);
-    method public java.util.List<java.lang.String> command();
-    method public java.io.File directory();
-    method public ProcessBuilder directory(java.io.File);
-    method public java.util.Map<java.lang.String,java.lang.String> environment();
-    method public ProcessBuilder inheritIO();
-    method public ProcessBuilder redirectError(java.lang.ProcessBuilder.Redirect);
-    method public ProcessBuilder redirectError(java.io.File);
-    method public java.lang.ProcessBuilder.Redirect redirectError();
-    method public boolean redirectErrorStream();
-    method public ProcessBuilder redirectErrorStream(boolean);
-    method public ProcessBuilder redirectInput(java.lang.ProcessBuilder.Redirect);
-    method public ProcessBuilder redirectInput(java.io.File);
-    method public java.lang.ProcessBuilder.Redirect redirectInput();
-    method public ProcessBuilder redirectOutput(java.lang.ProcessBuilder.Redirect);
-    method public ProcessBuilder redirectOutput(java.io.File);
-    method public java.lang.ProcessBuilder.Redirect redirectOutput();
-    method public Process start() throws java.io.IOException;
-  }
-
-  public abstract static class ProcessBuilder.Redirect {
-    method public static java.lang.ProcessBuilder.Redirect appendTo(java.io.File);
-    method public java.io.File file();
-    method public static java.lang.ProcessBuilder.Redirect from(java.io.File);
-    method public static java.lang.ProcessBuilder.Redirect to(java.io.File);
-    method public abstract java.lang.ProcessBuilder.Redirect.Type type();
-    field public static final java.lang.ProcessBuilder.Redirect INHERIT;
-    field public static final java.lang.ProcessBuilder.Redirect PIPE;
-  }
-
-  public enum ProcessBuilder.Redirect.Type {
-    enum_constant public static final java.lang.ProcessBuilder.Redirect.Type APPEND;
-    enum_constant public static final java.lang.ProcessBuilder.Redirect.Type INHERIT;
-    enum_constant public static final java.lang.ProcessBuilder.Redirect.Type PIPE;
-    enum_constant public static final java.lang.ProcessBuilder.Redirect.Type READ;
-    enum_constant public static final java.lang.ProcessBuilder.Redirect.Type WRITE;
-  }
-
-  public interface Readable {
-    method public int read(java.nio.CharBuffer) throws java.io.IOException;
-  }
-
-  public class ReflectiveOperationException extends java.lang.Exception {
-    ctor public ReflectiveOperationException();
-    ctor public ReflectiveOperationException(String);
-    ctor public ReflectiveOperationException(String, Throwable);
-    ctor public ReflectiveOperationException(Throwable);
-  }
-
-  @java.lang.FunctionalInterface public interface Runnable {
-    method public void run();
-  }
-
-  public class Runtime {
-    method public void addShutdownHook(Thread);
-    method public int availableProcessors();
-    method public Process exec(String) throws java.io.IOException;
-    method public Process exec(String, String[]) throws java.io.IOException;
-    method public Process exec(String, String[], java.io.File) throws java.io.IOException;
-    method public Process exec(String[]) throws java.io.IOException;
-    method public Process exec(String[], String[]) throws java.io.IOException;
-    method public Process exec(String[], String[], java.io.File) throws java.io.IOException;
-    method public void exit(int);
-    method public long freeMemory();
-    method public void gc();
-    method @Deprecated public java.io.InputStream getLocalizedInputStream(java.io.InputStream);
-    method @Deprecated public java.io.OutputStream getLocalizedOutputStream(java.io.OutputStream);
-    method public static Runtime getRuntime();
-    method public void halt(int);
-    method public void load(String);
-    method public void loadLibrary(String);
-    method public long maxMemory();
-    method public boolean removeShutdownHook(Thread);
-    method public void runFinalization();
-    method @Deprecated public static void runFinalizersOnExit(boolean);
-    method public long totalMemory();
-    method public void traceInstructions(boolean);
-    method public void traceMethodCalls(boolean);
-  }
-
-  public class RuntimeException extends java.lang.Exception {
-    ctor public RuntimeException();
-    ctor public RuntimeException(String);
-    ctor public RuntimeException(String, Throwable);
-    ctor public RuntimeException(Throwable);
-    ctor protected RuntimeException(String, Throwable, boolean, boolean);
-  }
-
-  public final class RuntimePermission extends java.security.BasicPermission {
-    ctor public RuntimePermission(String);
-    ctor public RuntimePermission(String, String);
-  }
-
-  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.METHOD}) public @interface SafeVarargs {
-  }
-
-  public class SecurityException extends java.lang.RuntimeException {
-    ctor public SecurityException();
-    ctor public SecurityException(String);
-    ctor public SecurityException(String, Throwable);
-    ctor public SecurityException(Throwable);
-  }
-
-  public class SecurityManager {
-    ctor public SecurityManager();
-    method public void checkAccept(String, int);
-    method public void checkAccess(Thread);
-    method public void checkAccess(ThreadGroup);
-    method public void checkAwtEventQueueAccess();
-    method public void checkConnect(String, int);
-    method public void checkConnect(String, int, Object);
-    method public void checkCreateClassLoader();
-    method public void checkDelete(String);
-    method public void checkExec(String);
-    method public void checkExit(int);
-    method public void checkLink(String);
-    method public void checkListen(int);
-    method public void checkMemberAccess(Class<?>, int);
-    method public void checkMulticast(java.net.InetAddress);
-    method @Deprecated public void checkMulticast(java.net.InetAddress, byte);
-    method public void checkPackageAccess(String);
-    method public void checkPackageDefinition(String);
-    method public void checkPermission(java.security.Permission);
-    method public void checkPermission(java.security.Permission, Object);
-    method public void checkPrintJobAccess();
-    method public void checkPropertiesAccess();
-    method public void checkPropertyAccess(String);
-    method public void checkRead(java.io.FileDescriptor);
-    method public void checkRead(String);
-    method public void checkRead(String, Object);
-    method public void checkSecurityAccess(String);
-    method public void checkSetFactory();
-    method public void checkSystemClipboardAccess();
-    method public boolean checkTopLevelWindow(Object);
-    method public void checkWrite(java.io.FileDescriptor);
-    method public void checkWrite(String);
-    method @Deprecated protected int classDepth(String);
-    method @Deprecated protected int classLoaderDepth();
-    method @Deprecated protected ClassLoader currentClassLoader();
-    method @Deprecated protected Class<?> currentLoadedClass();
-    method protected Class[] getClassContext();
-    method @Deprecated public boolean getInCheck();
-    method public Object getSecurityContext();
-    method public ThreadGroup getThreadGroup();
-    method @Deprecated protected boolean inClass(String);
-    method @Deprecated protected boolean inClassLoader();
-    field @Deprecated protected boolean inCheck;
-  }
-
-  public final class Short extends java.lang.Number implements java.lang.Comparable<java.lang.Short> {
-    ctor public Short(short);
-    ctor public Short(String) throws java.lang.NumberFormatException;
-    method public static int compare(short, short);
-    method public int compareTo(Short);
-    method public static Short decode(String) throws java.lang.NumberFormatException;
-    method public double doubleValue();
-    method public float floatValue();
-    method public static int hashCode(short);
-    method public int intValue();
-    method public long longValue();
-    method public static short parseShort(String, int) throws java.lang.NumberFormatException;
-    method public static short parseShort(String) throws java.lang.NumberFormatException;
-    method public static short reverseBytes(short);
-    method public static String toString(short);
-    method public static int toUnsignedInt(short);
-    method public static long toUnsignedLong(short);
-    method public static Short valueOf(String, int) throws java.lang.NumberFormatException;
-    method public static Short valueOf(String) throws java.lang.NumberFormatException;
-    method public static Short valueOf(short);
-    field public static final int BYTES = 2; // 0x2
-    field public static final short MAX_VALUE = 32767; // 0x7fff
-    field public static final short MIN_VALUE = -32768; // 0xffff8000
-    field public static final int SIZE = 16; // 0x10
-    field public static final Class<java.lang.Short> TYPE;
-  }
-
-  public class StackOverflowError extends java.lang.VirtualMachineError {
-    ctor public StackOverflowError();
-    ctor public StackOverflowError(String);
-  }
-
-  public final class StackTraceElement implements java.io.Serializable {
-    ctor public StackTraceElement(String, String, String, int);
-    method public String getClassName();
-    method public String getFileName();
-    method public int getLineNumber();
-    method public String getMethodName();
-    method public boolean isNativeMethod();
-  }
-
-  public final class StrictMath {
-    method public static double IEEEremainder(double, double);
-    method public static int abs(int);
-    method public static long abs(long);
-    method public static float abs(float);
-    method public static double abs(double);
-    method public static double acos(double);
-    method public static int addExact(int, int);
-    method public static long addExact(long, long);
-    method public static double asin(double);
-    method public static double atan(double);
-    method public static double atan2(double, double);
-    method public static double cbrt(double);
-    method public static double ceil(double);
-    method public static double copySign(double, double);
-    method public static float copySign(float, float);
-    method public static double cos(double);
-    method public static double cosh(double);
-    method public static double exp(double);
-    method public static double expm1(double);
-    method public static double floor(double);
-    method public static int floorDiv(int, int);
-    method public static long floorDiv(long, long);
-    method public static int floorMod(int, int);
-    method public static long floorMod(long, long);
-    method public static int getExponent(float);
-    method public static int getExponent(double);
-    method public static double hypot(double, double);
-    method public static double log(double);
-    method public static double log10(double);
-    method public static double log1p(double);
-    method public static int max(int, int);
-    method public static long max(long, long);
-    method public static float max(float, float);
-    method public static double max(double, double);
-    method public static int min(int, int);
-    method public static long min(long, long);
-    method public static float min(float, float);
-    method public static double min(double, double);
-    method public static int multiplyExact(int, int);
-    method public static long multiplyExact(long, long);
-    method public static double nextAfter(double, double);
-    method public static float nextAfter(float, double);
-    method public static double nextDown(double);
-    method public static float nextDown(float);
-    method public static double nextUp(double);
-    method public static float nextUp(float);
-    method public static double pow(double, double);
-    method public static double random();
-    method public static double rint(double);
-    method public static int round(float);
-    method public static long round(double);
-    method public static double scalb(double, int);
-    method public static float scalb(float, int);
-    method public static double signum(double);
-    method public static float signum(float);
-    method public static double sin(double);
-    method public static double sinh(double);
-    method public static double sqrt(double);
-    method public static int subtractExact(int, int);
-    method public static long subtractExact(long, long);
-    method public static double tan(double);
-    method public static double tanh(double);
-    method public static double toDegrees(double);
-    method public static int toIntExact(long);
-    method public static double toRadians(double);
-    method public static double ulp(double);
-    method public static float ulp(float);
-    field public static final double E = 2.718281828459045;
-    field public static final double PI = 3.141592653589793;
-  }
-
-  public final class String implements java.lang.CharSequence java.lang.Comparable<java.lang.String> java.io.Serializable {
-    ctor public String();
-    ctor public String(@NonNull String);
-    ctor public String(char[]);
-    ctor public String(char[], int, int);
-    ctor public String(int[], int, int);
-    ctor @Deprecated public String(byte[], int, int, int);
-    ctor @Deprecated public String(byte[], int);
-    ctor public String(byte[], int, int, @NonNull String) throws java.io.UnsupportedEncodingException;
-    ctor public String(byte[], int, int, @NonNull java.nio.charset.Charset);
-    ctor public String(byte[], @NonNull String) throws java.io.UnsupportedEncodingException;
-    ctor public String(byte[], @NonNull java.nio.charset.Charset);
-    ctor public String(byte[], int, int);
-    ctor public String(byte[]);
-    ctor public String(@NonNull StringBuffer);
-    ctor public String(@NonNull StringBuilder);
-    method public char charAt(int);
-    method public int codePointAt(int);
-    method public int codePointBefore(int);
-    method public int codePointCount(int, int);
-    method public int compareTo(@NonNull String);
-    method public int compareToIgnoreCase(@NonNull String);
-    method @NonNull public String concat(@NonNull String);
-    method public boolean contains(@NonNull CharSequence);
-    method public boolean contentEquals(@NonNull StringBuffer);
-    method public boolean contentEquals(@NonNull CharSequence);
-    method @NonNull public static String copyValueOf(char[], int, int);
-    method @NonNull public static String copyValueOf(char[]);
-    method public boolean endsWith(@NonNull String);
-    method public boolean equalsIgnoreCase(@Nullable String);
-    method @NonNull public static String format(@NonNull String, @NonNull java.lang.Object...);
-    method @NonNull public static String format(@NonNull java.util.Locale, @NonNull String, @NonNull java.lang.Object...);
-    method @Deprecated public void getBytes(int, int, byte[], int);
-    method public byte[] getBytes(@NonNull String) throws java.io.UnsupportedEncodingException;
-    method public byte[] getBytes(@NonNull java.nio.charset.Charset);
-    method public byte[] getBytes();
-    method public void getChars(int, int, char[], int);
-    method public int indexOf(int);
-    method public int indexOf(int, int);
-    method public int indexOf(@NonNull String);
-    method public int indexOf(@NonNull String, int);
-    method @NonNull public String intern();
-    method public boolean isEmpty();
-    method @NonNull public static String join(@NonNull CharSequence, @Nullable java.lang.CharSequence...);
-    method @NonNull public static String join(@NonNull CharSequence, @NonNull Iterable<? extends java.lang.CharSequence>);
-    method public int lastIndexOf(int);
-    method public int lastIndexOf(int, int);
-    method public int lastIndexOf(@NonNull String);
-    method public int lastIndexOf(@NonNull String, int);
-    method public int length();
-    method public boolean matches(@NonNull String);
-    method public int offsetByCodePoints(int, int);
-    method public boolean regionMatches(int, @NonNull String, int, int);
-    method public boolean regionMatches(boolean, int, @NonNull String, int, int);
-    method @NonNull public String replace(char, char);
-    method @NonNull public String replace(@NonNull CharSequence, @NonNull CharSequence);
-    method @NonNull public String replaceAll(@NonNull String, @NonNull String);
-    method @NonNull public String replaceFirst(@NonNull String, @NonNull String);
-    method @NonNull public String[] split(@NonNull String, int);
-    method @NonNull public String[] split(@NonNull String);
-    method public boolean startsWith(@NonNull String, int);
-    method public boolean startsWith(@NonNull String);
-    method @NonNull public CharSequence subSequence(int, int);
-    method @NonNull public String substring(int);
-    method @NonNull public String substring(int, int);
-    method public char[] toCharArray();
-    method @NonNull public String toLowerCase(@NonNull java.util.Locale);
-    method @NonNull public String toLowerCase();
-    method @NonNull public String toUpperCase(@NonNull java.util.Locale);
-    method @NonNull public String toUpperCase();
-    method @NonNull public String trim();
-    method @NonNull public static String valueOf(@Nullable Object);
-    method @NonNull public static String valueOf(char[]);
-    method @NonNull public static String valueOf(char[], int, int);
-    method @NonNull public static String valueOf(boolean);
-    method @NonNull public static String valueOf(char);
-    method @NonNull public static String valueOf(int);
-    method @NonNull public static String valueOf(long);
-    method @NonNull public static String valueOf(float);
-    method @NonNull public static String valueOf(double);
-    field public static final java.util.Comparator<java.lang.String> CASE_INSENSITIVE_ORDER;
-  }
-
-  public final class StringBuffer implements java.lang.Appendable java.lang.CharSequence java.io.Serializable {
-    ctor public StringBuffer();
-    ctor public StringBuffer(int);
-    ctor public StringBuffer(@NonNull String);
-    ctor public StringBuffer(@NonNull CharSequence);
-    method @NonNull public StringBuffer append(@Nullable Object);
-    method @NonNull public StringBuffer append(@Nullable String);
-    method @NonNull public StringBuffer append(@Nullable StringBuffer);
-    method @NonNull public StringBuffer append(@Nullable CharSequence);
-    method @NonNull public StringBuffer append(@Nullable CharSequence, int, int);
-    method @NonNull public StringBuffer append(char[]);
-    method @NonNull public StringBuffer append(char[], int, int);
-    method @NonNull public StringBuffer append(boolean);
-    method @NonNull public StringBuffer append(char);
-    method @NonNull public StringBuffer append(int);
-    method @NonNull public StringBuffer append(long);
-    method @NonNull public StringBuffer append(float);
-    method @NonNull public StringBuffer append(double);
-    method @NonNull public StringBuffer appendCodePoint(int);
-    method public int capacity();
-    method public char charAt(int);
-    method public int codePointAt(int);
-    method public int codePointBefore(int);
-    method public int codePointCount(int, int);
-    method @NonNull public StringBuffer delete(int, int);
-    method @NonNull public StringBuffer deleteCharAt(int);
-    method public void ensureCapacity(int);
-    method public void getChars(int, int, char[], int);
-    method public int indexOf(@NonNull String);
-    method public int indexOf(@NonNull String, int);
-    method @NonNull public StringBuffer insert(int, char[], int, int);
-    method @NonNull public StringBuffer insert(int, @Nullable Object);
-    method @NonNull public StringBuffer insert(int, @Nullable String);
-    method @NonNull public StringBuffer insert(int, char[]);
-    method @NonNull public StringBuffer insert(int, @Nullable CharSequence);
-    method @NonNull public StringBuffer insert(int, @Nullable CharSequence, int, int);
-    method @NonNull public StringBuffer insert(int, boolean);
-    method @NonNull public StringBuffer insert(int, char);
-    method @NonNull public StringBuffer insert(int, int);
-    method @NonNull public StringBuffer insert(int, long);
-    method @NonNull public StringBuffer insert(int, float);
-    method @NonNull public StringBuffer insert(int, double);
-    method public int lastIndexOf(@NonNull String);
-    method public int lastIndexOf(@NonNull String, int);
-    method public int length();
-    method public int offsetByCodePoints(int, int);
-    method @NonNull public StringBuffer replace(int, int, @NonNull String);
-    method @NonNull public StringBuffer reverse();
-    method public void setCharAt(int, char);
-    method public void setLength(int);
-    method @NonNull public CharSequence subSequence(int, int);
-    method @NonNull public String substring(int);
-    method @NonNull public String substring(int, int);
-    method public void trimToSize();
-  }
-
-  public final class StringBuilder implements java.lang.Appendable java.lang.CharSequence java.io.Serializable {
-    ctor public StringBuilder();
-    ctor public StringBuilder(int);
-    ctor public StringBuilder(@NonNull String);
-    ctor public StringBuilder(@NonNull CharSequence);
-    method @NonNull public StringBuilder append(@Nullable Object);
-    method @NonNull public StringBuilder append(@Nullable String);
-    method @NonNull public StringBuilder append(@Nullable StringBuffer);
-    method @NonNull public StringBuilder append(@Nullable CharSequence);
-    method @NonNull public StringBuilder append(@Nullable CharSequence, int, int);
-    method @NonNull public StringBuilder append(char[]);
-    method @NonNull public StringBuilder append(char[], int, int);
-    method @NonNull public StringBuilder append(boolean);
-    method @NonNull public StringBuilder append(char);
-    method @NonNull public StringBuilder append(int);
-    method @NonNull public StringBuilder append(long);
-    method @NonNull public StringBuilder append(float);
-    method @NonNull public StringBuilder append(double);
-    method @NonNull public StringBuilder appendCodePoint(int);
-    method public int capacity();
-    method public char charAt(int);
-    method public int codePointAt(int);
-    method public int codePointBefore(int);
-    method public int codePointCount(int, int);
-    method @NonNull public StringBuilder delete(int, int);
-    method @NonNull public StringBuilder deleteCharAt(int);
-    method public void ensureCapacity(int);
-    method public void getChars(int, int, char[], int);
-    method public int indexOf(@NonNull String);
-    method public int indexOf(@NonNull String, int);
-    method @NonNull public StringBuilder insert(int, char[], int, int);
-    method @NonNull public StringBuilder insert(int, @Nullable Object);
-    method @NonNull public StringBuilder insert(int, @Nullable String);
-    method @NonNull public StringBuilder insert(int, char[]);
-    method @NonNull public StringBuilder insert(int, @Nullable CharSequence);
-    method @NonNull public StringBuilder insert(int, @Nullable CharSequence, int, int);
-    method @NonNull public StringBuilder insert(int, boolean);
-    method @NonNull public StringBuilder insert(int, char);
-    method @NonNull public StringBuilder insert(int, int);
-    method @NonNull public StringBuilder insert(int, long);
-    method @NonNull public StringBuilder insert(int, float);
-    method @NonNull public StringBuilder insert(int, double);
-    method public int lastIndexOf(@NonNull String);
-    method public int lastIndexOf(@NonNull String, int);
-    method public int length();
-    method public int offsetByCodePoints(int, int);
-    method @NonNull public StringBuilder replace(int, int, @NonNull String);
-    method @NonNull public StringBuilder reverse();
-    method public void setCharAt(int, char);
-    method public void setLength(int);
-    method @NonNull public CharSequence subSequence(int, int);
-    method @NonNull public String substring(int);
-    method @NonNull public String substring(int, int);
-    method public void trimToSize();
-  }
-
-  public class StringIndexOutOfBoundsException extends java.lang.IndexOutOfBoundsException {
-    ctor public StringIndexOutOfBoundsException();
-    ctor public StringIndexOutOfBoundsException(String);
-    ctor public StringIndexOutOfBoundsException(int);
-  }
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE, java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.LOCAL_VARIABLE}) public @interface SuppressWarnings {
-    method public abstract String[] value();
-  }
-
-  public final class System {
-    method public static void arraycopy(@NonNull Object, int, @NonNull Object, int, int);
-    method @Nullable public static String clearProperty(@NonNull String);
-    method @Nullable public static java.io.Console console();
-    method public static long currentTimeMillis();
-    method public static void exit(int);
-    method public static void gc();
-    method @NonNull public static java.util.Properties getProperties();
-    method @Nullable public static String getProperty(@NonNull String);
-    method @Nullable public static String getProperty(@NonNull String, @Nullable String);
-    method @Nullable public static SecurityManager getSecurityManager();
-    method @Nullable public static String getenv(@NonNull String);
-    method @NonNull public static java.util.Map<java.lang.String,java.lang.String> getenv();
-    method public static int identityHashCode(@Nullable Object);
-    method @Nullable public static java.nio.channels.Channel inheritedChannel() throws java.io.IOException;
-    method @NonNull public static String lineSeparator();
-    method public static void load(@NonNull String);
-    method public static void loadLibrary(@NonNull String);
-    method @NonNull public static String mapLibraryName(@NonNull String);
-    method public static long nanoTime();
-    method public static void runFinalization();
-    method @Deprecated public static void runFinalizersOnExit(boolean);
-    method public static void setErr(@Nullable java.io.PrintStream);
-    method public static void setIn(@Nullable java.io.InputStream);
-    method public static void setOut(@Nullable java.io.PrintStream);
-    method public static void setProperties(@Nullable java.util.Properties);
-    method @Nullable public static String setProperty(@NonNull String, @Nullable String);
-    method public static void setSecurityManager(@Nullable SecurityManager);
-    field public static final java.io.PrintStream err;
-    field public static final java.io.InputStream in;
-    field public static final java.io.PrintStream out;
-  }
-
-  public class Thread implements java.lang.Runnable {
-    ctor public Thread();
-    ctor public Thread(@Nullable Runnable);
-    ctor public Thread(@Nullable ThreadGroup, @Nullable Runnable);
-    ctor public Thread(@NonNull String);
-    ctor public Thread(@Nullable ThreadGroup, @NonNull String);
-    ctor public Thread(@Nullable Runnable, @NonNull String);
-    ctor public Thread(@Nullable ThreadGroup, @Nullable Runnable, @NonNull String);
-    ctor public Thread(@Nullable ThreadGroup, @Nullable Runnable, @NonNull String, long);
-    method public static int activeCount();
-    method public final void checkAccess();
-    method @Deprecated public int countStackFrames();
-    method @NonNull public static Thread currentThread();
-    method @Deprecated public void destroy();
-    method public static void dumpStack();
-    method public static int enumerate(Thread[]);
-    method @NonNull public static java.util.Map<java.lang.Thread,java.lang.StackTraceElement[]> getAllStackTraces();
-    method @Nullable public ClassLoader getContextClassLoader();
-    method @Nullable public static java.lang.Thread.UncaughtExceptionHandler getDefaultUncaughtExceptionHandler();
-    method public long getId();
-    method @NonNull public final String getName();
-    method public final int getPriority();
-    method @NonNull public StackTraceElement[] getStackTrace();
-    method @NonNull public java.lang.Thread.State getState();
-    method @Nullable public final ThreadGroup getThreadGroup();
-    method @Nullable public java.lang.Thread.UncaughtExceptionHandler getUncaughtExceptionHandler();
-    method public static boolean holdsLock(@NonNull Object);
-    method public void interrupt();
-    method public static boolean interrupted();
-    method public final boolean isAlive();
-    method public final boolean isDaemon();
-    method public boolean isInterrupted();
-    method public final void join(long) throws java.lang.InterruptedException;
-    method public final void join(long, int) throws java.lang.InterruptedException;
-    method public final void join() throws java.lang.InterruptedException;
-    method @Deprecated public final void resume();
-    method public void run();
-    method public void setContextClassLoader(@Nullable ClassLoader);
-    method public final void setDaemon(boolean);
-    method public static void setDefaultUncaughtExceptionHandler(@Nullable java.lang.Thread.UncaughtExceptionHandler);
-    method public final void setName(@NonNull String);
-    method public final void setPriority(int);
-    method public void setUncaughtExceptionHandler(@Nullable java.lang.Thread.UncaughtExceptionHandler);
-    method public static void sleep(long) throws java.lang.InterruptedException;
-    method public static void sleep(long, int) throws java.lang.InterruptedException;
-    method public void start();
-    method @Deprecated public final void stop();
-    method @Deprecated public final void stop(@Nullable Throwable);
-    method @Deprecated public final void suspend();
-    method public static void yield();
-    field public static final int MAX_PRIORITY = 10; // 0xa
-    field public static final int MIN_PRIORITY = 1; // 0x1
-    field public static final int NORM_PRIORITY = 5; // 0x5
-  }
-
-  public enum Thread.State {
-    enum_constant public static final java.lang.Thread.State BLOCKED;
-    enum_constant public static final java.lang.Thread.State NEW;
-    enum_constant public static final java.lang.Thread.State RUNNABLE;
-    enum_constant public static final java.lang.Thread.State TERMINATED;
-    enum_constant public static final java.lang.Thread.State TIMED_WAITING;
-    enum_constant public static final java.lang.Thread.State WAITING;
-  }
-
-  @java.lang.FunctionalInterface public static interface Thread.UncaughtExceptionHandler {
-    method public void uncaughtException(@NonNull Thread, @NonNull Throwable);
-  }
-
-  public class ThreadDeath extends java.lang.Error {
-    ctor public ThreadDeath();
-  }
-
-  public class ThreadGroup implements java.lang.Thread.UncaughtExceptionHandler {
-    ctor public ThreadGroup(String);
-    ctor public ThreadGroup(ThreadGroup, String);
-    method public int activeCount();
-    method public int activeGroupCount();
-    method @Deprecated public boolean allowThreadSuspension(boolean);
-    method public final void checkAccess();
-    method public final void destroy();
-    method public int enumerate(Thread[]);
-    method public int enumerate(Thread[], boolean);
-    method public int enumerate(ThreadGroup[]);
-    method public int enumerate(ThreadGroup[], boolean);
-    method public final int getMaxPriority();
-    method public final String getName();
-    method public final ThreadGroup getParent();
-    method public final void interrupt();
-    method public final boolean isDaemon();
-    method public boolean isDestroyed();
-    method public void list();
-    method public final boolean parentOf(ThreadGroup);
-    method @Deprecated public final void resume();
-    method public final void setDaemon(boolean);
-    method public final void setMaxPriority(int);
-    method @Deprecated public final void stop();
-    method @Deprecated public final void suspend();
-    method public void uncaughtException(Thread, Throwable);
-  }
-
-  public class ThreadLocal<T> {
-    ctor public ThreadLocal();
-    method @Nullable public T get();
-    method @Nullable protected T initialValue();
-    method public void remove();
-    method public void set(T);
-    method @NonNull public static <S> ThreadLocal<S> withInitial(@NonNull java.util.function.Supplier<? extends S>);
-  }
-
-  public class Throwable implements java.io.Serializable {
-    ctor public Throwable();
-    ctor public Throwable(@Nullable String);
-    ctor public Throwable(@Nullable String, @Nullable Throwable);
-    ctor public Throwable(@Nullable Throwable);
-    ctor protected Throwable(@Nullable String, @Nullable Throwable, boolean, boolean);
-    method public final void addSuppressed(@NonNull Throwable);
-    method @NonNull public Throwable fillInStackTrace();
-    method @Nullable public Throwable getCause();
-    method @Nullable public String getLocalizedMessage();
-    method @Nullable public String getMessage();
-    method @NonNull public StackTraceElement[] getStackTrace();
-    method @NonNull public final Throwable[] getSuppressed();
-    method @NonNull public Throwable initCause(@Nullable Throwable);
-    method public void printStackTrace();
-    method public void printStackTrace(@NonNull java.io.PrintStream);
-    method public void printStackTrace(@NonNull java.io.PrintWriter);
-    method public void setStackTrace(@NonNull StackTraceElement[]);
-  }
-
-  public class TypeNotPresentException extends java.lang.RuntimeException {
-    ctor public TypeNotPresentException(String, Throwable);
-    method public String typeName();
-  }
-
-  public class UnknownError extends java.lang.VirtualMachineError {
-    ctor public UnknownError();
-    ctor public UnknownError(String);
-  }
-
-  public class UnsatisfiedLinkError extends java.lang.LinkageError {
-    ctor public UnsatisfiedLinkError();
-    ctor public UnsatisfiedLinkError(String);
-  }
-
-  public class UnsupportedClassVersionError extends java.lang.ClassFormatError {
-    ctor public UnsupportedClassVersionError();
-    ctor public UnsupportedClassVersionError(String);
-  }
-
-  public class UnsupportedOperationException extends java.lang.RuntimeException {
-    ctor public UnsupportedOperationException();
-    ctor public UnsupportedOperationException(String);
-    ctor public UnsupportedOperationException(String, Throwable);
-    ctor public UnsupportedOperationException(Throwable);
-  }
-
-  public class VerifyError extends java.lang.LinkageError {
-    ctor public VerifyError();
-    ctor public VerifyError(String);
-  }
-
-  public abstract class VirtualMachineError extends java.lang.Error {
-    ctor public VirtualMachineError();
-    ctor public VirtualMachineError(String);
-    ctor public VirtualMachineError(String, Throwable);
-    ctor public VirtualMachineError(Throwable);
-  }
-
-  public final class Void {
-    field public static final Class<java.lang.Void> TYPE;
-  }
-
-}
-
-package java.lang.annotation {
-
-  public interface Annotation {
-    method public Class<? extends java.lang.annotation.Annotation> annotationType();
-    method public boolean equals(Object);
-    method public int hashCode();
-    method public String toString();
-  }
-
-  public class AnnotationFormatError extends java.lang.Error {
-    ctor public AnnotationFormatError(String);
-    ctor public AnnotationFormatError(String, Throwable);
-    ctor public AnnotationFormatError(Throwable);
-  }
-
-  public class AnnotationTypeMismatchException extends java.lang.RuntimeException {
-    ctor public AnnotationTypeMismatchException(java.lang.reflect.Method, String);
-    method public java.lang.reflect.Method element();
-    method public String foundType();
-  }
-
-  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.ANNOTATION_TYPE) public @interface Documented {
-  }
-
-  public enum ElementType {
-    enum_constant public static final java.lang.annotation.ElementType ANNOTATION_TYPE;
-    enum_constant public static final java.lang.annotation.ElementType CONSTRUCTOR;
-    enum_constant public static final java.lang.annotation.ElementType FIELD;
-    enum_constant public static final java.lang.annotation.ElementType LOCAL_VARIABLE;
-    enum_constant public static final java.lang.annotation.ElementType METHOD;
-    enum_constant public static final java.lang.annotation.ElementType PACKAGE;
-    enum_constant public static final java.lang.annotation.ElementType PARAMETER;
-    enum_constant public static final java.lang.annotation.ElementType TYPE;
-    enum_constant public static final java.lang.annotation.ElementType TYPE_PARAMETER;
-    enum_constant public static final java.lang.annotation.ElementType TYPE_USE;
-  }
-
-  public class IncompleteAnnotationException extends java.lang.RuntimeException {
-    ctor public IncompleteAnnotationException(Class<? extends java.lang.annotation.Annotation>, String);
-    method public Class<? extends java.lang.annotation.Annotation> annotationType();
-    method public String elementName();
-  }
-
-  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.ANNOTATION_TYPE) public @interface Inherited {
-  }
-
-  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target(java.lang.annotation.ElementType.FIELD) public @interface Native {
-  }
-
-  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.ANNOTATION_TYPE) public @interface Repeatable {
-    method public abstract Class<? extends java.lang.annotation.Annotation> value();
-  }
-
-  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.ANNOTATION_TYPE) public @interface Retention {
-    method public abstract java.lang.annotation.RetentionPolicy value();
-  }
-
-  public enum RetentionPolicy {
-    enum_constant public static final java.lang.annotation.RetentionPolicy CLASS;
-    enum_constant public static final java.lang.annotation.RetentionPolicy RUNTIME;
-    enum_constant public static final java.lang.annotation.RetentionPolicy SOURCE;
-  }
-
-  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.ANNOTATION_TYPE) public @interface Target {
-    method public abstract java.lang.annotation.ElementType[] value();
-  }
-
-}
-
-package java.lang.invoke {
-
-  public abstract class CallSite {
-    method public abstract java.lang.invoke.MethodHandle dynamicInvoker();
-    method public abstract java.lang.invoke.MethodHandle getTarget();
-    method public abstract void setTarget(java.lang.invoke.MethodHandle);
-    method public java.lang.invoke.MethodType type();
-  }
-
-  public class ConstantCallSite extends java.lang.invoke.CallSite {
-    ctor public ConstantCallSite(java.lang.invoke.MethodHandle);
-    ctor protected ConstantCallSite(java.lang.invoke.MethodType, java.lang.invoke.MethodHandle) throws java.lang.Throwable;
-    method public final java.lang.invoke.MethodHandle dynamicInvoker();
-    method public final java.lang.invoke.MethodHandle getTarget();
-    method public final void setTarget(java.lang.invoke.MethodHandle);
-  }
-
-  public class LambdaConversionException extends java.lang.Exception {
-    ctor public LambdaConversionException();
-    ctor public LambdaConversionException(String);
-    ctor public LambdaConversionException(String, Throwable);
-    ctor public LambdaConversionException(Throwable);
-    ctor public LambdaConversionException(String, Throwable, boolean, boolean);
-  }
-
-  public abstract class MethodHandle {
-    method public java.lang.invoke.MethodHandle asCollector(Class<?>, int);
-    method public java.lang.invoke.MethodHandle asFixedArity();
-    method public java.lang.invoke.MethodHandle asSpreader(Class<?>, int);
-    method public java.lang.invoke.MethodHandle asType(java.lang.invoke.MethodType);
-    method public java.lang.invoke.MethodHandle asVarargsCollector(Class<?>);
-    method public java.lang.invoke.MethodHandle bindTo(Object);
-    method public final Object invoke(java.lang.Object...) throws java.lang.Throwable;
-    method public final Object invokeExact(java.lang.Object...) throws java.lang.Throwable;
-    method public Object invokeWithArguments(java.lang.Object...) throws java.lang.Throwable;
-    method public Object invokeWithArguments(java.util.List<?>) throws java.lang.Throwable;
-    method public boolean isVarargsCollector();
-    method public java.lang.invoke.MethodType type();
-  }
-
-  public interface MethodHandleInfo {
-    method public Class<?> getDeclaringClass();
-    method public java.lang.invoke.MethodType getMethodType();
-    method public int getModifiers();
-    method public String getName();
-    method public int getReferenceKind();
-    method public default boolean isVarArgs();
-    method @Deprecated public static boolean refKindIsField(int);
-    method @Deprecated public static boolean refKindIsValid(int);
-    method @Deprecated public static String refKindName(int);
-    method public static String referenceKindToString(int);
-    method public <T extends java.lang.reflect.Member> T reflectAs(Class<T>, java.lang.invoke.MethodHandles.Lookup);
-    method public static String toString(int, Class<?>, String, java.lang.invoke.MethodType);
-    field public static final int REF_getField = 1; // 0x1
-    field public static final int REF_getStatic = 2; // 0x2
-    field public static final int REF_invokeInterface = 9; // 0x9
-    field public static final int REF_invokeSpecial = 7; // 0x7
-    field public static final int REF_invokeStatic = 6; // 0x6
-    field public static final int REF_invokeVirtual = 5; // 0x5
-    field public static final int REF_newInvokeSpecial = 8; // 0x8
-    field public static final int REF_putField = 3; // 0x3
-    field public static final int REF_putStatic = 4; // 0x4
-  }
-
-  public class MethodHandles {
-    method public static java.lang.invoke.MethodHandle arrayElementGetter(Class<?>) throws java.lang.IllegalArgumentException;
-    method public static java.lang.invoke.MethodHandle arrayElementSetter(Class<?>) throws java.lang.IllegalArgumentException;
-    method public static java.lang.invoke.MethodHandle catchException(java.lang.invoke.MethodHandle, Class<? extends java.lang.Throwable>, java.lang.invoke.MethodHandle);
-    method public static java.lang.invoke.MethodHandle collectArguments(java.lang.invoke.MethodHandle, int, java.lang.invoke.MethodHandle);
-    method public static java.lang.invoke.MethodHandle constant(Class<?>, Object);
-    method public static java.lang.invoke.MethodHandle dropArguments(java.lang.invoke.MethodHandle, int, java.util.List<java.lang.Class<?>>);
-    method public static java.lang.invoke.MethodHandle dropArguments(java.lang.invoke.MethodHandle, int, Class<?>...);
-    method public static java.lang.invoke.MethodHandle exactInvoker(java.lang.invoke.MethodType);
-    method public static java.lang.invoke.MethodHandle explicitCastArguments(java.lang.invoke.MethodHandle, java.lang.invoke.MethodType);
-    method public static java.lang.invoke.MethodHandle filterArguments(java.lang.invoke.MethodHandle, int, java.lang.invoke.MethodHandle...);
-    method public static java.lang.invoke.MethodHandle filterReturnValue(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
-    method public static java.lang.invoke.MethodHandle foldArguments(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
-    method public static java.lang.invoke.MethodHandle guardWithTest(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
-    method public static java.lang.invoke.MethodHandle identity(Class<?>);
-    method public static java.lang.invoke.MethodHandle insertArguments(java.lang.invoke.MethodHandle, int, java.lang.Object...);
-    method public static java.lang.invoke.MethodHandle invoker(java.lang.invoke.MethodType);
-    method public static java.lang.invoke.MethodHandles.Lookup lookup();
-    method public static java.lang.invoke.MethodHandle permuteArguments(java.lang.invoke.MethodHandle, java.lang.invoke.MethodType, int...);
-    method public static java.lang.invoke.MethodHandles.Lookup publicLookup();
-    method public static <T extends java.lang.reflect.Member> T reflectAs(Class<T>, java.lang.invoke.MethodHandle);
-    method public static java.lang.invoke.MethodHandle spreadInvoker(java.lang.invoke.MethodType, int);
-    method public static java.lang.invoke.MethodHandle throwException(Class<?>, Class<? extends java.lang.Throwable>);
-  }
-
-  public static final class MethodHandles.Lookup {
-    method public java.lang.invoke.MethodHandle bind(Object, String, java.lang.invoke.MethodType) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
-    method public java.lang.invoke.MethodHandle findConstructor(Class<?>, java.lang.invoke.MethodType) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
-    method public java.lang.invoke.MethodHandle findGetter(Class<?>, String, Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchFieldException;
-    method public java.lang.invoke.MethodHandle findSetter(Class<?>, String, Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchFieldException;
-    method public java.lang.invoke.MethodHandle findSpecial(Class<?>, String, java.lang.invoke.MethodType, Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
-    method public java.lang.invoke.MethodHandle findStatic(Class<?>, String, java.lang.invoke.MethodType) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
-    method public java.lang.invoke.MethodHandle findStaticGetter(Class<?>, String, Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchFieldException;
-    method public java.lang.invoke.MethodHandle findStaticSetter(Class<?>, String, Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchFieldException;
-    method public java.lang.invoke.MethodHandle findVirtual(Class<?>, String, java.lang.invoke.MethodType) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
-    method public java.lang.invoke.MethodHandles.Lookup in(Class<?>);
-    method public Class<?> lookupClass();
-    method public int lookupModes();
-    method public java.lang.invoke.MethodHandleInfo revealDirect(java.lang.invoke.MethodHandle);
-    method public java.lang.invoke.MethodHandle unreflect(java.lang.reflect.Method) throws java.lang.IllegalAccessException;
-    method public java.lang.invoke.MethodHandle unreflectConstructor(java.lang.reflect.Constructor<?>) throws java.lang.IllegalAccessException;
-    method public java.lang.invoke.MethodHandle unreflectGetter(java.lang.reflect.Field) throws java.lang.IllegalAccessException;
-    method public java.lang.invoke.MethodHandle unreflectSetter(java.lang.reflect.Field) throws java.lang.IllegalAccessException;
-    method public java.lang.invoke.MethodHandle unreflectSpecial(java.lang.reflect.Method, Class<?>) throws java.lang.IllegalAccessException;
-    field public static final int PACKAGE = 8; // 0x8
-    field public static final int PRIVATE = 2; // 0x2
-    field public static final int PROTECTED = 4; // 0x4
-    field public static final int PUBLIC = 1; // 0x1
-  }
-
-  public final class MethodType implements java.io.Serializable {
-    method public java.lang.invoke.MethodType appendParameterTypes(Class<?>...);
-    method public java.lang.invoke.MethodType appendParameterTypes(java.util.List<java.lang.Class<?>>);
-    method public java.lang.invoke.MethodType changeParameterType(int, Class<?>);
-    method public java.lang.invoke.MethodType changeReturnType(Class<?>);
-    method public java.lang.invoke.MethodType dropParameterTypes(int, int);
-    method public java.lang.invoke.MethodType erase();
-    method public static java.lang.invoke.MethodType fromMethodDescriptorString(String, ClassLoader) throws java.lang.IllegalArgumentException, java.lang.TypeNotPresentException;
-    method public java.lang.invoke.MethodType generic();
-    method public static java.lang.invoke.MethodType genericMethodType(int, boolean);
-    method public static java.lang.invoke.MethodType genericMethodType(int);
-    method public boolean hasPrimitives();
-    method public boolean hasWrappers();
-    method public java.lang.invoke.MethodType insertParameterTypes(int, Class<?>...);
-    method public java.lang.invoke.MethodType insertParameterTypes(int, java.util.List<java.lang.Class<?>>);
-    method public static java.lang.invoke.MethodType methodType(Class<?>, Class<?>[]);
-    method public static java.lang.invoke.MethodType methodType(Class<?>, java.util.List<java.lang.Class<?>>);
-    method public static java.lang.invoke.MethodType methodType(Class<?>, Class<?>, Class<?>...);
-    method public static java.lang.invoke.MethodType methodType(Class<?>);
-    method public static java.lang.invoke.MethodType methodType(Class<?>, Class<?>);
-    method public static java.lang.invoke.MethodType methodType(Class<?>, java.lang.invoke.MethodType);
-    method public Class<?>[] parameterArray();
-    method public int parameterCount();
-    method public java.util.List<java.lang.Class<?>> parameterList();
-    method public Class<?> parameterType(int);
-    method public Class<?> returnType();
-    method public String toMethodDescriptorString();
-    method public java.lang.invoke.MethodType unwrap();
-    method public java.lang.invoke.MethodType wrap();
-  }
-
-  public class MutableCallSite extends java.lang.invoke.CallSite {
-    ctor public MutableCallSite(java.lang.invoke.MethodType);
-    ctor public MutableCallSite(java.lang.invoke.MethodHandle);
-    method public final java.lang.invoke.MethodHandle dynamicInvoker();
-    method public final java.lang.invoke.MethodHandle getTarget();
-    method public void setTarget(java.lang.invoke.MethodHandle);
-  }
-
-  public class VolatileCallSite extends java.lang.invoke.CallSite {
-    ctor public VolatileCallSite(java.lang.invoke.MethodType);
-    ctor public VolatileCallSite(java.lang.invoke.MethodHandle);
-    method public final java.lang.invoke.MethodHandle dynamicInvoker();
-    method public final java.lang.invoke.MethodHandle getTarget();
-    method public void setTarget(java.lang.invoke.MethodHandle);
-  }
-
-  public class WrongMethodTypeException extends java.lang.RuntimeException {
-    ctor public WrongMethodTypeException();
-    ctor public WrongMethodTypeException(String);
-  }
-
-}
-
-package java.lang.ref {
-
-  public class PhantomReference<T> extends java.lang.ref.Reference<T> {
-    ctor public PhantomReference(T, java.lang.ref.ReferenceQueue<? super T>);
-  }
-
-  public abstract class Reference<T> {
-    method public void clear();
-    method public boolean enqueue();
-    method public T get();
-    method public boolean isEnqueued();
-    method public static void reachabilityFence(Object);
-  }
-
-  public class ReferenceQueue<T> {
-    ctor public ReferenceQueue();
-    method public java.lang.ref.Reference<? extends T> poll();
-    method public java.lang.ref.Reference<? extends T> remove(long) throws java.lang.IllegalArgumentException, java.lang.InterruptedException;
-    method public java.lang.ref.Reference<? extends T> remove() throws java.lang.InterruptedException;
-  }
-
-  public class SoftReference<T> extends java.lang.ref.Reference<T> {
-    ctor public SoftReference(T);
-    ctor public SoftReference(T, java.lang.ref.ReferenceQueue<? super T>);
-  }
-
-  public class WeakReference<T> extends java.lang.ref.Reference<T> {
-    ctor public WeakReference(T);
-    ctor public WeakReference(T, java.lang.ref.ReferenceQueue<? super T>);
-  }
-
-}
-
-package java.lang.reflect {
-
-  public class AccessibleObject implements java.lang.reflect.AnnotatedElement {
-    ctor protected AccessibleObject();
-    method @Nullable public <T extends java.lang.annotation.Annotation> T getAnnotation(@NonNull Class<T>);
-    method @NonNull public java.lang.annotation.Annotation[] getAnnotations();
-    method @NonNull public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    method public boolean isAccessible();
-    method public static void setAccessible(java.lang.reflect.AccessibleObject[], boolean) throws java.lang.SecurityException;
-    method public void setAccessible(boolean) throws java.lang.SecurityException;
-  }
-
-  public interface AnnotatedElement {
-    method @Nullable public <T extends java.lang.annotation.Annotation> T getAnnotation(@NonNull Class<T>);
-    method @NonNull public java.lang.annotation.Annotation[] getAnnotations();
-    method public default <T extends java.lang.annotation.Annotation> T[] getAnnotationsByType(@NonNull Class<T>);
-    method @Nullable public default <T extends java.lang.annotation.Annotation> T getDeclaredAnnotation(@NonNull Class<T>);
-    method @NonNull public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    method public default <T extends java.lang.annotation.Annotation> T[] getDeclaredAnnotationsByType(@NonNull Class<T>);
-    method public default boolean isAnnotationPresent(@NonNull Class<? extends java.lang.annotation.Annotation>);
-  }
-
-  public final class Array {
-    method @Nullable public static Object get(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static boolean getBoolean(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static byte getByte(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static char getChar(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static double getDouble(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static float getFloat(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static int getInt(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static int getLength(@NonNull Object);
-    method public static long getLong(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static short getShort(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method @NonNull public static Object newInstance(@NonNull Class<?>, int) throws java.lang.NegativeArraySizeException;
-    method @NonNull public static Object newInstance(@NonNull Class<?>, int...) throws java.lang.IllegalArgumentException, java.lang.NegativeArraySizeException;
-    method public static void set(@NonNull Object, int, @Nullable Object) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static void setBoolean(@NonNull Object, int, boolean);
-    method public static void setByte(@NonNull Object, int, byte) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static void setChar(@NonNull Object, int, char) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static void setDouble(@NonNull Object, int, double) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static void setFloat(@NonNull Object, int, float) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static void setInt(@NonNull Object, int, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static void setLong(@NonNull Object, int, long) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static void setShort(@NonNull Object, int, short) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-  }
-
-  public final class Constructor<T> extends java.lang.reflect.Executable {
-    method @NonNull public Class<T> getDeclaringClass();
-    method public Class<?>[] getExceptionTypes();
-    method public int getModifiers();
-    method @NonNull public String getName();
-    method public java.lang.annotation.Annotation[][] getParameterAnnotations();
-    method @NonNull public Class<?>[] getParameterTypes();
-    method public java.lang.reflect.TypeVariable<java.lang.reflect.Constructor<T>>[] getTypeParameters();
-    method @NonNull public T newInstance(java.lang.Object...) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException, java.lang.InstantiationException, java.lang.reflect.InvocationTargetException;
-    method @NonNull public String toGenericString();
-  }
-
-  public abstract class Executable extends java.lang.reflect.AccessibleObject implements java.lang.reflect.GenericDeclaration java.lang.reflect.Member {
-    method @NonNull public abstract Class<?>[] getExceptionTypes();
-    method @NonNull public java.lang.reflect.Type[] getGenericExceptionTypes();
-    method @NonNull public java.lang.reflect.Type[] getGenericParameterTypes();
-    method @NonNull public abstract java.lang.annotation.Annotation[][] getParameterAnnotations();
-    method public int getParameterCount();
-    method @NonNull public abstract Class<?>[] getParameterTypes();
-    method @NonNull public java.lang.reflect.Parameter[] getParameters();
-    method public final boolean isAnnotationPresent(@NonNull Class<? extends java.lang.annotation.Annotation>);
-    method public boolean isSynthetic();
-    method public boolean isVarArgs();
-    method @NonNull public abstract String toGenericString();
-  }
-
-  public final class Field extends java.lang.reflect.AccessibleObject implements java.lang.reflect.Member {
-    method @Nullable public Object get(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public boolean getBoolean(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public byte getByte(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public char getChar(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method @NonNull public Class<?> getDeclaringClass();
-    method public double getDouble(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public float getFloat(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method @NonNull public java.lang.reflect.Type getGenericType();
-    method public int getInt(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public long getLong(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public int getModifiers();
-    method @NonNull public String getName();
-    method public short getShort(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method @NonNull public Class<?> getType();
-    method public boolean isEnumConstant();
-    method public boolean isSynthetic();
-    method public void set(@Nullable Object, @Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public void setBoolean(@Nullable Object, boolean) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public void setByte(@Nullable Object, byte) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public void setChar(@Nullable Object, char) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public void setDouble(@Nullable Object, double) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public void setFloat(@Nullable Object, float) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public void setInt(@Nullable Object, int) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public void setLong(@Nullable Object, long) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public void setShort(@Nullable Object, short) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method @NonNull public String toGenericString();
-  }
-
-  public interface GenericArrayType extends java.lang.reflect.Type {
-    method @NonNull public java.lang.reflect.Type getGenericComponentType();
-  }
-
-  public interface GenericDeclaration extends java.lang.reflect.AnnotatedElement {
-    method @NonNull public java.lang.reflect.TypeVariable<?>[] getTypeParameters();
-  }
-
-  public class GenericSignatureFormatError extends java.lang.ClassFormatError {
-    ctor public GenericSignatureFormatError();
-    ctor public GenericSignatureFormatError(String);
-  }
-
-  public interface InvocationHandler {
-    method public Object invoke(Object, java.lang.reflect.Method, Object[]) throws java.lang.Throwable;
-  }
-
-  public class InvocationTargetException extends java.lang.ReflectiveOperationException {
-    ctor protected InvocationTargetException();
-    ctor public InvocationTargetException(Throwable);
-    ctor public InvocationTargetException(Throwable, String);
-    method public Throwable getTargetException();
-  }
-
-  public class MalformedParameterizedTypeException extends java.lang.RuntimeException {
-    ctor public MalformedParameterizedTypeException();
-  }
-
-  public class MalformedParametersException extends java.lang.RuntimeException {
-    ctor public MalformedParametersException();
-    ctor public MalformedParametersException(String);
-  }
-
-  public interface Member {
-    method @NonNull public Class<?> getDeclaringClass();
-    method public int getModifiers();
-    method @NonNull public String getName();
-    method public boolean isSynthetic();
-    field public static final int DECLARED = 1; // 0x1
-    field public static final int PUBLIC = 0; // 0x0
-  }
-
-  public final class Method extends java.lang.reflect.Executable {
-    method @NonNull public Class<?> getDeclaringClass();
-    method @Nullable public Object getDefaultValue();
-    method @NonNull public Class<?>[] getExceptionTypes();
-    method @NonNull public java.lang.reflect.Type getGenericReturnType();
-    method public int getModifiers();
-    method @NonNull public String getName();
-    method @NonNull public java.lang.annotation.Annotation[][] getParameterAnnotations();
-    method @NonNull public Class<?>[] getParameterTypes();
-    method @NonNull public Class<?> getReturnType();
-    method @NonNull public java.lang.reflect.TypeVariable<java.lang.reflect.Method>[] getTypeParameters();
-    method @Nullable public Object invoke(@Nullable Object, @Nullable java.lang.Object...) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException, java.lang.reflect.InvocationTargetException;
-    method public boolean isBridge();
-    method public boolean isDefault();
-    method @NonNull public String toGenericString();
-  }
-
-  public class Modifier {
-    ctor public Modifier();
-    method public static int classModifiers();
-    method public static int constructorModifiers();
-    method public static int fieldModifiers();
-    method public static int interfaceModifiers();
-    method public static boolean isAbstract(int);
-    method public static boolean isFinal(int);
-    method public static boolean isInterface(int);
-    method public static boolean isNative(int);
-    method public static boolean isPrivate(int);
-    method public static boolean isProtected(int);
-    method public static boolean isPublic(int);
-    method public static boolean isStatic(int);
-    method public static boolean isStrict(int);
-    method public static boolean isSynchronized(int);
-    method public static boolean isTransient(int);
-    method public static boolean isVolatile(int);
-    method public static int methodModifiers();
-    method public static int parameterModifiers();
-    method public static String toString(int);
-    field public static final int ABSTRACT = 1024; // 0x400
-    field public static final int FINAL = 16; // 0x10
-    field public static final int INTERFACE = 512; // 0x200
-    field public static final int NATIVE = 256; // 0x100
-    field public static final int PRIVATE = 2; // 0x2
-    field public static final int PROTECTED = 4; // 0x4
-    field public static final int PUBLIC = 1; // 0x1
-    field public static final int STATIC = 8; // 0x8
-    field public static final int STRICT = 2048; // 0x800
-    field public static final int SYNCHRONIZED = 32; // 0x20
-    field public static final int TRANSIENT = 128; // 0x80
-    field public static final int VOLATILE = 64; // 0x40
-  }
-
-  public final class Parameter implements java.lang.reflect.AnnotatedElement {
-    method @Nullable public <T extends java.lang.annotation.Annotation> T getAnnotation(@NonNull Class<T>);
-    method @NonNull public java.lang.annotation.Annotation[] getAnnotations();
-    method @NonNull public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    method @NonNull public java.lang.reflect.Executable getDeclaringExecutable();
-    method public int getModifiers();
-    method @NonNull public String getName();
-    method @NonNull public java.lang.reflect.Type getParameterizedType();
-    method @NonNull public Class<?> getType();
-    method public boolean isImplicit();
-    method public boolean isNamePresent();
-    method public boolean isSynthetic();
-    method public boolean isVarArgs();
-  }
-
-  public interface ParameterizedType extends java.lang.reflect.Type {
-    method @NonNull public java.lang.reflect.Type[] getActualTypeArguments();
-    method @Nullable public java.lang.reflect.Type getOwnerType();
-    method @NonNull public java.lang.reflect.Type getRawType();
-  }
-
-  public class Proxy implements java.io.Serializable {
-    ctor protected Proxy(@NonNull java.lang.reflect.InvocationHandler);
-    method @NonNull public static java.lang.reflect.InvocationHandler getInvocationHandler(@NonNull Object) throws java.lang.IllegalArgumentException;
-    method @NonNull public static Class<?> getProxyClass(@Nullable ClassLoader, @NonNull Class<?>...) throws java.lang.IllegalArgumentException;
-    method public static boolean isProxyClass(@NonNull Class<?>);
-    method @NonNull public static Object newProxyInstance(@Nullable ClassLoader, @NonNull Class<?>[], @NonNull java.lang.reflect.InvocationHandler) throws java.lang.IllegalArgumentException;
-    field protected java.lang.reflect.InvocationHandler h;
-  }
-
-  public final class ReflectPermission extends java.security.BasicPermission {
-    ctor public ReflectPermission(String);
-    ctor public ReflectPermission(String, String);
-  }
-
-  public interface Type {
-    method @NonNull public default String getTypeName();
-  }
-
-  public interface TypeVariable<D extends java.lang.reflect.GenericDeclaration> extends java.lang.reflect.Type {
-    method @NonNull public java.lang.reflect.Type[] getBounds();
-    method @NonNull public D getGenericDeclaration();
-    method @NonNull public String getName();
-  }
-
-  public class UndeclaredThrowableException extends java.lang.RuntimeException {
-    ctor public UndeclaredThrowableException(Throwable);
-    ctor public UndeclaredThrowableException(Throwable, String);
-    method public Throwable getUndeclaredThrowable();
-  }
-
-  public interface WildcardType extends java.lang.reflect.Type {
-    method @NonNull public java.lang.reflect.Type[] getLowerBounds();
-    method @NonNull public java.lang.reflect.Type[] getUpperBounds();
-  }
-
-}
-
-package java.math {
-
-  public class BigDecimal extends java.lang.Number implements java.lang.Comparable<java.math.BigDecimal> {
-    ctor public BigDecimal(char[], int, int);
-    ctor public BigDecimal(char[], int, int, java.math.MathContext);
-    ctor public BigDecimal(char[]);
-    ctor public BigDecimal(char[], java.math.MathContext);
-    ctor public BigDecimal(String);
-    ctor public BigDecimal(String, java.math.MathContext);
-    ctor public BigDecimal(double);
-    ctor public BigDecimal(double, java.math.MathContext);
-    ctor public BigDecimal(java.math.BigInteger);
-    ctor public BigDecimal(java.math.BigInteger, java.math.MathContext);
-    ctor public BigDecimal(java.math.BigInteger, int);
-    ctor public BigDecimal(java.math.BigInteger, int, java.math.MathContext);
-    ctor public BigDecimal(int);
-    ctor public BigDecimal(int, java.math.MathContext);
-    ctor public BigDecimal(long);
-    ctor public BigDecimal(long, java.math.MathContext);
-    method public java.math.BigDecimal abs();
-    method public java.math.BigDecimal abs(java.math.MathContext);
-    method public java.math.BigDecimal add(java.math.BigDecimal);
-    method public java.math.BigDecimal add(java.math.BigDecimal, java.math.MathContext);
-    method public byte byteValueExact();
-    method public int compareTo(java.math.BigDecimal);
-    method public java.math.BigDecimal divide(java.math.BigDecimal, int, int);
-    method public java.math.BigDecimal divide(java.math.BigDecimal, int, java.math.RoundingMode);
-    method public java.math.BigDecimal divide(java.math.BigDecimal, int);
-    method public java.math.BigDecimal divide(java.math.BigDecimal, java.math.RoundingMode);
-    method public java.math.BigDecimal divide(java.math.BigDecimal);
-    method public java.math.BigDecimal divide(java.math.BigDecimal, java.math.MathContext);
-    method public java.math.BigDecimal[] divideAndRemainder(java.math.BigDecimal);
-    method public java.math.BigDecimal[] divideAndRemainder(java.math.BigDecimal, java.math.MathContext);
-    method public java.math.BigDecimal divideToIntegralValue(java.math.BigDecimal);
-    method public java.math.BigDecimal divideToIntegralValue(java.math.BigDecimal, java.math.MathContext);
-    method public double doubleValue();
-    method public float floatValue();
-    method public int intValue();
-    method public int intValueExact();
-    method public long longValue();
-    method public long longValueExact();
-    method public java.math.BigDecimal max(java.math.BigDecimal);
-    method public java.math.BigDecimal min(java.math.BigDecimal);
-    method public java.math.BigDecimal movePointLeft(int);
-    method public java.math.BigDecimal movePointRight(int);
-    method public java.math.BigDecimal multiply(java.math.BigDecimal);
-    method public java.math.BigDecimal multiply(java.math.BigDecimal, java.math.MathContext);
-    method public java.math.BigDecimal negate();
-    method public java.math.BigDecimal negate(java.math.MathContext);
-    method public java.math.BigDecimal plus();
-    method public java.math.BigDecimal plus(java.math.MathContext);
-    method public java.math.BigDecimal pow(int);
-    method public java.math.BigDecimal pow(int, java.math.MathContext);
-    method public int precision();
-    method public java.math.BigDecimal remainder(java.math.BigDecimal);
-    method public java.math.BigDecimal remainder(java.math.BigDecimal, java.math.MathContext);
-    method public java.math.BigDecimal round(java.math.MathContext);
-    method public int scale();
-    method public java.math.BigDecimal scaleByPowerOfTen(int);
-    method public java.math.BigDecimal setScale(int, java.math.RoundingMode);
-    method public java.math.BigDecimal setScale(int, int);
-    method public java.math.BigDecimal setScale(int);
-    method public short shortValueExact();
-    method public int signum();
-    method public java.math.BigDecimal stripTrailingZeros();
-    method public java.math.BigDecimal subtract(java.math.BigDecimal);
-    method public java.math.BigDecimal subtract(java.math.BigDecimal, java.math.MathContext);
-    method public java.math.BigInteger toBigInteger();
-    method public java.math.BigInteger toBigIntegerExact();
-    method public String toEngineeringString();
-    method public String toPlainString();
-    method public java.math.BigDecimal ulp();
-    method public java.math.BigInteger unscaledValue();
-    method public static java.math.BigDecimal valueOf(long, int);
-    method public static java.math.BigDecimal valueOf(long);
-    method public static java.math.BigDecimal valueOf(double);
-    field public static final java.math.BigDecimal ONE;
-    field public static final int ROUND_CEILING = 2; // 0x2
-    field public static final int ROUND_DOWN = 1; // 0x1
-    field public static final int ROUND_FLOOR = 3; // 0x3
-    field public static final int ROUND_HALF_DOWN = 5; // 0x5
-    field public static final int ROUND_HALF_EVEN = 6; // 0x6
-    field public static final int ROUND_HALF_UP = 4; // 0x4
-    field public static final int ROUND_UNNECESSARY = 7; // 0x7
-    field public static final int ROUND_UP = 0; // 0x0
-    field public static final java.math.BigDecimal TEN;
-    field public static final java.math.BigDecimal ZERO;
-  }
-
-  public class BigInteger extends java.lang.Number implements java.lang.Comparable<java.math.BigInteger> {
-    ctor public BigInteger(byte[]);
-    ctor public BigInteger(int, byte[]);
-    ctor public BigInteger(@NonNull String, int);
-    ctor public BigInteger(@NonNull String);
-    ctor public BigInteger(int, @NonNull java.util.Random);
-    ctor public BigInteger(int, int, @NonNull java.util.Random);
-    method @NonNull public java.math.BigInteger abs();
-    method @NonNull public java.math.BigInteger add(@NonNull java.math.BigInteger);
-    method @NonNull public java.math.BigInteger and(@NonNull java.math.BigInteger);
-    method @NonNull public java.math.BigInteger andNot(@NonNull java.math.BigInteger);
-    method public int bitCount();
-    method public int bitLength();
-    method public byte byteValueExact();
-    method @NonNull public java.math.BigInteger clearBit(int);
-    method public int compareTo(@NonNull java.math.BigInteger);
-    method @NonNull public java.math.BigInteger divide(@NonNull java.math.BigInteger);
-    method @NonNull public java.math.BigInteger[] divideAndRemainder(@NonNull java.math.BigInteger);
-    method public double doubleValue();
-    method @NonNull public java.math.BigInteger flipBit(int);
-    method public float floatValue();
-    method @NonNull public java.math.BigInteger gcd(@NonNull java.math.BigInteger);
-    method public int getLowestSetBit();
-    method public int intValue();
-    method public int intValueExact();
-    method public boolean isProbablePrime(int);
-    method public long longValue();
-    method public long longValueExact();
-    method @NonNull public java.math.BigInteger max(@NonNull java.math.BigInteger);
-    method @NonNull public java.math.BigInteger min(@NonNull java.math.BigInteger);
-    method @NonNull public java.math.BigInteger mod(@NonNull java.math.BigInteger);
-    method @NonNull public java.math.BigInteger modInverse(@NonNull java.math.BigInteger);
-    method @NonNull public java.math.BigInteger modPow(@NonNull java.math.BigInteger, @NonNull java.math.BigInteger);
-    method @NonNull public java.math.BigInteger multiply(@NonNull java.math.BigInteger);
-    method @NonNull public java.math.BigInteger negate();
-    method @NonNull public java.math.BigInteger nextProbablePrime();
-    method @NonNull public java.math.BigInteger not();
-    method @NonNull public java.math.BigInteger or(@NonNull java.math.BigInteger);
-    method @NonNull public java.math.BigInteger pow(int);
-    method @NonNull public static java.math.BigInteger probablePrime(int, @NonNull java.util.Random);
-    method @NonNull public java.math.BigInteger remainder(@NonNull java.math.BigInteger);
-    method @NonNull public java.math.BigInteger setBit(int);
-    method @NonNull public java.math.BigInteger shiftLeft(int);
-    method @NonNull public java.math.BigInteger shiftRight(int);
-    method public short shortValueExact();
-    method public int signum();
-    method @NonNull public java.math.BigInteger subtract(@NonNull java.math.BigInteger);
-    method public boolean testBit(int);
-    method public byte[] toByteArray();
-    method @NonNull public String toString(int);
-    method @NonNull public static java.math.BigInteger valueOf(long);
-    method @NonNull public java.math.BigInteger xor(@NonNull java.math.BigInteger);
-    field @NonNull public static final java.math.BigInteger ONE;
-    field @NonNull public static final java.math.BigInteger TEN;
-    field @NonNull public static final java.math.BigInteger ZERO;
-  }
-
-  public final class MathContext implements java.io.Serializable {
-    ctor public MathContext(int);
-    ctor public MathContext(int, java.math.RoundingMode);
-    ctor public MathContext(String);
-    method public int getPrecision();
-    method public java.math.RoundingMode getRoundingMode();
-    field public static final java.math.MathContext DECIMAL128;
-    field public static final java.math.MathContext DECIMAL32;
-    field public static final java.math.MathContext DECIMAL64;
-    field public static final java.math.MathContext UNLIMITED;
-  }
-
-  public enum RoundingMode {
-    method public static java.math.RoundingMode valueOf(int);
-    enum_constant public static final java.math.RoundingMode CEILING;
-    enum_constant public static final java.math.RoundingMode DOWN;
-    enum_constant public static final java.math.RoundingMode FLOOR;
-    enum_constant public static final java.math.RoundingMode HALF_DOWN;
-    enum_constant public static final java.math.RoundingMode HALF_EVEN;
-    enum_constant public static final java.math.RoundingMode HALF_UP;
-    enum_constant public static final java.math.RoundingMode UNNECESSARY;
-    enum_constant public static final java.math.RoundingMode UP;
-  }
-
-}
-
-package java.net {
-
-  public abstract class Authenticator {
-    ctor public Authenticator();
-    method protected java.net.PasswordAuthentication getPasswordAuthentication();
-    method protected final String getRequestingHost();
-    method protected final int getRequestingPort();
-    method protected final String getRequestingPrompt();
-    method protected final String getRequestingProtocol();
-    method protected final String getRequestingScheme();
-    method protected final java.net.InetAddress getRequestingSite();
-    method protected java.net.URL getRequestingURL();
-    method protected java.net.Authenticator.RequestorType getRequestorType();
-    method public static java.net.PasswordAuthentication requestPasswordAuthentication(java.net.InetAddress, int, String, String, String);
-    method public static java.net.PasswordAuthentication requestPasswordAuthentication(String, java.net.InetAddress, int, String, String, String);
-    method public static java.net.PasswordAuthentication requestPasswordAuthentication(String, java.net.InetAddress, int, String, String, String, java.net.URL, java.net.Authenticator.RequestorType);
-    method public static void setDefault(java.net.Authenticator);
-  }
-
-  public enum Authenticator.RequestorType {
-    enum_constant public static final java.net.Authenticator.RequestorType PROXY;
-    enum_constant public static final java.net.Authenticator.RequestorType SERVER;
-  }
-
-  public class BindException extends java.net.SocketException {
-    ctor public BindException(String);
-    ctor public BindException();
-  }
-
-  public abstract class CacheRequest {
-    ctor public CacheRequest();
-    method public abstract void abort();
-    method public abstract java.io.OutputStream getBody() throws java.io.IOException;
-  }
-
-  public abstract class CacheResponse {
-    ctor public CacheResponse();
-    method public abstract java.io.InputStream getBody() throws java.io.IOException;
-    method public abstract java.util.Map<java.lang.String,java.util.List<java.lang.String>> getHeaders() throws java.io.IOException;
-  }
-
-  public class ConnectException extends java.net.SocketException {
-    ctor public ConnectException(String);
-    ctor public ConnectException();
-  }
-
-  public abstract class ContentHandler {
-    ctor public ContentHandler();
-    method public abstract Object getContent(java.net.URLConnection) throws java.io.IOException;
-    method public Object getContent(java.net.URLConnection, Class[]) throws java.io.IOException;
-  }
-
-  public interface ContentHandlerFactory {
-    method public java.net.ContentHandler createContentHandler(String);
-  }
-
-  public abstract class CookieHandler {
-    ctor public CookieHandler();
-    method public abstract java.util.Map<java.lang.String,java.util.List<java.lang.String>> get(java.net.URI, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
-    method public static java.net.CookieHandler getDefault();
-    method public abstract void put(java.net.URI, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
-    method public static void setDefault(java.net.CookieHandler);
-  }
-
-  public class CookieManager extends java.net.CookieHandler {
-    ctor public CookieManager();
-    ctor public CookieManager(java.net.CookieStore, java.net.CookiePolicy);
-    method public java.util.Map<java.lang.String,java.util.List<java.lang.String>> get(java.net.URI, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
-    method public java.net.CookieStore getCookieStore();
-    method public void put(java.net.URI, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
-    method public void setCookiePolicy(java.net.CookiePolicy);
-  }
-
-  public interface CookiePolicy {
-    method public boolean shouldAccept(java.net.URI, java.net.HttpCookie);
-    field public static final java.net.CookiePolicy ACCEPT_ALL;
-    field public static final java.net.CookiePolicy ACCEPT_NONE;
-    field public static final java.net.CookiePolicy ACCEPT_ORIGINAL_SERVER;
-  }
-
-  public interface CookieStore {
-    method public void add(java.net.URI, java.net.HttpCookie);
-    method public java.util.List<java.net.HttpCookie> get(java.net.URI);
-    method public java.util.List<java.net.HttpCookie> getCookies();
-    method public java.util.List<java.net.URI> getURIs();
-    method public boolean remove(java.net.URI, java.net.HttpCookie);
-    method public boolean removeAll();
-  }
-
-  public final class DatagramPacket {
-    ctor public DatagramPacket(byte[], int, int);
-    ctor public DatagramPacket(byte[], int);
-    ctor public DatagramPacket(byte[], int, int, java.net.InetAddress, int);
-    ctor public DatagramPacket(byte[], int, int, java.net.SocketAddress);
-    ctor public DatagramPacket(byte[], int, java.net.InetAddress, int);
-    ctor public DatagramPacket(byte[], int, java.net.SocketAddress);
-    method public java.net.InetAddress getAddress();
-    method public byte[] getData();
-    method public int getLength();
-    method public int getOffset();
-    method public int getPort();
-    method public java.net.SocketAddress getSocketAddress();
-    method public void setAddress(java.net.InetAddress);
-    method public void setData(byte[], int, int);
-    method public void setData(byte[]);
-    method public void setLength(int);
-    method public void setPort(int);
-    method public void setSocketAddress(java.net.SocketAddress);
-  }
-
-  public class DatagramSocket implements java.io.Closeable {
-    ctor public DatagramSocket() throws java.net.SocketException;
-    ctor protected DatagramSocket(java.net.DatagramSocketImpl);
-    ctor public DatagramSocket(java.net.SocketAddress) throws java.net.SocketException;
-    ctor public DatagramSocket(int) throws java.net.SocketException;
-    ctor public DatagramSocket(int, java.net.InetAddress) throws java.net.SocketException;
-    method public void bind(java.net.SocketAddress) throws java.net.SocketException;
-    method public void close();
-    method public void connect(java.net.InetAddress, int);
-    method public void connect(java.net.SocketAddress) throws java.net.SocketException;
-    method public void disconnect();
-    method public boolean getBroadcast() throws java.net.SocketException;
-    method public java.nio.channels.DatagramChannel getChannel();
-    method public java.net.InetAddress getInetAddress();
-    method public java.net.InetAddress getLocalAddress();
-    method public int getLocalPort();
-    method public java.net.SocketAddress getLocalSocketAddress();
-    method public int getPort();
-    method public int getReceiveBufferSize() throws java.net.SocketException;
-    method public java.net.SocketAddress getRemoteSocketAddress();
-    method public boolean getReuseAddress() throws java.net.SocketException;
-    method public int getSendBufferSize() throws java.net.SocketException;
-    method public int getSoTimeout() throws java.net.SocketException;
-    method public int getTrafficClass() throws java.net.SocketException;
-    method public boolean isBound();
-    method public boolean isClosed();
-    method public boolean isConnected();
-    method public void receive(java.net.DatagramPacket) throws java.io.IOException;
-    method public void send(java.net.DatagramPacket) throws java.io.IOException;
-    method public void setBroadcast(boolean) throws java.net.SocketException;
-    method public static void setDatagramSocketImplFactory(java.net.DatagramSocketImplFactory) throws java.io.IOException;
-    method public void setReceiveBufferSize(int) throws java.net.SocketException;
-    method public void setReuseAddress(boolean) throws java.net.SocketException;
-    method public void setSendBufferSize(int) throws java.net.SocketException;
-    method public void setSoTimeout(int) throws java.net.SocketException;
-    method public void setTrafficClass(int) throws java.net.SocketException;
-  }
-
-  public abstract class DatagramSocketImpl implements java.net.SocketOptions {
-    ctor public DatagramSocketImpl();
-    method protected abstract void bind(int, java.net.InetAddress) throws java.net.SocketException;
-    method protected abstract void close();
-    method protected void connect(java.net.InetAddress, int) throws java.net.SocketException;
-    method protected abstract void create() throws java.net.SocketException;
-    method protected void disconnect();
-    method protected java.io.FileDescriptor getFileDescriptor();
-    method protected int getLocalPort();
-    method @Deprecated protected abstract byte getTTL() throws java.io.IOException;
-    method protected abstract int getTimeToLive() throws java.io.IOException;
-    method protected abstract void join(java.net.InetAddress) throws java.io.IOException;
-    method protected abstract void joinGroup(java.net.SocketAddress, java.net.NetworkInterface) throws java.io.IOException;
-    method protected abstract void leave(java.net.InetAddress) throws java.io.IOException;
-    method protected abstract void leaveGroup(java.net.SocketAddress, java.net.NetworkInterface) throws java.io.IOException;
-    method protected abstract int peek(java.net.InetAddress) throws java.io.IOException;
-    method protected abstract int peekData(java.net.DatagramPacket) throws java.io.IOException;
-    method protected abstract void receive(java.net.DatagramPacket) throws java.io.IOException;
-    method protected abstract void send(java.net.DatagramPacket) throws java.io.IOException;
-    method @Deprecated protected abstract void setTTL(byte) throws java.io.IOException;
-    method protected abstract void setTimeToLive(int) throws java.io.IOException;
-    field protected java.io.FileDescriptor fd;
-    field protected int localPort;
-  }
-
-  public interface DatagramSocketImplFactory {
-    method public java.net.DatagramSocketImpl createDatagramSocketImpl();
-  }
-
-  public interface FileNameMap {
-    method public String getContentTypeFor(String);
-  }
-
-  public final class HttpCookie implements java.lang.Cloneable {
-    ctor public HttpCookie(String, String);
-    method public Object clone();
-    method public static boolean domainMatches(String, String);
-    method public String getComment();
-    method public String getCommentURL();
-    method public boolean getDiscard();
-    method public String getDomain();
-    method public long getMaxAge();
-    method public String getName();
-    method public String getPath();
-    method public String getPortlist();
-    method public boolean getSecure();
-    method public String getValue();
-    method public int getVersion();
-    method public boolean hasExpired();
-    method public boolean isHttpOnly();
-    method public static java.util.List<java.net.HttpCookie> parse(String);
-    method public void setComment(String);
-    method public void setCommentURL(String);
-    method public void setDiscard(boolean);
-    method public void setDomain(String);
-    method public void setHttpOnly(boolean);
-    method public void setMaxAge(long);
-    method public void setPath(String);
-    method public void setPortlist(String);
-    method public void setSecure(boolean);
-    method public void setValue(String);
-    method public void setVersion(int);
-  }
-
-  public class HttpRetryException extends java.io.IOException {
-    ctor public HttpRetryException(String, int);
-    ctor public HttpRetryException(String, int, String);
-    method public String getLocation();
-    method public String getReason();
-    method public int responseCode();
-  }
-
-  public abstract class HttpURLConnection extends java.net.URLConnection {
-    ctor protected HttpURLConnection(java.net.URL);
-    method public abstract void disconnect();
-    method public java.io.InputStream getErrorStream();
-    method public static boolean getFollowRedirects();
-    method public boolean getInstanceFollowRedirects();
-    method public String getRequestMethod();
-    method public int getResponseCode() throws java.io.IOException;
-    method public String getResponseMessage() throws java.io.IOException;
-    method public void setChunkedStreamingMode(int);
-    method public void setFixedLengthStreamingMode(int);
-    method public void setFixedLengthStreamingMode(long);
-    method public static void setFollowRedirects(boolean);
-    method public void setInstanceFollowRedirects(boolean);
-    method public void setRequestMethod(String) throws java.net.ProtocolException;
-    method public abstract boolean usingProxy();
-    field public static final int HTTP_ACCEPTED = 202; // 0xca
-    field public static final int HTTP_BAD_GATEWAY = 502; // 0x1f6
-    field public static final int HTTP_BAD_METHOD = 405; // 0x195
-    field public static final int HTTP_BAD_REQUEST = 400; // 0x190
-    field public static final int HTTP_CLIENT_TIMEOUT = 408; // 0x198
-    field public static final int HTTP_CONFLICT = 409; // 0x199
-    field public static final int HTTP_CREATED = 201; // 0xc9
-    field public static final int HTTP_ENTITY_TOO_LARGE = 413; // 0x19d
-    field public static final int HTTP_FORBIDDEN = 403; // 0x193
-    field public static final int HTTP_GATEWAY_TIMEOUT = 504; // 0x1f8
-    field public static final int HTTP_GONE = 410; // 0x19a
-    field public static final int HTTP_INTERNAL_ERROR = 500; // 0x1f4
-    field public static final int HTTP_LENGTH_REQUIRED = 411; // 0x19b
-    field public static final int HTTP_MOVED_PERM = 301; // 0x12d
-    field public static final int HTTP_MOVED_TEMP = 302; // 0x12e
-    field public static final int HTTP_MULT_CHOICE = 300; // 0x12c
-    field public static final int HTTP_NOT_ACCEPTABLE = 406; // 0x196
-    field public static final int HTTP_NOT_AUTHORITATIVE = 203; // 0xcb
-    field public static final int HTTP_NOT_FOUND = 404; // 0x194
-    field public static final int HTTP_NOT_IMPLEMENTED = 501; // 0x1f5
-    field public static final int HTTP_NOT_MODIFIED = 304; // 0x130
-    field public static final int HTTP_NO_CONTENT = 204; // 0xcc
-    field public static final int HTTP_OK = 200; // 0xc8
-    field public static final int HTTP_PARTIAL = 206; // 0xce
-    field public static final int HTTP_PAYMENT_REQUIRED = 402; // 0x192
-    field public static final int HTTP_PRECON_FAILED = 412; // 0x19c
-    field public static final int HTTP_PROXY_AUTH = 407; // 0x197
-    field public static final int HTTP_REQ_TOO_LONG = 414; // 0x19e
-    field public static final int HTTP_RESET = 205; // 0xcd
-    field public static final int HTTP_SEE_OTHER = 303; // 0x12f
-    field @Deprecated public static final int HTTP_SERVER_ERROR = 500; // 0x1f4
-    field public static final int HTTP_UNAUTHORIZED = 401; // 0x191
-    field public static final int HTTP_UNAVAILABLE = 503; // 0x1f7
-    field public static final int HTTP_UNSUPPORTED_TYPE = 415; // 0x19f
-    field public static final int HTTP_USE_PROXY = 305; // 0x131
-    field public static final int HTTP_VERSION = 505; // 0x1f9
-    field protected int chunkLength;
-    field protected int fixedContentLength;
-    field protected long fixedContentLengthLong;
-    field protected boolean instanceFollowRedirects;
-    field protected String method;
-    field protected int responseCode;
-    field protected String responseMessage;
-  }
-
-  public final class IDN {
-    method public static String toASCII(String, int);
-    method public static String toASCII(String);
-    method public static String toUnicode(String, int);
-    method public static String toUnicode(String);
-    field public static final int ALLOW_UNASSIGNED = 1; // 0x1
-    field public static final int USE_STD3_ASCII_RULES = 2; // 0x2
-  }
-
-  public final class Inet4Address extends java.net.InetAddress {
-  }
-
-  public final class Inet6Address extends java.net.InetAddress {
-    method public static java.net.Inet6Address getByAddress(String, byte[], java.net.NetworkInterface) throws java.net.UnknownHostException;
-    method public static java.net.Inet6Address getByAddress(String, byte[], int) throws java.net.UnknownHostException;
-    method public int getScopeId();
-    method public java.net.NetworkInterface getScopedInterface();
-    method public boolean isIPv4CompatibleAddress();
-  }
-
-  public class InetAddress implements java.io.Serializable {
-    method public byte[] getAddress();
-    method public static java.net.InetAddress[] getAllByName(String) throws java.net.UnknownHostException;
-    method public static java.net.InetAddress getByAddress(String, byte[]) throws java.net.UnknownHostException;
-    method public static java.net.InetAddress getByAddress(byte[]) throws java.net.UnknownHostException;
-    method public static java.net.InetAddress getByName(String) throws java.net.UnknownHostException;
-    method public String getCanonicalHostName();
-    method public String getHostAddress();
-    method public String getHostName();
-    method public static java.net.InetAddress getLocalHost() throws java.net.UnknownHostException;
-    method public static java.net.InetAddress getLoopbackAddress();
-    method public boolean isAnyLocalAddress();
-    method public boolean isLinkLocalAddress();
-    method public boolean isLoopbackAddress();
-    method public boolean isMCGlobal();
-    method public boolean isMCLinkLocal();
-    method public boolean isMCNodeLocal();
-    method public boolean isMCOrgLocal();
-    method public boolean isMCSiteLocal();
-    method public boolean isMulticastAddress();
-    method public boolean isReachable(int) throws java.io.IOException;
-    method public boolean isReachable(java.net.NetworkInterface, int, int) throws java.io.IOException;
-    method public boolean isSiteLocalAddress();
-  }
-
-  public class InetSocketAddress extends java.net.SocketAddress {
-    ctor public InetSocketAddress(int);
-    ctor public InetSocketAddress(java.net.InetAddress, int);
-    ctor public InetSocketAddress(String, int);
-    method public static java.net.InetSocketAddress createUnresolved(String, int);
-    method public final boolean equals(Object);
-    method public final java.net.InetAddress getAddress();
-    method public final String getHostName();
-    method public final String getHostString();
-    method public final int getPort();
-    method public final int hashCode();
-    method public final boolean isUnresolved();
-  }
-
-  public class InterfaceAddress {
-    method public java.net.InetAddress getAddress();
-    method public java.net.InetAddress getBroadcast();
-    method public short getNetworkPrefixLength();
-  }
-
-  public abstract class JarURLConnection extends java.net.URLConnection {
-    ctor protected JarURLConnection(java.net.URL) throws java.net.MalformedURLException;
-    method public java.util.jar.Attributes getAttributes() throws java.io.IOException;
-    method public java.security.cert.Certificate[] getCertificates() throws java.io.IOException;
-    method public String getEntryName();
-    method public java.util.jar.JarEntry getJarEntry() throws java.io.IOException;
-    method public abstract java.util.jar.JarFile getJarFile() throws java.io.IOException;
-    method public java.net.URL getJarFileURL();
-    method public java.util.jar.Attributes getMainAttributes() throws java.io.IOException;
-    method public java.util.jar.Manifest getManifest() throws java.io.IOException;
-    field protected java.net.URLConnection jarFileURLConnection;
-  }
-
-  public class MalformedURLException extends java.io.IOException {
-    ctor public MalformedURLException();
-    ctor public MalformedURLException(String);
-  }
-
-  public class MulticastSocket extends java.net.DatagramSocket {
-    ctor public MulticastSocket() throws java.io.IOException;
-    ctor public MulticastSocket(int) throws java.io.IOException;
-    ctor public MulticastSocket(java.net.SocketAddress) throws java.io.IOException;
-    method public java.net.InetAddress getInterface() throws java.net.SocketException;
-    method public boolean getLoopbackMode() throws java.net.SocketException;
-    method public java.net.NetworkInterface getNetworkInterface() throws java.net.SocketException;
-    method @Deprecated public byte getTTL() throws java.io.IOException;
-    method public int getTimeToLive() throws java.io.IOException;
-    method public void joinGroup(java.net.InetAddress) throws java.io.IOException;
-    method public void joinGroup(java.net.SocketAddress, java.net.NetworkInterface) throws java.io.IOException;
-    method public void leaveGroup(java.net.InetAddress) throws java.io.IOException;
-    method public void leaveGroup(java.net.SocketAddress, java.net.NetworkInterface) throws java.io.IOException;
-    method @Deprecated public void send(java.net.DatagramPacket, byte) throws java.io.IOException;
-    method public void setInterface(java.net.InetAddress) throws java.net.SocketException;
-    method public void setLoopbackMode(boolean) throws java.net.SocketException;
-    method public void setNetworkInterface(java.net.NetworkInterface) throws java.net.SocketException;
-    method @Deprecated public void setTTL(byte) throws java.io.IOException;
-    method public void setTimeToLive(int) throws java.io.IOException;
-  }
-
-  public final class NetPermission extends java.security.BasicPermission {
-    ctor public NetPermission(String);
-    ctor public NetPermission(String, String);
-  }
-
-  public final class NetworkInterface {
-    method public static java.net.NetworkInterface getByIndex(int) throws java.net.SocketException;
-    method public static java.net.NetworkInterface getByInetAddress(java.net.InetAddress) throws java.net.SocketException;
-    method public static java.net.NetworkInterface getByName(String) throws java.net.SocketException;
-    method public String getDisplayName();
-    method public byte[] getHardwareAddress() throws java.net.SocketException;
-    method public int getIndex();
-    method public java.util.Enumeration<java.net.InetAddress> getInetAddresses();
-    method public java.util.List<java.net.InterfaceAddress> getInterfaceAddresses();
-    method public int getMTU() throws java.net.SocketException;
-    method public String getName();
-    method public static java.util.Enumeration<java.net.NetworkInterface> getNetworkInterfaces() throws java.net.SocketException;
-    method public java.net.NetworkInterface getParent();
-    method public java.util.Enumeration<java.net.NetworkInterface> getSubInterfaces();
-    method public boolean isLoopback() throws java.net.SocketException;
-    method public boolean isPointToPoint() throws java.net.SocketException;
-    method public boolean isUp() throws java.net.SocketException;
-    method public boolean isVirtual();
-    method public boolean supportsMulticast() throws java.net.SocketException;
-  }
-
-  public class NoRouteToHostException extends java.net.SocketException {
-    ctor public NoRouteToHostException(String);
-    ctor public NoRouteToHostException();
-  }
-
-  public final class PasswordAuthentication {
-    ctor public PasswordAuthentication(String, char[]);
-    method public char[] getPassword();
-    method public String getUserName();
-  }
-
-  public class PortUnreachableException extends java.net.SocketException {
-    ctor public PortUnreachableException(String);
-    ctor public PortUnreachableException();
-  }
-
-  public class ProtocolException extends java.io.IOException {
-    ctor public ProtocolException(String);
-    ctor public ProtocolException();
-  }
-
-  public interface ProtocolFamily {
-    method public String name();
-  }
-
-  public class Proxy {
-    ctor public Proxy(java.net.Proxy.Type, java.net.SocketAddress);
-    method public java.net.SocketAddress address();
-    method public final boolean equals(Object);
-    method public final int hashCode();
-    method public java.net.Proxy.Type type();
-    field public static final java.net.Proxy NO_PROXY;
-  }
-
-  public enum Proxy.Type {
-    enum_constant public static final java.net.Proxy.Type DIRECT;
-    enum_constant public static final java.net.Proxy.Type HTTP;
-    enum_constant public static final java.net.Proxy.Type SOCKS;
-  }
-
-  public abstract class ProxySelector {
-    ctor public ProxySelector();
-    method public abstract void connectFailed(java.net.URI, java.net.SocketAddress, java.io.IOException);
-    method public static java.net.ProxySelector getDefault();
-    method public abstract java.util.List<java.net.Proxy> select(java.net.URI);
-    method public static void setDefault(java.net.ProxySelector);
-  }
-
-  public abstract class ResponseCache {
-    ctor public ResponseCache();
-    method public abstract java.net.CacheResponse get(java.net.URI, String, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
-    method public static java.net.ResponseCache getDefault();
-    method public abstract java.net.CacheRequest put(java.net.URI, java.net.URLConnection) throws java.io.IOException;
-    method public static void setDefault(java.net.ResponseCache);
-  }
-
-  public abstract class SecureCacheResponse extends java.net.CacheResponse {
-    ctor public SecureCacheResponse();
-    method public abstract String getCipherSuite();
-    method public abstract java.util.List<java.security.cert.Certificate> getLocalCertificateChain();
-    method public abstract java.security.Principal getLocalPrincipal();
-    method public abstract java.security.Principal getPeerPrincipal() throws javax.net.ssl.SSLPeerUnverifiedException;
-    method public abstract java.util.List<java.security.cert.Certificate> getServerCertificateChain() throws javax.net.ssl.SSLPeerUnverifiedException;
-  }
-
-  public class ServerSocket implements java.io.Closeable {
-    ctor public ServerSocket() throws java.io.IOException;
-    ctor public ServerSocket(int) throws java.io.IOException;
-    ctor public ServerSocket(int, int) throws java.io.IOException;
-    ctor public ServerSocket(int, int, java.net.InetAddress) throws java.io.IOException;
-    method public java.net.Socket accept() throws java.io.IOException;
-    method public void bind(java.net.SocketAddress) throws java.io.IOException;
-    method public void bind(java.net.SocketAddress, int) throws java.io.IOException;
-    method public void close() throws java.io.IOException;
-    method public java.nio.channels.ServerSocketChannel getChannel();
-    method public java.net.InetAddress getInetAddress();
-    method public int getLocalPort();
-    method public java.net.SocketAddress getLocalSocketAddress();
-    method public int getReceiveBufferSize() throws java.net.SocketException;
-    method public boolean getReuseAddress() throws java.net.SocketException;
-    method public int getSoTimeout() throws java.io.IOException;
-    method protected final void implAccept(java.net.Socket) throws java.io.IOException;
-    method public boolean isBound();
-    method public boolean isClosed();
-    method public void setPerformancePreferences(int, int, int);
-    method public void setReceiveBufferSize(int) throws java.net.SocketException;
-    method public void setReuseAddress(boolean) throws java.net.SocketException;
-    method public void setSoTimeout(int) throws java.net.SocketException;
-    method public static void setSocketFactory(java.net.SocketImplFactory) throws java.io.IOException;
-  }
-
-  public class Socket implements java.io.Closeable {
-    ctor public Socket();
-    ctor public Socket(java.net.Proxy);
-    ctor protected Socket(java.net.SocketImpl) throws java.net.SocketException;
-    ctor public Socket(String, int) throws java.io.IOException, java.net.UnknownHostException;
-    ctor public Socket(java.net.InetAddress, int) throws java.io.IOException;
-    ctor public Socket(String, int, java.net.InetAddress, int) throws java.io.IOException;
-    ctor public Socket(java.net.InetAddress, int, java.net.InetAddress, int) throws java.io.IOException;
-    ctor @Deprecated public Socket(String, int, boolean) throws java.io.IOException;
-    ctor @Deprecated public Socket(java.net.InetAddress, int, boolean) throws java.io.IOException;
-    method public void bind(java.net.SocketAddress) throws java.io.IOException;
-    method public void close() throws java.io.IOException;
-    method public void connect(java.net.SocketAddress) throws java.io.IOException;
-    method public void connect(java.net.SocketAddress, int) throws java.io.IOException;
-    method public java.nio.channels.SocketChannel getChannel();
-    method public java.net.InetAddress getInetAddress();
-    method public java.io.InputStream getInputStream() throws java.io.IOException;
-    method public boolean getKeepAlive() throws java.net.SocketException;
-    method public java.net.InetAddress getLocalAddress();
-    method public int getLocalPort();
-    method public java.net.SocketAddress getLocalSocketAddress();
-    method public boolean getOOBInline() throws java.net.SocketException;
-    method public java.io.OutputStream getOutputStream() throws java.io.IOException;
-    method public int getPort();
-    method public int getReceiveBufferSize() throws java.net.SocketException;
-    method public java.net.SocketAddress getRemoteSocketAddress();
-    method public boolean getReuseAddress() throws java.net.SocketException;
-    method public int getSendBufferSize() throws java.net.SocketException;
-    method public int getSoLinger() throws java.net.SocketException;
-    method public int getSoTimeout() throws java.net.SocketException;
-    method public boolean getTcpNoDelay() throws java.net.SocketException;
-    method public int getTrafficClass() throws java.net.SocketException;
-    method public boolean isBound();
-    method public boolean isClosed();
-    method public boolean isConnected();
-    method public boolean isInputShutdown();
-    method public boolean isOutputShutdown();
-    method public void sendUrgentData(int) throws java.io.IOException;
-    method public void setKeepAlive(boolean) throws java.net.SocketException;
-    method public void setOOBInline(boolean) throws java.net.SocketException;
-    method public void setPerformancePreferences(int, int, int);
-    method public void setReceiveBufferSize(int) throws java.net.SocketException;
-    method public void setReuseAddress(boolean) throws java.net.SocketException;
-    method public void setSendBufferSize(int) throws java.net.SocketException;
-    method public void setSoLinger(boolean, int) throws java.net.SocketException;
-    method public void setSoTimeout(int) throws java.net.SocketException;
-    method public static void setSocketImplFactory(java.net.SocketImplFactory) throws java.io.IOException;
-    method public void setTcpNoDelay(boolean) throws java.net.SocketException;
-    method public void setTrafficClass(int) throws java.net.SocketException;
-    method public void shutdownInput() throws java.io.IOException;
-    method public void shutdownOutput() throws java.io.IOException;
-  }
-
-  public abstract class SocketAddress implements java.io.Serializable {
-    ctor public SocketAddress();
-  }
-
-  public class SocketException extends java.io.IOException {
-    ctor public SocketException(String);
-    ctor public SocketException();
-  }
-
-  public abstract class SocketImpl implements java.net.SocketOptions {
-    ctor public SocketImpl();
-    method protected abstract void accept(java.net.SocketImpl) throws java.io.IOException;
-    method protected abstract int available() throws java.io.IOException;
-    method protected abstract void bind(java.net.InetAddress, int) throws java.io.IOException;
-    method protected abstract void close() throws java.io.IOException;
-    method protected abstract void connect(String, int) throws java.io.IOException;
-    method protected abstract void connect(java.net.InetAddress, int) throws java.io.IOException;
-    method protected abstract void connect(java.net.SocketAddress, int) throws java.io.IOException;
-    method protected abstract void create(boolean) throws java.io.IOException;
-    method protected java.io.FileDescriptor getFileDescriptor();
-    method protected java.net.InetAddress getInetAddress();
-    method protected abstract java.io.InputStream getInputStream() throws java.io.IOException;
-    method protected int getLocalPort();
-    method protected abstract java.io.OutputStream getOutputStream() throws java.io.IOException;
-    method protected int getPort();
-    method protected abstract void listen(int) throws java.io.IOException;
-    method protected abstract void sendUrgentData(int) throws java.io.IOException;
-    method protected void setPerformancePreferences(int, int, int);
-    method protected void shutdownInput() throws java.io.IOException;
-    method protected void shutdownOutput() throws java.io.IOException;
-    method protected boolean supportsUrgentData();
-    field protected java.net.InetAddress address;
-    field protected java.io.FileDescriptor fd;
-    field protected int localport;
-    field protected int port;
-  }
-
-  public interface SocketImplFactory {
-    method public java.net.SocketImpl createSocketImpl();
-  }
-
-  public interface SocketOption<T> {
-    method public String name();
-    method public Class<T> type();
-  }
-
-  public interface SocketOptions {
-    method public Object getOption(int) throws java.net.SocketException;
-    method public void setOption(int, Object) throws java.net.SocketException;
-    field public static final int IP_MULTICAST_IF = 16; // 0x10
-    field public static final int IP_MULTICAST_IF2 = 31; // 0x1f
-    field public static final int IP_MULTICAST_LOOP = 18; // 0x12
-    field public static final int IP_TOS = 3; // 0x3
-    field public static final int SO_BINDADDR = 15; // 0xf
-    field public static final int SO_BROADCAST = 32; // 0x20
-    field public static final int SO_KEEPALIVE = 8; // 0x8
-    field public static final int SO_LINGER = 128; // 0x80
-    field public static final int SO_OOBINLINE = 4099; // 0x1003
-    field public static final int SO_RCVBUF = 4098; // 0x1002
-    field public static final int SO_REUSEADDR = 4; // 0x4
-    field public static final int SO_SNDBUF = 4097; // 0x1001
-    field public static final int SO_TIMEOUT = 4102; // 0x1006
-    field public static final int TCP_NODELAY = 1; // 0x1
-  }
-
-  public final class SocketPermission extends java.security.Permission implements java.io.Serializable {
-    ctor public SocketPermission(String, String);
-    method public String getActions();
-    method public boolean implies(java.security.Permission);
-  }
-
-  public class SocketTimeoutException extends java.io.InterruptedIOException {
-    ctor public SocketTimeoutException(String);
-    ctor public SocketTimeoutException();
-  }
-
-  public enum StandardProtocolFamily implements java.net.ProtocolFamily {
-    enum_constant public static final java.net.StandardProtocolFamily INET;
-    enum_constant public static final java.net.StandardProtocolFamily INET6;
-  }
-
-  public final class StandardSocketOptions {
-    field public static final java.net.SocketOption<java.net.NetworkInterface> IP_MULTICAST_IF;
-    field public static final java.net.SocketOption<java.lang.Boolean> IP_MULTICAST_LOOP;
-    field public static final java.net.SocketOption<java.lang.Integer> IP_MULTICAST_TTL;
-    field public static final java.net.SocketOption<java.lang.Integer> IP_TOS;
-    field public static final java.net.SocketOption<java.lang.Boolean> SO_BROADCAST;
-    field public static final java.net.SocketOption<java.lang.Boolean> SO_KEEPALIVE;
-    field public static final java.net.SocketOption<java.lang.Integer> SO_LINGER;
-    field public static final java.net.SocketOption<java.lang.Integer> SO_RCVBUF;
-    field public static final java.net.SocketOption<java.lang.Boolean> SO_REUSEADDR;
-    field public static final java.net.SocketOption<java.lang.Integer> SO_SNDBUF;
-    field public static final java.net.SocketOption<java.lang.Boolean> TCP_NODELAY;
-  }
-
-  public final class URI implements java.lang.Comparable<java.net.URI> java.io.Serializable {
-    ctor public URI(String) throws java.net.URISyntaxException;
-    ctor public URI(String, String, String, int, String, String, String) throws java.net.URISyntaxException;
-    ctor public URI(String, String, String, String, String) throws java.net.URISyntaxException;
-    ctor public URI(String, String, String, String) throws java.net.URISyntaxException;
-    ctor public URI(String, String, String) throws java.net.URISyntaxException;
-    method public int compareTo(java.net.URI);
-    method public static java.net.URI create(String);
-    method public String getAuthority();
-    method public String getFragment();
-    method public String getHost();
-    method public String getPath();
-    method public int getPort();
-    method public String getQuery();
-    method public String getRawAuthority();
-    method public String getRawFragment();
-    method public String getRawPath();
-    method public String getRawQuery();
-    method public String getRawSchemeSpecificPart();
-    method public String getRawUserInfo();
-    method public String getScheme();
-    method public String getSchemeSpecificPart();
-    method public String getUserInfo();
-    method public boolean isAbsolute();
-    method public boolean isOpaque();
-    method public java.net.URI normalize();
-    method public java.net.URI parseServerAuthority() throws java.net.URISyntaxException;
-    method public java.net.URI relativize(java.net.URI);
-    method public java.net.URI resolve(java.net.URI);
-    method public java.net.URI resolve(String);
-    method public String toASCIIString();
-    method public java.net.URL toURL() throws java.net.MalformedURLException;
-  }
-
-  public class URISyntaxException extends java.lang.Exception {
-    ctor public URISyntaxException(String, String, int);
-    ctor public URISyntaxException(String, String);
-    method public int getIndex();
-    method public String getInput();
-    method public String getReason();
-  }
-
-  public final class URL implements java.io.Serializable {
-    ctor public URL(String, String, int, String) throws java.net.MalformedURLException;
-    ctor public URL(String, String, String) throws java.net.MalformedURLException;
-    ctor public URL(String, String, int, String, java.net.URLStreamHandler) throws java.net.MalformedURLException;
-    ctor public URL(String) throws java.net.MalformedURLException;
-    ctor public URL(java.net.URL, String) throws java.net.MalformedURLException;
-    ctor public URL(java.net.URL, String, java.net.URLStreamHandler) throws java.net.MalformedURLException;
-    method public String getAuthority();
-    method public Object getContent() throws java.io.IOException;
-    method public Object getContent(Class[]) throws java.io.IOException;
-    method public int getDefaultPort();
-    method public String getFile();
-    method public String getHost();
-    method public String getPath();
-    method public int getPort();
-    method public String getProtocol();
-    method public String getQuery();
-    method public String getRef();
-    method public String getUserInfo();
-    method public java.net.URLConnection openConnection() throws java.io.IOException;
-    method public java.net.URLConnection openConnection(java.net.Proxy) throws java.io.IOException;
-    method public java.io.InputStream openStream() throws java.io.IOException;
-    method public boolean sameFile(java.net.URL);
-    method public static void setURLStreamHandlerFactory(java.net.URLStreamHandlerFactory);
-    method public String toExternalForm();
-    method public java.net.URI toURI() throws java.net.URISyntaxException;
-  }
-
-  public class URLClassLoader extends java.security.SecureClassLoader implements java.io.Closeable {
-    ctor public URLClassLoader(java.net.URL[], ClassLoader);
-    ctor public URLClassLoader(java.net.URL[]);
-    ctor public URLClassLoader(java.net.URL[], ClassLoader, java.net.URLStreamHandlerFactory);
-    method protected void addURL(java.net.URL);
-    method public void close() throws java.io.IOException;
-    method protected Package definePackage(String, java.util.jar.Manifest, java.net.URL) throws java.lang.IllegalArgumentException;
-    method public java.net.URL findResource(String);
-    method public java.util.Enumeration<java.net.URL> findResources(String) throws java.io.IOException;
-    method public java.net.URL[] getURLs();
-    method public static java.net.URLClassLoader newInstance(java.net.URL[], ClassLoader);
-    method public static java.net.URLClassLoader newInstance(java.net.URL[]);
-  }
-
-  public abstract class URLConnection {
-    ctor protected URLConnection(java.net.URL);
-    method public void addRequestProperty(String, String);
-    method public abstract void connect() throws java.io.IOException;
-    method public boolean getAllowUserInteraction();
-    method public int getConnectTimeout();
-    method public Object getContent() throws java.io.IOException;
-    method public Object getContent(Class[]) throws java.io.IOException;
-    method public String getContentEncoding();
-    method public int getContentLength();
-    method public long getContentLengthLong();
-    method public String getContentType();
-    method public long getDate();
-    method public static boolean getDefaultAllowUserInteraction();
-    method @Deprecated public static String getDefaultRequestProperty(String);
-    method public boolean getDefaultUseCaches();
-    method public boolean getDoInput();
-    method public boolean getDoOutput();
-    method public long getExpiration();
-    method public static java.net.FileNameMap getFileNameMap();
-    method public String getHeaderField(String);
-    method public String getHeaderField(int);
-    method public long getHeaderFieldDate(String, long);
-    method public int getHeaderFieldInt(String, int);
-    method public String getHeaderFieldKey(int);
-    method public long getHeaderFieldLong(String, long);
-    method public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getHeaderFields();
-    method public long getIfModifiedSince();
-    method public java.io.InputStream getInputStream() throws java.io.IOException;
-    method public long getLastModified();
-    method public java.io.OutputStream getOutputStream() throws java.io.IOException;
-    method public java.security.Permission getPermission() throws java.io.IOException;
-    method public int getReadTimeout();
-    method public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getRequestProperties();
-    method public String getRequestProperty(String);
-    method public java.net.URL getURL();
-    method public boolean getUseCaches();
-    method public static String guessContentTypeFromName(String);
-    method public static String guessContentTypeFromStream(java.io.InputStream) throws java.io.IOException;
-    method public void setAllowUserInteraction(boolean);
-    method public void setConnectTimeout(int);
-    method public static void setContentHandlerFactory(java.net.ContentHandlerFactory);
-    method public static void setDefaultAllowUserInteraction(boolean);
-    method @Deprecated public static void setDefaultRequestProperty(String, String);
-    method public void setDefaultUseCaches(boolean);
-    method public void setDoInput(boolean);
-    method public void setDoOutput(boolean);
-    method public static void setFileNameMap(java.net.FileNameMap);
-    method public void setIfModifiedSince(long);
-    method public void setReadTimeout(int);
-    method public void setRequestProperty(String, String);
-    method public void setUseCaches(boolean);
-    field protected boolean allowUserInteraction;
-    field protected boolean connected;
-    field protected boolean doInput;
-    field protected boolean doOutput;
-    field protected long ifModifiedSince;
-    field protected java.net.URL url;
-    field protected boolean useCaches;
-  }
-
-  public class URLDecoder {
-    ctor public URLDecoder();
-    method @Deprecated public static String decode(String);
-    method public static String decode(String, String) throws java.io.UnsupportedEncodingException;
-  }
-
-  public class URLEncoder {
-    method @Deprecated public static String encode(String);
-    method public static String encode(String, String) throws java.io.UnsupportedEncodingException;
-  }
-
-  public abstract class URLStreamHandler {
-    ctor public URLStreamHandler();
-    method protected boolean equals(java.net.URL, java.net.URL);
-    method protected int getDefaultPort();
-    method protected java.net.InetAddress getHostAddress(java.net.URL);
-    method protected int hashCode(java.net.URL);
-    method protected boolean hostsEqual(java.net.URL, java.net.URL);
-    method protected abstract java.net.URLConnection openConnection(java.net.URL) throws java.io.IOException;
-    method protected java.net.URLConnection openConnection(java.net.URL, java.net.Proxy) throws java.io.IOException;
-    method protected void parseURL(java.net.URL, String, int, int);
-    method protected boolean sameFile(java.net.URL, java.net.URL);
-    method protected void setURL(java.net.URL, String, String, int, String, String, String, String, String);
-    method @Deprecated protected void setURL(java.net.URL, String, String, int, String, String);
-    method protected String toExternalForm(java.net.URL);
-  }
-
-  public interface URLStreamHandlerFactory {
-    method public java.net.URLStreamHandler createURLStreamHandler(String);
-  }
-
-  public class UnknownHostException extends java.io.IOException {
-    ctor public UnknownHostException(String);
-    ctor public UnknownHostException();
-  }
-
-  public class UnknownServiceException extends java.io.IOException {
-    ctor public UnknownServiceException();
-    ctor public UnknownServiceException(String);
-  }
-
-}
-
-package java.nio {
-
-  public abstract class Buffer {
-    method public abstract Object array();
-    method public abstract int arrayOffset();
-    method public final int capacity();
-    method public java.nio.Buffer clear();
-    method public java.nio.Buffer flip();
-    method public abstract boolean hasArray();
-    method public final boolean hasRemaining();
-    method public abstract boolean isDirect();
-    method public abstract boolean isReadOnly();
-    method public final int limit();
-    method public java.nio.Buffer limit(int);
-    method public java.nio.Buffer mark();
-    method public final int position();
-    method public java.nio.Buffer position(int);
-    method public final int remaining();
-    method public java.nio.Buffer reset();
-    method public java.nio.Buffer rewind();
-  }
-
-  public class BufferOverflowException extends java.lang.RuntimeException {
-    ctor public BufferOverflowException();
-  }
-
-  public class BufferUnderflowException extends java.lang.RuntimeException {
-    ctor public BufferUnderflowException();
-  }
-
-  public abstract class ByteBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.ByteBuffer> {
-    method @NonNull public static java.nio.ByteBuffer allocate(int);
-    method @NonNull public static java.nio.ByteBuffer allocateDirect(int);
-    method @NonNull public final byte[] array();
-    method public final int arrayOffset();
-    method @NonNull public abstract java.nio.CharBuffer asCharBuffer();
-    method @NonNull public abstract java.nio.DoubleBuffer asDoubleBuffer();
-    method @NonNull public abstract java.nio.FloatBuffer asFloatBuffer();
-    method @NonNull public abstract java.nio.IntBuffer asIntBuffer();
-    method @NonNull public abstract java.nio.LongBuffer asLongBuffer();
-    method @NonNull public abstract java.nio.ByteBuffer asReadOnlyBuffer();
-    method @NonNull public abstract java.nio.ShortBuffer asShortBuffer();
-    method @NonNull public abstract java.nio.ByteBuffer compact();
-    method public int compareTo(@NonNull java.nio.ByteBuffer);
-    method @NonNull public abstract java.nio.ByteBuffer duplicate();
-    method public abstract byte get();
-    method public abstract byte get(int);
-    method @NonNull public java.nio.ByteBuffer get(@NonNull byte[], int, int);
-    method @NonNull public java.nio.ByteBuffer get(@NonNull byte[]);
-    method public abstract char getChar();
-    method public abstract char getChar(int);
-    method public abstract double getDouble();
-    method public abstract double getDouble(int);
-    method public abstract float getFloat();
-    method public abstract float getFloat(int);
-    method public abstract int getInt();
-    method public abstract int getInt(int);
-    method public abstract long getLong();
-    method public abstract long getLong(int);
-    method public abstract short getShort();
-    method public abstract short getShort(int);
-    method public final boolean hasArray();
-    method @NonNull public final java.nio.ByteOrder order();
-    method @NonNull public final java.nio.ByteBuffer order(@NonNull java.nio.ByteOrder);
-    method @NonNull public abstract java.nio.ByteBuffer put(byte);
-    method @NonNull public abstract java.nio.ByteBuffer put(int, byte);
-    method @NonNull public java.nio.ByteBuffer put(@NonNull java.nio.ByteBuffer);
-    method @NonNull public java.nio.ByteBuffer put(@NonNull byte[], int, int);
-    method @NonNull public final java.nio.ByteBuffer put(@NonNull byte[]);
-    method @NonNull public abstract java.nio.ByteBuffer putChar(char);
-    method @NonNull public abstract java.nio.ByteBuffer putChar(int, char);
-    method @NonNull public abstract java.nio.ByteBuffer putDouble(double);
-    method @NonNull public abstract java.nio.ByteBuffer putDouble(int, double);
-    method @NonNull public abstract java.nio.ByteBuffer putFloat(float);
-    method @NonNull public abstract java.nio.ByteBuffer putFloat(int, float);
-    method @NonNull public abstract java.nio.ByteBuffer putInt(int);
-    method @NonNull public abstract java.nio.ByteBuffer putInt(int, int);
-    method @NonNull public abstract java.nio.ByteBuffer putLong(long);
-    method @NonNull public abstract java.nio.ByteBuffer putLong(int, long);
-    method @NonNull public abstract java.nio.ByteBuffer putShort(short);
-    method @NonNull public abstract java.nio.ByteBuffer putShort(int, short);
-    method @NonNull public abstract java.nio.ByteBuffer slice();
-    method @NonNull public static java.nio.ByteBuffer wrap(@NonNull byte[], int, int);
-    method @NonNull public static java.nio.ByteBuffer wrap(@NonNull byte[]);
-  }
-
-  public final class ByteOrder {
-    method public static java.nio.ByteOrder nativeOrder();
-    field public static final java.nio.ByteOrder BIG_ENDIAN;
-    field public static final java.nio.ByteOrder LITTLE_ENDIAN;
-  }
-
-  public abstract class CharBuffer extends java.nio.Buffer implements java.lang.Appendable java.lang.CharSequence java.lang.Comparable<java.nio.CharBuffer> java.lang.Readable {
-    method public static java.nio.CharBuffer allocate(int);
-    method public java.nio.CharBuffer append(CharSequence);
-    method public java.nio.CharBuffer append(CharSequence, int, int);
-    method public java.nio.CharBuffer append(char);
-    method public final char[] array();
-    method public final int arrayOffset();
-    method public abstract java.nio.CharBuffer asReadOnlyBuffer();
-    method public final char charAt(int);
-    method public abstract java.nio.CharBuffer compact();
-    method public int compareTo(java.nio.CharBuffer);
-    method public abstract java.nio.CharBuffer duplicate();
-    method public abstract char get();
-    method public abstract char get(int);
-    method public java.nio.CharBuffer get(char[], int, int);
-    method public java.nio.CharBuffer get(char[]);
-    method public final boolean hasArray();
-    method public final int length();
-    method public abstract java.nio.ByteOrder order();
-    method public abstract java.nio.CharBuffer put(char);
-    method public abstract java.nio.CharBuffer put(int, char);
-    method public java.nio.CharBuffer put(java.nio.CharBuffer);
-    method public java.nio.CharBuffer put(char[], int, int);
-    method public final java.nio.CharBuffer put(char[]);
-    method public java.nio.CharBuffer put(String, int, int);
-    method public final java.nio.CharBuffer put(String);
-    method public int read(java.nio.CharBuffer) throws java.io.IOException;
-    method public abstract java.nio.CharBuffer slice();
-    method public abstract java.nio.CharBuffer subSequence(int, int);
-    method public static java.nio.CharBuffer wrap(char[], int, int);
-    method public static java.nio.CharBuffer wrap(char[]);
-    method public static java.nio.CharBuffer wrap(CharSequence, int, int);
-    method public static java.nio.CharBuffer wrap(CharSequence);
-  }
-
-  public abstract class DoubleBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.DoubleBuffer> {
-    method public static java.nio.DoubleBuffer allocate(int);
-    method public final double[] array();
-    method public final int arrayOffset();
-    method public abstract java.nio.DoubleBuffer asReadOnlyBuffer();
-    method public abstract java.nio.DoubleBuffer compact();
-    method public int compareTo(java.nio.DoubleBuffer);
-    method public abstract java.nio.DoubleBuffer duplicate();
-    method public abstract double get();
-    method public abstract double get(int);
-    method public java.nio.DoubleBuffer get(double[], int, int);
-    method public java.nio.DoubleBuffer get(double[]);
-    method public final boolean hasArray();
-    method public abstract java.nio.ByteOrder order();
-    method public abstract java.nio.DoubleBuffer put(double);
-    method public abstract java.nio.DoubleBuffer put(int, double);
-    method public java.nio.DoubleBuffer put(java.nio.DoubleBuffer);
-    method public java.nio.DoubleBuffer put(double[], int, int);
-    method public final java.nio.DoubleBuffer put(double[]);
-    method public abstract java.nio.DoubleBuffer slice();
-    method public static java.nio.DoubleBuffer wrap(double[], int, int);
-    method public static java.nio.DoubleBuffer wrap(double[]);
-  }
-
-  public abstract class FloatBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.FloatBuffer> {
-    method public static java.nio.FloatBuffer allocate(int);
-    method public final float[] array();
-    method public final int arrayOffset();
-    method public abstract java.nio.FloatBuffer asReadOnlyBuffer();
-    method public abstract java.nio.FloatBuffer compact();
-    method public int compareTo(java.nio.FloatBuffer);
-    method public abstract java.nio.FloatBuffer duplicate();
-    method public abstract float get();
-    method public abstract float get(int);
-    method public java.nio.FloatBuffer get(float[], int, int);
-    method public java.nio.FloatBuffer get(float[]);
-    method public final boolean hasArray();
-    method public abstract java.nio.ByteOrder order();
-    method public abstract java.nio.FloatBuffer put(float);
-    method public abstract java.nio.FloatBuffer put(int, float);
-    method public java.nio.FloatBuffer put(java.nio.FloatBuffer);
-    method public java.nio.FloatBuffer put(float[], int, int);
-    method public final java.nio.FloatBuffer put(float[]);
-    method public abstract java.nio.FloatBuffer slice();
-    method public static java.nio.FloatBuffer wrap(float[], int, int);
-    method public static java.nio.FloatBuffer wrap(float[]);
-  }
-
-  public abstract class IntBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.IntBuffer> {
-    method public static java.nio.IntBuffer allocate(int);
-    method public final int[] array();
-    method public final int arrayOffset();
-    method public abstract java.nio.IntBuffer asReadOnlyBuffer();
-    method public abstract java.nio.IntBuffer compact();
-    method public int compareTo(java.nio.IntBuffer);
-    method public abstract java.nio.IntBuffer duplicate();
-    method public abstract int get();
-    method public abstract int get(int);
-    method public java.nio.IntBuffer get(int[], int, int);
-    method public java.nio.IntBuffer get(int[]);
-    method public final boolean hasArray();
-    method public abstract java.nio.ByteOrder order();
-    method public abstract java.nio.IntBuffer put(int);
-    method public abstract java.nio.IntBuffer put(int, int);
-    method public java.nio.IntBuffer put(java.nio.IntBuffer);
-    method public java.nio.IntBuffer put(int[], int, int);
-    method public final java.nio.IntBuffer put(int[]);
-    method public abstract java.nio.IntBuffer slice();
-    method public static java.nio.IntBuffer wrap(int[], int, int);
-    method public static java.nio.IntBuffer wrap(int[]);
-  }
-
-  public class InvalidMarkException extends java.lang.IllegalStateException {
-    ctor public InvalidMarkException();
-  }
-
-  public abstract class LongBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.LongBuffer> {
-    method public static java.nio.LongBuffer allocate(int);
-    method public final long[] array();
-    method public final int arrayOffset();
-    method public abstract java.nio.LongBuffer asReadOnlyBuffer();
-    method public abstract java.nio.LongBuffer compact();
-    method public int compareTo(java.nio.LongBuffer);
-    method public abstract java.nio.LongBuffer duplicate();
-    method public abstract long get();
-    method public abstract long get(int);
-    method public java.nio.LongBuffer get(long[], int, int);
-    method public java.nio.LongBuffer get(long[]);
-    method public final boolean hasArray();
-    method public abstract java.nio.ByteOrder order();
-    method public abstract java.nio.LongBuffer put(long);
-    method public abstract java.nio.LongBuffer put(int, long);
-    method public java.nio.LongBuffer put(java.nio.LongBuffer);
-    method public java.nio.LongBuffer put(long[], int, int);
-    method public final java.nio.LongBuffer put(long[]);
-    method public abstract java.nio.LongBuffer slice();
-    method public static java.nio.LongBuffer wrap(long[], int, int);
-    method public static java.nio.LongBuffer wrap(long[]);
-  }
-
-  public abstract class MappedByteBuffer extends java.nio.ByteBuffer {
-    method public final java.nio.MappedByteBuffer force();
-    method public final boolean isLoaded();
-    method public final java.nio.MappedByteBuffer load();
-  }
-
-  public class ReadOnlyBufferException extends java.lang.UnsupportedOperationException {
-    ctor public ReadOnlyBufferException();
-  }
-
-  public abstract class ShortBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.ShortBuffer> {
-    method public static java.nio.ShortBuffer allocate(int);
-    method public final short[] array();
-    method public final int arrayOffset();
-    method public abstract java.nio.ShortBuffer asReadOnlyBuffer();
-    method public abstract java.nio.ShortBuffer compact();
-    method public int compareTo(java.nio.ShortBuffer);
-    method public abstract java.nio.ShortBuffer duplicate();
-    method public abstract short get();
-    method public abstract short get(int);
-    method public java.nio.ShortBuffer get(short[], int, int);
-    method public java.nio.ShortBuffer get(short[]);
-    method public final boolean hasArray();
-    method public abstract java.nio.ByteOrder order();
-    method public abstract java.nio.ShortBuffer put(short);
-    method public abstract java.nio.ShortBuffer put(int, short);
-    method public java.nio.ShortBuffer put(java.nio.ShortBuffer);
-    method public java.nio.ShortBuffer put(short[], int, int);
-    method public final java.nio.ShortBuffer put(short[]);
-    method public abstract java.nio.ShortBuffer slice();
-    method public static java.nio.ShortBuffer wrap(short[], int, int);
-    method public static java.nio.ShortBuffer wrap(short[]);
-  }
-
-}
-
-package java.nio.channels {
-
-  public class AcceptPendingException extends java.lang.IllegalStateException {
-    ctor public AcceptPendingException();
-  }
-
-  public class AlreadyBoundException extends java.lang.IllegalStateException {
-    ctor public AlreadyBoundException();
-  }
-
-  public class AlreadyConnectedException extends java.lang.IllegalStateException {
-    ctor public AlreadyConnectedException();
-  }
-
-  public interface AsynchronousByteChannel extends java.nio.channels.AsynchronousChannel {
-    method public <A> void read(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
-    method public java.util.concurrent.Future<java.lang.Integer> read(java.nio.ByteBuffer);
-    method public <A> void write(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
-    method public java.util.concurrent.Future<java.lang.Integer> write(java.nio.ByteBuffer);
-  }
-
-  public interface AsynchronousChannel extends java.nio.channels.Channel {
-  }
-
-  public abstract class AsynchronousChannelGroup {
-    ctor protected AsynchronousChannelGroup(java.nio.channels.spi.AsynchronousChannelProvider);
-    method public abstract boolean awaitTermination(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public abstract boolean isShutdown();
-    method public abstract boolean isTerminated();
-    method public final java.nio.channels.spi.AsynchronousChannelProvider provider();
-    method public abstract void shutdown();
-    method public abstract void shutdownNow() throws java.io.IOException;
-    method public static java.nio.channels.AsynchronousChannelGroup withCachedThreadPool(java.util.concurrent.ExecutorService, int) throws java.io.IOException;
-    method public static java.nio.channels.AsynchronousChannelGroup withFixedThreadPool(int, java.util.concurrent.ThreadFactory) throws java.io.IOException;
-    method public static java.nio.channels.AsynchronousChannelGroup withThreadPool(java.util.concurrent.ExecutorService) throws java.io.IOException;
-  }
-
-  public class AsynchronousCloseException extends java.nio.channels.ClosedChannelException {
-    ctor public AsynchronousCloseException();
-  }
-
-  public abstract class AsynchronousFileChannel implements java.nio.channels.AsynchronousChannel {
-    ctor protected AsynchronousFileChannel();
-    method public abstract void force(boolean) throws java.io.IOException;
-    method public abstract <A> void lock(long, long, boolean, A, java.nio.channels.CompletionHandler<java.nio.channels.FileLock,? super A>);
-    method public final <A> void lock(A, java.nio.channels.CompletionHandler<java.nio.channels.FileLock,? super A>);
-    method public abstract java.util.concurrent.Future<java.nio.channels.FileLock> lock(long, long, boolean);
-    method public final java.util.concurrent.Future<java.nio.channels.FileLock> lock();
-    method public static java.nio.channels.AsynchronousFileChannel open(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.util.concurrent.ExecutorService, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public static java.nio.channels.AsynchronousFileChannel open(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
-    method public abstract <A> void read(java.nio.ByteBuffer, long, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
-    method public abstract java.util.concurrent.Future<java.lang.Integer> read(java.nio.ByteBuffer, long);
-    method public abstract long size() throws java.io.IOException;
-    method public abstract java.nio.channels.AsynchronousFileChannel truncate(long) throws java.io.IOException;
-    method public abstract java.nio.channels.FileLock tryLock(long, long, boolean) throws java.io.IOException;
-    method public final java.nio.channels.FileLock tryLock() throws java.io.IOException;
-    method public abstract <A> void write(java.nio.ByteBuffer, long, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
-    method public abstract java.util.concurrent.Future<java.lang.Integer> write(java.nio.ByteBuffer, long);
-  }
-
-  public abstract class AsynchronousServerSocketChannel implements java.nio.channels.AsynchronousChannel java.nio.channels.NetworkChannel {
-    ctor protected AsynchronousServerSocketChannel(java.nio.channels.spi.AsynchronousChannelProvider);
-    method public abstract <A> void accept(A, java.nio.channels.CompletionHandler<java.nio.channels.AsynchronousSocketChannel,? super A>);
-    method public abstract java.util.concurrent.Future<java.nio.channels.AsynchronousSocketChannel> accept();
-    method public final java.nio.channels.AsynchronousServerSocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
-    method public abstract java.nio.channels.AsynchronousServerSocketChannel bind(java.net.SocketAddress, int) throws java.io.IOException;
-    method public static java.nio.channels.AsynchronousServerSocketChannel open(java.nio.channels.AsynchronousChannelGroup) throws java.io.IOException;
-    method public static java.nio.channels.AsynchronousServerSocketChannel open() throws java.io.IOException;
-    method public final java.nio.channels.spi.AsynchronousChannelProvider provider();
-    method public abstract <T> java.nio.channels.AsynchronousServerSocketChannel setOption(java.net.SocketOption<T>, T) throws java.io.IOException;
-  }
-
-  public abstract class AsynchronousSocketChannel implements java.nio.channels.AsynchronousByteChannel java.nio.channels.NetworkChannel {
-    ctor protected AsynchronousSocketChannel(java.nio.channels.spi.AsynchronousChannelProvider);
-    method public abstract java.nio.channels.AsynchronousSocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
-    method public abstract <A> void connect(java.net.SocketAddress, A, java.nio.channels.CompletionHandler<java.lang.Void,? super A>);
-    method public abstract java.util.concurrent.Future<java.lang.Void> connect(java.net.SocketAddress);
-    method public abstract java.net.SocketAddress getRemoteAddress() throws java.io.IOException;
-    method public static java.nio.channels.AsynchronousSocketChannel open(java.nio.channels.AsynchronousChannelGroup) throws java.io.IOException;
-    method public static java.nio.channels.AsynchronousSocketChannel open() throws java.io.IOException;
-    method public final java.nio.channels.spi.AsynchronousChannelProvider provider();
-    method public abstract <A> void read(java.nio.ByteBuffer, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
-    method public final <A> void read(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
-    method public abstract <A> void read(java.nio.ByteBuffer[], int, int, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Long,? super A>);
-    method public abstract <T> java.nio.channels.AsynchronousSocketChannel setOption(java.net.SocketOption<T>, T) throws java.io.IOException;
-    method public abstract java.nio.channels.AsynchronousSocketChannel shutdownInput() throws java.io.IOException;
-    method public abstract java.nio.channels.AsynchronousSocketChannel shutdownOutput() throws java.io.IOException;
-    method public abstract <A> void write(java.nio.ByteBuffer, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
-    method public final <A> void write(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
-    method public abstract <A> void write(java.nio.ByteBuffer[], int, int, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Long,? super A>);
-  }
-
-  public interface ByteChannel extends java.nio.channels.ReadableByteChannel java.nio.channels.WritableByteChannel {
-  }
-
-  public class CancelledKeyException extends java.lang.IllegalStateException {
-    ctor public CancelledKeyException();
-  }
-
-  public interface Channel extends java.io.Closeable {
-    method public boolean isOpen();
-  }
-
-  public final class Channels {
-    method public static java.nio.channels.ReadableByteChannel newChannel(java.io.InputStream);
-    method public static java.nio.channels.WritableByteChannel newChannel(java.io.OutputStream);
-    method public static java.io.InputStream newInputStream(java.nio.channels.ReadableByteChannel);
-    method public static java.io.InputStream newInputStream(java.nio.channels.AsynchronousByteChannel);
-    method public static java.io.OutputStream newOutputStream(java.nio.channels.WritableByteChannel);
-    method public static java.io.OutputStream newOutputStream(java.nio.channels.AsynchronousByteChannel);
-    method public static java.io.Reader newReader(java.nio.channels.ReadableByteChannel, java.nio.charset.CharsetDecoder, int);
-    method public static java.io.Reader newReader(java.nio.channels.ReadableByteChannel, String);
-    method public static java.io.Writer newWriter(java.nio.channels.WritableByteChannel, java.nio.charset.CharsetEncoder, int);
-    method public static java.io.Writer newWriter(java.nio.channels.WritableByteChannel, String);
-  }
-
-  public class ClosedByInterruptException extends java.nio.channels.AsynchronousCloseException {
-    ctor public ClosedByInterruptException();
-  }
-
-  public class ClosedChannelException extends java.io.IOException {
-    ctor public ClosedChannelException();
-  }
-
-  public class ClosedSelectorException extends java.lang.IllegalStateException {
-    ctor public ClosedSelectorException();
-  }
-
-  public interface CompletionHandler<V, A> {
-    method public void completed(V, A);
-    method public void failed(Throwable, A);
-  }
-
-  public class ConnectionPendingException extends java.lang.IllegalStateException {
-    ctor public ConnectionPendingException();
-  }
-
-  public abstract class DatagramChannel extends java.nio.channels.spi.AbstractSelectableChannel implements java.nio.channels.ByteChannel java.nio.channels.GatheringByteChannel java.nio.channels.MulticastChannel java.nio.channels.ScatteringByteChannel {
-    ctor protected DatagramChannel(java.nio.channels.spi.SelectorProvider);
-    method public abstract java.nio.channels.DatagramChannel bind(java.net.SocketAddress) throws java.io.IOException;
-    method public abstract java.nio.channels.DatagramChannel connect(java.net.SocketAddress) throws java.io.IOException;
-    method public abstract java.nio.channels.DatagramChannel disconnect() throws java.io.IOException;
-    method public abstract java.net.SocketAddress getRemoteAddress() throws java.io.IOException;
-    method public abstract boolean isConnected();
-    method public static java.nio.channels.DatagramChannel open() throws java.io.IOException;
-    method public static java.nio.channels.DatagramChannel open(java.net.ProtocolFamily) throws java.io.IOException;
-    method public final long read(java.nio.ByteBuffer[]) throws java.io.IOException;
-    method public abstract java.net.SocketAddress receive(java.nio.ByteBuffer) throws java.io.IOException;
-    method public abstract int send(java.nio.ByteBuffer, java.net.SocketAddress) throws java.io.IOException;
-    method public abstract <T> java.nio.channels.DatagramChannel setOption(java.net.SocketOption<T>, T) throws java.io.IOException;
-    method public abstract java.net.DatagramSocket socket();
-    method public final int validOps();
-    method public final long write(java.nio.ByteBuffer[]) throws java.io.IOException;
-  }
-
-  public abstract class FileChannel extends java.nio.channels.spi.AbstractInterruptibleChannel implements java.nio.channels.GatheringByteChannel java.nio.channels.ScatteringByteChannel java.nio.channels.SeekableByteChannel {
-    ctor protected FileChannel();
-    method public abstract void force(boolean) throws java.io.IOException;
-    method public abstract java.nio.channels.FileLock lock(long, long, boolean) throws java.io.IOException;
-    method public final java.nio.channels.FileLock lock() throws java.io.IOException;
-    method public abstract java.nio.MappedByteBuffer map(java.nio.channels.FileChannel.MapMode, long, long) throws java.io.IOException;
-    method public static java.nio.channels.FileChannel open(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public static java.nio.channels.FileChannel open(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
-    method public abstract java.nio.channels.FileChannel position(long) throws java.io.IOException;
-    method public final long read(java.nio.ByteBuffer[]) throws java.io.IOException;
-    method public abstract int read(java.nio.ByteBuffer, long) throws java.io.IOException;
-    method public abstract long transferFrom(java.nio.channels.ReadableByteChannel, long, long) throws java.io.IOException;
-    method public abstract long transferTo(long, long, java.nio.channels.WritableByteChannel) throws java.io.IOException;
-    method public abstract java.nio.channels.FileChannel truncate(long) throws java.io.IOException;
-    method public abstract java.nio.channels.FileLock tryLock(long, long, boolean) throws java.io.IOException;
-    method public final java.nio.channels.FileLock tryLock() throws java.io.IOException;
-    method public final long write(java.nio.ByteBuffer[]) throws java.io.IOException;
-    method public abstract int write(java.nio.ByteBuffer, long) throws java.io.IOException;
-  }
-
-  public static class FileChannel.MapMode {
-    field public static final java.nio.channels.FileChannel.MapMode PRIVATE;
-    field public static final java.nio.channels.FileChannel.MapMode READ_ONLY;
-    field public static final java.nio.channels.FileChannel.MapMode READ_WRITE;
-  }
-
-  public abstract class FileLock implements java.lang.AutoCloseable {
-    ctor protected FileLock(java.nio.channels.FileChannel, long, long, boolean);
-    ctor protected FileLock(java.nio.channels.AsynchronousFileChannel, long, long, boolean);
-    method public java.nio.channels.Channel acquiredBy();
-    method public final java.nio.channels.FileChannel channel();
-    method public final void close() throws java.io.IOException;
-    method public final boolean isShared();
-    method public abstract boolean isValid();
-    method public final boolean overlaps(long, long);
-    method public final long position();
-    method public abstract void release() throws java.io.IOException;
-    method public final long size();
-    method public final String toString();
-  }
-
-  public class FileLockInterruptionException extends java.io.IOException {
-    ctor public FileLockInterruptionException();
-  }
-
-  public interface GatheringByteChannel extends java.nio.channels.WritableByteChannel {
-    method public long write(java.nio.ByteBuffer[], int, int) throws java.io.IOException;
-    method public long write(java.nio.ByteBuffer[]) throws java.io.IOException;
-  }
-
-  public class IllegalBlockingModeException extends java.lang.IllegalStateException {
-    ctor public IllegalBlockingModeException();
-  }
-
-  public class IllegalChannelGroupException extends java.lang.IllegalArgumentException {
-    ctor public IllegalChannelGroupException();
-  }
-
-  public class IllegalSelectorException extends java.lang.IllegalArgumentException {
-    ctor public IllegalSelectorException();
-  }
-
-  public class InterruptedByTimeoutException extends java.io.IOException {
-    ctor public InterruptedByTimeoutException();
-  }
-
-  public interface InterruptibleChannel extends java.nio.channels.Channel {
-  }
-
-  public abstract class MembershipKey {
-    ctor protected MembershipKey();
-    method public abstract java.nio.channels.MembershipKey block(java.net.InetAddress) throws java.io.IOException;
-    method public abstract java.nio.channels.MulticastChannel channel();
-    method public abstract void drop();
-    method public abstract java.net.InetAddress group();
-    method public abstract boolean isValid();
-    method public abstract java.net.NetworkInterface networkInterface();
-    method public abstract java.net.InetAddress sourceAddress();
-    method public abstract java.nio.channels.MembershipKey unblock(java.net.InetAddress);
-  }
-
-  public interface MulticastChannel extends java.nio.channels.NetworkChannel {
-    method public java.nio.channels.MembershipKey join(java.net.InetAddress, java.net.NetworkInterface) throws java.io.IOException;
-    method public java.nio.channels.MembershipKey join(java.net.InetAddress, java.net.NetworkInterface, java.net.InetAddress) throws java.io.IOException;
-  }
-
-  public interface NetworkChannel extends java.nio.channels.Channel {
-    method public java.nio.channels.NetworkChannel bind(java.net.SocketAddress) throws java.io.IOException;
-    method public java.net.SocketAddress getLocalAddress() throws java.io.IOException;
-    method public <T> T getOption(java.net.SocketOption<T>) throws java.io.IOException;
-    method public <T> java.nio.channels.NetworkChannel setOption(java.net.SocketOption<T>, T) throws java.io.IOException;
-    method public java.util.Set<java.net.SocketOption<?>> supportedOptions();
-  }
-
-  public class NoConnectionPendingException extends java.lang.IllegalStateException {
-    ctor public NoConnectionPendingException();
-  }
-
-  public class NonReadableChannelException extends java.lang.IllegalStateException {
-    ctor public NonReadableChannelException();
-  }
-
-  public class NonWritableChannelException extends java.lang.IllegalStateException {
-    ctor public NonWritableChannelException();
-  }
-
-  public class NotYetBoundException extends java.lang.IllegalStateException {
-    ctor public NotYetBoundException();
-  }
-
-  public class NotYetConnectedException extends java.lang.IllegalStateException {
-    ctor public NotYetConnectedException();
-  }
-
-  public class OverlappingFileLockException extends java.lang.IllegalStateException {
-    ctor public OverlappingFileLockException();
-  }
-
-  public abstract class Pipe {
-    ctor protected Pipe();
-    method public static java.nio.channels.Pipe open() throws java.io.IOException;
-    method public abstract java.nio.channels.Pipe.SinkChannel sink();
-    method public abstract java.nio.channels.Pipe.SourceChannel source();
-  }
-
-  public abstract static class Pipe.SinkChannel extends java.nio.channels.spi.AbstractSelectableChannel implements java.nio.channels.GatheringByteChannel java.nio.channels.WritableByteChannel {
-    ctor protected Pipe.SinkChannel(java.nio.channels.spi.SelectorProvider);
-    method public final int validOps();
-  }
-
-  public abstract static class Pipe.SourceChannel extends java.nio.channels.spi.AbstractSelectableChannel implements java.nio.channels.ReadableByteChannel java.nio.channels.ScatteringByteChannel {
-    ctor protected Pipe.SourceChannel(java.nio.channels.spi.SelectorProvider);
-    method public final int validOps();
-  }
-
-  public class ReadPendingException extends java.lang.IllegalStateException {
-    ctor public ReadPendingException();
-  }
-
-  public interface ReadableByteChannel extends java.nio.channels.Channel {
-    method public int read(java.nio.ByteBuffer) throws java.io.IOException;
-  }
-
-  public interface ScatteringByteChannel extends java.nio.channels.ReadableByteChannel {
-    method public long read(java.nio.ByteBuffer[], int, int) throws java.io.IOException;
-    method public long read(java.nio.ByteBuffer[]) throws java.io.IOException;
-  }
-
-  public interface SeekableByteChannel extends java.nio.channels.ByteChannel {
-    method public long position() throws java.io.IOException;
-    method public java.nio.channels.SeekableByteChannel position(long) throws java.io.IOException;
-    method public long size() throws java.io.IOException;
-    method public java.nio.channels.SeekableByteChannel truncate(long) throws java.io.IOException;
-  }
-
-  public abstract class SelectableChannel extends java.nio.channels.spi.AbstractInterruptibleChannel implements java.nio.channels.Channel {
-    ctor protected SelectableChannel();
-    method public abstract Object blockingLock();
-    method public abstract java.nio.channels.SelectableChannel configureBlocking(boolean) throws java.io.IOException;
-    method public abstract boolean isBlocking();
-    method public abstract boolean isRegistered();
-    method public abstract java.nio.channels.SelectionKey keyFor(java.nio.channels.Selector);
-    method public abstract java.nio.channels.spi.SelectorProvider provider();
-    method public abstract java.nio.channels.SelectionKey register(java.nio.channels.Selector, int, Object) throws java.nio.channels.ClosedChannelException;
-    method public final java.nio.channels.SelectionKey register(java.nio.channels.Selector, int) throws java.nio.channels.ClosedChannelException;
-    method public abstract int validOps();
-  }
-
-  public abstract class SelectionKey {
-    ctor protected SelectionKey();
-    method public final Object attach(Object);
-    method public final Object attachment();
-    method public abstract void cancel();
-    method public abstract java.nio.channels.SelectableChannel channel();
-    method public abstract int interestOps();
-    method public abstract java.nio.channels.SelectionKey interestOps(int);
-    method public final boolean isAcceptable();
-    method public final boolean isConnectable();
-    method public final boolean isReadable();
-    method public abstract boolean isValid();
-    method public final boolean isWritable();
-    method public abstract int readyOps();
-    method public abstract java.nio.channels.Selector selector();
-    field public static final int OP_ACCEPT = 16; // 0x10
-    field public static final int OP_CONNECT = 8; // 0x8
-    field public static final int OP_READ = 1; // 0x1
-    field public static final int OP_WRITE = 4; // 0x4
-  }
-
-  public abstract class Selector implements java.io.Closeable {
-    ctor protected Selector();
-    method public abstract boolean isOpen();
-    method public abstract java.util.Set<java.nio.channels.SelectionKey> keys();
-    method public static java.nio.channels.Selector open() throws java.io.IOException;
-    method public abstract java.nio.channels.spi.SelectorProvider provider();
-    method public abstract int select(long) throws java.io.IOException;
-    method public abstract int select() throws java.io.IOException;
-    method public abstract int selectNow() throws java.io.IOException;
-    method public abstract java.util.Set<java.nio.channels.SelectionKey> selectedKeys();
-    method public abstract java.nio.channels.Selector wakeup();
-  }
-
-  public abstract class ServerSocketChannel extends java.nio.channels.spi.AbstractSelectableChannel implements java.nio.channels.NetworkChannel {
-    ctor protected ServerSocketChannel(java.nio.channels.spi.SelectorProvider);
-    method public abstract java.nio.channels.SocketChannel accept() throws java.io.IOException;
-    method public final java.nio.channels.ServerSocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
-    method public abstract java.nio.channels.ServerSocketChannel bind(java.net.SocketAddress, int) throws java.io.IOException;
-    method public static java.nio.channels.ServerSocketChannel open() throws java.io.IOException;
-    method public abstract <T> java.nio.channels.ServerSocketChannel setOption(java.net.SocketOption<T>, T) throws java.io.IOException;
-    method public abstract java.net.ServerSocket socket();
-    method public final int validOps();
-  }
-
-  public class ShutdownChannelGroupException extends java.lang.IllegalStateException {
-    ctor public ShutdownChannelGroupException();
-  }
-
-  public abstract class SocketChannel extends java.nio.channels.spi.AbstractSelectableChannel implements java.nio.channels.ByteChannel java.nio.channels.GatheringByteChannel java.nio.channels.NetworkChannel java.nio.channels.ScatteringByteChannel {
-    ctor protected SocketChannel(java.nio.channels.spi.SelectorProvider);
-    method public abstract java.nio.channels.SocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
-    method public abstract boolean connect(java.net.SocketAddress) throws java.io.IOException;
-    method public abstract boolean finishConnect() throws java.io.IOException;
-    method public abstract java.net.SocketAddress getRemoteAddress() throws java.io.IOException;
-    method public abstract boolean isConnected();
-    method public abstract boolean isConnectionPending();
-    method public static java.nio.channels.SocketChannel open() throws java.io.IOException;
-    method public static java.nio.channels.SocketChannel open(java.net.SocketAddress) throws java.io.IOException;
-    method public final long read(java.nio.ByteBuffer[]) throws java.io.IOException;
-    method public abstract <T> java.nio.channels.SocketChannel setOption(java.net.SocketOption<T>, T) throws java.io.IOException;
-    method public abstract java.nio.channels.SocketChannel shutdownInput() throws java.io.IOException;
-    method public abstract java.nio.channels.SocketChannel shutdownOutput() throws java.io.IOException;
-    method public abstract java.net.Socket socket();
-    method public final int validOps();
-    method public final long write(java.nio.ByteBuffer[]) throws java.io.IOException;
-  }
-
-  public class UnresolvedAddressException extends java.lang.IllegalArgumentException {
-    ctor public UnresolvedAddressException();
-  }
-
-  public class UnsupportedAddressTypeException extends java.lang.IllegalArgumentException {
-    ctor public UnsupportedAddressTypeException();
-  }
-
-  public interface WritableByteChannel extends java.nio.channels.Channel {
-    method public int write(java.nio.ByteBuffer) throws java.io.IOException;
-  }
-
-  public class WritePendingException extends java.lang.IllegalStateException {
-    ctor public WritePendingException();
-  }
-
-}
-
-package java.nio.channels.spi {
-
-  public abstract class AbstractInterruptibleChannel implements java.nio.channels.Channel java.nio.channels.InterruptibleChannel {
-    ctor protected AbstractInterruptibleChannel();
-    method protected final void begin();
-    method public final void close() throws java.io.IOException;
-    method protected final void end(boolean) throws java.nio.channels.AsynchronousCloseException;
-    method protected abstract void implCloseChannel() throws java.io.IOException;
-    method public final boolean isOpen();
-  }
-
-  public abstract class AbstractSelectableChannel extends java.nio.channels.SelectableChannel {
-    ctor protected AbstractSelectableChannel(java.nio.channels.spi.SelectorProvider);
-    method public final Object blockingLock();
-    method public final java.nio.channels.SelectableChannel configureBlocking(boolean) throws java.io.IOException;
-    method protected final void implCloseChannel() throws java.io.IOException;
-    method protected abstract void implCloseSelectableChannel() throws java.io.IOException;
-    method protected abstract void implConfigureBlocking(boolean) throws java.io.IOException;
-    method public final boolean isBlocking();
-    method public final boolean isRegistered();
-    method public final java.nio.channels.SelectionKey keyFor(java.nio.channels.Selector);
-    method public final java.nio.channels.spi.SelectorProvider provider();
-    method public final java.nio.channels.SelectionKey register(java.nio.channels.Selector, int, Object) throws java.nio.channels.ClosedChannelException;
-  }
-
-  public abstract class AbstractSelectionKey extends java.nio.channels.SelectionKey {
-    ctor protected AbstractSelectionKey();
-    method public final void cancel();
-    method public final boolean isValid();
-  }
-
-  public abstract class AbstractSelector extends java.nio.channels.Selector {
-    ctor protected AbstractSelector(java.nio.channels.spi.SelectorProvider);
-    method protected final void begin();
-    method protected final java.util.Set<java.nio.channels.SelectionKey> cancelledKeys();
-    method public final void close() throws java.io.IOException;
-    method protected final void deregister(java.nio.channels.spi.AbstractSelectionKey);
-    method protected final void end();
-    method protected abstract void implCloseSelector() throws java.io.IOException;
-    method public final boolean isOpen();
-    method public final java.nio.channels.spi.SelectorProvider provider();
-    method protected abstract java.nio.channels.SelectionKey register(java.nio.channels.spi.AbstractSelectableChannel, int, Object);
-  }
-
-  public abstract class AsynchronousChannelProvider {
-    ctor protected AsynchronousChannelProvider();
-    method public abstract java.nio.channels.AsynchronousChannelGroup openAsynchronousChannelGroup(int, java.util.concurrent.ThreadFactory) throws java.io.IOException;
-    method public abstract java.nio.channels.AsynchronousChannelGroup openAsynchronousChannelGroup(java.util.concurrent.ExecutorService, int) throws java.io.IOException;
-    method public abstract java.nio.channels.AsynchronousServerSocketChannel openAsynchronousServerSocketChannel(java.nio.channels.AsynchronousChannelGroup) throws java.io.IOException;
-    method public abstract java.nio.channels.AsynchronousSocketChannel openAsynchronousSocketChannel(java.nio.channels.AsynchronousChannelGroup) throws java.io.IOException;
-    method public static java.nio.channels.spi.AsynchronousChannelProvider provider();
-  }
-
-  public abstract class SelectorProvider {
-    ctor protected SelectorProvider();
-    method public java.nio.channels.Channel inheritedChannel() throws java.io.IOException;
-    method public abstract java.nio.channels.DatagramChannel openDatagramChannel() throws java.io.IOException;
-    method public abstract java.nio.channels.DatagramChannel openDatagramChannel(java.net.ProtocolFamily) throws java.io.IOException;
-    method public abstract java.nio.channels.Pipe openPipe() throws java.io.IOException;
-    method public abstract java.nio.channels.spi.AbstractSelector openSelector() throws java.io.IOException;
-    method public abstract java.nio.channels.ServerSocketChannel openServerSocketChannel() throws java.io.IOException;
-    method public abstract java.nio.channels.SocketChannel openSocketChannel() throws java.io.IOException;
-    method public static java.nio.channels.spi.SelectorProvider provider();
-  }
-
-}
-
-package java.nio.charset {
-
-  public class CharacterCodingException extends java.io.IOException {
-    ctor public CharacterCodingException();
-  }
-
-  public abstract class Charset implements java.lang.Comparable<java.nio.charset.Charset> {
-    ctor protected Charset(String, String[]);
-    method public final java.util.Set<java.lang.String> aliases();
-    method public static java.util.SortedMap<java.lang.String,java.nio.charset.Charset> availableCharsets();
-    method public boolean canEncode();
-    method public final int compareTo(java.nio.charset.Charset);
-    method public abstract boolean contains(java.nio.charset.Charset);
-    method public final java.nio.CharBuffer decode(java.nio.ByteBuffer);
-    method public static java.nio.charset.Charset defaultCharset();
-    method public String displayName();
-    method public String displayName(java.util.Locale);
-    method public final java.nio.ByteBuffer encode(java.nio.CharBuffer);
-    method public final java.nio.ByteBuffer encode(String);
-    method public final boolean equals(Object);
-    method public static java.nio.charset.Charset forName(String);
-    method public final int hashCode();
-    method public final boolean isRegistered();
-    method public static boolean isSupported(String);
-    method public final String name();
-    method public abstract java.nio.charset.CharsetDecoder newDecoder();
-    method public abstract java.nio.charset.CharsetEncoder newEncoder();
-    method public final String toString();
-  }
-
-  public abstract class CharsetDecoder {
-    ctor protected CharsetDecoder(java.nio.charset.Charset, float, float);
-    method public final float averageCharsPerByte();
-    method public final java.nio.charset.Charset charset();
-    method public final java.nio.charset.CoderResult decode(java.nio.ByteBuffer, java.nio.CharBuffer, boolean);
-    method public final java.nio.CharBuffer decode(java.nio.ByteBuffer) throws java.nio.charset.CharacterCodingException;
-    method protected abstract java.nio.charset.CoderResult decodeLoop(java.nio.ByteBuffer, java.nio.CharBuffer);
-    method public java.nio.charset.Charset detectedCharset();
-    method public final java.nio.charset.CoderResult flush(java.nio.CharBuffer);
-    method protected java.nio.charset.CoderResult implFlush(java.nio.CharBuffer);
-    method protected void implOnMalformedInput(java.nio.charset.CodingErrorAction);
-    method protected void implOnUnmappableCharacter(java.nio.charset.CodingErrorAction);
-    method protected void implReplaceWith(String);
-    method protected void implReset();
-    method public boolean isAutoDetecting();
-    method public boolean isCharsetDetected();
-    method public java.nio.charset.CodingErrorAction malformedInputAction();
-    method public final float maxCharsPerByte();
-    method public final java.nio.charset.CharsetDecoder onMalformedInput(java.nio.charset.CodingErrorAction);
-    method public final java.nio.charset.CharsetDecoder onUnmappableCharacter(java.nio.charset.CodingErrorAction);
-    method public final java.nio.charset.CharsetDecoder replaceWith(String);
-    method public final String replacement();
-    method public final java.nio.charset.CharsetDecoder reset();
-    method public java.nio.charset.CodingErrorAction unmappableCharacterAction();
-  }
-
-  public abstract class CharsetEncoder {
-    ctor protected CharsetEncoder(java.nio.charset.Charset, float, float, byte[]);
-    ctor protected CharsetEncoder(java.nio.charset.Charset, float, float);
-    method public final float averageBytesPerChar();
-    method public boolean canEncode(char);
-    method public boolean canEncode(CharSequence);
-    method public final java.nio.charset.Charset charset();
-    method public final java.nio.charset.CoderResult encode(java.nio.CharBuffer, java.nio.ByteBuffer, boolean);
-    method public final java.nio.ByteBuffer encode(java.nio.CharBuffer) throws java.nio.charset.CharacterCodingException;
-    method protected abstract java.nio.charset.CoderResult encodeLoop(java.nio.CharBuffer, java.nio.ByteBuffer);
-    method public final java.nio.charset.CoderResult flush(java.nio.ByteBuffer);
-    method protected java.nio.charset.CoderResult implFlush(java.nio.ByteBuffer);
-    method protected void implOnMalformedInput(java.nio.charset.CodingErrorAction);
-    method protected void implOnUnmappableCharacter(java.nio.charset.CodingErrorAction);
-    method protected void implReplaceWith(byte[]);
-    method protected void implReset();
-    method public boolean isLegalReplacement(byte[]);
-    method public java.nio.charset.CodingErrorAction malformedInputAction();
-    method public final float maxBytesPerChar();
-    method public final java.nio.charset.CharsetEncoder onMalformedInput(java.nio.charset.CodingErrorAction);
-    method public final java.nio.charset.CharsetEncoder onUnmappableCharacter(java.nio.charset.CodingErrorAction);
-    method public final java.nio.charset.CharsetEncoder replaceWith(byte[]);
-    method public final byte[] replacement();
-    method public final java.nio.charset.CharsetEncoder reset();
-    method public java.nio.charset.CodingErrorAction unmappableCharacterAction();
-  }
-
-  public class CoderMalfunctionError extends java.lang.Error {
-    ctor public CoderMalfunctionError(Exception);
-  }
-
-  public class CoderResult {
-    method public boolean isError();
-    method public boolean isMalformed();
-    method public boolean isOverflow();
-    method public boolean isUnderflow();
-    method public boolean isUnmappable();
-    method public int length();
-    method public static java.nio.charset.CoderResult malformedForLength(int);
-    method public void throwException() throws java.nio.charset.CharacterCodingException;
-    method public static java.nio.charset.CoderResult unmappableForLength(int);
-    field public static final java.nio.charset.CoderResult OVERFLOW;
-    field public static final java.nio.charset.CoderResult UNDERFLOW;
-  }
-
-  public class CodingErrorAction {
-    field public static final java.nio.charset.CodingErrorAction IGNORE;
-    field public static final java.nio.charset.CodingErrorAction REPLACE;
-    field public static final java.nio.charset.CodingErrorAction REPORT;
-  }
-
-  public class IllegalCharsetNameException extends java.lang.IllegalArgumentException {
-    ctor public IllegalCharsetNameException(String);
-    method public String getCharsetName();
-  }
-
-  public class MalformedInputException extends java.nio.charset.CharacterCodingException {
-    ctor public MalformedInputException(int);
-    method public int getInputLength();
-  }
-
-  public final class StandardCharsets {
-    field public static final java.nio.charset.Charset ISO_8859_1;
-    field public static final java.nio.charset.Charset US_ASCII;
-    field public static final java.nio.charset.Charset UTF_16;
-    field public static final java.nio.charset.Charset UTF_16BE;
-    field public static final java.nio.charset.Charset UTF_16LE;
-    field public static final java.nio.charset.Charset UTF_8;
-  }
-
-  public class UnmappableCharacterException extends java.nio.charset.CharacterCodingException {
-    ctor public UnmappableCharacterException(int);
-    method public int getInputLength();
-  }
-
-  public class UnsupportedCharsetException extends java.lang.IllegalArgumentException {
-    ctor public UnsupportedCharsetException(String);
-    method public String getCharsetName();
-  }
-
-}
-
-package java.nio.charset.spi {
-
-  public abstract class CharsetProvider {
-    ctor protected CharsetProvider();
-    method public abstract java.nio.charset.Charset charsetForName(String);
-    method public abstract java.util.Iterator<java.nio.charset.Charset> charsets();
-  }
-
-}
-
-package java.nio.file {
-
-  public class AccessDeniedException extends java.nio.file.FileSystemException {
-    ctor public AccessDeniedException(String);
-    ctor public AccessDeniedException(String, String, String);
-  }
-
-  public enum AccessMode {
-    enum_constant public static final java.nio.file.AccessMode EXECUTE;
-    enum_constant public static final java.nio.file.AccessMode READ;
-    enum_constant public static final java.nio.file.AccessMode WRITE;
-  }
-
-  public class AtomicMoveNotSupportedException extends java.nio.file.FileSystemException {
-    ctor public AtomicMoveNotSupportedException(String, String, String);
-  }
-
-  public class ClosedDirectoryStreamException extends java.lang.IllegalStateException {
-    ctor public ClosedDirectoryStreamException();
-  }
-
-  public class ClosedFileSystemException extends java.lang.IllegalStateException {
-    ctor public ClosedFileSystemException();
-  }
-
-  public class ClosedWatchServiceException extends java.lang.IllegalStateException {
-    ctor public ClosedWatchServiceException();
-  }
-
-  public interface CopyOption {
-  }
-
-  public final class DirectoryIteratorException extends java.util.ConcurrentModificationException {
-    ctor public DirectoryIteratorException(java.io.IOException);
-    method public java.io.IOException getCause();
-  }
-
-  public class DirectoryNotEmptyException extends java.nio.file.FileSystemException {
-    ctor public DirectoryNotEmptyException(String);
-  }
-
-  public interface DirectoryStream<T> extends java.io.Closeable java.lang.Iterable<T> {
-  }
-
-  @java.lang.FunctionalInterface public static interface DirectoryStream.Filter<T> {
-    method public boolean accept(T) throws java.io.IOException;
-  }
-
-  public class FileAlreadyExistsException extends java.nio.file.FileSystemException {
-    ctor public FileAlreadyExistsException(String);
-    ctor public FileAlreadyExistsException(String, String, String);
-  }
-
-  public abstract class FileStore {
-    ctor protected FileStore();
-    method public abstract Object getAttribute(String) throws java.io.IOException;
-    method public abstract <V extends java.nio.file.attribute.FileStoreAttributeView> V getFileStoreAttributeView(Class<V>);
-    method public abstract long getTotalSpace() throws java.io.IOException;
-    method public abstract long getUnallocatedSpace() throws java.io.IOException;
-    method public abstract long getUsableSpace() throws java.io.IOException;
-    method public abstract boolean isReadOnly();
-    method public abstract String name();
-    method public abstract boolean supportsFileAttributeView(Class<? extends java.nio.file.attribute.FileAttributeView>);
-    method public abstract boolean supportsFileAttributeView(String);
-    method public abstract String type();
-  }
-
-  public abstract class FileSystem implements java.io.Closeable {
-    ctor protected FileSystem();
-    method public abstract Iterable<java.nio.file.FileStore> getFileStores();
-    method public abstract java.nio.file.Path getPath(String, java.lang.String...);
-    method public abstract java.nio.file.PathMatcher getPathMatcher(String);
-    method public abstract Iterable<java.nio.file.Path> getRootDirectories();
-    method public abstract String getSeparator();
-    method public abstract java.nio.file.attribute.UserPrincipalLookupService getUserPrincipalLookupService();
-    method public abstract boolean isOpen();
-    method public abstract boolean isReadOnly();
-    method public abstract java.nio.file.WatchService newWatchService() throws java.io.IOException;
-    method public abstract java.nio.file.spi.FileSystemProvider provider();
-    method public abstract java.util.Set<java.lang.String> supportedFileAttributeViews();
-  }
-
-  public class FileSystemAlreadyExistsException extends java.lang.RuntimeException {
-    ctor public FileSystemAlreadyExistsException();
-    ctor public FileSystemAlreadyExistsException(String);
-  }
-
-  public class FileSystemException extends java.io.IOException {
-    ctor public FileSystemException(String);
-    ctor public FileSystemException(String, String, String);
-    method public String getFile();
-    method public String getOtherFile();
-    method public String getReason();
-  }
-
-  public class FileSystemLoopException extends java.nio.file.FileSystemException {
-    ctor public FileSystemLoopException(String);
-  }
-
-  public class FileSystemNotFoundException extends java.lang.RuntimeException {
-    ctor public FileSystemNotFoundException();
-    ctor public FileSystemNotFoundException(String);
-  }
-
-  public final class FileSystems {
-    method public static java.nio.file.FileSystem getDefault();
-    method public static java.nio.file.FileSystem getFileSystem(java.net.URI);
-    method public static java.nio.file.FileSystem newFileSystem(java.net.URI, java.util.Map<java.lang.String,?>) throws java.io.IOException;
-    method public static java.nio.file.FileSystem newFileSystem(java.net.URI, java.util.Map<java.lang.String,?>, ClassLoader) throws java.io.IOException;
-    method public static java.nio.file.FileSystem newFileSystem(java.nio.file.Path, ClassLoader) throws java.io.IOException;
-  }
-
-  public enum FileVisitOption {
-    enum_constant public static final java.nio.file.FileVisitOption FOLLOW_LINKS;
-  }
-
-  public enum FileVisitResult {
-    enum_constant public static final java.nio.file.FileVisitResult CONTINUE;
-    enum_constant public static final java.nio.file.FileVisitResult SKIP_SIBLINGS;
-    enum_constant public static final java.nio.file.FileVisitResult SKIP_SUBTREE;
-    enum_constant public static final java.nio.file.FileVisitResult TERMINATE;
-  }
-
-  public interface FileVisitor<T> {
-    method public java.nio.file.FileVisitResult postVisitDirectory(T, java.io.IOException) throws java.io.IOException;
-    method public java.nio.file.FileVisitResult preVisitDirectory(T, java.nio.file.attribute.BasicFileAttributes) throws java.io.IOException;
-    method public java.nio.file.FileVisitResult visitFile(T, java.nio.file.attribute.BasicFileAttributes) throws java.io.IOException;
-    method public java.nio.file.FileVisitResult visitFileFailed(T, java.io.IOException) throws java.io.IOException;
-  }
-
-  public final class Files {
-    method public static java.nio.file.Path copy(java.nio.file.Path, java.nio.file.Path, java.nio.file.CopyOption...) throws java.io.IOException;
-    method public static long copy(java.io.InputStream, java.nio.file.Path, java.nio.file.CopyOption...) throws java.io.IOException;
-    method public static long copy(java.nio.file.Path, java.io.OutputStream) throws java.io.IOException;
-    method public static java.nio.file.Path createDirectories(java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public static java.nio.file.Path createDirectory(java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public static java.nio.file.Path createFile(java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public static java.nio.file.Path createLink(java.nio.file.Path, java.nio.file.Path) throws java.io.IOException;
-    method public static java.nio.file.Path createSymbolicLink(java.nio.file.Path, java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public static java.nio.file.Path createTempDirectory(java.nio.file.Path, String, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public static java.nio.file.Path createTempDirectory(String, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public static java.nio.file.Path createTempFile(java.nio.file.Path, String, String, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public static java.nio.file.Path createTempFile(String, String, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public static void delete(java.nio.file.Path) throws java.io.IOException;
-    method public static boolean deleteIfExists(java.nio.file.Path) throws java.io.IOException;
-    method public static boolean exists(java.nio.file.Path, java.nio.file.LinkOption...);
-    method public static java.util.stream.Stream<java.nio.file.Path> find(java.nio.file.Path, int, java.util.function.BiPredicate<java.nio.file.Path,java.nio.file.attribute.BasicFileAttributes>, java.nio.file.FileVisitOption...) throws java.io.IOException;
-    method public static Object getAttribute(java.nio.file.Path, String, java.nio.file.LinkOption...) throws java.io.IOException;
-    method public static <V extends java.nio.file.attribute.FileAttributeView> V getFileAttributeView(java.nio.file.Path, Class<V>, java.nio.file.LinkOption...);
-    method public static java.nio.file.FileStore getFileStore(java.nio.file.Path) throws java.io.IOException;
-    method public static java.nio.file.attribute.FileTime getLastModifiedTime(java.nio.file.Path, java.nio.file.LinkOption...) throws java.io.IOException;
-    method public static java.nio.file.attribute.UserPrincipal getOwner(java.nio.file.Path, java.nio.file.LinkOption...) throws java.io.IOException;
-    method public static java.util.Set<java.nio.file.attribute.PosixFilePermission> getPosixFilePermissions(java.nio.file.Path, java.nio.file.LinkOption...) throws java.io.IOException;
-    method public static boolean isDirectory(java.nio.file.Path, java.nio.file.LinkOption...);
-    method public static boolean isExecutable(java.nio.file.Path);
-    method public static boolean isHidden(java.nio.file.Path) throws java.io.IOException;
-    method public static boolean isReadable(java.nio.file.Path);
-    method public static boolean isRegularFile(java.nio.file.Path, java.nio.file.LinkOption...);
-    method public static boolean isSameFile(java.nio.file.Path, java.nio.file.Path) throws java.io.IOException;
-    method public static boolean isSymbolicLink(java.nio.file.Path);
-    method public static boolean isWritable(java.nio.file.Path);
-    method public static java.util.stream.Stream<java.lang.String> lines(java.nio.file.Path, java.nio.charset.Charset) throws java.io.IOException;
-    method public static java.util.stream.Stream<java.lang.String> lines(java.nio.file.Path) throws java.io.IOException;
-    method public static java.util.stream.Stream<java.nio.file.Path> list(java.nio.file.Path) throws java.io.IOException;
-    method public static java.nio.file.Path move(java.nio.file.Path, java.nio.file.Path, java.nio.file.CopyOption...) throws java.io.IOException;
-    method public static java.io.BufferedReader newBufferedReader(java.nio.file.Path, java.nio.charset.Charset) throws java.io.IOException;
-    method public static java.io.BufferedReader newBufferedReader(java.nio.file.Path) throws java.io.IOException;
-    method public static java.io.BufferedWriter newBufferedWriter(java.nio.file.Path, java.nio.charset.Charset, java.nio.file.OpenOption...) throws java.io.IOException;
-    method public static java.io.BufferedWriter newBufferedWriter(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
-    method public static java.nio.channels.SeekableByteChannel newByteChannel(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public static java.nio.channels.SeekableByteChannel newByteChannel(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
-    method public static java.nio.file.DirectoryStream<java.nio.file.Path> newDirectoryStream(java.nio.file.Path) throws java.io.IOException;
-    method public static java.nio.file.DirectoryStream<java.nio.file.Path> newDirectoryStream(java.nio.file.Path, String) throws java.io.IOException;
-    method public static java.nio.file.DirectoryStream<java.nio.file.Path> newDirectoryStream(java.nio.file.Path, java.nio.file.DirectoryStream.Filter<? super java.nio.file.Path>) throws java.io.IOException;
-    method public static java.io.InputStream newInputStream(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
-    method public static java.io.OutputStream newOutputStream(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
-    method public static boolean notExists(java.nio.file.Path, java.nio.file.LinkOption...);
-    method public static String probeContentType(java.nio.file.Path) throws java.io.IOException;
-    method public static byte[] readAllBytes(java.nio.file.Path) throws java.io.IOException;
-    method public static java.util.List<java.lang.String> readAllLines(java.nio.file.Path, java.nio.charset.Charset) throws java.io.IOException;
-    method public static java.util.List<java.lang.String> readAllLines(java.nio.file.Path) throws java.io.IOException;
-    method public static <A extends java.nio.file.attribute.BasicFileAttributes> A readAttributes(java.nio.file.Path, Class<A>, java.nio.file.LinkOption...) throws java.io.IOException;
-    method public static java.util.Map<java.lang.String,java.lang.Object> readAttributes(java.nio.file.Path, String, java.nio.file.LinkOption...) throws java.io.IOException;
-    method public static java.nio.file.Path readSymbolicLink(java.nio.file.Path) throws java.io.IOException;
-    method public static java.nio.file.Path setAttribute(java.nio.file.Path, String, Object, java.nio.file.LinkOption...) throws java.io.IOException;
-    method public static java.nio.file.Path setLastModifiedTime(java.nio.file.Path, java.nio.file.attribute.FileTime) throws java.io.IOException;
-    method public static java.nio.file.Path setOwner(java.nio.file.Path, java.nio.file.attribute.UserPrincipal) throws java.io.IOException;
-    method public static java.nio.file.Path setPosixFilePermissions(java.nio.file.Path, java.util.Set<java.nio.file.attribute.PosixFilePermission>) throws java.io.IOException;
-    method public static long size(java.nio.file.Path) throws java.io.IOException;
-    method public static java.util.stream.Stream<java.nio.file.Path> walk(java.nio.file.Path, int, java.nio.file.FileVisitOption...) throws java.io.IOException;
-    method public static java.util.stream.Stream<java.nio.file.Path> walk(java.nio.file.Path, java.nio.file.FileVisitOption...) throws java.io.IOException;
-    method public static java.nio.file.Path walkFileTree(java.nio.file.Path, java.util.Set<java.nio.file.FileVisitOption>, int, java.nio.file.FileVisitor<? super java.nio.file.Path>) throws java.io.IOException;
-    method public static java.nio.file.Path walkFileTree(java.nio.file.Path, java.nio.file.FileVisitor<? super java.nio.file.Path>) throws java.io.IOException;
-    method public static java.nio.file.Path write(java.nio.file.Path, byte[], java.nio.file.OpenOption...) throws java.io.IOException;
-    method public static java.nio.file.Path write(java.nio.file.Path, Iterable<? extends java.lang.CharSequence>, java.nio.charset.Charset, java.nio.file.OpenOption...) throws java.io.IOException;
-    method public static java.nio.file.Path write(java.nio.file.Path, Iterable<? extends java.lang.CharSequence>, java.nio.file.OpenOption...) throws java.io.IOException;
-  }
-
-  public class InvalidPathException extends java.lang.IllegalArgumentException {
-    ctor public InvalidPathException(String, String, int);
-    ctor public InvalidPathException(String, String);
-    method public int getIndex();
-    method public String getInput();
-    method public String getReason();
-  }
-
-  public enum LinkOption implements java.nio.file.CopyOption java.nio.file.OpenOption {
-    enum_constant public static final java.nio.file.LinkOption NOFOLLOW_LINKS;
-  }
-
-  public final class LinkPermission extends java.security.BasicPermission {
-    ctor public LinkPermission(String);
-    ctor public LinkPermission(String, String);
-  }
-
-  public class NoSuchFileException extends java.nio.file.FileSystemException {
-    ctor public NoSuchFileException(String);
-    ctor public NoSuchFileException(String, String, String);
-  }
-
-  public class NotDirectoryException extends java.nio.file.FileSystemException {
-    ctor public NotDirectoryException(String);
-  }
-
-  public class NotLinkException extends java.nio.file.FileSystemException {
-    ctor public NotLinkException(String);
-    ctor public NotLinkException(String, String, String);
-  }
-
-  public interface OpenOption {
-  }
-
-  public interface Path extends java.lang.Comparable<java.nio.file.Path> java.lang.Iterable<java.nio.file.Path> java.nio.file.Watchable {
-    method public int compareTo(java.nio.file.Path);
-    method public boolean endsWith(java.nio.file.Path);
-    method public boolean endsWith(String);
-    method public boolean equals(Object);
-    method public java.nio.file.Path getFileName();
-    method public java.nio.file.FileSystem getFileSystem();
-    method public java.nio.file.Path getName(int);
-    method public int getNameCount();
-    method public java.nio.file.Path getParent();
-    method public java.nio.file.Path getRoot();
-    method public int hashCode();
-    method public boolean isAbsolute();
-    method public java.util.Iterator<java.nio.file.Path> iterator();
-    method public java.nio.file.Path normalize();
-    method public java.nio.file.Path relativize(java.nio.file.Path);
-    method public java.nio.file.Path resolve(java.nio.file.Path);
-    method public java.nio.file.Path resolve(String);
-    method public java.nio.file.Path resolveSibling(java.nio.file.Path);
-    method public java.nio.file.Path resolveSibling(String);
-    method public boolean startsWith(java.nio.file.Path);
-    method public boolean startsWith(String);
-    method public java.nio.file.Path subpath(int, int);
-    method public java.nio.file.Path toAbsolutePath();
-    method public java.io.File toFile();
-    method public java.nio.file.Path toRealPath(java.nio.file.LinkOption...) throws java.io.IOException;
-    method public String toString();
-    method public java.net.URI toUri();
-  }
-
-  @java.lang.FunctionalInterface public interface PathMatcher {
-    method public boolean matches(java.nio.file.Path);
-  }
-
-  public final class Paths {
-    method public static java.nio.file.Path get(String, java.lang.String...);
-    method public static java.nio.file.Path get(java.net.URI);
-  }
-
-  public class ProviderMismatchException extends java.lang.IllegalArgumentException {
-    ctor public ProviderMismatchException();
-    ctor public ProviderMismatchException(String);
-  }
-
-  public class ProviderNotFoundException extends java.lang.RuntimeException {
-    ctor public ProviderNotFoundException();
-    ctor public ProviderNotFoundException(String);
-  }
-
-  public class ReadOnlyFileSystemException extends java.lang.UnsupportedOperationException {
-    ctor public ReadOnlyFileSystemException();
-  }
-
-  public interface SecureDirectoryStream<T> extends java.nio.file.DirectoryStream<T> {
-    method public void deleteDirectory(T) throws java.io.IOException;
-    method public void deleteFile(T) throws java.io.IOException;
-    method public <V extends java.nio.file.attribute.FileAttributeView> V getFileAttributeView(Class<V>);
-    method public <V extends java.nio.file.attribute.FileAttributeView> V getFileAttributeView(T, Class<V>, java.nio.file.LinkOption...);
-    method public void move(T, java.nio.file.SecureDirectoryStream<T>, T) throws java.io.IOException;
-    method public java.nio.channels.SeekableByteChannel newByteChannel(T, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public java.nio.file.SecureDirectoryStream<T> newDirectoryStream(T, java.nio.file.LinkOption...) throws java.io.IOException;
-  }
-
-  public class SimpleFileVisitor<T> implements java.nio.file.FileVisitor<T> {
-    ctor protected SimpleFileVisitor();
-    method public java.nio.file.FileVisitResult postVisitDirectory(T, java.io.IOException) throws java.io.IOException;
-    method public java.nio.file.FileVisitResult preVisitDirectory(T, java.nio.file.attribute.BasicFileAttributes) throws java.io.IOException;
-    method public java.nio.file.FileVisitResult visitFile(T, java.nio.file.attribute.BasicFileAttributes) throws java.io.IOException;
-    method public java.nio.file.FileVisitResult visitFileFailed(T, java.io.IOException) throws java.io.IOException;
-  }
-
-  public enum StandardCopyOption implements java.nio.file.CopyOption {
-    enum_constant public static final java.nio.file.StandardCopyOption ATOMIC_MOVE;
-    enum_constant public static final java.nio.file.StandardCopyOption COPY_ATTRIBUTES;
-    enum_constant public static final java.nio.file.StandardCopyOption REPLACE_EXISTING;
-  }
-
-  public enum StandardOpenOption implements java.nio.file.OpenOption {
-    enum_constant public static final java.nio.file.StandardOpenOption APPEND;
-    enum_constant public static final java.nio.file.StandardOpenOption CREATE;
-    enum_constant public static final java.nio.file.StandardOpenOption CREATE_NEW;
-    enum_constant public static final java.nio.file.StandardOpenOption DELETE_ON_CLOSE;
-    enum_constant public static final java.nio.file.StandardOpenOption DSYNC;
-    enum_constant public static final java.nio.file.StandardOpenOption READ;
-    enum_constant public static final java.nio.file.StandardOpenOption SPARSE;
-    enum_constant public static final java.nio.file.StandardOpenOption SYNC;
-    enum_constant public static final java.nio.file.StandardOpenOption TRUNCATE_EXISTING;
-    enum_constant public static final java.nio.file.StandardOpenOption WRITE;
-  }
-
-  public final class StandardWatchEventKinds {
-    field public static final java.nio.file.WatchEvent.Kind<java.nio.file.Path> ENTRY_CREATE;
-    field public static final java.nio.file.WatchEvent.Kind<java.nio.file.Path> ENTRY_DELETE;
-    field public static final java.nio.file.WatchEvent.Kind<java.nio.file.Path> ENTRY_MODIFY;
-    field public static final java.nio.file.WatchEvent.Kind<java.lang.Object> OVERFLOW;
-  }
-
-  public interface WatchEvent<T> {
-    method public T context();
-    method public int count();
-    method public java.nio.file.WatchEvent.Kind<T> kind();
-  }
-
-  public static interface WatchEvent.Kind<T> {
-    method public String name();
-    method public Class<T> type();
-  }
-
-  public static interface WatchEvent.Modifier {
-    method public String name();
-  }
-
-  public interface WatchKey {
-    method public void cancel();
-    method public boolean isValid();
-    method public java.util.List<java.nio.file.WatchEvent<?>> pollEvents();
-    method public boolean reset();
-    method public java.nio.file.Watchable watchable();
-  }
-
-  public interface WatchService extends java.io.Closeable {
-    method public java.nio.file.WatchKey poll();
-    method public java.nio.file.WatchKey poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public java.nio.file.WatchKey take() throws java.lang.InterruptedException;
-  }
-
-  public interface Watchable {
-    method public java.nio.file.WatchKey register(java.nio.file.WatchService, java.nio.file.WatchEvent.Kind<?>[], java.nio.file.WatchEvent.Modifier...) throws java.io.IOException;
-    method public java.nio.file.WatchKey register(java.nio.file.WatchService, java.nio.file.WatchEvent.Kind<?>...) throws java.io.IOException;
-  }
-
-}
-
-package java.nio.file.attribute {
-
-  public final class AclEntry {
-    method public java.util.Set<java.nio.file.attribute.AclEntryFlag> flags();
-    method public static java.nio.file.attribute.AclEntry.Builder newBuilder();
-    method public static java.nio.file.attribute.AclEntry.Builder newBuilder(java.nio.file.attribute.AclEntry);
-    method public java.util.Set<java.nio.file.attribute.AclEntryPermission> permissions();
-    method public java.nio.file.attribute.UserPrincipal principal();
-    method public java.nio.file.attribute.AclEntryType type();
-  }
-
-  public static final class AclEntry.Builder {
-    method public java.nio.file.attribute.AclEntry build();
-    method public java.nio.file.attribute.AclEntry.Builder setFlags(java.util.Set<java.nio.file.attribute.AclEntryFlag>);
-    method public java.nio.file.attribute.AclEntry.Builder setFlags(java.nio.file.attribute.AclEntryFlag...);
-    method public java.nio.file.attribute.AclEntry.Builder setPermissions(java.util.Set<java.nio.file.attribute.AclEntryPermission>);
-    method public java.nio.file.attribute.AclEntry.Builder setPermissions(java.nio.file.attribute.AclEntryPermission...);
-    method public java.nio.file.attribute.AclEntry.Builder setPrincipal(java.nio.file.attribute.UserPrincipal);
-    method public java.nio.file.attribute.AclEntry.Builder setType(java.nio.file.attribute.AclEntryType);
-  }
-
-  public enum AclEntryFlag {
-    enum_constant public static final java.nio.file.attribute.AclEntryFlag DIRECTORY_INHERIT;
-    enum_constant public static final java.nio.file.attribute.AclEntryFlag FILE_INHERIT;
-    enum_constant public static final java.nio.file.attribute.AclEntryFlag INHERIT_ONLY;
-    enum_constant public static final java.nio.file.attribute.AclEntryFlag NO_PROPAGATE_INHERIT;
-  }
-
-  public enum AclEntryPermission {
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission APPEND_DATA;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission DELETE;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission DELETE_CHILD;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission EXECUTE;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission READ_ACL;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission READ_ATTRIBUTES;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission READ_DATA;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission READ_NAMED_ATTRS;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission SYNCHRONIZE;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission WRITE_ACL;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission WRITE_ATTRIBUTES;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission WRITE_DATA;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission WRITE_NAMED_ATTRS;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission WRITE_OWNER;
-    field public static final java.nio.file.attribute.AclEntryPermission ADD_FILE;
-    field public static final java.nio.file.attribute.AclEntryPermission ADD_SUBDIRECTORY;
-    field public static final java.nio.file.attribute.AclEntryPermission LIST_DIRECTORY;
-  }
-
-  public enum AclEntryType {
-    enum_constant public static final java.nio.file.attribute.AclEntryType ALARM;
-    enum_constant public static final java.nio.file.attribute.AclEntryType ALLOW;
-    enum_constant public static final java.nio.file.attribute.AclEntryType AUDIT;
-    enum_constant public static final java.nio.file.attribute.AclEntryType DENY;
-  }
-
-  public interface AclFileAttributeView extends java.nio.file.attribute.FileOwnerAttributeView {
-    method public java.util.List<java.nio.file.attribute.AclEntry> getAcl() throws java.io.IOException;
-    method public void setAcl(java.util.List<java.nio.file.attribute.AclEntry>) throws java.io.IOException;
-  }
-
-  public interface AttributeView {
-    method public String name();
-  }
-
-  public interface BasicFileAttributeView extends java.nio.file.attribute.FileAttributeView {
-    method public java.nio.file.attribute.BasicFileAttributes readAttributes() throws java.io.IOException;
-    method public void setTimes(java.nio.file.attribute.FileTime, java.nio.file.attribute.FileTime, java.nio.file.attribute.FileTime) throws java.io.IOException;
-  }
-
-  public interface BasicFileAttributes {
-    method public java.nio.file.attribute.FileTime creationTime();
-    method public Object fileKey();
-    method public boolean isDirectory();
-    method public boolean isOther();
-    method public boolean isRegularFile();
-    method public boolean isSymbolicLink();
-    method public java.nio.file.attribute.FileTime lastAccessTime();
-    method public java.nio.file.attribute.FileTime lastModifiedTime();
-    method public long size();
-  }
-
-  public interface DosFileAttributeView extends java.nio.file.attribute.BasicFileAttributeView {
-    method public java.nio.file.attribute.DosFileAttributes readAttributes() throws java.io.IOException;
-    method public void setArchive(boolean) throws java.io.IOException;
-    method public void setHidden(boolean) throws java.io.IOException;
-    method public void setReadOnly(boolean) throws java.io.IOException;
-    method public void setSystem(boolean) throws java.io.IOException;
-  }
-
-  public interface DosFileAttributes extends java.nio.file.attribute.BasicFileAttributes {
-    method public boolean isArchive();
-    method public boolean isHidden();
-    method public boolean isReadOnly();
-    method public boolean isSystem();
-  }
-
-  public interface FileAttribute<T> {
-    method public String name();
-    method public T value();
-  }
-
-  public interface FileAttributeView extends java.nio.file.attribute.AttributeView {
-  }
-
-  public interface FileOwnerAttributeView extends java.nio.file.attribute.FileAttributeView {
-    method public java.nio.file.attribute.UserPrincipal getOwner() throws java.io.IOException;
-    method public void setOwner(java.nio.file.attribute.UserPrincipal) throws java.io.IOException;
-  }
-
-  public interface FileStoreAttributeView extends java.nio.file.attribute.AttributeView {
-  }
-
-  public final class FileTime implements java.lang.Comparable<java.nio.file.attribute.FileTime> {
-    method public int compareTo(java.nio.file.attribute.FileTime);
-    method public static java.nio.file.attribute.FileTime from(long, java.util.concurrent.TimeUnit);
-    method public static java.nio.file.attribute.FileTime from(java.time.Instant);
-    method public static java.nio.file.attribute.FileTime fromMillis(long);
-    method public long to(java.util.concurrent.TimeUnit);
-    method public java.time.Instant toInstant();
-    method public long toMillis();
-  }
-
-  public interface GroupPrincipal extends java.nio.file.attribute.UserPrincipal {
-  }
-
-  public interface PosixFileAttributeView extends java.nio.file.attribute.BasicFileAttributeView java.nio.file.attribute.FileOwnerAttributeView {
-    method public java.nio.file.attribute.PosixFileAttributes readAttributes() throws java.io.IOException;
-    method public void setGroup(java.nio.file.attribute.GroupPrincipal) throws java.io.IOException;
-    method public void setPermissions(java.util.Set<java.nio.file.attribute.PosixFilePermission>) throws java.io.IOException;
-  }
-
-  public interface PosixFileAttributes extends java.nio.file.attribute.BasicFileAttributes {
-    method public java.nio.file.attribute.GroupPrincipal group();
-    method public java.nio.file.attribute.UserPrincipal owner();
-    method public java.util.Set<java.nio.file.attribute.PosixFilePermission> permissions();
-  }
-
-  public enum PosixFilePermission {
-    enum_constant public static final java.nio.file.attribute.PosixFilePermission GROUP_EXECUTE;
-    enum_constant public static final java.nio.file.attribute.PosixFilePermission GROUP_READ;
-    enum_constant public static final java.nio.file.attribute.PosixFilePermission GROUP_WRITE;
-    enum_constant public static final java.nio.file.attribute.PosixFilePermission OTHERS_EXECUTE;
-    enum_constant public static final java.nio.file.attribute.PosixFilePermission OTHERS_READ;
-    enum_constant public static final java.nio.file.attribute.PosixFilePermission OTHERS_WRITE;
-    enum_constant public static final java.nio.file.attribute.PosixFilePermission OWNER_EXECUTE;
-    enum_constant public static final java.nio.file.attribute.PosixFilePermission OWNER_READ;
-    enum_constant public static final java.nio.file.attribute.PosixFilePermission OWNER_WRITE;
-  }
-
-  public final class PosixFilePermissions {
-    method public static java.nio.file.attribute.FileAttribute<java.util.Set<java.nio.file.attribute.PosixFilePermission>> asFileAttribute(java.util.Set<java.nio.file.attribute.PosixFilePermission>);
-    method public static java.util.Set<java.nio.file.attribute.PosixFilePermission> fromString(String);
-    method public static String toString(java.util.Set<java.nio.file.attribute.PosixFilePermission>);
-  }
-
-  public interface UserDefinedFileAttributeView extends java.nio.file.attribute.FileAttributeView {
-    method public void delete(String) throws java.io.IOException;
-    method public java.util.List<java.lang.String> list() throws java.io.IOException;
-    method public int read(String, java.nio.ByteBuffer) throws java.io.IOException;
-    method public int size(String) throws java.io.IOException;
-    method public int write(String, java.nio.ByteBuffer) throws java.io.IOException;
-  }
-
-  public interface UserPrincipal extends java.security.Principal {
-  }
-
-  public abstract class UserPrincipalLookupService {
-    ctor protected UserPrincipalLookupService();
-    method public abstract java.nio.file.attribute.GroupPrincipal lookupPrincipalByGroupName(String) throws java.io.IOException;
-    method public abstract java.nio.file.attribute.UserPrincipal lookupPrincipalByName(String) throws java.io.IOException;
-  }
-
-  public class UserPrincipalNotFoundException extends java.io.IOException {
-    ctor public UserPrincipalNotFoundException(String);
-    method public String getName();
-  }
-
-}
-
-package java.nio.file.spi {
-
-  public abstract class FileSystemProvider {
-    ctor protected FileSystemProvider();
-    method public abstract void checkAccess(java.nio.file.Path, java.nio.file.AccessMode...) throws java.io.IOException;
-    method public abstract void copy(java.nio.file.Path, java.nio.file.Path, java.nio.file.CopyOption...) throws java.io.IOException;
-    method public abstract void createDirectory(java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public void createLink(java.nio.file.Path, java.nio.file.Path) throws java.io.IOException;
-    method public void createSymbolicLink(java.nio.file.Path, java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public abstract void delete(java.nio.file.Path) throws java.io.IOException;
-    method public boolean deleteIfExists(java.nio.file.Path) throws java.io.IOException;
-    method public abstract <V extends java.nio.file.attribute.FileAttributeView> V getFileAttributeView(java.nio.file.Path, Class<V>, java.nio.file.LinkOption...);
-    method public abstract java.nio.file.FileStore getFileStore(java.nio.file.Path) throws java.io.IOException;
-    method public abstract java.nio.file.FileSystem getFileSystem(java.net.URI);
-    method public abstract java.nio.file.Path getPath(java.net.URI);
-    method public abstract String getScheme();
-    method public static java.util.List<java.nio.file.spi.FileSystemProvider> installedProviders();
-    method public abstract boolean isHidden(java.nio.file.Path) throws java.io.IOException;
-    method public abstract boolean isSameFile(java.nio.file.Path, java.nio.file.Path) throws java.io.IOException;
-    method public abstract void move(java.nio.file.Path, java.nio.file.Path, java.nio.file.CopyOption...) throws java.io.IOException;
-    method public java.nio.channels.AsynchronousFileChannel newAsynchronousFileChannel(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.util.concurrent.ExecutorService, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public abstract java.nio.channels.SeekableByteChannel newByteChannel(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public abstract java.nio.file.DirectoryStream<java.nio.file.Path> newDirectoryStream(java.nio.file.Path, java.nio.file.DirectoryStream.Filter<? super java.nio.file.Path>) throws java.io.IOException;
-    method public java.nio.channels.FileChannel newFileChannel(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public abstract java.nio.file.FileSystem newFileSystem(java.net.URI, java.util.Map<java.lang.String,?>) throws java.io.IOException;
-    method public java.nio.file.FileSystem newFileSystem(java.nio.file.Path, java.util.Map<java.lang.String,?>) throws java.io.IOException;
-    method public java.io.InputStream newInputStream(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
-    method public java.io.OutputStream newOutputStream(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
-    method public abstract <A extends java.nio.file.attribute.BasicFileAttributes> A readAttributes(java.nio.file.Path, Class<A>, java.nio.file.LinkOption...) throws java.io.IOException;
-    method public abstract java.util.Map<java.lang.String,java.lang.Object> readAttributes(java.nio.file.Path, String, java.nio.file.LinkOption...) throws java.io.IOException;
-    method public java.nio.file.Path readSymbolicLink(java.nio.file.Path) throws java.io.IOException;
-    method public abstract void setAttribute(java.nio.file.Path, String, Object, java.nio.file.LinkOption...) throws java.io.IOException;
-  }
-
-  public abstract class FileTypeDetector {
-    ctor protected FileTypeDetector();
-    method public abstract String probeContentType(java.nio.file.Path) throws java.io.IOException;
-  }
-
-}
-
-package java.security {
-
-  public final class AccessControlContext {
-    ctor public AccessControlContext(java.security.ProtectionDomain[]);
-    ctor public AccessControlContext(java.security.AccessControlContext, java.security.DomainCombiner);
-    method public void checkPermission(java.security.Permission) throws java.security.AccessControlException;
-    method public java.security.DomainCombiner getDomainCombiner();
-  }
-
-  public class AccessControlException extends java.lang.SecurityException {
-    ctor public AccessControlException(String);
-    ctor public AccessControlException(String, java.security.Permission);
-    method public java.security.Permission getPermission();
-  }
-
-  public final class AccessController {
-    method public static void checkPermission(java.security.Permission) throws java.security.AccessControlException;
-    method public static <T> T doPrivileged(java.security.PrivilegedAction<T>);
-    method public static <T> T doPrivileged(java.security.PrivilegedAction<T>, java.security.AccessControlContext);
-    method public static <T> T doPrivileged(java.security.PrivilegedExceptionAction<T>) throws java.security.PrivilegedActionException;
-    method public static <T> T doPrivileged(java.security.PrivilegedExceptionAction<T>, java.security.AccessControlContext) throws java.security.PrivilegedActionException;
-    method public static <T> T doPrivilegedWithCombiner(java.security.PrivilegedAction<T>);
-    method public static <T> T doPrivilegedWithCombiner(java.security.PrivilegedExceptionAction<T>) throws java.security.PrivilegedActionException;
-    method public static java.security.AccessControlContext getContext();
-  }
-
-  public interface AlgorithmConstraints {
-    method public boolean permits(java.util.Set<java.security.CryptoPrimitive>, String, java.security.AlgorithmParameters);
-    method public boolean permits(java.util.Set<java.security.CryptoPrimitive>, java.security.Key);
-    method public boolean permits(java.util.Set<java.security.CryptoPrimitive>, String, java.security.Key, java.security.AlgorithmParameters);
-  }
-
-  public class AlgorithmParameterGenerator {
-    ctor protected AlgorithmParameterGenerator(java.security.AlgorithmParameterGeneratorSpi, java.security.Provider, String);
-    method public final java.security.AlgorithmParameters generateParameters();
-    method public final String getAlgorithm();
-    method public static java.security.AlgorithmParameterGenerator getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static java.security.AlgorithmParameterGenerator getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static java.security.AlgorithmParameterGenerator getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final java.security.Provider getProvider();
-    method public final void init(int);
-    method public final void init(int, java.security.SecureRandom);
-    method public final void init(java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException;
-    method public final void init(java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException;
-  }
-
-  public abstract class AlgorithmParameterGeneratorSpi {
-    ctor public AlgorithmParameterGeneratorSpi();
-    method protected abstract java.security.AlgorithmParameters engineGenerateParameters();
-    method protected abstract void engineInit(int, java.security.SecureRandom);
-    method protected abstract void engineInit(java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException;
-  }
-
-  public class AlgorithmParameters {
-    ctor protected AlgorithmParameters(java.security.AlgorithmParametersSpi, java.security.Provider, String);
-    method public final String getAlgorithm();
-    method public final byte[] getEncoded() throws java.io.IOException;
-    method public final byte[] getEncoded(String) throws java.io.IOException;
-    method public static java.security.AlgorithmParameters getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static java.security.AlgorithmParameters getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static java.security.AlgorithmParameters getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final <T extends java.security.spec.AlgorithmParameterSpec> T getParameterSpec(Class<T>) throws java.security.spec.InvalidParameterSpecException;
-    method public final java.security.Provider getProvider();
-    method public final void init(java.security.spec.AlgorithmParameterSpec) throws java.security.spec.InvalidParameterSpecException;
-    method public final void init(byte[]) throws java.io.IOException;
-    method public final void init(byte[], String) throws java.io.IOException;
-    method public final String toString();
-  }
-
-  public abstract class AlgorithmParametersSpi {
-    ctor public AlgorithmParametersSpi();
-    method protected abstract byte[] engineGetEncoded() throws java.io.IOException;
-    method protected abstract byte[] engineGetEncoded(String) throws java.io.IOException;
-    method protected abstract <T extends java.security.spec.AlgorithmParameterSpec> T engineGetParameterSpec(Class<T>) throws java.security.spec.InvalidParameterSpecException;
-    method protected abstract void engineInit(java.security.spec.AlgorithmParameterSpec) throws java.security.spec.InvalidParameterSpecException;
-    method protected abstract void engineInit(byte[]) throws java.io.IOException;
-    method protected abstract void engineInit(byte[], String) throws java.io.IOException;
-    method protected abstract String engineToString();
-  }
-
-  public final class AllPermission extends java.security.Permission {
-    ctor public AllPermission();
-    ctor public AllPermission(String, String);
-    method public String getActions();
-    method public boolean implies(java.security.Permission);
-  }
-
-  public abstract class AuthProvider extends java.security.Provider {
-    ctor protected AuthProvider(String, double, String);
-    method public abstract void login(javax.security.auth.Subject, javax.security.auth.callback.CallbackHandler) throws javax.security.auth.login.LoginException;
-    method public abstract void logout() throws javax.security.auth.login.LoginException;
-    method public abstract void setCallbackHandler(javax.security.auth.callback.CallbackHandler);
-  }
-
-  public abstract class BasicPermission extends java.security.Permission implements java.io.Serializable {
-    ctor public BasicPermission(String);
-    ctor public BasicPermission(String, String);
-    method public String getActions();
-    method public boolean implies(java.security.Permission);
-  }
-
-  @Deprecated public interface Certificate {
-    method @Deprecated public void decode(java.io.InputStream) throws java.io.IOException, java.security.KeyException;
-    method @Deprecated public void encode(java.io.OutputStream) throws java.io.IOException, java.security.KeyException;
-    method @Deprecated public String getFormat();
-    method @Deprecated public java.security.Principal getGuarantor();
-    method @Deprecated public java.security.Principal getPrincipal();
-    method @Deprecated public java.security.PublicKey getPublicKey();
-    method @Deprecated public String toString(boolean);
-  }
-
-  public final class CodeSigner implements java.io.Serializable {
-    ctor public CodeSigner(java.security.cert.CertPath, java.security.Timestamp);
-    method public java.security.cert.CertPath getSignerCertPath();
-    method public java.security.Timestamp getTimestamp();
-  }
-
-  public class CodeSource implements java.io.Serializable {
-    ctor public CodeSource(java.net.URL, java.security.cert.Certificate[]);
-    ctor public CodeSource(java.net.URL, java.security.CodeSigner[]);
-    method public final java.security.cert.Certificate[] getCertificates();
-    method public final java.security.CodeSigner[] getCodeSigners();
-    method public final java.net.URL getLocation();
-    method public boolean implies(java.security.CodeSource);
-  }
-
-  public enum CryptoPrimitive {
-    enum_constant public static final java.security.CryptoPrimitive BLOCK_CIPHER;
-    enum_constant public static final java.security.CryptoPrimitive KEY_AGREEMENT;
-    enum_constant public static final java.security.CryptoPrimitive KEY_ENCAPSULATION;
-    enum_constant public static final java.security.CryptoPrimitive KEY_WRAP;
-    enum_constant public static final java.security.CryptoPrimitive MAC;
-    enum_constant public static final java.security.CryptoPrimitive MESSAGE_DIGEST;
-    enum_constant public static final java.security.CryptoPrimitive PUBLIC_KEY_ENCRYPTION;
-    enum_constant public static final java.security.CryptoPrimitive SECURE_RANDOM;
-    enum_constant public static final java.security.CryptoPrimitive SIGNATURE;
-    enum_constant public static final java.security.CryptoPrimitive STREAM_CIPHER;
-  }
-
-  public class DigestException extends java.security.GeneralSecurityException {
-    ctor public DigestException();
-    ctor public DigestException(String);
-    ctor public DigestException(String, Throwable);
-    ctor public DigestException(Throwable);
-  }
-
-  public class DigestInputStream extends java.io.FilterInputStream {
-    ctor public DigestInputStream(java.io.InputStream, java.security.MessageDigest);
-    method public java.security.MessageDigest getMessageDigest();
-    method public void on(boolean);
-    method public void setMessageDigest(java.security.MessageDigest);
-    field protected java.security.MessageDigest digest;
-  }
-
-  public class DigestOutputStream extends java.io.FilterOutputStream {
-    ctor public DigestOutputStream(java.io.OutputStream, java.security.MessageDigest);
-    method public java.security.MessageDigest getMessageDigest();
-    method public void on(boolean);
-    method public void setMessageDigest(java.security.MessageDigest);
-    field protected java.security.MessageDigest digest;
-  }
-
-  public interface DomainCombiner {
-    method public java.security.ProtectionDomain[] combine(java.security.ProtectionDomain[], java.security.ProtectionDomain[]);
-  }
-
-  public final class DomainLoadStoreParameter implements java.security.KeyStore.LoadStoreParameter {
-    ctor public DomainLoadStoreParameter(java.net.URI, java.util.Map<java.lang.String,java.security.KeyStore.ProtectionParameter>);
-    method public java.net.URI getConfiguration();
-    method public java.security.KeyStore.ProtectionParameter getProtectionParameter();
-    method public java.util.Map<java.lang.String,java.security.KeyStore.ProtectionParameter> getProtectionParams();
-  }
-
-  public class GeneralSecurityException extends java.lang.Exception {
-    ctor public GeneralSecurityException();
-    ctor public GeneralSecurityException(String);
-    ctor public GeneralSecurityException(String, Throwable);
-    ctor public GeneralSecurityException(Throwable);
-  }
-
-  public interface Guard {
-    method public void checkGuard(Object) throws java.lang.SecurityException;
-  }
-
-  public class GuardedObject implements java.io.Serializable {
-    ctor public GuardedObject(Object, java.security.Guard);
-    method public Object getObject() throws java.lang.SecurityException;
-  }
-
-  @Deprecated public abstract class Identity implements java.security.Principal java.io.Serializable {
-    ctor @Deprecated protected Identity();
-    ctor @Deprecated public Identity(String, java.security.IdentityScope) throws java.security.KeyManagementException;
-    ctor @Deprecated public Identity(String);
-    method @Deprecated public void addCertificate(java.security.Certificate) throws java.security.KeyManagementException;
-    method @Deprecated public java.security.Certificate[] certificates();
-    method @Deprecated public final boolean equals(Object);
-    method @Deprecated public String getInfo();
-    method @Deprecated public final String getName();
-    method @Deprecated public java.security.PublicKey getPublicKey();
-    method @Deprecated public final java.security.IdentityScope getScope();
-    method @Deprecated protected boolean identityEquals(java.security.Identity);
-    method @Deprecated public void removeCertificate(java.security.Certificate) throws java.security.KeyManagementException;
-    method @Deprecated public void setInfo(String);
-    method @Deprecated public void setPublicKey(java.security.PublicKey) throws java.security.KeyManagementException;
-    method @Deprecated public String toString(boolean);
-  }
-
-  @Deprecated public abstract class IdentityScope extends java.security.Identity {
-    ctor @Deprecated protected IdentityScope();
-    ctor @Deprecated public IdentityScope(String);
-    ctor @Deprecated public IdentityScope(String, java.security.IdentityScope) throws java.security.KeyManagementException;
-    method @Deprecated public abstract void addIdentity(java.security.Identity) throws java.security.KeyManagementException;
-    method @Deprecated public abstract java.security.Identity getIdentity(String);
-    method @Deprecated public java.security.Identity getIdentity(java.security.Principal);
-    method @Deprecated public abstract java.security.Identity getIdentity(java.security.PublicKey);
-    method @Deprecated public static java.security.IdentityScope getSystemScope();
-    method @Deprecated public abstract java.util.Enumeration<java.security.Identity> identities();
-    method @Deprecated public abstract void removeIdentity(java.security.Identity) throws java.security.KeyManagementException;
-    method @Deprecated protected static void setSystemScope(java.security.IdentityScope);
-    method @Deprecated public abstract int size();
-  }
-
-  public class InvalidAlgorithmParameterException extends java.security.GeneralSecurityException {
-    ctor public InvalidAlgorithmParameterException();
-    ctor public InvalidAlgorithmParameterException(String);
-    ctor public InvalidAlgorithmParameterException(String, Throwable);
-    ctor public InvalidAlgorithmParameterException(Throwable);
-  }
-
-  public class InvalidKeyException extends java.security.KeyException {
-    ctor public InvalidKeyException();
-    ctor public InvalidKeyException(String);
-    ctor public InvalidKeyException(String, Throwable);
-    ctor public InvalidKeyException(Throwable);
-  }
-
-  public class InvalidParameterException extends java.lang.IllegalArgumentException {
-    ctor public InvalidParameterException();
-    ctor public InvalidParameterException(String);
-  }
-
-  public interface Key extends java.io.Serializable {
-    method public String getAlgorithm();
-    method public byte[] getEncoded();
-    method public String getFormat();
-    field public static final long serialVersionUID = 6603384152749567654L; // 0x5ba3eee69414eea6L
-  }
-
-  public class KeyException extends java.security.GeneralSecurityException {
-    ctor public KeyException();
-    ctor public KeyException(String);
-    ctor public KeyException(String, Throwable);
-    ctor public KeyException(Throwable);
-  }
-
-  public class KeyFactory {
-    ctor protected KeyFactory(java.security.KeyFactorySpi, java.security.Provider, String);
-    method public final java.security.PrivateKey generatePrivate(java.security.spec.KeySpec) throws java.security.spec.InvalidKeySpecException;
-    method public final java.security.PublicKey generatePublic(java.security.spec.KeySpec) throws java.security.spec.InvalidKeySpecException;
-    method public final String getAlgorithm();
-    method public static java.security.KeyFactory getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static java.security.KeyFactory getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static java.security.KeyFactory getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final <T extends java.security.spec.KeySpec> T getKeySpec(java.security.Key, Class<T>) throws java.security.spec.InvalidKeySpecException;
-    method public final java.security.Provider getProvider();
-    method public final java.security.Key translateKey(java.security.Key) throws java.security.InvalidKeyException;
-  }
-
-  public abstract class KeyFactorySpi {
-    ctor public KeyFactorySpi();
-    method protected abstract java.security.PrivateKey engineGeneratePrivate(java.security.spec.KeySpec) throws java.security.spec.InvalidKeySpecException;
-    method protected abstract java.security.PublicKey engineGeneratePublic(java.security.spec.KeySpec) throws java.security.spec.InvalidKeySpecException;
-    method protected abstract <T extends java.security.spec.KeySpec> T engineGetKeySpec(java.security.Key, Class<T>) throws java.security.spec.InvalidKeySpecException;
-    method protected abstract java.security.Key engineTranslateKey(java.security.Key) throws java.security.InvalidKeyException;
-  }
-
-  public class KeyManagementException extends java.security.KeyException {
-    ctor public KeyManagementException();
-    ctor public KeyManagementException(String);
-    ctor public KeyManagementException(String, Throwable);
-    ctor public KeyManagementException(Throwable);
-  }
-
-  public final class KeyPair implements java.io.Serializable {
-    ctor public KeyPair(java.security.PublicKey, java.security.PrivateKey);
-    method public java.security.PrivateKey getPrivate();
-    method public java.security.PublicKey getPublic();
-  }
-
-  public abstract class KeyPairGenerator extends java.security.KeyPairGeneratorSpi {
-    ctor protected KeyPairGenerator(String);
-    method public final java.security.KeyPair genKeyPair();
-    method public java.security.KeyPair generateKeyPair();
-    method public String getAlgorithm();
-    method public static java.security.KeyPairGenerator getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static java.security.KeyPairGenerator getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static java.security.KeyPairGenerator getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final java.security.Provider getProvider();
-    method public void initialize(int);
-    method public void initialize(int, java.security.SecureRandom);
-    method public void initialize(java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException;
-  }
-
-  public abstract class KeyPairGeneratorSpi {
-    ctor public KeyPairGeneratorSpi();
-    method public abstract java.security.KeyPair generateKeyPair();
-    method public abstract void initialize(int, java.security.SecureRandom);
-    method public void initialize(java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException;
-  }
-
-  public class KeyRep implements java.io.Serializable {
-    ctor public KeyRep(java.security.KeyRep.Type, String, String, byte[]);
-    method protected Object readResolve() throws java.io.ObjectStreamException;
-  }
-
-  public enum KeyRep.Type {
-    enum_constant public static final java.security.KeyRep.Type PRIVATE;
-    enum_constant public static final java.security.KeyRep.Type PUBLIC;
-    enum_constant public static final java.security.KeyRep.Type SECRET;
-  }
-
-  public class KeyStore {
-    ctor protected KeyStore(java.security.KeyStoreSpi, java.security.Provider, String);
-    method public final java.util.Enumeration<java.lang.String> aliases() throws java.security.KeyStoreException;
-    method public final boolean containsAlias(String) throws java.security.KeyStoreException;
-    method public final void deleteEntry(String) throws java.security.KeyStoreException;
-    method public final boolean entryInstanceOf(String, Class<? extends java.security.KeyStore.Entry>) throws java.security.KeyStoreException;
-    method public final java.security.cert.Certificate getCertificate(String) throws java.security.KeyStoreException;
-    method public final String getCertificateAlias(java.security.cert.Certificate) throws java.security.KeyStoreException;
-    method public final java.security.cert.Certificate[] getCertificateChain(String) throws java.security.KeyStoreException;
-    method public final java.util.Date getCreationDate(String) throws java.security.KeyStoreException;
-    method public static final String getDefaultType();
-    method public final java.security.KeyStore.Entry getEntry(String, java.security.KeyStore.ProtectionParameter) throws java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableEntryException;
-    method public static java.security.KeyStore getInstance(String) throws java.security.KeyStoreException;
-    method public static java.security.KeyStore getInstance(String, String) throws java.security.KeyStoreException, java.security.NoSuchProviderException;
-    method public static java.security.KeyStore getInstance(String, java.security.Provider) throws java.security.KeyStoreException;
-    method public final java.security.Key getKey(String, char[]) throws java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
-    method public final java.security.Provider getProvider();
-    method public final String getType();
-    method public final boolean isCertificateEntry(String) throws java.security.KeyStoreException;
-    method public final boolean isKeyEntry(String) throws java.security.KeyStoreException;
-    method public final void load(java.io.InputStream, char[]) throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException;
-    method public final void load(java.security.KeyStore.LoadStoreParameter) throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException;
-    method public final void setCertificateEntry(String, java.security.cert.Certificate) throws java.security.KeyStoreException;
-    method public final void setEntry(String, java.security.KeyStore.Entry, java.security.KeyStore.ProtectionParameter) throws java.security.KeyStoreException;
-    method public final void setKeyEntry(String, java.security.Key, char[], java.security.cert.Certificate[]) throws java.security.KeyStoreException;
-    method public final void setKeyEntry(String, byte[], java.security.cert.Certificate[]) throws java.security.KeyStoreException;
-    method public final int size() throws java.security.KeyStoreException;
-    method public final void store(java.io.OutputStream, char[]) throws java.security.cert.CertificateException, java.io.IOException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException;
-    method public final void store(java.security.KeyStore.LoadStoreParameter) throws java.security.cert.CertificateException, java.io.IOException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException;
-  }
-
-  public abstract static class KeyStore.Builder {
-    ctor protected KeyStore.Builder();
-    method public abstract java.security.KeyStore getKeyStore() throws java.security.KeyStoreException;
-    method public abstract java.security.KeyStore.ProtectionParameter getProtectionParameter(String) throws java.security.KeyStoreException;
-    method public static java.security.KeyStore.Builder newInstance(java.security.KeyStore, java.security.KeyStore.ProtectionParameter);
-    method public static java.security.KeyStore.Builder newInstance(String, java.security.Provider, java.io.File, java.security.KeyStore.ProtectionParameter);
-    method public static java.security.KeyStore.Builder newInstance(String, java.security.Provider, java.security.KeyStore.ProtectionParameter);
-  }
-
-  public static class KeyStore.CallbackHandlerProtection implements java.security.KeyStore.ProtectionParameter {
-    ctor public KeyStore.CallbackHandlerProtection(javax.security.auth.callback.CallbackHandler);
-    method public javax.security.auth.callback.CallbackHandler getCallbackHandler();
-  }
-
-  public static interface KeyStore.Entry {
-    method public default java.util.Set<java.security.KeyStore.Entry.Attribute> getAttributes();
-  }
-
-  public static interface KeyStore.Entry.Attribute {
-    method public String getName();
-    method public String getValue();
-  }
-
-  public static interface KeyStore.LoadStoreParameter {
-    method public java.security.KeyStore.ProtectionParameter getProtectionParameter();
-  }
-
-  public static class KeyStore.PasswordProtection implements javax.security.auth.Destroyable java.security.KeyStore.ProtectionParameter {
-    ctor public KeyStore.PasswordProtection(char[]);
-    ctor public KeyStore.PasswordProtection(char[], String, java.security.spec.AlgorithmParameterSpec);
-    method public char[] getPassword();
-    method public String getProtectionAlgorithm();
-    method public java.security.spec.AlgorithmParameterSpec getProtectionParameters();
-  }
-
-  public static final class KeyStore.PrivateKeyEntry implements java.security.KeyStore.Entry {
-    ctor public KeyStore.PrivateKeyEntry(java.security.PrivateKey, java.security.cert.Certificate[]);
-    ctor public KeyStore.PrivateKeyEntry(java.security.PrivateKey, java.security.cert.Certificate[], java.util.Set<java.security.KeyStore.Entry.Attribute>);
-    method public java.security.cert.Certificate getCertificate();
-    method public java.security.cert.Certificate[] getCertificateChain();
-    method public java.security.PrivateKey getPrivateKey();
-  }
-
-  public static interface KeyStore.ProtectionParameter {
-  }
-
-  public static final class KeyStore.SecretKeyEntry implements java.security.KeyStore.Entry {
-    ctor public KeyStore.SecretKeyEntry(javax.crypto.SecretKey);
-    ctor public KeyStore.SecretKeyEntry(javax.crypto.SecretKey, java.util.Set<java.security.KeyStore.Entry.Attribute>);
-    method public javax.crypto.SecretKey getSecretKey();
-  }
-
-  public static final class KeyStore.TrustedCertificateEntry implements java.security.KeyStore.Entry {
-    ctor public KeyStore.TrustedCertificateEntry(java.security.cert.Certificate);
-    ctor public KeyStore.TrustedCertificateEntry(java.security.cert.Certificate, java.util.Set<java.security.KeyStore.Entry.Attribute>);
-    method public java.security.cert.Certificate getTrustedCertificate();
-  }
-
-  public class KeyStoreException extends java.security.GeneralSecurityException {
-    ctor public KeyStoreException();
-    ctor public KeyStoreException(String);
-    ctor public KeyStoreException(String, Throwable);
-    ctor public KeyStoreException(Throwable);
-  }
-
-  public abstract class KeyStoreSpi {
-    ctor public KeyStoreSpi();
-    method public abstract java.util.Enumeration<java.lang.String> engineAliases();
-    method public abstract boolean engineContainsAlias(String);
-    method public abstract void engineDeleteEntry(String) throws java.security.KeyStoreException;
-    method public boolean engineEntryInstanceOf(String, Class<? extends java.security.KeyStore.Entry>);
-    method public abstract java.security.cert.Certificate engineGetCertificate(String);
-    method public abstract String engineGetCertificateAlias(java.security.cert.Certificate);
-    method public abstract java.security.cert.Certificate[] engineGetCertificateChain(String);
-    method public abstract java.util.Date engineGetCreationDate(String);
-    method public java.security.KeyStore.Entry engineGetEntry(String, java.security.KeyStore.ProtectionParameter) throws java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableEntryException;
-    method public abstract java.security.Key engineGetKey(String, char[]) throws java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
-    method public abstract boolean engineIsCertificateEntry(String);
-    method public abstract boolean engineIsKeyEntry(String);
-    method public abstract void engineLoad(java.io.InputStream, char[]) throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException;
-    method public void engineLoad(java.security.KeyStore.LoadStoreParameter) throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException;
-    method public abstract void engineSetCertificateEntry(String, java.security.cert.Certificate) throws java.security.KeyStoreException;
-    method public void engineSetEntry(String, java.security.KeyStore.Entry, java.security.KeyStore.ProtectionParameter) throws java.security.KeyStoreException;
-    method public abstract void engineSetKeyEntry(String, java.security.Key, char[], java.security.cert.Certificate[]) throws java.security.KeyStoreException;
-    method public abstract void engineSetKeyEntry(String, byte[], java.security.cert.Certificate[]) throws java.security.KeyStoreException;
-    method public abstract int engineSize();
-    method public abstract void engineStore(java.io.OutputStream, char[]) throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException;
-    method public void engineStore(java.security.KeyStore.LoadStoreParameter) throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException;
-  }
-
-  public abstract class MessageDigest extends java.security.MessageDigestSpi {
-    ctor protected MessageDigest(@NonNull String);
-    method @NonNull public byte[] digest();
-    method public int digest(@NonNull byte[], int, int) throws java.security.DigestException;
-    method @NonNull public byte[] digest(@NonNull byte[]);
-    method @NonNull public final String getAlgorithm();
-    method public final int getDigestLength();
-    method @NonNull public static java.security.MessageDigest getInstance(@NonNull String) throws java.security.NoSuchAlgorithmException;
-    method @NonNull public static java.security.MessageDigest getInstance(@NonNull String, @NonNull String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method @NonNull public static java.security.MessageDigest getInstance(@NonNull String, @NonNull java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method @NonNull public final java.security.Provider getProvider();
-    method public static boolean isEqual(@Nullable byte[], @Nullable byte[]);
-    method public void reset();
-    method public void update(byte);
-    method public void update(@NonNull byte[], int, int);
-    method public void update(@NonNull byte[]);
-    method public final void update(@NonNull java.nio.ByteBuffer);
-  }
-
-  public abstract class MessageDigestSpi {
-    ctor public MessageDigestSpi();
-    method public Object clone() throws java.lang.CloneNotSupportedException;
-    method protected abstract byte[] engineDigest();
-    method protected int engineDigest(byte[], int, int) throws java.security.DigestException;
-    method protected int engineGetDigestLength();
-    method protected abstract void engineReset();
-    method protected abstract void engineUpdate(byte);
-    method protected abstract void engineUpdate(byte[], int, int);
-    method protected void engineUpdate(java.nio.ByteBuffer);
-  }
-
-  public class NoSuchAlgorithmException extends java.security.GeneralSecurityException {
-    ctor public NoSuchAlgorithmException();
-    ctor public NoSuchAlgorithmException(String);
-    ctor public NoSuchAlgorithmException(String, Throwable);
-    ctor public NoSuchAlgorithmException(Throwable);
-  }
-
-  public class NoSuchProviderException extends java.security.GeneralSecurityException {
-    ctor public NoSuchProviderException();
-    ctor public NoSuchProviderException(String);
-  }
-
-  public final class PKCS12Attribute implements java.security.KeyStore.Entry.Attribute {
-    ctor public PKCS12Attribute(String, String);
-    ctor public PKCS12Attribute(byte[]);
-    method public byte[] getEncoded();
-    method public String getName();
-    method public String getValue();
-  }
-
-  public abstract class Permission implements java.security.Guard java.io.Serializable {
-    ctor public Permission(String);
-    method public void checkGuard(Object) throws java.lang.SecurityException;
-    method public abstract String getActions();
-    method public final String getName();
-    method public abstract boolean implies(java.security.Permission);
-    method public java.security.PermissionCollection newPermissionCollection();
-  }
-
-  public abstract class PermissionCollection implements java.io.Serializable {
-    ctor public PermissionCollection();
-    method public abstract void add(java.security.Permission);
-    method public abstract java.util.Enumeration<java.security.Permission> elements();
-    method public abstract boolean implies(java.security.Permission);
-    method public boolean isReadOnly();
-    method public void setReadOnly();
-  }
-
-  public final class Permissions extends java.security.PermissionCollection implements java.io.Serializable {
-    ctor public Permissions();
-    method public void add(java.security.Permission);
-    method public java.util.Enumeration<java.security.Permission> elements();
-    method public boolean implies(java.security.Permission);
-  }
-
-  public abstract class Policy {
-    ctor public Policy();
-    method public static java.security.Policy getInstance(String, java.security.Policy.Parameters) throws java.security.NoSuchAlgorithmException;
-    method public static java.security.Policy getInstance(String, java.security.Policy.Parameters, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static java.security.Policy getInstance(String, java.security.Policy.Parameters, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public java.security.Policy.Parameters getParameters();
-    method public java.security.PermissionCollection getPermissions(java.security.CodeSource);
-    method public java.security.PermissionCollection getPermissions(java.security.ProtectionDomain);
-    method public static java.security.Policy getPolicy();
-    method public java.security.Provider getProvider();
-    method public String getType();
-    method public boolean implies(java.security.ProtectionDomain, java.security.Permission);
-    method public void refresh();
-    method public static void setPolicy(java.security.Policy);
-    field public static final java.security.PermissionCollection UNSUPPORTED_EMPTY_COLLECTION;
-  }
-
-  public static interface Policy.Parameters {
-  }
-
-  public abstract class PolicySpi {
-    ctor public PolicySpi();
-    method protected java.security.PermissionCollection engineGetPermissions(java.security.CodeSource);
-    method protected java.security.PermissionCollection engineGetPermissions(java.security.ProtectionDomain);
-    method protected abstract boolean engineImplies(java.security.ProtectionDomain, java.security.Permission);
-    method protected void engineRefresh();
-  }
-
-  public interface Principal {
-    method public boolean equals(Object);
-    method public String getName();
-    method public int hashCode();
-    method public default boolean implies(javax.security.auth.Subject);
-    method public String toString();
-  }
-
-  public interface PrivateKey extends java.security.Key javax.security.auth.Destroyable {
-    field public static final long serialVersionUID = 6034044314589513430L; // 0x53bd3b559a12c6d6L
-  }
-
-  public interface PrivilegedAction<T> {
-    method public T run();
-  }
-
-  public class PrivilegedActionException extends java.lang.Exception {
-    ctor public PrivilegedActionException(Exception);
-    method public Exception getException();
-  }
-
-  public interface PrivilegedExceptionAction<T> {
-    method public T run() throws java.lang.Exception;
-  }
-
-  public class ProtectionDomain {
-    ctor public ProtectionDomain(java.security.CodeSource, java.security.PermissionCollection);
-    ctor public ProtectionDomain(java.security.CodeSource, java.security.PermissionCollection, ClassLoader, java.security.Principal[]);
-    method public final ClassLoader getClassLoader();
-    method public final java.security.CodeSource getCodeSource();
-    method public final java.security.PermissionCollection getPermissions();
-    method public final java.security.Principal[] getPrincipals();
-    method public boolean implies(java.security.Permission);
-  }
-
-  public abstract class Provider extends java.util.Properties {
-    ctor protected Provider(String, double, String);
-    method public Object compute(Object, java.util.function.BiFunction<? super java.lang.Object,? super java.lang.Object,?>);
-    method public Object computeIfAbsent(Object, java.util.function.Function<? super java.lang.Object,?>);
-    method public Object computeIfPresent(Object, java.util.function.BiFunction<? super java.lang.Object,? super java.lang.Object,?>);
-    method public java.util.Enumeration<java.lang.Object> elements();
-    method public java.util.Set<java.util.Map.Entry<java.lang.Object,java.lang.Object>> entrySet();
-    method public void forEach(java.util.function.BiConsumer<? super java.lang.Object,? super java.lang.Object>);
-    method public Object get(Object);
-    method public String getInfo();
-    method public String getName();
-    method public Object getOrDefault(Object, Object);
-    method public java.security.Provider.Service getService(String, String);
-    method public java.util.Set<java.security.Provider.Service> getServices();
-    method public double getVersion();
-    method public java.util.Set<java.lang.Object> keySet();
-    method public java.util.Enumeration<java.lang.Object> keys();
-    method public Object merge(Object, Object, java.util.function.BiFunction<? super java.lang.Object,? super java.lang.Object,?>);
-    method public Object put(Object, Object);
-    method public void putAll(java.util.Map<?,?>);
-    method public Object putIfAbsent(Object, Object);
-    method protected void putService(java.security.Provider.Service);
-    method public Object remove(Object);
-    method protected void removeService(java.security.Provider.Service);
-    method public boolean replace(Object, Object, Object);
-    method public Object replace(Object, Object);
-    method public void replaceAll(java.util.function.BiFunction<? super java.lang.Object,? super java.lang.Object,?>);
-    method public java.util.Collection<java.lang.Object> values();
-  }
-
-  public static class Provider.Service {
-    ctor public Provider.Service(java.security.Provider, String, String, String, java.util.List<java.lang.String>, java.util.Map<java.lang.String,java.lang.String>);
-    method public final String getAlgorithm();
-    method public final String getAttribute(String);
-    method public final String getClassName();
-    method public final java.security.Provider getProvider();
-    method public final String getType();
-    method public Object newInstance(Object) throws java.security.NoSuchAlgorithmException;
-    method public boolean supportsParameter(Object);
-  }
-
-  public class ProviderException extends java.lang.RuntimeException {
-    ctor public ProviderException();
-    ctor public ProviderException(String);
-    ctor public ProviderException(String, Throwable);
-    ctor public ProviderException(Throwable);
-  }
-
-  public interface PublicKey extends java.security.Key {
-    field public static final long serialVersionUID = 7187392471159151072L; // 0x63bebf5f40c219e0L
-  }
-
-  public class SecureClassLoader extends java.lang.ClassLoader {
-    ctor protected SecureClassLoader(ClassLoader);
-    ctor protected SecureClassLoader();
-    method protected final Class<?> defineClass(String, byte[], int, int, java.security.CodeSource);
-    method protected final Class<?> defineClass(String, java.nio.ByteBuffer, java.security.CodeSource);
-    method protected java.security.PermissionCollection getPermissions(java.security.CodeSource);
-  }
-
-  public class SecureRandom extends java.util.Random {
-    ctor public SecureRandom();
-    ctor public SecureRandom(byte[]);
-    ctor protected SecureRandom(java.security.SecureRandomSpi, java.security.Provider);
-    method public byte[] generateSeed(int);
-    method public String getAlgorithm();
-    method public static java.security.SecureRandom getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static java.security.SecureRandom getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static java.security.SecureRandom getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public static java.security.SecureRandom getInstanceStrong() throws java.security.NoSuchAlgorithmException;
-    method public final java.security.Provider getProvider();
-    method public static byte[] getSeed(int);
-    method protected final int next(int);
-    method public void setSeed(byte[]);
-  }
-
-  public abstract class SecureRandomSpi implements java.io.Serializable {
-    ctor public SecureRandomSpi();
-    method protected abstract byte[] engineGenerateSeed(int);
-    method protected abstract void engineNextBytes(byte[]);
-    method protected abstract void engineSetSeed(byte[]);
-  }
-
-  public final class Security {
-    method public static int addProvider(java.security.Provider);
-    method @Deprecated public static String getAlgorithmProperty(String, String);
-    method public static java.util.Set<java.lang.String> getAlgorithms(String);
-    method public static String getProperty(String);
-    method public static java.security.Provider getProvider(String);
-    method public static java.security.Provider[] getProviders();
-    method public static java.security.Provider[] getProviders(String);
-    method public static java.security.Provider[] getProviders(java.util.Map<java.lang.String,java.lang.String>);
-    method public static int insertProviderAt(java.security.Provider, int);
-    method public static void removeProvider(String);
-    method public static void setProperty(String, String);
-  }
-
-  public final class SecurityPermission extends java.security.BasicPermission {
-    ctor public SecurityPermission(String);
-    ctor public SecurityPermission(String, String);
-  }
-
-  public abstract class Signature extends java.security.SignatureSpi {
-    ctor protected Signature(String);
-    method public final String getAlgorithm();
-    method public static java.security.Signature getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static java.security.Signature getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static java.security.Signature getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method @Deprecated public final Object getParameter(String) throws java.security.InvalidParameterException;
-    method public final java.security.AlgorithmParameters getParameters();
-    method public final java.security.Provider getProvider();
-    method public final void initSign(java.security.PrivateKey) throws java.security.InvalidKeyException;
-    method public final void initSign(java.security.PrivateKey, java.security.SecureRandom) throws java.security.InvalidKeyException;
-    method public final void initVerify(java.security.PublicKey) throws java.security.InvalidKeyException;
-    method public final void initVerify(java.security.cert.Certificate) throws java.security.InvalidKeyException;
-    method @Deprecated public final void setParameter(String, Object) throws java.security.InvalidParameterException;
-    method public final void setParameter(java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException;
-    method public final byte[] sign() throws java.security.SignatureException;
-    method public final int sign(byte[], int, int) throws java.security.SignatureException;
-    method public final void update(byte) throws java.security.SignatureException;
-    method public final void update(byte[]) throws java.security.SignatureException;
-    method public final void update(byte[], int, int) throws java.security.SignatureException;
-    method public final void update(java.nio.ByteBuffer) throws java.security.SignatureException;
-    method public final boolean verify(byte[]) throws java.security.SignatureException;
-    method public final boolean verify(byte[], int, int) throws java.security.SignatureException;
-    field protected static final int SIGN = 2; // 0x2
-    field protected static final int UNINITIALIZED = 0; // 0x0
-    field protected static final int VERIFY = 3; // 0x3
-    field protected int state;
-  }
-
-  public class SignatureException extends java.security.GeneralSecurityException {
-    ctor public SignatureException();
-    ctor public SignatureException(String);
-    ctor public SignatureException(String, Throwable);
-    ctor public SignatureException(Throwable);
-  }
-
-  public abstract class SignatureSpi {
-    ctor public SignatureSpi();
-    method public Object clone() throws java.lang.CloneNotSupportedException;
-    method @Deprecated protected abstract Object engineGetParameter(String) throws java.security.InvalidParameterException;
-    method protected java.security.AlgorithmParameters engineGetParameters();
-    method protected abstract void engineInitSign(java.security.PrivateKey) throws java.security.InvalidKeyException;
-    method protected void engineInitSign(java.security.PrivateKey, java.security.SecureRandom) throws java.security.InvalidKeyException;
-    method protected abstract void engineInitVerify(java.security.PublicKey) throws java.security.InvalidKeyException;
-    method @Deprecated protected abstract void engineSetParameter(String, Object) throws java.security.InvalidParameterException;
-    method protected void engineSetParameter(java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException;
-    method protected abstract byte[] engineSign() throws java.security.SignatureException;
-    method protected int engineSign(byte[], int, int) throws java.security.SignatureException;
-    method protected abstract void engineUpdate(byte) throws java.security.SignatureException;
-    method protected abstract void engineUpdate(byte[], int, int) throws java.security.SignatureException;
-    method protected void engineUpdate(java.nio.ByteBuffer);
-    method protected abstract boolean engineVerify(byte[]) throws java.security.SignatureException;
-    method protected boolean engineVerify(byte[], int, int) throws java.security.SignatureException;
-    field protected java.security.SecureRandom appRandom;
-  }
-
-  public final class SignedObject implements java.io.Serializable {
-    ctor public SignedObject(java.io.Serializable, java.security.PrivateKey, java.security.Signature) throws java.io.IOException, java.security.InvalidKeyException, java.security.SignatureException;
-    method public String getAlgorithm();
-    method public Object getObject() throws java.lang.ClassNotFoundException, java.io.IOException;
-    method public byte[] getSignature();
-    method public boolean verify(java.security.PublicKey, java.security.Signature) throws java.security.InvalidKeyException, java.security.SignatureException;
-  }
-
-  @Deprecated public abstract class Signer extends java.security.Identity {
-    ctor @Deprecated protected Signer();
-    ctor @Deprecated public Signer(String);
-    ctor @Deprecated public Signer(String, java.security.IdentityScope) throws java.security.KeyManagementException;
-    method @Deprecated public java.security.PrivateKey getPrivateKey();
-    method @Deprecated public final void setKeyPair(java.security.KeyPair) throws java.security.InvalidParameterException, java.security.KeyException;
-  }
-
-  public final class Timestamp implements java.io.Serializable {
-    ctor public Timestamp(java.util.Date, java.security.cert.CertPath);
-    method public java.security.cert.CertPath getSignerCertPath();
-    method public java.util.Date getTimestamp();
-  }
-
-  public class UnrecoverableEntryException extends java.security.GeneralSecurityException {
-    ctor public UnrecoverableEntryException();
-    ctor public UnrecoverableEntryException(String);
-  }
-
-  public class UnrecoverableKeyException extends java.security.UnrecoverableEntryException {
-    ctor public UnrecoverableKeyException();
-    ctor public UnrecoverableKeyException(String);
-  }
-
-  public final class UnresolvedPermission extends java.security.Permission implements java.io.Serializable {
-    ctor public UnresolvedPermission(String, String, String, java.security.cert.Certificate[]);
-    method public String getActions();
-    method public String getUnresolvedActions();
-    method public java.security.cert.Certificate[] getUnresolvedCerts();
-    method public String getUnresolvedName();
-    method public String getUnresolvedType();
-    method public boolean implies(java.security.Permission);
-  }
-
-}
-
-package java.security.acl {
-
-  public interface Acl extends java.security.acl.Owner {
-    method public boolean addEntry(java.security.Principal, java.security.acl.AclEntry) throws java.security.acl.NotOwnerException;
-    method public boolean checkPermission(java.security.Principal, java.security.acl.Permission);
-    method public java.util.Enumeration<java.security.acl.AclEntry> entries();
-    method public String getName();
-    method public java.util.Enumeration<java.security.acl.Permission> getPermissions(java.security.Principal);
-    method public boolean removeEntry(java.security.Principal, java.security.acl.AclEntry) throws java.security.acl.NotOwnerException;
-    method public void setName(java.security.Principal, String) throws java.security.acl.NotOwnerException;
-    method public String toString();
-  }
-
-  public interface AclEntry extends java.lang.Cloneable {
-    method public boolean addPermission(java.security.acl.Permission);
-    method public boolean checkPermission(java.security.acl.Permission);
-    method public Object clone();
-    method public java.security.Principal getPrincipal();
-    method public boolean isNegative();
-    method public java.util.Enumeration<java.security.acl.Permission> permissions();
-    method public boolean removePermission(java.security.acl.Permission);
-    method public void setNegativePermissions();
-    method public boolean setPrincipal(java.security.Principal);
-    method public String toString();
-  }
-
-  public class AclNotFoundException extends java.lang.Exception {
-    ctor public AclNotFoundException();
-  }
-
-  public interface Group extends java.security.Principal {
-    method public boolean addMember(java.security.Principal);
-    method public boolean isMember(java.security.Principal);
-    method public java.util.Enumeration<? extends java.security.Principal> members();
-    method public boolean removeMember(java.security.Principal);
-  }
-
-  public class LastOwnerException extends java.lang.Exception {
-    ctor public LastOwnerException();
-  }
-
-  public class NotOwnerException extends java.lang.Exception {
-    ctor public NotOwnerException();
-  }
-
-  public interface Owner {
-    method public boolean addOwner(java.security.Principal, java.security.Principal) throws java.security.acl.NotOwnerException;
-    method public boolean deleteOwner(java.security.Principal, java.security.Principal) throws java.security.acl.LastOwnerException, java.security.acl.NotOwnerException;
-    method public boolean isOwner(java.security.Principal);
-  }
-
-  public interface Permission {
-  }
-
-}
-
-package java.security.cert {
-
-  public abstract class CRL {
-    ctor protected CRL(String);
-    method public final String getType();
-    method public abstract boolean isRevoked(java.security.cert.Certificate);
-    method public abstract String toString();
-  }
-
-  public class CRLException extends java.security.GeneralSecurityException {
-    ctor public CRLException();
-    ctor public CRLException(String);
-    ctor public CRLException(String, Throwable);
-    ctor public CRLException(Throwable);
-  }
-
-  public enum CRLReason {
-    enum_constant public static final java.security.cert.CRLReason AA_COMPROMISE;
-    enum_constant public static final java.security.cert.CRLReason AFFILIATION_CHANGED;
-    enum_constant public static final java.security.cert.CRLReason CA_COMPROMISE;
-    enum_constant public static final java.security.cert.CRLReason CERTIFICATE_HOLD;
-    enum_constant public static final java.security.cert.CRLReason CESSATION_OF_OPERATION;
-    enum_constant public static final java.security.cert.CRLReason KEY_COMPROMISE;
-    enum_constant public static final java.security.cert.CRLReason PRIVILEGE_WITHDRAWN;
-    enum_constant public static final java.security.cert.CRLReason REMOVE_FROM_CRL;
-    enum_constant public static final java.security.cert.CRLReason SUPERSEDED;
-    enum_constant public static final java.security.cert.CRLReason UNSPECIFIED;
-    enum_constant public static final java.security.cert.CRLReason UNUSED;
-  }
-
-  public interface CRLSelector extends java.lang.Cloneable {
-    method public Object clone();
-    method public boolean match(java.security.cert.CRL);
-  }
-
-  public abstract class CertPath implements java.io.Serializable {
-    ctor protected CertPath(String);
-    method public abstract java.util.List<? extends java.security.cert.Certificate> getCertificates();
-    method public abstract byte[] getEncoded() throws java.security.cert.CertificateEncodingException;
-    method public abstract byte[] getEncoded(String) throws java.security.cert.CertificateEncodingException;
-    method public abstract java.util.Iterator<java.lang.String> getEncodings();
-    method public String getType();
-    method protected Object writeReplace() throws java.io.ObjectStreamException;
-  }
-
-  protected static class CertPath.CertPathRep implements java.io.Serializable {
-    ctor protected CertPath.CertPathRep(String, byte[]);
-    method protected Object readResolve() throws java.io.ObjectStreamException;
-  }
-
-  public class CertPathBuilder {
-    ctor protected CertPathBuilder(java.security.cert.CertPathBuilderSpi, java.security.Provider, String);
-    method public final java.security.cert.CertPathBuilderResult build(java.security.cert.CertPathParameters) throws java.security.cert.CertPathBuilderException, java.security.InvalidAlgorithmParameterException;
-    method public final String getAlgorithm();
-    method public static final String getDefaultType();
-    method public static java.security.cert.CertPathBuilder getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static java.security.cert.CertPathBuilder getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static java.security.cert.CertPathBuilder getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final java.security.Provider getProvider();
-    method public final java.security.cert.CertPathChecker getRevocationChecker();
-  }
-
-  public class CertPathBuilderException extends java.security.GeneralSecurityException {
-    ctor public CertPathBuilderException();
-    ctor public CertPathBuilderException(String);
-    ctor public CertPathBuilderException(Throwable);
-    ctor public CertPathBuilderException(String, Throwable);
-  }
-
-  public interface CertPathBuilderResult extends java.lang.Cloneable {
-    method public Object clone();
-    method public java.security.cert.CertPath getCertPath();
-  }
-
-  public abstract class CertPathBuilderSpi {
-    ctor public CertPathBuilderSpi();
-    method public abstract java.security.cert.CertPathBuilderResult engineBuild(java.security.cert.CertPathParameters) throws java.security.cert.CertPathBuilderException, java.security.InvalidAlgorithmParameterException;
-    method public java.security.cert.CertPathChecker engineGetRevocationChecker();
-  }
-
-  public interface CertPathChecker {
-    method public void check(java.security.cert.Certificate) throws java.security.cert.CertPathValidatorException;
-    method public void init(boolean) throws java.security.cert.CertPathValidatorException;
-    method public boolean isForwardCheckingSupported();
-  }
-
-  public interface CertPathParameters extends java.lang.Cloneable {
-    method public Object clone();
-  }
-
-  public class CertPathValidator {
-    ctor protected CertPathValidator(java.security.cert.CertPathValidatorSpi, java.security.Provider, String);
-    method public final String getAlgorithm();
-    method public static final String getDefaultType();
-    method public static java.security.cert.CertPathValidator getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static java.security.cert.CertPathValidator getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static java.security.cert.CertPathValidator getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final java.security.Provider getProvider();
-    method public final java.security.cert.CertPathChecker getRevocationChecker();
-    method public final java.security.cert.CertPathValidatorResult validate(java.security.cert.CertPath, java.security.cert.CertPathParameters) throws java.security.cert.CertPathValidatorException, java.security.InvalidAlgorithmParameterException;
-  }
-
-  public class CertPathValidatorException extends java.security.GeneralSecurityException {
-    ctor public CertPathValidatorException();
-    ctor public CertPathValidatorException(String);
-    ctor public CertPathValidatorException(Throwable);
-    ctor public CertPathValidatorException(String, Throwable);
-    ctor public CertPathValidatorException(String, Throwable, java.security.cert.CertPath, int);
-    ctor public CertPathValidatorException(String, Throwable, java.security.cert.CertPath, int, java.security.cert.CertPathValidatorException.Reason);
-    method public java.security.cert.CertPath getCertPath();
-    method public int getIndex();
-    method public java.security.cert.CertPathValidatorException.Reason getReason();
-  }
-
-  public enum CertPathValidatorException.BasicReason implements java.security.cert.CertPathValidatorException.Reason {
-    enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason ALGORITHM_CONSTRAINED;
-    enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason EXPIRED;
-    enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason INVALID_SIGNATURE;
-    enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason NOT_YET_VALID;
-    enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason REVOKED;
-    enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason UNDETERMINED_REVOCATION_STATUS;
-    enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason UNSPECIFIED;
-  }
-
-  public static interface CertPathValidatorException.Reason extends java.io.Serializable {
-  }
-
-  public interface CertPathValidatorResult extends java.lang.Cloneable {
-    method public Object clone();
-  }
-
-  public abstract class CertPathValidatorSpi {
-    ctor public CertPathValidatorSpi();
-    method public java.security.cert.CertPathChecker engineGetRevocationChecker();
-    method public abstract java.security.cert.CertPathValidatorResult engineValidate(java.security.cert.CertPath, java.security.cert.CertPathParameters) throws java.security.cert.CertPathValidatorException, java.security.InvalidAlgorithmParameterException;
-  }
-
-  public interface CertSelector extends java.lang.Cloneable {
-    method public Object clone();
-    method public boolean match(java.security.cert.Certificate);
-  }
-
-  public class CertStore {
-    ctor protected CertStore(java.security.cert.CertStoreSpi, java.security.Provider, String, java.security.cert.CertStoreParameters);
-    method public final java.util.Collection<? extends java.security.cert.CRL> getCRLs(java.security.cert.CRLSelector) throws java.security.cert.CertStoreException;
-    method public final java.security.cert.CertStoreParameters getCertStoreParameters();
-    method public final java.util.Collection<? extends java.security.cert.Certificate> getCertificates(java.security.cert.CertSelector) throws java.security.cert.CertStoreException;
-    method public static final String getDefaultType();
-    method public static java.security.cert.CertStore getInstance(String, java.security.cert.CertStoreParameters) throws java.security.InvalidAlgorithmParameterException, java.security.NoSuchAlgorithmException;
-    method public static java.security.cert.CertStore getInstance(String, java.security.cert.CertStoreParameters, String) throws java.security.InvalidAlgorithmParameterException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static java.security.cert.CertStore getInstance(String, java.security.cert.CertStoreParameters, java.security.Provider) throws java.security.InvalidAlgorithmParameterException, java.security.NoSuchAlgorithmException;
-    method public final java.security.Provider getProvider();
-    method public final String getType();
-  }
-
-  public class CertStoreException extends java.security.GeneralSecurityException {
-    ctor public CertStoreException();
-    ctor public CertStoreException(String);
-    ctor public CertStoreException(Throwable);
-    ctor public CertStoreException(String, Throwable);
-  }
-
-  public interface CertStoreParameters extends java.lang.Cloneable {
-    method public Object clone();
-  }
-
-  public abstract class CertStoreSpi {
-    ctor public CertStoreSpi(java.security.cert.CertStoreParameters) throws java.security.InvalidAlgorithmParameterException;
-    method public abstract java.util.Collection<? extends java.security.cert.CRL> engineGetCRLs(java.security.cert.CRLSelector) throws java.security.cert.CertStoreException;
-    method public abstract java.util.Collection<? extends java.security.cert.Certificate> engineGetCertificates(java.security.cert.CertSelector) throws java.security.cert.CertStoreException;
-  }
-
-  public abstract class Certificate implements java.io.Serializable {
-    ctor protected Certificate(String);
-    method public abstract byte[] getEncoded() throws java.security.cert.CertificateEncodingException;
-    method public abstract java.security.PublicKey getPublicKey();
-    method public final String getType();
-    method public abstract String toString();
-    method public abstract void verify(java.security.PublicKey) throws java.security.cert.CertificateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
-    method public abstract void verify(java.security.PublicKey, String) throws java.security.cert.CertificateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
-    method public void verify(java.security.PublicKey, java.security.Provider) throws java.security.cert.CertificateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.SignatureException;
-    method protected Object writeReplace() throws java.io.ObjectStreamException;
-  }
-
-  protected static class Certificate.CertificateRep implements java.io.Serializable {
-    ctor protected Certificate.CertificateRep(String, byte[]);
-    method protected Object readResolve() throws java.io.ObjectStreamException;
-  }
-
-  public class CertificateEncodingException extends java.security.cert.CertificateException {
-    ctor public CertificateEncodingException();
-    ctor public CertificateEncodingException(String);
-    ctor public CertificateEncodingException(String, Throwable);
-    ctor public CertificateEncodingException(Throwable);
-  }
-
-  public class CertificateException extends java.security.GeneralSecurityException {
-    ctor public CertificateException();
-    ctor public CertificateException(String);
-    ctor public CertificateException(String, Throwable);
-    ctor public CertificateException(Throwable);
-  }
-
-  public class CertificateExpiredException extends java.security.cert.CertificateException {
-    ctor public CertificateExpiredException();
-    ctor public CertificateExpiredException(String);
-  }
-
-  public class CertificateFactory {
-    ctor protected CertificateFactory(java.security.cert.CertificateFactorySpi, java.security.Provider, String);
-    method public final java.security.cert.CRL generateCRL(java.io.InputStream) throws java.security.cert.CRLException;
-    method public final java.util.Collection<? extends java.security.cert.CRL> generateCRLs(java.io.InputStream) throws java.security.cert.CRLException;
-    method public final java.security.cert.CertPath generateCertPath(java.io.InputStream) throws java.security.cert.CertificateException;
-    method public final java.security.cert.CertPath generateCertPath(java.io.InputStream, String) throws java.security.cert.CertificateException;
-    method public final java.security.cert.CertPath generateCertPath(java.util.List<? extends java.security.cert.Certificate>) throws java.security.cert.CertificateException;
-    method public final java.security.cert.Certificate generateCertificate(java.io.InputStream) throws java.security.cert.CertificateException;
-    method public final java.util.Collection<? extends java.security.cert.Certificate> generateCertificates(java.io.InputStream) throws java.security.cert.CertificateException;
-    method public final java.util.Iterator<java.lang.String> getCertPathEncodings();
-    method public static final java.security.cert.CertificateFactory getInstance(String) throws java.security.cert.CertificateException;
-    method public static final java.security.cert.CertificateFactory getInstance(String, String) throws java.security.cert.CertificateException, java.security.NoSuchProviderException;
-    method public static final java.security.cert.CertificateFactory getInstance(String, java.security.Provider) throws java.security.cert.CertificateException;
-    method public final java.security.Provider getProvider();
-    method public final String getType();
-  }
-
-  public abstract class CertificateFactorySpi {
-    ctor public CertificateFactorySpi();
-    method public abstract java.security.cert.CRL engineGenerateCRL(java.io.InputStream) throws java.security.cert.CRLException;
-    method public abstract java.util.Collection<? extends java.security.cert.CRL> engineGenerateCRLs(java.io.InputStream) throws java.security.cert.CRLException;
-    method public java.security.cert.CertPath engineGenerateCertPath(java.io.InputStream) throws java.security.cert.CertificateException;
-    method public java.security.cert.CertPath engineGenerateCertPath(java.io.InputStream, String) throws java.security.cert.CertificateException;
-    method public java.security.cert.CertPath engineGenerateCertPath(java.util.List<? extends java.security.cert.Certificate>) throws java.security.cert.CertificateException;
-    method public abstract java.security.cert.Certificate engineGenerateCertificate(java.io.InputStream) throws java.security.cert.CertificateException;
-    method public abstract java.util.Collection<? extends java.security.cert.Certificate> engineGenerateCertificates(java.io.InputStream) throws java.security.cert.CertificateException;
-    method public java.util.Iterator<java.lang.String> engineGetCertPathEncodings();
-  }
-
-  public class CertificateNotYetValidException extends java.security.cert.CertificateException {
-    ctor public CertificateNotYetValidException();
-    ctor public CertificateNotYetValidException(String);
-  }
-
-  public class CertificateParsingException extends java.security.cert.CertificateException {
-    ctor public CertificateParsingException();
-    ctor public CertificateParsingException(String);
-    ctor public CertificateParsingException(String, Throwable);
-    ctor public CertificateParsingException(Throwable);
-  }
-
-  public class CertificateRevokedException extends java.security.cert.CertificateException {
-    ctor public CertificateRevokedException(java.util.Date, java.security.cert.CRLReason, javax.security.auth.x500.X500Principal, java.util.Map<java.lang.String,java.security.cert.Extension>);
-    method public javax.security.auth.x500.X500Principal getAuthorityName();
-    method public java.util.Map<java.lang.String,java.security.cert.Extension> getExtensions();
-    method public java.util.Date getInvalidityDate();
-    method public java.util.Date getRevocationDate();
-    method public java.security.cert.CRLReason getRevocationReason();
-  }
-
-  public class CollectionCertStoreParameters implements java.security.cert.CertStoreParameters {
-    ctor public CollectionCertStoreParameters(java.util.Collection<?>);
-    ctor public CollectionCertStoreParameters();
-    method public Object clone();
-    method public java.util.Collection<?> getCollection();
-  }
-
-  public interface Extension {
-    method public void encode(java.io.OutputStream) throws java.io.IOException;
-    method public String getId();
-    method public byte[] getValue();
-    method public boolean isCritical();
-  }
-
-  public class LDAPCertStoreParameters implements java.security.cert.CertStoreParameters {
-    ctor public LDAPCertStoreParameters(String, int);
-    ctor public LDAPCertStoreParameters(String);
-    ctor public LDAPCertStoreParameters();
-    method public Object clone();
-    method public int getPort();
-    method public String getServerName();
-  }
-
-  public class PKIXBuilderParameters extends java.security.cert.PKIXParameters {
-    ctor public PKIXBuilderParameters(java.util.Set<java.security.cert.TrustAnchor>, java.security.cert.CertSelector) throws java.security.InvalidAlgorithmParameterException;
-    ctor public PKIXBuilderParameters(java.security.KeyStore, java.security.cert.CertSelector) throws java.security.InvalidAlgorithmParameterException, java.security.KeyStoreException;
-    method public int getMaxPathLength();
-    method public void setMaxPathLength(int);
-  }
-
-  public class PKIXCertPathBuilderResult extends java.security.cert.PKIXCertPathValidatorResult implements java.security.cert.CertPathBuilderResult {
-    ctor public PKIXCertPathBuilderResult(java.security.cert.CertPath, java.security.cert.TrustAnchor, java.security.cert.PolicyNode, java.security.PublicKey);
-    method public java.security.cert.CertPath getCertPath();
-  }
-
-  public abstract class PKIXCertPathChecker implements java.security.cert.CertPathChecker java.lang.Cloneable {
-    ctor protected PKIXCertPathChecker();
-    method public abstract void check(java.security.cert.Certificate, java.util.Collection<java.lang.String>) throws java.security.cert.CertPathValidatorException;
-    method public void check(java.security.cert.Certificate) throws java.security.cert.CertPathValidatorException;
-    method public Object clone();
-    method public abstract java.util.Set<java.lang.String> getSupportedExtensions();
-  }
-
-  public class PKIXCertPathValidatorResult implements java.security.cert.CertPathValidatorResult {
-    ctor public PKIXCertPathValidatorResult(java.security.cert.TrustAnchor, java.security.cert.PolicyNode, java.security.PublicKey);
-    method public Object clone();
-    method public java.security.cert.PolicyNode getPolicyTree();
-    method public java.security.PublicKey getPublicKey();
-    method public java.security.cert.TrustAnchor getTrustAnchor();
-  }
-
-  public class PKIXParameters implements java.security.cert.CertPathParameters {
-    ctor public PKIXParameters(java.util.Set<java.security.cert.TrustAnchor>) throws java.security.InvalidAlgorithmParameterException;
-    ctor public PKIXParameters(java.security.KeyStore) throws java.security.InvalidAlgorithmParameterException, java.security.KeyStoreException;
-    method public void addCertPathChecker(java.security.cert.PKIXCertPathChecker);
-    method public void addCertStore(java.security.cert.CertStore);
-    method public Object clone();
-    method public java.util.List<java.security.cert.PKIXCertPathChecker> getCertPathCheckers();
-    method public java.util.List<java.security.cert.CertStore> getCertStores();
-    method public java.util.Date getDate();
-    method public java.util.Set<java.lang.String> getInitialPolicies();
-    method public boolean getPolicyQualifiersRejected();
-    method public String getSigProvider();
-    method public java.security.cert.CertSelector getTargetCertConstraints();
-    method public java.util.Set<java.security.cert.TrustAnchor> getTrustAnchors();
-    method public boolean isAnyPolicyInhibited();
-    method public boolean isExplicitPolicyRequired();
-    method public boolean isPolicyMappingInhibited();
-    method public boolean isRevocationEnabled();
-    method public void setAnyPolicyInhibited(boolean);
-    method public void setCertPathCheckers(java.util.List<java.security.cert.PKIXCertPathChecker>);
-    method public void setCertStores(java.util.List<java.security.cert.CertStore>);
-    method public void setDate(java.util.Date);
-    method public void setExplicitPolicyRequired(boolean);
-    method public void setInitialPolicies(java.util.Set<java.lang.String>);
-    method public void setPolicyMappingInhibited(boolean);
-    method public void setPolicyQualifiersRejected(boolean);
-    method public void setRevocationEnabled(boolean);
-    method public void setSigProvider(String);
-    method public void setTargetCertConstraints(java.security.cert.CertSelector);
-    method public void setTrustAnchors(java.util.Set<java.security.cert.TrustAnchor>) throws java.security.InvalidAlgorithmParameterException;
-  }
-
-  public enum PKIXReason implements java.security.cert.CertPathValidatorException.Reason {
-    enum_constant public static final java.security.cert.PKIXReason INVALID_KEY_USAGE;
-    enum_constant public static final java.security.cert.PKIXReason INVALID_NAME;
-    enum_constant public static final java.security.cert.PKIXReason INVALID_POLICY;
-    enum_constant public static final java.security.cert.PKIXReason NAME_CHAINING;
-    enum_constant public static final java.security.cert.PKIXReason NOT_CA_CERT;
-    enum_constant public static final java.security.cert.PKIXReason NO_TRUST_ANCHOR;
-    enum_constant public static final java.security.cert.PKIXReason PATH_TOO_LONG;
-    enum_constant public static final java.security.cert.PKIXReason UNRECOGNIZED_CRIT_EXT;
-  }
-
-  public abstract class PKIXRevocationChecker extends java.security.cert.PKIXCertPathChecker {
-    ctor protected PKIXRevocationChecker();
-    method public java.security.cert.PKIXRevocationChecker clone();
-    method public java.util.List<java.security.cert.Extension> getOcspExtensions();
-    method public java.net.URI getOcspResponder();
-    method public java.security.cert.X509Certificate getOcspResponderCert();
-    method public java.util.Map<java.security.cert.X509Certificate,byte[]> getOcspResponses();
-    method public java.util.Set<java.security.cert.PKIXRevocationChecker.Option> getOptions();
-    method public abstract java.util.List<java.security.cert.CertPathValidatorException> getSoftFailExceptions();
-    method public void setOcspExtensions(java.util.List<java.security.cert.Extension>);
-    method public void setOcspResponder(java.net.URI);
-    method public void setOcspResponderCert(java.security.cert.X509Certificate);
-    method public void setOcspResponses(java.util.Map<java.security.cert.X509Certificate,byte[]>);
-    method public void setOptions(java.util.Set<java.security.cert.PKIXRevocationChecker.Option>);
-  }
-
-  public enum PKIXRevocationChecker.Option {
-    enum_constant public static final java.security.cert.PKIXRevocationChecker.Option NO_FALLBACK;
-    enum_constant public static final java.security.cert.PKIXRevocationChecker.Option ONLY_END_ENTITY;
-    enum_constant public static final java.security.cert.PKIXRevocationChecker.Option PREFER_CRLS;
-    enum_constant public static final java.security.cert.PKIXRevocationChecker.Option SOFT_FAIL;
-  }
-
-  public interface PolicyNode {
-    method public java.util.Iterator<? extends java.security.cert.PolicyNode> getChildren();
-    method public int getDepth();
-    method public java.util.Set<java.lang.String> getExpectedPolicies();
-    method public java.security.cert.PolicyNode getParent();
-    method public java.util.Set<? extends java.security.cert.PolicyQualifierInfo> getPolicyQualifiers();
-    method public String getValidPolicy();
-    method public boolean isCritical();
-  }
-
-  public class PolicyQualifierInfo {
-    ctor public PolicyQualifierInfo(byte[]) throws java.io.IOException;
-    method public final byte[] getEncoded();
-    method public final byte[] getPolicyQualifier();
-    method public final String getPolicyQualifierId();
-  }
-
-  public class TrustAnchor {
-    ctor public TrustAnchor(java.security.cert.X509Certificate, byte[]);
-    ctor public TrustAnchor(javax.security.auth.x500.X500Principal, java.security.PublicKey, byte[]);
-    ctor public TrustAnchor(String, java.security.PublicKey, byte[]);
-    method public final javax.security.auth.x500.X500Principal getCA();
-    method public final String getCAName();
-    method public final java.security.PublicKey getCAPublicKey();
-    method public final byte[] getNameConstraints();
-    method public final java.security.cert.X509Certificate getTrustedCert();
-  }
-
-  public abstract class X509CRL extends java.security.cert.CRL implements java.security.cert.X509Extension {
-    ctor protected X509CRL();
-    method public abstract byte[] getEncoded() throws java.security.cert.CRLException;
-    method public abstract java.security.Principal getIssuerDN();
-    method public javax.security.auth.x500.X500Principal getIssuerX500Principal();
-    method public abstract java.util.Date getNextUpdate();
-    method public abstract java.security.cert.X509CRLEntry getRevokedCertificate(java.math.BigInteger);
-    method public java.security.cert.X509CRLEntry getRevokedCertificate(java.security.cert.X509Certificate);
-    method public abstract java.util.Set<? extends java.security.cert.X509CRLEntry> getRevokedCertificates();
-    method public abstract String getSigAlgName();
-    method public abstract String getSigAlgOID();
-    method public abstract byte[] getSigAlgParams();
-    method public abstract byte[] getSignature();
-    method public abstract byte[] getTBSCertList() throws java.security.cert.CRLException;
-    method public abstract java.util.Date getThisUpdate();
-    method public abstract int getVersion();
-    method public abstract void verify(java.security.PublicKey) throws java.security.cert.CRLException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
-    method public abstract void verify(java.security.PublicKey, String) throws java.security.cert.CRLException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
-    method public void verify(java.security.PublicKey, java.security.Provider) throws java.security.cert.CRLException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.SignatureException;
-  }
-
-  public abstract class X509CRLEntry implements java.security.cert.X509Extension {
-    ctor public X509CRLEntry();
-    method public javax.security.auth.x500.X500Principal getCertificateIssuer();
-    method public abstract byte[] getEncoded() throws java.security.cert.CRLException;
-    method public abstract java.util.Date getRevocationDate();
-    method public java.security.cert.CRLReason getRevocationReason();
-    method public abstract java.math.BigInteger getSerialNumber();
-    method public abstract boolean hasExtensions();
-    method public abstract String toString();
-  }
-
-  public class X509CRLSelector implements java.security.cert.CRLSelector {
-    ctor public X509CRLSelector();
-    method public void addIssuer(javax.security.auth.x500.X500Principal);
-    method public void addIssuerName(String) throws java.io.IOException;
-    method public void addIssuerName(byte[]) throws java.io.IOException;
-    method public Object clone();
-    method public java.security.cert.X509Certificate getCertificateChecking();
-    method public java.util.Date getDateAndTime();
-    method public java.util.Collection<java.lang.Object> getIssuerNames();
-    method public java.util.Collection<javax.security.auth.x500.X500Principal> getIssuers();
-    method public java.math.BigInteger getMaxCRL();
-    method public java.math.BigInteger getMinCRL();
-    method public boolean match(java.security.cert.CRL);
-    method public void setCertificateChecking(java.security.cert.X509Certificate);
-    method public void setDateAndTime(java.util.Date);
-    method public void setIssuerNames(java.util.Collection<?>) throws java.io.IOException;
-    method public void setIssuers(java.util.Collection<javax.security.auth.x500.X500Principal>);
-    method public void setMaxCRLNumber(java.math.BigInteger);
-    method public void setMinCRLNumber(java.math.BigInteger);
-  }
-
-  public class X509CertSelector implements java.security.cert.CertSelector {
-    ctor public X509CertSelector();
-    method public void addPathToName(int, String) throws java.io.IOException;
-    method public void addPathToName(int, byte[]) throws java.io.IOException;
-    method public void addSubjectAlternativeName(int, String) throws java.io.IOException;
-    method public void addSubjectAlternativeName(int, byte[]) throws java.io.IOException;
-    method public Object clone();
-    method public byte[] getAuthorityKeyIdentifier();
-    method public int getBasicConstraints();
-    method public java.security.cert.X509Certificate getCertificate();
-    method public java.util.Date getCertificateValid();
-    method public java.util.Set<java.lang.String> getExtendedKeyUsage();
-    method public javax.security.auth.x500.X500Principal getIssuer();
-    method public byte[] getIssuerAsBytes() throws java.io.IOException;
-    method public String getIssuerAsString();
-    method public boolean[] getKeyUsage();
-    method public boolean getMatchAllSubjectAltNames();
-    method public byte[] getNameConstraints();
-    method public java.util.Collection<java.util.List<?>> getPathToNames();
-    method public java.util.Set<java.lang.String> getPolicy();
-    method public java.util.Date getPrivateKeyValid();
-    method public java.math.BigInteger getSerialNumber();
-    method public javax.security.auth.x500.X500Principal getSubject();
-    method public java.util.Collection<java.util.List<?>> getSubjectAlternativeNames();
-    method public byte[] getSubjectAsBytes() throws java.io.IOException;
-    method public String getSubjectAsString();
-    method public byte[] getSubjectKeyIdentifier();
-    method public java.security.PublicKey getSubjectPublicKey();
-    method public String getSubjectPublicKeyAlgID();
-    method public boolean match(java.security.cert.Certificate);
-    method public void setAuthorityKeyIdentifier(byte[]);
-    method public void setBasicConstraints(int);
-    method public void setCertificate(java.security.cert.X509Certificate);
-    method public void setCertificateValid(java.util.Date);
-    method public void setExtendedKeyUsage(java.util.Set<java.lang.String>) throws java.io.IOException;
-    method public void setIssuer(javax.security.auth.x500.X500Principal);
-    method public void setIssuer(String) throws java.io.IOException;
-    method public void setIssuer(byte[]) throws java.io.IOException;
-    method public void setKeyUsage(boolean[]);
-    method public void setMatchAllSubjectAltNames(boolean);
-    method public void setNameConstraints(byte[]) throws java.io.IOException;
-    method public void setPathToNames(java.util.Collection<java.util.List<?>>) throws java.io.IOException;
-    method public void setPolicy(java.util.Set<java.lang.String>) throws java.io.IOException;
-    method public void setPrivateKeyValid(java.util.Date);
-    method public void setSerialNumber(java.math.BigInteger);
-    method public void setSubject(javax.security.auth.x500.X500Principal);
-    method public void setSubject(String) throws java.io.IOException;
-    method public void setSubject(byte[]) throws java.io.IOException;
-    method public void setSubjectAlternativeNames(java.util.Collection<java.util.List<?>>) throws java.io.IOException;
-    method public void setSubjectKeyIdentifier(byte[]);
-    method public void setSubjectPublicKey(java.security.PublicKey);
-    method public void setSubjectPublicKey(byte[]) throws java.io.IOException;
-    method public void setSubjectPublicKeyAlgID(String) throws java.io.IOException;
-  }
-
-  public abstract class X509Certificate extends java.security.cert.Certificate implements java.security.cert.X509Extension {
-    ctor protected X509Certificate();
-    method public abstract void checkValidity() throws java.security.cert.CertificateExpiredException, java.security.cert.CertificateNotYetValidException;
-    method public abstract void checkValidity(java.util.Date) throws java.security.cert.CertificateExpiredException, java.security.cert.CertificateNotYetValidException;
-    method public abstract int getBasicConstraints();
-    method public java.util.List<java.lang.String> getExtendedKeyUsage() throws java.security.cert.CertificateParsingException;
-    method public java.util.Collection<java.util.List<?>> getIssuerAlternativeNames() throws java.security.cert.CertificateParsingException;
-    method public abstract java.security.Principal getIssuerDN();
-    method public abstract boolean[] getIssuerUniqueID();
-    method public javax.security.auth.x500.X500Principal getIssuerX500Principal();
-    method public abstract boolean[] getKeyUsage();
-    method public abstract java.util.Date getNotAfter();
-    method public abstract java.util.Date getNotBefore();
-    method public abstract java.math.BigInteger getSerialNumber();
-    method public abstract String getSigAlgName();
-    method public abstract String getSigAlgOID();
-    method public abstract byte[] getSigAlgParams();
-    method public abstract byte[] getSignature();
-    method public java.util.Collection<java.util.List<?>> getSubjectAlternativeNames() throws java.security.cert.CertificateParsingException;
-    method public abstract java.security.Principal getSubjectDN();
-    method public abstract boolean[] getSubjectUniqueID();
-    method public javax.security.auth.x500.X500Principal getSubjectX500Principal();
-    method public abstract byte[] getTBSCertificate() throws java.security.cert.CertificateEncodingException;
-    method public abstract int getVersion();
-  }
-
-  public interface X509Extension {
-    method public java.util.Set<java.lang.String> getCriticalExtensionOIDs();
-    method public byte[] getExtensionValue(String);
-    method public java.util.Set<java.lang.String> getNonCriticalExtensionOIDs();
-    method public boolean hasUnsupportedCriticalExtension();
-  }
-
-}
-
-package java.security.interfaces {
-
-  public interface DSAKey {
-    method public java.security.interfaces.DSAParams getParams();
-  }
-
-  public interface DSAKeyPairGenerator {
-    method public void initialize(java.security.interfaces.DSAParams, java.security.SecureRandom) throws java.security.InvalidParameterException;
-    method public void initialize(int, boolean, java.security.SecureRandom) throws java.security.InvalidParameterException;
-  }
-
-  public interface DSAParams {
-    method public java.math.BigInteger getG();
-    method public java.math.BigInteger getP();
-    method public java.math.BigInteger getQ();
-  }
-
-  public interface DSAPrivateKey extends java.security.interfaces.DSAKey java.security.PrivateKey {
-    method public java.math.BigInteger getX();
-    field public static final long serialVersionUID = 7776497482533790279L; // 0x6bebab423b256247L
-  }
-
-  public interface DSAPublicKey extends java.security.interfaces.DSAKey java.security.PublicKey {
-    method public java.math.BigInteger getY();
-    field public static final long serialVersionUID = 1234526332779022332L; // 0x1121eb28ab28c7fcL
-  }
-
-  public interface ECKey {
-    method public java.security.spec.ECParameterSpec getParams();
-  }
-
-  public interface ECPrivateKey extends java.security.PrivateKey java.security.interfaces.ECKey {
-    method public java.math.BigInteger getS();
-    field public static final long serialVersionUID = -7896394956925609184L; // 0x926a5e9fa2435b20L
-  }
-
-  public interface ECPublicKey extends java.security.PublicKey java.security.interfaces.ECKey {
-    method public java.security.spec.ECPoint getW();
-    field public static final long serialVersionUID = -3314988629879632826L; // 0xd1fecb679990cc46L
-  }
-
-  public interface RSAKey {
-    method public java.math.BigInteger getModulus();
-  }
-
-  public interface RSAMultiPrimePrivateCrtKey extends java.security.interfaces.RSAPrivateKey {
-    method public java.math.BigInteger getCrtCoefficient();
-    method public java.security.spec.RSAOtherPrimeInfo[] getOtherPrimeInfo();
-    method public java.math.BigInteger getPrimeExponentP();
-    method public java.math.BigInteger getPrimeExponentQ();
-    method public java.math.BigInteger getPrimeP();
-    method public java.math.BigInteger getPrimeQ();
-    method public java.math.BigInteger getPublicExponent();
-    field public static final long serialVersionUID = 618058533534628008L; // 0x893c8f62dbaf8a8L
-  }
-
-  public interface RSAPrivateCrtKey extends java.security.interfaces.RSAPrivateKey {
-    method public java.math.BigInteger getCrtCoefficient();
-    method public java.math.BigInteger getPrimeExponentP();
-    method public java.math.BigInteger getPrimeExponentQ();
-    method public java.math.BigInteger getPrimeP();
-    method public java.math.BigInteger getPrimeQ();
-    method public java.math.BigInteger getPublicExponent();
-    field public static final long serialVersionUID = -5682214253527700368L; // 0xb124b83df8d1ec70L
-  }
-
-  public interface RSAPrivateKey extends java.security.PrivateKey java.security.interfaces.RSAKey {
-    method public java.math.BigInteger getPrivateExponent();
-    field public static final long serialVersionUID = 5187144804936595022L; // 0x47fc70b7a8c2364eL
-  }
-
-  public interface RSAPublicKey extends java.security.PublicKey java.security.interfaces.RSAKey {
-    method public java.math.BigInteger getPublicExponent();
-    field public static final long serialVersionUID = -8727434096241101194L; // 0x86e1ecedeceab676L
-  }
-
-}
-
-package java.security.spec {
-
-  public interface AlgorithmParameterSpec {
-  }
-
-  public class DSAParameterSpec implements java.security.spec.AlgorithmParameterSpec java.security.interfaces.DSAParams {
-    ctor public DSAParameterSpec(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
-    method public java.math.BigInteger getG();
-    method public java.math.BigInteger getP();
-    method public java.math.BigInteger getQ();
-  }
-
-  public class DSAPrivateKeySpec implements java.security.spec.KeySpec {
-    ctor public DSAPrivateKeySpec(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
-    method public java.math.BigInteger getG();
-    method public java.math.BigInteger getP();
-    method public java.math.BigInteger getQ();
-    method public java.math.BigInteger getX();
-  }
-
-  public class DSAPublicKeySpec implements java.security.spec.KeySpec {
-    ctor public DSAPublicKeySpec(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
-    method public java.math.BigInteger getG();
-    method public java.math.BigInteger getP();
-    method public java.math.BigInteger getQ();
-    method public java.math.BigInteger getY();
-  }
-
-  public interface ECField {
-    method public int getFieldSize();
-  }
-
-  public class ECFieldF2m implements java.security.spec.ECField {
-    ctor public ECFieldF2m(int);
-    ctor public ECFieldF2m(int, java.math.BigInteger);
-    ctor public ECFieldF2m(int, int[]);
-    method public int getFieldSize();
-    method public int getM();
-    method public int[] getMidTermsOfReductionPolynomial();
-    method public java.math.BigInteger getReductionPolynomial();
-  }
-
-  public class ECFieldFp implements java.security.spec.ECField {
-    ctor public ECFieldFp(java.math.BigInteger);
-    method public int getFieldSize();
-    method public java.math.BigInteger getP();
-  }
-
-  public class ECGenParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public ECGenParameterSpec(String);
-    method public String getName();
-  }
-
-  public class ECParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public ECParameterSpec(java.security.spec.EllipticCurve, java.security.spec.ECPoint, java.math.BigInteger, int);
-    method public int getCofactor();
-    method public java.security.spec.EllipticCurve getCurve();
-    method public java.security.spec.ECPoint getGenerator();
-    method public java.math.BigInteger getOrder();
-  }
-
-  public class ECPoint {
-    ctor public ECPoint(java.math.BigInteger, java.math.BigInteger);
-    method public java.math.BigInteger getAffineX();
-    method public java.math.BigInteger getAffineY();
-    field public static final java.security.spec.ECPoint POINT_INFINITY;
-  }
-
-  public class ECPrivateKeySpec implements java.security.spec.KeySpec {
-    ctor public ECPrivateKeySpec(java.math.BigInteger, java.security.spec.ECParameterSpec);
-    method public java.security.spec.ECParameterSpec getParams();
-    method public java.math.BigInteger getS();
-  }
-
-  public class ECPublicKeySpec implements java.security.spec.KeySpec {
-    ctor public ECPublicKeySpec(java.security.spec.ECPoint, java.security.spec.ECParameterSpec);
-    method public java.security.spec.ECParameterSpec getParams();
-    method public java.security.spec.ECPoint getW();
-  }
-
-  public class EllipticCurve {
-    ctor public EllipticCurve(java.security.spec.ECField, java.math.BigInteger, java.math.BigInteger);
-    ctor public EllipticCurve(java.security.spec.ECField, java.math.BigInteger, java.math.BigInteger, byte[]);
-    method public java.math.BigInteger getA();
-    method public java.math.BigInteger getB();
-    method public java.security.spec.ECField getField();
-    method public byte[] getSeed();
-  }
-
-  public abstract class EncodedKeySpec implements java.security.spec.KeySpec {
-    ctor public EncodedKeySpec(byte[]);
-    method public byte[] getEncoded();
-    method public abstract String getFormat();
-  }
-
-  public class InvalidKeySpecException extends java.security.GeneralSecurityException {
-    ctor public InvalidKeySpecException();
-    ctor public InvalidKeySpecException(String);
-    ctor public InvalidKeySpecException(String, Throwable);
-    ctor public InvalidKeySpecException(Throwable);
-  }
-
-  public class InvalidParameterSpecException extends java.security.GeneralSecurityException {
-    ctor public InvalidParameterSpecException();
-    ctor public InvalidParameterSpecException(String);
-  }
-
-  public interface KeySpec {
-  }
-
-  public class MGF1ParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public MGF1ParameterSpec(String);
-    method public String getDigestAlgorithm();
-    field public static final java.security.spec.MGF1ParameterSpec SHA1;
-    field public static final java.security.spec.MGF1ParameterSpec SHA224;
-    field public static final java.security.spec.MGF1ParameterSpec SHA256;
-    field public static final java.security.spec.MGF1ParameterSpec SHA384;
-    field public static final java.security.spec.MGF1ParameterSpec SHA512;
-  }
-
-  public class PKCS8EncodedKeySpec extends java.security.spec.EncodedKeySpec {
-    ctor public PKCS8EncodedKeySpec(byte[]);
-    method public final String getFormat();
-  }
-
-  public class PSSParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public PSSParameterSpec(String, String, java.security.spec.AlgorithmParameterSpec, int, int);
-    ctor public PSSParameterSpec(int);
-    method public String getDigestAlgorithm();
-    method public String getMGFAlgorithm();
-    method public java.security.spec.AlgorithmParameterSpec getMGFParameters();
-    method public int getSaltLength();
-    method public int getTrailerField();
-    field public static final java.security.spec.PSSParameterSpec DEFAULT;
-  }
-
-  public class RSAKeyGenParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public RSAKeyGenParameterSpec(int, java.math.BigInteger);
-    method public int getKeysize();
-    method public java.math.BigInteger getPublicExponent();
-    field public static final java.math.BigInteger F0;
-    field public static final java.math.BigInteger F4;
-  }
-
-  public class RSAMultiPrimePrivateCrtKeySpec extends java.security.spec.RSAPrivateKeySpec {
-    ctor public RSAMultiPrimePrivateCrtKeySpec(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.security.spec.RSAOtherPrimeInfo[]);
-    method public java.math.BigInteger getCrtCoefficient();
-    method public java.security.spec.RSAOtherPrimeInfo[] getOtherPrimeInfo();
-    method public java.math.BigInteger getPrimeExponentP();
-    method public java.math.BigInteger getPrimeExponentQ();
-    method public java.math.BigInteger getPrimeP();
-    method public java.math.BigInteger getPrimeQ();
-    method public java.math.BigInteger getPublicExponent();
-  }
-
-  public class RSAOtherPrimeInfo {
-    ctor public RSAOtherPrimeInfo(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
-    method public final java.math.BigInteger getCrtCoefficient();
-    method public final java.math.BigInteger getExponent();
-    method public final java.math.BigInteger getPrime();
-  }
-
-  public class RSAPrivateCrtKeySpec extends java.security.spec.RSAPrivateKeySpec {
-    ctor public RSAPrivateCrtKeySpec(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
-    method public java.math.BigInteger getCrtCoefficient();
-    method public java.math.BigInteger getPrimeExponentP();
-    method public java.math.BigInteger getPrimeExponentQ();
-    method public java.math.BigInteger getPrimeP();
-    method public java.math.BigInteger getPrimeQ();
-    method public java.math.BigInteger getPublicExponent();
-  }
-
-  public class RSAPrivateKeySpec implements java.security.spec.KeySpec {
-    ctor public RSAPrivateKeySpec(java.math.BigInteger, java.math.BigInteger);
-    method public java.math.BigInteger getModulus();
-    method public java.math.BigInteger getPrivateExponent();
-  }
-
-  public class RSAPublicKeySpec implements java.security.spec.KeySpec {
-    ctor public RSAPublicKeySpec(java.math.BigInteger, java.math.BigInteger);
-    method public java.math.BigInteger getModulus();
-    method public java.math.BigInteger getPublicExponent();
-  }
-
-  public class X509EncodedKeySpec extends java.security.spec.EncodedKeySpec {
-    ctor public X509EncodedKeySpec(byte[]);
-    method public final String getFormat();
-  }
-
-}
-
-package java.sql {
-
-  public interface Array {
-    method public void free() throws java.sql.SQLException;
-    method public Object getArray() throws java.sql.SQLException;
-    method public Object getArray(java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
-    method public Object getArray(long, int) throws java.sql.SQLException;
-    method public Object getArray(long, int, java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
-    method public int getBaseType() throws java.sql.SQLException;
-    method public String getBaseTypeName() throws java.sql.SQLException;
-    method public java.sql.ResultSet getResultSet() throws java.sql.SQLException;
-    method public java.sql.ResultSet getResultSet(java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
-    method public java.sql.ResultSet getResultSet(long, int) throws java.sql.SQLException;
-    method public java.sql.ResultSet getResultSet(long, int, java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
-  }
-
-  public class BatchUpdateException extends java.sql.SQLException {
-    ctor public BatchUpdateException(String, String, int, int[]);
-    ctor public BatchUpdateException(String, String, int[]);
-    ctor public BatchUpdateException(String, int[]);
-    ctor public BatchUpdateException(int[]);
-    ctor public BatchUpdateException();
-    ctor public BatchUpdateException(Throwable);
-    ctor public BatchUpdateException(int[], Throwable);
-    ctor public BatchUpdateException(String, int[], Throwable);
-    ctor public BatchUpdateException(String, String, int[], Throwable);
-    ctor public BatchUpdateException(String, String, int, int[], Throwable);
-    method public int[] getUpdateCounts();
-  }
-
-  public interface Blob {
-    method public void free() throws java.sql.SQLException;
-    method public java.io.InputStream getBinaryStream() throws java.sql.SQLException;
-    method public java.io.InputStream getBinaryStream(long, long) throws java.sql.SQLException;
-    method public byte[] getBytes(long, int) throws java.sql.SQLException;
-    method public long length() throws java.sql.SQLException;
-    method public long position(byte[], long) throws java.sql.SQLException;
-    method public long position(java.sql.Blob, long) throws java.sql.SQLException;
-    method public java.io.OutputStream setBinaryStream(long) throws java.sql.SQLException;
-    method public int setBytes(long, byte[]) throws java.sql.SQLException;
-    method public int setBytes(long, byte[], int, int) throws java.sql.SQLException;
-    method public void truncate(long) throws java.sql.SQLException;
-  }
-
-  public interface CallableStatement extends java.sql.PreparedStatement {
-    method public java.sql.Array getArray(int) throws java.sql.SQLException;
-    method public java.sql.Array getArray(String) throws java.sql.SQLException;
-    method @Deprecated public java.math.BigDecimal getBigDecimal(int, int) throws java.sql.SQLException;
-    method public java.math.BigDecimal getBigDecimal(int) throws java.sql.SQLException;
-    method public java.math.BigDecimal getBigDecimal(String) throws java.sql.SQLException;
-    method public java.sql.Blob getBlob(int) throws java.sql.SQLException;
-    method public java.sql.Blob getBlob(String) throws java.sql.SQLException;
-    method public boolean getBoolean(int) throws java.sql.SQLException;
-    method public boolean getBoolean(String) throws java.sql.SQLException;
-    method public byte getByte(int) throws java.sql.SQLException;
-    method public byte getByte(String) throws java.sql.SQLException;
-    method public byte[] getBytes(int) throws java.sql.SQLException;
-    method public byte[] getBytes(String) throws java.sql.SQLException;
-    method public java.io.Reader getCharacterStream(int) throws java.sql.SQLException;
-    method public java.io.Reader getCharacterStream(String) throws java.sql.SQLException;
-    method public java.sql.Clob getClob(int) throws java.sql.SQLException;
-    method public java.sql.Clob getClob(String) throws java.sql.SQLException;
-    method public java.sql.Date getDate(int) throws java.sql.SQLException;
-    method public java.sql.Date getDate(int, java.util.Calendar) throws java.sql.SQLException;
-    method public java.sql.Date getDate(String) throws java.sql.SQLException;
-    method public java.sql.Date getDate(String, java.util.Calendar) throws java.sql.SQLException;
-    method public double getDouble(int) throws java.sql.SQLException;
-    method public double getDouble(String) throws java.sql.SQLException;
-    method public float getFloat(int) throws java.sql.SQLException;
-    method public float getFloat(String) throws java.sql.SQLException;
-    method public int getInt(int) throws java.sql.SQLException;
-    method public int getInt(String) throws java.sql.SQLException;
-    method public long getLong(int) throws java.sql.SQLException;
-    method public long getLong(String) throws java.sql.SQLException;
-    method public java.io.Reader getNCharacterStream(int) throws java.sql.SQLException;
-    method public java.io.Reader getNCharacterStream(String) throws java.sql.SQLException;
-    method public java.sql.NClob getNClob(int) throws java.sql.SQLException;
-    method public java.sql.NClob getNClob(String) throws java.sql.SQLException;
-    method public String getNString(int) throws java.sql.SQLException;
-    method public String getNString(String) throws java.sql.SQLException;
-    method public Object getObject(int) throws java.sql.SQLException;
-    method public Object getObject(int, java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
-    method public Object getObject(String) throws java.sql.SQLException;
-    method public Object getObject(String, java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
-    method public java.sql.Ref getRef(int) throws java.sql.SQLException;
-    method public java.sql.Ref getRef(String) throws java.sql.SQLException;
-    method public java.sql.RowId getRowId(int) throws java.sql.SQLException;
-    method public java.sql.RowId getRowId(String) throws java.sql.SQLException;
-    method public java.sql.SQLXML getSQLXML(int) throws java.sql.SQLException;
-    method public java.sql.SQLXML getSQLXML(String) throws java.sql.SQLException;
-    method public short getShort(int) throws java.sql.SQLException;
-    method public short getShort(String) throws java.sql.SQLException;
-    method public String getString(int) throws java.sql.SQLException;
-    method public String getString(String) throws java.sql.SQLException;
-    method public java.sql.Time getTime(int) throws java.sql.SQLException;
-    method public java.sql.Time getTime(int, java.util.Calendar) throws java.sql.SQLException;
-    method public java.sql.Time getTime(String) throws java.sql.SQLException;
-    method public java.sql.Time getTime(String, java.util.Calendar) throws java.sql.SQLException;
-    method public java.sql.Timestamp getTimestamp(int) throws java.sql.SQLException;
-    method public java.sql.Timestamp getTimestamp(int, java.util.Calendar) throws java.sql.SQLException;
-    method public java.sql.Timestamp getTimestamp(String) throws java.sql.SQLException;
-    method public java.sql.Timestamp getTimestamp(String, java.util.Calendar) throws java.sql.SQLException;
-    method public java.net.URL getURL(int) throws java.sql.SQLException;
-    method public java.net.URL getURL(String) throws java.sql.SQLException;
-    method public void registerOutParameter(int, int) throws java.sql.SQLException;
-    method public void registerOutParameter(int, int, int) throws java.sql.SQLException;
-    method public void registerOutParameter(int, int, String) throws java.sql.SQLException;
-    method public void registerOutParameter(String, int) throws java.sql.SQLException;
-    method public void registerOutParameter(String, int, int) throws java.sql.SQLException;
-    method public void registerOutParameter(String, int, String) throws java.sql.SQLException;
-    method public void setAsciiStream(String, java.io.InputStream, int) throws java.sql.SQLException;
-    method public void setAsciiStream(String, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void setAsciiStream(String, java.io.InputStream) throws java.sql.SQLException;
-    method public void setBigDecimal(String, java.math.BigDecimal) throws java.sql.SQLException;
-    method public void setBinaryStream(String, java.io.InputStream, int) throws java.sql.SQLException;
-    method public void setBinaryStream(String, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void setBinaryStream(String, java.io.InputStream) throws java.sql.SQLException;
-    method public void setBlob(String, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void setBlob(String, java.sql.Blob) throws java.sql.SQLException;
-    method public void setBlob(String, java.io.InputStream) throws java.sql.SQLException;
-    method public void setBoolean(String, boolean) throws java.sql.SQLException;
-    method public void setByte(String, byte) throws java.sql.SQLException;
-    method public void setBytes(String, byte[]) throws java.sql.SQLException;
-    method public void setCharacterStream(String, java.io.Reader, int) throws java.sql.SQLException;
-    method public void setCharacterStream(String, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setCharacterStream(String, java.io.Reader) throws java.sql.SQLException;
-    method public void setClob(String, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setClob(String, java.sql.Clob) throws java.sql.SQLException;
-    method public void setClob(String, java.io.Reader) throws java.sql.SQLException;
-    method public void setDate(String, java.sql.Date) throws java.sql.SQLException;
-    method public void setDate(String, java.sql.Date, java.util.Calendar) throws java.sql.SQLException;
-    method public void setDouble(String, double) throws java.sql.SQLException;
-    method public void setFloat(String, float) throws java.sql.SQLException;
-    method public void setInt(String, int) throws java.sql.SQLException;
-    method public void setLong(String, long) throws java.sql.SQLException;
-    method public void setNCharacterStream(String, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setNCharacterStream(String, java.io.Reader) throws java.sql.SQLException;
-    method public void setNClob(String, java.sql.NClob) throws java.sql.SQLException;
-    method public void setNClob(String, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setNClob(String, java.io.Reader) throws java.sql.SQLException;
-    method public void setNString(String, String) throws java.sql.SQLException;
-    method public void setNull(String, int) throws java.sql.SQLException;
-    method public void setNull(String, int, String) throws java.sql.SQLException;
-    method public void setObject(String, Object, int, int) throws java.sql.SQLException;
-    method public void setObject(String, Object, int) throws java.sql.SQLException;
-    method public void setObject(String, Object) throws java.sql.SQLException;
-    method public void setRowId(String, java.sql.RowId) throws java.sql.SQLException;
-    method public void setSQLXML(String, java.sql.SQLXML) throws java.sql.SQLException;
-    method public void setShort(String, short) throws java.sql.SQLException;
-    method public void setString(String, String) throws java.sql.SQLException;
-    method public void setTime(String, java.sql.Time) throws java.sql.SQLException;
-    method public void setTime(String, java.sql.Time, java.util.Calendar) throws java.sql.SQLException;
-    method public void setTimestamp(String, java.sql.Timestamp) throws java.sql.SQLException;
-    method public void setTimestamp(String, java.sql.Timestamp, java.util.Calendar) throws java.sql.SQLException;
-    method public void setURL(String, java.net.URL) throws java.sql.SQLException;
-    method public boolean wasNull() throws java.sql.SQLException;
-  }
-
-  public enum ClientInfoStatus {
-    enum_constant public static final java.sql.ClientInfoStatus REASON_UNKNOWN;
-    enum_constant public static final java.sql.ClientInfoStatus REASON_UNKNOWN_PROPERTY;
-    enum_constant public static final java.sql.ClientInfoStatus REASON_VALUE_INVALID;
-    enum_constant public static final java.sql.ClientInfoStatus REASON_VALUE_TRUNCATED;
-  }
-
-  public interface Clob {
-    method public void free() throws java.sql.SQLException;
-    method public java.io.InputStream getAsciiStream() throws java.sql.SQLException;
-    method public java.io.Reader getCharacterStream() throws java.sql.SQLException;
-    method public java.io.Reader getCharacterStream(long, long) throws java.sql.SQLException;
-    method public String getSubString(long, int) throws java.sql.SQLException;
-    method public long length() throws java.sql.SQLException;
-    method public long position(String, long) throws java.sql.SQLException;
-    method public long position(java.sql.Clob, long) throws java.sql.SQLException;
-    method public java.io.OutputStream setAsciiStream(long) throws java.sql.SQLException;
-    method public java.io.Writer setCharacterStream(long) throws java.sql.SQLException;
-    method public int setString(long, String) throws java.sql.SQLException;
-    method public int setString(long, String, int, int) throws java.sql.SQLException;
-    method public void truncate(long) throws java.sql.SQLException;
-  }
-
-  public interface Connection extends java.sql.Wrapper java.lang.AutoCloseable {
-    method public void clearWarnings() throws java.sql.SQLException;
-    method public void close() throws java.sql.SQLException;
-    method public void commit() throws java.sql.SQLException;
-    method public java.sql.Array createArrayOf(String, Object[]) throws java.sql.SQLException;
-    method public java.sql.Blob createBlob() throws java.sql.SQLException;
-    method public java.sql.Clob createClob() throws java.sql.SQLException;
-    method public java.sql.NClob createNClob() throws java.sql.SQLException;
-    method public java.sql.SQLXML createSQLXML() throws java.sql.SQLException;
-    method public java.sql.Statement createStatement() throws java.sql.SQLException;
-    method public java.sql.Statement createStatement(int, int) throws java.sql.SQLException;
-    method public java.sql.Statement createStatement(int, int, int) throws java.sql.SQLException;
-    method public java.sql.Struct createStruct(String, Object[]) throws java.sql.SQLException;
-    method public boolean getAutoCommit() throws java.sql.SQLException;
-    method public String getCatalog() throws java.sql.SQLException;
-    method public String getClientInfo(String) throws java.sql.SQLException;
-    method public java.util.Properties getClientInfo() throws java.sql.SQLException;
-    method public int getHoldability() throws java.sql.SQLException;
-    method public java.sql.DatabaseMetaData getMetaData() throws java.sql.SQLException;
-    method public int getTransactionIsolation() throws java.sql.SQLException;
-    method public java.util.Map<java.lang.String,java.lang.Class<?>> getTypeMap() throws java.sql.SQLException;
-    method public java.sql.SQLWarning getWarnings() throws java.sql.SQLException;
-    method public boolean isClosed() throws java.sql.SQLException;
-    method public boolean isReadOnly() throws java.sql.SQLException;
-    method public boolean isValid(int) throws java.sql.SQLException;
-    method public String nativeSQL(String) throws java.sql.SQLException;
-    method public java.sql.CallableStatement prepareCall(String) throws java.sql.SQLException;
-    method public java.sql.CallableStatement prepareCall(String, int, int) throws java.sql.SQLException;
-    method public java.sql.CallableStatement prepareCall(String, int, int, int) throws java.sql.SQLException;
-    method public java.sql.PreparedStatement prepareStatement(String) throws java.sql.SQLException;
-    method public java.sql.PreparedStatement prepareStatement(String, int, int) throws java.sql.SQLException;
-    method public java.sql.PreparedStatement prepareStatement(String, int, int, int) throws java.sql.SQLException;
-    method public java.sql.PreparedStatement prepareStatement(String, int) throws java.sql.SQLException;
-    method public java.sql.PreparedStatement prepareStatement(String, int[]) throws java.sql.SQLException;
-    method public java.sql.PreparedStatement prepareStatement(String, String[]) throws java.sql.SQLException;
-    method public void releaseSavepoint(java.sql.Savepoint) throws java.sql.SQLException;
-    method public void rollback() throws java.sql.SQLException;
-    method public void rollback(java.sql.Savepoint) throws java.sql.SQLException;
-    method public void setAutoCommit(boolean) throws java.sql.SQLException;
-    method public void setCatalog(String) throws java.sql.SQLException;
-    method public void setClientInfo(String, String) throws java.sql.SQLClientInfoException;
-    method public void setClientInfo(java.util.Properties) throws java.sql.SQLClientInfoException;
-    method public void setHoldability(int) throws java.sql.SQLException;
-    method public void setReadOnly(boolean) throws java.sql.SQLException;
-    method public java.sql.Savepoint setSavepoint() throws java.sql.SQLException;
-    method public java.sql.Savepoint setSavepoint(String) throws java.sql.SQLException;
-    method public void setTransactionIsolation(int) throws java.sql.SQLException;
-    method public void setTypeMap(java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
-    field public static final int TRANSACTION_NONE = 0; // 0x0
-    field public static final int TRANSACTION_READ_COMMITTED = 2; // 0x2
-    field public static final int TRANSACTION_READ_UNCOMMITTED = 1; // 0x1
-    field public static final int TRANSACTION_REPEATABLE_READ = 4; // 0x4
-    field public static final int TRANSACTION_SERIALIZABLE = 8; // 0x8
-  }
-
-  public class DataTruncation extends java.sql.SQLWarning {
-    ctor public DataTruncation(int, boolean, boolean, int, int);
-    ctor public DataTruncation(int, boolean, boolean, int, int, Throwable);
-    method public int getDataSize();
-    method public int getIndex();
-    method public boolean getParameter();
-    method public boolean getRead();
-    method public int getTransferSize();
-  }
-
-  public interface DatabaseMetaData extends java.sql.Wrapper {
-    method public boolean allProceduresAreCallable() throws java.sql.SQLException;
-    method public boolean allTablesAreSelectable() throws java.sql.SQLException;
-    method public boolean autoCommitFailureClosesAllResultSets() throws java.sql.SQLException;
-    method public boolean dataDefinitionCausesTransactionCommit() throws java.sql.SQLException;
-    method public boolean dataDefinitionIgnoredInTransactions() throws java.sql.SQLException;
-    method public boolean deletesAreDetected(int) throws java.sql.SQLException;
-    method public boolean doesMaxRowSizeIncludeBlobs() throws java.sql.SQLException;
-    method public java.sql.ResultSet getAttributes(String, String, String, String) throws java.sql.SQLException;
-    method public java.sql.ResultSet getBestRowIdentifier(String, String, String, int, boolean) throws java.sql.SQLException;
-    method public String getCatalogSeparator() throws java.sql.SQLException;
-    method public String getCatalogTerm() throws java.sql.SQLException;
-    method public java.sql.ResultSet getCatalogs() throws java.sql.SQLException;
-    method public java.sql.ResultSet getClientInfoProperties() throws java.sql.SQLException;
-    method public java.sql.ResultSet getColumnPrivileges(String, String, String, String) throws java.sql.SQLException;
-    method public java.sql.ResultSet getColumns(String, String, String, String) throws java.sql.SQLException;
-    method public java.sql.Connection getConnection() throws java.sql.SQLException;
-    method public java.sql.ResultSet getCrossReference(String, String, String, String, String, String) throws java.sql.SQLException;
-    method public int getDatabaseMajorVersion() throws java.sql.SQLException;
-    method public int getDatabaseMinorVersion() throws java.sql.SQLException;
-    method public String getDatabaseProductName() throws java.sql.SQLException;
-    method public String getDatabaseProductVersion() throws java.sql.SQLException;
-    method public int getDefaultTransactionIsolation() throws java.sql.SQLException;
-    method public int getDriverMajorVersion();
-    method public int getDriverMinorVersion();
-    method public String getDriverName() throws java.sql.SQLException;
-    method public String getDriverVersion() throws java.sql.SQLException;
-    method public java.sql.ResultSet getExportedKeys(String, String, String) throws java.sql.SQLException;
-    method public String getExtraNameCharacters() throws java.sql.SQLException;
-    method public java.sql.ResultSet getFunctionColumns(String, String, String, String) throws java.sql.SQLException;
-    method public java.sql.ResultSet getFunctions(String, String, String) throws java.sql.SQLException;
-    method public String getIdentifierQuoteString() throws java.sql.SQLException;
-    method public java.sql.ResultSet getImportedKeys(String, String, String) throws java.sql.SQLException;
-    method public java.sql.ResultSet getIndexInfo(String, String, String, boolean, boolean) throws java.sql.SQLException;
-    method public int getJDBCMajorVersion() throws java.sql.SQLException;
-    method public int getJDBCMinorVersion() throws java.sql.SQLException;
-    method public int getMaxBinaryLiteralLength() throws java.sql.SQLException;
-    method public int getMaxCatalogNameLength() throws java.sql.SQLException;
-    method public int getMaxCharLiteralLength() throws java.sql.SQLException;
-    method public int getMaxColumnNameLength() throws java.sql.SQLException;
-    method public int getMaxColumnsInGroupBy() throws java.sql.SQLException;
-    method public int getMaxColumnsInIndex() throws java.sql.SQLException;
-    method public int getMaxColumnsInOrderBy() throws java.sql.SQLException;
-    method public int getMaxColumnsInSelect() throws java.sql.SQLException;
-    method public int getMaxColumnsInTable() throws java.sql.SQLException;
-    method public int getMaxConnections() throws java.sql.SQLException;
-    method public int getMaxCursorNameLength() throws java.sql.SQLException;
-    method public int getMaxIndexLength() throws java.sql.SQLException;
-    method public int getMaxProcedureNameLength() throws java.sql.SQLException;
-    method public int getMaxRowSize() throws java.sql.SQLException;
-    method public int getMaxSchemaNameLength() throws java.sql.SQLException;
-    method public int getMaxStatementLength() throws java.sql.SQLException;
-    method public int getMaxStatements() throws java.sql.SQLException;
-    method public int getMaxTableNameLength() throws java.sql.SQLException;
-    method public int getMaxTablesInSelect() throws java.sql.SQLException;
-    method public int getMaxUserNameLength() throws java.sql.SQLException;
-    method public String getNumericFunctions() throws java.sql.SQLException;
-    method public java.sql.ResultSet getPrimaryKeys(String, String, String) throws java.sql.SQLException;
-    method public java.sql.ResultSet getProcedureColumns(String, String, String, String) throws java.sql.SQLException;
-    method public String getProcedureTerm() throws java.sql.SQLException;
-    method public java.sql.ResultSet getProcedures(String, String, String) throws java.sql.SQLException;
-    method public int getResultSetHoldability() throws java.sql.SQLException;
-    method public java.sql.RowIdLifetime getRowIdLifetime() throws java.sql.SQLException;
-    method public String getSQLKeywords() throws java.sql.SQLException;
-    method public int getSQLStateType() throws java.sql.SQLException;
-    method public String getSchemaTerm() throws java.sql.SQLException;
-    method public java.sql.ResultSet getSchemas() throws java.sql.SQLException;
-    method public java.sql.ResultSet getSchemas(String, String) throws java.sql.SQLException;
-    method public String getSearchStringEscape() throws java.sql.SQLException;
-    method public String getStringFunctions() throws java.sql.SQLException;
-    method public java.sql.ResultSet getSuperTables(String, String, String) throws java.sql.SQLException;
-    method public java.sql.ResultSet getSuperTypes(String, String, String) throws java.sql.SQLException;
-    method public String getSystemFunctions() throws java.sql.SQLException;
-    method public java.sql.ResultSet getTablePrivileges(String, String, String) throws java.sql.SQLException;
-    method public java.sql.ResultSet getTableTypes() throws java.sql.SQLException;
-    method public java.sql.ResultSet getTables(String, String, String, String[]) throws java.sql.SQLException;
-    method public String getTimeDateFunctions() throws java.sql.SQLException;
-    method public java.sql.ResultSet getTypeInfo() throws java.sql.SQLException;
-    method public java.sql.ResultSet getUDTs(String, String, String, int[]) throws java.sql.SQLException;
-    method public String getURL() throws java.sql.SQLException;
-    method public String getUserName() throws java.sql.SQLException;
-    method public java.sql.ResultSet getVersionColumns(String, String, String) throws java.sql.SQLException;
-    method public boolean insertsAreDetected(int) throws java.sql.SQLException;
-    method public boolean isCatalogAtStart() throws java.sql.SQLException;
-    method public boolean isReadOnly() throws java.sql.SQLException;
-    method public boolean locatorsUpdateCopy() throws java.sql.SQLException;
-    method public boolean nullPlusNonNullIsNull() throws java.sql.SQLException;
-    method public boolean nullsAreSortedAtEnd() throws java.sql.SQLException;
-    method public boolean nullsAreSortedAtStart() throws java.sql.SQLException;
-    method public boolean nullsAreSortedHigh() throws java.sql.SQLException;
-    method public boolean nullsAreSortedLow() throws java.sql.SQLException;
-    method public boolean othersDeletesAreVisible(int) throws java.sql.SQLException;
-    method public boolean othersInsertsAreVisible(int) throws java.sql.SQLException;
-    method public boolean othersUpdatesAreVisible(int) throws java.sql.SQLException;
-    method public boolean ownDeletesAreVisible(int) throws java.sql.SQLException;
-    method public boolean ownInsertsAreVisible(int) throws java.sql.SQLException;
-    method public boolean ownUpdatesAreVisible(int) throws java.sql.SQLException;
-    method public boolean storesLowerCaseIdentifiers() throws java.sql.SQLException;
-    method public boolean storesLowerCaseQuotedIdentifiers() throws java.sql.SQLException;
-    method public boolean storesMixedCaseIdentifiers() throws java.sql.SQLException;
-    method public boolean storesMixedCaseQuotedIdentifiers() throws java.sql.SQLException;
-    method public boolean storesUpperCaseIdentifiers() throws java.sql.SQLException;
-    method public boolean storesUpperCaseQuotedIdentifiers() throws java.sql.SQLException;
-    method public boolean supportsANSI92EntryLevelSQL() throws java.sql.SQLException;
-    method public boolean supportsANSI92FullSQL() throws java.sql.SQLException;
-    method public boolean supportsANSI92IntermediateSQL() throws java.sql.SQLException;
-    method public boolean supportsAlterTableWithAddColumn() throws java.sql.SQLException;
-    method public boolean supportsAlterTableWithDropColumn() throws java.sql.SQLException;
-    method public boolean supportsBatchUpdates() throws java.sql.SQLException;
-    method public boolean supportsCatalogsInDataManipulation() throws java.sql.SQLException;
-    method public boolean supportsCatalogsInIndexDefinitions() throws java.sql.SQLException;
-    method public boolean supportsCatalogsInPrivilegeDefinitions() throws java.sql.SQLException;
-    method public boolean supportsCatalogsInProcedureCalls() throws java.sql.SQLException;
-    method public boolean supportsCatalogsInTableDefinitions() throws java.sql.SQLException;
-    method public boolean supportsColumnAliasing() throws java.sql.SQLException;
-    method public boolean supportsConvert() throws java.sql.SQLException;
-    method public boolean supportsConvert(int, int) throws java.sql.SQLException;
-    method public boolean supportsCoreSQLGrammar() throws java.sql.SQLException;
-    method public boolean supportsCorrelatedSubqueries() throws java.sql.SQLException;
-    method public boolean supportsDataDefinitionAndDataManipulationTransactions() throws java.sql.SQLException;
-    method public boolean supportsDataManipulationTransactionsOnly() throws java.sql.SQLException;
-    method public boolean supportsDifferentTableCorrelationNames() throws java.sql.SQLException;
-    method public boolean supportsExpressionsInOrderBy() throws java.sql.SQLException;
-    method public boolean supportsExtendedSQLGrammar() throws java.sql.SQLException;
-    method public boolean supportsFullOuterJoins() throws java.sql.SQLException;
-    method public boolean supportsGetGeneratedKeys() throws java.sql.SQLException;
-    method public boolean supportsGroupBy() throws java.sql.SQLException;
-    method public boolean supportsGroupByBeyondSelect() throws java.sql.SQLException;
-    method public boolean supportsGroupByUnrelated() throws java.sql.SQLException;
-    method public boolean supportsIntegrityEnhancementFacility() throws java.sql.SQLException;
-    method public boolean supportsLikeEscapeClause() throws java.sql.SQLException;
-    method public boolean supportsLimitedOuterJoins() throws java.sql.SQLException;
-    method public boolean supportsMinimumSQLGrammar() throws java.sql.SQLException;
-    method public boolean supportsMixedCaseIdentifiers() throws java.sql.SQLException;
-    method public boolean supportsMixedCaseQuotedIdentifiers() throws java.sql.SQLException;
-    method public boolean supportsMultipleOpenResults() throws java.sql.SQLException;
-    method public boolean supportsMultipleResultSets() throws java.sql.SQLException;
-    method public boolean supportsMultipleTransactions() throws java.sql.SQLException;
-    method public boolean supportsNamedParameters() throws java.sql.SQLException;
-    method public boolean supportsNonNullableColumns() throws java.sql.SQLException;
-    method public boolean supportsOpenCursorsAcrossCommit() throws java.sql.SQLException;
-    method public boolean supportsOpenCursorsAcrossRollback() throws java.sql.SQLException;
-    method public boolean supportsOpenStatementsAcrossCommit() throws java.sql.SQLException;
-    method public boolean supportsOpenStatementsAcrossRollback() throws java.sql.SQLException;
-    method public boolean supportsOrderByUnrelated() throws java.sql.SQLException;
-    method public boolean supportsOuterJoins() throws java.sql.SQLException;
-    method public boolean supportsPositionedDelete() throws java.sql.SQLException;
-    method public boolean supportsPositionedUpdate() throws java.sql.SQLException;
-    method public boolean supportsResultSetConcurrency(int, int) throws java.sql.SQLException;
-    method public boolean supportsResultSetHoldability(int) throws java.sql.SQLException;
-    method public boolean supportsResultSetType(int) throws java.sql.SQLException;
-    method public boolean supportsSavepoints() throws java.sql.SQLException;
-    method public boolean supportsSchemasInDataManipulation() throws java.sql.SQLException;
-    method public boolean supportsSchemasInIndexDefinitions() throws java.sql.SQLException;
-    method public boolean supportsSchemasInPrivilegeDefinitions() throws java.sql.SQLException;
-    method public boolean supportsSchemasInProcedureCalls() throws java.sql.SQLException;
-    method public boolean supportsSchemasInTableDefinitions() throws java.sql.SQLException;
-    method public boolean supportsSelectForUpdate() throws java.sql.SQLException;
-    method public boolean supportsStatementPooling() throws java.sql.SQLException;
-    method public boolean supportsStoredFunctionsUsingCallSyntax() throws java.sql.SQLException;
-    method public boolean supportsStoredProcedures() throws java.sql.SQLException;
-    method public boolean supportsSubqueriesInComparisons() throws java.sql.SQLException;
-    method public boolean supportsSubqueriesInExists() throws java.sql.SQLException;
-    method public boolean supportsSubqueriesInIns() throws java.sql.SQLException;
-    method public boolean supportsSubqueriesInQuantifieds() throws java.sql.SQLException;
-    method public boolean supportsTableCorrelationNames() throws java.sql.SQLException;
-    method public boolean supportsTransactionIsolationLevel(int) throws java.sql.SQLException;
-    method public boolean supportsTransactions() throws java.sql.SQLException;
-    method public boolean supportsUnion() throws java.sql.SQLException;
-    method public boolean supportsUnionAll() throws java.sql.SQLException;
-    method public boolean updatesAreDetected(int) throws java.sql.SQLException;
-    method public boolean usesLocalFilePerTable() throws java.sql.SQLException;
-    method public boolean usesLocalFiles() throws java.sql.SQLException;
-    field public static final short attributeNoNulls = 0; // 0x0
-    field public static final short attributeNullable = 1; // 0x1
-    field public static final short attributeNullableUnknown = 2; // 0x2
-    field public static final int bestRowNotPseudo = 1; // 0x1
-    field public static final int bestRowPseudo = 2; // 0x2
-    field public static final int bestRowSession = 2; // 0x2
-    field public static final int bestRowTemporary = 0; // 0x0
-    field public static final int bestRowTransaction = 1; // 0x1
-    field public static final int bestRowUnknown = 0; // 0x0
-    field public static final int columnNoNulls = 0; // 0x0
-    field public static final int columnNullable = 1; // 0x1
-    field public static final int columnNullableUnknown = 2; // 0x2
-    field public static final int functionColumnIn = 1; // 0x1
-    field public static final int functionColumnInOut = 2; // 0x2
-    field public static final int functionColumnOut = 3; // 0x3
-    field public static final int functionColumnResult = 5; // 0x5
-    field public static final int functionColumnUnknown = 0; // 0x0
-    field public static final int functionNoNulls = 0; // 0x0
-    field public static final int functionNoTable = 1; // 0x1
-    field public static final int functionNullable = 1; // 0x1
-    field public static final int functionNullableUnknown = 2; // 0x2
-    field public static final int functionResultUnknown = 0; // 0x0
-    field public static final int functionReturn = 4; // 0x4
-    field public static final int functionReturnsTable = 2; // 0x2
-    field public static final int importedKeyCascade = 0; // 0x0
-    field public static final int importedKeyInitiallyDeferred = 5; // 0x5
-    field public static final int importedKeyInitiallyImmediate = 6; // 0x6
-    field public static final int importedKeyNoAction = 3; // 0x3
-    field public static final int importedKeyNotDeferrable = 7; // 0x7
-    field public static final int importedKeyRestrict = 1; // 0x1
-    field public static final int importedKeySetDefault = 4; // 0x4
-    field public static final int importedKeySetNull = 2; // 0x2
-    field public static final int procedureColumnIn = 1; // 0x1
-    field public static final int procedureColumnInOut = 2; // 0x2
-    field public static final int procedureColumnOut = 4; // 0x4
-    field public static final int procedureColumnResult = 3; // 0x3
-    field public static final int procedureColumnReturn = 5; // 0x5
-    field public static final int procedureColumnUnknown = 0; // 0x0
-    field public static final int procedureNoNulls = 0; // 0x0
-    field public static final int procedureNoResult = 1; // 0x1
-    field public static final int procedureNullable = 1; // 0x1
-    field public static final int procedureNullableUnknown = 2; // 0x2
-    field public static final int procedureResultUnknown = 0; // 0x0
-    field public static final int procedureReturnsResult = 2; // 0x2
-    field public static final int sqlStateSQL = 2; // 0x2
-    field public static final int sqlStateSQL99 = 2; // 0x2
-    field public static final int sqlStateXOpen = 1; // 0x1
-    field public static final short tableIndexClustered = 1; // 0x1
-    field public static final short tableIndexHashed = 2; // 0x2
-    field public static final short tableIndexOther = 3; // 0x3
-    field public static final short tableIndexStatistic = 0; // 0x0
-    field public static final int typeNoNulls = 0; // 0x0
-    field public static final int typeNullable = 1; // 0x1
-    field public static final int typeNullableUnknown = 2; // 0x2
-    field public static final int typePredBasic = 2; // 0x2
-    field public static final int typePredChar = 1; // 0x1
-    field public static final int typePredNone = 0; // 0x0
-    field public static final int typeSearchable = 3; // 0x3
-    field public static final int versionColumnNotPseudo = 1; // 0x1
-    field public static final int versionColumnPseudo = 2; // 0x2
-    field public static final int versionColumnUnknown = 0; // 0x0
-  }
-
-  public class Date extends java.util.Date {
-    ctor @Deprecated public Date(int, int, int);
-    ctor public Date(long);
-    method public static java.sql.Date valueOf(String);
-  }
-
-  public interface Driver {
-    method public boolean acceptsURL(String) throws java.sql.SQLException;
-    method public java.sql.Connection connect(String, java.util.Properties) throws java.sql.SQLException;
-    method public int getMajorVersion();
-    method public int getMinorVersion();
-    method public java.sql.DriverPropertyInfo[] getPropertyInfo(String, java.util.Properties) throws java.sql.SQLException;
-    method public boolean jdbcCompliant();
-  }
-
-  public class DriverManager {
-    method public static void deregisterDriver(java.sql.Driver) throws java.sql.SQLException;
-    method public static java.sql.Connection getConnection(String, java.util.Properties) throws java.sql.SQLException;
-    method public static java.sql.Connection getConnection(String, String, String) throws java.sql.SQLException;
-    method public static java.sql.Connection getConnection(String) throws java.sql.SQLException;
-    method public static java.sql.Driver getDriver(String) throws java.sql.SQLException;
-    method public static java.util.Enumeration<java.sql.Driver> getDrivers();
-    method @Deprecated public static java.io.PrintStream getLogStream();
-    method public static java.io.PrintWriter getLogWriter();
-    method public static int getLoginTimeout();
-    method public static void println(String);
-    method public static void registerDriver(java.sql.Driver) throws java.sql.SQLException;
-    method @Deprecated public static void setLogStream(java.io.PrintStream);
-    method public static void setLogWriter(java.io.PrintWriter);
-    method public static void setLoginTimeout(int);
-  }
-
-  public class DriverPropertyInfo {
-    ctor public DriverPropertyInfo(String, String);
-    field public String[] choices;
-    field public String description;
-    field public String name;
-    field public boolean required;
-    field public String value;
-  }
-
-  public interface NClob extends java.sql.Clob {
-  }
-
-  public interface ParameterMetaData extends java.sql.Wrapper {
-    method public String getParameterClassName(int) throws java.sql.SQLException;
-    method public int getParameterCount() throws java.sql.SQLException;
-    method public int getParameterMode(int) throws java.sql.SQLException;
-    method public int getParameterType(int) throws java.sql.SQLException;
-    method public String getParameterTypeName(int) throws java.sql.SQLException;
-    method public int getPrecision(int) throws java.sql.SQLException;
-    method public int getScale(int) throws java.sql.SQLException;
-    method public int isNullable(int) throws java.sql.SQLException;
-    method public boolean isSigned(int) throws java.sql.SQLException;
-    field public static final int parameterModeIn = 1; // 0x1
-    field public static final int parameterModeInOut = 2; // 0x2
-    field public static final int parameterModeOut = 4; // 0x4
-    field public static final int parameterModeUnknown = 0; // 0x0
-    field public static final int parameterNoNulls = 0; // 0x0
-    field public static final int parameterNullable = 1; // 0x1
-    field public static final int parameterNullableUnknown = 2; // 0x2
-  }
-
-  public interface PreparedStatement extends java.sql.Statement {
-    method public void addBatch() throws java.sql.SQLException;
-    method public void clearParameters() throws java.sql.SQLException;
-    method public boolean execute() throws java.sql.SQLException;
-    method public java.sql.ResultSet executeQuery() throws java.sql.SQLException;
-    method public int executeUpdate() throws java.sql.SQLException;
-    method public java.sql.ResultSetMetaData getMetaData() throws java.sql.SQLException;
-    method public java.sql.ParameterMetaData getParameterMetaData() throws java.sql.SQLException;
-    method public void setArray(int, java.sql.Array) throws java.sql.SQLException;
-    method public void setAsciiStream(int, java.io.InputStream, int) throws java.sql.SQLException;
-    method public void setAsciiStream(int, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void setAsciiStream(int, java.io.InputStream) throws java.sql.SQLException;
-    method public void setBigDecimal(int, java.math.BigDecimal) throws java.sql.SQLException;
-    method public void setBinaryStream(int, java.io.InputStream, int) throws java.sql.SQLException;
-    method public void setBinaryStream(int, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void setBinaryStream(int, java.io.InputStream) throws java.sql.SQLException;
-    method public void setBlob(int, java.sql.Blob) throws java.sql.SQLException;
-    method public void setBlob(int, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void setBlob(int, java.io.InputStream) throws java.sql.SQLException;
-    method public void setBoolean(int, boolean) throws java.sql.SQLException;
-    method public void setByte(int, byte) throws java.sql.SQLException;
-    method public void setBytes(int, byte[]) throws java.sql.SQLException;
-    method public void setCharacterStream(int, java.io.Reader, int) throws java.sql.SQLException;
-    method public void setCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
-    method public void setClob(int, java.sql.Clob) throws java.sql.SQLException;
-    method public void setClob(int, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setClob(int, java.io.Reader) throws java.sql.SQLException;
-    method public void setDate(int, java.sql.Date) throws java.sql.SQLException;
-    method public void setDate(int, java.sql.Date, java.util.Calendar) throws java.sql.SQLException;
-    method public void setDouble(int, double) throws java.sql.SQLException;
-    method public void setFloat(int, float) throws java.sql.SQLException;
-    method public void setInt(int, int) throws java.sql.SQLException;
-    method public void setLong(int, long) throws java.sql.SQLException;
-    method public void setNCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setNCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
-    method public void setNClob(int, java.sql.NClob) throws java.sql.SQLException;
-    method public void setNClob(int, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setNClob(int, java.io.Reader) throws java.sql.SQLException;
-    method public void setNString(int, String) throws java.sql.SQLException;
-    method public void setNull(int, int) throws java.sql.SQLException;
-    method public void setNull(int, int, String) throws java.sql.SQLException;
-    method public void setObject(int, Object, int) throws java.sql.SQLException;
-    method public void setObject(int, Object) throws java.sql.SQLException;
-    method public void setObject(int, Object, int, int) throws java.sql.SQLException;
-    method public void setRef(int, java.sql.Ref) throws java.sql.SQLException;
-    method public void setRowId(int, java.sql.RowId) throws java.sql.SQLException;
-    method public void setSQLXML(int, java.sql.SQLXML) throws java.sql.SQLException;
-    method public void setShort(int, short) throws java.sql.SQLException;
-    method public void setString(int, String) throws java.sql.SQLException;
-    method public void setTime(int, java.sql.Time) throws java.sql.SQLException;
-    method public void setTime(int, java.sql.Time, java.util.Calendar) throws java.sql.SQLException;
-    method public void setTimestamp(int, java.sql.Timestamp) throws java.sql.SQLException;
-    method public void setTimestamp(int, java.sql.Timestamp, java.util.Calendar) throws java.sql.SQLException;
-    method public void setURL(int, java.net.URL) throws java.sql.SQLException;
-    method @Deprecated public void setUnicodeStream(int, java.io.InputStream, int) throws java.sql.SQLException;
-  }
-
-  public interface Ref {
-    method public String getBaseTypeName() throws java.sql.SQLException;
-    method public Object getObject(java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
-    method public Object getObject() throws java.sql.SQLException;
-    method public void setObject(Object) throws java.sql.SQLException;
-  }
-
-  public interface ResultSet extends java.sql.Wrapper java.lang.AutoCloseable {
-    method public boolean absolute(int) throws java.sql.SQLException;
-    method public void afterLast() throws java.sql.SQLException;
-    method public void beforeFirst() throws java.sql.SQLException;
-    method public void cancelRowUpdates() throws java.sql.SQLException;
-    method public void clearWarnings() throws java.sql.SQLException;
-    method public void close() throws java.sql.SQLException;
-    method public void deleteRow() throws java.sql.SQLException;
-    method public int findColumn(String) throws java.sql.SQLException;
-    method public boolean first() throws java.sql.SQLException;
-    method public java.sql.Array getArray(int) throws java.sql.SQLException;
-    method public java.sql.Array getArray(String) throws java.sql.SQLException;
-    method public java.io.InputStream getAsciiStream(int) throws java.sql.SQLException;
-    method public java.io.InputStream getAsciiStream(String) throws java.sql.SQLException;
-    method @Deprecated public java.math.BigDecimal getBigDecimal(int, int) throws java.sql.SQLException;
-    method @Deprecated public java.math.BigDecimal getBigDecimal(String, int) throws java.sql.SQLException;
-    method public java.math.BigDecimal getBigDecimal(int) throws java.sql.SQLException;
-    method public java.math.BigDecimal getBigDecimal(String) throws java.sql.SQLException;
-    method public java.io.InputStream getBinaryStream(int) throws java.sql.SQLException;
-    method public java.io.InputStream getBinaryStream(String) throws java.sql.SQLException;
-    method public java.sql.Blob getBlob(int) throws java.sql.SQLException;
-    method public java.sql.Blob getBlob(String) throws java.sql.SQLException;
-    method public boolean getBoolean(int) throws java.sql.SQLException;
-    method public boolean getBoolean(String) throws java.sql.SQLException;
-    method public byte getByte(int) throws java.sql.SQLException;
-    method public byte getByte(String) throws java.sql.SQLException;
-    method public byte[] getBytes(int) throws java.sql.SQLException;
-    method public byte[] getBytes(String) throws java.sql.SQLException;
-    method public java.io.Reader getCharacterStream(int) throws java.sql.SQLException;
-    method public java.io.Reader getCharacterStream(String) throws java.sql.SQLException;
-    method public java.sql.Clob getClob(int) throws java.sql.SQLException;
-    method public java.sql.Clob getClob(String) throws java.sql.SQLException;
-    method public int getConcurrency() throws java.sql.SQLException;
-    method public String getCursorName() throws java.sql.SQLException;
-    method public java.sql.Date getDate(int) throws java.sql.SQLException;
-    method public java.sql.Date getDate(String) throws java.sql.SQLException;
-    method public java.sql.Date getDate(int, java.util.Calendar) throws java.sql.SQLException;
-    method public java.sql.Date getDate(String, java.util.Calendar) throws java.sql.SQLException;
-    method public double getDouble(int) throws java.sql.SQLException;
-    method public double getDouble(String) throws java.sql.SQLException;
-    method public int getFetchDirection() throws java.sql.SQLException;
-    method public int getFetchSize() throws java.sql.SQLException;
-    method public float getFloat(int) throws java.sql.SQLException;
-    method public float getFloat(String) throws java.sql.SQLException;
-    method public int getHoldability() throws java.sql.SQLException;
-    method public int getInt(int) throws java.sql.SQLException;
-    method public int getInt(String) throws java.sql.SQLException;
-    method public long getLong(int) throws java.sql.SQLException;
-    method public long getLong(String) throws java.sql.SQLException;
-    method public java.sql.ResultSetMetaData getMetaData() throws java.sql.SQLException;
-    method public java.io.Reader getNCharacterStream(int) throws java.sql.SQLException;
-    method public java.io.Reader getNCharacterStream(String) throws java.sql.SQLException;
-    method public java.sql.NClob getNClob(int) throws java.sql.SQLException;
-    method public java.sql.NClob getNClob(String) throws java.sql.SQLException;
-    method public String getNString(int) throws java.sql.SQLException;
-    method public String getNString(String) throws java.sql.SQLException;
-    method public Object getObject(int) throws java.sql.SQLException;
-    method public Object getObject(String) throws java.sql.SQLException;
-    method public Object getObject(int, java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
-    method public Object getObject(String, java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
-    method public java.sql.Ref getRef(int) throws java.sql.SQLException;
-    method public java.sql.Ref getRef(String) throws java.sql.SQLException;
-    method public int getRow() throws java.sql.SQLException;
-    method public java.sql.RowId getRowId(int) throws java.sql.SQLException;
-    method public java.sql.RowId getRowId(String) throws java.sql.SQLException;
-    method public java.sql.SQLXML getSQLXML(int) throws java.sql.SQLException;
-    method public java.sql.SQLXML getSQLXML(String) throws java.sql.SQLException;
-    method public short getShort(int) throws java.sql.SQLException;
-    method public short getShort(String) throws java.sql.SQLException;
-    method public java.sql.Statement getStatement() throws java.sql.SQLException;
-    method public String getString(int) throws java.sql.SQLException;
-    method public String getString(String) throws java.sql.SQLException;
-    method public java.sql.Time getTime(int) throws java.sql.SQLException;
-    method public java.sql.Time getTime(String) throws java.sql.SQLException;
-    method public java.sql.Time getTime(int, java.util.Calendar) throws java.sql.SQLException;
-    method public java.sql.Time getTime(String, java.util.Calendar) throws java.sql.SQLException;
-    method public java.sql.Timestamp getTimestamp(int) throws java.sql.SQLException;
-    method public java.sql.Timestamp getTimestamp(String) throws java.sql.SQLException;
-    method public java.sql.Timestamp getTimestamp(int, java.util.Calendar) throws java.sql.SQLException;
-    method public java.sql.Timestamp getTimestamp(String, java.util.Calendar) throws java.sql.SQLException;
-    method public int getType() throws java.sql.SQLException;
-    method public java.net.URL getURL(int) throws java.sql.SQLException;
-    method public java.net.URL getURL(String) throws java.sql.SQLException;
-    method @Deprecated public java.io.InputStream getUnicodeStream(int) throws java.sql.SQLException;
-    method @Deprecated public java.io.InputStream getUnicodeStream(String) throws java.sql.SQLException;
-    method public java.sql.SQLWarning getWarnings() throws java.sql.SQLException;
-    method public void insertRow() throws java.sql.SQLException;
-    method public boolean isAfterLast() throws java.sql.SQLException;
-    method public boolean isBeforeFirst() throws java.sql.SQLException;
-    method public boolean isClosed() throws java.sql.SQLException;
-    method public boolean isFirst() throws java.sql.SQLException;
-    method public boolean isLast() throws java.sql.SQLException;
-    method public boolean last() throws java.sql.SQLException;
-    method public void moveToCurrentRow() throws java.sql.SQLException;
-    method public void moveToInsertRow() throws java.sql.SQLException;
-    method public boolean next() throws java.sql.SQLException;
-    method public boolean previous() throws java.sql.SQLException;
-    method public void refreshRow() throws java.sql.SQLException;
-    method public boolean relative(int) throws java.sql.SQLException;
-    method public boolean rowDeleted() throws java.sql.SQLException;
-    method public boolean rowInserted() throws java.sql.SQLException;
-    method public boolean rowUpdated() throws java.sql.SQLException;
-    method public void setFetchDirection(int) throws java.sql.SQLException;
-    method public void setFetchSize(int) throws java.sql.SQLException;
-    method public void updateArray(int, java.sql.Array) throws java.sql.SQLException;
-    method public void updateArray(String, java.sql.Array) throws java.sql.SQLException;
-    method public void updateAsciiStream(int, java.io.InputStream, int) throws java.sql.SQLException;
-    method public void updateAsciiStream(String, java.io.InputStream, int) throws java.sql.SQLException;
-    method public void updateAsciiStream(int, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void updateAsciiStream(String, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void updateAsciiStream(int, java.io.InputStream) throws java.sql.SQLException;
-    method public void updateAsciiStream(String, java.io.InputStream) throws java.sql.SQLException;
-    method public void updateBigDecimal(int, java.math.BigDecimal) throws java.sql.SQLException;
-    method public void updateBigDecimal(String, java.math.BigDecimal) throws java.sql.SQLException;
-    method public void updateBinaryStream(int, java.io.InputStream, int) throws java.sql.SQLException;
-    method public void updateBinaryStream(String, java.io.InputStream, int) throws java.sql.SQLException;
-    method public void updateBinaryStream(int, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void updateBinaryStream(String, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void updateBinaryStream(int, java.io.InputStream) throws java.sql.SQLException;
-    method public void updateBinaryStream(String, java.io.InputStream) throws java.sql.SQLException;
-    method public void updateBlob(int, java.sql.Blob) throws java.sql.SQLException;
-    method public void updateBlob(String, java.sql.Blob) throws java.sql.SQLException;
-    method public void updateBlob(int, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void updateBlob(String, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void updateBlob(int, java.io.InputStream) throws java.sql.SQLException;
-    method public void updateBlob(String, java.io.InputStream) throws java.sql.SQLException;
-    method public void updateBoolean(int, boolean) throws java.sql.SQLException;
-    method public void updateBoolean(String, boolean) throws java.sql.SQLException;
-    method public void updateByte(int, byte) throws java.sql.SQLException;
-    method public void updateByte(String, byte) throws java.sql.SQLException;
-    method public void updateBytes(int, byte[]) throws java.sql.SQLException;
-    method public void updateBytes(String, byte[]) throws java.sql.SQLException;
-    method public void updateCharacterStream(int, java.io.Reader, int) throws java.sql.SQLException;
-    method public void updateCharacterStream(String, java.io.Reader, int) throws java.sql.SQLException;
-    method public void updateCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
-    method public void updateCharacterStream(String, java.io.Reader, long) throws java.sql.SQLException;
-    method public void updateCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
-    method public void updateCharacterStream(String, java.io.Reader) throws java.sql.SQLException;
-    method public void updateClob(int, java.sql.Clob) throws java.sql.SQLException;
-    method public void updateClob(String, java.sql.Clob) throws java.sql.SQLException;
-    method public void updateClob(int, java.io.Reader, long) throws java.sql.SQLException;
-    method public void updateClob(String, java.io.Reader, long) throws java.sql.SQLException;
-    method public void updateClob(int, java.io.Reader) throws java.sql.SQLException;
-    method public void updateClob(String, java.io.Reader) throws java.sql.SQLException;
-    method public void updateDate(int, java.sql.Date) throws java.sql.SQLException;
-    method public void updateDate(String, java.sql.Date) throws java.sql.SQLException;
-    method public void updateDouble(int, double) throws java.sql.SQLException;
-    method public void updateDouble(String, double) throws java.sql.SQLException;
-    method public void updateFloat(int, float) throws java.sql.SQLException;
-    method public void updateFloat(String, float) throws java.sql.SQLException;
-    method public void updateInt(int, int) throws java.sql.SQLException;
-    method public void updateInt(String, int) throws java.sql.SQLException;
-    method public void updateLong(int, long) throws java.sql.SQLException;
-    method public void updateLong(String, long) throws java.sql.SQLException;
-    method public void updateNCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
-    method public void updateNCharacterStream(String, java.io.Reader, long) throws java.sql.SQLException;
-    method public void updateNCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
-    method public void updateNCharacterStream(String, java.io.Reader) throws java.sql.SQLException;
-    method public void updateNClob(int, java.sql.NClob) throws java.sql.SQLException;
-    method public void updateNClob(String, java.sql.NClob) throws java.sql.SQLException;
-    method public void updateNClob(int, java.io.Reader, long) throws java.sql.SQLException;
-    method public void updateNClob(String, java.io.Reader, long) throws java.sql.SQLException;
-    method public void updateNClob(int, java.io.Reader) throws java.sql.SQLException;
-    method public void updateNClob(String, java.io.Reader) throws java.sql.SQLException;
-    method public void updateNString(int, String) throws java.sql.SQLException;
-    method public void updateNString(String, String) throws java.sql.SQLException;
-    method public void updateNull(int) throws java.sql.SQLException;
-    method public void updateNull(String) throws java.sql.SQLException;
-    method public void updateObject(int, Object, int) throws java.sql.SQLException;
-    method public void updateObject(int, Object) throws java.sql.SQLException;
-    method public void updateObject(String, Object, int) throws java.sql.SQLException;
-    method public void updateObject(String, Object) throws java.sql.SQLException;
-    method public void updateRef(int, java.sql.Ref) throws java.sql.SQLException;
-    method public void updateRef(String, java.sql.Ref) throws java.sql.SQLException;
-    method public void updateRow() throws java.sql.SQLException;
-    method public void updateRowId(int, java.sql.RowId) throws java.sql.SQLException;
-    method public void updateRowId(String, java.sql.RowId) throws java.sql.SQLException;
-    method public void updateSQLXML(int, java.sql.SQLXML) throws java.sql.SQLException;
-    method public void updateSQLXML(String, java.sql.SQLXML) throws java.sql.SQLException;
-    method public void updateShort(int, short) throws java.sql.SQLException;
-    method public void updateShort(String, short) throws java.sql.SQLException;
-    method public void updateString(int, String) throws java.sql.SQLException;
-    method public void updateString(String, String) throws java.sql.SQLException;
-    method public void updateTime(int, java.sql.Time) throws java.sql.SQLException;
-    method public void updateTime(String, java.sql.Time) throws java.sql.SQLException;
-    method public void updateTimestamp(int, java.sql.Timestamp) throws java.sql.SQLException;
-    method public void updateTimestamp(String, java.sql.Timestamp) throws java.sql.SQLException;
-    method public boolean wasNull() throws java.sql.SQLException;
-    field public static final int CLOSE_CURSORS_AT_COMMIT = 2; // 0x2
-    field public static final int CONCUR_READ_ONLY = 1007; // 0x3ef
-    field public static final int CONCUR_UPDATABLE = 1008; // 0x3f0
-    field public static final int FETCH_FORWARD = 1000; // 0x3e8
-    field public static final int FETCH_REVERSE = 1001; // 0x3e9
-    field public static final int FETCH_UNKNOWN = 1002; // 0x3ea
-    field public static final int HOLD_CURSORS_OVER_COMMIT = 1; // 0x1
-    field public static final int TYPE_FORWARD_ONLY = 1003; // 0x3eb
-    field public static final int TYPE_SCROLL_INSENSITIVE = 1004; // 0x3ec
-    field public static final int TYPE_SCROLL_SENSITIVE = 1005; // 0x3ed
-  }
-
-  public interface ResultSetMetaData extends java.sql.Wrapper {
-    method public String getCatalogName(int) throws java.sql.SQLException;
-    method public String getColumnClassName(int) throws java.sql.SQLException;
-    method public int getColumnCount() throws java.sql.SQLException;
-    method public int getColumnDisplaySize(int) throws java.sql.SQLException;
-    method public String getColumnLabel(int) throws java.sql.SQLException;
-    method public String getColumnName(int) throws java.sql.SQLException;
-    method public int getColumnType(int) throws java.sql.SQLException;
-    method public String getColumnTypeName(int) throws java.sql.SQLException;
-    method public int getPrecision(int) throws java.sql.SQLException;
-    method public int getScale(int) throws java.sql.SQLException;
-    method public String getSchemaName(int) throws java.sql.SQLException;
-    method public String getTableName(int) throws java.sql.SQLException;
-    method public boolean isAutoIncrement(int) throws java.sql.SQLException;
-    method public boolean isCaseSensitive(int) throws java.sql.SQLException;
-    method public boolean isCurrency(int) throws java.sql.SQLException;
-    method public boolean isDefinitelyWritable(int) throws java.sql.SQLException;
-    method public int isNullable(int) throws java.sql.SQLException;
-    method public boolean isReadOnly(int) throws java.sql.SQLException;
-    method public boolean isSearchable(int) throws java.sql.SQLException;
-    method public boolean isSigned(int) throws java.sql.SQLException;
-    method public boolean isWritable(int) throws java.sql.SQLException;
-    field public static final int columnNoNulls = 0; // 0x0
-    field public static final int columnNullable = 1; // 0x1
-    field public static final int columnNullableUnknown = 2; // 0x2
-  }
-
-  public interface RowId {
-    method public boolean equals(Object);
-    method public byte[] getBytes();
-    method public int hashCode();
-    method public String toString();
-  }
-
-  public enum RowIdLifetime {
-    enum_constant public static final java.sql.RowIdLifetime ROWID_UNSUPPORTED;
-    enum_constant public static final java.sql.RowIdLifetime ROWID_VALID_FOREVER;
-    enum_constant public static final java.sql.RowIdLifetime ROWID_VALID_OTHER;
-    enum_constant public static final java.sql.RowIdLifetime ROWID_VALID_SESSION;
-    enum_constant public static final java.sql.RowIdLifetime ROWID_VALID_TRANSACTION;
-  }
-
-  public class SQLClientInfoException extends java.sql.SQLException {
-    ctor public SQLClientInfoException();
-    ctor public SQLClientInfoException(java.util.Map<java.lang.String,java.sql.ClientInfoStatus>);
-    ctor public SQLClientInfoException(java.util.Map<java.lang.String,java.sql.ClientInfoStatus>, Throwable);
-    ctor public SQLClientInfoException(String, java.util.Map<java.lang.String,java.sql.ClientInfoStatus>);
-    ctor public SQLClientInfoException(String, java.util.Map<java.lang.String,java.sql.ClientInfoStatus>, Throwable);
-    ctor public SQLClientInfoException(String, String, java.util.Map<java.lang.String,java.sql.ClientInfoStatus>);
-    ctor public SQLClientInfoException(String, String, java.util.Map<java.lang.String,java.sql.ClientInfoStatus>, Throwable);
-    ctor public SQLClientInfoException(String, String, int, java.util.Map<java.lang.String,java.sql.ClientInfoStatus>);
-    ctor public SQLClientInfoException(String, String, int, java.util.Map<java.lang.String,java.sql.ClientInfoStatus>, Throwable);
-    method public java.util.Map<java.lang.String,java.sql.ClientInfoStatus> getFailedProperties();
-  }
-
-  public interface SQLData {
-    method public String getSQLTypeName() throws java.sql.SQLException;
-    method public void readSQL(java.sql.SQLInput, String) throws java.sql.SQLException;
-    method public void writeSQL(java.sql.SQLOutput) throws java.sql.SQLException;
-  }
-
-  public class SQLDataException extends java.sql.SQLNonTransientException {
-    ctor public SQLDataException();
-    ctor public SQLDataException(String);
-    ctor public SQLDataException(String, String);
-    ctor public SQLDataException(String, String, int);
-    ctor public SQLDataException(Throwable);
-    ctor public SQLDataException(String, Throwable);
-    ctor public SQLDataException(String, String, Throwable);
-    ctor public SQLDataException(String, String, int, Throwable);
-  }
-
-  public class SQLException extends java.lang.Exception implements java.lang.Iterable<java.lang.Throwable> {
-    ctor public SQLException(String, String, int);
-    ctor public SQLException(String, String);
-    ctor public SQLException(String);
-    ctor public SQLException();
-    ctor public SQLException(Throwable);
-    ctor public SQLException(String, Throwable);
-    ctor public SQLException(String, String, Throwable);
-    ctor public SQLException(String, String, int, Throwable);
-    method public int getErrorCode();
-    method public java.sql.SQLException getNextException();
-    method public String getSQLState();
-    method public java.util.Iterator<java.lang.Throwable> iterator();
-    method public void setNextException(java.sql.SQLException);
-  }
-
-  public class SQLFeatureNotSupportedException extends java.sql.SQLNonTransientException {
-    ctor public SQLFeatureNotSupportedException();
-    ctor public SQLFeatureNotSupportedException(String);
-    ctor public SQLFeatureNotSupportedException(String, String);
-    ctor public SQLFeatureNotSupportedException(String, String, int);
-    ctor public SQLFeatureNotSupportedException(Throwable);
-    ctor public SQLFeatureNotSupportedException(String, Throwable);
-    ctor public SQLFeatureNotSupportedException(String, String, Throwable);
-    ctor public SQLFeatureNotSupportedException(String, String, int, Throwable);
-  }
-
-  public interface SQLInput {
-    method public java.sql.Array readArray() throws java.sql.SQLException;
-    method public java.io.InputStream readAsciiStream() throws java.sql.SQLException;
-    method public java.math.BigDecimal readBigDecimal() throws java.sql.SQLException;
-    method public java.io.InputStream readBinaryStream() throws java.sql.SQLException;
-    method public java.sql.Blob readBlob() throws java.sql.SQLException;
-    method public boolean readBoolean() throws java.sql.SQLException;
-    method public byte readByte() throws java.sql.SQLException;
-    method public byte[] readBytes() throws java.sql.SQLException;
-    method public java.io.Reader readCharacterStream() throws java.sql.SQLException;
-    method public java.sql.Clob readClob() throws java.sql.SQLException;
-    method public java.sql.Date readDate() throws java.sql.SQLException;
-    method public double readDouble() throws java.sql.SQLException;
-    method public float readFloat() throws java.sql.SQLException;
-    method public int readInt() throws java.sql.SQLException;
-    method public long readLong() throws java.sql.SQLException;
-    method public java.sql.NClob readNClob() throws java.sql.SQLException;
-    method public String readNString() throws java.sql.SQLException;
-    method public Object readObject() throws java.sql.SQLException;
-    method public java.sql.Ref readRef() throws java.sql.SQLException;
-    method public java.sql.RowId readRowId() throws java.sql.SQLException;
-    method public java.sql.SQLXML readSQLXML() throws java.sql.SQLException;
-    method public short readShort() throws java.sql.SQLException;
-    method public String readString() throws java.sql.SQLException;
-    method public java.sql.Time readTime() throws java.sql.SQLException;
-    method public java.sql.Timestamp readTimestamp() throws java.sql.SQLException;
-    method public java.net.URL readURL() throws java.sql.SQLException;
-    method public boolean wasNull() throws java.sql.SQLException;
-  }
-
-  public class SQLIntegrityConstraintViolationException extends java.sql.SQLNonTransientException {
-    ctor public SQLIntegrityConstraintViolationException();
-    ctor public SQLIntegrityConstraintViolationException(String);
-    ctor public SQLIntegrityConstraintViolationException(String, String);
-    ctor public SQLIntegrityConstraintViolationException(String, String, int);
-    ctor public SQLIntegrityConstraintViolationException(Throwable);
-    ctor public SQLIntegrityConstraintViolationException(String, Throwable);
-    ctor public SQLIntegrityConstraintViolationException(String, String, Throwable);
-    ctor public SQLIntegrityConstraintViolationException(String, String, int, Throwable);
-  }
-
-  public class SQLInvalidAuthorizationSpecException extends java.sql.SQLNonTransientException {
-    ctor public SQLInvalidAuthorizationSpecException();
-    ctor public SQLInvalidAuthorizationSpecException(String);
-    ctor public SQLInvalidAuthorizationSpecException(String, String);
-    ctor public SQLInvalidAuthorizationSpecException(String, String, int);
-    ctor public SQLInvalidAuthorizationSpecException(Throwable);
-    ctor public SQLInvalidAuthorizationSpecException(String, Throwable);
-    ctor public SQLInvalidAuthorizationSpecException(String, String, Throwable);
-    ctor public SQLInvalidAuthorizationSpecException(String, String, int, Throwable);
-  }
-
-  public class SQLNonTransientConnectionException extends java.sql.SQLNonTransientException {
-    ctor public SQLNonTransientConnectionException();
-    ctor public SQLNonTransientConnectionException(String);
-    ctor public SQLNonTransientConnectionException(String, String);
-    ctor public SQLNonTransientConnectionException(String, String, int);
-    ctor public SQLNonTransientConnectionException(Throwable);
-    ctor public SQLNonTransientConnectionException(String, Throwable);
-    ctor public SQLNonTransientConnectionException(String, String, Throwable);
-    ctor public SQLNonTransientConnectionException(String, String, int, Throwable);
-  }
-
-  public class SQLNonTransientException extends java.sql.SQLException {
-    ctor public SQLNonTransientException();
-    ctor public SQLNonTransientException(String);
-    ctor public SQLNonTransientException(String, String);
-    ctor public SQLNonTransientException(String, String, int);
-    ctor public SQLNonTransientException(Throwable);
-    ctor public SQLNonTransientException(String, Throwable);
-    ctor public SQLNonTransientException(String, String, Throwable);
-    ctor public SQLNonTransientException(String, String, int, Throwable);
-  }
-
-  public interface SQLOutput {
-    method public void writeArray(java.sql.Array) throws java.sql.SQLException;
-    method public void writeAsciiStream(java.io.InputStream) throws java.sql.SQLException;
-    method public void writeBigDecimal(java.math.BigDecimal) throws java.sql.SQLException;
-    method public void writeBinaryStream(java.io.InputStream) throws java.sql.SQLException;
-    method public void writeBlob(java.sql.Blob) throws java.sql.SQLException;
-    method public void writeBoolean(boolean) throws java.sql.SQLException;
-    method public void writeByte(byte) throws java.sql.SQLException;
-    method public void writeBytes(byte[]) throws java.sql.SQLException;
-    method public void writeCharacterStream(java.io.Reader) throws java.sql.SQLException;
-    method public void writeClob(java.sql.Clob) throws java.sql.SQLException;
-    method public void writeDate(java.sql.Date) throws java.sql.SQLException;
-    method public void writeDouble(double) throws java.sql.SQLException;
-    method public void writeFloat(float) throws java.sql.SQLException;
-    method public void writeInt(int) throws java.sql.SQLException;
-    method public void writeLong(long) throws java.sql.SQLException;
-    method public void writeNClob(java.sql.NClob) throws java.sql.SQLException;
-    method public void writeNString(String) throws java.sql.SQLException;
-    method public void writeObject(java.sql.SQLData) throws java.sql.SQLException;
-    method public void writeRef(java.sql.Ref) throws java.sql.SQLException;
-    method public void writeRowId(java.sql.RowId) throws java.sql.SQLException;
-    method public void writeSQLXML(java.sql.SQLXML) throws java.sql.SQLException;
-    method public void writeShort(short) throws java.sql.SQLException;
-    method public void writeString(String) throws java.sql.SQLException;
-    method public void writeStruct(java.sql.Struct) throws java.sql.SQLException;
-    method public void writeTime(java.sql.Time) throws java.sql.SQLException;
-    method public void writeTimestamp(java.sql.Timestamp) throws java.sql.SQLException;
-    method public void writeURL(java.net.URL) throws java.sql.SQLException;
-  }
-
-  public final class SQLPermission extends java.security.BasicPermission {
-    ctor public SQLPermission(String);
-    ctor public SQLPermission(String, String);
-  }
-
-  public class SQLRecoverableException extends java.sql.SQLException {
-    ctor public SQLRecoverableException();
-    ctor public SQLRecoverableException(String);
-    ctor public SQLRecoverableException(String, String);
-    ctor public SQLRecoverableException(String, String, int);
-    ctor public SQLRecoverableException(Throwable);
-    ctor public SQLRecoverableException(String, Throwable);
-    ctor public SQLRecoverableException(String, String, Throwable);
-    ctor public SQLRecoverableException(String, String, int, Throwable);
-  }
-
-  public class SQLSyntaxErrorException extends java.sql.SQLNonTransientException {
-    ctor public SQLSyntaxErrorException();
-    ctor public SQLSyntaxErrorException(String);
-    ctor public SQLSyntaxErrorException(String, String);
-    ctor public SQLSyntaxErrorException(String, String, int);
-    ctor public SQLSyntaxErrorException(Throwable);
-    ctor public SQLSyntaxErrorException(String, Throwable);
-    ctor public SQLSyntaxErrorException(String, String, Throwable);
-    ctor public SQLSyntaxErrorException(String, String, int, Throwable);
-  }
-
-  public class SQLTimeoutException extends java.sql.SQLTransientException {
-    ctor public SQLTimeoutException();
-    ctor public SQLTimeoutException(String);
-    ctor public SQLTimeoutException(String, String);
-    ctor public SQLTimeoutException(String, String, int);
-    ctor public SQLTimeoutException(Throwable);
-    ctor public SQLTimeoutException(String, Throwable);
-    ctor public SQLTimeoutException(String, String, Throwable);
-    ctor public SQLTimeoutException(String, String, int, Throwable);
-  }
-
-  public class SQLTransactionRollbackException extends java.sql.SQLTransientException {
-    ctor public SQLTransactionRollbackException();
-    ctor public SQLTransactionRollbackException(String);
-    ctor public SQLTransactionRollbackException(String, String);
-    ctor public SQLTransactionRollbackException(String, String, int);
-    ctor public SQLTransactionRollbackException(Throwable);
-    ctor public SQLTransactionRollbackException(String, Throwable);
-    ctor public SQLTransactionRollbackException(String, String, Throwable);
-    ctor public SQLTransactionRollbackException(String, String, int, Throwable);
-  }
-
-  public class SQLTransientConnectionException extends java.sql.SQLTransientException {
-    ctor public SQLTransientConnectionException();
-    ctor public SQLTransientConnectionException(String);
-    ctor public SQLTransientConnectionException(String, String);
-    ctor public SQLTransientConnectionException(String, String, int);
-    ctor public SQLTransientConnectionException(Throwable);
-    ctor public SQLTransientConnectionException(String, Throwable);
-    ctor public SQLTransientConnectionException(String, String, Throwable);
-    ctor public SQLTransientConnectionException(String, String, int, Throwable);
-  }
-
-  public class SQLTransientException extends java.sql.SQLException {
-    ctor public SQLTransientException();
-    ctor public SQLTransientException(String);
-    ctor public SQLTransientException(String, String);
-    ctor public SQLTransientException(String, String, int);
-    ctor public SQLTransientException(Throwable);
-    ctor public SQLTransientException(String, Throwable);
-    ctor public SQLTransientException(String, String, Throwable);
-    ctor public SQLTransientException(String, String, int, Throwable);
-  }
-
-  public class SQLWarning extends java.sql.SQLException {
-    ctor public SQLWarning(String, String, int);
-    ctor public SQLWarning(String, String);
-    ctor public SQLWarning(String);
-    ctor public SQLWarning();
-    ctor public SQLWarning(Throwable);
-    ctor public SQLWarning(String, Throwable);
-    ctor public SQLWarning(String, String, Throwable);
-    ctor public SQLWarning(String, String, int, Throwable);
-    method public java.sql.SQLWarning getNextWarning();
-    method public void setNextWarning(java.sql.SQLWarning);
-  }
-
-  public interface SQLXML {
-    method public void free() throws java.sql.SQLException;
-    method public java.io.InputStream getBinaryStream() throws java.sql.SQLException;
-    method public java.io.Reader getCharacterStream() throws java.sql.SQLException;
-    method public <T extends javax.xml.transform.Source> T getSource(Class<T>) throws java.sql.SQLException;
-    method public String getString() throws java.sql.SQLException;
-    method public java.io.OutputStream setBinaryStream() throws java.sql.SQLException;
-    method public java.io.Writer setCharacterStream() throws java.sql.SQLException;
-    method public <T extends javax.xml.transform.Result> T setResult(Class<T>) throws java.sql.SQLException;
-    method public void setString(String) throws java.sql.SQLException;
-  }
-
-  public interface Savepoint {
-    method public int getSavepointId() throws java.sql.SQLException;
-    method public String getSavepointName() throws java.sql.SQLException;
-  }
-
-  public interface Statement extends java.sql.Wrapper java.lang.AutoCloseable {
-    method public void addBatch(String) throws java.sql.SQLException;
-    method public void cancel() throws java.sql.SQLException;
-    method public void clearBatch() throws java.sql.SQLException;
-    method public void clearWarnings() throws java.sql.SQLException;
-    method public void close() throws java.sql.SQLException;
-    method public boolean execute(String) throws java.sql.SQLException;
-    method public boolean execute(String, int) throws java.sql.SQLException;
-    method public boolean execute(String, int[]) throws java.sql.SQLException;
-    method public boolean execute(String, String[]) throws java.sql.SQLException;
-    method public int[] executeBatch() throws java.sql.SQLException;
-    method public java.sql.ResultSet executeQuery(String) throws java.sql.SQLException;
-    method public int executeUpdate(String) throws java.sql.SQLException;
-    method public int executeUpdate(String, int) throws java.sql.SQLException;
-    method public int executeUpdate(String, int[]) throws java.sql.SQLException;
-    method public int executeUpdate(String, String[]) throws java.sql.SQLException;
-    method public java.sql.Connection getConnection() throws java.sql.SQLException;
-    method public int getFetchDirection() throws java.sql.SQLException;
-    method public int getFetchSize() throws java.sql.SQLException;
-    method public java.sql.ResultSet getGeneratedKeys() throws java.sql.SQLException;
-    method public int getMaxFieldSize() throws java.sql.SQLException;
-    method public int getMaxRows() throws java.sql.SQLException;
-    method public boolean getMoreResults() throws java.sql.SQLException;
-    method public boolean getMoreResults(int) throws java.sql.SQLException;
-    method public int getQueryTimeout() throws java.sql.SQLException;
-    method public java.sql.ResultSet getResultSet() throws java.sql.SQLException;
-    method public int getResultSetConcurrency() throws java.sql.SQLException;
-    method public int getResultSetHoldability() throws java.sql.SQLException;
-    method public int getResultSetType() throws java.sql.SQLException;
-    method public int getUpdateCount() throws java.sql.SQLException;
-    method public java.sql.SQLWarning getWarnings() throws java.sql.SQLException;
-    method public boolean isClosed() throws java.sql.SQLException;
-    method public boolean isPoolable() throws java.sql.SQLException;
-    method public void setCursorName(String) throws java.sql.SQLException;
-    method public void setEscapeProcessing(boolean) throws java.sql.SQLException;
-    method public void setFetchDirection(int) throws java.sql.SQLException;
-    method public void setFetchSize(int) throws java.sql.SQLException;
-    method public void setMaxFieldSize(int) throws java.sql.SQLException;
-    method public void setMaxRows(int) throws java.sql.SQLException;
-    method public void setPoolable(boolean) throws java.sql.SQLException;
-    method public void setQueryTimeout(int) throws java.sql.SQLException;
-    field public static final int CLOSE_ALL_RESULTS = 3; // 0x3
-    field public static final int CLOSE_CURRENT_RESULT = 1; // 0x1
-    field public static final int EXECUTE_FAILED = -3; // 0xfffffffd
-    field public static final int KEEP_CURRENT_RESULT = 2; // 0x2
-    field public static final int NO_GENERATED_KEYS = 2; // 0x2
-    field public static final int RETURN_GENERATED_KEYS = 1; // 0x1
-    field public static final int SUCCESS_NO_INFO = -2; // 0xfffffffe
-  }
-
-  public interface Struct {
-    method public Object[] getAttributes() throws java.sql.SQLException;
-    method public Object[] getAttributes(java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
-    method public String getSQLTypeName() throws java.sql.SQLException;
-  }
-
-  public class Time extends java.util.Date {
-    ctor @Deprecated public Time(int, int, int);
-    ctor public Time(long);
-    method public static java.sql.Time valueOf(String);
-  }
-
-  public class Timestamp extends java.util.Date {
-    ctor @Deprecated public Timestamp(int, int, int, int, int, int, int);
-    ctor public Timestamp(long);
-    method public boolean after(java.sql.Timestamp);
-    method public boolean before(java.sql.Timestamp);
-    method public int compareTo(java.sql.Timestamp);
-    method public boolean equals(java.sql.Timestamp);
-    method public int getNanos();
-    method public void setNanos(int);
-    method public static java.sql.Timestamp valueOf(String);
-  }
-
-  public class Types {
-    field public static final int ARRAY = 2003; // 0x7d3
-    field public static final int BIGINT = -5; // 0xfffffffb
-    field public static final int BINARY = -2; // 0xfffffffe
-    field public static final int BIT = -7; // 0xfffffff9
-    field public static final int BLOB = 2004; // 0x7d4
-    field public static final int BOOLEAN = 16; // 0x10
-    field public static final int CHAR = 1; // 0x1
-    field public static final int CLOB = 2005; // 0x7d5
-    field public static final int DATALINK = 70; // 0x46
-    field public static final int DATE = 91; // 0x5b
-    field public static final int DECIMAL = 3; // 0x3
-    field public static final int DISTINCT = 2001; // 0x7d1
-    field public static final int DOUBLE = 8; // 0x8
-    field public static final int FLOAT = 6; // 0x6
-    field public static final int INTEGER = 4; // 0x4
-    field public static final int JAVA_OBJECT = 2000; // 0x7d0
-    field public static final int LONGNVARCHAR = -16; // 0xfffffff0
-    field public static final int LONGVARBINARY = -4; // 0xfffffffc
-    field public static final int LONGVARCHAR = -1; // 0xffffffff
-    field public static final int NCHAR = -15; // 0xfffffff1
-    field public static final int NCLOB = 2011; // 0x7db
-    field public static final int NULL = 0; // 0x0
-    field public static final int NUMERIC = 2; // 0x2
-    field public static final int NVARCHAR = -9; // 0xfffffff7
-    field public static final int OTHER = 1111; // 0x457
-    field public static final int REAL = 7; // 0x7
-    field public static final int REF = 2006; // 0x7d6
-    field public static final int ROWID = -8; // 0xfffffff8
-    field public static final int SMALLINT = 5; // 0x5
-    field public static final int SQLXML = 2009; // 0x7d9
-    field public static final int STRUCT = 2002; // 0x7d2
-    field public static final int TIME = 92; // 0x5c
-    field public static final int TIMESTAMP = 93; // 0x5d
-    field public static final int TINYINT = -6; // 0xfffffffa
-    field public static final int VARBINARY = -3; // 0xfffffffd
-    field public static final int VARCHAR = 12; // 0xc
-  }
-
-  public interface Wrapper {
-    method public boolean isWrapperFor(Class<?>) throws java.sql.SQLException;
-    method public <T> T unwrap(Class<T>) throws java.sql.SQLException;
-  }
-
-}
-
-package java.text {
-
-  public class Annotation {
-    ctor public Annotation(Object);
-    method public Object getValue();
-  }
-
-  public interface AttributedCharacterIterator extends java.text.CharacterIterator {
-    method public java.util.Set<java.text.AttributedCharacterIterator.Attribute> getAllAttributeKeys();
-    method public Object getAttribute(java.text.AttributedCharacterIterator.Attribute);
-    method public java.util.Map<java.text.AttributedCharacterIterator.Attribute,java.lang.Object> getAttributes();
-    method public int getRunLimit();
-    method public int getRunLimit(java.text.AttributedCharacterIterator.Attribute);
-    method public int getRunLimit(java.util.Set<? extends java.text.AttributedCharacterIterator.Attribute>);
-    method public int getRunStart();
-    method public int getRunStart(java.text.AttributedCharacterIterator.Attribute);
-    method public int getRunStart(java.util.Set<? extends java.text.AttributedCharacterIterator.Attribute>);
-  }
-
-  public static class AttributedCharacterIterator.Attribute implements java.io.Serializable {
-    ctor protected AttributedCharacterIterator.Attribute(String);
-    method public final boolean equals(Object);
-    method protected String getName();
-    method public final int hashCode();
-    method protected Object readResolve() throws java.io.InvalidObjectException;
-    field public static final java.text.AttributedCharacterIterator.Attribute INPUT_METHOD_SEGMENT;
-    field public static final java.text.AttributedCharacterIterator.Attribute LANGUAGE;
-    field public static final java.text.AttributedCharacterIterator.Attribute READING;
-  }
-
-  public class AttributedString {
-    ctor public AttributedString(String);
-    ctor public AttributedString(String, java.util.Map<? extends java.text.AttributedCharacterIterator.Attribute,?>);
-    ctor public AttributedString(java.text.AttributedCharacterIterator);
-    ctor public AttributedString(java.text.AttributedCharacterIterator, int, int);
-    ctor public AttributedString(java.text.AttributedCharacterIterator, int, int, java.text.AttributedCharacterIterator.Attribute[]);
-    method public void addAttribute(java.text.AttributedCharacterIterator.Attribute, Object);
-    method public void addAttribute(java.text.AttributedCharacterIterator.Attribute, Object, int, int);
-    method public void addAttributes(java.util.Map<? extends java.text.AttributedCharacterIterator.Attribute,?>, int, int);
-    method public java.text.AttributedCharacterIterator getIterator();
-    method public java.text.AttributedCharacterIterator getIterator(java.text.AttributedCharacterIterator.Attribute[]);
-    method public java.text.AttributedCharacterIterator getIterator(java.text.AttributedCharacterIterator.Attribute[], int, int);
-  }
-
-  public final class Bidi {
-    ctor public Bidi(String, int);
-    ctor public Bidi(java.text.AttributedCharacterIterator);
-    ctor public Bidi(char[], int, byte[], int, int, int);
-    method public boolean baseIsLeftToRight();
-    method public java.text.Bidi createLineBidi(int, int);
-    method public int getBaseLevel();
-    method public int getLength();
-    method public int getLevelAt(int);
-    method public int getRunCount();
-    method public int getRunLevel(int);
-    method public int getRunLimit(int);
-    method public int getRunStart(int);
-    method public boolean isLeftToRight();
-    method public boolean isMixed();
-    method public boolean isRightToLeft();
-    method public static void reorderVisually(byte[], int, Object[], int, int);
-    method public static boolean requiresBidi(char[], int, int);
-    field public static final int DIRECTION_DEFAULT_LEFT_TO_RIGHT = -2; // 0xfffffffe
-    field public static final int DIRECTION_DEFAULT_RIGHT_TO_LEFT = -1; // 0xffffffff
-    field public static final int DIRECTION_LEFT_TO_RIGHT = 0; // 0x0
-    field public static final int DIRECTION_RIGHT_TO_LEFT = 1; // 0x1
-  }
-
-  public abstract class BreakIterator implements java.lang.Cloneable {
-    ctor protected BreakIterator();
-    method public Object clone();
-    method public abstract int current();
-    method public abstract int first();
-    method public abstract int following(int);
-    method public static java.util.Locale[] getAvailableLocales();
-    method public static java.text.BreakIterator getCharacterInstance();
-    method public static java.text.BreakIterator getCharacterInstance(java.util.Locale);
-    method public static java.text.BreakIterator getLineInstance();
-    method public static java.text.BreakIterator getLineInstance(java.util.Locale);
-    method public static java.text.BreakIterator getSentenceInstance();
-    method public static java.text.BreakIterator getSentenceInstance(java.util.Locale);
-    method public abstract java.text.CharacterIterator getText();
-    method public static java.text.BreakIterator getWordInstance();
-    method public static java.text.BreakIterator getWordInstance(java.util.Locale);
-    method public boolean isBoundary(int);
-    method public abstract int last();
-    method public abstract int next(int);
-    method public abstract int next();
-    method public int preceding(int);
-    method public abstract int previous();
-    method public void setText(String);
-    method public abstract void setText(java.text.CharacterIterator);
-    field public static final int DONE = -1; // 0xffffffff
-  }
-
-  public interface CharacterIterator extends java.lang.Cloneable {
-    method public Object clone();
-    method public char current();
-    method public char first();
-    method public int getBeginIndex();
-    method public int getEndIndex();
-    method public int getIndex();
-    method public char last();
-    method public char next();
-    method public char previous();
-    method public char setIndex(int);
-    field public static final char DONE = 65535; // 0xffff '\uffff'
-  }
-
-  public class ChoiceFormat extends java.text.NumberFormat {
-    ctor public ChoiceFormat(String);
-    ctor public ChoiceFormat(double[], String[]);
-    method public void applyPattern(String);
-    method public StringBuffer format(long, StringBuffer, java.text.FieldPosition);
-    method public StringBuffer format(double, StringBuffer, java.text.FieldPosition);
-    method public Object[] getFormats();
-    method public double[] getLimits();
-    method public static final double nextDouble(double);
-    method public static double nextDouble(double, boolean);
-    method public Number parse(String, java.text.ParsePosition);
-    method public static final double previousDouble(double);
-    method public void setChoices(double[], String[]);
-    method public String toPattern();
-  }
-
-  public final class CollationElementIterator {
-    method public int getMaxExpansion(int);
-    method public int getOffset();
-    method public int next();
-    method public int previous();
-    method public static int primaryOrder(int);
-    method public void reset();
-    method public static short secondaryOrder(int);
-    method public void setOffset(int);
-    method public void setText(String);
-    method public void setText(java.text.CharacterIterator);
-    method public static short tertiaryOrder(int);
-    field public static final int NULLORDER = -1; // 0xffffffff
-  }
-
-  public abstract class CollationKey implements java.lang.Comparable<java.text.CollationKey> {
-    ctor protected CollationKey(String);
-    method public abstract int compareTo(java.text.CollationKey);
-    method public String getSourceString();
-    method public abstract byte[] toByteArray();
-  }
-
-  public abstract class Collator implements java.lang.Cloneable java.util.Comparator<java.lang.Object> {
-    ctor protected Collator();
-    method public Object clone();
-    method public abstract int compare(String, String);
-    method public int compare(Object, Object);
-    method public boolean equals(String, String);
-    method public static java.util.Locale[] getAvailableLocales();
-    method public abstract java.text.CollationKey getCollationKey(String);
-    method public int getDecomposition();
-    method public static java.text.Collator getInstance();
-    method public static java.text.Collator getInstance(java.util.Locale);
-    method public int getStrength();
-    method public abstract int hashCode();
-    method public void setDecomposition(int);
-    method public void setStrength(int);
-    field public static final int CANONICAL_DECOMPOSITION = 1; // 0x1
-    field public static final int FULL_DECOMPOSITION = 2; // 0x2
-    field public static final int IDENTICAL = 3; // 0x3
-    field public static final int NO_DECOMPOSITION = 0; // 0x0
-    field public static final int PRIMARY = 0; // 0x0
-    field public static final int SECONDARY = 1; // 0x1
-    field public static final int TERTIARY = 2; // 0x2
-  }
-
-  public abstract class DateFormat extends java.text.Format {
-    ctor protected DateFormat();
-    method @NonNull public final StringBuffer format(@NonNull Object, @NonNull StringBuffer, @NonNull java.text.FieldPosition);
-    method @NonNull public abstract StringBuffer format(@NonNull java.util.Date, @NonNull StringBuffer, @NonNull java.text.FieldPosition);
-    method @NonNull public final String format(@NonNull java.util.Date);
-    method @NonNull public static java.util.Locale[] getAvailableLocales();
-    method @NonNull public java.util.Calendar getCalendar();
-    method @NonNull public static final java.text.DateFormat getDateInstance();
-    method @NonNull public static final java.text.DateFormat getDateInstance(int);
-    method @NonNull public static final java.text.DateFormat getDateInstance(int, @NonNull java.util.Locale);
-    method @NonNull public static final java.text.DateFormat getDateTimeInstance();
-    method @NonNull public static final java.text.DateFormat getDateTimeInstance(int, int);
-    method @NonNull public static final java.text.DateFormat getDateTimeInstance(int, int, @NonNull java.util.Locale);
-    method @NonNull public static final java.text.DateFormat getInstance();
-    method @NonNull public java.text.NumberFormat getNumberFormat();
-    method @NonNull public static final java.text.DateFormat getTimeInstance();
-    method @NonNull public static final java.text.DateFormat getTimeInstance(int);
-    method @NonNull public static final java.text.DateFormat getTimeInstance(int, @NonNull java.util.Locale);
-    method @NonNull public java.util.TimeZone getTimeZone();
-    method public boolean isLenient();
-    method @Nullable public java.util.Date parse(@NonNull String) throws java.text.ParseException;
-    method @Nullable public abstract java.util.Date parse(@NonNull String, @NonNull java.text.ParsePosition);
-    method @Nullable public Object parseObject(@NonNull String, @NonNull java.text.ParsePosition);
-    method public void setCalendar(@NonNull java.util.Calendar);
-    method public void setLenient(boolean);
-    method public void setNumberFormat(@NonNull java.text.NumberFormat);
-    method public void setTimeZone(@NonNull java.util.TimeZone);
-    field public static final int AM_PM_FIELD = 14; // 0xe
-    field public static final int DATE_FIELD = 3; // 0x3
-    field public static final int DAY_OF_WEEK_FIELD = 9; // 0x9
-    field public static final int DAY_OF_WEEK_IN_MONTH_FIELD = 11; // 0xb
-    field public static final int DAY_OF_YEAR_FIELD = 10; // 0xa
-    field public static final int DEFAULT = 2; // 0x2
-    field public static final int ERA_FIELD = 0; // 0x0
-    field public static final int FULL = 0; // 0x0
-    field public static final int HOUR0_FIELD = 16; // 0x10
-    field public static final int HOUR1_FIELD = 15; // 0xf
-    field public static final int HOUR_OF_DAY0_FIELD = 5; // 0x5
-    field public static final int HOUR_OF_DAY1_FIELD = 4; // 0x4
-    field public static final int LONG = 1; // 0x1
-    field public static final int MEDIUM = 2; // 0x2
-    field public static final int MILLISECOND_FIELD = 8; // 0x8
-    field public static final int MINUTE_FIELD = 6; // 0x6
-    field public static final int MONTH_FIELD = 2; // 0x2
-    field public static final int SECOND_FIELD = 7; // 0x7
-    field public static final int SHORT = 3; // 0x3
-    field public static final int TIMEZONE_FIELD = 17; // 0x11
-    field public static final int WEEK_OF_MONTH_FIELD = 13; // 0xd
-    field public static final int WEEK_OF_YEAR_FIELD = 12; // 0xc
-    field public static final int YEAR_FIELD = 1; // 0x1
-    field @NonNull protected java.util.Calendar calendar;
-    field @NonNull protected java.text.NumberFormat numberFormat;
-  }
-
-  public static class DateFormat.Field extends java.text.Format.Field {
-    ctor protected DateFormat.Field(@NonNull String, int);
-    method public int getCalendarField();
-    method @NonNull public static java.text.DateFormat.Field ofCalendarField(int);
-    field @NonNull public static final java.text.DateFormat.Field AM_PM;
-    field @NonNull public static final java.text.DateFormat.Field DAY_OF_MONTH;
-    field @NonNull public static final java.text.DateFormat.Field DAY_OF_WEEK;
-    field @NonNull public static final java.text.DateFormat.Field DAY_OF_WEEK_IN_MONTH;
-    field @NonNull public static final java.text.DateFormat.Field DAY_OF_YEAR;
-    field @NonNull public static final java.text.DateFormat.Field ERA;
-    field @NonNull public static final java.text.DateFormat.Field HOUR0;
-    field @NonNull public static final java.text.DateFormat.Field HOUR1;
-    field @NonNull public static final java.text.DateFormat.Field HOUR_OF_DAY0;
-    field @NonNull public static final java.text.DateFormat.Field HOUR_OF_DAY1;
-    field @NonNull public static final java.text.DateFormat.Field MILLISECOND;
-    field @NonNull public static final java.text.DateFormat.Field MINUTE;
-    field @NonNull public static final java.text.DateFormat.Field MONTH;
-    field @NonNull public static final java.text.DateFormat.Field SECOND;
-    field @NonNull public static final java.text.DateFormat.Field TIME_ZONE;
-    field @NonNull public static final java.text.DateFormat.Field WEEK_OF_MONTH;
-    field @NonNull public static final java.text.DateFormat.Field WEEK_OF_YEAR;
-    field @NonNull public static final java.text.DateFormat.Field YEAR;
-  }
-
-  public class DateFormatSymbols implements java.lang.Cloneable java.io.Serializable {
-    ctor public DateFormatSymbols();
-    ctor public DateFormatSymbols(java.util.Locale);
-    method public Object clone();
-    method public String[] getAmPmStrings();
-    method public static java.util.Locale[] getAvailableLocales();
-    method public String[] getEras();
-    method public static final java.text.DateFormatSymbols getInstance();
-    method public static final java.text.DateFormatSymbols getInstance(java.util.Locale);
-    method public String getLocalPatternChars();
-    method public String[] getMonths();
-    method public String[] getShortMonths();
-    method public String[] getShortWeekdays();
-    method public String[] getWeekdays();
-    method public String[][] getZoneStrings();
-    method public void setAmPmStrings(String[]);
-    method public void setEras(String[]);
-    method public void setLocalPatternChars(String);
-    method public void setMonths(String[]);
-    method public void setShortMonths(String[]);
-    method public void setShortWeekdays(String[]);
-    method public void setWeekdays(String[]);
-    method public void setZoneStrings(String[][]);
-  }
-
-  public class DecimalFormat extends java.text.NumberFormat {
-    ctor public DecimalFormat();
-    ctor public DecimalFormat(String);
-    ctor public DecimalFormat(String, java.text.DecimalFormatSymbols);
-    method public void applyLocalizedPattern(String);
-    method public void applyPattern(String);
-    method public final StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
-    method public StringBuffer format(double, StringBuffer, java.text.FieldPosition);
-    method public StringBuffer format(long, StringBuffer, java.text.FieldPosition);
-    method public java.text.DecimalFormatSymbols getDecimalFormatSymbols();
-    method public int getGroupingSize();
-    method public int getMultiplier();
-    method public String getNegativePrefix();
-    method public String getNegativeSuffix();
-    method public String getPositivePrefix();
-    method public String getPositiveSuffix();
-    method public boolean isDecimalSeparatorAlwaysShown();
-    method public boolean isParseBigDecimal();
-    method public Number parse(String, java.text.ParsePosition);
-    method public void setDecimalFormatSymbols(java.text.DecimalFormatSymbols);
-    method public void setDecimalSeparatorAlwaysShown(boolean);
-    method public void setGroupingSize(int);
-    method public void setMultiplier(int);
-    method public void setNegativePrefix(String);
-    method public void setNegativeSuffix(String);
-    method public void setParseBigDecimal(boolean);
-    method public void setPositivePrefix(String);
-    method public void setPositiveSuffix(String);
-    method public String toLocalizedPattern();
-    method public String toPattern();
-  }
-
-  public class DecimalFormatSymbols implements java.lang.Cloneable java.io.Serializable {
-    ctor public DecimalFormatSymbols();
-    ctor public DecimalFormatSymbols(java.util.Locale);
-    method public Object clone();
-    method public static java.util.Locale[] getAvailableLocales();
-    method public java.util.Currency getCurrency();
-    method public String getCurrencySymbol();
-    method public char getDecimalSeparator();
-    method public char getDigit();
-    method public String getExponentSeparator();
-    method public char getGroupingSeparator();
-    method public String getInfinity();
-    method public static final java.text.DecimalFormatSymbols getInstance();
-    method public static final java.text.DecimalFormatSymbols getInstance(java.util.Locale);
-    method public String getInternationalCurrencySymbol();
-    method public char getMinusSign();
-    method public char getMonetaryDecimalSeparator();
-    method public String getNaN();
-    method public char getPatternSeparator();
-    method public char getPerMill();
-    method public char getPercent();
-    method public char getZeroDigit();
-    method public void setCurrency(java.util.Currency);
-    method public void setCurrencySymbol(String);
-    method public void setDecimalSeparator(char);
-    method public void setDigit(char);
-    method public void setExponentSeparator(String);
-    method public void setGroupingSeparator(char);
-    method public void setInfinity(String);
-    method public void setInternationalCurrencySymbol(String);
-    method public void setMinusSign(char);
-    method public void setMonetaryDecimalSeparator(char);
-    method public void setNaN(String);
-    method public void setPatternSeparator(char);
-    method public void setPerMill(char);
-    method public void setPercent(char);
-    method public void setZeroDigit(char);
-  }
-
-  public class FieldPosition {
-    ctor public FieldPosition(int);
-    ctor public FieldPosition(java.text.Format.Field);
-    ctor public FieldPosition(java.text.Format.Field, int);
-    method public int getBeginIndex();
-    method public int getEndIndex();
-    method public int getField();
-    method public java.text.Format.Field getFieldAttribute();
-    method public void setBeginIndex(int);
-    method public void setEndIndex(int);
-  }
-
-  public abstract class Format implements java.lang.Cloneable java.io.Serializable {
-    ctor protected Format();
-    method public Object clone();
-    method public final String format(Object);
-    method public abstract StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
-    method public java.text.AttributedCharacterIterator formatToCharacterIterator(Object);
-    method public abstract Object parseObject(String, java.text.ParsePosition);
-    method public Object parseObject(String) throws java.text.ParseException;
-  }
-
-  public static class Format.Field extends java.text.AttributedCharacterIterator.Attribute {
-    ctor protected Format.Field(String);
-  }
-
-  public class MessageFormat extends java.text.Format {
-    ctor public MessageFormat(String);
-    ctor public MessageFormat(String, java.util.Locale);
-    method public void applyPattern(String);
-    method public final StringBuffer format(Object[], StringBuffer, java.text.FieldPosition);
-    method public static String format(String, java.lang.Object...);
-    method public final StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
-    method public java.text.Format[] getFormats();
-    method public java.text.Format[] getFormatsByArgumentIndex();
-    method public java.util.Locale getLocale();
-    method public Object[] parse(String, java.text.ParsePosition);
-    method public Object[] parse(String) throws java.text.ParseException;
-    method public Object parseObject(String, java.text.ParsePosition);
-    method public void setFormat(int, java.text.Format);
-    method public void setFormatByArgumentIndex(int, java.text.Format);
-    method public void setFormats(java.text.Format[]);
-    method public void setFormatsByArgumentIndex(java.text.Format[]);
-    method public void setLocale(java.util.Locale);
-    method public String toPattern();
-  }
-
-  public static class MessageFormat.Field extends java.text.Format.Field {
-    ctor protected MessageFormat.Field(String);
-    field public static final java.text.MessageFormat.Field ARGUMENT;
-  }
-
-  public final class Normalizer {
-    method public static boolean isNormalized(CharSequence, java.text.Normalizer.Form);
-    method public static String normalize(CharSequence, java.text.Normalizer.Form);
-  }
-
-  public enum Normalizer.Form {
-    enum_constant public static final java.text.Normalizer.Form NFC;
-    enum_constant public static final java.text.Normalizer.Form NFD;
-    enum_constant public static final java.text.Normalizer.Form NFKC;
-    enum_constant public static final java.text.Normalizer.Form NFKD;
-  }
-
-  public abstract class NumberFormat extends java.text.Format {
-    ctor protected NumberFormat();
-    method @NonNull public StringBuffer format(@NonNull Object, @NonNull StringBuffer, @NonNull java.text.FieldPosition);
-    method @NonNull public final String format(double);
-    method @NonNull public final String format(long);
-    method @NonNull public abstract StringBuffer format(double, @NonNull StringBuffer, @NonNull java.text.FieldPosition);
-    method @NonNull public abstract StringBuffer format(long, @NonNull StringBuffer, @NonNull java.text.FieldPosition);
-    method @NonNull public static java.util.Locale[] getAvailableLocales();
-    method @Nullable public java.util.Currency getCurrency();
-    method @NonNull public static final java.text.NumberFormat getCurrencyInstance();
-    method @NonNull public static java.text.NumberFormat getCurrencyInstance(@NonNull java.util.Locale);
-    method @NonNull public static final java.text.NumberFormat getInstance();
-    method @NonNull public static java.text.NumberFormat getInstance(@NonNull java.util.Locale);
-    method @NonNull public static final java.text.NumberFormat getIntegerInstance();
-    method @NonNull public static java.text.NumberFormat getIntegerInstance(@NonNull java.util.Locale);
-    method public int getMaximumFractionDigits();
-    method public int getMaximumIntegerDigits();
-    method public int getMinimumFractionDigits();
-    method public int getMinimumIntegerDigits();
-    method @NonNull public static final java.text.NumberFormat getNumberInstance();
-    method @NonNull public static java.text.NumberFormat getNumberInstance(@NonNull java.util.Locale);
-    method @NonNull public static final java.text.NumberFormat getPercentInstance();
-    method @NonNull public static java.text.NumberFormat getPercentInstance(@NonNull java.util.Locale);
-    method @NonNull public java.math.RoundingMode getRoundingMode();
-    method public boolean isGroupingUsed();
-    method public boolean isParseIntegerOnly();
-    method @Nullable public abstract Number parse(@NonNull String, @NonNull java.text.ParsePosition);
-    method @Nullable public Number parse(@NonNull String) throws java.text.ParseException;
-    method @Nullable public final Object parseObject(@NonNull String, @NonNull java.text.ParsePosition);
-    method public void setCurrency(@NonNull java.util.Currency);
-    method public void setGroupingUsed(boolean);
-    method public void setMaximumFractionDigits(int);
-    method public void setMaximumIntegerDigits(int);
-    method public void setMinimumFractionDigits(int);
-    method public void setMinimumIntegerDigits(int);
-    method public void setParseIntegerOnly(boolean);
-    method public void setRoundingMode(@Nullable java.math.RoundingMode);
-    field public static final int FRACTION_FIELD = 1; // 0x1
-    field public static final int INTEGER_FIELD = 0; // 0x0
-  }
-
-  public static class NumberFormat.Field extends java.text.Format.Field {
-    ctor protected NumberFormat.Field(@NonNull String);
-    field @NonNull public static final java.text.NumberFormat.Field CURRENCY;
-    field @NonNull public static final java.text.NumberFormat.Field DECIMAL_SEPARATOR;
-    field @NonNull public static final java.text.NumberFormat.Field EXPONENT;
-    field @NonNull public static final java.text.NumberFormat.Field EXPONENT_SIGN;
-    field @NonNull public static final java.text.NumberFormat.Field EXPONENT_SYMBOL;
-    field @NonNull public static final java.text.NumberFormat.Field FRACTION;
-    field @NonNull public static final java.text.NumberFormat.Field GROUPING_SEPARATOR;
-    field @NonNull public static final java.text.NumberFormat.Field INTEGER;
-    field @NonNull public static final java.text.NumberFormat.Field PERCENT;
-    field @NonNull public static final java.text.NumberFormat.Field PERMILLE;
-    field @NonNull public static final java.text.NumberFormat.Field SIGN;
-  }
-
-  public class ParseException extends java.lang.Exception {
-    ctor public ParseException(String, int);
-    method public int getErrorOffset();
-  }
-
-  public class ParsePosition {
-    ctor public ParsePosition(int);
-    method public int getErrorIndex();
-    method public int getIndex();
-    method public void setErrorIndex(int);
-    method public void setIndex(int);
-  }
-
-  public class RuleBasedCollator extends java.text.Collator {
-    ctor public RuleBasedCollator(String) throws java.text.ParseException;
-    method public int compare(String, String);
-    method public java.text.CollationElementIterator getCollationElementIterator(String);
-    method public java.text.CollationElementIterator getCollationElementIterator(java.text.CharacterIterator);
-    method public java.text.CollationKey getCollationKey(String);
-    method public String getRules();
-  }
-
-  public class SimpleDateFormat extends java.text.DateFormat {
-    ctor public SimpleDateFormat();
-    ctor public SimpleDateFormat(String);
-    ctor public SimpleDateFormat(String, java.util.Locale);
-    ctor public SimpleDateFormat(String, java.text.DateFormatSymbols);
-    method public void applyLocalizedPattern(String);
-    method public void applyPattern(String);
-    method public StringBuffer format(java.util.Date, StringBuffer, java.text.FieldPosition);
-    method public java.util.Date get2DigitYearStart();
-    method public java.text.DateFormatSymbols getDateFormatSymbols();
-    method public java.util.Date parse(String, java.text.ParsePosition);
-    method public void set2DigitYearStart(java.util.Date);
-    method public void setDateFormatSymbols(java.text.DateFormatSymbols);
-    method public String toLocalizedPattern();
-    method public String toPattern();
-  }
-
-  public final class StringCharacterIterator implements java.text.CharacterIterator {
-    ctor public StringCharacterIterator(String);
-    ctor public StringCharacterIterator(String, int);
-    ctor public StringCharacterIterator(String, int, int, int);
-    method public Object clone();
-    method public char current();
-    method public char first();
-    method public int getBeginIndex();
-    method public int getEndIndex();
-    method public int getIndex();
-    method public char last();
-    method public char next();
-    method public char previous();
-    method public char setIndex(int);
-    method public void setText(String);
-  }
-
-}
-
-package java.time {
-
-  public abstract class Clock {
-    ctor protected Clock();
-    method public static java.time.Clock fixed(java.time.Instant, java.time.ZoneId);
-    method public abstract java.time.ZoneId getZone();
-    method public abstract java.time.Instant instant();
-    method public long millis();
-    method public static java.time.Clock offset(java.time.Clock, java.time.Duration);
-    method public static java.time.Clock system(java.time.ZoneId);
-    method public static java.time.Clock systemDefaultZone();
-    method public static java.time.Clock systemUTC();
-    method public static java.time.Clock tick(java.time.Clock, java.time.Duration);
-    method public static java.time.Clock tickMinutes(java.time.ZoneId);
-    method public static java.time.Clock tickSeconds(java.time.ZoneId);
-    method public abstract java.time.Clock withZone(java.time.ZoneId);
-  }
-
-  public class DateTimeException extends java.lang.RuntimeException {
-    ctor public DateTimeException(String);
-    ctor public DateTimeException(String, Throwable);
-  }
-
-  public enum DayOfWeek implements java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
-    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public static java.time.DayOfWeek from(java.time.temporal.TemporalAccessor);
-    method public String getDisplayName(java.time.format.TextStyle, java.util.Locale);
-    method public long getLong(java.time.temporal.TemporalField);
-    method public int getValue();
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public java.time.DayOfWeek minus(long);
-    method public static java.time.DayOfWeek of(int);
-    method public java.time.DayOfWeek plus(long);
-    enum_constant public static final java.time.DayOfWeek FRIDAY;
-    enum_constant public static final java.time.DayOfWeek MONDAY;
-    enum_constant public static final java.time.DayOfWeek SATURDAY;
-    enum_constant public static final java.time.DayOfWeek SUNDAY;
-    enum_constant public static final java.time.DayOfWeek THURSDAY;
-    enum_constant public static final java.time.DayOfWeek TUESDAY;
-    enum_constant public static final java.time.DayOfWeek WEDNESDAY;
-  }
-
-  public final class Duration implements java.lang.Comparable<java.time.Duration> java.io.Serializable java.time.temporal.TemporalAmount {
-    method public java.time.Duration abs();
-    method public java.time.temporal.Temporal addTo(java.time.temporal.Temporal);
-    method public static java.time.Duration between(java.time.temporal.Temporal, java.time.temporal.Temporal);
-    method public int compareTo(java.time.Duration);
-    method public java.time.Duration dividedBy(long);
-    method public static java.time.Duration from(java.time.temporal.TemporalAmount);
-    method public long get(java.time.temporal.TemporalUnit);
-    method public int getNano();
-    method public long getSeconds();
-    method public java.util.List<java.time.temporal.TemporalUnit> getUnits();
-    method public boolean isNegative();
-    method public boolean isZero();
-    method public java.time.Duration minus(java.time.Duration);
-    method public java.time.Duration minus(long, java.time.temporal.TemporalUnit);
-    method public java.time.Duration minusDays(long);
-    method public java.time.Duration minusHours(long);
-    method public java.time.Duration minusMillis(long);
-    method public java.time.Duration minusMinutes(long);
-    method public java.time.Duration minusNanos(long);
-    method public java.time.Duration minusSeconds(long);
-    method public java.time.Duration multipliedBy(long);
-    method public java.time.Duration negated();
-    method public static java.time.Duration of(long, java.time.temporal.TemporalUnit);
-    method public static java.time.Duration ofDays(long);
-    method public static java.time.Duration ofHours(long);
-    method public static java.time.Duration ofMillis(long);
-    method public static java.time.Duration ofMinutes(long);
-    method public static java.time.Duration ofNanos(long);
-    method public static java.time.Duration ofSeconds(long);
-    method public static java.time.Duration ofSeconds(long, long);
-    method public static java.time.Duration parse(CharSequence);
-    method public java.time.Duration plus(java.time.Duration);
-    method public java.time.Duration plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.Duration plusDays(long);
-    method public java.time.Duration plusHours(long);
-    method public java.time.Duration plusMillis(long);
-    method public java.time.Duration plusMinutes(long);
-    method public java.time.Duration plusNanos(long);
-    method public java.time.Duration plusSeconds(long);
-    method public java.time.temporal.Temporal subtractFrom(java.time.temporal.Temporal);
-    method public long toDays();
-    method public long toHours();
-    method public long toMillis();
-    method public long toMinutes();
-    method public long toNanos();
-    method public java.time.Duration withNanos(int);
-    method public java.time.Duration withSeconds(long);
-    field public static final java.time.Duration ZERO;
-  }
-
-  public final class Instant implements java.lang.Comparable<java.time.Instant> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
-    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public java.time.OffsetDateTime atOffset(java.time.ZoneOffset);
-    method public java.time.ZonedDateTime atZone(java.time.ZoneId);
-    method public int compareTo(java.time.Instant);
-    method public static java.time.Instant from(java.time.temporal.TemporalAccessor);
-    method public long getEpochSecond();
-    method public long getLong(java.time.temporal.TemporalField);
-    method public int getNano();
-    method public boolean isAfter(java.time.Instant);
-    method public boolean isBefore(java.time.Instant);
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public boolean isSupported(java.time.temporal.TemporalUnit);
-    method public java.time.Instant minus(java.time.temporal.TemporalAmount);
-    method public java.time.Instant minus(long, java.time.temporal.TemporalUnit);
-    method public java.time.Instant minusMillis(long);
-    method public java.time.Instant minusNanos(long);
-    method public java.time.Instant minusSeconds(long);
-    method public static java.time.Instant now();
-    method public static java.time.Instant now(java.time.Clock);
-    method public static java.time.Instant ofEpochMilli(long);
-    method public static java.time.Instant ofEpochSecond(long);
-    method public static java.time.Instant ofEpochSecond(long, long);
-    method public static java.time.Instant parse(CharSequence);
-    method public java.time.Instant plus(java.time.temporal.TemporalAmount);
-    method public java.time.Instant plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.Instant plusMillis(long);
-    method public java.time.Instant plusNanos(long);
-    method public java.time.Instant plusSeconds(long);
-    method public long toEpochMilli();
-    method public java.time.Instant truncatedTo(java.time.temporal.TemporalUnit);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.Instant with(java.time.temporal.TemporalAdjuster);
-    method public java.time.Instant with(java.time.temporal.TemporalField, long);
-    field public static final java.time.Instant EPOCH;
-    field public static final java.time.Instant MAX;
-    field public static final java.time.Instant MIN;
-  }
-
-  public final class LocalDate implements java.time.chrono.ChronoLocalDate java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
-    method public java.time.LocalDateTime atStartOfDay();
-    method public java.time.ZonedDateTime atStartOfDay(java.time.ZoneId);
-    method public java.time.LocalDateTime atTime(java.time.LocalTime);
-    method public java.time.LocalDateTime atTime(int, int);
-    method public java.time.LocalDateTime atTime(int, int, int);
-    method public java.time.LocalDateTime atTime(int, int, int, int);
-    method public java.time.OffsetDateTime atTime(java.time.OffsetTime);
-    method public static java.time.LocalDate from(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.IsoChronology getChronology();
-    method public int getDayOfMonth();
-    method public java.time.DayOfWeek getDayOfWeek();
-    method public int getDayOfYear();
-    method public long getLong(java.time.temporal.TemporalField);
-    method public java.time.Month getMonth();
-    method public int getMonthValue();
-    method public int getYear();
-    method public int lengthOfMonth();
-    method public java.time.LocalDate minus(java.time.temporal.TemporalAmount);
-    method public java.time.LocalDate minus(long, java.time.temporal.TemporalUnit);
-    method public java.time.LocalDate minusDays(long);
-    method public java.time.LocalDate minusMonths(long);
-    method public java.time.LocalDate minusWeeks(long);
-    method public java.time.LocalDate minusYears(long);
-    method public static java.time.LocalDate now();
-    method public static java.time.LocalDate now(java.time.ZoneId);
-    method public static java.time.LocalDate now(java.time.Clock);
-    method public static java.time.LocalDate of(int, java.time.Month, int);
-    method public static java.time.LocalDate of(int, int, int);
-    method public static java.time.LocalDate ofEpochDay(long);
-    method public static java.time.LocalDate ofYearDay(int, int);
-    method public static java.time.LocalDate parse(CharSequence);
-    method public static java.time.LocalDate parse(CharSequence, java.time.format.DateTimeFormatter);
-    method public java.time.LocalDate plus(java.time.temporal.TemporalAmount);
-    method public java.time.LocalDate plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.LocalDate plusDays(long);
-    method public java.time.LocalDate plusMonths(long);
-    method public java.time.LocalDate plusWeeks(long);
-    method public java.time.LocalDate plusYears(long);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.Period until(java.time.chrono.ChronoLocalDate);
-    method public java.time.LocalDate with(java.time.temporal.TemporalAdjuster);
-    method public java.time.LocalDate with(java.time.temporal.TemporalField, long);
-    method public java.time.LocalDate withDayOfMonth(int);
-    method public java.time.LocalDate withDayOfYear(int);
-    method public java.time.LocalDate withMonth(int);
-    method public java.time.LocalDate withYear(int);
-    field public static final java.time.LocalDate MAX;
-    field public static final java.time.LocalDate MIN;
-  }
-
-  public final class LocalDateTime implements java.time.chrono.ChronoLocalDateTime<java.time.LocalDate> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
-    method public java.time.OffsetDateTime atOffset(java.time.ZoneOffset);
-    method public java.time.ZonedDateTime atZone(java.time.ZoneId);
-    method public static java.time.LocalDateTime from(java.time.temporal.TemporalAccessor);
-    method public int getDayOfMonth();
-    method public java.time.DayOfWeek getDayOfWeek();
-    method public int getDayOfYear();
-    method public int getHour();
-    method public long getLong(java.time.temporal.TemporalField);
-    method public int getMinute();
-    method public java.time.Month getMonth();
-    method public int getMonthValue();
-    method public int getNano();
-    method public int getSecond();
-    method public int getYear();
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public java.time.LocalDateTime minus(java.time.temporal.TemporalAmount);
-    method public java.time.LocalDateTime minus(long, java.time.temporal.TemporalUnit);
-    method public java.time.LocalDateTime minusDays(long);
-    method public java.time.LocalDateTime minusHours(long);
-    method public java.time.LocalDateTime minusMinutes(long);
-    method public java.time.LocalDateTime minusMonths(long);
-    method public java.time.LocalDateTime minusNanos(long);
-    method public java.time.LocalDateTime minusSeconds(long);
-    method public java.time.LocalDateTime minusWeeks(long);
-    method public java.time.LocalDateTime minusYears(long);
-    method public static java.time.LocalDateTime now();
-    method public static java.time.LocalDateTime now(java.time.ZoneId);
-    method public static java.time.LocalDateTime now(java.time.Clock);
-    method public static java.time.LocalDateTime of(int, java.time.Month, int, int, int);
-    method public static java.time.LocalDateTime of(int, java.time.Month, int, int, int, int);
-    method public static java.time.LocalDateTime of(int, java.time.Month, int, int, int, int, int);
-    method public static java.time.LocalDateTime of(int, int, int, int, int);
-    method public static java.time.LocalDateTime of(int, int, int, int, int, int);
-    method public static java.time.LocalDateTime of(int, int, int, int, int, int, int);
-    method public static java.time.LocalDateTime of(java.time.LocalDate, java.time.LocalTime);
-    method public static java.time.LocalDateTime ofEpochSecond(long, int, java.time.ZoneOffset);
-    method public static java.time.LocalDateTime ofInstant(java.time.Instant, java.time.ZoneId);
-    method public static java.time.LocalDateTime parse(CharSequence);
-    method public static java.time.LocalDateTime parse(CharSequence, java.time.format.DateTimeFormatter);
-    method public java.time.LocalDateTime plus(java.time.temporal.TemporalAmount);
-    method public java.time.LocalDateTime plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.LocalDateTime plusDays(long);
-    method public java.time.LocalDateTime plusHours(long);
-    method public java.time.LocalDateTime plusMinutes(long);
-    method public java.time.LocalDateTime plusMonths(long);
-    method public java.time.LocalDateTime plusNanos(long);
-    method public java.time.LocalDateTime plusSeconds(long);
-    method public java.time.LocalDateTime plusWeeks(long);
-    method public java.time.LocalDateTime plusYears(long);
-    method public java.time.LocalDate toLocalDate();
-    method public java.time.LocalTime toLocalTime();
-    method public java.time.LocalDateTime truncatedTo(java.time.temporal.TemporalUnit);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.LocalDateTime with(java.time.temporal.TemporalAdjuster);
-    method public java.time.LocalDateTime with(java.time.temporal.TemporalField, long);
-    method public java.time.LocalDateTime withDayOfMonth(int);
-    method public java.time.LocalDateTime withDayOfYear(int);
-    method public java.time.LocalDateTime withHour(int);
-    method public java.time.LocalDateTime withMinute(int);
-    method public java.time.LocalDateTime withMonth(int);
-    method public java.time.LocalDateTime withNano(int);
-    method public java.time.LocalDateTime withSecond(int);
-    method public java.time.LocalDateTime withYear(int);
-    field public static final java.time.LocalDateTime MAX;
-    field public static final java.time.LocalDateTime MIN;
-  }
-
-  public final class LocalTime implements java.lang.Comparable<java.time.LocalTime> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
-    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public java.time.LocalDateTime atDate(java.time.LocalDate);
-    method public java.time.OffsetTime atOffset(java.time.ZoneOffset);
-    method public int compareTo(java.time.LocalTime);
-    method public String format(java.time.format.DateTimeFormatter);
-    method public static java.time.LocalTime from(java.time.temporal.TemporalAccessor);
-    method public int getHour();
-    method public long getLong(java.time.temporal.TemporalField);
-    method public int getMinute();
-    method public int getNano();
-    method public int getSecond();
-    method public boolean isAfter(java.time.LocalTime);
-    method public boolean isBefore(java.time.LocalTime);
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public boolean isSupported(java.time.temporal.TemporalUnit);
-    method public java.time.LocalTime minus(java.time.temporal.TemporalAmount);
-    method public java.time.LocalTime minus(long, java.time.temporal.TemporalUnit);
-    method public java.time.LocalTime minusHours(long);
-    method public java.time.LocalTime minusMinutes(long);
-    method public java.time.LocalTime minusNanos(long);
-    method public java.time.LocalTime minusSeconds(long);
-    method public static java.time.LocalTime now();
-    method public static java.time.LocalTime now(java.time.ZoneId);
-    method public static java.time.LocalTime now(java.time.Clock);
-    method public static java.time.LocalTime of(int, int);
-    method public static java.time.LocalTime of(int, int, int);
-    method public static java.time.LocalTime of(int, int, int, int);
-    method public static java.time.LocalTime ofNanoOfDay(long);
-    method public static java.time.LocalTime ofSecondOfDay(long);
-    method public static java.time.LocalTime parse(CharSequence);
-    method public static java.time.LocalTime parse(CharSequence, java.time.format.DateTimeFormatter);
-    method public java.time.LocalTime plus(java.time.temporal.TemporalAmount);
-    method public java.time.LocalTime plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.LocalTime plusHours(long);
-    method public java.time.LocalTime plusMinutes(long);
-    method public java.time.LocalTime plusNanos(long);
-    method public java.time.LocalTime plusSeconds(long);
-    method public long toNanoOfDay();
-    method public int toSecondOfDay();
-    method public java.time.LocalTime truncatedTo(java.time.temporal.TemporalUnit);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.LocalTime with(java.time.temporal.TemporalAdjuster);
-    method public java.time.LocalTime with(java.time.temporal.TemporalField, long);
-    method public java.time.LocalTime withHour(int);
-    method public java.time.LocalTime withMinute(int);
-    method public java.time.LocalTime withNano(int);
-    method public java.time.LocalTime withSecond(int);
-    field public static final java.time.LocalTime MAX;
-    field public static final java.time.LocalTime MIDNIGHT;
-    field public static final java.time.LocalTime MIN;
-    field public static final java.time.LocalTime NOON;
-  }
-
-  public enum Month implements java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
-    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public int firstDayOfYear(boolean);
-    method public java.time.Month firstMonthOfQuarter();
-    method public static java.time.Month from(java.time.temporal.TemporalAccessor);
-    method public String getDisplayName(java.time.format.TextStyle, java.util.Locale);
-    method public long getLong(java.time.temporal.TemporalField);
-    method public int getValue();
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public int length(boolean);
-    method public int maxLength();
-    method public int minLength();
-    method public java.time.Month minus(long);
-    method public static java.time.Month of(int);
-    method public java.time.Month plus(long);
-    enum_constant public static final java.time.Month APRIL;
-    enum_constant public static final java.time.Month AUGUST;
-    enum_constant public static final java.time.Month DECEMBER;
-    enum_constant public static final java.time.Month FEBRUARY;
-    enum_constant public static final java.time.Month JANUARY;
-    enum_constant public static final java.time.Month JULY;
-    enum_constant public static final java.time.Month JUNE;
-    enum_constant public static final java.time.Month MARCH;
-    enum_constant public static final java.time.Month MAY;
-    enum_constant public static final java.time.Month NOVEMBER;
-    enum_constant public static final java.time.Month OCTOBER;
-    enum_constant public static final java.time.Month SEPTEMBER;
-  }
-
-  public final class MonthDay implements java.lang.Comparable<java.time.MonthDay> java.io.Serializable java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
-    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public java.time.LocalDate atYear(int);
-    method public int compareTo(java.time.MonthDay);
-    method public String format(java.time.format.DateTimeFormatter);
-    method public static java.time.MonthDay from(java.time.temporal.TemporalAccessor);
-    method public int getDayOfMonth();
-    method public long getLong(java.time.temporal.TemporalField);
-    method public java.time.Month getMonth();
-    method public int getMonthValue();
-    method public boolean isAfter(java.time.MonthDay);
-    method public boolean isBefore(java.time.MonthDay);
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public boolean isValidYear(int);
-    method public static java.time.MonthDay now();
-    method public static java.time.MonthDay now(java.time.ZoneId);
-    method public static java.time.MonthDay now(java.time.Clock);
-    method public static java.time.MonthDay of(java.time.Month, int);
-    method public static java.time.MonthDay of(int, int);
-    method public static java.time.MonthDay parse(CharSequence);
-    method public static java.time.MonthDay parse(CharSequence, java.time.format.DateTimeFormatter);
-    method public java.time.MonthDay with(java.time.Month);
-    method public java.time.MonthDay withDayOfMonth(int);
-    method public java.time.MonthDay withMonth(int);
-  }
-
-  public final class OffsetDateTime implements java.lang.Comparable<java.time.OffsetDateTime> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
-    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public java.time.ZonedDateTime atZoneSameInstant(java.time.ZoneId);
-    method public java.time.ZonedDateTime atZoneSimilarLocal(java.time.ZoneId);
-    method public int compareTo(java.time.OffsetDateTime);
-    method public String format(java.time.format.DateTimeFormatter);
-    method public static java.time.OffsetDateTime from(java.time.temporal.TemporalAccessor);
-    method public int getDayOfMonth();
-    method public java.time.DayOfWeek getDayOfWeek();
-    method public int getDayOfYear();
-    method public int getHour();
-    method public long getLong(java.time.temporal.TemporalField);
-    method public int getMinute();
-    method public java.time.Month getMonth();
-    method public int getMonthValue();
-    method public int getNano();
-    method public java.time.ZoneOffset getOffset();
-    method public int getSecond();
-    method public int getYear();
-    method public boolean isAfter(java.time.OffsetDateTime);
-    method public boolean isBefore(java.time.OffsetDateTime);
-    method public boolean isEqual(java.time.OffsetDateTime);
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public boolean isSupported(java.time.temporal.TemporalUnit);
-    method public java.time.OffsetDateTime minus(java.time.temporal.TemporalAmount);
-    method public java.time.OffsetDateTime minus(long, java.time.temporal.TemporalUnit);
-    method public java.time.OffsetDateTime minusDays(long);
-    method public java.time.OffsetDateTime minusHours(long);
-    method public java.time.OffsetDateTime minusMinutes(long);
-    method public java.time.OffsetDateTime minusMonths(long);
-    method public java.time.OffsetDateTime minusNanos(long);
-    method public java.time.OffsetDateTime minusSeconds(long);
-    method public java.time.OffsetDateTime minusWeeks(long);
-    method public java.time.OffsetDateTime minusYears(long);
-    method public static java.time.OffsetDateTime now();
-    method public static java.time.OffsetDateTime now(java.time.ZoneId);
-    method public static java.time.OffsetDateTime now(java.time.Clock);
-    method public static java.time.OffsetDateTime of(java.time.LocalDate, java.time.LocalTime, java.time.ZoneOffset);
-    method public static java.time.OffsetDateTime of(java.time.LocalDateTime, java.time.ZoneOffset);
-    method public static java.time.OffsetDateTime of(int, int, int, int, int, int, int, java.time.ZoneOffset);
-    method public static java.time.OffsetDateTime ofInstant(java.time.Instant, java.time.ZoneId);
-    method public static java.time.OffsetDateTime parse(CharSequence);
-    method public static java.time.OffsetDateTime parse(CharSequence, java.time.format.DateTimeFormatter);
-    method public java.time.OffsetDateTime plus(java.time.temporal.TemporalAmount);
-    method public java.time.OffsetDateTime plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.OffsetDateTime plusDays(long);
-    method public java.time.OffsetDateTime plusHours(long);
-    method public java.time.OffsetDateTime plusMinutes(long);
-    method public java.time.OffsetDateTime plusMonths(long);
-    method public java.time.OffsetDateTime plusNanos(long);
-    method public java.time.OffsetDateTime plusSeconds(long);
-    method public java.time.OffsetDateTime plusWeeks(long);
-    method public java.time.OffsetDateTime plusYears(long);
-    method public static java.util.Comparator<java.time.OffsetDateTime> timeLineOrder();
-    method public long toEpochSecond();
-    method public java.time.Instant toInstant();
-    method public java.time.LocalDate toLocalDate();
-    method public java.time.LocalDateTime toLocalDateTime();
-    method public java.time.LocalTime toLocalTime();
-    method public java.time.OffsetTime toOffsetTime();
-    method public java.time.ZonedDateTime toZonedDateTime();
-    method public java.time.OffsetDateTime truncatedTo(java.time.temporal.TemporalUnit);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.OffsetDateTime with(java.time.temporal.TemporalAdjuster);
-    method public java.time.OffsetDateTime with(java.time.temporal.TemporalField, long);
-    method public java.time.OffsetDateTime withDayOfMonth(int);
-    method public java.time.OffsetDateTime withDayOfYear(int);
-    method public java.time.OffsetDateTime withHour(int);
-    method public java.time.OffsetDateTime withMinute(int);
-    method public java.time.OffsetDateTime withMonth(int);
-    method public java.time.OffsetDateTime withNano(int);
-    method public java.time.OffsetDateTime withOffsetSameInstant(java.time.ZoneOffset);
-    method public java.time.OffsetDateTime withOffsetSameLocal(java.time.ZoneOffset);
-    method public java.time.OffsetDateTime withSecond(int);
-    method public java.time.OffsetDateTime withYear(int);
-    field public static final java.time.OffsetDateTime MAX;
-    field public static final java.time.OffsetDateTime MIN;
-  }
-
-  public final class OffsetTime implements java.lang.Comparable<java.time.OffsetTime> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
-    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public java.time.OffsetDateTime atDate(java.time.LocalDate);
-    method public int compareTo(java.time.OffsetTime);
-    method public String format(java.time.format.DateTimeFormatter);
-    method public static java.time.OffsetTime from(java.time.temporal.TemporalAccessor);
-    method public int getHour();
-    method public long getLong(java.time.temporal.TemporalField);
-    method public int getMinute();
-    method public int getNano();
-    method public java.time.ZoneOffset getOffset();
-    method public int getSecond();
-    method public boolean isAfter(java.time.OffsetTime);
-    method public boolean isBefore(java.time.OffsetTime);
-    method public boolean isEqual(java.time.OffsetTime);
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public boolean isSupported(java.time.temporal.TemporalUnit);
-    method public java.time.OffsetTime minus(java.time.temporal.TemporalAmount);
-    method public java.time.OffsetTime minus(long, java.time.temporal.TemporalUnit);
-    method public java.time.OffsetTime minusHours(long);
-    method public java.time.OffsetTime minusMinutes(long);
-    method public java.time.OffsetTime minusNanos(long);
-    method public java.time.OffsetTime minusSeconds(long);
-    method public static java.time.OffsetTime now();
-    method public static java.time.OffsetTime now(java.time.ZoneId);
-    method public static java.time.OffsetTime now(java.time.Clock);
-    method public static java.time.OffsetTime of(java.time.LocalTime, java.time.ZoneOffset);
-    method public static java.time.OffsetTime of(int, int, int, int, java.time.ZoneOffset);
-    method public static java.time.OffsetTime ofInstant(java.time.Instant, java.time.ZoneId);
-    method public static java.time.OffsetTime parse(CharSequence);
-    method public static java.time.OffsetTime parse(CharSequence, java.time.format.DateTimeFormatter);
-    method public java.time.OffsetTime plus(java.time.temporal.TemporalAmount);
-    method public java.time.OffsetTime plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.OffsetTime plusHours(long);
-    method public java.time.OffsetTime plusMinutes(long);
-    method public java.time.OffsetTime plusNanos(long);
-    method public java.time.OffsetTime plusSeconds(long);
-    method public java.time.LocalTime toLocalTime();
-    method public java.time.OffsetTime truncatedTo(java.time.temporal.TemporalUnit);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.OffsetTime with(java.time.temporal.TemporalAdjuster);
-    method public java.time.OffsetTime with(java.time.temporal.TemporalField, long);
-    method public java.time.OffsetTime withHour(int);
-    method public java.time.OffsetTime withMinute(int);
-    method public java.time.OffsetTime withNano(int);
-    method public java.time.OffsetTime withOffsetSameInstant(java.time.ZoneOffset);
-    method public java.time.OffsetTime withOffsetSameLocal(java.time.ZoneOffset);
-    method public java.time.OffsetTime withSecond(int);
-    field public static final java.time.OffsetTime MAX;
-    field public static final java.time.OffsetTime MIN;
-  }
-
-  public final class Period implements java.time.chrono.ChronoPeriod java.io.Serializable {
-    method public java.time.temporal.Temporal addTo(java.time.temporal.Temporal);
-    method public static java.time.Period between(java.time.LocalDate, java.time.LocalDate);
-    method public static java.time.Period from(java.time.temporal.TemporalAmount);
-    method public long get(java.time.temporal.TemporalUnit);
-    method public java.time.chrono.IsoChronology getChronology();
-    method public int getDays();
-    method public int getMonths();
-    method public java.util.List<java.time.temporal.TemporalUnit> getUnits();
-    method public int getYears();
-    method public java.time.Period minus(java.time.temporal.TemporalAmount);
-    method public java.time.Period minusDays(long);
-    method public java.time.Period minusMonths(long);
-    method public java.time.Period minusYears(long);
-    method public java.time.Period multipliedBy(int);
-    method public java.time.Period negated();
-    method public java.time.Period normalized();
-    method public static java.time.Period of(int, int, int);
-    method public static java.time.Period ofDays(int);
-    method public static java.time.Period ofMonths(int);
-    method public static java.time.Period ofWeeks(int);
-    method public static java.time.Period ofYears(int);
-    method public static java.time.Period parse(CharSequence);
-    method public java.time.Period plus(java.time.temporal.TemporalAmount);
-    method public java.time.Period plusDays(long);
-    method public java.time.Period plusMonths(long);
-    method public java.time.Period plusYears(long);
-    method public java.time.temporal.Temporal subtractFrom(java.time.temporal.Temporal);
-    method public long toTotalMonths();
-    method public java.time.Period withDays(int);
-    method public java.time.Period withMonths(int);
-    method public java.time.Period withYears(int);
-    field public static final java.time.Period ZERO;
-  }
-
-  public final class Year implements java.lang.Comparable<java.time.Year> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
-    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public java.time.LocalDate atDay(int);
-    method public java.time.YearMonth atMonth(java.time.Month);
-    method public java.time.YearMonth atMonth(int);
-    method public java.time.LocalDate atMonthDay(java.time.MonthDay);
-    method public int compareTo(java.time.Year);
-    method public String format(java.time.format.DateTimeFormatter);
-    method public static java.time.Year from(java.time.temporal.TemporalAccessor);
-    method public long getLong(java.time.temporal.TemporalField);
-    method public int getValue();
-    method public boolean isAfter(java.time.Year);
-    method public boolean isBefore(java.time.Year);
-    method public static boolean isLeap(long);
-    method public boolean isLeap();
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public boolean isSupported(java.time.temporal.TemporalUnit);
-    method public boolean isValidMonthDay(java.time.MonthDay);
-    method public int length();
-    method public java.time.Year minus(java.time.temporal.TemporalAmount);
-    method public java.time.Year minus(long, java.time.temporal.TemporalUnit);
-    method public java.time.Year minusYears(long);
-    method public static java.time.Year now();
-    method public static java.time.Year now(java.time.ZoneId);
-    method public static java.time.Year now(java.time.Clock);
-    method public static java.time.Year of(int);
-    method public static java.time.Year parse(CharSequence);
-    method public static java.time.Year parse(CharSequence, java.time.format.DateTimeFormatter);
-    method public java.time.Year plus(java.time.temporal.TemporalAmount);
-    method public java.time.Year plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.Year plusYears(long);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.Year with(java.time.temporal.TemporalAdjuster);
-    method public java.time.Year with(java.time.temporal.TemporalField, long);
-    field public static final int MAX_VALUE = 999999999; // 0x3b9ac9ff
-    field public static final int MIN_VALUE = -999999999; // 0xc4653601
-  }
-
-  public final class YearMonth implements java.lang.Comparable<java.time.YearMonth> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
-    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public java.time.LocalDate atDay(int);
-    method public java.time.LocalDate atEndOfMonth();
-    method public int compareTo(java.time.YearMonth);
-    method public String format(java.time.format.DateTimeFormatter);
-    method public static java.time.YearMonth from(java.time.temporal.TemporalAccessor);
-    method public long getLong(java.time.temporal.TemporalField);
-    method public java.time.Month getMonth();
-    method public int getMonthValue();
-    method public int getYear();
-    method public boolean isAfter(java.time.YearMonth);
-    method public boolean isBefore(java.time.YearMonth);
-    method public boolean isLeapYear();
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public boolean isSupported(java.time.temporal.TemporalUnit);
-    method public boolean isValidDay(int);
-    method public int lengthOfMonth();
-    method public int lengthOfYear();
-    method public java.time.YearMonth minus(java.time.temporal.TemporalAmount);
-    method public java.time.YearMonth minus(long, java.time.temporal.TemporalUnit);
-    method public java.time.YearMonth minusMonths(long);
-    method public java.time.YearMonth minusYears(long);
-    method public static java.time.YearMonth now();
-    method public static java.time.YearMonth now(java.time.ZoneId);
-    method public static java.time.YearMonth now(java.time.Clock);
-    method public static java.time.YearMonth of(int, java.time.Month);
-    method public static java.time.YearMonth of(int, int);
-    method public static java.time.YearMonth parse(CharSequence);
-    method public static java.time.YearMonth parse(CharSequence, java.time.format.DateTimeFormatter);
-    method public java.time.YearMonth plus(java.time.temporal.TemporalAmount);
-    method public java.time.YearMonth plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.YearMonth plusMonths(long);
-    method public java.time.YearMonth plusYears(long);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.YearMonth with(java.time.temporal.TemporalAdjuster);
-    method public java.time.YearMonth with(java.time.temporal.TemporalField, long);
-    method public java.time.YearMonth withMonth(int);
-    method public java.time.YearMonth withYear(int);
-  }
-
-  public abstract class ZoneId implements java.io.Serializable {
-    method public static java.time.ZoneId from(java.time.temporal.TemporalAccessor);
-    method public static java.util.Set<java.lang.String> getAvailableZoneIds();
-    method public String getDisplayName(java.time.format.TextStyle, java.util.Locale);
-    method public abstract String getId();
-    method public abstract java.time.zone.ZoneRules getRules();
-    method public java.time.ZoneId normalized();
-    method public static java.time.ZoneId of(String, java.util.Map<java.lang.String,java.lang.String>);
-    method public static java.time.ZoneId of(String);
-    method public static java.time.ZoneId ofOffset(String, java.time.ZoneOffset);
-    method public static java.time.ZoneId systemDefault();
-    field public static final java.util.Map<java.lang.String,java.lang.String> SHORT_IDS;
-  }
-
-  public final class ZoneOffset extends java.time.ZoneId implements java.lang.Comparable<java.time.ZoneOffset> java.io.Serializable java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
-    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public int compareTo(java.time.ZoneOffset);
-    method public static java.time.ZoneOffset from(java.time.temporal.TemporalAccessor);
-    method public String getId();
-    method public long getLong(java.time.temporal.TemporalField);
-    method public java.time.zone.ZoneRules getRules();
-    method public int getTotalSeconds();
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public static java.time.ZoneOffset of(String);
-    method public static java.time.ZoneOffset ofHours(int);
-    method public static java.time.ZoneOffset ofHoursMinutes(int, int);
-    method public static java.time.ZoneOffset ofHoursMinutesSeconds(int, int, int);
-    method public static java.time.ZoneOffset ofTotalSeconds(int);
-    field public static final java.time.ZoneOffset MAX;
-    field public static final java.time.ZoneOffset MIN;
-    field public static final java.time.ZoneOffset UTC;
-  }
-
-  public final class ZonedDateTime implements java.time.chrono.ChronoZonedDateTime<java.time.LocalDate> java.io.Serializable java.time.temporal.Temporal {
-    method public static java.time.ZonedDateTime from(java.time.temporal.TemporalAccessor);
-    method public int getDayOfMonth();
-    method public java.time.DayOfWeek getDayOfWeek();
-    method public int getDayOfYear();
-    method public int getHour();
-    method public int getMinute();
-    method public java.time.Month getMonth();
-    method public int getMonthValue();
-    method public int getNano();
-    method public java.time.ZoneOffset getOffset();
-    method public int getSecond();
-    method public int getYear();
-    method public java.time.ZoneId getZone();
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public java.time.ZonedDateTime minus(java.time.temporal.TemporalAmount);
-    method public java.time.ZonedDateTime minus(long, java.time.temporal.TemporalUnit);
-    method public java.time.ZonedDateTime minusDays(long);
-    method public java.time.ZonedDateTime minusHours(long);
-    method public java.time.ZonedDateTime minusMinutes(long);
-    method public java.time.ZonedDateTime minusMonths(long);
-    method public java.time.ZonedDateTime minusNanos(long);
-    method public java.time.ZonedDateTime minusSeconds(long);
-    method public java.time.ZonedDateTime minusWeeks(long);
-    method public java.time.ZonedDateTime minusYears(long);
-    method public static java.time.ZonedDateTime now();
-    method public static java.time.ZonedDateTime now(java.time.ZoneId);
-    method public static java.time.ZonedDateTime now(java.time.Clock);
-    method public static java.time.ZonedDateTime of(java.time.LocalDate, java.time.LocalTime, java.time.ZoneId);
-    method public static java.time.ZonedDateTime of(java.time.LocalDateTime, java.time.ZoneId);
-    method public static java.time.ZonedDateTime of(int, int, int, int, int, int, int, java.time.ZoneId);
-    method public static java.time.ZonedDateTime ofInstant(java.time.Instant, java.time.ZoneId);
-    method public static java.time.ZonedDateTime ofInstant(java.time.LocalDateTime, java.time.ZoneOffset, java.time.ZoneId);
-    method public static java.time.ZonedDateTime ofLocal(java.time.LocalDateTime, java.time.ZoneId, java.time.ZoneOffset);
-    method public static java.time.ZonedDateTime ofStrict(java.time.LocalDateTime, java.time.ZoneOffset, java.time.ZoneId);
-    method public static java.time.ZonedDateTime parse(CharSequence);
-    method public static java.time.ZonedDateTime parse(CharSequence, java.time.format.DateTimeFormatter);
-    method public java.time.ZonedDateTime plus(java.time.temporal.TemporalAmount);
-    method public java.time.ZonedDateTime plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.ZonedDateTime plusDays(long);
-    method public java.time.ZonedDateTime plusHours(long);
-    method public java.time.ZonedDateTime plusMinutes(long);
-    method public java.time.ZonedDateTime plusMonths(long);
-    method public java.time.ZonedDateTime plusNanos(long);
-    method public java.time.ZonedDateTime plusSeconds(long);
-    method public java.time.ZonedDateTime plusWeeks(long);
-    method public java.time.ZonedDateTime plusYears(long);
-    method public java.time.LocalDate toLocalDate();
-    method public java.time.LocalDateTime toLocalDateTime();
-    method public java.time.OffsetDateTime toOffsetDateTime();
-    method public java.time.ZonedDateTime truncatedTo(java.time.temporal.TemporalUnit);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.ZonedDateTime with(java.time.temporal.TemporalAdjuster);
-    method public java.time.ZonedDateTime with(java.time.temporal.TemporalField, long);
-    method public java.time.ZonedDateTime withDayOfMonth(int);
-    method public java.time.ZonedDateTime withDayOfYear(int);
-    method public java.time.ZonedDateTime withEarlierOffsetAtOverlap();
-    method public java.time.ZonedDateTime withFixedOffsetZone();
-    method public java.time.ZonedDateTime withHour(int);
-    method public java.time.ZonedDateTime withLaterOffsetAtOverlap();
-    method public java.time.ZonedDateTime withMinute(int);
-    method public java.time.ZonedDateTime withMonth(int);
-    method public java.time.ZonedDateTime withNano(int);
-    method public java.time.ZonedDateTime withSecond(int);
-    method public java.time.ZonedDateTime withYear(int);
-    method public java.time.ZonedDateTime withZoneSameInstant(java.time.ZoneId);
-    method public java.time.ZonedDateTime withZoneSameLocal(java.time.ZoneId);
-  }
-
-}
-
-package java.time.chrono {
-
-  public abstract class AbstractChronology implements java.time.chrono.Chronology {
-    ctor protected AbstractChronology();
-    method public int compareTo(java.time.chrono.Chronology);
-    method public java.time.chrono.ChronoLocalDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
-  }
-
-  public interface ChronoLocalDate extends java.time.temporal.Temporal java.lang.Comparable<java.time.chrono.ChronoLocalDate> java.time.temporal.TemporalAdjuster {
-    method public default java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public default java.time.chrono.ChronoLocalDateTime<?> atTime(java.time.LocalTime);
-    method public default int compareTo(java.time.chrono.ChronoLocalDate);
-    method public boolean equals(Object);
-    method public default String format(java.time.format.DateTimeFormatter);
-    method public static java.time.chrono.ChronoLocalDate from(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.Chronology getChronology();
-    method public default java.time.chrono.Era getEra();
-    method public int hashCode();
-    method public default boolean isAfter(java.time.chrono.ChronoLocalDate);
-    method public default boolean isBefore(java.time.chrono.ChronoLocalDate);
-    method public default boolean isEqual(java.time.chrono.ChronoLocalDate);
-    method public default boolean isLeapYear();
-    method public default boolean isSupported(java.time.temporal.TemporalField);
-    method public default boolean isSupported(java.time.temporal.TemporalUnit);
-    method public int lengthOfMonth();
-    method public default int lengthOfYear();
-    method public default java.time.chrono.ChronoLocalDate minus(java.time.temporal.TemporalAmount);
-    method public default java.time.chrono.ChronoLocalDate minus(long, java.time.temporal.TemporalUnit);
-    method public default java.time.chrono.ChronoLocalDate plus(java.time.temporal.TemporalAmount);
-    method public default java.time.chrono.ChronoLocalDate plus(long, java.time.temporal.TemporalUnit);
-    method public static java.util.Comparator<java.time.chrono.ChronoLocalDate> timeLineOrder();
-    method public default long toEpochDay();
-    method public String toString();
-    method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate);
-    method public default java.time.chrono.ChronoLocalDate with(java.time.temporal.TemporalAdjuster);
-    method public default java.time.chrono.ChronoLocalDate with(java.time.temporal.TemporalField, long);
-  }
-
-  public interface ChronoLocalDateTime<D extends java.time.chrono.ChronoLocalDate> extends java.time.temporal.Temporal java.lang.Comparable<java.time.chrono.ChronoLocalDateTime<?>> java.time.temporal.TemporalAdjuster {
-    method public default java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public java.time.chrono.ChronoZonedDateTime<D> atZone(java.time.ZoneId);
-    method public default int compareTo(java.time.chrono.ChronoLocalDateTime<?>);
-    method public boolean equals(Object);
-    method public default String format(java.time.format.DateTimeFormatter);
-    method public static java.time.chrono.ChronoLocalDateTime<?> from(java.time.temporal.TemporalAccessor);
-    method public default java.time.chrono.Chronology getChronology();
-    method public int hashCode();
-    method public default boolean isAfter(java.time.chrono.ChronoLocalDateTime<?>);
-    method public default boolean isBefore(java.time.chrono.ChronoLocalDateTime<?>);
-    method public default boolean isEqual(java.time.chrono.ChronoLocalDateTime<?>);
-    method public default boolean isSupported(java.time.temporal.TemporalUnit);
-    method public default java.time.chrono.ChronoLocalDateTime<D> minus(java.time.temporal.TemporalAmount);
-    method public default java.time.chrono.ChronoLocalDateTime<D> minus(long, java.time.temporal.TemporalUnit);
-    method public default java.time.chrono.ChronoLocalDateTime<D> plus(java.time.temporal.TemporalAmount);
-    method public java.time.chrono.ChronoLocalDateTime<D> plus(long, java.time.temporal.TemporalUnit);
-    method public static java.util.Comparator<java.time.chrono.ChronoLocalDateTime<?>> timeLineOrder();
-    method public default long toEpochSecond(java.time.ZoneOffset);
-    method public default java.time.Instant toInstant(java.time.ZoneOffset);
-    method public D toLocalDate();
-    method public java.time.LocalTime toLocalTime();
-    method public String toString();
-    method public default java.time.chrono.ChronoLocalDateTime<D> with(java.time.temporal.TemporalAdjuster);
-    method public java.time.chrono.ChronoLocalDateTime<D> with(java.time.temporal.TemporalField, long);
-  }
-
-  public interface ChronoPeriod extends java.time.temporal.TemporalAmount {
-    method public static java.time.chrono.ChronoPeriod between(java.time.chrono.ChronoLocalDate, java.time.chrono.ChronoLocalDate);
-    method public boolean equals(Object);
-    method public java.time.chrono.Chronology getChronology();
-    method public int hashCode();
-    method public default boolean isNegative();
-    method public default boolean isZero();
-    method public java.time.chrono.ChronoPeriod minus(java.time.temporal.TemporalAmount);
-    method public java.time.chrono.ChronoPeriod multipliedBy(int);
-    method public default java.time.chrono.ChronoPeriod negated();
-    method public java.time.chrono.ChronoPeriod normalized();
-    method public java.time.chrono.ChronoPeriod plus(java.time.temporal.TemporalAmount);
-    method public String toString();
-  }
-
-  public interface ChronoZonedDateTime<D extends java.time.chrono.ChronoLocalDate> extends java.time.temporal.Temporal java.lang.Comparable<java.time.chrono.ChronoZonedDateTime<?>> {
-    method public default int compareTo(java.time.chrono.ChronoZonedDateTime<?>);
-    method public boolean equals(Object);
-    method public default String format(java.time.format.DateTimeFormatter);
-    method public static java.time.chrono.ChronoZonedDateTime<?> from(java.time.temporal.TemporalAccessor);
-    method public default java.time.chrono.Chronology getChronology();
-    method public default long getLong(java.time.temporal.TemporalField);
-    method public java.time.ZoneOffset getOffset();
-    method public java.time.ZoneId getZone();
-    method public int hashCode();
-    method public default boolean isAfter(java.time.chrono.ChronoZonedDateTime<?>);
-    method public default boolean isBefore(java.time.chrono.ChronoZonedDateTime<?>);
-    method public default boolean isEqual(java.time.chrono.ChronoZonedDateTime<?>);
-    method public default boolean isSupported(java.time.temporal.TemporalUnit);
-    method public default java.time.chrono.ChronoZonedDateTime<D> minus(java.time.temporal.TemporalAmount);
-    method public default java.time.chrono.ChronoZonedDateTime<D> minus(long, java.time.temporal.TemporalUnit);
-    method public default java.time.chrono.ChronoZonedDateTime<D> plus(java.time.temporal.TemporalAmount);
-    method public java.time.chrono.ChronoZonedDateTime<D> plus(long, java.time.temporal.TemporalUnit);
-    method public static java.util.Comparator<java.time.chrono.ChronoZonedDateTime<?>> timeLineOrder();
-    method public default long toEpochSecond();
-    method public default java.time.Instant toInstant();
-    method public default D toLocalDate();
-    method public java.time.chrono.ChronoLocalDateTime<D> toLocalDateTime();
-    method public default java.time.LocalTime toLocalTime();
-    method public String toString();
-    method public default java.time.chrono.ChronoZonedDateTime<D> with(java.time.temporal.TemporalAdjuster);
-    method public java.time.chrono.ChronoZonedDateTime<D> with(java.time.temporal.TemporalField, long);
-    method public java.time.chrono.ChronoZonedDateTime<D> withEarlierOffsetAtOverlap();
-    method public java.time.chrono.ChronoZonedDateTime<D> withLaterOffsetAtOverlap();
-    method public java.time.chrono.ChronoZonedDateTime<D> withZoneSameInstant(java.time.ZoneId);
-    method public java.time.chrono.ChronoZonedDateTime<D> withZoneSameLocal(java.time.ZoneId);
-  }
-
-  public interface Chronology extends java.lang.Comparable<java.time.chrono.Chronology> {
-    method public int compareTo(java.time.chrono.Chronology);
-    method public default java.time.chrono.ChronoLocalDate date(java.time.chrono.Era, int, int, int);
-    method public java.time.chrono.ChronoLocalDate date(int, int, int);
-    method public java.time.chrono.ChronoLocalDate date(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.ChronoLocalDate dateEpochDay(long);
-    method public default java.time.chrono.ChronoLocalDate dateNow();
-    method public default java.time.chrono.ChronoLocalDate dateNow(java.time.ZoneId);
-    method public default java.time.chrono.ChronoLocalDate dateNow(java.time.Clock);
-    method public default java.time.chrono.ChronoLocalDate dateYearDay(java.time.chrono.Era, int, int);
-    method public java.time.chrono.ChronoLocalDate dateYearDay(int, int);
-    method public boolean equals(Object);
-    method public java.time.chrono.Era eraOf(int);
-    method public java.util.List<java.time.chrono.Era> eras();
-    method public static java.time.chrono.Chronology from(java.time.temporal.TemporalAccessor);
-    method public static java.util.Set<java.time.chrono.Chronology> getAvailableChronologies();
-    method public String getCalendarType();
-    method public default String getDisplayName(java.time.format.TextStyle, java.util.Locale);
-    method public String getId();
-    method public int hashCode();
-    method public boolean isLeapYear(long);
-    method public default java.time.chrono.ChronoLocalDateTime<? extends java.time.chrono.ChronoLocalDate> localDateTime(java.time.temporal.TemporalAccessor);
-    method public static java.time.chrono.Chronology of(String);
-    method public static java.time.chrono.Chronology ofLocale(java.util.Locale);
-    method public default java.time.chrono.ChronoPeriod period(int, int, int);
-    method public int prolepticYear(java.time.chrono.Era, int);
-    method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
-    method public java.time.chrono.ChronoLocalDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
-    method public String toString();
-    method public default java.time.chrono.ChronoZonedDateTime<? extends java.time.chrono.ChronoLocalDate> zonedDateTime(java.time.temporal.TemporalAccessor);
-    method public default java.time.chrono.ChronoZonedDateTime<? extends java.time.chrono.ChronoLocalDate> zonedDateTime(java.time.Instant, java.time.ZoneId);
-  }
-
-  public interface Era extends java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
-    method public default java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public default String getDisplayName(java.time.format.TextStyle, java.util.Locale);
-    method public default long getLong(java.time.temporal.TemporalField);
-    method public int getValue();
-    method public default boolean isSupported(java.time.temporal.TemporalField);
-  }
-
-  public final class HijrahChronology extends java.time.chrono.AbstractChronology implements java.io.Serializable {
-    method public java.time.chrono.HijrahDate date(java.time.chrono.Era, int, int, int);
-    method public java.time.chrono.HijrahDate date(int, int, int);
-    method public java.time.chrono.HijrahDate date(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.HijrahDate dateEpochDay(long);
-    method public java.time.chrono.HijrahDate dateNow();
-    method public java.time.chrono.HijrahDate dateNow(java.time.ZoneId);
-    method public java.time.chrono.HijrahDate dateNow(java.time.Clock);
-    method public java.time.chrono.HijrahDate dateYearDay(java.time.chrono.Era, int, int);
-    method public java.time.chrono.HijrahDate dateYearDay(int, int);
-    method public java.time.chrono.HijrahEra eraOf(int);
-    method public java.util.List<java.time.chrono.Era> eras();
-    method public String getCalendarType();
-    method public String getId();
-    method public boolean isLeapYear(long);
-    method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.HijrahDate> localDateTime(java.time.temporal.TemporalAccessor);
-    method public int prolepticYear(java.time.chrono.Era, int);
-    method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
-    method public java.time.chrono.HijrahDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
-    method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.HijrahDate> zonedDateTime(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.HijrahDate> zonedDateTime(java.time.Instant, java.time.ZoneId);
-    field public static final java.time.chrono.HijrahChronology INSTANCE;
-  }
-
-  public final class HijrahDate implements java.time.chrono.ChronoLocalDate java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
-    method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.HijrahDate> atTime(java.time.LocalTime);
-    method public static java.time.chrono.HijrahDate from(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.HijrahChronology getChronology();
-    method public java.time.chrono.HijrahEra getEra();
-    method public long getLong(java.time.temporal.TemporalField);
-    method public int lengthOfMonth();
-    method public java.time.chrono.HijrahDate minus(java.time.temporal.TemporalAmount);
-    method public java.time.chrono.HijrahDate minus(long, java.time.temporal.TemporalUnit);
-    method public static java.time.chrono.HijrahDate now();
-    method public static java.time.chrono.HijrahDate now(java.time.ZoneId);
-    method public static java.time.chrono.HijrahDate now(java.time.Clock);
-    method public static java.time.chrono.HijrahDate of(int, int, int);
-    method public java.time.chrono.HijrahDate plus(java.time.temporal.TemporalAmount);
-    method public java.time.chrono.HijrahDate plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.chrono.HijrahDate with(java.time.temporal.TemporalField, long);
-    method public java.time.chrono.HijrahDate with(java.time.temporal.TemporalAdjuster);
-    method public java.time.chrono.HijrahDate withVariant(java.time.chrono.HijrahChronology);
-  }
-
-  public enum HijrahEra implements java.time.chrono.Era {
-    method public int getValue();
-    method public static java.time.chrono.HijrahEra of(int);
-    enum_constant public static final java.time.chrono.HijrahEra AH;
-  }
-
-  public final class IsoChronology extends java.time.chrono.AbstractChronology implements java.io.Serializable {
-    method public java.time.LocalDate date(java.time.chrono.Era, int, int, int);
-    method public java.time.LocalDate date(int, int, int);
-    method public java.time.LocalDate date(java.time.temporal.TemporalAccessor);
-    method public java.time.LocalDate dateEpochDay(long);
-    method public java.time.LocalDate dateNow();
-    method public java.time.LocalDate dateNow(java.time.ZoneId);
-    method public java.time.LocalDate dateNow(java.time.Clock);
-    method public java.time.LocalDate dateYearDay(java.time.chrono.Era, int, int);
-    method public java.time.LocalDate dateYearDay(int, int);
-    method public java.time.chrono.IsoEra eraOf(int);
-    method public java.util.List<java.time.chrono.Era> eras();
-    method public String getCalendarType();
-    method public String getId();
-    method public boolean isLeapYear(long);
-    method public java.time.LocalDateTime localDateTime(java.time.temporal.TemporalAccessor);
-    method public java.time.Period period(int, int, int);
-    method public int prolepticYear(java.time.chrono.Era, int);
-    method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
-    method public java.time.LocalDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
-    method public java.time.ZonedDateTime zonedDateTime(java.time.temporal.TemporalAccessor);
-    method public java.time.ZonedDateTime zonedDateTime(java.time.Instant, java.time.ZoneId);
-    field public static final java.time.chrono.IsoChronology INSTANCE;
-  }
-
-  public enum IsoEra implements java.time.chrono.Era {
-    method public int getValue();
-    method public static java.time.chrono.IsoEra of(int);
-    enum_constant public static final java.time.chrono.IsoEra BCE;
-    enum_constant public static final java.time.chrono.IsoEra CE;
-  }
-
-  public final class JapaneseChronology extends java.time.chrono.AbstractChronology implements java.io.Serializable {
-    method public java.time.chrono.JapaneseDate date(java.time.chrono.Era, int, int, int);
-    method public java.time.chrono.JapaneseDate date(int, int, int);
-    method public java.time.chrono.JapaneseDate date(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.JapaneseDate dateEpochDay(long);
-    method public java.time.chrono.JapaneseDate dateNow();
-    method public java.time.chrono.JapaneseDate dateNow(java.time.ZoneId);
-    method public java.time.chrono.JapaneseDate dateNow(java.time.Clock);
-    method public java.time.chrono.JapaneseDate dateYearDay(java.time.chrono.Era, int, int);
-    method public java.time.chrono.JapaneseDate dateYearDay(int, int);
-    method public java.time.chrono.JapaneseEra eraOf(int);
-    method public java.util.List<java.time.chrono.Era> eras();
-    method public String getCalendarType();
-    method public String getId();
-    method public boolean isLeapYear(long);
-    method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.JapaneseDate> localDateTime(java.time.temporal.TemporalAccessor);
-    method public int prolepticYear(java.time.chrono.Era, int);
-    method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
-    method public java.time.chrono.JapaneseDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
-    method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.JapaneseDate> zonedDateTime(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.JapaneseDate> zonedDateTime(java.time.Instant, java.time.ZoneId);
-    field public static final java.time.chrono.JapaneseChronology INSTANCE;
-  }
-
-  public final class JapaneseDate implements java.time.chrono.ChronoLocalDate java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
-    method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.JapaneseDate> atTime(java.time.LocalTime);
-    method public static java.time.chrono.JapaneseDate from(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.JapaneseChronology getChronology();
-    method public java.time.chrono.JapaneseEra getEra();
-    method public long getLong(java.time.temporal.TemporalField);
-    method public int lengthOfMonth();
-    method public java.time.chrono.JapaneseDate minus(java.time.temporal.TemporalAmount);
-    method public java.time.chrono.JapaneseDate minus(long, java.time.temporal.TemporalUnit);
-    method public static java.time.chrono.JapaneseDate now();
-    method public static java.time.chrono.JapaneseDate now(java.time.ZoneId);
-    method public static java.time.chrono.JapaneseDate now(java.time.Clock);
-    method public static java.time.chrono.JapaneseDate of(java.time.chrono.JapaneseEra, int, int, int);
-    method public static java.time.chrono.JapaneseDate of(int, int, int);
-    method public java.time.chrono.JapaneseDate plus(java.time.temporal.TemporalAmount);
-    method public java.time.chrono.JapaneseDate plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.chrono.JapaneseDate with(java.time.temporal.TemporalField, long);
-    method public java.time.chrono.JapaneseDate with(java.time.temporal.TemporalAdjuster);
-  }
-
-  public final class JapaneseEra implements java.time.chrono.Era java.io.Serializable {
-    method public int getValue();
-    method public static java.time.chrono.JapaneseEra of(int);
-    method public static java.time.chrono.JapaneseEra valueOf(String);
-    method public static java.time.chrono.JapaneseEra[] values();
-    field public static final java.time.chrono.JapaneseEra HEISEI;
-    field public static final java.time.chrono.JapaneseEra MEIJI;
-    field public static final java.time.chrono.JapaneseEra REIWA;
-    field public static final java.time.chrono.JapaneseEra SHOWA;
-    field public static final java.time.chrono.JapaneseEra TAISHO;
-  }
-
-  public final class MinguoChronology extends java.time.chrono.AbstractChronology implements java.io.Serializable {
-    method public java.time.chrono.MinguoDate date(java.time.chrono.Era, int, int, int);
-    method public java.time.chrono.MinguoDate date(int, int, int);
-    method public java.time.chrono.MinguoDate date(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.MinguoDate dateEpochDay(long);
-    method public java.time.chrono.MinguoDate dateNow();
-    method public java.time.chrono.MinguoDate dateNow(java.time.ZoneId);
-    method public java.time.chrono.MinguoDate dateNow(java.time.Clock);
-    method public java.time.chrono.MinguoDate dateYearDay(java.time.chrono.Era, int, int);
-    method public java.time.chrono.MinguoDate dateYearDay(int, int);
-    method public java.time.chrono.MinguoEra eraOf(int);
-    method public java.util.List<java.time.chrono.Era> eras();
-    method public String getCalendarType();
-    method public String getId();
-    method public boolean isLeapYear(long);
-    method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.MinguoDate> localDateTime(java.time.temporal.TemporalAccessor);
-    method public int prolepticYear(java.time.chrono.Era, int);
-    method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
-    method public java.time.chrono.MinguoDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
-    method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.MinguoDate> zonedDateTime(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.MinguoDate> zonedDateTime(java.time.Instant, java.time.ZoneId);
-    field public static final java.time.chrono.MinguoChronology INSTANCE;
-  }
-
-  public final class MinguoDate implements java.time.chrono.ChronoLocalDate java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
-    method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.MinguoDate> atTime(java.time.LocalTime);
-    method public static java.time.chrono.MinguoDate from(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.MinguoChronology getChronology();
-    method public java.time.chrono.MinguoEra getEra();
-    method public long getLong(java.time.temporal.TemporalField);
-    method public int lengthOfMonth();
-    method public java.time.chrono.MinguoDate minus(java.time.temporal.TemporalAmount);
-    method public java.time.chrono.MinguoDate minus(long, java.time.temporal.TemporalUnit);
-    method public static java.time.chrono.MinguoDate now();
-    method public static java.time.chrono.MinguoDate now(java.time.ZoneId);
-    method public static java.time.chrono.MinguoDate now(java.time.Clock);
-    method public static java.time.chrono.MinguoDate of(int, int, int);
-    method public java.time.chrono.MinguoDate plus(java.time.temporal.TemporalAmount);
-    method public java.time.chrono.MinguoDate plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.chrono.MinguoDate with(java.time.temporal.TemporalField, long);
-    method public java.time.chrono.MinguoDate with(java.time.temporal.TemporalAdjuster);
-  }
-
-  public enum MinguoEra implements java.time.chrono.Era {
-    method public int getValue();
-    method public static java.time.chrono.MinguoEra of(int);
-    enum_constant public static final java.time.chrono.MinguoEra BEFORE_ROC;
-    enum_constant public static final java.time.chrono.MinguoEra ROC;
-  }
-
-  public final class ThaiBuddhistChronology extends java.time.chrono.AbstractChronology implements java.io.Serializable {
-    method public java.time.chrono.ThaiBuddhistDate date(java.time.chrono.Era, int, int, int);
-    method public java.time.chrono.ThaiBuddhistDate date(int, int, int);
-    method public java.time.chrono.ThaiBuddhistDate date(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.ThaiBuddhistDate dateEpochDay(long);
-    method public java.time.chrono.ThaiBuddhistDate dateNow();
-    method public java.time.chrono.ThaiBuddhistDate dateNow(java.time.ZoneId);
-    method public java.time.chrono.ThaiBuddhistDate dateNow(java.time.Clock);
-    method public java.time.chrono.ThaiBuddhistDate dateYearDay(java.time.chrono.Era, int, int);
-    method public java.time.chrono.ThaiBuddhistDate dateYearDay(int, int);
-    method public java.time.chrono.ThaiBuddhistEra eraOf(int);
-    method public java.util.List<java.time.chrono.Era> eras();
-    method public String getCalendarType();
-    method public String getId();
-    method public boolean isLeapYear(long);
-    method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.ThaiBuddhistDate> localDateTime(java.time.temporal.TemporalAccessor);
-    method public int prolepticYear(java.time.chrono.Era, int);
-    method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
-    method public java.time.chrono.ThaiBuddhistDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
-    method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.ThaiBuddhistDate> zonedDateTime(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.ThaiBuddhistDate> zonedDateTime(java.time.Instant, java.time.ZoneId);
-    field public static final java.time.chrono.ThaiBuddhistChronology INSTANCE;
-  }
-
-  public final class ThaiBuddhistDate implements java.time.chrono.ChronoLocalDate java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
-    method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.ThaiBuddhistDate> atTime(java.time.LocalTime);
-    method public static java.time.chrono.ThaiBuddhistDate from(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.ThaiBuddhistChronology getChronology();
-    method public java.time.chrono.ThaiBuddhistEra getEra();
-    method public long getLong(java.time.temporal.TemporalField);
-    method public int lengthOfMonth();
-    method public java.time.chrono.ThaiBuddhistDate minus(java.time.temporal.TemporalAmount);
-    method public java.time.chrono.ThaiBuddhistDate minus(long, java.time.temporal.TemporalUnit);
-    method public static java.time.chrono.ThaiBuddhistDate now();
-    method public static java.time.chrono.ThaiBuddhistDate now(java.time.ZoneId);
-    method public static java.time.chrono.ThaiBuddhistDate now(java.time.Clock);
-    method public static java.time.chrono.ThaiBuddhistDate of(int, int, int);
-    method public java.time.chrono.ThaiBuddhistDate plus(java.time.temporal.TemporalAmount);
-    method public java.time.chrono.ThaiBuddhistDate plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.chrono.ThaiBuddhistDate with(java.time.temporal.TemporalField, long);
-    method public java.time.chrono.ThaiBuddhistDate with(java.time.temporal.TemporalAdjuster);
-  }
-
-  public enum ThaiBuddhistEra implements java.time.chrono.Era {
-    method public int getValue();
-    method public static java.time.chrono.ThaiBuddhistEra of(int);
-    enum_constant public static final java.time.chrono.ThaiBuddhistEra BE;
-    enum_constant public static final java.time.chrono.ThaiBuddhistEra BEFORE_BE;
-  }
-
-}
-
-package java.time.format {
-
-  public final class DateTimeFormatter {
-    method public String format(java.time.temporal.TemporalAccessor);
-    method public void formatTo(java.time.temporal.TemporalAccessor, Appendable);
-    method public java.time.chrono.Chronology getChronology();
-    method public java.time.format.DecimalStyle getDecimalStyle();
-    method public java.util.Locale getLocale();
-    method public java.util.Set<java.time.temporal.TemporalField> getResolverFields();
-    method public java.time.format.ResolverStyle getResolverStyle();
-    method public java.time.ZoneId getZone();
-    method public static java.time.format.DateTimeFormatter ofLocalizedDate(java.time.format.FormatStyle);
-    method public static java.time.format.DateTimeFormatter ofLocalizedDateTime(java.time.format.FormatStyle);
-    method public static java.time.format.DateTimeFormatter ofLocalizedDateTime(java.time.format.FormatStyle, java.time.format.FormatStyle);
-    method public static java.time.format.DateTimeFormatter ofLocalizedTime(java.time.format.FormatStyle);
-    method public static java.time.format.DateTimeFormatter ofPattern(String);
-    method public static java.time.format.DateTimeFormatter ofPattern(String, java.util.Locale);
-    method public java.time.temporal.TemporalAccessor parse(CharSequence);
-    method public java.time.temporal.TemporalAccessor parse(CharSequence, java.text.ParsePosition);
-    method public <T> T parse(CharSequence, java.time.temporal.TemporalQuery<T>);
-    method public java.time.temporal.TemporalAccessor parseBest(CharSequence, java.time.temporal.TemporalQuery<?>...);
-    method public java.time.temporal.TemporalAccessor parseUnresolved(CharSequence, java.text.ParsePosition);
-    method public static java.time.temporal.TemporalQuery<java.time.Period> parsedExcessDays();
-    method public static java.time.temporal.TemporalQuery<java.lang.Boolean> parsedLeapSecond();
-    method public java.text.Format toFormat();
-    method public java.text.Format toFormat(java.time.temporal.TemporalQuery<?>);
-    method public java.time.format.DateTimeFormatter withChronology(java.time.chrono.Chronology);
-    method public java.time.format.DateTimeFormatter withDecimalStyle(java.time.format.DecimalStyle);
-    method public java.time.format.DateTimeFormatter withLocale(java.util.Locale);
-    method public java.time.format.DateTimeFormatter withResolverFields(java.time.temporal.TemporalField...);
-    method public java.time.format.DateTimeFormatter withResolverFields(java.util.Set<java.time.temporal.TemporalField>);
-    method public java.time.format.DateTimeFormatter withResolverStyle(java.time.format.ResolverStyle);
-    method public java.time.format.DateTimeFormatter withZone(java.time.ZoneId);
-    field public static final java.time.format.DateTimeFormatter BASIC_ISO_DATE;
-    field public static final java.time.format.DateTimeFormatter ISO_DATE;
-    field public static final java.time.format.DateTimeFormatter ISO_DATE_TIME;
-    field public static final java.time.format.DateTimeFormatter ISO_INSTANT;
-    field public static final java.time.format.DateTimeFormatter ISO_LOCAL_DATE;
-    field public static final java.time.format.DateTimeFormatter ISO_LOCAL_DATE_TIME;
-    field public static final java.time.format.DateTimeFormatter ISO_LOCAL_TIME;
-    field public static final java.time.format.DateTimeFormatter ISO_OFFSET_DATE;
-    field public static final java.time.format.DateTimeFormatter ISO_OFFSET_DATE_TIME;
-    field public static final java.time.format.DateTimeFormatter ISO_OFFSET_TIME;
-    field public static final java.time.format.DateTimeFormatter ISO_ORDINAL_DATE;
-    field public static final java.time.format.DateTimeFormatter ISO_TIME;
-    field public static final java.time.format.DateTimeFormatter ISO_WEEK_DATE;
-    field public static final java.time.format.DateTimeFormatter ISO_ZONED_DATE_TIME;
-    field public static final java.time.format.DateTimeFormatter RFC_1123_DATE_TIME;
-  }
-
-  public final class DateTimeFormatterBuilder {
-    ctor public DateTimeFormatterBuilder();
-    method public java.time.format.DateTimeFormatterBuilder append(java.time.format.DateTimeFormatter);
-    method public java.time.format.DateTimeFormatterBuilder appendChronologyId();
-    method public java.time.format.DateTimeFormatterBuilder appendChronologyText(java.time.format.TextStyle);
-    method public java.time.format.DateTimeFormatterBuilder appendFraction(java.time.temporal.TemporalField, int, int, boolean);
-    method public java.time.format.DateTimeFormatterBuilder appendInstant();
-    method public java.time.format.DateTimeFormatterBuilder appendInstant(int);
-    method public java.time.format.DateTimeFormatterBuilder appendLiteral(char);
-    method public java.time.format.DateTimeFormatterBuilder appendLiteral(String);
-    method public java.time.format.DateTimeFormatterBuilder appendLocalized(java.time.format.FormatStyle, java.time.format.FormatStyle);
-    method public java.time.format.DateTimeFormatterBuilder appendLocalizedOffset(java.time.format.TextStyle);
-    method public java.time.format.DateTimeFormatterBuilder appendOffset(String, String);
-    method public java.time.format.DateTimeFormatterBuilder appendOffsetId();
-    method public java.time.format.DateTimeFormatterBuilder appendOptional(java.time.format.DateTimeFormatter);
-    method public java.time.format.DateTimeFormatterBuilder appendPattern(String);
-    method public java.time.format.DateTimeFormatterBuilder appendText(java.time.temporal.TemporalField);
-    method public java.time.format.DateTimeFormatterBuilder appendText(java.time.temporal.TemporalField, java.time.format.TextStyle);
-    method public java.time.format.DateTimeFormatterBuilder appendText(java.time.temporal.TemporalField, java.util.Map<java.lang.Long,java.lang.String>);
-    method public java.time.format.DateTimeFormatterBuilder appendValue(java.time.temporal.TemporalField);
-    method public java.time.format.DateTimeFormatterBuilder appendValue(java.time.temporal.TemporalField, int);
-    method public java.time.format.DateTimeFormatterBuilder appendValue(java.time.temporal.TemporalField, int, int, java.time.format.SignStyle);
-    method public java.time.format.DateTimeFormatterBuilder appendValueReduced(java.time.temporal.TemporalField, int, int, int);
-    method public java.time.format.DateTimeFormatterBuilder appendValueReduced(java.time.temporal.TemporalField, int, int, java.time.chrono.ChronoLocalDate);
-    method public java.time.format.DateTimeFormatterBuilder appendZoneId();
-    method public java.time.format.DateTimeFormatterBuilder appendZoneOrOffsetId();
-    method public java.time.format.DateTimeFormatterBuilder appendZoneRegionId();
-    method public java.time.format.DateTimeFormatterBuilder appendZoneText(java.time.format.TextStyle);
-    method public java.time.format.DateTimeFormatterBuilder appendZoneText(java.time.format.TextStyle, java.util.Set<java.time.ZoneId>);
-    method public static String getLocalizedDateTimePattern(java.time.format.FormatStyle, java.time.format.FormatStyle, java.time.chrono.Chronology, java.util.Locale);
-    method public java.time.format.DateTimeFormatterBuilder optionalEnd();
-    method public java.time.format.DateTimeFormatterBuilder optionalStart();
-    method public java.time.format.DateTimeFormatterBuilder padNext(int);
-    method public java.time.format.DateTimeFormatterBuilder padNext(int, char);
-    method public java.time.format.DateTimeFormatterBuilder parseCaseInsensitive();
-    method public java.time.format.DateTimeFormatterBuilder parseCaseSensitive();
-    method public java.time.format.DateTimeFormatterBuilder parseDefaulting(java.time.temporal.TemporalField, long);
-    method public java.time.format.DateTimeFormatterBuilder parseLenient();
-    method public java.time.format.DateTimeFormatterBuilder parseStrict();
-    method public java.time.format.DateTimeFormatter toFormatter();
-    method public java.time.format.DateTimeFormatter toFormatter(java.util.Locale);
-  }
-
-  public class DateTimeParseException extends java.time.DateTimeException {
-    ctor public DateTimeParseException(String, CharSequence, int);
-    ctor public DateTimeParseException(String, CharSequence, int, Throwable);
-    method public int getErrorIndex();
-    method public String getParsedString();
-  }
-
-  public final class DecimalStyle {
-    method public static java.util.Set<java.util.Locale> getAvailableLocales();
-    method public char getDecimalSeparator();
-    method public char getNegativeSign();
-    method public char getPositiveSign();
-    method public char getZeroDigit();
-    method public static java.time.format.DecimalStyle of(java.util.Locale);
-    method public static java.time.format.DecimalStyle ofDefaultLocale();
-    method public java.time.format.DecimalStyle withDecimalSeparator(char);
-    method public java.time.format.DecimalStyle withNegativeSign(char);
-    method public java.time.format.DecimalStyle withPositiveSign(char);
-    method public java.time.format.DecimalStyle withZeroDigit(char);
-    field public static final java.time.format.DecimalStyle STANDARD;
-  }
-
-  public enum FormatStyle {
-    enum_constant public static final java.time.format.FormatStyle FULL;
-    enum_constant public static final java.time.format.FormatStyle LONG;
-    enum_constant public static final java.time.format.FormatStyle MEDIUM;
-    enum_constant public static final java.time.format.FormatStyle SHORT;
-  }
-
-  public enum ResolverStyle {
-    enum_constant public static final java.time.format.ResolverStyle LENIENT;
-    enum_constant public static final java.time.format.ResolverStyle SMART;
-    enum_constant public static final java.time.format.ResolverStyle STRICT;
-  }
-
-  public enum SignStyle {
-    enum_constant public static final java.time.format.SignStyle ALWAYS;
-    enum_constant public static final java.time.format.SignStyle EXCEEDS_PAD;
-    enum_constant public static final java.time.format.SignStyle NEVER;
-    enum_constant public static final java.time.format.SignStyle NORMAL;
-    enum_constant public static final java.time.format.SignStyle NOT_NEGATIVE;
-  }
-
-  public enum TextStyle {
-    method public java.time.format.TextStyle asNormal();
-    method public java.time.format.TextStyle asStandalone();
-    method public boolean isStandalone();
-    enum_constant public static final java.time.format.TextStyle FULL;
-    enum_constant public static final java.time.format.TextStyle FULL_STANDALONE;
-    enum_constant public static final java.time.format.TextStyle NARROW;
-    enum_constant public static final java.time.format.TextStyle NARROW_STANDALONE;
-    enum_constant public static final java.time.format.TextStyle SHORT;
-    enum_constant public static final java.time.format.TextStyle SHORT_STANDALONE;
-  }
-
-}
-
-package java.time.temporal {
-
-  public enum ChronoField implements java.time.temporal.TemporalField {
-    method public <R extends java.time.temporal.Temporal> R adjustInto(R, long);
-    method public int checkValidIntValue(long);
-    method public long checkValidValue(long);
-    method public java.time.temporal.TemporalUnit getBaseUnit();
-    method public long getFrom(java.time.temporal.TemporalAccessor);
-    method public java.time.temporal.TemporalUnit getRangeUnit();
-    method public boolean isDateBased();
-    method public boolean isSupportedBy(java.time.temporal.TemporalAccessor);
-    method public boolean isTimeBased();
-    method public java.time.temporal.ValueRange range();
-    method public java.time.temporal.ValueRange rangeRefinedBy(java.time.temporal.TemporalAccessor);
-    enum_constant public static final java.time.temporal.ChronoField ALIGNED_DAY_OF_WEEK_IN_MONTH;
-    enum_constant public static final java.time.temporal.ChronoField ALIGNED_DAY_OF_WEEK_IN_YEAR;
-    enum_constant public static final java.time.temporal.ChronoField ALIGNED_WEEK_OF_MONTH;
-    enum_constant public static final java.time.temporal.ChronoField ALIGNED_WEEK_OF_YEAR;
-    enum_constant public static final java.time.temporal.ChronoField AMPM_OF_DAY;
-    enum_constant public static final java.time.temporal.ChronoField CLOCK_HOUR_OF_AMPM;
-    enum_constant public static final java.time.temporal.ChronoField CLOCK_HOUR_OF_DAY;
-    enum_constant public static final java.time.temporal.ChronoField DAY_OF_MONTH;
-    enum_constant public static final java.time.temporal.ChronoField DAY_OF_WEEK;
-    enum_constant public static final java.time.temporal.ChronoField DAY_OF_YEAR;
-    enum_constant public static final java.time.temporal.ChronoField EPOCH_DAY;
-    enum_constant public static final java.time.temporal.ChronoField ERA;
-    enum_constant public static final java.time.temporal.ChronoField HOUR_OF_AMPM;
-    enum_constant public static final java.time.temporal.ChronoField HOUR_OF_DAY;
-    enum_constant public static final java.time.temporal.ChronoField INSTANT_SECONDS;
-    enum_constant public static final java.time.temporal.ChronoField MICRO_OF_DAY;
-    enum_constant public static final java.time.temporal.ChronoField MICRO_OF_SECOND;
-    enum_constant public static final java.time.temporal.ChronoField MILLI_OF_DAY;
-    enum_constant public static final java.time.temporal.ChronoField MILLI_OF_SECOND;
-    enum_constant public static final java.time.temporal.ChronoField MINUTE_OF_DAY;
-    enum_constant public static final java.time.temporal.ChronoField MINUTE_OF_HOUR;
-    enum_constant public static final java.time.temporal.ChronoField MONTH_OF_YEAR;
-    enum_constant public static final java.time.temporal.ChronoField NANO_OF_DAY;
-    enum_constant public static final java.time.temporal.ChronoField NANO_OF_SECOND;
-    enum_constant public static final java.time.temporal.ChronoField OFFSET_SECONDS;
-    enum_constant public static final java.time.temporal.ChronoField PROLEPTIC_MONTH;
-    enum_constant public static final java.time.temporal.ChronoField SECOND_OF_DAY;
-    enum_constant public static final java.time.temporal.ChronoField SECOND_OF_MINUTE;
-    enum_constant public static final java.time.temporal.ChronoField YEAR;
-    enum_constant public static final java.time.temporal.ChronoField YEAR_OF_ERA;
-  }
-
-  public enum ChronoUnit implements java.time.temporal.TemporalUnit {
-    method public <R extends java.time.temporal.Temporal> R addTo(R, long);
-    method public long between(java.time.temporal.Temporal, java.time.temporal.Temporal);
-    method public java.time.Duration getDuration();
-    method public boolean isDateBased();
-    method public boolean isDurationEstimated();
-    method public boolean isTimeBased();
-    enum_constant public static final java.time.temporal.ChronoUnit CENTURIES;
-    enum_constant public static final java.time.temporal.ChronoUnit DAYS;
-    enum_constant public static final java.time.temporal.ChronoUnit DECADES;
-    enum_constant public static final java.time.temporal.ChronoUnit ERAS;
-    enum_constant public static final java.time.temporal.ChronoUnit FOREVER;
-    enum_constant public static final java.time.temporal.ChronoUnit HALF_DAYS;
-    enum_constant public static final java.time.temporal.ChronoUnit HOURS;
-    enum_constant public static final java.time.temporal.ChronoUnit MICROS;
-    enum_constant public static final java.time.temporal.ChronoUnit MILLENNIA;
-    enum_constant public static final java.time.temporal.ChronoUnit MILLIS;
-    enum_constant public static final java.time.temporal.ChronoUnit MINUTES;
-    enum_constant public static final java.time.temporal.ChronoUnit MONTHS;
-    enum_constant public static final java.time.temporal.ChronoUnit NANOS;
-    enum_constant public static final java.time.temporal.ChronoUnit SECONDS;
-    enum_constant public static final java.time.temporal.ChronoUnit WEEKS;
-    enum_constant public static final java.time.temporal.ChronoUnit YEARS;
-  }
-
-  public final class IsoFields {
-    field public static final java.time.temporal.TemporalField DAY_OF_QUARTER;
-    field public static final java.time.temporal.TemporalField QUARTER_OF_YEAR;
-    field public static final java.time.temporal.TemporalUnit QUARTER_YEARS;
-    field public static final java.time.temporal.TemporalField WEEK_BASED_YEAR;
-    field public static final java.time.temporal.TemporalUnit WEEK_BASED_YEARS;
-    field public static final java.time.temporal.TemporalField WEEK_OF_WEEK_BASED_YEAR;
-  }
-
-  public final class JulianFields {
-    field public static final java.time.temporal.TemporalField JULIAN_DAY;
-    field public static final java.time.temporal.TemporalField MODIFIED_JULIAN_DAY;
-    field public static final java.time.temporal.TemporalField RATA_DIE;
-  }
-
-  public interface Temporal extends java.time.temporal.TemporalAccessor {
-    method public boolean isSupported(java.time.temporal.TemporalUnit);
-    method public default java.time.temporal.Temporal minus(java.time.temporal.TemporalAmount);
-    method public default java.time.temporal.Temporal minus(long, java.time.temporal.TemporalUnit);
-    method public default java.time.temporal.Temporal plus(java.time.temporal.TemporalAmount);
-    method public java.time.temporal.Temporal plus(long, java.time.temporal.TemporalUnit);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public default java.time.temporal.Temporal with(java.time.temporal.TemporalAdjuster);
-    method public java.time.temporal.Temporal with(java.time.temporal.TemporalField, long);
-  }
-
-  public interface TemporalAccessor {
-    method public default int get(java.time.temporal.TemporalField);
-    method public long getLong(java.time.temporal.TemporalField);
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public default <R> R query(java.time.temporal.TemporalQuery<R>);
-    method public default java.time.temporal.ValueRange range(java.time.temporal.TemporalField);
-  }
-
-  @java.lang.FunctionalInterface public interface TemporalAdjuster {
-    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-  }
-
-  public final class TemporalAdjusters {
-    method public static java.time.temporal.TemporalAdjuster dayOfWeekInMonth(int, java.time.DayOfWeek);
-    method public static java.time.temporal.TemporalAdjuster firstDayOfMonth();
-    method public static java.time.temporal.TemporalAdjuster firstDayOfNextMonth();
-    method public static java.time.temporal.TemporalAdjuster firstDayOfNextYear();
-    method public static java.time.temporal.TemporalAdjuster firstDayOfYear();
-    method public static java.time.temporal.TemporalAdjuster firstInMonth(java.time.DayOfWeek);
-    method public static java.time.temporal.TemporalAdjuster lastDayOfMonth();
-    method public static java.time.temporal.TemporalAdjuster lastDayOfYear();
-    method public static java.time.temporal.TemporalAdjuster lastInMonth(java.time.DayOfWeek);
-    method public static java.time.temporal.TemporalAdjuster next(java.time.DayOfWeek);
-    method public static java.time.temporal.TemporalAdjuster nextOrSame(java.time.DayOfWeek);
-    method public static java.time.temporal.TemporalAdjuster ofDateAdjuster(java.util.function.UnaryOperator<java.time.LocalDate>);
-    method public static java.time.temporal.TemporalAdjuster previous(java.time.DayOfWeek);
-    method public static java.time.temporal.TemporalAdjuster previousOrSame(java.time.DayOfWeek);
-  }
-
-  public interface TemporalAmount {
-    method public java.time.temporal.Temporal addTo(java.time.temporal.Temporal);
-    method public long get(java.time.temporal.TemporalUnit);
-    method public java.util.List<java.time.temporal.TemporalUnit> getUnits();
-    method public java.time.temporal.Temporal subtractFrom(java.time.temporal.Temporal);
-  }
-
-  public interface TemporalField {
-    method public <R extends java.time.temporal.Temporal> R adjustInto(R, long);
-    method public java.time.temporal.TemporalUnit getBaseUnit();
-    method public default String getDisplayName(java.util.Locale);
-    method public long getFrom(java.time.temporal.TemporalAccessor);
-    method public java.time.temporal.TemporalUnit getRangeUnit();
-    method public boolean isDateBased();
-    method public boolean isSupportedBy(java.time.temporal.TemporalAccessor);
-    method public boolean isTimeBased();
-    method public java.time.temporal.ValueRange range();
-    method public java.time.temporal.ValueRange rangeRefinedBy(java.time.temporal.TemporalAccessor);
-    method public default java.time.temporal.TemporalAccessor resolve(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.temporal.TemporalAccessor, java.time.format.ResolverStyle);
-    method public String toString();
-  }
-
-  public final class TemporalQueries {
-    method public static java.time.temporal.TemporalQuery<java.time.chrono.Chronology> chronology();
-    method public static java.time.temporal.TemporalQuery<java.time.LocalDate> localDate();
-    method public static java.time.temporal.TemporalQuery<java.time.LocalTime> localTime();
-    method public static java.time.temporal.TemporalQuery<java.time.ZoneOffset> offset();
-    method public static java.time.temporal.TemporalQuery<java.time.temporal.TemporalUnit> precision();
-    method public static java.time.temporal.TemporalQuery<java.time.ZoneId> zone();
-    method public static java.time.temporal.TemporalQuery<java.time.ZoneId> zoneId();
-  }
-
-  @java.lang.FunctionalInterface public interface TemporalQuery<R> {
-    method public R queryFrom(java.time.temporal.TemporalAccessor);
-  }
-
-  public interface TemporalUnit {
-    method public <R extends java.time.temporal.Temporal> R addTo(R, long);
-    method public long between(java.time.temporal.Temporal, java.time.temporal.Temporal);
-    method public java.time.Duration getDuration();
-    method public boolean isDateBased();
-    method public boolean isDurationEstimated();
-    method public default boolean isSupportedBy(java.time.temporal.Temporal);
-    method public boolean isTimeBased();
-    method public String toString();
-  }
-
-  public class UnsupportedTemporalTypeException extends java.time.DateTimeException {
-    ctor public UnsupportedTemporalTypeException(String);
-    ctor public UnsupportedTemporalTypeException(String, Throwable);
-  }
-
-  public final class ValueRange implements java.io.Serializable {
-    method public int checkValidIntValue(long, java.time.temporal.TemporalField);
-    method public long checkValidValue(long, java.time.temporal.TemporalField);
-    method public long getLargestMinimum();
-    method public long getMaximum();
-    method public long getMinimum();
-    method public long getSmallestMaximum();
-    method public boolean isFixed();
-    method public boolean isIntValue();
-    method public boolean isValidIntValue(long);
-    method public boolean isValidValue(long);
-    method public static java.time.temporal.ValueRange of(long, long);
-    method public static java.time.temporal.ValueRange of(long, long, long);
-    method public static java.time.temporal.ValueRange of(long, long, long, long);
-  }
-
-  public final class WeekFields implements java.io.Serializable {
-    method public java.time.temporal.TemporalField dayOfWeek();
-    method public java.time.DayOfWeek getFirstDayOfWeek();
-    method public int getMinimalDaysInFirstWeek();
-    method public static java.time.temporal.WeekFields of(java.util.Locale);
-    method public static java.time.temporal.WeekFields of(java.time.DayOfWeek, int);
-    method public java.time.temporal.TemporalField weekBasedYear();
-    method public java.time.temporal.TemporalField weekOfMonth();
-    method public java.time.temporal.TemporalField weekOfWeekBasedYear();
-    method public java.time.temporal.TemporalField weekOfYear();
-    field public static final java.time.temporal.WeekFields ISO;
-    field public static final java.time.temporal.WeekFields SUNDAY_START;
-    field public static final java.time.temporal.TemporalUnit WEEK_BASED_YEARS;
-  }
-
-}
-
-package java.time.zone {
-
-  public final class ZoneOffsetTransition implements java.lang.Comparable<java.time.zone.ZoneOffsetTransition> java.io.Serializable {
-    method public int compareTo(java.time.zone.ZoneOffsetTransition);
-    method public java.time.LocalDateTime getDateTimeAfter();
-    method public java.time.LocalDateTime getDateTimeBefore();
-    method public java.time.Duration getDuration();
-    method public java.time.Instant getInstant();
-    method public java.time.ZoneOffset getOffsetAfter();
-    method public java.time.ZoneOffset getOffsetBefore();
-    method public boolean isGap();
-    method public boolean isOverlap();
-    method public boolean isValidOffset(java.time.ZoneOffset);
-    method public static java.time.zone.ZoneOffsetTransition of(java.time.LocalDateTime, java.time.ZoneOffset, java.time.ZoneOffset);
-    method public long toEpochSecond();
-  }
-
-  public final class ZoneOffsetTransitionRule implements java.io.Serializable {
-    method public java.time.zone.ZoneOffsetTransition createTransition(int);
-    method public int getDayOfMonthIndicator();
-    method public java.time.DayOfWeek getDayOfWeek();
-    method public java.time.LocalTime getLocalTime();
-    method public java.time.Month getMonth();
-    method public java.time.ZoneOffset getOffsetAfter();
-    method public java.time.ZoneOffset getOffsetBefore();
-    method public java.time.ZoneOffset getStandardOffset();
-    method public java.time.zone.ZoneOffsetTransitionRule.TimeDefinition getTimeDefinition();
-    method public boolean isMidnightEndOfDay();
-    method public static java.time.zone.ZoneOffsetTransitionRule of(java.time.Month, int, java.time.DayOfWeek, java.time.LocalTime, boolean, java.time.zone.ZoneOffsetTransitionRule.TimeDefinition, java.time.ZoneOffset, java.time.ZoneOffset, java.time.ZoneOffset);
-  }
-
-  public enum ZoneOffsetTransitionRule.TimeDefinition {
-    method public java.time.LocalDateTime createDateTime(java.time.LocalDateTime, java.time.ZoneOffset, java.time.ZoneOffset);
-    enum_constant public static final java.time.zone.ZoneOffsetTransitionRule.TimeDefinition STANDARD;
-    enum_constant public static final java.time.zone.ZoneOffsetTransitionRule.TimeDefinition UTC;
-    enum_constant public static final java.time.zone.ZoneOffsetTransitionRule.TimeDefinition WALL;
-  }
-
-  public final class ZoneRules implements java.io.Serializable {
-    method public java.time.Duration getDaylightSavings(java.time.Instant);
-    method public java.time.ZoneOffset getOffset(java.time.Instant);
-    method public java.time.ZoneOffset getOffset(java.time.LocalDateTime);
-    method public java.time.ZoneOffset getStandardOffset(java.time.Instant);
-    method public java.time.zone.ZoneOffsetTransition getTransition(java.time.LocalDateTime);
-    method public java.util.List<java.time.zone.ZoneOffsetTransitionRule> getTransitionRules();
-    method public java.util.List<java.time.zone.ZoneOffsetTransition> getTransitions();
-    method public java.util.List<java.time.ZoneOffset> getValidOffsets(java.time.LocalDateTime);
-    method public boolean isDaylightSavings(java.time.Instant);
-    method public boolean isFixedOffset();
-    method public boolean isValidOffset(java.time.LocalDateTime, java.time.ZoneOffset);
-    method public java.time.zone.ZoneOffsetTransition nextTransition(java.time.Instant);
-    method public static java.time.zone.ZoneRules of(java.time.ZoneOffset, java.time.ZoneOffset, java.util.List<java.time.zone.ZoneOffsetTransition>, java.util.List<java.time.zone.ZoneOffsetTransition>, java.util.List<java.time.zone.ZoneOffsetTransitionRule>);
-    method public static java.time.zone.ZoneRules of(java.time.ZoneOffset);
-    method public java.time.zone.ZoneOffsetTransition previousTransition(java.time.Instant);
-  }
-
-  public class ZoneRulesException extends java.time.DateTimeException {
-    ctor public ZoneRulesException(String);
-    ctor public ZoneRulesException(String, Throwable);
-  }
-
-}
-
-package java.util {
-
-  public abstract class AbstractCollection<E> implements java.util.Collection<E> {
-    ctor protected AbstractCollection();
-    method public boolean add(E);
-    method public boolean addAll(@NonNull java.util.Collection<? extends E>);
-    method public void clear();
-    method public boolean contains(@Nullable Object);
-    method public boolean containsAll(@NonNull java.util.Collection<?>);
-    method public boolean isEmpty();
-    method public boolean remove(@Nullable Object);
-    method public boolean removeAll(@NonNull java.util.Collection<?>);
-    method public boolean retainAll(@NonNull java.util.Collection<?>);
-    method @NonNull public Object[] toArray();
-    method @NonNull public <T> T[] toArray(@NonNull T[]);
-  }
-
-  public abstract class AbstractList<E> extends java.util.AbstractCollection<E> implements java.util.List<E> {
-    ctor protected AbstractList();
-    method public void add(int, E);
-    method public boolean addAll(int, @NonNull java.util.Collection<? extends E>);
-    method public int indexOf(@Nullable Object);
-    method @NonNull public java.util.Iterator<E> iterator();
-    method public int lastIndexOf(@Nullable Object);
-    method @NonNull public java.util.ListIterator<E> listIterator();
-    method @NonNull public java.util.ListIterator<E> listIterator(int);
-    method public E remove(int);
-    method protected void removeRange(int, int);
-    method public E set(int, E);
-    method @NonNull public java.util.List<E> subList(int, int);
-    field protected transient int modCount;
-  }
-
-  public abstract class AbstractMap<K, V> implements java.util.Map<K,V> {
-    ctor protected AbstractMap();
-    method public void clear();
-    method public boolean containsKey(@Nullable Object);
-    method public boolean containsValue(@Nullable Object);
-    method @Nullable public V get(@Nullable Object);
-    method public boolean isEmpty();
-    method @NonNull public java.util.Set<K> keySet();
-    method @Nullable public V put(K, V);
-    method public void putAll(@NonNull java.util.Map<? extends K,? extends V>);
-    method @Nullable public V remove(@Nullable Object);
-    method public int size();
-    method @NonNull public java.util.Collection<V> values();
-  }
-
-  public static class AbstractMap.SimpleEntry<K, V> implements java.util.Map.Entry<K,V> java.io.Serializable {
-    ctor public AbstractMap.SimpleEntry(K, V);
-    ctor public AbstractMap.SimpleEntry(@NonNull java.util.Map.Entry<? extends K,? extends V>);
-    method public K getKey();
-    method public V getValue();
-    method public V setValue(V);
-  }
-
-  public static class AbstractMap.SimpleImmutableEntry<K, V> implements java.util.Map.Entry<K,V> java.io.Serializable {
-    ctor public AbstractMap.SimpleImmutableEntry(K, V);
-    ctor public AbstractMap.SimpleImmutableEntry(@NonNull java.util.Map.Entry<? extends K,? extends V>);
-    method public K getKey();
-    method public V getValue();
-    method public V setValue(V);
-  }
-
-  public abstract class AbstractQueue<E> extends java.util.AbstractCollection<E> implements java.util.Queue<E> {
-    ctor protected AbstractQueue();
-    method public E element();
-    method public E remove();
-  }
-
-  public abstract class AbstractSequentialList<E> extends java.util.AbstractList<E> {
-    ctor protected AbstractSequentialList();
-    method public E get(int);
-  }
-
-  public abstract class AbstractSet<E> extends java.util.AbstractCollection<E> implements java.util.Set<E> {
-    ctor protected AbstractSet();
-  }
-
-  public class ArrayDeque<E> extends java.util.AbstractCollection<E> implements java.lang.Cloneable java.util.Deque<E> java.io.Serializable {
-    ctor public ArrayDeque();
-    ctor public ArrayDeque(int);
-    ctor public ArrayDeque(@NonNull java.util.Collection<? extends E>);
-    method public void addFirst(E);
-    method public void addLast(E);
-    method @NonNull public java.util.ArrayDeque<E> clone();
-    method @NonNull public java.util.Iterator<E> descendingIterator();
-    method public E element();
-    method public E getFirst();
-    method public E getLast();
-    method @NonNull public java.util.Iterator<E> iterator();
-    method public boolean offer(E);
-    method public boolean offerFirst(E);
-    method public boolean offerLast(E);
-    method @Nullable public E peek();
-    method @Nullable public E peekFirst();
-    method @Nullable public E peekLast();
-    method @Nullable public E poll();
-    method @Nullable public E pollFirst();
-    method @Nullable public E pollLast();
-    method public E pop();
-    method public void push(E);
-    method public E remove();
-    method public E removeFirst();
-    method public boolean removeFirstOccurrence(@Nullable Object);
-    method public E removeLast();
-    method public boolean removeLastOccurrence(@Nullable Object);
-    method public int size();
-  }
-
-  public class ArrayList<E> extends java.util.AbstractList<E> implements java.lang.Cloneable java.util.List<E> java.util.RandomAccess java.io.Serializable {
-    ctor public ArrayList(int);
-    ctor public ArrayList();
-    ctor public ArrayList(@NonNull java.util.Collection<? extends E>);
-    method @NonNull public Object clone();
-    method public void ensureCapacity(int);
-    method public void forEach(@NonNull java.util.function.Consumer<? super E>);
-    method public E get(int);
-    method public int size();
-    method public void trimToSize();
-  }
-
-  public class Arrays {
-    method @NonNull @java.lang.SafeVarargs public static <T> java.util.List<T> asList(@NonNull T...);
-    method public static int binarySearch(@NonNull long[], long);
-    method public static int binarySearch(@NonNull long[], int, int, long);
-    method public static int binarySearch(@NonNull int[], int);
-    method public static int binarySearch(@NonNull int[], int, int, int);
-    method public static int binarySearch(@NonNull short[], short);
-    method public static int binarySearch(@NonNull short[], int, int, short);
-    method public static int binarySearch(@NonNull char[], char);
-    method public static int binarySearch(@NonNull char[], int, int, char);
-    method public static int binarySearch(@NonNull byte[], byte);
-    method public static int binarySearch(@NonNull byte[], int, int, byte);
-    method public static int binarySearch(@NonNull double[], double);
-    method public static int binarySearch(@NonNull double[], int, int, double);
-    method public static int binarySearch(@NonNull float[], float);
-    method public static int binarySearch(@NonNull float[], int, int, float);
-    method public static int binarySearch(@NonNull Object[], @NonNull Object);
-    method public static int binarySearch(@NonNull Object[], int, int, @NonNull Object);
-    method public static <T> int binarySearch(@NonNull T[], T, @Nullable java.util.Comparator<? super T>);
-    method public static <T> int binarySearch(@NonNull T[], int, int, T, @Nullable java.util.Comparator<? super T>);
-    method @NonNull public static <T> T[] copyOf(@NonNull T[], int);
-    method @NonNull public static <T, U> T[] copyOf(@NonNull U[], int, @NonNull Class<? extends T[]>);
-    method @NonNull public static byte[] copyOf(@NonNull byte[], int);
-    method @NonNull public static short[] copyOf(@NonNull short[], int);
-    method @NonNull public static int[] copyOf(@NonNull int[], int);
-    method @NonNull public static long[] copyOf(@NonNull long[], int);
-    method @NonNull public static char[] copyOf(@NonNull char[], int);
-    method @NonNull public static float[] copyOf(@NonNull float[], int);
-    method @NonNull public static double[] copyOf(@NonNull double[], int);
-    method @NonNull public static boolean[] copyOf(@NonNull boolean[], int);
-    method @NonNull public static <T> T[] copyOfRange(@NonNull T[], int, int);
-    method @NonNull public static <T, U> T[] copyOfRange(@NonNull U[], int, int, @NonNull Class<? extends T[]>);
-    method @NonNull public static byte[] copyOfRange(@NonNull byte[], int, int);
-    method @NonNull public static short[] copyOfRange(@NonNull short[], int, int);
-    method @NonNull public static int[] copyOfRange(@NonNull int[], int, int);
-    method @NonNull public static long[] copyOfRange(@NonNull long[], int, int);
-    method @NonNull public static char[] copyOfRange(@NonNull char[], int, int);
-    method @NonNull public static float[] copyOfRange(@NonNull float[], int, int);
-    method @NonNull public static double[] copyOfRange(@NonNull double[], int, int);
-    method @NonNull public static boolean[] copyOfRange(@NonNull boolean[], int, int);
-    method public static boolean deepEquals(@Nullable Object[], @Nullable Object[]);
-    method public static int deepHashCode(@Nullable Object[]);
-    method @NonNull public static String deepToString(@Nullable Object[]);
-    method public static boolean equals(@Nullable long[], @Nullable long[]);
-    method public static boolean equals(@Nullable int[], @Nullable int[]);
-    method public static boolean equals(@Nullable short[], @Nullable short[]);
-    method public static boolean equals(@Nullable char[], @Nullable char[]);
-    method public static boolean equals(@Nullable byte[], @Nullable byte[]);
-    method public static boolean equals(@Nullable boolean[], @Nullable boolean[]);
-    method public static boolean equals(@Nullable double[], @Nullable double[]);
-    method public static boolean equals(@Nullable float[], @Nullable float[]);
-    method public static boolean equals(@Nullable Object[], @Nullable Object[]);
-    method public static void fill(@NonNull long[], long);
-    method public static void fill(@NonNull long[], int, int, long);
-    method public static void fill(@NonNull int[], int);
-    method public static void fill(@NonNull int[], int, int, int);
-    method public static void fill(@NonNull short[], short);
-    method public static void fill(@NonNull short[], int, int, short);
-    method public static void fill(@NonNull char[], char);
-    method public static void fill(@NonNull char[], int, int, char);
-    method public static void fill(@NonNull byte[], byte);
-    method public static void fill(@NonNull byte[], int, int, byte);
-    method public static void fill(@NonNull boolean[], boolean);
-    method public static void fill(@NonNull boolean[], int, int, boolean);
-    method public static void fill(@NonNull double[], double);
-    method public static void fill(@NonNull double[], int, int, double);
-    method public static void fill(@NonNull float[], float);
-    method public static void fill(@NonNull float[], int, int, float);
-    method public static void fill(@NonNull Object[], @Nullable Object);
-    method public static void fill(@NonNull Object[], int, int, @Nullable Object);
-    method public static int hashCode(@Nullable long[]);
-    method public static int hashCode(@Nullable int[]);
-    method public static int hashCode(@Nullable short[]);
-    method public static int hashCode(@Nullable char[]);
-    method public static int hashCode(@Nullable byte[]);
-    method public static int hashCode(@Nullable boolean[]);
-    method public static int hashCode(@Nullable float[]);
-    method public static int hashCode(@Nullable double[]);
-    method public static int hashCode(@Nullable Object[]);
-    method public static <T> void parallelPrefix(@NonNull T[], @NonNull java.util.function.BinaryOperator<T>);
-    method public static <T> void parallelPrefix(@NonNull T[], int, int, @NonNull java.util.function.BinaryOperator<T>);
-    method public static void parallelPrefix(@NonNull long[], @NonNull java.util.function.LongBinaryOperator);
-    method public static void parallelPrefix(@NonNull long[], int, int, @NonNull java.util.function.LongBinaryOperator);
-    method public static void parallelPrefix(@NonNull double[], @NonNull java.util.function.DoubleBinaryOperator);
-    method public static void parallelPrefix(@NonNull double[], int, int, @NonNull java.util.function.DoubleBinaryOperator);
-    method public static void parallelPrefix(@NonNull int[], @NonNull java.util.function.IntBinaryOperator);
-    method public static void parallelPrefix(@NonNull int[], int, int, @NonNull java.util.function.IntBinaryOperator);
-    method public static <T> void parallelSetAll(@NonNull T[], @NonNull java.util.function.IntFunction<? extends T>);
-    method public static void parallelSetAll(@NonNull int[], @NonNull java.util.function.IntUnaryOperator);
-    method public static void parallelSetAll(@NonNull long[], @NonNull java.util.function.IntToLongFunction);
-    method public static void parallelSetAll(@NonNull double[], @NonNull java.util.function.IntToDoubleFunction);
-    method public static void parallelSort(@NonNull byte[]);
-    method public static void parallelSort(@NonNull byte[], int, int);
-    method public static void parallelSort(@NonNull char[]);
-    method public static void parallelSort(@NonNull char[], int, int);
-    method public static void parallelSort(@NonNull short[]);
-    method public static void parallelSort(@NonNull short[], int, int);
-    method public static void parallelSort(@NonNull int[]);
-    method public static void parallelSort(@NonNull int[], int, int);
-    method public static void parallelSort(@NonNull long[]);
-    method public static void parallelSort(@NonNull long[], int, int);
-    method public static void parallelSort(@NonNull float[]);
-    method public static void parallelSort(@NonNull float[], int, int);
-    method public static void parallelSort(@NonNull double[]);
-    method public static void parallelSort(@NonNull double[], int, int);
-    method public static <T extends java.lang.Comparable<? super T>> void parallelSort(@NonNull T[]);
-    method public static <T extends java.lang.Comparable<? super T>> void parallelSort(@NonNull T[], int, int);
-    method public static <T> void parallelSort(@NonNull T[], @Nullable java.util.Comparator<? super T>);
-    method public static <T> void parallelSort(@NonNull T[], int, int, @Nullable java.util.Comparator<? super T>);
-    method public static <T> void setAll(@NonNull T[], @NonNull java.util.function.IntFunction<? extends T>);
-    method public static void setAll(@NonNull int[], @NonNull java.util.function.IntUnaryOperator);
-    method public static void setAll(@NonNull long[], @NonNull java.util.function.IntToLongFunction);
-    method public static void setAll(@NonNull double[], @NonNull java.util.function.IntToDoubleFunction);
-    method public static void sort(@NonNull int[]);
-    method public static void sort(@NonNull int[], int, int);
-    method public static void sort(@NonNull long[]);
-    method public static void sort(@NonNull long[], int, int);
-    method public static void sort(@NonNull short[]);
-    method public static void sort(@NonNull short[], int, int);
-    method public static void sort(@NonNull char[]);
-    method public static void sort(@NonNull char[], int, int);
-    method public static void sort(@NonNull byte[]);
-    method public static void sort(@NonNull byte[], int, int);
-    method public static void sort(@NonNull float[]);
-    method public static void sort(@NonNull float[], int, int);
-    method public static void sort(@NonNull double[]);
-    method public static void sort(@NonNull double[], int, int);
-    method public static void sort(@NonNull Object[]);
-    method public static void sort(@NonNull Object[], int, int);
-    method public static <T> void sort(@NonNull T[], @Nullable java.util.Comparator<? super T>);
-    method public static <T> void sort(@NonNull T[], int, int, @Nullable java.util.Comparator<? super T>);
-    method @NonNull public static <T> java.util.Spliterator<T> spliterator(@NonNull T[]);
-    method @NonNull public static <T> java.util.Spliterator<T> spliterator(@NonNull T[], int, int);
-    method @NonNull public static java.util.Spliterator.OfInt spliterator(@NonNull int[]);
-    method @NonNull public static java.util.Spliterator.OfInt spliterator(@NonNull int[], int, int);
-    method @NonNull public static java.util.Spliterator.OfLong spliterator(@NonNull long[]);
-    method @NonNull public static java.util.Spliterator.OfLong spliterator(@NonNull long[], int, int);
-    method @NonNull public static java.util.Spliterator.OfDouble spliterator(@NonNull double[]);
-    method @NonNull public static java.util.Spliterator.OfDouble spliterator(@NonNull double[], int, int);
-    method @NonNull public static <T> java.util.stream.Stream<T> stream(@NonNull T[]);
-    method @NonNull public static <T> java.util.stream.Stream<T> stream(@NonNull T[], int, int);
-    method @NonNull public static java.util.stream.IntStream stream(@NonNull int[]);
-    method @NonNull public static java.util.stream.IntStream stream(@NonNull int[], int, int);
-    method @NonNull public static java.util.stream.LongStream stream(@NonNull long[]);
-    method @NonNull public static java.util.stream.LongStream stream(@NonNull long[], int, int);
-    method @NonNull public static java.util.stream.DoubleStream stream(@NonNull double[]);
-    method @NonNull public static java.util.stream.DoubleStream stream(@NonNull double[], int, int);
-    method @NonNull public static String toString(@Nullable long[]);
-    method @NonNull public static String toString(@Nullable int[]);
-    method @NonNull public static String toString(@Nullable short[]);
-    method @NonNull public static String toString(@Nullable char[]);
-    method @NonNull public static String toString(@Nullable byte[]);
-    method @NonNull public static String toString(@Nullable boolean[]);
-    method @NonNull public static String toString(@Nullable float[]);
-    method @NonNull public static String toString(@Nullable double[]);
-    method @NonNull public static String toString(@Nullable Object[]);
-  }
-
-  public class Base64 {
-    method public static java.util.Base64.Decoder getDecoder();
-    method public static java.util.Base64.Encoder getEncoder();
-    method public static java.util.Base64.Decoder getMimeDecoder();
-    method public static java.util.Base64.Encoder getMimeEncoder();
-    method public static java.util.Base64.Encoder getMimeEncoder(int, byte[]);
-    method public static java.util.Base64.Decoder getUrlDecoder();
-    method public static java.util.Base64.Encoder getUrlEncoder();
-  }
-
-  public static class Base64.Decoder {
-    method public byte[] decode(byte[]);
-    method public byte[] decode(String);
-    method public int decode(byte[], byte[]);
-    method public java.nio.ByteBuffer decode(java.nio.ByteBuffer);
-    method public java.io.InputStream wrap(java.io.InputStream);
-  }
-
-  public static class Base64.Encoder {
-    method public byte[] encode(byte[]);
-    method public int encode(byte[], byte[]);
-    method public java.nio.ByteBuffer encode(java.nio.ByteBuffer);
-    method public String encodeToString(byte[]);
-    method public java.util.Base64.Encoder withoutPadding();
-    method public java.io.OutputStream wrap(java.io.OutputStream);
-  }
-
-  public class BitSet implements java.lang.Cloneable java.io.Serializable {
-    ctor public BitSet();
-    ctor public BitSet(int);
-    method public void and(java.util.BitSet);
-    method public void andNot(java.util.BitSet);
-    method public int cardinality();
-    method public void clear(int);
-    method public void clear(int, int);
-    method public void clear();
-    method public Object clone();
-    method public void flip(int);
-    method public void flip(int, int);
-    method public boolean get(int);
-    method public java.util.BitSet get(int, int);
-    method public boolean intersects(java.util.BitSet);
-    method public boolean isEmpty();
-    method public int length();
-    method public int nextClearBit(int);
-    method public int nextSetBit(int);
-    method public void or(java.util.BitSet);
-    method public int previousClearBit(int);
-    method public int previousSetBit(int);
-    method public void set(int);
-    method public void set(int, boolean);
-    method public void set(int, int);
-    method public void set(int, int, boolean);
-    method public int size();
-    method public java.util.stream.IntStream stream();
-    method public byte[] toByteArray();
-    method public long[] toLongArray();
-    method public static java.util.BitSet valueOf(long[]);
-    method public static java.util.BitSet valueOf(java.nio.LongBuffer);
-    method public static java.util.BitSet valueOf(byte[]);
-    method public static java.util.BitSet valueOf(java.nio.ByteBuffer);
-    method public void xor(java.util.BitSet);
-  }
-
-  public abstract class Calendar implements java.lang.Cloneable java.lang.Comparable<java.util.Calendar> java.io.Serializable {
-    ctor protected Calendar();
-    ctor protected Calendar(@NonNull java.util.TimeZone, @NonNull java.util.Locale);
-    method public abstract void add(int, int);
-    method public boolean after(@Nullable Object);
-    method public boolean before(@Nullable Object);
-    method public final void clear();
-    method public final void clear(int);
-    method @NonNull public Object clone();
-    method public int compareTo(@NonNull java.util.Calendar);
-    method protected void complete();
-    method protected abstract void computeFields();
-    method protected abstract void computeTime();
-    method public int get(int);
-    method public int getActualMaximum(int);
-    method public int getActualMinimum(int);
-    method @NonNull public static java.util.Set<java.lang.String> getAvailableCalendarTypes();
-    method @NonNull public static java.util.Locale[] getAvailableLocales();
-    method @NonNull public String getCalendarType();
-    method @Nullable public String getDisplayName(int, int, @NonNull java.util.Locale);
-    method @Nullable public java.util.Map<java.lang.String,java.lang.Integer> getDisplayNames(int, int, @NonNull java.util.Locale);
-    method public int getFirstDayOfWeek();
-    method public abstract int getGreatestMinimum(int);
-    method @NonNull public static java.util.Calendar getInstance();
-    method @NonNull public static java.util.Calendar getInstance(@NonNull java.util.TimeZone);
-    method @NonNull public static java.util.Calendar getInstance(@NonNull java.util.Locale);
-    method @NonNull public static java.util.Calendar getInstance(@NonNull java.util.TimeZone, @NonNull java.util.Locale);
-    method public abstract int getLeastMaximum(int);
-    method public abstract int getMaximum(int);
-    method public int getMinimalDaysInFirstWeek();
-    method public abstract int getMinimum(int);
-    method @NonNull public final java.util.Date getTime();
-    method public long getTimeInMillis();
-    method @NonNull public java.util.TimeZone getTimeZone();
-    method public int getWeekYear();
-    method public int getWeeksInWeekYear();
-    method protected final int internalGet(int);
-    method public boolean isLenient();
-    method public final boolean isSet(int);
-    method public boolean isWeekDateSupported();
-    method public abstract void roll(int, boolean);
-    method public void roll(int, int);
-    method public void set(int, int);
-    method public final void set(int, int, int);
-    method public final void set(int, int, int, int, int);
-    method public final void set(int, int, int, int, int, int);
-    method public void setFirstDayOfWeek(int);
-    method public void setLenient(boolean);
-    method public void setMinimalDaysInFirstWeek(int);
-    method public final void setTime(@NonNull java.util.Date);
-    method public void setTimeInMillis(long);
-    method public void setTimeZone(@NonNull java.util.TimeZone);
-    method public void setWeekDate(int, int, int);
-    method @NonNull public final java.time.Instant toInstant();
-    field public static final int ALL_STYLES = 0; // 0x0
-    field public static final int AM = 0; // 0x0
-    field public static final int AM_PM = 9; // 0x9
-    field public static final int APRIL = 3; // 0x3
-    field public static final int AUGUST = 7; // 0x7
-    field public static final int DATE = 5; // 0x5
-    field public static final int DAY_OF_MONTH = 5; // 0x5
-    field public static final int DAY_OF_WEEK = 7; // 0x7
-    field public static final int DAY_OF_WEEK_IN_MONTH = 8; // 0x8
-    field public static final int DAY_OF_YEAR = 6; // 0x6
-    field public static final int DECEMBER = 11; // 0xb
-    field public static final int DST_OFFSET = 16; // 0x10
-    field public static final int ERA = 0; // 0x0
-    field public static final int FEBRUARY = 1; // 0x1
-    field public static final int FIELD_COUNT = 17; // 0x11
-    field public static final int FRIDAY = 6; // 0x6
-    field public static final int HOUR = 10; // 0xa
-    field public static final int HOUR_OF_DAY = 11; // 0xb
-    field public static final int JANUARY = 0; // 0x0
-    field public static final int JULY = 6; // 0x6
-    field public static final int JUNE = 5; // 0x5
-    field public static final int LONG = 2; // 0x2
-    field public static final int LONG_FORMAT = 2; // 0x2
-    field public static final int LONG_STANDALONE = 32770; // 0x8002
-    field public static final int MARCH = 2; // 0x2
-    field public static final int MAY = 4; // 0x4
-    field public static final int MILLISECOND = 14; // 0xe
-    field public static final int MINUTE = 12; // 0xc
-    field public static final int MONDAY = 2; // 0x2
-    field public static final int MONTH = 2; // 0x2
-    field public static final int NARROW_FORMAT = 4; // 0x4
-    field public static final int NARROW_STANDALONE = 32772; // 0x8004
-    field public static final int NOVEMBER = 10; // 0xa
-    field public static final int OCTOBER = 9; // 0x9
-    field public static final int PM = 1; // 0x1
-    field public static final int SATURDAY = 7; // 0x7
-    field public static final int SECOND = 13; // 0xd
-    field public static final int SEPTEMBER = 8; // 0x8
-    field public static final int SHORT = 1; // 0x1
-    field public static final int SHORT_FORMAT = 1; // 0x1
-    field public static final int SHORT_STANDALONE = 32769; // 0x8001
-    field public static final int SUNDAY = 1; // 0x1
-    field public static final int THURSDAY = 5; // 0x5
-    field public static final int TUESDAY = 3; // 0x3
-    field public static final int UNDECIMBER = 12; // 0xc
-    field public static final int WEDNESDAY = 4; // 0x4
-    field public static final int WEEK_OF_MONTH = 4; // 0x4
-    field public static final int WEEK_OF_YEAR = 3; // 0x3
-    field public static final int YEAR = 1; // 0x1
-    field public static final int ZONE_OFFSET = 15; // 0xf
-    field protected boolean areFieldsSet;
-    field @NonNull protected int[] fields;
-    field @NonNull protected boolean[] isSet;
-    field protected boolean isTimeSet;
-    field protected long time;
-  }
-
-  public static class Calendar.Builder {
-    ctor public Calendar.Builder();
-    method @NonNull public java.util.Calendar build();
-    method @NonNull public java.util.Calendar.Builder set(int, int);
-    method @NonNull public java.util.Calendar.Builder setCalendarType(@NonNull String);
-    method @NonNull public java.util.Calendar.Builder setDate(int, int, int);
-    method @NonNull public java.util.Calendar.Builder setFields(@NonNull int...);
-    method @NonNull public java.util.Calendar.Builder setInstant(long);
-    method @NonNull public java.util.Calendar.Builder setInstant(@NonNull java.util.Date);
-    method @NonNull public java.util.Calendar.Builder setLenient(boolean);
-    method @NonNull public java.util.Calendar.Builder setLocale(@NonNull java.util.Locale);
-    method @NonNull public java.util.Calendar.Builder setTimeOfDay(int, int, int);
-    method @NonNull public java.util.Calendar.Builder setTimeOfDay(int, int, int, int);
-    method @NonNull public java.util.Calendar.Builder setTimeZone(@NonNull java.util.TimeZone);
-    method @NonNull public java.util.Calendar.Builder setWeekDate(int, int, int);
-    method @NonNull public java.util.Calendar.Builder setWeekDefinition(int, int);
-  }
-
-  public interface Collection<E> extends java.lang.Iterable<E> {
-    method public boolean add(E);
-    method public boolean addAll(@NonNull java.util.Collection<? extends E>);
-    method public void clear();
-    method public boolean contains(@Nullable Object);
-    method public boolean containsAll(@NonNull java.util.Collection<?>);
-    method public boolean equals(@Nullable Object);
-    method public int hashCode();
-    method public boolean isEmpty();
-    method @NonNull public java.util.Iterator<E> iterator();
-    method @NonNull public default java.util.stream.Stream<E> parallelStream();
-    method public boolean remove(@Nullable Object);
-    method public boolean removeAll(@NonNull java.util.Collection<?>);
-    method public default boolean removeIf(@NonNull java.util.function.Predicate<? super E>);
-    method public boolean retainAll(@NonNull java.util.Collection<?>);
-    method public int size();
-    method @NonNull public default java.util.Spliterator<E> spliterator();
-    method @NonNull public default java.util.stream.Stream<E> stream();
-    method @NonNull public Object[] toArray();
-    method @NonNull public <T> T[] toArray(@NonNull T[]);
-  }
-
-  public class Collections {
-    method @java.lang.SafeVarargs public static <T> boolean addAll(@NonNull java.util.Collection<? super T>, @NonNull T...);
-    method @NonNull public static <T> java.util.Queue<T> asLifoQueue(@NonNull java.util.Deque<T>);
-    method public static <T> int binarySearch(@NonNull java.util.List<? extends java.lang.Comparable<? super T>>, @NonNull T);
-    method public static <T> int binarySearch(@NonNull java.util.List<? extends T>, T, @Nullable java.util.Comparator<? super T>);
-    method @NonNull public static <E> java.util.Collection<E> checkedCollection(@NonNull java.util.Collection<E>, @NonNull Class<E>);
-    method @NonNull public static <E> java.util.List<E> checkedList(@NonNull java.util.List<E>, @NonNull Class<E>);
-    method @NonNull public static <K, V> java.util.Map<K,V> checkedMap(@NonNull java.util.Map<K,V>, @NonNull Class<K>, @NonNull Class<V>);
-    method @NonNull public static <K, V> java.util.NavigableMap<K,V> checkedNavigableMap(@NonNull java.util.NavigableMap<K,V>, @NonNull Class<K>, @NonNull Class<V>);
-    method @NonNull public static <E> java.util.NavigableSet<E> checkedNavigableSet(@NonNull java.util.NavigableSet<E>, @NonNull Class<E>);
-    method @NonNull public static <E> java.util.Queue<E> checkedQueue(@NonNull java.util.Queue<E>, @NonNull Class<E>);
-    method @NonNull public static <E> java.util.Set<E> checkedSet(@NonNull java.util.Set<E>, @NonNull Class<E>);
-    method @NonNull public static <K, V> java.util.SortedMap<K,V> checkedSortedMap(@NonNull java.util.SortedMap<K,V>, @NonNull Class<K>, @NonNull Class<V>);
-    method @NonNull public static <E> java.util.SortedSet<E> checkedSortedSet(@NonNull java.util.SortedSet<E>, @NonNull Class<E>);
-    method public static <T> void copy(@NonNull java.util.List<? super T>, @NonNull java.util.List<? extends T>);
-    method public static boolean disjoint(@NonNull java.util.Collection<?>, @NonNull java.util.Collection<?>);
-    method @NonNull public static <T> java.util.Enumeration<T> emptyEnumeration();
-    method @NonNull public static <T> java.util.Iterator<T> emptyIterator();
-    method @NonNull public static final <T> java.util.List<T> emptyList();
-    method @NonNull public static <T> java.util.ListIterator<T> emptyListIterator();
-    method @NonNull public static final <K, V> java.util.Map<K,V> emptyMap();
-    method @NonNull public static final <K, V> java.util.NavigableMap<K,V> emptyNavigableMap();
-    method @NonNull public static <E> java.util.NavigableSet<E> emptyNavigableSet();
-    method @NonNull public static final <T> java.util.Set<T> emptySet();
-    method @NonNull public static final <K, V> java.util.SortedMap<K,V> emptySortedMap();
-    method @NonNull public static <E> java.util.SortedSet<E> emptySortedSet();
-    method @NonNull public static <T> java.util.Enumeration<T> enumeration(@NonNull java.util.Collection<T>);
-    method public static <T> void fill(@NonNull java.util.List<? super T>, T);
-    method public static int frequency(@NonNull java.util.Collection<?>, @Nullable Object);
-    method public static int indexOfSubList(@NonNull java.util.List<?>, @NonNull java.util.List<?>);
-    method public static int lastIndexOfSubList(@NonNull java.util.List<?>, @NonNull java.util.List<?>);
-    method @NonNull public static <T> java.util.ArrayList<T> list(@NonNull java.util.Enumeration<T>);
-    method @NonNull public static <T extends java.lang.Object & java.lang.Comparable<? super T>> T max(@NonNull java.util.Collection<? extends T>);
-    method public static <T> T max(@NonNull java.util.Collection<? extends T>, @Nullable java.util.Comparator<? super T>);
-    method @NonNull public static <T extends java.lang.Object & java.lang.Comparable<? super T>> T min(@NonNull java.util.Collection<? extends T>);
-    method public static <T> T min(@NonNull java.util.Collection<? extends T>, @Nullable java.util.Comparator<? super T>);
-    method @NonNull public static <T> java.util.List<T> nCopies(int, T);
-    method @NonNull public static <E> java.util.Set<E> newSetFromMap(@NonNull java.util.Map<E,java.lang.Boolean>);
-    method public static <T> boolean replaceAll(@NonNull java.util.List<T>, T, T);
-    method public static void reverse(@NonNull java.util.List<?>);
-    method @NonNull public static <T> java.util.Comparator<T> reverseOrder();
-    method @NonNull public static <T> java.util.Comparator<T> reverseOrder(@Nullable java.util.Comparator<T>);
-    method public static void rotate(@NonNull java.util.List<?>, int);
-    method public static void shuffle(@NonNull java.util.List<?>);
-    method public static void shuffle(@NonNull java.util.List<?>, @NonNull java.util.Random);
-    method @NonNull public static <T> java.util.Set<T> singleton(T);
-    method @NonNull public static <T> java.util.List<T> singletonList(T);
-    method @NonNull public static <K, V> java.util.Map<K,V> singletonMap(K, V);
-    method public static <T extends java.lang.Comparable<? super T>> void sort(@NonNull java.util.List<T>);
-    method public static <T> void sort(@NonNull java.util.List<T>, @Nullable java.util.Comparator<? super T>);
-    method public static void swap(@NonNull java.util.List<?>, int, int);
-    method @NonNull public static <T> java.util.Collection<T> synchronizedCollection(@NonNull java.util.Collection<T>);
-    method @NonNull public static <T> java.util.List<T> synchronizedList(@NonNull java.util.List<T>);
-    method @NonNull public static <K, V> java.util.Map<K,V> synchronizedMap(@NonNull java.util.Map<K,V>);
-    method @NonNull public static <K, V> java.util.NavigableMap<K,V> synchronizedNavigableMap(@NonNull java.util.NavigableMap<K,V>);
-    method @NonNull public static <T> java.util.NavigableSet<T> synchronizedNavigableSet(@NonNull java.util.NavigableSet<T>);
-    method @NonNull public static <T> java.util.Set<T> synchronizedSet(@NonNull java.util.Set<T>);
-    method @NonNull public static <K, V> java.util.SortedMap<K,V> synchronizedSortedMap(@NonNull java.util.SortedMap<K,V>);
-    method @NonNull public static <T> java.util.SortedSet<T> synchronizedSortedSet(@NonNull java.util.SortedSet<T>);
-    method @NonNull public static <T> java.util.Collection<T> unmodifiableCollection(@NonNull java.util.Collection<? extends T>);
-    method @NonNull public static <T> java.util.List<T> unmodifiableList(@NonNull java.util.List<? extends T>);
-    method @NonNull public static <K, V> java.util.Map<K,V> unmodifiableMap(@NonNull java.util.Map<? extends K,? extends V>);
-    method @NonNull public static <K, V> java.util.NavigableMap<K,V> unmodifiableNavigableMap(@NonNull java.util.NavigableMap<K,? extends V>);
-    method @NonNull public static <T> java.util.NavigableSet<T> unmodifiableNavigableSet(@NonNull java.util.NavigableSet<T>);
-    method @NonNull public static <T> java.util.Set<T> unmodifiableSet(@NonNull java.util.Set<? extends T>);
-    method @NonNull public static <K, V> java.util.SortedMap<K,V> unmodifiableSortedMap(@NonNull java.util.SortedMap<K,? extends V>);
-    method @NonNull public static <T> java.util.SortedSet<T> unmodifiableSortedSet(@NonNull java.util.SortedSet<T>);
-    field @NonNull public static final java.util.List EMPTY_LIST;
-    field @NonNull public static final java.util.Map EMPTY_MAP;
-    field @NonNull public static final java.util.Set EMPTY_SET;
-  }
-
-  @java.lang.FunctionalInterface public interface Comparator<T> {
-    method public int compare(T, T);
-    method public static <T, U> java.util.Comparator<T> comparing(java.util.function.Function<? super T,? extends U>, java.util.Comparator<? super U>);
-    method public static <T, U extends java.lang.Comparable<? super U>> java.util.Comparator<T> comparing(java.util.function.Function<? super T,? extends U>);
-    method public static <T> java.util.Comparator<T> comparingDouble(java.util.function.ToDoubleFunction<? super T>);
-    method public static <T> java.util.Comparator<T> comparingInt(java.util.function.ToIntFunction<? super T>);
-    method public static <T> java.util.Comparator<T> comparingLong(java.util.function.ToLongFunction<? super T>);
-    method public boolean equals(Object);
-    method public static <T extends java.lang.Comparable<? super T>> java.util.Comparator<T> naturalOrder();
-    method public static <T> java.util.Comparator<T> nullsFirst(java.util.Comparator<? super T>);
-    method public static <T> java.util.Comparator<T> nullsLast(java.util.Comparator<? super T>);
-    method public static <T extends java.lang.Comparable<? super T>> java.util.Comparator<T> reverseOrder();
-    method public default java.util.Comparator<T> reversed();
-    method public default java.util.Comparator<T> thenComparing(java.util.Comparator<? super T>);
-    method public default <U> java.util.Comparator<T> thenComparing(java.util.function.Function<? super T,? extends U>, java.util.Comparator<? super U>);
-    method public default <U extends java.lang.Comparable<? super U>> java.util.Comparator<T> thenComparing(java.util.function.Function<? super T,? extends U>);
-    method public default java.util.Comparator<T> thenComparingDouble(java.util.function.ToDoubleFunction<? super T>);
-    method public default java.util.Comparator<T> thenComparingInt(java.util.function.ToIntFunction<? super T>);
-    method public default java.util.Comparator<T> thenComparingLong(java.util.function.ToLongFunction<? super T>);
-  }
-
-  public class ConcurrentModificationException extends java.lang.RuntimeException {
-    ctor public ConcurrentModificationException();
-    ctor public ConcurrentModificationException(String);
-    ctor public ConcurrentModificationException(Throwable);
-    ctor public ConcurrentModificationException(String, Throwable);
-  }
-
-  public final class Currency implements java.io.Serializable {
-    method public static java.util.Set<java.util.Currency> getAvailableCurrencies();
-    method public String getCurrencyCode();
-    method public int getDefaultFractionDigits();
-    method public String getDisplayName();
-    method public String getDisplayName(java.util.Locale);
-    method public static java.util.Currency getInstance(String);
-    method public static java.util.Currency getInstance(java.util.Locale);
-    method public int getNumericCode();
-    method public String getSymbol();
-    method public String getSymbol(java.util.Locale);
-  }
-
-  public class Date implements java.lang.Cloneable java.lang.Comparable<java.util.Date> java.io.Serializable {
-    ctor public Date();
-    ctor public Date(long);
-    ctor @Deprecated public Date(int, int, int);
-    ctor @Deprecated public Date(int, int, int, int, int);
-    ctor @Deprecated public Date(int, int, int, int, int, int);
-    ctor @Deprecated public Date(String);
-    method @Deprecated public static long UTC(int, int, int, int, int, int);
-    method public boolean after(java.util.Date);
-    method public boolean before(java.util.Date);
-    method public Object clone();
-    method public int compareTo(java.util.Date);
-    method public static java.util.Date from(java.time.Instant);
-    method @Deprecated public int getDate();
-    method @Deprecated public int getDay();
-    method @Deprecated public int getHours();
-    method @Deprecated public int getMinutes();
-    method @Deprecated public int getMonth();
-    method @Deprecated public int getSeconds();
-    method public long getTime();
-    method @Deprecated public int getTimezoneOffset();
-    method @Deprecated public int getYear();
-    method @Deprecated public static long parse(String);
-    method @Deprecated public void setDate(int);
-    method @Deprecated public void setHours(int);
-    method @Deprecated public void setMinutes(int);
-    method @Deprecated public void setMonth(int);
-    method @Deprecated public void setSeconds(int);
-    method public void setTime(long);
-    method @Deprecated public void setYear(int);
-    method @Deprecated public String toGMTString();
-    method public java.time.Instant toInstant();
-    method @Deprecated public String toLocaleString();
-  }
-
-  public interface Deque<E> extends java.util.Queue<E> {
-    method public void addFirst(E);
-    method public void addLast(E);
-    method @NonNull public java.util.Iterator<E> descendingIterator();
-    method public E getFirst();
-    method public E getLast();
-    method public boolean offerFirst(E);
-    method public boolean offerLast(E);
-    method @Nullable public E peekFirst();
-    method @Nullable public E peekLast();
-    method @Nullable public E pollFirst();
-    method @Nullable public E pollLast();
-    method public E pop();
-    method public void push(E);
-    method public E removeFirst();
-    method public boolean removeFirstOccurrence(@Nullable Object);
-    method public E removeLast();
-    method public boolean removeLastOccurrence(@Nullable Object);
-  }
-
-  public abstract class Dictionary<K, V> {
-    ctor public Dictionary();
-    method public abstract java.util.Enumeration<V> elements();
-    method public abstract V get(Object);
-    method public abstract boolean isEmpty();
-    method public abstract java.util.Enumeration<K> keys();
-    method public abstract V put(K, V);
-    method public abstract V remove(Object);
-    method public abstract int size();
-  }
-
-  public class DoubleSummaryStatistics implements java.util.function.DoubleConsumer {
-    ctor public DoubleSummaryStatistics();
-    method public void accept(double);
-    method public void combine(java.util.DoubleSummaryStatistics);
-    method public final double getAverage();
-    method public final long getCount();
-    method public final double getMax();
-    method public final double getMin();
-    method public final double getSum();
-  }
-
-  public class DuplicateFormatFlagsException extends java.util.IllegalFormatException {
-    ctor public DuplicateFormatFlagsException(String);
-    method public String getFlags();
-  }
-
-  public class EmptyStackException extends java.lang.RuntimeException {
-    ctor public EmptyStackException();
-  }
-
-  public class EnumMap<K extends java.lang.Enum<K>, V> extends java.util.AbstractMap<K,V> implements java.lang.Cloneable java.io.Serializable {
-    ctor public EnumMap(Class<K>);
-    ctor public EnumMap(java.util.EnumMap<K,? extends V>);
-    ctor public EnumMap(java.util.Map<K,? extends V>);
-    method public java.util.EnumMap<K,V> clone();
-    method public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
-  }
-
-  public abstract class EnumSet<E extends java.lang.Enum<E>> extends java.util.AbstractSet<E> implements java.lang.Cloneable java.io.Serializable {
-    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> allOf(Class<E>);
-    method public java.util.EnumSet<E> clone();
-    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> complementOf(java.util.EnumSet<E>);
-    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> copyOf(java.util.EnumSet<E>);
-    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> copyOf(java.util.Collection<E>);
-    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> noneOf(Class<E>);
-    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E);
-    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E, E);
-    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E, E, E);
-    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E, E, E, E);
-    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E, E, E, E, E);
-    method @java.lang.SafeVarargs public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E, E...);
-    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> range(E, E);
-  }
-
-  public interface Enumeration<E> {
-    method public boolean hasMoreElements();
-    method public E nextElement();
-  }
-
-  public interface EventListener {
-  }
-
-  public abstract class EventListenerProxy<T extends java.util.EventListener> implements java.util.EventListener {
-    ctor public EventListenerProxy(T);
-    method public T getListener();
-  }
-
-  public class EventObject implements java.io.Serializable {
-    ctor public EventObject(Object);
-    method public Object getSource();
-    field protected transient Object source;
-  }
-
-  public class FormatFlagsConversionMismatchException extends java.util.IllegalFormatException {
-    ctor public FormatFlagsConversionMismatchException(String, char);
-    method public char getConversion();
-    method public String getFlags();
-  }
-
-  public interface Formattable {
-    method public void formatTo(java.util.Formatter, int, int, int);
-  }
-
-  public class FormattableFlags {
-    field public static final int ALTERNATE = 4; // 0x4
-    field public static final int LEFT_JUSTIFY = 1; // 0x1
-    field public static final int UPPERCASE = 2; // 0x2
-  }
-
-  public final class Formatter implements java.io.Closeable java.io.Flushable {
-    ctor public Formatter();
-    ctor public Formatter(Appendable);
-    ctor public Formatter(java.util.Locale);
-    ctor public Formatter(Appendable, java.util.Locale);
-    ctor public Formatter(String) throws java.io.FileNotFoundException;
-    ctor public Formatter(String, String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
-    ctor public Formatter(String, String, java.util.Locale) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
-    ctor public Formatter(java.io.File) throws java.io.FileNotFoundException;
-    ctor public Formatter(java.io.File, String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
-    ctor public Formatter(java.io.File, String, java.util.Locale) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
-    ctor public Formatter(java.io.PrintStream);
-    ctor public Formatter(java.io.OutputStream);
-    ctor public Formatter(java.io.OutputStream, String) throws java.io.UnsupportedEncodingException;
-    ctor public Formatter(java.io.OutputStream, String, java.util.Locale) throws java.io.UnsupportedEncodingException;
-    method public void close();
-    method public void flush();
-    method public java.util.Formatter format(String, java.lang.Object...);
-    method public java.util.Formatter format(java.util.Locale, String, java.lang.Object...);
-    method public java.io.IOException ioException();
-    method public java.util.Locale locale();
-    method public Appendable out();
-  }
-
-  public enum Formatter.BigDecimalLayoutForm {
-    enum_constant public static final java.util.Formatter.BigDecimalLayoutForm DECIMAL_FLOAT;
-    enum_constant public static final java.util.Formatter.BigDecimalLayoutForm SCIENTIFIC;
-  }
-
-  public class FormatterClosedException extends java.lang.IllegalStateException {
-    ctor public FormatterClosedException();
-  }
-
-  public class GregorianCalendar extends java.util.Calendar {
-    ctor public GregorianCalendar();
-    ctor public GregorianCalendar(java.util.TimeZone);
-    ctor public GregorianCalendar(java.util.Locale);
-    ctor public GregorianCalendar(java.util.TimeZone, java.util.Locale);
-    ctor public GregorianCalendar(int, int, int);
-    ctor public GregorianCalendar(int, int, int, int, int);
-    ctor public GregorianCalendar(int, int, int, int, int, int);
-    method public void add(int, int);
-    method protected void computeFields();
-    method protected void computeTime();
-    method public static java.util.GregorianCalendar from(java.time.ZonedDateTime);
-    method public int getGreatestMinimum(int);
-    method public final java.util.Date getGregorianChange();
-    method public int getLeastMaximum(int);
-    method public int getMaximum(int);
-    method public int getMinimum(int);
-    method public boolean isLeapYear(int);
-    method public final boolean isWeekDateSupported();
-    method public void roll(int, boolean);
-    method public void setGregorianChange(java.util.Date);
-    method public java.time.ZonedDateTime toZonedDateTime();
-    field public static final int AD = 1; // 0x1
-    field public static final int BC = 0; // 0x0
-  }
-
-  public class HashMap<K, V> extends java.util.AbstractMap<K,V> implements java.lang.Cloneable java.util.Map<K,V> java.io.Serializable {
-    ctor public HashMap(int, float);
-    ctor public HashMap(int);
-    ctor public HashMap();
-    ctor public HashMap(@NonNull java.util.Map<? extends K,? extends V>);
-    method @NonNull public Object clone();
-    method @NonNull public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
-  }
-
-  public class HashSet<E> extends java.util.AbstractSet<E> implements java.lang.Cloneable java.io.Serializable java.util.Set<E> {
-    ctor public HashSet();
-    ctor public HashSet(@NonNull java.util.Collection<? extends E>);
-    ctor public HashSet(int, float);
-    ctor public HashSet(int);
-    method @NonNull public Object clone();
-    method @NonNull public java.util.Iterator<E> iterator();
-    method public int size();
-  }
-
-  public class Hashtable<K, V> extends java.util.Dictionary<K,V> implements java.lang.Cloneable java.util.Map<K,V> java.io.Serializable {
-    ctor public Hashtable(int, float);
-    ctor public Hashtable(int);
-    ctor public Hashtable();
-    ctor public Hashtable(java.util.Map<? extends K,? extends V>);
-    method public void clear();
-    method public Object clone();
-    method public boolean contains(Object);
-    method public boolean containsKey(Object);
-    method public boolean containsValue(Object);
-    method public java.util.Enumeration<V> elements();
-    method public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
-    method public V get(Object);
-    method public boolean isEmpty();
-    method public java.util.Set<K> keySet();
-    method public java.util.Enumeration<K> keys();
-    method public V put(K, V);
-    method public void putAll(java.util.Map<? extends K,? extends V>);
-    method protected void rehash();
-    method public V remove(Object);
-    method public int size();
-    method public java.util.Collection<V> values();
-  }
-
-  public class IdentityHashMap<K, V> extends java.util.AbstractMap<K,V> implements java.lang.Cloneable java.util.Map<K,V> java.io.Serializable {
-    ctor public IdentityHashMap();
-    ctor public IdentityHashMap(int);
-    ctor public IdentityHashMap(java.util.Map<? extends K,? extends V>);
-    method public Object clone();
-    method public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
-  }
-
-  public class IllegalFormatCodePointException extends java.util.IllegalFormatException {
-    ctor public IllegalFormatCodePointException(int);
-    method public int getCodePoint();
-  }
-
-  public class IllegalFormatConversionException extends java.util.IllegalFormatException {
-    ctor public IllegalFormatConversionException(char, Class<?>);
-    method public Class<?> getArgumentClass();
-    method public char getConversion();
-  }
-
-  public class IllegalFormatException extends java.lang.IllegalArgumentException {
-  }
-
-  public class IllegalFormatFlagsException extends java.util.IllegalFormatException {
-    ctor public IllegalFormatFlagsException(String);
-    method public String getFlags();
-  }
-
-  public class IllegalFormatPrecisionException extends java.util.IllegalFormatException {
-    ctor public IllegalFormatPrecisionException(int);
-    method public int getPrecision();
-  }
-
-  public class IllegalFormatWidthException extends java.util.IllegalFormatException {
-    ctor public IllegalFormatWidthException(int);
-    method public int getWidth();
-  }
-
-  public class IllformedLocaleException extends java.lang.RuntimeException {
-    ctor public IllformedLocaleException();
-    ctor public IllformedLocaleException(String);
-    ctor public IllformedLocaleException(String, int);
-    method public int getErrorIndex();
-  }
-
-  public class InputMismatchException extends java.util.NoSuchElementException {
-    ctor public InputMismatchException();
-    ctor public InputMismatchException(String);
-  }
-
-  public class IntSummaryStatistics implements java.util.function.IntConsumer {
-    ctor public IntSummaryStatistics();
-    method public void accept(int);
-    method public void combine(java.util.IntSummaryStatistics);
-    method public final double getAverage();
-    method public final long getCount();
-    method public final int getMax();
-    method public final int getMin();
-    method public final long getSum();
-  }
-
-  public class InvalidPropertiesFormatException extends java.io.IOException {
-    ctor public InvalidPropertiesFormatException(Throwable);
-    ctor public InvalidPropertiesFormatException(String);
-  }
-
-  public interface Iterator<E> {
-    method public default void forEachRemaining(@NonNull java.util.function.Consumer<? super E>);
-    method public boolean hasNext();
-    method public E next();
-    method public default void remove();
-  }
-
-  public class LinkedHashMap<K, V> extends java.util.HashMap<K,V> implements java.util.Map<K,V> {
-    ctor public LinkedHashMap(int, float);
-    ctor public LinkedHashMap(int);
-    ctor public LinkedHashMap();
-    ctor public LinkedHashMap(java.util.Map<? extends K,? extends V>);
-    ctor public LinkedHashMap(int, float, boolean);
-    method protected boolean removeEldestEntry(java.util.Map.Entry<K,V>);
-  }
-
-  public class LinkedHashSet<E> extends java.util.HashSet<E> implements java.lang.Cloneable java.io.Serializable java.util.Set<E> {
-    ctor public LinkedHashSet(int, float);
-    ctor public LinkedHashSet(int);
-    ctor public LinkedHashSet();
-    ctor public LinkedHashSet(java.util.Collection<? extends E>);
-  }
-
-  public class LinkedList<E> extends java.util.AbstractSequentialList<E> implements java.lang.Cloneable java.util.Deque<E> java.util.List<E> java.io.Serializable {
-    ctor public LinkedList();
-    ctor public LinkedList(@NonNull java.util.Collection<? extends E>);
-    method public void addFirst(E);
-    method public void addLast(E);
-    method @NonNull public Object clone();
-    method @NonNull public java.util.Iterator<E> descendingIterator();
-    method public E element();
-    method public E getFirst();
-    method public E getLast();
-    method public boolean offer(E);
-    method public boolean offerFirst(E);
-    method public boolean offerLast(E);
-    method @Nullable public E peek();
-    method @Nullable public E peekFirst();
-    method @Nullable public E peekLast();
-    method @Nullable public E poll();
-    method @Nullable public E pollFirst();
-    method @Nullable public E pollLast();
-    method public E pop();
-    method public void push(E);
-    method public E remove();
-    method public E removeFirst();
-    method public boolean removeFirstOccurrence(@Nullable Object);
-    method public E removeLast();
-    method public boolean removeLastOccurrence(@Nullable Object);
-    method public int size();
-  }
-
-  public interface List<E> extends java.util.Collection<E> {
-    method public void add(int, E);
-    method public boolean addAll(int, @NonNull java.util.Collection<? extends E>);
-    method public E get(int);
-    method public int indexOf(@Nullable Object);
-    method public int lastIndexOf(@Nullable Object);
-    method @NonNull public java.util.ListIterator<E> listIterator();
-    method @NonNull public java.util.ListIterator<E> listIterator(int);
-    method @NonNull public static <E> java.util.List<E> of();
-    method @NonNull public static <E> java.util.List<E> of(@NonNull E);
-    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull @java.lang.SafeVarargs public static <E> java.util.List<E> of(@NonNull E...);
-    method public E remove(int);
-    method public default void replaceAll(@NonNull java.util.function.UnaryOperator<E>);
-    method public E set(int, E);
-    method public default void sort(@Nullable java.util.Comparator<? super E>);
-    method @NonNull public java.util.List<E> subList(int, int);
-  }
-
-  public interface ListIterator<E> extends java.util.Iterator<E> {
-    method public void add(E);
-    method public boolean hasPrevious();
-    method public int nextIndex();
-    method public E previous();
-    method public int previousIndex();
-    method public void remove();
-    method public void set(E);
-  }
-
-  public abstract class ListResourceBundle extends java.util.ResourceBundle {
-    ctor public ListResourceBundle();
-    method protected abstract Object[][] getContents();
-    method public java.util.Enumeration<java.lang.String> getKeys();
-    method public final Object handleGetObject(String);
-  }
-
-  public final class Locale implements java.lang.Cloneable java.io.Serializable {
-    ctor public Locale(@NonNull String, @NonNull String, @NonNull String);
-    ctor public Locale(@NonNull String, @NonNull String);
-    ctor public Locale(@NonNull String);
-    method @NonNull public Object clone();
-    method @NonNull public static java.util.List<java.util.Locale> filter(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Collection<java.util.Locale>, @NonNull java.util.Locale.FilteringMode);
-    method @NonNull public static java.util.List<java.util.Locale> filter(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Collection<java.util.Locale>);
-    method @NonNull public static java.util.List<java.lang.String> filterTags(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Collection<java.lang.String>, @NonNull java.util.Locale.FilteringMode);
-    method @NonNull public static java.util.List<java.lang.String> filterTags(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Collection<java.lang.String>);
-    method @NonNull public static java.util.Locale forLanguageTag(@NonNull String);
-    method @NonNull public static java.util.Locale[] getAvailableLocales();
-    method @NonNull public String getCountry();
-    method @NonNull public static java.util.Locale getDefault();
-    method @NonNull public static java.util.Locale getDefault(@NonNull java.util.Locale.Category);
-    method @NonNull public String getDisplayCountry();
-    method @NonNull public String getDisplayCountry(@NonNull java.util.Locale);
-    method @NonNull public String getDisplayLanguage();
-    method @NonNull public String getDisplayLanguage(@NonNull java.util.Locale);
-    method @NonNull public String getDisplayName();
-    method @NonNull public String getDisplayName(@NonNull java.util.Locale);
-    method @NonNull public String getDisplayScript();
-    method @NonNull public String getDisplayScript(@NonNull java.util.Locale);
-    method @NonNull public String getDisplayVariant();
-    method @NonNull public String getDisplayVariant(@NonNull java.util.Locale);
-    method @Nullable public String getExtension(char);
-    method @NonNull public java.util.Set<java.lang.Character> getExtensionKeys();
-    method @NonNull public String getISO3Country() throws java.util.MissingResourceException;
-    method @NonNull public String getISO3Language() throws java.util.MissingResourceException;
-    method @NonNull public static String[] getISOCountries();
-    method @NonNull public static String[] getISOLanguages();
-    method @NonNull public String getLanguage();
-    method @NonNull public String getScript();
-    method @NonNull public java.util.Set<java.lang.String> getUnicodeLocaleAttributes();
-    method @NonNull public java.util.Set<java.lang.String> getUnicodeLocaleKeys();
-    method @Nullable public String getUnicodeLocaleType(@NonNull String);
-    method @NonNull public String getVariant();
-    method public boolean hasExtensions();
-    method @Nullable public static java.util.Locale lookup(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Collection<java.util.Locale>);
-    method @Nullable public static String lookupTag(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Collection<java.lang.String>);
-    method public static void setDefault(@NonNull java.util.Locale);
-    method public static void setDefault(@NonNull java.util.Locale.Category, @NonNull java.util.Locale);
-    method @NonNull public java.util.Locale stripExtensions();
-    method @NonNull public String toLanguageTag();
-    field @NonNull public static final java.util.Locale CANADA;
-    field @NonNull public static final java.util.Locale CANADA_FRENCH;
-    field @NonNull public static final java.util.Locale CHINA;
-    field @NonNull public static final java.util.Locale CHINESE;
-    field @NonNull public static final java.util.Locale ENGLISH;
-    field @NonNull public static final java.util.Locale FRANCE;
-    field @NonNull public static final java.util.Locale FRENCH;
-    field @NonNull public static final java.util.Locale GERMAN;
-    field @NonNull public static final java.util.Locale GERMANY;
-    field @NonNull public static final java.util.Locale ITALIAN;
-    field @NonNull public static final java.util.Locale ITALY;
-    field @NonNull public static final java.util.Locale JAPAN;
-    field @NonNull public static final java.util.Locale JAPANESE;
-    field @NonNull public static final java.util.Locale KOREA;
-    field @NonNull public static final java.util.Locale KOREAN;
-    field @NonNull public static final java.util.Locale PRC;
-    field public static final char PRIVATE_USE_EXTENSION = 120; // 0x0078 'x'
-    field @NonNull public static final java.util.Locale ROOT;
-    field @NonNull public static final java.util.Locale SIMPLIFIED_CHINESE;
-    field @NonNull public static final java.util.Locale TAIWAN;
-    field @NonNull public static final java.util.Locale TRADITIONAL_CHINESE;
-    field @NonNull public static final java.util.Locale UK;
-    field public static final char UNICODE_LOCALE_EXTENSION = 117; // 0x0075 'u'
-    field @NonNull public static final java.util.Locale US;
-  }
-
-  public static final class Locale.Builder {
-    ctor public Locale.Builder();
-    method @NonNull public java.util.Locale.Builder addUnicodeLocaleAttribute(@NonNull String);
-    method @NonNull public java.util.Locale build();
-    method @NonNull public java.util.Locale.Builder clear();
-    method @NonNull public java.util.Locale.Builder clearExtensions();
-    method @NonNull public java.util.Locale.Builder removeUnicodeLocaleAttribute(@NonNull String);
-    method @NonNull public java.util.Locale.Builder setExtension(char, @Nullable String);
-    method @NonNull public java.util.Locale.Builder setLanguage(@Nullable String);
-    method @NonNull public java.util.Locale.Builder setLanguageTag(@NonNull String);
-    method @NonNull public java.util.Locale.Builder setLocale(@NonNull java.util.Locale);
-    method @NonNull public java.util.Locale.Builder setRegion(@Nullable String);
-    method @NonNull public java.util.Locale.Builder setScript(@Nullable String);
-    method @NonNull public java.util.Locale.Builder setUnicodeLocaleKeyword(@NonNull String, @Nullable String);
-    method @NonNull public java.util.Locale.Builder setVariant(@Nullable String);
-  }
-
-  public enum Locale.Category {
-    enum_constant public static final java.util.Locale.Category DISPLAY;
-    enum_constant public static final java.util.Locale.Category FORMAT;
-  }
-
-  public enum Locale.FilteringMode {
-    enum_constant public static final java.util.Locale.FilteringMode AUTOSELECT_FILTERING;
-    enum_constant public static final java.util.Locale.FilteringMode EXTENDED_FILTERING;
-    enum_constant public static final java.util.Locale.FilteringMode IGNORE_EXTENDED_RANGES;
-    enum_constant public static final java.util.Locale.FilteringMode MAP_EXTENDED_RANGES;
-    enum_constant public static final java.util.Locale.FilteringMode REJECT_EXTENDED_RANGES;
-  }
-
-  public static final class Locale.LanguageRange {
-    ctor public Locale.LanguageRange(@NonNull String);
-    ctor public Locale.LanguageRange(@NonNull String, double);
-    method @NonNull public String getRange();
-    method public double getWeight();
-    method @NonNull public static java.util.List<java.util.Locale.LanguageRange> mapEquivalents(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>);
-    method @NonNull public static java.util.List<java.util.Locale.LanguageRange> parse(@NonNull String);
-    method @NonNull public static java.util.List<java.util.Locale.LanguageRange> parse(@NonNull String, @NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>);
-    field public static final double MAX_WEIGHT = 1.0;
-    field public static final double MIN_WEIGHT = 0.0;
-  }
-
-  public class LongSummaryStatistics implements java.util.function.IntConsumer java.util.function.LongConsumer {
-    ctor public LongSummaryStatistics();
-    method public void accept(int);
-    method public void accept(long);
-    method public void combine(java.util.LongSummaryStatistics);
-    method public final double getAverage();
-    method public final long getCount();
-    method public final long getMax();
-    method public final long getMin();
-    method public final long getSum();
-  }
-
-  public interface Map<K, V> {
-    method public void clear();
-    method @Nullable public default V compute(K, @NonNull java.util.function.BiFunction<? super K,? super V,? extends V>);
-    method @Nullable public default V computeIfAbsent(K, @NonNull java.util.function.Function<? super K,? extends V>);
-    method @Nullable public default V computeIfPresent(K, @NonNull java.util.function.BiFunction<? super K,? super V,? extends V>);
-    method public boolean containsKey(@Nullable Object);
-    method public boolean containsValue(@Nullable Object);
-    method @NonNull public static <K, V> java.util.Map.Entry<K,V> entry(@NonNull K, @NonNull V);
-    method @NonNull public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
-    method public boolean equals(@Nullable Object);
-    method public default void forEach(@NonNull java.util.function.BiConsumer<? super K,? super V>);
-    method @Nullable public V get(@Nullable Object);
-    method @Nullable public default V getOrDefault(@Nullable Object, @Nullable V);
-    method public int hashCode();
-    method public boolean isEmpty();
-    method @NonNull public java.util.Set<K> keySet();
-    method @Nullable public default V merge(K, @NonNull V, @NonNull java.util.function.BiFunction<? super V,? super V,? extends V>);
-    method @NonNull public static <K, V> java.util.Map<K,V> of();
-    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V);
-    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V);
-    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V);
-    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V);
-    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V);
-    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V);
-    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V);
-    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V);
-    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V);
-    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V);
-    method @NonNull @java.lang.SafeVarargs public static <K, V> java.util.Map<K,V> ofEntries(@NonNull java.util.Map.Entry<? extends K,? extends V>...);
-    method @Nullable public V put(K, V);
-    method public void putAll(@NonNull java.util.Map<? extends K,? extends V>);
-    method @Nullable public default V putIfAbsent(K, V);
-    method @Nullable public V remove(@Nullable Object);
-    method public default boolean remove(@Nullable Object, @Nullable Object);
-    method public default boolean replace(K, @Nullable V, V);
-    method @Nullable public default V replace(K, V);
-    method public default void replaceAll(@NonNull java.util.function.BiFunction<? super K,? super V,? extends V>);
-    method public int size();
-    method @NonNull public java.util.Collection<V> values();
-  }
-
-  public static interface Map.Entry<K, V> {
-    method @NonNull public static <K extends java.lang.Comparable<? super K>, V> java.util.Comparator<java.util.Map.Entry<K,V>> comparingByKey();
-    method @NonNull public static <K, V> java.util.Comparator<java.util.Map.Entry<K,V>> comparingByKey(@NonNull java.util.Comparator<? super K>);
-    method @NonNull public static <K, V extends java.lang.Comparable<? super V>> java.util.Comparator<java.util.Map.Entry<K,V>> comparingByValue();
-    method @NonNull public static <K, V> java.util.Comparator<java.util.Map.Entry<K,V>> comparingByValue(@NonNull java.util.Comparator<? super V>);
-    method public boolean equals(@Nullable Object);
-    method public K getKey();
-    method public V getValue();
-    method public int hashCode();
-    method public V setValue(V);
-  }
-
-  public class MissingFormatArgumentException extends java.util.IllegalFormatException {
-    ctor public MissingFormatArgumentException(String);
-    method public String getFormatSpecifier();
-  }
-
-  public class MissingFormatWidthException extends java.util.IllegalFormatException {
-    ctor public MissingFormatWidthException(String);
-    method public String getFormatSpecifier();
-  }
-
-  public class MissingResourceException extends java.lang.RuntimeException {
-    ctor public MissingResourceException(String, String, String);
-    method public String getClassName();
-    method public String getKey();
-  }
-
-  public interface NavigableMap<K, V> extends java.util.SortedMap<K,V> {
-    method @Nullable public java.util.Map.Entry<K,V> ceilingEntry(K);
-    method @Nullable public K ceilingKey(K);
-    method @NonNull public java.util.NavigableSet<K> descendingKeySet();
-    method @NonNull public java.util.NavigableMap<K,V> descendingMap();
-    method @Nullable public java.util.Map.Entry<K,V> firstEntry();
-    method @Nullable public java.util.Map.Entry<K,V> floorEntry(K);
-    method @Nullable public K floorKey(K);
-    method @NonNull public java.util.NavigableMap<K,V> headMap(K, boolean);
-    method @Nullable public java.util.Map.Entry<K,V> higherEntry(K);
-    method @Nullable public K higherKey(K);
-    method @Nullable public java.util.Map.Entry<K,V> lastEntry();
-    method @Nullable public java.util.Map.Entry<K,V> lowerEntry(K);
-    method @Nullable public K lowerKey(K);
-    method @NonNull public java.util.NavigableSet<K> navigableKeySet();
-    method @Nullable public java.util.Map.Entry<K,V> pollFirstEntry();
-    method @Nullable public java.util.Map.Entry<K,V> pollLastEntry();
-    method @NonNull public java.util.NavigableMap<K,V> subMap(K, boolean, K, boolean);
-    method @NonNull public java.util.NavigableMap<K,V> tailMap(K, boolean);
-  }
-
-  public interface NavigableSet<E> extends java.util.SortedSet<E> {
-    method public E ceiling(E);
-    method public java.util.Iterator<E> descendingIterator();
-    method public java.util.NavigableSet<E> descendingSet();
-    method public E floor(E);
-    method public java.util.NavigableSet<E> headSet(E, boolean);
-    method public E higher(E);
-    method public E lower(E);
-    method public E pollFirst();
-    method public E pollLast();
-    method public java.util.NavigableSet<E> subSet(E, boolean, E, boolean);
-    method public java.util.NavigableSet<E> tailSet(E, boolean);
-  }
-
-  public class NoSuchElementException extends java.lang.RuntimeException {
-    ctor public NoSuchElementException();
-    ctor public NoSuchElementException(String);
-  }
-
-  public final class Objects {
-    method public static int checkFromIndexSize(int, int, int);
-    method public static int checkFromToIndex(int, int, int);
-    method public static int checkIndex(int, int);
-    method public static <T> int compare(T, T, @NonNull java.util.Comparator<? super T>);
-    method public static boolean deepEquals(@Nullable Object, @Nullable Object);
-    method public static boolean equals(@Nullable Object, @Nullable Object);
-    method public static int hash(@Nullable java.lang.Object...);
-    method public static int hashCode(@Nullable Object);
-    method public static boolean isNull(@Nullable Object);
-    method public static boolean nonNull(@Nullable Object);
-    method @NonNull public static <T> T requireNonNull(@Nullable T);
-    method @NonNull public static <T> T requireNonNull(@Nullable T, @NonNull String);
-    method @NonNull public static <T> T requireNonNull(@Nullable T, @NonNull java.util.function.Supplier<java.lang.String>);
-    method @NonNull public static <T> T requireNonNullElse(@Nullable T, @NonNull T);
-    method @NonNull public static <T> T requireNonNullElseGet(@Nullable T, @NonNull java.util.function.Supplier<? extends T>);
-    method @NonNull public static String toString(@Nullable Object);
-    method @NonNull public static String toString(@Nullable Object, @NonNull String);
-  }
-
-  public class Observable {
-    ctor public Observable();
-    method public void addObserver(java.util.Observer);
-    method protected void clearChanged();
-    method public int countObservers();
-    method public void deleteObserver(java.util.Observer);
-    method public void deleteObservers();
-    method public boolean hasChanged();
-    method public void notifyObservers();
-    method public void notifyObservers(Object);
-    method protected void setChanged();
-  }
-
-  public interface Observer {
-    method public void update(java.util.Observable, Object);
-  }
-
-  public final class Optional<T> {
-    method public static <T> java.util.Optional<T> empty();
-    method public java.util.Optional<T> filter(java.util.function.Predicate<? super T>);
-    method public <U> java.util.Optional<U> flatMap(java.util.function.Function<? super T,java.util.Optional<U>>);
-    method public T get();
-    method public void ifPresent(java.util.function.Consumer<? super T>);
-    method public boolean isPresent();
-    method public <U> java.util.Optional<U> map(java.util.function.Function<? super T,? extends U>);
-    method public static <T> java.util.Optional<T> of(T);
-    method public static <T> java.util.Optional<T> ofNullable(T);
-    method public T orElse(T);
-    method public T orElseGet(java.util.function.Supplier<? extends T>);
-    method public <X extends java.lang.Throwable> T orElseThrow(java.util.function.Supplier<? extends X>) throws X;
-  }
-
-  public final class OptionalDouble {
-    method public static java.util.OptionalDouble empty();
-    method public double getAsDouble();
-    method public void ifPresent(java.util.function.DoubleConsumer);
-    method public boolean isPresent();
-    method public static java.util.OptionalDouble of(double);
-    method public double orElse(double);
-    method public double orElseGet(java.util.function.DoubleSupplier);
-    method public <X extends java.lang.Throwable> double orElseThrow(java.util.function.Supplier<X>) throws X;
-  }
-
-  public final class OptionalInt {
-    method public static java.util.OptionalInt empty();
-    method public int getAsInt();
-    method public void ifPresent(java.util.function.IntConsumer);
-    method public boolean isPresent();
-    method public static java.util.OptionalInt of(int);
-    method public int orElse(int);
-    method public int orElseGet(java.util.function.IntSupplier);
-    method public <X extends java.lang.Throwable> int orElseThrow(java.util.function.Supplier<X>) throws X;
-  }
-
-  public final class OptionalLong {
-    method public static java.util.OptionalLong empty();
-    method public long getAsLong();
-    method public void ifPresent(java.util.function.LongConsumer);
-    method public boolean isPresent();
-    method public static java.util.OptionalLong of(long);
-    method public long orElse(long);
-    method public long orElseGet(java.util.function.LongSupplier);
-    method public <X extends java.lang.Throwable> long orElseThrow(java.util.function.Supplier<X>) throws X;
-  }
-
-  public interface PrimitiveIterator<T, T_CONS> extends java.util.Iterator<T> {
-    method public void forEachRemaining(T_CONS);
-  }
-
-  public static interface PrimitiveIterator.OfDouble extends java.util.PrimitiveIterator<java.lang.Double,java.util.function.DoubleConsumer> {
-    method public default void forEachRemaining(java.util.function.DoubleConsumer);
-    method public default void forEachRemaining(java.util.function.Consumer<? super java.lang.Double>);
-    method public default Double next();
-    method public double nextDouble();
-  }
-
-  public static interface PrimitiveIterator.OfInt extends java.util.PrimitiveIterator<java.lang.Integer,java.util.function.IntConsumer> {
-    method public default void forEachRemaining(java.util.function.IntConsumer);
-    method public default void forEachRemaining(java.util.function.Consumer<? super java.lang.Integer>);
-    method public default Integer next();
-    method public int nextInt();
-  }
-
-  public static interface PrimitiveIterator.OfLong extends java.util.PrimitiveIterator<java.lang.Long,java.util.function.LongConsumer> {
-    method public default void forEachRemaining(java.util.function.LongConsumer);
-    method public default void forEachRemaining(java.util.function.Consumer<? super java.lang.Long>);
-    method public default Long next();
-    method public long nextLong();
-  }
-
-  public class PriorityQueue<E> extends java.util.AbstractQueue<E> implements java.io.Serializable {
-    ctor public PriorityQueue();
-    ctor public PriorityQueue(int);
-    ctor public PriorityQueue(java.util.Comparator<? super E>);
-    ctor public PriorityQueue(int, java.util.Comparator<? super E>);
-    ctor public PriorityQueue(java.util.Collection<? extends E>);
-    ctor public PriorityQueue(java.util.PriorityQueue<? extends E>);
-    ctor public PriorityQueue(java.util.SortedSet<? extends E>);
-    method public java.util.Comparator<? super E> comparator();
-    method public java.util.Iterator<E> iterator();
-    method public boolean offer(E);
-    method public E peek();
-    method public E poll();
-    method public int size();
-    method public final java.util.Spliterator<E> spliterator();
-  }
-
-  public class Properties extends java.util.Hashtable<java.lang.Object,java.lang.Object> {
-    ctor public Properties();
-    ctor public Properties(java.util.Properties);
-    method public String getProperty(String);
-    method public String getProperty(String, String);
-    method public void list(java.io.PrintStream);
-    method public void list(java.io.PrintWriter);
-    method public void load(java.io.Reader) throws java.io.IOException;
-    method public void load(java.io.InputStream) throws java.io.IOException;
-    method public void loadFromXML(java.io.InputStream) throws java.io.IOException, java.util.InvalidPropertiesFormatException;
-    method public java.util.Enumeration<?> propertyNames();
-    method @Deprecated public void save(java.io.OutputStream, String);
-    method public Object setProperty(String, String);
-    method public void store(java.io.Writer, String) throws java.io.IOException;
-    method public void store(java.io.OutputStream, String) throws java.io.IOException;
-    method public void storeToXML(java.io.OutputStream, String) throws java.io.IOException;
-    method public void storeToXML(java.io.OutputStream, String, String) throws java.io.IOException;
-    method public java.util.Set<java.lang.String> stringPropertyNames();
-    field protected java.util.Properties defaults;
-  }
-
-  public final class PropertyPermission extends java.security.BasicPermission {
-    ctor public PropertyPermission(String, String);
-  }
-
-  public class PropertyResourceBundle extends java.util.ResourceBundle {
-    ctor public PropertyResourceBundle(java.io.InputStream) throws java.io.IOException;
-    ctor public PropertyResourceBundle(java.io.Reader) throws java.io.IOException;
-    method public java.util.Enumeration<java.lang.String> getKeys();
-    method public Object handleGetObject(String);
-  }
-
-  public interface Queue<E> extends java.util.Collection<E> {
-    method public E element();
-    method public boolean offer(E);
-    method @Nullable public E peek();
-    method @Nullable public E poll();
-    method public E remove();
-  }
-
-  public class Random implements java.io.Serializable {
-    ctor public Random();
-    ctor public Random(long);
-    method public java.util.stream.DoubleStream doubles(long);
-    method public java.util.stream.DoubleStream doubles();
-    method public java.util.stream.DoubleStream doubles(long, double, double);
-    method public java.util.stream.DoubleStream doubles(double, double);
-    method public java.util.stream.IntStream ints(long);
-    method public java.util.stream.IntStream ints();
-    method public java.util.stream.IntStream ints(long, int, int);
-    method public java.util.stream.IntStream ints(int, int);
-    method public java.util.stream.LongStream longs(long);
-    method public java.util.stream.LongStream longs();
-    method public java.util.stream.LongStream longs(long, long, long);
-    method public java.util.stream.LongStream longs(long, long);
-    method protected int next(int);
-    method public boolean nextBoolean();
-    method public void nextBytes(byte[]);
-    method public double nextDouble();
-    method public float nextFloat();
-    method public double nextGaussian();
-    method public int nextInt();
-    method public int nextInt(int);
-    method public long nextLong();
-    method public void setSeed(long);
-  }
-
-  public interface RandomAccess {
-  }
-
-  public abstract class ResourceBundle {
-    ctor public ResourceBundle();
-    method public static final void clearCache();
-    method public static final void clearCache(ClassLoader);
-    method public boolean containsKey(String);
-    method public String getBaseBundleName();
-    method public static final java.util.ResourceBundle getBundle(String);
-    method public static final java.util.ResourceBundle getBundle(String, java.util.ResourceBundle.Control);
-    method public static final java.util.ResourceBundle getBundle(String, java.util.Locale);
-    method public static final java.util.ResourceBundle getBundle(String, java.util.Locale, java.util.ResourceBundle.Control);
-    method public static java.util.ResourceBundle getBundle(String, java.util.Locale, ClassLoader);
-    method public static java.util.ResourceBundle getBundle(String, java.util.Locale, ClassLoader, java.util.ResourceBundle.Control);
-    method public abstract java.util.Enumeration<java.lang.String> getKeys();
-    method public java.util.Locale getLocale();
-    method public final Object getObject(String);
-    method public final String getString(String);
-    method public final String[] getStringArray(String);
-    method protected abstract Object handleGetObject(String);
-    method protected java.util.Set<java.lang.String> handleKeySet();
-    method public java.util.Set<java.lang.String> keySet();
-    method protected void setParent(java.util.ResourceBundle);
-    field protected java.util.ResourceBundle parent;
-  }
-
-  public static class ResourceBundle.Control {
-    ctor protected ResourceBundle.Control();
-    method public java.util.List<java.util.Locale> getCandidateLocales(String, java.util.Locale);
-    method public static final java.util.ResourceBundle.Control getControl(java.util.List<java.lang.String>);
-    method public java.util.Locale getFallbackLocale(String, java.util.Locale);
-    method public java.util.List<java.lang.String> getFormats(String);
-    method public static final java.util.ResourceBundle.Control getNoFallbackControl(java.util.List<java.lang.String>);
-    method public long getTimeToLive(String, java.util.Locale);
-    method public boolean needsReload(String, java.util.Locale, String, ClassLoader, java.util.ResourceBundle, long);
-    method public java.util.ResourceBundle newBundle(String, java.util.Locale, String, ClassLoader, boolean) throws java.io.IOException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public String toBundleName(String, java.util.Locale);
-    method public final String toResourceName(String, String);
-    field public static final java.util.List<java.lang.String> FORMAT_CLASS;
-    field public static final java.util.List<java.lang.String> FORMAT_DEFAULT;
-    field public static final java.util.List<java.lang.String> FORMAT_PROPERTIES;
-    field public static final long TTL_DONT_CACHE = -1L; // 0xffffffffffffffffL
-    field public static final long TTL_NO_EXPIRATION_CONTROL = -2L; // 0xfffffffffffffffeL
-  }
-
-  public final class Scanner implements java.io.Closeable java.util.Iterator<java.lang.String> {
-    ctor public Scanner(Readable);
-    ctor public Scanner(java.io.InputStream);
-    ctor public Scanner(java.io.InputStream, String);
-    ctor public Scanner(java.io.File) throws java.io.FileNotFoundException;
-    ctor public Scanner(java.io.File, String) throws java.io.FileNotFoundException;
-    ctor public Scanner(java.nio.file.Path) throws java.io.IOException;
-    ctor public Scanner(java.nio.file.Path, String) throws java.io.IOException;
-    ctor public Scanner(String);
-    ctor public Scanner(java.nio.channels.ReadableByteChannel);
-    ctor public Scanner(java.nio.channels.ReadableByteChannel, String);
-    method public void close();
-    method public java.util.regex.Pattern delimiter();
-    method public String findInLine(String);
-    method public String findInLine(java.util.regex.Pattern);
-    method public String findWithinHorizon(String, int);
-    method public String findWithinHorizon(java.util.regex.Pattern, int);
-    method public boolean hasNext();
-    method public boolean hasNext(String);
-    method public boolean hasNext(java.util.regex.Pattern);
-    method public boolean hasNextBigDecimal();
-    method public boolean hasNextBigInteger();
-    method public boolean hasNextBigInteger(int);
-    method public boolean hasNextBoolean();
-    method public boolean hasNextByte();
-    method public boolean hasNextByte(int);
-    method public boolean hasNextDouble();
-    method public boolean hasNextFloat();
-    method public boolean hasNextInt();
-    method public boolean hasNextInt(int);
-    method public boolean hasNextLine();
-    method public boolean hasNextLong();
-    method public boolean hasNextLong(int);
-    method public boolean hasNextShort();
-    method public boolean hasNextShort(int);
-    method public java.io.IOException ioException();
-    method public java.util.Locale locale();
-    method public java.util.regex.MatchResult match();
-    method public String next();
-    method public String next(String);
-    method public String next(java.util.regex.Pattern);
-    method public java.math.BigDecimal nextBigDecimal();
-    method public java.math.BigInteger nextBigInteger();
-    method public java.math.BigInteger nextBigInteger(int);
-    method public boolean nextBoolean();
-    method public byte nextByte();
-    method public byte nextByte(int);
-    method public double nextDouble();
-    method public float nextFloat();
-    method public int nextInt();
-    method public int nextInt(int);
-    method public String nextLine();
-    method public long nextLong();
-    method public long nextLong(int);
-    method public short nextShort();
-    method public short nextShort(int);
-    method public int radix();
-    method public java.util.Scanner reset();
-    method public java.util.Scanner skip(java.util.regex.Pattern);
-    method public java.util.Scanner skip(String);
-    method public java.util.Scanner useDelimiter(java.util.regex.Pattern);
-    method public java.util.Scanner useDelimiter(String);
-    method public java.util.Scanner useLocale(java.util.Locale);
-    method public java.util.Scanner useRadix(int);
-  }
-
-  public class ServiceConfigurationError extends java.lang.Error {
-    ctor public ServiceConfigurationError(String);
-    ctor public ServiceConfigurationError(String, Throwable);
-  }
-
-  public final class ServiceLoader<S> implements java.lang.Iterable<S> {
-    method public java.util.Iterator<S> iterator();
-    method public static <S> java.util.ServiceLoader<S> load(Class<S>, ClassLoader);
-    method public static <S> java.util.ServiceLoader<S> load(Class<S>);
-    method public static <S> java.util.ServiceLoader<S> loadInstalled(Class<S>);
-    method public void reload();
-  }
-
-  public interface Set<E> extends java.util.Collection<E> {
-    method @NonNull public static <E> java.util.Set<E> of();
-    method @NonNull public static <E> java.util.Set<E> of(@NonNull E);
-    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull @java.lang.SafeVarargs public static <E> java.util.Set<E> of(@NonNull E...);
-  }
-
-  public class SimpleTimeZone extends java.util.TimeZone {
-    ctor public SimpleTimeZone(int, String);
-    ctor public SimpleTimeZone(int, String, int, int, int, int, int, int, int, int);
-    ctor public SimpleTimeZone(int, String, int, int, int, int, int, int, int, int, int);
-    ctor public SimpleTimeZone(int, String, int, int, int, int, int, int, int, int, int, int, int);
-    method public int getOffset(int, int, int, int, int, int);
-    method public int getRawOffset();
-    method public boolean inDaylightTime(java.util.Date);
-    method public void setDSTSavings(int);
-    method public void setEndRule(int, int, int, int);
-    method public void setEndRule(int, int, int);
-    method public void setEndRule(int, int, int, int, boolean);
-    method public void setRawOffset(int);
-    method public void setStartRule(int, int, int, int);
-    method public void setStartRule(int, int, int);
-    method public void setStartRule(int, int, int, int, boolean);
-    method public void setStartYear(int);
-    method public boolean useDaylightTime();
-    field public static final int STANDARD_TIME = 1; // 0x1
-    field public static final int UTC_TIME = 2; // 0x2
-    field public static final int WALL_TIME = 0; // 0x0
-  }
-
-  public interface SortedMap<K, V> extends java.util.Map<K,V> {
-    method @Nullable public java.util.Comparator<? super K> comparator();
-    method public K firstKey();
-    method @NonNull public java.util.SortedMap<K,V> headMap(K);
-    method public K lastKey();
-    method @NonNull public java.util.SortedMap<K,V> subMap(K, K);
-    method @NonNull public java.util.SortedMap<K,V> tailMap(K);
-  }
-
-  public interface SortedSet<E> extends java.util.Set<E> {
-    method public java.util.Comparator<? super E> comparator();
-    method public E first();
-    method public java.util.SortedSet<E> headSet(E);
-    method public E last();
-    method public java.util.SortedSet<E> subSet(E, E);
-    method public java.util.SortedSet<E> tailSet(E);
-  }
-
-  public interface Spliterator<T> {
-    method public int characteristics();
-    method public long estimateSize();
-    method public default void forEachRemaining(java.util.function.Consumer<? super T>);
-    method public default java.util.Comparator<? super T> getComparator();
-    method public default long getExactSizeIfKnown();
-    method public default boolean hasCharacteristics(int);
-    method public boolean tryAdvance(java.util.function.Consumer<? super T>);
-    method public java.util.Spliterator<T> trySplit();
-    field public static final int CONCURRENT = 4096; // 0x1000
-    field public static final int DISTINCT = 1; // 0x1
-    field public static final int IMMUTABLE = 1024; // 0x400
-    field public static final int NONNULL = 256; // 0x100
-    field public static final int ORDERED = 16; // 0x10
-    field public static final int SIZED = 64; // 0x40
-    field public static final int SORTED = 4; // 0x4
-    field public static final int SUBSIZED = 16384; // 0x4000
-  }
-
-  public static interface Spliterator.OfDouble extends java.util.Spliterator.OfPrimitive<java.lang.Double,java.util.function.DoubleConsumer,java.util.Spliterator.OfDouble> {
-    method public default void forEachRemaining(java.util.function.DoubleConsumer);
-    method public default void forEachRemaining(java.util.function.Consumer<? super java.lang.Double>);
-    method public boolean tryAdvance(java.util.function.DoubleConsumer);
-    method public default boolean tryAdvance(java.util.function.Consumer<? super java.lang.Double>);
-    method public java.util.Spliterator.OfDouble trySplit();
-  }
-
-  public static interface Spliterator.OfInt extends java.util.Spliterator.OfPrimitive<java.lang.Integer,java.util.function.IntConsumer,java.util.Spliterator.OfInt> {
-    method public default void forEachRemaining(java.util.function.IntConsumer);
-    method public default void forEachRemaining(java.util.function.Consumer<? super java.lang.Integer>);
-    method public boolean tryAdvance(java.util.function.IntConsumer);
-    method public default boolean tryAdvance(java.util.function.Consumer<? super java.lang.Integer>);
-    method public java.util.Spliterator.OfInt trySplit();
-  }
-
-  public static interface Spliterator.OfLong extends java.util.Spliterator.OfPrimitive<java.lang.Long,java.util.function.LongConsumer,java.util.Spliterator.OfLong> {
-    method public default void forEachRemaining(java.util.function.LongConsumer);
-    method public default void forEachRemaining(java.util.function.Consumer<? super java.lang.Long>);
-    method public boolean tryAdvance(java.util.function.LongConsumer);
-    method public default boolean tryAdvance(java.util.function.Consumer<? super java.lang.Long>);
-    method public java.util.Spliterator.OfLong trySplit();
-  }
-
-  public static interface Spliterator.OfPrimitive<T, T_CONS, T_SPLITR extends java.util.Spliterator.OfPrimitive<T, T_CONS, T_SPLITR>> extends java.util.Spliterator<T> {
-    method public default void forEachRemaining(T_CONS);
-    method public boolean tryAdvance(T_CONS);
-    method public T_SPLITR trySplit();
-  }
-
-  public final class Spliterators {
-    method public static java.util.Spliterator.OfDouble emptyDoubleSpliterator();
-    method public static java.util.Spliterator.OfInt emptyIntSpliterator();
-    method public static java.util.Spliterator.OfLong emptyLongSpliterator();
-    method public static <T> java.util.Spliterator<T> emptySpliterator();
-    method public static <T> java.util.Iterator<T> iterator(java.util.Spliterator<? extends T>);
-    method public static java.util.PrimitiveIterator.OfInt iterator(java.util.Spliterator.OfInt);
-    method public static java.util.PrimitiveIterator.OfLong iterator(java.util.Spliterator.OfLong);
-    method public static java.util.PrimitiveIterator.OfDouble iterator(java.util.Spliterator.OfDouble);
-    method public static <T> java.util.Spliterator<T> spliterator(Object[], int);
-    method public static <T> java.util.Spliterator<T> spliterator(Object[], int, int, int);
-    method public static java.util.Spliterator.OfInt spliterator(int[], int);
-    method public static java.util.Spliterator.OfInt spliterator(int[], int, int, int);
-    method public static java.util.Spliterator.OfLong spliterator(long[], int);
-    method public static java.util.Spliterator.OfLong spliterator(long[], int, int, int);
-    method public static java.util.Spliterator.OfDouble spliterator(double[], int);
-    method public static java.util.Spliterator.OfDouble spliterator(double[], int, int, int);
-    method public static <T> java.util.Spliterator<T> spliterator(java.util.Collection<? extends T>, int);
-    method public static <T> java.util.Spliterator<T> spliterator(java.util.Iterator<? extends T>, long, int);
-    method public static java.util.Spliterator.OfInt spliterator(java.util.PrimitiveIterator.OfInt, long, int);
-    method public static java.util.Spliterator.OfLong spliterator(java.util.PrimitiveIterator.OfLong, long, int);
-    method public static java.util.Spliterator.OfDouble spliterator(java.util.PrimitiveIterator.OfDouble, long, int);
-    method public static <T> java.util.Spliterator<T> spliteratorUnknownSize(java.util.Iterator<? extends T>, int);
-    method public static java.util.Spliterator.OfInt spliteratorUnknownSize(java.util.PrimitiveIterator.OfInt, int);
-    method public static java.util.Spliterator.OfLong spliteratorUnknownSize(java.util.PrimitiveIterator.OfLong, int);
-    method public static java.util.Spliterator.OfDouble spliteratorUnknownSize(java.util.PrimitiveIterator.OfDouble, int);
-  }
-
-  public abstract static class Spliterators.AbstractDoubleSpliterator implements java.util.Spliterator.OfDouble {
-    ctor protected Spliterators.AbstractDoubleSpliterator(long, int);
-    method public int characteristics();
-    method public long estimateSize();
-    method public java.util.Spliterator.OfDouble trySplit();
-  }
-
-  public abstract static class Spliterators.AbstractIntSpliterator implements java.util.Spliterator.OfInt {
-    ctor protected Spliterators.AbstractIntSpliterator(long, int);
-    method public int characteristics();
-    method public long estimateSize();
-    method public java.util.Spliterator.OfInt trySplit();
-  }
-
-  public abstract static class Spliterators.AbstractLongSpliterator implements java.util.Spliterator.OfLong {
-    ctor protected Spliterators.AbstractLongSpliterator(long, int);
-    method public int characteristics();
-    method public long estimateSize();
-    method public java.util.Spliterator.OfLong trySplit();
-  }
-
-  public abstract static class Spliterators.AbstractSpliterator<T> implements java.util.Spliterator<T> {
-    ctor protected Spliterators.AbstractSpliterator(long, int);
-    method public int characteristics();
-    method public long estimateSize();
-    method public java.util.Spliterator<T> trySplit();
-  }
-
-  public final class SplittableRandom {
-    ctor public SplittableRandom(long);
-    ctor public SplittableRandom();
-    method public java.util.stream.DoubleStream doubles(long);
-    method public java.util.stream.DoubleStream doubles();
-    method public java.util.stream.DoubleStream doubles(long, double, double);
-    method public java.util.stream.DoubleStream doubles(double, double);
-    method public java.util.stream.IntStream ints(long);
-    method public java.util.stream.IntStream ints();
-    method public java.util.stream.IntStream ints(long, int, int);
-    method public java.util.stream.IntStream ints(int, int);
-    method public java.util.stream.LongStream longs(long);
-    method public java.util.stream.LongStream longs();
-    method public java.util.stream.LongStream longs(long, long, long);
-    method public java.util.stream.LongStream longs(long, long);
-    method public boolean nextBoolean();
-    method public double nextDouble();
-    method public double nextDouble(double);
-    method public double nextDouble(double, double);
-    method public int nextInt();
-    method public int nextInt(int);
-    method public int nextInt(int, int);
-    method public long nextLong();
-    method public long nextLong(long);
-    method public long nextLong(long, long);
-    method public java.util.SplittableRandom split();
-  }
-
-  public class Stack<E> extends java.util.Vector<E> {
-    ctor public Stack();
-    method public boolean empty();
-    method public E peek();
-    method public E pop();
-    method public E push(E);
-    method public int search(Object);
-  }
-
-  public final class StringJoiner {
-    ctor public StringJoiner(CharSequence);
-    ctor public StringJoiner(CharSequence, CharSequence, CharSequence);
-    method public java.util.StringJoiner add(CharSequence);
-    method public int length();
-    method public java.util.StringJoiner merge(java.util.StringJoiner);
-    method public java.util.StringJoiner setEmptyValue(CharSequence);
-  }
-
-  public class StringTokenizer implements java.util.Enumeration<java.lang.Object> {
-    ctor public StringTokenizer(String, String, boolean);
-    ctor public StringTokenizer(String, String);
-    ctor public StringTokenizer(String);
-    method public int countTokens();
-    method public boolean hasMoreElements();
-    method public boolean hasMoreTokens();
-    method public Object nextElement();
-    method public String nextToken();
-    method public String nextToken(String);
-  }
-
-  public abstract class TimeZone implements java.lang.Cloneable java.io.Serializable {
-    ctor public TimeZone();
-    method public Object clone();
-    method public static String[] getAvailableIDs(int);
-    method public static String[] getAvailableIDs();
-    method public int getDSTSavings();
-    method public static java.util.TimeZone getDefault();
-    method public final String getDisplayName();
-    method public final String getDisplayName(java.util.Locale);
-    method public final String getDisplayName(boolean, int);
-    method public String getDisplayName(boolean, int, java.util.Locale);
-    method public String getID();
-    method public abstract int getOffset(int, int, int, int, int, int);
-    method public int getOffset(long);
-    method public abstract int getRawOffset();
-    method public static java.util.TimeZone getTimeZone(String);
-    method public static java.util.TimeZone getTimeZone(java.time.ZoneId);
-    method public boolean hasSameRules(java.util.TimeZone);
-    method public abstract boolean inDaylightTime(java.util.Date);
-    method public boolean observesDaylightTime();
-    method public static void setDefault(java.util.TimeZone);
-    method public void setID(String);
-    method public abstract void setRawOffset(int);
-    method public java.time.ZoneId toZoneId();
-    method public abstract boolean useDaylightTime();
-    field public static final int LONG = 1; // 0x1
-    field public static final int SHORT = 0; // 0x0
-  }
-
-  public class Timer {
-    ctor public Timer();
-    ctor public Timer(boolean);
-    ctor public Timer(String);
-    ctor public Timer(String, boolean);
-    method public void cancel();
-    method public int purge();
-    method public void schedule(java.util.TimerTask, long);
-    method public void schedule(java.util.TimerTask, java.util.Date);
-    method public void schedule(java.util.TimerTask, long, long);
-    method public void schedule(java.util.TimerTask, java.util.Date, long);
-    method public void scheduleAtFixedRate(java.util.TimerTask, long, long);
-    method public void scheduleAtFixedRate(java.util.TimerTask, java.util.Date, long);
-  }
-
-  public abstract class TimerTask implements java.lang.Runnable {
-    ctor protected TimerTask();
-    method public boolean cancel();
-    method public long scheduledExecutionTime();
-  }
-
-  public class TooManyListenersException extends java.lang.Exception {
-    ctor public TooManyListenersException();
-    ctor public TooManyListenersException(String);
-  }
-
-  public class TreeMap<K, V> extends java.util.AbstractMap<K,V> implements java.lang.Cloneable java.util.NavigableMap<K,V> java.io.Serializable {
-    ctor public TreeMap();
-    ctor public TreeMap(@Nullable java.util.Comparator<? super K>);
-    ctor public TreeMap(@NonNull java.util.Map<? extends K,? extends V>);
-    ctor public TreeMap(@NonNull java.util.SortedMap<K,? extends V>);
-    method @Nullable public java.util.Map.Entry<K,V> ceilingEntry(K);
-    method @Nullable public K ceilingKey(K);
-    method @NonNull public Object clone();
-    method @Nullable public java.util.Comparator<? super K> comparator();
-    method @NonNull public java.util.NavigableSet<K> descendingKeySet();
-    method @NonNull public java.util.NavigableMap<K,V> descendingMap();
-    method @NonNull public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
-    method @Nullable public java.util.Map.Entry<K,V> firstEntry();
-    method public K firstKey();
-    method @Nullable public java.util.Map.Entry<K,V> floorEntry(K);
-    method @Nullable public K floorKey(K);
-    method @NonNull public java.util.NavigableMap<K,V> headMap(K, boolean);
-    method @NonNull public java.util.SortedMap<K,V> headMap(K);
-    method @Nullable public java.util.Map.Entry<K,V> higherEntry(K);
-    method @Nullable public K higherKey(K);
-    method @Nullable public java.util.Map.Entry<K,V> lastEntry();
-    method public K lastKey();
-    method @Nullable public java.util.Map.Entry<K,V> lowerEntry(K);
-    method @Nullable public K lowerKey(K);
-    method @NonNull public java.util.NavigableSet<K> navigableKeySet();
-    method @Nullable public java.util.Map.Entry<K,V> pollFirstEntry();
-    method @Nullable public java.util.Map.Entry<K,V> pollLastEntry();
-    method @NonNull public java.util.NavigableMap<K,V> subMap(K, boolean, K, boolean);
-    method @NonNull public java.util.SortedMap<K,V> subMap(K, K);
-    method @NonNull public java.util.NavigableMap<K,V> tailMap(K, boolean);
-    method @NonNull public java.util.SortedMap<K,V> tailMap(K);
-  }
-
-  public class TreeSet<E> extends java.util.AbstractSet<E> implements java.lang.Cloneable java.util.NavigableSet<E> java.io.Serializable {
-    ctor public TreeSet();
-    ctor public TreeSet(java.util.Comparator<? super E>);
-    ctor public TreeSet(java.util.Collection<? extends E>);
-    ctor public TreeSet(java.util.SortedSet<E>);
-    method public E ceiling(E);
-    method public Object clone();
-    method public java.util.Comparator<? super E> comparator();
-    method public java.util.Iterator<E> descendingIterator();
-    method public java.util.NavigableSet<E> descendingSet();
-    method public E first();
-    method public E floor(E);
-    method public java.util.NavigableSet<E> headSet(E, boolean);
-    method public java.util.SortedSet<E> headSet(E);
-    method public E higher(E);
-    method public java.util.Iterator<E> iterator();
-    method public E last();
-    method public E lower(E);
-    method public E pollFirst();
-    method public E pollLast();
-    method public int size();
-    method public java.util.NavigableSet<E> subSet(E, boolean, E, boolean);
-    method public java.util.SortedSet<E> subSet(E, E);
-    method public java.util.NavigableSet<E> tailSet(E, boolean);
-    method public java.util.SortedSet<E> tailSet(E);
-  }
-
-  public final class UUID implements java.lang.Comparable<java.util.UUID> java.io.Serializable {
-    ctor public UUID(long, long);
-    method public int clockSequence();
-    method public int compareTo(java.util.UUID);
-    method public static java.util.UUID fromString(String);
-    method public long getLeastSignificantBits();
-    method public long getMostSignificantBits();
-    method public static java.util.UUID nameUUIDFromBytes(byte[]);
-    method public long node();
-    method public static java.util.UUID randomUUID();
-    method public long timestamp();
-    method public int variant();
-    method public int version();
-  }
-
-  public class UnknownFormatConversionException extends java.util.IllegalFormatException {
-    ctor public UnknownFormatConversionException(String);
-    method public String getConversion();
-  }
-
-  public class UnknownFormatFlagsException extends java.util.IllegalFormatException {
-    ctor public UnknownFormatFlagsException(String);
-    method public String getFlags();
-  }
-
-  public class Vector<E> extends java.util.AbstractList<E> implements java.lang.Cloneable java.util.List<E> java.util.RandomAccess java.io.Serializable {
-    ctor public Vector(int, int);
-    ctor public Vector(int);
-    ctor public Vector();
-    ctor public Vector(@NonNull java.util.Collection<? extends E>);
-    method public void addElement(E);
-    method public int capacity();
-    method @NonNull public Object clone();
-    method public void copyInto(@NonNull Object[]);
-    method public E elementAt(int);
-    method @NonNull public java.util.Enumeration<E> elements();
-    method public void ensureCapacity(int);
-    method public E firstElement();
-    method public void forEach(@NonNull java.util.function.Consumer<? super E>);
-    method public E get(int);
-    method public int indexOf(@Nullable Object, int);
-    method public void insertElementAt(E, int);
-    method public E lastElement();
-    method public int lastIndexOf(@Nullable Object, int);
-    method public void removeAllElements();
-    method public boolean removeElement(@Nullable Object);
-    method public void removeElementAt(int);
-    method public void setElementAt(E, int);
-    method public void setSize(int);
-    method public int size();
-    method public void trimToSize();
-    field protected int capacityIncrement;
-    field protected int elementCount;
-    field @NonNull protected Object[] elementData;
-  }
-
-  public class WeakHashMap<K, V> extends java.util.AbstractMap<K,V> implements java.util.Map<K,V> {
-    ctor public WeakHashMap(int, float);
-    ctor public WeakHashMap(int);
-    ctor public WeakHashMap();
-    ctor public WeakHashMap(@NonNull java.util.Map<? extends K,? extends V>);
-    method @NonNull public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
-  }
-
-}
-
-package java.util.concurrent {
-
-  public abstract class AbstractExecutorService implements java.util.concurrent.ExecutorService {
-    ctor public AbstractExecutorService();
-    method public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>>) throws java.lang.InterruptedException;
-    method public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>>, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>>) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
-    method public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>>, long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
-    method protected <T> java.util.concurrent.RunnableFuture<T> newTaskFor(Runnable, T);
-    method protected <T> java.util.concurrent.RunnableFuture<T> newTaskFor(java.util.concurrent.Callable<T>);
-    method public java.util.concurrent.Future<?> submit(Runnable);
-    method public <T> java.util.concurrent.Future<T> submit(Runnable, T);
-    method public <T> java.util.concurrent.Future<T> submit(java.util.concurrent.Callable<T>);
-  }
-
-  public class ArrayBlockingQueue<E> extends java.util.AbstractQueue<E> implements java.util.concurrent.BlockingQueue<E> java.io.Serializable {
-    ctor public ArrayBlockingQueue(int);
-    ctor public ArrayBlockingQueue(int, boolean);
-    ctor public ArrayBlockingQueue(int, boolean, java.util.Collection<? extends E>);
-    method public int drainTo(java.util.Collection<? super E>);
-    method public int drainTo(java.util.Collection<? super E>, int);
-    method public java.util.Iterator<E> iterator();
-    method public boolean offer(E);
-    method public boolean offer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public E peek();
-    method public E poll();
-    method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public void put(E) throws java.lang.InterruptedException;
-    method public int remainingCapacity();
-    method public int size();
-    method public E take() throws java.lang.InterruptedException;
-  }
-
-  public interface BlockingDeque<E> extends java.util.concurrent.BlockingQueue<E> java.util.Deque<E> {
-    method public boolean offerFirst(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public boolean offerLast(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public E pollFirst(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public E pollLast(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public void putFirst(E) throws java.lang.InterruptedException;
-    method public void putLast(E) throws java.lang.InterruptedException;
-    method public E takeFirst() throws java.lang.InterruptedException;
-    method public E takeLast() throws java.lang.InterruptedException;
-  }
-
-  public interface BlockingQueue<E> extends java.util.Queue<E> {
-    method public int drainTo(java.util.Collection<? super E>);
-    method public int drainTo(java.util.Collection<? super E>, int);
-    method public boolean offer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public void put(E) throws java.lang.InterruptedException;
-    method public int remainingCapacity();
-    method public E take() throws java.lang.InterruptedException;
-  }
-
-  public class BrokenBarrierException extends java.lang.Exception {
-    ctor public BrokenBarrierException();
-    ctor public BrokenBarrierException(String);
-  }
-
-  @java.lang.FunctionalInterface public interface Callable<V> {
-    method public V call() throws java.lang.Exception;
-  }
-
-  public class CancellationException extends java.lang.IllegalStateException {
-    ctor public CancellationException();
-    ctor public CancellationException(String);
-  }
-
-  public class CompletableFuture<T> implements java.util.concurrent.CompletionStage<T> java.util.concurrent.Future<T> {
-    ctor public CompletableFuture();
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> acceptEither(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> acceptEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> acceptEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>, java.util.concurrent.Executor);
-    method public static java.util.concurrent.CompletableFuture<java.lang.Void> allOf(java.util.concurrent.CompletableFuture<?>...);
-    method public static java.util.concurrent.CompletableFuture<java.lang.Object> anyOf(java.util.concurrent.CompletableFuture<?>...);
-    method public <U> java.util.concurrent.CompletableFuture<U> applyToEither(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T,U>);
-    method public <U> java.util.concurrent.CompletableFuture<U> applyToEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T,U>);
-    method public <U> java.util.concurrent.CompletableFuture<U> applyToEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T,U>, java.util.concurrent.Executor);
-    method public boolean cancel(boolean);
-    method public boolean complete(T);
-    method public boolean completeExceptionally(Throwable);
-    method public static <U> java.util.concurrent.CompletableFuture<U> completedFuture(U);
-    method public java.util.concurrent.CompletableFuture<T> exceptionally(java.util.function.Function<java.lang.Throwable,? extends T>);
-    method public T get() throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
-    method public T get(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
-    method public T getNow(T);
-    method public int getNumberOfDependents();
-    method public <U> java.util.concurrent.CompletableFuture<U> handle(java.util.function.BiFunction<? super T,java.lang.Throwable,? extends U>);
-    method public <U> java.util.concurrent.CompletableFuture<U> handleAsync(java.util.function.BiFunction<? super T,java.lang.Throwable,? extends U>);
-    method public <U> java.util.concurrent.CompletableFuture<U> handleAsync(java.util.function.BiFunction<? super T,java.lang.Throwable,? extends U>, java.util.concurrent.Executor);
-    method public boolean isCancelled();
-    method public boolean isCompletedExceptionally();
-    method public boolean isDone();
-    method public T join();
-    method public void obtrudeException(Throwable);
-    method public void obtrudeValue(T);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterBoth(java.util.concurrent.CompletionStage<?>, Runnable);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterBothAsync(java.util.concurrent.CompletionStage<?>, Runnable);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterBothAsync(java.util.concurrent.CompletionStage<?>, Runnable, java.util.concurrent.Executor);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterEither(java.util.concurrent.CompletionStage<?>, Runnable);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterEitherAsync(java.util.concurrent.CompletionStage<?>, Runnable);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterEitherAsync(java.util.concurrent.CompletionStage<?>, Runnable, java.util.concurrent.Executor);
-    method public static java.util.concurrent.CompletableFuture<java.lang.Void> runAsync(Runnable);
-    method public static java.util.concurrent.CompletableFuture<java.lang.Void> runAsync(Runnable, java.util.concurrent.Executor);
-    method public static <U> java.util.concurrent.CompletableFuture<U> supplyAsync(java.util.function.Supplier<U>);
-    method public static <U> java.util.concurrent.CompletableFuture<U> supplyAsync(java.util.function.Supplier<U>, java.util.concurrent.Executor);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> thenAccept(java.util.function.Consumer<? super T>);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> thenAcceptAsync(java.util.function.Consumer<? super T>);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> thenAcceptAsync(java.util.function.Consumer<? super T>, java.util.concurrent.Executor);
-    method public <U> java.util.concurrent.CompletableFuture<java.lang.Void> thenAcceptBoth(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T,? super U>);
-    method public <U> java.util.concurrent.CompletableFuture<java.lang.Void> thenAcceptBothAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T,? super U>);
-    method public <U> java.util.concurrent.CompletableFuture<java.lang.Void> thenAcceptBothAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T,? super U>, java.util.concurrent.Executor);
-    method public <U> java.util.concurrent.CompletableFuture<U> thenApply(java.util.function.Function<? super T,? extends U>);
-    method public <U> java.util.concurrent.CompletableFuture<U> thenApplyAsync(java.util.function.Function<? super T,? extends U>);
-    method public <U> java.util.concurrent.CompletableFuture<U> thenApplyAsync(java.util.function.Function<? super T,? extends U>, java.util.concurrent.Executor);
-    method public <U, V> java.util.concurrent.CompletableFuture<V> thenCombine(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T,? super U,? extends V>);
-    method public <U, V> java.util.concurrent.CompletableFuture<V> thenCombineAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T,? super U,? extends V>);
-    method public <U, V> java.util.concurrent.CompletableFuture<V> thenCombineAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T,? super U,? extends V>, java.util.concurrent.Executor);
-    method public <U> java.util.concurrent.CompletableFuture<U> thenCompose(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<U>>);
-    method public <U> java.util.concurrent.CompletableFuture<U> thenComposeAsync(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<U>>);
-    method public <U> java.util.concurrent.CompletableFuture<U> thenComposeAsync(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<U>>, java.util.concurrent.Executor);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> thenRun(Runnable);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> thenRunAsync(Runnable);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> thenRunAsync(Runnable, java.util.concurrent.Executor);
-    method public java.util.concurrent.CompletableFuture<T> toCompletableFuture();
-    method public java.util.concurrent.CompletableFuture<T> whenComplete(java.util.function.BiConsumer<? super T,? super java.lang.Throwable>);
-    method public java.util.concurrent.CompletableFuture<T> whenCompleteAsync(java.util.function.BiConsumer<? super T,? super java.lang.Throwable>);
-    method public java.util.concurrent.CompletableFuture<T> whenCompleteAsync(java.util.function.BiConsumer<? super T,? super java.lang.Throwable>, java.util.concurrent.Executor);
-  }
-
-  public static interface CompletableFuture.AsynchronousCompletionTask {
-  }
-
-  public class CompletionException extends java.lang.RuntimeException {
-    ctor protected CompletionException();
-    ctor protected CompletionException(String);
-    ctor public CompletionException(String, Throwable);
-    ctor public CompletionException(Throwable);
-  }
-
-  public interface CompletionService<V> {
-    method public java.util.concurrent.Future<V> poll();
-    method public java.util.concurrent.Future<V> poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public java.util.concurrent.Future<V> submit(java.util.concurrent.Callable<V>);
-    method public java.util.concurrent.Future<V> submit(Runnable, V);
-    method public java.util.concurrent.Future<V> take() throws java.lang.InterruptedException;
-  }
-
-  public interface CompletionStage<T> {
-    method public java.util.concurrent.CompletionStage<java.lang.Void> acceptEither(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> acceptEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> acceptEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>, java.util.concurrent.Executor);
-    method public <U> java.util.concurrent.CompletionStage<U> applyToEither(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T,U>);
-    method public <U> java.util.concurrent.CompletionStage<U> applyToEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T,U>);
-    method public <U> java.util.concurrent.CompletionStage<U> applyToEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T,U>, java.util.concurrent.Executor);
-    method public java.util.concurrent.CompletionStage<T> exceptionally(java.util.function.Function<java.lang.Throwable,? extends T>);
-    method public <U> java.util.concurrent.CompletionStage<U> handle(java.util.function.BiFunction<? super T,java.lang.Throwable,? extends U>);
-    method public <U> java.util.concurrent.CompletionStage<U> handleAsync(java.util.function.BiFunction<? super T,java.lang.Throwable,? extends U>);
-    method public <U> java.util.concurrent.CompletionStage<U> handleAsync(java.util.function.BiFunction<? super T,java.lang.Throwable,? extends U>, java.util.concurrent.Executor);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> runAfterBoth(java.util.concurrent.CompletionStage<?>, Runnable);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> runAfterBothAsync(java.util.concurrent.CompletionStage<?>, Runnable);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> runAfterBothAsync(java.util.concurrent.CompletionStage<?>, Runnable, java.util.concurrent.Executor);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> runAfterEither(java.util.concurrent.CompletionStage<?>, Runnable);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> runAfterEitherAsync(java.util.concurrent.CompletionStage<?>, Runnable);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> runAfterEitherAsync(java.util.concurrent.CompletionStage<?>, Runnable, java.util.concurrent.Executor);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> thenAccept(java.util.function.Consumer<? super T>);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptAsync(java.util.function.Consumer<? super T>);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptAsync(java.util.function.Consumer<? super T>, java.util.concurrent.Executor);
-    method public <U> java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptBoth(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T,? super U>);
-    method public <U> java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptBothAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T,? super U>);
-    method public <U> java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptBothAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T,? super U>, java.util.concurrent.Executor);
-    method public <U> java.util.concurrent.CompletionStage<U> thenApply(java.util.function.Function<? super T,? extends U>);
-    method public <U> java.util.concurrent.CompletionStage<U> thenApplyAsync(java.util.function.Function<? super T,? extends U>);
-    method public <U> java.util.concurrent.CompletionStage<U> thenApplyAsync(java.util.function.Function<? super T,? extends U>, java.util.concurrent.Executor);
-    method public <U, V> java.util.concurrent.CompletionStage<V> thenCombine(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T,? super U,? extends V>);
-    method public <U, V> java.util.concurrent.CompletionStage<V> thenCombineAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T,? super U,? extends V>);
-    method public <U, V> java.util.concurrent.CompletionStage<V> thenCombineAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T,? super U,? extends V>, java.util.concurrent.Executor);
-    method public <U> java.util.concurrent.CompletionStage<U> thenCompose(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<U>>);
-    method public <U> java.util.concurrent.CompletionStage<U> thenComposeAsync(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<U>>);
-    method public <U> java.util.concurrent.CompletionStage<U> thenComposeAsync(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<U>>, java.util.concurrent.Executor);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> thenRun(Runnable);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> thenRunAsync(Runnable);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> thenRunAsync(Runnable, java.util.concurrent.Executor);
-    method public java.util.concurrent.CompletableFuture<T> toCompletableFuture();
-    method public java.util.concurrent.CompletionStage<T> whenComplete(java.util.function.BiConsumer<? super T,? super java.lang.Throwable>);
-    method public java.util.concurrent.CompletionStage<T> whenCompleteAsync(java.util.function.BiConsumer<? super T,? super java.lang.Throwable>);
-    method public java.util.concurrent.CompletionStage<T> whenCompleteAsync(java.util.function.BiConsumer<? super T,? super java.lang.Throwable>, java.util.concurrent.Executor);
-  }
-
-  public class ConcurrentHashMap<K, V> extends java.util.AbstractMap<K,V> implements java.util.concurrent.ConcurrentMap<K,V> java.io.Serializable {
-    ctor public ConcurrentHashMap();
-    ctor public ConcurrentHashMap(int);
-    ctor public ConcurrentHashMap(@NonNull java.util.Map<? extends K,? extends V>);
-    ctor public ConcurrentHashMap(int, float);
-    ctor public ConcurrentHashMap(int, float, int);
-    method public boolean contains(@NonNull Object);
-    method @NonNull public java.util.Enumeration<V> elements();
-    method @NonNull public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
-    method public void forEach(long, @NonNull java.util.function.BiConsumer<? super K,? super V>);
-    method public <U> void forEach(long, @NonNull java.util.function.BiFunction<? super K,? super V,? extends U>, @NonNull java.util.function.Consumer<? super U>);
-    method public void forEachEntry(long, @NonNull java.util.function.Consumer<? super java.util.Map.Entry<K,V>>);
-    method public <U> void forEachEntry(long, @NonNull java.util.function.Function<java.util.Map.Entry<K,V>,? extends U>, @NonNull java.util.function.Consumer<? super U>);
-    method public void forEachKey(long, @NonNull java.util.function.Consumer<? super K>);
-    method public <U> void forEachKey(long, @NonNull java.util.function.Function<? super K,? extends U>, @NonNull java.util.function.Consumer<? super U>);
-    method public void forEachValue(long, @NonNull java.util.function.Consumer<? super V>);
-    method public <U> void forEachValue(long, @NonNull java.util.function.Function<? super V,? extends U>, @NonNull java.util.function.Consumer<? super U>);
-    method @NonNull public java.util.concurrent.ConcurrentHashMap.KeySetView<K,V> keySet(@NonNull V);
-    method @NonNull public java.util.Enumeration<K> keys();
-    method public long mappingCount();
-    method @NonNull public static <K> java.util.concurrent.ConcurrentHashMap.KeySetView<K,java.lang.Boolean> newKeySet();
-    method @NonNull public static <K> java.util.concurrent.ConcurrentHashMap.KeySetView<K,java.lang.Boolean> newKeySet(int);
-    method @Nullable public <U> U reduce(long, @NonNull java.util.function.BiFunction<? super K,? super V,? extends U>, @NonNull java.util.function.BiFunction<? super U,? super U,? extends U>);
-    method @Nullable public java.util.Map.Entry<K,V> reduceEntries(long, @NonNull java.util.function.BiFunction<java.util.Map.Entry<K,V>,java.util.Map.Entry<K,V>,? extends java.util.Map.Entry<K,V>>);
-    method @Nullable public <U> U reduceEntries(long, @NonNull java.util.function.Function<java.util.Map.Entry<K,V>,? extends U>, @NonNull java.util.function.BiFunction<? super U,? super U,? extends U>);
-    method public double reduceEntriesToDouble(long, @NonNull java.util.function.ToDoubleFunction<java.util.Map.Entry<K,V>>, double, @NonNull java.util.function.DoubleBinaryOperator);
-    method public int reduceEntriesToInt(long, @NonNull java.util.function.ToIntFunction<java.util.Map.Entry<K,V>>, int, @NonNull java.util.function.IntBinaryOperator);
-    method public long reduceEntriesToLong(long, @NonNull java.util.function.ToLongFunction<java.util.Map.Entry<K,V>>, long, @NonNull java.util.function.LongBinaryOperator);
-    method @Nullable public K reduceKeys(long, @NonNull java.util.function.BiFunction<? super K,? super K,? extends K>);
-    method @Nullable public <U> U reduceKeys(long, @NonNull java.util.function.Function<? super K,? extends U>, @NonNull java.util.function.BiFunction<? super U,? super U,? extends U>);
-    method public double reduceKeysToDouble(long, @NonNull java.util.function.ToDoubleFunction<? super K>, double, @NonNull java.util.function.DoubleBinaryOperator);
-    method public int reduceKeysToInt(long, @NonNull java.util.function.ToIntFunction<? super K>, int, @NonNull java.util.function.IntBinaryOperator);
-    method public long reduceKeysToLong(long, @NonNull java.util.function.ToLongFunction<? super K>, long, @NonNull java.util.function.LongBinaryOperator);
-    method public double reduceToDouble(long, @NonNull java.util.function.ToDoubleBiFunction<? super K,? super V>, double, @NonNull java.util.function.DoubleBinaryOperator);
-    method public int reduceToInt(long, @NonNull java.util.function.ToIntBiFunction<? super K,? super V>, int, @NonNull java.util.function.IntBinaryOperator);
-    method public long reduceToLong(long, @NonNull java.util.function.ToLongBiFunction<? super K,? super V>, long, @NonNull java.util.function.LongBinaryOperator);
-    method @Nullable public V reduceValues(long, @NonNull java.util.function.BiFunction<? super V,? super V,? extends V>);
-    method @Nullable public <U> U reduceValues(long, @NonNull java.util.function.Function<? super V,? extends U>, @NonNull java.util.function.BiFunction<? super U,? super U,? extends U>);
-    method public double reduceValuesToDouble(long, @NonNull java.util.function.ToDoubleFunction<? super V>, double, @NonNull java.util.function.DoubleBinaryOperator);
-    method public int reduceValuesToInt(long, @NonNull java.util.function.ToIntFunction<? super V>, int, @NonNull java.util.function.IntBinaryOperator);
-    method public long reduceValuesToLong(long, @NonNull java.util.function.ToLongFunction<? super V>, long, @NonNull java.util.function.LongBinaryOperator);
-    method @Nullable public <U> U search(long, @NonNull java.util.function.BiFunction<? super K,? super V,? extends U>);
-    method @Nullable public <U> U searchEntries(long, @NonNull java.util.function.Function<java.util.Map.Entry<K,V>,? extends U>);
-    method @Nullable public <U> U searchKeys(long, @NonNull java.util.function.Function<? super K,? extends U>);
-    method @Nullable public <U> U searchValues(long, @NonNull java.util.function.Function<? super V,? extends U>);
-  }
-
-  public static class ConcurrentHashMap.KeySetView<K, V> implements java.util.Collection<K> java.io.Serializable java.util.Set<K> {
-    method public boolean add(@NonNull K);
-    method public boolean addAll(@NonNull java.util.Collection<? extends K>);
-    method public final void clear();
-    method public boolean contains(@NonNull Object);
-    method public final boolean containsAll(@NonNull java.util.Collection<?>);
-    method public void forEach(@NonNull java.util.function.Consumer<? super K>);
-    method @NonNull public java.util.concurrent.ConcurrentHashMap<K,V> getMap();
-    method @Nullable public V getMappedValue();
-    method public final boolean isEmpty();
-    method @NonNull public java.util.Iterator<K> iterator();
-    method public boolean remove(@NonNull Object);
-    method public final boolean removeAll(@NonNull java.util.Collection<?>);
-    method public final boolean retainAll(@NonNull java.util.Collection<?>);
-    method public final int size();
-    method @NonNull public java.util.Spliterator<K> spliterator();
-    method @NonNull public final Object[] toArray();
-    method @NonNull public final <T> T[] toArray(@NonNull T[]);
-    method @NonNull public final String toString();
-  }
-
-  public class ConcurrentLinkedDeque<E> extends java.util.AbstractCollection<E> implements java.util.Deque<E> java.io.Serializable {
-    ctor public ConcurrentLinkedDeque();
-    ctor public ConcurrentLinkedDeque(java.util.Collection<? extends E>);
-    method public void addFirst(E);
-    method public void addLast(E);
-    method public java.util.Iterator<E> descendingIterator();
-    method public E element();
-    method public E getFirst();
-    method public E getLast();
-    method public java.util.Iterator<E> iterator();
-    method public boolean offer(E);
-    method public boolean offerFirst(E);
-    method public boolean offerLast(E);
-    method public E peek();
-    method public E peekFirst();
-    method public E peekLast();
-    method public E poll();
-    method public E pollFirst();
-    method public E pollLast();
-    method public E pop();
-    method public void push(E);
-    method public E remove();
-    method public E removeFirst();
-    method public boolean removeFirstOccurrence(Object);
-    method public E removeLast();
-    method public boolean removeLastOccurrence(Object);
-    method public int size();
-  }
-
-  public class ConcurrentLinkedQueue<E> extends java.util.AbstractQueue<E> implements java.util.Queue<E> java.io.Serializable {
-    ctor public ConcurrentLinkedQueue();
-    ctor public ConcurrentLinkedQueue(java.util.Collection<? extends E>);
-    method public java.util.Iterator<E> iterator();
-    method public boolean offer(E);
-    method public E peek();
-    method public E poll();
-    method public int size();
-  }
-
-  public interface ConcurrentMap<K, V> extends java.util.Map<K,V> {
-    method public V putIfAbsent(K, V);
-    method public boolean remove(Object, Object);
-    method public boolean replace(K, V, V);
-    method public V replace(K, V);
-  }
-
-  public interface ConcurrentNavigableMap<K, V> extends java.util.concurrent.ConcurrentMap<K,V> java.util.NavigableMap<K,V> {
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> descendingMap();
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> headMap(K, boolean);
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> headMap(K);
-    method public java.util.NavigableSet<K> keySet();
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> subMap(K, boolean, K, boolean);
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> subMap(K, K);
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> tailMap(K, boolean);
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> tailMap(K);
-  }
-
-  public class ConcurrentSkipListMap<K, V> extends java.util.AbstractMap<K,V> implements java.lang.Cloneable java.util.concurrent.ConcurrentNavigableMap<K,V> java.io.Serializable {
-    ctor public ConcurrentSkipListMap();
-    ctor public ConcurrentSkipListMap(java.util.Comparator<? super K>);
-    ctor public ConcurrentSkipListMap(java.util.Map<? extends K,? extends V>);
-    ctor public ConcurrentSkipListMap(java.util.SortedMap<K,? extends V>);
-    method public java.util.Map.Entry<K,V> ceilingEntry(K);
-    method public K ceilingKey(K);
-    method public java.util.concurrent.ConcurrentSkipListMap<K,V> clone();
-    method public java.util.Comparator<? super K> comparator();
-    method public java.util.NavigableSet<K> descendingKeySet();
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> descendingMap();
-    method public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
-    method public java.util.Map.Entry<K,V> firstEntry();
-    method public K firstKey();
-    method public java.util.Map.Entry<K,V> floorEntry(K);
-    method public K floorKey(K);
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> headMap(K, boolean);
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> headMap(K);
-    method public java.util.Map.Entry<K,V> higherEntry(K);
-    method public K higherKey(K);
-    method public java.util.NavigableSet<K> keySet();
-    method public java.util.Map.Entry<K,V> lastEntry();
-    method public K lastKey();
-    method public java.util.Map.Entry<K,V> lowerEntry(K);
-    method public K lowerKey(K);
-    method public java.util.NavigableSet<K> navigableKeySet();
-    method public java.util.Map.Entry<K,V> pollFirstEntry();
-    method public java.util.Map.Entry<K,V> pollLastEntry();
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> subMap(K, boolean, K, boolean);
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> subMap(K, K);
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> tailMap(K, boolean);
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> tailMap(K);
-  }
-
-  public class ConcurrentSkipListSet<E> extends java.util.AbstractSet<E> implements java.lang.Cloneable java.util.NavigableSet<E> java.io.Serializable {
-    ctor public ConcurrentSkipListSet();
-    ctor public ConcurrentSkipListSet(java.util.Comparator<? super E>);
-    ctor public ConcurrentSkipListSet(java.util.Collection<? extends E>);
-    ctor public ConcurrentSkipListSet(java.util.SortedSet<E>);
-    method public E ceiling(E);
-    method public java.util.concurrent.ConcurrentSkipListSet<E> clone();
-    method public java.util.Comparator<? super E> comparator();
-    method public java.util.Iterator<E> descendingIterator();
-    method public java.util.NavigableSet<E> descendingSet();
-    method public E first();
-    method public E floor(E);
-    method public java.util.NavigableSet<E> headSet(E, boolean);
-    method public java.util.NavigableSet<E> headSet(E);
-    method public E higher(E);
-    method public java.util.Iterator<E> iterator();
-    method public E last();
-    method public E lower(E);
-    method public E pollFirst();
-    method public E pollLast();
-    method public int size();
-    method public java.util.NavigableSet<E> subSet(E, boolean, E, boolean);
-    method public java.util.NavigableSet<E> subSet(E, E);
-    method public java.util.NavigableSet<E> tailSet(E, boolean);
-    method public java.util.NavigableSet<E> tailSet(E);
-  }
-
-  public class CopyOnWriteArrayList<E> implements java.lang.Cloneable java.util.List<E> java.util.RandomAccess java.io.Serializable {
-    ctor public CopyOnWriteArrayList();
-    ctor public CopyOnWriteArrayList(@NonNull java.util.Collection<? extends E>);
-    ctor public CopyOnWriteArrayList(@NonNull E[]);
-    method public boolean add(E);
-    method public void add(int, E);
-    method public boolean addAll(@NonNull java.util.Collection<? extends E>);
-    method public boolean addAll(int, @NonNull java.util.Collection<? extends E>);
-    method public int addAllAbsent(@NonNull java.util.Collection<? extends E>);
-    method public boolean addIfAbsent(E);
-    method public void clear();
-    method @NonNull public Object clone();
-    method public boolean contains(@Nullable Object);
-    method public boolean containsAll(@NonNull java.util.Collection<?>);
-    method public void forEach(@NonNull java.util.function.Consumer<? super E>);
-    method public E get(int);
-    method public int indexOf(@Nullable Object);
-    method public int indexOf(@Nullable E, int);
-    method public boolean isEmpty();
-    method @NonNull public java.util.Iterator<E> iterator();
-    method public int lastIndexOf(@Nullable Object);
-    method public int lastIndexOf(@Nullable E, int);
-    method @NonNull public java.util.ListIterator<E> listIterator();
-    method @NonNull public java.util.ListIterator<E> listIterator(int);
-    method public E remove(int);
-    method public boolean remove(@Nullable Object);
-    method public boolean removeAll(@NonNull java.util.Collection<?>);
-    method public boolean retainAll(@NonNull java.util.Collection<?>);
-    method public E set(int, E);
-    method public int size();
-    method @NonNull public java.util.List<E> subList(int, int);
-    method @NonNull public Object[] toArray();
-    method @NonNull public <T> T[] toArray(@NonNull T[]);
-  }
-
-  public class CopyOnWriteArraySet<E> extends java.util.AbstractSet<E> implements java.io.Serializable {
-    ctor public CopyOnWriteArraySet();
-    ctor public CopyOnWriteArraySet(java.util.Collection<? extends E>);
-    method public void forEach(java.util.function.Consumer<? super E>);
-    method public java.util.Iterator<E> iterator();
-    method public int size();
-  }
-
-  public class CountDownLatch {
-    ctor public CountDownLatch(int);
-    method public void await() throws java.lang.InterruptedException;
-    method public boolean await(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public void countDown();
-    method public long getCount();
-  }
-
-  public abstract class CountedCompleter<T> extends java.util.concurrent.ForkJoinTask<T> {
-    ctor protected CountedCompleter(java.util.concurrent.CountedCompleter<?>, int);
-    ctor protected CountedCompleter(java.util.concurrent.CountedCompleter<?>);
-    ctor protected CountedCompleter();
-    method public final void addToPendingCount(int);
-    method public final boolean compareAndSetPendingCount(int, int);
-    method public void complete(T);
-    method public abstract void compute();
-    method public final int decrementPendingCountUnlessZero();
-    method protected final boolean exec();
-    method public final java.util.concurrent.CountedCompleter<?> firstComplete();
-    method public final java.util.concurrent.CountedCompleter<?> getCompleter();
-    method public final int getPendingCount();
-    method public T getRawResult();
-    method public final java.util.concurrent.CountedCompleter<?> getRoot();
-    method public final void helpComplete(int);
-    method public final java.util.concurrent.CountedCompleter<?> nextComplete();
-    method public void onCompletion(java.util.concurrent.CountedCompleter<?>);
-    method public boolean onExceptionalCompletion(Throwable, java.util.concurrent.CountedCompleter<?>);
-    method public final void propagateCompletion();
-    method public final void quietlyCompleteRoot();
-    method public final void setPendingCount(int);
-    method protected void setRawResult(T);
-    method public final void tryComplete();
-  }
-
-  public class CyclicBarrier {
-    ctor public CyclicBarrier(int, Runnable);
-    ctor public CyclicBarrier(int);
-    method public int await() throws java.util.concurrent.BrokenBarrierException, java.lang.InterruptedException;
-    method public int await(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.BrokenBarrierException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
-    method public int getNumberWaiting();
-    method public int getParties();
-    method public boolean isBroken();
-    method public void reset();
-  }
-
-  public class DelayQueue<E extends java.util.concurrent.Delayed> extends java.util.AbstractQueue<E> implements java.util.concurrent.BlockingQueue<E> {
-    ctor public DelayQueue();
-    ctor public DelayQueue(java.util.Collection<? extends E>);
-    method public int drainTo(java.util.Collection<? super E>);
-    method public int drainTo(java.util.Collection<? super E>, int);
-    method public java.util.Iterator<E> iterator();
-    method public boolean offer(E);
-    method public boolean offer(E, long, java.util.concurrent.TimeUnit);
-    method public E peek();
-    method public E poll();
-    method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public void put(E);
-    method public int remainingCapacity();
-    method public int size();
-    method public E take() throws java.lang.InterruptedException;
-  }
-
-  public interface Delayed extends java.lang.Comparable<java.util.concurrent.Delayed> {
-    method public long getDelay(java.util.concurrent.TimeUnit);
-  }
-
-  public class Exchanger<V> {
-    ctor public Exchanger();
-    method public V exchange(V) throws java.lang.InterruptedException;
-    method public V exchange(V, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException, java.util.concurrent.TimeoutException;
-  }
-
-  public class ExecutionException extends java.lang.Exception {
-    ctor protected ExecutionException();
-    ctor protected ExecutionException(String);
-    ctor public ExecutionException(String, Throwable);
-    ctor public ExecutionException(Throwable);
-  }
-
-  public interface Executor {
-    method public void execute(Runnable);
-  }
-
-  public class ExecutorCompletionService<V> implements java.util.concurrent.CompletionService<V> {
-    ctor public ExecutorCompletionService(java.util.concurrent.Executor);
-    ctor public ExecutorCompletionService(java.util.concurrent.Executor, java.util.concurrent.BlockingQueue<java.util.concurrent.Future<V>>);
-    method public java.util.concurrent.Future<V> poll();
-    method public java.util.concurrent.Future<V> poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public java.util.concurrent.Future<V> submit(java.util.concurrent.Callable<V>);
-    method public java.util.concurrent.Future<V> submit(Runnable, V);
-    method public java.util.concurrent.Future<V> take() throws java.lang.InterruptedException;
-  }
-
-  public interface ExecutorService extends java.util.concurrent.Executor {
-    method public boolean awaitTermination(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>>) throws java.lang.InterruptedException;
-    method public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>>, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>>) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
-    method public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>>, long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
-    method public boolean isShutdown();
-    method public boolean isTerminated();
-    method public void shutdown();
-    method public java.util.List<java.lang.Runnable> shutdownNow();
-    method public <T> java.util.concurrent.Future<T> submit(java.util.concurrent.Callable<T>);
-    method public <T> java.util.concurrent.Future<T> submit(Runnable, T);
-    method public java.util.concurrent.Future<?> submit(Runnable);
-  }
-
-  public class Executors {
-    method public static <T> java.util.concurrent.Callable<T> callable(Runnable, T);
-    method public static java.util.concurrent.Callable<java.lang.Object> callable(Runnable);
-    method public static java.util.concurrent.Callable<java.lang.Object> callable(java.security.PrivilegedAction<?>);
-    method public static java.util.concurrent.Callable<java.lang.Object> callable(java.security.PrivilegedExceptionAction<?>);
-    method public static java.util.concurrent.ThreadFactory defaultThreadFactory();
-    method public static java.util.concurrent.ExecutorService newCachedThreadPool();
-    method public static java.util.concurrent.ExecutorService newCachedThreadPool(java.util.concurrent.ThreadFactory);
-    method public static java.util.concurrent.ExecutorService newFixedThreadPool(int);
-    method public static java.util.concurrent.ExecutorService newFixedThreadPool(int, java.util.concurrent.ThreadFactory);
-    method public static java.util.concurrent.ScheduledExecutorService newScheduledThreadPool(int);
-    method public static java.util.concurrent.ScheduledExecutorService newScheduledThreadPool(int, java.util.concurrent.ThreadFactory);
-    method public static java.util.concurrent.ExecutorService newSingleThreadExecutor();
-    method public static java.util.concurrent.ExecutorService newSingleThreadExecutor(java.util.concurrent.ThreadFactory);
-    method public static java.util.concurrent.ScheduledExecutorService newSingleThreadScheduledExecutor();
-    method public static java.util.concurrent.ScheduledExecutorService newSingleThreadScheduledExecutor(java.util.concurrent.ThreadFactory);
-    method public static java.util.concurrent.ExecutorService newWorkStealingPool(int);
-    method public static java.util.concurrent.ExecutorService newWorkStealingPool();
-    method public static <T> java.util.concurrent.Callable<T> privilegedCallable(java.util.concurrent.Callable<T>);
-    method public static <T> java.util.concurrent.Callable<T> privilegedCallableUsingCurrentClassLoader(java.util.concurrent.Callable<T>);
-    method public static java.util.concurrent.ThreadFactory privilegedThreadFactory();
-    method public static java.util.concurrent.ExecutorService unconfigurableExecutorService(java.util.concurrent.ExecutorService);
-    method public static java.util.concurrent.ScheduledExecutorService unconfigurableScheduledExecutorService(java.util.concurrent.ScheduledExecutorService);
-  }
-
-  public final class Flow {
-    method public static int defaultBufferSize();
-  }
-
-  public static interface Flow.Processor<T, R> extends java.util.concurrent.Flow.Subscriber<T> java.util.concurrent.Flow.Publisher<R> {
-  }
-
-  @java.lang.FunctionalInterface public static interface Flow.Publisher<T> {
-    method public void subscribe(java.util.concurrent.Flow.Subscriber<? super T>);
-  }
-
-  public static interface Flow.Subscriber<T> {
-    method public void onComplete();
-    method public void onError(Throwable);
-    method public void onNext(T);
-    method public void onSubscribe(java.util.concurrent.Flow.Subscription);
-  }
-
-  public static interface Flow.Subscription {
-    method public void cancel();
-    method public void request(long);
-  }
-
-  public class ForkJoinPool extends java.util.concurrent.AbstractExecutorService {
-    ctor public ForkJoinPool();
-    ctor public ForkJoinPool(int);
-    ctor public ForkJoinPool(int, java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory, java.lang.Thread.UncaughtExceptionHandler, boolean);
-    method public boolean awaitQuiescence(long, java.util.concurrent.TimeUnit);
-    method public boolean awaitTermination(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public static java.util.concurrent.ForkJoinPool commonPool();
-    method protected int drainTasksTo(java.util.Collection<? super java.util.concurrent.ForkJoinTask<?>>);
-    method public void execute(java.util.concurrent.ForkJoinTask<?>);
-    method public void execute(Runnable);
-    method public int getActiveThreadCount();
-    method public boolean getAsyncMode();
-    method public static int getCommonPoolParallelism();
-    method public java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory getFactory();
-    method public int getParallelism();
-    method public int getPoolSize();
-    method public int getQueuedSubmissionCount();
-    method public long getQueuedTaskCount();
-    method public int getRunningThreadCount();
-    method public long getStealCount();
-    method public java.lang.Thread.UncaughtExceptionHandler getUncaughtExceptionHandler();
-    method public boolean hasQueuedSubmissions();
-    method public <T> T invoke(java.util.concurrent.ForkJoinTask<T>);
-    method public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>>);
-    method public boolean isQuiescent();
-    method public boolean isShutdown();
-    method public boolean isTerminated();
-    method public boolean isTerminating();
-    method public static void managedBlock(java.util.concurrent.ForkJoinPool.ManagedBlocker) throws java.lang.InterruptedException;
-    method protected java.util.concurrent.ForkJoinTask<?> pollSubmission();
-    method public void shutdown();
-    method public java.util.List<java.lang.Runnable> shutdownNow();
-    method public <T> java.util.concurrent.ForkJoinTask<T> submit(java.util.concurrent.ForkJoinTask<T>);
-    method public <T> java.util.concurrent.ForkJoinTask<T> submit(java.util.concurrent.Callable<T>);
-    method public <T> java.util.concurrent.ForkJoinTask<T> submit(Runnable, T);
-    method public java.util.concurrent.ForkJoinTask<?> submit(Runnable);
-    field public static final java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory defaultForkJoinWorkerThreadFactory;
-  }
-
-  public static interface ForkJoinPool.ForkJoinWorkerThreadFactory {
-    method public java.util.concurrent.ForkJoinWorkerThread newThread(java.util.concurrent.ForkJoinPool);
-  }
-
-  public static interface ForkJoinPool.ManagedBlocker {
-    method public boolean block() throws java.lang.InterruptedException;
-    method public boolean isReleasable();
-  }
-
-  public abstract class ForkJoinTask<V> implements java.util.concurrent.Future<V> java.io.Serializable {
-    ctor public ForkJoinTask();
-    method public static java.util.concurrent.ForkJoinTask<?> adapt(Runnable);
-    method public static <T> java.util.concurrent.ForkJoinTask<T> adapt(Runnable, T);
-    method public static <T> java.util.concurrent.ForkJoinTask<T> adapt(java.util.concurrent.Callable<? extends T>);
-    method public boolean cancel(boolean);
-    method public final boolean compareAndSetForkJoinTaskTag(short, short);
-    method public void complete(V);
-    method public void completeExceptionally(Throwable);
-    method protected abstract boolean exec();
-    method public final java.util.concurrent.ForkJoinTask<V> fork();
-    method public final V get() throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
-    method public final V get(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
-    method public final Throwable getException();
-    method public final short getForkJoinTaskTag();
-    method public static java.util.concurrent.ForkJoinPool getPool();
-    method public static int getQueuedTaskCount();
-    method public abstract V getRawResult();
-    method public static int getSurplusQueuedTaskCount();
-    method public static void helpQuiesce();
-    method public static boolean inForkJoinPool();
-    method public final V invoke();
-    method public static void invokeAll(java.util.concurrent.ForkJoinTask<?>, java.util.concurrent.ForkJoinTask<?>);
-    method public static void invokeAll(java.util.concurrent.ForkJoinTask<?>...);
-    method public static <T extends java.util.concurrent.ForkJoinTask<?>> java.util.Collection<T> invokeAll(java.util.Collection<T>);
-    method public final boolean isCancelled();
-    method public final boolean isCompletedAbnormally();
-    method public final boolean isCompletedNormally();
-    method public final boolean isDone();
-    method public final V join();
-    method protected static java.util.concurrent.ForkJoinTask<?> peekNextLocalTask();
-    method protected static java.util.concurrent.ForkJoinTask<?> pollNextLocalTask();
-    method protected static java.util.concurrent.ForkJoinTask<?> pollTask();
-    method public final void quietlyComplete();
-    method public final void quietlyInvoke();
-    method public final void quietlyJoin();
-    method public void reinitialize();
-    method public final short setForkJoinTaskTag(short);
-    method protected abstract void setRawResult(V);
-    method public boolean tryUnfork();
-  }
-
-  public class ForkJoinWorkerThread extends java.lang.Thread {
-    ctor protected ForkJoinWorkerThread(java.util.concurrent.ForkJoinPool);
-    method public java.util.concurrent.ForkJoinPool getPool();
-    method public int getPoolIndex();
-    method protected void onStart();
-    method protected void onTermination(Throwable);
-  }
-
-  public interface Future<V> {
-    method public boolean cancel(boolean);
-    method public V get() throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
-    method public V get(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
-    method public boolean isCancelled();
-    method public boolean isDone();
-  }
-
-  public class FutureTask<V> implements java.util.concurrent.RunnableFuture<V> {
-    ctor public FutureTask(java.util.concurrent.Callable<V>);
-    ctor public FutureTask(Runnable, V);
-    method public boolean cancel(boolean);
-    method protected void done();
-    method public V get() throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
-    method public V get(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
-    method public boolean isCancelled();
-    method public boolean isDone();
-    method public void run();
-    method protected boolean runAndReset();
-    method protected void set(V);
-    method protected void setException(Throwable);
-  }
-
-  public class LinkedBlockingDeque<E> extends java.util.AbstractQueue<E> implements java.util.concurrent.BlockingDeque<E> java.io.Serializable {
-    ctor public LinkedBlockingDeque();
-    ctor public LinkedBlockingDeque(int);
-    ctor public LinkedBlockingDeque(java.util.Collection<? extends E>);
-    method public void addFirst(E);
-    method public void addLast(E);
-    method public java.util.Iterator<E> descendingIterator();
-    method public int drainTo(java.util.Collection<? super E>);
-    method public int drainTo(java.util.Collection<? super E>, int);
-    method public E getFirst();
-    method public E getLast();
-    method public java.util.Iterator<E> iterator();
-    method public boolean offer(E);
-    method public boolean offer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public boolean offerFirst(E);
-    method public boolean offerFirst(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public boolean offerLast(E);
-    method public boolean offerLast(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public E peek();
-    method public E peekFirst();
-    method public E peekLast();
-    method public E poll();
-    method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public E pollFirst();
-    method public E pollFirst(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public E pollLast();
-    method public E pollLast(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public E pop();
-    method public void push(E);
-    method public void put(E) throws java.lang.InterruptedException;
-    method public void putFirst(E) throws java.lang.InterruptedException;
-    method public void putLast(E) throws java.lang.InterruptedException;
-    method public int remainingCapacity();
-    method public E removeFirst();
-    method public boolean removeFirstOccurrence(Object);
-    method public E removeLast();
-    method public boolean removeLastOccurrence(Object);
-    method public int size();
-    method public E take() throws java.lang.InterruptedException;
-    method public E takeFirst() throws java.lang.InterruptedException;
-    method public E takeLast() throws java.lang.InterruptedException;
-  }
-
-  public class LinkedBlockingQueue<E> extends java.util.AbstractQueue<E> implements java.util.concurrent.BlockingQueue<E> java.io.Serializable {
-    ctor public LinkedBlockingQueue();
-    ctor public LinkedBlockingQueue(int);
-    ctor public LinkedBlockingQueue(java.util.Collection<? extends E>);
-    method public int drainTo(java.util.Collection<? super E>);
-    method public int drainTo(java.util.Collection<? super E>, int);
-    method public java.util.Iterator<E> iterator();
-    method public boolean offer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public boolean offer(E);
-    method public E peek();
-    method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public E poll();
-    method public void put(E) throws java.lang.InterruptedException;
-    method public int remainingCapacity();
-    method public int size();
-    method public E take() throws java.lang.InterruptedException;
-  }
-
-  public class LinkedTransferQueue<E> extends java.util.AbstractQueue<E> implements java.io.Serializable java.util.concurrent.TransferQueue<E> {
-    ctor public LinkedTransferQueue();
-    ctor public LinkedTransferQueue(java.util.Collection<? extends E>);
-    method public int drainTo(java.util.Collection<? super E>);
-    method public int drainTo(java.util.Collection<? super E>, int);
-    method public int getWaitingConsumerCount();
-    method public boolean hasWaitingConsumer();
-    method public java.util.Iterator<E> iterator();
-    method public boolean offer(E, long, java.util.concurrent.TimeUnit);
-    method public boolean offer(E);
-    method public E peek();
-    method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public E poll();
-    method public void put(E);
-    method public int remainingCapacity();
-    method public int size();
-    method public E take() throws java.lang.InterruptedException;
-    method public void transfer(E) throws java.lang.InterruptedException;
-    method public boolean tryTransfer(E);
-    method public boolean tryTransfer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-  }
-
-  public class Phaser {
-    ctor public Phaser();
-    ctor public Phaser(int);
-    ctor public Phaser(java.util.concurrent.Phaser);
-    ctor public Phaser(java.util.concurrent.Phaser, int);
-    method public int arrive();
-    method public int arriveAndAwaitAdvance();
-    method public int arriveAndDeregister();
-    method public int awaitAdvance(int);
-    method public int awaitAdvanceInterruptibly(int) throws java.lang.InterruptedException;
-    method public int awaitAdvanceInterruptibly(int, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException, java.util.concurrent.TimeoutException;
-    method public int bulkRegister(int);
-    method public void forceTermination();
-    method public int getArrivedParties();
-    method public java.util.concurrent.Phaser getParent();
-    method public final int getPhase();
-    method public int getRegisteredParties();
-    method public java.util.concurrent.Phaser getRoot();
-    method public int getUnarrivedParties();
-    method public boolean isTerminated();
-    method protected boolean onAdvance(int, int);
-    method public int register();
-  }
-
-  public class PriorityBlockingQueue<E> extends java.util.AbstractQueue<E> implements java.util.concurrent.BlockingQueue<E> java.io.Serializable {
-    ctor public PriorityBlockingQueue();
-    ctor public PriorityBlockingQueue(int);
-    ctor public PriorityBlockingQueue(int, java.util.Comparator<? super E>);
-    ctor public PriorityBlockingQueue(java.util.Collection<? extends E>);
-    method public java.util.Comparator<? super E> comparator();
-    method public int drainTo(java.util.Collection<? super E>);
-    method public int drainTo(java.util.Collection<? super E>, int);
-    method public java.util.Iterator<E> iterator();
-    method public boolean offer(E);
-    method public boolean offer(E, long, java.util.concurrent.TimeUnit);
-    method public E peek();
-    method public E poll();
-    method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public void put(E);
-    method public int remainingCapacity();
-    method public int size();
-    method public E take() throws java.lang.InterruptedException;
-  }
-
-  public abstract class RecursiveAction extends java.util.concurrent.ForkJoinTask<java.lang.Void> {
-    ctor public RecursiveAction();
-    method protected abstract void compute();
-    method protected final boolean exec();
-    method public final Void getRawResult();
-    method protected final void setRawResult(Void);
-  }
-
-  public abstract class RecursiveTask<V> extends java.util.concurrent.ForkJoinTask<V> {
-    ctor public RecursiveTask();
-    method protected abstract V compute();
-    method protected final boolean exec();
-    method public final V getRawResult();
-    method protected final void setRawResult(V);
-  }
-
-  public class RejectedExecutionException extends java.lang.RuntimeException {
-    ctor public RejectedExecutionException();
-    ctor public RejectedExecutionException(String);
-    ctor public RejectedExecutionException(String, Throwable);
-    ctor public RejectedExecutionException(Throwable);
-  }
-
-  public interface RejectedExecutionHandler {
-    method public void rejectedExecution(Runnable, java.util.concurrent.ThreadPoolExecutor);
-  }
-
-  public interface RunnableFuture<V> extends java.lang.Runnable java.util.concurrent.Future<V> {
-  }
-
-  public interface RunnableScheduledFuture<V> extends java.util.concurrent.RunnableFuture<V> java.util.concurrent.ScheduledFuture<V> {
-    method public boolean isPeriodic();
-  }
-
-  public interface ScheduledExecutorService extends java.util.concurrent.ExecutorService {
-    method public java.util.concurrent.ScheduledFuture<?> schedule(Runnable, long, java.util.concurrent.TimeUnit);
-    method public <V> java.util.concurrent.ScheduledFuture<V> schedule(java.util.concurrent.Callable<V>, long, java.util.concurrent.TimeUnit);
-    method public java.util.concurrent.ScheduledFuture<?> scheduleAtFixedRate(Runnable, long, long, java.util.concurrent.TimeUnit);
-    method public java.util.concurrent.ScheduledFuture<?> scheduleWithFixedDelay(Runnable, long, long, java.util.concurrent.TimeUnit);
-  }
-
-  public interface ScheduledFuture<V> extends java.util.concurrent.Delayed java.util.concurrent.Future<V> {
-  }
-
-  public class ScheduledThreadPoolExecutor extends java.util.concurrent.ThreadPoolExecutor implements java.util.concurrent.ScheduledExecutorService {
-    ctor public ScheduledThreadPoolExecutor(int);
-    ctor public ScheduledThreadPoolExecutor(int, java.util.concurrent.ThreadFactory);
-    ctor public ScheduledThreadPoolExecutor(int, java.util.concurrent.RejectedExecutionHandler);
-    ctor public ScheduledThreadPoolExecutor(int, java.util.concurrent.ThreadFactory, java.util.concurrent.RejectedExecutionHandler);
-    method protected <V> java.util.concurrent.RunnableScheduledFuture<V> decorateTask(Runnable, java.util.concurrent.RunnableScheduledFuture<V>);
-    method protected <V> java.util.concurrent.RunnableScheduledFuture<V> decorateTask(java.util.concurrent.Callable<V>, java.util.concurrent.RunnableScheduledFuture<V>);
-    method public boolean getContinueExistingPeriodicTasksAfterShutdownPolicy();
-    method public boolean getExecuteExistingDelayedTasksAfterShutdownPolicy();
-    method public boolean getRemoveOnCancelPolicy();
-    method public java.util.concurrent.ScheduledFuture<?> schedule(Runnable, long, java.util.concurrent.TimeUnit);
-    method public <V> java.util.concurrent.ScheduledFuture<V> schedule(java.util.concurrent.Callable<V>, long, java.util.concurrent.TimeUnit);
-    method public java.util.concurrent.ScheduledFuture<?> scheduleAtFixedRate(Runnable, long, long, java.util.concurrent.TimeUnit);
-    method public java.util.concurrent.ScheduledFuture<?> scheduleWithFixedDelay(Runnable, long, long, java.util.concurrent.TimeUnit);
-    method public void setContinueExistingPeriodicTasksAfterShutdownPolicy(boolean);
-    method public void setExecuteExistingDelayedTasksAfterShutdownPolicy(boolean);
-    method public void setRemoveOnCancelPolicy(boolean);
-  }
-
-  public class Semaphore implements java.io.Serializable {
-    ctor public Semaphore(int);
-    ctor public Semaphore(int, boolean);
-    method public void acquire() throws java.lang.InterruptedException;
-    method public void acquire(int) throws java.lang.InterruptedException;
-    method public void acquireUninterruptibly();
-    method public void acquireUninterruptibly(int);
-    method public int availablePermits();
-    method public int drainPermits();
-    method public final int getQueueLength();
-    method protected java.util.Collection<java.lang.Thread> getQueuedThreads();
-    method public final boolean hasQueuedThreads();
-    method public boolean isFair();
-    method protected void reducePermits(int);
-    method public void release();
-    method public void release(int);
-    method public boolean tryAcquire();
-    method public boolean tryAcquire(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public boolean tryAcquire(int);
-    method public boolean tryAcquire(int, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-  }
-
-  public class SynchronousQueue<E> extends java.util.AbstractQueue<E> implements java.util.concurrent.BlockingQueue<E> java.io.Serializable {
-    ctor public SynchronousQueue();
-    ctor public SynchronousQueue(boolean);
-    method public int drainTo(java.util.Collection<? super E>);
-    method public int drainTo(java.util.Collection<? super E>, int);
-    method public java.util.Iterator<E> iterator();
-    method public boolean offer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public boolean offer(E);
-    method public E peek();
-    method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public E poll();
-    method public void put(E) throws java.lang.InterruptedException;
-    method public int remainingCapacity();
-    method public int size();
-    method public E take() throws java.lang.InterruptedException;
-  }
-
-  public interface ThreadFactory {
-    method public Thread newThread(Runnable);
-  }
-
-  public class ThreadLocalRandom extends java.util.Random {
-    method public static java.util.concurrent.ThreadLocalRandom current();
-    method public double nextDouble(double);
-    method public double nextDouble(double, double);
-    method public int nextInt(int, int);
-    method public long nextLong(long);
-    method public long nextLong(long, long);
-  }
-
-  public class ThreadPoolExecutor extends java.util.concurrent.AbstractExecutorService {
-    ctor public ThreadPoolExecutor(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue<java.lang.Runnable>);
-    ctor public ThreadPoolExecutor(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue<java.lang.Runnable>, java.util.concurrent.ThreadFactory);
-    ctor public ThreadPoolExecutor(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue<java.lang.Runnable>, java.util.concurrent.RejectedExecutionHandler);
-    ctor public ThreadPoolExecutor(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue<java.lang.Runnable>, java.util.concurrent.ThreadFactory, java.util.concurrent.RejectedExecutionHandler);
-    method protected void afterExecute(Runnable, Throwable);
-    method public void allowCoreThreadTimeOut(boolean);
-    method public boolean allowsCoreThreadTimeOut();
-    method public boolean awaitTermination(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method protected void beforeExecute(Thread, Runnable);
-    method public void execute(Runnable);
-    method protected void finalize();
-    method public int getActiveCount();
-    method public long getCompletedTaskCount();
-    method public int getCorePoolSize();
-    method public long getKeepAliveTime(java.util.concurrent.TimeUnit);
-    method public int getLargestPoolSize();
-    method public int getMaximumPoolSize();
-    method public int getPoolSize();
-    method public java.util.concurrent.BlockingQueue<java.lang.Runnable> getQueue();
-    method public java.util.concurrent.RejectedExecutionHandler getRejectedExecutionHandler();
-    method public long getTaskCount();
-    method public java.util.concurrent.ThreadFactory getThreadFactory();
-    method public boolean isShutdown();
-    method public boolean isTerminated();
-    method public boolean isTerminating();
-    method public int prestartAllCoreThreads();
-    method public boolean prestartCoreThread();
-    method public void purge();
-    method public boolean remove(Runnable);
-    method public void setCorePoolSize(int);
-    method public void setKeepAliveTime(long, java.util.concurrent.TimeUnit);
-    method public void setMaximumPoolSize(int);
-    method public void setRejectedExecutionHandler(java.util.concurrent.RejectedExecutionHandler);
-    method public void setThreadFactory(java.util.concurrent.ThreadFactory);
-    method public void shutdown();
-    method public java.util.List<java.lang.Runnable> shutdownNow();
-    method protected void terminated();
-  }
-
-  public static class ThreadPoolExecutor.AbortPolicy implements java.util.concurrent.RejectedExecutionHandler {
-    ctor public ThreadPoolExecutor.AbortPolicy();
-    method public void rejectedExecution(Runnable, java.util.concurrent.ThreadPoolExecutor);
-  }
-
-  public static class ThreadPoolExecutor.CallerRunsPolicy implements java.util.concurrent.RejectedExecutionHandler {
-    ctor public ThreadPoolExecutor.CallerRunsPolicy();
-    method public void rejectedExecution(Runnable, java.util.concurrent.ThreadPoolExecutor);
-  }
-
-  public static class ThreadPoolExecutor.DiscardOldestPolicy implements java.util.concurrent.RejectedExecutionHandler {
-    ctor public ThreadPoolExecutor.DiscardOldestPolicy();
-    method public void rejectedExecution(Runnable, java.util.concurrent.ThreadPoolExecutor);
-  }
-
-  public static class ThreadPoolExecutor.DiscardPolicy implements java.util.concurrent.RejectedExecutionHandler {
-    ctor public ThreadPoolExecutor.DiscardPolicy();
-    method public void rejectedExecution(Runnable, java.util.concurrent.ThreadPoolExecutor);
-  }
-
-  public enum TimeUnit {
-    method public long convert(long, java.util.concurrent.TimeUnit);
-    method public void sleep(long) throws java.lang.InterruptedException;
-    method public void timedJoin(Thread, long) throws java.lang.InterruptedException;
-    method public void timedWait(Object, long) throws java.lang.InterruptedException;
-    method public long toDays(long);
-    method public long toHours(long);
-    method public long toMicros(long);
-    method public long toMillis(long);
-    method public long toMinutes(long);
-    method public long toNanos(long);
-    method public long toSeconds(long);
-    enum_constant public static final java.util.concurrent.TimeUnit DAYS;
-    enum_constant public static final java.util.concurrent.TimeUnit HOURS;
-    enum_constant public static final java.util.concurrent.TimeUnit MICROSECONDS;
-    enum_constant public static final java.util.concurrent.TimeUnit MILLISECONDS;
-    enum_constant public static final java.util.concurrent.TimeUnit MINUTES;
-    enum_constant public static final java.util.concurrent.TimeUnit NANOSECONDS;
-    enum_constant public static final java.util.concurrent.TimeUnit SECONDS;
-  }
-
-  public class TimeoutException extends java.lang.Exception {
-    ctor public TimeoutException();
-    ctor public TimeoutException(String);
-  }
-
-  public interface TransferQueue<E> extends java.util.concurrent.BlockingQueue<E> {
-    method public int getWaitingConsumerCount();
-    method public boolean hasWaitingConsumer();
-    method public void transfer(E) throws java.lang.InterruptedException;
-    method public boolean tryTransfer(E);
-    method public boolean tryTransfer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-  }
-
-}
-
-package java.util.concurrent.atomic {
-
-  public class AtomicBoolean implements java.io.Serializable {
-    ctor public AtomicBoolean(boolean);
-    ctor public AtomicBoolean();
-    method public final boolean compareAndSet(boolean, boolean);
-    method public final boolean get();
-    method public final boolean getAndSet(boolean);
-    method public final void lazySet(boolean);
-    method public final void set(boolean);
-    method public boolean weakCompareAndSet(boolean, boolean);
-  }
-
-  public class AtomicInteger extends java.lang.Number implements java.io.Serializable {
-    ctor public AtomicInteger(int);
-    ctor public AtomicInteger();
-    method public final int accumulateAndGet(int, java.util.function.IntBinaryOperator);
-    method public final int addAndGet(int);
-    method public final boolean compareAndSet(int, int);
-    method public final int decrementAndGet();
-    method public double doubleValue();
-    method public float floatValue();
-    method public final int get();
-    method public final int getAndAccumulate(int, java.util.function.IntBinaryOperator);
-    method public final int getAndAdd(int);
-    method public final int getAndDecrement();
-    method public final int getAndIncrement();
-    method public final int getAndSet(int);
-    method public final int getAndUpdate(java.util.function.IntUnaryOperator);
-    method public final int incrementAndGet();
-    method public int intValue();
-    method public final void lazySet(int);
-    method public long longValue();
-    method public final void set(int);
-    method public final int updateAndGet(java.util.function.IntUnaryOperator);
-    method public final boolean weakCompareAndSet(int, int);
-  }
-
-  public class AtomicIntegerArray implements java.io.Serializable {
-    ctor public AtomicIntegerArray(int);
-    ctor public AtomicIntegerArray(int[]);
-    method public final int accumulateAndGet(int, int, java.util.function.IntBinaryOperator);
-    method public final int addAndGet(int, int);
-    method public final boolean compareAndSet(int, int, int);
-    method public final int decrementAndGet(int);
-    method public final int get(int);
-    method public final int getAndAccumulate(int, int, java.util.function.IntBinaryOperator);
-    method public final int getAndAdd(int, int);
-    method public final int getAndDecrement(int);
-    method public final int getAndIncrement(int);
-    method public final int getAndSet(int, int);
-    method public final int getAndUpdate(int, java.util.function.IntUnaryOperator);
-    method public final int incrementAndGet(int);
-    method public final void lazySet(int, int);
-    method public final int length();
-    method public final void set(int, int);
-    method public final int updateAndGet(int, java.util.function.IntUnaryOperator);
-    method public final boolean weakCompareAndSet(int, int, int);
-  }
-
-  public abstract class AtomicIntegerFieldUpdater<T> {
-    ctor protected AtomicIntegerFieldUpdater();
-    method public final int accumulateAndGet(T, int, java.util.function.IntBinaryOperator);
-    method public int addAndGet(T, int);
-    method public abstract boolean compareAndSet(T, int, int);
-    method public int decrementAndGet(T);
-    method public abstract int get(T);
-    method public final int getAndAccumulate(T, int, java.util.function.IntBinaryOperator);
-    method public int getAndAdd(T, int);
-    method public int getAndDecrement(T);
-    method public int getAndIncrement(T);
-    method public int getAndSet(T, int);
-    method public final int getAndUpdate(T, java.util.function.IntUnaryOperator);
-    method public int incrementAndGet(T);
-    method public abstract void lazySet(T, int);
-    method public static <U> java.util.concurrent.atomic.AtomicIntegerFieldUpdater<U> newUpdater(Class<U>, String);
-    method public abstract void set(T, int);
-    method public final int updateAndGet(T, java.util.function.IntUnaryOperator);
-    method public abstract boolean weakCompareAndSet(T, int, int);
-  }
-
-  public class AtomicLong extends java.lang.Number implements java.io.Serializable {
-    ctor public AtomicLong(long);
-    ctor public AtomicLong();
-    method public final long accumulateAndGet(long, java.util.function.LongBinaryOperator);
-    method public final long addAndGet(long);
-    method public final boolean compareAndSet(long, long);
-    method public final long decrementAndGet();
-    method public double doubleValue();
-    method public float floatValue();
-    method public final long get();
-    method public final long getAndAccumulate(long, java.util.function.LongBinaryOperator);
-    method public final long getAndAdd(long);
-    method public final long getAndDecrement();
-    method public final long getAndIncrement();
-    method public final long getAndSet(long);
-    method public final long getAndUpdate(java.util.function.LongUnaryOperator);
-    method public final long incrementAndGet();
-    method public int intValue();
-    method public final void lazySet(long);
-    method public long longValue();
-    method public final void set(long);
-    method public final long updateAndGet(java.util.function.LongUnaryOperator);
-    method public final boolean weakCompareAndSet(long, long);
-  }
-
-  public class AtomicLongArray implements java.io.Serializable {
-    ctor public AtomicLongArray(int);
-    ctor public AtomicLongArray(long[]);
-    method public final long accumulateAndGet(int, long, java.util.function.LongBinaryOperator);
-    method public long addAndGet(int, long);
-    method public final boolean compareAndSet(int, long, long);
-    method public final long decrementAndGet(int);
-    method public final long get(int);
-    method public final long getAndAccumulate(int, long, java.util.function.LongBinaryOperator);
-    method public final long getAndAdd(int, long);
-    method public final long getAndDecrement(int);
-    method public final long getAndIncrement(int);
-    method public final long getAndSet(int, long);
-    method public final long getAndUpdate(int, java.util.function.LongUnaryOperator);
-    method public final long incrementAndGet(int);
-    method public final void lazySet(int, long);
-    method public final int length();
-    method public final void set(int, long);
-    method public final long updateAndGet(int, java.util.function.LongUnaryOperator);
-    method public final boolean weakCompareAndSet(int, long, long);
-  }
-
-  public abstract class AtomicLongFieldUpdater<T> {
-    ctor protected AtomicLongFieldUpdater();
-    method public final long accumulateAndGet(T, long, java.util.function.LongBinaryOperator);
-    method public long addAndGet(T, long);
-    method public abstract boolean compareAndSet(T, long, long);
-    method public long decrementAndGet(T);
-    method public abstract long get(T);
-    method public final long getAndAccumulate(T, long, java.util.function.LongBinaryOperator);
-    method public long getAndAdd(T, long);
-    method public long getAndDecrement(T);
-    method public long getAndIncrement(T);
-    method public long getAndSet(T, long);
-    method public final long getAndUpdate(T, java.util.function.LongUnaryOperator);
-    method public long incrementAndGet(T);
-    method public abstract void lazySet(T, long);
-    method public static <U> java.util.concurrent.atomic.AtomicLongFieldUpdater<U> newUpdater(Class<U>, String);
-    method public abstract void set(T, long);
-    method public final long updateAndGet(T, java.util.function.LongUnaryOperator);
-    method public abstract boolean weakCompareAndSet(T, long, long);
-  }
-
-  public class AtomicMarkableReference<V> {
-    ctor public AtomicMarkableReference(V, boolean);
-    method public boolean attemptMark(V, boolean);
-    method public boolean compareAndSet(V, V, boolean, boolean);
-    method public V get(boolean[]);
-    method public V getReference();
-    method public boolean isMarked();
-    method public void set(V, boolean);
-    method public boolean weakCompareAndSet(V, V, boolean, boolean);
-  }
-
-  public class AtomicReference<V> implements java.io.Serializable {
-    ctor public AtomicReference(V);
-    ctor public AtomicReference();
-    method public final V accumulateAndGet(V, java.util.function.BinaryOperator<V>);
-    method public final boolean compareAndSet(V, V);
-    method public final V get();
-    method public final V getAndAccumulate(V, java.util.function.BinaryOperator<V>);
-    method public final V getAndSet(V);
-    method public final V getAndUpdate(java.util.function.UnaryOperator<V>);
-    method public final void lazySet(V);
-    method public final void set(V);
-    method public final V updateAndGet(java.util.function.UnaryOperator<V>);
-    method public final boolean weakCompareAndSet(V, V);
-  }
-
-  public class AtomicReferenceArray<E> implements java.io.Serializable {
-    ctor public AtomicReferenceArray(int);
-    ctor public AtomicReferenceArray(E[]);
-    method public final E accumulateAndGet(int, E, java.util.function.BinaryOperator<E>);
-    method public final boolean compareAndSet(int, E, E);
-    method public final E get(int);
-    method public final E getAndAccumulate(int, E, java.util.function.BinaryOperator<E>);
-    method public final E getAndSet(int, E);
-    method public final E getAndUpdate(int, java.util.function.UnaryOperator<E>);
-    method public final void lazySet(int, E);
-    method public final int length();
-    method public final void set(int, E);
-    method public final E updateAndGet(int, java.util.function.UnaryOperator<E>);
-    method public final boolean weakCompareAndSet(int, E, E);
-  }
-
-  public abstract class AtomicReferenceFieldUpdater<T, V> {
-    ctor protected AtomicReferenceFieldUpdater();
-    method public final V accumulateAndGet(T, V, java.util.function.BinaryOperator<V>);
-    method public abstract boolean compareAndSet(T, V, V);
-    method public abstract V get(T);
-    method public final V getAndAccumulate(T, V, java.util.function.BinaryOperator<V>);
-    method public V getAndSet(T, V);
-    method public final V getAndUpdate(T, java.util.function.UnaryOperator<V>);
-    method public abstract void lazySet(T, V);
-    method public static <U, W> java.util.concurrent.atomic.AtomicReferenceFieldUpdater<U,W> newUpdater(Class<U>, Class<W>, String);
-    method public abstract void set(T, V);
-    method public final V updateAndGet(T, java.util.function.UnaryOperator<V>);
-    method public abstract boolean weakCompareAndSet(T, V, V);
-  }
-
-  public class AtomicStampedReference<V> {
-    ctor public AtomicStampedReference(V, int);
-    method public boolean attemptStamp(V, int);
-    method public boolean compareAndSet(V, V, int, int);
-    method public V get(int[]);
-    method public V getReference();
-    method public int getStamp();
-    method public void set(V, int);
-    method public boolean weakCompareAndSet(V, V, int, int);
-  }
-
-  public class DoubleAccumulator extends java.lang.Number implements java.io.Serializable {
-    ctor public DoubleAccumulator(java.util.function.DoubleBinaryOperator, double);
-    method public void accumulate(double);
-    method public double doubleValue();
-    method public float floatValue();
-    method public double get();
-    method public double getThenReset();
-    method public int intValue();
-    method public long longValue();
-    method public void reset();
-  }
-
-  public class DoubleAdder extends java.lang.Number implements java.io.Serializable {
-    ctor public DoubleAdder();
-    method public void add(double);
-    method public double doubleValue();
-    method public float floatValue();
-    method public int intValue();
-    method public long longValue();
-    method public void reset();
-    method public double sum();
-    method public double sumThenReset();
-  }
-
-  public class LongAccumulator extends java.lang.Number implements java.io.Serializable {
-    ctor public LongAccumulator(java.util.function.LongBinaryOperator, long);
-    method public void accumulate(long);
-    method public double doubleValue();
-    method public float floatValue();
-    method public long get();
-    method public long getThenReset();
-    method public int intValue();
-    method public long longValue();
-    method public void reset();
-  }
-
-  public class LongAdder extends java.lang.Number implements java.io.Serializable {
-    ctor public LongAdder();
-    method public void add(long);
-    method public void decrement();
-    method public double doubleValue();
-    method public float floatValue();
-    method public void increment();
-    method public int intValue();
-    method public long longValue();
-    method public void reset();
-    method public long sum();
-    method public long sumThenReset();
-  }
-
-}
-
-package java.util.concurrent.locks {
-
-  public abstract class AbstractOwnableSynchronizer implements java.io.Serializable {
-    ctor protected AbstractOwnableSynchronizer();
-    method protected final Thread getExclusiveOwnerThread();
-    method protected final void setExclusiveOwnerThread(Thread);
-  }
-
-  public abstract class AbstractQueuedLongSynchronizer extends java.util.concurrent.locks.AbstractOwnableSynchronizer implements java.io.Serializable {
-    ctor protected AbstractQueuedLongSynchronizer();
-    method public final void acquire(long);
-    method public final void acquireInterruptibly(long) throws java.lang.InterruptedException;
-    method public final void acquireShared(long);
-    method public final void acquireSharedInterruptibly(long) throws java.lang.InterruptedException;
-    method protected final boolean compareAndSetState(long, long);
-    method public final java.util.Collection<java.lang.Thread> getExclusiveQueuedThreads();
-    method public final Thread getFirstQueuedThread();
-    method public final int getQueueLength();
-    method public final java.util.Collection<java.lang.Thread> getQueuedThreads();
-    method public final java.util.Collection<java.lang.Thread> getSharedQueuedThreads();
-    method protected final long getState();
-    method public final int getWaitQueueLength(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.ConditionObject);
-    method public final java.util.Collection<java.lang.Thread> getWaitingThreads(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.ConditionObject);
-    method public final boolean hasContended();
-    method public final boolean hasQueuedPredecessors();
-    method public final boolean hasQueuedThreads();
-    method public final boolean hasWaiters(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.ConditionObject);
-    method protected boolean isHeldExclusively();
-    method public final boolean isQueued(Thread);
-    method public final boolean owns(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.ConditionObject);
-    method public final boolean release(long);
-    method public final boolean releaseShared(long);
-    method protected final void setState(long);
-    method protected boolean tryAcquire(long);
-    method public final boolean tryAcquireNanos(long, long) throws java.lang.InterruptedException;
-    method protected long tryAcquireShared(long);
-    method public final boolean tryAcquireSharedNanos(long, long) throws java.lang.InterruptedException;
-    method protected boolean tryRelease(long);
-    method protected boolean tryReleaseShared(long);
-  }
-
-  public class AbstractQueuedLongSynchronizer.ConditionObject implements java.util.concurrent.locks.Condition java.io.Serializable {
-    ctor public AbstractQueuedLongSynchronizer.ConditionObject();
-    method public final void await() throws java.lang.InterruptedException;
-    method public final boolean await(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public final long awaitNanos(long) throws java.lang.InterruptedException;
-    method public final void awaitUninterruptibly();
-    method public final boolean awaitUntil(java.util.Date) throws java.lang.InterruptedException;
-    method protected final int getWaitQueueLength();
-    method protected final java.util.Collection<java.lang.Thread> getWaitingThreads();
-    method protected final boolean hasWaiters();
-    method public final void signal();
-    method public final void signalAll();
-  }
-
-  public abstract class AbstractQueuedSynchronizer extends java.util.concurrent.locks.AbstractOwnableSynchronizer implements java.io.Serializable {
-    ctor protected AbstractQueuedSynchronizer();
-    method public final void acquire(int);
-    method public final void acquireInterruptibly(int) throws java.lang.InterruptedException;
-    method public final void acquireShared(int);
-    method public final void acquireSharedInterruptibly(int) throws java.lang.InterruptedException;
-    method protected final boolean compareAndSetState(int, int);
-    method public final java.util.Collection<java.lang.Thread> getExclusiveQueuedThreads();
-    method public final Thread getFirstQueuedThread();
-    method public final int getQueueLength();
-    method public final java.util.Collection<java.lang.Thread> getQueuedThreads();
-    method public final java.util.Collection<java.lang.Thread> getSharedQueuedThreads();
-    method protected final int getState();
-    method public final int getWaitQueueLength(java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject);
-    method public final java.util.Collection<java.lang.Thread> getWaitingThreads(java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject);
-    method public final boolean hasContended();
-    method public final boolean hasQueuedPredecessors();
-    method public final boolean hasQueuedThreads();
-    method public final boolean hasWaiters(java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject);
-    method protected boolean isHeldExclusively();
-    method public final boolean isQueued(Thread);
-    method public final boolean owns(java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject);
-    method public final boolean release(int);
-    method public final boolean releaseShared(int);
-    method protected final void setState(int);
-    method protected boolean tryAcquire(int);
-    method public final boolean tryAcquireNanos(int, long) throws java.lang.InterruptedException;
-    method protected int tryAcquireShared(int);
-    method public final boolean tryAcquireSharedNanos(int, long) throws java.lang.InterruptedException;
-    method protected boolean tryRelease(int);
-    method protected boolean tryReleaseShared(int);
-  }
-
-  public class AbstractQueuedSynchronizer.ConditionObject implements java.util.concurrent.locks.Condition java.io.Serializable {
-    ctor public AbstractQueuedSynchronizer.ConditionObject();
-    method public final void await() throws java.lang.InterruptedException;
-    method public final boolean await(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public final long awaitNanos(long) throws java.lang.InterruptedException;
-    method public final void awaitUninterruptibly();
-    method public final boolean awaitUntil(java.util.Date) throws java.lang.InterruptedException;
-    method protected final int getWaitQueueLength();
-    method protected final java.util.Collection<java.lang.Thread> getWaitingThreads();
-    method protected final boolean hasWaiters();
-    method public final void signal();
-    method public final void signalAll();
-  }
-
-  public interface Condition {
-    method public void await() throws java.lang.InterruptedException;
-    method public boolean await(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public long awaitNanos(long) throws java.lang.InterruptedException;
-    method public void awaitUninterruptibly();
-    method public boolean awaitUntil(java.util.Date) throws java.lang.InterruptedException;
-    method public void signal();
-    method public void signalAll();
-  }
-
-  public interface Lock {
-    method public void lock();
-    method public void lockInterruptibly() throws java.lang.InterruptedException;
-    method public java.util.concurrent.locks.Condition newCondition();
-    method public boolean tryLock();
-    method public boolean tryLock(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public void unlock();
-  }
-
-  public class LockSupport {
-    method public static Object getBlocker(Thread);
-    method public static void park(Object);
-    method public static void park();
-    method public static void parkNanos(Object, long);
-    method public static void parkNanos(long);
-    method public static void parkUntil(Object, long);
-    method public static void parkUntil(long);
-    method public static void unpark(Thread);
-  }
-
-  public interface ReadWriteLock {
-    method public java.util.concurrent.locks.Lock readLock();
-    method public java.util.concurrent.locks.Lock writeLock();
-  }
-
-  public class ReentrantLock implements java.util.concurrent.locks.Lock java.io.Serializable {
-    ctor public ReentrantLock();
-    ctor public ReentrantLock(boolean);
-    method public int getHoldCount();
-    method protected Thread getOwner();
-    method public final int getQueueLength();
-    method protected java.util.Collection<java.lang.Thread> getQueuedThreads();
-    method public int getWaitQueueLength(java.util.concurrent.locks.Condition);
-    method protected java.util.Collection<java.lang.Thread> getWaitingThreads(java.util.concurrent.locks.Condition);
-    method public final boolean hasQueuedThread(Thread);
-    method public final boolean hasQueuedThreads();
-    method public boolean hasWaiters(java.util.concurrent.locks.Condition);
-    method public final boolean isFair();
-    method public boolean isHeldByCurrentThread();
-    method public boolean isLocked();
-    method public void lock();
-    method public void lockInterruptibly() throws java.lang.InterruptedException;
-    method public java.util.concurrent.locks.Condition newCondition();
-    method public boolean tryLock();
-    method public boolean tryLock(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public void unlock();
-  }
-
-  public class ReentrantReadWriteLock implements java.util.concurrent.locks.ReadWriteLock java.io.Serializable {
-    ctor public ReentrantReadWriteLock();
-    ctor public ReentrantReadWriteLock(boolean);
-    method protected Thread getOwner();
-    method public final int getQueueLength();
-    method protected java.util.Collection<java.lang.Thread> getQueuedReaderThreads();
-    method protected java.util.Collection<java.lang.Thread> getQueuedThreads();
-    method protected java.util.Collection<java.lang.Thread> getQueuedWriterThreads();
-    method public int getReadHoldCount();
-    method public int getReadLockCount();
-    method public int getWaitQueueLength(java.util.concurrent.locks.Condition);
-    method protected java.util.Collection<java.lang.Thread> getWaitingThreads(java.util.concurrent.locks.Condition);
-    method public int getWriteHoldCount();
-    method public final boolean hasQueuedThread(Thread);
-    method public final boolean hasQueuedThreads();
-    method public boolean hasWaiters(java.util.concurrent.locks.Condition);
-    method public final boolean isFair();
-    method public boolean isWriteLocked();
-    method public boolean isWriteLockedByCurrentThread();
-    method public java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock readLock();
-    method public java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock writeLock();
-  }
-
-  public static class ReentrantReadWriteLock.ReadLock implements java.util.concurrent.locks.Lock java.io.Serializable {
-    ctor protected ReentrantReadWriteLock.ReadLock(java.util.concurrent.locks.ReentrantReadWriteLock);
-    method public void lock();
-    method public void lockInterruptibly() throws java.lang.InterruptedException;
-    method public java.util.concurrent.locks.Condition newCondition();
-    method public boolean tryLock();
-    method public boolean tryLock(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public void unlock();
-  }
-
-  public static class ReentrantReadWriteLock.WriteLock implements java.util.concurrent.locks.Lock java.io.Serializable {
-    ctor protected ReentrantReadWriteLock.WriteLock(java.util.concurrent.locks.ReentrantReadWriteLock);
-    method public int getHoldCount();
-    method public boolean isHeldByCurrentThread();
-    method public void lock();
-    method public void lockInterruptibly() throws java.lang.InterruptedException;
-    method public java.util.concurrent.locks.Condition newCondition();
-    method public boolean tryLock();
-    method public boolean tryLock(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public void unlock();
-  }
-
-  public class StampedLock implements java.io.Serializable {
-    ctor public StampedLock();
-    method public java.util.concurrent.locks.Lock asReadLock();
-    method public java.util.concurrent.locks.ReadWriteLock asReadWriteLock();
-    method public java.util.concurrent.locks.Lock asWriteLock();
-    method public int getReadLockCount();
-    method public boolean isReadLocked();
-    method public boolean isWriteLocked();
-    method public long readLock();
-    method public long readLockInterruptibly() throws java.lang.InterruptedException;
-    method public long tryConvertToOptimisticRead(long);
-    method public long tryConvertToReadLock(long);
-    method public long tryConvertToWriteLock(long);
-    method public long tryOptimisticRead();
-    method public long tryReadLock();
-    method public long tryReadLock(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public boolean tryUnlockRead();
-    method public boolean tryUnlockWrite();
-    method public long tryWriteLock();
-    method public long tryWriteLock(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public void unlock(long);
-    method public void unlockRead(long);
-    method public void unlockWrite(long);
-    method public boolean validate(long);
-    method public long writeLock();
-    method public long writeLockInterruptibly() throws java.lang.InterruptedException;
-  }
-
-}
-
-package java.util.function {
-
-  @java.lang.FunctionalInterface public interface BiConsumer<T, U> {
-    method public void accept(T, U);
-    method public default java.util.function.BiConsumer<T,U> andThen(java.util.function.BiConsumer<? super T,? super U>);
-  }
-
-  @java.lang.FunctionalInterface public interface BiFunction<T, U, R> {
-    method public default <V> java.util.function.BiFunction<T,U,V> andThen(java.util.function.Function<? super R,? extends V>);
-    method public R apply(T, U);
-  }
-
-  @java.lang.FunctionalInterface public interface BiPredicate<T, U> {
-    method public default java.util.function.BiPredicate<T,U> and(java.util.function.BiPredicate<? super T,? super U>);
-    method public default java.util.function.BiPredicate<T,U> negate();
-    method public default java.util.function.BiPredicate<T,U> or(java.util.function.BiPredicate<? super T,? super U>);
-    method public boolean test(T, U);
-  }
-
-  @java.lang.FunctionalInterface public interface BinaryOperator<T> extends java.util.function.BiFunction<T,T,T> {
-    method public static <T> java.util.function.BinaryOperator<T> maxBy(java.util.Comparator<? super T>);
-    method public static <T> java.util.function.BinaryOperator<T> minBy(java.util.Comparator<? super T>);
-  }
-
-  @java.lang.FunctionalInterface public interface BooleanSupplier {
-    method public boolean getAsBoolean();
-  }
-
-  @java.lang.FunctionalInterface public interface Consumer<T> {
-    method public void accept(T);
-    method public default java.util.function.Consumer<T> andThen(java.util.function.Consumer<? super T>);
-  }
-
-  @java.lang.FunctionalInterface public interface DoubleBinaryOperator {
-    method public double applyAsDouble(double, double);
-  }
-
-  @java.lang.FunctionalInterface public interface DoubleConsumer {
-    method public void accept(double);
-    method public default java.util.function.DoubleConsumer andThen(java.util.function.DoubleConsumer);
-  }
-
-  @java.lang.FunctionalInterface public interface DoubleFunction<R> {
-    method public R apply(double);
-  }
-
-  @java.lang.FunctionalInterface public interface DoublePredicate {
-    method public default java.util.function.DoublePredicate and(java.util.function.DoublePredicate);
-    method public default java.util.function.DoublePredicate negate();
-    method public default java.util.function.DoublePredicate or(java.util.function.DoublePredicate);
-    method public boolean test(double);
-  }
-
-  @java.lang.FunctionalInterface public interface DoubleSupplier {
-    method public double getAsDouble();
-  }
-
-  @java.lang.FunctionalInterface public interface DoubleToIntFunction {
-    method public int applyAsInt(double);
-  }
-
-  @java.lang.FunctionalInterface public interface DoubleToLongFunction {
-    method public long applyAsLong(double);
-  }
-
-  @java.lang.FunctionalInterface public interface DoubleUnaryOperator {
-    method public default java.util.function.DoubleUnaryOperator andThen(java.util.function.DoubleUnaryOperator);
-    method public double applyAsDouble(double);
-    method public default java.util.function.DoubleUnaryOperator compose(java.util.function.DoubleUnaryOperator);
-    method public static java.util.function.DoubleUnaryOperator identity();
-  }
-
-  @java.lang.FunctionalInterface public interface Function<T, R> {
-    method public default <V> java.util.function.Function<T,V> andThen(java.util.function.Function<? super R,? extends V>);
-    method public R apply(T);
-    method public default <V> java.util.function.Function<V,R> compose(java.util.function.Function<? super V,? extends T>);
-    method public static <T> java.util.function.Function<T,T> identity();
-  }
-
-  @java.lang.FunctionalInterface public interface IntBinaryOperator {
-    method public int applyAsInt(int, int);
-  }
-
-  @java.lang.FunctionalInterface public interface IntConsumer {
-    method public void accept(int);
-    method public default java.util.function.IntConsumer andThen(java.util.function.IntConsumer);
-  }
-
-  @java.lang.FunctionalInterface public interface IntFunction<R> {
-    method public R apply(int);
-  }
-
-  @java.lang.FunctionalInterface public interface IntPredicate {
-    method public default java.util.function.IntPredicate and(java.util.function.IntPredicate);
-    method public default java.util.function.IntPredicate negate();
-    method public default java.util.function.IntPredicate or(java.util.function.IntPredicate);
-    method public boolean test(int);
-  }
-
-  @java.lang.FunctionalInterface public interface IntSupplier {
-    method public int getAsInt();
-  }
-
-  @java.lang.FunctionalInterface public interface IntToDoubleFunction {
-    method public double applyAsDouble(int);
-  }
-
-  @java.lang.FunctionalInterface public interface IntToLongFunction {
-    method public long applyAsLong(int);
-  }
-
-  @java.lang.FunctionalInterface public interface IntUnaryOperator {
-    method public default java.util.function.IntUnaryOperator andThen(java.util.function.IntUnaryOperator);
-    method public int applyAsInt(int);
-    method public default java.util.function.IntUnaryOperator compose(java.util.function.IntUnaryOperator);
-    method public static java.util.function.IntUnaryOperator identity();
-  }
-
-  @java.lang.FunctionalInterface public interface LongBinaryOperator {
-    method public long applyAsLong(long, long);
-  }
-
-  @java.lang.FunctionalInterface public interface LongConsumer {
-    method public void accept(long);
-    method public default java.util.function.LongConsumer andThen(java.util.function.LongConsumer);
-  }
-
-  @java.lang.FunctionalInterface public interface LongFunction<R> {
-    method public R apply(long);
-  }
-
-  @java.lang.FunctionalInterface public interface LongPredicate {
-    method public default java.util.function.LongPredicate and(java.util.function.LongPredicate);
-    method public default java.util.function.LongPredicate negate();
-    method public default java.util.function.LongPredicate or(java.util.function.LongPredicate);
-    method public boolean test(long);
-  }
-
-  @java.lang.FunctionalInterface public interface LongSupplier {
-    method public long getAsLong();
-  }
-
-  @java.lang.FunctionalInterface public interface LongToDoubleFunction {
-    method public double applyAsDouble(long);
-  }
-
-  @java.lang.FunctionalInterface public interface LongToIntFunction {
-    method public int applyAsInt(long);
-  }
-
-  @java.lang.FunctionalInterface public interface LongUnaryOperator {
-    method public default java.util.function.LongUnaryOperator andThen(java.util.function.LongUnaryOperator);
-    method public long applyAsLong(long);
-    method public default java.util.function.LongUnaryOperator compose(java.util.function.LongUnaryOperator);
-    method public static java.util.function.LongUnaryOperator identity();
-  }
-
-  @java.lang.FunctionalInterface public interface ObjDoubleConsumer<T> {
-    method public void accept(T, double);
-  }
-
-  @java.lang.FunctionalInterface public interface ObjIntConsumer<T> {
-    method public void accept(T, int);
-  }
-
-  @java.lang.FunctionalInterface public interface ObjLongConsumer<T> {
-    method public void accept(T, long);
-  }
-
-  @java.lang.FunctionalInterface public interface Predicate<T> {
-    method public default java.util.function.Predicate<T> and(java.util.function.Predicate<? super T>);
-    method public static <T> java.util.function.Predicate<T> isEqual(Object);
-    method public default java.util.function.Predicate<T> negate();
-    method public default java.util.function.Predicate<T> or(java.util.function.Predicate<? super T>);
-    method public boolean test(T);
-  }
-
-  @java.lang.FunctionalInterface public interface Supplier<T> {
-    method public T get();
-  }
-
-  @java.lang.FunctionalInterface public interface ToDoubleBiFunction<T, U> {
-    method public double applyAsDouble(T, U);
-  }
-
-  @java.lang.FunctionalInterface public interface ToDoubleFunction<T> {
-    method public double applyAsDouble(T);
-  }
-
-  @java.lang.FunctionalInterface public interface ToIntBiFunction<T, U> {
-    method public int applyAsInt(T, U);
-  }
-
-  @java.lang.FunctionalInterface public interface ToIntFunction<T> {
-    method public int applyAsInt(T);
-  }
-
-  @java.lang.FunctionalInterface public interface ToLongBiFunction<T, U> {
-    method public long applyAsLong(T, U);
-  }
-
-  @java.lang.FunctionalInterface public interface ToLongFunction<T> {
-    method public long applyAsLong(T);
-  }
-
-  @java.lang.FunctionalInterface public interface UnaryOperator<T> extends java.util.function.Function<T,T> {
-    method public static <T> java.util.function.UnaryOperator<T> identity();
-  }
-
-}
-
-package java.util.jar {
-
-  public class Attributes implements java.lang.Cloneable java.util.Map<java.lang.Object,java.lang.Object> {
-    ctor public Attributes();
-    ctor public Attributes(int);
-    ctor public Attributes(java.util.jar.Attributes);
-    method public void clear();
-    method public Object clone();
-    method public boolean containsKey(Object);
-    method public boolean containsValue(Object);
-    method public java.util.Set<java.util.Map.Entry<java.lang.Object,java.lang.Object>> entrySet();
-    method public Object get(Object);
-    method public String getValue(String);
-    method public String getValue(java.util.jar.Attributes.Name);
-    method public boolean isEmpty();
-    method public java.util.Set<java.lang.Object> keySet();
-    method public Object put(Object, Object);
-    method public void putAll(java.util.Map<?,?>);
-    method public String putValue(String, String);
-    method public Object remove(Object);
-    method public int size();
-    method public java.util.Collection<java.lang.Object> values();
-    field protected java.util.Map<java.lang.Object,java.lang.Object> map;
-  }
-
-  public static class Attributes.Name {
-    ctor public Attributes.Name(String);
-    field public static final java.util.jar.Attributes.Name CLASS_PATH;
-    field public static final java.util.jar.Attributes.Name CONTENT_TYPE;
-    field @Deprecated public static final java.util.jar.Attributes.Name EXTENSION_INSTALLATION;
-    field public static final java.util.jar.Attributes.Name EXTENSION_LIST;
-    field public static final java.util.jar.Attributes.Name EXTENSION_NAME;
-    field public static final java.util.jar.Attributes.Name IMPLEMENTATION_TITLE;
-    field @Deprecated public static final java.util.jar.Attributes.Name IMPLEMENTATION_URL;
-    field public static final java.util.jar.Attributes.Name IMPLEMENTATION_VENDOR;
-    field @Deprecated public static final java.util.jar.Attributes.Name IMPLEMENTATION_VENDOR_ID;
-    field public static final java.util.jar.Attributes.Name IMPLEMENTATION_VERSION;
-    field public static final java.util.jar.Attributes.Name MAIN_CLASS;
-    field public static final java.util.jar.Attributes.Name MANIFEST_VERSION;
-    field public static final java.util.jar.Attributes.Name SEALED;
-    field public static final java.util.jar.Attributes.Name SIGNATURE_VERSION;
-    field public static final java.util.jar.Attributes.Name SPECIFICATION_TITLE;
-    field public static final java.util.jar.Attributes.Name SPECIFICATION_VENDOR;
-    field public static final java.util.jar.Attributes.Name SPECIFICATION_VERSION;
-  }
-
-  public class JarEntry extends java.util.zip.ZipEntry {
-    ctor public JarEntry(String);
-    ctor public JarEntry(java.util.zip.ZipEntry);
-    ctor public JarEntry(java.util.jar.JarEntry);
-    method public java.util.jar.Attributes getAttributes() throws java.io.IOException;
-    method public java.security.cert.Certificate[] getCertificates();
-    method public java.security.CodeSigner[] getCodeSigners();
-    field public static final int CENATT = 36; // 0x24
-    field public static final int CENATX = 38; // 0x26
-    field public static final int CENCOM = 32; // 0x20
-    field public static final int CENCRC = 16; // 0x10
-    field public static final int CENDSK = 34; // 0x22
-    field public static final int CENEXT = 30; // 0x1e
-    field public static final int CENFLG = 8; // 0x8
-    field public static final int CENHDR = 46; // 0x2e
-    field public static final int CENHOW = 10; // 0xa
-    field public static final int CENLEN = 24; // 0x18
-    field public static final int CENNAM = 28; // 0x1c
-    field public static final int CENOFF = 42; // 0x2a
-    field public static final long CENSIG = 33639248L; // 0x2014b50L
-    field public static final int CENSIZ = 20; // 0x14
-    field public static final int CENTIM = 12; // 0xc
-    field public static final int CENVEM = 4; // 0x4
-    field public static final int CENVER = 6; // 0x6
-    field public static final int ENDCOM = 20; // 0x14
-    field public static final int ENDHDR = 22; // 0x16
-    field public static final int ENDOFF = 16; // 0x10
-    field public static final long ENDSIG = 101010256L; // 0x6054b50L
-    field public static final int ENDSIZ = 12; // 0xc
-    field public static final int ENDSUB = 8; // 0x8
-    field public static final int ENDTOT = 10; // 0xa
-    field public static final int EXTCRC = 4; // 0x4
-    field public static final int EXTHDR = 16; // 0x10
-    field public static final int EXTLEN = 12; // 0xc
-    field public static final long EXTSIG = 134695760L; // 0x8074b50L
-    field public static final int EXTSIZ = 8; // 0x8
-    field public static final int LOCCRC = 14; // 0xe
-    field public static final int LOCEXT = 28; // 0x1c
-    field public static final int LOCFLG = 6; // 0x6
-    field public static final int LOCHDR = 30; // 0x1e
-    field public static final int LOCHOW = 8; // 0x8
-    field public static final int LOCLEN = 22; // 0x16
-    field public static final int LOCNAM = 26; // 0x1a
-    field public static final long LOCSIG = 67324752L; // 0x4034b50L
-    field public static final int LOCSIZ = 18; // 0x12
-    field public static final int LOCTIM = 10; // 0xa
-    field public static final int LOCVER = 4; // 0x4
-  }
-
-  public class JarException extends java.util.zip.ZipException {
-    ctor public JarException();
-    ctor public JarException(String);
-  }
-
-  public class JarFile extends java.util.zip.ZipFile {
-    ctor public JarFile(String) throws java.io.IOException;
-    ctor public JarFile(String, boolean) throws java.io.IOException;
-    ctor public JarFile(java.io.File) throws java.io.IOException;
-    ctor public JarFile(java.io.File, boolean) throws java.io.IOException;
-    ctor public JarFile(java.io.File, boolean, int) throws java.io.IOException;
-    method public java.util.Enumeration<java.util.jar.JarEntry> entries();
-    method public java.util.jar.JarEntry getJarEntry(String);
-    method public java.util.jar.Manifest getManifest() throws java.io.IOException;
-    method public java.util.stream.Stream<java.util.jar.JarEntry> stream();
-    field public static final int CENATT = 36; // 0x24
-    field public static final int CENATX = 38; // 0x26
-    field public static final int CENCOM = 32; // 0x20
-    field public static final int CENCRC = 16; // 0x10
-    field public static final int CENDSK = 34; // 0x22
-    field public static final int CENEXT = 30; // 0x1e
-    field public static final int CENFLG = 8; // 0x8
-    field public static final int CENHDR = 46; // 0x2e
-    field public static final int CENHOW = 10; // 0xa
-    field public static final int CENLEN = 24; // 0x18
-    field public static final int CENNAM = 28; // 0x1c
-    field public static final int CENOFF = 42; // 0x2a
-    field public static final long CENSIG = 33639248L; // 0x2014b50L
-    field public static final int CENSIZ = 20; // 0x14
-    field public static final int CENTIM = 12; // 0xc
-    field public static final int CENVEM = 4; // 0x4
-    field public static final int CENVER = 6; // 0x6
-    field public static final int ENDCOM = 20; // 0x14
-    field public static final int ENDHDR = 22; // 0x16
-    field public static final int ENDOFF = 16; // 0x10
-    field public static final long ENDSIG = 101010256L; // 0x6054b50L
-    field public static final int ENDSIZ = 12; // 0xc
-    field public static final int ENDSUB = 8; // 0x8
-    field public static final int ENDTOT = 10; // 0xa
-    field public static final int EXTCRC = 4; // 0x4
-    field public static final int EXTHDR = 16; // 0x10
-    field public static final int EXTLEN = 12; // 0xc
-    field public static final long EXTSIG = 134695760L; // 0x8074b50L
-    field public static final int EXTSIZ = 8; // 0x8
-    field public static final int LOCCRC = 14; // 0xe
-    field public static final int LOCEXT = 28; // 0x1c
-    field public static final int LOCFLG = 6; // 0x6
-    field public static final int LOCHDR = 30; // 0x1e
-    field public static final int LOCHOW = 8; // 0x8
-    field public static final int LOCLEN = 22; // 0x16
-    field public static final int LOCNAM = 26; // 0x1a
-    field public static final long LOCSIG = 67324752L; // 0x4034b50L
-    field public static final int LOCSIZ = 18; // 0x12
-    field public static final int LOCTIM = 10; // 0xa
-    field public static final int LOCVER = 4; // 0x4
-    field public static final String MANIFEST_NAME = "META-INF/MANIFEST.MF";
-  }
-
-  public class JarInputStream extends java.util.zip.ZipInputStream {
-    ctor public JarInputStream(java.io.InputStream) throws java.io.IOException;
-    ctor public JarInputStream(java.io.InputStream, boolean) throws java.io.IOException;
-    method public java.util.jar.Manifest getManifest();
-    method public java.util.jar.JarEntry getNextJarEntry() throws java.io.IOException;
-    field public static final int CENATT = 36; // 0x24
-    field public static final int CENATX = 38; // 0x26
-    field public static final int CENCOM = 32; // 0x20
-    field public static final int CENCRC = 16; // 0x10
-    field public static final int CENDSK = 34; // 0x22
-    field public static final int CENEXT = 30; // 0x1e
-    field public static final int CENFLG = 8; // 0x8
-    field public static final int CENHDR = 46; // 0x2e
-    field public static final int CENHOW = 10; // 0xa
-    field public static final int CENLEN = 24; // 0x18
-    field public static final int CENNAM = 28; // 0x1c
-    field public static final int CENOFF = 42; // 0x2a
-    field public static final long CENSIG = 33639248L; // 0x2014b50L
-    field public static final int CENSIZ = 20; // 0x14
-    field public static final int CENTIM = 12; // 0xc
-    field public static final int CENVEM = 4; // 0x4
-    field public static final int CENVER = 6; // 0x6
-    field public static final int ENDCOM = 20; // 0x14
-    field public static final int ENDHDR = 22; // 0x16
-    field public static final int ENDOFF = 16; // 0x10
-    field public static final long ENDSIG = 101010256L; // 0x6054b50L
-    field public static final int ENDSIZ = 12; // 0xc
-    field public static final int ENDSUB = 8; // 0x8
-    field public static final int ENDTOT = 10; // 0xa
-    field public static final int EXTCRC = 4; // 0x4
-    field public static final int EXTHDR = 16; // 0x10
-    field public static final int EXTLEN = 12; // 0xc
-    field public static final long EXTSIG = 134695760L; // 0x8074b50L
-    field public static final int EXTSIZ = 8; // 0x8
-    field public static final int LOCCRC = 14; // 0xe
-    field public static final int LOCEXT = 28; // 0x1c
-    field public static final int LOCFLG = 6; // 0x6
-    field public static final int LOCHDR = 30; // 0x1e
-    field public static final int LOCHOW = 8; // 0x8
-    field public static final int LOCLEN = 22; // 0x16
-    field public static final int LOCNAM = 26; // 0x1a
-    field public static final long LOCSIG = 67324752L; // 0x4034b50L
-    field public static final int LOCSIZ = 18; // 0x12
-    field public static final int LOCTIM = 10; // 0xa
-    field public static final int LOCVER = 4; // 0x4
-  }
-
-  public class JarOutputStream extends java.util.zip.ZipOutputStream {
-    ctor public JarOutputStream(java.io.OutputStream, java.util.jar.Manifest) throws java.io.IOException;
-    ctor public JarOutputStream(java.io.OutputStream) throws java.io.IOException;
-    field public static final int CENATT = 36; // 0x24
-    field public static final int CENATX = 38; // 0x26
-    field public static final int CENCOM = 32; // 0x20
-    field public static final int CENCRC = 16; // 0x10
-    field public static final int CENDSK = 34; // 0x22
-    field public static final int CENEXT = 30; // 0x1e
-    field public static final int CENFLG = 8; // 0x8
-    field public static final int CENHDR = 46; // 0x2e
-    field public static final int CENHOW = 10; // 0xa
-    field public static final int CENLEN = 24; // 0x18
-    field public static final int CENNAM = 28; // 0x1c
-    field public static final int CENOFF = 42; // 0x2a
-    field public static final long CENSIG = 33639248L; // 0x2014b50L
-    field public static final int CENSIZ = 20; // 0x14
-    field public static final int CENTIM = 12; // 0xc
-    field public static final int CENVEM = 4; // 0x4
-    field public static final int CENVER = 6; // 0x6
-    field public static final int ENDCOM = 20; // 0x14
-    field public static final int ENDHDR = 22; // 0x16
-    field public static final int ENDOFF = 16; // 0x10
-    field public static final long ENDSIG = 101010256L; // 0x6054b50L
-    field public static final int ENDSIZ = 12; // 0xc
-    field public static final int ENDSUB = 8; // 0x8
-    field public static final int ENDTOT = 10; // 0xa
-    field public static final int EXTCRC = 4; // 0x4
-    field public static final int EXTHDR = 16; // 0x10
-    field public static final int EXTLEN = 12; // 0xc
-    field public static final long EXTSIG = 134695760L; // 0x8074b50L
-    field public static final int EXTSIZ = 8; // 0x8
-    field public static final int LOCCRC = 14; // 0xe
-    field public static final int LOCEXT = 28; // 0x1c
-    field public static final int LOCFLG = 6; // 0x6
-    field public static final int LOCHDR = 30; // 0x1e
-    field public static final int LOCHOW = 8; // 0x8
-    field public static final int LOCLEN = 22; // 0x16
-    field public static final int LOCNAM = 26; // 0x1a
-    field public static final long LOCSIG = 67324752L; // 0x4034b50L
-    field public static final int LOCSIZ = 18; // 0x12
-    field public static final int LOCTIM = 10; // 0xa
-    field public static final int LOCVER = 4; // 0x4
-  }
-
-  public class Manifest implements java.lang.Cloneable {
-    ctor public Manifest();
-    ctor public Manifest(java.io.InputStream) throws java.io.IOException;
-    ctor public Manifest(java.util.jar.Manifest);
-    method public void clear();
-    method public Object clone();
-    method public java.util.jar.Attributes getAttributes(String);
-    method public java.util.Map<java.lang.String,java.util.jar.Attributes> getEntries();
-    method public java.util.jar.Attributes getMainAttributes();
-    method public void read(java.io.InputStream) throws java.io.IOException;
-    method public void write(java.io.OutputStream) throws java.io.IOException;
-  }
-
-  public abstract class Pack200 {
-    method public static java.util.jar.Pack200.Packer newPacker();
-    method public static java.util.jar.Pack200.Unpacker newUnpacker();
-  }
-
-  public static interface Pack200.Packer {
-    method @Deprecated public default void addPropertyChangeListener(java.beans.PropertyChangeListener);
-    method public void pack(java.util.jar.JarFile, java.io.OutputStream) throws java.io.IOException;
-    method public void pack(java.util.jar.JarInputStream, java.io.OutputStream) throws java.io.IOException;
-    method public java.util.SortedMap<java.lang.String,java.lang.String> properties();
-    method @Deprecated public default void removePropertyChangeListener(java.beans.PropertyChangeListener);
-    field public static final String CLASS_ATTRIBUTE_PFX = "pack.class.attribute.";
-    field public static final String CODE_ATTRIBUTE_PFX = "pack.code.attribute.";
-    field public static final String DEFLATE_HINT = "pack.deflate.hint";
-    field public static final String EFFORT = "pack.effort";
-    field public static final String ERROR = "error";
-    field public static final String FALSE = "false";
-    field public static final String FIELD_ATTRIBUTE_PFX = "pack.field.attribute.";
-    field public static final String KEEP = "keep";
-    field public static final String KEEP_FILE_ORDER = "pack.keep.file.order";
-    field public static final String LATEST = "latest";
-    field public static final String METHOD_ATTRIBUTE_PFX = "pack.method.attribute.";
-    field public static final String MODIFICATION_TIME = "pack.modification.time";
-    field public static final String PASS = "pass";
-    field public static final String PASS_FILE_PFX = "pack.pass.file.";
-    field public static final String PROGRESS = "pack.progress";
-    field public static final String SEGMENT_LIMIT = "pack.segment.limit";
-    field public static final String STRIP = "strip";
-    field public static final String TRUE = "true";
-    field public static final String UNKNOWN_ATTRIBUTE = "pack.unknown.attribute";
-  }
-
-  public static interface Pack200.Unpacker {
-    method @Deprecated public default void addPropertyChangeListener(java.beans.PropertyChangeListener);
-    method public java.util.SortedMap<java.lang.String,java.lang.String> properties();
-    method @Deprecated public default void removePropertyChangeListener(java.beans.PropertyChangeListener);
-    method public void unpack(java.io.InputStream, java.util.jar.JarOutputStream) throws java.io.IOException;
-    method public void unpack(java.io.File, java.util.jar.JarOutputStream) throws java.io.IOException;
-    field public static final String DEFLATE_HINT = "unpack.deflate.hint";
-    field public static final String FALSE = "false";
-    field public static final String KEEP = "keep";
-    field public static final String PROGRESS = "unpack.progress";
-    field public static final String TRUE = "true";
-  }
-
-}
-
-package java.util.logging {
-
-  public class ConsoleHandler extends java.util.logging.StreamHandler {
-    ctor public ConsoleHandler();
-    method public void close();
-  }
-
-  public class ErrorManager {
-    ctor public ErrorManager();
-    method public void error(String, Exception, int);
-    field public static final int CLOSE_FAILURE = 3; // 0x3
-    field public static final int FLUSH_FAILURE = 2; // 0x2
-    field public static final int FORMAT_FAILURE = 5; // 0x5
-    field public static final int GENERIC_FAILURE = 0; // 0x0
-    field public static final int OPEN_FAILURE = 4; // 0x4
-    field public static final int WRITE_FAILURE = 1; // 0x1
-  }
-
-  public class FileHandler extends java.util.logging.StreamHandler {
-    ctor public FileHandler() throws java.io.IOException, java.lang.SecurityException;
-    ctor public FileHandler(String) throws java.io.IOException, java.lang.SecurityException;
-    ctor public FileHandler(String, boolean) throws java.io.IOException, java.lang.SecurityException;
-    ctor public FileHandler(String, int, int) throws java.io.IOException, java.lang.SecurityException;
-    ctor public FileHandler(String, int, int, boolean) throws java.io.IOException, java.lang.SecurityException;
-  }
-
-  @java.lang.FunctionalInterface public interface Filter {
-    method public boolean isLoggable(java.util.logging.LogRecord);
-  }
-
-  public abstract class Formatter {
-    ctor protected Formatter();
-    method public abstract String format(java.util.logging.LogRecord);
-    method public String formatMessage(java.util.logging.LogRecord);
-    method public String getHead(java.util.logging.Handler);
-    method public String getTail(java.util.logging.Handler);
-  }
-
-  public abstract class Handler {
-    ctor protected Handler();
-    method public abstract void close() throws java.lang.SecurityException;
-    method public abstract void flush();
-    method public String getEncoding();
-    method public java.util.logging.ErrorManager getErrorManager();
-    method public java.util.logging.Filter getFilter();
-    method public java.util.logging.Formatter getFormatter();
-    method public java.util.logging.Level getLevel();
-    method public boolean isLoggable(java.util.logging.LogRecord);
-    method public abstract void publish(java.util.logging.LogRecord);
-    method protected void reportError(String, Exception, int);
-    method public void setEncoding(String) throws java.lang.SecurityException, java.io.UnsupportedEncodingException;
-    method public void setErrorManager(java.util.logging.ErrorManager);
-    method public void setFilter(java.util.logging.Filter) throws java.lang.SecurityException;
-    method public void setFormatter(java.util.logging.Formatter) throws java.lang.SecurityException;
-    method public void setLevel(java.util.logging.Level) throws java.lang.SecurityException;
-  }
-
-  public class Level implements java.io.Serializable {
-    ctor protected Level(@NonNull String, int);
-    ctor protected Level(@NonNull String, int, @Nullable String);
-    method @NonNull public String getLocalizedName();
-    method @NonNull public String getName();
-    method @Nullable public String getResourceBundleName();
-    method public final int intValue();
-    method @NonNull public static java.util.logging.Level parse(@NonNull String) throws java.lang.IllegalArgumentException;
-    method @NonNull public final String toString();
-    field @NonNull public static final java.util.logging.Level ALL;
-    field @NonNull public static final java.util.logging.Level CONFIG;
-    field @NonNull public static final java.util.logging.Level FINE;
-    field @NonNull public static final java.util.logging.Level FINER;
-    field @NonNull public static final java.util.logging.Level FINEST;
-    field @NonNull public static final java.util.logging.Level INFO;
-    field @NonNull public static final java.util.logging.Level OFF;
-    field @NonNull public static final java.util.logging.Level SEVERE;
-    field @NonNull public static final java.util.logging.Level WARNING;
-  }
-
-  public class LogManager {
-    ctor protected LogManager();
-    method public boolean addLogger(java.util.logging.Logger);
-    method @Deprecated public void addPropertyChangeListener(java.beans.PropertyChangeListener) throws java.lang.SecurityException;
-    method public void checkAccess() throws java.lang.SecurityException;
-    method public static java.util.logging.LogManager getLogManager();
-    method public java.util.logging.Logger getLogger(String);
-    method public java.util.Enumeration<java.lang.String> getLoggerNames();
-    method public static java.util.logging.LoggingMXBean getLoggingMXBean();
-    method public String getProperty(String);
-    method public void readConfiguration() throws java.io.IOException, java.lang.SecurityException;
-    method public void readConfiguration(java.io.InputStream) throws java.io.IOException, java.lang.SecurityException;
-    method @Deprecated public void removePropertyChangeListener(java.beans.PropertyChangeListener) throws java.lang.SecurityException;
-    method public void reset() throws java.lang.SecurityException;
-    field public static final String LOGGING_MXBEAN_NAME = "java.util.logging:type=Logging";
-  }
-
-  public class LogRecord implements java.io.Serializable {
-    ctor public LogRecord(java.util.logging.Level, String);
-    method public java.util.logging.Level getLevel();
-    method public String getLoggerName();
-    method public String getMessage();
-    method public long getMillis();
-    method public Object[] getParameters();
-    method public java.util.ResourceBundle getResourceBundle();
-    method public String getResourceBundleName();
-    method public long getSequenceNumber();
-    method public String getSourceClassName();
-    method public String getSourceMethodName();
-    method public int getThreadID();
-    method public Throwable getThrown();
-    method public void setLevel(java.util.logging.Level);
-    method public void setLoggerName(String);
-    method public void setMessage(String);
-    method public void setMillis(long);
-    method public void setParameters(Object[]);
-    method public void setResourceBundle(java.util.ResourceBundle);
-    method public void setResourceBundleName(String);
-    method public void setSequenceNumber(long);
-    method public void setSourceClassName(String);
-    method public void setSourceMethodName(String);
-    method public void setThreadID(int);
-    method public void setThrown(Throwable);
-  }
-
-  public class Logger {
-    ctor protected Logger(@Nullable String, @Nullable String);
-    method public void addHandler(@NonNull java.util.logging.Handler) throws java.lang.SecurityException;
-    method public void config(@Nullable String);
-    method public void config(@NonNull java.util.function.Supplier<java.lang.String>);
-    method public void entering(@Nullable String, @Nullable String);
-    method public void entering(@Nullable String, @Nullable String, @Nullable Object);
-    method public void entering(@Nullable String, @Nullable String, @Nullable Object[]);
-    method public void exiting(@Nullable String, @Nullable String);
-    method public void exiting(@Nullable String, @Nullable String, @Nullable Object);
-    method public void fine(@Nullable String);
-    method public void fine(@NonNull java.util.function.Supplier<java.lang.String>);
-    method public void finer(@Nullable String);
-    method public void finer(@NonNull java.util.function.Supplier<java.lang.String>);
-    method public void finest(@Nullable String);
-    method public void finest(@NonNull java.util.function.Supplier<java.lang.String>);
-    method @NonNull public static java.util.logging.Logger getAnonymousLogger();
-    method @NonNull public static java.util.logging.Logger getAnonymousLogger(@Nullable String);
-    method @Nullable public java.util.logging.Filter getFilter();
-    method @NonNull public static final java.util.logging.Logger getGlobal();
-    method @NonNull public java.util.logging.Handler[] getHandlers();
-    method @Nullable public java.util.logging.Level getLevel();
-    method @NonNull public static java.util.logging.Logger getLogger(@NonNull String);
-    method @NonNull public static java.util.logging.Logger getLogger(@NonNull String, @Nullable String);
-    method @Nullable public String getName();
-    method @Nullable public java.util.logging.Logger getParent();
-    method @Nullable public java.util.ResourceBundle getResourceBundle();
-    method @Nullable public String getResourceBundleName();
-    method public boolean getUseParentHandlers();
-    method public void info(@Nullable String);
-    method public void info(@NonNull java.util.function.Supplier<java.lang.String>);
-    method public boolean isLoggable(@NonNull java.util.logging.Level);
-    method public void log(@NonNull java.util.logging.LogRecord);
-    method public void log(@NonNull java.util.logging.Level, @Nullable String);
-    method public void log(@NonNull java.util.logging.Level, @NonNull java.util.function.Supplier<java.lang.String>);
-    method public void log(@NonNull java.util.logging.Level, @Nullable String, @Nullable Object);
-    method public void log(@NonNull java.util.logging.Level, @Nullable String, @Nullable Object[]);
-    method public void log(@NonNull java.util.logging.Level, @Nullable String, @Nullable Throwable);
-    method public void log(@NonNull java.util.logging.Level, @Nullable Throwable, @NonNull java.util.function.Supplier<java.lang.String>);
-    method public void logp(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String);
-    method public void logp(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @NonNull java.util.function.Supplier<java.lang.String>);
-    method public void logp(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable Object);
-    method public void logp(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable Object[]);
-    method public void logp(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable Throwable);
-    method public void logp(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable Throwable, @NonNull java.util.function.Supplier<java.lang.String>);
-    method @Deprecated public void logrb(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable String);
-    method @Deprecated public void logrb(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable String, @Nullable Object);
-    method @Deprecated public void logrb(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable String, @Nullable Object[]);
-    method public void logrb(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable java.util.ResourceBundle, @Nullable String, @Nullable java.lang.Object...);
-    method @Deprecated public void logrb(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable String, @Nullable Throwable);
-    method public void logrb(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable java.util.ResourceBundle, @Nullable String, @Nullable Throwable);
-    method public void removeHandler(@Nullable java.util.logging.Handler) throws java.lang.SecurityException;
-    method public void setFilter(@Nullable java.util.logging.Filter) throws java.lang.SecurityException;
-    method public void setLevel(@Nullable java.util.logging.Level) throws java.lang.SecurityException;
-    method public void setParent(@NonNull java.util.logging.Logger);
-    method public void setResourceBundle(@NonNull java.util.ResourceBundle);
-    method public void setUseParentHandlers(boolean);
-    method public void severe(@Nullable String);
-    method public void severe(@NonNull java.util.function.Supplier<java.lang.String>);
-    method public void throwing(@Nullable String, @Nullable String, @Nullable Throwable);
-    method public void warning(@Nullable String);
-    method public void warning(@NonNull java.util.function.Supplier<java.lang.String>);
-    field @NonNull public static final String GLOBAL_LOGGER_NAME = "global";
-    field @Deprecated @NonNull public static final java.util.logging.Logger global;
-  }
-
-  public interface LoggingMXBean {
-    method public String getLoggerLevel(String);
-    method public java.util.List<java.lang.String> getLoggerNames();
-    method public String getParentLoggerName(String);
-    method public void setLoggerLevel(String, String);
-  }
-
-  public final class LoggingPermission extends java.security.BasicPermission {
-    ctor public LoggingPermission(String, String) throws java.lang.IllegalArgumentException;
-  }
-
-  public class MemoryHandler extends java.util.logging.Handler {
-    ctor public MemoryHandler();
-    ctor public MemoryHandler(java.util.logging.Handler, int, java.util.logging.Level);
-    method public void close() throws java.lang.SecurityException;
-    method public void flush();
-    method public java.util.logging.Level getPushLevel();
-    method public void publish(java.util.logging.LogRecord);
-    method public void push();
-    method public void setPushLevel(java.util.logging.Level) throws java.lang.SecurityException;
-  }
-
-  public class SimpleFormatter extends java.util.logging.Formatter {
-    ctor public SimpleFormatter();
-    method public String format(java.util.logging.LogRecord);
-  }
-
-  public class SocketHandler extends java.util.logging.StreamHandler {
-    ctor public SocketHandler() throws java.io.IOException;
-    ctor public SocketHandler(String, int) throws java.io.IOException;
-  }
-
-  public class StreamHandler extends java.util.logging.Handler {
-    ctor public StreamHandler();
-    ctor public StreamHandler(java.io.OutputStream, java.util.logging.Formatter);
-    method public void close() throws java.lang.SecurityException;
-    method public void flush();
-    method public void publish(java.util.logging.LogRecord);
-    method protected void setOutputStream(java.io.OutputStream) throws java.lang.SecurityException;
-  }
-
-  public class XMLFormatter extends java.util.logging.Formatter {
-    ctor public XMLFormatter();
-    method public String format(java.util.logging.LogRecord);
-  }
-
-}
-
-package java.util.prefs {
-
-  public abstract class AbstractPreferences extends java.util.prefs.Preferences {
-    ctor protected AbstractPreferences(java.util.prefs.AbstractPreferences, String);
-    method public String absolutePath();
-    method public void addNodeChangeListener(java.util.prefs.NodeChangeListener);
-    method public void addPreferenceChangeListener(java.util.prefs.PreferenceChangeListener);
-    method protected final java.util.prefs.AbstractPreferences[] cachedChildren();
-    method protected abstract java.util.prefs.AbstractPreferences childSpi(String);
-    method public String[] childrenNames() throws java.util.prefs.BackingStoreException;
-    method protected abstract String[] childrenNamesSpi() throws java.util.prefs.BackingStoreException;
-    method public void clear() throws java.util.prefs.BackingStoreException;
-    method public void exportNode(java.io.OutputStream) throws java.util.prefs.BackingStoreException, java.io.IOException;
-    method public void exportSubtree(java.io.OutputStream) throws java.util.prefs.BackingStoreException, java.io.IOException;
-    method public void flush() throws java.util.prefs.BackingStoreException;
-    method protected abstract void flushSpi() throws java.util.prefs.BackingStoreException;
-    method public String get(String, String);
-    method public boolean getBoolean(String, boolean);
-    method public byte[] getByteArray(String, byte[]);
-    method protected java.util.prefs.AbstractPreferences getChild(String) throws java.util.prefs.BackingStoreException;
-    method public double getDouble(String, double);
-    method public float getFloat(String, float);
-    method public int getInt(String, int);
-    method public long getLong(String, long);
-    method protected abstract String getSpi(String);
-    method protected boolean isRemoved();
-    method public boolean isUserNode();
-    method public String[] keys() throws java.util.prefs.BackingStoreException;
-    method protected abstract String[] keysSpi() throws java.util.prefs.BackingStoreException;
-    method public String name();
-    method public java.util.prefs.Preferences node(String);
-    method public boolean nodeExists(String) throws java.util.prefs.BackingStoreException;
-    method public java.util.prefs.Preferences parent();
-    method public void put(String, String);
-    method public void putBoolean(String, boolean);
-    method public void putByteArray(String, byte[]);
-    method public void putDouble(String, double);
-    method public void putFloat(String, float);
-    method public void putInt(String, int);
-    method public void putLong(String, long);
-    method protected abstract void putSpi(String, String);
-    method public void remove(String);
-    method public void removeNode() throws java.util.prefs.BackingStoreException;
-    method public void removeNodeChangeListener(java.util.prefs.NodeChangeListener);
-    method protected abstract void removeNodeSpi() throws java.util.prefs.BackingStoreException;
-    method public void removePreferenceChangeListener(java.util.prefs.PreferenceChangeListener);
-    method protected abstract void removeSpi(String);
-    method public void sync() throws java.util.prefs.BackingStoreException;
-    method protected abstract void syncSpi() throws java.util.prefs.BackingStoreException;
-    field protected final Object lock;
-    field protected boolean newNode;
-  }
-
-  public class BackingStoreException extends java.lang.Exception {
-    ctor public BackingStoreException(String);
-    ctor public BackingStoreException(Throwable);
-  }
-
-  public class InvalidPreferencesFormatException extends java.lang.Exception {
-    ctor public InvalidPreferencesFormatException(Throwable);
-    ctor public InvalidPreferencesFormatException(String);
-    ctor public InvalidPreferencesFormatException(String, Throwable);
-  }
-
-  public class NodeChangeEvent extends java.util.EventObject {
-    ctor public NodeChangeEvent(java.util.prefs.Preferences, java.util.prefs.Preferences);
-    method public java.util.prefs.Preferences getChild();
-    method public java.util.prefs.Preferences getParent();
-  }
-
-  public interface NodeChangeListener extends java.util.EventListener {
-    method public void childAdded(java.util.prefs.NodeChangeEvent);
-    method public void childRemoved(java.util.prefs.NodeChangeEvent);
-  }
-
-  public class PreferenceChangeEvent extends java.util.EventObject {
-    ctor public PreferenceChangeEvent(java.util.prefs.Preferences, String, String);
-    method public String getKey();
-    method public String getNewValue();
-    method public java.util.prefs.Preferences getNode();
-  }
-
-  @java.lang.FunctionalInterface public interface PreferenceChangeListener extends java.util.EventListener {
-    method public void preferenceChange(java.util.prefs.PreferenceChangeEvent);
-  }
-
-  public abstract class Preferences {
-    ctor protected Preferences();
-    method public abstract String absolutePath();
-    method public abstract void addNodeChangeListener(java.util.prefs.NodeChangeListener);
-    method public abstract void addPreferenceChangeListener(java.util.prefs.PreferenceChangeListener);
-    method public abstract String[] childrenNames() throws java.util.prefs.BackingStoreException;
-    method public abstract void clear() throws java.util.prefs.BackingStoreException;
-    method public abstract void exportNode(java.io.OutputStream) throws java.util.prefs.BackingStoreException, java.io.IOException;
-    method public abstract void exportSubtree(java.io.OutputStream) throws java.util.prefs.BackingStoreException, java.io.IOException;
-    method public abstract void flush() throws java.util.prefs.BackingStoreException;
-    method public abstract String get(String, String);
-    method public abstract boolean getBoolean(String, boolean);
-    method public abstract byte[] getByteArray(String, byte[]);
-    method public abstract double getDouble(String, double);
-    method public abstract float getFloat(String, float);
-    method public abstract int getInt(String, int);
-    method public abstract long getLong(String, long);
-    method public static void importPreferences(java.io.InputStream) throws java.io.IOException, java.util.prefs.InvalidPreferencesFormatException;
-    method public abstract boolean isUserNode();
-    method public abstract String[] keys() throws java.util.prefs.BackingStoreException;
-    method public abstract String name();
-    method public abstract java.util.prefs.Preferences node(String);
-    method public abstract boolean nodeExists(String) throws java.util.prefs.BackingStoreException;
-    method public abstract java.util.prefs.Preferences parent();
-    method public abstract void put(String, String);
-    method public abstract void putBoolean(String, boolean);
-    method public abstract void putByteArray(String, byte[]);
-    method public abstract void putDouble(String, double);
-    method public abstract void putFloat(String, float);
-    method public abstract void putInt(String, int);
-    method public abstract void putLong(String, long);
-    method public abstract void remove(String);
-    method public abstract void removeNode() throws java.util.prefs.BackingStoreException;
-    method public abstract void removeNodeChangeListener(java.util.prefs.NodeChangeListener);
-    method public abstract void removePreferenceChangeListener(java.util.prefs.PreferenceChangeListener);
-    method public abstract void sync() throws java.util.prefs.BackingStoreException;
-    method public static java.util.prefs.Preferences systemNodeForPackage(Class<?>);
-    method public static java.util.prefs.Preferences systemRoot();
-    method public abstract String toString();
-    method public static java.util.prefs.Preferences userNodeForPackage(Class<?>);
-    method public static java.util.prefs.Preferences userRoot();
-    field public static final int MAX_KEY_LENGTH = 80; // 0x50
-    field public static final int MAX_NAME_LENGTH = 80; // 0x50
-    field public static final int MAX_VALUE_LENGTH = 8192; // 0x2000
-  }
-
-  public interface PreferencesFactory {
-    method public java.util.prefs.Preferences systemRoot();
-    method public java.util.prefs.Preferences userRoot();
-  }
-
-}
-
-package java.util.regex {
-
-  public interface MatchResult {
-    method public int end();
-    method public int end(int);
-    method public String group();
-    method public String group(int);
-    method public int groupCount();
-    method public int start();
-    method public int start(int);
-  }
-
-  public final class Matcher implements java.util.regex.MatchResult {
-    method @NonNull public java.util.regex.Matcher appendReplacement(@NonNull StringBuffer, @NonNull String);
-    method @NonNull public StringBuffer appendTail(@NonNull StringBuffer);
-    method public int end();
-    method public int end(int);
-    method public int end(@NonNull String);
-    method public boolean find();
-    method public boolean find(int);
-    method @NonNull public String group();
-    method @Nullable public String group(int);
-    method @Nullable public String group(@NonNull String);
-    method public int groupCount();
-    method public boolean hasAnchoringBounds();
-    method public boolean hasTransparentBounds();
-    method public boolean hitEnd();
-    method public boolean lookingAt();
-    method public boolean matches();
-    method @NonNull public java.util.regex.Pattern pattern();
-    method @NonNull public static String quoteReplacement(@NonNull String);
-    method @NonNull public java.util.regex.Matcher region(int, int);
-    method public int regionEnd();
-    method public int regionStart();
-    method @NonNull public String replaceAll(@NonNull String);
-    method @NonNull public String replaceFirst(@NonNull String);
-    method public boolean requireEnd();
-    method @NonNull public java.util.regex.Matcher reset();
-    method @NonNull public java.util.regex.Matcher reset(@NonNull CharSequence);
-    method public int start();
-    method public int start(int);
-    method public int start(@NonNull String);
-    method @NonNull public java.util.regex.MatchResult toMatchResult();
-    method @NonNull public java.util.regex.Matcher useAnchoringBounds(boolean);
-    method @NonNull public java.util.regex.Matcher usePattern(@NonNull java.util.regex.Pattern);
-    method @NonNull public java.util.regex.Matcher useTransparentBounds(boolean);
-  }
-
-  public final class Pattern implements java.io.Serializable {
-    method @NonNull public java.util.function.Predicate<java.lang.String> asPredicate();
-    method @NonNull public static java.util.regex.Pattern compile(@NonNull String);
-    method @NonNull public static java.util.regex.Pattern compile(@NonNull String, int);
-    method public int flags();
-    method @NonNull public java.util.regex.Matcher matcher(@NonNull CharSequence);
-    method public static boolean matches(@NonNull String, @NonNull CharSequence);
-    method @NonNull public String pattern();
-    method @NonNull public static String quote(@NonNull String);
-    method @NonNull public String[] split(@NonNull CharSequence, int);
-    method @NonNull public String[] split(@NonNull CharSequence);
-    method @NonNull public java.util.stream.Stream<java.lang.String> splitAsStream(@NonNull CharSequence);
-    field public static final int CANON_EQ = 128; // 0x80
-    field public static final int CASE_INSENSITIVE = 2; // 0x2
-    field public static final int COMMENTS = 4; // 0x4
-    field public static final int DOTALL = 32; // 0x20
-    field public static final int LITERAL = 16; // 0x10
-    field public static final int MULTILINE = 8; // 0x8
-    field public static final int UNICODE_CASE = 64; // 0x40
-    field public static final int UNICODE_CHARACTER_CLASS = 256; // 0x100
-    field public static final int UNIX_LINES = 1; // 0x1
-  }
-
-  public class PatternSyntaxException extends java.lang.IllegalArgumentException {
-    ctor public PatternSyntaxException(String, String, int);
-    method public String getDescription();
-    method public int getIndex();
-    method public String getPattern();
-  }
-
-}
-
-package java.util.stream {
-
-  public interface BaseStream<T, S extends java.util.stream.BaseStream<T, S>> extends java.lang.AutoCloseable {
-    method public void close();
-    method public boolean isParallel();
-    method public java.util.Iterator<T> iterator();
-    method public S onClose(Runnable);
-    method public S parallel();
-    method public S sequential();
-    method public java.util.Spliterator<T> spliterator();
-    method public S unordered();
-  }
-
-  public interface Collector<T, A, R> {
-    method public java.util.function.BiConsumer<A,T> accumulator();
-    method public java.util.Set<java.util.stream.Collector.Characteristics> characteristics();
-    method public java.util.function.BinaryOperator<A> combiner();
-    method public java.util.function.Function<A,R> finisher();
-    method public static <T, R> java.util.stream.Collector<T,R,R> of(java.util.function.Supplier<R>, java.util.function.BiConsumer<R,T>, java.util.function.BinaryOperator<R>, java.util.stream.Collector.Characteristics...);
-    method public static <T, A, R> java.util.stream.Collector<T,A,R> of(java.util.function.Supplier<A>, java.util.function.BiConsumer<A,T>, java.util.function.BinaryOperator<A>, java.util.function.Function<A,R>, java.util.stream.Collector.Characteristics...);
-    method public java.util.function.Supplier<A> supplier();
-  }
-
-  public enum Collector.Characteristics {
-    enum_constant public static final java.util.stream.Collector.Characteristics CONCURRENT;
-    enum_constant public static final java.util.stream.Collector.Characteristics IDENTITY_FINISH;
-    enum_constant public static final java.util.stream.Collector.Characteristics UNORDERED;
-  }
-
-  public final class Collectors {
-    method public static <T> java.util.stream.Collector<T,?,java.lang.Double> averagingDouble(java.util.function.ToDoubleFunction<? super T>);
-    method public static <T> java.util.stream.Collector<T,?,java.lang.Double> averagingInt(java.util.function.ToIntFunction<? super T>);
-    method public static <T> java.util.stream.Collector<T,?,java.lang.Double> averagingLong(java.util.function.ToLongFunction<? super T>);
-    method public static <T, A, R, RR> java.util.stream.Collector<T,A,RR> collectingAndThen(java.util.stream.Collector<T,A,R>, java.util.function.Function<R,RR>);
-    method public static <T> java.util.stream.Collector<T,?,java.lang.Long> counting();
-    method public static <T, K> java.util.stream.Collector<T,?,java.util.Map<K,java.util.List<T>>> groupingBy(java.util.function.Function<? super T,? extends K>);
-    method public static <T, K, A, D> java.util.stream.Collector<T,?,java.util.Map<K,D>> groupingBy(java.util.function.Function<? super T,? extends K>, java.util.stream.Collector<? super T,A,D>);
-    method public static <T, K, D, A, M extends java.util.Map<K, D>> java.util.stream.Collector<T,?,M> groupingBy(java.util.function.Function<? super T,? extends K>, java.util.function.Supplier<M>, java.util.stream.Collector<? super T,A,D>);
-    method public static <T, K> java.util.stream.Collector<T,?,java.util.concurrent.ConcurrentMap<K,java.util.List<T>>> groupingByConcurrent(java.util.function.Function<? super T,? extends K>);
-    method public static <T, K, A, D> java.util.stream.Collector<T,?,java.util.concurrent.ConcurrentMap<K,D>> groupingByConcurrent(java.util.function.Function<? super T,? extends K>, java.util.stream.Collector<? super T,A,D>);
-    method public static <T, K, A, D, M extends java.util.concurrent.ConcurrentMap<K, D>> java.util.stream.Collector<T,?,M> groupingByConcurrent(java.util.function.Function<? super T,? extends K>, java.util.function.Supplier<M>, java.util.stream.Collector<? super T,A,D>);
-    method public static java.util.stream.Collector<java.lang.CharSequence,?,java.lang.String> joining();
-    method public static java.util.stream.Collector<java.lang.CharSequence,?,java.lang.String> joining(CharSequence);
-    method public static java.util.stream.Collector<java.lang.CharSequence,?,java.lang.String> joining(CharSequence, CharSequence, CharSequence);
-    method public static <T, U, A, R> java.util.stream.Collector<T,?,R> mapping(java.util.function.Function<? super T,? extends U>, java.util.stream.Collector<? super U,A,R>);
-    method public static <T> java.util.stream.Collector<T,?,java.util.Optional<T>> maxBy(java.util.Comparator<? super T>);
-    method public static <T> java.util.stream.Collector<T,?,java.util.Optional<T>> minBy(java.util.Comparator<? super T>);
-    method public static <T> java.util.stream.Collector<T,?,java.util.Map<java.lang.Boolean,java.util.List<T>>> partitioningBy(java.util.function.Predicate<? super T>);
-    method public static <T, D, A> java.util.stream.Collector<T,?,java.util.Map<java.lang.Boolean,D>> partitioningBy(java.util.function.Predicate<? super T>, java.util.stream.Collector<? super T,A,D>);
-    method public static <T> java.util.stream.Collector<T,?,T> reducing(T, java.util.function.BinaryOperator<T>);
-    method public static <T> java.util.stream.Collector<T,?,java.util.Optional<T>> reducing(java.util.function.BinaryOperator<T>);
-    method public static <T, U> java.util.stream.Collector<T,?,U> reducing(U, java.util.function.Function<? super T,? extends U>, java.util.function.BinaryOperator<U>);
-    method public static <T> java.util.stream.Collector<T,?,java.util.DoubleSummaryStatistics> summarizingDouble(java.util.function.ToDoubleFunction<? super T>);
-    method public static <T> java.util.stream.Collector<T,?,java.util.IntSummaryStatistics> summarizingInt(java.util.function.ToIntFunction<? super T>);
-    method public static <T> java.util.stream.Collector<T,?,java.util.LongSummaryStatistics> summarizingLong(java.util.function.ToLongFunction<? super T>);
-    method public static <T> java.util.stream.Collector<T,?,java.lang.Double> summingDouble(java.util.function.ToDoubleFunction<? super T>);
-    method public static <T> java.util.stream.Collector<T,?,java.lang.Integer> summingInt(java.util.function.ToIntFunction<? super T>);
-    method public static <T> java.util.stream.Collector<T,?,java.lang.Long> summingLong(java.util.function.ToLongFunction<? super T>);
-    method public static <T, C extends java.util.Collection<T>> java.util.stream.Collector<T,?,C> toCollection(java.util.function.Supplier<C>);
-    method public static <T, K, U> java.util.stream.Collector<T,?,java.util.concurrent.ConcurrentMap<K,U>> toConcurrentMap(java.util.function.Function<? super T,? extends K>, java.util.function.Function<? super T,? extends U>);
-    method public static <T, K, U> java.util.stream.Collector<T,?,java.util.concurrent.ConcurrentMap<K,U>> toConcurrentMap(java.util.function.Function<? super T,? extends K>, java.util.function.Function<? super T,? extends U>, java.util.function.BinaryOperator<U>);
-    method public static <T, K, U, M extends java.util.concurrent.ConcurrentMap<K, U>> java.util.stream.Collector<T,?,M> toConcurrentMap(java.util.function.Function<? super T,? extends K>, java.util.function.Function<? super T,? extends U>, java.util.function.BinaryOperator<U>, java.util.function.Supplier<M>);
-    method public static <T> java.util.stream.Collector<T,?,java.util.List<T>> toList();
-    method public static <T, K, U> java.util.stream.Collector<T,?,java.util.Map<K,U>> toMap(java.util.function.Function<? super T,? extends K>, java.util.function.Function<? super T,? extends U>);
-    method public static <T, K, U> java.util.stream.Collector<T,?,java.util.Map<K,U>> toMap(java.util.function.Function<? super T,? extends K>, java.util.function.Function<? super T,? extends U>, java.util.function.BinaryOperator<U>);
-    method public static <T, K, U, M extends java.util.Map<K, U>> java.util.stream.Collector<T,?,M> toMap(java.util.function.Function<? super T,? extends K>, java.util.function.Function<? super T,? extends U>, java.util.function.BinaryOperator<U>, java.util.function.Supplier<M>);
-    method public static <T> java.util.stream.Collector<T,?,java.util.Set<T>> toSet();
-  }
-
-  public interface DoubleStream extends java.util.stream.BaseStream<java.lang.Double,java.util.stream.DoubleStream> {
-    method public boolean allMatch(java.util.function.DoublePredicate);
-    method public boolean anyMatch(java.util.function.DoublePredicate);
-    method public java.util.OptionalDouble average();
-    method public java.util.stream.Stream<java.lang.Double> boxed();
-    method public static java.util.stream.DoubleStream.Builder builder();
-    method public <R> R collect(java.util.function.Supplier<R>, java.util.function.ObjDoubleConsumer<R>, java.util.function.BiConsumer<R,R>);
-    method public static java.util.stream.DoubleStream concat(java.util.stream.DoubleStream, java.util.stream.DoubleStream);
-    method public long count();
-    method public java.util.stream.DoubleStream distinct();
-    method public static java.util.stream.DoubleStream empty();
-    method public java.util.stream.DoubleStream filter(java.util.function.DoublePredicate);
-    method public java.util.OptionalDouble findAny();
-    method public java.util.OptionalDouble findFirst();
-    method public java.util.stream.DoubleStream flatMap(java.util.function.DoubleFunction<? extends java.util.stream.DoubleStream>);
-    method public void forEach(java.util.function.DoubleConsumer);
-    method public void forEachOrdered(java.util.function.DoubleConsumer);
-    method public static java.util.stream.DoubleStream generate(java.util.function.DoubleSupplier);
-    method public static java.util.stream.DoubleStream iterate(double, java.util.function.DoubleUnaryOperator);
-    method public java.util.PrimitiveIterator.OfDouble iterator();
-    method public java.util.stream.DoubleStream limit(long);
-    method public java.util.stream.DoubleStream map(java.util.function.DoubleUnaryOperator);
-    method public java.util.stream.IntStream mapToInt(java.util.function.DoubleToIntFunction);
-    method public java.util.stream.LongStream mapToLong(java.util.function.DoubleToLongFunction);
-    method public <U> java.util.stream.Stream<U> mapToObj(java.util.function.DoubleFunction<? extends U>);
-    method public java.util.OptionalDouble max();
-    method public java.util.OptionalDouble min();
-    method public boolean noneMatch(java.util.function.DoublePredicate);
-    method public static java.util.stream.DoubleStream of(double);
-    method public static java.util.stream.DoubleStream of(double...);
-    method public java.util.stream.DoubleStream parallel();
-    method public java.util.stream.DoubleStream peek(java.util.function.DoubleConsumer);
-    method public double reduce(double, java.util.function.DoubleBinaryOperator);
-    method public java.util.OptionalDouble reduce(java.util.function.DoubleBinaryOperator);
-    method public java.util.stream.DoubleStream sequential();
-    method public java.util.stream.DoubleStream skip(long);
-    method public java.util.stream.DoubleStream sorted();
-    method public java.util.Spliterator.OfDouble spliterator();
-    method public double sum();
-    method public java.util.DoubleSummaryStatistics summaryStatistics();
-    method public double[] toArray();
-  }
-
-  public static interface DoubleStream.Builder extends java.util.function.DoubleConsumer {
-    method public default java.util.stream.DoubleStream.Builder add(double);
-    method public java.util.stream.DoubleStream build();
-  }
-
-  public interface IntStream extends java.util.stream.BaseStream<java.lang.Integer,java.util.stream.IntStream> {
-    method public boolean allMatch(java.util.function.IntPredicate);
-    method public boolean anyMatch(java.util.function.IntPredicate);
-    method public java.util.stream.DoubleStream asDoubleStream();
-    method public java.util.stream.LongStream asLongStream();
-    method public java.util.OptionalDouble average();
-    method public java.util.stream.Stream<java.lang.Integer> boxed();
-    method public static java.util.stream.IntStream.Builder builder();
-    method public <R> R collect(java.util.function.Supplier<R>, java.util.function.ObjIntConsumer<R>, java.util.function.BiConsumer<R,R>);
-    method public static java.util.stream.IntStream concat(java.util.stream.IntStream, java.util.stream.IntStream);
-    method public long count();
-    method public java.util.stream.IntStream distinct();
-    method public static java.util.stream.IntStream empty();
-    method public java.util.stream.IntStream filter(java.util.function.IntPredicate);
-    method public java.util.OptionalInt findAny();
-    method public java.util.OptionalInt findFirst();
-    method public java.util.stream.IntStream flatMap(java.util.function.IntFunction<? extends java.util.stream.IntStream>);
-    method public void forEach(java.util.function.IntConsumer);
-    method public void forEachOrdered(java.util.function.IntConsumer);
-    method public static java.util.stream.IntStream generate(java.util.function.IntSupplier);
-    method public static java.util.stream.IntStream iterate(int, java.util.function.IntUnaryOperator);
-    method public java.util.PrimitiveIterator.OfInt iterator();
-    method public java.util.stream.IntStream limit(long);
-    method public java.util.stream.IntStream map(java.util.function.IntUnaryOperator);
-    method public java.util.stream.DoubleStream mapToDouble(java.util.function.IntToDoubleFunction);
-    method public java.util.stream.LongStream mapToLong(java.util.function.IntToLongFunction);
-    method public <U> java.util.stream.Stream<U> mapToObj(java.util.function.IntFunction<? extends U>);
-    method public java.util.OptionalInt max();
-    method public java.util.OptionalInt min();
-    method public boolean noneMatch(java.util.function.IntPredicate);
-    method public static java.util.stream.IntStream of(int);
-    method public static java.util.stream.IntStream of(int...);
-    method public java.util.stream.IntStream parallel();
-    method public java.util.stream.IntStream peek(java.util.function.IntConsumer);
-    method public static java.util.stream.IntStream range(int, int);
-    method public static java.util.stream.IntStream rangeClosed(int, int);
-    method public int reduce(int, java.util.function.IntBinaryOperator);
-    method public java.util.OptionalInt reduce(java.util.function.IntBinaryOperator);
-    method public java.util.stream.IntStream sequential();
-    method public java.util.stream.IntStream skip(long);
-    method public java.util.stream.IntStream sorted();
-    method public java.util.Spliterator.OfInt spliterator();
-    method public int sum();
-    method public java.util.IntSummaryStatistics summaryStatistics();
-    method public int[] toArray();
-  }
-
-  public static interface IntStream.Builder extends java.util.function.IntConsumer {
-    method public default java.util.stream.IntStream.Builder add(int);
-    method public java.util.stream.IntStream build();
-  }
-
-  public interface LongStream extends java.util.stream.BaseStream<java.lang.Long,java.util.stream.LongStream> {
-    method public boolean allMatch(java.util.function.LongPredicate);
-    method public boolean anyMatch(java.util.function.LongPredicate);
-    method public java.util.stream.DoubleStream asDoubleStream();
-    method public java.util.OptionalDouble average();
-    method public java.util.stream.Stream<java.lang.Long> boxed();
-    method public static java.util.stream.LongStream.Builder builder();
-    method public <R> R collect(java.util.function.Supplier<R>, java.util.function.ObjLongConsumer<R>, java.util.function.BiConsumer<R,R>);
-    method public static java.util.stream.LongStream concat(java.util.stream.LongStream, java.util.stream.LongStream);
-    method public long count();
-    method public java.util.stream.LongStream distinct();
-    method public static java.util.stream.LongStream empty();
-    method public java.util.stream.LongStream filter(java.util.function.LongPredicate);
-    method public java.util.OptionalLong findAny();
-    method public java.util.OptionalLong findFirst();
-    method public java.util.stream.LongStream flatMap(java.util.function.LongFunction<? extends java.util.stream.LongStream>);
-    method public void forEach(java.util.function.LongConsumer);
-    method public void forEachOrdered(java.util.function.LongConsumer);
-    method public static java.util.stream.LongStream generate(java.util.function.LongSupplier);
-    method public static java.util.stream.LongStream iterate(long, java.util.function.LongUnaryOperator);
-    method public java.util.PrimitiveIterator.OfLong iterator();
-    method public java.util.stream.LongStream limit(long);
-    method public java.util.stream.LongStream map(java.util.function.LongUnaryOperator);
-    method public java.util.stream.DoubleStream mapToDouble(java.util.function.LongToDoubleFunction);
-    method public java.util.stream.IntStream mapToInt(java.util.function.LongToIntFunction);
-    method public <U> java.util.stream.Stream<U> mapToObj(java.util.function.LongFunction<? extends U>);
-    method public java.util.OptionalLong max();
-    method public java.util.OptionalLong min();
-    method public boolean noneMatch(java.util.function.LongPredicate);
-    method public static java.util.stream.LongStream of(long);
-    method public static java.util.stream.LongStream of(long...);
-    method public java.util.stream.LongStream parallel();
-    method public java.util.stream.LongStream peek(java.util.function.LongConsumer);
-    method public static java.util.stream.LongStream range(long, long);
-    method public static java.util.stream.LongStream rangeClosed(long, long);
-    method public long reduce(long, java.util.function.LongBinaryOperator);
-    method public java.util.OptionalLong reduce(java.util.function.LongBinaryOperator);
-    method public java.util.stream.LongStream sequential();
-    method public java.util.stream.LongStream skip(long);
-    method public java.util.stream.LongStream sorted();
-    method public java.util.Spliterator.OfLong spliterator();
-    method public long sum();
-    method public java.util.LongSummaryStatistics summaryStatistics();
-    method public long[] toArray();
-  }
-
-  public static interface LongStream.Builder extends java.util.function.LongConsumer {
-    method public default java.util.stream.LongStream.Builder add(long);
-    method public java.util.stream.LongStream build();
-  }
-
-  public interface Stream<T> extends java.util.stream.BaseStream<T,java.util.stream.Stream<T>> {
-    method public boolean allMatch(java.util.function.Predicate<? super T>);
-    method public boolean anyMatch(java.util.function.Predicate<? super T>);
-    method public static <T> java.util.stream.Stream.Builder<T> builder();
-    method public <R> R collect(java.util.function.Supplier<R>, java.util.function.BiConsumer<R,? super T>, java.util.function.BiConsumer<R,R>);
-    method public <R, A> R collect(java.util.stream.Collector<? super T,A,R>);
-    method public static <T> java.util.stream.Stream<T> concat(java.util.stream.Stream<? extends T>, java.util.stream.Stream<? extends T>);
-    method public long count();
-    method public java.util.stream.Stream<T> distinct();
-    method public static <T> java.util.stream.Stream<T> empty();
-    method public java.util.stream.Stream<T> filter(java.util.function.Predicate<? super T>);
-    method public java.util.Optional<T> findAny();
-    method public java.util.Optional<T> findFirst();
-    method public <R> java.util.stream.Stream<R> flatMap(java.util.function.Function<? super T,? extends java.util.stream.Stream<? extends R>>);
-    method public java.util.stream.DoubleStream flatMapToDouble(java.util.function.Function<? super T,? extends java.util.stream.DoubleStream>);
-    method public java.util.stream.IntStream flatMapToInt(java.util.function.Function<? super T,? extends java.util.stream.IntStream>);
-    method public java.util.stream.LongStream flatMapToLong(java.util.function.Function<? super T,? extends java.util.stream.LongStream>);
-    method public void forEach(java.util.function.Consumer<? super T>);
-    method public void forEachOrdered(java.util.function.Consumer<? super T>);
-    method public static <T> java.util.stream.Stream<T> generate(java.util.function.Supplier<T>);
-    method public static <T> java.util.stream.Stream<T> iterate(T, java.util.function.UnaryOperator<T>);
-    method public java.util.stream.Stream<T> limit(long);
-    method public <R> java.util.stream.Stream<R> map(java.util.function.Function<? super T,? extends R>);
-    method public java.util.stream.DoubleStream mapToDouble(java.util.function.ToDoubleFunction<? super T>);
-    method public java.util.stream.IntStream mapToInt(java.util.function.ToIntFunction<? super T>);
-    method public java.util.stream.LongStream mapToLong(java.util.function.ToLongFunction<? super T>);
-    method public java.util.Optional<T> max(java.util.Comparator<? super T>);
-    method public java.util.Optional<T> min(java.util.Comparator<? super T>);
-    method public boolean noneMatch(java.util.function.Predicate<? super T>);
-    method public static <T> java.util.stream.Stream<T> of(T);
-    method @java.lang.SafeVarargs public static <T> java.util.stream.Stream<T> of(T...);
-    method public java.util.stream.Stream<T> peek(java.util.function.Consumer<? super T>);
-    method public T reduce(T, java.util.function.BinaryOperator<T>);
-    method public java.util.Optional<T> reduce(java.util.function.BinaryOperator<T>);
-    method public <U> U reduce(U, java.util.function.BiFunction<U,? super T,U>, java.util.function.BinaryOperator<U>);
-    method public java.util.stream.Stream<T> skip(long);
-    method public java.util.stream.Stream<T> sorted();
-    method public java.util.stream.Stream<T> sorted(java.util.Comparator<? super T>);
-    method public Object[] toArray();
-    method public <A> A[] toArray(java.util.function.IntFunction<A[]>);
-  }
-
-  public static interface Stream.Builder<T> extends java.util.function.Consumer<T> {
-    method public default java.util.stream.Stream.Builder<T> add(T);
-    method public java.util.stream.Stream<T> build();
-  }
-
-  public final class StreamSupport {
-    method public static java.util.stream.DoubleStream doubleStream(java.util.Spliterator.OfDouble, boolean);
-    method public static java.util.stream.DoubleStream doubleStream(java.util.function.Supplier<? extends java.util.Spliterator.OfDouble>, int, boolean);
-    method public static java.util.stream.IntStream intStream(java.util.Spliterator.OfInt, boolean);
-    method public static java.util.stream.IntStream intStream(java.util.function.Supplier<? extends java.util.Spliterator.OfInt>, int, boolean);
-    method public static java.util.stream.LongStream longStream(java.util.Spliterator.OfLong, boolean);
-    method public static java.util.stream.LongStream longStream(java.util.function.Supplier<? extends java.util.Spliterator.OfLong>, int, boolean);
-    method public static <T> java.util.stream.Stream<T> stream(java.util.Spliterator<T>, boolean);
-    method public static <T> java.util.stream.Stream<T> stream(java.util.function.Supplier<? extends java.util.Spliterator<T>>, int, boolean);
-  }
-
-}
-
-package java.util.zip {
-
-  public class Adler32 implements java.util.zip.Checksum {
-    ctor public Adler32();
-    method public long getValue();
-    method public void reset();
-    method public void update(int);
-    method public void update(byte[], int, int);
-    method public void update(byte[]);
-    method public void update(java.nio.ByteBuffer);
-  }
-
-  public class CRC32 implements java.util.zip.Checksum {
-    ctor public CRC32();
-    method public long getValue();
-    method public void reset();
-    method public void update(int);
-    method public void update(byte[], int, int);
-    method public void update(byte[]);
-    method public void update(java.nio.ByteBuffer);
-  }
-
-  public class CheckedInputStream extends java.io.FilterInputStream {
-    ctor public CheckedInputStream(java.io.InputStream, java.util.zip.Checksum);
-    method public java.util.zip.Checksum getChecksum();
-  }
-
-  public class CheckedOutputStream extends java.io.FilterOutputStream {
-    ctor public CheckedOutputStream(java.io.OutputStream, java.util.zip.Checksum);
-    method public java.util.zip.Checksum getChecksum();
-  }
-
-  public interface Checksum {
-    method public long getValue();
-    method public void reset();
-    method public void update(int);
-    method public void update(byte[], int, int);
-  }
-
-  public class DataFormatException extends java.lang.Exception {
-    ctor public DataFormatException();
-    ctor public DataFormatException(String);
-  }
-
-  public class Deflater {
-    ctor public Deflater(int, boolean);
-    ctor public Deflater(int);
-    ctor public Deflater();
-    method public int deflate(byte[], int, int);
-    method public int deflate(byte[]);
-    method public int deflate(byte[], int, int, int);
-    method public void end();
-    method protected void finalize();
-    method public void finish();
-    method public boolean finished();
-    method public int getAdler();
-    method public long getBytesRead();
-    method public long getBytesWritten();
-    method public int getTotalIn();
-    method public int getTotalOut();
-    method public boolean needsInput();
-    method public void reset();
-    method public void setDictionary(byte[], int, int);
-    method public void setDictionary(byte[]);
-    method public void setInput(byte[], int, int);
-    method public void setInput(byte[]);
-    method public void setLevel(int);
-    method public void setStrategy(int);
-    field public static final int BEST_COMPRESSION = 9; // 0x9
-    field public static final int BEST_SPEED = 1; // 0x1
-    field public static final int DEFAULT_COMPRESSION = -1; // 0xffffffff
-    field public static final int DEFAULT_STRATEGY = 0; // 0x0
-    field public static final int DEFLATED = 8; // 0x8
-    field public static final int FILTERED = 1; // 0x1
-    field public static final int FULL_FLUSH = 3; // 0x3
-    field public static final int HUFFMAN_ONLY = 2; // 0x2
-    field public static final int NO_COMPRESSION = 0; // 0x0
-    field public static final int NO_FLUSH = 0; // 0x0
-    field public static final int SYNC_FLUSH = 2; // 0x2
-  }
-
-  public class DeflaterInputStream extends java.io.FilterInputStream {
-    ctor public DeflaterInputStream(java.io.InputStream);
-    ctor public DeflaterInputStream(java.io.InputStream, java.util.zip.Deflater);
-    ctor public DeflaterInputStream(java.io.InputStream, java.util.zip.Deflater, int);
-    field protected final byte[] buf;
-    field protected final java.util.zip.Deflater def;
-  }
-
-  public class DeflaterOutputStream extends java.io.FilterOutputStream {
-    ctor public DeflaterOutputStream(java.io.OutputStream, java.util.zip.Deflater, int, boolean);
-    ctor public DeflaterOutputStream(java.io.OutputStream, java.util.zip.Deflater, int);
-    ctor public DeflaterOutputStream(java.io.OutputStream, java.util.zip.Deflater, boolean);
-    ctor public DeflaterOutputStream(java.io.OutputStream, java.util.zip.Deflater);
-    ctor public DeflaterOutputStream(java.io.OutputStream, boolean);
-    ctor public DeflaterOutputStream(java.io.OutputStream);
-    method protected void deflate() throws java.io.IOException;
-    method public void finish() throws java.io.IOException;
-    field protected byte[] buf;
-    field protected java.util.zip.Deflater def;
-  }
-
-  public class GZIPInputStream extends java.util.zip.InflaterInputStream {
-    ctor public GZIPInputStream(java.io.InputStream, int) throws java.io.IOException;
-    ctor public GZIPInputStream(java.io.InputStream) throws java.io.IOException;
-    field public static final int GZIP_MAGIC = 35615; // 0x8b1f
-    field protected java.util.zip.CRC32 crc;
-    field protected boolean eos;
-  }
-
-  public class GZIPOutputStream extends java.util.zip.DeflaterOutputStream {
-    ctor public GZIPOutputStream(java.io.OutputStream, int) throws java.io.IOException;
-    ctor public GZIPOutputStream(java.io.OutputStream, int, boolean) throws java.io.IOException;
-    ctor public GZIPOutputStream(java.io.OutputStream) throws java.io.IOException;
-    ctor public GZIPOutputStream(java.io.OutputStream, boolean) throws java.io.IOException;
-    field protected java.util.zip.CRC32 crc;
-  }
-
-  public class Inflater {
-    ctor public Inflater(boolean);
-    ctor public Inflater();
-    method public void end();
-    method protected void finalize();
-    method public boolean finished();
-    method public int getAdler();
-    method public long getBytesRead();
-    method public long getBytesWritten();
-    method public int getRemaining();
-    method public int getTotalIn();
-    method public int getTotalOut();
-    method public int inflate(byte[], int, int) throws java.util.zip.DataFormatException;
-    method public int inflate(byte[]) throws java.util.zip.DataFormatException;
-    method public boolean needsDictionary();
-    method public boolean needsInput();
-    method public void reset();
-    method public void setDictionary(byte[], int, int);
-    method public void setDictionary(byte[]);
-    method public void setInput(byte[], int, int);
-    method public void setInput(byte[]);
-  }
-
-  public class InflaterInputStream extends java.io.FilterInputStream {
-    ctor public InflaterInputStream(java.io.InputStream, java.util.zip.Inflater, int);
-    ctor public InflaterInputStream(java.io.InputStream, java.util.zip.Inflater);
-    ctor public InflaterInputStream(java.io.InputStream);
-    method protected void fill() throws java.io.IOException;
-    field protected byte[] buf;
-    field @Deprecated protected boolean closed;
-    field protected java.util.zip.Inflater inf;
-    field protected int len;
-  }
-
-  public class InflaterOutputStream extends java.io.FilterOutputStream {
-    ctor public InflaterOutputStream(java.io.OutputStream);
-    ctor public InflaterOutputStream(java.io.OutputStream, java.util.zip.Inflater);
-    ctor public InflaterOutputStream(java.io.OutputStream, java.util.zip.Inflater, int);
-    method public void finish() throws java.io.IOException;
-    field protected final byte[] buf;
-    field protected final java.util.zip.Inflater inf;
-  }
-
-  public class ZipEntry implements java.lang.Cloneable {
-    ctor public ZipEntry(String);
-    ctor public ZipEntry(java.util.zip.ZipEntry);
-    method public Object clone();
-    method public String getComment();
-    method public long getCompressedSize();
-    method public long getCrc();
-    method public java.nio.file.attribute.FileTime getCreationTime();
-    method public byte[] getExtra();
-    method public java.nio.file.attribute.FileTime getLastAccessTime();
-    method public java.nio.file.attribute.FileTime getLastModifiedTime();
-    method public int getMethod();
-    method public String getName();
-    method public long getSize();
-    method public long getTime();
-    method public boolean isDirectory();
-    method public void setComment(String);
-    method public void setCompressedSize(long);
-    method public void setCrc(long);
-    method public java.util.zip.ZipEntry setCreationTime(java.nio.file.attribute.FileTime);
-    method public void setExtra(byte[]);
-    method public java.util.zip.ZipEntry setLastAccessTime(java.nio.file.attribute.FileTime);
-    method public java.util.zip.ZipEntry setLastModifiedTime(java.nio.file.attribute.FileTime);
-    method public void setMethod(int);
-    method public void setSize(long);
-    method public void setTime(long);
-    field public static final int CENATT = 36; // 0x24
-    field public static final int CENATX = 38; // 0x26
-    field public static final int CENCOM = 32; // 0x20
-    field public static final int CENCRC = 16; // 0x10
-    field public static final int CENDSK = 34; // 0x22
-    field public static final int CENEXT = 30; // 0x1e
-    field public static final int CENFLG = 8; // 0x8
-    field public static final int CENHDR = 46; // 0x2e
-    field public static final int CENHOW = 10; // 0xa
-    field public static final int CENLEN = 24; // 0x18
-    field public static final int CENNAM = 28; // 0x1c
-    field public static final int CENOFF = 42; // 0x2a
-    field public static final long CENSIG = 33639248L; // 0x2014b50L
-    field public static final int CENSIZ = 20; // 0x14
-    field public static final int CENTIM = 12; // 0xc
-    field public static final int CENVEM = 4; // 0x4
-    field public static final int CENVER = 6; // 0x6
-    field public static final int DEFLATED = 8; // 0x8
-    field public static final int ENDCOM = 20; // 0x14
-    field public static final int ENDHDR = 22; // 0x16
-    field public static final int ENDOFF = 16; // 0x10
-    field public static final long ENDSIG = 101010256L; // 0x6054b50L
-    field public static final int ENDSIZ = 12; // 0xc
-    field public static final int ENDSUB = 8; // 0x8
-    field public static final int ENDTOT = 10; // 0xa
-    field public static final int EXTCRC = 4; // 0x4
-    field public static final int EXTHDR = 16; // 0x10
-    field public static final int EXTLEN = 12; // 0xc
-    field public static final long EXTSIG = 134695760L; // 0x8074b50L
-    field public static final int EXTSIZ = 8; // 0x8
-    field public static final int LOCCRC = 14; // 0xe
-    field public static final int LOCEXT = 28; // 0x1c
-    field public static final int LOCFLG = 6; // 0x6
-    field public static final int LOCHDR = 30; // 0x1e
-    field public static final int LOCHOW = 8; // 0x8
-    field public static final int LOCLEN = 22; // 0x16
-    field public static final int LOCNAM = 26; // 0x1a
-    field public static final long LOCSIG = 67324752L; // 0x4034b50L
-    field public static final int LOCSIZ = 18; // 0x12
-    field public static final int LOCTIM = 10; // 0xa
-    field public static final int LOCVER = 4; // 0x4
-    field public static final int STORED = 0; // 0x0
-  }
-
-  public class ZipError extends java.lang.InternalError {
-    ctor public ZipError(String);
-  }
-
-  public class ZipException extends java.io.IOException {
-    ctor public ZipException();
-    ctor public ZipException(String);
-  }
-
-  public class ZipFile implements java.io.Closeable {
-    ctor public ZipFile(String) throws java.io.IOException;
-    ctor public ZipFile(java.io.File, int) throws java.io.IOException;
-    ctor public ZipFile(java.io.File) throws java.io.IOException, java.util.zip.ZipException;
-    ctor public ZipFile(java.io.File, int, java.nio.charset.Charset) throws java.io.IOException;
-    ctor public ZipFile(String, java.nio.charset.Charset) throws java.io.IOException;
-    ctor public ZipFile(java.io.File, java.nio.charset.Charset) throws java.io.IOException;
-    method public void close() throws java.io.IOException;
-    method public java.util.Enumeration<? extends java.util.zip.ZipEntry> entries();
-    method protected void finalize() throws java.io.IOException;
-    method public String getComment();
-    method public java.util.zip.ZipEntry getEntry(String);
-    method public java.io.InputStream getInputStream(java.util.zip.ZipEntry) throws java.io.IOException;
-    method public String getName();
-    method public int size();
-    method public java.util.stream.Stream<? extends java.util.zip.ZipEntry> stream();
-    field public static final int CENATT = 36; // 0x24
-    field public static final int CENATX = 38; // 0x26
-    field public static final int CENCOM = 32; // 0x20
-    field public static final int CENCRC = 16; // 0x10
-    field public static final int CENDSK = 34; // 0x22
-    field public static final int CENEXT = 30; // 0x1e
-    field public static final int CENFLG = 8; // 0x8
-    field public static final int CENHDR = 46; // 0x2e
-    field public static final int CENHOW = 10; // 0xa
-    field public static final int CENLEN = 24; // 0x18
-    field public static final int CENNAM = 28; // 0x1c
-    field public static final int CENOFF = 42; // 0x2a
-    field public static final long CENSIG = 33639248L; // 0x2014b50L
-    field public static final int CENSIZ = 20; // 0x14
-    field public static final int CENTIM = 12; // 0xc
-    field public static final int CENVEM = 4; // 0x4
-    field public static final int CENVER = 6; // 0x6
-    field public static final int ENDCOM = 20; // 0x14
-    field public static final int ENDHDR = 22; // 0x16
-    field public static final int ENDOFF = 16; // 0x10
-    field public static final long ENDSIG = 101010256L; // 0x6054b50L
-    field public static final int ENDSIZ = 12; // 0xc
-    field public static final int ENDSUB = 8; // 0x8
-    field public static final int ENDTOT = 10; // 0xa
-    field public static final int EXTCRC = 4; // 0x4
-    field public static final int EXTHDR = 16; // 0x10
-    field public static final int EXTLEN = 12; // 0xc
-    field public static final long EXTSIG = 134695760L; // 0x8074b50L
-    field public static final int EXTSIZ = 8; // 0x8
-    field public static final int LOCCRC = 14; // 0xe
-    field public static final int LOCEXT = 28; // 0x1c
-    field public static final int LOCFLG = 6; // 0x6
-    field public static final int LOCHDR = 30; // 0x1e
-    field public static final int LOCHOW = 8; // 0x8
-    field public static final int LOCLEN = 22; // 0x16
-    field public static final int LOCNAM = 26; // 0x1a
-    field public static final long LOCSIG = 67324752L; // 0x4034b50L
-    field public static final int LOCSIZ = 18; // 0x12
-    field public static final int LOCTIM = 10; // 0xa
-    field public static final int LOCVER = 4; // 0x4
-    field public static final int OPEN_DELETE = 4; // 0x4
-    field public static final int OPEN_READ = 1; // 0x1
-  }
-
-  public class ZipInputStream extends java.util.zip.InflaterInputStream {
-    ctor public ZipInputStream(java.io.InputStream);
-    ctor public ZipInputStream(java.io.InputStream, java.nio.charset.Charset);
-    method public void closeEntry() throws java.io.IOException;
-    method protected java.util.zip.ZipEntry createZipEntry(String);
-    method public java.util.zip.ZipEntry getNextEntry() throws java.io.IOException;
-    field public static final int CENATT = 36; // 0x24
-    field public static final int CENATX = 38; // 0x26
-    field public static final int CENCOM = 32; // 0x20
-    field public static final int CENCRC = 16; // 0x10
-    field public static final int CENDSK = 34; // 0x22
-    field public static final int CENEXT = 30; // 0x1e
-    field public static final int CENFLG = 8; // 0x8
-    field public static final int CENHDR = 46; // 0x2e
-    field public static final int CENHOW = 10; // 0xa
-    field public static final int CENLEN = 24; // 0x18
-    field public static final int CENNAM = 28; // 0x1c
-    field public static final int CENOFF = 42; // 0x2a
-    field public static final long CENSIG = 33639248L; // 0x2014b50L
-    field public static final int CENSIZ = 20; // 0x14
-    field public static final int CENTIM = 12; // 0xc
-    field public static final int CENVEM = 4; // 0x4
-    field public static final int CENVER = 6; // 0x6
-    field public static final int ENDCOM = 20; // 0x14
-    field public static final int ENDHDR = 22; // 0x16
-    field public static final int ENDOFF = 16; // 0x10
-    field public static final long ENDSIG = 101010256L; // 0x6054b50L
-    field public static final int ENDSIZ = 12; // 0xc
-    field public static final int ENDSUB = 8; // 0x8
-    field public static final int ENDTOT = 10; // 0xa
-    field public static final int EXTCRC = 4; // 0x4
-    field public static final int EXTHDR = 16; // 0x10
-    field public static final int EXTLEN = 12; // 0xc
-    field public static final long EXTSIG = 134695760L; // 0x8074b50L
-    field public static final int EXTSIZ = 8; // 0x8
-    field public static final int LOCCRC = 14; // 0xe
-    field public static final int LOCEXT = 28; // 0x1c
-    field public static final int LOCFLG = 6; // 0x6
-    field public static final int LOCHDR = 30; // 0x1e
-    field public static final int LOCHOW = 8; // 0x8
-    field public static final int LOCLEN = 22; // 0x16
-    field public static final int LOCNAM = 26; // 0x1a
-    field public static final long LOCSIG = 67324752L; // 0x4034b50L
-    field public static final int LOCSIZ = 18; // 0x12
-    field public static final int LOCTIM = 10; // 0xa
-    field public static final int LOCVER = 4; // 0x4
-  }
-
-  public class ZipOutputStream extends java.util.zip.DeflaterOutputStream {
-    ctor public ZipOutputStream(java.io.OutputStream);
-    ctor public ZipOutputStream(java.io.OutputStream, java.nio.charset.Charset);
-    method public void closeEntry() throws java.io.IOException;
-    method public void putNextEntry(java.util.zip.ZipEntry) throws java.io.IOException;
-    method public void setComment(String);
-    method public void setLevel(int);
-    method public void setMethod(int);
-    field public static final int CENATT = 36; // 0x24
-    field public static final int CENATX = 38; // 0x26
-    field public static final int CENCOM = 32; // 0x20
-    field public static final int CENCRC = 16; // 0x10
-    field public static final int CENDSK = 34; // 0x22
-    field public static final int CENEXT = 30; // 0x1e
-    field public static final int CENFLG = 8; // 0x8
-    field public static final int CENHDR = 46; // 0x2e
-    field public static final int CENHOW = 10; // 0xa
-    field public static final int CENLEN = 24; // 0x18
-    field public static final int CENNAM = 28; // 0x1c
-    field public static final int CENOFF = 42; // 0x2a
-    field public static final long CENSIG = 33639248L; // 0x2014b50L
-    field public static final int CENSIZ = 20; // 0x14
-    field public static final int CENTIM = 12; // 0xc
-    field public static final int CENVEM = 4; // 0x4
-    field public static final int CENVER = 6; // 0x6
-    field public static final int DEFLATED = 8; // 0x8
-    field public static final int ENDCOM = 20; // 0x14
-    field public static final int ENDHDR = 22; // 0x16
-    field public static final int ENDOFF = 16; // 0x10
-    field public static final long ENDSIG = 101010256L; // 0x6054b50L
-    field public static final int ENDSIZ = 12; // 0xc
-    field public static final int ENDSUB = 8; // 0x8
-    field public static final int ENDTOT = 10; // 0xa
-    field public static final int EXTCRC = 4; // 0x4
-    field public static final int EXTHDR = 16; // 0x10
-    field public static final int EXTLEN = 12; // 0xc
-    field public static final long EXTSIG = 134695760L; // 0x8074b50L
-    field public static final int EXTSIZ = 8; // 0x8
-    field public static final int LOCCRC = 14; // 0xe
-    field public static final int LOCEXT = 28; // 0x1c
-    field public static final int LOCFLG = 6; // 0x6
-    field public static final int LOCHDR = 30; // 0x1e
-    field public static final int LOCHOW = 8; // 0x8
-    field public static final int LOCLEN = 22; // 0x16
-    field public static final int LOCNAM = 26; // 0x1a
-    field public static final long LOCSIG = 67324752L; // 0x4034b50L
-    field public static final int LOCSIZ = 18; // 0x12
-    field public static final int LOCTIM = 10; // 0xa
-    field public static final int LOCVER = 4; // 0x4
-    field public static final int STORED = 0; // 0x0
-  }
-
-}
-
-package javax.crypto {
-
-  public class AEADBadTagException extends javax.crypto.BadPaddingException {
-    ctor public AEADBadTagException();
-    ctor public AEADBadTagException(String);
-  }
-
-  public class BadPaddingException extends java.security.GeneralSecurityException {
-    ctor public BadPaddingException();
-    ctor public BadPaddingException(String);
-  }
-
-  public class Cipher {
-    ctor protected Cipher(javax.crypto.CipherSpi, java.security.Provider, String);
-    method public final byte[] doFinal() throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException;
-    method public final int doFinal(byte[], int) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException;
-    method public final byte[] doFinal(byte[]) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException;
-    method public final byte[] doFinal(byte[], int, int) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException;
-    method public final int doFinal(byte[], int, int, byte[]) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException;
-    method public final int doFinal(byte[], int, int, byte[], int) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException;
-    method public final int doFinal(java.nio.ByteBuffer, java.nio.ByteBuffer) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException;
-    method public final String getAlgorithm();
-    method public final int getBlockSize();
-    method public final javax.crypto.ExemptionMechanism getExemptionMechanism();
-    method public final byte[] getIV();
-    method public static final javax.crypto.Cipher getInstance(String) throws java.security.NoSuchAlgorithmException, javax.crypto.NoSuchPaddingException;
-    method public static final javax.crypto.Cipher getInstance(String, String) throws java.security.NoSuchAlgorithmException, javax.crypto.NoSuchPaddingException, java.security.NoSuchProviderException;
-    method public static final javax.crypto.Cipher getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException, javax.crypto.NoSuchPaddingException;
-    method public static final int getMaxAllowedKeyLength(String) throws java.security.NoSuchAlgorithmException;
-    method public static final java.security.spec.AlgorithmParameterSpec getMaxAllowedParameterSpec(String) throws java.security.NoSuchAlgorithmException;
-    method public final int getOutputSize(int);
-    method public final java.security.AlgorithmParameters getParameters();
-    method public final java.security.Provider getProvider();
-    method public final void init(int, java.security.Key) throws java.security.InvalidKeyException;
-    method public final void init(int, java.security.Key, java.security.SecureRandom) throws java.security.InvalidKeyException;
-    method public final void init(int, java.security.Key, java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-    method public final void init(int, java.security.Key, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-    method public final void init(int, java.security.Key, java.security.AlgorithmParameters) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-    method public final void init(int, java.security.Key, java.security.AlgorithmParameters, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-    method public final void init(int, java.security.cert.Certificate) throws java.security.InvalidKeyException;
-    method public final void init(int, java.security.cert.Certificate, java.security.SecureRandom) throws java.security.InvalidKeyException;
-    method public final java.security.Key unwrap(byte[], String, int) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
-    method public final byte[] update(byte[]);
-    method public final byte[] update(byte[], int, int);
-    method public final int update(byte[], int, int, byte[]) throws javax.crypto.ShortBufferException;
-    method public final int update(byte[], int, int, byte[], int) throws javax.crypto.ShortBufferException;
-    method public final int update(java.nio.ByteBuffer, java.nio.ByteBuffer) throws javax.crypto.ShortBufferException;
-    method public final void updateAAD(byte[]);
-    method public final void updateAAD(byte[], int, int);
-    method public final void updateAAD(java.nio.ByteBuffer);
-    method public final byte[] wrap(java.security.Key) throws javax.crypto.IllegalBlockSizeException, java.security.InvalidKeyException;
-    field public static final int DECRYPT_MODE = 2; // 0x2
-    field public static final int ENCRYPT_MODE = 1; // 0x1
-    field public static final int PRIVATE_KEY = 2; // 0x2
-    field public static final int PUBLIC_KEY = 1; // 0x1
-    field public static final int SECRET_KEY = 3; // 0x3
-    field public static final int UNWRAP_MODE = 4; // 0x4
-    field public static final int WRAP_MODE = 3; // 0x3
-  }
-
-  public class CipherInputStream extends java.io.FilterInputStream {
-    ctor public CipherInputStream(java.io.InputStream, javax.crypto.Cipher);
-    ctor protected CipherInputStream(java.io.InputStream);
-  }
-
-  public class CipherOutputStream extends java.io.FilterOutputStream {
-    ctor public CipherOutputStream(java.io.OutputStream, javax.crypto.Cipher);
-    ctor protected CipherOutputStream(java.io.OutputStream);
-  }
-
-  public abstract class CipherSpi {
-    ctor public CipherSpi();
-    method protected abstract byte[] engineDoFinal(byte[], int, int) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException;
-    method protected abstract int engineDoFinal(byte[], int, int, byte[], int) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException;
-    method protected int engineDoFinal(java.nio.ByteBuffer, java.nio.ByteBuffer) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException;
-    method protected abstract int engineGetBlockSize();
-    method protected abstract byte[] engineGetIV();
-    method protected int engineGetKeySize(java.security.Key) throws java.security.InvalidKeyException;
-    method protected abstract int engineGetOutputSize(int);
-    method protected abstract java.security.AlgorithmParameters engineGetParameters();
-    method protected abstract void engineInit(int, java.security.Key, java.security.SecureRandom) throws java.security.InvalidKeyException;
-    method protected abstract void engineInit(int, java.security.Key, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-    method protected abstract void engineInit(int, java.security.Key, java.security.AlgorithmParameters, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-    method protected abstract void engineSetMode(String) throws java.security.NoSuchAlgorithmException;
-    method protected abstract void engineSetPadding(String) throws javax.crypto.NoSuchPaddingException;
-    method protected java.security.Key engineUnwrap(byte[], String, int) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
-    method protected abstract byte[] engineUpdate(byte[], int, int);
-    method protected abstract int engineUpdate(byte[], int, int, byte[], int) throws javax.crypto.ShortBufferException;
-    method protected int engineUpdate(java.nio.ByteBuffer, java.nio.ByteBuffer) throws javax.crypto.ShortBufferException;
-    method protected void engineUpdateAAD(byte[], int, int);
-    method protected void engineUpdateAAD(java.nio.ByteBuffer);
-    method protected byte[] engineWrap(java.security.Key) throws javax.crypto.IllegalBlockSizeException, java.security.InvalidKeyException;
-  }
-
-  public class EncryptedPrivateKeyInfo {
-    ctor public EncryptedPrivateKeyInfo(byte[]) throws java.io.IOException;
-    ctor public EncryptedPrivateKeyInfo(String, byte[]) throws java.security.NoSuchAlgorithmException;
-    ctor public EncryptedPrivateKeyInfo(java.security.AlgorithmParameters, byte[]) throws java.security.NoSuchAlgorithmException;
-    method public String getAlgName();
-    method public java.security.AlgorithmParameters getAlgParameters();
-    method public byte[] getEncoded() throws java.io.IOException;
-    method public byte[] getEncryptedData();
-    method public java.security.spec.PKCS8EncodedKeySpec getKeySpec(javax.crypto.Cipher) throws java.security.spec.InvalidKeySpecException;
-    method public java.security.spec.PKCS8EncodedKeySpec getKeySpec(java.security.Key) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
-    method public java.security.spec.PKCS8EncodedKeySpec getKeySpec(java.security.Key, String) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public java.security.spec.PKCS8EncodedKeySpec getKeySpec(java.security.Key, java.security.Provider) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
-  }
-
-  public class ExemptionMechanism {
-    ctor protected ExemptionMechanism(javax.crypto.ExemptionMechanismSpi, java.security.Provider, String);
-    method public final byte[] genExemptionBlob() throws javax.crypto.ExemptionMechanismException, java.lang.IllegalStateException;
-    method public final int genExemptionBlob(byte[]) throws javax.crypto.ExemptionMechanismException, java.lang.IllegalStateException, javax.crypto.ShortBufferException;
-    method public final int genExemptionBlob(byte[], int) throws javax.crypto.ExemptionMechanismException, java.lang.IllegalStateException, javax.crypto.ShortBufferException;
-    method public static final javax.crypto.ExemptionMechanism getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static final javax.crypto.ExemptionMechanism getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static final javax.crypto.ExemptionMechanism getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final String getName();
-    method public final int getOutputSize(int) throws java.lang.IllegalStateException;
-    method public final java.security.Provider getProvider();
-    method public final void init(java.security.Key) throws javax.crypto.ExemptionMechanismException, java.security.InvalidKeyException;
-    method public final void init(java.security.Key, java.security.spec.AlgorithmParameterSpec) throws javax.crypto.ExemptionMechanismException, java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-    method public final void init(java.security.Key, java.security.AlgorithmParameters) throws javax.crypto.ExemptionMechanismException, java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-    method public final boolean isCryptoAllowed(java.security.Key) throws javax.crypto.ExemptionMechanismException;
-  }
-
-  public class ExemptionMechanismException extends java.security.GeneralSecurityException {
-    ctor public ExemptionMechanismException();
-    ctor public ExemptionMechanismException(String);
-  }
-
-  public abstract class ExemptionMechanismSpi {
-    ctor public ExemptionMechanismSpi();
-    method protected abstract byte[] engineGenExemptionBlob() throws javax.crypto.ExemptionMechanismException;
-    method protected abstract int engineGenExemptionBlob(byte[], int) throws javax.crypto.ExemptionMechanismException, javax.crypto.ShortBufferException;
-    method protected abstract int engineGetOutputSize(int);
-    method protected abstract void engineInit(java.security.Key) throws javax.crypto.ExemptionMechanismException, java.security.InvalidKeyException;
-    method protected abstract void engineInit(java.security.Key, java.security.spec.AlgorithmParameterSpec) throws javax.crypto.ExemptionMechanismException, java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-    method protected abstract void engineInit(java.security.Key, java.security.AlgorithmParameters) throws javax.crypto.ExemptionMechanismException, java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-  }
-
-  public class IllegalBlockSizeException extends java.security.GeneralSecurityException {
-    ctor public IllegalBlockSizeException();
-    ctor public IllegalBlockSizeException(String);
-  }
-
-  public class KeyAgreement {
-    ctor protected KeyAgreement(javax.crypto.KeyAgreementSpi, java.security.Provider, String);
-    method public final java.security.Key doPhase(java.security.Key, boolean) throws java.lang.IllegalStateException, java.security.InvalidKeyException;
-    method public final byte[] generateSecret() throws java.lang.IllegalStateException;
-    method public final int generateSecret(byte[], int) throws java.lang.IllegalStateException, javax.crypto.ShortBufferException;
-    method public final javax.crypto.SecretKey generateSecret(String) throws java.lang.IllegalStateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
-    method public final String getAlgorithm();
-    method public static final javax.crypto.KeyAgreement getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static final javax.crypto.KeyAgreement getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static final javax.crypto.KeyAgreement getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final java.security.Provider getProvider();
-    method public final void init(java.security.Key) throws java.security.InvalidKeyException;
-    method public final void init(java.security.Key, java.security.SecureRandom) throws java.security.InvalidKeyException;
-    method public final void init(java.security.Key, java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-    method public final void init(java.security.Key, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-  }
-
-  public abstract class KeyAgreementSpi {
-    ctor public KeyAgreementSpi();
-    method protected abstract java.security.Key engineDoPhase(java.security.Key, boolean) throws java.lang.IllegalStateException, java.security.InvalidKeyException;
-    method protected abstract byte[] engineGenerateSecret() throws java.lang.IllegalStateException;
-    method protected abstract int engineGenerateSecret(byte[], int) throws java.lang.IllegalStateException, javax.crypto.ShortBufferException;
-    method protected abstract javax.crypto.SecretKey engineGenerateSecret(String) throws java.lang.IllegalStateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
-    method protected abstract void engineInit(java.security.Key, java.security.SecureRandom) throws java.security.InvalidKeyException;
-    method protected abstract void engineInit(java.security.Key, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-  }
-
-  public class KeyGenerator {
-    ctor protected KeyGenerator(javax.crypto.KeyGeneratorSpi, java.security.Provider, String);
-    method public final javax.crypto.SecretKey generateKey();
-    method public final String getAlgorithm();
-    method public static final javax.crypto.KeyGenerator getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static final javax.crypto.KeyGenerator getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static final javax.crypto.KeyGenerator getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final java.security.Provider getProvider();
-    method public final void init(java.security.SecureRandom);
-    method public final void init(java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException;
-    method public final void init(java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException;
-    method public final void init(int);
-    method public final void init(int, java.security.SecureRandom);
-  }
-
-  public abstract class KeyGeneratorSpi {
-    ctor public KeyGeneratorSpi();
-    method protected abstract javax.crypto.SecretKey engineGenerateKey();
-    method protected abstract void engineInit(java.security.SecureRandom);
-    method protected abstract void engineInit(java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException;
-    method protected abstract void engineInit(int, java.security.SecureRandom);
-  }
-
-  public class Mac implements java.lang.Cloneable {
-    ctor protected Mac(javax.crypto.MacSpi, java.security.Provider, String);
-    method public final Object clone() throws java.lang.CloneNotSupportedException;
-    method public final byte[] doFinal() throws java.lang.IllegalStateException;
-    method public final void doFinal(byte[], int) throws java.lang.IllegalStateException, javax.crypto.ShortBufferException;
-    method public final byte[] doFinal(byte[]) throws java.lang.IllegalStateException;
-    method public final String getAlgorithm();
-    method public static final javax.crypto.Mac getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static final javax.crypto.Mac getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static final javax.crypto.Mac getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final int getMacLength();
-    method public final java.security.Provider getProvider();
-    method public final void init(java.security.Key) throws java.security.InvalidKeyException;
-    method public final void init(java.security.Key, java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-    method public final void reset();
-    method public final void update(byte) throws java.lang.IllegalStateException;
-    method public final void update(byte[]) throws java.lang.IllegalStateException;
-    method public final void update(byte[], int, int) throws java.lang.IllegalStateException;
-    method public final void update(java.nio.ByteBuffer);
-  }
-
-  public abstract class MacSpi {
-    ctor public MacSpi();
-    method public Object clone() throws java.lang.CloneNotSupportedException;
-    method protected abstract byte[] engineDoFinal();
-    method protected abstract int engineGetMacLength();
-    method protected abstract void engineInit(java.security.Key, java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-    method protected abstract void engineReset();
-    method protected abstract void engineUpdate(byte);
-    method protected abstract void engineUpdate(byte[], int, int);
-    method protected void engineUpdate(java.nio.ByteBuffer);
-  }
-
-  public class NoSuchPaddingException extends java.security.GeneralSecurityException {
-    ctor public NoSuchPaddingException();
-    ctor public NoSuchPaddingException(String);
-  }
-
-  public class NullCipher extends javax.crypto.Cipher {
-    ctor public NullCipher();
-  }
-
-  public class SealedObject implements java.io.Serializable {
-    ctor public SealedObject(java.io.Serializable, javax.crypto.Cipher) throws java.io.IOException, javax.crypto.IllegalBlockSizeException;
-    ctor protected SealedObject(javax.crypto.SealedObject);
-    method public final String getAlgorithm();
-    method public final Object getObject(java.security.Key) throws java.lang.ClassNotFoundException, java.io.IOException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
-    method public final Object getObject(javax.crypto.Cipher) throws javax.crypto.BadPaddingException, java.lang.ClassNotFoundException, java.io.IOException, javax.crypto.IllegalBlockSizeException;
-    method public final Object getObject(java.security.Key, String) throws java.lang.ClassNotFoundException, java.io.IOException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    field protected byte[] encodedParams;
-  }
-
-  public interface SecretKey extends java.security.Key javax.security.auth.Destroyable {
-    field public static final long serialVersionUID = -4795878709595146952L; // 0xbd719db928b8f538L
-  }
-
-  public class SecretKeyFactory {
-    ctor protected SecretKeyFactory(javax.crypto.SecretKeyFactorySpi, java.security.Provider, String);
-    method public final javax.crypto.SecretKey generateSecret(java.security.spec.KeySpec) throws java.security.spec.InvalidKeySpecException;
-    method public final String getAlgorithm();
-    method public static final javax.crypto.SecretKeyFactory getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static final javax.crypto.SecretKeyFactory getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static final javax.crypto.SecretKeyFactory getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final java.security.spec.KeySpec getKeySpec(javax.crypto.SecretKey, Class<?>) throws java.security.spec.InvalidKeySpecException;
-    method public final java.security.Provider getProvider();
-    method public final javax.crypto.SecretKey translateKey(javax.crypto.SecretKey) throws java.security.InvalidKeyException;
-  }
-
-  public abstract class SecretKeyFactorySpi {
-    ctor public SecretKeyFactorySpi();
-    method protected abstract javax.crypto.SecretKey engineGenerateSecret(java.security.spec.KeySpec) throws java.security.spec.InvalidKeySpecException;
-    method protected abstract java.security.spec.KeySpec engineGetKeySpec(javax.crypto.SecretKey, Class<?>) throws java.security.spec.InvalidKeySpecException;
-    method protected abstract javax.crypto.SecretKey engineTranslateKey(javax.crypto.SecretKey) throws java.security.InvalidKeyException;
-  }
-
-  public class ShortBufferException extends java.security.GeneralSecurityException {
-    ctor public ShortBufferException();
-    ctor public ShortBufferException(String);
-  }
-
-}
-
-package javax.crypto.interfaces {
-
-  public interface DHKey {
-    method public javax.crypto.spec.DHParameterSpec getParams();
-  }
-
-  public interface DHPrivateKey extends javax.crypto.interfaces.DHKey java.security.PrivateKey {
-    method public java.math.BigInteger getX();
-    field public static final long serialVersionUID = 2211791113380396553L; // 0x1eb1dc4c8e677e09L
-  }
-
-  public interface DHPublicKey extends javax.crypto.interfaces.DHKey java.security.PublicKey {
-    method public java.math.BigInteger getY();
-    field public static final long serialVersionUID = -6628103563352519193L; // 0xa4043eed23df4de7L
-  }
-
-  public interface PBEKey extends javax.crypto.SecretKey {
-    method public int getIterationCount();
-    method public char[] getPassword();
-    method public byte[] getSalt();
-    field public static final long serialVersionUID = -1430015993304333921L; // 0xec279007d7f7c19fL
-  }
-
-}
-
-package javax.crypto.spec {
-
-  public class DESKeySpec implements java.security.spec.KeySpec {
-    ctor public DESKeySpec(byte[]) throws java.security.InvalidKeyException;
-    ctor public DESKeySpec(byte[], int) throws java.security.InvalidKeyException;
-    method public byte[] getKey();
-    method public static boolean isParityAdjusted(byte[], int) throws java.security.InvalidKeyException;
-    method public static boolean isWeak(byte[], int) throws java.security.InvalidKeyException;
-    field public static final int DES_KEY_LEN = 8; // 0x8
-  }
-
-  public class DESedeKeySpec implements java.security.spec.KeySpec {
-    ctor public DESedeKeySpec(byte[]) throws java.security.InvalidKeyException;
-    ctor public DESedeKeySpec(byte[], int) throws java.security.InvalidKeyException;
-    method public byte[] getKey();
-    method public static boolean isParityAdjusted(byte[], int) throws java.security.InvalidKeyException;
-    field public static final int DES_EDE_KEY_LEN = 24; // 0x18
-  }
-
-  public class DHGenParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public DHGenParameterSpec(int, int);
-    method public int getExponentSize();
-    method public int getPrimeSize();
-  }
-
-  public class DHParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public DHParameterSpec(java.math.BigInteger, java.math.BigInteger);
-    ctor public DHParameterSpec(java.math.BigInteger, java.math.BigInteger, int);
-    method public java.math.BigInteger getG();
-    method public int getL();
-    method public java.math.BigInteger getP();
-  }
-
-  public class DHPrivateKeySpec implements java.security.spec.KeySpec {
-    ctor public DHPrivateKeySpec(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
-    method public java.math.BigInteger getG();
-    method public java.math.BigInteger getP();
-    method public java.math.BigInteger getX();
-  }
-
-  public class DHPublicKeySpec implements java.security.spec.KeySpec {
-    ctor public DHPublicKeySpec(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
-    method public java.math.BigInteger getG();
-    method public java.math.BigInteger getP();
-    method public java.math.BigInteger getY();
-  }
-
-  public class GCMParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public GCMParameterSpec(int, byte[]);
-    ctor public GCMParameterSpec(int, byte[], int, int);
-    method public byte[] getIV();
-    method public int getTLen();
-  }
-
-  public class IvParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public IvParameterSpec(byte[]);
-    ctor public IvParameterSpec(byte[], int, int);
-    method public byte[] getIV();
-  }
-
-  public class OAEPParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public OAEPParameterSpec(String, String, java.security.spec.AlgorithmParameterSpec, javax.crypto.spec.PSource);
-    method public String getDigestAlgorithm();
-    method public String getMGFAlgorithm();
-    method public java.security.spec.AlgorithmParameterSpec getMGFParameters();
-    method public javax.crypto.spec.PSource getPSource();
-    field public static final javax.crypto.spec.OAEPParameterSpec DEFAULT;
-  }
-
-  public class PBEKeySpec implements java.security.spec.KeySpec {
-    ctor public PBEKeySpec(char[]);
-    ctor public PBEKeySpec(char[], byte[], int, int);
-    ctor public PBEKeySpec(char[], byte[], int);
-    method public final void clearPassword();
-    method public final int getIterationCount();
-    method public final int getKeyLength();
-    method public final char[] getPassword();
-    method public final byte[] getSalt();
-  }
-
-  public class PBEParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public PBEParameterSpec(byte[], int);
-    ctor public PBEParameterSpec(byte[], int, java.security.spec.AlgorithmParameterSpec);
-    method public int getIterationCount();
-    method public java.security.spec.AlgorithmParameterSpec getParameterSpec();
-    method public byte[] getSalt();
-  }
-
-  public class PSource {
-    ctor protected PSource(String);
-    method public String getAlgorithm();
-  }
-
-  public static final class PSource.PSpecified extends javax.crypto.spec.PSource {
-    ctor public PSource.PSpecified(byte[]);
-    method public byte[] getValue();
-    field public static final javax.crypto.spec.PSource.PSpecified DEFAULT;
-  }
-
-  public class RC2ParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public RC2ParameterSpec(int);
-    ctor public RC2ParameterSpec(int, byte[]);
-    ctor public RC2ParameterSpec(int, byte[], int);
-    method public int getEffectiveKeyBits();
-    method public byte[] getIV();
-  }
-
-  public class RC5ParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public RC5ParameterSpec(int, int, int);
-    ctor public RC5ParameterSpec(int, int, int, byte[]);
-    ctor public RC5ParameterSpec(int, int, int, byte[], int);
-    method public byte[] getIV();
-    method public int getRounds();
-    method public int getVersion();
-    method public int getWordSize();
-  }
-
-  public class SecretKeySpec implements java.security.spec.KeySpec javax.crypto.SecretKey {
-    ctor public SecretKeySpec(byte[], String);
-    ctor public SecretKeySpec(byte[], int, int, String);
-    method public String getAlgorithm();
-    method public byte[] getEncoded();
-    method public String getFormat();
-  }
-
-}
-
-package javax.microedition.khronos.egl {
-
-  public interface EGL {
-  }
-
-  public interface EGL10 extends javax.microedition.khronos.egl.EGL {
-    method public boolean eglChooseConfig(javax.microedition.khronos.egl.EGLDisplay, int[], javax.microedition.khronos.egl.EGLConfig[], int, int[]);
-    method public boolean eglCopyBuffers(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface, Object);
-    method public javax.microedition.khronos.egl.EGLContext eglCreateContext(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, javax.microedition.khronos.egl.EGLContext, int[]);
-    method public javax.microedition.khronos.egl.EGLSurface eglCreatePbufferSurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, int[]);
-    method @Deprecated public javax.microedition.khronos.egl.EGLSurface eglCreatePixmapSurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, Object, int[]);
-    method public javax.microedition.khronos.egl.EGLSurface eglCreateWindowSurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, Object, int[]);
-    method public boolean eglDestroyContext(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLContext);
-    method public boolean eglDestroySurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface);
-    method public boolean eglGetConfigAttrib(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, int, int[]);
-    method public boolean eglGetConfigs(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig[], int, int[]);
-    method public javax.microedition.khronos.egl.EGLContext eglGetCurrentContext();
-    method public javax.microedition.khronos.egl.EGLDisplay eglGetCurrentDisplay();
-    method public javax.microedition.khronos.egl.EGLSurface eglGetCurrentSurface(int);
-    method public javax.microedition.khronos.egl.EGLDisplay eglGetDisplay(Object);
-    method public int eglGetError();
-    method public boolean eglInitialize(javax.microedition.khronos.egl.EGLDisplay, int[]);
-    method public boolean eglMakeCurrent(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface, javax.microedition.khronos.egl.EGLSurface, javax.microedition.khronos.egl.EGLContext);
-    method public boolean eglQueryContext(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLContext, int, int[]);
-    method public String eglQueryString(javax.microedition.khronos.egl.EGLDisplay, int);
-    method public boolean eglQuerySurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface, int, int[]);
-    method public boolean eglSwapBuffers(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface);
-    method public boolean eglTerminate(javax.microedition.khronos.egl.EGLDisplay);
-    method public boolean eglWaitGL();
-    method public boolean eglWaitNative(int, Object);
-    field public static final int EGL_ALPHA_FORMAT = 12424; // 0x3088
-    field public static final int EGL_ALPHA_MASK_SIZE = 12350; // 0x303e
-    field public static final int EGL_ALPHA_SIZE = 12321; // 0x3021
-    field public static final int EGL_BAD_ACCESS = 12290; // 0x3002
-    field public static final int EGL_BAD_ALLOC = 12291; // 0x3003
-    field public static final int EGL_BAD_ATTRIBUTE = 12292; // 0x3004
-    field public static final int EGL_BAD_CONFIG = 12293; // 0x3005
-    field public static final int EGL_BAD_CONTEXT = 12294; // 0x3006
-    field public static final int EGL_BAD_CURRENT_SURFACE = 12295; // 0x3007
-    field public static final int EGL_BAD_DISPLAY = 12296; // 0x3008
-    field public static final int EGL_BAD_MATCH = 12297; // 0x3009
-    field public static final int EGL_BAD_NATIVE_PIXMAP = 12298; // 0x300a
-    field public static final int EGL_BAD_NATIVE_WINDOW = 12299; // 0x300b
-    field public static final int EGL_BAD_PARAMETER = 12300; // 0x300c
-    field public static final int EGL_BAD_SURFACE = 12301; // 0x300d
-    field public static final int EGL_BLUE_SIZE = 12322; // 0x3022
-    field public static final int EGL_BUFFER_SIZE = 12320; // 0x3020
-    field public static final int EGL_COLORSPACE = 12423; // 0x3087
-    field public static final int EGL_COLOR_BUFFER_TYPE = 12351; // 0x303f
-    field public static final int EGL_CONFIG_CAVEAT = 12327; // 0x3027
-    field public static final int EGL_CONFIG_ID = 12328; // 0x3028
-    field public static final int EGL_CORE_NATIVE_ENGINE = 12379; // 0x305b
-    field public static final Object EGL_DEFAULT_DISPLAY;
-    field public static final int EGL_DEPTH_SIZE = 12325; // 0x3025
-    field public static final int EGL_DONT_CARE = -1; // 0xffffffff
-    field public static final int EGL_DRAW = 12377; // 0x3059
-    field public static final int EGL_EXTENSIONS = 12373; // 0x3055
-    field public static final int EGL_GREEN_SIZE = 12323; // 0x3023
-    field public static final int EGL_HEIGHT = 12374; // 0x3056
-    field public static final int EGL_HORIZONTAL_RESOLUTION = 12432; // 0x3090
-    field public static final int EGL_LARGEST_PBUFFER = 12376; // 0x3058
-    field public static final int EGL_LEVEL = 12329; // 0x3029
-    field public static final int EGL_LUMINANCE_BUFFER = 12431; // 0x308f
-    field public static final int EGL_LUMINANCE_SIZE = 12349; // 0x303d
-    field public static final int EGL_MAX_PBUFFER_HEIGHT = 12330; // 0x302a
-    field public static final int EGL_MAX_PBUFFER_PIXELS = 12331; // 0x302b
-    field public static final int EGL_MAX_PBUFFER_WIDTH = 12332; // 0x302c
-    field public static final int EGL_NATIVE_RENDERABLE = 12333; // 0x302d
-    field public static final int EGL_NATIVE_VISUAL_ID = 12334; // 0x302e
-    field public static final int EGL_NATIVE_VISUAL_TYPE = 12335; // 0x302f
-    field public static final int EGL_NONE = 12344; // 0x3038
-    field public static final int EGL_NON_CONFORMANT_CONFIG = 12369; // 0x3051
-    field public static final int EGL_NOT_INITIALIZED = 12289; // 0x3001
-    field public static final javax.microedition.khronos.egl.EGLContext EGL_NO_CONTEXT;
-    field public static final javax.microedition.khronos.egl.EGLDisplay EGL_NO_DISPLAY;
-    field public static final javax.microedition.khronos.egl.EGLSurface EGL_NO_SURFACE;
-    field public static final int EGL_PBUFFER_BIT = 1; // 0x1
-    field public static final int EGL_PIXEL_ASPECT_RATIO = 12434; // 0x3092
-    field public static final int EGL_PIXMAP_BIT = 2; // 0x2
-    field public static final int EGL_READ = 12378; // 0x305a
-    field public static final int EGL_RED_SIZE = 12324; // 0x3024
-    field public static final int EGL_RENDERABLE_TYPE = 12352; // 0x3040
-    field public static final int EGL_RENDER_BUFFER = 12422; // 0x3086
-    field public static final int EGL_RGB_BUFFER = 12430; // 0x308e
-    field public static final int EGL_SAMPLES = 12337; // 0x3031
-    field public static final int EGL_SAMPLE_BUFFERS = 12338; // 0x3032
-    field public static final int EGL_SINGLE_BUFFER = 12421; // 0x3085
-    field public static final int EGL_SLOW_CONFIG = 12368; // 0x3050
-    field public static final int EGL_STENCIL_SIZE = 12326; // 0x3026
-    field public static final int EGL_SUCCESS = 12288; // 0x3000
-    field public static final int EGL_SURFACE_TYPE = 12339; // 0x3033
-    field public static final int EGL_TRANSPARENT_BLUE_VALUE = 12341; // 0x3035
-    field public static final int EGL_TRANSPARENT_GREEN_VALUE = 12342; // 0x3036
-    field public static final int EGL_TRANSPARENT_RED_VALUE = 12343; // 0x3037
-    field public static final int EGL_TRANSPARENT_RGB = 12370; // 0x3052
-    field public static final int EGL_TRANSPARENT_TYPE = 12340; // 0x3034
-    field public static final int EGL_VENDOR = 12371; // 0x3053
-    field public static final int EGL_VERSION = 12372; // 0x3054
-    field public static final int EGL_VERTICAL_RESOLUTION = 12433; // 0x3091
-    field public static final int EGL_WIDTH = 12375; // 0x3057
-    field public static final int EGL_WINDOW_BIT = 4; // 0x4
-  }
-
-  public interface EGL11 extends javax.microedition.khronos.egl.EGL10 {
-    field public static final int EGL_CONTEXT_LOST = 12302; // 0x300e
-  }
-
-  public abstract class EGLConfig {
-    ctor public EGLConfig();
-  }
-
-  public abstract class EGLContext {
-    ctor public EGLContext();
-    method public static javax.microedition.khronos.egl.EGL getEGL();
-    method public abstract javax.microedition.khronos.opengles.GL getGL();
-  }
-
-  public abstract class EGLDisplay {
-    ctor public EGLDisplay();
-  }
-
-  public abstract class EGLSurface {
-    ctor public EGLSurface();
-  }
-
-}
-
-package javax.microedition.khronos.opengles {
-
-  public interface GL {
-  }
-
-  public interface GL10 extends javax.microedition.khronos.opengles.GL {
-    method public void glActiveTexture(int);
-    method public void glAlphaFunc(int, float);
-    method public void glAlphaFuncx(int, int);
-    method public void glBindTexture(int, int);
-    method public void glBlendFunc(int, int);
-    method public void glClear(int);
-    method public void glClearColor(float, float, float, float);
-    method public void glClearColorx(int, int, int, int);
-    method public void glClearDepthf(float);
-    method public void glClearDepthx(int);
-    method public void glClearStencil(int);
-    method public void glClientActiveTexture(int);
-    method public void glColor4f(float, float, float, float);
-    method public void glColor4x(int, int, int, int);
-    method public void glColorMask(boolean, boolean, boolean, boolean);
-    method public void glColorPointer(int, int, int, java.nio.Buffer);
-    method public void glCompressedTexImage2D(int, int, int, int, int, int, int, java.nio.Buffer);
-    method public void glCompressedTexSubImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public void glCopyTexImage2D(int, int, int, int, int, int, int, int);
-    method public void glCopyTexSubImage2D(int, int, int, int, int, int, int, int);
-    method public void glCullFace(int);
-    method public void glDeleteTextures(int, int[], int);
-    method public void glDeleteTextures(int, java.nio.IntBuffer);
-    method public void glDepthFunc(int);
-    method public void glDepthMask(boolean);
-    method public void glDepthRangef(float, float);
-    method public void glDepthRangex(int, int);
-    method public void glDisable(int);
-    method public void glDisableClientState(int);
-    method public void glDrawArrays(int, int, int);
-    method public void glDrawElements(int, int, int, java.nio.Buffer);
-    method public void glEnable(int);
-    method public void glEnableClientState(int);
-    method public void glFinish();
-    method public void glFlush();
-    method public void glFogf(int, float);
-    method public void glFogfv(int, float[], int);
-    method public void glFogfv(int, java.nio.FloatBuffer);
-    method public void glFogx(int, int);
-    method public void glFogxv(int, int[], int);
-    method public void glFogxv(int, java.nio.IntBuffer);
-    method public void glFrontFace(int);
-    method public void glFrustumf(float, float, float, float, float, float);
-    method public void glFrustumx(int, int, int, int, int, int);
-    method public void glGenTextures(int, int[], int);
-    method public void glGenTextures(int, java.nio.IntBuffer);
-    method public int glGetError();
-    method public void glGetIntegerv(int, int[], int);
-    method public void glGetIntegerv(int, java.nio.IntBuffer);
-    method public String glGetString(int);
-    method public void glHint(int, int);
-    method public void glLightModelf(int, float);
-    method public void glLightModelfv(int, float[], int);
-    method public void glLightModelfv(int, java.nio.FloatBuffer);
-    method public void glLightModelx(int, int);
-    method public void glLightModelxv(int, int[], int);
-    method public void glLightModelxv(int, java.nio.IntBuffer);
-    method public void glLightf(int, int, float);
-    method public void glLightfv(int, int, float[], int);
-    method public void glLightfv(int, int, java.nio.FloatBuffer);
-    method public void glLightx(int, int, int);
-    method public void glLightxv(int, int, int[], int);
-    method public void glLightxv(int, int, java.nio.IntBuffer);
-    method public void glLineWidth(float);
-    method public void glLineWidthx(int);
-    method public void glLoadIdentity();
-    method public void glLoadMatrixf(float[], int);
-    method public void glLoadMatrixf(java.nio.FloatBuffer);
-    method public void glLoadMatrixx(int[], int);
-    method public void glLoadMatrixx(java.nio.IntBuffer);
-    method public void glLogicOp(int);
-    method public void glMaterialf(int, int, float);
-    method public void glMaterialfv(int, int, float[], int);
-    method public void glMaterialfv(int, int, java.nio.FloatBuffer);
-    method public void glMaterialx(int, int, int);
-    method public void glMaterialxv(int, int, int[], int);
-    method public void glMaterialxv(int, int, java.nio.IntBuffer);
-    method public void glMatrixMode(int);
-    method public void glMultMatrixf(float[], int);
-    method public void glMultMatrixf(java.nio.FloatBuffer);
-    method public void glMultMatrixx(int[], int);
-    method public void glMultMatrixx(java.nio.IntBuffer);
-    method public void glMultiTexCoord4f(int, float, float, float, float);
-    method public void glMultiTexCoord4x(int, int, int, int, int);
-    method public void glNormal3f(float, float, float);
-    method public void glNormal3x(int, int, int);
-    method public void glNormalPointer(int, int, java.nio.Buffer);
-    method public void glOrthof(float, float, float, float, float, float);
-    method public void glOrthox(int, int, int, int, int, int);
-    method public void glPixelStorei(int, int);
-    method public void glPointSize(float);
-    method public void glPointSizex(int);
-    method public void glPolygonOffset(float, float);
-    method public void glPolygonOffsetx(int, int);
-    method public void glPopMatrix();
-    method public void glPushMatrix();
-    method public void glReadPixels(int, int, int, int, int, int, java.nio.Buffer);
-    method public void glRotatef(float, float, float, float);
-    method public void glRotatex(int, int, int, int);
-    method public void glSampleCoverage(float, boolean);
-    method public void glSampleCoveragex(int, boolean);
-    method public void glScalef(float, float, float);
-    method public void glScalex(int, int, int);
-    method public void glScissor(int, int, int, int);
-    method public void glShadeModel(int);
-    method public void glStencilFunc(int, int, int);
-    method public void glStencilMask(int);
-    method public void glStencilOp(int, int, int);
-    method public void glTexCoordPointer(int, int, int, java.nio.Buffer);
-    method public void glTexEnvf(int, int, float);
-    method public void glTexEnvfv(int, int, float[], int);
-    method public void glTexEnvfv(int, int, java.nio.FloatBuffer);
-    method public void glTexEnvx(int, int, int);
-    method public void glTexEnvxv(int, int, int[], int);
-    method public void glTexEnvxv(int, int, java.nio.IntBuffer);
-    method public void glTexImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public void glTexParameterf(int, int, float);
-    method public void glTexParameterx(int, int, int);
-    method public void glTexSubImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public void glTranslatef(float, float, float);
-    method public void glTranslatex(int, int, int);
-    method public void glVertexPointer(int, int, int, java.nio.Buffer);
-    method public void glViewport(int, int, int, int);
-    field public static final int GL_ADD = 260; // 0x104
-    field public static final int GL_ALIASED_LINE_WIDTH_RANGE = 33902; // 0x846e
-    field public static final int GL_ALIASED_POINT_SIZE_RANGE = 33901; // 0x846d
-    field public static final int GL_ALPHA = 6406; // 0x1906
-    field public static final int GL_ALPHA_BITS = 3413; // 0xd55
-    field public static final int GL_ALPHA_TEST = 3008; // 0xbc0
-    field public static final int GL_ALWAYS = 519; // 0x207
-    field public static final int GL_AMBIENT = 4608; // 0x1200
-    field public static final int GL_AMBIENT_AND_DIFFUSE = 5634; // 0x1602
-    field public static final int GL_AND = 5377; // 0x1501
-    field public static final int GL_AND_INVERTED = 5380; // 0x1504
-    field public static final int GL_AND_REVERSE = 5378; // 0x1502
-    field public static final int GL_BACK = 1029; // 0x405
-    field public static final int GL_BLEND = 3042; // 0xbe2
-    field public static final int GL_BLUE_BITS = 3412; // 0xd54
-    field public static final int GL_BYTE = 5120; // 0x1400
-    field public static final int GL_CCW = 2305; // 0x901
-    field public static final int GL_CLAMP_TO_EDGE = 33071; // 0x812f
-    field public static final int GL_CLEAR = 5376; // 0x1500
-    field public static final int GL_COLOR_ARRAY = 32886; // 0x8076
-    field public static final int GL_COLOR_BUFFER_BIT = 16384; // 0x4000
-    field public static final int GL_COLOR_LOGIC_OP = 3058; // 0xbf2
-    field public static final int GL_COLOR_MATERIAL = 2903; // 0xb57
-    field public static final int GL_COMPRESSED_TEXTURE_FORMATS = 34467; // 0x86a3
-    field public static final int GL_CONSTANT_ATTENUATION = 4615; // 0x1207
-    field public static final int GL_COPY = 5379; // 0x1503
-    field public static final int GL_COPY_INVERTED = 5388; // 0x150c
-    field public static final int GL_CULL_FACE = 2884; // 0xb44
-    field public static final int GL_CW = 2304; // 0x900
-    field public static final int GL_DECAL = 8449; // 0x2101
-    field public static final int GL_DECR = 7683; // 0x1e03
-    field public static final int GL_DEPTH_BITS = 3414; // 0xd56
-    field public static final int GL_DEPTH_BUFFER_BIT = 256; // 0x100
-    field public static final int GL_DEPTH_TEST = 2929; // 0xb71
-    field public static final int GL_DIFFUSE = 4609; // 0x1201
-    field public static final int GL_DITHER = 3024; // 0xbd0
-    field public static final int GL_DONT_CARE = 4352; // 0x1100
-    field public static final int GL_DST_ALPHA = 772; // 0x304
-    field public static final int GL_DST_COLOR = 774; // 0x306
-    field public static final int GL_EMISSION = 5632; // 0x1600
-    field public static final int GL_EQUAL = 514; // 0x202
-    field public static final int GL_EQUIV = 5385; // 0x1509
-    field public static final int GL_EXP = 2048; // 0x800
-    field public static final int GL_EXP2 = 2049; // 0x801
-    field public static final int GL_EXTENSIONS = 7939; // 0x1f03
-    field public static final int GL_FALSE = 0; // 0x0
-    field public static final int GL_FASTEST = 4353; // 0x1101
-    field public static final int GL_FIXED = 5132; // 0x140c
-    field public static final int GL_FLAT = 7424; // 0x1d00
-    field public static final int GL_FLOAT = 5126; // 0x1406
-    field public static final int GL_FOG = 2912; // 0xb60
-    field public static final int GL_FOG_COLOR = 2918; // 0xb66
-    field public static final int GL_FOG_DENSITY = 2914; // 0xb62
-    field public static final int GL_FOG_END = 2916; // 0xb64
-    field public static final int GL_FOG_HINT = 3156; // 0xc54
-    field public static final int GL_FOG_MODE = 2917; // 0xb65
-    field public static final int GL_FOG_START = 2915; // 0xb63
-    field public static final int GL_FRONT = 1028; // 0x404
-    field public static final int GL_FRONT_AND_BACK = 1032; // 0x408
-    field public static final int GL_GEQUAL = 518; // 0x206
-    field public static final int GL_GREATER = 516; // 0x204
-    field public static final int GL_GREEN_BITS = 3411; // 0xd53
-    field public static final int GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES = 35739; // 0x8b9b
-    field public static final int GL_IMPLEMENTATION_COLOR_READ_TYPE_OES = 35738; // 0x8b9a
-    field public static final int GL_INCR = 7682; // 0x1e02
-    field public static final int GL_INVALID_ENUM = 1280; // 0x500
-    field public static final int GL_INVALID_OPERATION = 1282; // 0x502
-    field public static final int GL_INVALID_VALUE = 1281; // 0x501
-    field public static final int GL_INVERT = 5386; // 0x150a
-    field public static final int GL_KEEP = 7680; // 0x1e00
-    field public static final int GL_LEQUAL = 515; // 0x203
-    field public static final int GL_LESS = 513; // 0x201
-    field public static final int GL_LIGHT0 = 16384; // 0x4000
-    field public static final int GL_LIGHT1 = 16385; // 0x4001
-    field public static final int GL_LIGHT2 = 16386; // 0x4002
-    field public static final int GL_LIGHT3 = 16387; // 0x4003
-    field public static final int GL_LIGHT4 = 16388; // 0x4004
-    field public static final int GL_LIGHT5 = 16389; // 0x4005
-    field public static final int GL_LIGHT6 = 16390; // 0x4006
-    field public static final int GL_LIGHT7 = 16391; // 0x4007
-    field public static final int GL_LIGHTING = 2896; // 0xb50
-    field public static final int GL_LIGHT_MODEL_AMBIENT = 2899; // 0xb53
-    field public static final int GL_LIGHT_MODEL_TWO_SIDE = 2898; // 0xb52
-    field public static final int GL_LINEAR = 9729; // 0x2601
-    field public static final int GL_LINEAR_ATTENUATION = 4616; // 0x1208
-    field public static final int GL_LINEAR_MIPMAP_LINEAR = 9987; // 0x2703
-    field public static final int GL_LINEAR_MIPMAP_NEAREST = 9985; // 0x2701
-    field public static final int GL_LINES = 1; // 0x1
-    field public static final int GL_LINE_LOOP = 2; // 0x2
-    field public static final int GL_LINE_SMOOTH = 2848; // 0xb20
-    field public static final int GL_LINE_SMOOTH_HINT = 3154; // 0xc52
-    field public static final int GL_LINE_STRIP = 3; // 0x3
-    field public static final int GL_LUMINANCE = 6409; // 0x1909
-    field public static final int GL_LUMINANCE_ALPHA = 6410; // 0x190a
-    field public static final int GL_MAX_ELEMENTS_INDICES = 33001; // 0x80e9
-    field public static final int GL_MAX_ELEMENTS_VERTICES = 33000; // 0x80e8
-    field public static final int GL_MAX_LIGHTS = 3377; // 0xd31
-    field public static final int GL_MAX_MODELVIEW_STACK_DEPTH = 3382; // 0xd36
-    field public static final int GL_MAX_PROJECTION_STACK_DEPTH = 3384; // 0xd38
-    field public static final int GL_MAX_TEXTURE_SIZE = 3379; // 0xd33
-    field public static final int GL_MAX_TEXTURE_STACK_DEPTH = 3385; // 0xd39
-    field public static final int GL_MAX_TEXTURE_UNITS = 34018; // 0x84e2
-    field public static final int GL_MAX_VIEWPORT_DIMS = 3386; // 0xd3a
-    field public static final int GL_MODELVIEW = 5888; // 0x1700
-    field public static final int GL_MODULATE = 8448; // 0x2100
-    field public static final int GL_MULTISAMPLE = 32925; // 0x809d
-    field public static final int GL_NAND = 5390; // 0x150e
-    field public static final int GL_NEAREST = 9728; // 0x2600
-    field public static final int GL_NEAREST_MIPMAP_LINEAR = 9986; // 0x2702
-    field public static final int GL_NEAREST_MIPMAP_NEAREST = 9984; // 0x2700
-    field public static final int GL_NEVER = 512; // 0x200
-    field public static final int GL_NICEST = 4354; // 0x1102
-    field public static final int GL_NOOP = 5381; // 0x1505
-    field public static final int GL_NOR = 5384; // 0x1508
-    field public static final int GL_NORMALIZE = 2977; // 0xba1
-    field public static final int GL_NORMAL_ARRAY = 32885; // 0x8075
-    field public static final int GL_NOTEQUAL = 517; // 0x205
-    field public static final int GL_NO_ERROR = 0; // 0x0
-    field public static final int GL_NUM_COMPRESSED_TEXTURE_FORMATS = 34466; // 0x86a2
-    field public static final int GL_ONE = 1; // 0x1
-    field public static final int GL_ONE_MINUS_DST_ALPHA = 773; // 0x305
-    field public static final int GL_ONE_MINUS_DST_COLOR = 775; // 0x307
-    field public static final int GL_ONE_MINUS_SRC_ALPHA = 771; // 0x303
-    field public static final int GL_ONE_MINUS_SRC_COLOR = 769; // 0x301
-    field public static final int GL_OR = 5383; // 0x1507
-    field public static final int GL_OR_INVERTED = 5389; // 0x150d
-    field public static final int GL_OR_REVERSE = 5387; // 0x150b
-    field public static final int GL_OUT_OF_MEMORY = 1285; // 0x505
-    field public static final int GL_PACK_ALIGNMENT = 3333; // 0xd05
-    field public static final int GL_PALETTE4_R5_G6_B5_OES = 35730; // 0x8b92
-    field public static final int GL_PALETTE4_RGB5_A1_OES = 35732; // 0x8b94
-    field public static final int GL_PALETTE4_RGB8_OES = 35728; // 0x8b90
-    field public static final int GL_PALETTE4_RGBA4_OES = 35731; // 0x8b93
-    field public static final int GL_PALETTE4_RGBA8_OES = 35729; // 0x8b91
-    field public static final int GL_PALETTE8_R5_G6_B5_OES = 35735; // 0x8b97
-    field public static final int GL_PALETTE8_RGB5_A1_OES = 35737; // 0x8b99
-    field public static final int GL_PALETTE8_RGB8_OES = 35733; // 0x8b95
-    field public static final int GL_PALETTE8_RGBA4_OES = 35736; // 0x8b98
-    field public static final int GL_PALETTE8_RGBA8_OES = 35734; // 0x8b96
-    field public static final int GL_PERSPECTIVE_CORRECTION_HINT = 3152; // 0xc50
-    field public static final int GL_POINTS = 0; // 0x0
-    field public static final int GL_POINT_FADE_THRESHOLD_SIZE = 33064; // 0x8128
-    field public static final int GL_POINT_SIZE = 2833; // 0xb11
-    field public static final int GL_POINT_SMOOTH = 2832; // 0xb10
-    field public static final int GL_POINT_SMOOTH_HINT = 3153; // 0xc51
-    field public static final int GL_POLYGON_OFFSET_FILL = 32823; // 0x8037
-    field public static final int GL_POLYGON_SMOOTH_HINT = 3155; // 0xc53
-    field public static final int GL_POSITION = 4611; // 0x1203
-    field public static final int GL_PROJECTION = 5889; // 0x1701
-    field public static final int GL_QUADRATIC_ATTENUATION = 4617; // 0x1209
-    field public static final int GL_RED_BITS = 3410; // 0xd52
-    field public static final int GL_RENDERER = 7937; // 0x1f01
-    field public static final int GL_REPEAT = 10497; // 0x2901
-    field public static final int GL_REPLACE = 7681; // 0x1e01
-    field public static final int GL_RESCALE_NORMAL = 32826; // 0x803a
-    field public static final int GL_RGB = 6407; // 0x1907
-    field public static final int GL_RGBA = 6408; // 0x1908
-    field public static final int GL_SAMPLE_ALPHA_TO_COVERAGE = 32926; // 0x809e
-    field public static final int GL_SAMPLE_ALPHA_TO_ONE = 32927; // 0x809f
-    field public static final int GL_SAMPLE_COVERAGE = 32928; // 0x80a0
-    field public static final int GL_SCISSOR_TEST = 3089; // 0xc11
-    field public static final int GL_SET = 5391; // 0x150f
-    field public static final int GL_SHININESS = 5633; // 0x1601
-    field public static final int GL_SHORT = 5122; // 0x1402
-    field public static final int GL_SMOOTH = 7425; // 0x1d01
-    field public static final int GL_SMOOTH_LINE_WIDTH_RANGE = 2850; // 0xb22
-    field public static final int GL_SMOOTH_POINT_SIZE_RANGE = 2834; // 0xb12
-    field public static final int GL_SPECULAR = 4610; // 0x1202
-    field public static final int GL_SPOT_CUTOFF = 4614; // 0x1206
-    field public static final int GL_SPOT_DIRECTION = 4612; // 0x1204
-    field public static final int GL_SPOT_EXPONENT = 4613; // 0x1205
-    field public static final int GL_SRC_ALPHA = 770; // 0x302
-    field public static final int GL_SRC_ALPHA_SATURATE = 776; // 0x308
-    field public static final int GL_SRC_COLOR = 768; // 0x300
-    field public static final int GL_STACK_OVERFLOW = 1283; // 0x503
-    field public static final int GL_STACK_UNDERFLOW = 1284; // 0x504
-    field public static final int GL_STENCIL_BITS = 3415; // 0xd57
-    field public static final int GL_STENCIL_BUFFER_BIT = 1024; // 0x400
-    field public static final int GL_STENCIL_TEST = 2960; // 0xb90
-    field public static final int GL_SUBPIXEL_BITS = 3408; // 0xd50
-    field public static final int GL_TEXTURE = 5890; // 0x1702
-    field public static final int GL_TEXTURE0 = 33984; // 0x84c0
-    field public static final int GL_TEXTURE1 = 33985; // 0x84c1
-    field public static final int GL_TEXTURE10 = 33994; // 0x84ca
-    field public static final int GL_TEXTURE11 = 33995; // 0x84cb
-    field public static final int GL_TEXTURE12 = 33996; // 0x84cc
-    field public static final int GL_TEXTURE13 = 33997; // 0x84cd
-    field public static final int GL_TEXTURE14 = 33998; // 0x84ce
-    field public static final int GL_TEXTURE15 = 33999; // 0x84cf
-    field public static final int GL_TEXTURE16 = 34000; // 0x84d0
-    field public static final int GL_TEXTURE17 = 34001; // 0x84d1
-    field public static final int GL_TEXTURE18 = 34002; // 0x84d2
-    field public static final int GL_TEXTURE19 = 34003; // 0x84d3
-    field public static final int GL_TEXTURE2 = 33986; // 0x84c2
-    field public static final int GL_TEXTURE20 = 34004; // 0x84d4
-    field public static final int GL_TEXTURE21 = 34005; // 0x84d5
-    field public static final int GL_TEXTURE22 = 34006; // 0x84d6
-    field public static final int GL_TEXTURE23 = 34007; // 0x84d7
-    field public static final int GL_TEXTURE24 = 34008; // 0x84d8
-    field public static final int GL_TEXTURE25 = 34009; // 0x84d9
-    field public static final int GL_TEXTURE26 = 34010; // 0x84da
-    field public static final int GL_TEXTURE27 = 34011; // 0x84db
-    field public static final int GL_TEXTURE28 = 34012; // 0x84dc
-    field public static final int GL_TEXTURE29 = 34013; // 0x84dd
-    field public static final int GL_TEXTURE3 = 33987; // 0x84c3
-    field public static final int GL_TEXTURE30 = 34014; // 0x84de
-    field public static final int GL_TEXTURE31 = 34015; // 0x84df
-    field public static final int GL_TEXTURE4 = 33988; // 0x84c4
-    field public static final int GL_TEXTURE5 = 33989; // 0x84c5
-    field public static final int GL_TEXTURE6 = 33990; // 0x84c6
-    field public static final int GL_TEXTURE7 = 33991; // 0x84c7
-    field public static final int GL_TEXTURE8 = 33992; // 0x84c8
-    field public static final int GL_TEXTURE9 = 33993; // 0x84c9
-    field public static final int GL_TEXTURE_2D = 3553; // 0xde1
-    field public static final int GL_TEXTURE_COORD_ARRAY = 32888; // 0x8078
-    field public static final int GL_TEXTURE_ENV = 8960; // 0x2300
-    field public static final int GL_TEXTURE_ENV_COLOR = 8705; // 0x2201
-    field public static final int GL_TEXTURE_ENV_MODE = 8704; // 0x2200
-    field public static final int GL_TEXTURE_MAG_FILTER = 10240; // 0x2800
-    field public static final int GL_TEXTURE_MIN_FILTER = 10241; // 0x2801
-    field public static final int GL_TEXTURE_WRAP_S = 10242; // 0x2802
-    field public static final int GL_TEXTURE_WRAP_T = 10243; // 0x2803
-    field public static final int GL_TRIANGLES = 4; // 0x4
-    field public static final int GL_TRIANGLE_FAN = 6; // 0x6
-    field public static final int GL_TRIANGLE_STRIP = 5; // 0x5
-    field public static final int GL_TRUE = 1; // 0x1
-    field public static final int GL_UNPACK_ALIGNMENT = 3317; // 0xcf5
-    field public static final int GL_UNSIGNED_BYTE = 5121; // 0x1401
-    field public static final int GL_UNSIGNED_SHORT = 5123; // 0x1403
-    field public static final int GL_UNSIGNED_SHORT_4_4_4_4 = 32819; // 0x8033
-    field public static final int GL_UNSIGNED_SHORT_5_5_5_1 = 32820; // 0x8034
-    field public static final int GL_UNSIGNED_SHORT_5_6_5 = 33635; // 0x8363
-    field public static final int GL_VENDOR = 7936; // 0x1f00
-    field public static final int GL_VERSION = 7938; // 0x1f02
-    field public static final int GL_VERTEX_ARRAY = 32884; // 0x8074
-    field public static final int GL_XOR = 5382; // 0x1506
-    field public static final int GL_ZERO = 0; // 0x0
-  }
-
-  public interface GL10Ext extends javax.microedition.khronos.opengles.GL {
-    method public int glQueryMatrixxOES(int[], int, int[], int);
-    method public int glQueryMatrixxOES(java.nio.IntBuffer, java.nio.IntBuffer);
-  }
-
-  public interface GL11 extends javax.microedition.khronos.opengles.GL10 {
-    method public void glBindBuffer(int, int);
-    method public void glBufferData(int, int, java.nio.Buffer, int);
-    method public void glBufferSubData(int, int, int, java.nio.Buffer);
-    method public void glClipPlanef(int, float[], int);
-    method public void glClipPlanef(int, java.nio.FloatBuffer);
-    method public void glClipPlanex(int, int[], int);
-    method public void glClipPlanex(int, java.nio.IntBuffer);
-    method public void glColor4ub(byte, byte, byte, byte);
-    method public void glColorPointer(int, int, int, int);
-    method public void glDeleteBuffers(int, int[], int);
-    method public void glDeleteBuffers(int, java.nio.IntBuffer);
-    method public void glDrawElements(int, int, int, int);
-    method public void glGenBuffers(int, int[], int);
-    method public void glGenBuffers(int, java.nio.IntBuffer);
-    method public void glGetBooleanv(int, boolean[], int);
-    method public void glGetBooleanv(int, java.nio.IntBuffer);
-    method public void glGetBufferParameteriv(int, int, int[], int);
-    method public void glGetBufferParameteriv(int, int, java.nio.IntBuffer);
-    method public void glGetClipPlanef(int, float[], int);
-    method public void glGetClipPlanef(int, java.nio.FloatBuffer);
-    method public void glGetClipPlanex(int, int[], int);
-    method public void glGetClipPlanex(int, java.nio.IntBuffer);
-    method public void glGetFixedv(int, int[], int);
-    method public void glGetFixedv(int, java.nio.IntBuffer);
-    method public void glGetFloatv(int, float[], int);
-    method public void glGetFloatv(int, java.nio.FloatBuffer);
-    method public void glGetLightfv(int, int, float[], int);
-    method public void glGetLightfv(int, int, java.nio.FloatBuffer);
-    method public void glGetLightxv(int, int, int[], int);
-    method public void glGetLightxv(int, int, java.nio.IntBuffer);
-    method public void glGetMaterialfv(int, int, float[], int);
-    method public void glGetMaterialfv(int, int, java.nio.FloatBuffer);
-    method public void glGetMaterialxv(int, int, int[], int);
-    method public void glGetMaterialxv(int, int, java.nio.IntBuffer);
-    method public void glGetPointerv(int, java.nio.Buffer[]);
-    method public void glGetTexEnviv(int, int, int[], int);
-    method public void glGetTexEnviv(int, int, java.nio.IntBuffer);
-    method public void glGetTexEnvxv(int, int, int[], int);
-    method public void glGetTexEnvxv(int, int, java.nio.IntBuffer);
-    method public void glGetTexParameterfv(int, int, float[], int);
-    method public void glGetTexParameterfv(int, int, java.nio.FloatBuffer);
-    method public void glGetTexParameteriv(int, int, int[], int);
-    method public void glGetTexParameteriv(int, int, java.nio.IntBuffer);
-    method public void glGetTexParameterxv(int, int, int[], int);
-    method public void glGetTexParameterxv(int, int, java.nio.IntBuffer);
-    method public boolean glIsBuffer(int);
-    method public boolean glIsEnabled(int);
-    method public boolean glIsTexture(int);
-    method public void glNormalPointer(int, int, int);
-    method public void glPointParameterf(int, float);
-    method public void glPointParameterfv(int, float[], int);
-    method public void glPointParameterfv(int, java.nio.FloatBuffer);
-    method public void glPointParameterx(int, int);
-    method public void glPointParameterxv(int, int[], int);
-    method public void glPointParameterxv(int, java.nio.IntBuffer);
-    method public void glPointSizePointerOES(int, int, java.nio.Buffer);
-    method public void glTexCoordPointer(int, int, int, int);
-    method public void glTexEnvi(int, int, int);
-    method public void glTexEnviv(int, int, int[], int);
-    method public void glTexEnviv(int, int, java.nio.IntBuffer);
-    method public void glTexParameterfv(int, int, float[], int);
-    method public void glTexParameterfv(int, int, java.nio.FloatBuffer);
-    method public void glTexParameteri(int, int, int);
-    method public void glTexParameteriv(int, int, int[], int);
-    method public void glTexParameteriv(int, int, java.nio.IntBuffer);
-    method public void glTexParameterxv(int, int, int[], int);
-    method public void glTexParameterxv(int, int, java.nio.IntBuffer);
-    method public void glVertexPointer(int, int, int, int);
-    field public static final int GL_ACTIVE_TEXTURE = 34016; // 0x84e0
-    field public static final int GL_ADD_SIGNED = 34164; // 0x8574
-    field public static final int GL_ALPHA_SCALE = 3356; // 0xd1c
-    field public static final int GL_ALPHA_TEST_FUNC = 3009; // 0xbc1
-    field public static final int GL_ALPHA_TEST_REF = 3010; // 0xbc2
-    field public static final int GL_ARRAY_BUFFER = 34962; // 0x8892
-    field public static final int GL_ARRAY_BUFFER_BINDING = 34964; // 0x8894
-    field public static final int GL_BLEND_DST = 3040; // 0xbe0
-    field public static final int GL_BLEND_SRC = 3041; // 0xbe1
-    field public static final int GL_BUFFER_ACCESS = 35003; // 0x88bb
-    field public static final int GL_BUFFER_SIZE = 34660; // 0x8764
-    field public static final int GL_BUFFER_USAGE = 34661; // 0x8765
-    field public static final int GL_CLIENT_ACTIVE_TEXTURE = 34017; // 0x84e1
-    field public static final int GL_CLIP_PLANE0 = 12288; // 0x3000
-    field public static final int GL_CLIP_PLANE1 = 12289; // 0x3001
-    field public static final int GL_CLIP_PLANE2 = 12290; // 0x3002
-    field public static final int GL_CLIP_PLANE3 = 12291; // 0x3003
-    field public static final int GL_CLIP_PLANE4 = 12292; // 0x3004
-    field public static final int GL_CLIP_PLANE5 = 12293; // 0x3005
-    field public static final int GL_COLOR_ARRAY_BUFFER_BINDING = 34968; // 0x8898
-    field public static final int GL_COLOR_ARRAY_POINTER = 32912; // 0x8090
-    field public static final int GL_COLOR_ARRAY_SIZE = 32897; // 0x8081
-    field public static final int GL_COLOR_ARRAY_STRIDE = 32899; // 0x8083
-    field public static final int GL_COLOR_ARRAY_TYPE = 32898; // 0x8082
-    field public static final int GL_COLOR_CLEAR_VALUE = 3106; // 0xc22
-    field public static final int GL_COLOR_WRITEMASK = 3107; // 0xc23
-    field public static final int GL_COMBINE = 34160; // 0x8570
-    field public static final int GL_COMBINE_ALPHA = 34162; // 0x8572
-    field public static final int GL_COMBINE_RGB = 34161; // 0x8571
-    field public static final int GL_CONSTANT = 34166; // 0x8576
-    field public static final int GL_COORD_REPLACE_OES = 34914; // 0x8862
-    field public static final int GL_CULL_FACE_MODE = 2885; // 0xb45
-    field public static final int GL_CURRENT_COLOR = 2816; // 0xb00
-    field public static final int GL_CURRENT_NORMAL = 2818; // 0xb02
-    field public static final int GL_CURRENT_TEXTURE_COORDS = 2819; // 0xb03
-    field public static final int GL_DEPTH_CLEAR_VALUE = 2931; // 0xb73
-    field public static final int GL_DEPTH_FUNC = 2932; // 0xb74
-    field public static final int GL_DEPTH_RANGE = 2928; // 0xb70
-    field public static final int GL_DEPTH_WRITEMASK = 2930; // 0xb72
-    field public static final int GL_DOT3_RGB = 34478; // 0x86ae
-    field public static final int GL_DOT3_RGBA = 34479; // 0x86af
-    field public static final int GL_DYNAMIC_DRAW = 35048; // 0x88e8
-    field public static final int GL_ELEMENT_ARRAY_BUFFER = 34963; // 0x8893
-    field public static final int GL_ELEMENT_ARRAY_BUFFER_BINDING = 34965; // 0x8895
-    field public static final int GL_FRONT_FACE = 2886; // 0xb46
-    field public static final int GL_GENERATE_MIPMAP = 33169; // 0x8191
-    field public static final int GL_GENERATE_MIPMAP_HINT = 33170; // 0x8192
-    field public static final int GL_INTERPOLATE = 34165; // 0x8575
-    field public static final int GL_LINE_WIDTH = 2849; // 0xb21
-    field public static final int GL_LOGIC_OP_MODE = 3056; // 0xbf0
-    field public static final int GL_MATRIX_MODE = 2976; // 0xba0
-    field public static final int GL_MAX_CLIP_PLANES = 3378; // 0xd32
-    field public static final int GL_MODELVIEW_MATRIX = 2982; // 0xba6
-    field public static final int GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES = 35213; // 0x898d
-    field public static final int GL_MODELVIEW_STACK_DEPTH = 2979; // 0xba3
-    field public static final int GL_NORMAL_ARRAY_BUFFER_BINDING = 34967; // 0x8897
-    field public static final int GL_NORMAL_ARRAY_POINTER = 32911; // 0x808f
-    field public static final int GL_NORMAL_ARRAY_STRIDE = 32895; // 0x807f
-    field public static final int GL_NORMAL_ARRAY_TYPE = 32894; // 0x807e
-    field public static final int GL_OPERAND0_ALPHA = 34200; // 0x8598
-    field public static final int GL_OPERAND0_RGB = 34192; // 0x8590
-    field public static final int GL_OPERAND1_ALPHA = 34201; // 0x8599
-    field public static final int GL_OPERAND1_RGB = 34193; // 0x8591
-    field public static final int GL_OPERAND2_ALPHA = 34202; // 0x859a
-    field public static final int GL_OPERAND2_RGB = 34194; // 0x8592
-    field public static final int GL_POINT_DISTANCE_ATTENUATION = 33065; // 0x8129
-    field public static final int GL_POINT_FADE_THRESHOLD_SIZE = 33064; // 0x8128
-    field public static final int GL_POINT_SIZE = 2833; // 0xb11
-    field public static final int GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES = 35743; // 0x8b9f
-    field public static final int GL_POINT_SIZE_ARRAY_OES = 35740; // 0x8b9c
-    field public static final int GL_POINT_SIZE_ARRAY_POINTER_OES = 35212; // 0x898c
-    field public static final int GL_POINT_SIZE_ARRAY_STRIDE_OES = 35211; // 0x898b
-    field public static final int GL_POINT_SIZE_ARRAY_TYPE_OES = 35210; // 0x898a
-    field public static final int GL_POINT_SIZE_MAX = 33063; // 0x8127
-    field public static final int GL_POINT_SIZE_MIN = 33062; // 0x8126
-    field public static final int GL_POINT_SPRITE_OES = 34913; // 0x8861
-    field public static final int GL_POLYGON_OFFSET_FACTOR = 32824; // 0x8038
-    field public static final int GL_POLYGON_OFFSET_UNITS = 10752; // 0x2a00
-    field public static final int GL_PREVIOUS = 34168; // 0x8578
-    field public static final int GL_PRIMARY_COLOR = 34167; // 0x8577
-    field public static final int GL_PROJECTION_MATRIX = 2983; // 0xba7
-    field public static final int GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES = 35214; // 0x898e
-    field public static final int GL_PROJECTION_STACK_DEPTH = 2980; // 0xba4
-    field public static final int GL_RGB_SCALE = 34163; // 0x8573
-    field public static final int GL_SAMPLES = 32937; // 0x80a9
-    field public static final int GL_SAMPLE_BUFFERS = 32936; // 0x80a8
-    field public static final int GL_SAMPLE_COVERAGE_INVERT = 32939; // 0x80ab
-    field public static final int GL_SAMPLE_COVERAGE_VALUE = 32938; // 0x80aa
-    field public static final int GL_SCISSOR_BOX = 3088; // 0xc10
-    field public static final int GL_SHADE_MODEL = 2900; // 0xb54
-    field public static final int GL_SRC0_ALPHA = 34184; // 0x8588
-    field public static final int GL_SRC0_RGB = 34176; // 0x8580
-    field public static final int GL_SRC1_ALPHA = 34185; // 0x8589
-    field public static final int GL_SRC1_RGB = 34177; // 0x8581
-    field public static final int GL_SRC2_ALPHA = 34186; // 0x858a
-    field public static final int GL_SRC2_RGB = 34178; // 0x8582
-    field public static final int GL_STATIC_DRAW = 35044; // 0x88e4
-    field public static final int GL_STENCIL_CLEAR_VALUE = 2961; // 0xb91
-    field public static final int GL_STENCIL_FAIL = 2964; // 0xb94
-    field public static final int GL_STENCIL_FUNC = 2962; // 0xb92
-    field public static final int GL_STENCIL_PASS_DEPTH_FAIL = 2965; // 0xb95
-    field public static final int GL_STENCIL_PASS_DEPTH_PASS = 2966; // 0xb96
-    field public static final int GL_STENCIL_REF = 2967; // 0xb97
-    field public static final int GL_STENCIL_VALUE_MASK = 2963; // 0xb93
-    field public static final int GL_STENCIL_WRITEMASK = 2968; // 0xb98
-    field public static final int GL_SUBTRACT = 34023; // 0x84e7
-    field public static final int GL_TEXTURE_BINDING_2D = 32873; // 0x8069
-    field public static final int GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING = 34970; // 0x889a
-    field public static final int GL_TEXTURE_COORD_ARRAY_POINTER = 32914; // 0x8092
-    field public static final int GL_TEXTURE_COORD_ARRAY_SIZE = 32904; // 0x8088
-    field public static final int GL_TEXTURE_COORD_ARRAY_STRIDE = 32906; // 0x808a
-    field public static final int GL_TEXTURE_COORD_ARRAY_TYPE = 32905; // 0x8089
-    field public static final int GL_TEXTURE_MATRIX = 2984; // 0xba8
-    field public static final int GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES = 35215; // 0x898f
-    field public static final int GL_TEXTURE_STACK_DEPTH = 2981; // 0xba5
-    field public static final int GL_VERTEX_ARRAY_BUFFER_BINDING = 34966; // 0x8896
-    field public static final int GL_VERTEX_ARRAY_POINTER = 32910; // 0x808e
-    field public static final int GL_VERTEX_ARRAY_SIZE = 32890; // 0x807a
-    field public static final int GL_VERTEX_ARRAY_STRIDE = 32892; // 0x807c
-    field public static final int GL_VERTEX_ARRAY_TYPE = 32891; // 0x807b
-    field public static final int GL_VIEWPORT = 2978; // 0xba2
-    field public static final int GL_WRITE_ONLY = 35001; // 0x88b9
-  }
-
-  public interface GL11Ext extends javax.microedition.khronos.opengles.GL {
-    method public void glCurrentPaletteMatrixOES(int);
-    method public void glDrawTexfOES(float, float, float, float, float);
-    method public void glDrawTexfvOES(float[], int);
-    method public void glDrawTexfvOES(java.nio.FloatBuffer);
-    method public void glDrawTexiOES(int, int, int, int, int);
-    method public void glDrawTexivOES(int[], int);
-    method public void glDrawTexivOES(java.nio.IntBuffer);
-    method public void glDrawTexsOES(short, short, short, short, short);
-    method public void glDrawTexsvOES(short[], int);
-    method public void glDrawTexsvOES(java.nio.ShortBuffer);
-    method public void glDrawTexxOES(int, int, int, int, int);
-    method public void glDrawTexxvOES(int[], int);
-    method public void glDrawTexxvOES(java.nio.IntBuffer);
-    method public void glEnable(int);
-    method public void glEnableClientState(int);
-    method public void glLoadPaletteFromModelViewMatrixOES();
-    method public void glMatrixIndexPointerOES(int, int, int, java.nio.Buffer);
-    method public void glMatrixIndexPointerOES(int, int, int, int);
-    method public void glTexParameterfv(int, int, float[], int);
-    method public void glWeightPointerOES(int, int, int, java.nio.Buffer);
-    method public void glWeightPointerOES(int, int, int, int);
-    field public static final int GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES = 35742; // 0x8b9e
-    field public static final int GL_MATRIX_INDEX_ARRAY_OES = 34884; // 0x8844
-    field public static final int GL_MATRIX_INDEX_ARRAY_POINTER_OES = 34889; // 0x8849
-    field public static final int GL_MATRIX_INDEX_ARRAY_SIZE_OES = 34886; // 0x8846
-    field public static final int GL_MATRIX_INDEX_ARRAY_STRIDE_OES = 34888; // 0x8848
-    field public static final int GL_MATRIX_INDEX_ARRAY_TYPE_OES = 34887; // 0x8847
-    field public static final int GL_MATRIX_PALETTE_OES = 34880; // 0x8840
-    field public static final int GL_MAX_PALETTE_MATRICES_OES = 34882; // 0x8842
-    field public static final int GL_MAX_VERTEX_UNITS_OES = 34468; // 0x86a4
-    field public static final int GL_TEXTURE_CROP_RECT_OES = 35741; // 0x8b9d
-    field public static final int GL_WEIGHT_ARRAY_BUFFER_BINDING_OES = 34974; // 0x889e
-    field public static final int GL_WEIGHT_ARRAY_OES = 34477; // 0x86ad
-    field public static final int GL_WEIGHT_ARRAY_POINTER_OES = 34476; // 0x86ac
-    field public static final int GL_WEIGHT_ARRAY_SIZE_OES = 34475; // 0x86ab
-    field public static final int GL_WEIGHT_ARRAY_STRIDE_OES = 34474; // 0x86aa
-    field public static final int GL_WEIGHT_ARRAY_TYPE_OES = 34473; // 0x86a9
-  }
-
-  public interface GL11ExtensionPack extends javax.microedition.khronos.opengles.GL {
-    method public void glBindFramebufferOES(int, int);
-    method public void glBindRenderbufferOES(int, int);
-    method public void glBindTexture(int, int);
-    method public void glBlendEquation(int);
-    method public void glBlendEquationSeparate(int, int);
-    method public void glBlendFuncSeparate(int, int, int, int);
-    method public int glCheckFramebufferStatusOES(int);
-    method public void glCompressedTexImage2D(int, int, int, int, int, int, int, java.nio.Buffer);
-    method public void glCopyTexImage2D(int, int, int, int, int, int, int, int);
-    method public void glDeleteFramebuffersOES(int, int[], int);
-    method public void glDeleteFramebuffersOES(int, java.nio.IntBuffer);
-    method public void glDeleteRenderbuffersOES(int, int[], int);
-    method public void glDeleteRenderbuffersOES(int, java.nio.IntBuffer);
-    method public void glEnable(int);
-    method public void glFramebufferRenderbufferOES(int, int, int, int);
-    method public void glFramebufferTexture2DOES(int, int, int, int, int);
-    method public void glGenFramebuffersOES(int, int[], int);
-    method public void glGenFramebuffersOES(int, java.nio.IntBuffer);
-    method public void glGenRenderbuffersOES(int, int[], int);
-    method public void glGenRenderbuffersOES(int, java.nio.IntBuffer);
-    method public void glGenerateMipmapOES(int);
-    method public void glGetFramebufferAttachmentParameterivOES(int, int, int, int[], int);
-    method public void glGetFramebufferAttachmentParameterivOES(int, int, int, java.nio.IntBuffer);
-    method public void glGetIntegerv(int, int[], int);
-    method public void glGetIntegerv(int, java.nio.IntBuffer);
-    method public void glGetRenderbufferParameterivOES(int, int, int[], int);
-    method public void glGetRenderbufferParameterivOES(int, int, java.nio.IntBuffer);
-    method public void glGetTexGenfv(int, int, float[], int);
-    method public void glGetTexGenfv(int, int, java.nio.FloatBuffer);
-    method public void glGetTexGeniv(int, int, int[], int);
-    method public void glGetTexGeniv(int, int, java.nio.IntBuffer);
-    method public void glGetTexGenxv(int, int, int[], int);
-    method public void glGetTexGenxv(int, int, java.nio.IntBuffer);
-    method public boolean glIsFramebufferOES(int);
-    method public boolean glIsRenderbufferOES(int);
-    method public void glRenderbufferStorageOES(int, int, int, int);
-    method public void glStencilOp(int, int, int);
-    method public void glTexEnvf(int, int, float);
-    method public void glTexEnvfv(int, int, float[], int);
-    method public void glTexEnvfv(int, int, java.nio.FloatBuffer);
-    method public void glTexEnvx(int, int, int);
-    method public void glTexEnvxv(int, int, int[], int);
-    method public void glTexEnvxv(int, int, java.nio.IntBuffer);
-    method public void glTexGenf(int, int, float);
-    method public void glTexGenfv(int, int, float[], int);
-    method public void glTexGenfv(int, int, java.nio.FloatBuffer);
-    method public void glTexGeni(int, int, int);
-    method public void glTexGeniv(int, int, int[], int);
-    method public void glTexGeniv(int, int, java.nio.IntBuffer);
-    method public void glTexGenx(int, int, int);
-    method public void glTexGenxv(int, int, int[], int);
-    method public void glTexGenxv(int, int, java.nio.IntBuffer);
-    method public void glTexParameterf(int, int, float);
-    field public static final int GL_BLEND_DST_ALPHA = 32970; // 0x80ca
-    field public static final int GL_BLEND_DST_RGB = 32968; // 0x80c8
-    field public static final int GL_BLEND_EQUATION = 32777; // 0x8009
-    field public static final int GL_BLEND_EQUATION_ALPHA = 34877; // 0x883d
-    field public static final int GL_BLEND_EQUATION_RGB = 32777; // 0x8009
-    field public static final int GL_BLEND_SRC_ALPHA = 32971; // 0x80cb
-    field public static final int GL_BLEND_SRC_RGB = 32969; // 0x80c9
-    field public static final int GL_COLOR_ATTACHMENT0_OES = 36064; // 0x8ce0
-    field public static final int GL_COLOR_ATTACHMENT10_OES = 36074; // 0x8cea
-    field public static final int GL_COLOR_ATTACHMENT11_OES = 36075; // 0x8ceb
-    field public static final int GL_COLOR_ATTACHMENT12_OES = 36076; // 0x8cec
-    field public static final int GL_COLOR_ATTACHMENT13_OES = 36077; // 0x8ced
-    field public static final int GL_COLOR_ATTACHMENT14_OES = 36078; // 0x8cee
-    field public static final int GL_COLOR_ATTACHMENT15_OES = 36079; // 0x8cef
-    field public static final int GL_COLOR_ATTACHMENT1_OES = 36065; // 0x8ce1
-    field public static final int GL_COLOR_ATTACHMENT2_OES = 36066; // 0x8ce2
-    field public static final int GL_COLOR_ATTACHMENT3_OES = 36067; // 0x8ce3
-    field public static final int GL_COLOR_ATTACHMENT4_OES = 36068; // 0x8ce4
-    field public static final int GL_COLOR_ATTACHMENT5_OES = 36069; // 0x8ce5
-    field public static final int GL_COLOR_ATTACHMENT6_OES = 36070; // 0x8ce6
-    field public static final int GL_COLOR_ATTACHMENT7_OES = 36071; // 0x8ce7
-    field public static final int GL_COLOR_ATTACHMENT8_OES = 36072; // 0x8ce8
-    field public static final int GL_COLOR_ATTACHMENT9_OES = 36073; // 0x8ce9
-    field public static final int GL_DECR_WRAP = 34056; // 0x8508
-    field public static final int GL_DEPTH_ATTACHMENT_OES = 36096; // 0x8d00
-    field public static final int GL_DEPTH_COMPONENT = 6402; // 0x1902
-    field public static final int GL_DEPTH_COMPONENT16 = 33189; // 0x81a5
-    field public static final int GL_DEPTH_COMPONENT24 = 33190; // 0x81a6
-    field public static final int GL_DEPTH_COMPONENT32 = 33191; // 0x81a7
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES = 36049; // 0x8cd1
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES = 36048; // 0x8cd0
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES = 36051; // 0x8cd3
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES = 36050; // 0x8cd2
-    field public static final int GL_FRAMEBUFFER_BINDING_OES = 36006; // 0x8ca6
-    field public static final int GL_FRAMEBUFFER_COMPLETE_OES = 36053; // 0x8cd5
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES = 36054; // 0x8cd6
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES = 36057; // 0x8cd9
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES = 36059; // 0x8cdb
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES = 36058; // 0x8cda
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES = 36055; // 0x8cd7
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES = 36060; // 0x8cdc
-    field public static final int GL_FRAMEBUFFER_OES = 36160; // 0x8d40
-    field public static final int GL_FRAMEBUFFER_UNSUPPORTED_OES = 36061; // 0x8cdd
-    field public static final int GL_FUNC_ADD = 32774; // 0x8006
-    field public static final int GL_FUNC_REVERSE_SUBTRACT = 32779; // 0x800b
-    field public static final int GL_FUNC_SUBTRACT = 32778; // 0x800a
-    field public static final int GL_INCR_WRAP = 34055; // 0x8507
-    field public static final int GL_INVALID_FRAMEBUFFER_OPERATION_OES = 1286; // 0x506
-    field public static final int GL_MAX_COLOR_ATTACHMENTS_OES = 36063; // 0x8cdf
-    field public static final int GL_MAX_CUBE_MAP_TEXTURE_SIZE = 34076; // 0x851c
-    field public static final int GL_MAX_RENDERBUFFER_SIZE_OES = 34024; // 0x84e8
-    field public static final int GL_MIRRORED_REPEAT = 33648; // 0x8370
-    field public static final int GL_NORMAL_MAP = 34065; // 0x8511
-    field public static final int GL_REFLECTION_MAP = 34066; // 0x8512
-    field public static final int GL_RENDERBUFFER_ALPHA_SIZE_OES = 36179; // 0x8d53
-    field public static final int GL_RENDERBUFFER_BINDING_OES = 36007; // 0x8ca7
-    field public static final int GL_RENDERBUFFER_BLUE_SIZE_OES = 36178; // 0x8d52
-    field public static final int GL_RENDERBUFFER_DEPTH_SIZE_OES = 36180; // 0x8d54
-    field public static final int GL_RENDERBUFFER_GREEN_SIZE_OES = 36177; // 0x8d51
-    field public static final int GL_RENDERBUFFER_HEIGHT_OES = 36163; // 0x8d43
-    field public static final int GL_RENDERBUFFER_INTERNAL_FORMAT_OES = 36164; // 0x8d44
-    field public static final int GL_RENDERBUFFER_OES = 36161; // 0x8d41
-    field public static final int GL_RENDERBUFFER_RED_SIZE_OES = 36176; // 0x8d50
-    field public static final int GL_RENDERBUFFER_STENCIL_SIZE_OES = 36181; // 0x8d55
-    field public static final int GL_RENDERBUFFER_WIDTH_OES = 36162; // 0x8d42
-    field public static final int GL_RGB565_OES = 36194; // 0x8d62
-    field public static final int GL_RGB5_A1 = 32855; // 0x8057
-    field public static final int GL_RGB8 = 32849; // 0x8051
-    field public static final int GL_RGBA4 = 32854; // 0x8056
-    field public static final int GL_RGBA8 = 32856; // 0x8058
-    field public static final int GL_STENCIL_ATTACHMENT_OES = 36128; // 0x8d20
-    field public static final int GL_STENCIL_INDEX = 6401; // 0x1901
-    field public static final int GL_STENCIL_INDEX1_OES = 36166; // 0x8d46
-    field public static final int GL_STENCIL_INDEX4_OES = 36167; // 0x8d47
-    field public static final int GL_STENCIL_INDEX8_OES = 36168; // 0x8d48
-    field public static final int GL_STR = -1; // 0xffffffff
-    field public static final int GL_TEXTURE_BINDING_CUBE_MAP = 34068; // 0x8514
-    field public static final int GL_TEXTURE_CUBE_MAP = 34067; // 0x8513
-    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 34070; // 0x8516
-    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072; // 0x8518
-    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074; // 0x851a
-    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_X = 34069; // 0x8515
-    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 34071; // 0x8517
-    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 34073; // 0x8519
-    field public static final int GL_TEXTURE_GEN_MODE = 9472; // 0x2500
-    field public static final int GL_TEXTURE_GEN_STR = 36192; // 0x8d60
-  }
-
-}
-
-package javax.net {
-
-  public abstract class ServerSocketFactory {
-    ctor protected ServerSocketFactory();
-    method public java.net.ServerSocket createServerSocket() throws java.io.IOException;
-    method public abstract java.net.ServerSocket createServerSocket(int) throws java.io.IOException;
-    method public abstract java.net.ServerSocket createServerSocket(int, int) throws java.io.IOException;
-    method public abstract java.net.ServerSocket createServerSocket(int, int, java.net.InetAddress) throws java.io.IOException;
-    method public static javax.net.ServerSocketFactory getDefault();
-  }
-
-  public abstract class SocketFactory {
-    ctor protected SocketFactory();
-    method public java.net.Socket createSocket() throws java.io.IOException;
-    method public abstract java.net.Socket createSocket(String, int) throws java.io.IOException, java.net.UnknownHostException;
-    method public abstract java.net.Socket createSocket(String, int, java.net.InetAddress, int) throws java.io.IOException, java.net.UnknownHostException;
-    method public abstract java.net.Socket createSocket(java.net.InetAddress, int) throws java.io.IOException;
-    method public abstract java.net.Socket createSocket(java.net.InetAddress, int, java.net.InetAddress, int) throws java.io.IOException;
-    method public static javax.net.SocketFactory getDefault();
-  }
-
-}
-
-package javax.net.ssl {
-
-  public class CertPathTrustManagerParameters implements javax.net.ssl.ManagerFactoryParameters {
-    ctor public CertPathTrustManagerParameters(java.security.cert.CertPathParameters);
-    method public java.security.cert.CertPathParameters getParameters();
-  }
-
-  public abstract class ExtendedSSLSession implements javax.net.ssl.SSLSession {
-    ctor public ExtendedSSLSession();
-    method public abstract String[] getLocalSupportedSignatureAlgorithms();
-    method public abstract String[] getPeerSupportedSignatureAlgorithms();
-    method public java.util.List<javax.net.ssl.SNIServerName> getRequestedServerNames();
-  }
-
-  public class HandshakeCompletedEvent extends java.util.EventObject {
-    ctor public HandshakeCompletedEvent(javax.net.ssl.SSLSocket, javax.net.ssl.SSLSession);
-    method public String getCipherSuite();
-    method public java.security.cert.Certificate[] getLocalCertificates();
-    method public java.security.Principal getLocalPrincipal();
-    method public javax.security.cert.X509Certificate[] getPeerCertificateChain() throws javax.net.ssl.SSLPeerUnverifiedException;
-    method public java.security.cert.Certificate[] getPeerCertificates() throws javax.net.ssl.SSLPeerUnverifiedException;
-    method public java.security.Principal getPeerPrincipal() throws javax.net.ssl.SSLPeerUnverifiedException;
-    method public javax.net.ssl.SSLSession getSession();
-    method public javax.net.ssl.SSLSocket getSocket();
-  }
-
-  public interface HandshakeCompletedListener extends java.util.EventListener {
-    method public void handshakeCompleted(javax.net.ssl.HandshakeCompletedEvent);
-  }
-
-  public interface HostnameVerifier {
-    method public boolean verify(String, javax.net.ssl.SSLSession);
-  }
-
-  public abstract class HttpsURLConnection extends java.net.HttpURLConnection {
-    ctor protected HttpsURLConnection(java.net.URL);
-    method public abstract String getCipherSuite();
-    method public static javax.net.ssl.HostnameVerifier getDefaultHostnameVerifier();
-    method public static javax.net.ssl.SSLSocketFactory getDefaultSSLSocketFactory();
-    method public javax.net.ssl.HostnameVerifier getHostnameVerifier();
-    method public abstract java.security.cert.Certificate[] getLocalCertificates();
-    method public java.security.Principal getLocalPrincipal();
-    method public java.security.Principal getPeerPrincipal() throws javax.net.ssl.SSLPeerUnverifiedException;
-    method public javax.net.ssl.SSLSocketFactory getSSLSocketFactory();
-    method public abstract java.security.cert.Certificate[] getServerCertificates() throws javax.net.ssl.SSLPeerUnverifiedException;
-    method public static void setDefaultHostnameVerifier(javax.net.ssl.HostnameVerifier);
-    method public static void setDefaultSSLSocketFactory(javax.net.ssl.SSLSocketFactory);
-    method public void setHostnameVerifier(javax.net.ssl.HostnameVerifier);
-    method public void setSSLSocketFactory(javax.net.ssl.SSLSocketFactory);
-    field protected javax.net.ssl.HostnameVerifier hostnameVerifier;
-  }
-
-  public interface KeyManager {
-  }
-
-  public class KeyManagerFactory {
-    ctor protected KeyManagerFactory(javax.net.ssl.KeyManagerFactorySpi, java.security.Provider, String);
-    method public final String getAlgorithm();
-    method public static final String getDefaultAlgorithm();
-    method public static final javax.net.ssl.KeyManagerFactory getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static final javax.net.ssl.KeyManagerFactory getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static final javax.net.ssl.KeyManagerFactory getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final javax.net.ssl.KeyManager[] getKeyManagers();
-    method public final java.security.Provider getProvider();
-    method public final void init(java.security.KeyStore, char[]) throws java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
-    method public final void init(javax.net.ssl.ManagerFactoryParameters) throws java.security.InvalidAlgorithmParameterException;
-  }
-
-  public abstract class KeyManagerFactorySpi {
-    ctor public KeyManagerFactorySpi();
-    method protected abstract javax.net.ssl.KeyManager[] engineGetKeyManagers();
-    method protected abstract void engineInit(java.security.KeyStore, char[]) throws java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
-    method protected abstract void engineInit(javax.net.ssl.ManagerFactoryParameters) throws java.security.InvalidAlgorithmParameterException;
-  }
-
-  public class KeyStoreBuilderParameters implements javax.net.ssl.ManagerFactoryParameters {
-    ctor public KeyStoreBuilderParameters(java.security.KeyStore.Builder);
-    ctor public KeyStoreBuilderParameters(java.util.List<java.security.KeyStore.Builder>);
-    method public java.util.List<java.security.KeyStore.Builder> getParameters();
-  }
-
-  public interface ManagerFactoryParameters {
-  }
-
-  public final class SNIHostName extends javax.net.ssl.SNIServerName {
-    ctor public SNIHostName(String);
-    ctor public SNIHostName(byte[]);
-    method public static javax.net.ssl.SNIMatcher createSNIMatcher(String);
-    method public String getAsciiName();
-  }
-
-  public abstract class SNIMatcher {
-    ctor protected SNIMatcher(int);
-    method public final int getType();
-    method public abstract boolean matches(javax.net.ssl.SNIServerName);
-  }
-
-  public abstract class SNIServerName {
-    ctor protected SNIServerName(int, byte[]);
-    method public final byte[] getEncoded();
-    method public final int getType();
-  }
-
-  public class SSLContext {
-    ctor protected SSLContext(javax.net.ssl.SSLContextSpi, java.security.Provider, String);
-    method public final javax.net.ssl.SSLEngine createSSLEngine();
-    method public final javax.net.ssl.SSLEngine createSSLEngine(String, int);
-    method public final javax.net.ssl.SSLSessionContext getClientSessionContext();
-    method public static javax.net.ssl.SSLContext getDefault() throws java.security.NoSuchAlgorithmException;
-    method public final javax.net.ssl.SSLParameters getDefaultSSLParameters();
-    method public static javax.net.ssl.SSLContext getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static javax.net.ssl.SSLContext getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static javax.net.ssl.SSLContext getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final String getProtocol();
-    method public final java.security.Provider getProvider();
-    method public final javax.net.ssl.SSLSessionContext getServerSessionContext();
-    method public final javax.net.ssl.SSLServerSocketFactory getServerSocketFactory();
-    method public final javax.net.ssl.SSLSocketFactory getSocketFactory();
-    method public final javax.net.ssl.SSLParameters getSupportedSSLParameters();
-    method public final void init(javax.net.ssl.KeyManager[], javax.net.ssl.TrustManager[], java.security.SecureRandom) throws java.security.KeyManagementException;
-    method public static void setDefault(javax.net.ssl.SSLContext);
-  }
-
-  public abstract class SSLContextSpi {
-    ctor public SSLContextSpi();
-    method protected abstract javax.net.ssl.SSLEngine engineCreateSSLEngine();
-    method protected abstract javax.net.ssl.SSLEngine engineCreateSSLEngine(String, int);
-    method protected abstract javax.net.ssl.SSLSessionContext engineGetClientSessionContext();
-    method protected javax.net.ssl.SSLParameters engineGetDefaultSSLParameters();
-    method protected abstract javax.net.ssl.SSLSessionContext engineGetServerSessionContext();
-    method protected abstract javax.net.ssl.SSLServerSocketFactory engineGetServerSocketFactory();
-    method protected abstract javax.net.ssl.SSLSocketFactory engineGetSocketFactory();
-    method protected javax.net.ssl.SSLParameters engineGetSupportedSSLParameters();
-    method protected abstract void engineInit(javax.net.ssl.KeyManager[], javax.net.ssl.TrustManager[], java.security.SecureRandom) throws java.security.KeyManagementException;
-  }
-
-  public abstract class SSLEngine {
-    ctor protected SSLEngine();
-    ctor protected SSLEngine(String, int);
-    method public abstract void beginHandshake() throws javax.net.ssl.SSLException;
-    method public abstract void closeInbound() throws javax.net.ssl.SSLException;
-    method public abstract void closeOutbound();
-    method public String getApplicationProtocol();
-    method public abstract Runnable getDelegatedTask();
-    method public abstract boolean getEnableSessionCreation();
-    method public abstract String[] getEnabledCipherSuites();
-    method public abstract String[] getEnabledProtocols();
-    method public String getHandshakeApplicationProtocol();
-    method public java.util.function.BiFunction<javax.net.ssl.SSLEngine,java.util.List<java.lang.String>,java.lang.String> getHandshakeApplicationProtocolSelector();
-    method public javax.net.ssl.SSLSession getHandshakeSession();
-    method public abstract javax.net.ssl.SSLEngineResult.HandshakeStatus getHandshakeStatus();
-    method public abstract boolean getNeedClientAuth();
-    method public String getPeerHost();
-    method public int getPeerPort();
-    method public javax.net.ssl.SSLParameters getSSLParameters();
-    method public abstract javax.net.ssl.SSLSession getSession();
-    method public abstract String[] getSupportedCipherSuites();
-    method public abstract String[] getSupportedProtocols();
-    method public abstract boolean getUseClientMode();
-    method public abstract boolean getWantClientAuth();
-    method public abstract boolean isInboundDone();
-    method public abstract boolean isOutboundDone();
-    method public abstract void setEnableSessionCreation(boolean);
-    method public abstract void setEnabledCipherSuites(String[]);
-    method public abstract void setEnabledProtocols(String[]);
-    method public void setHandshakeApplicationProtocolSelector(java.util.function.BiFunction<javax.net.ssl.SSLEngine,java.util.List<java.lang.String>,java.lang.String>);
-    method public abstract void setNeedClientAuth(boolean);
-    method public void setSSLParameters(javax.net.ssl.SSLParameters);
-    method public abstract void setUseClientMode(boolean);
-    method public abstract void setWantClientAuth(boolean);
-    method public javax.net.ssl.SSLEngineResult unwrap(java.nio.ByteBuffer, java.nio.ByteBuffer) throws javax.net.ssl.SSLException;
-    method public javax.net.ssl.SSLEngineResult unwrap(java.nio.ByteBuffer, java.nio.ByteBuffer[]) throws javax.net.ssl.SSLException;
-    method public abstract javax.net.ssl.SSLEngineResult unwrap(java.nio.ByteBuffer, java.nio.ByteBuffer[], int, int) throws javax.net.ssl.SSLException;
-    method public javax.net.ssl.SSLEngineResult wrap(java.nio.ByteBuffer, java.nio.ByteBuffer) throws javax.net.ssl.SSLException;
-    method public javax.net.ssl.SSLEngineResult wrap(java.nio.ByteBuffer[], java.nio.ByteBuffer) throws javax.net.ssl.SSLException;
-    method public abstract javax.net.ssl.SSLEngineResult wrap(java.nio.ByteBuffer[], int, int, java.nio.ByteBuffer) throws javax.net.ssl.SSLException;
-  }
-
-  public class SSLEngineResult {
-    ctor public SSLEngineResult(javax.net.ssl.SSLEngineResult.Status, javax.net.ssl.SSLEngineResult.HandshakeStatus, int, int);
-    method public final int bytesConsumed();
-    method public final int bytesProduced();
-    method public final javax.net.ssl.SSLEngineResult.HandshakeStatus getHandshakeStatus();
-    method public final javax.net.ssl.SSLEngineResult.Status getStatus();
-  }
-
-  public enum SSLEngineResult.HandshakeStatus {
-    enum_constant public static final javax.net.ssl.SSLEngineResult.HandshakeStatus FINISHED;
-    enum_constant public static final javax.net.ssl.SSLEngineResult.HandshakeStatus NEED_TASK;
-    enum_constant public static final javax.net.ssl.SSLEngineResult.HandshakeStatus NEED_UNWRAP;
-    enum_constant public static final javax.net.ssl.SSLEngineResult.HandshakeStatus NEED_WRAP;
-    enum_constant public static final javax.net.ssl.SSLEngineResult.HandshakeStatus NOT_HANDSHAKING;
-  }
-
-  public enum SSLEngineResult.Status {
-    enum_constant public static final javax.net.ssl.SSLEngineResult.Status BUFFER_OVERFLOW;
-    enum_constant public static final javax.net.ssl.SSLEngineResult.Status BUFFER_UNDERFLOW;
-    enum_constant public static final javax.net.ssl.SSLEngineResult.Status CLOSED;
-    enum_constant public static final javax.net.ssl.SSLEngineResult.Status OK;
-  }
-
-  public class SSLException extends java.io.IOException {
-    ctor public SSLException(String);
-    ctor public SSLException(String, Throwable);
-    ctor public SSLException(Throwable);
-  }
-
-  public class SSLHandshakeException extends javax.net.ssl.SSLException {
-    ctor public SSLHandshakeException(String);
-  }
-
-  public class SSLKeyException extends javax.net.ssl.SSLException {
-    ctor public SSLKeyException(String);
-  }
-
-  public class SSLParameters {
-    ctor public SSLParameters();
-    ctor public SSLParameters(String[]);
-    ctor public SSLParameters(String[], String[]);
-    method public java.security.AlgorithmConstraints getAlgorithmConstraints();
-    method public String[] getApplicationProtocols();
-    method public String[] getCipherSuites();
-    method public String getEndpointIdentificationAlgorithm();
-    method public boolean getNeedClientAuth();
-    method public String[] getProtocols();
-    method public final java.util.Collection<javax.net.ssl.SNIMatcher> getSNIMatchers();
-    method public final java.util.List<javax.net.ssl.SNIServerName> getServerNames();
-    method public final boolean getUseCipherSuitesOrder();
-    method public boolean getWantClientAuth();
-    method public void setAlgorithmConstraints(java.security.AlgorithmConstraints);
-    method public void setApplicationProtocols(String[]);
-    method public void setCipherSuites(String[]);
-    method public void setEndpointIdentificationAlgorithm(String);
-    method public void setNeedClientAuth(boolean);
-    method public void setProtocols(String[]);
-    method public final void setSNIMatchers(java.util.Collection<javax.net.ssl.SNIMatcher>);
-    method public final void setServerNames(java.util.List<javax.net.ssl.SNIServerName>);
-    method public final void setUseCipherSuitesOrder(boolean);
-    method public void setWantClientAuth(boolean);
-  }
-
-  public class SSLPeerUnverifiedException extends javax.net.ssl.SSLException {
-    ctor public SSLPeerUnverifiedException(String);
-  }
-
-  public final class SSLPermission extends java.security.BasicPermission {
-    ctor public SSLPermission(String);
-    ctor public SSLPermission(String, String);
-  }
-
-  public class SSLProtocolException extends javax.net.ssl.SSLException {
-    ctor public SSLProtocolException(String);
-  }
-
-  public abstract class SSLServerSocket extends java.net.ServerSocket {
-    ctor protected SSLServerSocket() throws java.io.IOException;
-    ctor protected SSLServerSocket(int) throws java.io.IOException;
-    ctor protected SSLServerSocket(int, int) throws java.io.IOException;
-    ctor protected SSLServerSocket(int, int, java.net.InetAddress) throws java.io.IOException;
-    method public abstract boolean getEnableSessionCreation();
-    method public abstract String[] getEnabledCipherSuites();
-    method public abstract String[] getEnabledProtocols();
-    method public abstract boolean getNeedClientAuth();
-    method public javax.net.ssl.SSLParameters getSSLParameters();
-    method public abstract String[] getSupportedCipherSuites();
-    method public abstract String[] getSupportedProtocols();
-    method public abstract boolean getUseClientMode();
-    method public abstract boolean getWantClientAuth();
-    method public abstract void setEnableSessionCreation(boolean);
-    method public abstract void setEnabledCipherSuites(String[]);
-    method public abstract void setEnabledProtocols(String[]);
-    method public abstract void setNeedClientAuth(boolean);
-    method public void setSSLParameters(javax.net.ssl.SSLParameters);
-    method public abstract void setUseClientMode(boolean);
-    method public abstract void setWantClientAuth(boolean);
-  }
-
-  public abstract class SSLServerSocketFactory extends javax.net.ServerSocketFactory {
-    ctor protected SSLServerSocketFactory();
-    method public static javax.net.ServerSocketFactory getDefault();
-    method public abstract String[] getDefaultCipherSuites();
-    method public abstract String[] getSupportedCipherSuites();
-  }
-
-  public interface SSLSession {
-    method public int getApplicationBufferSize();
-    method public String getCipherSuite();
-    method public long getCreationTime();
-    method public byte[] getId();
-    method public long getLastAccessedTime();
-    method public java.security.cert.Certificate[] getLocalCertificates();
-    method public java.security.Principal getLocalPrincipal();
-    method public int getPacketBufferSize();
-    method public javax.security.cert.X509Certificate[] getPeerCertificateChain() throws javax.net.ssl.SSLPeerUnverifiedException;
-    method public java.security.cert.Certificate[] getPeerCertificates() throws javax.net.ssl.SSLPeerUnverifiedException;
-    method public String getPeerHost();
-    method public int getPeerPort();
-    method public java.security.Principal getPeerPrincipal() throws javax.net.ssl.SSLPeerUnverifiedException;
-    method public String getProtocol();
-    method public javax.net.ssl.SSLSessionContext getSessionContext();
-    method public Object getValue(String);
-    method public String[] getValueNames();
-    method public void invalidate();
-    method public boolean isValid();
-    method public void putValue(String, Object);
-    method public void removeValue(String);
-  }
-
-  public class SSLSessionBindingEvent extends java.util.EventObject {
-    ctor public SSLSessionBindingEvent(javax.net.ssl.SSLSession, String);
-    method public String getName();
-    method public javax.net.ssl.SSLSession getSession();
-  }
-
-  public interface SSLSessionBindingListener extends java.util.EventListener {
-    method public void valueBound(javax.net.ssl.SSLSessionBindingEvent);
-    method public void valueUnbound(javax.net.ssl.SSLSessionBindingEvent);
-  }
-
-  public interface SSLSessionContext {
-    method public java.util.Enumeration<byte[]> getIds();
-    method public javax.net.ssl.SSLSession getSession(byte[]);
-    method public int getSessionCacheSize();
-    method public int getSessionTimeout();
-    method public void setSessionCacheSize(int) throws java.lang.IllegalArgumentException;
-    method public void setSessionTimeout(int) throws java.lang.IllegalArgumentException;
-  }
-
-  public abstract class SSLSocket extends java.net.Socket {
-    ctor protected SSLSocket();
-    ctor protected SSLSocket(String, int) throws java.io.IOException, java.net.UnknownHostException;
-    ctor protected SSLSocket(java.net.InetAddress, int) throws java.io.IOException;
-    ctor protected SSLSocket(String, int, java.net.InetAddress, int) throws java.io.IOException, java.net.UnknownHostException;
-    ctor protected SSLSocket(java.net.InetAddress, int, java.net.InetAddress, int) throws java.io.IOException;
-    method public abstract void addHandshakeCompletedListener(javax.net.ssl.HandshakeCompletedListener);
-    method public String getApplicationProtocol();
-    method public abstract boolean getEnableSessionCreation();
-    method public abstract String[] getEnabledCipherSuites();
-    method public abstract String[] getEnabledProtocols();
-    method public String getHandshakeApplicationProtocol();
-    method public java.util.function.BiFunction<javax.net.ssl.SSLSocket,java.util.List<java.lang.String>,java.lang.String> getHandshakeApplicationProtocolSelector();
-    method public javax.net.ssl.SSLSession getHandshakeSession();
-    method public abstract boolean getNeedClientAuth();
-    method public javax.net.ssl.SSLParameters getSSLParameters();
-    method public abstract javax.net.ssl.SSLSession getSession();
-    method public abstract String[] getSupportedCipherSuites();
-    method public abstract String[] getSupportedProtocols();
-    method public abstract boolean getUseClientMode();
-    method public abstract boolean getWantClientAuth();
-    method public abstract void removeHandshakeCompletedListener(javax.net.ssl.HandshakeCompletedListener);
-    method public abstract void setEnableSessionCreation(boolean);
-    method public abstract void setEnabledCipherSuites(String[]);
-    method public abstract void setEnabledProtocols(String[]);
-    method public void setHandshakeApplicationProtocolSelector(java.util.function.BiFunction<javax.net.ssl.SSLSocket,java.util.List<java.lang.String>,java.lang.String>);
-    method public abstract void setNeedClientAuth(boolean);
-    method public void setSSLParameters(javax.net.ssl.SSLParameters);
-    method public abstract void setUseClientMode(boolean);
-    method public abstract void setWantClientAuth(boolean);
-    method public abstract void startHandshake() throws java.io.IOException;
-  }
-
-  public abstract class SSLSocketFactory extends javax.net.SocketFactory {
-    ctor public SSLSocketFactory();
-    method public abstract java.net.Socket createSocket(java.net.Socket, String, int, boolean) throws java.io.IOException;
-    method public static javax.net.SocketFactory getDefault();
-    method public abstract String[] getDefaultCipherSuites();
-    method public abstract String[] getSupportedCipherSuites();
-  }
-
-  public final class StandardConstants {
-    field public static final int SNI_HOST_NAME = 0; // 0x0
-  }
-
-  public interface TrustManager {
-  }
-
-  public class TrustManagerFactory {
-    ctor protected TrustManagerFactory(javax.net.ssl.TrustManagerFactorySpi, java.security.Provider, String);
-    method public final String getAlgorithm();
-    method public static final String getDefaultAlgorithm();
-    method public static final javax.net.ssl.TrustManagerFactory getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static final javax.net.ssl.TrustManagerFactory getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static final javax.net.ssl.TrustManagerFactory getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final java.security.Provider getProvider();
-    method public final javax.net.ssl.TrustManager[] getTrustManagers();
-    method public final void init(java.security.KeyStore) throws java.security.KeyStoreException;
-    method public final void init(javax.net.ssl.ManagerFactoryParameters) throws java.security.InvalidAlgorithmParameterException;
-  }
-
-  public abstract class TrustManagerFactorySpi {
-    ctor public TrustManagerFactorySpi();
-    method protected abstract javax.net.ssl.TrustManager[] engineGetTrustManagers();
-    method protected abstract void engineInit(java.security.KeyStore) throws java.security.KeyStoreException;
-    method protected abstract void engineInit(javax.net.ssl.ManagerFactoryParameters) throws java.security.InvalidAlgorithmParameterException;
-  }
-
-  public abstract class X509ExtendedKeyManager implements javax.net.ssl.X509KeyManager {
-    ctor protected X509ExtendedKeyManager();
-    method public String chooseEngineClientAlias(String[], java.security.Principal[], javax.net.ssl.SSLEngine);
-    method public String chooseEngineServerAlias(String, java.security.Principal[], javax.net.ssl.SSLEngine);
-  }
-
-  public abstract class X509ExtendedTrustManager implements javax.net.ssl.X509TrustManager {
-    ctor public X509ExtendedTrustManager();
-    method public abstract void checkClientTrusted(java.security.cert.X509Certificate[], String, java.net.Socket) throws java.security.cert.CertificateException;
-    method public abstract void checkClientTrusted(java.security.cert.X509Certificate[], String, javax.net.ssl.SSLEngine) throws java.security.cert.CertificateException;
-    method public abstract void checkServerTrusted(java.security.cert.X509Certificate[], String, java.net.Socket) throws java.security.cert.CertificateException;
-    method public abstract void checkServerTrusted(java.security.cert.X509Certificate[], String, javax.net.ssl.SSLEngine) throws java.security.cert.CertificateException;
-  }
-
-  public interface X509KeyManager extends javax.net.ssl.KeyManager {
-    method public String chooseClientAlias(String[], java.security.Principal[], java.net.Socket);
-    method public String chooseServerAlias(String, java.security.Principal[], java.net.Socket);
-    method public java.security.cert.X509Certificate[] getCertificateChain(String);
-    method public String[] getClientAliases(String, java.security.Principal[]);
-    method public java.security.PrivateKey getPrivateKey(String);
-    method public String[] getServerAliases(String, java.security.Principal[]);
-  }
-
-  public interface X509TrustManager extends javax.net.ssl.TrustManager {
-    method public void checkClientTrusted(java.security.cert.X509Certificate[], String) throws java.security.cert.CertificateException;
-    method public void checkServerTrusted(java.security.cert.X509Certificate[], String) throws java.security.cert.CertificateException;
-    method public java.security.cert.X509Certificate[] getAcceptedIssuers();
-  }
-
-}
-
-package javax.security.auth {
-
-  public final class AuthPermission extends java.security.BasicPermission {
-    ctor public AuthPermission(String);
-    ctor public AuthPermission(String, String);
-  }
-
-  public class DestroyFailedException extends java.lang.Exception {
-    ctor public DestroyFailedException();
-    ctor public DestroyFailedException(String);
-  }
-
-  public interface Destroyable {
-    method public default void destroy() throws javax.security.auth.DestroyFailedException;
-    method public default boolean isDestroyed();
-  }
-
-  public final class PrivateCredentialPermission extends java.security.Permission {
-    ctor public PrivateCredentialPermission(String, String);
-    method public String getActions();
-    method public String getCredentialClass();
-    method public String[][] getPrincipals();
-    method public boolean implies(java.security.Permission);
-  }
-
-  public final class Subject implements java.io.Serializable {
-    ctor public Subject();
-    ctor public Subject(boolean, java.util.Set<? extends java.security.Principal>, java.util.Set<?>, java.util.Set<?>);
-    method public static <T> T doAs(javax.security.auth.Subject, java.security.PrivilegedAction<T>);
-    method public static <T> T doAs(javax.security.auth.Subject, java.security.PrivilegedExceptionAction<T>) throws java.security.PrivilegedActionException;
-    method public static <T> T doAsPrivileged(javax.security.auth.Subject, java.security.PrivilegedAction<T>, java.security.AccessControlContext);
-    method public static <T> T doAsPrivileged(javax.security.auth.Subject, java.security.PrivilegedExceptionAction<T>, java.security.AccessControlContext) throws java.security.PrivilegedActionException;
-    method public java.util.Set<java.security.Principal> getPrincipals();
-    method public <T extends java.security.Principal> java.util.Set<T> getPrincipals(Class<T>);
-    method public java.util.Set<java.lang.Object> getPrivateCredentials();
-    method public <T> java.util.Set<T> getPrivateCredentials(Class<T>);
-    method public java.util.Set<java.lang.Object> getPublicCredentials();
-    method public <T> java.util.Set<T> getPublicCredentials(Class<T>);
-    method public static javax.security.auth.Subject getSubject(java.security.AccessControlContext);
-    method public boolean isReadOnly();
-    method public void setReadOnly();
-  }
-
-  public class SubjectDomainCombiner implements java.security.DomainCombiner {
-    ctor public SubjectDomainCombiner(javax.security.auth.Subject);
-    method public java.security.ProtectionDomain[] combine(java.security.ProtectionDomain[], java.security.ProtectionDomain[]);
-    method public javax.security.auth.Subject getSubject();
-  }
-
-}
-
-package javax.security.auth.callback {
-
-  public interface Callback {
-  }
-
-  public interface CallbackHandler {
-    method public void handle(javax.security.auth.callback.Callback[]) throws java.io.IOException, javax.security.auth.callback.UnsupportedCallbackException;
-  }
-
-  public class PasswordCallback implements javax.security.auth.callback.Callback java.io.Serializable {
-    ctor public PasswordCallback(String, boolean);
-    method public void clearPassword();
-    method public char[] getPassword();
-    method public String getPrompt();
-    method public boolean isEchoOn();
-    method public void setPassword(char[]);
-  }
-
-  public class UnsupportedCallbackException extends java.lang.Exception {
-    ctor public UnsupportedCallbackException(javax.security.auth.callback.Callback);
-    ctor public UnsupportedCallbackException(javax.security.auth.callback.Callback, String);
-    method public javax.security.auth.callback.Callback getCallback();
-  }
-
-}
-
-package javax.security.auth.login {
-
-  public class LoginException extends java.security.GeneralSecurityException {
-    ctor public LoginException();
-    ctor public LoginException(String);
-  }
-
-}
-
-package javax.security.auth.x500 {
-
-  public final class X500Principal implements java.security.Principal java.io.Serializable {
-    ctor public X500Principal(String);
-    ctor public X500Principal(String, java.util.Map<java.lang.String,java.lang.String>);
-    ctor public X500Principal(byte[]);
-    ctor public X500Principal(java.io.InputStream);
-    method public byte[] getEncoded();
-    method public String getName();
-    method public String getName(String);
-    method public String getName(String, java.util.Map<java.lang.String,java.lang.String>);
-    field public static final String CANONICAL = "CANONICAL";
-    field public static final String RFC1779 = "RFC1779";
-    field public static final String RFC2253 = "RFC2253";
-  }
-
-}
-
-package javax.security.cert {
-
-  public abstract class Certificate {
-    ctor public Certificate();
-    method public abstract byte[] getEncoded() throws javax.security.cert.CertificateEncodingException;
-    method public abstract java.security.PublicKey getPublicKey();
-    method public abstract String toString();
-    method public abstract void verify(java.security.PublicKey) throws javax.security.cert.CertificateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
-    method public abstract void verify(java.security.PublicKey, String) throws javax.security.cert.CertificateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
-  }
-
-  public class CertificateEncodingException extends javax.security.cert.CertificateException {
-    ctor public CertificateEncodingException();
-    ctor public CertificateEncodingException(String);
-  }
-
-  public class CertificateException extends java.lang.Exception {
-    ctor public CertificateException();
-    ctor public CertificateException(String);
-  }
-
-  public class CertificateExpiredException extends javax.security.cert.CertificateException {
-    ctor public CertificateExpiredException();
-    ctor public CertificateExpiredException(String);
-  }
-
-  public class CertificateNotYetValidException extends javax.security.cert.CertificateException {
-    ctor public CertificateNotYetValidException();
-    ctor public CertificateNotYetValidException(String);
-  }
-
-  public class CertificateParsingException extends javax.security.cert.CertificateException {
-    ctor public CertificateParsingException();
-    ctor public CertificateParsingException(String);
-  }
-
-  public abstract class X509Certificate extends javax.security.cert.Certificate {
-    ctor public X509Certificate();
-    method public abstract void checkValidity() throws javax.security.cert.CertificateExpiredException, javax.security.cert.CertificateNotYetValidException;
-    method public abstract void checkValidity(java.util.Date) throws javax.security.cert.CertificateExpiredException, javax.security.cert.CertificateNotYetValidException;
-    method public static final javax.security.cert.X509Certificate getInstance(java.io.InputStream) throws javax.security.cert.CertificateException;
-    method public static final javax.security.cert.X509Certificate getInstance(byte[]) throws javax.security.cert.CertificateException;
-    method public abstract java.security.Principal getIssuerDN();
-    method public abstract java.util.Date getNotAfter();
-    method public abstract java.util.Date getNotBefore();
-    method public abstract java.math.BigInteger getSerialNumber();
-    method public abstract String getSigAlgName();
-    method public abstract String getSigAlgOID();
-    method public abstract byte[] getSigAlgParams();
-    method public abstract java.security.Principal getSubjectDN();
-    method public abstract int getVersion();
-  }
-
-}
-
-package javax.sql {
-
-  public interface CommonDataSource {
-    method public java.io.PrintWriter getLogWriter() throws java.sql.SQLException;
-    method public int getLoginTimeout() throws java.sql.SQLException;
-    method public java.util.logging.Logger getParentLogger() throws java.sql.SQLFeatureNotSupportedException;
-    method public void setLogWriter(java.io.PrintWriter) throws java.sql.SQLException;
-    method public void setLoginTimeout(int) throws java.sql.SQLException;
-  }
-
-  public class ConnectionEvent extends java.util.EventObject {
-    ctor public ConnectionEvent(javax.sql.PooledConnection);
-    ctor public ConnectionEvent(javax.sql.PooledConnection, java.sql.SQLException);
-    method public java.sql.SQLException getSQLException();
-  }
-
-  public interface ConnectionEventListener extends java.util.EventListener {
-    method public void connectionClosed(javax.sql.ConnectionEvent);
-    method public void connectionErrorOccurred(javax.sql.ConnectionEvent);
-  }
-
-  public interface ConnectionPoolDataSource extends javax.sql.CommonDataSource {
-    method public javax.sql.PooledConnection getPooledConnection() throws java.sql.SQLException;
-    method public javax.sql.PooledConnection getPooledConnection(String, String) throws java.sql.SQLException;
-  }
-
-  public interface DataSource extends javax.sql.CommonDataSource java.sql.Wrapper {
-    method public java.sql.Connection getConnection() throws java.sql.SQLException;
-    method public java.sql.Connection getConnection(String, String) throws java.sql.SQLException;
-  }
-
-  public interface PooledConnection {
-    method public void addConnectionEventListener(javax.sql.ConnectionEventListener);
-    method public void addStatementEventListener(javax.sql.StatementEventListener);
-    method public void close() throws java.sql.SQLException;
-    method public java.sql.Connection getConnection() throws java.sql.SQLException;
-    method public void removeConnectionEventListener(javax.sql.ConnectionEventListener);
-    method public void removeStatementEventListener(javax.sql.StatementEventListener);
-  }
-
-  public interface RowSet extends java.sql.ResultSet {
-    method public void addRowSetListener(javax.sql.RowSetListener);
-    method public void clearParameters() throws java.sql.SQLException;
-    method public void execute() throws java.sql.SQLException;
-    method public String getCommand();
-    method public String getDataSourceName();
-    method public boolean getEscapeProcessing() throws java.sql.SQLException;
-    method public int getMaxFieldSize() throws java.sql.SQLException;
-    method public int getMaxRows() throws java.sql.SQLException;
-    method public String getPassword();
-    method public int getQueryTimeout() throws java.sql.SQLException;
-    method public int getTransactionIsolation();
-    method public java.util.Map<java.lang.String,java.lang.Class<?>> getTypeMap() throws java.sql.SQLException;
-    method public String getUrl() throws java.sql.SQLException;
-    method public String getUsername();
-    method public boolean isReadOnly();
-    method public void removeRowSetListener(javax.sql.RowSetListener);
-    method public void setArray(int, java.sql.Array) throws java.sql.SQLException;
-    method public void setAsciiStream(int, java.io.InputStream, int) throws java.sql.SQLException;
-    method public void setAsciiStream(String, java.io.InputStream, int) throws java.sql.SQLException;
-    method public void setAsciiStream(int, java.io.InputStream) throws java.sql.SQLException;
-    method public void setAsciiStream(String, java.io.InputStream) throws java.sql.SQLException;
-    method public void setBigDecimal(int, java.math.BigDecimal) throws java.sql.SQLException;
-    method public void setBigDecimal(String, java.math.BigDecimal) throws java.sql.SQLException;
-    method public void setBinaryStream(int, java.io.InputStream, int) throws java.sql.SQLException;
-    method public void setBinaryStream(String, java.io.InputStream, int) throws java.sql.SQLException;
-    method public void setBinaryStream(int, java.io.InputStream) throws java.sql.SQLException;
-    method public void setBinaryStream(String, java.io.InputStream) throws java.sql.SQLException;
-    method public void setBlob(int, java.sql.Blob) throws java.sql.SQLException;
-    method public void setBlob(int, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void setBlob(int, java.io.InputStream) throws java.sql.SQLException;
-    method public void setBlob(String, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void setBlob(String, java.sql.Blob) throws java.sql.SQLException;
-    method public void setBlob(String, java.io.InputStream) throws java.sql.SQLException;
-    method public void setBoolean(int, boolean) throws java.sql.SQLException;
-    method public void setBoolean(String, boolean) throws java.sql.SQLException;
-    method public void setByte(int, byte) throws java.sql.SQLException;
-    method public void setByte(String, byte) throws java.sql.SQLException;
-    method public void setBytes(int, byte[]) throws java.sql.SQLException;
-    method public void setBytes(String, byte[]) throws java.sql.SQLException;
-    method public void setCharacterStream(int, java.io.Reader, int) throws java.sql.SQLException;
-    method public void setCharacterStream(String, java.io.Reader, int) throws java.sql.SQLException;
-    method public void setCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
-    method public void setCharacterStream(String, java.io.Reader) throws java.sql.SQLException;
-    method public void setClob(int, java.sql.Clob) throws java.sql.SQLException;
-    method public void setClob(int, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setClob(int, java.io.Reader) throws java.sql.SQLException;
-    method public void setClob(String, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setClob(String, java.sql.Clob) throws java.sql.SQLException;
-    method public void setClob(String, java.io.Reader) throws java.sql.SQLException;
-    method public void setCommand(String) throws java.sql.SQLException;
-    method public void setConcurrency(int) throws java.sql.SQLException;
-    method public void setDataSourceName(String) throws java.sql.SQLException;
-    method public void setDate(int, java.sql.Date) throws java.sql.SQLException;
-    method public void setDate(int, java.sql.Date, java.util.Calendar) throws java.sql.SQLException;
-    method public void setDate(String, java.sql.Date) throws java.sql.SQLException;
-    method public void setDate(String, java.sql.Date, java.util.Calendar) throws java.sql.SQLException;
-    method public void setDouble(int, double) throws java.sql.SQLException;
-    method public void setDouble(String, double) throws java.sql.SQLException;
-    method public void setEscapeProcessing(boolean) throws java.sql.SQLException;
-    method public void setFloat(int, float) throws java.sql.SQLException;
-    method public void setFloat(String, float) throws java.sql.SQLException;
-    method public void setInt(int, int) throws java.sql.SQLException;
-    method public void setInt(String, int) throws java.sql.SQLException;
-    method public void setLong(int, long) throws java.sql.SQLException;
-    method public void setLong(String, long) throws java.sql.SQLException;
-    method public void setMaxFieldSize(int) throws java.sql.SQLException;
-    method public void setMaxRows(int) throws java.sql.SQLException;
-    method public void setNCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
-    method public void setNCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setNCharacterStream(String, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setNCharacterStream(String, java.io.Reader) throws java.sql.SQLException;
-    method public void setNClob(String, java.sql.NClob) throws java.sql.SQLException;
-    method public void setNClob(String, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setNClob(String, java.io.Reader) throws java.sql.SQLException;
-    method public void setNClob(int, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setNClob(int, java.sql.NClob) throws java.sql.SQLException;
-    method public void setNClob(int, java.io.Reader) throws java.sql.SQLException;
-    method public void setNString(int, String) throws java.sql.SQLException;
-    method public void setNString(String, String) throws java.sql.SQLException;
-    method public void setNull(int, int) throws java.sql.SQLException;
-    method public void setNull(String, int) throws java.sql.SQLException;
-    method public void setNull(int, int, String) throws java.sql.SQLException;
-    method public void setNull(String, int, String) throws java.sql.SQLException;
-    method public void setObject(int, Object, int, int) throws java.sql.SQLException;
-    method public void setObject(String, Object, int, int) throws java.sql.SQLException;
-    method public void setObject(int, Object, int) throws java.sql.SQLException;
-    method public void setObject(String, Object, int) throws java.sql.SQLException;
-    method public void setObject(String, Object) throws java.sql.SQLException;
-    method public void setObject(int, Object) throws java.sql.SQLException;
-    method public void setPassword(String) throws java.sql.SQLException;
-    method public void setQueryTimeout(int) throws java.sql.SQLException;
-    method public void setReadOnly(boolean) throws java.sql.SQLException;
-    method public void setRef(int, java.sql.Ref) throws java.sql.SQLException;
-    method public void setRowId(int, java.sql.RowId) throws java.sql.SQLException;
-    method public void setRowId(String, java.sql.RowId) throws java.sql.SQLException;
-    method public void setSQLXML(int, java.sql.SQLXML) throws java.sql.SQLException;
-    method public void setSQLXML(String, java.sql.SQLXML) throws java.sql.SQLException;
-    method public void setShort(int, short) throws java.sql.SQLException;
-    method public void setShort(String, short) throws java.sql.SQLException;
-    method public void setString(int, String) throws java.sql.SQLException;
-    method public void setString(String, String) throws java.sql.SQLException;
-    method public void setTime(int, java.sql.Time) throws java.sql.SQLException;
-    method public void setTime(int, java.sql.Time, java.util.Calendar) throws java.sql.SQLException;
-    method public void setTime(String, java.sql.Time) throws java.sql.SQLException;
-    method public void setTime(String, java.sql.Time, java.util.Calendar) throws java.sql.SQLException;
-    method public void setTimestamp(int, java.sql.Timestamp) throws java.sql.SQLException;
-    method public void setTimestamp(String, java.sql.Timestamp) throws java.sql.SQLException;
-    method public void setTimestamp(int, java.sql.Timestamp, java.util.Calendar) throws java.sql.SQLException;
-    method public void setTimestamp(String, java.sql.Timestamp, java.util.Calendar) throws java.sql.SQLException;
-    method public void setTransactionIsolation(int) throws java.sql.SQLException;
-    method public void setType(int) throws java.sql.SQLException;
-    method public void setTypeMap(java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
-    method public void setURL(int, java.net.URL) throws java.sql.SQLException;
-    method public void setUrl(String) throws java.sql.SQLException;
-    method public void setUsername(String) throws java.sql.SQLException;
-  }
-
-  public class RowSetEvent extends java.util.EventObject {
-    ctor public RowSetEvent(javax.sql.RowSet);
-  }
-
-  public interface RowSetInternal {
-    method public java.sql.Connection getConnection() throws java.sql.SQLException;
-    method public java.sql.ResultSet getOriginal() throws java.sql.SQLException;
-    method public java.sql.ResultSet getOriginalRow() throws java.sql.SQLException;
-    method public Object[] getParams() throws java.sql.SQLException;
-    method public void setMetaData(javax.sql.RowSetMetaData) throws java.sql.SQLException;
-  }
-
-  public interface RowSetListener extends java.util.EventListener {
-    method public void cursorMoved(javax.sql.RowSetEvent);
-    method public void rowChanged(javax.sql.RowSetEvent);
-    method public void rowSetChanged(javax.sql.RowSetEvent);
-  }
-
-  public interface RowSetMetaData extends java.sql.ResultSetMetaData {
-    method public void setAutoIncrement(int, boolean) throws java.sql.SQLException;
-    method public void setCaseSensitive(int, boolean) throws java.sql.SQLException;
-    method public void setCatalogName(int, String) throws java.sql.SQLException;
-    method public void setColumnCount(int) throws java.sql.SQLException;
-    method public void setColumnDisplaySize(int, int) throws java.sql.SQLException;
-    method public void setColumnLabel(int, String) throws java.sql.SQLException;
-    method public void setColumnName(int, String) throws java.sql.SQLException;
-    method public void setColumnType(int, int) throws java.sql.SQLException;
-    method public void setColumnTypeName(int, String) throws java.sql.SQLException;
-    method public void setCurrency(int, boolean) throws java.sql.SQLException;
-    method public void setNullable(int, int) throws java.sql.SQLException;
-    method public void setPrecision(int, int) throws java.sql.SQLException;
-    method public void setScale(int, int) throws java.sql.SQLException;
-    method public void setSchemaName(int, String) throws java.sql.SQLException;
-    method public void setSearchable(int, boolean) throws java.sql.SQLException;
-    method public void setSigned(int, boolean) throws java.sql.SQLException;
-    method public void setTableName(int, String) throws java.sql.SQLException;
-  }
-
-  public interface RowSetReader {
-    method public void readData(javax.sql.RowSetInternal) throws java.sql.SQLException;
-  }
-
-  public interface RowSetWriter {
-    method public boolean writeData(javax.sql.RowSetInternal) throws java.sql.SQLException;
-  }
-
-  public class StatementEvent extends java.util.EventObject {
-    ctor public StatementEvent(javax.sql.PooledConnection, java.sql.PreparedStatement);
-    ctor public StatementEvent(javax.sql.PooledConnection, java.sql.PreparedStatement, java.sql.SQLException);
-    method public java.sql.SQLException getSQLException();
-    method public java.sql.PreparedStatement getStatement();
-  }
-
-  public interface StatementEventListener extends java.util.EventListener {
-    method public void statementClosed(javax.sql.StatementEvent);
-    method public void statementErrorOccurred(javax.sql.StatementEvent);
-  }
-
-}
-
-package javax.xml {
-
-  public final class XMLConstants {
-    field public static final String DEFAULT_NS_PREFIX = "";
-    field public static final String FEATURE_SECURE_PROCESSING = "http://javax.xml.XMLConstants/feature/secure-processing";
-    field public static final String NULL_NS_URI = "";
-    field public static final String RELAXNG_NS_URI = "http://relaxng.org/ns/structure/1.0";
-    field public static final String W3C_XML_SCHEMA_INSTANCE_NS_URI = "http://www.w3.org/2001/XMLSchema-instance";
-    field public static final String W3C_XML_SCHEMA_NS_URI = "http://www.w3.org/2001/XMLSchema";
-    field public static final String W3C_XPATH_DATATYPE_NS_URI = "http://www.w3.org/2003/11/xpath-datatypes";
-    field public static final String XMLNS_ATTRIBUTE = "xmlns";
-    field public static final String XMLNS_ATTRIBUTE_NS_URI = "http://www.w3.org/2000/xmlns/";
-    field public static final String XML_DTD_NS_URI = "http://www.w3.org/TR/REC-xml";
-    field public static final String XML_NS_PREFIX = "xml";
-    field public static final String XML_NS_URI = "http://www.w3.org/XML/1998/namespace";
-  }
-
-}
-
-package javax.xml.datatype {
-
-  public class DatatypeConfigurationException extends java.lang.Exception {
-    ctor public DatatypeConfigurationException();
-    ctor public DatatypeConfigurationException(String);
-    ctor public DatatypeConfigurationException(String, Throwable);
-    ctor public DatatypeConfigurationException(Throwable);
-  }
-
-  public final class DatatypeConstants {
-    field public static final int APRIL = 4; // 0x4
-    field public static final int AUGUST = 8; // 0x8
-    field public static final javax.xml.namespace.QName DATE;
-    field public static final javax.xml.namespace.QName DATETIME;
-    field public static final javax.xml.datatype.DatatypeConstants.Field DAYS;
-    field public static final int DECEMBER = 12; // 0xc
-    field public static final javax.xml.namespace.QName DURATION;
-    field public static final javax.xml.namespace.QName DURATION_DAYTIME;
-    field public static final javax.xml.namespace.QName DURATION_YEARMONTH;
-    field public static final int EQUAL = 0; // 0x0
-    field public static final int FEBRUARY = 2; // 0x2
-    field public static final int FIELD_UNDEFINED = -2147483648; // 0x80000000
-    field public static final javax.xml.namespace.QName GDAY;
-    field public static final javax.xml.namespace.QName GMONTH;
-    field public static final javax.xml.namespace.QName GMONTHDAY;
-    field public static final int GREATER = 1; // 0x1
-    field public static final javax.xml.namespace.QName GYEAR;
-    field public static final javax.xml.namespace.QName GYEARMONTH;
-    field public static final javax.xml.datatype.DatatypeConstants.Field HOURS;
-    field public static final int INDETERMINATE = 2; // 0x2
-    field public static final int JANUARY = 1; // 0x1
-    field public static final int JULY = 7; // 0x7
-    field public static final int JUNE = 6; // 0x6
-    field public static final int LESSER = -1; // 0xffffffff
-    field public static final int MARCH = 3; // 0x3
-    field public static final int MAX_TIMEZONE_OFFSET = -840; // 0xfffffcb8
-    field public static final int MAY = 5; // 0x5
-    field public static final javax.xml.datatype.DatatypeConstants.Field MINUTES;
-    field public static final int MIN_TIMEZONE_OFFSET = 840; // 0x348
-    field public static final javax.xml.datatype.DatatypeConstants.Field MONTHS;
-    field public static final int NOVEMBER = 11; // 0xb
-    field public static final int OCTOBER = 10; // 0xa
-    field public static final javax.xml.datatype.DatatypeConstants.Field SECONDS;
-    field public static final int SEPTEMBER = 9; // 0x9
-    field public static final javax.xml.namespace.QName TIME;
-    field public static final javax.xml.datatype.DatatypeConstants.Field YEARS;
-  }
-
-  public static final class DatatypeConstants.Field {
-    method public int getId();
-  }
-
-  public abstract class DatatypeFactory {
-    ctor protected DatatypeFactory();
-    method public abstract javax.xml.datatype.Duration newDuration(String);
-    method public abstract javax.xml.datatype.Duration newDuration(long);
-    method public abstract javax.xml.datatype.Duration newDuration(boolean, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigDecimal);
-    method public javax.xml.datatype.Duration newDuration(boolean, int, int, int, int, int, int);
-    method public javax.xml.datatype.Duration newDurationDayTime(String);
-    method public javax.xml.datatype.Duration newDurationDayTime(long);
-    method public javax.xml.datatype.Duration newDurationDayTime(boolean, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
-    method public javax.xml.datatype.Duration newDurationDayTime(boolean, int, int, int, int);
-    method public javax.xml.datatype.Duration newDurationYearMonth(String);
-    method public javax.xml.datatype.Duration newDurationYearMonth(long);
-    method public javax.xml.datatype.Duration newDurationYearMonth(boolean, java.math.BigInteger, java.math.BigInteger);
-    method public javax.xml.datatype.Duration newDurationYearMonth(boolean, int, int);
-    method public static javax.xml.datatype.DatatypeFactory newInstance() throws javax.xml.datatype.DatatypeConfigurationException;
-    method public static javax.xml.datatype.DatatypeFactory newInstance(String, ClassLoader) throws javax.xml.datatype.DatatypeConfigurationException;
-    method public abstract javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendar();
-    method public abstract javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendar(String);
-    method public abstract javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendar(java.util.GregorianCalendar);
-    method public abstract javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendar(java.math.BigInteger, int, int, int, int, int, java.math.BigDecimal, int);
-    method public javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendar(int, int, int, int, int, int, int, int);
-    method public javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendarDate(int, int, int, int);
-    method public javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendarTime(int, int, int, int);
-    method public javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendarTime(int, int, int, java.math.BigDecimal, int);
-    method public javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendarTime(int, int, int, int, int);
-    field public static final String DATATYPEFACTORY_IMPLEMENTATION_CLASS;
-    field public static final String DATATYPEFACTORY_PROPERTY = "javax.xml.datatype.DatatypeFactory";
-  }
-
-  public abstract class Duration {
-    ctor public Duration();
-    method public abstract javax.xml.datatype.Duration add(javax.xml.datatype.Duration);
-    method public abstract void addTo(java.util.Calendar);
-    method public void addTo(java.util.Date);
-    method public abstract int compare(javax.xml.datatype.Duration);
-    method public int getDays();
-    method public abstract Number getField(javax.xml.datatype.DatatypeConstants.Field);
-    method public int getHours();
-    method public int getMinutes();
-    method public int getMonths();
-    method public int getSeconds();
-    method public abstract int getSign();
-    method public long getTimeInMillis(java.util.Calendar);
-    method public long getTimeInMillis(java.util.Date);
-    method public javax.xml.namespace.QName getXMLSchemaType();
-    method public int getYears();
-    method public abstract int hashCode();
-    method public boolean isLongerThan(javax.xml.datatype.Duration);
-    method public abstract boolean isSet(javax.xml.datatype.DatatypeConstants.Field);
-    method public boolean isShorterThan(javax.xml.datatype.Duration);
-    method public javax.xml.datatype.Duration multiply(int);
-    method public abstract javax.xml.datatype.Duration multiply(java.math.BigDecimal);
-    method public abstract javax.xml.datatype.Duration negate();
-    method public abstract javax.xml.datatype.Duration normalizeWith(java.util.Calendar);
-    method public javax.xml.datatype.Duration subtract(javax.xml.datatype.Duration);
-  }
-
-  public abstract class XMLGregorianCalendar implements java.lang.Cloneable {
-    ctor public XMLGregorianCalendar();
-    method public abstract void add(javax.xml.datatype.Duration);
-    method public abstract void clear();
-    method public abstract Object clone();
-    method public abstract int compare(javax.xml.datatype.XMLGregorianCalendar);
-    method public abstract int getDay();
-    method public abstract java.math.BigInteger getEon();
-    method public abstract java.math.BigInteger getEonAndYear();
-    method public abstract java.math.BigDecimal getFractionalSecond();
-    method public abstract int getHour();
-    method public int getMillisecond();
-    method public abstract int getMinute();
-    method public abstract int getMonth();
-    method public abstract int getSecond();
-    method public abstract java.util.TimeZone getTimeZone(int);
-    method public abstract int getTimezone();
-    method public abstract javax.xml.namespace.QName getXMLSchemaType();
-    method public abstract int getYear();
-    method public abstract boolean isValid();
-    method public abstract javax.xml.datatype.XMLGregorianCalendar normalize();
-    method public abstract void reset();
-    method public abstract void setDay(int);
-    method public abstract void setFractionalSecond(java.math.BigDecimal);
-    method public abstract void setHour(int);
-    method public abstract void setMillisecond(int);
-    method public abstract void setMinute(int);
-    method public abstract void setMonth(int);
-    method public abstract void setSecond(int);
-    method public void setTime(int, int, int);
-    method public void setTime(int, int, int, java.math.BigDecimal);
-    method public void setTime(int, int, int, int);
-    method public abstract void setTimezone(int);
-    method public abstract void setYear(java.math.BigInteger);
-    method public abstract void setYear(int);
-    method public abstract java.util.GregorianCalendar toGregorianCalendar();
-    method public abstract java.util.GregorianCalendar toGregorianCalendar(java.util.TimeZone, java.util.Locale, javax.xml.datatype.XMLGregorianCalendar);
-    method public abstract String toXMLFormat();
-  }
-
-}
-
-package javax.xml.namespace {
-
-  public interface NamespaceContext {
-    method public String getNamespaceURI(String);
-    method public String getPrefix(String);
-    method public java.util.Iterator getPrefixes(String);
-  }
-
-  public class QName implements java.io.Serializable {
-    ctor public QName(String, String);
-    ctor public QName(String, String, String);
-    ctor public QName(String);
-    method public final boolean equals(Object);
-    method public String getLocalPart();
-    method public String getNamespaceURI();
-    method public String getPrefix();
-    method public final int hashCode();
-    method public static javax.xml.namespace.QName valueOf(String);
-  }
-
-}
-
-package javax.xml.parsers {
-
-  public abstract class DocumentBuilder {
-    ctor protected DocumentBuilder();
-    method public abstract org.w3c.dom.DOMImplementation getDOMImplementation();
-    method public javax.xml.validation.Schema getSchema();
-    method public abstract boolean isNamespaceAware();
-    method public abstract boolean isValidating();
-    method public boolean isXIncludeAware();
-    method public abstract org.w3c.dom.Document newDocument();
-    method public org.w3c.dom.Document parse(java.io.InputStream) throws java.io.IOException, org.xml.sax.SAXException;
-    method public org.w3c.dom.Document parse(java.io.InputStream, String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public org.w3c.dom.Document parse(String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public org.w3c.dom.Document parse(java.io.File) throws java.io.IOException, org.xml.sax.SAXException;
-    method public abstract org.w3c.dom.Document parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void reset();
-    method public abstract void setEntityResolver(org.xml.sax.EntityResolver);
-    method public abstract void setErrorHandler(org.xml.sax.ErrorHandler);
-  }
-
-  public abstract class DocumentBuilderFactory {
-    ctor protected DocumentBuilderFactory();
-    method public abstract Object getAttribute(String) throws java.lang.IllegalArgumentException;
-    method public abstract boolean getFeature(String) throws javax.xml.parsers.ParserConfigurationException;
-    method public javax.xml.validation.Schema getSchema();
-    method public boolean isCoalescing();
-    method public boolean isExpandEntityReferences();
-    method public boolean isIgnoringComments();
-    method public boolean isIgnoringElementContentWhitespace();
-    method public boolean isNamespaceAware();
-    method public boolean isValidating();
-    method public boolean isXIncludeAware();
-    method public abstract javax.xml.parsers.DocumentBuilder newDocumentBuilder() throws javax.xml.parsers.ParserConfigurationException;
-    method public static javax.xml.parsers.DocumentBuilderFactory newInstance();
-    method public static javax.xml.parsers.DocumentBuilderFactory newInstance(String, ClassLoader);
-    method public abstract void setAttribute(String, Object) throws java.lang.IllegalArgumentException;
-    method public void setCoalescing(boolean);
-    method public void setExpandEntityReferences(boolean);
-    method public abstract void setFeature(String, boolean) throws javax.xml.parsers.ParserConfigurationException;
-    method public void setIgnoringComments(boolean);
-    method public void setIgnoringElementContentWhitespace(boolean);
-    method public void setNamespaceAware(boolean);
-    method public void setSchema(javax.xml.validation.Schema);
-    method public void setValidating(boolean);
-    method public void setXIncludeAware(boolean);
-  }
-
-  public class FactoryConfigurationError extends java.lang.Error {
-    ctor public FactoryConfigurationError();
-    ctor public FactoryConfigurationError(String);
-    ctor public FactoryConfigurationError(Exception);
-    ctor public FactoryConfigurationError(Exception, String);
-    method public Exception getException();
-  }
-
-  public class ParserConfigurationException extends java.lang.Exception {
-    ctor public ParserConfigurationException();
-    ctor public ParserConfigurationException(String);
-  }
-
-  public abstract class SAXParser {
-    ctor protected SAXParser();
-    method public abstract org.xml.sax.Parser getParser() throws org.xml.sax.SAXException;
-    method public abstract Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public javax.xml.validation.Schema getSchema();
-    method public abstract org.xml.sax.XMLReader getXMLReader() throws org.xml.sax.SAXException;
-    method public abstract boolean isNamespaceAware();
-    method public abstract boolean isValidating();
-    method public boolean isXIncludeAware();
-    method public void parse(java.io.InputStream, org.xml.sax.HandlerBase) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(java.io.InputStream, org.xml.sax.HandlerBase, String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(java.io.InputStream, org.xml.sax.helpers.DefaultHandler) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(java.io.InputStream, org.xml.sax.helpers.DefaultHandler, String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(String, org.xml.sax.HandlerBase) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(String, org.xml.sax.helpers.DefaultHandler) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(java.io.File, org.xml.sax.HandlerBase) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(java.io.File, org.xml.sax.helpers.DefaultHandler) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(org.xml.sax.InputSource, org.xml.sax.HandlerBase) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(org.xml.sax.InputSource, org.xml.sax.helpers.DefaultHandler) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void reset();
-    method public abstract void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-  }
-
-  public abstract class SAXParserFactory {
-    ctor protected SAXParserFactory();
-    method public abstract boolean getFeature(String) throws javax.xml.parsers.ParserConfigurationException, org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public javax.xml.validation.Schema getSchema();
-    method public boolean isNamespaceAware();
-    method public boolean isValidating();
-    method public boolean isXIncludeAware();
-    method public static javax.xml.parsers.SAXParserFactory newInstance();
-    method public static javax.xml.parsers.SAXParserFactory newInstance(String, ClassLoader);
-    method public abstract javax.xml.parsers.SAXParser newSAXParser() throws javax.xml.parsers.ParserConfigurationException, org.xml.sax.SAXException;
-    method public abstract void setFeature(String, boolean) throws javax.xml.parsers.ParserConfigurationException, org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void setNamespaceAware(boolean);
-    method public void setSchema(javax.xml.validation.Schema);
-    method public void setValidating(boolean);
-    method public void setXIncludeAware(boolean);
-  }
-
-}
-
-package javax.xml.transform {
-
-  public interface ErrorListener {
-    method public void error(javax.xml.transform.TransformerException) throws javax.xml.transform.TransformerException;
-    method public void fatalError(javax.xml.transform.TransformerException) throws javax.xml.transform.TransformerException;
-    method public void warning(javax.xml.transform.TransformerException) throws javax.xml.transform.TransformerException;
-  }
-
-  public class OutputKeys {
-    field public static final String CDATA_SECTION_ELEMENTS = "cdata-section-elements";
-    field public static final String DOCTYPE_PUBLIC = "doctype-public";
-    field public static final String DOCTYPE_SYSTEM = "doctype-system";
-    field public static final String ENCODING = "encoding";
-    field public static final String INDENT = "indent";
-    field public static final String MEDIA_TYPE = "media-type";
-    field public static final String METHOD = "method";
-    field public static final String OMIT_XML_DECLARATION = "omit-xml-declaration";
-    field public static final String STANDALONE = "standalone";
-    field public static final String VERSION = "version";
-  }
-
-  public interface Result {
-    method public String getSystemId();
-    method public void setSystemId(String);
-    field public static final String PI_DISABLE_OUTPUT_ESCAPING = "javax.xml.transform.disable-output-escaping";
-    field public static final String PI_ENABLE_OUTPUT_ESCAPING = "javax.xml.transform.enable-output-escaping";
-  }
-
-  public interface Source {
-    method public String getSystemId();
-    method public void setSystemId(String);
-  }
-
-  public interface SourceLocator {
-    method public int getColumnNumber();
-    method public int getLineNumber();
-    method public String getPublicId();
-    method public String getSystemId();
-  }
-
-  public interface Templates {
-    method public java.util.Properties getOutputProperties();
-    method public javax.xml.transform.Transformer newTransformer() throws javax.xml.transform.TransformerConfigurationException;
-  }
-
-  public abstract class Transformer {
-    ctor protected Transformer();
-    method public abstract void clearParameters();
-    method public abstract javax.xml.transform.ErrorListener getErrorListener();
-    method public abstract java.util.Properties getOutputProperties();
-    method public abstract String getOutputProperty(String) throws java.lang.IllegalArgumentException;
-    method public abstract Object getParameter(String);
-    method public abstract javax.xml.transform.URIResolver getURIResolver();
-    method public void reset();
-    method public abstract void setErrorListener(javax.xml.transform.ErrorListener) throws java.lang.IllegalArgumentException;
-    method public abstract void setOutputProperties(java.util.Properties);
-    method public abstract void setOutputProperty(String, String) throws java.lang.IllegalArgumentException;
-    method public abstract void setParameter(String, Object);
-    method public abstract void setURIResolver(javax.xml.transform.URIResolver);
-    method public abstract void transform(javax.xml.transform.Source, javax.xml.transform.Result) throws javax.xml.transform.TransformerException;
-  }
-
-  public class TransformerConfigurationException extends javax.xml.transform.TransformerException {
-    ctor public TransformerConfigurationException();
-    ctor public TransformerConfigurationException(String);
-    ctor public TransformerConfigurationException(Throwable);
-    ctor public TransformerConfigurationException(String, Throwable);
-    ctor public TransformerConfigurationException(String, javax.xml.transform.SourceLocator);
-    ctor public TransformerConfigurationException(String, javax.xml.transform.SourceLocator, Throwable);
-  }
-
-  public class TransformerException extends java.lang.Exception {
-    ctor public TransformerException(String);
-    ctor public TransformerException(Throwable);
-    ctor public TransformerException(String, Throwable);
-    ctor public TransformerException(String, javax.xml.transform.SourceLocator);
-    ctor public TransformerException(String, javax.xml.transform.SourceLocator, Throwable);
-    method public Throwable getException();
-    method public String getLocationAsString();
-    method public javax.xml.transform.SourceLocator getLocator();
-    method public String getMessageAndLocation();
-    method public void setLocator(javax.xml.transform.SourceLocator);
-  }
-
-  public abstract class TransformerFactory {
-    ctor protected TransformerFactory();
-    method public abstract javax.xml.transform.Source getAssociatedStylesheet(javax.xml.transform.Source, String, String, String) throws javax.xml.transform.TransformerConfigurationException;
-    method public abstract Object getAttribute(String);
-    method public abstract javax.xml.transform.ErrorListener getErrorListener();
-    method public abstract boolean getFeature(String);
-    method public abstract javax.xml.transform.URIResolver getURIResolver();
-    method public static javax.xml.transform.TransformerFactory newInstance() throws javax.xml.transform.TransformerFactoryConfigurationError;
-    method public static javax.xml.transform.TransformerFactory newInstance(String, ClassLoader) throws javax.xml.transform.TransformerFactoryConfigurationError;
-    method public abstract javax.xml.transform.Templates newTemplates(javax.xml.transform.Source) throws javax.xml.transform.TransformerConfigurationException;
-    method public abstract javax.xml.transform.Transformer newTransformer(javax.xml.transform.Source) throws javax.xml.transform.TransformerConfigurationException;
-    method public abstract javax.xml.transform.Transformer newTransformer() throws javax.xml.transform.TransformerConfigurationException;
-    method public abstract void setAttribute(String, Object);
-    method public abstract void setErrorListener(javax.xml.transform.ErrorListener);
-    method public abstract void setFeature(String, boolean) throws javax.xml.transform.TransformerConfigurationException;
-    method public abstract void setURIResolver(javax.xml.transform.URIResolver);
-  }
-
-  public class TransformerFactoryConfigurationError extends java.lang.Error {
-    ctor public TransformerFactoryConfigurationError();
-    ctor public TransformerFactoryConfigurationError(String);
-    ctor public TransformerFactoryConfigurationError(Exception);
-    ctor public TransformerFactoryConfigurationError(Exception, String);
-    method public Exception getException();
-  }
-
-  public interface URIResolver {
-    method public javax.xml.transform.Source resolve(String, String) throws javax.xml.transform.TransformerException;
-  }
-
-}
-
-package javax.xml.transform.dom {
-
-  public interface DOMLocator extends javax.xml.transform.SourceLocator {
-    method public org.w3c.dom.Node getOriginatingNode();
-  }
-
-  public class DOMResult implements javax.xml.transform.Result {
-    ctor public DOMResult();
-    ctor public DOMResult(org.w3c.dom.Node);
-    ctor public DOMResult(org.w3c.dom.Node, String);
-    ctor public DOMResult(org.w3c.dom.Node, org.w3c.dom.Node);
-    ctor public DOMResult(org.w3c.dom.Node, org.w3c.dom.Node, String);
-    method public org.w3c.dom.Node getNextSibling();
-    method public org.w3c.dom.Node getNode();
-    method public String getSystemId();
-    method public void setNextSibling(org.w3c.dom.Node);
-    method public void setNode(org.w3c.dom.Node);
-    method public void setSystemId(String);
-    field public static final String FEATURE = "http://javax.xml.transform.dom.DOMResult/feature";
-  }
-
-  public class DOMSource implements javax.xml.transform.Source {
-    ctor public DOMSource();
-    ctor public DOMSource(org.w3c.dom.Node);
-    ctor public DOMSource(org.w3c.dom.Node, String);
-    method public org.w3c.dom.Node getNode();
-    method public String getSystemId();
-    method public void setNode(org.w3c.dom.Node);
-    method public void setSystemId(String);
-    field public static final String FEATURE = "http://javax.xml.transform.dom.DOMSource/feature";
-  }
-
-}
-
-package javax.xml.transform.sax {
-
-  public class SAXResult implements javax.xml.transform.Result {
-    ctor public SAXResult();
-    ctor public SAXResult(org.xml.sax.ContentHandler);
-    method public org.xml.sax.ContentHandler getHandler();
-    method public org.xml.sax.ext.LexicalHandler getLexicalHandler();
-    method public String getSystemId();
-    method public void setHandler(org.xml.sax.ContentHandler);
-    method public void setLexicalHandler(org.xml.sax.ext.LexicalHandler);
-    method public void setSystemId(String);
-    field public static final String FEATURE = "http://javax.xml.transform.sax.SAXResult/feature";
-  }
-
-  public class SAXSource implements javax.xml.transform.Source {
-    ctor public SAXSource();
-    ctor public SAXSource(org.xml.sax.XMLReader, org.xml.sax.InputSource);
-    ctor public SAXSource(org.xml.sax.InputSource);
-    method public org.xml.sax.InputSource getInputSource();
-    method public String getSystemId();
-    method public org.xml.sax.XMLReader getXMLReader();
-    method public void setInputSource(org.xml.sax.InputSource);
-    method public void setSystemId(String);
-    method public void setXMLReader(org.xml.sax.XMLReader);
-    method public static org.xml.sax.InputSource sourceToInputSource(javax.xml.transform.Source);
-    field public static final String FEATURE = "http://javax.xml.transform.sax.SAXSource/feature";
-  }
-
-  public abstract class SAXTransformerFactory extends javax.xml.transform.TransformerFactory {
-    ctor protected SAXTransformerFactory();
-    method public abstract javax.xml.transform.sax.TemplatesHandler newTemplatesHandler() throws javax.xml.transform.TransformerConfigurationException;
-    method public abstract javax.xml.transform.sax.TransformerHandler newTransformerHandler(javax.xml.transform.Source) throws javax.xml.transform.TransformerConfigurationException;
-    method public abstract javax.xml.transform.sax.TransformerHandler newTransformerHandler(javax.xml.transform.Templates) throws javax.xml.transform.TransformerConfigurationException;
-    method public abstract javax.xml.transform.sax.TransformerHandler newTransformerHandler() throws javax.xml.transform.TransformerConfigurationException;
-    method public abstract org.xml.sax.XMLFilter newXMLFilter(javax.xml.transform.Source) throws javax.xml.transform.TransformerConfigurationException;
-    method public abstract org.xml.sax.XMLFilter newXMLFilter(javax.xml.transform.Templates) throws javax.xml.transform.TransformerConfigurationException;
-    field public static final String FEATURE = "http://javax.xml.transform.sax.SAXTransformerFactory/feature";
-    field public static final String FEATURE_XMLFILTER = "http://javax.xml.transform.sax.SAXTransformerFactory/feature/xmlfilter";
-  }
-
-  public interface TemplatesHandler extends org.xml.sax.ContentHandler {
-    method public String getSystemId();
-    method public javax.xml.transform.Templates getTemplates();
-    method public void setSystemId(String);
-  }
-
-  public interface TransformerHandler extends org.xml.sax.ContentHandler org.xml.sax.DTDHandler org.xml.sax.ext.LexicalHandler {
-    method public String getSystemId();
-    method public javax.xml.transform.Transformer getTransformer();
-    method public void setResult(javax.xml.transform.Result) throws java.lang.IllegalArgumentException;
-    method public void setSystemId(String);
-  }
-
-}
-
-package javax.xml.transform.stream {
-
-  public class StreamResult implements javax.xml.transform.Result {
-    ctor public StreamResult();
-    ctor public StreamResult(java.io.OutputStream);
-    ctor public StreamResult(java.io.Writer);
-    ctor public StreamResult(String);
-    ctor public StreamResult(java.io.File);
-    method public java.io.OutputStream getOutputStream();
-    method public String getSystemId();
-    method public java.io.Writer getWriter();
-    method public void setOutputStream(java.io.OutputStream);
-    method public void setSystemId(String);
-    method public void setSystemId(java.io.File);
-    method public void setWriter(java.io.Writer);
-    field public static final String FEATURE = "http://javax.xml.transform.stream.StreamResult/feature";
-  }
-
-  public class StreamSource implements javax.xml.transform.Source {
-    ctor public StreamSource();
-    ctor public StreamSource(java.io.InputStream);
-    ctor public StreamSource(java.io.InputStream, String);
-    ctor public StreamSource(java.io.Reader);
-    ctor public StreamSource(java.io.Reader, String);
-    ctor public StreamSource(String);
-    ctor public StreamSource(java.io.File);
-    method public java.io.InputStream getInputStream();
-    method public String getPublicId();
-    method public java.io.Reader getReader();
-    method public String getSystemId();
-    method public void setInputStream(java.io.InputStream);
-    method public void setPublicId(String);
-    method public void setReader(java.io.Reader);
-    method public void setSystemId(String);
-    method public void setSystemId(java.io.File);
-    field public static final String FEATURE = "http://javax.xml.transform.stream.StreamSource/feature";
-  }
-
-}
-
-package javax.xml.validation {
-
-  public abstract class Schema {
-    ctor protected Schema();
-    method public abstract javax.xml.validation.Validator newValidator();
-    method public abstract javax.xml.validation.ValidatorHandler newValidatorHandler();
-  }
-
-  public abstract class SchemaFactory {
-    ctor protected SchemaFactory();
-    method public abstract org.xml.sax.ErrorHandler getErrorHandler();
-    method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public abstract org.w3c.dom.ls.LSResourceResolver getResourceResolver();
-    method public abstract boolean isSchemaLanguageSupported(String);
-    method public static javax.xml.validation.SchemaFactory newInstance(String);
-    method public static javax.xml.validation.SchemaFactory newInstance(String, String, ClassLoader);
-    method public javax.xml.validation.Schema newSchema(javax.xml.transform.Source) throws org.xml.sax.SAXException;
-    method public javax.xml.validation.Schema newSchema(java.io.File) throws org.xml.sax.SAXException;
-    method public javax.xml.validation.Schema newSchema(java.net.URL) throws org.xml.sax.SAXException;
-    method public abstract javax.xml.validation.Schema newSchema(javax.xml.transform.Source[]) throws org.xml.sax.SAXException;
-    method public abstract javax.xml.validation.Schema newSchema() throws org.xml.sax.SAXException;
-    method public abstract void setErrorHandler(org.xml.sax.ErrorHandler);
-    method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public abstract void setResourceResolver(org.w3c.dom.ls.LSResourceResolver);
-  }
-
-  public abstract class SchemaFactoryLoader {
-    ctor protected SchemaFactoryLoader();
-    method public abstract javax.xml.validation.SchemaFactory newFactory(String);
-  }
-
-  public abstract class TypeInfoProvider {
-    ctor protected TypeInfoProvider();
-    method public abstract org.w3c.dom.TypeInfo getAttributeTypeInfo(int);
-    method public abstract org.w3c.dom.TypeInfo getElementTypeInfo();
-    method public abstract boolean isIdAttribute(int);
-    method public abstract boolean isSpecified(int);
-  }
-
-  public abstract class Validator {
-    ctor protected Validator();
-    method public abstract org.xml.sax.ErrorHandler getErrorHandler();
-    method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public abstract org.w3c.dom.ls.LSResourceResolver getResourceResolver();
-    method public abstract void reset();
-    method public abstract void setErrorHandler(org.xml.sax.ErrorHandler);
-    method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public abstract void setResourceResolver(org.w3c.dom.ls.LSResourceResolver);
-    method public void validate(javax.xml.transform.Source) throws java.io.IOException, org.xml.sax.SAXException;
-    method public abstract void validate(javax.xml.transform.Source, javax.xml.transform.Result) throws java.io.IOException, org.xml.sax.SAXException;
-  }
-
-  public abstract class ValidatorHandler implements org.xml.sax.ContentHandler {
-    ctor protected ValidatorHandler();
-    method public abstract org.xml.sax.ContentHandler getContentHandler();
-    method public abstract org.xml.sax.ErrorHandler getErrorHandler();
-    method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public abstract org.w3c.dom.ls.LSResourceResolver getResourceResolver();
-    method public abstract javax.xml.validation.TypeInfoProvider getTypeInfoProvider();
-    method public abstract void setContentHandler(org.xml.sax.ContentHandler);
-    method public abstract void setErrorHandler(org.xml.sax.ErrorHandler);
-    method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public abstract void setResourceResolver(org.w3c.dom.ls.LSResourceResolver);
-  }
-
-}
-
-package javax.xml.xpath {
-
-  public interface XPath {
-    method public javax.xml.xpath.XPathExpression compile(String) throws javax.xml.xpath.XPathExpressionException;
-    method public Object evaluate(String, Object, javax.xml.namespace.QName) throws javax.xml.xpath.XPathExpressionException;
-    method public String evaluate(String, Object) throws javax.xml.xpath.XPathExpressionException;
-    method public Object evaluate(String, org.xml.sax.InputSource, javax.xml.namespace.QName) throws javax.xml.xpath.XPathExpressionException;
-    method public String evaluate(String, org.xml.sax.InputSource) throws javax.xml.xpath.XPathExpressionException;
-    method public javax.xml.namespace.NamespaceContext getNamespaceContext();
-    method public javax.xml.xpath.XPathFunctionResolver getXPathFunctionResolver();
-    method public javax.xml.xpath.XPathVariableResolver getXPathVariableResolver();
-    method public void reset();
-    method public void setNamespaceContext(javax.xml.namespace.NamespaceContext);
-    method public void setXPathFunctionResolver(javax.xml.xpath.XPathFunctionResolver);
-    method public void setXPathVariableResolver(javax.xml.xpath.XPathVariableResolver);
-  }
-
-  public class XPathConstants {
-    field public static final javax.xml.namespace.QName BOOLEAN;
-    field public static final String DOM_OBJECT_MODEL = "http://java.sun.com/jaxp/xpath/dom";
-    field public static final javax.xml.namespace.QName NODE;
-    field public static final javax.xml.namespace.QName NODESET;
-    field public static final javax.xml.namespace.QName NUMBER;
-    field public static final javax.xml.namespace.QName STRING;
-  }
-
-  public class XPathException extends java.lang.Exception {
-    ctor public XPathException(String);
-    ctor public XPathException(Throwable);
-  }
-
-  public interface XPathExpression {
-    method public Object evaluate(Object, javax.xml.namespace.QName) throws javax.xml.xpath.XPathExpressionException;
-    method public String evaluate(Object) throws javax.xml.xpath.XPathExpressionException;
-    method public Object evaluate(org.xml.sax.InputSource, javax.xml.namespace.QName) throws javax.xml.xpath.XPathExpressionException;
-    method public String evaluate(org.xml.sax.InputSource) throws javax.xml.xpath.XPathExpressionException;
-  }
-
-  public class XPathExpressionException extends javax.xml.xpath.XPathException {
-    ctor public XPathExpressionException(String);
-    ctor public XPathExpressionException(Throwable);
-  }
-
-  public abstract class XPathFactory {
-    ctor protected XPathFactory();
-    method public abstract boolean getFeature(String) throws javax.xml.xpath.XPathFactoryConfigurationException;
-    method public abstract boolean isObjectModelSupported(String);
-    method public static final javax.xml.xpath.XPathFactory newInstance();
-    method public static final javax.xml.xpath.XPathFactory newInstance(String) throws javax.xml.xpath.XPathFactoryConfigurationException;
-    method public static javax.xml.xpath.XPathFactory newInstance(String, String, ClassLoader) throws javax.xml.xpath.XPathFactoryConfigurationException;
-    method public abstract javax.xml.xpath.XPath newXPath();
-    method public abstract void setFeature(String, boolean) throws javax.xml.xpath.XPathFactoryConfigurationException;
-    method public abstract void setXPathFunctionResolver(javax.xml.xpath.XPathFunctionResolver);
-    method public abstract void setXPathVariableResolver(javax.xml.xpath.XPathVariableResolver);
-    field public static final String DEFAULT_OBJECT_MODEL_URI = "http://java.sun.com/jaxp/xpath/dom";
-    field public static final String DEFAULT_PROPERTY_NAME = "javax.xml.xpath.XPathFactory";
-  }
-
-  public class XPathFactoryConfigurationException extends javax.xml.xpath.XPathException {
-    ctor public XPathFactoryConfigurationException(String);
-    ctor public XPathFactoryConfigurationException(Throwable);
-  }
-
-  public interface XPathFunction {
-    method public Object evaluate(java.util.List) throws javax.xml.xpath.XPathFunctionException;
-  }
-
-  public class XPathFunctionException extends javax.xml.xpath.XPathExpressionException {
-    ctor public XPathFunctionException(String);
-    ctor public XPathFunctionException(Throwable);
-  }
-
-  public interface XPathFunctionResolver {
-    method public javax.xml.xpath.XPathFunction resolveFunction(javax.xml.namespace.QName, int);
-  }
-
-  public interface XPathVariableResolver {
-    method public Object resolveVariable(javax.xml.namespace.QName);
-  }
-
-}
-
-package org.apache.http.conn {
-
-  @Deprecated public class ConnectTimeoutException extends java.io.InterruptedIOException {
-    ctor @Deprecated public ConnectTimeoutException();
-    ctor @Deprecated public ConnectTimeoutException(String);
-  }
-
-}
-
-package org.apache.http.conn.scheme {
-
-  @Deprecated public interface HostNameResolver {
-    method @Deprecated public java.net.InetAddress resolve(String) throws java.io.IOException;
-  }
-
-  @Deprecated public interface LayeredSocketFactory extends org.apache.http.conn.scheme.SocketFactory {
-    method @Deprecated public java.net.Socket createSocket(java.net.Socket, String, int, boolean) throws java.io.IOException, java.net.UnknownHostException;
-  }
-
-  @Deprecated public interface SocketFactory {
-    method @Deprecated public java.net.Socket connectSocket(java.net.Socket, String, int, java.net.InetAddress, int, org.apache.http.params.HttpParams) throws org.apache.http.conn.ConnectTimeoutException, java.io.IOException, java.net.UnknownHostException;
-    method @Deprecated public java.net.Socket createSocket() throws java.io.IOException;
-    method @Deprecated public boolean isSecure(java.net.Socket) throws java.lang.IllegalArgumentException;
-  }
-
-}
-
-package org.apache.http.conn.ssl {
-
-  @Deprecated public abstract class AbstractVerifier implements org.apache.http.conn.ssl.X509HostnameVerifier {
-    ctor @Deprecated public AbstractVerifier();
-    method @Deprecated public static boolean acceptableCountryWildcard(String);
-    method @Deprecated public static int countDots(String);
-    method @Deprecated public static String[] getCNs(java.security.cert.X509Certificate);
-    method @Deprecated public static String[] getDNSSubjectAlts(java.security.cert.X509Certificate);
-    method @Deprecated public final void verify(String, javax.net.ssl.SSLSocket) throws java.io.IOException;
-    method @Deprecated public final boolean verify(String, javax.net.ssl.SSLSession);
-    method @Deprecated public final void verify(String, java.security.cert.X509Certificate) throws javax.net.ssl.SSLException;
-    method @Deprecated public final void verify(String, String[], String[], boolean) throws javax.net.ssl.SSLException;
-  }
-
-  @Deprecated public class AllowAllHostnameVerifier extends org.apache.http.conn.ssl.AbstractVerifier {
-    ctor @Deprecated public AllowAllHostnameVerifier();
-    method @Deprecated public final String toString();
-    method @Deprecated public final void verify(String, String[], String[]);
-  }
-
-  @Deprecated public class BrowserCompatHostnameVerifier extends org.apache.http.conn.ssl.AbstractVerifier {
-    ctor @Deprecated public BrowserCompatHostnameVerifier();
-    method @Deprecated public final String toString();
-    method @Deprecated public final void verify(String, String[], String[]) throws javax.net.ssl.SSLException;
-  }
-
-  @Deprecated public class SSLSocketFactory implements org.apache.http.conn.scheme.LayeredSocketFactory {
-    ctor @Deprecated public SSLSocketFactory(String, java.security.KeyStore, String, java.security.KeyStore, java.security.SecureRandom, org.apache.http.conn.scheme.HostNameResolver) throws java.security.KeyManagementException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
-    ctor @Deprecated public SSLSocketFactory(java.security.KeyStore, String, java.security.KeyStore) throws java.security.KeyManagementException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
-    ctor @Deprecated public SSLSocketFactory(java.security.KeyStore, String) throws java.security.KeyManagementException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
-    ctor @Deprecated public SSLSocketFactory(java.security.KeyStore) throws java.security.KeyManagementException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
-    method @Deprecated public java.net.Socket connectSocket(java.net.Socket, String, int, java.net.InetAddress, int, org.apache.http.params.HttpParams) throws java.io.IOException;
-    method @Deprecated public java.net.Socket createSocket() throws java.io.IOException;
-    method @Deprecated public java.net.Socket createSocket(java.net.Socket, String, int, boolean) throws java.io.IOException, java.net.UnknownHostException;
-    method @Deprecated public org.apache.http.conn.ssl.X509HostnameVerifier getHostnameVerifier();
-    method @Deprecated public static org.apache.http.conn.ssl.SSLSocketFactory getSocketFactory();
-    method @Deprecated public boolean isSecure(java.net.Socket) throws java.lang.IllegalArgumentException;
-    method @Deprecated public void setHostnameVerifier(org.apache.http.conn.ssl.X509HostnameVerifier);
-    field @Deprecated public static final org.apache.http.conn.ssl.X509HostnameVerifier ALLOW_ALL_HOSTNAME_VERIFIER;
-    field @Deprecated public static final org.apache.http.conn.ssl.X509HostnameVerifier BROWSER_COMPATIBLE_HOSTNAME_VERIFIER;
-    field @Deprecated public static final String SSL = "SSL";
-    field @Deprecated public static final String SSLV2 = "SSLv2";
-    field @Deprecated public static final org.apache.http.conn.ssl.X509HostnameVerifier STRICT_HOSTNAME_VERIFIER;
-    field @Deprecated public static final String TLS = "TLS";
-  }
-
-  @Deprecated public class StrictHostnameVerifier extends org.apache.http.conn.ssl.AbstractVerifier {
-    ctor @Deprecated public StrictHostnameVerifier();
-    method @Deprecated public final String toString();
-    method @Deprecated public final void verify(String, String[], String[]) throws javax.net.ssl.SSLException;
-  }
-
-  @Deprecated public interface X509HostnameVerifier extends javax.net.ssl.HostnameVerifier {
-    method @Deprecated public void verify(String, javax.net.ssl.SSLSocket) throws java.io.IOException;
-    method @Deprecated public void verify(String, java.security.cert.X509Certificate) throws javax.net.ssl.SSLException;
-    method @Deprecated public void verify(String, String[], String[]) throws javax.net.ssl.SSLException;
-  }
-
-}
-
-package org.apache.http.params {
-
-  @Deprecated public interface CoreConnectionPNames {
-    field @Deprecated public static final String CONNECTION_TIMEOUT = "http.connection.timeout";
-    field @Deprecated public static final String MAX_HEADER_COUNT = "http.connection.max-header-count";
-    field @Deprecated public static final String MAX_LINE_LENGTH = "http.connection.max-line-length";
-    field @Deprecated public static final String SOCKET_BUFFER_SIZE = "http.socket.buffer-size";
-    field @Deprecated public static final String SO_LINGER = "http.socket.linger";
-    field @Deprecated public static final String SO_TIMEOUT = "http.socket.timeout";
-    field @Deprecated public static final String STALE_CONNECTION_CHECK = "http.connection.stalecheck";
-    field @Deprecated public static final String TCP_NODELAY = "http.tcp.nodelay";
-  }
-
-  @Deprecated public final class HttpConnectionParams implements org.apache.http.params.CoreConnectionPNames {
-    method @Deprecated public static int getConnectionTimeout(org.apache.http.params.HttpParams);
-    method @Deprecated public static int getLinger(org.apache.http.params.HttpParams);
-    method @Deprecated public static int getSoTimeout(org.apache.http.params.HttpParams);
-    method @Deprecated public static int getSocketBufferSize(org.apache.http.params.HttpParams);
-    method @Deprecated public static boolean getTcpNoDelay(org.apache.http.params.HttpParams);
-    method @Deprecated public static boolean isStaleCheckingEnabled(org.apache.http.params.HttpParams);
-    method @Deprecated public static void setConnectionTimeout(org.apache.http.params.HttpParams, int);
-    method @Deprecated public static void setLinger(org.apache.http.params.HttpParams, int);
-    method @Deprecated public static void setSoTimeout(org.apache.http.params.HttpParams, int);
-    method @Deprecated public static void setSocketBufferSize(org.apache.http.params.HttpParams, int);
-    method @Deprecated public static void setStaleCheckingEnabled(org.apache.http.params.HttpParams, boolean);
-    method @Deprecated public static void setTcpNoDelay(org.apache.http.params.HttpParams, boolean);
-  }
-
-  @Deprecated public interface HttpParams {
-    method @Deprecated public org.apache.http.params.HttpParams copy();
-    method @Deprecated public boolean getBooleanParameter(String, boolean);
-    method @Deprecated public double getDoubleParameter(String, double);
-    method @Deprecated public int getIntParameter(String, int);
-    method @Deprecated public long getLongParameter(String, long);
-    method @Deprecated public Object getParameter(String);
-    method @Deprecated public boolean isParameterFalse(String);
-    method @Deprecated public boolean isParameterTrue(String);
-    method @Deprecated public boolean removeParameter(String);
-    method @Deprecated public org.apache.http.params.HttpParams setBooleanParameter(String, boolean);
-    method @Deprecated public org.apache.http.params.HttpParams setDoubleParameter(String, double);
-    method @Deprecated public org.apache.http.params.HttpParams setIntParameter(String, int);
-    method @Deprecated public org.apache.http.params.HttpParams setLongParameter(String, long);
-    method @Deprecated public org.apache.http.params.HttpParams setParameter(String, Object);
-  }
-
-}
-
-package org.json {
-
-  public class JSONArray {
-    ctor public JSONArray();
-    ctor public JSONArray(java.util.Collection);
-    ctor public JSONArray(org.json.JSONTokener) throws org.json.JSONException;
-    ctor public JSONArray(String) throws org.json.JSONException;
-    ctor public JSONArray(Object) throws org.json.JSONException;
-    method public Object get(int) throws org.json.JSONException;
-    method public boolean getBoolean(int) throws org.json.JSONException;
-    method public double getDouble(int) throws org.json.JSONException;
-    method public int getInt(int) throws org.json.JSONException;
-    method public org.json.JSONArray getJSONArray(int) throws org.json.JSONException;
-    method public org.json.JSONObject getJSONObject(int) throws org.json.JSONException;
-    method public long getLong(int) throws org.json.JSONException;
-    method public String getString(int) throws org.json.JSONException;
-    method public boolean isNull(int);
-    method public String join(String) throws org.json.JSONException;
-    method public int length();
-    method public Object opt(int);
-    method public boolean optBoolean(int);
-    method public boolean optBoolean(int, boolean);
-    method public double optDouble(int);
-    method public double optDouble(int, double);
-    method public int optInt(int);
-    method public int optInt(int, int);
-    method public org.json.JSONArray optJSONArray(int);
-    method public org.json.JSONObject optJSONObject(int);
-    method public long optLong(int);
-    method public long optLong(int, long);
-    method public String optString(int);
-    method public String optString(int, String);
-    method public org.json.JSONArray put(boolean);
-    method public org.json.JSONArray put(double) throws org.json.JSONException;
-    method public org.json.JSONArray put(int);
-    method public org.json.JSONArray put(long);
-    method public org.json.JSONArray put(Object);
-    method public org.json.JSONArray put(int, boolean) throws org.json.JSONException;
-    method public org.json.JSONArray put(int, double) throws org.json.JSONException;
-    method public org.json.JSONArray put(int, int) throws org.json.JSONException;
-    method public org.json.JSONArray put(int, long) throws org.json.JSONException;
-    method public org.json.JSONArray put(int, Object) throws org.json.JSONException;
-    method public Object remove(int);
-    method public org.json.JSONObject toJSONObject(org.json.JSONArray) throws org.json.JSONException;
-    method public String toString(int) throws org.json.JSONException;
-  }
-
-  public class JSONException extends java.lang.Exception {
-    ctor public JSONException(String);
-    ctor public JSONException(String, Throwable);
-    ctor public JSONException(Throwable);
-  }
-
-  public class JSONObject {
-    ctor public JSONObject();
-    ctor public JSONObject(@NonNull java.util.Map);
-    ctor public JSONObject(@NonNull org.json.JSONTokener) throws org.json.JSONException;
-    ctor public JSONObject(@NonNull String) throws org.json.JSONException;
-    ctor public JSONObject(@NonNull org.json.JSONObject, @NonNull String[]) throws org.json.JSONException;
-    method @NonNull public org.json.JSONObject accumulate(@NonNull String, @Nullable Object) throws org.json.JSONException;
-    method @NonNull public Object get(@NonNull String) throws org.json.JSONException;
-    method public boolean getBoolean(@NonNull String) throws org.json.JSONException;
-    method public double getDouble(@NonNull String) throws org.json.JSONException;
-    method public int getInt(@NonNull String) throws org.json.JSONException;
-    method @NonNull public org.json.JSONArray getJSONArray(@NonNull String) throws org.json.JSONException;
-    method @NonNull public org.json.JSONObject getJSONObject(@NonNull String) throws org.json.JSONException;
-    method public long getLong(@NonNull String) throws org.json.JSONException;
-    method @NonNull public String getString(@NonNull String) throws org.json.JSONException;
-    method public boolean has(@Nullable String);
-    method public boolean isNull(@Nullable String);
-    method @NonNull public java.util.Iterator<java.lang.String> keys();
-    method public int length();
-    method @Nullable public org.json.JSONArray names();
-    method @NonNull public static String numberToString(@NonNull Number) throws org.json.JSONException;
-    method @Nullable public Object opt(@Nullable String);
-    method public boolean optBoolean(@Nullable String);
-    method public boolean optBoolean(@Nullable String, boolean);
-    method public double optDouble(@Nullable String);
-    method public double optDouble(@Nullable String, double);
-    method public int optInt(@Nullable String);
-    method public int optInt(@Nullable String, int);
-    method @Nullable public org.json.JSONArray optJSONArray(@Nullable String);
-    method @Nullable public org.json.JSONObject optJSONObject(@Nullable String);
-    method public long optLong(@Nullable String);
-    method public long optLong(@Nullable String, long);
-    method @NonNull public String optString(@Nullable String);
-    method @NonNull public String optString(@Nullable String, @NonNull String);
-    method @NonNull public org.json.JSONObject put(@NonNull String, boolean) throws org.json.JSONException;
-    method @NonNull public org.json.JSONObject put(@NonNull String, double) throws org.json.JSONException;
-    method @NonNull public org.json.JSONObject put(@NonNull String, int) throws org.json.JSONException;
-    method @NonNull public org.json.JSONObject put(@NonNull String, long) throws org.json.JSONException;
-    method @NonNull public org.json.JSONObject put(@NonNull String, @Nullable Object) throws org.json.JSONException;
-    method @NonNull public org.json.JSONObject putOpt(@Nullable String, @Nullable Object) throws org.json.JSONException;
-    method @NonNull public static String quote(@Nullable String);
-    method @Nullable public Object remove(@Nullable String);
-    method @Nullable public org.json.JSONArray toJSONArray(@Nullable org.json.JSONArray) throws org.json.JSONException;
-    method @NonNull public String toString(int) throws org.json.JSONException;
-    method @Nullable public static Object wrap(@Nullable Object);
-    field @NonNull public static final Object NULL;
-  }
-
-  public class JSONStringer {
-    ctor public JSONStringer();
-    method public org.json.JSONStringer array() throws org.json.JSONException;
-    method public org.json.JSONStringer endArray() throws org.json.JSONException;
-    method public org.json.JSONStringer endObject() throws org.json.JSONException;
-    method public org.json.JSONStringer key(String) throws org.json.JSONException;
-    method public org.json.JSONStringer object() throws org.json.JSONException;
-    method public org.json.JSONStringer value(Object) throws org.json.JSONException;
-    method public org.json.JSONStringer value(boolean) throws org.json.JSONException;
-    method public org.json.JSONStringer value(double) throws org.json.JSONException;
-    method public org.json.JSONStringer value(long) throws org.json.JSONException;
-  }
-
-  public class JSONTokener {
-    ctor public JSONTokener(String);
-    method public void back();
-    method public static int dehexchar(char);
-    method public boolean more();
-    method public char next();
-    method public char next(char) throws org.json.JSONException;
-    method public String next(int) throws org.json.JSONException;
-    method public char nextClean() throws org.json.JSONException;
-    method public String nextString(char) throws org.json.JSONException;
-    method public String nextTo(String);
-    method public String nextTo(char);
-    method public Object nextValue() throws org.json.JSONException;
-    method public void skipPast(String);
-    method public char skipTo(char);
-    method public org.json.JSONException syntaxError(String);
-  }
-
-}
-
-package org.w3c.dom {
-
-  public interface Attr extends org.w3c.dom.Node {
-    method public String getName();
-    method public org.w3c.dom.Element getOwnerElement();
-    method public org.w3c.dom.TypeInfo getSchemaTypeInfo();
-    method public boolean getSpecified();
-    method public String getValue();
-    method public boolean isId();
-    method public void setValue(String) throws org.w3c.dom.DOMException;
-  }
-
-  public interface CDATASection extends org.w3c.dom.Text {
-  }
-
-  public interface CharacterData extends org.w3c.dom.Node {
-    method public void appendData(String) throws org.w3c.dom.DOMException;
-    method public void deleteData(int, int) throws org.w3c.dom.DOMException;
-    method public String getData() throws org.w3c.dom.DOMException;
-    method public int getLength();
-    method public void insertData(int, String) throws org.w3c.dom.DOMException;
-    method public void replaceData(int, int, String) throws org.w3c.dom.DOMException;
-    method public void setData(String) throws org.w3c.dom.DOMException;
-    method public String substringData(int, int) throws org.w3c.dom.DOMException;
-  }
-
-  public interface Comment extends org.w3c.dom.CharacterData {
-  }
-
-  public interface DOMConfiguration {
-    method public boolean canSetParameter(String, Object);
-    method public Object getParameter(String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.DOMStringList getParameterNames();
-    method public void setParameter(String, Object) throws org.w3c.dom.DOMException;
-  }
-
-  public interface DOMError {
-    method public org.w3c.dom.DOMLocator getLocation();
-    method public String getMessage();
-    method public Object getRelatedData();
-    method public Object getRelatedException();
-    method public short getSeverity();
-    method public String getType();
-    field public static final short SEVERITY_ERROR = 2; // 0x2
-    field public static final short SEVERITY_FATAL_ERROR = 3; // 0x3
-    field public static final short SEVERITY_WARNING = 1; // 0x1
-  }
-
-  public interface DOMErrorHandler {
-    method public boolean handleError(org.w3c.dom.DOMError);
-  }
-
-  public class DOMException extends java.lang.RuntimeException {
-    ctor public DOMException(short, String);
-    field public static final short DOMSTRING_SIZE_ERR = 2; // 0x2
-    field public static final short HIERARCHY_REQUEST_ERR = 3; // 0x3
-    field public static final short INDEX_SIZE_ERR = 1; // 0x1
-    field public static final short INUSE_ATTRIBUTE_ERR = 10; // 0xa
-    field public static final short INVALID_ACCESS_ERR = 15; // 0xf
-    field public static final short INVALID_CHARACTER_ERR = 5; // 0x5
-    field public static final short INVALID_MODIFICATION_ERR = 13; // 0xd
-    field public static final short INVALID_STATE_ERR = 11; // 0xb
-    field public static final short NAMESPACE_ERR = 14; // 0xe
-    field public static final short NOT_FOUND_ERR = 8; // 0x8
-    field public static final short NOT_SUPPORTED_ERR = 9; // 0x9
-    field public static final short NO_DATA_ALLOWED_ERR = 6; // 0x6
-    field public static final short NO_MODIFICATION_ALLOWED_ERR = 7; // 0x7
-    field public static final short SYNTAX_ERR = 12; // 0xc
-    field public static final short TYPE_MISMATCH_ERR = 17; // 0x11
-    field public static final short VALIDATION_ERR = 16; // 0x10
-    field public static final short WRONG_DOCUMENT_ERR = 4; // 0x4
-    field public short code;
-  }
-
-  public interface DOMImplementation {
-    method public org.w3c.dom.Document createDocument(String, String, org.w3c.dom.DocumentType) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.DocumentType createDocumentType(String, String, String) throws org.w3c.dom.DOMException;
-    method public Object getFeature(String, String);
-    method public boolean hasFeature(String, String);
-  }
-
-  public interface DOMImplementationList {
-    method public int getLength();
-    method public org.w3c.dom.DOMImplementation item(int);
-  }
-
-  public interface DOMImplementationSource {
-    method public org.w3c.dom.DOMImplementation getDOMImplementation(String);
-    method public org.w3c.dom.DOMImplementationList getDOMImplementationList(String);
-  }
-
-  public interface DOMLocator {
-    method public int getByteOffset();
-    method public int getColumnNumber();
-    method public int getLineNumber();
-    method public org.w3c.dom.Node getRelatedNode();
-    method public String getUri();
-    method public int getUtf16Offset();
-  }
-
-  public interface DOMStringList {
-    method public boolean contains(String);
-    method public int getLength();
-    method public String item(int);
-  }
-
-  public interface Document extends org.w3c.dom.Node {
-    method public org.w3c.dom.Node adoptNode(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Attr createAttribute(String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Attr createAttributeNS(String, String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.CDATASection createCDATASection(String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Comment createComment(String);
-    method public org.w3c.dom.DocumentFragment createDocumentFragment();
-    method public org.w3c.dom.Element createElement(String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Element createElementNS(String, String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.EntityReference createEntityReference(String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.ProcessingInstruction createProcessingInstruction(String, String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Text createTextNode(String);
-    method public org.w3c.dom.DocumentType getDoctype();
-    method public org.w3c.dom.Element getDocumentElement();
-    method public String getDocumentURI();
-    method public org.w3c.dom.DOMConfiguration getDomConfig();
-    method public org.w3c.dom.Element getElementById(String);
-    method public org.w3c.dom.NodeList getElementsByTagName(String);
-    method public org.w3c.dom.NodeList getElementsByTagNameNS(String, String);
-    method public org.w3c.dom.DOMImplementation getImplementation();
-    method public String getInputEncoding();
-    method public boolean getStrictErrorChecking();
-    method public String getXmlEncoding();
-    method public boolean getXmlStandalone();
-    method public String getXmlVersion();
-    method public org.w3c.dom.Node importNode(org.w3c.dom.Node, boolean) throws org.w3c.dom.DOMException;
-    method public void normalizeDocument();
-    method public org.w3c.dom.Node renameNode(org.w3c.dom.Node, String, String) throws org.w3c.dom.DOMException;
-    method public void setDocumentURI(String);
-    method public void setStrictErrorChecking(boolean);
-    method public void setXmlStandalone(boolean) throws org.w3c.dom.DOMException;
-    method public void setXmlVersion(String) throws org.w3c.dom.DOMException;
-  }
-
-  public interface DocumentFragment extends org.w3c.dom.Node {
-  }
-
-  public interface DocumentType extends org.w3c.dom.Node {
-    method public org.w3c.dom.NamedNodeMap getEntities();
-    method public String getInternalSubset();
-    method public String getName();
-    method public org.w3c.dom.NamedNodeMap getNotations();
-    method public String getPublicId();
-    method public String getSystemId();
-  }
-
-  public interface Element extends org.w3c.dom.Node {
-    method public String getAttribute(String);
-    method public String getAttributeNS(String, String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Attr getAttributeNode(String);
-    method public org.w3c.dom.Attr getAttributeNodeNS(String, String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.NodeList getElementsByTagName(String);
-    method public org.w3c.dom.NodeList getElementsByTagNameNS(String, String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.TypeInfo getSchemaTypeInfo();
-    method public String getTagName();
-    method public boolean hasAttribute(String);
-    method public boolean hasAttributeNS(String, String) throws org.w3c.dom.DOMException;
-    method public void removeAttribute(String) throws org.w3c.dom.DOMException;
-    method public void removeAttributeNS(String, String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Attr removeAttributeNode(org.w3c.dom.Attr) throws org.w3c.dom.DOMException;
-    method public void setAttribute(String, String) throws org.w3c.dom.DOMException;
-    method public void setAttributeNS(String, String, String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Attr setAttributeNode(org.w3c.dom.Attr) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Attr setAttributeNodeNS(org.w3c.dom.Attr) throws org.w3c.dom.DOMException;
-    method public void setIdAttribute(String, boolean) throws org.w3c.dom.DOMException;
-    method public void setIdAttributeNS(String, String, boolean) throws org.w3c.dom.DOMException;
-    method public void setIdAttributeNode(org.w3c.dom.Attr, boolean) throws org.w3c.dom.DOMException;
-  }
-
-  public interface Entity extends org.w3c.dom.Node {
-    method public String getInputEncoding();
-    method public String getNotationName();
-    method public String getPublicId();
-    method public String getSystemId();
-    method public String getXmlEncoding();
-    method public String getXmlVersion();
-  }
-
-  public interface EntityReference extends org.w3c.dom.Node {
-  }
-
-  public interface NameList {
-    method public boolean contains(String);
-    method public boolean containsNS(String, String);
-    method public int getLength();
-    method public String getName(int);
-    method public String getNamespaceURI(int);
-  }
-
-  public interface NamedNodeMap {
-    method public int getLength();
-    method public org.w3c.dom.Node getNamedItem(String);
-    method public org.w3c.dom.Node getNamedItemNS(String, String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Node item(int);
-    method public org.w3c.dom.Node removeNamedItem(String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Node removeNamedItemNS(String, String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Node setNamedItem(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Node setNamedItemNS(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
-  }
-
-  public interface Node {
-    method public org.w3c.dom.Node appendChild(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Node cloneNode(boolean);
-    method public short compareDocumentPosition(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.NamedNodeMap getAttributes();
-    method public String getBaseURI();
-    method public org.w3c.dom.NodeList getChildNodes();
-    method public Object getFeature(String, String);
-    method public org.w3c.dom.Node getFirstChild();
-    method public org.w3c.dom.Node getLastChild();
-    method public String getLocalName();
-    method public String getNamespaceURI();
-    method public org.w3c.dom.Node getNextSibling();
-    method public String getNodeName();
-    method public short getNodeType();
-    method public String getNodeValue() throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Document getOwnerDocument();
-    method public org.w3c.dom.Node getParentNode();
-    method public String getPrefix();
-    method public org.w3c.dom.Node getPreviousSibling();
-    method public String getTextContent() throws org.w3c.dom.DOMException;
-    method public Object getUserData(String);
-    method public boolean hasAttributes();
-    method public boolean hasChildNodes();
-    method public org.w3c.dom.Node insertBefore(org.w3c.dom.Node, org.w3c.dom.Node) throws org.w3c.dom.DOMException;
-    method public boolean isDefaultNamespace(String);
-    method public boolean isEqualNode(org.w3c.dom.Node);
-    method public boolean isSameNode(org.w3c.dom.Node);
-    method public boolean isSupported(String, String);
-    method public String lookupNamespaceURI(String);
-    method public String lookupPrefix(String);
-    method public void normalize();
-    method public org.w3c.dom.Node removeChild(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Node replaceChild(org.w3c.dom.Node, org.w3c.dom.Node) throws org.w3c.dom.DOMException;
-    method public void setNodeValue(String) throws org.w3c.dom.DOMException;
-    method public void setPrefix(String) throws org.w3c.dom.DOMException;
-    method public void setTextContent(String) throws org.w3c.dom.DOMException;
-    method public Object setUserData(String, Object, org.w3c.dom.UserDataHandler);
-    field public static final short ATTRIBUTE_NODE = 2; // 0x2
-    field public static final short CDATA_SECTION_NODE = 4; // 0x4
-    field public static final short COMMENT_NODE = 8; // 0x8
-    field public static final short DOCUMENT_FRAGMENT_NODE = 11; // 0xb
-    field public static final short DOCUMENT_NODE = 9; // 0x9
-    field public static final short DOCUMENT_POSITION_CONTAINED_BY = 16; // 0x10
-    field public static final short DOCUMENT_POSITION_CONTAINS = 8; // 0x8
-    field public static final short DOCUMENT_POSITION_DISCONNECTED = 1; // 0x1
-    field public static final short DOCUMENT_POSITION_FOLLOWING = 4; // 0x4
-    field public static final short DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 32; // 0x20
-    field public static final short DOCUMENT_POSITION_PRECEDING = 2; // 0x2
-    field public static final short DOCUMENT_TYPE_NODE = 10; // 0xa
-    field public static final short ELEMENT_NODE = 1; // 0x1
-    field public static final short ENTITY_NODE = 6; // 0x6
-    field public static final short ENTITY_REFERENCE_NODE = 5; // 0x5
-    field public static final short NOTATION_NODE = 12; // 0xc
-    field public static final short PROCESSING_INSTRUCTION_NODE = 7; // 0x7
-    field public static final short TEXT_NODE = 3; // 0x3
-  }
-
-  public interface NodeList {
-    method public int getLength();
-    method public org.w3c.dom.Node item(int);
-  }
-
-  public interface Notation extends org.w3c.dom.Node {
-    method public String getPublicId();
-    method public String getSystemId();
-  }
-
-  public interface ProcessingInstruction extends org.w3c.dom.Node {
-    method public String getData();
-    method public String getTarget();
-    method public void setData(String) throws org.w3c.dom.DOMException;
-  }
-
-  public interface Text extends org.w3c.dom.CharacterData {
-    method public String getWholeText();
-    method public boolean isElementContentWhitespace();
-    method public org.w3c.dom.Text replaceWholeText(String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Text splitText(int) throws org.w3c.dom.DOMException;
-  }
-
-  public interface TypeInfo {
-    method public String getTypeName();
-    method public String getTypeNamespace();
-    method public boolean isDerivedFrom(String, String, int);
-    field public static final int DERIVATION_EXTENSION = 2; // 0x2
-    field public static final int DERIVATION_LIST = 8; // 0x8
-    field public static final int DERIVATION_RESTRICTION = 1; // 0x1
-    field public static final int DERIVATION_UNION = 4; // 0x4
-  }
-
-  public interface UserDataHandler {
-    method public void handle(short, String, Object, org.w3c.dom.Node, org.w3c.dom.Node);
-    field public static final short NODE_ADOPTED = 5; // 0x5
-    field public static final short NODE_CLONED = 1; // 0x1
-    field public static final short NODE_DELETED = 3; // 0x3
-    field public static final short NODE_IMPORTED = 2; // 0x2
-    field public static final short NODE_RENAMED = 4; // 0x4
-  }
-
-}
-
-package org.w3c.dom.ls {
-
-  public interface DOMImplementationLS {
-    method public org.w3c.dom.ls.LSInput createLSInput();
-    method public org.w3c.dom.ls.LSOutput createLSOutput();
-    method public org.w3c.dom.ls.LSParser createLSParser(short, String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.ls.LSSerializer createLSSerializer();
-    field public static final short MODE_ASYNCHRONOUS = 2; // 0x2
-    field public static final short MODE_SYNCHRONOUS = 1; // 0x1
-  }
-
-  public class LSException extends java.lang.RuntimeException {
-    ctor public LSException(short, String);
-    field public static final short PARSE_ERR = 81; // 0x51
-    field public static final short SERIALIZE_ERR = 82; // 0x52
-    field public short code;
-  }
-
-  public interface LSInput {
-    method public String getBaseURI();
-    method public java.io.InputStream getByteStream();
-    method public boolean getCertifiedText();
-    method public java.io.Reader getCharacterStream();
-    method public String getEncoding();
-    method public String getPublicId();
-    method public String getStringData();
-    method public String getSystemId();
-    method public void setBaseURI(String);
-    method public void setByteStream(java.io.InputStream);
-    method public void setCertifiedText(boolean);
-    method public void setCharacterStream(java.io.Reader);
-    method public void setEncoding(String);
-    method public void setPublicId(String);
-    method public void setStringData(String);
-    method public void setSystemId(String);
-  }
-
-  public interface LSOutput {
-    method public java.io.OutputStream getByteStream();
-    method public java.io.Writer getCharacterStream();
-    method public String getEncoding();
-    method public String getSystemId();
-    method public void setByteStream(java.io.OutputStream);
-    method public void setCharacterStream(java.io.Writer);
-    method public void setEncoding(String);
-    method public void setSystemId(String);
-  }
-
-  public interface LSParser {
-    method public void abort();
-    method public boolean getAsync();
-    method public boolean getBusy();
-    method public org.w3c.dom.DOMConfiguration getDomConfig();
-    method public org.w3c.dom.ls.LSParserFilter getFilter();
-    method public org.w3c.dom.Document parse(org.w3c.dom.ls.LSInput) throws org.w3c.dom.DOMException, org.w3c.dom.ls.LSException;
-    method public org.w3c.dom.Document parseURI(String) throws org.w3c.dom.DOMException, org.w3c.dom.ls.LSException;
-    method public org.w3c.dom.Node parseWithContext(org.w3c.dom.ls.LSInput, org.w3c.dom.Node, short) throws org.w3c.dom.DOMException, org.w3c.dom.ls.LSException;
-    method public void setFilter(org.w3c.dom.ls.LSParserFilter);
-    field public static final short ACTION_APPEND_AS_CHILDREN = 1; // 0x1
-    field public static final short ACTION_INSERT_AFTER = 4; // 0x4
-    field public static final short ACTION_INSERT_BEFORE = 3; // 0x3
-    field public static final short ACTION_REPLACE = 5; // 0x5
-    field public static final short ACTION_REPLACE_CHILDREN = 2; // 0x2
-  }
-
-  public interface LSParserFilter {
-    method public short acceptNode(org.w3c.dom.Node);
-    method public int getWhatToShow();
-    method public short startElement(org.w3c.dom.Element);
-    field public static final short FILTER_ACCEPT = 1; // 0x1
-    field public static final short FILTER_INTERRUPT = 4; // 0x4
-    field public static final short FILTER_REJECT = 2; // 0x2
-    field public static final short FILTER_SKIP = 3; // 0x3
-  }
-
-  public interface LSResourceResolver {
-    method public org.w3c.dom.ls.LSInput resolveResource(String, String, String, String, String);
-  }
-
-  public interface LSSerializer {
-    method public org.w3c.dom.DOMConfiguration getDomConfig();
-    method public String getNewLine();
-    method public void setNewLine(String);
-    method public boolean write(org.w3c.dom.Node, org.w3c.dom.ls.LSOutput) throws org.w3c.dom.ls.LSException;
-    method public String writeToString(org.w3c.dom.Node) throws org.w3c.dom.DOMException, org.w3c.dom.ls.LSException;
-    method public boolean writeToURI(org.w3c.dom.Node, String) throws org.w3c.dom.ls.LSException;
-  }
-
-}
-
-package org.xml.sax {
-
-  @Deprecated public interface AttributeList {
-    method @Deprecated public int getLength();
-    method @Deprecated public String getName(int);
-    method @Deprecated public String getType(int);
-    method @Deprecated public String getType(String);
-    method @Deprecated public String getValue(int);
-    method @Deprecated public String getValue(String);
-  }
-
-  public interface Attributes {
-    method public int getIndex(String, String);
-    method public int getIndex(String);
-    method public int getLength();
-    method public String getLocalName(int);
-    method public String getQName(int);
-    method public String getType(int);
-    method public String getType(String, String);
-    method public String getType(String);
-    method public String getURI(int);
-    method public String getValue(int);
-    method public String getValue(String, String);
-    method public String getValue(String);
-  }
-
-  public interface ContentHandler {
-    method public void characters(char[], int, int) throws org.xml.sax.SAXException;
-    method public void endDocument() throws org.xml.sax.SAXException;
-    method public void endElement(String, String, String) throws org.xml.sax.SAXException;
-    method public void endPrefixMapping(String) throws org.xml.sax.SAXException;
-    method public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
-    method public void processingInstruction(String, String) throws org.xml.sax.SAXException;
-    method public void setDocumentLocator(org.xml.sax.Locator);
-    method public void skippedEntity(String) throws org.xml.sax.SAXException;
-    method public void startDocument() throws org.xml.sax.SAXException;
-    method public void startElement(String, String, String, org.xml.sax.Attributes) throws org.xml.sax.SAXException;
-    method public void startPrefixMapping(String, String) throws org.xml.sax.SAXException;
-  }
-
-  public interface DTDHandler {
-    method public void notationDecl(String, String, String) throws org.xml.sax.SAXException;
-    method public void unparsedEntityDecl(String, String, String, String) throws org.xml.sax.SAXException;
-  }
-
-  @Deprecated public interface DocumentHandler {
-    method @Deprecated public void characters(char[], int, int) throws org.xml.sax.SAXException;
-    method @Deprecated public void endDocument() throws org.xml.sax.SAXException;
-    method @Deprecated public void endElement(String) throws org.xml.sax.SAXException;
-    method @Deprecated public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
-    method @Deprecated public void processingInstruction(String, String) throws org.xml.sax.SAXException;
-    method @Deprecated public void setDocumentLocator(org.xml.sax.Locator);
-    method @Deprecated public void startDocument() throws org.xml.sax.SAXException;
-    method @Deprecated public void startElement(String, org.xml.sax.AttributeList) throws org.xml.sax.SAXException;
-  }
-
-  public interface EntityResolver {
-    method public org.xml.sax.InputSource resolveEntity(String, String) throws java.io.IOException, org.xml.sax.SAXException;
-  }
-
-  public interface ErrorHandler {
-    method public void error(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
-    method public void fatalError(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
-    method public void warning(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
-  }
-
-  @Deprecated public class HandlerBase implements org.xml.sax.DTDHandler org.xml.sax.DocumentHandler org.xml.sax.EntityResolver org.xml.sax.ErrorHandler {
-    ctor @Deprecated public HandlerBase();
-    method @Deprecated public void characters(char[], int, int) throws org.xml.sax.SAXException;
-    method @Deprecated public void endDocument() throws org.xml.sax.SAXException;
-    method @Deprecated public void endElement(String) throws org.xml.sax.SAXException;
-    method @Deprecated public void error(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
-    method @Deprecated public void fatalError(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
-    method @Deprecated public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
-    method @Deprecated public void notationDecl(String, String, String);
-    method @Deprecated public void processingInstruction(String, String) throws org.xml.sax.SAXException;
-    method @Deprecated public org.xml.sax.InputSource resolveEntity(String, String) throws org.xml.sax.SAXException;
-    method @Deprecated public void setDocumentLocator(org.xml.sax.Locator);
-    method @Deprecated public void startDocument() throws org.xml.sax.SAXException;
-    method @Deprecated public void startElement(String, org.xml.sax.AttributeList) throws org.xml.sax.SAXException;
-    method @Deprecated public void unparsedEntityDecl(String, String, String, String);
-    method @Deprecated public void warning(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
-  }
-
-  public class InputSource {
-    ctor public InputSource();
-    ctor public InputSource(String);
-    ctor public InputSource(java.io.InputStream);
-    ctor public InputSource(java.io.Reader);
-    method public java.io.InputStream getByteStream();
-    method public java.io.Reader getCharacterStream();
-    method public String getEncoding();
-    method public String getPublicId();
-    method public String getSystemId();
-    method public void setByteStream(java.io.InputStream);
-    method public void setCharacterStream(java.io.Reader);
-    method public void setEncoding(String);
-    method public void setPublicId(String);
-    method public void setSystemId(String);
-  }
-
-  public interface Locator {
-    method public int getColumnNumber();
-    method public int getLineNumber();
-    method public String getPublicId();
-    method public String getSystemId();
-  }
-
-  @Deprecated public interface Parser {
-    method @Deprecated public void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
-    method @Deprecated public void parse(String) throws java.io.IOException, org.xml.sax.SAXException;
-    method @Deprecated public void setDTDHandler(org.xml.sax.DTDHandler);
-    method @Deprecated public void setDocumentHandler(org.xml.sax.DocumentHandler);
-    method @Deprecated public void setEntityResolver(org.xml.sax.EntityResolver);
-    method @Deprecated public void setErrorHandler(org.xml.sax.ErrorHandler);
-    method @Deprecated public void setLocale(java.util.Locale) throws org.xml.sax.SAXException;
-  }
-
-  public class SAXException extends java.lang.Exception {
-    ctor public SAXException();
-    ctor public SAXException(String);
-    ctor public SAXException(Exception);
-    ctor public SAXException(String, Exception);
-    method public Exception getException();
-  }
-
-  public class SAXNotRecognizedException extends org.xml.sax.SAXException {
-    ctor public SAXNotRecognizedException();
-    ctor public SAXNotRecognizedException(String);
-  }
-
-  public class SAXNotSupportedException extends org.xml.sax.SAXException {
-    ctor public SAXNotSupportedException();
-    ctor public SAXNotSupportedException(String);
-  }
-
-  public class SAXParseException extends org.xml.sax.SAXException {
-    ctor public SAXParseException(String, org.xml.sax.Locator);
-    ctor public SAXParseException(String, org.xml.sax.Locator, Exception);
-    ctor public SAXParseException(String, String, String, int, int);
-    ctor public SAXParseException(String, String, String, int, int, Exception);
-    method public int getColumnNumber();
-    method public int getLineNumber();
-    method public String getPublicId();
-    method public String getSystemId();
-  }
-
-  public interface XMLFilter extends org.xml.sax.XMLReader {
-    method public org.xml.sax.XMLReader getParent();
-    method public void setParent(org.xml.sax.XMLReader);
-  }
-
-  public interface XMLReader {
-    method public org.xml.sax.ContentHandler getContentHandler();
-    method public org.xml.sax.DTDHandler getDTDHandler();
-    method public org.xml.sax.EntityResolver getEntityResolver();
-    method public org.xml.sax.ErrorHandler getErrorHandler();
-    method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void setContentHandler(org.xml.sax.ContentHandler);
-    method public void setDTDHandler(org.xml.sax.DTDHandler);
-    method public void setEntityResolver(org.xml.sax.EntityResolver);
-    method public void setErrorHandler(org.xml.sax.ErrorHandler);
-    method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-  }
-
-}
-
-package org.xml.sax.ext {
-
-  public interface Attributes2 extends org.xml.sax.Attributes {
-    method public boolean isDeclared(int);
-    method public boolean isDeclared(String);
-    method public boolean isDeclared(String, String);
-    method public boolean isSpecified(int);
-    method public boolean isSpecified(String, String);
-    method public boolean isSpecified(String);
-  }
-
-  public class Attributes2Impl extends org.xml.sax.helpers.AttributesImpl implements org.xml.sax.ext.Attributes2 {
-    ctor public Attributes2Impl();
-    ctor public Attributes2Impl(org.xml.sax.Attributes);
-    method public boolean isDeclared(int);
-    method public boolean isDeclared(String, String);
-    method public boolean isDeclared(String);
-    method public boolean isSpecified(int);
-    method public boolean isSpecified(String, String);
-    method public boolean isSpecified(String);
-    method public void setDeclared(int, boolean);
-    method public void setSpecified(int, boolean);
-  }
-
-  public interface DeclHandler {
-    method public void attributeDecl(String, String, String, String, String) throws org.xml.sax.SAXException;
-    method public void elementDecl(String, String) throws org.xml.sax.SAXException;
-    method public void externalEntityDecl(String, String, String) throws org.xml.sax.SAXException;
-    method public void internalEntityDecl(String, String) throws org.xml.sax.SAXException;
-  }
-
-  public class DefaultHandler2 extends org.xml.sax.helpers.DefaultHandler implements org.xml.sax.ext.DeclHandler org.xml.sax.ext.EntityResolver2 org.xml.sax.ext.LexicalHandler {
-    ctor public DefaultHandler2();
-    method public void attributeDecl(String, String, String, String, String) throws org.xml.sax.SAXException;
-    method public void comment(char[], int, int) throws org.xml.sax.SAXException;
-    method public void elementDecl(String, String) throws org.xml.sax.SAXException;
-    method public void endCDATA() throws org.xml.sax.SAXException;
-    method public void endDTD() throws org.xml.sax.SAXException;
-    method public void endEntity(String) throws org.xml.sax.SAXException;
-    method public void externalEntityDecl(String, String, String) throws org.xml.sax.SAXException;
-    method public org.xml.sax.InputSource getExternalSubset(String, String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void internalEntityDecl(String, String) throws org.xml.sax.SAXException;
-    method public org.xml.sax.InputSource resolveEntity(String, String, String, String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void startCDATA() throws org.xml.sax.SAXException;
-    method public void startDTD(String, String, String) throws org.xml.sax.SAXException;
-    method public void startEntity(String) throws org.xml.sax.SAXException;
-  }
-
-  public interface EntityResolver2 extends org.xml.sax.EntityResolver {
-    method public org.xml.sax.InputSource getExternalSubset(String, String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public org.xml.sax.InputSource resolveEntity(String, String, String, String) throws java.io.IOException, org.xml.sax.SAXException;
-  }
-
-  public interface LexicalHandler {
-    method public void comment(char[], int, int) throws org.xml.sax.SAXException;
-    method public void endCDATA() throws org.xml.sax.SAXException;
-    method public void endDTD() throws org.xml.sax.SAXException;
-    method public void endEntity(String) throws org.xml.sax.SAXException;
-    method public void startCDATA() throws org.xml.sax.SAXException;
-    method public void startDTD(String, String, String) throws org.xml.sax.SAXException;
-    method public void startEntity(String) throws org.xml.sax.SAXException;
-  }
-
-  public interface Locator2 extends org.xml.sax.Locator {
-    method public String getEncoding();
-    method public String getXMLVersion();
-  }
-
-  public class Locator2Impl extends org.xml.sax.helpers.LocatorImpl implements org.xml.sax.ext.Locator2 {
-    ctor public Locator2Impl();
-    ctor public Locator2Impl(org.xml.sax.Locator);
-    method public String getEncoding();
-    method public String getXMLVersion();
-    method public void setEncoding(String);
-    method public void setXMLVersion(String);
-  }
-
-}
-
-package org.xml.sax.helpers {
-
-  @Deprecated public class AttributeListImpl implements org.xml.sax.AttributeList {
-    ctor @Deprecated public AttributeListImpl();
-    ctor @Deprecated public AttributeListImpl(org.xml.sax.AttributeList);
-    method @Deprecated public void addAttribute(String, String, String);
-    method @Deprecated public void clear();
-    method @Deprecated public int getLength();
-    method @Deprecated public String getName(int);
-    method @Deprecated public String getType(int);
-    method @Deprecated public String getType(String);
-    method @Deprecated public String getValue(int);
-    method @Deprecated public String getValue(String);
-    method @Deprecated public void removeAttribute(String);
-    method @Deprecated public void setAttributeList(org.xml.sax.AttributeList);
-  }
-
-  public class AttributesImpl implements org.xml.sax.Attributes {
-    ctor public AttributesImpl();
-    ctor public AttributesImpl(org.xml.sax.Attributes);
-    method public void addAttribute(String, String, String, String, String);
-    method public void clear();
-    method public int getIndex(String, String);
-    method public int getIndex(String);
-    method public int getLength();
-    method public String getLocalName(int);
-    method public String getQName(int);
-    method public String getType(int);
-    method public String getType(String, String);
-    method public String getType(String);
-    method public String getURI(int);
-    method public String getValue(int);
-    method public String getValue(String, String);
-    method public String getValue(String);
-    method public void removeAttribute(int);
-    method public void setAttribute(int, String, String, String, String, String);
-    method public void setAttributes(org.xml.sax.Attributes);
-    method public void setLocalName(int, String);
-    method public void setQName(int, String);
-    method public void setType(int, String);
-    method public void setURI(int, String);
-    method public void setValue(int, String);
-  }
-
-  public class DefaultHandler implements org.xml.sax.ContentHandler org.xml.sax.DTDHandler org.xml.sax.EntityResolver org.xml.sax.ErrorHandler {
-    ctor public DefaultHandler();
-    method public void characters(char[], int, int) throws org.xml.sax.SAXException;
-    method public void endDocument() throws org.xml.sax.SAXException;
-    method public void endElement(String, String, String) throws org.xml.sax.SAXException;
-    method public void endPrefixMapping(String) throws org.xml.sax.SAXException;
-    method public void error(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
-    method public void fatalError(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
-    method public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
-    method public void notationDecl(String, String, String) throws org.xml.sax.SAXException;
-    method public void processingInstruction(String, String) throws org.xml.sax.SAXException;
-    method public org.xml.sax.InputSource resolveEntity(String, String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void setDocumentLocator(org.xml.sax.Locator);
-    method public void skippedEntity(String) throws org.xml.sax.SAXException;
-    method public void startDocument() throws org.xml.sax.SAXException;
-    method public void startElement(String, String, String, org.xml.sax.Attributes) throws org.xml.sax.SAXException;
-    method public void startPrefixMapping(String, String) throws org.xml.sax.SAXException;
-    method public void unparsedEntityDecl(String, String, String, String) throws org.xml.sax.SAXException;
-    method public void warning(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
-  }
-
-  public class LocatorImpl implements org.xml.sax.Locator {
-    ctor public LocatorImpl();
-    ctor public LocatorImpl(org.xml.sax.Locator);
-    method public int getColumnNumber();
-    method public int getLineNumber();
-    method public String getPublicId();
-    method public String getSystemId();
-    method public void setColumnNumber(int);
-    method public void setLineNumber(int);
-    method public void setPublicId(String);
-    method public void setSystemId(String);
-  }
-
-  public class NamespaceSupport {
-    ctor public NamespaceSupport();
-    method public boolean declarePrefix(String, String);
-    method public java.util.Enumeration getDeclaredPrefixes();
-    method public String getPrefix(String);
-    method public java.util.Enumeration getPrefixes();
-    method public java.util.Enumeration getPrefixes(String);
-    method public String getURI(String);
-    method public boolean isNamespaceDeclUris();
-    method public void popContext();
-    method public String[] processName(String, String[], boolean);
-    method public void pushContext();
-    method public void reset();
-    method public void setNamespaceDeclUris(boolean);
-    field public static final String NSDECL = "http://www.w3.org/xmlns/2000/";
-    field public static final String XMLNS = "http://www.w3.org/XML/1998/namespace";
-  }
-
-  public class ParserAdapter implements org.xml.sax.DocumentHandler org.xml.sax.XMLReader {
-    ctor public ParserAdapter() throws org.xml.sax.SAXException;
-    ctor public ParserAdapter(org.xml.sax.Parser);
-    method public void characters(char[], int, int) throws org.xml.sax.SAXException;
-    method public void endDocument() throws org.xml.sax.SAXException;
-    method public void endElement(String) throws org.xml.sax.SAXException;
-    method public org.xml.sax.ContentHandler getContentHandler();
-    method public org.xml.sax.DTDHandler getDTDHandler();
-    method public org.xml.sax.EntityResolver getEntityResolver();
-    method public org.xml.sax.ErrorHandler getErrorHandler();
-    method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
-    method public void parse(String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void processingInstruction(String, String) throws org.xml.sax.SAXException;
-    method public void setContentHandler(org.xml.sax.ContentHandler);
-    method public void setDTDHandler(org.xml.sax.DTDHandler);
-    method public void setDocumentLocator(org.xml.sax.Locator);
-    method public void setEntityResolver(org.xml.sax.EntityResolver);
-    method public void setErrorHandler(org.xml.sax.ErrorHandler);
-    method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void startDocument() throws org.xml.sax.SAXException;
-    method public void startElement(String, org.xml.sax.AttributeList) throws org.xml.sax.SAXException;
-  }
-
-  @Deprecated public class ParserFactory {
-    method @Deprecated public static org.xml.sax.Parser makeParser() throws java.lang.ClassCastException, java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException, java.lang.NullPointerException;
-    method @Deprecated public static org.xml.sax.Parser makeParser(String) throws java.lang.ClassCastException, java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-  }
-
-  public class XMLFilterImpl implements org.xml.sax.ContentHandler org.xml.sax.DTDHandler org.xml.sax.EntityResolver org.xml.sax.ErrorHandler org.xml.sax.XMLFilter {
-    ctor public XMLFilterImpl();
-    ctor public XMLFilterImpl(org.xml.sax.XMLReader);
-    method public void characters(char[], int, int) throws org.xml.sax.SAXException;
-    method public void endDocument() throws org.xml.sax.SAXException;
-    method public void endElement(String, String, String) throws org.xml.sax.SAXException;
-    method public void endPrefixMapping(String) throws org.xml.sax.SAXException;
-    method public void error(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
-    method public void fatalError(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
-    method public org.xml.sax.ContentHandler getContentHandler();
-    method public org.xml.sax.DTDHandler getDTDHandler();
-    method public org.xml.sax.EntityResolver getEntityResolver();
-    method public org.xml.sax.ErrorHandler getErrorHandler();
-    method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public org.xml.sax.XMLReader getParent();
-    method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
-    method public void notationDecl(String, String, String) throws org.xml.sax.SAXException;
-    method public void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void processingInstruction(String, String) throws org.xml.sax.SAXException;
-    method public org.xml.sax.InputSource resolveEntity(String, String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void setContentHandler(org.xml.sax.ContentHandler);
-    method public void setDTDHandler(org.xml.sax.DTDHandler);
-    method public void setDocumentLocator(org.xml.sax.Locator);
-    method public void setEntityResolver(org.xml.sax.EntityResolver);
-    method public void setErrorHandler(org.xml.sax.ErrorHandler);
-    method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void setParent(org.xml.sax.XMLReader);
-    method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void skippedEntity(String) throws org.xml.sax.SAXException;
-    method public void startDocument() throws org.xml.sax.SAXException;
-    method public void startElement(String, String, String, org.xml.sax.Attributes) throws org.xml.sax.SAXException;
-    method public void startPrefixMapping(String, String) throws org.xml.sax.SAXException;
-    method public void unparsedEntityDecl(String, String, String, String) throws org.xml.sax.SAXException;
-    method public void warning(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
-  }
-
-  public class XMLReaderAdapter implements org.xml.sax.ContentHandler org.xml.sax.Parser {
-    ctor public XMLReaderAdapter() throws org.xml.sax.SAXException;
-    ctor public XMLReaderAdapter(org.xml.sax.XMLReader);
-    method public void characters(char[], int, int) throws org.xml.sax.SAXException;
-    method public void endDocument() throws org.xml.sax.SAXException;
-    method public void endElement(String, String, String) throws org.xml.sax.SAXException;
-    method public void endPrefixMapping(String);
-    method public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
-    method public void parse(String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void processingInstruction(String, String) throws org.xml.sax.SAXException;
-    method public void setDTDHandler(org.xml.sax.DTDHandler);
-    method public void setDocumentHandler(org.xml.sax.DocumentHandler);
-    method public void setDocumentLocator(org.xml.sax.Locator);
-    method public void setEntityResolver(org.xml.sax.EntityResolver);
-    method public void setErrorHandler(org.xml.sax.ErrorHandler);
-    method public void setLocale(java.util.Locale) throws org.xml.sax.SAXException;
-    method public void skippedEntity(String) throws org.xml.sax.SAXException;
-    method public void startDocument() throws org.xml.sax.SAXException;
-    method public void startElement(String, String, String, org.xml.sax.Attributes) throws org.xml.sax.SAXException;
-    method public void startPrefixMapping(String, String);
-  }
-
-  public final class XMLReaderFactory {
-    method public static org.xml.sax.XMLReader createXMLReader() throws org.xml.sax.SAXException;
-    method public static org.xml.sax.XMLReader createXMLReader(String) throws org.xml.sax.SAXException;
-  }
-
-}
-
-package org.xmlpull.v1 {
-
-  public interface XmlPullParser {
-    method public void defineEntityReplacementText(String, String) throws org.xmlpull.v1.XmlPullParserException;
-    method public int getAttributeCount();
-    method public String getAttributeName(int);
-    method public String getAttributeNamespace(int);
-    method public String getAttributePrefix(int);
-    method public String getAttributeType(int);
-    method public String getAttributeValue(int);
-    method public String getAttributeValue(String, String);
-    method public int getColumnNumber();
-    method public int getDepth();
-    method public int getEventType() throws org.xmlpull.v1.XmlPullParserException;
-    method public boolean getFeature(String);
-    method public String getInputEncoding();
-    method public int getLineNumber();
-    method public String getName();
-    method public String getNamespace(String);
-    method public String getNamespace();
-    method public int getNamespaceCount(int) throws org.xmlpull.v1.XmlPullParserException;
-    method public String getNamespacePrefix(int) throws org.xmlpull.v1.XmlPullParserException;
-    method public String getNamespaceUri(int) throws org.xmlpull.v1.XmlPullParserException;
-    method public String getPositionDescription();
-    method public String getPrefix();
-    method public Object getProperty(String);
-    method public String getText();
-    method public char[] getTextCharacters(int[]);
-    method public boolean isAttributeDefault(int);
-    method public boolean isEmptyElementTag() throws org.xmlpull.v1.XmlPullParserException;
-    method public boolean isWhitespace() throws org.xmlpull.v1.XmlPullParserException;
-    method public int next() throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public int nextTag() throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public String nextText() throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public int nextToken() throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public void require(int, String, String) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public void setFeature(String, boolean) throws org.xmlpull.v1.XmlPullParserException;
-    method public void setInput(java.io.Reader) throws org.xmlpull.v1.XmlPullParserException;
-    method public void setInput(java.io.InputStream, String) throws org.xmlpull.v1.XmlPullParserException;
-    method public void setProperty(String, Object) throws org.xmlpull.v1.XmlPullParserException;
-    field public static final int CDSECT = 5; // 0x5
-    field public static final int COMMENT = 9; // 0x9
-    field public static final int DOCDECL = 10; // 0xa
-    field public static final int END_DOCUMENT = 1; // 0x1
-    field public static final int END_TAG = 3; // 0x3
-    field public static final int ENTITY_REF = 6; // 0x6
-    field public static final String FEATURE_PROCESS_DOCDECL = "http://xmlpull.org/v1/doc/features.html#process-docdecl";
-    field public static final String FEATURE_PROCESS_NAMESPACES = "http://xmlpull.org/v1/doc/features.html#process-namespaces";
-    field public static final String FEATURE_REPORT_NAMESPACE_ATTRIBUTES = "http://xmlpull.org/v1/doc/features.html#report-namespace-prefixes";
-    field public static final String FEATURE_VALIDATION = "http://xmlpull.org/v1/doc/features.html#validation";
-    field public static final int IGNORABLE_WHITESPACE = 7; // 0x7
-    field public static final String NO_NAMESPACE = "";
-    field public static final int PROCESSING_INSTRUCTION = 8; // 0x8
-    field public static final int START_DOCUMENT = 0; // 0x0
-    field public static final int START_TAG = 2; // 0x2
-    field public static final int TEXT = 4; // 0x4
-    field public static final String[] TYPES;
-  }
-
-  public class XmlPullParserException extends java.lang.Exception {
-    ctor public XmlPullParserException(String);
-    ctor public XmlPullParserException(String, org.xmlpull.v1.XmlPullParser, Throwable);
-    method public int getColumnNumber();
-    method public Throwable getDetail();
-    method public int getLineNumber();
-    field protected int column;
-    field protected Throwable detail;
-    field protected int row;
-  }
-
-  public class XmlPullParserFactory {
-    ctor protected XmlPullParserFactory();
-    method public boolean getFeature(String);
-    method public boolean isNamespaceAware();
-    method public boolean isValidating();
-    method public static org.xmlpull.v1.XmlPullParserFactory newInstance() throws org.xmlpull.v1.XmlPullParserException;
-    method public static org.xmlpull.v1.XmlPullParserFactory newInstance(String, Class) throws org.xmlpull.v1.XmlPullParserException;
-    method public org.xmlpull.v1.XmlPullParser newPullParser() throws org.xmlpull.v1.XmlPullParserException;
-    method public org.xmlpull.v1.XmlSerializer newSerializer() throws org.xmlpull.v1.XmlPullParserException;
-    method public void setFeature(String, boolean) throws org.xmlpull.v1.XmlPullParserException;
-    method public void setNamespaceAware(boolean);
-    method public void setValidating(boolean);
-    field public static final String PROPERTY_NAME = "org.xmlpull.v1.XmlPullParserFactory";
-    field protected String classNamesLocation;
-    field protected java.util.HashMap<java.lang.String,java.lang.Boolean> features;
-    field protected java.util.ArrayList parserClasses;
-    field protected java.util.ArrayList serializerClasses;
-  }
-
-  public interface XmlSerializer {
-    method public org.xmlpull.v1.XmlSerializer attribute(String, String, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void cdsect(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void comment(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void docdecl(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void endDocument() throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public org.xmlpull.v1.XmlSerializer endTag(String, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void entityRef(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void flush() throws java.io.IOException;
-    method public int getDepth();
-    method public boolean getFeature(String);
-    method public String getName();
-    method public String getNamespace();
-    method public String getPrefix(String, boolean) throws java.lang.IllegalArgumentException;
-    method public Object getProperty(String);
-    method public void ignorableWhitespace(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void processingInstruction(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void setFeature(String, boolean) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void setOutput(java.io.OutputStream, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void setOutput(java.io.Writer) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void setPrefix(String, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void setProperty(String, Object) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void startDocument(String, Boolean) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public org.xmlpull.v1.XmlSerializer startTag(String, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public org.xmlpull.v1.XmlSerializer text(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public org.xmlpull.v1.XmlSerializer text(char[], int, int) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-  }
-
-}
-
-package org.xmlpull.v1.sax2 {
-
-  public class Driver implements org.xml.sax.Attributes org.xml.sax.Locator org.xml.sax.XMLReader {
-    ctor public Driver() throws org.xmlpull.v1.XmlPullParserException;
-    ctor public Driver(org.xmlpull.v1.XmlPullParser) throws org.xmlpull.v1.XmlPullParserException;
-    method public int getColumnNumber();
-    method public org.xml.sax.ContentHandler getContentHandler();
-    method public org.xml.sax.DTDHandler getDTDHandler();
-    method public org.xml.sax.EntityResolver getEntityResolver();
-    method public org.xml.sax.ErrorHandler getErrorHandler();
-    method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public int getIndex(String, String);
-    method public int getIndex(String);
-    method public int getLength();
-    method public int getLineNumber();
-    method public String getLocalName(int);
-    method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public String getPublicId();
-    method public String getQName(int);
-    method public String getSystemId();
-    method public String getType(int);
-    method public String getType(String, String);
-    method public String getType(String);
-    method public String getURI(int);
-    method public String getValue(int);
-    method public String getValue(String, String);
-    method public String getValue(String);
-    method public void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parseSubTree(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void setContentHandler(org.xml.sax.ContentHandler);
-    method public void setDTDHandler(org.xml.sax.DTDHandler);
-    method public void setEntityResolver(org.xml.sax.EntityResolver);
-    method public void setErrorHandler(org.xml.sax.ErrorHandler);
-    method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method protected void startElement(String, String, String) throws org.xml.sax.SAXException;
-    field protected static final String APACHE_DYNAMIC_VALIDATION_FEATURE = "http://apache.org/xml/features/validation/dynamic";
-    field protected static final String APACHE_SCHEMA_VALIDATION_FEATURE = "http://apache.org/xml/features/validation/schema";
-    field protected static final String DECLARATION_HANDLER_PROPERTY = "http://xml.org/sax/properties/declaration-handler";
-    field protected static final String LEXICAL_HANDLER_PROPERTY = "http://xml.org/sax/properties/lexical-handler";
-    field protected static final String NAMESPACES_FEATURE = "http://xml.org/sax/features/namespaces";
-    field protected static final String NAMESPACE_PREFIXES_FEATURE = "http://xml.org/sax/features/namespace-prefixes";
-    field protected static final String VALIDATION_FEATURE = "http://xml.org/sax/features/validation";
-    field protected org.xml.sax.ContentHandler contentHandler;
-    field protected org.xml.sax.ErrorHandler errorHandler;
-    field protected org.xmlpull.v1.XmlPullParser pp;
-    field protected String systemId;
-  }
-
-}
-
diff --git a/api/gen_combined_removed_dex.sh b/api/gen_combined_removed_dex.sh
new file mode 100755
index 0000000..9225fe8
--- /dev/null
+++ b/api/gen_combined_removed_dex.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+metalava_path="$1"
+tmp_dir="$2"
+shift 2
+
+# Convert each removed.txt to the "dex format" equivalent, and print all output.
+for f in "$@"; do
+    "$metalava_path" --no-banner "$f" --dex-api "${tmp_dir}/tmp"
+    cat "${tmp_dir}/tmp"
+done
diff --git a/api/lint-baseline.txt b/api/lint-baseline.txt
deleted file mode 100644
index 83c78fe..0000000
--- a/api/lint-baseline.txt
+++ /dev/null
@@ -1,1273 +0,0 @@
-// Baseline format: 1.0
-AcronymName: android.system.ErrnoException#rethrowAsIOException():
-    
-
-
-ActionValue: android.provider.Settings#ACTION_CONDITION_PROVIDER_SETTINGS:
-    
-
-
-AllUpper: android.media.MediaCodecInfo.CodecCapabilities#FEATURE_LowLatency:
-    
-
-
-ArrayReturn: android.app.Notification.MessagingStyle.Message#getMessagesFromBundleArray(android.os.Parcelable[]) parameter #0:
-    
-ArrayReturn: android.content.ContentProviderOperation#resolveExtrasBackReferences(android.content.ContentProviderResult[], int) parameter #0:
-    
-ArrayReturn: android.location.GnssAntennaInfo.SphericalCorrections#SphericalCorrections(double[][], double[][]) parameter #0:
-    Method parameter should be Collection<> (or subclass) instead of raw array; was `double[][]`
-ArrayReturn: android.location.GnssAntennaInfo.SphericalCorrections#SphericalCorrections(double[][], double[][]) parameter #1:
-    Method parameter should be Collection<> (or subclass) instead of raw array; was `double[][]`
-ArrayReturn: android.location.GnssAntennaInfo.SphericalCorrections#getCorrectionUncertaintiesArray():
-    Method should return Collection<> (or subclass) instead of raw array; was `double[][]`
-ArrayReturn: android.location.GnssAntennaInfo.SphericalCorrections#getCorrectionsArray():
-    Method should return Collection<> (or subclass) instead of raw array; was `double[][]`
-ArrayReturn: android.service.autofill.FillResponse.Builder#setAuthentication(android.view.autofill.AutofillId[], android.content.IntentSender, android.widget.RemoteViews, android.service.autofill.InlinePresentation) parameter #0:
-    Method parameter should be Collection<AutofillId> (or subclass) instead of raw array; was `android.view.autofill.AutofillId[]`
-
-
-BroadcastBehavior: android.app.AlarmManager#ACTION_NEXT_ALARM_CLOCK_CHANGED:
-    
-BroadcastBehavior: android.app.admin.DevicePolicyManager#ACTION_APPLICATION_DELEGATION_SCOPES_CHANGED:
-    
-BroadcastBehavior: android.app.admin.DevicePolicyManager#ACTION_MANAGED_PROFILE_PROVISIONED:
-    
-BroadcastBehavior: android.bluetooth.BluetoothAdapter#ACTION_DISCOVERY_FINISHED:
-    
-BroadcastBehavior: android.bluetooth.BluetoothAdapter#ACTION_DISCOVERY_STARTED:
-    
-BroadcastBehavior: android.bluetooth.BluetoothAdapter#ACTION_LOCAL_NAME_CHANGED:
-    
-BroadcastBehavior: android.bluetooth.BluetoothAdapter#ACTION_SCAN_MODE_CHANGED:
-    
-BroadcastBehavior: android.bluetooth.BluetoothAdapter#ACTION_STATE_CHANGED:
-    
-BroadcastBehavior: android.bluetooth.BluetoothDevice#ACTION_ACL_CONNECTED:
-    
-BroadcastBehavior: android.bluetooth.BluetoothDevice#ACTION_ACL_DISCONNECTED:
-    
-BroadcastBehavior: android.bluetooth.BluetoothDevice#ACTION_ACL_DISCONNECT_REQUESTED:
-    
-BroadcastBehavior: android.bluetooth.BluetoothDevice#ACTION_BOND_STATE_CHANGED:
-    
-BroadcastBehavior: android.bluetooth.BluetoothDevice#ACTION_CLASS_CHANGED:
-    
-BroadcastBehavior: android.bluetooth.BluetoothDevice#ACTION_FOUND:
-    
-BroadcastBehavior: android.bluetooth.BluetoothDevice#ACTION_NAME_CHANGED:
-    
-BroadcastBehavior: android.bluetooth.BluetoothDevice#ACTION_PAIRING_REQUEST:
-    
-BroadcastBehavior: android.bluetooth.BluetoothDevice#ACTION_UUID:
-    
-BroadcastBehavior: android.content.Intent#ACTION_AIRPLANE_MODE_CHANGED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_APPLICATION_RESTRICTIONS_CHANGED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_BATTERY_CHANGED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_BATTERY_LOW:
-    
-BroadcastBehavior: android.content.Intent#ACTION_BATTERY_OKAY:
-    
-BroadcastBehavior: android.content.Intent#ACTION_CAMERA_BUTTON:
-    
-BroadcastBehavior: android.content.Intent#ACTION_CLOSE_SYSTEM_DIALOGS:
-    
-BroadcastBehavior: android.content.Intent#ACTION_CONFIGURATION_CHANGED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_DATE_CHANGED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_DEVICE_STORAGE_LOW:
-    
-BroadcastBehavior: android.content.Intent#ACTION_DEVICE_STORAGE_OK:
-    
-BroadcastBehavior: android.content.Intent#ACTION_DOCK_EVENT:
-    
-BroadcastBehavior: android.content.Intent#ACTION_DREAMING_STARTED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_DREAMING_STOPPED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_EXTERNAL_APPLICATIONS_AVAILABLE:
-    
-BroadcastBehavior: android.content.Intent#ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE:
-    
-BroadcastBehavior: android.content.Intent#ACTION_GTALK_SERVICE_CONNECTED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_GTALK_SERVICE_DISCONNECTED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_HEADSET_PLUG:
-    
-BroadcastBehavior: android.content.Intent#ACTION_INPUT_METHOD_CHANGED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_LOCALE_CHANGED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_LOCKED_BOOT_COMPLETED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_MANAGE_PACKAGE_STORAGE:
-    
-BroadcastBehavior: android.content.Intent#ACTION_MEDIA_BAD_REMOVAL:
-    
-BroadcastBehavior: android.content.Intent#ACTION_MEDIA_BUTTON:
-    
-BroadcastBehavior: android.content.Intent#ACTION_MEDIA_CHECKING:
-    
-BroadcastBehavior: android.content.Intent#ACTION_MEDIA_EJECT:
-    
-BroadcastBehavior: android.content.Intent#ACTION_MEDIA_MOUNTED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_MEDIA_NOFS:
-    
-BroadcastBehavior: android.content.Intent#ACTION_MEDIA_REMOVED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_MEDIA_SCANNER_FINISHED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_MEDIA_SCANNER_SCAN_FILE:
-    
-BroadcastBehavior: android.content.Intent#ACTION_MEDIA_SCANNER_STARTED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_MEDIA_SHARED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_MEDIA_UNMOUNTABLE:
-    
-BroadcastBehavior: android.content.Intent#ACTION_MEDIA_UNMOUNTED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_MY_PACKAGE_REPLACED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_MY_PACKAGE_SUSPENDED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_MY_PACKAGE_UNSUSPENDED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_NEW_OUTGOING_CALL:
-    
-BroadcastBehavior: android.content.Intent#ACTION_PACKAGES_SUSPENDED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_PACKAGES_UNSUSPENDED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_PACKAGE_ADDED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_PACKAGE_CHANGED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_PACKAGE_DATA_CLEARED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_PACKAGE_FIRST_LAUNCH:
-    
-BroadcastBehavior: android.content.Intent#ACTION_PACKAGE_FULLY_REMOVED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_PACKAGE_INSTALL:
-    
-BroadcastBehavior: android.content.Intent#ACTION_PACKAGE_NEEDS_VERIFICATION:
-    
-BroadcastBehavior: android.content.Intent#ACTION_PACKAGE_REMOVED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_PACKAGE_REPLACED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_PACKAGE_RESTARTED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_PACKAGE_VERIFIED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_POWER_CONNECTED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_POWER_DISCONNECTED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_PROVIDER_CHANGED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_REBOOT:
-    
-BroadcastBehavior: android.content.Intent#ACTION_SCREEN_OFF:
-    
-BroadcastBehavior: android.content.Intent#ACTION_SCREEN_ON:
-    
-BroadcastBehavior: android.content.Intent#ACTION_SHUTDOWN:
-    
-BroadcastBehavior: android.content.Intent#ACTION_TIMEZONE_CHANGED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_TIME_CHANGED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_TIME_TICK:
-    
-BroadcastBehavior: android.content.Intent#ACTION_UID_REMOVED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_UMS_CONNECTED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_UMS_DISCONNECTED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_USER_PRESENT:
-    
-BroadcastBehavior: android.content.Intent#ACTION_USER_UNLOCKED:
-    
-BroadcastBehavior: android.content.Intent#ACTION_WALLPAPER_CHANGED:
-    
-BroadcastBehavior: android.content.pm.PackageInstaller#ACTION_SESSION_COMMITTED:
-    
-BroadcastBehavior: android.content.pm.PackageInstaller#ACTION_SESSION_UPDATED:
-    
-BroadcastBehavior: android.hardware.Camera#ACTION_NEW_PICTURE:
-    
-BroadcastBehavior: android.hardware.Camera#ACTION_NEW_VIDEO:
-    
-BroadcastBehavior: android.hardware.input.InputManager#ACTION_QUERY_KEYBOARD_LAYOUTS:
-    
-BroadcastBehavior: android.hardware.usb.UsbManager#ACTION_USB_ACCESSORY_DETACHED:
-    
-BroadcastBehavior: android.hardware.usb.UsbManager#ACTION_USB_DEVICE_DETACHED:
-    
-BroadcastBehavior: android.media.AudioManager#ACTION_HDMI_AUDIO_PLUG:
-    
-BroadcastBehavior: android.media.AudioManager#ACTION_HEADSET_PLUG:
-    
-BroadcastBehavior: android.media.AudioManager#ACTION_MICROPHONE_MUTE_CHANGED:
-    
-BroadcastBehavior: android.media.AudioManager#ACTION_SPEAKERPHONE_STATE_CHANGED:
-    
-BroadcastBehavior: android.media.tv.TvContract#ACTION_INITIALIZE_PROGRAMS:
-    
-BroadcastBehavior: android.media.tv.TvContract#ACTION_PREVIEW_PROGRAM_ADDED_TO_WATCH_NEXT:
-    
-BroadcastBehavior: android.media.tv.TvContract#ACTION_PREVIEW_PROGRAM_BROWSABLE_DISABLED:
-    
-BroadcastBehavior: android.media.tv.TvContract#ACTION_WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED:
-    
-BroadcastBehavior: android.net.ConnectivityManager#ACTION_BACKGROUND_DATA_SETTING_CHANGED:
-    
-BroadcastBehavior: android.net.Proxy#PROXY_CHANGE_ACTION:
-    
-BroadcastBehavior: android.nfc.NfcAdapter#ACTION_ADAPTER_STATE_CHANGED:
-    
-BroadcastBehavior: android.nfc.NfcAdapter#ACTION_TRANSACTION_DETECTED:
-    
-BroadcastBehavior: android.os.DropBoxManager#ACTION_DROPBOX_ENTRY_ADDED:
-    
-BroadcastBehavior: android.provider.CalendarContract#ACTION_EVENT_REMINDER:
-    
-BroadcastBehavior: android.provider.Telephony.Sms.Intents#DATA_SMS_RECEIVED_ACTION:
-    
-BroadcastBehavior: android.provider.Telephony.Sms.Intents#SECRET_CODE_ACTION:
-    
-BroadcastBehavior: android.provider.Telephony.Sms.Intents#SIM_FULL_ACTION:
-    
-BroadcastBehavior: android.provider.Telephony.Sms.Intents#SMS_CB_RECEIVED_ACTION:
-    
-BroadcastBehavior: android.provider.Telephony.Sms.Intents#SMS_DELIVER_ACTION:
-    
-BroadcastBehavior: android.provider.Telephony.Sms.Intents#SMS_RECEIVED_ACTION:
-    
-BroadcastBehavior: android.provider.Telephony.Sms.Intents#SMS_REJECTED_ACTION:
-    
-BroadcastBehavior: android.provider.Telephony.Sms.Intents#SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED_ACTION:
-    
-BroadcastBehavior: android.provider.Telephony.Sms.Intents#WAP_PUSH_DELIVER_ACTION:
-    
-BroadcastBehavior: android.provider.Telephony.Sms.Intents#WAP_PUSH_RECEIVED_ACTION:
-    
-BroadcastBehavior: android.security.KeyChain#ACTION_KEYCHAIN_CHANGED:
-    
-BroadcastBehavior: android.security.KeyChain#ACTION_KEY_ACCESS_CHANGED:
-    
-BroadcastBehavior: android.security.KeyChain#ACTION_STORAGE_CHANGED:
-    
-BroadcastBehavior: android.security.KeyChain#ACTION_TRUST_STORE_CHANGED:
-    
-BroadcastBehavior: android.speech.tts.TextToSpeech#ACTION_TTS_QUEUE_PROCESSING_COMPLETED:
-    
-BroadcastBehavior: android.speech.tts.TextToSpeech.Engine#ACTION_TTS_DATA_INSTALLED:
-    
-BroadcastBehavior: android.telephony.SubscriptionManager#ACTION_DEFAULT_SMS_SUBSCRIPTION_CHANGED:
-    
-BroadcastBehavior: android.telephony.SubscriptionManager#ACTION_DEFAULT_SUBSCRIPTION_CHANGED:
-    
-BroadcastBehavior: android.telephony.SubscriptionManager#ACTION_REFRESH_SUBSCRIPTION_PLANS:
-    
-BroadcastBehavior: android.telephony.TelephonyManager#ACTION_SECRET_CODE:
-    
-BroadcastBehavior: android.telephony.TelephonyManager#ACTION_SUBSCRIPTION_CARRIER_IDENTITY_CHANGED:
-    
-BroadcastBehavior: android.telephony.TelephonyManager#ACTION_SUBSCRIPTION_SPECIFIC_CARRIER_IDENTITY_CHANGED:
-    
-BroadcastBehavior: android.telephony.euicc.EuiccManager#ACTION_NOTIFY_CARRIER_SETUP_INCOMPLETE:
-    
-
-
-CompileTimeConstant: android.icu.util.JapaneseCalendar#REIWA:
-    
-
-
-DeprecationMismatch: android.accounts.AccountManager#newChooseAccountIntent(android.accounts.Account, java.util.ArrayList<android.accounts.Account>, String[], boolean, String, String, String[], android.os.Bundle):
-    
-DeprecationMismatch: android.app.Activity#enterPictureInPictureMode():
-    
-DeprecationMismatch: android.app.Instrumentation#startAllocCounting():
-    
-DeprecationMismatch: android.app.Instrumentation#stopAllocCounting():
-    
-DeprecationMismatch: android.app.Notification#bigContentView:
-    
-DeprecationMismatch: android.app.Notification#contentView:
-    
-DeprecationMismatch: android.app.Notification#headsUpContentView:
-    
-DeprecationMismatch: android.app.Notification#tickerView:
-    
-DeprecationMismatch: android.app.Notification.Action.Builder#Builder(int, CharSequence, android.app.PendingIntent):
-    
-DeprecationMismatch: android.app.Notification.Action.WearableExtender#getCancelLabel():
-    
-DeprecationMismatch: android.app.Notification.Action.WearableExtender#getConfirmLabel():
-    
-DeprecationMismatch: android.app.Notification.Action.WearableExtender#getInProgressLabel():
-    
-DeprecationMismatch: android.app.Notification.Action.WearableExtender#setCancelLabel(CharSequence):
-    
-DeprecationMismatch: android.app.Notification.Action.WearableExtender#setConfirmLabel(CharSequence):
-    
-DeprecationMismatch: android.app.Notification.Action.WearableExtender#setInProgressLabel(CharSequence):
-    
-DeprecationMismatch: android.app.Notification.Builder#setContent(android.widget.RemoteViews):
-    
-DeprecationMismatch: android.app.Notification.Builder#setTicker(CharSequence, android.widget.RemoteViews):
-    
-DeprecationMismatch: android.app.Notification.WearableExtender#getContentIcon():
-    
-DeprecationMismatch: android.app.Notification.WearableExtender#getContentIconGravity():
-    
-DeprecationMismatch: android.app.Notification.WearableExtender#getCustomContentHeight():
-    
-DeprecationMismatch: android.app.Notification.WearableExtender#getCustomSizePreset():
-    
-DeprecationMismatch: android.app.Notification.WearableExtender#getGravity():
-    
-DeprecationMismatch: android.app.Notification.WearableExtender#getHintAvoidBackgroundClipping():
-    
-DeprecationMismatch: android.app.Notification.WearableExtender#getHintHideIcon():
-    
-DeprecationMismatch: android.app.Notification.WearableExtender#getHintScreenTimeout():
-    
-DeprecationMismatch: android.app.Notification.WearableExtender#getHintShowBackgroundOnly():
-    
-DeprecationMismatch: android.app.Notification.WearableExtender#setContentIcon(int):
-    
-DeprecationMismatch: android.app.Notification.WearableExtender#setContentIconGravity(int):
-    
-DeprecationMismatch: android.app.Notification.WearableExtender#setCustomContentHeight(int):
-    
-DeprecationMismatch: android.app.Notification.WearableExtender#setCustomSizePreset(int):
-    
-DeprecationMismatch: android.app.Notification.WearableExtender#setGravity(int):
-    
-DeprecationMismatch: android.app.Notification.WearableExtender#setHintAvoidBackgroundClipping(boolean):
-    
-DeprecationMismatch: android.app.Notification.WearableExtender#setHintHideIcon(boolean):
-    
-DeprecationMismatch: android.app.Notification.WearableExtender#setHintScreenTimeout(int):
-    
-DeprecationMismatch: android.app.Notification.WearableExtender#setHintShowBackgroundOnly(boolean):
-    
-DeprecationMismatch: android.content.ContextWrapper#clearWallpaper():
-    
-DeprecationMismatch: android.content.ContextWrapper#getWallpaper():
-    
-DeprecationMismatch: android.content.ContextWrapper#getWallpaperDesiredMinimumHeight():
-    
-DeprecationMismatch: android.content.ContextWrapper#getWallpaperDesiredMinimumWidth():
-    
-DeprecationMismatch: android.content.ContextWrapper#peekWallpaper():
-    
-DeprecationMismatch: android.content.ContextWrapper#removeStickyBroadcast(android.content.Intent):
-    
-DeprecationMismatch: android.content.ContextWrapper#removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle):
-    
-DeprecationMismatch: android.content.ContextWrapper#sendStickyBroadcast(android.content.Intent):
-    
-DeprecationMismatch: android.content.ContextWrapper#sendStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle):
-    
-DeprecationMismatch: android.content.ContextWrapper#sendStickyOrderedBroadcast(android.content.Intent, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle):
-    
-DeprecationMismatch: android.content.ContextWrapper#sendStickyOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle):
-    
-DeprecationMismatch: android.content.ContextWrapper#setWallpaper(android.graphics.Bitmap):
-    
-DeprecationMismatch: android.content.ContextWrapper#setWallpaper(java.io.InputStream):
-    
-DeprecationMismatch: android.database.CursorWrapper#deactivate():
-    
-DeprecationMismatch: android.database.CursorWrapper#requery():
-    
-DeprecationMismatch: android.graphics.ComposeShader#ComposeShader(android.graphics.Shader, android.graphics.Shader, android.graphics.Xfermode):
-    
-DeprecationMismatch: android.graphics.PixelFormat#A_8:
-    
-DeprecationMismatch: android.graphics.PixelFormat#LA_88:
-    
-DeprecationMismatch: android.graphics.PixelFormat#L_8:
-    
-DeprecationMismatch: android.graphics.PixelFormat#RGBA_4444:
-    
-DeprecationMismatch: android.graphics.PixelFormat#RGBA_5551:
-    
-DeprecationMismatch: android.graphics.PixelFormat#RGB_332:
-    
-DeprecationMismatch: android.net.wifi.WifiManager#EXTRA_BSSID:
-    
-DeprecationMismatch: android.net.wifi.WifiManager#EXTRA_WIFI_INFO:
-    
-DeprecationMismatch: android.opengl.EGL14#eglCreatePixmapSurface(android.opengl.EGLDisplay, android.opengl.EGLConfig, int, int[], int):
-    
-DeprecationMismatch: android.opengl.GLES20#GL_STENCIL_INDEX:
-    
-DeprecationMismatch: android.opengl.GLSurfaceView#surfaceRedrawNeeded(android.view.SurfaceHolder):
-    
-DeprecationMismatch: android.os.UserManager#setUserRestrictions(android.os.Bundle):
-    
-DeprecationMismatch: android.os.UserManager#setUserRestrictions(android.os.Bundle, android.os.UserHandle):
-    
-DeprecationMismatch: android.provider.Contacts.People#markAsContacted(android.content.ContentResolver, long):
-    
-DeprecationMismatch: android.renderscript.Type.CubemapFace#POSITVE_X:
-    
-DeprecationMismatch: android.renderscript.Type.CubemapFace#POSITVE_Y:
-    
-DeprecationMismatch: android.renderscript.Type.CubemapFace#POSITVE_Z:
-    
-DeprecationMismatch: android.speech.tts.TextToSpeech#areDefaultsEnforced():
-    
-DeprecationMismatch: android.text.format.DateUtils#FORMAT_12HOUR:
-    
-DeprecationMismatch: android.text.format.DateUtils#FORMAT_24HOUR:
-    
-DeprecationMismatch: android.text.format.DateUtils#FORMAT_CAP_AMPM:
-    
-DeprecationMismatch: android.text.format.DateUtils#FORMAT_CAP_MIDNIGHT:
-    
-DeprecationMismatch: android.text.format.DateUtils#FORMAT_CAP_NOON:
-    
-DeprecationMismatch: android.text.format.DateUtils#FORMAT_CAP_NOON_MIDNIGHT:
-    
-DeprecationMismatch: android.text.format.DateUtils#FORMAT_NO_NOON_MIDNIGHT:
-    
-DeprecationMismatch: android.view.ViewGroup.LayoutParams#FILL_PARENT:
-    
-DeprecationMismatch: android.view.Window#setTitleColor(int):
-    
-DeprecationMismatch: android.view.accessibility.AccessibilityEvent#MAX_TEXT_LENGTH:
-    
-DeprecationMismatch: android.webkit.WebSettings#getSaveFormData():
-    
-DeprecationMismatch: android.webkit.WebView#shouldDelayChildPressedState():
-    
-DeprecationMismatch: android.webkit.WebViewDatabase#clearFormData():
-    
-DeprecationMismatch: android.webkit.WebViewDatabase#hasFormData():
-    
-DeprecationMismatch: javax.microedition.khronos.egl.EGL10#eglCreatePixmapSurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, Object, int[]):
-    
-
-
-ExecutorRegistration: android.media.MediaRouter2#setOnGetControllerHintsListener(android.media.MediaRouter2.OnGetControllerHintsListener):
-    Registration methods should have overload that accepts delivery Executor: `setOnGetControllerHintsListener`
-
-
-GenericException: android.content.res.loader.ResourcesProvider#finalize():
-    
-
-
-HiddenSuperclass: android.content.res.ColorStateList:
-    
-HiddenSuperclass: android.graphics.Canvas:
-    
-HiddenSuperclass: android.graphics.RecordingCanvas:
-    
-HiddenSuperclass: android.hardware.biometrics.BiometricPrompt.AuthenticationCallback:
-    
-HiddenSuperclass: android.hardware.biometrics.BiometricPrompt.AuthenticationResult:
-    
-HiddenSuperclass: android.hardware.biometrics.BiometricPrompt.CryptoObject:
-    
-HiddenSuperclass: android.hardware.fingerprint.FingerprintManager.AuthenticationCallback:
-    
-HiddenSuperclass: android.hardware.fingerprint.FingerprintManager.CryptoObject:
-    
-HiddenSuperclass: android.media.AudioTrack:
-    
-HiddenSuperclass: android.media.MediaPlayer:
-    
-HiddenSuperclass: android.media.SoundPool:
-    
-HiddenSuperclass: android.service.autofill.CharSequenceTransformation:
-    
-HiddenSuperclass: android.service.autofill.DateTransformation:
-    
-HiddenSuperclass: android.service.autofill.DateValueSanitizer:
-    
-HiddenSuperclass: android.service.autofill.ImageTransformation:
-    
-HiddenSuperclass: android.service.autofill.LuhnChecksumValidator:
-    
-HiddenSuperclass: android.service.autofill.RegexValidator:
-    
-HiddenSuperclass: android.service.autofill.TextValueSanitizer:
-    
-HiddenSuperclass: android.service.autofill.VisibilitySetterAction:
-    
-HiddenSuperclass: android.util.StatsLog:
-    
-
-
-IntentBuilderName: android.net.VpnManager#provisionVpnProfile(android.net.PlatformVpnProfile):
-    Methods creating an Intent should be named `create<Foo>Intent()`, was `provisionVpnProfile`
-
-
-KotlinOperator: android.media.AudioMetadata.Map#set(android.media.AudioMetadata.Key<T>, T):
-    Method can be invoked with an indexing operator from Kotlin: `set` (this is usually desirable; just make sure it makes sense for this type of object)
-KotlinOperator: android.media.AudioMetadata.ReadMap#get(android.media.AudioMetadata.Key<T>):
-    Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
-
-
-MethodNameUnits: android.media.MediaParser.SeekMap#getDurationMicros():
-    Returned time values are strongly encouraged to be in milliseconds unless you need the extra precision, was `getDurationMicros`
-
-
-MinMaxConstant: android.telephony.DataFailCause#MAX_ACCESS_PROBE:
-    If min/max could change in future, make them dynamic methods: android.telephony.DataFailCause#MAX_ACCESS_PROBE
-MinMaxConstant: android.telephony.DataFailCause#MAX_IPV4_CONNECTIONS:
-    If min/max could change in future, make them dynamic methods: android.telephony.DataFailCause#MAX_IPV4_CONNECTIONS
-MinMaxConstant: android.telephony.DataFailCause#MAX_IPV6_CONNECTIONS:
-    If min/max could change in future, make them dynamic methods: android.telephony.DataFailCause#MAX_IPV6_CONNECTIONS
-MinMaxConstant: android.telephony.DataFailCause#MAX_PPP_INACTIVITY_TIMER_EXPIRED:
-    If min/max could change in future, make them dynamic methods: android.telephony.DataFailCause#MAX_PPP_INACTIVITY_TIMER_EXPIRED
-
-
-MissingNullability: android.app.AsyncNotedAppOp#equals(Object) parameter #0:
-    
-MissingNullability: android.app.AsyncNotedAppOp#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.app.SyncNotedAppOp#equals(Object) parameter #0:
-    
-MissingNullability: android.icu.lang.UCharacter.UnicodeBlock#CHORASMIAN:
-    
-MissingNullability: android.icu.lang.UCharacter.UnicodeBlock#CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G:
-    
-MissingNullability: android.icu.lang.UCharacter.UnicodeBlock#DIVES_AKURU:
-    
-MissingNullability: android.icu.lang.UCharacter.UnicodeBlock#EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS:
-    
-MissingNullability: android.icu.lang.UCharacter.UnicodeBlock#ELYMAIC:
-    
-MissingNullability: android.icu.lang.UCharacter.UnicodeBlock#KHITAN_SMALL_SCRIPT:
-    
-MissingNullability: android.icu.lang.UCharacter.UnicodeBlock#LISU_SUPPLEMENT:
-    
-MissingNullability: android.icu.lang.UCharacter.UnicodeBlock#NANDINAGARI:
-    
-MissingNullability: android.icu.lang.UCharacter.UnicodeBlock#NYIAKENG_PUACHUE_HMONG:
-    
-MissingNullability: android.icu.lang.UCharacter.UnicodeBlock#OTTOMAN_SIYAQ_NUMBERS:
-    
-MissingNullability: android.icu.lang.UCharacter.UnicodeBlock#SMALL_KANA_EXTENSION:
-    
-MissingNullability: android.icu.lang.UCharacter.UnicodeBlock#SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A:
-    
-MissingNullability: android.icu.lang.UCharacter.UnicodeBlock#SYMBOLS_FOR_LEGACY_COMPUTING:
-    
-MissingNullability: android.icu.lang.UCharacter.UnicodeBlock#TAMIL_SUPPLEMENT:
-    
-MissingNullability: android.icu.lang.UCharacter.UnicodeBlock#TANGUT_SUPPLEMENT:
-    
-MissingNullability: android.icu.lang.UCharacter.UnicodeBlock#WANCHO:
-    
-MissingNullability: android.icu.lang.UCharacter.UnicodeBlock#YEZIDI:
-    
-MissingNullability: android.icu.text.DateTimePatternGenerator#getFieldDisplayName(int, android.icu.text.DateTimePatternGenerator.DisplayWidth):
-    
-MissingNullability: android.icu.text.DateTimePatternGenerator#getFieldDisplayName(int, android.icu.text.DateTimePatternGenerator.DisplayWidth) parameter #1:
-    
-MissingNullability: android.icu.util.MeasureUnit#ATMOSPHERE:
-    
-MissingNullability: android.icu.util.MeasureUnit#PERCENT:
-    
-MissingNullability: android.icu.util.MeasureUnit#PERMILLE:
-    
-MissingNullability: android.icu.util.MeasureUnit#PETABYTE:
-    
-MissingNullability: android.icu.util.VersionInfo#UNICODE_12_0:
-    
-MissingNullability: android.icu.util.VersionInfo#UNICODE_12_1:
-    
-MissingNullability: android.icu.util.VersionInfo#UNICODE_13_0:
-    
-MissingNullability: android.media.MediaMetadataRetriever#getFrameAtTime(long, int, android.media.MediaMetadataRetriever.BitmapParams):
-    
-MissingNullability: android.media.MediaMetadataRetriever#getScaledFrameAtTime(long, int, int, int, android.media.MediaMetadataRetriever.BitmapParams):
-    
-MissingNullability: java.time.chrono.JapaneseEra#REIWA:
-    
-
-
-NotCloseable: android.media.MediaCodec.GraphicBlock:
-    Classes that release resources (finalize()) should implement AutoClosable and CloseGuard: class android.media.MediaCodec.GraphicBlock
-NotCloseable: android.media.MediaCodec.LinearBlock:
-    Classes that release resources (finalize()) should implement AutoClosable and CloseGuard: class android.media.MediaCodec.LinearBlock
-NotCloseable: android.media.MediaParser:
-    Classes that release resources (release()) should implement AutoClosable and CloseGuard: class android.media.MediaParser
-NotCloseable: android.media.MediaRouter2.RoutingController:
-    Classes that release resources (release()) should implement AutoClosable and CloseGuard: class android.media.MediaRouter2.RoutingController
-NotCloseable: android.util.CloseGuard:
-    Classes that release resources (close()) should implement AutoClosable and CloseGuard: class android.util.CloseGuard
-NotCloseable: android.view.SurfaceControlViewHost:
-    Classes that release resources (release()) should implement AutoClosable and CloseGuard: class android.view.SurfaceControlViewHost
-
-
-OnNameExpected: android.app.admin.DevicePolicyKeyguardService#dismiss():
-    If implemented by developer, should follow the on<Something> style; otherwise consider marking final
-OnNameExpected: android.service.controls.ControlsProviderService#createPublisherFor(java.util.List<java.lang.String>):
-    Methods implemented by developers should follow the on<Something> style, was `createPublisherFor`
-OnNameExpected: android.service.controls.ControlsProviderService#createPublisherForAllAvailable():
-    Methods implemented by developers should follow the on<Something> style, was `createPublisherForAllAvailable`
-OnNameExpected: android.service.controls.ControlsProviderService#createPublisherForSuggested():
-    If implemented by developer, should follow the on<Something> style; otherwise consider marking final
-OnNameExpected: android.service.controls.ControlsProviderService#performControlAction(String, android.service.controls.actions.ControlAction, java.util.function.Consumer<java.lang.Integer>):
-    Methods implemented by developers should follow the on<Something> style, was `performControlAction`
-
-
-RequiresPermission: android.accounts.AccountManager#getAccountsByTypeAndFeatures(String, String[], android.accounts.AccountManagerCallback<android.accounts.Account[]>, android.os.Handler):
-    
-RequiresPermission: android.accounts.AccountManager#hasFeatures(android.accounts.Account, String[], android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler):
-    
-RequiresPermission: android.app.AlarmManager#setTime(long):
-    
-RequiresPermission: android.app.AppOpsManager#isOpActive(String, int, String):
-    
-RequiresPermission: android.app.AppOpsManager#startWatchingActive(String[], java.util.concurrent.Executor, android.app.AppOpsManager.OnOpActiveChangedListener):
-    
-RequiresPermission: android.app.DownloadManager.Request#setDestinationInExternalPublicDir(String, String):
-    
-RequiresPermission: android.app.DownloadManager.Request#setDestinationUri(android.net.Uri):
-    
-RequiresPermission: android.app.DownloadManager.Request#setNotificationVisibility(int):
-    
-RequiresPermission: android.app.DownloadManager.Request#setShowRunningNotification(boolean):
-    
-RequiresPermission: android.app.Notification.Builder#setFullScreenIntent(android.app.PendingIntent, boolean):
-    
-RequiresPermission: android.app.Service#startForeground(int, android.app.Notification):
-    
-RequiresPermission: android.app.WallpaperInfo#getSettingsSliceUri():
-    
-RequiresPermission: android.app.WallpaperManager#clear():
-    
-RequiresPermission: android.app.WallpaperManager#clearWallpaper():
-    
-RequiresPermission: android.app.WallpaperManager#setBitmap(android.graphics.Bitmap):
-    
-RequiresPermission: android.app.WallpaperManager#setBitmap(android.graphics.Bitmap, android.graphics.Rect, boolean):
-    
-RequiresPermission: android.app.WallpaperManager#setDisplayPadding(android.graphics.Rect):
-    
-RequiresPermission: android.app.WallpaperManager#setResource(int):
-    
-RequiresPermission: android.app.WallpaperManager#setStream(java.io.InputStream):
-    
-RequiresPermission: android.app.WallpaperManager#setStream(java.io.InputStream, android.graphics.Rect, boolean):
-    
-RequiresPermission: android.app.WallpaperManager#suggestDesiredDimensions(int, int):
-    
-RequiresPermission: android.app.admin.DevicePolicyManager#bindDeviceAdminServiceAsUser(android.content.ComponentName, android.content.Intent, android.content.ServiceConnection, int, android.os.UserHandle):
-    
-RequiresPermission: android.app.admin.DevicePolicyManager#getPasswordComplexity():
-    
-RequiresPermission: android.app.admin.DevicePolicyManager#setAlwaysOnVpnPackage(android.content.ComponentName, String, boolean):
-    
-RequiresPermission: android.app.backup.BackupManager#dataChanged(String):
-    
-RequiresPermission: android.app.usage.StorageStatsManager#queryExternalStatsForUser(java.util.UUID, android.os.UserHandle):
-    
-RequiresPermission: android.app.usage.StorageStatsManager#queryStatsForPackage(java.util.UUID, String, android.os.UserHandle):
-    
-RequiresPermission: android.app.usage.StorageStatsManager#queryStatsForUid(java.util.UUID, int):
-    
-RequiresPermission: android.app.usage.StorageStatsManager#queryStatsForUser(java.util.UUID, android.os.UserHandle):
-    
-RequiresPermission: android.app.usage.UsageStatsManager#queryAndAggregateUsageStats(long, long):
-    
-RequiresPermission: android.app.usage.UsageStatsManager#queryConfigurations(int, long, long):
-    
-RequiresPermission: android.app.usage.UsageStatsManager#queryEventStats(int, long, long):
-    
-RequiresPermission: android.app.usage.UsageStatsManager#queryEvents(long, long):
-    
-RequiresPermission: android.app.usage.UsageStatsManager#queryUsageStats(int, long, long):
-    
-RequiresPermission: android.appwidget.AppWidgetManager#bindAppWidgetIdIfAllowed(int, android.os.UserHandle, android.content.ComponentName, android.os.Bundle):
-    
-RequiresPermission: android.bluetooth.BluetoothA2dp#isA2dpPlaying(android.bluetooth.BluetoothDevice):
-    
-RequiresPermission: android.bluetooth.BluetoothAdapter#getName():
-    
-RequiresPermission: android.bluetooth.BluetoothDevice#setPin(byte[]):
-    
-RequiresPermission: android.bluetooth.BluetoothGatt#abortReliableWrite():
-    
-RequiresPermission: android.bluetooth.BluetoothGatt#beginReliableWrite():
-    
-RequiresPermission: android.bluetooth.BluetoothGatt#disconnect():
-    
-RequiresPermission: android.bluetooth.BluetoothGatt#discoverServices():
-    
-RequiresPermission: android.bluetooth.BluetoothGatt#executeReliableWrite():
-    
-RequiresPermission: android.bluetooth.BluetoothGatt#getService(java.util.UUID):
-    
-RequiresPermission: android.bluetooth.BluetoothGatt#getServices():
-    
-RequiresPermission: android.bluetooth.BluetoothGatt#readCharacteristic(android.bluetooth.BluetoothGattCharacteristic):
-    
-RequiresPermission: android.bluetooth.BluetoothGatt#readDescriptor(android.bluetooth.BluetoothGattDescriptor):
-    
-RequiresPermission: android.bluetooth.BluetoothGatt#readRemoteRssi():
-    
-RequiresPermission: android.bluetooth.BluetoothGatt#requestMtu(int):
-    
-RequiresPermission: android.bluetooth.BluetoothGatt#setCharacteristicNotification(android.bluetooth.BluetoothGattCharacteristic, boolean):
-    
-RequiresPermission: android.bluetooth.BluetoothGatt#writeCharacteristic(android.bluetooth.BluetoothGattCharacteristic):
-    
-RequiresPermission: android.bluetooth.BluetoothGatt#writeDescriptor(android.bluetooth.BluetoothGattDescriptor):
-    
-RequiresPermission: android.bluetooth.BluetoothGattCharacteristic#BluetoothGattCharacteristic(java.util.UUID, int, int):
-    
-RequiresPermission: android.bluetooth.BluetoothGattCharacteristic#addDescriptor(android.bluetooth.BluetoothGattDescriptor):
-    
-RequiresPermission: android.bluetooth.BluetoothGattDescriptor#BluetoothGattDescriptor(java.util.UUID, int):
-    
-RequiresPermission: android.bluetooth.BluetoothGattServer#addService(android.bluetooth.BluetoothGattService):
-    
-RequiresPermission: android.bluetooth.BluetoothGattServer#cancelConnection(android.bluetooth.BluetoothDevice):
-    
-RequiresPermission: android.bluetooth.BluetoothGattServer#clearServices():
-    
-RequiresPermission: android.bluetooth.BluetoothGattServer#connect(android.bluetooth.BluetoothDevice, boolean):
-    
-RequiresPermission: android.bluetooth.BluetoothGattServer#getService(java.util.UUID):
-    
-RequiresPermission: android.bluetooth.BluetoothGattServer#getServices():
-    
-RequiresPermission: android.bluetooth.BluetoothGattServer#notifyCharacteristicChanged(android.bluetooth.BluetoothDevice, android.bluetooth.BluetoothGattCharacteristic, boolean):
-    
-RequiresPermission: android.bluetooth.BluetoothGattServer#removeService(android.bluetooth.BluetoothGattService):
-    
-RequiresPermission: android.bluetooth.BluetoothGattServer#sendResponse(android.bluetooth.BluetoothDevice, int, int, int, byte[]):
-    
-RequiresPermission: android.bluetooth.BluetoothGattService#BluetoothGattService(java.util.UUID, int):
-    
-RequiresPermission: android.bluetooth.BluetoothGattService#addCharacteristic(android.bluetooth.BluetoothGattCharacteristic):
-    
-RequiresPermission: android.bluetooth.BluetoothGattService#addService(android.bluetooth.BluetoothGattService):
-    
-RequiresPermission: android.bluetooth.BluetoothHeadset#isAudioConnected(android.bluetooth.BluetoothDevice):
-    
-RequiresPermission: android.bluetooth.BluetoothHeadset#sendVendorSpecificResultCode(android.bluetooth.BluetoothDevice, String, String):
-    
-RequiresPermission: android.bluetooth.BluetoothHeadset#startVoiceRecognition(android.bluetooth.BluetoothDevice):
-    
-RequiresPermission: android.bluetooth.BluetoothHeadset#stopVoiceRecognition(android.bluetooth.BluetoothDevice):
-    
-RequiresPermission: android.bluetooth.BluetoothHealth#connectChannelToSource(android.bluetooth.BluetoothDevice, android.bluetooth.BluetoothHealthAppConfiguration):
-    
-RequiresPermission: android.bluetooth.BluetoothHealth#disconnectChannel(android.bluetooth.BluetoothDevice, android.bluetooth.BluetoothHealthAppConfiguration, int):
-    
-RequiresPermission: android.bluetooth.BluetoothHealth#getConnectedDevices():
-    
-RequiresPermission: android.bluetooth.BluetoothHealth#getConnectionState(android.bluetooth.BluetoothDevice):
-    
-RequiresPermission: android.bluetooth.BluetoothHealth#getDevicesMatchingConnectionStates(int[]):
-    
-RequiresPermission: android.bluetooth.BluetoothHealth#getMainChannelFd(android.bluetooth.BluetoothDevice, android.bluetooth.BluetoothHealthAppConfiguration):
-    
-RequiresPermission: android.bluetooth.BluetoothHealth#registerSinkAppConfiguration(String, int, android.bluetooth.BluetoothHealthCallback):
-    
-RequiresPermission: android.bluetooth.BluetoothHealth#unregisterAppConfiguration(android.bluetooth.BluetoothHealthAppConfiguration):
-    
-RequiresPermission: android.bluetooth.le.AdvertisingSet#enableAdvertising(boolean, int, int):
-    
-RequiresPermission: android.bluetooth.le.BluetoothLeAdvertiser#startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback):
-    
-RequiresPermission: android.bluetooth.le.BluetoothLeAdvertiser#startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback):
-    
-RequiresPermission: android.bluetooth.le.BluetoothLeAdvertiser#stopAdvertising(android.bluetooth.le.AdvertiseCallback):
-    
-RequiresPermission: android.companion.CompanionDeviceManager#associate(android.companion.AssociationRequest, android.companion.CompanionDeviceManager.Callback, android.os.Handler):
-    
-RequiresPermission: android.content.ContentResolver#addPeriodicSync(android.accounts.Account, String, android.os.Bundle, long):
-    
-RequiresPermission: android.content.ContentResolver#cancelSync(android.content.SyncRequest):
-    
-RequiresPermission: android.content.ContentResolver#getCurrentSync():
-    
-RequiresPermission: android.content.ContentResolver#getCurrentSyncs():
-    
-RequiresPermission: android.content.ContentResolver#getIsSyncable(android.accounts.Account, String):
-    
-RequiresPermission: android.content.ContentResolver#getMasterSyncAutomatically():
-    
-RequiresPermission: android.content.ContentResolver#getPeriodicSyncs(android.accounts.Account, String):
-    
-RequiresPermission: android.content.ContentResolver#getSyncAutomatically(android.accounts.Account, String):
-    
-RequiresPermission: android.content.ContentResolver#isSyncActive(android.accounts.Account, String):
-    
-RequiresPermission: android.content.ContentResolver#isSyncPending(android.accounts.Account, String):
-    
-RequiresPermission: android.content.ContentResolver#removePeriodicSync(android.accounts.Account, String, android.os.Bundle):
-    
-RequiresPermission: android.content.ContentResolver#setIsSyncable(android.accounts.Account, String, int):
-    
-RequiresPermission: android.content.ContentResolver#setMasterSyncAutomatically(boolean):
-    
-RequiresPermission: android.content.ContentResolver#setSyncAutomatically(android.accounts.Account, String, boolean):
-    
-RequiresPermission: android.content.Context#clearWallpaper():
-    
-RequiresPermission: android.content.Context#getExternalCacheDir():
-    
-RequiresPermission: android.content.Context#getExternalCacheDirs():
-    
-RequiresPermission: android.content.Context#getExternalFilesDir(String):
-    
-RequiresPermission: android.content.Context#getExternalFilesDirs(String):
-    
-RequiresPermission: android.content.Context#getExternalMediaDirs():
-    
-RequiresPermission: android.content.Context#getObbDir():
-    
-RequiresPermission: android.content.Context#getObbDirs():
-    
-RequiresPermission: android.content.Context#removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle):
-    
-RequiresPermission: android.content.Context#setWallpaper(android.graphics.Bitmap):
-    
-RequiresPermission: android.content.Context#setWallpaper(java.io.InputStream):
-    
-RequiresPermission: android.content.pm.LauncherApps.Callback#onPackagesSuspended(String[], android.os.UserHandle, android.os.Bundle):
-    
-RequiresPermission: android.content.pm.PackageManager#canRequestPackageInstalls():
-    
-RequiresPermission: android.content.pm.PackageManager#getSuspendedPackageAppExtras():
-    
-RequiresPermission: android.content.pm.PackageManager#isPackageSuspended():
-    
-RequiresPermission: android.hardware.camera2.CameraCharacteristics#getKeysNeedingPermission():
-    
-RequiresPermission: android.hardware.usb.UsbManager#hasPermission(android.hardware.usb.UsbDevice):
-    
-RequiresPermission: android.hardware.usb.UsbManager#requestPermission(android.hardware.usb.UsbDevice, android.app.PendingIntent):
-    
-RequiresPermission: android.location.LocationManager#addGpsStatusListener(android.location.GpsStatus.Listener):
-    
-RequiresPermission: android.location.LocationManager#addNmeaListener(android.location.OnNmeaMessageListener):
-    
-RequiresPermission: android.location.LocationManager#addNmeaListener(android.location.OnNmeaMessageListener, android.os.Handler):
-    
-RequiresPermission: android.location.LocationManager#addNmeaListener(java.util.concurrent.Executor, android.location.OnNmeaMessageListener):
-    
-RequiresPermission: android.location.LocationManager#addProximityAlert(double, double, float, long, android.app.PendingIntent):
-    
-RequiresPermission: android.location.LocationManager#registerGnssStatusCallback(android.location.GnssStatus.Callback):
-    
-RequiresPermission: android.location.LocationManager#registerGnssStatusCallback(android.location.GnssStatus.Callback, android.os.Handler):
-    
-RequiresPermission: android.location.LocationManager#registerGnssStatusCallback(java.util.concurrent.Executor, android.location.GnssStatus.Callback):
-    
-RequiresPermission: android.media.AudioManager#startBluetoothSco():
-    
-RequiresPermission: android.media.AudioManager#stopBluetoothSco():
-    
-RequiresPermission: android.media.MediaExtractor#setDataSource(String):
-    
-RequiresPermission: android.media.MediaExtractor#setDataSource(String, java.util.Map<java.lang.String,java.lang.String>):
-    
-RequiresPermission: android.media.MediaExtractor#setDataSource(android.content.Context, android.net.Uri, java.util.Map<java.lang.String,java.lang.String>):
-    
-RequiresPermission: android.media.MediaPlayer#setWakeMode(android.content.Context, int):
-    
-RequiresPermission: android.media.MediaSession2Service#onUpdateNotification(android.media.MediaSession2):
-    
-RequiresPermission: android.media.RingtoneManager#getCursor():
-    
-RequiresPermission: android.media.RingtoneManager#getValidRingtoneUri(android.content.Context):
-    
-RequiresPermission: android.media.session.MediaSessionManager#addOnActiveSessionsChangedListener(android.media.session.MediaSessionManager.OnActiveSessionsChangedListener, android.content.ComponentName):
-    
-RequiresPermission: android.media.session.MediaSessionManager#addOnActiveSessionsChangedListener(android.media.session.MediaSessionManager.OnActiveSessionsChangedListener, android.content.ComponentName, android.os.Handler):
-    
-RequiresPermission: android.media.session.MediaSessionManager#getActiveSessions(android.content.ComponentName):
-    
-RequiresPermission: android.media.session.MediaSessionManager#isTrustedForMediaControl(android.media.session.MediaSessionManager.RemoteUserInfo):
-    
-RequiresPermission: android.net.ConnectivityManager#requestNetwork(android.net.NetworkRequest, android.app.PendingIntent):
-    
-RequiresPermission: android.net.ConnectivityManager#requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback):
-    
-RequiresPermission: android.net.ConnectivityManager#requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback, android.os.Handler):
-    
-RequiresPermission: android.net.ConnectivityManager#requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback, android.os.Handler, int):
-    
-RequiresPermission: android.net.ConnectivityManager#requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback, int):
-    
-RequiresPermission: android.net.sip.SipAudioCall#setSpeakerMode(boolean):
-    
-RequiresPermission: android.net.sip.SipAudioCall#startAudio():
-    
-RequiresPermission: android.net.wifi.WifiManager#getScanResults():
-    
-RequiresPermission: android.net.wifi.WifiManager#setWifiEnabled(boolean):
-    
-RequiresPermission: android.net.wifi.WifiManager#startLocalOnlyHotspot(android.net.wifi.WifiManager.LocalOnlyHotspotCallback, android.os.Handler):
-    
-RequiresPermission: android.net.wifi.WifiManager#startScan():
-    
-RequiresPermission: android.net.wifi.aware.IdentityChangedListener#onIdentityChanged(byte[]):
-    
-RequiresPermission: android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler):
-    
-RequiresPermission: android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler):
-    
-RequiresPermission: android.net.wifi.aware.WifiAwareSession#subscribe(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler):
-    
-RequiresPermission: android.nfc.NfcAdapter#disableForegroundDispatch(android.app.Activity):
-    
-RequiresPermission: android.nfc.NfcAdapter#disableForegroundNdefPush(android.app.Activity):
-    
-RequiresPermission: android.nfc.NfcAdapter#enableForegroundDispatch(android.app.Activity, android.app.PendingIntent, android.content.IntentFilter[], String[][]):
-    
-RequiresPermission: android.nfc.NfcAdapter#enableForegroundNdefPush(android.app.Activity, android.nfc.NdefMessage):
-    
-RequiresPermission: android.nfc.NfcAdapter#setBeamPushUris(android.net.Uri[], android.app.Activity):
-    
-RequiresPermission: android.nfc.NfcAdapter#setBeamPushUrisCallback(android.nfc.NfcAdapter.CreateBeamUrisCallback, android.app.Activity):
-    
-RequiresPermission: android.nfc.NfcAdapter#setNdefPushMessage(android.nfc.NdefMessage, android.app.Activity, android.app.Activity...):
-    
-RequiresPermission: android.nfc.NfcAdapter#setNdefPushMessageCallback(android.nfc.NfcAdapter.CreateNdefMessageCallback, android.app.Activity, android.app.Activity...):
-    
-RequiresPermission: android.nfc.NfcAdapter#setOnNdefPushCompleteCallback(android.nfc.NfcAdapter.OnNdefPushCompleteCallback, android.app.Activity, android.app.Activity...):
-    
-RequiresPermission: android.nfc.cardemulation.CardEmulation#isDefaultServiceForAid(android.content.ComponentName, String):
-    
-RequiresPermission: android.nfc.cardemulation.CardEmulation#isDefaultServiceForCategory(android.content.ComponentName, String):
-    
-RequiresPermission: android.nfc.cardemulation.CardEmulation#setOffHostForService(android.content.ComponentName, String):
-    
-RequiresPermission: android.nfc.tech.IsoDep#getTimeout():
-    
-RequiresPermission: android.nfc.tech.IsoDep#setTimeout(int):
-    
-RequiresPermission: android.nfc.tech.IsoDep#transceive(byte[]):
-    
-RequiresPermission: android.nfc.tech.MifareClassic#authenticateSectorWithKeyA(int, byte[]):
-    
-RequiresPermission: android.nfc.tech.MifareClassic#authenticateSectorWithKeyB(int, byte[]):
-    
-RequiresPermission: android.nfc.tech.MifareClassic#decrement(int, int):
-    
-RequiresPermission: android.nfc.tech.MifareClassic#getTimeout():
-    
-RequiresPermission: android.nfc.tech.MifareClassic#increment(int, int):
-    
-RequiresPermission: android.nfc.tech.MifareClassic#readBlock(int):
-    
-RequiresPermission: android.nfc.tech.MifareClassic#restore(int):
-    
-RequiresPermission: android.nfc.tech.MifareClassic#setTimeout(int):
-    
-RequiresPermission: android.nfc.tech.MifareClassic#transceive(byte[]):
-    
-RequiresPermission: android.nfc.tech.MifareClassic#transfer(int):
-    
-RequiresPermission: android.nfc.tech.MifareClassic#writeBlock(int, byte[]):
-    
-RequiresPermission: android.nfc.tech.MifareUltralight#getTimeout():
-    
-RequiresPermission: android.nfc.tech.MifareUltralight#readPages(int):
-    
-RequiresPermission: android.nfc.tech.MifareUltralight#setTimeout(int):
-    
-RequiresPermission: android.nfc.tech.MifareUltralight#transceive(byte[]):
-    
-RequiresPermission: android.nfc.tech.MifareUltralight#writePage(int, byte[]):
-    
-RequiresPermission: android.nfc.tech.Ndef#getNdefMessage():
-    
-RequiresPermission: android.nfc.tech.Ndef#isWritable():
-    
-RequiresPermission: android.nfc.tech.Ndef#makeReadOnly():
-    
-RequiresPermission: android.nfc.tech.Ndef#writeNdefMessage(android.nfc.NdefMessage):
-    
-RequiresPermission: android.nfc.tech.NdefFormatable#format(android.nfc.NdefMessage):
-    
-RequiresPermission: android.nfc.tech.NdefFormatable#formatReadOnly(android.nfc.NdefMessage):
-    
-RequiresPermission: android.nfc.tech.NfcA#getTimeout():
-    
-RequiresPermission: android.nfc.tech.NfcA#setTimeout(int):
-    
-RequiresPermission: android.nfc.tech.NfcA#transceive(byte[]):
-    
-RequiresPermission: android.nfc.tech.NfcB#transceive(byte[]):
-    
-RequiresPermission: android.nfc.tech.NfcF#getTimeout():
-    
-RequiresPermission: android.nfc.tech.NfcF#setTimeout(int):
-    
-RequiresPermission: android.nfc.tech.NfcF#transceive(byte[]):
-    
-RequiresPermission: android.nfc.tech.NfcV#transceive(byte[]):
-    
-RequiresPermission: android.nfc.tech.TagTechnology#close():
-    
-RequiresPermission: android.nfc.tech.TagTechnology#connect():
-    
-RequiresPermission: android.os.Build#getSerial():
-    
-RequiresPermission: android.os.Debug#dumpService(String, java.io.FileDescriptor, String[]):
-    
-RequiresPermission: android.os.Environment#getExternalStorageDirectory():
-    
-RequiresPermission: android.os.PowerManager#newWakeLock(int, String):
-    
-RequiresPermission: android.os.PowerManager#reboot(String):
-    
-RequiresPermission: android.os.RecoverySystem#rebootWipeUserData(android.content.Context):
-    
-RequiresPermission: android.os.StrictMode.VmPolicy.Builder#detectFileUriExposure():
-    
-RequiresPermission: android.os.UserManager#getUserName():
-    
-RequiresPermission: android.os.UserManager#isUserUnlocked(android.os.UserHandle):
-    
-RequiresPermission: android.os.health.SystemHealthManager#takeUidSnapshot(int):
-    
-RequiresPermission: android.os.health.SystemHealthManager#takeUidSnapshots(int[]):
-    
-RequiresPermission: android.os.storage.StorageVolume#createAccessIntent(String):
-    
-RequiresPermission: android.provider.MediaStore#setRequireOriginal(android.net.Uri):
-    
-RequiresPermission: android.provider.Settings#canDrawOverlays(android.content.Context):
-    
-RequiresPermission: android.provider.Settings.System#canWrite(android.content.Context):
-    
-RequiresPermission: android.telecom.TelecomManager#acceptHandover(android.net.Uri, int, android.telecom.PhoneAccountHandle):
-    
-RequiresPermission: android.telecom.TelecomManager#acceptRingingCall():
-    
-RequiresPermission: android.telecom.TelecomManager#acceptRingingCall(int):
-    
-RequiresPermission: android.telecom.TelecomManager#addNewIncomingCall(android.telecom.PhoneAccountHandle, android.os.Bundle):
-    
-RequiresPermission: android.telecom.TelecomManager#cancelMissedCallsNotification():
-    
-RequiresPermission: android.telecom.TelecomManager#endCall():
-    
-RequiresPermission: android.telecom.TelecomManager#getAdnUriForPhoneAccount(android.telecom.PhoneAccountHandle):
-    
-RequiresPermission: android.telecom.TelecomManager#getCallCapablePhoneAccounts():
-    
-RequiresPermission: android.telecom.TelecomManager#getDefaultOutgoingPhoneAccount(String):
-    
-RequiresPermission: android.telecom.TelecomManager#getLine1Number(android.telecom.PhoneAccountHandle):
-    
-RequiresPermission: android.telecom.TelecomManager#getSelfManagedPhoneAccounts():
-    
-RequiresPermission: android.telecom.TelecomManager#getVoiceMailNumber(android.telecom.PhoneAccountHandle):
-    
-RequiresPermission: android.telecom.TelecomManager#handleMmi(String):
-    
-RequiresPermission: android.telecom.TelecomManager#handleMmi(String, android.telecom.PhoneAccountHandle):
-    
-RequiresPermission: android.telecom.TelecomManager#isInCall():
-    
-RequiresPermission: android.telecom.TelecomManager#isInManagedCall():
-    
-RequiresPermission: android.telecom.TelecomManager#isVoiceMailNumber(android.telecom.PhoneAccountHandle, String):
-    
-RequiresPermission: android.telecom.TelecomManager#placeCall(android.net.Uri, android.os.Bundle):
-    
-RequiresPermission: android.telecom.TelecomManager#showInCallScreen(boolean):
-    
-RequiresPermission: android.telecom.TelecomManager#silenceRinger():
-    
-RequiresPermission: android.telephony.CarrierConfigManager#getConfig():
-    
-RequiresPermission: android.telephony.CarrierConfigManager#getConfigByComponentForSubId(String, int):
-    
-RequiresPermission: android.telephony.CarrierConfigManager#getConfigForSubId(int):
-    
-RequiresPermission: android.telephony.PhoneStateListener#onCallStateChanged(int, String):
-    
-RequiresPermission: android.telephony.SmsManager#injectSmsPdu(byte[], String, android.app.PendingIntent):
-    
-RequiresPermission: android.telephony.SmsManager#sendDataMessage(String, String, short, byte[], android.app.PendingIntent, android.app.PendingIntent):
-    
-RequiresPermission: android.telephony.SmsManager#sendMultipartTextMessage(String, String, java.util.ArrayList<java.lang.String>, java.util.ArrayList<android.app.PendingIntent>, java.util.ArrayList<android.app.PendingIntent>):
-    
-RequiresPermission: android.telephony.SmsManager#sendTextMessage(String, String, String, android.app.PendingIntent, android.app.PendingIntent):
-    
-RequiresPermission: android.telephony.SmsManager#sendTextMessageWithoutPersisting(String, String, String, android.app.PendingIntent, android.app.PendingIntent):
-    
-RequiresPermission: android.telephony.SubscriptionManager#addSubscriptionsIntoGroup(java.util.List<java.lang.Integer>, android.os.ParcelUuid):
-    
-RequiresPermission: android.telephony.SubscriptionManager#createSubscriptionGroup(java.util.List<java.lang.Integer>):
-    
-RequiresPermission: android.telephony.SubscriptionManager#getActiveSubscriptionInfo(int):
-    
-RequiresPermission: android.telephony.SubscriptionManager#getActiveSubscriptionInfoCount():
-    
-RequiresPermission: android.telephony.SubscriptionManager#getActiveSubscriptionInfoForSimSlotIndex(int):
-    
-RequiresPermission: android.telephony.SubscriptionManager#getActiveSubscriptionInfoList():
-    
-RequiresPermission: android.telephony.SubscriptionManager#getOpportunisticSubscriptions():
-    
-RequiresPermission: android.telephony.SubscriptionManager#getSubscriptionsInGroup(android.os.ParcelUuid):
-    
-RequiresPermission: android.telephony.SubscriptionManager#removeSubscriptionsFromGroup(java.util.List<java.lang.Integer>, android.os.ParcelUuid):
-    
-RequiresPermission: android.telephony.SubscriptionManager#setOpportunistic(boolean, int):
-    
-RequiresPermission: android.telephony.TelephonyManager#doesSwitchMultiSimConfigTriggerReboot():
-    
-RequiresPermission: android.telephony.TelephonyManager#getCarrierConfig():
-    
-RequiresPermission: android.telephony.TelephonyManager#getDataNetworkType():
-    
-RequiresPermission: android.telephony.TelephonyManager#getDeviceId():
-    
-RequiresPermission: android.telephony.TelephonyManager#getDeviceId(int):
-    
-RequiresPermission: android.telephony.TelephonyManager#getDeviceSoftwareVersion():
-    
-RequiresPermission: android.telephony.TelephonyManager#getEmergencyNumberList():
-    
-RequiresPermission: android.telephony.TelephonyManager#getEmergencyNumberList(int):
-    
-RequiresPermission: android.telephony.TelephonyManager#getForbiddenPlmns():
-    
-RequiresPermission: android.telephony.TelephonyManager#getGroupIdLevel1():
-    
-RequiresPermission: android.telephony.TelephonyManager#getImei(int):
-    
-RequiresPermission: android.telephony.TelephonyManager#getLine1Number():
-    
-RequiresPermission: android.telephony.TelephonyManager#getMeid():
-    
-RequiresPermission: android.telephony.TelephonyManager#getMeid(int):
-    
-RequiresPermission: android.telephony.TelephonyManager#getNai():
-    
-RequiresPermission: android.telephony.TelephonyManager#getPreferredOpportunisticDataSubscription():
-    
-RequiresPermission: android.telephony.TelephonyManager#getServiceState():
-    
-RequiresPermission: android.telephony.TelephonyManager#getSimSerialNumber():
-    
-RequiresPermission: android.telephony.TelephonyManager#getSubscriberId():
-    
-RequiresPermission: android.telephony.TelephonyManager#getVisualVoicemailPackageName():
-    
-RequiresPermission: android.telephony.TelephonyManager#getVoiceMailAlphaTag():
-    
-RequiresPermission: android.telephony.TelephonyManager#getVoiceMailNumber():
-    
-RequiresPermission: android.telephony.TelephonyManager#getVoiceNetworkType():
-    
-RequiresPermission: android.telephony.TelephonyManager#iccCloseLogicalChannel(int):
-    
-RequiresPermission: android.telephony.TelephonyManager#iccExchangeSimIO(int, int, int, int, int, String):
-    
-RequiresPermission: android.telephony.TelephonyManager#iccOpenLogicalChannel(String):
-    
-RequiresPermission: android.telephony.TelephonyManager#iccOpenLogicalChannel(String, int):
-    
-RequiresPermission: android.telephony.TelephonyManager#iccTransmitApduBasicChannel(int, int, int, int, int, String):
-    
-RequiresPermission: android.telephony.TelephonyManager#iccTransmitApduLogicalChannel(int, int, int, int, int, int, String):
-    
-RequiresPermission: android.telephony.TelephonyManager#isDataEnabled():
-    
-RequiresPermission: android.telephony.TelephonyManager#isDataRoamingEnabled():
-    
-RequiresPermission: android.telephony.TelephonyManager#isMultiSimSupported():
-    
-RequiresPermission: android.telephony.TelephonyManager#requestNetworkScan(android.telephony.NetworkScanRequest, java.util.concurrent.Executor, android.telephony.TelephonyScanManager.NetworkScanCallback):
-    
-RequiresPermission: android.telephony.TelephonyManager#sendEnvelopeWithStatus(String):
-    
-RequiresPermission: android.telephony.TelephonyManager#sendUssdRequest(String, android.telephony.TelephonyManager.UssdResponseCallback, android.os.Handler):
-    
-RequiresPermission: android.telephony.TelephonyManager#sendVisualVoicemailSms(String, int, String, android.app.PendingIntent):
-    
-RequiresPermission: android.telephony.TelephonyManager#setDataEnabled(boolean):
-    
-RequiresPermission: android.telephony.TelephonyManager#setNetworkSelectionModeAutomatic():
-    
-RequiresPermission: android.telephony.TelephonyManager#setNetworkSelectionModeManual(String, boolean):
-    
-RequiresPermission: android.telephony.TelephonyManager#setPreferredOpportunisticDataSubscription(int, boolean, java.util.concurrent.Executor, java.util.function.Consumer<java.lang.Integer>):
-    
-RequiresPermission: android.telephony.TelephonyManager#setVoicemailRingtoneUri(android.telecom.PhoneAccountHandle, android.net.Uri):
-    
-RequiresPermission: android.telephony.TelephonyManager#setVoicemailVibrationEnabled(android.telecom.PhoneAccountHandle, boolean):
-    
-RequiresPermission: android.telephony.TelephonyManager#switchMultiSimConfig(int):
-    
-RequiresPermission: android.telephony.TelephonyManager#updateAvailableNetworks(java.util.List<android.telephony.AvailableNetworkInfo>, java.util.concurrent.Executor, java.util.function.Consumer<java.lang.Integer>):
-    
-RequiresPermission: android.telephony.euicc.EuiccManager#deleteSubscription(int, android.app.PendingIntent):
-    
-RequiresPermission: android.telephony.euicc.EuiccManager#downloadSubscription(android.telephony.euicc.DownloadableSubscription, boolean, android.app.PendingIntent):
-    
-RequiresPermission: android.telephony.euicc.EuiccManager#switchToSubscription(int, android.app.PendingIntent):
-    
-RequiresPermission: android.telephony.euicc.EuiccManager#updateSubscriptionNickname(int, String, android.app.PendingIntent):
-    
-RequiresPermission: android.view.inputmethod.InputMethodManager#setCurrentInputMethodSubtype(android.view.inputmethod.InputMethodSubtype):
-    
-RequiresPermission: android.view.inputmethod.InputMethodManager#setInputMethod(android.os.IBinder, String):
-    
-RequiresPermission: android.view.inputmethod.InputMethodManager#setInputMethodAndSubtype(android.os.IBinder, String, android.view.inputmethod.InputMethodSubtype):
-    
-RequiresPermission: android.webkit.WebSettings#setBlockNetworkLoads(boolean):
-    
-RequiresPermission: android.webkit.WebSettings#setGeolocationEnabled(boolean):
-    
-
-
-SamShouldBeLast: android.location.LocationManager#registerGnssMeasurementsCallback(java.util.concurrent.Executor, android.location.GnssMeasurementsEvent.Callback):
-    
-SamShouldBeLast: android.location.LocationManager#registerGnssNavigationMessageCallback(java.util.concurrent.Executor, android.location.GnssNavigationMessage.Callback):
-    
-SamShouldBeLast: android.location.LocationManager#registerGnssStatusCallback(java.util.concurrent.Executor, android.location.GnssStatus.Callback):
-    
-SamShouldBeLast: android.location.LocationManager#requestLocationUpdates(String, long, float, java.util.concurrent.Executor, android.location.LocationListener):
-    
-SamShouldBeLast: android.location.LocationManager#requestLocationUpdates(long, float, android.location.Criteria, java.util.concurrent.Executor, android.location.LocationListener):
-    
-
-
-StreamFiles: android.content.res.loader.DirectoryAssetsProvider#DirectoryAssetsProvider(java.io.File):
-    Methods accepting `File` should also accept `FileDescriptor` or streams: constructor android.content.res.loader.DirectoryAssetsProvider(java.io.File)
-StreamFiles: android.content.res.loader.DirectoryResourceLoader#DirectoryResourceLoader(java.io.File):
-    
-
-
-Todo: android.hardware.camera2.params.StreamConfigurationMap:
-    
-Todo: android.hardware.camera2.params.StreamConfigurationMap#getOutputMinFrameDuration(Class<T>, android.util.Size):
-    
-Todo: android.hardware.camera2.params.StreamConfigurationMap#getOutputMinFrameDuration(int, android.util.Size):
-    
-Todo: android.provider.ContactsContract.RawContacts#newEntityIterator(android.database.Cursor):
-    
-Todo: android.telephony.CarrierConfigManager#KEY_USE_OTASP_FOR_PROVISIONING_BOOL:
-    
diff --git a/api/module-lib-current.txt b/api/module-lib-current.txt
deleted file mode 100644
index f07f2f3..0000000
--- a/api/module-lib-current.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-// Signature format: 2.0
-package android.net {
-
-  public final class TetheringConstants {
-    field public static final String EXTRA_ADD_TETHER_TYPE = "extraAddTetherType";
-    field public static final String EXTRA_PROVISION_CALLBACK = "extraProvisionCallback";
-    field public static final String EXTRA_REM_TETHER_TYPE = "extraRemTetherType";
-    field public static final String EXTRA_RUN_PROVISION = "extraRunProvision";
-    field public static final String EXTRA_SET_ALARM = "extraSetAlarm";
-  }
-
-  public class TetheringManager {
-    ctor public TetheringManager(@NonNull android.content.Context, @NonNull java.util.function.Supplier<android.os.IBinder>);
-    method public int getLastTetherError(@NonNull String);
-    method @NonNull public String[] getTetherableBluetoothRegexs();
-    method @NonNull public String[] getTetherableIfaces();
-    method @NonNull public String[] getTetherableUsbRegexs();
-    method @NonNull public String[] getTetherableWifiRegexs();
-    method @NonNull public String[] getTetheredIfaces();
-    method @NonNull public String[] getTetheringErroredIfaces();
-    method public boolean isTetheringSupported();
-    method public boolean isTetheringSupported(@NonNull String);
-    method public void requestLatestTetheringEntitlementResult(int, @NonNull android.os.ResultReceiver, boolean);
-    method @Deprecated public int setUsbTethering(boolean);
-    method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public void startTethering(int, @NonNull java.util.concurrent.Executor, @NonNull android.net.TetheringManager.StartTetheringCallback);
-    method @Deprecated public int tether(@NonNull String);
-    method @Deprecated public int untether(@NonNull String);
-  }
-
-  public static interface TetheringManager.TetheringEventCallback {
-    method public default void onTetherableInterfaceRegexpsChanged(@NonNull android.net.TetheringManager.TetheringInterfaceRegexps);
-  }
-
-  public static class TetheringManager.TetheringInterfaceRegexps {
-    method @NonNull public java.util.List<java.lang.String> getTetherableBluetoothRegexs();
-    method @NonNull public java.util.List<java.lang.String> getTetherableUsbRegexs();
-    method @NonNull public java.util.List<java.lang.String> getTetherableWifiRegexs();
-  }
-
-}
-
-package android.os {
-
-  public class Binder implements android.os.IBinder {
-    method public final void markVintfStability();
-  }
-
-  public interface Parcelable {
-    method public default int getStability();
-    field public static final int PARCELABLE_STABILITY_LOCAL = 0; // 0x0
-    field public static final int PARCELABLE_STABILITY_VINTF = 1; // 0x1
-  }
-
-  public class StatsFrameworkInitializer {
-    method public static void registerServiceWrappers();
-    method public static void setStatsServiceManager(@NonNull android.os.StatsServiceManager);
-  }
-
-  public class StatsServiceManager {
-    method @NonNull public android.os.StatsServiceManager.ServiceRegisterer getStatsCompanionServiceRegisterer();
-    method @NonNull public android.os.StatsServiceManager.ServiceRegisterer getStatsManagerServiceRegisterer();
-    method @NonNull public android.os.StatsServiceManager.ServiceRegisterer getStatsdServiceRegisterer();
-  }
-
-  public static class StatsServiceManager.ServiceNotFoundException extends java.lang.Exception {
-    ctor public StatsServiceManager.ServiceNotFoundException(@NonNull String);
-  }
-
-  public static final class StatsServiceManager.ServiceRegisterer {
-    method @Nullable public android.os.IBinder get();
-    method @Nullable public android.os.IBinder getOrThrow() throws android.os.StatsServiceManager.ServiceNotFoundException;
-  }
-
-}
-
-package android.util {
-
-  public final class Log {
-    method public static int logToRadioBuffer(int, @Nullable String, @Nullable String);
-  }
-
-}
-
diff --git a/api/module-lib-lint-baseline.txt b/api/module-lib-lint-baseline.txt
deleted file mode 100644
index 56f7a02..0000000
--- a/api/module-lib-lint-baseline.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-// Baseline format: 1.0
-ActionValue: android.net.TetheringConstants#EXTRA_ADD_TETHER_TYPE:
-    Inconsistent extra value; expected `android.net.extra.ADD_TETHER_TYPE`, was `extraAddTetherType`
-ActionValue: android.net.TetheringConstants#EXTRA_PROVISION_CALLBACK:
-    Inconsistent extra value; expected `android.net.extra.PROVISION_CALLBACK`, was `extraProvisionCallback`
-ActionValue: android.net.TetheringConstants#EXTRA_REM_TETHER_TYPE:
-    Inconsistent extra value; expected `android.net.extra.REM_TETHER_TYPE`, was `extraRemTetherType`
-ActionValue: android.net.TetheringConstants#EXTRA_RUN_PROVISION:
-    Inconsistent extra value; expected `android.net.extra.RUN_PROVISION`, was `extraRunProvision`
-ActionValue: android.net.TetheringConstants#EXTRA_SET_ALARM:
-    Inconsistent extra value; expected `android.net.extra.SET_ALARM`, was `extraSetAlarm`
-ActionValue: android.net.TetheringManager#ACTION_TETHER_STATE_CHANGED:
-    Inconsistent action value; expected `android.net.action.TETHER_STATE_CHANGED`, was `android.net.conn.TETHER_STATE_CHANGED`
-ActionValue: android.net.TetheringManager#EXTRA_ACTIVE_TETHER:
-    Inconsistent extra value; expected `android.net.extra.ACTIVE_TETHER`, was `tetherArray`
-ActionValue: android.net.TetheringManager#EXTRA_AVAILABLE_TETHER:
-    Inconsistent extra value; expected `android.net.extra.AVAILABLE_TETHER`, was `availableArray`
-ActionValue: android.net.TetheringManager#EXTRA_ERRORED_TETHER:
-    Inconsistent extra value; expected `android.net.extra.ERRORED_TETHER`, was `erroredArray`
-
-
-ManagerConstructor: android.net.TetheringManager#TetheringManager(android.content.Context, java.util.function.Supplier<android.os.IBinder>):
-    Managers must always be obtained from Context; no direct constructors
-
-
-PrivateSuperclass: android.location.GnssAntennaInfo.PhaseCenterVariationCorrections:
-    Public class android.location.GnssAntennaInfo.PhaseCenterVariationCorrections extends private class android.location.GnssAntennaInfo.SphericalCorrections
-PrivateSuperclass: android.location.GnssAntennaInfo.SignalGainCorrections:
-    Public class android.location.GnssAntennaInfo.SignalGainCorrections extends private class android.location.GnssAntennaInfo.SphericalCorrections
diff --git a/api/removed.txt b/api/removed.txt
deleted file mode 100644
index e7e9677..0000000
--- a/api/removed.txt
+++ /dev/null
@@ -1,625 +0,0 @@
-// Signature format: 2.0
-package android.app {
-
-  public class ActivityManager {
-    method @Deprecated public static int getMaxNumPictureInPictureActions();
-  }
-
-  public class Notification implements android.os.Parcelable {
-    method @Deprecated public String getChannel();
-    method public static Class<? extends android.app.Notification.Style> getNotificationStyleClass(String);
-    method @Deprecated public long getTimeout();
-    method @Deprecated public void setLatestEventInfo(android.content.Context, CharSequence, CharSequence, android.app.PendingIntent);
-  }
-
-  public static final class Notification.BubbleMetadata implements android.os.Parcelable {
-    method @Deprecated @Nullable public android.graphics.drawable.Icon getBubbleIcon();
-    method @Deprecated @Nullable public android.app.PendingIntent getBubbleIntent();
-  }
-
-  public static final class Notification.BubbleMetadata.Builder {
-    method @Deprecated @NonNull public android.app.Notification.BubbleMetadata.Builder createIntentBubble(@NonNull android.app.PendingIntent, @NonNull android.graphics.drawable.Icon);
-    method @Deprecated @NonNull public android.app.Notification.BubbleMetadata.Builder createShortcutBubble(@NonNull String);
-  }
-
-  public static class Notification.Builder {
-    method @Deprecated public android.app.Notification.Builder setChannel(String);
-    method @Deprecated public android.app.Notification.Builder setTimeout(long);
-  }
-
-}
-
-package android.app.slice {
-
-  public final class Slice implements android.os.Parcelable {
-    field @Deprecated public static final String EXTRA_SLIDER_VALUE = "android.app.slice.extra.SLIDER_VALUE";
-    field @Deprecated public static final String SUBTYPE_SLIDER = "slider";
-  }
-
-  public static class Slice.Builder {
-    ctor @Deprecated public Slice.Builder(@NonNull android.net.Uri);
-    method @Deprecated public android.app.slice.Slice.Builder addTimestamp(long, @Nullable String, java.util.List<java.lang.String>);
-    method @Deprecated public android.app.slice.Slice.Builder setSpec(android.app.slice.SliceSpec);
-  }
-
-  public final class SliceItem implements android.os.Parcelable {
-    method @Deprecated public long getTimestamp();
-    field @Deprecated public static final String FORMAT_TIMESTAMP = "long";
-  }
-
-  public class SliceManager {
-    method @Deprecated @Nullable public android.app.slice.Slice bindSlice(@NonNull android.net.Uri, @NonNull java.util.List<android.app.slice.SliceSpec>);
-    method @Deprecated @Nullable public android.app.slice.Slice bindSlice(@NonNull android.content.Intent, @NonNull java.util.List<android.app.slice.SliceSpec>);
-    method @Deprecated public void pinSlice(@NonNull android.net.Uri, @NonNull java.util.List<android.app.slice.SliceSpec>);
-  }
-
-  public abstract class SliceProvider extends android.content.ContentProvider {
-    method @Deprecated public android.app.slice.Slice onBindSlice(android.net.Uri, java.util.List<android.app.slice.SliceSpec>);
-  }
-
-}
-
-package android.app.usage {
-
-  public final class StorageStats implements android.os.Parcelable {
-    method @Deprecated public long getCodeBytes();
-  }
-
-  public class StorageStatsManager {
-    method @Deprecated public long getFreeBytes(String) throws java.io.IOException;
-    method @Deprecated public long getTotalBytes(String) throws java.io.IOException;
-    method @Deprecated public boolean isQuotaSupported(String);
-    method @Deprecated public android.app.usage.ExternalStorageStats queryExternalStatsForUser(String, android.os.UserHandle) throws java.io.IOException;
-    method @Deprecated public android.app.usage.StorageStats queryStatsForPackage(String, String, android.os.UserHandle) throws java.io.IOException, android.content.pm.PackageManager.NameNotFoundException;
-    method @Deprecated public android.app.usage.StorageStats queryStatsForUid(String, int) throws java.io.IOException;
-    method @Deprecated public android.app.usage.StorageStats queryStatsForUser(String, android.os.UserHandle) throws java.io.IOException;
-  }
-
-}
-
-package android.content {
-
-  public abstract class ContentProvider implements android.content.ComponentCallbacks2 {
-    method @Deprecated @Nullable public final String getCallingFeatureId();
-  }
-
-  public abstract class ContentResolver {
-    method @Deprecated public void notifyChange(@NonNull Iterable<android.net.Uri>, @Nullable android.database.ContentObserver, int);
-  }
-
-  public abstract class Context {
-    method @Deprecated @NonNull public android.content.Context createFeatureContext(@Nullable String);
-    method @Deprecated @Nullable public String getFeatureId();
-    method public abstract android.content.SharedPreferences getSharedPreferences(java.io.File, int);
-    method public abstract java.io.File getSharedPreferencesPath(String);
-  }
-
-  public class ContextWrapper extends android.content.Context {
-    method public android.content.SharedPreferences getSharedPreferences(java.io.File, int);
-    method public java.io.File getSharedPreferencesPath(String);
-  }
-
-  public class Intent implements java.lang.Cloneable android.os.Parcelable {
-    field @Deprecated public static final String EXTRA_QUICK_VIEW_ADVANCED = "android.intent.extra.QUICK_VIEW_ADVANCED";
-  }
-
-}
-
-package android.content.pm {
-
-  public class PackageInfo implements android.os.Parcelable {
-    field public static final int REQUESTED_PERMISSION_REQUIRED = 1; // 0x1
-  }
-
-  public abstract class PackageManager {
-    method public abstract boolean setInstantAppCookie(@Nullable byte[]);
-  }
-
-  public final class SharedLibraryInfo implements android.os.Parcelable {
-    method public boolean isBuiltin();
-    method public boolean isDynamic();
-    method public boolean isStatic();
-  }
-
-}
-
-package android.database {
-
-  public abstract class AbstractCursor implements android.database.CrossProcessCursor {
-    field protected Long mCurrentRowID;
-    field protected int mRowIdColumnIndex;
-    field protected java.util.HashMap<java.lang.Long,java.util.Map<java.lang.String,java.lang.Object>> mUpdatedRows;
-  }
-
-}
-
-package android.graphics {
-
-  @Deprecated public class AvoidXfermode extends android.graphics.Xfermode {
-    ctor public AvoidXfermode(int, int, android.graphics.AvoidXfermode.Mode);
-  }
-
-  public enum AvoidXfermode.Mode {
-    enum_constant public static final android.graphics.AvoidXfermode.Mode AVOID;
-    enum_constant public static final android.graphics.AvoidXfermode.Mode TARGET;
-  }
-
-  public class Canvas {
-    method @Deprecated public boolean clipRegion(@NonNull android.graphics.Region, @NonNull android.graphics.Region.Op);
-    method @Deprecated public boolean clipRegion(@NonNull android.graphics.Region);
-    method @Deprecated public int save(int);
-    field @Deprecated public static final int CLIP_SAVE_FLAG = 2; // 0x2
-    field @Deprecated public static final int CLIP_TO_LAYER_SAVE_FLAG = 16; // 0x10
-    field @Deprecated public static final int FULL_COLOR_LAYER_SAVE_FLAG = 8; // 0x8
-    field @Deprecated public static final int HAS_ALPHA_LAYER_SAVE_FLAG = 4; // 0x4
-    field @Deprecated public static final int MATRIX_SAVE_FLAG = 1; // 0x1
-  }
-
-  public final class ImageDecoder implements java.lang.AutoCloseable {
-    method @Deprecated public boolean getAsAlphaMask();
-    method @Deprecated public boolean getConserveMemory();
-    method @Deprecated public boolean getDecodeAsAlphaMask();
-    method @Deprecated public boolean getMutable();
-    method @Deprecated public boolean getRequireUnpremultiplied();
-    method @Deprecated public android.graphics.ImageDecoder setAsAlphaMask(boolean);
-    method @Deprecated public void setConserveMemory(boolean);
-    method @Deprecated public android.graphics.ImageDecoder setDecodeAsAlphaMask(boolean);
-    method @Deprecated public android.graphics.ImageDecoder setMutable(boolean);
-    method @Deprecated public android.graphics.ImageDecoder setRequireUnpremultiplied(boolean);
-    method @Deprecated public android.graphics.ImageDecoder setResize(int, int);
-    method @Deprecated public android.graphics.ImageDecoder setResize(int);
-    field @Deprecated public static final int ERROR_SOURCE_ERROR = 3; // 0x3
-    field @Deprecated public static final int ERROR_SOURCE_EXCEPTION = 1; // 0x1
-    field @Deprecated public static final int ERROR_SOURCE_INCOMPLETE = 2; // 0x2
-  }
-
-  @Deprecated public static class ImageDecoder.IncompleteException extends java.io.IOException {
-    ctor public ImageDecoder.IncompleteException();
-  }
-
-  @Deprecated public class LayerRasterizer extends android.graphics.Rasterizer {
-    ctor public LayerRasterizer();
-    method public void addLayer(android.graphics.Paint, float, float);
-    method public void addLayer(android.graphics.Paint);
-  }
-
-  public class Paint {
-    method @Deprecated public android.graphics.Rasterizer getRasterizer();
-    method @Deprecated public android.graphics.Rasterizer setRasterizer(android.graphics.Rasterizer);
-  }
-
-  public class Picture {
-    method @Deprecated public static android.graphics.Picture createFromStream(@NonNull java.io.InputStream);
-    method @Deprecated public void writeToStream(@NonNull java.io.OutputStream);
-  }
-
-  @Deprecated public class PixelXorXfermode extends android.graphics.Xfermode {
-    ctor public PixelXorXfermode(int);
-  }
-
-  public class Rasterizer {
-    ctor public Rasterizer();
-  }
-
-}
-
-package android.graphics.drawable {
-
-  public class AnimatedImageDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Animatable2 {
-    method @Deprecated public int getLoopCount(int);
-    method @Deprecated public void setLoopCount(int);
-    field @Deprecated public static final int LOOP_INFINITE = -1; // 0xffffffff
-  }
-
-}
-
-package android.hardware {
-
-  public final class SensorDirectChannel implements java.nio.channels.Channel {
-    method @Deprecated public boolean isValid();
-  }
-
-}
-
-package android.icu.util {
-
-  public class JapaneseCalendar extends android.icu.util.GregorianCalendar {
-    field @Deprecated public static final int CURRENT_ERA;
-  }
-
-}
-
-package android.location {
-
-  public class Location implements android.os.Parcelable {
-    method @Deprecated public void removeBearingAccuracy();
-    method @Deprecated public void removeSpeedAccuracy();
-    method @Deprecated public void removeVerticalAccuracy();
-  }
-
-}
-
-package android.media {
-
-  public final class AudioFormat implements android.os.Parcelable {
-    ctor public AudioFormat();
-  }
-
-}
-
-package android.media.tv {
-
-  public class TvView extends android.view.ViewGroup {
-    method public void requestUnblockContent(android.media.tv.TvContentRating);
-  }
-
-}
-
-package android.net {
-
-  public class ConnectivityManager {
-    method @Deprecated public boolean requestRouteToHost(int, int);
-    method @Deprecated public int startUsingNetworkFeature(int, String);
-    method @Deprecated public int stopUsingNetworkFeature(int, String);
-  }
-
-  @Deprecated public class NetworkBadging {
-    method @NonNull public static android.graphics.drawable.Drawable getWifiIcon(@IntRange(from=0, to=4) int, int, @Nullable android.content.res.Resources.Theme);
-    field public static final int BADGING_4K = 30; // 0x1e
-    field public static final int BADGING_HD = 20; // 0x14
-    field public static final int BADGING_NONE = 0; // 0x0
-    field public static final int BADGING_SD = 10; // 0xa
-  }
-
-  @IntDef({0x0, 0xa, 0x14, 0x1e}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface NetworkBadging.Badging {
-  }
-
-  @Deprecated public class SSLCertificateSocketFactory extends javax.net.ssl.SSLSocketFactory {
-    method @Deprecated public static org.apache.http.conn.ssl.SSLSocketFactory getHttpSocketFactory(int, android.net.SSLSessionCache);
-  }
-
-  public class TrafficStats {
-    method @Deprecated public static void setThreadStatsUidSelf();
-  }
-
-}
-
-package android.os {
-
-  public class BatteryManager {
-    ctor public BatteryManager();
-  }
-
-  public final class PowerManager {
-    method public void goToSleep(long);
-    method @Deprecated public void userActivity(long, boolean);
-    method @Deprecated public void wakeUp(long);
-  }
-
-  public class RecoverySystem {
-    ctor public RecoverySystem();
-  }
-
-  public static final class StrictMode.ThreadPolicy.Builder {
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder penaltyListener(@NonNull android.os.StrictMode.OnThreadViolationListener, @NonNull java.util.concurrent.Executor);
-  }
-
-  public static final class StrictMode.VmPolicy.Builder {
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder penaltyListener(@NonNull android.os.StrictMode.OnVmViolationListener, @NonNull java.util.concurrent.Executor);
-  }
-
-  public final class SystemClock {
-    method @NonNull public static java.time.Clock elapsedRealtimeClock();
-    method @NonNull public static java.time.Clock uptimeClock();
-  }
-
-  public class TestLooperManager {
-    method @Deprecated public android.os.MessageQueue getQueue();
-  }
-
-  public class UserManager {
-    method public android.graphics.drawable.Drawable getBadgedDrawableForUser(android.graphics.drawable.Drawable, android.os.UserHandle, android.graphics.Rect, int);
-    method public android.graphics.drawable.Drawable getBadgedIconForUser(android.graphics.drawable.Drawable, android.os.UserHandle);
-    method public CharSequence getBadgedLabelForUser(CharSequence, android.os.UserHandle);
-  }
-
-}
-
-package android.os.storage {
-
-  public class StorageManager {
-    method @NonNull public android.os.storage.StorageVolume getPrimaryVolume();
-    method @NonNull public android.os.storage.StorageVolume[] getVolumeList();
-  }
-
-}
-
-package android.provider {
-
-  public class Browser {
-    method @RequiresPermission(allOf={"com.android.browser.permission.READ_HISTORY_BOOKMARKS", "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"}, apis="..22") public static final void addSearchUrl(android.content.ContentResolver, String);
-    method @RequiresPermission(value="com.android.browser.permission.READ_HISTORY_BOOKMARKS", apis="..22") public static final boolean canClearHistory(android.content.ContentResolver);
-    method @RequiresPermission(value="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", apis="..22") public static final void clearHistory(android.content.ContentResolver);
-    method @RequiresPermission(value="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", apis="..22") public static final void clearSearches(android.content.ContentResolver);
-    method @RequiresPermission(value="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", apis="..22") public static final void deleteFromHistory(android.content.ContentResolver, String);
-    method @RequiresPermission(value="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", apis="..22") public static final void deleteHistoryTimeFrame(android.content.ContentResolver, long, long);
-    method @RequiresPermission(value="com.android.browser.permission.READ_HISTORY_BOOKMARKS", apis="..22") public static final android.database.Cursor getAllBookmarks(android.content.ContentResolver) throws java.lang.IllegalStateException;
-    method @RequiresPermission(value="com.android.browser.permission.READ_HISTORY_BOOKMARKS", apis="..22") public static final android.database.Cursor getAllVisitedUrls(android.content.ContentResolver) throws java.lang.IllegalStateException;
-    method @RequiresPermission(value="com.android.browser.permission.READ_HISTORY_BOOKMARKS", apis="..22") public static final void requestAllIcons(android.content.ContentResolver, String, android.webkit.WebIconDatabase.IconListener);
-    method public static final void saveBookmark(android.content.Context, String, String);
-    method @RequiresPermission(allOf={"com.android.browser.permission.READ_HISTORY_BOOKMARKS", "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"}, apis="..22") public static final void truncateHistory(android.content.ContentResolver);
-    method @RequiresPermission(allOf={"com.android.browser.permission.READ_HISTORY_BOOKMARKS", "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"}, apis="..22") public static final void updateVisitedHistory(android.content.ContentResolver, String, boolean);
-    field @RequiresPermission.Read(value="com.android.browser.permission.READ_HISTORY_BOOKMARKS", apis="..22") @RequiresPermission.Write(value="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", apis="..22") public static final android.net.Uri BOOKMARKS_URI;
-    field public static final String[] HISTORY_PROJECTION;
-    field public static final int HISTORY_PROJECTION_BOOKMARK_INDEX = 4; // 0x4
-    field public static final int HISTORY_PROJECTION_DATE_INDEX = 3; // 0x3
-    field public static final int HISTORY_PROJECTION_FAVICON_INDEX = 6; // 0x6
-    field public static final int HISTORY_PROJECTION_ID_INDEX = 0; // 0x0
-    field public static final int HISTORY_PROJECTION_TITLE_INDEX = 5; // 0x5
-    field public static final int HISTORY_PROJECTION_URL_INDEX = 1; // 0x1
-    field public static final int HISTORY_PROJECTION_VISITS_INDEX = 2; // 0x2
-    field public static final String[] SEARCHES_PROJECTION;
-    field public static final int SEARCHES_PROJECTION_DATE_INDEX = 2; // 0x2
-    field public static final int SEARCHES_PROJECTION_SEARCH_INDEX = 1; // 0x1
-    field @RequiresPermission.Read(value="com.android.browser.permission.READ_HISTORY_BOOKMARKS", apis="..22") @RequiresPermission.Write(value="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", apis="..22") public static final android.net.Uri SEARCHES_URI;
-    field public static final String[] TRUNCATE_HISTORY_PROJECTION;
-    field public static final int TRUNCATE_HISTORY_PROJECTION_ID_INDEX = 0; // 0x0
-    field public static final int TRUNCATE_N_OLDEST = 5; // 0x5
-  }
-
-  public static class Browser.BookmarkColumns implements android.provider.BaseColumns {
-    ctor public Browser.BookmarkColumns();
-    field public static final String BOOKMARK = "bookmark";
-    field public static final String CREATED = "created";
-    field public static final String DATE = "date";
-    field public static final String FAVICON = "favicon";
-    field public static final String TITLE = "title";
-    field public static final String URL = "url";
-    field public static final String VISITS = "visits";
-    field public static final String _COUNT = "_count";
-    field public static final String _ID = "_id";
-  }
-
-  public static class Browser.SearchColumns implements android.provider.BaseColumns {
-    ctor public Browser.SearchColumns();
-    field public static final String DATE = "date";
-    field public static final String SEARCH = "search";
-    field @Deprecated public static final String URL = "url";
-    field public static final String _COUNT = "_count";
-    field public static final String _ID = "_id";
-  }
-
-  @Deprecated public static final class ContactsContract.Contacts.StreamItems implements android.provider.ContactsContract.StreamItemsColumns {
-    field @Deprecated public static final String CONTENT_DIRECTORY = "stream_items";
-  }
-
-  @Deprecated public static final class ContactsContract.RawContacts.StreamItems implements android.provider.BaseColumns android.provider.ContactsContract.StreamItemsColumns {
-    field @Deprecated public static final String CONTENT_DIRECTORY = "stream_items";
-    field public static final String _COUNT = "_count";
-    field public static final String _ID = "_id";
-  }
-
-  @Deprecated public static final class ContactsContract.StreamItemPhotos implements android.provider.BaseColumns android.provider.ContactsContract.StreamItemPhotosColumns {
-    field @Deprecated public static final String PHOTO = "photo";
-    field public static final String _COUNT = "_count";
-    field public static final String _ID = "_id";
-  }
-
-  @Deprecated protected static interface ContactsContract.StreamItemPhotosColumns {
-    field @Deprecated public static final String PHOTO_FILE_ID = "photo_file_id";
-    field @Deprecated public static final String PHOTO_URI = "photo_uri";
-    field @Deprecated public static final String SORT_INDEX = "sort_index";
-    field @Deprecated public static final String STREAM_ITEM_ID = "stream_item_id";
-    field @Deprecated public static final String SYNC1 = "stream_item_photo_sync1";
-    field @Deprecated public static final String SYNC2 = "stream_item_photo_sync2";
-    field @Deprecated public static final String SYNC3 = "stream_item_photo_sync3";
-    field @Deprecated public static final String SYNC4 = "stream_item_photo_sync4";
-  }
-
-  @Deprecated public static final class ContactsContract.StreamItems implements android.provider.BaseColumns android.provider.ContactsContract.StreamItemsColumns {
-    field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/stream_item";
-    field @Deprecated public static final android.net.Uri CONTENT_LIMIT_URI;
-    field @Deprecated public static final android.net.Uri CONTENT_PHOTO_URI;
-    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/stream_item";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String MAX_ITEMS = "max_items";
-    field public static final String _COUNT = "_count";
-    field public static final String _ID = "_id";
-  }
-
-  @Deprecated public static final class ContactsContract.StreamItems.StreamItemPhotos implements android.provider.BaseColumns android.provider.ContactsContract.StreamItemPhotosColumns {
-    field @Deprecated public static final String CONTENT_DIRECTORY = "photo";
-    field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/stream_item_photo";
-    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/stream_item_photo";
-    field public static final String _COUNT = "_count";
-    field public static final String _ID = "_id";
-  }
-
-  @Deprecated protected static interface ContactsContract.StreamItemsColumns {
-    field @Deprecated public static final String ACCOUNT_NAME = "account_name";
-    field @Deprecated public static final String ACCOUNT_TYPE = "account_type";
-    field @Deprecated public static final String COMMENTS = "comments";
-    field @Deprecated public static final String CONTACT_ID = "contact_id";
-    field @Deprecated public static final String CONTACT_LOOKUP_KEY = "contact_lookup";
-    field @Deprecated public static final String DATA_SET = "data_set";
-    field @Deprecated public static final String RAW_CONTACT_ID = "raw_contact_id";
-    field @Deprecated public static final String RAW_CONTACT_SOURCE_ID = "raw_contact_source_id";
-    field @Deprecated public static final String RES_ICON = "icon";
-    field @Deprecated public static final String RES_LABEL = "label";
-    field @Deprecated public static final String RES_PACKAGE = "res_package";
-    field @Deprecated public static final String SYNC1 = "stream_item_sync1";
-    field @Deprecated public static final String SYNC2 = "stream_item_sync2";
-    field @Deprecated public static final String SYNC3 = "stream_item_sync3";
-    field @Deprecated public static final String SYNC4 = "stream_item_sync4";
-    field @Deprecated public static final String TEXT = "text";
-    field @Deprecated public static final String TIMESTAMP = "timestamp";
-  }
-
-  public static interface MediaStore.Audio.AudioColumns extends android.provider.MediaStore.MediaColumns {
-    field public static final String ALBUM = "album";
-    field public static final String ARTIST = "artist";
-    field public static final String COMPOSER = "composer";
-    field public static final String DURATION = "duration";
-  }
-
-  public static interface MediaStore.DownloadColumns extends android.provider.MediaStore.MediaColumns {
-    field @Deprecated public static final String DESCRIPTION = "description";
-  }
-
-  public static interface MediaStore.Files.FileColumns extends android.provider.MediaStore.MediaColumns {
-    field public static final String TITLE = "title";
-  }
-
-  public static interface MediaStore.Images.ImageColumns extends android.provider.MediaStore.MediaColumns {
-    field public static final String BUCKET_DISPLAY_NAME = "bucket_display_name";
-    field public static final String BUCKET_ID = "bucket_id";
-    field public static final String DATE_TAKEN = "datetaken";
-    field public static final String GROUP_ID = "group_id";
-    field public static final String ORIENTATION = "orientation";
-  }
-
-  public static interface MediaStore.MediaColumns extends android.provider.BaseColumns {
-    field @Deprecated public static final String GROUP_ID = "group_id";
-  }
-
-  public static interface MediaStore.Video.VideoColumns extends android.provider.MediaStore.MediaColumns {
-    field public static final String ALBUM = "album";
-    field public static final String ARTIST = "artist";
-    field public static final String BUCKET_DISPLAY_NAME = "bucket_display_name";
-    field public static final String BUCKET_ID = "bucket_id";
-    field public static final String DATE_TAKEN = "datetaken";
-    field public static final String DURATION = "duration";
-    field public static final String GROUP_ID = "group_id";
-    field public static final String RESOLUTION = "resolution";
-  }
-
-  public static final class Settings.Global extends android.provider.Settings.NameValueTable {
-    field @Deprecated public static final String CONTACT_METADATA_SYNC = "contact_metadata_sync";
-  }
-
-  public static final class Settings.System extends android.provider.Settings.NameValueTable {
-    field public static final String APPEND_FOR_LAST_AUDIBLE = "_last_audible";
-    field public static final String VOLUME_ALARM = "volume_alarm";
-    field public static final String VOLUME_BLUETOOTH_SCO = "volume_bluetooth_sco";
-    field public static final String VOLUME_MUSIC = "volume_music";
-    field public static final String VOLUME_NOTIFICATION = "volume_notification";
-    field public static final String VOLUME_RING = "volume_ring";
-    field public static final String[] VOLUME_SETTINGS;
-    field public static final String VOLUME_SYSTEM = "volume_system";
-    field public static final String VOLUME_VOICE = "volume_voice";
-  }
-
-}
-
-package android.speech.tts {
-
-  public abstract class UtteranceProgressListener {
-    method @Deprecated public void onUtteranceRangeStart(String, int, int);
-  }
-
-}
-
-package android.telephony {
-
-  public class NetworkScan {
-    method @Deprecated public void stop() throws android.os.RemoteException;
-  }
-
-  public class TelephonyManager {
-    method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) public java.util.List<android.telephony.NeighboringCellInfo> getNeighboringCellInfo();
-    method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.ACCESS_FINE_LOCATION}) public android.telephony.NetworkScan requestNetworkScan(android.telephony.NetworkScanRequest, android.telephony.TelephonyScanManager.NetworkScanCallback);
-  }
-
-}
-
-package android.text.format {
-
-  public class DateFormat {
-    field @Deprecated public static final char AM_PM = 97; // 0x0061 'a'
-    field @Deprecated public static final char CAPITAL_AM_PM = 65; // 0x0041 'A'
-    field @Deprecated public static final char DATE = 100; // 0x0064 'd'
-    field @Deprecated public static final char DAY = 69; // 0x0045 'E'
-    field @Deprecated public static final char HOUR = 104; // 0x0068 'h'
-    field @Deprecated public static final char HOUR_OF_DAY = 107; // 0x006b 'k'
-    field @Deprecated public static final char MINUTE = 109; // 0x006d 'm'
-    field @Deprecated public static final char MONTH = 77; // 0x004d 'M'
-    field @Deprecated public static final char QUOTE = 39; // 0x0027 '\''
-    field @Deprecated public static final char SECONDS = 115; // 0x0073 's'
-    field @Deprecated public static final char STANDALONE_MONTH = 76; // 0x004c 'L'
-    field @Deprecated public static final char TIME_ZONE = 122; // 0x007a 'z'
-    field @Deprecated public static final char YEAR = 121; // 0x0079 'y'
-  }
-
-}
-
-package android.text.style {
-
-  public class RasterizerSpan extends android.text.style.CharacterStyle implements android.text.style.UpdateAppearance {
-    ctor public RasterizerSpan(android.graphics.Rasterizer);
-    method public android.graphics.Rasterizer getRasterizer();
-    method public void updateDrawState(android.text.TextPaint);
-  }
-
-}
-
-package android.util {
-
-  @Deprecated public class FloatMath {
-    method public static float ceil(float);
-    method public static float cos(float);
-    method public static float exp(float);
-    method public static float floor(float);
-    method public static float hypot(float, float);
-    method public static float pow(float, float);
-    method public static float sin(float);
-    method public static float sqrt(float);
-  }
-
-}
-
-package android.view {
-
-  @UiThread public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.view.KeyEvent.Callback {
-    method protected void initializeFadingEdge(android.content.res.TypedArray);
-    method protected void initializeScrollbars(android.content.res.TypedArray);
-  }
-
-  public class ViewConfiguration {
-    method public int getScaledScrollFactor();
-  }
-
-  public static class WindowManager.LayoutParams extends android.view.ViewGroup.LayoutParams implements android.os.Parcelable {
-    field public static final int TYPE_KEYGUARD = 2004; // 0x7d4
-  }
-
-}
-
-package android.webkit {
-
-  public class WebViewClient {
-    method public void onUnhandledInputEvent(android.webkit.WebView, android.view.InputEvent);
-  }
-
-}
-
-package android.widget {
-
-  @android.widget.RemoteViews.RemoteView public class ListView extends android.widget.AbsListView {
-    method protected <T extends android.view.View> T findViewTraversal(@IdRes int);
-    method protected <T extends android.view.View> T findViewWithTagTraversal(Object);
-  }
-
-  public class PopupWindow {
-    method @Deprecated public boolean isClipToScreenEnabled();
-    method @Deprecated public boolean isLayoutInScreenEnabled();
-    method @Deprecated public void setClipToScreenEnabled(boolean);
-    method @Deprecated public void setLayoutInScreenEnabled(boolean);
-  }
-
-  @android.widget.RemoteViews.RemoteView public class TextView extends android.view.View implements android.view.ViewTreeObserver.OnPreDrawListener {
-    method public static int getTextColor(android.content.Context, android.content.res.TypedArray, int);
-    method public static android.content.res.ColorStateList getTextColors(android.content.Context, android.content.res.TypedArray);
-  }
-
-}
-
diff --git a/api/system-current.txt b/api/system-current.txt
deleted file mode 100755
index 7276b37..0000000
--- a/api/system-current.txt
+++ /dev/null
@@ -1,13072 +0,0 @@
-// Signature format: 2.0
-package android {
-
-  public static final class Manifest.permission {
-    field public static final String ACCESS_AMBIENT_LIGHT_STATS = "android.permission.ACCESS_AMBIENT_LIGHT_STATS";
-    field public static final String ACCESS_BROADCAST_RADIO = "android.permission.ACCESS_BROADCAST_RADIO";
-    field public static final String ACCESS_CACHE_FILESYSTEM = "android.permission.ACCESS_CACHE_FILESYSTEM";
-    field public static final String ACCESS_CONTEXT_HUB = "android.permission.ACCESS_CONTEXT_HUB";
-    field public static final String ACCESS_DRM_CERTIFICATES = "android.permission.ACCESS_DRM_CERTIFICATES";
-    field @Deprecated public static final String ACCESS_FM_RADIO = "android.permission.ACCESS_FM_RADIO";
-    field public static final String ACCESS_INSTANT_APPS = "android.permission.ACCESS_INSTANT_APPS";
-    field public static final String ACCESS_LOCUS_ID_USAGE_STATS = "android.permission.ACCESS_LOCUS_ID_USAGE_STATS";
-    field public static final String ACCESS_MOCK_LOCATION = "android.permission.ACCESS_MOCK_LOCATION";
-    field public static final String ACCESS_MTP = "android.permission.ACCESS_MTP";
-    field public static final String ACCESS_NETWORK_CONDITIONS = "android.permission.ACCESS_NETWORK_CONDITIONS";
-    field public static final String ACCESS_NOTIFICATIONS = "android.permission.ACCESS_NOTIFICATIONS";
-    field public static final String ACCESS_SHARED_LIBRARIES = "android.permission.ACCESS_SHARED_LIBRARIES";
-    field public static final String ACCESS_SHORTCUTS = "android.permission.ACCESS_SHORTCUTS";
-    field public static final String ACCESS_SURFACE_FLINGER = "android.permission.ACCESS_SURFACE_FLINGER";
-    field public static final String ACCESS_TV_DESCRAMBLER = "android.permission.ACCESS_TV_DESCRAMBLER";
-    field public static final String ACCESS_TV_TUNER = "android.permission.ACCESS_TV_TUNER";
-    field public static final String ACCESS_VIBRATOR_STATE = "android.permission.ACCESS_VIBRATOR_STATE";
-    field public static final String ACTIVITY_EMBEDDING = "android.permission.ACTIVITY_EMBEDDING";
-    field public static final String ADJUST_RUNTIME_PERMISSIONS_POLICY = "android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY";
-    field public static final String ALLOCATE_AGGRESSIVE = "android.permission.ALLOCATE_AGGRESSIVE";
-    field public static final String ALLOW_ANY_CODEC_FOR_PLAYBACK = "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK";
-    field public static final String AMBIENT_WALLPAPER = "android.permission.AMBIENT_WALLPAPER";
-    field public static final String APPROVE_INCIDENT_REPORTS = "android.permission.APPROVE_INCIDENT_REPORTS";
-    field public static final String BACKUP = "android.permission.BACKUP";
-    field public static final String BIND_ATTENTION_SERVICE = "android.permission.BIND_ATTENTION_SERVICE";
-    field public static final String BIND_AUGMENTED_AUTOFILL_SERVICE = "android.permission.BIND_AUGMENTED_AUTOFILL_SERVICE";
-    field public static final String BIND_CELL_BROADCAST_SERVICE = "android.permission.BIND_CELL_BROADCAST_SERVICE";
-    field @Deprecated public static final String BIND_CONNECTION_SERVICE = "android.permission.BIND_CONNECTION_SERVICE";
-    field public static final String BIND_CONTENT_CAPTURE_SERVICE = "android.permission.BIND_CONTENT_CAPTURE_SERVICE";
-    field public static final String BIND_CONTENT_SUGGESTIONS_SERVICE = "android.permission.BIND_CONTENT_SUGGESTIONS_SERVICE";
-    field public static final String BIND_DIRECTORY_SEARCH = "android.permission.BIND_DIRECTORY_SEARCH";
-    field public static final String BIND_EUICC_SERVICE = "android.permission.BIND_EUICC_SERVICE";
-    field public static final String BIND_EXTERNAL_STORAGE_SERVICE = "android.permission.BIND_EXTERNAL_STORAGE_SERVICE";
-    field public static final String BIND_IMS_SERVICE = "android.permission.BIND_IMS_SERVICE";
-    field public static final String BIND_KEYGUARD_APPWIDGET = "android.permission.BIND_KEYGUARD_APPWIDGET";
-    field public static final String BIND_NETWORK_RECOMMENDATION_SERVICE = "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE";
-    field public static final String BIND_NOTIFICATION_ASSISTANT_SERVICE = "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE";
-    field public static final String BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE = "android.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE";
-    field public static final String BIND_PRINT_RECOMMENDATION_SERVICE = "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE";
-    field public static final String BIND_RESOLVER_RANKER_SERVICE = "android.permission.BIND_RESOLVER_RANKER_SERVICE";
-    field public static final String BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE = "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE";
-    field public static final String BIND_SETTINGS_SUGGESTIONS_SERVICE = "android.permission.BIND_SETTINGS_SUGGESTIONS_SERVICE";
-    field public static final String BIND_SOUND_TRIGGER_DETECTION_SERVICE = "android.permission.BIND_SOUND_TRIGGER_DETECTION_SERVICE";
-    field public static final String BIND_TELEPHONY_DATA_SERVICE = "android.permission.BIND_TELEPHONY_DATA_SERVICE";
-    field public static final String BIND_TELEPHONY_NETWORK_SERVICE = "android.permission.BIND_TELEPHONY_NETWORK_SERVICE";
-    field public static final String BIND_TEXTCLASSIFIER_SERVICE = "android.permission.BIND_TEXTCLASSIFIER_SERVICE";
-    field public static final String BIND_TRUST_AGENT = "android.permission.BIND_TRUST_AGENT";
-    field public static final String BIND_TV_REMOTE_SERVICE = "android.permission.BIND_TV_REMOTE_SERVICE";
-    field public static final String BRICK = "android.permission.BRICK";
-    field public static final String BRIGHTNESS_SLIDER_USAGE = "android.permission.BRIGHTNESS_SLIDER_USAGE";
-    field @Deprecated public static final String BROADCAST_NETWORK_PRIVILEGED = "android.permission.BROADCAST_NETWORK_PRIVILEGED";
-    field public static final String CAMERA_DISABLE_TRANSMIT_LED = "android.permission.CAMERA_DISABLE_TRANSMIT_LED";
-    field public static final String CAPTURE_AUDIO_HOTWORD = "android.permission.CAPTURE_AUDIO_HOTWORD";
-    field public static final String CAPTURE_MEDIA_OUTPUT = "android.permission.CAPTURE_MEDIA_OUTPUT";
-    field public static final String CAPTURE_TV_INPUT = "android.permission.CAPTURE_TV_INPUT";
-    field public static final String CAPTURE_VOICE_COMMUNICATION_OUTPUT = "android.permission.CAPTURE_VOICE_COMMUNICATION_OUTPUT";
-    field public static final String CHANGE_APP_IDLE_STATE = "android.permission.CHANGE_APP_IDLE_STATE";
-    field public static final String CHANGE_DEVICE_IDLE_TEMP_WHITELIST = "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST";
-    field public static final String CLEAR_APP_USER_DATA = "android.permission.CLEAR_APP_USER_DATA";
-    field public static final String COMPANION_APPROVE_WIFI_CONNECTIONS = "android.permission.COMPANION_APPROVE_WIFI_CONNECTIONS";
-    field public static final String CONFIGURE_DISPLAY_BRIGHTNESS = "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS";
-    field public static final String CONFIGURE_WIFI_DISPLAY = "android.permission.CONFIGURE_WIFI_DISPLAY";
-    field @Deprecated public static final String CONNECTIVITY_INTERNAL = "android.permission.CONNECTIVITY_INTERNAL";
-    field public static final String CONNECTIVITY_USE_RESTRICTED_NETWORKS = "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS";
-    field public static final String CONTROL_DEVICE_LIGHTS = "android.permission.CONTROL_DEVICE_LIGHTS";
-    field public static final String CONTROL_DISPLAY_COLOR_TRANSFORMS = "android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS";
-    field public static final String CONTROL_DISPLAY_SATURATION = "android.permission.CONTROL_DISPLAY_SATURATION";
-    field public static final String CONTROL_INCALL_EXPERIENCE = "android.permission.CONTROL_INCALL_EXPERIENCE";
-    field public static final String CONTROL_KEYGUARD_SECURE_NOTIFICATIONS = "android.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS";
-    field public static final String CONTROL_VPN = "android.permission.CONTROL_VPN";
-    field public static final String CREATE_USERS = "android.permission.CREATE_USERS";
-    field public static final String CRYPT_KEEPER = "android.permission.CRYPT_KEEPER";
-    field public static final String DEVICE_POWER = "android.permission.DEVICE_POWER";
-    field public static final String DISPATCH_PROVISIONING_MESSAGE = "android.permission.DISPATCH_PROVISIONING_MESSAGE";
-    field public static final String ENTER_CAR_MODE_PRIORITIZED = "android.permission.ENTER_CAR_MODE_PRIORITIZED";
-    field public static final String EXEMPT_FROM_AUDIO_RECORD_RESTRICTIONS = "android.permission.EXEMPT_FROM_AUDIO_RECORD_RESTRICTIONS";
-    field public static final String FORCE_BACK = "android.permission.FORCE_BACK";
-    field public static final String FORCE_STOP_PACKAGES = "android.permission.FORCE_STOP_PACKAGES";
-    field public static final String GET_APP_OPS_STATS = "android.permission.GET_APP_OPS_STATS";
-    field public static final String GET_PROCESS_STATE_AND_OOM_SCORE = "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE";
-    field public static final String GET_RUNTIME_PERMISSIONS = "android.permission.GET_RUNTIME_PERMISSIONS";
-    field public static final String GET_TOP_ACTIVITY_INFO = "android.permission.GET_TOP_ACTIVITY_INFO";
-    field @Deprecated public static final String GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS = "android.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS";
-    field public static final String GRANT_RUNTIME_PERMISSIONS = "android.permission.GRANT_RUNTIME_PERMISSIONS";
-    field public static final String GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS = "android.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS";
-    field public static final String HANDLE_CAR_MODE_CHANGES = "android.permission.HANDLE_CAR_MODE_CHANGES";
-    field public static final String HARDWARE_TEST = "android.permission.HARDWARE_TEST";
-    field public static final String HDMI_CEC = "android.permission.HDMI_CEC";
-    field public static final String HIDE_NON_SYSTEM_OVERLAY_WINDOWS = "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS";
-    field public static final String INJECT_EVENTS = "android.permission.INJECT_EVENTS";
-    field public static final String INSTALL_DYNAMIC_SYSTEM = "android.permission.INSTALL_DYNAMIC_SYSTEM";
-    field public static final String INSTALL_GRANT_RUNTIME_PERMISSIONS = "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS";
-    field public static final String INSTALL_PACKAGE_UPDATES = "android.permission.INSTALL_PACKAGE_UPDATES";
-    field public static final String INSTALL_SELF_UPDATES = "android.permission.INSTALL_SELF_UPDATES";
-    field public static final String INTENT_FILTER_VERIFICATION_AGENT = "android.permission.INTENT_FILTER_VERIFICATION_AGENT";
-    field public static final String INTERACT_ACROSS_USERS = "android.permission.INTERACT_ACROSS_USERS";
-    field public static final String INTERACT_ACROSS_USERS_FULL = "android.permission.INTERACT_ACROSS_USERS_FULL";
-    field public static final String INTERNAL_SYSTEM_WINDOW = "android.permission.INTERNAL_SYSTEM_WINDOW";
-    field public static final String INVOKE_CARRIER_SETUP = "android.permission.INVOKE_CARRIER_SETUP";
-    field public static final String KILL_UID = "android.permission.KILL_UID";
-    field public static final String LOCAL_MAC_ADDRESS = "android.permission.LOCAL_MAC_ADDRESS";
-    field public static final String LOCK_DEVICE = "android.permission.LOCK_DEVICE";
-    field public static final String LOOP_RADIO = "android.permission.LOOP_RADIO";
-    field public static final String MANAGE_ACCESSIBILITY = "android.permission.MANAGE_ACCESSIBILITY";
-    field public static final String MANAGE_ACTIVITY_STACKS = "android.permission.MANAGE_ACTIVITY_STACKS";
-    field public static final String MANAGE_APP_OPS_RESTRICTIONS = "android.permission.MANAGE_APP_OPS_RESTRICTIONS";
-    field public static final String MANAGE_APP_PREDICTIONS = "android.permission.MANAGE_APP_PREDICTIONS";
-    field public static final String MANAGE_APP_TOKENS = "android.permission.MANAGE_APP_TOKENS";
-    field public static final String MANAGE_AUTO_FILL = "android.permission.MANAGE_AUTO_FILL";
-    field public static final String MANAGE_CARRIER_OEM_UNLOCK_STATE = "android.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE";
-    field public static final String MANAGE_CA_CERTIFICATES = "android.permission.MANAGE_CA_CERTIFICATES";
-    field public static final String MANAGE_CONTENT_CAPTURE = "android.permission.MANAGE_CONTENT_CAPTURE";
-    field public static final String MANAGE_CONTENT_SUGGESTIONS = "android.permission.MANAGE_CONTENT_SUGGESTIONS";
-    field public static final String MANAGE_DEBUGGING = "android.permission.MANAGE_DEBUGGING";
-    field public static final String MANAGE_FACTORY_RESET_PROTECTION = "android.permission.MANAGE_FACTORY_RESET_PROTECTION";
-    field public static final String MANAGE_IPSEC_TUNNELS = "android.permission.MANAGE_IPSEC_TUNNELS";
-    field public static final String MANAGE_ONE_TIME_PERMISSION_SESSIONS = "android.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS";
-    field public static final String MANAGE_ROLE_HOLDERS = "android.permission.MANAGE_ROLE_HOLDERS";
-    field public static final String MANAGE_ROLLBACKS = "android.permission.MANAGE_ROLLBACKS";
-    field public static final String MANAGE_SENSOR_PRIVACY = "android.permission.MANAGE_SENSOR_PRIVACY";
-    field public static final String MANAGE_SOUND_TRIGGER = "android.permission.MANAGE_SOUND_TRIGGER";
-    field public static final String MANAGE_SUBSCRIPTION_PLANS = "android.permission.MANAGE_SUBSCRIPTION_PLANS";
-    field public static final String MANAGE_USB = "android.permission.MANAGE_USB";
-    field public static final String MANAGE_USERS = "android.permission.MANAGE_USERS";
-    field public static final String MANAGE_USER_OEM_UNLOCK_STATE = "android.permission.MANAGE_USER_OEM_UNLOCK_STATE";
-    field public static final String MODIFY_APPWIDGET_BIND_PERMISSIONS = "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS";
-    field public static final String MODIFY_AUDIO_ROUTING = "android.permission.MODIFY_AUDIO_ROUTING";
-    field public static final String MODIFY_CELL_BROADCASTS = "android.permission.MODIFY_CELL_BROADCASTS";
-    field public static final String MODIFY_DAY_NIGHT_MODE = "android.permission.MODIFY_DAY_NIGHT_MODE";
-    field @Deprecated public static final String MODIFY_NETWORK_ACCOUNTING = "android.permission.MODIFY_NETWORK_ACCOUNTING";
-    field public static final String MODIFY_PARENTAL_CONTROLS = "android.permission.MODIFY_PARENTAL_CONTROLS";
-    field public static final String MODIFY_QUIET_MODE = "android.permission.MODIFY_QUIET_MODE";
-    field public static final String MODIFY_SETTINGS_OVERRIDEABLE_BY_RESTORE = "android.permission.MODIFY_SETTINGS_OVERRIDEABLE_BY_RESTORE";
-    field public static final String MOVE_PACKAGE = "android.permission.MOVE_PACKAGE";
-    field public static final String NETWORK_AIRPLANE_MODE = "android.permission.NETWORK_AIRPLANE_MODE";
-    field public static final String NETWORK_CARRIER_PROVISIONING = "android.permission.NETWORK_CARRIER_PROVISIONING";
-    field public static final String NETWORK_FACTORY = "android.permission.NETWORK_FACTORY";
-    field public static final String NETWORK_MANAGED_PROVISIONING = "android.permission.NETWORK_MANAGED_PROVISIONING";
-    field public static final String NETWORK_SCAN = "android.permission.NETWORK_SCAN";
-    field public static final String NETWORK_SETTINGS = "android.permission.NETWORK_SETTINGS";
-    field public static final String NETWORK_SETUP_WIZARD = "android.permission.NETWORK_SETUP_WIZARD";
-    field public static final String NETWORK_SIGNAL_STRENGTH_WAKEUP = "android.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP";
-    field public static final String NETWORK_STACK = "android.permission.NETWORK_STACK";
-    field public static final String NETWORK_STATS_PROVIDER = "android.permission.NETWORK_STATS_PROVIDER";
-    field public static final String NOTIFICATION_DURING_SETUP = "android.permission.NOTIFICATION_DURING_SETUP";
-    field public static final String NOTIFY_TV_INPUTS = "android.permission.NOTIFY_TV_INPUTS";
-    field public static final String OBSERVE_APP_USAGE = "android.permission.OBSERVE_APP_USAGE";
-    field public static final String OBSERVE_NETWORK_POLICY = "android.permission.OBSERVE_NETWORK_POLICY";
-    field public static final String OBSERVE_ROLE_HOLDERS = "android.permission.OBSERVE_ROLE_HOLDERS";
-    field public static final String OPEN_ACCESSIBILITY_DETAILS_SETTINGS = "android.permission.OPEN_ACCESSIBILITY_DETAILS_SETTINGS";
-    field public static final String OVERRIDE_WIFI_CONFIG = "android.permission.OVERRIDE_WIFI_CONFIG";
-    field public static final String PACKAGE_VERIFICATION_AGENT = "android.permission.PACKAGE_VERIFICATION_AGENT";
-    field public static final String PACKET_KEEPALIVE_OFFLOAD = "android.permission.PACKET_KEEPALIVE_OFFLOAD";
-    field public static final String PEERS_MAC_ADDRESS = "android.permission.PEERS_MAC_ADDRESS";
-    field public static final String PERFORM_CDMA_PROVISIONING = "android.permission.PERFORM_CDMA_PROVISIONING";
-    field public static final String PERFORM_SIM_ACTIVATION = "android.permission.PERFORM_SIM_ACTIVATION";
-    field public static final String POWER_SAVER = "android.permission.POWER_SAVER";
-    field public static final String PROVIDE_RESOLVER_RANKER_SERVICE = "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE";
-    field public static final String PROVIDE_TRUST_AGENT = "android.permission.PROVIDE_TRUST_AGENT";
-    field public static final String QUERY_TIME_ZONE_RULES = "android.permission.QUERY_TIME_ZONE_RULES";
-    field public static final String RADIO_SCAN_WITHOUT_LOCATION = "android.permission.RADIO_SCAN_WITHOUT_LOCATION";
-    field public static final String READ_ACTIVE_EMERGENCY_SESSION = "android.permission.READ_ACTIVE_EMERGENCY_SESSION";
-    field public static final String READ_CARRIER_APP_INFO = "android.permission.READ_CARRIER_APP_INFO";
-    field public static final String READ_CELL_BROADCASTS = "android.permission.READ_CELL_BROADCASTS";
-    field public static final String READ_CONTENT_RATING_SYSTEMS = "android.permission.READ_CONTENT_RATING_SYSTEMS";
-    field public static final String READ_DEVICE_CONFIG = "android.permission.READ_DEVICE_CONFIG";
-    field public static final String READ_DREAM_STATE = "android.permission.READ_DREAM_STATE";
-    field public static final String READ_INSTALL_SESSIONS = "android.permission.READ_INSTALL_SESSIONS";
-    field public static final String READ_NETWORK_USAGE_HISTORY = "android.permission.READ_NETWORK_USAGE_HISTORY";
-    field public static final String READ_OEM_UNLOCK_STATE = "android.permission.READ_OEM_UNLOCK_STATE";
-    field public static final String READ_PRINT_SERVICES = "android.permission.READ_PRINT_SERVICES";
-    field public static final String READ_PRINT_SERVICE_RECOMMENDATIONS = "android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS";
-    field public static final String READ_PRIVILEGED_PHONE_STATE = "android.permission.READ_PRIVILEGED_PHONE_STATE";
-    field public static final String READ_RUNTIME_PROFILES = "android.permission.READ_RUNTIME_PROFILES";
-    field public static final String READ_SEARCH_INDEXABLES = "android.permission.READ_SEARCH_INDEXABLES";
-    field public static final String READ_SYSTEM_UPDATE_INFO = "android.permission.READ_SYSTEM_UPDATE_INFO";
-    field public static final String READ_WALLPAPER_INTERNAL = "android.permission.READ_WALLPAPER_INTERNAL";
-    field public static final String READ_WIFI_CREDENTIAL = "android.permission.READ_WIFI_CREDENTIAL";
-    field public static final String REAL_GET_TASKS = "android.permission.REAL_GET_TASKS";
-    field public static final String RECEIVE_DATA_ACTIVITY_CHANGE = "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE";
-    field public static final String RECEIVE_DEVICE_CUSTOMIZATION_READY = "android.permission.RECEIVE_DEVICE_CUSTOMIZATION_READY";
-    field public static final String RECEIVE_EMERGENCY_BROADCAST = "android.permission.RECEIVE_EMERGENCY_BROADCAST";
-    field public static final String RECEIVE_WIFI_CREDENTIAL_CHANGE = "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE";
-    field public static final String RECOVERY = "android.permission.RECOVERY";
-    field public static final String RECOVER_KEYSTORE = "android.permission.RECOVER_KEYSTORE";
-    field public static final String REGISTER_CALL_PROVIDER = "android.permission.REGISTER_CALL_PROVIDER";
-    field public static final String REGISTER_CONNECTION_MANAGER = "android.permission.REGISTER_CONNECTION_MANAGER";
-    field public static final String REGISTER_SIM_SUBSCRIPTION = "android.permission.REGISTER_SIM_SUBSCRIPTION";
-    field public static final String REGISTER_STATS_PULL_ATOM = "android.permission.REGISTER_STATS_PULL_ATOM";
-    field public static final String REMOTE_DISPLAY_PROVIDER = "android.permission.REMOTE_DISPLAY_PROVIDER";
-    field public static final String REMOVE_DRM_CERTIFICATES = "android.permission.REMOVE_DRM_CERTIFICATES";
-    field public static final String REMOVE_TASKS = "android.permission.REMOVE_TASKS";
-    field public static final String REQUEST_NETWORK_SCORES = "android.permission.REQUEST_NETWORK_SCORES";
-    field public static final String REQUEST_NOTIFICATION_ASSISTANT_SERVICE = "android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE";
-    field public static final String RESET_PASSWORD = "android.permission.RESET_PASSWORD";
-    field public static final String RESTORE_RUNTIME_PERMISSIONS = "android.permission.RESTORE_RUNTIME_PERMISSIONS";
-    field public static final String RESTRICTED_VR_ACCESS = "android.permission.RESTRICTED_VR_ACCESS";
-    field public static final String RETRIEVE_WINDOW_CONTENT = "android.permission.RETRIEVE_WINDOW_CONTENT";
-    field public static final String REVIEW_ACCESSIBILITY_SERVICES = "android.permission.REVIEW_ACCESSIBILITY_SERVICES";
-    field public static final String REVOKE_RUNTIME_PERMISSIONS = "android.permission.REVOKE_RUNTIME_PERMISSIONS";
-    field public static final String SCORE_NETWORKS = "android.permission.SCORE_NETWORKS";
-    field public static final String SECURE_ELEMENT_PRIVILEGED_OPERATION = "android.permission.SECURE_ELEMENT_PRIVILEGED_OPERATION";
-    field public static final String SEND_DEVICE_CUSTOMIZATION_READY = "android.permission.SEND_DEVICE_CUSTOMIZATION_READY";
-    field public static final String SEND_SHOW_SUSPENDED_APP_DETAILS = "android.permission.SEND_SHOW_SUSPENDED_APP_DETAILS";
-    field public static final String SEND_SMS_NO_CONFIRMATION = "android.permission.SEND_SMS_NO_CONFIRMATION";
-    field public static final String SERIAL_PORT = "android.permission.SERIAL_PORT";
-    field public static final String SET_ACTIVITY_WATCHER = "android.permission.SET_ACTIVITY_WATCHER";
-    field public static final String SET_HARMFUL_APP_WARNINGS = "android.permission.SET_HARMFUL_APP_WARNINGS";
-    field public static final String SET_MEDIA_KEY_LISTENER = "android.permission.SET_MEDIA_KEY_LISTENER";
-    field public static final String SET_ORIENTATION = "android.permission.SET_ORIENTATION";
-    field public static final String SET_POINTER_SPEED = "android.permission.SET_POINTER_SPEED";
-    field public static final String SET_SCREEN_COMPATIBILITY = "android.permission.SET_SCREEN_COMPATIBILITY";
-    field public static final String SET_VOLUME_KEY_LONG_PRESS_LISTENER = "android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER";
-    field public static final String SET_WALLPAPER_COMPONENT = "android.permission.SET_WALLPAPER_COMPONENT";
-    field public static final String SHOW_KEYGUARD_MESSAGE = "android.permission.SHOW_KEYGUARD_MESSAGE";
-    field public static final String SHUTDOWN = "android.permission.SHUTDOWN";
-    field public static final String STOP_APP_SWITCHES = "android.permission.STOP_APP_SWITCHES";
-    field public static final String SUBSTITUTE_NOTIFICATION_APP_NAME = "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME";
-    field public static final String SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON = "android.permission.SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON";
-    field public static final String SUSPEND_APPS = "android.permission.SUSPEND_APPS";
-    field public static final String SYSTEM_CAMERA = "android.permission.SYSTEM_CAMERA";
-    field public static final String TETHER_PRIVILEGED = "android.permission.TETHER_PRIVILEGED";
-    field public static final String TV_INPUT_HARDWARE = "android.permission.TV_INPUT_HARDWARE";
-    field public static final String TV_VIRTUAL_REMOTE_CONTROLLER = "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER";
-    field public static final String UNLIMITED_SHORTCUTS_API_CALLS = "android.permission.UNLIMITED_SHORTCUTS_API_CALLS";
-    field public static final String UPDATE_APP_OPS_STATS = "android.permission.UPDATE_APP_OPS_STATS";
-    field public static final String UPDATE_LOCK = "android.permission.UPDATE_LOCK";
-    field public static final String UPDATE_TIME_ZONE_RULES = "android.permission.UPDATE_TIME_ZONE_RULES";
-    field public static final String UPGRADE_RUNTIME_PERMISSIONS = "android.permission.UPGRADE_RUNTIME_PERMISSIONS";
-    field public static final String USER_ACTIVITY = "android.permission.USER_ACTIVITY";
-    field public static final String USE_RESERVED_DISK = "android.permission.USE_RESERVED_DISK";
-    field public static final String WHITELIST_AUTO_REVOKE_PERMISSIONS = "android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS";
-    field public static final String WHITELIST_RESTRICTED_PERMISSIONS = "android.permission.WHITELIST_RESTRICTED_PERMISSIONS";
-    field public static final String WIFI_SET_DEVICE_MOBILITY_STATE = "android.permission.WIFI_SET_DEVICE_MOBILITY_STATE";
-    field public static final String WIFI_UPDATE_USABILITY_STATS_SCORE = "android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE";
-    field public static final String WRITE_DEVICE_CONFIG = "android.permission.WRITE_DEVICE_CONFIG";
-    field public static final String WRITE_DREAM_STATE = "android.permission.WRITE_DREAM_STATE";
-    field public static final String WRITE_EMBEDDED_SUBSCRIPTIONS = "android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS";
-    field @Deprecated public static final String WRITE_MEDIA_STORAGE = "android.permission.WRITE_MEDIA_STORAGE";
-    field public static final String WRITE_OBB = "android.permission.WRITE_OBB";
-  }
-
-  public static final class Manifest.permission_group {
-    field public static final String UNDEFINED = "android.permission-group.UNDEFINED";
-  }
-
-  public static final class R.array {
-    field public static final int config_keySystemUuidMapping = 17235973; // 0x1070005
-  }
-
-  public static final class R.attr {
-    field public static final int allowClearUserDataOnFailedRestore = 16844288; // 0x1010600
-    field public static final int isVrOnly = 16844152; // 0x1010578
-    field public static final int minExtensionVersion = 16844305; // 0x1010611
-    field public static final int requiredSystemPropertyName = 16844133; // 0x1010565
-    field public static final int requiredSystemPropertyValue = 16844134; // 0x1010566
-    field public static final int sdkVersion = 16844304; // 0x1010610
-    field public static final int supportsAmbientMode = 16844173; // 0x101058d
-    field public static final int userRestriction = 16844164; // 0x1010584
-  }
-
-  public static final class R.bool {
-    field public static final int config_sendPackageName = 17891328; // 0x1110000
-    field public static final int config_showDefaultAssistant = 17891329; // 0x1110001
-    field public static final int config_showDefaultEmergency = 17891330; // 0x1110002
-    field public static final int config_showDefaultHome = 17891331; // 0x1110003
-  }
-
-  public static final class R.color {
-    field public static final int system_notification_accent_color = 17170460; // 0x106001c
-  }
-
-  public static final class R.dimen {
-    field public static final int config_restrictedIconSize = 17104903; // 0x1050007
-  }
-
-  public static final class R.drawable {
-    field public static final int ic_info = 17301684; // 0x10800b4
-  }
-
-  public static final class R.raw {
-    field public static final int loaderror = 17825792; // 0x1100000
-    field public static final int nodomain = 17825793; // 0x1100001
-  }
-
-  public static final class R.string {
-    field public static final int config_defaultAssistant = 17039393; // 0x1040021
-    field public static final int config_defaultBrowser = 17039394; // 0x1040022
-    field public static final int config_defaultCallRedirection = 17039397; // 0x1040025
-    field public static final int config_defaultCallScreening = 17039398; // 0x1040026
-    field public static final int config_defaultDialer = 17039395; // 0x1040023
-    field public static final int config_defaultSms = 17039396; // 0x1040024
-    field public static final int config_feedbackIntentExtraKey = 17039391; // 0x104001f
-    field public static final int config_feedbackIntentNameKey = 17039392; // 0x1040020
-    field public static final int config_helpIntentExtraKey = 17039389; // 0x104001d
-    field public static final int config_helpIntentNameKey = 17039390; // 0x104001e
-    field public static final int config_helpPackageNameKey = 17039387; // 0x104001b
-    field public static final int config_helpPackageNameValue = 17039388; // 0x104001c
-    field public static final int config_systemGallery = 17039399; // 0x1040027
-  }
-
-  public static final class R.style {
-    field public static final int Theme_DeviceDefault_DocumentsUI = 16974562; // 0x10302e2
-    field public static final int Theme_Leanback_FormWizard = 16974544; // 0x10302d0
-  }
-
-}
-
-package android.accounts {
-
-  public class AccountManager {
-    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public android.accounts.AccountManagerFuture<android.os.Bundle> finishSessionAsUser(android.os.Bundle, android.app.Activity, android.os.UserHandle, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-  }
-
-}
-
-package android.app {
-
-  public class Activity extends android.view.ContextThemeWrapper implements android.content.ComponentCallbacks2 android.view.KeyEvent.Callback android.view.LayoutInflater.Factory2 android.view.View.OnCreateContextMenuListener android.view.Window.Callback {
-    method public void convertFromTranslucent();
-    method public boolean convertToTranslucent(android.app.Activity.TranslucentConversionListener, android.app.ActivityOptions);
-    method @Deprecated public boolean isBackgroundVisibleBehind();
-    method @Deprecated public void onBackgroundVisibleBehindChanged(boolean);
-  }
-
-  public static interface Activity.TranslucentConversionListener {
-    method public void onTranslucentConversionComplete(boolean);
-  }
-
-  public class ActivityManager {
-    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public void addOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener, int);
-    method @RequiresPermission(android.Manifest.permission.FORCE_STOP_PACKAGES) public void forceStopPackage(String);
-    method @RequiresPermission(anyOf={"android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL"}) public static int getCurrentUser();
-    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int getPackageImportance(String);
-    method @NonNull public java.util.Collection<java.util.Locale> getSupportedLocales();
-    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int getUidImportance(int);
-    method @RequiresPermission(android.Manifest.permission.FORCE_STOP_PACKAGES) public void killProcessesWhenImperceptible(@NonNull int[], @NonNull String);
-    method @RequiresPermission(android.Manifest.permission.KILL_UID) public void killUid(int, String);
-    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public void removeOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener);
-    method public void setDeviceLocales(@NonNull android.os.LocaleList);
-    method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public static void setPersistentVrThread(int);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean switchUser(@NonNull android.os.UserHandle);
-  }
-
-  public static interface ActivityManager.OnUidImportanceListener {
-    method public void onUidImportance(int, int);
-  }
-
-  public class AlarmManager {
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void set(int, long, long, long, android.app.PendingIntent, android.os.WorkSource);
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void set(int, long, long, long, android.app.AlarmManager.OnAlarmListener, android.os.Handler, android.os.WorkSource);
-  }
-
-  public class AppOpsManager {
-    method @Nullable @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public android.app.RuntimeAppOpAccessMessage collectRuntimeAppOpAccessMessage();
-    method @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public void getHistoricalOps(@NonNull android.app.AppOpsManager.HistoricalOpsRequest, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.AppOpsManager.HistoricalOps>);
-    method public static String[] getOpStrs();
-    method @NonNull @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public java.util.List<android.app.AppOpsManager.PackageOps> getOpsForPackage(int, @NonNull String, @Nullable java.lang.String...);
-    method @NonNull @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public java.util.List<android.app.AppOpsManager.PackageOps> getPackagesForOps(@Nullable String[]);
-    method public static int opToDefaultMode(@NonNull String);
-    method @Nullable public static String opToPermission(@NonNull String);
-    method @RequiresPermission("android.permission.MANAGE_APP_OPS_MODES") public void setMode(@NonNull String, int, @Nullable String, int);
-    method @RequiresPermission("android.permission.MANAGE_APP_OPS_MODES") public void setUidMode(@NonNull String, int, int);
-    field public static final String OPSTR_ACCEPT_HANDOVER = "android:accept_handover";
-    field public static final String OPSTR_ACCESS_ACCESSIBILITY = "android:access_accessibility";
-    field public static final String OPSTR_ACCESS_NOTIFICATIONS = "android:access_notifications";
-    field public static final String OPSTR_ACTIVATE_VPN = "android:activate_vpn";
-    field public static final String OPSTR_ASSIST_SCREENSHOT = "android:assist_screenshot";
-    field public static final String OPSTR_ASSIST_STRUCTURE = "android:assist_structure";
-    field public static final String OPSTR_AUDIO_ACCESSIBILITY_VOLUME = "android:audio_accessibility_volume";
-    field public static final String OPSTR_AUDIO_ALARM_VOLUME = "android:audio_alarm_volume";
-    field public static final String OPSTR_AUDIO_BLUETOOTH_VOLUME = "android:audio_bluetooth_volume";
-    field public static final String OPSTR_AUDIO_MASTER_VOLUME = "android:audio_master_volume";
-    field public static final String OPSTR_AUDIO_MEDIA_VOLUME = "android:audio_media_volume";
-    field public static final String OPSTR_AUDIO_NOTIFICATION_VOLUME = "android:audio_notification_volume";
-    field public static final String OPSTR_AUDIO_RING_VOLUME = "android:audio_ring_volume";
-    field public static final String OPSTR_AUDIO_VOICE_VOLUME = "android:audio_voice_volume";
-    field public static final String OPSTR_AUTO_REVOKE_MANAGED_BY_INSTALLER = "android:auto_revoke_managed_by_installer";
-    field public static final String OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED = "android:auto_revoke_permissions_if_unused";
-    field public static final String OPSTR_BIND_ACCESSIBILITY_SERVICE = "android:bind_accessibility_service";
-    field public static final String OPSTR_CHANGE_WIFI_STATE = "android:change_wifi_state";
-    field public static final String OPSTR_GET_ACCOUNTS = "android:get_accounts";
-    field public static final String OPSTR_GPS = "android:gps";
-    field public static final String OPSTR_INSTANT_APP_START_FOREGROUND = "android:instant_app_start_foreground";
-    field public static final String OPSTR_INTERACT_ACROSS_PROFILES = "android:interact_across_profiles";
-    field public static final String OPSTR_LEGACY_STORAGE = "android:legacy_storage";
-    field public static final String OPSTR_LOADER_USAGE_STATS = "android:loader_usage_stats";
-    field public static final String OPSTR_MANAGE_EXTERNAL_STORAGE = "android:manage_external_storage";
-    field public static final String OPSTR_MANAGE_IPSEC_TUNNELS = "android:manage_ipsec_tunnels";
-    field public static final String OPSTR_MUTE_MICROPHONE = "android:mute_microphone";
-    field public static final String OPSTR_NEIGHBORING_CELLS = "android:neighboring_cells";
-    field public static final String OPSTR_PLAY_AUDIO = "android:play_audio";
-    field public static final String OPSTR_POST_NOTIFICATION = "android:post_notification";
-    field public static final String OPSTR_PROJECT_MEDIA = "android:project_media";
-    field public static final String OPSTR_READ_CLIPBOARD = "android:read_clipboard";
-    field public static final String OPSTR_READ_ICC_SMS = "android:read_icc_sms";
-    field public static final String OPSTR_READ_MEDIA_AUDIO = "android:read_media_audio";
-    field public static final String OPSTR_READ_MEDIA_IMAGES = "android:read_media_images";
-    field public static final String OPSTR_READ_MEDIA_VIDEO = "android:read_media_video";
-    field public static final String OPSTR_RECEIVE_EMERGENCY_BROADCAST = "android:receive_emergency_broadcast";
-    field public static final String OPSTR_REQUEST_DELETE_PACKAGES = "android:request_delete_packages";
-    field public static final String OPSTR_REQUEST_INSTALL_PACKAGES = "android:request_install_packages";
-    field public static final String OPSTR_RUN_ANY_IN_BACKGROUND = "android:run_any_in_background";
-    field public static final String OPSTR_RUN_IN_BACKGROUND = "android:run_in_background";
-    field public static final String OPSTR_START_FOREGROUND = "android:start_foreground";
-    field public static final String OPSTR_TAKE_AUDIO_FOCUS = "android:take_audio_focus";
-    field public static final String OPSTR_TAKE_MEDIA_BUTTONS = "android:take_media_buttons";
-    field public static final String OPSTR_TOAST_WINDOW = "android:toast_window";
-    field public static final String OPSTR_TURN_SCREEN_ON = "android:turn_screen_on";
-    field public static final String OPSTR_VIBRATE = "android:vibrate";
-    field public static final String OPSTR_WAKE_LOCK = "android:wake_lock";
-    field public static final String OPSTR_WIFI_SCAN = "android:wifi_scan";
-    field public static final String OPSTR_WRITE_CLIPBOARD = "android:write_clipboard";
-    field public static final String OPSTR_WRITE_ICC_SMS = "android:write_icc_sms";
-    field public static final String OPSTR_WRITE_MEDIA_AUDIO = "android:write_media_audio";
-    field public static final String OPSTR_WRITE_MEDIA_IMAGES = "android:write_media_images";
-    field public static final String OPSTR_WRITE_MEDIA_VIDEO = "android:write_media_video";
-    field public static final String OPSTR_WRITE_SMS = "android:write_sms";
-    field public static final String OPSTR_WRITE_WALLPAPER = "android:write_wallpaper";
-    field public static final int OP_FLAGS_ALL = 31; // 0x1f
-    field public static final int OP_FLAGS_ALL_TRUSTED = 13; // 0xd
-    field public static final int OP_FLAG_SELF = 1; // 0x1
-    field public static final int OP_FLAG_TRUSTED_PROXIED = 8; // 0x8
-    field public static final int OP_FLAG_TRUSTED_PROXY = 2; // 0x2
-    field public static final int OP_FLAG_UNTRUSTED_PROXIED = 16; // 0x10
-    field public static final int OP_FLAG_UNTRUSTED_PROXY = 4; // 0x4
-    field public static final int UID_STATE_BACKGROUND = 600; // 0x258
-    field public static final int UID_STATE_CACHED = 700; // 0x2bc
-    field public static final int UID_STATE_FOREGROUND = 500; // 0x1f4
-    field public static final int UID_STATE_FOREGROUND_SERVICE = 400; // 0x190
-    field @Deprecated public static final int UID_STATE_FOREGROUND_SERVICE_LOCATION = 300; // 0x12c
-    field public static final int UID_STATE_PERSISTENT = 100; // 0x64
-    field public static final int UID_STATE_TOP = 200; // 0xc8
-  }
-
-  public static final class AppOpsManager.AttributedHistoricalOps implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.app.AppOpsManager.HistoricalOp getOp(@NonNull String);
-    method @NonNull public android.app.AppOpsManager.HistoricalOp getOpAt(@IntRange(from=0) int);
-    method @IntRange(from=0) public int getOpCount();
-    method @Nullable public String getTag();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.AttributedHistoricalOps> CREATOR;
-  }
-
-  public static final class AppOpsManager.AttributedOpEntry implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getLastAccessBackgroundTime(int);
-    method public long getLastAccessForegroundTime(int);
-    method public long getLastAccessTime(int);
-    method public long getLastAccessTime(int, int, int);
-    method public long getLastBackgroundDuration(int);
-    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastBackgroundProxyInfo(int);
-    method public long getLastDuration(int);
-    method public long getLastDuration(int, int, int);
-    method public long getLastForegroundDuration(int);
-    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastForegroundProxyInfo(int);
-    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastProxyInfo(int);
-    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastProxyInfo(int, int, int);
-    method public long getLastRejectBackgroundTime(int);
-    method public long getLastRejectForegroundTime(int);
-    method public long getLastRejectTime(int);
-    method public long getLastRejectTime(int, int, int);
-    method public boolean isRunning();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.AttributedOpEntry> CREATOR;
-  }
-
-  public static final class AppOpsManager.HistoricalOp implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getAccessCount(int, int, int);
-    method public long getAccessDuration(int, int, int);
-    method public long getBackgroundAccessCount(int);
-    method public long getBackgroundAccessDuration(int);
-    method public long getBackgroundRejectCount(int);
-    method public long getForegroundAccessCount(int);
-    method public long getForegroundAccessDuration(int);
-    method public long getForegroundRejectCount(int);
-    method @NonNull public String getOpName();
-    method public long getRejectCount(int, int, int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.HistoricalOp> CREATOR;
-  }
-
-  public static final class AppOpsManager.HistoricalOps implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getBeginTimeMillis();
-    method public long getEndTimeMillis();
-    method @IntRange(from=0) public int getUidCount();
-    method @Nullable public android.app.AppOpsManager.HistoricalUidOps getUidOps(int);
-    method @NonNull public android.app.AppOpsManager.HistoricalUidOps getUidOpsAt(@IntRange(from=0) int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.HistoricalOps> CREATOR;
-  }
-
-  public static final class AppOpsManager.HistoricalOpsRequest {
-  }
-
-  public static final class AppOpsManager.HistoricalOpsRequest.Builder {
-    ctor public AppOpsManager.HistoricalOpsRequest.Builder(long, long);
-    method @NonNull public android.app.AppOpsManager.HistoricalOpsRequest build();
-    method @NonNull public android.app.AppOpsManager.HistoricalOpsRequest.Builder setAttributionTag(@Nullable String);
-    method @NonNull public android.app.AppOpsManager.HistoricalOpsRequest.Builder setFlags(int);
-    method @NonNull public android.app.AppOpsManager.HistoricalOpsRequest.Builder setOpNames(@Nullable java.util.List<java.lang.String>);
-    method @NonNull public android.app.AppOpsManager.HistoricalOpsRequest.Builder setPackageName(@Nullable String);
-    method @NonNull public android.app.AppOpsManager.HistoricalOpsRequest.Builder setUid(int);
-  }
-
-  public static final class AppOpsManager.HistoricalPackageOps implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.app.AppOpsManager.AttributedHistoricalOps getAttributedOps(@NonNull String);
-    method @NonNull public android.app.AppOpsManager.AttributedHistoricalOps getAttributedOpsAt(@IntRange(from=0) int);
-    method @IntRange(from=0) public int getAttributedOpsCount();
-    method @Nullable public android.app.AppOpsManager.HistoricalOp getOp(@NonNull String);
-    method @NonNull public android.app.AppOpsManager.HistoricalOp getOpAt(@IntRange(from=0) int);
-    method @IntRange(from=0) public int getOpCount();
-    method @NonNull public String getPackageName();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.HistoricalPackageOps> CREATOR;
-  }
-
-  public static final class AppOpsManager.HistoricalUidOps implements android.os.Parcelable {
-    method public int describeContents();
-    method @IntRange(from=0) public int getPackageCount();
-    method @Nullable public android.app.AppOpsManager.HistoricalPackageOps getPackageOps(@NonNull String);
-    method @NonNull public android.app.AppOpsManager.HistoricalPackageOps getPackageOpsAt(@IntRange(from=0) int);
-    method public int getUid();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.HistoricalUidOps> CREATOR;
-  }
-
-  public static final class AppOpsManager.OpEntry implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public java.util.Map<java.lang.String,android.app.AppOpsManager.AttributedOpEntry> getAttributedOpEntries();
-    method @Deprecated public long getDuration();
-    method public long getLastAccessBackgroundTime(int);
-    method public long getLastAccessForegroundTime(int);
-    method public long getLastAccessTime(int);
-    method public long getLastAccessTime(int, int, int);
-    method public long getLastBackgroundDuration(int);
-    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastBackgroundProxyInfo(int);
-    method public long getLastDuration(int);
-    method public long getLastDuration(int, int, int);
-    method public long getLastForegroundDuration(int);
-    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastForegroundProxyInfo(int);
-    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastProxyInfo(int);
-    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastProxyInfo(int, int, int);
-    method public long getLastRejectBackgroundTime(int);
-    method public long getLastRejectForegroundTime(int);
-    method public long getLastRejectTime(int);
-    method public long getLastRejectTime(int, int, int);
-    method public int getMode();
-    method @NonNull public String getOpStr();
-    method @Deprecated @Nullable public String getProxyPackageName();
-    method @Deprecated @Nullable public String getProxyPackageName(int, int);
-    method @Deprecated public int getProxyUid();
-    method @Deprecated public int getProxyUid(int, int);
-    method public boolean isRunning();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.OpEntry> CREATOR;
-  }
-
-  public static final class AppOpsManager.OpEventProxyInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getAttributionTag();
-    method @Nullable public String getPackageName();
-    method @IntRange(from=0) public int getUid();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.OpEventProxyInfo> CREATOR;
-  }
-
-  public static final class AppOpsManager.PackageOps implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public java.util.List<android.app.AppOpsManager.OpEntry> getOps();
-    method @NonNull public String getPackageName();
-    method public int getUid();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.PackageOps> CREATOR;
-  }
-
-  public class BroadcastOptions {
-    method public static android.app.BroadcastOptions makeBasic();
-    method @RequiresPermission("android.permission.START_ACTIVITIES_FROM_BACKGROUND") public void setBackgroundActivityStartsAllowed(boolean);
-    method public void setDontSendToRestrictedApps(boolean);
-    method @RequiresPermission(android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST) public void setTemporaryAppWhitelistDuration(long);
-    method public android.os.Bundle toBundle();
-  }
-
-  public class DownloadManager {
-    method @RequiresPermission(android.Manifest.permission.WRITE_MEDIA_STORAGE) public void onMediaStoreDownloadsDeleted(@NonNull android.util.LongSparseArray<java.lang.String>);
-    field public static final String ACTION_DOWNLOAD_COMPLETED = "android.intent.action.DOWNLOAD_COMPLETED";
-  }
-
-  public abstract class InstantAppResolverService extends android.app.Service {
-    ctor public InstantAppResolverService();
-    method public final void attachBaseContext(android.content.Context);
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method @Deprecated public void onGetInstantAppIntentFilter(@Nullable int[], @NonNull String, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback);
-    method @Deprecated public void onGetInstantAppIntentFilter(@NonNull android.content.Intent, @Nullable int[], @NonNull String, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback);
-    method @Deprecated public void onGetInstantAppIntentFilter(@NonNull android.content.Intent, @Nullable int[], @NonNull android.os.UserHandle, @NonNull String, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback);
-    method @MainThread public void onGetInstantAppIntentFilter(@NonNull android.content.pm.InstantAppRequestInfo, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback);
-    method @Deprecated public void onGetInstantAppResolveInfo(@Nullable int[], @NonNull String, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback);
-    method @Deprecated public void onGetInstantAppResolveInfo(@NonNull android.content.Intent, @Nullable int[], @NonNull String, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback);
-    method @Deprecated public void onGetInstantAppResolveInfo(@NonNull android.content.Intent, @Nullable int[], @NonNull android.os.UserHandle, @NonNull String, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback);
-    method @MainThread public void onGetInstantAppResolveInfo(@NonNull android.content.pm.InstantAppRequestInfo, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback);
-  }
-
-  public static final class InstantAppResolverService.InstantAppResolutionCallback {
-    method public void onInstantAppResolveInfo(java.util.List<android.content.pm.InstantAppResolveInfo>);
-  }
-
-  public class KeyguardManager {
-    method public android.content.Intent createConfirmFactoryResetCredentialIntent(CharSequence, CharSequence, CharSequence);
-    method @RequiresPermission("android.permission.SET_INITIAL_LOCK") public int getMinLockLength(boolean, int);
-    method @RequiresPermission(android.Manifest.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS) public boolean getPrivateNotificationsAllowed();
-    method @RequiresPermission("android.permission.SET_INITIAL_LOCK") public boolean isValidLockPasswordComplexity(int, @NonNull byte[], int);
-    method @RequiresPermission(android.Manifest.permission.SHOW_KEYGUARD_MESSAGE) public void requestDismissKeyguard(@NonNull android.app.Activity, @Nullable CharSequence, @Nullable android.app.KeyguardManager.KeyguardDismissCallback);
-    method @RequiresPermission("android.permission.SET_INITIAL_LOCK") public boolean setLock(int, @NonNull byte[], int);
-    method @RequiresPermission(android.Manifest.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS) public void setPrivateNotificationsAllowed(boolean);
-  }
-
-  public class Notification implements android.os.Parcelable {
-    field public static final String CATEGORY_CAR_EMERGENCY = "car_emergency";
-    field public static final String CATEGORY_CAR_INFORMATION = "car_information";
-    field public static final String CATEGORY_CAR_WARNING = "car_warning";
-    field @RequiresPermission(android.Manifest.permission.NOTIFICATION_DURING_SETUP) public static final String EXTRA_ALLOW_DURING_SETUP = "android.allowDuringSetup";
-    field @RequiresPermission(android.Manifest.permission.SUBSTITUTE_NOTIFICATION_APP_NAME) public static final String EXTRA_SUBSTITUTE_APP_NAME = "android.substName";
-    field public static final int FLAG_AUTOGROUP_SUMMARY = 1024; // 0x400
-  }
-
-  public static final class Notification.TvExtender implements android.app.Notification.Extender {
-    ctor public Notification.TvExtender();
-    ctor public Notification.TvExtender(android.app.Notification);
-    method public android.app.Notification.Builder extend(android.app.Notification.Builder);
-    method public String getChannelId();
-    method public android.app.PendingIntent getContentIntent();
-    method public android.app.PendingIntent getDeleteIntent();
-    method public boolean getSuppressShowOverApps();
-    method public boolean isAvailableOnTv();
-    method public android.app.Notification.TvExtender setChannel(String);
-    method public android.app.Notification.TvExtender setChannelId(String);
-    method public android.app.Notification.TvExtender setContentIntent(android.app.PendingIntent);
-    method public android.app.Notification.TvExtender setDeleteIntent(android.app.PendingIntent);
-    method public android.app.Notification.TvExtender setSuppressShowOverApps(boolean);
-  }
-
-  public final class NotificationChannel implements android.os.Parcelable {
-    method public int getUserLockedFields();
-    method public boolean isDeleted();
-    method public void populateFromXml(org.xmlpull.v1.XmlPullParser);
-    method public void setBlockable(boolean);
-    method public org.json.JSONObject toJson() throws org.json.JSONException;
-    method public void writeXml(org.xmlpull.v1.XmlSerializer) throws java.io.IOException;
-    field public static final int USER_LOCKED_SOUND = 32; // 0x20
-  }
-
-  public final class NotificationChannelGroup implements android.os.Parcelable {
-    method public org.json.JSONObject toJson() throws org.json.JSONException;
-  }
-
-  public class NotificationManager {
-    method @NonNull public java.util.List<java.lang.String> getAllowedAssistantAdjustments();
-    method @Nullable public android.content.ComponentName getAllowedNotificationAssistant();
-    method public boolean isNotificationAssistantAccessGranted(@NonNull android.content.ComponentName);
-    method public void setNotificationAssistantAccessGranted(@Nullable android.content.ComponentName, boolean);
-  }
-
-  public final class RuntimeAppOpAccessMessage implements android.os.Parcelable {
-    ctor public RuntimeAppOpAccessMessage(@IntRange(from=0L) int, @IntRange(from=0L) int, @NonNull String, @Nullable String, @NonNull String, int);
-    method public int describeContents();
-    method @Nullable public String getAttributionTag();
-    method @NonNull public String getMessage();
-    method @NonNull public String getOp();
-    method @NonNull public String getPackageName();
-    method public int getSamplingStrategy();
-    method @IntRange(from=0L) public int getUid();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.RuntimeAppOpAccessMessage> CREATOR;
-  }
-
-  public class SearchManager implements android.content.DialogInterface.OnCancelListener android.content.DialogInterface.OnDismissListener {
-    method public void launchAssist(@Nullable android.os.Bundle);
-  }
-
-  public final class StatsManager {
-    method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void addConfig(long, byte[]) throws android.app.StatsManager.StatsUnavailableException;
-    method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public boolean addConfiguration(long, byte[]);
-    method @RequiresPermission(android.Manifest.permission.REGISTER_STATS_PULL_ATOM) public void clearPullAtomCallback(int);
-    method @Deprecated @Nullable @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public byte[] getData(long);
-    method @Deprecated @Nullable @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public byte[] getMetadata();
-    method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public long[] getRegisteredExperimentIds() throws android.app.StatsManager.StatsUnavailableException;
-    method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public byte[] getReports(long) throws android.app.StatsManager.StatsUnavailableException;
-    method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public byte[] getStatsMetadata() throws android.app.StatsManager.StatsUnavailableException;
-    method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void removeConfig(long) throws android.app.StatsManager.StatsUnavailableException;
-    method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public boolean removeConfiguration(long);
-    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public long[] setActiveConfigsChangedOperation(@Nullable android.app.PendingIntent) throws android.app.StatsManager.StatsUnavailableException;
-    method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void setBroadcastSubscriber(android.app.PendingIntent, long, long) throws android.app.StatsManager.StatsUnavailableException;
-    method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public boolean setBroadcastSubscriber(long, long, android.app.PendingIntent);
-    method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public boolean setDataFetchOperation(long, android.app.PendingIntent);
-    method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void setFetchReportsOperation(android.app.PendingIntent, long) throws android.app.StatsManager.StatsUnavailableException;
-    method @RequiresPermission(android.Manifest.permission.REGISTER_STATS_PULL_ATOM) public void setPullAtomCallback(int, @Nullable android.app.StatsManager.PullAtomMetadata, @NonNull java.util.concurrent.Executor, @NonNull android.app.StatsManager.StatsPullAtomCallback);
-    field public static final String ACTION_STATSD_STARTED = "android.app.action.STATSD_STARTED";
-    field public static final String EXTRA_STATS_ACTIVE_CONFIG_KEYS = "android.app.extra.STATS_ACTIVE_CONFIG_KEYS";
-    field public static final String EXTRA_STATS_BROADCAST_SUBSCRIBER_COOKIES = "android.app.extra.STATS_BROADCAST_SUBSCRIBER_COOKIES";
-    field public static final String EXTRA_STATS_CONFIG_KEY = "android.app.extra.STATS_CONFIG_KEY";
-    field public static final String EXTRA_STATS_CONFIG_UID = "android.app.extra.STATS_CONFIG_UID";
-    field public static final String EXTRA_STATS_DIMENSIONS_VALUE = "android.app.extra.STATS_DIMENSIONS_VALUE";
-    field public static final String EXTRA_STATS_SUBSCRIPTION_ID = "android.app.extra.STATS_SUBSCRIPTION_ID";
-    field public static final String EXTRA_STATS_SUBSCRIPTION_RULE_ID = "android.app.extra.STATS_SUBSCRIPTION_RULE_ID";
-    field public static final int PULL_SKIP = 1; // 0x1
-    field public static final int PULL_SUCCESS = 0; // 0x0
-  }
-
-  public static class StatsManager.PullAtomMetadata {
-    method @Nullable public int[] getAdditiveFields();
-    method public long getCoolDownMillis();
-    method public long getTimeoutMillis();
-  }
-
-  public static class StatsManager.PullAtomMetadata.Builder {
-    ctor public StatsManager.PullAtomMetadata.Builder();
-    method @NonNull public android.app.StatsManager.PullAtomMetadata build();
-    method @NonNull public android.app.StatsManager.PullAtomMetadata.Builder setAdditiveFields(@NonNull int[]);
-    method @NonNull public android.app.StatsManager.PullAtomMetadata.Builder setCoolDownMillis(long);
-    method @NonNull public android.app.StatsManager.PullAtomMetadata.Builder setTimeoutMillis(long);
-  }
-
-  public static interface StatsManager.StatsPullAtomCallback {
-    method public int onPullAtom(int, @NonNull java.util.List<android.util.StatsEvent>);
-  }
-
-  public static class StatsManager.StatsUnavailableException extends android.util.AndroidException {
-    ctor public StatsManager.StatsUnavailableException(String);
-    ctor public StatsManager.StatsUnavailableException(String, Throwable);
-  }
-
-  public class StatusBarManager {
-    method @NonNull @RequiresPermission(android.Manifest.permission.STATUS_BAR) public android.app.StatusBarManager.DisableInfo getDisableInfo();
-    method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void setDisabledForSetup(boolean);
-  }
-
-  public static final class StatusBarManager.DisableInfo {
-    method public boolean areAllComponentsEnabled();
-    method public boolean isNavigateToHomeDisabled();
-    method public boolean isNotificationPeekingDisabled();
-    method public boolean isRecentsDisabled();
-    method public boolean isSearchDisabled();
-    method public boolean isStatusBarExpansionDisabled();
-  }
-
-  public final class SystemServiceRegistry {
-    method public static <TServiceClass> void registerContextAwareService(@NonNull String, @NonNull Class<TServiceClass>, @NonNull android.app.SystemServiceRegistry.ContextAwareServiceProducerWithBinder<TServiceClass>);
-    method public static <TServiceClass> void registerContextAwareService(@NonNull String, @NonNull Class<TServiceClass>, @NonNull android.app.SystemServiceRegistry.ContextAwareServiceProducerWithoutBinder<TServiceClass>);
-    method public static <TServiceClass> void registerStaticService(@NonNull String, @NonNull Class<TServiceClass>, @NonNull android.app.SystemServiceRegistry.StaticServiceProducerWithBinder<TServiceClass>);
-    method public static <TServiceClass> void registerStaticService(@NonNull String, @NonNull Class<TServiceClass>, @NonNull android.app.SystemServiceRegistry.StaticServiceProducerWithoutBinder<TServiceClass>);
-  }
-
-  public static interface SystemServiceRegistry.ContextAwareServiceProducerWithBinder<TServiceClass> {
-    method @NonNull public TServiceClass createService(@NonNull android.content.Context, @NonNull android.os.IBinder);
-  }
-
-  public static interface SystemServiceRegistry.ContextAwareServiceProducerWithoutBinder<TServiceClass> {
-    method @NonNull public TServiceClass createService(@NonNull android.content.Context);
-  }
-
-  public static interface SystemServiceRegistry.StaticServiceProducerWithBinder<TServiceClass> {
-    method @NonNull public TServiceClass createService(@NonNull android.os.IBinder);
-  }
-
-  public static interface SystemServiceRegistry.StaticServiceProducerWithoutBinder<TServiceClass> {
-    method @NonNull public TServiceClass createService();
-  }
-
-  public class UiModeManager {
-    method @RequiresPermission(android.Manifest.permission.ENTER_CAR_MODE_PRIORITIZED) public void enableCarMode(@IntRange(from=0) int, int);
-    field public static final String ACTION_ENTER_CAR_MODE_PRIORITIZED = "android.app.action.ENTER_CAR_MODE_PRIORITIZED";
-    field public static final String ACTION_EXIT_CAR_MODE_PRIORITIZED = "android.app.action.EXIT_CAR_MODE_PRIORITIZED";
-    field public static final int DEFAULT_PRIORITY = 0; // 0x0
-    field public static final String EXTRA_CALLING_PACKAGE = "android.app.extra.CALLING_PACKAGE";
-    field public static final String EXTRA_PRIORITY = "android.app.extra.PRIORITY";
-  }
-
-  public final class Vr2dDisplayProperties implements android.os.Parcelable {
-    ctor public Vr2dDisplayProperties(int, int, int);
-    method public int describeContents();
-    method public void dump(@NonNull java.io.PrintWriter, @NonNull String);
-    method public int getAddedFlags();
-    method public int getDpi();
-    method public int getHeight();
-    method public int getRemovedFlags();
-    method public int getWidth();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.Vr2dDisplayProperties> CREATOR;
-    field public static final int FLAG_VIRTUAL_DISPLAY_ENABLED = 1; // 0x1
-  }
-
-  public static final class Vr2dDisplayProperties.Builder {
-    ctor public Vr2dDisplayProperties.Builder();
-    method @NonNull public android.app.Vr2dDisplayProperties.Builder addFlags(int);
-    method @NonNull public android.app.Vr2dDisplayProperties build();
-    method @NonNull public android.app.Vr2dDisplayProperties.Builder removeFlags(int);
-    method @NonNull public android.app.Vr2dDisplayProperties.Builder setDimensions(int, int, int);
-    method @NonNull public android.app.Vr2dDisplayProperties.Builder setEnabled(boolean);
-  }
-
-  public class VrManager {
-    method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public int getVr2dDisplayId();
-    method @RequiresPermission(anyOf={android.Manifest.permission.RESTRICTED_VR_ACCESS, "android.permission.ACCESS_VR_STATE"}) public boolean isPersistentVrModeEnabled();
-    method @RequiresPermission(anyOf={android.Manifest.permission.RESTRICTED_VR_ACCESS, "android.permission.ACCESS_VR_STATE"}) public boolean isVrModeEnabled();
-    method @RequiresPermission(anyOf={android.Manifest.permission.RESTRICTED_VR_ACCESS, "android.permission.ACCESS_VR_STATE"}) public void registerVrStateCallback(@NonNull java.util.concurrent.Executor, @NonNull android.app.VrStateCallback);
-    method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public void setAndBindVrCompositor(android.content.ComponentName);
-    method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public void setPersistentVrModeEnabled(boolean);
-    method @RequiresPermission("android.permission.ACCESS_VR_MANAGER") public void setStandbyEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public void setVr2dDisplayProperties(@NonNull android.app.Vr2dDisplayProperties);
-    method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public void setVrInputMethod(@Nullable android.content.ComponentName);
-    method @RequiresPermission(anyOf={android.Manifest.permission.RESTRICTED_VR_ACCESS, "android.permission.ACCESS_VR_STATE"}) public void unregisterVrStateCallback(@NonNull android.app.VrStateCallback);
-  }
-
-  public abstract class VrStateCallback {
-    ctor public VrStateCallback();
-    method public void onPersistentVrStateChanged(boolean);
-    method public void onVrStateChanged(boolean);
-  }
-
-  public final class WallpaperColors implements android.os.Parcelable {
-    ctor public WallpaperColors(@NonNull android.graphics.Color, @Nullable android.graphics.Color, @Nullable android.graphics.Color, int);
-    method public int getColorHints();
-    field public static final int HINT_SUPPORTS_DARK_TEXT = 1; // 0x1
-    field public static final int HINT_SUPPORTS_DARK_THEME = 2; // 0x2
-  }
-
-  public final class WallpaperInfo implements android.os.Parcelable {
-    method public boolean supportsAmbientMode();
-  }
-
-  public class WallpaperManager {
-    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public void clearWallpaper(int, int);
-    method public void setDisplayOffset(android.os.IBinder, int, int);
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER_COMPONENT) public boolean setWallpaperComponent(android.content.ComponentName);
-  }
-
-}
-
-package android.app.admin {
-
-  public class DevicePolicyKeyguardService extends android.app.Service {
-    ctor public DevicePolicyKeyguardService();
-    method @Nullable public void dismiss();
-    method @Nullable public final android.os.IBinder onBind(@Nullable android.content.Intent);
-    method @Nullable public android.view.SurfaceControlViewHost.SurfacePackage onCreateKeyguardSurface(@NonNull android.os.IBinder);
-  }
-
-  public class DevicePolicyManager {
-    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public boolean getBluetoothContactSharingDisabled(@NonNull android.os.UserHandle);
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public String getDeviceOwner();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public android.content.ComponentName getDeviceOwnerComponentOnAnyUser();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public String getDeviceOwnerNameOnAnyUser();
-    method @Nullable public CharSequence getDeviceOwnerOrganizationName();
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public android.os.UserHandle getDeviceOwnerUser();
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public java.util.List<java.lang.String> getPermittedAccessibilityServices(int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public java.util.List<java.lang.String> getPermittedInputMethodsForCurrentUser();
-    method @Nullable public android.content.ComponentName getProfileOwner() throws java.lang.IllegalArgumentException;
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public String getProfileOwnerNameAsUser(int) throws java.lang.IllegalArgumentException;
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public int getUserProvisioningState();
-    method public boolean isDeviceManaged();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isDeviceProvisioned();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isDeviceProvisioningConfigApplied();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isManagedKiosk();
-    method public boolean isSecondaryLockscreenEnabled(@NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isUnattendedManagedKiosk();
-    method @RequiresPermission("android.permission.NOTIFY_PENDING_SYSTEM_UPDATE") public void notifyPendingSystemUpdate(long);
-    method @RequiresPermission("android.permission.NOTIFY_PENDING_SYSTEM_UPDATE") public void notifyPendingSystemUpdate(long, boolean);
-    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public boolean packageHasActiveAdmins(String);
-    method @Deprecated @RequiresPermission("android.permission.MANAGE_DEVICE_ADMINS") public boolean setActiveProfileOwner(@NonNull android.content.ComponentName, String) throws java.lang.IllegalArgumentException;
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public void setDeviceProvisioningConfigApplied();
-    method @Deprecated @RequiresPermission(value=android.Manifest.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS, conditional=true) public void setProfileOwnerCanAccessDeviceIds(@NonNull android.content.ComponentName);
-    method public void setSecondaryLockscreenEnabled(@NonNull android.content.ComponentName, boolean);
-    field public static final String ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_ALLOWED = "android.account.DEVICE_OR_PROFILE_OWNER_ALLOWED";
-    field public static final String ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_DISALLOWED = "android.account.DEVICE_OR_PROFILE_OWNER_DISALLOWED";
-    field public static final String ACTION_BIND_SECONDARY_LOCKSCREEN_SERVICE = "android.app.action.BIND_SECONDARY_LOCKSCREEN_SERVICE";
-    field public static final String ACTION_PROVISION_FINALIZATION = "android.app.action.PROVISION_FINALIZATION";
-    field public static final String ACTION_PROVISION_FINANCED_DEVICE = "android.app.action.PROVISION_FINANCED_DEVICE";
-    field public static final String ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE = "android.app.action.PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE";
-    field @RequiresPermission(android.Manifest.permission.MANAGE_FACTORY_RESET_PROTECTION) public static final String ACTION_RESET_PROTECTION_POLICY_CHANGED = "android.app.action.RESET_PROTECTION_POLICY_CHANGED";
-    field public static final String ACTION_SET_PROFILE_OWNER = "android.app.action.SET_PROFILE_OWNER";
-    field public static final String ACTION_STATE_USER_SETUP_COMPLETE = "android.app.action.STATE_USER_SETUP_COMPLETE";
-    field public static final String EXTRA_PROFILE_OWNER_NAME = "android.app.extra.PROFILE_OWNER_NAME";
-    field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_ICON_URI = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_ICON_URI";
-    field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_LABEL = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_LABEL";
-    field public static final String EXTRA_PROVISIONING_ORGANIZATION_NAME = "android.app.extra.PROVISIONING_ORGANIZATION_NAME";
-    field public static final String EXTRA_PROVISIONING_SUPPORT_URL = "android.app.extra.PROVISIONING_SUPPORT_URL";
-    field public static final String EXTRA_PROVISIONING_TRIGGER = "android.app.extra.PROVISIONING_TRIGGER";
-    field public static final String EXTRA_RESTRICTION = "android.app.extra.RESTRICTION";
-    field public static final int PROVISIONING_TRIGGER_CLOUD_ENROLLMENT = 1; // 0x1
-    field public static final int PROVISIONING_TRIGGER_PERSISTENT_DEVICE_OWNER = 3; // 0x3
-    field public static final int PROVISIONING_TRIGGER_QR_CODE = 2; // 0x2
-    field public static final int PROVISIONING_TRIGGER_UNSPECIFIED = 0; // 0x0
-    field public static final int STATE_USER_PROFILE_COMPLETE = 4; // 0x4
-    field public static final int STATE_USER_SETUP_COMPLETE = 2; // 0x2
-    field public static final int STATE_USER_SETUP_FINALIZED = 3; // 0x3
-    field public static final int STATE_USER_SETUP_INCOMPLETE = 1; // 0x1
-    field public static final int STATE_USER_UNMANAGED = 0; // 0x0
-  }
-
-  public final class SystemUpdatePolicy implements android.os.Parcelable {
-    method public android.app.admin.SystemUpdatePolicy.InstallationOption getInstallationOptionAt(long);
-    field public static final int TYPE_PAUSE = 4; // 0x4
-  }
-
-  public static class SystemUpdatePolicy.InstallationOption {
-    method public long getEffectiveTime();
-    method public int getType();
-  }
-
-}
-
-package android.app.assist {
-
-  public static class AssistStructure.ViewNode {
-    ctor public AssistStructure.ViewNode();
-  }
-
-}
-
-package android.app.backup {
-
-  public class BackupDataInput {
-    ctor public BackupDataInput(java.io.FileDescriptor);
-  }
-
-  public class BackupDataOutput {
-    ctor public BackupDataOutput(java.io.FileDescriptor);
-    ctor public BackupDataOutput(java.io.FileDescriptor, long);
-  }
-
-  public class BackupManager {
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public void backupNow();
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public android.app.backup.RestoreSession beginRestoreSession();
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public void cancelBackups();
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public void excludeKeysFromRestore(@NonNull String, @NonNull java.util.List<java.lang.String>);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public long getAvailableRestoreToken(String);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public android.content.Intent getConfigurationIntent(String);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public String getCurrentTransport();
-    method @Nullable @RequiresPermission(android.Manifest.permission.BACKUP) public android.content.ComponentName getCurrentTransportComponent();
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public android.content.Intent getDataManagementIntent(String);
-    method @Nullable @RequiresPermission(android.Manifest.permission.BACKUP) public CharSequence getDataManagementIntentLabel(@NonNull String);
-    method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.BACKUP) public String getDataManagementLabel(@NonNull String);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public String getDestinationString(String);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public boolean isAppEligibleForBackup(String);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public boolean isBackupEnabled();
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public boolean isBackupServiceActive(android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public String[] listAllTransports();
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public int requestBackup(String[], android.app.backup.BackupObserver);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public int requestBackup(String[], android.app.backup.BackupObserver, android.app.backup.BackupManagerMonitor, int);
-    method @Deprecated public int requestRestore(android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.BACKUP) public String selectBackupTransport(String);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public void selectBackupTransport(android.content.ComponentName, android.app.backup.SelectBackupTransportCallback);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public void setAncestralSerialNumber(long);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public void setAutoRestore(boolean);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public void setBackupEnabled(boolean);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.BACKUP) public void updateTransportAttributes(@NonNull android.content.ComponentName, @NonNull String, @Nullable android.content.Intent, @NonNull String, @Nullable android.content.Intent, @Nullable String);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public void updateTransportAttributes(@NonNull android.content.ComponentName, @NonNull String, @Nullable android.content.Intent, @NonNull String, @Nullable android.content.Intent, @Nullable CharSequence);
-    field public static final int ERROR_AGENT_FAILURE = -1003; // 0xfffffc15
-    field public static final int ERROR_BACKUP_CANCELLED = -2003; // 0xfffff82d
-    field public static final int ERROR_BACKUP_NOT_ALLOWED = -2001; // 0xfffff82f
-    field public static final int ERROR_PACKAGE_NOT_FOUND = -2002; // 0xfffff82e
-    field public static final int ERROR_TRANSPORT_ABORTED = -1000; // 0xfffffc18
-    field public static final int ERROR_TRANSPORT_INVALID = -2; // 0xfffffffe
-    field public static final int ERROR_TRANSPORT_PACKAGE_REJECTED = -1002; // 0xfffffc16
-    field public static final int ERROR_TRANSPORT_QUOTA_EXCEEDED = -1005; // 0xfffffc13
-    field public static final int ERROR_TRANSPORT_UNAVAILABLE = -1; // 0xffffffff
-    field public static final int FLAG_NON_INCREMENTAL_BACKUP = 1; // 0x1
-    field public static final String PACKAGE_MANAGER_SENTINEL = "@pm@";
-    field public static final int SUCCESS = 0; // 0x0
-  }
-
-  public class BackupManagerMonitor {
-    ctor public BackupManagerMonitor();
-    method public void onEvent(android.os.Bundle);
-    field public static final String EXTRA_LOG_CANCEL_ALL = "android.app.backup.extra.LOG_CANCEL_ALL";
-    field public static final String EXTRA_LOG_EVENT_CATEGORY = "android.app.backup.extra.LOG_EVENT_CATEGORY";
-    field public static final String EXTRA_LOG_EVENT_ID = "android.app.backup.extra.LOG_EVENT_ID";
-    field public static final String EXTRA_LOG_EVENT_PACKAGE_LONG_VERSION = "android.app.backup.extra.LOG_EVENT_PACKAGE_FULL_VERSION";
-    field public static final String EXTRA_LOG_EVENT_PACKAGE_NAME = "android.app.backup.extra.LOG_EVENT_PACKAGE_NAME";
-    field @Deprecated public static final String EXTRA_LOG_EVENT_PACKAGE_VERSION = "android.app.backup.extra.LOG_EVENT_PACKAGE_VERSION";
-    field public static final String EXTRA_LOG_EXCEPTION_FULL_BACKUP = "android.app.backup.extra.LOG_EXCEPTION_FULL_BACKUP";
-    field public static final String EXTRA_LOG_ILLEGAL_KEY = "android.app.backup.extra.LOG_ILLEGAL_KEY";
-    field public static final String EXTRA_LOG_MANIFEST_PACKAGE_NAME = "android.app.backup.extra.LOG_MANIFEST_PACKAGE_NAME";
-    field public static final String EXTRA_LOG_OLD_VERSION = "android.app.backup.extra.LOG_OLD_VERSION";
-    field public static final String EXTRA_LOG_POLICY_ALLOW_APKS = "android.app.backup.extra.LOG_POLICY_ALLOW_APKS";
-    field public static final String EXTRA_LOG_PREFLIGHT_ERROR = "android.app.backup.extra.LOG_PREFLIGHT_ERROR";
-    field public static final String EXTRA_LOG_RESTORE_ANYWAY = "android.app.backup.extra.LOG_RESTORE_ANYWAY";
-    field public static final String EXTRA_LOG_RESTORE_VERSION = "android.app.backup.extra.LOG_RESTORE_VERSION";
-    field public static final String EXTRA_LOG_WIDGET_PACKAGE_NAME = "android.app.backup.extra.LOG_WIDGET_PACKAGE_NAME";
-    field public static final int LOG_EVENT_CATEGORY_AGENT = 2; // 0x2
-    field public static final int LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY = 3; // 0x3
-    field public static final int LOG_EVENT_CATEGORY_TRANSPORT = 1; // 0x1
-    field public static final int LOG_EVENT_ID_APK_NOT_INSTALLED = 40; // 0x28
-    field public static final int LOG_EVENT_ID_APP_HAS_NO_AGENT = 28; // 0x1c
-    field public static final int LOG_EVENT_ID_BACKUP_DISABLED = 13; // 0xd
-    field public static final int LOG_EVENT_ID_CANNOT_RESTORE_WITHOUT_APK = 41; // 0x29
-    field public static final int LOG_EVENT_ID_CANT_FIND_AGENT = 30; // 0x1e
-    field public static final int LOG_EVENT_ID_CORRUPT_MANIFEST = 46; // 0x2e
-    field public static final int LOG_EVENT_ID_DEVICE_NOT_PROVISIONED = 14; // 0xe
-    field public static final int LOG_EVENT_ID_ERROR_PREFLIGHT = 16; // 0x10
-    field public static final int LOG_EVENT_ID_EXCEPTION_FULL_BACKUP = 19; // 0x13
-    field public static final int LOG_EVENT_ID_EXPECTED_DIFFERENT_PACKAGE = 43; // 0x2b
-    field public static final int LOG_EVENT_ID_FULL_BACKUP_CANCEL = 4; // 0x4
-    field public static final int LOG_EVENT_ID_FULL_RESTORE_ALLOW_BACKUP_FALSE = 39; // 0x27
-    field public static final int LOG_EVENT_ID_FULL_RESTORE_SIGNATURE_MISMATCH = 37; // 0x25
-    field public static final int LOG_EVENT_ID_FULL_RESTORE_TIMEOUT = 45; // 0x2d
-    field public static final int LOG_EVENT_ID_ILLEGAL_KEY = 5; // 0x5
-    field public static final int LOG_EVENT_ID_KEY_VALUE_BACKUP_CANCEL = 21; // 0x15
-    field public static final int LOG_EVENT_ID_KEY_VALUE_RESTORE_TIMEOUT = 31; // 0x1f
-    field public static final int LOG_EVENT_ID_LOST_TRANSPORT = 25; // 0x19
-    field public static final int LOG_EVENT_ID_MISSING_SIGNATURE = 42; // 0x2a
-    field public static final int LOG_EVENT_ID_NO_DATA_TO_SEND = 7; // 0x7
-    field public static final int LOG_EVENT_ID_NO_PACKAGES = 49; // 0x31
-    field public static final int LOG_EVENT_ID_NO_PM_METADATA_RECEIVED = 23; // 0x17
-    field public static final int LOG_EVENT_ID_NO_RESTORE_METADATA_AVAILABLE = 22; // 0x16
-    field public static final int LOG_EVENT_ID_PACKAGE_INELIGIBLE = 9; // 0x9
-    field public static final int LOG_EVENT_ID_PACKAGE_KEY_VALUE_PARTICIPANT = 10; // 0xa
-    field public static final int LOG_EVENT_ID_PACKAGE_NOT_FOUND = 12; // 0xc
-    field public static final int LOG_EVENT_ID_PACKAGE_NOT_PRESENT = 26; // 0x1a
-    field public static final int LOG_EVENT_ID_PACKAGE_STOPPED = 11; // 0xb
-    field public static final int LOG_EVENT_ID_PACKAGE_TRANSPORT_NOT_PRESENT = 15; // 0xf
-    field public static final int LOG_EVENT_ID_PM_AGENT_HAS_NO_METADATA = 24; // 0x18
-    field public static final int LOG_EVENT_ID_QUOTA_HIT_PREFLIGHT = 18; // 0x12
-    field public static final int LOG_EVENT_ID_RESTORE_ANY_VERSION = 34; // 0x22
-    field public static final int LOG_EVENT_ID_RESTORE_VERSION_HIGHER = 27; // 0x1b
-    field public static final int LOG_EVENT_ID_SIGNATURE_MISMATCH = 29; // 0x1d
-    field public static final int LOG_EVENT_ID_SYSTEM_APP_NO_AGENT = 38; // 0x26
-    field public static final int LOG_EVENT_ID_TRANSPORT_IS_NULL = 50; // 0x32
-    field public static final int LOG_EVENT_ID_TRANSPORT_NON_INCREMENTAL_BACKUP_REQUIRED = 51; // 0x33
-    field public static final int LOG_EVENT_ID_UNKNOWN_VERSION = 44; // 0x2c
-    field public static final int LOG_EVENT_ID_VERSIONS_MATCH = 35; // 0x23
-    field public static final int LOG_EVENT_ID_VERSION_OF_BACKUP_OLDER = 36; // 0x24
-    field public static final int LOG_EVENT_ID_WIDGET_METADATA_MISMATCH = 47; // 0x2f
-    field public static final int LOG_EVENT_ID_WIDGET_UNKNOWN_VERSION = 48; // 0x30
-  }
-
-  public abstract class BackupObserver {
-    ctor public BackupObserver();
-    method public void backupFinished(int);
-    method public void onResult(String, int);
-    method public void onUpdate(String, android.app.backup.BackupProgress);
-  }
-
-  public class BackupProgress implements android.os.Parcelable {
-    ctor public BackupProgress(long, long);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.backup.BackupProgress> CREATOR;
-    field public final long bytesExpected;
-    field public final long bytesTransferred;
-  }
-
-  public class BackupTransport {
-    ctor public BackupTransport();
-    method public int abortFullRestore();
-    method public void cancelFullBackup();
-    method public int checkFullBackupSize(long);
-    method public int clearBackupData(android.content.pm.PackageInfo);
-    method public android.content.Intent configurationIntent();
-    method public String currentDestinationString();
-    method public android.content.Intent dataManagementIntent();
-    method @Nullable public CharSequence dataManagementIntentLabel();
-    method @Deprecated @Nullable public String dataManagementLabel();
-    method public int finishBackup();
-    method public void finishRestore();
-    method public android.app.backup.RestoreSet[] getAvailableRestoreSets();
-    method public long getBackupQuota(String, boolean);
-    method public android.os.IBinder getBinder();
-    method public long getCurrentRestoreSet();
-    method public int getNextFullRestoreDataChunk(android.os.ParcelFileDescriptor);
-    method public int getRestoreData(android.os.ParcelFileDescriptor);
-    method public int getTransportFlags();
-    method public int initializeDevice();
-    method public boolean isAppEligibleForBackup(android.content.pm.PackageInfo, boolean);
-    method public String name();
-    method public android.app.backup.RestoreDescription nextRestorePackage();
-    method public int performBackup(android.content.pm.PackageInfo, android.os.ParcelFileDescriptor, int);
-    method public int performBackup(android.content.pm.PackageInfo, android.os.ParcelFileDescriptor);
-    method public int performFullBackup(android.content.pm.PackageInfo, android.os.ParcelFileDescriptor, int);
-    method public int performFullBackup(android.content.pm.PackageInfo, android.os.ParcelFileDescriptor);
-    method public long requestBackupTime();
-    method public long requestFullBackupTime();
-    method public int sendBackupData(int);
-    method public int startRestore(long, android.content.pm.PackageInfo[]);
-    method public String transportDirName();
-    field public static final int AGENT_ERROR = -1003; // 0xfffffc15
-    field public static final int AGENT_UNKNOWN = -1004; // 0xfffffc14
-    field public static final String EXTRA_TRANSPORT_REGISTRATION = "android.app.backup.extra.TRANSPORT_REGISTRATION";
-    field public static final int FLAG_DATA_NOT_CHANGED = 8; // 0x8
-    field public static final int FLAG_INCREMENTAL = 2; // 0x2
-    field public static final int FLAG_NON_INCREMENTAL = 4; // 0x4
-    field public static final int FLAG_USER_INITIATED = 1; // 0x1
-    field public static final int NO_MORE_DATA = -1; // 0xffffffff
-    field public static final int TRANSPORT_ERROR = -1000; // 0xfffffc18
-    field public static final int TRANSPORT_NON_INCREMENTAL_BACKUP_REQUIRED = -1006; // 0xfffffc12
-    field public static final int TRANSPORT_NOT_INITIALIZED = -1001; // 0xfffffc17
-    field public static final int TRANSPORT_OK = 0; // 0x0
-    field public static final int TRANSPORT_PACKAGE_REJECTED = -1002; // 0xfffffc16
-    field public static final int TRANSPORT_QUOTA_EXCEEDED = -1005; // 0xfffffc13
-  }
-
-  public class RestoreDescription implements android.os.Parcelable {
-    ctor public RestoreDescription(String, int);
-    method public int describeContents();
-    method public int getDataType();
-    method public String getPackageName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.backup.RestoreDescription> CREATOR;
-    field public static final android.app.backup.RestoreDescription NO_MORE_PACKAGES;
-    field public static final int TYPE_FULL_STREAM = 2; // 0x2
-    field public static final int TYPE_KEY_VALUE = 1; // 0x1
-  }
-
-  public abstract class RestoreObserver {
-    method public void restoreSetsAvailable(android.app.backup.RestoreSet[]);
-  }
-
-  public class RestoreSession {
-    method public void endRestoreSession();
-    method public int getAvailableRestoreSets(android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor);
-    method public int getAvailableRestoreSets(android.app.backup.RestoreObserver);
-    method public int restoreAll(long, android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor);
-    method public int restoreAll(long, android.app.backup.RestoreObserver);
-    method public int restorePackage(String, android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor);
-    method public int restorePackage(String, android.app.backup.RestoreObserver);
-    method public int restorePackages(long, @Nullable android.app.backup.RestoreObserver, @NonNull java.util.Set<java.lang.String>, @Nullable android.app.backup.BackupManagerMonitor);
-    method public int restorePackages(long, @Nullable android.app.backup.RestoreObserver, @NonNull java.util.Set<java.lang.String>);
-  }
-
-  public class RestoreSet implements android.os.Parcelable {
-    ctor public RestoreSet();
-    ctor public RestoreSet(String, String, long);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.backup.RestoreSet> CREATOR;
-    field public String device;
-    field public String name;
-    field public long token;
-  }
-
-  public abstract class SelectBackupTransportCallback {
-    ctor public SelectBackupTransportCallback();
-    method public void onFailure(int);
-    method public void onSuccess(String);
-  }
-
-}
-
-package android.app.compat {
-
-  public final class CompatChanges {
-    method public static boolean isChangeEnabled(long);
-    method @RequiresPermission(allOf={"android.permission.READ_COMPAT_CHANGE_CONFIG", "android.permission.LOG_COMPAT_CHANGE"}) public static boolean isChangeEnabled(long, @NonNull String, @NonNull android.os.UserHandle);
-    method @RequiresPermission(allOf={"android.permission.READ_COMPAT_CHANGE_CONFIG", "android.permission.LOG_COMPAT_CHANGE"}) public static boolean isChangeEnabled(long, int);
-  }
-
-}
-
-package android.app.contentsuggestions {
-
-  public final class ClassificationsRequest implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.os.Bundle getExtras();
-    method @NonNull public java.util.List<android.app.contentsuggestions.ContentSelection> getSelections();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.contentsuggestions.ClassificationsRequest> CREATOR;
-  }
-
-  public static final class ClassificationsRequest.Builder {
-    ctor public ClassificationsRequest.Builder(@NonNull java.util.List<android.app.contentsuggestions.ContentSelection>);
-    method @NonNull public android.app.contentsuggestions.ClassificationsRequest build();
-    method @NonNull public android.app.contentsuggestions.ClassificationsRequest.Builder setExtras(@NonNull android.os.Bundle);
-  }
-
-  public final class ContentClassification implements android.os.Parcelable {
-    ctor public ContentClassification(@NonNull String, @NonNull android.os.Bundle);
-    method public int describeContents();
-    method @NonNull public android.os.Bundle getExtras();
-    method @NonNull public String getId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.contentsuggestions.ContentClassification> CREATOR;
-  }
-
-  public final class ContentSelection implements android.os.Parcelable {
-    ctor public ContentSelection(@NonNull String, @NonNull android.os.Bundle);
-    method public int describeContents();
-    method @NonNull public android.os.Bundle getExtras();
-    method @NonNull public String getId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.contentsuggestions.ContentSelection> CREATOR;
-  }
-
-  public final class ContentSuggestionsManager {
-    method public void classifyContentSelections(@NonNull android.app.contentsuggestions.ClassificationsRequest, @NonNull java.util.concurrent.Executor, @NonNull android.app.contentsuggestions.ContentSuggestionsManager.ClassificationsCallback);
-    method public boolean isEnabled();
-    method public void notifyInteraction(@NonNull String, @NonNull android.os.Bundle);
-    method public void provideContextImage(@NonNull android.graphics.Bitmap, @NonNull android.os.Bundle);
-    method public void provideContextImage(int, @NonNull android.os.Bundle);
-    method public void suggestContentSelections(@NonNull android.app.contentsuggestions.SelectionsRequest, @NonNull java.util.concurrent.Executor, @NonNull android.app.contentsuggestions.ContentSuggestionsManager.SelectionsCallback);
-  }
-
-  public static interface ContentSuggestionsManager.ClassificationsCallback {
-    method public void onContentClassificationsAvailable(int, @NonNull java.util.List<android.app.contentsuggestions.ContentClassification>);
-  }
-
-  public static interface ContentSuggestionsManager.SelectionsCallback {
-    method public void onContentSelectionsAvailable(int, @NonNull java.util.List<android.app.contentsuggestions.ContentSelection>);
-  }
-
-  public final class SelectionsRequest implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.os.Bundle getExtras();
-    method @Nullable public android.graphics.Point getInterestPoint();
-    method public int getTaskId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.contentsuggestions.SelectionsRequest> CREATOR;
-  }
-
-  public static final class SelectionsRequest.Builder {
-    ctor public SelectionsRequest.Builder(int);
-    method @NonNull public android.app.contentsuggestions.SelectionsRequest build();
-    method @NonNull public android.app.contentsuggestions.SelectionsRequest.Builder setExtras(@NonNull android.os.Bundle);
-    method @NonNull public android.app.contentsuggestions.SelectionsRequest.Builder setInterestPoint(@NonNull android.graphics.Point);
-  }
-
-}
-
-package android.app.job {
-
-  public abstract class JobScheduler {
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public abstract int scheduleAsPackage(@NonNull android.app.job.JobInfo, @NonNull String, int, String);
-  }
-
-  public class JobSchedulerFrameworkInitializer {
-    method public static void registerServiceWrappers();
-  }
-
-}
-
-package android.app.prediction {
-
-  public final class AppPredictionContext implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.os.Bundle getExtras();
-    method @NonNull public String getPackageName();
-    method @IntRange(from=0) public int getPredictedTargetCount();
-    method @NonNull public String getUiSurface();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.prediction.AppPredictionContext> CREATOR;
-  }
-
-  public static final class AppPredictionContext.Builder {
-    ctor public AppPredictionContext.Builder(@NonNull android.content.Context);
-    method @NonNull public android.app.prediction.AppPredictionContext build();
-    method @NonNull public android.app.prediction.AppPredictionContext.Builder setExtras(@Nullable android.os.Bundle);
-    method @NonNull public android.app.prediction.AppPredictionContext.Builder setPredictedTargetCount(@IntRange(from=0) int);
-    method @NonNull public android.app.prediction.AppPredictionContext.Builder setUiSurface(@NonNull String);
-  }
-
-  public final class AppPredictionManager {
-    method @NonNull public android.app.prediction.AppPredictor createAppPredictionSession(@NonNull android.app.prediction.AppPredictionContext);
-  }
-
-  public final class AppPredictionSessionId implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.prediction.AppPredictionSessionId> CREATOR;
-  }
-
-  public final class AppPredictor {
-    method public void destroy();
-    method public void notifyAppTargetEvent(@NonNull android.app.prediction.AppTargetEvent);
-    method public void notifyLaunchLocationShown(@NonNull String, @NonNull java.util.List<android.app.prediction.AppTargetId>);
-    method public void registerPredictionUpdates(@NonNull java.util.concurrent.Executor, @NonNull android.app.prediction.AppPredictor.Callback);
-    method public void requestPredictionUpdate();
-    method @Nullable public void sortTargets(@NonNull java.util.List<android.app.prediction.AppTarget>, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.util.List<android.app.prediction.AppTarget>>);
-    method public void unregisterPredictionUpdates(@NonNull android.app.prediction.AppPredictor.Callback);
-  }
-
-  public static interface AppPredictor.Callback {
-    method public void onTargetsAvailable(@NonNull java.util.List<android.app.prediction.AppTarget>);
-  }
-
-  public final class AppTarget implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getClassName();
-    method @NonNull public android.app.prediction.AppTargetId getId();
-    method @NonNull public String getPackageName();
-    method @IntRange(from=0) public int getRank();
-    method @Nullable public android.content.pm.ShortcutInfo getShortcutInfo();
-    method @NonNull public android.os.UserHandle getUser();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.prediction.AppTarget> CREATOR;
-  }
-
-  public static final class AppTarget.Builder {
-    ctor public AppTarget.Builder(@NonNull android.app.prediction.AppTargetId, @NonNull String, @NonNull android.os.UserHandle);
-    ctor public AppTarget.Builder(@NonNull android.app.prediction.AppTargetId, @NonNull android.content.pm.ShortcutInfo);
-    method @NonNull public android.app.prediction.AppTarget build();
-    method @NonNull public android.app.prediction.AppTarget.Builder setClassName(@NonNull String);
-    method @NonNull public android.app.prediction.AppTarget.Builder setRank(@IntRange(from=0) int);
-  }
-
-  public final class AppTargetEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAction();
-    method @Nullable public String getLaunchLocation();
-    method @Nullable public android.app.prediction.AppTarget getTarget();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ACTION_DISMISS = 2; // 0x2
-    field public static final int ACTION_LAUNCH = 1; // 0x1
-    field public static final int ACTION_PIN = 3; // 0x3
-    field public static final int ACTION_UNPIN = 4; // 0x4
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.prediction.AppTargetEvent> CREATOR;
-  }
-
-  public static final class AppTargetEvent.Builder {
-    ctor public AppTargetEvent.Builder(@Nullable android.app.prediction.AppTarget, int);
-    method @NonNull public android.app.prediction.AppTargetEvent build();
-    method @NonNull public android.app.prediction.AppTargetEvent.Builder setLaunchLocation(@Nullable String);
-  }
-
-  public final class AppTargetId implements android.os.Parcelable {
-    ctor public AppTargetId(@NonNull String);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.prediction.AppTargetId> CREATOR;
-  }
-
-}
-
-package android.app.role {
-
-  public interface OnRoleHoldersChangedListener {
-    method public void onRoleHoldersChanged(@NonNull String, @NonNull android.os.UserHandle);
-  }
-
-  public abstract class RoleControllerService extends android.app.Service {
-    ctor public RoleControllerService();
-    method @WorkerThread public abstract boolean onAddRoleHolder(@NonNull String, @NonNull String, int);
-    method @Nullable public final android.os.IBinder onBind(@Nullable android.content.Intent);
-    method @WorkerThread public abstract boolean onClearRoleHolders(@NonNull String, int);
-    method @WorkerThread public abstract boolean onGrantDefaultRoles();
-    method @Deprecated public abstract boolean onIsApplicationQualifiedForRole(@NonNull String, @NonNull String);
-    method public boolean onIsApplicationVisibleForRole(@NonNull String, @NonNull String);
-    method public abstract boolean onIsRoleVisible(@NonNull String);
-    method @WorkerThread public abstract boolean onRemoveRoleHolder(@NonNull String, @NonNull String, int);
-    field public static final String SERVICE_INTERFACE = "android.app.role.RoleControllerService";
-  }
-
-  public final class RoleManager {
-    method @RequiresPermission(android.Manifest.permission.OBSERVE_ROLE_HOLDERS) public void addOnRoleHoldersChangedListenerAsUser(@NonNull java.util.concurrent.Executor, @NonNull android.app.role.OnRoleHoldersChangedListener, @NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void addRoleHolderAsUser(@NonNull String, @NonNull String, int, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public boolean addRoleHolderFromController(@NonNull String, @NonNull String);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void clearRoleHoldersAsUser(@NonNull String, int, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @NonNull @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public java.util.List<java.lang.String> getHeldRolesFromController(@NonNull String);
-    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public java.util.List<java.lang.String> getRoleHolders(@NonNull String);
-    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public java.util.List<java.lang.String> getRoleHoldersAsUser(@NonNull String, @NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.OBSERVE_ROLE_HOLDERS) public void removeOnRoleHoldersChangedListenerAsUser(@NonNull android.app.role.OnRoleHoldersChangedListener, @NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void removeRoleHolderAsUser(@NonNull String, @NonNull String, int, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public boolean removeRoleHolderFromController(@NonNull String, @NonNull String);
-    method @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public void setRoleNamesFromController(@NonNull java.util.List<java.lang.String>);
-    field public static final int MANAGE_HOLDERS_FLAG_DONT_KILL_APP = 1; // 0x1
-  }
-
-}
-
-package android.app.usage {
-
-  public final class CacheQuotaHint implements android.os.Parcelable {
-    ctor public CacheQuotaHint(android.app.usage.CacheQuotaHint.Builder);
-    method public int describeContents();
-    method public long getQuota();
-    method public int getUid();
-    method public android.app.usage.UsageStats getUsageStats();
-    method public String getVolumeUuid();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.usage.CacheQuotaHint> CREATOR;
-    field public static final long QUOTA_NOT_SET = -1L; // 0xffffffffffffffffL
-  }
-
-  public static final class CacheQuotaHint.Builder {
-    ctor public CacheQuotaHint.Builder();
-    ctor public CacheQuotaHint.Builder(android.app.usage.CacheQuotaHint);
-    method @NonNull public android.app.usage.CacheQuotaHint build();
-    method @NonNull public android.app.usage.CacheQuotaHint.Builder setQuota(long);
-    method @NonNull public android.app.usage.CacheQuotaHint.Builder setUid(int);
-    method @NonNull public android.app.usage.CacheQuotaHint.Builder setUsageStats(@Nullable android.app.usage.UsageStats);
-    method @NonNull public android.app.usage.CacheQuotaHint.Builder setVolumeUuid(@Nullable String);
-  }
-
-  public abstract class CacheQuotaService extends android.app.Service {
-    ctor public CacheQuotaService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public abstract java.util.List<android.app.usage.CacheQuotaHint> onComputeCacheQuotaHints(java.util.List<android.app.usage.CacheQuotaHint>);
-    field public static final String SERVICE_INTERFACE = "android.app.usage.CacheQuotaService";
-  }
-
-  public class NetworkStatsManager {
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STATS_PROVIDER, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void registerNetworkStatsProvider(@NonNull String, @NonNull android.net.netstats.provider.NetworkStatsProvider);
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STATS_PROVIDER, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void unregisterNetworkStatsProvider(@NonNull android.net.netstats.provider.NetworkStatsProvider);
-  }
-
-  public static final class UsageEvents.Event {
-    method public int getInstanceId();
-    method @Nullable public String getNotificationChannelId();
-    method @Nullable public String getTaskRootClassName();
-    method @Nullable public String getTaskRootPackageName();
-    method public boolean isInstantApp();
-    field public static final int NOTIFICATION_INTERRUPTION = 12; // 0xc
-    field public static final int NOTIFICATION_SEEN = 10; // 0xa
-    field public static final int SLICE_PINNED = 14; // 0xe
-    field public static final int SLICE_PINNED_PRIV = 13; // 0xd
-    field public static final int SYSTEM_INTERACTION = 6; // 0x6
-  }
-
-  public final class UsageStats implements android.os.Parcelable {
-    method public int getAppLaunchCount();
-  }
-
-  public final class UsageStatsManager {
-    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int getAppStandbyBucket(String);
-    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public java.util.Map<java.lang.String,java.lang.Integer> getAppStandbyBuckets();
-    method public int getUsageSource();
-    method @RequiresPermission(android.Manifest.permission.BIND_CARRIER_SERVICES) public void onCarrierPrivilegedAppsChanged();
-    method @RequiresPermission(allOf={android.Manifest.permission.SUSPEND_APPS, android.Manifest.permission.OBSERVE_APP_USAGE}) public void registerAppUsageLimitObserver(int, @NonNull String[], @NonNull java.time.Duration, @NonNull java.time.Duration, @Nullable android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.OBSERVE_APP_USAGE) public void registerAppUsageObserver(int, @NonNull String[], long, @NonNull java.util.concurrent.TimeUnit, @NonNull android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.OBSERVE_APP_USAGE) public void registerUsageSessionObserver(int, @NonNull String[], @NonNull java.time.Duration, @NonNull java.time.Duration, @NonNull android.app.PendingIntent, @Nullable android.app.PendingIntent);
-    method public void reportUsageStart(@NonNull android.app.Activity, @NonNull String);
-    method public void reportUsageStart(@NonNull android.app.Activity, @NonNull String, long);
-    method public void reportUsageStop(@NonNull android.app.Activity, @NonNull String);
-    method @RequiresPermission(android.Manifest.permission.CHANGE_APP_IDLE_STATE) public void setAppStandbyBucket(String, int);
-    method @RequiresPermission(android.Manifest.permission.CHANGE_APP_IDLE_STATE) public void setAppStandbyBuckets(java.util.Map<java.lang.String,java.lang.Integer>);
-    method @RequiresPermission(allOf={android.Manifest.permission.SUSPEND_APPS, android.Manifest.permission.OBSERVE_APP_USAGE}) public void unregisterAppUsageLimitObserver(int);
-    method @RequiresPermission(android.Manifest.permission.OBSERVE_APP_USAGE) public void unregisterAppUsageObserver(int);
-    method @RequiresPermission(android.Manifest.permission.OBSERVE_APP_USAGE) public void unregisterUsageSessionObserver(int);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST) public void whitelistAppTemporarily(String, long, android.os.UserHandle);
-    field public static final String EXTRA_OBSERVER_ID = "android.app.usage.extra.OBSERVER_ID";
-    field public static final String EXTRA_TIME_LIMIT = "android.app.usage.extra.TIME_LIMIT";
-    field public static final String EXTRA_TIME_USED = "android.app.usage.extra.TIME_USED";
-    field public static final int STANDBY_BUCKET_EXEMPTED = 5; // 0x5
-    field public static final int STANDBY_BUCKET_NEVER = 50; // 0x32
-    field public static final int USAGE_SOURCE_CURRENT_ACTIVITY = 2; // 0x2
-    field public static final int USAGE_SOURCE_TASK_ROOT_ACTIVITY = 1; // 0x1
-  }
-
-}
-
-package android.bluetooth {
-
-  public final class BluetoothA2dp implements android.bluetooth.BluetoothProfile {
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
-    field public static final int OPTIONAL_CODECS_NOT_SUPPORTED = 0; // 0x0
-    field public static final int OPTIONAL_CODECS_PREF_DISABLED = 0; // 0x0
-    field public static final int OPTIONAL_CODECS_PREF_ENABLED = 1; // 0x1
-    field public static final int OPTIONAL_CODECS_PREF_UNKNOWN = -1; // 0xffffffff
-    field public static final int OPTIONAL_CODECS_SUPPORTED = 1; // 0x1
-    field public static final int OPTIONAL_CODECS_SUPPORT_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public final class BluetoothA2dpSink implements android.bluetooth.BluetoothProfile {
-    method public void finalize();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean isAudioPlaying(@NonNull android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
-    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.a2dp-sink.profile.action.CONNECTION_STATE_CHANGED";
-  }
-
-  public final class BluetoothAdapter {
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean addOnMetadataChangedListener(@NonNull android.bluetooth.BluetoothDevice, @NonNull java.util.concurrent.Executor, @NonNull android.bluetooth.BluetoothAdapter.OnMetadataChangedListener);
-    method public boolean disableBLE();
-    method public boolean enableBLE();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean enableNoAutoConnect();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public long getDiscoveryEndMillis();
-    method public boolean isBleScanAlwaysAvailable();
-    method public boolean isLeEnabled();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean removeActiveDevice(int);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean removeOnMetadataChangedListener(@NonNull android.bluetooth.BluetoothDevice, @NonNull android.bluetooth.BluetoothAdapter.OnMetadataChangedListener);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setActiveDevice(@NonNull android.bluetooth.BluetoothDevice, int);
-    field public static final String ACTION_BLE_STATE_CHANGED = "android.bluetooth.adapter.action.BLE_STATE_CHANGED";
-    field public static final String ACTION_REQUEST_BLE_SCAN_ALWAYS_AVAILABLE = "android.bluetooth.adapter.action.REQUEST_BLE_SCAN_ALWAYS_AVAILABLE";
-    field public static final int ACTIVE_DEVICE_ALL = 2; // 0x2
-    field public static final int ACTIVE_DEVICE_AUDIO = 0; // 0x0
-    field public static final int ACTIVE_DEVICE_PHONE_CALL = 1; // 0x1
-  }
-
-  public static interface BluetoothAdapter.OnMetadataChangedListener {
-    method public void onMetadataChanged(@NonNull android.bluetooth.BluetoothDevice, int, @Nullable byte[]);
-  }
-
-  public final class BluetoothDevice implements android.os.Parcelable {
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean cancelBondProcess();
-    method @Nullable @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public byte[] getMetadata(int);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getSimAccessPermission();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isConnected();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isEncrypted();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean isInSilenceMode();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean removeBond();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setMessageAccessPermission(int);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setMetadata(int, @NonNull byte[]);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setPhonebookAccessPermission(int);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setSilenceMode(boolean);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setSimAccessPermission(int);
-    field public static final int ACCESS_ALLOWED = 1; // 0x1
-    field public static final int ACCESS_REJECTED = 2; // 0x2
-    field public static final int ACCESS_UNKNOWN = 0; // 0x0
-    field public static final String ACTION_SILENCE_MODE_CHANGED = "android.bluetooth.device.action.SILENCE_MODE_CHANGED";
-    field public static final int METADATA_COMPANION_APP = 4; // 0x4
-    field public static final int METADATA_ENHANCED_SETTINGS_UI_URI = 16; // 0x10
-    field public static final int METADATA_HARDWARE_VERSION = 3; // 0x3
-    field public static final int METADATA_IS_UNTETHERED_HEADSET = 6; // 0x6
-    field public static final int METADATA_MAIN_ICON = 5; // 0x5
-    field public static final int METADATA_MANUFACTURER_NAME = 0; // 0x0
-    field public static final int METADATA_MAX_LENGTH = 2048; // 0x800
-    field public static final int METADATA_MODEL_NAME = 1; // 0x1
-    field public static final int METADATA_SOFTWARE_VERSION = 2; // 0x2
-    field public static final int METADATA_UNTETHERED_CASE_BATTERY = 12; // 0xc
-    field public static final int METADATA_UNTETHERED_CASE_CHARGING = 15; // 0xf
-    field public static final int METADATA_UNTETHERED_CASE_ICON = 9; // 0x9
-    field public static final int METADATA_UNTETHERED_LEFT_BATTERY = 10; // 0xa
-    field public static final int METADATA_UNTETHERED_LEFT_CHARGING = 13; // 0xd
-    field public static final int METADATA_UNTETHERED_LEFT_ICON = 7; // 0x7
-    field public static final int METADATA_UNTETHERED_RIGHT_BATTERY = 11; // 0xb
-    field public static final int METADATA_UNTETHERED_RIGHT_CHARGING = 14; // 0xe
-    field public static final int METADATA_UNTETHERED_RIGHT_ICON = 8; // 0x8
-  }
-
-  public final class BluetoothHeadset implements android.bluetooth.BluetoothProfile {
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean connect(android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean disconnect(android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean setPriority(android.bluetooth.BluetoothDevice, int);
-  }
-
-  public final class BluetoothHearingAid implements android.bluetooth.BluetoothProfile {
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public long getHiSyncId(@NonNull android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
-  }
-
-  public final class BluetoothHidDevice implements android.bluetooth.BluetoothProfile {
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
-  }
-
-  public final class BluetoothHidHost implements android.bluetooth.BluetoothProfile {
-    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionState(@NonNull android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
-    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.input.profile.action.CONNECTION_STATE_CHANGED";
-  }
-
-  public final class BluetoothMap implements java.lang.AutoCloseable android.bluetooth.BluetoothProfile {
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public void close();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) protected void finalize();
-    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
-    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.map.profile.action.CONNECTION_STATE_CHANGED";
-  }
-
-  public final class BluetoothPan implements android.bluetooth.BluetoothProfile {
-    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionState(@NonNull android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean isTetheringOn();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public void setBluetoothTethering(boolean);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
-    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.pan.profile.action.CONNECTION_STATE_CHANGED";
-    field public static final String ACTION_TETHERING_STATE_CHANGED = "android.bluetooth.action.TETHERING_STATE_CHANGED";
-    field public static final String EXTRA_LOCAL_ROLE = "android.bluetooth.pan.extra.LOCAL_ROLE";
-    field public static final String EXTRA_TETHERING_STATE = "android.bluetooth.extra.TETHERING_STATE";
-    field public static final int LOCAL_NAP_ROLE = 1; // 0x1
-    field public static final int LOCAL_PANU_ROLE = 2; // 0x2
-    field public static final int PAN_ROLE_NONE = 0; // 0x0
-    field public static final int REMOTE_NAP_ROLE = 1; // 0x1
-    field public static final int REMOTE_PANU_ROLE = 2; // 0x2
-    field public static final int TETHERING_STATE_OFF = 1; // 0x1
-    field public static final int TETHERING_STATE_ON = 2; // 0x2
-  }
-
-  public class BluetoothPbap implements android.bluetooth.BluetoothProfile {
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionState(@NonNull android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
-    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.pbap.profile.action.CONNECTION_STATE_CHANGED";
-  }
-
-  public interface BluetoothProfile {
-    field public static final int A2DP_SINK = 11; // 0xb
-    field public static final int AVRCP_CONTROLLER = 12; // 0xc
-    field public static final int CONNECTION_POLICY_ALLOWED = 100; // 0x64
-    field public static final int CONNECTION_POLICY_FORBIDDEN = 0; // 0x0
-    field public static final int CONNECTION_POLICY_UNKNOWN = -1; // 0xffffffff
-    field public static final int HEADSET_CLIENT = 16; // 0x10
-    field public static final int PAN = 5; // 0x5
-    field public static final int PBAP_CLIENT = 17; // 0x11
-    field @Deprecated public static final int PRIORITY_OFF = 0; // 0x0
-    field @Deprecated public static final int PRIORITY_ON = 100; // 0x64
-  }
-
-  public final class BluetoothUuid {
-    method public static boolean containsAnyUuid(@Nullable android.os.ParcelUuid[], @Nullable android.os.ParcelUuid[]);
-    method @NonNull public static android.os.ParcelUuid parseUuidFrom(@Nullable byte[]);
-    field @NonNull public static final android.os.ParcelUuid A2DP_SINK;
-    field @NonNull public static final android.os.ParcelUuid A2DP_SOURCE;
-    field @NonNull public static final android.os.ParcelUuid ADV_AUDIO_DIST;
-    field @NonNull public static final android.os.ParcelUuid AVRCP_CONTROLLER;
-    field @NonNull public static final android.os.ParcelUuid AVRCP_TARGET;
-    field @NonNull public static final android.os.ParcelUuid BASE_UUID;
-    field @NonNull public static final android.os.ParcelUuid BNEP;
-    field @NonNull public static final android.os.ParcelUuid HEARING_AID;
-    field @NonNull public static final android.os.ParcelUuid HFP;
-    field @NonNull public static final android.os.ParcelUuid HFP_AG;
-    field @NonNull public static final android.os.ParcelUuid HID;
-    field @NonNull public static final android.os.ParcelUuid HOGP;
-    field @NonNull public static final android.os.ParcelUuid HSP;
-    field @NonNull public static final android.os.ParcelUuid HSP_AG;
-    field @NonNull public static final android.os.ParcelUuid MAP;
-    field @NonNull public static final android.os.ParcelUuid MAS;
-    field @NonNull public static final android.os.ParcelUuid MNS;
-    field @NonNull public static final android.os.ParcelUuid NAP;
-    field @NonNull public static final android.os.ParcelUuid OBEX_OBJECT_PUSH;
-    field @NonNull public static final android.os.ParcelUuid PANU;
-    field @NonNull public static final android.os.ParcelUuid PBAP_PCE;
-    field @NonNull public static final android.os.ParcelUuid PBAP_PSE;
-    field @NonNull public static final android.os.ParcelUuid SAP;
-    field public static final int UUID_BYTES_128_BIT = 16; // 0x10
-    field public static final int UUID_BYTES_16_BIT = 2; // 0x2
-    field public static final int UUID_BYTES_32_BIT = 4; // 0x4
-  }
-
-}
-
-package android.bluetooth.le {
-
-  public final class BluetoothLeScanner {
-    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_ADMIN, android.Manifest.permission.UPDATE_DEVICE_STATS}) public void startScanFromSource(android.os.WorkSource, android.bluetooth.le.ScanCallback);
-    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_ADMIN, android.Manifest.permission.UPDATE_DEVICE_STATS}) public void startScanFromSource(java.util.List<android.bluetooth.le.ScanFilter>, android.bluetooth.le.ScanSettings, android.os.WorkSource, android.bluetooth.le.ScanCallback);
-    method public void startTruncatedScan(java.util.List<android.bluetooth.le.TruncatedFilter>, android.bluetooth.le.ScanSettings, android.bluetooth.le.ScanCallback);
-  }
-
-  public final class ResultStorageDescriptor implements android.os.Parcelable {
-    ctor public ResultStorageDescriptor(int, int, int);
-    method public int describeContents();
-    method public int getLength();
-    method public int getOffset();
-    method public int getType();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.ResultStorageDescriptor> CREATOR;
-  }
-
-  public final class ScanSettings implements android.os.Parcelable {
-    field public static final int SCAN_RESULT_TYPE_ABBREVIATED = 1; // 0x1
-    field public static final int SCAN_RESULT_TYPE_FULL = 0; // 0x0
-  }
-
-  public static final class ScanSettings.Builder {
-    method public android.bluetooth.le.ScanSettings.Builder setScanResultType(int);
-  }
-
-  public final class TruncatedFilter {
-    ctor public TruncatedFilter(android.bluetooth.le.ScanFilter, java.util.List<android.bluetooth.le.ResultStorageDescriptor>);
-    method public android.bluetooth.le.ScanFilter getFilter();
-    method public java.util.List<android.bluetooth.le.ResultStorageDescriptor> getStorageDescriptors();
-  }
-
-}
-
-package android.companion {
-
-  public final class CompanionDeviceManager {
-    method @RequiresPermission("android.permission.MANAGE_COMPANION_DEVICES") public boolean isDeviceAssociatedForWifiConnection(@NonNull String, @NonNull android.net.MacAddress, @NonNull android.os.UserHandle);
-  }
-
-}
-
-package android.content {
-
-  public class ApexEnvironment {
-    method @NonNull public static android.content.ApexEnvironment getApexEnvironment(@NonNull String);
-    method @NonNull public java.io.File getCredentialProtectedDataDirForUser(@NonNull android.os.UserHandle);
-    method @NonNull public java.io.File getDeviceProtectedDataDir();
-    method @NonNull public java.io.File getDeviceProtectedDataDirForUser(@NonNull android.os.UserHandle);
-  }
-
-  public abstract class BroadcastReceiver {
-    method @NonNull public final android.os.UserHandle getSendingUser();
-  }
-
-  public abstract class ContentProvider implements android.content.ComponentCallbacks2 {
-    method public int checkUriPermission(@NonNull android.net.Uri, int, int);
-  }
-
-  public class ContentProviderClient implements java.lang.AutoCloseable {
-    method @RequiresPermission(android.Manifest.permission.REMOVE_TASKS) public void setDetectNotResponding(long);
-  }
-
-  public abstract class ContentResolver {
-    method public int checkUriPermission(@NonNull android.net.Uri, int, int);
-    method @NonNull public static android.net.Uri decodeFromFile(@NonNull java.io.File);
-    method @NonNull public static java.io.File encodeToFile(@NonNull android.net.Uri);
-    method @Nullable @RequiresPermission("android.permission.CACHE_CONTENT") public android.os.Bundle getCache(@NonNull android.net.Uri);
-    method @RequiresPermission("android.permission.CACHE_CONTENT") public void putCache(@NonNull android.net.Uri, @Nullable android.os.Bundle);
-  }
-
-  public abstract class Context {
-    method @NonNull public android.content.Context createContextAsUser(@NonNull android.os.UserHandle, int);
-    method public abstract android.content.Context createCredentialProtectedStorageContext();
-    method @NonNull public android.content.Context createPackageContextAsUser(@NonNull String, int, @NonNull android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @Nullable public abstract java.io.File getPreloadsFileCache();
-    method public abstract boolean isCredentialProtectedStorage();
-    method @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public android.content.Intent registerReceiverForAllUsers(@Nullable android.content.BroadcastReceiver, @NonNull android.content.IntentFilter, @Nullable String, @Nullable android.os.Handler);
-    method public abstract void sendBroadcast(android.content.Intent, @Nullable String, @Nullable android.os.Bundle);
-    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public abstract void sendBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle, @Nullable String, @Nullable android.os.Bundle);
-    method public abstract void sendOrderedBroadcast(@NonNull android.content.Intent, @Nullable String, @Nullable android.os.Bundle, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
-    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public void startActivityAsUser(@NonNull @RequiresPermission android.content.Intent, @NonNull android.os.UserHandle);
-    field public static final String APP_INTEGRITY_SERVICE = "app_integrity";
-    field public static final String APP_PREDICTION_SERVICE = "app_prediction";
-    field public static final String BACKUP_SERVICE = "backup";
-    field public static final String BATTERY_STATS_SERVICE = "batterystats";
-    field public static final String BUGREPORT_SERVICE = "bugreport";
-    field public static final String CONTENT_SUGGESTIONS_SERVICE = "content_suggestions";
-    field public static final String CONTEXTHUB_SERVICE = "contexthub";
-    field public static final String ETHERNET_SERVICE = "ethernet";
-    field public static final String EUICC_CARD_SERVICE = "euicc_card";
-    field public static final String HDMI_CONTROL_SERVICE = "hdmi_control";
-    field public static final String NETD_SERVICE = "netd";
-    field public static final String NETWORK_SCORE_SERVICE = "network_score";
-    field public static final String OEM_LOCK_SERVICE = "oem_lock";
-    field public static final String PERMISSION_SERVICE = "permission";
-    field public static final String PERSISTENT_DATA_BLOCK_SERVICE = "persistent_data_block";
-    field public static final String ROLLBACK_SERVICE = "rollback";
-    field public static final String SECURE_ELEMENT_SERVICE = "secure_element";
-    field public static final String STATS_MANAGER = "stats";
-    field public static final String STATUS_BAR_SERVICE = "statusbar";
-    field public static final String SYSTEM_CONFIG_SERVICE = "system_config";
-    field public static final String SYSTEM_UPDATE_SERVICE = "system_update";
-    field public static final String TETHERING_SERVICE = "tethering";
-    field public static final String VR_SERVICE = "vrmanager";
-    field public static final String WIFI_NL80211_SERVICE = "wifinl80211";
-    field @Deprecated public static final String WIFI_RTT_SERVICE = "rttmanager";
-    field public static final String WIFI_SCANNING_SERVICE = "wifiscanner";
-  }
-
-  public class ContextWrapper extends android.content.Context {
-    method public android.content.Context createCredentialProtectedStorageContext();
-    method public java.io.File getPreloadsFileCache();
-    method public boolean isCredentialProtectedStorage();
-    method public void sendBroadcast(android.content.Intent, String, android.os.Bundle);
-    method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, String, android.os.Bundle);
-    method public void sendOrderedBroadcast(android.content.Intent, String, android.os.Bundle, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
-  }
-
-  public class Intent implements java.lang.Cloneable android.os.Parcelable {
-    field public static final String ACTION_BATTERY_LEVEL_CHANGED = "android.intent.action.BATTERY_LEVEL_CHANGED";
-    field public static final String ACTION_CALL_EMERGENCY = "android.intent.action.CALL_EMERGENCY";
-    field public static final String ACTION_CALL_PRIVILEGED = "android.intent.action.CALL_PRIVILEGED";
-    field public static final String ACTION_DEVICE_CUSTOMIZATION_READY = "android.intent.action.DEVICE_CUSTOMIZATION_READY";
-    field public static final String ACTION_DIAL_EMERGENCY = "android.intent.action.DIAL_EMERGENCY";
-    field public static final String ACTION_FACTORY_RESET = "android.intent.action.FACTORY_RESET";
-    field public static final String ACTION_GLOBAL_BUTTON = "android.intent.action.GLOBAL_BUTTON";
-    field public static final String ACTION_INCIDENT_REPORT_READY = "android.intent.action.INCIDENT_REPORT_READY";
-    field public static final String ACTION_INSTALL_INSTANT_APP_PACKAGE = "android.intent.action.INSTALL_INSTANT_APP_PACKAGE";
-    field public static final String ACTION_INSTANT_APP_RESOLVER_SETTINGS = "android.intent.action.INSTANT_APP_RESOLVER_SETTINGS";
-    field public static final String ACTION_INTENT_FILTER_NEEDS_VERIFICATION = "android.intent.action.INTENT_FILTER_NEEDS_VERIFICATION";
-    field public static final String ACTION_LOAD_DATA = "android.intent.action.LOAD_DATA";
-    field @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS) public static final String ACTION_MANAGE_APP_PERMISSION = "android.intent.action.MANAGE_APP_PERMISSION";
-    field public static final String ACTION_MANAGE_APP_PERMISSIONS = "android.intent.action.MANAGE_APP_PERMISSIONS";
-    field @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public static final String ACTION_MANAGE_DEFAULT_APP = "android.intent.action.MANAGE_DEFAULT_APP";
-    field public static final String ACTION_MANAGE_PERMISSIONS = "android.intent.action.MANAGE_PERMISSIONS";
-    field public static final String ACTION_MANAGE_PERMISSION_APPS = "android.intent.action.MANAGE_PERMISSION_APPS";
-    field @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public static final String ACTION_MANAGE_SPECIAL_APP_ACCESSES = "android.intent.action.MANAGE_SPECIAL_APP_ACCESSES";
-    field public static final String ACTION_MASTER_CLEAR_NOTIFICATION = "android.intent.action.MASTER_CLEAR_NOTIFICATION";
-    field public static final String ACTION_PACKAGE_NEEDS_INTEGRITY_VERIFICATION = "android.intent.action.PACKAGE_NEEDS_INTEGRITY_VERIFICATION";
-    field public static final String ACTION_PACKAGE_UNSUSPENDED_MANUALLY = "android.intent.action.PACKAGE_UNSUSPENDED_MANUALLY";
-    field public static final String ACTION_PENDING_INCIDENT_REPORTS_CHANGED = "android.intent.action.PENDING_INCIDENT_REPORTS_CHANGED";
-    field public static final String ACTION_PRE_BOOT_COMPLETED = "android.intent.action.PRE_BOOT_COMPLETED";
-    field public static final String ACTION_QUERY_PACKAGE_RESTART = "android.intent.action.QUERY_PACKAGE_RESTART";
-    field public static final String ACTION_RESOLVE_INSTANT_APP_PACKAGE = "android.intent.action.RESOLVE_INSTANT_APP_PACKAGE";
-    field @RequiresPermission(android.Manifest.permission.REVIEW_ACCESSIBILITY_SERVICES) public static final String ACTION_REVIEW_ACCESSIBILITY_SERVICES = "android.intent.action.REVIEW_ACCESSIBILITY_SERVICES";
-    field @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS) public static final String ACTION_REVIEW_ONGOING_PERMISSION_USAGE = "android.intent.action.REVIEW_ONGOING_PERMISSION_USAGE";
-    field public static final String ACTION_REVIEW_PERMISSIONS = "android.intent.action.REVIEW_PERMISSIONS";
-    field @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS) public static final String ACTION_REVIEW_PERMISSION_USAGE = "android.intent.action.REVIEW_PERMISSION_USAGE";
-    field public static final String ACTION_ROLLBACK_COMMITTED = "android.intent.action.ROLLBACK_COMMITTED";
-    field public static final String ACTION_SHOW_SUSPENDED_APP_DETAILS = "android.intent.action.SHOW_SUSPENDED_APP_DETAILS";
-    field @Deprecated public static final String ACTION_SIM_STATE_CHANGED = "android.intent.action.SIM_STATE_CHANGED";
-    field public static final String ACTION_SPLIT_CONFIGURATION_CHANGED = "android.intent.action.SPLIT_CONFIGURATION_CHANGED";
-    field public static final String ACTION_UPGRADE_SETUP = "android.intent.action.UPGRADE_SETUP";
-    field public static final String ACTION_USER_ADDED = "android.intent.action.USER_ADDED";
-    field public static final String ACTION_USER_REMOVED = "android.intent.action.USER_REMOVED";
-    field public static final String ACTION_VOICE_ASSIST = "android.intent.action.VOICE_ASSIST";
-    field public static final String CATEGORY_LEANBACK_SETTINGS = "android.intent.category.LEANBACK_SETTINGS";
-    field public static final String EXTRA_CALLING_PACKAGE = "android.intent.extra.CALLING_PACKAGE";
-    field public static final String EXTRA_FORCE_FACTORY_RESET = "android.intent.extra.FORCE_FACTORY_RESET";
-    field public static final String EXTRA_INSTANT_APP_ACTION = "android.intent.extra.INSTANT_APP_ACTION";
-    field public static final String EXTRA_INSTANT_APP_BUNDLES = "android.intent.extra.INSTANT_APP_BUNDLES";
-    field public static final String EXTRA_INSTANT_APP_EXTRAS = "android.intent.extra.INSTANT_APP_EXTRAS";
-    field public static final String EXTRA_INSTANT_APP_FAILURE = "android.intent.extra.INSTANT_APP_FAILURE";
-    field public static final String EXTRA_INSTANT_APP_HOSTNAME = "android.intent.extra.INSTANT_APP_HOSTNAME";
-    field public static final String EXTRA_INSTANT_APP_SUCCESS = "android.intent.extra.INSTANT_APP_SUCCESS";
-    field public static final String EXTRA_INSTANT_APP_TOKEN = "android.intent.extra.INSTANT_APP_TOKEN";
-    field public static final String EXTRA_LONG_VERSION_CODE = "android.intent.extra.LONG_VERSION_CODE";
-    field public static final String EXTRA_ORIGINATING_UID = "android.intent.extra.ORIGINATING_UID";
-    field public static final String EXTRA_PACKAGES = "android.intent.extra.PACKAGES";
-    field public static final String EXTRA_PERMISSION_GROUP_NAME = "android.intent.extra.PERMISSION_GROUP_NAME";
-    field public static final String EXTRA_PERMISSION_NAME = "android.intent.extra.PERMISSION_NAME";
-    field public static final String EXTRA_REASON = "android.intent.extra.REASON";
-    field public static final String EXTRA_REMOTE_CALLBACK = "android.intent.extra.REMOTE_CALLBACK";
-    field public static final String EXTRA_RESULT_NEEDED = "android.intent.extra.RESULT_NEEDED";
-    field public static final String EXTRA_ROLE_NAME = "android.intent.extra.ROLE_NAME";
-    field public static final String EXTRA_UNKNOWN_INSTANT_APP = "android.intent.extra.UNKNOWN_INSTANT_APP";
-    field public static final String EXTRA_VERIFICATION_BUNDLE = "android.intent.extra.VERIFICATION_BUNDLE";
-    field public static final int FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT = 67108864; // 0x4000000
-    field public static final String METADATA_SETUP_VERSION = "android.SETUP_VERSION";
-  }
-
-  public class IntentFilter implements android.os.Parcelable {
-    method public final int getOrder();
-    method public final void setOrder(int);
-  }
-
-}
-
-package android.content.integrity {
-
-  public class AppIntegrityManager {
-    method @NonNull public String getCurrentRuleSetProvider();
-    method @NonNull public String getCurrentRuleSetVersion();
-    method public void updateRuleSet(@NonNull android.content.integrity.RuleSet, @NonNull android.content.IntentSender);
-    field public static final String EXTRA_STATUS = "android.content.integrity.extra.STATUS";
-    field public static final int STATUS_FAILURE = 1; // 0x1
-    field public static final int STATUS_SUCCESS = 0; // 0x0
-  }
-
-  public abstract class IntegrityFormula {
-    method @NonNull public static android.content.integrity.IntegrityFormula all(@NonNull android.content.integrity.IntegrityFormula...);
-    method @NonNull public static android.content.integrity.IntegrityFormula any(@NonNull android.content.integrity.IntegrityFormula...);
-    method @NonNull public static android.content.integrity.IntegrityFormula not(@NonNull android.content.integrity.IntegrityFormula);
-  }
-
-  public static final class IntegrityFormula.Application {
-    method @NonNull public static android.content.integrity.IntegrityFormula certificatesContain(@NonNull String);
-    method @NonNull public static android.content.integrity.IntegrityFormula isPreInstalled();
-    method @NonNull public static android.content.integrity.IntegrityFormula packageNameEquals(@NonNull String);
-    method @NonNull public static android.content.integrity.IntegrityFormula versionCodeEquals(@NonNull long);
-    method @NonNull public static android.content.integrity.IntegrityFormula versionCodeGreaterThan(@NonNull long);
-    method @NonNull public static android.content.integrity.IntegrityFormula versionCodeGreaterThanOrEqualTo(@NonNull long);
-  }
-
-  public static final class IntegrityFormula.Installer {
-    method @NonNull public static android.content.integrity.IntegrityFormula certificatesContain(@NonNull String);
-    method @NonNull public static android.content.integrity.IntegrityFormula notAllowedByManifest();
-    method @NonNull public static android.content.integrity.IntegrityFormula packageNameEquals(@NonNull String);
-  }
-
-  public static final class IntegrityFormula.SourceStamp {
-    method @NonNull public static android.content.integrity.IntegrityFormula notTrusted();
-    method @NonNull public static android.content.integrity.IntegrityFormula stampCertificateHashEquals(@NonNull String);
-  }
-
-  public final class Rule implements android.os.Parcelable {
-    ctor public Rule(@NonNull android.content.integrity.IntegrityFormula, int);
-    method public int describeContents();
-    method public int getEffect();
-    method @NonNull public android.content.integrity.IntegrityFormula getFormula();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.integrity.Rule> CREATOR;
-    field public static final int DENY = 0; // 0x0
-    field public static final int FORCE_ALLOW = 1; // 0x1
-  }
-
-  public class RuleSet {
-    method @NonNull public java.util.List<android.content.integrity.Rule> getRules();
-    method @NonNull public String getVersion();
-  }
-
-  public static class RuleSet.Builder {
-    ctor public RuleSet.Builder();
-    method @NonNull public android.content.integrity.RuleSet.Builder addRules(@NonNull java.util.List<android.content.integrity.Rule>);
-    method @NonNull public android.content.integrity.RuleSet build();
-    method @NonNull public android.content.integrity.RuleSet.Builder setVersion(@NonNull String);
-  }
-
-}
-
-package android.content.om {
-
-  public final class OverlayInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getCategory();
-    method @NonNull public String getPackageName();
-    method @Nullable public String getTargetOverlayableName();
-    method @NonNull public String getTargetPackageName();
-    method public int getUserId();
-    method public boolean isEnabled();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.om.OverlayInfo> CREATOR;
-  }
-
-  public class OverlayManager {
-    method @Nullable public android.content.om.OverlayInfo getOverlayInfo(@NonNull String, @NonNull android.os.UserHandle);
-    method @NonNull @RequiresPermission(anyOf={"android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL"}) public java.util.List<android.content.om.OverlayInfo> getOverlayInfosForTarget(@NonNull String, @NonNull android.os.UserHandle);
-    method @RequiresPermission(anyOf={"android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL"}) public void setEnabled(@NonNull String, boolean, @NonNull android.os.UserHandle) throws java.lang.IllegalStateException, java.lang.SecurityException;
-    method @RequiresPermission(anyOf={"android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL"}) public void setEnabledExclusiveInCategory(@NonNull String, @NonNull android.os.UserHandle) throws java.lang.IllegalStateException, java.lang.SecurityException;
-  }
-
-}
-
-package android.content.pm {
-
-  public class ApplicationInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
-    method public boolean isEncryptionAware();
-    method public boolean isInstantApp();
-    field public String credentialProtectedDataDir;
-    field public int targetSandboxVersion;
-  }
-
-  public class CrossProfileApps {
-    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_PROFILES) public void startActivity(@NonNull android.content.ComponentName, @NonNull android.os.UserHandle);
-  }
-
-  public class DataLoaderParams {
-    method @NonNull public static final android.content.pm.DataLoaderParams forIncremental(@NonNull android.content.ComponentName, @NonNull String);
-    method @NonNull public static final android.content.pm.DataLoaderParams forStreaming(@NonNull android.content.ComponentName, @NonNull String);
-    method @NonNull public final String getArguments();
-    method @NonNull public final android.content.ComponentName getComponentName();
-    method @NonNull public final int getType();
-  }
-
-  public final class InstallationFile {
-    method public long getLengthBytes();
-    method public int getLocation();
-    method @Nullable public byte[] getMetadata();
-    method @NonNull public String getName();
-    method @Nullable public byte[] getSignature();
-  }
-
-  public final class InstantAppInfo implements android.os.Parcelable {
-    ctor public InstantAppInfo(android.content.pm.ApplicationInfo, String[], String[]);
-    ctor public InstantAppInfo(String, CharSequence, String[], String[]);
-    method public int describeContents();
-    method @Nullable public android.content.pm.ApplicationInfo getApplicationInfo();
-    method @Nullable public String[] getGrantedPermissions();
-    method @NonNull public String getPackageName();
-    method @Nullable public String[] getRequestedPermissions();
-    method @NonNull public android.graphics.drawable.Drawable loadIcon(@NonNull android.content.pm.PackageManager);
-    method @NonNull public CharSequence loadLabel(@NonNull android.content.pm.PackageManager);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstantAppInfo> CREATOR;
-  }
-
-  public final class InstantAppIntentFilter implements android.os.Parcelable {
-    ctor public InstantAppIntentFilter(@Nullable String, @NonNull java.util.List<android.content.IntentFilter>);
-    method public int describeContents();
-    method public java.util.List<android.content.IntentFilter> getFilters();
-    method public String getSplitName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstantAppIntentFilter> CREATOR;
-  }
-
-  public final class InstantAppRequestInfo implements android.os.Parcelable {
-    ctor public InstantAppRequestInfo(@NonNull android.content.Intent, @Nullable int[], @NonNull android.os.UserHandle, boolean, @NonNull String);
-    method public int describeContents();
-    method @Nullable public int[] getHostDigestPrefix();
-    method @NonNull public android.content.Intent getIntent();
-    method @NonNull public String getToken();
-    method @NonNull public android.os.UserHandle getUserHandle();
-    method public boolean isRequesterInstantApp();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstantAppRequestInfo> CREATOR;
-  }
-
-  public final class InstantAppResolveInfo implements android.os.Parcelable {
-    ctor public InstantAppResolveInfo(@NonNull android.content.pm.InstantAppResolveInfo.InstantAppDigest, @Nullable String, @Nullable java.util.List<android.content.pm.InstantAppIntentFilter>, int);
-    ctor public InstantAppResolveInfo(@NonNull android.content.pm.InstantAppResolveInfo.InstantAppDigest, @Nullable String, @Nullable java.util.List<android.content.pm.InstantAppIntentFilter>, long, @Nullable android.os.Bundle);
-    ctor public InstantAppResolveInfo(@NonNull String, @Nullable String, @Nullable java.util.List<android.content.pm.InstantAppIntentFilter>);
-    ctor public InstantAppResolveInfo(@Nullable android.os.Bundle);
-    method public int describeContents();
-    method public byte[] getDigestBytes();
-    method public int getDigestPrefix();
-    method @Nullable public android.os.Bundle getExtras();
-    method public java.util.List<android.content.pm.InstantAppIntentFilter> getIntentFilters();
-    method public long getLongVersionCode();
-    method public String getPackageName();
-    method @Deprecated public int getVersionCode();
-    method public boolean shouldLetInstallerDecide();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstantAppResolveInfo> CREATOR;
-  }
-
-  public static final class InstantAppResolveInfo.InstantAppDigest implements android.os.Parcelable {
-    ctor public InstantAppResolveInfo.InstantAppDigest(@NonNull String);
-    method public int describeContents();
-    method public byte[][] getDigestBytes();
-    method public int[] getDigestPrefix();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstantAppResolveInfo.InstantAppDigest> CREATOR;
-    field public static final android.content.pm.InstantAppResolveInfo.InstantAppDigest UNDEFINED;
-  }
-
-  public final class IntentFilterVerificationInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public java.util.Set<java.lang.String> getDomains();
-    method public String getPackageName();
-    method public int getStatus();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.IntentFilterVerificationInfo> CREATOR;
-  }
-
-  public class LauncherApps {
-    method @Nullable public android.content.pm.LauncherApps.AppUsageLimit getAppUsageLimit(@NonNull String, @NonNull android.os.UserHandle);
-  }
-
-  public static final class LauncherApps.AppUsageLimit implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getTotalUsageLimit();
-    method public long getUsageRemaining();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.LauncherApps.AppUsageLimit> CREATOR;
-  }
-
-  public class PackageInstaller {
-    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setPermissionsResult(int, boolean);
-    field public static final int DATA_LOADER_TYPE_INCREMENTAL = 2; // 0x2
-    field public static final int DATA_LOADER_TYPE_NONE = 0; // 0x0
-    field public static final int DATA_LOADER_TYPE_STREAMING = 1; // 0x1
-    field public static final String EXTRA_DATA_LOADER_TYPE = "android.content.pm.extra.DATA_LOADER_TYPE";
-    field public static final int LOCATION_DATA_APP = 0; // 0x0
-    field public static final int LOCATION_MEDIA_DATA = 2; // 0x2
-    field public static final int LOCATION_MEDIA_OBB = 1; // 0x1
-  }
-
-  public static class PackageInstaller.Session implements java.io.Closeable {
-    method @RequiresPermission("com.android.permission.USE_INSTALLER_V2") public void addFile(int, @NonNull String, long, @NonNull byte[], @Nullable byte[]);
-    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void commitTransferred(@NonNull android.content.IntentSender);
-    method @Nullable @RequiresPermission("com.android.permission.USE_INSTALLER_V2") public android.content.pm.DataLoaderParams getDataLoaderParams();
-    method @RequiresPermission("com.android.permission.USE_INSTALLER_V2") public void removeFile(int, @NonNull String);
-  }
-
-  public static class PackageInstaller.SessionInfo implements android.os.Parcelable {
-    method public boolean getAllocateAggressive();
-    method @Deprecated public boolean getAllowDowngrade();
-    method public int getAutoRevokePermissionsMode();
-    method public boolean getDontKillApp();
-    method public boolean getEnableRollback();
-    method @Nullable public String[] getGrantedRuntimePermissions();
-    method public boolean getInstallAsFullApp(boolean);
-    method public boolean getInstallAsInstantApp(boolean);
-    method public boolean getInstallAsVirtualPreload();
-    method public boolean getRequestDowngrade();
-    method public int getRollbackDataPolicy();
-    method @NonNull public java.util.Set<java.lang.String> getWhitelistedRestrictedPermissions();
-  }
-
-  public static class PackageInstaller.SessionParams implements android.os.Parcelable {
-    method @RequiresPermission(android.Manifest.permission.ALLOCATE_AGGRESSIVE) public void setAllocateAggressive(boolean);
-    method @Deprecated public void setAllowDowngrade(boolean);
-    method @RequiresPermission(allOf={android.Manifest.permission.INSTALL_PACKAGES, "com.android.permission.USE_INSTALLER_V2"}) public void setDataLoaderParams(@NonNull android.content.pm.DataLoaderParams);
-    method public void setDontKillApp(boolean);
-    method public void setEnableRollback(boolean);
-    method public void setEnableRollback(boolean, int);
-    method @RequiresPermission(android.Manifest.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS) public void setGrantedRuntimePermissions(String[]);
-    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setInstallAsApex();
-    method public void setInstallAsInstantApp(boolean);
-    method public void setInstallAsVirtualPreload();
-    method public void setRequestDowngrade(boolean);
-    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setStaged();
-  }
-
-  public class PackageItemInfo {
-    method public static void forceSafeLabels();
-    method @Deprecated @NonNull public CharSequence loadSafeLabel(@NonNull android.content.pm.PackageManager);
-    method @NonNull public CharSequence loadSafeLabel(@NonNull android.content.pm.PackageManager, @FloatRange(from=0) float, int);
-  }
-
-  public abstract class PackageManager {
-    method @RequiresPermission("android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS") public abstract void addOnPermissionsChangeListener(@NonNull android.content.pm.PackageManager.OnPermissionsChangedListener);
-    method public abstract boolean arePermissionsIndividuallyControlled();
-    method @NonNull public abstract java.util.List<android.content.IntentFilter> getAllIntentFilters(@NonNull String);
-    method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public android.content.pm.ApplicationInfo getApplicationInfoAsUser(@NonNull String, int, @NonNull android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public android.content.pm.dex.ArtManager getArtManager();
-    method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_SHARED_LIBRARIES) public java.util.List<android.content.pm.SharedLibraryInfo> getDeclaredSharedLibraries(@NonNull String, int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public abstract String getDefaultBrowserPackageNameAsUser(int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.SET_HARMFUL_APP_WARNINGS) public CharSequence getHarmfulAppWarning(@NonNull String);
-    method @Nullable public String getIncidentReportApproverPackageName();
-    method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackagesAsUser(int, int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_INSTANT_APPS) public abstract android.graphics.drawable.Drawable getInstantAppIcon(String);
-    method @Nullable public abstract android.content.ComponentName getInstantAppInstallerComponent();
-    method @Nullable public abstract android.content.ComponentName getInstantAppResolverSettingsComponent();
-    method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_INSTANT_APPS) public abstract java.util.List<android.content.pm.InstantAppInfo> getInstantApps();
-    method @NonNull public abstract java.util.List<android.content.pm.IntentFilterVerificationInfo> getIntentFilterVerifications(@NonNull String);
-    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public abstract int getIntentVerificationStatusAsUser(@NonNull String, int);
-    method @android.content.pm.PackageManager.PermissionFlags @RequiresPermission(anyOf={android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS, android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS, android.Manifest.permission.GET_RUNTIME_PERMISSIONS}) public abstract int getPermissionFlags(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
-    method @NonNull @RequiresPermission(android.Manifest.permission.SUSPEND_APPS) public String[] getUnsuspendablePackages(@NonNull String[]);
-    method @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS) public abstract void grantRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
-    method @Deprecated public abstract int installExistingPackage(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @Deprecated public abstract int installExistingPackage(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public java.util.List<android.content.pm.ResolveInfo> queryBroadcastReceiversAsUser(@NonNull android.content.Intent, int, android.os.UserHandle);
-    method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public java.util.List<android.content.pm.ResolveInfo> queryIntentActivitiesAsUser(@NonNull android.content.Intent, int, @NonNull android.os.UserHandle);
-    method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public java.util.List<android.content.pm.ResolveInfo> queryIntentContentProvidersAsUser(@NonNull android.content.Intent, int, @NonNull android.os.UserHandle);
-    method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public java.util.List<android.content.pm.ResolveInfo> queryIntentServicesAsUser(@NonNull android.content.Intent, int, @NonNull android.os.UserHandle);
-    method public abstract void registerDexModule(@NonNull String, @Nullable android.content.pm.PackageManager.DexModuleRegisterCallback);
-    method @RequiresPermission("android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS") public abstract void removeOnPermissionsChangeListener(@NonNull android.content.pm.PackageManager.OnPermissionsChangedListener);
-    method public void replacePreferredActivity(@NonNull android.content.IntentFilter, int, @NonNull java.util.List<android.content.ComponentName>, @NonNull android.content.ComponentName);
-    method @RequiresPermission(android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS) public abstract void revokeRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS) public void revokeRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle, @NonNull String);
-    method public void sendDeviceCustomizationReadyBroadcast();
-    method @RequiresPermission(allOf={android.Manifest.permission.SET_PREFERRED_APPLICATIONS, android.Manifest.permission.INTERACT_ACROSS_USERS_FULL}) public abstract boolean setDefaultBrowserPackageNameAsUser(@Nullable String, int);
-    method @NonNull @RequiresPermission(android.Manifest.permission.SUSPEND_APPS) public String[] setDistractingPackageRestrictions(@NonNull String[], int);
-    method @RequiresPermission(android.Manifest.permission.SET_HARMFUL_APP_WARNINGS) public void setHarmfulAppWarning(@NonNull String, @Nullable CharSequence);
-    method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.SUSPEND_APPS) public String[] setPackagesSuspended(@Nullable String[], boolean, @Nullable android.os.PersistableBundle, @Nullable android.os.PersistableBundle, @Nullable String);
-    method @Nullable @RequiresPermission(android.Manifest.permission.SUSPEND_APPS) public String[] setPackagesSuspended(@Nullable String[], boolean, @Nullable android.os.PersistableBundle, @Nullable android.os.PersistableBundle, @Nullable android.content.pm.SuspendDialogInfo);
-    method @RequiresPermission(value=android.Manifest.permission.CHANGE_COMPONENT_ENABLED_STATE, conditional=true) public void setSyntheticAppDetailsActivityEnabled(@NonNull String, boolean);
-    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public abstract void setUpdateAvailable(@NonNull String, boolean);
-    method @RequiresPermission(android.Manifest.permission.SET_PREFERRED_APPLICATIONS) public abstract boolean updateIntentVerificationStatusAsUser(@NonNull String, int, int);
-    method @RequiresPermission(anyOf={android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS, android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS}) public abstract void updatePermissionFlags(@NonNull String, @NonNull String, @android.content.pm.PackageManager.PermissionFlags int, @android.content.pm.PackageManager.PermissionFlags int, @NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.INTENT_FILTER_VERIFICATION_AGENT) public abstract void verifyIntentFilter(int, int, @NonNull java.util.List<java.lang.String>);
-    field public static final String ACTION_REQUEST_PERMISSIONS = "android.content.pm.action.REQUEST_PERMISSIONS";
-    field public static final String EXTRA_REQUEST_PERMISSIONS_NAMES = "android.content.pm.extra.REQUEST_PERMISSIONS_NAMES";
-    field public static final String EXTRA_REQUEST_PERMISSIONS_RESULTS = "android.content.pm.extra.REQUEST_PERMISSIONS_RESULTS";
-    field public static final String FEATURE_BROADCAST_RADIO = "android.hardware.broadcastradio";
-    field public static final String FEATURE_CONTEXT_HUB = "android.hardware.context_hub";
-    field public static final String FEATURE_INCREMENTAL_DELIVERY = "android.software.incremental_delivery";
-    field public static final String FEATURE_REBOOT_ESCROW = "android.hardware.reboot_escrow";
-    field public static final String FEATURE_TELEPHONY_CARRIERLOCK = "android.hardware.telephony.carrierlock";
-    field public static final int FLAGS_PERMISSION_RESERVED_PERMISSION_CONTROLLER = -268435456; // 0xf0000000
-    field public static final int FLAG_PERMISSION_APPLY_RESTRICTION = 16384; // 0x4000
-    field public static final int FLAG_PERMISSION_AUTO_REVOKED = 131072; // 0x20000
-    field public static final int FLAG_PERMISSION_GRANTED_BY_DEFAULT = 32; // 0x20
-    field public static final int FLAG_PERMISSION_GRANTED_BY_ROLE = 32768; // 0x8000
-    field public static final int FLAG_PERMISSION_ONE_TIME = 65536; // 0x10000
-    field public static final int FLAG_PERMISSION_POLICY_FIXED = 4; // 0x4
-    field public static final int FLAG_PERMISSION_RESTRICTION_INSTALLER_EXEMPT = 2048; // 0x800
-    field public static final int FLAG_PERMISSION_RESTRICTION_SYSTEM_EXEMPT = 4096; // 0x1000
-    field public static final int FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT = 8192; // 0x2000
-    field public static final int FLAG_PERMISSION_REVIEW_REQUIRED = 64; // 0x40
-    field public static final int FLAG_PERMISSION_REVOKED_COMPAT = 8; // 0x8
-    field @Deprecated public static final int FLAG_PERMISSION_REVOKE_ON_UPGRADE = 8; // 0x8
-    field public static final int FLAG_PERMISSION_SYSTEM_FIXED = 16; // 0x10
-    field public static final int FLAG_PERMISSION_USER_FIXED = 2; // 0x2
-    field public static final int FLAG_PERMISSION_USER_SENSITIVE_WHEN_DENIED = 512; // 0x200
-    field public static final int FLAG_PERMISSION_USER_SENSITIVE_WHEN_GRANTED = 256; // 0x100
-    field public static final int FLAG_PERMISSION_USER_SET = 1; // 0x1
-    field public static final int INSTALL_FAILED_ALREADY_EXISTS = -1; // 0xffffffff
-    field public static final int INSTALL_FAILED_CONFLICTING_PROVIDER = -13; // 0xfffffff3
-    field public static final int INSTALL_FAILED_CONTAINER_ERROR = -18; // 0xffffffee
-    field public static final int INSTALL_FAILED_CPU_ABI_INCOMPATIBLE = -16; // 0xfffffff0
-    field public static final int INSTALL_FAILED_DEXOPT = -11; // 0xfffffff5
-    field public static final int INSTALL_FAILED_DUPLICATE_PACKAGE = -5; // 0xfffffffb
-    field public static final int INSTALL_FAILED_INSUFFICIENT_STORAGE = -4; // 0xfffffffc
-    field public static final int INSTALL_FAILED_INTERNAL_ERROR = -110; // 0xffffff92
-    field public static final int INSTALL_FAILED_INVALID_APK = -2; // 0xfffffffe
-    field public static final int INSTALL_FAILED_INVALID_INSTALL_LOCATION = -19; // 0xffffffed
-    field public static final int INSTALL_FAILED_INVALID_URI = -3; // 0xfffffffd
-    field public static final int INSTALL_FAILED_MEDIA_UNAVAILABLE = -20; // 0xffffffec
-    field public static final int INSTALL_FAILED_MISSING_FEATURE = -17; // 0xffffffef
-    field public static final int INSTALL_FAILED_MISSING_SHARED_LIBRARY = -9; // 0xfffffff7
-    field public static final int INSTALL_FAILED_NEWER_SDK = -14; // 0xfffffff2
-    field public static final int INSTALL_FAILED_NO_SHARED_USER = -6; // 0xfffffffa
-    field public static final int INSTALL_FAILED_OLDER_SDK = -12; // 0xfffffff4
-    field public static final int INSTALL_FAILED_PACKAGE_CHANGED = -23; // 0xffffffe9
-    field public static final int INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE = -26; // 0xffffffe6
-    field public static final int INSTALL_FAILED_REPLACE_COULDNT_DELETE = -10; // 0xfffffff6
-    field public static final int INSTALL_FAILED_SANDBOX_VERSION_DOWNGRADE = -27; // 0xffffffe5
-    field public static final int INSTALL_FAILED_SHARED_USER_INCOMPATIBLE = -8; // 0xfffffff8
-    field public static final int INSTALL_FAILED_TEST_ONLY = -15; // 0xfffffff1
-    field public static final int INSTALL_FAILED_UPDATE_INCOMPATIBLE = -7; // 0xfffffff9
-    field public static final int INSTALL_FAILED_VERIFICATION_FAILURE = -22; // 0xffffffea
-    field public static final int INSTALL_FAILED_VERIFICATION_TIMEOUT = -21; // 0xffffffeb
-    field public static final int INSTALL_PARSE_FAILED_BAD_MANIFEST = -101; // 0xffffff9b
-    field public static final int INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME = -106; // 0xffffff96
-    field public static final int INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID = -107; // 0xffffff95
-    field public static final int INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING = -105; // 0xffffff97
-    field public static final int INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES = -104; // 0xffffff98
-    field public static final int INSTALL_PARSE_FAILED_MANIFEST_EMPTY = -109; // 0xffffff93
-    field public static final int INSTALL_PARSE_FAILED_MANIFEST_MALFORMED = -108; // 0xffffff94
-    field public static final int INSTALL_PARSE_FAILED_NOT_APK = -100; // 0xffffff9c
-    field public static final int INSTALL_PARSE_FAILED_NO_CERTIFICATES = -103; // 0xffffff99
-    field public static final int INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION = -102; // 0xffffff9a
-    field public static final int INSTALL_SUCCEEDED = 1; // 0x1
-    field public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS = 2; // 0x2
-    field public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK = 4; // 0x4
-    field public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK = 1; // 0x1
-    field public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER = 3; // 0x3
-    field public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED = 0; // 0x0
-    field public static final int INTENT_FILTER_VERIFICATION_FAILURE = -1; // 0xffffffff
-    field public static final int INTENT_FILTER_VERIFICATION_SUCCESS = 1; // 0x1
-    field @Deprecated public static final int MASK_PERMISSION_FLAGS = 255; // 0xff
-    field public static final int MATCH_ANY_USER = 4194304; // 0x400000
-    field public static final int MATCH_FACTORY_ONLY = 2097152; // 0x200000
-    field public static final int MATCH_INSTANT = 8388608; // 0x800000
-    field public static final int MODULE_APEX_NAME = 1; // 0x1
-    field public static final int RESTRICTION_HIDE_FROM_SUGGESTIONS = 1; // 0x1
-    field public static final int RESTRICTION_HIDE_NOTIFICATIONS = 2; // 0x2
-    field public static final int RESTRICTION_NONE = 0; // 0x0
-  }
-
-  public abstract static class PackageManager.DexModuleRegisterCallback {
-    ctor public PackageManager.DexModuleRegisterCallback();
-    method public abstract void onDexModuleRegistered(String, boolean, String);
-  }
-
-  public static interface PackageManager.OnPermissionsChangedListener {
-    method public void onPermissionsChanged(int);
-  }
-
-  @IntDef(prefix={"FLAG_PERMISSION_"}, value={android.content.pm.PackageManager.FLAG_PERMISSION_USER_SET, android.content.pm.PackageManager.FLAG_PERMISSION_USER_FIXED, android.content.pm.PackageManager.FLAG_PERMISSION_POLICY_FIXED, android.content.pm.PackageManager.FLAG_PERMISSION_REVOKE_ON_UPGRADE, android.content.pm.PackageManager.FLAG_PERMISSION_SYSTEM_FIXED, android.content.pm.PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT, android.content.pm.PackageManager.FLAG_PERMISSION_USER_SENSITIVE_WHEN_GRANTED, android.content.pm.PackageManager.FLAG_PERMISSION_USER_SENSITIVE_WHEN_DENIED, android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT, android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_SYSTEM_EXEMPT, android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_INSTALLER_EXEMPT, android.content.pm.PackageManager.FLAG_PERMISSION_APPLY_RESTRICTION, android.content.pm.PackageManager.FLAG_PERMISSION_GRANTED_BY_ROLE, android.content.pm.PackageManager.FLAG_PERMISSION_REVOKED_COMPAT, android.content.pm.PackageManager.FLAG_PERMISSION_ONE_TIME, android.content.pm.PackageManager.FLAG_PERMISSION_AUTO_REVOKED}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface PackageManager.PermissionFlags {
-  }
-
-  public class PermissionGroupInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
-    field @StringRes public final int backgroundRequestDetailResourceId;
-    field @StringRes public final int backgroundRequestResourceId;
-    field @StringRes public final int requestDetailResourceId;
-    field @StringRes public int requestRes;
-  }
-
-  public class PermissionInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
-    field public static final int FLAG_REMOVED = 2; // 0x2
-    field public static final int PROTECTION_FLAG_APP_PREDICTOR = 2097152; // 0x200000
-    field public static final int PROTECTION_FLAG_COMPANION = 8388608; // 0x800000
-    field public static final int PROTECTION_FLAG_CONFIGURATOR = 524288; // 0x80000
-    field public static final int PROTECTION_FLAG_DOCUMENTER = 262144; // 0x40000
-    field public static final int PROTECTION_FLAG_INCIDENT_REPORT_APPROVER = 1048576; // 0x100000
-    field public static final int PROTECTION_FLAG_OEM = 16384; // 0x4000
-    field public static final int PROTECTION_FLAG_RETAIL_DEMO = 16777216; // 0x1000000
-    field public static final int PROTECTION_FLAG_SYSTEM_TEXT_CLASSIFIER = 65536; // 0x10000
-    field public static final int PROTECTION_FLAG_WELLBEING = 131072; // 0x20000
-    field @Nullable public final String backgroundPermission;
-    field @StringRes public int requestRes;
-  }
-
-  public class ResolveInfo implements android.os.Parcelable {
-    field public boolean handleAllWebDataURI;
-  }
-
-  public final class ShortcutInfo implements android.os.Parcelable {
-    method @Nullable public android.app.Person[] getPersons();
-  }
-
-  public class ShortcutManager {
-    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_APP_PREDICTIONS) public java.util.List<android.content.pm.ShortcutManager.ShareShortcutInfo> getShareTargets(@NonNull android.content.IntentFilter);
-    method public boolean hasShareTargets(@NonNull String);
-  }
-
-  public static final class ShortcutManager.ShareShortcutInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.content.pm.ShortcutInfo getShortcutInfo();
-    method @NonNull public android.content.ComponentName getTargetComponent();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ShortcutManager.ShareShortcutInfo> CREATOR;
-  }
-
-  public final class SuspendDialogInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int BUTTON_ACTION_MORE_DETAILS = 0; // 0x0
-    field public static final int BUTTON_ACTION_UNSUSPEND = 1; // 0x1
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.SuspendDialogInfo> CREATOR;
-  }
-
-  public static final class SuspendDialogInfo.Builder {
-    ctor public SuspendDialogInfo.Builder();
-    method @NonNull public android.content.pm.SuspendDialogInfo build();
-    method @NonNull public android.content.pm.SuspendDialogInfo.Builder setIcon(@DrawableRes int);
-    method @NonNull public android.content.pm.SuspendDialogInfo.Builder setMessage(@NonNull String);
-    method @NonNull public android.content.pm.SuspendDialogInfo.Builder setMessage(@StringRes int);
-    method @NonNull public android.content.pm.SuspendDialogInfo.Builder setNeutralButtonAction(int);
-    method @NonNull public android.content.pm.SuspendDialogInfo.Builder setNeutralButtonText(@StringRes int);
-    method @NonNull public android.content.pm.SuspendDialogInfo.Builder setTitle(@StringRes int);
-  }
-
-}
-
-package android.content.pm.dex {
-
-  public class ArtManager {
-    method @RequiresPermission(allOf={android.Manifest.permission.READ_RUNTIME_PROFILES, android.Manifest.permission.PACKAGE_USAGE_STATS}) public boolean isRuntimeProfilingEnabled(int);
-    method @RequiresPermission(allOf={android.Manifest.permission.READ_RUNTIME_PROFILES, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void snapshotRuntimeProfile(int, @Nullable String, @Nullable String, @NonNull java.util.concurrent.Executor, @NonNull android.content.pm.dex.ArtManager.SnapshotRuntimeProfileCallback);
-    field public static final int PROFILE_APPS = 0; // 0x0
-    field public static final int PROFILE_BOOT_IMAGE = 1; // 0x1
-    field public static final int SNAPSHOT_FAILED_CODE_PATH_NOT_FOUND = 1; // 0x1
-    field public static final int SNAPSHOT_FAILED_INTERNAL_ERROR = 2; // 0x2
-    field public static final int SNAPSHOT_FAILED_PACKAGE_NOT_FOUND = 0; // 0x0
-  }
-
-  public abstract static class ArtManager.SnapshotRuntimeProfileCallback {
-    ctor public ArtManager.SnapshotRuntimeProfileCallback();
-    method public abstract void onError(int);
-    method public abstract void onSuccess(android.os.ParcelFileDescriptor);
-  }
-
-}
-
-package android.content.pm.permission {
-
-  @Deprecated public final class RuntimePermissionPresentationInfo implements android.os.Parcelable {
-    ctor @Deprecated public RuntimePermissionPresentationInfo(CharSequence, boolean, boolean);
-    method @Deprecated public int describeContents();
-    method @Deprecated @NonNull public CharSequence getLabel();
-    method @Deprecated public boolean isGranted();
-    method @Deprecated public boolean isStandard();
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.content.pm.permission.RuntimePermissionPresentationInfo> CREATOR;
-  }
-
-}
-
-package android.content.rollback {
-
-  public final class PackageRollbackInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public String getPackageName();
-    method @NonNull public android.content.pm.VersionedPackage getVersionRolledBackFrom();
-    method @NonNull public android.content.pm.VersionedPackage getVersionRolledBackTo();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.rollback.PackageRollbackInfo> CREATOR;
-  }
-
-  public final class RollbackInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public java.util.List<android.content.pm.VersionedPackage> getCausePackages();
-    method public int getCommittedSessionId();
-    method @NonNull public java.util.List<android.content.rollback.PackageRollbackInfo> getPackages();
-    method public int getRollbackId();
-    method public boolean isStaged();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.rollback.RollbackInfo> CREATOR;
-  }
-
-  public final class RollbackManager {
-    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_ROLLBACKS, "android.permission.TEST_MANAGE_ROLLBACKS"}) public void commitRollback(int, @NonNull java.util.List<android.content.pm.VersionedPackage>, @NonNull android.content.IntentSender);
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_ROLLBACKS, "android.permission.TEST_MANAGE_ROLLBACKS"}) public java.util.List<android.content.rollback.RollbackInfo> getAvailableRollbacks();
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_ROLLBACKS, "android.permission.TEST_MANAGE_ROLLBACKS"}) public java.util.List<android.content.rollback.RollbackInfo> getRecentlyCommittedRollbacks();
-    field public static final String EXTRA_STATUS = "android.content.rollback.extra.STATUS";
-    field public static final String EXTRA_STATUS_MESSAGE = "android.content.rollback.extra.STATUS_MESSAGE";
-    field public static final int STATUS_FAILURE = 1; // 0x1
-    field public static final int STATUS_FAILURE_INSTALL = 3; // 0x3
-    field public static final int STATUS_FAILURE_ROLLBACK_UNAVAILABLE = 2; // 0x2
-    field public static final int STATUS_SUCCESS = 0; // 0x0
-  }
-
-}
-
-package android.debug {
-
-  public class AdbManager {
-    method @RequiresPermission(android.Manifest.permission.MANAGE_DEBUGGING) public boolean isAdbWifiQrSupported();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_DEBUGGING) public boolean isAdbWifiSupported();
-  }
-
-}
-
-package android.hardware {
-
-  public final class Sensor {
-    method public java.util.UUID getUuid();
-    method public boolean isDataInjectionSupported();
-    field public static final String STRING_TYPE_DYNAMIC_SENSOR_META = "android.sensor.dynamic_sensor_meta";
-    field public static final String STRING_TYPE_WRIST_TILT_GESTURE = "android.sensor.wrist_tilt_gesture";
-    field public static final int TYPE_DYNAMIC_SENSOR_META = 32; // 0x20
-    field public static final int TYPE_WRIST_TILT_GESTURE = 26; // 0x1a
-  }
-
-  public abstract class SensorManager {
-    method public boolean initDataInjection(boolean);
-    method public boolean injectSensorData(android.hardware.Sensor, float[], int, long);
-  }
-
-}
-
-package android.hardware.biometrics {
-
-  public static interface BiometricManager.Authenticators {
-    field @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static final int BIOMETRIC_CONVENIENCE = 4095; // 0xfff
-    field @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static final int EMPTY_SET = 0; // 0x0
-  }
-
-}
-
-package android.hardware.camera2 {
-
-  public abstract class CameraDevice implements java.lang.AutoCloseable {
-    method @Deprecated public abstract void createCustomCaptureSession(android.hardware.camera2.params.InputConfiguration, @NonNull java.util.List<android.hardware.camera2.params.OutputConfiguration>, int, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
-    field public static final int SESSION_OPERATION_MODE_CONSTRAINED_HIGH_SPEED = 1; // 0x1
-    field public static final int SESSION_OPERATION_MODE_NORMAL = 0; // 0x0
-    field public static final int SESSION_OPERATION_MODE_VENDOR_START = 32768; // 0x8000
-  }
-
-}
-
-package android.hardware.camera2.params {
-
-  public final class OutputConfiguration implements android.os.Parcelable {
-    ctor public OutputConfiguration(@NonNull android.view.Surface, int);
-    ctor public OutputConfiguration(int, @NonNull android.view.Surface, int);
-    method public int getRotation();
-    field public static final int ROTATION_0 = 0; // 0x0
-    field public static final int ROTATION_180 = 2; // 0x2
-    field public static final int ROTATION_270 = 3; // 0x3
-    field public static final int ROTATION_90 = 1; // 0x1
-  }
-
-}
-
-package android.hardware.display {
-
-  public final class AmbientBrightnessDayStats implements android.os.Parcelable {
-    method public int describeContents();
-    method public float[] getBucketBoundaries();
-    method public java.time.LocalDate getLocalDate();
-    method public float[] getStats();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.display.AmbientBrightnessDayStats> CREATOR;
-  }
-
-  public final class BrightnessChangeEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.display.BrightnessChangeEvent> CREATOR;
-    field public final float batteryLevel;
-    field public final float brightness;
-    field public final long colorSampleDuration;
-    field public final int colorTemperature;
-    field @Nullable public final long[] colorValueBuckets;
-    field public final boolean isDefaultBrightnessConfig;
-    field public final boolean isUserSetBrightness;
-    field public final float lastBrightness;
-    field public final long[] luxTimestamps;
-    field public final float[] luxValues;
-    field public final boolean nightMode;
-    field public final String packageName;
-    field public final float powerBrightnessFactor;
-    field public final long timeStamp;
-  }
-
-  public final class BrightnessConfiguration implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.hardware.display.BrightnessCorrection getCorrectionByCategory(int);
-    method @Nullable public android.hardware.display.BrightnessCorrection getCorrectionByPackageName(@NonNull String);
-    method public android.util.Pair<float[],float[]> getCurve();
-    method public float getShortTermModelLowerLuxMultiplier();
-    method public long getShortTermModelTimeoutMillis();
-    method public float getShortTermModelUpperLuxMultiplier();
-    method public boolean shouldCollectColorSamples();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.display.BrightnessConfiguration> CREATOR;
-    field public static final long SHORT_TERM_TIMEOUT_UNSET = -1L; // 0xffffffffffffffffL
-  }
-
-  public static class BrightnessConfiguration.Builder {
-    ctor public BrightnessConfiguration.Builder(float[], float[]);
-    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder addCorrectionByCategory(int, @NonNull android.hardware.display.BrightnessCorrection);
-    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder addCorrectionByPackageName(@NonNull String, @NonNull android.hardware.display.BrightnessCorrection);
-    method @NonNull public android.hardware.display.BrightnessConfiguration build();
-    method public int getMaxCorrectionsByCategory();
-    method public int getMaxCorrectionsByPackageName();
-    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder setDescription(@Nullable String);
-    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder setShortTermModelLowerLuxMultiplier(@FloatRange(from=0.0f) float);
-    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder setShortTermModelTimeoutMillis(long);
-    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder setShortTermModelUpperLuxMultiplier(@FloatRange(from=0.0f) float);
-    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder setShouldCollectColorSamples(boolean);
-  }
-
-  public final class BrightnessCorrection implements android.os.Parcelable {
-    method @FloatRange(from=0.0) public float apply(@FloatRange(from=0.0) float);
-    method @NonNull public static android.hardware.display.BrightnessCorrection createScaleAndTranslateLog(float, float);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.display.BrightnessCorrection> CREATOR;
-  }
-
-  public final class ColorDisplayManager {
-    method @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public int getNightDisplayAutoMode();
-    method @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public int getTransformCapabilities();
-    method @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public boolean setAppSaturationLevel(@NonNull String, @IntRange(from=0, to=100) int);
-    method @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public boolean setNightDisplayAutoMode(int);
-    method @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public boolean setNightDisplayCustomEndTime(@NonNull java.time.LocalTime);
-    method @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public boolean setNightDisplayCustomStartTime(@NonNull java.time.LocalTime);
-    method @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public boolean setSaturationLevel(@IntRange(from=0, to=100) int);
-    field public static final int AUTO_MODE_CUSTOM_TIME = 1; // 0x1
-    field public static final int AUTO_MODE_DISABLED = 0; // 0x0
-    field public static final int AUTO_MODE_TWILIGHT = 2; // 0x2
-    field public static final int CAPABILITY_HARDWARE_ACCELERATION_GLOBAL = 2; // 0x2
-    field public static final int CAPABILITY_HARDWARE_ACCELERATION_PER_APP = 4; // 0x4
-    field public static final int CAPABILITY_NONE = 0; // 0x0
-    field public static final int CAPABILITY_PROTECTED_CONTENT = 1; // 0x1
-  }
-
-  public final class DisplayManager {
-    method @RequiresPermission(android.Manifest.permission.ACCESS_AMBIENT_LIGHT_STATS) public java.util.List<android.hardware.display.AmbientBrightnessDayStats> getAmbientBrightnessStats();
-    method @RequiresPermission(android.Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS) public android.hardware.display.BrightnessConfiguration getBrightnessConfiguration();
-    method @RequiresPermission(android.Manifest.permission.BRIGHTNESS_SLIDER_USAGE) public java.util.List<android.hardware.display.BrightnessChangeEvent> getBrightnessEvents();
-    method @Nullable @RequiresPermission(android.Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS) public android.hardware.display.BrightnessConfiguration getDefaultBrightnessConfiguration();
-    method public android.util.Pair<float[],float[]> getMinimumBrightnessCurve();
-    method public android.graphics.Point getStableDisplaySize();
-    method @RequiresPermission(android.Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS) public void setBrightnessConfiguration(android.hardware.display.BrightnessConfiguration);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_SATURATION) public void setSaturationLevel(float);
-  }
-
-}
-
-package android.hardware.hdmi {
-
-  public abstract class HdmiClient {
-    method public android.hardware.hdmi.HdmiDeviceInfo getActiveSource();
-    method public void sendKeyEvent(int, boolean);
-    method public void sendVendorCommand(int, byte[], boolean);
-    method public void setVendorCommandListener(@NonNull android.hardware.hdmi.HdmiControlManager.VendorCommandListener);
-  }
-
-  public final class HdmiControlManager {
-    method @RequiresPermission(android.Manifest.permission.HDMI_CEC) public void addHotplugEventListener(android.hardware.hdmi.HdmiControlManager.HotplugEventListener);
-    method @Nullable public android.hardware.hdmi.HdmiClient getClient(int);
-    method @NonNull public java.util.List<android.hardware.hdmi.HdmiDeviceInfo> getConnectedDevices();
-    method public int getPhysicalAddress();
-    method @Nullable public android.hardware.hdmi.HdmiPlaybackClient getPlaybackClient();
-    method @Nullable public android.hardware.hdmi.HdmiSwitchClient getSwitchClient();
-    method @Nullable public android.hardware.hdmi.HdmiTvClient getTvClient();
-    method public boolean isDeviceConnected(@NonNull android.hardware.hdmi.HdmiDeviceInfo);
-    method public void powerOffDevice(@NonNull android.hardware.hdmi.HdmiDeviceInfo);
-    method @RequiresPermission(android.Manifest.permission.HDMI_CEC) public void removeHotplugEventListener(android.hardware.hdmi.HdmiControlManager.HotplugEventListener);
-    method public void setActiveSource(@NonNull android.hardware.hdmi.HdmiDeviceInfo);
-    method @RequiresPermission(android.Manifest.permission.HDMI_CEC) public void setStandbyMode(boolean);
-    field public static final String ACTION_OSD_MESSAGE = "android.hardware.hdmi.action.OSD_MESSAGE";
-    field public static final int AVR_VOLUME_MUTED = 101; // 0x65
-    field public static final int CLEAR_TIMER_STATUS_CEC_DISABLE = 162; // 0xa2
-    field public static final int CLEAR_TIMER_STATUS_CHECK_RECORDER_CONNECTION = 160; // 0xa0
-    field public static final int CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE = 161; // 0xa1
-    field public static final int CLEAR_TIMER_STATUS_TIMER_CLEARED = 128; // 0x80
-    field public static final int CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_NO_INFO_AVAILABLE = 2; // 0x2
-    field public static final int CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_NO_MATCHING = 1; // 0x1
-    field public static final int CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_RECORDING = 0; // 0x0
-    field public static final int CONTROL_STATE_CHANGED_REASON_SETTING = 1; // 0x1
-    field public static final int CONTROL_STATE_CHANGED_REASON_STANDBY = 3; // 0x3
-    field public static final int CONTROL_STATE_CHANGED_REASON_START = 0; // 0x0
-    field public static final int CONTROL_STATE_CHANGED_REASON_WAKEUP = 2; // 0x2
-    field public static final int DEVICE_EVENT_ADD_DEVICE = 1; // 0x1
-    field public static final int DEVICE_EVENT_REMOVE_DEVICE = 2; // 0x2
-    field public static final int DEVICE_EVENT_UPDATE_DEVICE = 3; // 0x3
-    field public static final String EXTRA_MESSAGE_EXTRA_PARAM1 = "android.hardware.hdmi.extra.MESSAGE_EXTRA_PARAM1";
-    field public static final String EXTRA_MESSAGE_ID = "android.hardware.hdmi.extra.MESSAGE_ID";
-    field public static final int ONE_TOUCH_RECORD_ALREADY_RECORDING = 18; // 0x12
-    field public static final int ONE_TOUCH_RECORD_CEC_DISABLED = 51; // 0x33
-    field public static final int ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION = 49; // 0x31
-    field public static final int ONE_TOUCH_RECORD_DISALLOW_TO_COPY = 13; // 0xd
-    field public static final int ONE_TOUCH_RECORD_DISALLOW_TO_FUTHER_COPIES = 14; // 0xe
-    field public static final int ONE_TOUCH_RECORD_FAIL_TO_RECORD_DISPLAYED_SCREEN = 50; // 0x32
-    field public static final int ONE_TOUCH_RECORD_INVALID_EXTERNAL_PHYSICAL_ADDRESS = 10; // 0xa
-    field public static final int ONE_TOUCH_RECORD_INVALID_EXTERNAL_PLUG_NUMBER = 9; // 0x9
-    field public static final int ONE_TOUCH_RECORD_MEDIA_PROBLEM = 21; // 0x15
-    field public static final int ONE_TOUCH_RECORD_MEDIA_PROTECTED = 19; // 0x13
-    field public static final int ONE_TOUCH_RECORD_NOT_ENOUGH_SPACE = 22; // 0x16
-    field public static final int ONE_TOUCH_RECORD_NO_MEDIA = 16; // 0x10
-    field public static final int ONE_TOUCH_RECORD_NO_OR_INSUFFICIENT_CA_ENTITLEMENTS = 12; // 0xc
-    field public static final int ONE_TOUCH_RECORD_NO_SOURCE_SIGNAL = 20; // 0x14
-    field public static final int ONE_TOUCH_RECORD_OTHER_REASON = 31; // 0x1f
-    field public static final int ONE_TOUCH_RECORD_PARENT_LOCK_ON = 23; // 0x17
-    field public static final int ONE_TOUCH_RECORD_PLAYING = 17; // 0x11
-    field public static final int ONE_TOUCH_RECORD_PREVIOUS_RECORDING_IN_PROGRESS = 48; // 0x30
-    field public static final int ONE_TOUCH_RECORD_RECORDING_ALREADY_TERMINATED = 27; // 0x1b
-    field public static final int ONE_TOUCH_RECORD_RECORDING_ANALOGUE_SERVICE = 3; // 0x3
-    field public static final int ONE_TOUCH_RECORD_RECORDING_CURRENTLY_SELECTED_SOURCE = 1; // 0x1
-    field public static final int ONE_TOUCH_RECORD_RECORDING_DIGITAL_SERVICE = 2; // 0x2
-    field public static final int ONE_TOUCH_RECORD_RECORDING_EXTERNAL_INPUT = 4; // 0x4
-    field public static final int ONE_TOUCH_RECORD_RECORDING_TERMINATED_NORMALLY = 26; // 0x1a
-    field public static final int ONE_TOUCH_RECORD_UNABLE_ANALOGUE_SERVICE = 6; // 0x6
-    field public static final int ONE_TOUCH_RECORD_UNABLE_DIGITAL_SERVICE = 5; // 0x5
-    field public static final int ONE_TOUCH_RECORD_UNABLE_SELECTED_SERVICE = 7; // 0x7
-    field public static final int ONE_TOUCH_RECORD_UNSUPPORTED_CA = 11; // 0xb
-    field public static final int OSD_MESSAGE_ARC_CONNECTED_INVALID_PORT = 1; // 0x1
-    field public static final int OSD_MESSAGE_AVR_VOLUME_CHANGED = 2; // 0x2
-    field public static final int POWER_STATUS_ON = 0; // 0x0
-    field public static final int POWER_STATUS_STANDBY = 1; // 0x1
-    field public static final int POWER_STATUS_TRANSIENT_TO_ON = 2; // 0x2
-    field public static final int POWER_STATUS_TRANSIENT_TO_STANDBY = 3; // 0x3
-    field public static final int POWER_STATUS_UNKNOWN = -1; // 0xffffffff
-    field @Deprecated public static final int RESULT_ALREADY_IN_PROGRESS = 4; // 0x4
-    field public static final int RESULT_COMMUNICATION_FAILED = 7; // 0x7
-    field public static final int RESULT_EXCEPTION = 5; // 0x5
-    field public static final int RESULT_INCORRECT_MODE = 6; // 0x6
-    field public static final int RESULT_SOURCE_NOT_AVAILABLE = 2; // 0x2
-    field public static final int RESULT_SUCCESS = 0; // 0x0
-    field public static final int RESULT_TARGET_NOT_AVAILABLE = 3; // 0x3
-    field public static final int RESULT_TIMEOUT = 1; // 0x1
-    field public static final int TIMER_RECORDING_RESULT_EXTRA_CEC_DISABLED = 3; // 0x3
-    field public static final int TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION = 1; // 0x1
-    field public static final int TIMER_RECORDING_RESULT_EXTRA_FAIL_TO_RECORD_SELECTED_SOURCE = 2; // 0x2
-    field public static final int TIMER_RECORDING_RESULT_EXTRA_NO_ERROR = 0; // 0x0
-    field public static final int TIMER_RECORDING_TYPE_ANALOGUE = 2; // 0x2
-    field public static final int TIMER_RECORDING_TYPE_DIGITAL = 1; // 0x1
-    field public static final int TIMER_RECORDING_TYPE_EXTERNAL = 3; // 0x3
-    field public static final int TIMER_STATUS_MEDIA_INFO_NOT_PRESENT = 2; // 0x2
-    field public static final int TIMER_STATUS_MEDIA_INFO_PRESENT_NOT_PROTECTED = 0; // 0x0
-    field public static final int TIMER_STATUS_MEDIA_INFO_PRESENT_PROTECTED = 1; // 0x1
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_CA_NOT_SUPPORTED = 6; // 0x6
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_CLOCK_FAILURE = 10; // 0xa
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_DATE_OUT_OF_RANGE = 2; // 0x2
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_DUPLICATED = 14; // 0xe
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_INVALID_EXTERNAL_PHYSICAL_NUMBER = 5; // 0x5
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_INVALID_EXTERNAL_PLUG_NUMBER = 4; // 0x4
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_INVALID_SEQUENCE = 3; // 0x3
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_NO_CA_ENTITLEMENTS = 7; // 0x7
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_NO_FREE_TIME = 1; // 0x1
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_PARENTAL_LOCK_ON = 9; // 0x9
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_UNSUPPORTED_RESOLUTION = 8; // 0x8
-    field public static final int TIMER_STATUS_PROGRAMMED_INFO_ENOUGH_SPACE = 8; // 0x8
-    field public static final int TIMER_STATUS_PROGRAMMED_INFO_MIGHT_NOT_ENOUGH_SPACE = 11; // 0xb
-    field public static final int TIMER_STATUS_PROGRAMMED_INFO_NOT_ENOUGH_SPACE = 9; // 0x9
-    field public static final int TIMER_STATUS_PROGRAMMED_INFO_NO_MEDIA_INFO = 10; // 0xa
-  }
-
-  @IntDef({android.hardware.hdmi.HdmiControlManager.RESULT_SUCCESS, android.hardware.hdmi.HdmiControlManager.RESULT_TIMEOUT, android.hardware.hdmi.HdmiControlManager.RESULT_SOURCE_NOT_AVAILABLE, android.hardware.hdmi.HdmiControlManager.RESULT_TARGET_NOT_AVAILABLE, android.hardware.hdmi.HdmiControlManager.RESULT_ALREADY_IN_PROGRESS, android.hardware.hdmi.HdmiControlManager.RESULT_EXCEPTION, android.hardware.hdmi.HdmiControlManager.RESULT_INCORRECT_MODE, android.hardware.hdmi.HdmiControlManager.RESULT_COMMUNICATION_FAILED}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public static @interface HdmiControlManager.ControlCallbackResult {
-  }
-
-  public static interface HdmiControlManager.HotplugEventListener {
-    method public void onReceived(android.hardware.hdmi.HdmiHotplugEvent);
-  }
-
-  public static interface HdmiControlManager.VendorCommandListener {
-    method public void onControlStateChanged(boolean, int);
-    method public void onReceived(int, int, byte[], boolean);
-  }
-
-  public class HdmiDeviceInfo implements android.os.Parcelable {
-    ctor public HdmiDeviceInfo();
-    method public int describeContents();
-    method public int getAdopterId();
-    method public int getDeviceId();
-    method public int getDevicePowerStatus();
-    method public int getDeviceType();
-    method public String getDisplayName();
-    method public int getId();
-    method public int getLogicalAddress();
-    method public int getPhysicalAddress();
-    method public int getPortId();
-    method public int getVendorId();
-    method public static int idForCecDevice(int);
-    method public static int idForHardware(int);
-    method public static int idForMhlDevice(int);
-    method public boolean isCecDevice();
-    method public boolean isInactivated();
-    method public boolean isMhlDevice();
-    method public boolean isSourceType();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ADDR_INTERNAL = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.hdmi.HdmiDeviceInfo> CREATOR;
-    field public static final int DEVICE_AUDIO_SYSTEM = 5; // 0x5
-    field public static final int DEVICE_INACTIVE = -1; // 0xffffffff
-    field public static final int DEVICE_PLAYBACK = 4; // 0x4
-    field public static final int DEVICE_RECORDER = 1; // 0x1
-    field public static final int DEVICE_RESERVED = 2; // 0x2
-    field public static final int DEVICE_TUNER = 3; // 0x3
-    field public static final int DEVICE_TV = 0; // 0x0
-    field public static final int ID_INVALID = 65535; // 0xffff
-    field public static final android.hardware.hdmi.HdmiDeviceInfo INACTIVE_DEVICE;
-    field public static final int PATH_INTERNAL = 0; // 0x0
-    field public static final int PATH_INVALID = 65535; // 0xffff
-    field public static final int PORT_INVALID = -1; // 0xffffffff
-  }
-
-  public final class HdmiHotplugEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getPort();
-    method public boolean isConnected();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.hdmi.HdmiHotplugEvent> CREATOR;
-  }
-
-  public final class HdmiPlaybackClient extends android.hardware.hdmi.HdmiClient {
-    method public int getDeviceType();
-    method public void oneTouchPlay(android.hardware.hdmi.HdmiPlaybackClient.OneTouchPlayCallback);
-    method public void queryDisplayStatus(android.hardware.hdmi.HdmiPlaybackClient.DisplayStatusCallback);
-    method public void sendStandby();
-  }
-
-  public static interface HdmiPlaybackClient.DisplayStatusCallback {
-    method public void onComplete(int);
-  }
-
-  public static interface HdmiPlaybackClient.OneTouchPlayCallback {
-    method public void onComplete(int);
-  }
-
-  public final class HdmiPortInfo implements android.os.Parcelable {
-    ctor public HdmiPortInfo(int, int, int, boolean, boolean, boolean);
-    method public int describeContents();
-    method public int getAddress();
-    method public int getId();
-    method public int getType();
-    method public boolean isArcSupported();
-    method public boolean isCecSupported();
-    method public boolean isMhlSupported();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.hdmi.HdmiPortInfo> CREATOR;
-    field public static final int PORT_INPUT = 0; // 0x0
-    field public static final int PORT_OUTPUT = 1; // 0x1
-  }
-
-  public abstract class HdmiRecordListener {
-    ctor public HdmiRecordListener();
-    method public void onClearTimerRecordingResult(int, int);
-    method public void onOneTouchRecordResult(int, int);
-    method public abstract android.hardware.hdmi.HdmiRecordSources.RecordSource onOneTouchRecordSourceRequested(int);
-    method public void onTimerRecordingResult(int, android.hardware.hdmi.HdmiRecordListener.TimerStatusData);
-  }
-
-  public static class HdmiRecordListener.TimerStatusData {
-    method public int getDurationHour();
-    method public int getDurationMinute();
-    method public int getExtraError();
-    method public int getMediaInfo();
-    method public int getNotProgammedError();
-    method public int getProgrammedInfo();
-    method public boolean isOverlapped();
-    method public boolean isProgrammed();
-  }
-
-  public final class HdmiRecordSources {
-    method public static boolean checkRecordSource(byte[]);
-    method public static android.hardware.hdmi.HdmiRecordSources.OwnSource ofOwnSource();
-  }
-
-  public static final class HdmiRecordSources.AnalogueServiceSource extends android.hardware.hdmi.HdmiRecordSources.RecordSource {
-  }
-
-  public static final class HdmiRecordSources.DigitalServiceSource extends android.hardware.hdmi.HdmiRecordSources.RecordSource {
-  }
-
-  public static final class HdmiRecordSources.ExternalPhysicalAddress extends android.hardware.hdmi.HdmiRecordSources.RecordSource {
-  }
-
-  public static final class HdmiRecordSources.ExternalPlugData extends android.hardware.hdmi.HdmiRecordSources.RecordSource {
-  }
-
-  public static final class HdmiRecordSources.OwnSource extends android.hardware.hdmi.HdmiRecordSources.RecordSource {
-  }
-
-  public abstract static class HdmiRecordSources.RecordSource {
-  }
-
-  public class HdmiSwitchClient extends android.hardware.hdmi.HdmiClient {
-    method public int getDeviceType();
-    method @NonNull public java.util.List<android.hardware.hdmi.HdmiPortInfo> getPortInfo();
-    method public void selectPort(int, @NonNull android.hardware.hdmi.HdmiSwitchClient.OnSelectListener);
-    method public void selectPort(int, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.hdmi.HdmiSwitchClient.OnSelectListener);
-  }
-
-  public static interface HdmiSwitchClient.OnSelectListener {
-    method public void onSelect(@android.hardware.hdmi.HdmiControlManager.ControlCallbackResult int);
-  }
-
-  public class HdmiTimerRecordSources {
-    method public static boolean checkTimerRecordSource(int, byte[]);
-    method public static android.hardware.hdmi.HdmiTimerRecordSources.Duration durationOf(int, int);
-    method public static android.hardware.hdmi.HdmiTimerRecordSources.TimerRecordSource ofAnalogueSource(android.hardware.hdmi.HdmiTimerRecordSources.TimerInfo, android.hardware.hdmi.HdmiRecordSources.AnalogueServiceSource);
-    method public static android.hardware.hdmi.HdmiTimerRecordSources.TimerRecordSource ofDigitalSource(android.hardware.hdmi.HdmiTimerRecordSources.TimerInfo, android.hardware.hdmi.HdmiRecordSources.DigitalServiceSource);
-    method public static android.hardware.hdmi.HdmiTimerRecordSources.TimerRecordSource ofExternalPhysicalAddress(android.hardware.hdmi.HdmiTimerRecordSources.TimerInfo, android.hardware.hdmi.HdmiRecordSources.ExternalPhysicalAddress);
-    method public static android.hardware.hdmi.HdmiTimerRecordSources.TimerRecordSource ofExternalPlug(android.hardware.hdmi.HdmiTimerRecordSources.TimerInfo, android.hardware.hdmi.HdmiRecordSources.ExternalPlugData);
-    method public static android.hardware.hdmi.HdmiTimerRecordSources.Time timeOf(int, int);
-    method public static android.hardware.hdmi.HdmiTimerRecordSources.TimerInfo timerInfoOf(int, int, android.hardware.hdmi.HdmiTimerRecordSources.Time, android.hardware.hdmi.HdmiTimerRecordSources.Duration, int);
-    field public static final int RECORDING_SEQUENCE_REPEAT_FRIDAY = 32; // 0x20
-    field public static final int RECORDING_SEQUENCE_REPEAT_MONDAY = 2; // 0x2
-    field public static final int RECORDING_SEQUENCE_REPEAT_ONCE_ONLY = 0; // 0x0
-    field public static final int RECORDING_SEQUENCE_REPEAT_SATUREDAY = 64; // 0x40
-    field public static final int RECORDING_SEQUENCE_REPEAT_SUNDAY = 1; // 0x1
-    field public static final int RECORDING_SEQUENCE_REPEAT_THURSDAY = 16; // 0x10
-    field public static final int RECORDING_SEQUENCE_REPEAT_TUESDAY = 4; // 0x4
-    field public static final int RECORDING_SEQUENCE_REPEAT_WEDNESDAY = 8; // 0x8
-  }
-
-  public static final class HdmiTimerRecordSources.Duration {
-  }
-
-  public static final class HdmiTimerRecordSources.Time {
-  }
-
-  public static final class HdmiTimerRecordSources.TimerInfo {
-  }
-
-  public static final class HdmiTimerRecordSources.TimerRecordSource {
-  }
-
-  public final class HdmiTvClient extends android.hardware.hdmi.HdmiClient {
-    method public void clearTimerRecording(int, int, android.hardware.hdmi.HdmiTimerRecordSources.TimerRecordSource);
-    method public void deviceSelect(int, @NonNull android.hardware.hdmi.HdmiTvClient.SelectCallback);
-    method public java.util.List<android.hardware.hdmi.HdmiDeviceInfo> getDeviceList();
-    method public int getDeviceType();
-    method public void portSelect(int, @NonNull android.hardware.hdmi.HdmiTvClient.SelectCallback);
-    method public void sendMhlVendorCommand(int, int, int, byte[]);
-    method public void sendStandby(int);
-    method public void setHdmiMhlVendorCommandListener(android.hardware.hdmi.HdmiTvClient.HdmiMhlVendorCommandListener);
-    method public void setInputChangeListener(android.hardware.hdmi.HdmiTvClient.InputChangeListener);
-    method public void setRecordListener(@NonNull android.hardware.hdmi.HdmiRecordListener);
-    method public void setSystemAudioMode(boolean, android.hardware.hdmi.HdmiTvClient.SelectCallback);
-    method public void setSystemAudioMute(boolean);
-    method public void setSystemAudioVolume(int, int, int);
-    method public void startOneTouchRecord(int, @NonNull android.hardware.hdmi.HdmiRecordSources.RecordSource);
-    method public void startTimerRecording(int, int, android.hardware.hdmi.HdmiTimerRecordSources.TimerRecordSource);
-    method public void stopOneTouchRecord(int);
-    field public static final int VENDOR_DATA_SIZE = 16; // 0x10
-  }
-
-  public static interface HdmiTvClient.HdmiMhlVendorCommandListener {
-    method public void onReceived(int, int, int, byte[]);
-  }
-
-  public static interface HdmiTvClient.InputChangeListener {
-    method public void onChanged(android.hardware.hdmi.HdmiDeviceInfo);
-  }
-
-  public static interface HdmiTvClient.SelectCallback {
-    method public void onComplete(int);
-  }
-
-}
-
-package android.hardware.lights {
-
-  public final class Light implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getId();
-    method public int getOrdinal();
-    method public int getType();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.lights.Light> CREATOR;
-  }
-
-  public final class LightState implements android.os.Parcelable {
-    ctor public LightState(@ColorInt int);
-    method public int describeContents();
-    method @ColorInt public int getColor();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.lights.LightState> CREATOR;
-  }
-
-  public final class LightsManager {
-    method @NonNull @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public java.util.List<android.hardware.lights.Light> getLights();
-    method @NonNull @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public android.hardware.lights.LightsManager.LightsSession openSession();
-    field public static final int LIGHT_TYPE_MICROPHONE = 8; // 0x8
-  }
-
-  public final class LightsManager.LightsSession implements java.lang.AutoCloseable {
-    method @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public void close();
-    method @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public void requestLights(@NonNull android.hardware.lights.LightsRequest);
-  }
-
-  public final class LightsRequest {
-  }
-
-  public static final class LightsRequest.Builder {
-    ctor public LightsRequest.Builder();
-    method @NonNull public android.hardware.lights.LightsRequest build();
-    method @NonNull public android.hardware.lights.LightsRequest.Builder clearLight(@NonNull android.hardware.lights.Light);
-    method @NonNull public android.hardware.lights.LightsRequest.Builder setLight(@NonNull android.hardware.lights.Light, @NonNull android.hardware.lights.LightState);
-  }
-
-}
-
-package android.hardware.location {
-
-  public class ContextHubClient implements java.io.Closeable {
-    method public void close();
-    method @NonNull public android.hardware.location.ContextHubInfo getAttachedHub();
-    method @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public int sendMessageToNanoApp(@NonNull android.hardware.location.NanoAppMessage);
-  }
-
-  public class ContextHubClientCallback {
-    ctor public ContextHubClientCallback();
-    method public void onHubReset(android.hardware.location.ContextHubClient);
-    method public void onMessageFromNanoApp(android.hardware.location.ContextHubClient, android.hardware.location.NanoAppMessage);
-    method public void onNanoAppAborted(android.hardware.location.ContextHubClient, long, int);
-    method public void onNanoAppDisabled(android.hardware.location.ContextHubClient, long);
-    method public void onNanoAppEnabled(android.hardware.location.ContextHubClient, long);
-    method public void onNanoAppLoaded(android.hardware.location.ContextHubClient, long);
-    method public void onNanoAppUnloaded(android.hardware.location.ContextHubClient, long);
-  }
-
-  public class ContextHubInfo implements android.os.Parcelable {
-    ctor public ContextHubInfo();
-    method public int describeContents();
-    method public byte getChreApiMajorVersion();
-    method public byte getChreApiMinorVersion();
-    method public short getChrePatchVersion();
-    method public long getChrePlatformId();
-    method public int getId();
-    method public int getMaxPacketLengthBytes();
-    method public android.hardware.location.MemoryRegion[] getMemoryRegions();
-    method public String getName();
-    method public float getPeakMips();
-    method public float getPeakPowerDrawMw();
-    method public int getPlatformVersion();
-    method public float getSleepPowerDrawMw();
-    method public int getStaticSwVersion();
-    method public float getStoppedPowerDrawMw();
-    method public int[] getSupportedSensors();
-    method public String getToolchain();
-    method public int getToolchainVersion();
-    method public String getVendor();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.ContextHubInfo> CREATOR;
-  }
-
-  public class ContextHubIntentEvent {
-    method @NonNull public static android.hardware.location.ContextHubIntentEvent fromIntent(@NonNull android.content.Intent);
-    method @NonNull public android.hardware.location.ContextHubInfo getContextHubInfo();
-    method public int getEventType();
-    method public int getNanoAppAbortCode();
-    method public long getNanoAppId();
-    method @NonNull public android.hardware.location.NanoAppMessage getNanoAppMessage();
-  }
-
-  public final class ContextHubManager {
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubClient createClient(@NonNull android.hardware.location.ContextHubInfo, @NonNull android.hardware.location.ContextHubClientCallback, @NonNull java.util.concurrent.Executor);
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubClient createClient(@NonNull android.hardware.location.ContextHubInfo, @NonNull android.hardware.location.ContextHubClientCallback);
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubClient createClient(@NonNull android.hardware.location.ContextHubInfo, @NonNull android.app.PendingIntent, long);
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubTransaction<java.lang.Void> disableNanoApp(@NonNull android.hardware.location.ContextHubInfo, long);
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubTransaction<java.lang.Void> enableNanoApp(@NonNull android.hardware.location.ContextHubInfo, long);
-    method @Deprecated @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public int[] findNanoAppOnHub(int, @NonNull android.hardware.location.NanoAppFilter);
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public int[] getContextHubHandles();
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubInfo getContextHubInfo(int);
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public java.util.List<android.hardware.location.ContextHubInfo> getContextHubs();
-    method @Deprecated @Nullable @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.NanoAppInstanceInfo getNanoAppInstanceInfo(int);
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public int loadNanoApp(int, @NonNull android.hardware.location.NanoApp);
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubTransaction<java.lang.Void> loadNanoApp(@NonNull android.hardware.location.ContextHubInfo, @NonNull android.hardware.location.NanoAppBinary);
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubTransaction<java.util.List<android.hardware.location.NanoAppState>> queryNanoApps(@NonNull android.hardware.location.ContextHubInfo);
-    method @Deprecated public int registerCallback(@NonNull android.hardware.location.ContextHubManager.Callback);
-    method @Deprecated public int registerCallback(android.hardware.location.ContextHubManager.Callback, android.os.Handler);
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public int sendMessage(int, int, @NonNull android.hardware.location.ContextHubMessage);
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public int unloadNanoApp(int);
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubTransaction<java.lang.Void> unloadNanoApp(@NonNull android.hardware.location.ContextHubInfo, long);
-    method @Deprecated public int unregisterCallback(@NonNull android.hardware.location.ContextHubManager.Callback);
-    field public static final int EVENT_HUB_RESET = 6; // 0x6
-    field public static final int EVENT_NANOAPP_ABORTED = 4; // 0x4
-    field public static final int EVENT_NANOAPP_DISABLED = 3; // 0x3
-    field public static final int EVENT_NANOAPP_ENABLED = 2; // 0x2
-    field public static final int EVENT_NANOAPP_LOADED = 0; // 0x0
-    field public static final int EVENT_NANOAPP_MESSAGE = 5; // 0x5
-    field public static final int EVENT_NANOAPP_UNLOADED = 1; // 0x1
-    field public static final String EXTRA_CONTEXT_HUB_INFO = "android.hardware.location.extra.CONTEXT_HUB_INFO";
-    field public static final String EXTRA_EVENT_TYPE = "android.hardware.location.extra.EVENT_TYPE";
-    field public static final String EXTRA_MESSAGE = "android.hardware.location.extra.MESSAGE";
-    field public static final String EXTRA_NANOAPP_ABORT_CODE = "android.hardware.location.extra.NANOAPP_ABORT_CODE";
-    field public static final String EXTRA_NANOAPP_ID = "android.hardware.location.extra.NANOAPP_ID";
-  }
-
-  @Deprecated public abstract static class ContextHubManager.Callback {
-    ctor @Deprecated protected ContextHubManager.Callback();
-    method @Deprecated public abstract void onMessageReceipt(int, int, @NonNull android.hardware.location.ContextHubMessage);
-  }
-
-  @Deprecated public class ContextHubMessage implements android.os.Parcelable {
-    ctor @Deprecated public ContextHubMessage(int, int, byte[]);
-    method @Deprecated public int describeContents();
-    method @Deprecated public byte[] getData();
-    method @Deprecated public int getMsgType();
-    method @Deprecated public int getVersion();
-    method @Deprecated public void setMsgData(byte[]);
-    method @Deprecated public void setMsgType(int);
-    method @Deprecated public void setVersion(int);
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.ContextHubMessage> CREATOR;
-  }
-
-  public class ContextHubTransaction<T> {
-    method public int getType();
-    method public void setOnCompleteListener(@NonNull android.hardware.location.ContextHubTransaction.OnCompleteListener<T>, @NonNull java.util.concurrent.Executor);
-    method public void setOnCompleteListener(@NonNull android.hardware.location.ContextHubTransaction.OnCompleteListener<T>);
-    method public static String typeToString(int, boolean);
-    method public android.hardware.location.ContextHubTransaction.Response<T> waitForResponse(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException, java.util.concurrent.TimeoutException;
-    field public static final int RESULT_FAILED_AT_HUB = 5; // 0x5
-    field public static final int RESULT_FAILED_BAD_PARAMS = 2; // 0x2
-    field public static final int RESULT_FAILED_BUSY = 4; // 0x4
-    field public static final int RESULT_FAILED_HAL_UNAVAILABLE = 8; // 0x8
-    field public static final int RESULT_FAILED_SERVICE_INTERNAL_FAILURE = 7; // 0x7
-    field public static final int RESULT_FAILED_TIMEOUT = 6; // 0x6
-    field public static final int RESULT_FAILED_UNINITIALIZED = 3; // 0x3
-    field public static final int RESULT_FAILED_UNKNOWN = 1; // 0x1
-    field public static final int RESULT_SUCCESS = 0; // 0x0
-    field public static final int TYPE_DISABLE_NANOAPP = 3; // 0x3
-    field public static final int TYPE_ENABLE_NANOAPP = 2; // 0x2
-    field public static final int TYPE_LOAD_NANOAPP = 0; // 0x0
-    field public static final int TYPE_QUERY_NANOAPPS = 4; // 0x4
-    field public static final int TYPE_UNLOAD_NANOAPP = 1; // 0x1
-  }
-
-  @java.lang.FunctionalInterface public static interface ContextHubTransaction.OnCompleteListener<L> {
-    method public void onComplete(android.hardware.location.ContextHubTransaction<L>, android.hardware.location.ContextHubTransaction.Response<L>);
-  }
-
-  public static class ContextHubTransaction.Response<R> {
-    method public R getContents();
-    method public int getResult();
-  }
-
-  public final class GeofenceHardware {
-    method public boolean addGeofence(int, int, android.hardware.location.GeofenceHardwareRequest, android.hardware.location.GeofenceHardwareCallback);
-    method public int[] getMonitoringTypes();
-    method public int getStatusOfMonitoringType(int);
-    method public boolean pauseGeofence(int, int);
-    method public boolean registerForMonitorStateChangeCallback(int, android.hardware.location.GeofenceHardwareMonitorCallback);
-    method public boolean removeGeofence(int, int);
-    method public boolean resumeGeofence(int, int, int);
-    method public boolean unregisterForMonitorStateChangeCallback(int, android.hardware.location.GeofenceHardwareMonitorCallback);
-    field public static final int GEOFENCE_ENTERED = 1; // 0x1
-    field public static final int GEOFENCE_ERROR_ID_EXISTS = 2; // 0x2
-    field public static final int GEOFENCE_ERROR_ID_UNKNOWN = 3; // 0x3
-    field public static final int GEOFENCE_ERROR_INSUFFICIENT_MEMORY = 6; // 0x6
-    field public static final int GEOFENCE_ERROR_INVALID_TRANSITION = 4; // 0x4
-    field public static final int GEOFENCE_ERROR_TOO_MANY_GEOFENCES = 1; // 0x1
-    field public static final int GEOFENCE_EXITED = 2; // 0x2
-    field public static final int GEOFENCE_FAILURE = 5; // 0x5
-    field public static final int GEOFENCE_SUCCESS = 0; // 0x0
-    field public static final int GEOFENCE_UNCERTAIN = 4; // 0x4
-    field public static final int MONITORING_TYPE_FUSED_HARDWARE = 1; // 0x1
-    field public static final int MONITORING_TYPE_GPS_HARDWARE = 0; // 0x0
-    field public static final int MONITOR_CURRENTLY_AVAILABLE = 0; // 0x0
-    field public static final int MONITOR_CURRENTLY_UNAVAILABLE = 1; // 0x1
-    field public static final int MONITOR_UNSUPPORTED = 2; // 0x2
-    field public static final int SOURCE_TECHNOLOGY_BLUETOOTH = 16; // 0x10
-    field public static final int SOURCE_TECHNOLOGY_CELL = 8; // 0x8
-    field public static final int SOURCE_TECHNOLOGY_GNSS = 1; // 0x1
-    field public static final int SOURCE_TECHNOLOGY_SENSORS = 4; // 0x4
-    field public static final int SOURCE_TECHNOLOGY_WIFI = 2; // 0x2
-  }
-
-  public abstract class GeofenceHardwareCallback {
-    ctor public GeofenceHardwareCallback();
-    method public void onGeofenceAdd(int, int);
-    method public void onGeofencePause(int, int);
-    method public void onGeofenceRemove(int, int);
-    method public void onGeofenceResume(int, int);
-    method public void onGeofenceTransition(int, int, android.location.Location, long, int);
-  }
-
-  public abstract class GeofenceHardwareMonitorCallback {
-    ctor public GeofenceHardwareMonitorCallback();
-    method @Deprecated public void onMonitoringSystemChange(int, boolean, android.location.Location);
-    method public void onMonitoringSystemChange(android.hardware.location.GeofenceHardwareMonitorEvent);
-  }
-
-  public class GeofenceHardwareMonitorEvent implements android.os.Parcelable {
-    ctor public GeofenceHardwareMonitorEvent(int, int, int, android.location.Location);
-    method public int describeContents();
-    method public android.location.Location getLocation();
-    method public int getMonitoringStatus();
-    method public int getMonitoringType();
-    method public int getSourceTechnologies();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.GeofenceHardwareMonitorEvent> CREATOR;
-  }
-
-  public final class GeofenceHardwareRequest {
-    ctor public GeofenceHardwareRequest();
-    method public static android.hardware.location.GeofenceHardwareRequest createCircularGeofence(double, double, double);
-    method public int getLastTransition();
-    method public double getLatitude();
-    method public double getLongitude();
-    method public int getMonitorTransitions();
-    method public int getNotificationResponsiveness();
-    method public double getRadius();
-    method public int getSourceTechnologies();
-    method public int getUnknownTimer();
-    method public void setLastTransition(int);
-    method public void setMonitorTransitions(int);
-    method public void setNotificationResponsiveness(int);
-    method public void setSourceTechnologies(int);
-    method public void setUnknownTimer(int);
-  }
-
-  public class MemoryRegion implements android.os.Parcelable {
-    ctor public MemoryRegion(android.os.Parcel);
-    method public int describeContents();
-    method public int getCapacityBytes();
-    method public int getFreeCapacityBytes();
-    method public boolean isExecutable();
-    method public boolean isReadable();
-    method public boolean isWritable();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.MemoryRegion> CREATOR;
-  }
-
-  @Deprecated public class NanoApp implements android.os.Parcelable {
-    ctor @Deprecated public NanoApp();
-    ctor @Deprecated public NanoApp(int, byte[]);
-    ctor @Deprecated public NanoApp(long, byte[]);
-    method @Deprecated public int describeContents();
-    method @Deprecated public byte[] getAppBinary();
-    method @Deprecated public long getAppId();
-    method @Deprecated public int getAppVersion();
-    method @Deprecated public String getName();
-    method @Deprecated public int getNeededExecMemBytes();
-    method @Deprecated public int getNeededReadMemBytes();
-    method @Deprecated public int[] getNeededSensors();
-    method @Deprecated public int getNeededWriteMemBytes();
-    method @Deprecated public int[] getOutputEvents();
-    method @Deprecated public String getPublisher();
-    method @Deprecated public void setAppBinary(byte[]);
-    method @Deprecated public void setAppId(long);
-    method @Deprecated public void setAppVersion(int);
-    method @Deprecated public void setName(String);
-    method @Deprecated public void setNeededExecMemBytes(int);
-    method @Deprecated public void setNeededReadMemBytes(int);
-    method @Deprecated public void setNeededSensors(int[]);
-    method @Deprecated public void setNeededWriteMemBytes(int);
-    method @Deprecated public void setOutputEvents(int[]);
-    method @Deprecated public void setPublisher(String);
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.NanoApp> CREATOR;
-  }
-
-  public final class NanoAppBinary implements android.os.Parcelable {
-    ctor public NanoAppBinary(byte[]);
-    method public int describeContents();
-    method public byte[] getBinary();
-    method public byte[] getBinaryNoHeader();
-    method public int getFlags();
-    method public int getHeaderVersion();
-    method public long getHwHubType();
-    method public long getNanoAppId();
-    method public int getNanoAppVersion();
-    method public byte getTargetChreApiMajorVersion();
-    method public byte getTargetChreApiMinorVersion();
-    method public boolean hasValidHeader();
-    method public boolean isEncrypted();
-    method public boolean isSigned();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.NanoAppBinary> CREATOR;
-  }
-
-  @Deprecated public class NanoAppFilter implements android.os.Parcelable {
-    ctor @Deprecated public NanoAppFilter(long, int, int, long);
-    method @Deprecated public int describeContents();
-    method @Deprecated public boolean testMatch(android.hardware.location.NanoAppInstanceInfo);
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated public static final int APP_ANY = -1; // 0xffffffff
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.NanoAppFilter> CREATOR;
-    field @Deprecated public static final int FLAGS_VERSION_ANY = -1; // 0xffffffff
-    field @Deprecated public static final int FLAGS_VERSION_GREAT_THAN = 2; // 0x2
-    field @Deprecated public static final int FLAGS_VERSION_LESS_THAN = 4; // 0x4
-    field @Deprecated public static final int FLAGS_VERSION_STRICTLY_EQUAL = 8; // 0x8
-    field @Deprecated public static final int HUB_ANY = -1; // 0xffffffff
-    field @Deprecated public static final int VENDOR_ANY = -1; // 0xffffffff
-  }
-
-  @Deprecated public class NanoAppInstanceInfo implements android.os.Parcelable {
-    ctor @Deprecated public NanoAppInstanceInfo();
-    method @Deprecated public int describeContents();
-    method @Deprecated public long getAppId();
-    method @Deprecated public int getAppVersion();
-    method @Deprecated public int getContexthubId();
-    method @Deprecated public int getHandle();
-    method @Deprecated public String getName();
-    method @Deprecated public int getNeededExecMemBytes();
-    method @Deprecated public int getNeededReadMemBytes();
-    method @Deprecated @NonNull public int[] getNeededSensors();
-    method @Deprecated public int getNeededWriteMemBytes();
-    method @Deprecated @NonNull public int[] getOutputEvents();
-    method @Deprecated public String getPublisher();
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.NanoAppInstanceInfo> CREATOR;
-  }
-
-  public final class NanoAppMessage implements android.os.Parcelable {
-    method public static android.hardware.location.NanoAppMessage createMessageFromNanoApp(long, int, byte[], boolean);
-    method public static android.hardware.location.NanoAppMessage createMessageToNanoApp(long, int, byte[]);
-    method public int describeContents();
-    method public byte[] getMessageBody();
-    method public int getMessageType();
-    method public long getNanoAppId();
-    method public boolean isBroadcastMessage();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.NanoAppMessage> CREATOR;
-  }
-
-  public final class NanoAppState implements android.os.Parcelable {
-    ctor public NanoAppState(long, int, boolean);
-    method public int describeContents();
-    method public long getNanoAppId();
-    method public long getNanoAppVersion();
-    method public boolean isEnabled();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.NanoAppState> CREATOR;
-  }
-
-}
-
-package android.hardware.radio {
-
-  public final class Announcement implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.hardware.radio.ProgramSelector getSelector();
-    method public int getType();
-    method @NonNull public java.util.Map<java.lang.String,java.lang.String> getVendorInfo();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.Announcement> CREATOR;
-    field public static final int TYPE_EMERGENCY = 1; // 0x1
-    field public static final int TYPE_EVENT = 6; // 0x6
-    field public static final int TYPE_MISC = 8; // 0x8
-    field public static final int TYPE_NEWS = 5; // 0x5
-    field public static final int TYPE_SPORT = 7; // 0x7
-    field public static final int TYPE_TRAFFIC = 3; // 0x3
-    field public static final int TYPE_WARNING = 2; // 0x2
-    field public static final int TYPE_WEATHER = 4; // 0x4
-  }
-
-  public static interface Announcement.OnListUpdatedListener {
-    method public void onListUpdated(java.util.Collection<android.hardware.radio.Announcement>);
-  }
-
-  public final class ProgramList implements java.lang.AutoCloseable {
-    method public void addOnCompleteListener(@NonNull java.util.concurrent.Executor, @NonNull android.hardware.radio.ProgramList.OnCompleteListener);
-    method public void addOnCompleteListener(@NonNull android.hardware.radio.ProgramList.OnCompleteListener);
-    method public void close();
-    method @Nullable public android.hardware.radio.RadioManager.ProgramInfo get(@NonNull android.hardware.radio.ProgramSelector.Identifier);
-    method public void registerListCallback(@NonNull java.util.concurrent.Executor, @NonNull android.hardware.radio.ProgramList.ListCallback);
-    method public void registerListCallback(@NonNull android.hardware.radio.ProgramList.ListCallback);
-    method public void removeOnCompleteListener(@NonNull android.hardware.radio.ProgramList.OnCompleteListener);
-    method @NonNull public java.util.List<android.hardware.radio.RadioManager.ProgramInfo> toList();
-    method public void unregisterListCallback(@NonNull android.hardware.radio.ProgramList.ListCallback);
-  }
-
-  public static final class ProgramList.Filter implements android.os.Parcelable {
-    ctor public ProgramList.Filter(@NonNull java.util.Set<java.lang.Integer>, @NonNull java.util.Set<android.hardware.radio.ProgramSelector.Identifier>, boolean, boolean);
-    method public boolean areCategoriesIncluded();
-    method public boolean areModificationsExcluded();
-    method public int describeContents();
-    method @NonNull public java.util.Set<java.lang.Integer> getIdentifierTypes();
-    method @NonNull public java.util.Set<android.hardware.radio.ProgramSelector.Identifier> getIdentifiers();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.ProgramList.Filter> CREATOR;
-  }
-
-  public abstract static class ProgramList.ListCallback {
-    ctor public ProgramList.ListCallback();
-    method public void onItemChanged(@NonNull android.hardware.radio.ProgramSelector.Identifier);
-    method public void onItemRemoved(@NonNull android.hardware.radio.ProgramSelector.Identifier);
-  }
-
-  public static interface ProgramList.OnCompleteListener {
-    method public void onComplete();
-  }
-
-  public final class ProgramSelector implements android.os.Parcelable {
-    ctor public ProgramSelector(@android.hardware.radio.ProgramSelector.ProgramType int, @NonNull android.hardware.radio.ProgramSelector.Identifier, @Nullable android.hardware.radio.ProgramSelector.Identifier[], @Nullable long[]);
-    method @NonNull public static android.hardware.radio.ProgramSelector createAmFmSelector(@android.hardware.radio.RadioManager.Band int, int);
-    method @NonNull public static android.hardware.radio.ProgramSelector createAmFmSelector(@android.hardware.radio.RadioManager.Band int, int, int);
-    method public int describeContents();
-    method @NonNull public android.hardware.radio.ProgramSelector.Identifier[] getAllIds(@android.hardware.radio.ProgramSelector.IdentifierType int);
-    method public long getFirstId(@android.hardware.radio.ProgramSelector.IdentifierType int);
-    method @NonNull public android.hardware.radio.ProgramSelector.Identifier getPrimaryId();
-    method @Deprecated @android.hardware.radio.ProgramSelector.ProgramType public int getProgramType();
-    method @NonNull public android.hardware.radio.ProgramSelector.Identifier[] getSecondaryIds();
-    method @Deprecated @NonNull public long[] getVendorIds();
-    method @NonNull public android.hardware.radio.ProgramSelector withSecondaryPreferred(@NonNull android.hardware.radio.ProgramSelector.Identifier);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.ProgramSelector> CREATOR;
-    field public static final int IDENTIFIER_TYPE_AMFM_FREQUENCY = 1; // 0x1
-    field public static final int IDENTIFIER_TYPE_DAB_ENSEMBLE = 6; // 0x6
-    field public static final int IDENTIFIER_TYPE_DAB_FREQUENCY = 8; // 0x8
-    field public static final int IDENTIFIER_TYPE_DAB_SCID = 7; // 0x7
-    field public static final int IDENTIFIER_TYPE_DAB_SIDECC = 5; // 0x5
-    field public static final int IDENTIFIER_TYPE_DAB_SID_EXT = 5; // 0x5
-    field public static final int IDENTIFIER_TYPE_DRMO_FREQUENCY = 10; // 0xa
-    field @Deprecated public static final int IDENTIFIER_TYPE_DRMO_MODULATION = 11; // 0xb
-    field public static final int IDENTIFIER_TYPE_DRMO_SERVICE_ID = 9; // 0x9
-    field public static final int IDENTIFIER_TYPE_HD_STATION_ID_EXT = 3; // 0x3
-    field public static final int IDENTIFIER_TYPE_HD_STATION_NAME = 10004; // 0x2714
-    field @Deprecated public static final int IDENTIFIER_TYPE_HD_SUBCHANNEL = 4; // 0x4
-    field public static final int IDENTIFIER_TYPE_INVALID = 0; // 0x0
-    field public static final int IDENTIFIER_TYPE_RDS_PI = 2; // 0x2
-    field public static final int IDENTIFIER_TYPE_SXM_CHANNEL = 13; // 0xd
-    field public static final int IDENTIFIER_TYPE_SXM_SERVICE_ID = 12; // 0xc
-    field public static final int IDENTIFIER_TYPE_VENDOR_END = 1999; // 0x7cf
-    field @Deprecated public static final int IDENTIFIER_TYPE_VENDOR_PRIMARY_END = 1999; // 0x7cf
-    field @Deprecated public static final int IDENTIFIER_TYPE_VENDOR_PRIMARY_START = 1000; // 0x3e8
-    field public static final int IDENTIFIER_TYPE_VENDOR_START = 1000; // 0x3e8
-    field @Deprecated public static final int PROGRAM_TYPE_AM = 1; // 0x1
-    field @Deprecated public static final int PROGRAM_TYPE_AM_HD = 3; // 0x3
-    field @Deprecated public static final int PROGRAM_TYPE_DAB = 5; // 0x5
-    field @Deprecated public static final int PROGRAM_TYPE_DRMO = 6; // 0x6
-    field @Deprecated public static final int PROGRAM_TYPE_FM = 2; // 0x2
-    field @Deprecated public static final int PROGRAM_TYPE_FM_HD = 4; // 0x4
-    field @Deprecated public static final int PROGRAM_TYPE_INVALID = 0; // 0x0
-    field @Deprecated public static final int PROGRAM_TYPE_SXM = 7; // 0x7
-    field @Deprecated public static final int PROGRAM_TYPE_VENDOR_END = 1999; // 0x7cf
-    field @Deprecated public static final int PROGRAM_TYPE_VENDOR_START = 1000; // 0x3e8
-  }
-
-  public static final class ProgramSelector.Identifier implements android.os.Parcelable {
-    ctor public ProgramSelector.Identifier(@android.hardware.radio.ProgramSelector.IdentifierType int, long);
-    method public int describeContents();
-    method @android.hardware.radio.ProgramSelector.IdentifierType public int getType();
-    method public long getValue();
-    method public boolean isCategoryType();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.ProgramSelector.Identifier> CREATOR;
-  }
-
-  @IntDef(prefix={"IDENTIFIER_TYPE_"}, value={android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_INVALID, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_AMFM_FREQUENCY, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_RDS_PI, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_HD_STATION_ID_EXT, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_HD_SUBCHANNEL, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_HD_STATION_NAME, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DAB_SID_EXT, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DAB_SIDECC, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DAB_ENSEMBLE, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DAB_SCID, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DAB_FREQUENCY, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DRMO_SERVICE_ID, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DRMO_FREQUENCY, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DRMO_MODULATION, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_SXM_SERVICE_ID, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_SXM_CHANNEL}) @IntRange(from=android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_VENDOR_START, to=android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_VENDOR_END) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ProgramSelector.IdentifierType {
-  }
-
-  @Deprecated @IntDef(prefix={"PROGRAM_TYPE_"}, value={android.hardware.radio.ProgramSelector.PROGRAM_TYPE_INVALID, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_AM, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_FM, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_AM_HD, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_FM_HD, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_DAB, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_DRMO, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_SXM}) @IntRange(from=android.hardware.radio.ProgramSelector.PROGRAM_TYPE_VENDOR_START, to=android.hardware.radio.ProgramSelector.PROGRAM_TYPE_VENDOR_END) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ProgramSelector.ProgramType {
-  }
-
-  public class RadioManager {
-    method @RequiresPermission(android.Manifest.permission.ACCESS_BROADCAST_RADIO) public void addAnnouncementListener(@NonNull java.util.Set<java.lang.Integer>, @NonNull android.hardware.radio.Announcement.OnListUpdatedListener);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_BROADCAST_RADIO) public void addAnnouncementListener(@NonNull java.util.concurrent.Executor, @NonNull java.util.Set<java.lang.Integer>, @NonNull android.hardware.radio.Announcement.OnListUpdatedListener);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_BROADCAST_RADIO) public int listModules(java.util.List<android.hardware.radio.RadioManager.ModuleProperties>);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_BROADCAST_RADIO) public android.hardware.radio.RadioTuner openTuner(int, android.hardware.radio.RadioManager.BandConfig, boolean, android.hardware.radio.RadioTuner.Callback, android.os.Handler);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_BROADCAST_RADIO) public void removeAnnouncementListener(@NonNull android.hardware.radio.Announcement.OnListUpdatedListener);
-    field public static final int BAND_AM = 0; // 0x0
-    field public static final int BAND_AM_HD = 3; // 0x3
-    field public static final int BAND_FM = 1; // 0x1
-    field public static final int BAND_FM_HD = 2; // 0x2
-    field public static final int BAND_INVALID = -1; // 0xffffffff
-    field public static final int CLASS_AM_FM = 0; // 0x0
-    field public static final int CLASS_DT = 2; // 0x2
-    field public static final int CLASS_SAT = 1; // 0x1
-    field public static final int CONFIG_DAB_DAB_LINKING = 6; // 0x6
-    field public static final int CONFIG_DAB_DAB_SOFT_LINKING = 8; // 0x8
-    field public static final int CONFIG_DAB_FM_LINKING = 7; // 0x7
-    field public static final int CONFIG_DAB_FM_SOFT_LINKING = 9; // 0x9
-    field public static final int CONFIG_FORCE_ANALOG = 2; // 0x2
-    field public static final int CONFIG_FORCE_DIGITAL = 3; // 0x3
-    field public static final int CONFIG_FORCE_MONO = 1; // 0x1
-    field public static final int CONFIG_RDS_AF = 4; // 0x4
-    field public static final int CONFIG_RDS_REG = 5; // 0x5
-    field public static final int REGION_ITU_1 = 0; // 0x0
-    field public static final int REGION_ITU_2 = 1; // 0x1
-    field public static final int REGION_JAPAN = 3; // 0x3
-    field public static final int REGION_KOREA = 4; // 0x4
-    field public static final int REGION_OIRT = 2; // 0x2
-    field public static final int STATUS_BAD_VALUE = -22; // 0xffffffea
-    field public static final int STATUS_DEAD_OBJECT = -32; // 0xffffffe0
-    field public static final int STATUS_ERROR = -2147483648; // 0x80000000
-    field public static final int STATUS_INVALID_OPERATION = -38; // 0xffffffda
-    field public static final int STATUS_NO_INIT = -19; // 0xffffffed
-    field public static final int STATUS_OK = 0; // 0x0
-    field public static final int STATUS_PERMISSION_DENIED = -1; // 0xffffffff
-    field public static final int STATUS_TIMED_OUT = -110; // 0xffffff92
-  }
-
-  public static class RadioManager.AmBandConfig extends android.hardware.radio.RadioManager.BandConfig {
-    method public boolean getStereo();
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.AmBandConfig> CREATOR;
-  }
-
-  public static class RadioManager.AmBandConfig.Builder {
-    ctor public RadioManager.AmBandConfig.Builder(android.hardware.radio.RadioManager.AmBandDescriptor);
-    ctor public RadioManager.AmBandConfig.Builder(android.hardware.radio.RadioManager.AmBandConfig);
-    method public android.hardware.radio.RadioManager.AmBandConfig build();
-    method public android.hardware.radio.RadioManager.AmBandConfig.Builder setStereo(boolean);
-  }
-
-  public static class RadioManager.AmBandDescriptor extends android.hardware.radio.RadioManager.BandDescriptor {
-    method public boolean isStereoSupported();
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.AmBandDescriptor> CREATOR;
-  }
-
-  @IntDef(prefix={"BAND_"}, value={android.hardware.radio.RadioManager.BAND_INVALID, android.hardware.radio.RadioManager.BAND_AM, android.hardware.radio.RadioManager.BAND_FM, android.hardware.radio.RadioManager.BAND_AM_HD, android.hardware.radio.RadioManager.BAND_FM_HD}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface RadioManager.Band {
-  }
-
-  public static class RadioManager.BandConfig implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getLowerLimit();
-    method public int getRegion();
-    method public int getSpacing();
-    method public int getType();
-    method public int getUpperLimit();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.BandConfig> CREATOR;
-  }
-
-  public static class RadioManager.BandDescriptor implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getLowerLimit();
-    method public int getRegion();
-    method public int getSpacing();
-    method public int getType();
-    method public int getUpperLimit();
-    method public boolean isAmBand();
-    method public boolean isFmBand();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.BandDescriptor> CREATOR;
-  }
-
-  public static class RadioManager.FmBandConfig extends android.hardware.radio.RadioManager.BandConfig {
-    method public boolean getAf();
-    method public boolean getEa();
-    method public boolean getRds();
-    method public boolean getStereo();
-    method public boolean getTa();
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.FmBandConfig> CREATOR;
-  }
-
-  public static class RadioManager.FmBandConfig.Builder {
-    ctor public RadioManager.FmBandConfig.Builder(android.hardware.radio.RadioManager.FmBandDescriptor);
-    ctor public RadioManager.FmBandConfig.Builder(android.hardware.radio.RadioManager.FmBandConfig);
-    method public android.hardware.radio.RadioManager.FmBandConfig build();
-    method public android.hardware.radio.RadioManager.FmBandConfig.Builder setAf(boolean);
-    method public android.hardware.radio.RadioManager.FmBandConfig.Builder setEa(boolean);
-    method public android.hardware.radio.RadioManager.FmBandConfig.Builder setRds(boolean);
-    method public android.hardware.radio.RadioManager.FmBandConfig.Builder setStereo(boolean);
-    method public android.hardware.radio.RadioManager.FmBandConfig.Builder setTa(boolean);
-  }
-
-  public static class RadioManager.FmBandDescriptor extends android.hardware.radio.RadioManager.BandDescriptor {
-    method public boolean isAfSupported();
-    method public boolean isEaSupported();
-    method public boolean isRdsSupported();
-    method public boolean isStereoSupported();
-    method public boolean isTaSupported();
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.FmBandDescriptor> CREATOR;
-  }
-
-  public static class RadioManager.ModuleProperties implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.hardware.radio.RadioManager.BandDescriptor[] getBands();
-    method public int getClassId();
-    method @Nullable public java.util.Map<java.lang.String,java.lang.Integer> getDabFrequencyTable();
-    method public int getId();
-    method public String getImplementor();
-    method public int getNumAudioSources();
-    method public int getNumTuners();
-    method public String getProduct();
-    method public String getSerial();
-    method @NonNull public String getServiceName();
-    method @NonNull public java.util.Map<java.lang.String,java.lang.String> getVendorInfo();
-    method public String getVersion();
-    method public boolean isBackgroundScanningSupported();
-    method public boolean isCaptureSupported();
-    method public boolean isInitializationRequired();
-    method public boolean isProgramIdentifierSupported(@android.hardware.radio.ProgramSelector.IdentifierType int);
-    method public boolean isProgramTypeSupported(@android.hardware.radio.ProgramSelector.ProgramType int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.ModuleProperties> CREATOR;
-  }
-
-  public static class RadioManager.ProgramInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @Deprecated public int getChannel();
-    method @Nullable public android.hardware.radio.ProgramSelector.Identifier getLogicallyTunedTo();
-    method public android.hardware.radio.RadioMetadata getMetadata();
-    method @Nullable public android.hardware.radio.ProgramSelector.Identifier getPhysicallyTunedTo();
-    method @Nullable public java.util.Collection<android.hardware.radio.ProgramSelector.Identifier> getRelatedContent();
-    method @NonNull public android.hardware.radio.ProgramSelector getSelector();
-    method public int getSignalStrength();
-    method @Deprecated public int getSubChannel();
-    method @NonNull public java.util.Map<java.lang.String,java.lang.String> getVendorInfo();
-    method @Deprecated public boolean isDigital();
-    method public boolean isLive();
-    method public boolean isMuted();
-    method public boolean isStereo();
-    method public boolean isTrafficAnnouncementActive();
-    method public boolean isTrafficProgram();
-    method public boolean isTuned();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.ProgramInfo> CREATOR;
-  }
-
-  public final class RadioMetadata implements android.os.Parcelable {
-    method public boolean containsKey(String);
-    method public int describeContents();
-    method @Deprecated public android.graphics.Bitmap getBitmap(String);
-    method public android.hardware.radio.RadioMetadata.Clock getClock(String);
-    method public int getInt(String);
-    method public String getString(String);
-    method public java.util.Set<java.lang.String> keySet();
-    method public int size();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioMetadata> CREATOR;
-    field public static final String METADATA_KEY_ALBUM = "android.hardware.radio.metadata.ALBUM";
-    field public static final String METADATA_KEY_ART = "android.hardware.radio.metadata.ART";
-    field public static final String METADATA_KEY_ARTIST = "android.hardware.radio.metadata.ARTIST";
-    field public static final String METADATA_KEY_CLOCK = "android.hardware.radio.metadata.CLOCK";
-    field public static final String METADATA_KEY_DAB_COMPONENT_NAME = "android.hardware.radio.metadata.DAB_COMPONENT_NAME";
-    field public static final String METADATA_KEY_DAB_COMPONENT_NAME_SHORT = "android.hardware.radio.metadata.DAB_COMPONENT_NAME_SHORT";
-    field public static final String METADATA_KEY_DAB_ENSEMBLE_NAME = "android.hardware.radio.metadata.DAB_ENSEMBLE_NAME";
-    field public static final String METADATA_KEY_DAB_ENSEMBLE_NAME_SHORT = "android.hardware.radio.metadata.DAB_ENSEMBLE_NAME_SHORT";
-    field public static final String METADATA_KEY_DAB_SERVICE_NAME = "android.hardware.radio.metadata.DAB_SERVICE_NAME";
-    field public static final String METADATA_KEY_DAB_SERVICE_NAME_SHORT = "android.hardware.radio.metadata.DAB_SERVICE_NAME_SHORT";
-    field public static final String METADATA_KEY_GENRE = "android.hardware.radio.metadata.GENRE";
-    field public static final String METADATA_KEY_ICON = "android.hardware.radio.metadata.ICON";
-    field public static final String METADATA_KEY_PROGRAM_NAME = "android.hardware.radio.metadata.PROGRAM_NAME";
-    field public static final String METADATA_KEY_RBDS_PTY = "android.hardware.radio.metadata.RBDS_PTY";
-    field public static final String METADATA_KEY_RDS_PI = "android.hardware.radio.metadata.RDS_PI";
-    field public static final String METADATA_KEY_RDS_PS = "android.hardware.radio.metadata.RDS_PS";
-    field public static final String METADATA_KEY_RDS_PTY = "android.hardware.radio.metadata.RDS_PTY";
-    field public static final String METADATA_KEY_RDS_RT = "android.hardware.radio.metadata.RDS_RT";
-    field public static final String METADATA_KEY_TITLE = "android.hardware.radio.metadata.TITLE";
-  }
-
-  public static final class RadioMetadata.Builder {
-    ctor public RadioMetadata.Builder();
-    ctor public RadioMetadata.Builder(android.hardware.radio.RadioMetadata);
-    method public android.hardware.radio.RadioMetadata build();
-    method public android.hardware.radio.RadioMetadata.Builder putBitmap(String, android.graphics.Bitmap);
-    method public android.hardware.radio.RadioMetadata.Builder putClock(String, long, int);
-    method public android.hardware.radio.RadioMetadata.Builder putInt(String, int);
-    method public android.hardware.radio.RadioMetadata.Builder putString(String, String);
-  }
-
-  public static final class RadioMetadata.Clock implements android.os.Parcelable {
-    ctor public RadioMetadata.Clock(long, int);
-    method public int describeContents();
-    method public int getTimezoneOffsetMinutes();
-    method public long getUtcEpochSeconds();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioMetadata.Clock> CREATOR;
-  }
-
-  public abstract class RadioTuner {
-    ctor public RadioTuner();
-    method public abstract int cancel();
-    method public abstract void cancelAnnouncement();
-    method public abstract void close();
-    method @Deprecated public abstract int getConfiguration(android.hardware.radio.RadioManager.BandConfig[]);
-    method @Nullable public android.hardware.radio.ProgramList getDynamicProgramList(@Nullable android.hardware.radio.ProgramList.Filter);
-    method public abstract boolean getMute();
-    method @NonNull public java.util.Map<java.lang.String,java.lang.String> getParameters(@NonNull java.util.List<java.lang.String>);
-    method @Deprecated public abstract int getProgramInformation(android.hardware.radio.RadioManager.ProgramInfo[]);
-    method @Deprecated @NonNull public abstract java.util.List<android.hardware.radio.RadioManager.ProgramInfo> getProgramList(@Nullable java.util.Map<java.lang.String,java.lang.String>);
-    method public abstract boolean hasControl();
-    method @Deprecated public abstract boolean isAnalogForced();
-    method @Deprecated public abstract boolean isAntennaConnected();
-    method public boolean isConfigFlagSet(int);
-    method public boolean isConfigFlagSupported(int);
-    method public abstract int scan(int, boolean);
-    method @Deprecated public abstract void setAnalogForced(boolean);
-    method public void setConfigFlag(int, boolean);
-    method @Deprecated public abstract int setConfiguration(android.hardware.radio.RadioManager.BandConfig);
-    method public abstract int setMute(boolean);
-    method @NonNull public java.util.Map<java.lang.String,java.lang.String> setParameters(@NonNull java.util.Map<java.lang.String,java.lang.String>);
-    method public abstract boolean startBackgroundScan();
-    method public abstract int step(int, boolean);
-    method @Deprecated public abstract int tune(int, int);
-    method public abstract void tune(@NonNull android.hardware.radio.ProgramSelector);
-    field public static final int DIRECTION_DOWN = 1; // 0x1
-    field public static final int DIRECTION_UP = 0; // 0x0
-    field @Deprecated public static final int ERROR_BACKGROUND_SCAN_FAILED = 6; // 0x6
-    field @Deprecated public static final int ERROR_BACKGROUND_SCAN_UNAVAILABLE = 5; // 0x5
-    field @Deprecated public static final int ERROR_CANCELLED = 2; // 0x2
-    field @Deprecated public static final int ERROR_CONFIG = 4; // 0x4
-    field @Deprecated public static final int ERROR_HARDWARE_FAILURE = 0; // 0x0
-    field @Deprecated public static final int ERROR_SCAN_TIMEOUT = 3; // 0x3
-    field @Deprecated public static final int ERROR_SERVER_DIED = 1; // 0x1
-  }
-
-  public abstract static class RadioTuner.Callback {
-    ctor public RadioTuner.Callback();
-    method public void onAntennaState(boolean);
-    method public void onBackgroundScanAvailabilityChange(boolean);
-    method public void onBackgroundScanComplete();
-    method @Deprecated public void onConfigurationChanged(android.hardware.radio.RadioManager.BandConfig);
-    method public void onControlChanged(boolean);
-    method public void onEmergencyAnnouncement(boolean);
-    method @Deprecated public void onError(int);
-    method @Deprecated public void onMetadataChanged(android.hardware.radio.RadioMetadata);
-    method public void onParametersUpdated(@NonNull java.util.Map<java.lang.String,java.lang.String>);
-    method public void onProgramInfoChanged(android.hardware.radio.RadioManager.ProgramInfo);
-    method public void onProgramListChanged();
-    method public void onTrafficAnnouncement(boolean);
-    method public void onTuneFailed(int, @Nullable android.hardware.radio.ProgramSelector);
-  }
-
-}
-
-package android.hardware.soundtrigger {
-
-  public class SoundTrigger {
-    field public static final int RECOGNITION_MODE_GENERIC = 8; // 0x8
-    field public static final int RECOGNITION_MODE_USER_AUTHENTICATION = 4; // 0x4
-    field public static final int RECOGNITION_MODE_USER_IDENTIFICATION = 2; // 0x2
-    field public static final int RECOGNITION_MODE_VOICE_TRIGGER = 1; // 0x1
-    field public static final int STATUS_OK = 0; // 0x0
-  }
-
-  public static final class SoundTrigger.Keyphrase implements android.os.Parcelable {
-    ctor public SoundTrigger.Keyphrase(int, int, @NonNull java.util.Locale, @NonNull String, @Nullable int[]);
-    method public int getId();
-    method @NonNull public java.util.Locale getLocale();
-    method public int getRecognitionModes();
-    method @NonNull public String getText();
-    method @NonNull public int[] getUsers();
-    method @NonNull public static android.hardware.soundtrigger.SoundTrigger.Keyphrase readFromParcel(@NonNull android.os.Parcel);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.soundtrigger.SoundTrigger.Keyphrase> CREATOR;
-  }
-
-  public static final class SoundTrigger.KeyphraseSoundModel extends android.hardware.soundtrigger.SoundTrigger.SoundModel implements android.os.Parcelable {
-    ctor public SoundTrigger.KeyphraseSoundModel(@NonNull java.util.UUID, @NonNull java.util.UUID, @Nullable byte[], @Nullable android.hardware.soundtrigger.SoundTrigger.Keyphrase[], int);
-    ctor public SoundTrigger.KeyphraseSoundModel(@NonNull java.util.UUID, @NonNull java.util.UUID, @Nullable byte[], @Nullable android.hardware.soundtrigger.SoundTrigger.Keyphrase[]);
-    method @NonNull public android.hardware.soundtrigger.SoundTrigger.Keyphrase[] getKeyphrases();
-    method @NonNull public static android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel readFromParcel(@NonNull android.os.Parcel);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel> CREATOR;
-  }
-
-  public static final class SoundTrigger.ModelParamRange implements android.os.Parcelable {
-    method public int getEnd();
-    method public int getStart();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.soundtrigger.SoundTrigger.ModelParamRange> CREATOR;
-  }
-
-  public static final class SoundTrigger.ModuleProperties implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAudioCapabilities();
-    method @NonNull public String getDescription();
-    method public int getId();
-    method @NonNull public String getImplementor();
-    method public int getMaxBufferMillis();
-    method public int getMaxKeyphrases();
-    method public int getMaxSoundModels();
-    method public int getMaxUsers();
-    method public int getPowerConsumptionMw();
-    method public int getRecognitionModes();
-    method @NonNull public String getSupportedModelArch();
-    method @NonNull public java.util.UUID getUuid();
-    method public int getVersion();
-    method public boolean isCaptureTransitionSupported();
-    method public boolean isConcurrentCaptureSupported();
-    method public boolean isTriggerReturnedInEvent();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int AUDIO_CAPABILITY_ECHO_CANCELLATION = 1; // 0x1
-    field public static final int AUDIO_CAPABILITY_NOISE_SUPPRESSION = 2; // 0x2
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.soundtrigger.SoundTrigger.ModuleProperties> CREATOR;
-  }
-
-  public static class SoundTrigger.RecognitionEvent {
-    method @Nullable public android.media.AudioFormat getCaptureFormat();
-    method public int getCaptureSession();
-    method public byte[] getData();
-    method public boolean isCaptureAvailable();
-  }
-
-  public static class SoundTrigger.SoundModel {
-    method @NonNull public byte[] getData();
-    method public int getType();
-    method @NonNull public java.util.UUID getUuid();
-    method @NonNull public java.util.UUID getVendorUuid();
-    method public int getVersion();
-    field public static final int TYPE_GENERIC_SOUND = 1; // 0x1
-    field public static final int TYPE_KEYPHRASE = 0; // 0x0
-  }
-
-}
-
-package android.hardware.usb {
-
-  public class UsbDeviceConnection {
-    method public boolean resetDevice();
-  }
-
-  public class UsbManager {
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USB) public long getCurrentFunctions();
-    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_USB) public java.util.List<android.hardware.usb.UsbPort> getPorts();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USB) public void grantPermission(android.hardware.usb.UsbDevice, String);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USB) public void resetUsbGadget();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USB) public void setCurrentFunctions(long);
-    field @RequiresPermission(android.Manifest.permission.MANAGE_USB) public static final String ACTION_USB_PORT_CHANGED = "android.hardware.usb.action.USB_PORT_CHANGED";
-    field public static final String ACTION_USB_STATE = "android.hardware.usb.action.USB_STATE";
-    field public static final long FUNCTION_ACCESSORY = 2L; // 0x2L
-    field public static final long FUNCTION_ADB = 1L; // 0x1L
-    field public static final long FUNCTION_AUDIO_SOURCE = 64L; // 0x40L
-    field public static final long FUNCTION_MIDI = 8L; // 0x8L
-    field public static final long FUNCTION_MTP = 4L; // 0x4L
-    field public static final long FUNCTION_NCM = 1024L; // 0x400L
-    field public static final long FUNCTION_NONE = 0L; // 0x0L
-    field public static final long FUNCTION_PTP = 16L; // 0x10L
-    field public static final long FUNCTION_RNDIS = 32L; // 0x20L
-    field public static final String USB_CONFIGURED = "configured";
-    field public static final String USB_CONNECTED = "connected";
-    field public static final String USB_FUNCTION_NCM = "ncm";
-    field public static final String USB_FUNCTION_RNDIS = "rndis";
-  }
-
-  public final class UsbPort {
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USB) public android.hardware.usb.UsbPortStatus getStatus();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USB) public void setRoles(int, int);
-  }
-
-  public final class UsbPortStatus implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getCurrentDataRole();
-    method public int getCurrentMode();
-    method public int getCurrentPowerRole();
-    method public int getSupportedRoleCombinations();
-    method public boolean isConnected();
-    method public boolean isRoleCombinationSupported(int, int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.usb.UsbPortStatus> CREATOR;
-    field public static final int DATA_ROLE_DEVICE = 2; // 0x2
-    field public static final int DATA_ROLE_HOST = 1; // 0x1
-    field public static final int DATA_ROLE_NONE = 0; // 0x0
-    field public static final int MODE_AUDIO_ACCESSORY = 4; // 0x4
-    field public static final int MODE_DEBUG_ACCESSORY = 8; // 0x8
-    field public static final int MODE_DFP = 2; // 0x2
-    field public static final int MODE_NONE = 0; // 0x0
-    field public static final int MODE_UFP = 1; // 0x1
-    field public static final int POWER_ROLE_NONE = 0; // 0x0
-    field public static final int POWER_ROLE_SINK = 2; // 0x2
-    field public static final int POWER_ROLE_SOURCE = 1; // 0x1
-  }
-
-}
-
-package android.location {
-
-  public abstract class BatchedLocationCallback {
-    ctor public BatchedLocationCallback();
-    method public void onLocationBatch(java.util.List<android.location.Location>);
-  }
-
-  public final class GnssCapabilities {
-    method public boolean hasGeofencing();
-    method public boolean hasLowPowerMode();
-    method public boolean hasMeasurementCorrections();
-    method public boolean hasMeasurementCorrectionsExcessPathLength();
-    method public boolean hasMeasurementCorrectionsLosSats();
-    method public boolean hasMeasurementCorrectionsReflectingPane();
-    method public boolean hasMeasurements();
-    method public boolean hasNavMessages();
-    method public boolean hasSatelliteBlacklist();
-  }
-
-  public final class GnssMeasurementCorrections implements android.os.Parcelable {
-    method public int describeContents();
-    method @FloatRange(from=-1000.0F, to=10000.0f) public double getAltitudeMeters();
-    method @FloatRange(from=0.0f, to=360.0f) public float getEnvironmentBearingDegrees();
-    method @FloatRange(from=0.0f, to=180.0f) public float getEnvironmentBearingUncertaintyDegrees();
-    method @FloatRange(from=0.0f) public double getHorizontalPositionUncertaintyMeters();
-    method @FloatRange(from=-90.0F, to=90.0f) public double getLatitudeDegrees();
-    method @FloatRange(from=-180.0F, to=180.0f) public double getLongitudeDegrees();
-    method @NonNull public java.util.List<android.location.GnssSingleSatCorrection> getSingleSatelliteCorrectionList();
-    method @IntRange(from=0) public long getToaGpsNanosecondsOfWeek();
-    method @FloatRange(from=0.0f) public double getVerticalPositionUncertaintyMeters();
-    method public boolean hasEnvironmentBearing();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.location.GnssMeasurementCorrections> CREATOR;
-  }
-
-  public static final class GnssMeasurementCorrections.Builder {
-    ctor public GnssMeasurementCorrections.Builder();
-    method @NonNull public android.location.GnssMeasurementCorrections build();
-    method @NonNull public android.location.GnssMeasurementCorrections.Builder setAltitudeMeters(@FloatRange(from=-1000.0F, to=10000.0f) double);
-    method @NonNull public android.location.GnssMeasurementCorrections.Builder setEnvironmentBearingDegrees(@FloatRange(from=0.0f, to=360.0f) float);
-    method @NonNull public android.location.GnssMeasurementCorrections.Builder setEnvironmentBearingUncertaintyDegrees(@FloatRange(from=0.0f, to=180.0f) float);
-    method @NonNull public android.location.GnssMeasurementCorrections.Builder setHorizontalPositionUncertaintyMeters(@FloatRange(from=0.0f) double);
-    method @NonNull public android.location.GnssMeasurementCorrections.Builder setLatitudeDegrees(@FloatRange(from=-90.0F, to=90.0f) double);
-    method @NonNull public android.location.GnssMeasurementCorrections.Builder setLongitudeDegrees(@FloatRange(from=-180.0F, to=180.0f) double);
-    method @NonNull public android.location.GnssMeasurementCorrections.Builder setSingleSatelliteCorrectionList(@NonNull java.util.List<android.location.GnssSingleSatCorrection>);
-    method @NonNull public android.location.GnssMeasurementCorrections.Builder setToaGpsNanosecondsOfWeek(@IntRange(from=0) long);
-    method @NonNull public android.location.GnssMeasurementCorrections.Builder setVerticalPositionUncertaintyMeters(@FloatRange(from=0.0f) double);
-  }
-
-  public final class GnssReflectingPlane implements android.os.Parcelable {
-    method public int describeContents();
-    method @FloatRange(from=-1000.0F, to=10000.0f) public double getAltitudeMeters();
-    method @FloatRange(from=0.0f, to=360.0f) public double getAzimuthDegrees();
-    method @FloatRange(from=-90.0F, to=90.0f) public double getLatitudeDegrees();
-    method @FloatRange(from=-180.0F, to=180.0f) public double getLongitudeDegrees();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.location.GnssReflectingPlane> CREATOR;
-  }
-
-  public static final class GnssReflectingPlane.Builder {
-    ctor public GnssReflectingPlane.Builder();
-    method @NonNull public android.location.GnssReflectingPlane build();
-    method @NonNull public android.location.GnssReflectingPlane.Builder setAltitudeMeters(@FloatRange(from=-1000.0F, to=10000.0f) double);
-    method @NonNull public android.location.GnssReflectingPlane.Builder setAzimuthDegrees(@FloatRange(from=0.0f, to=360.0f) double);
-    method @NonNull public android.location.GnssReflectingPlane.Builder setLatitudeDegrees(@FloatRange(from=-90.0F, to=90.0f) double);
-    method @NonNull public android.location.GnssReflectingPlane.Builder setLongitudeDegrees(@FloatRange(from=-180.0F, to=180.0f) double);
-  }
-
-  public final class GnssRequest implements android.os.Parcelable {
-    method public int describeContents();
-    method public boolean isFullTracking();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssRequest> CREATOR;
-  }
-
-  public static final class GnssRequest.Builder {
-    ctor public GnssRequest.Builder();
-    ctor public GnssRequest.Builder(@NonNull android.location.GnssRequest);
-    method @NonNull public android.location.GnssRequest build();
-    method @NonNull public android.location.GnssRequest.Builder setFullTracking(boolean);
-  }
-
-  public final class GnssSingleSatCorrection implements android.os.Parcelable {
-    method public int describeContents();
-    method @FloatRange(from=0.0f, fromInclusive=false) public float getCarrierFrequencyHz();
-    method public int getConstellationType();
-    method @FloatRange(from=0.0f) public float getExcessPathLengthMeters();
-    method @FloatRange(from=0.0f) public float getExcessPathLengthUncertaintyMeters();
-    method @FloatRange(from=0.0f, to=1.0f) public float getProbabilityLineOfSight();
-    method @Nullable public android.location.GnssReflectingPlane getReflectingPlane();
-    method @IntRange(from=0) public int getSatelliteId();
-    method public boolean hasExcessPathLength();
-    method public boolean hasExcessPathLengthUncertainty();
-    method public boolean hasReflectingPlane();
-    method public boolean hasValidSatelliteLineOfSight();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.location.GnssSingleSatCorrection> CREATOR;
-  }
-
-  public static final class GnssSingleSatCorrection.Builder {
-    ctor public GnssSingleSatCorrection.Builder();
-    method @NonNull public android.location.GnssSingleSatCorrection build();
-    method @NonNull public android.location.GnssSingleSatCorrection.Builder setCarrierFrequencyHz(@FloatRange(from=0.0f, fromInclusive=false) float);
-    method @NonNull public android.location.GnssSingleSatCorrection.Builder setConstellationType(int);
-    method @NonNull public android.location.GnssSingleSatCorrection.Builder setExcessPathLengthMeters(@FloatRange(from=0.0f) float);
-    method @NonNull public android.location.GnssSingleSatCorrection.Builder setExcessPathLengthUncertaintyMeters(@FloatRange(from=0.0f) float);
-    method @NonNull public android.location.GnssSingleSatCorrection.Builder setProbabilityLineOfSight(@FloatRange(from=0.0f, to=1.0f) float);
-    method @NonNull public android.location.GnssSingleSatCorrection.Builder setReflectingPlane(@Nullable android.location.GnssReflectingPlane);
-    method @NonNull public android.location.GnssSingleSatCorrection.Builder setSatelliteId(@IntRange(from=0) int);
-  }
-
-  @Deprecated public class GpsClock implements android.os.Parcelable {
-    method @Deprecated public int describeContents();
-    method @Deprecated public double getBiasInNs();
-    method @Deprecated public double getBiasUncertaintyInNs();
-    method @Deprecated public double getDriftInNsPerSec();
-    method @Deprecated public double getDriftUncertaintyInNsPerSec();
-    method @Deprecated public long getFullBiasInNs();
-    method @Deprecated public short getLeapSecond();
-    method @Deprecated public long getTimeInNs();
-    method @Deprecated public double getTimeUncertaintyInNs();
-    method @Deprecated public byte getType();
-    method @Deprecated public boolean hasBiasInNs();
-    method @Deprecated public boolean hasBiasUncertaintyInNs();
-    method @Deprecated public boolean hasDriftInNsPerSec();
-    method @Deprecated public boolean hasDriftUncertaintyInNsPerSec();
-    method @Deprecated public boolean hasFullBiasInNs();
-    method @Deprecated public boolean hasLeapSecond();
-    method @Deprecated public boolean hasTimeUncertaintyInNs();
-    method @Deprecated public void reset();
-    method @Deprecated public void resetBiasInNs();
-    method @Deprecated public void resetBiasUncertaintyInNs();
-    method @Deprecated public void resetDriftInNsPerSec();
-    method @Deprecated public void resetDriftUncertaintyInNsPerSec();
-    method @Deprecated public void resetFullBiasInNs();
-    method @Deprecated public void resetLeapSecond();
-    method @Deprecated public void resetTimeUncertaintyInNs();
-    method @Deprecated public void set(android.location.GpsClock);
-    method @Deprecated public void setBiasInNs(double);
-    method @Deprecated public void setBiasUncertaintyInNs(double);
-    method @Deprecated public void setDriftInNsPerSec(double);
-    method @Deprecated public void setDriftUncertaintyInNsPerSec(double);
-    method @Deprecated public void setFullBiasInNs(long);
-    method @Deprecated public void setLeapSecond(short);
-    method @Deprecated public void setTimeInNs(long);
-    method @Deprecated public void setTimeUncertaintyInNs(double);
-    method @Deprecated public void setType(byte);
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.location.GpsClock> CREATOR;
-    field @Deprecated public static final byte TYPE_GPS_TIME = 2; // 0x2
-    field @Deprecated public static final byte TYPE_LOCAL_HW_TIME = 1; // 0x1
-    field @Deprecated public static final byte TYPE_UNKNOWN = 0; // 0x0
-  }
-
-  @Deprecated public class GpsMeasurement implements android.os.Parcelable {
-    method @Deprecated public int describeContents();
-    method @Deprecated public double getAccumulatedDeltaRangeInMeters();
-    method @Deprecated public short getAccumulatedDeltaRangeState();
-    method @Deprecated public double getAccumulatedDeltaRangeUncertaintyInMeters();
-    method @Deprecated public double getAzimuthInDeg();
-    method @Deprecated public double getAzimuthUncertaintyInDeg();
-    method @Deprecated public int getBitNumber();
-    method @Deprecated public long getCarrierCycles();
-    method @Deprecated public float getCarrierFrequencyInHz();
-    method @Deprecated public double getCarrierPhase();
-    method @Deprecated public double getCarrierPhaseUncertainty();
-    method @Deprecated public double getCn0InDbHz();
-    method @Deprecated public double getCodePhaseInChips();
-    method @Deprecated public double getCodePhaseUncertaintyInChips();
-    method @Deprecated public double getDopplerShiftInHz();
-    method @Deprecated public double getDopplerShiftUncertaintyInHz();
-    method @Deprecated public double getElevationInDeg();
-    method @Deprecated public double getElevationUncertaintyInDeg();
-    method @Deprecated public byte getLossOfLock();
-    method @Deprecated public byte getMultipathIndicator();
-    method @Deprecated public byte getPrn();
-    method @Deprecated public double getPseudorangeInMeters();
-    method @Deprecated public double getPseudorangeRateInMetersPerSec();
-    method @Deprecated public double getPseudorangeRateUncertaintyInMetersPerSec();
-    method @Deprecated public double getPseudorangeUncertaintyInMeters();
-    method @Deprecated public long getReceivedGpsTowInNs();
-    method @Deprecated public long getReceivedGpsTowUncertaintyInNs();
-    method @Deprecated public double getSnrInDb();
-    method @Deprecated public short getState();
-    method @Deprecated public short getTimeFromLastBitInMs();
-    method @Deprecated public double getTimeOffsetInNs();
-    method @Deprecated public boolean hasAzimuthInDeg();
-    method @Deprecated public boolean hasAzimuthUncertaintyInDeg();
-    method @Deprecated public boolean hasBitNumber();
-    method @Deprecated public boolean hasCarrierCycles();
-    method @Deprecated public boolean hasCarrierFrequencyInHz();
-    method @Deprecated public boolean hasCarrierPhase();
-    method @Deprecated public boolean hasCarrierPhaseUncertainty();
-    method @Deprecated public boolean hasCodePhaseInChips();
-    method @Deprecated public boolean hasCodePhaseUncertaintyInChips();
-    method @Deprecated public boolean hasDopplerShiftInHz();
-    method @Deprecated public boolean hasDopplerShiftUncertaintyInHz();
-    method @Deprecated public boolean hasElevationInDeg();
-    method @Deprecated public boolean hasElevationUncertaintyInDeg();
-    method @Deprecated public boolean hasPseudorangeInMeters();
-    method @Deprecated public boolean hasPseudorangeUncertaintyInMeters();
-    method @Deprecated public boolean hasSnrInDb();
-    method @Deprecated public boolean hasTimeFromLastBitInMs();
-    method @Deprecated public boolean isPseudorangeRateCorrected();
-    method @Deprecated public boolean isUsedInFix();
-    method @Deprecated public void reset();
-    method @Deprecated public void resetAzimuthInDeg();
-    method @Deprecated public void resetAzimuthUncertaintyInDeg();
-    method @Deprecated public void resetBitNumber();
-    method @Deprecated public void resetCarrierCycles();
-    method @Deprecated public void resetCarrierFrequencyInHz();
-    method @Deprecated public void resetCarrierPhase();
-    method @Deprecated public void resetCarrierPhaseUncertainty();
-    method @Deprecated public void resetCodePhaseInChips();
-    method @Deprecated public void resetCodePhaseUncertaintyInChips();
-    method @Deprecated public void resetDopplerShiftInHz();
-    method @Deprecated public void resetDopplerShiftUncertaintyInHz();
-    method @Deprecated public void resetElevationInDeg();
-    method @Deprecated public void resetElevationUncertaintyInDeg();
-    method @Deprecated public void resetPseudorangeInMeters();
-    method @Deprecated public void resetPseudorangeUncertaintyInMeters();
-    method @Deprecated public void resetSnrInDb();
-    method @Deprecated public void resetTimeFromLastBitInMs();
-    method @Deprecated public void set(android.location.GpsMeasurement);
-    method @Deprecated public void setAccumulatedDeltaRangeInMeters(double);
-    method @Deprecated public void setAccumulatedDeltaRangeState(short);
-    method @Deprecated public void setAccumulatedDeltaRangeUncertaintyInMeters(double);
-    method @Deprecated public void setAzimuthInDeg(double);
-    method @Deprecated public void setAzimuthUncertaintyInDeg(double);
-    method @Deprecated public void setBitNumber(int);
-    method @Deprecated public void setCarrierCycles(long);
-    method @Deprecated public void setCarrierFrequencyInHz(float);
-    method @Deprecated public void setCarrierPhase(double);
-    method @Deprecated public void setCarrierPhaseUncertainty(double);
-    method @Deprecated public void setCn0InDbHz(double);
-    method @Deprecated public void setCodePhaseInChips(double);
-    method @Deprecated public void setCodePhaseUncertaintyInChips(double);
-    method @Deprecated public void setDopplerShiftInHz(double);
-    method @Deprecated public void setDopplerShiftUncertaintyInHz(double);
-    method @Deprecated public void setElevationInDeg(double);
-    method @Deprecated public void setElevationUncertaintyInDeg(double);
-    method @Deprecated public void setLossOfLock(byte);
-    method @Deprecated public void setMultipathIndicator(byte);
-    method @Deprecated public void setPrn(byte);
-    method @Deprecated public void setPseudorangeInMeters(double);
-    method @Deprecated public void setPseudorangeRateInMetersPerSec(double);
-    method @Deprecated public void setPseudorangeRateUncertaintyInMetersPerSec(double);
-    method @Deprecated public void setPseudorangeUncertaintyInMeters(double);
-    method @Deprecated public void setReceivedGpsTowInNs(long);
-    method @Deprecated public void setReceivedGpsTowUncertaintyInNs(long);
-    method @Deprecated public void setSnrInDb(double);
-    method @Deprecated public void setState(short);
-    method @Deprecated public void setTimeFromLastBitInMs(short);
-    method @Deprecated public void setTimeOffsetInNs(double);
-    method @Deprecated public void setUsedInFix(boolean);
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated public static final short ADR_STATE_CYCLE_SLIP = 4; // 0x4
-    field @Deprecated public static final short ADR_STATE_RESET = 2; // 0x2
-    field @Deprecated public static final short ADR_STATE_UNKNOWN = 0; // 0x0
-    field @Deprecated public static final short ADR_STATE_VALID = 1; // 0x1
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.location.GpsMeasurement> CREATOR;
-    field @Deprecated public static final byte LOSS_OF_LOCK_CYCLE_SLIP = 2; // 0x2
-    field @Deprecated public static final byte LOSS_OF_LOCK_OK = 1; // 0x1
-    field @Deprecated public static final byte LOSS_OF_LOCK_UNKNOWN = 0; // 0x0
-    field @Deprecated public static final byte MULTIPATH_INDICATOR_DETECTED = 1; // 0x1
-    field @Deprecated public static final byte MULTIPATH_INDICATOR_NOT_USED = 2; // 0x2
-    field @Deprecated public static final byte MULTIPATH_INDICATOR_UNKNOWN = 0; // 0x0
-    field @Deprecated public static final short STATE_BIT_SYNC = 2; // 0x2
-    field @Deprecated public static final short STATE_CODE_LOCK = 1; // 0x1
-    field @Deprecated public static final short STATE_MSEC_AMBIGUOUS = 16; // 0x10
-    field @Deprecated public static final short STATE_SUBFRAME_SYNC = 4; // 0x4
-    field @Deprecated public static final short STATE_TOW_DECODED = 8; // 0x8
-    field @Deprecated public static final short STATE_UNKNOWN = 0; // 0x0
-  }
-
-  @Deprecated public class GpsMeasurementsEvent implements android.os.Parcelable {
-    ctor @Deprecated public GpsMeasurementsEvent(android.location.GpsClock, android.location.GpsMeasurement[]);
-    method @Deprecated public int describeContents();
-    method @Deprecated @NonNull public android.location.GpsClock getClock();
-    method @Deprecated @NonNull public java.util.Collection<android.location.GpsMeasurement> getMeasurements();
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.location.GpsMeasurementsEvent> CREATOR;
-    field @Deprecated public static final int STATUS_GPS_LOCATION_DISABLED = 2; // 0x2
-    field @Deprecated public static final int STATUS_NOT_SUPPORTED = 0; // 0x0
-    field @Deprecated public static final int STATUS_READY = 1; // 0x1
-  }
-
-  @Deprecated public static interface GpsMeasurementsEvent.Listener {
-    method @Deprecated public void onGpsMeasurementsReceived(android.location.GpsMeasurementsEvent);
-    method @Deprecated public void onStatusChanged(int);
-  }
-
-  @Deprecated public class GpsNavigationMessage implements android.os.Parcelable {
-    method @Deprecated public int describeContents();
-    method @Deprecated @NonNull public byte[] getData();
-    method @Deprecated public short getMessageId();
-    method @Deprecated public byte getPrn();
-    method @Deprecated public short getStatus();
-    method @Deprecated public short getSubmessageId();
-    method @Deprecated public byte getType();
-    method @Deprecated public void reset();
-    method @Deprecated public void set(android.location.GpsNavigationMessage);
-    method @Deprecated public void setData(byte[]);
-    method @Deprecated public void setMessageId(short);
-    method @Deprecated public void setPrn(byte);
-    method @Deprecated public void setStatus(short);
-    method @Deprecated public void setSubmessageId(short);
-    method @Deprecated public void setType(byte);
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.location.GpsNavigationMessage> CREATOR;
-    field @Deprecated public static final short STATUS_PARITY_PASSED = 1; // 0x1
-    field @Deprecated public static final short STATUS_PARITY_REBUILT = 2; // 0x2
-    field @Deprecated public static final short STATUS_UNKNOWN = 0; // 0x0
-    field @Deprecated public static final byte TYPE_CNAV2 = 4; // 0x4
-    field @Deprecated public static final byte TYPE_L1CA = 1; // 0x1
-    field @Deprecated public static final byte TYPE_L2CNAV = 2; // 0x2
-    field @Deprecated public static final byte TYPE_L5CNAV = 3; // 0x3
-    field @Deprecated public static final byte TYPE_UNKNOWN = 0; // 0x0
-  }
-
-  @Deprecated public class GpsNavigationMessageEvent implements android.os.Parcelable {
-    ctor @Deprecated public GpsNavigationMessageEvent(android.location.GpsNavigationMessage);
-    method @Deprecated public int describeContents();
-    method @Deprecated @NonNull public android.location.GpsNavigationMessage getNavigationMessage();
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.location.GpsNavigationMessageEvent> CREATOR;
-    field @Deprecated public static int STATUS_GPS_LOCATION_DISABLED;
-    field @Deprecated public static int STATUS_NOT_SUPPORTED;
-    field @Deprecated public static int STATUS_READY;
-  }
-
-  @Deprecated public static interface GpsNavigationMessageEvent.Listener {
-    method @Deprecated public void onGpsNavigationMessageReceived(android.location.GpsNavigationMessageEvent);
-    method @Deprecated public void onStatusChanged(int);
-  }
-
-  public class Location implements android.os.Parcelable {
-    method public boolean isComplete();
-    method public void makeComplete();
-    method public void setIsFromMockProvider(boolean);
-    field @Deprecated public static final String EXTRA_NO_GPS_LOCATION = "noGPSLocation";
-  }
-
-  public class LocationManager {
-    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void flushGnssBatch();
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void getCurrentLocation(@NonNull android.location.LocationRequest, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.location.Location>);
-    method @Nullable public String getExtraLocationControllerPackage();
-    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public int getGnssBatchSize();
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public void injectGnssMeasurementCorrections(@NonNull android.location.GnssMeasurementCorrections);
-    method public boolean isExtraLocationControllerPackageEnabled();
-    method public boolean isLocationEnabledForUser(@NonNull android.os.UserHandle);
-    method public boolean isProviderEnabledForUser(@NonNull String, @NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public boolean isProviderPackage(@NonNull String);
-    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean registerGnssBatchedLocationCallback(long, boolean, @NonNull android.location.BatchedLocationCallback, @Nullable android.os.Handler);
-    method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.LOCATION_HARDWARE}) public boolean registerGnssMeasurementsCallback(@NonNull android.location.GnssRequest, @NonNull java.util.concurrent.Executor, @NonNull android.location.GnssMeasurementsEvent.Callback);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@Nullable android.location.LocationRequest, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@Nullable android.location.LocationRequest, @NonNull java.util.concurrent.Executor, @NonNull android.location.LocationListener);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@Nullable android.location.LocationRequest, @NonNull android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void setExtraLocationControllerPackage(@Nullable String);
-    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void setExtraLocationControllerPackageEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void setLocationEnabledForUser(boolean, @NonNull android.os.UserHandle);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean setProviderEnabledForUser(@NonNull String, boolean, @NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean unregisterGnssBatchedLocationCallback(@NonNull android.location.BatchedLocationCallback);
-  }
-
-  public final class LocationRequest implements android.os.Parcelable {
-    method @NonNull public static android.location.LocationRequest create();
-    method @NonNull public static android.location.LocationRequest createFromDeprecatedCriteria(@NonNull android.location.Criteria, long, float, boolean);
-    method @NonNull public static android.location.LocationRequest createFromDeprecatedProvider(@NonNull String, long, float, boolean);
-    method public int describeContents();
-    method @Deprecated public long getExpireAt();
-    method public long getExpireIn();
-    method public long getFastestInterval();
-    method public boolean getHideFromAppOps();
-    method public long getInterval();
-    method public int getNumUpdates();
-    method @NonNull public String getProvider();
-    method public int getQuality();
-    method public float getSmallestDisplacement();
-    method @Nullable public android.os.WorkSource getWorkSource();
-    method public boolean isLocationSettingsIgnored();
-    method public boolean isLowPowerMode();
-    method @Deprecated @NonNull public android.location.LocationRequest setExpireAt(long);
-    method @NonNull public android.location.LocationRequest setExpireIn(long);
-    method @NonNull public android.location.LocationRequest setFastestInterval(long);
-    method public void setHideFromAppOps(boolean);
-    method @NonNull public android.location.LocationRequest setInterval(long);
-    method @NonNull @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public android.location.LocationRequest setLocationSettingsIgnored(boolean);
-    method @NonNull public android.location.LocationRequest setLowPowerMode(boolean);
-    method @NonNull public android.location.LocationRequest setNumUpdates(int);
-    method @NonNull public android.location.LocationRequest setProvider(@NonNull String);
-    method @NonNull public android.location.LocationRequest setQuality(int);
-    method @NonNull public android.location.LocationRequest setSmallestDisplacement(float);
-    method public void setWorkSource(@Nullable android.os.WorkSource);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ACCURACY_BLOCK = 102; // 0x66
-    field public static final int ACCURACY_CITY = 104; // 0x68
-    field public static final int ACCURACY_FINE = 100; // 0x64
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.LocationRequest> CREATOR;
-    field public static final int POWER_HIGH = 203; // 0xcb
-    field public static final int POWER_LOW = 201; // 0xc9
-    field public static final int POWER_NONE = 200; // 0xc8
-  }
-
-}
-
-package android.media {
-
-  public final class AudioAttributes implements android.os.Parcelable {
-    method public int getAllFlags();
-    method public android.os.Bundle getBundle();
-    method public int getCapturePreset();
-    method public int getSystemUsage();
-    method public static boolean isSystemUsage(int);
-    field public static final int FLAG_BEACON = 8; // 0x8
-    field public static final int FLAG_BYPASS_INTERRUPTION_POLICY = 64; // 0x40
-    field public static final int FLAG_BYPASS_MUTE = 128; // 0x80
-    field public static final int FLAG_HW_HOTWORD = 32; // 0x20
-    field @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static final int USAGE_ANNOUNCEMENT = 1003; // 0x3eb
-    field @RequiresPermission(allOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.MODIFY_AUDIO_ROUTING}) public static final int USAGE_CALL_ASSISTANT = 17; // 0x11
-    field @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static final int USAGE_EMERGENCY = 1000; // 0x3e8
-    field @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static final int USAGE_SAFETY = 1001; // 0x3e9
-    field @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static final int USAGE_VEHICLE_STATUS = 1002; // 0x3ea
-  }
-
-  public static class AudioAttributes.Builder {
-    method public android.media.AudioAttributes.Builder addBundle(@NonNull android.os.Bundle);
-    method public android.media.AudioAttributes.Builder setCapturePreset(int);
-    method public android.media.AudioAttributes.Builder setInternalCapturePreset(int);
-    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public android.media.AudioAttributes.Builder setSystemUsage(int);
-  }
-
-  public final class AudioDeviceAttributes implements android.os.Parcelable {
-    ctor public AudioDeviceAttributes(@NonNull android.media.AudioDeviceInfo);
-    ctor public AudioDeviceAttributes(int, int, @NonNull String);
-    method public int describeContents();
-    method @NonNull public String getAddress();
-    method public int getRole();
-    method public int getType();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.AudioDeviceAttributes> CREATOR;
-    field public static final int ROLE_INPUT = 1; // 0x1
-    field public static final int ROLE_OUTPUT = 2; // 0x2
-  }
-
-  public final class AudioDeviceInfo {
-    field public static final int TYPE_REMOTE_SUBMIX = 25; // 0x19
-  }
-
-  public final class AudioFocusInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.media.AudioAttributes getAttributes();
-    method @NonNull public String getClientId();
-    method public int getClientUid();
-    method public int getFlags();
-    method public int getGainRequest();
-    method public int getLossReceived();
-    method @NonNull public String getPackageName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.AudioFocusInfo> CREATOR;
-  }
-
-  public final class AudioFocusRequest {
-    method public boolean locksFocus();
-  }
-
-  public static final class AudioFocusRequest.Builder {
-    method @NonNull public android.media.AudioFocusRequest.Builder setLocksFocus(boolean);
-  }
-
-  public class AudioManager {
-    method @Deprecated public int abandonAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, android.media.AudioAttributes);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void addOnPreferredDeviceForStrategyChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.OnPreferredDeviceForStrategyChangedListener) throws java.lang.SecurityException;
-    method public void clearAudioServerStateCallback();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int dispatchAudioFocusChange(@NonNull android.media.AudioFocusInfo, int, @NonNull android.media.audiopolicy.AudioPolicy);
-    method @IntRange(from=0) public long getAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo);
-    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static java.util.List<android.media.audiopolicy.AudioProductStrategy> getAudioProductStrategies();
-    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static java.util.List<android.media.audiopolicy.AudioVolumeGroup> getAudioVolumeGroups();
-    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public java.util.List<android.media.AudioDeviceAttributes> getDevicesForAttributes(@NonNull android.media.AudioAttributes);
-    method @IntRange(from=0) public long getMaxAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo);
-    method @IntRange(from=0) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getMaxVolumeIndexForAttributes(@NonNull android.media.AudioAttributes);
-    method @IntRange(from=0) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getMinVolumeIndexForAttributes(@NonNull android.media.AudioAttributes);
-    method @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public android.media.AudioDeviceAttributes getPreferredDeviceForStrategy(@NonNull android.media.audiopolicy.AudioProductStrategy);
-    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int[] getSupportedSystemUsages();
-    method @IntRange(from=0) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getVolumeIndexForAttributes(@NonNull android.media.AudioAttributes);
-    method public boolean isAudioServerRunning();
-    method public boolean isHdmiSystemAudioSupported();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int registerAudioPolicy(@NonNull android.media.audiopolicy.AudioPolicy);
-    method public void registerVolumeGroupCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.VolumeGroupCallback);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void removeOnPreferredDeviceForStrategyChangedListener(@NonNull android.media.AudioManager.OnPreferredDeviceForStrategyChangedListener);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean removePreferredDeviceForStrategy(@NonNull android.media.audiopolicy.AudioProductStrategy);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, @NonNull android.media.AudioAttributes, int, int) throws java.lang.IllegalArgumentException;
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.MODIFY_AUDIO_ROUTING}) public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, @NonNull android.media.AudioAttributes, int, int, android.media.audiopolicy.AudioPolicy) throws java.lang.IllegalArgumentException;
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int requestAudioFocus(@NonNull android.media.AudioFocusRequest, @Nullable android.media.audiopolicy.AudioPolicy);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean setAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo, @IntRange(from=0) long);
-    method public void setAudioServerStateCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.AudioServerStateCallback);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setFocusRequestResult(@NonNull android.media.AudioFocusInfo, int, @NonNull android.media.audiopolicy.AudioPolicy);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean setPreferredDeviceForStrategy(@NonNull android.media.audiopolicy.AudioProductStrategy, @NonNull android.media.AudioDeviceAttributes);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setSupportedSystemUsages(@NonNull int[]);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setVolumeIndexForAttributes(@NonNull android.media.AudioAttributes, int, int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void unregisterAudioPolicy(@NonNull android.media.audiopolicy.AudioPolicy);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void unregisterAudioPolicyAsync(@NonNull android.media.audiopolicy.AudioPolicy);
-    method public void unregisterVolumeGroupCallback(@NonNull android.media.AudioManager.VolumeGroupCallback);
-    field public static final int AUDIOFOCUS_FLAG_DELAY_OK = 1; // 0x1
-    field public static final int AUDIOFOCUS_FLAG_LOCK = 4; // 0x4
-    field public static final int AUDIOFOCUS_FLAG_PAUSES_ON_DUCKABLE_LOSS = 2; // 0x2
-    field @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static final int STREAM_ASSISTANT = 11; // 0xb
-    field public static final int SUCCESS = 0; // 0x0
-  }
-
-  public abstract static class AudioManager.AudioServerStateCallback {
-    ctor public AudioManager.AudioServerStateCallback();
-    method public void onAudioServerDown();
-    method public void onAudioServerUp();
-  }
-
-  public static interface AudioManager.OnPreferredDeviceForStrategyChangedListener {
-    method public void onPreferredDeviceForStrategyChanged(@NonNull android.media.audiopolicy.AudioProductStrategy, @Nullable android.media.AudioDeviceAttributes);
-  }
-
-  public abstract static class AudioManager.VolumeGroupCallback {
-    ctor public AudioManager.VolumeGroupCallback();
-    method public void onAudioVolumeGroupChanged(int, int);
-  }
-
-  public final class AudioPlaybackConfiguration implements android.os.Parcelable {
-    method public int getClientPid();
-    method public int getClientUid();
-    method public int getPlayerInterfaceId();
-    method public android.media.PlayerProxy getPlayerProxy();
-    method public int getPlayerState();
-    method public int getPlayerType();
-    method public boolean isActive();
-    field public static final int PLAYER_STATE_IDLE = 1; // 0x1
-    field public static final int PLAYER_STATE_PAUSED = 3; // 0x3
-    field public static final int PLAYER_STATE_RELEASED = 0; // 0x0
-    field public static final int PLAYER_STATE_STARTED = 2; // 0x2
-    field public static final int PLAYER_STATE_STOPPED = 4; // 0x4
-    field public static final int PLAYER_STATE_UNKNOWN = -1; // 0xffffffff
-    field public static final int PLAYER_TYPE_JAM_AUDIOTRACK = 1; // 0x1
-    field public static final int PLAYER_TYPE_JAM_MEDIAPLAYER = 2; // 0x2
-    field public static final int PLAYER_TYPE_JAM_SOUNDPOOL = 3; // 0x3
-    field public static final int PLAYER_TYPE_SLES_AUDIOPLAYER_BUFFERQUEUE = 11; // 0xb
-    field public static final int PLAYER_TYPE_SLES_AUDIOPLAYER_URI_FD = 12; // 0xc
-    field public static final int PLAYER_TYPE_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public class AudioRecord implements android.media.AudioRecordingMonitor android.media.AudioRouting android.media.MicrophoneDirection {
-    ctor public AudioRecord(android.media.AudioAttributes, android.media.AudioFormat, int, int) throws java.lang.IllegalArgumentException;
-  }
-
-  public static class AudioRecord.Builder {
-    method public android.media.AudioRecord.Builder setAudioAttributes(@NonNull android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
-    method public android.media.AudioRecord.Builder setSessionId(int) throws java.lang.IllegalArgumentException;
-  }
-
-  public final class AudioRecordingConfiguration implements android.os.Parcelable {
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getClientUid();
-  }
-
-  public class AudioTrack implements android.media.AudioRouting android.media.VolumeAutomation {
-    field @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static final int ENCAPSULATION_MODE_HANDLE = 2; // 0x2
-  }
-
-  public static class AudioTrack.Builder {
-    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public android.media.AudioTrack.Builder setTunerConfiguration(@NonNull android.media.AudioTrack.TunerConfiguration);
-  }
-
-  public static class AudioTrack.TunerConfiguration {
-    ctor @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public AudioTrack.TunerConfiguration(@IntRange(from=1) int, @IntRange(from=1) int);
-    method @IntRange(from=1) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getContentId();
-    method @IntRange(from=1) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getSyncId();
-  }
-
-  public class HwAudioSource {
-    method public boolean isPlaying();
-    method public void start();
-    method public void stop();
-  }
-
-  public static final class HwAudioSource.Builder {
-    ctor public HwAudioSource.Builder();
-    method @NonNull public android.media.HwAudioSource build();
-    method @NonNull public android.media.HwAudioSource.Builder setAudioAttributes(@NonNull android.media.AudioAttributes);
-    method @NonNull public android.media.HwAudioSource.Builder setAudioDeviceInfo(@NonNull android.media.AudioDeviceInfo);
-  }
-
-  public final class MediaRecorder.AudioSource {
-    field @RequiresPermission(android.Manifest.permission.CAPTURE_AUDIO_OUTPUT) public static final int ECHO_REFERENCE = 1997; // 0x7cd
-    field @RequiresPermission(android.Manifest.permission.CAPTURE_AUDIO_HOTWORD) public static final int HOTWORD = 1999; // 0x7cf
-    field @RequiresPermission(android.Manifest.permission.CAPTURE_AUDIO_OUTPUT) public static final int RADIO_TUNER = 1998; // 0x7ce
-  }
-
-  public class PlayerProxy {
-    method public void pause();
-    method public void setPan(float);
-    method public void setStartDelayMs(int);
-    method public void setVolume(float);
-    method public void start();
-    method public void stop();
-  }
-
-  public class RingtoneManager {
-    method @RequiresPermission(android.Manifest.permission.WRITE_SETTINGS) public static void ensureDefaultRingtones(@NonNull android.content.Context);
-  }
-
-}
-
-package android.media.audiofx {
-
-  public class AudioEffect {
-    ctor @RequiresPermission("android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS") public AudioEffect(@NonNull java.util.UUID, @NonNull android.media.AudioDeviceAttributes);
-    method @RequiresPermission("android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS") public static boolean isEffectSupportedForDevice(@NonNull java.util.UUID, @NonNull android.media.AudioDeviceAttributes);
-  }
-
-}
-
-package android.media.audiopolicy {
-
-  public class AudioMix {
-    method public int getMixState();
-    field public static final int MIX_STATE_DISABLED = -1; // 0xffffffff
-    field public static final int MIX_STATE_IDLE = 0; // 0x0
-    field public static final int MIX_STATE_MIXING = 1; // 0x1
-    field public static final int ROUTE_FLAG_LOOP_BACK = 2; // 0x2
-    field public static final int ROUTE_FLAG_RENDER = 1; // 0x1
-  }
-
-  public static class AudioMix.Builder {
-    ctor public AudioMix.Builder(android.media.audiopolicy.AudioMixingRule) throws java.lang.IllegalArgumentException;
-    method public android.media.audiopolicy.AudioMix build() throws java.lang.IllegalArgumentException;
-    method public android.media.audiopolicy.AudioMix.Builder setDevice(@NonNull android.media.AudioDeviceInfo) throws java.lang.IllegalArgumentException;
-    method public android.media.audiopolicy.AudioMix.Builder setFormat(android.media.AudioFormat) throws java.lang.IllegalArgumentException;
-    method public android.media.audiopolicy.AudioMix.Builder setRouteFlags(int) throws java.lang.IllegalArgumentException;
-  }
-
-  public class AudioMixingRule {
-    field public static final int RULE_MATCH_ATTRIBUTE_CAPTURE_PRESET = 2; // 0x2
-    field public static final int RULE_MATCH_ATTRIBUTE_USAGE = 1; // 0x1
-    field public static final int RULE_MATCH_UID = 4; // 0x4
-    field public static final int RULE_MATCH_USERID = 8; // 0x8
-  }
-
-  public static class AudioMixingRule.Builder {
-    ctor public AudioMixingRule.Builder();
-    method public android.media.audiopolicy.AudioMixingRule.Builder addMixRule(int, Object) throws java.lang.IllegalArgumentException;
-    method public android.media.audiopolicy.AudioMixingRule.Builder addRule(android.media.AudioAttributes, int) throws java.lang.IllegalArgumentException;
-    method @NonNull public android.media.audiopolicy.AudioMixingRule.Builder allowPrivilegedPlaybackCapture(boolean);
-    method public android.media.audiopolicy.AudioMixingRule build();
-    method public android.media.audiopolicy.AudioMixingRule.Builder excludeMixRule(int, Object) throws java.lang.IllegalArgumentException;
-    method public android.media.audiopolicy.AudioMixingRule.Builder excludeRule(android.media.AudioAttributes, int) throws java.lang.IllegalArgumentException;
-  }
-
-  public class AudioPolicy {
-    method public int attachMixes(@NonNull java.util.List<android.media.audiopolicy.AudioMix>);
-    method public android.media.AudioRecord createAudioRecordSink(android.media.audiopolicy.AudioMix) throws java.lang.IllegalArgumentException;
-    method public android.media.AudioTrack createAudioTrackSource(android.media.audiopolicy.AudioMix) throws java.lang.IllegalArgumentException;
-    method public int detachMixes(@NonNull java.util.List<android.media.audiopolicy.AudioMix>);
-    method public int getFocusDuckingBehavior();
-    method public int getStatus();
-    method public boolean removeUidDeviceAffinity(int);
-    method public boolean removeUserIdDeviceAffinity(int);
-    method public int setFocusDuckingBehavior(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void setRegistration(String);
-    method public boolean setUidDeviceAffinity(int, @NonNull java.util.List<android.media.AudioDeviceInfo>);
-    method public boolean setUserIdDeviceAffinity(int, @NonNull java.util.List<android.media.AudioDeviceInfo>);
-    method public String toLogFriendlyString();
-    field public static final int FOCUS_POLICY_DUCKING_DEFAULT = 0; // 0x0
-    field public static final int FOCUS_POLICY_DUCKING_IN_APP = 0; // 0x0
-    field public static final int FOCUS_POLICY_DUCKING_IN_POLICY = 1; // 0x1
-    field public static final int POLICY_STATUS_REGISTERED = 2; // 0x2
-    field public static final int POLICY_STATUS_UNREGISTERED = 1; // 0x1
-  }
-
-  public abstract static class AudioPolicy.AudioPolicyFocusListener {
-    ctor public AudioPolicy.AudioPolicyFocusListener();
-    method public void onAudioFocusAbandon(android.media.AudioFocusInfo);
-    method public void onAudioFocusGrant(android.media.AudioFocusInfo, int);
-    method public void onAudioFocusLoss(android.media.AudioFocusInfo, boolean);
-    method public void onAudioFocusRequest(android.media.AudioFocusInfo, int);
-  }
-
-  public abstract static class AudioPolicy.AudioPolicyStatusListener {
-    ctor public AudioPolicy.AudioPolicyStatusListener();
-    method public void onMixStateUpdate(android.media.audiopolicy.AudioMix);
-    method public void onStatusChange();
-  }
-
-  public abstract static class AudioPolicy.AudioPolicyVolumeCallback {
-    ctor public AudioPolicy.AudioPolicyVolumeCallback();
-    method public void onVolumeAdjustment(int);
-  }
-
-  public static class AudioPolicy.Builder {
-    ctor public AudioPolicy.Builder(android.content.Context);
-    method @NonNull public android.media.audiopolicy.AudioPolicy.Builder addMix(@NonNull android.media.audiopolicy.AudioMix) throws java.lang.IllegalArgumentException;
-    method @NonNull public android.media.audiopolicy.AudioPolicy build();
-    method public void setAudioPolicyFocusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyFocusListener);
-    method public void setAudioPolicyStatusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyStatusListener);
-    method @NonNull public android.media.audiopolicy.AudioPolicy.Builder setAudioPolicyVolumeCallback(@NonNull android.media.audiopolicy.AudioPolicy.AudioPolicyVolumeCallback);
-    method @NonNull public android.media.audiopolicy.AudioPolicy.Builder setIsAudioFocusPolicy(boolean);
-    method @NonNull public android.media.audiopolicy.AudioPolicy.Builder setLooper(@NonNull android.os.Looper) throws java.lang.IllegalArgumentException;
-  }
-
-  public final class AudioProductStrategy implements android.os.Parcelable {
-    method @NonNull public static android.media.audiopolicy.AudioProductStrategy createInvalidAudioProductStrategy(int);
-    method public int describeContents();
-    method @NonNull public android.media.AudioAttributes getAudioAttributes();
-    method public int getId();
-    method public boolean supportsAudioAttributes(@NonNull android.media.AudioAttributes);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.audiopolicy.AudioProductStrategy> CREATOR;
-  }
-
-  public final class AudioVolumeGroup implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public java.util.List<android.media.AudioAttributes> getAudioAttributes();
-    method public int getId();
-    method @NonNull public int[] getLegacyStreamTypes();
-    method @NonNull public String name();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.media.audiopolicy.AudioVolumeGroup> CREATOR;
-    field public static final int DEFAULT_VOLUME_GROUP = -1; // 0xffffffff
-  }
-
-}
-
-package android.media.session {
-
-  public final class MediaSessionManager {
-    method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void addOnMediaKeyEventDispatchedListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.session.MediaSessionManager.OnMediaKeyEventDispatchedListener);
-    method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void addOnMediaKeyEventSessionChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.session.MediaSessionManager.OnMediaKeyEventSessionChangedListener);
-    method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void removeOnMediaKeyEventDispatchedListener(@NonNull android.media.session.MediaSessionManager.OnMediaKeyEventDispatchedListener);
-    method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void removeOnMediaKeyEventSessionChangedListener(@NonNull android.media.session.MediaSessionManager.OnMediaKeyEventSessionChangedListener);
-    method @RequiresPermission(android.Manifest.permission.SET_MEDIA_KEY_LISTENER) public void setOnMediaKeyListener(android.media.session.MediaSessionManager.OnMediaKeyListener, @Nullable android.os.Handler);
-    method @RequiresPermission(android.Manifest.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER) public void setOnVolumeKeyLongPressListener(android.media.session.MediaSessionManager.OnVolumeKeyLongPressListener, @Nullable android.os.Handler);
-  }
-
-  public static interface MediaSessionManager.OnMediaKeyEventDispatchedListener {
-    method public void onMediaKeyEventDispatched(@NonNull android.view.KeyEvent, @NonNull String, @Nullable android.media.session.MediaSession.Token);
-  }
-
-  public static interface MediaSessionManager.OnMediaKeyEventSessionChangedListener {
-    method public void onMediaKeyEventSessionChanged(@NonNull String, @Nullable android.media.session.MediaSession.Token);
-  }
-
-  public static interface MediaSessionManager.OnMediaKeyListener {
-    method public boolean onMediaKey(android.view.KeyEvent);
-  }
-
-  public static interface MediaSessionManager.OnVolumeKeyLongPressListener {
-    method public void onVolumeKeyLongPress(android.view.KeyEvent);
-  }
-
-}
-
-package android.media.soundtrigger {
-
-  public abstract class SoundTriggerDetectionService extends android.app.Service {
-    ctor public SoundTriggerDetectionService();
-    method @MainThread public void onConnected(@NonNull java.util.UUID, @Nullable android.os.Bundle);
-    method @MainThread public void onDisconnected(@NonNull java.util.UUID, @Nullable android.os.Bundle);
-    method @MainThread public void onError(@NonNull java.util.UUID, @Nullable android.os.Bundle, int, int);
-    method @MainThread public void onGenericRecognitionEvent(@NonNull java.util.UUID, @Nullable android.os.Bundle, int, @NonNull android.hardware.soundtrigger.SoundTrigger.RecognitionEvent);
-    method @MainThread public abstract void onStopOperation(@NonNull java.util.UUID, @Nullable android.os.Bundle, int);
-    method public final void operationFinished(@Nullable java.util.UUID, int);
-  }
-
-  public final class SoundTriggerDetector {
-    method @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public boolean startRecognition(int);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public boolean stopRecognition();
-    field public static final int RECOGNITION_FLAG_ALLOW_MULTIPLE_TRIGGERS = 2; // 0x2
-    field public static final int RECOGNITION_FLAG_CAPTURE_TRIGGER_AUDIO = 1; // 0x1
-    field public static final int RECOGNITION_FLAG_ENABLE_AUDIO_ECHO_CANCELLATION = 4; // 0x4
-    field public static final int RECOGNITION_FLAG_ENABLE_AUDIO_NOISE_SUPPRESSION = 8; // 0x8
-  }
-
-  public abstract static class SoundTriggerDetector.Callback {
-    ctor public SoundTriggerDetector.Callback();
-    method public abstract void onAvailabilityChanged(int);
-    method public abstract void onDetected(@NonNull android.media.soundtrigger.SoundTriggerDetector.EventPayload);
-    method public abstract void onError();
-    method public abstract void onRecognitionPaused();
-    method public abstract void onRecognitionResumed();
-  }
-
-  public static class SoundTriggerDetector.EventPayload {
-    method @Nullable public android.media.AudioFormat getCaptureAudioFormat();
-    method @Nullable public byte[] getTriggerAudio();
-  }
-
-  public final class SoundTriggerManager {
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public android.media.soundtrigger.SoundTriggerDetector createSoundTriggerDetector(java.util.UUID, @NonNull android.media.soundtrigger.SoundTriggerDetector.Callback, @Nullable android.os.Handler);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public void deleteModel(java.util.UUID);
-    method public int getDetectionServiceOperationsTimeout();
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public android.media.soundtrigger.SoundTriggerManager.Model getModel(java.util.UUID);
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public android.hardware.soundtrigger.SoundTrigger.ModuleProperties getModuleProperties();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public int getParameter(@NonNull java.util.UUID, int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public android.hardware.soundtrigger.SoundTrigger.ModelParamRange queryParameter(@Nullable java.util.UUID, int);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public int setParameter(@Nullable java.util.UUID, int, int);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public void updateModel(android.media.soundtrigger.SoundTriggerManager.Model);
-  }
-
-  public static class SoundTriggerManager.Model {
-    method @NonNull public static android.media.soundtrigger.SoundTriggerManager.Model create(@NonNull java.util.UUID, @NonNull java.util.UUID, @Nullable byte[], int);
-    method @NonNull public static android.media.soundtrigger.SoundTriggerManager.Model create(@NonNull java.util.UUID, @NonNull java.util.UUID, @Nullable byte[]);
-    method @Nullable public byte[] getModelData();
-    method @NonNull public java.util.UUID getModelUuid();
-    method @NonNull public java.util.UUID getVendorUuid();
-    method public int getVersion();
-  }
-
-}
-
-package android.media.tv {
-
-  public final class DvbDeviceInfo implements android.os.Parcelable {
-    ctor public DvbDeviceInfo(int, int);
-    method public int describeContents();
-    method @IntRange(from=0) public int getAdapterId();
-    method @IntRange(from=0) public int getDeviceId();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.DvbDeviceInfo> CREATOR;
-  }
-
-  public final class TvContentRatingSystemInfo implements android.os.Parcelable {
-    method public static android.media.tv.TvContentRatingSystemInfo createTvContentRatingSystemInfo(int, android.content.pm.ApplicationInfo);
-    method public int describeContents();
-    method public android.net.Uri getXmlUri();
-    method public boolean isSystemDefined();
-    method public void writeToParcel(android.os.Parcel, int);
-  }
-
-  public final class TvContract {
-    method public static android.net.Uri buildChannelsUriForInput(@Nullable String, boolean);
-    method public static android.net.Uri buildChannelsUriForInput(@Nullable String, @Nullable String, boolean);
-    field public static final String ACTION_CHANNEL_BROWSABLE_REQUESTED = "android.media.tv.action.CHANNEL_BROWSABLE_REQUESTED";
-    field public static final String EXTRA_BLOCKED_PACKAGES = "android.media.tv.extra.BLOCKED_PACKAGES";
-    field public static final String EXTRA_COLUMN_NAME = "android.media.tv.extra.COLUMN_NAME";
-    field public static final String EXTRA_DATA_TYPE = "android.media.tv.extra.DATA_TYPE";
-    field public static final String EXTRA_DEFAULT_VALUE = "android.media.tv.extra.DEFAULT_VALUE";
-    field public static final String EXTRA_EXISTING_COLUMN_NAMES = "android.media.tv.extra.EXISTING_COLUMN_NAMES";
-    field public static final String EXTRA_PACKAGE_NAME = "android.media.tv.extra.PACKAGE_NAME";
-    field public static final String EXTRA_RESULT_CODE = "android.media.tv.extra.RESULT_CODE";
-    field public static final String METHOD_ADD_COLUMN = "add_column";
-    field public static final String METHOD_BLOCK_PACKAGE = "block_package";
-    field public static final String METHOD_GET_BLOCKED_PACKAGES = "get_blocked_packages";
-    field public static final String METHOD_GET_COLUMNS = "get_columns";
-    field public static final String METHOD_UNBLOCK_PACKAGE = "unblock_package";
-    field public static final int RESULT_ERROR_INVALID_ARGUMENT = 2; // 0x2
-    field public static final int RESULT_ERROR_IO = 1; // 0x1
-    field public static final int RESULT_OK = 0; // 0x0
-  }
-
-  public static final class TvContract.WatchedPrograms implements android.media.tv.TvContract.BaseTvColumns {
-    field public static final String COLUMN_CHANNEL_ID = "channel_id";
-    field public static final String COLUMN_DESCRIPTION = "description";
-    field public static final String COLUMN_END_TIME_UTC_MILLIS = "end_time_utc_millis";
-    field public static final String COLUMN_INTERNAL_SESSION_TOKEN = "session_token";
-    field public static final String COLUMN_INTERNAL_TUNE_PARAMS = "tune_params";
-    field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
-    field public static final String COLUMN_TITLE = "title";
-    field public static final String COLUMN_WATCH_END_TIME_UTC_MILLIS = "watch_end_time_utc_millis";
-    field public static final String COLUMN_WATCH_START_TIME_UTC_MILLIS = "watch_start_time_utc_millis";
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/watched_program";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/watched_program";
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  public final class TvInputHardwareInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public String getAudioAddress();
-    method public int getAudioType();
-    method public int getCableConnectionStatus();
-    method public int getDeviceId();
-    method public int getHdmiPortId();
-    method public int getType();
-    method public void readFromParcel(android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CABLE_CONNECTION_STATUS_CONNECTED = 1; // 0x1
-    field public static final int CABLE_CONNECTION_STATUS_DISCONNECTED = 2; // 0x2
-    field public static final int CABLE_CONNECTION_STATUS_UNKNOWN = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.TvInputHardwareInfo> CREATOR;
-    field public static final int TV_INPUT_TYPE_COMPONENT = 6; // 0x6
-    field public static final int TV_INPUT_TYPE_COMPOSITE = 3; // 0x3
-    field public static final int TV_INPUT_TYPE_DISPLAY_PORT = 10; // 0xa
-    field public static final int TV_INPUT_TYPE_DVI = 8; // 0x8
-    field public static final int TV_INPUT_TYPE_HDMI = 9; // 0x9
-    field public static final int TV_INPUT_TYPE_OTHER_HARDWARE = 1; // 0x1
-    field public static final int TV_INPUT_TYPE_SCART = 5; // 0x5
-    field public static final int TV_INPUT_TYPE_SVIDEO = 4; // 0x4
-    field public static final int TV_INPUT_TYPE_TUNER = 2; // 0x2
-    field public static final int TV_INPUT_TYPE_VGA = 7; // 0x7
-  }
-
-  public static final class TvInputHardwareInfo.Builder {
-    ctor public TvInputHardwareInfo.Builder();
-    method public android.media.tv.TvInputHardwareInfo.Builder audioAddress(String);
-    method public android.media.tv.TvInputHardwareInfo.Builder audioType(int);
-    method public android.media.tv.TvInputHardwareInfo build();
-    method public android.media.tv.TvInputHardwareInfo.Builder cableConnectionStatus(int);
-    method public android.media.tv.TvInputHardwareInfo.Builder deviceId(int);
-    method public android.media.tv.TvInputHardwareInfo.Builder hdmiPortId(int);
-    method public android.media.tv.TvInputHardwareInfo.Builder type(int);
-  }
-
-  public final class TvInputInfo implements android.os.Parcelable {
-    method @Deprecated public static android.media.tv.TvInputInfo createTvInputInfo(android.content.Context, android.content.pm.ResolveInfo, android.hardware.hdmi.HdmiDeviceInfo, String, String, android.net.Uri) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method @Deprecated public static android.media.tv.TvInputInfo createTvInputInfo(android.content.Context, android.content.pm.ResolveInfo, android.hardware.hdmi.HdmiDeviceInfo, String, int, android.graphics.drawable.Icon) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method @Deprecated public static android.media.tv.TvInputInfo createTvInputInfo(android.content.Context, android.content.pm.ResolveInfo, android.media.tv.TvInputHardwareInfo, String, android.net.Uri) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method @Deprecated public static android.media.tv.TvInputInfo createTvInputInfo(android.content.Context, android.content.pm.ResolveInfo, android.media.tv.TvInputHardwareInfo, int, android.graphics.drawable.Icon) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public android.hardware.hdmi.HdmiDeviceInfo getHdmiDeviceInfo();
-    method public boolean isConnectedToHdmiSwitch();
-    method public boolean isHardwareInput();
-    method public android.graphics.drawable.Drawable loadIcon(@NonNull android.content.Context, int);
-  }
-
-  public static final class TvInputInfo.Builder {
-    method public android.media.tv.TvInputInfo.Builder setHdmiDeviceInfo(android.hardware.hdmi.HdmiDeviceInfo);
-    method public android.media.tv.TvInputInfo.Builder setIcon(android.graphics.drawable.Icon);
-    method public android.media.tv.TvInputInfo.Builder setIcon(android.graphics.drawable.Icon, int);
-    method public android.media.tv.TvInputInfo.Builder setLabel(CharSequence);
-    method public android.media.tv.TvInputInfo.Builder setLabel(@StringRes int);
-    method public android.media.tv.TvInputInfo.Builder setParentId(String);
-    method public android.media.tv.TvInputInfo.Builder setTvInputHardwareInfo(android.media.tv.TvInputHardwareInfo);
-  }
-
-  public static final class TvInputInfo.TvInputSettings {
-    method public static java.util.Map<java.lang.String,java.lang.String> getCustomLabels(android.content.Context, int);
-    method public static java.util.Set<java.lang.String> getHiddenTvInputIds(android.content.Context, int);
-    method public static void putCustomLabels(android.content.Context, java.util.Map<java.lang.String,java.lang.String>, int);
-    method public static void putHiddenTvInputs(android.content.Context, java.util.Set<java.lang.String>, int);
-  }
-
-  public final class TvInputManager {
-    method @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public android.media.tv.TvInputManager.Hardware acquireTvInputHardware(int, @NonNull android.media.tv.TvInputInfo, @NonNull android.media.tv.TvInputManager.HardwareCallback);
-    method @Nullable @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public android.media.tv.TvInputManager.Hardware acquireTvInputHardware(int, @NonNull android.media.tv.TvInputInfo, @Nullable String, int, @NonNull java.util.concurrent.Executor, @NonNull android.media.tv.TvInputManager.HardwareCallback);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void addBlockedRating(@NonNull android.media.tv.TvContentRating);
-    method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public boolean captureFrame(String, android.view.Surface, android.media.tv.TvStreamConfig);
-    method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public java.util.List<android.media.tv.TvStreamConfig> getAvailableTvStreamConfigList(String);
-    method @NonNull @RequiresPermission("android.permission.DVB_DEVICE") public java.util.List<android.media.tv.DvbDeviceInfo> getDvbDeviceList();
-    method @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public java.util.List<android.media.tv.TvInputHardwareInfo> getHardwareList();
-    method @RequiresPermission(android.Manifest.permission.READ_CONTENT_RATING_SYSTEMS) public java.util.List<android.media.tv.TvContentRatingSystemInfo> getTvContentRatingSystemList();
-    method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public boolean isSingleSessionActive();
-    method @RequiresPermission(android.Manifest.permission.NOTIFY_TV_INPUTS) public void notifyPreviewProgramAddedToWatchNext(String, long, long);
-    method @RequiresPermission(android.Manifest.permission.NOTIFY_TV_INPUTS) public void notifyPreviewProgramBrowsableDisabled(String, long);
-    method @RequiresPermission(android.Manifest.permission.NOTIFY_TV_INPUTS) public void notifyWatchNextProgramBrowsableDisabled(String, long);
-    method @Nullable @RequiresPermission("android.permission.DVB_DEVICE") public android.os.ParcelFileDescriptor openDvbDevice(@NonNull android.media.tv.DvbDeviceInfo, int);
-    method @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public void releaseTvInputHardware(int, android.media.tv.TvInputManager.Hardware);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void removeBlockedRating(@NonNull android.media.tv.TvContentRating);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void setParentalControlsEnabled(boolean);
-  }
-
-  public static final class TvInputManager.Hardware {
-    method public void overrideAudioSink(int, String, int, int, int);
-    method public void setStreamVolume(float);
-    method public boolean setSurface(android.view.Surface, android.media.tv.TvStreamConfig);
-  }
-
-  public abstract static class TvInputManager.HardwareCallback {
-    ctor public TvInputManager.HardwareCallback();
-    method public abstract void onReleased();
-    method public abstract void onStreamConfigChanged(android.media.tv.TvStreamConfig[]);
-  }
-
-  public abstract class TvInputService extends android.app.Service {
-    method @Nullable public android.media.tv.TvInputInfo onHardwareAdded(android.media.tv.TvInputHardwareInfo);
-    method @Nullable public String onHardwareRemoved(android.media.tv.TvInputHardwareInfo);
-    method @Nullable public android.media.tv.TvInputInfo onHdmiDeviceAdded(android.hardware.hdmi.HdmiDeviceInfo);
-    method @Nullable public String onHdmiDeviceRemoved(android.hardware.hdmi.HdmiDeviceInfo);
-    method public void onHdmiDeviceUpdated(@NonNull android.hardware.hdmi.HdmiDeviceInfo);
-  }
-
-  public abstract static class TvInputService.RecordingSession {
-    method public void notifySessionEvent(@NonNull String, android.os.Bundle);
-  }
-
-  public abstract static class TvInputService.Session implements android.view.KeyEvent.Callback {
-    method public void notifySessionEvent(@NonNull String, android.os.Bundle);
-    method public void onSetMain(boolean);
-  }
-
-  public abstract static class TvRecordingClient.RecordingCallback {
-    method public void onEvent(String, String, android.os.Bundle);
-  }
-
-  public class TvStreamConfig implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getGeneration();
-    method public int getMaxHeight();
-    method public int getMaxWidth();
-    method public int getStreamId();
-    method public int getType();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.TvStreamConfig> CREATOR;
-    field public static final int STREAM_TYPE_BUFFER_PRODUCER = 2; // 0x2
-    field public static final int STREAM_TYPE_INDEPENDENT_VIDEO_SOURCE = 1; // 0x1
-  }
-
-  public static final class TvStreamConfig.Builder {
-    ctor public TvStreamConfig.Builder();
-    method public android.media.tv.TvStreamConfig build();
-    method public android.media.tv.TvStreamConfig.Builder generation(int);
-    method public android.media.tv.TvStreamConfig.Builder maxHeight(int);
-    method public android.media.tv.TvStreamConfig.Builder maxWidth(int);
-    method public android.media.tv.TvStreamConfig.Builder streamId(int);
-    method public android.media.tv.TvStreamConfig.Builder type(int);
-  }
-
-  public class TvView extends android.view.ViewGroup {
-    method @RequiresPermission("android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE") public void setMain();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void unblockContent(android.media.tv.TvContentRating);
-  }
-
-  public abstract static class TvView.TvInputCallback {
-    method public void onEvent(String, String, android.os.Bundle);
-  }
-
-}
-
-package android.media.tv.tuner {
-
-  public class DemuxCapabilities {
-    method public int getAudioFilterCount();
-    method public int getDemuxCount();
-    method public int getFilterCapabilities();
-    method @NonNull @Size(5) public int[] getLinkCapabilities();
-    method public int getPcrFilterCount();
-    method public int getPesFilterCount();
-    method public int getPlaybackCount();
-    method public int getRecordCount();
-    method public int getSectionFilterCount();
-    method public long getSectionFilterLength();
-    method public int getTsFilterCount();
-    method public int getVideoFilterCount();
-    method public boolean isTimeFilterSupported();
-  }
-
-  public class Descrambler implements java.lang.AutoCloseable {
-    method public int addPid(int, int, @Nullable android.media.tv.tuner.filter.Filter);
-    method public void close();
-    method public int removePid(int, int, @Nullable android.media.tv.tuner.filter.Filter);
-    method public int setKeyToken(@NonNull byte[]);
-    field public static final int PID_TYPE_MMTP = 2; // 0x2
-    field public static final int PID_TYPE_T = 1; // 0x1
-  }
-
-  public class Lnb implements java.lang.AutoCloseable {
-    method public void close();
-    method public int sendDiseqcMessage(@NonNull byte[]);
-    method public int setSatellitePosition(int);
-    method public int setTone(int);
-    method public int setVoltage(int);
-    field public static final int EVENT_TYPE_DISEQC_RX_OVERFLOW = 0; // 0x0
-    field public static final int EVENT_TYPE_DISEQC_RX_PARITY_ERROR = 2; // 0x2
-    field public static final int EVENT_TYPE_DISEQC_RX_TIMEOUT = 1; // 0x1
-    field public static final int EVENT_TYPE_LNB_OVERLOAD = 3; // 0x3
-    field public static final int POSITION_A = 1; // 0x1
-    field public static final int POSITION_B = 2; // 0x2
-    field public static final int POSITION_UNDEFINED = 0; // 0x0
-    field public static final int TONE_CONTINUOUS = 1; // 0x1
-    field public static final int TONE_NONE = 0; // 0x0
-    field public static final int VOLTAGE_11V = 2; // 0x2
-    field public static final int VOLTAGE_12V = 3; // 0x3
-    field public static final int VOLTAGE_13V = 4; // 0x4
-    field public static final int VOLTAGE_14V = 5; // 0x5
-    field public static final int VOLTAGE_15V = 6; // 0x6
-    field public static final int VOLTAGE_18V = 7; // 0x7
-    field public static final int VOLTAGE_19V = 8; // 0x8
-    field public static final int VOLTAGE_5V = 1; // 0x1
-    field public static final int VOLTAGE_NONE = 0; // 0x0
-  }
-
-  public interface LnbCallback {
-    method public void onDiseqcMessage(@NonNull byte[]);
-    method public void onEvent(int);
-  }
-
-  public class Tuner implements java.lang.AutoCloseable {
-    ctor @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public Tuner(@NonNull android.content.Context, @Nullable String, int);
-    method public int cancelScanning();
-    method public int cancelTuning();
-    method public void clearOnTuneEventListener();
-    method public void clearResourceLostListener();
-    method public void close();
-    method public int connectCiCam(int);
-    method public int disconnectCiCam();
-    method public int getAvSyncHwId(@NonNull android.media.tv.tuner.filter.Filter);
-    method public long getAvSyncTime(int);
-    method @Nullable public android.media.tv.tuner.DemuxCapabilities getDemuxCapabilities();
-    method @Nullable public android.media.tv.tuner.frontend.FrontendInfo getFrontendInfo();
-    method @Nullable public android.media.tv.tuner.frontend.FrontendStatus getFrontendStatus(@NonNull int[]);
-    method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_DESCRAMBLER) public android.media.tv.tuner.Descrambler openDescrambler();
-    method @Nullable public android.media.tv.tuner.dvr.DvrPlayback openDvrPlayback(long, @NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.dvr.OnPlaybackStatusChangedListener);
-    method @Nullable public android.media.tv.tuner.dvr.DvrRecorder openDvrRecorder(long, @NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.dvr.OnRecordStatusChangedListener);
-    method @Nullable public android.media.tv.tuner.filter.Filter openFilter(int, int, long, @Nullable java.util.concurrent.Executor, @Nullable android.media.tv.tuner.filter.FilterCallback);
-    method @Nullable public android.media.tv.tuner.Lnb openLnb(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.LnbCallback);
-    method @Nullable public android.media.tv.tuner.Lnb openLnbByName(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.LnbCallback);
-    method @Nullable public android.media.tv.tuner.filter.TimeFilter openTimeFilter();
-    method public int scan(@NonNull android.media.tv.tuner.frontend.FrontendSettings, int, @NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.frontend.ScanCallback);
-    method public int setLnaEnabled(boolean);
-    method public void setOnTuneEventListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.frontend.OnTuneEventListener);
-    method public void setResourceLostListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.Tuner.OnResourceLostListener);
-    method public void shareFrontendFromTuner(@NonNull android.media.tv.tuner.Tuner);
-    method public int tune(@NonNull android.media.tv.tuner.frontend.FrontendSettings);
-    method public void updateResourcePriority(int, int);
-    field public static final int INVALID_AV_SYNC_ID = -1; // 0xffffffff
-    field public static final int INVALID_FILTER_ID = -1; // 0xffffffff
-    field public static final int INVALID_STREAM_ID = 65535; // 0xffff
-    field public static final long INVALID_TIMESTAMP = -1L; // 0xffffffffffffffffL
-    field public static final int INVALID_TS_PID = 65535; // 0xffff
-    field public static final int RESULT_INVALID_ARGUMENT = 4; // 0x4
-    field public static final int RESULT_INVALID_STATE = 3; // 0x3
-    field public static final int RESULT_NOT_INITIALIZED = 2; // 0x2
-    field public static final int RESULT_OUT_OF_MEMORY = 5; // 0x5
-    field public static final int RESULT_SUCCESS = 0; // 0x0
-    field public static final int RESULT_UNAVAILABLE = 1; // 0x1
-    field public static final int RESULT_UNKNOWN_ERROR = 6; // 0x6
-    field public static final int SCAN_TYPE_AUTO = 1; // 0x1
-    field public static final int SCAN_TYPE_BLIND = 2; // 0x2
-    field public static final int SCAN_TYPE_UNDEFINED = 0; // 0x0
-  }
-
-  public static interface Tuner.OnResourceLostListener {
-    method public void onResourceLost(@NonNull android.media.tv.tuner.Tuner);
-  }
-
-}
-
-package android.media.tv.tuner.dvr {
-
-  public class DvrPlayback implements java.lang.AutoCloseable {
-    method public int attachFilter(@NonNull android.media.tv.tuner.filter.Filter);
-    method public void close();
-    method public int configure(@NonNull android.media.tv.tuner.dvr.DvrSettings);
-    method public int detachFilter(@NonNull android.media.tv.tuner.filter.Filter);
-    method public int flush();
-    method public long read(long);
-    method public long read(@NonNull byte[], long, long);
-    method public void setFileDescriptor(@NonNull android.os.ParcelFileDescriptor);
-    method public int start();
-    method public int stop();
-    field public static final int PLAYBACK_STATUS_ALMOST_EMPTY = 2; // 0x2
-    field public static final int PLAYBACK_STATUS_ALMOST_FULL = 4; // 0x4
-    field public static final int PLAYBACK_STATUS_EMPTY = 1; // 0x1
-    field public static final int PLAYBACK_STATUS_FULL = 8; // 0x8
-  }
-
-  public class DvrRecorder implements java.lang.AutoCloseable {
-    method public int attachFilter(@NonNull android.media.tv.tuner.filter.Filter);
-    method public void close();
-    method public int configure(@NonNull android.media.tv.tuner.dvr.DvrSettings);
-    method public int detachFilter(@NonNull android.media.tv.tuner.filter.Filter);
-    method public int flush();
-    method public void setFileDescriptor(@NonNull android.os.ParcelFileDescriptor);
-    method public int start();
-    method public int stop();
-    method public long write(long);
-    method public long write(@NonNull byte[], long, long);
-  }
-
-  public class DvrSettings {
-    method @NonNull public static android.media.tv.tuner.dvr.DvrSettings.Builder builder();
-    method public int getDataFormat();
-    method public long getHighThreshold();
-    method public long getLowThreshold();
-    method public long getPacketSize();
-    method public int getStatusMask();
-    field public static final int DATA_FORMAT_ES = 2; // 0x2
-    field public static final int DATA_FORMAT_PES = 1; // 0x1
-    field public static final int DATA_FORMAT_SHV_TLV = 3; // 0x3
-    field public static final int DATA_FORMAT_TS = 0; // 0x0
-  }
-
-  public static final class DvrSettings.Builder {
-    ctor public DvrSettings.Builder();
-    method @NonNull public android.media.tv.tuner.dvr.DvrSettings build();
-    method @NonNull public android.media.tv.tuner.dvr.DvrSettings.Builder setDataFormat(int);
-    method @NonNull public android.media.tv.tuner.dvr.DvrSettings.Builder setHighThreshold(long);
-    method @NonNull public android.media.tv.tuner.dvr.DvrSettings.Builder setLowThreshold(long);
-    method @NonNull public android.media.tv.tuner.dvr.DvrSettings.Builder setPacketSize(long);
-    method @NonNull public android.media.tv.tuner.dvr.DvrSettings.Builder setStatusMask(int);
-  }
-
-  public interface OnPlaybackStatusChangedListener {
-    method public void onPlaybackStatusChanged(int);
-  }
-
-  public interface OnRecordStatusChangedListener {
-    method public void onRecordStatusChanged(int);
-  }
-
-}
-
-package android.media.tv.tuner.filter {
-
-  public final class AlpFilterConfiguration extends android.media.tv.tuner.filter.FilterConfiguration {
-    method @NonNull public static android.media.tv.tuner.filter.AlpFilterConfiguration.Builder builder();
-    method public int getLengthType();
-    method public int getPacketType();
-    method public int getType();
-    field public static final int LENGTH_TYPE_UNDEFINED = 0; // 0x0
-    field public static final int LENGTH_TYPE_WITHOUT_ADDITIONAL_HEADER = 1; // 0x1
-    field public static final int LENGTH_TYPE_WITH_ADDITIONAL_HEADER = 2; // 0x2
-    field public static final int PACKET_TYPE_COMPRESSED = 2; // 0x2
-    field public static final int PACKET_TYPE_EXTENSION = 6; // 0x6
-    field public static final int PACKET_TYPE_IPV4 = 0; // 0x0
-    field public static final int PACKET_TYPE_MPEG2_TS = 7; // 0x7
-    field public static final int PACKET_TYPE_SIGNALING = 4; // 0x4
-  }
-
-  public static final class AlpFilterConfiguration.Builder {
-    method @NonNull public android.media.tv.tuner.filter.AlpFilterConfiguration build();
-    method @NonNull public android.media.tv.tuner.filter.AlpFilterConfiguration.Builder setLengthType(int);
-    method @NonNull public android.media.tv.tuner.filter.AlpFilterConfiguration.Builder setPacketType(int);
-    method @NonNull public android.media.tv.tuner.filter.AlpFilterConfiguration.Builder setSettings(@Nullable android.media.tv.tuner.filter.Settings);
-  }
-
-  public class AudioDescriptor {
-    method public byte getAdFade();
-    method public byte getAdGainCenter();
-    method public byte getAdGainFront();
-    method public byte getAdGainSurround();
-    method public byte getAdPan();
-    method public char getAdVersionTextTag();
-  }
-
-  public class AvSettings extends android.media.tv.tuner.filter.Settings {
-    method @NonNull public static android.media.tv.tuner.filter.AvSettings.Builder builder(int, boolean);
-    method public boolean isPassthrough();
-  }
-
-  public static class AvSettings.Builder {
-    method @NonNull public android.media.tv.tuner.filter.AvSettings build();
-    method @NonNull public android.media.tv.tuner.filter.AvSettings.Builder setPassthrough(boolean);
-  }
-
-  public class DownloadEvent extends android.media.tv.tuner.filter.FilterEvent {
-    method public int getDataLength();
-    method public int getItemFragmentIndex();
-    method public int getItemId();
-    method public int getLastItemFragmentIndex();
-    method public int getMpuSequenceNumber();
-  }
-
-  public class DownloadSettings extends android.media.tv.tuner.filter.Settings {
-    method @NonNull public static android.media.tv.tuner.filter.DownloadSettings.Builder builder(int);
-    method public int getDownloadId();
-  }
-
-  public static class DownloadSettings.Builder {
-    method @NonNull public android.media.tv.tuner.filter.DownloadSettings build();
-    method @NonNull public android.media.tv.tuner.filter.DownloadSettings.Builder setDownloadId(int);
-  }
-
-  public class Filter implements java.lang.AutoCloseable {
-    method public void close();
-    method public int configure(@NonNull android.media.tv.tuner.filter.FilterConfiguration);
-    method public int flush();
-    method public int getId();
-    method public int read(@NonNull byte[], long, long);
-    method public int setDataSource(@Nullable android.media.tv.tuner.filter.Filter);
-    method public int start();
-    method public int stop();
-    field public static final int STATUS_DATA_READY = 1; // 0x1
-    field public static final int STATUS_HIGH_WATER = 4; // 0x4
-    field public static final int STATUS_LOW_WATER = 2; // 0x2
-    field public static final int STATUS_OVERFLOW = 8; // 0x8
-    field public static final int SUBTYPE_AUDIO = 3; // 0x3
-    field public static final int SUBTYPE_DOWNLOAD = 5; // 0x5
-    field public static final int SUBTYPE_IP = 13; // 0xd
-    field public static final int SUBTYPE_IP_PAYLOAD = 12; // 0xc
-    field public static final int SUBTYPE_MMTP = 10; // 0xa
-    field public static final int SUBTYPE_NTP = 11; // 0xb
-    field public static final int SUBTYPE_PAYLOAD_THROUGH = 14; // 0xe
-    field public static final int SUBTYPE_PCR = 8; // 0x8
-    field public static final int SUBTYPE_PES = 2; // 0x2
-    field public static final int SUBTYPE_PTP = 16; // 0x10
-    field public static final int SUBTYPE_RECORD = 6; // 0x6
-    field public static final int SUBTYPE_SECTION = 1; // 0x1
-    field public static final int SUBTYPE_TEMI = 9; // 0x9
-    field public static final int SUBTYPE_TLV = 15; // 0xf
-    field public static final int SUBTYPE_TS = 7; // 0x7
-    field public static final int SUBTYPE_UNDEFINED = 0; // 0x0
-    field public static final int SUBTYPE_VIDEO = 4; // 0x4
-    field public static final int TYPE_ALP = 16; // 0x10
-    field public static final int TYPE_IP = 4; // 0x4
-    field public static final int TYPE_MMTP = 2; // 0x2
-    field public static final int TYPE_TLV = 8; // 0x8
-    field public static final int TYPE_TS = 1; // 0x1
-    field public static final int TYPE_UNDEFINED = 0; // 0x0
-  }
-
-  public interface FilterCallback {
-    method public void onFilterEvent(@NonNull android.media.tv.tuner.filter.Filter, @NonNull android.media.tv.tuner.filter.FilterEvent[]);
-    method public void onFilterStatusChanged(@NonNull android.media.tv.tuner.filter.Filter, int);
-  }
-
-  public abstract class FilterConfiguration {
-    method @Nullable public android.media.tv.tuner.filter.Settings getSettings();
-    method public abstract int getType();
-  }
-
-  public abstract class FilterEvent {
-    ctor public FilterEvent();
-  }
-
-  public final class IpFilterConfiguration extends android.media.tv.tuner.filter.FilterConfiguration {
-    method @NonNull public static android.media.tv.tuner.filter.IpFilterConfiguration.Builder builder();
-    method @NonNull @Size(min=4, max=16) public byte[] getDstIpAddress();
-    method public int getDstPort();
-    method @NonNull @Size(min=4, max=16) public byte[] getSrcIpAddress();
-    method public int getSrcPort();
-    method public int getType();
-    method public boolean isPassthrough();
-  }
-
-  public static final class IpFilterConfiguration.Builder {
-    method @NonNull public android.media.tv.tuner.filter.IpFilterConfiguration build();
-    method @NonNull public android.media.tv.tuner.filter.IpFilterConfiguration.Builder setDstIpAddress(@NonNull byte[]);
-    method @NonNull public android.media.tv.tuner.filter.IpFilterConfiguration.Builder setDstPort(int);
-    method @NonNull public android.media.tv.tuner.filter.IpFilterConfiguration.Builder setPassthrough(boolean);
-    method @NonNull public android.media.tv.tuner.filter.IpFilterConfiguration.Builder setSettings(@Nullable android.media.tv.tuner.filter.Settings);
-    method @NonNull public android.media.tv.tuner.filter.IpFilterConfiguration.Builder setSrcIpAddress(@NonNull byte[]);
-    method @NonNull public android.media.tv.tuner.filter.IpFilterConfiguration.Builder setSrcPort(int);
-  }
-
-  public class IpPayloadEvent extends android.media.tv.tuner.filter.FilterEvent {
-    method public int getDataLength();
-  }
-
-  public class MediaEvent extends android.media.tv.tuner.filter.FilterEvent {
-    method public long getAudioHandle();
-    method public long getAvDataId();
-    method public long getDataLength();
-    method @Nullable public android.media.tv.tuner.filter.AudioDescriptor getExtraMetaData();
-    method @Nullable public android.media.MediaCodec.LinearBlock getLinearBlock();
-    method public int getMpuSequenceNumber();
-    method public long getOffset();
-    method public long getPts();
-    method public int getStreamId();
-    method public boolean isPrivateData();
-    method public boolean isPtsPresent();
-    method public boolean isSecureMemory();
-  }
-
-  public final class MmtpFilterConfiguration extends android.media.tv.tuner.filter.FilterConfiguration {
-    method @NonNull public static android.media.tv.tuner.filter.MmtpFilterConfiguration.Builder builder();
-    method public int getMmtpPacketId();
-    method public int getType();
-  }
-
-  public static final class MmtpFilterConfiguration.Builder {
-    method @NonNull public android.media.tv.tuner.filter.MmtpFilterConfiguration build();
-    method @NonNull public android.media.tv.tuner.filter.MmtpFilterConfiguration.Builder setMmtpPacketId(int);
-    method @NonNull public android.media.tv.tuner.filter.MmtpFilterConfiguration.Builder setSettings(@Nullable android.media.tv.tuner.filter.Settings);
-  }
-
-  public class MmtpRecordEvent extends android.media.tv.tuner.filter.FilterEvent {
-    method public long getDataLength();
-    method public int getScHevcIndexMask();
-  }
-
-  public class PesEvent extends android.media.tv.tuner.filter.FilterEvent {
-    method public int getDataLength();
-    method public int getMpuSequenceNumber();
-    method public int getStreamId();
-  }
-
-  public class PesSettings extends android.media.tv.tuner.filter.Settings {
-    method @NonNull public static android.media.tv.tuner.filter.PesSettings.Builder builder(int);
-    method public int getStreamId();
-    method public boolean isRaw();
-  }
-
-  public static class PesSettings.Builder {
-    method @NonNull public android.media.tv.tuner.filter.PesSettings build();
-    method @NonNull public android.media.tv.tuner.filter.PesSettings.Builder setRaw(boolean);
-    method @NonNull public android.media.tv.tuner.filter.PesSettings.Builder setStreamId(int);
-  }
-
-  public class RecordSettings extends android.media.tv.tuner.filter.Settings {
-    method @NonNull public static android.media.tv.tuner.filter.RecordSettings.Builder builder(int);
-    method public int getScIndexMask();
-    method public int getScIndexType();
-    method public int getTsIndexMask();
-    field public static final int INDEX_TYPE_NONE = 0; // 0x0
-    field public static final int INDEX_TYPE_SC = 1; // 0x1
-    field public static final int INDEX_TYPE_SC_HEVC = 2; // 0x2
-    field public static final int SC_HEVC_INDEX_AUD = 2; // 0x2
-    field public static final int SC_HEVC_INDEX_SLICE_BLA_N_LP = 16; // 0x10
-    field public static final int SC_HEVC_INDEX_SLICE_BLA_W_RADL = 8; // 0x8
-    field public static final int SC_HEVC_INDEX_SLICE_CE_BLA_W_LP = 4; // 0x4
-    field public static final int SC_HEVC_INDEX_SLICE_IDR_N_LP = 64; // 0x40
-    field public static final int SC_HEVC_INDEX_SLICE_IDR_W_RADL = 32; // 0x20
-    field public static final int SC_HEVC_INDEX_SLICE_TRAIL_CRA = 128; // 0x80
-    field public static final int SC_HEVC_INDEX_SPS = 1; // 0x1
-    field public static final int SC_INDEX_B_FRAME = 4; // 0x4
-    field public static final int SC_INDEX_I_FRAME = 1; // 0x1
-    field public static final int SC_INDEX_P_FRAME = 2; // 0x2
-    field public static final int SC_INDEX_SEQUENCE = 8; // 0x8
-    field public static final int TS_INDEX_ADAPTATION_EXTENSION_FLAG = 4096; // 0x1000
-    field public static final int TS_INDEX_CHANGE_TO_EVEN_SCRAMBLED = 8; // 0x8
-    field public static final int TS_INDEX_CHANGE_TO_NOT_SCRAMBLED = 4; // 0x4
-    field public static final int TS_INDEX_CHANGE_TO_ODD_SCRAMBLED = 16; // 0x10
-    field public static final int TS_INDEX_DISCONTINUITY_INDICATOR = 32; // 0x20
-    field public static final int TS_INDEX_FIRST_PACKET = 1; // 0x1
-    field public static final int TS_INDEX_OPCR_FLAG = 512; // 0x200
-    field public static final int TS_INDEX_PAYLOAD_UNIT_START_INDICATOR = 2; // 0x2
-    field public static final int TS_INDEX_PCR_FLAG = 256; // 0x100
-    field public static final int TS_INDEX_PRIORITY_INDICATOR = 128; // 0x80
-    field public static final int TS_INDEX_PRIVATE_DATA = 2048; // 0x800
-    field public static final int TS_INDEX_RANDOM_ACCESS_INDICATOR = 64; // 0x40
-    field public static final int TS_INDEX_SPLICING_POINT_FLAG = 1024; // 0x400
-  }
-
-  public static class RecordSettings.Builder {
-    method @NonNull public android.media.tv.tuner.filter.RecordSettings build();
-    method @NonNull public android.media.tv.tuner.filter.RecordSettings.Builder setScIndexMask(int);
-    method @NonNull public android.media.tv.tuner.filter.RecordSettings.Builder setScIndexType(int);
-    method @NonNull public android.media.tv.tuner.filter.RecordSettings.Builder setTsIndexMask(int);
-  }
-
-  public class SectionEvent extends android.media.tv.tuner.filter.FilterEvent {
-    method public int getDataLength();
-    method public int getSectionNumber();
-    method public int getTableId();
-    method public int getVersion();
-  }
-
-  public abstract class SectionSettings extends android.media.tv.tuner.filter.Settings {
-    method public boolean isCrcEnabled();
-    method public boolean isRaw();
-    method public boolean isRepeat();
-  }
-
-  public abstract static class SectionSettings.Builder<T extends android.media.tv.tuner.filter.SectionSettings.Builder<T>> {
-    method @NonNull public T setCrcEnabled(boolean);
-    method @NonNull public T setRaw(boolean);
-    method @NonNull public T setRepeat(boolean);
-  }
-
-  public class SectionSettingsWithSectionBits extends android.media.tv.tuner.filter.SectionSettings {
-    method @NonNull public static android.media.tv.tuner.filter.SectionSettingsWithSectionBits.Builder builder(int);
-    method @NonNull public byte[] getFilterBytes();
-    method @NonNull public byte[] getMask();
-    method @NonNull public byte[] getMode();
-  }
-
-  public static class SectionSettingsWithSectionBits.Builder extends android.media.tv.tuner.filter.SectionSettings.Builder<android.media.tv.tuner.filter.SectionSettingsWithSectionBits.Builder> {
-    method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithSectionBits build();
-    method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithSectionBits.Builder setFilter(@NonNull byte[]);
-    method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithSectionBits.Builder setMask(@NonNull byte[]);
-    method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithSectionBits.Builder setMode(@NonNull byte[]);
-  }
-
-  public class SectionSettingsWithTableInfo extends android.media.tv.tuner.filter.SectionSettings {
-    method @NonNull public static android.media.tv.tuner.filter.SectionSettingsWithTableInfo.Builder builder(int);
-    method public int getTableId();
-    method public int getVersion();
-  }
-
-  public static class SectionSettingsWithTableInfo.Builder extends android.media.tv.tuner.filter.SectionSettings.Builder<android.media.tv.tuner.filter.SectionSettingsWithTableInfo.Builder> {
-    method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithTableInfo build();
-    method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithTableInfo.Builder setTableId(int);
-    method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithTableInfo.Builder setVersion(int);
-  }
-
-  public abstract class Settings {
-    method public int getType();
-  }
-
-  public class TemiEvent extends android.media.tv.tuner.filter.FilterEvent {
-    method @NonNull public byte[] getDescriptorData();
-    method public byte getDescriptorTag();
-    method public long getPts();
-  }
-
-  public class TimeFilter implements java.lang.AutoCloseable {
-    method public int clearTimestamp();
-    method public void close();
-    method public long getSourceTime();
-    method public long getTimeStamp();
-    method public int setCurrentTimestamp(long);
-  }
-
-  public final class TlvFilterConfiguration extends android.media.tv.tuner.filter.FilterConfiguration {
-    method @NonNull public static android.media.tv.tuner.filter.TlvFilterConfiguration.Builder builder();
-    method public int getPacketType();
-    method public int getType();
-    method public boolean isCompressedIpPacket();
-    method public boolean isPassthrough();
-    field public static final int PACKET_TYPE_COMPRESSED = 3; // 0x3
-    field public static final int PACKET_TYPE_IPV4 = 1; // 0x1
-    field public static final int PACKET_TYPE_IPV6 = 2; // 0x2
-    field public static final int PACKET_TYPE_NULL = 255; // 0xff
-    field public static final int PACKET_TYPE_SIGNALING = 254; // 0xfe
-  }
-
-  public static final class TlvFilterConfiguration.Builder {
-    method @NonNull public android.media.tv.tuner.filter.TlvFilterConfiguration build();
-    method @NonNull public android.media.tv.tuner.filter.TlvFilterConfiguration.Builder setCompressedIpPacket(boolean);
-    method @NonNull public android.media.tv.tuner.filter.TlvFilterConfiguration.Builder setPacketType(int);
-    method @NonNull public android.media.tv.tuner.filter.TlvFilterConfiguration.Builder setPassthrough(boolean);
-    method @NonNull public android.media.tv.tuner.filter.TlvFilterConfiguration.Builder setSettings(@Nullable android.media.tv.tuner.filter.Settings);
-  }
-
-  public final class TsFilterConfiguration extends android.media.tv.tuner.filter.FilterConfiguration {
-    method @NonNull public static android.media.tv.tuner.filter.TsFilterConfiguration.Builder builder();
-    method public int getTpid();
-    method public int getType();
-  }
-
-  public static final class TsFilterConfiguration.Builder {
-    method @NonNull public android.media.tv.tuner.filter.TsFilterConfiguration build();
-    method @NonNull public android.media.tv.tuner.filter.TsFilterConfiguration.Builder setSettings(@Nullable android.media.tv.tuner.filter.Settings);
-    method @NonNull public android.media.tv.tuner.filter.TsFilterConfiguration.Builder setTpid(int);
-  }
-
-  public class TsRecordEvent extends android.media.tv.tuner.filter.FilterEvent {
-    method public long getDataLength();
-    method public int getPacketId();
-    method public int getScIndexMask();
-    method public int getTsIndexMask();
-  }
-
-}
-
-package android.media.tv.tuner.frontend {
-
-  public class AnalogFrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
-    method public int getSifStandardCapability();
-    method public int getSignalTypeCapability();
-  }
-
-  public class AnalogFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
-    method @NonNull public static android.media.tv.tuner.frontend.AnalogFrontendSettings.Builder builder();
-    method public int getSifStandard();
-    method public int getSignalType();
-    method public int getType();
-    field public static final int SIF_AUTO = 1; // 0x1
-    field public static final int SIF_BG = 2; // 0x2
-    field public static final int SIF_BG_A2 = 4; // 0x4
-    field public static final int SIF_BG_NICAM = 8; // 0x8
-    field public static final int SIF_DK = 32; // 0x20
-    field public static final int SIF_DK1_A2 = 64; // 0x40
-    field public static final int SIF_DK2_A2 = 128; // 0x80
-    field public static final int SIF_DK3_A2 = 256; // 0x100
-    field public static final int SIF_DK_NICAM = 512; // 0x200
-    field public static final int SIF_I = 16; // 0x10
-    field public static final int SIF_I_NICAM = 32768; // 0x8000
-    field public static final int SIF_L = 1024; // 0x400
-    field public static final int SIF_L_NICAM = 65536; // 0x10000
-    field public static final int SIF_L_PRIME = 131072; // 0x20000
-    field public static final int SIF_M = 2048; // 0x800
-    field public static final int SIF_M_A2 = 8192; // 0x2000
-    field public static final int SIF_M_BTSC = 4096; // 0x1000
-    field public static final int SIF_M_EIAJ = 16384; // 0x4000
-    field public static final int SIF_UNDEFINED = 0; // 0x0
-    field public static final int SIGNAL_TYPE_AUTO = 1; // 0x1
-    field public static final int SIGNAL_TYPE_NTSC = 32; // 0x20
-    field public static final int SIGNAL_TYPE_NTSC_443 = 64; // 0x40
-    field public static final int SIGNAL_TYPE_PAL = 2; // 0x2
-    field public static final int SIGNAL_TYPE_PAL_60 = 16; // 0x10
-    field public static final int SIGNAL_TYPE_PAL_M = 4; // 0x4
-    field public static final int SIGNAL_TYPE_PAL_N = 8; // 0x8
-    field public static final int SIGNAL_TYPE_SECAM = 128; // 0x80
-    field public static final int SIGNAL_TYPE_UNDEFINED = 0; // 0x0
-  }
-
-  public static class AnalogFrontendSettings.Builder {
-    method @NonNull public android.media.tv.tuner.frontend.AnalogFrontendSettings build();
-    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.AnalogFrontendSettings.Builder setFrequency(int);
-    method @NonNull public android.media.tv.tuner.frontend.AnalogFrontendSettings.Builder setSifStandard(int);
-    method @NonNull public android.media.tv.tuner.frontend.AnalogFrontendSettings.Builder setSignalType(int);
-  }
-
-  public class Atsc3FrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
-    method public int getBandwidthCapability();
-    method public int getDemodOutputFormatCapability();
-    method public int getFecCapability();
-    method public int getModulationCapability();
-    method public int getPlpCodeRateCapability();
-    method public int getTimeInterleaveModeCapability();
-  }
-
-  public class Atsc3FrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
-    method @NonNull public static android.media.tv.tuner.frontend.Atsc3FrontendSettings.Builder builder();
-    method public int getBandwidth();
-    method public int getDemodOutputFormat();
-    method @NonNull public android.media.tv.tuner.frontend.Atsc3PlpSettings[] getPlpSettings();
-    method public int getType();
-    field public static final int BANDWIDTH_AUTO = 1; // 0x1
-    field public static final int BANDWIDTH_BANDWIDTH_6MHZ = 2; // 0x2
-    field public static final int BANDWIDTH_BANDWIDTH_7MHZ = 4; // 0x4
-    field public static final int BANDWIDTH_BANDWIDTH_8MHZ = 8; // 0x8
-    field public static final int BANDWIDTH_UNDEFINED = 0; // 0x0
-    field public static final int CODERATE_10_15 = 512; // 0x200
-    field public static final int CODERATE_11_15 = 1024; // 0x400
-    field public static final int CODERATE_12_15 = 2048; // 0x800
-    field public static final int CODERATE_13_15 = 4096; // 0x1000
-    field public static final int CODERATE_2_15 = 2; // 0x2
-    field public static final int CODERATE_3_15 = 4; // 0x4
-    field public static final int CODERATE_4_15 = 8; // 0x8
-    field public static final int CODERATE_5_15 = 16; // 0x10
-    field public static final int CODERATE_6_15 = 32; // 0x20
-    field public static final int CODERATE_7_15 = 64; // 0x40
-    field public static final int CODERATE_8_15 = 128; // 0x80
-    field public static final int CODERATE_9_15 = 256; // 0x100
-    field public static final int CODERATE_AUTO = 1; // 0x1
-    field public static final int CODERATE_UNDEFINED = 0; // 0x0
-    field public static final int DEMOD_OUTPUT_FORMAT_ATSC3_LINKLAYER_PACKET = 1; // 0x1
-    field public static final int DEMOD_OUTPUT_FORMAT_BASEBAND_PACKET = 2; // 0x2
-    field public static final int DEMOD_OUTPUT_FORMAT_UNDEFINED = 0; // 0x0
-    field public static final int FEC_AUTO = 1; // 0x1
-    field public static final int FEC_BCH_LDPC_16K = 2; // 0x2
-    field public static final int FEC_BCH_LDPC_64K = 4; // 0x4
-    field public static final int FEC_CRC_LDPC_16K = 8; // 0x8
-    field public static final int FEC_CRC_LDPC_64K = 16; // 0x10
-    field public static final int FEC_LDPC_16K = 32; // 0x20
-    field public static final int FEC_LDPC_64K = 64; // 0x40
-    field public static final int FEC_UNDEFINED = 0; // 0x0
-    field public static final int MODULATION_AUTO = 1; // 0x1
-    field public static final int MODULATION_MOD_1024QAM = 32; // 0x20
-    field public static final int MODULATION_MOD_16QAM = 4; // 0x4
-    field public static final int MODULATION_MOD_256QAM = 16; // 0x10
-    field public static final int MODULATION_MOD_4096QAM = 64; // 0x40
-    field public static final int MODULATION_MOD_64QAM = 8; // 0x8
-    field public static final int MODULATION_MOD_QPSK = 2; // 0x2
-    field public static final int MODULATION_UNDEFINED = 0; // 0x0
-    field public static final int TIME_INTERLEAVE_MODE_AUTO = 1; // 0x1
-    field public static final int TIME_INTERLEAVE_MODE_CTI = 2; // 0x2
-    field public static final int TIME_INTERLEAVE_MODE_HTI = 4; // 0x4
-    field public static final int TIME_INTERLEAVE_MODE_UNDEFINED = 0; // 0x0
-  }
-
-  public static class Atsc3FrontendSettings.Builder {
-    method @NonNull public android.media.tv.tuner.frontend.Atsc3FrontendSettings build();
-    method @NonNull public android.media.tv.tuner.frontend.Atsc3FrontendSettings.Builder setBandwidth(int);
-    method @NonNull public android.media.tv.tuner.frontend.Atsc3FrontendSettings.Builder setDemodOutputFormat(int);
-    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.Atsc3FrontendSettings.Builder setFrequency(int);
-    method @NonNull public android.media.tv.tuner.frontend.Atsc3FrontendSettings.Builder setPlpSettings(@NonNull android.media.tv.tuner.frontend.Atsc3PlpSettings[]);
-  }
-
-  public class Atsc3PlpInfo {
-    method public boolean getLlsFlag();
-    method public int getPlpId();
-  }
-
-  public class Atsc3PlpSettings {
-    method @NonNull public static android.media.tv.tuner.frontend.Atsc3PlpSettings.Builder builder();
-    method public int getCodeRate();
-    method public int getFec();
-    method public int getInterleaveMode();
-    method public int getModulation();
-    method public int getPlpId();
-  }
-
-  public static class Atsc3PlpSettings.Builder {
-    method @NonNull public android.media.tv.tuner.frontend.Atsc3PlpSettings build();
-    method @NonNull public android.media.tv.tuner.frontend.Atsc3PlpSettings.Builder setCodeRate(int);
-    method @NonNull public android.media.tv.tuner.frontend.Atsc3PlpSettings.Builder setFec(int);
-    method @NonNull public android.media.tv.tuner.frontend.Atsc3PlpSettings.Builder setInterleaveMode(int);
-    method @NonNull public android.media.tv.tuner.frontend.Atsc3PlpSettings.Builder setModulation(int);
-    method @NonNull public android.media.tv.tuner.frontend.Atsc3PlpSettings.Builder setPlpId(int);
-  }
-
-  public class AtscFrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
-    method public int getModulationCapability();
-  }
-
-  public class AtscFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
-    method @NonNull public static android.media.tv.tuner.frontend.AtscFrontendSettings.Builder builder();
-    method public int getModulation();
-    method public int getType();
-    field public static final int MODULATION_AUTO = 1; // 0x1
-    field public static final int MODULATION_MOD_16VSB = 8; // 0x8
-    field public static final int MODULATION_MOD_8VSB = 4; // 0x4
-    field public static final int MODULATION_UNDEFINED = 0; // 0x0
-  }
-
-  public static class AtscFrontendSettings.Builder {
-    method @NonNull public android.media.tv.tuner.frontend.AtscFrontendSettings build();
-    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.AtscFrontendSettings.Builder setFrequency(int);
-    method @NonNull public android.media.tv.tuner.frontend.AtscFrontendSettings.Builder setModulation(int);
-  }
-
-  public class DvbcFrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
-    method public int getAnnexCapability();
-    method public int getFecCapability();
-    method public int getModulationCapability();
-  }
-
-  public class DvbcFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
-    method @NonNull public static android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder builder();
-    method public int getAnnex();
-    method public long getInnerFec();
-    method public int getModulation();
-    method public int getOuterFec();
-    method public int getSpectralInversion();
-    method public int getSymbolRate();
-    method public int getType();
-    field public static final int ANNEX_A = 1; // 0x1
-    field public static final int ANNEX_B = 2; // 0x2
-    field public static final int ANNEX_C = 4; // 0x4
-    field public static final int ANNEX_UNDEFINED = 0; // 0x0
-    field public static final int MODULATION_AUTO = 1; // 0x1
-    field public static final int MODULATION_MOD_128QAM = 16; // 0x10
-    field public static final int MODULATION_MOD_16QAM = 2; // 0x2
-    field public static final int MODULATION_MOD_256QAM = 32; // 0x20
-    field public static final int MODULATION_MOD_32QAM = 4; // 0x4
-    field public static final int MODULATION_MOD_64QAM = 8; // 0x8
-    field public static final int MODULATION_UNDEFINED = 0; // 0x0
-    field public static final int OUTER_FEC_OUTER_FEC_NONE = 1; // 0x1
-    field public static final int OUTER_FEC_OUTER_FEC_RS = 2; // 0x2
-    field public static final int OUTER_FEC_UNDEFINED = 0; // 0x0
-    field public static final int SPECTRAL_INVERSION_INVERTED = 2; // 0x2
-    field public static final int SPECTRAL_INVERSION_NORMAL = 1; // 0x1
-    field public static final int SPECTRAL_INVERSION_UNDEFINED = 0; // 0x0
-  }
-
-  public static class DvbcFrontendSettings.Builder {
-    method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings build();
-    method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setAnnex(int);
-    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setFrequency(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setInnerFec(long);
-    method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setModulation(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setOuterFec(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setSpectralInversion(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setSymbolRate(int);
-  }
-
-  public class DvbsCodeRate {
-    method @NonNull public static android.media.tv.tuner.frontend.DvbsCodeRate.Builder builder();
-    method public int getBitsPer1000Symbol();
-    method public long getInnerFec();
-    method public boolean isLinear();
-    method public boolean isShortFrameEnabled();
-  }
-
-  public static class DvbsCodeRate.Builder {
-    method @NonNull public android.media.tv.tuner.frontend.DvbsCodeRate build();
-    method @NonNull public android.media.tv.tuner.frontend.DvbsCodeRate.Builder setBitsPer1000Symbol(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbsCodeRate.Builder setInnerFec(long);
-    method @NonNull public android.media.tv.tuner.frontend.DvbsCodeRate.Builder setLinear(boolean);
-    method @NonNull public android.media.tv.tuner.frontend.DvbsCodeRate.Builder setShortFrameEnabled(boolean);
-  }
-
-  public class DvbsFrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
-    method public long getInnerFecCapability();
-    method public int getModulationCapability();
-    method public int getStandardCapability();
-  }
-
-  public class DvbsFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
-    method @NonNull public static android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder builder();
-    method @Nullable public android.media.tv.tuner.frontend.DvbsCodeRate getCodeRate();
-    method public int getInputStreamId();
-    method public int getModulation();
-    method public int getPilot();
-    method public int getRolloff();
-    method public int getStandard();
-    method public int getSymbolRate();
-    method public int getType();
-    method public int getVcmMode();
-    field public static final int MODULATION_AUTO = 1; // 0x1
-    field public static final int MODULATION_MOD_128APSK = 2048; // 0x800
-    field public static final int MODULATION_MOD_16APSK = 256; // 0x100
-    field public static final int MODULATION_MOD_16PSK = 16; // 0x10
-    field public static final int MODULATION_MOD_16QAM = 8; // 0x8
-    field public static final int MODULATION_MOD_256APSK = 4096; // 0x1000
-    field public static final int MODULATION_MOD_32APSK = 512; // 0x200
-    field public static final int MODULATION_MOD_32PSK = 32; // 0x20
-    field public static final int MODULATION_MOD_64APSK = 1024; // 0x400
-    field public static final int MODULATION_MOD_8APSK = 128; // 0x80
-    field public static final int MODULATION_MOD_8PSK = 4; // 0x4
-    field public static final int MODULATION_MOD_ACM = 64; // 0x40
-    field public static final int MODULATION_MOD_QPSK = 2; // 0x2
-    field public static final int MODULATION_MOD_RESERVED = 8192; // 0x2000
-    field public static final int MODULATION_UNDEFINED = 0; // 0x0
-    field public static final int PILOT_AUTO = 3; // 0x3
-    field public static final int PILOT_OFF = 2; // 0x2
-    field public static final int PILOT_ON = 1; // 0x1
-    field public static final int PILOT_UNDEFINED = 0; // 0x0
-    field public static final int ROLLOFF_0_10 = 5; // 0x5
-    field public static final int ROLLOFF_0_15 = 4; // 0x4
-    field public static final int ROLLOFF_0_20 = 3; // 0x3
-    field public static final int ROLLOFF_0_25 = 2; // 0x2
-    field public static final int ROLLOFF_0_35 = 1; // 0x1
-    field public static final int ROLLOFF_0_5 = 6; // 0x6
-    field public static final int ROLLOFF_UNDEFINED = 0; // 0x0
-    field public static final int STANDARD_AUTO = 1; // 0x1
-    field public static final int STANDARD_S = 2; // 0x2
-    field public static final int STANDARD_S2 = 4; // 0x4
-    field public static final int STANDARD_S2X = 8; // 0x8
-    field public static final int VCM_MODE_AUTO = 1; // 0x1
-    field public static final int VCM_MODE_MANUAL = 2; // 0x2
-    field public static final int VCM_MODE_UNDEFINED = 0; // 0x0
-  }
-
-  public static class DvbsFrontendSettings.Builder {
-    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings build();
-    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setCodeRate(@Nullable android.media.tv.tuner.frontend.DvbsCodeRate);
-    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setFrequency(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setInputStreamId(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setModulation(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setPilot(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setRolloff(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setStandard(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setSymbolRate(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setVcmMode(int);
-  }
-
-  public class DvbtFrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
-    method public int getBandwidthCapability();
-    method public int getCodeRateCapability();
-    method public int getConstellationCapability();
-    method public int getGuardIntervalCapability();
-    method public int getHierarchyCapability();
-    method public int getTransmissionModeCapability();
-    method public boolean isMisoSupported();
-    method public boolean isT2Supported();
-  }
-
-  public class DvbtFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
-    method @NonNull public static android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder builder();
-    method public int getBandwidth();
-    method public int getConstellation();
-    method public int getGuardInterval();
-    method public int getHierarchy();
-    method public int getHighPriorityCodeRate();
-    method public int getLowPriorityCodeRate();
-    method public int getPlpGroupId();
-    method public int getPlpId();
-    method public int getPlpMode();
-    method public int getStandard();
-    method public int getTransmissionMode();
-    method public int getType();
-    method public boolean isHighPriority();
-    method public boolean isMiso();
-    field public static final int BANDWIDTH_10MHZ = 64; // 0x40
-    field public static final int BANDWIDTH_1_7MHZ = 32; // 0x20
-    field public static final int BANDWIDTH_5MHZ = 16; // 0x10
-    field public static final int BANDWIDTH_6MHZ = 8; // 0x8
-    field public static final int BANDWIDTH_7MHZ = 4; // 0x4
-    field public static final int BANDWIDTH_8MHZ = 2; // 0x2
-    field public static final int BANDWIDTH_AUTO = 1; // 0x1
-    field public static final int BANDWIDTH_UNDEFINED = 0; // 0x0
-    field public static final int CODERATE_1_2 = 2; // 0x2
-    field public static final int CODERATE_2_3 = 4; // 0x4
-    field public static final int CODERATE_3_4 = 8; // 0x8
-    field public static final int CODERATE_3_5 = 64; // 0x40
-    field public static final int CODERATE_4_5 = 128; // 0x80
-    field public static final int CODERATE_5_6 = 16; // 0x10
-    field public static final int CODERATE_6_7 = 256; // 0x100
-    field public static final int CODERATE_7_8 = 32; // 0x20
-    field public static final int CODERATE_8_9 = 512; // 0x200
-    field public static final int CODERATE_AUTO = 1; // 0x1
-    field public static final int CODERATE_UNDEFINED = 0; // 0x0
-    field public static final int CONSTELLATION_16QAM = 4; // 0x4
-    field public static final int CONSTELLATION_256QAM = 16; // 0x10
-    field public static final int CONSTELLATION_64QAM = 8; // 0x8
-    field public static final int CONSTELLATION_AUTO = 1; // 0x1
-    field public static final int CONSTELLATION_QPSK = 2; // 0x2
-    field public static final int CONSTELLATION_UNDEFINED = 0; // 0x0
-    field public static final int GUARD_INTERVAL_19_128 = 64; // 0x40
-    field public static final int GUARD_INTERVAL_19_256 = 128; // 0x80
-    field public static final int GUARD_INTERVAL_1_128 = 32; // 0x20
-    field public static final int GUARD_INTERVAL_1_16 = 4; // 0x4
-    field public static final int GUARD_INTERVAL_1_32 = 2; // 0x2
-    field public static final int GUARD_INTERVAL_1_4 = 16; // 0x10
-    field public static final int GUARD_INTERVAL_1_8 = 8; // 0x8
-    field public static final int GUARD_INTERVAL_AUTO = 1; // 0x1
-    field public static final int GUARD_INTERVAL_UNDEFINED = 0; // 0x0
-    field public static final int HIERARCHY_1_INDEPTH = 64; // 0x40
-    field public static final int HIERARCHY_1_NATIVE = 4; // 0x4
-    field public static final int HIERARCHY_2_INDEPTH = 128; // 0x80
-    field public static final int HIERARCHY_2_NATIVE = 8; // 0x8
-    field public static final int HIERARCHY_4_INDEPTH = 256; // 0x100
-    field public static final int HIERARCHY_4_NATIVE = 16; // 0x10
-    field public static final int HIERARCHY_AUTO = 1; // 0x1
-    field public static final int HIERARCHY_NON_INDEPTH = 32; // 0x20
-    field public static final int HIERARCHY_NON_NATIVE = 2; // 0x2
-    field public static final int HIERARCHY_UNDEFINED = 0; // 0x0
-    field public static final int PLP_MODE_AUTO = 1; // 0x1
-    field public static final int PLP_MODE_MANUAL = 2; // 0x2
-    field public static final int PLP_MODE_UNDEFINED = 0; // 0x0
-    field public static final int STANDARD_AUTO = 1; // 0x1
-    field public static final int STANDARD_T = 2; // 0x2
-    field public static final int STANDARD_T2 = 4; // 0x4
-    field public static final int TRANSMISSION_MODE_16K = 32; // 0x20
-    field public static final int TRANSMISSION_MODE_1K = 16; // 0x10
-    field public static final int TRANSMISSION_MODE_2K = 2; // 0x2
-    field public static final int TRANSMISSION_MODE_32K = 64; // 0x40
-    field public static final int TRANSMISSION_MODE_4K = 8; // 0x8
-    field public static final int TRANSMISSION_MODE_8K = 4; // 0x4
-    field public static final int TRANSMISSION_MODE_AUTO = 1; // 0x1
-    field public static final int TRANSMISSION_MODE_UNDEFINED = 0; // 0x0
-  }
-
-  public static class DvbtFrontendSettings.Builder {
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings build();
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setBandwidth(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setConstellation(int);
-    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setFrequency(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setGuardInterval(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setHierarchy(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setHighPriority(boolean);
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setHighPriorityCodeRate(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setLowPriorityCodeRate(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setMiso(boolean);
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setPlpGroupId(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setPlpId(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setPlpMode(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setStandard(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setTransmissionMode(int);
-  }
-
-  public abstract class FrontendCapabilities {
-    ctor public FrontendCapabilities();
-  }
-
-  public class FrontendInfo {
-    method public int getAcquireRange();
-    method public int getExclusiveGroupId();
-    method @NonNull public android.util.Range<java.lang.Integer> getFrequencyRange();
-    method @NonNull public android.media.tv.tuner.frontend.FrontendCapabilities getFrontendCapabilities();
-    method public int getId();
-    method @NonNull public int[] getStatusCapabilities();
-    method @NonNull public android.util.Range<java.lang.Integer> getSymbolRateRange();
-    method public int getType();
-  }
-
-  public abstract class FrontendSettings {
-    method public int getFrequency();
-    method public abstract int getType();
-    field public static final long FEC_11_15 = 4194304L; // 0x400000L
-    field public static final long FEC_11_20 = 8388608L; // 0x800000L
-    field public static final long FEC_11_45 = 16777216L; // 0x1000000L
-    field public static final long FEC_13_18 = 33554432L; // 0x2000000L
-    field public static final long FEC_13_45 = 67108864L; // 0x4000000L
-    field public static final long FEC_14_45 = 134217728L; // 0x8000000L
-    field public static final long FEC_1_2 = 2L; // 0x2L
-    field public static final long FEC_1_3 = 4L; // 0x4L
-    field public static final long FEC_1_4 = 8L; // 0x8L
-    field public static final long FEC_1_5 = 16L; // 0x10L
-    field public static final long FEC_23_36 = 268435456L; // 0x10000000L
-    field public static final long FEC_25_36 = 536870912L; // 0x20000000L
-    field public static final long FEC_26_45 = 1073741824L; // 0x40000000L
-    field public static final long FEC_28_45 = -2147483648L; // 0xffffffff80000000L
-    field public static final long FEC_29_45 = 1L; // 0x1L
-    field public static final long FEC_2_3 = 32L; // 0x20L
-    field public static final long FEC_2_5 = 64L; // 0x40L
-    field public static final long FEC_2_9 = 128L; // 0x80L
-    field public static final long FEC_31_45 = 2L; // 0x2L
-    field public static final long FEC_32_45 = 4L; // 0x4L
-    field public static final long FEC_3_4 = 256L; // 0x100L
-    field public static final long FEC_3_5 = 512L; // 0x200L
-    field public static final long FEC_4_15 = 2048L; // 0x800L
-    field public static final long FEC_4_5 = 1024L; // 0x400L
-    field public static final long FEC_5_6 = 4096L; // 0x1000L
-    field public static final long FEC_5_9 = 8192L; // 0x2000L
-    field public static final long FEC_6_7 = 16384L; // 0x4000L
-    field public static final long FEC_77_90 = 8L; // 0x8L
-    field public static final long FEC_7_15 = 131072L; // 0x20000L
-    field public static final long FEC_7_8 = 32768L; // 0x8000L
-    field public static final long FEC_7_9 = 65536L; // 0x10000L
-    field public static final long FEC_8_15 = 524288L; // 0x80000L
-    field public static final long FEC_8_9 = 262144L; // 0x40000L
-    field public static final long FEC_9_10 = 1048576L; // 0x100000L
-    field public static final long FEC_9_20 = 2097152L; // 0x200000L
-    field public static final long FEC_AUTO = 1L; // 0x1L
-    field public static final long FEC_UNDEFINED = 0L; // 0x0L
-    field public static final int TYPE_ANALOG = 1; // 0x1
-    field public static final int TYPE_ATSC = 2; // 0x2
-    field public static final int TYPE_ATSC3 = 3; // 0x3
-    field public static final int TYPE_DVBC = 4; // 0x4
-    field public static final int TYPE_DVBS = 5; // 0x5
-    field public static final int TYPE_DVBT = 6; // 0x6
-    field public static final int TYPE_ISDBS = 7; // 0x7
-    field public static final int TYPE_ISDBS3 = 8; // 0x8
-    field public static final int TYPE_ISDBT = 9; // 0x9
-    field public static final int TYPE_UNDEFINED = 0; // 0x0
-  }
-
-  public class FrontendStatus {
-    method public int getAgc();
-    method @NonNull public android.media.tv.tuner.frontend.FrontendStatus.Atsc3PlpTuningInfo[] getAtsc3PlpTuningInfo();
-    method public int getBer();
-    method public int getFreqOffset();
-    method public int getHierarchy();
-    method public long getInnerFec();
-    method @NonNull public boolean[] getLayerErrors();
-    method public int getLnbVoltage();
-    method public int getMer();
-    method public int getModulation();
-    method public int getPer();
-    method public int getPerBer();
-    method public int getPlpId();
-    method public int getSignalQuality();
-    method public int getSignalStrength();
-    method public int getSnr();
-    method public int getSpectralInversion();
-    method public int getSymbolRate();
-    method public boolean isDemodLocked();
-    method public boolean isEwbs();
-    method public boolean isLnaOn();
-    method public boolean isRfLocked();
-    field public static final int FRONTEND_STATUS_TYPE_AGC = 14; // 0xe
-    field public static final int FRONTEND_STATUS_TYPE_ATSC3_PLP_INFO = 21; // 0x15
-    field public static final int FRONTEND_STATUS_TYPE_BER = 2; // 0x2
-    field public static final int FRONTEND_STATUS_TYPE_DEMOD_LOCK = 0; // 0x0
-    field public static final int FRONTEND_STATUS_TYPE_EWBS = 13; // 0xd
-    field public static final int FRONTEND_STATUS_TYPE_FEC = 8; // 0x8
-    field public static final int FRONTEND_STATUS_TYPE_FREQ_OFFSET = 18; // 0x12
-    field public static final int FRONTEND_STATUS_TYPE_HIERARCHY = 19; // 0x13
-    field public static final int FRONTEND_STATUS_TYPE_LAYER_ERROR = 16; // 0x10
-    field public static final int FRONTEND_STATUS_TYPE_LNA = 15; // 0xf
-    field public static final int FRONTEND_STATUS_TYPE_LNB_VOLTAGE = 11; // 0xb
-    field public static final int FRONTEND_STATUS_TYPE_MER = 17; // 0x11
-    field public static final int FRONTEND_STATUS_TYPE_MODULATION = 9; // 0x9
-    field public static final int FRONTEND_STATUS_TYPE_PER = 3; // 0x3
-    field public static final int FRONTEND_STATUS_TYPE_PLP_ID = 12; // 0xc
-    field public static final int FRONTEND_STATUS_TYPE_PRE_BER = 4; // 0x4
-    field public static final int FRONTEND_STATUS_TYPE_RF_LOCK = 20; // 0x14
-    field public static final int FRONTEND_STATUS_TYPE_SIGNAL_QUALITY = 5; // 0x5
-    field public static final int FRONTEND_STATUS_TYPE_SIGNAL_STRENGTH = 6; // 0x6
-    field public static final int FRONTEND_STATUS_TYPE_SNR = 1; // 0x1
-    field public static final int FRONTEND_STATUS_TYPE_SPECTRAL = 10; // 0xa
-    field public static final int FRONTEND_STATUS_TYPE_SYMBOL_RATE = 7; // 0x7
-  }
-
-  public static class FrontendStatus.Atsc3PlpTuningInfo {
-    method public int getPlpId();
-    method public int getUec();
-    method public boolean isLocked();
-  }
-
-  public class Isdbs3FrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
-    method public int getCodeRateCapability();
-    method public int getModulationCapability();
-  }
-
-  public class Isdbs3FrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
-    method @NonNull public static android.media.tv.tuner.frontend.Isdbs3FrontendSettings.Builder builder();
-    method public int getCodeRate();
-    method public int getModulation();
-    method public int getRolloff();
-    method public int getStreamId();
-    method public int getStreamIdType();
-    method public int getSymbolRate();
-    method public int getType();
-    field public static final int CODERATE_1_2 = 8; // 0x8
-    field public static final int CODERATE_1_3 = 2; // 0x2
-    field public static final int CODERATE_2_3 = 32; // 0x20
-    field public static final int CODERATE_2_5 = 4; // 0x4
-    field public static final int CODERATE_3_4 = 64; // 0x40
-    field public static final int CODERATE_3_5 = 16; // 0x10
-    field public static final int CODERATE_4_5 = 256; // 0x100
-    field public static final int CODERATE_5_6 = 512; // 0x200
-    field public static final int CODERATE_7_8 = 1024; // 0x400
-    field public static final int CODERATE_7_9 = 128; // 0x80
-    field public static final int CODERATE_9_10 = 2048; // 0x800
-    field public static final int CODERATE_AUTO = 1; // 0x1
-    field public static final int CODERATE_UNDEFINED = 0; // 0x0
-    field public static final int MODULATION_AUTO = 1; // 0x1
-    field public static final int MODULATION_MOD_16APSK = 16; // 0x10
-    field public static final int MODULATION_MOD_32APSK = 32; // 0x20
-    field public static final int MODULATION_MOD_8PSK = 8; // 0x8
-    field public static final int MODULATION_MOD_BPSK = 2; // 0x2
-    field public static final int MODULATION_MOD_QPSK = 4; // 0x4
-    field public static final int MODULATION_UNDEFINED = 0; // 0x0
-    field public static final int ROLLOFF_0_03 = 1; // 0x1
-    field public static final int ROLLOFF_UNDEFINED = 0; // 0x0
-  }
-
-  public static class Isdbs3FrontendSettings.Builder {
-    method @NonNull public android.media.tv.tuner.frontend.Isdbs3FrontendSettings build();
-    method @NonNull public android.media.tv.tuner.frontend.Isdbs3FrontendSettings.Builder setCodeRate(int);
-    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.Isdbs3FrontendSettings.Builder setFrequency(int);
-    method @NonNull public android.media.tv.tuner.frontend.Isdbs3FrontendSettings.Builder setModulation(int);
-    method @NonNull public android.media.tv.tuner.frontend.Isdbs3FrontendSettings.Builder setRolloff(int);
-    method @NonNull public android.media.tv.tuner.frontend.Isdbs3FrontendSettings.Builder setStreamId(int);
-    method @NonNull public android.media.tv.tuner.frontend.Isdbs3FrontendSettings.Builder setStreamIdType(int);
-    method @NonNull public android.media.tv.tuner.frontend.Isdbs3FrontendSettings.Builder setSymbolRate(int);
-  }
-
-  public class IsdbsFrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
-    method public int getCodeRateCapability();
-    method public int getModulationCapability();
-  }
-
-  public class IsdbsFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
-    method @NonNull public static android.media.tv.tuner.frontend.IsdbsFrontendSettings.Builder builder();
-    method public int getCodeRate();
-    method public int getModulation();
-    method public int getRolloff();
-    method public int getStreamId();
-    method public int getStreamIdType();
-    method public int getSymbolRate();
-    method public int getType();
-    field public static final int CODERATE_1_2 = 2; // 0x2
-    field public static final int CODERATE_2_3 = 4; // 0x4
-    field public static final int CODERATE_3_4 = 8; // 0x8
-    field public static final int CODERATE_5_6 = 16; // 0x10
-    field public static final int CODERATE_7_8 = 32; // 0x20
-    field public static final int CODERATE_AUTO = 1; // 0x1
-    field public static final int CODERATE_UNDEFINED = 0; // 0x0
-    field public static final int MODULATION_AUTO = 1; // 0x1
-    field public static final int MODULATION_MOD_BPSK = 2; // 0x2
-    field public static final int MODULATION_MOD_QPSK = 4; // 0x4
-    field public static final int MODULATION_MOD_TC8PSK = 8; // 0x8
-    field public static final int MODULATION_UNDEFINED = 0; // 0x0
-    field public static final int ROLLOFF_0_35 = 1; // 0x1
-    field public static final int ROLLOFF_UNDEFINED = 0; // 0x0
-    field public static final int STREAM_ID_TYPE_ID = 0; // 0x0
-    field public static final int STREAM_ID_TYPE_RELATIVE_NUMBER = 1; // 0x1
-  }
-
-  public static class IsdbsFrontendSettings.Builder {
-    method @NonNull public android.media.tv.tuner.frontend.IsdbsFrontendSettings build();
-    method @NonNull public android.media.tv.tuner.frontend.IsdbsFrontendSettings.Builder setCodeRate(int);
-    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.IsdbsFrontendSettings.Builder setFrequency(int);
-    method @NonNull public android.media.tv.tuner.frontend.IsdbsFrontendSettings.Builder setModulation(int);
-    method @NonNull public android.media.tv.tuner.frontend.IsdbsFrontendSettings.Builder setRolloff(int);
-    method @NonNull public android.media.tv.tuner.frontend.IsdbsFrontendSettings.Builder setStreamId(int);
-    method @NonNull public android.media.tv.tuner.frontend.IsdbsFrontendSettings.Builder setStreamIdType(int);
-    method @NonNull public android.media.tv.tuner.frontend.IsdbsFrontendSettings.Builder setSymbolRate(int);
-  }
-
-  public class IsdbtFrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
-    method public int getBandwidthCapability();
-    method public int getCodeRateCapability();
-    method public int getGuardIntervalCapability();
-    method public int getModeCapability();
-    method public int getModulationCapability();
-  }
-
-  public class IsdbtFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
-    method @NonNull public static android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder builder();
-    method public int getBandwidth();
-    method public int getCodeRate();
-    method public int getGuardInterval();
-    method public int getMode();
-    method public int getModulation();
-    method public int getServiceAreaId();
-    method public int getType();
-    field public static final int BANDWIDTH_6MHZ = 8; // 0x8
-    field public static final int BANDWIDTH_7MHZ = 4; // 0x4
-    field public static final int BANDWIDTH_8MHZ = 2; // 0x2
-    field public static final int BANDWIDTH_AUTO = 1; // 0x1
-    field public static final int BANDWIDTH_UNDEFINED = 0; // 0x0
-    field public static final int MODE_1 = 2; // 0x2
-    field public static final int MODE_2 = 4; // 0x4
-    field public static final int MODE_3 = 8; // 0x8
-    field public static final int MODE_AUTO = 1; // 0x1
-    field public static final int MODE_UNDEFINED = 0; // 0x0
-    field public static final int MODULATION_AUTO = 1; // 0x1
-    field public static final int MODULATION_MOD_16QAM = 8; // 0x8
-    field public static final int MODULATION_MOD_64QAM = 16; // 0x10
-    field public static final int MODULATION_MOD_DQPSK = 2; // 0x2
-    field public static final int MODULATION_MOD_QPSK = 4; // 0x4
-    field public static final int MODULATION_UNDEFINED = 0; // 0x0
-  }
-
-  public static class IsdbtFrontendSettings.Builder {
-    method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings build();
-    method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setBandwidth(int);
-    method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setCodeRate(int);
-    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setFrequency(int);
-    method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setGuardInterval(int);
-    method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setMode(int);
-    method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setModulation(int);
-    method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setServiceAreaId(int);
-  }
-
-  public interface OnTuneEventListener {
-    method public void onTuneEvent(int);
-    field public static final int SIGNAL_LOCKED = 0; // 0x0
-    field public static final int SIGNAL_LOST_LOCK = 2; // 0x2
-    field public static final int SIGNAL_NO_SIGNAL = 1; // 0x1
-  }
-
-  public interface ScanCallback {
-    method public void onAnalogSifStandardReported(int);
-    method public void onAtsc3PlpInfosReported(@NonNull android.media.tv.tuner.frontend.Atsc3PlpInfo[]);
-    method public void onDvbsStandardReported(int);
-    method public void onDvbtStandardReported(int);
-    method public void onFrequenciesReported(@NonNull int[]);
-    method public void onGroupIdsReported(@NonNull int[]);
-    method public void onHierarchyReported(int);
-    method public void onInputStreamIdsReported(@NonNull int[]);
-    method public void onLocked();
-    method public void onPlpIdsReported(@NonNull int[]);
-    method public void onProgress(@IntRange(from=0, to=100) int);
-    method public void onScanStopped();
-    method public void onSignalTypeReported(int);
-    method public void onSymbolRatesReported(@NonNull int[]);
-  }
-
-}
-
-package android.media.voice {
-
-  public final class KeyphraseModelManager {
-    method @RequiresPermission("android.permission.MANAGE_VOICE_KEYPHRASES") public void deleteKeyphraseSoundModel(int, @NonNull java.util.Locale);
-    method @Nullable @RequiresPermission("android.permission.MANAGE_VOICE_KEYPHRASES") public android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel getKeyphraseSoundModel(int, @NonNull java.util.Locale);
-    method @RequiresPermission("android.permission.MANAGE_VOICE_KEYPHRASES") public void updateKeyphraseSoundModel(@NonNull android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel);
-  }
-
-}
-
-package android.metrics {
-
-  public class LogMaker {
-    ctor public LogMaker(int);
-    ctor public LogMaker(Object[]);
-    method public android.metrics.LogMaker addTaggedData(int, Object);
-    method public android.metrics.LogMaker clearCategory();
-    method public android.metrics.LogMaker clearPackageName();
-    method public android.metrics.LogMaker clearSubtype();
-    method public android.metrics.LogMaker clearTaggedData(int);
-    method public android.metrics.LogMaker clearType();
-    method public void deserialize(Object[]);
-    method public int getCategory();
-    method public long getCounterBucket();
-    method public String getCounterName();
-    method public int getCounterValue();
-    method public String getPackageName();
-    method public int getProcessId();
-    method public int getSubtype();
-    method public Object getTaggedData(int);
-    method public long getTimestamp();
-    method public int getType();
-    method public int getUid();
-    method public boolean isLongCounterBucket();
-    method public boolean isSubsetOf(android.metrics.LogMaker);
-    method public boolean isValidValue(Object);
-    method public Object[] serialize();
-    method public android.metrics.LogMaker setCategory(int);
-    method public android.metrics.LogMaker setPackageName(String);
-    method public android.metrics.LogMaker setSubtype(int);
-    method public android.metrics.LogMaker setType(int);
-  }
-
-  public class MetricsReader {
-    ctor public MetricsReader();
-    method public void checkpoint();
-    method public boolean hasNext();
-    method public android.metrics.LogMaker next();
-    method public void read(long);
-    method public void reset();
-  }
-
-}
-
-package android.net {
-
-  public class CaptivePortal implements android.os.Parcelable {
-    method public void logEvent(int, @NonNull String);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_STACK) public void reevaluateNetwork();
-    method public void useNetwork();
-    field public static final int APP_REQUEST_REEVALUATION_REQUIRED = 100; // 0x64
-    field public static final int APP_RETURN_DISMISSED = 0; // 0x0
-    field public static final int APP_RETURN_UNWANTED = 1; // 0x1
-    field public static final int APP_RETURN_WANTED_AS_IS = 2; // 0x2
-  }
-
-  public final class CaptivePortalData implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getByteLimit();
-    method public long getExpiryTimeMillis();
-    method public long getRefreshTimeMillis();
-    method @Nullable public android.net.Uri getUserPortalUrl();
-    method @Nullable public android.net.Uri getVenueInfoUrl();
-    method public boolean isCaptive();
-    method public boolean isSessionExtendable();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.CaptivePortalData> CREATOR;
-  }
-
-  public static class CaptivePortalData.Builder {
-    ctor public CaptivePortalData.Builder();
-    ctor public CaptivePortalData.Builder(@Nullable android.net.CaptivePortalData);
-    method @NonNull public android.net.CaptivePortalData build();
-    method @NonNull public android.net.CaptivePortalData.Builder setBytesRemaining(long);
-    method @NonNull public android.net.CaptivePortalData.Builder setCaptive(boolean);
-    method @NonNull public android.net.CaptivePortalData.Builder setExpiryTime(long);
-    method @NonNull public android.net.CaptivePortalData.Builder setRefreshTime(long);
-    method @NonNull public android.net.CaptivePortalData.Builder setSessionExtendable(boolean);
-    method @NonNull public android.net.CaptivePortalData.Builder setUserPortalUrl(@Nullable android.net.Uri);
-    method @NonNull public android.net.CaptivePortalData.Builder setVenueInfoUrl(@Nullable android.net.Uri);
-  }
-
-  public class ConnectivityManager {
-    method @NonNull @RequiresPermission(android.Manifest.permission.PACKET_KEEPALIVE_OFFLOAD) public android.net.SocketKeepalive createNattKeepalive(@NonNull android.net.Network, @NonNull android.os.ParcelFileDescriptor, @NonNull java.net.InetAddress, @NonNull java.net.InetAddress, @NonNull java.util.concurrent.Executor, @NonNull android.net.SocketKeepalive.Callback);
-    method @NonNull @RequiresPermission(android.Manifest.permission.PACKET_KEEPALIVE_OFFLOAD) public android.net.SocketKeepalive createSocketKeepalive(@NonNull android.net.Network, @NonNull java.net.Socket, @NonNull java.util.concurrent.Executor, @NonNull android.net.SocketKeepalive.Callback);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public String getCaptivePortalServerUrl();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void getLatestTetheringEntitlementResult(int, boolean, @NonNull java.util.concurrent.Executor, @NonNull android.net.ConnectivityManager.OnTetheringEntitlementResultListener);
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public boolean isTetheringSupported();
-    method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_FACTORY}) public int registerNetworkProvider(@NonNull android.net.NetworkProvider);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void registerTetheringEventCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.ConnectivityManager.OnTetheringEventCallback);
-    method @RequiresPermission(android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK) public void requestNetwork(@NonNull android.net.NetworkRequest, int, int, @NonNull android.os.Handler, @NonNull android.net.ConnectivityManager.NetworkCallback);
-    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_AIRPLANE_MODE, android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK}) public void setAirplaneMode(boolean);
-    method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK}) public boolean shouldAvoidBadWifi();
-    method @RequiresPermission(android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK) public void startCaptivePortalApp(@NonNull android.net.Network, @NonNull android.os.Bundle);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void startTethering(int, boolean, android.net.ConnectivityManager.OnStartTetheringCallback);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void startTethering(int, boolean, android.net.ConnectivityManager.OnStartTetheringCallback, android.os.Handler);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void stopTethering(int);
-    method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_FACTORY}) public void unregisterNetworkProvider(@NonNull android.net.NetworkProvider);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void unregisterTetheringEventCallback(@NonNull android.net.ConnectivityManager.OnTetheringEventCallback);
-    field public static final String EXTRA_CAPTIVE_PORTAL_PROBE_SPEC = "android.net.extra.CAPTIVE_PORTAL_PROBE_SPEC";
-    field public static final String EXTRA_CAPTIVE_PORTAL_USER_AGENT = "android.net.extra.CAPTIVE_PORTAL_USER_AGENT";
-    field public static final int TETHERING_BLUETOOTH = 2; // 0x2
-    field public static final int TETHERING_USB = 1; // 0x1
-    field public static final int TETHERING_WIFI = 0; // 0x0
-    field @Deprecated public static final int TETHER_ERROR_ENTITLEMENT_UNKONWN = 13; // 0xd
-    field @Deprecated public static final int TETHER_ERROR_NO_ERROR = 0; // 0x0
-    field @Deprecated public static final int TETHER_ERROR_PROVISION_FAILED = 11; // 0xb
-    field public static final int TYPE_NONE = -1; // 0xffffffff
-    field @Deprecated public static final int TYPE_WIFI_P2P = 13; // 0xd
-  }
-
-  @Deprecated public abstract static class ConnectivityManager.OnStartTetheringCallback {
-    ctor @Deprecated public ConnectivityManager.OnStartTetheringCallback();
-    method @Deprecated public void onTetheringFailed();
-    method @Deprecated public void onTetheringStarted();
-  }
-
-  @Deprecated public static interface ConnectivityManager.OnTetheringEntitlementResultListener {
-    method @Deprecated public void onTetheringEntitlementResult(int);
-  }
-
-  @Deprecated public abstract static class ConnectivityManager.OnTetheringEventCallback {
-    ctor @Deprecated public ConnectivityManager.OnTetheringEventCallback();
-    method @Deprecated public void onUpstreamChanged(@Nullable android.net.Network);
-  }
-
-  public class EthernetManager {
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public android.net.EthernetManager.TetheredInterfaceRequest requestTetheredInterface(@NonNull java.util.concurrent.Executor, @NonNull android.net.EthernetManager.TetheredInterfaceCallback);
-  }
-
-  public static interface EthernetManager.TetheredInterfaceCallback {
-    method public void onAvailable(@NonNull String);
-    method public void onUnavailable();
-  }
-
-  public static class EthernetManager.TetheredInterfaceRequest {
-    method public void release();
-  }
-
-  public final class InvalidPacketException extends java.lang.Exception {
-    ctor public InvalidPacketException(int);
-    method public int getError();
-    field public static final int ERROR_INVALID_IP_ADDRESS = -21; // 0xffffffeb
-    field public static final int ERROR_INVALID_LENGTH = -23; // 0xffffffe9
-    field public static final int ERROR_INVALID_PORT = -22; // 0xffffffea
-  }
-
-  public final class IpConfiguration implements android.os.Parcelable {
-    ctor public IpConfiguration();
-    ctor public IpConfiguration(@NonNull android.net.IpConfiguration);
-    method public int describeContents();
-    method @Nullable public android.net.ProxyInfo getHttpProxy();
-    method @NonNull public android.net.IpConfiguration.IpAssignment getIpAssignment();
-    method @NonNull public android.net.IpConfiguration.ProxySettings getProxySettings();
-    method @Nullable public android.net.StaticIpConfiguration getStaticIpConfiguration();
-    method public void setHttpProxy(@Nullable android.net.ProxyInfo);
-    method public void setIpAssignment(@NonNull android.net.IpConfiguration.IpAssignment);
-    method public void setProxySettings(@NonNull android.net.IpConfiguration.ProxySettings);
-    method public void setStaticIpConfiguration(@Nullable android.net.StaticIpConfiguration);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.IpConfiguration> CREATOR;
-  }
-
-  public enum IpConfiguration.IpAssignment {
-    enum_constant public static final android.net.IpConfiguration.IpAssignment DHCP;
-    enum_constant public static final android.net.IpConfiguration.IpAssignment STATIC;
-    enum_constant public static final android.net.IpConfiguration.IpAssignment UNASSIGNED;
-  }
-
-  public enum IpConfiguration.ProxySettings {
-    enum_constant public static final android.net.IpConfiguration.ProxySettings NONE;
-    enum_constant public static final android.net.IpConfiguration.ProxySettings PAC;
-    enum_constant public static final android.net.IpConfiguration.ProxySettings STATIC;
-    enum_constant public static final android.net.IpConfiguration.ProxySettings UNASSIGNED;
-  }
-
-  public final class IpPrefix implements android.os.Parcelable {
-    ctor public IpPrefix(@NonNull java.net.InetAddress, @IntRange(from=0, to=128) int);
-    ctor public IpPrefix(@NonNull String);
-  }
-
-  public final class IpSecManager {
-    method @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public void applyTunnelModeTransform(@NonNull android.net.IpSecManager.IpSecTunnelInterface, int, @NonNull android.net.IpSecTransform) throws java.io.IOException;
-    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public android.net.IpSecManager.IpSecTunnelInterface createIpSecTunnelInterface(@NonNull java.net.InetAddress, @NonNull java.net.InetAddress, @NonNull android.net.Network) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException;
-  }
-
-  public static final class IpSecManager.IpSecTunnelInterface implements java.lang.AutoCloseable {
-    method @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public void addAddress(@NonNull java.net.InetAddress, int) throws java.io.IOException;
-    method public void close();
-    method @NonNull public String getInterfaceName();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public void removeAddress(@NonNull java.net.InetAddress, int) throws java.io.IOException;
-  }
-
-  public static class IpSecTransform.Builder {
-    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public android.net.IpSecTransform buildTunnelModeTransform(@NonNull java.net.InetAddress, @NonNull android.net.IpSecManager.SecurityParameterIndex) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException, android.net.IpSecManager.SpiUnavailableException;
-  }
-
-  public class KeepalivePacketData {
-    ctor protected KeepalivePacketData(@NonNull java.net.InetAddress, @IntRange(from=0, to=65535) int, @NonNull java.net.InetAddress, @IntRange(from=0, to=65535) int, @NonNull byte[]) throws android.net.InvalidPacketException;
-    method @NonNull public java.net.InetAddress getDstAddress();
-    method public int getDstPort();
-    method @NonNull public byte[] getPacket();
-    method @NonNull public java.net.InetAddress getSrcAddress();
-    method public int getSrcPort();
-  }
-
-  public class LinkAddress implements android.os.Parcelable {
-    ctor public LinkAddress(@NonNull java.net.InetAddress, @IntRange(from=0, to=128) int, int, int);
-    ctor public LinkAddress(@NonNull java.net.InetAddress, @IntRange(from=0, to=128) int, int, int, long, long);
-    ctor public LinkAddress(@NonNull java.net.InetAddress, @IntRange(from=0, to=128) int);
-    ctor public LinkAddress(@NonNull String);
-    ctor public LinkAddress(@NonNull String, int, int);
-    method public long getDeprecationTime();
-    method public long getExpirationTime();
-    method public boolean isGlobalPreferred();
-    method public boolean isIpv4();
-    method public boolean isIpv6();
-    method public boolean isSameAddressAs(@Nullable android.net.LinkAddress);
-    field public static final long LIFETIME_PERMANENT = 9223372036854775807L; // 0x7fffffffffffffffL
-    field public static final long LIFETIME_UNKNOWN = -1L; // 0xffffffffffffffffL
-  }
-
-  public final class LinkProperties implements android.os.Parcelable {
-    ctor public LinkProperties(@Nullable android.net.LinkProperties);
-    ctor public LinkProperties(@Nullable android.net.LinkProperties, boolean);
-    method public boolean addDnsServer(@NonNull java.net.InetAddress);
-    method public boolean addLinkAddress(@NonNull android.net.LinkAddress);
-    method public boolean addPcscfServer(@NonNull java.net.InetAddress);
-    method @NonNull public java.util.List<java.net.InetAddress> getAddresses();
-    method @NonNull public java.util.List<java.lang.String> getAllInterfaceNames();
-    method @NonNull public java.util.List<android.net.LinkAddress> getAllLinkAddresses();
-    method @NonNull public java.util.List<android.net.RouteInfo> getAllRoutes();
-    method @Nullable public android.net.Uri getCaptivePortalApiUrl();
-    method @Nullable public android.net.CaptivePortalData getCaptivePortalData();
-    method @NonNull public java.util.List<java.net.InetAddress> getPcscfServers();
-    method @Nullable public String getTcpBufferSizes();
-    method @NonNull public java.util.List<java.net.InetAddress> getValidatedPrivateDnsServers();
-    method public boolean hasGlobalIpv6Address();
-    method public boolean hasIpv4Address();
-    method public boolean hasIpv4DefaultRoute();
-    method public boolean hasIpv4DnsServer();
-    method public boolean hasIpv6DefaultRoute();
-    method public boolean hasIpv6DnsServer();
-    method public boolean isIpv4Provisioned();
-    method public boolean isIpv6Provisioned();
-    method public boolean isProvisioned();
-    method public boolean isReachable(@NonNull java.net.InetAddress);
-    method public boolean removeDnsServer(@NonNull java.net.InetAddress);
-    method public boolean removeLinkAddress(@NonNull android.net.LinkAddress);
-    method public boolean removeRoute(@NonNull android.net.RouteInfo);
-    method public void setCaptivePortalApiUrl(@Nullable android.net.Uri);
-    method public void setCaptivePortalData(@Nullable android.net.CaptivePortalData);
-    method public void setPcscfServers(@NonNull java.util.Collection<java.net.InetAddress>);
-    method public void setPrivateDnsServerName(@Nullable String);
-    method public void setTcpBufferSizes(@Nullable String);
-    method public void setUsePrivateDns(boolean);
-    method public void setValidatedPrivateDnsServers(@NonNull java.util.Collection<java.net.InetAddress>);
-  }
-
-  public final class MatchAllNetworkSpecifier extends android.net.NetworkSpecifier implements android.os.Parcelable {
-    ctor public MatchAllNetworkSpecifier();
-    method public int describeContents();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.MatchAllNetworkSpecifier> CREATOR;
-  }
-
-  public final class NattKeepalivePacketData extends android.net.KeepalivePacketData implements android.os.Parcelable {
-    ctor public NattKeepalivePacketData(@NonNull java.net.InetAddress, int, @NonNull java.net.InetAddress, int, @NonNull byte[]) throws android.net.InvalidPacketException;
-    method public int describeContents();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.NattKeepalivePacketData> CREATOR;
-  }
-
-  public class Network implements android.os.Parcelable {
-    ctor public Network(@NonNull android.net.Network);
-    method public int getNetId();
-    method @NonNull public android.net.Network getPrivateDnsBypassingCopy();
-  }
-
-  public abstract class NetworkAgent {
-    ctor public NetworkAgent(@NonNull android.content.Context, @NonNull android.os.Looper, @NonNull String, @NonNull android.net.NetworkCapabilities, @NonNull android.net.LinkProperties, int, @NonNull android.net.NetworkAgentConfig, @Nullable android.net.NetworkProvider);
-    method @Nullable public android.net.Network getNetwork();
-    method public void markConnected();
-    method public void onAddKeepalivePacketFilter(int, @NonNull android.net.KeepalivePacketData);
-    method public void onAutomaticReconnectDisabled();
-    method public void onNetworkUnwanted();
-    method public void onRemoveKeepalivePacketFilter(int);
-    method public void onSaveAcceptUnvalidated(boolean);
-    method public void onSignalStrengthThresholdsUpdated(@NonNull int[]);
-    method public void onStartSocketKeepalive(int, @NonNull java.time.Duration, @NonNull android.net.KeepalivePacketData);
-    method public void onStopSocketKeepalive(int);
-    method public void onValidationStatus(int, @Nullable android.net.Uri);
-    method @NonNull public android.net.Network register();
-    method public final void sendLinkProperties(@NonNull android.net.LinkProperties);
-    method public final void sendNetworkCapabilities(@NonNull android.net.NetworkCapabilities);
-    method public final void sendNetworkScore(@IntRange(from=0, to=99) int);
-    method public final void sendSocketKeepaliveEvent(int, int);
-    method public void unregister();
-    field public static final int VALIDATION_STATUS_NOT_VALID = 2; // 0x2
-    field public static final int VALIDATION_STATUS_VALID = 1; // 0x1
-  }
-
-  public final class NetworkAgentConfig implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getLegacyType();
-    method @NonNull public String getLegacyTypeName();
-    method public boolean isExplicitlySelected();
-    method public boolean isPartialConnectivityAcceptable();
-    method public boolean isUnvalidatedConnectivityAcceptable();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkAgentConfig> CREATOR;
-  }
-
-  public static final class NetworkAgentConfig.Builder {
-    ctor public NetworkAgentConfig.Builder();
-    method @NonNull public android.net.NetworkAgentConfig build();
-    method @NonNull public android.net.NetworkAgentConfig.Builder setExplicitlySelected(boolean);
-    method @NonNull public android.net.NetworkAgentConfig.Builder setLegacyType(int);
-    method @NonNull public android.net.NetworkAgentConfig.Builder setLegacyTypeName(@NonNull String);
-    method @NonNull public android.net.NetworkAgentConfig.Builder setPartialConnectivityAcceptable(boolean);
-    method @NonNull public android.net.NetworkAgentConfig.Builder setUnvalidatedConnectivityAcceptable(boolean);
-  }
-
-  public final class NetworkCapabilities implements android.os.Parcelable {
-    method @NonNull public int[] getAdministratorUids();
-    method @Nullable public String getSsid();
-    method @NonNull public int[] getTransportTypes();
-    method public boolean satisfiedByNetworkCapabilities(@Nullable android.net.NetworkCapabilities);
-    field public static final int NET_CAPABILITY_OEM_PAID = 22; // 0x16
-    field public static final int NET_CAPABILITY_PARTIAL_CONNECTIVITY = 24; // 0x18
-  }
-
-  public static final class NetworkCapabilities.Builder {
-    ctor public NetworkCapabilities.Builder();
-    ctor public NetworkCapabilities.Builder(@NonNull android.net.NetworkCapabilities);
-    method @NonNull public android.net.NetworkCapabilities.Builder addCapability(int);
-    method @NonNull public android.net.NetworkCapabilities.Builder addTransportType(int);
-    method @NonNull public android.net.NetworkCapabilities build();
-    method @NonNull public android.net.NetworkCapabilities.Builder removeCapability(int);
-    method @NonNull public android.net.NetworkCapabilities.Builder removeTransportType(int);
-    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public android.net.NetworkCapabilities.Builder setAdministratorUids(@NonNull int[]);
-    method @NonNull public android.net.NetworkCapabilities.Builder setLinkDownstreamBandwidthKbps(int);
-    method @NonNull public android.net.NetworkCapabilities.Builder setLinkUpstreamBandwidthKbps(int);
-    method @NonNull public android.net.NetworkCapabilities.Builder setNetworkSpecifier(@Nullable android.net.NetworkSpecifier);
-    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public android.net.NetworkCapabilities.Builder setOwnerUid(int);
-    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public android.net.NetworkCapabilities.Builder setRequestorPackageName(@Nullable String);
-    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public android.net.NetworkCapabilities.Builder setRequestorUid(int);
-    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP) public android.net.NetworkCapabilities.Builder setSignalStrength(int);
-    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public android.net.NetworkCapabilities.Builder setSsid(@Nullable String);
-    method @NonNull public android.net.NetworkCapabilities.Builder setTransportInfo(@Nullable android.net.TransportInfo);
-  }
-
-  public class NetworkKey implements android.os.Parcelable {
-    ctor public NetworkKey(android.net.WifiKey);
-    method @Nullable public static android.net.NetworkKey createFromScanResult(@NonNull android.net.wifi.ScanResult);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkKey> CREATOR;
-    field public static final int TYPE_WIFI = 1; // 0x1
-    field public final int type;
-    field public final android.net.WifiKey wifiKey;
-  }
-
-  public class NetworkProvider {
-    ctor public NetworkProvider(@NonNull android.content.Context, @NonNull android.os.Looper, @NonNull String);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public void declareNetworkRequestUnfulfillable(@NonNull android.net.NetworkRequest);
-    method public int getProviderId();
-    method public void onNetworkRequestWithdrawn(@NonNull android.net.NetworkRequest);
-    method public void onNetworkRequested(@NonNull android.net.NetworkRequest, @IntRange(from=0, to=99) int, int);
-    field public static final int ID_NONE = -1; // 0xffffffff
-  }
-
-  public abstract class NetworkRecommendationProvider {
-    ctor public NetworkRecommendationProvider(android.content.Context, java.util.concurrent.Executor);
-    method public final android.os.IBinder getBinder();
-    method public abstract void onRequestScores(android.net.NetworkKey[]);
-  }
-
-  public class NetworkRequest implements android.os.Parcelable {
-    method @Nullable public String getRequestorPackageName();
-    method public int getRequestorUid();
-  }
-
-  public static class NetworkRequest.Builder {
-    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP) public android.net.NetworkRequest.Builder setSignalStrength(int);
-  }
-
-  public class NetworkScoreManager {
-    method @RequiresPermission(anyOf={android.Manifest.permission.SCORE_NETWORKS, android.Manifest.permission.REQUEST_NETWORK_SCORES}) public boolean clearScores() throws java.lang.SecurityException;
-    method @RequiresPermission(anyOf={android.Manifest.permission.SCORE_NETWORKS, android.Manifest.permission.REQUEST_NETWORK_SCORES}) public void disableScoring() throws java.lang.SecurityException;
-    method @RequiresPermission(anyOf={android.Manifest.permission.SCORE_NETWORKS, android.Manifest.permission.REQUEST_NETWORK_SCORES}) public String getActiveScorerPackage();
-    method @RequiresPermission(android.Manifest.permission.REQUEST_NETWORK_SCORES) public void registerNetworkScoreCallback(int, int, @NonNull java.util.concurrent.Executor, @NonNull android.net.NetworkScoreManager.NetworkScoreCallback) throws java.lang.SecurityException;
-    method @RequiresPermission(android.Manifest.permission.REQUEST_NETWORK_SCORES) public boolean requestScores(@NonNull java.util.Collection<android.net.NetworkKey>) throws java.lang.SecurityException;
-    method @RequiresPermission(anyOf={android.Manifest.permission.SCORE_NETWORKS, android.Manifest.permission.REQUEST_NETWORK_SCORES}) public boolean setActiveScorer(String) throws java.lang.SecurityException;
-    method @RequiresPermission(android.Manifest.permission.SCORE_NETWORKS) public boolean updateScores(@NonNull android.net.ScoredNetwork[]) throws java.lang.SecurityException;
-    field @Deprecated public static final String ACTION_CHANGE_ACTIVE = "android.net.scoring.CHANGE_ACTIVE";
-    field public static final String ACTION_CUSTOM_ENABLE = "android.net.scoring.CUSTOM_ENABLE";
-    field public static final String ACTION_RECOMMEND_NETWORKS = "android.net.action.RECOMMEND_NETWORKS";
-    field public static final String ACTION_SCORER_CHANGED = "android.net.scoring.SCORER_CHANGED";
-    field @Deprecated public static final String ACTION_SCORE_NETWORKS = "android.net.scoring.SCORE_NETWORKS";
-    field @Deprecated public static final String EXTRA_NETWORKS_TO_SCORE = "networksToScore";
-    field public static final String EXTRA_NEW_SCORER = "newScorer";
-    field @Deprecated public static final String EXTRA_PACKAGE_NAME = "packageName";
-    field public static final int SCORE_FILTER_CURRENT_NETWORK = 1; // 0x1
-    field public static final int SCORE_FILTER_NONE = 0; // 0x0
-    field public static final int SCORE_FILTER_SCAN_RESULTS = 2; // 0x2
-  }
-
-  public abstract static class NetworkScoreManager.NetworkScoreCallback {
-    ctor public NetworkScoreManager.NetworkScoreCallback();
-    method public abstract void onScoresInvalidated();
-    method public abstract void onScoresUpdated(@NonNull java.util.Collection<android.net.ScoredNetwork>);
-  }
-
-  public abstract class NetworkSpecifier {
-    method public boolean canBeSatisfiedBy(@Nullable android.net.NetworkSpecifier);
-    method @Nullable public android.net.NetworkSpecifier redact();
-  }
-
-  public class NetworkStack {
-    method @Nullable public static android.os.IBinder getService();
-    field public static final String PERMISSION_MAINLINE_NETWORK_STACK = "android.permission.MAINLINE_NETWORK_STACK";
-  }
-
-  public final class NetworkStats implements android.os.Parcelable {
-    ctor public NetworkStats(long, int);
-    method @NonNull public android.net.NetworkStats add(@NonNull android.net.NetworkStats);
-    method @NonNull public android.net.NetworkStats addEntry(@NonNull android.net.NetworkStats.Entry);
-    method public int describeContents();
-    method @NonNull public android.net.NetworkStats subtract(@NonNull android.net.NetworkStats);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkStats> CREATOR;
-    field public static final int DEFAULT_NETWORK_NO = 0; // 0x0
-    field public static final int DEFAULT_NETWORK_YES = 1; // 0x1
-    field public static final String IFACE_VT = "vt_data0";
-    field public static final int METERED_NO = 0; // 0x0
-    field public static final int METERED_YES = 1; // 0x1
-    field public static final int ROAMING_NO = 0; // 0x0
-    field public static final int ROAMING_YES = 1; // 0x1
-    field public static final int SET_DEFAULT = 0; // 0x0
-    field public static final int SET_FOREGROUND = 1; // 0x1
-    field public static final int TAG_NONE = 0; // 0x0
-    field public static final int UID_ALL = -1; // 0xffffffff
-    field public static final int UID_TETHERING = -5; // 0xfffffffb
-  }
-
-  public static class NetworkStats.Entry {
-    ctor public NetworkStats.Entry(@Nullable String, int, int, int, int, int, int, long, long, long, long, long);
-  }
-
-  public final class RouteInfo implements android.os.Parcelable {
-    ctor public RouteInfo(@Nullable android.net.IpPrefix, @Nullable java.net.InetAddress, @Nullable String, int);
-    ctor public RouteInfo(@Nullable android.net.IpPrefix, @Nullable java.net.InetAddress, @Nullable String, int, int);
-    method public int getMtu();
-    method public int getType();
-    field public static final int RTN_THROW = 9; // 0x9
-    field public static final int RTN_UNICAST = 1; // 0x1
-    field public static final int RTN_UNREACHABLE = 7; // 0x7
-  }
-
-  public class RssiCurve implements android.os.Parcelable {
-    ctor public RssiCurve(int, int, byte[]);
-    ctor public RssiCurve(int, int, byte[], int);
-    method public int describeContents();
-    method public byte lookupScore(int);
-    method public byte lookupScore(int, boolean);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.RssiCurve> CREATOR;
-    field public final int activeNetworkRssiBoost;
-    field public final int bucketWidth;
-    field public final byte[] rssiBuckets;
-    field public final int start;
-  }
-
-  public class ScoredNetwork implements android.os.Parcelable {
-    ctor public ScoredNetwork(android.net.NetworkKey, android.net.RssiCurve);
-    ctor public ScoredNetwork(android.net.NetworkKey, android.net.RssiCurve, boolean);
-    ctor public ScoredNetwork(android.net.NetworkKey, android.net.RssiCurve, boolean, @Nullable android.os.Bundle);
-    method public int calculateBadge(int);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final String ATTRIBUTES_KEY_BADGING_CURVE = "android.net.attributes.key.BADGING_CURVE";
-    field public static final String ATTRIBUTES_KEY_HAS_CAPTIVE_PORTAL = "android.net.attributes.key.HAS_CAPTIVE_PORTAL";
-    field public static final String ATTRIBUTES_KEY_RANKING_SCORE_OFFSET = "android.net.attributes.key.RANKING_SCORE_OFFSET";
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.ScoredNetwork> CREATOR;
-    field @Nullable public final android.os.Bundle attributes;
-    field public final boolean meteredHint;
-    field public final android.net.NetworkKey networkKey;
-    field public final android.net.RssiCurve rssiCurve;
-  }
-
-  public abstract class SocketKeepalive implements java.lang.AutoCloseable {
-    field public static final int SUCCESS = 0; // 0x0
-  }
-
-  public final class StaticIpConfiguration implements android.os.Parcelable {
-    ctor public StaticIpConfiguration();
-    ctor public StaticIpConfiguration(@Nullable android.net.StaticIpConfiguration);
-    method public void addDnsServer(@NonNull java.net.InetAddress);
-    method public void clear();
-    method public int describeContents();
-    method @NonNull public java.util.List<java.net.InetAddress> getDnsServers();
-    method @Nullable public String getDomains();
-    method @Nullable public java.net.InetAddress getGateway();
-    method @Nullable public android.net.LinkAddress getIpAddress();
-    method @NonNull public java.util.List<android.net.RouteInfo> getRoutes(@Nullable String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.StaticIpConfiguration> CREATOR;
-  }
-
-  public static final class StaticIpConfiguration.Builder {
-    ctor public StaticIpConfiguration.Builder();
-    method @NonNull public android.net.StaticIpConfiguration build();
-    method @NonNull public android.net.StaticIpConfiguration.Builder setDnsServers(@NonNull Iterable<java.net.InetAddress>);
-    method @NonNull public android.net.StaticIpConfiguration.Builder setDomains(@Nullable String);
-    method @NonNull public android.net.StaticIpConfiguration.Builder setGateway(@Nullable java.net.InetAddress);
-    method @NonNull public android.net.StaticIpConfiguration.Builder setIpAddress(@Nullable android.net.LinkAddress);
-  }
-
-  public final class TetheredClient implements android.os.Parcelable {
-    ctor public TetheredClient(@NonNull android.net.MacAddress, @NonNull java.util.Collection<android.net.TetheredClient.AddressInfo>, int);
-    method public int describeContents();
-    method @NonNull public java.util.List<android.net.TetheredClient.AddressInfo> getAddresses();
-    method @NonNull public android.net.MacAddress getMacAddress();
-    method public int getTetheringType();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.TetheredClient> CREATOR;
-  }
-
-  public static final class TetheredClient.AddressInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.net.LinkAddress getAddress();
-    method @Nullable public String getHostname();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.TetheredClient.AddressInfo> CREATOR;
-  }
-
-  public class TetheringManager {
-    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerTetheringEventCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.TetheringManager.TetheringEventCallback);
-    method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public void requestLatestTetheringEntitlementResult(int, boolean, @NonNull java.util.concurrent.Executor, @NonNull android.net.TetheringManager.OnTetheringEntitlementResultListener);
-    method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public void startTethering(@NonNull android.net.TetheringManager.TetheringRequest, @NonNull java.util.concurrent.Executor, @NonNull android.net.TetheringManager.StartTetheringCallback);
-    method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public void stopAllTethering();
-    method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public void stopTethering(int);
-    method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.ACCESS_NETWORK_STATE}) public void unregisterTetheringEventCallback(@NonNull android.net.TetheringManager.TetheringEventCallback);
-    field public static final String ACTION_TETHER_STATE_CHANGED = "android.net.conn.TETHER_STATE_CHANGED";
-    field public static final String EXTRA_ACTIVE_LOCAL_ONLY = "android.net.extra.ACTIVE_LOCAL_ONLY";
-    field public static final String EXTRA_ACTIVE_TETHER = "tetherArray";
-    field public static final String EXTRA_AVAILABLE_TETHER = "availableArray";
-    field public static final String EXTRA_ERRORED_TETHER = "erroredArray";
-    field public static final int TETHERING_BLUETOOTH = 2; // 0x2
-    field public static final int TETHERING_ETHERNET = 5; // 0x5
-    field public static final int TETHERING_INVALID = -1; // 0xffffffff
-    field public static final int TETHERING_NCM = 4; // 0x4
-    field public static final int TETHERING_USB = 1; // 0x1
-    field public static final int TETHERING_WIFI = 0; // 0x0
-    field public static final int TETHERING_WIFI_P2P = 3; // 0x3
-    field public static final int TETHER_ERROR_DHCPSERVER_ERROR = 12; // 0xc
-    field public static final int TETHER_ERROR_DISABLE_FORWARDING_ERROR = 9; // 0x9
-    field public static final int TETHER_ERROR_ENABLE_FORWARDING_ERROR = 8; // 0x8
-    field public static final int TETHER_ERROR_ENTITLEMENT_UNKNOWN = 13; // 0xd
-    field public static final int TETHER_ERROR_IFACE_CFG_ERROR = 10; // 0xa
-    field public static final int TETHER_ERROR_INTERNAL_ERROR = 5; // 0x5
-    field public static final int TETHER_ERROR_NO_ACCESS_TETHERING_PERMISSION = 15; // 0xf
-    field public static final int TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION = 14; // 0xe
-    field public static final int TETHER_ERROR_NO_ERROR = 0; // 0x0
-    field public static final int TETHER_ERROR_PROVISIONING_FAILED = 11; // 0xb
-    field public static final int TETHER_ERROR_SERVICE_UNAVAIL = 2; // 0x2
-    field public static final int TETHER_ERROR_TETHER_IFACE_ERROR = 6; // 0x6
-    field public static final int TETHER_ERROR_UNAVAIL_IFACE = 4; // 0x4
-    field public static final int TETHER_ERROR_UNKNOWN_IFACE = 1; // 0x1
-    field public static final int TETHER_ERROR_UNKNOWN_TYPE = 16; // 0x10
-    field public static final int TETHER_ERROR_UNSUPPORTED = 3; // 0x3
-    field public static final int TETHER_ERROR_UNTETHER_IFACE_ERROR = 7; // 0x7
-    field public static final int TETHER_HARDWARE_OFFLOAD_FAILED = 2; // 0x2
-    field public static final int TETHER_HARDWARE_OFFLOAD_STARTED = 1; // 0x1
-    field public static final int TETHER_HARDWARE_OFFLOAD_STOPPED = 0; // 0x0
-  }
-
-  public static interface TetheringManager.OnTetheringEntitlementResultListener {
-    method public void onTetheringEntitlementResult(int);
-  }
-
-  public static interface TetheringManager.StartTetheringCallback {
-    method public default void onTetheringFailed(int);
-    method public default void onTetheringStarted();
-  }
-
-  public static interface TetheringManager.TetheringEventCallback {
-    method public default void onClientsChanged(@NonNull java.util.Collection<android.net.TetheredClient>);
-    method public default void onError(@NonNull String, int);
-    method public default void onOffloadStatusChanged(int);
-    method public default void onTetherableInterfacesChanged(@NonNull java.util.List<java.lang.String>);
-    method public default void onTetheredInterfacesChanged(@NonNull java.util.List<java.lang.String>);
-    method public default void onTetheringSupported(boolean);
-    method public default void onUpstreamChanged(@Nullable android.net.Network);
-  }
-
-  public static class TetheringManager.TetheringRequest {
-    method @Nullable public android.net.LinkAddress getClientStaticIpv4Address();
-    method @Nullable public android.net.LinkAddress getLocalIpv4Address();
-    method public boolean getShouldShowEntitlementUi();
-    method public int getTetheringType();
-    method public boolean isExemptFromEntitlementCheck();
-  }
-
-  public static class TetheringManager.TetheringRequest.Builder {
-    ctor public TetheringManager.TetheringRequest.Builder(int);
-    method @NonNull public android.net.TetheringManager.TetheringRequest build();
-    method @NonNull @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public android.net.TetheringManager.TetheringRequest.Builder setExemptFromEntitlementCheck(boolean);
-    method @NonNull @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public android.net.TetheringManager.TetheringRequest.Builder setShouldShowEntitlementUi(boolean);
-    method @NonNull @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public android.net.TetheringManager.TetheringRequest.Builder setStaticIpv4Addresses(@NonNull android.net.LinkAddress, @NonNull android.net.LinkAddress);
-  }
-
-  public class TrafficStats {
-    method public static void setThreadStatsTagApp();
-    method public static void setThreadStatsTagBackup();
-    method public static void setThreadStatsTagRestore();
-    field public static final int TAG_NETWORK_STACK_IMPERSONATION_RANGE_END = -113; // 0xffffff8f
-    field public static final int TAG_NETWORK_STACK_IMPERSONATION_RANGE_START = -128; // 0xffffff80
-    field public static final int TAG_NETWORK_STACK_RANGE_END = -257; // 0xfffffeff
-    field public static final int TAG_NETWORK_STACK_RANGE_START = -768; // 0xfffffd00
-    field public static final int TAG_SYSTEM_IMPERSONATION_RANGE_END = -241; // 0xffffff0f
-    field public static final int TAG_SYSTEM_IMPERSONATION_RANGE_START = -256; // 0xffffff00
-  }
-
-  public abstract class Uri implements java.lang.Comparable<android.net.Uri> android.os.Parcelable {
-    method @NonNull public String toSafeString();
-  }
-
-  public class VpnService extends android.app.Service {
-    method @RequiresPermission(android.Manifest.permission.CONTROL_VPN) public static void prepareAndAuthorize(android.content.Context);
-  }
-
-  public class WebAddress {
-    ctor public WebAddress(String) throws android.net.ParseException;
-  }
-
-  public class WifiKey implements android.os.Parcelable {
-    ctor public WifiKey(String, String);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.WifiKey> CREATOR;
-    field public final String bssid;
-    field public final String ssid;
-  }
-
-}
-
-package android.net.apf {
-
-  public final class ApfCapabilities implements android.os.Parcelable {
-    ctor public ApfCapabilities(int, int, int);
-    method public int describeContents();
-    method public static boolean getApfDrop8023Frames();
-    method @NonNull public static int[] getApfEtherTypeBlackList();
-    method public boolean hasDataAccess();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.net.apf.ApfCapabilities> CREATOR;
-    field public final int apfPacketFormat;
-    field public final int apfVersionSupported;
-    field public final int maximumApfProgramSize;
-  }
-
-}
-
-package android.net.metrics {
-
-  public final class ApfProgramEvent implements android.net.metrics.IpConnectivityLog.Event {
-  }
-
-  public static final class ApfProgramEvent.Builder {
-    ctor public ApfProgramEvent.Builder();
-    method @NonNull public android.net.metrics.ApfProgramEvent build();
-    method @NonNull public android.net.metrics.ApfProgramEvent.Builder setActualLifetime(long);
-    method @NonNull public android.net.metrics.ApfProgramEvent.Builder setCurrentRas(int);
-    method @NonNull public android.net.metrics.ApfProgramEvent.Builder setFilteredRas(int);
-    method @NonNull public android.net.metrics.ApfProgramEvent.Builder setFlags(boolean, boolean);
-    method @NonNull public android.net.metrics.ApfProgramEvent.Builder setLifetime(long);
-    method @NonNull public android.net.metrics.ApfProgramEvent.Builder setProgramLength(int);
-  }
-
-  public final class ApfStats implements android.net.metrics.IpConnectivityLog.Event {
-  }
-
-  public static final class ApfStats.Builder {
-    ctor public ApfStats.Builder();
-    method @NonNull public android.net.metrics.ApfStats build();
-    method @NonNull public android.net.metrics.ApfStats.Builder setDroppedRas(int);
-    method @NonNull public android.net.metrics.ApfStats.Builder setDurationMs(long);
-    method @NonNull public android.net.metrics.ApfStats.Builder setMatchingRas(int);
-    method @NonNull public android.net.metrics.ApfStats.Builder setMaxProgramSize(int);
-    method @NonNull public android.net.metrics.ApfStats.Builder setParseErrors(int);
-    method @NonNull public android.net.metrics.ApfStats.Builder setProgramUpdates(int);
-    method @NonNull public android.net.metrics.ApfStats.Builder setProgramUpdatesAll(int);
-    method @NonNull public android.net.metrics.ApfStats.Builder setProgramUpdatesAllowingMulticast(int);
-    method @NonNull public android.net.metrics.ApfStats.Builder setReceivedRas(int);
-    method @NonNull public android.net.metrics.ApfStats.Builder setZeroLifetimeRas(int);
-  }
-
-  public final class DhcpClientEvent implements android.net.metrics.IpConnectivityLog.Event {
-  }
-
-  public static final class DhcpClientEvent.Builder {
-    ctor public DhcpClientEvent.Builder();
-    method @NonNull public android.net.metrics.DhcpClientEvent build();
-    method @NonNull public android.net.metrics.DhcpClientEvent.Builder setDurationMs(int);
-    method @NonNull public android.net.metrics.DhcpClientEvent.Builder setMsg(String);
-  }
-
-  public final class DhcpErrorEvent implements android.net.metrics.IpConnectivityLog.Event {
-    ctor public DhcpErrorEvent(int);
-    method public static int errorCodeWithOption(int, int);
-    field public static final int BOOTP_TOO_SHORT = 67174400; // 0x4010000
-    field public static final int BUFFER_UNDERFLOW = 83951616; // 0x5010000
-    field public static final int DHCP_BAD_MAGIC_COOKIE = 67239936; // 0x4020000
-    field public static final int DHCP_ERROR = 4; // 0x4
-    field public static final int DHCP_INVALID_OPTION_LENGTH = 67305472; // 0x4030000
-    field public static final int DHCP_NO_COOKIE = 67502080; // 0x4060000
-    field public static final int DHCP_NO_MSG_TYPE = 67371008; // 0x4040000
-    field public static final int DHCP_UNKNOWN_MSG_TYPE = 67436544; // 0x4050000
-    field public static final int L2_ERROR = 1; // 0x1
-    field public static final int L2_TOO_SHORT = 16842752; // 0x1010000
-    field public static final int L2_WRONG_ETH_TYPE = 16908288; // 0x1020000
-    field public static final int L3_ERROR = 2; // 0x2
-    field public static final int L3_INVALID_IP = 33751040; // 0x2030000
-    field public static final int L3_NOT_IPV4 = 33685504; // 0x2020000
-    field public static final int L3_TOO_SHORT = 33619968; // 0x2010000
-    field public static final int L4_ERROR = 3; // 0x3
-    field public static final int L4_NOT_UDP = 50397184; // 0x3010000
-    field public static final int L4_WRONG_PORT = 50462720; // 0x3020000
-    field public static final int MISC_ERROR = 5; // 0x5
-    field public static final int PARSING_ERROR = 84082688; // 0x5030000
-    field public static final int RECEIVE_ERROR = 84017152; // 0x5020000
-  }
-
-  public class IpConnectivityLog {
-    ctor public IpConnectivityLog();
-    method public boolean log(long, @NonNull android.net.metrics.IpConnectivityLog.Event);
-    method public boolean log(@NonNull String, @NonNull android.net.metrics.IpConnectivityLog.Event);
-    method public boolean log(@NonNull android.net.Network, @NonNull int[], @NonNull android.net.metrics.IpConnectivityLog.Event);
-    method public boolean log(int, @NonNull int[], @NonNull android.net.metrics.IpConnectivityLog.Event);
-    method public boolean log(@NonNull android.net.metrics.IpConnectivityLog.Event);
-  }
-
-  public static interface IpConnectivityLog.Event extends android.os.Parcelable {
-  }
-
-  public final class IpManagerEvent implements android.net.metrics.IpConnectivityLog.Event {
-    ctor public IpManagerEvent(int, long);
-    field public static final int COMPLETE_LIFECYCLE = 3; // 0x3
-    field public static final int ERROR_INTERFACE_NOT_FOUND = 8; // 0x8
-    field public static final int ERROR_INVALID_PROVISIONING = 7; // 0x7
-    field public static final int ERROR_STARTING_IPREACHABILITYMONITOR = 6; // 0x6
-    field public static final int ERROR_STARTING_IPV4 = 4; // 0x4
-    field public static final int ERROR_STARTING_IPV6 = 5; // 0x5
-    field public static final int PROVISIONING_FAIL = 2; // 0x2
-    field public static final int PROVISIONING_OK = 1; // 0x1
-  }
-
-  public final class IpReachabilityEvent implements android.net.metrics.IpConnectivityLog.Event {
-    ctor public IpReachabilityEvent(int);
-    field public static final int NUD_FAILED = 512; // 0x200
-    field public static final int NUD_FAILED_ORGANIC = 1024; // 0x400
-    field public static final int PROBE = 256; // 0x100
-    field public static final int PROVISIONING_LOST = 768; // 0x300
-    field public static final int PROVISIONING_LOST_ORGANIC = 1280; // 0x500
-  }
-
-  public final class NetworkEvent implements android.net.metrics.IpConnectivityLog.Event {
-    ctor public NetworkEvent(int, long);
-    ctor public NetworkEvent(int);
-    field public static final int NETWORK_CAPTIVE_PORTAL_FOUND = 4; // 0x4
-    field public static final int NETWORK_CONNECTED = 1; // 0x1
-    field public static final int NETWORK_CONSECUTIVE_DNS_TIMEOUT_FOUND = 12; // 0xc
-    field public static final int NETWORK_DISCONNECTED = 7; // 0x7
-    field public static final int NETWORK_FIRST_VALIDATION_PORTAL_FOUND = 10; // 0xa
-    field public static final int NETWORK_FIRST_VALIDATION_SUCCESS = 8; // 0x8
-    field public static final int NETWORK_LINGER = 5; // 0x5
-    field public static final int NETWORK_PARTIAL_CONNECTIVITY = 13; // 0xd
-    field public static final int NETWORK_REVALIDATION_PORTAL_FOUND = 11; // 0xb
-    field public static final int NETWORK_REVALIDATION_SUCCESS = 9; // 0x9
-    field public static final int NETWORK_UNLINGER = 6; // 0x6
-    field public static final int NETWORK_VALIDATED = 2; // 0x2
-    field public static final int NETWORK_VALIDATION_FAILED = 3; // 0x3
-  }
-
-  public final class RaEvent implements android.net.metrics.IpConnectivityLog.Event {
-  }
-
-  public static final class RaEvent.Builder {
-    ctor public RaEvent.Builder();
-    method @NonNull public android.net.metrics.RaEvent build();
-    method @NonNull public android.net.metrics.RaEvent.Builder updateDnsslLifetime(long);
-    method @NonNull public android.net.metrics.RaEvent.Builder updatePrefixPreferredLifetime(long);
-    method @NonNull public android.net.metrics.RaEvent.Builder updatePrefixValidLifetime(long);
-    method @NonNull public android.net.metrics.RaEvent.Builder updateRdnssLifetime(long);
-    method @NonNull public android.net.metrics.RaEvent.Builder updateRouteInfoLifetime(long);
-    method @NonNull public android.net.metrics.RaEvent.Builder updateRouterLifetime(long);
-  }
-
-  public final class ValidationProbeEvent implements android.net.metrics.IpConnectivityLog.Event {
-    method @NonNull public static String getProbeName(int);
-    field public static final int DNS_FAILURE = 0; // 0x0
-    field public static final int DNS_SUCCESS = 1; // 0x1
-    field public static final int PROBE_DNS = 0; // 0x0
-    field public static final int PROBE_FALLBACK = 4; // 0x4
-    field public static final int PROBE_HTTP = 1; // 0x1
-    field public static final int PROBE_HTTPS = 2; // 0x2
-    field public static final int PROBE_PAC = 3; // 0x3
-    field public static final int PROBE_PRIVDNS = 5; // 0x5
-  }
-
-  public static final class ValidationProbeEvent.Builder {
-    ctor public ValidationProbeEvent.Builder();
-    method @NonNull public android.net.metrics.ValidationProbeEvent build();
-    method @NonNull public android.net.metrics.ValidationProbeEvent.Builder setDurationMs(long);
-    method @NonNull public android.net.metrics.ValidationProbeEvent.Builder setProbeType(int, boolean);
-    method @NonNull public android.net.metrics.ValidationProbeEvent.Builder setReturnCode(int);
-  }
-
-}
-
-package android.net.netstats.provider {
-
-  public abstract class NetworkStatsProvider {
-    ctor public NetworkStatsProvider();
-    method public void notifyAlertReached();
-    method public void notifyLimitReached();
-    method public void notifyStatsUpdated(int, @NonNull android.net.NetworkStats, @NonNull android.net.NetworkStats);
-    method public abstract void onRequestStatsUpdate(int);
-    method public abstract void onSetAlert(long);
-    method public abstract void onSetLimit(@NonNull String, long);
-    field public static final int QUOTA_UNLIMITED = -1; // 0xffffffff
-  }
-
-}
-
-package android.net.sip {
-
-  public class SipAudioCall {
-    method @Nullable public android.net.rtp.AudioGroup getAudioGroup();
-    method public void setAudioGroup(@NonNull android.net.rtp.AudioGroup);
-  }
-
-  public class SipManager {
-    method @NonNull public java.util.List<android.net.sip.SipProfile> getProfiles() throws android.net.sip.SipException;
-    field public static final String ACTION_SIP_CALL_OPTION_CHANGED = "android.net.sip.action.SIP_CALL_OPTION_CHANGED";
-    field public static final String ACTION_SIP_INCOMING_CALL = "android.net.sip.action.SIP_INCOMING_CALL";
-    field public static final String ACTION_SIP_REMOVE_PROFILE = "android.net.sip.action.SIP_REMOVE_PROFILE";
-    field public static final String ACTION_SIP_SERVICE_UP = "android.net.sip.action.SIP_SERVICE_UP";
-    field public static final String ACTION_START_SIP = "android.net.sip.action.START_SIP";
-  }
-
-  public class SipProfile implements java.lang.Cloneable android.os.Parcelable java.io.Serializable {
-    method public int getCallingUid();
-  }
-
-}
-
-package android.net.util {
-
-  public final class SocketUtils {
-    method public static void bindSocketToInterface(@NonNull java.io.FileDescriptor, @NonNull String) throws android.system.ErrnoException;
-    method public static void closeSocket(@Nullable java.io.FileDescriptor) throws java.io.IOException;
-    method @NonNull public static java.net.SocketAddress makeNetlinkSocketAddress(int, int);
-    method @NonNull public static java.net.SocketAddress makePacketSocketAddress(int, int);
-    method @Deprecated @NonNull public static java.net.SocketAddress makePacketSocketAddress(int, @NonNull byte[]);
-    method @NonNull public static java.net.SocketAddress makePacketSocketAddress(int, int, @NonNull byte[]);
-  }
-
-}
-
-package android.net.wifi {
-
-  public abstract class EasyConnectStatusCallback {
-    ctor public EasyConnectStatusCallback();
-    method public abstract void onConfiguratorSuccess(int);
-    method public abstract void onEnrolleeSuccess(int);
-    method public void onFailure(int);
-    method public void onFailure(int, @Nullable String, @NonNull android.util.SparseArray<int[]>, @NonNull int[]);
-    method public abstract void onProgress(int);
-    field public static final int EASY_CONNECT_EVENT_PROGRESS_AUTHENTICATION_SUCCESS = 0; // 0x0
-    field public static final int EASY_CONNECT_EVENT_PROGRESS_CONFIGURATION_ACCEPTED = 3; // 0x3
-    field public static final int EASY_CONNECT_EVENT_PROGRESS_CONFIGURATION_SENT_WAITING_RESPONSE = 2; // 0x2
-    field public static final int EASY_CONNECT_EVENT_PROGRESS_RESPONSE_PENDING = 1; // 0x1
-    field public static final int EASY_CONNECT_EVENT_SUCCESS_CONFIGURATION_APPLIED = 1; // 0x1
-    field public static final int EASY_CONNECT_EVENT_SUCCESS_CONFIGURATION_SENT = 0; // 0x0
-  }
-
-  @Deprecated public class RttManager {
-    method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void disableResponder(android.net.wifi.RttManager.ResponderCallback);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void enableResponder(android.net.wifi.RttManager.ResponderCallback);
-    method @Deprecated public android.net.wifi.RttManager.Capabilities getCapabilities();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public android.net.wifi.RttManager.RttCapabilities getRttCapabilities();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void startRanging(android.net.wifi.RttManager.RttParams[], android.net.wifi.RttManager.RttListener);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void stopRanging(android.net.wifi.RttManager.RttListener);
-    field @Deprecated public static final int BASE = 160256; // 0x27200
-    field @Deprecated public static final int CMD_OP_ABORTED = 160260; // 0x27204
-    field @Deprecated public static final int CMD_OP_DISABLE_RESPONDER = 160262; // 0x27206
-    field @Deprecated public static final int CMD_OP_ENABLE_RESPONDER = 160261; // 0x27205
-    field @Deprecated public static final int CMD_OP_ENALBE_RESPONDER_FAILED = 160264; // 0x27208
-    field @Deprecated public static final int CMD_OP_ENALBE_RESPONDER_SUCCEEDED = 160263; // 0x27207
-    field @Deprecated public static final int CMD_OP_FAILED = 160258; // 0x27202
-    field @Deprecated public static final int CMD_OP_START_RANGING = 160256; // 0x27200
-    field @Deprecated public static final int CMD_OP_STOP_RANGING = 160257; // 0x27201
-    field @Deprecated public static final int CMD_OP_SUCCEEDED = 160259; // 0x27203
-    field @Deprecated public static final String DESCRIPTION_KEY = "android.net.wifi.RttManager.Description";
-    field @Deprecated public static final int PREAMBLE_HT = 2; // 0x2
-    field @Deprecated public static final int PREAMBLE_LEGACY = 1; // 0x1
-    field @Deprecated public static final int PREAMBLE_VHT = 4; // 0x4
-    field @Deprecated public static final int REASON_INITIATOR_NOT_ALLOWED_WHEN_RESPONDER_ON = -6; // 0xfffffffa
-    field @Deprecated public static final int REASON_INVALID_LISTENER = -3; // 0xfffffffd
-    field @Deprecated public static final int REASON_INVALID_REQUEST = -4; // 0xfffffffc
-    field @Deprecated public static final int REASON_NOT_AVAILABLE = -2; // 0xfffffffe
-    field @Deprecated public static final int REASON_PERMISSION_DENIED = -5; // 0xfffffffb
-    field @Deprecated public static final int REASON_UNSPECIFIED = -1; // 0xffffffff
-    field @Deprecated public static final int RTT_BW_10_SUPPORT = 2; // 0x2
-    field @Deprecated public static final int RTT_BW_160_SUPPORT = 32; // 0x20
-    field @Deprecated public static final int RTT_BW_20_SUPPORT = 4; // 0x4
-    field @Deprecated public static final int RTT_BW_40_SUPPORT = 8; // 0x8
-    field @Deprecated public static final int RTT_BW_5_SUPPORT = 1; // 0x1
-    field @Deprecated public static final int RTT_BW_80_SUPPORT = 16; // 0x10
-    field @Deprecated public static final int RTT_CHANNEL_WIDTH_10 = 6; // 0x6
-    field @Deprecated public static final int RTT_CHANNEL_WIDTH_160 = 3; // 0x3
-    field @Deprecated public static final int RTT_CHANNEL_WIDTH_20 = 0; // 0x0
-    field @Deprecated public static final int RTT_CHANNEL_WIDTH_40 = 1; // 0x1
-    field @Deprecated public static final int RTT_CHANNEL_WIDTH_5 = 5; // 0x5
-    field @Deprecated public static final int RTT_CHANNEL_WIDTH_80 = 2; // 0x2
-    field @Deprecated public static final int RTT_CHANNEL_WIDTH_80P80 = 4; // 0x4
-    field @Deprecated public static final int RTT_CHANNEL_WIDTH_UNSPECIFIED = -1; // 0xffffffff
-    field @Deprecated public static final int RTT_PEER_NAN = 5; // 0x5
-    field @Deprecated public static final int RTT_PEER_P2P_CLIENT = 4; // 0x4
-    field @Deprecated public static final int RTT_PEER_P2P_GO = 3; // 0x3
-    field @Deprecated public static final int RTT_PEER_TYPE_AP = 1; // 0x1
-    field @Deprecated public static final int RTT_PEER_TYPE_STA = 2; // 0x2
-    field @Deprecated public static final int RTT_PEER_TYPE_UNSPECIFIED = 0; // 0x0
-    field @Deprecated public static final int RTT_STATUS_ABORTED = 8; // 0x8
-    field @Deprecated public static final int RTT_STATUS_FAILURE = 1; // 0x1
-    field @Deprecated public static final int RTT_STATUS_FAIL_AP_ON_DIFF_CHANNEL = 6; // 0x6
-    field @Deprecated public static final int RTT_STATUS_FAIL_BUSY_TRY_LATER = 12; // 0xc
-    field @Deprecated public static final int RTT_STATUS_FAIL_FTM_PARAM_OVERRIDE = 15; // 0xf
-    field @Deprecated public static final int RTT_STATUS_FAIL_INVALID_TS = 9; // 0x9
-    field @Deprecated public static final int RTT_STATUS_FAIL_NOT_SCHEDULED_YET = 4; // 0x4
-    field @Deprecated public static final int RTT_STATUS_FAIL_NO_CAPABILITY = 7; // 0x7
-    field @Deprecated public static final int RTT_STATUS_FAIL_NO_RSP = 2; // 0x2
-    field @Deprecated public static final int RTT_STATUS_FAIL_PROTOCOL = 10; // 0xa
-    field @Deprecated public static final int RTT_STATUS_FAIL_REJECTED = 3; // 0x3
-    field @Deprecated public static final int RTT_STATUS_FAIL_SCHEDULE = 11; // 0xb
-    field @Deprecated public static final int RTT_STATUS_FAIL_TM_TIMEOUT = 5; // 0x5
-    field @Deprecated public static final int RTT_STATUS_INVALID_REQ = 13; // 0xd
-    field @Deprecated public static final int RTT_STATUS_NO_WIFI = 14; // 0xe
-    field @Deprecated public static final int RTT_STATUS_SUCCESS = 0; // 0x0
-    field @Deprecated public static final int RTT_TYPE_11_MC = 4; // 0x4
-    field @Deprecated public static final int RTT_TYPE_11_V = 2; // 0x2
-    field @Deprecated public static final int RTT_TYPE_ONE_SIDED = 1; // 0x1
-    field @Deprecated public static final int RTT_TYPE_TWO_SIDED = 2; // 0x2
-    field @Deprecated public static final int RTT_TYPE_UNSPECIFIED = 0; // 0x0
-  }
-
-  @Deprecated public class RttManager.Capabilities {
-    ctor @Deprecated public RttManager.Capabilities();
-    field @Deprecated public int supportedPeerType;
-    field @Deprecated public int supportedType;
-  }
-
-  @Deprecated public static class RttManager.ParcelableRttParams implements android.os.Parcelable {
-    field @Deprecated @NonNull public android.net.wifi.RttManager.RttParams[] mParams;
-  }
-
-  @Deprecated public static class RttManager.ParcelableRttResults implements android.os.Parcelable {
-    ctor @Deprecated public RttManager.ParcelableRttResults(android.net.wifi.RttManager.RttResult[]);
-    field @Deprecated public android.net.wifi.RttManager.RttResult[] mResults;
-  }
-
-  @Deprecated public abstract static class RttManager.ResponderCallback {
-    ctor @Deprecated public RttManager.ResponderCallback();
-    method @Deprecated public abstract void onResponderEnableFailure(int);
-    method @Deprecated public abstract void onResponderEnabled(android.net.wifi.RttManager.ResponderConfig);
-  }
-
-  @Deprecated public static class RttManager.ResponderConfig implements android.os.Parcelable {
-    ctor @Deprecated public RttManager.ResponderConfig();
-    method @Deprecated public int describeContents();
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.RttManager.ResponderConfig> CREATOR;
-    field @Deprecated public int centerFreq0;
-    field @Deprecated public int centerFreq1;
-    field @Deprecated public int channelWidth;
-    field @Deprecated public int frequency;
-    field @Deprecated public String macAddress;
-    field @Deprecated public int preamble;
-  }
-
-  @Deprecated public static class RttManager.RttCapabilities implements android.os.Parcelable {
-    ctor @Deprecated public RttManager.RttCapabilities();
-    field @Deprecated public int bwSupported;
-    field @Deprecated public boolean lciSupported;
-    field @Deprecated public boolean lcrSupported;
-    field @Deprecated public int mcVersion;
-    field @Deprecated public boolean oneSidedRttSupported;
-    field @Deprecated public int preambleSupported;
-    field @Deprecated public boolean responderSupported;
-    field @Deprecated public boolean secureRttSupported;
-    field @Deprecated public boolean supportedPeerType;
-    field @Deprecated public boolean supportedType;
-    field @Deprecated public boolean twoSided11McRttSupported;
-  }
-
-  @Deprecated public static interface RttManager.RttListener {
-    method @Deprecated public void onAborted();
-    method @Deprecated public void onFailure(int, String);
-    method @Deprecated public void onSuccess(android.net.wifi.RttManager.RttResult[]);
-  }
-
-  @Deprecated public static class RttManager.RttParams {
-    ctor @Deprecated public RttManager.RttParams();
-    field @Deprecated public boolean LCIRequest;
-    field @Deprecated public boolean LCRRequest;
-    field @Deprecated public int bandwidth;
-    field @Deprecated public String bssid;
-    field @Deprecated public int burstTimeout;
-    field @Deprecated public int centerFreq0;
-    field @Deprecated public int centerFreq1;
-    field @Deprecated public int channelWidth;
-    field @Deprecated public int deviceType;
-    field @Deprecated public int frequency;
-    field @Deprecated public int interval;
-    field @Deprecated public int numRetriesPerFTMR;
-    field @Deprecated public int numRetriesPerMeasurementFrame;
-    field @Deprecated public int numSamplesPerBurst;
-    field @Deprecated public int num_retries;
-    field @Deprecated public int num_samples;
-    field @Deprecated public int numberBurst;
-    field @Deprecated public int preamble;
-    field @Deprecated public int requestType;
-    field @Deprecated public boolean secure;
-  }
-
-  @Deprecated public static class RttManager.RttResult {
-    ctor @Deprecated public RttManager.RttResult();
-    field @Deprecated public android.net.wifi.RttManager.WifiInformationElement LCI;
-    field @Deprecated public android.net.wifi.RttManager.WifiInformationElement LCR;
-    field @Deprecated public String bssid;
-    field @Deprecated public int burstDuration;
-    field @Deprecated public int burstNumber;
-    field @Deprecated public int distance;
-    field @Deprecated public int distanceSpread;
-    field @Deprecated public int distanceStandardDeviation;
-    field @Deprecated public int distance_cm;
-    field @Deprecated public int distance_sd_cm;
-    field @Deprecated public int distance_spread_cm;
-    field @Deprecated public int frameNumberPerBurstPeer;
-    field @Deprecated public int measurementFrameNumber;
-    field @Deprecated public int measurementType;
-    field @Deprecated public int negotiatedBurstNum;
-    field @Deprecated public int requestType;
-    field @Deprecated public int retryAfterDuration;
-    field @Deprecated public int rssi;
-    field @Deprecated public int rssiSpread;
-    field @Deprecated public int rssi_spread;
-    field @Deprecated public long rtt;
-    field @Deprecated public long rttSpread;
-    field @Deprecated public long rttStandardDeviation;
-    field @Deprecated public long rtt_ns;
-    field @Deprecated public long rtt_sd_ns;
-    field @Deprecated public long rtt_spread_ns;
-    field @Deprecated public int rxRate;
-    field @Deprecated public boolean secure;
-    field @Deprecated public int status;
-    field @Deprecated public int successMeasurementFrameNumber;
-    field @Deprecated public long ts;
-    field @Deprecated public int txRate;
-    field @Deprecated public int tx_rate;
-  }
-
-  @Deprecated public static class RttManager.WifiInformationElement {
-    ctor @Deprecated public RttManager.WifiInformationElement();
-    field @Deprecated public byte[] data;
-    field @Deprecated public byte id;
-  }
-
-  public final class ScanResult implements android.os.Parcelable {
-    field public static final int CIPHER_CCMP = 3; // 0x3
-    field public static final int CIPHER_GCMP_256 = 4; // 0x4
-    field public static final int CIPHER_NONE = 0; // 0x0
-    field public static final int CIPHER_NO_GROUP_ADDRESSED = 1; // 0x1
-    field public static final int CIPHER_SMS4 = 5; // 0x5
-    field public static final int CIPHER_TKIP = 2; // 0x2
-    field public static final int KEY_MGMT_EAP = 2; // 0x2
-    field public static final int KEY_MGMT_EAP_SHA256 = 6; // 0x6
-    field public static final int KEY_MGMT_EAP_SUITE_B_192 = 10; // 0xa
-    field public static final int KEY_MGMT_FT_EAP = 4; // 0x4
-    field public static final int KEY_MGMT_FT_PSK = 3; // 0x3
-    field public static final int KEY_MGMT_FT_SAE = 11; // 0xb
-    field public static final int KEY_MGMT_NONE = 0; // 0x0
-    field public static final int KEY_MGMT_OSEN = 7; // 0x7
-    field public static final int KEY_MGMT_OWE = 9; // 0x9
-    field public static final int KEY_MGMT_OWE_TRANSITION = 12; // 0xc
-    field public static final int KEY_MGMT_PSK = 1; // 0x1
-    field public static final int KEY_MGMT_PSK_SHA256 = 5; // 0x5
-    field public static final int KEY_MGMT_SAE = 8; // 0x8
-    field public static final int KEY_MGMT_WAPI_CERT = 14; // 0xe
-    field public static final int KEY_MGMT_WAPI_PSK = 13; // 0xd
-    field public static final int PROTOCOL_NONE = 0; // 0x0
-    field public static final int PROTOCOL_OSEN = 3; // 0x3
-    field public static final int PROTOCOL_RSN = 2; // 0x2
-    field public static final int PROTOCOL_WAPI = 4; // 0x4
-    field public static final int PROTOCOL_WPA = 1; // 0x1
-  }
-
-  public final class SoftApCapability implements android.os.Parcelable {
-    method public boolean areFeaturesSupported(long);
-    method public int describeContents();
-    method public int getMaxSupportedClients();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.SoftApCapability> CREATOR;
-    field public static final long SOFTAP_FEATURE_ACS_OFFLOAD = 1L; // 0x1L
-    field public static final long SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT = 2L; // 0x2L
-    field public static final long SOFTAP_FEATURE_WPA3_SAE = 4L; // 0x4L
-  }
-
-  public final class SoftApConfiguration implements android.os.Parcelable {
-    method @NonNull public java.util.List<android.net.MacAddress> getAllowedClientList();
-    method public int getBand();
-    method @NonNull public java.util.List<android.net.MacAddress> getBlockedClientList();
-    method public int getChannel();
-    method public int getMaxNumberOfClients();
-    method public long getShutdownTimeoutMillis();
-    method public boolean isAutoShutdownEnabled();
-    method public boolean isClientControlByUserEnabled();
-    method @Nullable public android.net.wifi.WifiConfiguration toWifiConfiguration();
-    field public static final int BAND_2GHZ = 1; // 0x1
-    field public static final int BAND_5GHZ = 2; // 0x2
-    field public static final int BAND_6GHZ = 4; // 0x4
-    field public static final int BAND_ANY = 7; // 0x7
-  }
-
-  public static final class SoftApConfiguration.Builder {
-    ctor public SoftApConfiguration.Builder();
-    ctor public SoftApConfiguration.Builder(@NonNull android.net.wifi.SoftApConfiguration);
-    method @NonNull public android.net.wifi.SoftApConfiguration build();
-    method @NonNull public android.net.wifi.SoftApConfiguration.Builder setAllowedClientList(@NonNull java.util.List<android.net.MacAddress>);
-    method @NonNull public android.net.wifi.SoftApConfiguration.Builder setAutoShutdownEnabled(boolean);
-    method @NonNull public android.net.wifi.SoftApConfiguration.Builder setBand(int);
-    method @NonNull public android.net.wifi.SoftApConfiguration.Builder setBlockedClientList(@NonNull java.util.List<android.net.MacAddress>);
-    method @NonNull public android.net.wifi.SoftApConfiguration.Builder setBssid(@Nullable android.net.MacAddress);
-    method @NonNull public android.net.wifi.SoftApConfiguration.Builder setChannel(int, int);
-    method @NonNull public android.net.wifi.SoftApConfiguration.Builder setClientControlByUserEnabled(boolean);
-    method @NonNull public android.net.wifi.SoftApConfiguration.Builder setHiddenSsid(boolean);
-    method @NonNull public android.net.wifi.SoftApConfiguration.Builder setMaxNumberOfClients(@IntRange(from=0) int);
-    method @NonNull public android.net.wifi.SoftApConfiguration.Builder setPassphrase(@Nullable String, int);
-    method @NonNull public android.net.wifi.SoftApConfiguration.Builder setShutdownTimeoutMillis(@IntRange(from=0) long);
-    method @NonNull public android.net.wifi.SoftApConfiguration.Builder setSsid(@Nullable String);
-  }
-
-  public final class SoftApInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getBandwidth();
-    method public int getFrequency();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final int CHANNEL_WIDTH_160MHZ = 6; // 0x6
-    field public static final int CHANNEL_WIDTH_20MHZ = 2; // 0x2
-    field public static final int CHANNEL_WIDTH_20MHZ_NOHT = 1; // 0x1
-    field public static final int CHANNEL_WIDTH_40MHZ = 3; // 0x3
-    field public static final int CHANNEL_WIDTH_80MHZ = 4; // 0x4
-    field public static final int CHANNEL_WIDTH_80MHZ_PLUS_MHZ = 5; // 0x5
-    field public static final int CHANNEL_WIDTH_INVALID = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.SoftApInfo> CREATOR;
-  }
-
-  public final class WifiClient implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.net.MacAddress getMacAddress();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.WifiClient> CREATOR;
-  }
-
-  @Deprecated public class WifiConfiguration implements android.os.Parcelable {
-    method @Deprecated public int getAuthType();
-    method @Deprecated @NonNull public android.net.IpConfiguration getIpConfiguration();
-    method @Deprecated @NonNull public android.net.wifi.WifiConfiguration.NetworkSelectionStatus getNetworkSelectionStatus();
-    method @Deprecated @NonNull public String getPrintableSsid();
-    method @Deprecated public int getRecentFailureReason();
-    method @Deprecated public boolean hasNoInternetAccess();
-    method @Deprecated public boolean isEphemeral();
-    method @Deprecated public static boolean isMetered(@Nullable android.net.wifi.WifiConfiguration, @Nullable android.net.wifi.WifiInfo);
-    method @Deprecated public boolean isNoInternetAccessExpected();
-    method @Deprecated public void setIpConfiguration(@Nullable android.net.IpConfiguration);
-    method @Deprecated public void setNetworkSelectionStatus(@NonNull android.net.wifi.WifiConfiguration.NetworkSelectionStatus);
-    field @Deprecated public static final int INVALID_NETWORK_ID = -1; // 0xffffffff
-    field @Deprecated public static final int METERED_OVERRIDE_METERED = 1; // 0x1
-    field @Deprecated public static final int METERED_OVERRIDE_NONE = 0; // 0x0
-    field @Deprecated public static final int METERED_OVERRIDE_NOT_METERED = 2; // 0x2
-    field @Deprecated public static final int RANDOMIZATION_NONE = 0; // 0x0
-    field @Deprecated public static final int RANDOMIZATION_PERSISTENT = 1; // 0x1
-    field @Deprecated public static final int RECENT_FAILURE_AP_UNABLE_TO_HANDLE_NEW_STA = 17; // 0x11
-    field @Deprecated public static final int RECENT_FAILURE_NONE = 0; // 0x0
-    field @Deprecated public boolean allowAutojoin;
-    field @Deprecated public int carrierId;
-    field @Deprecated public String creatorName;
-    field @Deprecated public int creatorUid;
-    field @Deprecated public boolean fromWifiNetworkSpecifier;
-    field @Deprecated public boolean fromWifiNetworkSuggestion;
-    field @Deprecated public String lastUpdateName;
-    field @Deprecated public int lastUpdateUid;
-    field @Deprecated public int macRandomizationSetting;
-    field @Deprecated public boolean meteredHint;
-    field @Deprecated public int meteredOverride;
-    field @Deprecated public int numAssociation;
-    field @Deprecated public int numScorerOverride;
-    field @Deprecated public int numScorerOverrideAndSwitchedNetwork;
-    field @Deprecated public boolean requirePmf;
-    field @Deprecated public boolean shared;
-    field @Deprecated public boolean useExternalScores;
-  }
-
-  @Deprecated public static class WifiConfiguration.KeyMgmt {
-    field @Deprecated public static final int WAPI_CERT = 14; // 0xe
-    field @Deprecated public static final int WAPI_PSK = 13; // 0xd
-    field @Deprecated public static final int WPA2_PSK = 4; // 0x4
-  }
-
-  @Deprecated public static class WifiConfiguration.NetworkSelectionStatus {
-    method @Deprecated public int getDisableReasonCounter(int);
-    method @Deprecated public long getDisableTime();
-    method @Deprecated public static int getMaxNetworkSelectionDisableReason();
-    method @Deprecated public int getNetworkSelectionDisableReason();
-    method @Deprecated @Nullable public static String getNetworkSelectionDisableReasonString(int);
-    method @Deprecated public int getNetworkSelectionStatus();
-    method @Deprecated @NonNull public String getNetworkStatusString();
-    method @Deprecated public boolean hasEverConnected();
-    field @Deprecated public static final int DISABLED_ASSOCIATION_REJECTION = 1; // 0x1
-    field @Deprecated public static final int DISABLED_AUTHENTICATION_FAILURE = 2; // 0x2
-    field @Deprecated public static final int DISABLED_AUTHENTICATION_NO_CREDENTIALS = 5; // 0x5
-    field @Deprecated public static final int DISABLED_AUTHENTICATION_NO_SUBSCRIPTION = 9; // 0x9
-    field @Deprecated public static final int DISABLED_BY_WIFI_MANAGER = 7; // 0x7
-    field @Deprecated public static final int DISABLED_BY_WRONG_PASSWORD = 8; // 0x8
-    field @Deprecated public static final int DISABLED_DHCP_FAILURE = 3; // 0x3
-    field @Deprecated public static final int DISABLED_NONE = 0; // 0x0
-    field @Deprecated public static final int DISABLED_NO_INTERNET_PERMANENT = 6; // 0x6
-    field @Deprecated public static final int DISABLED_NO_INTERNET_TEMPORARY = 4; // 0x4
-    field @Deprecated public static final int NETWORK_SELECTION_ENABLED = 0; // 0x0
-    field @Deprecated public static final int NETWORK_SELECTION_PERMANENTLY_DISABLED = 2; // 0x2
-    field @Deprecated public static final int NETWORK_SELECTION_TEMPORARY_DISABLED = 1; // 0x1
-  }
-
-  @Deprecated public static final class WifiConfiguration.NetworkSelectionStatus.Builder {
-    ctor @Deprecated public WifiConfiguration.NetworkSelectionStatus.Builder();
-    method @Deprecated @NonNull public android.net.wifi.WifiConfiguration.NetworkSelectionStatus build();
-    method @Deprecated @NonNull public android.net.wifi.WifiConfiguration.NetworkSelectionStatus.Builder setNetworkSelectionDisableReason(int);
-    method @Deprecated @NonNull public android.net.wifi.WifiConfiguration.NetworkSelectionStatus.Builder setNetworkSelectionStatus(int);
-  }
-
-  public class WifiEnterpriseConfig implements android.os.Parcelable {
-    method @Nullable public String[] getCaCertificateAliases();
-    method @NonNull public String getCaPath();
-    method @NonNull public String getClientCertificateAlias();
-    method public int getOcsp();
-    method @NonNull public String getWapiCertSuite();
-    method public void setCaCertificateAliases(@Nullable String[]);
-    method public void setCaPath(@NonNull String);
-    method public void setClientCertificateAlias(@NonNull String);
-    method public void setOcsp(int);
-    method public void setWapiCertSuite(@NonNull String);
-    field public static final int OCSP_NONE = 0; // 0x0
-    field public static final int OCSP_REQUEST_CERT_STATUS = 1; // 0x1
-    field public static final int OCSP_REQUIRE_ALL_NON_TRUSTED_CERTS_STATUS = 3; // 0x3
-    field public static final int OCSP_REQUIRE_CERT_STATUS = 2; // 0x2
-  }
-
-  public class WifiFrameworkInitializer {
-    method public static void registerServiceWrappers();
-  }
-
-  public class WifiInfo implements android.os.Parcelable {
-    method public double getLostTxPacketsPerSecond();
-    method @Nullable public String getRequestingPackageName();
-    method public double getRetriedTxPacketsPerSecond();
-    method public int getScore();
-    method public double getSuccessfulRxPacketsPerSecond();
-    method public double getSuccessfulTxPacketsPerSecond();
-    method public boolean isEphemeral();
-    method public boolean isOsuAp();
-    method public boolean isPasspointAp();
-    method @Nullable public static String sanitizeSsid(@Nullable String);
-    field public static final String DEFAULT_MAC_ADDRESS = "02:00:00:00:00:00";
-    field public static final int INVALID_RSSI = -127; // 0xffffff81
-  }
-
-  public class WifiManager {
-    method @RequiresPermission(android.Manifest.permission.WIFI_UPDATE_USABILITY_STATS_SCORE) public void addOnWifiUsabilityStatsListener(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.OnWifiUsabilityStatsListener);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void allowAutojoin(int, boolean);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void allowAutojoinGlobal(boolean);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void allowAutojoinPasspoint(@NonNull String, boolean);
-    method @RequiresPermission(android.Manifest.permission.WIFI_UPDATE_USABILITY_STATS_SCORE) public void clearWifiConnectedNetworkScorer();
-    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK}) public void connect(@NonNull android.net.wifi.WifiConfiguration, @Nullable android.net.wifi.WifiManager.ActionListener);
-    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK}) public void connect(int, @Nullable android.net.wifi.WifiManager.ActionListener);
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK}) public void disable(int, @Nullable android.net.wifi.WifiManager.ActionListener);
-    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK}) public void disableEphemeralNetwork(@NonNull String);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void factoryReset();
-    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK}) public void forget(int, @Nullable android.net.wifi.WifiManager.ActionListener);
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public java.util.List<android.util.Pair<android.net.wifi.WifiConfiguration,java.util.Map<java.lang.Integer,java.util.List<android.net.wifi.ScanResult>>>> getAllMatchingWifiConfigs(@NonNull java.util.List<android.net.wifi.ScanResult>);
-    method @Nullable @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public String getCountryCode();
-    method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public android.net.Network getCurrentNetwork();
-    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public String[] getFactoryMacAddresses();
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public java.util.Map<android.net.wifi.hotspot2.OsuProvider,java.util.List<android.net.wifi.ScanResult>> getMatchingOsuProviders(@Nullable java.util.List<android.net.wifi.ScanResult>);
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public java.util.Map<android.net.wifi.hotspot2.OsuProvider,android.net.wifi.hotspot2.PasspointConfiguration> getMatchingPasspointConfigsForOsuProviders(@NonNull java.util.Set<android.net.wifi.hotspot2.OsuProvider>);
-    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_WIFI_STATE}) public java.util.Map<android.net.wifi.WifiNetworkSuggestion,java.util.List<android.net.wifi.ScanResult>> getMatchingScanResults(@NonNull java.util.List<android.net.wifi.WifiNetworkSuggestion>, @Nullable java.util.List<android.net.wifi.ScanResult>);
-    method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_WIFI_STATE, android.Manifest.permission.READ_WIFI_CREDENTIAL}) public java.util.List<android.net.wifi.WifiConfiguration> getPrivilegedConfiguredNetworks();
-    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public android.net.wifi.SoftApConfiguration getSoftApConfiguration();
-    method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public void getWifiActivityEnergyInfoAsync(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.OnWifiActivityEnergyInfoListener);
-    method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public android.net.wifi.WifiConfiguration getWifiApConfiguration();
-    method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public int getWifiApState();
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public java.util.List<android.net.wifi.WifiConfiguration> getWifiConfigForMatchedNetworkSuggestionsSharedWithUser(@NonNull java.util.List<android.net.wifi.ScanResult>);
-    method public boolean isApMacRandomizationSupported();
-    method public boolean isConnectedMacRandomizationSupported();
-    method @Deprecated public boolean isDeviceToDeviceRttSupported();
-    method public boolean isPortableHotspotSupported();
-    method public boolean isVerboseLoggingEnabled();
-    method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public boolean isWifiApEnabled();
-    method public boolean isWifiScannerSupported();
-    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void registerNetworkRequestMatchCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.NetworkRequestMatchCallback);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void registerSoftApCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.SoftApCallback);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void registerTrafficStateCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.TrafficStateCallback);
-    method @RequiresPermission(android.Manifest.permission.WIFI_UPDATE_USABILITY_STATS_SCORE) public void removeOnWifiUsabilityStatsListener(@NonNull android.net.wifi.WifiManager.OnWifiUsabilityStatsListener);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void restoreBackupData(@NonNull byte[]);
-    method @Nullable @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public android.net.wifi.SoftApConfiguration restoreSoftApBackupData(@NonNull byte[]);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void restoreSupplicantBackupData(@NonNull byte[], @NonNull byte[]);
-    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public byte[] retrieveBackupData();
-    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public byte[] retrieveSoftApBackupData();
-    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK}) public void save(@NonNull android.net.wifi.WifiConfiguration, @Nullable android.net.wifi.WifiManager.ActionListener);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void setAutoWakeupEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.WIFI_SET_DEVICE_MOBILITY_STATE) public void setDeviceMobilityState(int);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void setMacRandomizationSettingPasspointEnabled(@NonNull String, boolean);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void setPasspointMeteredOverride(@NonNull String, int);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void setScanAlwaysAvailable(boolean);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void setScanThrottleEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public boolean setSoftApConfiguration(@NonNull android.net.wifi.SoftApConfiguration);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void setVerboseLoggingEnabled(boolean);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.CHANGE_WIFI_STATE) public boolean setWifiApConfiguration(android.net.wifi.WifiConfiguration);
-    method @RequiresPermission(android.Manifest.permission.WIFI_UPDATE_USABILITY_STATS_SCORE) public boolean setWifiConnectedNetworkScorer(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.WifiConnectedNetworkScorer);
-    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void startEasyConnectAsConfiguratorInitiator(@NonNull String, int, int, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.EasyConnectStatusCallback);
-    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void startEasyConnectAsEnrolleeInitiator(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.EasyConnectStatusCallback);
-    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void startLocalOnlyHotspot(@NonNull android.net.wifi.SoftApConfiguration, @Nullable java.util.concurrent.Executor, @Nullable android.net.wifi.WifiManager.LocalOnlyHotspotCallback);
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public boolean startScan(android.os.WorkSource);
-    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void startSubscriptionProvisioning(@NonNull android.net.wifi.hotspot2.OsuProvider, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.hotspot2.ProvisioningCallback);
-    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public boolean startTetheredHotspot(@Nullable android.net.wifi.SoftApConfiguration);
-    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void stopEasyConnectSession();
-    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public boolean stopSoftAp();
-    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void unregisterNetworkRequestMatchCallback(@NonNull android.net.wifi.WifiManager.NetworkRequestMatchCallback);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void unregisterSoftApCallback(@NonNull android.net.wifi.WifiManager.SoftApCallback);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void unregisterTrafficStateCallback(@NonNull android.net.wifi.WifiManager.TrafficStateCallback);
-    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void updateInterfaceIpState(@Nullable String, int);
-    method @RequiresPermission(android.Manifest.permission.WIFI_UPDATE_USABILITY_STATS_SCORE) public void updateWifiUsabilityScore(int, int, int);
-    field public static final String ACTION_LINK_CONFIGURATION_CHANGED = "android.net.wifi.LINK_CONFIGURATION_CHANGED";
-    field @RequiresPermission(android.Manifest.permission.NETWORK_CARRIER_PROVISIONING) public static final String ACTION_NETWORK_SETTINGS_RESET = "android.net.wifi.action.NETWORK_SETTINGS_RESET";
-    field public static final String ACTION_PASSPOINT_LAUNCH_OSU_VIEW = "android.net.wifi.action.PASSPOINT_LAUNCH_OSU_VIEW";
-    field public static final String ACTION_REQUEST_DISABLE = "android.net.wifi.action.REQUEST_DISABLE";
-    field public static final String ACTION_REQUEST_ENABLE = "android.net.wifi.action.REQUEST_ENABLE";
-    field public static final int CHANGE_REASON_ADDED = 0; // 0x0
-    field public static final int CHANGE_REASON_CONFIG_CHANGE = 2; // 0x2
-    field public static final int CHANGE_REASON_REMOVED = 1; // 0x1
-    field public static final String CONFIGURED_NETWORKS_CHANGED_ACTION = "android.net.wifi.CONFIGURED_NETWORKS_CHANGE";
-    field public static final int DEVICE_MOBILITY_STATE_HIGH_MVMT = 1; // 0x1
-    field public static final int DEVICE_MOBILITY_STATE_LOW_MVMT = 2; // 0x2
-    field public static final int DEVICE_MOBILITY_STATE_STATIONARY = 3; // 0x3
-    field public static final int DEVICE_MOBILITY_STATE_UNKNOWN = 0; // 0x0
-    field public static final int EASY_CONNECT_NETWORK_ROLE_AP = 1; // 0x1
-    field public static final int EASY_CONNECT_NETWORK_ROLE_STA = 0; // 0x0
-    field public static final String EXTRA_CHANGE_REASON = "changeReason";
-    field public static final String EXTRA_LINK_PROPERTIES = "android.net.wifi.extra.LINK_PROPERTIES";
-    field public static final String EXTRA_MULTIPLE_NETWORKS_CHANGED = "multipleChanges";
-    field public static final String EXTRA_OSU_NETWORK = "android.net.wifi.extra.OSU_NETWORK";
-    field public static final String EXTRA_PREVIOUS_WIFI_AP_STATE = "previous_wifi_state";
-    field public static final String EXTRA_URL = "android.net.wifi.extra.URL";
-    field public static final String EXTRA_WIFI_AP_FAILURE_REASON = "android.net.wifi.extra.WIFI_AP_FAILURE_REASON";
-    field public static final String EXTRA_WIFI_AP_INTERFACE_NAME = "android.net.wifi.extra.WIFI_AP_INTERFACE_NAME";
-    field public static final String EXTRA_WIFI_AP_MODE = "android.net.wifi.extra.WIFI_AP_MODE";
-    field public static final String EXTRA_WIFI_AP_STATE = "wifi_state";
-    field public static final String EXTRA_WIFI_CONFIGURATION = "wifiConfiguration";
-    field public static final String EXTRA_WIFI_CREDENTIAL_EVENT_TYPE = "et";
-    field public static final String EXTRA_WIFI_CREDENTIAL_SSID = "ssid";
-    field public static final int IFACE_IP_MODE_CONFIGURATION_ERROR = 0; // 0x0
-    field public static final int IFACE_IP_MODE_LOCAL_ONLY = 2; // 0x2
-    field public static final int IFACE_IP_MODE_TETHERED = 1; // 0x1
-    field public static final int IFACE_IP_MODE_UNSPECIFIED = -1; // 0xffffffff
-    field public static final int PASSPOINT_HOME_NETWORK = 0; // 0x0
-    field public static final int PASSPOINT_ROAMING_NETWORK = 1; // 0x1
-    field public static final int SAP_CLIENT_BLOCK_REASON_CODE_BLOCKED_BY_USER = 0; // 0x0
-    field public static final int SAP_CLIENT_BLOCK_REASON_CODE_NO_MORE_STAS = 1; // 0x1
-    field public static final int SAP_START_FAILURE_GENERAL = 0; // 0x0
-    field public static final int SAP_START_FAILURE_NO_CHANNEL = 1; // 0x1
-    field public static final int SAP_START_FAILURE_UNSUPPORTED_CONFIGURATION = 2; // 0x2
-    field public static final String WIFI_AP_STATE_CHANGED_ACTION = "android.net.wifi.WIFI_AP_STATE_CHANGED";
-    field public static final int WIFI_AP_STATE_DISABLED = 11; // 0xb
-    field public static final int WIFI_AP_STATE_DISABLING = 10; // 0xa
-    field public static final int WIFI_AP_STATE_ENABLED = 13; // 0xd
-    field public static final int WIFI_AP_STATE_ENABLING = 12; // 0xc
-    field public static final int WIFI_AP_STATE_FAILED = 14; // 0xe
-    field public static final String WIFI_CREDENTIAL_CHANGED_ACTION = "android.net.wifi.WIFI_CREDENTIAL_CHANGED";
-    field public static final int WIFI_CREDENTIAL_FORGOT = 1; // 0x1
-    field public static final int WIFI_CREDENTIAL_SAVED = 0; // 0x0
-  }
-
-  public static interface WifiManager.ActionListener {
-    method public void onFailure(int);
-    method public void onSuccess();
-  }
-
-  public static interface WifiManager.NetworkRequestMatchCallback {
-    method public default void onAbort();
-    method public default void onMatch(@NonNull java.util.List<android.net.wifi.ScanResult>);
-    method public default void onUserSelectionCallbackRegistration(@NonNull android.net.wifi.WifiManager.NetworkRequestUserSelectionCallback);
-    method public default void onUserSelectionConnectFailure(@NonNull android.net.wifi.WifiConfiguration);
-    method public default void onUserSelectionConnectSuccess(@NonNull android.net.wifi.WifiConfiguration);
-  }
-
-  public static interface WifiManager.NetworkRequestUserSelectionCallback {
-    method public default void reject();
-    method public default void select(@NonNull android.net.wifi.WifiConfiguration);
-  }
-
-  public static interface WifiManager.OnWifiActivityEnergyInfoListener {
-    method public void onWifiActivityEnergyInfo(@Nullable android.os.connectivity.WifiActivityEnergyInfo);
-  }
-
-  public static interface WifiManager.OnWifiUsabilityStatsListener {
-    method public void onWifiUsabilityStats(int, boolean, @NonNull android.net.wifi.WifiUsabilityStatsEntry);
-  }
-
-  public static interface WifiManager.ScoreUpdateObserver {
-    method public void notifyScoreUpdate(int, int);
-    method public void triggerUpdateOfWifiUsabilityStats(int);
-  }
-
-  public static interface WifiManager.SoftApCallback {
-    method public default void onBlockedClientConnecting(@NonNull android.net.wifi.WifiClient, int);
-    method public default void onCapabilityChanged(@NonNull android.net.wifi.SoftApCapability);
-    method public default void onConnectedClientsChanged(@NonNull java.util.List<android.net.wifi.WifiClient>);
-    method public default void onInfoChanged(@NonNull android.net.wifi.SoftApInfo);
-    method public default void onStateChanged(int, int);
-  }
-
-  public static interface WifiManager.TrafficStateCallback {
-    method public void onStateChanged(int);
-    field public static final int DATA_ACTIVITY_IN = 1; // 0x1
-    field public static final int DATA_ACTIVITY_INOUT = 3; // 0x3
-    field public static final int DATA_ACTIVITY_NONE = 0; // 0x0
-    field public static final int DATA_ACTIVITY_OUT = 2; // 0x2
-  }
-
-  public static interface WifiManager.WifiConnectedNetworkScorer {
-    method public void onSetScoreUpdateObserver(@NonNull android.net.wifi.WifiManager.ScoreUpdateObserver);
-    method public void onStart(int);
-    method public void onStop(int);
-  }
-
-  public final class WifiMigration {
-    method @Nullable public static java.io.InputStream convertAndRetrieveSharedConfigStoreFile(int);
-    method @Nullable public static java.io.InputStream convertAndRetrieveUserConfigStoreFile(int, @NonNull android.os.UserHandle);
-    method @NonNull public static android.net.wifi.WifiMigration.SettingsMigrationData loadFromSettings(@NonNull android.content.Context);
-    method public static void removeSharedConfigStoreFile(int);
-    method public static void removeUserConfigStoreFile(int, @NonNull android.os.UserHandle);
-    field public static final int STORE_FILE_SHARED_GENERAL = 0; // 0x0
-    field public static final int STORE_FILE_SHARED_SOFTAP = 1; // 0x1
-    field public static final int STORE_FILE_USER_GENERAL = 2; // 0x2
-    field public static final int STORE_FILE_USER_NETWORK_SUGGESTIONS = 3; // 0x3
-  }
-
-  public static final class WifiMigration.SettingsMigrationData implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getP2pDeviceName();
-    method public boolean isP2pFactoryResetPending();
-    method public boolean isScanAlwaysAvailable();
-    method public boolean isScanThrottleEnabled();
-    method public boolean isSoftApTimeoutEnabled();
-    method public boolean isVerboseLoggingEnabled();
-    method public boolean isWakeUpEnabled();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.WifiMigration.SettingsMigrationData> CREATOR;
-  }
-
-  public static final class WifiMigration.SettingsMigrationData.Builder {
-    ctor public WifiMigration.SettingsMigrationData.Builder();
-    method @NonNull public android.net.wifi.WifiMigration.SettingsMigrationData build();
-    method @NonNull public android.net.wifi.WifiMigration.SettingsMigrationData.Builder setP2pDeviceName(@Nullable String);
-    method @NonNull public android.net.wifi.WifiMigration.SettingsMigrationData.Builder setP2pFactoryResetPending(boolean);
-    method @NonNull public android.net.wifi.WifiMigration.SettingsMigrationData.Builder setScanAlwaysAvailable(boolean);
-    method @NonNull public android.net.wifi.WifiMigration.SettingsMigrationData.Builder setScanThrottleEnabled(boolean);
-    method @NonNull public android.net.wifi.WifiMigration.SettingsMigrationData.Builder setSoftApTimeoutEnabled(boolean);
-    method @NonNull public android.net.wifi.WifiMigration.SettingsMigrationData.Builder setVerboseLoggingEnabled(boolean);
-    method @NonNull public android.net.wifi.WifiMigration.SettingsMigrationData.Builder setWakeUpEnabled(boolean);
-  }
-
-  public class WifiNetworkConnectionStatistics implements android.os.Parcelable {
-    ctor public WifiNetworkConnectionStatistics(int, int);
-    ctor public WifiNetworkConnectionStatistics();
-    ctor public WifiNetworkConnectionStatistics(android.net.wifi.WifiNetworkConnectionStatistics);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.WifiNetworkConnectionStatistics> CREATOR;
-    field public int numConnection;
-    field public int numUsage;
-  }
-
-  public final class WifiNetworkSuggestion implements android.os.Parcelable {
-    method @NonNull public android.net.wifi.WifiConfiguration getWifiConfiguration();
-  }
-
-  public static final class WifiNetworkSuggestion.Builder {
-    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_CARRIER_PROVISIONING) public android.net.wifi.WifiNetworkSuggestion.Builder setCarrierId(int);
-  }
-
-  public class WifiScanner {
-    method @Deprecated public void configureWifiChange(int, int, int, int, int, android.net.wifi.WifiScanner.BssidInfo[]);
-    method @Deprecated public void configureWifiChange(android.net.wifi.WifiScanner.WifiChangeSettings);
-    method @NonNull @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public java.util.List<java.lang.Integer> getAvailableChannels(int);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean getScanResults();
-    method @NonNull @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public java.util.List<android.net.wifi.ScanResult> getSingleScanResults();
-    method @RequiresPermission(android.Manifest.permission.NETWORK_STACK) public void registerScanListener(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiScanner.ScanListener);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_STACK) public void setScanningEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void startBackgroundScan(android.net.wifi.WifiScanner.ScanSettings, android.net.wifi.WifiScanner.ScanListener);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void startBackgroundScan(android.net.wifi.WifiScanner.ScanSettings, android.net.wifi.WifiScanner.ScanListener, android.os.WorkSource);
-    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void startScan(android.net.wifi.WifiScanner.ScanSettings, android.net.wifi.WifiScanner.ScanListener);
-    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void startScan(android.net.wifi.WifiScanner.ScanSettings, android.net.wifi.WifiScanner.ScanListener, android.os.WorkSource);
-    method @Deprecated public void startTrackingBssids(android.net.wifi.WifiScanner.BssidInfo[], int, android.net.wifi.WifiScanner.BssidListener);
-    method @Deprecated public void startTrackingWifiChange(android.net.wifi.WifiScanner.WifiChangeListener);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void stopBackgroundScan(android.net.wifi.WifiScanner.ScanListener);
-    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void stopScan(android.net.wifi.WifiScanner.ScanListener);
-    method @Deprecated public void stopTrackingBssids(android.net.wifi.WifiScanner.BssidListener);
-    method @Deprecated public void stopTrackingWifiChange(android.net.wifi.WifiScanner.WifiChangeListener);
-    method public void unregisterScanListener(@NonNull android.net.wifi.WifiScanner.ScanListener);
-    field public static final int MAX_SCAN_PERIOD_MS = 1024000; // 0xfa000
-    field public static final int MIN_SCAN_PERIOD_MS = 1000; // 0x3e8
-    field public static final int REASON_DUPLICATE_REQEUST = -5; // 0xfffffffb
-    field public static final int REASON_INVALID_LISTENER = -2; // 0xfffffffe
-    field public static final int REASON_INVALID_REQUEST = -3; // 0xfffffffd
-    field public static final int REASON_NOT_AUTHORIZED = -4; // 0xfffffffc
-    field public static final int REASON_SUCCEEDED = 0; // 0x0
-    field public static final int REASON_UNSPECIFIED = -1; // 0xffffffff
-    field @Deprecated public static final int REPORT_EVENT_AFTER_BUFFER_FULL = 0; // 0x0
-    field public static final int REPORT_EVENT_AFTER_EACH_SCAN = 1; // 0x1
-    field public static final int REPORT_EVENT_FULL_SCAN_RESULT = 2; // 0x2
-    field public static final int REPORT_EVENT_NO_BATCH = 4; // 0x4
-    field public static final int SCAN_TYPE_HIGH_ACCURACY = 2; // 0x2
-    field public static final int SCAN_TYPE_LOW_LATENCY = 0; // 0x0
-    field public static final int SCAN_TYPE_LOW_POWER = 1; // 0x1
-    field public static final int WIFI_BAND_24_5_6_GHZ = 11; // 0xb
-    field public static final int WIFI_BAND_24_5_WITH_DFS_6_GHZ = 15; // 0xf
-    field public static final int WIFI_BAND_24_GHZ = 1; // 0x1
-    field public static final int WIFI_BAND_5_GHZ = 2; // 0x2
-    field public static final int WIFI_BAND_5_GHZ_DFS_ONLY = 4; // 0x4
-    field public static final int WIFI_BAND_5_GHZ_WITH_DFS = 6; // 0x6
-    field public static final int WIFI_BAND_6_GHZ = 8; // 0x8
-    field public static final int WIFI_BAND_BOTH = 3; // 0x3
-    field public static final int WIFI_BAND_BOTH_WITH_DFS = 7; // 0x7
-    field public static final int WIFI_BAND_UNSPECIFIED = 0; // 0x0
-  }
-
-  public static interface WifiScanner.ActionListener {
-    method public void onFailure(int, String);
-    method public void onSuccess();
-  }
-
-  @Deprecated public static class WifiScanner.BssidInfo {
-    ctor @Deprecated public WifiScanner.BssidInfo();
-    field @Deprecated public String bssid;
-    field @Deprecated public int frequencyHint;
-    field @Deprecated public int high;
-    field @Deprecated public int low;
-  }
-
-  @Deprecated public static interface WifiScanner.BssidListener extends android.net.wifi.WifiScanner.ActionListener {
-    method @Deprecated public void onFound(android.net.wifi.ScanResult[]);
-    method @Deprecated public void onLost(android.net.wifi.ScanResult[]);
-  }
-
-  public static class WifiScanner.ChannelSpec {
-    ctor public WifiScanner.ChannelSpec(int);
-    field public int frequency;
-  }
-
-  @Deprecated public static class WifiScanner.HotlistSettings implements android.os.Parcelable {
-    ctor @Deprecated public WifiScanner.HotlistSettings();
-    field @Deprecated public int apLostThreshold;
-    field @Deprecated public android.net.wifi.WifiScanner.BssidInfo[] bssidInfos;
-  }
-
-  public static class WifiScanner.ParcelableScanData implements android.os.Parcelable {
-    ctor public WifiScanner.ParcelableScanData(android.net.wifi.WifiScanner.ScanData[]);
-    method public android.net.wifi.WifiScanner.ScanData[] getResults();
-    field public android.net.wifi.WifiScanner.ScanData[] mResults;
-  }
-
-  public static class WifiScanner.ParcelableScanResults implements android.os.Parcelable {
-    ctor public WifiScanner.ParcelableScanResults(android.net.wifi.ScanResult[]);
-    method public android.net.wifi.ScanResult[] getResults();
-    field public android.net.wifi.ScanResult[] mResults;
-  }
-
-  public static class WifiScanner.ScanData implements android.os.Parcelable {
-    ctor public WifiScanner.ScanData(int, int, android.net.wifi.ScanResult[]);
-    ctor public WifiScanner.ScanData(android.net.wifi.WifiScanner.ScanData);
-    method public int getFlags();
-    method public int getId();
-    method public android.net.wifi.ScanResult[] getResults();
-  }
-
-  public static interface WifiScanner.ScanListener extends android.net.wifi.WifiScanner.ActionListener {
-    method public void onFullResult(android.net.wifi.ScanResult);
-    method @Deprecated public void onPeriodChanged(int);
-    method public void onResults(android.net.wifi.WifiScanner.ScanData[]);
-  }
-
-  public static class WifiScanner.ScanSettings implements android.os.Parcelable {
-    ctor public WifiScanner.ScanSettings();
-    field public int band;
-    field public android.net.wifi.WifiScanner.ChannelSpec[] channels;
-    field @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_STACK) public final java.util.List<android.net.wifi.WifiScanner.ScanSettings.HiddenNetwork> hiddenNetworks;
-    field public boolean hideFromAppOps;
-    field public boolean ignoreLocationSettings;
-    field @Deprecated public int maxPeriodInMs;
-    field @Deprecated public int maxScansToCache;
-    field @Deprecated public int numBssidsPerScan;
-    field @Deprecated public int periodInMs;
-    field @Deprecated public int reportEvents;
-    field @Deprecated public int stepCount;
-    field @RequiresPermission(android.Manifest.permission.NETWORK_STACK) public int type;
-  }
-
-  public static class WifiScanner.ScanSettings.HiddenNetwork {
-    ctor public WifiScanner.ScanSettings.HiddenNetwork(@NonNull String);
-    field @NonNull public final String ssid;
-  }
-
-  @Deprecated public static interface WifiScanner.WifiChangeListener extends android.net.wifi.WifiScanner.ActionListener {
-    method @Deprecated public void onChanging(android.net.wifi.ScanResult[]);
-    method @Deprecated public void onQuiescence(android.net.wifi.ScanResult[]);
-  }
-
-  @Deprecated public static class WifiScanner.WifiChangeSettings implements android.os.Parcelable {
-    ctor @Deprecated public WifiScanner.WifiChangeSettings();
-    field @Deprecated public android.net.wifi.WifiScanner.BssidInfo[] bssidInfos;
-    field @Deprecated public int lostApSampleSize;
-    field @Deprecated public int minApsBreachingThreshold;
-    field @Deprecated public int periodInMs;
-    field @Deprecated public int rssiSampleSize;
-    field @Deprecated public int unchangedSampleSize;
-  }
-
-  public final class WifiUsabilityStatsEntry implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getCellularDataNetworkType();
-    method public int getCellularSignalStrengthDb();
-    method public int getCellularSignalStrengthDbm();
-    method public int getLinkSpeedMbps();
-    method public int getProbeElapsedTimeSinceLastUpdateMillis();
-    method public int getProbeMcsRateSinceLastUpdate();
-    method public int getProbeStatusSinceLastUpdate();
-    method public int getRssi();
-    method public int getRxLinkSpeedMbps();
-    method public long getTimeStampMillis();
-    method public long getTotalBackgroundScanTimeMillis();
-    method public long getTotalBeaconRx();
-    method public long getTotalCcaBusyFreqTimeMillis();
-    method public long getTotalHotspot2ScanTimeMillis();
-    method public long getTotalNanScanTimeMillis();
-    method public long getTotalPnoScanTimeMillis();
-    method public long getTotalRadioOnFreqTimeMillis();
-    method public long getTotalRadioOnTimeMillis();
-    method public long getTotalRadioRxTimeMillis();
-    method public long getTotalRadioTxTimeMillis();
-    method public long getTotalRoamScanTimeMillis();
-    method public long getTotalRxSuccess();
-    method public long getTotalScanTimeMillis();
-    method public long getTotalTxBad();
-    method public long getTotalTxRetries();
-    method public long getTotalTxSuccess();
-    method public boolean isSameRegisteredCell();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.WifiUsabilityStatsEntry> CREATOR;
-    field public static final int PROBE_STATUS_FAILURE = 3; // 0x3
-    field public static final int PROBE_STATUS_NO_PROBE = 1; // 0x1
-    field public static final int PROBE_STATUS_SUCCESS = 2; // 0x2
-    field public static final int PROBE_STATUS_UNKNOWN = 0; // 0x0
-  }
-
-}
-
-package android.net.wifi.aware {
-
-  public class DiscoverySession implements java.lang.AutoCloseable {
-    method @Deprecated public android.net.NetworkSpecifier createNetworkSpecifierPmk(@NonNull android.net.wifi.aware.PeerHandle, @NonNull byte[]);
-  }
-
-  public class WifiAwareSession implements java.lang.AutoCloseable {
-    method public android.net.NetworkSpecifier createNetworkSpecifierPmk(int, @NonNull byte[], @NonNull byte[]);
-  }
-
-}
-
-package android.net.wifi.hotspot2 {
-
-  public final class OsuProvider implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getFriendlyName();
-    method @Nullable public android.net.Uri getServerUri();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.hotspot2.OsuProvider> CREATOR;
-  }
-
-  public final class PasspointConfiguration implements android.os.Parcelable {
-    method public int getMeteredOverride();
-    method public boolean isAutojoinEnabled();
-    method public boolean isMacRandomizationEnabled();
-  }
-
-  public abstract class ProvisioningCallback {
-    ctor public ProvisioningCallback();
-    method public abstract void onProvisioningComplete();
-    method public abstract void onProvisioningFailure(int);
-    method public abstract void onProvisioningStatus(int);
-    field public static final int OSU_FAILURE_ADD_PASSPOINT_CONFIGURATION = 22; // 0x16
-    field public static final int OSU_FAILURE_AP_CONNECTION = 1; // 0x1
-    field public static final int OSU_FAILURE_INVALID_URL_FORMAT_FOR_OSU = 8; // 0x8
-    field public static final int OSU_FAILURE_NO_AAA_SERVER_TRUST_ROOT_NODE = 17; // 0x11
-    field public static final int OSU_FAILURE_NO_AAA_TRUST_ROOT_CERTIFICATE = 21; // 0x15
-    field public static final int OSU_FAILURE_NO_OSU_ACTIVITY_FOUND = 14; // 0xe
-    field public static final int OSU_FAILURE_NO_POLICY_SERVER_TRUST_ROOT_NODE = 19; // 0x13
-    field public static final int OSU_FAILURE_NO_PPS_MO = 16; // 0x10
-    field public static final int OSU_FAILURE_NO_REMEDIATION_SERVER_TRUST_ROOT_NODE = 18; // 0x12
-    field public static final int OSU_FAILURE_OSU_PROVIDER_NOT_FOUND = 23; // 0x17
-    field public static final int OSU_FAILURE_PROVISIONING_ABORTED = 6; // 0x6
-    field public static final int OSU_FAILURE_PROVISIONING_NOT_AVAILABLE = 7; // 0x7
-    field public static final int OSU_FAILURE_RETRIEVE_TRUST_ROOT_CERTIFICATES = 20; // 0x14
-    field public static final int OSU_FAILURE_SERVER_CONNECTION = 3; // 0x3
-    field public static final int OSU_FAILURE_SERVER_URL_INVALID = 2; // 0x2
-    field public static final int OSU_FAILURE_SERVER_VALIDATION = 4; // 0x4
-    field public static final int OSU_FAILURE_SERVICE_PROVIDER_VERIFICATION = 5; // 0x5
-    field public static final int OSU_FAILURE_SOAP_MESSAGE_EXCHANGE = 11; // 0xb
-    field public static final int OSU_FAILURE_START_REDIRECT_LISTENER = 12; // 0xc
-    field public static final int OSU_FAILURE_TIMED_OUT_REDIRECT_LISTENER = 13; // 0xd
-    field public static final int OSU_FAILURE_UNEXPECTED_COMMAND_TYPE = 9; // 0x9
-    field public static final int OSU_FAILURE_UNEXPECTED_SOAP_MESSAGE_STATUS = 15; // 0xf
-    field public static final int OSU_FAILURE_UNEXPECTED_SOAP_MESSAGE_TYPE = 10; // 0xa
-    field public static final int OSU_STATUS_AP_CONNECTED = 2; // 0x2
-    field public static final int OSU_STATUS_AP_CONNECTING = 1; // 0x1
-    field public static final int OSU_STATUS_INIT_SOAP_EXCHANGE = 6; // 0x6
-    field public static final int OSU_STATUS_REDIRECT_RESPONSE_RECEIVED = 8; // 0x8
-    field public static final int OSU_STATUS_RETRIEVING_TRUST_ROOT_CERTS = 11; // 0xb
-    field public static final int OSU_STATUS_SECOND_SOAP_EXCHANGE = 9; // 0x9
-    field public static final int OSU_STATUS_SERVER_CONNECTED = 5; // 0x5
-    field public static final int OSU_STATUS_SERVER_CONNECTING = 3; // 0x3
-    field public static final int OSU_STATUS_SERVER_VALIDATED = 4; // 0x4
-    field public static final int OSU_STATUS_THIRD_SOAP_EXCHANGE = 10; // 0xa
-    field public static final int OSU_STATUS_WAITING_FOR_REDIRECT_RESPONSE = 7; // 0x7
-  }
-
-}
-
-package android.net.wifi.nl80211 {
-
-  public final class DeviceWiphyCapabilities implements android.os.Parcelable {
-    ctor public DeviceWiphyCapabilities();
-    method public int describeContents();
-    method public int getMaxNumberRxSpatialStreams();
-    method public int getMaxNumberTxSpatialStreams();
-    method public boolean isChannelWidthSupported(int);
-    method public boolean isWifiStandardSupported(int);
-    method public void setWifiStandardSupport(int, boolean);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.nl80211.DeviceWiphyCapabilities> CREATOR;
-  }
-
-  public final class NativeScanResult implements android.os.Parcelable {
-    ctor public NativeScanResult();
-    method public int describeContents();
-    method @Nullable public android.net.MacAddress getBssid();
-    method public int getCapabilities();
-    method public int getFrequencyMhz();
-    method @NonNull public byte[] getInformationElements();
-    method @NonNull public java.util.List<android.net.wifi.nl80211.RadioChainInfo> getRadioChainInfos();
-    method public int getSignalMbm();
-    method @NonNull public byte[] getSsid();
-    method public long getTsf();
-    method public boolean isAssociated();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final int BSS_CAPABILITY_APSD = 2048; // 0x800
-    field public static final int BSS_CAPABILITY_CF_POLLABLE = 4; // 0x4
-    field public static final int BSS_CAPABILITY_CF_POLL_REQUEST = 8; // 0x8
-    field public static final int BSS_CAPABILITY_CHANNEL_AGILITY = 128; // 0x80
-    field public static final int BSS_CAPABILITY_DELAYED_BLOCK_ACK = 16384; // 0x4000
-    field public static final int BSS_CAPABILITY_DSSS_OFDM = 8192; // 0x2000
-    field public static final int BSS_CAPABILITY_ESS = 1; // 0x1
-    field public static final int BSS_CAPABILITY_IBSS = 2; // 0x2
-    field public static final int BSS_CAPABILITY_IMMEDIATE_BLOCK_ACK = 32768; // 0x8000
-    field public static final int BSS_CAPABILITY_PBCC = 64; // 0x40
-    field public static final int BSS_CAPABILITY_PRIVACY = 16; // 0x10
-    field public static final int BSS_CAPABILITY_QOS = 512; // 0x200
-    field public static final int BSS_CAPABILITY_RADIO_MANAGEMENT = 4096; // 0x1000
-    field public static final int BSS_CAPABILITY_SHORT_PREAMBLE = 32; // 0x20
-    field public static final int BSS_CAPABILITY_SHORT_SLOT_TIME = 1024; // 0x400
-    field public static final int BSS_CAPABILITY_SPECTRUM_MANAGEMENT = 256; // 0x100
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.nl80211.NativeScanResult> CREATOR;
-  }
-
-  public final class NativeWifiClient implements android.os.Parcelable {
-    ctor public NativeWifiClient(@Nullable android.net.MacAddress);
-    method public int describeContents();
-    method @Nullable public android.net.MacAddress getMacAddress();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.nl80211.NativeWifiClient> CREATOR;
-  }
-
-  public final class PnoNetwork implements android.os.Parcelable {
-    ctor public PnoNetwork();
-    method public int describeContents();
-    method @NonNull public int[] getFrequenciesMhz();
-    method @NonNull public byte[] getSsid();
-    method public boolean isHidden();
-    method public void setFrequenciesMhz(@NonNull int[]);
-    method public void setHidden(boolean);
-    method public void setSsid(@NonNull byte[]);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.nl80211.PnoNetwork> CREATOR;
-  }
-
-  public final class PnoSettings implements android.os.Parcelable {
-    ctor public PnoSettings();
-    method public int describeContents();
-    method public long getIntervalMillis();
-    method public int getMin2gRssiDbm();
-    method public int getMin5gRssiDbm();
-    method public int getMin6gRssiDbm();
-    method @NonNull public java.util.List<android.net.wifi.nl80211.PnoNetwork> getPnoNetworks();
-    method public void setIntervalMillis(long);
-    method public void setMin2gRssiDbm(int);
-    method public void setMin5gRssiDbm(int);
-    method public void setMin6gRssiDbm(int);
-    method public void setPnoNetworks(@NonNull java.util.List<android.net.wifi.nl80211.PnoNetwork>);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.nl80211.PnoSettings> CREATOR;
-  }
-
-  public final class RadioChainInfo implements android.os.Parcelable {
-    ctor public RadioChainInfo(int, int);
-    method public int describeContents();
-    method public int getChainId();
-    method public int getLevelDbm();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.nl80211.RadioChainInfo> CREATOR;
-  }
-
-  public class WifiNl80211Manager {
-    method public void abortScan(@NonNull String);
-    method public void enableVerboseLogging(boolean);
-    method @NonNull public int[] getChannelsMhzForBand(int);
-    method @Nullable public android.net.wifi.nl80211.DeviceWiphyCapabilities getDeviceWiphyCapabilities(@NonNull String);
-    method @NonNull public java.util.List<android.net.wifi.nl80211.NativeScanResult> getScanResults(@NonNull String, int);
-    method @Nullable public android.net.wifi.nl80211.WifiNl80211Manager.TxPacketCounters getTxPacketCounters(@NonNull String);
-    method @Nullable public static android.net.wifi.nl80211.WifiNl80211Manager.OemSecurityType parseOemSecurityTypeElement(int, int, @NonNull byte[]);
-    method public boolean registerApCallback(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.nl80211.WifiNl80211Manager.SoftApCallback);
-    method public void sendMgmtFrame(@NonNull String, @NonNull byte[], int, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.nl80211.WifiNl80211Manager.SendMgmtFrameCallback);
-    method public void setOnServiceDeadCallback(@NonNull Runnable);
-    method public boolean setupInterfaceForClientMode(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.nl80211.WifiNl80211Manager.ScanEventCallback, @NonNull android.net.wifi.nl80211.WifiNl80211Manager.ScanEventCallback);
-    method public boolean setupInterfaceForSoftApMode(@NonNull String);
-    method @Nullable public android.net.wifi.nl80211.WifiNl80211Manager.SignalPollResult signalPoll(@NonNull String);
-    method public boolean startPnoScan(@NonNull String, @NonNull android.net.wifi.nl80211.PnoSettings, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.nl80211.WifiNl80211Manager.PnoScanRequestCallback);
-    method public boolean startScan(@NonNull String, int, @Nullable java.util.Set<java.lang.Integer>, @Nullable java.util.List<byte[]>);
-    method public boolean stopPnoScan(@NonNull String);
-    method public boolean tearDownClientInterface(@NonNull String);
-    method public boolean tearDownInterfaces();
-    method public boolean tearDownSoftApInterface(@NonNull String);
-    field public static final int SCAN_TYPE_PNO_SCAN = 1; // 0x1
-    field public static final int SCAN_TYPE_SINGLE_SCAN = 0; // 0x0
-    field public static final int SEND_MGMT_FRAME_ERROR_ALREADY_STARTED = 5; // 0x5
-    field public static final int SEND_MGMT_FRAME_ERROR_MCS_UNSUPPORTED = 2; // 0x2
-    field public static final int SEND_MGMT_FRAME_ERROR_NO_ACK = 3; // 0x3
-    field public static final int SEND_MGMT_FRAME_ERROR_TIMEOUT = 4; // 0x4
-    field public static final int SEND_MGMT_FRAME_ERROR_UNKNOWN = 1; // 0x1
-  }
-
-  public static class WifiNl80211Manager.OemSecurityType {
-    ctor public WifiNl80211Manager.OemSecurityType(int, @NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.lang.Integer>, int);
-    field public final int groupCipher;
-    field @NonNull public final java.util.List<java.lang.Integer> keyManagement;
-    field @NonNull public final java.util.List<java.lang.Integer> pairwiseCipher;
-    field public final int protocol;
-  }
-
-  public static interface WifiNl80211Manager.PnoScanRequestCallback {
-    method public void onPnoRequestFailed();
-    method public void onPnoRequestSucceeded();
-  }
-
-  public static interface WifiNl80211Manager.ScanEventCallback {
-    method public void onScanFailed();
-    method public void onScanResultReady();
-  }
-
-  public static interface WifiNl80211Manager.SendMgmtFrameCallback {
-    method public void onAck(int);
-    method public void onFailure(int);
-  }
-
-  public static class WifiNl80211Manager.SignalPollResult {
-    field public final int associationFrequencyMHz;
-    field public final int currentRssiDbm;
-    field public final int rxBitrateMbps;
-    field public final int txBitrateMbps;
-  }
-
-  public static interface WifiNl80211Manager.SoftApCallback {
-    method public void onConnectedClientsChanged(@NonNull android.net.wifi.nl80211.NativeWifiClient, boolean);
-    method public void onFailure();
-    method public void onSoftApChannelSwitched(int, int);
-  }
-
-  public static class WifiNl80211Manager.TxPacketCounters {
-    field public final int txPacketFailed;
-    field public final int txPacketSucceeded;
-  }
-
-}
-
-package android.net.wifi.p2p {
-
-  public final class WifiP2pGroupList implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public java.util.List<android.net.wifi.p2p.WifiP2pGroup> getGroupList();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.p2p.WifiP2pGroupList> CREATOR;
-  }
-
-  public class WifiP2pManager {
-    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.OVERRIDE_WIFI_CONFIG}) public void deletePersistentGroup(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, int, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void factoryReset(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
-    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.READ_WIFI_CREDENTIAL}) public void requestPersistentGroupInfo(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @Nullable android.net.wifi.p2p.WifiP2pManager.PersistentGroupInfoListener);
-    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.OVERRIDE_WIFI_CONFIG}) public void setDeviceName(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @NonNull String, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
-    method @RequiresPermission(android.Manifest.permission.CONFIGURE_WIFI_DISPLAY) public void setMiracastMode(int);
-    method @RequiresPermission(android.Manifest.permission.CONFIGURE_WIFI_DISPLAY) public void setWfdInfo(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @NonNull android.net.wifi.p2p.WifiP2pWfdInfo, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
-    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.OVERRIDE_WIFI_CONFIG}) public void setWifiP2pChannels(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, int, int, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void startListening(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void stopListening(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
-    field public static final String ACTION_WIFI_P2P_PERSISTENT_GROUPS_CHANGED = "android.net.wifi.p2p.action.WIFI_P2P_PERSISTENT_GROUPS_CHANGED";
-    field public static final int MIRACAST_DISABLED = 0; // 0x0
-    field public static final int MIRACAST_SINK = 2; // 0x2
-    field public static final int MIRACAST_SOURCE = 1; // 0x1
-  }
-
-  public static interface WifiP2pManager.PersistentGroupInfoListener {
-    method public void onPersistentGroupInfoAvailable(@NonNull android.net.wifi.p2p.WifiP2pGroupList);
-  }
-
-}
-
-package android.net.wifi.rtt {
-
-  public static final class RangingRequest.Builder {
-    method public android.net.wifi.rtt.RangingRequest.Builder addResponder(@NonNull android.net.wifi.rtt.ResponderConfig);
-  }
-
-  public final class RangingResult implements android.os.Parcelable {
-    method @NonNull public byte[] getLci();
-    method @NonNull public byte[] getLcr();
-  }
-
-  public final class ResponderConfig implements android.os.Parcelable {
-    ctor public ResponderConfig(@NonNull android.net.MacAddress, int, boolean, int, int, int, int, int);
-    ctor public ResponderConfig(@NonNull android.net.wifi.aware.PeerHandle, int, boolean, int, int, int, int, int);
-    method public int describeContents();
-    method public static android.net.wifi.rtt.ResponderConfig fromScanResult(android.net.wifi.ScanResult);
-    method public static android.net.wifi.rtt.ResponderConfig fromWifiAwarePeerHandleWithDefaults(android.net.wifi.aware.PeerHandle);
-    method public static android.net.wifi.rtt.ResponderConfig fromWifiAwarePeerMacAddressWithDefaults(android.net.MacAddress);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CHANNEL_WIDTH_160MHZ = 3; // 0x3
-    field public static final int CHANNEL_WIDTH_20MHZ = 0; // 0x0
-    field public static final int CHANNEL_WIDTH_40MHZ = 1; // 0x1
-    field public static final int CHANNEL_WIDTH_80MHZ = 2; // 0x2
-    field public static final int CHANNEL_WIDTH_80MHZ_PLUS_MHZ = 4; // 0x4
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.rtt.ResponderConfig> CREATOR;
-    field public static final int PREAMBLE_HE = 3; // 0x3
-    field public static final int PREAMBLE_HT = 1; // 0x1
-    field public static final int PREAMBLE_LEGACY = 0; // 0x0
-    field public static final int PREAMBLE_VHT = 2; // 0x2
-    field public static final int RESPONDER_AP = 0; // 0x0
-    field public static final int RESPONDER_AWARE = 4; // 0x4
-    field public static final int RESPONDER_P2P_CLIENT = 3; // 0x3
-    field public static final int RESPONDER_P2P_GO = 2; // 0x2
-    field public static final int RESPONDER_STA = 1; // 0x1
-    field public final int centerFreq0;
-    field public final int centerFreq1;
-    field public final int channelWidth;
-    field public final int frequency;
-    field public final android.net.MacAddress macAddress;
-    field public final android.net.wifi.aware.PeerHandle peerHandle;
-    field public final int preamble;
-    field public final int responderType;
-    field public final boolean supports80211mc;
-  }
-
-  public final class ResponderLocation implements android.os.Parcelable {
-    method public boolean getExtraInfoOnAssociationIndication();
-  }
-
-  public class WifiRttManager {
-    method @RequiresPermission(allOf={android.Manifest.permission.LOCATION_HARDWARE}) public void cancelRanging(@Nullable android.os.WorkSource);
-    method @RequiresPermission(allOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.CHANGE_WIFI_STATE, android.Manifest.permission.ACCESS_WIFI_STATE}) public void startRanging(@Nullable android.os.WorkSource, @NonNull android.net.wifi.rtt.RangingRequest, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.rtt.RangingResultCallback);
-  }
-
-}
-
-package android.nfc {
-
-  public final class NfcAdapter {
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean addNfcUnlockHandler(android.nfc.NfcAdapter.NfcUnlockHandler, String[]);
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean disable();
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean disable(boolean);
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean disableNdefPush();
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean enable();
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean enableNdefPush();
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean enableSecureNfc(boolean);
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean removeNfcUnlockHandler(android.nfc.NfcAdapter.NfcUnlockHandler);
-    method public void setNdefPushMessage(android.nfc.NdefMessage, android.app.Activity, int);
-    field public static final int FLAG_NDEF_PUSH_NO_CONFIRM = 1; // 0x1
-  }
-
-  public static interface NfcAdapter.NfcUnlockHandler {
-    method public boolean onUnlockAttempted(android.nfc.Tag);
-  }
-
-}
-
-package android.os {
-
-  public class BatteryManager {
-    method @RequiresPermission(android.Manifest.permission.POWER_SAVER) public boolean setChargingStateUpdateDelayMillis(int);
-    field public static final String EXTRA_EVENTS = "android.os.extra.EVENTS";
-    field public static final String EXTRA_EVENT_TIMESTAMP = "android.os.extra.EVENT_TIMESTAMP";
-  }
-
-  public final class BatterySaverPolicyConfig implements android.os.Parcelable {
-    method public int describeContents();
-    method public float getAdjustBrightnessFactor();
-    method public boolean getAdvertiseIsEnabled();
-    method public boolean getDeferFullBackup();
-    method public boolean getDeferKeyValueBackup();
-    method @NonNull public java.util.Map<java.lang.String,java.lang.String> getDeviceSpecificSettings();
-    method public boolean getDisableAnimation();
-    method public boolean getDisableAod();
-    method public boolean getDisableLaunchBoost();
-    method public boolean getDisableOptionalSensors();
-    method public boolean getDisableSoundTrigger();
-    method public boolean getDisableVibration();
-    method public boolean getEnableAdjustBrightness();
-    method public boolean getEnableDataSaver();
-    method public boolean getEnableFirewall();
-    method public boolean getEnableNightMode();
-    method public boolean getEnableQuickDoze();
-    method public boolean getForceAllAppsStandby();
-    method public boolean getForceBackgroundCheck();
-    method public int getLocationMode();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.BatterySaverPolicyConfig> CREATOR;
-  }
-
-  public static final class BatterySaverPolicyConfig.Builder {
-    ctor public BatterySaverPolicyConfig.Builder();
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder addDeviceSpecificSetting(@NonNull String, @NonNull String);
-    method @NonNull public android.os.BatterySaverPolicyConfig build();
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setAdjustBrightnessFactor(float);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setAdvertiseIsEnabled(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setDeferFullBackup(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setDeferKeyValueBackup(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setDisableAnimation(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setDisableAod(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setDisableLaunchBoost(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setDisableOptionalSensors(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setDisableSoundTrigger(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setDisableVibration(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setEnableAdjustBrightness(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setEnableDataSaver(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setEnableFirewall(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setEnableNightMode(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setEnableQuickDoze(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setForceAllAppsStandby(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setForceBackgroundCheck(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setLocationMode(int);
-  }
-
-  public final class BatteryStatsManager {
-    method @NonNull @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public android.os.connectivity.CellularBatteryStats getCellularBatteryStats();
-    method @NonNull @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public android.os.connectivity.WifiBatteryStats getWifiBatteryStats();
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportFullWifiLockAcquiredFromSource(@NonNull android.os.WorkSource);
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportFullWifiLockReleasedFromSource(@NonNull android.os.WorkSource);
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiBatchedScanStartedFromSource(@NonNull android.os.WorkSource, @IntRange(from=0) int);
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiBatchedScanStoppedFromSource(@NonNull android.os.WorkSource);
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiMulticastDisabled(@NonNull android.os.WorkSource);
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiMulticastEnabled(@NonNull android.os.WorkSource);
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiOff();
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiOn();
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiRssiChanged(@IntRange(from=0xffffff81, to=0) int);
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiScanStartedFromSource(@NonNull android.os.WorkSource);
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiScanStoppedFromSource(@NonNull android.os.WorkSource);
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiState(int, @Nullable String);
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiSupplicantStateChanged(int, boolean);
-    field public static final int WIFI_STATE_OFF = 0; // 0x0
-    field public static final int WIFI_STATE_OFF_SCANNING = 1; // 0x1
-    field public static final int WIFI_STATE_ON_CONNECTED_P2P = 5; // 0x5
-    field public static final int WIFI_STATE_ON_CONNECTED_STA = 4; // 0x4
-    field public static final int WIFI_STATE_ON_CONNECTED_STA_P2P = 6; // 0x6
-    field public static final int WIFI_STATE_ON_DISCONNECTED = 3; // 0x3
-    field public static final int WIFI_STATE_ON_NO_NETWORKS = 2; // 0x2
-    field public static final int WIFI_STATE_SOFT_AP = 7; // 0x7
-    field public static final int WIFI_SUPPL_STATE_ASSOCIATED = 7; // 0x7
-    field public static final int WIFI_SUPPL_STATE_ASSOCIATING = 6; // 0x6
-    field public static final int WIFI_SUPPL_STATE_AUTHENTICATING = 5; // 0x5
-    field public static final int WIFI_SUPPL_STATE_COMPLETED = 10; // 0xa
-    field public static final int WIFI_SUPPL_STATE_DISCONNECTED = 1; // 0x1
-    field public static final int WIFI_SUPPL_STATE_DORMANT = 11; // 0xb
-    field public static final int WIFI_SUPPL_STATE_FOUR_WAY_HANDSHAKE = 8; // 0x8
-    field public static final int WIFI_SUPPL_STATE_GROUP_HANDSHAKE = 9; // 0x9
-    field public static final int WIFI_SUPPL_STATE_INACTIVE = 3; // 0x3
-    field public static final int WIFI_SUPPL_STATE_INTERFACE_DISABLED = 2; // 0x2
-    field public static final int WIFI_SUPPL_STATE_INVALID = 0; // 0x0
-    field public static final int WIFI_SUPPL_STATE_SCANNING = 4; // 0x4
-    field public static final int WIFI_SUPPL_STATE_UNINITIALIZED = 12; // 0xc
-  }
-
-  public class Binder implements android.os.IBinder {
-    method public int handleShellCommand(@NonNull android.os.ParcelFileDescriptor, @NonNull android.os.ParcelFileDescriptor, @NonNull android.os.ParcelFileDescriptor, @NonNull String[]);
-    method public static void setProxyTransactListener(@Nullable android.os.Binder.ProxyTransactListener);
-  }
-
-  public static interface Binder.ProxyTransactListener {
-    method public void onTransactEnded(@Nullable Object);
-    method @Nullable public Object onTransactStarted(@NonNull android.os.IBinder, int);
-  }
-
-  public final class BugreportManager {
-    method @RequiresPermission(android.Manifest.permission.DUMP) public void cancelBugreport();
-    method @RequiresPermission(android.Manifest.permission.DUMP) public void requestBugreport(@NonNull android.os.BugreportParams, @Nullable CharSequence, @Nullable CharSequence);
-    method @RequiresPermission(android.Manifest.permission.DUMP) public void startBugreport(@NonNull android.os.ParcelFileDescriptor, @Nullable android.os.ParcelFileDescriptor, @NonNull android.os.BugreportParams, @NonNull java.util.concurrent.Executor, @NonNull android.os.BugreportManager.BugreportCallback);
-  }
-
-  public abstract static class BugreportManager.BugreportCallback {
-    ctor public BugreportManager.BugreportCallback();
-    method public void onError(int);
-    method public void onFinished();
-    method public void onProgress(@FloatRange(from=0.0f, to=100.0f) float);
-    field public static final int BUGREPORT_ERROR_ANOTHER_REPORT_IN_PROGRESS = 5; // 0x5
-    field public static final int BUGREPORT_ERROR_INVALID_INPUT = 1; // 0x1
-    field public static final int BUGREPORT_ERROR_RUNTIME = 2; // 0x2
-    field public static final int BUGREPORT_ERROR_USER_CONSENT_TIMED_OUT = 4; // 0x4
-    field public static final int BUGREPORT_ERROR_USER_DENIED_CONSENT = 3; // 0x3
-  }
-
-  public final class BugreportParams {
-    ctor public BugreportParams(int);
-    method public int getMode();
-    field public static final int BUGREPORT_MODE_FULL = 0; // 0x0
-    field public static final int BUGREPORT_MODE_INTERACTIVE = 1; // 0x1
-    field public static final int BUGREPORT_MODE_REMOTE = 2; // 0x2
-    field public static final int BUGREPORT_MODE_TELEPHONY = 4; // 0x4
-    field public static final int BUGREPORT_MODE_WEAR = 3; // 0x3
-    field public static final int BUGREPORT_MODE_WIFI = 5; // 0x5
-  }
-
-  public static class Build.VERSION {
-    field @NonNull public static final String PREVIEW_SDK_FINGERPRINT;
-  }
-
-  public final class ConfigUpdate {
-    field public static final String ACTION_UPDATE_CARRIER_ID_DB = "android.os.action.UPDATE_CARRIER_ID_DB";
-    field public static final String ACTION_UPDATE_CARRIER_PROVISIONING_URLS = "android.intent.action.UPDATE_CARRIER_PROVISIONING_URLS";
-    field public static final String ACTION_UPDATE_CONVERSATION_ACTIONS = "android.intent.action.UPDATE_CONVERSATION_ACTIONS";
-    field public static final String ACTION_UPDATE_CT_LOGS = "android.intent.action.UPDATE_CT_LOGS";
-    field public static final String ACTION_UPDATE_EMERGENCY_NUMBER_DB = "android.os.action.UPDATE_EMERGENCY_NUMBER_DB";
-    field public static final String ACTION_UPDATE_INTENT_FIREWALL = "android.intent.action.UPDATE_INTENT_FIREWALL";
-    field public static final String ACTION_UPDATE_LANG_ID = "android.intent.action.UPDATE_LANG_ID";
-    field public static final String ACTION_UPDATE_NETWORK_WATCHLIST = "android.intent.action.UPDATE_NETWORK_WATCHLIST";
-    field public static final String ACTION_UPDATE_PINS = "android.intent.action.UPDATE_PINS";
-    field public static final String ACTION_UPDATE_SMART_SELECTION = "android.intent.action.UPDATE_SMART_SELECTION";
-    field public static final String ACTION_UPDATE_SMS_SHORT_CODES = "android.intent.action.UPDATE_SMS_SHORT_CODES";
-    field public static final String EXTRA_REQUIRED_HASH = "android.os.extra.REQUIRED_HASH";
-    field public static final String EXTRA_VERSION = "android.os.extra.VERSION";
-  }
-
-  public class Environment {
-    method @NonNull public static java.util.Collection<java.io.File> getInternalMediaDirectories();
-    method @NonNull public static java.io.File getOdmDirectory();
-    method @NonNull public static java.io.File getOemDirectory();
-    method @NonNull public static java.io.File getProductDirectory();
-    method @Deprecated @NonNull public static java.io.File getProductServicesDirectory();
-    method @NonNull public static java.io.File getSystemExtDirectory();
-    method @NonNull public static java.io.File getVendorDirectory();
-  }
-
-  public class HidlMemory implements java.io.Closeable {
-    ctor public HidlMemory(@NonNull String, @IntRange(from=0) long, @Nullable android.os.NativeHandle);
-    method public void close() throws java.io.IOException;
-    method @NonNull public android.os.HidlMemory dup() throws java.io.IOException;
-    method protected void finalize();
-    method @Nullable public android.os.NativeHandle getHandle();
-    method @NonNull public String getName();
-    method public long getSize();
-    method @Nullable public android.os.NativeHandle releaseHandle();
-  }
-
-  public class HidlSupport {
-    method public static boolean deepEquals(Object, Object);
-    method public static int deepHashCode(Object);
-    method public static int getPidIfSharable();
-    method public static boolean interfacesEqual(android.os.IHwInterface, Object);
-  }
-
-  public abstract class HwBinder implements android.os.IHwBinder {
-    ctor public HwBinder();
-    method public static final void configureRpcThreadpool(long, boolean);
-    method public static void enableInstrumentation();
-    method public static final android.os.IHwBinder getService(String, String) throws java.util.NoSuchElementException, android.os.RemoteException;
-    method public static final android.os.IHwBinder getService(String, String, boolean) throws java.util.NoSuchElementException, android.os.RemoteException;
-    method public static final void joinRpcThreadpool();
-    method public abstract void onTransact(int, android.os.HwParcel, android.os.HwParcel, int) throws android.os.RemoteException;
-    method public final void registerService(String) throws android.os.RemoteException;
-    method public final void transact(int, android.os.HwParcel, android.os.HwParcel, int) throws android.os.RemoteException;
-  }
-
-  public class HwBlob {
-    ctor public HwBlob(int);
-    method public final void copyToBoolArray(long, boolean[], int);
-    method public final void copyToDoubleArray(long, double[], int);
-    method public final void copyToFloatArray(long, float[], int);
-    method public final void copyToInt16Array(long, short[], int);
-    method public final void copyToInt32Array(long, int[], int);
-    method public final void copyToInt64Array(long, long[], int);
-    method public final void copyToInt8Array(long, byte[], int);
-    method public final boolean getBool(long);
-    method public final double getDouble(long);
-    method public final long getFieldHandle(long);
-    method public final float getFloat(long);
-    method public final short getInt16(long);
-    method public final int getInt32(long);
-    method public final long getInt64(long);
-    method public final byte getInt8(long);
-    method public final String getString(long);
-    method public final long handle();
-    method public final void putBlob(long, android.os.HwBlob);
-    method public final void putBool(long, boolean);
-    method public final void putBoolArray(long, boolean[]);
-    method public final void putDouble(long, double);
-    method public final void putDoubleArray(long, double[]);
-    method public final void putFloat(long, float);
-    method public final void putFloatArray(long, float[]);
-    method public final void putHidlMemory(long, @NonNull android.os.HidlMemory);
-    method public final void putInt16(long, short);
-    method public final void putInt16Array(long, short[]);
-    method public final void putInt32(long, int);
-    method public final void putInt32Array(long, int[]);
-    method public final void putInt64(long, long);
-    method public final void putInt64Array(long, long[]);
-    method public final void putInt8(long, byte);
-    method public final void putInt8Array(long, byte[]);
-    method public final void putNativeHandle(long, @Nullable android.os.NativeHandle);
-    method public final void putString(long, String);
-    method public static Boolean[] wrapArray(@NonNull boolean[]);
-    method public static Long[] wrapArray(@NonNull long[]);
-    method public static Byte[] wrapArray(@NonNull byte[]);
-    method public static Short[] wrapArray(@NonNull short[]);
-    method public static Integer[] wrapArray(@NonNull int[]);
-    method public static Float[] wrapArray(@NonNull float[]);
-    method public static Double[] wrapArray(@NonNull double[]);
-  }
-
-  public class HwParcel {
-    ctor public HwParcel();
-    method public final void enforceInterface(String);
-    method public final boolean readBool();
-    method public final java.util.ArrayList<java.lang.Boolean> readBoolVector();
-    method public final android.os.HwBlob readBuffer(long);
-    method public final double readDouble();
-    method public final java.util.ArrayList<java.lang.Double> readDoubleVector();
-    method public final android.os.HwBlob readEmbeddedBuffer(long, long, long, boolean);
-    method @NonNull @Nullable public final android.os.HidlMemory readEmbeddedHidlMemory(long, long, long);
-    method @Nullable public final android.os.NativeHandle readEmbeddedNativeHandle(long, long);
-    method public final float readFloat();
-    method public final java.util.ArrayList<java.lang.Float> readFloatVector();
-    method @NonNull public final android.os.HidlMemory readHidlMemory();
-    method public final short readInt16();
-    method public final java.util.ArrayList<java.lang.Short> readInt16Vector();
-    method public final int readInt32();
-    method public final java.util.ArrayList<java.lang.Integer> readInt32Vector();
-    method public final long readInt64();
-    method public final java.util.ArrayList<java.lang.Long> readInt64Vector();
-    method public final byte readInt8();
-    method public final java.util.ArrayList<java.lang.Byte> readInt8Vector();
-    method @Nullable public final android.os.NativeHandle readNativeHandle();
-    method @NonNull public final java.util.ArrayList<android.os.NativeHandle> readNativeHandleVector();
-    method public final String readString();
-    method public final java.util.ArrayList<java.lang.String> readStringVector();
-    method public final android.os.IHwBinder readStrongBinder();
-    method public final void release();
-    method public final void releaseTemporaryStorage();
-    method public final void send();
-    method public final void verifySuccess();
-    method public final void writeBool(boolean);
-    method public final void writeBoolVector(java.util.ArrayList<java.lang.Boolean>);
-    method public final void writeBuffer(android.os.HwBlob);
-    method public final void writeDouble(double);
-    method public final void writeDoubleVector(java.util.ArrayList<java.lang.Double>);
-    method public final void writeFloat(float);
-    method public final void writeFloatVector(java.util.ArrayList<java.lang.Float>);
-    method public final void writeHidlMemory(@NonNull android.os.HidlMemory);
-    method public final void writeInt16(short);
-    method public final void writeInt16Vector(java.util.ArrayList<java.lang.Short>);
-    method public final void writeInt32(int);
-    method public final void writeInt32Vector(java.util.ArrayList<java.lang.Integer>);
-    method public final void writeInt64(long);
-    method public final void writeInt64Vector(java.util.ArrayList<java.lang.Long>);
-    method public final void writeInt8(byte);
-    method public final void writeInt8Vector(java.util.ArrayList<java.lang.Byte>);
-    method public final void writeInterfaceToken(String);
-    method public final void writeNativeHandle(@Nullable android.os.NativeHandle);
-    method public final void writeNativeHandleVector(@NonNull java.util.ArrayList<android.os.NativeHandle>);
-    method public final void writeStatus(int);
-    method public final void writeString(String);
-    method public final void writeStringVector(java.util.ArrayList<java.lang.String>);
-    method public final void writeStrongBinder(android.os.IHwBinder);
-    field public static final int STATUS_SUCCESS = 0; // 0x0
-  }
-
-  public interface IHwBinder {
-    method public boolean linkToDeath(android.os.IHwBinder.DeathRecipient, long);
-    method public android.os.IHwInterface queryLocalInterface(String);
-    method public void transact(int, android.os.HwParcel, android.os.HwParcel, int) throws android.os.RemoteException;
-    method public boolean unlinkToDeath(android.os.IHwBinder.DeathRecipient);
-  }
-
-  public static interface IHwBinder.DeathRecipient {
-    method public void serviceDied(long);
-  }
-
-  public interface IHwInterface {
-    method public android.os.IHwBinder asBinder();
-  }
-
-  public class IncidentManager {
-    method @RequiresPermission(android.Manifest.permission.APPROVE_INCIDENT_REPORTS) public void approveReport(android.net.Uri);
-    method @RequiresPermission("android.permission.REQUEST_INCIDENT_REPORT_APPROVAL") public void cancelAuthorization(android.os.IncidentManager.AuthListener);
-    method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void deleteIncidentReports(android.net.Uri);
-    method @RequiresPermission(android.Manifest.permission.APPROVE_INCIDENT_REPORTS) public void denyReport(android.net.Uri);
-    method @Nullable @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public android.os.IncidentManager.IncidentReport getIncidentReport(android.net.Uri);
-    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public java.util.List<android.net.Uri> getIncidentReportList(String);
-    method @RequiresPermission(android.Manifest.permission.APPROVE_INCIDENT_REPORTS) public java.util.List<android.os.IncidentManager.PendingReport> getPendingReports();
-    method public void registerSection(int, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.os.IncidentManager.DumpCallback);
-    method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void reportIncident(android.os.IncidentReportArgs);
-    method @RequiresPermission("android.permission.REQUEST_INCIDENT_REPORT_APPROVAL") public void requestAuthorization(int, String, int, android.os.IncidentManager.AuthListener);
-    method public void unregisterSection(int);
-    field public static final int FLAG_CONFIRMATION_DIALOG = 1; // 0x1
-    field public static final int PRIVACY_POLICY_AUTO = 200; // 0xc8
-    field public static final int PRIVACY_POLICY_EXPLICIT = 100; // 0x64
-    field public static final int PRIVACY_POLICY_LOCAL = 0; // 0x0
-  }
-
-  public static class IncidentManager.AuthListener {
-    ctor public IncidentManager.AuthListener();
-    method public void onReportApproved();
-    method public void onReportDenied();
-  }
-
-  public static class IncidentManager.DumpCallback {
-    ctor public IncidentManager.DumpCallback();
-    method public void onDumpSection(int, @NonNull java.io.OutputStream);
-  }
-
-  public static class IncidentManager.IncidentReport implements java.io.Closeable android.os.Parcelable {
-    ctor public IncidentManager.IncidentReport(android.os.Parcel);
-    method public void close();
-    method public int describeContents();
-    method public java.io.InputStream getInputStream() throws java.io.IOException;
-    method public long getPrivacyPolicy();
-    method public long getTimestamp();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.IncidentManager.IncidentReport> CREATOR;
-  }
-
-  public static class IncidentManager.PendingReport {
-    ctor public IncidentManager.PendingReport(@NonNull android.net.Uri);
-    method public int getFlags();
-    method @NonNull public String getRequestingPackage();
-    method public long getTimestamp();
-    method @NonNull public android.net.Uri getUri();
-  }
-
-  public final class IncidentReportArgs implements android.os.Parcelable {
-    ctor public IncidentReportArgs();
-    ctor public IncidentReportArgs(android.os.Parcel);
-    method public void addHeader(byte[]);
-    method public void addSection(int);
-    method public boolean containsSection(int);
-    method public int describeContents();
-    method public boolean isAll();
-    method public void readFromParcel(android.os.Parcel);
-    method public int sectionCount();
-    method public void setAll(boolean);
-    method public void setPrivacyPolicy(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.IncidentReportArgs> CREATOR;
-  }
-
-  public final class NativeHandle implements java.io.Closeable {
-    ctor public NativeHandle();
-    ctor public NativeHandle(@NonNull java.io.FileDescriptor, boolean);
-    ctor public NativeHandle(@NonNull java.io.FileDescriptor[], @NonNull int[], boolean);
-    method public void close() throws java.io.IOException;
-    method @NonNull public android.os.NativeHandle dup() throws java.io.IOException;
-    method @NonNull public java.io.FileDescriptor getFileDescriptor();
-    method @NonNull public java.io.FileDescriptor[] getFileDescriptors();
-    method @NonNull public int[] getInts();
-    method public boolean hasSingleFileDescriptor();
-  }
-
-  public final class PowerManager {
-    method @RequiresPermission(allOf={android.Manifest.permission.READ_DREAM_STATE, android.Manifest.permission.WRITE_DREAM_STATE}) public void dream(long);
-    method @RequiresPermission(android.Manifest.permission.DEVICE_POWER) public boolean forceSuspend();
-    method @RequiresPermission(android.Manifest.permission.POWER_SAVER) public int getPowerSaveModeTrigger();
-    method @RequiresPermission(android.Manifest.permission.READ_DREAM_STATE) public boolean isAmbientDisplayAvailable();
-    method @RequiresPermission(android.Manifest.permission.READ_DREAM_STATE) public boolean isAmbientDisplaySuppressed();
-    method @RequiresPermission(android.Manifest.permission.READ_DREAM_STATE) public boolean isAmbientDisplaySuppressedForToken(@NonNull String);
-    method @RequiresPermission(anyOf={android.Manifest.permission.DEVICE_POWER, android.Manifest.permission.POWER_SAVER}) public boolean setAdaptivePowerSaveEnabled(boolean);
-    method @RequiresPermission(anyOf={android.Manifest.permission.DEVICE_POWER, android.Manifest.permission.POWER_SAVER}) public boolean setAdaptivePowerSavePolicy(@NonNull android.os.BatterySaverPolicyConfig);
-    method @RequiresPermission(android.Manifest.permission.POWER_SAVER) public boolean setDynamicPowerSaveHint(boolean, int);
-    method @RequiresPermission(anyOf={android.Manifest.permission.DEVICE_POWER, android.Manifest.permission.POWER_SAVER}) public boolean setPowerSaveModeEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.WRITE_DREAM_STATE) public void suppressAmbientDisplay(@NonNull String, boolean);
-    method @RequiresPermission(anyOf={android.Manifest.permission.DEVICE_POWER, android.Manifest.permission.USER_ACTIVITY}) public void userActivity(long, int, int);
-    field public static final int POWER_SAVE_MODE_TRIGGER_DYNAMIC = 1; // 0x1
-    field public static final int POWER_SAVE_MODE_TRIGGER_PERCENTAGE = 0; // 0x0
-    field public static final String REBOOT_USERSPACE = "userspace";
-    field public static final int USER_ACTIVITY_EVENT_ACCESSIBILITY = 3; // 0x3
-    field public static final int USER_ACTIVITY_EVENT_BUTTON = 1; // 0x1
-    field public static final int USER_ACTIVITY_EVENT_OTHER = 0; // 0x0
-    field public static final int USER_ACTIVITY_EVENT_TOUCH = 2; // 0x2
-    field public static final int USER_ACTIVITY_FLAG_INDIRECT = 2; // 0x2
-    field public static final int USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS = 1; // 0x1
-  }
-
-  public class PowerWhitelistManager {
-    method @RequiresPermission(android.Manifest.permission.DEVICE_POWER) public void addToWhitelist(@NonNull String);
-    method @RequiresPermission(android.Manifest.permission.DEVICE_POWER) public void addToWhitelist(@NonNull java.util.List<java.lang.String>);
-    method @RequiresPermission(android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST) public void whitelistAppTemporarily(@NonNull String, long);
-    method @RequiresPermission(android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST) public long whitelistAppTemporarilyForEvent(@NonNull String, int, @NonNull String);
-    field public static final int EVENT_MMS = 2; // 0x2
-    field public static final int EVENT_SMS = 1; // 0x1
-    field public static final int EVENT_UNSPECIFIED = 0; // 0x0
-  }
-
-  public class RecoverySystem {
-    method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void cancelScheduledUpdate(android.content.Context) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void clearPrepareForUnattendedUpdate(@NonNull android.content.Context) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void installPackage(android.content.Context, java.io.File, boolean) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void prepareForUnattendedUpdate(@NonNull android.content.Context, @NonNull String, @Nullable android.content.IntentSender) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void processPackage(android.content.Context, java.io.File, android.os.RecoverySystem.ProgressListener, android.os.Handler) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void processPackage(android.content.Context, java.io.File, android.os.RecoverySystem.ProgressListener) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void rebootAndApply(@NonNull android.content.Context, @NonNull String, @NonNull String) throws java.io.IOException;
-    method @RequiresPermission(allOf={android.Manifest.permission.RECOVERY, android.Manifest.permission.REBOOT}) public static void rebootWipeAb(android.content.Context, java.io.File, String) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void scheduleUpdateOnBoot(android.content.Context, java.io.File) throws java.io.IOException;
-    method public static boolean verifyPackageCompatibility(java.io.File) throws java.io.IOException;
-  }
-
-  public final class RemoteCallback implements android.os.Parcelable {
-    ctor public RemoteCallback(android.os.RemoteCallback.OnResultListener);
-    ctor public RemoteCallback(@NonNull android.os.RemoteCallback.OnResultListener, @Nullable android.os.Handler);
-    method public int describeContents();
-    method public void sendResult(@Nullable android.os.Bundle);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.RemoteCallback> CREATOR;
-  }
-
-  public static interface RemoteCallback.OnResultListener {
-    method public void onResult(@Nullable android.os.Bundle);
-  }
-
-  public class ServiceSpecificException extends java.lang.RuntimeException {
-    ctor public ServiceSpecificException(int, @Nullable String);
-    ctor public ServiceSpecificException(int);
-    field public final int errorCode;
-  }
-
-  public final class StatsDimensionsValue implements android.os.Parcelable {
-    method public int describeContents();
-    method public boolean getBooleanValue();
-    method public int getField();
-    method public float getFloatValue();
-    method public int getIntValue();
-    method public long getLongValue();
-    method public String getStringValue();
-    method public java.util.List<android.os.StatsDimensionsValue> getTupleValueList();
-    method public int getValueType();
-    method public boolean isValueType(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int BOOLEAN_VALUE_TYPE = 5; // 0x5
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.StatsDimensionsValue> CREATOR;
-    field public static final int FLOAT_VALUE_TYPE = 6; // 0x6
-    field public static final int INT_VALUE_TYPE = 3; // 0x3
-    field public static final int LONG_VALUE_TYPE = 4; // 0x4
-    field public static final int STRING_VALUE_TYPE = 2; // 0x2
-    field public static final int TUPLE_VALUE_TYPE = 7; // 0x7
-  }
-
-  public class SystemConfigManager {
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_CARRIER_APP_INFO) public java.util.Set<java.lang.String> getDisabledUntilUsedPreinstalledCarrierApps();
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_CARRIER_APP_INFO) public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getDisabledUntilUsedPreinstalledCarrierAssociatedApps();
-  }
-
-  public class SystemProperties {
-    method @NonNull public static String get(@NonNull String);
-    method @NonNull public static String get(@NonNull String, @Nullable String);
-    method public static boolean getBoolean(@NonNull String, boolean);
-    method public static int getInt(@NonNull String, int);
-    method public static long getLong(@NonNull String, long);
-  }
-
-  public class SystemUpdateManager {
-    method @RequiresPermission(anyOf={android.Manifest.permission.READ_SYSTEM_UPDATE_INFO, android.Manifest.permission.RECOVERY}) public android.os.Bundle retrieveSystemUpdateInfo();
-    method @RequiresPermission(android.Manifest.permission.RECOVERY) public void updateSystemUpdateInfo(android.os.PersistableBundle);
-    field public static final String KEY_IS_SECURITY_UPDATE = "is_security_update";
-    field public static final String KEY_STATUS = "status";
-    field public static final String KEY_TARGET_BUILD_FINGERPRINT = "target_build_fingerprint";
-    field public static final String KEY_TARGET_SECURITY_PATCH_LEVEL = "target_security_patch_level";
-    field public static final String KEY_TITLE = "title";
-    field public static final int STATUS_IDLE = 1; // 0x1
-    field public static final int STATUS_IN_PROGRESS = 3; // 0x3
-    field public static final int STATUS_UNKNOWN = 0; // 0x0
-    field public static final int STATUS_WAITING_DOWNLOAD = 2; // 0x2
-    field public static final int STATUS_WAITING_INSTALL = 4; // 0x4
-    field public static final int STATUS_WAITING_REBOOT = 5; // 0x5
-  }
-
-  public class UpdateEngine {
-    ctor public UpdateEngine();
-    method @NonNull @WorkerThread public android.os.UpdateEngine.AllocateSpaceResult allocateSpace(@NonNull String, @NonNull String[]);
-    method public void applyPayload(String, long, long, String[]);
-    method public void applyPayload(@NonNull android.content.res.AssetFileDescriptor, @NonNull String[]);
-    method public boolean bind(android.os.UpdateEngineCallback, android.os.Handler);
-    method public boolean bind(android.os.UpdateEngineCallback);
-    method public void cancel();
-    method @WorkerThread public int cleanupAppliedPayload();
-    method public void resetStatus();
-    method public void resume();
-    method public void suspend();
-    method public boolean unbind();
-    method public boolean verifyPayloadMetadata(String);
-  }
-
-  public static final class UpdateEngine.AllocateSpaceResult {
-    method public int getErrorCode();
-    method public long getFreeSpaceRequired();
-  }
-
-  public static final class UpdateEngine.ErrorCodeConstants {
-    ctor public UpdateEngine.ErrorCodeConstants();
-    field public static final int DEVICE_CORRUPTED = 61; // 0x3d
-    field public static final int DOWNLOAD_PAYLOAD_VERIFICATION_ERROR = 12; // 0xc
-    field public static final int DOWNLOAD_TRANSFER_ERROR = 9; // 0x9
-    field public static final int ERROR = 1; // 0x1
-    field public static final int FILESYSTEM_COPIER_ERROR = 4; // 0x4
-    field public static final int INSTALL_DEVICE_OPEN_ERROR = 7; // 0x7
-    field public static final int KERNEL_DEVICE_OPEN_ERROR = 8; // 0x8
-    field public static final int NOT_ENOUGH_SPACE = 60; // 0x3c
-    field public static final int PAYLOAD_HASH_MISMATCH_ERROR = 10; // 0xa
-    field public static final int PAYLOAD_MISMATCHED_TYPE_ERROR = 6; // 0x6
-    field public static final int PAYLOAD_SIZE_MISMATCH_ERROR = 11; // 0xb
-    field public static final int PAYLOAD_TIMESTAMP_ERROR = 51; // 0x33
-    field public static final int POST_INSTALL_RUNNER_ERROR = 5; // 0x5
-    field public static final int SUCCESS = 0; // 0x0
-    field public static final int UPDATED_BUT_NOT_ACTIVE = 52; // 0x34
-  }
-
-  public static final class UpdateEngine.UpdateStatusConstants {
-    ctor public UpdateEngine.UpdateStatusConstants();
-    field public static final int ATTEMPTING_ROLLBACK = 8; // 0x8
-    field public static final int CHECKING_FOR_UPDATE = 1; // 0x1
-    field public static final int DISABLED = 9; // 0x9
-    field public static final int DOWNLOADING = 3; // 0x3
-    field public static final int FINALIZING = 5; // 0x5
-    field public static final int IDLE = 0; // 0x0
-    field public static final int REPORTING_ERROR_EVENT = 7; // 0x7
-    field public static final int UPDATED_NEED_REBOOT = 6; // 0x6
-    field public static final int UPDATE_AVAILABLE = 2; // 0x2
-    field public static final int VERIFYING = 4; // 0x4
-  }
-
-  public abstract class UpdateEngineCallback {
-    ctor public UpdateEngineCallback();
-    method public abstract void onPayloadApplicationComplete(int);
-    method public abstract void onStatusUpdate(int, float);
-  }
-
-  public final class UserHandle implements android.os.Parcelable {
-    method @NonNull public static String formatUid(int);
-    method public static int getAppId(int);
-    method public int getIdentifier();
-    method @Deprecated public boolean isOwner();
-    method public boolean isSystem();
-    method public static int myUserId();
-    method public static android.os.UserHandle of(int);
-    field @NonNull public static final android.os.UserHandle ALL;
-    field @NonNull public static final android.os.UserHandle CURRENT;
-    field @NonNull public static final android.os.UserHandle SYSTEM;
-  }
-
-  public class UserManager {
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public void clearSeedAccountData();
-    method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}) public android.os.UserHandle createProfile(@NonNull String, @NonNull String, @NonNull java.util.Set<java.lang.String>) throws android.os.UserManager.UserOperationException;
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}, conditional=true) public java.util.List<android.os.UserHandle> getAllProfiles();
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}, conditional=true) public java.util.List<android.os.UserHandle> getEnabledProfiles();
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public android.os.UserHandle getProfileParent(@NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public String getSeedAccountName();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public android.os.PersistableBundle getSeedAccountOptions();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public String getSeedAccountType();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public long[] getSerialNumbersOfUsers(boolean);
-    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public java.util.List<android.os.UserHandle> getUserHandles(boolean);
-    method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.GET_ACCOUNTS_PRIVILEGED}) public android.graphics.Bitmap getUserIcon();
-    method @Deprecated @android.os.UserManager.UserRestrictionSource @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public int getUserRestrictionSource(String, android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public java.util.List<android.os.UserManager.EnforcingUser> getUserRestrictionSources(String, android.os.UserHandle);
-    method @RequiresPermission(allOf={android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS}, conditional=true) public int getUserSwitchability();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean hasRestrictedProfiles();
-    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS}, conditional=true) public boolean hasUserRestrictionForUser(@NonNull String, @NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isAdminUser();
-    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}) public boolean isGuestUser();
-    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS}, conditional=true) public boolean isManagedProfile(int);
-    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}) public boolean isPrimaryUser();
-    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS}, conditional=true) public boolean isProfile();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isRestrictedProfile();
-    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}) public boolean isRestrictedProfile(@NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isSameProfileGroup(@NonNull android.os.UserHandle, @NonNull android.os.UserHandle);
-    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.GET_ACCOUNTS_PRIVILEGED}) public boolean isUserNameSet();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isUserOfType(@NonNull String);
-    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS}, conditional=true) public boolean isUserUnlockingOrUnlocked(@NonNull android.os.UserHandle);
-    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}) public boolean removeUser(@NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public void setUserIcon(@NonNull android.graphics.Bitmap) throws android.os.UserManager.UserOperationException;
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public void setUserName(@Nullable String);
-    field public static final String ACTION_USER_RESTRICTIONS_CHANGED = "android.os.action.USER_RESTRICTIONS_CHANGED";
-    field @Deprecated public static final String DISALLOW_OEM_UNLOCK = "no_oem_unlock";
-    field public static final String DISALLOW_RUN_IN_BACKGROUND = "no_run_in_background";
-    field public static final int RESTRICTION_NOT_SET = 0; // 0x0
-    field public static final int RESTRICTION_SOURCE_DEVICE_OWNER = 2; // 0x2
-    field public static final int RESTRICTION_SOURCE_PROFILE_OWNER = 4; // 0x4
-    field public static final int RESTRICTION_SOURCE_SYSTEM = 1; // 0x1
-    field public static final int SWITCHABILITY_STATUS_OK = 0; // 0x0
-    field public static final int SWITCHABILITY_STATUS_SYSTEM_USER_LOCKED = 4; // 0x4
-    field public static final int SWITCHABILITY_STATUS_USER_IN_CALL = 1; // 0x1
-    field public static final int SWITCHABILITY_STATUS_USER_SWITCH_DISALLOWED = 2; // 0x2
-    field public static final String USER_TYPE_FULL_SECONDARY = "android.os.usertype.full.SECONDARY";
-    field public static final String USER_TYPE_FULL_SYSTEM = "android.os.usertype.full.SYSTEM";
-    field public static final String USER_TYPE_PROFILE_MANAGED = "android.os.usertype.profile.MANAGED";
-    field public static final String USER_TYPE_SYSTEM_HEADLESS = "android.os.usertype.system.HEADLESS";
-  }
-
-  public static final class UserManager.EnforcingUser implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.os.UserHandle getUserHandle();
-    method @android.os.UserManager.UserRestrictionSource public int getUserRestrictionSource();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.UserManager.EnforcingUser> CREATOR;
-  }
-
-  @IntDef(flag=true, prefix={"RESTRICTION_"}, value={android.os.UserManager.RESTRICTION_NOT_SET, android.os.UserManager.RESTRICTION_SOURCE_SYSTEM, android.os.UserManager.RESTRICTION_SOURCE_DEVICE_OWNER, android.os.UserManager.RESTRICTION_SOURCE_PROFILE_OWNER}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface UserManager.UserRestrictionSource {
-  }
-
-  public abstract class Vibrator {
-    method @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE) public void addVibratorStateListener(@NonNull android.os.Vibrator.OnVibratorStateChangedListener);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE) public void addVibratorStateListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.Vibrator.OnVibratorStateChangedListener);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE) public boolean isVibrating();
-    method @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE) public void removeVibratorStateListener(@NonNull android.os.Vibrator.OnVibratorStateChangedListener);
-  }
-
-  public static interface Vibrator.OnVibratorStateChangedListener {
-    method public void onVibratorStateChanged(boolean);
-  }
-
-  public class WorkSource implements android.os.Parcelable {
-    ctor public WorkSource(int);
-    ctor public WorkSource(int, @NonNull String);
-    method public android.os.WorkSource.WorkChain createWorkChain();
-    method @Nullable public String getPackageName(int);
-    method public int getUid(int);
-    method @Nullable public java.util.List<android.os.WorkSource.WorkChain> getWorkChains();
-    method public boolean isEmpty();
-    method public int size();
-    method @NonNull public android.os.WorkSource withoutNames();
-  }
-
-  public static final class WorkSource.WorkChain implements android.os.Parcelable {
-    ctor public WorkSource.WorkChain();
-    method public android.os.WorkSource.WorkChain addNode(int, @Nullable String);
-    method public int describeContents();
-    method public String getAttributionTag();
-    method public int getAttributionUid();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.WorkSource.WorkChain> CREATOR;
-  }
-
-}
-
-package android.os.connectivity {
-
-  public final class CellularBatteryStats implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getEnergyConsumedMaMillis();
-    method public long getIdleTimeMillis();
-    method public long getKernelActiveTimeMillis();
-    method public long getLoggingDurationMillis();
-    method public long getMonitoredRailChargeConsumedMaMillis();
-    method public long getNumBytesRx();
-    method public long getNumBytesTx();
-    method public long getNumPacketsRx();
-    method public long getNumPacketsTx();
-    method public long getRxTimeMillis();
-    method public long getSleepTimeMillis();
-    method @NonNull public long getTimeInRatMicros(int);
-    method @NonNull public long getTimeInRxSignalStrengthLevelMicros(@IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) int);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.connectivity.CellularBatteryStats> CREATOR;
-  }
-
-  public final class WifiActivityEnergyInfo implements android.os.Parcelable {
-    ctor public WifiActivityEnergyInfo(long, int, @IntRange(from=0) long, @IntRange(from=0) long, @IntRange(from=0) long, @IntRange(from=0) long);
-    method public int describeContents();
-    method @IntRange(from=0) public long getControllerEnergyUsedMicroJoules();
-    method @IntRange(from=0) public long getControllerIdleDurationMillis();
-    method @IntRange(from=0) public long getControllerRxDurationMillis();
-    method @IntRange(from=0) public long getControllerScanDurationMillis();
-    method @IntRange(from=0) public long getControllerTxDurationMillis();
-    method public int getStackState();
-    method public long getTimeSinceBootMillis();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.connectivity.WifiActivityEnergyInfo> CREATOR;
-    field public static final int STACK_STATE_INVALID = 0; // 0x0
-    field public static final int STACK_STATE_STATE_ACTIVE = 1; // 0x1
-    field public static final int STACK_STATE_STATE_IDLE = 3; // 0x3
-    field public static final int STACK_STATE_STATE_SCANNING = 2; // 0x2
-  }
-
-  public final class WifiBatteryStats implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getAppScanRequestCount();
-    method public long getEnergyConsumedMaMillis();
-    method public long getIdleTimeMillis();
-    method public long getKernelActiveTimeMillis();
-    method public long getLoggingDurationMillis();
-    method public long getMonitoredRailChargeConsumedMaMillis();
-    method public long getNumBytesRx();
-    method public long getNumBytesTx();
-    method public long getNumPacketsRx();
-    method public long getNumPacketsTx();
-    method public long getRxTimeMillis();
-    method public long getScanTimeMillis();
-    method public long getSleepTimeMillis();
-    method public long getTxTimeMillis();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.connectivity.WifiBatteryStats> CREATOR;
-  }
-
-}
-
-package android.os.ext {
-
-  public class SdkExtensions {
-    method public static int getExtensionVersion(int);
-  }
-
-}
-
-package android.os.image {
-
-  public class DynamicSystemClient {
-    ctor public DynamicSystemClient(@NonNull android.content.Context);
-    method @RequiresPermission(android.Manifest.permission.INSTALL_DYNAMIC_SYSTEM) public void bind();
-    method public void setOnStatusChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.image.DynamicSystemClient.OnStatusChangedListener);
-    method public void setOnStatusChangedListener(@NonNull android.os.image.DynamicSystemClient.OnStatusChangedListener);
-    method @RequiresPermission(android.Manifest.permission.INSTALL_DYNAMIC_SYSTEM) public void start(@NonNull android.net.Uri, long);
-    method @RequiresPermission(android.Manifest.permission.INSTALL_DYNAMIC_SYSTEM) public void start(@NonNull android.net.Uri, long, long);
-    method @RequiresPermission(android.Manifest.permission.INSTALL_DYNAMIC_SYSTEM) public void unbind();
-    field public static final int CAUSE_ERROR_EXCEPTION = 6; // 0x6
-    field public static final int CAUSE_ERROR_INVALID_URL = 4; // 0x4
-    field public static final int CAUSE_ERROR_IO = 3; // 0x3
-    field public static final int CAUSE_ERROR_IPC = 5; // 0x5
-    field public static final int CAUSE_INSTALL_CANCELLED = 2; // 0x2
-    field public static final int CAUSE_INSTALL_COMPLETED = 1; // 0x1
-    field public static final int CAUSE_NOT_SPECIFIED = 0; // 0x0
-    field public static final int STATUS_IN_PROGRESS = 2; // 0x2
-    field public static final int STATUS_IN_USE = 4; // 0x4
-    field public static final int STATUS_NOT_STARTED = 1; // 0x1
-    field public static final int STATUS_READY = 3; // 0x3
-    field public static final int STATUS_UNKNOWN = 0; // 0x0
-  }
-
-  public static interface DynamicSystemClient.OnStatusChangedListener {
-    method public void onStatusChanged(int, int, long, @Nullable Throwable);
-  }
-
-}
-
-package android.os.storage {
-
-  public class StorageManager {
-    method @WorkerThread public void allocateBytes(@NonNull java.util.UUID, long, @RequiresPermission int) throws java.io.IOException;
-    method @WorkerThread public void allocateBytes(java.io.FileDescriptor, long, @RequiresPermission int) throws java.io.IOException;
-    method @WorkerThread public long getAllocatableBytes(@NonNull java.util.UUID, @RequiresPermission int) throws java.io.IOException;
-    method public static boolean hasIsolatedStorage();
-    method public void updateExternalStorageFileQuotaType(@NonNull java.io.File, int) throws java.io.IOException;
-    field @RequiresPermission(android.Manifest.permission.ALLOCATE_AGGRESSIVE) public static final int FLAG_ALLOCATE_AGGRESSIVE = 1; // 0x1
-    field public static final int QUOTA_TYPE_MEDIA_AUDIO = 2; // 0x2
-    field public static final int QUOTA_TYPE_MEDIA_IMAGE = 1; // 0x1
-    field public static final int QUOTA_TYPE_MEDIA_NONE = 0; // 0x0
-    field public static final int QUOTA_TYPE_MEDIA_VIDEO = 3; // 0x3
-  }
-
-  public final class StorageVolume implements android.os.Parcelable {
-    method @NonNull public String getId();
-  }
-
-}
-
-package android.permission {
-
-  public final class PermissionControllerManager {
-    method @RequiresPermission(anyOf={android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS, android.Manifest.permission.RESTORE_RUNTIME_PERMISSIONS}) public void applyStagedRuntimePermissionBackup(@NonNull String, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @RequiresPermission(android.Manifest.permission.GET_RUNTIME_PERMISSIONS) public void getRuntimePermissionBackup(@NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<byte[]>);
-    method @RequiresPermission(android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS) public void revokeRuntimePermissions(@NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>, boolean, int, @NonNull java.util.concurrent.Executor, @NonNull android.permission.PermissionControllerManager.OnRevokeRuntimePermissionsCallback);
-    method @RequiresPermission(anyOf={android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS, android.Manifest.permission.RESTORE_RUNTIME_PERMISSIONS}) public void stageAndApplyRuntimePermissionsBackup(@NonNull byte[], @NonNull android.os.UserHandle);
-    field public static final int COUNT_ONLY_WHEN_GRANTED = 1; // 0x1
-    field public static final int COUNT_WHEN_SYSTEM = 2; // 0x2
-    field public static final int REASON_INSTALLER_POLICY_VIOLATION = 2; // 0x2
-    field public static final int REASON_MALWARE = 1; // 0x1
-  }
-
-  public abstract static class PermissionControllerManager.OnRevokeRuntimePermissionsCallback {
-    ctor public PermissionControllerManager.OnRevokeRuntimePermissionsCallback();
-    method public abstract void onRevokeRuntimePermissions(@NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>);
-  }
-
-  public abstract class PermissionControllerService extends android.app.Service {
-    ctor public PermissionControllerService();
-    method @BinderThread public void onApplyStagedRuntimePermissionBackup(@NonNull String, @NonNull android.os.UserHandle, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @NonNull public final android.os.IBinder onBind(android.content.Intent);
-    method @BinderThread public abstract void onCountPermissionApps(@NonNull java.util.List<java.lang.String>, int, @NonNull java.util.function.IntConsumer);
-    method @BinderThread public abstract void onGetAppPermissions(@NonNull String, @NonNull java.util.function.Consumer<java.util.List<android.permission.RuntimePermissionPresentationInfo>>);
-    method @BinderThread public abstract void onGetPermissionUsages(boolean, long, @NonNull java.util.function.Consumer<java.util.List<android.permission.RuntimePermissionUsageInfo>>);
-    method @BinderThread public abstract void onGetRuntimePermissionsBackup(@NonNull android.os.UserHandle, @NonNull java.io.OutputStream, @NonNull Runnable);
-    method @BinderThread public abstract void onGrantOrUpgradeDefaultRuntimePermissions(@NonNull Runnable);
-    method @BinderThread public void onOneTimePermissionSessionTimeout(@NonNull String);
-    method @Deprecated @BinderThread public void onRestoreDelayedRuntimePermissionsBackup(@NonNull String, @NonNull android.os.UserHandle, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @Deprecated @BinderThread public void onRestoreRuntimePermissionsBackup(@NonNull android.os.UserHandle, @NonNull java.io.InputStream, @NonNull Runnable);
-    method @BinderThread public abstract void onRevokeRuntimePermission(@NonNull String, @NonNull String, @NonNull Runnable);
-    method @BinderThread public abstract void onRevokeRuntimePermissions(@NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>, boolean, int, @NonNull String, @NonNull java.util.function.Consumer<java.util.Map<java.lang.String,java.util.List<java.lang.String>>>);
-    method @BinderThread public abstract void onSetRuntimePermissionGrantStateByDeviceAdmin(@NonNull String, @NonNull String, @NonNull String, int, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @BinderThread public void onStageAndApplyRuntimePermissionsBackup(@NonNull android.os.UserHandle, @NonNull java.io.InputStream, @NonNull Runnable);
-    method @BinderThread public void onUpdateUserSensitivePermissionFlags(int, @NonNull java.util.concurrent.Executor, @NonNull Runnable);
-    method @BinderThread public void onUpdateUserSensitivePermissionFlags(int, @NonNull Runnable);
-    field public static final String SERVICE_INTERFACE = "android.permission.PermissionControllerService";
-  }
-
-  public final class PermissionManager {
-    method public int checkDeviceIdentifierAccess(@Nullable String, @Nullable String, @Nullable String, int, int);
-    method @NonNull @RequiresPermission(android.Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY) public java.util.Set<java.lang.String> getAutoRevokeExemptionGrantedPackages();
-    method @NonNull @RequiresPermission(android.Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY) public java.util.Set<java.lang.String> getAutoRevokeExemptionRequestedPackages();
-    method @IntRange(from=0) @RequiresPermission(anyOf={android.Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY, android.Manifest.permission.UPGRADE_RUNTIME_PERMISSIONS}) public int getRuntimePermissionsVersion();
-    method @NonNull public java.util.List<android.permission.PermissionManager.SplitPermissionInfo> getSplitPermissions();
-    method @RequiresPermission(anyOf={android.Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY, android.Manifest.permission.UPGRADE_RUNTIME_PERMISSIONS}) public void setRuntimePermissionsVersion(@IntRange(from=0) int);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS) public void startOneTimePermissionSession(@NonNull String, long, int, int);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS) public void stopOneTimePermissionSession(@NonNull String);
-  }
-
-  public static final class PermissionManager.SplitPermissionInfo {
-    method @NonNull public java.util.List<java.lang.String> getNewPermissions();
-    method @NonNull public String getSplitPermission();
-    method public int getTargetSdk();
-  }
-
-  public final class RuntimePermissionPresentationInfo implements android.os.Parcelable {
-    ctor public RuntimePermissionPresentationInfo(@NonNull CharSequence, boolean, boolean);
-    method public int describeContents();
-    method @NonNull public CharSequence getLabel();
-    method public boolean isGranted();
-    method public boolean isStandard();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.permission.RuntimePermissionPresentationInfo> CREATOR;
-  }
-
-  public final class RuntimePermissionUsageInfo implements android.os.Parcelable {
-    ctor public RuntimePermissionUsageInfo(@NonNull String, int);
-    method public int describeContents();
-    method public int getAppAccessCount();
-    method @NonNull public String getName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.permission.RuntimePermissionUsageInfo> CREATOR;
-  }
-
-}
-
-package android.permissionpresenterservice {
-
-  @Deprecated public abstract class RuntimePermissionPresenterService extends android.app.Service {
-    ctor @Deprecated public RuntimePermissionPresenterService();
-    method @Deprecated public final void attachBaseContext(android.content.Context);
-    method @Deprecated public final android.os.IBinder onBind(android.content.Intent);
-    method @Deprecated public abstract java.util.List<android.content.pm.permission.RuntimePermissionPresentationInfo> onGetAppPermissions(@NonNull String);
-    field @Deprecated public static final String SERVICE_INTERFACE = "android.permissionpresenterservice.RuntimePermissionPresenterService";
-  }
-
-}
-
-package android.preference {
-
-  @Deprecated public class PreferenceManager {
-    method @Deprecated public boolean isStorageCredentialProtected();
-    method @Deprecated public void setStorageCredentialProtected();
-  }
-
-}
-
-package android.print {
-
-  public final class PrintManager {
-    method @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICE_RECOMMENDATIONS) public void addPrintServiceRecommendationsChangeListener(@NonNull android.print.PrintManager.PrintServiceRecommendationsChangeListener, @Nullable android.os.Handler);
-    method @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICES) public void addPrintServicesChangeListener(@NonNull android.print.PrintManager.PrintServicesChangeListener, @Nullable android.os.Handler);
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICE_RECOMMENDATIONS) public java.util.List<android.printservice.recommendation.RecommendationInfo> getPrintServiceRecommendations();
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICES) public java.util.List<android.printservice.PrintServiceInfo> getPrintServices(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICE_RECOMMENDATIONS) public void removePrintServiceRecommendationsChangeListener(@NonNull android.print.PrintManager.PrintServiceRecommendationsChangeListener);
-    method @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICES) public void removePrintServicesChangeListener(@NonNull android.print.PrintManager.PrintServicesChangeListener);
-    field public static final int ENABLED_SERVICES = 1; // 0x1
-  }
-
-  public static interface PrintManager.PrintServiceRecommendationsChangeListener {
-    method public void onPrintServiceRecommendationsChanged();
-  }
-
-  public static interface PrintManager.PrintServicesChangeListener {
-    method public void onPrintServicesChanged();
-  }
-
-}
-
-package android.printservice {
-
-  public final class PrintServiceInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.content.ComponentName getComponentName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.printservice.PrintServiceInfo> CREATOR;
-  }
-
-}
-
-package android.printservice.recommendation {
-
-  public final class RecommendationInfo implements android.os.Parcelable {
-    ctor public RecommendationInfo(@NonNull CharSequence, @NonNull CharSequence, @NonNull java.util.List<java.net.InetAddress>, boolean);
-    ctor @Deprecated public RecommendationInfo(@NonNull CharSequence, @NonNull CharSequence, @IntRange(from=0) int, boolean);
-    method public int describeContents();
-    method @NonNull public java.util.List<java.net.InetAddress> getDiscoveredPrinters();
-    method public CharSequence getName();
-    method public int getNumDiscoveredPrinters();
-    method public CharSequence getPackageName();
-    method public boolean recommendsMultiVendorService();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.printservice.recommendation.RecommendationInfo> CREATOR;
-  }
-
-  public abstract class RecommendationService extends android.app.Service {
-    ctor public RecommendationService();
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method public abstract void onConnected();
-    method public abstract void onDisconnected();
-    method public final void updateRecommendations(@Nullable java.util.List<android.printservice.recommendation.RecommendationInfo>);
-    field public static final String SERVICE_INTERFACE = "android.printservice.recommendation.RecommendationService";
-  }
-
-}
-
-package android.provider {
-
-  @Deprecated public static final class ContactsContract.MetadataSync implements android.provider.BaseColumns android.provider.ContactsContract.MetadataSyncColumns {
-    field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_metadata";
-    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact_metadata";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String METADATA_AUTHORITY = "com.android.contacts.metadata";
-    field @Deprecated public static final android.net.Uri METADATA_AUTHORITY_URI;
-  }
-
-  @Deprecated protected static interface ContactsContract.MetadataSyncColumns {
-    field @Deprecated public static final String ACCOUNT_NAME = "account_name";
-    field @Deprecated public static final String ACCOUNT_TYPE = "account_type";
-    field @Deprecated public static final String DATA = "data";
-    field @Deprecated public static final String DATA_SET = "data_set";
-    field @Deprecated public static final String DELETED = "deleted";
-    field @Deprecated public static final String RAW_CONTACT_BACKUP_ID = "raw_contact_backup_id";
-  }
-
-  @Deprecated public static final class ContactsContract.MetadataSyncState implements android.provider.BaseColumns android.provider.ContactsContract.MetadataSyncStateColumns {
-    field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_metadata_sync_state";
-    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact_metadata_sync_state";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-  }
-
-  @Deprecated protected static interface ContactsContract.MetadataSyncStateColumns {
-    field @Deprecated public static final String ACCOUNT_NAME = "account_name";
-    field @Deprecated public static final String ACCOUNT_TYPE = "account_type";
-    field @Deprecated public static final String DATA_SET = "data_set";
-    field @Deprecated public static final String STATE = "state";
-  }
-
-  public final class DeviceConfig {
-    method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static void addOnPropertiesChangedListener(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.provider.DeviceConfig.OnPropertiesChangedListener);
-    method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static boolean getBoolean(@NonNull String, @NonNull String, boolean);
-    method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static float getFloat(@NonNull String, @NonNull String, float);
-    method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static int getInt(@NonNull String, @NonNull String, int);
-    method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static long getLong(@NonNull String, @NonNull String, long);
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static android.provider.DeviceConfig.Properties getProperties(@NonNull String, @NonNull java.lang.String...);
-    method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static String getProperty(@NonNull String, @NonNull String);
-    method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static String getString(@NonNull String, @NonNull String, @Nullable String);
-    method public static void removeOnPropertiesChangedListener(@NonNull android.provider.DeviceConfig.OnPropertiesChangedListener);
-    method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static void resetToDefaults(int, @Nullable String);
-    method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static boolean setProperties(@NonNull android.provider.DeviceConfig.Properties) throws android.provider.DeviceConfig.BadConfigException;
-    method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static boolean setProperty(@NonNull String, @NonNull String, @Nullable String, boolean);
-    field public static final String NAMESPACE_ACTIVITY_MANAGER = "activity_manager";
-    field public static final String NAMESPACE_ACTIVITY_MANAGER_NATIVE_BOOT = "activity_manager_native_boot";
-    field public static final String NAMESPACE_APP_COMPAT = "app_compat";
-    field public static final String NAMESPACE_ATTENTION_MANAGER_SERVICE = "attention_manager_service";
-    field public static final String NAMESPACE_AUTOFILL = "autofill";
-    field public static final String NAMESPACE_BIOMETRICS = "biometrics";
-    field public static final String NAMESPACE_BLOBSTORE = "blobstore";
-    field public static final String NAMESPACE_BLUETOOTH = "bluetooth";
-    field public static final String NAMESPACE_CONNECTIVITY = "connectivity";
-    field public static final String NAMESPACE_CONTENT_CAPTURE = "content_capture";
-    field @Deprecated public static final String NAMESPACE_DEX_BOOT = "dex_boot";
-    field public static final String NAMESPACE_DISPLAY_MANAGER = "display_manager";
-    field public static final String NAMESPACE_GAME_DRIVER = "game_driver";
-    field public static final String NAMESPACE_INPUT_NATIVE_BOOT = "input_native_boot";
-    field public static final String NAMESPACE_INTELLIGENCE_ATTENTION = "intelligence_attention";
-    field public static final String NAMESPACE_MEDIA_NATIVE = "media_native";
-    field public static final String NAMESPACE_NETD_NATIVE = "netd_native";
-    field public static final String NAMESPACE_PACKAGE_MANAGER_SERVICE = "package_manager_service";
-    field public static final String NAMESPACE_PERMISSIONS = "permissions";
-    field public static final String NAMESPACE_PRIVACY = "privacy";
-    field public static final String NAMESPACE_ROLLBACK = "rollback";
-    field public static final String NAMESPACE_ROLLBACK_BOOT = "rollback_boot";
-    field public static final String NAMESPACE_RUNTIME = "runtime";
-    field public static final String NAMESPACE_RUNTIME_NATIVE = "runtime_native";
-    field public static final String NAMESPACE_RUNTIME_NATIVE_BOOT = "runtime_native_boot";
-    field public static final String NAMESPACE_SCHEDULER = "scheduler";
-    field @Deprecated public static final String NAMESPACE_STORAGE = "storage";
-    field public static final String NAMESPACE_STORAGE_NATIVE_BOOT = "storage_native_boot";
-    field public static final String NAMESPACE_SYSTEMUI = "systemui";
-    field public static final String NAMESPACE_TELEPHONY = "telephony";
-    field public static final String NAMESPACE_TEXTCLASSIFIER = "textclassifier";
-    field public static final String NAMESPACE_WINDOW_MANAGER_NATIVE_BOOT = "window_manager_native_boot";
-  }
-
-  public static class DeviceConfig.BadConfigException extends java.lang.Exception {
-    ctor public DeviceConfig.BadConfigException();
-  }
-
-  public static interface DeviceConfig.OnPropertiesChangedListener {
-    method public void onPropertiesChanged(@NonNull android.provider.DeviceConfig.Properties);
-  }
-
-  public static class DeviceConfig.Properties {
-    method public boolean getBoolean(@NonNull String, boolean);
-    method public float getFloat(@NonNull String, float);
-    method public int getInt(@NonNull String, int);
-    method @NonNull public java.util.Set<java.lang.String> getKeyset();
-    method public long getLong(@NonNull String, long);
-    method @NonNull public String getNamespace();
-    method @Nullable public String getString(@NonNull String, @Nullable String);
-  }
-
-  public static final class DeviceConfig.Properties.Builder {
-    ctor public DeviceConfig.Properties.Builder(@NonNull String);
-    method @NonNull public android.provider.DeviceConfig.Properties build();
-    method @NonNull public android.provider.DeviceConfig.Properties.Builder setBoolean(@NonNull String, boolean);
-    method @NonNull public android.provider.DeviceConfig.Properties.Builder setFloat(@NonNull String, float);
-    method @NonNull public android.provider.DeviceConfig.Properties.Builder setInt(@NonNull String, int);
-    method @NonNull public android.provider.DeviceConfig.Properties.Builder setLong(@NonNull String, long);
-    method @NonNull public android.provider.DeviceConfig.Properties.Builder setString(@NonNull String, @Nullable String);
-  }
-
-  public final class DocumentsContract {
-    method @NonNull public static android.net.Uri buildDocumentUriAsUser(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
-    method public static boolean isManageMode(@NonNull android.net.Uri);
-    method @NonNull public static android.net.Uri setManageMode(@NonNull android.net.Uri);
-    field public static final String ACTION_DOCUMENT_ROOT_SETTINGS = "android.provider.action.DOCUMENT_ROOT_SETTINGS";
-    field public static final String ACTION_MANAGE_DOCUMENT = "android.provider.action.MANAGE_DOCUMENT";
-    field public static final String EXTRA_SHOW_ADVANCED = "android.provider.extra.SHOW_ADVANCED";
-  }
-
-  public static final class DocumentsContract.Root {
-    field public static final int FLAG_ADVANCED = 65536; // 0x10000
-    field public static final int FLAG_HAS_SETTINGS = 131072; // 0x20000
-    field public static final int FLAG_REMOVABLE_SD = 262144; // 0x40000
-    field public static final int FLAG_REMOVABLE_USB = 524288; // 0x80000
-  }
-
-  public final class MediaStore {
-    method @NonNull public static android.net.Uri rewriteToLegacy(@NonNull android.net.Uri);
-    method @NonNull @WorkerThread public static android.net.Uri scanFile(@NonNull android.content.ContentResolver, @NonNull java.io.File);
-    method @WorkerThread public static void scanVolume(@NonNull android.content.ContentResolver, @NonNull String);
-    method @WorkerThread public static void waitForIdle(@NonNull android.content.ContentResolver);
-    field public static final String AUTHORITY_LEGACY = "media_legacy";
-    field @NonNull public static final android.net.Uri AUTHORITY_LEGACY_URI;
-  }
-
-  public abstract class SearchIndexableData {
-    ctor public SearchIndexableData();
-    ctor public SearchIndexableData(android.content.Context);
-    field public String className;
-    field public android.content.Context context;
-    field public boolean enabled;
-    field public int iconResId;
-    field public String intentAction;
-    field public String intentTargetClass;
-    field public String intentTargetPackage;
-    field public String key;
-    field public java.util.Locale locale;
-    field public String packageName;
-    field public int rank;
-    field public int userId;
-  }
-
-  public class SearchIndexableResource extends android.provider.SearchIndexableData {
-    ctor public SearchIndexableResource(int, int, String, int);
-    ctor public SearchIndexableResource(android.content.Context);
-    field public int xmlResId;
-  }
-
-  public class SearchIndexablesContract {
-    ctor public SearchIndexablesContract();
-    field public static final int COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE = 0; // 0x0
-    field public static final int COLUMN_INDEX_RAW_CLASS_NAME = 7; // 0x7
-    field public static final int COLUMN_INDEX_RAW_ENTRIES = 4; // 0x4
-    field public static final int COLUMN_INDEX_RAW_ICON_RESID = 8; // 0x8
-    field public static final int COLUMN_INDEX_RAW_INTENT_ACTION = 9; // 0x9
-    field public static final int COLUMN_INDEX_RAW_INTENT_TARGET_CLASS = 11; // 0xb
-    field public static final int COLUMN_INDEX_RAW_INTENT_TARGET_PACKAGE = 10; // 0xa
-    field public static final int COLUMN_INDEX_RAW_KEY = 12; // 0xc
-    field public static final int COLUMN_INDEX_RAW_KEYWORDS = 5; // 0x5
-    field public static final int COLUMN_INDEX_RAW_RANK = 0; // 0x0
-    field public static final int COLUMN_INDEX_RAW_SCREEN_TITLE = 6; // 0x6
-    field public static final int COLUMN_INDEX_RAW_SUMMARY_OFF = 3; // 0x3
-    field public static final int COLUMN_INDEX_RAW_SUMMARY_ON = 2; // 0x2
-    field public static final int COLUMN_INDEX_RAW_TITLE = 1; // 0x1
-    field public static final int COLUMN_INDEX_RAW_USER_ID = 13; // 0xd
-    field public static final int COLUMN_INDEX_XML_RES_CLASS_NAME = 2; // 0x2
-    field public static final int COLUMN_INDEX_XML_RES_ICON_RESID = 3; // 0x3
-    field public static final int COLUMN_INDEX_XML_RES_INTENT_ACTION = 4; // 0x4
-    field public static final int COLUMN_INDEX_XML_RES_INTENT_TARGET_CLASS = 6; // 0x6
-    field public static final int COLUMN_INDEX_XML_RES_INTENT_TARGET_PACKAGE = 5; // 0x5
-    field public static final int COLUMN_INDEX_XML_RES_RANK = 0; // 0x0
-    field public static final int COLUMN_INDEX_XML_RES_RESID = 1; // 0x1
-    field public static final String DYNAMIC_INDEXABLES_RAW = "dynamic_indexables_raw";
-    field public static final String DYNAMIC_INDEXABLES_RAW_PATH = "settings/dynamic_indexables_raw";
-    field public static final String INDEXABLES_RAW = "indexables_raw";
-    field public static final String[] INDEXABLES_RAW_COLUMNS;
-    field public static final String INDEXABLES_RAW_PATH = "settings/indexables_raw";
-    field public static final String INDEXABLES_XML_RES = "indexables_xml_res";
-    field public static final String[] INDEXABLES_XML_RES_COLUMNS;
-    field public static final String INDEXABLES_XML_RES_PATH = "settings/indexables_xml_res";
-    field public static final String NON_INDEXABLES_KEYS = "non_indexables_key";
-    field public static final String[] NON_INDEXABLES_KEYS_COLUMNS;
-    field public static final String NON_INDEXABLES_KEYS_PATH = "settings/non_indexables_key";
-    field public static final String PROVIDER_INTERFACE = "android.content.action.SEARCH_INDEXABLES_PROVIDER";
-    field public static final String SLICE_URI_PAIRS = "slice_uri_pairs";
-    field @NonNull public static final String[] SLICE_URI_PAIRS_COLUMNS;
-    field public static final String SLICE_URI_PAIRS_PATH = "settings/slice_uri_pairs";
-  }
-
-  public static class SearchIndexablesContract.BaseColumns {
-    field public static final String COLUMN_CLASS_NAME = "className";
-    field public static final String COLUMN_ICON_RESID = "iconResId";
-    field public static final String COLUMN_INTENT_ACTION = "intentAction";
-    field public static final String COLUMN_INTENT_TARGET_CLASS = "intentTargetClass";
-    field public static final String COLUMN_INTENT_TARGET_PACKAGE = "intentTargetPackage";
-    field public static final String COLUMN_RANK = "rank";
-  }
-
-  public static final class SearchIndexablesContract.NonIndexableKey extends android.provider.SearchIndexablesContract.BaseColumns {
-    field public static final String COLUMN_KEY_VALUE = "key";
-    field public static final String MIME_TYPE = "vnd.android.cursor.dir/non_indexables_key";
-  }
-
-  public static final class SearchIndexablesContract.RawData extends android.provider.SearchIndexablesContract.BaseColumns {
-    field public static final String COLUMN_ENTRIES = "entries";
-    field public static final String COLUMN_KEY = "key";
-    field public static final String COLUMN_KEYWORDS = "keywords";
-    field public static final String COLUMN_SCREEN_TITLE = "screenTitle";
-    field public static final String COLUMN_SUMMARY_OFF = "summaryOff";
-    field public static final String COLUMN_SUMMARY_ON = "summaryOn";
-    field public static final String COLUMN_TITLE = "title";
-    field public static final String COLUMN_USER_ID = "user_id";
-    field public static final String MIME_TYPE = "vnd.android.cursor.dir/indexables_raw";
-  }
-
-  public static final class SearchIndexablesContract.SliceUriPairColumns {
-    field public static final String KEY = "key";
-    field public static final String SLICE_URI = "slice_uri";
-  }
-
-  public static final class SearchIndexablesContract.XmlResource extends android.provider.SearchIndexablesContract.BaseColumns {
-    field public static final String COLUMN_XML_RESID = "xmlResId";
-    field public static final String MIME_TYPE = "vnd.android.cursor.dir/indexables_xml_res";
-  }
-
-  public abstract class SearchIndexablesProvider extends android.content.ContentProvider {
-    ctor public SearchIndexablesProvider();
-    method public final int delete(android.net.Uri, String, String[]);
-    method public String getType(android.net.Uri);
-    method public final android.net.Uri insert(android.net.Uri, android.content.ContentValues);
-    method public android.database.Cursor query(android.net.Uri, String[], String, String[], String);
-    method @Nullable public android.database.Cursor queryDynamicRawData(@Nullable String[]);
-    method public abstract android.database.Cursor queryNonIndexableKeys(String[]);
-    method public abstract android.database.Cursor queryRawData(String[]);
-    method @Nullable public android.database.Cursor querySliceUriPairs();
-    method public abstract android.database.Cursor queryXmlResources(String[]);
-    method public final int update(android.net.Uri, android.content.ContentValues, String, String[]);
-  }
-
-  public final class Settings {
-    method public static boolean checkAndNoteWriteSettingsOperation(@NonNull android.content.Context, int, @NonNull String, boolean);
-    field public static final String ACTION_ACCESSIBILITY_DETAILS_SETTINGS = "android.settings.ACCESSIBILITY_DETAILS_SETTINGS";
-    field public static final String ACTION_BUGREPORT_HANDLER_SETTINGS = "android.settings.BUGREPORT_HANDLER_SETTINGS";
-    field public static final String ACTION_ENTERPRISE_PRIVACY_SETTINGS = "android.settings.ENTERPRISE_PRIVACY_SETTINGS";
-    field public static final String ACTION_LOCATION_CONTROLLER_EXTRA_PACKAGE_SETTINGS = "android.settings.LOCATION_CONTROLLER_EXTRA_PACKAGE_SETTINGS";
-    field public static final String ACTION_MANAGE_APP_OVERLAY_PERMISSION = "android.settings.MANAGE_APP_OVERLAY_PERMISSION";
-    field public static final String ACTION_MANAGE_DOMAIN_URLS = "android.settings.MANAGE_DOMAIN_URLS";
-    field public static final String ACTION_MANAGE_MORE_DEFAULT_APPS_SETTINGS = "android.settings.MANAGE_MORE_DEFAULT_APPS_SETTINGS";
-    field public static final String ACTION_NOTIFICATION_POLICY_ACCESS_DETAIL_SETTINGS = "android.settings.NOTIFICATION_POLICY_ACCESS_DETAIL_SETTINGS";
-    field public static final String ACTION_REQUEST_ENABLE_CONTENT_CAPTURE = "android.settings.REQUEST_ENABLE_CONTENT_CAPTURE";
-    field public static final String ACTION_SHOW_ADMIN_SUPPORT_DETAILS = "android.settings.SHOW_ADMIN_SUPPORT_DETAILS";
-    field public static final String ACTION_TETHER_PROVISIONING_UI = "android.settings.TETHER_PROVISIONING_UI";
-    field public static final String ACTION_TETHER_SETTINGS = "android.settings.TETHER_SETTINGS";
-  }
-
-  public static final class Settings.Global extends android.provider.Settings.NameValueTable {
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static boolean putString(@NonNull android.content.ContentResolver, @NonNull String, @Nullable String, @Nullable String, boolean);
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static void resetToDefaults(@NonNull android.content.ContentResolver, @Nullable String);
-    field public static final String AIRPLANE_MODE_TOGGLEABLE_RADIOS = "airplane_mode_toggleable_radios";
-    field public static final String APP_STANDBY_ENABLED = "app_standby_enabled";
-    field public static final String AUTOFILL_COMPAT_MODE_ALLOWED_PACKAGES = "autofill_compat_mode_allowed_packages";
-    field public static final String CARRIER_APP_NAMES = "carrier_app_names";
-    field public static final String CARRIER_APP_WHITELIST = "carrier_app_whitelist";
-    field public static final String DEFAULT_SM_DP_PLUS = "default_sm_dp_plus";
-    field public static final String DEVICE_DEMO_MODE = "device_demo_mode";
-    field public static final String DEVICE_PROVISIONING_MOBILE_DATA_ENABLED = "device_provisioning_mobile_data";
-    field public static final String EUICC_PROVISIONED = "euicc_provisioned";
-    field public static final String EUICC_SUPPORTED_COUNTRIES = "euicc_supported_countries";
-    field public static final String EUICC_UNSUPPORTED_COUNTRIES = "euicc_unsupported_countries";
-    field public static final String INSTALL_CARRIER_APP_NOTIFICATION_PERSISTENT = "install_carrier_app_notification_persistent";
-    field public static final String INSTALL_CARRIER_APP_NOTIFICATION_SLEEP_MILLIS = "install_carrier_app_notification_sleep_millis";
-    field public static final String OTA_DISABLE_AUTOMATIC_UPDATE = "ota_disable_automatic_update";
-    field public static final String REQUIRE_PASSWORD_TO_DECRYPT = "require_password_to_decrypt";
-    field public static final String TETHER_OFFLOAD_DISABLED = "tether_offload_disabled";
-    field public static final String TETHER_SUPPORTED = "tether_supported";
-    field public static final String THEATER_MODE_ON = "theater_mode_on";
-    field public static final String WEBVIEW_MULTIPROCESS = "webview_multiprocess";
-    field public static final String WIFI_BADGING_THRESHOLDS = "wifi_badging_thresholds";
-    field @Deprecated public static final String WIFI_WAKEUP_ENABLED = "wifi_wakeup_enabled";
-  }
-
-  public static final class Settings.Secure extends android.provider.Settings.NameValueTable {
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static boolean putString(@NonNull android.content.ContentResolver, @NonNull String, @Nullable String, @Nullable String, boolean);
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static void resetToDefaults(@NonNull android.content.ContentResolver, @Nullable String);
-    field @Deprecated public static final String ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED = "accessibility_display_magnification_navbar_enabled";
-    field public static final String ASSIST_GESTURE_SETUP_COMPLETE = "assist_gesture_setup_complete";
-    field public static final String AUTOFILL_FEATURE_FIELD_CLASSIFICATION = "autofill_field_classification";
-    field public static final String AUTOFILL_USER_DATA_MAX_CATEGORY_COUNT = "autofill_user_data_max_category_count";
-    field public static final String AUTOFILL_USER_DATA_MAX_FIELD_CLASSIFICATION_IDS_SIZE = "autofill_user_data_max_field_classification_size";
-    field public static final String AUTOFILL_USER_DATA_MAX_USER_DATA_SIZE = "autofill_user_data_max_user_data_size";
-    field public static final String AUTOFILL_USER_DATA_MAX_VALUE_LENGTH = "autofill_user_data_max_value_length";
-    field public static final String AUTOFILL_USER_DATA_MIN_VALUE_LENGTH = "autofill_user_data_min_value_length";
-    field public static final String AUTO_REVOKE_DISABLED = "auto_revoke_disabled";
-    field public static final String COMPLETED_CATEGORY_PREFIX = "suggested.completed_category.";
-    field public static final String DOZE_ALWAYS_ON = "doze_always_on";
-    field public static final String HUSH_GESTURE_USED = "hush_gesture_used";
-    field public static final String INSTANT_APPS_ENABLED = "instant_apps_enabled";
-    field public static final String LAST_SETUP_SHOWN = "last_setup_shown";
-    field public static final String LOCATION_ACCESS_CHECK_DELAY_MILLIS = "location_access_check_delay_millis";
-    field public static final String LOCATION_ACCESS_CHECK_INTERVAL_MILLIS = "location_access_check_interval_millis";
-    field public static final int LOCATION_MODE_ON = 3; // 0x3
-    field @Deprecated public static final String LOCATION_PERMISSIONS_UPGRADE_TO_Q_MODE = "location_permissions_upgrade_to_q_mode";
-    field public static final String LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS = "lock_screen_allow_private_notifications";
-    field public static final String LOCK_SCREEN_SHOW_NOTIFICATIONS = "lock_screen_show_notifications";
-    field public static final String ODI_CAPTIONS_ENABLED = "odi_captions_enabled";
-    field public static final String THEME_CUSTOMIZATION_OVERLAY_PACKAGES = "theme_customization_overlay_packages";
-    field public static final String USER_SETUP_COMPLETE = "user_setup_complete";
-    field public static final int USER_SETUP_PERSONALIZATION_COMPLETE = 10; // 0xa
-    field public static final int USER_SETUP_PERSONALIZATION_NOT_STARTED = 0; // 0x0
-    field public static final int USER_SETUP_PERSONALIZATION_PAUSED = 2; // 0x2
-    field public static final int USER_SETUP_PERSONALIZATION_STARTED = 1; // 0x1
-    field public static final String USER_SETUP_PERSONALIZATION_STATE = "user_setup_personalization_state";
-    field public static final String VOLUME_HUSH_GESTURE = "volume_hush_gesture";
-    field public static final int VOLUME_HUSH_MUTE = 2; // 0x2
-    field public static final int VOLUME_HUSH_OFF = 0; // 0x0
-    field public static final int VOLUME_HUSH_VIBRATE = 1; // 0x1
-  }
-
-  public static final class Settings.System extends android.provider.Settings.NameValueTable {
-    method @RequiresPermission(android.Manifest.permission.MODIFY_SETTINGS_OVERRIDEABLE_BY_RESTORE) public static boolean putString(@NonNull android.content.ContentResolver, @NonNull String, @Nullable String, boolean);
-  }
-
-  public static final class Telephony.Carriers implements android.provider.BaseColumns {
-    field public static final String APN_SET_ID = "apn_set_id";
-    field public static final int CARRIER_EDITED = 4; // 0x4
-    field public static final String EDITED_STATUS = "edited";
-    field public static final int MATCH_ALL_APN_SET_ID = -1; // 0xffffffff
-    field public static final String MAX_CONNECTIONS = "max_conns";
-    field public static final String MODEM_PERSIST = "modem_cognitive";
-    field public static final String MTU = "mtu";
-    field public static final int NO_APN_SET_ID = 0; // 0x0
-    field public static final String TIME_LIMIT_FOR_MAX_CONNECTIONS = "max_conns_time";
-    field public static final int UNEDITED = 0; // 0x0
-    field public static final int USER_DELETED = 2; // 0x2
-    field public static final String USER_EDITABLE = "user_editable";
-    field public static final int USER_EDITED = 1; // 0x1
-    field public static final String USER_VISIBLE = "user_visible";
-    field public static final String WAIT_TIME_RETRY = "wait_time";
-  }
-
-  public static final class Telephony.CellBroadcasts implements android.provider.BaseColumns {
-    field @NonNull public static final String AUTHORITY_LEGACY = "cellbroadcast-legacy";
-    field @NonNull public static final android.net.Uri AUTHORITY_LEGACY_URI;
-    field @NonNull public static final String CALL_METHOD_GET_PREFERENCE = "get_preference";
-    field public static final String CID = "cid";
-    field public static final String CMAS_CATEGORY = "cmas_category";
-    field public static final String CMAS_CERTAINTY = "cmas_certainty";
-    field public static final String CMAS_MESSAGE_CLASS = "cmas_message_class";
-    field public static final String CMAS_RESPONSE_TYPE = "cmas_response_type";
-    field public static final String CMAS_SEVERITY = "cmas_severity";
-    field public static final String CMAS_URGENCY = "cmas_urgency";
-    field @NonNull public static final android.net.Uri CONTENT_URI;
-    field public static final String DATA_CODING_SCHEME = "dcs";
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-    field public static final String DELIVERY_TIME = "date";
-    field public static final String ETWS_WARNING_TYPE = "etws_warning_type";
-    field public static final String GEOGRAPHICAL_SCOPE = "geo_scope";
-    field public static final String GEOMETRIES = "geometries";
-    field public static final String LAC = "lac";
-    field public static final String LANGUAGE_CODE = "language";
-    field public static final String LOCATION_CHECK_TIME = "location_check_time";
-    field public static final String MAXIMUM_WAIT_TIME = "maximum_wait_time";
-    field public static final String MESSAGE_BODY = "body";
-    field public static final String MESSAGE_BROADCASTED = "message_broadcasted";
-    field public static final String MESSAGE_DISPLAYED = "message_displayed";
-    field public static final String MESSAGE_FORMAT = "format";
-    field @NonNull @RequiresPermission(android.Manifest.permission.READ_CELL_BROADCASTS) public static final android.net.Uri MESSAGE_HISTORY_URI;
-    field public static final String MESSAGE_PRIORITY = "priority";
-    field public static final String MESSAGE_READ = "read";
-    field public static final String PLMN = "plmn";
-    field public static final String RECEIVED_TIME = "received_time";
-    field public static final String SERIAL_NUMBER = "serial_number";
-    field public static final String SERVICE_CATEGORY = "service_category";
-    field public static final String SLOT_INDEX = "slot_index";
-    field public static final String SUBSCRIPTION_ID = "sub_id";
-  }
-
-  public static final class Telephony.CellBroadcasts.Preference {
-    field @NonNull public static final String ENABLE_ALERT_VIBRATION_PREF = "enable_alert_vibrate";
-    field @NonNull public static final String ENABLE_AREA_UPDATE_INFO_PREF = "enable_area_update_info_alerts";
-    field @NonNull public static final String ENABLE_CMAS_AMBER_PREF = "enable_cmas_amber_alerts";
-    field @NonNull public static final String ENABLE_CMAS_EXTREME_THREAT_PREF = "enable_cmas_extreme_threat_alerts";
-    field @NonNull public static final String ENABLE_CMAS_IN_SECOND_LANGUAGE_PREF = "receive_cmas_in_second_language";
-    field @NonNull public static final String ENABLE_CMAS_PRESIDENTIAL_PREF = "enable_cmas_presidential_alerts";
-    field @NonNull public static final String ENABLE_CMAS_SEVERE_THREAT_PREF = "enable_cmas_severe_threat_alerts";
-    field @NonNull public static final String ENABLE_EMERGENCY_PERF = "enable_emergency_alerts";
-    field @NonNull public static final String ENABLE_PUBLIC_SAFETY_PREF = "enable_public_safety_messages";
-    field @NonNull public static final String ENABLE_STATE_LOCAL_TEST_PREF = "enable_state_local_test_alerts";
-    field @NonNull public static final String ENABLE_TEST_ALERT_PREF = "enable_test_alerts";
-  }
-
-  public static final class Telephony.Sms.Intents {
-    field public static final String ACTION_SMS_EMERGENCY_CB_RECEIVED = "android.provider.action.SMS_EMERGENCY_CB_RECEIVED";
-  }
-
-  public final class TimeZoneRulesDataContract {
-    field public static final String AUTHORITY = "com.android.timezone";
-  }
-
-  public static final class TimeZoneRulesDataContract.Operation {
-    field public static final String COLUMN_DISTRO_MAJOR_VERSION = "distro_major_version";
-    field public static final String COLUMN_DISTRO_MINOR_VERSION = "distro_minor_version";
-    field public static final String COLUMN_REVISION = "revision";
-    field public static final String COLUMN_RULES_VERSION = "rules_version";
-    field public static final String COLUMN_TYPE = "type";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String TYPE_INSTALL = "INSTALL";
-    field public static final String TYPE_NO_OP = "NOOP";
-    field public static final String TYPE_UNINSTALL = "UNINSTALL";
-  }
-
-}
-
-package android.se.omapi {
-
-  public final class Reader {
-    method @RequiresPermission(android.Manifest.permission.SECURE_ELEMENT_PRIVILEGED_OPERATION) public boolean reset();
-  }
-
-}
-
-package android.security.keystore {
-
-  public class AndroidKeyStoreProvider extends java.security.Provider {
-    method @NonNull public static java.security.KeyStore getKeyStoreForUid(int) throws java.security.KeyStoreException, java.security.NoSuchProviderException;
-  }
-
-  public abstract class AttestationUtils {
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static java.security.cert.X509Certificate[] attestDeviceIds(android.content.Context, @NonNull int[], @NonNull byte[]) throws android.security.keystore.DeviceIdAttestationException;
-    field public static final int ID_TYPE_IMEI = 2; // 0x2
-    field public static final int ID_TYPE_MEID = 3; // 0x3
-    field public static final int ID_TYPE_SERIAL = 1; // 0x1
-    field public static final int USE_INDIVIDUAL_ATTESTATION = 4; // 0x4
-  }
-
-  public class DeviceIdAttestationException extends java.lang.Exception {
-    ctor public DeviceIdAttestationException(@Nullable String);
-    ctor public DeviceIdAttestationException(@Nullable String, @Nullable Throwable);
-  }
-
-  public static final class KeyGenParameterSpec.Builder {
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUid(int);
-  }
-
-}
-
-package android.security.keystore.recovery {
-
-  public class DecryptionFailedException extends java.security.GeneralSecurityException {
-    ctor public DecryptionFailedException(String);
-  }
-
-  public class InternalRecoveryServiceException extends java.security.GeneralSecurityException {
-    ctor public InternalRecoveryServiceException(String);
-    ctor public InternalRecoveryServiceException(String, Throwable);
-  }
-
-  public final class KeyChainProtectionParams implements android.os.Parcelable {
-    method public void clearSecret();
-    method public int describeContents();
-    method @NonNull public android.security.keystore.recovery.KeyDerivationParams getKeyDerivationParams();
-    method public int getLockScreenUiFormat();
-    method @NonNull public byte[] getSecret();
-    method public int getUserSecretType();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.security.keystore.recovery.KeyChainProtectionParams> CREATOR;
-    field public static final int TYPE_LOCKSCREEN = 100; // 0x64
-    field public static final int UI_FORMAT_PASSWORD = 2; // 0x2
-    field public static final int UI_FORMAT_PATTERN = 3; // 0x3
-    field public static final int UI_FORMAT_PIN = 1; // 0x1
-  }
-
-  public static class KeyChainProtectionParams.Builder {
-    ctor public KeyChainProtectionParams.Builder();
-    method @NonNull public android.security.keystore.recovery.KeyChainProtectionParams build();
-    method @NonNull public android.security.keystore.recovery.KeyChainProtectionParams.Builder setKeyDerivationParams(@NonNull android.security.keystore.recovery.KeyDerivationParams);
-    method @NonNull public android.security.keystore.recovery.KeyChainProtectionParams.Builder setLockScreenUiFormat(int);
-    method @NonNull public android.security.keystore.recovery.KeyChainProtectionParams.Builder setSecret(@NonNull byte[]);
-    method @NonNull public android.security.keystore.recovery.KeyChainProtectionParams.Builder setUserSecretType(int);
-  }
-
-  public final class KeyChainSnapshot implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getCounterId();
-    method @NonNull public byte[] getEncryptedRecoveryKeyBlob();
-    method @NonNull public java.util.List<android.security.keystore.recovery.KeyChainProtectionParams> getKeyChainProtectionParams();
-    method public int getMaxAttempts();
-    method @NonNull public byte[] getServerParams();
-    method public int getSnapshotVersion();
-    method @NonNull public java.security.cert.CertPath getTrustedHardwareCertPath();
-    method @NonNull public java.util.List<android.security.keystore.recovery.WrappedApplicationKey> getWrappedApplicationKeys();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.security.keystore.recovery.KeyChainSnapshot> CREATOR;
-  }
-
-  public final class KeyDerivationParams implements android.os.Parcelable {
-    method @NonNull public static android.security.keystore.recovery.KeyDerivationParams createScryptParams(@NonNull byte[], int);
-    method @NonNull public static android.security.keystore.recovery.KeyDerivationParams createSha256Params(@NonNull byte[]);
-    method public int describeContents();
-    method public int getAlgorithm();
-    method public int getMemoryDifficulty();
-    method @NonNull public byte[] getSalt();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ALGORITHM_SCRYPT = 2; // 0x2
-    field public static final int ALGORITHM_SHA256 = 1; // 0x1
-    field @NonNull public static final android.os.Parcelable.Creator<android.security.keystore.recovery.KeyDerivationParams> CREATOR;
-  }
-
-  public class LockScreenRequiredException extends java.security.GeneralSecurityException {
-    ctor public LockScreenRequiredException(String);
-  }
-
-  public class RecoveryController {
-    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public android.security.keystore.recovery.RecoverySession createRecoverySession();
-    method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.security.Key generateKey(@NonNull String) throws android.security.keystore.recovery.InternalRecoveryServiceException, android.security.keystore.recovery.LockScreenRequiredException;
-    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.security.Key generateKey(@NonNull String, @Nullable byte[]) throws android.security.keystore.recovery.InternalRecoveryServiceException, android.security.keystore.recovery.LockScreenRequiredException;
-    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.util.List<java.lang.String> getAliases() throws android.security.keystore.recovery.InternalRecoveryServiceException;
-    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public static android.security.keystore.recovery.RecoveryController getInstance(@NonNull android.content.Context);
-    method @Nullable @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.security.Key getKey(@NonNull String) throws android.security.keystore.recovery.InternalRecoveryServiceException, java.security.UnrecoverableKeyException;
-    method @Nullable @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public android.security.keystore.recovery.KeyChainSnapshot getKeyChainSnapshot() throws android.security.keystore.recovery.InternalRecoveryServiceException;
-    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public int[] getRecoverySecretTypes() throws android.security.keystore.recovery.InternalRecoveryServiceException;
-    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public int getRecoveryStatus(@NonNull String) throws android.security.keystore.recovery.InternalRecoveryServiceException;
-    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.util.Map<java.lang.String,java.security.cert.X509Certificate> getRootCertificates();
-    method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.security.Key importKey(@NonNull String, @NonNull byte[]) throws android.security.keystore.recovery.InternalRecoveryServiceException, android.security.keystore.recovery.LockScreenRequiredException;
-    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.security.Key importKey(@NonNull String, @NonNull byte[], @Nullable byte[]) throws android.security.keystore.recovery.InternalRecoveryServiceException, android.security.keystore.recovery.LockScreenRequiredException;
-    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void initRecoveryService(@NonNull String, @NonNull byte[], @NonNull byte[]) throws java.security.cert.CertificateException, android.security.keystore.recovery.InternalRecoveryServiceException;
-    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public static boolean isRecoverableKeyStoreEnabled(@NonNull android.content.Context);
-    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void removeKey(@NonNull String) throws android.security.keystore.recovery.InternalRecoveryServiceException;
-    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void setRecoverySecretTypes(@NonNull int[]) throws android.security.keystore.recovery.InternalRecoveryServiceException;
-    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void setRecoveryStatus(@NonNull String, int) throws android.security.keystore.recovery.InternalRecoveryServiceException;
-    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void setServerParams(@NonNull byte[]) throws android.security.keystore.recovery.InternalRecoveryServiceException;
-    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void setSnapshotCreatedPendingIntent(@Nullable android.app.PendingIntent) throws android.security.keystore.recovery.InternalRecoveryServiceException;
-    field public static final int RECOVERY_STATUS_PERMANENT_FAILURE = 3; // 0x3
-    field public static final int RECOVERY_STATUS_SYNCED = 0; // 0x0
-    field public static final int RECOVERY_STATUS_SYNC_IN_PROGRESS = 1; // 0x1
-  }
-
-  public class RecoverySession implements java.lang.AutoCloseable {
-    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void close();
-    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.util.Map<java.lang.String,java.security.Key> recoverKeyChainSnapshot(@NonNull byte[], @NonNull java.util.List<android.security.keystore.recovery.WrappedApplicationKey>) throws android.security.keystore.recovery.DecryptionFailedException, android.security.keystore.recovery.InternalRecoveryServiceException, android.security.keystore.recovery.SessionExpiredException;
-    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public byte[] start(@NonNull String, @NonNull java.security.cert.CertPath, @NonNull byte[], @NonNull byte[], @NonNull java.util.List<android.security.keystore.recovery.KeyChainProtectionParams>) throws java.security.cert.CertificateException, android.security.keystore.recovery.InternalRecoveryServiceException;
-  }
-
-  public class SessionExpiredException extends java.security.GeneralSecurityException {
-    ctor public SessionExpiredException(String);
-  }
-
-  public final class WrappedApplicationKey implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public String getAlias();
-    method @NonNull public byte[] getEncryptedKeyMaterial();
-    method @Nullable public byte[] getMetadata();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.security.keystore.recovery.WrappedApplicationKey> CREATOR;
-  }
-
-  public static class WrappedApplicationKey.Builder {
-    ctor public WrappedApplicationKey.Builder();
-    method @NonNull public android.security.keystore.recovery.WrappedApplicationKey build();
-    method @NonNull public android.security.keystore.recovery.WrappedApplicationKey.Builder setAlias(@NonNull String);
-    method @NonNull public android.security.keystore.recovery.WrappedApplicationKey.Builder setEncryptedKeyMaterial(@NonNull byte[]);
-    method @NonNull public android.security.keystore.recovery.WrappedApplicationKey.Builder setMetadata(@Nullable byte[]);
-  }
-
-}
-
-package android.service.appprediction {
-
-  public abstract class AppPredictionService extends android.app.Service {
-    ctor public AppPredictionService();
-    method @MainThread public abstract void onAppTargetEvent(@NonNull android.app.prediction.AppPredictionSessionId, @NonNull android.app.prediction.AppTargetEvent);
-    method @NonNull public final android.os.IBinder onBind(@NonNull android.content.Intent);
-    method public void onCreatePredictionSession(@NonNull android.app.prediction.AppPredictionContext, @NonNull android.app.prediction.AppPredictionSessionId);
-    method @MainThread public void onDestroyPredictionSession(@NonNull android.app.prediction.AppPredictionSessionId);
-    method @MainThread public abstract void onLaunchLocationShown(@NonNull android.app.prediction.AppPredictionSessionId, @NonNull String, @NonNull java.util.List<android.app.prediction.AppTargetId>);
-    method @MainThread public abstract void onRequestPredictionUpdate(@NonNull android.app.prediction.AppPredictionSessionId);
-    method @MainThread public abstract void onSortAppTargets(@NonNull android.app.prediction.AppPredictionSessionId, @NonNull java.util.List<android.app.prediction.AppTarget>, @NonNull android.os.CancellationSignal, @NonNull java.util.function.Consumer<java.util.List<android.app.prediction.AppTarget>>);
-    method @MainThread public void onStartPredictionUpdates();
-    method @MainThread public void onStopPredictionUpdates();
-    method public final void updatePredictions(@NonNull android.app.prediction.AppPredictionSessionId, @NonNull java.util.List<android.app.prediction.AppTarget>);
-  }
-
-}
-
-package android.service.attention {
-
-  public abstract class AttentionService extends android.app.Service {
-    ctor public AttentionService();
-    method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
-    method public abstract void onCancelAttentionCheck(@NonNull android.service.attention.AttentionService.AttentionCallback);
-    method public abstract void onCheckAttention(@NonNull android.service.attention.AttentionService.AttentionCallback);
-    field public static final int ATTENTION_FAILURE_CAMERA_PERMISSION_ABSENT = 6; // 0x6
-    field public static final int ATTENTION_FAILURE_CANCELLED = 3; // 0x3
-    field public static final int ATTENTION_FAILURE_PREEMPTED = 4; // 0x4
-    field public static final int ATTENTION_FAILURE_TIMED_OUT = 5; // 0x5
-    field public static final int ATTENTION_FAILURE_UNKNOWN = 2; // 0x2
-    field public static final int ATTENTION_SUCCESS_ABSENT = 0; // 0x0
-    field public static final int ATTENTION_SUCCESS_PRESENT = 1; // 0x1
-    field public static final String SERVICE_INTERFACE = "android.service.attention.AttentionService";
-  }
-
-  public static final class AttentionService.AttentionCallback {
-    method public void onFailure(int);
-    method public void onSuccess(int, long);
-  }
-
-}
-
-package android.service.autofill {
-
-  public abstract class AutofillFieldClassificationService extends android.app.Service {
-    ctor public AutofillFieldClassificationService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method @Nullable public float[][] onCalculateScores(@NonNull java.util.List<android.view.autofill.AutofillValue>, @NonNull java.util.List<java.lang.String>, @NonNull java.util.List<java.lang.String>, @Nullable String, @Nullable android.os.Bundle, @Nullable java.util.Map, @Nullable java.util.Map);
-    method @Deprecated @Nullable public float[][] onGetScores(@Nullable String, @Nullable android.os.Bundle, @NonNull java.util.List<android.view.autofill.AutofillValue>, @NonNull java.util.List<java.lang.String>);
-    field public static final String REQUIRED_ALGORITHM_CREDIT_CARD = "CREDIT_CARD";
-    field public static final String REQUIRED_ALGORITHM_EDIT_DISTANCE = "EDIT_DISTANCE";
-    field public static final String REQUIRED_ALGORITHM_EXACT_MATCH = "EXACT_MATCH";
-    field public static final String SERVICE_INTERFACE = "android.service.autofill.AutofillFieldClassificationService";
-    field public static final String SERVICE_META_DATA_KEY_AVAILABLE_ALGORITHMS = "android.autofill.field_classification.available_algorithms";
-    field public static final String SERVICE_META_DATA_KEY_DEFAULT_ALGORITHM = "android.autofill.field_classification.default_algorithm";
-  }
-
-  public static final class Dataset.Builder {
-    ctor public Dataset.Builder(@NonNull android.service.autofill.InlinePresentation);
-    method @NonNull public android.service.autofill.Dataset.Builder setFieldInlinePresentation(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue, @Nullable java.util.regex.Pattern, @NonNull android.service.autofill.InlinePresentation);
-  }
-
-  public abstract class InlineSuggestionRenderService extends android.app.Service {
-    ctor public InlineSuggestionRenderService();
-    method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
-    method @NonNull public android.os.Bundle onGetInlineSuggestionsRendererInfo();
-    method @Nullable public android.view.View onRenderSuggestion(@NonNull android.service.autofill.InlinePresentation, int, int);
-    method public final void startIntentSender(@NonNull android.content.IntentSender);
-    field public static final String SERVICE_INTERFACE = "android.service.autofill.InlineSuggestionRenderService";
-  }
-
-}
-
-package android.service.autofill.augmented {
-
-  public abstract class AugmentedAutofillService extends android.app.Service {
-    ctor public AugmentedAutofillService();
-    method protected final void dump(java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method protected void dump(@NonNull java.io.PrintWriter, @NonNull String[]);
-    method @Nullable public final android.service.autofill.FillEventHistory getFillEventHistory();
-    method public void onConnected();
-    method public void onDisconnected();
-    method public void onFillRequest(@NonNull android.service.autofill.augmented.FillRequest, @NonNull android.os.CancellationSignal, @NonNull android.service.autofill.augmented.FillController, @NonNull android.service.autofill.augmented.FillCallback);
-    method public final boolean requestAutofill(@NonNull android.content.ComponentName, @NonNull android.view.autofill.AutofillId);
-    field public static final String SERVICE_INTERFACE = "android.service.autofill.augmented.AugmentedAutofillService";
-  }
-
-  public final class FillCallback {
-    method public void onSuccess(@Nullable android.service.autofill.augmented.FillResponse);
-  }
-
-  public final class FillController {
-    method public void autofill(@NonNull java.util.List<android.util.Pair<android.view.autofill.AutofillId,android.view.autofill.AutofillValue>>);
-  }
-
-  public final class FillRequest {
-    method @NonNull public android.content.ComponentName getActivityComponent();
-    method @NonNull public android.view.autofill.AutofillId getFocusedId();
-    method @NonNull public android.view.autofill.AutofillValue getFocusedValue();
-    method @Nullable public android.view.inputmethod.InlineSuggestionsRequest getInlineSuggestionsRequest();
-    method @Nullable public android.service.autofill.augmented.PresentationParams getPresentationParams();
-    method public int getTaskId();
-  }
-
-  public final class FillResponse {
-  }
-
-  public static final class FillResponse.Builder {
-    ctor public FillResponse.Builder();
-    method @NonNull public android.service.autofill.augmented.FillResponse build();
-    method @NonNull public android.service.autofill.augmented.FillResponse.Builder setClientState(@NonNull android.os.Bundle);
-    method @NonNull public android.service.autofill.augmented.FillResponse.Builder setFillWindow(@NonNull android.service.autofill.augmented.FillWindow);
-    method @NonNull public android.service.autofill.augmented.FillResponse.Builder setInlineSuggestions(@NonNull java.util.List<android.service.autofill.Dataset>);
-  }
-
-  public final class FillWindow implements java.lang.AutoCloseable {
-    ctor public FillWindow();
-    method public void destroy();
-    method public boolean update(@NonNull android.service.autofill.augmented.PresentationParams.Area, @NonNull android.view.View, long);
-  }
-
-  public abstract class PresentationParams {
-    method @Nullable public android.service.autofill.augmented.PresentationParams.Area getSuggestionArea();
-  }
-
-  public abstract static class PresentationParams.Area {
-    method @NonNull public android.graphics.Rect getBounds();
-  }
-
-}
-
-package android.service.carrier {
-
-  public abstract class ApnService extends android.app.Service {
-    ctor public ApnService();
-    method @NonNull public android.os.IBinder onBind(@Nullable android.content.Intent);
-    method @NonNull @WorkerThread public abstract java.util.List<android.content.ContentValues> onRestoreApns(int);
-  }
-
-}
-
-package android.service.contentcapture {
-
-  public final class ActivityEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.content.ComponentName getComponentName();
-    method public int getEventType();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.contentcapture.ActivityEvent> CREATOR;
-    field public static final int TYPE_ACTIVITY_DESTROYED = 24; // 0x18
-    field public static final int TYPE_ACTIVITY_PAUSED = 2; // 0x2
-    field public static final int TYPE_ACTIVITY_RESUMED = 1; // 0x1
-    field public static final int TYPE_ACTIVITY_STOPPED = 23; // 0x17
-  }
-
-  public abstract class ContentCaptureService extends android.app.Service {
-    ctor public ContentCaptureService();
-    method public final void disableSelf();
-    method public void onActivityEvent(@NonNull android.service.contentcapture.ActivityEvent);
-    method public void onActivitySnapshot(@NonNull android.view.contentcapture.ContentCaptureSessionId, @NonNull android.service.contentcapture.SnapshotData);
-    method public void onConnected();
-    method public void onContentCaptureEvent(@NonNull android.view.contentcapture.ContentCaptureSessionId, @NonNull android.view.contentcapture.ContentCaptureEvent);
-    method public void onCreateContentCaptureSession(@NonNull android.view.contentcapture.ContentCaptureContext, @NonNull android.view.contentcapture.ContentCaptureSessionId);
-    method public void onDataRemovalRequest(@NonNull android.view.contentcapture.DataRemovalRequest);
-    method public void onDataShareRequest(@NonNull android.view.contentcapture.DataShareRequest, @NonNull android.service.contentcapture.DataShareCallback);
-    method public void onDestroyContentCaptureSession(@NonNull android.view.contentcapture.ContentCaptureSessionId);
-    method public void onDisconnected();
-    method public final void setContentCaptureConditions(@NonNull String, @Nullable java.util.Set<android.view.contentcapture.ContentCaptureCondition>);
-    method public final void setContentCaptureWhitelist(@Nullable java.util.Set<java.lang.String>, @Nullable java.util.Set<android.content.ComponentName>);
-    field public static final String SERVICE_INTERFACE = "android.service.contentcapture.ContentCaptureService";
-    field public static final String SERVICE_META_DATA = "android.content_capture";
-  }
-
-  public interface DataShareCallback {
-    method public void onAccept(@NonNull java.util.concurrent.Executor, @NonNull android.service.contentcapture.DataShareReadAdapter);
-    method public void onReject();
-  }
-
-  public interface DataShareReadAdapter {
-    method public void onError(int);
-    method public void onStart(@NonNull android.os.ParcelFileDescriptor);
-  }
-
-  public final class SnapshotData implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.app.assist.AssistContent getAssistContent();
-    method @NonNull public android.os.Bundle getAssistData();
-    method @NonNull public android.app.assist.AssistStructure getAssistStructure();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.contentcapture.SnapshotData> CREATOR;
-  }
-
-}
-
-package android.service.contentsuggestions {
-
-  public abstract class ContentSuggestionsService extends android.app.Service {
-    ctor public ContentSuggestionsService();
-    method public abstract void onClassifyContentSelections(@NonNull android.app.contentsuggestions.ClassificationsRequest, @NonNull android.app.contentsuggestions.ContentSuggestionsManager.ClassificationsCallback);
-    method public abstract void onNotifyInteraction(@NonNull String, @NonNull android.os.Bundle);
-    method public abstract void onProcessContextImage(int, @Nullable android.graphics.Bitmap, @NonNull android.os.Bundle);
-    method public abstract void onSuggestContentSelections(@NonNull android.app.contentsuggestions.SelectionsRequest, @NonNull android.app.contentsuggestions.ContentSuggestionsManager.SelectionsCallback);
-    field public static final String SERVICE_INTERFACE = "android.service.contentsuggestions.ContentSuggestionsService";
-  }
-
-}
-
-package android.service.dataloader {
-
-  public abstract class DataLoaderService extends android.app.Service {
-    ctor public DataLoaderService();
-    method @Nullable public android.service.dataloader.DataLoaderService.DataLoader onCreateDataLoader(@NonNull android.content.pm.DataLoaderParams);
-  }
-
-  public static interface DataLoaderService.DataLoader {
-    method public boolean onCreate(@NonNull android.content.pm.DataLoaderParams, @NonNull android.service.dataloader.DataLoaderService.FileSystemConnector);
-    method public boolean onPrepareImage(@NonNull java.util.Collection<android.content.pm.InstallationFile>, @NonNull java.util.Collection<java.lang.String>);
-  }
-
-  public static final class DataLoaderService.FileSystemConnector {
-    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void writeData(@NonNull String, long, long, @NonNull android.os.ParcelFileDescriptor) throws java.io.IOException;
-  }
-
-}
-
-package android.service.euicc {
-
-  public final class DownloadSubscriptionResult implements android.os.Parcelable {
-    ctor public DownloadSubscriptionResult(int, int, int);
-    method public int describeContents();
-    method public int getCardId();
-    method public int getResolvableErrors();
-    method public int getResult();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.euicc.DownloadSubscriptionResult> CREATOR;
-  }
-
-  public final class EuiccProfileInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.service.carrier.CarrierIdentifier getCarrierIdentifier();
-    method public String getIccid();
-    method @Nullable public String getNickname();
-    method @android.service.euicc.EuiccProfileInfo.PolicyRule public int getPolicyRules();
-    method @android.service.euicc.EuiccProfileInfo.ProfileClass public int getProfileClass();
-    method public String getProfileName();
-    method public String getServiceProviderName();
-    method @android.service.euicc.EuiccProfileInfo.ProfileState public int getState();
-    method @Nullable public java.util.List<android.telephony.UiccAccessRule> getUiccAccessRules();
-    method public boolean hasPolicyRule(@android.service.euicc.EuiccProfileInfo.PolicyRule int);
-    method public boolean hasPolicyRules();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.euicc.EuiccProfileInfo> CREATOR;
-    field public static final int POLICY_RULE_DELETE_AFTER_DISABLING = 4; // 0x4
-    field public static final int POLICY_RULE_DO_NOT_DELETE = 2; // 0x2
-    field public static final int POLICY_RULE_DO_NOT_DISABLE = 1; // 0x1
-    field public static final int PROFILE_CLASS_OPERATIONAL = 2; // 0x2
-    field public static final int PROFILE_CLASS_PROVISIONING = 1; // 0x1
-    field public static final int PROFILE_CLASS_TESTING = 0; // 0x0
-    field public static final int PROFILE_STATE_DISABLED = 0; // 0x0
-    field public static final int PROFILE_STATE_ENABLED = 1; // 0x1
-  }
-
-  public static final class EuiccProfileInfo.Builder {
-    ctor public EuiccProfileInfo.Builder(String);
-    ctor public EuiccProfileInfo.Builder(android.service.euicc.EuiccProfileInfo);
-    method public android.service.euicc.EuiccProfileInfo build();
-    method public android.service.euicc.EuiccProfileInfo.Builder setCarrierIdentifier(android.service.carrier.CarrierIdentifier);
-    method public android.service.euicc.EuiccProfileInfo.Builder setIccid(String);
-    method public android.service.euicc.EuiccProfileInfo.Builder setNickname(String);
-    method public android.service.euicc.EuiccProfileInfo.Builder setPolicyRules(@android.service.euicc.EuiccProfileInfo.PolicyRule int);
-    method public android.service.euicc.EuiccProfileInfo.Builder setProfileClass(@android.service.euicc.EuiccProfileInfo.ProfileClass int);
-    method public android.service.euicc.EuiccProfileInfo.Builder setProfileName(String);
-    method public android.service.euicc.EuiccProfileInfo.Builder setServiceProviderName(String);
-    method public android.service.euicc.EuiccProfileInfo.Builder setState(@android.service.euicc.EuiccProfileInfo.ProfileState int);
-    method public android.service.euicc.EuiccProfileInfo.Builder setUiccAccessRule(@Nullable java.util.List<android.telephony.UiccAccessRule>);
-  }
-
-  @IntDef(flag=true, prefix={"POLICY_RULE_"}, value={android.service.euicc.EuiccProfileInfo.POLICY_RULE_DO_NOT_DISABLE, android.service.euicc.EuiccProfileInfo.POLICY_RULE_DO_NOT_DELETE, android.service.euicc.EuiccProfileInfo.POLICY_RULE_DELETE_AFTER_DISABLING}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccProfileInfo.PolicyRule {
-  }
-
-  @IntDef(prefix={"PROFILE_CLASS_"}, value={android.service.euicc.EuiccProfileInfo.PROFILE_CLASS_TESTING, android.service.euicc.EuiccProfileInfo.PROFILE_CLASS_PROVISIONING, android.service.euicc.EuiccProfileInfo.PROFILE_CLASS_OPERATIONAL, 0xffffffff}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccProfileInfo.ProfileClass {
-  }
-
-  @IntDef(prefix={"PROFILE_STATE_"}, value={android.service.euicc.EuiccProfileInfo.PROFILE_STATE_DISABLED, android.service.euicc.EuiccProfileInfo.PROFILE_STATE_ENABLED, 0xffffffff}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccProfileInfo.ProfileState {
-  }
-
-  public abstract class EuiccService extends android.app.Service {
-    ctor public EuiccService();
-    method public void dump(@NonNull java.io.PrintWriter);
-    method public int encodeSmdxSubjectAndReasonCode(@Nullable String, @Nullable String);
-    method @CallSuper public android.os.IBinder onBind(android.content.Intent);
-    method public abstract int onDeleteSubscription(int, String);
-    method public android.service.euicc.DownloadSubscriptionResult onDownloadSubscription(int, @NonNull android.telephony.euicc.DownloadableSubscription, boolean, boolean, @Nullable android.os.Bundle);
-    method @Deprecated public int onDownloadSubscription(int, @NonNull android.telephony.euicc.DownloadableSubscription, boolean, boolean);
-    method @Deprecated public abstract int onEraseSubscriptions(int);
-    method public int onEraseSubscriptions(int, @android.telephony.euicc.EuiccCardManager.ResetOption int);
-    method public abstract android.service.euicc.GetDefaultDownloadableSubscriptionListResult onGetDefaultDownloadableSubscriptionList(int, boolean);
-    method public abstract android.service.euicc.GetDownloadableSubscriptionMetadataResult onGetDownloadableSubscriptionMetadata(int, android.telephony.euicc.DownloadableSubscription, boolean);
-    method public abstract String onGetEid(int);
-    method @NonNull public abstract android.telephony.euicc.EuiccInfo onGetEuiccInfo(int);
-    method @NonNull public abstract android.service.euicc.GetEuiccProfileInfoListResult onGetEuiccProfileInfoList(int);
-    method @android.telephony.euicc.EuiccManager.OtaStatus public abstract int onGetOtaStatus(int);
-    method public abstract int onRetainSubscriptionsForFactoryReset(int);
-    method public abstract void onStartOtaIfNecessary(int, android.service.euicc.EuiccService.OtaStatusChangedCallback);
-    method public abstract int onSwitchToSubscription(int, @Nullable String, boolean);
-    method public abstract int onUpdateSubscriptionNickname(int, String, String);
-    field public static final String ACTION_BIND_CARRIER_PROVISIONING_SERVICE = "android.service.euicc.action.BIND_CARRIER_PROVISIONING_SERVICE";
-    field public static final String ACTION_DELETE_SUBSCRIPTION_PRIVILEGED = "android.service.euicc.action.DELETE_SUBSCRIPTION_PRIVILEGED";
-    field public static final String ACTION_MANAGE_EMBEDDED_SUBSCRIPTIONS = "android.service.euicc.action.MANAGE_EMBEDDED_SUBSCRIPTIONS";
-    field public static final String ACTION_PROVISION_EMBEDDED_SUBSCRIPTION = "android.service.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION";
-    field public static final String ACTION_RENAME_SUBSCRIPTION_PRIVILEGED = "android.service.euicc.action.RENAME_SUBSCRIPTION_PRIVILEGED";
-    field @Deprecated public static final String ACTION_RESOLVE_CONFIRMATION_CODE = "android.service.euicc.action.RESOLVE_CONFIRMATION_CODE";
-    field public static final String ACTION_RESOLVE_DEACTIVATE_SIM = "android.service.euicc.action.RESOLVE_DEACTIVATE_SIM";
-    field public static final String ACTION_RESOLVE_NO_PRIVILEGES = "android.service.euicc.action.RESOLVE_NO_PRIVILEGES";
-    field public static final String ACTION_RESOLVE_RESOLVABLE_ERRORS = "android.service.euicc.action.RESOLVE_RESOLVABLE_ERRORS";
-    field public static final String ACTION_START_CARRIER_ACTIVATION = "android.service.euicc.action.START_CARRIER_ACTIVATION";
-    field public static final String ACTION_START_EUICC_ACTIVATION = "android.service.euicc.action.START_EUICC_ACTIVATION";
-    field public static final String ACTION_TOGGLE_SUBSCRIPTION_PRIVILEGED = "android.service.euicc.action.TOGGLE_SUBSCRIPTION_PRIVILEGED";
-    field public static final String CATEGORY_EUICC_UI = "android.service.euicc.category.EUICC_UI";
-    field public static final String EUICC_SERVICE_INTERFACE = "android.service.euicc.EuiccService";
-    field public static final String EXTRA_RESOLUTION_ALLOW_POLICY_RULES = "android.service.euicc.extra.RESOLUTION_ALLOW_POLICY_RULES";
-    field public static final String EXTRA_RESOLUTION_CALLING_PACKAGE = "android.service.euicc.extra.RESOLUTION_CALLING_PACKAGE";
-    field public static final String EXTRA_RESOLUTION_CARD_ID = "android.service.euicc.extra.RESOLUTION_CARD_ID";
-    field public static final String EXTRA_RESOLUTION_CONFIRMATION_CODE = "android.service.euicc.extra.RESOLUTION_CONFIRMATION_CODE";
-    field public static final String EXTRA_RESOLUTION_CONFIRMATION_CODE_RETRIED = "android.service.euicc.extra.RESOLUTION_CONFIRMATION_CODE_RETRIED";
-    field public static final String EXTRA_RESOLUTION_CONSENT = "android.service.euicc.extra.RESOLUTION_CONSENT";
-    field public static final String EXTRA_RESOLVABLE_ERRORS = "android.service.euicc.extra.RESOLVABLE_ERRORS";
-    field public static final int RESOLVABLE_ERROR_CONFIRMATION_CODE = 1; // 0x1
-    field public static final int RESOLVABLE_ERROR_POLICY_RULES = 2; // 0x2
-    field public static final int RESULT_FIRST_USER = 1; // 0x1
-    field public static final int RESULT_MUST_DEACTIVATE_SIM = -1; // 0xffffffff
-    field @Deprecated public static final int RESULT_NEED_CONFIRMATION_CODE = -2; // 0xfffffffe
-    field public static final int RESULT_OK = 0; // 0x0
-    field public static final int RESULT_RESOLVABLE_ERRORS = -2; // 0xfffffffe
-  }
-
-  public abstract static class EuiccService.OtaStatusChangedCallback {
-    ctor public EuiccService.OtaStatusChangedCallback();
-    method public abstract void onOtaStatusChanged(int);
-  }
-
-  public final class GetDefaultDownloadableSubscriptionListResult implements android.os.Parcelable {
-    ctor public GetDefaultDownloadableSubscriptionListResult(int, @Nullable android.telephony.euicc.DownloadableSubscription[]);
-    method public int describeContents();
-    method @Nullable public java.util.List<android.telephony.euicc.DownloadableSubscription> getDownloadableSubscriptions();
-    method public int getResult();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.euicc.GetDefaultDownloadableSubscriptionListResult> CREATOR;
-  }
-
-  public final class GetDownloadableSubscriptionMetadataResult implements android.os.Parcelable {
-    ctor public GetDownloadableSubscriptionMetadataResult(int, @Nullable android.telephony.euicc.DownloadableSubscription);
-    method public int describeContents();
-    method @Nullable public android.telephony.euicc.DownloadableSubscription getDownloadableSubscription();
-    method public int getResult();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.euicc.GetDownloadableSubscriptionMetadataResult> CREATOR;
-  }
-
-  public final class GetEuiccProfileInfoListResult implements android.os.Parcelable {
-    ctor public GetEuiccProfileInfoListResult(int, @Nullable android.service.euicc.EuiccProfileInfo[], boolean);
-    method public int describeContents();
-    method public boolean getIsRemovable();
-    method @Nullable public java.util.List<android.service.euicc.EuiccProfileInfo> getProfiles();
-    method public int getResult();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.euicc.GetEuiccProfileInfoListResult> CREATOR;
-  }
-
-}
-
-package android.service.notification {
-
-  public final class Adjustment implements android.os.Parcelable {
-    ctor public Adjustment(String, String, android.os.Bundle, CharSequence, int);
-    ctor public Adjustment(@NonNull String, @NonNull String, @NonNull android.os.Bundle, @NonNull CharSequence, @NonNull android.os.UserHandle);
-    ctor protected Adjustment(android.os.Parcel);
-    method public int describeContents();
-    method @NonNull public CharSequence getExplanation();
-    method @NonNull public String getKey();
-    method @NonNull public String getPackage();
-    method @NonNull public android.os.Bundle getSignals();
-    method public int getUser();
-    method @NonNull public android.os.UserHandle getUserHandle();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.Adjustment> CREATOR;
-    field public static final String KEY_CONTEXTUAL_ACTIONS = "key_contextual_actions";
-    field public static final String KEY_IMPORTANCE = "key_importance";
-    field public static final String KEY_NOT_CONVERSATION = "key_not_conversation";
-    field public static final String KEY_PEOPLE = "key_people";
-    field public static final String KEY_RANKING_SCORE = "key_ranking_score";
-    field public static final String KEY_SNOOZE_CRITERIA = "key_snooze_criteria";
-    field public static final String KEY_TEXT_REPLIES = "key_text_replies";
-    field public static final String KEY_USER_SENTIMENT = "key_user_sentiment";
-  }
-
-  public abstract class NotificationAssistantService extends android.service.notification.NotificationListenerService {
-    ctor public NotificationAssistantService();
-    method public final void adjustNotification(@NonNull android.service.notification.Adjustment);
-    method public final void adjustNotifications(@NonNull java.util.List<android.service.notification.Adjustment>);
-    method public void onActionInvoked(@NonNull String, @NonNull android.app.Notification.Action, int);
-    method public void onAllowedAdjustmentsChanged();
-    method @NonNull public final android.os.IBinder onBind(@Nullable android.content.Intent);
-    method public void onNotificationDirectReplied(@NonNull String);
-    method @Nullable public abstract android.service.notification.Adjustment onNotificationEnqueued(@NonNull android.service.notification.StatusBarNotification);
-    method @Nullable public android.service.notification.Adjustment onNotificationEnqueued(@NonNull android.service.notification.StatusBarNotification, @NonNull android.app.NotificationChannel);
-    method public void onNotificationExpansionChanged(@NonNull String, boolean, boolean);
-    method public abstract void onNotificationSnoozedUntilContext(@NonNull android.service.notification.StatusBarNotification, @NonNull String);
-    method public void onNotificationVisibilityChanged(@NonNull String, boolean);
-    method public void onNotificationsSeen(@NonNull java.util.List<java.lang.String>);
-    method public void onPanelHidden();
-    method public void onPanelRevealed(int);
-    method public void onSuggestedReplySent(@NonNull String, @NonNull CharSequence, int);
-    method public final void unsnoozeNotification(@NonNull String);
-    field public static final String SERVICE_INTERFACE = "android.service.notification.NotificationAssistantService";
-    field public static final int SOURCE_FROM_APP = 0; // 0x0
-    field public static final int SOURCE_FROM_ASSISTANT = 1; // 0x1
-  }
-
-  public abstract class NotificationListenerService extends android.app.Service {
-    method public void onNotificationRemoved(@NonNull android.service.notification.StatusBarNotification, @NonNull android.service.notification.NotificationListenerService.RankingMap, @NonNull android.service.notification.NotificationStats, int);
-  }
-
-  public final class NotificationStats implements android.os.Parcelable {
-    ctor public NotificationStats();
-    ctor protected NotificationStats(android.os.Parcel);
-    method public int describeContents();
-    method public int getDismissalSentiment();
-    method public int getDismissalSurface();
-    method public boolean hasDirectReplied();
-    method public boolean hasExpanded();
-    method public boolean hasInteracted();
-    method public boolean hasSeen();
-    method public boolean hasSnoozed();
-    method public boolean hasViewedSettings();
-    method public void setDirectReplied();
-    method public void setDismissalSentiment(int);
-    method public void setDismissalSurface(int);
-    method public void setExpanded();
-    method public void setSeen();
-    method public void setSnoozed();
-    method public void setViewedSettings();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.NotificationStats> CREATOR;
-    field public static final int DISMISSAL_AOD = 2; // 0x2
-    field public static final int DISMISSAL_NOT_DISMISSED = -1; // 0xffffffff
-    field public static final int DISMISSAL_OTHER = 0; // 0x0
-    field public static final int DISMISSAL_PEEK = 1; // 0x1
-    field public static final int DISMISSAL_SHADE = 3; // 0x3
-    field public static final int DISMISS_SENTIMENT_NEGATIVE = 0; // 0x0
-    field public static final int DISMISS_SENTIMENT_NEUTRAL = 1; // 0x1
-    field public static final int DISMISS_SENTIMENT_POSITIVE = 2; // 0x2
-    field public static final int DISMISS_SENTIMENT_UNKNOWN = -1000; // 0xfffffc18
-  }
-
-  public final class SnoozeCriterion implements android.os.Parcelable {
-    ctor public SnoozeCriterion(String, CharSequence, CharSequence);
-    ctor protected SnoozeCriterion(android.os.Parcel);
-    method public int describeContents();
-    method public CharSequence getConfirmation();
-    method public CharSequence getExplanation();
-    method public String getId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.SnoozeCriterion> CREATOR;
-  }
-
-}
-
-package android.service.oemlock {
-
-  public class OemLockManager {
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE) public String getLockName();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE) public boolean isOemUnlockAllowedByCarrier();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USER_OEM_UNLOCK_STATE) public boolean isOemUnlockAllowedByUser();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE) public void setOemUnlockAllowedByCarrier(boolean, @Nullable byte[]);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USER_OEM_UNLOCK_STATE) public void setOemUnlockAllowedByUser(boolean);
-  }
-
-}
-
-package android.service.persistentdata {
-
-  public class PersistentDataBlockManager {
-    method @RequiresPermission("android.permission.ACCESS_PDB_STATE") public int getDataBlockSize();
-    method @android.service.persistentdata.PersistentDataBlockManager.FlashLockState @RequiresPermission(anyOf={android.Manifest.permission.READ_OEM_UNLOCK_STATE, "android.permission.OEM_UNLOCK_STATE"}) public int getFlashLockState();
-    method public long getMaximumDataBlockSize();
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_OEM_UNLOCK_STATE, "android.permission.OEM_UNLOCK_STATE"}) public boolean getOemUnlockEnabled();
-    method public byte[] read();
-    method @Deprecated @RequiresPermission("android.permission.OEM_UNLOCK_STATE") public void setOemUnlockEnabled(boolean);
-    method @RequiresPermission("android.permission.OEM_UNLOCK_STATE") public void wipe();
-    method public int write(byte[]);
-    field public static final int FLASH_LOCK_LOCKED = 1; // 0x1
-    field public static final int FLASH_LOCK_UNKNOWN = -1; // 0xffffffff
-    field public static final int FLASH_LOCK_UNLOCKED = 0; // 0x0
-  }
-
-  @IntDef(prefix={"FLASH_LOCK_"}, value={android.service.persistentdata.PersistentDataBlockManager.FLASH_LOCK_UNKNOWN, android.service.persistentdata.PersistentDataBlockManager.FLASH_LOCK_LOCKED, android.service.persistentdata.PersistentDataBlockManager.FLASH_LOCK_UNLOCKED}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface PersistentDataBlockManager.FlashLockState {
-  }
-
-}
-
-package android.service.quicksettings {
-
-  public class TileService extends android.app.Service {
-    method public final void setStatusIcon(android.graphics.drawable.Icon, String);
-  }
-
-}
-
-package android.service.resolver {
-
-  public abstract class ResolverRankerService extends android.app.Service {
-    ctor public ResolverRankerService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public void onPredictSharingProbabilities(java.util.List<android.service.resolver.ResolverTarget>);
-    method public void onTrainRankingModel(java.util.List<android.service.resolver.ResolverTarget>, int);
-    field public static final String BIND_PERMISSION = "android.permission.BIND_RESOLVER_RANKER_SERVICE";
-    field public static final String HOLD_PERMISSION = "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE";
-    field public static final String SERVICE_INTERFACE = "android.service.resolver.ResolverRankerService";
-  }
-
-  public final class ResolverTarget implements android.os.Parcelable {
-    ctor public ResolverTarget();
-    method public int describeContents();
-    method public float getChooserScore();
-    method public float getLaunchScore();
-    method public float getRecencyScore();
-    method public float getSelectProbability();
-    method public float getTimeSpentScore();
-    method public void setChooserScore(float);
-    method public void setLaunchScore(float);
-    method public void setRecencyScore(float);
-    method public void setSelectProbability(float);
-    method public void setTimeSpentScore(float);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.resolver.ResolverTarget> CREATOR;
-  }
-
-}
-
-package android.service.settings.suggestions {
-
-  public final class Suggestion implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getFlags();
-    method public android.graphics.drawable.Icon getIcon();
-    method public String getId();
-    method public android.app.PendingIntent getPendingIntent();
-    method public CharSequence getSummary();
-    method public CharSequence getTitle();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.settings.suggestions.Suggestion> CREATOR;
-    field public static final int FLAG_HAS_BUTTON = 1; // 0x1
-  }
-
-  public static class Suggestion.Builder {
-    ctor public Suggestion.Builder(String);
-    method public android.service.settings.suggestions.Suggestion build();
-    method public android.service.settings.suggestions.Suggestion.Builder setFlags(int);
-    method public android.service.settings.suggestions.Suggestion.Builder setIcon(android.graphics.drawable.Icon);
-    method public android.service.settings.suggestions.Suggestion.Builder setPendingIntent(android.app.PendingIntent);
-    method public android.service.settings.suggestions.Suggestion.Builder setSummary(CharSequence);
-    method public android.service.settings.suggestions.Suggestion.Builder setTitle(CharSequence);
-  }
-
-  public abstract class SuggestionService extends android.app.Service {
-    ctor public SuggestionService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public abstract java.util.List<android.service.settings.suggestions.Suggestion> onGetSuggestions();
-    method public abstract void onSuggestionDismissed(android.service.settings.suggestions.Suggestion);
-    method public abstract void onSuggestionLaunched(android.service.settings.suggestions.Suggestion);
-  }
-
-}
-
-package android.service.storage {
-
-  public abstract class ExternalStorageService extends android.app.Service {
-    ctor public ExternalStorageService();
-    method @NonNull public final android.os.IBinder onBind(@NonNull android.content.Intent);
-    method public abstract void onEndSession(@NonNull String) throws java.io.IOException;
-    method public abstract void onStartSession(@NonNull String, int, @NonNull android.os.ParcelFileDescriptor, @NonNull java.io.File, @NonNull java.io.File) throws java.io.IOException;
-    method public abstract void onVolumeStateChanged(@NonNull android.os.storage.StorageVolume) throws java.io.IOException;
-    field public static final int FLAG_SESSION_ATTRIBUTE_INDEXABLE = 2; // 0x2
-    field public static final int FLAG_SESSION_TYPE_FUSE = 1; // 0x1
-    field public static final String SERVICE_INTERFACE = "android.service.storage.ExternalStorageService";
-  }
-
-}
-
-package android.service.textclassifier {
-
-  public abstract class TextClassifierService extends android.app.Service {
-    ctor public TextClassifierService();
-    method @NonNull public static android.view.textclassifier.TextClassifier getDefaultTextClassifierImplementation(@NonNull android.content.Context);
-    method @Deprecated public final android.view.textclassifier.TextClassifier getLocalTextClassifier();
-    method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
-    method @MainThread public abstract void onClassifyText(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextClassification.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextClassification>);
-    method public void onConnected();
-    method @MainThread public void onCreateTextClassificationSession(@NonNull android.view.textclassifier.TextClassificationContext, @NonNull android.view.textclassifier.TextClassificationSessionId);
-    method @MainThread public void onDestroyTextClassificationSession(@NonNull android.view.textclassifier.TextClassificationSessionId);
-    method @MainThread public void onDetectLanguage(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextLanguage.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextLanguage>);
-    method public void onDisconnected();
-    method @MainThread public abstract void onGenerateLinks(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextLinks.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextLinks>);
-    method @Deprecated @MainThread public void onSelectionEvent(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.SelectionEvent);
-    method @MainThread public void onSuggestConversationActions(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.ConversationActions.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.ConversationActions>);
-    method @MainThread public abstract void onSuggestSelection(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextSelection.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextSelection>);
-    method @MainThread public void onTextClassifierEvent(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextClassifierEvent);
-    field public static final String SERVICE_INTERFACE = "android.service.textclassifier.TextClassifierService";
-  }
-
-  public static interface TextClassifierService.Callback<T> {
-    method public void onFailure(@NonNull CharSequence);
-    method public void onSuccess(T);
-  }
-
-}
-
-package android.service.trust {
-
-  public class TrustAgentService extends android.app.Service {
-    ctor public TrustAgentService();
-    method public final void addEscrowToken(byte[], android.os.UserHandle);
-    method @Deprecated public final void grantTrust(CharSequence, long, boolean);
-    method public final void grantTrust(CharSequence, long, int);
-    method public final void isEscrowTokenActive(long, android.os.UserHandle);
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method public boolean onConfigure(java.util.List<android.os.PersistableBundle>);
-    method public void onDeviceLocked();
-    method public void onDeviceUnlockLockout(long);
-    method public void onDeviceUnlocked();
-    method public void onEscrowTokenAdded(byte[], long, android.os.UserHandle);
-    method public void onEscrowTokenRemoved(long, boolean);
-    method public void onEscrowTokenStateReceived(long, int);
-    method public void onTrustTimeout();
-    method public void onUnlockAttempt(boolean);
-    method public final void removeEscrowToken(long, android.os.UserHandle);
-    method public final void revokeTrust();
-    method public final void setManagingTrust(boolean);
-    method public final void showKeyguardErrorMessage(@NonNull CharSequence);
-    method public final void unlockUserWithToken(long, byte[], android.os.UserHandle);
-    field public static final int FLAG_GRANT_TRUST_DISMISS_KEYGUARD = 2; // 0x2
-    field public static final int FLAG_GRANT_TRUST_INITIATED_BY_USER = 1; // 0x1
-    field public static final String SERVICE_INTERFACE = "android.service.trust.TrustAgentService";
-    field public static final int TOKEN_STATE_ACTIVE = 1; // 0x1
-    field public static final int TOKEN_STATE_INACTIVE = 0; // 0x0
-    field public static final String TRUST_AGENT_META_DATA = "android.service.trust.trustagent";
-  }
-
-}
-
-package android.service.voice {
-
-  public class VoiceInteractionService extends android.app.Service {
-    method @NonNull @RequiresPermission("android.permission.MANAGE_VOICE_KEYPHRASES") public final android.media.voice.KeyphraseModelManager createKeyphraseModelManager();
-  }
-
-}
-
-package android.service.wallpaper {
-
-  public class WallpaperService.Engine {
-    method public boolean isInAmbientMode();
-    method public void onAmbientModeChanged(boolean, long);
-  }
-
-}
-
-package android.service.watchdog {
-
-  public abstract class ExplicitHealthCheckService extends android.app.Service {
-    ctor public ExplicitHealthCheckService();
-    method public final void notifyHealthCheckPassed(@NonNull String);
-    method @NonNull public final android.os.IBinder onBind(@NonNull android.content.Intent);
-    method public abstract void onCancelHealthCheck(@NonNull String);
-    method @NonNull public abstract java.util.List<java.lang.String> onGetRequestedPackages();
-    method @NonNull public abstract java.util.List<android.service.watchdog.ExplicitHealthCheckService.PackageConfig> onGetSupportedPackages();
-    method public abstract void onRequestHealthCheck(@NonNull String);
-    field public static final String BIND_PERMISSION = "android.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE";
-    field public static final String SERVICE_INTERFACE = "android.service.watchdog.ExplicitHealthCheckService";
-  }
-
-  public static final class ExplicitHealthCheckService.PackageConfig implements android.os.Parcelable {
-    ctor public ExplicitHealthCheckService.PackageConfig(@NonNull String, long);
-    method public int describeContents();
-    method public long getHealthCheckTimeoutMillis();
-    method @NonNull public String getPackageName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.watchdog.ExplicitHealthCheckService.PackageConfig> CREATOR;
-  }
-
-}
-
-package android.telecom {
-
-  @Deprecated public class AudioState implements android.os.Parcelable {
-    ctor @Deprecated public AudioState(boolean, int, int);
-    ctor @Deprecated public AudioState(android.telecom.AudioState);
-    ctor @Deprecated public AudioState(android.telecom.CallAudioState);
-    method @Deprecated public static String audioRouteToString(int);
-    method @Deprecated public int describeContents();
-    method @Deprecated public int getRoute();
-    method @Deprecated public int getSupportedRouteMask();
-    method @Deprecated public boolean isMuted();
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.telecom.AudioState> CREATOR;
-    field @Deprecated public static final int ROUTE_BLUETOOTH = 2; // 0x2
-    field @Deprecated public static final int ROUTE_EARPIECE = 1; // 0x1
-    field @Deprecated public static final int ROUTE_SPEAKER = 8; // 0x8
-    field @Deprecated public static final int ROUTE_WIRED_HEADSET = 4; // 0x4
-    field @Deprecated public static final int ROUTE_WIRED_OR_EARPIECE = 5; // 0x5
-  }
-
-  public final class Call {
-    method @Deprecated public void addListener(android.telecom.Call.Listener);
-    method public void enterBackgroundAudioProcessing();
-    method public void exitBackgroundAudioProcessing(boolean);
-    method @Deprecated public void removeListener(android.telecom.Call.Listener);
-    field @Deprecated public static final int STATE_PRE_DIAL_WAIT = 8; // 0x8
-  }
-
-  @Deprecated public abstract static class Call.Listener extends android.telecom.Call.Callback {
-    ctor @Deprecated public Call.Listener();
-  }
-
-  public static class CallScreeningService.CallResponse.Builder {
-    method @NonNull @RequiresPermission(android.Manifest.permission.CAPTURE_AUDIO_OUTPUT) public android.telecom.CallScreeningService.CallResponse.Builder setShouldScreenCallViaAudioProcessing(boolean);
-  }
-
-  public abstract class Conference extends android.telecom.Conferenceable {
-    method @Deprecated public final android.telecom.AudioState getAudioState();
-    method @Deprecated public final long getConnectTimeMillis();
-    method public android.telecom.Connection getPrimaryConnection();
-    method @NonNull public final String getTelecomCallId();
-    method @Deprecated public void onAudioStateChanged(android.telecom.AudioState);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public final void setAddress(@NonNull android.net.Uri, int);
-    method public final void setCallerDisplayName(@NonNull String, int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setConferenceState(boolean);
-    method @Deprecated public final void setConnectTimeMillis(long);
-  }
-
-  public abstract class Connection extends android.telecom.Conferenceable {
-    method @Deprecated public final android.telecom.AudioState getAudioState();
-    method @IntRange(from=0) public final long getConnectTimeMillis();
-    method public final long getConnectionStartElapsedRealtimeMillis();
-    method @Nullable public android.telecom.PhoneAccountHandle getPhoneAccountHandle();
-    method @Nullable public final String getTelecomCallId();
-    method @Deprecated public void onAudioStateChanged(android.telecom.AudioState);
-    method public final void resetConnectionTime();
-    method public void setCallDirection(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public final void setConnectTimeMillis(@IntRange(from=0) long);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public final void setConnectionStartElapsedRealtimeMillis(long);
-    method public void setPhoneAccountHandle(@NonNull android.telecom.PhoneAccountHandle);
-    method public void setTelecomCallId(@NonNull String);
-    field public static final int CAPABILITY_CONFERENCE_HAS_NO_CHILDREN = 2097152; // 0x200000
-    field public static final int CAPABILITY_SPEED_UP_MT_AUDIO = 262144; // 0x40000
-    field public static final String EXTRA_DISABLE_ADD_CALL = "android.telecom.extra.DISABLE_ADD_CALL";
-    field public static final int PROPERTY_EMERGENCY_CALLBACK_MODE = 1; // 0x1
-    field public static final int PROPERTY_GENERIC_CONFERENCE = 2; // 0x2
-    field public static final int PROPERTY_IS_DOWNGRADED_CONFERENCE = 64; // 0x40
-    field public static final int PROPERTY_REMOTELY_HOSTED = 2048; // 0x800
-  }
-
-  public final class ConnectionRequest implements android.os.Parcelable {
-    method @Nullable public String getTelecomCallId();
-  }
-
-  public abstract class ConnectionService extends android.app.Service {
-    method public final void addExistingConnection(@NonNull android.telecom.PhoneAccountHandle, @NonNull android.telecom.Connection, @NonNull android.telecom.Conference);
-  }
-
-  public final class DisconnectCause implements android.os.Parcelable {
-    field public static final String REASON_EMULATING_SINGLE_CALL = "EMULATING_SINGLE_CALL";
-  }
-
-  public abstract class InCallService extends android.app.Service {
-    method @Deprecated public android.telecom.Phone getPhone();
-    method @Deprecated public void onPhoneCreated(android.telecom.Phone);
-    method @Deprecated public void onPhoneDestroyed(android.telecom.Phone);
-  }
-
-  public class ParcelableCallAnalytics implements android.os.Parcelable {
-    ctor public ParcelableCallAnalytics(long, long, int, boolean, boolean, int, int, boolean, String, boolean, java.util.List<android.telecom.ParcelableCallAnalytics.AnalyticsEvent>, java.util.List<android.telecom.ParcelableCallAnalytics.EventTiming>);
-    ctor public ParcelableCallAnalytics(android.os.Parcel);
-    method public java.util.List<android.telecom.ParcelableCallAnalytics.AnalyticsEvent> analyticsEvents();
-    method public int describeContents();
-    method public long getCallDurationMillis();
-    method public int getCallTechnologies();
-    method public int getCallTerminationCode();
-    method public int getCallType();
-    method public String getConnectionService();
-    method public java.util.List<android.telecom.ParcelableCallAnalytics.EventTiming> getEventTimings();
-    method public long getStartTimeMillis();
-    method public boolean isAdditionalCall();
-    method public boolean isCreatedFromExistingConnection();
-    method public boolean isEmergencyCall();
-    method public boolean isInterrupted();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CALLTYPE_INCOMING = 1; // 0x1
-    field public static final int CALLTYPE_OUTGOING = 2; // 0x2
-    field public static final int CALLTYPE_UNKNOWN = 0; // 0x0
-    field public static final int CDMA_PHONE = 1; // 0x1
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.ParcelableCallAnalytics> CREATOR;
-    field public static final int GSM_PHONE = 2; // 0x2
-    field public static final int IMS_PHONE = 4; // 0x4
-    field public static final long MILLIS_IN_1_SECOND = 1000L; // 0x3e8L
-    field public static final long MILLIS_IN_5_MINUTES = 300000L; // 0x493e0L
-    field public static final int SIP_PHONE = 8; // 0x8
-    field public static final int STILL_CONNECTED = -1; // 0xffffffff
-    field public static final int THIRD_PARTY_PHONE = 16; // 0x10
-  }
-
-  public static final class ParcelableCallAnalytics.AnalyticsEvent implements android.os.Parcelable {
-    ctor public ParcelableCallAnalytics.AnalyticsEvent(int, long);
-    method public int describeContents();
-    method public int getEventName();
-    method public long getTimeSinceLastEvent();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int AUDIO_ROUTE_BT = 204; // 0xcc
-    field public static final int AUDIO_ROUTE_EARPIECE = 205; // 0xcd
-    field public static final int AUDIO_ROUTE_HEADSET = 206; // 0xce
-    field public static final int AUDIO_ROUTE_SPEAKER = 207; // 0xcf
-    field public static final int BIND_CS = 5; // 0x5
-    field public static final int BLOCK_CHECK_FINISHED = 105; // 0x69
-    field public static final int BLOCK_CHECK_INITIATED = 104; // 0x68
-    field public static final int CONFERENCE_WITH = 300; // 0x12c
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.ParcelableCallAnalytics.AnalyticsEvent> CREATOR;
-    field public static final int CS_BOUND = 6; // 0x6
-    field public static final int DIRECT_TO_VM_FINISHED = 103; // 0x67
-    field public static final int DIRECT_TO_VM_INITIATED = 102; // 0x66
-    field public static final int FILTERING_COMPLETED = 107; // 0x6b
-    field public static final int FILTERING_INITIATED = 106; // 0x6a
-    field public static final int FILTERING_TIMED_OUT = 108; // 0x6c
-    field public static final int MUTE = 202; // 0xca
-    field public static final int REMOTELY_HELD = 402; // 0x192
-    field public static final int REMOTELY_UNHELD = 403; // 0x193
-    field public static final int REQUEST_ACCEPT = 7; // 0x7
-    field public static final int REQUEST_HOLD = 400; // 0x190
-    field public static final int REQUEST_PULL = 500; // 0x1f4
-    field public static final int REQUEST_REJECT = 8; // 0x8
-    field public static final int REQUEST_UNHOLD = 401; // 0x191
-    field public static final int SCREENING_COMPLETED = 101; // 0x65
-    field public static final int SCREENING_SENT = 100; // 0x64
-    field public static final int SET_ACTIVE = 1; // 0x1
-    field public static final int SET_DIALING = 4; // 0x4
-    field public static final int SET_DISCONNECTED = 2; // 0x2
-    field public static final int SET_HOLD = 404; // 0x194
-    field public static final int SET_PARENT = 302; // 0x12e
-    field public static final int SET_SELECT_PHONE_ACCOUNT = 0; // 0x0
-    field public static final int SILENCE = 201; // 0xc9
-    field public static final int SKIP_RINGING = 200; // 0xc8
-    field public static final int SPLIT_CONFERENCE = 301; // 0x12d
-    field public static final int START_CONNECTION = 3; // 0x3
-    field public static final int SWAP = 405; // 0x195
-    field public static final int UNMUTE = 203; // 0xcb
-  }
-
-  public static final class ParcelableCallAnalytics.EventTiming implements android.os.Parcelable {
-    ctor public ParcelableCallAnalytics.EventTiming(int, long);
-    method public int describeContents();
-    method public int getName();
-    method public long getTime();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ACCEPT_TIMING = 0; // 0x0
-    field public static final int BIND_CS_TIMING = 6; // 0x6
-    field public static final int BLOCK_CHECK_FINISHED_TIMING = 9; // 0x9
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.ParcelableCallAnalytics.EventTiming> CREATOR;
-    field public static final int DIRECT_TO_VM_FINISHED_TIMING = 8; // 0x8
-    field public static final int DISCONNECT_TIMING = 2; // 0x2
-    field public static final int FILTERING_COMPLETED_TIMING = 10; // 0xa
-    field public static final int FILTERING_TIMED_OUT_TIMING = 11; // 0xb
-    field public static final int HOLD_TIMING = 3; // 0x3
-    field public static final int INVALID = 999999; // 0xf423f
-    field public static final int OUTGOING_TIME_TO_DIALING_TIMING = 5; // 0x5
-    field public static final int REJECT_TIMING = 1; // 0x1
-    field public static final int SCREENING_COMPLETED_TIMING = 7; // 0x7
-    field public static final int UNHOLD_TIMING = 4; // 0x4
-  }
-
-  @Deprecated public final class Phone {
-    method @Deprecated public void addListener(android.telecom.Phone.Listener);
-    method @Deprecated public boolean canAddCall();
-    method @Deprecated public android.telecom.AudioState getAudioState();
-    method @Deprecated public android.telecom.CallAudioState getCallAudioState();
-    method @Deprecated public java.util.List<android.telecom.Call> getCalls();
-    method @Deprecated public void removeListener(android.telecom.Phone.Listener);
-    method @Deprecated public void requestBluetoothAudio(String);
-    method @Deprecated public void setAudioRoute(int);
-    method @Deprecated public void setMuted(boolean);
-  }
-
-  @Deprecated public abstract static class Phone.Listener {
-    ctor @Deprecated public Phone.Listener();
-    method @Deprecated public void onAudioStateChanged(android.telecom.Phone, android.telecom.AudioState);
-    method @Deprecated public void onBringToForeground(android.telecom.Phone, boolean);
-    method @Deprecated public void onCallAdded(android.telecom.Phone, android.telecom.Call);
-    method @Deprecated public void onCallAudioStateChanged(android.telecom.Phone, android.telecom.CallAudioState);
-    method @Deprecated public void onCallRemoved(android.telecom.Phone, android.telecom.Call);
-    method @Deprecated public void onCanAddCallChanged(android.telecom.Phone, boolean);
-    method @Deprecated public void onSilenceRinger(android.telecom.Phone);
-  }
-
-  public final class PhoneAccount implements android.os.Parcelable {
-    field public static final int CAPABILITY_EMERGENCY_CALLS_ONLY = 128; // 0x80
-    field public static final int CAPABILITY_EMERGENCY_PREFERRED = 8192; // 0x2000
-    field public static final int CAPABILITY_EMERGENCY_VIDEO_CALLING = 512; // 0x200
-    field public static final int CAPABILITY_MULTI_USER = 32; // 0x20
-    field public static final String EXTRA_PLAY_CALL_RECORDING_TONE = "android.telecom.extra.PLAY_CALL_RECORDING_TONE";
-    field public static final String EXTRA_SORT_ORDER = "android.telecom.extra.SORT_ORDER";
-  }
-
-  public static class PhoneAccount.Builder {
-    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.telecom.PhoneAccount.Builder setGroupId(@NonNull String);
-  }
-
-  public class PhoneAccountSuggestionService extends android.app.Service {
-    ctor public PhoneAccountSuggestionService();
-    method public void onAccountSuggestionRequest(@NonNull String);
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public final void suggestPhoneAccounts(@NonNull String, @NonNull java.util.List<android.telecom.PhoneAccountSuggestion>);
-    field public static final String SERVICE_INTERFACE = "android.telecom.PhoneAccountSuggestionService";
-  }
-
-  public final class RemoteConference {
-    method @Deprecated public void setAudioState(android.telecom.AudioState);
-  }
-
-  public final class RemoteConnection {
-    method @Deprecated public void setAudioState(android.telecom.AudioState);
-  }
-
-  public final class StatusHints implements android.os.Parcelable {
-    ctor @Deprecated public StatusHints(android.content.ComponentName, CharSequence, int, android.os.Bundle);
-    method @Deprecated public android.graphics.drawable.Drawable getIcon(android.content.Context);
-    method @Deprecated public int getIconResId();
-    method @Deprecated public android.content.ComponentName getPackageName();
-  }
-
-  public final class TelecomAnalytics implements android.os.Parcelable {
-    ctor public TelecomAnalytics(java.util.List<android.telecom.TelecomAnalytics.SessionTiming>, java.util.List<android.telecom.ParcelableCallAnalytics>);
-    method public int describeContents();
-    method public java.util.List<android.telecom.ParcelableCallAnalytics> getCallAnalytics();
-    method public java.util.List<android.telecom.TelecomAnalytics.SessionTiming> getSessionTimings();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.TelecomAnalytics> CREATOR;
-  }
-
-  public static final class TelecomAnalytics.SessionTiming implements android.os.Parcelable {
-    ctor public TelecomAnalytics.SessionTiming(int, long);
-    method public int describeContents();
-    method public Integer getKey();
-    method public long getTime();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.TelecomAnalytics.SessionTiming> CREATOR;
-    field public static final int CSW_ADD_CONFERENCE_CALL = 108; // 0x6c
-    field public static final int CSW_HANDLE_CREATE_CONNECTION_COMPLETE = 100; // 0x64
-    field public static final int CSW_REMOVE_CALL = 106; // 0x6a
-    field public static final int CSW_SET_ACTIVE = 101; // 0x65
-    field public static final int CSW_SET_DIALING = 103; // 0x67
-    field public static final int CSW_SET_DISCONNECTED = 104; // 0x68
-    field public static final int CSW_SET_IS_CONFERENCED = 107; // 0x6b
-    field public static final int CSW_SET_ON_HOLD = 105; // 0x69
-    field public static final int CSW_SET_RINGING = 102; // 0x66
-    field public static final int ICA_ANSWER_CALL = 1; // 0x1
-    field public static final int ICA_CONFERENCE = 8; // 0x8
-    field public static final int ICA_DISCONNECT_CALL = 3; // 0x3
-    field public static final int ICA_HOLD_CALL = 4; // 0x4
-    field public static final int ICA_MUTE = 6; // 0x6
-    field public static final int ICA_REJECT_CALL = 2; // 0x2
-    field public static final int ICA_SET_AUDIO_ROUTE = 7; // 0x7
-    field public static final int ICA_UNHOLD_CALL = 5; // 0x5
-  }
-
-  public class TelecomManager {
-    method public void addNewUnknownCall(android.telecom.PhoneAccountHandle, android.os.Bundle);
-    method @Deprecated public void clearAccounts();
-    method public void clearPhoneAccounts();
-    method @NonNull public android.content.Intent createLaunchEmergencyDialerIntent(@Nullable String);
-    method @RequiresPermission(android.Manifest.permission.DUMP) public android.telecom.TelecomAnalytics dumpAnalytics();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void enablePhoneAccount(android.telecom.PhoneAccountHandle, boolean);
-    method public java.util.List<android.telecom.PhoneAccountHandle> getAllPhoneAccountHandles();
-    method public java.util.List<android.telecom.PhoneAccount> getAllPhoneAccounts();
-    method public int getAllPhoneAccountsCount();
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.List<android.telecom.PhoneAccountHandle> getCallCapablePhoneAccounts(boolean);
-    method public int getCallState();
-    method public android.telecom.PhoneAccountHandle getConnectionManager();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getCurrentTtyMode();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getDefaultDialerPackage(@NonNull android.os.UserHandle);
-    method @Deprecated public android.content.ComponentName getDefaultPhoneApp();
-    method public java.util.List<android.telecom.PhoneAccountHandle> getPhoneAccountsForPackage();
-    method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public java.util.List<android.telecom.PhoneAccountHandle> getPhoneAccountsSupportingScheme(String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean isInEmergencyCall();
-    method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isRinging();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setUserSelectedOutgoingPhoneAccount(@Nullable android.telecom.PhoneAccountHandle);
-    field public static final String ACTION_CURRENT_TTY_MODE_CHANGED = "android.telecom.action.CURRENT_TTY_MODE_CHANGED";
-    field public static final String ACTION_TTY_PREFERRED_MODE_CHANGED = "android.telecom.action.TTY_PREFERRED_MODE_CHANGED";
-    field public static final int CALL_SOURCE_EMERGENCY_DIALPAD = 1; // 0x1
-    field public static final int CALL_SOURCE_EMERGENCY_SHORTCUT = 2; // 0x2
-    field public static final int CALL_SOURCE_UNSPECIFIED = 0; // 0x0
-    field public static final String EXTRA_CALL_BACK_INTENT = "android.telecom.extra.CALL_BACK_INTENT";
-    field public static final String EXTRA_CALL_SOURCE = "android.telecom.extra.CALL_SOURCE";
-    field public static final String EXTRA_CALL_TECHNOLOGY_TYPE = "android.telecom.extra.CALL_TECHNOLOGY_TYPE";
-    field public static final String EXTRA_CLEAR_MISSED_CALLS_INTENT = "android.telecom.extra.CLEAR_MISSED_CALLS_INTENT";
-    field public static final String EXTRA_CONNECTION_SERVICE = "android.telecom.extra.CONNECTION_SERVICE";
-    field public static final String EXTRA_CURRENT_TTY_MODE = "android.telecom.extra.CURRENT_TTY_MODE";
-    field public static final String EXTRA_IS_USER_INTENT_EMERGENCY_CALL = "android.telecom.extra.IS_USER_INTENT_EMERGENCY_CALL";
-    field public static final String EXTRA_TTY_PREFERRED_MODE = "android.telecom.extra.TTY_PREFERRED_MODE";
-    field public static final String EXTRA_UNKNOWN_CALL_HANDLE = "android.telecom.extra.UNKNOWN_CALL_HANDLE";
-    field public static final int TTY_MODE_FULL = 1; // 0x1
-    field public static final int TTY_MODE_HCO = 2; // 0x2
-    field public static final int TTY_MODE_OFF = 0; // 0x0
-    field public static final int TTY_MODE_VCO = 3; // 0x3
-  }
-
-}
-
-package android.telephony {
-
-  public final class AccessNetworkConstants {
-    field public static final int TRANSPORT_TYPE_INVALID = -1; // 0xffffffff
-  }
-
-  public static final class AccessNetworkConstants.NgranBands {
-    method public static int getFrequencyRangeGroup(int);
-    field public static final int FREQUENCY_RANGE_GROUP_1 = 1; // 0x1
-    field public static final int FREQUENCY_RANGE_GROUP_2 = 2; // 0x2
-    field public static final int FREQUENCY_RANGE_GROUP_UNKNOWN = 0; // 0x0
-  }
-
-  public final class BarringInfo implements android.os.Parcelable {
-    ctor public BarringInfo();
-    method @NonNull public android.telephony.BarringInfo createLocationInfoSanitizedCopy();
-  }
-
-  public final class CallAttributes implements android.os.Parcelable {
-    ctor public CallAttributes(@NonNull android.telephony.PreciseCallState, int, @NonNull android.telephony.CallQuality);
-    method public int describeContents();
-    method @NonNull public android.telephony.CallQuality getCallQuality();
-    method public int getNetworkType();
-    method @NonNull public android.telephony.PreciseCallState getPreciseCallState();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CallAttributes> CREATOR;
-  }
-
-  public final class CallQuality implements android.os.Parcelable {
-    ctor public CallQuality(int, int, int, int, int, int, int, int, int, int, int);
-    ctor public CallQuality(int, int, int, int, int, int, int, int, int, int, int, boolean, boolean, boolean);
-    method public int describeContents();
-    method public int getAverageRelativeJitter();
-    method public int getAverageRoundTripTime();
-    method public int getCallDuration();
-    method public int getCodecType();
-    method public int getDownlinkCallQualityLevel();
-    method public int getMaxRelativeJitter();
-    method public int getNumRtpPacketsNotReceived();
-    method public int getNumRtpPacketsReceived();
-    method public int getNumRtpPacketsTransmitted();
-    method public int getNumRtpPacketsTransmittedLost();
-    method public int getUplinkCallQualityLevel();
-    method public boolean isIncomingSilenceDetectedAtCallSetup();
-    method public boolean isOutgoingSilenceDetectedAtCallSetup();
-    method public boolean isRtpInactivityDetected();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CALL_QUALITY_BAD = 4; // 0x4
-    field public static final int CALL_QUALITY_EXCELLENT = 0; // 0x0
-    field public static final int CALL_QUALITY_FAIR = 2; // 0x2
-    field public static final int CALL_QUALITY_GOOD = 1; // 0x1
-    field public static final int CALL_QUALITY_NOT_AVAILABLE = 5; // 0x5
-    field public static final int CALL_QUALITY_POOR = 3; // 0x3
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CallQuality> CREATOR;
-  }
-
-  public class CarrierConfigManager {
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getDefaultCarrierServicePackageName();
-    method @NonNull public static android.os.PersistableBundle getDefaultConfig();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void overrideConfig(int, @Nullable android.os.PersistableBundle);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void updateConfigForPhoneId(int, String);
-    field public static final String KEY_CARRIER_SETUP_APP_STRING = "carrier_setup_app_string";
-    field public static final String KEY_SUPPORT_CDMA_1X_VOICE_CALLS_BOOL = "support_cdma_1x_voice_calls_bool";
-  }
-
-  public static final class CarrierConfigManager.Wifi {
-    field public static final String KEY_HOTSPOT_MAX_CLIENT_COUNT = "wifi.hotspot_maximum_client_count";
-    field public static final String KEY_PREFIX = "wifi.";
-  }
-
-  public final class CarrierRestrictionRules implements android.os.Parcelable {
-    method @NonNull public java.util.List<java.lang.Boolean> areCarrierIdentifiersAllowed(@NonNull java.util.List<android.service.carrier.CarrierIdentifier>);
-    method public int describeContents();
-    method @NonNull public java.util.List<android.service.carrier.CarrierIdentifier> getAllowedCarriers();
-    method public int getDefaultCarrierRestriction();
-    method @NonNull public java.util.List<android.service.carrier.CarrierIdentifier> getExcludedCarriers();
-    method public int getMultiSimPolicy();
-    method public boolean isAllCarriersAllowed();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CARRIER_RESTRICTION_DEFAULT_ALLOWED = 1; // 0x1
-    field public static final int CARRIER_RESTRICTION_DEFAULT_NOT_ALLOWED = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CarrierRestrictionRules> CREATOR;
-    field public static final int MULTISIM_POLICY_NONE = 0; // 0x0
-    field public static final int MULTISIM_POLICY_ONE_VALID_SIM_MUST_BE_PRESENT = 1; // 0x1
-  }
-
-  public static final class CarrierRestrictionRules.Builder {
-    ctor public CarrierRestrictionRules.Builder();
-    method @NonNull public android.telephony.CarrierRestrictionRules build();
-    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setAllCarriersAllowed();
-    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setAllowedCarriers(@NonNull java.util.List<android.service.carrier.CarrierIdentifier>);
-    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setDefaultCarrierRestriction(int);
-    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setExcludedCarriers(@NonNull java.util.List<android.service.carrier.CarrierIdentifier>);
-    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setMultiSimPolicy(int);
-  }
-
-  public class CbGeoUtils {
-  }
-
-  public static class CbGeoUtils.Circle implements android.telephony.CbGeoUtils.Geometry {
-    ctor public CbGeoUtils.Circle(@NonNull android.telephony.CbGeoUtils.LatLng, double);
-    method public boolean contains(@NonNull android.telephony.CbGeoUtils.LatLng);
-    method @NonNull public android.telephony.CbGeoUtils.LatLng getCenter();
-    method public double getRadius();
-  }
-
-  public static interface CbGeoUtils.Geometry {
-    method public boolean contains(@NonNull android.telephony.CbGeoUtils.LatLng);
-  }
-
-  public static class CbGeoUtils.LatLng {
-    ctor public CbGeoUtils.LatLng(double, double);
-    method public double distance(@NonNull android.telephony.CbGeoUtils.LatLng);
-    method @NonNull public android.telephony.CbGeoUtils.LatLng subtract(@NonNull android.telephony.CbGeoUtils.LatLng);
-    field public final double lat;
-    field public final double lng;
-  }
-
-  public static class CbGeoUtils.Polygon implements android.telephony.CbGeoUtils.Geometry {
-    ctor public CbGeoUtils.Polygon(@NonNull java.util.List<android.telephony.CbGeoUtils.LatLng>);
-    method public boolean contains(@NonNull android.telephony.CbGeoUtils.LatLng);
-    method @NonNull public java.util.List<android.telephony.CbGeoUtils.LatLng> getVertices();
-  }
-
-  public class CellBroadcastIntents {
-    method public static void sendSmsCbReceivedBroadcast(@NonNull android.content.Context, @Nullable android.os.UserHandle, @NonNull android.telephony.SmsCbMessage, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, int);
-    field public static final String ACTION_AREA_INFO_UPDATED = "android.telephony.action.AREA_INFO_UPDATED";
-  }
-
-  public abstract class CellBroadcastService extends android.app.Service {
-    ctor public CellBroadcastService();
-    method @NonNull @WorkerThread public abstract CharSequence getCellBroadcastAreaInfo(int);
-    method @CallSuper public android.os.IBinder onBind(@Nullable android.content.Intent);
-    method public abstract void onCdmaCellBroadcastSms(int, @NonNull byte[], int);
-    method public abstract void onCdmaScpMessage(int, @NonNull java.util.List<android.telephony.cdma.CdmaSmsCbProgramData>, @NonNull String, @NonNull java.util.function.Consumer<android.os.Bundle>);
-    method public abstract void onGsmCellBroadcastSms(int, @NonNull byte[]);
-    field public static final String CELL_BROADCAST_SERVICE_INTERFACE = "android.telephony.CellBroadcastService";
-  }
-
-  public abstract class CellIdentity implements android.os.Parcelable {
-    method @NonNull public abstract android.telephony.CellLocation asCellLocation();
-    method @NonNull public abstract android.telephony.CellIdentity sanitizeLocationInfo();
-  }
-
-  public final class CellIdentityCdma extends android.telephony.CellIdentity {
-    method @NonNull public android.telephony.cdma.CdmaCellLocation asCellLocation();
-    method @NonNull public android.telephony.CellIdentityCdma sanitizeLocationInfo();
-  }
-
-  public final class CellIdentityGsm extends android.telephony.CellIdentity {
-    method @NonNull public android.telephony.gsm.GsmCellLocation asCellLocation();
-    method @NonNull public android.telephony.CellIdentityGsm sanitizeLocationInfo();
-  }
-
-  public final class CellIdentityLte extends android.telephony.CellIdentity {
-    method @NonNull public android.telephony.gsm.GsmCellLocation asCellLocation();
-    method @NonNull public android.telephony.CellIdentityLte sanitizeLocationInfo();
-  }
-
-  public final class CellIdentityNr extends android.telephony.CellIdentity {
-    method @NonNull public android.telephony.CellLocation asCellLocation();
-    method @NonNull public android.telephony.CellIdentityNr sanitizeLocationInfo();
-  }
-
-  public final class CellIdentityTdscdma extends android.telephony.CellIdentity {
-    method @NonNull public android.telephony.gsm.GsmCellLocation asCellLocation();
-    method @NonNull public android.telephony.CellIdentityTdscdma sanitizeLocationInfo();
-  }
-
-  public final class CellIdentityWcdma extends android.telephony.CellIdentity {
-    method @NonNull public android.telephony.gsm.GsmCellLocation asCellLocation();
-    method @NonNull public android.telephony.CellIdentityWcdma sanitizeLocationInfo();
-  }
-
-  public final class DataFailCause {
-    field @Deprecated public static final int VSNCP_APN_UNATHORIZED = 2238; // 0x8be
-  }
-
-  public final class DataSpecificRegistrationInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.telephony.LteVopsSupportInfo getLteVopsSupportInfo();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.DataSpecificRegistrationInfo> CREATOR;
-  }
-
-  public final class ImsiEncryptionInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getKeyIdentifier();
-    method @Nullable public java.security.PublicKey getPublicKey();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ImsiEncryptionInfo> CREATOR;
-  }
-
-  public final class LteVopsSupportInfo implements android.os.Parcelable {
-    ctor public LteVopsSupportInfo(int, int);
-    method public int describeContents();
-    method public int getEmcBearerSupport();
-    method public int getVopsSupport();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.LteVopsSupportInfo> CREATOR;
-    field public static final int LTE_STATUS_NOT_AVAILABLE = 1; // 0x1
-    field public static final int LTE_STATUS_NOT_SUPPORTED = 3; // 0x3
-    field public static final int LTE_STATUS_SUPPORTED = 2; // 0x2
-  }
-
-  public class MbmsDownloadSession implements java.lang.AutoCloseable {
-    field public static final String MBMS_DOWNLOAD_SERVICE_ACTION = "android.telephony.action.EmbmsDownload";
-  }
-
-  public class MbmsGroupCallSession implements java.lang.AutoCloseable {
-    field public static final String MBMS_GROUP_CALL_SERVICE_ACTION = "android.telephony.action.EmbmsGroupCall";
-  }
-
-  public class MbmsStreamingSession implements java.lang.AutoCloseable {
-    field public static final String MBMS_STREAMING_SERVICE_ACTION = "android.telephony.action.EmbmsStreaming";
-  }
-
-  public final class NetworkRegistrationInfo implements android.os.Parcelable {
-    method @Nullable public android.telephony.DataSpecificRegistrationInfo getDataSpecificInfo();
-    method public int getRegistrationState();
-    method public int getRejectCause();
-    method public int getRoamingType();
-    method public boolean isEmergencyEnabled();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int REGISTRATION_STATE_DENIED = 3; // 0x3
-    field public static final int REGISTRATION_STATE_HOME = 1; // 0x1
-    field public static final int REGISTRATION_STATE_NOT_REGISTERED_OR_SEARCHING = 0; // 0x0
-    field public static final int REGISTRATION_STATE_NOT_REGISTERED_SEARCHING = 2; // 0x2
-    field public static final int REGISTRATION_STATE_ROAMING = 5; // 0x5
-    field public static final int REGISTRATION_STATE_UNKNOWN = 4; // 0x4
-  }
-
-  public static final class NetworkRegistrationInfo.Builder {
-    ctor public NetworkRegistrationInfo.Builder();
-    method @NonNull public android.telephony.NetworkRegistrationInfo build();
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setAccessNetworkTechnology(int);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setAvailableServices(@NonNull java.util.List<java.lang.Integer>);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setCellIdentity(@Nullable android.telephony.CellIdentity);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setDomain(int);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setEmergencyOnly(boolean);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setRegisteredPlmn(@Nullable String);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setRegistrationState(int);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setRejectCause(int);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setTransportType(int);
-  }
-
-  public abstract class NetworkService extends android.app.Service {
-    ctor public NetworkService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method @Nullable public abstract android.telephony.NetworkService.NetworkServiceProvider onCreateNetworkServiceProvider(int);
-    field public static final String SERVICE_INTERFACE = "android.telephony.NetworkService";
-  }
-
-  public abstract class NetworkService.NetworkServiceProvider implements java.lang.AutoCloseable {
-    ctor public NetworkService.NetworkServiceProvider(int);
-    method public abstract void close();
-    method public final int getSlotIndex();
-    method public final void notifyNetworkRegistrationInfoChanged();
-    method public void requestNetworkRegistrationInfo(int, @NonNull android.telephony.NetworkServiceCallback);
-  }
-
-  public class NetworkServiceCallback {
-    method public void onRequestNetworkRegistrationInfoComplete(int, @Nullable android.telephony.NetworkRegistrationInfo);
-    field public static final int RESULT_ERROR_BUSY = 3; // 0x3
-    field public static final int RESULT_ERROR_FAILED = 5; // 0x5
-    field public static final int RESULT_ERROR_ILLEGAL_STATE = 4; // 0x4
-    field public static final int RESULT_ERROR_INVALID_ARG = 2; // 0x2
-    field public static final int RESULT_ERROR_UNSUPPORTED = 1; // 0x1
-    field public static final int RESULT_SUCCESS = 0; // 0x0
-  }
-
-  public interface NumberVerificationCallback {
-    method public default void onCallReceived(@NonNull String);
-    method public default void onVerificationFailed(int);
-    field public static final int REASON_CONCURRENT_REQUESTS = 4; // 0x4
-    field public static final int REASON_IN_ECBM = 5; // 0x5
-    field public static final int REASON_IN_EMERGENCY_CALL = 6; // 0x6
-    field public static final int REASON_NETWORK_NOT_AVAILABLE = 2; // 0x2
-    field public static final int REASON_TIMED_OUT = 1; // 0x1
-    field public static final int REASON_TOO_MANY_CALLS = 3; // 0x3
-    field public static final int REASON_UNSPECIFIED = 0; // 0x0
-  }
-
-  public final class PhoneNumberRange implements android.os.Parcelable {
-    ctor public PhoneNumberRange(@NonNull String, @NonNull String, @NonNull String, @NonNull String);
-    method public int describeContents();
-    method public boolean matches(@NonNull String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.PhoneNumberRange> CREATOR;
-  }
-
-  public class PhoneNumberUtils {
-    method @NonNull public static String getUsernameFromUriNumber(@NonNull String);
-    method public static boolean isUriNumber(@Nullable String);
-    method public static boolean isVoiceMailNumber(@NonNull android.content.Context, int, @Nullable String);
-  }
-
-  public class PhoneStateListener {
-    method public void onCallAttributesChanged(@NonNull android.telephony.CallAttributes);
-    method public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber);
-    method public void onOutgoingEmergencySms(@NonNull android.telephony.emergency.EmergencyNumber);
-    method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onPreciseCallStateChanged(@NonNull android.telephony.PreciseCallState);
-    method public void onRadioPowerStateChanged(int);
-    method public void onSrvccStateChanged(int);
-    method public void onVoiceActivationStateChanged(int);
-    field @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public static final int LISTEN_CALL_ATTRIBUTES_CHANGED = 67108864; // 0x4000000
-    field @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION) public static final int LISTEN_OUTGOING_EMERGENCY_CALL = 268435456; // 0x10000000
-    field @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION) public static final int LISTEN_OUTGOING_EMERGENCY_SMS = 536870912; // 0x20000000
-    field @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public static final int LISTEN_PRECISE_CALL_STATE = 2048; // 0x800
-    field @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static final int LISTEN_RADIO_POWER_STATE_CHANGED = 8388608; // 0x800000
-    field @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static final int LISTEN_SRVCC_STATE_CHANGED = 16384; // 0x4000
-    field @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static final int LISTEN_VOICE_ACTIVATION_STATE = 131072; // 0x20000
-  }
-
-  public final class PreciseCallState implements android.os.Parcelable {
-    ctor public PreciseCallState(int, int, int, int, int);
-    method public int describeContents();
-    method public int getBackgroundCallState();
-    method public int getForegroundCallState();
-    method public int getRingingCallState();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.PreciseCallState> CREATOR;
-    field public static final int PRECISE_CALL_STATE_ACTIVE = 1; // 0x1
-    field public static final int PRECISE_CALL_STATE_ALERTING = 4; // 0x4
-    field public static final int PRECISE_CALL_STATE_DIALING = 3; // 0x3
-    field public static final int PRECISE_CALL_STATE_DISCONNECTED = 7; // 0x7
-    field public static final int PRECISE_CALL_STATE_DISCONNECTING = 8; // 0x8
-    field public static final int PRECISE_CALL_STATE_HOLDING = 2; // 0x2
-    field public static final int PRECISE_CALL_STATE_IDLE = 0; // 0x0
-    field public static final int PRECISE_CALL_STATE_INCOMING = 5; // 0x5
-    field public static final int PRECISE_CALL_STATE_NOT_VALID = -1; // 0xffffffff
-    field public static final int PRECISE_CALL_STATE_WAITING = 6; // 0x6
-  }
-
-  public final class PreciseDataConnectionState implements android.os.Parcelable {
-    method @Deprecated @NonNull public String getDataConnectionApn();
-    method @Deprecated public int getDataConnectionApnTypeBitMask();
-    method @Deprecated public int getDataConnectionFailCause();
-    method @Deprecated public int getDataConnectionState();
-  }
-
-  public final class PreciseDisconnectCause {
-    field public static final int ACCESS_CLASS_BLOCKED = 260; // 0x104
-    field public static final int ACCESS_INFORMATION_DISCARDED = 43; // 0x2b
-    field public static final int ACM_LIMIT_EXCEEDED = 68; // 0x44
-    field public static final int BEARER_CAPABILITY_NOT_AUTHORIZED = 57; // 0x39
-    field public static final int BEARER_NOT_AVAIL = 58; // 0x3a
-    field public static final int BEARER_SERVICE_NOT_IMPLEMENTED = 65; // 0x41
-    field public static final int BUSY = 17; // 0x11
-    field public static final int CALL_BARRED = 240; // 0xf0
-    field public static final int CALL_REJECTED = 21; // 0x15
-    field public static final int CDMA_ACCESS_BLOCKED = 1009; // 0x3f1
-    field public static final int CDMA_ACCESS_FAILURE = 1006; // 0x3ee
-    field public static final int CDMA_DROP = 1001; // 0x3e9
-    field public static final int CDMA_INTERCEPT = 1002; // 0x3ea
-    field public static final int CDMA_LOCKED_UNTIL_POWER_CYCLE = 1000; // 0x3e8
-    field public static final int CDMA_NOT_EMERGENCY = 1008; // 0x3f0
-    field public static final int CDMA_PREEMPTED = 1007; // 0x3ef
-    field public static final int CDMA_REORDER = 1003; // 0x3eb
-    field public static final int CDMA_RETRY_ORDER = 1005; // 0x3ed
-    field public static final int CDMA_SO_REJECT = 1004; // 0x3ec
-    field public static final int CHANNEL_NOT_AVAIL = 44; // 0x2c
-    field public static final int CHANNEL_UNACCEPTABLE = 6; // 0x6
-    field public static final int CONDITIONAL_IE_ERROR = 100; // 0x64
-    field public static final int DESTINATION_OUT_OF_ORDER = 27; // 0x1b
-    field public static final int ERROR_UNSPECIFIED = 65535; // 0xffff
-    field public static final int FACILITY_REJECTED = 29; // 0x1d
-    field public static final int FDN_BLOCKED = 241; // 0xf1
-    field public static final int IMEI_NOT_ACCEPTED = 243; // 0xf3
-    field public static final int IMSI_UNKNOWN_IN_VLR = 242; // 0xf2
-    field public static final int INCOMING_CALLS_BARRED_WITHIN_CUG = 55; // 0x37
-    field public static final int INCOMPATIBLE_DESTINATION = 88; // 0x58
-    field public static final int INFORMATION_ELEMENT_NON_EXISTENT = 99; // 0x63
-    field public static final int INTERWORKING_UNSPECIFIED = 127; // 0x7f
-    field public static final int INVALID_MANDATORY_INFORMATION = 96; // 0x60
-    field public static final int INVALID_NUMBER_FORMAT = 28; // 0x1c
-    field public static final int INVALID_TRANSACTION_IDENTIFIER = 81; // 0x51
-    field public static final int MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 101; // 0x65
-    field public static final int MESSAGE_TYPE_NON_IMPLEMENTED = 97; // 0x61
-    field public static final int MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 98; // 0x62
-    field public static final int NETWORK_DETACH = 261; // 0x105
-    field public static final int NETWORK_OUT_OF_ORDER = 38; // 0x26
-    field public static final int NETWORK_REJECT = 252; // 0xfc
-    field public static final int NETWORK_RESP_TIMEOUT = 251; // 0xfb
-    field public static final int NORMAL = 16; // 0x10
-    field public static final int NORMAL_UNSPECIFIED = 31; // 0x1f
-    field public static final int NOT_VALID = -1; // 0xffffffff
-    field public static final int NO_ANSWER_FROM_USER = 19; // 0x13
-    field public static final int NO_CIRCUIT_AVAIL = 34; // 0x22
-    field public static final int NO_DISCONNECT_CAUSE_AVAILABLE = 0; // 0x0
-    field public static final int NO_ROUTE_TO_DESTINATION = 3; // 0x3
-    field public static final int NO_USER_RESPONDING = 18; // 0x12
-    field public static final int NO_VALID_SIM = 249; // 0xf9
-    field public static final int NUMBER_CHANGED = 22; // 0x16
-    field public static final int OEM_CAUSE_1 = 61441; // 0xf001
-    field public static final int OEM_CAUSE_10 = 61450; // 0xf00a
-    field public static final int OEM_CAUSE_11 = 61451; // 0xf00b
-    field public static final int OEM_CAUSE_12 = 61452; // 0xf00c
-    field public static final int OEM_CAUSE_13 = 61453; // 0xf00d
-    field public static final int OEM_CAUSE_14 = 61454; // 0xf00e
-    field public static final int OEM_CAUSE_15 = 61455; // 0xf00f
-    field public static final int OEM_CAUSE_2 = 61442; // 0xf002
-    field public static final int OEM_CAUSE_3 = 61443; // 0xf003
-    field public static final int OEM_CAUSE_4 = 61444; // 0xf004
-    field public static final int OEM_CAUSE_5 = 61445; // 0xf005
-    field public static final int OEM_CAUSE_6 = 61446; // 0xf006
-    field public static final int OEM_CAUSE_7 = 61447; // 0xf007
-    field public static final int OEM_CAUSE_8 = 61448; // 0xf008
-    field public static final int OEM_CAUSE_9 = 61449; // 0xf009
-    field public static final int ONLY_DIGITAL_INFORMATION_BEARER_AVAILABLE = 70; // 0x46
-    field public static final int OPERATOR_DETERMINED_BARRING = 8; // 0x8
-    field public static final int OUT_OF_SRV = 248; // 0xf8
-    field public static final int PREEMPTION = 25; // 0x19
-    field public static final int PROTOCOL_ERROR_UNSPECIFIED = 111; // 0x6f
-    field public static final int QOS_NOT_AVAIL = 49; // 0x31
-    field public static final int RADIO_ACCESS_FAILURE = 253; // 0xfd
-    field public static final int RADIO_INTERNAL_ERROR = 250; // 0xfa
-    field public static final int RADIO_LINK_FAILURE = 254; // 0xfe
-    field public static final int RADIO_LINK_LOST = 255; // 0xff
-    field public static final int RADIO_OFF = 247; // 0xf7
-    field public static final int RADIO_RELEASE_ABNORMAL = 259; // 0x103
-    field public static final int RADIO_RELEASE_NORMAL = 258; // 0x102
-    field public static final int RADIO_SETUP_FAILURE = 257; // 0x101
-    field public static final int RADIO_UPLINK_FAILURE = 256; // 0x100
-    field public static final int RECOVERY_ON_TIMER_EXPIRED = 102; // 0x66
-    field public static final int REQUESTED_FACILITY_NOT_IMPLEMENTED = 69; // 0x45
-    field public static final int REQUESTED_FACILITY_NOT_SUBSCRIBED = 50; // 0x32
-    field public static final int RESOURCES_UNAVAILABLE_OR_UNSPECIFIED = 47; // 0x2f
-    field public static final int SEMANTICALLY_INCORRECT_MESSAGE = 95; // 0x5f
-    field public static final int SERVICE_OPTION_NOT_AVAILABLE = 63; // 0x3f
-    field public static final int SERVICE_OR_OPTION_NOT_IMPLEMENTED = 79; // 0x4f
-    field public static final int STATUS_ENQUIRY = 30; // 0x1e
-    field public static final int SWITCHING_CONGESTION = 42; // 0x2a
-    field public static final int TEMPORARY_FAILURE = 41; // 0x29
-    field public static final int UNOBTAINABLE_NUMBER = 1; // 0x1
-    field public static final int USER_NOT_MEMBER_OF_CUG = 87; // 0x57
-  }
-
-  public class ServiceState implements android.os.Parcelable {
-    method @Nullable public android.telephony.NetworkRegistrationInfo getNetworkRegistrationInfo(int, int);
-    method @NonNull public java.util.List<android.telephony.NetworkRegistrationInfo> getNetworkRegistrationInfoListForDomain(int);
-    method @NonNull public java.util.List<android.telephony.NetworkRegistrationInfo> getNetworkRegistrationInfoListForTransportType(int);
-    field public static final int ROAMING_TYPE_DOMESTIC = 2; // 0x2
-    field public static final int ROAMING_TYPE_INTERNATIONAL = 3; // 0x3
-    field public static final int ROAMING_TYPE_NOT_ROAMING = 0; // 0x0
-    field public static final int ROAMING_TYPE_UNKNOWN = 1; // 0x1
-  }
-
-  public final class SmsCbCmasInfo implements android.os.Parcelable {
-    ctor public SmsCbCmasInfo(int, int, int, int, int, int);
-    method public int describeContents();
-    method public int getCategory();
-    method public int getCertainty();
-    method public int getMessageClass();
-    method public int getResponseType();
-    method public int getSeverity();
-    method public int getUrgency();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CMAS_CATEGORY_CBRNE = 10; // 0xa
-    field public static final int CMAS_CATEGORY_ENV = 7; // 0x7
-    field public static final int CMAS_CATEGORY_FIRE = 5; // 0x5
-    field public static final int CMAS_CATEGORY_GEO = 0; // 0x0
-    field public static final int CMAS_CATEGORY_HEALTH = 6; // 0x6
-    field public static final int CMAS_CATEGORY_INFRA = 9; // 0x9
-    field public static final int CMAS_CATEGORY_MET = 1; // 0x1
-    field public static final int CMAS_CATEGORY_OTHER = 11; // 0xb
-    field public static final int CMAS_CATEGORY_RESCUE = 4; // 0x4
-    field public static final int CMAS_CATEGORY_SAFETY = 2; // 0x2
-    field public static final int CMAS_CATEGORY_SECURITY = 3; // 0x3
-    field public static final int CMAS_CATEGORY_TRANSPORT = 8; // 0x8
-    field public static final int CMAS_CATEGORY_UNKNOWN = -1; // 0xffffffff
-    field public static final int CMAS_CERTAINTY_LIKELY = 1; // 0x1
-    field public static final int CMAS_CERTAINTY_OBSERVED = 0; // 0x0
-    field public static final int CMAS_CERTAINTY_UNKNOWN = -1; // 0xffffffff
-    field public static final int CMAS_CLASS_CHILD_ABDUCTION_EMERGENCY = 3; // 0x3
-    field public static final int CMAS_CLASS_CMAS_EXERCISE = 5; // 0x5
-    field public static final int CMAS_CLASS_EXTREME_THREAT = 1; // 0x1
-    field public static final int CMAS_CLASS_OPERATOR_DEFINED_USE = 6; // 0x6
-    field public static final int CMAS_CLASS_PRESIDENTIAL_LEVEL_ALERT = 0; // 0x0
-    field public static final int CMAS_CLASS_REQUIRED_MONTHLY_TEST = 4; // 0x4
-    field public static final int CMAS_CLASS_SEVERE_THREAT = 2; // 0x2
-    field public static final int CMAS_CLASS_UNKNOWN = -1; // 0xffffffff
-    field public static final int CMAS_RESPONSE_TYPE_ASSESS = 6; // 0x6
-    field public static final int CMAS_RESPONSE_TYPE_AVOID = 5; // 0x5
-    field public static final int CMAS_RESPONSE_TYPE_EVACUATE = 1; // 0x1
-    field public static final int CMAS_RESPONSE_TYPE_EXECUTE = 3; // 0x3
-    field public static final int CMAS_RESPONSE_TYPE_MONITOR = 4; // 0x4
-    field public static final int CMAS_RESPONSE_TYPE_NONE = 7; // 0x7
-    field public static final int CMAS_RESPONSE_TYPE_PREPARE = 2; // 0x2
-    field public static final int CMAS_RESPONSE_TYPE_SHELTER = 0; // 0x0
-    field public static final int CMAS_RESPONSE_TYPE_UNKNOWN = -1; // 0xffffffff
-    field public static final int CMAS_SEVERITY_EXTREME = 0; // 0x0
-    field public static final int CMAS_SEVERITY_SEVERE = 1; // 0x1
-    field public static final int CMAS_SEVERITY_UNKNOWN = -1; // 0xffffffff
-    field public static final int CMAS_URGENCY_EXPECTED = 1; // 0x1
-    field public static final int CMAS_URGENCY_IMMEDIATE = 0; // 0x0
-    field public static final int CMAS_URGENCY_UNKNOWN = -1; // 0xffffffff
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SmsCbCmasInfo> CREATOR;
-  }
-
-  public final class SmsCbEtwsInfo implements android.os.Parcelable {
-    ctor public SmsCbEtwsInfo(int, boolean, boolean, boolean, @Nullable byte[]);
-    method public int describeContents();
-    method @Nullable public byte[] getPrimaryNotificationSignature();
-    method public long getPrimaryNotificationTimestamp();
-    method public int getWarningType();
-    method public boolean isEmergencyUserAlert();
-    method public boolean isPopupAlert();
-    method public boolean isPrimary();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SmsCbEtwsInfo> CREATOR;
-    field public static final int ETWS_WARNING_TYPE_EARTHQUAKE = 0; // 0x0
-    field public static final int ETWS_WARNING_TYPE_EARTHQUAKE_AND_TSUNAMI = 2; // 0x2
-    field public static final int ETWS_WARNING_TYPE_OTHER_EMERGENCY = 4; // 0x4
-    field public static final int ETWS_WARNING_TYPE_TEST_MESSAGE = 3; // 0x3
-    field public static final int ETWS_WARNING_TYPE_TSUNAMI = 1; // 0x1
-    field public static final int ETWS_WARNING_TYPE_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public final class SmsCbLocation implements android.os.Parcelable {
-    ctor public SmsCbLocation(@NonNull String, int, int);
-    method public int describeContents();
-    method public int getCid();
-    method public int getLac();
-    method @NonNull public String getPlmn();
-    method public boolean isInLocationArea(@NonNull android.telephony.SmsCbLocation);
-    method public boolean isInLocationArea(@Nullable String, int, int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SmsCbLocation> CREATOR;
-  }
-
-  public final class SmsCbMessage implements android.os.Parcelable {
-    ctor public SmsCbMessage(int, int, int, @NonNull android.telephony.SmsCbLocation, int, @Nullable String, int, @Nullable String, int, @Nullable android.telephony.SmsCbEtwsInfo, @Nullable android.telephony.SmsCbCmasInfo, int, @Nullable java.util.List<android.telephony.CbGeoUtils.Geometry>, long, int, int);
-    method @NonNull public static android.telephony.SmsCbMessage createFromCursor(@NonNull android.database.Cursor);
-    method public int describeContents();
-    method @Nullable public android.telephony.SmsCbCmasInfo getCmasWarningInfo();
-    method @NonNull public android.content.ContentValues getContentValues();
-    method public int getDataCodingScheme();
-    method @Nullable public android.telephony.SmsCbEtwsInfo getEtwsWarningInfo();
-    method public int getGeographicalScope();
-    method @NonNull public java.util.List<android.telephony.CbGeoUtils.Geometry> getGeometries();
-    method @Nullable public String getLanguageCode();
-    method @NonNull public android.telephony.SmsCbLocation getLocation();
-    method public int getMaximumWaitingDuration();
-    method @Nullable public String getMessageBody();
-    method public int getMessageFormat();
-    method public int getMessagePriority();
-    method public long getReceivedTime();
-    method public int getSerialNumber();
-    method public int getServiceCategory();
-    method public int getSlotIndex();
-    method public int getSubscriptionId();
-    method public boolean isCmasMessage();
-    method public boolean isEmergencyMessage();
-    method public boolean isEtwsMessage();
-    method public boolean needGeoFencingCheck();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SmsCbMessage> CREATOR;
-    field public static final int GEOGRAPHICAL_SCOPE_CELL_WIDE = 3; // 0x3
-    field public static final int GEOGRAPHICAL_SCOPE_CELL_WIDE_IMMEDIATE = 0; // 0x0
-    field public static final int GEOGRAPHICAL_SCOPE_LOCATION_AREA_WIDE = 2; // 0x2
-    field public static final int GEOGRAPHICAL_SCOPE_PLMN_WIDE = 1; // 0x1
-    field public static final int MAXIMUM_WAIT_TIME_NOT_SET = 255; // 0xff
-    field public static final int MESSAGE_FORMAT_3GPP = 1; // 0x1
-    field public static final int MESSAGE_FORMAT_3GPP2 = 2; // 0x2
-    field public static final int MESSAGE_PRIORITY_EMERGENCY = 3; // 0x3
-    field public static final int MESSAGE_PRIORITY_INTERACTIVE = 1; // 0x1
-    field public static final int MESSAGE_PRIORITY_NORMAL = 0; // 0x0
-    field public static final int MESSAGE_PRIORITY_URGENT = 2; // 0x2
-  }
-
-  public final class SmsManager {
-    method public boolean disableCellBroadcastRange(int, int, int);
-    method public boolean enableCellBroadcastRange(int, int, int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getPremiumSmsConsent(@NonNull String);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getSmsCapacityOnIcc();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void sendMultipartTextMessageWithoutPersisting(String, String, java.util.List<java.lang.String>, java.util.List<android.app.PendingIntent>, java.util.List<android.app.PendingIntent>);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setPremiumSmsConsent(@NonNull String, int);
-    field public static final int PREMIUM_SMS_CONSENT_ALWAYS_ALLOW = 3; // 0x3
-    field public static final int PREMIUM_SMS_CONSENT_ASK_USER = 1; // 0x1
-    field public static final int PREMIUM_SMS_CONSENT_NEVER_ALLOW = 2; // 0x2
-    field public static final int PREMIUM_SMS_CONSENT_UNKNOWN = 0; // 0x0
-  }
-
-  public class SmsMessage {
-    method @Nullable public static android.telephony.SmsMessage createFromNativeSmsSubmitPdu(@NonNull byte[], boolean);
-    method @Nullable public static android.telephony.SmsMessage.SubmitPdu getSmsPdu(int, int, @Nullable String, @NonNull String, @NonNull String, long);
-    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public static byte[] getSubmitPduEncodedMessage(boolean, @NonNull String, @NonNull String, int, @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0, to=255) int, @IntRange(from=1, to=255) int, @IntRange(from=1, to=255) int);
-  }
-
-  public class SubscriptionInfo implements android.os.Parcelable {
-    method public boolean areUiccApplicationsEnabled();
-    method @Nullable public java.util.List<android.telephony.UiccAccessRule> getAccessRules();
-    method public int getProfileClass();
-    method public boolean isGroupDisabled();
-  }
-
-  public class SubscriptionManager {
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean canDisablePhysicalSubscription();
-    method public boolean canManageSubscription(@NonNull android.telephony.SubscriptionInfo, @NonNull String);
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int[] getActiveSubscriptionIdList();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.SubscriptionInfo getActiveSubscriptionInfoForIcc(@NonNull String);
-    method public java.util.List<android.telephony.SubscriptionInfo> getAvailableSubscriptionInfoList();
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int[] getCompleteActiveSubscriptionIdList();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getEnabledSubscriptionId(int);
-    method @NonNull public static android.content.res.Resources getResourcesForSubId(@NonNull android.content.Context, int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isSubscriptionEnabled(int);
-    method public void requestEmbeddedSubscriptionInfoListRefresh();
-    method public void requestEmbeddedSubscriptionInfoListRefresh(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultDataSubId(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultSmsSubId(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultVoiceSubscriptionId(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setPreferredDataSubscriptionId(int, boolean, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<java.lang.Integer>);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setSubscriptionEnabled(int, boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setUiccApplicationsEnabled(int, boolean);
-    field @RequiresPermission(android.Manifest.permission.MANAGE_SUBSCRIPTION_PLANS) public static final String ACTION_SUBSCRIPTION_PLANS_CHANGED = "android.telephony.action.SUBSCRIPTION_PLANS_CHANGED";
-    field @NonNull public static final android.net.Uri ADVANCED_CALLING_ENABLED_CONTENT_URI;
-    field @Deprecated public static final int PROFILE_CLASS_DEFAULT = -1; // 0xffffffff
-    field public static final int PROFILE_CLASS_OPERATIONAL = 2; // 0x2
-    field public static final int PROFILE_CLASS_PROVISIONING = 1; // 0x1
-    field public static final int PROFILE_CLASS_TESTING = 0; // 0x0
-    field public static final int PROFILE_CLASS_UNSET = -1; // 0xffffffff
-    field @NonNull public static final android.net.Uri VT_ENABLED_CONTENT_URI;
-    field @NonNull public static final android.net.Uri WFC_ENABLED_CONTENT_URI;
-    field @NonNull public static final android.net.Uri WFC_MODE_CONTENT_URI;
-    field @NonNull public static final android.net.Uri WFC_ROAMING_ENABLED_CONTENT_URI;
-    field @NonNull public static final android.net.Uri WFC_ROAMING_MODE_CONTENT_URI;
-  }
-
-  public static class SubscriptionPlan.Builder {
-    method @Deprecated public static android.telephony.SubscriptionPlan.Builder createRecurringDaily(java.time.ZonedDateTime);
-    method @Deprecated public static android.telephony.SubscriptionPlan.Builder createRecurringMonthly(java.time.ZonedDateTime);
-    method @Deprecated public static android.telephony.SubscriptionPlan.Builder createRecurringWeekly(java.time.ZonedDateTime);
-  }
-
-  public final class TelephonyHistogram implements android.os.Parcelable {
-    ctor public TelephonyHistogram(int, int, int);
-    ctor public TelephonyHistogram(android.telephony.TelephonyHistogram);
-    ctor public TelephonyHistogram(android.os.Parcel);
-    method public void addTimeTaken(int);
-    method public int describeContents();
-    method public int getAverageTime();
-    method public int getBucketCount();
-    method public int[] getBucketCounters();
-    method public int[] getBucketEndPoints();
-    method public int getCategory();
-    method public int getId();
-    method public int getMaxTime();
-    method public int getMinTime();
-    method public int getSampleCount();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.TelephonyHistogram> CREATOR;
-    field public static final int TELEPHONY_CATEGORY_RIL = 1; // 0x1
-  }
-
-  public class TelephonyManager {
-    method @Deprecated @RequiresPermission(android.Manifest.permission.CALL_PHONE) public void call(String, String);
-    method public int checkCarrierPrivilegesForPackage(String);
-    method public int checkCarrierPrivilegesForPackageAnyPhone(String);
-    method public void dial(String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean disableDataConnectivity();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean enableDataConnectivity();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean enableModemForSlot(int, boolean);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void enableVideoCalling(boolean);
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getAidForAppType(int);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.List<android.service.carrier.CarrierIdentifier> getAllowedCarriers(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public long getAllowedNetworkTypes();
-    method @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public android.content.ComponentName getAndUpdateDefaultRespondViaMessageApplication();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.ImsiEncryptionInfo getCarrierInfoForImsiEncryption(int);
-    method public java.util.List<java.lang.String> getCarrierPackageNamesForIntent(android.content.Intent);
-    method public java.util.List<java.lang.String> getCarrierPackageNamesForIntentAndPhone(android.content.Intent, int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getCarrierPrivilegeStatus(int);
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.List<java.lang.String> getCarrierPrivilegedPackagesForAllActiveSubscriptions();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.CarrierRestrictionRules getCarrierRestrictionRules();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String getCdmaMdn();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String getCdmaMdn(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String getCdmaMin();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String getCdmaMin(int);
-    method public String getCdmaPrlVersion();
-    method public int getCurrentPhoneType();
-    method public int getCurrentPhoneType(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getDataActivationState();
-    method @Deprecated public boolean getDataEnabled();
-    method @Deprecated public boolean getDataEnabled(int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public android.content.ComponentName getDefaultRespondViaMessageApplication();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getDeviceSoftwareVersion(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean getEmergencyCallbackMode();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getEmergencyNumberDbVersion();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getIsimDomain();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getIsimIst();
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.Map<java.lang.Integer,java.lang.Integer> getLogicalToPhysicalSlotMapping();
-    method public int getMaxNumberOfSimultaneouslyActiveSims();
-    method public static long getMaxNumberVerificationTimeoutMillis();
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String[] getMergedImsisFromGroup();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public long getPreferredNetworkTypeBitmask();
-    method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public int getRadioPowerState();
-    method public int getSimApplicationState();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getSimApplicationState(int);
-    method public int getSimCardState();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getSimCardState(int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.Locale getSimLocale();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public long getSupportedRadioAccessFamily();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public java.util.List<android.telephony.TelephonyHistogram> getTelephonyHistograms();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.UiccSlotInfo[] getUiccSlotsInfo();
-    method @Nullable public android.os.Bundle getVisualVoicemailSettings();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getVoiceActivationState();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handlePinMmi(String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handlePinMmiForSubscriber(int, String);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean iccCloseLogicalChannelBySlot(int, int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannelBySlot(int, @Nullable String, int);
-    method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String iccTransmitApduBasicChannelBySlot(int, int, int, int, int, int, @Nullable String);
-    method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String iccTransmitApduLogicalChannelBySlot(int, int, int, int, int, int, int, @Nullable String);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isAnyRadioPoweredOn();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isApnMetered(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isApplicationOnUicc(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isDataConnectionAllowed();
-    method public boolean isDataConnectivityPossible();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isDataEnabledForApn(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isEmergencyAssistanceEnabled();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public boolean isIccLockEnabled();
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isIdle();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isLteCdmaEvdoGsmWcdmaEnabled();
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isOffhook();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isOpportunisticNetworkEnabled();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isPotentialEmergencyNumber(@NonNull String);
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isRadioOn();
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isRinging();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean isTetheringApnRequired();
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isVideoCallingEnabled();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isVisualVoicemailEnabled(android.telecom.PhoneAccountHandle);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean matchesCurrentSimOperator(@NonNull String, int, @Nullable String);
-    method public boolean needsOtaServiceProvisioning();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void notifyOtaEmergencyNumberDbInstalled();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean rebootRadio();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void reportDefaultNetworkStatus(boolean);
-    method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.MODIFY_PHONE_STATE}) public void requestCellInfoUpdate(@NonNull android.os.WorkSource, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.TelephonyManager.CellInfoCallback);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void requestNumberVerification(@NonNull android.telephony.PhoneNumberRange, long, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.NumberVerificationCallback);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void resetAllCarrierActions();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void resetCarrierKeysForImsiEncryption();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public void resetIms(int);
-    method @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION) public void resetOtaEmergencyNumberDbFilePath();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean resetRadioConfig();
-    method @RequiresPermission(android.Manifest.permission.CONNECTIVITY_INTERNAL) public void resetSettings();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int setAllowedCarriers(int, java.util.List<android.service.carrier.CarrierIdentifier>);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setAllowedNetworkTypes(long);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCarrierDataEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int setCarrierRestrictionRules(@NonNull android.telephony.CarrierRestrictionRules);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataActivationState(int);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataEnabled(int, boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataRoamingEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setMultiSimCarrierRestriction(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setOpportunisticNetworkState(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setPreferredNetworkTypeBitmask(long);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setRadio(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setRadioEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setRadioPower(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSimPowerState(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSimPowerStateForSlot(int, int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSystemSelectionChannels(@NonNull java.util.List<android.telephony.RadioAccessSpecifier>, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSystemSelectionChannels(@NonNull java.util.List<android.telephony.RadioAccessSpecifier>);
-    method @Deprecated public void setVisualVoicemailEnabled(android.telecom.PhoneAccountHandle, boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoiceActivationState(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void shutdownAllRadios();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean supplyPin(String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int[] supplyPinReportResult(String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean supplyPuk(String, String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int[] supplyPukReportResult(String, String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean switchSlots(int[]);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void toggleRadioOnOff();
-    method @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION) public void updateOtaEmergencyNumberDbFilePath(@NonNull android.os.ParcelFileDescriptor);
-    method public void updateServiceLocation();
-    field @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static final String ACTION_ANOMALY_REPORTED = "android.telephony.action.ANOMALY_REPORTED";
-    field public static final String ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED = "android.intent.action.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED";
-    field public static final String ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED = "android.intent.action.ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED";
-    field public static final String ACTION_EMERGENCY_ASSISTANCE = "android.telephony.action.EMERGENCY_ASSISTANCE";
-    field public static final String ACTION_EMERGENCY_CALLBACK_MODE_CHANGED = "android.intent.action.EMERGENCY_CALLBACK_MODE_CHANGED";
-    field public static final String ACTION_EMERGENCY_CALL_STATE_CHANGED = "android.intent.action.EMERGENCY_CALL_STATE_CHANGED";
-    field public static final String ACTION_REQUEST_OMADM_CONFIGURATION_UPDATE = "com.android.omadm.service.CONFIGURATION_UPDATE";
-    field public static final String ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS = "android.telephony.action.SHOW_NOTICE_ECM_BLOCK_OTHERS";
-    field public static final String ACTION_SIM_APPLICATION_STATE_CHANGED = "android.telephony.action.SIM_APPLICATION_STATE_CHANGED";
-    field public static final String ACTION_SIM_CARD_STATE_CHANGED = "android.telephony.action.SIM_CARD_STATE_CHANGED";
-    field public static final String ACTION_SIM_SLOT_STATUS_CHANGED = "android.telephony.action.SIM_SLOT_STATUS_CHANGED";
-    field public static final int CARRIER_PRIVILEGE_STATUS_ERROR_LOADING_RULES = -2; // 0xfffffffe
-    field public static final int CARRIER_PRIVILEGE_STATUS_HAS_ACCESS = 1; // 0x1
-    field public static final int CARRIER_PRIVILEGE_STATUS_NO_ACCESS = 0; // 0x0
-    field public static final int CARRIER_PRIVILEGE_STATUS_RULES_NOT_LOADED = -1; // 0xffffffff
-    field public static final String EXTRA_ANOMALY_DESCRIPTION = "android.telephony.extra.ANOMALY_DESCRIPTION";
-    field public static final String EXTRA_ANOMALY_ID = "android.telephony.extra.ANOMALY_ID";
-    field public static final String EXTRA_PHONE_IN_ECM_STATE = "android.telephony.extra.PHONE_IN_ECM_STATE";
-    field public static final String EXTRA_PHONE_IN_EMERGENCY_CALL = "android.telephony.extra.PHONE_IN_EMERGENCY_CALL";
-    field public static final String EXTRA_SIM_STATE = "android.telephony.extra.SIM_STATE";
-    field public static final String EXTRA_VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL = "android.telephony.extra.VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL";
-    field public static final String EXTRA_VOICEMAIL_SCRAMBLED_PIN_STRING = "android.telephony.extra.VOICEMAIL_SCRAMBLED_PIN_STRING";
-    field public static final int INVALID_EMERGENCY_NUMBER_DB_VERSION = -1; // 0xffffffff
-    field public static final int KEY_TYPE_EPDG = 1; // 0x1
-    field public static final int KEY_TYPE_WLAN = 2; // 0x2
-    field public static final long NETWORK_TYPE_BITMASK_1xRTT = 64L; // 0x40L
-    field public static final long NETWORK_TYPE_BITMASK_CDMA = 8L; // 0x8L
-    field public static final long NETWORK_TYPE_BITMASK_EDGE = 2L; // 0x2L
-    field public static final long NETWORK_TYPE_BITMASK_EHRPD = 8192L; // 0x2000L
-    field public static final long NETWORK_TYPE_BITMASK_EVDO_0 = 16L; // 0x10L
-    field public static final long NETWORK_TYPE_BITMASK_EVDO_A = 32L; // 0x20L
-    field public static final long NETWORK_TYPE_BITMASK_EVDO_B = 2048L; // 0x800L
-    field public static final long NETWORK_TYPE_BITMASK_GPRS = 1L; // 0x1L
-    field public static final long NETWORK_TYPE_BITMASK_GSM = 32768L; // 0x8000L
-    field public static final long NETWORK_TYPE_BITMASK_HSDPA = 128L; // 0x80L
-    field public static final long NETWORK_TYPE_BITMASK_HSPA = 512L; // 0x200L
-    field public static final long NETWORK_TYPE_BITMASK_HSPAP = 16384L; // 0x4000L
-    field public static final long NETWORK_TYPE_BITMASK_HSUPA = 256L; // 0x100L
-    field public static final long NETWORK_TYPE_BITMASK_IWLAN = 131072L; // 0x20000L
-    field public static final long NETWORK_TYPE_BITMASK_LTE = 4096L; // 0x1000L
-    field public static final long NETWORK_TYPE_BITMASK_LTE_CA = 262144L; // 0x40000L
-    field public static final long NETWORK_TYPE_BITMASK_NR = 524288L; // 0x80000L
-    field public static final long NETWORK_TYPE_BITMASK_TD_SCDMA = 65536L; // 0x10000L
-    field public static final long NETWORK_TYPE_BITMASK_UMTS = 4L; // 0x4L
-    field public static final long NETWORK_TYPE_BITMASK_UNKNOWN = 0L; // 0x0L
-    field public static final int RADIO_POWER_OFF = 0; // 0x0
-    field public static final int RADIO_POWER_ON = 1; // 0x1
-    field public static final int RADIO_POWER_UNAVAILABLE = 2; // 0x2
-    field public static final int SET_CARRIER_RESTRICTION_ERROR = 2; // 0x2
-    field public static final int SET_CARRIER_RESTRICTION_NOT_SUPPORTED = 1; // 0x1
-    field public static final int SET_CARRIER_RESTRICTION_SUCCESS = 0; // 0x0
-    field public static final int SIM_ACTIVATION_STATE_ACTIVATED = 2; // 0x2
-    field public static final int SIM_ACTIVATION_STATE_ACTIVATING = 1; // 0x1
-    field public static final int SIM_ACTIVATION_STATE_DEACTIVATED = 3; // 0x3
-    field public static final int SIM_ACTIVATION_STATE_RESTRICTED = 4; // 0x4
-    field public static final int SIM_ACTIVATION_STATE_UNKNOWN = 0; // 0x0
-    field public static final int SIM_STATE_LOADED = 10; // 0xa
-    field public static final int SIM_STATE_PRESENT = 11; // 0xb
-    field public static final int SRVCC_STATE_HANDOVER_CANCELED = 3; // 0x3
-    field public static final int SRVCC_STATE_HANDOVER_COMPLETED = 1; // 0x1
-    field public static final int SRVCC_STATE_HANDOVER_FAILED = 2; // 0x2
-    field public static final int SRVCC_STATE_HANDOVER_NONE = -1; // 0xffffffff
-    field public static final int SRVCC_STATE_HANDOVER_STARTED = 0; // 0x0
-  }
-
-  public final class UiccAccessRule implements android.os.Parcelable {
-    ctor public UiccAccessRule(byte[], @Nullable String, long);
-    method public int describeContents();
-    method public int getCarrierPrivilegeStatus(android.content.pm.PackageInfo);
-    method public int getCarrierPrivilegeStatus(android.content.pm.Signature, String);
-    method public String getCertificateHexString();
-    method @Nullable public String getPackageName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.UiccAccessRule> CREATOR;
-  }
-
-  public class UiccSlotInfo implements android.os.Parcelable {
-    ctor @Deprecated public UiccSlotInfo(boolean, boolean, String, int, int, boolean);
-    method public int describeContents();
-    method public String getCardId();
-    method public int getCardStateInfo();
-    method public boolean getIsActive();
-    method public boolean getIsEuicc();
-    method public boolean getIsExtendedApduSupported();
-    method public int getLogicalSlotIdx();
-    method public boolean isRemovable();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CARD_STATE_INFO_ABSENT = 1; // 0x1
-    field public static final int CARD_STATE_INFO_ERROR = 3; // 0x3
-    field public static final int CARD_STATE_INFO_PRESENT = 2; // 0x2
-    field public static final int CARD_STATE_INFO_RESTRICTED = 4; // 0x4
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.UiccSlotInfo> CREATOR;
-  }
-
-  public abstract class VisualVoicemailService extends android.app.Service {
-    method public static final void sendVisualVoicemailSms(android.content.Context, android.telecom.PhoneAccountHandle, String, short, String, android.app.PendingIntent);
-    method public static final void setSmsFilterSettings(android.content.Context, android.telecom.PhoneAccountHandle, android.telephony.VisualVoicemailSmsFilterSettings);
-  }
-
-}
-
-package android.telephony.cdma {
-
-  public final class CdmaSmsCbProgramData implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getCategory();
-    method public int getOperation();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CATEGORY_CMAS_CHILD_ABDUCTION_EMERGENCY = 4099; // 0x1003
-    field public static final int CATEGORY_CMAS_EXTREME_THREAT = 4097; // 0x1001
-    field public static final int CATEGORY_CMAS_LAST_RESERVED_VALUE = 4351; // 0x10ff
-    field public static final int CATEGORY_CMAS_PRESIDENTIAL_LEVEL_ALERT = 4096; // 0x1000
-    field public static final int CATEGORY_CMAS_SEVERE_THREAT = 4098; // 0x1002
-    field public static final int CATEGORY_CMAS_TEST_MESSAGE = 4100; // 0x1004
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.cdma.CdmaSmsCbProgramData> CREATOR;
-    field public static final int OPERATION_ADD_CATEGORY = 1; // 0x1
-    field public static final int OPERATION_CLEAR_CATEGORIES = 2; // 0x2
-    field public static final int OPERATION_DELETE_CATEGORY = 0; // 0x0
-  }
-
-}
-
-package android.telephony.data {
-
-  public final class DataCallResponse implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public java.util.List<android.net.LinkAddress> getAddresses();
-    method public int getCause();
-    method @NonNull public java.util.List<java.net.InetAddress> getDnsAddresses();
-    method @NonNull public java.util.List<java.net.InetAddress> getGatewayAddresses();
-    method public int getId();
-    method @NonNull public String getInterfaceName();
-    method public int getLinkStatus();
-    method @Deprecated public int getMtu();
-    method public int getMtuV4();
-    method public int getMtuV6();
-    method @NonNull public java.util.List<java.net.InetAddress> getPcscfAddresses();
-    method public int getProtocolType();
-    method public int getSuggestedRetryTime();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.DataCallResponse> CREATOR;
-    field public static final int LINK_STATUS_ACTIVE = 2; // 0x2
-    field public static final int LINK_STATUS_DORMANT = 1; // 0x1
-    field public static final int LINK_STATUS_INACTIVE = 0; // 0x0
-    field public static final int LINK_STATUS_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public static final class DataCallResponse.Builder {
-    ctor public DataCallResponse.Builder();
-    method @NonNull public android.telephony.data.DataCallResponse build();
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setAddresses(@NonNull java.util.List<android.net.LinkAddress>);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setCause(int);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setDnsAddresses(@NonNull java.util.List<java.net.InetAddress>);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setGatewayAddresses(@NonNull java.util.List<java.net.InetAddress>);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setId(int);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setInterfaceName(@NonNull String);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setLinkStatus(int);
-    method @Deprecated @NonNull public android.telephony.data.DataCallResponse.Builder setMtu(int);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setMtuV4(int);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setMtuV6(int);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setPcscfAddresses(@NonNull java.util.List<java.net.InetAddress>);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setProtocolType(int);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setSuggestedRetryTime(int);
-  }
-
-  public final class DataProfile implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public String getApn();
-    method public int getAuthType();
-    method public int getBearerBitmask();
-    method @Deprecated public int getMtu();
-    method public int getMtuV4();
-    method public int getMtuV6();
-    method @Nullable public String getPassword();
-    method public int getProfileId();
-    method public int getProtocolType();
-    method public int getRoamingProtocolType();
-    method public int getSupportedApnTypesBitmask();
-    method public int getType();
-    method @Nullable public String getUserName();
-    method public boolean isEnabled();
-    method public boolean isPersistent();
-    method public boolean isPreferred();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.DataProfile> CREATOR;
-    field public static final int TYPE_3GPP = 1; // 0x1
-    field public static final int TYPE_3GPP2 = 2; // 0x2
-    field public static final int TYPE_COMMON = 0; // 0x0
-  }
-
-  public static final class DataProfile.Builder {
-    ctor public DataProfile.Builder();
-    method @NonNull public android.telephony.data.DataProfile build();
-    method @NonNull public android.telephony.data.DataProfile.Builder enable(boolean);
-    method @NonNull public android.telephony.data.DataProfile.Builder setApn(@NonNull String);
-    method @NonNull public android.telephony.data.DataProfile.Builder setAuthType(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setBearerBitmask(int);
-    method @Deprecated @NonNull public android.telephony.data.DataProfile.Builder setMtu(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setMtuV4(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setMtuV6(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setPassword(@NonNull String);
-    method @NonNull public android.telephony.data.DataProfile.Builder setPersistent(boolean);
-    method @NonNull public android.telephony.data.DataProfile.Builder setPreferred(boolean);
-    method @NonNull public android.telephony.data.DataProfile.Builder setProfileId(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setProtocolType(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setRoamingProtocolType(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setSupportedApnTypesBitmask(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setType(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setUserName(@NonNull String);
-  }
-
-  public abstract class DataService extends android.app.Service {
-    ctor public DataService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method @Nullable public abstract android.telephony.data.DataService.DataServiceProvider onCreateDataServiceProvider(int);
-    field public static final int REQUEST_REASON_HANDOVER = 3; // 0x3
-    field public static final int REQUEST_REASON_NORMAL = 1; // 0x1
-    field public static final int REQUEST_REASON_SHUTDOWN = 2; // 0x2
-    field public static final int REQUEST_REASON_UNKNOWN = 0; // 0x0
-    field public static final String SERVICE_INTERFACE = "android.telephony.data.DataService";
-  }
-
-  public abstract class DataService.DataServiceProvider implements java.lang.AutoCloseable {
-    ctor public DataService.DataServiceProvider(int);
-    method public abstract void close();
-    method public void deactivateDataCall(int, int, @Nullable android.telephony.data.DataServiceCallback);
-    method public final int getSlotIndex();
-    method public final void notifyDataCallListChanged(java.util.List<android.telephony.data.DataCallResponse>);
-    method public void requestDataCallList(@NonNull android.telephony.data.DataServiceCallback);
-    method public void setDataProfile(@NonNull java.util.List<android.telephony.data.DataProfile>, boolean, @NonNull android.telephony.data.DataServiceCallback);
-    method public void setInitialAttachApn(@NonNull android.telephony.data.DataProfile, boolean, @NonNull android.telephony.data.DataServiceCallback);
-    method public void setupDataCall(int, @NonNull android.telephony.data.DataProfile, boolean, boolean, int, @Nullable android.net.LinkProperties, @NonNull android.telephony.data.DataServiceCallback);
-  }
-
-  public class DataServiceCallback {
-    method public void onDataCallListChanged(@NonNull java.util.List<android.telephony.data.DataCallResponse>);
-    method public void onDeactivateDataCallComplete(int);
-    method public void onRequestDataCallListComplete(int, @NonNull java.util.List<android.telephony.data.DataCallResponse>);
-    method public void onSetDataProfileComplete(int);
-    method public void onSetInitialAttachApnComplete(int);
-    method public void onSetupDataCallComplete(int, @Nullable android.telephony.data.DataCallResponse);
-    field public static final int RESULT_ERROR_BUSY = 3; // 0x3
-    field public static final int RESULT_ERROR_ILLEGAL_STATE = 4; // 0x4
-    field public static final int RESULT_ERROR_INVALID_ARG = 2; // 0x2
-    field public static final int RESULT_ERROR_UNSUPPORTED = 1; // 0x1
-    field public static final int RESULT_SUCCESS = 0; // 0x0
-  }
-
-  public abstract class QualifiedNetworksService extends android.app.Service {
-    ctor public QualifiedNetworksService();
-    method @NonNull public abstract android.telephony.data.QualifiedNetworksService.NetworkAvailabilityProvider onCreateNetworkAvailabilityProvider(int);
-    field public static final String QUALIFIED_NETWORKS_SERVICE_INTERFACE = "android.telephony.data.QualifiedNetworksService";
-  }
-
-  public abstract class QualifiedNetworksService.NetworkAvailabilityProvider implements java.lang.AutoCloseable {
-    ctor public QualifiedNetworksService.NetworkAvailabilityProvider(int);
-    method public abstract void close();
-    method public final int getSlotIndex();
-    method public final void updateQualifiedNetworkTypes(int, @NonNull java.util.List<java.lang.Integer>);
-  }
-
-}
-
-package android.telephony.euicc {
-
-  public final class DownloadableSubscription implements android.os.Parcelable {
-    method public java.util.List<android.telephony.UiccAccessRule> getAccessRules();
-    method @Nullable public String getCarrierName();
-  }
-
-  public static final class DownloadableSubscription.Builder {
-    ctor public DownloadableSubscription.Builder();
-    ctor public DownloadableSubscription.Builder(android.telephony.euicc.DownloadableSubscription);
-    method public android.telephony.euicc.DownloadableSubscription build();
-    method public android.telephony.euicc.DownloadableSubscription.Builder setAccessRules(java.util.List<android.telephony.UiccAccessRule>);
-    method public android.telephony.euicc.DownloadableSubscription.Builder setCarrierName(String);
-    method public android.telephony.euicc.DownloadableSubscription.Builder setConfirmationCode(String);
-    method public android.telephony.euicc.DownloadableSubscription.Builder setEncodedActivationCode(String);
-  }
-
-  public class EuiccCardManager {
-    method public void authenticateServer(String, String, byte[], byte[], byte[], byte[], java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
-    method public void cancelSession(String, byte[], @android.telephony.euicc.EuiccCardManager.CancelReason int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
-    method public void deleteProfile(String, String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
-    method public void disableProfile(String, String, boolean, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
-    method public void listNotifications(String, @android.telephony.euicc.EuiccNotification.Event int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.telephony.euicc.EuiccNotification[]>);
-    method public void loadBoundProfilePackage(String, byte[], java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
-    method public void prepareDownload(String, @Nullable byte[], byte[], byte[], byte[], java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
-    method public void removeNotificationFromList(String, int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
-    method public void requestAllProfiles(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.service.euicc.EuiccProfileInfo[]>);
-    method public void requestDefaultSmdpAddress(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.String>);
-    method public void requestEuiccChallenge(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
-    method public void requestEuiccInfo1(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
-    method public void requestEuiccInfo2(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
-    method public void requestProfile(String, String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.service.euicc.EuiccProfileInfo>);
-    method public void requestRulesAuthTable(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.telephony.euicc.EuiccRulesAuthTable>);
-    method public void requestSmdsAddress(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.String>);
-    method public void resetMemory(String, @android.telephony.euicc.EuiccCardManager.ResetOption int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
-    method public void retrieveNotification(String, int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.telephony.euicc.EuiccNotification>);
-    method public void retrieveNotificationList(String, @android.telephony.euicc.EuiccNotification.Event int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.telephony.euicc.EuiccNotification[]>);
-    method public void setDefaultSmdpAddress(String, String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
-    method public void setNickname(String, String, String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
-    method public void switchToProfile(String, String, boolean, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.service.euicc.EuiccProfileInfo>);
-    field public static final int CANCEL_REASON_END_USER_REJECTED = 0; // 0x0
-    field public static final int CANCEL_REASON_POSTPONED = 1; // 0x1
-    field public static final int CANCEL_REASON_PPR_NOT_ALLOWED = 3; // 0x3
-    field public static final int CANCEL_REASON_TIMEOUT = 2; // 0x2
-    field public static final int RESET_OPTION_DELETE_FIELD_LOADED_TEST_PROFILES = 2; // 0x2
-    field public static final int RESET_OPTION_DELETE_OPERATIONAL_PROFILES = 1; // 0x1
-    field public static final int RESET_OPTION_RESET_DEFAULT_SMDP_ADDRESS = 4; // 0x4
-    field public static final int RESULT_CALLER_NOT_ALLOWED = -3; // 0xfffffffd
-    field public static final int RESULT_EUICC_NOT_FOUND = -2; // 0xfffffffe
-    field public static final int RESULT_OK = 0; // 0x0
-    field public static final int RESULT_UNKNOWN_ERROR = -1; // 0xffffffff
-  }
-
-  @IntDef(prefix={"CANCEL_REASON_"}, value={android.telephony.euicc.EuiccCardManager.CANCEL_REASON_END_USER_REJECTED, android.telephony.euicc.EuiccCardManager.CANCEL_REASON_POSTPONED, android.telephony.euicc.EuiccCardManager.CANCEL_REASON_TIMEOUT, android.telephony.euicc.EuiccCardManager.CANCEL_REASON_PPR_NOT_ALLOWED}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccCardManager.CancelReason {
-  }
-
-  @IntDef(flag=true, prefix={"RESET_OPTION_"}, value={android.telephony.euicc.EuiccCardManager.RESET_OPTION_DELETE_OPERATIONAL_PROFILES, android.telephony.euicc.EuiccCardManager.RESET_OPTION_DELETE_FIELD_LOADED_TEST_PROFILES, android.telephony.euicc.EuiccCardManager.RESET_OPTION_RESET_DEFAULT_SMDP_ADDRESS}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccCardManager.ResetOption {
-  }
-
-  public static interface EuiccCardManager.ResultCallback<T> {
-    method public void onComplete(int, T);
-  }
-
-  public class EuiccManager {
-    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void continueOperation(android.content.Intent, android.os.Bundle);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void eraseSubscriptions(@NonNull android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void eraseSubscriptions(@android.telephony.euicc.EuiccCardManager.ResetOption int, @NonNull android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void getDefaultDownloadableSubscriptionList(android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void getDownloadableSubscriptionMetadata(android.telephony.euicc.DownloadableSubscription, android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public int getOtaStatus();
-    method @NonNull @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public java.util.List<java.lang.String> getSupportedCountries();
-    method @NonNull @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public java.util.List<java.lang.String> getUnsupportedCountries();
-    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public boolean isSupportedCountry(@NonNull String);
-    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void setSupportedCountries(@NonNull java.util.List<java.lang.String>);
-    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void setUnsupportedCountries(@NonNull java.util.List<java.lang.String>);
-    field public static final String ACTION_DELETE_SUBSCRIPTION_PRIVILEGED = "android.telephony.euicc.action.DELETE_SUBSCRIPTION_PRIVILEGED";
-    field @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public static final String ACTION_OTA_STATUS_CHANGED = "android.telephony.euicc.action.OTA_STATUS_CHANGED";
-    field public static final String ACTION_PROVISION_EMBEDDED_SUBSCRIPTION = "android.telephony.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION";
-    field public static final String ACTION_RENAME_SUBSCRIPTION_PRIVILEGED = "android.telephony.euicc.action.RENAME_SUBSCRIPTION_PRIVILEGED";
-    field public static final String ACTION_TOGGLE_SUBSCRIPTION_PRIVILEGED = "android.telephony.euicc.action.TOGGLE_SUBSCRIPTION_PRIVILEGED";
-    field public static final int EUICC_ACTIVATION_TYPE_ACCOUNT_REQUIRED = 4; // 0x4
-    field public static final int EUICC_ACTIVATION_TYPE_BACKUP = 2; // 0x2
-    field public static final int EUICC_ACTIVATION_TYPE_DEFAULT = 1; // 0x1
-    field public static final int EUICC_ACTIVATION_TYPE_TRANSFER = 3; // 0x3
-    field public static final int EUICC_OTA_FAILED = 2; // 0x2
-    field public static final int EUICC_OTA_IN_PROGRESS = 1; // 0x1
-    field public static final int EUICC_OTA_NOT_NEEDED = 4; // 0x4
-    field public static final int EUICC_OTA_STATUS_UNAVAILABLE = 5; // 0x5
-    field public static final int EUICC_OTA_SUCCEEDED = 3; // 0x3
-    field public static final String EXTRA_ACTIVATION_TYPE = "android.telephony.euicc.extra.ACTIVATION_TYPE";
-    field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_DOWNLOADABLE_SUBSCRIPTIONS = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_DOWNLOADABLE_SUBSCRIPTIONS";
-    field public static final String EXTRA_ENABLE_SUBSCRIPTION = "android.telephony.euicc.extra.ENABLE_SUBSCRIPTION";
-    field public static final String EXTRA_FORCE_PROVISION = "android.telephony.euicc.extra.FORCE_PROVISION";
-    field public static final String EXTRA_FROM_SUBSCRIPTION_ID = "android.telephony.euicc.extra.FROM_SUBSCRIPTION_ID";
-    field public static final String EXTRA_PHYSICAL_SLOT_ID = "android.telephony.euicc.extra.PHYSICAL_SLOT_ID";
-    field public static final String EXTRA_SUBSCRIPTION_ID = "android.telephony.euicc.extra.SUBSCRIPTION_ID";
-    field public static final String EXTRA_SUBSCRIPTION_NICKNAME = "android.telephony.euicc.extra.SUBSCRIPTION_NICKNAME";
-  }
-
-  @IntDef(prefix={"EUICC_OTA_"}, value={android.telephony.euicc.EuiccManager.EUICC_OTA_IN_PROGRESS, android.telephony.euicc.EuiccManager.EUICC_OTA_FAILED, android.telephony.euicc.EuiccManager.EUICC_OTA_SUCCEEDED, android.telephony.euicc.EuiccManager.EUICC_OTA_NOT_NEEDED, android.telephony.euicc.EuiccManager.EUICC_OTA_STATUS_UNAVAILABLE}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccManager.OtaStatus {
-  }
-
-  public final class EuiccNotification implements android.os.Parcelable {
-    ctor public EuiccNotification(int, String, @android.telephony.euicc.EuiccNotification.Event int, @Nullable byte[]);
-    method public int describeContents();
-    method @Nullable public byte[] getData();
-    method @android.telephony.euicc.EuiccNotification.Event public int getEvent();
-    method public int getSeq();
-    method public String getTargetAddr();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @android.telephony.euicc.EuiccNotification.Event public static final int ALL_EVENTS = 15; // 0xf
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.euicc.EuiccNotification> CREATOR;
-    field public static final int EVENT_DELETE = 8; // 0x8
-    field public static final int EVENT_DISABLE = 4; // 0x4
-    field public static final int EVENT_ENABLE = 2; // 0x2
-    field public static final int EVENT_INSTALL = 1; // 0x1
-  }
-
-  @IntDef(flag=true, prefix={"EVENT_"}, value={android.telephony.euicc.EuiccNotification.EVENT_INSTALL, android.telephony.euicc.EuiccNotification.EVENT_ENABLE, android.telephony.euicc.EuiccNotification.EVENT_DISABLE, android.telephony.euicc.EuiccNotification.EVENT_DELETE}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccNotification.Event {
-  }
-
-  public final class EuiccRulesAuthTable implements android.os.Parcelable {
-    method public int describeContents();
-    method public int findIndex(@android.service.euicc.EuiccProfileInfo.PolicyRule int, android.service.carrier.CarrierIdentifier);
-    method public boolean hasPolicyRuleFlag(int, @android.telephony.euicc.EuiccRulesAuthTable.PolicyRuleFlag int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.euicc.EuiccRulesAuthTable> CREATOR;
-    field public static final int POLICY_RULE_FLAG_CONSENT_REQUIRED = 1; // 0x1
-  }
-
-  public static final class EuiccRulesAuthTable.Builder {
-    ctor public EuiccRulesAuthTable.Builder(int);
-    method public android.telephony.euicc.EuiccRulesAuthTable.Builder add(int, java.util.List<android.service.carrier.CarrierIdentifier>, int);
-    method public android.telephony.euicc.EuiccRulesAuthTable build();
-  }
-
-  @IntDef(flag=true, prefix={"POLICY_RULE_FLAG_"}, value={android.telephony.euicc.EuiccRulesAuthTable.POLICY_RULE_FLAG_CONSENT_REQUIRED}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccRulesAuthTable.PolicyRuleFlag {
-  }
-
-}
-
-package android.telephony.ims {
-
-  public final class ImsCallForwardInfo implements android.os.Parcelable {
-    ctor public ImsCallForwardInfo(int, int, int, int, @NonNull String, int);
-    method public int describeContents();
-    method public int getCondition();
-    method public String getNumber();
-    method public int getServiceClass();
-    method public int getStatus();
-    method public int getTimeSeconds();
-    method public int getToA();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CDIV_CF_REASON_ALL = 4; // 0x4
-    field public static final int CDIV_CF_REASON_ALL_CONDITIONAL = 5; // 0x5
-    field public static final int CDIV_CF_REASON_BUSY = 1; // 0x1
-    field public static final int CDIV_CF_REASON_NOT_LOGGED_IN = 6; // 0x6
-    field public static final int CDIV_CF_REASON_NOT_REACHABLE = 3; // 0x3
-    field public static final int CDIV_CF_REASON_NO_REPLY = 2; // 0x2
-    field public static final int CDIV_CF_REASON_UNCONDITIONAL = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsCallForwardInfo> CREATOR;
-    field public static final int STATUS_ACTIVE = 1; // 0x1
-    field public static final int STATUS_NOT_ACTIVE = 0; // 0x0
-    field public static final int TYPE_OF_ADDRESS_INTERNATIONAL = 145; // 0x91
-    field public static final int TYPE_OF_ADDRESS_UNKNOWN = 129; // 0x81
-  }
-
-  public final class ImsCallProfile implements android.os.Parcelable {
-    ctor public ImsCallProfile();
-    ctor public ImsCallProfile(int, int);
-    ctor public ImsCallProfile(int, int, android.os.Bundle, android.telephony.ims.ImsStreamMediaProfile);
-    method public int describeContents();
-    method public String getCallExtra(String);
-    method public String getCallExtra(String, String);
-    method public boolean getCallExtraBoolean(String);
-    method public boolean getCallExtraBoolean(String, boolean);
-    method public int getCallExtraInt(String);
-    method public int getCallExtraInt(String, int);
-    method public android.os.Bundle getCallExtras();
-    method public int getCallType();
-    method public static int getCallTypeFromVideoState(int);
-    method public int getCallerNumberVerificationStatus();
-    method public int getEmergencyCallRouting();
-    method public int getEmergencyServiceCategories();
-    method @NonNull public java.util.List<java.lang.String> getEmergencyUrns();
-    method public android.telephony.ims.ImsStreamMediaProfile getMediaProfile();
-    method @NonNull public android.os.Bundle getProprietaryCallExtras();
-    method public int getRestrictCause();
-    method public int getServiceType();
-    method public static int getVideoStateFromCallType(int);
-    method public static int getVideoStateFromImsCallProfile(android.telephony.ims.ImsCallProfile);
-    method public boolean hasKnownUserIntentEmergency();
-    method public boolean isEmergencyCallTesting();
-    method public boolean isVideoCall();
-    method public boolean isVideoPaused();
-    method public static int presentationToOir(int);
-    method public void setCallExtra(String, String);
-    method public void setCallExtraBoolean(String, boolean);
-    method public void setCallExtraInt(String, int);
-    method public void setCallRestrictCause(int);
-    method public void setCallerNumberVerificationStatus(int);
-    method public void setEmergencyCallRouting(int);
-    method public void setEmergencyCallTesting(boolean);
-    method public void setEmergencyServiceCategories(int);
-    method public void setEmergencyUrns(@NonNull java.util.List<java.lang.String>);
-    method public void setHasKnownUserIntentEmergency(boolean);
-    method public void updateCallExtras(android.telephony.ims.ImsCallProfile);
-    method public void updateCallType(android.telephony.ims.ImsCallProfile);
-    method public void updateMediaProfile(android.telephony.ims.ImsCallProfile);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CALL_RESTRICT_CAUSE_DISABLED = 2; // 0x2
-    field public static final int CALL_RESTRICT_CAUSE_HD = 3; // 0x3
-    field public static final int CALL_RESTRICT_CAUSE_NONE = 0; // 0x0
-    field public static final int CALL_RESTRICT_CAUSE_RAT = 1; // 0x1
-    field public static final int CALL_TYPE_VIDEO_N_VOICE = 3; // 0x3
-    field public static final int CALL_TYPE_VOICE = 2; // 0x2
-    field public static final int CALL_TYPE_VOICE_N_VIDEO = 1; // 0x1
-    field public static final int CALL_TYPE_VS = 8; // 0x8
-    field public static final int CALL_TYPE_VS_RX = 10; // 0xa
-    field public static final int CALL_TYPE_VS_TX = 9; // 0x9
-    field public static final int CALL_TYPE_VT = 4; // 0x4
-    field public static final int CALL_TYPE_VT_NODIR = 7; // 0x7
-    field public static final int CALL_TYPE_VT_RX = 6; // 0x6
-    field public static final int CALL_TYPE_VT_TX = 5; // 0x5
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsCallProfile> CREATOR;
-    field public static final int DIALSTRING_NORMAL = 0; // 0x0
-    field public static final int DIALSTRING_SS_CONF = 1; // 0x1
-    field public static final int DIALSTRING_USSD = 2; // 0x2
-    field public static final String EXTRA_ADDITIONAL_CALL_INFO = "AdditionalCallInfo";
-    field public static final String EXTRA_ADDITIONAL_SIP_INVITE_FIELDS = "android.telephony.ims.extra.ADDITIONAL_SIP_INVITE_FIELDS";
-    field public static final String EXTRA_CALL_DISCONNECT_CAUSE = "android.telephony.ims.extra.CALL_DISCONNECT_CAUSE";
-    field public static final String EXTRA_CALL_NETWORK_TYPE = "android.telephony.ims.extra.CALL_NETWORK_TYPE";
-    field @Deprecated public static final String EXTRA_CALL_RAT_TYPE = "CallRadioTech";
-    field public static final String EXTRA_CHILD_NUMBER = "ChildNum";
-    field public static final String EXTRA_CNA = "cna";
-    field public static final String EXTRA_CNAP = "cnap";
-    field public static final String EXTRA_CODEC = "Codec";
-    field public static final String EXTRA_DIALSTRING = "dialstring";
-    field public static final String EXTRA_DISPLAY_TEXT = "DisplayText";
-    field public static final String EXTRA_EMERGENCY_CALL = "e_call";
-    field public static final String EXTRA_FORWARDED_NUMBER = "android.telephony.ims.extra.FORWARDED_NUMBER";
-    field public static final String EXTRA_IS_CALL_PULL = "CallPull";
-    field public static final String EXTRA_OI = "oi";
-    field public static final String EXTRA_OIR = "oir";
-    field public static final String EXTRA_REMOTE_URI = "remote_uri";
-    field public static final String EXTRA_USSD = "ussd";
-    field public static final int OIR_DEFAULT = 0; // 0x0
-    field public static final int OIR_PRESENTATION_NOT_RESTRICTED = 2; // 0x2
-    field public static final int OIR_PRESENTATION_PAYPHONE = 4; // 0x4
-    field public static final int OIR_PRESENTATION_RESTRICTED = 1; // 0x1
-    field public static final int OIR_PRESENTATION_UNKNOWN = 3; // 0x3
-    field public static final int SERVICE_TYPE_EMERGENCY = 2; // 0x2
-    field public static final int SERVICE_TYPE_NONE = 0; // 0x0
-    field public static final int SERVICE_TYPE_NORMAL = 1; // 0x1
-    field public static final int VERIFICATION_STATUS_FAILED = 2; // 0x2
-    field public static final int VERIFICATION_STATUS_NOT_VERIFIED = 0; // 0x0
-    field public static final int VERIFICATION_STATUS_PASSED = 1; // 0x1
-  }
-
-  public class ImsCallSessionListener {
-    method public void callQualityChanged(@NonNull android.telephony.CallQuality);
-    method public void callSessionConferenceExtendFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionConferenceExtendReceived(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile);
-    method public void callSessionConferenceExtended(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile);
-    method public void callSessionConferenceStateUpdated(android.telephony.ims.ImsConferenceState);
-    method @Deprecated public void callSessionHandover(int, int, android.telephony.ims.ImsReasonInfo);
-    method @Deprecated public void callSessionHandoverFailed(int, int, android.telephony.ims.ImsReasonInfo);
-    method public void callSessionHeld(android.telephony.ims.ImsCallProfile);
-    method public void callSessionHoldFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionHoldReceived(android.telephony.ims.ImsCallProfile);
-    method public void callSessionInitiated(android.telephony.ims.ImsCallProfile);
-    method public void callSessionInitiatedFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionInviteParticipantsRequestDelivered();
-    method public void callSessionInviteParticipantsRequestFailed(android.telephony.ims.ImsReasonInfo);
-    method @Deprecated public void callSessionMayHandover(int, int);
-    method public void callSessionMergeComplete(android.telephony.ims.stub.ImsCallSessionImplBase);
-    method public void callSessionMergeFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionMergeStarted(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile);
-    method public void callSessionMultipartyStateChanged(boolean);
-    method public void callSessionProgressing(android.telephony.ims.ImsStreamMediaProfile);
-    method public void callSessionRemoveParticipantsRequestDelivered();
-    method public void callSessionRemoveParticipantsRequestFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionResumeFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionResumeReceived(android.telephony.ims.ImsCallProfile);
-    method public void callSessionResumed(android.telephony.ims.ImsCallProfile);
-    method public void callSessionRttAudioIndicatorChanged(@NonNull android.telephony.ims.ImsStreamMediaProfile);
-    method public void callSessionRttMessageReceived(String);
-    method public void callSessionRttModifyRequestReceived(android.telephony.ims.ImsCallProfile);
-    method public void callSessionRttModifyResponseReceived(int);
-    method public void callSessionSuppServiceReceived(android.telephony.ims.ImsSuppServiceNotification);
-    method public void callSessionTerminated(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionTtyModeReceived(int);
-    method public void callSessionUpdateFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionUpdateReceived(android.telephony.ims.ImsCallProfile);
-    method public void callSessionUpdated(android.telephony.ims.ImsCallProfile);
-    method public void callSessionUssdMessageReceived(int, String);
-    method public void onHandover(int, int, @Nullable android.telephony.ims.ImsReasonInfo);
-    method public void onHandoverFailed(int, int, @NonNull android.telephony.ims.ImsReasonInfo);
-    method public void onMayHandover(int, int);
-  }
-
-  public final class ImsConferenceState implements android.os.Parcelable {
-    method public int describeContents();
-    method public static int getConnectionStateForStatus(String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsConferenceState> CREATOR;
-    field public static final String DISPLAY_TEXT = "display-text";
-    field public static final String ENDPOINT = "endpoint";
-    field public static final String SIP_STATUS_CODE = "sipstatuscode";
-    field public static final String STATUS = "status";
-    field public static final String STATUS_ALERTING = "alerting";
-    field public static final String STATUS_CONNECTED = "connected";
-    field public static final String STATUS_CONNECT_FAIL = "connect-fail";
-    field public static final String STATUS_DIALING_IN = "dialing-in";
-    field public static final String STATUS_DIALING_OUT = "dialing-out";
-    field public static final String STATUS_DISCONNECTED = "disconnected";
-    field public static final String STATUS_DISCONNECTING = "disconnecting";
-    field public static final String STATUS_MUTED_VIA_FOCUS = "muted-via-focus";
-    field public static final String STATUS_ON_HOLD = "on-hold";
-    field public static final String STATUS_PENDING = "pending";
-    field public static final String STATUS_SEND_ONLY = "sendonly";
-    field public static final String STATUS_SEND_RECV = "sendrecv";
-    field public static final String USER = "user";
-    field public final java.util.HashMap<java.lang.String,android.os.Bundle> mParticipants;
-  }
-
-  public final class ImsException extends java.lang.Exception {
-    ctor public ImsException(@Nullable String);
-    ctor public ImsException(@Nullable String, int);
-    ctor public ImsException(@Nullable String, int, @Nullable Throwable);
-  }
-
-  public final class ImsExternalCallState implements android.os.Parcelable {
-    ctor public ImsExternalCallState(@NonNull String, @NonNull android.net.Uri, @Nullable android.net.Uri, boolean, int, int, boolean);
-    method public int describeContents();
-    method @NonNull public android.net.Uri getAddress();
-    method public int getCallId();
-    method public int getCallState();
-    method public int getCallType();
-    method @Nullable public android.net.Uri getLocalAddress();
-    method public boolean isCallHeld();
-    method public boolean isCallPullable();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CALL_STATE_CONFIRMED = 1; // 0x1
-    field public static final int CALL_STATE_TERMINATED = 2; // 0x2
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsExternalCallState> CREATOR;
-  }
-
-  public class ImsMmTelManager implements android.telephony.ims.RegistrationManager {
-    method @Deprecated @NonNull @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public static android.telephony.ims.ImsMmTelManager createForSubscriptionId(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getFeatureState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>) throws android.telephony.ims.ImsException;
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getRegistrationState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getVoWiFiRoamingModeSetting();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isAvailable(int, int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isCapable(int, int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void isSupported(int, int, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>) throws android.telephony.ims.ImsException;
-    method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void registerImsRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ImsMmTelManager.RegistrationCallback) throws android.telephony.ims.ImsException;
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setAdvancedCallingSettingEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setRttCapabilitySetting(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiModeSetting(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiNonPersistent(boolean, int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiRoamingModeSetting(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiRoamingSettingEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiSettingEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVtSettingEnabled(boolean);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.ImsMmTelManager.RegistrationCallback);
-  }
-
-  @Deprecated public static class ImsMmTelManager.RegistrationCallback extends android.telephony.ims.RegistrationManager.RegistrationCallback {
-    ctor @Deprecated public ImsMmTelManager.RegistrationCallback();
-  }
-
-  public final class ImsReasonInfo implements android.os.Parcelable {
-    field public static final String EXTRA_MSG_SERVICE_NOT_AUTHORIZED = "Forbidden. Not Authorized for Service";
-  }
-
-  public class ImsService extends android.app.Service {
-    ctor public ImsService();
-    method public android.telephony.ims.feature.MmTelFeature createMmTelFeature(int);
-    method public android.telephony.ims.feature.RcsFeature createRcsFeature(int);
-    method public void disableIms(int);
-    method public void enableIms(int);
-    method public android.telephony.ims.stub.ImsConfigImplBase getConfig(int);
-    method public android.telephony.ims.stub.ImsRegistrationImplBase getRegistration(int);
-    method public final void onUpdateSupportedImsFeatures(android.telephony.ims.stub.ImsFeatureConfiguration) throws android.os.RemoteException;
-    method public android.telephony.ims.stub.ImsFeatureConfiguration querySupportedImsFeatures();
-    method public void readyForFeatureCreation();
-  }
-
-  public final class ImsSsData implements android.os.Parcelable {
-    ctor public ImsSsData(int, int, int, int, int);
-    method public int describeContents();
-    method @Nullable public java.util.List<android.telephony.ims.ImsCallForwardInfo> getCallForwardInfo();
-    method public int getRequestType();
-    method public int getResult();
-    method public int getServiceClass();
-    method public int getServiceType();
-    method @NonNull public java.util.List<android.telephony.ims.ImsSsInfo> getSuppServiceInfo();
-    method public int getTeleserviceType();
-    method public boolean isTypeBarring();
-    method public boolean isTypeCf();
-    method public boolean isTypeClip();
-    method public boolean isTypeClir();
-    method public boolean isTypeColp();
-    method public boolean isTypeColr();
-    method public boolean isTypeCw();
-    method public boolean isTypeIcb();
-    method public boolean isTypeInterrogation();
-    method public boolean isTypeUnConditional();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsSsData> CREATOR;
-    field public static final int RESULT_SUCCESS = 0; // 0x0
-    field public static final int SERVICE_CLASS_DATA = 2; // 0x2
-    field public static final int SERVICE_CLASS_DATA_CIRCUIT_ASYNC = 32; // 0x20
-    field public static final int SERVICE_CLASS_DATA_CIRCUIT_SYNC = 16; // 0x10
-    field public static final int SERVICE_CLASS_DATA_PACKET_ACCESS = 64; // 0x40
-    field public static final int SERVICE_CLASS_DATA_PAD = 128; // 0x80
-    field public static final int SERVICE_CLASS_FAX = 4; // 0x4
-    field public static final int SERVICE_CLASS_NONE = 0; // 0x0
-    field public static final int SERVICE_CLASS_SMS = 8; // 0x8
-    field public static final int SERVICE_CLASS_VOICE = 1; // 0x1
-    field public static final int SS_ACTIVATION = 0; // 0x0
-    field public static final int SS_ALL_BARRING = 18; // 0x12
-    field public static final int SS_ALL_DATA_TELESERVICES = 3; // 0x3
-    field public static final int SS_ALL_TELESERVICES_EXCEPT_SMS = 5; // 0x5
-    field public static final int SS_ALL_TELESEVICES = 1; // 0x1
-    field public static final int SS_ALL_TELE_AND_BEARER_SERVICES = 0; // 0x0
-    field public static final int SS_BAIC = 16; // 0x10
-    field public static final int SS_BAIC_ROAMING = 17; // 0x11
-    field public static final int SS_BAOC = 13; // 0xd
-    field public static final int SS_BAOIC = 14; // 0xe
-    field public static final int SS_BAOIC_EXC_HOME = 15; // 0xf
-    field public static final int SS_CFU = 0; // 0x0
-    field public static final int SS_CFUT = 6; // 0x6
-    field public static final int SS_CF_ALL = 4; // 0x4
-    field public static final int SS_CF_ALL_CONDITIONAL = 5; // 0x5
-    field public static final int SS_CF_BUSY = 1; // 0x1
-    field public static final int SS_CF_NOT_REACHABLE = 3; // 0x3
-    field public static final int SS_CF_NO_REPLY = 2; // 0x2
-    field public static final int SS_CLIP = 7; // 0x7
-    field public static final int SS_CLIR = 8; // 0x8
-    field public static final int SS_CNAP = 11; // 0xb
-    field public static final int SS_COLP = 9; // 0x9
-    field public static final int SS_COLR = 10; // 0xa
-    field public static final int SS_DEACTIVATION = 1; // 0x1
-    field public static final int SS_ERASURE = 4; // 0x4
-    field public static final int SS_INCOMING_BARRING = 20; // 0x14
-    field public static final int SS_INCOMING_BARRING_ANONYMOUS = 22; // 0x16
-    field public static final int SS_INCOMING_BARRING_DN = 21; // 0x15
-    field public static final int SS_INTERROGATION = 2; // 0x2
-    field public static final int SS_OUTGOING_BARRING = 19; // 0x13
-    field public static final int SS_REGISTRATION = 3; // 0x3
-    field public static final int SS_SMS_SERVICES = 4; // 0x4
-    field public static final int SS_TELEPHONY = 2; // 0x2
-    field public static final int SS_WAIT = 12; // 0xc
-  }
-
-  public static final class ImsSsData.Builder {
-    ctor public ImsSsData.Builder(int, int, int, int, int);
-    method @NonNull public android.telephony.ims.ImsSsData build();
-    method @NonNull public android.telephony.ims.ImsSsData.Builder setCallForwardingInfo(@NonNull java.util.List<android.telephony.ims.ImsCallForwardInfo>);
-    method @NonNull public android.telephony.ims.ImsSsData.Builder setSuppServiceInfo(@NonNull java.util.List<android.telephony.ims.ImsSsInfo>);
-  }
-
-  public final class ImsSsInfo implements android.os.Parcelable {
-    ctor @Deprecated public ImsSsInfo(int, @Nullable String);
-    method public int describeContents();
-    method public int getClirInterrogationStatus();
-    method public int getClirOutgoingState();
-    method @Deprecated public String getIcbNum();
-    method @Nullable public String getIncomingCommunicationBarringNumber();
-    method public int getProvisionStatus();
-    method public int getStatus();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CLIR_OUTGOING_DEFAULT = 0; // 0x0
-    field public static final int CLIR_OUTGOING_INVOCATION = 1; // 0x1
-    field public static final int CLIR_OUTGOING_SUPPRESSION = 2; // 0x2
-    field public static final int CLIR_STATUS_NOT_PROVISIONED = 0; // 0x0
-    field public static final int CLIR_STATUS_PROVISIONED_PERMANENT = 1; // 0x1
-    field public static final int CLIR_STATUS_TEMPORARILY_ALLOWED = 4; // 0x4
-    field public static final int CLIR_STATUS_TEMPORARILY_RESTRICTED = 3; // 0x3
-    field public static final int CLIR_STATUS_UNKNOWN = 2; // 0x2
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsSsInfo> CREATOR;
-    field public static final int DISABLED = 0; // 0x0
-    field public static final int ENABLED = 1; // 0x1
-    field public static final int NOT_REGISTERED = -1; // 0xffffffff
-    field public static final int SERVICE_NOT_PROVISIONED = 0; // 0x0
-    field public static final int SERVICE_PROVISIONED = 1; // 0x1
-    field public static final int SERVICE_PROVISIONING_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public static final class ImsSsInfo.Builder {
-    ctor public ImsSsInfo.Builder(int);
-    method @NonNull public android.telephony.ims.ImsSsInfo build();
-    method @NonNull public android.telephony.ims.ImsSsInfo.Builder setClirInterrogationStatus(int);
-    method @NonNull public android.telephony.ims.ImsSsInfo.Builder setClirOutgoingState(int);
-    method @NonNull public android.telephony.ims.ImsSsInfo.Builder setIncomingCommunicationBarringNumber(@NonNull String);
-    method @NonNull public android.telephony.ims.ImsSsInfo.Builder setProvisionStatus(int);
-  }
-
-  public final class ImsStreamMediaProfile implements android.os.Parcelable {
-    ctor public ImsStreamMediaProfile(int, int, int, int, int);
-    method public void copyFrom(android.telephony.ims.ImsStreamMediaProfile);
-    method public int describeContents();
-    method public int getAudioDirection();
-    method public int getAudioQuality();
-    method public int getRttMode();
-    method public int getVideoDirection();
-    method public int getVideoQuality();
-    method public boolean isReceivingRttAudio();
-    method public boolean isRttCall();
-    method public void setReceivingRttAudio(boolean);
-    method public void setRttMode(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int AUDIO_QUALITY_AMR = 1; // 0x1
-    field public static final int AUDIO_QUALITY_AMR_WB = 2; // 0x2
-    field public static final int AUDIO_QUALITY_EVRC = 4; // 0x4
-    field public static final int AUDIO_QUALITY_EVRC_B = 5; // 0x5
-    field public static final int AUDIO_QUALITY_EVRC_NW = 7; // 0x7
-    field public static final int AUDIO_QUALITY_EVRC_WB = 6; // 0x6
-    field public static final int AUDIO_QUALITY_EVS_FB = 20; // 0x14
-    field public static final int AUDIO_QUALITY_EVS_NB = 17; // 0x11
-    field public static final int AUDIO_QUALITY_EVS_SWB = 19; // 0x13
-    field public static final int AUDIO_QUALITY_EVS_WB = 18; // 0x12
-    field public static final int AUDIO_QUALITY_G711A = 13; // 0xd
-    field public static final int AUDIO_QUALITY_G711AB = 15; // 0xf
-    field public static final int AUDIO_QUALITY_G711U = 11; // 0xb
-    field public static final int AUDIO_QUALITY_G722 = 14; // 0xe
-    field public static final int AUDIO_QUALITY_G723 = 12; // 0xc
-    field public static final int AUDIO_QUALITY_G729 = 16; // 0x10
-    field public static final int AUDIO_QUALITY_GSM_EFR = 8; // 0x8
-    field public static final int AUDIO_QUALITY_GSM_FR = 9; // 0x9
-    field public static final int AUDIO_QUALITY_GSM_HR = 10; // 0xa
-    field public static final int AUDIO_QUALITY_NONE = 0; // 0x0
-    field public static final int AUDIO_QUALITY_QCELP13K = 3; // 0x3
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsStreamMediaProfile> CREATOR;
-    field public static final int DIRECTION_INACTIVE = 0; // 0x0
-    field public static final int DIRECTION_INVALID = -1; // 0xffffffff
-    field public static final int DIRECTION_RECEIVE = 1; // 0x1
-    field public static final int DIRECTION_SEND = 2; // 0x2
-    field public static final int DIRECTION_SEND_RECEIVE = 3; // 0x3
-    field public static final int RTT_MODE_DISABLED = 0; // 0x0
-    field public static final int RTT_MODE_FULL = 1; // 0x1
-    field public static final int VIDEO_QUALITY_NONE = 0; // 0x0
-    field public static final int VIDEO_QUALITY_QCIF = 1; // 0x1
-    field public static final int VIDEO_QUALITY_QVGA_LANDSCAPE = 2; // 0x2
-    field public static final int VIDEO_QUALITY_QVGA_PORTRAIT = 4; // 0x4
-    field public static final int VIDEO_QUALITY_VGA_LANDSCAPE = 8; // 0x8
-    field public static final int VIDEO_QUALITY_VGA_PORTRAIT = 16; // 0x10
-  }
-
-  public final class ImsSuppServiceNotification implements android.os.Parcelable {
-    ctor public ImsSuppServiceNotification(int, int, int, int, String, String[]);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsSuppServiceNotification> CREATOR;
-    field public final int code;
-    field public final String[] history;
-    field public final int index;
-    field public final int notificationType;
-    field public final String number;
-    field public final int type;
-  }
-
-  public class ImsUtListener {
-    method public void onLineIdentificationSupplementaryServiceResponse(int, @NonNull android.telephony.ims.ImsSsInfo);
-    method public void onSupplementaryServiceIndication(android.telephony.ims.ImsSsData);
-    method public void onUtConfigurationCallBarringQueried(int, android.telephony.ims.ImsSsInfo[]);
-    method public void onUtConfigurationCallForwardQueried(int, android.telephony.ims.ImsCallForwardInfo[]);
-    method public void onUtConfigurationCallWaitingQueried(int, android.telephony.ims.ImsSsInfo[]);
-    method @Deprecated public void onUtConfigurationQueried(int, android.os.Bundle);
-    method public void onUtConfigurationQueryFailed(int, android.telephony.ims.ImsReasonInfo);
-    method public void onUtConfigurationUpdateFailed(int, android.telephony.ims.ImsReasonInfo);
-    method public void onUtConfigurationUpdated(int);
-    field @Deprecated public static final String BUNDLE_KEY_CLIR = "queryClir";
-    field @Deprecated public static final String BUNDLE_KEY_SSINFO = "imsSsInfo";
-  }
-
-  public abstract class ImsVideoCallProvider {
-    ctor public ImsVideoCallProvider();
-    method public void changeCallDataUsage(long);
-    method public void changeCameraCapabilities(android.telecom.VideoProfile.CameraCapabilities);
-    method public void changePeerDimensions(int, int);
-    method public void changeVideoQuality(int);
-    method public void handleCallSessionEvent(int);
-    method public abstract void onRequestCallDataUsage();
-    method public abstract void onRequestCameraCapabilities();
-    method public abstract void onSendSessionModifyRequest(android.telecom.VideoProfile, android.telecom.VideoProfile);
-    method public abstract void onSendSessionModifyResponse(android.telecom.VideoProfile);
-    method public abstract void onSetCamera(String);
-    method public void onSetCamera(String, int);
-    method public abstract void onSetDeviceOrientation(int);
-    method public abstract void onSetDisplaySurface(android.view.Surface);
-    method public abstract void onSetPauseImage(android.net.Uri);
-    method public abstract void onSetPreviewSurface(android.view.Surface);
-    method public abstract void onSetZoom(float);
-    method public void receiveSessionModifyRequest(android.telecom.VideoProfile);
-    method public void receiveSessionModifyResponse(int, android.telecom.VideoProfile, android.telecom.VideoProfile);
-  }
-
-  public class ProvisioningManager {
-    method @NonNull public static android.telephony.ims.ProvisioningManager createForSubscriptionId(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public int getProvisioningIntValue(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public boolean getProvisioningStatusForCapability(int, int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public String getProvisioningStringValue(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public boolean getRcsProvisioningStatusForCapability(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void notifyRcsAutoConfigurationReceived(@NonNull byte[], boolean);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void registerProvisioningChangedCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ProvisioningManager.Callback) throws android.telephony.ims.ImsException;
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public int setProvisioningIntValue(int, int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public void setProvisioningStatusForCapability(int, int, boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public int setProvisioningStringValue(int, @NonNull String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public void setRcsProvisioningStatusForCapability(int, boolean);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void unregisterProvisioningChangedCallback(@NonNull android.telephony.ims.ProvisioningManager.Callback);
-    field public static final int KEY_VOICE_OVER_WIFI_ENTITLEMENT_ID = 67; // 0x43
-    field public static final int KEY_VOICE_OVER_WIFI_MODE_OVERRIDE = 27; // 0x1b
-    field public static final int KEY_VOICE_OVER_WIFI_ROAMING_ENABLED_OVERRIDE = 26; // 0x1a
-    field public static final int PROVISIONING_VALUE_DISABLED = 0; // 0x0
-    field public static final int PROVISIONING_VALUE_ENABLED = 1; // 0x1
-    field public static final String STRING_QUERY_RESULT_ERROR_GENERIC = "STRING_QUERY_RESULT_ERROR_GENERIC";
-    field public static final String STRING_QUERY_RESULT_ERROR_NOT_READY = "STRING_QUERY_RESULT_ERROR_NOT_READY";
-  }
-
-  public static class ProvisioningManager.Callback {
-    ctor public ProvisioningManager.Callback();
-    method public void onProvisioningIntChanged(int, int);
-    method public void onProvisioningStringChanged(int, @NonNull String);
-  }
-
-  public class RcsUceAdapter {
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setUceSettingEnabled(boolean) throws android.telephony.ims.ImsException;
-  }
-
-}
-
-package android.telephony.ims.feature {
-
-  public final class CapabilityChangeRequest implements android.os.Parcelable {
-    method public void addCapabilitiesToDisableForTech(int, int);
-    method public void addCapabilitiesToEnableForTech(int, int);
-    method public int describeContents();
-    method public java.util.List<android.telephony.ims.feature.CapabilityChangeRequest.CapabilityPair> getCapabilitiesToDisable();
-    method public java.util.List<android.telephony.ims.feature.CapabilityChangeRequest.CapabilityPair> getCapabilitiesToEnable();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.feature.CapabilityChangeRequest> CREATOR;
-  }
-
-  public static class CapabilityChangeRequest.CapabilityPair {
-    ctor public CapabilityChangeRequest.CapabilityPair(int, int);
-    method public int getCapability();
-    method public int getRadioTech();
-  }
-
-  public abstract class ImsFeature {
-    ctor public ImsFeature();
-    method public abstract void changeEnabledCapabilities(android.telephony.ims.feature.CapabilityChangeRequest, android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy);
-    method public int getFeatureState();
-    method public final int getSlotIndex();
-    method public abstract void onFeatureReady();
-    method public abstract void onFeatureRemoved();
-    method public final void setFeatureState(int);
-    field public static final int CAPABILITY_ERROR_GENERIC = -1; // 0xffffffff
-    field public static final int CAPABILITY_SUCCESS = 0; // 0x0
-    field public static final int FEATURE_EMERGENCY_MMTEL = 0; // 0x0
-    field public static final int FEATURE_MMTEL = 1; // 0x1
-    field public static final int FEATURE_RCS = 2; // 0x2
-    field public static final int STATE_INITIALIZING = 1; // 0x1
-    field public static final int STATE_READY = 2; // 0x2
-    field public static final int STATE_UNAVAILABLE = 0; // 0x0
-  }
-
-  @Deprecated public static class ImsFeature.Capabilities {
-    field @Deprecated protected int mCapabilities;
-  }
-
-  protected static class ImsFeature.CapabilityCallbackProxy {
-    method public void onChangeCapabilityConfigurationError(int, int, int);
-  }
-
-  public class MmTelFeature extends android.telephony.ims.feature.ImsFeature {
-    ctor public MmTelFeature();
-    method public void changeEnabledCapabilities(@NonNull android.telephony.ims.feature.CapabilityChangeRequest, @NonNull android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy);
-    method @Nullable public android.telephony.ims.ImsCallProfile createCallProfile(int, int);
-    method @Nullable public android.telephony.ims.stub.ImsCallSessionImplBase createCallSession(@NonNull android.telephony.ims.ImsCallProfile);
-    method @NonNull public android.telephony.ims.stub.ImsEcbmImplBase getEcbm();
-    method @NonNull public android.telephony.ims.stub.ImsMultiEndpointImplBase getMultiEndpoint();
-    method @NonNull public android.telephony.ims.stub.ImsSmsImplBase getSmsImplementation();
-    method @NonNull public android.telephony.ims.stub.ImsUtImplBase getUt();
-    method public final void notifyCapabilitiesStatusChanged(@NonNull android.telephony.ims.feature.MmTelFeature.MmTelCapabilities);
-    method public final void notifyIncomingCall(@NonNull android.telephony.ims.stub.ImsCallSessionImplBase, @NonNull android.os.Bundle);
-    method public final void notifyRejectedCall(@NonNull android.telephony.ims.ImsCallProfile, @NonNull android.telephony.ims.ImsReasonInfo);
-    method public final void notifyVoiceMessageCountUpdate(int);
-    method public void onFeatureReady();
-    method public void onFeatureRemoved();
-    method public boolean queryCapabilityConfiguration(int, int);
-    method @NonNull public final android.telephony.ims.feature.MmTelFeature.MmTelCapabilities queryCapabilityStatus();
-    method public void setUiTtyMode(int, @Nullable android.os.Message);
-    method public int shouldProcessCall(@NonNull String[]);
-    field public static final String EXTRA_IS_UNKNOWN_CALL = "android.telephony.ims.feature.extra.IS_UNKNOWN_CALL";
-    field public static final String EXTRA_IS_USSD = "android.telephony.ims.feature.extra.IS_USSD";
-    field public static final int PROCESS_CALL_CSFB = 1; // 0x1
-    field public static final int PROCESS_CALL_IMS = 0; // 0x0
-  }
-
-  public static class MmTelFeature.MmTelCapabilities extends android.telephony.ims.feature.ImsFeature.Capabilities {
-    ctor public MmTelFeature.MmTelCapabilities();
-    ctor @Deprecated public MmTelFeature.MmTelCapabilities(android.telephony.ims.feature.ImsFeature.Capabilities);
-    ctor public MmTelFeature.MmTelCapabilities(int);
-    method public final void addCapabilities(int);
-    method public final boolean isCapable(int);
-    method public final void removeCapabilities(int);
-  }
-
-  public class RcsFeature extends android.telephony.ims.feature.ImsFeature {
-    ctor public RcsFeature();
-    method public void changeEnabledCapabilities(@NonNull android.telephony.ims.feature.CapabilityChangeRequest, @NonNull android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy);
-    method public void onFeatureReady();
-    method public void onFeatureRemoved();
-  }
-
-}
-
-package android.telephony.ims.stub {
-
-  public class ImsCallSessionImplBase implements java.lang.AutoCloseable {
-    ctor public ImsCallSessionImplBase();
-    method public void accept(int, android.telephony.ims.ImsStreamMediaProfile);
-    method public void close();
-    method public void deflect(String);
-    method public void extendToConference(String[]);
-    method public String getCallId();
-    method public android.telephony.ims.ImsCallProfile getCallProfile();
-    method public android.telephony.ims.ImsVideoCallProvider getImsVideoCallProvider();
-    method public android.telephony.ims.ImsCallProfile getLocalCallProfile();
-    method public String getProperty(String);
-    method public android.telephony.ims.ImsCallProfile getRemoteCallProfile();
-    method public int getState();
-    method public void hold(android.telephony.ims.ImsStreamMediaProfile);
-    method public void inviteParticipants(String[]);
-    method public boolean isInCall();
-    method public boolean isMultiparty();
-    method public void merge();
-    method public void reject(int);
-    method public void removeParticipants(String[]);
-    method public void resume(android.telephony.ims.ImsStreamMediaProfile);
-    method public void sendDtmf(char, android.os.Message);
-    method public void sendRttMessage(String);
-    method public void sendRttModifyRequest(android.telephony.ims.ImsCallProfile);
-    method public void sendRttModifyResponse(boolean);
-    method public void sendUssd(String);
-    method public void setListener(android.telephony.ims.ImsCallSessionListener);
-    method public void setMute(boolean);
-    method public void start(String, android.telephony.ims.ImsCallProfile);
-    method public void startConference(String[], android.telephony.ims.ImsCallProfile);
-    method public void startDtmf(char);
-    method public void stopDtmf();
-    method public void terminate(int);
-    method public void update(int, android.telephony.ims.ImsStreamMediaProfile);
-    field public static final int USSD_MODE_NOTIFY = 0; // 0x0
-    field public static final int USSD_MODE_REQUEST = 1; // 0x1
-  }
-
-  public static class ImsCallSessionImplBase.State {
-    method public static String toString(int);
-    field public static final int ESTABLISHED = 4; // 0x4
-    field public static final int ESTABLISHING = 3; // 0x3
-    field public static final int IDLE = 0; // 0x0
-    field public static final int INITIATED = 1; // 0x1
-    field public static final int INVALID = -1; // 0xffffffff
-    field public static final int NEGOTIATING = 2; // 0x2
-    field public static final int REESTABLISHING = 6; // 0x6
-    field public static final int RENEGOTIATING = 5; // 0x5
-    field public static final int TERMINATED = 8; // 0x8
-    field public static final int TERMINATING = 7; // 0x7
-  }
-
-  public class ImsConfigImplBase {
-    ctor public ImsConfigImplBase();
-    method public int getConfigInt(int);
-    method public String getConfigString(int);
-    method public final void notifyProvisionedValueChanged(int, int);
-    method public final void notifyProvisionedValueChanged(int, String);
-    method public void notifyRcsAutoConfigurationReceived(@NonNull byte[], boolean);
-    method public int setConfig(int, int);
-    method public int setConfig(int, String);
-    field public static final int CONFIG_RESULT_FAILED = 1; // 0x1
-    field public static final int CONFIG_RESULT_SUCCESS = 0; // 0x0
-    field public static final int CONFIG_RESULT_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public class ImsEcbmImplBase {
-    ctor public ImsEcbmImplBase();
-    method public final void enteredEcbm();
-    method public void exitEmergencyCallbackMode();
-    method public final void exitedEcbm();
-  }
-
-  public final class ImsFeatureConfiguration implements android.os.Parcelable {
-    method public int describeContents();
-    method public java.util.Set<android.telephony.ims.stub.ImsFeatureConfiguration.FeatureSlotPair> getServiceFeatures();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.stub.ImsFeatureConfiguration> CREATOR;
-  }
-
-  public static class ImsFeatureConfiguration.Builder {
-    ctor public ImsFeatureConfiguration.Builder();
-    method public android.telephony.ims.stub.ImsFeatureConfiguration.Builder addFeature(int, int);
-    method public android.telephony.ims.stub.ImsFeatureConfiguration build();
-  }
-
-  public static final class ImsFeatureConfiguration.FeatureSlotPair {
-    ctor public ImsFeatureConfiguration.FeatureSlotPair(int, int);
-    field public final int featureType;
-    field public final int slotId;
-  }
-
-  public class ImsMultiEndpointImplBase {
-    ctor public ImsMultiEndpointImplBase();
-    method public final void onImsExternalCallStateUpdate(java.util.List<android.telephony.ims.ImsExternalCallState>);
-    method public void requestImsExternalCallStateInfo();
-  }
-
-  public class ImsRegistrationImplBase {
-    ctor public ImsRegistrationImplBase();
-    method public final void onDeregistered(android.telephony.ims.ImsReasonInfo);
-    method public final void onRegistered(int);
-    method public final void onRegistering(int);
-    method public final void onSubscriberAssociatedUriChanged(android.net.Uri[]);
-    method public final void onTechnologyChangeFailed(int, android.telephony.ims.ImsReasonInfo);
-    field public static final int REGISTRATION_TECH_IWLAN = 1; // 0x1
-    field public static final int REGISTRATION_TECH_LTE = 0; // 0x0
-    field public static final int REGISTRATION_TECH_NONE = -1; // 0xffffffff
-  }
-
-  public class ImsSmsImplBase {
-    ctor public ImsSmsImplBase();
-    method public void acknowledgeSms(int, @IntRange(from=0, to=65535) int, int);
-    method public void acknowledgeSmsReport(int, @IntRange(from=0, to=65535) int, int);
-    method public String getSmsFormat();
-    method public void onReady();
-    method @Deprecated public final void onSendSmsResult(int, @IntRange(from=0, to=65535) int, int, int) throws java.lang.RuntimeException;
-    method public final void onSendSmsResultError(int, @IntRange(from=0, to=65535) int, int, int, int) throws java.lang.RuntimeException;
-    method public final void onSendSmsResultSuccess(int, @IntRange(from=0, to=65535) int) throws java.lang.RuntimeException;
-    method public final void onSmsReceived(int, String, byte[]) throws java.lang.RuntimeException;
-    method @Deprecated public final void onSmsStatusReportReceived(int, @IntRange(from=0, to=65535) int, String, byte[]) throws java.lang.RuntimeException;
-    method public final void onSmsStatusReportReceived(int, String, byte[]) throws java.lang.RuntimeException;
-    method public void sendSms(int, @IntRange(from=0, to=65535) int, String, String, boolean, byte[]);
-    field public static final int DELIVER_STATUS_ERROR_GENERIC = 2; // 0x2
-    field public static final int DELIVER_STATUS_ERROR_NO_MEMORY = 3; // 0x3
-    field public static final int DELIVER_STATUS_ERROR_REQUEST_NOT_SUPPORTED = 4; // 0x4
-    field public static final int DELIVER_STATUS_OK = 1; // 0x1
-    field public static final int RESULT_NO_NETWORK_ERROR = -1; // 0xffffffff
-    field public static final int SEND_STATUS_ERROR = 2; // 0x2
-    field public static final int SEND_STATUS_ERROR_FALLBACK = 4; // 0x4
-    field public static final int SEND_STATUS_ERROR_RETRY = 3; // 0x3
-    field public static final int SEND_STATUS_OK = 1; // 0x1
-    field public static final int STATUS_REPORT_STATUS_ERROR = 2; // 0x2
-    field public static final int STATUS_REPORT_STATUS_OK = 1; // 0x1
-  }
-
-  public class ImsUtImplBase {
-    ctor public ImsUtImplBase();
-    method public void close();
-    method public int queryCallBarring(int);
-    method public int queryCallBarringForServiceClass(int, int);
-    method public int queryCallForward(int, String);
-    method public int queryCallWaiting();
-    method public int queryClip();
-    method public int queryClir();
-    method public int queryColp();
-    method public int queryColr();
-    method public void setListener(android.telephony.ims.ImsUtListener);
-    method public int transact(android.os.Bundle);
-    method public int updateCallBarring(int, int, String[]);
-    method public int updateCallBarringForServiceClass(int, int, String[], int);
-    method public int updateCallForward(int, int, String, int, int);
-    method public int updateCallWaiting(boolean, int);
-    method public int updateClip(boolean);
-    method public int updateClir(int);
-    method public int updateColp(boolean);
-    method public int updateColr(int);
-  }
-
-}
-
-package android.telephony.mbms {
-
-  public static class DownloadRequest.Builder {
-    method public android.telephony.mbms.DownloadRequest.Builder setServiceId(String);
-  }
-
-  public final class FileInfo implements android.os.Parcelable {
-    ctor public FileInfo(android.net.Uri, String);
-  }
-
-  public final class FileServiceInfo extends android.telephony.mbms.ServiceInfo implements android.os.Parcelable {
-    ctor public FileServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date, java.util.List<android.telephony.mbms.FileInfo>);
-  }
-
-  public class MbmsDownloadReceiver extends android.content.BroadcastReceiver {
-    field public static final int RESULT_APP_NOTIFICATION_ERROR = 6; // 0x6
-    field public static final int RESULT_BAD_TEMP_FILE_ROOT = 3; // 0x3
-    field public static final int RESULT_DOWNLOAD_FINALIZATION_ERROR = 4; // 0x4
-    field public static final int RESULT_INVALID_ACTION = 1; // 0x1
-    field public static final int RESULT_MALFORMED_INTENT = 2; // 0x2
-    field public static final int RESULT_OK = 0; // 0x0
-    field public static final int RESULT_TEMP_FILE_GENERATION_ERROR = 5; // 0x5
-  }
-
-  public final class StreamingServiceInfo extends android.telephony.mbms.ServiceInfo implements android.os.Parcelable {
-    ctor public StreamingServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date);
-  }
-
-  public final class UriPathPair implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.net.Uri getContentUri();
-    method public android.net.Uri getFilePathUri();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.mbms.UriPathPair> CREATOR;
-  }
-
-}
-
-package android.telephony.mbms.vendor {
-
-  public class MbmsDownloadServiceBase extends android.os.Binder implements android.os.IInterface {
-    ctor public MbmsDownloadServiceBase();
-    method public int addProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener) throws android.os.RemoteException;
-    method public int addServiceAnnouncement(int, @NonNull byte[]);
-    method public int addStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener) throws android.os.RemoteException;
-    method public android.os.IBinder asBinder();
-    method public int cancelDownload(android.telephony.mbms.DownloadRequest) throws android.os.RemoteException;
-    method public void dispose(int) throws android.os.RemoteException;
-    method public int download(android.telephony.mbms.DownloadRequest) throws android.os.RemoteException;
-    method public int initialize(int, android.telephony.mbms.MbmsDownloadSessionCallback) throws android.os.RemoteException;
-    method @NonNull public java.util.List<android.telephony.mbms.DownloadRequest> listPendingDownloads(int) throws android.os.RemoteException;
-    method public void onAppCallbackDied(int, int);
-    method public boolean onTransact(int, android.os.Parcel, android.os.Parcel, int) throws android.os.RemoteException;
-    method public int removeProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener) throws android.os.RemoteException;
-    method public int removeStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener) throws android.os.RemoteException;
-    method public int requestDownloadState(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo) throws android.os.RemoteException;
-    method public int requestUpdateFileServices(int, java.util.List<java.lang.String>) throws android.os.RemoteException;
-    method public int resetDownloadKnowledge(android.telephony.mbms.DownloadRequest) throws android.os.RemoteException;
-    method public int setTempFileRootDirectory(int, String) throws android.os.RemoteException;
-  }
-
-  public class MbmsGroupCallServiceBase extends android.app.Service {
-    ctor public MbmsGroupCallServiceBase();
-    method public void dispose(int) throws android.os.RemoteException;
-    method public int initialize(@NonNull android.telephony.mbms.MbmsGroupCallSessionCallback, int) throws android.os.RemoteException;
-    method public void onAppCallbackDied(int, int);
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public int startGroupCall(int, long, @NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.lang.Integer>, @NonNull android.telephony.mbms.GroupCallCallback);
-    method public void stopGroupCall(int, long);
-    method public void updateGroupCall(int, long, @NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.lang.Integer>);
-  }
-
-  public class MbmsStreamingServiceBase extends android.os.Binder implements android.os.IInterface {
-    ctor public MbmsStreamingServiceBase();
-    method public android.os.IBinder asBinder();
-    method public void dispose(int) throws android.os.RemoteException;
-    method @Nullable public android.net.Uri getPlaybackUri(int, String) throws android.os.RemoteException;
-    method public int initialize(android.telephony.mbms.MbmsStreamingSessionCallback, int) throws android.os.RemoteException;
-    method public void onAppCallbackDied(int, int);
-    method public boolean onTransact(int, android.os.Parcel, android.os.Parcel, int) throws android.os.RemoteException;
-    method public int requestUpdateStreamingServices(int, java.util.List<java.lang.String>) throws android.os.RemoteException;
-    method public int startStreaming(int, String, android.telephony.mbms.StreamingServiceCallback) throws android.os.RemoteException;
-    method public void stopStreaming(int, String) throws android.os.RemoteException;
-  }
-
-  public class VendorUtils {
-    ctor public VendorUtils();
-    method public static android.content.ComponentName getAppReceiverFromPackageName(android.content.Context, String);
-    field public static final String ACTION_CLEANUP = "android.telephony.mbms.action.CLEANUP";
-    field public static final String ACTION_DOWNLOAD_RESULT_INTERNAL = "android.telephony.mbms.action.DOWNLOAD_RESULT_INTERNAL";
-    field public static final String ACTION_FILE_DESCRIPTOR_REQUEST = "android.telephony.mbms.action.FILE_DESCRIPTOR_REQUEST";
-    field public static final String EXTRA_FD_COUNT = "android.telephony.mbms.extra.FD_COUNT";
-    field public static final String EXTRA_FINAL_URI = "android.telephony.mbms.extra.FINAL_URI";
-    field public static final String EXTRA_FREE_URI_LIST = "android.telephony.mbms.extra.FREE_URI_LIST";
-    field public static final String EXTRA_PAUSED_LIST = "android.telephony.mbms.extra.PAUSED_LIST";
-    field public static final String EXTRA_PAUSED_URI_LIST = "android.telephony.mbms.extra.PAUSED_URI_LIST";
-    field public static final String EXTRA_SERVICE_ID = "android.telephony.mbms.extra.SERVICE_ID";
-    field public static final String EXTRA_TEMP_FILES_IN_USE = "android.telephony.mbms.extra.TEMP_FILES_IN_USE";
-    field public static final String EXTRA_TEMP_FILE_ROOT = "android.telephony.mbms.extra.TEMP_FILE_ROOT";
-    field public static final String EXTRA_TEMP_LIST = "android.telephony.mbms.extra.TEMP_LIST";
-  }
-
-}
-
-package android.util {
-
-  public class EventLog {
-    method public static void readEventsOnWrapping(int[], long, java.util.Collection<android.util.EventLog.Event>) throws java.io.IOException;
-  }
-
-  public static final class EventLog.Event {
-    method public int getUid();
-  }
-
-  public final class StatsEvent {
-    method @NonNull public static android.util.StatsEvent.Builder newBuilder();
-  }
-
-  public static final class StatsEvent.Builder {
-    method @NonNull public android.util.StatsEvent.Builder addBooleanAnnotation(byte, boolean);
-    method @NonNull public android.util.StatsEvent.Builder addIntAnnotation(byte, int);
-    method @NonNull public android.util.StatsEvent build();
-    method @NonNull public android.util.StatsEvent.Builder setAtomId(int);
-    method @NonNull public android.util.StatsEvent.Builder usePooledBuffer();
-    method @NonNull public android.util.StatsEvent.Builder writeAttributionChain(@NonNull int[], @NonNull String[]);
-    method @NonNull public android.util.StatsEvent.Builder writeBoolean(boolean);
-    method @NonNull public android.util.StatsEvent.Builder writeByteArray(@NonNull byte[]);
-    method @NonNull public android.util.StatsEvent.Builder writeFloat(float);
-    method @NonNull public android.util.StatsEvent.Builder writeInt(int);
-    method @NonNull public android.util.StatsEvent.Builder writeKeyValuePairs(@Nullable android.util.SparseIntArray, @Nullable android.util.SparseLongArray, @Nullable android.util.SparseArray<java.lang.String>, @Nullable android.util.SparseArray<java.lang.Float>);
-    method @NonNull public android.util.StatsEvent.Builder writeLong(long);
-    method @NonNull public android.util.StatsEvent.Builder writeString(@NonNull String);
-  }
-
-  public final class StatsLog {
-    method public static void write(@NonNull android.util.StatsEvent);
-    method public static void writeRaw(@NonNull byte[], int);
-  }
-
-}
-
-package android.view {
-
-  public abstract class Window {
-    method public void addSystemFlags(@android.view.WindowManager.LayoutParams.SystemFlags int);
-  }
-
-  public interface WindowManager extends android.view.ViewManager {
-    method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public android.graphics.Region getCurrentImeTouchRegion();
-  }
-
-  public static class WindowManager.LayoutParams extends android.view.ViewGroup.LayoutParams implements android.os.Parcelable {
-    method public final long getUserActivityTimeout();
-    method public final void setUserActivityTimeout(long);
-    field @RequiresPermission(android.Manifest.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS) public static final int SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS = 524288; // 0x80000
-    field @RequiresPermission(android.Manifest.permission.INTERNAL_SYSTEM_WINDOW) public static final int SYSTEM_FLAG_SHOW_FOR_ALL_USERS = 16; // 0x10
-  }
-
-  @IntDef(flag=true, prefix={"SYSTEM_FLAG_"}, value={android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS, android.view.WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface WindowManager.LayoutParams.SystemFlags {
-  }
-
-}
-
-package android.view.accessibility {
-
-  public final class AccessibilityManager {
-    method public int getAccessibilityWindowId(@Nullable android.os.IBinder);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACCESSIBILITY) public void performAccessibilityShortcut();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACCESSIBILITY) public void registerSystemAction(@NonNull android.app.RemoteAction, int);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACCESSIBILITY) public void unregisterSystemAction(int);
-  }
-
-}
-
-package android.view.autofill {
-
-  public final class AutofillManager {
-    method public void setAugmentedAutofillWhitelist(@Nullable java.util.Set<java.lang.String>, @Nullable java.util.Set<android.content.ComponentName>);
-  }
-
-}
-
-package android.view.contentcapture {
-
-  public final class ContentCaptureContext implements android.os.Parcelable {
-    method @Nullable public android.content.ComponentName getActivityComponent();
-    method public int getDisplayId();
-    method public int getFlags();
-    method @Nullable public android.view.contentcapture.ContentCaptureSessionId getParentSessionId();
-    method public int getTaskId();
-    field public static final int FLAG_DISABLED_BY_APP = 1; // 0x1
-    field public static final int FLAG_DISABLED_BY_FLAG_SECURE = 2; // 0x2
-    field public static final int FLAG_RECONNECTED = 4; // 0x4
-  }
-
-  public final class ContentCaptureEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.view.contentcapture.ContentCaptureContext getContentCaptureContext();
-    method public long getEventTime();
-    method @Nullable public android.view.autofill.AutofillId getId();
-    method @Nullable public java.util.List<android.view.autofill.AutofillId> getIds();
-    method @Nullable public android.graphics.Insets getInsets();
-    method @Nullable public CharSequence getText();
-    method public int getType();
-    method @Nullable public android.view.contentcapture.ViewNode getViewNode();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.contentcapture.ContentCaptureEvent> CREATOR;
-    field public static final int TYPE_CONTEXT_UPDATED = 6; // 0x6
-    field public static final int TYPE_SESSION_PAUSED = 8; // 0x8
-    field public static final int TYPE_SESSION_RESUMED = 7; // 0x7
-    field public static final int TYPE_VIEW_APPEARED = 1; // 0x1
-    field public static final int TYPE_VIEW_DISAPPEARED = 2; // 0x2
-    field public static final int TYPE_VIEW_INSETS_CHANGED = 9; // 0x9
-    field public static final int TYPE_VIEW_TEXT_CHANGED = 3; // 0x3
-    field public static final int TYPE_VIEW_TREE_APPEARED = 5; // 0x5
-    field public static final int TYPE_VIEW_TREE_APPEARING = 4; // 0x4
-  }
-
-  public final class ContentCaptureManager {
-    method public boolean isContentCaptureFeatureEnabled();
-    field public static final int NO_SESSION_ID = 0; // 0x0
-  }
-
-  public final class ViewNode extends android.app.assist.AssistStructure.ViewNode {
-    method @Nullable public android.view.autofill.AutofillId getParentAutofillId();
-  }
-
-}
-
-package android.webkit {
-
-  public abstract class CookieManager {
-    method protected abstract boolean allowFileSchemeCookiesImpl();
-    method public abstract String getCookie(String, boolean);
-    method public String getCookie(android.net.WebAddress);
-    method public abstract boolean hasCookies(boolean);
-    method protected abstract void setAcceptFileSchemeCookiesImpl(boolean);
-  }
-
-  public class FindActionModeCallback implements android.view.ActionMode.Callback android.text.TextWatcher android.view.View.OnClickListener android.webkit.WebView.FindListener {
-    ctor public FindActionModeCallback(android.content.Context);
-    method public void afterTextChanged(android.text.Editable);
-    method public void beforeTextChanged(CharSequence, int, int, int);
-    method public void findAll();
-    method public void finish();
-    method public int getActionModeGlobalBottom();
-    method public boolean onActionItemClicked(android.view.ActionMode, android.view.MenuItem);
-    method public void onClick(android.view.View);
-    method public boolean onCreateActionMode(android.view.ActionMode, android.view.Menu);
-    method public void onDestroyActionMode(android.view.ActionMode);
-    method public void onFindResultReceived(int, int, boolean);
-    method public boolean onPrepareActionMode(android.view.ActionMode, android.view.Menu);
-    method public void onTextChanged(CharSequence, int, int, int);
-    method public void setText(String);
-    method public void setWebView(@NonNull android.webkit.WebView);
-    method public void showSoftInput();
-    method public void updateMatchCount(int, int, boolean);
-  }
-
-  public static class FindActionModeCallback.NoAction implements android.view.ActionMode.Callback {
-    ctor public FindActionModeCallback.NoAction();
-    method public boolean onActionItemClicked(android.view.ActionMode, android.view.MenuItem);
-    method public boolean onCreateActionMode(android.view.ActionMode, android.view.Menu);
-    method public void onDestroyActionMode(android.view.ActionMode);
-    method public boolean onPrepareActionMode(android.view.ActionMode, android.view.Menu);
-  }
-
-  public class GeolocationPermissions {
-    ctor public GeolocationPermissions();
-  }
-
-  public class HttpAuthHandler extends android.os.Handler {
-    ctor public HttpAuthHandler();
-  }
-
-  public class JsDialogHelper {
-    ctor public JsDialogHelper(android.webkit.JsPromptResult, int, String, String, String);
-    ctor public JsDialogHelper(android.webkit.JsPromptResult, android.os.Message);
-    method public boolean invokeCallback(android.webkit.WebChromeClient, android.webkit.WebView);
-    method public void showDialog(android.content.Context);
-    field public static final int ALERT = 1; // 0x1
-    field public static final int CONFIRM = 2; // 0x2
-    field public static final int PROMPT = 3; // 0x3
-    field public static final int UNLOAD = 4; // 0x4
-  }
-
-  public class JsPromptResult extends android.webkit.JsResult {
-    ctor public JsPromptResult(android.webkit.JsResult.ResultReceiver);
-    method public String getStringResult();
-  }
-
-  public class JsResult {
-    ctor public JsResult(android.webkit.JsResult.ResultReceiver);
-    method public final boolean getResult();
-  }
-
-  public static interface JsResult.ResultReceiver {
-    method public void onJsResultComplete(android.webkit.JsResult);
-  }
-
-  public interface PacProcessor {
-    method @Nullable public String findProxyForUrl(@NonNull String);
-    method @NonNull public static android.webkit.PacProcessor getInstance();
-    method public boolean setProxyScript(@NonNull String);
-  }
-
-  public class SslErrorHandler extends android.os.Handler {
-    ctor public SslErrorHandler();
-  }
-
-  @Deprecated public abstract class TokenBindingService {
-    ctor @Deprecated public TokenBindingService();
-  }
-
-  public class WebChromeClient {
-    method @Deprecated public void openFileChooser(android.webkit.ValueCallback<android.net.Uri>, String, String);
-  }
-
-  public abstract class WebHistoryItem implements java.lang.Cloneable {
-    method @Deprecated public abstract int getId();
-  }
-
-  @Deprecated public abstract class WebIconDatabase {
-    method @Deprecated public abstract void bulkRequestIconForPageUrl(android.content.ContentResolver, String, android.webkit.WebIconDatabase.IconListener);
-  }
-
-  public abstract class WebMessagePort {
-    ctor public WebMessagePort();
-  }
-
-  public abstract class WebResourceError {
-    ctor public WebResourceError();
-  }
-
-  public class WebResourceResponse {
-    ctor public WebResourceResponse(boolean, String, String, int, String, java.util.Map<java.lang.String,java.lang.String>, java.io.InputStream);
-  }
-
-  public abstract class WebSettings {
-    method public abstract boolean getAcceptThirdPartyCookies();
-    method @Deprecated public abstract boolean getNavDump();
-    method @Deprecated public abstract boolean getPluginsEnabled();
-    method @Deprecated public abstract boolean getUseWebViewBackgroundForOverscrollBackground();
-    method @Deprecated public abstract int getUserAgent();
-    method public abstract boolean getVideoOverlayForEmbeddedEncryptedVideoEnabled();
-    method public abstract void setAcceptThirdPartyCookies(boolean);
-    method @Deprecated public abstract void setNavDump(boolean);
-    method @Deprecated public abstract void setPluginsEnabled(boolean);
-    method @Deprecated public abstract void setUseWebViewBackgroundForOverscrollBackground(boolean);
-    method @Deprecated public abstract void setUserAgent(int);
-    method public abstract void setVideoOverlayForEmbeddedEncryptedVideoEnabled(boolean);
-  }
-
-  public class WebStorage {
-    ctor public WebStorage();
-  }
-
-  public static class WebStorage.Origin {
-    ctor protected WebStorage.Origin(String, long, long);
-  }
-
-  public class WebView extends android.widget.AbsoluteLayout implements android.view.ViewGroup.OnHierarchyChangeListener android.view.ViewTreeObserver.OnGlobalFocusChangeListener {
-    method public android.webkit.WebViewProvider getWebViewProvider();
-  }
-
-  public static class WebView.HitTestResult {
-    ctor public WebView.HitTestResult();
-    method public void setExtra(String);
-    method public void setType(int);
-  }
-
-  public class WebView.PrivateAccess {
-    ctor public WebView.PrivateAccess();
-    method public void awakenScrollBars(int);
-    method public void awakenScrollBars(int, boolean);
-    method public float getHorizontalScrollFactor();
-    method public int getHorizontalScrollbarHeight();
-    method public float getVerticalScrollFactor();
-    method public void onScrollChanged(int, int, int, int);
-    method public void overScrollBy(int, int, int, int, int, int, int, int, boolean);
-    method public void setMeasuredDimension(int, int);
-    method public void setScrollXRaw(int);
-    method public void setScrollYRaw(int);
-    method public void super_computeScroll();
-    method public boolean super_dispatchKeyEvent(android.view.KeyEvent);
-    method public int super_getScrollBarStyle();
-    method public void super_onDrawVerticalScrollBar(android.graphics.Canvas, android.graphics.drawable.Drawable, int, int, int, int);
-    method public boolean super_onGenericMotionEvent(android.view.MotionEvent);
-    method public boolean super_onHoverEvent(android.view.MotionEvent);
-    method public boolean super_performAccessibilityAction(int, android.os.Bundle);
-    method public boolean super_performLongClick();
-    method public boolean super_requestFocus(int, android.graphics.Rect);
-    method public void super_scrollTo(int, int);
-    method public boolean super_setFrame(int, int, int, int);
-    method public void super_setLayoutParams(android.view.ViewGroup.LayoutParams);
-    method public void super_startActivityForResult(android.content.Intent, int);
-  }
-
-  public final class WebViewDelegate {
-    method public void addWebViewAssetPath(android.content.Context);
-    method @Deprecated public void callDrawGlFunction(android.graphics.Canvas, long);
-    method @Deprecated public void callDrawGlFunction(@NonNull android.graphics.Canvas, long, @Nullable Runnable);
-    method @Deprecated public boolean canInvokeDrawGlFunctor(android.view.View);
-    method @Deprecated public void detachDrawGlFunctor(android.view.View, long);
-    method public void drawWebViewFunctor(@NonNull android.graphics.Canvas, int);
-    method public android.app.Application getApplication();
-    method public String getDataDirectorySuffix();
-    method public String getErrorString(android.content.Context, int);
-    method public int getPackageId(android.content.res.Resources, String);
-    method @Deprecated public void invokeDrawGlFunctor(android.view.View, long, boolean);
-    method public boolean isMultiProcessEnabled();
-    method public boolean isTraceTagEnabled();
-    method public void setOnTraceEnabledChangeListener(android.webkit.WebViewDelegate.OnTraceEnabledChangeListener);
-  }
-
-  public static interface WebViewDelegate.OnTraceEnabledChangeListener {
-    method public void onTraceEnabledChange(boolean);
-  }
-
-  public final class WebViewFactory {
-    ctor public WebViewFactory();
-    method public static android.content.pm.PackageInfo getLoadedPackageInfo();
-    method public static int loadWebViewNativeLibraryFromPackage(String, ClassLoader);
-    method public static void prepareWebViewInZygote();
-    field public static final int LIBLOAD_ADDRESS_SPACE_NOT_RESERVED = 2; // 0x2
-    field public static final int LIBLOAD_FAILED_JNI_CALL = 7; // 0x7
-    field public static final int LIBLOAD_FAILED_LISTING_WEBVIEW_PACKAGES = 4; // 0x4
-    field public static final int LIBLOAD_FAILED_TO_FIND_NAMESPACE = 10; // 0xa
-    field public static final int LIBLOAD_FAILED_TO_LOAD_LIBRARY = 6; // 0x6
-    field public static final int LIBLOAD_FAILED_TO_OPEN_RELRO_FILE = 5; // 0x5
-    field public static final int LIBLOAD_FAILED_WAITING_FOR_RELRO = 3; // 0x3
-    field public static final int LIBLOAD_FAILED_WAITING_FOR_WEBVIEW_REASON_UNKNOWN = 8; // 0x8
-    field public static final int LIBLOAD_SUCCESS = 0; // 0x0
-    field public static final int LIBLOAD_WRONG_PACKAGE_NAME = 1; // 0x1
-  }
-
-  public interface WebViewFactoryProvider {
-    method public android.webkit.WebViewProvider createWebView(android.webkit.WebView, android.webkit.WebView.PrivateAccess);
-    method public android.webkit.CookieManager getCookieManager();
-    method public android.webkit.GeolocationPermissions getGeolocationPermissions();
-    method @NonNull public default android.webkit.PacProcessor getPacProcessor();
-    method public android.webkit.ServiceWorkerController getServiceWorkerController();
-    method public android.webkit.WebViewFactoryProvider.Statics getStatics();
-    method @Deprecated public android.webkit.TokenBindingService getTokenBindingService();
-    method public android.webkit.TracingController getTracingController();
-    method public android.webkit.WebIconDatabase getWebIconDatabase();
-    method public android.webkit.WebStorage getWebStorage();
-    method public ClassLoader getWebViewClassLoader();
-    method public android.webkit.WebViewDatabase getWebViewDatabase(android.content.Context);
-  }
-
-  public static interface WebViewFactoryProvider.Statics {
-    method public void clearClientCertPreferences(Runnable);
-    method public void enableSlowWholeDocumentDraw();
-    method public String findAddress(String);
-    method public void freeMemoryForTests();
-    method public String getDefaultUserAgent(android.content.Context);
-    method @NonNull public android.net.Uri getSafeBrowsingPrivacyPolicyUrl();
-    method public void initSafeBrowsing(android.content.Context, android.webkit.ValueCallback<java.lang.Boolean>);
-    method public android.net.Uri[] parseFileChooserResult(int, android.content.Intent);
-    method public void setSafeBrowsingWhitelist(java.util.List<java.lang.String>, android.webkit.ValueCallback<java.lang.Boolean>);
-    method public void setWebContentsDebuggingEnabled(boolean);
-  }
-
-  public interface WebViewProvider {
-    method public void addJavascriptInterface(Object, String);
-    method public boolean canGoBack();
-    method public boolean canGoBackOrForward(int);
-    method public boolean canGoForward();
-    method public boolean canZoomIn();
-    method public boolean canZoomOut();
-    method public android.graphics.Picture capturePicture();
-    method public void clearCache(boolean);
-    method public void clearFormData();
-    method public void clearHistory();
-    method public void clearMatches();
-    method public void clearSslPreferences();
-    method public void clearView();
-    method public android.webkit.WebBackForwardList copyBackForwardList();
-    method public android.print.PrintDocumentAdapter createPrintDocumentAdapter(String);
-    method public android.webkit.WebMessagePort[] createWebMessageChannel();
-    method public void destroy();
-    method public void documentHasImages(android.os.Message);
-    method public void dumpViewHierarchyWithProperties(java.io.BufferedWriter, int);
-    method public void evaluateJavaScript(String, android.webkit.ValueCallback<java.lang.String>);
-    method public int findAll(String);
-    method public void findAllAsync(String);
-    method public android.view.View findHierarchyView(String, int);
-    method public void findNext(boolean);
-    method public void flingScroll(int, int);
-    method public void freeMemory();
-    method public android.net.http.SslCertificate getCertificate();
-    method public int getContentHeight();
-    method public int getContentWidth();
-    method public android.graphics.Bitmap getFavicon();
-    method public android.webkit.WebView.HitTestResult getHitTestResult();
-    method public String[] getHttpAuthUsernamePassword(String, String);
-    method public String getOriginalUrl();
-    method public int getProgress();
-    method public boolean getRendererPriorityWaivedWhenNotVisible();
-    method public int getRendererRequestedPriority();
-    method public float getScale();
-    method public android.webkit.WebViewProvider.ScrollDelegate getScrollDelegate();
-    method public android.webkit.WebSettings getSettings();
-    method @NonNull public default android.view.textclassifier.TextClassifier getTextClassifier();
-    method public String getTitle();
-    method public String getTouchIconUrl();
-    method public String getUrl();
-    method public android.webkit.WebViewProvider.ViewDelegate getViewDelegate();
-    method public int getVisibleTitleHeight();
-    method public android.webkit.WebChromeClient getWebChromeClient();
-    method public android.webkit.WebViewClient getWebViewClient();
-    method @Nullable public android.webkit.WebViewRenderProcess getWebViewRenderProcess();
-    method @Nullable public android.webkit.WebViewRenderProcessClient getWebViewRenderProcessClient();
-    method public android.view.View getZoomControls();
-    method public void goBack();
-    method public void goBackOrForward(int);
-    method public void goForward();
-    method public void init(java.util.Map<java.lang.String,java.lang.Object>, boolean);
-    method public void insertVisualStateCallback(long, android.webkit.WebView.VisualStateCallback);
-    method public void invokeZoomPicker();
-    method public boolean isPaused();
-    method public boolean isPrivateBrowsingEnabled();
-    method public void loadData(String, String, String);
-    method public void loadDataWithBaseURL(String, String, String, String, String);
-    method public void loadUrl(String, java.util.Map<java.lang.String,java.lang.String>);
-    method public void loadUrl(String);
-    method public void notifyFindDialogDismissed();
-    method public void onPause();
-    method public void onResume();
-    method public boolean overlayHorizontalScrollbar();
-    method public boolean overlayVerticalScrollbar();
-    method public boolean pageDown(boolean);
-    method public boolean pageUp(boolean);
-    method public void pauseTimers();
-    method public void postMessageToMainFrame(android.webkit.WebMessage, android.net.Uri);
-    method public void postUrl(String, byte[]);
-    method public void reload();
-    method public void removeJavascriptInterface(String);
-    method public void requestFocusNodeHref(android.os.Message);
-    method public void requestImageRef(android.os.Message);
-    method public boolean restorePicture(android.os.Bundle, java.io.File);
-    method public android.webkit.WebBackForwardList restoreState(android.os.Bundle);
-    method public void resumeTimers();
-    method public void savePassword(String, String, String);
-    method public boolean savePicture(android.os.Bundle, java.io.File);
-    method public android.webkit.WebBackForwardList saveState(android.os.Bundle);
-    method public void saveWebArchive(String);
-    method public void saveWebArchive(String, boolean, android.webkit.ValueCallback<java.lang.String>);
-    method public void setCertificate(android.net.http.SslCertificate);
-    method public void setDownloadListener(android.webkit.DownloadListener);
-    method public void setFindListener(android.webkit.WebView.FindListener);
-    method public void setHorizontalScrollbarOverlay(boolean);
-    method public void setHttpAuthUsernamePassword(String, String, String, String);
-    method public void setInitialScale(int);
-    method public void setMapTrackballToArrowKeys(boolean);
-    method public void setNetworkAvailable(boolean);
-    method public void setPictureListener(android.webkit.WebView.PictureListener);
-    method public void setRendererPriorityPolicy(int, boolean);
-    method public default void setTextClassifier(@Nullable android.view.textclassifier.TextClassifier);
-    method public void setVerticalScrollbarOverlay(boolean);
-    method public void setWebChromeClient(android.webkit.WebChromeClient);
-    method public void setWebViewClient(android.webkit.WebViewClient);
-    method public void setWebViewRenderProcessClient(@Nullable java.util.concurrent.Executor, @Nullable android.webkit.WebViewRenderProcessClient);
-    method public boolean showFindDialog(String, boolean);
-    method public void stopLoading();
-    method public boolean zoomBy(float);
-    method public boolean zoomIn();
-    method public boolean zoomOut();
-  }
-
-  public static interface WebViewProvider.ScrollDelegate {
-    method public int computeHorizontalScrollOffset();
-    method public int computeHorizontalScrollRange();
-    method public void computeScroll();
-    method public int computeVerticalScrollExtent();
-    method public int computeVerticalScrollOffset();
-    method public int computeVerticalScrollRange();
-  }
-
-  public static interface WebViewProvider.ViewDelegate {
-    method public default void autofill(android.util.SparseArray<android.view.autofill.AutofillValue>);
-    method public boolean dispatchKeyEvent(android.view.KeyEvent);
-    method public android.view.View findFocus(android.view.View);
-    method public android.view.accessibility.AccessibilityNodeProvider getAccessibilityNodeProvider();
-    method public android.os.Handler getHandler(android.os.Handler);
-    method public default boolean isVisibleToUserForAutofill(int);
-    method public void onActivityResult(int, int, android.content.Intent);
-    method public void onAttachedToWindow();
-    method public default boolean onCheckIsTextEditor();
-    method public void onConfigurationChanged(android.content.res.Configuration);
-    method public android.view.inputmethod.InputConnection onCreateInputConnection(android.view.inputmethod.EditorInfo);
-    method public void onDetachedFromWindow();
-    method public boolean onDragEvent(android.view.DragEvent);
-    method public void onDraw(android.graphics.Canvas);
-    method public void onDrawVerticalScrollBar(android.graphics.Canvas, android.graphics.drawable.Drawable, int, int, int, int);
-    method public void onFinishTemporaryDetach();
-    method public void onFocusChanged(boolean, int, android.graphics.Rect);
-    method public boolean onGenericMotionEvent(android.view.MotionEvent);
-    method public boolean onHoverEvent(android.view.MotionEvent);
-    method public void onInitializeAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    method public void onInitializeAccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo);
-    method public boolean onKeyDown(int, android.view.KeyEvent);
-    method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
-    method public boolean onKeyUp(int, android.view.KeyEvent);
-    method public void onMeasure(int, int);
-    method public default void onMovedToDisplay(int, android.content.res.Configuration);
-    method public void onOverScrolled(int, int, boolean, boolean);
-    method public default void onProvideAutofillVirtualStructure(android.view.ViewStructure, int);
-    method public default void onProvideContentCaptureStructure(@NonNull android.view.ViewStructure, int);
-    method public void onProvideVirtualStructure(android.view.ViewStructure);
-    method public void onScrollChanged(int, int, int, int);
-    method public void onSizeChanged(int, int, int, int);
-    method public void onStartTemporaryDetach();
-    method public boolean onTouchEvent(android.view.MotionEvent);
-    method public boolean onTrackballEvent(android.view.MotionEvent);
-    method public void onVisibilityChanged(android.view.View, int);
-    method public void onWindowFocusChanged(boolean);
-    method public void onWindowVisibilityChanged(int);
-    method public boolean performAccessibilityAction(int, android.os.Bundle);
-    method public boolean performLongClick();
-    method public void preDispatchDraw(android.graphics.Canvas);
-    method public boolean requestChildRectangleOnScreen(android.view.View, android.graphics.Rect, boolean);
-    method public boolean requestFocus(int, android.graphics.Rect);
-    method public void setBackgroundColor(int);
-    method public boolean setFrame(int, int, int, int);
-    method public void setLayerType(int, android.graphics.Paint);
-    method public void setLayoutParams(android.view.ViewGroup.LayoutParams);
-    method public void setOverScrollMode(int);
-    method public void setScrollBarStyle(int);
-    method public boolean shouldDelayChildPressedState();
-  }
-
-  public final class WebViewProviderInfo implements android.os.Parcelable {
-    ctor public WebViewProviderInfo(String, String, boolean, boolean, String[]);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.webkit.WebViewProviderInfo> CREATOR;
-    field public final boolean availableByDefault;
-    field public final String description;
-    field public final boolean isFallback;
-    field public final String packageName;
-    field public final android.content.pm.Signature[] signatures;
-  }
-
-  public final class WebViewUpdateService {
-    method public static android.webkit.WebViewProviderInfo[] getAllWebViewPackages();
-    method public static String getCurrentWebViewPackageName();
-    method public static android.webkit.WebViewProviderInfo[] getValidWebViewPackages();
-  }
-
-}
-
diff --git a/api/system-lint-baseline.txt b/api/system-lint-baseline.txt
deleted file mode 100644
index 9c40b6c..0000000
--- a/api/system-lint-baseline.txt
+++ /dev/null
@@ -1,517 +0,0 @@
-// Baseline format: 1.0
-AcronymName: android.net.NetworkCapabilities#setSSID(String):
-    Acronyms should not be capitalized in method names: was `setSSID`, should this be `setSsid`?
-
-
-ActionValue: android.location.Location#EXTRA_NO_GPS_LOCATION:
-    
-ActionValue: android.net.wifi.WifiManager#ACTION_LINK_CONFIGURATION_CHANGED:
-    
-
-// Tethering broadcast action / extras cannot change name for backwards compatibility
-ActionValue: android.net.TetheringManager#ACTION_TETHER_STATE_CHANGED:
-    Inconsistent action value; expected `android.net.action.TETHER_STATE_CHANGED`, was `android.net.conn.TETHER_STATE_CHANGED`
-ActionValue: android.net.TetheringManager#EXTRA_ACTIVE_TETHER:
-    Inconsistent extra value; expected `android.net.extra.ACTIVE_TETHER`, was `tetherArray`
-ActionValue: android.net.TetheringManager#EXTRA_AVAILABLE_TETHER:
-    Inconsistent extra value; expected `android.net.extra.AVAILABLE_TETHER`, was `availableArray`
-ActionValue: android.net.TetheringManager#EXTRA_ERRORED_TETHER:
-    Inconsistent extra value; expected `android.net.extra.ERRORED_TETHER`, was `erroredArray`
-
-ArrayReturn: android.bluetooth.BluetoothCodecStatus#BluetoothCodecStatus(android.bluetooth.BluetoothCodecConfig, android.bluetooth.BluetoothCodecConfig[], android.bluetooth.BluetoothCodecConfig[]) parameter #1:
-    Method parameter should be Collection<BluetoothCodecConfig> (or subclass) instead of raw array; was `android.bluetooth.BluetoothCodecConfig[]`
-ArrayReturn: android.bluetooth.BluetoothCodecStatus#BluetoothCodecStatus(android.bluetooth.BluetoothCodecConfig, android.bluetooth.BluetoothCodecConfig[], android.bluetooth.BluetoothCodecConfig[]) parameter #2:
-    Method parameter should be Collection<BluetoothCodecConfig> (or subclass) instead of raw array; was `android.bluetooth.BluetoothCodecConfig[]`
-ArrayReturn: android.bluetooth.BluetoothCodecStatus#getCodecsLocalCapabilities():
-    Method should return Collection<BluetoothCodecConfig> (or subclass) instead of raw array; was `android.bluetooth.BluetoothCodecConfig[]`
-ArrayReturn: android.bluetooth.BluetoothCodecStatus#getCodecsSelectableCapabilities():
-    Method should return Collection<BluetoothCodecConfig> (or subclass) instead of raw array; was `android.bluetooth.BluetoothCodecConfig[]`
-ArrayReturn: android.bluetooth.BluetoothUuid#containsAnyUuid(android.os.ParcelUuid[], android.os.ParcelUuid[]) parameter #0:
-    Method parameter should be Collection<ParcelUuid> (or subclass) instead of raw array; was `android.os.ParcelUuid[]`
-ArrayReturn: android.bluetooth.BluetoothUuid#containsAnyUuid(android.os.ParcelUuid[], android.os.ParcelUuid[]) parameter #1:
-    Method parameter should be Collection<ParcelUuid> (or subclass) instead of raw array; was `android.os.ParcelUuid[]`
-ArrayReturn: android.media.tv.tuner.Tuner.FilterCallback#onFilterEvent(android.media.tv.tuner.Tuner.Filter, android.media.tv.tuner.filter.FilterEvent[]) parameter #1:
-    Method parameter should be Collection<FilterEvent> (or subclass) instead of raw array; was `android.media.tv.tuner.filter.FilterEvent[]`
-ArrayReturn: android.net.NetworkScoreManager#requestScores(android.net.NetworkKey[]) parameter #0:
-    Method parameter should be Collection<NetworkKey> (or subclass) instead of raw array; was `android.net.NetworkKey[]`
-ArrayReturn: android.view.contentcapture.ViewNode#getAutofillOptions():
-    
-
-
-ExecutorRegistration: android.net.wifi.p2p.WifiP2pManager#deletePersistentGroup(android.net.wifi.p2p.WifiP2pManager.Channel, int, android.net.wifi.p2p.WifiP2pManager.ActionListener):
-    
-ExecutorRegistration: android.net.wifi.p2p.WifiP2pManager#factoryReset(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener):
-    
-ExecutorRegistration: android.net.wifi.p2p.WifiP2pManager#listen(android.net.wifi.p2p.WifiP2pManager.Channel, boolean, android.net.wifi.p2p.WifiP2pManager.ActionListener):
-    
-ExecutorRegistration: android.net.wifi.p2p.WifiP2pManager#requestPersistentGroupInfo(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.PersistentGroupInfoListener):
-    
-ExecutorRegistration: android.net.wifi.p2p.WifiP2pManager#setDeviceName(android.net.wifi.p2p.WifiP2pManager.Channel, String, android.net.wifi.p2p.WifiP2pManager.ActionListener):
-    
-ExecutorRegistration: android.net.wifi.p2p.WifiP2pManager#setWfdInfo(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pWfdInfo, android.net.wifi.p2p.WifiP2pManager.ActionListener):
-    
-ExecutorRegistration: android.net.wifi.p2p.WifiP2pManager#setWifiP2pChannels(android.net.wifi.p2p.WifiP2pManager.Channel, int, int, android.net.wifi.p2p.WifiP2pManager.ActionListener):
-    
-
-
-GenericException: android.app.prediction.AppPredictor#finalize():
-    
-GenericException: android.hardware.location.ContextHubClient#finalize():
-    
-GenericException: android.net.IpSecManager.IpSecTunnelInterface#finalize():
-    
-GenericException: android.service.autofill.augmented.FillWindow#finalize():
-    
-
-
-IntentBuilderName: android.content.Context#registerReceiverForAllUsers(android.content.BroadcastReceiver, android.content.IntentFilter, String, android.os.Handler):
-    Methods creating an Intent should be named `create<Foo>Intent()`, was `registerReceiverForAllUsers`
-
-
-KotlinKeyword: android.app.Notification#when:
-    
-
-
-KotlinOperator: android.telephony.CbGeoUtils.Geometry#contains(android.telephony.CbGeoUtils.LatLng):
-    Method can be invoked as a "in" operator from Kotlin: `contains` (this is usually desirable; just make sure it makes sense for this type of object)
-
-
-MissingNullability: android.hardware.soundtrigger.SoundTrigger.ModuleProperties#toString():
-    
-MissingNullability: android.hardware.soundtrigger.SoundTrigger.ModuleProperties#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.media.session.MediaSessionManager.Callback#onAddressedPlayerChanged(android.content.ComponentName) parameter #0:
-    
-MissingNullability: android.media.session.MediaSessionManager.Callback#onAddressedPlayerChanged(android.media.session.MediaSession.Token) parameter #0:
-    
-MissingNullability: android.media.session.MediaSessionManager.Callback#onMediaKeyEventDispatched(android.view.KeyEvent, android.content.ComponentName) parameter #0:
-    
-MissingNullability: android.media.session.MediaSessionManager.Callback#onMediaKeyEventDispatched(android.view.KeyEvent, android.content.ComponentName) parameter #1:
-    
-MissingNullability: android.media.session.MediaSessionManager.Callback#onMediaKeyEventDispatched(android.view.KeyEvent, android.media.session.MediaSession.Token) parameter #0:
-    
-MissingNullability: android.media.session.MediaSessionManager.Callback#onMediaKeyEventDispatched(android.view.KeyEvent, android.media.session.MediaSession.Token) parameter #1:
-    
-MissingNullability: android.media.soundtrigger.SoundTriggerDetectionService#onUnbind(android.content.Intent) parameter #0:
-    
-MissingNullability: android.media.tv.TvRecordingClient.RecordingCallback#onEvent(String, String, android.os.Bundle) parameter #0:
-    
-MissingNullability: android.media.tv.TvRecordingClient.RecordingCallback#onEvent(String, String, android.os.Bundle) parameter #1:
-    
-MissingNullability: android.media.tv.TvRecordingClient.RecordingCallback#onEvent(String, String, android.os.Bundle) parameter #2:
-    
-MissingNullability: android.net.wifi.rtt.RangingRequest.Builder#addResponder(android.net.wifi.rtt.ResponderConfig):
-    
-MissingNullability: android.printservice.recommendation.RecommendationService#attachBaseContext(android.content.Context) parameter #0:
-    
-MissingNullability: android.provider.ContactsContract.MetadataSync#CONTENT_URI:
-    
-MissingNullability: android.provider.ContactsContract.MetadataSync#METADATA_AUTHORITY_URI:
-    
-MissingNullability: android.provider.ContactsContract.MetadataSyncState#CONTENT_URI:
-    
-MissingNullability: android.provider.SearchIndexablesProvider#attachInfo(android.content.Context, android.content.pm.ProviderInfo) parameter #0:
-    
-MissingNullability: android.provider.SearchIndexablesProvider#attachInfo(android.content.Context, android.content.pm.ProviderInfo) parameter #1:
-    
-MissingNullability: android.service.autofill.augmented.AugmentedAutofillService#onUnbind(android.content.Intent) parameter #0:
-    
-MissingNullability: android.service.contentcapture.ContentCaptureService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #0:
-    
-MissingNullability: android.service.contentcapture.ContentCaptureService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #1:
-    
-MissingNullability: android.service.contentcapture.ContentCaptureService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #2:
-    
-MissingNullability: android.service.notification.NotificationAssistantService#attachBaseContext(android.content.Context) parameter #0:
-    
-MissingNullability: android.telecom.CallScreeningService.CallResponse.Builder#setShouldScreenCallFurther(boolean):
-    
-MissingNullability: android.telephony.CallerInfo#toString():
-    
-MissingNullability: android.telephony.CellBroadcastService#onBind(android.content.Intent):
-    
-MissingNullability: android.telephony.CellBroadcastService#onBind(android.content.Intent) parameter #0:
-    
-MissingNullability: android.telephony.CellBroadcastService#onCdmaCellBroadcastSms(int, byte[]) parameter #1:
-    
-MissingNullability: android.telephony.CellBroadcastService#onCdmaCellBroadcastSms(int, byte[], int) parameter #1:
-    
-MissingNullability: android.telephony.CellBroadcastService#onGsmCellBroadcastSms(int, byte[]) parameter #1:
-    
-MissingNullability: android.telephony.ModemActivityInfo#toString():
-    
-MissingNullability: android.telephony.ModemActivityInfo#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.telephony.ModemActivityInfo.TransmitPower#toString():
-    
-MissingNullability: android.telephony.NetworkService#onUnbind(android.content.Intent) parameter #0:
-    
-MissingNullability: android.telephony.SmsCbCmasInfo#toString():
-    
-MissingNullability: android.telephony.SmsCbCmasInfo#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.telephony.SmsCbEtwsInfo#toString():
-    
-MissingNullability: android.telephony.SmsCbEtwsInfo#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.telephony.SmsCbLocation#equals(Object) parameter #0:
-    
-MissingNullability: android.telephony.SmsCbLocation#toString():
-    
-MissingNullability: android.telephony.SmsCbLocation#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.telephony.SmsCbMessage#toString():
-    
-MissingNullability: android.telephony.SmsCbMessage#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.telephony.SubscriptionPlan.Builder#createRecurringDaily(java.time.ZonedDateTime) parameter #0:
-    
-MissingNullability: android.telephony.SubscriptionPlan.Builder#createRecurringMonthly(java.time.ZonedDateTime) parameter #0:
-    
-MissingNullability: android.telephony.SubscriptionPlan.Builder#createRecurringWeekly(java.time.ZonedDateTime) parameter #0:
-    
-MissingNullability: android.telephony.cdma.CdmaSmsCbProgramData#toString():
-    
-MissingNullability: android.telephony.cdma.CdmaSmsCbProgramData#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.telephony.data.DataService#onUnbind(android.content.Intent) parameter #0:
-    
-MissingNullability: android.telephony.ims.stub.ImsSmsImplBase#onSmsStatusReportReceived(int, String, byte[]) parameter #1:
-    
-MissingNullability: android.telephony.ims.stub.ImsSmsImplBase#onSmsStatusReportReceived(int, String, byte[]) parameter #2:
-    
-MissingNullability: android.telephony.mbms.DownloadRequest.Builder#setServiceId(String):
-    
-MissingNullability: android.telephony.mbms.DownloadRequest.Builder#setServiceId(String) parameter #0:
-    
-
-
-MutableBareField: android.net.IpConfiguration#httpProxy:
-    
-MutableBareField: android.net.IpConfiguration#ipAssignment:
-    
-MutableBareField: android.net.IpConfiguration#proxySettings:
-    
-MutableBareField: android.net.IpConfiguration#staticIpConfiguration:
-    
-MutableBareField: android.net.wifi.WifiConfiguration#allowAutojoin:
-    
-MutableBareField: android.net.wifi.WifiConfiguration#carrierId:
-    
-MutableBareField: android.net.wifi.WifiConfiguration#fromWifiNetworkSpecifier:
-    
-MutableBareField: android.net.wifi.WifiConfiguration#fromWifiNetworkSuggestion:
-    
-MutableBareField: android.net.wifi.WifiConfiguration#macRandomizationSetting:
-    
-MutableBareField: android.net.wifi.WifiConfiguration#meteredOverride:
-    
-MutableBareField: android.net.wifi.WifiConfiguration#requirePmf:
-    
-MutableBareField: android.net.wifi.WifiConfiguration#saePasswordId:
-    
-MutableBareField: android.net.wifi.WifiConfiguration#shared:
-    
-MutableBareField: android.net.wifi.WifiScanner.ScanSettings#type:
-    
-
-
-NoClone: android.service.contentcapture.ContentCaptureService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #0:
-
-
-
-NoSettingsProvider: android.provider.Settings.Global#TETHER_OFFLOAD_DISABLED:
-    New setting keys are not allowed. (Field: TETHER_OFFLOAD_DISABLED)
-NoSettingsProvider: android.provider.Settings.Global#TETHER_SUPPORTED:
-    New setting keys are not allowed. (Field: TETHER_SUPPORTED)
-    
-
-
-NotCloseable: android.bluetooth.BluetoothA2dpSink:
-    Classes that release resources (finalize()) should implement AutoClosable and CloseGuard: class android.bluetooth.BluetoothA2dpSink
-NotCloseable: android.bluetooth.BluetoothMap:
-    Classes that release resources (finalize()) should implement AutoClosable and CloseGuard: class android.bluetooth.BluetoothMap
-NotCloseable: android.bluetooth.BluetoothPan:
-    Classes that release resources (finalize()) should implement AutoClosable and CloseGuard: class android.bluetooth.BluetoothPan
-NotCloseable: android.bluetooth.BluetoothPbap:
-    Classes that release resources (finalize()) should implement AutoClosable and CloseGuard: class android.bluetooth.BluetoothPbap
-
-
-OnNameExpected: android.content.ContentProvider#checkUriPermission(android.net.Uri, int, int):
-    If implemented by developer, should follow the on<Something> style; otherwise consider marking final
-
-
-PairedRegistration: android.net.wifi.nl80211.WifiNl80211Manager#registerApCallback(String, java.util.concurrent.Executor, android.net.wifi.nl80211.WifiNl80211Manager.SoftApCallback):
-    
-
-
-ProtectedMember: android.printservice.recommendation.RecommendationService#attachBaseContext(android.content.Context):
-    
-ProtectedMember: android.service.contentcapture.ContentCaptureService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]):
-    
-ProtectedMember: android.service.notification.NotificationAssistantService#attachBaseContext(android.content.Context):
-    
-
-
-SamShouldBeLast: android.accounts.AccountManager#addAccount(String, String, String[], android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler):
-    
-SamShouldBeLast: android.accounts.AccountManager#addOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener, android.os.Handler, boolean):
-    
-SamShouldBeLast: android.accounts.AccountManager#addOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener, android.os.Handler, boolean, String[]):
-    
-SamShouldBeLast: android.accounts.AccountManager#confirmCredentials(android.accounts.Account, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler):
-    
-SamShouldBeLast: android.accounts.AccountManager#editProperties(String, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler):
-    
-SamShouldBeLast: android.accounts.AccountManager#finishSession(android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler):
-    
-SamShouldBeLast: android.accounts.AccountManager#getAccountsByTypeAndFeatures(String, String[], android.accounts.AccountManagerCallback<android.accounts.Account[]>, android.os.Handler):
-    
-SamShouldBeLast: android.accounts.AccountManager#getAuthToken(android.accounts.Account, String, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler):
-    
-SamShouldBeLast: android.accounts.AccountManager#getAuthToken(android.accounts.Account, String, android.os.Bundle, boolean, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler):
-    
-SamShouldBeLast: android.accounts.AccountManager#getAuthToken(android.accounts.Account, String, boolean, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler):
-    
-SamShouldBeLast: android.accounts.AccountManager#getAuthTokenByFeatures(String, String, String[], android.app.Activity, android.os.Bundle, android.os.Bundle, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler):
-    
-SamShouldBeLast: android.accounts.AccountManager#hasFeatures(android.accounts.Account, String[], android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler):
-    
-SamShouldBeLast: android.accounts.AccountManager#isCredentialsUpdateSuggested(android.accounts.Account, String, android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler):
-    
-SamShouldBeLast: android.accounts.AccountManager#removeAccount(android.accounts.Account, android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler):
-    
-SamShouldBeLast: android.accounts.AccountManager#removeAccount(android.accounts.Account, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler):
-    
-SamShouldBeLast: android.accounts.AccountManager#renameAccount(android.accounts.Account, String, android.accounts.AccountManagerCallback<android.accounts.Account>, android.os.Handler):
-    
-SamShouldBeLast: android.accounts.AccountManager#startAddAccountSession(String, String, String[], android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler):
-    
-SamShouldBeLast: android.accounts.AccountManager#startUpdateCredentialsSession(android.accounts.Account, String, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler):
-    
-SamShouldBeLast: android.accounts.AccountManager#updateCredentials(android.accounts.Account, String, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler):
-    
-SamShouldBeLast: android.app.AlarmManager#set(int, long, String, android.app.AlarmManager.OnAlarmListener, android.os.Handler):
-    
-SamShouldBeLast: android.app.AlarmManager#setExact(int, long, String, android.app.AlarmManager.OnAlarmListener, android.os.Handler):
-    
-SamShouldBeLast: android.app.AlarmManager#setWindow(int, long, long, String, android.app.AlarmManager.OnAlarmListener, android.os.Handler):
-    
-SamShouldBeLast: android.app.WallpaperInfo#dump(android.util.Printer, String):
-    
-SamShouldBeLast: android.app.WallpaperManager#addOnColorsChangedListener(android.app.WallpaperManager.OnColorsChangedListener, android.os.Handler):
-    SAM-compatible parameters (such as parameter 1, "listener", in android.app.WallpaperManager.addOnColorsChangedListener) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions
-SamShouldBeLast: android.app.admin.DevicePolicyManager#installSystemUpdate(android.content.ComponentName, android.net.Uri, java.util.concurrent.Executor, android.app.admin.DevicePolicyManager.InstallSystemUpdateCallback):
-    
-SamShouldBeLast: android.content.Context#bindIsolatedService(android.content.Intent, int, String, java.util.concurrent.Executor, android.content.ServiceConnection):
-    
-SamShouldBeLast: android.content.Context#bindService(android.content.Intent, int, java.util.concurrent.Executor, android.content.ServiceConnection):
-    
-SamShouldBeLast: android.content.ContextWrapper#bindIsolatedService(android.content.Intent, int, String, java.util.concurrent.Executor, android.content.ServiceConnection):
-    
-SamShouldBeLast: android.content.ContextWrapper#bindService(android.content.Intent, int, java.util.concurrent.Executor, android.content.ServiceConnection):
-    
-SamShouldBeLast: android.content.IntentFilter#dump(android.util.Printer, String):
-    
-SamShouldBeLast: android.content.pm.ApplicationInfo#dump(android.util.Printer, String):
-    
-SamShouldBeLast: android.content.pm.LauncherApps#registerPackageInstallerSessionCallback(java.util.concurrent.Executor, android.content.pm.PackageInstaller.SessionCallback):
-    
-SamShouldBeLast: android.content.pm.PackageItemInfo#dumpBack(android.util.Printer, String):
-    
-SamShouldBeLast: android.content.pm.PackageItemInfo#dumpFront(android.util.Printer, String):
-    
-SamShouldBeLast: android.content.pm.ResolveInfo#dump(android.util.Printer, String):
-    
-SamShouldBeLast: android.location.Location#dump(android.util.Printer, String):
-    
-SamShouldBeLast: android.location.LocationManager#addNmeaListener(android.location.OnNmeaMessageListener, android.os.Handler):
-    
-SamShouldBeLast: android.location.LocationManager#registerGnssMeasurementsCallback(java.util.concurrent.Executor, android.location.GnssMeasurementsEvent.Callback):
-    
-SamShouldBeLast: android.location.LocationManager#registerGnssNavigationMessageCallback(java.util.concurrent.Executor, android.location.GnssNavigationMessage.Callback):
-    
-SamShouldBeLast: android.location.LocationManager#registerGnssStatusCallback(java.util.concurrent.Executor, android.location.GnssStatus.Callback):
-    
-SamShouldBeLast: android.location.LocationManager#requestLocationUpdates(String, long, float, android.location.LocationListener, android.os.Looper):
-    SAM-compatible parameters (such as parameter 4, "listener", in android.location.LocationManager.requestLocationUpdates) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions
-SamShouldBeLast: android.location.LocationManager#requestLocationUpdates(String, long, float, java.util.concurrent.Executor, android.location.LocationListener):
-    
-SamShouldBeLast: android.location.LocationManager#requestLocationUpdates(android.location.LocationRequest, java.util.concurrent.Executor, android.location.LocationListener):
-    
-SamShouldBeLast: android.location.LocationManager#requestLocationUpdates(long, float, android.location.Criteria, android.location.LocationListener, android.os.Looper):
-    SAM-compatible parameters (such as parameter 4, "listener", in android.location.LocationManager.requestLocationUpdates) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions
-SamShouldBeLast: android.location.LocationManager#requestLocationUpdates(long, float, android.location.Criteria, java.util.concurrent.Executor, android.location.LocationListener):
-    
-SamShouldBeLast: android.location.LocationManager#requestSingleUpdate(String, android.location.LocationListener, android.os.Looper):
-    SAM-compatible parameters (such as parameter 2, "listener", in android.location.LocationManager.requestSingleUpdate) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions
-SamShouldBeLast: android.location.LocationManager#requestSingleUpdate(android.location.Criteria, android.location.LocationListener, android.os.Looper):
-    SAM-compatible parameters (such as parameter 2, "listener", in android.location.LocationManager.requestSingleUpdate) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions
-SamShouldBeLast: android.media.AudioFocusRequest.Builder#setOnAudioFocusChangeListener(android.media.AudioManager.OnAudioFocusChangeListener, android.os.Handler):
-    
-SamShouldBeLast: android.media.AudioManager#requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, int, int):
-    
-SamShouldBeLast: android.media.AudioRecord#addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler):
-    
-SamShouldBeLast: android.media.AudioRecord#registerAudioRecordingCallback(java.util.concurrent.Executor, android.media.AudioManager.AudioRecordingCallback):
-    
-SamShouldBeLast: android.media.AudioRecordingMonitor#registerAudioRecordingCallback(java.util.concurrent.Executor, android.media.AudioManager.AudioRecordingCallback):
-    
-SamShouldBeLast: android.media.AudioRouting#addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler):
-    
-SamShouldBeLast: android.media.MediaRecorder#addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler):
-    
-SamShouldBeLast: android.media.MediaRecorder#registerAudioRecordingCallback(java.util.concurrent.Executor, android.media.AudioManager.AudioRecordingCallback):
-    
-SamShouldBeLast: android.media.session.MediaSessionManager#addOnActiveSessionsChangedListener(android.media.session.MediaSessionManager.OnActiveSessionsChangedListener, android.content.ComponentName):
-    
-SamShouldBeLast: android.media.session.MediaSessionManager#addOnActiveSessionsChangedListener(android.media.session.MediaSessionManager.OnActiveSessionsChangedListener, android.content.ComponentName, android.os.Handler):
-    
-SamShouldBeLast: android.media.session.MediaSessionManager#addOnSession2TokensChangedListener(android.media.session.MediaSessionManager.OnSession2TokensChangedListener, android.os.Handler):
-    
-SamShouldBeLast: android.media.session.MediaSessionManager#registerCallback(java.util.concurrent.Executor, android.media.session.MediaSessionManager.Callback):
-    
-SamShouldBeLast: android.net.ConnectivityManager#createSocketKeepalive(android.net.Network, android.net.IpSecManager.UdpEncapsulationSocket, java.net.InetAddress, java.net.InetAddress, java.util.concurrent.Executor, android.net.SocketKeepalive.Callback):
-    
-SamShouldBeLast: android.net.wifi.WifiManager#startLocalOnlyHotspot(android.net.wifi.SoftApConfiguration, java.util.concurrent.Executor, android.net.wifi.WifiManager.LocalOnlyHotspotCallback):
-    
-SamShouldBeLast: android.net.wifi.rtt.WifiRttManager#startRanging(android.net.wifi.rtt.RangingRequest, java.util.concurrent.Executor, android.net.wifi.rtt.RangingResultCallback):
-    
-SamShouldBeLast: android.nfc.NfcAdapter#enableReaderMode(android.app.Activity, android.nfc.NfcAdapter.ReaderCallback, int, android.os.Bundle):
-    
-SamShouldBeLast: android.nfc.NfcAdapter#ignore(android.nfc.Tag, int, android.nfc.NfcAdapter.OnTagRemovedListener, android.os.Handler):
-    
-SamShouldBeLast: android.nfc.NfcAdapter#setBeamPushUrisCallback(android.nfc.NfcAdapter.CreateBeamUrisCallback, android.app.Activity):
-    
-SamShouldBeLast: android.nfc.NfcAdapter#setNdefPushMessageCallback(android.nfc.NfcAdapter.CreateNdefMessageCallback, android.app.Activity, android.app.Activity...):
-    
-SamShouldBeLast: android.nfc.NfcAdapter#setOnNdefPushCompleteCallback(android.nfc.NfcAdapter.OnNdefPushCompleteCallback, android.app.Activity, android.app.Activity...):
-    
-SamShouldBeLast: android.os.Binder#attachInterface(android.os.IInterface, String):
-    
-SamShouldBeLast: android.os.Binder#linkToDeath(android.os.IBinder.DeathRecipient, int):
-    
-SamShouldBeLast: android.os.Binder#unlinkToDeath(android.os.IBinder.DeathRecipient, int):
-    
-SamShouldBeLast: android.os.Handler#dump(android.util.Printer, String):
-    
-SamShouldBeLast: android.os.Handler#postAtTime(Runnable, Object, long):
-    
-SamShouldBeLast: android.os.Handler#postAtTime(Runnable, long):
-    
-SamShouldBeLast: android.os.Handler#postDelayed(Runnable, Object, long):
-    
-SamShouldBeLast: android.os.Handler#postDelayed(Runnable, long):
-    
-SamShouldBeLast: android.os.Handler#removeCallbacks(Runnable, Object):
-    
-SamShouldBeLast: android.os.IBinder#linkToDeath(android.os.IBinder.DeathRecipient, int):
-    
-SamShouldBeLast: android.os.IBinder#unlinkToDeath(android.os.IBinder.DeathRecipient, int):
-    
-SamShouldBeLast: android.os.RecoverySystem#verifyPackage(java.io.File, android.os.RecoverySystem.ProgressListener, java.io.File):
-    
-SamShouldBeLast: android.telephony.MbmsDownloadSession#addProgressListener(android.telephony.mbms.DownloadRequest, java.util.concurrent.Executor, android.telephony.mbms.DownloadProgressListener):
-    
-SamShouldBeLast: android.telephony.MbmsDownloadSession#addStatusListener(android.telephony.mbms.DownloadRequest, java.util.concurrent.Executor, android.telephony.mbms.DownloadStatusListener):
-    
-SamShouldBeLast: android.telephony.MbmsDownloadSession#create(android.content.Context, java.util.concurrent.Executor, android.telephony.mbms.MbmsDownloadSessionCallback):
-    
-SamShouldBeLast: android.telephony.MbmsDownloadSession#create(android.content.Context, java.util.concurrent.Executor, int, android.telephony.mbms.MbmsDownloadSessionCallback):
-    
-SamShouldBeLast: android.telephony.MbmsGroupCallSession#create(android.content.Context, int, java.util.concurrent.Executor, android.telephony.mbms.MbmsGroupCallSessionCallback):
-    
-SamShouldBeLast: android.telephony.MbmsGroupCallSession#create(android.content.Context, java.util.concurrent.Executor, android.telephony.mbms.MbmsGroupCallSessionCallback):
-    
-SamShouldBeLast: android.telephony.MbmsGroupCallSession#startGroupCall(long, java.util.List<java.lang.Integer>, java.util.List<java.lang.Integer>, java.util.concurrent.Executor, android.telephony.mbms.GroupCallCallback):
-    
-SamShouldBeLast: android.telephony.MbmsStreamingSession#create(android.content.Context, java.util.concurrent.Executor, android.telephony.mbms.MbmsStreamingSessionCallback):
-    
-SamShouldBeLast: android.telephony.MbmsStreamingSession#create(android.content.Context, java.util.concurrent.Executor, int, android.telephony.mbms.MbmsStreamingSessionCallback):
-    
-SamShouldBeLast: android.telephony.MbmsStreamingSession#startStreaming(android.telephony.mbms.StreamingServiceInfo, java.util.concurrent.Executor, android.telephony.mbms.StreamingServiceCallback):
-    
-SamShouldBeLast: android.telephony.SmsManager#getSmsMessagesForFinancialApp(android.os.Bundle, java.util.concurrent.Executor, android.telephony.SmsManager.FinancialSmsCallback):
-    
-SamShouldBeLast: android.telephony.SubscriptionManager#addOnOpportunisticSubscriptionsChangedListener(java.util.concurrent.Executor, android.telephony.SubscriptionManager.OnOpportunisticSubscriptionsChangedListener):
-    
-SamShouldBeLast: android.telephony.TelephonyManager#requestCellInfoUpdate(java.util.concurrent.Executor, android.telephony.TelephonyManager.CellInfoCallback):
-    
-SamShouldBeLast: android.telephony.TelephonyManager#requestNetworkScan(android.telephony.NetworkScanRequest, java.util.concurrent.Executor, android.telephony.TelephonyScanManager.NetworkScanCallback):
-    
-SamShouldBeLast: android.telephony.TelephonyManager#setPreferredOpportunisticDataSubscription(int, boolean, java.util.concurrent.Executor, java.util.function.Consumer<java.lang.Integer>):
-    
-SamShouldBeLast: android.telephony.TelephonyManager#updateAvailableNetworks(java.util.List<android.telephony.AvailableNetworkInfo>, java.util.concurrent.Executor, java.util.function.Consumer<java.lang.Integer>):
-    
-SamShouldBeLast: android.view.View#postDelayed(Runnable, long):
-    
-SamShouldBeLast: android.view.View#postOnAnimationDelayed(Runnable, long):
-    
-SamShouldBeLast: android.view.View#scheduleDrawable(android.graphics.drawable.Drawable, Runnable, long):
-    
-SamShouldBeLast: android.view.Window#addOnFrameMetricsAvailableListener(android.view.Window.OnFrameMetricsAvailableListener, android.os.Handler):
-    
-SamShouldBeLast: android.view.accessibility.AccessibilityManager#addAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener, android.os.Handler):
-    
-SamShouldBeLast: android.view.accessibility.AccessibilityManager#addTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener, android.os.Handler):
-    
-SamShouldBeLast: android.webkit.WebChromeClient#onShowFileChooser(android.webkit.WebView, android.webkit.ValueCallback<android.net.Uri[]>, android.webkit.WebChromeClient.FileChooserParams):
-    
-SamShouldBeLast: android.webkit.WebView#setWebViewRenderProcessClient(java.util.concurrent.Executor, android.webkit.WebViewRenderProcessClient):
-    
-
-
-ServiceName: android.Manifest.permission#BIND_ATTENTION_SERVICE:
-    
-ServiceName: android.Manifest.permission#BIND_AUGMENTED_AUTOFILL_SERVICE:
-    
-ServiceName: android.Manifest.permission#BIND_CELL_BROADCAST_SERVICE:
-    
-ServiceName: android.Manifest.permission#BIND_CONTENT_CAPTURE_SERVICE:
-    
-ServiceName: android.Manifest.permission#BIND_CONTENT_SUGGESTIONS_SERVICE:
-    
-ServiceName: android.Manifest.permission#BIND_EUICC_SERVICE:
-    
-ServiceName: android.Manifest.permission#BIND_EXTERNAL_STORAGE_SERVICE:
-    
-ServiceName: android.Manifest.permission#BIND_IMS_SERVICE:
-    
-ServiceName: android.Manifest.permission#BIND_NETWORK_RECOMMENDATION_SERVICE:
-    
-ServiceName: android.Manifest.permission#BIND_NOTIFICATION_ASSISTANT_SERVICE:
-    
-ServiceName: android.Manifest.permission#BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE:
-    
-ServiceName: android.Manifest.permission#BIND_PRINT_RECOMMENDATION_SERVICE:
-    
-ServiceName: android.Manifest.permission#BIND_RESOLVER_RANKER_SERVICE:
-    
-ServiceName: android.Manifest.permission#BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE:
-    
-ServiceName: android.Manifest.permission#BIND_SETTINGS_SUGGESTIONS_SERVICE:
-    
-ServiceName: android.Manifest.permission#BIND_SOUND_TRIGGER_DETECTION_SERVICE:
-    
-ServiceName: android.Manifest.permission#BIND_TELEPHONY_DATA_SERVICE:
-    
-ServiceName: android.Manifest.permission#BIND_TELEPHONY_NETWORK_SERVICE:
-    
-ServiceName: android.Manifest.permission#BIND_TEXTCLASSIFIER_SERVICE:
-    
-ServiceName: android.Manifest.permission#BIND_TV_REMOTE_SERVICE:
-    
-ServiceName: android.Manifest.permission#PROVIDE_RESOLVER_RANKER_SERVICE:
-    
-ServiceName: android.Manifest.permission#REQUEST_NOTIFICATION_ASSISTANT_SERVICE:
-    
-ServiceName: android.provider.DeviceConfig#NAMESPACE_PACKAGE_MANAGER_SERVICE:
-    
-
-
-UserHandle: android.companion.CompanionDeviceManager#isDeviceAssociated(String, android.net.MacAddress, android.os.UserHandle):
-    When a method overload is needed to target a specific UserHandle, callers should be directed to use Context.createPackageContextAsUser() and re-obtain the relevant Manager, and no new API should be added
-
-
-UserHandleName: android.telephony.CellBroadcastIntents#sendOrderedBroadcastForBackgroundReceivers(android.content.Context, android.os.UserHandle, android.content.Intent, String, String, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle):
-    Method taking UserHandle should be named `doFooAsUser` or `queryFooForUser`, was `sendOrderedBroadcastForBackgroundReceivers`
diff --git a/api/system-removed.txt b/api/system-removed.txt
deleted file mode 100644
index 09544c1..0000000
--- a/api/system-removed.txt
+++ /dev/null
@@ -1,203 +0,0 @@
-// Signature format: 2.0
-package android {
-
-  public static final class Manifest.permission {
-    field public static final String MANAGE_DEVICE_ADMINS = "android.permission.MANAGE_DEVICE_ADMINS";
-  }
-
-}
-
-package android.app {
-
-  public class AppOpsManager {
-    method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public java.util.List<android.app.AppOpsManager.PackageOps> getOpsForPackage(int, @NonNull String, @Nullable int[]);
-    method @Deprecated public void setNotedAppOpsCollector(@Nullable android.app.AppOpsManager.AppOpsCollector);
-  }
-
-  @Deprecated public abstract static class AppOpsManager.AppOpsCollector extends android.app.AppOpsManager.OnOpNotedCallback {
-    ctor public AppOpsManager.AppOpsCollector();
-    method @NonNull public java.util.concurrent.Executor getAsyncNotedExecutor();
-  }
-
-  public class Notification implements android.os.Parcelable {
-    method public static Class<? extends android.app.Notification.Style> getNotificationStyleClass(String);
-  }
-
-  public static final class Notification.TvExtender implements android.app.Notification.Extender {
-    method @Deprecated public String getChannel();
-  }
-
-}
-
-package android.app.backup {
-
-  public class RestoreSession {
-    method @Deprecated public int restoreSome(long, android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor, String[]);
-    method @Deprecated public int restoreSome(long, android.app.backup.RestoreObserver, String[]);
-  }
-
-}
-
-package android.app.prediction {
-
-  public static final class AppTarget.Builder {
-    ctor @Deprecated public AppTarget.Builder(@NonNull android.app.prediction.AppTargetId);
-    method @Deprecated @NonNull public android.app.prediction.AppTarget.Builder setTarget(@NonNull String, @NonNull android.os.UserHandle);
-    method @Deprecated @NonNull public android.app.prediction.AppTarget.Builder setTarget(@NonNull android.content.pm.ShortcutInfo);
-  }
-
-}
-
-package android.content {
-
-  public class Intent implements java.lang.Cloneable android.os.Parcelable {
-    field @Deprecated public static final String ACTION_DEVICE_INITIALIZATION_WIZARD = "android.intent.action.DEVICE_INITIALIZATION_WIZARD";
-    field @Deprecated public static final String ACTION_MASTER_CLEAR = "android.intent.action.MASTER_CLEAR";
-    field @Deprecated public static final String ACTION_SERVICE_STATE = "android.intent.action.SERVICE_STATE";
-    field @Deprecated public static final String EXTRA_CDMA_DEFAULT_ROAMING_INDICATOR = "cdmaDefaultRoamingIndicator";
-    field @Deprecated public static final String EXTRA_CDMA_ROAMING_INDICATOR = "cdmaRoamingIndicator";
-    field @Deprecated public static final String EXTRA_CSS_INDICATOR = "cssIndicator";
-    field @Deprecated public static final String EXTRA_DATA_OPERATOR_ALPHA_LONG = "data-operator-alpha-long";
-    field @Deprecated public static final String EXTRA_DATA_OPERATOR_ALPHA_SHORT = "data-operator-alpha-short";
-    field @Deprecated public static final String EXTRA_DATA_OPERATOR_NUMERIC = "data-operator-numeric";
-    field @Deprecated public static final String EXTRA_DATA_RADIO_TECH = "dataRadioTechnology";
-    field @Deprecated public static final String EXTRA_DATA_REG_STATE = "dataRegState";
-    field @Deprecated public static final String EXTRA_DATA_ROAMING_TYPE = "dataRoamingType";
-    field @Deprecated public static final String EXTRA_EMERGENCY_ONLY = "emergencyOnly";
-    field @Deprecated public static final String EXTRA_IS_DATA_ROAMING_FROM_REGISTRATION = "isDataRoamingFromRegistration";
-    field @Deprecated public static final String EXTRA_IS_USING_CARRIER_AGGREGATION = "isUsingCarrierAggregation";
-    field @Deprecated public static final String EXTRA_LTE_EARFCN_RSRP_BOOST = "LteEarfcnRsrpBoost";
-    field @Deprecated public static final String EXTRA_MANUAL = "manual";
-    field @Deprecated public static final String EXTRA_NETWORK_ID = "networkId";
-    field @Deprecated public static final String EXTRA_OPERATOR_ALPHA_LONG = "operator-alpha-long";
-    field @Deprecated public static final String EXTRA_OPERATOR_ALPHA_SHORT = "operator-alpha-short";
-    field @Deprecated public static final String EXTRA_OPERATOR_NUMERIC = "operator-numeric";
-    field @Deprecated public static final String EXTRA_SYSTEM_ID = "systemId";
-    field @Deprecated public static final String EXTRA_VOICE_RADIO_TECH = "radioTechnology";
-    field @Deprecated public static final String EXTRA_VOICE_REG_STATE = "voiceRegState";
-    field @Deprecated public static final String EXTRA_VOICE_ROAMING_TYPE = "voiceRoamingType";
-  }
-
-}
-
-package android.content.pm {
-
-  public class PackageItemInfo {
-    field @Deprecated public static final int SAFE_LABEL_FLAG_FIRST_LINE = 4; // 0x4
-    field @Deprecated public static final int SAFE_LABEL_FLAG_SINGLE_LINE = 2; // 0x2
-    field @Deprecated public static final int SAFE_LABEL_FLAG_TRIM = 1; // 0x1
-  }
-
-}
-
-package android.hardware.hdmi {
-
-  public final class HdmiControlManager {
-    method @Deprecated public java.util.List<android.hardware.hdmi.HdmiDeviceInfo> getConnectedDevicesList();
-    method @Deprecated public boolean isRemoteDeviceConnected(@NonNull android.hardware.hdmi.HdmiDeviceInfo);
-    method @Deprecated public void powerOffRemoteDevice(@NonNull android.hardware.hdmi.HdmiDeviceInfo);
-    method @Deprecated public void powerOnRemoteDevice(android.hardware.hdmi.HdmiDeviceInfo);
-    method @Deprecated public void requestRemoteDeviceToBecomeActiveSource(@NonNull android.hardware.hdmi.HdmiDeviceInfo);
-  }
-
-}
-
-package android.location {
-
-  public class LocationManager {
-    method @Deprecated public boolean addGpsMeasurementListener(android.location.GpsMeasurementsEvent.Listener);
-    method @Deprecated public boolean addGpsNavigationMessageListener(android.location.GpsNavigationMessageEvent.Listener);
-    method @Deprecated public void removeGpsMeasurementListener(android.location.GpsMeasurementsEvent.Listener);
-    method @Deprecated public void removeGpsNavigationMessageListener(android.location.GpsNavigationMessageEvent.Listener);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void setLocationControllerExtraPackage(String);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void setLocationControllerExtraPackageEnabled(boolean);
-  }
-
-}
-
-package android.media.tv {
-
-  public final class TvInputManager {
-    method @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public android.media.tv.TvInputManager.Hardware acquireTvInputHardware(int, android.media.tv.TvInputManager.HardwareCallback, android.media.tv.TvInputInfo);
-  }
-
-  public static final class TvInputManager.Hardware {
-    method public boolean dispatchKeyEventToHdmi(android.view.KeyEvent);
-  }
-
-}
-
-package android.net.wifi {
-
-  @Deprecated public class BatchedScanResult implements android.os.Parcelable {
-    ctor public BatchedScanResult();
-    ctor public BatchedScanResult(android.net.wifi.BatchedScanResult);
-    field public final java.util.List<android.net.wifi.ScanResult> scanResults;
-    field public boolean truncated;
-  }
-
-  public final class ScanResult implements android.os.Parcelable {
-    field public boolean untrusted;
-  }
-
-}
-
-package android.os {
-
-  public class Build {
-    field public static final boolean PERMISSIONS_REVIEW_REQUIRED = true;
-  }
-
-}
-
-package android.service.notification {
-
-  public abstract class NotificationListenerService extends android.app.Service {
-    method public android.service.notification.StatusBarNotification[] getActiveNotifications(int);
-    method public android.service.notification.StatusBarNotification[] getActiveNotifications(String[], int);
-    method public void registerAsSystemService(android.content.Context, android.content.ComponentName, int) throws android.os.RemoteException;
-    method public final void setOnNotificationPostedTrim(int);
-    method public final void snoozeNotification(String, String);
-    method public void unregisterAsSystemService() throws android.os.RemoteException;
-    field public static final int TRIM_FULL = 0; // 0x0
-    field public static final int TRIM_LIGHT = 1; // 0x1
-  }
-
-  public static class NotificationListenerService.Ranking {
-    method public java.util.List<java.lang.String> getAdditionalPeople();
-    method public java.util.List<android.service.notification.SnoozeCriterion> getSnoozeCriteria();
-  }
-
-}
-
-package android.telecom {
-
-  public class TelecomManager {
-    method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.WRITE_SECURE_SETTINGS}) public boolean setDefaultDialer(@Nullable String);
-  }
-
-}
-
-package android.telephony {
-
-  public final class PreciseDataConnectionState implements android.os.Parcelable {
-    method @Deprecated @Nullable public android.net.LinkProperties getDataConnectionLinkProperties();
-    method @Deprecated public int getDataConnectionNetworkType();
-  }
-
-  public class TelephonyManager {
-    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void answerRingingCall();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.CALL_PHONE) public boolean endCall();
-    method @Deprecated public void silenceRinger();
-  }
-
-}
-
-package android.telephony.data {
-
-  public final class DataCallResponse implements android.os.Parcelable {
-    ctor public DataCallResponse(int, int, int, int, int, @Nullable String, @Nullable java.util.List<android.net.LinkAddress>, @Nullable java.util.List<java.net.InetAddress>, @Nullable java.util.List<java.net.InetAddress>, @Nullable java.util.List<java.net.InetAddress>, int);
-  }
-
-}
-
diff --git a/api/test-current.txt b/api/test-current.txt
deleted file mode 100644
index 415ed03..0000000
--- a/api/test-current.txt
+++ /dev/null
@@ -1,5611 +0,0 @@
-// Signature format: 2.0
-package android {
-
-  public static final class Manifest.permission {
-    field public static final String ACCESS_NOTIFICATIONS = "android.permission.ACCESS_NOTIFICATIONS";
-    field public static final String ACTIVITY_EMBEDDING = "android.permission.ACTIVITY_EMBEDDING";
-    field public static final String APPROVE_INCIDENT_REPORTS = "android.permission.APPROVE_INCIDENT_REPORTS";
-    field public static final String BIND_CELL_BROADCAST_SERVICE = "android.permission.BIND_CELL_BROADCAST_SERVICE";
-    field public static final String BRIGHTNESS_SLIDER_USAGE = "android.permission.BRIGHTNESS_SLIDER_USAGE";
-    field public static final String CHANGE_APP_IDLE_STATE = "android.permission.CHANGE_APP_IDLE_STATE";
-    field public static final String CLEAR_APP_USER_DATA = "android.permission.CLEAR_APP_USER_DATA";
-    field public static final String CONFIGURE_DISPLAY_BRIGHTNESS = "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS";
-    field public static final String CONTROL_DEVICE_LIGHTS = "android.permission.CONTROL_DEVICE_LIGHTS";
-    field public static final String FORCE_STOP_PACKAGES = "android.permission.FORCE_STOP_PACKAGES";
-    field public static final String MANAGE_ACTIVITY_STACKS = "android.permission.MANAGE_ACTIVITY_STACKS";
-    field public static final String MANAGE_CRATES = "android.permission.MANAGE_CRATES";
-    field public static final String MANAGE_ROLLBACKS = "android.permission.MANAGE_ROLLBACKS";
-    field public static final String NETWORK_SETTINGS = "android.permission.NETWORK_SETTINGS";
-    field public static final String NETWORK_STACK = "android.permission.NETWORK_STACK";
-    field public static final String OVERRIDE_DISPLAY_MODE_REQUESTS = "android.permission.OVERRIDE_DISPLAY_MODE_REQUESTS";
-    field public static final String READ_CELL_BROADCASTS = "android.permission.READ_CELL_BROADCASTS";
-    field public static final String REMOVE_TASKS = "android.permission.REMOVE_TASKS";
-    field public static final String SUSPEND_APPS = "android.permission.SUSPEND_APPS";
-    field public static final String TEST_MANAGE_ROLLBACKS = "android.permission.TEST_MANAGE_ROLLBACKS";
-    field public static final String UPGRADE_RUNTIME_PERMISSIONS = "android.permission.UPGRADE_RUNTIME_PERMISSIONS";
-    field public static final String WRITE_DEVICE_CONFIG = "android.permission.WRITE_DEVICE_CONFIG";
-    field @Deprecated public static final String WRITE_MEDIA_STORAGE = "android.permission.WRITE_MEDIA_STORAGE";
-    field public static final String WRITE_OBB = "android.permission.WRITE_OBB";
-  }
-
-  public static final class Manifest.permission_group {
-    field public static final String UNDEFINED = "android.permission-group.UNDEFINED";
-  }
-
-  public static final class R.bool {
-    field public static final int config_assistantOnTopOfDream = 17891333; // 0x1110005
-    field public static final int config_perDisplayFocusEnabled = 17891332; // 0x1110004
-  }
-
-  public static final class R.string {
-    field public static final int config_defaultAssistant = 17039393; // 0x1040021
-    field public static final int config_defaultDialer = 17039395; // 0x1040023
-    field public static final int config_systemGallery = 17039399; // 0x1040027
-  }
-
-}
-
-package android.accessibilityservice {
-
-  public final class AccessibilityGestureEvent implements android.os.Parcelable {
-    ctor public AccessibilityGestureEvent(int, int);
-  }
-
-  public abstract class AccessibilityService extends android.app.Service {
-    field public static final int ACCESSIBILITY_TAKE_SCREENSHOT_REQUEST_INTERVAL_TIMES_MS = 1000; // 0x3e8
-  }
-
-}
-
-package android.animation {
-
-  public class ValueAnimator extends android.animation.Animator {
-    method public static float getDurationScale();
-    method public static void setDurationScale(float);
-  }
-
-}
-
-package android.app {
-
-  public class Activity extends android.view.ContextThemeWrapper implements android.content.ComponentCallbacks2 android.view.KeyEvent.Callback android.view.LayoutInflater.Factory2 android.view.View.OnCreateContextMenuListener android.view.Window.Callback {
-    method public void onMovedToDisplay(int, android.content.res.Configuration);
-  }
-
-  public class ActivityManager {
-    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public void addOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener, int);
-    method public void alwaysShowUnsupportedCompileSdkWarning(android.content.ComponentName);
-    method @RequiresPermission(android.Manifest.permission.FORCE_STOP_PACKAGES) public void forceStopPackage(String);
-    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int getPackageImportance(String);
-    method public long getTotalRam();
-    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int getUidImportance(int);
-    method public static boolean isHighEndGfx();
-    method @RequiresPermission(android.Manifest.permission.FORCE_STOP_PACKAGES) public void killProcessesWhenImperceptible(@NonNull int[], @NonNull String);
-    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public void removeOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener);
-    method public static void resumeAppSwitches() throws android.os.RemoteException;
-    method @RequiresPermission(android.Manifest.permission.CHANGE_CONFIGURATION) public void scheduleApplicationInfoChanged(java.util.List<java.lang.String>, int);
-    method @RequiresPermission("android.permission.MANAGE_USERS") public boolean switchUser(@NonNull android.os.UserHandle);
-    field public static final int PROCESS_CAPABILITY_ALL = 7; // 0x7
-    field public static final int PROCESS_CAPABILITY_ALL_EXPLICIT = 1; // 0x1
-    field public static final int PROCESS_CAPABILITY_ALL_IMPLICIT = 6; // 0x6
-    field public static final int PROCESS_CAPABILITY_FOREGROUND_CAMERA = 2; // 0x2
-    field public static final int PROCESS_CAPABILITY_FOREGROUND_LOCATION = 1; // 0x1
-    field public static final int PROCESS_CAPABILITY_FOREGROUND_MICROPHONE = 4; // 0x4
-    field public static final int PROCESS_CAPABILITY_NONE = 0; // 0x0
-  }
-
-  public static interface ActivityManager.OnUidImportanceListener {
-    method public void onUidImportance(int, int);
-  }
-
-  public static class ActivityManager.RunningAppProcessInfo implements android.os.Parcelable {
-    field public static final int IMPORTANCE_CANT_SAVE_STATE_PRE_26 = 170; // 0xaa
-  }
-
-  public static class ActivityManager.TaskDescription implements android.os.Parcelable {
-    method public String getIconFilename();
-    method public int getIconResource();
-    method @Nullable public String getIconResourcePackage();
-  }
-
-  public class ActivityOptions {
-    method @NonNull public static android.app.ActivityOptions makeCustomAnimation(@NonNull android.content.Context, int, int, @Nullable android.os.Handler, @Nullable android.app.ActivityOptions.OnAnimationStartedListener, @Nullable android.app.ActivityOptions.OnAnimationFinishedListener);
-    method public static void setExitTransitionTimeout(long);
-    method public void setLaunchActivityType(int);
-    method public void setLaunchTaskId(int);
-    method public void setLaunchWindowingMode(int);
-    method public void setTaskAlwaysOnTop(boolean);
-    method public void setTaskOverlay(boolean, boolean);
-  }
-
-  public static interface ActivityOptions.OnAnimationFinishedListener {
-    method public void onAnimationFinished();
-  }
-
-  public static interface ActivityOptions.OnAnimationStartedListener {
-    method public void onAnimationStarted();
-  }
-
-  public class ActivityTaskManager {
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void clearLaunchParamsForPackages(java.util.List<java.lang.String>);
-    method public static boolean currentUiModeSupportsErrorDialogs(@NonNull android.content.Context);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public String listAllStacks();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void moveTaskToStack(int, int, boolean);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public boolean moveTopActivityToPinnedStack(int, android.graphics.Rect);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void removeStacksInWindowingModes(int[]) throws java.lang.SecurityException;
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void removeStacksWithActivityTypes(int[]) throws java.lang.SecurityException;
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void requestPictureInPictureMode(@NonNull android.os.IBinder);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void resizeDockedStack(android.graphics.Rect, android.graphics.Rect);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void resizeTask(int, android.graphics.Rect);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void setDisplayToSingleTaskInstance(int);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public boolean setTaskWindowingMode(int, int, boolean) throws java.lang.SecurityException;
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public boolean setTaskWindowingModeSplitScreenPrimary(int, int, boolean, boolean, android.graphics.Rect, boolean) throws java.lang.SecurityException;
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void startSystemLockTaskMode(int);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void stopSystemLockTaskMode();
-    method public static boolean supportsMultiWindow(android.content.Context);
-    method public static boolean supportsSplitScreenMultiWindow(android.content.Context);
-    field public static final int INVALID_STACK_ID = -1; // 0xffffffff
-    field public static final int SPLIT_SCREEN_CREATE_MODE_BOTTOM_OR_RIGHT = 1; // 0x1
-    field public static final int SPLIT_SCREEN_CREATE_MODE_TOP_OR_LEFT = 0; // 0x0
-  }
-
-  public class ActivityView extends android.view.ViewGroup {
-    ctor public ActivityView(android.content.Context);
-    ctor public ActivityView(android.content.Context, android.util.AttributeSet);
-    ctor public ActivityView(android.content.Context, android.util.AttributeSet, int);
-    ctor public ActivityView(android.content.Context, android.util.AttributeSet, int, boolean);
-    ctor public ActivityView(@NonNull android.content.Context, @NonNull android.util.AttributeSet, int, boolean, boolean);
-    method public int getVirtualDisplayId();
-    method public void onLayout(boolean, int, int, int, int);
-    method public void onLocationChanged();
-    method public void performBackPress();
-    method public void release();
-    method public void setCallback(android.app.ActivityView.StateCallback);
-    method public void setForwardedInsets(android.graphics.Insets);
-    method public void startActivity(@NonNull android.content.Intent);
-    method public void startActivity(@NonNull android.content.Intent, android.os.UserHandle);
-    method public void startActivity(@NonNull android.app.PendingIntent);
-    method public void startActivity(@NonNull android.app.PendingIntent, @Nullable android.content.Intent, @NonNull android.app.ActivityOptions);
-  }
-
-  public abstract static class ActivityView.StateCallback {
-    ctor public ActivityView.StateCallback();
-    method public abstract void onActivityViewDestroyed(android.app.ActivityView);
-    method public abstract void onActivityViewReady(android.app.ActivityView);
-    method public void onTaskCreated(int, android.content.ComponentName);
-    method public void onTaskMovedToFront(int);
-    method public void onTaskRemovalStarted(int);
-  }
-
-  public class AppDetailsActivity extends android.app.Activity {
-    ctor public AppDetailsActivity();
-  }
-
-  public class AppOpsManager {
-    method @RequiresPermission("android.permission.MANAGE_APPOPS") public void addHistoricalOps(@NonNull android.app.AppOpsManager.HistoricalOps);
-    method @RequiresPermission("android.permission.MANAGE_APPOPS") public void clearHistory();
-    method @Nullable @RequiresPermission("android.permission.GET_APP_OPS_STATS") public android.app.RuntimeAppOpAccessMessage collectRuntimeAppOpAccessMessage();
-    method @RequiresPermission("android.permission.GET_APP_OPS_STATS") public void getHistoricalOps(@NonNull android.app.AppOpsManager.HistoricalOpsRequest, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.AppOpsManager.HistoricalOps>);
-    method @RequiresPermission("android.permission.MANAGE_APPOPS") public void getHistoricalOpsFromDiskRaw(@NonNull android.app.AppOpsManager.HistoricalOpsRequest, @Nullable java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.AppOpsManager.HistoricalOps>);
-    method public static int getNumOps();
-    method public static String[] getOpStrs();
-    method @NonNull @RequiresPermission("android.permission.GET_APP_OPS_STATS") public java.util.List<android.app.AppOpsManager.PackageOps> getOpsForPackage(int, @NonNull String, @Nullable java.lang.String...);
-    method public boolean isOperationActive(int, int, String);
-    method @RequiresPermission("android.permission.MANAGE_APPOPS") public void offsetHistory(long);
-    method public static int opToDefaultMode(@NonNull String);
-    method public static String opToPermission(int);
-    method public static int permissionToOpCode(String);
-    method @RequiresPermission("android.permission.MANAGE_APPOPS") public void rebootHistory(long);
-    method @RequiresPermission("android.permission.MANAGE_APPOPS") public void reloadNonHistoricalState();
-    method @RequiresPermission("android.permission.MANAGE_APPOPS") public void resetHistoryParameters();
-    method @RequiresPermission("android.permission.MANAGE_APPOPS") public void setHistoryParameters(int, long, int);
-    method @RequiresPermission("android.permission.MANAGE_APP_OPS_MODES") public void setMode(int, int, String, int);
-    method @RequiresPermission("android.permission.MANAGE_APP_OPS_MODES") public void setMode(@NonNull String, int, @Nullable String, int);
-    method @RequiresPermission("android.permission.MANAGE_APP_OPS_MODES") public void setUidMode(@NonNull String, int, int);
-    method public static int strOpToOp(@NonNull String);
-    field public static final int HISTORICAL_MODE_DISABLED = 0; // 0x0
-    field public static final int HISTORICAL_MODE_ENABLED_ACTIVE = 1; // 0x1
-    field public static final int HISTORICAL_MODE_ENABLED_PASSIVE = 2; // 0x2
-    field public static final String KEY_BG_STATE_SETTLE_TIME = "bg_state_settle_time";
-    field public static final String KEY_FG_SERVICE_STATE_SETTLE_TIME = "fg_service_state_settle_time";
-    field public static final String KEY_TOP_STATE_SETTLE_TIME = "top_state_settle_time";
-    field public static final String OPSTR_ACCEPT_HANDOVER = "android:accept_handover";
-    field public static final String OPSTR_ACCESS_NOTIFICATIONS = "android:access_notifications";
-    field public static final String OPSTR_ACTIVATE_VPN = "android:activate_vpn";
-    field public static final String OPSTR_ASSIST_SCREENSHOT = "android:assist_screenshot";
-    field public static final String OPSTR_ASSIST_STRUCTURE = "android:assist_structure";
-    field public static final String OPSTR_AUDIO_ACCESSIBILITY_VOLUME = "android:audio_accessibility_volume";
-    field public static final String OPSTR_AUDIO_ALARM_VOLUME = "android:audio_alarm_volume";
-    field public static final String OPSTR_AUDIO_BLUETOOTH_VOLUME = "android:audio_bluetooth_volume";
-    field public static final String OPSTR_AUDIO_MASTER_VOLUME = "android:audio_master_volume";
-    field public static final String OPSTR_AUDIO_MEDIA_VOLUME = "android:audio_media_volume";
-    field public static final String OPSTR_AUDIO_NOTIFICATION_VOLUME = "android:audio_notification_volume";
-    field public static final String OPSTR_AUDIO_RING_VOLUME = "android:audio_ring_volume";
-    field public static final String OPSTR_AUDIO_VOICE_VOLUME = "android:audio_voice_volume";
-    field public static final String OPSTR_BIND_ACCESSIBILITY_SERVICE = "android:bind_accessibility_service";
-    field public static final String OPSTR_CHANGE_WIFI_STATE = "android:change_wifi_state";
-    field public static final String OPSTR_GET_ACCOUNTS = "android:get_accounts";
-    field public static final String OPSTR_GPS = "android:gps";
-    field public static final String OPSTR_INSTANT_APP_START_FOREGROUND = "android:instant_app_start_foreground";
-    field public static final String OPSTR_LEGACY_STORAGE = "android:legacy_storage";
-    field public static final String OPSTR_MANAGE_EXTERNAL_STORAGE = "android:manage_external_storage";
-    field public static final String OPSTR_MANAGE_IPSEC_TUNNELS = "android:manage_ipsec_tunnels";
-    field public static final String OPSTR_MUTE_MICROPHONE = "android:mute_microphone";
-    field public static final String OPSTR_NEIGHBORING_CELLS = "android:neighboring_cells";
-    field public static final String OPSTR_PLAY_AUDIO = "android:play_audio";
-    field public static final String OPSTR_POST_NOTIFICATION = "android:post_notification";
-    field public static final String OPSTR_PROJECT_MEDIA = "android:project_media";
-    field public static final String OPSTR_READ_CLIPBOARD = "android:read_clipboard";
-    field public static final String OPSTR_READ_ICC_SMS = "android:read_icc_sms";
-    field public static final String OPSTR_READ_MEDIA_AUDIO = "android:read_media_audio";
-    field public static final String OPSTR_READ_MEDIA_IMAGES = "android:read_media_images";
-    field public static final String OPSTR_READ_MEDIA_VIDEO = "android:read_media_video";
-    field public static final String OPSTR_RECEIVE_EMERGENCY_BROADCAST = "android:receive_emergency_broadcast";
-    field public static final String OPSTR_REQUEST_DELETE_PACKAGES = "android:request_delete_packages";
-    field public static final String OPSTR_REQUEST_INSTALL_PACKAGES = "android:request_install_packages";
-    field public static final String OPSTR_RUN_ANY_IN_BACKGROUND = "android:run_any_in_background";
-    field public static final String OPSTR_RUN_IN_BACKGROUND = "android:run_in_background";
-    field public static final String OPSTR_START_FOREGROUND = "android:start_foreground";
-    field public static final String OPSTR_TAKE_AUDIO_FOCUS = "android:take_audio_focus";
-    field public static final String OPSTR_TAKE_MEDIA_BUTTONS = "android:take_media_buttons";
-    field public static final String OPSTR_TOAST_WINDOW = "android:toast_window";
-    field public static final String OPSTR_TURN_SCREEN_ON = "android:turn_screen_on";
-    field public static final String OPSTR_VIBRATE = "android:vibrate";
-    field public static final String OPSTR_WAKE_LOCK = "android:wake_lock";
-    field public static final String OPSTR_WIFI_SCAN = "android:wifi_scan";
-    field public static final String OPSTR_WRITE_CLIPBOARD = "android:write_clipboard";
-    field public static final String OPSTR_WRITE_ICC_SMS = "android:write_icc_sms";
-    field public static final String OPSTR_WRITE_MEDIA_AUDIO = "android:write_media_audio";
-    field public static final String OPSTR_WRITE_MEDIA_IMAGES = "android:write_media_images";
-    field public static final String OPSTR_WRITE_MEDIA_VIDEO = "android:write_media_video";
-    field public static final String OPSTR_WRITE_SMS = "android:write_sms";
-    field public static final String OPSTR_WRITE_WALLPAPER = "android:write_wallpaper";
-    field public static final int OP_COARSE_LOCATION = 0; // 0x0
-    field public static final int OP_FLAGS_ALL = 31; // 0x1f
-    field public static final int OP_FLAG_SELF = 1; // 0x1
-    field public static final int OP_FLAG_TRUSTED_PROXIED = 8; // 0x8
-    field public static final int OP_FLAG_TRUSTED_PROXY = 2; // 0x2
-    field public static final int OP_FLAG_UNTRUSTED_PROXIED = 16; // 0x10
-    field public static final int OP_FLAG_UNTRUSTED_PROXY = 4; // 0x4
-    field public static final int OP_RECORD_AUDIO = 27; // 0x1b
-    field public static final int OP_START_FOREGROUND = 76; // 0x4c
-    field public static final int OP_SYSTEM_ALERT_WINDOW = 24; // 0x18
-    field public static final int UID_STATE_BACKGROUND = 600; // 0x258
-    field public static final int UID_STATE_CACHED = 700; // 0x2bc
-    field public static final int UID_STATE_FOREGROUND = 500; // 0x1f4
-    field public static final int UID_STATE_FOREGROUND_SERVICE = 400; // 0x190
-    field @Deprecated public static final int UID_STATE_FOREGROUND_SERVICE_LOCATION = 300; // 0x12c
-    field public static final int UID_STATE_PERSISTENT = 100; // 0x64
-    field public static final int UID_STATE_TOP = 200; // 0xc8
-  }
-
-  public static final class AppOpsManager.AttributedHistoricalOps implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.app.AppOpsManager.HistoricalOp getOp(@NonNull String);
-    method @NonNull public android.app.AppOpsManager.HistoricalOp getOpAt(@IntRange(from=0) int);
-    method @IntRange(from=0) public int getOpCount();
-    method @Nullable public String getTag();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.AttributedHistoricalOps> CREATOR;
-  }
-
-  public static final class AppOpsManager.AttributedOpEntry implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getLastAccessBackgroundTime(int);
-    method public long getLastAccessForegroundTime(int);
-    method public long getLastAccessTime(int);
-    method public long getLastAccessTime(int, int, int);
-    method public long getLastBackgroundDuration(int);
-    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastBackgroundProxyInfo(int);
-    method public long getLastDuration(int);
-    method public long getLastDuration(int, int, int);
-    method public long getLastForegroundDuration(int);
-    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastForegroundProxyInfo(int);
-    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastProxyInfo(int);
-    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastProxyInfo(int, int, int);
-    method public long getLastRejectBackgroundTime(int);
-    method public long getLastRejectForegroundTime(int);
-    method public long getLastRejectTime(int);
-    method public long getLastRejectTime(int, int, int);
-    method public boolean isRunning();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.AttributedOpEntry> CREATOR;
-  }
-
-  public static final class AppOpsManager.HistoricalOp implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getAccessCount(int, int, int);
-    method public long getAccessDuration(int, int, int);
-    method public long getBackgroundAccessCount(int);
-    method public long getBackgroundAccessDuration(int);
-    method public long getBackgroundRejectCount(int);
-    method public long getForegroundAccessCount(int);
-    method public long getForegroundAccessDuration(int);
-    method public long getForegroundRejectCount(int);
-    method @NonNull public String getOpName();
-    method public long getRejectCount(int, int, int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.HistoricalOp> CREATOR;
-  }
-
-  public static final class AppOpsManager.HistoricalOps implements android.os.Parcelable {
-    ctor public AppOpsManager.HistoricalOps(long, long);
-    method public int describeContents();
-    method public long getBeginTimeMillis();
-    method public long getEndTimeMillis();
-    method @IntRange(from=0) public int getUidCount();
-    method @Nullable public android.app.AppOpsManager.HistoricalUidOps getUidOps(int);
-    method @NonNull public android.app.AppOpsManager.HistoricalUidOps getUidOpsAt(@IntRange(from=0) int);
-    method public void increaseAccessCount(int, int, @NonNull String, @Nullable String, int, int, long);
-    method public void increaseAccessDuration(int, int, @NonNull String, @Nullable String, int, int, long);
-    method public void increaseRejectCount(int, int, @NonNull String, @Nullable String, int, int, long);
-    method public void offsetBeginAndEndTime(long);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.HistoricalOps> CREATOR;
-  }
-
-  public static final class AppOpsManager.HistoricalOpsRequest {
-  }
-
-  public static final class AppOpsManager.HistoricalOpsRequest.Builder {
-    ctor public AppOpsManager.HistoricalOpsRequest.Builder(long, long);
-    method @NonNull public android.app.AppOpsManager.HistoricalOpsRequest build();
-    method @NonNull public android.app.AppOpsManager.HistoricalOpsRequest.Builder setAttributionTag(@Nullable String);
-    method @NonNull public android.app.AppOpsManager.HistoricalOpsRequest.Builder setFlags(int);
-    method @NonNull public android.app.AppOpsManager.HistoricalOpsRequest.Builder setOpNames(@Nullable java.util.List<java.lang.String>);
-    method @NonNull public android.app.AppOpsManager.HistoricalOpsRequest.Builder setPackageName(@Nullable String);
-    method @NonNull public android.app.AppOpsManager.HistoricalOpsRequest.Builder setUid(int);
-  }
-
-  public static final class AppOpsManager.HistoricalPackageOps implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.app.AppOpsManager.AttributedHistoricalOps getAttributedOps(@NonNull String);
-    method @NonNull public android.app.AppOpsManager.AttributedHistoricalOps getAttributedOpsAt(@IntRange(from=0) int);
-    method @IntRange(from=0) public int getAttributedOpsCount();
-    method @Nullable public android.app.AppOpsManager.HistoricalOp getOp(@NonNull String);
-    method @NonNull public android.app.AppOpsManager.HistoricalOp getOpAt(@IntRange(from=0) int);
-    method @IntRange(from=0) public int getOpCount();
-    method @NonNull public String getPackageName();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.HistoricalPackageOps> CREATOR;
-  }
-
-  public static final class AppOpsManager.HistoricalUidOps implements android.os.Parcelable {
-    method public int describeContents();
-    method @IntRange(from=0) public int getPackageCount();
-    method @Nullable public android.app.AppOpsManager.HistoricalPackageOps getPackageOps(@NonNull String);
-    method @NonNull public android.app.AppOpsManager.HistoricalPackageOps getPackageOpsAt(@IntRange(from=0) int);
-    method public int getUid();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.HistoricalUidOps> CREATOR;
-  }
-
-  public static final class AppOpsManager.OpEntry implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public java.util.Map<java.lang.String,android.app.AppOpsManager.AttributedOpEntry> getAttributedOpEntries();
-    method @Deprecated public long getDuration();
-    method public long getLastAccessBackgroundTime(int);
-    method public long getLastAccessForegroundTime(int);
-    method public long getLastAccessTime(int);
-    method public long getLastAccessTime(int, int, int);
-    method public long getLastBackgroundDuration(int);
-    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastBackgroundProxyInfo(int);
-    method public long getLastDuration(int);
-    method public long getLastDuration(int, int, int);
-    method public long getLastForegroundDuration(int);
-    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastForegroundProxyInfo(int);
-    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastProxyInfo(int);
-    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastProxyInfo(int, int, int);
-    method public long getLastRejectBackgroundTime(int);
-    method public long getLastRejectForegroundTime(int);
-    method public long getLastRejectTime(int);
-    method public long getLastRejectTime(int, int, int);
-    method public int getMode();
-    method @NonNull public String getOpStr();
-    method @Deprecated @Nullable public String getProxyPackageName();
-    method @Deprecated @Nullable public String getProxyPackageName(int, int);
-    method @Deprecated public int getProxyUid();
-    method @Deprecated public int getProxyUid(int, int);
-    method public boolean isRunning();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.OpEntry> CREATOR;
-  }
-
-  public static final class AppOpsManager.OpEventProxyInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getAttributionTag();
-    method @Nullable public String getPackageName();
-    method @IntRange(from=0) public int getUid();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.OpEventProxyInfo> CREATOR;
-  }
-
-  public static final class AppOpsManager.PackageOps implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public java.util.List<android.app.AppOpsManager.OpEntry> getOps();
-    method @NonNull public String getPackageName();
-    method public int getUid();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.PackageOps> CREATOR;
-  }
-
-  public class DownloadManager {
-    field public static final String COLUMN_MEDIASTORE_URI = "mediastore_uri";
-  }
-
-  public class DreamManager {
-    method @RequiresPermission("android.permission.READ_DREAM_STATE") public boolean isDreaming();
-    method @RequiresPermission("android.permission.WRITE_DREAM_STATE") public void setActiveDream(@NonNull android.content.ComponentName);
-    method @RequiresPermission("android.permission.WRITE_DREAM_STATE") public void startDream(@NonNull android.content.ComponentName);
-    method @RequiresPermission("android.permission.WRITE_DREAM_STATE") public void stopDream();
-  }
-
-  public final class NotificationChannel implements android.os.Parcelable {
-    method public int getOriginalImportance();
-    method public boolean isBlockable();
-    method public boolean isImportanceLockedByCriticalDeviceFunction();
-    method public boolean isImportanceLockedByOEM();
-    method public void lockFields(int);
-    method public void setBlockable(boolean);
-    method public void setDeleted(boolean);
-    method public void setFgServiceShown(boolean);
-    method public void setImportanceLockedByCriticalDeviceFunction(boolean);
-    method public void setImportanceLockedByOEM(boolean);
-    method public void setImportantConversation(boolean);
-    method public void setOriginalImportance(int);
-    field public static final int USER_LOCKED_SOUND = 32; // 0x20
-  }
-
-  public final class NotificationChannelGroup implements android.os.Parcelable {
-    method public int getUserLockedFields();
-    method public void lockFields(int);
-    method public void setBlocked(boolean);
-  }
-
-  public class NotificationManager {
-    method public void allowAssistantAdjustment(String);
-    method public void disallowAssistantAdjustment(String);
-    method @NonNull public java.util.List<java.lang.String> getAllowedAssistantAdjustments();
-    method @Nullable public android.content.ComponentName getAllowedNotificationAssistant();
-    method public android.content.ComponentName getEffectsSuppressor();
-    method public boolean isNotificationAssistantAccessGranted(@NonNull android.content.ComponentName);
-    method public boolean matchesCallFilter(android.os.Bundle);
-    method public void setNotificationAssistantAccessGranted(@Nullable android.content.ComponentName, boolean);
-  }
-
-  public final class PictureInPictureParams implements android.os.Parcelable {
-    method public java.util.List<android.app.RemoteAction> getActions();
-    method public float getAspectRatio();
-    method public android.graphics.Rect getSourceRectHint();
-  }
-
-  public final class RuntimeAppOpAccessMessage implements android.os.Parcelable {
-    ctor public RuntimeAppOpAccessMessage(@IntRange(from=0L) int, @IntRange(from=0L) int, @NonNull String, @Nullable String, @NonNull String, int);
-    method public int describeContents();
-    method @Nullable public String getAttributionTag();
-    method @NonNull public String getMessage();
-    method @NonNull public String getOp();
-    method @NonNull public String getPackageName();
-    method public int getSamplingStrategy();
-    method @IntRange(from=0L) public int getUid();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.RuntimeAppOpAccessMessage> CREATOR;
-  }
-
-  public class StatusBarManager {
-    method public void collapsePanels();
-    method public void expandNotificationsPanel();
-    method @NonNull @RequiresPermission(android.Manifest.permission.STATUS_BAR) public android.app.StatusBarManager.DisableInfo getDisableInfo();
-    method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void setDisabledForSetup(boolean);
-    method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void setDisabledForSimNetworkLock(boolean);
-  }
-
-  public static final class StatusBarManager.DisableInfo {
-    method public boolean areAllComponentsEnabled();
-    method public boolean isNavigateToHomeDisabled();
-    method public boolean isNotificationPeekingDisabled();
-    method public boolean isRecentsDisabled();
-    method public boolean isSearchDisabled();
-    method public boolean isStatusBarExpansionDisabled();
-  }
-
-  public class TaskInfo {
-    method @NonNull public android.content.res.Configuration getConfiguration();
-    method @NonNull public android.window.WindowContainerToken getToken();
-  }
-
-  public class TimePickerDialog extends android.app.AlertDialog implements android.content.DialogInterface.OnClickListener android.widget.TimePicker.OnTimeChangedListener {
-    method public android.widget.TimePicker getTimePicker();
-  }
-
-  public final class UiAutomation {
-    method public void destroy();
-    method public android.os.ParcelFileDescriptor[] executeShellCommandRw(String);
-    method @Deprecated public boolean grantRuntimePermission(String, String, android.os.UserHandle);
-    method @Deprecated public boolean revokeRuntimePermission(String, String, android.os.UserHandle);
-    method public void syncInputTransactions();
-  }
-
-  public class UiModeManager {
-    method @RequiresPermission("android.permission.ENTER_CAR_MODE_PRIORITIZED") public void enableCarMode(@IntRange(from=0) int, int);
-    method public boolean isNightModeLocked();
-    method public boolean isUiModeLocked();
-  }
-
-  public class WallpaperManager {
-    method @Nullable public android.graphics.Bitmap getBitmap();
-    method @RequiresPermission("android.permission.SET_WALLPAPER_COMPONENT") public boolean setWallpaperComponent(android.content.ComponentName);
-    method public boolean shouldEnableWideColorGamut();
-    method @RequiresPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) public boolean wallpaperSupportsWcg(int);
-  }
-
-  public class WindowConfiguration implements java.lang.Comparable<android.app.WindowConfiguration> android.os.Parcelable {
-    ctor public WindowConfiguration();
-    method public int compareTo(android.app.WindowConfiguration);
-    method public int describeContents();
-    method public int getActivityType();
-    method public android.graphics.Rect getAppBounds();
-    method public android.graphics.Rect getBounds();
-    method public int getRotation();
-    method public int getWindowingMode();
-    method public void setActivityType(int);
-    method public void setAppBounds(android.graphics.Rect);
-    method public void setBounds(android.graphics.Rect);
-    method public void setRotation(int);
-    method public void setTo(android.app.WindowConfiguration);
-    method public void setWindowingMode(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ACTIVITY_TYPE_ASSISTANT = 4; // 0x4
-    field public static final int ACTIVITY_TYPE_DREAM = 5; // 0x5
-    field public static final int ACTIVITY_TYPE_HOME = 2; // 0x2
-    field public static final int ACTIVITY_TYPE_RECENTS = 3; // 0x3
-    field public static final int ACTIVITY_TYPE_STANDARD = 1; // 0x1
-    field public static final int ACTIVITY_TYPE_UNDEFINED = 0; // 0x0
-    field public static final int ROTATION_UNDEFINED = -1; // 0xffffffff
-    field public static final int WINDOWING_MODE_FREEFORM = 5; // 0x5
-    field public static final int WINDOWING_MODE_FULLSCREEN = 1; // 0x1
-    field public static final int WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY = 4; // 0x4
-    field public static final int WINDOWING_MODE_MULTI_WINDOW = 6; // 0x6
-    field public static final int WINDOWING_MODE_PINNED = 2; // 0x2
-    field public static final int WINDOWING_MODE_SPLIT_SCREEN_PRIMARY = 3; // 0x3
-    field public static final int WINDOWING_MODE_SPLIT_SCREEN_SECONDARY = 4; // 0x4
-    field public static final int WINDOWING_MODE_UNDEFINED = 0; // 0x0
-  }
-
-}
-
-package android.app.admin {
-
-  public class DevicePolicyManager {
-    method @Nullable public CharSequence getDeviceOwnerOrganizationName();
-    method public long getLastBugReportRequestTime();
-    method public long getLastNetworkLogRetrievalTime();
-    method public long getLastSecurityLogRetrievalTime();
-    method public java.util.List<java.lang.String> getOwnerInstalledCaCerts(@NonNull android.os.UserHandle);
-    method public boolean isCurrentInputMethodSetByOwner();
-    method public boolean isDeviceManaged();
-    method public boolean isFactoryResetProtectionPolicySupported();
-    field public static final String ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_ALLOWED = "android.account.DEVICE_OR_PROFILE_OWNER_ALLOWED";
-    field public static final String ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_DISALLOWED = "android.account.DEVICE_OR_PROFILE_OWNER_DISALLOWED";
-    field public static final String ACTION_DATA_SHARING_RESTRICTION_APPLIED = "android.app.action.DATA_SHARING_RESTRICTION_APPLIED";
-    field public static final String EXTRA_RESTRICTION = "android.app.extra.RESTRICTION";
-  }
-
-  public static final class SecurityLog.SecurityEvent implements android.os.Parcelable {
-    ctor public SecurityLog.SecurityEvent(long, byte[]);
-  }
-
-}
-
-package android.app.assist {
-
-  public static class AssistStructure.ViewNode {
-    ctor public AssistStructure.ViewNode();
-  }
-
-}
-
-package android.app.backup {
-
-  public class BackupManager {
-    method @RequiresPermission("android.permission.BACKUP") public android.content.Intent getConfigurationIntent(String);
-    method @RequiresPermission("android.permission.BACKUP") public android.content.Intent getDataManagementIntent(String);
-    method @Nullable @RequiresPermission("android.permission.BACKUP") public CharSequence getDataManagementIntentLabel(@NonNull String);
-    method @Deprecated @Nullable @RequiresPermission("android.permission.BACKUP") public String getDataManagementLabel(@NonNull String);
-    method @RequiresPermission("android.permission.BACKUP") public String getDestinationString(String);
-  }
-
-}
-
-package android.app.blob {
-
-  public class BlobStoreManager {
-    method @Nullable public android.app.blob.LeaseInfo getLeaseInfo(@NonNull android.app.blob.BlobHandle) throws java.io.IOException;
-    method public void waitForIdle(long) throws java.lang.InterruptedException, java.util.concurrent.TimeoutException;
-  }
-
-  public final class LeaseInfo implements android.os.Parcelable {
-    ctor public LeaseInfo(@NonNull String, long, @IdRes int, @Nullable CharSequence);
-    method public int describeContents();
-    method @Nullable public CharSequence getDescription();
-    method @IdRes public int getDescriptionResId();
-    method public long getExpiryTimeMillis();
-    method @NonNull public String getPackageName();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.blob.LeaseInfo> CREATOR;
-  }
-
-}
-
-package android.app.prediction {
-
-  public final class AppPredictionContext implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.os.Bundle getExtras();
-    method @NonNull public String getPackageName();
-    method @IntRange(from=0) public int getPredictedTargetCount();
-    method @NonNull public String getUiSurface();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.prediction.AppPredictionContext> CREATOR;
-  }
-
-  public static final class AppPredictionContext.Builder {
-    ctor public AppPredictionContext.Builder(@NonNull android.content.Context);
-    method @NonNull public android.app.prediction.AppPredictionContext build();
-    method @NonNull public android.app.prediction.AppPredictionContext.Builder setExtras(@Nullable android.os.Bundle);
-    method @NonNull public android.app.prediction.AppPredictionContext.Builder setPredictedTargetCount(@IntRange(from=0) int);
-    method @NonNull public android.app.prediction.AppPredictionContext.Builder setUiSurface(@NonNull String);
-  }
-
-  public final class AppPredictionManager {
-    method @NonNull public android.app.prediction.AppPredictor createAppPredictionSession(@NonNull android.app.prediction.AppPredictionContext);
-  }
-
-  public final class AppPredictionSessionId implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.prediction.AppPredictionSessionId> CREATOR;
-  }
-
-  public final class AppPredictor {
-    method public void destroy();
-    method public android.app.prediction.AppPredictionSessionId getSessionId();
-    method public void notifyAppTargetEvent(@NonNull android.app.prediction.AppTargetEvent);
-    method public void notifyLaunchLocationShown(@NonNull String, @NonNull java.util.List<android.app.prediction.AppTargetId>);
-    method public void registerPredictionUpdates(@NonNull java.util.concurrent.Executor, @NonNull android.app.prediction.AppPredictor.Callback);
-    method public void requestPredictionUpdate();
-    method @Nullable public void sortTargets(@NonNull java.util.List<android.app.prediction.AppTarget>, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.util.List<android.app.prediction.AppTarget>>);
-    method public void unregisterPredictionUpdates(@NonNull android.app.prediction.AppPredictor.Callback);
-  }
-
-  public static interface AppPredictor.Callback {
-    method public void onTargetsAvailable(@NonNull java.util.List<android.app.prediction.AppTarget>);
-  }
-
-  public final class AppTarget implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getClassName();
-    method @NonNull public android.app.prediction.AppTargetId getId();
-    method @NonNull public String getPackageName();
-    method @IntRange(from=0) public int getRank();
-    method @Nullable public android.content.pm.ShortcutInfo getShortcutInfo();
-    method @NonNull public android.os.UserHandle getUser();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.prediction.AppTarget> CREATOR;
-  }
-
-  public static final class AppTarget.Builder {
-    ctor public AppTarget.Builder(@NonNull android.app.prediction.AppTargetId, @NonNull String, @NonNull android.os.UserHandle);
-    ctor public AppTarget.Builder(@NonNull android.app.prediction.AppTargetId, @NonNull android.content.pm.ShortcutInfo);
-    method @NonNull public android.app.prediction.AppTarget build();
-    method @NonNull public android.app.prediction.AppTarget.Builder setClassName(@NonNull String);
-    method @NonNull public android.app.prediction.AppTarget.Builder setRank(@IntRange(from=0) int);
-  }
-
-  public final class AppTargetEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAction();
-    method @Nullable public String getLaunchLocation();
-    method @Nullable public android.app.prediction.AppTarget getTarget();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ACTION_DISMISS = 2; // 0x2
-    field public static final int ACTION_LAUNCH = 1; // 0x1
-    field public static final int ACTION_PIN = 3; // 0x3
-    field public static final int ACTION_UNPIN = 4; // 0x4
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.prediction.AppTargetEvent> CREATOR;
-  }
-
-  public static final class AppTargetEvent.Builder {
-    ctor public AppTargetEvent.Builder(@Nullable android.app.prediction.AppTarget, int);
-    method @NonNull public android.app.prediction.AppTargetEvent build();
-    method @NonNull public android.app.prediction.AppTargetEvent.Builder setLaunchLocation(@Nullable String);
-  }
-
-  public final class AppTargetId implements android.os.Parcelable {
-    ctor public AppTargetId(@NonNull String);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.prediction.AppTargetId> CREATOR;
-  }
-
-}
-
-package android.app.role {
-
-  public interface OnRoleHoldersChangedListener {
-    method public void onRoleHoldersChanged(@NonNull String, @NonNull android.os.UserHandle);
-  }
-
-  public class RoleControllerManager {
-    method @RequiresPermission("android.permission.MANAGE_ROLE_HOLDERS") public void isApplicationVisibleForRole(@NonNull String, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @RequiresPermission("android.permission.MANAGE_ROLE_HOLDERS") public void isRoleVisible(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-  }
-
-  public final class RoleManager {
-    method @RequiresPermission("android.permission.OBSERVE_ROLE_HOLDERS") public void addOnRoleHoldersChangedListenerAsUser(@NonNull java.util.concurrent.Executor, @NonNull android.app.role.OnRoleHoldersChangedListener, @NonNull android.os.UserHandle);
-    method @RequiresPermission("android.permission.MANAGE_ROLE_HOLDERS") public void addRoleHolderAsUser(@NonNull String, @NonNull String, int, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public boolean addRoleHolderFromController(@NonNull String, @NonNull String);
-    method @RequiresPermission("android.permission.MANAGE_ROLE_HOLDERS") public void clearRoleHoldersAsUser(@NonNull String, int, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @NonNull @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public java.util.List<java.lang.String> getHeldRolesFromController(@NonNull String);
-    method @NonNull @RequiresPermission("android.permission.MANAGE_ROLE_HOLDERS") public java.util.List<java.lang.String> getRoleHolders(@NonNull String);
-    method @NonNull @RequiresPermission("android.permission.MANAGE_ROLE_HOLDERS") public java.util.List<java.lang.String> getRoleHoldersAsUser(@NonNull String, @NonNull android.os.UserHandle);
-    method @RequiresPermission("android.permission.OBSERVE_ROLE_HOLDERS") public void removeOnRoleHoldersChangedListenerAsUser(@NonNull android.app.role.OnRoleHoldersChangedListener, @NonNull android.os.UserHandle);
-    method @RequiresPermission("android.permission.MANAGE_ROLE_HOLDERS") public void removeRoleHolderAsUser(@NonNull String, @NonNull String, int, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public boolean removeRoleHolderFromController(@NonNull String, @NonNull String);
-    method @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public void setRoleNamesFromController(@NonNull java.util.List<java.lang.String>);
-    field public static final int MANAGE_HOLDERS_FLAG_DONT_KILL_APP = 1; // 0x1
-  }
-
-}
-
-package android.app.usage {
-
-  public class NetworkStatsManager {
-    method public void setPollForce(boolean);
-  }
-
-  public class StorageStatsManager {
-    method public boolean isQuotaSupported(@NonNull java.util.UUID);
-    method public boolean isReservedSupported(@NonNull java.util.UUID);
-    method @NonNull @WorkerThread public java.util.Collection<android.os.storage.CrateInfo> queryCratesForPackage(@NonNull java.util.UUID, @NonNull String, @NonNull android.os.UserHandle) throws java.io.IOException, android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull @WorkerThread public java.util.Collection<android.os.storage.CrateInfo> queryCratesForUid(@NonNull java.util.UUID, int) throws java.io.IOException, android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_CRATES) @WorkerThread public java.util.Collection<android.os.storage.CrateInfo> queryCratesForUser(@NonNull java.util.UUID, @NonNull android.os.UserHandle) throws java.io.IOException, android.content.pm.PackageManager.NameNotFoundException;
-  }
-
-  public final class UsageStatsManager {
-    method public void forceUsageSourceSettingRead();
-  }
-
-}
-
-package android.bluetooth {
-
-  public final class BluetoothClass implements android.os.Parcelable {
-    method public int getClassOfDevice();
-  }
-
-}
-
-package android.companion {
-
-  public final class CompanionDeviceManager {
-    method @RequiresPermission("android.permission.MANAGE_COMPANION_DEVICES") public boolean isDeviceAssociatedForWifiConnection(@NonNull String, @NonNull android.net.MacAddress, @NonNull android.os.UserHandle);
-  }
-
-}
-
-package android.content {
-
-  public class ApexEnvironment {
-    method @NonNull public static android.content.ApexEnvironment getApexEnvironment(@NonNull String);
-    method @NonNull public java.io.File getCredentialProtectedDataDirForUser(@NonNull android.os.UserHandle);
-    method @NonNull public java.io.File getDeviceProtectedDataDir();
-    method @NonNull public java.io.File getDeviceProtectedDataDirForUser(@NonNull android.os.UserHandle);
-  }
-
-  public final class AutofillOptions implements android.os.Parcelable {
-    ctor public AutofillOptions(int, boolean);
-    method public int describeContents();
-    method public static android.content.AutofillOptions forWhitelistingItself();
-    method public boolean isAugmentedAutofillEnabled(@NonNull android.content.Context);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.AutofillOptions> CREATOR;
-    field public long appDisabledExpiration;
-    field public boolean augmentedAutofillEnabled;
-    field public final boolean compatModeEnabled;
-    field @Nullable public android.util.ArrayMap<java.lang.String,java.lang.Long> disabledActivities;
-    field public final int loggingLevel;
-    field @Nullable public android.util.ArraySet<android.content.ComponentName> whitelistedActivitiesForAugmentedAutofill;
-  }
-
-  public final class ContentCaptureOptions implements android.os.Parcelable {
-    ctor public ContentCaptureOptions(int);
-    ctor public ContentCaptureOptions(int, int, int, int, int, @Nullable android.util.ArraySet<android.content.ComponentName>);
-    method public int describeContents();
-    method public static android.content.ContentCaptureOptions forWhitelistingItself();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.ContentCaptureOptions> CREATOR;
-    field public final int idleFlushingFrequencyMs;
-    field public final boolean lite;
-    field public final int logHistorySize;
-    field public final int loggingLevel;
-    field public final int maxBufferSize;
-    field public final int textChangeFlushingFrequencyMs;
-    field @Nullable public final android.util.ArraySet<android.content.ComponentName> whitelistedComponents;
-  }
-
-  public abstract class ContentProvider implements android.content.ComponentCallbacks2 {
-    method @NonNull public static android.os.UserHandle getUserHandleFromUri(@NonNull android.net.Uri);
-  }
-
-  public class ContentProviderClient implements java.lang.AutoCloseable {
-    method @RequiresPermission(android.Manifest.permission.REMOVE_TASKS) public void setDetectNotResponding(long);
-  }
-
-  public abstract class ContentResolver {
-    method @NonNull public static android.net.Uri decodeFromFile(@NonNull java.io.File);
-    method @NonNull public static java.io.File encodeToFile(@NonNull android.net.Uri);
-    method public static String[] getSyncAdapterPackagesForAuthorityAsUser(String, int);
-  }
-
-  public abstract class Context {
-    method @NonNull public android.content.Context createContextAsUser(@NonNull android.os.UserHandle, int);
-    method @NonNull public android.content.Context createPackageContextAsUser(@NonNull String, int, @NonNull android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public java.io.File getCrateDir(@NonNull String);
-    method public abstract int getDisplayId();
-    method public android.os.UserHandle getUser();
-    method public int getUserId();
-    method public void setAutofillOptions(@Nullable android.content.AutofillOptions);
-    method public void setContentCaptureOptions(@Nullable android.content.ContentCaptureOptions);
-    method @RequiresPermission("android.permission.INTERACT_ACROSS_USERS") public void startActivityAsUser(@NonNull @RequiresPermission android.content.Intent, @NonNull android.os.UserHandle);
-    field public static final String APP_INTEGRITY_SERVICE = "app_integrity";
-    field public static final String BUGREPORT_SERVICE = "bugreport";
-    field public static final String CONTENT_CAPTURE_MANAGER_SERVICE = "content_capture";
-    field public static final String DEVICE_IDLE_CONTROLLER = "deviceidle";
-    field public static final String DREAM_SERVICE = "dream";
-    field public static final String ETHERNET_SERVICE = "ethernet";
-    field public static final String PERMISSION_SERVICE = "permission";
-    field public static final String POWER_WHITELIST_MANAGER = "power_whitelist";
-    field public static final String ROLLBACK_SERVICE = "rollback";
-    field public static final String STATUS_BAR_SERVICE = "statusbar";
-    field public static final String TEST_NETWORK_SERVICE = "test_network";
-  }
-
-  public class ContextWrapper extends android.content.Context {
-    method public int getDisplayId();
-  }
-
-  public class Intent implements java.lang.Cloneable android.os.Parcelable {
-    field @RequiresPermission("android.permission.MANAGE_ROLE_HOLDERS") public static final String ACTION_MANAGE_DEFAULT_APP = "android.intent.action.MANAGE_DEFAULT_APP";
-    field public static final String ACTION_ROLLBACK_COMMITTED = "android.intent.action.ROLLBACK_COMMITTED";
-    field public static final String EXTRA_ORIGINATING_UID = "android.intent.extra.ORIGINATING_UID";
-    field public static final String EXTRA_ROLE_NAME = "android.intent.extra.ROLE_NAME";
-  }
-
-}
-
-package android.content.integrity {
-
-  public class AppIntegrityManager {
-    method @NonNull public android.content.integrity.RuleSet getCurrentRuleSet();
-    method @NonNull public String getCurrentRuleSetProvider();
-    method @NonNull public String getCurrentRuleSetVersion();
-    method @NonNull public java.util.List<java.lang.String> getWhitelistedRuleProviders();
-    method public void updateRuleSet(@NonNull android.content.integrity.RuleSet, @NonNull android.content.IntentSender);
-    field public static final String EXTRA_STATUS = "android.content.integrity.extra.STATUS";
-    field public static final int STATUS_FAILURE = 1; // 0x1
-    field public static final int STATUS_SUCCESS = 0; // 0x0
-  }
-
-  public abstract class IntegrityFormula {
-    method @NonNull public static android.content.integrity.IntegrityFormula all(@NonNull android.content.integrity.IntegrityFormula...);
-    method @NonNull public static android.content.integrity.IntegrityFormula any(@NonNull android.content.integrity.IntegrityFormula...);
-    method @NonNull public static android.content.integrity.IntegrityFormula not(@NonNull android.content.integrity.IntegrityFormula);
-  }
-
-  public static final class IntegrityFormula.Application {
-    method @NonNull public static android.content.integrity.IntegrityFormula certificatesContain(@NonNull String);
-    method @NonNull public static android.content.integrity.IntegrityFormula isPreInstalled();
-    method @NonNull public static android.content.integrity.IntegrityFormula packageNameEquals(@NonNull String);
-    method @NonNull public static android.content.integrity.IntegrityFormula versionCodeEquals(@NonNull long);
-    method @NonNull public static android.content.integrity.IntegrityFormula versionCodeGreaterThan(@NonNull long);
-    method @NonNull public static android.content.integrity.IntegrityFormula versionCodeGreaterThanOrEqualTo(@NonNull long);
-  }
-
-  public static final class IntegrityFormula.Installer {
-    method @NonNull public static android.content.integrity.IntegrityFormula certificatesContain(@NonNull String);
-    method @NonNull public static android.content.integrity.IntegrityFormula notAllowedByManifest();
-    method @NonNull public static android.content.integrity.IntegrityFormula packageNameEquals(@NonNull String);
-  }
-
-  public static final class IntegrityFormula.SourceStamp {
-    method @NonNull public static android.content.integrity.IntegrityFormula notTrusted();
-    method @NonNull public static android.content.integrity.IntegrityFormula stampCertificateHashEquals(@NonNull String);
-  }
-
-  public final class Rule implements android.os.Parcelable {
-    ctor public Rule(@NonNull android.content.integrity.IntegrityFormula, int);
-    method public int describeContents();
-    method public int getEffect();
-    method @NonNull public android.content.integrity.IntegrityFormula getFormula();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.integrity.Rule> CREATOR;
-    field public static final int DENY = 0; // 0x0
-    field public static final int FORCE_ALLOW = 1; // 0x1
-  }
-
-  public class RuleSet {
-    method @NonNull public java.util.List<android.content.integrity.Rule> getRules();
-    method @NonNull public String getVersion();
-  }
-
-  public static class RuleSet.Builder {
-    ctor public RuleSet.Builder();
-    method @NonNull public android.content.integrity.RuleSet.Builder addRules(@NonNull java.util.List<android.content.integrity.Rule>);
-    method @NonNull public android.content.integrity.RuleSet build();
-    method @NonNull public android.content.integrity.RuleSet.Builder setVersion(@NonNull String);
-  }
-
-}
-
-package android.content.pm {
-
-  public class ActivityInfo extends android.content.pm.ComponentInfo implements android.os.Parcelable {
-    method public static boolean isTranslucentOrFloating(android.content.res.TypedArray);
-    field public static final int RESIZE_MODE_RESIZEABLE = 2; // 0x2
-  }
-
-  public class ApplicationInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
-    method public boolean isPrivilegedApp();
-    method public boolean isSystemApp();
-    field public static final int PRIVATE_FLAG_PRIVILEGED = 8; // 0x8
-    field public int privateFlags;
-  }
-
-  public class LauncherApps {
-    ctor public LauncherApps(android.content.Context);
-  }
-
-  public static class PackageInstaller.SessionInfo implements android.os.Parcelable {
-    method public int getAutoRevokePermissionsMode();
-    method public int getRollbackDataPolicy();
-    method @NonNull public java.util.Set<java.lang.String> getWhitelistedRestrictedPermissions();
-  }
-
-  public static class PackageInstaller.SessionParams implements android.os.Parcelable {
-    method public void setEnableRollback(boolean);
-    method public void setEnableRollback(boolean, int);
-    method @RequiresPermission("android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS") public void setGrantedRuntimePermissions(String[]);
-    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setInstallAsApex();
-    method public void setInstallerPackageName(@Nullable String);
-    method public void setRequestDowngrade(boolean);
-    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setStaged();
-  }
-
-  public abstract class PackageManager {
-    method @RequiresPermission("android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS") public abstract void addOnPermissionsChangeListener(@NonNull android.content.pm.PackageManager.OnPermissionsChangedListener);
-    method public abstract boolean arePermissionsIndividuallyControlled();
-    method @Nullable public String getContentCaptureServicePackageName();
-    method @Nullable @RequiresPermission("android.permission.INTERACT_ACROSS_USERS_FULL") public abstract String getDefaultBrowserPackageNameAsUser(int);
-    method @Nullable public String getDefaultTextClassifierPackageName();
-    method @Nullable public String getIncidentReportApproverPackageName();
-    method public abstract int getInstallReason(@NonNull String, @NonNull android.os.UserHandle);
-    method @NonNull public abstract java.util.List<android.content.pm.ApplicationInfo> getInstalledApplicationsAsUser(int, int);
-    method @NonNull @RequiresPermission("android.permission.INTERACT_ACROSS_USERS_FULL") public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackagesAsUser(int, int);
-    method @Nullable public abstract String[] getNamesForUids(int[]);
-    method @NonNull public abstract String getPermissionControllerPackageName();
-    method @RequiresPermission(anyOf={"android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.GET_RUNTIME_PERMISSIONS"}) public abstract int getPermissionFlags(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
-    method @NonNull public abstract String getServicesSystemSharedLibraryPackageName();
-    method @NonNull public abstract String getSharedSystemSharedLibraryPackageName();
-    method @Nullable public String getSystemTextClassifierPackageName();
-    method @Nullable public String getWellbeingPackageName();
-    method @RequiresPermission("android.permission.GRANT_RUNTIME_PERMISSIONS") public abstract void grantRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
-    method @RequiresPermission("android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS") public abstract void removeOnPermissionsChangeListener(@NonNull android.content.pm.PackageManager.OnPermissionsChangedListener);
-    method @RequiresPermission("android.permission.REVOKE_RUNTIME_PERMISSIONS") public abstract void revokeRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
-    method @RequiresPermission("android.permission.REVOKE_RUNTIME_PERMISSIONS") public void revokeRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle, @NonNull String);
-    method @RequiresPermission(anyOf={"android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.REVOKE_RUNTIME_PERMISSIONS"}) public abstract void updatePermissionFlags(@NonNull String, @NonNull String, int, int, @NonNull android.os.UserHandle);
-    field public static final String FEATURE_ADOPTABLE_STORAGE = "android.software.adoptable_storage";
-    field public static final String FEATURE_FILE_BASED_ENCRYPTION = "android.software.file_based_encryption";
-    field public static final int FLAG_PERMISSION_APPLY_RESTRICTION = 16384; // 0x4000
-    field public static final int FLAG_PERMISSION_GRANTED_BY_ROLE = 32768; // 0x8000
-    field public static final int FLAG_PERMISSION_ONE_TIME = 65536; // 0x10000
-    field public static final int FLAG_PERMISSION_POLICY_FIXED = 4; // 0x4
-    field public static final int FLAG_PERMISSION_RESTRICTION_INSTALLER_EXEMPT = 2048; // 0x800
-    field public static final int FLAG_PERMISSION_RESTRICTION_SYSTEM_EXEMPT = 4096; // 0x1000
-    field public static final int FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT = 8192; // 0x2000
-    field public static final int FLAG_PERMISSION_REVIEW_REQUIRED = 64; // 0x40
-    field public static final int FLAG_PERMISSION_REVOKED_COMPAT = 8; // 0x8
-    field @Deprecated public static final int FLAG_PERMISSION_REVOKE_ON_UPGRADE = 8; // 0x8
-    field public static final int FLAG_PERMISSION_REVOKE_WHEN_REQUESTED = 128; // 0x80
-    field public static final int FLAG_PERMISSION_SYSTEM_FIXED = 16; // 0x10
-    field public static final int FLAG_PERMISSION_USER_FIXED = 2; // 0x2
-    field public static final int FLAG_PERMISSION_USER_SET = 1; // 0x1
-    field public static final int MATCH_FACTORY_ONLY = 2097152; // 0x200000
-    field public static final int MATCH_KNOWN_PACKAGES = 4202496; // 0x402000
-    field public static final int MODULE_APEX_NAME = 1; // 0x1
-    field public static final String SYSTEM_SHARED_LIBRARY_SERVICES = "android.ext.services";
-    field public static final String SYSTEM_SHARED_LIBRARY_SHARED = "android.ext.shared";
-  }
-
-  public static interface PackageManager.OnPermissionsChangedListener {
-    method public void onPermissionsChanged(int);
-  }
-
-  public class PermissionInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
-    field public static final int FLAG_REMOVED = 2; // 0x2
-    field public static final int PROTECTION_FLAG_APP_PREDICTOR = 2097152; // 0x200000
-    field public static final int PROTECTION_FLAG_COMPANION = 8388608; // 0x800000
-    field public static final int PROTECTION_FLAG_CONFIGURATOR = 524288; // 0x80000
-    field public static final int PROTECTION_FLAG_DOCUMENTER = 262144; // 0x40000
-    field public static final int PROTECTION_FLAG_INCIDENT_REPORT_APPROVER = 1048576; // 0x100000
-    field public static final int PROTECTION_FLAG_OEM = 16384; // 0x4000
-    field public static final int PROTECTION_FLAG_RETAIL_DEMO = 16777216; // 0x1000000
-    field public static final int PROTECTION_FLAG_SYSTEM_TEXT_CLASSIFIER = 65536; // 0x10000
-    field public static final int PROTECTION_FLAG_VENDOR_PRIVILEGED = 32768; // 0x8000
-    field public static final int PROTECTION_FLAG_WELLBEING = 131072; // 0x20000
-    field @Nullable public final String backgroundPermission;
-  }
-
-  public final class ProviderInfoList implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public static android.content.pm.ProviderInfoList fromList(@NonNull java.util.List<android.content.pm.ProviderInfo>);
-    method @NonNull public java.util.List<android.content.pm.ProviderInfo> getList();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ProviderInfoList> CREATOR;
-  }
-
-  public final class ShortcutInfo implements android.os.Parcelable {
-    method public boolean isVisibleToPublisher();
-  }
-
-  public class ShortcutManager {
-    ctor public ShortcutManager(android.content.Context);
-  }
-
-}
-
-package android.content.res {
-
-  public final class AssetManager implements java.lang.AutoCloseable {
-    method @NonNull public String[] getApkPaths();
-    method @Nullable public String getLastResourceResolution();
-    method @Nullable public String getOverlayablesToString(String);
-    method public void setResourceResolutionLoggingEnabled(boolean);
-  }
-
-  public final class Configuration implements java.lang.Comparable<android.content.res.Configuration> android.os.Parcelable {
-    field public int assetsSeq;
-    field public final android.app.WindowConfiguration windowConfiguration;
-  }
-
-}
-
-package android.content.rollback {
-
-  public final class PackageRollbackInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public String getPackageName();
-    method @NonNull public android.content.pm.VersionedPackage getVersionRolledBackFrom();
-    method @NonNull public android.content.pm.VersionedPackage getVersionRolledBackTo();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.rollback.PackageRollbackInfo> CREATOR;
-  }
-
-  public final class RollbackInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public java.util.List<android.content.pm.VersionedPackage> getCausePackages();
-    method public int getCommittedSessionId();
-    method @NonNull public java.util.List<android.content.rollback.PackageRollbackInfo> getPackages();
-    method public int getRollbackId();
-    method public boolean isStaged();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.rollback.RollbackInfo> CREATOR;
-  }
-
-  public final class RollbackManager {
-    method @RequiresPermission(android.Manifest.permission.TEST_MANAGE_ROLLBACKS) public void blockRollbackManager(long);
-    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_ROLLBACKS, android.Manifest.permission.TEST_MANAGE_ROLLBACKS}) public void commitRollback(int, @NonNull java.util.List<android.content.pm.VersionedPackage>, @NonNull android.content.IntentSender);
-    method @RequiresPermission(android.Manifest.permission.TEST_MANAGE_ROLLBACKS) public void expireRollbackForPackage(@NonNull String);
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_ROLLBACKS, android.Manifest.permission.TEST_MANAGE_ROLLBACKS}) public java.util.List<android.content.rollback.RollbackInfo> getAvailableRollbacks();
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_ROLLBACKS, android.Manifest.permission.TEST_MANAGE_ROLLBACKS}) public java.util.List<android.content.rollback.RollbackInfo> getRecentlyCommittedRollbacks();
-    method @RequiresPermission(android.Manifest.permission.TEST_MANAGE_ROLLBACKS) public void reloadPersistedData();
-    field public static final String EXTRA_STATUS = "android.content.rollback.extra.STATUS";
-    field public static final String EXTRA_STATUS_MESSAGE = "android.content.rollback.extra.STATUS_MESSAGE";
-    field public static final String PROPERTY_ROLLBACK_LIFETIME_MILLIS = "rollback_lifetime_in_millis";
-    field public static final int STATUS_FAILURE = 1; // 0x1
-    field public static final int STATUS_FAILURE_INSTALL = 3; // 0x3
-    field public static final int STATUS_FAILURE_ROLLBACK_UNAVAILABLE = 2; // 0x2
-    field public static final int STATUS_SUCCESS = 0; // 0x0
-  }
-
-}
-
-package android.database.sqlite {
-
-  public class SQLiteCompatibilityWalFlags {
-    method public static void reset();
-  }
-
-  public final class SQLiteDebug {
-    method public static void dump(android.util.Printer, String[]);
-    method public static android.database.sqlite.SQLiteDebug.PagerStats getDatabaseInfo();
-  }
-
-  public static class SQLiteDebug.DbStats {
-    ctor public SQLiteDebug.DbStats(String, long, long, int, int, int, int);
-    field public String cache;
-    field public String dbName;
-    field public long dbSize;
-    field public int lookaside;
-    field public long pageSize;
-  }
-
-  public static class SQLiteDebug.PagerStats {
-    ctor public SQLiteDebug.PagerStats();
-    field public java.util.ArrayList<android.database.sqlite.SQLiteDebug.DbStats> dbStats;
-    field public int largestMemAlloc;
-    field public int memoryUsed;
-    field public int pageCacheOverflow;
-  }
-
-  public final class SQLiteDirectCursorDriver implements android.database.sqlite.SQLiteCursorDriver {
-    ctor public SQLiteDirectCursorDriver(android.database.sqlite.SQLiteDatabase, String, String, android.os.CancellationSignal);
-    method public void cursorClosed();
-    method public void cursorDeactivated();
-    method public void cursorRequeried(android.database.Cursor);
-    method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase.CursorFactory, String[]);
-    method public void setBindArguments(String[]);
-  }
-
-  public final class SQLiteGlobal {
-    method public static String getDefaultJournalMode();
-    method public static int getDefaultPageSize();
-    method public static String getDefaultSyncMode();
-    method public static int getIdleConnectionTimeout();
-    method public static int getJournalSizeLimit();
-    method public static int getWALAutoCheckpoint();
-    method public static int getWALConnectionPoolSize();
-    method public static String getWALSyncMode();
-    method public static int releaseMemory();
-  }
-
-}
-
-package android.graphics {
-
-  public final class ImageDecoder implements java.lang.AutoCloseable {
-    method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(android.content.res.Resources, java.io.InputStream, int);
-  }
-
-}
-
-package android.graphics.drawable {
-
-  public class AdaptiveIconDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
-    method public android.graphics.Region getSafeZone();
-    field public static final float MASK_SIZE = 100.0f;
-  }
-
-  public class ColorDrawable extends android.graphics.drawable.Drawable {
-    method public android.graphics.Xfermode getXfermode();
-  }
-
-  public abstract class Drawable {
-    method public boolean hasFocusStateSpecified();
-  }
-
-  public class ShapeDrawable extends android.graphics.drawable.Drawable {
-    method public void setXfermode(@Nullable android.graphics.Xfermode);
-  }
-
-}
-
-package android.hardware.camera2 {
-
-  public abstract class CameraDevice implements java.lang.AutoCloseable {
-    method @Deprecated public abstract void createCustomCaptureSession(android.hardware.camera2.params.InputConfiguration, @NonNull java.util.List<android.hardware.camera2.params.OutputConfiguration>, int, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
-    field public static final int SESSION_OPERATION_MODE_CONSTRAINED_HIGH_SPEED = 1; // 0x1
-    field public static final int SESSION_OPERATION_MODE_NORMAL = 0; // 0x0
-    field public static final int SESSION_OPERATION_MODE_VENDOR_START = 32768; // 0x8000
-  }
-
-  public final class CameraManager {
-    method public String[] getCameraIdListNoLazy() throws android.hardware.camera2.CameraAccessException;
-  }
-
-}
-
-package android.hardware.display {
-
-  public final class AmbientBrightnessDayStats implements android.os.Parcelable {
-    method public int describeContents();
-    method public float[] getBucketBoundaries();
-    method public java.time.LocalDate getLocalDate();
-    method public float[] getStats();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.display.AmbientBrightnessDayStats> CREATOR;
-  }
-
-  public class AmbientDisplayConfiguration {
-    ctor public AmbientDisplayConfiguration(android.content.Context);
-    method public boolean alwaysOnAvailable();
-    method public boolean alwaysOnAvailableForUser(int);
-    method public boolean alwaysOnEnabled(int);
-  }
-
-  public final class BrightnessChangeEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.display.BrightnessChangeEvent> CREATOR;
-    field public final float batteryLevel;
-    field public final float brightness;
-    field public final long colorSampleDuration;
-    field public final int colorTemperature;
-    field @Nullable public final long[] colorValueBuckets;
-    field public final boolean isDefaultBrightnessConfig;
-    field public final boolean isUserSetBrightness;
-    field public final float lastBrightness;
-    field public final long[] luxTimestamps;
-    field public final float[] luxValues;
-    field public final boolean nightMode;
-    field public final String packageName;
-    field public final float powerBrightnessFactor;
-    field public final long timeStamp;
-  }
-
-  public final class BrightnessConfiguration implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.hardware.display.BrightnessCorrection getCorrectionByCategory(int);
-    method @Nullable public android.hardware.display.BrightnessCorrection getCorrectionByPackageName(@NonNull String);
-    method public android.util.Pair<float[],float[]> getCurve();
-    method public float getShortTermModelLowerLuxMultiplier();
-    method public long getShortTermModelTimeoutMillis();
-    method public float getShortTermModelUpperLuxMultiplier();
-    method public boolean shouldCollectColorSamples();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.display.BrightnessConfiguration> CREATOR;
-    field public static final long SHORT_TERM_TIMEOUT_UNSET = -1L; // 0xffffffffffffffffL
-  }
-
-  public static class BrightnessConfiguration.Builder {
-    ctor public BrightnessConfiguration.Builder(float[], float[]);
-    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder addCorrectionByCategory(int, @NonNull android.hardware.display.BrightnessCorrection);
-    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder addCorrectionByPackageName(@NonNull String, @NonNull android.hardware.display.BrightnessCorrection);
-    method @NonNull public android.hardware.display.BrightnessConfiguration build();
-    method public int getMaxCorrectionsByCategory();
-    method public int getMaxCorrectionsByPackageName();
-    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder setDescription(@Nullable String);
-    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder setShortTermModelLowerLuxMultiplier(@FloatRange(from=0.0f) float);
-    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder setShortTermModelTimeoutMillis(long);
-    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder setShortTermModelUpperLuxMultiplier(@FloatRange(from=0.0f) float);
-    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder setShouldCollectColorSamples(boolean);
-  }
-
-  public final class BrightnessCorrection implements android.os.Parcelable {
-    method @FloatRange(from=0.0) public float apply(@FloatRange(from=0.0) float);
-    method @NonNull public static android.hardware.display.BrightnessCorrection createScaleAndTranslateLog(float, float);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.display.BrightnessCorrection> CREATOR;
-  }
-
-  public final class DisplayManager {
-    method @RequiresPermission("android.permission.ACCESS_AMBIENT_LIGHT_STATS") public java.util.List<android.hardware.display.AmbientBrightnessDayStats> getAmbientBrightnessStats();
-    method @RequiresPermission(android.Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS) public android.hardware.display.BrightnessConfiguration getBrightnessConfiguration();
-    method @RequiresPermission(android.Manifest.permission.BRIGHTNESS_SLIDER_USAGE) public java.util.List<android.hardware.display.BrightnessChangeEvent> getBrightnessEvents();
-    method @Nullable @RequiresPermission(android.Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS) public android.hardware.display.BrightnessConfiguration getDefaultBrightnessConfiguration();
-    method public android.graphics.Point getStableDisplaySize();
-    method public boolean isMinimalPostProcessingRequested(int);
-    method @RequiresPermission(android.Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS) public void setBrightnessConfiguration(android.hardware.display.BrightnessConfiguration);
-  }
-
-}
-
-package android.hardware.hdmi {
-
-  public final class HdmiControlManager {
-    method @Nullable public android.hardware.hdmi.HdmiSwitchClient getSwitchClient();
-    method @RequiresPermission("android.permission.HDMI_CEC") public void setStandbyMode(boolean);
-    field public static final String ACTION_OSD_MESSAGE = "android.hardware.hdmi.action.OSD_MESSAGE";
-    field public static final int AVR_VOLUME_MUTED = 101; // 0x65
-    field public static final int CLEAR_TIMER_STATUS_CEC_DISABLE = 162; // 0xa2
-    field public static final int CLEAR_TIMER_STATUS_CHECK_RECORDER_CONNECTION = 160; // 0xa0
-    field public static final int CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE = 161; // 0xa1
-    field public static final int CLEAR_TIMER_STATUS_TIMER_CLEARED = 128; // 0x80
-    field public static final int CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_NO_INFO_AVAILABLE = 2; // 0x2
-    field public static final int CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_NO_MATCHING = 1; // 0x1
-    field public static final int CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_RECORDING = 0; // 0x0
-    field public static final int CONTROL_STATE_CHANGED_REASON_SETTING = 1; // 0x1
-    field public static final int CONTROL_STATE_CHANGED_REASON_STANDBY = 3; // 0x3
-    field public static final int CONTROL_STATE_CHANGED_REASON_START = 0; // 0x0
-    field public static final int CONTROL_STATE_CHANGED_REASON_WAKEUP = 2; // 0x2
-    field public static final int DEVICE_EVENT_ADD_DEVICE = 1; // 0x1
-    field public static final int DEVICE_EVENT_REMOVE_DEVICE = 2; // 0x2
-    field public static final int DEVICE_EVENT_UPDATE_DEVICE = 3; // 0x3
-    field public static final String EXTRA_MESSAGE_EXTRA_PARAM1 = "android.hardware.hdmi.extra.MESSAGE_EXTRA_PARAM1";
-    field public static final String EXTRA_MESSAGE_ID = "android.hardware.hdmi.extra.MESSAGE_ID";
-    field public static final int ONE_TOUCH_RECORD_ALREADY_RECORDING = 18; // 0x12
-    field public static final int ONE_TOUCH_RECORD_CEC_DISABLED = 51; // 0x33
-    field public static final int ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION = 49; // 0x31
-    field public static final int ONE_TOUCH_RECORD_DISALLOW_TO_COPY = 13; // 0xd
-    field public static final int ONE_TOUCH_RECORD_DISALLOW_TO_FUTHER_COPIES = 14; // 0xe
-    field public static final int ONE_TOUCH_RECORD_FAIL_TO_RECORD_DISPLAYED_SCREEN = 50; // 0x32
-    field public static final int ONE_TOUCH_RECORD_INVALID_EXTERNAL_PHYSICAL_ADDRESS = 10; // 0xa
-    field public static final int ONE_TOUCH_RECORD_INVALID_EXTERNAL_PLUG_NUMBER = 9; // 0x9
-    field public static final int ONE_TOUCH_RECORD_MEDIA_PROBLEM = 21; // 0x15
-    field public static final int ONE_TOUCH_RECORD_MEDIA_PROTECTED = 19; // 0x13
-    field public static final int ONE_TOUCH_RECORD_NOT_ENOUGH_SPACE = 22; // 0x16
-    field public static final int ONE_TOUCH_RECORD_NO_MEDIA = 16; // 0x10
-    field public static final int ONE_TOUCH_RECORD_NO_OR_INSUFFICIENT_CA_ENTITLEMENTS = 12; // 0xc
-    field public static final int ONE_TOUCH_RECORD_NO_SOURCE_SIGNAL = 20; // 0x14
-    field public static final int ONE_TOUCH_RECORD_OTHER_REASON = 31; // 0x1f
-    field public static final int ONE_TOUCH_RECORD_PARENT_LOCK_ON = 23; // 0x17
-    field public static final int ONE_TOUCH_RECORD_PLAYING = 17; // 0x11
-    field public static final int ONE_TOUCH_RECORD_PREVIOUS_RECORDING_IN_PROGRESS = 48; // 0x30
-    field public static final int ONE_TOUCH_RECORD_RECORDING_ALREADY_TERMINATED = 27; // 0x1b
-    field public static final int ONE_TOUCH_RECORD_RECORDING_ANALOGUE_SERVICE = 3; // 0x3
-    field public static final int ONE_TOUCH_RECORD_RECORDING_CURRENTLY_SELECTED_SOURCE = 1; // 0x1
-    field public static final int ONE_TOUCH_RECORD_RECORDING_DIGITAL_SERVICE = 2; // 0x2
-    field public static final int ONE_TOUCH_RECORD_RECORDING_EXTERNAL_INPUT = 4; // 0x4
-    field public static final int ONE_TOUCH_RECORD_RECORDING_TERMINATED_NORMALLY = 26; // 0x1a
-    field public static final int ONE_TOUCH_RECORD_UNABLE_ANALOGUE_SERVICE = 6; // 0x6
-    field public static final int ONE_TOUCH_RECORD_UNABLE_DIGITAL_SERVICE = 5; // 0x5
-    field public static final int ONE_TOUCH_RECORD_UNABLE_SELECTED_SERVICE = 7; // 0x7
-    field public static final int ONE_TOUCH_RECORD_UNSUPPORTED_CA = 11; // 0xb
-    field public static final int OSD_MESSAGE_ARC_CONNECTED_INVALID_PORT = 1; // 0x1
-    field public static final int OSD_MESSAGE_AVR_VOLUME_CHANGED = 2; // 0x2
-    field public static final int POWER_STATUS_ON = 0; // 0x0
-    field public static final int POWER_STATUS_STANDBY = 1; // 0x1
-    field public static final int POWER_STATUS_TRANSIENT_TO_ON = 2; // 0x2
-    field public static final int POWER_STATUS_TRANSIENT_TO_STANDBY = 3; // 0x3
-    field public static final int POWER_STATUS_UNKNOWN = -1; // 0xffffffff
-    field @Deprecated public static final int RESULT_ALREADY_IN_PROGRESS = 4; // 0x4
-    field public static final int RESULT_COMMUNICATION_FAILED = 7; // 0x7
-    field public static final int RESULT_EXCEPTION = 5; // 0x5
-    field public static final int RESULT_INCORRECT_MODE = 6; // 0x6
-    field public static final int RESULT_SOURCE_NOT_AVAILABLE = 2; // 0x2
-    field public static final int RESULT_SUCCESS = 0; // 0x0
-    field public static final int RESULT_TARGET_NOT_AVAILABLE = 3; // 0x3
-    field public static final int RESULT_TIMEOUT = 1; // 0x1
-    field public static final int TIMER_RECORDING_RESULT_EXTRA_CEC_DISABLED = 3; // 0x3
-    field public static final int TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION = 1; // 0x1
-    field public static final int TIMER_RECORDING_RESULT_EXTRA_FAIL_TO_RECORD_SELECTED_SOURCE = 2; // 0x2
-    field public static final int TIMER_RECORDING_RESULT_EXTRA_NO_ERROR = 0; // 0x0
-    field public static final int TIMER_RECORDING_TYPE_ANALOGUE = 2; // 0x2
-    field public static final int TIMER_RECORDING_TYPE_DIGITAL = 1; // 0x1
-    field public static final int TIMER_RECORDING_TYPE_EXTERNAL = 3; // 0x3
-    field public static final int TIMER_STATUS_MEDIA_INFO_NOT_PRESENT = 2; // 0x2
-    field public static final int TIMER_STATUS_MEDIA_INFO_PRESENT_NOT_PROTECTED = 0; // 0x0
-    field public static final int TIMER_STATUS_MEDIA_INFO_PRESENT_PROTECTED = 1; // 0x1
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_CA_NOT_SUPPORTED = 6; // 0x6
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_CLOCK_FAILURE = 10; // 0xa
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_DATE_OUT_OF_RANGE = 2; // 0x2
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_DUPLICATED = 14; // 0xe
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_INVALID_EXTERNAL_PHYSICAL_NUMBER = 5; // 0x5
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_INVALID_EXTERNAL_PLUG_NUMBER = 4; // 0x4
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_INVALID_SEQUENCE = 3; // 0x3
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_NO_CA_ENTITLEMENTS = 7; // 0x7
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_NO_FREE_TIME = 1; // 0x1
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_PARENTAL_LOCK_ON = 9; // 0x9
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_UNSUPPORTED_RESOLUTION = 8; // 0x8
-    field public static final int TIMER_STATUS_PROGRAMMED_INFO_ENOUGH_SPACE = 8; // 0x8
-    field public static final int TIMER_STATUS_PROGRAMMED_INFO_MIGHT_NOT_ENOUGH_SPACE = 11; // 0xb
-    field public static final int TIMER_STATUS_PROGRAMMED_INFO_NOT_ENOUGH_SPACE = 9; // 0x9
-    field public static final int TIMER_STATUS_PROGRAMMED_INFO_NO_MEDIA_INFO = 10; // 0xa
-  }
-
-  public final class HdmiControlServiceWrapper {
-    ctor public HdmiControlServiceWrapper();
-    method @NonNull public android.hardware.hdmi.HdmiControlManager createHdmiControlManager();
-    method @BinderThread public void setDeviceTypes(@NonNull int[]);
-    method @BinderThread public void setPortInfo(@NonNull java.util.List<android.hardware.hdmi.HdmiPortInfo>);
-    field public static final int DEVICE_PURE_CEC_SWITCH = 6; // 0x6
-  }
-
-  public final class HdmiPortInfo implements android.os.Parcelable {
-    ctor public HdmiPortInfo(int, int, int, boolean, boolean, boolean);
-    method public int describeContents();
-    method public int getAddress();
-    method public int getId();
-    method public int getType();
-    method public boolean isArcSupported();
-    method public boolean isCecSupported();
-    method public boolean isMhlSupported();
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.hdmi.HdmiPortInfo> CREATOR;
-    field public static final int PORT_INPUT = 0; // 0x0
-    field public static final int PORT_OUTPUT = 1; // 0x1
-  }
-
-  public class HdmiSwitchClient {
-    method public int getDeviceType();
-    method @NonNull public java.util.List<android.hardware.hdmi.HdmiPortInfo> getPortInfo();
-    method public void sendKeyEvent(int, boolean);
-    method public void sendVendorCommand(int, byte[], boolean);
-  }
-
-}
-
-package android.hardware.lights {
-
-  public final class Light implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getId();
-    method public int getOrdinal();
-    method public int getType();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.lights.Light> CREATOR;
-  }
-
-  public final class LightState implements android.os.Parcelable {
-    ctor public LightState(@ColorInt int);
-    method public int describeContents();
-    method @ColorInt public int getColor();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.lights.LightState> CREATOR;
-  }
-
-  public final class LightsManager {
-    method @NonNull @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public android.hardware.lights.LightState getLightState(@NonNull android.hardware.lights.Light);
-    method @NonNull @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public java.util.List<android.hardware.lights.Light> getLights();
-    method @NonNull @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public android.hardware.lights.LightsManager.LightsSession openSession();
-    field public static final int LIGHT_TYPE_MICROPHONE = 8; // 0x8
-  }
-
-  public final class LightsManager.LightsSession implements java.lang.AutoCloseable {
-    method @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public void close();
-    method @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public void requestLights(@NonNull android.hardware.lights.LightsRequest);
-  }
-
-  public final class LightsRequest {
-  }
-
-  public static final class LightsRequest.Builder {
-    ctor public LightsRequest.Builder();
-    method @NonNull public android.hardware.lights.LightsRequest build();
-    method @NonNull public android.hardware.lights.LightsRequest.Builder clearLight(@NonNull android.hardware.lights.Light);
-    method @NonNull public android.hardware.lights.LightsRequest.Builder setLight(@NonNull android.hardware.lights.Light, @NonNull android.hardware.lights.LightState);
-  }
-
-}
-
-package android.hardware.soundtrigger {
-
-  public class KeyphraseEnrollmentInfo {
-    ctor public KeyphraseEnrollmentInfo(@NonNull android.content.pm.PackageManager);
-    method @Nullable public android.hardware.soundtrigger.KeyphraseMetadata getKeyphraseMetadata(@NonNull String, @NonNull java.util.Locale);
-    method @Nullable public android.content.Intent getManageKeyphraseIntent(int, @NonNull String, @NonNull java.util.Locale);
-    method @NonNull public String getParseError();
-    method @NonNull public java.util.Collection<android.hardware.soundtrigger.KeyphraseMetadata> listKeyphraseMetadata();
-    field public static final int MANAGE_ACTION_ENROLL = 0; // 0x0
-    field public static final int MANAGE_ACTION_RE_ENROLL = 1; // 0x1
-    field public static final int MANAGE_ACTION_UN_ENROLL = 2; // 0x2
-  }
-
-  public final class KeyphraseMetadata implements android.os.Parcelable {
-    ctor public KeyphraseMetadata(int, @NonNull String, @NonNull java.util.Set<java.util.Locale>, int);
-    method public int describeContents();
-    method public int getId();
-    method @NonNull public String getKeyphrase();
-    method public int getRecognitionModeFlags();
-    method @NonNull public java.util.Set<java.util.Locale> getSupportedLocales();
-    method public boolean supportsLocale(@Nullable java.util.Locale);
-    method public boolean supportsPhrase(@Nullable String);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.soundtrigger.KeyphraseMetadata> CREATOR;
-  }
-
-  public class SoundTrigger {
-    field public static final int RECOGNITION_MODE_GENERIC = 8; // 0x8
-    field public static final int RECOGNITION_MODE_USER_AUTHENTICATION = 4; // 0x4
-    field public static final int RECOGNITION_MODE_USER_IDENTIFICATION = 2; // 0x2
-    field public static final int RECOGNITION_MODE_VOICE_TRIGGER = 1; // 0x1
-    field public static final int STATUS_OK = 0; // 0x0
-  }
-
-  public static final class SoundTrigger.Keyphrase implements android.os.Parcelable {
-    ctor public SoundTrigger.Keyphrase(int, int, @NonNull java.util.Locale, @NonNull String, @Nullable int[]);
-    method public int getId();
-    method @NonNull public java.util.Locale getLocale();
-    method public int getRecognitionModes();
-    method @NonNull public String getText();
-    method @NonNull public int[] getUsers();
-    method @NonNull public static android.hardware.soundtrigger.SoundTrigger.Keyphrase readFromParcel(@NonNull android.os.Parcel);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.soundtrigger.SoundTrigger.Keyphrase> CREATOR;
-  }
-
-  public static final class SoundTrigger.KeyphraseSoundModel extends android.hardware.soundtrigger.SoundTrigger.SoundModel implements android.os.Parcelable {
-    ctor public SoundTrigger.KeyphraseSoundModel(@NonNull java.util.UUID, @NonNull java.util.UUID, @Nullable byte[], @Nullable android.hardware.soundtrigger.SoundTrigger.Keyphrase[], int);
-    ctor public SoundTrigger.KeyphraseSoundModel(@NonNull java.util.UUID, @NonNull java.util.UUID, @Nullable byte[], @Nullable android.hardware.soundtrigger.SoundTrigger.Keyphrase[]);
-    method @NonNull public android.hardware.soundtrigger.SoundTrigger.Keyphrase[] getKeyphrases();
-    method @NonNull public static android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel readFromParcel(@NonNull android.os.Parcel);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel> CREATOR;
-  }
-
-  public static final class SoundTrigger.ModelParamRange implements android.os.Parcelable {
-    ctor public SoundTrigger.ModelParamRange(int, int);
-    method public int getEnd();
-    method public int getStart();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.soundtrigger.SoundTrigger.ModelParamRange> CREATOR;
-  }
-
-  public static final class SoundTrigger.ModuleProperties implements android.os.Parcelable {
-    ctor public SoundTrigger.ModuleProperties(int, @NonNull String, @NonNull String, @NonNull String, int, @NonNull String, int, int, int, int, boolean, int, boolean, int, boolean, int);
-    method public int describeContents();
-    method public int getAudioCapabilities();
-    method @NonNull public String getDescription();
-    method public int getId();
-    method @NonNull public String getImplementor();
-    method public int getMaxBufferMillis();
-    method public int getMaxKeyphrases();
-    method public int getMaxSoundModels();
-    method public int getMaxUsers();
-    method public int getPowerConsumptionMw();
-    method public int getRecognitionModes();
-    method @NonNull public String getSupportedModelArch();
-    method @NonNull public java.util.UUID getUuid();
-    method public int getVersion();
-    method public boolean isCaptureTransitionSupported();
-    method public boolean isConcurrentCaptureSupported();
-    method public boolean isTriggerReturnedInEvent();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int AUDIO_CAPABILITY_ECHO_CANCELLATION = 1; // 0x1
-    field public static final int AUDIO_CAPABILITY_NOISE_SUPPRESSION = 2; // 0x2
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.soundtrigger.SoundTrigger.ModuleProperties> CREATOR;
-  }
-
-  public static class SoundTrigger.RecognitionEvent {
-    ctor public SoundTrigger.RecognitionEvent(int, int, boolean, int, int, int, boolean, @NonNull android.media.AudioFormat, @Nullable byte[]);
-    method @Nullable public android.media.AudioFormat getCaptureFormat();
-    method public int getCaptureSession();
-    method public byte[] getData();
-    method public boolean isCaptureAvailable();
-  }
-
-  public static class SoundTrigger.SoundModel {
-    method @NonNull public byte[] getData();
-    method public int getType();
-    method @NonNull public java.util.UUID getUuid();
-    method @NonNull public java.util.UUID getVendorUuid();
-    method public int getVersion();
-    field public static final int TYPE_GENERIC_SOUND = 1; // 0x1
-    field public static final int TYPE_KEYPHRASE = 0; // 0x0
-  }
-
-}
-
-package android.location {
-
-  public final class GnssClock implements android.os.Parcelable {
-    ctor public GnssClock();
-    method public void reset();
-    method public void resetBiasNanos();
-    method public void resetBiasUncertaintyNanos();
-    method public void resetDriftNanosPerSecond();
-    method public void resetDriftUncertaintyNanosPerSecond();
-    method public void resetElapsedRealtimeNanos();
-    method public void resetElapsedRealtimeUncertaintyNanos();
-    method public void resetFullBiasNanos();
-    method public void resetLeapSecond();
-    method public void resetReferenceCarrierFrequencyHzForIsb();
-    method public void resetReferenceCodeTypeForIsb();
-    method public void resetReferenceConstellationTypeForIsb();
-    method public void resetTimeUncertaintyNanos();
-    method public void set(android.location.GnssClock);
-    method public void setBiasNanos(double);
-    method public void setBiasUncertaintyNanos(@FloatRange(from=0.0f) double);
-    method public void setDriftNanosPerSecond(double);
-    method public void setDriftUncertaintyNanosPerSecond(@FloatRange(from=0.0f) double);
-    method public void setElapsedRealtimeNanos(long);
-    method public void setElapsedRealtimeUncertaintyNanos(@FloatRange(from=0.0f) double);
-    method public void setFullBiasNanos(long);
-    method public void setHardwareClockDiscontinuityCount(int);
-    method public void setLeapSecond(int);
-    method public void setReferenceCarrierFrequencyHzForIsb(@FloatRange(from=0.0) double);
-    method public void setReferenceCodeTypeForIsb(@NonNull String);
-    method public void setReferenceConstellationTypeForIsb(int);
-    method public void setTimeNanos(long);
-    method public void setTimeUncertaintyNanos(@FloatRange(from=0.0f) double);
-  }
-
-  public final class GnssMeasurement implements android.os.Parcelable {
-    ctor public GnssMeasurement();
-    method public void reset();
-    method public void resetAutomaticGainControlLevel();
-    method public void resetBasebandCn0DbHz();
-    method @Deprecated public void resetCarrierCycles();
-    method public void resetCarrierFrequencyHz();
-    method @Deprecated public void resetCarrierPhase();
-    method @Deprecated public void resetCarrierPhaseUncertainty();
-    method public void resetCodeType();
-    method public void resetFullInterSignalBiasNanos();
-    method public void resetFullInterSignalBiasUncertaintyNanos();
-    method public void resetSatelliteInterSignalBiasNanos();
-    method public void resetSatelliteInterSignalBiasUncertaintyNanos();
-    method public void resetSnrInDb();
-    method public void set(android.location.GnssMeasurement);
-    method public void setAccumulatedDeltaRangeMeters(double);
-    method public void setAccumulatedDeltaRangeState(int);
-    method public void setAccumulatedDeltaRangeUncertaintyMeters(double);
-    method public void setAutomaticGainControlLevelInDb(double);
-    method public void setBasebandCn0DbHz(double);
-    method @Deprecated public void setCarrierCycles(long);
-    method public void setCarrierFrequencyHz(float);
-    method @Deprecated public void setCarrierPhase(double);
-    method @Deprecated public void setCarrierPhaseUncertainty(double);
-    method public void setCn0DbHz(double);
-    method public void setCodeType(@NonNull String);
-    method public void setConstellationType(int);
-    method public void setFullInterSignalBiasNanos(double);
-    method public void setFullInterSignalBiasUncertaintyNanos(@FloatRange(from=0.0) double);
-    method public void setMultipathIndicator(int);
-    method public void setPseudorangeRateMetersPerSecond(double);
-    method public void setPseudorangeRateUncertaintyMetersPerSecond(double);
-    method public void setReceivedSvTimeNanos(long);
-    method public void setReceivedSvTimeUncertaintyNanos(long);
-    method public void setSatelliteInterSignalBiasNanos(double);
-    method public void setSatelliteInterSignalBiasUncertaintyNanos(@FloatRange(from=0.0) double);
-    method public void setSnrInDb(double);
-    method public void setState(int);
-    method public void setSvid(int);
-    method public void setTimeOffsetNanos(double);
-    field public static final int ADR_STATE_ALL = 31; // 0x1f
-  }
-
-  public final class GnssMeasurementsEvent implements android.os.Parcelable {
-    ctor public GnssMeasurementsEvent(android.location.GnssClock, android.location.GnssMeasurement[]);
-  }
-
-  public final class GnssNavigationMessage implements android.os.Parcelable {
-    ctor public GnssNavigationMessage();
-    method public void reset();
-    method public void set(android.location.GnssNavigationMessage);
-    method public void setData(byte[]);
-    method public void setMessageId(int);
-    method public void setStatus(int);
-    method public void setSubmessageId(int);
-    method public void setSvid(int);
-    method public void setType(int);
-  }
-
-  public class Location implements android.os.Parcelable {
-    method public void makeComplete();
-    field @Deprecated public static final String EXTRA_NO_GPS_LOCATION = "noGPSLocation";
-  }
-
-  public class LocationManager {
-    method @NonNull public String[] getBackgroundThrottlingWhitelist();
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void getCurrentLocation(@NonNull android.location.LocationRequest, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.location.Location>);
-    method @NonNull public String[] getIgnoreSettingsWhitelist();
-    method @Nullable @RequiresPermission("android.permission.READ_DEVICE_CONFIG") public java.util.List<java.lang.String> getProviderPackages(@NonNull String);
-    method @NonNull public java.util.List<android.location.LocationRequest> getTestProviderCurrentRequests(String);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@Nullable android.location.LocationRequest, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@Nullable android.location.LocationRequest, @NonNull java.util.concurrent.Executor, @NonNull android.location.LocationListener);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@Nullable android.location.LocationRequest, @NonNull android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void setLocationEnabledForUser(boolean, @NonNull android.os.UserHandle);
-    field public static final String FUSED_PROVIDER = "fused";
-  }
-
-  public final class LocationRequest implements android.os.Parcelable {
-    method @NonNull public static android.location.LocationRequest create();
-    method public int describeContents();
-    method @Deprecated public long getExpireAt();
-    method public long getExpireIn();
-    method public long getFastestInterval();
-    method public long getInterval();
-    method public int getNumUpdates();
-    method public int getQuality();
-    method public boolean isLocationSettingsIgnored();
-    method public boolean isLowPowerMode();
-    method @Deprecated @NonNull public android.location.LocationRequest setExpireAt(long);
-    method @NonNull public android.location.LocationRequest setExpireIn(long);
-    method @NonNull public android.location.LocationRequest setFastestInterval(long);
-    method @NonNull public android.location.LocationRequest setInterval(long);
-    method @NonNull @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public android.location.LocationRequest setLocationSettingsIgnored(boolean);
-    method @NonNull public android.location.LocationRequest setLowPowerMode(boolean);
-    method @NonNull public android.location.LocationRequest setNumUpdates(int);
-    method @NonNull public android.location.LocationRequest setProvider(@NonNull String);
-    method @NonNull public android.location.LocationRequest setQuality(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ACCURACY_BLOCK = 102; // 0x66
-    field public static final int ACCURACY_CITY = 104; // 0x68
-    field public static final int ACCURACY_FINE = 100; // 0x64
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.LocationRequest> CREATOR;
-    field public static final int POWER_HIGH = 203; // 0xcb
-    field public static final int POWER_LOW = 201; // 0xc9
-    field public static final int POWER_NONE = 200; // 0xc8
-  }
-
-}
-
-package android.media {
-
-  public final class AudioFocusInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.media.AudioAttributes getAttributes();
-    method @NonNull public String getClientId();
-    method public int getClientUid();
-    method public int getFlags();
-    method public int getGainRequest();
-    method public int getLossReceived();
-    method @NonNull public String getPackageName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.AudioFocusInfo> CREATOR;
-  }
-
-  public final class AudioFocusRequest {
-    method @Nullable public android.media.AudioManager.OnAudioFocusChangeListener getOnAudioFocusChangeListener();
-  }
-
-  public final class AudioFormat implements android.os.Parcelable {
-    method public static int channelCountFromInChannelMask(int);
-    method public static int channelCountFromOutChannelMask(int);
-    method public static int getBytesPerSample(int);
-    method public static boolean isEncodingLinearPcm(int);
-  }
-
-  public class AudioManager {
-    method @RequiresPermission("android.permission.MODIFY_AUDIO_ROUTING") public int dispatchAudioFocusChange(@NonNull android.media.AudioFocusInfo, int, @NonNull android.media.audiopolicy.AudioPolicy);
-    method public boolean hasRegisteredDynamicPolicy();
-    method @RequiresPermission("android.permission.MODIFY_AUDIO_ROUTING") public int registerAudioPolicy(@NonNull android.media.audiopolicy.AudioPolicy);
-    method @RequiresPermission("android.permission.MODIFY_AUDIO_ROUTING") public void setFocusRequestResult(@NonNull android.media.AudioFocusInfo, int, @NonNull android.media.audiopolicy.AudioPolicy);
-    method @RequiresPermission("android.permission.MODIFY_AUDIO_ROUTING") public void unregisterAudioPolicy(@NonNull android.media.audiopolicy.AudioPolicy);
-    method @RequiresPermission("android.permission.MODIFY_AUDIO_ROUTING") public void unregisterAudioPolicyAsync(@NonNull android.media.audiopolicy.AudioPolicy);
-    field public static final int SUCCESS = 0; // 0x0
-  }
-
-  public static final class AudioRecord.MetricsConstants {
-    field public static final String ATTRIBUTES = "android.media.audiorecord.attributes";
-    field public static final String CHANNEL_MASK = "android.media.audiorecord.channelMask";
-    field public static final String DURATION_MS = "android.media.audiorecord.durationMs";
-    field public static final String FRAME_COUNT = "android.media.audiorecord.frameCount";
-    field public static final String PORT_ID = "android.media.audiorecord.portId";
-    field public static final String START_COUNT = "android.media.audiorecord.startCount";
-  }
-
-  public final class AudioRecordingConfiguration implements android.os.Parcelable {
-    ctor public AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]);
-    ctor public AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String);
-  }
-
-  public class AudioSystem {
-    method public static float getMasterBalance();
-    method public static final int getNumStreamTypes();
-    method public static int setMasterBalance(float);
-    field public static final int STREAM_DEFAULT = -1; // 0xffffffff
-  }
-
-  public static final class AudioTrack.MetricsConstants {
-    field public static final String ATTRIBUTES = "android.media.audiotrack.attributes";
-    field public static final String CHANNEL_MASK = "android.media.audiotrack.channelMask";
-    field public static final String ENCODING = "android.media.audiotrack.encoding";
-    field public static final String FRAME_COUNT = "android.media.audiotrack.frameCount";
-    field public static final String PORT_ID = "android.media.audiotrack.portId";
-    field public static final String SAMPLE_RATE = "android.media.audiotrack.sampleRate";
-  }
-
-  public final class MediaCas implements java.lang.AutoCloseable {
-    method public void forceResourceLost();
-  }
-
-  public static final class MediaCodecInfo.VideoCapabilities.PerformancePoint {
-    ctor public MediaCodecInfo.VideoCapabilities.PerformancePoint(int, int, int, int, @NonNull android.util.Size);
-    ctor public MediaCodecInfo.VideoCapabilities.PerformancePoint(@NonNull android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint, @NonNull android.util.Size);
-    method public int getMaxFrameRate();
-    method public long getMaxMacroBlockRate();
-    method public int getMaxMacroBlocks();
-  }
-
-  public final class MediaRoute2Info implements android.os.Parcelable {
-    method @NonNull public String getOriginalId();
-  }
-
-  public class MediaRouter2.RoutingController {
-    method @NonNull public String getOriginalId();
-  }
-
-  public final class PlaybackParams implements android.os.Parcelable {
-    method public int getAudioStretchMode();
-    method public android.media.PlaybackParams setAudioStretchMode(int);
-  }
-
-  public static final class VolumeShaper.Configuration.Builder {
-    method @NonNull public android.media.VolumeShaper.Configuration.Builder setOptionFlags(int);
-  }
-
-}
-
-package android.media.audiofx {
-
-  public class AudioEffect {
-    method public static int byteArrayToInt(byte[]);
-    method public static short byteArrayToShort(byte[]);
-    method public int getParameter(byte[], byte[]) throws java.lang.IllegalStateException;
-    method public int getParameter(int, byte[]) throws java.lang.IllegalStateException;
-    method public int getParameter(int, int[]) throws java.lang.IllegalStateException;
-    method public int getParameter(int, short[]) throws java.lang.IllegalStateException;
-    method public int getParameter(int[], short[]) throws java.lang.IllegalStateException;
-    method public static byte[] intToByteArray(int);
-    method public static boolean isEffectTypeAvailable(java.util.UUID);
-    method public static boolean isError(int);
-    method public int setParameter(byte[], byte[]) throws java.lang.IllegalStateException;
-    method public int setParameter(int, int) throws java.lang.IllegalStateException;
-    method public int setParameter(int, short) throws java.lang.IllegalStateException;
-    method public int setParameter(int, byte[]) throws java.lang.IllegalStateException;
-    method public int setParameter(int[], int[]) throws java.lang.IllegalStateException;
-    method public int setParameter(int[], byte[]) throws java.lang.IllegalStateException;
-    method public void setParameterListener(android.media.audiofx.AudioEffect.OnParameterChangeListener);
-    method public static byte[] shortToByteArray(short);
-    field public static final java.util.UUID EFFECT_TYPE_NULL;
-  }
-
-  public static class AudioEffect.Descriptor {
-    ctor public AudioEffect.Descriptor(android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel);
-  }
-
-  public static interface AudioEffect.OnParameterChangeListener {
-    method public void onParameterChange(android.media.audiofx.AudioEffect, int, byte[], byte[]);
-  }
-
-}
-
-package android.media.audiopolicy {
-
-  public class AudioMix {
-    method public int getMixState();
-    field public static final int MIX_STATE_DISABLED = -1; // 0xffffffff
-    field public static final int MIX_STATE_IDLE = 0; // 0x0
-    field public static final int MIX_STATE_MIXING = 1; // 0x1
-    field public static final int ROUTE_FLAG_LOOP_BACK = 2; // 0x2
-    field public static final int ROUTE_FLAG_RENDER = 1; // 0x1
-  }
-
-  public static class AudioMix.Builder {
-    ctor public AudioMix.Builder(android.media.audiopolicy.AudioMixingRule) throws java.lang.IllegalArgumentException;
-    method public android.media.audiopolicy.AudioMix build() throws java.lang.IllegalArgumentException;
-    method public android.media.audiopolicy.AudioMix.Builder setDevice(@NonNull android.media.AudioDeviceInfo) throws java.lang.IllegalArgumentException;
-    method public android.media.audiopolicy.AudioMix.Builder setFormat(android.media.AudioFormat) throws java.lang.IllegalArgumentException;
-    method public android.media.audiopolicy.AudioMix.Builder setRouteFlags(int) throws java.lang.IllegalArgumentException;
-  }
-
-  public class AudioMixingRule {
-    field public static final int RULE_MATCH_ATTRIBUTE_CAPTURE_PRESET = 2; // 0x2
-    field public static final int RULE_MATCH_ATTRIBUTE_USAGE = 1; // 0x1
-    field public static final int RULE_MATCH_UID = 4; // 0x4
-    field public static final int RULE_MATCH_USERID = 8; // 0x8
-  }
-
-  public static class AudioMixingRule.Builder {
-    ctor public AudioMixingRule.Builder();
-    method public android.media.audiopolicy.AudioMixingRule.Builder addMixRule(int, Object) throws java.lang.IllegalArgumentException;
-    method public android.media.audiopolicy.AudioMixingRule.Builder addRule(android.media.AudioAttributes, int) throws java.lang.IllegalArgumentException;
-    method @NonNull public android.media.audiopolicy.AudioMixingRule.Builder allowPrivilegedPlaybackCapture(boolean);
-    method public android.media.audiopolicy.AudioMixingRule build();
-    method public android.media.audiopolicy.AudioMixingRule.Builder excludeMixRule(int, Object) throws java.lang.IllegalArgumentException;
-    method public android.media.audiopolicy.AudioMixingRule.Builder excludeRule(android.media.AudioAttributes, int) throws java.lang.IllegalArgumentException;
-  }
-
-  public class AudioPolicy {
-    method public int attachMixes(@NonNull java.util.List<android.media.audiopolicy.AudioMix>);
-    method public android.media.AudioRecord createAudioRecordSink(android.media.audiopolicy.AudioMix) throws java.lang.IllegalArgumentException;
-    method public android.media.AudioTrack createAudioTrackSource(android.media.audiopolicy.AudioMix) throws java.lang.IllegalArgumentException;
-    method public int detachMixes(@NonNull java.util.List<android.media.audiopolicy.AudioMix>);
-    method public int getFocusDuckingBehavior();
-    method public int getStatus();
-    method public boolean removeUidDeviceAffinity(int);
-    method public boolean removeUserIdDeviceAffinity(int);
-    method public int setFocusDuckingBehavior(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void setRegistration(String);
-    method public boolean setUidDeviceAffinity(int, @NonNull java.util.List<android.media.AudioDeviceInfo>);
-    method public boolean setUserIdDeviceAffinity(int, @NonNull java.util.List<android.media.AudioDeviceInfo>);
-    method public String toLogFriendlyString();
-    field public static final int FOCUS_POLICY_DUCKING_DEFAULT = 0; // 0x0
-    field public static final int FOCUS_POLICY_DUCKING_IN_APP = 0; // 0x0
-    field public static final int FOCUS_POLICY_DUCKING_IN_POLICY = 1; // 0x1
-    field public static final int POLICY_STATUS_REGISTERED = 2; // 0x2
-    field public static final int POLICY_STATUS_UNREGISTERED = 1; // 0x1
-  }
-
-  public abstract static class AudioPolicy.AudioPolicyFocusListener {
-    ctor public AudioPolicy.AudioPolicyFocusListener();
-    method public void onAudioFocusAbandon(android.media.AudioFocusInfo);
-    method public void onAudioFocusGrant(android.media.AudioFocusInfo, int);
-    method public void onAudioFocusLoss(android.media.AudioFocusInfo, boolean);
-    method public void onAudioFocusRequest(android.media.AudioFocusInfo, int);
-  }
-
-  public abstract static class AudioPolicy.AudioPolicyStatusListener {
-    ctor public AudioPolicy.AudioPolicyStatusListener();
-    method public void onMixStateUpdate(android.media.audiopolicy.AudioMix);
-    method public void onStatusChange();
-  }
-
-  public abstract static class AudioPolicy.AudioPolicyVolumeCallback {
-    ctor public AudioPolicy.AudioPolicyVolumeCallback();
-    method public void onVolumeAdjustment(int);
-  }
-
-  public static class AudioPolicy.Builder {
-    ctor public AudioPolicy.Builder(android.content.Context);
-    method @NonNull public android.media.audiopolicy.AudioPolicy.Builder addMix(@NonNull android.media.audiopolicy.AudioMix) throws java.lang.IllegalArgumentException;
-    method @NonNull public android.media.audiopolicy.AudioPolicy build();
-    method public void setAudioPolicyFocusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyFocusListener);
-    method public void setAudioPolicyStatusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyStatusListener);
-    method @NonNull public android.media.audiopolicy.AudioPolicy.Builder setAudioPolicyVolumeCallback(@NonNull android.media.audiopolicy.AudioPolicy.AudioPolicyVolumeCallback);
-    method @NonNull public android.media.audiopolicy.AudioPolicy.Builder setIsAudioFocusPolicy(boolean);
-    method @NonNull public android.media.audiopolicy.AudioPolicy.Builder setIsTestFocusPolicy(boolean);
-    method @NonNull public android.media.audiopolicy.AudioPolicy.Builder setLooper(@NonNull android.os.Looper) throws java.lang.IllegalArgumentException;
-  }
-
-}
-
-package android.media.tv {
-
-  public final class TvInputManager {
-    method public void addHardwareDevice(int);
-    method public void removeHardwareDevice(int);
-  }
-
-}
-
-package android.metrics {
-
-  public class LogMaker {
-    ctor public LogMaker(int);
-    ctor public LogMaker(Object[]);
-    method public android.metrics.LogMaker addTaggedData(int, Object);
-    method public android.metrics.LogMaker clearCategory();
-    method public android.metrics.LogMaker clearPackageName();
-    method public android.metrics.LogMaker clearSubtype();
-    method public android.metrics.LogMaker clearTaggedData(int);
-    method public android.metrics.LogMaker clearType();
-    method public void deserialize(Object[]);
-    method public int getCategory();
-    method public long getCounterBucket();
-    method public String getCounterName();
-    method public int getCounterValue();
-    method public String getPackageName();
-    method public int getProcessId();
-    method public int getSubtype();
-    method public Object getTaggedData(int);
-    method public long getTimestamp();
-    method public int getType();
-    method public int getUid();
-    method public boolean isLongCounterBucket();
-    method public boolean isSubsetOf(android.metrics.LogMaker);
-    method public boolean isValidValue(Object);
-    method public Object[] serialize();
-    method public android.metrics.LogMaker setCategory(int);
-    method public android.metrics.LogMaker setPackageName(String);
-    method public android.metrics.LogMaker setSubtype(int);
-    method public android.metrics.LogMaker setType(int);
-  }
-
-  public class MetricsReader {
-    ctor public MetricsReader();
-    method public void checkpoint();
-    method public boolean hasNext();
-    method public android.metrics.LogMaker next();
-    method public void read(long);
-    method public void reset();
-  }
-
-}
-
-package android.net {
-
-  public class CaptivePortal implements android.os.Parcelable {
-    method public void logEvent(int, @NonNull String);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_STACK) public void reevaluateNetwork();
-    method public void useNetwork();
-    field public static final int APP_REQUEST_REEVALUATION_REQUIRED = 100; // 0x64
-    field public static final int APP_RETURN_DISMISSED = 0; // 0x0
-    field public static final int APP_RETURN_UNWANTED = 1; // 0x1
-    field public static final int APP_RETURN_WANTED_AS_IS = 2; // 0x2
-  }
-
-  public final class CaptivePortalData implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getByteLimit();
-    method public long getExpiryTimeMillis();
-    method public long getRefreshTimeMillis();
-    method @Nullable public android.net.Uri getUserPortalUrl();
-    method @Nullable public android.net.Uri getVenueInfoUrl();
-    method public boolean isCaptive();
-    method public boolean isSessionExtendable();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.CaptivePortalData> CREATOR;
-  }
-
-  public static class CaptivePortalData.Builder {
-    ctor public CaptivePortalData.Builder();
-    ctor public CaptivePortalData.Builder(@Nullable android.net.CaptivePortalData);
-    method @NonNull public android.net.CaptivePortalData build();
-    method @NonNull public android.net.CaptivePortalData.Builder setBytesRemaining(long);
-    method @NonNull public android.net.CaptivePortalData.Builder setCaptive(boolean);
-    method @NonNull public android.net.CaptivePortalData.Builder setExpiryTime(long);
-    method @NonNull public android.net.CaptivePortalData.Builder setRefreshTime(long);
-    method @NonNull public android.net.CaptivePortalData.Builder setSessionExtendable(boolean);
-    method @NonNull public android.net.CaptivePortalData.Builder setUserPortalUrl(@Nullable android.net.Uri);
-    method @NonNull public android.net.CaptivePortalData.Builder setVenueInfoUrl(@Nullable android.net.Uri);
-  }
-
-  public class ConnectivityManager {
-    method @RequiresPermission(anyOf={"android.permission.MANAGE_TEST_NETWORKS", android.Manifest.permission.NETWORK_STACK}) public void simulateDataStall(int, long, @NonNull android.net.Network, @NonNull android.os.PersistableBundle);
-    method @RequiresPermission(android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK) public void startCaptivePortalApp(@NonNull android.net.Network, @NonNull android.os.Bundle);
-    field public static final String EXTRA_CAPTIVE_PORTAL_PROBE_SPEC = "android.net.extra.CAPTIVE_PORTAL_PROBE_SPEC";
-    field public static final String EXTRA_CAPTIVE_PORTAL_USER_AGENT = "android.net.extra.CAPTIVE_PORTAL_USER_AGENT";
-  }
-
-  public class EthernetManager {
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public android.net.EthernetManager.TetheredInterfaceRequest requestTetheredInterface(@NonNull java.util.concurrent.Executor, @NonNull android.net.EthernetManager.TetheredInterfaceCallback);
-    method public void setIncludeTestInterfaces(boolean);
-  }
-
-  public static interface EthernetManager.TetheredInterfaceCallback {
-    method public void onAvailable(@NonNull String);
-    method public void onUnavailable();
-  }
-
-  public static class EthernetManager.TetheredInterfaceRequest {
-    method public void release();
-  }
-
-  public final class IpPrefix implements android.os.Parcelable {
-    ctor public IpPrefix(@NonNull java.net.InetAddress, @IntRange(from=0, to=128) int);
-    ctor public IpPrefix(@NonNull String);
-  }
-
-  public final class IpSecManager {
-    field public static final int INVALID_SECURITY_PARAMETER_INDEX = 0; // 0x0
-  }
-
-  public class LinkAddress implements android.os.Parcelable {
-    ctor public LinkAddress(@NonNull java.net.InetAddress, @IntRange(from=0, to=128) int, int, int);
-    ctor public LinkAddress(@NonNull java.net.InetAddress, @IntRange(from=0, to=128) int, int, int, long, long);
-    ctor public LinkAddress(@NonNull java.net.InetAddress, @IntRange(from=0, to=128) int);
-    ctor public LinkAddress(@NonNull String);
-    ctor public LinkAddress(@NonNull String, int, int);
-    method public long getDeprecationTime();
-    method public long getExpirationTime();
-    method public boolean isGlobalPreferred();
-    method public boolean isIpv4();
-    method public boolean isIpv6();
-    method public boolean isSameAddressAs(@Nullable android.net.LinkAddress);
-  }
-
-  public final class LinkProperties implements android.os.Parcelable {
-    ctor public LinkProperties(@Nullable android.net.LinkProperties);
-    ctor public LinkProperties(@Nullable android.net.LinkProperties, boolean);
-    method public boolean addDnsServer(@NonNull java.net.InetAddress);
-    method public boolean addLinkAddress(@NonNull android.net.LinkAddress);
-    method @Nullable public android.net.Uri getCaptivePortalApiUrl();
-    method @Nullable public android.net.CaptivePortalData getCaptivePortalData();
-    method @NonNull public java.util.List<java.net.InetAddress> getPcscfServers();
-    method @Nullable public String getTcpBufferSizes();
-    method @NonNull public java.util.List<java.net.InetAddress> getValidatedPrivateDnsServers();
-    method public boolean hasGlobalIpv6Address();
-    method public boolean hasIpv4Address();
-    method public boolean hasIpv6DefaultRoute();
-    method public boolean isIpv4Provisioned();
-    method public boolean isIpv6Provisioned();
-    method public boolean isProvisioned();
-    method public boolean isReachable(@NonNull java.net.InetAddress);
-    method public boolean removeDnsServer(@NonNull java.net.InetAddress);
-    method public boolean removeLinkAddress(@NonNull android.net.LinkAddress);
-    method public boolean removeRoute(@NonNull android.net.RouteInfo);
-    method public void setCaptivePortalApiUrl(@Nullable android.net.Uri);
-    method public void setCaptivePortalData(@Nullable android.net.CaptivePortalData);
-    method public void setPcscfServers(@NonNull java.util.Collection<java.net.InetAddress>);
-    method public void setPrivateDnsServerName(@Nullable String);
-    method public void setTcpBufferSizes(@Nullable String);
-    method public void setUsePrivateDns(boolean);
-    method public void setValidatedPrivateDnsServers(@NonNull java.util.Collection<java.net.InetAddress>);
-  }
-
-  public class Network implements android.os.Parcelable {
-    ctor public Network(@NonNull android.net.Network);
-    method public int getNetId();
-    method @NonNull public android.net.Network getPrivateDnsBypassingCopy();
-  }
-
-  public final class NetworkCapabilities implements android.os.Parcelable {
-    method @NonNull public int[] getAdministratorUids();
-    method public int[] getCapabilities();
-    method @Nullable public String getSsid();
-    method @NonNull public int[] getTransportTypes();
-    method public boolean satisfiedByNetworkCapabilities(@Nullable android.net.NetworkCapabilities);
-    field public static final int TRANSPORT_TEST = 7; // 0x7
-  }
-
-  public static final class NetworkCapabilities.Builder {
-    ctor public NetworkCapabilities.Builder();
-    ctor public NetworkCapabilities.Builder(@NonNull android.net.NetworkCapabilities);
-    method @NonNull public android.net.NetworkCapabilities.Builder addCapability(int);
-    method @NonNull public android.net.NetworkCapabilities.Builder addTransportType(int);
-    method @NonNull public android.net.NetworkCapabilities build();
-    method @NonNull public android.net.NetworkCapabilities.Builder removeCapability(int);
-    method @NonNull public android.net.NetworkCapabilities.Builder removeTransportType(int);
-    method @NonNull @RequiresPermission("android.permission.NETWORK_FACTORY") public android.net.NetworkCapabilities.Builder setAdministratorUids(@NonNull int[]);
-    method @NonNull public android.net.NetworkCapabilities.Builder setLinkDownstreamBandwidthKbps(int);
-    method @NonNull public android.net.NetworkCapabilities.Builder setLinkUpstreamBandwidthKbps(int);
-    method @NonNull public android.net.NetworkCapabilities.Builder setNetworkSpecifier(@Nullable android.net.NetworkSpecifier);
-    method @NonNull @RequiresPermission("android.permission.NETWORK_FACTORY") public android.net.NetworkCapabilities.Builder setOwnerUid(int);
-    method @NonNull @RequiresPermission("android.permission.NETWORK_FACTORY") public android.net.NetworkCapabilities.Builder setRequestorPackageName(@Nullable String);
-    method @NonNull @RequiresPermission("android.permission.NETWORK_FACTORY") public android.net.NetworkCapabilities.Builder setRequestorUid(int);
-    method @NonNull @RequiresPermission("android.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP") public android.net.NetworkCapabilities.Builder setSignalStrength(int);
-    method @NonNull @RequiresPermission("android.permission.NETWORK_FACTORY") public android.net.NetworkCapabilities.Builder setSsid(@Nullable String);
-    method @NonNull public android.net.NetworkCapabilities.Builder setTransportInfo(@Nullable android.net.TransportInfo);
-  }
-
-  public class NetworkStack {
-    method @Nullable public static android.os.IBinder getService();
-    method public static void setServiceForTest(@Nullable android.os.IBinder);
-    field public static final String PERMISSION_MAINLINE_NETWORK_STACK = "android.permission.MAINLINE_NETWORK_STACK";
-  }
-
-  public final class RouteInfo implements android.os.Parcelable {
-    ctor public RouteInfo(@Nullable android.net.IpPrefix, @Nullable java.net.InetAddress, @Nullable String, int);
-    method public int getType();
-    field public static final int RTN_THROW = 9; // 0x9
-    field public static final int RTN_UNICAST = 1; // 0x1
-    field public static final int RTN_UNREACHABLE = 7; // 0x7
-  }
-
-  public final class StaticIpConfiguration implements android.os.Parcelable {
-    ctor public StaticIpConfiguration();
-    ctor public StaticIpConfiguration(@Nullable android.net.StaticIpConfiguration);
-    method public void addDnsServer(@NonNull java.net.InetAddress);
-    method public void clear();
-    method public int describeContents();
-    method @NonNull public java.util.List<java.net.InetAddress> getDnsServers();
-    method @Nullable public String getDomains();
-    method @Nullable public java.net.InetAddress getGateway();
-    method @Nullable public android.net.LinkAddress getIpAddress();
-    method @NonNull public java.util.List<android.net.RouteInfo> getRoutes(@Nullable String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.StaticIpConfiguration> CREATOR;
-  }
-
-  public static final class StaticIpConfiguration.Builder {
-    ctor public StaticIpConfiguration.Builder();
-    method @NonNull public android.net.StaticIpConfiguration build();
-    method @NonNull public android.net.StaticIpConfiguration.Builder setDnsServers(@NonNull Iterable<java.net.InetAddress>);
-    method @NonNull public android.net.StaticIpConfiguration.Builder setDomains(@Nullable String);
-    method @NonNull public android.net.StaticIpConfiguration.Builder setGateway(@Nullable java.net.InetAddress);
-    method @NonNull public android.net.StaticIpConfiguration.Builder setIpAddress(@Nullable android.net.LinkAddress);
-  }
-
-  public final class TestNetworkInterface implements android.os.Parcelable {
-    ctor public TestNetworkInterface(android.os.ParcelFileDescriptor, String);
-    method public int describeContents();
-    method public android.os.ParcelFileDescriptor getFileDescriptor();
-    method public String getInterfaceName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.net.TestNetworkInterface> CREATOR;
-  }
-
-  public class TestNetworkManager {
-    method public android.net.TestNetworkInterface createTapInterface();
-    method public android.net.TestNetworkInterface createTunInterface(@NonNull android.net.LinkAddress[]);
-    method public void setupTestNetwork(@NonNull String, @NonNull android.os.IBinder);
-    method public void teardownTestNetwork(@NonNull android.net.Network);
-  }
-
-  public final class TetheredClient implements android.os.Parcelable {
-    ctor public TetheredClient(@NonNull android.net.MacAddress, @NonNull java.util.Collection<android.net.TetheredClient.AddressInfo>, int);
-    method public int describeContents();
-    method @NonNull public java.util.List<android.net.TetheredClient.AddressInfo> getAddresses();
-    method @NonNull public android.net.MacAddress getMacAddress();
-    method public int getTetheringType();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.TetheredClient> CREATOR;
-  }
-
-  public static final class TetheredClient.AddressInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.net.LinkAddress getAddress();
-    method @Nullable public String getHostname();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.TetheredClient.AddressInfo> CREATOR;
-  }
-
-  public class TetheringManager {
-    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerTetheringEventCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.TetheringManager.TetheringEventCallback);
-    method @RequiresPermission(anyOf={"android.permission.TETHER_PRIVILEGED", android.Manifest.permission.WRITE_SETTINGS}) public void requestLatestTetheringEntitlementResult(int, boolean, @NonNull java.util.concurrent.Executor, @NonNull android.net.TetheringManager.OnTetheringEntitlementResultListener);
-    method @RequiresPermission(anyOf={"android.permission.TETHER_PRIVILEGED", android.Manifest.permission.WRITE_SETTINGS}) public void startTethering(@NonNull android.net.TetheringManager.TetheringRequest, @NonNull java.util.concurrent.Executor, @NonNull android.net.TetheringManager.StartTetheringCallback);
-    method @RequiresPermission(anyOf={"android.permission.TETHER_PRIVILEGED", android.Manifest.permission.WRITE_SETTINGS}) public void stopAllTethering();
-    method @RequiresPermission(anyOf={"android.permission.TETHER_PRIVILEGED", android.Manifest.permission.WRITE_SETTINGS}) public void stopTethering(int);
-    method @RequiresPermission(anyOf={"android.permission.TETHER_PRIVILEGED", android.Manifest.permission.ACCESS_NETWORK_STATE}) public void unregisterTetheringEventCallback(@NonNull android.net.TetheringManager.TetheringEventCallback);
-    field public static final String ACTION_TETHER_STATE_CHANGED = "android.net.conn.TETHER_STATE_CHANGED";
-    field public static final String EXTRA_ACTIVE_LOCAL_ONLY = "android.net.extra.ACTIVE_LOCAL_ONLY";
-    field public static final String EXTRA_ACTIVE_TETHER = "tetherArray";
-    field public static final String EXTRA_AVAILABLE_TETHER = "availableArray";
-    field public static final String EXTRA_ERRORED_TETHER = "erroredArray";
-    field public static final int TETHERING_BLUETOOTH = 2; // 0x2
-    field public static final int TETHERING_ETHERNET = 5; // 0x5
-    field public static final int TETHERING_INVALID = -1; // 0xffffffff
-    field public static final int TETHERING_NCM = 4; // 0x4
-    field public static final int TETHERING_USB = 1; // 0x1
-    field public static final int TETHERING_WIFI = 0; // 0x0
-    field public static final int TETHERING_WIFI_P2P = 3; // 0x3
-    field public static final int TETHER_ERROR_DHCPSERVER_ERROR = 12; // 0xc
-    field public static final int TETHER_ERROR_DISABLE_FORWARDING_ERROR = 9; // 0x9
-    field public static final int TETHER_ERROR_ENABLE_FORWARDING_ERROR = 8; // 0x8
-    field public static final int TETHER_ERROR_ENTITLEMENT_UNKNOWN = 13; // 0xd
-    field public static final int TETHER_ERROR_IFACE_CFG_ERROR = 10; // 0xa
-    field public static final int TETHER_ERROR_INTERNAL_ERROR = 5; // 0x5
-    field public static final int TETHER_ERROR_NO_ACCESS_TETHERING_PERMISSION = 15; // 0xf
-    field public static final int TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION = 14; // 0xe
-    field public static final int TETHER_ERROR_NO_ERROR = 0; // 0x0
-    field public static final int TETHER_ERROR_PROVISIONING_FAILED = 11; // 0xb
-    field public static final int TETHER_ERROR_SERVICE_UNAVAIL = 2; // 0x2
-    field public static final int TETHER_ERROR_TETHER_IFACE_ERROR = 6; // 0x6
-    field public static final int TETHER_ERROR_UNAVAIL_IFACE = 4; // 0x4
-    field public static final int TETHER_ERROR_UNKNOWN_IFACE = 1; // 0x1
-    field public static final int TETHER_ERROR_UNKNOWN_TYPE = 16; // 0x10
-    field public static final int TETHER_ERROR_UNSUPPORTED = 3; // 0x3
-    field public static final int TETHER_ERROR_UNTETHER_IFACE_ERROR = 7; // 0x7
-    field public static final int TETHER_HARDWARE_OFFLOAD_FAILED = 2; // 0x2
-    field public static final int TETHER_HARDWARE_OFFLOAD_STARTED = 1; // 0x1
-    field public static final int TETHER_HARDWARE_OFFLOAD_STOPPED = 0; // 0x0
-  }
-
-  public static interface TetheringManager.OnTetheringEntitlementResultListener {
-    method public void onTetheringEntitlementResult(int);
-  }
-
-  public static interface TetheringManager.StartTetheringCallback {
-    method public default void onTetheringFailed(int);
-    method public default void onTetheringStarted();
-  }
-
-  public static interface TetheringManager.TetheringEventCallback {
-    method public default void onClientsChanged(@NonNull java.util.Collection<android.net.TetheredClient>);
-    method public default void onError(@NonNull String, int);
-    method public default void onOffloadStatusChanged(int);
-    method public default void onTetherableInterfacesChanged(@NonNull java.util.List<java.lang.String>);
-    method public default void onTetheredInterfacesChanged(@NonNull java.util.List<java.lang.String>);
-    method public default void onTetheringSupported(boolean);
-    method public default void onUpstreamChanged(@Nullable android.net.Network);
-  }
-
-  public static class TetheringManager.TetheringRequest {
-    method @Nullable public android.net.LinkAddress getClientStaticIpv4Address();
-    method @Nullable public android.net.LinkAddress getLocalIpv4Address();
-    method public boolean getShouldShowEntitlementUi();
-    method public int getTetheringType();
-    method public boolean isExemptFromEntitlementCheck();
-  }
-
-  public static class TetheringManager.TetheringRequest.Builder {
-    ctor public TetheringManager.TetheringRequest.Builder(int);
-    method @NonNull public android.net.TetheringManager.TetheringRequest build();
-    method @NonNull @RequiresPermission("android.permission.TETHER_PRIVILEGED") public android.net.TetheringManager.TetheringRequest.Builder setExemptFromEntitlementCheck(boolean);
-    method @NonNull @RequiresPermission("android.permission.TETHER_PRIVILEGED") public android.net.TetheringManager.TetheringRequest.Builder setShouldShowEntitlementUi(boolean);
-    method @NonNull @RequiresPermission("android.permission.TETHER_PRIVILEGED") public android.net.TetheringManager.TetheringRequest.Builder setStaticIpv4Addresses(@NonNull android.net.LinkAddress, @NonNull android.net.LinkAddress);
-  }
-
-  public class TrafficStats {
-    method public static long getLoopbackRxBytes();
-    method public static long getLoopbackRxPackets();
-    method public static long getLoopbackTxBytes();
-    method public static long getLoopbackTxPackets();
-  }
-
-}
-
-package android.net.apf {
-
-  public final class ApfCapabilities implements android.os.Parcelable {
-    ctor public ApfCapabilities(int, int, int);
-    method public int describeContents();
-    method public static boolean getApfDrop8023Frames();
-    method @NonNull public static int[] getApfEtherTypeBlackList();
-    method public boolean hasDataAccess();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.net.apf.ApfCapabilities> CREATOR;
-    field public final int apfPacketFormat;
-    field public final int apfVersionSupported;
-    field public final int maximumApfProgramSize;
-  }
-
-}
-
-package android.net.metrics {
-
-  public final class ApfProgramEvent implements android.net.metrics.IpConnectivityLog.Event {
-  }
-
-  public static final class ApfProgramEvent.Builder {
-    ctor public ApfProgramEvent.Builder();
-    method @NonNull public android.net.metrics.ApfProgramEvent build();
-    method @NonNull public android.net.metrics.ApfProgramEvent.Builder setActualLifetime(long);
-    method @NonNull public android.net.metrics.ApfProgramEvent.Builder setCurrentRas(int);
-    method @NonNull public android.net.metrics.ApfProgramEvent.Builder setFilteredRas(int);
-    method @NonNull public android.net.metrics.ApfProgramEvent.Builder setFlags(boolean, boolean);
-    method @NonNull public android.net.metrics.ApfProgramEvent.Builder setLifetime(long);
-    method @NonNull public android.net.metrics.ApfProgramEvent.Builder setProgramLength(int);
-  }
-
-  public final class ApfStats implements android.net.metrics.IpConnectivityLog.Event {
-  }
-
-  public static final class ApfStats.Builder {
-    ctor public ApfStats.Builder();
-    method @NonNull public android.net.metrics.ApfStats build();
-    method @NonNull public android.net.metrics.ApfStats.Builder setDroppedRas(int);
-    method @NonNull public android.net.metrics.ApfStats.Builder setDurationMs(long);
-    method @NonNull public android.net.metrics.ApfStats.Builder setMatchingRas(int);
-    method @NonNull public android.net.metrics.ApfStats.Builder setMaxProgramSize(int);
-    method @NonNull public android.net.metrics.ApfStats.Builder setParseErrors(int);
-    method @NonNull public android.net.metrics.ApfStats.Builder setProgramUpdates(int);
-    method @NonNull public android.net.metrics.ApfStats.Builder setProgramUpdatesAll(int);
-    method @NonNull public android.net.metrics.ApfStats.Builder setProgramUpdatesAllowingMulticast(int);
-    method @NonNull public android.net.metrics.ApfStats.Builder setReceivedRas(int);
-    method @NonNull public android.net.metrics.ApfStats.Builder setZeroLifetimeRas(int);
-  }
-
-  public final class DhcpClientEvent implements android.net.metrics.IpConnectivityLog.Event {
-  }
-
-  public static final class DhcpClientEvent.Builder {
-    ctor public DhcpClientEvent.Builder();
-    method @NonNull public android.net.metrics.DhcpClientEvent build();
-    method @NonNull public android.net.metrics.DhcpClientEvent.Builder setDurationMs(int);
-    method @NonNull public android.net.metrics.DhcpClientEvent.Builder setMsg(String);
-  }
-
-  public final class DhcpErrorEvent implements android.net.metrics.IpConnectivityLog.Event {
-    ctor public DhcpErrorEvent(int);
-    method public static int errorCodeWithOption(int, int);
-    field public static final int BOOTP_TOO_SHORT = 67174400; // 0x4010000
-    field public static final int BUFFER_UNDERFLOW = 83951616; // 0x5010000
-    field public static final int DHCP_BAD_MAGIC_COOKIE = 67239936; // 0x4020000
-    field public static final int DHCP_ERROR = 4; // 0x4
-    field public static final int DHCP_INVALID_OPTION_LENGTH = 67305472; // 0x4030000
-    field public static final int DHCP_NO_COOKIE = 67502080; // 0x4060000
-    field public static final int DHCP_NO_MSG_TYPE = 67371008; // 0x4040000
-    field public static final int DHCP_UNKNOWN_MSG_TYPE = 67436544; // 0x4050000
-    field public static final int L2_ERROR = 1; // 0x1
-    field public static final int L2_TOO_SHORT = 16842752; // 0x1010000
-    field public static final int L2_WRONG_ETH_TYPE = 16908288; // 0x1020000
-    field public static final int L3_ERROR = 2; // 0x2
-    field public static final int L3_INVALID_IP = 33751040; // 0x2030000
-    field public static final int L3_NOT_IPV4 = 33685504; // 0x2020000
-    field public static final int L3_TOO_SHORT = 33619968; // 0x2010000
-    field public static final int L4_ERROR = 3; // 0x3
-    field public static final int L4_NOT_UDP = 50397184; // 0x3010000
-    field public static final int L4_WRONG_PORT = 50462720; // 0x3020000
-    field public static final int MISC_ERROR = 5; // 0x5
-    field public static final int PARSING_ERROR = 84082688; // 0x5030000
-    field public static final int RECEIVE_ERROR = 84017152; // 0x5020000
-  }
-
-  public class IpConnectivityLog {
-    ctor public IpConnectivityLog();
-    method public boolean log(long, @NonNull android.net.metrics.IpConnectivityLog.Event);
-    method public boolean log(@NonNull String, @NonNull android.net.metrics.IpConnectivityLog.Event);
-    method public boolean log(@NonNull android.net.Network, @NonNull int[], @NonNull android.net.metrics.IpConnectivityLog.Event);
-    method public boolean log(int, @NonNull int[], @NonNull android.net.metrics.IpConnectivityLog.Event);
-    method public boolean log(@NonNull android.net.metrics.IpConnectivityLog.Event);
-  }
-
-  public static interface IpConnectivityLog.Event extends android.os.Parcelable {
-  }
-
-  public final class IpManagerEvent implements android.net.metrics.IpConnectivityLog.Event {
-    ctor public IpManagerEvent(int, long);
-    field public static final int COMPLETE_LIFECYCLE = 3; // 0x3
-    field public static final int ERROR_INTERFACE_NOT_FOUND = 8; // 0x8
-    field public static final int ERROR_INVALID_PROVISIONING = 7; // 0x7
-    field public static final int ERROR_STARTING_IPREACHABILITYMONITOR = 6; // 0x6
-    field public static final int ERROR_STARTING_IPV4 = 4; // 0x4
-    field public static final int ERROR_STARTING_IPV6 = 5; // 0x5
-    field public static final int PROVISIONING_FAIL = 2; // 0x2
-    field public static final int PROVISIONING_OK = 1; // 0x1
-  }
-
-  public final class IpReachabilityEvent implements android.net.metrics.IpConnectivityLog.Event {
-    ctor public IpReachabilityEvent(int);
-    field public static final int NUD_FAILED = 512; // 0x200
-    field public static final int NUD_FAILED_ORGANIC = 1024; // 0x400
-    field public static final int PROBE = 256; // 0x100
-    field public static final int PROVISIONING_LOST = 768; // 0x300
-    field public static final int PROVISIONING_LOST_ORGANIC = 1280; // 0x500
-  }
-
-  public final class NetworkEvent implements android.net.metrics.IpConnectivityLog.Event {
-    ctor public NetworkEvent(int, long);
-    ctor public NetworkEvent(int);
-    field public static final int NETWORK_CAPTIVE_PORTAL_FOUND = 4; // 0x4
-    field public static final int NETWORK_CONNECTED = 1; // 0x1
-    field public static final int NETWORK_CONSECUTIVE_DNS_TIMEOUT_FOUND = 12; // 0xc
-    field public static final int NETWORK_DISCONNECTED = 7; // 0x7
-    field public static final int NETWORK_FIRST_VALIDATION_PORTAL_FOUND = 10; // 0xa
-    field public static final int NETWORK_FIRST_VALIDATION_SUCCESS = 8; // 0x8
-    field public static final int NETWORK_LINGER = 5; // 0x5
-    field public static final int NETWORK_PARTIAL_CONNECTIVITY = 13; // 0xd
-    field public static final int NETWORK_REVALIDATION_PORTAL_FOUND = 11; // 0xb
-    field public static final int NETWORK_REVALIDATION_SUCCESS = 9; // 0x9
-    field public static final int NETWORK_UNLINGER = 6; // 0x6
-    field public static final int NETWORK_VALIDATED = 2; // 0x2
-    field public static final int NETWORK_VALIDATION_FAILED = 3; // 0x3
-  }
-
-  public final class RaEvent implements android.net.metrics.IpConnectivityLog.Event {
-  }
-
-  public static final class RaEvent.Builder {
-    ctor public RaEvent.Builder();
-    method @NonNull public android.net.metrics.RaEvent build();
-    method @NonNull public android.net.metrics.RaEvent.Builder updateDnsslLifetime(long);
-    method @NonNull public android.net.metrics.RaEvent.Builder updatePrefixPreferredLifetime(long);
-    method @NonNull public android.net.metrics.RaEvent.Builder updatePrefixValidLifetime(long);
-    method @NonNull public android.net.metrics.RaEvent.Builder updateRdnssLifetime(long);
-    method @NonNull public android.net.metrics.RaEvent.Builder updateRouteInfoLifetime(long);
-    method @NonNull public android.net.metrics.RaEvent.Builder updateRouterLifetime(long);
-  }
-
-  public final class ValidationProbeEvent implements android.net.metrics.IpConnectivityLog.Event {
-    method @NonNull public static String getProbeName(int);
-    field public static final int DNS_FAILURE = 0; // 0x0
-    field public static final int DNS_SUCCESS = 1; // 0x1
-    field public static final int PROBE_DNS = 0; // 0x0
-    field public static final int PROBE_FALLBACK = 4; // 0x4
-    field public static final int PROBE_HTTP = 1; // 0x1
-    field public static final int PROBE_HTTPS = 2; // 0x2
-    field public static final int PROBE_PAC = 3; // 0x3
-    field public static final int PROBE_PRIVDNS = 5; // 0x5
-  }
-
-  public static final class ValidationProbeEvent.Builder {
-    ctor public ValidationProbeEvent.Builder();
-    method @NonNull public android.net.metrics.ValidationProbeEvent build();
-    method @NonNull public android.net.metrics.ValidationProbeEvent.Builder setDurationMs(long);
-    method @NonNull public android.net.metrics.ValidationProbeEvent.Builder setProbeType(int, boolean);
-    method @NonNull public android.net.metrics.ValidationProbeEvent.Builder setReturnCode(int);
-  }
-
-}
-
-package android.net.util {
-
-  public final class SocketUtils {
-    method public static void bindSocketToInterface(@NonNull java.io.FileDescriptor, @NonNull String) throws android.system.ErrnoException;
-    method public static void closeSocket(@Nullable java.io.FileDescriptor) throws java.io.IOException;
-    method @NonNull public static java.net.SocketAddress makeNetlinkSocketAddress(int, int);
-    method @NonNull public static java.net.SocketAddress makePacketSocketAddress(int, int);
-    method @Deprecated @NonNull public static java.net.SocketAddress makePacketSocketAddress(int, @NonNull byte[]);
-    method @NonNull public static java.net.SocketAddress makePacketSocketAddress(int, int, @NonNull byte[]);
-  }
-
-}
-
-package android.os {
-
-  public class BatteryManager {
-    method @RequiresPermission("android.permission.POWER_SAVER") public boolean setChargingStateUpdateDelayMillis(int);
-  }
-
-  public final class BugreportManager {
-    method @RequiresPermission(android.Manifest.permission.DUMP) public void cancelBugreport();
-    method @RequiresPermission(android.Manifest.permission.DUMP) public void requestBugreport(@NonNull android.os.BugreportParams, @Nullable CharSequence, @Nullable CharSequence);
-    method @RequiresPermission(android.Manifest.permission.DUMP) public void startBugreport(@NonNull android.os.ParcelFileDescriptor, @Nullable android.os.ParcelFileDescriptor, @NonNull android.os.BugreportParams, @NonNull java.util.concurrent.Executor, @NonNull android.os.BugreportManager.BugreportCallback);
-  }
-
-  public abstract static class BugreportManager.BugreportCallback {
-    ctor public BugreportManager.BugreportCallback();
-    method public void onError(int);
-    method public void onFinished();
-    method public void onProgress(@FloatRange(from=0.0f, to=100.0f) float);
-    field public static final int BUGREPORT_ERROR_ANOTHER_REPORT_IN_PROGRESS = 5; // 0x5
-    field public static final int BUGREPORT_ERROR_INVALID_INPUT = 1; // 0x1
-    field public static final int BUGREPORT_ERROR_RUNTIME = 2; // 0x2
-    field public static final int BUGREPORT_ERROR_USER_CONSENT_TIMED_OUT = 4; // 0x4
-    field public static final int BUGREPORT_ERROR_USER_DENIED_CONSENT = 3; // 0x3
-  }
-
-  public final class BugreportParams {
-    ctor public BugreportParams(int);
-    method public int getMode();
-    field public static final int BUGREPORT_MODE_FULL = 0; // 0x0
-    field public static final int BUGREPORT_MODE_INTERACTIVE = 1; // 0x1
-    field public static final int BUGREPORT_MODE_REMOTE = 2; // 0x2
-    field public static final int BUGREPORT_MODE_TELEPHONY = 4; // 0x4
-    field public static final int BUGREPORT_MODE_WEAR = 3; // 0x3
-    field public static final int BUGREPORT_MODE_WIFI = 5; // 0x5
-  }
-
-  public class Build {
-    method public static boolean is64BitAbi(String);
-    field public static final boolean IS_EMULATOR;
-  }
-
-  public static class Build.VERSION {
-    field public static final String[] ACTIVE_CODENAMES;
-    field public static final int FIRST_SDK_INT;
-    field public static final int RESOURCES_SDK_INT;
-  }
-
-  public class DeviceIdleManager {
-    method @NonNull public String[] getSystemPowerWhitelist();
-    method @NonNull public String[] getSystemPowerWhitelistExceptIdle();
-  }
-
-  public class Environment {
-    method public static java.io.File buildPath(java.io.File, java.lang.String...);
-    method @NonNull public static java.io.File getOdmDirectory();
-    method @NonNull public static java.io.File getOemDirectory();
-    method @NonNull public static java.io.File getProductDirectory();
-    method @NonNull public static java.io.File getSystemExtDirectory();
-    method @NonNull public static java.io.File getVendorDirectory();
-  }
-
-  public final class FileUtils {
-    method public static boolean contains(java.io.File, java.io.File);
-    method @NonNull public static byte[] digest(@NonNull java.io.File, @NonNull String) throws java.io.IOException, java.security.NoSuchAlgorithmException;
-    method @NonNull public static byte[] digest(@NonNull java.io.InputStream, @NonNull String) throws java.io.IOException, java.security.NoSuchAlgorithmException;
-  }
-
-  public class HidlMemory implements java.io.Closeable {
-    ctor public HidlMemory(@NonNull String, @IntRange(from=0) long, @Nullable android.os.NativeHandle);
-    method public void close() throws java.io.IOException;
-    method @NonNull public android.os.HidlMemory dup() throws java.io.IOException;
-    method protected void finalize();
-    method @Nullable public android.os.NativeHandle getHandle();
-    method @NonNull public String getName();
-    method public long getSize();
-    method @Nullable public android.os.NativeHandle releaseHandle();
-  }
-
-  public abstract class HwBinder implements android.os.IHwBinder {
-    ctor public HwBinder();
-    method public static final void configureRpcThreadpool(long, boolean);
-    method public static void enableInstrumentation();
-    method public static final android.os.IHwBinder getService(String, String) throws java.util.NoSuchElementException, android.os.RemoteException;
-    method public static final android.os.IHwBinder getService(String, String, boolean) throws java.util.NoSuchElementException, android.os.RemoteException;
-    method public static final void joinRpcThreadpool();
-    method public abstract void onTransact(int, android.os.HwParcel, android.os.HwParcel, int) throws android.os.RemoteException;
-    method public final void registerService(String) throws android.os.RemoteException;
-    method public final void transact(int, android.os.HwParcel, android.os.HwParcel, int) throws android.os.RemoteException;
-  }
-
-  public class HwBlob {
-    ctor public HwBlob(int);
-    method public final void copyToBoolArray(long, boolean[], int);
-    method public final void copyToDoubleArray(long, double[], int);
-    method public final void copyToFloatArray(long, float[], int);
-    method public final void copyToInt16Array(long, short[], int);
-    method public final void copyToInt32Array(long, int[], int);
-    method public final void copyToInt64Array(long, long[], int);
-    method public final void copyToInt8Array(long, byte[], int);
-    method public final boolean getBool(long);
-    method public final double getDouble(long);
-    method public final long getFieldHandle(long);
-    method public final float getFloat(long);
-    method public final short getInt16(long);
-    method public final int getInt32(long);
-    method public final long getInt64(long);
-    method public final byte getInt8(long);
-    method public final String getString(long);
-    method public final long handle();
-    method public final void putBlob(long, android.os.HwBlob);
-    method public final void putBool(long, boolean);
-    method public final void putBoolArray(long, boolean[]);
-    method public final void putDouble(long, double);
-    method public final void putDoubleArray(long, double[]);
-    method public final void putFloat(long, float);
-    method public final void putFloatArray(long, float[]);
-    method public final void putHidlMemory(long, @NonNull android.os.HidlMemory);
-    method public final void putInt16(long, short);
-    method public final void putInt16Array(long, short[]);
-    method public final void putInt32(long, int);
-    method public final void putInt32Array(long, int[]);
-    method public final void putInt64(long, long);
-    method public final void putInt64Array(long, long[]);
-    method public final void putInt8(long, byte);
-    method public final void putInt8Array(long, byte[]);
-    method public final void putNativeHandle(long, @Nullable android.os.NativeHandle);
-    method public final void putString(long, String);
-    method public static Boolean[] wrapArray(@NonNull boolean[]);
-    method public static Long[] wrapArray(@NonNull long[]);
-    method public static Byte[] wrapArray(@NonNull byte[]);
-    method public static Short[] wrapArray(@NonNull short[]);
-    method public static Integer[] wrapArray(@NonNull int[]);
-    method public static Float[] wrapArray(@NonNull float[]);
-    method public static Double[] wrapArray(@NonNull double[]);
-  }
-
-  public class HwParcel {
-    ctor public HwParcel();
-    method public final void enforceInterface(String);
-    method public final boolean readBool();
-    method public final java.util.ArrayList<java.lang.Boolean> readBoolVector();
-    method public final android.os.HwBlob readBuffer(long);
-    method public final double readDouble();
-    method public final java.util.ArrayList<java.lang.Double> readDoubleVector();
-    method public final android.os.HwBlob readEmbeddedBuffer(long, long, long, boolean);
-    method @NonNull @Nullable public final android.os.HidlMemory readEmbeddedHidlMemory(long, long, long);
-    method @Nullable public final android.os.NativeHandle readEmbeddedNativeHandle(long, long);
-    method public final float readFloat();
-    method public final java.util.ArrayList<java.lang.Float> readFloatVector();
-    method @NonNull public final android.os.HidlMemory readHidlMemory();
-    method public final short readInt16();
-    method public final java.util.ArrayList<java.lang.Short> readInt16Vector();
-    method public final int readInt32();
-    method public final java.util.ArrayList<java.lang.Integer> readInt32Vector();
-    method public final long readInt64();
-    method public final java.util.ArrayList<java.lang.Long> readInt64Vector();
-    method public final byte readInt8();
-    method public final java.util.ArrayList<java.lang.Byte> readInt8Vector();
-    method @Nullable public final android.os.NativeHandle readNativeHandle();
-    method @NonNull public final java.util.ArrayList<android.os.NativeHandle> readNativeHandleVector();
-    method public final String readString();
-    method public final java.util.ArrayList<java.lang.String> readStringVector();
-    method public final android.os.IHwBinder readStrongBinder();
-    method public final void release();
-    method public final void releaseTemporaryStorage();
-    method public final void send();
-    method public final void verifySuccess();
-    method public final void writeBool(boolean);
-    method public final void writeBoolVector(java.util.ArrayList<java.lang.Boolean>);
-    method public final void writeBuffer(android.os.HwBlob);
-    method public final void writeDouble(double);
-    method public final void writeDoubleVector(java.util.ArrayList<java.lang.Double>);
-    method public final void writeFloat(float);
-    method public final void writeFloatVector(java.util.ArrayList<java.lang.Float>);
-    method public final void writeHidlMemory(@NonNull android.os.HidlMemory);
-    method public final void writeInt16(short);
-    method public final void writeInt16Vector(java.util.ArrayList<java.lang.Short>);
-    method public final void writeInt32(int);
-    method public final void writeInt32Vector(java.util.ArrayList<java.lang.Integer>);
-    method public final void writeInt64(long);
-    method public final void writeInt64Vector(java.util.ArrayList<java.lang.Long>);
-    method public final void writeInt8(byte);
-    method public final void writeInt8Vector(java.util.ArrayList<java.lang.Byte>);
-    method public final void writeInterfaceToken(String);
-    method public final void writeNativeHandle(@Nullable android.os.NativeHandle);
-    method public final void writeNativeHandleVector(@NonNull java.util.ArrayList<android.os.NativeHandle>);
-    method public final void writeStatus(int);
-    method public final void writeString(String);
-    method public final void writeStringVector(java.util.ArrayList<java.lang.String>);
-    method public final void writeStrongBinder(android.os.IHwBinder);
-    field public static final int STATUS_SUCCESS = 0; // 0x0
-  }
-
-  public interface IHwBinder {
-    method public boolean linkToDeath(android.os.IHwBinder.DeathRecipient, long);
-    method public android.os.IHwInterface queryLocalInterface(String);
-    method public void transact(int, android.os.HwParcel, android.os.HwParcel, int) throws android.os.RemoteException;
-    method public boolean unlinkToDeath(android.os.IHwBinder.DeathRecipient);
-  }
-
-  public static interface IHwBinder.DeathRecipient {
-    method public void serviceDied(long);
-  }
-
-  public interface IHwInterface {
-    method public android.os.IHwBinder asBinder();
-  }
-
-  public class IncidentManager {
-    method @RequiresPermission(android.Manifest.permission.APPROVE_INCIDENT_REPORTS) public void approveReport(android.net.Uri);
-    method @RequiresPermission("android.permission.REQUEST_INCIDENT_REPORT_APPROVAL") public void cancelAuthorization(android.os.IncidentManager.AuthListener);
-    method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void deleteIncidentReports(android.net.Uri);
-    method @RequiresPermission(android.Manifest.permission.APPROVE_INCIDENT_REPORTS) public void denyReport(android.net.Uri);
-    method @Nullable @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public android.os.IncidentManager.IncidentReport getIncidentReport(android.net.Uri);
-    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public java.util.List<android.net.Uri> getIncidentReportList(String);
-    method @RequiresPermission(android.Manifest.permission.APPROVE_INCIDENT_REPORTS) public java.util.List<android.os.IncidentManager.PendingReport> getPendingReports();
-    method public void registerSection(int, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.os.IncidentManager.DumpCallback);
-    method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void reportIncident(android.os.IncidentReportArgs);
-    method @RequiresPermission("android.permission.REQUEST_INCIDENT_REPORT_APPROVAL") public void requestAuthorization(int, String, int, android.os.IncidentManager.AuthListener);
-    method public void unregisterSection(int);
-    field public static final int FLAG_CONFIRMATION_DIALOG = 1; // 0x1
-    field public static final int PRIVACY_POLICY_AUTO = 200; // 0xc8
-    field public static final int PRIVACY_POLICY_EXPLICIT = 100; // 0x64
-    field public static final int PRIVACY_POLICY_LOCAL = 0; // 0x0
-  }
-
-  public static class IncidentManager.AuthListener {
-    ctor public IncidentManager.AuthListener();
-    method public void onReportApproved();
-    method public void onReportDenied();
-  }
-
-  public static class IncidentManager.DumpCallback {
-    ctor public IncidentManager.DumpCallback();
-    method public void onDumpSection(int, @NonNull java.io.OutputStream);
-  }
-
-  public static class IncidentManager.IncidentReport implements java.io.Closeable android.os.Parcelable {
-    ctor public IncidentManager.IncidentReport(android.os.Parcel);
-    method public void close();
-    method public int describeContents();
-    method public java.io.InputStream getInputStream() throws java.io.IOException;
-    method public long getPrivacyPolicy();
-    method public long getTimestamp();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.IncidentManager.IncidentReport> CREATOR;
-  }
-
-  public static class IncidentManager.PendingReport {
-    ctor public IncidentManager.PendingReport(@NonNull android.net.Uri);
-    method public int getFlags();
-    method @NonNull public String getRequestingPackage();
-    method public long getTimestamp();
-    method @NonNull public android.net.Uri getUri();
-  }
-
-  public final class IncidentReportArgs implements android.os.Parcelable {
-    ctor public IncidentReportArgs();
-    ctor public IncidentReportArgs(android.os.Parcel);
-    method public void addHeader(byte[]);
-    method public void addSection(int);
-    method public boolean containsSection(int);
-    method public int describeContents();
-    method public boolean isAll();
-    method public void readFromParcel(android.os.Parcel);
-    method public int sectionCount();
-    method public void setAll(boolean);
-    method public void setPrivacyPolicy(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.IncidentReportArgs> CREATOR;
-  }
-
-  public final class MessageQueue {
-    method public int postSyncBarrier();
-    method public void removeSyncBarrier(int);
-  }
-
-  public final class NativeHandle implements java.io.Closeable {
-    ctor public NativeHandle();
-    ctor public NativeHandle(@NonNull java.io.FileDescriptor, boolean);
-    ctor public NativeHandle(@NonNull java.io.FileDescriptor[], @NonNull int[], boolean);
-    method public void close() throws java.io.IOException;
-    method @NonNull public android.os.NativeHandle dup() throws java.io.IOException;
-    method @NonNull public java.io.FileDescriptor getFileDescriptor();
-    method @NonNull public java.io.FileDescriptor[] getFileDescriptors();
-    method @NonNull public int[] getInts();
-    method public boolean hasSingleFileDescriptor();
-  }
-
-  public final class Parcel {
-    method public boolean allowSquashing();
-    method public int readExceptionCode();
-    method public void restoreAllowSquashing(boolean);
-  }
-
-  public class ParcelFileDescriptor implements java.io.Closeable android.os.Parcelable {
-    method public static java.io.File getFile(java.io.FileDescriptor) throws java.io.IOException;
-  }
-
-  public final class PowerManager {
-    method @RequiresPermission("android.permission.POWER_SAVER") public int getPowerSaveModeTrigger();
-    method @RequiresPermission("android.permission.POWER_SAVER") public boolean setDynamicPowerSaveHint(boolean, int);
-    method @RequiresPermission(anyOf={"android.permission.DEVICE_POWER", "android.permission.POWER_SAVER"}) public boolean setPowerSaveModeEnabled(boolean);
-    field public static final int POWER_SAVE_MODE_TRIGGER_DYNAMIC = 1; // 0x1
-    field public static final int POWER_SAVE_MODE_TRIGGER_PERCENTAGE = 0; // 0x0
-  }
-
-  public class PowerWhitelistManager {
-    method @RequiresPermission("android.permission.DEVICE_POWER") public void addToWhitelist(@NonNull String);
-    method @RequiresPermission("android.permission.DEVICE_POWER") public void addToWhitelist(@NonNull java.util.List<java.lang.String>);
-    method @RequiresPermission("android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST") public void whitelistAppTemporarily(@NonNull String, long);
-    method @RequiresPermission("android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST") public long whitelistAppTemporarilyForEvent(@NonNull String, int, @NonNull String);
-    field public static final int EVENT_MMS = 2; // 0x2
-    field public static final int EVENT_SMS = 1; // 0x1
-    field public static final int EVENT_UNSPECIFIED = 0; // 0x0
-  }
-
-  public class Process {
-    method public static final int getThreadScheduler(int) throws java.lang.IllegalArgumentException;
-    field public static final int FIRST_APP_ZYGOTE_ISOLATED_UID = 90000; // 0x15f90
-    field public static final int FIRST_ISOLATED_UID = 99000; // 0x182b8
-    field public static final int LAST_APP_ZYGOTE_ISOLATED_UID = 98999; // 0x182b7
-    field public static final int LAST_ISOLATED_UID = 99999; // 0x1869f
-    field public static final int NUM_UIDS_PER_APP_ZYGOTE = 100; // 0x64
-  }
-
-  public final class RemoteCallback implements android.os.Parcelable {
-    ctor public RemoteCallback(android.os.RemoteCallback.OnResultListener);
-    ctor public RemoteCallback(@NonNull android.os.RemoteCallback.OnResultListener, @Nullable android.os.Handler);
-    method public int describeContents();
-    method public void sendResult(@Nullable android.os.Bundle);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.RemoteCallback> CREATOR;
-  }
-
-  public static interface RemoteCallback.OnResultListener {
-    method public void onResult(@Nullable android.os.Bundle);
-  }
-
-  public final class StrictMode {
-    method public static void conditionallyCheckInstanceCounts();
-    method public static void setViolationLogger(android.os.StrictMode.ViolationLogger);
-  }
-
-  public static final class StrictMode.ThreadPolicy.Builder {
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectExplicitGc();
-  }
-
-  public static final class StrictMode.ViolationInfo implements android.os.Parcelable {
-    ctor public StrictMode.ViolationInfo(android.os.Parcel);
-    ctor public StrictMode.ViolationInfo(android.os.Parcel, boolean);
-    method public int describeContents();
-    method public void dump(android.util.Printer, String);
-    method public String getStackTrace();
-    method public Class<? extends android.os.strictmode.Violation> getViolationClass();
-    method public String getViolationDetails();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.StrictMode.ViolationInfo> CREATOR;
-    field public String broadcastIntentAction;
-    field public int durationMillis;
-    field public int numAnimationsRunning;
-    field public long numInstances;
-    field public String[] tags;
-    field public int violationNumThisLoop;
-    field public long violationUptimeMillis;
-  }
-
-  public static interface StrictMode.ViolationLogger {
-    method public void log(android.os.StrictMode.ViolationInfo);
-  }
-
-  public static final class StrictMode.VmPolicy.Builder {
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectIncorrectContextUse();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder permitIncorrectContextUse();
-  }
-
-  public class SystemConfigManager {
-    method @NonNull @RequiresPermission("android.permission.READ_CARRIER_APP_INFO") public java.util.Set<java.lang.String> getDisabledUntilUsedPreinstalledCarrierApps();
-    method @NonNull @RequiresPermission("android.permission.READ_CARRIER_APP_INFO") public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getDisabledUntilUsedPreinstalledCarrierAssociatedApps();
-  }
-
-  public class SystemProperties {
-    method @NonNull public static String get(@NonNull String);
-    method @NonNull public static String get(@NonNull String, @Nullable String);
-    method public static boolean getBoolean(@NonNull String, boolean);
-    method public static int getInt(@NonNull String, int);
-    method public static long getLong(@NonNull String, long);
-  }
-
-  public final class UserHandle implements android.os.Parcelable {
-    method public static int getAppId(int);
-    method public int getIdentifier();
-    method public static int getUid(int, int);
-    method public static int getUserId(int);
-    method public static boolean isApp(int);
-    method public static int myUserId();
-    method public static android.os.UserHandle of(int);
-    field @NonNull public static final android.os.UserHandle ALL;
-    field @NonNull public static final android.os.UserHandle CURRENT;
-    field public static final int MIN_SECONDARY_USER_ID = 10; // 0xa
-    field @NonNull public static final android.os.UserHandle SYSTEM;
-    field public static final int USER_ALL = -1; // 0xffffffff
-    field public static final int USER_NULL = -10000; // 0xffffd8f0
-    field public static final int USER_SYSTEM = 0; // 0x0
-  }
-
-  public class UserManager {
-    method @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.CREATE_USERS"}) public boolean hasBaseUserRestriction(@NonNull String, @NonNull android.os.UserHandle);
-    method public static boolean isSplitSystemUser();
-    field public static final String ACTION_USER_RESTRICTIONS_CHANGED = "android.os.action.USER_RESTRICTIONS_CHANGED";
-  }
-
-  public final class VibrationAttributes implements android.os.Parcelable {
-    method @Deprecated @NonNull public android.media.AudioAttributes getAudioAttributes();
-  }
-
-  public static final class VibrationAttributes.Builder {
-    ctor public VibrationAttributes.Builder(@NonNull android.media.AudioAttributes, @Nullable android.os.VibrationEffect);
-  }
-
-  public abstract class VibrationEffect implements android.os.Parcelable {
-    method public static android.os.VibrationEffect get(int);
-    method public static android.os.VibrationEffect get(int, boolean);
-    method @Nullable public static android.os.VibrationEffect get(android.net.Uri, android.content.Context);
-    method public abstract long getDuration();
-    method protected static int scale(int, float, int);
-    field public static final int EFFECT_POP = 4; // 0x4
-    field public static final int EFFECT_STRENGTH_LIGHT = 0; // 0x0
-    field public static final int EFFECT_STRENGTH_MEDIUM = 1; // 0x1
-    field public static final int EFFECT_STRENGTH_STRONG = 2; // 0x2
-    field public static final int EFFECT_TEXTURE_TICK = 21; // 0x15
-    field public static final int EFFECT_THUD = 3; // 0x3
-    field public static final int[] RINGTONES;
-  }
-
-  public static class VibrationEffect.OneShot extends android.os.VibrationEffect implements android.os.Parcelable {
-    ctor public VibrationEffect.OneShot(android.os.Parcel);
-    ctor public VibrationEffect.OneShot(long, int);
-    method public int getAmplitude();
-    method public long getDuration();
-    method public android.os.VibrationEffect.OneShot scale(float, int);
-    method public void validate();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.VibrationEffect.OneShot> CREATOR;
-  }
-
-  public static class VibrationEffect.Prebaked extends android.os.VibrationEffect implements android.os.Parcelable {
-    ctor public VibrationEffect.Prebaked(android.os.Parcel);
-    ctor public VibrationEffect.Prebaked(int, boolean);
-    method public long getDuration();
-    method public int getEffectStrength();
-    method public int getId();
-    method public void setEffectStrength(int);
-    method public boolean shouldFallback();
-    method public void validate();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.VibrationEffect.Prebaked> CREATOR;
-  }
-
-  public static class VibrationEffect.Waveform extends android.os.VibrationEffect implements android.os.Parcelable {
-    ctor public VibrationEffect.Waveform(android.os.Parcel);
-    ctor public VibrationEffect.Waveform(long[], int[], int);
-    method public int[] getAmplitudes();
-    method public long getDuration();
-    method public int getRepeatIndex();
-    method public long[] getTimings();
-    method public android.os.VibrationEffect.Waveform scale(float, int);
-    method public void validate();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.VibrationEffect.Waveform> CREATOR;
-  }
-
-  public abstract class Vibrator {
-    method @RequiresPermission("android.permission.ACCESS_VIBRATOR_STATE") public void addVibratorStateListener(@NonNull android.os.Vibrator.OnVibratorStateChangedListener);
-    method @RequiresPermission("android.permission.ACCESS_VIBRATOR_STATE") public void addVibratorStateListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.Vibrator.OnVibratorStateChangedListener);
-    method @RequiresPermission("android.permission.ACCESS_VIBRATOR_STATE") public boolean isVibrating();
-    method @RequiresPermission("android.permission.ACCESS_VIBRATOR_STATE") public void removeVibratorStateListener(@NonNull android.os.Vibrator.OnVibratorStateChangedListener);
-  }
-
-  public static interface Vibrator.OnVibratorStateChangedListener {
-    method public void onVibratorStateChanged(boolean);
-  }
-
-  public class VintfObject {
-    method public static String[] getHalNamesAndVersions();
-    method public static String getSepolicyVersion();
-    method public static Long getTargetFrameworkCompatibilityMatrixVersion();
-    method public static java.util.Map<java.lang.String,java.lang.String[]> getVndkSnapshots();
-    method public static String[] report();
-  }
-
-  public class VintfRuntimeInfo {
-    method public static String getCpuInfo();
-    method public static String getHardwareId();
-    method public static String getKernelVersion();
-    method public static String getNodeName();
-    method public static String getOsName();
-    method public static String getOsRelease();
-    method public static String getOsVersion();
-  }
-
-  public class WorkSource implements android.os.Parcelable {
-    ctor public WorkSource(int);
-    method public boolean add(int);
-    method public boolean add(int, String);
-    method @Deprecated public android.os.WorkSource addReturningNewbs(android.os.WorkSource);
-    method @Nullable public String getPackageName(int);
-    method public int getUid(int);
-    method public boolean isEmpty();
-    method @Deprecated public android.os.WorkSource[] setReturningDiffs(android.os.WorkSource);
-    method public int size();
-    method @NonNull public android.os.WorkSource withoutNames();
-  }
-
-}
-
-package android.os.health {
-
-  public class HealthKeys {
-    ctor public HealthKeys();
-    field public static final int BASE_PACKAGE = 40000; // 0x9c40
-    field public static final int BASE_PID = 20000; // 0x4e20
-    field public static final int BASE_PROCESS = 30000; // 0x7530
-    field public static final int BASE_SERVICE = 50000; // 0xc350
-    field public static final int BASE_UID = 10000; // 0x2710
-    field public static final int TYPE_COUNT = 5; // 0x5
-    field public static final int TYPE_MEASUREMENT = 1; // 0x1
-    field public static final int TYPE_MEASUREMENTS = 4; // 0x4
-    field public static final int TYPE_STATS = 2; // 0x2
-    field public static final int TYPE_TIMER = 0; // 0x0
-    field public static final int TYPE_TIMERS = 3; // 0x3
-    field public static final int UNKNOWN_KEY = 0; // 0x0
-  }
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD}) public static @interface HealthKeys.Constant {
-    method public abstract int type();
-  }
-
-  public static class HealthKeys.Constants {
-    ctor public HealthKeys.Constants(Class);
-    method public String getDataType();
-    method public int getIndex(int, int);
-    method public int[] getKeys(int);
-    method public int getSize(int);
-  }
-
-  public class HealthStats {
-    ctor public HealthStats(android.os.Parcel);
-  }
-
-  public class HealthStatsParceler implements android.os.Parcelable {
-    ctor public HealthStatsParceler(android.os.health.HealthStatsWriter);
-    ctor public HealthStatsParceler(android.os.Parcel);
-    method public int describeContents();
-    method public android.os.health.HealthStats getHealthStats();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.health.HealthStatsParceler> CREATOR;
-  }
-
-  public class HealthStatsWriter {
-    ctor public HealthStatsWriter(android.os.health.HealthKeys.Constants);
-    method public void addMeasurement(int, long);
-    method public void addMeasurements(int, String, long);
-    method public void addStats(int, String, android.os.health.HealthStatsWriter);
-    method public void addTimer(int, int, long);
-    method public void addTimers(int, String, android.os.health.TimerStat);
-    method public void flattenToParcel(android.os.Parcel);
-  }
-
-}
-
-package android.os.image {
-
-  public class DynamicSystemClient {
-    ctor public DynamicSystemClient(@NonNull android.content.Context);
-    method @RequiresPermission("android.permission.INSTALL_DYNAMIC_SYSTEM") public void bind();
-    method public void setOnStatusChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.image.DynamicSystemClient.OnStatusChangedListener);
-    method public void setOnStatusChangedListener(@NonNull android.os.image.DynamicSystemClient.OnStatusChangedListener);
-    method @RequiresPermission("android.permission.INSTALL_DYNAMIC_SYSTEM") public void start(@NonNull android.net.Uri, long);
-    method @RequiresPermission("android.permission.INSTALL_DYNAMIC_SYSTEM") public void start(@NonNull android.net.Uri, long, long);
-    method @RequiresPermission("android.permission.INSTALL_DYNAMIC_SYSTEM") public void unbind();
-    field public static final int CAUSE_ERROR_EXCEPTION = 6; // 0x6
-    field public static final int CAUSE_ERROR_INVALID_URL = 4; // 0x4
-    field public static final int CAUSE_ERROR_IO = 3; // 0x3
-    field public static final int CAUSE_ERROR_IPC = 5; // 0x5
-    field public static final int CAUSE_INSTALL_CANCELLED = 2; // 0x2
-    field public static final int CAUSE_INSTALL_COMPLETED = 1; // 0x1
-    field public static final int CAUSE_NOT_SPECIFIED = 0; // 0x0
-    field public static final int STATUS_IN_PROGRESS = 2; // 0x2
-    field public static final int STATUS_IN_USE = 4; // 0x4
-    field public static final int STATUS_NOT_STARTED = 1; // 0x1
-    field public static final int STATUS_READY = 3; // 0x3
-    field public static final int STATUS_UNKNOWN = 0; // 0x0
-  }
-
-  public static interface DynamicSystemClient.OnStatusChangedListener {
-    method public void onStatusChanged(int, int, long, @Nullable Throwable);
-  }
-
-}
-
-package android.os.storage {
-
-  public final class CrateInfo implements android.os.Parcelable {
-    ctor public CrateInfo(@NonNull CharSequence, long);
-    ctor public CrateInfo(@NonNull CharSequence);
-    method @Nullable public static android.os.storage.CrateInfo copyFrom(int, @Nullable String, @Nullable String);
-    method public int describeContents();
-    method public long getExpirationMillis();
-    method @NonNull public CharSequence getLabel();
-    method public void writeToParcel(@Nullable android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.storage.CrateInfo> CREATOR;
-  }
-
-  public class StorageManager {
-    method public static boolean hasIsolatedStorage();
-  }
-
-  public final class StorageVolume implements android.os.Parcelable {
-    method public String getPath();
-  }
-
-}
-
-package android.os.strictmode {
-
-  public final class ExplicitGcViolation extends android.os.strictmode.Violation {
-  }
-
-}
-
-package android.permission {
-
-  public final class PermissionControllerManager {
-    method @RequiresPermission(anyOf={"android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.RESTORE_RUNTIME_PERMISSIONS"}) public void applyStagedRuntimePermissionBackup(@NonNull String, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @RequiresPermission("android.permission.GET_RUNTIME_PERMISSIONS") public void countPermissionApps(@NonNull java.util.List<java.lang.String>, int, @NonNull android.permission.PermissionControllerManager.OnCountPermissionAppsResultCallback, @Nullable android.os.Handler);
-    method @RequiresPermission("android.permission.GET_RUNTIME_PERMISSIONS") public void getAppPermissions(@NonNull String, @NonNull android.permission.PermissionControllerManager.OnGetAppPermissionResultCallback, @Nullable android.os.Handler);
-    method @RequiresPermission("android.permission.GET_RUNTIME_PERMISSIONS") public void getRuntimePermissionBackup(@NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<byte[]>);
-    method @RequiresPermission("android.permission.REVOKE_RUNTIME_PERMISSIONS") public void revokeRuntimePermission(@NonNull String, @NonNull String);
-    method @RequiresPermission("android.permission.REVOKE_RUNTIME_PERMISSIONS") public void revokeRuntimePermissions(@NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>, boolean, int, @NonNull java.util.concurrent.Executor, @NonNull android.permission.PermissionControllerManager.OnRevokeRuntimePermissionsCallback);
-    method @RequiresPermission(anyOf={"android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.RESTORE_RUNTIME_PERMISSIONS"}) public void stageAndApplyRuntimePermissionsBackup(@NonNull byte[], @NonNull android.os.UserHandle);
-    field public static final int COUNT_ONLY_WHEN_GRANTED = 1; // 0x1
-    field public static final int COUNT_WHEN_SYSTEM = 2; // 0x2
-    field public static final int REASON_INSTALLER_POLICY_VIOLATION = 2; // 0x2
-    field public static final int REASON_MALWARE = 1; // 0x1
-  }
-
-  public static interface PermissionControllerManager.OnCountPermissionAppsResultCallback {
-    method public void onCountPermissionApps(int);
-  }
-
-  public static interface PermissionControllerManager.OnGetAppPermissionResultCallback {
-    method public void onGetAppPermissions(@NonNull java.util.List<android.permission.RuntimePermissionPresentationInfo>);
-  }
-
-  public abstract static class PermissionControllerManager.OnRevokeRuntimePermissionsCallback {
-    ctor public PermissionControllerManager.OnRevokeRuntimePermissionsCallback();
-    method public abstract void onRevokeRuntimePermissions(@NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>);
-  }
-
-  public final class PermissionManager {
-    method @IntRange(from=0) @RequiresPermission(anyOf={"android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY", android.Manifest.permission.UPGRADE_RUNTIME_PERMISSIONS}) public int getRuntimePermissionsVersion();
-    method @NonNull public java.util.List<android.permission.PermissionManager.SplitPermissionInfo> getSplitPermissions();
-    method @RequiresPermission(anyOf={"android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY", android.Manifest.permission.UPGRADE_RUNTIME_PERMISSIONS}) public void setRuntimePermissionsVersion(@IntRange(from=0) int);
-  }
-
-  public static final class PermissionManager.SplitPermissionInfo {
-    method @NonNull public java.util.List<java.lang.String> getNewPermissions();
-    method @NonNull public String getSplitPermission();
-    method public int getTargetSdk();
-  }
-
-  public final class RuntimePermissionPresentationInfo implements android.os.Parcelable {
-    ctor public RuntimePermissionPresentationInfo(@NonNull CharSequence, boolean, boolean);
-    method public int describeContents();
-    method @NonNull public CharSequence getLabel();
-    method public boolean isGranted();
-    method public boolean isStandard();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.permission.RuntimePermissionPresentationInfo> CREATOR;
-  }
-
-}
-
-package android.print {
-
-  public final class PrintJobInfo implements android.os.Parcelable {
-    method public float getProgress();
-    method @Nullable public CharSequence getStatus(@NonNull android.content.pm.PackageManager);
-  }
-
-  public final class PrinterInfo implements android.os.Parcelable {
-    method @Nullable public android.graphics.drawable.Drawable loadIcon(@NonNull android.content.Context);
-  }
-
-}
-
-package android.provider {
-
-  public interface AndroidDeviceConfig {
-    field public static final String KEY_SYSTEM_GESTURES_EXCLUDED_BY_PRE_Q_STICKY_IMMERSIVE = "system_gestures_excluded_by_pre_q_sticky_immersive";
-    field public static final String KEY_SYSTEM_GESTURE_EXCLUSION_LIMIT_DP = "system_gesture_exclusion_limit_dp";
-  }
-
-  public static final class CalendarContract.Calendars implements android.provider.BaseColumns android.provider.CalendarContract.CalendarColumns android.provider.CalendarContract.SyncColumns {
-    field public static final String[] SYNC_WRITABLE_COLUMNS;
-  }
-
-  public static final class CalendarContract.Events implements android.provider.BaseColumns android.provider.CalendarContract.CalendarColumns android.provider.CalendarContract.EventsColumns android.provider.CalendarContract.SyncColumns {
-    field public static final String[] SYNC_WRITABLE_COLUMNS;
-  }
-
-  public final class ContactsContract {
-    field public static final String HIDDEN_COLUMN_PREFIX = "x_";
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Phone implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    field public static final android.net.Uri ENTERPRISE_CONTENT_URI;
-  }
-
-  public static final class ContactsContract.PinnedPositions {
-    field public static final String UNDEMOTE_METHOD = "undemote";
-  }
-
-  public static final class ContactsContract.RawContactsEntity implements android.provider.BaseColumns android.provider.ContactsContract.DataColumns android.provider.ContactsContract.RawContactsColumns {
-    field public static final android.net.Uri CORP_CONTENT_URI;
-  }
-
-  public final class DeviceConfig {
-    method @RequiresPermission("android.permission.READ_DEVICE_CONFIG") public static void addOnPropertiesChangedListener(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.provider.DeviceConfig.OnPropertiesChangedListener);
-    method @RequiresPermission("android.permission.READ_DEVICE_CONFIG") public static boolean getBoolean(@NonNull String, @NonNull String, boolean);
-    method @RequiresPermission("android.permission.READ_DEVICE_CONFIG") public static float getFloat(@NonNull String, @NonNull String, float);
-    method @RequiresPermission("android.permission.READ_DEVICE_CONFIG") public static int getInt(@NonNull String, @NonNull String, int);
-    method @RequiresPermission("android.permission.READ_DEVICE_CONFIG") public static long getLong(@NonNull String, @NonNull String, long);
-    method @NonNull @RequiresPermission("android.permission.READ_DEVICE_CONFIG") public static android.provider.DeviceConfig.Properties getProperties(@NonNull String, @NonNull java.lang.String...);
-    method @RequiresPermission("android.permission.READ_DEVICE_CONFIG") public static String getProperty(@NonNull String, @NonNull String);
-    method @RequiresPermission("android.permission.READ_DEVICE_CONFIG") public static String getString(@NonNull String, @NonNull String, @Nullable String);
-    method public static void removeOnPropertiesChangedListener(@NonNull android.provider.DeviceConfig.OnPropertiesChangedListener);
-    method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static void resetToDefaults(int, @Nullable String);
-    method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static boolean setProperties(@NonNull android.provider.DeviceConfig.Properties) throws android.provider.DeviceConfig.BadConfigException;
-    method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static boolean setProperty(@NonNull String, @NonNull String, @Nullable String, boolean);
-    field public static final String NAMESPACE_ANDROID = "android";
-    field public static final String NAMESPACE_AUTOFILL = "autofill";
-    field public static final String NAMESPACE_BIOMETRICS = "biometrics";
-    field public static final String NAMESPACE_CONTENT_CAPTURE = "content_capture";
-    field public static final String NAMESPACE_PERMISSIONS = "permissions";
-    field public static final String NAMESPACE_PRIVACY = "privacy";
-    field public static final String NAMESPACE_ROLLBACK = "rollback";
-    field public static final String NAMESPACE_ROLLBACK_BOOT = "rollback_boot";
-  }
-
-  public static class DeviceConfig.BadConfigException extends java.lang.Exception {
-    ctor public DeviceConfig.BadConfigException();
-  }
-
-  public static interface DeviceConfig.OnPropertiesChangedListener {
-    method public void onPropertiesChanged(@NonNull android.provider.DeviceConfig.Properties);
-  }
-
-  public static class DeviceConfig.Properties {
-    method public boolean getBoolean(@NonNull String, boolean);
-    method public float getFloat(@NonNull String, float);
-    method public int getInt(@NonNull String, int);
-    method @NonNull public java.util.Set<java.lang.String> getKeyset();
-    method public long getLong(@NonNull String, long);
-    method @NonNull public String getNamespace();
-    method @Nullable public String getString(@NonNull String, @Nullable String);
-  }
-
-  public static final class DeviceConfig.Properties.Builder {
-    ctor public DeviceConfig.Properties.Builder(@NonNull String);
-    method @NonNull public android.provider.DeviceConfig.Properties build();
-    method @NonNull public android.provider.DeviceConfig.Properties.Builder setBoolean(@NonNull String, boolean);
-    method @NonNull public android.provider.DeviceConfig.Properties.Builder setFloat(@NonNull String, float);
-    method @NonNull public android.provider.DeviceConfig.Properties.Builder setInt(@NonNull String, int);
-    method @NonNull public android.provider.DeviceConfig.Properties.Builder setLong(@NonNull String, long);
-    method @NonNull public android.provider.DeviceConfig.Properties.Builder setString(@NonNull String, @Nullable String);
-  }
-
-  public final class DocumentsContract {
-    method public static boolean isManageMode(@NonNull android.net.Uri);
-    method @NonNull public static android.net.Uri setManageMode(@NonNull android.net.Uri);
-  }
-
-  public final class MediaStore {
-    method @NonNull @WorkerThread public static android.net.Uri scanFile(@NonNull android.content.ContentResolver, @NonNull java.io.File);
-    method @WorkerThread public static void scanVolume(@NonNull android.content.ContentResolver, @NonNull String);
-    method @WorkerThread public static void waitForIdle(@NonNull android.content.ContentResolver);
-  }
-
-  public final class Settings {
-    field public static final String ACTION_ENTERPRISE_PRIVACY_SETTINGS = "android.settings.ENTERPRISE_PRIVACY_SETTINGS";
-    field public static final String ACTION_MANAGE_APP_OVERLAY_PERMISSION = "android.settings.MANAGE_APP_OVERLAY_PERMISSION";
-    field public static final String ACTION_REQUEST_ENABLE_CONTENT_CAPTURE = "android.settings.REQUEST_ENABLE_CONTENT_CAPTURE";
-    field public static final String ACTION_TETHER_PROVISIONING_UI = "android.settings.TETHER_PROVISIONING_UI";
-    field public static final int RESET_MODE_PACKAGE_DEFAULTS = 1; // 0x1
-  }
-
-  public static final class Settings.Global extends android.provider.Settings.NameValueTable {
-    field public static final String APP_OPS_CONSTANTS = "app_ops_constants";
-    field public static final String AUTOFILL_COMPAT_MODE_ALLOWED_PACKAGES = "autofill_compat_mode_allowed_packages";
-    field public static final String AUTOMATIC_POWER_SAVE_MODE = "automatic_power_save_mode";
-    field public static final String BATTERY_SAVER_CONSTANTS = "battery_saver_constants";
-    field public static final String DYNAMIC_POWER_SAVINGS_DISABLE_THRESHOLD = "dynamic_power_savings_disable_threshold";
-    field public static final String DYNAMIC_POWER_SAVINGS_ENABLED = "dynamic_power_savings_enabled";
-    field public static final String HIDDEN_API_BLACKLIST_EXEMPTIONS = "hidden_api_blacklist_exemptions";
-    field public static final String HIDE_ERROR_DIALOGS = "hide_error_dialogs";
-    field public static final String LOCATION_GLOBAL_KILL_SWITCH = "location_global_kill_switch";
-    field public static final String LOCATION_IGNORE_SETTINGS_PACKAGE_WHITELIST = "location_ignore_settings_package_whitelist";
-    field public static final String LOW_POWER_MODE = "low_power";
-    field public static final String LOW_POWER_MODE_STICKY = "low_power_sticky";
-    field public static final String NOTIFICATION_BUBBLES = "notification_bubbles";
-    field public static final String OVERLAY_DISPLAY_DEVICES = "overlay_display_devices";
-    field public static final String TETHER_OFFLOAD_DISABLED = "tether_offload_disabled";
-    field public static final String USE_OPEN_WIFI_PACKAGE = "use_open_wifi_package";
-  }
-
-  public static final class Settings.Secure extends android.provider.Settings.NameValueTable {
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static void resetToDefaults(@NonNull android.content.ContentResolver, @Nullable String);
-    field public static final String ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED = "accessibility_display_magnification_enabled";
-    field public static final String ACCESSIBILITY_SHORTCUT_TARGET_SERVICE = "accessibility_shortcut_target_service";
-    field public static final String AUTOFILL_FEATURE_FIELD_CLASSIFICATION = "autofill_field_classification";
-    field public static final String AUTOFILL_SERVICE = "autofill_service";
-    field public static final String AUTOFILL_USER_DATA_MAX_CATEGORY_COUNT = "autofill_user_data_max_category_count";
-    field public static final String AUTOFILL_USER_DATA_MAX_FIELD_CLASSIFICATION_IDS_SIZE = "autofill_user_data_max_field_classification_size";
-    field public static final String AUTOFILL_USER_DATA_MAX_USER_DATA_SIZE = "autofill_user_data_max_user_data_size";
-    field public static final String AUTOFILL_USER_DATA_MAX_VALUE_LENGTH = "autofill_user_data_max_value_length";
-    field public static final String AUTOFILL_USER_DATA_MIN_VALUE_LENGTH = "autofill_user_data_min_value_length";
-    field public static final String CONTENT_CAPTURE_ENABLED = "content_capture_enabled";
-    field public static final String DISABLED_PRINT_SERVICES = "disabled_print_services";
-    field public static final String DOZE_ALWAYS_ON = "doze_always_on";
-    field @Deprecated public static final String ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES = "enabled_notification_policy_access_packages";
-    field public static final String ENABLED_VR_LISTENERS = "enabled_vr_listeners";
-    field public static final String IMMERSIVE_MODE_CONFIRMATIONS = "immersive_mode_confirmations";
-    field public static final String LOCATION_ACCESS_CHECK_DELAY_MILLIS = "location_access_check_delay_millis";
-    field public static final String LOCATION_ACCESS_CHECK_INTERVAL_MILLIS = "location_access_check_interval_millis";
-    field public static final String LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS = "lock_screen_allow_private_notifications";
-    field public static final String LOCK_SCREEN_SHOW_NOTIFICATIONS = "lock_screen_show_notifications";
-    field public static final String NFC_PAYMENT_DEFAULT_COMPONENT = "nfc_payment_default_component";
-    field public static final String NOTIFICATION_BADGING = "notification_badging";
-    field public static final String POWER_MENU_LOCKED_SHOW_CONTENT = "power_menu_locked_show_content";
-    field public static final String SHOW_IME_WITH_HARD_KEYBOARD = "show_ime_with_hard_keyboard";
-    field @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static final String SYNC_PARENT_SOUNDS = "sync_parent_sounds";
-    field public static final String USER_SETUP_COMPLETE = "user_setup_complete";
-    field public static final String VOICE_INTERACTION_SERVICE = "voice_interaction_service";
-  }
-
-  public static final class Telephony.CellBroadcasts implements android.provider.BaseColumns {
-    field public static final String CID = "cid";
-    field public static final String CMAS_CATEGORY = "cmas_category";
-    field public static final String CMAS_CERTAINTY = "cmas_certainty";
-    field public static final String CMAS_MESSAGE_CLASS = "cmas_message_class";
-    field public static final String CMAS_RESPONSE_TYPE = "cmas_response_type";
-    field public static final String CMAS_SEVERITY = "cmas_severity";
-    field public static final String CMAS_URGENCY = "cmas_urgency";
-    field @NonNull public static final android.net.Uri CONTENT_URI;
-    field public static final String DATA_CODING_SCHEME = "dcs";
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-    field public static final String DELIVERY_TIME = "date";
-    field public static final String ETWS_WARNING_TYPE = "etws_warning_type";
-    field public static final String GEOGRAPHICAL_SCOPE = "geo_scope";
-    field public static final String GEOMETRIES = "geometries";
-    field public static final String LAC = "lac";
-    field public static final String LANGUAGE_CODE = "language";
-    field public static final String LOCATION_CHECK_TIME = "location_check_time";
-    field public static final String MAXIMUM_WAIT_TIME = "maximum_wait_time";
-    field public static final String MESSAGE_BODY = "body";
-    field public static final String MESSAGE_BROADCASTED = "message_broadcasted";
-    field public static final String MESSAGE_DISPLAYED = "message_displayed";
-    field public static final String MESSAGE_FORMAT = "format";
-    field @NonNull @RequiresPermission(android.Manifest.permission.READ_CELL_BROADCASTS) public static final android.net.Uri MESSAGE_HISTORY_URI;
-    field public static final String MESSAGE_PRIORITY = "priority";
-    field public static final String MESSAGE_READ = "read";
-    field public static final String PLMN = "plmn";
-    field public static final String RECEIVED_TIME = "received_time";
-    field public static final String SERIAL_NUMBER = "serial_number";
-    field public static final String SERVICE_CATEGORY = "service_category";
-    field public static final String SLOT_INDEX = "slot_index";
-    field public static final String SUBSCRIPTION_ID = "sub_id";
-  }
-
-  public static final class Telephony.Sms.Intents {
-    field public static final String SMS_CARRIER_PROVISION_ACTION = "android.provider.Telephony.SMS_CARRIER_PROVISION";
-  }
-
-  public static final class VoicemailContract.Voicemails implements android.provider.BaseColumns android.provider.OpenableColumns {
-    field public static final String _DATA = "_data";
-  }
-
-}
-
-package android.security {
-
-  public class KeyStoreException extends java.lang.Exception {
-    ctor public KeyStoreException(int, String);
-    method public int getErrorCode();
-  }
-
-}
-
-package android.security.keystore {
-
-  public abstract class AttestationUtils {
-    method @NonNull @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public static java.security.cert.X509Certificate[] attestDeviceIds(android.content.Context, @NonNull int[], @NonNull byte[]) throws android.security.keystore.DeviceIdAttestationException;
-    field public static final int ID_TYPE_IMEI = 2; // 0x2
-    field public static final int ID_TYPE_MEID = 3; // 0x3
-    field public static final int ID_TYPE_SERIAL = 1; // 0x1
-    field public static final int USE_INDIVIDUAL_ATTESTATION = 4; // 0x4
-  }
-
-  public class DeviceIdAttestationException extends java.lang.Exception {
-    ctor public DeviceIdAttestationException(@Nullable String);
-    ctor public DeviceIdAttestationException(@Nullable String, @Nullable Throwable);
-  }
-
-  public static final class KeyGenParameterSpec.Builder {
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUniqueIdIncluded(boolean);
-  }
-
-  public final class KeyProtection implements java.security.KeyStore.ProtectionParameter {
-    method public long getBoundToSpecificSecureUserId();
-  }
-
-  public static final class KeyProtection.Builder {
-    method public android.security.keystore.KeyProtection.Builder setBoundToSpecificSecureUserId(long);
-  }
-
-}
-
-package android.service.appprediction {
-
-  public abstract class AppPredictionService extends android.app.Service {
-    ctor public AppPredictionService();
-    method @MainThread public abstract void onAppTargetEvent(@NonNull android.app.prediction.AppPredictionSessionId, @NonNull android.app.prediction.AppTargetEvent);
-    method @NonNull public final android.os.IBinder onBind(@NonNull android.content.Intent);
-    method public void onCreatePredictionSession(@NonNull android.app.prediction.AppPredictionContext, @NonNull android.app.prediction.AppPredictionSessionId);
-    method @MainThread public void onDestroyPredictionSession(@NonNull android.app.prediction.AppPredictionSessionId);
-    method @MainThread public abstract void onLaunchLocationShown(@NonNull android.app.prediction.AppPredictionSessionId, @NonNull String, @NonNull java.util.List<android.app.prediction.AppTargetId>);
-    method @MainThread public abstract void onRequestPredictionUpdate(@NonNull android.app.prediction.AppPredictionSessionId);
-    method @MainThread public abstract void onSortAppTargets(@NonNull android.app.prediction.AppPredictionSessionId, @NonNull java.util.List<android.app.prediction.AppTarget>, @NonNull android.os.CancellationSignal, @NonNull java.util.function.Consumer<java.util.List<android.app.prediction.AppTarget>>);
-    method @MainThread public void onStartPredictionUpdates();
-    method @MainThread public void onStopPredictionUpdates();
-    method public final void updatePredictions(@NonNull android.app.prediction.AppPredictionSessionId, @NonNull java.util.List<android.app.prediction.AppTarget>);
-  }
-
-}
-
-package android.service.autofill {
-
-  public abstract class AutofillFieldClassificationService extends android.app.Service {
-    ctor public AutofillFieldClassificationService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    field public static final String REQUIRED_ALGORITHM_CREDIT_CARD = "CREDIT_CARD";
-    field public static final String REQUIRED_ALGORITHM_EDIT_DISTANCE = "EDIT_DISTANCE";
-    field public static final String REQUIRED_ALGORITHM_EXACT_MATCH = "EXACT_MATCH";
-    field public static final String SERVICE_INTERFACE = "android.service.autofill.AutofillFieldClassificationService";
-    field public static final String SERVICE_META_DATA_KEY_AVAILABLE_ALGORITHMS = "android.autofill.field_classification.available_algorithms";
-    field public static final String SERVICE_META_DATA_KEY_DEFAULT_ALGORITHM = "android.autofill.field_classification.default_algorithm";
-  }
-
-  public final class CharSequenceTransformation extends android.service.autofill.InternalTransformation implements android.os.Parcelable android.service.autofill.Transformation {
-    method public void apply(@NonNull android.service.autofill.ValueFinder, @NonNull android.widget.RemoteViews, int) throws java.lang.Exception;
-  }
-
-  public final class CompositeUserData implements android.os.Parcelable {
-    ctor public CompositeUserData(@Nullable android.service.autofill.UserData, @NonNull android.service.autofill.UserData);
-    method public int describeContents();
-    method public String[] getCategoryIds();
-    method public android.os.Bundle getDefaultFieldClassificationArgs();
-    method @Nullable public String getFieldClassificationAlgorithm();
-    method @Nullable public String getFieldClassificationAlgorithmForCategory(@NonNull String);
-    method public android.util.ArrayMap<java.lang.String,java.lang.String> getFieldClassificationAlgorithms();
-    method public android.util.ArrayMap<java.lang.String,android.os.Bundle> getFieldClassificationArgs();
-    method public String[] getValues();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.CompositeUserData> CREATOR;
-  }
-
-  public final class CustomDescription implements android.os.Parcelable {
-    method @Nullable public android.util.SparseArray<android.service.autofill.InternalOnClickAction> getActions();
-  }
-
-  public static final class Dataset.Builder {
-    ctor public Dataset.Builder(@NonNull android.service.autofill.InlinePresentation);
-    method @NonNull public android.service.autofill.Dataset.Builder setFieldInlinePresentation(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue, @Nullable java.util.regex.Pattern, @NonNull android.service.autofill.InlinePresentation);
-  }
-
-  public final class DateTransformation extends android.service.autofill.InternalTransformation implements android.os.Parcelable android.service.autofill.Transformation {
-    method public void apply(@NonNull android.service.autofill.ValueFinder, @NonNull android.widget.RemoteViews, int) throws java.lang.Exception;
-  }
-
-  public final class DateValueSanitizer extends android.service.autofill.InternalSanitizer implements android.os.Parcelable android.service.autofill.Sanitizer {
-    method @Nullable public android.view.autofill.AutofillValue sanitize(@NonNull android.view.autofill.AutofillValue);
-  }
-
-  public final class FillResponse implements android.os.Parcelable {
-    method public int getFlags();
-  }
-
-  public final class ImageTransformation extends android.service.autofill.InternalTransformation implements android.os.Parcelable android.service.autofill.Transformation {
-    method public void apply(@NonNull android.service.autofill.ValueFinder, @NonNull android.widget.RemoteViews, int) throws java.lang.Exception;
-  }
-
-  public abstract class InlineSuggestionRenderService extends android.app.Service {
-    ctor public InlineSuggestionRenderService();
-    method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
-    method @NonNull public android.os.Bundle onGetInlineSuggestionsRendererInfo();
-    method @Nullable public android.view.View onRenderSuggestion(@NonNull android.service.autofill.InlinePresentation, int, int);
-    method public final void startIntentSender(@NonNull android.content.IntentSender);
-    field public static final String SERVICE_INTERFACE = "android.service.autofill.InlineSuggestionRenderService";
-  }
-
-  public abstract class InternalOnClickAction implements android.service.autofill.OnClickAction android.os.Parcelable {
-    ctor public InternalOnClickAction();
-    method public abstract void onClick(@NonNull android.view.ViewGroup);
-  }
-
-  public abstract class InternalSanitizer implements android.os.Parcelable android.service.autofill.Sanitizer {
-    ctor public InternalSanitizer();
-    method @Nullable public abstract android.view.autofill.AutofillValue sanitize(@NonNull android.view.autofill.AutofillValue);
-  }
-
-  public abstract class InternalTransformation implements android.os.Parcelable android.service.autofill.Transformation {
-    ctor public InternalTransformation();
-    method public static boolean batchApply(@NonNull android.service.autofill.ValueFinder, @NonNull android.widget.RemoteViews, @NonNull java.util.ArrayList<android.util.Pair<java.lang.Integer,android.service.autofill.InternalTransformation>>);
-  }
-
-  public abstract class InternalValidator implements android.os.Parcelable android.service.autofill.Validator {
-    ctor public InternalValidator();
-    method public abstract boolean isValid(@NonNull android.service.autofill.ValueFinder);
-  }
-
-  public final class LuhnChecksumValidator extends android.service.autofill.InternalValidator implements android.os.Parcelable android.service.autofill.Validator {
-    method public boolean isValid(@NonNull android.service.autofill.ValueFinder);
-  }
-
-  public final class RegexValidator extends android.service.autofill.InternalValidator implements android.os.Parcelable android.service.autofill.Validator {
-    method public boolean isValid(@NonNull android.service.autofill.ValueFinder);
-  }
-
-  public final class TextValueSanitizer extends android.service.autofill.InternalSanitizer implements android.os.Parcelable android.service.autofill.Sanitizer {
-    method @Nullable public android.view.autofill.AutofillValue sanitize(@NonNull android.view.autofill.AutofillValue);
-  }
-
-  public final class UserData implements android.os.Parcelable {
-    method public android.util.ArrayMap<java.lang.String,java.lang.String> getFieldClassificationAlgorithms();
-  }
-
-  public interface ValueFinder {
-    method @Nullable public default String findByAutofillId(@NonNull android.view.autofill.AutofillId);
-    method @Nullable public android.view.autofill.AutofillValue findRawValueByAutofillId(@NonNull android.view.autofill.AutofillId);
-  }
-
-  public final class VisibilitySetterAction extends android.service.autofill.InternalOnClickAction implements android.service.autofill.OnClickAction android.os.Parcelable {
-    method public void onClick(@NonNull android.view.ViewGroup);
-  }
-
-}
-
-package android.service.autofill.augmented {
-
-  public abstract class AugmentedAutofillService extends android.app.Service {
-    ctor public AugmentedAutofillService();
-    method protected final void dump(java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method protected void dump(@NonNull java.io.PrintWriter, @NonNull String[]);
-    method @Nullable public final android.service.autofill.FillEventHistory getFillEventHistory();
-    method public void onConnected();
-    method public void onDisconnected();
-    method public void onFillRequest(@NonNull android.service.autofill.augmented.FillRequest, @NonNull android.os.CancellationSignal, @NonNull android.service.autofill.augmented.FillController, @NonNull android.service.autofill.augmented.FillCallback);
-    method public final boolean requestAutofill(@NonNull android.content.ComponentName, @NonNull android.view.autofill.AutofillId);
-    field public static final String SERVICE_INTERFACE = "android.service.autofill.augmented.AugmentedAutofillService";
-  }
-
-  public final class FillCallback {
-    method public void onSuccess(@Nullable android.service.autofill.augmented.FillResponse);
-  }
-
-  public final class FillController {
-    method public void autofill(@NonNull java.util.List<android.util.Pair<android.view.autofill.AutofillId,android.view.autofill.AutofillValue>>);
-  }
-
-  public final class FillRequest {
-    method @NonNull public android.content.ComponentName getActivityComponent();
-    method @NonNull public android.view.autofill.AutofillId getFocusedId();
-    method @NonNull public android.view.autofill.AutofillValue getFocusedValue();
-    method @Nullable public android.view.inputmethod.InlineSuggestionsRequest getInlineSuggestionsRequest();
-    method @Nullable public android.service.autofill.augmented.PresentationParams getPresentationParams();
-    method public int getTaskId();
-  }
-
-  public final class FillResponse {
-  }
-
-  public static final class FillResponse.Builder {
-    ctor public FillResponse.Builder();
-    method @NonNull public android.service.autofill.augmented.FillResponse build();
-    method @NonNull public android.service.autofill.augmented.FillResponse.Builder setClientState(@NonNull android.os.Bundle);
-    method @NonNull public android.service.autofill.augmented.FillResponse.Builder setFillWindow(@NonNull android.service.autofill.augmented.FillWindow);
-    method @NonNull public android.service.autofill.augmented.FillResponse.Builder setInlineSuggestions(@NonNull java.util.List<android.service.autofill.Dataset>);
-  }
-
-  public final class FillWindow implements java.lang.AutoCloseable {
-    ctor public FillWindow();
-    method public void destroy();
-    method public boolean update(@NonNull android.service.autofill.augmented.PresentationParams.Area, @NonNull android.view.View, long);
-  }
-
-  public abstract class PresentationParams {
-    method @Nullable public android.service.autofill.augmented.PresentationParams.Area getSuggestionArea();
-  }
-
-  public abstract static class PresentationParams.Area {
-    method @NonNull public android.graphics.Rect getBounds();
-  }
-
-}
-
-package android.service.contentcapture {
-
-  public final class ActivityEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.content.ComponentName getComponentName();
-    method public int getEventType();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.contentcapture.ActivityEvent> CREATOR;
-    field public static final int TYPE_ACTIVITY_DESTROYED = 24; // 0x18
-    field public static final int TYPE_ACTIVITY_PAUSED = 2; // 0x2
-    field public static final int TYPE_ACTIVITY_RESUMED = 1; // 0x1
-    field public static final int TYPE_ACTIVITY_STOPPED = 23; // 0x17
-  }
-
-  public abstract class ContentCaptureService extends android.app.Service {
-    ctor public ContentCaptureService();
-    method public final void disableSelf();
-    method public void onActivityEvent(@NonNull android.service.contentcapture.ActivityEvent);
-    method public void onActivitySnapshot(@NonNull android.view.contentcapture.ContentCaptureSessionId, @NonNull android.service.contentcapture.SnapshotData);
-    method public void onConnected();
-    method public void onContentCaptureEvent(@NonNull android.view.contentcapture.ContentCaptureSessionId, @NonNull android.view.contentcapture.ContentCaptureEvent);
-    method public void onCreateContentCaptureSession(@NonNull android.view.contentcapture.ContentCaptureContext, @NonNull android.view.contentcapture.ContentCaptureSessionId);
-    method public void onDataRemovalRequest(@NonNull android.view.contentcapture.DataRemovalRequest);
-    method public void onDataShareRequest(@NonNull android.view.contentcapture.DataShareRequest, @NonNull android.service.contentcapture.DataShareCallback);
-    method public void onDestroyContentCaptureSession(@NonNull android.view.contentcapture.ContentCaptureSessionId);
-    method public void onDisconnected();
-    method public final void setContentCaptureConditions(@NonNull String, @Nullable java.util.Set<android.view.contentcapture.ContentCaptureCondition>);
-    method public final void setContentCaptureWhitelist(@Nullable java.util.Set<java.lang.String>, @Nullable java.util.Set<android.content.ComponentName>);
-    field public static final String SERVICE_INTERFACE = "android.service.contentcapture.ContentCaptureService";
-    field public static final String SERVICE_META_DATA = "android.content_capture";
-  }
-
-  public interface DataShareCallback {
-    method public void onAccept(@NonNull java.util.concurrent.Executor, @NonNull android.service.contentcapture.DataShareReadAdapter);
-    method public void onReject();
-  }
-
-  public interface DataShareReadAdapter {
-    method public void onError(int);
-    method public void onStart(@NonNull android.os.ParcelFileDescriptor);
-  }
-
-  public final class SnapshotData implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.app.assist.AssistContent getAssistContent();
-    method @NonNull public android.os.Bundle getAssistData();
-    method @NonNull public android.app.assist.AssistStructure getAssistStructure();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.contentcapture.SnapshotData> CREATOR;
-  }
-
-}
-
-package android.service.notification {
-
-  public final class Adjustment implements android.os.Parcelable {
-    ctor public Adjustment(String, String, android.os.Bundle, CharSequence, int);
-    ctor public Adjustment(@NonNull String, @NonNull String, @NonNull android.os.Bundle, @NonNull CharSequence, @NonNull android.os.UserHandle);
-    method public int describeContents();
-    method @NonNull public CharSequence getExplanation();
-    method @NonNull public String getKey();
-    method @NonNull public String getPackage();
-    method @NonNull public android.os.Bundle getSignals();
-    method public int getUser();
-    method @NonNull public android.os.UserHandle getUserHandle();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.Adjustment> CREATOR;
-    field public static final String KEY_CONTEXTUAL_ACTIONS = "key_contextual_actions";
-    field public static final String KEY_IMPORTANCE = "key_importance";
-    field public static final String KEY_RANKING_SCORE = "key_ranking_score";
-    field public static final String KEY_SNOOZE_CRITERIA = "key_snooze_criteria";
-    field public static final String KEY_TEXT_REPLIES = "key_text_replies";
-    field public static final String KEY_USER_SENTIMENT = "key_user_sentiment";
-  }
-
-  @Deprecated public abstract class ConditionProviderService extends android.app.Service {
-    method @Deprecated public boolean isBound();
-  }
-
-  public abstract class NotificationAssistantService extends android.service.notification.NotificationListenerService {
-    ctor public NotificationAssistantService();
-    method public final void adjustNotification(@NonNull android.service.notification.Adjustment);
-    method public final void adjustNotifications(@NonNull java.util.List<android.service.notification.Adjustment>);
-    method public void onActionInvoked(@NonNull String, @NonNull android.app.Notification.Action, int);
-    method public void onAllowedAdjustmentsChanged();
-    method @NonNull public final android.os.IBinder onBind(@Nullable android.content.Intent);
-    method public void onNotificationDirectReplied(@NonNull String);
-    method @Nullable public abstract android.service.notification.Adjustment onNotificationEnqueued(@NonNull android.service.notification.StatusBarNotification);
-    method @Nullable public android.service.notification.Adjustment onNotificationEnqueued(@NonNull android.service.notification.StatusBarNotification, @NonNull android.app.NotificationChannel);
-    method public void onNotificationExpansionChanged(@NonNull String, boolean, boolean);
-    method public abstract void onNotificationSnoozedUntilContext(@NonNull android.service.notification.StatusBarNotification, @NonNull String);
-    method public void onNotificationVisibilityChanged(@NonNull String, boolean);
-    method public void onNotificationsSeen(@NonNull java.util.List<java.lang.String>);
-    method public void onPanelHidden();
-    method public void onPanelRevealed(int);
-    method public void onSuggestedReplySent(@NonNull String, @NonNull CharSequence, int);
-    method public final void unsnoozeNotification(@NonNull String);
-    field public static final String SERVICE_INTERFACE = "android.service.notification.NotificationAssistantService";
-    field public static final int SOURCE_FROM_APP = 0; // 0x0
-    field public static final int SOURCE_FROM_ASSISTANT = 1; // 0x1
-  }
-
-  public abstract class NotificationListenerService extends android.app.Service {
-    method public void onNotificationRemoved(@NonNull android.service.notification.StatusBarNotification, @NonNull android.service.notification.NotificationListenerService.RankingMap, @NonNull android.service.notification.NotificationStats, int);
-  }
-
-  public final class NotificationStats implements android.os.Parcelable {
-    ctor public NotificationStats();
-    method public int describeContents();
-    method public int getDismissalSentiment();
-    method public int getDismissalSurface();
-    method public boolean hasDirectReplied();
-    method public boolean hasExpanded();
-    method public boolean hasInteracted();
-    method public boolean hasSeen();
-    method public boolean hasSnoozed();
-    method public boolean hasViewedSettings();
-    method public void setDirectReplied();
-    method public void setDismissalSentiment(int);
-    method public void setDismissalSurface(int);
-    method public void setExpanded();
-    method public void setSeen();
-    method public void setSnoozed();
-    method public void setViewedSettings();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.NotificationStats> CREATOR;
-    field public static final int DISMISSAL_AOD = 2; // 0x2
-    field public static final int DISMISSAL_NOT_DISMISSED = -1; // 0xffffffff
-    field public static final int DISMISSAL_OTHER = 0; // 0x0
-    field public static final int DISMISSAL_PEEK = 1; // 0x1
-    field public static final int DISMISSAL_SHADE = 3; // 0x3
-    field public static final int DISMISS_SENTIMENT_NEGATIVE = 0; // 0x0
-    field public static final int DISMISS_SENTIMENT_NEUTRAL = 1; // 0x1
-    field public static final int DISMISS_SENTIMENT_POSITIVE = 2; // 0x2
-    field public static final int DISMISS_SENTIMENT_UNKNOWN = -1000; // 0xfffffc18
-  }
-
-  public final class SnoozeCriterion implements android.os.Parcelable {
-    ctor public SnoozeCriterion(String, CharSequence, CharSequence);
-    ctor protected SnoozeCriterion(android.os.Parcel);
-    method public int describeContents();
-    method public CharSequence getConfirmation();
-    method public CharSequence getExplanation();
-    method public String getId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.SnoozeCriterion> CREATOR;
-  }
-
-}
-
-package android.service.quickaccesswallet {
-
-  public interface QuickAccessWalletClient extends java.io.Closeable {
-    method public void addWalletServiceEventListener(@NonNull android.service.quickaccesswallet.QuickAccessWalletClient.WalletServiceEventListener);
-    method public void addWalletServiceEventListener(@NonNull java.util.concurrent.Executor, @NonNull android.service.quickaccesswallet.QuickAccessWalletClient.WalletServiceEventListener);
-    method @NonNull public static android.service.quickaccesswallet.QuickAccessWalletClient create(@NonNull android.content.Context);
-    method @Nullable public android.content.Intent createWalletIntent();
-    method @Nullable public android.content.Intent createWalletSettingsIntent();
-    method public void disconnect();
-    method public void getWalletCards(@NonNull android.service.quickaccesswallet.GetWalletCardsRequest, @NonNull android.service.quickaccesswallet.QuickAccessWalletClient.OnWalletCardsRetrievedCallback);
-    method public void getWalletCards(@NonNull java.util.concurrent.Executor, @NonNull android.service.quickaccesswallet.GetWalletCardsRequest, @NonNull android.service.quickaccesswallet.QuickAccessWalletClient.OnWalletCardsRetrievedCallback);
-    method public boolean isWalletFeatureAvailable();
-    method public boolean isWalletFeatureAvailableWhenDeviceLocked();
-    method public boolean isWalletServiceAvailable();
-    method public void notifyWalletDismissed();
-    method public void removeWalletServiceEventListener(@NonNull android.service.quickaccesswallet.QuickAccessWalletClient.WalletServiceEventListener);
-    method public void selectWalletCard(@NonNull android.service.quickaccesswallet.SelectWalletCardRequest);
-  }
-
-  public static interface QuickAccessWalletClient.OnWalletCardsRetrievedCallback {
-    method public void onWalletCardRetrievalError(@NonNull android.service.quickaccesswallet.GetWalletCardsError);
-    method public void onWalletCardsRetrieved(@NonNull android.service.quickaccesswallet.GetWalletCardsResponse);
-  }
-
-  public static interface QuickAccessWalletClient.WalletServiceEventListener {
-    method public void onWalletServiceEvent(@NonNull android.service.quickaccesswallet.WalletServiceEvent);
-  }
-
-}
-
-package android.service.quicksettings {
-
-  public class TileService extends android.app.Service {
-    method public static boolean isQuickSettingsSupported();
-  }
-
-}
-
-package android.service.textclassifier {
-
-  public abstract class TextClassifierService extends android.app.Service {
-    ctor public TextClassifierService();
-    method @NonNull public static android.view.textclassifier.TextClassifier getDefaultTextClassifierImplementation(@NonNull android.content.Context);
-    method @Deprecated public final android.view.textclassifier.TextClassifier getLocalTextClassifier();
-    method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
-    method @MainThread public abstract void onClassifyText(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextClassification.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextClassification>);
-    method public void onConnected();
-    method @MainThread public void onCreateTextClassificationSession(@NonNull android.view.textclassifier.TextClassificationContext, @NonNull android.view.textclassifier.TextClassificationSessionId);
-    method @MainThread public void onDestroyTextClassificationSession(@NonNull android.view.textclassifier.TextClassificationSessionId);
-    method @MainThread public void onDetectLanguage(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextLanguage.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextLanguage>);
-    method public void onDisconnected();
-    method @MainThread public abstract void onGenerateLinks(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextLinks.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextLinks>);
-    method @Deprecated @MainThread public void onSelectionEvent(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.SelectionEvent);
-    method @MainThread public void onSuggestConversationActions(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.ConversationActions.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.ConversationActions>);
-    method @MainThread public abstract void onSuggestSelection(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextSelection.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextSelection>);
-    method @MainThread public void onTextClassifierEvent(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextClassifierEvent);
-    field public static final String SERVICE_INTERFACE = "android.service.textclassifier.TextClassifierService";
-  }
-
-  public static interface TextClassifierService.Callback<T> {
-    method public void onFailure(@NonNull CharSequence);
-    method public void onSuccess(T);
-  }
-
-}
-
-package android.service.watchdog {
-
-  public abstract class ExplicitHealthCheckService extends android.app.Service {
-    ctor public ExplicitHealthCheckService();
-    method public final void notifyHealthCheckPassed(@NonNull String);
-    method @NonNull public final android.os.IBinder onBind(@NonNull android.content.Intent);
-    method public abstract void onCancelHealthCheck(@NonNull String);
-    method @NonNull public abstract java.util.List<java.lang.String> onGetRequestedPackages();
-    method @NonNull public abstract java.util.List<android.service.watchdog.ExplicitHealthCheckService.PackageConfig> onGetSupportedPackages();
-    method public abstract void onRequestHealthCheck(@NonNull String);
-    method public void setCallback(@Nullable android.os.RemoteCallback);
-    field public static final String BIND_PERMISSION = "android.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE";
-    field public static final String SERVICE_INTERFACE = "android.service.watchdog.ExplicitHealthCheckService";
-  }
-
-  public static final class ExplicitHealthCheckService.PackageConfig implements android.os.Parcelable {
-    ctor public ExplicitHealthCheckService.PackageConfig(@NonNull String, long);
-    method public int describeContents();
-    method public long getHealthCheckTimeoutMillis();
-    method @NonNull public String getPackageName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.watchdog.ExplicitHealthCheckService.PackageConfig> CREATOR;
-  }
-
-}
-
-package android.telecom {
-
-  public final class Call {
-    method public void enterBackgroundAudioProcessing();
-    method public void exitBackgroundAudioProcessing(boolean);
-  }
-
-  public static class Call.Details {
-    method public String getTelecomCallId();
-  }
-
-  public final class CallAudioState implements android.os.Parcelable {
-    ctor public CallAudioState(boolean, int, int, @Nullable android.bluetooth.BluetoothDevice, @NonNull java.util.Collection<android.bluetooth.BluetoothDevice>);
-  }
-
-  public static class CallScreeningService.CallResponse.Builder {
-    method @NonNull @RequiresPermission(android.Manifest.permission.CAPTURE_AUDIO_OUTPUT) public android.telecom.CallScreeningService.CallResponse.Builder setShouldScreenCallViaAudioProcessing(boolean);
-  }
-
-  public abstract class Conference extends android.telecom.Conferenceable {
-    method public android.telecom.Connection getPrimaryConnection();
-    method @NonNull public final String getTelecomCallId();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public final void setAddress(@NonNull android.net.Uri, int);
-    method public final void setCallerDisplayName(@NonNull String, int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setConferenceState(boolean);
-  }
-
-  public abstract class Connection extends android.telecom.Conferenceable {
-    method @IntRange(from=0) public final long getConnectTimeMillis();
-    method public final long getConnectionStartElapsedRealtimeMillis();
-    method @Nullable public android.telecom.PhoneAccountHandle getPhoneAccountHandle();
-    method @Nullable public final String getTelecomCallId();
-    method public final void resetConnectionTime();
-    method public void setCallDirection(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public final void setConnectTimeMillis(@IntRange(from=0) long);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public final void setConnectionStartElapsedRealtimeMillis(long);
-    method public void setPhoneAccountHandle(@NonNull android.telecom.PhoneAccountHandle);
-    method public void setTelecomCallId(@NonNull String);
-    field public static final int CAPABILITY_CONFERENCE_HAS_NO_CHILDREN = 2097152; // 0x200000
-    field public static final int CAPABILITY_SPEED_UP_MT_AUDIO = 262144; // 0x40000
-    field public static final String EXTRA_DISABLE_ADD_CALL = "android.telecom.extra.DISABLE_ADD_CALL";
-    field public static final int PROPERTY_EMERGENCY_CALLBACK_MODE = 1; // 0x1
-    field public static final int PROPERTY_GENERIC_CONFERENCE = 2; // 0x2
-    field public static final int PROPERTY_IS_DOWNGRADED_CONFERENCE = 64; // 0x40
-    field public static final int PROPERTY_REMOTELY_HOSTED = 2048; // 0x800
-  }
-
-  public final class ConnectionRequest implements android.os.Parcelable {
-    method @Nullable public String getTelecomCallId();
-  }
-
-  public static final class ConnectionRequest.Builder {
-    ctor public ConnectionRequest.Builder();
-    method @NonNull public android.telecom.ConnectionRequest build();
-    method @NonNull public android.telecom.ConnectionRequest.Builder setAccountHandle(@NonNull android.telecom.PhoneAccountHandle);
-    method @NonNull public android.telecom.ConnectionRequest.Builder setAddress(@NonNull android.net.Uri);
-    method @NonNull public android.telecom.ConnectionRequest.Builder setExtras(@NonNull android.os.Bundle);
-    method @NonNull public android.telecom.ConnectionRequest.Builder setIsAdhocConferenceCall(boolean);
-    method @NonNull public android.telecom.ConnectionRequest.Builder setParticipants(@Nullable java.util.List<android.net.Uri>);
-    method @NonNull public android.telecom.ConnectionRequest.Builder setRttPipeFromInCall(@NonNull android.os.ParcelFileDescriptor);
-    method @NonNull public android.telecom.ConnectionRequest.Builder setRttPipeToInCall(@NonNull android.os.ParcelFileDescriptor);
-    method @NonNull public android.telecom.ConnectionRequest.Builder setShouldShowIncomingCallUi(boolean);
-    method @NonNull public android.telecom.ConnectionRequest.Builder setTelecomCallId(@NonNull String);
-    method @NonNull public android.telecom.ConnectionRequest.Builder setVideoState(int);
-  }
-
-  public static class PhoneAccount.Builder {
-    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.telecom.PhoneAccount.Builder setGroupId(@NonNull String);
-  }
-
-  public class PhoneAccountSuggestionService extends android.app.Service {
-    ctor public PhoneAccountSuggestionService();
-    method public void onAccountSuggestionRequest(@NonNull String);
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public final void suggestPhoneAccounts(@NonNull String, @NonNull java.util.List<android.telecom.PhoneAccountSuggestion>);
-    field public static final String SERVICE_INTERFACE = "android.telecom.PhoneAccountSuggestionService";
-  }
-
-  public class TelecomManager {
-    method @NonNull public android.content.Intent createLaunchEmergencyDialerIntent(@Nullable String);
-    method @NonNull @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public java.util.List<android.telecom.PhoneAccountHandle> getCallCapablePhoneAccounts(boolean);
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public int getCurrentTtyMode();
-    method @Nullable @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getDefaultDialerPackage(@NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean isInEmergencyCall();
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PHONE_STATE}) public boolean isRinging();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setUserSelectedOutgoingPhoneAccount(@Nullable android.telecom.PhoneAccountHandle);
-    field public static final String ACTION_CURRENT_TTY_MODE_CHANGED = "android.telecom.action.CURRENT_TTY_MODE_CHANGED";
-    field public static final String ACTION_TTY_PREFERRED_MODE_CHANGED = "android.telecom.action.TTY_PREFERRED_MODE_CHANGED";
-    field public static final String EXTRA_CURRENT_TTY_MODE = "android.telecom.extra.CURRENT_TTY_MODE";
-    field public static final String EXTRA_TTY_PREFERRED_MODE = "android.telecom.extra.TTY_PREFERRED_MODE";
-    field public static final int TTY_MODE_FULL = 1; // 0x1
-    field public static final int TTY_MODE_HCO = 2; // 0x2
-    field public static final int TTY_MODE_OFF = 0; // 0x0
-    field public static final int TTY_MODE_VCO = 3; // 0x3
-  }
-
-}
-
-package android.telephony {
-
-  public final class AccessNetworkConstants {
-    field public static final int TRANSPORT_TYPE_INVALID = -1; // 0xffffffff
-  }
-
-  public static final class AccessNetworkConstants.NgranBands {
-    method public static int getFrequencyRangeGroup(int);
-    field public static final int FREQUENCY_RANGE_GROUP_1 = 1; // 0x1
-    field public static final int FREQUENCY_RANGE_GROUP_2 = 2; // 0x2
-    field public static final int FREQUENCY_RANGE_GROUP_UNKNOWN = 0; // 0x0
-  }
-
-  public final class BarringInfo implements android.os.Parcelable {
-    ctor public BarringInfo();
-    ctor public BarringInfo(@Nullable android.telephony.CellIdentity, @NonNull android.util.SparseArray<android.telephony.BarringInfo.BarringServiceInfo>);
-  }
-
-  public static final class BarringInfo.BarringServiceInfo implements android.os.Parcelable {
-    ctor public BarringInfo.BarringServiceInfo(int, boolean, int, int);
-  }
-
-  public final class CallQuality implements android.os.Parcelable {
-    ctor public CallQuality(int, int, int, int, int, int, int, int, int, int, int);
-    ctor public CallQuality(int, int, int, int, int, int, int, int, int, int, int, boolean, boolean, boolean);
-    method public int describeContents();
-    method public int getAverageRelativeJitter();
-    method public int getAverageRoundTripTime();
-    method public int getCallDuration();
-    method public int getCodecType();
-    method public int getDownlinkCallQualityLevel();
-    method public int getMaxRelativeJitter();
-    method public int getNumRtpPacketsNotReceived();
-    method public int getNumRtpPacketsReceived();
-    method public int getNumRtpPacketsTransmitted();
-    method public int getNumRtpPacketsTransmittedLost();
-    method public int getUplinkCallQualityLevel();
-    method public boolean isIncomingSilenceDetectedAtCallSetup();
-    method public boolean isOutgoingSilenceDetectedAtCallSetup();
-    method public boolean isRtpInactivityDetected();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CALL_QUALITY_BAD = 4; // 0x4
-    field public static final int CALL_QUALITY_EXCELLENT = 0; // 0x0
-    field public static final int CALL_QUALITY_FAIR = 2; // 0x2
-    field public static final int CALL_QUALITY_GOOD = 1; // 0x1
-    field public static final int CALL_QUALITY_NOT_AVAILABLE = 5; // 0x5
-    field public static final int CALL_QUALITY_POOR = 3; // 0x3
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CallQuality> CREATOR;
-  }
-
-  public class CarrierConfigManager {
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void overrideConfig(int, @Nullable android.os.PersistableBundle);
-  }
-
-  public final class DataSpecificRegistrationInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.telephony.LteVopsSupportInfo getLteVopsSupportInfo();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.DataSpecificRegistrationInfo> CREATOR;
-  }
-
-  public final class LteVopsSupportInfo implements android.os.Parcelable {
-    ctor public LteVopsSupportInfo(int, int);
-    method public int describeContents();
-    method public int getEmcBearerSupport();
-    method public int getVopsSupport();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.LteVopsSupportInfo> CREATOR;
-    field public static final int LTE_STATUS_NOT_AVAILABLE = 1; // 0x1
-    field public static final int LTE_STATUS_NOT_SUPPORTED = 3; // 0x3
-    field public static final int LTE_STATUS_SUPPORTED = 2; // 0x2
-  }
-
-  public class MbmsDownloadSession implements java.lang.AutoCloseable {
-    field public static final String MBMS_DOWNLOAD_SERVICE_OVERRIDE_METADATA = "mbms-download-service-override";
-  }
-
-  public class MbmsGroupCallSession implements java.lang.AutoCloseable {
-    field public static final String MBMS_GROUP_CALL_SERVICE_OVERRIDE_METADATA = "mbms-group-call-service-override";
-  }
-
-  public class MbmsStreamingSession implements java.lang.AutoCloseable {
-    field public static final String MBMS_STREAMING_SERVICE_OVERRIDE_METADATA = "mbms-streaming-service-override";
-  }
-
-  public final class NetworkRegistrationInfo implements android.os.Parcelable {
-    method @Nullable public android.telephony.DataSpecificRegistrationInfo getDataSpecificInfo();
-    method public int getRegistrationState();
-    method public int getRejectCause();
-    method public int getRoamingType();
-    method public boolean isEmergencyEnabled();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int REGISTRATION_STATE_DENIED = 3; // 0x3
-    field public static final int REGISTRATION_STATE_HOME = 1; // 0x1
-    field public static final int REGISTRATION_STATE_NOT_REGISTERED_OR_SEARCHING = 0; // 0x0
-    field public static final int REGISTRATION_STATE_NOT_REGISTERED_SEARCHING = 2; // 0x2
-    field public static final int REGISTRATION_STATE_ROAMING = 5; // 0x5
-    field public static final int REGISTRATION_STATE_UNKNOWN = 4; // 0x4
-  }
-
-  public static final class NetworkRegistrationInfo.Builder {
-    ctor public NetworkRegistrationInfo.Builder();
-    method @NonNull public android.telephony.NetworkRegistrationInfo build();
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setAccessNetworkTechnology(int);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setAvailableServices(@NonNull java.util.List<java.lang.Integer>);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setCellIdentity(@Nullable android.telephony.CellIdentity);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setDomain(int);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setEmergencyOnly(boolean);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setRegisteredPlmn(@Nullable String);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setRegistrationState(int);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setRejectCause(int);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setTransportType(int);
-  }
-
-  public class PhoneNumberUtils {
-    method public static int getMinMatchForTest();
-    method @NonNull public static String getUsernameFromUriNumber(@NonNull String);
-    method public static boolean isUriNumber(@Nullable String);
-    method public static boolean isVoiceMailNumber(@NonNull android.content.Context, int, @Nullable String);
-    method public static void setMinMatchForTest(int);
-  }
-
-  public class PhoneStateListener {
-    method public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber);
-    method public void onOutgoingEmergencySms(@NonNull android.telephony.emergency.EmergencyNumber);
-    field @RequiresPermission("android.permission.READ_ACTIVE_EMERGENCY_SESSION") public static final int LISTEN_OUTGOING_EMERGENCY_CALL = 268435456; // 0x10000000
-    field @RequiresPermission("android.permission.READ_ACTIVE_EMERGENCY_SESSION") public static final int LISTEN_OUTGOING_EMERGENCY_SMS = 536870912; // 0x20000000
-  }
-
-  public final class PreciseDataConnectionState implements android.os.Parcelable {
-    ctor @Deprecated public PreciseDataConnectionState(int, int, int, @NonNull String, @Nullable android.net.LinkProperties, int);
-  }
-
-  public class ServiceState implements android.os.Parcelable {
-    method public void addNetworkRegistrationInfo(android.telephony.NetworkRegistrationInfo);
-    method public int getDataNetworkType();
-    method public void setCdmaSystemAndNetworkId(int, int);
-    method public void setCellBandwidths(int[]);
-    method public void setChannelNumber(int);
-    method public void setDataRoamingType(int);
-    method public void setRilDataRadioTechnology(int);
-    method public void setRilVoiceRadioTechnology(int);
-    method public void setVoiceRoamingType(int);
-  }
-
-  public final class SmsManager {
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int checkSmsShortCodeDestination(String, String);
-    field public static final int SMS_CATEGORY_FREE_SHORT_CODE = 1; // 0x1
-    field public static final int SMS_CATEGORY_NOT_SHORT_CODE = 0; // 0x0
-    field public static final int SMS_CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE = 3; // 0x3
-    field public static final int SMS_CATEGORY_PREMIUM_SHORT_CODE = 4; // 0x4
-    field public static final int SMS_CATEGORY_STANDARD_SHORT_CODE = 2; // 0x2
-  }
-
-  public class SubscriptionManager {
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultVoiceSubscriptionId(int);
-    field @NonNull public static final android.net.Uri ADVANCED_CALLING_ENABLED_CONTENT_URI;
-    field @NonNull public static final android.net.Uri VT_ENABLED_CONTENT_URI;
-    field @NonNull public static final android.net.Uri WFC_ENABLED_CONTENT_URI;
-    field @NonNull public static final android.net.Uri WFC_MODE_CONTENT_URI;
-    field @NonNull public static final android.net.Uri WFC_ROAMING_ENABLED_CONTENT_URI;
-    field @NonNull public static final android.net.Uri WFC_ROAMING_MODE_CONTENT_URI;
-  }
-
-  public class TelephonyManager {
-    method public int addDevicePolicyOverrideApn(@NonNull android.content.Context, @NonNull android.telephony.data.ApnSetting);
-    method public int checkCarrierPrivilegesForPackage(String);
-    method @Nullable @RequiresPermission("android.permission.INTERACT_ACROSS_USERS") public android.content.ComponentName getAndUpdateDefaultRespondViaMessageApplication();
-    method public int getCarrierIdListVersion();
-    method public java.util.List<java.lang.String> getCarrierPackageNamesForIntent(android.content.Intent);
-    method @Nullable @RequiresPermission("android.permission.INTERACT_ACROSS_USERS") public android.content.ComponentName getDefaultRespondViaMessageApplication();
-    method @NonNull public java.util.List<android.telephony.data.ApnSetting> getDevicePolicyOverrideApns(@NonNull android.content.Context);
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public int getEmergencyNumberDbVersion();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getLine1AlphaTag();
-    method public android.util.Pair<java.lang.Integer,java.lang.Integer> getRadioHalVersion();
-    method public boolean modifyDevicePolicyOverrideApn(@NonNull android.content.Context, int, @NonNull android.telephony.data.ApnSetting);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void refreshUiccProfile();
-    method @RequiresPermission("android.permission.READ_ACTIVE_EMERGENCY_SESSION") public void resetOtaEmergencyNumberDbFilePath();
-    method @Deprecated public void setCarrierTestOverride(String, String, String, String, String, String, String);
-    method public void setCarrierTestOverride(String, String, String, String, String, String, String, String, String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSystemSelectionChannels(@NonNull java.util.List<android.telephony.RadioAccessSpecifier>, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSystemSelectionChannels(@NonNull java.util.List<android.telephony.RadioAccessSpecifier>);
-    method @RequiresPermission("android.permission.READ_ACTIVE_EMERGENCY_SESSION") public void updateOtaEmergencyNumberDbFilePath(@NonNull android.os.ParcelFileDescriptor);
-    field public static final int CARRIER_PRIVILEGE_STATUS_ERROR_LOADING_RULES = -2; // 0xfffffffe
-    field public static final int CARRIER_PRIVILEGE_STATUS_HAS_ACCESS = 1; // 0x1
-    field public static final int CARRIER_PRIVILEGE_STATUS_NO_ACCESS = 0; // 0x0
-    field public static final int CARRIER_PRIVILEGE_STATUS_RULES_NOT_LOADED = -1; // 0xffffffff
-    field public static final int INVALID_EMERGENCY_NUMBER_DB_VERSION = -1; // 0xffffffff
-    field public static final int UNKNOWN_CARRIER_ID_LIST_VERSION = -1; // 0xffffffff
-  }
-
-}
-
-package android.telephony.emergency {
-
-  public final class EmergencyNumber implements java.lang.Comparable<android.telephony.emergency.EmergencyNumber> android.os.Parcelable {
-    field public static final int EMERGENCY_NUMBER_SOURCE_TEST = 32; // 0x20
-  }
-
-}
-
-package android.telephony.ims {
-
-  public final class ImsCallForwardInfo implements android.os.Parcelable {
-    ctor public ImsCallForwardInfo(int, int, int, int, @NonNull String, int);
-    method public int describeContents();
-    method public int getCondition();
-    method public String getNumber();
-    method public int getServiceClass();
-    method public int getStatus();
-    method public int getTimeSeconds();
-    method public int getToA();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CDIV_CF_REASON_ALL = 4; // 0x4
-    field public static final int CDIV_CF_REASON_ALL_CONDITIONAL = 5; // 0x5
-    field public static final int CDIV_CF_REASON_BUSY = 1; // 0x1
-    field public static final int CDIV_CF_REASON_NOT_LOGGED_IN = 6; // 0x6
-    field public static final int CDIV_CF_REASON_NOT_REACHABLE = 3; // 0x3
-    field public static final int CDIV_CF_REASON_NO_REPLY = 2; // 0x2
-    field public static final int CDIV_CF_REASON_UNCONDITIONAL = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsCallForwardInfo> CREATOR;
-    field public static final int STATUS_ACTIVE = 1; // 0x1
-    field public static final int STATUS_NOT_ACTIVE = 0; // 0x0
-    field public static final int TYPE_OF_ADDRESS_INTERNATIONAL = 145; // 0x91
-    field public static final int TYPE_OF_ADDRESS_UNKNOWN = 129; // 0x81
-  }
-
-  public final class ImsCallProfile implements android.os.Parcelable {
-    ctor public ImsCallProfile();
-    ctor public ImsCallProfile(int, int);
-    ctor public ImsCallProfile(int, int, android.os.Bundle, android.telephony.ims.ImsStreamMediaProfile);
-    method public int describeContents();
-    method public String getCallExtra(String);
-    method public String getCallExtra(String, String);
-    method public boolean getCallExtraBoolean(String);
-    method public boolean getCallExtraBoolean(String, boolean);
-    method public int getCallExtraInt(String);
-    method public int getCallExtraInt(String, int);
-    method public android.os.Bundle getCallExtras();
-    method public int getCallType();
-    method public static int getCallTypeFromVideoState(int);
-    method public int getCallerNumberVerificationStatus();
-    method public int getEmergencyCallRouting();
-    method public int getEmergencyServiceCategories();
-    method @NonNull public java.util.List<java.lang.String> getEmergencyUrns();
-    method public android.telephony.ims.ImsStreamMediaProfile getMediaProfile();
-    method @NonNull public android.os.Bundle getProprietaryCallExtras();
-    method public int getRestrictCause();
-    method public int getServiceType();
-    method public static int getVideoStateFromCallType(int);
-    method public static int getVideoStateFromImsCallProfile(android.telephony.ims.ImsCallProfile);
-    method public boolean hasKnownUserIntentEmergency();
-    method public boolean isEmergencyCallTesting();
-    method public boolean isVideoCall();
-    method public boolean isVideoPaused();
-    method public static int presentationToOir(int);
-    method public void setCallExtra(String, String);
-    method public void setCallExtraBoolean(String, boolean);
-    method public void setCallExtraInt(String, int);
-    method public void setCallRestrictCause(int);
-    method public void setCallerNumberVerificationStatus(int);
-    method public void setEmergencyCallRouting(int);
-    method public void setEmergencyCallTesting(boolean);
-    method public void setEmergencyServiceCategories(int);
-    method public void setEmergencyUrns(@NonNull java.util.List<java.lang.String>);
-    method public void setHasKnownUserIntentEmergency(boolean);
-    method public void updateCallExtras(android.telephony.ims.ImsCallProfile);
-    method public void updateCallType(android.telephony.ims.ImsCallProfile);
-    method public void updateMediaProfile(android.telephony.ims.ImsCallProfile);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CALL_RESTRICT_CAUSE_DISABLED = 2; // 0x2
-    field public static final int CALL_RESTRICT_CAUSE_HD = 3; // 0x3
-    field public static final int CALL_RESTRICT_CAUSE_NONE = 0; // 0x0
-    field public static final int CALL_RESTRICT_CAUSE_RAT = 1; // 0x1
-    field public static final int CALL_TYPE_VIDEO_N_VOICE = 3; // 0x3
-    field public static final int CALL_TYPE_VOICE = 2; // 0x2
-    field public static final int CALL_TYPE_VOICE_N_VIDEO = 1; // 0x1
-    field public static final int CALL_TYPE_VS = 8; // 0x8
-    field public static final int CALL_TYPE_VS_RX = 10; // 0xa
-    field public static final int CALL_TYPE_VS_TX = 9; // 0x9
-    field public static final int CALL_TYPE_VT = 4; // 0x4
-    field public static final int CALL_TYPE_VT_NODIR = 7; // 0x7
-    field public static final int CALL_TYPE_VT_RX = 6; // 0x6
-    field public static final int CALL_TYPE_VT_TX = 5; // 0x5
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsCallProfile> CREATOR;
-    field public static final int DIALSTRING_NORMAL = 0; // 0x0
-    field public static final int DIALSTRING_SS_CONF = 1; // 0x1
-    field public static final int DIALSTRING_USSD = 2; // 0x2
-    field public static final String EXTRA_ADDITIONAL_CALL_INFO = "AdditionalCallInfo";
-    field public static final String EXTRA_ADDITIONAL_SIP_INVITE_FIELDS = "android.telephony.ims.extra.ADDITIONAL_SIP_INVITE_FIELDS";
-    field public static final String EXTRA_CALL_DISCONNECT_CAUSE = "android.telephony.ims.extra.CALL_DISCONNECT_CAUSE";
-    field public static final String EXTRA_CALL_NETWORK_TYPE = "android.telephony.ims.extra.CALL_NETWORK_TYPE";
-    field @Deprecated public static final String EXTRA_CALL_RAT_TYPE = "CallRadioTech";
-    field public static final String EXTRA_CHILD_NUMBER = "ChildNum";
-    field public static final String EXTRA_CNA = "cna";
-    field public static final String EXTRA_CNAP = "cnap";
-    field public static final String EXTRA_CODEC = "Codec";
-    field public static final String EXTRA_DIALSTRING = "dialstring";
-    field public static final String EXTRA_DISPLAY_TEXT = "DisplayText";
-    field public static final String EXTRA_EMERGENCY_CALL = "e_call";
-    field public static final String EXTRA_FORWARDED_NUMBER = "android.telephony.ims.extra.FORWARDED_NUMBER";
-    field public static final String EXTRA_IS_CALL_PULL = "CallPull";
-    field public static final String EXTRA_OEM_EXTRAS = "android.telephony.ims.extra.OEM_EXTRAS";
-    field public static final String EXTRA_OI = "oi";
-    field public static final String EXTRA_OIR = "oir";
-    field public static final String EXTRA_REMOTE_URI = "remote_uri";
-    field public static final String EXTRA_USSD = "ussd";
-    field public static final int OIR_DEFAULT = 0; // 0x0
-    field public static final int OIR_PRESENTATION_NOT_RESTRICTED = 2; // 0x2
-    field public static final int OIR_PRESENTATION_PAYPHONE = 4; // 0x4
-    field public static final int OIR_PRESENTATION_RESTRICTED = 1; // 0x1
-    field public static final int OIR_PRESENTATION_UNKNOWN = 3; // 0x3
-    field public static final int SERVICE_TYPE_EMERGENCY = 2; // 0x2
-    field public static final int SERVICE_TYPE_NONE = 0; // 0x0
-    field public static final int SERVICE_TYPE_NORMAL = 1; // 0x1
-    field public static final int VERIFICATION_STATUS_FAILED = 2; // 0x2
-    field public static final int VERIFICATION_STATUS_NOT_VERIFIED = 0; // 0x0
-    field public static final int VERIFICATION_STATUS_PASSED = 1; // 0x1
-  }
-
-  public class ImsCallSessionListener {
-    method public void callQualityChanged(@NonNull android.telephony.CallQuality);
-    method public void callSessionConferenceExtendFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionConferenceExtendReceived(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile);
-    method public void callSessionConferenceExtended(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile);
-    method public void callSessionConferenceStateUpdated(android.telephony.ims.ImsConferenceState);
-    method @Deprecated public void callSessionHandover(int, int, android.telephony.ims.ImsReasonInfo);
-    method @Deprecated public void callSessionHandoverFailed(int, int, android.telephony.ims.ImsReasonInfo);
-    method public void callSessionHeld(android.telephony.ims.ImsCallProfile);
-    method public void callSessionHoldFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionHoldReceived(android.telephony.ims.ImsCallProfile);
-    method public void callSessionInitiated(android.telephony.ims.ImsCallProfile);
-    method public void callSessionInitiatedFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionInviteParticipantsRequestDelivered();
-    method public void callSessionInviteParticipantsRequestFailed(android.telephony.ims.ImsReasonInfo);
-    method @Deprecated public void callSessionMayHandover(int, int);
-    method public void callSessionMergeComplete(android.telephony.ims.stub.ImsCallSessionImplBase);
-    method public void callSessionMergeFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionMergeStarted(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile);
-    method public void callSessionMultipartyStateChanged(boolean);
-    method public void callSessionProgressing(android.telephony.ims.ImsStreamMediaProfile);
-    method public void callSessionRemoveParticipantsRequestDelivered();
-    method public void callSessionRemoveParticipantsRequestFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionResumeFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionResumeReceived(android.telephony.ims.ImsCallProfile);
-    method public void callSessionResumed(android.telephony.ims.ImsCallProfile);
-    method public void callSessionRttAudioIndicatorChanged(@NonNull android.telephony.ims.ImsStreamMediaProfile);
-    method public void callSessionRttMessageReceived(String);
-    method public void callSessionRttModifyRequestReceived(android.telephony.ims.ImsCallProfile);
-    method public void callSessionRttModifyResponseReceived(int);
-    method public void callSessionSuppServiceReceived(android.telephony.ims.ImsSuppServiceNotification);
-    method public void callSessionTerminated(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionTtyModeReceived(int);
-    method public void callSessionUpdateFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionUpdateReceived(android.telephony.ims.ImsCallProfile);
-    method public void callSessionUpdated(android.telephony.ims.ImsCallProfile);
-    method public void callSessionUssdMessageReceived(int, String);
-    method public void onHandover(int, int, @Nullable android.telephony.ims.ImsReasonInfo);
-    method public void onHandoverFailed(int, int, @NonNull android.telephony.ims.ImsReasonInfo);
-    method public void onMayHandover(int, int);
-  }
-
-  public final class ImsConferenceState implements android.os.Parcelable {
-    method public int describeContents();
-    method public static int getConnectionStateForStatus(String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsConferenceState> CREATOR;
-    field public static final String DISPLAY_TEXT = "display-text";
-    field public static final String ENDPOINT = "endpoint";
-    field public static final String SIP_STATUS_CODE = "sipstatuscode";
-    field public static final String STATUS = "status";
-    field public static final String STATUS_ALERTING = "alerting";
-    field public static final String STATUS_CONNECTED = "connected";
-    field public static final String STATUS_CONNECT_FAIL = "connect-fail";
-    field public static final String STATUS_DIALING_IN = "dialing-in";
-    field public static final String STATUS_DIALING_OUT = "dialing-out";
-    field public static final String STATUS_DISCONNECTED = "disconnected";
-    field public static final String STATUS_DISCONNECTING = "disconnecting";
-    field public static final String STATUS_MUTED_VIA_FOCUS = "muted-via-focus";
-    field public static final String STATUS_ON_HOLD = "on-hold";
-    field public static final String STATUS_PENDING = "pending";
-    field public static final String STATUS_SEND_ONLY = "sendonly";
-    field public static final String STATUS_SEND_RECV = "sendrecv";
-    field public static final String USER = "user";
-    field public final java.util.HashMap<java.lang.String,android.os.Bundle> mParticipants;
-  }
-
-  public final class ImsException extends java.lang.Exception {
-    ctor public ImsException(@Nullable String);
-    ctor public ImsException(@Nullable String, int);
-    ctor public ImsException(@Nullable String, int, @Nullable Throwable);
-  }
-
-  public final class ImsExternalCallState implements android.os.Parcelable {
-    ctor public ImsExternalCallState(@NonNull String, @NonNull android.net.Uri, @Nullable android.net.Uri, boolean, int, int, boolean);
-    method public int describeContents();
-    method @NonNull public android.net.Uri getAddress();
-    method public int getCallId();
-    method public int getCallState();
-    method public int getCallType();
-    method @Nullable public android.net.Uri getLocalAddress();
-    method public boolean isCallHeld();
-    method public boolean isCallPullable();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CALL_STATE_CONFIRMED = 1; // 0x1
-    field public static final int CALL_STATE_TERMINATED = 2; // 0x2
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsExternalCallState> CREATOR;
-  }
-
-  public class ImsMmTelManager implements android.telephony.ims.RegistrationManager {
-    method @Deprecated @NonNull @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public static android.telephony.ims.ImsMmTelManager createForSubscriptionId(int);
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getFeatureState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>) throws android.telephony.ims.ImsException;
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getRegistrationState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public int getVoWiFiRoamingModeSetting();
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public boolean isAvailable(int, int);
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public boolean isCapable(int, int);
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void isSupported(int, int, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>) throws android.telephony.ims.ImsException;
-    method @Deprecated @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void registerImsRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ImsMmTelManager.RegistrationCallback) throws android.telephony.ims.ImsException;
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setAdvancedCallingSettingEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setRttCapabilitySetting(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiModeSetting(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiNonPersistent(boolean, int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiRoamingModeSetting(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiRoamingSettingEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiSettingEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVtSettingEnabled(boolean);
-    method @Deprecated @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.ImsMmTelManager.RegistrationCallback);
-  }
-
-  @Deprecated public static class ImsMmTelManager.RegistrationCallback extends android.telephony.ims.RegistrationManager.RegistrationCallback {
-    ctor @Deprecated public ImsMmTelManager.RegistrationCallback();
-  }
-
-  public class ImsService extends android.app.Service {
-    ctor public ImsService();
-    method public android.telephony.ims.feature.MmTelFeature createMmTelFeature(int);
-    method public android.telephony.ims.feature.RcsFeature createRcsFeature(int);
-    method public void disableIms(int);
-    method public void enableIms(int);
-    method public android.telephony.ims.stub.ImsConfigImplBase getConfig(int);
-    method public android.telephony.ims.stub.ImsRegistrationImplBase getRegistration(int);
-    method public final void onUpdateSupportedImsFeatures(android.telephony.ims.stub.ImsFeatureConfiguration) throws android.os.RemoteException;
-    method public android.telephony.ims.stub.ImsFeatureConfiguration querySupportedImsFeatures();
-    method public void readyForFeatureCreation();
-  }
-
-  public final class ImsSsData implements android.os.Parcelable {
-    ctor public ImsSsData(int, int, int, int, int);
-    method public int describeContents();
-    method @Nullable public java.util.List<android.telephony.ims.ImsCallForwardInfo> getCallForwardInfo();
-    method public int getRequestType();
-    method public int getResult();
-    method public int getServiceClass();
-    method public int getServiceType();
-    method @NonNull public java.util.List<android.telephony.ims.ImsSsInfo> getSuppServiceInfo();
-    method public int getTeleserviceType();
-    method public boolean isTypeBarring();
-    method public boolean isTypeCf();
-    method public boolean isTypeClip();
-    method public boolean isTypeClir();
-    method public boolean isTypeColp();
-    method public boolean isTypeColr();
-    method public boolean isTypeCw();
-    method public boolean isTypeIcb();
-    method public boolean isTypeInterrogation();
-    method public boolean isTypeUnConditional();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsSsData> CREATOR;
-    field public static final int RESULT_SUCCESS = 0; // 0x0
-    field public static final int SERVICE_CLASS_DATA = 2; // 0x2
-    field public static final int SERVICE_CLASS_DATA_CIRCUIT_ASYNC = 32; // 0x20
-    field public static final int SERVICE_CLASS_DATA_CIRCUIT_SYNC = 16; // 0x10
-    field public static final int SERVICE_CLASS_DATA_PACKET_ACCESS = 64; // 0x40
-    field public static final int SERVICE_CLASS_DATA_PAD = 128; // 0x80
-    field public static final int SERVICE_CLASS_FAX = 4; // 0x4
-    field public static final int SERVICE_CLASS_NONE = 0; // 0x0
-    field public static final int SERVICE_CLASS_SMS = 8; // 0x8
-    field public static final int SERVICE_CLASS_VOICE = 1; // 0x1
-    field public static final int SS_ACTIVATION = 0; // 0x0
-    field public static final int SS_ALL_BARRING = 18; // 0x12
-    field public static final int SS_ALL_DATA_TELESERVICES = 3; // 0x3
-    field public static final int SS_ALL_TELESERVICES_EXCEPT_SMS = 5; // 0x5
-    field public static final int SS_ALL_TELESEVICES = 1; // 0x1
-    field public static final int SS_ALL_TELE_AND_BEARER_SERVICES = 0; // 0x0
-    field public static final int SS_BAIC = 16; // 0x10
-    field public static final int SS_BAIC_ROAMING = 17; // 0x11
-    field public static final int SS_BAOC = 13; // 0xd
-    field public static final int SS_BAOIC = 14; // 0xe
-    field public static final int SS_BAOIC_EXC_HOME = 15; // 0xf
-    field public static final int SS_CFU = 0; // 0x0
-    field public static final int SS_CFUT = 6; // 0x6
-    field public static final int SS_CF_ALL = 4; // 0x4
-    field public static final int SS_CF_ALL_CONDITIONAL = 5; // 0x5
-    field public static final int SS_CF_BUSY = 1; // 0x1
-    field public static final int SS_CF_NOT_REACHABLE = 3; // 0x3
-    field public static final int SS_CF_NO_REPLY = 2; // 0x2
-    field public static final int SS_CLIP = 7; // 0x7
-    field public static final int SS_CLIR = 8; // 0x8
-    field public static final int SS_CNAP = 11; // 0xb
-    field public static final int SS_COLP = 9; // 0x9
-    field public static final int SS_COLR = 10; // 0xa
-    field public static final int SS_DEACTIVATION = 1; // 0x1
-    field public static final int SS_ERASURE = 4; // 0x4
-    field public static final int SS_INCOMING_BARRING = 20; // 0x14
-    field public static final int SS_INCOMING_BARRING_ANONYMOUS = 22; // 0x16
-    field public static final int SS_INCOMING_BARRING_DN = 21; // 0x15
-    field public static final int SS_INTERROGATION = 2; // 0x2
-    field public static final int SS_OUTGOING_BARRING = 19; // 0x13
-    field public static final int SS_REGISTRATION = 3; // 0x3
-    field public static final int SS_SMS_SERVICES = 4; // 0x4
-    field public static final int SS_TELEPHONY = 2; // 0x2
-    field public static final int SS_WAIT = 12; // 0xc
-  }
-
-  public static final class ImsSsData.Builder {
-    ctor public ImsSsData.Builder(int, int, int, int, int);
-    method @NonNull public android.telephony.ims.ImsSsData build();
-    method @NonNull public android.telephony.ims.ImsSsData.Builder setCallForwardingInfo(@NonNull java.util.List<android.telephony.ims.ImsCallForwardInfo>);
-    method @NonNull public android.telephony.ims.ImsSsData.Builder setSuppServiceInfo(@NonNull java.util.List<android.telephony.ims.ImsSsInfo>);
-  }
-
-  public final class ImsSsInfo implements android.os.Parcelable {
-    ctor @Deprecated public ImsSsInfo(int, @Nullable String);
-    method public int describeContents();
-    method public int getClirInterrogationStatus();
-    method public int getClirOutgoingState();
-    method @Deprecated public String getIcbNum();
-    method @Nullable public String getIncomingCommunicationBarringNumber();
-    method public int getProvisionStatus();
-    method public int getStatus();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CLIR_OUTGOING_DEFAULT = 0; // 0x0
-    field public static final int CLIR_OUTGOING_INVOCATION = 1; // 0x1
-    field public static final int CLIR_OUTGOING_SUPPRESSION = 2; // 0x2
-    field public static final int CLIR_STATUS_NOT_PROVISIONED = 0; // 0x0
-    field public static final int CLIR_STATUS_PROVISIONED_PERMANENT = 1; // 0x1
-    field public static final int CLIR_STATUS_TEMPORARILY_ALLOWED = 4; // 0x4
-    field public static final int CLIR_STATUS_TEMPORARILY_RESTRICTED = 3; // 0x3
-    field public static final int CLIR_STATUS_UNKNOWN = 2; // 0x2
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsSsInfo> CREATOR;
-    field public static final int DISABLED = 0; // 0x0
-    field public static final int ENABLED = 1; // 0x1
-    field public static final int NOT_REGISTERED = -1; // 0xffffffff
-    field public static final int SERVICE_NOT_PROVISIONED = 0; // 0x0
-    field public static final int SERVICE_PROVISIONED = 1; // 0x1
-    field public static final int SERVICE_PROVISIONING_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public static final class ImsSsInfo.Builder {
-    ctor public ImsSsInfo.Builder(int);
-    method @NonNull public android.telephony.ims.ImsSsInfo build();
-    method @NonNull public android.telephony.ims.ImsSsInfo.Builder setClirInterrogationStatus(int);
-    method @NonNull public android.telephony.ims.ImsSsInfo.Builder setClirOutgoingState(int);
-    method @NonNull public android.telephony.ims.ImsSsInfo.Builder setIncomingCommunicationBarringNumber(@NonNull String);
-    method @NonNull public android.telephony.ims.ImsSsInfo.Builder setProvisionStatus(int);
-  }
-
-  public final class ImsStreamMediaProfile implements android.os.Parcelable {
-    ctor public ImsStreamMediaProfile(int, int, int, int, int);
-    method public void copyFrom(android.telephony.ims.ImsStreamMediaProfile);
-    method public int describeContents();
-    method public int getAudioDirection();
-    method public int getAudioQuality();
-    method public int getRttMode();
-    method public int getVideoDirection();
-    method public int getVideoQuality();
-    method public boolean isReceivingRttAudio();
-    method public boolean isRttCall();
-    method public void setReceivingRttAudio(boolean);
-    method public void setRttMode(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int AUDIO_QUALITY_AMR = 1; // 0x1
-    field public static final int AUDIO_QUALITY_AMR_WB = 2; // 0x2
-    field public static final int AUDIO_QUALITY_EVRC = 4; // 0x4
-    field public static final int AUDIO_QUALITY_EVRC_B = 5; // 0x5
-    field public static final int AUDIO_QUALITY_EVRC_NW = 7; // 0x7
-    field public static final int AUDIO_QUALITY_EVRC_WB = 6; // 0x6
-    field public static final int AUDIO_QUALITY_EVS_FB = 20; // 0x14
-    field public static final int AUDIO_QUALITY_EVS_NB = 17; // 0x11
-    field public static final int AUDIO_QUALITY_EVS_SWB = 19; // 0x13
-    field public static final int AUDIO_QUALITY_EVS_WB = 18; // 0x12
-    field public static final int AUDIO_QUALITY_G711A = 13; // 0xd
-    field public static final int AUDIO_QUALITY_G711AB = 15; // 0xf
-    field public static final int AUDIO_QUALITY_G711U = 11; // 0xb
-    field public static final int AUDIO_QUALITY_G722 = 14; // 0xe
-    field public static final int AUDIO_QUALITY_G723 = 12; // 0xc
-    field public static final int AUDIO_QUALITY_G729 = 16; // 0x10
-    field public static final int AUDIO_QUALITY_GSM_EFR = 8; // 0x8
-    field public static final int AUDIO_QUALITY_GSM_FR = 9; // 0x9
-    field public static final int AUDIO_QUALITY_GSM_HR = 10; // 0xa
-    field public static final int AUDIO_QUALITY_NONE = 0; // 0x0
-    field public static final int AUDIO_QUALITY_QCELP13K = 3; // 0x3
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsStreamMediaProfile> CREATOR;
-    field public static final int DIRECTION_INACTIVE = 0; // 0x0
-    field public static final int DIRECTION_INVALID = -1; // 0xffffffff
-    field public static final int DIRECTION_RECEIVE = 1; // 0x1
-    field public static final int DIRECTION_SEND = 2; // 0x2
-    field public static final int DIRECTION_SEND_RECEIVE = 3; // 0x3
-    field public static final int RTT_MODE_DISABLED = 0; // 0x0
-    field public static final int RTT_MODE_FULL = 1; // 0x1
-    field public static final int VIDEO_QUALITY_NONE = 0; // 0x0
-    field public static final int VIDEO_QUALITY_QCIF = 1; // 0x1
-    field public static final int VIDEO_QUALITY_QVGA_LANDSCAPE = 2; // 0x2
-    field public static final int VIDEO_QUALITY_QVGA_PORTRAIT = 4; // 0x4
-    field public static final int VIDEO_QUALITY_VGA_LANDSCAPE = 8; // 0x8
-    field public static final int VIDEO_QUALITY_VGA_PORTRAIT = 16; // 0x10
-  }
-
-  public final class ImsSuppServiceNotification implements android.os.Parcelable {
-    ctor public ImsSuppServiceNotification(int, int, int, int, String, String[]);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsSuppServiceNotification> CREATOR;
-    field public final int code;
-    field public final String[] history;
-    field public final int index;
-    field public final int notificationType;
-    field public final String number;
-    field public final int type;
-  }
-
-  public class ImsUtListener {
-    method public void onLineIdentificationSupplementaryServiceResponse(int, @NonNull android.telephony.ims.ImsSsInfo);
-    method public void onSupplementaryServiceIndication(android.telephony.ims.ImsSsData);
-    method public void onUtConfigurationCallBarringQueried(int, android.telephony.ims.ImsSsInfo[]);
-    method public void onUtConfigurationCallForwardQueried(int, android.telephony.ims.ImsCallForwardInfo[]);
-    method public void onUtConfigurationCallWaitingQueried(int, android.telephony.ims.ImsSsInfo[]);
-    method @Deprecated public void onUtConfigurationQueried(int, android.os.Bundle);
-    method public void onUtConfigurationQueryFailed(int, android.telephony.ims.ImsReasonInfo);
-    method public void onUtConfigurationUpdateFailed(int, android.telephony.ims.ImsReasonInfo);
-    method public void onUtConfigurationUpdated(int);
-    field @Deprecated public static final String BUNDLE_KEY_CLIR = "queryClir";
-    field @Deprecated public static final String BUNDLE_KEY_SSINFO = "imsSsInfo";
-  }
-
-  public abstract class ImsVideoCallProvider {
-    ctor public ImsVideoCallProvider();
-    method public void changeCallDataUsage(long);
-    method public void changeCameraCapabilities(android.telecom.VideoProfile.CameraCapabilities);
-    method public void changePeerDimensions(int, int);
-    method public void changeVideoQuality(int);
-    method public void handleCallSessionEvent(int);
-    method public abstract void onRequestCallDataUsage();
-    method public abstract void onRequestCameraCapabilities();
-    method public abstract void onSendSessionModifyRequest(android.telecom.VideoProfile, android.telecom.VideoProfile);
-    method public abstract void onSendSessionModifyResponse(android.telecom.VideoProfile);
-    method public abstract void onSetCamera(String);
-    method public void onSetCamera(String, int);
-    method public abstract void onSetDeviceOrientation(int);
-    method public abstract void onSetDisplaySurface(android.view.Surface);
-    method public abstract void onSetPauseImage(android.net.Uri);
-    method public abstract void onSetPreviewSurface(android.view.Surface);
-    method public abstract void onSetZoom(float);
-    method public void receiveSessionModifyRequest(android.telecom.VideoProfile);
-    method public void receiveSessionModifyResponse(int, android.telecom.VideoProfile, android.telecom.VideoProfile);
-  }
-
-  public class ProvisioningManager {
-    method @NonNull public static android.telephony.ims.ProvisioningManager createForSubscriptionId(int);
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") @WorkerThread public int getProvisioningIntValue(int);
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") @WorkerThread public boolean getProvisioningStatusForCapability(int, int);
-    method @Nullable @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") @WorkerThread public String getProvisioningStringValue(int);
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") @WorkerThread public boolean getRcsProvisioningStatusForCapability(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void notifyRcsAutoConfigurationReceived(@NonNull byte[], boolean);
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void registerProvisioningChangedCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ProvisioningManager.Callback) throws android.telephony.ims.ImsException;
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public int setProvisioningIntValue(int, int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public void setProvisioningStatusForCapability(int, int, boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public int setProvisioningStringValue(int, @NonNull String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public void setRcsProvisioningStatusForCapability(int, boolean);
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void unregisterProvisioningChangedCallback(@NonNull android.telephony.ims.ProvisioningManager.Callback);
-    field public static final int KEY_VOICE_OVER_WIFI_ENTITLEMENT_ID = 67; // 0x43
-    field public static final int KEY_VOICE_OVER_WIFI_MODE_OVERRIDE = 27; // 0x1b
-    field public static final int KEY_VOICE_OVER_WIFI_ROAMING_ENABLED_OVERRIDE = 26; // 0x1a
-    field public static final int PROVISIONING_VALUE_DISABLED = 0; // 0x0
-    field public static final int PROVISIONING_VALUE_ENABLED = 1; // 0x1
-    field public static final String STRING_QUERY_RESULT_ERROR_GENERIC = "STRING_QUERY_RESULT_ERROR_GENERIC";
-    field public static final String STRING_QUERY_RESULT_ERROR_NOT_READY = "STRING_QUERY_RESULT_ERROR_NOT_READY";
-  }
-
-  public static class ProvisioningManager.Callback {
-    ctor public ProvisioningManager.Callback();
-    method public void onProvisioningIntChanged(int, int);
-    method public void onProvisioningStringChanged(int, @NonNull String);
-  }
-
-  public class RcsUceAdapter {
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setUceSettingEnabled(boolean) throws android.telephony.ims.ImsException;
-  }
-
-}
-
-package android.telephony.ims.feature {
-
-  public final class CapabilityChangeRequest implements android.os.Parcelable {
-    method public void addCapabilitiesToDisableForTech(int, int);
-    method public void addCapabilitiesToEnableForTech(int, int);
-    method public int describeContents();
-    method public java.util.List<android.telephony.ims.feature.CapabilityChangeRequest.CapabilityPair> getCapabilitiesToDisable();
-    method public java.util.List<android.telephony.ims.feature.CapabilityChangeRequest.CapabilityPair> getCapabilitiesToEnable();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.feature.CapabilityChangeRequest> CREATOR;
-  }
-
-  public static class CapabilityChangeRequest.CapabilityPair {
-    ctor public CapabilityChangeRequest.CapabilityPair(int, int);
-    method public int getCapability();
-    method public int getRadioTech();
-  }
-
-  public abstract class ImsFeature {
-    ctor public ImsFeature();
-    method public abstract void changeEnabledCapabilities(android.telephony.ims.feature.CapabilityChangeRequest, android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy);
-    method public int getFeatureState();
-    method public final int getSlotIndex();
-    method public abstract void onFeatureReady();
-    method public abstract void onFeatureRemoved();
-    method public final void setFeatureState(int);
-    field public static final int CAPABILITY_ERROR_GENERIC = -1; // 0xffffffff
-    field public static final int CAPABILITY_SUCCESS = 0; // 0x0
-    field public static final int FEATURE_EMERGENCY_MMTEL = 0; // 0x0
-    field public static final int FEATURE_MMTEL = 1; // 0x1
-    field public static final int FEATURE_RCS = 2; // 0x2
-    field public static final int STATE_INITIALIZING = 1; // 0x1
-    field public static final int STATE_READY = 2; // 0x2
-    field public static final int STATE_UNAVAILABLE = 0; // 0x0
-  }
-
-  @Deprecated public static class ImsFeature.Capabilities {
-    field @Deprecated protected int mCapabilities;
-  }
-
-  protected static class ImsFeature.CapabilityCallbackProxy {
-    method public void onChangeCapabilityConfigurationError(int, int, int);
-  }
-
-  public class MmTelFeature extends android.telephony.ims.feature.ImsFeature {
-    ctor public MmTelFeature();
-    method public void changeEnabledCapabilities(@NonNull android.telephony.ims.feature.CapabilityChangeRequest, @NonNull android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy);
-    method @Nullable public android.telephony.ims.ImsCallProfile createCallProfile(int, int);
-    method @Nullable public android.telephony.ims.stub.ImsCallSessionImplBase createCallSession(@NonNull android.telephony.ims.ImsCallProfile);
-    method @NonNull public android.telephony.ims.stub.ImsEcbmImplBase getEcbm();
-    method @NonNull public android.telephony.ims.stub.ImsMultiEndpointImplBase getMultiEndpoint();
-    method @NonNull public android.telephony.ims.stub.ImsSmsImplBase getSmsImplementation();
-    method @NonNull public android.telephony.ims.stub.ImsUtImplBase getUt();
-    method public final void notifyCapabilitiesStatusChanged(@NonNull android.telephony.ims.feature.MmTelFeature.MmTelCapabilities);
-    method public final void notifyIncomingCall(@NonNull android.telephony.ims.stub.ImsCallSessionImplBase, @NonNull android.os.Bundle);
-    method public final void notifyRejectedCall(@NonNull android.telephony.ims.ImsCallProfile, @NonNull android.telephony.ims.ImsReasonInfo);
-    method public final void notifyVoiceMessageCountUpdate(int);
-    method public void onFeatureReady();
-    method public void onFeatureRemoved();
-    method public boolean queryCapabilityConfiguration(int, int);
-    method @NonNull public final android.telephony.ims.feature.MmTelFeature.MmTelCapabilities queryCapabilityStatus();
-    method public void setUiTtyMode(int, @Nullable android.os.Message);
-    method public int shouldProcessCall(@NonNull String[]);
-    field public static final String EXTRA_IS_UNKNOWN_CALL = "android.telephony.ims.feature.extra.IS_UNKNOWN_CALL";
-    field public static final String EXTRA_IS_USSD = "android.telephony.ims.feature.extra.IS_USSD";
-    field public static final int PROCESS_CALL_CSFB = 1; // 0x1
-    field public static final int PROCESS_CALL_IMS = 0; // 0x0
-  }
-
-  public static class MmTelFeature.MmTelCapabilities extends android.telephony.ims.feature.ImsFeature.Capabilities {
-    ctor public MmTelFeature.MmTelCapabilities();
-    ctor @Deprecated public MmTelFeature.MmTelCapabilities(android.telephony.ims.feature.ImsFeature.Capabilities);
-    ctor public MmTelFeature.MmTelCapabilities(int);
-    method public final void addCapabilities(int);
-    method public final boolean isCapable(int);
-    method public final void removeCapabilities(int);
-  }
-
-  public class RcsFeature extends android.telephony.ims.feature.ImsFeature {
-    ctor public RcsFeature();
-    method public void changeEnabledCapabilities(@NonNull android.telephony.ims.feature.CapabilityChangeRequest, @NonNull android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy);
-    method public void onFeatureReady();
-    method public void onFeatureRemoved();
-  }
-
-}
-
-package android.telephony.ims.stub {
-
-  public class ImsCallSessionImplBase implements java.lang.AutoCloseable {
-    ctor public ImsCallSessionImplBase();
-    method public void accept(int, android.telephony.ims.ImsStreamMediaProfile);
-    method public void close();
-    method public void deflect(String);
-    method public void extendToConference(String[]);
-    method public String getCallId();
-    method public android.telephony.ims.ImsCallProfile getCallProfile();
-    method public android.telephony.ims.ImsVideoCallProvider getImsVideoCallProvider();
-    method public android.telephony.ims.ImsCallProfile getLocalCallProfile();
-    method public String getProperty(String);
-    method public android.telephony.ims.ImsCallProfile getRemoteCallProfile();
-    method public int getState();
-    method public void hold(android.telephony.ims.ImsStreamMediaProfile);
-    method public void inviteParticipants(String[]);
-    method public boolean isInCall();
-    method public boolean isMultiparty();
-    method public void merge();
-    method public void reject(int);
-    method public void removeParticipants(String[]);
-    method public void resume(android.telephony.ims.ImsStreamMediaProfile);
-    method public void sendDtmf(char, android.os.Message);
-    method public void sendRttMessage(String);
-    method public void sendRttModifyRequest(android.telephony.ims.ImsCallProfile);
-    method public void sendRttModifyResponse(boolean);
-    method public void sendUssd(String);
-    method public void setListener(android.telephony.ims.ImsCallSessionListener);
-    method public void setMute(boolean);
-    method public void start(String, android.telephony.ims.ImsCallProfile);
-    method public void startConference(String[], android.telephony.ims.ImsCallProfile);
-    method public void startDtmf(char);
-    method public void stopDtmf();
-    method public void terminate(int);
-    method public void update(int, android.telephony.ims.ImsStreamMediaProfile);
-    field public static final int USSD_MODE_NOTIFY = 0; // 0x0
-    field public static final int USSD_MODE_REQUEST = 1; // 0x1
-  }
-
-  public static class ImsCallSessionImplBase.State {
-    method public static String toString(int);
-    field public static final int ESTABLISHED = 4; // 0x4
-    field public static final int ESTABLISHING = 3; // 0x3
-    field public static final int IDLE = 0; // 0x0
-    field public static final int INITIATED = 1; // 0x1
-    field public static final int INVALID = -1; // 0xffffffff
-    field public static final int NEGOTIATING = 2; // 0x2
-    field public static final int REESTABLISHING = 6; // 0x6
-    field public static final int RENEGOTIATING = 5; // 0x5
-    field public static final int TERMINATED = 8; // 0x8
-    field public static final int TERMINATING = 7; // 0x7
-  }
-
-  public class ImsConfigImplBase {
-    ctor public ImsConfigImplBase();
-    method public int getConfigInt(int);
-    method public String getConfigString(int);
-    method public final void notifyProvisionedValueChanged(int, int);
-    method public final void notifyProvisionedValueChanged(int, String);
-    method public void notifyRcsAutoConfigurationReceived(@NonNull byte[], boolean);
-    method public int setConfig(int, int);
-    method public int setConfig(int, String);
-    field public static final int CONFIG_RESULT_FAILED = 1; // 0x1
-    field public static final int CONFIG_RESULT_SUCCESS = 0; // 0x0
-    field public static final int CONFIG_RESULT_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public class ImsEcbmImplBase {
-    ctor public ImsEcbmImplBase();
-    method public final void enteredEcbm();
-    method public void exitEmergencyCallbackMode();
-    method public final void exitedEcbm();
-  }
-
-  public final class ImsFeatureConfiguration implements android.os.Parcelable {
-    method public int describeContents();
-    method public java.util.Set<android.telephony.ims.stub.ImsFeatureConfiguration.FeatureSlotPair> getServiceFeatures();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.stub.ImsFeatureConfiguration> CREATOR;
-  }
-
-  public static class ImsFeatureConfiguration.Builder {
-    ctor public ImsFeatureConfiguration.Builder();
-    method public android.telephony.ims.stub.ImsFeatureConfiguration.Builder addFeature(int, int);
-    method public android.telephony.ims.stub.ImsFeatureConfiguration build();
-  }
-
-  public static final class ImsFeatureConfiguration.FeatureSlotPair {
-    ctor public ImsFeatureConfiguration.FeatureSlotPair(int, int);
-    field public final int featureType;
-    field public final int slotId;
-  }
-
-  public class ImsMultiEndpointImplBase {
-    ctor public ImsMultiEndpointImplBase();
-    method public final void onImsExternalCallStateUpdate(java.util.List<android.telephony.ims.ImsExternalCallState>);
-    method public void requestImsExternalCallStateInfo();
-  }
-
-  public class ImsRegistrationImplBase {
-    ctor public ImsRegistrationImplBase();
-    method public final void onDeregistered(android.telephony.ims.ImsReasonInfo);
-    method public final void onRegistered(int);
-    method public final void onRegistering(int);
-    method public final void onSubscriberAssociatedUriChanged(android.net.Uri[]);
-    method public final void onTechnologyChangeFailed(int, android.telephony.ims.ImsReasonInfo);
-    field public static final int REGISTRATION_TECH_IWLAN = 1; // 0x1
-    field public static final int REGISTRATION_TECH_LTE = 0; // 0x0
-    field public static final int REGISTRATION_TECH_NONE = -1; // 0xffffffff
-  }
-
-  public class ImsSmsImplBase {
-    ctor public ImsSmsImplBase();
-    method public void acknowledgeSms(int, @IntRange(from=0, to=65535) int, int);
-    method public void acknowledgeSmsReport(int, @IntRange(from=0, to=65535) int, int);
-    method public String getSmsFormat();
-    method public void onReady();
-    method @Deprecated public final void onSendSmsResult(int, @IntRange(from=0, to=65535) int, int, int) throws java.lang.RuntimeException;
-    method public final void onSendSmsResultError(int, @IntRange(from=0, to=65535) int, int, int, int) throws java.lang.RuntimeException;
-    method public final void onSendSmsResultSuccess(int, @IntRange(from=0, to=65535) int) throws java.lang.RuntimeException;
-    method public final void onSmsReceived(int, String, byte[]) throws java.lang.RuntimeException;
-    method @Deprecated public final void onSmsStatusReportReceived(int, @IntRange(from=0, to=65535) int, String, byte[]) throws java.lang.RuntimeException;
-    method public final void onSmsStatusReportReceived(int, String, byte[]) throws java.lang.RuntimeException;
-    method public void sendSms(int, @IntRange(from=0, to=65535) int, String, String, boolean, byte[]);
-    field public static final int DELIVER_STATUS_ERROR_GENERIC = 2; // 0x2
-    field public static final int DELIVER_STATUS_ERROR_NO_MEMORY = 3; // 0x3
-    field public static final int DELIVER_STATUS_ERROR_REQUEST_NOT_SUPPORTED = 4; // 0x4
-    field public static final int DELIVER_STATUS_OK = 1; // 0x1
-    field public static final int RESULT_NO_NETWORK_ERROR = -1; // 0xffffffff
-    field public static final int SEND_STATUS_ERROR = 2; // 0x2
-    field public static final int SEND_STATUS_ERROR_FALLBACK = 4; // 0x4
-    field public static final int SEND_STATUS_ERROR_RETRY = 3; // 0x3
-    field public static final int SEND_STATUS_OK = 1; // 0x1
-    field public static final int STATUS_REPORT_STATUS_ERROR = 2; // 0x2
-    field public static final int STATUS_REPORT_STATUS_OK = 1; // 0x1
-  }
-
-  public class ImsUtImplBase {
-    ctor public ImsUtImplBase();
-    method public void close();
-    method public int queryCallBarring(int);
-    method public int queryCallBarringForServiceClass(int, int);
-    method public int queryCallForward(int, String);
-    method public int queryCallWaiting();
-    method public int queryClip();
-    method public int queryClir();
-    method public int queryColp();
-    method public int queryColr();
-    method public void setListener(android.telephony.ims.ImsUtListener);
-    method public int transact(android.os.Bundle);
-    method public int updateCallBarring(int, int, String[]);
-    method public int updateCallBarringForServiceClass(int, int, String[], int);
-    method public int updateCallForward(int, int, String, int, int);
-    method public int updateCallWaiting(boolean, int);
-    method public int updateClip(boolean);
-    method public int updateClir(int);
-    method public int updateColp(boolean);
-    method public int updateColr(int);
-  }
-
-}
-
-package android.telephony.mbms {
-
-  public static class DownloadRequest.Builder {
-    method public android.telephony.mbms.DownloadRequest.Builder setServiceId(String);
-  }
-
-  public final class FileInfo implements android.os.Parcelable {
-    ctor public FileInfo(android.net.Uri, String);
-  }
-
-  public final class FileServiceInfo extends android.telephony.mbms.ServiceInfo implements android.os.Parcelable {
-    ctor public FileServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date, java.util.List<android.telephony.mbms.FileInfo>);
-  }
-
-  public final class StreamingServiceInfo extends android.telephony.mbms.ServiceInfo implements android.os.Parcelable {
-    ctor public StreamingServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date);
-  }
-
-  public final class UriPathPair implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.net.Uri getContentUri();
-    method public android.net.Uri getFilePathUri();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.mbms.UriPathPair> CREATOR;
-  }
-
-}
-
-package android.telephony.mbms.vendor {
-
-  public class MbmsDownloadServiceBase extends android.os.Binder implements android.os.IInterface {
-    ctor public MbmsDownloadServiceBase();
-    method public int addProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener) throws android.os.RemoteException;
-    method public int addServiceAnnouncement(int, @NonNull byte[]);
-    method public int addStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener) throws android.os.RemoteException;
-    method public android.os.IBinder asBinder();
-    method public int cancelDownload(android.telephony.mbms.DownloadRequest) throws android.os.RemoteException;
-    method public void dispose(int) throws android.os.RemoteException;
-    method public int download(android.telephony.mbms.DownloadRequest) throws android.os.RemoteException;
-    method public int initialize(int, android.telephony.mbms.MbmsDownloadSessionCallback) throws android.os.RemoteException;
-    method @NonNull public java.util.List<android.telephony.mbms.DownloadRequest> listPendingDownloads(int) throws android.os.RemoteException;
-    method public void onAppCallbackDied(int, int);
-    method public boolean onTransact(int, android.os.Parcel, android.os.Parcel, int) throws android.os.RemoteException;
-    method public int removeProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener) throws android.os.RemoteException;
-    method public int removeStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener) throws android.os.RemoteException;
-    method public int requestDownloadState(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo) throws android.os.RemoteException;
-    method public int requestUpdateFileServices(int, java.util.List<java.lang.String>) throws android.os.RemoteException;
-    method public int resetDownloadKnowledge(android.telephony.mbms.DownloadRequest) throws android.os.RemoteException;
-    method public int setTempFileRootDirectory(int, String) throws android.os.RemoteException;
-  }
-
-  public class MbmsGroupCallServiceBase extends android.app.Service {
-    ctor public MbmsGroupCallServiceBase();
-    method public void dispose(int) throws android.os.RemoteException;
-    method public int initialize(@NonNull android.telephony.mbms.MbmsGroupCallSessionCallback, int) throws android.os.RemoteException;
-    method public void onAppCallbackDied(int, int);
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public int startGroupCall(int, long, @NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.lang.Integer>, @NonNull android.telephony.mbms.GroupCallCallback);
-    method public void stopGroupCall(int, long);
-    method public void updateGroupCall(int, long, @NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.lang.Integer>);
-  }
-
-  public class MbmsStreamingServiceBase extends android.os.Binder implements android.os.IInterface {
-    ctor public MbmsStreamingServiceBase();
-    method public android.os.IBinder asBinder();
-    method public void dispose(int) throws android.os.RemoteException;
-    method @Nullable public android.net.Uri getPlaybackUri(int, String) throws android.os.RemoteException;
-    method public int initialize(android.telephony.mbms.MbmsStreamingSessionCallback, int) throws android.os.RemoteException;
-    method public void onAppCallbackDied(int, int);
-    method public boolean onTransact(int, android.os.Parcel, android.os.Parcel, int) throws android.os.RemoteException;
-    method public int requestUpdateStreamingServices(int, java.util.List<java.lang.String>) throws android.os.RemoteException;
-    method public int startStreaming(int, String, android.telephony.mbms.StreamingServiceCallback) throws android.os.RemoteException;
-    method public void stopStreaming(int, String) throws android.os.RemoteException;
-  }
-
-  public class VendorUtils {
-    ctor public VendorUtils();
-    method public static android.content.ComponentName getAppReceiverFromPackageName(android.content.Context, String);
-    field public static final String ACTION_CLEANUP = "android.telephony.mbms.action.CLEANUP";
-    field public static final String ACTION_DOWNLOAD_RESULT_INTERNAL = "android.telephony.mbms.action.DOWNLOAD_RESULT_INTERNAL";
-    field public static final String ACTION_FILE_DESCRIPTOR_REQUEST = "android.telephony.mbms.action.FILE_DESCRIPTOR_REQUEST";
-    field public static final String EXTRA_FD_COUNT = "android.telephony.mbms.extra.FD_COUNT";
-    field public static final String EXTRA_FINAL_URI = "android.telephony.mbms.extra.FINAL_URI";
-    field public static final String EXTRA_FREE_URI_LIST = "android.telephony.mbms.extra.FREE_URI_LIST";
-    field public static final String EXTRA_PAUSED_LIST = "android.telephony.mbms.extra.PAUSED_LIST";
-    field public static final String EXTRA_PAUSED_URI_LIST = "android.telephony.mbms.extra.PAUSED_URI_LIST";
-    field public static final String EXTRA_SERVICE_ID = "android.telephony.mbms.extra.SERVICE_ID";
-    field public static final String EXTRA_TEMP_FILES_IN_USE = "android.telephony.mbms.extra.TEMP_FILES_IN_USE";
-    field public static final String EXTRA_TEMP_FILE_ROOT = "android.telephony.mbms.extra.TEMP_FILE_ROOT";
-    field public static final String EXTRA_TEMP_LIST = "android.telephony.mbms.extra.TEMP_LIST";
-  }
-
-}
-
-package android.text {
-
-  public static final class Selection.MemoryTextWatcher implements android.text.TextWatcher {
-    ctor public Selection.MemoryTextWatcher();
-    method public void afterTextChanged(android.text.Editable);
-    method public void beforeTextChanged(CharSequence, int, int, int);
-    method public void onTextChanged(CharSequence, int, int, int);
-  }
-
-}
-
-package android.transition {
-
-  public class TransitionManager {
-    method public android.transition.Transition getTransition(android.transition.Scene);
-  }
-
-}
-
-package android.util {
-
-  public final class ArraySet<E> implements java.util.Collection<E> java.util.Set<E> {
-    method public E valueAtUnchecked(int);
-  }
-
-  public class FeatureFlagUtils {
-    ctor public FeatureFlagUtils();
-    method public static java.util.Map<java.lang.String,java.lang.String> getAllFeatureFlags();
-    method public static boolean isEnabled(android.content.Context, String);
-    method public static void setEnabled(android.content.Context, String, boolean);
-    field public static final String DYNAMIC_SYSTEM = "settings_dynamic_system";
-    field public static final String FFLAG_OVERRIDE_PREFIX = "sys.fflag.override.";
-    field public static final String FFLAG_PREFIX = "sys.fflag.";
-    field public static final String HEARING_AID_SETTINGS = "settings_bluetooth_hearing_aid";
-    field public static final String PERSIST_PREFIX = "persist.sys.fflag.override.";
-    field public static final String SCREENRECORD_LONG_PRESS = "settings_screenrecord_long_press";
-    field public static final String SEAMLESS_TRANSFER = "settings_seamless_transfer";
-    field public static final String SETTINGS_FUSE_FLAG = "settings_fuse";
-    field public static final String SETTINGS_WIFITRACKER2 = "settings_wifitracker2";
-  }
-
-  public class SparseArrayMap<T> {
-    ctor public SparseArrayMap();
-    method public void add(int, @NonNull String, @Nullable T);
-    method public void clear();
-    method public boolean contains(int, @NonNull String);
-    method public void delete(int);
-    method @Nullable public T delete(int, @NonNull String);
-    method public void forEach(@NonNull java.util.function.Consumer<T>);
-    method @Nullable public T get(int, @NonNull String);
-    method @Nullable public T getOrDefault(int, @NonNull String, T);
-    method public int indexOfKey(int);
-    method public int indexOfKey(int, @NonNull String);
-    method public int keyAt(int);
-    method @NonNull public String keyAt(int, int);
-    method public int numElementsForKey(int);
-    method public int numMaps();
-    method @Nullable public T valueAt(int, int);
-  }
-
-  public class TimeUtils {
-    method public static String formatDuration(long);
-  }
-
-}
-
-package android.util.proto {
-
-  public final class EncodedBuffer {
-    ctor public EncodedBuffer();
-    ctor public EncodedBuffer(int);
-    method public void dumpBuffers(String);
-    method public static void dumpByteString(String, String, byte[]);
-    method public void editRawFixed32(int, int);
-    method public byte[] getBytes(int);
-    method public int getChunkCount();
-    method public String getDebugString();
-    method public int getRawFixed32At(int);
-    method public static int getRawVarint32Size(int);
-    method public static int getRawVarint64Size(long);
-    method public static int getRawZigZag32Size(int);
-    method public static int getRawZigZag64Size(long);
-    method public int getReadPos();
-    method public int getReadableSize();
-    method public int getSize();
-    method public int getWriteBufIndex();
-    method public int getWriteIndex();
-    method public int getWritePos();
-    method public byte readRawByte();
-    method public int readRawFixed32();
-    method public long readRawUnsigned();
-    method public void rewindRead();
-    method public void rewindWriteTo(int);
-    method public void skipRead(int);
-    method public void startEditing();
-    method public void writeFromThisBuffer(int, int);
-    method public void writeRawBuffer(byte[]);
-    method public void writeRawBuffer(byte[], int, int);
-    method public void writeRawByte(byte);
-    method public void writeRawFixed32(int);
-    method public void writeRawFixed64(long);
-    method public void writeRawVarint32(int);
-    method public void writeRawVarint64(long);
-    method public void writeRawZigZag32(int);
-    method public void writeRawZigZag64(long);
-  }
-
-  public class ProtoParseException extends java.lang.RuntimeException {
-    ctor public ProtoParseException(String);
-  }
-
-  public class WireTypeMismatchException extends android.util.proto.ProtoParseException {
-    ctor public WireTypeMismatchException(String);
-  }
-
-}
-
-package android.view {
-
-  public abstract class ActionMode {
-    method public boolean isUiFocusable();
-  }
-
-  public final class Choreographer {
-    method public static long getFrameDelay();
-    method public void postCallback(int, Runnable, Object);
-    method public void postCallbackDelayed(int, Runnable, Object, long);
-    method public void removeCallbacks(int, Runnable, Object);
-    method public static void setFrameDelay(long);
-    field public static final int CALLBACK_ANIMATION = 1; // 0x1
-  }
-
-  public final class Display {
-    method @NonNull public android.graphics.ColorSpace[] getSupportedWideColorGamut();
-    method public int getType();
-    method public boolean hasAccess(int);
-    field public static final int FLAG_TRUSTED = 128; // 0x80
-    field public static final int TYPE_EXTERNAL = 2; // 0x2
-    field public static final int TYPE_INTERNAL = 1; // 0x1
-    field public static final int TYPE_OVERLAY = 4; // 0x4
-    field public static final int TYPE_UNKNOWN = 0; // 0x0
-    field public static final int TYPE_VIRTUAL = 5; // 0x5
-    field public static final int TYPE_WIFI = 3; // 0x3
-  }
-
-  public class FocusFinder {
-    method public static void sort(android.view.View[], int, int, android.view.ViewGroup, boolean);
-  }
-
-  public final class InputDevice implements android.os.Parcelable {
-    method @RequiresPermission("android.permission.DISABLE_INPUT_DEVICE") public void disable();
-    method @RequiresPermission("android.permission.DISABLE_INPUT_DEVICE") public void enable();
-  }
-
-  public class KeyEvent extends android.view.InputEvent implements android.os.Parcelable {
-    method public static String actionToString(int);
-    method public final void setDisplayId(int);
-    field public static final int LAST_KEYCODE = 288; // 0x120
-  }
-
-  public final class KeyboardShortcutGroup implements android.os.Parcelable {
-    ctor public KeyboardShortcutGroup(@Nullable CharSequence, @NonNull java.util.List<android.view.KeyboardShortcutInfo>, boolean);
-    ctor public KeyboardShortcutGroup(@Nullable CharSequence, boolean);
-    method public boolean isSystemGroup();
-  }
-
-  public abstract class LayoutInflater {
-    method public void setPrecompiledLayoutsEnabledForTesting(boolean);
-  }
-
-  public final class MotionEvent extends android.view.InputEvent implements android.os.Parcelable {
-    method public void setActionButton(int);
-    method public void setButtonState(int);
-    method public void setDisplayId(int);
-  }
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD}) public @interface RemotableViewMethod {
-    method public abstract String asyncImpl() default "";
-  }
-
-  public final class SurfaceControl implements android.os.Parcelable {
-    ctor public SurfaceControl(@NonNull android.view.SurfaceControl, @NonNull String);
-    method public static long acquireFrameRateFlexibilityToken();
-    method public boolean isSameSurface(@NonNull android.view.SurfaceControl);
-    method public static void releaseFrameRateFlexibilityToken(long);
-  }
-
-  public class SurfaceControlViewHost {
-    method public void relayout(android.view.WindowManager.LayoutParams);
-    method public void setView(@NonNull android.view.View, @NonNull android.view.WindowManager.LayoutParams);
-  }
-
-  @UiThread public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.view.KeyEvent.Callback {
-    method public android.view.View getTooltipView();
-    method public boolean isAutofilled();
-    method public static boolean isDefaultFocusHighlightEnabled();
-    method public boolean isDefaultFocusHighlightNeeded(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable);
-    method protected void resetResolvedDrawables();
-    method public void resetResolvedLayoutDirection();
-    method public void resetResolvedPadding();
-    method public void resetResolvedTextAlignment();
-    method public void resetResolvedTextDirection();
-    method public void resetRtlProperties();
-    method public boolean restoreFocusInCluster(int);
-    method public boolean restoreFocusNotInCluster();
-    method public void setAutofilled(boolean, boolean);
-    method public final void setFocusedInCluster();
-    method public void setIsRootNamespace(boolean);
-    method public final void setShowingLayoutBounds(boolean);
-  }
-
-  public class ViewConfiguration {
-    method public long getDeviceGlobalActionKeyTimeout();
-    method public static int getHoverTooltipHideShortTimeout();
-    method public static int getHoverTooltipHideTimeout();
-    method public static int getHoverTooltipShowTimeout();
-    method public static int getLongPressTooltipHideTimeout();
-  }
-
-  public class ViewDebug {
-    method @Deprecated @Nullable public static AutoCloseable startRenderingCommandsCapture(android.view.View, java.util.concurrent.Executor, java.util.function.Function<android.graphics.Picture,java.lang.Boolean>);
-    method @Nullable public static AutoCloseable startRenderingCommandsCapture(android.view.View, java.util.concurrent.Executor, java.util.concurrent.Callable<java.io.OutputStream>);
-  }
-
-  public abstract class Window {
-    method @Nullable public android.view.View getNavigationBarBackgroundView();
-    method @Nullable public android.view.View getStatusBarBackgroundView();
-  }
-
-  public interface WindowManager extends android.view.ViewManager {
-    method public default void setShouldShowIme(int, boolean);
-    method public default void setShouldShowSystemDecors(int, boolean);
-    method public default void setShouldShowWithInsecureKeyguard(int, boolean);
-    method public default boolean shouldShowIme(int);
-    method public default boolean shouldShowSystemDecors(int);
-  }
-
-  public static class WindowManager.LayoutParams extends android.view.ViewGroup.LayoutParams implements android.os.Parcelable {
-    field public static final int ACCESSIBILITY_TITLE_CHANGED = 33554432; // 0x2000000
-    field public static final int PRIVATE_FLAG_NO_MOVE_ANIMATION = 64; // 0x40
-    field public CharSequence accessibilityTitle;
-    field public int privateFlags;
-  }
-
-}
-
-package android.view.accessibility {
-
-  public final class AccessibilityManager {
-    method public void addAccessibilityServicesStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener, @Nullable android.os.Handler);
-    method @NonNull @RequiresPermission("android.permission.MANAGE_ACCESSIBILITY") public java.util.List<java.lang.String> getAccessibilityShortcutTargets(int);
-    method @RequiresPermission("android.permission.MANAGE_ACCESSIBILITY") public void performAccessibilityShortcut();
-    method @RequiresPermission("android.permission.MANAGE_ACCESSIBILITY") public void registerSystemAction(@NonNull android.app.RemoteAction, int);
-    method public void removeAccessibilityServicesStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener);
-    method @RequiresPermission("android.permission.MANAGE_ACCESSIBILITY") public void unregisterSystemAction(int);
-  }
-
-  public static interface AccessibilityManager.AccessibilityServicesStateChangeListener {
-    method public void onAccessibilityServicesStateChanged(android.view.accessibility.AccessibilityManager);
-  }
-
-  public class AccessibilityNodeInfo implements android.os.Parcelable {
-    method public void addChild(@NonNull android.os.IBinder);
-    method public long getSourceNodeId();
-    method public void setLeashedParent(@Nullable android.os.IBinder, int);
-    method public static void setNumInstancesInUseCounter(java.util.concurrent.atomic.AtomicInteger);
-    method public void writeToParcelNoRecycle(android.os.Parcel, int);
-  }
-
-  public static final class AccessibilityNodeInfo.TouchDelegateInfo implements android.os.Parcelable {
-    method public long getAccessibilityIdForRegion(@NonNull android.graphics.Region);
-  }
-
-  public final class AccessibilityWindowInfo implements android.os.Parcelable {
-    method public static void setNumInstancesInUseCounter(java.util.concurrent.atomic.AtomicInteger);
-  }
-
-}
-
-package android.view.animation {
-
-  public class AnimationUtils {
-    method public static void lockAnimationClock(long);
-    method public static void unlockAnimationClock();
-  }
-
-}
-
-package android.view.autofill {
-
-  public final class AutofillId implements android.os.Parcelable {
-    ctor public AutofillId(int);
-    ctor public AutofillId(@NonNull android.view.autofill.AutofillId, int);
-    ctor public AutofillId(int, int);
-    ctor public AutofillId(@NonNull android.view.autofill.AutofillId, long, int);
-    method public boolean equalsIgnoreSession(@Nullable android.view.autofill.AutofillId);
-    method @NonNull public static android.view.autofill.AutofillId withoutSession(@NonNull android.view.autofill.AutofillId);
-  }
-
-  public final class AutofillManager {
-    method public void setAugmentedAutofillWhitelist(@Nullable java.util.Set<java.lang.String>, @Nullable java.util.Set<android.content.ComponentName>);
-    field public static final String DEVICE_CONFIG_AUTOFILL_SMART_SUGGESTION_SUPPORTED_MODES = "smart_suggestion_supported_modes";
-    field public static final int FLAG_SMART_SUGGESTION_OFF = 0; // 0x0
-    field public static final int FLAG_SMART_SUGGESTION_SYSTEM = 1; // 0x1
-    field public static final int MAX_TEMP_AUGMENTED_SERVICE_DURATION_MS = 120000; // 0x1d4c0
-  }
-
-}
-
-package android.view.contentcapture {
-
-  public final class ContentCaptureContext implements android.os.Parcelable {
-    method @Nullable public android.content.ComponentName getActivityComponent();
-    method public int getDisplayId();
-    method public int getFlags();
-    method @Nullable public android.view.contentcapture.ContentCaptureSessionId getParentSessionId();
-    method public int getTaskId();
-    field public static final int FLAG_DISABLED_BY_APP = 1; // 0x1
-    field public static final int FLAG_DISABLED_BY_FLAG_SECURE = 2; // 0x2
-    field public static final int FLAG_RECONNECTED = 4; // 0x4
-  }
-
-  public final class ContentCaptureEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.view.contentcapture.ContentCaptureContext getContentCaptureContext();
-    method public long getEventTime();
-    method @Nullable public android.view.autofill.AutofillId getId();
-    method @Nullable public java.util.List<android.view.autofill.AutofillId> getIds();
-    method @Nullable public android.graphics.Insets getInsets();
-    method @Nullable public CharSequence getText();
-    method public int getType();
-    method @Nullable public android.view.contentcapture.ViewNode getViewNode();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.contentcapture.ContentCaptureEvent> CREATOR;
-    field public static final int TYPE_CONTEXT_UPDATED = 6; // 0x6
-    field public static final int TYPE_SESSION_PAUSED = 8; // 0x8
-    field public static final int TYPE_SESSION_RESUMED = 7; // 0x7
-    field public static final int TYPE_VIEW_APPEARED = 1; // 0x1
-    field public static final int TYPE_VIEW_DISAPPEARED = 2; // 0x2
-    field public static final int TYPE_VIEW_INSETS_CHANGED = 9; // 0x9
-    field public static final int TYPE_VIEW_TEXT_CHANGED = 3; // 0x3
-    field public static final int TYPE_VIEW_TREE_APPEARED = 5; // 0x5
-    field public static final int TYPE_VIEW_TREE_APPEARING = 4; // 0x4
-  }
-
-  public final class ContentCaptureManager {
-    method public boolean isContentCaptureFeatureEnabled();
-    field public static final String DEVICE_CONFIG_PROPERTY_IDLE_FLUSH_FREQUENCY = "idle_flush_frequency";
-    field public static final String DEVICE_CONFIG_PROPERTY_LOGGING_LEVEL = "logging_level";
-    field public static final String DEVICE_CONFIG_PROPERTY_LOG_HISTORY_SIZE = "log_history_size";
-    field public static final String DEVICE_CONFIG_PROPERTY_MAX_BUFFER_SIZE = "max_buffer_size";
-    field public static final String DEVICE_CONFIG_PROPERTY_SERVICE_EXPLICITLY_ENABLED = "service_explicitly_enabled";
-    field public static final String DEVICE_CONFIG_PROPERTY_TEXT_CHANGE_FLUSH_FREQUENCY = "text_change_flush_frequency";
-    field public static final int LOGGING_LEVEL_DEBUG = 1; // 0x1
-    field public static final int LOGGING_LEVEL_OFF = 0; // 0x0
-    field public static final int LOGGING_LEVEL_VERBOSE = 2; // 0x2
-  }
-
-  public final class ViewNode extends android.app.assist.AssistStructure.ViewNode {
-    method @Nullable public android.view.autofill.AutofillId getParentAutofillId();
-    method @Nullable public static android.view.contentcapture.ViewNode readFromParcel(@NonNull android.os.Parcel);
-    method public static void writeToParcel(@NonNull android.os.Parcel, @Nullable android.view.contentcapture.ViewNode, int);
-  }
-
-  public static final class ViewNode.ViewStructureImpl extends android.view.ViewStructure {
-    ctor public ViewNode.ViewStructureImpl(@NonNull android.view.View);
-    ctor public ViewNode.ViewStructureImpl(@NonNull android.view.autofill.AutofillId, long, int);
-    method public int addChildCount(int);
-    method public void asyncCommit();
-    method public android.view.ViewStructure asyncNewChild(int);
-    method public android.view.autofill.AutofillId getAutofillId();
-    method public int getChildCount();
-    method public android.os.Bundle getExtras();
-    method public CharSequence getHint();
-    method public android.view.contentcapture.ViewNode getNode();
-    method public android.graphics.Rect getTempRect();
-    method public CharSequence getText();
-    method public int getTextSelectionEnd();
-    method public int getTextSelectionStart();
-    method public boolean hasExtras();
-    method public android.view.ViewStructure newChild(int);
-    method public android.view.ViewStructure.HtmlInfo.Builder newHtmlInfoBuilder(String);
-    method public void setAccessibilityFocused(boolean);
-    method public void setActivated(boolean);
-    method public void setAlpha(float);
-    method public void setAssistBlocked(boolean);
-    method public void setAutofillHints(String[]);
-    method public void setAutofillId(android.view.autofill.AutofillId);
-    method public void setAutofillId(android.view.autofill.AutofillId, int);
-    method public void setAutofillOptions(CharSequence[]);
-    method public void setAutofillType(int);
-    method public void setAutofillValue(android.view.autofill.AutofillValue);
-    method public void setCheckable(boolean);
-    method public void setChecked(boolean);
-    method public void setChildCount(int);
-    method public void setClassName(String);
-    method public void setClickable(boolean);
-    method public void setContentDescription(CharSequence);
-    method public void setContextClickable(boolean);
-    method public void setDataIsSensitive(boolean);
-    method public void setDimens(int, int, int, int, int, int);
-    method public void setElevation(float);
-    method public void setEnabled(boolean);
-    method public void setFocusable(boolean);
-    method public void setFocused(boolean);
-    method public void setHint(CharSequence);
-    method public void setHtmlInfo(android.view.ViewStructure.HtmlInfo);
-    method public void setId(int, String, String, String);
-    method public void setInputType(int);
-    method public void setLocaleList(android.os.LocaleList);
-    method public void setLongClickable(boolean);
-    method public void setOpaque(boolean);
-    method public void setSelected(boolean);
-    method public void setText(CharSequence);
-    method public void setText(CharSequence, int, int);
-    method public void setTextLines(int[], int[]);
-    method public void setTextStyle(float, int, int, int);
-    method public void setTransformation(android.graphics.Matrix);
-    method public void setVisibility(int);
-    method public void setWebDomain(String);
-  }
-
-}
-
-package android.view.inputmethod {
-
-  public final class InlineSuggestion implements android.os.Parcelable {
-    method @NonNull public static android.view.inputmethod.InlineSuggestion newInlineSuggestion(@NonNull android.view.inputmethod.InlineSuggestionInfo);
-  }
-
-  public final class InlineSuggestionInfo implements android.os.Parcelable {
-    method @NonNull public static android.view.inputmethod.InlineSuggestionInfo newInlineSuggestionInfo(@NonNull android.widget.inline.InlinePresentationSpec, @NonNull String, @Nullable String[], @NonNull String, boolean);
-  }
-
-  public final class InlineSuggestionsResponse implements android.os.Parcelable {
-    method @NonNull public static android.view.inputmethod.InlineSuggestionsResponse newInlineSuggestionsResponse(@NonNull java.util.List<android.view.inputmethod.InlineSuggestion>);
-  }
-
-  public final class InputMethodManager {
-    method public int getDisplayId();
-    method public boolean isInputMethodPickerShown();
-  }
-
-}
-
-package android.view.inspector {
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.FIELD}) public @interface InspectableProperty {
-    method public abstract int attributeId() default android.content.res.Resources.ID_NULL;
-    method public abstract android.view.inspector.InspectableProperty.EnumEntry[] enumMapping() default {};
-    method public abstract android.view.inspector.InspectableProperty.FlagEntry[] flagMapping() default {};
-    method public abstract boolean hasAttributeId() default true;
-    method public abstract String name() default "";
-    method public abstract android.view.inspector.InspectableProperty.ValueType valueType() default android.view.inspector.InspectableProperty.ValueType.INFERRED;
-  }
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE}) public static @interface InspectableProperty.EnumEntry {
-    method public abstract String name();
-    method public abstract int value();
-  }
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE}) public static @interface InspectableProperty.FlagEntry {
-    method public abstract int mask() default 0;
-    method public abstract String name();
-    method public abstract int target();
-  }
-
-  public enum InspectableProperty.ValueType {
-    enum_constant public static final android.view.inspector.InspectableProperty.ValueType COLOR;
-    enum_constant public static final android.view.inspector.InspectableProperty.ValueType GRAVITY;
-    enum_constant public static final android.view.inspector.InspectableProperty.ValueType INFERRED;
-    enum_constant public static final android.view.inspector.InspectableProperty.ValueType INT_ENUM;
-    enum_constant public static final android.view.inspector.InspectableProperty.ValueType INT_FLAG;
-    enum_constant public static final android.view.inspector.InspectableProperty.ValueType NONE;
-    enum_constant public static final android.view.inspector.InspectableProperty.ValueType RESOURCE_ID;
-  }
-
-}
-
-package android.widget {
-
-  public abstract class AbsListView extends android.widget.AdapterView<android.widget.ListAdapter> implements android.widget.Filter.FilterListener android.text.TextWatcher android.view.ViewTreeObserver.OnGlobalLayoutListener android.view.ViewTreeObserver.OnTouchModeChangeListener {
-    method public final boolean shouldDrawSelector();
-  }
-
-  public class CalendarView extends android.widget.FrameLayout {
-    method public boolean getBoundsForDate(long, android.graphics.Rect);
-  }
-
-  public class DatePicker extends android.widget.FrameLayout {
-    method @android.view.inspector.InspectableProperty(name="datePickerMode", enumMapping={@android.view.inspector.InspectableProperty.EnumEntry(value=android.widget.DatePicker.MODE_SPINNER, name="spinner"), @android.view.inspector.InspectableProperty.EnumEntry(value=android.widget.DatePicker.MODE_CALENDAR, name="calendar")}) public int getMode();
-    field public static final int MODE_CALENDAR = 2; // 0x2
-    field public static final int MODE_SPINNER = 1; // 0x1
-  }
-
-  @UiThread public final class Magnifier {
-    method @Nullable public android.graphics.Bitmap getContent();
-    method public static android.graphics.PointF getMagnifierDefaultSize();
-    method @Nullable public android.graphics.Bitmap getOriginalContent();
-    method public void setOnOperationCompleteCallback(android.widget.Magnifier.Callback);
-  }
-
-  public static interface Magnifier.Callback {
-    method public void onOperationComplete();
-  }
-
-  public class NumberPicker extends android.widget.LinearLayout {
-    method public CharSequence getDisplayedValueForCurrentSelection();
-  }
-
-  public class PopupMenu {
-    method public android.widget.ListView getMenuListView();
-  }
-
-  public class Spinner extends android.widget.AbsSpinner implements android.content.DialogInterface.OnClickListener {
-    method public boolean isPopupShowing();
-  }
-
-  @android.widget.RemoteViews.RemoteView public class TextClock extends android.widget.TextView {
-    method public void disableClockTick();
-  }
-
-  public class TimePicker extends android.widget.FrameLayout {
-    method public android.view.View getAmView();
-    method public android.view.View getHourView();
-    method public android.view.View getMinuteView();
-    method @android.view.inspector.InspectableProperty(name="timePickerMode", enumMapping={@android.view.inspector.InspectableProperty.EnumEntry(name="clock", value=android.widget.TimePicker.MODE_CLOCK), @android.view.inspector.InspectableProperty.EnumEntry(name="spinner", value=android.widget.TimePicker.MODE_SPINNER)}) public int getMode();
-    method public android.view.View getPmView();
-    field public static final int MODE_CLOCK = 2; // 0x2
-    field public static final int MODE_SPINNER = 1; // 0x1
-  }
-
-  public class Toolbar extends android.view.ViewGroup {
-    method @Nullable public android.view.View getNavigationView();
-  }
-
-}
-
-package android.widget.inline {
-
-  public class InlineContentView extends android.view.ViewGroup {
-    method public void setChildSurfacePackageUpdater(@Nullable android.widget.inline.InlineContentView.SurfacePackageUpdater);
-  }
-
-  public static interface InlineContentView.SurfacePackageUpdater {
-    method public void getSurfacePackage(@NonNull java.util.function.Consumer<android.view.SurfaceControlViewHost.SurfacePackage>);
-    method public void onSurfacePackageReleased();
-  }
-
-}
-
-package android.window {
-
-  public final class DisplayAreaInfo implements android.os.Parcelable {
-    ctor public DisplayAreaInfo(@NonNull android.window.WindowContainerToken, int, int);
-    method public int describeContents();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.window.DisplayAreaInfo> CREATOR;
-    field @NonNull public final android.content.res.Configuration configuration;
-    field public final int displayId;
-    field public final int featureId;
-    field @NonNull public final android.window.WindowContainerToken token;
-  }
-
-  public class DisplayAreaOrganizer extends android.window.WindowOrganizer {
-    ctor public DisplayAreaOrganizer();
-    method public void onDisplayAreaAppeared(@NonNull android.window.DisplayAreaInfo, @NonNull android.view.SurfaceControl);
-    method public void onDisplayAreaVanished(@NonNull android.window.DisplayAreaInfo);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void registerOrganizer(int);
-    field public static final int FEATURE_DEFAULT_TASK_CONTAINER = 1; // 0x1
-    field public static final int FEATURE_ROOT = 0; // 0x0
-    field public static final int FEATURE_SYSTEM_FIRST = 0; // 0x0
-    field public static final int FEATURE_SYSTEM_LAST = 10000; // 0x2710
-    field public static final int FEATURE_UNDEFINED = -1; // 0xffffffff
-    field public static final int FEATURE_VENDOR_FIRST = 10001; // 0x2711
-    field public static final int FEATURE_WINDOW_TOKENS = 2; // 0x2
-  }
-
-  public class TaskOrganizer extends android.window.WindowOrganizer {
-    ctor public TaskOrganizer();
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public static android.app.ActivityManager.RunningTaskInfo createRootTask(int, int);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public static boolean deleteRootTask(@NonNull android.window.WindowContainerToken);
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public static java.util.List<android.app.ActivityManager.RunningTaskInfo> getChildTasks(@NonNull android.window.WindowContainerToken, @NonNull int[]);
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public static android.window.WindowContainerToken getImeTarget(int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public static java.util.List<android.app.ActivityManager.RunningTaskInfo> getRootTasks(int, @NonNull int[]);
-    method @BinderThread public void onBackPressedOnTaskRoot(@NonNull android.app.ActivityManager.RunningTaskInfo);
-    method @BinderThread public void onTaskAppeared(@NonNull android.app.ActivityManager.RunningTaskInfo, @NonNull android.view.SurfaceControl);
-    method @BinderThread public void onTaskInfoChanged(@NonNull android.app.ActivityManager.RunningTaskInfo);
-    method @BinderThread public void onTaskVanished(@NonNull android.app.ActivityManager.RunningTaskInfo);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public final void registerOrganizer(int);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void setInterceptBackPressedOnTaskRoot(boolean);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public static void setLaunchRoot(int, @NonNull android.window.WindowContainerToken);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public final void unregisterOrganizer();
-  }
-
-  public final class WindowContainerToken implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.window.WindowContainerToken> CREATOR;
-  }
-
-  public final class WindowContainerTransaction implements android.os.Parcelable {
-    ctor public WindowContainerTransaction();
-    method public int describeContents();
-    method @NonNull public android.window.WindowContainerTransaction reorder(@NonNull android.window.WindowContainerToken, boolean);
-    method @NonNull public android.window.WindowContainerTransaction reparent(@NonNull android.window.WindowContainerToken, @Nullable android.window.WindowContainerToken, boolean);
-    method @NonNull public android.window.WindowContainerTransaction scheduleFinishEnterPip(@NonNull android.window.WindowContainerToken, @NonNull android.graphics.Rect);
-    method @NonNull public android.window.WindowContainerTransaction setActivityWindowingMode(@NonNull android.window.WindowContainerToken, int);
-    method @NonNull public android.window.WindowContainerTransaction setAppBounds(@NonNull android.window.WindowContainerToken, @NonNull android.graphics.Rect);
-    method @NonNull public android.window.WindowContainerTransaction setBounds(@NonNull android.window.WindowContainerToken, @NonNull android.graphics.Rect);
-    method @NonNull public android.window.WindowContainerTransaction setBoundsChangeTransaction(@NonNull android.window.WindowContainerToken, @NonNull android.view.SurfaceControl.Transaction);
-    method @NonNull public android.window.WindowContainerTransaction setFocusable(@NonNull android.window.WindowContainerToken, boolean);
-    method @NonNull public android.window.WindowContainerTransaction setHidden(@NonNull android.window.WindowContainerToken, boolean);
-    method @NonNull public android.window.WindowContainerTransaction setScreenSizeDp(@NonNull android.window.WindowContainerToken, int, int);
-    method @NonNull public android.window.WindowContainerTransaction setSmallestScreenWidthDp(@NonNull android.window.WindowContainerToken, int);
-    method @NonNull public android.window.WindowContainerTransaction setWindowingMode(@NonNull android.window.WindowContainerToken, int);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.window.WindowContainerTransaction> CREATOR;
-  }
-
-  public abstract class WindowContainerTransactionCallback {
-    ctor public WindowContainerTransactionCallback();
-    method public abstract void onTransactionReady(int, @NonNull android.view.SurfaceControl.Transaction);
-  }
-
-  public class WindowOrganizer {
-    ctor public WindowOrganizer();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public int applySyncTransaction(@NonNull android.window.WindowContainerTransaction, @NonNull android.window.WindowContainerTransactionCallback);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public static void applyTransaction(@NonNull android.window.WindowContainerTransaction);
-  }
-
-}
-
diff --git a/api/test-lint-baseline.txt b/api/test-lint-baseline.txt
deleted file mode 100644
index 6562c7e..0000000
--- a/api/test-lint-baseline.txt
+++ /dev/null
@@ -1,2773 +0,0 @@
-// Baseline format: 1.0
-AcronymName: android.app.NotificationChannel#isImportanceLockedByOEM():
-    
-AcronymName: android.app.NotificationChannel#setImportanceLockedByOEM(boolean):
-    
-
-
-ActionValue: android.location.Location#EXTRA_NO_GPS_LOCATION:
-    
-// Tethering broadcast action / extras cannot change name for backwards compatibility
-ActionValue: android.net.TetheringManager#ACTION_TETHER_STATE_CHANGED:
-    Inconsistent action value; expected `android.net.action.TETHER_STATE_CHANGED`, was `android.net.conn.TETHER_STATE_CHANGED`
-ActionValue: android.net.TetheringManager#EXTRA_ACTIVE_TETHER:
-    Inconsistent extra value; expected `android.net.extra.ACTIVE_TETHER`, was `tetherArray`
-ActionValue: android.net.TetheringManager#EXTRA_AVAILABLE_TETHER:
-    Inconsistent extra value; expected `android.net.extra.AVAILABLE_TETHER`, was `availableArray`
-ActionValue: android.net.TetheringManager#EXTRA_ERRORED_TETHER:
-    Inconsistent extra value; expected `android.net.extra.ERRORED_TETHER`, was `erroredArray`
-
-ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_ADDITIONAL_CALL_INFO:
-    
-ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_CALL_RAT_TYPE:
-    
-ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_CHILD_NUMBER:
-    
-ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_CNA:
-    
-ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_CNAP:
-    
-ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_CODEC:
-    
-ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_DIALSTRING:
-    
-ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_DISPLAY_TEXT:
-    
-ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_EMERGENCY_CALL:
-    
-ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_IS_CALL_PULL:
-    
-ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_OI:
-    
-ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_OIR:
-    
-ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_REMOTE_URI:
-    
-ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_USSD:
-    
-ActionValue: android.telephony.ims.ImsReasonInfo#EXTRA_MSG_SERVICE_NOT_AUTHORIZED:
-    
-ActionValue: android.telephony.mbms.vendor.VendorUtils#ACTION_CLEANUP:
-    
-ActionValue: android.telephony.mbms.vendor.VendorUtils#ACTION_DOWNLOAD_RESULT_INTERNAL:
-    
-ActionValue: android.telephony.mbms.vendor.VendorUtils#ACTION_FILE_DESCRIPTOR_REQUEST:
-    
-ActionValue: android.telephony.mbms.vendor.VendorUtils#EXTRA_FD_COUNT:
-    
-ActionValue: android.telephony.mbms.vendor.VendorUtils#EXTRA_FINAL_URI:
-    
-ActionValue: android.telephony.mbms.vendor.VendorUtils#EXTRA_FREE_URI_LIST:
-    
-ActionValue: android.telephony.mbms.vendor.VendorUtils#EXTRA_PAUSED_LIST:
-    
-ActionValue: android.telephony.mbms.vendor.VendorUtils#EXTRA_PAUSED_URI_LIST:
-    
-ActionValue: android.telephony.mbms.vendor.VendorUtils#EXTRA_SERVICE_ID:
-    
-ActionValue: android.telephony.mbms.vendor.VendorUtils#EXTRA_TEMP_FILES_IN_USE:
-    
-ActionValue: android.telephony.mbms.vendor.VendorUtils#EXTRA_TEMP_FILE_ROOT:
-    
-ActionValue: android.telephony.mbms.vendor.VendorUtils#EXTRA_TEMP_LIST:
-    
-
-
-ArrayReturn: android.app.UiAutomation#executeShellCommandRw(String):
-    
-ArrayReturn: android.location.GnssMeasurementsEvent#GnssMeasurementsEvent(android.location.GnssClock, android.location.GnssMeasurement[]) parameter #1:
-    
-ArrayReturn: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]) parameter #10:
-    
-ArrayReturn: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]) parameter #11:
-    
-ArrayReturn: android.metrics.LogMaker#LogMaker(Object[]) parameter #0:
-    
-ArrayReturn: android.metrics.LogMaker#deserialize(Object[]) parameter #0:
-    
-ArrayReturn: android.metrics.LogMaker#serialize():
-    
-ArrayReturn: android.net.TestNetworkManager#createTunInterface(android.net.LinkAddress[]) parameter #0:
-    
-ArrayReturn: android.os.HwBlob#wrapArray(boolean[]):
-    
-ArrayReturn: android.os.HwBlob#wrapArray(byte[]):
-    
-ArrayReturn: android.os.HwBlob#wrapArray(double[]):
-    
-ArrayReturn: android.os.HwBlob#wrapArray(float[]):
-    
-ArrayReturn: android.os.HwBlob#wrapArray(int[]):
-    
-ArrayReturn: android.os.HwBlob#wrapArray(long[]):
-    
-ArrayReturn: android.os.HwBlob#wrapArray(short[]):
-    
-ArrayReturn: android.os.NativeHandle#NativeHandle(java.io.FileDescriptor[], int[], boolean) parameter #0:
-    
-ArrayReturn: android.os.NativeHandle#getFileDescriptors():
-    
-ArrayReturn: android.security.keystore.AttestationUtils#attestDeviceIds(android.content.Context, int[], byte[]):
-    
-ArrayReturn: android.telephony.ims.ImsUtListener#onUtConfigurationCallBarringQueried(int, android.telephony.ims.ImsSsInfo[]) parameter #1:
-    
-ArrayReturn: android.telephony.ims.ImsUtListener#onUtConfigurationCallForwardQueried(int, android.telephony.ims.ImsCallForwardInfo[]) parameter #1:
-    
-ArrayReturn: android.telephony.ims.ImsUtListener#onUtConfigurationCallWaitingQueried(int, android.telephony.ims.ImsSsInfo[]) parameter #1:
-    
-ArrayReturn: android.telephony.ims.stub.ImsRegistrationImplBase#onSubscriberAssociatedUriChanged(android.net.Uri[]) parameter #0:
-    
-ArrayReturn: android.view.FocusFinder#sort(android.view.View[], int, int, android.view.ViewGroup, boolean) parameter #0:
-    
-ArrayReturn: android.view.contentcapture.ViewNode#getAutofillOptions():
-    
-ArrayReturn: android.view.contentcapture.ViewNode.ViewStructureImpl#setAutofillOptions(CharSequence[]) parameter #0:
-    
-ArrayReturn: android.view.inspector.InspectableProperty#enumMapping():
-    
-ArrayReturn: android.view.inspector.InspectableProperty#flagMapping():
-    
-
-
-AutoBoxing: android.os.HwBlob#wrapArray(byte[]):
-    
-AutoBoxing: android.os.HwBlob#wrapArray(double[]):
-    
-AutoBoxing: android.os.HwBlob#wrapArray(float[]):
-    
-AutoBoxing: android.os.HwBlob#wrapArray(int[]):
-    
-AutoBoxing: android.os.HwBlob#wrapArray(long[]):
-    
-AutoBoxing: android.os.HwBlob#wrapArray(short[]):
-    
-AutoBoxing: android.os.VintfObject#getTargetFrameworkCompatibilityMatrixVersion():
-    
-
-
-BannedThrow: android.app.ActivityTaskManager#removeStacksInWindowingModes(int[]):
-    
-BannedThrow: android.app.ActivityTaskManager#removeStacksWithActivityTypes(int[]):
-    
-BannedThrow: android.app.ActivityTaskManager#setTaskWindowingMode(int, int, boolean):
-    
-BannedThrow: android.app.ActivityTaskManager#setTaskWindowingModeSplitScreenPrimary(int, int, boolean, boolean, android.graphics.Rect, boolean):
-    
-BannedThrow: android.media.audiofx.AudioEffect#getParameter(byte[], byte[]):
-    
-BannedThrow: android.media.audiofx.AudioEffect#getParameter(int, byte[]):
-    
-BannedThrow: android.media.audiofx.AudioEffect#getParameter(int, int[]):
-    
-BannedThrow: android.media.audiofx.AudioEffect#getParameter(int, short[]):
-    
-BannedThrow: android.media.audiofx.AudioEffect#getParameter(int[], short[]):
-    
-BannedThrow: android.media.audiofx.AudioEffect#setParameter(byte[], byte[]):
-    
-BannedThrow: android.media.audiofx.AudioEffect#setParameter(int, byte[]):
-    
-BannedThrow: android.media.audiofx.AudioEffect#setParameter(int, int):
-    
-BannedThrow: android.media.audiofx.AudioEffect#setParameter(int, short):
-    
-BannedThrow: android.media.audiofx.AudioEffect#setParameter(int[], byte[]):
-    
-BannedThrow: android.media.audiofx.AudioEffect#setParameter(int[], int[]):
-    
-BannedThrow: android.media.audiopolicy.AudioMix.Builder#Builder(android.media.audiopolicy.AudioMixingRule):
-    
-BannedThrow: android.media.audiopolicy.AudioMix.Builder#build():
-    
-BannedThrow: android.media.audiopolicy.AudioMix.Builder#setDevice(android.media.AudioDeviceInfo):
-    
-BannedThrow: android.media.audiopolicy.AudioMix.Builder#setFormat(android.media.AudioFormat):
-    
-BannedThrow: android.media.audiopolicy.AudioMix.Builder#setRouteFlags(int):
-    
-BannedThrow: android.media.audiopolicy.AudioMixingRule.Builder#addMixRule(int, Object):
-    
-BannedThrow: android.media.audiopolicy.AudioMixingRule.Builder#addRule(android.media.AudioAttributes, int):
-    
-BannedThrow: android.media.audiopolicy.AudioMixingRule.Builder#excludeMixRule(int, Object):
-    
-BannedThrow: android.media.audiopolicy.AudioMixingRule.Builder#excludeRule(android.media.AudioAttributes, int):
-    
-BannedThrow: android.media.audiopolicy.AudioPolicy#createAudioRecordSink(android.media.audiopolicy.AudioMix):
-    
-BannedThrow: android.media.audiopolicy.AudioPolicy#createAudioTrackSource(android.media.audiopolicy.AudioMix):
-    
-BannedThrow: android.media.audiopolicy.AudioPolicy#setFocusDuckingBehavior(int):
-    
-BannedThrow: android.media.audiopolicy.AudioPolicy.Builder#addMix(android.media.audiopolicy.AudioMix):
-    
-BannedThrow: android.media.audiopolicy.AudioPolicy.Builder#setLooper(android.os.Looper):
-    
-BannedThrow: android.os.HwBinder#getService(String, String):
-    
-BannedThrow: android.os.HwBinder#getService(String, String, boolean):
-    
-BannedThrow: android.os.Process#getThreadScheduler(int):
-    
-
-
-CallbackInterface: android.app.prediction.AppPredictor.Callback:
-    
-CallbackInterface: android.permission.PermissionControllerManager.OnGetAppPermissionResultCallback:
-    
-CallbackInterface: android.widget.Magnifier.Callback:
-    
-
-
-CallbackMethodName: android.os.RemoteCallback:
-    
-
-
-ConcreteCollection: android.content.AutofillOptions#disabledActivities:
-    
-ConcreteCollection: android.content.AutofillOptions#whitelistedActivitiesForAugmentedAutofill:
-    
-ConcreteCollection: android.content.ContentCaptureOptions#ContentCaptureOptions(int, int, int, int, int, android.util.ArraySet<android.content.ComponentName>) parameter #5:
-    
-ConcreteCollection: android.content.ContentCaptureOptions#whitelistedComponents:
-    
-ConcreteCollection: android.database.sqlite.SQLiteDebug.PagerStats#dbStats:
-    
-ConcreteCollection: android.os.HwParcel#readBoolVector():
-    
-ConcreteCollection: android.os.HwParcel#readDoubleVector():
-    
-ConcreteCollection: android.os.HwParcel#readFloatVector():
-    
-ConcreteCollection: android.os.HwParcel#readInt16Vector():
-    
-ConcreteCollection: android.os.HwParcel#readInt32Vector():
-    
-ConcreteCollection: android.os.HwParcel#readInt64Vector():
-    
-ConcreteCollection: android.os.HwParcel#readInt8Vector():
-    
-ConcreteCollection: android.os.HwParcel#readNativeHandleVector():
-    
-ConcreteCollection: android.os.HwParcel#readStringVector():
-    
-ConcreteCollection: android.os.HwParcel#writeBoolVector(java.util.ArrayList<java.lang.Boolean>) parameter #0:
-    
-ConcreteCollection: android.os.HwParcel#writeDoubleVector(java.util.ArrayList<java.lang.Double>) parameter #0:
-    
-ConcreteCollection: android.os.HwParcel#writeFloatVector(java.util.ArrayList<java.lang.Float>) parameter #0:
-    
-ConcreteCollection: android.os.HwParcel#writeInt16Vector(java.util.ArrayList<java.lang.Short>) parameter #0:
-    
-ConcreteCollection: android.os.HwParcel#writeInt32Vector(java.util.ArrayList<java.lang.Integer>) parameter #0:
-    
-ConcreteCollection: android.os.HwParcel#writeInt64Vector(java.util.ArrayList<java.lang.Long>) parameter #0:
-    
-ConcreteCollection: android.os.HwParcel#writeInt8Vector(java.util.ArrayList<java.lang.Byte>) parameter #0:
-    
-ConcreteCollection: android.os.HwParcel#writeNativeHandleVector(java.util.ArrayList<android.os.NativeHandle>) parameter #0:
-    
-ConcreteCollection: android.os.HwParcel#writeStringVector(java.util.ArrayList<java.lang.String>) parameter #0:
-    
-ConcreteCollection: android.service.autofill.CompositeUserData#getFieldClassificationAlgorithms():
-    
-ConcreteCollection: android.service.autofill.CompositeUserData#getFieldClassificationArgs():
-    
-ConcreteCollection: android.service.autofill.InternalTransformation#batchApply(android.service.autofill.ValueFinder, android.widget.RemoteViews, java.util.ArrayList<android.util.Pair<java.lang.Integer,android.service.autofill.InternalTransformation>>) parameter #2:
-    
-ConcreteCollection: android.service.autofill.UserData#getFieldClassificationAlgorithms():
-    
-ConcreteCollection: android.telephony.ims.ImsConferenceState#mParticipants:
-    
-
-
-ContextFirst: android.os.VibrationEffect#get(android.net.Uri, android.content.Context) parameter #1:
-    
-
-
-ContextNameSuffix: android.telephony.mbms.vendor.MbmsGroupCallServiceBase:
-    
-
-
-EndsWithImpl: android.view.contentcapture.ViewNode.ViewStructureImpl:
-    
-
-
-Enum: android.view.inspector.InspectableProperty.ValueType:
-    
-
-
-EqualsAndHashCode: android.app.prediction.AppPredictionContext#equals(Object):
-    
-EqualsAndHashCode: android.app.prediction.AppTarget#equals(Object):
-    
-EqualsAndHashCode: android.app.prediction.AppTargetEvent#equals(Object):
-    
-EqualsAndHashCode: android.net.apf.ApfCapabilities#equals(Object):
-    
-EqualsAndHashCode: android.net.metrics.ApfProgramEvent#equals(Object):
-    
-EqualsAndHashCode: android.net.metrics.ApfStats#equals(Object):
-    
-EqualsAndHashCode: android.net.metrics.DhcpClientEvent#equals(Object):
-    
-EqualsAndHashCode: android.net.metrics.IpManagerEvent#equals(Object):
-    
-EqualsAndHashCode: android.net.metrics.IpReachabilityEvent#equals(Object):
-    
-EqualsAndHashCode: android.net.metrics.NetworkEvent#equals(Object):
-    
-EqualsAndHashCode: android.net.metrics.RaEvent#equals(Object):
-    
-EqualsAndHashCode: android.net.metrics.ValidationProbeEvent#equals(Object):
-    
-EqualsAndHashCode: android.os.IncidentManager.PendingReport#equals(Object):
-    
-EqualsAndHashCode: android.os.StrictMode.ViolationInfo#hashCode():
-    
-
-
-ExecutorRegistration: android.content.pm.PackageManager#addOnPermissionsChangeListener(android.content.pm.PackageManager.OnPermissionsChangedListener):
-    
-ExecutorRegistration: android.hardware.camera2.CameraDevice#createCustomCaptureSession(android.hardware.camera2.params.InputConfiguration, java.util.List<android.hardware.camera2.params.OutputConfiguration>, int, android.hardware.camera2.CameraCaptureSession.StateCallback, android.os.Handler):
-    
-ExecutorRegistration: android.media.audiofx.AudioEffect#setParameterListener(android.media.audiofx.AudioEffect.OnParameterChangeListener):
-    
-ExecutorRegistration: android.media.audiopolicy.AudioPolicy.Builder#setAudioPolicyFocusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyFocusListener):
-    
-ExecutorRegistration: android.media.audiopolicy.AudioPolicy.Builder#setAudioPolicyStatusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyStatusListener):
-    
-ExecutorRegistration: android.media.audiopolicy.AudioPolicy.Builder#setAudioPolicyVolumeCallback(android.media.audiopolicy.AudioPolicy.AudioPolicyVolumeCallback):
-    
-ExecutorRegistration: android.os.IncidentManager#cancelAuthorization(android.os.IncidentManager.AuthListener):
-    
-ExecutorRegistration: android.os.IncidentManager#requestAuthorization(int, String, int, android.os.IncidentManager.AuthListener):
-    
-ExecutorRegistration: android.os.RemoteCallback#RemoteCallback(android.os.RemoteCallback.OnResultListener, android.os.Handler):
-    
-ExecutorRegistration: android.permission.PermissionControllerManager#getAppPermissions(String, android.permission.PermissionControllerManager.OnGetAppPermissionResultCallback, android.os.Handler):
-    
-ExecutorRegistration: android.telephony.ims.stub.ImsCallSessionImplBase#setListener(android.telephony.ims.ImsCallSessionListener):
-    
-ExecutorRegistration: android.telephony.ims.stub.ImsUtImplBase#setListener(android.telephony.ims.ImsUtListener):
-    
-ExecutorRegistration: android.telephony.mbms.vendor.MbmsDownloadServiceBase#addProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener):
-    
-ExecutorRegistration: android.telephony.mbms.vendor.MbmsDownloadServiceBase#addStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener):
-    
-ExecutorRegistration: android.telephony.mbms.vendor.MbmsDownloadServiceBase#initialize(int, android.telephony.mbms.MbmsDownloadSessionCallback):
-    
-ExecutorRegistration: android.telephony.mbms.vendor.MbmsGroupCallServiceBase#initialize(android.telephony.mbms.MbmsGroupCallSessionCallback, int):
-    
-ExecutorRegistration: android.telephony.mbms.vendor.MbmsGroupCallServiceBase#startGroupCall(int, long, java.util.List<java.lang.Integer>, java.util.List<java.lang.Integer>, android.telephony.mbms.GroupCallCallback):
-    
-ExecutorRegistration: android.telephony.mbms.vendor.MbmsStreamingServiceBase#initialize(android.telephony.mbms.MbmsStreamingSessionCallback, int):
-    
-ExecutorRegistration: android.telephony.mbms.vendor.MbmsStreamingServiceBase#startStreaming(int, String, android.telephony.mbms.StreamingServiceCallback):
-    
-
-
-ForbiddenSuperClass: android.app.AppDetailsActivity:
-    
-
-
-GenericException: android.app.ActivityView#finalize():
-    
-GenericException: android.app.prediction.AppPredictor#finalize():
-    
-GenericException: android.service.autofill.CharSequenceTransformation#apply(android.service.autofill.ValueFinder, android.widget.RemoteViews, int):
-    
-GenericException: android.service.autofill.DateTransformation#apply(android.service.autofill.ValueFinder, android.widget.RemoteViews, int):
-    
-GenericException: android.service.autofill.ImageTransformation#apply(android.service.autofill.ValueFinder, android.widget.RemoteViews, int):
-    
-GenericException: android.service.autofill.augmented.FillWindow#finalize():
-    
-
-
-GetterSetterNames: android.app.NotificationChannel#isBlockableSystem():
-    
-GetterSetterNames: android.app.NotificationChannel#isImportanceLockedByCriticalDeviceFunction():
-    
-GetterSetterNames: android.app.NotificationChannel#isImportanceLockedByOEM():
-    
-GetterSetterNames: android.location.GnssClock#setBiasNanos(double):
-    
-GetterSetterNames: android.location.GnssClock#setBiasUncertaintyNanos(double):
-    
-GetterSetterNames: android.location.GnssClock#setDriftNanosPerSecond(double):
-    
-GetterSetterNames: android.location.GnssClock#setDriftUncertaintyNanosPerSecond(double):
-    
-GetterSetterNames: android.location.GnssClock#setElapsedRealtimeNanos(long):
-    
-GetterSetterNames: android.location.GnssClock#setElapsedRealtimeUncertaintyNanos(double):
-    
-GetterSetterNames: android.location.GnssClock#setFullBiasNanos(long):
-    
-GetterSetterNames: android.location.GnssClock#setLeapSecond(int):
-
-GetterSetterNames: android.location.GnssClock#setReferenceConstellationTypeForIsb(int):
-
-GetterSetterNames: android.location.GnssClock#setReferenceCarrierFrequencyHzForIsb(double):
-
-GetterSetterNames: android.location.GnssClock#setReferenceCodeTypeForIsb(String):
-
-GetterSetterNames: android.location.GnssClock#setTimeUncertaintyNanos(double):
-    
-GetterSetterNames: android.location.GnssMeasurement#setBasebandCn0DbHz(double):
-    
-GetterSetterNames: android.location.GnssMeasurement#setCarrierFrequencyHz(float):
-    
-GetterSetterNames: android.location.GnssMeasurement#setCodeType(String):
-
-GetterSetterNames: android.location.GnssMeasurement#setFullInterSignalBiasNanos(double):
-
-GetterSetterNames: android.location.GnssMeasurement#setFullInterSignalBiasUncertaintyNanos(double):
-
-GetterSetterNames: android.location.GnssMeasurement#setSatelliteInterSignalBiasNanos(double):
-
-GetterSetterNames: android.location.GnssMeasurement#setSatelliteInterSignalBiasUncertaintyNanos(double):
-
-GetterSetterNames: android.location.GnssMeasurement#setSnrInDb(double):
-    
-GetterSetterNames: android.location.LocationRequest#isLocationSettingsIgnored():
-    
-GetterSetterNames: android.location.LocationRequest#isLowPowerMode():
-    
-GetterSetterNames: android.os.IncidentReportArgs#isAll():
-    
-GetterSetterNames: android.service.notification.NotificationStats#setDirectReplied():
-    
-GetterSetterNames: android.service.notification.NotificationStats#setExpanded():
-    
-GetterSetterNames: android.service.notification.NotificationStats#setSeen():
-    
-GetterSetterNames: android.service.notification.NotificationStats#setSnoozed():
-    
-GetterSetterNames: android.service.notification.NotificationStats#setViewedSettings():
-    
-GetterSetterNames: android.view.View#isAutofilled():
-    
-GetterSetterNames: android.view.View#isDefaultFocusHighlightEnabled():
-    
-
-
-IllegalStateException: android.media.audiopolicy.AudioMix.Builder#build():
-    
-
-
-IntentBuilderName: android.app.backup.BackupManager#getConfigurationIntent(String):
-    
-IntentBuilderName: android.app.backup.BackupManager#getDataManagementIntent(String):
-    
-
-
-IntentName: android.provider.Settings.Secure#VOICE_INTERACTION_SERVICE:
-    
-IntentName: android.provider.Telephony.Sms.Intents#SMS_CARRIER_PROVISION_ACTION:
-    
-IntentName: android.service.notification.Adjustment#KEY_CONTEXTUAL_ACTIONS:
-    
-
-
-InterfaceConstant: android.service.autofill.AutofillFieldClassificationService#SERVICE_INTERFACE:
-    
-InterfaceConstant: android.service.autofill.augmented.AugmentedAutofillService#SERVICE_INTERFACE:
-    
-InterfaceConstant: android.service.contentcapture.ContentCaptureService#SERVICE_INTERFACE:
-    
-InterfaceConstant: android.service.notification.NotificationAssistantService#SERVICE_INTERFACE:
-    
-InterfaceConstant: android.telecom.PhoneAccountSuggestionService#SERVICE_INTERFACE:
-    
-
-
-InternalField: android.telephony.ims.ImsConferenceState#mParticipants:
-    
-
-
-KotlinOperator: android.os.WorkSource#get(int):
-    
-KotlinOperator: android.util.SparseArrayMap#get(int, String):
-    
-
-
-ListenerInterface: android.media.audiopolicy.AudioPolicy.AudioPolicyFocusListener:
-    
-ListenerInterface: android.media.audiopolicy.AudioPolicy.AudioPolicyStatusListener:
-    
-ListenerInterface: android.os.IncidentManager.AuthListener:
-    
-ListenerInterface: android.telephony.ims.ImsCallSessionListener:
-    
-ListenerInterface: android.telephony.ims.ImsUtListener:
-    
-
-
-ListenerLast: android.hardware.camera2.CameraDevice#createCustomCaptureSession(android.hardware.camera2.params.InputConfiguration, java.util.List<android.hardware.camera2.params.OutputConfiguration>, int, android.hardware.camera2.CameraCaptureSession.StateCallback, android.os.Handler) parameter #4:
-    
-ListenerLast: android.location.LocationManager#requestLocationUpdates(android.location.LocationRequest, android.location.LocationListener, android.os.Looper) parameter #2:
-    
-ListenerLast: android.permission.PermissionControllerManager#getAppPermissions(String, android.permission.PermissionControllerManager.OnGetAppPermissionResultCallback, android.os.Handler) parameter #2:
-    
-ListenerLast: android.telephony.mbms.vendor.MbmsGroupCallServiceBase#initialize(android.telephony.mbms.MbmsGroupCallSessionCallback, int) parameter #1:
-    
-ListenerLast: android.telephony.mbms.vendor.MbmsStreamingServiceBase#initialize(android.telephony.mbms.MbmsStreamingSessionCallback, int) parameter #1:
-    
-
-
-ManagerConstructor: android.content.pm.ShortcutManager#ShortcutManager(android.content.Context):
-    
-
-
-ManagerLookup: android.telephony.ims.ImsMmTelManager#createForSubscriptionId(int):
-    
-ManagerLookup: android.telephony.ims.ProvisioningManager#createForSubscriptionId(int):
-    
-
-
-MethodNameTense: android.telephony.ims.feature.CapabilityChangeRequest#getCapabilitiesToEnable():
-    
-
-
-MethodNameUnits: android.telephony.ims.ImsCallForwardInfo#getTimeSeconds():
-    
-
-
-MinMaxConstant: android.os.UserHandle#MIN_SECONDARY_USER_ID:
-    
-MinMaxConstant: android.view.autofill.AutofillManager#MAX_TEMP_AUGMENTED_SERVICE_DURATION_MS:
-    
-
-
-MissingNullability: android.app.Activity#onMovedToDisplay(int, android.content.res.Configuration) parameter #1:
-    
-MissingNullability: android.app.ActivityManager#addOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener, int) parameter #0:
-    
-MissingNullability: android.app.ActivityManager#alwaysShowUnsupportedCompileSdkWarning(android.content.ComponentName) parameter #0:
-    
-MissingNullability: android.app.ActivityManager#forceStopPackage(String) parameter #0:
-    
-MissingNullability: android.app.ActivityManager#getPackageImportance(String) parameter #0:
-    
-MissingNullability: android.app.ActivityManager#removeOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener) parameter #0:
-    
-MissingNullability: android.app.ActivityManager#scheduleApplicationInfoChanged(java.util.List<java.lang.String>, int) parameter #0:
-    
-MissingNullability: android.app.ActivityManager.TaskDescription#getIconFilename():
-    
-MissingNullability: android.app.ActivityTaskManager#clearLaunchParamsForPackages(java.util.List<java.lang.String>) parameter #0:
-    
-MissingNullability: android.app.ActivityTaskManager#listAllStacks():
-    
-MissingNullability: android.app.ActivityTaskManager#moveTopActivityToPinnedStack(int, android.graphics.Rect) parameter #1:
-    
-MissingNullability: android.app.ActivityTaskManager#removeStacksInWindowingModes(int[]) parameter #0:
-    
-MissingNullability: android.app.ActivityTaskManager#removeStacksWithActivityTypes(int[]) parameter #0:
-    
-MissingNullability: android.app.ActivityTaskManager#resizeDockedStack(android.graphics.Rect, android.graphics.Rect) parameter #0:
-    
-MissingNullability: android.app.ActivityTaskManager#resizeDockedStack(android.graphics.Rect, android.graphics.Rect) parameter #1:
-    
-MissingNullability: android.app.ActivityTaskManager#resizePinnedStack(int, android.graphics.Rect, boolean) parameter #1:
-    
-MissingNullability: android.app.ActivityTaskManager#resizeTask(int, android.graphics.Rect) parameter #1:
-    
-MissingNullability: android.app.ActivityTaskManager#setTaskWindowingModeSplitScreenPrimary(int, int, boolean, boolean, android.graphics.Rect, boolean) parameter #4:
-    
-MissingNullability: android.app.ActivityTaskManager#supportsMultiWindow(android.content.Context) parameter #0:
-    
-MissingNullability: android.app.ActivityTaskManager#supportsSplitScreenMultiWindow(android.content.Context) parameter #0:
-    
-MissingNullability: android.app.ActivityView#ActivityView(android.content.Context) parameter #0:
-    
-MissingNullability: android.app.ActivityView#ActivityView(android.content.Context, android.util.AttributeSet) parameter #0:
-    
-MissingNullability: android.app.ActivityView#ActivityView(android.content.Context, android.util.AttributeSet) parameter #1:
-    
-MissingNullability: android.app.ActivityView#ActivityView(android.content.Context, android.util.AttributeSet, int) parameter #0:
-    
-MissingNullability: android.app.ActivityView#ActivityView(android.content.Context, android.util.AttributeSet, int) parameter #1:
-    
-MissingNullability: android.app.ActivityView#ActivityView(android.content.Context, android.util.AttributeSet, int, boolean) parameter #0:
-    
-MissingNullability: android.app.ActivityView#ActivityView(android.content.Context, android.util.AttributeSet, int, boolean) parameter #1:
-    
-MissingNullability: android.app.ActivityView#gatherTransparentRegion(android.graphics.Region) parameter #0:
-    
-MissingNullability: android.app.ActivityView#onVisibilityChanged(android.view.View, int) parameter #0:
-    
-MissingNullability: android.app.ActivityView#setCallback(android.app.ActivityView.StateCallback) parameter #0:
-    
-MissingNullability: android.app.ActivityView#setForwardedInsets(android.graphics.Insets) parameter #0:
-    
-MissingNullability: android.app.ActivityView#startActivity(android.content.Intent, android.os.UserHandle) parameter #1:
-    
-MissingNullability: android.app.ActivityView.StateCallback#onActivityViewDestroyed(android.app.ActivityView) parameter #0:
-    
-MissingNullability: android.app.ActivityView.StateCallback#onActivityViewReady(android.app.ActivityView) parameter #0:
-    
-MissingNullability: android.app.ActivityView.StateCallback#onTaskCreated(int, android.content.ComponentName) parameter #1:
-    
-MissingNullability: android.app.AppDetailsActivity#onCreate(android.os.Bundle) parameter #0:
-    
-MissingNullability: android.app.AppOpsManager#getOpStrs():
-    
-MissingNullability: android.app.AppOpsManager#isOperationActive(int, int, String) parameter #2:
-    
-MissingNullability: android.app.AppOpsManager#opToPermission(int):
-    
-MissingNullability: android.app.AppOpsManager#permissionToOpCode(String) parameter #0:
-    
-MissingNullability: android.app.AppOpsManager#setMode(String, int, String, int) parameter #0:
-    
-MissingNullability: android.app.AppOpsManager#setMode(String, int, String, int) parameter #2:
-    
-MissingNullability: android.app.AppOpsManager#setMode(int, int, String, int) parameter #2:
-    
-MissingNullability: android.app.AppOpsManager#setUidMode(String, int, int) parameter #0:
-    
-MissingNullability: android.app.AppOpsManager.HistoricalOp#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.app.AppOpsManager.HistoricalOps#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.app.AppOpsManager.HistoricalUidOps#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.app.AppOpsManager.OpEntry#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.app.NotificationManager#allowAssistantAdjustment(String) parameter #0:
-    
-MissingNullability: android.app.NotificationManager#disallowAssistantAdjustment(String) parameter #0:
-    
-MissingNullability: android.app.NotificationManager#getEffectsSuppressor():
-    
-MissingNullability: android.app.NotificationManager#matchesCallFilter(android.os.Bundle) parameter #0:
-    
-MissingNullability: android.app.PictureInPictureParams#getActions():
-    
-MissingNullability: android.app.PictureInPictureParams#getSourceRectHint():
-    
-MissingNullability: android.app.TimePickerDialog#getTimePicker():
-    
-MissingNullability: android.app.UiAutomation#executeShellCommandRw(String):
-    
-MissingNullability: android.app.UiAutomation#executeShellCommandRw(String) parameter #0:
-    
-MissingNullability: android.app.UiAutomation#grantRuntimePermission(String, String, android.os.UserHandle) parameter #0:
-    
-MissingNullability: android.app.UiAutomation#grantRuntimePermission(String, String, android.os.UserHandle) parameter #1:
-    
-MissingNullability: android.app.UiAutomation#grantRuntimePermission(String, String, android.os.UserHandle) parameter #2:
-    
-MissingNullability: android.app.UiAutomation#revokeRuntimePermission(String, String, android.os.UserHandle) parameter #0:
-    
-MissingNullability: android.app.UiAutomation#revokeRuntimePermission(String, String, android.os.UserHandle) parameter #1:
-    
-MissingNullability: android.app.UiAutomation#revokeRuntimePermission(String, String, android.os.UserHandle) parameter #2:
-    
-MissingNullability: android.app.WallpaperManager#setWallpaperComponent(android.content.ComponentName) parameter #0:
-    
-MissingNullability: android.app.WindowConfiguration#compareTo(android.app.WindowConfiguration) parameter #0:
-    
-MissingNullability: android.app.WindowConfiguration#getAppBounds():
-    
-MissingNullability: android.app.WindowConfiguration#getBounds():
-    
-MissingNullability: android.app.WindowConfiguration#setAppBounds(android.graphics.Rect) parameter #0:
-    
-MissingNullability: android.app.WindowConfiguration#setBounds(android.graphics.Rect) parameter #0:
-    
-MissingNullability: android.app.WindowConfiguration#setTo(android.app.WindowConfiguration) parameter #0:
-    
-MissingNullability: android.app.WindowConfiguration#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.app.admin.DevicePolicyManager#getOwnerInstalledCaCerts(android.os.UserHandle):
-    
-MissingNullability: android.app.admin.SecurityLog.SecurityEvent#SecurityEvent(long, byte[]) parameter #1:
-    
-MissingNullability: android.app.backup.BackupManager#getConfigurationIntent(String):
-    
-MissingNullability: android.app.backup.BackupManager#getConfigurationIntent(String) parameter #0:
-    
-MissingNullability: android.app.backup.BackupManager#getDataManagementIntent(String):
-    
-MissingNullability: android.app.backup.BackupManager#getDataManagementIntent(String) parameter #0:
-    
-MissingNullability: android.app.backup.BackupManager#getDestinationString(String):
-    
-MissingNullability: android.app.backup.BackupManager#getDestinationString(String) parameter #0:
-    
-MissingNullability: android.app.prediction.AppPredictionSessionId#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.app.prediction.AppPredictor#getSessionId():
-    
-MissingNullability: android.app.prediction.AppTarget#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.app.prediction.AppTargetEvent#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.app.prediction.AppTargetId#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.content.AutofillOptions#forWhitelistingItself():
-    
-MissingNullability: android.content.AutofillOptions#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.content.ContentCaptureOptions#forWhitelistingItself():
-    
-MissingNullability: android.content.ContentCaptureOptions#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.content.ContentResolver#getSyncAdapterPackagesForAuthorityAsUser(String, int):
-    
-MissingNullability: android.content.ContentResolver#getSyncAdapterPackagesForAuthorityAsUser(String, int) parameter #0:
-    
-MissingNullability: android.content.Context#getDisplay():
-    
-MissingNullability: android.content.Context#getUser():
-    
-MissingNullability: android.content.ContextWrapper#getDisplay():
-    
-MissingNullability: android.content.ContextWrapper#setContentCaptureOptions(android.content.ContentCaptureOptions) parameter #0:
-    
-MissingNullability: android.content.pm.ActivityInfo#isTranslucentOrFloating(android.content.res.TypedArray) parameter #0:
-    
-MissingNullability: android.content.pm.LauncherApps#LauncherApps(android.content.Context) parameter #0:
-    
-MissingNullability: android.content.pm.PackageInstaller.SessionParams#setGrantedRuntimePermissions(String[]) parameter #0:
-    
-MissingNullability: android.content.pm.PackageManager#getNamesForUids(int[]) parameter #0:
-    
-MissingNullability: android.content.pm.ShortcutManager#ShortcutManager(android.content.Context) parameter #0:
-    
-MissingNullability: android.content.res.AssetManager#getOverlayablesToString(String) parameter #0:
-    
-MissingNullability: android.content.res.Configuration#windowConfiguration:
-    
-MissingNullability: android.content.rollback.PackageRollbackInfo#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.content.rollback.RollbackInfo#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.database.sqlite.SQLiteDebug#dump(android.util.Printer, String[]) parameter #0:
-    
-MissingNullability: android.database.sqlite.SQLiteDebug#dump(android.util.Printer, String[]) parameter #1:
-    
-MissingNullability: android.database.sqlite.SQLiteDebug#getDatabaseInfo():
-    
-MissingNullability: android.database.sqlite.SQLiteDebug.DbStats#DbStats(String, long, long, int, int, int, int) parameter #0:
-    
-MissingNullability: android.database.sqlite.SQLiteDebug.DbStats#cache:
-    
-MissingNullability: android.database.sqlite.SQLiteDebug.DbStats#dbName:
-    
-MissingNullability: android.database.sqlite.SQLiteDebug.PagerStats#dbStats:
-    
-MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#SQLiteDirectCursorDriver(android.database.sqlite.SQLiteDatabase, String, String, android.os.CancellationSignal) parameter #0:
-    
-MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#SQLiteDirectCursorDriver(android.database.sqlite.SQLiteDatabase, String, String, android.os.CancellationSignal) parameter #1:
-    
-MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#SQLiteDirectCursorDriver(android.database.sqlite.SQLiteDatabase, String, String, android.os.CancellationSignal) parameter #2:
-    
-MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#SQLiteDirectCursorDriver(android.database.sqlite.SQLiteDatabase, String, String, android.os.CancellationSignal) parameter #3:
-    
-MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#cursorRequeried(android.database.Cursor) parameter #0:
-    
-MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#query(android.database.sqlite.SQLiteDatabase.CursorFactory, String[]):
-    
-MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#query(android.database.sqlite.SQLiteDatabase.CursorFactory, String[]) parameter #0:
-    
-MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#query(android.database.sqlite.SQLiteDatabase.CursorFactory, String[]) parameter #1:
-    
-MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#setBindArguments(String[]) parameter #0:
-    
-MissingNullability: android.database.sqlite.SQLiteGlobal#getDefaultJournalMode():
-    
-MissingNullability: android.database.sqlite.SQLiteGlobal#getDefaultSyncMode():
-    
-MissingNullability: android.database.sqlite.SQLiteGlobal#getWALSyncMode():
-    
-MissingNullability: android.graphics.ImageDecoder#createSource(android.content.res.Resources, java.io.InputStream, int) parameter #0:
-    
-MissingNullability: android.graphics.ImageDecoder#createSource(android.content.res.Resources, java.io.InputStream, int) parameter #1:
-    
-MissingNullability: android.graphics.drawable.AdaptiveIconDrawable#getSafeZone():
-    
-MissingNullability: android.graphics.drawable.ColorDrawable#getXfermode():
-    
-MissingNullability: android.hardware.camera2.CameraDevice#createCustomCaptureSession(android.hardware.camera2.params.InputConfiguration, java.util.List<android.hardware.camera2.params.OutputConfiguration>, int, android.hardware.camera2.CameraCaptureSession.StateCallback, android.os.Handler) parameter #0:
-    
-MissingNullability: android.hardware.camera2.CameraManager#getCameraIdListNoLazy():
-    
-MissingNullability: android.hardware.display.AmbientBrightnessDayStats#getBucketBoundaries():
-    
-MissingNullability: android.hardware.display.AmbientBrightnessDayStats#getLocalDate():
-    
-MissingNullability: android.hardware.display.AmbientBrightnessDayStats#getStats():
-    
-MissingNullability: android.hardware.display.AmbientBrightnessDayStats#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.hardware.display.AmbientDisplayConfiguration#AmbientDisplayConfiguration(android.content.Context) parameter #0:
-    
-MissingNullability: android.hardware.display.BrightnessChangeEvent#luxTimestamps:
-    
-MissingNullability: android.hardware.display.BrightnessChangeEvent#luxValues:
-    
-MissingNullability: android.hardware.display.BrightnessChangeEvent#packageName:
-    
-MissingNullability: android.hardware.display.BrightnessChangeEvent#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.hardware.display.BrightnessConfiguration#getCurve():
-    
-MissingNullability: android.hardware.display.BrightnessConfiguration#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.hardware.display.BrightnessConfiguration.Builder#Builder(float[], float[]) parameter #0:
-    
-MissingNullability: android.hardware.display.BrightnessConfiguration.Builder#Builder(float[], float[]) parameter #1:
-    
-MissingNullability: android.hardware.display.BrightnessCorrection#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.hardware.display.DisplayManager#getAmbientBrightnessStats():
-    
-MissingNullability: android.hardware.display.DisplayManager#getBrightnessConfiguration():
-    
-MissingNullability: android.hardware.display.DisplayManager#getBrightnessEvents():
-    
-MissingNullability: android.hardware.display.DisplayManager#getStableDisplaySize():
-    
-MissingNullability: android.hardware.display.DisplayManager#setBrightnessConfiguration(android.hardware.display.BrightnessConfiguration) parameter #0:
-    
-MissingNullability: android.location.GnssClock#set(android.location.GnssClock) parameter #0:
-    
-MissingNullability: android.location.GnssMeasurement#set(android.location.GnssMeasurement) parameter #0:
-    
-MissingNullability: android.location.GnssMeasurementsEvent#GnssMeasurementsEvent(android.location.GnssClock, android.location.GnssMeasurement[]) parameter #0:
-    
-MissingNullability: android.location.GnssMeasurementsEvent#GnssMeasurementsEvent(android.location.GnssClock, android.location.GnssMeasurement[]) parameter #1:
-    
-MissingNullability: android.location.GnssNavigationMessage#set(android.location.GnssNavigationMessage) parameter #0:
-    
-MissingNullability: android.location.GnssNavigationMessage#setData(byte[]) parameter #0:
-    
-MissingNullability: android.location.LocationManager#getTestProviderCurrentRequests(String) parameter #0:
-    
-MissingNullability: android.location.LocationRequest#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.media.AudioFocusInfo#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String) parameter #3:
-    
-MissingNullability: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String) parameter #4:
-    
-MissingNullability: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String) parameter #6:
-    
-MissingNullability: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]) parameter #10:
-    
-MissingNullability: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]) parameter #11:
-    
-MissingNullability: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]) parameter #3:
-    
-MissingNullability: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]) parameter #4:
-    
-MissingNullability: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]) parameter #6:
-    
-MissingNullability: android.media.PlaybackParams#setAudioStretchMode(int):
-    
-MissingNullability: android.media.audiofx.AudioEffect#EFFECT_TYPE_NULL:
-    
-MissingNullability: android.media.audiofx.AudioEffect#byteArrayToInt(byte[]) parameter #0:
-    
-MissingNullability: android.media.audiofx.AudioEffect#byteArrayToShort(byte[]) parameter #0:
-    
-MissingNullability: android.media.audiofx.AudioEffect#getParameter(byte[], byte[]) parameter #0:
-    
-MissingNullability: android.media.audiofx.AudioEffect#getParameter(byte[], byte[]) parameter #1:
-    
-MissingNullability: android.media.audiofx.AudioEffect#getParameter(int, byte[]) parameter #1:
-    
-MissingNullability: android.media.audiofx.AudioEffect#getParameter(int, int[]) parameter #1:
-    
-MissingNullability: android.media.audiofx.AudioEffect#getParameter(int, short[]) parameter #1:
-    
-MissingNullability: android.media.audiofx.AudioEffect#getParameter(int[], short[]) parameter #0:
-    
-MissingNullability: android.media.audiofx.AudioEffect#getParameter(int[], short[]) parameter #1:
-    
-MissingNullability: android.media.audiofx.AudioEffect#intToByteArray(int):
-    
-MissingNullability: android.media.audiofx.AudioEffect#isEffectTypeAvailable(java.util.UUID) parameter #0:
-    
-MissingNullability: android.media.audiofx.AudioEffect#setParameter(byte[], byte[]) parameter #0:
-    
-MissingNullability: android.media.audiofx.AudioEffect#setParameter(byte[], byte[]) parameter #1:
-    
-MissingNullability: android.media.audiofx.AudioEffect#setParameter(int, byte[]) parameter #1:
-    
-MissingNullability: android.media.audiofx.AudioEffect#setParameter(int[], byte[]) parameter #0:
-    
-MissingNullability: android.media.audiofx.AudioEffect#setParameter(int[], byte[]) parameter #1:
-    
-MissingNullability: android.media.audiofx.AudioEffect#setParameter(int[], int[]) parameter #0:
-    
-MissingNullability: android.media.audiofx.AudioEffect#setParameter(int[], int[]) parameter #1:
-    
-MissingNullability: android.media.audiofx.AudioEffect#setParameterListener(android.media.audiofx.AudioEffect.OnParameterChangeListener) parameter #0:
-    
-MissingNullability: android.media.audiofx.AudioEffect#shortToByteArray(short):
-    
-MissingNullability: android.media.audiofx.AudioEffect.Descriptor#Descriptor(android.os.Parcel) parameter #0:
-    
-MissingNullability: android.media.audiofx.AudioEffect.Descriptor#writeToParcel(android.os.Parcel) parameter #0:
-    
-MissingNullability: android.media.audiofx.AudioEffect.OnParameterChangeListener#onParameterChange(android.media.audiofx.AudioEffect, int, byte[], byte[]) parameter #0:
-    
-MissingNullability: android.media.audiofx.AudioEffect.OnParameterChangeListener#onParameterChange(android.media.audiofx.AudioEffect, int, byte[], byte[]) parameter #2:
-    
-MissingNullability: android.media.audiofx.AudioEffect.OnParameterChangeListener#onParameterChange(android.media.audiofx.AudioEffect, int, byte[], byte[]) parameter #3:
-    
-MissingNullability: android.media.audiopolicy.AudioMix.Builder#Builder(android.media.audiopolicy.AudioMixingRule) parameter #0:
-    
-MissingNullability: android.media.audiopolicy.AudioMix.Builder#build():
-    
-MissingNullability: android.media.audiopolicy.AudioMix.Builder#setDevice(android.media.AudioDeviceInfo):
-    
-MissingNullability: android.media.audiopolicy.AudioMix.Builder#setFormat(android.media.AudioFormat):
-    
-MissingNullability: android.media.audiopolicy.AudioMix.Builder#setFormat(android.media.AudioFormat) parameter #0:
-    
-MissingNullability: android.media.audiopolicy.AudioMix.Builder#setRouteFlags(int):
-    
-MissingNullability: android.media.audiopolicy.AudioMixingRule.Builder#addMixRule(int, Object):
-    
-MissingNullability: android.media.audiopolicy.AudioMixingRule.Builder#addMixRule(int, Object) parameter #1:
-    
-MissingNullability: android.media.audiopolicy.AudioMixingRule.Builder#addRule(android.media.AudioAttributes, int):
-    
-MissingNullability: android.media.audiopolicy.AudioMixingRule.Builder#addRule(android.media.AudioAttributes, int) parameter #0:
-    
-MissingNullability: android.media.audiopolicy.AudioMixingRule.Builder#build():
-    
-MissingNullability: android.media.audiopolicy.AudioMixingRule.Builder#excludeMixRule(int, Object):
-    
-MissingNullability: android.media.audiopolicy.AudioMixingRule.Builder#excludeMixRule(int, Object) parameter #1:
-    
-MissingNullability: android.media.audiopolicy.AudioMixingRule.Builder#excludeRule(android.media.AudioAttributes, int):
-    
-MissingNullability: android.media.audiopolicy.AudioMixingRule.Builder#excludeRule(android.media.AudioAttributes, int) parameter #0:
-    
-MissingNullability: android.media.audiopolicy.AudioPolicy#createAudioRecordSink(android.media.audiopolicy.AudioMix):
-    
-MissingNullability: android.media.audiopolicy.AudioPolicy#createAudioRecordSink(android.media.audiopolicy.AudioMix) parameter #0:
-    
-MissingNullability: android.media.audiopolicy.AudioPolicy#createAudioTrackSource(android.media.audiopolicy.AudioMix):
-    
-MissingNullability: android.media.audiopolicy.AudioPolicy#createAudioTrackSource(android.media.audiopolicy.AudioMix) parameter #0:
-    
-MissingNullability: android.media.audiopolicy.AudioPolicy#setRegistration(String) parameter #0:
-    
-MissingNullability: android.media.audiopolicy.AudioPolicy#toLogFriendlyString():
-    
-MissingNullability: android.media.audiopolicy.AudioPolicy.AudioPolicyFocusListener#onAudioFocusAbandon(android.media.AudioFocusInfo) parameter #0:
-    
-MissingNullability: android.media.audiopolicy.AudioPolicy.AudioPolicyFocusListener#onAudioFocusGrant(android.media.AudioFocusInfo, int) parameter #0:
-    
-MissingNullability: android.media.audiopolicy.AudioPolicy.AudioPolicyFocusListener#onAudioFocusLoss(android.media.AudioFocusInfo, boolean) parameter #0:
-    
-MissingNullability: android.media.audiopolicy.AudioPolicy.AudioPolicyFocusListener#onAudioFocusRequest(android.media.AudioFocusInfo, int) parameter #0:
-    
-MissingNullability: android.media.audiopolicy.AudioPolicy.AudioPolicyStatusListener#onMixStateUpdate(android.media.audiopolicy.AudioMix) parameter #0:
-    
-MissingNullability: android.media.audiopolicy.AudioPolicy.Builder#Builder(android.content.Context) parameter #0:
-    
-MissingNullability: android.media.audiopolicy.AudioPolicy.Builder#setAudioPolicyFocusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyFocusListener) parameter #0:
-    
-MissingNullability: android.media.audiopolicy.AudioPolicy.Builder#setAudioPolicyStatusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyStatusListener) parameter #0:
-    
-MissingNullability: android.metrics.LogMaker#LogMaker(Object[]) parameter #0:
-    
-MissingNullability: android.metrics.LogMaker#addTaggedData(int, Object):
-    
-MissingNullability: android.metrics.LogMaker#addTaggedData(int, Object) parameter #1:
-    
-MissingNullability: android.metrics.LogMaker#clearCategory():
-    
-MissingNullability: android.metrics.LogMaker#clearPackageName():
-    
-MissingNullability: android.metrics.LogMaker#clearSubtype():
-    
-MissingNullability: android.metrics.LogMaker#clearTaggedData(int):
-    
-MissingNullability: android.metrics.LogMaker#clearType():
-    
-MissingNullability: android.metrics.LogMaker#deserialize(Object[]) parameter #0:
-    
-MissingNullability: android.metrics.LogMaker#getCounterName():
-    
-MissingNullability: android.metrics.LogMaker#getPackageName():
-    
-MissingNullability: android.metrics.LogMaker#getTaggedData(int):
-    
-MissingNullability: android.metrics.LogMaker#isSubsetOf(android.metrics.LogMaker) parameter #0:
-    
-MissingNullability: android.metrics.LogMaker#isValidValue(Object) parameter #0:
-    
-MissingNullability: android.metrics.LogMaker#serialize():
-    
-MissingNullability: android.metrics.LogMaker#setCategory(int):
-    
-MissingNullability: android.metrics.LogMaker#setPackageName(String):
-    
-MissingNullability: android.metrics.LogMaker#setPackageName(String) parameter #0:
-    
-MissingNullability: android.metrics.LogMaker#setSubtype(int):
-    
-MissingNullability: android.metrics.LogMaker#setType(int):
-    
-MissingNullability: android.metrics.MetricsReader#next():
-    
-MissingNullability: android.net.NetworkCapabilities#getCapabilities():
-    
-MissingNullability: android.net.StaticIpConfiguration#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.net.TestNetworkInterface#CREATOR:
-    
-MissingNullability: android.net.TestNetworkInterface#TestNetworkInterface(android.os.ParcelFileDescriptor, String) parameter #0:
-    
-MissingNullability: android.net.TestNetworkInterface#TestNetworkInterface(android.os.ParcelFileDescriptor, String) parameter #1:
-    
-MissingNullability: android.net.TestNetworkInterface#getFileDescriptor():
-    
-MissingNullability: android.net.TestNetworkInterface#getInterfaceName():
-    
-MissingNullability: android.net.TestNetworkInterface#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.net.TestNetworkManager#createTapInterface():
-    
-MissingNullability: android.net.TestNetworkManager#createTunInterface(android.net.LinkAddress[]):
-    
-MissingNullability: android.net.apf.ApfCapabilities#CREATOR:
-    
-MissingNullability: android.net.apf.ApfCapabilities#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.net.metrics.DhcpClientEvent.Builder#setMsg(String) parameter #0:
-    
-MissingNullability: android.os.Build#is64BitAbi(String) parameter #0:
-    
-MissingNullability: android.os.Build.VERSION#ACTIVE_CODENAMES:
-    
-MissingNullability: android.os.Environment#buildPath(java.io.File, java.lang.String...):
-    
-MissingNullability: android.os.Environment#buildPath(java.io.File, java.lang.String...) parameter #0:
-    
-MissingNullability: android.os.Environment#buildPath(java.io.File, java.lang.String...) parameter #1:
-    
-MissingNullability: android.os.FileUtils#contains(java.io.File, java.io.File) parameter #0:
-    
-MissingNullability: android.os.FileUtils#contains(java.io.File, java.io.File) parameter #1:
-    
-MissingNullability: android.os.HwBinder#getService(String, String):
-    
-MissingNullability: android.os.HwBinder#getService(String, String) parameter #0:
-    
-MissingNullability: android.os.HwBinder#getService(String, String) parameter #1:
-    
-MissingNullability: android.os.HwBinder#getService(String, String, boolean):
-    
-MissingNullability: android.os.HwBinder#getService(String, String, boolean) parameter #0:
-    
-MissingNullability: android.os.HwBinder#getService(String, String, boolean) parameter #1:
-    
-MissingNullability: android.os.HwBinder#onTransact(int, android.os.HwParcel, android.os.HwParcel, int) parameter #1:
-    
-MissingNullability: android.os.HwBinder#onTransact(int, android.os.HwParcel, android.os.HwParcel, int) parameter #2:
-    
-MissingNullability: android.os.HwBinder#registerService(String) parameter #0:
-    
-MissingNullability: android.os.HwBinder#transact(int, android.os.HwParcel, android.os.HwParcel, int) parameter #1:
-    
-MissingNullability: android.os.HwBinder#transact(int, android.os.HwParcel, android.os.HwParcel, int) parameter #2:
-    
-MissingNullability: android.os.HwBlob#copyToBoolArray(long, boolean[], int) parameter #1:
-    
-MissingNullability: android.os.HwBlob#copyToDoubleArray(long, double[], int) parameter #1:
-    
-MissingNullability: android.os.HwBlob#copyToFloatArray(long, float[], int) parameter #1:
-    
-MissingNullability: android.os.HwBlob#copyToInt16Array(long, short[], int) parameter #1:
-    
-MissingNullability: android.os.HwBlob#copyToInt32Array(long, int[], int) parameter #1:
-    
-MissingNullability: android.os.HwBlob#copyToInt64Array(long, long[], int) parameter #1:
-    
-MissingNullability: android.os.HwBlob#copyToInt8Array(long, byte[], int) parameter #1:
-    
-MissingNullability: android.os.HwBlob#getString(long):
-    
-MissingNullability: android.os.HwBlob#putBlob(long, android.os.HwBlob) parameter #1:
-    
-MissingNullability: android.os.HwBlob#putBoolArray(long, boolean[]) parameter #1:
-    
-MissingNullability: android.os.HwBlob#putDoubleArray(long, double[]) parameter #1:
-    
-MissingNullability: android.os.HwBlob#putFloatArray(long, float[]) parameter #1:
-    
-MissingNullability: android.os.HwBlob#putInt16Array(long, short[]) parameter #1:
-    
-MissingNullability: android.os.HwBlob#putInt32Array(long, int[]) parameter #1:
-    
-MissingNullability: android.os.HwBlob#putInt64Array(long, long[]) parameter #1:
-    
-MissingNullability: android.os.HwBlob#putInt8Array(long, byte[]) parameter #1:
-    
-MissingNullability: android.os.HwBlob#putString(long, String) parameter #1:
-    
-MissingNullability: android.os.HwBlob#wrapArray(boolean[]):
-    
-MissingNullability: android.os.HwBlob#wrapArray(byte[]):
-    
-MissingNullability: android.os.HwBlob#wrapArray(double[]):
-    
-MissingNullability: android.os.HwBlob#wrapArray(float[]):
-    
-MissingNullability: android.os.HwBlob#wrapArray(int[]):
-    
-MissingNullability: android.os.HwBlob#wrapArray(long[]):
-    
-MissingNullability: android.os.HwBlob#wrapArray(short[]):
-    
-MissingNullability: android.os.HwParcel#enforceInterface(String) parameter #0:
-    
-MissingNullability: android.os.HwParcel#readBoolVector():
-    
-MissingNullability: android.os.HwParcel#readBuffer(long):
-    
-MissingNullability: android.os.HwParcel#readDoubleVector():
-    
-MissingNullability: android.os.HwParcel#readEmbeddedBuffer(long, long, long, boolean):
-    
-MissingNullability: android.os.HwParcel#readFloatVector():
-    
-MissingNullability: android.os.HwParcel#readInt16Vector():
-    
-MissingNullability: android.os.HwParcel#readInt32Vector():
-    
-MissingNullability: android.os.HwParcel#readInt64Vector():
-    
-MissingNullability: android.os.HwParcel#readInt8Vector():
-    
-MissingNullability: android.os.HwParcel#readString():
-    
-MissingNullability: android.os.HwParcel#readStringVector():
-    
-MissingNullability: android.os.HwParcel#readStrongBinder():
-    
-MissingNullability: android.os.HwParcel#writeBoolVector(java.util.ArrayList<java.lang.Boolean>) parameter #0:
-    
-MissingNullability: android.os.HwParcel#writeBuffer(android.os.HwBlob) parameter #0:
-    
-MissingNullability: android.os.HwParcel#writeDoubleVector(java.util.ArrayList<java.lang.Double>) parameter #0:
-    
-MissingNullability: android.os.HwParcel#writeFloatVector(java.util.ArrayList<java.lang.Float>) parameter #0:
-    
-MissingNullability: android.os.HwParcel#writeInt16Vector(java.util.ArrayList<java.lang.Short>) parameter #0:
-    
-MissingNullability: android.os.HwParcel#writeInt32Vector(java.util.ArrayList<java.lang.Integer>) parameter #0:
-    
-MissingNullability: android.os.HwParcel#writeInt64Vector(java.util.ArrayList<java.lang.Long>) parameter #0:
-    
-MissingNullability: android.os.HwParcel#writeInt8Vector(java.util.ArrayList<java.lang.Byte>) parameter #0:
-    
-MissingNullability: android.os.HwParcel#writeInterfaceToken(String) parameter #0:
-    
-MissingNullability: android.os.HwParcel#writeString(String) parameter #0:
-    
-MissingNullability: android.os.HwParcel#writeStringVector(java.util.ArrayList<java.lang.String>) parameter #0:
-    
-MissingNullability: android.os.HwParcel#writeStrongBinder(android.os.IHwBinder) parameter #0:
-    
-MissingNullability: android.os.IHwBinder#linkToDeath(android.os.IHwBinder.DeathRecipient, long) parameter #0:
-    
-MissingNullability: android.os.IHwBinder#queryLocalInterface(String):
-    
-MissingNullability: android.os.IHwBinder#queryLocalInterface(String) parameter #0:
-    
-MissingNullability: android.os.IHwBinder#transact(int, android.os.HwParcel, android.os.HwParcel, int) parameter #1:
-    
-MissingNullability: android.os.IHwBinder#transact(int, android.os.HwParcel, android.os.HwParcel, int) parameter #2:
-    
-MissingNullability: android.os.IHwBinder#unlinkToDeath(android.os.IHwBinder.DeathRecipient) parameter #0:
-    
-MissingNullability: android.os.IHwInterface#asBinder():
-    
-MissingNullability: android.os.IncidentManager#approveReport(android.net.Uri) parameter #0:
-    
-MissingNullability: android.os.IncidentManager#cancelAuthorization(android.os.IncidentManager.AuthListener) parameter #0:
-    
-MissingNullability: android.os.IncidentManager#deleteIncidentReports(android.net.Uri) parameter #0:
-    
-MissingNullability: android.os.IncidentManager#denyReport(android.net.Uri) parameter #0:
-    
-MissingNullability: android.os.IncidentManager#getIncidentReport(android.net.Uri) parameter #0:
-    
-MissingNullability: android.os.IncidentManager#getIncidentReportList(String) parameter #0:
-    
-MissingNullability: android.os.IncidentManager#getPendingReports():
-    
-MissingNullability: android.os.IncidentManager#reportIncident(android.os.IncidentReportArgs) parameter #0:
-    
-MissingNullability: android.os.IncidentManager#requestAuthorization(int, String, int, android.os.IncidentManager.AuthListener) parameter #1:
-    
-MissingNullability: android.os.IncidentManager#requestAuthorization(int, String, int, android.os.IncidentManager.AuthListener) parameter #3:
-    
-MissingNullability: android.os.IncidentManager.IncidentReport#IncidentReport(android.os.Parcel) parameter #0:
-    
-MissingNullability: android.os.IncidentManager.IncidentReport#getInputStream():
-    
-MissingNullability: android.os.IncidentManager.IncidentReport#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.os.IncidentReportArgs#IncidentReportArgs(android.os.Parcel) parameter #0:
-    
-MissingNullability: android.os.IncidentReportArgs#addHeader(byte[]) parameter #0:
-    
-MissingNullability: android.os.IncidentReportArgs#readFromParcel(android.os.Parcel) parameter #0:
-    
-MissingNullability: android.os.IncidentReportArgs#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.os.ParcelFileDescriptor#getFile(java.io.FileDescriptor):
-    
-MissingNullability: android.os.ParcelFileDescriptor#getFile(java.io.FileDescriptor) parameter #0:
-    
-MissingNullability: android.os.RemoteCallback#RemoteCallback(android.os.RemoteCallback.OnResultListener) parameter #0:
-    
-MissingNullability: android.os.RemoteCallback#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.os.StrictMode#setViolationLogger(android.os.StrictMode.ViolationLogger) parameter #0:
-    
-MissingNullability: android.os.StrictMode.ViolationInfo#ViolationInfo(android.os.Parcel) parameter #0:
-    
-MissingNullability: android.os.StrictMode.ViolationInfo#ViolationInfo(android.os.Parcel, boolean) parameter #0:
-    
-MissingNullability: android.os.StrictMode.ViolationInfo#broadcastIntentAction:
-    
-MissingNullability: android.os.StrictMode.ViolationInfo#dump(android.util.Printer, String) parameter #0:
-    
-MissingNullability: android.os.StrictMode.ViolationInfo#dump(android.util.Printer, String) parameter #1:
-    
-MissingNullability: android.os.StrictMode.ViolationInfo#getStackTrace():
-    
-MissingNullability: android.os.StrictMode.ViolationInfo#getViolationClass():
-    
-MissingNullability: android.os.StrictMode.ViolationInfo#getViolationDetails():
-    
-MissingNullability: android.os.StrictMode.ViolationInfo#tags:
-    
-MissingNullability: android.os.StrictMode.ViolationInfo#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.os.StrictMode.ViolationLogger#log(android.os.StrictMode.ViolationInfo) parameter #0:
-    
-MissingNullability: android.os.UserHandle#of(int):
-    
-MissingNullability: android.os.VibrationEffect#RINGTONES:
-    
-MissingNullability: android.os.VibrationEffect#get(android.net.Uri, android.content.Context) parameter #0:
-    
-MissingNullability: android.os.VibrationEffect#get(android.net.Uri, android.content.Context) parameter #1:
-    
-MissingNullability: android.os.VibrationEffect#get(int):
-    
-MissingNullability: android.os.VibrationEffect#get(int, boolean):
-    
-MissingNullability: android.os.VibrationEffect.OneShot#OneShot(android.os.Parcel) parameter #0:
-    
-MissingNullability: android.os.VibrationEffect.OneShot#scale(float, int):
-    
-MissingNullability: android.os.VibrationEffect.OneShot#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.os.VibrationEffect.Prebaked#Prebaked(android.os.Parcel) parameter #0:
-    
-MissingNullability: android.os.VibrationEffect.Prebaked#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.os.VibrationEffect.Waveform#Waveform(android.os.Parcel) parameter #0:
-    
-MissingNullability: android.os.VibrationEffect.Waveform#Waveform(long[], int[], int) parameter #0:
-    
-MissingNullability: android.os.VibrationEffect.Waveform#Waveform(long[], int[], int) parameter #1:
-    
-MissingNullability: android.os.VibrationEffect.Waveform#getAmplitudes():
-    
-MissingNullability: android.os.VibrationEffect.Waveform#getTimings():
-    
-MissingNullability: android.os.VibrationEffect.Waveform#scale(float, int):
-    
-MissingNullability: android.os.VibrationEffect.Waveform#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.os.VintfObject#getHalNamesAndVersions():
-    
-MissingNullability: android.os.VintfObject#getSepolicyVersion():
-    
-MissingNullability: android.os.VintfObject#getTargetFrameworkCompatibilityMatrixVersion():
-    
-MissingNullability: android.os.VintfObject#getVndkSnapshots():
-    
-MissingNullability: android.os.VintfObject#report():
-    
-MissingNullability: android.os.VintfRuntimeInfo#getCpuInfo():
-    
-MissingNullability: android.os.VintfRuntimeInfo#getHardwareId():
-    
-MissingNullability: android.os.VintfRuntimeInfo#getKernelVersion():
-    
-MissingNullability: android.os.VintfRuntimeInfo#getNodeName():
-    
-MissingNullability: android.os.VintfRuntimeInfo#getOsName():
-    
-MissingNullability: android.os.VintfRuntimeInfo#getOsRelease():
-    
-MissingNullability: android.os.VintfRuntimeInfo#getOsVersion():
-    
-MissingNullability: android.os.WorkSource#add(int, String) parameter #1:
-    
-MissingNullability: android.os.WorkSource#addReturningNewbs(android.os.WorkSource) parameter #0:
-    
-MissingNullability: android.os.WorkSource#getName(int):
-    
-MissingNullability: android.os.WorkSource#setReturningDiffs(android.os.WorkSource) parameter #0:
-    
-MissingNullability: android.os.health.HealthKeys.Constants#Constants(Class) parameter #0:
-    
-MissingNullability: android.os.health.HealthKeys.Constants#getDataType():
-    
-MissingNullability: android.os.health.HealthKeys.Constants#getKeys(int):
-    
-MissingNullability: android.os.health.HealthStats#HealthStats(android.os.Parcel) parameter #0:
-    
-MissingNullability: android.os.health.HealthStatsParceler#HealthStatsParceler(android.os.Parcel) parameter #0:
-    
-MissingNullability: android.os.health.HealthStatsParceler#HealthStatsParceler(android.os.health.HealthStatsWriter) parameter #0:
-    
-MissingNullability: android.os.health.HealthStatsParceler#getHealthStats():
-    
-MissingNullability: android.os.health.HealthStatsParceler#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.os.health.HealthStatsWriter#HealthStatsWriter(android.os.health.HealthKeys.Constants) parameter #0:
-    
-MissingNullability: android.os.health.HealthStatsWriter#addMeasurements(int, String, long) parameter #1:
-    
-MissingNullability: android.os.health.HealthStatsWriter#addStats(int, String, android.os.health.HealthStatsWriter) parameter #1:
-    
-MissingNullability: android.os.health.HealthStatsWriter#addStats(int, String, android.os.health.HealthStatsWriter) parameter #2:
-    
-MissingNullability: android.os.health.HealthStatsWriter#addTimers(int, String, android.os.health.TimerStat) parameter #1:
-    
-MissingNullability: android.os.health.HealthStatsWriter#addTimers(int, String, android.os.health.TimerStat) parameter #2:
-    
-MissingNullability: android.os.health.HealthStatsWriter#flattenToParcel(android.os.Parcel) parameter #0:
-    
-MissingNullability: android.os.storage.StorageVolume#getPath():
-    
-MissingNullability: android.permission.RuntimePermissionPresentationInfo#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.provider.CalendarContract.Calendars#SYNC_WRITABLE_COLUMNS:
-    
-MissingNullability: android.provider.CalendarContract.Events#SYNC_WRITABLE_COLUMNS:
-    
-MissingNullability: android.provider.ContactsContract.CommonDataKinds.Phone#ENTERPRISE_CONTENT_URI:
-    
-MissingNullability: android.provider.ContactsContract.RawContactsEntity#CORP_CONTENT_URI:
-    
-MissingNullability: android.provider.DeviceConfig#getProperty(String, String):
-    
-MissingNullability: android.provider.DeviceConfig#getString(String, String, String):
-    
-MissingNullability: android.provider.MediaStore#deleteContributedMedia(android.content.Context, String, android.os.UserHandle) parameter #0:
-    
-MissingNullability: android.provider.MediaStore#deleteContributedMedia(android.content.Context, String, android.os.UserHandle) parameter #1:
-    
-MissingNullability: android.provider.MediaStore#deleteContributedMedia(android.content.Context, String, android.os.UserHandle) parameter #2:
-    
-MissingNullability: android.provider.MediaStore#getContributedMediaSize(android.content.Context, String, android.os.UserHandle) parameter #0:
-    
-MissingNullability: android.provider.MediaStore#getContributedMediaSize(android.content.Context, String, android.os.UserHandle) parameter #1:
-    
-MissingNullability: android.provider.MediaStore#getContributedMediaSize(android.content.Context, String, android.os.UserHandle) parameter #2:
-    
-MissingNullability: android.provider.MediaStore#scanFile(android.content.Context, java.io.File):
-    
-MissingNullability: android.provider.MediaStore#scanFile(android.content.Context, java.io.File) parameter #0:
-    
-MissingNullability: android.provider.MediaStore#scanFile(android.content.Context, java.io.File) parameter #1:
-    
-MissingNullability: android.provider.MediaStore#scanFileFromShell(android.content.Context, java.io.File):
-    
-MissingNullability: android.provider.MediaStore#scanFileFromShell(android.content.Context, java.io.File) parameter #0:
-    
-MissingNullability: android.provider.MediaStore#scanFileFromShell(android.content.Context, java.io.File) parameter #1:
-    
-MissingNullability: android.provider.MediaStore#scanVolume(android.content.Context, java.io.File) parameter #0:
-    
-MissingNullability: android.provider.MediaStore#scanVolume(android.content.Context, java.io.File) parameter #1:
-    
-MissingNullability: android.provider.MediaStore#waitForIdle(android.content.Context) parameter #0:
-    
-MissingNullability: android.security.KeyStoreException#KeyStoreException(int, String) parameter #1:
-    
-MissingNullability: android.security.keystore.AttestationUtils#attestDeviceIds(android.content.Context, int[], byte[]) parameter #0:
-    
-MissingNullability: android.security.keystore.KeyProtection.Builder#setBoundToSpecificSecureUserId(long):
-    
-MissingNullability: android.service.autofill.AutofillFieldClassificationService#onBind(android.content.Intent):
-    
-MissingNullability: android.service.autofill.AutofillFieldClassificationService#onBind(android.content.Intent) parameter #0:
-    
-MissingNullability: android.service.autofill.CompositeUserData#getCategoryIds():
-    
-MissingNullability: android.service.autofill.CompositeUserData#getDefaultFieldClassificationArgs():
-    
-MissingNullability: android.service.autofill.CompositeUserData#getFieldClassificationAlgorithms():
-    
-MissingNullability: android.service.autofill.CompositeUserData#getFieldClassificationArgs():
-    
-MissingNullability: android.service.autofill.CompositeUserData#getValues():
-    
-MissingNullability: android.service.autofill.CompositeUserData#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.service.autofill.UserData#getFieldClassificationAlgorithms():
-    
-MissingNullability: android.service.autofill.augmented.AugmentedAutofillService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #0:
-    
-MissingNullability: android.service.autofill.augmented.AugmentedAutofillService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #1:
-    
-MissingNullability: android.service.autofill.augmented.AugmentedAutofillService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #2:
-    
-MissingNullability: android.service.autofill.augmented.AugmentedAutofillService#onUnbind(android.content.Intent) parameter #0:
-    
-MissingNullability: android.service.contentcapture.ContentCaptureService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #0:
-    
-MissingNullability: android.service.contentcapture.ContentCaptureService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #1:
-    
-MissingNullability: android.service.contentcapture.ContentCaptureService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #2:
-    
-MissingNullability: android.service.notification.Adjustment#Adjustment(String, String, android.os.Bundle, CharSequence, int) parameter #0:
-    
-MissingNullability: android.service.notification.Adjustment#Adjustment(String, String, android.os.Bundle, CharSequence, int) parameter #1:
-    
-MissingNullability: android.service.notification.Adjustment#Adjustment(String, String, android.os.Bundle, CharSequence, int) parameter #2:
-    
-MissingNullability: android.service.notification.Adjustment#Adjustment(String, String, android.os.Bundle, CharSequence, int) parameter #3:
-    
-MissingNullability: android.service.notification.Adjustment#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.service.notification.NotificationAssistantService#attachBaseContext(android.content.Context) parameter #0:
-    
-MissingNullability: android.service.notification.NotificationStats#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.service.notification.SnoozeCriterion#SnoozeCriterion(String, CharSequence, CharSequence) parameter #0:
-    
-MissingNullability: android.service.notification.SnoozeCriterion#SnoozeCriterion(String, CharSequence, CharSequence) parameter #1:
-    
-MissingNullability: android.service.notification.SnoozeCriterion#SnoozeCriterion(String, CharSequence, CharSequence) parameter #2:
-    
-MissingNullability: android.service.notification.SnoozeCriterion#SnoozeCriterion(android.os.Parcel) parameter #0:
-    
-MissingNullability: android.service.notification.SnoozeCriterion#getConfirmation():
-    
-MissingNullability: android.service.notification.SnoozeCriterion#getExplanation():
-    
-MissingNullability: android.service.notification.SnoozeCriterion#getId():
-    
-MissingNullability: android.service.notification.SnoozeCriterion#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.telecom.Call.Details#getTelecomCallId():
-    
-MissingNullability: android.telecom.CallScreeningService.CallResponse.Builder#setShouldScreenCallFurther(boolean):
-    
-MissingNullability: android.telecom.Conference#getPrimaryConnection():
-    
-MissingNullability: android.telecom.PhoneAccountSuggestionService#onBind(android.content.Intent):
-    
-MissingNullability: android.telecom.PhoneAccountSuggestionService#onBind(android.content.Intent) parameter #0:
-    
-MissingNullability: android.telephony.CallQuality#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.telephony.DataSpecificRegistrationInfo#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.telephony.LteVopsSupportInfo#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.telephony.NetworkRegistrationInfo#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.telephony.ServiceState#addNetworkRegistrationInfo(android.telephony.NetworkRegistrationInfo) parameter #0:
-    
-MissingNullability: android.telephony.ServiceState#setCellBandwidths(int[]) parameter #0:
-    
-MissingNullability: android.telephony.SmsManager#checkSmsShortCodeDestination(String, String) parameter #0:
-    
-MissingNullability: android.telephony.SmsManager#checkSmsShortCodeDestination(String, String) parameter #1:
-    
-MissingNullability: android.telephony.TelephonyManager#checkCarrierPrivilegesForPackage(String) parameter #0:
-    
-MissingNullability: android.telephony.TelephonyManager#getCarrierPackageNamesForIntent(android.content.Intent):
-    
-MissingNullability: android.telephony.TelephonyManager#getCarrierPackageNamesForIntent(android.content.Intent) parameter #0:
-    
-MissingNullability: android.telephony.TelephonyManager#getLine1AlphaTag():
-    
-MissingNullability: android.telephony.TelephonyManager#getRadioHalVersion():
-    
-MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String) parameter #0:
-    
-MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String) parameter #1:
-    
-MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String) parameter #2:
-    
-MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String) parameter #3:
-    
-MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String) parameter #4:
-    
-MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String) parameter #5:
-    
-MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String) parameter #6:
-    
-MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #0:
-    
-MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #1:
-    
-MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #2:
-    
-MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #3:
-    
-MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #4:
-    
-MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #5:
-    
-MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #6:
-    
-MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #7:
-    
-MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #8:
-    
-MissingNullability: android.telephony.ims.ImsCallForwardInfo#getNumber():
-    
-MissingNullability: android.telephony.ims.ImsCallForwardInfo#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallProfile#ImsCallProfile(int, int, android.os.Bundle, android.telephony.ims.ImsStreamMediaProfile) parameter #2:
-    
-MissingNullability: android.telephony.ims.ImsCallProfile#ImsCallProfile(int, int, android.os.Bundle, android.telephony.ims.ImsStreamMediaProfile) parameter #3:
-    
-MissingNullability: android.telephony.ims.ImsCallProfile#getCallExtra(String):
-    
-MissingNullability: android.telephony.ims.ImsCallProfile#getCallExtra(String) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallProfile#getCallExtra(String, String):
-    
-MissingNullability: android.telephony.ims.ImsCallProfile#getCallExtra(String, String) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallProfile#getCallExtra(String, String) parameter #1:
-    
-MissingNullability: android.telephony.ims.ImsCallProfile#getCallExtraBoolean(String) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallProfile#getCallExtraBoolean(String, boolean) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallProfile#getCallExtraInt(String) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallProfile#getCallExtraInt(String, int) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallProfile#getCallExtras():
-    
-MissingNullability: android.telephony.ims.ImsCallProfile#getMediaProfile():
-    
-MissingNullability: android.telephony.ims.ImsCallProfile#getVideoStateFromImsCallProfile(android.telephony.ims.ImsCallProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallProfile#setCallExtra(String, String) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallProfile#setCallExtra(String, String) parameter #1:
-    
-MissingNullability: android.telephony.ims.ImsCallProfile#setCallExtraBoolean(String, boolean) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallProfile#setCallExtraInt(String, int) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallProfile#updateCallExtras(android.telephony.ims.ImsCallProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallProfile#updateCallType(android.telephony.ims.ImsCallProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallProfile#updateMediaProfile(android.telephony.ims.ImsCallProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallProfile#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionConferenceExtendFailed(android.telephony.ims.ImsReasonInfo) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionConferenceExtendReceived(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionConferenceExtendReceived(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile) parameter #1:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionConferenceExtended(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionConferenceExtended(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile) parameter #1:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionConferenceStateUpdated(android.telephony.ims.ImsConferenceState) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionHandover(int, int, android.telephony.ims.ImsReasonInfo) parameter #2:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionHandoverFailed(int, int, android.telephony.ims.ImsReasonInfo) parameter #2:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionHeld(android.telephony.ims.ImsCallProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionHoldFailed(android.telephony.ims.ImsReasonInfo) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionHoldReceived(android.telephony.ims.ImsCallProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionInitiated(android.telephony.ims.ImsCallProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionInitiatedFailed(android.telephony.ims.ImsReasonInfo) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionInviteParticipantsRequestFailed(android.telephony.ims.ImsReasonInfo) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionMergeComplete(android.telephony.ims.stub.ImsCallSessionImplBase) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionMergeFailed(android.telephony.ims.ImsReasonInfo) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionMergeStarted(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionMergeStarted(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile) parameter #1:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionProgressing(android.telephony.ims.ImsStreamMediaProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionRemoveParticipantsRequestFailed(android.telephony.ims.ImsReasonInfo) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionResumeFailed(android.telephony.ims.ImsReasonInfo) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionResumeReceived(android.telephony.ims.ImsCallProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionResumed(android.telephony.ims.ImsCallProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionRttMessageReceived(String) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionRttModifyRequestReceived(android.telephony.ims.ImsCallProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionSuppServiceReceived(android.telephony.ims.ImsSuppServiceNotification) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionTerminated(android.telephony.ims.ImsReasonInfo) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionUpdateFailed(android.telephony.ims.ImsReasonInfo) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionUpdateReceived(android.telephony.ims.ImsCallProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionUpdated(android.telephony.ims.ImsCallProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionUssdMessageReceived(int, String) parameter #1:
-    
-MissingNullability: android.telephony.ims.ImsConferenceState#getConnectionStateForStatus(String) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsConferenceState#mParticipants:
-    
-MissingNullability: android.telephony.ims.ImsConferenceState#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsExternalCallState#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsReasonInfo#ImsReasonInfo(int, int, String) parameter #2:
-    
-MissingNullability: android.telephony.ims.ImsReasonInfo#getExtraMessage():
-    
-MissingNullability: android.telephony.ims.ImsReasonInfo#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsService#createMmTelFeature(int):
-    
-MissingNullability: android.telephony.ims.ImsService#createRcsFeature(int):
-    
-MissingNullability: android.telephony.ims.ImsService#getConfig(int):
-    
-MissingNullability: android.telephony.ims.ImsService#getRegistration(int):
-    
-MissingNullability: android.telephony.ims.ImsService#onUpdateSupportedImsFeatures(android.telephony.ims.stub.ImsFeatureConfiguration) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsService#querySupportedImsFeatures():
-    
-MissingNullability: android.telephony.ims.ImsSsData#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsSsInfo#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsStreamMediaProfile#copyFrom(android.telephony.ims.ImsStreamMediaProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsStreamMediaProfile#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsSuppServiceNotification#ImsSuppServiceNotification(int, int, int, int, String, String[]) parameter #4:
-    
-MissingNullability: android.telephony.ims.ImsSuppServiceNotification#ImsSuppServiceNotification(int, int, int, int, String, String[]) parameter #5:
-    
-MissingNullability: android.telephony.ims.ImsSuppServiceNotification#history:
-    
-MissingNullability: android.telephony.ims.ImsSuppServiceNotification#number:
-    
-MissingNullability: android.telephony.ims.ImsSuppServiceNotification#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsUtListener#onSupplementaryServiceIndication(android.telephony.ims.ImsSsData) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsUtListener#onUtConfigurationCallBarringQueried(int, android.telephony.ims.ImsSsInfo[]) parameter #1:
-    
-MissingNullability: android.telephony.ims.ImsUtListener#onUtConfigurationCallForwardQueried(int, android.telephony.ims.ImsCallForwardInfo[]) parameter #1:
-    
-MissingNullability: android.telephony.ims.ImsUtListener#onUtConfigurationCallWaitingQueried(int, android.telephony.ims.ImsSsInfo[]) parameter #1:
-    
-MissingNullability: android.telephony.ims.ImsUtListener#onUtConfigurationQueried(int, android.os.Bundle) parameter #1:
-    
-MissingNullability: android.telephony.ims.ImsUtListener#onUtConfigurationQueryFailed(int, android.telephony.ims.ImsReasonInfo) parameter #1:
-    
-MissingNullability: android.telephony.ims.ImsUtListener#onUtConfigurationUpdateFailed(int, android.telephony.ims.ImsReasonInfo) parameter #1:
-    
-MissingNullability: android.telephony.ims.ImsVideoCallProvider#changeCameraCapabilities(android.telecom.VideoProfile.CameraCapabilities) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsVideoCallProvider#onSendSessionModifyRequest(android.telecom.VideoProfile, android.telecom.VideoProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsVideoCallProvider#onSendSessionModifyRequest(android.telecom.VideoProfile, android.telecom.VideoProfile) parameter #1:
-    
-MissingNullability: android.telephony.ims.ImsVideoCallProvider#onSendSessionModifyResponse(android.telecom.VideoProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsVideoCallProvider#onSetCamera(String) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsVideoCallProvider#onSetCamera(String, int) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsVideoCallProvider#onSetDisplaySurface(android.view.Surface) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsVideoCallProvider#onSetPauseImage(android.net.Uri) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsVideoCallProvider#onSetPreviewSurface(android.view.Surface) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsVideoCallProvider#receiveSessionModifyRequest(android.telecom.VideoProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.ImsVideoCallProvider#receiveSessionModifyResponse(int, android.telecom.VideoProfile, android.telecom.VideoProfile) parameter #1:
-    
-MissingNullability: android.telephony.ims.ImsVideoCallProvider#receiveSessionModifyResponse(int, android.telecom.VideoProfile, android.telecom.VideoProfile) parameter #2:
-    
-MissingNullability: android.telephony.ims.feature.CapabilityChangeRequest#getCapabilitiesToDisable():
-    
-MissingNullability: android.telephony.ims.feature.CapabilityChangeRequest#getCapabilitiesToEnable():
-    
-MissingNullability: android.telephony.ims.feature.CapabilityChangeRequest#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.telephony.ims.feature.ImsFeature#changeEnabledCapabilities(android.telephony.ims.feature.CapabilityChangeRequest, android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy) parameter #0:
-    
-MissingNullability: android.telephony.ims.feature.ImsFeature#changeEnabledCapabilities(android.telephony.ims.feature.CapabilityChangeRequest, android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy) parameter #1:
-    
-MissingNullability: android.telephony.ims.feature.MmTelFeature#queryCapabilityStatus():
-    
-MissingNullability: android.telephony.ims.feature.MmTelFeature.MmTelCapabilities#MmTelCapabilities(android.telephony.ims.feature.ImsFeature.Capabilities) parameter #0:
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#accept(int, android.telephony.ims.ImsStreamMediaProfile) parameter #1:
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#deflect(String) parameter #0:
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#extendToConference(String[]) parameter #0:
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#getCallId():
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#getCallProfile():
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#getImsVideoCallProvider():
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#getLocalCallProfile():
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#getProperty(String):
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#getProperty(String) parameter #0:
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#getRemoteCallProfile():
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#hold(android.telephony.ims.ImsStreamMediaProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#inviteParticipants(String[]) parameter #0:
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#removeParticipants(String[]) parameter #0:
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#resume(android.telephony.ims.ImsStreamMediaProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#sendDtmf(char, android.os.Message) parameter #1:
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#sendRttMessage(String) parameter #0:
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#sendRttModifyRequest(android.telephony.ims.ImsCallProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#sendUssd(String) parameter #0:
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#setListener(android.telephony.ims.ImsCallSessionListener) parameter #0:
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#start(String, android.telephony.ims.ImsCallProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#start(String, android.telephony.ims.ImsCallProfile) parameter #1:
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#startConference(String[], android.telephony.ims.ImsCallProfile) parameter #0:
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#startConference(String[], android.telephony.ims.ImsCallProfile) parameter #1:
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#update(int, android.telephony.ims.ImsStreamMediaProfile) parameter #1:
-    
-MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase.State#toString(int):
-    
-MissingNullability: android.telephony.ims.stub.ImsConfigImplBase#getConfigString(int):
-    
-MissingNullability: android.telephony.ims.stub.ImsConfigImplBase#notifyProvisionedValueChanged(int, String) parameter #1:
-    
-MissingNullability: android.telephony.ims.stub.ImsConfigImplBase#setConfig(int, String) parameter #1:
-    
-MissingNullability: android.telephony.ims.stub.ImsFeatureConfiguration#getServiceFeatures():
-    
-MissingNullability: android.telephony.ims.stub.ImsFeatureConfiguration#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.telephony.ims.stub.ImsFeatureConfiguration.Builder#addFeature(int, int):
-    
-MissingNullability: android.telephony.ims.stub.ImsFeatureConfiguration.Builder#build():
-    
-MissingNullability: android.telephony.ims.stub.ImsMultiEndpointImplBase#onImsExternalCallStateUpdate(java.util.List<android.telephony.ims.ImsExternalCallState>) parameter #0:
-    
-MissingNullability: android.telephony.ims.stub.ImsRegistrationImplBase#onDeregistered(android.telephony.ims.ImsReasonInfo) parameter #0:
-    
-MissingNullability: android.telephony.ims.stub.ImsRegistrationImplBase#onSubscriberAssociatedUriChanged(android.net.Uri[]) parameter #0:
-    
-MissingNullability: android.telephony.ims.stub.ImsRegistrationImplBase#onTechnologyChangeFailed(int, android.telephony.ims.ImsReasonInfo) parameter #1:
-    
-MissingNullability: android.telephony.ims.stub.ImsSmsImplBase#getSmsFormat():
-    
-MissingNullability: android.telephony.ims.stub.ImsSmsImplBase#onSmsReceived(int, String, byte[]) parameter #1:
-    
-MissingNullability: android.telephony.ims.stub.ImsSmsImplBase#onSmsReceived(int, String, byte[]) parameter #2:
-    
-MissingNullability: android.telephony.ims.stub.ImsSmsImplBase#onSmsStatusReportReceived(int, String, byte[]) parameter #1:
-    
-MissingNullability: android.telephony.ims.stub.ImsSmsImplBase#onSmsStatusReportReceived(int, String, byte[]) parameter #2:
-    
-MissingNullability: android.telephony.ims.stub.ImsSmsImplBase#onSmsStatusReportReceived(int, int, String, byte[]) parameter #2:
-    
-MissingNullability: android.telephony.ims.stub.ImsSmsImplBase#onSmsStatusReportReceived(int, int, String, byte[]) parameter #3:
-    
-MissingNullability: android.telephony.ims.stub.ImsSmsImplBase#sendSms(int, int, String, String, boolean, byte[]) parameter #2:
-    
-MissingNullability: android.telephony.ims.stub.ImsSmsImplBase#sendSms(int, int, String, String, boolean, byte[]) parameter #3:
-    
-MissingNullability: android.telephony.ims.stub.ImsSmsImplBase#sendSms(int, int, String, String, boolean, byte[]) parameter #5:
-    
-MissingNullability: android.telephony.ims.stub.ImsUtImplBase#queryCallForward(int, String) parameter #1:
-    
-MissingNullability: android.telephony.ims.stub.ImsUtImplBase#setListener(android.telephony.ims.ImsUtListener) parameter #0:
-    
-MissingNullability: android.telephony.ims.stub.ImsUtImplBase#transact(android.os.Bundle) parameter #0:
-    
-MissingNullability: android.telephony.ims.stub.ImsUtImplBase#updateCallBarring(int, int, String[]) parameter #2:
-    
-MissingNullability: android.telephony.ims.stub.ImsUtImplBase#updateCallBarringForServiceClass(int, int, String[], int) parameter #2:
-    
-MissingNullability: android.telephony.ims.stub.ImsUtImplBase#updateCallForward(int, int, String, int, int) parameter #2:
-    
-MissingNullability: android.telephony.mbms.DownloadRequest.Builder#setServiceId(String):
-    
-MissingNullability: android.telephony.mbms.DownloadRequest.Builder#setServiceId(String) parameter #0:
-    
-MissingNullability: android.telephony.mbms.FileInfo#FileInfo(android.net.Uri, String) parameter #0:
-    
-MissingNullability: android.telephony.mbms.FileInfo#FileInfo(android.net.Uri, String) parameter #1:
-    
-MissingNullability: android.telephony.mbms.FileServiceInfo#FileServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date, java.util.List<android.telephony.mbms.FileInfo>) parameter #0:
-    
-MissingNullability: android.telephony.mbms.FileServiceInfo#FileServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date, java.util.List<android.telephony.mbms.FileInfo>) parameter #1:
-    
-MissingNullability: android.telephony.mbms.FileServiceInfo#FileServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date, java.util.List<android.telephony.mbms.FileInfo>) parameter #2:
-    
-MissingNullability: android.telephony.mbms.FileServiceInfo#FileServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date, java.util.List<android.telephony.mbms.FileInfo>) parameter #3:
-    
-MissingNullability: android.telephony.mbms.FileServiceInfo#FileServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date, java.util.List<android.telephony.mbms.FileInfo>) parameter #4:
-    
-MissingNullability: android.telephony.mbms.FileServiceInfo#FileServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date, java.util.List<android.telephony.mbms.FileInfo>) parameter #5:
-    
-MissingNullability: android.telephony.mbms.FileServiceInfo#FileServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date, java.util.List<android.telephony.mbms.FileInfo>) parameter #6:
-    
-MissingNullability: android.telephony.mbms.StreamingServiceInfo#StreamingServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date) parameter #0:
-    
-MissingNullability: android.telephony.mbms.StreamingServiceInfo#StreamingServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date) parameter #1:
-    
-MissingNullability: android.telephony.mbms.StreamingServiceInfo#StreamingServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date) parameter #2:
-    
-MissingNullability: android.telephony.mbms.StreamingServiceInfo#StreamingServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date) parameter #3:
-    
-MissingNullability: android.telephony.mbms.StreamingServiceInfo#StreamingServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date) parameter #4:
-    
-MissingNullability: android.telephony.mbms.StreamingServiceInfo#StreamingServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date) parameter #5:
-    
-MissingNullability: android.telephony.mbms.UriPathPair#getContentUri():
-    
-MissingNullability: android.telephony.mbms.UriPathPair#getFilePathUri():
-    
-MissingNullability: android.telephony.mbms.UriPathPair#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#addProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener) parameter #0:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#addProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener) parameter #1:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#addStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener) parameter #0:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#addStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener) parameter #1:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#asBinder():
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#cancelDownload(android.telephony.mbms.DownloadRequest) parameter #0:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#download(android.telephony.mbms.DownloadRequest) parameter #0:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#initialize(int, android.telephony.mbms.MbmsDownloadSessionCallback) parameter #1:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#onTransact(int, android.os.Parcel, android.os.Parcel, int) parameter #1:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#onTransact(int, android.os.Parcel, android.os.Parcel, int) parameter #2:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#removeProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener) parameter #0:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#removeProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener) parameter #1:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#removeStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener) parameter #0:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#removeStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener) parameter #1:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#requestDownloadState(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo) parameter #0:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#requestDownloadState(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo) parameter #1:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#requestUpdateFileServices(int, java.util.List<java.lang.String>) parameter #1:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#resetDownloadKnowledge(android.telephony.mbms.DownloadRequest) parameter #0:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#setTempFileRootDirectory(int, String) parameter #1:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsGroupCallServiceBase#onBind(android.content.Intent):
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsGroupCallServiceBase#onBind(android.content.Intent) parameter #0:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsStreamingServiceBase#asBinder():
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsStreamingServiceBase#getPlaybackUri(int, String) parameter #1:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsStreamingServiceBase#initialize(android.telephony.mbms.MbmsStreamingSessionCallback, int) parameter #0:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsStreamingServiceBase#onTransact(int, android.os.Parcel, android.os.Parcel, int) parameter #1:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsStreamingServiceBase#onTransact(int, android.os.Parcel, android.os.Parcel, int) parameter #2:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsStreamingServiceBase#requestUpdateStreamingServices(int, java.util.List<java.lang.String>) parameter #1:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsStreamingServiceBase#startStreaming(int, String, android.telephony.mbms.StreamingServiceCallback) parameter #1:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsStreamingServiceBase#startStreaming(int, String, android.telephony.mbms.StreamingServiceCallback) parameter #2:
-    
-MissingNullability: android.telephony.mbms.vendor.MbmsStreamingServiceBase#stopStreaming(int, String) parameter #1:
-    
-MissingNullability: android.telephony.mbms.vendor.VendorUtils#getAppReceiverFromPackageName(android.content.Context, String):
-    
-MissingNullability: android.telephony.mbms.vendor.VendorUtils#getAppReceiverFromPackageName(android.content.Context, String) parameter #0:
-    
-MissingNullability: android.telephony.mbms.vendor.VendorUtils#getAppReceiverFromPackageName(android.content.Context, String) parameter #1:
-    
-MissingNullability: android.text.Selection.MemoryTextWatcher#afterTextChanged(android.text.Editable) parameter #0:
-    
-MissingNullability: android.text.Selection.MemoryTextWatcher#beforeTextChanged(CharSequence, int, int, int) parameter #0:
-    
-MissingNullability: android.text.Selection.MemoryTextWatcher#onTextChanged(CharSequence, int, int, int) parameter #0:
-    
-MissingNullability: android.transition.TransitionManager#getTransition(android.transition.Scene):
-    
-MissingNullability: android.transition.TransitionManager#getTransition(android.transition.Scene) parameter #0:
-    
-MissingNullability: android.util.FeatureFlagUtils#getAllFeatureFlags():
-    
-MissingNullability: android.util.FeatureFlagUtils#isEnabled(android.content.Context, String) parameter #0:
-    
-MissingNullability: android.util.FeatureFlagUtils#isEnabled(android.content.Context, String) parameter #1:
-    
-MissingNullability: android.util.FeatureFlagUtils#setEnabled(android.content.Context, String, boolean) parameter #0:
-    
-MissingNullability: android.util.FeatureFlagUtils#setEnabled(android.content.Context, String, boolean) parameter #1:
-    
-MissingNullability: android.util.TimeUtils#formatDuration(long):
-    
-MissingNullability: android.util.proto.EncodedBuffer#dumpBuffers(String) parameter #0:
-    
-MissingNullability: android.util.proto.EncodedBuffer#dumpByteString(String, String, byte[]) parameter #0:
-    
-MissingNullability: android.util.proto.EncodedBuffer#dumpByteString(String, String, byte[]) parameter #1:
-    
-MissingNullability: android.util.proto.EncodedBuffer#dumpByteString(String, String, byte[]) parameter #2:
-    
-MissingNullability: android.util.proto.EncodedBuffer#getBytes(int):
-    
-MissingNullability: android.util.proto.EncodedBuffer#getDebugString():
-    
-MissingNullability: android.util.proto.EncodedBuffer#writeRawBuffer(byte[]) parameter #0:
-    
-MissingNullability: android.util.proto.EncodedBuffer#writeRawBuffer(byte[], int, int) parameter #0:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#ProtoOutputStream(java.io.FileDescriptor) parameter #0:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#ProtoOutputStream(java.io.OutputStream) parameter #0:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#dump(String) parameter #0:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#getBytes():
-    
-MissingNullability: android.util.proto.ProtoOutputStream#write(long, String) parameter #1:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#write(long, byte[]) parameter #1:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#writeBytes(long, byte[]) parameter #1:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#writeObject(long, byte[]) parameter #1:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#writePackedBool(long, boolean[]) parameter #1:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#writePackedDouble(long, double[]) parameter #1:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#writePackedEnum(long, int[]) parameter #1:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#writePackedFixed32(long, int[]) parameter #1:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#writePackedFixed64(long, long[]) parameter #1:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#writePackedFloat(long, float[]) parameter #1:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#writePackedInt32(long, int[]) parameter #1:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#writePackedInt64(long, long[]) parameter #1:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#writePackedSFixed32(long, int[]) parameter #1:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#writePackedSFixed64(long, long[]) parameter #1:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#writePackedSInt32(long, int[]) parameter #1:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#writePackedSInt64(long, long[]) parameter #1:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#writePackedUInt32(long, int[]) parameter #1:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#writePackedUInt64(long, long[]) parameter #1:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#writeRepeatedBytes(long, byte[]) parameter #1:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#writeRepeatedObject(long, byte[]) parameter #1:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#writeRepeatedString(long, String) parameter #1:
-    
-MissingNullability: android.util.proto.ProtoOutputStream#writeString(long, String) parameter #1:
-    
-MissingNullability: android.util.proto.ProtoParseException#ProtoParseException(String) parameter #0:
-    
-MissingNullability: android.util.proto.ProtoStream#FIELD_TYPE_NAMES:
-    
-MissingNullability: android.util.proto.ProtoStream#getFieldCountString(long):
-    
-MissingNullability: android.util.proto.ProtoStream#getFieldIdString(long):
-    
-MissingNullability: android.util.proto.ProtoStream#getFieldTypeString(long):
-    
-MissingNullability: android.util.proto.ProtoStream#getWireTypeString(int):
-    
-MissingNullability: android.util.proto.ProtoStream#token2String(long):
-    
-MissingNullability: android.util.proto.WireTypeMismatchException#WireTypeMismatchException(String) parameter #0:
-    
-MissingNullability: android.view.Choreographer#postCallback(int, Runnable, Object) parameter #1:
-    
-MissingNullability: android.view.Choreographer#postCallback(int, Runnable, Object) parameter #2:
-    
-MissingNullability: android.view.Choreographer#postCallbackDelayed(int, Runnable, Object, long) parameter #1:
-    
-MissingNullability: android.view.Choreographer#postCallbackDelayed(int, Runnable, Object, long) parameter #2:
-    
-MissingNullability: android.view.Choreographer#removeCallbacks(int, Runnable, Object) parameter #1:
-    
-MissingNullability: android.view.Choreographer#removeCallbacks(int, Runnable, Object) parameter #2:
-    
-MissingNullability: android.view.FocusFinder#sort(android.view.View[], int, int, android.view.ViewGroup, boolean) parameter #0:
-    
-MissingNullability: android.view.FocusFinder#sort(android.view.View[], int, int, android.view.ViewGroup, boolean) parameter #3:
-    
-MissingNullability: android.view.KeyEvent#actionToString(int):
-    
-MissingNullability: android.view.SurfaceControlViewHost#SurfaceControlViewHost(android.content.Context, android.view.Display, android.view.SurfaceControl) parameter #0:
-    
-MissingNullability: android.view.SurfaceControlViewHost#SurfaceControlViewHost(android.content.Context, android.view.Display, android.view.SurfaceControl) parameter #1:
-    
-MissingNullability: android.view.SurfaceControlViewHost#SurfaceControlViewHost(android.content.Context, android.view.Display, android.view.SurfaceControl) parameter #2:
-    
-MissingNullability: android.view.SurfaceControlViewHost#addView(android.view.View, android.view.WindowManager.LayoutParams) parameter #0:
-    
-MissingNullability: android.view.SurfaceControlViewHost#addView(android.view.View, android.view.WindowManager.LayoutParams) parameter #1:
-    
-MissingNullability: android.view.SurfaceControlViewHost#relayout(android.view.WindowManager.LayoutParams) parameter #0:
-    
-MissingNullability: android.view.View#getTooltipView():
-    
-MissingNullability: android.view.View#isDefaultFocusHighlightNeeded(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable) parameter #0:
-    
-MissingNullability: android.view.View#isDefaultFocusHighlightNeeded(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable) parameter #1:
-    
-MissingNullability: android.view.ViewDebug#startRenderingCommandsCapture(android.view.View, java.util.concurrent.Executor, java.util.concurrent.Callable<java.io.OutputStream>) parameter #0:
-    
-MissingNullability: android.view.ViewDebug#startRenderingCommandsCapture(android.view.View, java.util.concurrent.Executor, java.util.concurrent.Callable<java.io.OutputStream>) parameter #1:
-    
-MissingNullability: android.view.ViewDebug#startRenderingCommandsCapture(android.view.View, java.util.concurrent.Executor, java.util.concurrent.Callable<java.io.OutputStream>) parameter #2:
-    
-MissingNullability: android.view.ViewDebug#startRenderingCommandsCapture(android.view.View, java.util.concurrent.Executor, java.util.function.Function<android.graphics.Picture,java.lang.Boolean>) parameter #0:
-    
-MissingNullability: android.view.ViewDebug#startRenderingCommandsCapture(android.view.View, java.util.concurrent.Executor, java.util.function.Function<android.graphics.Picture,java.lang.Boolean>) parameter #1:
-    
-MissingNullability: android.view.ViewDebug#startRenderingCommandsCapture(android.view.View, java.util.concurrent.Executor, java.util.function.Function<android.graphics.Picture,java.lang.Boolean>) parameter #2:
-    
-MissingNullability: android.view.WindowManager.LayoutParams#accessibilityTitle:
-    
-MissingNullability: android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener#onAccessibilityServicesStateChanged(android.view.accessibility.AccessibilityManager) parameter #0:
-    
-MissingNullability: android.view.accessibility.AccessibilityNodeInfo#setNumInstancesInUseCounter(java.util.concurrent.atomic.AtomicInteger) parameter #0:
-    
-MissingNullability: android.view.accessibility.AccessibilityNodeInfo#writeToParcelNoRecycle(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.view.accessibility.AccessibilityWindowInfo#setNumInstancesInUseCounter(java.util.concurrent.atomic.AtomicInteger) parameter #0:
-    
-MissingNullability: android.view.contentcapture.ContentCaptureEvent#writeToParcel(android.os.Parcel, int) parameter #0:
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#asyncNewChild(int):
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#getAutofillId():
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#getExtras():
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#getHint():
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#getNode():
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#getTempRect():
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#getText():
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#newChild(int):
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#newHtmlInfoBuilder(String):
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#newHtmlInfoBuilder(String) parameter #0:
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setAutofillHints(String[]) parameter #0:
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setAutofillId(android.view.autofill.AutofillId) parameter #0:
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setAutofillId(android.view.autofill.AutofillId, int) parameter #0:
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setAutofillOptions(CharSequence[]) parameter #0:
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setAutofillValue(android.view.autofill.AutofillValue) parameter #0:
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setClassName(String) parameter #0:
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setContentDescription(CharSequence) parameter #0:
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setHint(CharSequence) parameter #0:
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setHintIdEntry(String) parameter #0:
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setHtmlInfo(android.view.ViewStructure.HtmlInfo) parameter #0:
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setId(int, String, String, String) parameter #1:
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setId(int, String, String, String) parameter #2:
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setId(int, String, String, String) parameter #3:
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setLocaleList(android.os.LocaleList) parameter #0:
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setText(CharSequence) parameter #0:
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setText(CharSequence, int, int) parameter #0:
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setTextLines(int[], int[]) parameter #0:
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setTextLines(int[], int[]) parameter #1:
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setTransformation(android.graphics.Matrix) parameter #0:
-    
-MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setWebDomain(String) parameter #0:
-    
-MissingNullability: android.widget.CalendarView#getBoundsForDate(long, android.graphics.Rect) parameter #1:
-    
-MissingNullability: android.widget.ImageView#isDefaultFocusHighlightNeeded(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable) parameter #0:
-    
-MissingNullability: android.widget.ImageView#isDefaultFocusHighlightNeeded(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable) parameter #1:
-    
-MissingNullability: android.widget.Magnifier#getMagnifierDefaultSize():
-    
-MissingNullability: android.widget.Magnifier#setOnOperationCompleteCallback(android.widget.Magnifier.Callback) parameter #0:
-    
-MissingNullability: android.widget.NumberPicker#getDisplayedValueForCurrentSelection():
-    
-MissingNullability: android.widget.PopupMenu#getMenuListView():
-    
-MissingNullability: android.widget.TimePicker#getAmView():
-    
-MissingNullability: android.widget.TimePicker#getHourView():
-    
-MissingNullability: android.widget.TimePicker#getMinuteView():
-    
-MissingNullability: android.widget.TimePicker#getPmView():
-    
-
-
-MutableBareField: android.content.AutofillOptions#appDisabledExpiration:
-    
-MutableBareField: android.content.AutofillOptions#augmentedAutofillEnabled:
-    
-MutableBareField: android.content.AutofillOptions#disabledActivities:
-    
-MutableBareField: android.content.AutofillOptions#whitelistedActivitiesForAugmentedAutofill:
-    
-MutableBareField: android.database.sqlite.SQLiteDebug.DbStats#cache:
-    
-MutableBareField: android.database.sqlite.SQLiteDebug.DbStats#dbName:
-    
-MutableBareField: android.database.sqlite.SQLiteDebug.DbStats#dbSize:
-    
-MutableBareField: android.database.sqlite.SQLiteDebug.DbStats#lookaside:
-    
-MutableBareField: android.database.sqlite.SQLiteDebug.DbStats#pageSize:
-    
-MutableBareField: android.database.sqlite.SQLiteDebug.PagerStats#dbStats:
-    
-MutableBareField: android.database.sqlite.SQLiteDebug.PagerStats#largestMemAlloc:
-    
-MutableBareField: android.database.sqlite.SQLiteDebug.PagerStats#memoryUsed:
-    
-MutableBareField: android.database.sqlite.SQLiteDebug.PagerStats#pageCacheOverflow:
-    
-MutableBareField: android.os.StrictMode.ViolationInfo#broadcastIntentAction:
-    
-MutableBareField: android.os.StrictMode.ViolationInfo#durationMillis:
-    
-MutableBareField: android.os.StrictMode.ViolationInfo#numAnimationsRunning:
-    
-MutableBareField: android.os.StrictMode.ViolationInfo#numInstances:
-    
-MutableBareField: android.os.StrictMode.ViolationInfo#tags:
-    
-MutableBareField: android.os.StrictMode.ViolationInfo#violationNumThisLoop:
-    
-MutableBareField: android.os.StrictMode.ViolationInfo#violationUptimeMillis:
-    
-
-
-NoByteOrShort: android.media.audiofx.AudioEffect#byteArrayToShort(byte[]):
-    
-NoByteOrShort: android.media.audiofx.AudioEffect#setParameter(int, short) parameter #1:
-    
-NoByteOrShort: android.media.audiofx.AudioEffect#shortToByteArray(short) parameter #0:
-    
-NoByteOrShort: android.os.HwBlob#getInt16(long):
-    
-NoByteOrShort: android.os.HwBlob#getInt8(long):
-    
-NoByteOrShort: android.os.HwBlob#putInt16(long, short) parameter #1:
-    
-NoByteOrShort: android.os.HwBlob#putInt8(long, byte) parameter #1:
-    
-NoByteOrShort: android.os.HwParcel#readInt16():
-    
-NoByteOrShort: android.os.HwParcel#readInt8():
-    
-NoByteOrShort: android.os.HwParcel#writeInt16(short) parameter #0:
-    
-NoByteOrShort: android.os.HwParcel#writeInt8(byte) parameter #0:
-    
-NoByteOrShort: android.util.proto.EncodedBuffer#readRawByte():
-    
-NoByteOrShort: android.util.proto.EncodedBuffer#writeRawByte(byte) parameter #0:
-    
-
-
-NoClone: android.net.util.SocketUtils#bindSocketToInterface(java.io.FileDescriptor, String) parameter #0:
-    
-NoClone: android.net.util.SocketUtils#closeSocket(java.io.FileDescriptor) parameter #0:
-    
-NoClone: android.os.NativeHandle#NativeHandle(java.io.FileDescriptor, boolean) parameter #0:
-    
-NoClone: android.os.NativeHandle#getFileDescriptor():
-    
-NoClone: android.os.ParcelFileDescriptor#getFile(java.io.FileDescriptor) parameter #0:
-    
-NoClone: android.service.autofill.augmented.AugmentedAutofillService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #0:
-    
-NoClone: android.service.contentcapture.ContentCaptureService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #0:
-    
-NoClone: android.util.proto.ProtoOutputStream#ProtoOutputStream(java.io.FileDescriptor) parameter #0:
-
-
-
-NoSettingsProvider: android.provider.Settings.Global#APP_OPS_CONSTANTS:
-    New setting keys are not allowed (Field: APP_OPS_CONSTANTS); use getters/setters in relevant manager class
-NoSettingsProvider: android.provider.Settings.Global#AUTOFILL_COMPAT_MODE_ALLOWED_PACKAGES:
-    
-NoSettingsProvider: android.provider.Settings.Global#AUTOMATIC_POWER_SAVE_MODE:
-    
-NoSettingsProvider: android.provider.Settings.Global#BATTERY_SAVER_CONSTANTS:
-    
-NoSettingsProvider: android.provider.Settings.Global#DYNAMIC_POWER_SAVINGS_DISABLE_THRESHOLD:
-    
-NoSettingsProvider: android.provider.Settings.Global#DYNAMIC_POWER_SAVINGS_ENABLED:
-    
-NoSettingsProvider: android.provider.Settings.Global#HIDDEN_API_BLACKLIST_EXEMPTIONS:
-    
-NoSettingsProvider: android.provider.Settings.Global#HIDE_ERROR_DIALOGS:
-    New setting keys are not allowed (Field: HIDE_ERROR_DIALOGS); use getters/setters in relevant manager class
-NoSettingsProvider: android.provider.Settings.Global#LOCATION_GLOBAL_KILL_SWITCH:
-    
-NoSettingsProvider: android.provider.Settings.Global#LOCATION_IGNORE_SETTINGS_PACKAGE_WHITELIST:
-    
-NoSettingsProvider: android.provider.Settings.Global#LOW_POWER_MODE:
-    
-NoSettingsProvider: android.provider.Settings.Global#LOW_POWER_MODE_STICKY:
-    
-NoSettingsProvider: android.provider.Settings.Global#NOTIFICATION_BUBBLES:
-    
-NoSettingsProvider: android.provider.Settings.Global#OVERLAY_DISPLAY_DEVICES:
-    
-NoSettingsProvider: android.provider.Settings.Global#TETHER_OFFLOAD_DISABLED:
-    
-NoSettingsProvider: android.provider.Settings.Global#USE_OPEN_WIFI_PACKAGE:
-    
-NoSettingsProvider: android.provider.Settings.Secure#ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED:
-    
-NoSettingsProvider: android.provider.Settings.Secure#ACCESSIBILITY_SHORTCUT_TARGET_SERVICE:
-    
-NoSettingsProvider: android.provider.Settings.Secure#AUTOFILL_FEATURE_FIELD_CLASSIFICATION:
-    
-NoSettingsProvider: android.provider.Settings.Secure#AUTOFILL_SERVICE:
-    
-NoSettingsProvider: android.provider.Settings.Secure#AUTOFILL_USER_DATA_MAX_CATEGORY_COUNT:
-    
-NoSettingsProvider: android.provider.Settings.Secure#AUTOFILL_USER_DATA_MAX_FIELD_CLASSIFICATION_IDS_SIZE:
-    
-NoSettingsProvider: android.provider.Settings.Secure#AUTOFILL_USER_DATA_MAX_USER_DATA_SIZE:
-    
-NoSettingsProvider: android.provider.Settings.Secure#AUTOFILL_USER_DATA_MAX_VALUE_LENGTH:
-    
-NoSettingsProvider: android.provider.Settings.Secure#AUTOFILL_USER_DATA_MIN_VALUE_LENGTH:
-    
-NoSettingsProvider: android.provider.Settings.Secure#CONTENT_CAPTURE_ENABLED:
-    
-NoSettingsProvider: android.provider.Settings.Secure#DISABLED_PRINT_SERVICES:
-    
-NoSettingsProvider: android.provider.Settings.Secure#DOZE_ALWAYS_ON:
-    
-NoSettingsProvider: android.provider.Settings.Secure#ENABLED_VR_LISTENERS:
-    
-NoSettingsProvider: android.provider.Settings.Secure#IMMERSIVE_MODE_CONFIRMATIONS:
-    New setting keys are not allowed (Field: IMMERSIVE_MODE_CONFIRMATIONS); use getters/setters in relevant manager class
-NoSettingsProvider: android.provider.Settings.Secure#LOCATION_ACCESS_CHECK_DELAY_MILLIS:
-    
-NoSettingsProvider: android.provider.Settings.Secure#LOCATION_ACCESS_CHECK_INTERVAL_MILLIS:
-    
-NoSettingsProvider: android.provider.Settings.Secure#LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS:
-    New setting keys are not allowed (Field: LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS); use getters/setters in relevant manager class
-NoSettingsProvider: android.provider.Settings.Secure#LOCK_SCREEN_SHOW_NOTIFICATIONS:
-    New setting keys are not allowed (Field: LOCK_SCREEN_SHOW_NOTIFICATIONS); use getters/setters in relevant manager class
-NoSettingsProvider: android.provider.Settings.Secure#NFC_PAYMENT_DEFAULT_COMPONENT:
-    New setting keys are not allowed (Field: NFC_PAYMENT_DEFAULT_COMPONENT); use getters/setters in relevant manager class
-NoSettingsProvider: android.provider.Settings.Secure#NOTIFICATION_BADGING:
-    
-NoSettingsProvider: android.provider.Settings.Secure#POWER_MENU_LOCKED_SHOW_CONTENT:
-    New setting keys are not allowed (Field: POWER_MENU_LOCKED_SHOW_CONTENT); use getters/setters in relevant manager class
-NoSettingsProvider: android.provider.Settings.Secure#SYNC_PARENT_SOUNDS:
-    
-NoSettingsProvider: android.provider.Settings.Secure#USER_SETUP_COMPLETE:
-    
-NoSettingsProvider: android.provider.Settings.Secure#VOICE_INTERACTION_SERVICE:
-    
-
-
-NotCloseable: android.app.ActivityView:
-    
-NotCloseable: android.app.prediction.AppPredictor:
-    
-NotCloseable: android.os.HwParcel:
-    
-NotCloseable: android.telephony.ims.stub.ImsUtImplBase:
-    
-
-
-OnNameExpected: android.service.autofill.augmented.AugmentedAutofillService#dump(java.io.PrintWriter, String[]):
-    
-OnNameExpected: android.service.contentcapture.ContentCaptureService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]):
-    
-OnNameExpected: android.service.notification.ConditionProviderService#isBound():
-    
-OnNameExpected: android.service.notification.NotificationAssistantService#attachBaseContext(android.content.Context):
-    
-OnNameExpected: android.service.quicksettings.TileService#isQuickSettingsSupported():
-    
-OnNameExpected: android.telephony.ims.ImsService#createMmTelFeature(int):
-    
-OnNameExpected: android.telephony.ims.ImsService#createRcsFeature(int):
-    
-OnNameExpected: android.telephony.ims.ImsService#disableIms(int):
-    
-OnNameExpected: android.telephony.ims.ImsService#enableIms(int):
-    
-OnNameExpected: android.telephony.ims.ImsService#getConfig(int):
-    
-OnNameExpected: android.telephony.ims.ImsService#getRegistration(int):
-    
-OnNameExpected: android.telephony.ims.ImsService#querySupportedImsFeatures():
-    
-OnNameExpected: android.telephony.ims.ImsService#readyForFeatureCreation():
-    
-OnNameExpected: android.telephony.mbms.vendor.MbmsGroupCallServiceBase#dispose(int):
-    
-OnNameExpected: android.telephony.mbms.vendor.MbmsGroupCallServiceBase#initialize(android.telephony.mbms.MbmsGroupCallSessionCallback, int):
-    
-OnNameExpected: android.telephony.mbms.vendor.MbmsGroupCallServiceBase#startGroupCall(int, long, java.util.List<java.lang.Integer>, java.util.List<java.lang.Integer>, android.telephony.mbms.GroupCallCallback):
-    
-OnNameExpected: android.telephony.mbms.vendor.MbmsGroupCallServiceBase#stopGroupCall(int, long):
-    
-OnNameExpected: android.telephony.mbms.vendor.MbmsGroupCallServiceBase#updateGroupCall(int, long, java.util.List<java.lang.Integer>, java.util.List<java.lang.Integer>):
-    
-
-
-PackageLayering: android.util.FeatureFlagUtils:
-    
-
-
-ParcelConstructor: android.os.IncidentManager.IncidentReport#IncidentReport(android.os.Parcel):
-    
-ParcelConstructor: android.os.IncidentReportArgs#IncidentReportArgs(android.os.Parcel):
-    
-ParcelConstructor: android.os.StrictMode.ViolationInfo#ViolationInfo(android.os.Parcel):
-    
-ParcelConstructor: android.os.VibrationEffect.OneShot#OneShot(android.os.Parcel):
-    
-ParcelConstructor: android.os.VibrationEffect.Prebaked#Prebaked(android.os.Parcel):
-    
-ParcelConstructor: android.os.VibrationEffect.Waveform#Waveform(android.os.Parcel):
-    
-ParcelConstructor: android.os.health.HealthStatsParceler#HealthStatsParceler(android.os.Parcel):
-    
-ParcelConstructor: android.service.notification.SnoozeCriterion#SnoozeCriterion(android.os.Parcel):
-    
-
-
-ParcelCreator: android.app.WindowConfiguration:
-    
-ParcelCreator: android.net.metrics.ApfProgramEvent:
-    
-ParcelCreator: android.net.metrics.ApfStats:
-    
-ParcelCreator: android.net.metrics.DhcpClientEvent:
-    
-ParcelCreator: android.net.metrics.DhcpErrorEvent:
-    
-ParcelCreator: android.net.metrics.IpConnectivityLog.Event:
-    
-ParcelCreator: android.net.metrics.IpManagerEvent:
-    
-ParcelCreator: android.net.metrics.IpReachabilityEvent:
-    
-ParcelCreator: android.net.metrics.NetworkEvent:
-    
-ParcelCreator: android.net.metrics.RaEvent:
-    
-ParcelCreator: android.net.metrics.ValidationProbeEvent:
-    
-ParcelCreator: android.os.VibrationEffect.OneShot:
-    
-ParcelCreator: android.os.VibrationEffect.Prebaked:
-    
-ParcelCreator: android.os.VibrationEffect.Waveform:
-    
-ParcelCreator: android.service.autofill.InternalOnClickAction:
-    
-ParcelCreator: android.service.autofill.InternalSanitizer:
-    
-ParcelCreator: android.service.autofill.InternalTransformation:
-    
-ParcelCreator: android.service.autofill.InternalValidator:
-    
-
-
-ParcelNotFinal: android.app.WindowConfiguration:
-    
-ParcelNotFinal: android.net.metrics.IpConnectivityLog.Event:
-    
-ParcelNotFinal: android.os.IncidentManager.IncidentReport:
-    
-ParcelNotFinal: android.os.VibrationEffect.OneShot:
-    
-ParcelNotFinal: android.os.VibrationEffect.Prebaked:
-    
-ParcelNotFinal: android.os.VibrationEffect.Waveform:
-    
-ParcelNotFinal: android.os.health.HealthStatsParceler:
-    
-ParcelNotFinal: android.service.autofill.InternalOnClickAction:
-    
-ParcelNotFinal: android.service.autofill.InternalSanitizer:
-    
-ParcelNotFinal: android.service.autofill.InternalTransformation:
-    
-ParcelNotFinal: android.service.autofill.InternalValidator:
-    
-
-
-ProtectedMember: android.app.ActivityView#onVisibilityChanged(android.view.View, int):
-    
-ProtectedMember: android.app.AppDetailsActivity#onCreate(android.os.Bundle):
-    
-ProtectedMember: android.os.VibrationEffect#scale(int, float, int):
-    
-ProtectedMember: android.service.autofill.augmented.AugmentedAutofillService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]):
-    
-ProtectedMember: android.service.autofill.augmented.AugmentedAutofillService#dump(java.io.PrintWriter, String[]):
-    
-ProtectedMember: android.service.contentcapture.ContentCaptureService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]):
-    
-ProtectedMember: android.service.notification.NotificationAssistantService#attachBaseContext(android.content.Context):
-    
-ProtectedMember: android.util.proto.ProtoStream#FIELD_TYPE_NAMES:
-    
-ProtectedMember: android.view.View#resetResolvedDrawables():
-    
-ProtectedMember: android.view.ViewGroup#resetResolvedDrawables():
-    
-
-
-RawAidl: android.telephony.mbms.vendor.MbmsDownloadServiceBase:
-    
-RawAidl: android.telephony.mbms.vendor.MbmsStreamingServiceBase:
-    
-
-
-RethrowRemoteException: android.app.ActivityManager#resumeAppSwitches():
-    
-RethrowRemoteException: android.os.HwBinder#getService(String, String):
-    
-RethrowRemoteException: android.os.HwBinder#getService(String, String, boolean):
-    
-RethrowRemoteException: android.os.HwBinder#onTransact(int, android.os.HwParcel, android.os.HwParcel, int):
-    
-RethrowRemoteException: android.os.HwBinder#registerService(String):
-    
-RethrowRemoteException: android.os.HwBinder#transact(int, android.os.HwParcel, android.os.HwParcel, int):
-    
-RethrowRemoteException: android.os.IHwBinder#transact(int, android.os.HwParcel, android.os.HwParcel, int):
-    
-RethrowRemoteException: android.telephony.ims.ImsService#onUpdateSupportedImsFeatures(android.telephony.ims.stub.ImsFeatureConfiguration):
-    
-RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#addProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener):
-    
-RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#addStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener):
-    
-RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#cancelDownload(android.telephony.mbms.DownloadRequest):
-    
-RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#dispose(int):
-    
-RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#download(android.telephony.mbms.DownloadRequest):
-    
-RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#initialize(int, android.telephony.mbms.MbmsDownloadSessionCallback):
-    
-RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#listPendingDownloads(int):
-    
-RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#onTransact(int, android.os.Parcel, android.os.Parcel, int):
-    
-RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#removeProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener):
-    
-RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#removeStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener):
-    
-RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#requestDownloadState(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo):
-    
-RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#requestUpdateFileServices(int, java.util.List<java.lang.String>):
-    
-RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#resetDownloadKnowledge(android.telephony.mbms.DownloadRequest):
-    
-RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#setTempFileRootDirectory(int, String):
-    
-RethrowRemoteException: android.telephony.mbms.vendor.MbmsGroupCallServiceBase#dispose(int):
-    
-RethrowRemoteException: android.telephony.mbms.vendor.MbmsGroupCallServiceBase#initialize(android.telephony.mbms.MbmsGroupCallSessionCallback, int):
-    
-RethrowRemoteException: android.telephony.mbms.vendor.MbmsStreamingServiceBase#dispose(int):
-    
-RethrowRemoteException: android.telephony.mbms.vendor.MbmsStreamingServiceBase#getPlaybackUri(int, String):
-    
-RethrowRemoteException: android.telephony.mbms.vendor.MbmsStreamingServiceBase#initialize(android.telephony.mbms.MbmsStreamingSessionCallback, int):
-    
-RethrowRemoteException: android.telephony.mbms.vendor.MbmsStreamingServiceBase#onTransact(int, android.os.Parcel, android.os.Parcel, int):
-    
-RethrowRemoteException: android.telephony.mbms.vendor.MbmsStreamingServiceBase#requestUpdateStreamingServices(int, java.util.List<java.lang.String>):
-    
-RethrowRemoteException: android.telephony.mbms.vendor.MbmsStreamingServiceBase#startStreaming(int, String, android.telephony.mbms.StreamingServiceCallback):
-    
-RethrowRemoteException: android.telephony.mbms.vendor.MbmsStreamingServiceBase#stopStreaming(int, String):
-    
-
-
-SamShouldBeLast: android.app.ActivityManager#addOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener, int):
-    
-SamShouldBeLast: android.app.role.RoleManager#addOnRoleHoldersChangedListenerAsUser(java.util.concurrent.Executor, android.app.role.OnRoleHoldersChangedListener, android.os.UserHandle):
-    
-SamShouldBeLast: android.app.role.RoleManager#removeOnRoleHoldersChangedListenerAsUser(android.app.role.OnRoleHoldersChangedListener, android.os.UserHandle):
-    
-SamShouldBeLast: android.database.sqlite.SQLiteDebug#dump(android.util.Printer, String[]):
-    
-SamShouldBeLast: android.database.sqlite.SQLiteDirectCursorDriver#query(android.database.sqlite.SQLiteDatabase.CursorFactory, String[]):
-    
-SamShouldBeLast: android.location.LocationManager#requestLocationUpdates(android.location.LocationRequest, android.location.LocationListener, android.os.Looper):
-    SAM-compatible parameters (such as parameter 2, "listener", in android.location.LocationManager.requestLocationUpdates) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions
-SamShouldBeLast: android.location.LocationManager#requestLocationUpdates(android.location.LocationRequest, java.util.concurrent.Executor, android.location.LocationListener):
-    
-SamShouldBeLast: android.os.BugreportManager#startBugreport(android.os.ParcelFileDescriptor, android.os.ParcelFileDescriptor, android.os.BugreportParams, java.util.concurrent.Executor, android.os.BugreportManager.BugreportCallback):
-    
-SamShouldBeLast: android.os.IHwBinder#linkToDeath(android.os.IHwBinder.DeathRecipient, long):
-    
-SamShouldBeLast: android.os.StrictMode.ViolationInfo#dump(android.util.Printer, String):
-    
-SamShouldBeLast: android.permission.PermissionControllerManager#getAppPermissions(String, android.permission.PermissionControllerManager.OnGetAppPermissionResultCallback, android.os.Handler):
-    
-SamShouldBeLast: android.permission.PermissionControllerManager#revokeRuntimePermissions(java.util.Map<java.lang.String,java.util.List<java.lang.String>>, boolean, int, java.util.concurrent.Executor, android.permission.PermissionControllerManager.OnRevokeRuntimePermissionsCallback):
-    
-SamShouldBeLast: android.service.autofill.CharSequenceTransformation#apply(android.service.autofill.ValueFinder, android.widget.RemoteViews, int):
-    
-SamShouldBeLast: android.service.autofill.DateTransformation#apply(android.service.autofill.ValueFinder, android.widget.RemoteViews, int):
-    
-SamShouldBeLast: android.service.autofill.ImageTransformation#apply(android.service.autofill.ValueFinder, android.widget.RemoteViews, int):
-    
-SamShouldBeLast: android.service.autofill.InternalTransformation#batchApply(android.service.autofill.ValueFinder, android.widget.RemoteViews, java.util.ArrayList<android.util.Pair<java.lang.Integer,android.service.autofill.InternalTransformation>>):
-    
-SamShouldBeLast: android.telephony.ims.ImsMmTelManager#getFeatureState(java.util.function.Consumer<java.lang.Integer>, java.util.concurrent.Executor):
-    
-SamShouldBeLast: android.view.Choreographer#postCallback(int, Runnable, Object):
-    
-SamShouldBeLast: android.view.Choreographer#postCallbackDelayed(int, Runnable, Object, long):
-    
-SamShouldBeLast: android.view.Choreographer#removeCallbacks(int, Runnable, Object):
-    
-SamShouldBeLast: android.view.ViewDebug#startRenderingCommandsCapture(android.view.View, java.util.concurrent.Executor, java.util.function.Function<android.graphics.Picture,java.lang.Boolean>):
-    
-SamShouldBeLast: android.view.accessibility.AccessibilityManager#addAccessibilityServicesStateChangeListener(android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener, android.os.Handler):
-    
-
-
-ServiceName: android.Manifest.permission#BIND_CELL_BROADCAST_SERVICE:
-    
-ServiceName: android.app.AppOpsManager#OPSTR_BIND_ACCESSIBILITY_SERVICE:
-    
-ServiceName: android.provider.Settings.Secure#ACCESSIBILITY_SHORTCUT_TARGET_SERVICE:
-    
-ServiceName: android.provider.Settings.Secure#AUTOFILL_SERVICE:
-    
-ServiceName: android.provider.Settings.Secure#VOICE_INTERACTION_SERVICE:
-    
-
-
-SetterReturnsThis: android.media.audiopolicy.AudioPolicy.Builder#setAudioPolicyFocusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyFocusListener):
-    
-SetterReturnsThis: android.media.audiopolicy.AudioPolicy.Builder#setAudioPolicyStatusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyStatusListener):
-    
-
-
-StaticUtils: android.os.health.HealthKeys:
-    
-StaticUtils: android.service.autofill.InternalTransformation:
-    
-StaticUtils: android.telephony.mbms.vendor.VendorUtils:
-    
-StaticUtils: android.util.FeatureFlagUtils:
-    
-StaticUtils: android.util.proto.ProtoStream:
-    
-
-
-StreamFiles: android.os.Environment#buildPath(java.io.File, java.lang.String...):
-    
-StreamFiles: android.os.FileUtils#contains(java.io.File, java.io.File):
-    
-StreamFiles: android.provider.MediaStore#scanFile(android.content.Context, java.io.File):
-    
-StreamFiles: android.provider.MediaStore#scanFileFromShell(android.content.Context, java.io.File):
-    
-StreamFiles: android.provider.MediaStore#scanVolume(android.content.Context, java.io.File):
-    
-
-
-UseParcelFileDescriptor: android.util.proto.ProtoOutputStream#ProtoOutputStream(java.io.FileDescriptor) parameter #0:
-    
-
-
-UserHandle: android.app.ActivityManager#switchUser(android.os.UserHandle):
-    When a method overload is needed to target a specific UserHandle, callers should be directed to use Context.createPackageContextAsUser() and re-obtain the relevant Manager, and no new API should be added
-UserHandle: android.app.admin.DevicePolicyManager#getOwnerInstalledCaCerts(android.os.UserHandle):
-    
-UserHandle: android.app.role.RoleManager#addOnRoleHoldersChangedListenerAsUser(java.util.concurrent.Executor, android.app.role.OnRoleHoldersChangedListener, android.os.UserHandle):
-    
-UserHandle: android.app.role.RoleManager#addRoleHolderAsUser(String, String, int, android.os.UserHandle, java.util.concurrent.Executor, java.util.function.Consumer<java.lang.Boolean>):
-    
-UserHandle: android.app.role.RoleManager#clearRoleHoldersAsUser(String, int, android.os.UserHandle, java.util.concurrent.Executor, java.util.function.Consumer<java.lang.Boolean>):
-    
-UserHandle: android.app.role.RoleManager#getRoleHoldersAsUser(String, android.os.UserHandle):
-    
-UserHandle: android.app.role.RoleManager#removeOnRoleHoldersChangedListenerAsUser(android.app.role.OnRoleHoldersChangedListener, android.os.UserHandle):
-    
-UserHandle: android.app.role.RoleManager#removeRoleHolderAsUser(String, String, int, android.os.UserHandle, java.util.concurrent.Executor, java.util.function.Consumer<java.lang.Boolean>):
-    
-UserHandle: android.app.usage.StorageStatsManager#queryCratesForPackage(java.util.UUID, String, android.os.UserHandle):
-    When a method overload is needed to target a specific UserHandle, callers should be directed to use Context.createPackageContextAsUser() and re-obtain the relevant Manager, and no new API should be added
-UserHandle: android.app.usage.StorageStatsManager#queryCratesForUser(java.util.UUID, android.os.UserHandle):
-    When a method overload is needed to target a specific UserHandle, callers should be directed to use Context.createPackageContextAsUser() and re-obtain the relevant Manager, and no new API should be added
-UserHandle: android.companion.CompanionDeviceManager#isDeviceAssociated(String, android.net.MacAddress, android.os.UserHandle):
-    
-UserHandle: android.content.pm.PackageManager#getInstallReason(String, android.os.UserHandle):
-    
-UserHandle: android.content.pm.PackageManager#getPermissionFlags(String, String, android.os.UserHandle):
-    
-UserHandle: android.content.pm.PackageManager#grantRuntimePermission(String, String, android.os.UserHandle):
-    
-UserHandle: android.content.pm.PackageManager#revokeRuntimePermission(String, String, android.os.UserHandle):
-    
-UserHandle: android.content.pm.PackageManager#updatePermissionFlags(String, String, int, int, android.os.UserHandle):
-    
-UserHandle: android.location.LocationManager#setLocationEnabledForUser(boolean, android.os.UserHandle):
-    
-UserHandle: android.permission.PermissionControllerManager#applyStagedRuntimePermissionBackup(String, android.os.UserHandle, java.util.concurrent.Executor, java.util.function.Consumer<java.lang.Boolean>):
-    
-UserHandle: android.permission.PermissionControllerManager#getRuntimePermissionBackup(android.os.UserHandle, java.util.concurrent.Executor, java.util.function.Consumer<byte[]>):
-    
-UserHandle: android.permission.PermissionControllerManager#stageAndApplyRuntimePermissionsBackup(byte[], android.os.UserHandle):
-    
-
-
-UserHandleName: android.app.ActivityView#startActivity(android.content.Intent, android.os.UserHandle):
-    
-UserHandleName: android.content.AutofillOptions:
-    
-UserHandleName: android.content.ContentCaptureOptions:
-    
-UserHandleName: android.os.IncidentReportArgs:
-    
-UserHandleName: android.provider.MediaStore#deleteContributedMedia(android.content.Context, String, android.os.UserHandle):
-    
-UserHandleName: android.provider.MediaStore#getContributedMediaSize(android.content.Context, String, android.os.UserHandle):
-    
-
-
-VisiblySynchronized: PsiClassObjectAccessExpression:
-    
-VisiblySynchronized: PsiThisExpression:
-    
-VisiblySynchronized: android.app.ActivityManager#addOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener, int):
-    
-VisiblySynchronized: android.app.ActivityManager#removeOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener):
-    
-VisiblySynchronized: android.content.ContentProviderClient#setDetectNotResponding(long):
-    
-VisiblySynchronized: android.content.res.AssetManager#getApkPaths():
-    
-VisiblySynchronized: android.content.res.AssetManager#getLastResourceResolution():
-    
-VisiblySynchronized: android.content.res.AssetManager#getOverlayablesToString(String):
-    
-VisiblySynchronized: android.content.res.AssetManager#setResourceResolutionLoggingEnabled(boolean):
-    
-VisiblySynchronized: android.os.MessageQueue#removeSyncBarrier(int):
-    
diff --git a/api/test-removed.txt b/api/test-removed.txt
deleted file mode 100644
index e47f6ed..0000000
--- a/api/test-removed.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// Signature format: 2.0
-package android.app.prediction {
-
-  public static final class AppTarget.Builder {
-    method @Deprecated @NonNull public android.app.prediction.AppTarget.Builder setTarget(@NonNull String, @NonNull android.os.UserHandle);
-    method @Deprecated @NonNull public android.app.prediction.AppTarget.Builder setTarget(@NonNull android.content.pm.ShortcutInfo);
-  }
-
-}
-
diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp
index bb2de17..2c7ee21 100644
--- a/cmds/bootanimation/BootAnimation.cpp
+++ b/cmds/bootanimation/BootAnimation.cpp
@@ -459,6 +459,8 @@
     mFlingerSurface = s;
     mTargetInset = -1;
 
+    projectSceneToWindow();
+
     // Register a display event receiver
     mDisplayEventReceiver = std::make_unique<DisplayEventReceiver>();
     status_t status = mDisplayEventReceiver->initCheck();
@@ -470,6 +472,16 @@
     return NO_ERROR;
 }
 
+void BootAnimation::projectSceneToWindow() {
+    glViewport(0, 0, mWidth, mHeight);
+    glScissor(0, 0, mWidth, mHeight);
+    glMatrixMode(GL_PROJECTION);
+    glLoadIdentity();
+    glOrthof(0, static_cast<float>(mWidth), 0, static_cast<float>(mHeight), -1, 1);
+    glMatrixMode(GL_MODELVIEW);
+    glLoadIdentity();
+}
+
 void BootAnimation::resizeSurface(int newWidth, int newHeight) {
     // We assume this function is called on the animation thread.
     if (newWidth == mWidth && newHeight == mHeight) {
@@ -494,8 +506,8 @@
         SLOGE("Can't make the new surface current. Error %d", eglGetError());
         return;
     }
-    glViewport(0, 0, mWidth, mHeight);
-    glScissor(0, 0, mWidth, mHeight);
+
+    projectSceneToWindow();
 
     mSurface = surface;
 }
@@ -570,6 +582,7 @@
         result = movie();
     }
 
+    mCallbacks->shutdown();
     eglMakeCurrent(mDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
     eglDestroyContext(mDisplay, mContext);
     eglDestroySurface(mDisplay, mSurface);
@@ -656,7 +669,6 @@
     int exitnow = atoi(value);
     if (exitnow) {
         requestExit();
-        mCallbacks->shutdown();
     }
 }
 
@@ -776,6 +788,37 @@
     return status;
 }
 
+void BootAnimation::fadeFrame(const int frameLeft, const int frameBottom, const int frameWidth,
+                              const int frameHeight, const Animation::Part& part,
+                              const int fadedFramesCount) {
+    glEnable(GL_BLEND);
+    glEnableClientState(GL_VERTEX_ARRAY);
+    glDisable(GL_TEXTURE_2D);
+    // avoid creating a hole due to mixing result alpha with GL_REPLACE texture
+    glBlendFuncSeparateOES(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ZERO, GL_ONE);
+
+    const float alpha = static_cast<float>(fadedFramesCount) / part.framesToFadeCount;
+    glColor4f(part.backgroundColor[0], part.backgroundColor[1], part.backgroundColor[2], alpha);
+
+    const float frameStartX = static_cast<float>(frameLeft);
+    const float frameStartY = static_cast<float>(frameBottom);
+    const float frameEndX = frameStartX + frameWidth;
+    const float frameEndY = frameStartY + frameHeight;
+    const GLfloat frameRect[] = {
+        frameStartX, frameStartY,
+        frameEndX,   frameStartY,
+        frameEndX,   frameEndY,
+        frameStartX, frameEndY
+    };
+    glVertexPointer(2, GL_FLOAT, 0, frameRect);
+    glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
+
+    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+    glEnable(GL_TEXTURE_2D);
+    glDisableClientState(GL_VERTEX_ARRAY);
+    glDisable(GL_BLEND);
+}
+
 void BootAnimation::drawText(const char* str, const Font& font, bool bold, int* x, int* y) {
     glEnable(GL_BLEND);  // Allow us to draw on top of the animation
     glBindTexture(GL_TEXTURE_2D, font.texture.name);
@@ -867,23 +910,34 @@
         int height = 0;
         int count = 0;
         int pause = 0;
+        int framesToFadeCount = 0;
         char path[ANIM_ENTRY_NAME_MAX];
         char color[7] = "000000"; // default to black if unspecified
         char clockPos1[TEXT_POS_LEN_MAX + 1] = "";
         char clockPos2[TEXT_POS_LEN_MAX + 1] = "";
-
         char pathType;
+
+        int nextReadPos;
+
         if (sscanf(l, "%d %d %d", &width, &height, &fps) == 3) {
             // SLOGD("> w=%d, h=%d, fps=%d", width, height, fps);
             animation.width = width;
             animation.height = height;
             animation.fps = fps;
-        } else if (sscanf(l, " %c %d %d %" STRTO(ANIM_PATH_MAX) "s #%6s %16s %16s",
-                          &pathType, &count, &pause, path, color, clockPos1, clockPos2) >= 4) {
-            //SLOGD("> type=%c, count=%d, pause=%d, path=%s, color=%s, clockPos1=%s, clockPos2=%s",
-            //    pathType, count, pause, path, color, clockPos1, clockPos2);
+        } else if (sscanf(l, "%c %d %d %" STRTO(ANIM_PATH_MAX) "s%n",
+                          &pathType, &count, &pause, path, &nextReadPos) >= 4) {
+            if (pathType == 'f') {
+                sscanf(l + nextReadPos, " %d #%6s %16s %16s", &framesToFadeCount, color, clockPos1,
+                       clockPos2);
+            } else {
+                sscanf(l + nextReadPos, " #%6s %16s %16s", color, clockPos1, clockPos2);
+            }
+            // SLOGD("> type=%c, count=%d, pause=%d, path=%s, framesToFadeCount=%d, color=%s, "
+            //       "clockPos1=%s, clockPos2=%s",
+            //       pathType, count, pause, path, framesToFadeCount, color, clockPos1, clockPos2);
             Animation::Part part;
             part.playUntilComplete = pathType == 'c';
+            part.framesToFadeCount = framesToFadeCount;
             part.count = count;
             part.pause = pause;
             part.path = path;
@@ -902,6 +956,7 @@
             // SLOGD("> SYSTEM");
             Animation::Part part;
             part.playUntilComplete = false;
+            part.framesToFadeCount = 0;
             part.count = 1;
             part.pause = 0;
             part.audioData = nullptr;
@@ -1098,12 +1153,19 @@
     return false;
 }
 
+bool BootAnimation::shouldStopPlayingPart(const Animation::Part& part, const int fadedFramesCount) {
+    // stop playing only if it is time to exit and it's a partial part which has been faded out
+    return exitPending() && !part.playUntilComplete && fadedFramesCount >= part.framesToFadeCount;
+}
+
 bool BootAnimation::playAnimation(const Animation& animation) {
     const size_t pcount = animation.parts.size();
     nsecs_t frameDuration = s2ns(1) / animation.fps;
 
     SLOGD("%sAnimationShownTiming start time: %" PRId64 "ms", mShuttingDown ? "Shutdown" : "Boot",
             elapsedRealtime());
+
+    int fadedFramesCount = 0;
     for (size_t i=0 ; i<pcount ; i++) {
         const Animation::Part& part(animation.parts[i]);
         const size_t fcount = part.frames.size();
@@ -1117,10 +1179,9 @@
             continue; //to next part
         }
 
-        for (int r=0 ; !part.count || r<part.count ; r++) {
-            // Exit any non playuntil complete parts immediately
-            if(exitPending() && !part.playUntilComplete)
-                break;
+        // process the part not only while the count allows but also if already fading
+        for (int r=0 ; !part.count || r<part.count || fadedFramesCount > 0 ; r++) {
+            if (shouldStopPlayingPart(part, fadedFramesCount)) break;
 
             mCallbacks->playPart(i, part, r);
 
@@ -1130,7 +1191,9 @@
                     part.backgroundColor[2],
                     1.0f);
 
-            for (size_t j=0 ; j<fcount && (!exitPending() || part.playUntilComplete) ; j++) {
+            for (size_t j=0 ; j<fcount ; j++) {
+                if (shouldStopPlayingPart(part, fadedFramesCount)) break;
+
                 processDisplayEvents();
 
                 const int animationX = (mWidth - animation.width) / 2;
@@ -1169,11 +1232,22 @@
                 }
                 // specify the y center as ceiling((mHeight - frame.trimHeight) / 2)
                 // which is equivalent to mHeight - (yc + frame.trimHeight)
-                glDrawTexiOES(xc, mHeight - (yc + frame.trimHeight),
-                              0, frame.trimWidth, frame.trimHeight);
+                const int frameDrawY = mHeight - (yc + frame.trimHeight);
+                glDrawTexiOES(xc, frameDrawY, 0, frame.trimWidth, frame.trimHeight);
+
+                // if the part hasn't been stopped yet then continue fading if necessary
+                if (exitPending() && part.hasFadingPhase()) {
+                    fadeFrame(xc, frameDrawY, frame.trimWidth, frame.trimHeight, part,
+                              ++fadedFramesCount);
+                    if (fadedFramesCount >= part.framesToFadeCount) {
+                        fadedFramesCount = MAX_FADED_FRAMES_COUNT; // no more fading
+                    }
+                }
+
                 if (mClockEnabled && mTimeIsAccurate && validClock(part)) {
                     drawClock(animation.clockFont, part.clockPosX, part.clockPosY);
                 }
+
                 handleViewport(frameDuration);
 
                 eglSwapBuffers(mDisplay, mSurface);
@@ -1198,11 +1272,11 @@
 
             usleep(part.pause * ns2us(frameDuration));
 
-            // For infinite parts, we've now played them at least once, so perhaps exit
-            if(exitPending() && !part.count && mCurrentInset >= mTargetInset)
-                break;
+            if (exitPending() && !part.count && mCurrentInset >= mTargetInset &&
+                !part.hasFadingPhase()) {
+                break; // exit the infinite non-fading part when it has been played at least once
+            }
         }
-
     }
 
     // Free textures created for looping parts now that the animation is done.
diff --git a/cmds/bootanimation/BootAnimation.h b/cmds/bootanimation/BootAnimation.h
index 6ba7fd4..aee3853 100644
--- a/cmds/bootanimation/BootAnimation.h
+++ b/cmds/bootanimation/BootAnimation.h
@@ -19,6 +19,7 @@
 
 #include <vector>
 #include <queue>
+#include <climits>
 
 #include <stdint.h>
 #include <sys/types.h>
@@ -45,6 +46,8 @@
 class BootAnimation : public Thread, public IBinder::DeathRecipient
 {
 public:
+    static constexpr int MAX_FADED_FRAMES_COUNT = std::numeric_limits<int>::max();
+
     struct Texture {
         GLint   w;
         GLint   h;
@@ -84,10 +87,15 @@
             String8 trimData;
             SortedVector<Frame> frames;
             bool playUntilComplete;
+            int framesToFadeCount;
             float backgroundColor[3];
             uint8_t* audioData;
             int audioLength;
             Animation* animation;
+
+            bool hasFadingPhase() const {
+                return !playUntilComplete && framesToFadeCount > 0;
+            }
         };
         int fps;
         int width;
@@ -160,6 +168,8 @@
     bool movie();
     void drawText(const char* str, const Font& font, bool bold, int* x, int* y);
     void drawClock(const Font& font, const int xPos, const int yPos);
+    void fadeFrame(int frameLeft, int frameBottom, int frameWidth, int frameHeight,
+                   const Animation::Part& part, int fadedFramesCount);
     bool validClock(const Animation::Part& part);
     Animation* loadAnimation(const String8&);
     bool playAnimation(const Animation&);
@@ -172,7 +182,9 @@
     EGLConfig getEglConfig(const EGLDisplay&);
     ui::Size limitSurfaceSize(int width, int height) const;
     void resizeSurface(int newWidth, int newHeight);
+    void projectSceneToWindow();
 
+    bool shouldStopPlayingPart(const Animation::Part& part, int fadedFramesCount);
     void checkExit();
 
     void handleViewport(nsecs_t timestep);
diff --git a/cmds/bootanimation/FORMAT.md b/cmds/bootanimation/FORMAT.md
index 5946515..f9b83c9 100644
--- a/cmds/bootanimation/FORMAT.md
+++ b/cmds/bootanimation/FORMAT.md
@@ -30,14 +30,20 @@
 
 It is followed by a number of rows of the form:
 
-    TYPE COUNT PAUSE PATH [#RGBHEX [CLOCK1 [CLOCK2]]]
+    TYPE COUNT PAUSE PATH [FADE [#RGBHEX [CLOCK1 [CLOCK2]]]]
 
   * **TYPE:** a single char indicating what type of animation segment this is:
       + `p` -- this part will play unless interrupted by the end of the boot
       + `c` -- this part will play to completion, no matter what
+      + `f` -- same as `p` but in addition the specified number of frames is being faded out while
+        continue playing. Only the first interrupted `f` part is faded out, other subsequent `f`
+        parts are skipped
   * **COUNT:** how many times to play the animation, or 0 to loop forever until boot is complete
   * **PAUSE:** number of FRAMES to delay after this part ends
   * **PATH:** directory in which to find the frames for this part (e.g. `part0`)
+  * **FADE:** _(ONLY FOR `f` TYPE)_ number of frames to fade out when interrupted where `0` means
+              _immediately_ which makes `f ... 0` behave like `p` and doesn't count it as a fading
+              part
   * **RGBHEX:** _(OPTIONAL)_ a background color, specified as `#RRGGBB`
   * **CLOCK1, CLOCK2:** _(OPTIONAL)_ the coordinates at which to draw the current time (for watches):
       + If only `CLOCK1` is provided it is the y-coordinate of the clock and the x-coordinate
diff --git a/cmds/idmap2/idmap2d/Idmap2Service.h b/cmds/idmap2/idmap2d/Idmap2Service.h
index abee999..0127e87 100644
--- a/cmds/idmap2/idmap2d/Idmap2Service.h
+++ b/cmds/idmap2/idmap2d/Idmap2Service.h
@@ -20,6 +20,8 @@
 #include <android-base/unique_fd.h>
 #include <binder/BinderService.h>
 
+#include <string>
+
 #include "android/os/BnIdmap2.h"
 
 namespace android::os {
diff --git a/cmds/idmap2/idmap2d/aidl/android/os/OverlayablePolicy.aidl b/cmds/idmap2/idmap2d/aidl/android/os/OverlayablePolicy.aidl
index 02b27a8..403d8c5 100644
--- a/cmds/idmap2/idmap2d/aidl/android/os/OverlayablePolicy.aidl
+++ b/cmds/idmap2/idmap2d/aidl/android/os/OverlayablePolicy.aidl
@@ -29,4 +29,5 @@
   const int ODM_PARTITION = 0x00000020;
   const int OEM_PARTITION = 0x00000040;
   const int ACTOR_SIGNATURE = 0x00000080;
+  const int CONFIG_SIGNATURE = 0x0000100;
 }
diff --git a/cmds/idmap2/include/idmap2/BinaryStreamVisitor.h b/cmds/idmap2/include/idmap2/BinaryStreamVisitor.h
index ff45b14..bf31cbf 100644
--- a/cmds/idmap2/include/idmap2/BinaryStreamVisitor.h
+++ b/cmds/idmap2/include/idmap2/BinaryStreamVisitor.h
@@ -36,12 +36,11 @@
   void visit(const IdmapData::Header& header) override;
 
  private:
-  void Write(const void* value, size_t length);
   void Write8(uint8_t value);
   void Write16(uint16_t value);
   void Write32(uint32_t value);
   void WriteString256(const StringPiece& value);
-  void WriteString(const std::string& value);
+  void WriteString(const StringPiece& value);
   std::ostream& stream_;
 };
 
diff --git a/cmds/idmap2/include/idmap2/Idmap.h b/cmds/idmap2/include/idmap2/Idmap.h
index 0f05592..a35fad9 100644
--- a/cmds/idmap2/include/idmap2/Idmap.h
+++ b/cmds/idmap2/include/idmap2/Idmap.h
@@ -17,48 +17,45 @@
 /*
  * # idmap file format (current version)
  *
- * idmap             := header data*
- * header            := magic version target_crc overlay_crc target_path overlay_path debug_info
- * data              := data_header data_block*
- * data_header       := target_package_id types_count
- * data_block        := target_type overlay_type entry_count entry_offset entry*
- * overlay_path      := string256
- * target_path       := string256
- * debug_info        := string
- * string            := <uint32_t> <uint8_t>+ '\0'+
- * entry             := <uint32_t>
- * entry_count       := <uint16_t>
- * entry_offset      := <uint16_t>
- * magic             := <uint32_t>
- * overlay_crc       := <uint32_t>
- * overlay_type      := <uint16_t>
- * string256         := <uint8_t>[256]
- * target_crc        := <uint32_t>
- * target_package_id := <uint16_t>
- * target_type       := <uint16_t>
- * types_count       := <uint16_t>
- * version           := <uint32_t>
+ * idmap                      := header data*
+ * header                     := magic version target_crc overlay_crc fulfilled_policies
+ *                               enforce_overlayable target_path overlay_path debug_info
+ * data                       := data_header target_entry* target_inline_entry* overlay_entry*
+ *                               string_pool
+ * data_header                := target_package_id overlay_package_id padding(2) target_entry_count
+ *                               target_inline_entry_count overlay_entry_count string_pool_index
+ * target_entry               := target_id overlay_id
+ * target_inline_entry        := target_id Res_value::size padding(1) Res_value::type
+ *                               Res_value::value
+ * overlay_entry              := overlay_id target_id
  *
- *
- * # idmap file format changelog
- * ## v1
- * - Identical to idmap v1.
- *
- * ## v2
- * - Entries are no longer separated by type into type specific data blocks.
- * - Added overlay-indexed target resource id lookup capabilities.
- * - Target and overlay entries are stored as a sparse array in the data block. The target entries
- *   array maps from target resource id to overlay data type and value and the array is sorted by
- *   target resource id. The overlay entries array maps from overlay resource id to target resource
- *   id and the array is sorted by overlay resource id. It is important for both arrays to be sorted
- *   to allow for O(log(number_of_overlaid_resources)) performance when looking up resource
- *   mappings at runtime.
- * - Idmap can now encode a type and value to override a resource without needing a table entry.
- * - A string pool block is included to retrieve the value of strings that do not have a resource
- *   table entry.
- *
- * ## v3
- * - Add 'debug' block to IdmapHeader.
+ * debug_info                 := string
+ * enforce_overlayable        := <uint32_t>
+ * fulfilled_policies         := <uint32_t>
+ * magic                      := <uint32_t>
+ * overlay_crc                := <uint32_t>
+ * overlay_entry_count        := <uint32_t>
+ * overlay_id                 := <uint32_t>
+ * overlay_package_id         := <uint8_t>
+ * overlay_path               := string256
+ * padding(n)                 := <uint8_t>[n]
+ * Res_value::size            := <uint16_t>
+ * Res_value::type            := <uint8_t>
+ * Res_value::value           := <uint32_t>
+ * string                     := <uint32_t> <uint8_t>+ padding(n)
+ * string256                  := <uint8_t>[256]
+ * string_pool                := string
+ * string_pool_index          := <uint32_t>
+ * string_pool_length         := <uint32_t>
+ * target_crc                 := <uint32_t>
+ * target_entry_count         := <uint32_t>
+ * target_inline_entry_count  := <uint32_t>
+ * target_id                  := <uint32_t>
+ * target_package_id          := <uint8_t>
+ * target_path                := string256
+ * value_type                 := <uint8_t>
+ * value_data                 := <uint32_t>
+ * version                    := <uint32_t>
  */
 
 #ifndef IDMAP2_INCLUDE_IDMAP2_IDMAP_H_
@@ -183,6 +180,10 @@
       return target_entry_count;
     }
 
+    inline uint32_t GetTargetInlineEntryCount() const {
+      return target_entry_inline_count;
+    }
+
     inline uint32_t GetOverlayEntryCount() const {
       return overlay_entry_count;
     }
@@ -191,19 +192,15 @@
       return string_pool_index_offset;
     }
 
-    inline uint32_t GetStringPoolLength() const {
-      return string_pool_len;
-    }
-
     void accept(Visitor* v) const;
 
    private:
     PackageId target_package_id_;
     PackageId overlay_package_id_;
     uint32_t target_entry_count;
+    uint32_t target_entry_inline_count;
     uint32_t overlay_entry_count;
     uint32_t string_pool_index_offset;
-    uint32_t string_pool_len;
     Header() = default;
 
     friend Idmap;
@@ -213,8 +210,12 @@
 
   struct TargetEntry {
     ResourceId target_id;
-    TargetValue::DataType data_type;
-    TargetValue::DataValue data_value;
+    ResourceId overlay_id;
+  };
+
+  struct TargetInlineEntry {
+    ResourceId target_id;
+    TargetValue value;
   };
 
   struct OverlayEntry {
@@ -227,20 +228,24 @@
   static Result<std::unique_ptr<const IdmapData>> FromResourceMapping(
       const ResourceMapping& resource_mapping);
 
-  inline const std::unique_ptr<const Header>& GetHeader() const {
+  const std::unique_ptr<const Header>& GetHeader() const {
     return header_;
   }
 
-  inline const std::vector<TargetEntry>& GetTargetEntries() const {
+  const std::vector<TargetEntry>& GetTargetEntries() const {
     return target_entries_;
   }
 
-  inline const std::vector<OverlayEntry>& GetOverlayEntries() const {
+  const std::vector<TargetInlineEntry>& GetTargetInlineEntries() const {
+    return target_inline_entries_;
+  }
+
+  const std::vector<OverlayEntry>& GetOverlayEntries() const {
     return overlay_entries_;
   }
 
-  inline const void* GetStringPoolData() const {
-    return string_pool_.get();
+  const std::string& GetStringPoolData() const {
+    return string_pool_data_;
   }
 
   void accept(Visitor* v) const;
@@ -251,8 +256,9 @@
 
   std::unique_ptr<const Header> header_;
   std::vector<TargetEntry> target_entries_;
+  std::vector<TargetInlineEntry> target_inline_entries_;
   std::vector<OverlayEntry> overlay_entries_;
-  std::unique_ptr<uint8_t[]> string_pool_;
+  std::string string_pool_data_;
 
   friend Idmap;
   DISALLOW_COPY_AND_ASSIGN(IdmapData);
@@ -304,6 +310,10 @@
   virtual void visit(const IdmapData::Header& header) = 0;
 };
 
+inline size_t CalculatePadding(size_t data_length) {
+  return (4 - (data_length % 4)) % 4;
+}
+
 }  // namespace android::idmap2
 
 #endif  // IDMAP2_INCLUDE_IDMAP2_IDMAP_H_
diff --git a/cmds/idmap2/include/idmap2/PrettyPrintVisitor.h b/cmds/idmap2/include/idmap2/PrettyPrintVisitor.h
index 5dcf217..2b4c761 100644
--- a/cmds/idmap2/include/idmap2/PrettyPrintVisitor.h
+++ b/cmds/idmap2/include/idmap2/PrettyPrintVisitor.h
@@ -41,8 +41,9 @@
 
  private:
   std::ostream& stream_;
-  std::unique_ptr<const ApkAssets> target_apk_;
   AssetManager2 target_am_;
+  AssetManager2 overlay_am_;
+  std::vector<std::unique_ptr<const ApkAssets>> apk_assets_;
 };
 
 }  // namespace idmap2
diff --git a/cmds/idmap2/include/idmap2/RawPrintVisitor.h b/cmds/idmap2/include/idmap2/RawPrintVisitor.h
index 92c1864..58edc99 100644
--- a/cmds/idmap2/include/idmap2/RawPrintVisitor.h
+++ b/cmds/idmap2/include/idmap2/RawPrintVisitor.h
@@ -45,11 +45,9 @@
   void print(uint16_t value, const char* fmt, ...);
   void print(uint32_t value, const char* fmt, ...);
   void print(const std::string& value, size_t encoded_size, const char* fmt, ...);
-  void print_raw(uint32_t length, const char* fmt, ...);
 
   std::ostream& stream_;
-  std::unique_ptr<const ApkAssets> target_apk_;
-  std::unique_ptr<const ApkAssets> overlay_apk_;
+  std::vector<std::unique_ptr<const ApkAssets>> apk_assets_;
   AssetManager2 target_am_;
   AssetManager2 overlay_am_;
   size_t offset_;
diff --git a/cmds/idmap2/include/idmap2/ResourceMapping.h b/cmds/idmap2/include/idmap2/ResourceMapping.h
index 5869409..0a58ec4 100644
--- a/cmds/idmap2/include/idmap2/ResourceMapping.h
+++ b/cmds/idmap2/include/idmap2/ResourceMapping.h
@@ -41,7 +41,7 @@
   DataValue data_value;
 };
 
-using TargetResourceMap = std::map<ResourceId, TargetValue>;
+using TargetResourceMap = std::map<ResourceId, std::variant<ResourceId, TargetValue>>;
 using OverlayResourceMap = std::map<ResourceId, ResourceId>;
 
 class ResourceMapping {
@@ -56,7 +56,7 @@
                                                bool enforce_overlayable, LogInfo& log_info);
 
   // Retrieves the mapping of target resource id to overlay value.
-  inline TargetResourceMap GetTargetToOverlayMap() const {
+  inline const TargetResourceMap& GetTargetToOverlayMap() const {
     return target_map_;
   }
 
@@ -81,19 +81,24 @@
   }
 
   // Retrieves the raw string pool data from the xml referenced in android:resourcesMap.
-  inline const std::pair<const uint8_t*, uint32_t> GetStringPoolData() const {
-    return std::make_pair(string_pool_data_.get(), string_pool_data_length_);
+  inline const StringPiece GetStringPoolData() const {
+    return StringPiece(reinterpret_cast<const char*>(string_pool_data_.get()),
+                       string_pool_data_length_);
   }
 
  private:
   ResourceMapping() = default;
 
-  // Apps a mapping of target resource id to the type and value of the data that overlays the
-  // target resource. The data_type is the runtime format of the data value (see
-  // Res_value::dataType). If rewrite_overlay_reference is `true` then references to an overlay
+  // Maps a target resource id to an overlay resource id.
+  // If rewrite_overlay_reference is `true` then references to the overlay
   // resource should appear as a reference to its corresponding target resource at runtime.
+  Result<Unit> AddMapping(ResourceId target_resource, ResourceId overlay_resource,
+                          bool rewrite_overlay_reference);
+
+  // Maps a target resource id to a data type and value combination.
+  // The `data_type` is the runtime format of the data value (see Res_value::dataType).
   Result<Unit> AddMapping(ResourceId target_resource, TargetValue::DataType data_type,
-                          TargetValue::DataValue data_value, bool rewrite_overlay_reference);
+                          TargetValue::DataValue data_value);
 
   // Removes the overlay value mapping for the target resource.
   void RemoveMapping(ResourceId target_resource);
diff --git a/cmds/idmap2/libidmap2/BinaryStreamVisitor.cpp b/cmds/idmap2/libidmap2/BinaryStreamVisitor.cpp
index 255212a..726f6c5 100644
--- a/cmds/idmap2/libidmap2/BinaryStreamVisitor.cpp
+++ b/cmds/idmap2/libidmap2/BinaryStreamVisitor.cpp
@@ -24,10 +24,6 @@
 
 namespace android::idmap2 {
 
-void BinaryStreamVisitor::Write(const void* value, size_t length) {
-  stream_.write(reinterpret_cast<const char*>(value), length);
-}
-
 void BinaryStreamVisitor::Write8(uint8_t value) {
   stream_.write(reinterpret_cast<char*>(&value), sizeof(uint8_t));
 }
@@ -49,11 +45,11 @@
   stream_.write(buf, sizeof(buf));
 }
 
-void BinaryStreamVisitor::WriteString(const std::string& value) {
-  // pad with null to nearest word boundary; include at least one terminating null
-  size_t padding_size = 4 - (value.size() % 4);
-  Write32(value.size() + padding_size);
-  stream_.write(value.c_str(), value.size());
+void BinaryStreamVisitor::WriteString(const StringPiece& value) {
+  // pad with null to nearest word boundary;
+  size_t padding_size = CalculatePadding(value.size());
+  Write32(value.size());
+  stream_.write(value.data(), value.size());
   stream_.write("\0\0\0\0", padding_size);
 }
 
@@ -67,7 +63,7 @@
   Write32(header.GetTargetCrc());
   Write32(header.GetOverlayCrc());
   Write32(header.GetFulfilledPolicies());
-  Write8(static_cast<uint8_t>(header.GetEnforceOverlayable()));
+  Write32(static_cast<uint8_t>(header.GetEnforceOverlayable()));
   WriteString256(header.GetTargetPath());
   WriteString256(header.GetOverlayPath());
   WriteString(header.GetDebugInfo());
@@ -76,8 +72,16 @@
 void BinaryStreamVisitor::visit(const IdmapData& data) {
   for (const auto& target_entry : data.GetTargetEntries()) {
     Write32(target_entry.target_id);
-    Write8(target_entry.data_type);
-    Write32(target_entry.data_value);
+    Write32(target_entry.overlay_id);
+  }
+
+  static constexpr uint16_t kValueSize = 8U;
+  for (const auto& target_entry : data.GetTargetInlineEntries()) {
+    Write32(target_entry.target_id);
+    Write16(kValueSize);
+    Write8(0U);  // padding
+    Write8(target_entry.value.data_type);
+    Write32(target_entry.value.data_value);
   }
 
   for (const auto& overlay_entry : data.GetOverlayEntries()) {
@@ -85,16 +89,18 @@
     Write32(overlay_entry.target_id);
   }
 
-  Write(data.GetStringPoolData(), data.GetHeader()->GetStringPoolLength());
+  WriteString(data.GetStringPoolData());
 }
 
 void BinaryStreamVisitor::visit(const IdmapData::Header& header) {
   Write8(header.GetTargetPackageId());
   Write8(header.GetOverlayPackageId());
+  Write8(0U);  // padding
+  Write8(0U);  // padding
   Write32(header.GetTargetEntryCount());
+  Write32(header.GetTargetInlineEntryCount());
   Write32(header.GetOverlayEntryCount());
   Write32(header.GetStringPoolIndexOffset());
-  Write32(header.GetStringPoolLength());
 }
 
 }  // namespace android::idmap2
diff --git a/cmds/idmap2/libidmap2/Idmap.cpp b/cmds/idmap2/libidmap2/Idmap.cpp
index 23c25a7..1129413 100644
--- a/cmds/idmap2/libidmap2/Idmap.cpp
+++ b/cmds/idmap2/libidmap2/Idmap.cpp
@@ -51,19 +51,19 @@
   return false;
 }
 
-bool WARN_UNUSED Read32(std::istream& stream, uint32_t* out) {
-  uint32_t value;
-  if (stream.read(reinterpret_cast<char*>(&value), sizeof(uint32_t))) {
-    *out = dtohl(value);
+bool WARN_UNUSED Read16(std::istream& stream, uint16_t* out) {
+  uint16_t value;
+  if (stream.read(reinterpret_cast<char*>(&value), sizeof(uint16_t))) {
+    *out = dtohs(value);
     return true;
   }
   return false;
 }
 
-bool WARN_UNUSED ReadBuffer(std::istream& stream, std::unique_ptr<uint8_t[]>* out, size_t length) {
-  auto buffer = std::unique_ptr<uint8_t[]>(new uint8_t[length]);
-  if (stream.read(reinterpret_cast<char*>(buffer.get()), length)) {
-    *out = std::move(buffer);
+bool WARN_UNUSED Read32(std::istream& stream, uint32_t* out) {
+  uint32_t value;
+  if (stream.read(reinterpret_cast<char*>(&value), sizeof(uint32_t))) {
+    *out = dtohl(value);
     return true;
   }
   return false;
@@ -95,8 +95,11 @@
   if (!stream.read(buf.data(), size)) {
     return Error("failed to read string of size %u", size);
   }
-  // buf is guaranteed to be null terminated (with enough nulls to end on a word boundary)
-  buf.resize(strlen(buf.c_str()));
+  uint32_t padding_size = CalculatePadding(size);
+  std::string padding(padding_size, '\0');
+  if (!stream.read(padding.data(), padding_size)) {
+    return Error("failed to read string padding of size %u", padding_size);
+  }
   return buf;
 }
 
@@ -112,16 +115,16 @@
 
 std::unique_ptr<const IdmapHeader> IdmapHeader::FromBinaryStream(std::istream& stream) {
   std::unique_ptr<IdmapHeader> idmap_header(new IdmapHeader());
-  uint8_t enforce_overlayable;
+  uint32_t enforce_overlayable;
   if (!Read32(stream, &idmap_header->magic_) || !Read32(stream, &idmap_header->version_) ||
       !Read32(stream, &idmap_header->target_crc_) || !Read32(stream, &idmap_header->overlay_crc_) ||
-      !Read32(stream, &idmap_header->fulfilled_policies_) || !Read8(stream, &enforce_overlayable) ||
-      !ReadString256(stream, idmap_header->target_path_) ||
+      !Read32(stream, &idmap_header->fulfilled_policies_) ||
+      !Read32(stream, &enforce_overlayable) || !ReadString256(stream, idmap_header->target_path_) ||
       !ReadString256(stream, idmap_header->overlay_path_)) {
     return nullptr;
   }
 
-  idmap_header->enforce_overlayable_ = static_cast<bool>(enforce_overlayable);
+  idmap_header->enforce_overlayable_ = enforce_overlayable != 0U;
 
   auto debug_str = ReadString(stream);
   if (!debug_str) {
@@ -207,12 +210,13 @@
 std::unique_ptr<const IdmapData::Header> IdmapData::Header::FromBinaryStream(std::istream& stream) {
   std::unique_ptr<IdmapData::Header> idmap_data_header(new IdmapData::Header());
 
+  uint8_t padding;
   if (!Read8(stream, &idmap_data_header->target_package_id_) ||
-      !Read8(stream, &idmap_data_header->overlay_package_id_) ||
-      !Read32(stream, &idmap_data_header->target_entry_count) ||
+      !Read8(stream, &idmap_data_header->overlay_package_id_) || !Read8(stream, &padding) ||
+      !Read8(stream, &padding) || !Read32(stream, &idmap_data_header->target_entry_count) ||
+      !Read32(stream, &idmap_data_header->target_entry_inline_count) ||
       !Read32(stream, &idmap_data_header->overlay_entry_count) ||
-      !Read32(stream, &idmap_data_header->string_pool_index_offset) ||
-      !Read32(stream, &idmap_data_header->string_pool_len)) {
+      !Read32(stream, &idmap_data_header->string_pool_index_offset)) {
     return nullptr;
   }
 
@@ -225,14 +229,27 @@
   if (!data->header_) {
     return nullptr;
   }
+
   // Read the mapping of target resource id to overlay resource value.
   for (size_t i = 0; i < data->header_->GetTargetEntryCount(); i++) {
     TargetEntry target_entry{};
-    if (!Read32(stream, &target_entry.target_id) || !Read8(stream, &target_entry.data_type) ||
-        !Read32(stream, &target_entry.data_value)) {
+    if (!Read32(stream, &target_entry.target_id) || !Read32(stream, &target_entry.overlay_id)) {
       return nullptr;
     }
-    data->target_entries_.emplace_back(target_entry);
+    data->target_entries_.push_back(target_entry);
+  }
+
+  // Read the mapping of target resource id to inline overlay values.
+  uint8_t unused1;
+  uint16_t unused2;
+  for (size_t i = 0; i < data->header_->GetTargetInlineEntryCount(); i++) {
+    TargetInlineEntry target_entry{};
+    if (!Read32(stream, &target_entry.target_id) || !Read16(stream, &unused2) ||
+        !Read8(stream, &unused1) || !Read8(stream, &target_entry.value.data_type) ||
+        !Read32(stream, &target_entry.value.data_value)) {
+      return nullptr;
+    }
+    data->target_inline_entries_.push_back(target_entry);
   }
 
   // Read the mapping of overlay resource id to target resource id.
@@ -245,9 +262,11 @@
   }
 
   // Read raw string pool bytes.
-  if (!ReadBuffer(stream, &data->string_pool_, data->header_->string_pool_len)) {
+  auto string_pool_data = ReadString(stream);
+  if (!string_pool_data) {
     return nullptr;
   }
+  data->string_pool_data_ = std::move(*string_pool_data);
 
   return std::move(data);
 }
@@ -290,27 +309,28 @@
   }
 
   std::unique_ptr<IdmapData> data(new IdmapData());
-  for (const auto& mappings : resource_mapping.GetTargetToOverlayMap()) {
-    data->target_entries_.emplace_back(IdmapData::TargetEntry{
-        mappings.first, mappings.second.data_type, mappings.second.data_value});
+  data->string_pool_data_ = resource_mapping.GetStringPoolData().to_string();
+  for (const auto& mapping : resource_mapping.GetTargetToOverlayMap()) {
+    if (auto overlay_resource = std::get_if<ResourceId>(&mapping.second)) {
+      data->target_entries_.push_back({mapping.first, *overlay_resource});
+    } else {
+      data->target_inline_entries_.push_back(
+          {mapping.first, std::get<TargetValue>(mapping.second)});
+    }
   }
 
-  for (const auto& mappings : resource_mapping.GetOverlayToTargetMap()) {
-    data->overlay_entries_.emplace_back(IdmapData::OverlayEntry{mappings.first, mappings.second});
+  for (const auto& mapping : resource_mapping.GetOverlayToTargetMap()) {
+    data->overlay_entries_.emplace_back(IdmapData::OverlayEntry{mapping.first, mapping.second});
   }
 
   std::unique_ptr<IdmapData::Header> data_header(new IdmapData::Header());
   data_header->target_package_id_ = resource_mapping.GetTargetPackageId();
   data_header->overlay_package_id_ = resource_mapping.GetOverlayPackageId();
   data_header->target_entry_count = static_cast<uint32_t>(data->target_entries_.size());
+  data_header->target_entry_inline_count =
+      static_cast<uint32_t>(data->target_inline_entries_.size());
   data_header->overlay_entry_count = static_cast<uint32_t>(data->overlay_entries_.size());
   data_header->string_pool_index_offset = resource_mapping.GetStringPoolOffset();
-
-  const auto string_pool_data = resource_mapping.GetStringPoolData();
-  data_header->string_pool_len = string_pool_data.second;
-  data->string_pool_ = std::unique_ptr<uint8_t[]>(new uint8_t[data_header->string_pool_len]);
-  memcpy(data->string_pool_.get(), string_pool_data.first, data_header->string_pool_len);
-
   data->header_ = std::move(data_header);
   return {std::move(data)};
 }
diff --git a/cmds/idmap2/libidmap2/PrettyPrintVisitor.cpp b/cmds/idmap2/libidmap2/PrettyPrintVisitor.cpp
index 63ee8a6..a93202a 100644
--- a/cmds/idmap2/libidmap2/PrettyPrintVisitor.cpp
+++ b/cmds/idmap2/libidmap2/PrettyPrintVisitor.cpp
@@ -38,6 +38,7 @@
   stream_ << "Paths:" << std::endl
           << TAB "target apk path  : " << header.GetTargetPath() << std::endl
           << TAB "overlay apk path : " << header.GetOverlayPath() << std::endl;
+
   const std::string& debug = header.GetDebugInfo();
   if (!debug.empty()) {
     std::istringstream debug_stream(debug);
@@ -48,10 +49,16 @@
     }
   }
 
-  target_apk_ = ApkAssets::Load(header.GetTargetPath().to_string());
-  if (target_apk_) {
+  if (auto target_apk_ = ApkAssets::Load(header.GetTargetPath().to_string())) {
     target_am_.SetApkAssets({target_apk_.get()});
+    apk_assets_.push_back(std::move(target_apk_));
   }
+
+  if (auto overlay_apk = ApkAssets::Load(header.GetOverlayPath().to_string())) {
+    overlay_am_.SetApkAssets({overlay_apk.get()});
+    apk_assets_.push_back(std::move(overlay_apk));
+  }
+
   stream_ << "Mapping:" << std::endl;
 }
 
@@ -59,34 +66,56 @@
 }
 
 void PrettyPrintVisitor::visit(const IdmapData& data) {
+  static constexpr const char* kUnknownResourceName = "???";
+
   const bool target_package_loaded = !target_am_.GetApkAssets().empty();
-  const ResStringPool string_pool(data.GetStringPoolData(),
-                                  data.GetHeader()->GetStringPoolLength());
+  const bool overlay_package_loaded = !overlay_am_.GetApkAssets().empty();
+
+  const ResStringPool string_pool(data.GetStringPoolData().data(), data.GetStringPoolData().size());
   const size_t string_pool_offset = data.GetHeader()->GetStringPoolIndexOffset();
 
-  for (auto& target_entry : data.GetTargetEntries()) {
-    stream_ << TAB << base::StringPrintf("0x%08x ->", target_entry.target_id);
-
-    if (target_entry.data_type != Res_value::TYPE_REFERENCE &&
-        target_entry.data_type != Res_value::TYPE_DYNAMIC_REFERENCE) {
-      stream_ << " " << utils::DataTypeToString(target_entry.data_type);
-    }
-
-    if (target_entry.data_type == Res_value::TYPE_STRING) {
-      stream_ << " \""
-              << string_pool.string8ObjectAt(target_entry.data_value - string_pool_offset).c_str()
-              << "\"";
-    } else {
-      stream_ << " " << base::StringPrintf("0x%08x", target_entry.data_value);
-    }
-
+  for (const auto& target_entry : data.GetTargetEntries()) {
+    std::string target_name = kUnknownResourceName;
     if (target_package_loaded) {
-      Result<std::string> name = utils::ResToTypeEntryName(target_am_, target_entry.target_id);
-      if (name) {
-        stream_ << " " << *name;
+      if (auto name = utils::ResToTypeEntryName(target_am_, target_entry.target_id)) {
+        target_name = *name;
       }
     }
-    stream_ << std::endl;
+
+    std::string overlay_name = kUnknownResourceName;
+    if (overlay_package_loaded) {
+      if (auto name = utils::ResToTypeEntryName(overlay_am_, target_entry.overlay_id)) {
+        overlay_name = *name;
+      }
+    }
+
+    stream_ << TAB
+            << base::StringPrintf("0x%08x -> 0x%08x (%s -> %s)", target_entry.target_id,
+                                  target_entry.overlay_id, target_name.c_str(),
+                                  overlay_name.c_str())
+            << std::endl;
+  }
+
+  for (auto& target_entry : data.GetTargetInlineEntries()) {
+    stream_ << TAB << base::StringPrintf("0x%08x -> ", target_entry.target_id)
+            << utils::DataTypeToString(target_entry.value.data_type);
+
+    size_t unused;
+    if (target_entry.value.data_type == Res_value::TYPE_STRING) {
+      auto str = string_pool.stringAt(target_entry.value.data_value - string_pool_offset, &unused);
+      stream_ << " \"" << StringPiece16(str) << "\"";
+    } else {
+      stream_ << " " << base::StringPrintf("0x%08x", target_entry.value.data_value);
+    }
+
+    std::string target_name = kUnknownResourceName;
+    if (target_package_loaded) {
+      if (auto name = utils::ResToTypeEntryName(target_am_, target_entry.target_id)) {
+        target_name = *name;
+      }
+    }
+
+    stream_ << " (" << target_name << ")" << std::endl;
   }
 }
 
diff --git a/cmds/idmap2/libidmap2/RawPrintVisitor.cpp b/cmds/idmap2/libidmap2/RawPrintVisitor.cpp
index 3f62a2a..82f5d26 100644
--- a/cmds/idmap2/libidmap2/RawPrintVisitor.cpp
+++ b/cmds/idmap2/libidmap2/RawPrintVisitor.cpp
@@ -30,15 +30,6 @@
 using android::ApkAssets;
 using android::idmap2::policy::PoliciesToDebugString;
 
-namespace {
-
-size_t StringSizeWhenEncoded(const std::string& s) {
-  size_t null_bytes = 4 - (s.size() % 4);
-  return sizeof(uint32_t) + s.size() + null_bytes;
-}
-
-}  // namespace
-
 namespace android::idmap2 {
 
 void RawPrintVisitor::visit(const Idmap& idmap ATTRIBUTE_UNUSED) {
@@ -51,19 +42,24 @@
   print(header.GetOverlayCrc(), "overlay crc");
   print(header.GetFulfilledPolicies(), "fulfilled policies: %s",
         PoliciesToDebugString(header.GetFulfilledPolicies()).c_str());
-  print(static_cast<uint8_t>(header.GetEnforceOverlayable()), "enforce overlayable");
+  print(static_cast<uint32_t>(header.GetEnforceOverlayable()), "enforce overlayable");
   print(header.GetTargetPath().to_string(), kIdmapStringLength, "target path");
   print(header.GetOverlayPath().to_string(), kIdmapStringLength, "overlay path");
-  print("...", StringSizeWhenEncoded(header.GetDebugInfo()), "debug info");
 
-  target_apk_ = ApkAssets::Load(header.GetTargetPath().to_string());
+  uint32_t debug_info_size = header.GetDebugInfo().size();
+  print(debug_info_size, "debug info size");
+  print("...", debug_info_size + CalculatePadding(debug_info_size), "debug info");
+
+  auto target_apk_ = ApkAssets::Load(header.GetTargetPath().to_string());
   if (target_apk_) {
     target_am_.SetApkAssets({target_apk_.get()});
+    apk_assets_.push_back(std::move(target_apk_));
   }
 
-  overlay_apk_ = ApkAssets::Load(header.GetOverlayPath().to_string());
+  auto overlay_apk_ = ApkAssets::Load(header.GetOverlayPath().to_string());
   if (overlay_apk_) {
     overlay_am_.SetApkAssets({overlay_apk_.get()});
+    apk_assets_.push_back(std::move(overlay_apk_));
   }
 }
 
@@ -82,18 +78,44 @@
       print(target_entry.target_id, "target id");
     }
 
-    print(target_entry.data_type, "type: %s",
-          utils::DataTypeToString(target_entry.data_type).data());
-
     Result<std::string> overlay_name(Error(""));
-    if (overlay_package_loaded && (target_entry.data_type == Res_value::TYPE_REFERENCE ||
-                                   target_entry.data_type == Res_value::TYPE_DYNAMIC_REFERENCE)) {
-      overlay_name = utils::ResToTypeEntryName(overlay_am_, target_entry.data_value);
+    if (overlay_package_loaded) {
+      overlay_name = utils::ResToTypeEntryName(overlay_am_, target_entry.overlay_id);
     }
     if (overlay_name) {
-      print(target_entry.data_value, "value: %s", overlay_name->c_str());
+      print(target_entry.overlay_id, "overlay id: %s", overlay_name->c_str());
     } else {
-      print(target_entry.data_value, "value");
+      print(target_entry.overlay_id, "overlay id");
+    }
+  }
+
+  for (auto& target_entry : data.GetTargetInlineEntries()) {
+    Result<std::string> target_name(Error(""));
+    if (target_package_loaded) {
+      target_name = utils::ResToTypeEntryName(target_am_, target_entry.target_id);
+    }
+    if (target_name) {
+      print(target_entry.target_id, "target id: %s", target_name->c_str());
+    } else {
+      print(target_entry.target_id, "target id");
+    }
+
+    print("...", sizeof(Res_value::size) + sizeof(Res_value::res0), "padding");
+
+    print(target_entry.value.data_type, "type: %s",
+          utils::DataTypeToString(target_entry.value.data_type).data());
+
+    Result<std::string> overlay_name(Error(""));
+    if (overlay_package_loaded &&
+        (target_entry.value.data_value == Res_value::TYPE_REFERENCE ||
+         target_entry.value.data_value == Res_value::TYPE_DYNAMIC_REFERENCE)) {
+      overlay_name = utils::ResToTypeEntryName(overlay_am_, target_entry.value.data_value);
+    }
+
+    if (overlay_name) {
+      print(target_entry.value.data_value, "data: %s", overlay_name->c_str());
+    } else {
+      print(target_entry.value.data_value, "data");
     }
   }
 
@@ -121,19 +143,19 @@
     }
   }
 
-  const size_t string_pool_length = data.GetHeader()->GetStringPoolLength();
-  if (string_pool_length > 0) {
-    print_raw(string_pool_length, "%zu raw string pool bytes", string_pool_length);
-  }
+  uint32_t string_pool_size = data.GetStringPoolData().size();
+  print(string_pool_size, "string pool size");
+  print("...", string_pool_size + CalculatePadding(string_pool_size), "string pool");
 }
 
 void RawPrintVisitor::visit(const IdmapData::Header& header) {
   print(header.GetTargetPackageId(), "target package id");
   print(header.GetOverlayPackageId(), "overlay package id");
+  print("...", sizeof(Idmap_data_header::p0), "padding");
   print(header.GetTargetEntryCount(), "target entry count");
+  print(header.GetTargetInlineEntryCount(), "target inline entry count");
   print(header.GetOverlayEntryCount(), "overlay entry count");
   print(header.GetStringPoolIndexOffset(), "string pool index offset");
-  print(header.GetStringPoolLength(), "string pool byte length");
 }
 
 // NOLINTNEXTLINE(cert-dcl50-cpp)
@@ -190,17 +212,4 @@
   offset_ += encoded_size;
 }
 
-// NOLINTNEXTLINE(cert-dcl50-cpp)
-void RawPrintVisitor::print_raw(uint32_t length, const char* fmt, ...) {
-  va_list ap;
-  va_start(ap, fmt);
-  std::string comment;
-  base::StringAppendV(&comment, fmt, ap);
-  va_end(ap);
-
-  stream_ << base::StringPrintf("%08zx: ", offset_) << "........  " << comment << std::endl;
-
-  offset_ += length;
-}
-
 }  // namespace android::idmap2
diff --git a/cmds/idmap2/libidmap2/ResourceMapping.cpp b/cmds/idmap2/libidmap2/ResourceMapping.cpp
index 34589a1..31f1c16 100644
--- a/cmds/idmap2/libidmap2/ResourceMapping.cpp
+++ b/cmds/idmap2/libidmap2/ResourceMapping.cpp
@@ -61,16 +61,19 @@
                               const ResourceId& target_resource) {
   static constexpr const PolicyBitmask sDefaultPolicies =
       PolicyFlags::ODM_PARTITION | PolicyFlags::OEM_PARTITION | PolicyFlags::SYSTEM_PARTITION |
-      PolicyFlags::VENDOR_PARTITION | PolicyFlags::PRODUCT_PARTITION | PolicyFlags::SIGNATURE;
+      PolicyFlags::VENDOR_PARTITION | PolicyFlags::PRODUCT_PARTITION | PolicyFlags::SIGNATURE |
+      PolicyFlags::CONFIG_SIGNATURE;
 
   // If the resource does not have an overlayable definition, allow the resource to be overlaid if
-  // the overlay is preinstalled or signed with the same signature as the target.
+  // the overlay is preinstalled, signed with the same signature as the target or signed with the
+  // same signature as reference package defined in SystemConfig under 'overlay-config-signature'
+  // tag.
   if (!target_package.DefinesOverlayable()) {
     return (sDefaultPolicies & fulfilled_policies) != 0
                ? Result<Unit>({})
-               : Error(
-                     "overlay must be preinstalled or signed with the same signature as the "
-                     "target");
+               : Error("overlay must be preinstalled, signed with the same signature as the target,"
+                       " or signed with the same signature as the package referenced through"
+                       " <overlay-config-signature>.");
   }
 
   const OverlayableInfo* overlayable_info = target_package.GetOverlayableInfo(target_resource);
@@ -202,19 +205,14 @@
       overlay_resource->data += string_pool_offset;
     }
 
-    // Only rewrite resources defined within the overlay package to their corresponding target
-    // resource ids at runtime.
-    bool rewrite_overlay_reference =
-        IsReference(overlay_resource->dataType)
-            ? overlay_package_id == EXTRACT_PACKAGE(overlay_resource->data)
-            : false;
-
-    if (rewrite_overlay_reference) {
-      overlay_resource->dataType = Res_value::TYPE_DYNAMIC_REFERENCE;
+    if (IsReference(overlay_resource->dataType)) {
+      // Only rewrite resources defined within the overlay package to their corresponding target
+      // resource ids at runtime.
+      bool rewrite_reference = overlay_package_id == EXTRACT_PACKAGE(overlay_resource->data);
+      resource_mapping.AddMapping(target_id, overlay_resource->data, rewrite_reference);
+    } else {
+      resource_mapping.AddMapping(target_id, overlay_resource->dataType, overlay_resource->data);
     }
-
-    resource_mapping.AddMapping(target_id, overlay_resource->dataType, overlay_resource->data,
-                                rewrite_overlay_reference);
   }
 
   return resource_mapping;
@@ -243,9 +241,8 @@
 
     // Retrieve the compile-time resource id of the target resource.
     target_resource = REWRITE_PACKAGE(target_resource, target_package_id);
-
-    resource_mapping.AddMapping(target_resource, Res_value::TYPE_REFERENCE, overlay_resid,
-                                /* rewrite_overlay_reference */ false);
+    resource_mapping.AddMapping(target_resource, overlay_resid,
+                                false /* rewrite_overlay_reference */);
   }
 
   return resource_mapping;
@@ -393,9 +390,7 @@
   return map;
 }
 
-Result<Unit> ResourceMapping::AddMapping(ResourceId target_resource,
-                                         TargetValue::DataType data_type,
-                                         TargetValue::DataValue data_value,
+Result<Unit> ResourceMapping::AddMapping(ResourceId target_resource, ResourceId overlay_resource,
                                          bool rewrite_overlay_reference) {
   if (target_map_.find(target_resource) != target_map_.end()) {
     return Error(R"(target resource id "0x%08x" mapped to multiple values)", target_resource);
@@ -404,13 +399,26 @@
   // TODO(141485591): Ensure that the overlay type is compatible with the target type. If the
   // runtime types are not compatible, it could cause runtime crashes when the resource is resolved.
 
-  target_map_.insert(std::make_pair(target_resource, TargetValue{data_type, data_value}));
+  target_map_.insert(std::make_pair(target_resource, overlay_resource));
 
-  if (rewrite_overlay_reference && IsReference(data_type)) {
-    overlay_map_.insert(std::make_pair(data_value, target_resource));
+  if (rewrite_overlay_reference) {
+    overlay_map_.insert(std::make_pair(overlay_resource, target_resource));
+  }
+  return Unit{};
+}
+
+Result<Unit> ResourceMapping::AddMapping(ResourceId target_resource,
+                                         TargetValue::DataType data_type,
+                                         TargetValue::DataValue data_value) {
+  if (target_map_.find(target_resource) != target_map_.end()) {
+    return Error(R"(target resource id "0x%08x" mapped to multiple values)", target_resource);
   }
 
-  return Result<Unit>({});
+  // TODO(141485591): Ensure that the overlay type is compatible with the target type. If the
+  // runtime types are not compatible, it could cause runtime crashes when the resource is resolved.
+
+  target_map_.insert(std::make_pair(target_resource, TargetValue{data_type, data_value}));
+  return Unit{};
 }
 
 void ResourceMapping::RemoveMapping(ResourceId target_resource) {
@@ -419,14 +427,15 @@
     return;
   }
 
-  const TargetValue value = target_iter->second;
+  const auto value = target_iter->second;
   target_map_.erase(target_iter);
 
-  if (!IsReference(value.data_type)) {
+  const ResourceId* overlay_resource = std::get_if<ResourceId>(&value);
+  if (overlay_resource == nullptr) {
     return;
   }
 
-  auto overlay_iter = overlay_map_.equal_range(value.data_value);
+  auto overlay_iter = overlay_map_.equal_range(*overlay_resource);
   for (auto i = overlay_iter.first; i != overlay_iter.second; ++i) {
     if (i->second == target_resource) {
       overlay_map_.erase(i);
diff --git a/cmds/idmap2/libidmap2_policies/include/idmap2/Policies.h b/cmds/idmap2/libidmap2_policies/include/idmap2/Policies.h
index 5bd353a..8046319 100644
--- a/cmds/idmap2/libidmap2_policies/include/idmap2/Policies.h
+++ b/cmds/idmap2/libidmap2_policies/include/idmap2/Policies.h
@@ -37,16 +37,18 @@
 constexpr const char* kPolicyOem = "oem";
 constexpr const char* kPolicyProduct = "product";
 constexpr const char* kPolicyPublic = "public";
+constexpr const char* kPolicyConfigSignature = "config_signature";
 constexpr const char* kPolicySignature = "signature";
 constexpr const char* kPolicySystem = "system";
 constexpr const char* kPolicyVendor = "vendor";
 
-inline static const std::array<std::pair<StringPiece, PolicyFlags>, 8> kPolicyStringToFlag = {
+inline static const std::array<std::pair<StringPiece, PolicyFlags>, 9> kPolicyStringToFlag = {
     std::pair{kPolicyActor, PolicyFlags::ACTOR_SIGNATURE},
     {kPolicyOdm, PolicyFlags::ODM_PARTITION},
     {kPolicyOem, PolicyFlags::OEM_PARTITION},
     {kPolicyProduct, PolicyFlags::PRODUCT_PARTITION},
     {kPolicyPublic, PolicyFlags::PUBLIC},
+    {kPolicyConfigSignature, PolicyFlags::CONFIG_SIGNATURE},
     {kPolicySignature, PolicyFlags::SIGNATURE},
     {kPolicySystem, PolicyFlags::SYSTEM_PARTITION},
     {kPolicyVendor, PolicyFlags::VENDOR_PARTITION},
diff --git a/cmds/idmap2/tests/BinaryStreamVisitorTests.cpp b/cmds/idmap2/tests/BinaryStreamVisitorTests.cpp
index 5fea7bc..c3a3e0b 100644
--- a/cmds/idmap2/tests/BinaryStreamVisitorTests.cpp
+++ b/cmds/idmap2/tests/BinaryStreamVisitorTests.cpp
@@ -72,13 +72,20 @@
   const auto& target_entries2 = data2->GetTargetEntries();
   ASSERT_EQ(target_entries1.size(), target_entries2.size());
   ASSERT_EQ(target_entries1[0].target_id, target_entries2[0].target_id);
-  ASSERT_EQ(target_entries1[0].data_value, target_entries2[0].data_value);
+  ASSERT_EQ(target_entries1[0].overlay_id, target_entries2[0].overlay_id);
 
   ASSERT_EQ(target_entries1[1].target_id, target_entries2[1].target_id);
-  ASSERT_EQ(target_entries1[1].data_value, target_entries2[1].data_value);
+  ASSERT_EQ(target_entries1[1].overlay_id, target_entries2[1].overlay_id);
 
   ASSERT_EQ(target_entries1[2].target_id, target_entries2[2].target_id);
-  ASSERT_EQ(target_entries1[2].data_value, target_entries2[2].data_value);
+  ASSERT_EQ(target_entries1[2].overlay_id, target_entries2[2].overlay_id);
+
+  const auto& target_inline_entries1 = data1->GetTargetInlineEntries();
+  const auto& target_inline_entries2 = data2->GetTargetInlineEntries();
+  ASSERT_EQ(target_inline_entries1.size(), target_inline_entries2.size());
+  ASSERT_EQ(target_inline_entries1[0].target_id, target_inline_entries2[0].target_id);
+  ASSERT_EQ(target_inline_entries1[0].value.data_type, target_inline_entries2[0].value.data_type);
+  ASSERT_EQ(target_inline_entries1[0].value.data_value, target_inline_entries2[0].value.data_value);
 
   const auto& overlay_entries1 = data1->GetOverlayEntries();
   const auto& overlay_entries2 = data2->GetOverlayEntries();
diff --git a/cmds/idmap2/tests/Idmap2BinaryTests.cpp b/cmds/idmap2/tests/Idmap2BinaryTests.cpp
index d896cf9..eba102da 100644
--- a/cmds/idmap2/tests/Idmap2BinaryTests.cpp
+++ b/cmds/idmap2/tests/Idmap2BinaryTests.cpp
@@ -128,13 +128,13 @@
   // clang-format on
   ASSERT_THAT(result, NotNull());
   ASSERT_EQ(result->status, EXIT_SUCCESS) << result->stderr;
-  ASSERT_NE(result->stdout.find(R::target::integer::literal::int1 + " -> 0x7f010000 integer/int1"),
+  ASSERT_NE(result->stdout.find(R::target::integer::literal::int1 + " -> 0x7f010000"),
             std::string::npos);
-  ASSERT_NE(result->stdout.find(R::target::string::literal::str1 + " -> 0x7f020000 string/str1"),
+  ASSERT_NE(result->stdout.find(R::target::string::literal::str1 + " -> 0x7f020000"),
             std::string::npos);
-  ASSERT_NE(result->stdout.find(R::target::string::literal::str3 + " -> 0x7f020001 string/str3"),
+  ASSERT_NE(result->stdout.find(R::target::string::literal::str3 + " -> 0x7f020001"),
             std::string::npos);
-  ASSERT_NE(result->stdout.find(R::target::string::literal::str4 + " -> 0x7f020002 string/str4"),
+  ASSERT_NE(result->stdout.find(R::target::string::literal::str4 + " -> 0x7f020002"),
             std::string::npos);
 
   // clang-format off
diff --git a/cmds/idmap2/tests/IdmapTests.cpp b/cmds/idmap2/tests/IdmapTests.cpp
index 6fab5e0..9b42a27 100644
--- a/cmds/idmap2/tests/IdmapTests.cpp
+++ b/cmds/idmap2/tests/IdmapTests.cpp
@@ -42,14 +42,18 @@
 
 namespace android::idmap2 {
 
-#define ASSERT_TARGET_ENTRY(entry, target_resid, type, value) \
-  ASSERT_EQ(entry.target_id, target_resid);                   \
-  ASSERT_EQ(entry.data_type, type);                           \
-  ASSERT_EQ(entry.data_value, value)
+#define ASSERT_TARGET_ENTRY(entry, target_resid, overlay_resid) \
+  ASSERT_EQ((entry).target_id, (target_resid));                 \
+  ASSERT_EQ((entry).overlay_id, (overlay_resid))
+
+#define ASSERT_TARGET_INLINE_ENTRY(entry, target_resid, expected_type, expected_value) \
+  ASSERT_EQ((entry).target_id, target_resid);                                          \
+  ASSERT_EQ((entry).value.data_type, (expected_type));                                 \
+  ASSERT_EQ((entry).value.data_value, (expected_value))
 
 #define ASSERT_OVERLAY_ENTRY(entry, overlay_resid, target_resid) \
-  ASSERT_EQ(entry.overlay_id, overlay_resid);                    \
-  ASSERT_EQ(entry.target_id, target_resid)
+  ASSERT_EQ((entry).overlay_id, (overlay_resid));                \
+  ASSERT_EQ((entry).target_id, (target_resid))
 
 TEST(IdmapTests, TestCanonicalIdmapPathFor) {
   ASSERT_EQ(Idmap::CanonicalIdmapPathFor("/foo", "/vendor/overlay/bar.apk"),
@@ -62,7 +66,7 @@
   std::unique_ptr<const IdmapHeader> header = IdmapHeader::FromBinaryStream(stream);
   ASSERT_THAT(header, NotNull());
   ASSERT_EQ(header->GetMagic(), 0x504d4449U);
-  ASSERT_EQ(header->GetVersion(), 0x04U);
+  ASSERT_EQ(header->GetVersion(), 0x05U);
   ASSERT_EQ(header->GetTargetCrc(), 0x1234U);
   ASSERT_EQ(header->GetOverlayCrc(), 0x5678U);
   ASSERT_EQ(header->GetFulfilledPolicies(), 0x11);
@@ -75,7 +79,7 @@
 TEST(IdmapTests, FailToCreateIdmapHeaderFromBinaryStreamIfPathTooLong) {
   std::string raw(reinterpret_cast<const char*>(idmap_raw_data), idmap_raw_data_len);
   // overwrite the target path string, including the terminating null, with '.'
-  for (size_t i = 0x15; i < 0x115; i++) {
+  for (size_t i = 0x18; i < 0x118; i++) {
     raw[i] = '.';
   }
   std::istringstream stream(raw);
@@ -84,7 +88,7 @@
 }
 
 TEST(IdmapTests, CreateIdmapDataHeaderFromBinaryStream) {
-  const size_t offset = 0x221;
+  const size_t offset = 0x224;
   std::string raw(reinterpret_cast<const char*>(idmap_raw_data + offset),
                   idmap_raw_data_len - offset);
   std::istringstream stream(raw);
@@ -96,7 +100,7 @@
 }
 
 TEST(IdmapTests, CreateIdmapDataFromBinaryStream) {
-  const size_t offset = 0x221;
+  const size_t offset = 0x224;
   std::string raw(reinterpret_cast<const char*>(idmap_raw_data + offset),
                   idmap_raw_data_len - offset);
   std::istringstream stream(raw);
@@ -106,12 +110,14 @@
 
   const auto& target_entries = data->GetTargetEntries();
   ASSERT_EQ(target_entries.size(), 3U);
-  ASSERT_TARGET_ENTRY(target_entries[0], 0x7f020000, 0x01 /* Res_value::TYPE_REFERENCE */,
-                      0x7f020000);
-  ASSERT_TARGET_ENTRY(target_entries[1], 0x7f030000, 0x01 /* Res_value::TYPE_REFERENCE */,
-                      0x7f030000);
-  ASSERT_TARGET_ENTRY(target_entries[2], 0x7f030002, 0x01 /* Res_value::TYPE_REFERENCE */,
-                      0x7f030001);
+  ASSERT_TARGET_ENTRY(target_entries[0], 0x7f020000, 0x7f020000);
+  ASSERT_TARGET_ENTRY(target_entries[1], 0x7f030000, 0x7f030000);
+  ASSERT_TARGET_ENTRY(target_entries[2], 0x7f030002, 0x7f030001);
+
+  const auto& target_inline_entries = data->GetTargetInlineEntries();
+  ASSERT_EQ(target_inline_entries.size(), 1U);
+  ASSERT_TARGET_INLINE_ENTRY(target_inline_entries[0], 0x7f040000, Res_value::TYPE_INT_HEX,
+                             0x12345678);
 
   const auto& overlay_entries = data->GetOverlayEntries();
   ASSERT_EQ(target_entries.size(), 3U);
@@ -130,7 +136,7 @@
 
   ASSERT_THAT(idmap->GetHeader(), NotNull());
   ASSERT_EQ(idmap->GetHeader()->GetMagic(), 0x504d4449U);
-  ASSERT_EQ(idmap->GetHeader()->GetVersion(), 0x04U);
+  ASSERT_EQ(idmap->GetHeader()->GetVersion(), 0x05U);
   ASSERT_EQ(idmap->GetHeader()->GetTargetCrc(), 0x1234U);
   ASSERT_EQ(idmap->GetHeader()->GetOverlayCrc(), 0x5678U);
   ASSERT_EQ(idmap->GetHeader()->GetFulfilledPolicies(), 0x11);
@@ -146,9 +152,14 @@
 
   const auto& target_entries = data->GetTargetEntries();
   ASSERT_EQ(target_entries.size(), 3U);
-  ASSERT_TARGET_ENTRY(target_entries[0], 0x7f020000, Res_value::TYPE_REFERENCE, 0x7f020000);
-  ASSERT_TARGET_ENTRY(target_entries[1], 0x7f030000, Res_value::TYPE_REFERENCE, 0x7f030000);
-  ASSERT_TARGET_ENTRY(target_entries[2], 0x7f030002, Res_value::TYPE_REFERENCE, 0x7f030001);
+  ASSERT_TARGET_ENTRY(target_entries[0], 0x7f020000, 0x7f020000);
+  ASSERT_TARGET_ENTRY(target_entries[1], 0x7f030000, 0x7f030000);
+  ASSERT_TARGET_ENTRY(target_entries[2], 0x7f030002, 0x7f030001);
+
+  const auto& target_inline_entries = data->GetTargetInlineEntries();
+  ASSERT_EQ(target_inline_entries.size(), 1U);
+  ASSERT_TARGET_INLINE_ENTRY(target_inline_entries[0], 0x7f040000, Res_value::TYPE_INT_HEX,
+                             0x12345678);
 
   const auto& overlay_entries = data->GetOverlayEntries();
   ASSERT_EQ(target_entries.size(), 3U);
@@ -184,7 +195,7 @@
 
   ASSERT_THAT(idmap->GetHeader(), NotNull());
   ASSERT_EQ(idmap->GetHeader()->GetMagic(), 0x504d4449U);
-  ASSERT_EQ(idmap->GetHeader()->GetVersion(), 0x04U);
+  ASSERT_EQ(idmap->GetHeader()->GetVersion(), 0x05U);
   ASSERT_EQ(idmap->GetHeader()->GetTargetCrc(), android::idmap2::TestConstants::TARGET_CRC);
   ASSERT_EQ(idmap->GetHeader()->GetOverlayCrc(), android::idmap2::TestConstants::OVERLAY_CRC);
   ASSERT_EQ(idmap->GetHeader()->GetFulfilledPolicies(), PolicyFlags::PUBLIC);
@@ -244,14 +255,13 @@
 
   const auto& target_entries = data->GetTargetEntries();
   ASSERT_EQ(target_entries.size(), 4U);
-  ASSERT_TARGET_ENTRY(target_entries[0], R::target::integer::int1,
-                      Res_value::TYPE_DYNAMIC_REFERENCE, R::overlay::integer::int1);
-  ASSERT_TARGET_ENTRY(target_entries[1], R::target::string::str1, Res_value::TYPE_DYNAMIC_REFERENCE,
-                      R::overlay::string::str1);
-  ASSERT_TARGET_ENTRY(target_entries[2], R::target::string::str3, Res_value::TYPE_DYNAMIC_REFERENCE,
-                      R::overlay::string::str3);
-  ASSERT_TARGET_ENTRY(target_entries[3], R::target::string::str4, Res_value::TYPE_DYNAMIC_REFERENCE,
-                      R::overlay::string::str4);
+  ASSERT_TARGET_ENTRY(target_entries[0], R::target::integer::int1, R::overlay::integer::int1);
+  ASSERT_TARGET_ENTRY(target_entries[1], R::target::string::str1, R::overlay::string::str1);
+  ASSERT_TARGET_ENTRY(target_entries[2], R::target::string::str3, R::overlay::string::str3);
+  ASSERT_TARGET_ENTRY(target_entries[3], R::target::string::str4, R::overlay::string::str4);
+
+  const auto& target_inline_entries = data->GetTargetInlineEntries();
+  ASSERT_EQ(target_inline_entries.size(), 0U);
 
   const auto& overlay_entries = data->GetOverlayEntries();
   ASSERT_EQ(target_entries.size(), 4U);
@@ -286,13 +296,13 @@
   const auto& target_entries = data->GetTargetEntries();
   ASSERT_EQ(target_entries.size(), 4U);
   ASSERT_TARGET_ENTRY(target_entries[0], R::target::integer::int1,
-                      Res_value::TYPE_DYNAMIC_REFERENCE, R::overlay_shared::integer::int1);
-  ASSERT_TARGET_ENTRY(target_entries[1], R::target::string::str1, Res_value::TYPE_DYNAMIC_REFERENCE,
-                      R::overlay_shared::string::str1);
-  ASSERT_TARGET_ENTRY(target_entries[2], R::target::string::str3, Res_value::TYPE_DYNAMIC_REFERENCE,
-                      R::overlay_shared::string::str3);
-  ASSERT_TARGET_ENTRY(target_entries[3], R::target::string::str4, Res_value::TYPE_DYNAMIC_REFERENCE,
-                      R::overlay_shared::string::str4);
+                      R::overlay_shared::integer::int1);
+  ASSERT_TARGET_ENTRY(target_entries[1], R::target::string::str1, R::overlay_shared::string::str1);
+  ASSERT_TARGET_ENTRY(target_entries[2], R::target::string::str3, R::overlay_shared::string::str3);
+  ASSERT_TARGET_ENTRY(target_entries[3], R::target::string::str4, R::overlay_shared::string::str4);
+
+  const auto& target_inline_entries = data->GetTargetInlineEntries();
+  ASSERT_EQ(target_inline_entries.size(), 0U);
 
   const auto& overlay_entries = data->GetOverlayEntries();
   ASSERT_EQ(target_entries.size(), 4U);
@@ -320,10 +330,12 @@
 
   const auto& target_entries = data->GetTargetEntries();
   ASSERT_EQ(target_entries.size(), 2U);
-  ASSERT_TARGET_ENTRY(target_entries[0], R::target::string::str1, Res_value::TYPE_REFERENCE,
+  ASSERT_TARGET_ENTRY(target_entries[0], R::target::string::str1,
                       0x0104000a);  // -> android:string/ok
-  ASSERT_TARGET_ENTRY(target_entries[1], R::target::string::str3, Res_value::TYPE_DYNAMIC_REFERENCE,
-                      R::overlay::string::str3);
+  ASSERT_TARGET_ENTRY(target_entries[1], R::target::string::str3, R::overlay::string::str3);
+
+  const auto& target_inline_entries = data->GetTargetInlineEntries();
+  ASSERT_EQ(target_inline_entries.size(), 0U);
 
   const auto& overlay_entries = data->GetOverlayEntries();
   ASSERT_EQ(overlay_entries.size(), 1U);
@@ -342,13 +354,17 @@
   ASSERT_TRUE(idmap_data) << idmap_data.GetErrorMessage();
   auto& data = *idmap_data;
 
-  constexpr size_t overlay_string_pool_size = 8U;
   const auto& target_entries = data->GetTargetEntries();
-  ASSERT_EQ(target_entries.size(), 2U);
-  ASSERT_TARGET_ENTRY(target_entries[0], R::target::integer::int1, Res_value::TYPE_INT_DEC,
-                      73U);  // -> 73
-  ASSERT_TARGET_ENTRY(target_entries[1], R::target::string::str1, Res_value::TYPE_STRING,
-                      overlay_string_pool_size + 0U);  // -> "Hello World"
+  ASSERT_EQ(target_entries.size(), 0U);
+
+  constexpr size_t overlay_string_pool_size = 8U;
+  const auto& target_inline_entries = data->GetTargetInlineEntries();
+  ASSERT_EQ(target_inline_entries.size(), 2U);
+  ASSERT_TARGET_INLINE_ENTRY(target_inline_entries[0], R::target::integer::int1,
+                             Res_value::TYPE_INT_DEC, 73U);  // -> 73
+  ASSERT_TARGET_INLINE_ENTRY(target_inline_entries[1], R::target::string::str1,
+                             Res_value::TYPE_STRING,
+                             overlay_string_pool_size + 0U);  // -> "Hello World"
 
   const auto& overlay_entries = data->GetOverlayEntries();
   ASSERT_EQ(overlay_entries.size(), 0U);
@@ -479,9 +495,9 @@
   ASSERT_FALSE(bad_enforce_header->IsUpToDate(target_apk_path.c_str(), overlay_apk_path.c_str(),
                                               PolicyFlags::PUBLIC, /* enforce_overlayable */ true));
 
-  // target path: bytes (0x15, 0x114)
+  // target path: bytes (0x18, 0x117)
   std::string bad_target_path_string(stream.str());
-  bad_target_path_string[0x15] = '\0';
+  bad_target_path_string[0x18] = '\0';
   std::stringstream bad_target_path_stream(bad_target_path_string);
   std::unique_ptr<const IdmapHeader> bad_target_path_header =
       IdmapHeader::FromBinaryStream(bad_target_path_stream);
@@ -490,9 +506,9 @@
   ASSERT_FALSE(bad_magic_header->IsUpToDate(target_apk_path.c_str(), overlay_apk_path.c_str(),
                                             PolicyFlags::PUBLIC, /* enforce_overlayable */ true));
 
-  // overlay path: bytes (0x115, 0x214)
+  // overlay path: bytes (0x118, 0x217)
   std::string bad_overlay_path_string(stream.str());
-  bad_overlay_path_string[0x115] = '\0';
+  bad_overlay_path_string[0x118] = '\0';
   std::stringstream bad_overlay_path_stream(bad_overlay_path_string);
   std::unique_ptr<const IdmapHeader> bad_overlay_path_header =
       IdmapHeader::FromBinaryStream(bad_overlay_path_stream);
diff --git a/cmds/idmap2/tests/PrettyPrintVisitorTests.cpp b/cmds/idmap2/tests/PrettyPrintVisitorTests.cpp
index 9a10079..d30fbfc 100644
--- a/cmds/idmap2/tests/PrettyPrintVisitorTests.cpp
+++ b/cmds/idmap2/tests/PrettyPrintVisitorTests.cpp
@@ -56,7 +56,8 @@
 
   ASSERT_NE(stream.str().find("target apk path  : "), std::string::npos);
   ASSERT_NE(stream.str().find("overlay apk path : "), std::string::npos);
-  ASSERT_NE(stream.str().find(R::target::integer::literal::int1 + " -> 0x7f010000 integer/int1\n"),
+  ASSERT_NE(stream.str().find(R::target::integer::literal::int1 +
+                              " -> 0x7f010000 (integer/int1 -> integer/int1)\n"),
             std::string::npos);
 }
 
@@ -75,7 +76,7 @@
 
   ASSERT_NE(stream.str().find("target apk path  : "), std::string::npos);
   ASSERT_NE(stream.str().find("overlay apk path : "), std::string::npos);
-  ASSERT_NE(stream.str().find("0x7f020000 -> 0x7f020000\n"), std::string::npos);
+  ASSERT_NE(stream.str().find("0x7f020000 -> 0x7f020000 (\?\?\? -> \?\?\?)\n"), std::string::npos);
 }
 
 }  // namespace android::idmap2
diff --git a/cmds/idmap2/tests/R.h b/cmds/idmap2/tests/R.h
index aed263a..89b4346 100644
--- a/cmds/idmap2/tests/R.h
+++ b/cmds/idmap2/tests/R.h
@@ -41,16 +41,17 @@
     constexpr ResourceId not_overlayable = 0x7f020003;
     constexpr ResourceId other = 0x7f020004;
     constexpr ResourceId policy_actor = 0x7f020005;
-    constexpr ResourceId policy_odm = 0x7f020006;
-    constexpr ResourceId policy_oem = 0x7f020007;
-    constexpr ResourceId policy_product = 0x7f020008;
-    constexpr ResourceId policy_public = 0x7f020009;
-    constexpr ResourceId policy_signature = 0x7f02000a;
-    constexpr ResourceId policy_system = 0x7f02000b;
-    constexpr ResourceId policy_system_vendor = 0x7f02000c;
-    constexpr ResourceId str1 = 0x7f02000d;
-    constexpr ResourceId str3 = 0x7f02000f;
-    constexpr ResourceId str4 = 0x7f020010;
+    constexpr ResourceId policy_config_signature = 0x7f020006;
+    constexpr ResourceId policy_odm = 0x7f020007;
+    constexpr ResourceId policy_oem = 0x7f020008;
+    constexpr ResourceId policy_product = 0x7f020009;
+    constexpr ResourceId policy_public = 0x7f02000a;
+    constexpr ResourceId policy_signature = 0x7f02000b;
+    constexpr ResourceId policy_system = 0x7f02000c;
+    constexpr ResourceId policy_system_vendor = 0x7f02000d;
+    constexpr ResourceId str1 = 0x7f02000e;
+    constexpr ResourceId str3 = 0x7f020010;
+    constexpr ResourceId str4 = 0x7f020011;
 
     namespace literal {
       inline const std::string str1 = hexify(R::target::string::str1);
@@ -92,14 +93,15 @@
   constexpr ResourceId not_overlayable = 0x7f010000;
   constexpr ResourceId other = 0x7f010001;
   constexpr ResourceId policy_actor = 0x7f010002;
-  constexpr ResourceId policy_odm = 0x7f010003;
-  constexpr ResourceId policy_oem = 0x7f010004;
-  constexpr ResourceId policy_product = 0x7f010005;
-  constexpr ResourceId policy_public = 0x7f010006;
-  constexpr ResourceId policy_signature = 0x7f010007;
-  constexpr ResourceId policy_system = 0x7f010008;
-  constexpr ResourceId policy_system_vendor = 0x7f010009;
-};
+  constexpr ResourceId policy_config_signature = 0x7f010003;
+  constexpr ResourceId policy_odm = 0x7f010004;
+  constexpr ResourceId policy_oem = 0x7f010005;
+  constexpr ResourceId policy_product = 0x7f010006;
+  constexpr ResourceId policy_public = 0x7f010007;
+  constexpr ResourceId policy_signature = 0x7f010008;
+  constexpr ResourceId policy_system = 0x7f010009;
+  constexpr ResourceId policy_system_vendor = 0x7f01000a;
+}
 // clang-format on
 
 }  // namespace android::idmap2
diff --git a/cmds/idmap2/tests/RawPrintVisitorTests.cpp b/cmds/idmap2/tests/RawPrintVisitorTests.cpp
index b268d5a..95bd9473 100644
--- a/cmds/idmap2/tests/RawPrintVisitorTests.cpp
+++ b/cmds/idmap2/tests/RawPrintVisitorTests.cpp
@@ -65,7 +65,7 @@
   (*idmap)->accept(&visitor);
 
   ASSERT_CONTAINS_REGEX(ADDRESS "504d4449  magic\n", stream.str());
-  ASSERT_CONTAINS_REGEX(ADDRESS "00000004  version\n", stream.str());
+  ASSERT_CONTAINS_REGEX(ADDRESS "00000005  version\n", stream.str());
   ASSERT_CONTAINS_REGEX(
       StringPrintf(ADDRESS "%s  target crc\n", android::idmap2::TestConstants::TARGET_CRC_STRING),
       stream.str());
@@ -73,19 +73,19 @@
       StringPrintf(ADDRESS "%s  overlay crc\n", android::idmap2::TestConstants::OVERLAY_CRC_STRING),
       stream.str());
   ASSERT_CONTAINS_REGEX(ADDRESS "00000001  fulfilled policies: public\n", stream.str());
-  ASSERT_CONTAINS_REGEX(ADDRESS "      01  enforce overlayable\n", stream.str());
+  ASSERT_CONTAINS_REGEX(ADDRESS "00000001  enforce overlayable\n", stream.str());
   ASSERT_CONTAINS_REGEX(ADDRESS "      7f  target package id\n", stream.str());
   ASSERT_CONTAINS_REGEX(ADDRESS "      7f  overlay package id\n", stream.str());
   ASSERT_CONTAINS_REGEX(ADDRESS "00000004  target entry count\n", stream.str());
   ASSERT_CONTAINS_REGEX(ADDRESS "00000004  overlay entry count\n", stream.str());
   ASSERT_CONTAINS_REGEX(ADDRESS "00000004  overlay entry count\n", stream.str());
   ASSERT_CONTAINS_REGEX(ADDRESS "00000008  string pool index offset\n", stream.str());
-  ASSERT_CONTAINS_REGEX(ADDRESS "000000b4  string pool byte length\n", stream.str());
   ASSERT_CONTAINS_REGEX(ADDRESS "7f010000  target id: integer/int1\n", stream.str());
-  ASSERT_CONTAINS_REGEX(ADDRESS "      07  type: reference \\(dynamic\\)\n", stream.str());
-  ASSERT_CONTAINS_REGEX(ADDRESS "7f010000  value: integer/int1\n", stream.str());
+  ASSERT_CONTAINS_REGEX(ADDRESS "7f010000  overlay id: integer/int1\n", stream.str());
   ASSERT_CONTAINS_REGEX(ADDRESS "7f010000  overlay id: integer/int1\n", stream.str());
   ASSERT_CONTAINS_REGEX(ADDRESS "7f010000  target id: integer/int1\n", stream.str());
+  ASSERT_CONTAINS_REGEX(ADDRESS "000000b4  string pool size\n", stream.str());
+  ASSERT_CONTAINS_REGEX("000002bc: ........  string pool: ...\n", stream.str());
 }
 
 TEST(RawPrintVisitorTests, CreateRawPrintVisitorWithoutAccessToApks) {
@@ -102,22 +102,26 @@
   (*idmap)->accept(&visitor);
 
   ASSERT_CONTAINS_REGEX(ADDRESS "504d4449  magic\n", stream.str());
-  ASSERT_CONTAINS_REGEX(ADDRESS "00000004  version\n", stream.str());
+  ASSERT_CONTAINS_REGEX(ADDRESS "00000005  version\n", stream.str());
   ASSERT_CONTAINS_REGEX(ADDRESS "00001234  target crc\n", stream.str());
   ASSERT_CONTAINS_REGEX(ADDRESS "00005678  overlay crc\n", stream.str());
   ASSERT_CONTAINS_REGEX(ADDRESS "00000011  fulfilled policies: public|signature\n", stream.str());
-  ASSERT_CONTAINS_REGEX(ADDRESS "      01  enforce overlayable\n", stream.str());
+  ASSERT_CONTAINS_REGEX(ADDRESS "00000001  enforce overlayable\n", stream.str());
   ASSERT_CONTAINS_REGEX(ADDRESS "      7f  target package id\n", stream.str());
   ASSERT_CONTAINS_REGEX(ADDRESS "      7f  overlay package id\n", stream.str());
   ASSERT_CONTAINS_REGEX(ADDRESS "00000003  target entry count\n", stream.str());
+  ASSERT_CONTAINS_REGEX(ADDRESS "00000001  target inline entry count\n", stream.str());
   ASSERT_CONTAINS_REGEX(ADDRESS "00000003  overlay entry count\n", stream.str());
   ASSERT_CONTAINS_REGEX(ADDRESS "00000000  string pool index offset\n", stream.str());
-  ASSERT_CONTAINS_REGEX(ADDRESS "00000000  string pool byte length\n", stream.str());
   ASSERT_CONTAINS_REGEX(ADDRESS "7f020000  target id\n", stream.str());
-  ASSERT_CONTAINS_REGEX(ADDRESS "      01  type: reference\n", stream.str());
-  ASSERT_CONTAINS_REGEX(ADDRESS "7f020000  value\n", stream.str());
   ASSERT_CONTAINS_REGEX(ADDRESS "7f020000  overlay id\n", stream.str());
   ASSERT_CONTAINS_REGEX(ADDRESS "7f020000  target id\n", stream.str());
+  ASSERT_CONTAINS_REGEX(ADDRESS "      11  type: integer\n", stream.str());
+  ASSERT_CONTAINS_REGEX(ADDRESS "12345678  data\n", stream.str());
+  ASSERT_CONTAINS_REGEX(ADDRESS "7f020000  overlay id\n", stream.str());
+  ASSERT_CONTAINS_REGEX(ADDRESS "7f030002  target id\n", stream.str());
+  ASSERT_CONTAINS_REGEX(ADDRESS "00000004  string pool size\n", stream.str());
+  ASSERT_CONTAINS_REGEX("00000278: ........  string pool: ...\n", stream.str());
 }
 
 }  // namespace android::idmap2
diff --git a/cmds/idmap2/tests/ResourceMappingTests.cpp b/cmds/idmap2/tests/ResourceMappingTests.cpp
index de039f4..185e929 100644
--- a/cmds/idmap2/tests/ResourceMappingTests.cpp
+++ b/cmds/idmap2/tests/ResourceMappingTests.cpp
@@ -77,30 +77,61 @@
                                 fulfilled_policies, enforce_overlayable);
 }
 
-Result<Unit> MappingExists(const ResourceMapping& mapping, const ResourceId& target_resource,
-                           const uint8_t type, const uint32_t value, bool rewrite) {
+Result<Unit> MappingExists(const ResourceMapping& mapping, ResourceId target_resource,
+                           ResourceId overlay_resource, bool rewrite) {
   auto target_map = mapping.GetTargetToOverlayMap();
   auto entry_map = target_map.find(target_resource);
   if (entry_map == target_map.end()) {
     return Error("Failed to find mapping for target resource");
   }
 
-  if (entry_map->second.data_type != type) {
-    return Error(R"(Expected type: "0x%02x" Actual type: "0x%02x")", type,
-                 entry_map->second.data_type);
+  auto actual_overlay_resource = std::get_if<ResourceId>(&entry_map->second);
+  if (actual_overlay_resource == nullptr) {
+    return Error("Target resource is not mapped to an overlay resource id");
   }
 
-  if (entry_map->second.data_value != value) {
-    return Error(R"(Expected value: "0x%08x" Actual value: "0x%08x")", type,
-                 entry_map->second.data_value);
+  if (*actual_overlay_resource != overlay_resource) {
+    return Error(R"(Expected id: "0x%02x" Actual id: "0x%02x")", overlay_resource,
+                 *actual_overlay_resource);
   }
 
   auto overlay_map = mapping.GetOverlayToTargetMap();
-  auto overlay_iter = overlay_map.find(entry_map->second.data_value);
+  auto overlay_iter = overlay_map.find(overlay_resource);
   if ((overlay_iter != overlay_map.end()) != rewrite) {
     return Error(R"(Expected rewriting: "%s")", rewrite ? "true" : "false");
   }
 
+  if (rewrite && overlay_iter->second != target_resource) {
+    return Error(R"(Expected rewrite id: "0x%02x" Actual id: "0x%02x")", target_resource,
+                 overlay_iter->second);
+  }
+
+  return Result<Unit>({});
+}
+
+Result<Unit> MappingExists(const ResourceMapping& mapping, const ResourceId& target_resource,
+                           const uint8_t type, const uint32_t value) {
+  auto target_map = mapping.GetTargetToOverlayMap();
+  auto entry_map = target_map.find(target_resource);
+  if (entry_map == target_map.end()) {
+    return Error("Failed to find mapping for target resource");
+  }
+
+  auto actual_overlay_value = std::get_if<TargetValue>(&entry_map->second);
+  if (actual_overlay_value == nullptr) {
+    return Error("Target resource is not mapped to an inline value");
+  }
+
+  if (actual_overlay_value->data_type != type) {
+    return Error(R"(Expected type: "0x%02x" Actual type: "0x%02x")", type,
+                 actual_overlay_value->data_type);
+  }
+
+  if (actual_overlay_value->data_value != value) {
+    return Error(R"(Expected value: "0x%08x" Actual value: "0x%08x")", type,
+                 actual_overlay_value->data_value);
+  }
+
   return Result<Unit>({});
 }
 
@@ -116,14 +147,14 @@
   ASSERT_TRUE(resources) << resources.GetErrorMessage();
   auto& res = *resources;
   ASSERT_EQ(res.GetTargetToOverlayMap().size(), 4U);
-  ASSERT_RESULT(MappingExists(res, R::target::integer::int1, Res_value::TYPE_REFERENCE,
-                              R::overlay::integer::int1, false /* rewrite */));
-  ASSERT_RESULT(MappingExists(res, R::target::string::str1, Res_value::TYPE_REFERENCE,
-                              R::overlay::string::str1, false /* rewrite */));
-  ASSERT_RESULT(MappingExists(res, R::target::string::str3, Res_value::TYPE_REFERENCE,
-                              R::overlay::string::str3, false /* rewrite */));
-  ASSERT_RESULT(MappingExists(res, R::target::string::str4, Res_value::TYPE_REFERENCE,
-                              R::overlay::string::str4, false /* rewrite */));
+  ASSERT_RESULT(
+      MappingExists(res, R::target::integer::int1, R::overlay::integer::int1, false /* rewrite */));
+  ASSERT_RESULT(
+      MappingExists(res, R::target::string::str1, R::overlay::string::str1, false /* rewrite */));
+  ASSERT_RESULT(
+      MappingExists(res, R::target::string::str3, R::overlay::string::str3, false /* rewrite */));
+  ASSERT_RESULT(
+      MappingExists(res, R::target::string::str4, R::overlay::string::str4, false /* rewrite */));
 }
 
 TEST(ResourceMappingTests, ResourcesFromApkAssetsNonMatchingNames) {
@@ -138,12 +169,12 @@
   ASSERT_TRUE(resources) << resources.GetErrorMessage();
   auto& res = *resources;
   ASSERT_EQ(res.GetTargetToOverlayMap().size(), 3U);
-  ASSERT_RESULT(MappingExists(res, R::target::string::str1, Res_value::TYPE_DYNAMIC_REFERENCE,
-                              R::overlay::string::str4, true /* rewrite */));
-  ASSERT_RESULT(MappingExists(res, R::target::string::str3, Res_value::TYPE_DYNAMIC_REFERENCE,
-                              R::overlay::string::str1, true /* rewrite */));
-  ASSERT_RESULT(MappingExists(res, R::target::string::str4, Res_value::TYPE_DYNAMIC_REFERENCE,
-                              R::overlay::string::str3, true /* rewrite */));
+  ASSERT_RESULT(
+      MappingExists(res, R::target::string::str1, R::overlay::string::str4, true /* rewrite */));
+  ASSERT_RESULT(
+      MappingExists(res, R::target::string::str3, R::overlay::string::str1, true /* rewrite */));
+  ASSERT_RESULT(
+      MappingExists(res, R::target::string::str4, R::overlay::string::str3, true /* rewrite */));
 }
 
 TEST(ResourceMappingTests, DoNotRewriteNonOverlayResourceId) {
@@ -159,10 +190,9 @@
   auto& res = *resources;
   ASSERT_EQ(res.GetTargetToOverlayMap().size(), 2U);
   ASSERT_EQ(res.GetOverlayToTargetMap().size(), 1U);
-  ASSERT_RESULT(MappingExists(res, R::target::string::str1, Res_value::TYPE_REFERENCE, 0x0104000a,
+  ASSERT_RESULT(MappingExists(res, R::target::string::str1, 0x0104000a,
                               false /* rewrite */));  // -> android:string/ok
-  ASSERT_RESULT(MappingExists(res, R::target::string::str3, Res_value::TYPE_DYNAMIC_REFERENCE,
-                              0x7f020001, true /* rewrite */));
+  ASSERT_RESULT(MappingExists(res, R::target::string::str3, 0x7f020001, true /* rewrite */));
 }
 
 TEST(ResourceMappingTests, InlineResources) {
@@ -180,10 +210,8 @@
   ASSERT_EQ(res.GetTargetToOverlayMap().size(), 2U);
   ASSERT_EQ(res.GetOverlayToTargetMap().size(), 0U);
   ASSERT_RESULT(MappingExists(res, R::target::string::str1, Res_value::TYPE_STRING,
-                              overlay_string_pool_size + 0U,
-                              false /* rewrite */));  // -> "Hello World"
-  ASSERT_RESULT(MappingExists(res, R::target::integer::int1, Res_value::TYPE_INT_DEC, 73U,
-                              false /* rewrite */));  // -> 73
+                              overlay_string_pool_size + 0U));  // -> "Hello World"
+  ASSERT_RESULT(MappingExists(res, R::target::integer::int1, Res_value::TYPE_INT_DEC, 73U));
 }
 
 TEST(ResourceMappingTests, CreateIdmapFromApkAssetsPolicySystemPublic) {
@@ -195,13 +223,13 @@
   ASSERT_TRUE(resources) << resources.GetErrorMessage();
   auto& res = *resources;
   ASSERT_EQ(res.GetTargetToOverlayMap().size(), 3U);
-  ASSERT_RESULT(MappingExists(res, R::target::string::policy_public, Res_value::TYPE_REFERENCE,
+  ASSERT_RESULT(MappingExists(res, R::target::string::policy_public,
                               R::system_overlay::string::policy_public, false /* rewrite */));
-  ASSERT_RESULT(MappingExists(res, R::target::string::policy_system, Res_value::TYPE_REFERENCE,
+  ASSERT_RESULT(MappingExists(res, R::target::string::policy_system,
                               R::system_overlay::string::policy_system, false /* rewrite */));
-  ASSERT_RESULT(
-      MappingExists(res, R::target::string::policy_system_vendor, Res_value::TYPE_REFERENCE,
-                    R::system_overlay::string::policy_system_vendor, false /* rewrite */));
+  ASSERT_RESULT(MappingExists(res, R::target::string::policy_system_vendor,
+                              R::system_overlay::string::policy_system_vendor,
+                              false /* rewrite */));
 }
 
 // Resources that are not declared as overlayable and resources that a protected by policies the
@@ -215,15 +243,15 @@
   ASSERT_TRUE(resources) << resources.GetErrorMessage();
   auto& res = *resources;
   ASSERT_EQ(res.GetTargetToOverlayMap().size(), 3U);
-  ASSERT_RESULT(MappingExists(res, R::target::string::policy_public, Res_value::TYPE_REFERENCE,
+  ASSERT_RESULT(MappingExists(res, R::target::string::policy_public,
                               R::system_overlay_invalid::string::policy_public,
                               false /* rewrite */));
-  ASSERT_RESULT(MappingExists(res, R::target::string::policy_system, Res_value::TYPE_REFERENCE,
+  ASSERT_RESULT(MappingExists(res, R::target::string::policy_system,
                               R::system_overlay_invalid::string::policy_system,
                               false /* rewrite */));
-  ASSERT_RESULT(
-      MappingExists(res, R::target::string::policy_system_vendor, Res_value::TYPE_REFERENCE,
-                    R::system_overlay_invalid::string::policy_system_vendor, false /* rewrite */));
+  ASSERT_RESULT(MappingExists(res, R::target::string::policy_system_vendor,
+                              R::system_overlay_invalid::string::policy_system_vendor,
+                              false /* rewrite */));
 }
 
 // Resources that are not declared as overlayable and resources that a protected by policies the
@@ -237,34 +265,37 @@
 
   ASSERT_TRUE(resources) << resources.GetErrorMessage();
   auto& res = *resources;
-  ASSERT_EQ(res.GetTargetToOverlayMap().size(), 10U);
-  ASSERT_RESULT(MappingExists(res, R::target::string::not_overlayable, Res_value::TYPE_REFERENCE,
+  ASSERT_EQ(res.GetTargetToOverlayMap().size(), 11U);
+  ASSERT_RESULT(MappingExists(res, R::target::string::not_overlayable,
                               R::system_overlay_invalid::string::not_overlayable,
                               false /* rewrite */));
-  ASSERT_RESULT(MappingExists(res, R::target::string::other, Res_value::TYPE_REFERENCE,
+  ASSERT_RESULT(MappingExists(res, R::target::string::other,
                               R::system_overlay_invalid::string::other, false /* rewrite */));
-  ASSERT_RESULT(MappingExists(res, R::target::string::policy_actor, Res_value::TYPE_REFERENCE,
+  ASSERT_RESULT(MappingExists(res, R::target::string::policy_actor,
                               R::system_overlay_invalid::string::policy_actor,
                               false /* rewrite */));
-  ASSERT_RESULT(MappingExists(res, R::target::string::policy_odm, Res_value::TYPE_REFERENCE,
+  ASSERT_RESULT(MappingExists(res, R::target::string::policy_odm,
                               R::system_overlay_invalid::string::policy_odm, false /* rewrite */));
-  ASSERT_RESULT(MappingExists(res, R::target::string::policy_oem, Res_value::TYPE_REFERENCE,
+  ASSERT_RESULT(MappingExists(res, R::target::string::policy_oem,
                               R::system_overlay_invalid::string::policy_oem, false /* rewrite */));
-  ASSERT_RESULT(MappingExists(res, R::target::string::policy_product, Res_value::TYPE_REFERENCE,
+  ASSERT_RESULT(MappingExists(res, R::target::string::policy_product,
                               R::system_overlay_invalid::string::policy_product,
                               false /* rewrite */));
-  ASSERT_RESULT(MappingExists(res, R::target::string::policy_public, Res_value::TYPE_REFERENCE,
+  ASSERT_RESULT(MappingExists(res, R::target::string::policy_public,
                               R::system_overlay_invalid::string::policy_public,
                               false /* rewrite */));
-  ASSERT_RESULT(MappingExists(res, R::target::string::policy_signature, Res_value::TYPE_REFERENCE,
+  ASSERT_RESULT(MappingExists(res, R::target::string::policy_config_signature,
+                              R::system_overlay_invalid::string::policy_config_signature,
+                              false /* rewrite */));
+  ASSERT_RESULT(MappingExists(res, R::target::string::policy_signature,
                               R::system_overlay_invalid::string::policy_signature,
                               false /* rewrite */));
-  ASSERT_RESULT(MappingExists(res, R::target::string::policy_system, Res_value::TYPE_REFERENCE,
+  ASSERT_RESULT(MappingExists(res, R::target::string::policy_system,
                               R::system_overlay_invalid::string::policy_system,
                               false /* rewrite */));
-  ASSERT_RESULT(
-      MappingExists(res, R::target::string::policy_system_vendor, Res_value::TYPE_REFERENCE,
-                    R::system_overlay_invalid::string::policy_system_vendor, false /* rewrite */));
+  ASSERT_RESULT(MappingExists(res, R::target::string::policy_system_vendor,
+                              R::system_overlay_invalid::string::policy_system_vendor,
+                              false /* rewrite */));
 }
 
 // Overlays that do not target an <overlayable> tag can overlay resources defined within any
@@ -277,14 +308,14 @@
   ASSERT_TRUE(resources) << resources.GetErrorMessage();
   auto& res = *resources;
   ASSERT_EQ(res.GetTargetToOverlayMap().size(), 4U);
-  ASSERT_RESULT(MappingExists(res, R::target::integer::int1, Res_value::TYPE_REFERENCE,
-                              R::overlay::integer::int1, false /* rewrite */));
-  ASSERT_RESULT(MappingExists(res, R::target::string::str1, Res_value::TYPE_REFERENCE,
-                              R::overlay::string::str1, false /* rewrite */));
-  ASSERT_RESULT(MappingExists(res, R::target::string::str3, Res_value::TYPE_REFERENCE,
-                              R::overlay::string::str3, false /* rewrite */));
-  ASSERT_RESULT(MappingExists(res, R::target::string::str4, Res_value::TYPE_REFERENCE,
-                              R::overlay::string::str4, false /* rewrite */));
+  ASSERT_RESULT(
+      MappingExists(res, R::target::integer::int1, R::overlay::integer::int1, false /* rewrite */));
+  ASSERT_RESULT(
+      MappingExists(res, R::target::string::str1, R::overlay::string::str1, false /* rewrite */));
+  ASSERT_RESULT(
+      MappingExists(res, R::target::string::str3, R::overlay::string::str3, false /* rewrite */));
+  ASSERT_RESULT(
+      MappingExists(res, R::target::string::str4, R::overlay::string::str4, false /* rewrite */));
 }
 
 // Overlays that are neither pre-installed nor signed with the same signature as the target cannot
@@ -298,8 +329,9 @@
   ASSERT_EQ(resources->GetTargetToOverlayMap().size(), 0U);
 }
 
-// Overlays that are pre-installed or are signed with the same signature as the target can overlay
-// packages that have not defined overlayable resources.
+// Overlays that are pre-installed or are signed with the same signature as the target  or are
+// signed with the same signature as the reference package can overlay packages that have not
+// defined overlayable resources.
 TEST(ResourceMappingTests, ResourcesFromApkAssetsDefaultPolicies) {
   auto CheckEntries = [&](const PolicyBitmask& fulfilled_policies) -> void {
     auto resources = TestGetResourceMapping("/target/target-no-overlayable.apk",
@@ -309,39 +341,43 @@
 
     ASSERT_TRUE(resources) << resources.GetErrorMessage();
     auto& res = *resources;
-    ASSERT_EQ(resources->GetTargetToOverlayMap().size(), 10U);
-    ASSERT_RESULT(MappingExists(res, R::target::string::not_overlayable, Res_value::TYPE_REFERENCE,
+    ASSERT_EQ(resources->GetTargetToOverlayMap().size(), 11U);
+    ASSERT_RESULT(MappingExists(res, R::target::string::not_overlayable,
                                 R::system_overlay_invalid::string::not_overlayable,
                                 false /* rewrite */));
-    ASSERT_RESULT(MappingExists(res, R::target::string::other, Res_value::TYPE_REFERENCE,
+    ASSERT_RESULT(MappingExists(res, R::target::string::other,
                                 R::system_overlay_invalid::string::other, false /* rewrite */));
-    ASSERT_RESULT(MappingExists(res, R::target::string::policy_actor, Res_value::TYPE_REFERENCE,
+    ASSERT_RESULT(MappingExists(res, R::target::string::policy_actor,
                                 R::system_overlay_invalid::string::policy_actor,
                                 false /* rewrite */));
-    ASSERT_RESULT(MappingExists(res, R::target::string::policy_odm, Res_value::TYPE_REFERENCE,
+    ASSERT_RESULT(MappingExists(res, R::target::string::policy_odm,
                                 R::system_overlay_invalid::string::policy_odm,
                                 false /* rewrite */));
-    ASSERT_RESULT(MappingExists(res, R::target::string::policy_oem, Res_value::TYPE_REFERENCE,
+    ASSERT_RESULT(MappingExists(res, R::target::string::policy_oem,
                                 R::system_overlay_invalid::string::policy_oem,
                                 false /* rewrite */));
-    ASSERT_RESULT(MappingExists(res, R::target::string::policy_product, Res_value::TYPE_REFERENCE,
+    ASSERT_RESULT(MappingExists(res, R::target::string::policy_product,
                                 R::system_overlay_invalid::string::policy_product,
                                 false /* rewrite */));
-    ASSERT_RESULT(MappingExists(res, R::target::string::policy_public, Res_value::TYPE_REFERENCE,
+    ASSERT_RESULT(MappingExists(res, R::target::string::policy_public,
                                 R::system_overlay_invalid::string::policy_public,
                                 false /* rewrite */));
-    ASSERT_RESULT(MappingExists(res, R::target::string::policy_signature, Res_value::TYPE_REFERENCE,
+    ASSERT_RESULT(MappingExists(res, R::target::string::policy_config_signature,
+                                R::system_overlay_invalid::string::policy_config_signature,
+                                false /* rewrite */));
+    ASSERT_RESULT(MappingExists(res, R::target::string::policy_signature,
                                 R::system_overlay_invalid::string::policy_signature,
                                 false /* rewrite */));
-    ASSERT_RESULT(MappingExists(res, R::target::string::policy_system, Res_value::TYPE_REFERENCE,
+    ASSERT_RESULT(MappingExists(res, R::target::string::policy_system,
                                 R::system_overlay_invalid::string::policy_system,
                                 false /* rewrite */));
-    ASSERT_RESULT(MappingExists(
-        res, R::target::string::policy_system_vendor, Res_value::TYPE_REFERENCE,
-        R::system_overlay_invalid::string::policy_system_vendor, false /* rewrite */));
+    ASSERT_RESULT(MappingExists(res, R::target::string::policy_system_vendor,
+                                R::system_overlay_invalid::string::policy_system_vendor,
+                                false /* rewrite */));
   };
 
   CheckEntries(PolicyFlags::SIGNATURE);
+  CheckEntries(PolicyFlags::CONFIG_SIGNATURE);
   CheckEntries(PolicyFlags::PRODUCT_PARTITION);
   CheckEntries(PolicyFlags::SYSTEM_PARTITION);
   CheckEntries(PolicyFlags::VENDOR_PARTITION);
diff --git a/cmds/idmap2/tests/TestConstants.h b/cmds/idmap2/tests/TestConstants.h
index 6bc924e..9bbb065 100644
--- a/cmds/idmap2/tests/TestConstants.h
+++ b/cmds/idmap2/tests/TestConstants.h
@@ -19,11 +19,11 @@
 
 namespace android::idmap2::TestConstants {
 
-constexpr const auto TARGET_CRC = 0x41c60c8c;
-constexpr const auto TARGET_CRC_STRING = "41c60c8c";
+constexpr const auto TARGET_CRC = 0x7c2d4719;
+constexpr const auto TARGET_CRC_STRING = "7c2d4719";
 
-constexpr const auto OVERLAY_CRC = 0xc054fb26;
-constexpr const auto OVERLAY_CRC_STRING = "c054fb26";
+constexpr const auto OVERLAY_CRC = 0x5afff726;
+constexpr const auto OVERLAY_CRC_STRING = "5afff726";
 
 }  // namespace android::idmap2::TestConstants
 
diff --git a/cmds/idmap2/tests/TestHelpers.h b/cmds/idmap2/tests/TestHelpers.h
index b599dcb..d0a8e3d 100644
--- a/cmds/idmap2/tests/TestHelpers.h
+++ b/cmds/idmap2/tests/TestHelpers.h
@@ -30,7 +30,7 @@
     0x49, 0x44, 0x4d, 0x50,
 
     // 0x4: version
-    0x04, 0x00, 0x00, 0x00,
+    0x05, 0x00, 0x00, 0x00,
 
     // 0x8: target crc
     0x34, 0x12, 0x00, 0x00,
@@ -42,9 +42,9 @@
     0x11, 0x00, 0x00, 0x00,
 
     // 0x14: enforce overlayable
-    0x01,
+    0x01, 0x00, 0x00, 0x00,
 
-    // 0x15: target path "targetX.apk"
+    // 0x18: target path "targetX.apk"
     0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x58, 0x2e, 0x61, 0x70, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -62,7 +62,7 @@
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
-    // 0x115: overlay path "overlayX.apk"
+    // 0x118: overlay path "overlayX.apk"
     0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x58, 0x2e, 0x61, 0x70, 0x6b, 0x00, 0x00, 0x00, 0x00,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -80,71 +80,89 @@
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
-    // 0x215: debug string
-    // string length, including terminating null
-    0x08, 0x00, 0x00, 0x00,
+    // 0x218: debug string
+    // string length,
+    0x05, 0x00, 0x00, 0x00,
 
-    // string contents "debug\0\0\0" (padded to word alignment)
+    // 0x21c string contents "debug\0\0\0" (padded to word alignment)
     0x64, 0x65, 0x62, 0x75, 0x67, 0x00, 0x00, 0x00,
 
     // DATA HEADER
-    // 0x221: target_package_id
+    // 0x224: target_package_id
     0x7f,
 
-    // 0x222: overlay_package_id
+    // 0x225: overlay_package_id
     0x7f,
 
-    // 0x223: target_entry_count
+    // 0x226: padding
+    0x00, 0x00,
+
+    // 0x228: target_entry_count
     0x03, 0x00, 0x00, 0x00,
 
-    // 0x227: overlay_entry_count
+    // 0x22c: target_inline_entry_count
+    0x01, 0x00, 0x00, 0x00,
+
+    // 0x230: overlay_entry_count
     0x03, 0x00, 0x00, 0x00,
 
-    // 0x22b: string_pool_offset
-    0x00, 0x00, 0x00, 0x00,
-
-    // 0x22f: string_pool_byte_length
+    // 0x234: string_pool_offset
     0x00, 0x00, 0x00, 0x00,
 
     // TARGET ENTRIES
-    // 0x233: 0x7f020000
+    // 0x238: target id (0x7f020000)
     0x00, 0x00, 0x02, 0x7f,
 
-    // 0x237: TYPE_REFERENCE
-    0x01,
-
-    // 0x238: 0x7f020000
+    // 0x23c: overlay_id (0x7f020000)
     0x00, 0x00, 0x02, 0x7f,
 
-    // 0x23c: 0x7f030000
+    // 0x240: target id (0x7f030000)
     0x00, 0x00, 0x03, 0x7f,
 
-    // 0x240: TYPE_REFERENCE
-    0x01,
-
-    // 0x241: 0x7f030000
+    // 0x244: overlay_id (0x7f030000)
     0x00, 0x00, 0x03, 0x7f,
 
-    // 0x245: 0x7f030002
+    // 0x248: target id (0x7f030002)
     0x02, 0x00, 0x03, 0x7f,
 
-    // 0x249: TYPE_REFERENCE
-    0x01,
-
-    // 0x24a: 0x7f030001
+    // 0x24c: overlay_id (0x7f030001)
     0x01, 0x00, 0x03, 0x7f,
 
+    // INLINE TARGET ENTRIES
+
+    // 0x250: target_id
+    0x00, 0x00, 0x04, 0x7f,
+
+    // 0x254: Res_value::size (value ignored by idmap)
+    0x08, 0x00,
+
+    // 0x256: Res_value::res0 (value ignored by idmap)
+    0x00,
+
+    // 0x257: Res_value::dataType (TYPE_INT_HEX)
+    0x11,
+
+    // 0x258: Res_value::data
+    0x78, 0x56, 0x34, 0x12,
+
     // OVERLAY ENTRIES
-    // 0x24e: 0x7f020000 -> 0x7f020000
+    // 0x25c: 0x7f020000 -> 0x7f020000
     0x00, 0x00, 0x02, 0x7f, 0x00, 0x00, 0x02, 0x7f,
 
-    // 0x256: 0x7f030000 -> 0x7f030000
+    // 0x264: 0x7f030000 -> 0x7f030000
     0x00, 0x00, 0x03, 0x7f, 0x00, 0x00, 0x03, 0x7f,
 
-    // 0x25e: 0x7f030001 -> 0x7f030002
-    0x01, 0x00, 0x03, 0x7f, 0x02, 0x00, 0x03, 0x7f};
+    // 0x26c: 0x7f030001 -> 0x7f030002
+    0x01, 0x00, 0x03, 0x7f, 0x02, 0x00, 0x03, 0x7f,
 
-const unsigned int idmap_raw_data_len = 0x266;
+    // 0x274: string pool
+    // string length,
+    0x04, 0x00, 0x00, 0x00,
+
+    // 0x278 string contents "test" (padded to word alignment)
+    0x74, 0x65, 0x73, 0x74};
+
+const unsigned int idmap_raw_data_len = 0x27c;
 
 std::string GetTestDataPath();
 
diff --git a/cmds/idmap2/tests/data/overlay/overlay-no-name-static.apk b/cmds/idmap2/tests/data/overlay/overlay-no-name-static.apk
index 7c25985..dab25b1 100644
--- a/cmds/idmap2/tests/data/overlay/overlay-no-name-static.apk
+++ b/cmds/idmap2/tests/data/overlay/overlay-no-name-static.apk
Binary files differ
diff --git a/cmds/idmap2/tests/data/overlay/overlay-no-name.apk b/cmds/idmap2/tests/data/overlay/overlay-no-name.apk
index c75f3e1..c8b95c2 100644
--- a/cmds/idmap2/tests/data/overlay/overlay-no-name.apk
+++ b/cmds/idmap2/tests/data/overlay/overlay-no-name.apk
Binary files differ
diff --git a/cmds/idmap2/tests/data/overlay/overlay-shared.apk b/cmds/idmap2/tests/data/overlay/overlay-shared.apk
index 93dcc82..0a8b737 100644
--- a/cmds/idmap2/tests/data/overlay/overlay-shared.apk
+++ b/cmds/idmap2/tests/data/overlay/overlay-shared.apk
Binary files differ
diff --git a/cmds/idmap2/tests/data/overlay/overlay-static-1.apk b/cmds/idmap2/tests/data/overlay/overlay-static-1.apk
index 5b8a6e4..fd41182 100644
--- a/cmds/idmap2/tests/data/overlay/overlay-static-1.apk
+++ b/cmds/idmap2/tests/data/overlay/overlay-static-1.apk
Binary files differ
diff --git a/cmds/idmap2/tests/data/overlay/overlay-static-2.apk b/cmds/idmap2/tests/data/overlay/overlay-static-2.apk
index 698a1fd..b24765f 100644
--- a/cmds/idmap2/tests/data/overlay/overlay-static-2.apk
+++ b/cmds/idmap2/tests/data/overlay/overlay-static-2.apk
Binary files differ
diff --git a/cmds/idmap2/tests/data/overlay/overlay.apk b/cmds/idmap2/tests/data/overlay/overlay.apk
index 1db303f..870575e 100644
--- a/cmds/idmap2/tests/data/overlay/overlay.apk
+++ b/cmds/idmap2/tests/data/overlay/overlay.apk
Binary files differ
diff --git a/cmds/idmap2/tests/data/signature-overlay/signature-overlay.apk b/cmds/idmap2/tests/data/signature-overlay/signature-overlay.apk
index 51e19de..e0fd204 100644
--- a/cmds/idmap2/tests/data/signature-overlay/signature-overlay.apk
+++ b/cmds/idmap2/tests/data/signature-overlay/signature-overlay.apk
Binary files differ
diff --git a/cmds/idmap2/tests/data/system-overlay-invalid/res/values/values.xml b/cmds/idmap2/tests/data/system-overlay-invalid/res/values/values.xml
index 7119d82..ebaf49c 100644
--- a/cmds/idmap2/tests/data/system-overlay-invalid/res/values/values.xml
+++ b/cmds/idmap2/tests/data/system-overlay-invalid/res/values/values.xml
@@ -26,6 +26,7 @@
     <string name="policy_odm">policy_odm</string>
     <string name="policy_oem">policy_oem</string>
     <string name="policy_actor">policy_actor</string>
+    <string name="policy_config_signature">policy_config_signature</string>
 
     <!-- Requests to overlay a resource that is not declared as overlayable. -->
     <string name="not_overlayable">not_overlayable</string>
diff --git a/cmds/idmap2/tests/data/system-overlay-invalid/system-overlay-invalid.apk b/cmds/idmap2/tests/data/system-overlay-invalid/system-overlay-invalid.apk
index bd99098..a63daf8 100644
--- a/cmds/idmap2/tests/data/system-overlay-invalid/system-overlay-invalid.apk
+++ b/cmds/idmap2/tests/data/system-overlay-invalid/system-overlay-invalid.apk
Binary files differ
diff --git a/cmds/idmap2/tests/data/system-overlay/system-overlay.apk b/cmds/idmap2/tests/data/system-overlay/system-overlay.apk
index a0fba43..90d2803 100644
--- a/cmds/idmap2/tests/data/system-overlay/system-overlay.apk
+++ b/cmds/idmap2/tests/data/system-overlay/system-overlay.apk
Binary files differ
diff --git a/cmds/idmap2/tests/data/target/res/values/overlayable.xml b/cmds/idmap2/tests/data/target/res/values/overlayable.xml
index ad4cd48..57e6c43 100644
--- a/cmds/idmap2/tests/data/target/res/values/overlayable.xml
+++ b/cmds/idmap2/tests/data/target/res/values/overlayable.xml
@@ -45,6 +45,10 @@
         <item type="string" name="policy_actor" />
     </policy>
 
+    <policy type="config_signature">
+        <item type="string" name="policy_config_signature"/>
+    </policy>
+
     <!-- Resources publicly overlayable -->
     <policy type="public">
         <item type="string" name="policy_public" />
diff --git a/cmds/idmap2/tests/data/target/res/values/values.xml b/cmds/idmap2/tests/data/target/res/values/values.xml
index 5230e25..00909a9 100644
--- a/cmds/idmap2/tests/data/target/res/values/values.xml
+++ b/cmds/idmap2/tests/data/target/res/values/values.xml
@@ -37,6 +37,7 @@
     <string name="policy_system">policy_system</string>
     <string name="policy_system_vendor">policy_system_vendor</string>
     <string name="policy_actor">policy_actor</string>
+    <string name="policy_config_signature">policy_config_signature</string>
 
     <string name="other">other</string>
 </resources>
diff --git a/cmds/idmap2/tests/data/target/target-no-overlayable.apk b/cmds/idmap2/tests/data/target/target-no-overlayable.apk
index 58504a7..cc3491d 100644
--- a/cmds/idmap2/tests/data/target/target-no-overlayable.apk
+++ b/cmds/idmap2/tests/data/target/target-no-overlayable.apk
Binary files differ
diff --git a/cmds/idmap2/tests/data/target/target.apk b/cmds/idmap2/tests/data/target/target.apk
index c80e5eb..4a58c5e 100644
--- a/cmds/idmap2/tests/data/target/target.apk
+++ b/cmds/idmap2/tests/data/target/target.apk
Binary files differ
diff --git a/cmds/statsd/Android.bp b/cmds/statsd/Android.bp
index 0617eb6..e1b7c53 100644
--- a/cmds/statsd/Android.bp
+++ b/cmds/statsd/Android.bp
@@ -14,34 +14,6 @@
 // limitations under the License.
 //
 
-// ==========================================================
-// Build the library for use on the host
-// ==========================================================
-cc_library_host_shared {
-    name: "libstats_proto_host",
-    srcs: [
-        "src/atoms.proto",
-        "src/atom_field_options.proto",
-    ],
-
-    shared_libs: [
-        "libplatformprotos",
-    ],
-
-    proto: {
-        type: "full",
-        export_proto_headers: true,
-        include_dirs: [
-            "external/protobuf/src",
-        ],
-    },
-
-    export_shared_lib_headers: [
-        "libplatformprotos",
-    ]
-
-}
-
 cc_defaults {
     name: "statsd_defaults",
 
@@ -275,9 +247,8 @@
         // atom_field_options.proto needs field_options.proto, but that is
         // not included in libprotobuf-cpp-lite, so compile it here.
         ":libprotobuf-internal-protos",
+        ":libstats_internal_protos",
 
-        "src/atom_field_options.proto",
-        "src/atoms.proto",
         "src/shell/shell_data.proto",
         "src/stats_log.proto",
         "tests/AlarmMonitor_test.cpp",
@@ -341,7 +312,10 @@
 
     proto: {
         type: "lite",
-        include_dirs: ["external/protobuf/src"],
+        include_dirs: [
+            "external/protobuf/src",
+            "frameworks/proto_logging/stats",
+        ],
     },
 
 }
@@ -358,6 +332,7 @@
         // atom_field_options.proto needs field_options.proto, but that is
         // not included in libprotobuf-cpp-lite, so compile it here.
         ":libprotobuf-internal-protos",
+        ":libstats_internal_protos",
 
         "benchmark/duration_metric_benchmark.cpp",
         "benchmark/filter_value_benchmark.cpp",
@@ -367,14 +342,15 @@
         "benchmark/main.cpp",
         "benchmark/metric_util.cpp",
         "benchmark/stats_write_benchmark.cpp",
-        "src/atom_field_options.proto",
-        "src/atoms.proto",
         "src/stats_log.proto",
     ],
 
     proto: {
         type: "lite",
-        include_dirs: ["external/protobuf/src"],
+        include_dirs: [
+            "external/protobuf/src",
+            "frameworks/proto_logging/stats",
+        ],
     },
 
     cflags: [
@@ -406,11 +382,14 @@
     sdk_version: "core_current",
     proto: {
         type: "lite",
-        include_dirs: ["external/protobuf/src"],
+        include_dirs: [
+            "external/protobuf/src",
+            "frameworks/proto_logging/stats",
+        ],
     },
 
     srcs: [
-        "src/atoms.proto",
+        ":libstats_atoms_proto",
         "src/shell/shell_config.proto",
         "src/shell/shell_data.proto",
         "src/stats_log.proto",
diff --git a/cmds/statsd/src/StatsLogProcessor.cpp b/cmds/statsd/src/StatsLogProcessor.cpp
index e7b32c5..c10f248 100644
--- a/cmds/statsd/src/StatsLogProcessor.cpp
+++ b/cmds/statsd/src/StatsLogProcessor.cpp
@@ -120,10 +120,9 @@
     }
 }
 
-void StatsLogProcessor::onAnomalyAlarmFired(
+void StatsLogProcessor::processFiredAnomalyAlarmsLocked(
         const int64_t& timestampNs,
         unordered_set<sp<const InternalAlarm>, SpHash<InternalAlarm>> alarmSet) {
-    std::lock_guard<std::mutex> lock(mMetricsMutex);
     for (const auto& itr : mMetricsManagers) {
         itr.second->onAnomalyAlarmFired(timestampNs, alarmSet);
     }
@@ -431,6 +430,20 @@
         return;
     }
 
+    bool fireAlarm = false;
+    {
+        std::lock_guard<std::mutex> anomalyLock(mAnomalyAlarmMutex);
+        if (mNextAnomalyAlarmTime != 0 &&
+            MillisToNano(mNextAnomalyAlarmTime) <= elapsedRealtimeNs) {
+            mNextAnomalyAlarmTime = 0;
+            VLOG("informing anomaly alarm at time %lld", (long long)elapsedRealtimeNs);
+            fireAlarm = true;
+        }
+    }
+    if (fireAlarm) {
+        informAnomalyAlarmFiredLocked(NanoToMillis(elapsedRealtimeNs));
+    }
+
     int64_t curTimeSec = getElapsedRealtimeSec();
     if (curTimeSec - mLastPullerCacheClearTimeSec > StatsdStats::kPullerCacheClearIntervalSec) {
         mPullerManager->ClearPullerCacheIfNecessary(curTimeSec * NS_PER_SEC);
@@ -1092,6 +1105,28 @@
     mOnDiskDataConfigs.insert(key);
 }
 
+void StatsLogProcessor::setAnomalyAlarm(const int64_t elapsedTimeMillis) {
+    std::lock_guard<std::mutex> lock(mAnomalyAlarmMutex);
+    mNextAnomalyAlarmTime = elapsedTimeMillis;
+}
+
+void StatsLogProcessor::cancelAnomalyAlarm() {
+    std::lock_guard<std::mutex> lock(mAnomalyAlarmMutex);
+    mNextAnomalyAlarmTime = 0;
+}
+
+void StatsLogProcessor::informAnomalyAlarmFiredLocked(const int64_t elapsedTimeMillis) {
+    VLOG("StatsService::informAlarmForSubscriberTriggeringFired was called");
+    std::unordered_set<sp<const InternalAlarm>, SpHash<InternalAlarm>> alarmSet =
+            mAnomalyAlarmMonitor->popSoonerThan(static_cast<uint32_t>(elapsedTimeMillis / 1000));
+    if (alarmSet.size() > 0) {
+        VLOG("Found periodic alarm fired.");
+        processFiredAnomalyAlarmsLocked(MillisToNano(elapsedTimeMillis), alarmSet);
+    } else {
+        ALOGW("Cannot find an periodic alarm that fired. Perhaps it was recently cancelled.");
+    }
+}
+
 }  // namespace statsd
 }  // namespace os
 }  // namespace android
diff --git a/cmds/statsd/src/StatsLogProcessor.h b/cmds/statsd/src/StatsLogProcessor.h
index 23f2584..08f4668 100644
--- a/cmds/statsd/src/StatsLogProcessor.h
+++ b/cmds/statsd/src/StatsLogProcessor.h
@@ -66,11 +66,6 @@
                       const DumpLatency dumpLatency,
                       ProtoOutputStream* proto);
 
-    /* Tells MetricsManager that the alarms in alarmSet have fired. Modifies anomaly alarmSet. */
-    void onAnomalyAlarmFired(
-            const int64_t& timestampNs,
-            unordered_set<sp<const InternalAlarm>, SpHash<InternalAlarm>> alarmSet);
-
     /* Tells MetricsManager that the alarms in alarmSet have fired. Modifies periodic alarmSet. */
     void onPeriodicAlarmFired(
             const int64_t& timestampNs,
@@ -148,6 +143,10 @@
     // Add a specific config key to the possible configs to dump ASAP.
     void noteOnDiskData(const ConfigKey& key);
 
+    void setAnomalyAlarm(const int64_t timeMillis);
+
+    void cancelAnomalyAlarm();
+
 private:
     // For testing only.
     inline sp<AlarmMonitor> getAnomalyAlarmMonitor() const {
@@ -160,6 +159,11 @@
 
     mutable mutex mMetricsMutex;
 
+    // Guards mNextAnomalyAlarmTime. A separate mutex is needed because alarms are set/cancelled
+    // in the onLogEvent code path, which is locked by mMetricsMutex.
+    // DO NOT acquire mMetricsMutex while holding mAnomalyAlarmMutex. This can lead to a deadlock.
+    mutable mutex mAnomalyAlarmMutex;
+
     std::unordered_map<ConfigKey, sp<MetricsManager>> mMetricsManagers;
 
     std::unordered_map<ConfigKey, int64_t> mLastBroadcastTimes;
@@ -250,6 +254,15 @@
     // Reset the specified configs.
     void resetConfigsLocked(const int64_t timestampNs, const std::vector<ConfigKey>& configs);
 
+    // An anomaly alarm should have fired.
+    // Check with anomaly alarm manager to find the alarms and process the result.
+    void informAnomalyAlarmFiredLocked(const int64_t elapsedTimeMillis);
+
+    /* Tells MetricsManager that the alarms in alarmSet have fired. Modifies anomaly alarmSet. */
+    void processFiredAnomalyAlarmsLocked(
+            const int64_t& timestampNs,
+            unordered_set<sp<const InternalAlarm>, SpHash<InternalAlarm>> alarmSet);
+
     // Function used to send a broadcast so that receiver for the config key can call getData
     // to retrieve the stored data.
     std::function<bool(const ConfigKey& key)> mSendBroadcast;
@@ -276,6 +289,9 @@
     //Last time we wrote metadata to disk.
     int64_t mLastMetadataWriteNs = 0;
 
+    // The time for the next anomaly alarm for alerts.
+    int64_t mNextAnomalyAlarmTime = 0;
+
 #ifdef VERY_VERBOSE_PRINTING
     bool mPrintAllLogs = false;
 #endif
diff --git a/cmds/statsd/src/StatsService.cpp b/cmds/statsd/src/StatsService.cpp
index 3226482..368a6c4 100644
--- a/cmds/statsd/src/StatsService.cpp
+++ b/cmds/statsd/src/StatsService.cpp
@@ -91,17 +91,13 @@
 StatsService::StatsService(const sp<Looper>& handlerLooper, shared_ptr<LogEventQueue> queue)
     : mAnomalyAlarmMonitor(new AlarmMonitor(
               MIN_DIFF_TO_UPDATE_REGISTERED_ALARM_SECS,
-              [](const shared_ptr<IStatsCompanionService>& sc, int64_t timeMillis) {
-                  if (sc != nullptr) {
-                      sc->setAnomalyAlarm(timeMillis);
-                      StatsdStats::getInstance().noteRegisteredAnomalyAlarmChanged();
-                  }
+              [this](const shared_ptr<IStatsCompanionService>& /*sc*/, int64_t timeMillis) {
+                  mProcessor->setAnomalyAlarm(timeMillis);
+                  StatsdStats::getInstance().noteRegisteredAnomalyAlarmChanged();
               },
-              [](const shared_ptr<IStatsCompanionService>& sc) {
-                  if (sc != nullptr) {
-                      sc->cancelAnomalyAlarm();
-                      StatsdStats::getInstance().noteRegisteredAnomalyAlarmChanged();
-                  }
+              [this](const shared_ptr<IStatsCompanionService>& /*sc*/) {
+                  mProcessor->cancelAnomalyAlarm();
+                  StatsdStats::getInstance().noteRegisteredAnomalyAlarmChanged();
               })),
       mPeriodicAlarmMonitor(new AlarmMonitor(
               MIN_DIFF_TO_UPDATE_REGISTERED_ALARM_SECS,
@@ -975,22 +971,6 @@
     return Status::ok();
 }
 
-Status StatsService::informAnomalyAlarmFired() {
-    ENFORCE_UID(AID_SYSTEM);
-
-    VLOG("StatsService::informAnomalyAlarmFired was called");
-    int64_t currentTimeSec = getElapsedRealtimeSec();
-    std::unordered_set<sp<const InternalAlarm>, SpHash<InternalAlarm>> alarmSet =
-            mAnomalyAlarmMonitor->popSoonerThan(static_cast<uint32_t>(currentTimeSec));
-    if (alarmSet.size() > 0) {
-        VLOG("Found an anomaly alarm that fired.");
-        mProcessor->onAnomalyAlarmFired(currentTimeSec * NS_PER_SEC, alarmSet);
-    } else {
-        VLOG("Cannot find an anomaly alarm that fired. Perhaps it was recently cancelled.");
-    }
-    return Status::ok();
-}
-
 Status StatsService::informAlarmForSubscriberTriggeringFired() {
     ENFORCE_UID(AID_SYSTEM);
 
diff --git a/cmds/statsd/src/StatsService.h b/cmds/statsd/src/StatsService.h
index 324ffbd..479f4e8 100644
--- a/cmds/statsd/src/StatsService.h
+++ b/cmds/statsd/src/StatsService.h
@@ -66,7 +66,6 @@
     virtual Status systemRunning();
     virtual Status statsCompanionReady();
     virtual Status bootCompleted();
-    virtual Status informAnomalyAlarmFired();
     virtual Status informPollAlarmFired();
     virtual Status informAlarmForSubscriberTriggeringFired();
 
@@ -404,6 +403,10 @@
     FRIEND_TEST(PartialBucketE2eTest, TestGaugeMetricOnBootWithoutMinPartialBucket);
     FRIEND_TEST(PartialBucketE2eTest, TestGaugeMetricWithoutMinPartialBucket);
     FRIEND_TEST(PartialBucketE2eTest, TestGaugeMetricWithMinPartialBucket);
+
+    FRIEND_TEST(AnomalyDetectionE2eTest, TestDurationMetric_SUM_single_bucket);
+    FRIEND_TEST(AnomalyDetectionE2eTest, TestDurationMetric_SUM_multiple_buckets);
+    FRIEND_TEST(AnomalyDetectionE2eTest, TestDurationMetric_SUM_long_refractory_period);
 };
 
 }  // namespace statsd
diff --git a/cmds/statsd/src/atom_field_options.proto b/cmds/statsd/src/atom_field_options.proto
deleted file mode 100644
index ff5717e..0000000
--- a/cmds/statsd/src/atom_field_options.proto
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-
-package android.os.statsd;
-option java_package = "com.android.os";
-option java_multiple_files = true;
-option java_outer_classname = "AtomFieldOptions";
-
-import "google/protobuf/descriptor.proto";
-
-// Used to annotate an atom that represents a state change. A state change atom must have exactly
-// ONE exclusive state field, and any number of primary key fields. For example, message
-// UidProcessStateChanged {
-//    optional int32 uid = 1 [(state_field_option).primary_field = true];
-//    optional android.app.ProcessStateEnum state =
-//            2 [(state_field_option).exclusive_state = true];
-//  }
-// Each UidProcessStateChanged atom event represents a state change for a specific uid.
-// A new state automatically overrides the previous state.
-//
-// If the atom has 2 or more primary fields, it means the combination of the
-// primary fields are the primary key.
-// For example:
-// message ThreadStateChanged {
-//    optional int32 pid = 1  [(state_field_option).primary_field = true];
-//    optional int32 tid = 2  [(state_field_option).primary_field = true];
-//    optional int32 state = 3 [(state_field_option).exclusive_state = true];
-// }
-//
-// Sometimes, there is no primary key field, when the state is GLOBAL.
-// For example,
-// message ScreenStateChanged {
-//    optional android.view.DisplayStateEnum state =
-//          1 [(state_field_option).exclusive_state = true];
-// }
-//
-// For state atoms with attribution chain, sometimes the primary key is the first uid in the chain.
-// For example:
-// message AudioStateChanged {
-//   repeated AttributionNode attribution_node = 1
-//       [(stateFieldOption).primary_field_first_uid = true];
-//
-//    enum State {
-//      OFF = 0;
-//      ON = 1;
-//      // RESET indicates all audio stopped. Used when it (re)starts (e.g. after it crashes).
-//      RESET = 2;
-//    }
-//    optional State state = 2 [(stateFieldOption).exclusive_state = true];
-// }
-message StateAtomFieldOption {
-    // Fields that represent the key that the state belongs to.
-    // Used on simple proto fields. Do not use on attribution chains.
-    optional bool primary_field = 1 [default = false];
-
-    // The field that represents the state. It's an exclusive state.
-    optional bool exclusive_state = 2 [default = false];
-
-    // Used on an attribution chain field to indicate that the first uid is the
-    // primary field.
-    optional bool primary_field_first_uid = 3 [default = false];
-
-    // Note: We cannot annotate directly on the enums because many enums are imported from other
-    // proto files in the platform. proto-lite cc library does not support annotations unfortunately
-
-    // Knowing the default state value allows state trackers to remove entries that become the
-    // default state. If there is no default value specified, the default value is unknown, and all
-    // states will be tracked in memory.
-    optional int32 default_state_value = 4;
-
-    // A reset state signals all states go to default value. For example, BLE reset means all active
-    // BLE scans are to be turned off.
-    optional int32 trigger_state_reset_value = 5;
-
-    // If the state change needs to count nesting.
-    optional bool nested = 6 [default = true];
-}
-
-// Used to generate StatsLog.write APIs.
-enum LogMode {
-    MODE_UNSET = 0;
-    // Log fields as their actual types e.g., all primary data types.
-    // Or fields that are hardcoded in stats_log_api_gen tool e.g., AttributionNode
-    MODE_AUTOMATIC = 1;
-    // Log fields in their proto binary format. These fields will not be parsed in statsd
-    MODE_BYTES = 2;
-}
-
-extend google.protobuf.FieldOptions {
-    // Flags to decorate an atom that presents a state change.
-    optional StateAtomFieldOption state_field_option = 50000;
-
-    // Flags to decorate the uid fields in an atom.
-    optional bool is_uid = 50001 [default = false];
-
-    optional LogMode log_mode = 50002 [default = MODE_AUTOMATIC];
-
-    repeated string module = 50004;
-
-    optional bool truncate_timestamp = 50005 [default = false];
-}
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto
deleted file mode 100644
index 12ef9ba..0000000
--- a/cmds/statsd/src/atoms.proto
+++ /dev/null
@@ -1,11199 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-
-package android.os.statsd;
-option java_package = "com.android.os";
-option java_outer_classname = "AtomsProto";
-
-import "frameworks/base/cmds/statsd/src/atom_field_options.proto";
-import "frameworks/base/core/proto/android/app/enums.proto";
-import "frameworks/base/core/proto/android/app/job/enums.proto";
-import "frameworks/base/core/proto/android/app/settings_enums.proto";
-import "frameworks/base/core/proto/android/app/media_output_enum.proto";
-import "frameworks/base/core/proto/android/app/tvsettings_enums.proto";
-import "frameworks/base/core/proto/android/bluetooth/a2dp/enums.proto";
-import "frameworks/base/core/proto/android/bluetooth/enums.proto";
-import "frameworks/base/core/proto/android/bluetooth/hci/enums.proto";
-import "frameworks/base/core/proto/android/bluetooth/hfp/enums.proto";
-import "frameworks/base/core/proto/android/bluetooth/smp/enums.proto";
-import "frameworks/base/core/proto/android/debug/enums.proto";
-import "frameworks/base/core/proto/android/hardware/biometrics/enums.proto";
-import "frameworks/base/core/proto/android/hardware/sensor/assist/enums.proto";
-import "frameworks/base/core/proto/android/net/networkcapabilities.proto";
-import "frameworks/base/core/proto/android/os/enums.proto";
-import "frameworks/base/core/proto/android/server/connectivity/data_stall_event.proto";
-import "frameworks/base/core/proto/android/server/enums.proto";
-import "frameworks/base/core/proto/android/server/job/enums.proto";
-import "frameworks/base/core/proto/android/server/location/enums.proto";
-import "frameworks/base/core/proto/android/service/procstats_enum.proto";
-import "frameworks/base/core/proto/android/service/usb.proto";
-import "frameworks/base/core/proto/android/stats/connectivity/network_stack.proto";
-import "frameworks/base/core/proto/android/stats/connectivity/tethering.proto";
-import "frameworks/base/core/proto/android/stats/dnsresolver/dns_resolver.proto";
-import "frameworks/base/core/proto/android/stats/devicepolicy/device_policy.proto";
-import "frameworks/base/core/proto/android/stats/devicepolicy/device_policy_enums.proto";
-import "frameworks/base/core/proto/android/stats/docsui/docsui_enums.proto";
-import "frameworks/base/core/proto/android/stats/accessibility/accessibility_enums.proto";
-import "frameworks/base/core/proto/android/stats/enums.proto";
-import "frameworks/base/core/proto/android/stats/intelligence/enums.proto";
-import "frameworks/base/core/proto/android/stats/launcher/launcher.proto";
-import "frameworks/base/core/proto/android/stats/location/location_enums.proto";
-import "frameworks/base/core/proto/android/stats/mediametrics/mediametrics.proto";
-import "frameworks/base/core/proto/android/stats/mediaprovider/mediaprovider_enums.proto";
-import "frameworks/base/core/proto/android/stats/storage/storage_enums.proto";
-import "frameworks/base/core/proto/android/stats/style/style_enums.proto";
-import "frameworks/base/core/proto/android/stats/sysui/notification_enums.proto";
-import "frameworks/base/core/proto/android/telecomm/enums.proto";
-import "frameworks/base/core/proto/android/telephony/enums.proto";
-import "frameworks/base/core/proto/android/view/enums.proto";
-import "frameworks/base/core/proto/android/wifi/enums.proto";
-import "frameworks/base/core/proto/android/stats/textclassifier/textclassifier_enums.proto";
-import "frameworks/base/core/proto/android/stats/otaupdate/updateengine_enums.proto";
-
-/**
- * The primary atom class. This message defines all of the available
- * raw stats log events from the Android system, also known as "atoms."
- *
- * This field contains a single oneof with all of the available messages.
- * The stats-log-api-gen tool runs as part of the Android build and
- * generates the android.util.StatsLog class, which contains the constants
- * and methods that Android uses to log.
- *
- * This Atom class is not actually built into the Android system.
- * Instead, statsd on Android constructs these messages synthetically,
- * in the format defined here and in stats_log.proto.
- */
-message Atom {
-    // Pushed atoms start at 2.
-    oneof pushed {
-        // For StatsLog reasons, 1 is illegal and will not work. Must start at 2.
-        BleScanStateChanged ble_scan_state_changed = 2
-                [(module) = "bluetooth", (module) = "statsdtest"];
-        ProcessStateChanged process_state_changed = 3 [(module) = "framework"];
-        BleScanResultReceived ble_scan_result_received = 4 [(module) = "bluetooth"];
-        SensorStateChanged sensor_state_changed =
-                5 [(module) = "framework", (module) = "statsdtest"];
-        GpsScanStateChanged gps_scan_state_changed = 6 [(module) = "framework"];
-        SyncStateChanged sync_state_changed = 7 [(module) = "framework", (module) = "statsdtest"];
-        ScheduledJobStateChanged scheduled_job_state_changed =
-                8 [(module) = "framework", (module) = "statsdtest"];
-        ScreenBrightnessChanged screen_brightness_changed =
-                9 [(module) = "framework", (module) = "statsdtest"];
-        WakelockStateChanged wakelock_state_changed =
-                10 [(module) = "framework", (module) = "statsdtest"];
-        LongPartialWakelockStateChanged long_partial_wakelock_state_changed =
-                11 [(module) = "framework"];
-        MobileRadioPowerStateChanged mobile_radio_power_state_changed =
-                12 [(module) = "framework", (truncate_timestamp) = true];
-        WifiRadioPowerStateChanged wifi_radio_power_state_changed = 13 [(module) = "framework"];
-        ActivityManagerSleepStateChanged activity_manager_sleep_state_changed =
-                14 [(module) = "framework"];
-        MemoryFactorStateChanged memory_factor_state_changed = 15 [(module) = "framework"];
-        ExcessiveCpuUsageReported excessive_cpu_usage_reported = 16 [(module) = "framework"];
-        CachedKillReported cached_kill_reported = 17 [(module) = "framework"];
-        ProcessMemoryStatReported process_memory_stat_reported = 18 [(module) = "framework"];
-        LauncherUIChanged launcher_event = 19 [(module) = "sysui"];
-        BatterySaverModeStateChanged battery_saver_mode_state_changed =
-                20 [(module) = "framework", (module) = "statsdtest"];
-        DeviceIdleModeStateChanged device_idle_mode_state_changed = 21 [(module) = "framework"];
-        DeviceIdlingModeStateChanged device_idling_mode_state_changed = 22 [(module) = "framework"];
-        AudioStateChanged audio_state_changed =
-                23 [(module) = "framework", (truncate_timestamp) = true];
-        MediaCodecStateChanged media_codec_state_changed = 24 [(module) = "framework"];
-        CameraStateChanged camera_state_changed = 25 [(module) = "framework"];
-        FlashlightStateChanged flashlight_state_changed = 26 [(module) = "framework"];
-        UidProcessStateChanged uid_process_state_changed =
-                27 [(module) = "framework", (module) = "statsdtest"];
-        ProcessLifeCycleStateChanged process_life_cycle_state_changed =
-                28 [(module) = "framework", (module) = "statsdtest"];
-        ScreenStateChanged screen_state_changed =
-                29 [(module) = "framework", (module) = "statsdtest"];
-        BatteryLevelChanged battery_level_changed =
-                30 [(module) = "framework", (module) = "statsdtest"];
-        ChargingStateChanged charging_state_changed = 31 [(module) = "framework"];
-        PluggedStateChanged plugged_state_changed = 32
-                [(module) = "framework", (module) = "statsdtest"];
-        InteractiveStateChanged interactive_state_changed = 33 [(module) = "framework"];
-        TouchEventReported touch_event_reported = 34;
-        WakeupAlarmOccurred wakeup_alarm_occurred = 35 [(module) = "framework"];
-        KernelWakeupReported kernel_wakeup_reported = 36 [(module) = "framework"];
-        WifiLockStateChanged wifi_lock_state_changed = 37 [(module) = "wifi"];
-        WifiSignalStrengthChanged wifi_signal_strength_changed = 38 [(module) = "wifi"];
-        WifiScanStateChanged wifi_scan_state_changed = 39 [(module) = "wifi"];
-        PhoneSignalStrengthChanged phone_signal_strength_changed =
-                40 [(module) = "framework", (truncate_timestamp) = true];
-        SettingChanged setting_changed = 41 [(module) = "framework"];
-        ActivityForegroundStateChanged activity_foreground_state_changed =
-                42 [(module) = "framework", (module) = "statsdtest"];
-        IsolatedUidChanged isolated_uid_changed =
-                43 [(module) = "framework", (module) = "statsd", (module) = "statsdtest"];
-        PacketWakeupOccurred packet_wakeup_occurred = 44 [(module) = "framework"];
-        WallClockTimeShifted wall_clock_time_shifted = 45 [(module) = "framework"];
-        AnomalyDetected anomaly_detected = 46 [(module) = "statsd"];
-        AppBreadcrumbReported app_breadcrumb_reported = 47 [(module) = "statsd"];
-        AppStartOccurred app_start_occurred = 48 [(module) = "framework", (module) = "statsdtest"];
-        AppStartCanceled app_start_canceled = 49 [(module) = "framework"];
-        AppStartFullyDrawn app_start_fully_drawn = 50 [(module) = "framework"];
-        LmkKillOccurred lmk_kill_occurred = 51 [(module) = "lmkd"];
-        PictureInPictureStateChanged picture_in_picture_state_changed = 52 [(module) = "framework"];
-        WifiMulticastLockStateChanged wifi_multicast_lock_state_changed = 53 [(module) = "wifi"];
-        LmkStateChanged lmk_state_changed = 54 [(module) = "lmkd"];
-        AppStartMemoryStateCaptured app_start_memory_state_captured = 55 [(module) = "framework"];
-        ShutdownSequenceReported shutdown_sequence_reported = 56 [(module) = "framework"];
-        BootSequenceReported boot_sequence_reported = 57;
-        DaveyOccurred davey_occurred = 58 [(module) = "statsd"];
-        OverlayStateChanged overlay_state_changed =
-                59 [(module) = "framework", (module) = "statsdtest"];
-        ForegroundServiceStateChanged foreground_service_state_changed
-                = 60 [(module) = "framework"];
-        CallStateChanged call_state_changed =
-                61 [(module) = "telecom", (truncate_timestamp) = true];
-        KeyguardStateChanged keyguard_state_changed = 62 [(module) = "sysui"];
-        KeyguardBouncerStateChanged keyguard_bouncer_state_changed = 63 [(module) = "sysui"];
-        KeyguardBouncerPasswordEntered keyguard_bouncer_password_entered = 64 [(module) = "sysui"];
-        AppDied app_died = 65 [(module) = "framework"];
-        ResourceConfigurationChanged resource_configuration_changed = 66 [(module) = "framework"];
-        BluetoothEnabledStateChanged bluetooth_enabled_state_changed = 67 [(module) = "framework"];
-        BluetoothConnectionStateChanged bluetooth_connection_state_changed =
-                68 [(module) = "bluetooth"];
-        GpsSignalQualityChanged gps_signal_quality_changed = 69 [(module) = "framework"];
-        UsbConnectorStateChanged usb_connector_state_changed = 70 [(module) = "framework"];
-        SpeakerImpedanceReported speaker_impedance_reported = 71;
-        HardwareFailed hardware_failed = 72;
-        PhysicalDropDetected physical_drop_detected = 73;
-        ChargeCyclesReported charge_cycles_reported = 74;
-        MobileConnectionStateChanged mobile_connection_state_changed = 75 [(module) = "telephony"];
-        MobileRadioTechnologyChanged mobile_radio_technology_changed = 76 [(module) = "telephony"];
-        UsbDeviceAttached usb_device_attached = 77 [(module) = "framework"];
-        AppCrashOccurred app_crash_occurred = 78 [(module) = "framework", (module) = "statsdtest"];
-        ANROccurred anr_occurred = 79 [(module) = "framework"];
-        WTFOccurred wtf_occurred = 80 [(module) = "framework"];
-        LowMemReported low_mem_reported = 81 [(module) = "framework"];
-        GenericAtom generic_atom = 82;
-        KeyValuePairsAtom key_value_pairs_atom = 83 [(module) = "framework", (module) = "statsd"];
-        VibratorStateChanged vibrator_state_changed = 84 [(module) = "framework"];
-        DeferredJobStatsReported deferred_job_stats_reported = 85 [(module) = "framework"];
-        ThermalThrottlingStateChanged thermal_throttling = 86 [deprecated=true];
-        BiometricAcquired biometric_acquired = 87 [(module) = "framework"];
-        BiometricAuthenticated biometric_authenticated = 88 [(module) = "framework"];
-        BiometricErrorOccurred biometric_error_occurred = 89 [(module) = "framework"];
-        UiEventReported ui_event_reported = 90 [(module) = "framework", (module) = "sysui"];
-        BatteryHealthSnapshot battery_health_snapshot = 91;
-        SlowIo slow_io = 92;
-        BatteryCausedShutdown battery_caused_shutdown = 93;
-        PhoneServiceStateChanged phone_service_state_changed = 94 [(module) = "framework"];
-        PhoneStateChanged phone_state_changed = 95 [(module) = "framework"];
-        UserRestrictionChanged user_restriction_changed = 96;
-        SettingsUIChanged settings_ui_changed = 97 [(module) = "settings"];
-        ConnectivityStateChanged connectivity_state_changed = 98 [(module) = "framework"];
-        // TODO: service state change is very noisy shortly after boot, as well
-        // as at other transitions - coming out of doze, device plugged in, etc.
-        // Consider removing this if it becomes a problem
-        ServiceStateChanged service_state_changed = 99 [(module) = "framework"];
-        ServiceLaunchReported service_launch_reported = 100 [(module) = "framework"];
-        FlagFlipUpdateOccurred flag_flip_update_occurred = 101 [(module) = "framework"];
-        BinaryPushStateChanged binary_push_state_changed = 102 [(module) = "statsd"];
-        DevicePolicyEvent device_policy_event = 103 [(module) = "framework"];
-        DocsUIFileOperationCanceledReported docs_ui_file_op_canceled = 104 [(module) = "docsui"];
-        DocsUIFileOperationCopyMoveModeReported docs_ui_file_op_copy_move_mode_reported =
-            105 [(module) = "docsui"];
-        DocsUIFileOperationFailureReported docs_ui_file_op_failure = 106 [(module) = "docsui"];
-        DocsUIFileOperationReported docs_ui_provider_file_op = 107 [(module) = "docsui"];
-        DocsUIInvalidScopedAccessRequestReported docs_ui_invalid_scoped_access_request =
-            108 [(module) = "docsui"];
-        DocsUILaunchReported docs_ui_launch_reported = 109 [(module) = "docsui"];
-        DocsUIRootVisitedReported docs_ui_root_visited = 110 [(module) = "docsui"];
-        DocsUIStartupMsReported docs_ui_startup_ms = 111 [(module) = "docsui"];
-        DocsUIUserActionReported docs_ui_user_action_reported = 112 [(module) = "docsui"];
-        WifiEnabledStateChanged wifi_enabled_state_changed = 113 [(module) = "framework"];
-        WifiRunningStateChanged wifi_running_state_changed = 114
-                [(module) = "framework", deprecated = true];
-        AppCompacted app_compacted = 115 [(module) = "framework"];
-        NetworkDnsEventReported network_dns_event_reported = 116 [(module) = "resolv"];
-        DocsUIPickerLaunchedFromReported docs_ui_picker_launched_from_reported =
-            117 [(module) = "docsui"];
-        DocsUIPickResultReported docs_ui_pick_result_reported = 118 [(module) = "docsui"];
-        DocsUISearchModeReported docs_ui_search_mode_reported = 119 [(module) = "docsui"];
-        DocsUISearchTypeReported docs_ui_search_type_reported = 120 [(module) = "docsui"];
-        DataStallEvent data_stall_event = 121 [(module) = "network_stack"];
-        RescuePartyResetReported rescue_party_reset_reported = 122 [(module) = "framework"];
-        SignedConfigReported signed_config_reported = 123 [(module) = "framework"];
-        GnssNiEventReported gnss_ni_event_reported = 124 [(module) = "framework"];
-        BluetoothLinkLayerConnectionEvent bluetooth_link_layer_connection_event =
-                125 [(module) = "bluetooth"];
-        BluetoothAclConnectionStateChanged bluetooth_acl_connection_state_changed =
-                126 [(module) = "bluetooth"];
-        BluetoothScoConnectionStateChanged bluetooth_sco_connection_state_changed =
-                127 [(module) = "bluetooth"];
-        AppDowngraded app_downgraded = 128 [(module) = "framework"];
-        AppOptimizedAfterDowngraded app_optimized_after_downgraded = 129;
-        LowStorageStateChanged low_storage_state_changed = 130 [(module) = "framework"];
-        GnssNfwNotificationReported gnss_nfw_notification_reported = 131 [(module) = "framework"];
-        GnssConfigurationReported gnss_configuration_reported = 132 [(module) = "framework"];
-        UsbPortOverheatEvent usb_port_overheat_event_reported = 133;
-        NfcErrorOccurred nfc_error_occurred = 134 [(module) = "nfc"];
-        NfcStateChanged nfc_state_changed = 135 [(module) = "nfc"];
-        NfcBeamOccurred nfc_beam_occurred = 136 [(module) = "nfc"];
-        NfcCardemulationOccurred nfc_cardemulation_occurred = 137 [(module) = "nfc"];
-        NfcTagOccurred nfc_tag_occurred = 138 [(module) = "nfc"];
-        NfcHceTransactionOccurred nfc_hce_transaction_occurred = 139 [(module) = "nfc"];
-        SeStateChanged se_state_changed = 140 [(module) = "secure_element"];
-        SeOmapiReported se_omapi_reported = 141 [(module) = "secure_element"];
-        BroadcastDispatchLatencyReported broadcast_dispatch_latency_reported =
-                142 [(module) = "framework"];
-        AttentionManagerServiceResultReported attention_manager_service_result_reported =
-                143 [(module) = "framework"];
-        AdbConnectionChanged adb_connection_changed = 144 [(module) = "framework"];
-        SpeechDspStatReported speech_dsp_stat_reported = 145;
-        UsbContaminantReported usb_contaminant_reported = 146 [(module) = "framework"];
-        WatchdogRollbackOccurred watchdog_rollback_occurred =
-                147 [(module) = "framework", (module) = "statsd"];
-        BiometricSystemHealthIssueDetected biometric_system_health_issue_detected =
-                148 [(module) = "framework"];
-        BubbleUIChanged bubble_ui_changed = 149 [(module) = "sysui"];
-        ScheduledJobConstraintChanged scheduled_job_constraint_changed =
-                150 [(module) = "framework"];
-        BluetoothActiveDeviceChanged bluetooth_active_device_changed =
-                151 [(module) = "bluetooth"];
-        BluetoothA2dpPlaybackStateChanged bluetooth_a2dp_playback_state_changed =
-                152 [(module) = "bluetooth"];
-        BluetoothA2dpCodecConfigChanged bluetooth_a2dp_codec_config_changed =
-                153 [(module) = "bluetooth"];
-        BluetoothA2dpCodecCapabilityChanged bluetooth_a2dp_codec_capability_changed =
-                154 [(module) = "bluetooth"];
-        BluetoothA2dpAudioUnderrunReported bluetooth_a2dp_audio_underrun_reported =
-                155 [(module) = "bluetooth"];
-        BluetoothA2dpAudioOverrunReported bluetooth_a2dp_audio_overrun_reported =
-                156 [(module) = "bluetooth"];
-        BluetoothDeviceRssiReported bluetooth_device_rssi_reported =
-                157 [(module) = "bluetooth"];
-        BluetoothDeviceFailedContactCounterReported
-                bluetooth_device_failed_contact_counter_reported = 158 [(module) = "bluetooth"];
-        BluetoothDeviceTxPowerLevelReported bluetooth_device_tx_power_level_reported =
-                159 [(module) = "bluetooth"];
-        BluetoothHciTimeoutReported bluetooth_hci_timeout_reported =
-                160 [(module) = "bluetooth"];
-        BluetoothQualityReportReported bluetooth_quality_report_reported =
-                161 [(module) = "bluetooth"];
-        BluetoothDeviceInfoReported bluetooth_device_info_reported =
-                162 [(module) = "bluetooth"];
-        BluetoothRemoteVersionInfoReported bluetooth_remote_version_info_reported =
-                163 [(module) = "bluetooth"];
-        BluetoothSdpAttributeReported bluetooth_sdp_attribute_reported =
-                164 [(module) = "bluetooth"];
-        BluetoothBondStateChanged bluetooth_bond_state_changed =
-                165 [(module) = "bluetooth"];
-        BluetoothClassicPairingEventReported bluetooth_classic_pairing_event_reported =
-                166 [(module) = "bluetooth"];
-        BluetoothSmpPairingEventReported bluetooth_smp_pairing_event_reported =
-                167 [(module) = "bluetooth"];
-        ScreenTimeoutExtensionReported screen_timeout_extension_reported =
-                168 [(module) = "framework"];
-        ProcessStartTime process_start_time = 169 [(module) = "framework"];
-        PermissionGrantRequestResultReported permission_grant_request_result_reported =
-                170 [(module) = "permissioncontroller"];
-        BluetoothSocketConnectionStateChanged bluetooth_socket_connection_state_changed = 171;
-        DeviceIdentifierAccessDenied device_identifier_access_denied =
-                172 [(module) = "telephony_common"];
-        BubbleDeveloperErrorReported bubble_developer_error_reported = 173 [(module) = "framework"];
-        AssistGestureStageReported assist_gesture_stage_reported = 174 [(module) = "sysui"];
-        AssistGestureFeedbackReported assist_gesture_feedback_reported = 175 [(module) = "sysui"];
-        AssistGestureProgressReported assist_gesture_progress_reported = 176 [(module) = "sysui"];
-        TouchGestureClassified touch_gesture_classified = 177 [(module) = "framework"];
-        HiddenApiUsed hidden_api_used = 178 [(module) = "framework"];
-        StyleUIChanged style_ui_changed = 179 [(module) = "sysui"];
-        PrivacyIndicatorsInteracted privacy_indicators_interacted =
-                180 [(module) = "permissioncontroller"];
-        AppInstallOnExternalStorageReported app_install_on_external_storage_reported =
-                181 [(module) = "framework"];
-        NetworkStackReported network_stack_reported = 182 [(module) = "network_stack"];
-        AppMovedStorageReported app_moved_storage_reported = 183 [(module) = "framework"];
-        BiometricEnrolled biometric_enrolled = 184 [(module) = "framework"];
-        SystemServerWatchdogOccurred system_server_watchdog_occurred = 185 [(module) = "framework"];
-        TombStoneOccurred tomb_stone_occurred = 186 [(module) = "framework"];
-        BluetoothClassOfDeviceReported bluetooth_class_of_device_reported =
-                187 [(module) = "bluetooth"];
-        IntelligenceEventReported intelligence_event_reported =
-                188 [(module) = "intelligence"];
-        ThermalThrottlingSeverityStateChanged thermal_throttling_severity_state_changed =
-                189 [(module) = "framework"];
-        RoleRequestResultReported role_request_result_reported =
-                190 [(module) = "permissioncontroller"];
-        MediametricsAudiopolicyReported mediametrics_audiopolicy_reported = 191;
-        MediametricsAudiorecordReported mediametrics_audiorecord_reported = 192;
-        MediametricsAudiothreadReported mediametrics_audiothread_reported = 193;
-        MediametricsAudiotrackReported mediametrics_audiotrack_reported = 194;
-        MediametricsCodecReported mediametrics_codec_reported = 195;
-        MediametricsDrmWidevineReported mediametrics_drm_widevine_reported = 196;
-        MediametricsExtractorReported mediametrics_extractor_reported = 197;
-        MediametricsMediadrmReported mediametrics_mediadrm_reported = 198;
-        MediametricsNuPlayerReported mediametrics_nuplayer_reported = 199;
-        MediametricsRecorderReported mediametrics_recorder_reported = 200;
-        MediametricsDrmManagerReported mediametrics_drmmanager_reported = 201;
-        CarPowerStateChanged car_power_state_changed = 203 [(module) = "car"];
-        GarageModeInfo garage_mode_info = 204 [(module) = "car"];
-        TestAtomReported test_atom_reported = 205 [(module) = "cts"];
-        ContentCaptureCallerMismatchReported content_capture_caller_mismatch_reported =
-                206 [(module) = "framework"];
-        ContentCaptureServiceEvents content_capture_service_events = 207 [(module) = "framework"];
-        ContentCaptureSessionEvents content_capture_session_events = 208 [(module) = "framework"];
-        ContentCaptureFlushed content_capture_flushed = 209 [(module) = "framework"];
-        LocationManagerApiUsageReported location_manager_api_usage_reported =
-                210 [(module) = "framework"];
-        ReviewPermissionsFragmentResultReported review_permissions_fragment_result_reported =
-                211 [(module) = "permissioncontroller"];
-        RuntimePermissionsUpgradeResult runtime_permissions_upgrade_result =
-                212 [(module) = "permissioncontroller"];
-        GrantPermissionsActivityButtonActions grant_permissions_activity_button_actions =
-                213 [(module) = "permissioncontroller"];
-        LocationAccessCheckNotificationAction location_access_check_notification_action =
-                214 [(module) = "permissioncontroller"];
-        AppPermissionFragmentActionReported app_permission_fragment_action_reported =
-                215 [(module) = "permissioncontroller"];
-        AppPermissionFragmentViewed app_permission_fragment_viewed =
-                216 [(module) = "permissioncontroller"];
-        AppPermissionsFragmentViewed app_permissions_fragment_viewed =
-                217 [(module) = "permissioncontroller"];
-        PermissionAppsFragmentViewed permission_apps_fragment_viewed =
-                218  [(module) = "permissioncontroller"];
-        TextSelectionEvent text_selection_event = 219  [(module) = "textclassifier"];
-        TextLinkifyEvent text_linkify_event = 220  [(module) = "textclassifier"];
-        ConversationActionsEvent conversation_actions_event = 221  [(module) = "textclassifier"];
-        LanguageDetectionEvent language_detection_event = 222  [(module) = "textclassifier"];
-        ExclusionRectStateChanged exclusion_rect_state_changed = 223 [(module) = "framework"];
-        BackGesture back_gesture_reported_reported = 224 [(module) = "sysui"];
-        UpdateEngineUpdateAttemptReported update_engine_update_attempt_reported = 225;
-        UpdateEngineSuccessfulUpdateReported update_engine_successful_update_reported = 226;
-        CameraActionEvent camera_action_event = 227 [(module) = "framework"];
-        AppCompatibilityChangeReported app_compatibility_change_reported =
-                228 [(module) = "framework"];
-        PerfettoUploaded perfetto_uploaded = 229 [(module) = "perfetto"];
-        VmsClientConnectionStateChanged vms_client_connection_state_changed =
-                230 [(module) = "car"];
-        MediaProviderScanOccurred media_provider_scan_occurred = 233 [(module) = "mediaprovider"];
-        MediaContentDeleted media_content_deleted = 234 [(module) = "mediaprovider"];
-        MediaProviderPermissionRequested media_provider_permission_requested =
-            235 [(module) = "mediaprovider"];
-        MediaProviderSchemaChanged media_provider_schema_changed = 236 [(module) = "mediaprovider"];
-        MediaProviderIdleMaintenanceFinished media_provider_idle_maintenance_finished =
-            237 [(module) = "mediaprovider"];
-        RebootEscrowRecoveryReported reboot_escrow_recovery_reported = 238 [(module) = "framework"];
-        BootTimeEventDuration boot_time_event_duration_reported = 239 [(module) = "framework"];
-        BootTimeEventElapsedTime boot_time_event_elapsed_time_reported =
-                240 [(module) = "framework"];
-        BootTimeEventUtcTime boot_time_event_utc_time_reported = 241;
-        BootTimeEventErrorCode boot_time_event_error_code_reported = 242 [(module) = "framework"];
-        UserspaceRebootReported userspace_reboot_reported = 243 [(module) = "framework"];
-        NotificationReported notification_reported = 244 [(module) = "framework"];
-        NotificationPanelReported notification_panel_reported = 245 [(module) = "sysui"];
-        NotificationChannelModified notification_channel_modified = 246 [(module) = "framework"];
-        IntegrityCheckResultReported integrity_check_result_reported = 247 [(module) = "framework"];
-        IntegrityRulesPushed integrity_rules_pushed = 248 [(module) = "framework"];
-        CellBroadcastMessageReported cb_message_reported =
-            249 [(module) = "cellbroadcast"];
-        CellBroadcastMessageError cb_message_error =
-            250 [(module) = "cellbroadcast"];
-        WifiHealthStatReported wifi_health_stat_reported = 251 [(module) = "wifi"];
-        WifiFailureStatReported wifi_failure_stat_reported = 252 [(module) = "wifi"];
-        WifiConnectionResultReported wifi_connection_result_reported = 253 [(module) = "wifi"];
-        AppFreezeChanged app_freeze_changed = 254 [(module) = "framework"];
-        SnapshotMergeReported snapshot_merge_reported = 255;
-        ForegroundServiceAppOpSessionEnded foreground_service_app_op_session_ended =
-            256  [(module) = "framework"];
-        DisplayJankReported display_jank_reported = 257;
-        AppStandbyBucketChanged app_standby_bucket_changed = 258 [(module) = "framework"];
-        SharesheetStarted sharesheet_started = 259 [(module) = "framework"];
-        RankingSelected ranking_selected = 260 [(module) = "framework", (module) = "sysui"];
-        TvSettingsUIInteracted tvsettings_ui_interacted = 261 [(module) = "tv_settings"];
-        LauncherStaticLayout launcher_snapshot = 262 [(module) = "sysui"];
-        PackageInstallerV2Reported package_installer_v2_reported = 263 [(module) = "framework"];
-        UserLifecycleJourneyReported user_lifecycle_journey_reported = 264 [(module) = "framework"];
-        UserLifecycleEventOccurred user_lifecycle_event_occurred = 265 [(module) = "framework"];
-        AccessibilityShortcutReported accessibility_shortcut_reported =
-            266 [(module) = "framework"];
-        AccessibilityServiceReported accessibility_service_reported = 267 [(module) = "settings"];
-        DocsUIDragAndDropReported docs_ui_drag_and_drop_reported = 268 [(module) = "docsui"];
-        AppUsageEventOccurred app_usage_event_occurred = 269 [(module) = "framework"];
-        AutoRevokeNotificationClicked auto_revoke_notification_clicked =
-            270 [(module) = "permissioncontroller"];
-        AutoRevokeFragmentAppViewed auto_revoke_fragment_app_viewed =
-            271 [(module) = "permissioncontroller"];
-        AutoRevokedAppInteraction auto_revoked_app_interaction =
-            272 [(module) = "permissioncontroller", (module) = "settings"];
-        AppPermissionGroupsFragmentAutoRevokeAction
-            app_permission_groups_fragment_auto_revoke_action =
-            273 [(module) = "permissioncontroller"];
-        EvsUsageStatsReported evs_usage_stats_reported = 274 [(module) = "evs"];
-        AudioPowerUsageDataReported audio_power_usage_data_reported = 275;
-        TvTunerStateChanged tv_tuner_state_changed = 276 [(module) = "framework"];
-        MediaOutputOpSwitchReported mediaoutput_op_switch_reported =
-            277 [(module) = "settings"];
-        CellBroadcastMessageFiltered cb_message_filtered =
-            278 [(module) = "cellbroadcast"];
-        TvTunerDvrStatus tv_tuner_dvr_status = 279 [(module) = "framework"];
-        TvCasSessionOpenStatus tv_cas_session_open_status =
-            280 [(module) = "framework"];
-        AssistantInvocationReported assistant_invocation_reported = 281 [(module) = "framework"];
-        DisplayWakeReported display_wake_reported = 282 [(module) = "framework"];
-        CarUserHalModifyUserRequestReported car_user_hal_modify_user_request_reported =
-            283 [(module) = "car"];
-        CarUserHalModifyUserResponseReported car_user_hal_modify_user_response_reported =
-            284 [(module) = "car"];
-        CarUserHalPostSwitchResponseReported car_user_hal_post_switch_response_reported =
-            285 [(module) = "car"];
-        CarUserHalInitialUserInfoRequestReported car_user_hal_initial_user_info_request_reported =
-            286 [(module) = "car"];
-        CarUserHalInitialUserInfoResponseReported car_user_hal_initial_user_info_response_reported =
-            287 [(module) = "car"];
-        CarUserHalUserAssociationRequestReported car_user_hal_user_association_request_reported =
-            288 [(module) = "car"];
-        CarUserHalSetUserAssociationResponseReported car_user_hal_set_user_association_response_reported =
-            289 [(module) = "car"];
-        NetworkIpProvisioningReported network_ip_provisioning_reported =
-            290 [(module) = "network_stack"];
-        NetworkDhcpRenewReported network_dhcp_renew_reported = 291 [(module) = "network_stack"];
-        NetworkValidationReported network_validation_reported = 292 [(module) = "network_stack"];
-        NetworkStackQuirkReported network_stack_quirk_reported = 293 [(module) = "network_stack"];
-        MediametricsAudioRecordDeviceUsageReported mediametrics_audiorecorddeviceusage_reported =
-            294;
-        MediametricsAudioThreadDeviceUsageReported mediametrics_audiothreaddeviceusage_reported =
-            295;
-        MediametricsAudioTrackDeviceUsageReported mediametrics_audiotrackdeviceusage_reported =
-            296;
-        MediametricsAudioDeviceConnectionReported mediametrics_audiodeviceconnection_reported =
-            297;
-        BlobCommitted blob_committed = 298 [(module) = "framework"];
-        BlobLeased blob_leased = 299 [(module) = "framework"];
-        BlobOpened blob_opened = 300 [(module) = "framework"];
-        ContactsProviderStatusReported contacts_provider_status_reported = 301;
-        KeystoreKeyEventReported keystore_key_event_reported = 302;
-        NetworkTetheringReported  network_tethering_reported =
-            303 [(module) = "network_tethering"];
-        ImeTouchReported ime_touch_reported = 304 [(module) = "sysui"];
-
-        // StatsdStats tracks platform atoms with ids upto 500.
-        // Update StatsdStats::kMaxPushedAtomId when atom ids here approach that value.
-    }
-
-    // Pulled events will start at field 10000.
-    // Next: 10084
-    oneof pulled {
-        WifiBytesTransfer wifi_bytes_transfer = 10000 [(module) = "framework"];
-        WifiBytesTransferByFgBg wifi_bytes_transfer_by_fg_bg = 10001 [(module) = "framework"];
-        MobileBytesTransfer mobile_bytes_transfer =
-                10002 [(module) = "framework", (truncate_timestamp) = true];
-        MobileBytesTransferByFgBg mobile_bytes_transfer_by_fg_bg =
-                10003 [(module) = "framework", (truncate_timestamp) = true];
-        BluetoothBytesTransfer bluetooth_bytes_transfer = 10006 [(module) = "framework"];
-        KernelWakelock kernel_wakelock = 10004 [(module) = "framework"];
-        SubsystemSleepState subsystem_sleep_state = 10005 [(module) = "statsdtest"];
-        CpuTimePerFreq cpu_time_per_freq = 10008 [(module) = "framework"];
-        CpuTimePerUid cpu_time_per_uid = 10009 [(module) = "framework", (module) = "statsdtest"];
-        CpuTimePerUidFreq cpu_time_per_uid_freq =
-                10010 [(module) = "framework", (module) = "statsd"];
-        WifiActivityInfo wifi_activity_info = 10011 [(module) = "framework"];
-        ModemActivityInfo modem_activity_info = 10012 [(module) = "framework"];
-        BluetoothActivityInfo bluetooth_activity_info = 10007 [(module) = "framework"];
-        ProcessMemoryState process_memory_state = 10013 [(module) = "framework"];
-        SystemElapsedRealtime system_elapsed_realtime = 10014 [(module) = "framework"];
-        SystemUptime system_uptime = 10015 [(module) = "framework"];
-        CpuActiveTime cpu_active_time = 10016 [(module) = "framework", (module) = "statsdtest"];
-        CpuClusterTime cpu_cluster_time = 10017 [(module) = "framework"];
-        DiskSpace disk_space = 10018 [deprecated=true, (module) = "statsdtest"];
-        RemainingBatteryCapacity remaining_battery_capacity = 10019 [(module) = "framework"];
-        FullBatteryCapacity full_battery_capacity = 10020 [(module) = "framework"];
-        Temperature temperature = 10021 [(module) = "framework", (module) = "statsdtest"];
-        BinderCalls binder_calls = 10022 [(module) = "framework", (module) = "statsd"];
-        BinderCallsExceptions binder_calls_exceptions = 10023 [(module) = "framework"];
-        LooperStats looper_stats = 10024 [(module) = "framework", (module) = "statsd"];
-        DiskStats disk_stats = 10025 [(module) = "framework"];
-        DirectoryUsage directory_usage = 10026 [(module) = "framework"];
-        AppSize app_size = 10027 [(module) = "framework"];
-        CategorySize category_size = 10028 [(module) = "framework"];
-        ProcStats proc_stats = 10029 [(module) = "framework"];
-        BatteryVoltage battery_voltage = 10030 [(module) = "framework"];
-        NumFingerprintsEnrolled num_fingerprints_enrolled = 10031 [(module) = "framework"];
-        DiskIo disk_io = 10032 [(module) = "framework"];
-        PowerProfile power_profile = 10033 [(module) = "framework"];
-        ProcStatsPkgProc proc_stats_pkg_proc = 10034 [(module) = "framework"];
-        ProcessCpuTime process_cpu_time = 10035 [(module) = "framework"];
-        CpuTimePerThreadFreq cpu_time_per_thread_freq = 10037 [(module) = "framework"];
-        OnDevicePowerMeasurement on_device_power_measurement = 10038;
-        DeviceCalculatedPowerUse device_calculated_power_use = 10039 [(module) = "framework"];
-        DeviceCalculatedPowerBlameUid device_calculated_power_blame_uid =
-                10040 [(module) = "framework"];
-        DeviceCalculatedPowerBlameOther device_calculated_power_blame_other =
-                10041 [(module) = "framework"];
-        ProcessMemoryHighWaterMark process_memory_high_water_mark = 10042 [(module) = "framework"];
-        BatteryLevel battery_level = 10043 [(module) = "framework"];
-        BuildInformation build_information = 10044 [(module) = "framework"];
-        BatteryCycleCount battery_cycle_count = 10045 [(module) = "framework"];
-        DebugElapsedClock debug_elapsed_clock = 10046 [(module) = "framework"];
-        DebugFailingElapsedClock debug_failing_elapsed_clock = 10047 [(module) = "framework"];
-        NumFacesEnrolled num_faces_enrolled = 10048 [(module) = "framework"];
-        RoleHolder role_holder = 10049 [(module) = "framework"];
-        DangerousPermissionState dangerous_permission_state = 10050 [(module) = "framework"];
-        TrainInfo train_info = 10051 [(module) = "statsd"];
-        TimeZoneDataInfo time_zone_data_info = 10052 [(module) = "framework"];
-        ExternalStorageInfo external_storage_info = 10053 [(module) = "framework"];
-        GpuStatsGlobalInfo gpu_stats_global_info = 10054;
-        GpuStatsAppInfo gpu_stats_app_info = 10055;
-        SystemIonHeapSize system_ion_heap_size = 10056 [deprecated = true, (module) = "framework"];
-        AppsOnExternalStorageInfo apps_on_external_storage_info = 10057 [(module) = "framework"];
-        FaceSettings face_settings = 10058 [(module) = "framework"];
-        CoolingDevice cooling_device = 10059 [(module) = "framework"];
-        AppOps app_ops = 10060 [(module) = "framework"];
-        ProcessSystemIonHeapSize process_system_ion_heap_size = 10061 [(module) = "framework"];
-        SurfaceflingerStatsGlobalInfo surfaceflinger_stats_global_info = 10062;
-        SurfaceflingerStatsLayerInfo surfaceflinger_stats_layer_info = 10063;
-        ProcessMemorySnapshot process_memory_snapshot = 10064 [(module) = "framework"];
-        VmsClientStats vms_client_stats = 10065 [(module) = "car"];
-        NotificationRemoteViews notification_remote_views = 10066 [(module) = "framework"];
-        DangerousPermissionStateSampled dangerous_permission_state_sampled =
-                10067 [(module) = "framework"];
-        GraphicsStats graphics_stats = 10068;
-        RuntimeAppOpAccess runtime_app_op_access = 10069 [(module) = "framework"];
-        IonHeapSize ion_heap_size = 10070 [(module) = "framework"];
-        PackageNotificationPreferences package_notification_preferences =
-                10071 [(module) = "framework"];
-        PackageNotificationChannelPreferences package_notification_channel_preferences =
-                10072 [(module) = "framework"];
-        PackageNotificationChannelGroupPreferences package_notification_channel_group_preferences =
-                10073 [(module) = "framework"];
-        GnssStats gnss_stats = 10074 [(module) = "framework"];
-        AttributedAppOps attributed_app_ops = 10075 [(module) = "framework"];
-        VoiceCallSession voice_call_session = 10076 [(module) = "telephony"];
-        VoiceCallRatUsage voice_call_rat_usage = 10077 [(module) = "telephony"];
-        SimSlotState sim_slot_state = 10078 [(module) = "telephony"];
-        SupportedRadioAccessFamily supported_radio_access_family = 10079 [(module) = "telephony"];
-        SettingSnapshot setting_snapshot = 10080 [(module) = "framework"];
-        BlobInfo blob_info = 10081 [(module) = "framework"];
-        DataUsageBytesTransfer data_usage_bytes_transfer = 10082 [(module) = "framework"];
-        BytesTransferByTagAndMetered bytes_transfer_by_tag_and_metered =
-                10083 [(module) = "framework"];
-        DNDModeProto dnd_mode_rule = 10084 [(module) = "framework"];
-        GeneralExternalStorageAccessStats general_external_storage_access_stats =
-            10085 [(module) = "mediaprovider"];
-    }
-
-    // DO NOT USE field numbers above 100,000 in AOSP.
-    // Field numbers 100,000 - 199,999 are reserved for non-AOSP (e.g. OEMs) to use.
-    // Field numbers 200,000 and above are reserved for future use; do not use them at all.
-
-    reserved 10036;
-}
-
-/**
- * This proto represents a node of an attribution chain.
- * Note: All attribution chains are represented as a repeated field of type
- * AttributionNode. It is understood that in such arrays, the order is that
- * of calls, that is [A, B, C] if A calls B that calls C.
- */
-message AttributionNode {
-    // The uid for a given element in the attribution chain.
-    optional int32 uid = 1;
-
-    // The (optional) string tag for an element in the attribution chain. If the
-    // element has no tag, it is encoded as an empty string.
-    optional string tag = 2;
-}
-
-message KeyValuePair {
-    optional int32 key = 1;
-    oneof value {
-        int32 value_int = 2;
-        int64 value_long = 3;
-        string value_str = 4;
-        float value_float = 5;
-    }
-}
-
-message KeyValuePairsAtom {
-    optional int32 uid = 1;
-    repeated KeyValuePair pairs = 2;
-}
-
-/*
- * *****************************************************************************
- * Below are all of the individual atoms that are logged by Android via statsd.
- *
- * RULES:
- *   - The field ids for each atom must start at 1, and count upwards by 1.
- *     Skipping field ids is not allowed.
- *   - These form an API, so renaming, renumbering or removing fields is
- *     not allowed between android releases.  (This is not currently enforced,
- *     but there will be a tool to enforce this restriction).
- *   - The types must be built-in protocol buffer types, namely, no sub-messages
- *     are allowed (yet).  The bytes type is also not allowed.
- *   - The CamelCase name of the message type should match the
- *     underscore_separated name as defined in Atom.
- *   - If an atom represents work that can be attributed to an app, there can
- *     be exactly one AttributionChain field. It must be field number 1.
- *   - A field that is a uid should be a string field, tagged with the [xxx]
- *     annotation. The generated code on android will be represented by UIDs,
- *     and those UIDs will be translated in xxx to those strings.
- *
- * CONVENTIONS:
- *   - Events are past tense. e.g. ScreenStateChanged, not ScreenStateChange.
- *   - If there is a UID, it goes first. Think in an object-oriented fashion.
- * *****************************************************************************
- */
-
-/**
- * This atom is deprecated starting in Q. Please use ThermalThrottlingSeverityStateChanged.
- * Logs when the Thermal service HAL notifies the throttling start/stop events.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/stats/StatsCompanionService.java
- */
-message ThermalThrottlingStateChanged {
-    // The type of temperature being reported (CPU, GPU, SKIN, etc)
-    optional android.os.TemperatureTypeEnum sensor_type = 1;
-
-    // Throttling state, this field is DEPRECATED
-    enum State {
-        UNKNOWN = 0;
-        START = 1; // START indicated that throttling was triggered.
-        STOP = 2; // STOP indicates that throttling was cleared.
-    }
-    optional State state = 2;
-
-    optional float temperature = 3;
-}
-
-/**
- * Logs when the screen state changes.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
- */
-message ScreenStateChanged {
-    // New screen state, from frameworks/base/core/proto/android/view/enums.proto.
-    optional android.view.DisplayStateEnum state = 1
-            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
-}
-
-/**
- * Logs that the process state of the uid, as determined by ActivityManager
- * (i.e. the highest process state of that uid's processes) has changed.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
- */
-message UidProcessStateChanged {
-    optional int32 uid = 1 [(state_field_option).primary_field = true, (is_uid) = true];
-
-    // The state, from frameworks/base/core/proto/android/app/enums.proto.
-    optional android.app.ProcessStateEnum state = 2
-            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
-}
-
-/**
- * Logs process state change of a process, as per the activity manager.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/ProcessRecord.java
- */
-message ProcessStateChanged {
-    optional int32 uid = 1;
-    optional string process_name = 2;
-    optional string package_name = 3;
-    // TODO: remove this when validation is done
-    optional int64 version = 5;
-    // The state, from frameworks/base/core/proto/android/app/enums.proto.
-    optional android.app.ProcessStateEnum state = 4;
-}
-
-/**
- * Logs when ActivityManagerService sleep state is changed.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/ActivityTaskManagerService.java
- */
-message ActivityManagerSleepStateChanged {
-    // TODO: import frameworks proto
-    enum State {
-        UNKNOWN = 0;
-        ASLEEP = 1;
-        AWAKE = 2;
-    }
-    optional State state = 1
-            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
-}
-
-/**
- * Logs when system memory state changes.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
- */
-message MemoryFactorStateChanged {
-    // TODO: import frameworks proto
-    enum State {
-        MEMORY_UNKNOWN = 0;
-        NORMAL = 1;     // normal.
-        MODERATE = 2;   // moderate memory pressure.
-        LOW = 3;        // low memory.
-        CRITICAL = 4;   // critical memory.
-
-    }
-    optional State factor = 1 [(state_field_option).exclusive_state = true];
-}
-
-/**
- * Logs when app is using too much cpu, according to ActivityManagerService.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
- */
-message ExcessiveCpuUsageReported {
-    optional int32 uid = 1;
-    optional string process_name = 2;
-    optional string package_name = 3;
-    // package version. TODO: remove this when validation is done
-    optional int64 version = 4;
-}
-
-/**
- * Logs when a cached process is killed, along with its pss.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
- */
-message CachedKillReported {
-    optional int32 uid = 1;
-    optional string process_name = 2;
-    optional string package_name = 3;
-    // TODO: remove this when validation is done
-    optional int64 version = 5;
-    optional int64 pss = 4;
-}
-
-/**
- * Logs the change in wifi health.
- *
- * Logged from:
- *   frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiDataStall.java
- */
-message WifiHealthStatReported {
-    enum Band {
-        UNKNOWN = 0;
-        // All of 2.4GHz band
-        BAND_2G = 1;
-        // Frequencies in the range of [5150, 5250) GHz
-        BAND_5G_LOW = 2;
-        // Frequencies in the range of [5250, 5725) GHz
-        BAND_5G_MIDDLE = 3;
-        // Frequencies in the range of [5725, 5850) GHz
-        BAND_5G_HIGH = 4;
-        // Frequencies in the range of [5925, 6425) GHz
-        BAND_6G_LOW = 5;
-        // Frequencies in the range of [6425, 6875) GHz
-        BAND_6G_MIDDLE = 6;
-        // Frequencies in the range of [6875, 7125) GHz
-        BAND_6G_HIGH = 7;
-    }
-    // duration this stat is obtained over in milliseconds
-    optional int32 duration_millis = 1;
-    // whether wifi is classified as sufficient for the user's data traffic, determined
-    // by whether the calculated throughput exceeds the average demand within |duration_millis|
-    optional bool is_sufficient = 2;
-    // whether cellular data is available
-    optional bool is_cell_data_available = 3;
-    // the Band bucket the connected network is on
-    optional Band band = 4;
-}
-
-/**
- * Logged when wifi detects a significant change in connection failure rate.
- *
- * Logged from: frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiHealthMonitor.java
- *
- */
-message WifiFailureStatReported {
-    enum AbnormalityType {
-        UNKNOWN = 0;
-        SIGNIFICANT_INCREASE = 1;
-        SIGNIFICANT_DECREASE = 2;
-        SIMPLY_HIGH = 3;
-    }
-    enum FailureType {
-        FAILURE_UNKNOWN = 0;
-        FAILURE_CONNECTION = 1;
-        FAILURE_ASSOCIATION_REJECTION = 2;
-        FAILURE_ASSOCIATION_TIMEOUT = 3;
-        FAILURE_AUTHENTICATION = 4;
-        FAILURE_NON_LOCAL_DISCONNECTION = 5;
-        FAILURE_SHORT_CONNECTION_DUE_TO_NON_LOCAL_DISCONNECTION = 6;
-    }
-    // Reason for uploading this stat
-    optional AbnormalityType abnormality_type = 1;
-    // The particular type of failure
-    optional FailureType failure_type = 2;
-    // How many times we have encountered this combination of AbnormalityType and FailureType
-    optional int32 failure_count = 3;
-}
-
-/**
- * Logs whether a wifi connection is successful and reasons for failure if it isn't.
- *
- * Logged from:
- *   frameworks/opt/net/wifi/service/java/com/android/server/wifi/ClientModeImpl.java
- */
-message WifiConnectionResultReported {
-    enum FailureCode {
-        FAILURE_UNKNOWN = 0;
-        FAILURE_ASSOCIATION_TIMEOUT = 1;
-        FAILURE_ASSOCIATION_REJECTION = 2;
-        FAILURE_AUTHENTICATION_GENERAL = 3;
-        FAILURE_AUTHENTICATION_EAP = 4;
-        FAILURE_DHCP = 5;
-        FAILURE_NETWORK_DISCONNECTION = 6;
-        FAILURE_ROAM_TIMEOUT = 7;
-    }
-    // true represents a successful connection
-    optional bool connection_result = 1;
-    // reason for the connection failure
-    optional FailureCode failure_code = 2;
-    // scan rssi before the connection attempt
-    optional int32 rssi = 3;
-}
-
-/**
- * Logs when memory stats of a process is reported.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/ProcessRecord.java
- */
-message ProcessMemoryStatReported {
-    optional int32 uid = 1;
-    optional string process_name = 2;
-    optional string package_name = 3;
-    //TODO: remove this when validation is done
-    optional int64 version = 9;
-    optional int64 pss = 4;
-    optional int64 uss = 5;
-    optional int64 rss = 6;
-    enum Type {
-        ADD_PSS_INTERNAL_SINGLE = 0;
-        ADD_PSS_INTERNAL_ALL_MEM = 1;
-        ADD_PSS_INTERNAL_ALL_POLL = 2;
-        ADD_PSS_EXTERNAL = 3;
-        ADD_PSS_EXTERNAL_SLOW = 4;
-    }
-    optional Type type = 7;
-    optional int64 duration_millis = 8;
-}
-
-/**
- * Logs that a process started, finished, crashed, or ANRed.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
- */
-message ProcessLifeCycleStateChanged {
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // The process name (usually same as the app name).
-    optional string process_name = 2;
-
-    // What lifecycle state the process changed to.
-    // This enum is specific to atoms.proto.
-    enum State {
-        FINISHED = 0;
-        STARTED = 1;
-        CRASHED = 2;
-    }
-    optional State state = 3;
-}
-
-/**
- * Logs when the ble scan state changes.
- *
- * Logged from:
- *   packages/apps/Bluetooth/src/com/android/bluetooth/gatt/AppScanStats.java
- */
-message BleScanStateChanged {
-    repeated AttributionNode attribution_node = 1
-            [(state_field_option).primary_field_first_uid = true];
-
-    enum State {
-        OFF = 0;
-        ON = 1;
-        // RESET indicates all ble stopped. Used when it (re)starts (e.g. after it crashes).
-        RESET = 2;
-    }
-    optional State state = 2 [
-        (state_field_option).exclusive_state = true,
-        (state_field_option).default_state_value = 0 /* State.OFF */,
-        (state_field_option).trigger_state_reset_value = 2 /* State.RESET */,
-        (state_field_option).nested = true
-    ];
-
-    // Does the scan have a filter.
-    optional bool is_filtered = 3 [(state_field_option).primary_field = true];
-    // Whether the scan is a CALLBACK_TYPE_FIRST_MATCH scan. Called 'background' scan internally.
-    optional bool is_first_match = 4 [(state_field_option).primary_field = true];
-    // Whether the scan set to piggy-back off the results of other scans (SCAN_MODE_OPPORTUNISTIC).
-    optional bool is_opportunistic = 5 [(state_field_option).primary_field = true];
-}
-
-/**
- * Logs reporting of a ble scan finding results.
- *
- * Logged from:
- *   packages/apps/Bluetooth/src/com/android/bluetooth/gatt/AppScanStats.java
- */
-// TODO: Consider also tracking per-scanner-id.
-message BleScanResultReceived {
-    repeated AttributionNode attribution_node = 1;
-
-    // Number of ble scan results returned.
-    optional int32 num_results = 2;
-}
-
-/**
- * Logs when a sensor state changes.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
- */
-message SensorStateChanged {
-    repeated AttributionNode attribution_node = 1;
-
-    // The id (int) of the sensor.
-    optional int32 sensor_id = 2;
-
-    enum State {
-        OFF = 0;
-        ON = 1;
-    }
-    optional State state = 3;
-}
-
-/**
- * Logs when GPS state changes.
- *
- * Logged from:
- *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
- */
-message GpsScanStateChanged {
-    repeated AttributionNode attribution_node = 1;
-
-    enum State {
-        OFF = 0;
-        ON = 1;
-    }
-    optional State state = 2;
-}
-
-/**
- * Logs when GPS signal quality.
- *
- * Logged from:
- *   /frameworks/base/location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java
- */
-message GpsSignalQualityChanged {
-    optional android.server.location.GpsSignalQualityEnum level = 1;
-}
-
-
-/**
- * Logs when a sync manager sync state changes.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
- */
-message SyncStateChanged {
-    repeated AttributionNode attribution_node = 1;
-
-    // Name of the sync (as named in the app). Can be chosen at run-time.
-    optional string sync_name = 2;
-
-    enum State {
-        OFF = 0;
-        ON = 1;
-    }
-    optional State state = 3;
-}
-
-/*
- * Deferred job stats.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/job/JobSchedulerService.java
-*/
-message DeferredJobStatsReported {
-    repeated AttributionNode attribution_node = 1;
-
-    // Number of jobs deferred.
-    optional int32 num_jobs_deferred = 2;
-
-    // Time since the last job runs.
-    optional int64 time_since_last_job_millis = 3;
-}
-
-/**
- * Logs when a job scheduler job state changes.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
- */
-message ScheduledJobStateChanged {
-    repeated AttributionNode attribution_node = 1;
-
-    // Name of the job (as named in the app)
-    optional string job_name = 2;
-
-    enum State {
-        FINISHED = 0;
-        STARTED = 1;
-        SCHEDULED = 2;
-    }
-    optional State state = 3;
-
-    // The reason a job has stopped.
-    // This is only applicable when the state is FINISHED.
-    // The default value is STOP_REASON_UNKNOWN.
-    optional android.app.job.StopReasonEnum stop_reason = 4;
-
-    // The standby bucket of the app that scheduled the job. These match the framework constants
-    // defined in JobSchedulerService.java with the addition of UNKNOWN using -1, as ACTIVE is
-    // already assigned 0.
-    enum Bucket {
-        UNKNOWN = -1;
-        ACTIVE = 0;
-        WORKING_SET = 1;
-        FREQUENT = 2;
-        RARE = 3;
-        NEVER = 4;
-        RESTRICTED = 5;
-    }
-    optional Bucket standby_bucket = 5 [default = UNKNOWN];
-
-    // The job id (as assigned by the app).
-    optional int32 job_id = 6;
-
-    // One flag for each of the API constraints defined by Jobscheduler. Does not include implcit
-    // constraints as they are always assumed to be set.
-    optional bool has_charging_constraint = 7;
-    optional bool has_battery_not_low_constraint = 8;
-    optional bool has_storage_not_low_constraint = 9;
-    optional bool has_timing_delay_constraint = 10;
-    optional bool has_deadline_constraint = 11;
-    optional bool has_idle_constraint = 12;
-    optional bool has_connectivity_constraint = 13;
-    optional bool has_content_trigger_constraint = 14;
-}
-
-/**
- * Logs when the audio state changes.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
- */
-message AudioStateChanged {
-    repeated AttributionNode attribution_node = 1;
-
-    enum State {
-        OFF = 0;
-        ON = 1;
-        // RESET indicates all audio stopped. Used when it (re)starts (e.g. after it crashes).
-        RESET = 2;
-    }
-    optional State state = 2;
-}
-
-/**
- * Logs when the video codec state changes.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
- */
-message MediaCodecStateChanged {
-    repeated AttributionNode attribution_node = 1;
-
-    enum State {
-        OFF = 0;
-        ON = 1;
-        // RESET indicates all mediaCodec stopped. Used when it (re)starts (e.g. after it crashes).
-        RESET = 2;
-    }
-    optional State state = 2;
-}
-
-/**
- * Logs when the flashlight state changes.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
- */
-message FlashlightStateChanged {
-    repeated AttributionNode attribution_node = 1;
-
-    enum State {
-        OFF = 0;
-        ON = 1;
-        // RESET indicates all flashlight stopped. Used when it (re)starts (e.g. after it crashes).
-        RESET = 2;
-    }
-    optional State state = 2;
-}
-
-/**
- * Logs when the camera state changes.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
- */
-message CameraStateChanged {
-    repeated AttributionNode attribution_node = 1;
-
-    enum State {
-        OFF = 0;
-        ON = 1;
-        // RESET indicates all camera stopped. Used when it (re)starts (e.g. after it crashes).
-        RESET = 2;
-    }
-    optional State state = 2;
-}
-
-/**
- * Logs that the state of a wakelock (per app and per wakelock name) has changed.
- *
- * Logged from:
- *   TODO
- */
-message WakelockStateChanged {
-    repeated AttributionNode attribution_node = 1
-            [(state_field_option).primary_field_first_uid = true];
-
-    // The type (level) of the wakelock; e.g. a partial wakelock or a full wakelock.
-    // From frameworks/base/core/proto/android/os/enums.proto.
-    optional android.os.WakeLockLevelEnum type = 2 [(state_field_option).primary_field = true];
-
-    // The wakelock tag (Called tag in the Java API, sometimes name elsewhere).
-    optional string tag = 3 [(state_field_option).primary_field = true];
-
-    enum State {
-        RELEASE = 0;
-        ACQUIRE = 1;
-        CHANGE_RELEASE = 2;
-        CHANGE_ACQUIRE = 3;
-    }
-    optional State state = 4 [
-        (state_field_option).exclusive_state = true,
-        (state_field_option).default_state_value = 0,
-        (state_field_option).nested = true
-    ];
-}
-
-/**
- * Logs when a partial wakelock is considered 'long' (over 1 min).
- *
- * Logged from:
- *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
- */
-message LongPartialWakelockStateChanged {
-    repeated AttributionNode attribution_node = 1;
-
-    // The wakelock tag (Called tag in the Java API, sometimes name elsewhere).
-    optional string tag = 2;
-
-    // TODO: I have no idea what this is.
-    optional string history_tag = 3;
-
-    enum State {
-        OFF = 0;
-        ON = 1;
-    }
-    optional State state = 4;
-}
-
-/**
- * Logs when the device is interactive, according to the PowerManager Notifier.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/power/Notifier.java
- */
-message InteractiveStateChanged {
-    enum State {
-        OFF = 0;
-        ON = 1;
-    }
-    optional State state = 1;
-}
-
-/**
- * Logs Battery Saver state change.
- *
- * Logged from:
- *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
- */
-message BatterySaverModeStateChanged {
-    enum State {
-        OFF = 0;
-        ON = 1;
-    }
-    optional State state = 1
-            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
-}
-
-/**
- * Logs Doze mode state change.
- *
- * Logged from:
- *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
- */
-message DeviceIdleModeStateChanged {
-    optional android.server.DeviceIdleModeEnum state = 1
-            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
-}
-
-
-/**
- * Logs state change of Doze mode including maintenance windows.
- *
- * Logged from:
- *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
- */
-message DeviceIdlingModeStateChanged {
-    optional android.server.DeviceIdleModeEnum state = 1
-            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
-}
-
-/**
- * Logs screen brightness level.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
- */
-message ScreenBrightnessChanged {
-    // Screen brightness level. Should be in [-1, 255] according to PowerManager.java.
-    optional int32 level = 1;
-}
-
-/**
- * Logs battery level (percent full, from 0 to 100).
- *
- * Logged from:
- *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
- */
-message BatteryLevelChanged {
-    // Battery level. Should be in [0, 100].
-    optional int32 battery_level = 1;
-}
-
-/**
- * Logs change in charging status of the device.
- *
- * Logged from:
- *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
- */
-message ChargingStateChanged {
-    // State of the battery, from frameworks/base/core/proto/android/os/enums.proto.
-    optional android.os.BatteryStatusEnum state = 1
-            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
-}
-
-/**
- * Logs whether the device is plugged in, and what power source it is using.
- *
- * Logged from:
- *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
- */
-message PluggedStateChanged {
-    // Whether the device is plugged in, from frameworks/base/core/proto/android/os/enums.proto.
-    optional android.os.BatteryPluggedStateEnum state = 1
-            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
-}
-
-/**
- * Logs when an app's wakeup alarm fires.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
- */
-message WakeupAlarmOccurred {
-    repeated AttributionNode attribution_node = 1;
-
-    // Name of the wakeup alarm.
-    optional string tag = 2;
-
-    // Name of source package (for historical reasons, since BatteryStats tracked it).
-    optional string package_name = 3;
-
-    // The App Standby bucket of the app that scheduled the alarm at the time the alarm fired.
-    optional AppStandbyBucketChanged.Bucket app_standby_bucket = 4;
-}
-
-/**
- * Logs when an an app causes the mobile radio to change state.
- * Changing from LOW to MEDIUM or HIGH can be considered the app waking the mobile radio.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/NetworkManagementService.java
- */
-message MobileRadioPowerStateChanged {
-    repeated AttributionNode attribution_node = 1;
-
-    // Power state, from frameworks/base/core/proto/android/telephony/enums.proto.
-    optional android.telephony.DataConnectionPowerStateEnum state = 2;
-}
-
-/**
- * Logs when an an app causes the wifi radio to change state.
- * Changing from LOW to MEDIUM or HIGH can be considered the app waking the wifi radio.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/NetworkManagementService.java
- */
-message WifiRadioPowerStateChanged {
-    repeated AttributionNode attribution_node = 1;
-
-    // Power state, from frameworks/base/core/proto/android/telephony/enums.proto.
-    optional android.telephony.DataConnectionPowerStateEnum state = 2;
-}
-
-/**
- * Logs kernel wakeup reasons and aborts.
- *
- * Logged from:
- *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
- */
-message KernelWakeupReported {
-    // Name of the kernel wakeup reason (or abort).
-    optional string wakeup_reason_name = 1;
-
-    // Duration (in microseconds) for the wake-up interrupt to be serviced.
-    optional int64 duration_micros = 2;
-}
-
-/**
- * Logs when Wifi is toggled on/off.
- * Note that Wifi may still perform certain functions (e.g. location scanning) even when disabled.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
- */
-message WifiEnabledStateChanged {
-    enum State {
-        OFF = 0;
-        ON = 1;
-    }
-    optional State state = 1;
-}
-
-/**
- * This atom is deprecated starting in R.
- *
- * Logs when an app causes Wifi to run. In this context, 'to run' means to use Wifi Client Mode.
- * TODO: Include support for Hotspot, perhaps by using an extra field to denote 'mode'.
- * Note that Wifi Scanning is monitored separately in WifiScanStateChanged.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
- */
-message WifiRunningStateChanged {
-    repeated AttributionNode attribution_node = 1;
-
-    enum State {
-        OFF = 0;
-        ON = 1;
-    }
-    optional State state = 2;
-}
-
-/**
- * Logs wifi locks held by an app.
- *
- * Logged from:
- *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
- */
-message WifiLockStateChanged {
-    repeated AttributionNode attribution_node = 1;
-
-    enum State {
-        OFF = 0;
-        ON = 1;
-    }
-    optional State state = 2;
-
-    // WifiLock type, from frameworks/base/core/proto/android/wifi/enums.proto.
-    optional android.net.wifi.WifiModeEnum mode = 3;
-}
-
-/**
- * Logs wifi signal strength changes.
- *
- * Logged from:
- *   frameworks/opt/net/wifi/service/java/com/android/server/wifi/ClientModeImpl.java
- */
-message WifiSignalStrengthChanged {
-    // Signal strength, from frameworks/base/core/proto/android/telephony/enums.proto.
-    optional android.telephony.SignalStrengthEnum signal_strength = 1;
-}
-
-/**
- * Logs wifi scans performed by an app.
- *
- * Logged from:
- *   frameworks/opt/net/wifi/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java
- */
-message WifiScanStateChanged {
-    repeated AttributionNode attribution_node = 1;
-
-    enum State {
-        OFF = 0;
-        ON = 1;
-    }
-    optional State state = 2;
-}
-
-/**
- * Logs wifi multicast locks held by an app
- *
- * Logged from:
- *   frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiMulticastLockManager.java
- */
-message WifiMulticastLockStateChanged {
-    repeated AttributionNode attribution_node = 1;
-
-    enum State {
-        OFF = 0;
-        ON = 1;
-    }
-    optional State state = 2;
-
-    optional string tag = 3;
-}
-
-/**
- * Logs shutdown reason and duration on next boot.
- *
- * Logged from:
- *   frameworks/base/core/java/com/android/server/BootReceiver.java
- */
-message ShutdownSequenceReported {
-    // True if shutdown is for a reboot. Default: false if we do not know.
-    optional bool reboot = 1;
-
-    // Reason for shutdown. Eg: userrequested. Default: "<EMPTY>".
-    optional string reason = 2;
-
-    // Beginning of shutdown time in ms using wall clock time since unix epoch.
-    // Default: 0 if no start time received.
-    optional int64 start_time_millis = 3;
-
-    // Duration of shutdown in ms. Default: 0 if no duration received.
-    optional int64 duration_millis = 4;
-}
-
-
-/**
- * Logs boot reason and duration.
- *
- * Logged from:
- *   system/core/bootstat/bootstat.cpp
- */
-message BootSequenceReported {
-    // Reason for bootloader boot. Eg. reboot. See bootstat.cpp for larger list
-    // Default: "<EMPTY>" if not available.
-    optional string bootloader_reason = 1;
-
-    // Reason for system boot. Eg. bootloader, reboot,userrequested
-    // Default: "<EMPTY>" if not available.
-    optional string system_reason = 2;
-
-    // End of boot time in ms from unix epoch using system wall clock.
-    optional int64 end_time_millis = 3;
-
-    // Total boot duration in ms.
-    optional int64 total_duration_millis = 4;
-
-    // Bootloader duration in ms.
-    optional int64 bootloader_duration_millis = 5;
-
-    // Time since last boot in ms. Default: 0 if not available.
-    optional int64 time_since_last_boot = 6;
-}
-
-
-/**
- * Logs call state and disconnect cause (if applicable).
- *
- * Logged from:
- *   packages/services/Telecomm/src/com/android/server/telecom/Call.java
- */
-message CallStateChanged {
-    // The state of the call. Eg. DIALING, ACTIVE, ON_HOLD, DISCONNECTED.
-    // From frameworks/base/core/proto/android/telecomm/enums.proto.
-    optional android.telecom.CallStateEnum call_state = 1;
-
-    // The reason the call disconnected. Eg. ERROR, MISSED, REJECTED, BUSY.
-    // This value is only applicable when the call_state is DISCONNECTED, and
-    // should always be UNKNOWN if the call_state is not DISCONNECTED.
-    // From frameworks/base/core/proto/android/telecomm/enums.proto.
-    optional android.telecom.DisconnectCauseEnum disconnect_cause = 2;
-
-    // True if the call is self-managed, which are apps that use the
-    // telecom infrastructure to make their own calls.
-    optional bool self_managed = 3;
-
-    // True if call is external. External calls are calls on connected Wear
-    // devices but show up in Telecom so the user can pull them onto the device.
-    optional bool external_call = 4;
-}
-
-/**
- * Logs keyguard state. The keyguard is the lock screen.
- *
- * Logged from:
- *   frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
- */
-message KeyguardStateChanged {
-    enum State {
-        UNKNOWN = 0;
-        // The keyguard is hidden when the phone is unlocked.
-        HIDDEN = 1;
-        // The keyguard is shown when the phone is locked (screen turns off).
-        SHOWN= 2;
-        // The keyguard is occluded when something is overlaying the keyguard.
-        // Eg. Opening the camera while on the lock screen.
-        OCCLUDED = 3;
-    }
-    optional State state = 1;
-}
-
-/**
- * Logs keyguard bouncer state. The bouncer is a part of the keyguard, and
- * prompts the user to enter a password (pattern, pin, etc).
- *
- * Logged from:
- *   frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java
- */
-
-message KeyguardBouncerStateChanged {
-    enum State {
-        UNKNOWN = 0;
-        // Bouncer is hidden, either as a result of successfully entering the
-        // password, screen timing out, or user going back to lock screen.
-        HIDDEN = 1;
-        // This is when the user is being prompted to enter the password.
-        SHOWN = 2;
-    }
-    optional State state = 1;
-}
-
-/**
- * Logs the result of entering a password into the keyguard bouncer.
- *
- * Logged from:
- *   frameworks/base/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java
- */
-message KeyguardBouncerPasswordEntered {
-    enum BouncerResult {
-        UNKNOWN = 0;
-        // The password entered was incorrect.
-        FAILURE = 1;
-        // The password entered was correct.
-        SUCCESS = 2;
-    }
-    optional BouncerResult result = 1;
-}
-
-/*
- * Logs changes to the configuration of the device. The configuration is defined
- * in frameworks/base/core/java/android/content/res/Configuration.java
- * More documentation is at https://d.android.com/reference/android/content/res/Configuration.html
- * Please go there to interpret the possible values each field can be.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
- */
-message ResourceConfigurationChanged {
-    // Bit mask of color capabilities of the screen.
-    // Contains information about the color gamut and hdr mode of the screen.
-    // See: https://d.android.com/reference/android/content/res/Configuration.html#colorMode
-    optional int32 color_mode = 1;
-
-    // The target screen density being rendered to.
-    // See: https://d.android.com/reference/android/content/res/Configuration.html#densityDpi
-    optional int32 density_dpi = 2;
-
-    // Current user preference for the scaling factor for fonts,
-    // relative to the base density scaling.
-    // See: https://d.android.com/reference/android/content/res/Configuration.html#fontScale
-    optional float font_scale = 3;
-
-    // Flag indicating whether the hard keyboard is hidden.
-    // See: https://d.android.com/reference/android/content/res/Configuration.html#hardKeyboardHidden
-    optional int32 hard_keyboard_hidden = 4;
-
-    // The type of keyboard attached to the device.
-    // See: https://d.android.com/reference/android/content/res/Configuration.html#keyboard
-    optional int32 keyboard = 5;
-
-    // Flag indicating whether any keyboard is available. Takes soft keyboards into account.
-    // See: https://d.android.com/reference/android/content/res/Configuration.html#keyboardHidden
-    optional int32 keyboard_hidden = 6;
-
-    // IMSI MCC (Mobile Country Code), corresponding to mcc resource qualifier.
-    // 0 if undefined.
-    // See: https://d.android.com/reference/android/content/res/Configuration.html#mcc
-    optional int32 mcc = 7;
-
-    // IMSI MNC (Mobile Network Code), corresponding to mnc resource qualifier.
-    // 0 if undefined. Note: the actual MNC may be 0, to check for this use the
-    // MNC_ZERO symbol defined in Configuration.java.
-    // See: https://d.android.com/reference/android/content/res/Configuration.html#mnc
-    optional int32 mnc = 8;
-
-    // The kind of navigation available on the device.
-    // See: https://developer.android.com/reference/android/content/res/Configuration.html#navigation
-    optional int32 navigation = 9;
-
-    // Flag indicating whether the navigation is available.
-    // See: https://d.android.com/reference/android/content/res/Configuration.html#navigationHidden
-    optional int32 navigation_hidden = 10;
-
-    // Overall orientation of the screen.
-    // See: https://d.android.com/reference/android/content/res/Configuration.html#orientation
-    optional int32 orientation = 11;
-
-    // The current height of the available screen space, in dp units.
-    // See: https://d.android.com/reference/android/content/res/Configuration.html#screenHeightDp
-    optional int32 screen_height_dp = 12;
-
-    // Bit mask of overall layout of the screen.
-    // Contains information about screen size, whether the screen is wider/taller
-    // than normal, whether the screen layout is right-tl-left or left-to-right,
-    // and whether the screen has a rounded shape.
-    // See: https://d.android.com/reference/android/content/res/Configuration.html#screenLayout
-    optional int32 screen_layout = 13;
-
-    // Current width of the available screen space, in dp units.
-    // See: https://d.android.com/reference/android/content/res/Configuration.html#screenWidthDp
-    optional int32 screen_width_dp = 14;
-
-    // The smallest screen size an application will see in normal operation.
-    // This is the smallest value of both screenWidthDp and screenHeightDp
-    // in portrait and landscape.
-    // See: https://d.android.com/reference/android/content/res/Configuration.html#smallestScreenWidthDp
-    optional int32 smallest_screen_width_dp = 15;
-
-    // The type of touch screen attached to the device.
-    // See: https://d.android.com/reference/android/content/res/Configuration.html#touchscreen
-    optional int32 touchscreen = 16;
-
-    // Bit mask of the ui mode.
-    // Contains information about the overall ui mode of the device.
-    // Eg: NORMAL, DESK, CAR, TELEVISION, WATCH, VR_HEADSET
-    // Also contains information about whether the device is in night mode.
-    // See: https://d.android.com/reference/android/content/res/Configuration.html#uiMode
-    optional int32 ui_mode = 17;
-}
-
-
-/**
- * Logs changes in the connection state of the mobile radio.
- *
- * Logged from:
- *    frameworks/opt/telephony/src/java/com/android/internal/telephony/dataconnection/DataConnection.java
- */
-message MobileConnectionStateChanged {
-    // States are from the state machine DataConnection.java.
-    enum State {
-        UNKNOWN = 0;
-        // The connection is inactive, or disconnected.
-        INACTIVE = 1;
-        // The connection is being activated, or connecting.
-        ACTIVATING = 2;
-        // The connection is active, or connected.
-        ACTIVE = 3;
-        // The connection is disconnecting.
-        DISCONNECTING = 4;
-        // The connection is disconnecting after creating a connection.
-        DISCONNECTION_ERROR_CREATING_CONNECTION = 5;
-    }
-    optional State state  = 1;
-    // For multi-sim phones, this distinguishes between the sim cards.
-    optional int32 sim_slot_index = 2;
-    // Used to identify the connection. Starts at 0 and increments by 1 for
-    // every new network created. Resets whenever the device reboots.
-    optional int32 data_connection_id = 3;
-    // A bitmask for the capabilities of this connection.
-    // Eg. DEFAULT (internet), MMS, SUPL, DUN, IMS.
-    // Default value (if we have no information): 0
-    optional int64 capabilities = 4;
-    // If this connection has internet.
-    // This just checks if the DEFAULT bit of capabilities is set.
-    optional bool has_internet = 5;
-}
-
-/**
- * Logs changes in mobile radio technology. eg: LTE, EDGE, CDMA.
- *
- * Logged from:
- *   frameworks/opt/telephony/src/java/com/android/internal/telephony/ServiceStateTracker.java
- */
-message MobileRadioTechnologyChanged {
-    optional android.telephony.NetworkTypeEnum state = 1;
-    // For multi-sim phones, this distinguishes between the sim cards.
-    optional int32 sim_slot_index = 2;
-}
-
-/**
- * Logs the VID and PID of any connected USB devices.
- *
- * Notes if any Audio, HID (input buttons/mouse/keyboard), or Storage interfaces are present.
- *
- * Logged by Vendor.
- */
-message UsbDeviceAttached {
-    optional int32 vid = 1;
-    optional int32 pid = 2;
-    optional bool has_audio = 3;
-    optional bool has_hid = 4;
-    optional bool has_storage = 5;
-    enum State {
-        STATE_DISCONNECTED = 0;
-        STATE_CONNECTED = 1;
-    }
-    optional State state = 6;
-    optional int64 last_connect_duration_millis = 7;
-}
-
-
-/**
- * Logs when Bluetooth is enabled and disabled.
- *
- * Logged from:
- *   services/core/java/com/android/server/BluetoothManagerService.java
- */
-message BluetoothEnabledStateChanged {
-    repeated AttributionNode attribution_node = 1;
-    // Whether or not bluetooth is enabled on the device.
-    enum State {
-        UNKNOWN = 0;
-        ENABLED = 1;
-        DISABLED = 2;
-    }
-    optional State state = 2;
-    // The reason for being enabled/disabled.
-    // Eg. Airplane mode, crash, application request.
-    optional android.bluetooth.EnableDisableReasonEnum reason = 3;
-    // If the reason is an application request, this will be the package name.
-    optional string pkg_name = 4;
-}
-
-/**
- * Logs when profiles on a Bluetooth device connects and disconnects.
- *
- * Logged from:
- *    packages/apps/Bluetooth/src/com/android/bluetooth/btservice/RemoteDevices.java
- *
- * Next Tag: 6
- */
-message BluetoothConnectionStateChanged {
-    // The state of the connection.
-    // Eg: CONNECTING, CONNECTED, DISCONNECTING, DISCONNECTED.
-    optional android.bluetooth.ConnectionStateEnum state = 1;
-    // An identifier that can be used to match connect and disconnect events.
-    // Currently is last two bytes of a hash of a device level ID and
-    // the mac address of the bluetooth device that is connected.
-    // Deprecated: use obfuscated_id instead, this one is always 0 for Q+
-    optional int32 obfuscated_id = 2 [deprecated = true];
-    // The profile that is connected. Eg. GATT, A2DP, HEADSET.
-    // From android.bluetooth.BluetoothAdapter.java
-    // Default: 0 when not used
-    optional int32 bt_profile = 3;
-    // An identifier that can be used to match events for this device.
-    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
-    // Salt: Randomly generated 256 bit value
-    // Hash algorithm: HMAC-SHA256
-    // Size: 32 byte
-    // Default: null or empty if the device identifier is not known
-    optional bytes new_obfuscated_id = 4 [(android.os.statsd.log_mode) = MODE_BYTES];
-    // An identifier that can be used to match events for this device.
-    // The incremental identifier is locally generated and guaranteed not derived
-    // from any globally unique hardware id.
-    // For paired devices, it stays consistent between Bluetooth toggling for the
-    // same remote device.
-    // For unpaired devices, it stays consistent within the same Bluetooth adapter
-    // session for the same remote device.
-    // Default: 0 if the device's metric id is unknown.
-    optional int32 metric_id = 5;
-}
-
-/**
- * Logs when a Bluetooth device connects and disconnects over ACL
- *
- * Logged from:
- *    packages/apps/Bluetooth/src/com/android/bluetooth/btservice/AdapterProperties.java
- *
- * Next Tag: 4
- */
-message BluetoothAclConnectionStateChanged {
-    // An identifier that can be used to match events for this device.
-    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
-    // Salt: Randomly generated 256 bit value
-    // Hash algorithm: HMAC-SHA256
-    // Size: 32 byte
-    // Default: null or empty if the device identifier is not known
-    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
-    // The state of the connection.
-    // Eg: CONNECTING, CONNECTED, DISCONNECTING, DISCONNECTED.
-    optional android.bluetooth.ConnectionStateEnum state = 2;
-    // An identifier that can be used to match events for this device.
-    // The incremental identifier is locally generated and guaranteed not derived
-    // from any globally unique hardware id.
-    // For paired devices, it stays consistent between Bluetooth toggling for the
-    // same remote device.
-    // For unpaired devices, it stays consistent within the same Bluetooth adapter
-    // session for the same remote device.
-    // Default: 0 if the device's metric id is unknown.
-    optional int32 metric_id = 3;
-}
-
-/**
- * Logs when a Bluetooth device connects and disconnects over SCO
- *
- * Logged from:
- *    packages/apps/Bluetooth/src/com/android/bluetooth/hfp/HeadsetStateMachine.java
- *    packages/apps/Bluetooth/src/com/android/bluetooth/hfp/HeadsetClientStateMachine.java
- *
- * Next Tag: 5
- */
-message BluetoothScoConnectionStateChanged {
-    // An identifier that can be used to match events for this device.
-    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
-    // Salt: Randomly generated 256 bit value
-    // Hash algorithm: HMAC-SHA256
-    // Size: 32 byte
-    // Default: null or empty if the device identifier is not known
-    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
-    // The state of the connection.
-    // Eg: CONNECTING, CONNECTED, DISCONNECTING, DISCONNECTED.
-    optional android.bluetooth.ConnectionStateEnum state = 2;
-    // Codec used for this SCO connection
-    // Default: UNKNOWN
-    optional android.bluetooth.hfp.ScoCodec codec = 3;
-    // An identifier that can be used to match events for this device.
-    // The incremental identifier is locally generated and guaranteed not derived
-    // from any globally unique hardware id.
-    // For paired devices, it stays consistent between Bluetooth toggling for the
-    // same remote device.
-    // For unpaired devices, it stays consistent within the same Bluetooth adapter
-    // session for the same remote device.
-    // Default: 0 if the device's metric id is unknown.
-    optional int32 metric_id = 4;
-}
-
-/**
- * Logged when active device of a profile changes
- *
- * Logged from:
- *     packages/apps/Bluetooth/src/com/android/bluetooth/a2dp/A2dpService.java
- *     packages/apps/Bluetooth/src/com/android/bluetooth/hfp/HeadsetService.java
- *     packages/apps/Bluetooth/src/com/android/bluetooth/hearingaid/HearingAidService.java
- */
-message BluetoothActiveDeviceChanged {
-    // The profile whose active device has changed. Eg. A2DP, HEADSET, HEARING_AID
-    // From android.bluetooth.BluetoothProfile
-    optional int32 bt_profile = 1;
-    // An identifier that can be used to match events for this new active device.
-    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
-    // Salt: Randomly generated 256 bit value
-    // Hash algorithm: HMAC-SHA256
-    // Size: 32 byte
-    // Default: null or empty if there is no active device for this profile
-    optional bytes obfuscated_id = 2 [(android.os.statsd.log_mode) = MODE_BYTES];
-    // An identifier that can be used to match events for this device.
-    // The incremental identifier is locally generated and guaranteed not derived
-    // from any globally unique hardware id.
-    // For paired devices, it stays consistent between Bluetooth toggling for the
-    // same remote device.
-    // For unpaired devices, it stays consistent within the same Bluetooth adapter
-    // session for the same remote device.
-    // Default: 0 if the device's metric id is unknown.
-    optional int32 metric_id = 3;
-}
-
-// Logs when there is an event affecting Bluetooth device's link layer connection.
-// - This event is triggered when there is a related HCI command or event
-// - Users of this metrics can deduce Bluetooth device's connection state from these events
-// - HCI commands are logged before the command is sent, after receiving command status, and after
-//   receiving command complete
-// - HCI events are logged when they arrive
-//
-// Low level log from system/bt
-//
-// Bluetooth classic commands:
-// - CMD_CREATE_CONNECTION
-// - CMD_DISCONNECT
-// - CMD_CREATE_CONNECTION_CANCEL
-// - CMD_ACCEPT_CONNECTION_REQUEST
-// - CMD_REJECT_CONNECTION_REQUEST
-// - CMD_SETUP_ESCO_CONNECTION
-// - CMD_ACCEPT_ESCO_CONNECTION
-// - CMD_REJECT_ESCO_CONNECTION
-// - CMD_ENH_SETUP_ESCO_CONNECTION
-// - CMD_ENH_ACCEPT_ESCO_CONNECTION
-//
-// Bluetooth low energy commands:
-// - CMD_BLE_CREATE_LL_CONN [Only logged on error or when initiator filter policy is 0x00]
-// - CMD_BLE_CREATE_CONN_CANCEL [Only logged when there is an error]
-// - CMD_BLE_EXTENDED_CREATE_CONNECTION [Only logged on error or when initiator filter policy is 0x00]
-// - CMD_BLE_CLEAR_WHITE_LIST
-// - CMD_BLE_ADD_WHITE_LIST
-// - CMD_BLE_REMOVE_WHITE_LIST
-//
-// Bluetooth classic events:
-// - EVT_CONNECTION_COMP
-// - EVT_CONNECTION_REQUEST
-// - EVT_DISCONNECTION_COMP
-// - EVT_ESCO_CONNECTION_COMP
-// - EVT_ESCO_CONNECTION_CHANGED
-//
-// Bluetooth low energy meta events:
-// - BLE_EVT_CONN_COMPLETE_EVT
-// - BLE_EVT_ENHANCED_CONN_COMPLETE_EVT
-//
-// Next tag: 10
-message BluetoothLinkLayerConnectionEvent {
-    // An identifier that can be used to match events for this device.
-    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
-    // Salt: Randomly generated 256 bit value
-    // Hash algorithm: HMAC-SHA256
-    // Size: 32 byte
-    // Default: null or empty if the device identifier is not known
-    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
-    // Connection handle of this connection if available
-    // Range: 0x0000 - 0x0EFF (12 bits)
-    // Default: 0xFFFF if the handle is unknown
-    optional int32 connection_handle = 2;
-    // Direction of the link
-    // Default: DIRECTION_UNKNOWN
-    optional android.bluetooth.DirectionEnum direction = 3;
-    // Type of this link
-    // Default: LINK_TYPE_UNKNOWN
-    optional android.bluetooth.LinkTypeEnum type = 4;
-
-    // Reason metadata for this link layer connection event, rules for interpretation:
-    // 1. If hci_cmd is set and valid, hci_event can be either EVT_COMMAND_STATUS or
-    //    EVT_COMMAND_COMPLETE, ignore hci_ble_event in this case
-    // 2. If hci_event is set to EVT_BLE_META, look at hci_ble_event; otherwise, if hci_event is
-    //    set and valid, ignore hci_ble_event
-
-    // HCI command associated with this event
-    // Default: CMD_UNKNOWN
-    optional android.bluetooth.hci.CommandEnum hci_cmd = 5;
-    // HCI event associated with this event
-    // Default: EVT_UNKNOWN
-    optional android.bluetooth.hci.EventEnum hci_event = 6;
-    // HCI BLE meta event associated with this event
-    // Default: BLE_EVT_UNKNOWN
-    optional android.bluetooth.hci.BleMetaEventEnum hci_ble_event = 7;
-    // HCI command status code if this is triggerred by hci_cmd
-    // Default: STATUS_UNKNOWN
-    optional android.bluetooth.hci.StatusEnum cmd_status = 8;
-    // HCI reason code associated with this event
-    // Default: STATUS_UNKNOWN
-    optional android.bluetooth.hci.StatusEnum reason_code = 9;
-    // An identifier that can be used to match events for this device.
-    // The incremental identifier is locally generated and guaranteed not derived
-    // from any globally unique hardware id.
-    // For paired devices, it stays consistent between Bluetooth toggling for the
-    // same remote device.
-    // For unpaired devices, it stays consistent within the same Bluetooth adapter
-    // session for the same remote device.
-    // Default: 0 if the device's metric id is unknown.
-    optional int32 metric_id = 10;
-}
-
-/**
- * Logs when a module is rolled back by Watchdog.
- *
- * Logged from: Rollback Manager
- */
-message WatchdogRollbackOccurred {
-    enum RollbackType {
-        UNKNOWN = 0;
-        ROLLBACK_INITIATE = 1;
-        ROLLBACK_SUCCESS = 2;
-        ROLLBACK_FAILURE = 3;
-        ROLLBACK_BOOT_TRIGGERED = 4;
-    }
-    optional RollbackType rollback_type = 1;
-
-    optional string package_name = 2;
-
-    optional int32 package_version_code = 3;
-
-    enum RollbackReasonType {
-        REASON_UNKNOWN = 0;
-        REASON_NATIVE_CRASH = 1;
-        REASON_EXPLICIT_HEALTH_CHECK = 2;
-        REASON_APP_CRASH = 3;
-        REASON_APP_NOT_RESPONDING = 4;
-        REASON_NATIVE_CRASH_DURING_BOOT = 5;
-    }
-    optional RollbackReasonType rollback_reason = 4;
-
-    // Set by RollbackPackageHealthObserver to be the package that is failing when a rollback
-    // is initiated. Empty if the package is unknown.
-    optional string failing_package_name = 5;
-
-    optional TrainExperimentIds experiment_ids = 6 [(log_mode) = MODE_BYTES];
-}
-
-/**
- * Logs when there is a change in Bluetooth A2DP playback state
- *
- * Logged from:
- *     packages/apps/Bluetooth/src/com/android/bluetooth/a2dp/A2dpService.java
- */
-message BluetoothA2dpPlaybackStateChanged {
-    // An identifier that can be used to match events for this device.
-    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
-    // Salt: Randomly generated 256 bit value
-    // Hash algorithm: HMAC-SHA256
-    // Size: 32 byte
-    // Default: null or empty if the device identifier is not known
-    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
-    // Current playback state
-    // Default: PLAYBACK_STATE_UNKNOWN
-    optional android.bluetooth.a2dp.PlaybackStateEnum playback_state = 2;
-    // Current audio coding mode
-    // Default: AUDIO_CODING_MODE_UNKNOWN
-    optional android.bluetooth.a2dp.AudioCodingModeEnum audio_coding_mode = 3;
-    // An identifier that can be used to match events for this device.
-    // The incremental identifier is locally generated and guaranteed not derived
-    // from any globally unique hardware id.
-    // For paired devices, it stays consistent between Bluetooth toggling for the
-    // same remote device.
-    // For unpaired devices, it stays consistent within the same Bluetooth adapter
-    // session for the same remote device.
-    // Default: 0 if the device's metric id is unknown.
-    optional int32 metric_id = 4;
-}
-
-/**
- * Logs when there is a change in A2DP codec config for a particular remote device
- *
- * Logged from:
- *     frameworks/base/core/java/android/bluetooth/BluetoothCodecConfig.java
- *     packages/apps/Bluetooth/src/com/android/bluetooth/a2dp/A2dpService.java
- */
-message BluetoothA2dpCodecConfigChanged {
-    // An identifier that can be used to match events for this device.
-    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
-    // Salt: Randomly generated 256 bit value
-    // Hash algorithm: HMAC-SHA256
-    // Size: 32 byte
-    // Default: null or empty if the device identifier is not known
-    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
-    // Type of codec as defined by various SOURCE_CODEC_TYPE_* constants in BluetoothCodecConfig
-    // Default SOURCE_CODEC_TYPE_INVALID
-    optional int32 codec_type = 2;
-    // Codec priroity, the higher the more preferred, -1 for disabled
-    // Default: CODEC_PRIORITY_DEFAULT
-    optional int32 codec_priority = 3;
-    // Sample rate in Hz as defined by various SAMPLE_RATE_* constants in BluetoothCodecConfig
-    // Default: SAMPLE_RATE_NONE
-    optional int32 sample_rate = 4;
-    // Bits per sample as defined by various BITS_PER_SAMPLE_* constants in BluetoothCodecConfig
-    // Default: BITS_PER_SAMPLE_NONE
-    optional int32 bits_per_sample = 5;
-    // Channel mode as defined by various CHANNEL_MODE_* constants in BluetoothCodecConfig
-    // Default: CHANNEL_MODE_NONE
-    optional int32 channel_mode = 6;
-    // Codec specific values
-    // Default 0
-    optional int64 codec_specific_1 = 7;
-    optional int64 codec_specific_2 = 8;
-    optional int64 codec_specific_3 = 9;
-    optional int64 codec_specific_4 = 10;
-    // An identifier that can be used to match events for this device.
-    // The incremental identifier is locally generated and guaranteed not derived
-    // from any globally unique hardware id.
-    // For paired devices, it stays consistent between Bluetooth toggling for the
-    // same remote device.
-    // For unpaired devices, it stays consistent within the same Bluetooth adapter
-    // session for the same remote device.
-    // Default: 0 if the device's metric id is unknown.
-    optional int32 metric_id = 11;
-}
-
-/**
- * Logs when there is a change in selectable A2DP codec capability for a paricular remote device
- * Each codec's capability is logged separately due to statsd restriction
- *
- * Logged from:
- *     frameworks/base/core/java/android/bluetooth/BluetoothCodecConfig.java
- *     packages/apps/Bluetooth/src/com/android/bluetooth/a2dp/A2dpService.java
- */
-message BluetoothA2dpCodecCapabilityChanged {
-    // An identifier that can be used to match events for this device.
-    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
-    // Salt: Randomly generated 256 bit value
-    // Hash algorithm: HMAC-SHA256
-    // Size: 32 byte
-    // Default: null or empty if the device identifier is not known
-    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
-    // Type of codec as defined by various SOURCE_CODEC_TYPE_* constants in BluetoothCodecConfig
-    // Default SOURCE_CODEC_TYPE_INVALID
-    optional int32 codec_type = 2;
-    // Codec priroity, the higher the more preferred, -1 for disabled
-    // Default: CODEC_PRIORITY_DEFAULT
-    optional int32 codec_priority = 3;
-    // A bit field of supported sample rates as defined by various SAMPLE_RATE_* constants
-    // in BluetoothCodecConfig
-    // Default: empty and SAMPLE_RATE_NONE for individual item
-    optional int32 sample_rate = 4;
-    // A bit field of supported bits per sample as defined by various BITS_PER_SAMPLE_* constants
-    // in BluetoothCodecConfig
-    // Default: empty and BITS_PER_SAMPLE_NONE for individual item
-    optional int32 bits_per_sample = 5;
-    // A bit field of supported channel mode as defined by various CHANNEL_MODE_* constants in
-    // BluetoothCodecConfig
-    // Default: empty and CHANNEL_MODE_NONE for individual item
-    optional int32 channel_mode = 6;
-    // Codec specific values
-    // Default 0
-    optional int64 codec_specific_1 = 7;
-    optional int64 codec_specific_2 = 8;
-    optional int64 codec_specific_3 = 9;
-    optional int64 codec_specific_4 = 10;
-    // An identifier that can be used to match events for this device.
-    // The incremental identifier is locally generated and guaranteed not derived
-    // from any globally unique hardware id.
-    // For paired devices, it stays consistent between Bluetooth toggling for the
-    // same remote device.
-    // For unpaired devices, it stays consistent within the same Bluetooth adapter
-    // session for the same remote device.
-    // Default: 0 if the device's metric id is unknown.
-    optional int32 metric_id = 11;
-}
-
-/**
- * Logs when A2DP failed to read from PCM source.
- * This typically happens when audio HAL cannot supply A2DP with data fast enough for encoding.
- *
- * Logged from:
- *     system/bt
- */
-message BluetoothA2dpAudioUnderrunReported {
-    // An identifier that can be used to match events for this device.
-    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
-    // Salt: Randomly generated 256 bit value
-    // Hash algorithm: HMAC-SHA256
-    // Size: 32 byte
-    // Default: null or empty if the device identifier is not known
-    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
-    // Encoding interval in nanoseconds
-    // Default: 0
-    optional int64 encoding_interval_nanos = 2;
-    // Number of bytes of PCM data that could not be read from the source
-    // Default: 0
-    optional int32 num_missing_pcm_bytes = 3;
-    // An identifier that can be used to match events for this device.
-    // The incremental identifier is locally generated and guaranteed not derived
-    // from any globally unique hardware id.
-    // For paired devices, it stays consistent between Bluetooth toggling for the
-    // same remote device.
-    // For unpaired devices, it stays consistent within the same Bluetooth adapter
-    // session for the same remote device.
-    // Default: 0 if the device's metric id is unknown.
-    optional int32 metric_id = 4;
-}
-
-/**
- * Logs when A2DP failed send encoded data to the remote device fast enough such that the transmit
- * buffer queue is full and we have to drop data
- *
- * Logged from:
- *     system/bt
- */
-message BluetoothA2dpAudioOverrunReported {
-    // An identifier that can be used to match events for this device.
-    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
-    // Salt: Randomly generated 256 bit value
-    // Hash algorithm: HMAC-SHA256
-    // Size: 32 byte
-    // Default: null or empty if the device identifier is not known
-    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
-    // Encoding interval in nanoseconds
-    // Default: 0
-    optional int64 encoding_interval_nanos = 2;
-    // Number of buffers dropped in this event
-    // Each buffer is encoded in one encoding interval and consists of multiple encoded frames
-    // Default: 0
-    optional int32 num_dropped_buffers = 3;
-    // Number of encoded buffers dropped in this event
-    // Default 0
-    optional int32 num_dropped_encoded_frames = 4;
-    // Number of encoded bytes dropped in this event
-    // Default: 0
-    optional int32 num_dropped_encoded_bytes = 5;
-    // An identifier that can be used to match events for this device.
-    // The incremental identifier is locally generated and guaranteed not derived
-    // from any globally unique hardware id.
-    // For paired devices, it stays consistent between Bluetooth toggling for the
-    // same remote device.
-    // For unpaired devices, it stays consistent within the same Bluetooth adapter
-    // session for the same remote device.
-    // Default: 0 if the device's metric id is unknown.
-    optional int32 metric_id = 6;
-}
-
-/**
- * Logs when we receive reports regarding a device's RSSI value
- *
- * Logged from:
- *     system/bt
- */
-message BluetoothDeviceRssiReported {
-    // An identifier that can be used to match events for this device.
-    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
-    // Salt: Randomly generated 256 bit value
-    // Hash algorithm: HMAC-SHA256
-    // Size: 32 byte
-    // Default: null or empty if the device identifier is not known
-    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
-    // Connection handle of this connection if available
-    // Range: 0x0000 - 0x0EFF (12 bits)
-    // Default: 0xFFFF if the handle is unknown
-    optional int32 connection_handle = 2;
-    // HCI command status code if this is triggerred by hci_cmd
-    // Default: STATUS_UNKNOWN
-    optional android.bluetooth.hci.StatusEnum hci_status = 3;
-    // BR/EDR
-    //   Range: -128 ≤ N ≤ 127 (signed integer)
-    //   Units: dB
-    // LE:
-    //   Range: -127 to 20, 127 (signed integer)
-    //   Units: dBm
-    // Invalid when an out of range value is reported
-    optional int32 rssi = 4;
-    // An identifier that can be used to match events for this device.
-    // The incremental identifier is locally generated and guaranteed not derived
-    // from any globally unique hardware id.
-    // For paired devices, it stays consistent between Bluetooth toggling for the
-    // same remote device.
-    // For unpaired devices, it stays consistent within the same Bluetooth adapter
-    // session for the same remote device.
-    // Default: 0 if the device's metric id is unknown.
-    optional int32 metric_id = 5;
-}
-
-/**
- * Logs when we receive reports regarding how many consecutive failed contacts for a connection
- *
- * Logged from:
- *     system/bt
- */
-message BluetoothDeviceFailedContactCounterReported {
-    // An identifier that can be used to match events for this device.
-    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
-    // Salt: Randomly generated 256 bit value
-    // Hash algorithm: HMAC-SHA256
-    // Size: 32 byte
-    // Default: null or empty if the device identifier is not known
-    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
-    // Connection handle of this connection if available
-    // Range: 0x0000 - 0x0EFF (12 bits)
-    // Default: 0xFFFF if the handle is unknown
-    optional int32 connection_handle = 2;
-    // HCI command status code if this is triggerred by hci_cmd
-    // Default: STATUS_UNKNOWN
-    optional android.bluetooth.hci.StatusEnum cmd_status = 3;
-    // Number of consecutive failed contacts for a connection corresponding to the Handle
-    // Range: uint16_t, 0-0xFFFF
-    // Default: 0xFFFFF
-    optional int32 failed_contact_counter = 4;
-    // An identifier that can be used to match events for this device.
-    // The incremental identifier is locally generated and guaranteed not derived
-    // from any globally unique hardware id.
-    // For paired devices, it stays consistent between Bluetooth toggling for the
-    // same remote device.
-    // For unpaired devices, it stays consistent within the same Bluetooth adapter
-    // session for the same remote device.
-    // Default: 0 if the device's metric id is unknown.
-    optional int32 metric_id = 5;
-}
-
-/**
- * Logs when we receive reports regarding the tranmit power level used for a specific connection
- *
- * Logged from:
- *     system/bt
- */
-message BluetoothDeviceTxPowerLevelReported {
-    // An identifier that can be used to match events for this device.
-    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
-    // Salt: Randomly generated 256 bit value
-    // Hash algorithm: HMAC-SHA256
-    // Size: 32 byte
-    // Default: null or empty if the device identifier is not known
-    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
-    // Connection handle of this connection if available
-    // Range: 0x0000 - 0x0EFF (12 bits)
-    // Default: 0xFFFF if the handle is unknown
-    optional int32 connection_handle = 2;
-    // HCI command status code if this is triggered by hci_cmd
-    // Default: STATUS_UNKNOWN
-    optional android.bluetooth.hci.StatusEnum hci_status = 3;
-    // Range: -30 ≤ N ≤ 20
-    // Units: dBm
-    // Invalid when an out of range value is reported
-    optional int32 transmit_power_level = 4;
-    // An identifier that can be used to match events for this device.
-    // The incremental identifier is locally generated and guaranteed not derived
-    // from any globally unique hardware id.
-    // For paired devices, it stays consistent between Bluetooth toggling for the
-    // same remote device.
-    // For unpaired devices, it stays consistent within the same Bluetooth adapter
-    // session for the same remote device.
-    // Default: 0 if the device's metric id is unknown.
-    optional int32 metric_id = 5;
-}
-
-/**
- * Logs when Bluetooth controller failed to reply with command status within a timeout period after
- * receiving an HCI command from the host
- *
- * Logged from: system/bt
- */
-message BluetoothHciTimeoutReported {
-    // HCI command associated with this event
-    // Default: CMD_UNKNOWN
-    optional android.bluetooth.hci.CommandEnum hci_command = 1;
-}
-
-/**
- * Logs when we receive Bluetooth Link Quality Report event from the controller
- * See Android Bluetooth HCI specification for more details
- *
- * Note: all count and bytes field are counted since last event
- *
- * Logged from: system/bt
- */
-message BluetoothQualityReportReported {
-    // Quality report ID
-    // Original type: uint8_t
-    // Default: BQR_ID_UNKNOWN
-    optional android.bluetooth.hci.BqrIdEnum quality_report_id = 1;
-    // Packet type of the connection
-    // Original type: uint8_t
-    // Default: BQR_PACKET_TYPE_UNKNOWN
-    optional android.bluetooth.hci.BqrPacketTypeEnum packet_types = 2;
-    // Connection handle of the connection
-    // Original type: uint16_t
-    optional int32 connection_handle = 3;
-    // Performing Role for the connection
-    // Original type: uint8_t
-    optional int32 connection_role = 4;
-    // Current Transmit Power Level for the connection. This value is the same as the controller's
-    // response to the HCI_Read_Transmit_Power_Level HCI command
-    // Original type: uint8_t
-    optional int32 tx_power_level = 5;
-    // Received Signal Strength Indication (RSSI) value for the connection. This value is an
-    // absolute receiver signal strength value
-    // Original type: int8_t
-    optional int32 rssi = 6;
-    // Signal-to-Noise Ratio (SNR) value for the connection. It is the average SNR of all the
-    // channels used by the link currently
-    // Original type: uint8_t
-    optional int32 snr = 7;
-    // Indicates the number of unused channels in AFH_channel_map
-    // Original type: uint8_t
-    optional int32 unused_afh_channel_count = 8;
-    // Indicates the number of the channels which are interfered and quality is bad but are still
-    // selected for AFH
-    // Original type: uint8_t
-    optional int32 afh_select_unideal_channel_count = 9;
-    // Current Link Supervision Timeout Setting
-    // Unit: N * 0.3125 ms (1 Bluetooth Clock)
-    // Original type: uint16_t
-    optional int32 lsto = 10;
-    // Piconet Clock for the specified Connection_Handle. This value is the same as the controller's
-    // response to HCI_Read_Clock HCI command with the parameter "Which_Clock" of
-    // 0x01 (Piconet Clock)
-    // Unit: N * 0.3125 ms (1 Bluetooth Clock)
-    // Original type: uint32_t
-    optional int64 connection_piconet_clock = 11;
-    // The count of retransmission
-    // Original type: uint32_t
-    optional int64 retransmission_count = 12;
-    // The count of no RX
-    // Original type: uint32_t
-    optional int64 no_rx_count = 13;
-    // The count of NAK (Negative Acknowledge)
-    // Original type: uint32_t
-    optional int64 nak_count = 14;
-    // Controller timestamp of last TX ACK
-    // Unit: N * 0.3125 ms (1 Bluetooth Clock)
-    // Original type: uint32_t
-    optional int64 last_tx_ack_timestamp = 15;
-    // The count of Flow-off (STOP)
-    // Original type: uint32_t
-    optional int64 flow_off_count = 16;
-    // Controller timestamp of last Flow-on (GO)
-    // Unit: N * 0.3125 ms (1 Bluetooth Clock)
-    // Original type: uint32_t
-    optional int64 last_flow_on_timestamp = 17;
-    // Buffer overflow count (how many bytes of TX data are dropped) since the last event
-    // Original type: uint32_t
-    optional int64 buffer_overflow_bytes = 18;
-    // Buffer underflow count (in byte) since last event
-    // Original type: uint32_t
-    optional int64 buffer_underflow_bytes = 19;
-}
-
-/**
- * Logs when a Bluetooth device's manufacturer information is learnt by the Bluetooth stack
- *
- * Notes:
- * - Each event can be partially filled as we might learn different pieces of device
- *   information at different time
- * - Multiple device info events can be combined to give more complete picture
- * - When multiple device info events tries to describe the same information, the
- *   later one wins
- *
- * Logged from:
- *     packages/apps/Bluetooth
- */
-message BluetoothDeviceInfoReported {
-    // An identifier that can be used to match events for this device.
-    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
-    // Salt: Randomly generated 256 bit value
-    // Hash algorithm: HMAC-SHA256
-    // Size: 32 byte
-    // Default: null or empty if the device identifier is not known
-    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
-    // Where is this device info obtained from
-    optional android.bluetooth.DeviceInfoSrcEnum source_type = 2;
-    // Name of the data source
-    // For EXTERNAL: package name of the data source
-    // For INTERNAL: null for general case, component name otherwise
-    optional string source_name = 3;
-    // Name of the manufacturer of this device
-    optional string manufacturer = 4;
-    // Model of this device
-    optional string model = 5;
-    // Hardware version of this device
-    optional string hardware_version = 6;
-    // Software version of this device
-    optional string software_version = 7;
-    // An identifier that can be used to match events for this device.
-    // The incremental identifier is locally generated and guaranteed not derived
-    // from any globally unique hardware id.
-    // For paired devices, it stays consistent between Bluetooth toggling for the
-    // same remote device.
-    // For unpaired devices, it stays consistent within the same Bluetooth adapter
-    // session for the same remote device.
-    // Default: 0 if the device's metric id is unknown.
-    optional int32 metric_id = 8;
-}
-
-/**
- * Logs when we receive Bluetooth Read Remote Version Information Complete Event from the remote
- * device, as documented by the Bluetooth Core HCI specification
- * Reference: https://www.bluetooth.com/specifications/bluetooth-core-specification
- * Vol 2, Part E, Page 1118
- *
- * Logged from:
- *     system/bt
- */
-message BluetoothRemoteVersionInfoReported {
-    // Connection handle of the connection
-    // Original type: uint16_t
-    optional int32 connection_handle = 1;
-    // HCI command status code
-    // Default: STATUS_UNKNOWN
-    optional android.bluetooth.hci.StatusEnum hci_status = 2;
-    // 1 byte Version of current LMP in the remote controller
-    optional int32 lmp_version = 3;
-    // 2 bytes LMP manufacturer code of the remote controller
-    // https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers
-    optional int32 lmp_manufacturer_code = 4;
-    // 4 bytes subversion of the LMP in the remote controller
-    optional int32 lmp_subversion = 5;
-}
-
-/**
- * Logs when certain Bluetooth SDP attributes are discovered
- * Constant definitions are from:
- *     https://www.bluetooth.com/specifications/assigned-numbers/service-discovery
- *
- * Current logged attributes:
- * - BluetoothProfileDescriptorList
- * - Supported Features Bitmask
- *
- * Logged from:
- *     system/bt
- */
-message BluetoothSdpAttributeReported {
-    // An identifier that can be used to match events for this device.
-    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
-    // Salt: Randomly generated 256 bit value
-    // Hash algorithm: HMAC-SHA256
-    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
-    // Short form UUIDs used to identify Bluetooth protocols, profiles, and service classes
-    // Original type: uint16_t
-    optional int32 protocol_uuid = 2;
-    // Short form UUIDs used to identify Bluetooth SDP attribute types
-    // Original type: uint16_t
-    optional int32 attribute_id = 3;
-    // Attribute value for the particular attribute
-    optional bytes attribute_value = 4 [(android.os.statsd.log_mode) = MODE_BYTES];
-    // An identifier that can be used to match events for this device.
-    // The incremental identifier is locally generated and guaranteed not derived
-    // from any globally unique hardware id.
-    // For paired devices, it stays consistent between Bluetooth toggling for the
-    // same remote device.
-    // For unpaired devices, it stays consistent within the same Bluetooth adapter
-    // session for the same remote device.
-    // Default: 0 if the device's metric id is unknown.
-    optional int32 metric_id = 5;
-}
-
-/**
- * Logs when bond state of a Bluetooth device changes
- *
- * Logged from:
- *     frameworks/base/core/java/android/bluetooth/BluetoothDevice.java
- *     packages/apps/Bluetooth/src/com/android/bluetooth/btservice/BondStateMachine.java
- */
-message BluetoothBondStateChanged {
-    // An identifier that can be used to match events for this device.
-    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
-    // Salt: Randomly generated 256 bit value
-    // Hash algorithm: HMAC-SHA256
-    // Size: 32 byte
-    // Default: null or empty if the device identifier is not known
-    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
-    // Preferred transport type to remote dual mode device
-    // Default: TRANSPORT_AUTO means no preference
-    optional android.bluetooth.TransportTypeEnum transport = 2;
-    // The type of this Bluetooth device (Classic, LE, or Dual mode)
-    // Default: UNKNOWN
-    optional android.bluetooth.DeviceTypeEnum type = 3;
-    // Current bond state (NONE, BONDING, BONDED)
-    // Default: BOND_STATE_UNKNOWN
-    optional android.bluetooth.BondStateEnum bond_state = 4;
-    // Bonding sub state
-    // Default: BOND_SUB_STATE_UNKNOWN
-    optional android.bluetooth.BondSubStateEnum bonding_sub_state = 5;
-    // Unbond Reason
-    // Default: UNBOND_REASON_UNKNOWN
-    optional android.bluetooth.UnbondReasonEnum unbond_reason = 6;
-    // An identifier that can be used to match events for this device.
-    // The incremental identifier is locally generated and guaranteed not derived
-    // from any globally unique hardware id.
-    // For paired devices, it stays consistent between Bluetooth toggling for the
-    // same remote device.
-    // For unpaired devices, it stays consistent within the same Bluetooth adapter
-    // session for the same remote device.
-    // Default: 0 if the device's metric id is unknown.
-    optional int32 metric_id = 7;
-}
-
-/**
- * Logs there is an event related Bluetooth classic pairing
- *
- * Logged from:
- *     system/bt
- */
-message BluetoothClassicPairingEventReported {
-    // An identifier that can be used to match events for this device.
-    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
-    // Salt: Randomly generated 256 bit value
-    // Hash algorithm: HMAC-SHA256
-    // Size: 32 byte
-    // Default: null or empty if the device identifier is not known
-    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
-    // Connection handle of this connection if available
-    // Range: 0x0000 - 0x0EFF (12 bits)
-    // Default: 0xFFFF if the handle is unknown
-    optional int32 connection_handle = 2;
-    // HCI command associated with this event
-    // Default: CMD_UNKNOWN
-    optional android.bluetooth.hci.CommandEnum hci_cmd = 3;
-    // HCI event associated with this event
-    // Default: EVT_UNKNOWN
-    optional android.bluetooth.hci.EventEnum hci_event = 4;
-    // HCI command status code if this is triggerred by hci_cmd
-    // Default: STATUS_UNKNOWN
-    optional android.bluetooth.hci.StatusEnum cmd_status = 5;
-    // HCI reason code associated with this event
-    // Default: STATUS_UNKNOWN
-    optional android.bluetooth.hci.StatusEnum reason_code = 6;
-    // A status value related to this specific event
-    // Default: 0
-    optional int64 event_value = 7;
-    // An identifier that can be used to match events for this device.
-    // The incremental identifier is locally generated and guaranteed not derived
-    // from any globally unique hardware id.
-    // For paired devices, it stays consistent between Bluetooth toggling for the
-    // same remote device.
-    // For unpaired devices, it stays consistent within the same Bluetooth adapter
-    // session for the same remote device.
-    // Default: 0 if the device's metric id is unknown.
-    optional int32 metric_id = 8;
-}
-
-/**
- * Logs when there is an event related to Bluetooth Security Manager Protocol (SMP)
- *
- * Logged from:
- *     system/bt
- */
-message BluetoothSmpPairingEventReported {
-    // An identifier that can be used to match events for this device.
-    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
-    // Salt: Randomly generated 256 bit value
-    // Hash algorithm: HMAC-SHA256
-    // Size: 32 byte
-    // Default: null or empty if the device identifier is not known
-    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
-    // SMP command sent or received over L2CAP
-    // Default: CMD_UNKNOWN
-    optional android.bluetooth.smp.CommandEnum smp_command = 2;
-    // Whether this command is sent or received
-    // Default: DIRECTION_UNKNOWN
-    optional android.bluetooth.DirectionEnum direction = 3;
-    // SMP failure reason code
-    // Default: PAIRING_FAIL_REASON_DEFAULT
-    optional android.bluetooth.smp.PairingFailReasonEnum smp_fail_reason = 4;
-    // An identifier that can be used to match events for this device.
-    // The incremental identifier is locally generated and guaranteed not derived
-    // from any globally unique hardware id.
-    // For paired devices, it stays consistent between Bluetooth toggling for the
-    // same remote device.
-    // For unpaired devices, it stays consistent within the same Bluetooth adapter
-    // session for the same remote device.
-    // Default: 0 if the device's metric id is unknown.
-    optional int32 metric_id = 5;
-}
-
-/**
- * Logs when a Bluetooth socket’s connection state changed
- *
- * Logged from:
- *   system/bt
- */
-message BluetoothSocketConnectionStateChanged {
-    // An identifier that can be used to match events for this device.
-    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
-    // Salt: Randomly generated 256 bit value
-    // Hash algorithm: HMAC-SHA256
-    // Size: 32 byte
-    // Default: null or empty if this is a server listener socket
-    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
-    // Temporary port of this socket for the current connection or session only
-    // Default 0 when unknown or don't care
-    optional int32 port = 2;
-    // Socket type as mentioned in
-    // frameworks/base/core/java/android/bluetooth/BluetoothSocket.java
-    // Default: SOCKET_TYPE_UNKNOWN
-    optional android.bluetooth.SocketTypeEnum type = 3;
-    // Socket connection state
-    // Default: SOCKET_CONNECTION_STATE_UNKNOWN
-    optional android.bluetooth.SocketConnectionstateEnum state = 4;
-    // Number of bytes sent to remote device during this connection
-    optional int64 tx_bytes = 5;
-    // Number of bytes received from remote device during this connection
-    optional int64 rx_bytes = 6;
-    // Socket owner's UID
-    optional int32 uid = 7 [(is_uid) = true];
-    // Server port of this socket, if any. When both |server_port| and |port| fields are populated,
-    // |port| must be spawned by |server_port|
-    // Default 0 when unknown or don't care
-    optional int32 server_port = 8;
-    // Whether this is a server listener socket
-    optional android.bluetooth.SocketRoleEnum is_server = 9;
-    // An identifier that can be used to match events for this device.
-    // The incremental identifier is locally generated and guaranteed not derived
-    // from any globally unique hardware id.
-    // For paired devices, it stays consistent between Bluetooth toggling for the
-    // same remote device.
-    // For unpaired devices, it stays consistent within the same Bluetooth adapter
-    // session for the same remote device.
-    // Default: 0 if the device's metric id is unknown.
-    optional int32 metric_id = 10;
-}
-
-/**
- * Logs when Class of Device (CoD) value is learnt for a device during pairing or connection
- *
- * Logged from:
- *   packages/apps/Bluetooth/src/com/android/bluetooth/btservice/BondStateMachine.java
- *   packages/apps/Bluetooth/src/com/android/bluetooth/btservice/RemoteDevices.java
- *
- */
-message BluetoothClassOfDeviceReported {
-    // An identifier that can be used to match events for this device.
-    // Currently, this is a salted hash of the MAC address of this Bluetooth device.
-    // Salt: Randomly generated 256 bit value
-    // Hash algorithm: HMAC-SHA256
-    // Size: 32 byte
-    // Default: null or empty if this is a server listener socket
-    optional bytes obfuscated_id = 1 [(android.os.statsd.log_mode) = MODE_BYTES];
-    // Class of Device (CoD) value including both Major, Minor device class and service class
-    // Defined in: https://www.bluetooth.com/specifications/assigned-numbers/baseband
-    // Also defined in: https://developer.android.com/reference/android/bluetooth/BluetoothClass
-    // Default: 0
-    optional int32 class_of_device = 2;
-    // An identifier that can be used to match events for this device.
-    // The incremental identifier is locally generated and guaranteed not derived
-    // from any globally unique hardware id.
-    // For paired devices, it stays consistent between Bluetooth toggling for the
-    // same remote device.
-    // For unpaired devices, it stays consistent within the same Bluetooth adapter
-    // session for the same remote device.
-    // Default: 0 if the device's metric id is unknown.
-    optional int32 metric_id = 3;
-}
-
-/**
- * Logs when something is plugged into or removed from the USB-C connector.
- *
- * Logged from:
- *  UsbService
- */
-message UsbConnectorStateChanged {
-    enum State {
-        STATE_DISCONNECTED = 0;
-        STATE_CONNECTED = 1;
-    }
-    optional State state = 1
-            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
-    optional string id = 2 [(state_field_option).primary_field = true];
-    // Last active session in ms.
-    // 0 when the port is in connected state.
-    optional int64 last_connect_duration_millis = 3;
-}
-
-/**
- * Logs the reported speaker impedance.
- *
- * Logged from:
- *  Vendor audio implementation.
- */
-message SpeakerImpedanceReported {
-    optional int32 speaker_location = 1;
-    optional int32 impedance = 2;
-}
-
-/**
- * Logs the report of a failed hardware.
- *
- * Logged from:
- *  Vendor HALs.
- *
- */
-message HardwareFailed {
-    enum HardwareType {
-        HARDWARE_FAILED_UNKNOWN = 0;
-        HARDWARE_FAILED_MICROPHONE = 1;
-        HARDWARE_FAILED_CODEC = 2;
-        HARDWARE_FAILED_SPEAKER = 3;
-        HARDWARE_FAILED_FINGERPRINT = 4;
-    }
-    optional HardwareType hardware_type = 1;
-
-   /**
-    * hardware_location allows vendors to differentiate between multiple instances of
-    * the same hardware_type.  The specific locations are vendor defined integers,
-    * referring to board-specific numbering schemes.
-    */
-    optional int32 hardware_location = 2;
-
-    /**
-     * failure_code is specific to the HardwareType of the failed hardware.
-     * It should use one of the enum values defined below.
-     */
-    enum HardwareErrorCode {
-        UNKNOWN = 0;
-        COMPLETE = 1;
-        SPEAKER_HIGH_Z = 2;
-        SPEAKER_SHORT = 3;
-        FINGERPRINT_SENSOR_BROKEN = 4;
-        FINGERPRINT_TOO_MANY_DEAD_PIXELS = 5;
-        DEGRADE = 6;
-    }
-    optional int32 failure_code = 3;
-}
-
-/**
- * Log an event when the device has been physically dropped.
- * Reported from the /vendor partition.
- */
-message PhysicalDropDetected {
-    // Confidence that the event was actually a drop, 0 -> 100
-    optional int32 confidence_pctg = 1;
-    // Peak acceleration of the drop, in 1/1000s of a g.
-    optional int32 accel_peak_thousandths_g = 2;
-    // Duration of freefall in ms
-    optional int32 freefall_time_millis = 3;
-}
-
-/**
- * Log bucketed battery charge cycles.
- *
- * Each bucket represents cycles of the battery past
- * a given charge point.  For example, if 10 cycle buckets are
- * initialized, bucket 1 is the lowest 1/10th of the battery,
- * and bucket 10 is 100%.
- *
- * Logged from:
- * /sys/class/power_supply/bms/cycle_count, via Vendor.
- */
-message ChargeCyclesReported {
-    optional int32 cycle_bucket_1 = 1;
-    optional int32 cycle_bucket_2 = 2;
-    optional int32 cycle_bucket_3 = 3;
-    optional int32 cycle_bucket_4 = 4;
-    optional int32 cycle_bucket_5 = 5;
-    optional int32 cycle_bucket_6 = 6;
-    optional int32 cycle_bucket_7 = 7;
-    optional int32 cycle_bucket_8 = 8;
-    optional int32 cycle_bucket_9 = 9;
-    optional int32 cycle_bucket_10 = 10;
-}
-
-/**
- * Log battery health snapshot.
- *
- * Resistance, Voltage, Open Circuit Voltage, Temperature, and Charge Level
- * are snapshotted periodically over 24hrs.
- */
-message BatteryHealthSnapshot {
-    enum BatterySnapshotType {
-        UNKNOWN = 0;
-        MIN_TEMP = 1;         // Snapshot at min batt temp over 24hrs.
-        MAX_TEMP = 2;         // Snapshot at max batt temp over 24hrs.
-        MIN_RESISTANCE = 3;   // Snapshot at min batt resistance over 24hrs.
-        MAX_RESISTANCE = 4;   // Snapshot at max batt resistance over 24hrs.
-        MIN_VOLTAGE = 5;      // Snapshot at min batt voltage over 24hrs.
-        MAX_VOLTAGE = 6;      // Snapshot at max batt voltage over 24hrs.
-        MIN_CURRENT = 7;      // Snapshot at min batt current over 24hrs.
-        MAX_CURRENT = 8;      // Snapshot at max batt current over 24hrs.
-        MIN_BATT_LEVEL = 9;   // Snapshot at min battery level (SoC) over 24hrs.
-        MAX_BATT_LEVEL = 10;  // Snapshot at max battery level (SoC) over 24hrs.
-        AVG_RESISTANCE = 11;  // Snapshot at average battery resistance over 24hrs.
-    }
-    optional BatterySnapshotType type = 1;
-    // Temperature, in 1/10ths of degree C.
-    optional int32 temperature_deci_celsius = 2;
-    // Voltage Battery Voltage, in microVolts.
-    optional int32 voltage_micro_volt = 3;
-    // Current Battery current, in microAmps.
-    optional int32 current_micro_amps = 4;
-    // OpenCircuitVoltage Battery Open Circuit Voltage, in microVolts.
-    optional int32 open_circuit_micro_volt = 5;
-    // Resistance Battery Resistance, in microOhms.
-    optional int32 resistance_micro_ohm = 6;
-    // Level Battery Level, as % of full.
-    optional int32 level_percent = 7;
-}
-
-/**
- * Log slow I/O operations on the primary storage.
- */
-message SlowIo {
-    // Classifications of IO Operations.
-    enum IoOperation {
-        UNKNOWN = 0;
-        READ = 1;
-        WRITE = 2;
-        UNMAP = 3;
-        SYNC = 4;
-    }
-    optional IoOperation operation = 1;
-
-    // The number of slow IO operations of this type over 24 hours.
-    optional int32 count = 2;
-}
-
-/**
- * Log battery caused shutdown with the last recorded voltage.
- */
-message BatteryCausedShutdown {
-    // The last recorded battery voltage prior to shutdown.
-    optional int32 last_recorded_micro_volt = 1;
-}
-
-/**
- * Logs when ThermalService receives throttling events.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/stats/StatsCompanionService.java
- */
-message ThermalThrottlingSeverityStateChanged {
-    // The type of temperature being reported (CPU, GPU, SKIN, etc)
-    optional android.os.TemperatureTypeEnum sensor_type = 1;
-
-    // The name of the temperature source. Eg. CPU0
-    optional string sensor_name = 2;
-
-    // Temperature in tenths of a degree C.
-    // For BCL, it is decimillivolt, decimilliamps, and percentage * 10.
-    optional int32 temperature_deci_celsius = 3;
-
-    // Relative severity of the throttling, see enum definition.
-    optional android.os.ThrottlingSeverityEnum severity = 4;
-}
-
-/**
- * Logs the duration of a davey (jank of >=700ms) when it occurs
- *
- * Logged from:
- *   frameworks/base/libs/hwui/JankTracker.cpp
- */
-message DaveyOccurred {
-    // The UID that logged this atom.
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // Amount of time it took to render the frame. Should be >=700ms.
-    optional int64 jank_duration_millis = 2;
-}
-
-/**
- * Logs phone signal strength changes.
- *
- * Logged from:
- *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
- */
-message PhoneSignalStrengthChanged {
-    // Signal strength, from frameworks/base/core/proto/android/telephony/enums.proto.
-    optional android.telephony.SignalStrengthEnum signal_strength = 1;
-}
-
-
-/**
- * Logs when the phone state, sim state or signal strength changes
- *
- * Logged from:
- *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
- */
-message PhoneServiceStateChanged {
-    optional android.telephony.ServiceStateEnum state = 1;
-    optional android.telephony.SimStateEnum sim_state = 2;
-    optional android.telephony.SignalStrengthEnum signal_strength = 3;
-}
-
-/**
- * Logs when the phone becomes on or off.
- *
- * Logged from:
- *   frameworks/base/core/java/com/android/internal/os/TelephonyRegistry.java
- */
-message PhoneStateChanged {
-    enum State {
-        OFF = 0;
-        ON = 1;
-    }
-    optional State state = 1;
-}
-
-message BackGesture {
-    enum BackType {
-        DEFAULT_BACK_TYPE = 0;
-        COMPLETED = 1;
-        COMPLETED_REJECTED = 2; // successful because coming from rejected area
-        INCOMPLETE_EXCLUDED = 3; // would have been successful but in the exclusion area
-        INCOMPLETE = 4;  // Unsuccessful, for reasons other than below.
-        INCOMPLETE_FAR_FROM_EDGE = 5;  // Unsuccessful, far from the edge.
-        INCOMPLETE_MULTI_TOUCH = 6;  // Unsuccessful, multi touch.
-        INCOMPLETE_LONG_PRESS = 7;  // Unsuccessful, long press.
-        INCOMPLETE_VERTICAL_MOVE = 8;  // Unsuccessful, move vertically.
-    }
-    optional BackType type = 1;
-
-    optional int32 y_coordinate = 2 [deprecated = true]; // y coordinate for ACTION_DOWN event
-    optional int32 start_x = 4;  // X coordinate for ACTION_DOWN event.
-    optional int32 start_y = 5;  // Y coordinate for ACTION_DOWN event.
-    optional int32 end_x = 6;   // X coordinate for ACTION_MOVE event.
-    optional int32 end_y = 7;  // Y coordinate for ACTION_MOVE event.
-    optional int32 left_boundary = 8;  // left edge width + left inset
-    optional int32 right_boundary = 9;  // screen width - (right edge width + right inset)
-
-    enum WindowHorizontalLocation {
-        DEFAULT_LOCATION = 0;
-        LEFT = 1;
-        RIGHT = 2;
-    }
-    optional WindowHorizontalLocation x_location = 3 [deprecated = true];
-}
-
-message ExclusionRectStateChanged {
-    optional string component_name = 1;    // if not available, simply packageName
-    optional int32 requested_height = 2;   // px
-    optional int32 rejected_height = 3;    // px
-
-    enum WindowHorizontalLocation {
-        DEFAULT_LOCATION = 0;
-        LEFT = 1;
-        RIGHT = 2;
-    }
-    optional WindowHorizontalLocation x_location = 4;
-    optional bool landscape = 5;
-    optional bool splitscreen = 6;
-    optional int32 duration_millis = 7;
-}
-
-/**
- * Logs when IME is on.
- *
- * Logged from: /packages/SystemUI/src/com/android/systemui/
-                statusbar/phone/NavigationBarView.java
- *
- */
-message ImeTouchReported {
-    optional int32 x_coordinate = 1;  // X coordinate for ACTION_DOWN event.
-    optional int32 y_coordinate = 2;  // Y coordinate for ACTION_DOWN event.
-}
-
-/**
- * Logs when Launcher (HomeScreen) UI has changed or was interacted.
- *
- * Logged from:
- *   packages/apps/Launcher3
- */
-message LauncherUIChanged {
-    optional android.stats.launcher.LauncherAction action = 1 [deprecated = true];
-    optional android.stats.launcher.LauncherState src_state = 2;
-    optional android.stats.launcher.LauncherState dst_state = 3;
-    optional android.stats.launcher.LauncherExtension extension = 4 [(log_mode) = MODE_BYTES, deprecated = true];
-    optional bool is_swipe_up_enabled = 5 [deprecated = true];
-
-    // The event id (e.g., app launch, drag and drop, long press)
-    optional int32 event_id = 6;
-    // The event's source or target id (e.g., icon, task, button)
-    optional int32 target_id = 7;
-    // If the target needs to be tracked, use this id field
-    optional int32 instance_id = 8;
-    optional int32 uid = 9 [(is_uid) = true];
-    optional string package_name = 10;
-    optional string component_name = 11;
-
-    // (x, y) coordinate and the index information of the target on the container
-    optional int32 grid_x = 12 [default = -1];
-    optional int32 grid_y = 13 [default = -1];
-    optional int32 page_id = 14 [default = -2];
-
-    // e.g., folder icon's (x, y) location and index information on the workspace
-    optional int32 grid_x_parent = 15 [default = -1];
-    optional int32 grid_y_parent = 16 [default = -1];
-    optional int32 page_id_parent = 17 [default = -2];
-
-    // e.g., SEARCHBOX_ALLAPPS, FOLDER_WORKSPACE
-    optional int32 hierarchy = 18;
-
-    optional bool is_work_profile = 19;
-
-    // Used to store the predicted rank of the target
-    optional int32 rank = 20 [default = -1];
-
-    // e.g., folderLabelState can be captured in the following two fields
-    optional int32 from_state = 21;
-    optional int32 to_state = 22;
-
-    // e.g., autofilled or suggested texts that are not user entered
-    optional string edittext = 23;
-
-    // e.g., number of contents inside a container (e.g., icons inside a folder)
-    optional int32 cardinality = 24;
-}
-
-/**
- * Used for snapshot of the HomeScreen UI elements
- *
- * Logged from:
- *   packages/apps/Launcher3
- */
-message LauncherStaticLayout {
-    // The event id (e.g., snapshot, drag and drop)
-    optional int32 event_id = 1;
-    // The event's source or target id (e.g., icon, shortcut, widget)
-    optional int32 target_id = 2;
-    // If the target needs to be tracked, use this id field
-    optional int32 instance_id = 3;
-    optional int32 uid = 4 [(is_uid) = true];
-    optional string package_name = 5;
-    optional string component_name = 6;
-
-    // (x, y) coordinate and the index information of the target on the container
-    optional int32 grid_x = 7 [default = -1];
-    optional int32 grid_y = 8 [default = -1];
-    optional int32 page_id = 9 [default = -2];
-
-    // e.g., folder icon's (x, y) location and index information on the workspace
-    // e.g., when used with widgets target, use these values for (span_x, span_y)
-    optional int32 grid_x_parent = 10 [default = -1];
-    optional int32 grid_y_parent = 11 [default = -1];
-    optional int32 page_id_parent = 12 [default = -2];
-
-    // UNKNOWN = 0
-    // HOTSEAT = 1
-    // WORKSPACE = 2
-    // FOLDER_HOTSEAT = 3
-    // FOLDER_WORKSPACE = 4
-    optional int32 hierarchy = 13;
-
-    optional bool is_work_profile = 14;
-
-    // e.g., PIN, WIDGET TRAY, APPS TRAY, PREDICTION
-    optional int32 origin = 15;
-
-    // e.g., number of icons inside a folder
-    optional int32 cardinality = 16;
-
-    // e.g., (x, y) span of the widget inside homescreen grid system
-    optional int32 span_x = 17 [default = 1];
-    optional int32 span_y = 18 [default = 1];
-}
-
-/**
- * Logs when Wallpaper or ThemePicker UI has changed.
- *
- * Logged from:
- *   packages/apps/ThemePicker
- *   packages/apps/WallpaperPicker2
- */
-message StyleUIChanged {
-    optional android.stats.style.Action action = 1;
-    optional int32 color_package_hash = 2;
-    optional int32 font_package_hash  = 3;
-    optional int32 shape_package_hash = 4;
-    optional int32 clock_package_hash = 5;
-    optional int32 launcher_grid = 6;
-    optional int32 wallpaper_category_hash = 7;
-    optional int32 wallpaper_id_hash = 8;
-    optional int32 color_preference = 9;
-    optional android.stats.style.LocationPreference location_preference = 10;
-}
-
-/**
- * Logs when Settings UI has changed.
- *
- * Logged from:
- *   packages/apps/Settings
- */
-message SettingsUIChanged {
-    /**
-     * Where this SettingsUIChange event comes from. For example, if
-     * it's a PAGE_VISIBLE event, where the page is opened from.
-     */
-    optional android.app.settings.PageId attribution = 1;
-
-    /**
-     * What the UI action is.
-     */
-    optional android.app.settings.Action action = 2;
-
-    /**
-     * Where the action is happening
-     */
-    optional android.app.settings.PageId page_id = 3;
-
-    /**
-     * What preference changed in this event.
-     */
-    optional string changed_preference_key = 4;
-
-    /**
-     * The new value of the changed preference.
-     */
-    optional int64 changed_preference_int_value = 5;
-}
-
-/**
- * Logs basic timing information about touch events.
- * Reported at most every 5 minutes while device is being interacted with.
- *
- * Logged from:
- *   frameworks/native/services/inputflinger
- */
-message TouchEventReported {
-    /**
-     * The fields latency_{min|max|mean|stdev} represent minimum, maximum, mean,
-     * and the standard deviation of the time spent processing touchscreen events
-     * in the kernel and inputflinger. The units are microseconds.
-     *
-     * On supported devices, the starting point is taken during the hard interrupt inside the
-     * kernel touch driver. On all other devices, the starting point is taken inside
-     * the kernel's input event subsystem upon receipt of the input event.
-     * The ending point is taken inside InputDispatcher, just after the input event
-     * is sent to the app.
-     */
-    // Minimum value
-    optional float latency_min_micros = 1;
-    // Maximum value
-    optional float latency_max_micros = 2;
-    // Average value
-    optional float latency_mean_micros = 3;
-    // Standard deviation
-    optional float latency_stdev_micros = 4;
-    // Number of touch events (input_event) in this report
-    optional int32 count = 5;
-}
-
-/**
- * Logs gesture classification and timing information for touch events.
- *
- * Logged from:
- *   frameworks/base/core/java/android/view/GestureDetector.java
- *   frameworks/base/core/java/android/view/View.java
- */
-message TouchGestureClassified {
-    // The source of the classification (e.g. Java class name).
-    optional string source = 1;
-
-    enum Classification {
-        UNKNOWN_CLASSIFICATION = 0;
-        SINGLE_TAP = 1;
-        DOUBLE_TAP = 2;
-        LONG_PRESS = 3;
-        DEEP_PRESS = 4;
-        SCROLL = 5;
-    }
-    // The classification of the gesture.
-    optional Classification classification = 2;
-
-    // The interval from the start of a touch event stream until the
-    // classification was made.
-    optional int32 latency_millis = 3;
-
-    // The distance from the location of the first touch event to the
-    // location of the touch event when the classification was made.
-    optional float displacement_px = 4;
-}
-
-/**
- * Logs that a setting was updated.
- * Logged from:
- *   frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
- * The tag and is_default allow resetting of settings to default values based on the specified
- * tag. See Settings#putString(ContentResolver, String, String, String, boolean) for more details.
- */
-message SettingChanged {
-    // The name of the setting.
-    optional string setting = 1;
-
-    // The change being imposed on this setting. May represent a number, eg "3".
-    optional string value = 2;
-
-    // The new value of this setting. For most settings, this is same as value. For some settings,
-    // value is +X or -X where X represents an element in a set. For example, if the previous value
-    // is A,B,C and value is -B, then new_value is A,C and prev_value is A,B,C.
-    // The +/- feature is currently only used for location_providers_allowed.
-    optional string new_value = 3;
-
-    // The previous value of this setting.
-    optional string prev_value = 4;
-
-    // The tag used with the is_default for resetting sets of settings. This is generally null.
-    optional string tag = 5;
-
-    // True if this setting with tag should be resettable.
-    optional bool is_default = 6;
-
-    // The associated user (for multi-user feature). Defined in android/os/UserHandle.java
-    optional int32 user = 7;
-
-    enum ChangeReason {
-        UPDATED = 1; // Updated can be an insertion or an update.
-        DELETED = 2;
-    }
-    optional ChangeReason reason = 8;
-}
-
-/**
- * Logs activity going to foreground or background
- *
- * Logged from:
-  *   frameworks/base/services/core/java/com/android/server/am/ActivityRecord.java
- */
-message ActivityForegroundStateChanged {
-    optional int32 uid = 1 [(is_uid) = true];
-    optional string pkg_name = 2;
-    optional string class_name = 3;
-
-    enum State {
-        BACKGROUND = 0;
-        FOREGROUND = 1;
-    }
-    optional State state = 4;
-}
-
-/**
- * Logs when a volume entered low Storage state.
- * Logged from:
- *      frameworks/base/services/core/java/com/android/server/storage/DeviceStorageMonitorService.java
- */
-message LowStorageStateChanged {
-    // Volume that ran out of storage.
-    optional string volume_description = 1;
-
-    enum State {
-        UNKNOWN = 0;
-        OFF = 1;
-        ON = 2;
-    }
-    optional State state = 2;
-}
-
-/**
- * Logs when an app is downgraded.
- * Logged from:
- *      frameworks/base/services/core/java/com/android/server/pm/BackgroundDexOptService.java
- */
-message AppDowngraded {
-    optional string package_name = 1;
-    // Size of the package (all data) before being downgraded.
-    optional int64 size_in_bytes_before = 2;
-    // Size of the package (all data) after being downgraded.
-    optional int64 size_in_bytes_after = 3;
-
-    optional bool aggressive = 4;
-}
-
-/**
- * Logs when an app is optimized after being downgraded.
- * Logged from:
- *      frameworks/base/services/core/java/com/android/server/pm/BackgroundDexOptService.java
- */
-message AppOptimizedAfterDowngraded {
-    optional string package_name = 1;
-}
-
-/**
- * Logs whenever an app is installed on external storage.
- * Logged from:
-        frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java
- */
-message AppInstallOnExternalStorageReported {
-    // The type of external storage.
-    optional android.stats.storage.ExternalStorageType storage_type = 1;
-    // The name of the package that is installed on the sd card.
-    optional string package_name = 2;
-}
-
-/**
- * Logs when an app crashes.
- * Logged from:
- *      frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
- */
-message AppCrashOccurred {
-    optional int32 uid = 1 [(is_uid) = true];
-
-    optional string event_type = 2;
-
-    // The name of the process.
-    // system_server if it is not by an app
-    optional string process_name = 3;
-
-    // The pid if available. -1 means not available.
-    optional int32 pid = 4;
-
-    optional string package_name = 5;
-
-    enum InstantApp {
-        UNAVAILABLE = 0;
-        FALSE = 1;
-        TRUE = 2;
-    }
-    optional InstantApp is_instant_app = 6;
-
-    enum ForegroundState {
-        UNKNOWN = 0;
-        BACKGROUND = 1;
-        FOREGROUND = 2;
-    }
-    optional ForegroundState foreground_state = 7;
-
-    optional android.server.ErrorSource error_source = 8;
-}
-
-/**
- * Logs when a WTF (What a Terrible Failure) happened.
- * Logged from:
- *      frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
- */
-message WTFOccurred {
-    optional int32 uid = 1 [(is_uid) = true];
-
-    optional string tag = 2;
-
-    // The name of the process.
-    // system_server if it is not by an app
-    optional string process_name = 3;
-
-    // The pid if available. -1 means not available.
-    optional int32 pid = 4;
-
-    optional android.server.ErrorSource error_source = 5;
-}
-
-/**
- * Logs when system server reports low memory.
- * Logged from:
- *      frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
- */
-message LowMemReported {
-}
-
-/**
- * Logs when an app ANR (App Not Responding) occurs.
- * Logged from:
- *      frameworks/base/services/core/java/com/android/server/am/AppErrors.java
- */
-message ANROccurred {
-    optional int32 uid = 1 [(is_uid) = true];
-
-    optional string process_name = 2;
-
-    optional string short_component_name = 3;
-
-    optional string reason = 4;
-
-    enum InstantApp {
-        UNAVAILABLE = 0;
-        FALSE = 1;
-        TRUE = 2;
-    }
-    optional InstantApp is_instant_app = 5;
-
-    enum ForegroundState {
-        UNKNOWN = 0;
-        BACKGROUND = 1;
-        FOREGROUND = 2;
-    }
-    optional ForegroundState foreground_state = 6;
-
-    optional android.server.ErrorSource error_source = 7;
-
-    optional string package_name = 8;
-}
-
-/**
- * Logs when the vibrator state changes.
- * Logged from:
- *      frameworks/base/services/core/java/com/android/server/VibratorService.java
- */
-message VibratorStateChanged {
-    repeated AttributionNode attribution_node = 1;
-
-    enum State {
-        OFF = 0;
-        ON = 1;
-    }
-    optional State state = 2;
-
-    // Duration (in milliseconds) requested to keep the vibrator on.
-    // Only applicable for State == ON.
-    optional int64 duration_millis = 3;
-}
-
-/*
- * Allows other apps to push events into statsd.
- * Logged from:
- *      frameworks/base/core/java/android/util/StatsLog.java
- */
-message AppBreadcrumbReported {
-    // The uid of the application that sent this custom atom.
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // An arbitrary label chosen by the developer. For Android P, the label should be in [0, 16).
-    optional int32 label = 2;
-
-    // Allows applications to easily use a custom event as start/stop boundaries (ie, define custom
-    // predicates for the metrics).
-    enum State {
-        UNKNOWN = 0;
-        UNSPECIFIED = 1;  // For events that are known to not represent START/STOP.
-        STOP = 2;
-        START = 3;
-    }
-    optional State state = 3;
-}
-
-/**
- * Logs the wall-clock time when a significant wall-clock time shift occurs.
- * For example, this could be due to the user manually changing the time.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/AlarmManagerService.java
- */
-message WallClockTimeShifted {
-    // New wall-clock time in milliseconds, according to System.currentTimeMillis().
-    optional int64 wall_clock_timestamp_millis = 1;
-}
-
-/**
- * Logs when statsd detects an anomaly.
- *
- * Logged from:
- *   frameworks/base/cmds/statsd/src/anomaly/AnomalyTracker.cpp
- */
-message AnomalyDetected {
-    // Uid that owns the config whose anomaly detection alert fired.
-    optional int32 config_uid = 1 [(is_uid) = true];
-
-    // Id of the config whose anomaly detection alert fired.
-    optional int64 config_id = 2;
-
-    // Id of the alert (i.e. name of the anomaly that was detected).
-    optional int64 alert_id = 3;
-}
-
-message AppStartOccurred {
-    // The uid if available. -1 means not available.
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // The app package name.
-    optional string pkg_name = 2;
-
-    enum TransitionType {
-        UNKNOWN = 0;
-        WARM = 1;
-        HOT = 2;
-        COLD = 3;
-    }
-    // The transition type.
-    optional TransitionType type = 3;
-
-    // The activity name.
-    optional string activity_name = 4;
-
-    // The name of the calling app. Empty if not set.
-    optional string calling_pkg_name = 5;
-
-    // Whether the app is an instant app.
-    optional bool is_instant_app = 6;
-
-    // Device uptime when activity started.
-    optional int64 activity_start_millis = 7;
-
-    optional android.app.AppTransitionReasonEnum reason = 8;
-
-    optional int32 transition_delay_millis = 9;
-    // -1 if not set.
-    optional int32 starting_window_delay_millis = 10;
-    // -1 if not set.
-    optional int32 bind_application_delay_millis = 11;
-    optional int32 windows_drawn_delay_millis = 12;
-
-    // Empty if not set.
-    optional string launch_token = 13;
-
-    // The compiler filter used when when the package was optimized.
-    optional int32 package_optimization_compilation_filter = 14;
-
-    // The reason why the package was optimized.
-    optional int32 package_optimization_compilation_reason = 15;
-}
-
-message AppStartCanceled {
-    // The uid if available. -1 means not available.
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // The app package name.
-    optional string pkg_name = 2;
-
-    enum TransitionType {
-        UNKNOWN = 0;
-        WARM = 1;
-        HOT = 2;
-        COLD = 3;
-    }
-    // The transition type.
-    optional TransitionType type = 3;
-
-    // The activity name.
-    optional string activity_name = 4;
-}
-
-message AppStartFullyDrawn {
-    // The uid if available. -1 means not available.
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // The app package name.
-    optional string pkg_name = 2;
-
-    enum TransitionType {
-        UNKNOWN = 0;
-        WITH_BUNDLE = 1;
-        WITHOUT_BUNDLE = 2;
-    }
-    // The transition type.
-    optional TransitionType type = 3;
-
-    // The activity name.
-    optional string activity_name = 4;
-
-    optional bool transition_process_running = 5;
-
-    // App startup time (until call to Activity#reportFullyDrawn()).
-    optional int64 app_startup_time_millis = 6;
-}
-
-/**
- * Logs a picture-in-picture action
- * Logged from:
- *      frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
- *      frameworks/base/services/core/java/com/android/server/am/ActivityStackSupervisor.java
- *      frameworks/base/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java
- */
-message PictureInPictureStateChanged {
-    // -1 if it is not available
-    optional int32 uid = 1 [(is_uid) = true];
-
-    optional string short_name = 2;
-
-    enum State {
-        ENTERED = 1;
-        EXPANDED_TO_FULL_SCREEN = 2;
-        MINIMIZED = 3;
-        DISMISSED = 4;
-    }
-    optional State state = 3;
-}
-
-/**
- * Logs overlay action
- * Logged from:
- *     services/core/java/com/android/server/wm/Session.java
- */
-message OverlayStateChanged {
-    optional int32 uid = 1 [(state_field_option).primary_field = true, (is_uid) = true];
-
-    optional string package_name = 2 [(state_field_option).primary_field = true];
-
-    optional bool using_alert_window = 3;
-
-    enum State {
-        ENTERED = 1;
-        EXITED = 2;
-    }
-    optional State state = 4
-            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
-}
-
-/**
- * Logs foreground service starts and stops.
- * Note that this is not when a service starts or stops, but when it is
- * considered foreground.
- * Logged from
- *     frameworks/base/services/core/java/com/android/server/am/ActiveServices.java
- */
-message ForegroundServiceStateChanged {
-    optional int32 uid = 1 [(is_uid) = true];
-    // package_name + "/" + class_name
-    optional string short_name = 2;
-
-    enum State {
-        ENTER = 1;
-        EXIT = 2;
-    }
-    optional State state = 3;
-
-    // Whether the fgs is allowed while-in-use permissions, i.e. is considered 'in-use' to the user.
-    // (If the fgs was started while the app wasn't TOP it usually will be denied these permissions)
-    optional bool allow_while_in_use_permission = 4;
-}
-
-/**
- * Logs the number of times a uid accesses a sensitive AppOp during a foreground service session.
- * A foreground service session is any continuous period during which the uid holds at least one
- * foreground service; the atom will be pushed when the uid no longer holds any foreground services.
- * Accesses initiated while the uid is in the TOP state are ignored.
- * Sessions with no attempted accesses are not logged.
- * Logged from
- *     frameworks/base/services/core/java/com/android/server/am/ActiveServices.java
- */
-message ForegroundServiceAppOpSessionEnded {
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // The operation's name.
-    // Only following four ops are logged
-    // COARSE_LOCATION = 0
-    // FINE_LOCATION = 1
-    // CAMERA = 26
-    // RECORD_AUDIO = 27
-    optional android.app.AppOpEnum app_op_name = 2 [default = APP_OP_NONE];
-
-    // The uid's permission mode for accessing the AppOp during this fgs session.
-    enum Mode {
-        MODE_UNKNOWN = 0;
-        MODE_ALLOWED = 1; // Always allowed
-        MODE_IGNORED = 2; // Denied
-        MODE_FOREGROUND = 3; // Allow-while-in-use (or allowed-one-time)
-    }
-    optional Mode app_op_mode = 3;
-
-    // Number of times this AppOp was requested and allowed.
-    optional int32 count_ops_accepted = 4;
-    // Number of times this AppOp was requested but denied.
-    optional int32 count_ops_rejected = 5;
-}
-
-/**
- * Logs creation or removal of an isolated uid. Isolated uid's are temporary uid's to sandbox risky
- * behavior in its own uid. However, the metrics of these isolated uid's almost always should be
- * attributed back to the parent (host) uid. One example is Chrome.
- *
- * Logged from:
- *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
- */
-message IsolatedUidChanged {
-    // The host UID. Generally, we should attribute metrics from the isolated uid to the host uid.
-    // NOTE: DO NOT annotate uid field in this atom. This atom is specially handled in statsd.
-    // This field is ignored when event == REMOVED.
-    optional int32 parent_uid = 1;
-
-    optional int32 isolated_uid = 2;
-
-    // We expect an isolated uid to be removed before if it's used for another parent uid.
-    enum Event {
-        REMOVED = 0;
-        CREATED = 1;
-    }
-    optional Event event = 3;
-}
-
-/*
- * Logs the reception of an incoming network packet causing the main system to wake up for
- * processing that packet. These events are notified by the kernel via Netlink NFLOG to Netd
- * and processed by WakeupController.cpp.
- */
-message PacketWakeupOccurred {
-    // The uid owning the socket into which the packet was delivered, or -1 if the packet was
-    // delivered nowhere.
-    optional int32 uid = 1 [(is_uid) = true];
-    // The interface name on which the packet was received.
-    optional string iface = 2;
-    // The ethertype value of the packet.
-    optional int32 ethertype = 3;
-    // String representation of the destination MAC address of the packet.
-    optional string destination_hardware_address = 4;
-    // String representation of the source address of the packet if this was an IP packet.
-    optional string source_ip = 5;
-    // String representation of the destination address of the packet if this was an IP packet.
-    optional string destination_ip = 6;
-    // The value of the protocol field if this was an IPv4 packet or the value of the Next Header
-    // field if this was an IPv6 packet. The range of possible values is the same for both IP
-    // families.
-    optional int32 ip_next_header = 7;
-    // The source port if this was a TCP or UDP packet.
-    optional int32 source_port = 8;
-    // The destination port if this was a TCP or UDP packet.
-    optional int32 destination_port = 9;
-}
-
-/*
- * Logs the memory stats for an app on startup.
- * Logged from:
- *     frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
- */
-message AppStartMemoryStateCaptured {
-    // The uid if available. -1 means not available.
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // The process name.
-    optional string process_name = 2;
-
-    // The activity name.
-    optional string activity_name = 3;
-
-    // # of page-faults
-    optional int64 page_fault = 4;
-
-    // # of major page-faults
-    optional int64 page_major_fault = 5;
-
-    // RSS
-    optional int64 rss_in_bytes = 6;
-
-    // CACHE
-    optional int64 cache_in_bytes = 7;
-
-    // SWAP
-    optional int64 swap_in_bytes = 8;
-}
-
-/*
- * Logs the change in Low Memory Killer Daemon (LMKD) state which is used as start/stop boundaries
- * for LMK event.
- * Logged from:
- *      system/core/lmkd/lmkd.c
- */
-message LmkStateChanged {
-    enum State {
-        UNKNOWN = 0;
-        START = 1;
-        STOP = 2;
-    }
-    optional State state = 1;
-}
-
-/*
- * Logs the event when Low Memory Killer Daemon (LMKD) kills a process to reduce memory pressure.
- * Logged from:
- *      system/core/lmkd/lmkd.c
- */
-message LmkKillOccurred {
-    enum Reason {
-        UNKNOWN = 0;
-        PRESSURE_AFTER_KILL = 1;
-        NOT_RESPONDING = 2;
-        LOW_SWAP_AND_THRASHING = 3;
-        LOW_MEM_AND_SWAP = 4;
-        LOW_MEM_AND_THRASHING = 5;
-        DIRECT_RECL_AND_THRASHING = 6;
-        LOW_MEM_AND_SWAP_UTIL = 7;
-    }
-
-    // The uid if available. -1 means not available.
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // The process name.
-    optional string process_name = 2;
-
-    // oom adj score.
-    optional int32 oom_adj_score = 3;
-
-    // # of page-faults
-    optional int64 page_fault = 4;
-
-    // # of major page-faults
-    optional int64 page_major_fault = 5;
-
-    // RSS
-    optional int64 rss_in_bytes = 6;
-
-    // CACHE
-    optional int64 cache_in_bytes = 7;
-
-    // SWAP
-    optional int64 swap_in_bytes = 8;
-
-    // The elapsed real time of start of the process.
-    optional int64 process_start_time_nanos = 9;
-
-    // Min oom adj score considered by lmkd.
-    optional int32 min_oom_score = 10;
-
-    // Free physical memory on device at LMK time.
-    optional int32 free_mem_kb = 11;
-
-    // Free swap on device at LMK time.
-    optional int32 free_swap_kb = 12;
-
-    // What triggered the LMK event.
-    optional Reason reason = 13;
-}
-
-/*
- * Logs when the ActivityManagerService detects that an app died.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
- */
-message AppDied {
-    // timestamp(elapsedRealtime) of record creation
-    optional uint64 timestamp_millis = 1 [(state_field_option).exclusive_state = true];
-}
-
-/**
- * An atom for generic metrics logging. Available from Android Q.
- */
-message GenericAtom {
-    // The uid of the application that sent this custom atom.
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // An event_id indicates the type of event.
-    optional android.stats.EventType event_id = 2;
-}
-
-/**
- * Atom for simple logging of user interaction and impression events, such as "the user touched
- * this button" or "this dialog was displayed".
- * Keep the UI event stream clean: don't use for system or background events.
- * Log using the UiEventLogger wrapper - don't write with the StatsLog API directly.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/
- *   frameworks/base/packages/SystemUI/src/com/android/systemui/
- */
-message UiEventReported {
-    // The event_id.
-    optional int32 event_id = 1;
-    // The event's source or target uid and package, if applicable.
-    // For example, the package posting a notification, or the destination package of a share.
-    optional int32 uid = 2 [(is_uid) = true];
-    optional string package_name = 3;
-    // An identifier used to disambiguate which logs refer to a particular instance of some
-    // UI element. Useful when there might be multiple instances simultaneously active.
-    optional int32 instance_id = 4;
-}
-
-/**
- * Reports a notification was created or updated.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/notification/
- */
-message NotificationReported {
-    // The event_id (as for UiEventReported).
-    optional int32 event_id = 1;
-    // The notifying app's uid and package.
-    optional int32 uid = 2 [(is_uid) = true];
-    optional string package_name = 3;
-    // A small system-assigned identifier for the notification.
-    // Locally probably-unique, but expect collisions across users and/or days.
-    optional int32 instance_id = 4;
-    optional int32 notification_id_hash = 5;  // Small hash of the app-assigned notif ID + tag
-    optional int32 channel_id_hash = 6;  // Small hash of app-assigned channel ID
-
-    // Grouping information
-    optional int32 group_id_hash = 7;  // Small hash of the group ID of the notification
-    optional int32 group_instance_id = 8;  // Instance_id of the group-summary notification
-    optional bool is_group_summary = 9;  // Tags the group-summary notification
-
-    // Attributes
-    optional string category = 10;   // App-assigned notification category (API-defined strings)
-    optional int32 style = 11;       // App-assigned notification style
-    optional int32 num_people = 12;  // Number of Person records attached to the notification
-
-    // Ordering, importance and interruptiveness
-
-    optional int32 position = 13;    // Position in NotificationManager's list
-
-    optional android.stats.sysui.NotificationImportance importance = 14;
-    optional int32 alerting = 15;    // Bitfield, 1=buzz 2=beep 4=blink
-
-    enum NotificationImportanceExplanation {
-        IMPORTANCE_EXPLANATION_UNKNOWN = 0;
-        IMPORTANCE_EXPLANATION_APP = 1;     // App-specified channel importance.
-        IMPORTANCE_EXPLANATION_USER = 2;    // User-specified channel importance.
-        IMPORTANCE_EXPLANATION_ASST = 3;    // Notification Assistant override.
-        IMPORTANCE_EXPLANATION_SYSTEM = 4;  // System override.
-        // Like _APP, but based on pre-channels priority signal.
-        IMPORTANCE_EXPLANATION_APP_PRE_CHANNELS = 5;
-    }
-
-    optional NotificationImportanceExplanation importance_source = 16;
-    optional android.stats.sysui.NotificationImportance importance_initial = 17;
-    optional NotificationImportanceExplanation importance_initial_source = 18;
-    optional android.stats.sysui.NotificationImportance importance_asst = 19;
-    optional int32 assistant_hash = 20;
-    optional float assistant_ranking_score = 21;
-}
-
-message Notification {
-    // The notifying app's uid and package.
-    optional int32 uid = 1 [(is_uid) = true];
-    optional string package_name = 2;
-    // A small system-assigned identifier for the notification.
-    optional int32 instance_id = 3;
-
-    // Grouping information.
-    optional int32 group_instance_id = 4;
-    optional bool is_group_summary = 5;
-
-    // The section of the shade that the notification is in.
-    // See NotificationSectionsManager.PriorityBucket.
-    enum NotificationSection {
-        SECTION_UNKNOWN = 0;
-        SECTION_HEADS_UP = 1;
-        SECTION_MEDIA_CONTROLS = 2;
-        SECTION_PEOPLE = 3;
-        SECTION_ALERTING = 4;
-        SECTION_SILENT = 5;
-    }
-    optional NotificationSection section = 6;
-}
-
-message NotificationList {
-    repeated Notification notifications = 1;  // An ordered sequence of notifications.
-}
-
-/**
- * Reports a notification panel was displayed, e.g. from the lockscreen or status bar.
- *
- * Logged from:
- *   frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/notification/
- */
-message NotificationPanelReported {
-    // The event_id (as for UiEventReported).
-    optional int32 event_id = 1;
-    optional int32 num_notifications = 2;
-    // The notifications in the panel, in the order that they appear there.
-    optional NotificationList notifications = 3 [(log_mode) = MODE_BYTES];
-}
-
-/**
- * Reports a notification channel, or channel group, was created, updated, or deleted.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/notification/
- */
-message NotificationChannelModified {
-    // The event_id (as for UiEventReported).
-    optional int32 event_id = 1;
-    // The notifying app's uid and package.
-    optional int32 uid = 2 [(is_uid) = true];
-    optional string package_name = 3;
-    // Hash of app-assigned notification channel ID or channel-group ID
-    optional int32 channel_id_hash = 4;
-    // Previous importance setting, if applicable
-    optional android.stats.sysui.NotificationImportance old_importance = 5;
-    // New importance setting
-    optional android.stats.sysui.NotificationImportance importance = 6;
-}
-
-
-/**
- * Logs when a biometric acquire event occurs.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/biometrics
- */
-message BiometricAcquired {
-    // Biometric modality that was acquired.
-    optional android.hardware.biometrics.ModalityEnum modality = 1;
-    // The associated user. Eg: 0 for owners, 10+ for others. Defined in android/os/UserHandle.java.
-    optional int32 user = 2;
-    // If this acquire is for a crypto operation. e.g. Secure purchases, unlock password storage.
-    optional bool is_crypto = 3;
-    // Action that the device is performing. Acquired messages are only expected for enroll and
-    // authenticate. Other actions may indicate an error.
-    optional android.hardware.biometrics.ActionEnum action = 4;
-    // The client that this acquisition was received for.
-    optional android.hardware.biometrics.ClientEnum client = 5;
-    // Acquired constants, e.g. ACQUIRED_GOOD. See constants defined by <Biometric>Manager.
-    optional int32 acquire_info = 6;
-    // Vendor-specific acquire info. Valid only if acquire_info == ACQUIRED_VENDOR.
-    optional int32 acquire_info_vendor = 7;
-    // Dictates if this message should trigger additional debugging.
-    optional bool debug = 8;
-}
-
-/**
- * Logs when a biometric authentication event occurs.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/biometrics
- */
-message BiometricAuthenticated {
-    // Biometric modality that was used.
-    optional android.hardware.biometrics.ModalityEnum modality = 1;
-    // The associated user. Eg: 0 for owners, 10+ for others. Defined in android/os/UserHandle.java
-    optional int32 user = 2;
-    // If this authentication is for a crypto operation. e.g. Secure purchases, unlock password
-    // storage.
-    optional bool is_crypto = 3;
-    // The client that this acquisition was received for.
-    optional android.hardware.biometrics.ClientEnum client = 4;
-    // If authentication requires user confirmation. See BiometricPrompt's
-    // setRequireConfirmation(bool) method.
-    optional bool require_confirmation = 5;
-
-    enum State {
-        UNKNOWN = 0;
-        REJECTED = 1;
-        PENDING_CONFIRMATION = 2;
-        CONFIRMED = 3;
-    }
-
-    // State of the current auth attempt.
-    optional State state = 6;
-    // Time it took to authenticate. For BiometricPrompt where setRequireConfirmation(false) is
-    // specified and supported by the biometric modality, this is from the first ACQUIRED_GOOD to
-    // AUTHENTICATED. for setRequireConfirmation(true), this is from PENDING_CONFIRMATION to
-    // CONFIRMED.
-    optional int64 latency_millis = 7;
-    // Dictates if this message should trigger additional debugging.
-    optional bool debug = 8;
-}
-
-/**
- * Logs when a biometric error occurs.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/biometrics
- */
-message BiometricErrorOccurred {
-    // Biometric modality that was used.
-    optional android.hardware.biometrics.ModalityEnum modality = 1;
-    // The associated user. Eg: 0 for owners, 10+ for others. Defined in android/os/UserHandle.java
-    optional int32 user = 2;
-    // If this error is for a crypto operation. e.g. Secure purchases, unlock password storage.
-    optional bool is_crypto = 3;
-    // Action that the device is performing.
-    optional android.hardware.biometrics.ActionEnum action = 4;
-    // The client that this acquisition was received for.
-    optional android.hardware.biometrics.ClientEnum client = 5;
-    // Error constants. See constants defined by <Biometric>Manager. Enums won't work since errors
-    // are unique to modality.
-    optional int32 error_info = 6;
-    // Vendor-specific error info. Valid only if acquire_info == ACQUIRED_VENDOR. These are defined
-    // by the vendor and not specified by the HIDL interface.
-    optional int32 error_info_vendor = 7;
-    // Dictates if this message should trigger additional debugging.
-    optional bool debug = 8;
-    // Time spent during the authentication attempt.
-    optional int64 latency_millis = 9;
-}
-
-/**
- * Logs when a system health issue is detected.
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/biometrics
- */
-message BiometricSystemHealthIssueDetected {
-    // Biometric modality.
-    optional android.hardware.biometrics.ModalityEnum modality = 1;
-    // Type of issue detected.
-    optional android.hardware.biometrics.IssueEnum issue = 2;
-    // Dictates if this message should trigger additional debugging.
-    optional bool debug = 3;
-}
-
-/**
- * Logs when a biometric enrollment occurs.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/biometrics
- */
-message BiometricEnrolled {
-    // Biometric modality that was used.
-    optional android.hardware.biometrics.ModalityEnum modality = 1;
-    // The associated user. Eg: 0 for owners, 10+ for others. Defined in android/os/UserHandle.java
-    optional int32 user = 2;
-    // The amount of time the enrollment took in milliseconds.
-    optional int64 latency_millis = 3;
-    // Whether or not the enrollment was successful.
-    optional bool success = 4;
-}
-
-/*
- * Logs when a flag flip update occurrs. Used for mainline modules that update via flag flips.
- */
-message FlagFlipUpdateOccurred {
-    // If the event is from a flag config package, specify the package name.
-    optional string flag_flip_package_name = 1;
-
-    // The order id of the package
-    optional int64 order_id = 2;
-}
-
-/**
- * Potential experiment ids that goes with a train install.
- * Should be kept in sync with experiment_ids.proto.
- */
-message TrainExperimentIds {
-    repeated int64 experiment_id = 1;
-}
-
-/*
- * Logs when a binary push state changes.
- * Logged by the installer via public api.
- */
-message BinaryPushStateChanged {
-    // Name of the train.
-    optional string train_name = 1;
-    // Version code for a "train" of packages that need to be installed atomically
-    optional int64 train_version_code = 2;
-    // After installation of this package, device requires a restart.
-    optional bool requires_staging = 3;
-    // Rollback should be enabled for this install.
-    optional bool rollback_enabled = 4;
-    // Requires low latency monitoring if possible.
-    optional bool requires_low_latency_monitor = 5;
-
-    enum State {
-        UNKNOWN = 0;
-        INSTALL_REQUESTED = 1;
-        INSTALL_STARTED = 2;
-        INSTALL_STAGED_NOT_READY = 3;
-        INSTALL_STAGED_READY = 4;
-        INSTALL_SUCCESS = 5;
-        // Replaced by INSTALL_FAILURE_DOWNLOAD, INSTALL_FAILURE_STATE_MISMATCH,
-        // and INSTALL_FAILURE_COMMIT.
-        INSTALL_FAILURE = 6  [deprecated = true];
-        // This enum is for installs that are manually cancelled via the Manual Update UI.
-        INSTALL_CANCELLED = 7;
-        INSTALLER_ROLLBACK_REQUESTED = 8;
-        INSTALLER_ROLLBACK_INITIATED = 9;
-        INSTALLER_ROLLBACK_INITIATED_FAILURE = 10;
-        INSTALLER_ROLLBACK_STAGED = 11;
-        INSTALLER_ROLLBACK_STAGED_FAILURE = 12;
-        INSTALLER_ROLLBACK_BOOT_TRIGGERED = 13;
-        INSTALLER_ROLLBACK_BOOT_TRIGGERED_FAILURE = 14;
-        INSTALLER_ROLLBACK_SUCCESS = 15;
-        INSTALLER_ROLLBACK_FAILURE = 16;
-        INSTALLER_ROLLBACK_STAGED_CANCEL_REQUESTED = 17;
-        INSTALLER_ROLLBACK_STAGED_CANCEL_SUCCESS = 18;
-        INSTALLER_ROLLBACK_STAGED_CANCEL_FAILURE = 19;
-        INSTALL_STAGED_CANCEL_REQUESTED = 20;
-        INSTALL_STAGED_CANCEL_SUCCESS = 21;
-        INSTALL_STAGED_CANCEL_FAILURE = 22;
-        INSTALL_FAILURE_DOWNLOAD = 23;
-        INSTALL_FAILURE_STATE_MISMATCH = 24;
-        INSTALL_FAILURE_COMMIT = 25;
-        REBOOT_TRIGGERED = 26;
-    }
-    optional State state = 6;
-    // Possible experiment ids for monitoring this push.
-    optional TrainExperimentIds experiment_ids = 7 [(log_mode) = MODE_BYTES];
-    // user id
-    optional int32 user_id = 8;
-    optional int32 reason = 9;
-    // Whether or not this is a rollback event
-    optional bool is_rollback = 10;
-}
-
-/* Test atom, is not logged anywhere */
-message TestAtomReported {
-    repeated AttributionNode attribution_node = 1;
-    optional int32 int_field = 2;
-    optional int64 long_field = 3;
-    optional float float_field = 4;
-    optional string string_field = 5;
-    optional bool boolean_field = 6;
-    enum State {
-        UNKNOWN = 0;
-        OFF = 1;
-        ON = 2;
-    }
-    optional State state = 7;
-    optional TrainExperimentIds bytes_field = 8 [(android.os.statsd.log_mode) = MODE_BYTES];
-}
-
-/** Represents USB port overheat event. */
-message UsbPortOverheatEvent {
-    /* Temperature of USB port at USB plug event, in 1/10ths of degree C. */
-    optional int32 plug_temperature_deci_c = 1;
-
-    /* Maximum temperature of USB port during overheat event, in 1/10ths of degree C. */
-    optional int32 max_temperature_deci_c = 2;
-
-    /* Time between USB plug event and overheat threshold trip, in seconds. */
-    optional int32 time_to_overheat_secs = 3;
-
-    /* Time between overheat threshold trip and hysteresis, in seconds. */
-    optional int32 time_to_hysteresis_secs = 4;
-
-    /* Time between hysteresis and active mitigation ending, in seconds. */
-    optional int32 time_to_inactive_secs = 5;
-};
-
-/**
- * Logs total effective full charge and discharge cycles on a battery.
- * Here are some examples of one effective cycle:
- *   1) the battery charges from 0% to 100% and drains back to 0%,
- *   2) charging from 50% to 100% and draining back to 50% twice.
- * Pulled from:
- *   frameworks/base/cmds/statsd/src/external/ResourceHealthManagerPuller.cpp
- */
-message BatteryCycleCount {
-    /* Number of total charge and discharge cycles on the system battery. */
-    optional int32 cycle_count = 1;
-}
-
-/**
- * Logs that external storage is mounted and information about it, the storage type (sd card/usb/
- * others), its type (public or private) and the size in bytes.
- * Pulled from:
- *   StatsCompanionService
- */
-
-message ExternalStorageInfo {
-
-    enum VolumeType {
-        UNKNOWN = 0;
-        PUBLIC = 1;
-        PRIVATE = 2;
-        OTHER = 3;
-    }
-
-    // The type of external storage.
-    optional android.stats.storage.ExternalStorageType storage_type = 1;
-    // Type of the volume: TYPE_PUBLIC if portable and TYPE_PRIVATE if internal.
-    optional VolumeType volume_type = 2;
-    // Total size of the sd card in bytes.
-    optional int64 size_bytes = 3;
-}
-
-/*
- * Logs when a connection becomes available and lost.
- * Logged in StatsCompanionService.java
- */
-message ConnectivityStateChanged {
-  // Id of the network.
-  optional int32 net_id = 1;
-
-  enum State {
-    UNKNOWN = 0;
-    CONNECTED = 1;
-    DISCONNECTED = 2;
-  }
-  // Connected state of a network.
-  optional State state = 2;
-}
-
-/**
- * Logs when a service starts and stops.
- * Logged from:
- *   services/core/java/com/android/server/am/ActiveServices.java
- */
-message ServiceStateChanged {
-
-    optional int32 uid = 1 [(is_uid) = true];
-
-    optional string package_name = 2;
-
-    optional string service_name = 3;
-
-    enum State {
-        START = 1;
-        STOP = 2;
-    }
-
-    optional State state = 4;
-}
-
-/**
- * Logs when a service is launched.
- * Logged from:
- *   services/core/java/com/android/server/am/ActiveServices.java
- */
-message ServiceLaunchReported {
-
-    optional int32 uid = 1 [(is_uid) = true];
-
-    optional string package_name = 2;
-
-    optional string service_name = 3;
-}
-
-/**
- * Logs when a hidden API is used.
- *
- * Logged from:
- *     libcore/libart/src/main/java/dalvik/system/VMRuntime.java
- */
-message HiddenApiUsed {
-    // The uid of the app making the hidden access.
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // Signature of the method or field accessed.
-    optional string signature = 2;
-
-    enum AccessMethod {
-        NONE = 0;
-        REFLECTION = 1;
-        JNI = 2;
-        LINKING = 3;
-    }
-
-    // Type of access.
-    optional AccessMethod access_method = 3;
-
-    // Whether the access was prevented or not.
-    optional bool access_denied = 4;
-}
-
-/**
- * Logs user interaction with the Privacy Indicators added in Q. In particular:
- * - When user sees privacy chip
- * - When user clicks privacy chip
- * - How does the user exit the Privacy Dialog
- * Logged from:
- *   packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
- */
-message PrivacyIndicatorsInteracted {
-
-    enum Type {
-        UNKNOWN = 0;
-        CHIP_VIEWED = 1;
-        CHIP_CLICKED = 2;
-        DIALOG_PRIVACY_SETTINGS = 3;
-        DIALOG_DISMISS = 4;
-        DIALOG_LINE_ITEM = 5;
-    }
-
-    optional Type type = 1 [(state_field_option).exclusive_state = true];
-
-    // Used if the type is LINE_ITEM
-    optional string package_name = 2;
-}
-
-/**
- * Logs information about a package that is moved from the internal to external storage and vice
- * versa.
- * It logs the package name, the type of the external storage where the package is installed
- * (if moved to external storage, or UNKNOWN if moved to internal storage),
- * and the move type: if it's from internal to external or the other way around.
- *
- * Logged from:
-        frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java
- */
-message AppMovedStorageReported {
-    enum MoveType {
-        UNKNOWN = 0;
-        TO_EXTERNAL = 1;
-        TO_INTERNAL = 2;
-    }
-    // The type of the external storage.
-    optional android.stats.storage.ExternalStorageType external_storage_type = 1;
-    // The type of move.
-    optional MoveType move_type = 2;
-    // The name of the package that was moved.
-    optional string package_name = 3;
-}
-
-/**
- * Logs when system server watchdog occurs.
- * Logged from:
- *      frameworks/base/services/core/java/com/android/server/Watchdog.java
- */
-message SystemServerWatchdogOccurred {
-    optional string subject = 1;
-}
-
-/**
- * Logs when new file added to tombstones.
- * Logged from:
- *      frameworks/base/core/java/com/android/server/BootReceiver.java
- */
-message TombStoneOccurred {
-}
-
-/*
- * Information about a role request
- *
- * Logged from:
- *   packages/apps/PermissionController/src/com/android/packageinstaller/role/ui/RequestRoleFragment.java
- */
-message RoleRequestResultReported {
-    // UID of application requesting the role
-    optional int32 requesting_uid = 1;
-
-    // Package name of application requesting the role
-    optional string requesting_package_name = 2;
-
-    // The role to be granted
-    optional string role_name = 3;
-
-    // The count of applications qualifying for the role
-    optional int32 qualifying_count = 4;
-
-    // UID of application current granted the role
-    optional int32 current_uid = 5;
-
-    // Package name of application current granted the role
-    optional string current_package_name = 6;
-
-    // UID of another application that user chose to grant the role to, instead of the requesting
-    // application
-    optional int32 granted_another_uid = 7;
-
-    // Package name of another application that user chose to grant the role to, instead of the
-    // requesting application
-    optional string granted_another_package_name = 8;
-
-    enum Result {
-        UNDEFINED = 0;
-        // role request was ignored
-        IGNORED = 1;
-        // role request was ignored because it's already granted
-        IGNORED_ALREADY_GRANTED = 2;
-        // role request was ignored because the application isn't qualified
-        IGNORED_NOT_QUALIFIED = 3;
-        // role request was ignored because user said it should be always denied
-        IGNORED_USER_ALWAYS_DENIED = 4;
-        // role was granted by user action
-        USER_GRANTED = 5;
-        // role was denied by user action
-        USER_DENIED = 6;
-        // role was denied by user granting another application the role
-        USER_DENIED_GRANTED_ANOTHER = 7;
-        // role was denied and set to be always denied by the user
-        USER_DENIED_WITH_ALWAYS = 8;
-    }
-    // The result of the role request
-    optional Result result = 9;
-}
-
-/**
- * Logs when a Vehicle Maps Service client's connection state has changed
- *
- * Logged from:
- *   packages/services/Car/service/src/com/android/car/stats/VmsClientLog.java
- */
-message VmsClientConnectionStateChanged {
-    // The UID of the VMS client app
-    optional int32 uid = 1 [(is_uid) = true];
-
-    enum State {
-        UNKNOWN = 0;
-        // Attempting to connect to the client
-        CONNECTING = 1;
-        // Client connection established
-        CONNECTED = 2;
-        // Client connection closed unexpectedly
-        DISCONNECTED = 3;
-        // Client connection closed by VMS
-        TERMINATED = 4;
-        // Error establishing the client connection
-        CONNECTION_ERROR = 5;
-    }
-
-    optional State state  = 2;
-}
-
-message MimeTypes {
-    repeated string mime_types = 1;
-}
-
-/**
- * Logs statistics regarding accesses to external storage.
- * All stats are normalized for one day period.
- *
- * Logged from:
- *   packages/providers/MediaProvider/src/com/android/providers/media/MediaProvider.java
- */
-message GeneralExternalStorageAccessStats {
-    optional int32 uid = 1 [(is_uid) = true];
-    // Total number of accesses like creation, open, delete and rename/update.
-    // Includes file path and ContentResolver accesses
-    optional uint32 total_accesses = 2;
-    // Number of file path accesses, as opposed to file path and ContentResolver.
-    optional uint32 file_path_accesses = 3;
-    // Number of accesses on secondary volumes like SD cards.
-    // Includes file path and ContentResolver accesses
-    optional uint32 secondary_storage_accesses = 4;
-    // Comma-separated list of mime types that were accessed.
-    optional MimeTypes mime_types_accessed = 5;
-}
-
-/**
- * Logs when MediaProvider has successfully finished scanning a storage volume.
- *
- * Logged from:
- *   packages/providers/MediaProvider/src/com/android/providers/media/scan/ModernMediaScanner.java
- */
-message MediaProviderScanOccurred {
-    enum Reason {
-        // Scan triggered due to unknown reason
-        UNKNOWN = 0;
-        // Scan triggered due to storage volume being mounted
-        MOUNTED = 1;
-        // Scan triggered due to explicit user action or app request
-        DEMAND = 2;
-        // Scan triggered due to idle maintenance
-        IDLE = 3;
-    }
-
-    // Volume type that this event pertains to
-    optional android.stats.mediaprovider.VolumeType volume_type = 1;
-    // Reason why this scan was triggered
-    optional Reason reason = 2;
-    // Total number of files scanned
-    optional int64 item_count = 3;
-    // Duration of scan, normalized per file
-    optional float normalized_duration_millis = 4;
-    // Number of database inserts, normalized per file
-    optional float normalized_insert_count = 5;
-    // Number of database updates, normalized per file
-    optional float normalized_update_count = 6;
-    // Number of database deletes, normalized per file
-    optional float normalized_delete_count = 7;
-}
-
-/**
- * Logs when an app has asked MediaProvider to delete media belonging to the user.
- *
- * Logged from:
- *   packages/providers/MediaProvider/src/com/android/providers/media/MediaProvider.java
- */
-message MediaContentDeleted {
-    // Volume type that this event pertains to
-    optional android.stats.mediaprovider.VolumeType volume_type = 1;
-    // UID of app that requested deletion
-    optional int32 uid = 2 [(is_uid) = true];
-    // Number of items that were deleted
-    optional int32 item_count = 3;
-}
-
-/**
- * Logs when an app has asked MediaProvider to grant them access to media belonging to the user.
- *
- * Logged from:
- *   packages/providers/MediaProvider/src/com/android/providers/media/PermissionActivity.java
- */
-message MediaProviderPermissionRequested {
-    enum Result {
-        UNKNOWN = 0;
-        USER_GRANTED = 1;
-        AUTO_GRANTED = 2;
-        USER_DENIED = 3;
-        USER_DENIED_WITH_PREJUDICE = 4;
-        AUTO_DENIED = 5;
-    }
-
-    // Volume type that this event pertains to
-    optional android.stats.mediaprovider.VolumeType volume_type = 1;
-    // UID of app that requested permission
-    optional int32 uid = 2 [(is_uid) = true];
-    // Number of items that were requested
-    optional int32 item_count = 3;
-    // Result of this request
-    optional Result result = 4;
-}
-
-/**
- * Logs when MediaProvider has finished upgrading or downgrading its database schema.
- *
- * Logged from:
- *   packages/providers/MediaProvider/src/com/android/providers/media/DatabaseHelper.java
- */
-message MediaProviderSchemaChanged {
-    // Volume type that this event pertains to
-    optional android.stats.mediaprovider.VolumeType volume_type = 1;
-    // Old database version code
-    optional int32 version_from = 2;
-    // New database version code
-    optional int32 version_to = 3;
-    // Total number of files in database
-    optional int64 item_count = 4;
-    // Duration of schema change, normalized per file
-    optional float normalized_duration_millis = 5;
-}
-
-/**
- * Logs when MediaProvider has finished an idle maintenance job.
- *
- * Logged from:
- *   packages/providers/MediaProvider/src/com/android/providers/media/MediaProvider.java
- */
-message MediaProviderIdleMaintenanceFinished {
-    // Volume type that this event pertains to
-    optional android.stats.mediaprovider.VolumeType volume_type = 1;
-
-    // Total number of files in database
-    optional int64 item_count = 2;
-    // Duration of idle maintenance, normalized per file
-    optional float normalized_duration_millis = 3;
-    // Number of thumbnails found to be stale, normalized per file
-    optional float normalized_stale_thumbnails = 4;
-    // Number of items found to be expired, normalized per file
-    optional float normalized_expired_media = 5;
-}
-
-/**
- * Represents boot time event with duration in ms.
- *
- * Logged from: bootstat and various system server components. Check each enums for details.
- */
-message BootTimeEventDuration {
-    enum DurationEvent {
-        UNKNOWN = 0;
-        // Bootloader time excluding BOOTLOADER_UI_WAIT + boot complete time. Logged from bootstat.
-        ABSOLUTE_BOOT_TIME = 1;
-        // Bootloader's 1st stage execution time.
-        // Logged from bootstat.
-        BOOTLOADER_FIRST_STAGE_EXEC = 2;
-        // Bootloader's 1st stage loading time.
-        // Logged from bootstat.
-        BOOTLOADER_FIRST_STAGE_LOAD = 3;
-        // Bootloader's kernel loading time.
-        // Logged from bootstat.
-        BOOTLOADER_KERNEL_LOAD = 4;
-        // Bootloader's 2nd stage execution time.
-        // Logged from bootstat.
-        BOOTLOADER_SECOND_STAGE_EXEC = 5;
-        // Bootloader's 2nd stage loading time.
-        // Logged from bootstat.
-        BOOTLOADER_SECOND_STAGE_LOAD = 6;
-        // Duration for Bootloader to show unlocked device's warning UI. This should not happen
-        // for locked device.
-        // Logged from bootstat.
-        BOOTLOADER_UI_WAIT = 7;
-        // Total time spend in bootloader. This is the sum of all BOOTLOADER_* listed above.
-        // Logged from bootstat.
-        BOOTLOADER_TOTAL = 8;
-        // Shutdown duration inside init for the reboot before the current boot up.
-        // Logged from f/b/services/.../BootReceiver.java.
-        SHUTDOWN_DURATION = 9;
-        // Total time for mounting of disk devices during bootup.
-        // Logged from f/b/services/.../BootReceiver.java.
-        MOUNT_DEFAULT_DURATION = 10;
-        // Total time for early stage mounting of disk devices during bootup.
-        // Logged from f/b/services/.../BootReceiver.java.
-        MOUNT_EARLY_DURATION = 11;
-        // Total time for late stage mounting of disk devices during bootup.
-        // Logged from f/b/services/.../BootReceiver.java.
-        MOUNT_LATE_DURATION = 12;
-        // Average time to scan non-system app after OTA
-        // Logged from f/b/services/.../PackageManagerService.java
-        OTA_PACKAGE_MANAGER_INIT_TIME = 13;
-        // Time to initialize Package manager after OTA
-        // Logged from f/b/services/.../PackageManagerService.java
-        OTA_PACKAGE_MANAGER_DATA_APP_AVG_SCAN_TIME = 14;
-        // Time to scan all system app from Package manager after OTA
-        // Logged from f/b/services/.../PackageManagerService.java
-        OTA_PACKAGE_MANAGER_SYSTEM_APP_AVG_SCAN_TIME = 15;
-        // Init's total time for cold boot stage.
-        // Logged from bootstat.
-        COLDBOOT_WAIT = 16;
-        // Init's total time for initializing selinux.
-        // Logged from bootstat.
-        SELINUX_INIT = 17;
-        // Time since last factory reset.
-        // Logged from bootstat.
-        FACTORY_RESET_TIME_SINCE_RESET = 18;
-        // Init's total time spent for completing the 1st stage.
-        // Logged from bootstat.
-        ANDROID_INIT_STAGE_1 = 19;
-    }
-
-    // Type of the event.
-    optional DurationEvent event = 1;
-    // Duration of the event in ms.
-    optional int64 duration_millis = 2;
-}
-
-/**
- * Represents the start of specific boot time event during bootup in ms. This is usually a time
- * since boot-up.
- *
- * Logged from: bootstat and various system server components. Check each enums for details.
- */
-message BootTimeEventElapsedTime {
-    enum ElapsedTimeEvent {
-        UNKNOWN = 0;
-        // Time when init starts 1st stage. Logged from bootstat.
-        ANDROID_INIT_STAGE_1 = 1;
-        // Time when sys.boot_completed prop is set.
-        // Logged from bootstat.
-        BOOT_COMPLETE = 2;
-        // BOOT_COMPLETE for encrypted device.
-        BOOT_COMPLETE_ENCRYPTION = 3;
-        // BOOT_COMPLETE for device with no encryption.
-        BOOT_COMPLETE_NO_ENCRYPTION = 4;
-        // Adjusted BOOT_COMPLETE for encrypted device extracting decryption time.
-        BOOT_COMPLETE_POST_DECRYPT = 5;
-        // BOOT_COMPLETE after factory reset.
-        FACTORY_RESET_BOOT_COMPLETE = 6;
-        // BOOT_COMPLETE_NO_ENCRYPTION after factory reset.
-        FACTORY_RESET_BOOT_COMPLETE_NO_ENCRYPTION = 7;
-        // BOOT_COMPLETE_POST_DECRYPT after factory reset.
-        FACTORY_RESET_BOOT_COMPLETE_POST_DECRYPT = 8;
-        // BOOT_COMPLETE after OTA.
-        OTA_BOOT_COMPLETE = 9;
-        // BOOT_COMPLETE_NO_ENCRYPTION after OTA.
-        OTA_BOOT_COMPLETE_NO_ENCRYPTION = 10;
-        // BOOT_COMPLETE_POST_DECRYPT after OTA.
-        OTA_BOOT_COMPLETE_POST_DECRYPT = 11;
-        // Time when the system starts sending LOCKED_BOOT_COMPLETED broadcast.
-        // Logged from  f/b/services/.../UserController.java
-        FRAMEWORK_LOCKED_BOOT_COMPLETED = 12;
-        // Time when the system starts sending BOOT_COMPLETED broadcast.
-        // Logged from  f/b/services/.../UserController.java
-        FRAMEWORK_BOOT_COMPLETED = 13;
-        // Time when the package manager starts init.
-        // Logged from f/b/services/.../SystemServer.java
-        PACKAGE_MANAGER_INIT_START = 14;
-        // Time when package manager is ready
-        // Logged from f/b/services/.../SystemServer.java
-        PACKAGE_MANAGER_INIT_READY = 15;
-        // Represents the time when user has entered unlock credential for system with user pin.
-        // Logged from bootstat.
-        POST_DECRYPT = 16;
-        // Represents the start of zygote's init.
-        // Logged from zygote itself.
-        ZYGOTE_INIT_START = 17;
-        // Represents the start of secondary zygote's init.
-        // TODO: add logging to zygote
-        SECONDARY_ZYGOTE_INIT_START = 18;
-        // Represents the start of system server's init.
-        // Logged from f/b/services/.../SystemServer.java
-        SYSTEM_SERVER_INIT_START = 19;
-        // Represents the completion of system server's init.
-        // Logged from f/b/services/.../SystemServer.java
-        SYSTEM_SERVER_READY = 20;
-        // Represents the start of launcher during boot-up.
-        // TODO: add logging
-        LAUNCHER_START = 21;
-        // Represents the completion of launcher's initial rendering. User can use other apps from
-        // launcher from this point.
-        // TODO: add logging
-        LAUNCHER_SHOWN = 22;
-    }
-
-    // Type of the event.
-    optional ElapsedTimeEvent event = 1;
-    // Time since bootup for the event.
-    // It should be acquired from SystemClock elapsedRealtime() call or equivalent.
-    optional int64 time_millis = 2;
-}
-
-/**
- * Boot time events with UTC time.
- *
- * Logged from: bootstat and various system server components. Check each enums for details.
- */
-message BootTimeEventUtcTime {
-    enum UtcTimeEvent {
-        UNKNOWN = 0;
-        // Time of the bootstat's marking of 1st boot after the last factory reset.
-        // Logged from bootstat.
-        FACTORY_RESET_RESET_TIME = 1;
-        // The time when bootstat records FACTORY_RESET_* events. This is close to
-        // BOOT_COMPLETE time for the current bootup.
-        // Logged from bootstat.
-        FACTORY_RESET_CURRENT_TIME = 2;
-        // DUplicate of FACTORY_RESET_RESET_TIME added for debugging purpose.
-        // Logged from bootstat.
-        FACTORY_RESET_RECORD_VALUE = 3;
-    }
-
-    // Type of the event.
-    optional UtcTimeEvent event = 1;
-    // UTC time for the event.
-    optional int64 utc_time_secs = 2;
-}
-
-/**
- * Boot time events representing specific error code during bootup.
- * Meaning of error code can be different per each event type.
- *
- * Logged from: bootstat and various system server components. Check each enums for details.
- */
-message BootTimeEventErrorCode {
-    enum ErrorCodeEvent {
-        UNKNOWN = 0;
-        // Linux error code for time() call to get the current UTC time.
-        // Logged from bootstat.
-        FACTORY_RESET_CURRENT_TIME_FAILURE = 1;
-        // Represents UmountStat before the reboot for the current boot up. Error codes defined
-        // as UMOUNT_STAT_* from init/reboot.cpp.
-        // Logged from f/b/services/.../BootReceiver.java.
-        SHUTDOWN_UMOUNT_STAT = 2;
-        // Reprepsents fie system mounting error code of /data partition for the current boot.
-        // Error codes defined as combination of FsStatFlags from system/core/fs_mgr/fs_mgr.cpp.
-        // Logged from f/b/services/.../BootReceiver.java.
-        FS_MGR_FS_STAT_DATA_PARTITION = 3;
-    }
-
-    // Type of the event.
-    optional ErrorCodeEvent event = 1;
-    // error code defined per each event type.
-    // For example, this can have a value of FsStatFlags.FS_STAT_FULL_MOUNT_FAILED for the event of
-    // FS_MGR_FS_STAT.
-    optional int32 error_code = 2;
-}
-
-/**
- * Collects Virtual A/B statistics related to the use of dm-snapshot performed
- * after an OTA.
- *
- * Logged from:
- *  - system/update_engine/cleanup_previous_update_action.cc
- */
-message SnapshotMergeReported {
-    // Keep in sync with
-    // system/core/fs_mgr/libsnapshot/android/snapshot/snapshot.proto
-    enum UpdateState {
-        // No update or merge is in progress.
-        NONE = 0;
-        // An update is applying; snapshots may already exist.
-        INITIATED = 1;
-        // An update is pending, but has not been successfully booted yet.
-        UNVERIFIED = 2;
-        // The kernel is merging in the background.
-        MERGING = 3;
-        // Post-merge cleanup steps could not be completed due to a transient
-        // error, but the next reboot will finish any pending operations.
-        MERGE_NEEDS_REBOOT = 4;
-        // Merging is complete, and needs to be acknowledged.
-        MERGE_COMPLETED = 5;
-        // Merging failed due to an unrecoverable error.
-        MERGE_FAILED = 6;
-        // The update was implicitly cancelled, either by a rollback or a flash
-        // operation via fastboot. This state can only be returned by WaitForMerge.
-        CANCELLED = 7;
-    };
-
-    // Status of the update after the merge attempts.
-    optional UpdateState final_state = 1;
-
-    // Time to complete a merge operation in milliseconds.
-    // A negative value corresponds to the case in which the merge operation
-    // was interrupted and resumed (e.g. in case of a system reboot during the
-    // merge).
-    optional int64 duration_millis = 2;
-
-    // Number of reboots that occurred after issuing and before completing the
-    // merge of all the snapshot devices.
-    optional int32 intermediate_reboots = 3;
-
-    // The device has been upgraded to Virtual A/B.
-    optional bool is_vab_retrofit = 4;
-
-    // Space that has been temporarily allocated in the /data partition
-    // containing the dm-snapshot's copy-on-write data generated during a
-    // Virtual A/B update.
-    optional int64 cow_file_size_bytes = 5;
-}
-
-/**
- * Event representing when BlobStoreManager.Session#commit() is called
- *
- * Logged from:
- *  frameworks/base/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java
- */
-message BlobCommitted {
-    // Uid of the Blob committer
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // Id of the Blob committed
-    optional int64 blob_id = 2;
-
-    // Size of the Blob
-    optional int64 size = 3;
-
-    enum Result {
-        UNKNOWN = 0;
-        // Commit Succeeded
-        SUCCESS = 1;
-        // Commit Failed: Error occurred during commit
-        ERROR_DURING_COMMIT = 2;
-        // Commit Failed: Digest of the data did not match Blob digest
-        DIGEST_MISMATCH = 3;
-        // Commit Failed: Allowed count limit exceeded
-        COUNT_LIMIT_EXCEEDED = 4;
-    }
-    optional Result result = 4;
-}
-
-/**
- * Event representing when BlobStoreManager#acquireLease() is called
- *
- * Logged from:
- *  frameworks/base/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java
- */
-message BlobLeased{
-    // Uid of the Blob leasee
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // Id of the Blob leased or 0 if the Blob does not exist
-    optional int64 blob_id = 2;
-
-    // Size of the Blob or 0 if the Blob does not exist
-    optional int64 size = 3;
-
-    enum Result {
-        UNKNOWN = 0;
-        // Lease Succeeded
-        SUCCESS = 1;
-        // Lease Failed: Blob does not exist
-        BLOB_DNE = 2;
-        // Lease Failed: Leasee does not have access to the Blob
-        ACCESS_NOT_ALLOWED = 3;
-        // Lease Failed: Leasee requested an invalid expiry duration
-        LEASE_EXPIRY_INVALID = 4;
-        // Lease Failed: Leasee has exceeded the total data lease limit
-        DATA_SIZE_LIMIT_EXCEEDED = 5;
-        // Leasee Failed: Allowed count limit exceeded
-        COUNT_LIMIT_EXCEEDED = 6;
-    }
-    optional Result result = 4;
-}
-
-/**
- * Event representing when BlobStoreManager#openBlob() is called
- *
- * Logged from:
- *  frameworks/base/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java
- */
-message BlobOpened{
-    // Uid of the Blob opener
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // Id of the Blob opened or 0 if the Blob does not exist
-    optional int64 blob_id = 2;
-
-    // Size of the Blob or 0 if the Blob does not exist
-    optional int64 size = 3;
-
-    enum Result {
-        UNKNOWN = 0;
-        // Open Succeeded
-        SUCCESS = 1;
-        // Open Failed: Blob does not exist
-        BLOB_DNE = 2;
-        // Open Failed: Opener does not have access to the Blob
-        ACCESS_NOT_ALLOWED = 3;
-    }
-    optional Result result = 4;
-}
-
-//////////////////////////////////////////////////////////////////////
-// Pulled atoms below this line //
-//////////////////////////////////////////////////////////////////////
-
-/**
- * Pulls bytes transferred via wifi (Sum of foreground and background usage).
- *
- * Pulled from:
- *   StatsCompanionService (using BatteryStats to get which interfaces are wifi)
- */
-message WifiBytesTransfer {
-    optional int32 uid = 1 [(is_uid) = true];
-
-    optional int64 rx_bytes = 2;
-
-    optional int64 rx_packets = 3;
-
-    optional int64 tx_bytes = 4;
-
-    optional int64 tx_packets = 5;
-}
-
-/**
- * Pulls bytes transferred via wifi (separated by foreground and background usage).
- *
- * Pulled from:
- *   StatsCompanionService (using BatteryStats to get which interfaces are wifi)
- */
-message WifiBytesTransferByFgBg {
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // 1 denotes foreground and 0 denotes background. This is called Set in NetworkStats.
-    optional bool is_foreground = 2;
-
-    optional int64 rx_bytes = 3;
-
-    optional int64 rx_packets = 4;
-
-    optional int64 tx_bytes = 5;
-
-    optional int64 tx_packets = 6;
-}
-
-/**
- * Pulls bytes transferred via mobile networks (Sum of foreground and background usage).
- *
- * Pulled from:
- *   StatsCompanionService (using BatteryStats to get which interfaces are mobile data)
- */
-message MobileBytesTransfer {
-    optional int32 uid = 1 [(is_uid) = true];
-
-    optional int64 rx_bytes = 2;
-
-    optional int64 rx_packets = 3;
-
-    optional int64 tx_bytes = 4;
-
-    optional int64 tx_packets = 5;
-}
-
-/**
- * Pulls bytes transferred via mobile networks (separated by foreground and background usage).
- *
- * Pulled from:
- *   StatsCompanionService (using BatteryStats to get which interfaces are mobile data)
- */
-message MobileBytesTransferByFgBg {
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // 1 denotes foreground and 0 denotes background. This is called Set in
-    // NetworkStats.
-    optional bool is_foreground = 2;
-
-    optional int64 rx_bytes = 3;
-
-    optional int64 rx_packets = 4;
-
-    optional int64 tx_bytes = 5;
-
-    optional int64 tx_packets = 6;
-}
-
-/**
- * Used for pull network statistics via mobile|wifi networks, and sliced by interesting dimensions.
- * Note that the data is expected to be sliced into more dimensions in future. In other words,
- * the caller must not assume any row of data is one full report when filtering with a set of
- * matching conditions, because future data may represent with multiple rows what is currently
- * represented by one.
- * To avoid being broken by future slicing, callers must take care to aggregate rows even if they
- * query all the existing columns.
- *
- * Pulled from:
- *   StatsPullAtomService (using NetworkStatsService to get NetworkStats)
- */
-message DataUsageBytesTransfer {
-    // State of this record. Should be NetworkStats#SET_DEFAULT or NetworkStats#SET_FOREGROUND to
-    // indicate the foreground state, or NetworkStats#SET_ALL to indicate the record is for all
-    // states combined, not including debug states. See NetworkStats#SET_*.
-    optional int32 state = 1;
-
-    optional int64 rx_bytes = 2;
-
-    optional int64 rx_packets = 3;
-
-    optional int64 tx_bytes = 4;
-
-    optional int64 tx_packets = 5;
-
-    // Radio Access Technology (RAT) type of this record, should be one of
-    // TelephonyManager#NETWORK_TYPE_* constants, or NetworkTemplate#NETWORK_TYPE_ALL to indicate
-    // the record is for all rat types combined.
-    optional int32 rat_type = 6;
-
-    // Mcc/Mnc read from sim if the record is for a specific subscription, null indicates the
-    // record is combined across subscriptions.
-    optional string sim_mcc = 7;
-    optional string sim_mnc = 8;
-
-    // Allows mobile virtual network operators (MVNOs) to be identified with individual IDs.
-    // See TelephonyManager#getSimCarrierId.
-    optional int32 carrier_id = 9;
-
-    // Enumeration of opportunistic states with an additional ALL state indicates the record is
-    // combined regardless of the boolean value in its field.
-    enum DataSubscriptionState {
-        UNKNOWN = 0; // For server side backward compatibility.
-        ALL = 1;
-        OPPORTUNISTIC = 2;
-        NOT_OPPORTUNISTIC = 3;
-    }
-    // Mark whether the subscription is an opportunistic data subscription, and ALL indicates the
-    // record is combined across opportunistic data subscriptions.
-    // See {@link SubscriptionManager#setOpportunistic}.
-    optional DataSubscriptionState opportunistic_data_sub = 10;
-
-    // Indicate whether NR is connected, server side could use this with RAT type to determine if
-    // the record is for 5G NSA (Non Stand Alone) mode, where the primary cell is still LTE and
-    // network allocates a secondary 5G cell so telephony reports RAT = LTE along with NR state as
-    // connected.
-    optional bool is_nr_connected = 11;
-}
-
-/**
- * Pulls bytes transferred via bluetooth. It is pulled from Bluetooth controller.
- *
- * Pulled from:
- *   StatsCompanionService
- */
-message BluetoothBytesTransfer {
-    optional int32 uid = 1 [(is_uid) = true];
-
-    optional int64 rx_bytes = 2;
-
-    optional int64 tx_bytes = 3;
-}
-
-/**
- * Pulls the kernel wakelock durations. This atom is adapted from
- * android/internal/os/KernelWakelockStats.java
- *
- * Pulled from:
- *   StatsCompanionService using KernelWakelockReader.
- */
-message KernelWakelock {
-    optional string name = 1;
-
-    optional int32 count = 2;
-
-    optional int32 version = 3;
-
-    optional int64 time_micros = 4;
-}
-
-/**
- * Pulls low power state information. If power.stats HAL is not available, this
- * includes platform and subsystem sleep state information,
- * PowerStatePlatformSleepState, PowerStateVoter or PowerStateSubsystemSleepState
- * as defined in:
- *   hardware/interfaces/power/1.0/types.hal
- *   hardware/interfaces/power/1.1/types.hal
- * If power.stats HAL is available, this includes PowerEntityStateResidencyResult
- * as defined in:
- *   hardware/interfaces/power/stats/1.0/types.hal
- */
-message SubsystemSleepState {
-    // Subsystem name
-    optional string subsystem_name = 1;
-    // For PlatformLowPowerStats (hal 1.0), this is the voter name, which could be empty.
-    // For SubsystemLowPowerStats (hal 1.1), this is the sleep state name.
-    // For PowerEntityStateResidencyResult (hal power/stats/1.0) this is the
-    //    powerEntityStateName from the corresponding PowerEntityStateInfo.
-    optional string subname = 2;
-    // The number of times it entered, or voted for entering the sleep state
-    optional uint64 count = 3;
-    // The length of time spent in, or spent voting for, the sleep state
-    optional uint64 time_millis = 4;
-}
-
-/**
- * Pulls on-device power measurement information.
- * Data defined by hardware/interfaces/power/stats/1.0/types.hal.
- * Pulled from:
- *   frameworks/base/cmds/statsd/src/external/PowerStatsPuller.cpp
- */
-message OnDevicePowerMeasurement {
-    // Name of the subsystem (to which the rail belongs).
-    optional string subsystem_name = 1;
-
-    // Rail name. The rail lies within the subsystem.
-    optional string rail_name = 2;
-
-    // Time (in ms since boot) at which the rail energy value was measured.
-    // This may differ slightly from the time that statsd logs this information.
-    optional uint64 measurement_timestamp_millis = 3;
-
-    // Accumulated energy used via the rail since device boot in uWs.
-    optional uint64 energy_microwatt_secs = 4;
-}
-
-/**
- * Pulls Cpu time per frequency.
- * Pulls the time the cpu spend on the frequency index. Frequency index
- * starts from highest to lowest. The value should be monotonically
- * increasing since boot. However, if there is a cpu
- * hotplug event, the value would be reset as well.
- */
-message CpuTimePerFreq {
-    optional uint32 cluster = 1;
-    optional uint32 freq_index = 2;
-    optional uint64 time_millis = 3;
-}
-
-/**
- * Pulls Cpu Time Per Uid.
- * Note that isolated process uid time should be attributed to host uids.
- */
-message CpuTimePerUid {
-    optional int32 uid = 1 [(is_uid) = true];
-    optional uint64 user_time_micros = 2;
-    optional uint64 sys_time_micros = 3;
-}
-
-/**
- * Pulls Cpu Time Per Uid per frequency.
- * Note that isolated process uid time should be attributed to host uids.
- * For each uid, we order the time by descending frequencies.
- */
-message CpuTimePerUidFreq {
-    optional int32 uid = 1 [(is_uid) = true];
-    optional uint32 freq_index = 2;
-    optional uint64 time_millis = 3;
-}
-
-/**
- * Pulls Wifi Controller Activity Energy Info
- */
-message WifiActivityInfo {
-    // timestamp(wall clock) of record creation
-    optional uint64 timestamp_millis = 1;
-    // stack reported state
-    // TODO: replace this with proto enum
-    optional int32 stack_state = 2;
-    // tx time in millis
-    optional uint64 controller_tx_time_millis = 3;
-    // rx time in millis
-    optional uint64 controller_rx_time_millis = 4;
-    // idle time in millis
-    optional uint64 controller_idle_time_millis = 5;
-    // product of current(mA), voltage(V) and time(ms)
-    optional uint64 controller_energy_used = 6;
-}
-
-/**
- * Pulls Modem Activity Energy Info
- */
-message ModemActivityInfo {
-    // timestamp(wall clock) of record creation
-    optional uint64 timestamp_millis = 1;
-    // sleep time in millis.
-    optional uint64 sleep_time_millis = 2;
-    // idle time in millis
-    optional uint64 controller_idle_time_millis = 3;
-    /**
-     * Tx power index
-     * index 0 = tx_power < 0dBm
-     * index 1 = 0dBm < tx_power < 5dBm
-     * index 2 = 5dBm < tx_power < 15dBm
-     * index 3 = 15dBm < tx_power < 20dBm
-     * index 4 = tx_power > 20dBm
-     */
-    // tx time in ms at power level 0
-    optional uint64 controller_tx_time_pl0_millis = 4;
-    // tx time in ms at power level 1
-    optional uint64 controller_tx_time_pl1_millis = 5;
-    // tx time in ms at power level 2
-    optional uint64 controller_tx_time_pl2_millis = 6;
-    // tx time in ms at power level 3
-    optional uint64 controller_tx_time_pl3_millis = 7;
-    // tx time in ms at power level 4
-    optional uint64 controller_tx_time_pl4_millis = 8;
-    // rx time in ms at power level 5
-    optional uint64 controller_rx_time_millis = 9;
-    // product of current(mA), voltage(V) and time(ms)
-    optional uint64 energy_used = 10 [deprecated=true];
-}
-
-/**
- * Pulls Bluetooth Activity Energy Info
- * Note: BluetoothBytesTransfer is pulled at the same time from the controller.
- */
-message BluetoothActivityInfo {
-    // timestamp(wall clock) of record creation
-    optional uint64 timestamp_millis = 1;
-    // bluetooth stack state
-    optional int32 bluetooth_stack_state = 2;
-    // tx time in millis
-    optional uint64 controller_tx_time_millis = 3;
-    // rx time in millis
-    optional uint64 controller_rx_time_millis = 4;
-    // idle time in millis
-    optional uint64 controller_idle_time_millis = 5;
-    // product of current(mA), voltage(V) and time(ms)
-    optional uint64 energy_used = 6;
-}
-
-/*
- * Logs the memory stats for a process.
- *
- * Pulled from StatsCompanionService for all managed processes (from ActivityManagerService).
- */
-message ProcessMemoryState {
-    // The uid if available. -1 means not available.
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // The process name.
-    // Usually package name, "system" for system server.
-    // Provided by ActivityManagerService.
-    optional string process_name = 2;
-
-    // Current OOM score adjustment. Value read from ProcessRecord.
-    optional int32 oom_adj_score = 3;
-
-    // # of page-faults
-    optional int64 page_fault = 4;
-
-    // # of major page-faults
-    optional int64 page_major_fault = 5;
-
-    // RSS
-    // Value is read from memory.stat, field total_rss if per-app memory
-    // cgroups are enabled. Otherwise, value from /proc/pid/stat.
-    optional int64 rss_in_bytes = 6;
-
-    // CACHE
-    // Value is read from memory.stat, field total_cache if per-app memory
-    // cgroups are enabled. Otherwise, 0.
-    optional int64 cache_in_bytes = 7;
-
-    // SWAP
-    // Value is read from memory.stat, field total_swap if per-app memory
-    // cgroups are enabled. Otherwise, 0.
-    optional int64 swap_in_bytes = 8;
-
-    // Deprecated: use ProcessMemoryHighWaterMark atom instead. Always -1.
-    optional int64 rss_high_watermark_in_bytes = 9 [deprecated = true];
-
-    // Deprecated: use ProcessMemorySnapshot atom instead. Always -1.
-    optional int64 start_time_nanos = 10 [deprecated = true];
-
-    // Deprecated: use ProcessMemorySnapshot atom instead. Always -1.
-    optional int32 anon_rss_and_swap_in_kilobytes = 11 [deprecated = true];
-}
-
-/*
- * Logs the memory high-water mark for a process.
- *
- * Pulled from StatsCompanionService for all managed processes (from ActivityManagerServie)
- * and for selected native processes.
- *
- * Pulling this atom resets high-water mark counters for all processes.
- */
-message ProcessMemoryHighWaterMark {
-    // The uid if available. -1 means not available.
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // The process name.
-    // Usually package name or process cmdline.
-    // Provided by ActivityManagerService or read from /proc/PID/cmdline.
-    optional string process_name = 2;
-
-    // Deprecated: use rss_high_water_mark_in_kilobytes instead. This field is
-    // computed by converting kilobytes to bytes.
-    optional int64 rss_high_water_mark_in_bytes = 3 [deprecated = true];
-
-    // RSS high-water mark. Peak RSS usage of the process. Read from the VmHWM field in
-    // /proc/PID/status.
-    optional int32 rss_high_water_mark_in_kilobytes = 4;
-}
-
-/*
- * Logs the memory stats for a process.
- *
- * Pulled from StatsCompanionService for all managed processes (from ActivityManagerService)
- * and for selected native processes.
- */
-message ProcessMemorySnapshot {
-    // The uid if available. -1 means not available.
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // The process name.
-    // Usually package name or process cmdline.
-    // Provided by ActivityManagerService or read from /proc/PID/cmdline.
-    optional string process_name = 2;
-
-    // The pid of the process.
-    // Allows to disambiguate instances of the process.
-    optional int32 pid = 3;
-
-    // The current OOM score adjustment value.
-    // Read from ProcessRecord for managed processes.
-    // Placeholder -1001 (OOM_SCORE_ADJ_MIN - 1, outside of allowed range) for native ones.
-    optional int32 oom_score_adj = 4;
-
-    // The current RSS of the process.
-    // VmRSS from /proc/pid/status.
-    optional int32 rss_in_kilobytes = 5;
-
-    // The current anon RSS of the process.
-    // RssAnon from /proc/pid/status.
-    optional int32 anon_rss_in_kilobytes = 6;
-
-    // The current swap size of the process.
-    // VmSwap from /proc/pid/status.
-    optional int32 swap_in_kilobytes = 7;
-
-    // The sum of rss_in_kilobytes and swap_in_kilobytes.
-    optional int32 anon_rss_and_swap_in_kilobytes = 8;
-}
-
-/*
- * Elapsed real time from SystemClock.
- */
-message SystemElapsedRealtime {
-    optional uint64 time_millis = 1;
-}
-
-/*
- * Up time from SystemClock.
- */
-message SystemUptime {
-    // Milliseconds since the system was booted.
-    // This clock stops when the system enters deep sleep (CPU off, display dark, device waiting
-    // for external input).
-    // It is not affected by clock scaling, idle, or other power saving mechanisms.
-    optional uint64 uptime_millis = 1;
-}
-
-/*
- * Reads from /proc/uid_concurrent_active_time which has the format:
- * active: X (X is # cores)
- * [uid0]: [time-0] [time-1] [time-2] ... (# entries = # cores)
- * [uid1]: [time-0] [time-1] [time-2] ... ...
- * ...
- * Time-N means the CPU time a UID spent running concurrently with N other processes.
- * The file contains a monotonically increasing count of time for a single boot.
- */
-message CpuActiveTime {
-    optional int32 uid = 1 [(is_uid) = true];
-    optional uint64 time_millis = 2;
-}
-
-/**
- * Reads from /proc/uid_concurrent_policy_time which has the format:
- * policy0: X policy4: Y (there are X cores on policy0, Y cores on policy4)
- * [uid0]: [time-0-0] [time-0-1] ... [time-1-0] [time-1-1] ...
- * [uid1]: [time-0-0] [time-0-1] ... [time-1-0] [time-1-1] ...
- * ...
- * Time-X-Y means the time a UID spent on clusterX running concurrently with Y other processes.
- * The file contains a monotonically increasing count of time for a single boot.
- */
-message CpuClusterTime {
-    optional int32 uid = 1 [(is_uid) = true];
-    optional int32 cluster_index = 2;
-    optional uint64 time_millis = 3;
-}
-
-/*
- * Pulls free disk space, for data, system partition and temporary directory.
- */
-message DiskSpace {
-    // available bytes in data partition
-    optional uint64 data_available_bytes = 1;
-    // available bytes in system partition
-    optional uint64 system_available_bytes = 2;
-    // available bytes in download cache or temp directories
-    optional uint64 temp_available_bytes = 3;
-}
-
-/**
- * Pulls battery coulomb counter, which is the remaining battery charge in uAh.
- *
- * Pulled from StatsCompanionService.java
- */
-message RemainingBatteryCapacity {
-    optional int32 charge_micro_ampere_hour = 1;
-}
-
-/**
- * Pulls battery capacity, which is the battery capacity when full in uAh.
- * Pulled from:
- *   frameworks/base/cmds/statsd/src/external/ResourceHealthManagerPuller.cpp
- */
-message FullBatteryCapacity {
-    optional int32 capacity_micro_ampere_hour = 1;
-}
-
-/**
- * Pulls battery voltage.
- * Pulled from:
- *   frameworks/base/cmds/statsd/src/external/ResourceHealthManagerPuller.cpp
- */
-message BatteryVoltage {
-    // The voltage of the battery, in millivolts.
-    optional int32 voltage_millivolt = 1;
-}
-
-/**
- * Pulls battery level (percent full, from 0 to 100).
- *
- * Pulled from:
- *   frameworks/base/cmds/statsd/src/external/ResourceHealthManagerPuller.cpp
- */
-message BatteryLevel {
-    // Battery level. Should be in [0, 100].
-    optional int32 battery_level = 1;
-}
-
-/**
- * Pulls the temperature of various parts of the device.
- * The units are tenths of a degree Celsius. Eg: 30.3C is reported as 303.
- *
- * Pulled from StatsCompanionService.java
- */
-message Temperature {
-    // The type of temperature being reported. Eg. CPU, GPU, SKIN, BATTERY, BCL_.
-    optional android.os.TemperatureTypeEnum sensor_location = 1;
-
-    // The name of the temperature source. Eg. CPU0
-    optional string sensor_name = 2;
-
-    // Temperature in tenths of a degree C.
-    // For BCL, it is decimillivolt, decimilliamps, and percentage * 10.
-    optional int32 temperature_deci_celsius = 3;
-
-    // Relative severity of the throttling, see enum definition.
-    optional android.os.ThrottlingSeverityEnum severity = 4;
-}
-
-/**
- * Pulls the statistics of calls to Binder.
- *
- * Binder stats will be reset every time the data is pulled. It means it can only be pulled by one
- * config on the device.
- *
- * Next tag: 15
- */
-message BinderCalls {
-    // UID of the process responsible for the binder transaction. It will be set if the process
-    // executing the binder transaction attribute the transaction to another uid using
-    // Binder.setThreadWorkSource().
-    //
-    // If not set, the value will be -1.
-    optional int32 uid = 1 [(is_uid) = true];
-    // UID of the process executing the binder transaction.
-    optional int32 direct_caller_uid = 14;
-    // Fully qualified class name of the API call.
-    //
-    // This is a system server class name.
-    //
-    // TODO(gaillard): figure out if binder call stats includes data from isolated uids, if a uid
-    // gets recycled and we have isolated uids, we might attribute the data incorrectly.
-    // TODO(gaillard): there is a high dimensions cardinality, figure out if we should drop the less
-    // commonly used APIs.
-    optional string service_class_name = 2;
-    // Method name of the API call. It can also be a transaction code if we cannot
-    // resolve it to a name. See Binder#getTransactionName.
-    //
-    // This is a system server method name.
-    optional string service_method_name = 3;
-    // Total number of API calls.
-    optional int64 call_count = 4;
-    // True if the screen was interactive PowerManager#isInteractive at the end of the call.
-    optional bool screen_interactive = 13;
-    // Total number of API calls we have data recorded for. If we collected data for all the calls,
-    // call_count will be equal to recorded_call_count.
-    //
-    // If recorded_call_count is different than call_count, it means data collection has been
-    // sampled. All the fields below will be sampled in this case.
-    optional int64 recorded_call_count = 12;
-    // Number of exceptions thrown by the API.
-    optional int64 recorded_exception_count = 5;
-    // Total latency of all API calls.
-    // Average can be computed using total_latency_micros / recorded_call_count.
-    optional int64 recorded_total_latency_micros = 6;
-    // Maximum latency of one API call.
-    optional int64 recorded_max_latency_micros = 7;
-    // Total CPU usage of all API calls.
-    // Average can be computed using total_cpu_micros / recorded_call_count.
-    // Total can be computed using total_cpu_micros / recorded_call_count * call_count.
-    optional int64 recorded_total_cpu_micros = 8;
-    // Maximum CPU usage of one API call.
-    optional int64 recorded_max_cpu_micros = 9;
-    // Maximum parcel reply size of one API call.
-    optional int64 recorded_max_reply_size_bytes = 10;
-    // Maximum parcel request size of one API call.
-    optional int64 recorded_max_request_size_bytes = 11;
-}
-
-/**
- * Pulls the statistics of exceptions during calls to Binder.
- *
- * Binder stats are cumulative from boot unless somebody reset the data using
- * > adb shell dumpsys binder_calls_stats --reset
- */
-message BinderCallsExceptions {
-    // Exception class name, e.g. java.lang.IllegalArgumentException.
-    //
-    // This is an exception class name thrown by the system server.
-    optional string exception_class_name = 1;
-    // Total number of exceptions.
-    optional int64 exception_count = 2;
-}
-
-/**
- * Pulls the statistics of message dispatching on HandlerThreads.
- *
- * Looper stats will be reset every time the data is pulled. It means it can only be pulled by one
- * config on the device.
- *
- * Next tag: 11
- */
-message LooperStats {
-    // The uid that made a call to the System Server and caused the message to be enqueued.
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // Fully qualified class name of the handler target class.
-    //
-    // This field does not contain PII. This is a system server class name.
-    optional string handler_class_name = 2;
-
-    // The name of the thread that runs the Looper.
-    //
-    // This field does not contain PII. This is a system server thread name.
-    optional string looper_thread_name = 3;
-
-    // The name of the dispatched message.
-    //
-    // This field does not contain PII. This is a system server constant or class
-    // name.
-    optional string message_name = 4;
-
-    // Total number of successfully dispatched messages.
-    optional int64 message_count = 5;
-
-    // Total number of messages that failed dispatching.
-    optional int64 exception_count = 6;
-
-    // Total number of processed messages we have data recorded for. If we
-    // collected data for all the messages, message_count will be equal to
-    // recorded_message_count.
-    //
-    // If recorded_message_count is different than message_count, it means data
-    // collection has been sampled. The fields below will be sampled in this case.
-    optional int64 recorded_message_count = 7;
-
-    // Total latency of all processed messages.
-    // Average can be computed using recorded_total_latency_micros /
-    // recorded_message_count.
-    optional int64 recorded_total_latency_micros = 8;
-
-    // Total CPU usage of all processed message.
-    // Average can be computed using recorded_total_cpu_micros /
-    // recorded_message_count. Total can be computed using
-    // recorded_total_cpu_micros / recorded_message_count * message_count.
-    optional int64 recorded_total_cpu_micros = 9;
-
-    // True if the screen was interactive PowerManager#isInteractive at the end of the call.
-    optional bool screen_interactive = 10;
-
-    // Max recorded CPU usage of all processed messages.
-    optional int64 recorded_max_cpu_micros = 11;
-
-    // Max recorded latency of all processed messages.
-    optional int64 recorded_max_latency_micros = 12;
-
-    // Total number of messages we tracked the dispatching delay for. If we
-    // collected data for all the messages, message_count will be equal to
-    // recorded_delay_message_count.
-    //
-    // If recorded_delay_message_count is different than message_count, it means data
-    // collection has been sampled or/and not all messages specified the target dispatch time.
-    // The fields below will be sampled in this case.
-    optional int64 recorded_delay_message_count = 13;
-
-    // Total dispatching delay of all processed messages.
-    // Calculated as a difference between the target dispatching time (Message.when)
-    // and the actual dispatching time.
-    // Average can be computed using recorded_total_delay_millis / recorded_delay_message_count.
-    optional int64 recorded_total_delay_millis = 14;
-
-    // Max dispatching delay of all processed messages.
-    // Calculated as a difference between the target dispatching time (Message.when)
-    // and the actual dispatching time.
-    optional int64 recorded_max_delay_millis = 15;
-}
-
-/**
- * Pulls disk information, such as write speed and latency.
- */
-message DiskStats {
-    // Time taken to open, write 512B to, and close a file.
-    // -1 if error performing the check.
-    optional int64 data_write_latency_millis = 1;
-
-    optional bool file_based_encryption = 2;
-
-    // Recent disk write speed in kB/s.
-    // -1 if error querying storageed.
-    // 0 if data is unavailable.
-    optional int32 recent_disk_write_speed = 3;
-}
-
-
-/**
- * Free and total bytes of the Data, Cache, and System partition.
- */
-message DirectoryUsage {
-    enum Directory {
-        UNKNOWN = 0;
-        DATA = 1;
-        CACHE = 2;
-        SYSTEM = 3;
-    }
-    optional Directory directory = 1;
-    optional int64 free_bytes = 2;
-    optional int64 total_bytes = 3;
-}
-
-
-/**
- * Size of an application: apk size, data size, and cache size.
- * Reads from a cached file produced daily by DiskStatsLoggingService.java.
- * Information is only reported for apps with the primary user (user 0).
- * Sizes are aggregated by package name.
- */
-message AppSize {
-    // Including uids will involve modifying diskstats logic.
-    optional string package_name = 1;
-    // App size in bytes. -1 if unavailable.
-    optional int64 app_size_bytes = 2;
-    // App data size in bytes. -1 if unavailable.
-    optional int64 app_data_size_bytes = 3;
-    // App cache size in bytes. -1 if unavailable.
-    optional int64 app_cache_size_bytes = 4;
-    // Time that the cache file was produced.
-    // Uses System.currentTimeMillis(), which is wall clock time.
-    optional int64 cache_time_millis = 5;
-}
-
-
-/**
- * Size of a particular category. Eg: photos, videos.
- * Reads from a cached file produced daily by DiskStatsLoggingService.java.
- */
-message CategorySize {
-    enum Category {
-        UNKNOWN = 0;
-        APP_SIZE = 1;
-        APP_DATA_SIZE = 2;
-        APP_CACHE_SIZE = 3;
-        PHOTOS = 4;
-        VIDEOS = 5;
-        AUDIO = 6;
-        DOWNLOADS = 7;
-        SYSTEM = 8;
-        OTHER = 9;
-    }
-    optional Category category = 1;
-    // Category size in bytes.
-    optional int64 size_bytes = 2;
-    // Time that the cache file was produced.
-    // Uses System.currentTimeMillis(), which is wall clock time.
-    optional int64 cache_time_millis = 3;
-}
-
-/**
- * Pulls per uid I/O stats. The stats are cumulative since boot.
- *
- * Read/write bytes are I/O events from a storage device
- * Read/write chars are data requested by read/write syscalls, and can be
- *   satisfied by caching.
- *
- * Pulled from StatsCompanionService, which reads proc/uid_io/stats.
- */
-message DiskIo {
-    optional int32 uid = 1 [(is_uid) = true];
-    optional int64 fg_chars_read = 2;
-    optional int64 fg_chars_write = 3;
-    optional int64 fg_bytes_read = 4;
-    optional int64 fg_bytes_write = 5;
-    optional int64 bg_chars_read = 6;
-    optional int64 bg_chars_write = 7;
-    optional int64 bg_bytes_read = 8;
-    optional int64 bg_bytes_write = 9;
-    optional int64 fg_fsync = 10;
-    optional int64 bg_fsync= 11;
-}
-
-
-/**
- * Pulls the number of fingerprints for each user.
- *
- * Pulled from StatsCompanionService, which queries <Biometric>Manager.
- */
-message NumFingerprintsEnrolled {
-    // The associated user. Eg: 0 for owners, 10+ for others.
-    // Defined in android/os/UserHandle.java
-    optional int32 user = 1;
-    // Number of fingerprints registered to that user.
-    optional int32 num_fingerprints_enrolled = 2;
-}
-
-/**
- * Pulls the number of faces for each user.
- *
- * Pulled from StatsCompanionService, which queries <Biometric>Manager.
- */
-message NumFacesEnrolled {
-    // The associated user. Eg: 0 for owners, 10+ for others.
-    // Defined in android/os/UserHandle.java
-    optional int32 user = 1;
-    // Number of faces registered to that user.
-    optional int32 num_faces_enrolled = 2;
-}
-/**
- * A mapping of role holder -> role
- */
-message RoleHolder {
-    // uid of the role holder
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // package name of the role holder
-    optional string package_name = 2;
-
-    // the role held
-    optional string role = 3;
-}
-
-message AggStats {
-    // These are all in byte resolution.
-    optional int64 min = 1 [deprecated = true];
-    optional int64 average = 2 [deprecated = true];
-    optional int64 max = 3 [deprecated = true];
-
-    // These are all in kilobyte resolution. Can fit in int32, so smaller on the wire than the above
-    // int64 fields.
-    optional int32 mean_kb = 4;
-    optional int32 max_kb = 5;
-}
-
-// A reduced subset of process states; reducing the number of possible states allows more
-// aggressive device-side aggregation of statistics and hence reduces metric upload size.
-enum ProcessStateAggregated {
-    PROCESS_STATE_UNKNOWN = 0;
-    // Persistent system process.
-    PROCESS_STATE_PERSISTENT = 1;
-    // Top activity; actually any visible activity.
-    PROCESS_STATE_TOP = 2;
-    // Process binding to top or a foreground service.
-    PROCESS_STATE_BOUND_TOP_OR_FGS = 3;
-    // Processing running a foreground service.
-    PROCESS_STATE_FGS = 4;
-    // Important foreground process (ime, wallpaper, etc).
-    PROCESS_STATE_IMPORTANT_FOREGROUND = 5;
-    // Important background process.
-    PROCESS_STATE_BACKGROUND = 6;
-    // Process running a receiver.
-    PROCESS_STATE_RECEIVER = 7;
-    // All kinds of cached processes.
-    PROCESS_STATE_CACHED = 8;
-}
-
-// Next tag: 13
-message ProcessStatsStateProto {
-    optional android.service.procstats.ScreenState screen_state = 1;
-
-    optional android.service.procstats.MemoryState memory_state = 2 [deprecated = true];
-
-    // this enum list is from frameworks/base/core/java/com/android/internal/app/procstats/ProcessStats.java
-    // and not frameworks/base/core/java/android/app/ActivityManager.java
-    optional android.service.procstats.ProcessState process_state = 3 [deprecated = true];
-
-    optional ProcessStateAggregated process_state_aggregated = 10;
-
-    // Millisecond uptime duration spent in this state
-    optional int64 duration_millis = 4 [deprecated = true];
-    // Same as above, but with minute resolution so it fits into an int32.
-    optional int32 duration_minutes = 11;
-
-    // Millisecond elapsed realtime duration spent in this state
-    optional int64 realtime_duration_millis = 9 [deprecated = true];
-    // Same as above, but with minute resolution so it fits into an int32.
-    optional int32 realtime_duration_minutes = 12;
-
-    // # of samples taken
-    optional int32 sample_size = 5;
-
-    // PSS is memory reserved for this process
-    optional AggStats pss = 6 [deprecated = true];
-
-    // USS is memory shared between processes, divided evenly for accounting
-    optional AggStats uss = 7 [deprecated = true];
-
-    // RSS is memory resident for this process
-    optional AggStats rss = 8;
-}
-
-// Next Tag: 8
-message ProcessStatsProto {
-    // Name of process.
-    optional string process = 1;
-
-    // Uid of the process.
-    optional int32 uid = 2 [(is_uid) = true];
-
-    // Information about how often kills occurred
-    message Kill {
-        // Count of excessive CPU kills
-        optional int32 cpu = 1;
-
-        // Count of kills when cached
-        optional int32 cached = 2;
-
-        // PSS stats during cached kill
-        optional AggStats cached_pss = 3;
-    }
-    optional Kill kill = 3 [deprecated = true];
-
-    // Time and memory spent in various states.
-    repeated ProcessStatsStateProto states = 5;
-
-    // Total time process has been running...  screen_state, memory_state, and process_state
-    // will not be set.
-    optional ProcessStatsStateProto total_running_state = 6;
-
-    // Association data for this process in this state;
-    // each entry here is one association.
-    repeated ProcessStatsAssociationProto assocs = 7;
-}
-
-// Next Tag: 6
-message ProcessStatsAssociationProto {
-    // Procss Name of the associated process (client process of service binding)
-    optional string assoc_process_name = 1;
-
-    // Package Name of the associated package (client package of service binding)
-    optional string assoc_package_name = 2 [deprecated = true];
-
-    // UID of the associated process/package (client package of service binding)
-    optional int32 assoc_uid = 5 [(is_uid) = true];
-
-    // Total count of the times this association (service binding) appeared.
-    optional int32 total_count = 3;
-
-    // Uptime total duration in seconds this association (service binding) was around.
-    optional int32 total_duration_secs = 4;
-}
-
-message PackageServiceOperationStatsProto {
-    // Operate enum: Started, Foreground, Bound, Executing
-    optional android.service.procstats.ServiceOperationState operation = 1;
-
-    // Number of times the service was in this operation.
-    optional int32 count = 2;
-
-    // Information about a state the service can be in.
-    message StateStats {
-        // Screen state enum.
-        optional android.service.procstats.ScreenState screen_state = 1;
-        // Memory state enum.
-        optional android.service.procstats.MemoryState memory_state = 2;
-
-        // duration in milliseconds.
-        optional int64 duration_millis = 3;
-        // Millisecond elapsed realtime duration spent in this state
-        optional int64 realtime_duration_millis = 4;
-    }
-    repeated StateStats state_stats = 3;
-}
-
-message PackageServiceStatsProto {
-    // Name of service component.
-    optional string service_name = 1;
-
-    // The operation stats.
-    // The package_name, package_uid, package_version, service_name will not be set to save space.
-    repeated PackageServiceOperationStatsProto operation_stats = 2;
-}
-
-message PackageAssociationSourceProcessStatsProto {
-    // Uid of the process.
-    optional int32 process_uid = 1;
-    // Process name.
-    optional string process_name = 2;
-    // Package name.
-    optional string package_name = 7;
-    // Total count of the times this association appeared.
-    optional int32 total_count = 3;
-
-    // Millisecond uptime total duration this association was around.
-    optional int64 total_duration_millis = 4;
-
-    // Total count of the times this association became actively impacting its target process.
-    optional int32 active_count = 5;
-
-    // Information on one source in this association.
-    message StateStats {
-        // Process state enum.
-        optional android.service.procstats.ProcessState process_state = 1;
-        // Millisecond uptime duration spent in this state
-        optional int64 duration_millis = 2;
-        // Millisecond elapsed realtime duration spent in this state
-        optional int64 realtime_duration_mmillis = 3;
-    }
-    repeated StateStats active_state_stats = 6;
-}
-
-message PackageAssociationProcessStatsProto {
-    // Name of the target component.
-    optional string component_name = 1;
-    // Information on one source in this association.
-    repeated PackageAssociationSourceProcessStatsProto sources = 2;
-}
-
-
-message ProcessStatsPackageProto {
-    // Name of package.
-    optional string package = 1;
-
-    // Uid of the package.
-    optional int32 uid = 2;
-
-    // Version of the package.
-    optional int64 version = 3;
-
-    // Stats for each process running with the package loaded in to it.
-    repeated ProcessStatsProto process_stats = 4;
-
-    // Stats for each of the package's services.
-    repeated PackageServiceStatsProto service_stats = 5;
-
-    // Stats for each association with the package.
-    repeated PackageAssociationProcessStatsProto association_stats = 6;
-}
-
-message ProcessStatsSectionProto {
-    // Elapsed realtime at start of report.
-    optional int64 start_realtime_millis = 1;
-
-    // Elapsed realtime at end of report.
-    optional int64 end_realtime_millis = 2;
-
-    // CPU uptime at start of report.
-    optional int64 start_uptime_millis = 3;
-
-    // CPU uptime at end of report.
-    optional int64 end_uptime_millis = 4;
-
-    // System runtime library. e.g. "libdvm.so", "libart.so".
-    optional string runtime = 5;
-
-    // whether kernel reports swapped pss.
-    optional bool has_swapped_pss = 6;
-
-    // Data completeness. e.g. "complete", "partial", shutdown", or "sysprops".
-    enum Status {
-        STATUS_UNKNOWN = 0;
-        STATUS_COMPLETE = 1;
-        STATUS_PARTIAL = 2;
-        STATUS_SHUTDOWN = 3;
-        STATUS_SYSPROPS = 4;
-    }
-    repeated Status status = 7;
-
-    // Number of pages available of various types and sizes, representation fragmentation.
-    repeated ProcessStatsAvailablePagesProto available_pages = 10;
-
-    // Stats for each process.
-    repeated ProcessStatsProto process_stats = 8;
-
-    // Stats for each package.
-    repeated ProcessStatsPackageProto package_stats = 9;
-}
-
-message ProcessStatsAvailablePagesProto {
-    // Node these pages are in (as per /proc/pagetypeinfo)
-    optional int32 node = 1;
-
-    // Zone these pages are in (as per /proc/pagetypeinfo)
-    optional string zone = 2;
-
-    // Label for the type of these pages (as per /proc/pagetypeinfo)
-    optional string label = 3;
-
-    // Distribution of number of pages available by order size.  First entry in array is
-    // order 0, second is order 1, etc.  Each order increase is a doubling of page size.
-    repeated int32 pages_per_order = 4;
-}
-
-/**
- * Pulled from ProcessStatsService.java
- */
-message ProcStats {
-    optional ProcessStatsSectionProto proc_stats_section = 1;
-    // Data pulled from device into this is sometimes sharded across multiple atoms to work around
-    // a size limit. When this happens, this shard ID will contain an increasing 1-indexed integer
-    // with the number of this shard.
-    optional int32 shard_id = 2;
-}
-
-/**
- * Pulled from ProcessStatsService.java
- */
-message ProcStatsPkgProc {
-    optional ProcessStatsSectionProto proc_stats_section = 1;
-}
-
-// Next Tag: 2
-message PackageRemoteViewInfoProto {
-    optional string package_name = 1;
-    // add per-package additional info here (like channels)
-}
-
-// Next Tag: 2
-message NotificationRemoteViewsProto {
-    repeated PackageRemoteViewInfoProto package_remote_view_info = 1;
-}
-
-/**
- * Pulled from NotificationManagerService.java
- */
-message NotificationRemoteViews {
-    optional NotificationRemoteViewsProto notification_remote_views = 1;
-}
-
-/**
- * Atom that contains a list of a package's preferences, pulled from NotificationManagerService.java
- */
-message PackageNotificationPreferences {
-    // Uid under which the package is installed.
-    optional int32 uid = 1 [(is_uid) = true];
-    // Notification importance, which specifies when and how a notification is displayed.
-    // Specified under core/java/android/app/NotificationManager.java.
-    optional int32 importance = 2;
-    // Lockscreen visibility as set by the user.
-    optional int32 visibility = 3;
-    // Bitfield mask indicating what fields were locked by the user (see LockableAppfields in
-    // PreferencesHelper.java)
-    optional int32 user_locked_fields = 4;
-}
-
-/**
- * Atom that contains a list of a package's channel preferences, pulled from
- * NotificationManagerService.java.
- */
-message PackageNotificationChannelPreferences {
-    // Uid under which the package is installed.
-    optional int32 uid = 1 [(is_uid) = true];
-    // Channel's ID. Should always be available.
-    optional string channel_id = 2;
-    // Channel's name. Should always be available.
-    optional string channel_name = 3;
-    // Channel's description. Optionally set by the channel creator.
-    optional string description = 4;
-    // Notification importance, which specifies when and how a notification is displayed. Specified
-    // under core/java/android/app/NotificationManager.java.
-    optional int32 importance = 5;
-    // Bitmask representing which fields have been set by the user. See field bitmask descriptions
-    // at core/java/android/app/NotificationChannel.java
-    optional int32 user_locked_fields = 6;
-    // Indicates if the channel was deleted by the app.
-    optional bool is_deleted = 7;
-    // Indicates if the channel was marked as a conversation by the app.
-    optional bool is_conversation = 8;
-    // Indicates if the channel is a conversation that was demoted by the user.
-    optional bool is_demoted_conversation = 9;
-    // Indicates if the channel is a conversation that was marked as important by the user.
-    optional bool is_important_conversation = 10;
-}
-
-/**
- * Atom that represents an item in the list of Do Not Disturb rules, pulled from
- * NotificationManagerService.java.
- */
-message DNDModeProto {
-    enum Mode {
-        ROOT_CONFIG = -1;  // Used to distinguish the config (one per user) from the rules.
-        ZEN_MODE_OFF = 0;
-        ZEN_MODE_IMPORTANT_INTERRUPTIONS = 1;
-        ZEN_MODE_NO_INTERRUPTIONS = 2;
-        ZEN_MODE_ALARMS = 3;
-    }
-    optional int32 user = 1;  // Android user ID (0, 1, 10, ...)
-    optional bool enabled = 2;  // true for ROOT_CONFIG if a manualRule is enabled
-    optional bool channels_bypassing = 3; // only valid for ROOT_CONFIG
-    optional Mode zen_mode = 4;
-    // id is one of the system default rule IDs, or empty
-    // May also be "MANUAL_RULE" to indicate app-activation of the manual rule.
-    optional string id = 5;
-    optional int32 uid = 6 [(is_uid) = true]; // currently only SYSTEM_UID or 0 for other
-    optional DNDPolicyProto policy = 7;
-}
-
-/**
- * Atom that represents a Do Not Disturb policy, an optional detail proto for DNDModeProto.
- */
-message DNDPolicyProto {
-    enum State {
-        STATE_UNSET = 0;
-        STATE_ALLOW = 1;
-        STATE_DISALLOW = 2;
-    }
-    optional State calls = 1;
-    optional State repeat_callers = 2;
-    optional State messages = 3;
-    optional State conversations = 4;
-    optional State reminders = 5;
-    optional State events = 6;
-    optional State alarms = 7;
-    optional State media = 8;
-    optional State system = 9;
-    optional State fullscreen = 10;
-    optional State lights = 11;
-    optional State peek = 12;
-    optional State status_bar = 13;
-    optional State badge = 14;
-    optional State ambient = 15;
-    optional State notification_list = 16;
-
-    enum PeopleType {
-        PEOPLE_UNSET = 0;
-        PEOPLE_ANYONE = 1;
-        PEOPLE_CONTACTS = 2;
-        PEOPLE_STARRED = 3;
-        PEOPLE_NONE = 4;
-    }
-
-    optional PeopleType allow_calls_from = 17;
-    optional PeopleType allow_messages_from = 18;
-
-    enum ConversationType {
-        CONV_UNSET = 0;
-        CONV_ANYONE = 1;
-        CONV_IMPORTANT = 2;
-        CONV_NONE = 3;
-    }
-
-    optional ConversationType allow_conversations_from = 19;
-}
-
-/**
- * Atom that contains a list of a package's channel group preferences, pulled from
- * NotificationManagerService.java.
- */
-message PackageNotificationChannelGroupPreferences {
-    // Uid under which the package is installed.
-    optional int32 uid = 1 [(is_uid) = true];
-    // Channel Group's ID. Should always be available.
-    optional string group_id = 2;
-    // Channel Group's name. Should always be available.
-    optional string group_name = 3;
-    // Channel Group's description. Optionally set by group creator.
-    optional string description = 4;
-    // Indicates if notifications from this channel group are blocked.
-    optional bool is_blocked = 5;
-    // Bitmask representing which fields have been set by the user. See field bitmask descriptions
-    // at core/java/android/app/NotificationChannelGroup.java
-    optional int32 user_locked_fields = 6;
-}
-
-message PowerProfileProto {
-    optional double cpu_suspend = 1;
-
-    optional double cpu_idle = 2;
-
-    optional double cpu_active = 3;
-
-    message CpuCluster {
-        optional int32 id = 1;
-        optional double cluster_power = 2;
-        optional int32 cores = 3;
-        repeated int64 speed = 4;
-        repeated double core_power = 5;
-    }
-
-    repeated CpuCluster cpu_cluster = 40;
-
-    optional double wifi_scan = 4;
-
-    optional double wifi_on = 5;
-
-    optional double wifi_active = 6;
-
-    optional double wifi_controller_idle = 7;
-
-    optional double wifi_controller_rx = 8;
-
-    optional double wifi_controller_tx = 9;
-
-    repeated double wifi_controller_tx_levels = 10;
-
-    optional double wifi_controller_operating_voltage = 11;
-
-    optional double bluetooth_controller_idle = 12;
-
-    optional double bluetooth_controller_rx = 13;
-
-    optional double bluetooth_controller_tx = 14;
-
-    optional double bluetooth_controller_operating_voltage = 15;
-
-    optional double modem_controller_sleep = 16;
-
-    optional double modem_controller_idle = 17;
-
-    optional double modem_controller_rx = 18;
-
-    repeated double modem_controller_tx = 19;
-
-    optional double modem_controller_operating_voltage = 20;
-
-    optional double gps_on = 21;
-
-    repeated double gps_signal_quality_based = 22;
-
-    optional double gps_operating_voltage = 23;
-
-    optional double bluetooth_on = 24;
-
-    optional double bluetooth_active = 25;
-
-    optional double bluetooth_at_cmd = 26;
-
-    optional double ambient_display = 27;
-
-    optional double screen_on = 28;
-
-    optional double radio_on = 29;
-
-    optional double radio_scanning = 30;
-
-    optional double radio_active = 31;
-
-    optional double screen_full = 32;
-
-    optional double audio = 33;
-
-    optional double video = 34;
-
-    optional double flashlight = 35;
-
-    optional double memory = 36;
-
-    optional double camera = 37;
-
-    optional double wifi_batched_scan = 38;
-
-    optional double battery_capacity = 39;
-}
-
-/**
- * power_profile.xml and other constants for power model calculations.
- * Pulled from PowerProfile.java
- */
-message PowerProfile {
-    optional PowerProfileProto power_profile = 1;
-}
-
-/**
- * Logs when a user restriction was added or removed.
- *
- * Logged from:
- *   frameworks/base/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
- */
-message UserRestrictionChanged {
-    // The raw string of the user restriction as defined in UserManager.
-    // Allowed values are defined in UserRestrictionsUtils#USER_RESTRICTIONS.
-    optional string restriction = 1;
-    // Whether the restriction is enabled or disabled.
-    optional bool enabled = 2;
-}
-
-/**
- * Pulls process user time and system time. Puller takes a snapshot of all pids
- * in the system and returns cpu stats for those that are working at the time.
- * Dead pids will be dropped. Kernel processes are excluded.
- * Min cool-down is 5 sec.
- */
-message ProcessCpuTime {
-    optional int32 uid = 1 [(is_uid) = true];
-
-    optional string process_name = 2;
-    // Process cpu time in user space, cumulative from boot/process start
-    optional int64 user_time_millis = 3;
-    // Process cpu time in system space, cumulative from boot/process start
-    optional int64 system_time_millis = 4;
-}
-
-/**
- * Pulls the CPU usage for each thread.
- *
- * Read from /proc/$PID/task/$TID/time_in_state files.
- *
- * TODO(mishaw): This is an experimental atom. Issues with big/little CPU frequencies, and
- * time_in_state files not being present on some phones, have not been addressed. These should be
- * considered before a public release.
- */
-message CpuTimePerThreadFreq {
-    // UID that owns the process.
-    optional int32 uid = 1 [(is_uid) = true];
-    // ID of the process.
-    optional int32 process_id = 2;
-    // ID of the thread.
-    optional int32 thread_id = 3;
-    // Name of the process taken from `/proc/$PID/cmdline`.
-    optional string process_name = 4;
-    // Name of the thread taken from `/proc/$PID/task/$TID/comm`
-    optional string thread_name = 5;
-
-    // Report eight different frequencies, and how much time is spent in each frequency. Frequencies
-    // are given in KHz, and time is given in milliseconds since the thread started. All eight
-    // frequencies are given here as the alternative is sending eight separate atoms. This method
-    // significantly reduces the amount of data created
-    optional int32 frequency1_khz = 6;
-    optional int32 time1_millis = 7;
-    optional int32 frequency2_khz = 8;
-    optional int32 time2_millis = 9;
-    optional int32 frequency3_khz = 10;
-    optional int32 time3_millis = 11;
-    optional int32 frequency4_khz = 12;
-    optional int32 time4_millis = 13;
-    optional int32 frequency5_khz = 14;
-    optional int32 time5_millis = 15;
-    optional int32 frequency6_khz = 16;
-    optional int32 time6_millis = 17;
-    optional int32 frequency7_khz = 18;
-    optional int32 time7_millis = 19;
-    optional int32 frequency8_khz = 20;
-    optional int32 time8_millis = 21;
-}
-
-/**
- * Pulls information about the device's build.
- */
-message BuildInformation {
-    // Build.FINGERPRINT. A string that uniquely identifies this build. Do not parse.
-    // E.g. may be composed of the brand, product, device, release, id, incremental, type, and tags.
-    optional string fingerprint = 1;
-
-    // Build.BRAND. The consumer-visible brand with which the product/hardware will be associated.
-    optional string brand = 2;
-
-    // Build.PRODUCT. The name of the overall product.
-    optional string product = 3;
-
-    // Build.DEVICE. The name of the industrial design.
-    optional string device = 4;
-
-    // Build.VERSION.RELEASE. The user-visible version string.  E.g., "1.0" or "3.4b5" or "bananas".
-    optional string version_release = 5;
-
-    // Build.ID. E.g. a label like "M4-rc20".
-    optional string id = 6;
-
-    // Build.VERSION.INCREMENTAL. The internal value used by the underlying source control to
-    // represent this build.
-    optional string version_incremental = 7;
-
-    // Build.TYPE. The type of build, like "user" or "eng".
-    optional string type = 8;
-
-    // Build.TAGS. Comma-separated tags describing the build, like "unsigned,debug".
-    optional string tags = 9;
-}
-
-/**
- * Logs information about mismatched caller for content capture.
- *
- * Logged from:
- *   frameworks/base/core/java/android/service/contentcapture/ContentCaptureService.java
- */
-message ContentCaptureCallerMismatchReported {
-    optional string intended_package = 1;
-    optional string calling_package = 2;
-}
-
-/**
- * Logs information about content capture service events.
- *
- * Logged from:
- *   frameworks/base/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureMetricsLogger.java
- */
-message ContentCaptureServiceEvents {
-    // The type of event.
-    enum Event {
-        UNKNOWN = 0;
-        ON_CONNECTED = 1;
-        ON_DISCONNECTED = 2;
-        SET_WHITELIST = 3;
-        SET_DISABLED = 4;
-        ON_USER_DATA_REMOVED = 5;
-        ON_DATA_SHARE_REQUEST = 6;
-        ACCEPT_DATA_SHARE_REQUEST = 7;
-        REJECT_DATA_SHARE_REQUEST = 8;
-        DATA_SHARE_WRITE_FINISHED = 9;
-        DATA_SHARE_ERROR_IOEXCEPTION = 10;
-        DATA_SHARE_ERROR_EMPTY_DATA = 11;
-        DATA_SHARE_ERROR_CLIENT_PIPE_FAIL = 12;
-        DATA_SHARE_ERROR_SERVICE_PIPE_FAIL = 13;
-        DATA_SHARE_ERROR_CONCURRENT_REQUEST = 14;
-        DATA_SHARE_ERROR_TIMEOUT_INTERRUPTED = 15;
-    }
-    optional Event event = 1;
-    // component/package of content capture service.
-    optional string service_info = 2;
-    // component/package of target.
-    // it's a concatenated list of component/package for SET_WHITELIST event
-    // separated by " ".
-    optional string target_info = 3;
-}
-
-/**
- * Logs information about content capture session events.
- *
- * Logged from:
- *   frameworks/base/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureMetricsLogger.java
- */
-message ContentCaptureSessionEvents {
-    // The type of event.
-    enum Event {
-        UNKNOWN = 0;
-        ON_SESSION_STARTED = 1;
-        ON_SESSION_FINISHED = 2;
-        SESSION_NOT_CREATED = 3;
-    }
-    optional int32 session_id = 1;
-    optional Event event = 2;
-    // (n/a on session finished)
-    optional int32 state_flags = 3;
-    // component/package of content capture service.
-    optional string service_info = 4;
-    // component/package of app.
-    // (n/a on session finished)
-    optional string app_info = 5;
-    optional bool is_child_session = 6;
-}
-
-/**
- * Logs information about session being flushed.
- *
- * Logged from:
- *   frameworks/base/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureMetricsLogger.java
- */
-message ContentCaptureFlushed {
-    optional int32 session_id = 1;
-    // component/package of content capture service.
-    optional string service_info = 2;
-    // component/package of app.
-    optional string app_info = 3;
-    // session start/finish events
-    optional int32 child_session_started = 4;
-    optional int32 child_session_finished = 5;
-    // count of view events.
-    optional int32 view_appeared_count = 6;
-    optional int32 view_disappeared_count = 7;
-    optional int32 view_text_changed_count = 8;
-
-    // Flush stats.
-    optional int32 max_events = 9;
-    optional int32 idle_flush_freq = 10;
-    optional int32 text_flush_freq = 11;
-    optional int32 flush_reason = 12;
-}
-
-/**
- * Pulls on-device BatteryStats power use calculations for the overall device.
- */
-message DeviceCalculatedPowerUse {
-    // Power used by the device in nAs (i.e. nanocoulombs (nC)), as computed by BatteryStats, since
-    // BatteryStats last reset (i.e. roughly since device was last significantly charged).
-    // Currently, this is from BatteryStatsHelper.getComputedPower() (not getTotalPower()).
-    optional int64 computed_power_nano_amp_secs = 1;
-}
-
-/**
- * Pulls on-device BatteryStats power use calculations broken down by uid.
- * This atom should be complemented by DeviceCalculatedPowerBlameOther, which contains the power use
- * that is attributed to non-uid items. They must all be included to get the total power use.
- */
-message DeviceCalculatedPowerBlameUid {
-    // Uid being blamed. Note: isolated uids have already been mapped to host uid.
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // Power used by this uid in nAs (i.e. nanocoulombs (nC)), as computed by BatteryStats, since
-    // BatteryStats last reset (i.e. roughly since device was last significantly charged).
-    optional int64 power_nano_amp_secs = 2;
-}
-
-/**
- * Pulls on-device BatteryStats power use calculations that are not due to a uid, broken down by
- * drain type.
- * This atom should be complemented by DeviceCalculatedPowerBlameUid, which contains the blame that
- * is attributed uids. They must all be included to get the total power use.
- */
-message DeviceCalculatedPowerBlameOther {
-    // The type of item whose power use is being reported.
-    enum DrainType {
-        AMBIENT_DISPLAY = 0;
-        // reserved 1; reserved "APP"; // Logged instead in DeviceCalculatedPowerBlameUid.
-        BLUETOOTH = 2;
-        CAMERA = 3;
-        // Cell-standby
-        CELL = 4;
-        FLASHLIGHT = 5;
-        IDLE = 6;
-        MEMORY = 7;
-        // Amount that total computed drain exceeded the drain estimated using the
-        // battery level changes and capacity.
-        OVERCOUNTED = 8;
-        PHONE = 9;
-        SCREEN = 10;
-        // Amount that total computed drain was below the drain estimated using the
-        // battery level changes and capacity.
-        UNACCOUNTED = 11;
-        // reserved 12; reserved "USER"; // Entire drain for a user. This is NOT supported.
-        WIFI = 13;
-    }
-    optional DrainType drain_type = 1;
-
-    // Power used by this item in nAs (i.e. nanocoulombs (nC)), as computed by BatteryStats, since
-    // BatteryStats last reset (i.e. roughly since device was last significantly charged).
-    optional int64 power_nano_amp_secs = 2;
-}
-
-/**
- * Logs device policy features.
- *
- * Logged from:
- *   frameworks/base/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
- *   packages/apps/ManagedProvisioning/src/com/android/managedprovisioning/
- */
-message DevicePolicyEvent {
-    // The event id - unique for each event.
-    optional android.stats.devicepolicy.EventId event_id = 1;
-    // The admin package name.
-    optional string admin_package_name = 2;
-    // A generic integer parameter.
-    optional int32 integer_value = 3;
-    // A generic boolean parameter.
-    optional bool boolean_value = 4;
-    // A parameter specifying a time period in milliseconds.
-    optional uint64 time_period_millis = 5;
-    // A parameter specifying a list of package names, bundle extras or string parameters.
-    optional android.stats.devicepolicy.StringList string_list_value = 6 [(log_mode) = MODE_BYTES];
-}
-
-/**
- * Logs when DocumentsUI is started, and how. Call this when DocumentsUI first starts up.
- *
- * Logged from:
- *     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
- */
-message DocsUILaunchReported {
-    optional android.stats.docsui.LaunchAction launch_action = 1;
-    optional bool has_initial_uri = 2;
-    optional android.stats.docsui.MimeType mime_type = 3;
-    optional android.stats.docsui.Root initial_root = 4;
-}
-
-/**
- * Logs root/app visited event in file managers/picker. Call this when the user
- * taps on root/app in hamburger menu.
- *
- * Logged from:
- *     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
- */
-message DocsUIRootVisitedReported {
-    optional android.stats.docsui.ContextScope scope = 1;
-    optional android.stats.docsui.Root root = 2;
-}
-
-/**
- * Logs file operation stats. Call this when a file operation has completed.
- *
- * Logged from:
- *     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
- */
-message DocsUIFileOperationReported {
-    optional android.stats.docsui.Provider provider = 1;
-    optional android.stats.docsui.FileOperation file_op = 2;
-}
-
-/**
- * Logs file operation stats. Call this when a copy/move operation has completed with a specific
- * mode.
- *
- * Logged from:
- *     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
- */
-message DocsUIFileOperationCopyMoveModeReported {
-    optional android.stats.docsui.FileOperation file_op = 1;
-    optional android.stats.docsui.CopyMoveOpMode mode = 2;
-}
-
-
-/**
- * Logs file sub operation stats. Call this when a file operation has failed.
- *
- * Logged from:
- *     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
- */
-message DocsUIFileOperationFailureReported {
-    optional android.stats.docsui.Authority authority = 1;
-    optional android.stats.docsui.SubFileOperation sub_op = 2;
-}
-
-/**
-* Logs the cancellation of a file operation. Call this when a job is canceled
-*
-* Logged from:
-*     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
-*/
-message DocsUIFileOperationCanceledReported {
-    optional android.stats.docsui.FileOperation file_op = 1;
-}
-
-/**
- * Logs startup time in milliseconds.
- *
- * Logged from:
- *     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
- */
-message DocsUIStartupMsReported {
-    optional int32 startup_millis = 1;
-}
-
-/**
- * Logs the action that was started by user.
- *
- * Logged from:
- *     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
- */
-message DocsUIUserActionReported {
-    optional android.stats.docsui.UserAction action = 1;
-}
-
-/**
- * Logs the invalid type when invalid scoped access is requested.
- *
- * Logged from:
- *     package/app/DocumentsUI/src/com/android/documentsui/ScopedAccessMetrics.java
- */
-message DocsUIInvalidScopedAccessRequestReported {
-    optional android.stats.docsui.InvalidScopedAccess type = 1;
-}
-
-/**
- * Logs the package name that launches docsui picker mode.
- *
- * Logged from:
- *     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
- */
-message DocsUIPickerLaunchedFromReported {
-    optional string package_name = 1;
-}
-
-/**
- * Logs the search type.
- *
- * Logged from:
- *     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
- */
-message DocsUISearchTypeReported {
-    optional android.stats.docsui.SearchType search_type = 1;
-}
-
-/**
- * Logs the search mode.
- *
- * Logged from:
- *     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
- */
-message DocsUISearchModeReported {
-    optional android.stats.docsui.SearchMode search_mode = 1;
-}
-
-/**
- * Logs the pick result information.
- *
- * Logged from:
- *     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
- */
-message DocsUIPickResultReported {
-    optional int32 total_action_count = 1;
-    optional int64 duration_millis = 2;
-    optional int32 file_count= 3;
-    optional bool is_searching = 4;
-    optional android.stats.docsui.Root picked_from = 5;
-    optional android.stats.docsui.MimeType mime_type = 6;
-    optional int32 repeatedly_pick_times = 7;
-}
-
-/** Logs the drag and drop of files.
-
- * Logged from:
- *     package/app/DocumentsUI/src/com/android/documentsui/Metrics.java
- */
-message DocsUIDragAndDropReported {
-    optional bool drag_initiated_from_docsui = 1;
-}
-
-/**
- * Logs when an app's memory is compacted.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
- */
-message AppCompacted {
-  // The pid of the process being compacted.
-  optional int32 pid = 1;
-
-  // The name of the process being compacted.
-  optional string process_name = 2;
-
-  // The type of compaction.
-  enum Action {
-    UNKNOWN = 0;
-    SOME = 1;
-    FULL = 2;
-    PERSISTENT = 3;
-    BFGS = 4;
-  }
-  optional Action action = 3;
-
-  // Total RSS in kilobytes consumed by the process prior to compaction.
-  optional int64 before_rss_total_kilobytes = 4;
-
-  // File RSS in kilobytes consumed by the process prior to compaction.
-  optional int64 before_rss_file_kilobytes = 5;
-
-  // Anonymous RSS in kilobytes consumed by the process prior to compaction.
-  optional int64 before_rss_anon_kilobytes = 6;
-
-  // Swap in kilobytes consumed by the process prior to compaction.
-  optional int64 before_swap_kilobytes = 7;
-
-  // Total RSS in kilobytes consumed by the process after compaction.
-  optional int64 after_rss_total_kilobytes = 8;
-
-  // File RSS in kilobytes consumed by the process after compaction.
-  optional int64 after_rss_file_kilobytes = 9;
-
-  // Anonymous RSS in kilobytes consumed by the process after compaction.
-  optional int64 after_rss_anon_kilobytes = 10;
-
-  // Swap in kilobytes consumed by the process after compaction.
-  optional int64 after_swap_kilobytes = 11;
-
-  // The time taken to perform compaction in milliseconds.
-  optional int64 time_to_compact_millis = 12;
-
-  // The last compaction action performed for this app.
-  optional Action last_action = 13;
-
-  // The last time that compaction was attempted on this process in milliseconds
-  // since boot, not including sleep (see SystemClock.uptimeMillis()).
-  optional int64 last_compact_timestamp_ms_since_boot = 14;
-
-  // The "setAdj" (i.e. previous) oom_score_adj at the time of compaction.
-  optional int32 oom_score_adj = 15;
-
-  // The process state at the time of compaction.
-  optional android.app.ProcessStateEnum process_state = 16 [default = PROCESS_STATE_UNKNOWN];
-
-  // Free ZRAM in kilobytes before compaction.
-  optional int64 before_zram_free_kilobytes = 17;
-
-  // Free ZRAM in kilobytes after compaction.
-  optional int64 after_zram_free_kilobytes = 18;
-}
-
-/**
- * Logs when a Tethering event occurs.
- *
- */
-message NetworkTetheringReported {
-  // tethering error code
-  optional android.stats.connectivity.ErrorCode error_code = 1;
-
-  // tethering downstream type
-  optional android.stats.connectivity.DownstreamType downstream_type = 2;
-
-  // transport type of upstream network
-  optional android.stats.connectivity.UpstreamType upstream_type = 3;
-
-  // The user type of Tethering
-  optional android.stats.connectivity.UserType user_type= 4;
-}
-
-/**
- * Logs a DNS lookup operation initiated by the system resolver on behalf of an application
- * invoking native APIs such as getaddrinfo() or Java APIs such as Network#getAllByName().
- *
- * The NetworkDnsEventReported message represents the entire lookup operation, which may
- * result one or more queries to the recursive DNS resolvers. Those are individually logged
- * in DnsQueryEvents to enable computing error rates and network latency and timeouts
- * broken up by query type, transport, network interface, etc.
- */
-message NetworkDnsEventReported {
-    optional android.stats.dnsresolver.EventType event_type = 1;
-
-    optional android.stats.dnsresolver.ReturnCode return_code = 2;
-
-    // The latency in microseconds of the entire DNS lookup operation.
-    optional int32 latency_micros = 3;
-
-    // Only valid for event_type = EVENT_GETADDRINFO.
-    optional int32 hints_ai_flags = 4;
-
-    // Flags passed to android_res_nsend() defined in multinetwork.h
-    // Only valid for event_type = EVENT_RESNSEND.
-    optional int32 res_nsend_flags = 5;
-
-    optional android.stats.dnsresolver.NetworkType network_type = 6;
-
-    // The DNS over TLS mode on a specific netId.
-    optional android.stats.dnsresolver.PrivateDnsModes private_dns_modes = 7;
-
-    // Additional pass-through fields opaque to statsd.
-    // The DNS resolver Mainline module can add new fields here without requiring an OS update.
-    optional android.stats.dnsresolver.DnsQueryEvents dns_query_events = 8 [(log_mode) = MODE_BYTES];
-
-    // The sample rate of DNS stats (to statsd) is 1/sampling_rate_denom.
-    optional int32 sampling_rate_denom = 9;
-}
-
-/**
- * logs the CapportApiData info
- * Logged from:
- * packages/modules/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
- */
-message CapportApiData {
-    // The TTL of the network connection provided by captive portal
-    optional int32 remaining_ttl_secs = 1;
-
-    // The limit traffic data of the network connection provided by captive portal
-    optional int32 remaining_bytes = 2;
-
-    // Is portal url option included in the DHCP packet (Yes, No)
-    optional bool has_portal_url = 3;
-
-    // Is venue info (e.g. store info, maps, flight status) included (Yes, No)
-    optional bool has_venue_info = 4;
-}
-
-/**
- * logs a network Probe Event
- * Logged from:
- * packages/modules/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
- */
-message ProbeEvent {
-    // The probe type (http or https, or captive portal API...)
-    optional android.stats.connectivity.ProbeType probe_type = 1;
-
-    // The latency in microseconds of the probe event
-    optional int32 latency_micros = 2;
-
-    // The result of the probe event
-    optional android.stats.connectivity.ProbeResult probe_result = 3;
-
-    // The CaptivePortal API info
-    optional CapportApiData capport_api_data = 4;
-}
-
-/**
- * log each ProbeEvent in ProbeEvents
- * Logged from:
- * packages/modules/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
- */
-message ProbeEvents {
-    // Record probe event during the validation
-    repeated ProbeEvent probe_event = 1;
-}
-
-/**
- * The DHCP (Dynamic Host Configuration Protocol) session info
- * Logged from:
- * packages/modules/NetworkStack/src/android/net/dhcp/DhcpClient.java
- */
-message DhcpSession {
-    // The DHCP Feature(s) enabled in this session
-    repeated android.stats.connectivity.DhcpFeature used_features = 1;
-
-    // The discover packet (re)transmit count
-    optional int32 discover_count = 2;
-
-    // The request packet (re)transmit count
-    optional int32 request_count = 3;
-
-    // The IPv4 address conflict count
-    // (only be meaningful when duplicate address detection is enabled)
-    optional int32 conflict_count = 4;
-
-    // The DHCP packet parsing error code in this session
-    // (defined in android.net.metrics.DhcpErrorEvent)
-    repeated android.stats.connectivity.DhcpErrorCode error_code = 5;
-
-    // The result of DHCP hostname transliteration
-    optional android.stats.connectivity.HostnameTransResult ht_result = 6;
-}
-
-/**
- * Logs Network IP provisioning event
- * Logged from:
- * packages/modules/NetworkStack/src/com/android/networkstack/metrics/NetworkIpProvisioningMetrics.java
- */
-message NetworkIpProvisioningReported {
-    // Transport type (WIFI, CELLULAR, BLUETOOTH, ..)
-    optional android.stats.connectivity.TransportType transport_type = 1;
-
-    // The latency in microseconds of IP Provisioning over IPV4
-    optional int32 ipv4_latency_micros = 2;
-
-    // The latency in microseconds of IP Provisioning over IPV6
-    optional int32 ipv6_latency_micros = 3;
-
-    // The time duration between provisioning start and end (success or failure)
-    optional int64 provisioning_duration_micros = 4;
-
-    // The specific disconnect reason for this IP provisioning
-    optional android.stats.connectivity.DisconnectCode disconnect_code = 5;
-
-    // Log DHCP session info (Only valid for IPv4)
-    optional DhcpSession dhcp_session = 6 [(log_mode) = MODE_BYTES];
-
-    // The random number between 0 ~ 999 for sampling
-    optional int32 random_number = 7;
-}
-
-/**
- * Logs Network DHCP Renew event
- * Logged from:
- * packages/modules/NetworkStack/src/android/net/dhcp/DhcpClient.java
- */
-message NetworkDhcpRenewReported {
-    // Transport type (WIFI, CELLULAR, BLUETOOTH, ..)
-    optional android.stats.connectivity.TransportType transport_type = 1;
-
-    // The request packet (re)transmit count
-    optional int32 request_count = 2;
-
-    // The latency in microseconds of DHCP Renew
-    optional int32 latency_micros = 3;
-
-    // The DHCP error code is defined in android.net.metrics.DhcpErrorEvent
-    optional android.stats.connectivity.DhcpErrorCode error_code = 4;
-
-    // The result of DHCP renew
-    optional android.stats.connectivity.DhcpRenewResult renew_result = 5;
-
-    // The random number between 0 ~ 999 for sampling
-    optional int32 random_number = 6;
-}
-
-/**
- * Logs Network Validation event
- * Logged from:
- * packages/modules/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
- */
-message NetworkValidationReported {
-    // Transport type (WIFI, CELLULAR, BLUETOOTH, ..)
-    optional android.stats.connectivity.TransportType transport_type = 1;
-
-    // Record each probe event
-    optional ProbeEvents probe_events = 2 [(log_mode) = MODE_BYTES];
-
-    // The result of the network validation
-    optional android.stats.connectivity.ValidationResult validation_result = 3;
-
-    // The latency in microseconds of network validation
-    optional int32 latency_micros = 4;
-
-    // The validation index (the first validation attempt or second, third...)
-    optional int32 validation_index = 5;
-
-    // The random number between 0 ~ 999 for sampling
-    optional int32 random_number = 6;
-}
-
-/**
- * Logs NetworkStack Quirk event
- * Logged from:
- * packages/modules/NetworkStack/src/com/android/networkstack/
- */
-message NetworkStackQuirkReported {
-    // Transport type (WIFI, CELLULAR, BLUETOOTH, ..)
-    optional android.stats.connectivity.TransportType transport_type = 1;
-
-    // Record each Quirk event
-    optional android.stats.connectivity.NetworkQuirkEvent event = 2;
-}
-
-/**
- * Logs when a data stall event occurs.
- *
- * Log from:
- *     packages/modules/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
- */
-message DataStallEvent {
-    // Data stall evaluation type.
-    // See packages/modules/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
-    // Refer to the definition of DATA_STALL_EVALUATION_TYPE_*.
-    optional int32 evaluation_type = 1;
-    // See definition in data_stall_event.proto.
-    optional com.android.server.connectivity.ProbeResult validation_result = 2;
-    // See definition in data_stall_event.proto.
-    optional android.net.NetworkCapabilitiesProto.Transport network_type = 3;
-    // See definition in data_stall_event.proto.
-    optional com.android.server.connectivity.WifiData wifi_info = 4 [(log_mode) = MODE_BYTES];
-    // See definition in data_stall_event.proto.
-    optional com.android.server.connectivity.CellularData cell_info = 5 [(log_mode) = MODE_BYTES];
-    // See definition in data_stall_event.proto.
-    optional com.android.server.connectivity.DnsEvent dns_event = 6 [(log_mode) = MODE_BYTES];
-    // The tcp packets fail rate from the latest tcp polling.
-    optional int32 tcp_fail_rate = 7;
-    // Number of packets sent since the last received packet.
-    optional int32 tcp_sent_since_last_recv = 8;
-}
-
-/*
- * Logs when RescueParty resets some set of experiment flags.
- *
- * Logged from:
- *     frameworks/base/services/core/java/com/android/server/RescueParty.java
- */
-message RescuePartyResetReported {
-    // The rescue level of this reset. A value of 0 indicates missing or unknown level information.
-    optional int32 rescue_level = 1;
-}
-
-/**
- * Logs when signed config is received from an APK, and if that config was applied successfully.
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/signedconfig/SignedConfigService.java
- */
-message SignedConfigReported {
-    enum Type {
-        UNKNOWN_TYPE = 0;
-        GLOBAL_SETTINGS = 1;
-    }
-    optional Type type = 1;
-
-    // The final status of the signed config received.
-    enum Status {
-        UNKNOWN_STATUS = 0;
-        APPLIED = 1;
-        BASE64_FAILURE_CONFIG = 2;
-        BASE64_FAILURE_SIGNATURE = 3;
-        SECURITY_EXCEPTION = 4;
-        INVALID_CONFIG = 5;
-        OLD_CONFIG = 6;
-        SIGNATURE_CHECK_FAILED = 7;
-        NOT_APPLICABLE = 8;
-        SIGNATURE_CHECK_FAILED_PROD_KEY_ABSENT = 9;
-    }
-    optional Status status = 2;
-
-    // The version of the signed config processed.
-    optional int32 version = 3;
-
-    // The package name that the config was extracted from.
-    optional string from_package = 4;
-
-    enum Key {
-        NO_KEY = 0;
-        DEBUG = 1;
-        PRODUCTION = 2;
-    }
-    // Which key was used to verify the config.
-    optional Key verified_with = 5;
-}
-
-/*
- * Logs GNSS Network-Initiated (NI) location events.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/location/GnssLocationProvider.java
- */
-message GnssNiEventReported {
-    // The type of GnssNiEvent.
-    enum EventType {
-        UNKNOWN = 0;
-        NI_REQUEST = 1;
-        NI_RESPONSE = 2;
-    }
-    optional EventType event_type = 1;
-
-    // An ID generated by HAL to associate NI notifications and UI responses.
-    optional int32 notification_id = 2;
-
-    // A type which distinguishes different categories of NI request, such as VOICE, UMTS_SUPL etc.
-    optional android.server.location.GnssNiType ni_type = 3;
-
-    // NI requires notification.
-    optional bool need_notify = 4;
-
-    // NI requires verification.
-    optional bool need_verify = 5;
-
-    // NI requires privacy override, no notification/minimal trace.
-    optional bool privacy_override = 6;
-
-    // Timeout period to wait for user response. Set to 0 for no timeout limit. Specified in
-    // seconds.
-    optional int32 timeout = 7;
-
-    // Default response when timeout.
-    optional android.server.location.GnssUserResponseType default_response = 8;
-
-    // String representing the requester of the network inititated location request.
-    optional string requestor_id = 9;
-
-    // Notification message text string representing the service(for eg. SUPL-service) who sent the
-    // network initiated location request.
-    optional string text = 10;
-
-    // requestorId decoding scheme.
-    optional android.server.location.GnssNiEncodingType requestor_id_encoding = 11;
-
-    // Notification message text decoding scheme.
-    optional android.server.location.GnssNiEncodingType text_encoding = 12;
-
-    // True if SUPL ES is enabled.
-    optional bool is_supl_es_enabled = 13;
-
-    // True if GNSS location is enabled.
-    optional bool is_location_enabled = 14;
-
-    // GNSS NI responses which define the response in NI structures.
-    optional android.server.location.GnssUserResponseType user_response = 15;
-}
-
-/**
- * Logs GNSS non-framework (NFW) location notification.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/location/GnssLocationProvider.java
- */
-message GnssNfwNotificationReported {
-    // Package name of the Android proxy application representing the non-framework entity that
-    // requested location. Set to empty string if unknown.
-    optional string proxy_app_package_name = 1;
-
-    // Protocol stack that initiated the non-framework location request.
-    optional android.server.location.NfwProtocolStack protocol_stack = 2;
-
-    // Name of the protocol stack if protocol_stack field is set to OTHER_PROTOCOL_STACK. Otherwise,
-    // set to empty string. This field is opaque to the framework and used for logging purposes.
-    optional string other_protocol_stack_name = 3;
-
-    // Source initiating/receiving the location information.
-    optional android.server.location.NfwRequestor requestor = 4;
-
-    // Identity of the endpoint receiving the location information. For example, carrier name, OEM
-    // name, SUPL SLP/E-SLP FQDN, chipset vendor name, etc. This field is opaque to the framework
-    // and used for logging purposes.
-    optional string requestor_id = 5;
-
-    // Indicates whether location information was provided for this request.
-    optional android.server.location.NfwResponseType response_type = 6;
-
-    // True if the device is in user initiated emergency session.
-    optional bool in_emergency_mode = 7;
-
-    // True if cached location is provided.
-    optional bool is_cached_location = 8;
-
-    // True if proxy app permission mismatch between framework and GNSS HAL.
-    optional bool is_permission_mismatched = 9;
-}
-
-/**
- * Logs GNSS configuration as defined in IGnssConfiguration.hal.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/location/GnssConfiguration.java
- */
-message GnssConfigurationReported {
-    // SUPL host name.
-    optional string supl_host = 1;
-
-    // SUPL port number.
-    optional int32 supl_port = 2;
-
-    // C2K host name.
-    optional string c2k_host = 3;
-
-    // C2K port number.
-    optional int32 c2k_port = 4;
-
-    // The SUPL version requested by Carrier.
-    optional int32 supl_ver = 5;
-
-    // The SUPL mode.
-    optional android.server.location.SuplMode supl_mode = 6;
-
-    // True if NI emergency SUPL restrictions is enabled.
-    optional bool supl_es = 7;
-
-    // LTE Positioning Profile settings
-    optional android.server.location.LppProfile lpp_profile = 8;
-
-    // Positioning protocol on A-Glonass system.
-    optional android.server.location.GlonassPosProtocol a_glonass_pos_protocol_select = 9;
-
-    // True if emergency PDN is used. Otherwise, regular PDN is used.
-    optional bool use_emergency_pdn_for_emergency_supl= 10;
-
-    // Configurations of how GPS functionalities should be locked when user turns off GPS On setting.
-    optional android.server.location.GpsLock gps_lock = 11;
-
-    // Number of seconds to extend the emergency session duration post emergency call.
-    optional int32 es_extension_sec = 12;
-
-    // The full list of package names of proxy Android applications representing the non-framework
-    // location access entities (on/off the device) for which the framework user has granted
-    // non-framework location access permission. The package names are concatenated in one string
-    // with spaces as separators.
-    optional string enabled_proxy_app_package_name_list = 13;
-}
-
-/**
- * Logs when a NFC device's error occurred.
- * Logged from:
- *     system/nfc/src/nfc/nfc/nfc_ncif.cc
- *     packages/apps/Nfc/src/com/android/nfc/cardemulation/AidRoutingManager.java
- */
-message NfcErrorOccurred {
-    enum Type {
-        UNKNOWN = 0;
-        CMD_TIMEOUT = 1;
-        ERROR_NOTIFICATION = 2;
-        AID_OVERFLOW = 3;
-    }
-    optional Type type = 1;
-    // If it's nci cmd timeout, log the timeout command.
-    optional uint32 nci_cmd = 2;
-
-    optional uint32 error_ntf_status_code = 3;
-}
-
-/**
- * Logs when a NFC device's state changed event
- * Logged from:
- *     packages/apps/Nfc/src/com/android/nfc/NfcService.java
- */
-message NfcStateChanged {
-    enum State {
-        UNKNOWN = 0;
-        OFF = 1;
-        ON = 2;
-        ON_LOCKED = 3; // Secure Nfc enabled.
-        CRASH_RESTART = 4; // NfcService watchdog timeout restart.
-    }
-    optional State state = 1;
-}
-
-/**
- * Logs when a NFC Beam Transaction occurred.
- * Logged from:
- *     packages/apps/Nfc/src/com/android/nfc/P2pLinkManager.java
- */
-message NfcBeamOccurred {
-    enum Operation {
-        UNKNOWN = 0;
-        SEND = 1;
-        RECEIVE = 2;
-    }
-    optional Operation operation = 1;
-}
-
-/**
- * Logs when a NFC Card Emulation Transaction occurred.
- * Logged from:
- *     packages/apps/Nfc/src/com/android/nfc/cardemulation/HostEmulationManager.java
- *     packages/apps/Nfc/src/com/android/nfc/cardemulation/HostNfcFEmulationManager.java
- */
-message NfcCardemulationOccurred {
-    enum Category {
-        UNKNOWN = 0;
-        HCE_PAYMENT = 1;
-        HCE_OTHER = 2;
-        OFFHOST = 3;
-    }
-    // Transaction belongs to HCE payment or HCE other category, or offhost.
-    optional Category category = 1;
-    // SeName from transaction: SIMx, eSEx, HCE, HCEF.
-    optional string se_name = 2;
-}
-
-/**
- * Logs when a NFC Tag event occurred.
- * Logged from:
- *     packages/apps/Nfc/src/com/android/nfc/NfcDispatcher.java
- */
-message NfcTagOccurred {
-    enum Type {
-        UNKNOWN = 0;
-        URL = 1;
-        BT_PAIRING = 2;
-        PROVISION = 3;
-        WIFI_CONNECT = 4;
-        APP_LAUNCH = 5;
-        OTHERS = 6;
-    }
-    optional Type type = 1;
-}
-
-/**
- * Logs when Hce transaction triggered
- * Logged from:
- *     system/nfc/src/nfc/nfc/nfc_ncif.cc
- */
-message NfcHceTransactionOccurred {
-    // The latency period(in microseconds) it took for the first HCE data
-    // exchange.
-    optional uint32 latency_micros = 1;
-}
-
-/**
- * Logs when SecureElement state event changed
- * Logged from:
- *     packages/apps/SecureElement/src/com/android/se/Terminal.java
- */
-message SeStateChanged {
-    enum State {
-        UNKNOWN = 0;
-        INITIALIZED = 1;
-        DISCONNECTED = 2;
-        CONNECTED = 3;
-        HALCRASH = 4;
-    }
-    optional State state = 1;
-
-    optional string state_change_reason = 2;
-    // SIMx or eSEx.
-    optional string terminal = 3;
-}
-
-/**
- * Information about a permission grant request
- */
-message PermissionGrantRequestResultReported {
-    // unique value identifying an API call. A API call might result in multiple of these atoms
-    optional int64 request_id = 1;
-
-    // UID of package requesting the permission grant
-    optional int32 uid = 2 [(is_uid) = true];
-
-    // Name of package requesting the permission grant
-    optional string package_name = 3;
-
-    // The permission to be granted
-    optional string permission_name = 4;
-
-    // If the permission was explicitly requested via the API or added by the system
-    optional bool is_implicit = 5;
-
-    enum Result {
-        UNDEFINED = 0;
-        // permission request was ignored
-        IGNORED = 1;
-        // permission request was ignored because it was user fixed
-        IGNORED_USER_FIXED = 2;
-        // permission request was ignored because it was policy fixed
-        IGNORED_POLICY_FIXED = 3;
-        // permission was granted by user action
-        USER_GRANTED = 4;
-        // permission was automatically granted
-        AUTO_GRANTED = 5;
-        // permission was denied by user action
-        USER_DENIED = 6;
-        // permission was denied with prejudice by the user
-        USER_DENIED_WITH_PREJUDICE = 7;
-        // permission was automatically denied
-        AUTO_DENIED = 8;
-        // permission request was ignored because permission is restricted
-        IGNORED_RESTRICTED_PERMISSION = 9;
-        // one time permission was granted by user action
-        USER_GRANTED_ONE_TIME = 10;
-        // user ignored request by leaving the request screen without choosing any option
-        USER_IGNORED = 11;
-        // user granted the permission after being linked to settings
-        USER_GRANTED_IN_SETTINGS = 12;
-        // user denied the permission after being linked to settings
-        USER_DENIED_IN_SETTINGS = 13;
-        // user denied the permission with prejudice after being linked to settings
-        USER_DENIED_WITH_PREJUDICE_IN_SETTINGS = 14;
-        // permission was automatically revoked after one-time permission expired
-        AUTO_ONE_TIME_PERMISSION_REVOKED = 15;
-        // permission was automatically revoked for unused app
-        AUTO_UNUSED_APP_PERMISSION_REVOKED = 16;
-    }
-    // The result of the permission grant
-    optional Result result = 6;
-}
-
-/**
- * Logs when Omapi API used
- * Logged from:
- *     packages/apps/SecureElement/src/com/android/se/Terminal.java
- */
-message SeOmapiReported {
-    enum Operation {
-        UNKNOWN = 0;
-        OPEN_CHANNEL = 1;
-    }
-    optional Operation operation = 1;
-    // SIMx or eSEx.
-    optional string terminal = 2;
-
-    optional string package_name = 3;
-}
-
-/**
-  * Logs the dispatch latency of a broadcast during processing of BOOT_COMPLETED.
-  * The dispatch latency is the dispatchClockTime - enqueueClockTime.
-  * Logged from:
-  *   frameworks/base/services/core/java/com/android/server/am/BroadcastQueue.java
-  */
-message BroadcastDispatchLatencyReported {
-    optional int64 dispatch_latency_millis = 1;
-}
-
-/**
-   * Logs AttentionManagerService attention check result.
-   *
-   * Logged from:
-   *   frameworks/base/services/core/java/com/android/server/attention/AttentionManagerService.java
-   */
-message AttentionManagerServiceResultReported {
-    // See core/java/android/service/attention/AttentionService.java
-    enum AttentionCheckResult {
-        UNKNOWN = 20;
-        ATTENTION_SUCCESS_ABSENT = 0;
-        ATTENTION_SUCCESS_PRESENT = 1;
-        ATTENTION_FAILURE_UNKNOWN = 2;
-        ATTENTION_FAILURE_CANCELLED = 3;
-        ATTENTION_FAILURE_PREEMPTED = 4;
-        ATTENTION_FAILURE_TIMED_OUT = 5;
-        ATTENTION_FAILURE_CAMERA_PERMISSION_ABSENT = 6;
-    }
-    optional AttentionCheckResult attention_check_result = 1 [default = UNKNOWN];
-}
-
-/**
- * Logs when an adb connection changes state.
- *
- * Logged from:
- *     frameworks/base/services/core/java/com/android/server/adb/AdbDebuggingManager.java
- */
-message AdbConnectionChanged {
-    // The last time this system connected via adb, or 0 if the 'always allow' option was not
-    // previously selected for this system.
-    optional int64 last_connection_time_millis = 1;
-
-    // The time in ms within which a subsequent connection from an 'always allow' system is allowed
-    // to reconnect via adb without user interaction.
-    optional int64 auth_window_millis = 2;
-
-    // The state of the adb connection from frameworks/base/core/proto/android/debug/enums.proto.
-    optional android.debug.AdbConnectionStateEnum state = 3;
-
-    // True if the 'always allow' option was selected for this system.
-    optional bool always_allow = 4;
-}
-
-/*
- * Logs the reported speech DSP status.
- *
- * Logged from:
- *  Vendor audio implementation.
- */
-message SpeechDspStatReported {
-    // The total Speech DSP uptime in milliseconds.
-    optional int32 total_uptime_millis = 1;
-    // The total Speech DSP downtime in milliseconds.
-    optional int32 total_downtime_millis = 2;
-    optional int32 total_crash_count = 3;
-    optional int32 total_recover_count = 4;
-}
-
-/**
- * Logs USB connector contaminant status.
- *
- * Logged from: USB Service.
- */
-message UsbContaminantReported {
-    optional string id = 1;
-    optional android.service.usb.ContaminantPresenceStatus status = 2;
-}
-
-/**
- * This atom is for debugging purpose.
- */
-message DebugElapsedClock {
-    // Monotically increasing value for each pull.
-    optional int64 pull_count = 1;
-    // Time from System.elapsedRealtime.
-    optional int64 elapsed_clock_millis = 2;
-    // Time from System.elapsedRealtime.
-    optional int64 same_elapsed_clock_millis = 3;
-    // Diff between current elapsed time and elapsed time from previous pull.
-    optional int64 elapsed_clock_diff_millis = 4;
-
-    enum Type {
-      TYPE_UNKNOWN = 0;
-      ALWAYS_PRESENT = 1;
-      PRESENT_ON_ODD_PULLS = 2;
-    }
-    // Type of behavior for the pulled data.
-    optional Type type = 5;
-}
-
-/**
- * This atom is for debugging purpose.
- */
-message DebugFailingElapsedClock {
-    // Monotically increasing value for each pull.
-    optional int64 pull_count = 1;
-    // Time from System.elapsedRealtime.
-    optional int64 elapsed_clock_millis = 2;
-    // Time from System.elapsedRealtime.
-    optional int64 same_elapsed_clock_millis = 3;
-    // Diff between current elapsed time and elapsed time from previous pull.
-    optional int64 elapsed_clock_diff_millis = 4;
-}
-
-/** Logs System UI bubbles event changed.
- *
- * Logged from:
- *     frameworks/base/packages/SystemUI/src/com/android/systemui/bubbles
- */
-message BubbleUIChanged {
-
-    // The app package that is posting the bubble.
-    optional string package_name = 1;
-
-    // The notification channel that is posting the bubble.
-    optional string notification_channel = 2;
-
-    // The notification id associated with the posted bubble.
-    optional int32 notification_id = 3;
-
-    // The position of the bubble within the bubble stack.
-    optional int32 position = 4;
-
-    // The total number of bubbles within the bubble stack.
-    optional int32 total_number = 5;
-
-    // User interactions with the bubble.
-    enum Action {
-        UNKNOWN = 0;
-        POSTED = 1;
-        UPDATED = 2;
-        EXPANDED = 3;
-        COLLAPSED = 4;
-        DISMISSED = 5;
-        STACK_DISMISSED = 6;
-        STACK_MOVED = 7;
-        HEADER_GO_TO_APP = 8;
-        HEADER_GO_TO_SETTINGS = 9;
-        PERMISSION_OPT_IN = 10;
-        PERMISSION_OPT_OUT = 11;
-        PERMISSION_DIALOG_SHOWN = 12;
-        SWIPE_LEFT = 13;
-        SWIPE_RIGHT = 14;
-        STACK_EXPANDED = 15;
-        FLYOUT = 16;
-    }
-    optional Action action = 6;
-
-    // Normalized screen position of the bubble stack. The range is between 0 and 1.
-    optional float normalized_x_position = 7;
-    optional float normalized_y_position = 8;
-
-    // Whether the bubble is unread. If it is unread, a dot is shown in the bubble stack icon.
-    optional bool is_unread = 9;
-
-    // Whether the bubble is an on-going one.
-    optional bool is_ongoing = 10;
-
-    // Whether the bubble is produced by an app running in foreground.
-    // This is deprecated and the value should be ignored.
-    optional bool is_foreground = 11 [deprecated = true];
-}
-
-/**
-  * Logs System UI bubbles developer errors.
-  *
-  * Logged from:
-  *   frameworks/base/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
-  */
-message BubbleDeveloperErrorReported {
-
-    // The app package that is posting the bubble.
-    optional string package_name = 1;
-
-    // Bubble developer error type enums.
-    enum Error {
-        UNKNOWN = 0;
-        ACTIVITY_INFO_MISSING = 1;
-        ACTIVITY_INFO_NOT_RESIZABLE = 2;
-        DOCUMENT_LAUNCH_NOT_ALWAYS = 3;
-    }
-    optional Error error = 2 [default = UNKNOWN];
-}
-
-/**
- * Logs that a constraint for a scheduled job has changed.
- *
- * Logged from:
- *     frameworks/base/services/core/java/com/android/server/job/controllers/JobStatus.java
- */
-message ScheduledJobConstraintChanged {
-    repeated AttributionNode attribution_node = 1;
-
-    // Name of the job.
-    optional string job_name = 2;
-
-    optional com.android.server.job.ConstraintEnum constraint = 3;
-
-    enum State {
-        UNKNOWN = 0;
-        UNSATISFIED = 1;
-        SATISFIED = 2;
-    }
-    optional State state = 4;
-}
-
-/**
- * Logs PowerManagerService screen timeout resets (extensions) that happen when an attention check
- * returns true.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
- */
-message ScreenTimeoutExtensionReported {
-    // Describes how many times in a row did the power manager reset the screen off timeout.
-    optional uint32 consecutive_timeout_extended_count = 1;
-}
-
-/*
-* Logs number of milliseconds it takes to start a process.
-* The definition of app process start time is from the app launch time to
-* the time that Zygote finished forking the app process and loaded the
-* application package's java classes.
-
-* This metric is different from AppStartOccurred which is for foreground
-* activity only.
-
-* ProcessStartTime can report all processes (both foreground and background)
-* start time.
-*
-* Logged from:
-*   frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
-*/
-message ProcessStartTime {
-    // The uid of the ProcessRecord.
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // The process pid.
-    optional int32 pid = 2;
-
-    // The process name.
-    // Usually package name, "system" for system server.
-    // Provided by ActivityManagerService.
-    optional string process_name = 3;
-
-    enum StartType {
-        UNKNOWN = 0;
-        WARM = 1;
-        HOT = 2;
-        COLD = 3;
-    }
-
-    // The start type.
-    optional StartType type = 4;
-
-    // The elapsed realtime at the start of the process.
-    optional int64 process_start_time_millis = 5;
-
-    // Number of milliseconds it takes to reach bind application.
-    optional int32 bind_application_delay_millis = 6;
-
-    // Number of milliseconds it takes to finish start of the process.
-    optional int32 process_start_delay_millis = 7;
-
-    // hostingType field in ProcessRecord, the component type such as "activity",
-    // "service", "content provider", "broadcast" or other strings.
-    optional string hosting_type = 8;
-
-    // hostingNameStr field in ProcessRecord. The component class name that runs
-    // in this process.
-    optional string hosting_name = 9;
-}
-
-/**
- * Track Media Codec usage
- * Logged from:
- *   frameworks/av/media/libstagefright/MediaCodec.cpp
- *   frameworks/av/services/mediaanalytics/statsd_codec.cpp
- */
-message MediametricsCodecReported {
-    optional int64 timestamp_nanos = 1;
-    optional string package_name = 2;
-    optional int64 package_version_code = 3;
-    optional int64 media_apex_version = 4;
-
-    optional android.stats.mediametrics.CodecData codec_data = 5 [(android.os.statsd.log_mode) = MODE_BYTES];
-}
-
-/**
- * Track Media Extractor (pulling video/audio streams out of containers) usage
- * Logged from:
- *   frameworks/av/media/libstagefright/RemoteMediaExtractor.cpp
- *   frameworks/av/services/mediaanalytics/statsd_extractor.cpp
- */
-message MediametricsExtractorReported {
-    optional int64 timestamp_nanos = 1;
-    optional string package_name = 2;
-    optional int64 package_version_code = 3;
-    optional int64 media_apex_version = 4;
-
-    optional android.stats.mediametrics.ExtractorData extractor_data = 5 [(android.os.statsd.log_mode) = MODE_BYTES];
-}
-
-/**
- * Track how we arbitrate between microphone/input requests.
- * Logged from
- *   frameworks/av/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
- *   frameworks/av/services/mediaanalytics/statsd_audiopolicy.cpp
- */
-message MediametricsAudiopolicyReported {
-    optional int64 timestamp_nanos = 1;
-    optional string package_name = 2;
-    optional int64 package_version_code = 3;
-    optional int64 media_apex_version = 4;
-
-    optional android.stats.mediametrics.AudioPolicyData audiopolicy_data = 5 [(android.os.statsd.log_mode) = MODE_BYTES];
-}
-
-/**
- * Track how we arbitrate between microphone requests.
- * Logged from
- *   frameworks/av/media/libaudioclient/AudioRecord.cpp
- *   frameworks/av/services/mediaanalytics/statsd_audiorecord.cpp
- */
-message MediametricsAudiorecordReported {
-    optional int64 timestamp_nanos = 1;
-    optional string package_name = 2;
-    optional int64 package_version_code = 3;
-    optional int64 media_apex_version = 4;
-
-    optional android.stats.mediametrics.AudioRecordData audiorecord_data = 5 [(android.os.statsd.log_mode) = MODE_BYTES];
-}
-
-/**
- * Track how we arbitrate between microphone/input requests.
- * Logged from
- *   frameworks/av/media/libnblog/ReportPerformance.cpp
- *   frameworks/av/services/mediaanalytics/statsd_audiothread.cpp
- */
-message MediametricsAudiothreadReported {
-    optional int64 timestamp_nanos = 1;
-    optional string package_name = 2;
-    optional int64 package_version_code = 3;
-    optional int64 media_apex_version = 4;
-
-    optional android.stats.mediametrics.AudioThreadData audiothread_data = 5 [(android.os.statsd.log_mode) = MODE_BYTES];
-}
-
-/**
- * Track how we arbitrate between microphone/input requests.
- * Logged from
- *   frameworks/av/media/libaudioclient/AudioTrack.cpp
- *   frameworks/av/services/mediaanalytics/statsd_audiotrack.cpp
- */
-message MediametricsAudiotrackReported {
-    optional int64 timestamp_nanos = 1;
-    optional string package_name = 2;
-    optional int64 package_version_code = 3;
-    optional int64 media_apex_version = 4;
-
-    optional android.stats.mediametrics.AudioTrackData audiotrack_data = 5 [(android.os.statsd.log_mode) = MODE_BYTES];
-}
-
-/**
- * Track information about DRM framework performance
- * Logged from
- *   frameworks/av/drm/libmediadrm/DrmHal.cpp
- *   frameworks/av/services/mediaanalytics/statsd_drm.cpp
- */
-message MediametricsMediadrmReported {
-    optional int64 timestamp_nanos = 1;
-    optional string package_name = 2;
-    optional int64 package_version_code = 3;
-    optional int64 media_apex_version = 4;
-
-    // vendor+description tell about which DRM plugin is in use on this device
-    optional string vendor = 5;
-    optional string description = 6;
-    // from frameworks/av/drm/libmediadrm/protos/metrics.proto
-    optional bytes framework_stats = 7 [(android.os.statsd.log_mode) = MODE_BYTES];
-}
-
-/**
- * Track information about the widevine DRM plugin performance
- * Logged from
- *   vendor/widevine/libwvdrmengine/cdm/metrics
- *   frameworks/av/services/mediaanalytics/statsd_drm.cpp
- */
-message MediametricsDrmWidevineReported {
-    optional int64 timestamp_nanos = 1;
-    optional string package_name = 2;
-    optional int64 package_version_code = 3;
-    optional int64 media_apex_version = 4;
-
-    optional bytes vendor_specific_stats = 5 [(android.os.statsd.log_mode) = MODE_BYTES];
-}
-
-/**
- * Track information about recordings (e.g. camcorder)
- * Logged from
- *   frameworks/av/media/libmediaplayerservice/StagefrightRecorder.cpp
- *   frameworks/av/services/mediaanalytics/statsd_recorder.cpp
- */
-message MediametricsRecorderReported {
-    optional int64 timestamp_nanos = 1;
-    optional string package_name = 2;
-    optional int64 package_version_code = 3;
-    optional int64 media_apex_version = 4;
-
-    optional android.stats.mediametrics.RecorderData recorder_data = 5 [(android.os.statsd.log_mode) = MODE_BYTES];
-}
-
-/**
- * Track Media Player usage
- * Logged from:
- *   frameworks/av/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp
- *   frameworks/av/services/mediaanalytics/statsd_nuplayer.cpp
- */
-message MediametricsNuPlayerReported {
-    optional int64 timestamp_nanos = 1;
-    optional string package_name = 2;
-    optional int64 package_version_code = 3;
-    optional int64 media_apex_version = 4;
-
-    optional android.stats.mediametrics.NuPlayerData nuplayer_data = 5 [(android.os.statsd.log_mode) = MODE_BYTES];
-}
-
-/**
- * Track Legacy DRM usage
- * Logged from
- *   frameworks/av/drm/drmserver/DrmManager.cpp
- */
-message MediametricsDrmManagerReported {
-    optional int64 timestamp_nanos = 1;
-    optional string package_name = 2;
-    optional int64 package_version_code = 3;
-    optional int64 media_apex_version = 4;
-
-    enum Method {
-        METHOD_NOT_FOUND       = -1;
-        GET_CONSTRAINTS        =  0;
-        GET_METADATA           =  1;
-        CAN_HANDLE             =  2;
-        PROCESS_DRM_INFO       =  3;
-        ACQUIRE_DRM_INFO       =  4;
-        SAVE_RIGHTS            =  5;
-        GET_ORIGINAL_MIME_TYPE =  6;
-        GET_DRM_OBJECT_TYPE    =  7;
-        CHECK_RIGHTS_STATUS    =  8;
-        REMOVE_RIGHTS          =  9;
-        REMOVE_ALL_RIGHTS      = 10;
-        OPEN_CONVERT_SESSION   = 11;
-        OPEN_DECRYPT_SESSION   = 12;
-    }
-
-    // plugin_id+description inform which Legacy DRM plugins are still in use on device
-    optional string plugin_id = 5;
-    optional string description = 6;
-    optional Method method = 7;
-    optional string mime_types = 8;
-
-    optional int64 get_constraints_count =  9;
-    optional int64 get_metadata_count = 10;
-    optional int64 can_handle_count = 11;
-    optional int64 process_drm_info_count = 12;
-    optional int64 acquire_drm_info_count = 13;
-    optional int64 save_rights_count = 14;
-    optional int64 get_original_mime_type_count = 15;
-    optional int64 get_drm_object_type_count = 16;
-    optional int64 check_rights_status_count = 17;
-    optional int64 remove_rights_count = 18;
-    optional int64 remove_all_rights_count = 19;
-    optional int64 open_convert_session_count = 20;
-    optional int64 open_decrypt_session_count = 21;
-}
-
-/**
- * State of a dangerous permission requested by a package
- * Pulled from: StatsCompanionService
-*/
-message DangerousPermissionState {
-    // Name of the permission
-    optional string permission_name = 1;
-
-    // Uid of the package
-    optional int32 uid = 2 [(is_uid) = true];
-
-    // Package requesting the permission
-    optional string package_name = 3;
-
-    // If the permission is granted to the uid
-    optional bool is_granted = 4;
-
-    // Permission flags as per android.content.pm.PermissionFlags
-    optional int32 permission_flags = 5;
-}
-
-/**
- * Logs when a package is denied access to a device identifier based on the new access requirements.
- *
- * Logged from:
- *     frameworks/base/telephony/java/com/android/internal/telephony/TelephonyPermissions.java
- */
-message DeviceIdentifierAccessDenied {
-    // The name of the package denied access to the requested device identifier.
-    optional string package_name = 1;
-
-    // The name of the device identifier method the package attempted to invoke.
-    optional string method_name = 2;
-
-    // True if the package is preinstalled.
-    // Starting from Android 11, this boolean is not set and will always be false.
-    optional bool is_preinstalled = 3 [deprecated = true];
-
-    // True if the package is privileged.
-    // Starting from Android 11, this boolean is not set and will always be false.
-    optional bool is_priv_app = 4 [deprecated = true];
-}
-
-/**
- * Pulls the ongoing mainline install train version code.
- * Pulled from StatsCompanionService
- */
-message TrainInfo {
-    optional int64 train_version_code = 1;
-
-    optional TrainExperimentIds train_experiment_id = 2;
-
-    optional string train_name = 3;
-
-    enum Status {
-        UNKNOWN = 0;
-        INSTALL_REQUESTED = 1;
-        INSTALL_STARTED = 2;
-        INSTALL_STAGED_NOT_READY = 3;
-        INSTALL_STAGED_READY = 4;
-        INSTALL_SUCCESS = 5;
-        // Replaced by INSTALL_FAILURE_DOWNLOAD, INSTALL_FAILURE_STATE_MISMATCH,
-        // and INSTALL_FAILURE_COMMIT.
-        INSTALL_FAILURE = 6  [deprecated = true];
-        // This enum is for installs that are manually cancelled via the Manual Update UI.
-        INSTALL_CANCELLED = 7;
-        INSTALLER_ROLLBACK_REQUESTED = 8;
-        INSTALLER_ROLLBACK_INITIATED = 9;
-        INSTALLER_ROLLBACK_INITIATED_FAILURE = 10;
-        INSTALLER_ROLLBACK_STAGED = 11;
-        INSTALLER_ROLLBACK_STAGED_FAILURE = 12;
-        INSTALLER_ROLLBACK_BOOT_TRIGGERED = 13;
-        INSTALLER_ROLLBACK_BOOT_TRIGGERED_FAILURE = 14;
-        INSTALLER_ROLLBACK_SUCCESS = 15;
-        INSTALLER_ROLLBACK_FAILURE = 16;
-        INSTALLER_ROLLBACK_STAGED_CANCEL_REQUESTED = 17;
-        INSTALLER_ROLLBACK_STAGED_CANCEL_SUCCESS = 18;
-        INSTALLER_ROLLBACK_STAGED_CANCEL_FAILURE = 19;
-        INSTALL_STAGED_CANCEL_REQUESTED = 20;
-        INSTALL_STAGED_CANCEL_SUCCESS = 21;
-        INSTALL_STAGED_CANCEL_FAILURE = 22;
-        INSTALL_FAILURE_DOWNLOAD = 23;
-        INSTALL_FAILURE_STATE_MISMATCH = 24;
-        INSTALL_FAILURE_COMMIT = 25;
-        REBOOT_TRIGGERED = 26;
-    }
-    optional Status status = 4;
-}
-
-/**
- * Logs the gesture stage changed event.
- *
- * Logged from:
- *   frameworks/base/packages/SystemUI/
- */
-message AssistGestureStageReported {
-    optional android.hardware.sensor.assist.AssistGestureStageEnum gesture_stage = 1;
-}
-
-/**
- * Logs the feedback type.
- *
- * Logged from:
- *   frameworks/base/packages/SystemUI/
- */
-message AssistGestureFeedbackReported {
-    // Whether or not the gesture was used.
-    optional android.hardware.sensor.assist.AssistGestureFeedbackEnum feedback_type = 1;
-}
-
-/**
- * Logs the progress.
- *
- * Logged from:
- *   frameworks/base/packages/SystemUI/
- */
-message AssistGestureProgressReported {
-    // [0,100] progress for the assist gesture.
-    optional int32 progress = 1;
-}
-
-/*
- * Information about the time zone data on a device.
- */
-message TimeZoneDataInfo {
-    // A version identifier for the data set on device. e.g. "2018i"
-    optional string tzdb_version = 1;
-}
-
-/**
- * Logs the GPU stats global health information.
- *
- * Logged from:
- *   frameworks/native/services/gpuservice/gpustats/
- */
-message GpuStatsGlobalInfo {
-    // Package name of the gpu driver.
-    optional string driver_package_name = 1;
-
-    // Version name of the gpu driver.
-    optional string driver_version_name = 2;
-
-    // Version code of the gpu driver.
-    optional int64 driver_version_code = 3;
-
-    // Build time of the gpu driver in UTC as seconds since January 1, 1970.
-    optional int64 driver_build_time = 4;
-
-    // Total count of the gl driver gets loaded.
-    optional int64 gl_loading_count = 5;
-
-    // Total count of the gl driver fails to be loaded.
-    optional int64 gl_loading_failure_count = 6;
-
-    // Total count of the Vulkan driver gets loaded.
-    optional int64 vk_loading_count = 7;
-
-    // Total count of the Vulkan driver fails to be loaded.
-    optional int64 vk_loading_failure_count = 8;
-
-    // Api version of the system Vulkan driver.
-    optional int32 vulkan_version = 9;
-
-    // Api version of the system CPU Vulkan driver.
-    optional int32 cpu_vulkan_version = 10;
-
-    // Api version of the system GLES driver.
-    optional int32 gles_version = 11;
-
-    // Total count of the angle driver gets loaded.
-    optional int64 angle_loading_count = 12;
-
-    // Total count of the angle driver fails to be loaded.
-    optional int64 angle_loading_failure_count = 13;
-}
-
-/**
- * GPU driver loading time info.
- */
-message GpuDriverLoadingTime {
-    // List of all the driver loading times for this app. The list size is
-    // capped at 50.
-    repeated int64 driver_loading_time = 1;
-}
-
-/**
- * Logs the GPU stats per app health information.
- *
- * Logged from:
- *   frameworks/native/services/gpuservice/gpustats/
- */
-message GpuStatsAppInfo {
-    // Package name of the application that loads the gpu driver. Total number
-    // of different packages is capped at 100.
-    optional string app_package_name = 1;
-
-    // Version code of the gpu driver this app loads.
-    optional int64 driver_version_code = 2;
-
-    // gl driver loading time info.
-    optional GpuDriverLoadingTime gl_driver_loading_time = 3
-            [(android.os.statsd.log_mode) = MODE_BYTES];
-
-    // Vulkan driver loading time info.
-    optional GpuDriverLoadingTime vk_driver_loading_time = 4
-            [(android.os.statsd.log_mode) = MODE_BYTES];
-
-    // Angle driver loading time info.
-    optional GpuDriverLoadingTime angle_driver_loading_time = 5
-            [(android.os.statsd.log_mode) = MODE_BYTES];
-
-    // CPU Vulkan implementation is in use.
-    optional bool cpu_vulkan_in_use = 6;
-
-    // App is not doing pre-rotation correctly.
-    optional bool false_prerotation = 7;
-
-    // App creates GLESv1 context.
-    optional bool gles_1_in_use = 8;
-}
-
-/*
- * Logs the size of the system ion heap.
- *
- * Pulled from StatsCompanionService.
- */
-message SystemIonHeapSize {
-    // Deprecated due to limited support of ion stats in debugfs.
-    // Use `IonHeapSize` instead.
-    option deprecated = true;
-
-    // Size of the system ion heap in bytes.
-    // Read from debugfs.
-    optional int64 size_in_bytes = 1;
-}
-
-/*
- * Logs the total size of the ion heap.
- *
- * Pulled from StatsCompanionService.
- */
-message IonHeapSize {
-    // Total size of all ion heaps in kilobytes.
-    // Read from: /sys/kernel/ion/total_heaps_kb.
-    optional int32 total_size_kb = 1;
-}
-
-/*
- * Logs the per-process size of the system ion heap.
- *
- * Pulled from StatsCompanionService.
- */
-message ProcessSystemIonHeapSize {
-    // The uid if available. -1 means not available.
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // The process name (from /proc/PID/cmdline).
-    optional string process_name = 2;
-
-    // Sum of sizes of all allocations.
-    optional int32 total_size_in_kilobytes = 3;
-
-    // Number of allocations.
-    optional int32 allocation_count = 4;
-
-    // Size of the largest allocation.
-    optional int32 max_size_in_kilobytes = 5;
-}
-
-/**
- * Push network stack events.
- *
- * Log from:
- *     frameworks/base/packages/NetworkStack/
- */
-message NetworkStackReported {
-    // The id that indicates the event reported from NetworkStack.
-    optional int32 event_id = 1;
-    // The data for the reported events.
-    optional android.stats.connectivity.NetworkStackEventData network_stack_event = 2 [(log_mode) = MODE_BYTES];
-}
-
-/**
- * Logs the apps that are installed on the external storage.
- * Pulled from:
- *   StatsCompanionService
- */
-message AppsOnExternalStorageInfo {
-    // The type of the external storage.
-    optional android.stats.storage.ExternalStorageType external_storage_type = 1;
-    // The name of the package that is installed on the external storage.
-    optional string package_name = 2;
-}
-
-/**
- * Logs the settings related to Face.
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/stats
- */
-message FaceSettings {
-    // Whether or not face unlock is allowed on Keyguard.
-    optional bool unlock_keyguard_enabled = 1;
-    // Whether or not face unlock dismisses the Keyguard.
-    optional bool unlock_dismisses_keyguard = 2;
-    // Whether or not face unlock requires attention.
-    optional bool unlock_attention_required = 3;
-    // Whether or not face unlock is allowed for apps (through BiometricPrompt).
-    optional bool unlock_app_enabled = 4;
-    // Whether or not face unlock always requires user confirmation.
-    optional bool unlock_always_require_confirmation = 5;
-    // Whether or not a diverse set of poses are required during enrollment.
-    optional bool unlock_diversity_required = 6;
-}
-
-/**
- * Logs cooling devices maintained by the kernel.
- *
- * Pulled from StatsCompanionService.java
- */
-message CoolingDevice {
-    // The type of cooling device being reported. Eg. CPU, GPU...
-    optional android.os.CoolingTypeEnum device_location = 1;
-    // The name of the cooling device source. Eg. CPU0
-    optional string device_name = 2;
-    // Current throttle state of the cooling device. The value can any unsigned
-    // integer between 0 and max_state defined in its driver. 0 means device is
-    // not in throttling, higher value means deeper throttling.
-    optional int32 state = 3;
-}
-
-/**
- * Intelligence has several counter-type events that don't warrant a
- * full separate atom. These are primarily API call counters but also include
- * counters for feature usage and specific failure modes.
- *
- * Logged from the Intelligence mainline module.
- */
-message IntelligenceEventReported {
-  // The event type.
-  optional android.stats.intelligence.EventType event_id = 1;
-  // Success, failure.
-  optional android.stats.intelligence.Status status = 2;
-  // How many times the event occured (to report a batch of high frequency events).
-  optional int32 count = 3;
-  // How long the event took (sum of durations if count > 1)
-  optional int64 duration_millis = 4;
-}
-
-/**
- * Logs when Car Power state changed.
- *
- * Logged from:
- *   packages/services/Car/service/src/com/android/car/CarStatsLog.java
- */
-message CarPowerStateChanged {
-    // States come from CpmsState in CarPowerManagementService.java.
-    enum State {
-       WAIT_FOR_VHAL = 0;
-       ON = 1;
-       SHUTDOWN_PREPARE = 2;
-       WAIT_FOR_FINISH = 3;
-       SUSPEND = 4;
-       SIMULATE_SLEEP = 5;
-    }
-    optional State state = 1;
-}
-
-/**
- * Logs when Car User Hal is requested to switch/create/remove user.
- *
- * Logged from:
- *   packages/services/Car/service/src/com/android/car/hal/UserHalService.java
- */
-message CarUserHalModifyUserRequestReported {
-    // Request id for the request.
-    optional int32 request_id = 1;
-    // Request type.
-    enum RequestType {
-        UNKNOWN = 0;
-        // Car user manager requested user switch.
-        SWITCH_REQUEST_ANDROID = 1;
-        // OEM requested User switch.
-        SWITCH_REQUEST_OEM = 2;
-        // Hal switch requested after android switch using activity manager.
-        SWITCH_REQUEST_LEGACY = 3;
-        // Create User
-        CREATE_REQUEST = 4;
-        // Remove User
-        REMOVE_REQUEST = 5;
-    }
-    optional RequestType request_type = 2;
-    // Android User id of the current user which can only be 0, 10, 11 and so on.
-    // -1 if not available.
-    optional int32 user_id = 3;
-    // VHAL flags of the current user. (-1 if not available)
-    optional int32 user_flags = 4;
-    // Android User id of the target user for switch/create/remove. It can only
-    // be 0, 10, 11 and so on. -1 if not available.
-    optional int32 target_user_id = 5;
-    // VHAL flags of the target user for switch/create/remove. (-1 if not available)
-    optional int32 target_user_flags = 6;
-    // Request timeout Milliseconds (-1 if not available)
-    optional int32 timeout_millis = 7;
-}
-
-/**
- * Logs when Car User Hal responds to switch/create user request.
- *
- * Logged from:
- *   packages/services/Car/service/src/com/android/car/hal/UserHalService.java
- */
-message CarUserHalModifyUserResponseReported {
-    // Request id of the request associated with the response.
-    optional int32 request_id = 1;
-    // Car user hal callback status.
-    enum CallbackStatus {
-        UNKNOWN = 0;
-        // Hal response was invalid.
-        INVALID = 1;
-        // Hal response was ok.
-        OK = 2;
-        // Hal timeout during set call.
-        HAL_SET_TIMEOUT = 3;
-        // Hal response timeout.
-        HAL_RESPONSE_TIMEOUT = 4;
-        // Hal responded with wrong info.
-        WRONG_HAL_RESPONSE = 5;
-        // Hal is processing multiple requests simultaneously.
-        CONCURRENT_OPERATION = 6;
-    }
-    optional CallbackStatus callback_status = 2;
-
-    // Hal request status for user switch/create/remove.
-    enum HalRequestStatus {
-        UNSPECIFIED = 0;
-        // Hal request for user switch/create is successful.
-        SUCCESS = 1;
-        // Hal request for user switch/create failed.
-        FAILURE = 2;
-    }
-    optional HalRequestStatus request_status = 3;
-}
-
-/**
- * Logs when post switch response is posted to Car User Hal.
- *
- * Logged from:
- *   packages/services/Car/service/src/com/android/car/hal/UserHalService.java
- */
-message CarUserHalPostSwitchResponseReported {
-    // Request id.
-    optional int32 request_id = 1;
-
-    // Android user switch status.
-    enum UserSwitchStatus {
-        UNKNOWN = 0;
-        // Android user switch is successful.
-        SUCCESS = 1;
-        // Android user switch failed.
-        FAILURE = 2;
-    }
-    optional UserSwitchStatus switch_status = 2;
-}
-
-/**
- * Logs when initial user information is requested from Car User Hal.
- *
- * Logged from:
- *   packages/services/Car/service/src/com/android/car/hal/UserHalService.java
- */
-message CarUserHalInitialUserInfoRequestReported {
-    // Request id for the request.
-    optional int32 request_id = 1;
-
-    // Request type for initial user information.
-    enum InitialUserInfoRequestType {
-        UNKNOWN = 0;
-        // At the first time Android was booted (or after a factory reset).
-        FIRST_BOOT = 1;
-        // At the first time Android was booted after the system was updated.
-        FIRST_BOOT_AFTER_OTA = 2;
-        // When Android was booted "from scratch".
-        COLD_BOOT = 3;
-        // When Android was resumed after the system was suspended to memory.
-        RESUME = 4;
-    }
-    optional InitialUserInfoRequestType request_type = 2;
-    // Request timeout Milliseconds (-1 if not available)
-    optional int32 timeout_millis = 3;
-}
-
-/**
- * Logs when Car User Hal responds to initial user information requests.
- *
- * Logged from:
- *   packages/services/Car/service/src/com/android/car/hal/UserHalService.java
- */
-message CarUserHalInitialUserInfoResponseReported {
-    // Request id of the request associated with the response.
-    optional int32 request_id = 1;
-    // Car user hal callback status.
-    enum CallbackStatus {
-        UNKNOWN = 0;
-        // Hal response was invalid.
-        INVALID = 1;
-        // Hal response was ok.
-        OK = 2;
-        // Hal timeout during set call.
-        HAL_SET_TIMEOUT = 3;
-        // Hal response timeout.
-        HAL_RESPONSE_TIMEOUT = 4;
-        // Hal responded with wrong info.
-        WRONG_HAL_RESPONSE = 5;
-        // Hal is processing multiple requests simultaneously.
-        CONCURRENT_OPERATION = 6;
-    }
-    optional CallbackStatus callback_status = 2;
-    // Response for initial user information request.
-    enum InitialUserInfoResponseAction {
-        UNSPECIFIED = 0;
-        // Let the Android System decide what to do.
-        DEFAULT = 1;
-        // Switch to an existing Android user.
-        SWITCH = 2;
-        // Create a new Android user (and switch to it).
-        CREATE = 3;
-    }
-    optional InitialUserInfoResponseAction response_action = 3;
-    // Android User id of the target user which can only be 0, 10, 11 and so on.
-    // -1 if not available.
-    optional int32 target_user = 4;
-    // VHAL flags of the current user. (-1 if not available)
-    optional int32 target_user_flags = 5;
-    // User locales
-    optional string user_locales = 6;
-}
-
-/**
- * Logs when set user association is requested from Car User Hal.
- *
- * Logged from:
- *   packages/services/Car/service/src/com/android/car/hal/UserHalService.java
- */
-message CarUserHalUserAssociationRequestReported {
-    // Request id for the request.
-    optional int32 request_id = 1;
-    // Request type.
-    enum RequestType {
-        UNKNOWN = 0;
-        // For setting user association information.
-        SET = 1;
-        // For getting user association information.
-        GET = 2;
-    }
-    optional RequestType request_type = 2;
-    // Android User id of the current user which can only be 0, 10, 11 and so on.
-    // -1 if not available.
-    optional int32 current_user_id = 3;
-    // VHAL flags of the current user. (-1 if not available)
-    optional int32 current_user_flags = 4;
-    // Number of the set associations requested.
-    optional int32 number_associations = 5;
-    // Concatenated string for the types from set associations request.
-    // This is a string converted from an array of integers.
-    optional string user_identification_association_types = 6;
-    // Concatenated string for the values from set associations request.
-    // This is a string converted from an array of integers.
-    optional string user_identification_association_values = 7;
-}
-
-/**
- * Logs when Car User Hal responds to set user association requests.
- *
- * Logged from:
- *   packages/services/Car/service/src/com/android/car/hal/UserHalService.java
- */
-message CarUserHalSetUserAssociationResponseReported {
-    // Request id of the request associated with the response.
-    optional int32 request_id = 1;
-    // Car user hal callback status.
-    enum CallbackStatus {
-        UNKNOWN = 0;
-        // Hal response was invalid.
-        INVALID = 1;
-        // Hal response was ok.
-        OK = 2;
-        // Hal timeout during set call.
-        HAL_SET_TIMEOUT = 3;
-        // Hal response timeout.
-        HAL_RESPONSE_TIMEOUT = 4;
-        // Hal responded with wrong info.
-        WRONG_HAL_RESPONSE = 5;
-        // Hal is processing multiple requests simultaneously.
-        CONCURRENT_OPERATION = 6;
-    }
-    optional CallbackStatus callback_status = 2;
-    // Number of the set associations in the response.
-    optional int32 number_associations = 3;
-    // Concatenated string for the types from set associations request.
-    // This is a string converted from an array of integers.
-    optional string user_identification_association_types = 4;
-    // Concatenated string for the values from set associations request.
-    // This is a string converted from an array of integers.
-    optional string user_identification_association_values = 5;
-}
-
-/**
- * Logs whether GarageMode is entered.
- *
- * Logged from:
- *   packages/services/Car/service/src/com/android/car/CarStatsLog.java
- */
-message GarageModeInfo {
-    // Whether GarageMode is entered.
-    optional bool is_garage_mode = 1;
-}
-
-/**
- * Historical app ops data per package.
- */
-message AppOps {
-    // Uid of the package requesting the op
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // Name of the package performing the op
-    optional string package_name = 2;
-
-    // operation id
-    optional android.app.AppOpEnum op_id = 3 [default = APP_OP_NONE];
-
-    // The number of times the op was granted while the app was in the
-    // foreground (only for trusted requests)
-    optional int64 trusted_foreground_granted_count = 4;
-
-    // The number of times the op was granted while the app was in the
-    // background (only for trusted requests)
-    optional int64 trusted_background_granted_count = 5;
-
-    // The number of times the op was rejected while the app was in the
-    // foreground (only for trusted requests)
-    optional int64 trusted_foreground_rejected_count = 6;
-
-    // The number of times the op was rejected while the app was in the
-    // background (only for trusted requests)
-    optional int64 trusted_background_rejected_count = 7;
-
-    // For long-running operations, total duration of the operation
-    // while the app was in the foreground (only for trusted requests)
-    optional int64 trusted_foreground_duration_millis = 8;
-
-    // For long-running operations, total duration of the operation
-    // while the app was in the background (only for trusted requests)
-    optional int64 trusted_background_duration_millis = 9;
-
-    // Whether AppOps is guarded by Runtime permission
-    optional bool is_runtime_permission = 10;
-}
-
-/**
- * Historical app ops data per package and attribution tag.
- */
-message AttributedAppOps {
-    // Uid of the package requesting the op
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // Name of the package performing the op
-    optional string package_name = 2;
-
-    // tag; provided by developer when accessing related API, limited at 50 chars by API.
-    // Attributions must be provided through manifest using <attribution> tag available in R and
-    // above.
-    optional string tag = 3;
-
-    // operation id
-    optional android.app.AppOpEnum op = 4 [default = APP_OP_NONE];
-
-    // The number of times the op was granted while the app was in the
-    // foreground (only for trusted requests)
-    optional int64 trusted_foreground_granted_count = 5;
-
-    // The number of times the op was granted while the app was in the
-    // background (only for trusted requests)
-    optional int64 trusted_background_granted_count = 6;
-
-    // The number of times the op was rejected while the app was in the
-    // foreground (only for trusted requests)
-    optional int64 trusted_foreground_rejected_count = 7;
-
-    // The number of times the op was rejected while the app was in the
-    // background (only for trusted requests)
-    optional int64 trusted_background_rejected_count = 8;
-
-    // For long-running operations, total duration of the operation
-    // while the app was in the foreground (only for trusted requests)
-    optional int64 trusted_foreground_duration_millis = 9;
-
-    // For long-running operations, total duration of the operation
-    // while the app was in the background (only for trusted requests)
-    optional int64 trusted_background_duration_millis = 10;
-
-    // Whether AppOps is guarded by Runtime permission
-    optional bool is_runtime_permission = 11;
-
-    // Sampling rate used on device, from 0 to 100
-    optional int32 sampling_rate = 12;
-}
-
-/**
- * Location Manager API Usage information(e.g. API under usage,
- * API call's parameters).
- * Logged from:
- *  frameworks/base/services/core/java/com/android/server/LocationManagerService.java
- */
-message LocationManagerApiUsageReported {
-
-    // Indicating if usage starts or usage ends.
-    optional android.stats.location.UsageState state = 1;
-
-    // LocationManagerService's API in use.
-    // We can identify which API from LocationManager is
-    // invoking current LMS API by the combination of
-    // API parameter(e.g. is_listener_null, is_intent_null,
-    // is_location_request_null)
-    optional android.stats.location.LocationManagerServiceApi api_in_use = 2;
-
-    // Name of the package calling the API.
-    optional string calling_package_name = 3;
-
-    // Type of the location provider.
-    optional android.stats.location.ProviderType provider = 4;
-
-    // Quality of the location request
-    optional android.stats.location.LocationRequestQuality quality = 5;
-
-    // The desired interval for active location updates, in milliseconds.
-    // Bucketized to reduce cardinality.
-    optional android.stats.location.LocationRequestIntervalBucket bucketized_interval = 6;
-
-    // Minimum distance between location updates, in meters.
-    // Bucketized to reduce cardinality.
-    optional android.stats.location.SmallestDisplacementBucket
-            bucketized_smallest_displacement = 7;
-
-    // The number of location updates.
-    optional int64 num_updates = 8;
-
-    // The request expiration time, in millisecond since boot.
-    // Bucketized to reduce cardinality.
-    optional android.stats.location.ExpirationBucket
-            bucketized_expire_in = 9;
-
-    // Type of Callback passed in for this API.
-    optional android.stats.location.CallbackType callback_type = 10;
-
-    // The radius of the central point of the alert
-    // region, in meters. Only for API REQUEST_GEOFENCE.
-    // Bucketized to reduce cardinality.
-    optional android.stats.location.GeofenceRadiusBucket bucketized_radius = 11;
-
-    // Activity Importance of API caller.
-    // Categorized to 3 types that are interesting from location's perspective.
-    optional android.stats.location.ActivityImportance activiy_importance = 12;
-}
-
-/**
- * Information about a permission grant or denial made by user inside ReviewPermissionsFragment
- */
-message ReviewPermissionsFragmentResultReported {
-    // unique value identifying a permission group change. A permission group change might result
-    // in multiple of these atoms
-    optional int64 change_id = 1;
-
-    // UID of package the permission belongs to
-    optional int32 uid = 2 [(is_uid) = true];
-
-    // Name of package the permission belongs to
-    optional string package_name = 3;
-
-    // The permission to be granted
-    optional string permission_name = 4;
-
-    // The result of the permission grant
-    optional bool permission_granted = 5;
-}
-
-/**
-* Information about results of permission upgrade by RuntimePermissionsUpgradeController
-* Logged from: RuntimePermissionUpdgradeController
-*/
-message RuntimePermissionsUpgradeResult {
-    // Permission granted as result of upgrade
-    optional string permission_name = 1;
-
-    // UID of package granted permission
-    optional int32 uid = 2 [(is_uid) = true];
-
-    // Name of package granted permission
-    optional string package_name = 3;
-}
-
-/**
-* Information about a buttons presented in GrantPermissionsActivty and choice made by user
-*/
-message GrantPermissionsActivityButtonActions {
-    // Permission granted as result of upgrade
-    optional string permission_group_name = 1;
-
-    // UID of package granted permission
-    optional int32 uid = 2 [(is_uid) = true];
-
-    // Name of package requesting permission
-    optional string package_name = 3;
-
-    // Buttons presented in the dialog - bit flags, bit numbers are in accordance with
-    // LABEL_ constants in GrantPermissionActivity.java
-    optional int32 buttons_presented = 4;
-
-    // Button clicked by user - same as bit flags in buttons_presented with only single bit set
-    optional int32 button_clicked = 5;
-
-    // id which identifies single session of user interacting with permission controller
-    optional int64 session_id = 6;
-}
-
-/**
- * Information about LocationAccessCheck notification presented to user
- */
-message LocationAccessCheckNotificationAction {
-
-    // id which identifies single session of user interacting with permission controller
-    optional int64 session_id = 1;
-
-    // Uid of package for which location access check is presented
-    optional int32 package_uid = 2;
-
-    // Name of package for which location access check is presented
-    optional string package_name = 3;
-
-    enum Result {
-        UNDEFINED = 0;
-        // notification was presented to the user
-        NOTIFICATION_PRESENTED = 1;
-        // notification was declined by the user
-        NOTIFICATION_DECLINED = 2;
-        // notification was clicked by the user
-        NOTIFICATION_CLICKED = 3;
-    }
-
-    // View / interaction recorded
-    optional Result result = 4;
-}
-
-/**
- * Information about a permission grant or revoke made by user inside AppPermissionFragment
- */
-message AppPermissionFragmentActionReported {
-    // id which identifies single session of user interacting with permission controller
-    optional int64 session_id = 1;
-
-    // unique value identifying a permission group change. A permission group change might result
-    // in multiple of these atoms
-    optional int64 change_id = 2;
-
-    // UID of package the permission belongs to
-    optional int32 uid = 3 [(is_uid) = true];
-
-    // Name of package the permission belongs to
-    optional string package_name = 4;
-
-    // The permission to be granted
-    optional string permission_name = 5;
-
-    // The result of the permission grant
-    optional bool permission_granted = 6;
-
-    // State of Permission Flags after grant as per android.content.pm.PermissionFlags
-    optional int32 permission_flags = 7;
-
-    enum Button {
-        UNDEFINED = 0;
-        // Allow button
-        ALLOW = 1;
-        // Deny button
-        DENY = 2;
-        // Ask every time button
-        ASK_EVERY_TIME = 3;
-        // Allow all the time button
-        ALLOW_ALWAYS = 4;
-        // Allow only while using the app button
-        ALLOW_FOREGROUND = 5;
-        // Same is Deny button but shown in while in use dialog
-        DENY_FOREGROUND = 6;
-    }
-
-    // Button pressed in the dialog
-    optional Button button_pressed = 8;
-}
-
-/**
-* Information about a AppPermissionFragment viewed by user
-*/
-message AppPermissionFragmentViewed {
-    // id which identifies single session of user interacting with permission controller
-    optional int64 session_id = 1;
-
-    // UID of package for which permissions are viewed
-    optional int32 uid = 2 [(is_uid) = true];
-
-    // Name of package for which permissions are viewed
-    optional string package_name = 3;
-
-    // Permission group viewed
-    optional string permission_group_name = 4;
-}
-
-/**
-* Information about a AppPermissionGroupsFragment viewed by user. Fragment has been renamed, but
-* the log retains the old fragment name.
-*/
-message AppPermissionsFragmentViewed {
-    // id which identifies single session of user interacting with permission controller
-    optional int64 session_id = 1;
-
-    // id which identifies single view as every view might have several logging records
-    // with different package information attached
-    optional int64 view_id = 2;
-
-    // Permission group viewed
-    optional string permission_group_name = 3;
-
-    // UID of package for which permissions are viewed
-    optional int32 uid = 4 [(is_uid) = true];
-
-    // Name of package for which permissions are viewed
-    optional string package_name = 5;
-
-    // Category in which permission is included
-    enum Category {
-      UNDEFINED = 0;
-      ALLOWED = 1;
-      ALLOWED_FOREGROUND = 2;
-      DENIED = 3;
-    }
-    optional Category category = 6;
-}
-/**
-* Information about a PermissionAppsFragment viewed by user.
-* Logged from ui/handheld/PermissionAppsFragment.java
-*/
-message PermissionAppsFragmentViewed {
-    // id which identifies single session of user interacting with permission controller
-    optional int64 session_id = 1;
-
-    // id which identifies single view as every view might have several logging records
-    // with different package information attached
-    optional int64 view_id = 2;
-
-    // Permission group viewed
-    optional string permission_group_name = 3;
-
-    // UID of package for which permissions are viewed
-    optional int32 uid = 4 [(is_uid) = true];
-
-    // Name of package for which permissions are viewed
-    optional string package_name = 5;
-
-    // Category in which app is included
-    enum Category {
-        UNDEFINED = 0;
-        ALLOWED = 1;
-        ALLOWED_FOREGROUND = 2;
-        DENIED = 3;
-    }
-    optional Category category = 6;
-}
-
-/**
-* Log that the Auto Revoke notification has been clicked
-* Logged from ui/ManagePermissionsActivity
-*/
-message AutoRevokeNotificationClicked {
-    // id which identifies single session of user interacting with permission controller
-    optional int64 session_id = 1;
-}
-
-/**
-* Log that an app has been displayed on the auto revoke page, and lists one permission that was
-* auto revoked for it.
-* Logged from ui/handheld/AutoRevokeFragment
-*/
-message AutoRevokeFragmentAppViewed {
-    // id which identifies single session of user interacting with permission controller
-    optional int64 session_id = 1;
-
-    // UID of package for which permissions are viewed
-    optional int32 uid = 2 [(is_uid) = true];
-
-    // Name of package for which permissions are viewed
-    optional string package_name = 3;
-
-    // The name of a permission group that has been revoked
-    optional string permission_group_name = 4;
-
-    // The age of the app- more than three months old, or more than six months
-    enum Age {
-        UNDEFINED = 0;
-        NEWER_BUCKET = 1;
-        OLDER_BUCKET = 2;
-    }
-
-    // How long the app has been unused. Currently, newer bucket is 3 months, older is 6 months
-    optional Age age = 5;
-}
-
-/**
-* Log that the user has interacted with an app on the auto revoke fragment
-* Logged from ui/handheld/AutoRevokeFragment
-*/
-message AutoRevokedAppInteraction {
-    // id which identifies single session of user interacting with permission controller
-    optional int64 session_id = 1;
-
-    // UID of package for which permissions are viewed
-    optional int32 uid = 2 [(is_uid) = true];
-
-    // Name of package for which permissions are viewed
-    optional string package_name = 3;
-
-    enum Action {
-        UNDEFINED = 0;
-        REMOVE = 1;
-        OPEN = 2;
-        APP_INFO = 3;
-        PERMISSIONS = 4;
-        REMOVE_IN_SETTINGS = 5;
-        OPEN_IN_SETTINGS = 6;
-    }
-
-    // The action the user took to interact with the app
-    optional Action action = 4;
-}
-
-/**
-* Log that the AppPermissionGroupsFragment has been interacted with for the possible purposes of
-* auto revoke, or that the auto revoke switch has been changed
-* Logged from ui/handheld/AppPermissionGroupsFragment
- */
-message AppPermissionGroupsFragmentAutoRevokeAction {
-    // id which identifies single session of user interacting with permission controller
-    optional int64 session_id = 1;
-
-    // UID of package for which permissions are viewed
-    optional int32 uid = 2 [(is_uid) = true];
-
-    // Name of package for which permissions are viewed
-    optional string package_name = 3;
-
-    enum Action {
-        UNDEFINED = 0;
-        OPENED_FOR_AUTO_REVOKE = 1;
-        OPENED_FROM_INTENT = 2;
-        SWITCH_ENABLED = 3;
-        SWITCH_DISABLED = 4;
-    }
-
-    // The action the user took to interact with the fragment
-    optional Action action = 4;
-}
-
-/**
- * Logs when there is a smart selection related event.
- * See frameworks/base/core/java/android/view/textclassifier/TextClassifierEvent.java
- * Logged from: TextClassifierEventLogger.java
- */
-message TextSelectionEvent {
-    // A session ID.
-    optional string session_id = 1;
-
-    // Event type of this event.
-    optional android.stats.textclassifier.EventType event_type = 2;
-
-    // Name of the annotator model that is involved in this event.
-    optional string model_name = 3;
-
-    // Type of widget that was involved in triggering this event.
-    optional android.stats.textclassifier.WidgetType widget_type = 4;
-
-    // Index of this event in a session.
-    optional int32 event_index = 5;
-
-    // Entity type that is involved.
-    optional string entity_type = 6;
-
-    // Relative word index of the start of the selection.
-    optional int32 relative_word_start_index = 7;
-
-    // Relative word (exclusive) index of the end of the selection.
-    optional int32 relative_word_end_index = 8;
-
-    // Relative word index of the start of the smart selection.
-    optional int32 relative_suggested_word_start_index = 9;
-
-    // Relative word (exclusive) index of the end of the smart selection.
-    optional int32 relative_suggested_word_end_index = 10;
-
-    // Name of source package.
-    optional string package_name = 11;
-
-    // Name of the LangID model that is involved in this event.
-    optional string langid_model_name = 12;
-}
-
-/**
- * Logs when there is a smart linkify related event.
- * See frameworks/base/core/java/android/view/textclassifier/TextClassifierEvent.java
- * Logged from: TextClassifierEventLogger.java
- */
-message TextLinkifyEvent {
-    // A session ID.
-    optional string session_id = 1;
-
-    // Event type of this event.
-    optional android.stats.textclassifier.EventType event_type = 2;
-
-    // Name of the annotator model that is involved in this event.
-    optional string model_name = 3;
-
-    // Type of widget that was involved in triggering this event.
-    optional android.stats.textclassifier.WidgetType widget_type = 4;
-
-    // Index of this event in a session.
-    optional int32 event_index = 5;
-
-    // Entity type that is involved.
-    optional string entity_type = 6;
-
-    // Number of links detected.
-    optional int32 num_links = 7;
-
-    // The total length of all links.
-    optional int32 linked_text_length = 8;
-
-    // Length of input text.
-    optional int32 text_length = 9;
-
-    // Time spent on generating links in ms.
-    optional int64 latency_millis = 10;
-
-    // Name of source package.
-    optional string package_name = 11;
-
-    // Name of the LangID model that is involved in this event.
-    optional string langid_model_name = 12;
-}
-
-/**
- * Logs when there is a conversation actions related event.
- * See frameworks/base/core/java/android/view/textclassifier/TextClassifierEvent.java
- * Logged from: TextClassifierEventLogger.java
- */
-message ConversationActionsEvent {
-    // A session ID.
-    optional string session_id = 1;
-
-    // Event type of this event.
-    optional android.stats.textclassifier.EventType event_type = 2;
-
-    // Name of the actions model that is involved in this event.
-    optional string model_name = 3;
-
-    // Type of widget that was involved in triggering this event.
-    optional android.stats.textclassifier.WidgetType widget_type = 4;
-
-    // The first entity type that is involved.
-    optional string first_entity_type = 5;
-
-    // The second entity type that is involved.
-    optional string second_entity_type = 6;
-
-    // The third entity type that is involved.
-    optional string third_entity_type = 7;
-
-    // The score of the first entity type.
-    optional float score = 8;
-
-    // Name of source package.
-    optional string package_name = 9;
-
-    // Name of the annotator model that is involved in this event.
-    optional string annotator_model_name = 10;
-
-    // Name of the LangID model that is involved in this event.
-    optional string langid_model_name = 11;
-}
-
-/**
- * Logs when there is a language detection related event.
- * See frameworks/base/core/java/android/view/textclassifier/TextClassifierEvent.java
- * Logged from: TextClassifierEventLogger.java
- */
-message LanguageDetectionEvent {
-    // A session ID.
-    optional string session_id = 1;
-
-    // Event type of this event.
-    optional android.stats.textclassifier.EventType event_type = 2;
-
-    // Name of the language detection model that is involved in this event.
-    optional string model_name = 3;
-
-    // Type of widget that was involved in triggering this event.
-    optional android.stats.textclassifier.WidgetType widget_type = 4;
-
-    // Detected language.
-    optional string language_tag = 5;
-
-    // Score of the detected language.
-    optional float score = 6;
-
-    // Position of this action.
-    optional int32 action_index = 7;
-
-    // Name of source package.
-    optional string package_name = 8;
-}
-
-/**
- * Information about an OTA update attempt by update_engine.
- * Logged from platform/system/update_engine/metrics_reporter_android.cc
- */
-message UpdateEngineUpdateAttemptReported {
-    // The number of attempts for the update engine to apply a given payload.
-    optional int32 attempt_number = 1;
-
-    optional android.stats.otaupdate.PayloadType payload_type = 2;
-
-    // The total time in minutes for the update engine to apply a given payload.
-    // The time is calculated by calling clock_gettime() / CLOCK_BOOTTIME; and
-    // it's increased when the system is sleeping.
-    optional int32 duration_boottime_in_minutes = 3;
-
-    // The total time in minutes for the update engine to apply a given payload.
-    // The time is calculated by calling clock_gettime() / CLOCK_MONOTONIC_RAW;
-    // and it's not increased when the system is sleeping.
-    optional int32 duration_monotonic_in_minutes = 4;
-
-    // The size of the payload in MiBs.
-    optional int32 payload_size_mib = 5;
-
-    // The attempt result reported by the update engine for an OTA update.
-    optional android.stats.otaupdate.AttemptResult attempt_result = 6;
-
-    // The error code reported by the update engine after an OTA update attempt
-    // on A/B devices.
-    optional android.stats.otaupdate.ErrorCode error_code = 7;
-
-    // The build fingerprint of the source system. The value is read from a
-    // system property when the device takes the update. e.g.
-    // Android/aosp_sailfish/sailfish:10/QP1A.190425.004/5507117:userdebug/test-keys
-    optional string source_fingerprint = 8;
-
-    // Size of super partition.
-    optional int64 super_partition_size_bytes = 9;
-
-    // Size of current slot within the super partition.
-    optional int64 slot_size_bytes = 10;
-
-    // Free space available in the super partition.
-    optional int64 super_free_space_bytes = 11;
-}
-
-/**
- * Information about all the attempts the device make before finishing the
- * successful update.
- * Logged from platform/system/update_engine/metrics_reporter_android.cc
- */
-message UpdateEngineSuccessfulUpdateReported {
-    // The number of attempts for the update engine to apply the payload for a
-    // successful update.
-    optional int32 attempt_count = 1;
-
-    optional android.stats.otaupdate.PayloadType payload_type = 2;
-
-    optional int32 payload_size_mib = 3;
-
-    // The total number of bytes downloaded by update_engine since the last
-    // successful update.
-    optional int32 total_bytes_downloaded_mib = 4;
-
-    // The ratio in percentage of the over-downloaded bytes compared to the
-    // total bytes needed to successfully install the update. e.g. 200 if we
-    // download 200MiB in total for a 100MiB package.
-    optional int32 download_overhead_percentage = 5;
-
-    // The total time in minutes for the update engine to apply the payload for a
-    // successful update.
-    optional int32 total_duration_minutes = 6;
-
-    // The number of reboot of the device during a successful update.
-    optional int32 reboot_count = 7;
-}
-
-/**
- * Reported when the RebootEscrow HAL has attempted to recover the escrowed
- * key to indicate whether it was successful or not.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/locksettings/RebootEscrowManager.java
- */
-message RebootEscrowRecoveryReported {
-    optional bool successful = 1;
-}
-
-/**
- * Global display pipeline metrics reported by SurfaceFlinger.
- * Pulled from:
- *    frameworks/native/services/surfaceflinger/TimeStats/TimeStats.cpp
- */
-message SurfaceflingerStatsGlobalInfo {
-    // Total number of frames presented during the tracing period
-    optional int64 total_frames = 1;
-    // Total number of frames missed
-    optional int64 missed_frames = 2;
-    // Total number of frames that fell back to client composition
-    optional int64 client_composition_frames = 3;
-    // Total time the display was turned on
-    optional int64 display_on_millis = 4;
-    // Total time that was spent performing animations.
-    // This is derived from the present-to-present layer histogram
-    optional int64 animation_millis = 5;
-    // Total number of event connections tracked by SurfaceFlinger at the time
-    // of this pull. If this number grows prohibitively large, then this can
-    // cause jank due to resource contention.
-    optional int32 event_connection_count = 6;
-    // Set of timings measured from when SurfaceFlinger began compositing a
-    // frame, until the frame was requested to be presented to the display. This
-    // measures SurfaceFlinger's total CPU walltime on the critical path per
-    // frame.
-    optional FrameTimingHistogram frame_duration = 7
-        [(android.os.statsd.log_mode) = MODE_BYTES];
-    // Set of timings measured from when SurfaceFlinger first began using the
-    // GPU to composite a frame, until the GPU has finished compositing that
-    // frame. This measures the total additional time SurfaceFlinger needed to
-    // perform due to falling back into GPU composition.
-    optional FrameTimingHistogram render_engine_timing = 8
-        [(android.os.statsd.log_mode) = MODE_BYTES];
-}
-
-/**
- * Per-layer display pipeline metrics reported by SurfaceFlinger.
- * The number of layers uploaded will be restricted due to size limitations.
- * Pulled from:
- *    frameworks/native/services/surfaceflinger/TimeStats/TimeStats.cpp
- */
-message SurfaceflingerStatsLayerInfo {
-    // The layer for this set of metrics
-    // For now we can infer that the package name is included in the layer
-    // name.
-    optional string layer_name = 1;
-    // Total number of frames presented
-    optional int64 total_frames = 2;
-    // Total number of dropped frames while latching a buffer for this layer.
-    optional int64 dropped_frames = 3;
-    // Set of timings measured between successive presentation timestamps.
-    optional FrameTimingHistogram present_to_present = 4
-        [(android.os.statsd.log_mode) = MODE_BYTES];
-    // Set of timings measured from when an app queued a buffer for
-    // presentation, until the buffer was actually presented to the
-    // display.
-    optional FrameTimingHistogram post_to_present = 5
-        [(android.os.statsd.log_mode) = MODE_BYTES];
-    // Set of timings measured from when a buffer is ready to be presented,
-    // until the buffer was actually presented to the display.
-    optional FrameTimingHistogram acquire_to_present = 6
-        [(android.os.statsd.log_mode) = MODE_BYTES];
-    // Set of timings measured from when a buffer was latched by
-    // SurfaceFlinger, until the buffer was presented to the display
-    optional FrameTimingHistogram latch_to_present = 7
-        [(android.os.statsd.log_mode) = MODE_BYTES];
-    // Set of timings measured from the desired presentation to the actual
-    // presentation time
-    optional FrameTimingHistogram desired_to_present = 8
-        [(android.os.statsd.log_mode) = MODE_BYTES];
-    // Set of timings measured from when an app queued a buffer for
-    // presentation, until the buffer was ready to be presented.
-    optional FrameTimingHistogram post_to_acquire = 9
-        [(android.os.statsd.log_mode) = MODE_BYTES];
-    // Frames missed latch because the acquire fence didn't fire
-    optional int64 late_acquire_frames = 10;
-    // Frames latched early because the desired present time was bad
-    optional int64 bad_desired_present_frames = 11;
-}
-
-/**
- * Histogram of frame counts bucketed by time in milliseconds.
- * Because of size limitations, we hard-cap the number of buckets, with
- * buckets for corresponding to larger milliseconds being less precise.
- */
-message FrameTimingHistogram {
-    // Timings in milliseconds that describes a set of histogram buckets
-    repeated int32 time_millis_buckets = 1;
-    // Number of frames that match to each time_millis, i.e. the bucket
-    // contents
-    // It's required that len(time_millis) == len(frame_count)
-    repeated int64 frame_counts = 2;
-}
-
-/**
- * Janky event as reported by SurfaceFlinger.
- * This event is intended to be consumed by a Perfetto subscriber for
- * automated trace collection.
- *
- * Logged from:
- *    frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
- */
-message DisplayJankReported {
-    // Informational field for how long the janky event lasted in milliseconds
-    optional int64 event_duration_millis = 1;
-    // Number of frame deadlines missed, where SurfaceFlinger failed to update
-    // the display on time.
-    optional int32 present_deadlines_missed = 2;
-}
-
-/**
- * Information about camera facing and API level usage.
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/camera/CameraServiceProxy.java
- */
-message CameraActionEvent {
-    // Camera session duration
-    optional int64 duration_millis = 1;
-
-    // Camera API level used
-    optional int32 api_level = 2;
-
-    // Name of client package
-    optional string package_name = 3;
-
-    // Camera facing
-    enum Facing {
-        UNKNOWN = 0;
-        BACK = 1;
-        FRONT = 2;
-        EXTERNAL = 3;
-    }
-    optional Facing facing = 4;
-}
-
-/**
- * Logs when a compatibility change is affecting an app.
- *
- * Logged from:
- *   frameworks/base/core/java/android/app/AppCompatCallbacks.java and
- *   frameworks/base/services/core/java/com/android/server/compat/PlatformCompat.java
- */
-message AppCompatibilityChangeReported {
-    // The UID of the app being affected by the compatibilty change.
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // The ID of the change affecting the app.
-    optional int64 change_id = 2;
-
-    enum State {
-        UNKNOWN_STATE = 0;
-        ENABLED = 1;
-        DISABLED = 2;
-        LOGGED = 3;
-    }
-
-    // The state of the change - if logged from gating whether it was enabled or disabled, or just
-    // logged otherwise.
-    optional State state = 3;
-
-    enum Source {
-        UNKNOWN_SOURCE = 0;
-        APP_PROCESS = 1;
-        SYSTEM_SERVER = 2;
-    }
-
-    // Where it was logged from.
-    optional Source source = 4;
-
-}
-
-/**
- * Logged from
- *     external/perfetto/src/perfetto_cmd/perfetto_cmd.cc
- */
-message PerfettoUploaded {
-    enum Event {
-        PERFETTO_UNDEFINED = 0;
-        PERFETTO_TRACE_BEGIN = 1;
-        PERFETTO_BACKGROUND_TRACE_BEGIN = 2;
-        PERFETTO_ON_CONNECT = 3;
-        PERFETTO_ON_TRACING_DISABLED = 4;
-        PERFETTO_UPLOAD_DROPBOX_BEGIN = 5;
-        PERFETTO_UPLOAD_DROPBOX_SUCCESS = 6;
-        PERFETTO_UPLOAD_DROPBOX_FAILURE = 7;
-        PERFETTO_UPLOAD_INCIDENT_BEGIN = 8;
-        PERFETTO_UPLOAD_INCIDENT_SUCCESS = 9;
-        PERFETTO_UPLOAD_INCIDENT_FAILURE = 10;
-        PERFETTO_FINALIZE_TRACE_AND_EXIT = 11;
-        PERFETTO_TRIGGER_BEGIN = 12;
-        PERFETTO_TRIGGER_SUCCESS = 13;
-        PERFETTO_TRIGGER_FAILURE = 14;
-        PERFETTO_HIT_GUARDRAILS = 15;
-        PERFETTO_ON_TIMEOUT = 16;
-        PERFETTO_NOT_UPLOADING_EMPTY_TRACE = 17;
-    }
-
-    // Which stage of the pipeline we are reporting from.
-    optional Event event = 1;
-
-    // UUID matching the one set inside the SystemInfo trace packet.
-    optional int64 trace_uuid_lsb = 2;
-    optional int64 trace_uuid_msb = 3;
-}
-
-/**
- * Pulls client metrics on data transferred via Vehicle Maps Service.
- * Metrics are keyed by uid + layer.
- *
- * Pulled from:
- *   packages/services/Car/service/src/com/android/car/stats/CarStatsService.java
- */
-message VmsClientStats {
-    // UID of the VMS client app
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // VMS layer definition
-    optional int32 layer_type = 2;
-    optional int32 layer_channel = 3;
-    optional int32 layer_version = 4;
-
-    // Bytes and packets sent by the client for the layer
-    optional int64 tx_bytes = 5;
-    optional int64 tx_packets = 6;
-
-    // Bytes and packets received by the client for the layer
-    optional int64 rx_bytes = 7;
-    optional int64 rx_packets = 8;
-
-    // Bytes and packets dropped due to client error
-    optional int64 dropped_bytes = 9;
-    optional int64 dropped_packets = 10;
-}
-
-/**
- * State of a dangerous permission requested by a package - sampled
- * Pulled from: StatsCompanionService.java with data obtained from PackageManager API
-*/
-message DangerousPermissionStateSampled {
-    // Name of the permission
-    optional string permission_name = 1;
-
-    // Uid of the package
-    optional int32 uid = 2 [(is_uid) = true];
-
-    // If the permission is granted to the uid
-    optional bool is_granted = 3;
-
-    // Permission flags as per android.content.pm.PermissionFlags
-    optional int32 permission_flags = 4;
-}
-
-/**
- * HWUI stats for a given app.
- */
-message GraphicsStats {
-    // The package name of the app
-    optional string package_name = 1;
-
-    // The version code of the app
-    optional int64 version_code = 2;
-
-    // The start & end timestamps in UTC as
-    // milliseconds since January 1, 1970
-    // Compatible with java.util.Date#setTime()
-    optional int64 start_millis = 3;
-
-    optional int64 end_millis = 4;
-
-    // HWUI renders pipeline type: GL (1) or Vulkan (2).
-    enum PipelineType {
-        UNKNOWN = 0;
-        GL = 1;
-        VULKAN = 2;
-    }
-
-    // HWUI renders pipeline type: GL or Vulkan.
-    optional PipelineType pipeline = 5;
-
-    // Distinct frame count.
-    optional int32 total_frames = 6;
-
-    // Number of "missed vsync" events.
-    optional int32 missed_vsync_count = 7;
-
-    // Number of frames in triple-buffering scenario (high input latency)
-    optional int32 high_input_latency_count = 8;
-
-    // Number of "slow UI thread" events.
-    optional int32 slow_ui_thread_count = 9;
-
-    // Number of "slow bitmap upload" events.
-    optional int32 slow_bitmap_upload_count = 10;
-
-    // Number of "slow draw" events.
-    optional int32 slow_draw_count = 11;
-
-    // Number of frames that missed their deadline (aka, visibly janked)
-    optional int32 missed_deadline_count = 12;
-
-    // The frame time histogram for the package
-    optional FrameTimingHistogram cpu_histogram = 13
-    [(android.os.statsd.log_mode) = MODE_BYTES];
-
-    // The gpu frame time histogram for the package
-    optional FrameTimingHistogram gpu_histogram = 14
-    [(android.os.statsd.log_mode) = MODE_BYTES];
-
-    // UI mainline module version.
-    optional int64 version_ui_module = 15;
-
-    // If true, these are HWUI stats for up to a 24h period for a given app from today.
-    // If false, these are HWUI stats for a 24h period for a given app from the last complete
-    // day (yesterday). Stats from yesterday stay constant, while stats from today may change as
-    // more apps are running / rendering.
-    optional bool is_today = 16;
-}
-
-/**
- * Message related to dangerous (runtime) app ops access
- */
-message RuntimeAppOpAccess {
-    // Uid of the package accessing app op
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // Name of the package accessing app op
-    optional string package_name = 2;
-
-    // deprecated - set to empty string
-    optional string op_deprecated = 3 [deprecated = true];
-
-    // attribution_tag; provided by developer when accessing related API, limited at 50 chars by
-    // API. Attributions must be provided through manifest using <attribution> tag available in R
-    // and above.
-    optional string attribution_tag = 4;
-
-    // message related to app op access, limited to 600 chars by API
-    optional string message = 5;
-
-    enum SamplingStrategy {
-        DEFAULT = 0;
-        UNIFORM = 1;
-        RARELY_USED = 2;
-        BOOT_TIME_SAMPLING = 3;
-        UNIFORM_OPS = 4;
-    }
-
-    // sampling strategy used to collect this message
-    optional SamplingStrategy sampling_strategy = 6;
-
-    // operation id
-    optional android.app.AppOpEnum op = 7 [default = APP_OP_NONE];
-}
-
-/*
- * Logs userspace reboot outcome and duration.
- *
- * Logged from:
- *   frameworks/base/core/java/com/android/server/BootReceiver.java
- */
-message UserspaceRebootReported {
-    // Possible outcomes of userspace reboot.
-    enum Outcome {
-        // Default value in case platform failed to determine the outcome.
-        OUTCOME_UNKNOWN = 0;
-        // Userspace reboot succeeded (i.e. boot completed without a fall back to hard reboot).
-        SUCCESS = 1;
-        // Userspace reboot shutdown sequence was aborted.
-        FAILED_SHUTDOWN_SEQUENCE_ABORTED = 2;
-        // Remounting userdata into checkpointing mode failed.
-        FAILED_USERDATA_REMOUNT = 3;
-        // Device didn't finish booting before timeout and userspace reboot watchdog issued a hard
-        // reboot.
-        FAILED_USERSPACE_REBOOT_WATCHDOG_TRIGGERED = 4;
-    }
-    // Outcome of userspace reboot. Always set.
-    optional Outcome outcome = 1;
-    // Duration of userspace reboot in case it has a successful outcome.
-    // Duration is measured as time between userspace reboot was initiated and until boot completed
-    // (e.g. sys.boot_completed=1).
-    optional int64 duration_millis = 2;
-    // State of primary user's (user0) credential encryption storage.
-    enum UserEncryptionState {
-        // Default value.
-        USER_ENCRYPTION_STATE_UNKNOWN = 0;
-        // Credential encrypted storage is unlocked.
-        UNLOCKED = 1;
-        // Credential encrypted storage is locked.
-        LOCKED = 2;
-    }
-    // State of primary user's encryption storage at the moment boot completed. Always set.
-    optional UserEncryptionState user_encryption_state = 3;
-}
-
-/*
- * Logs integrity check information during each install.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/integrity/AppIntegrityManagerServiceImpl.java
- */
-message IntegrityCheckResultReported {
-    optional string package_name = 1;
-    optional string app_certificate_hash = 2;
-    optional int64 version_code = 3;
-    optional string installer_package_name = 4;
-    enum Response {
-        UNKNOWN = 0;
-        ALLOWED = 1;
-        REJECTED = 2;
-        FORCE_ALLOWED = 3;
-    }
-    optional Response response = 5;
-    // An estimate on the cause of the response. This will only be populated for
-    // REJECTED and FORCE_ALLOWED
-    optional bool caused_by_app_cert_rule = 6;
-    optional bool caused_by_installer_rule = 7;
-}
-
-/**
- * Logs the information about the rules and the provider whenever rules are
- * pushed into AppIntegrityManager.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/integrity/AppIntegrityManagerServiceImpl.java
- */
-message IntegrityRulesPushed {
-    optional bool success = 1;
-    // Package name of the app that pushed the rules.
-    optional string rule_provider = 2;
-    // Version string of arbitrary format provided by the rule provider to
-    // identify the rules.
-    optional string rule_version = 3;
-}
-
-/**
- * Logs when a cell broadcast message is received on the device.
- *
- * Logged from Cell Broadcast module and platform:
- *   packages/modules/CellBroadcastService/src/com/android/cellbroadcastservice/
- *   packages/apps/CellBroadcastReceiver/
- *   frameworks/opt/telephony/src/java/com/android/internal/telephony/CellBroadcastServiceManager.java
- */
-message CellBroadcastMessageReported {
-    // The type of Cell Broadcast message
-    enum CbType {
-        UNKNOWN_TYPE = 0;
-        GSM = 1;
-        CDMA = 2;
-        CDMA_SPC = 3;
-    }
-
-    // The parts of the cell broadcast message pipeline
-    enum ReportSource {
-        UNKNOWN_SOURCE = 0;
-        FRAMEWORK = 1;
-        CB_SERVICE = 2;
-        CB_RECEIVER_APP = 3;
-    }
-
-    // GSM, CDMA, CDMA-SCP
-    optional CbType type = 1;
-
-    // The source of the report
-    optional ReportSource source = 2;
-}
-
-/**
- * Logs when a cell broadcast message is filtered out, or otherwise intentionally not sent to CBR.
- *
- * Logged from CellBroadcastService module:
- *   packages/modules/CellBroadcastService/src/com/android/cellbroadcastservice/
- */
-message CellBroadcastMessageFiltered {
-    enum FilterReason {
-        NOT_FILTERED = 0;
-        DUPLICATE_MESSAGE = 1;
-        GEOFENCED_MESSAGE = 2;
-        AREA_INFO_MESSAGE = 3;
-    }
-
-    // GSM, CDMA, CDMA-SCP
-    optional CellBroadcastMessageReported.CbType type = 1;
-
-    // The source of the report
-    optional FilterReason filter = 2;
-}
-
-/**
- * Logs when an error occurs while handling a cell broadcast message;
- *
- * Logged from CellBroadcastService module:
- *   packages/modules/CellBroadcastService/src/com/android/cellbroadcastservice/
- */
-message CellBroadcastMessageError {
-    // The type of error raised when trying to handle a cell broadcast message
-    enum ErrorType {
-        UNKNOWN_TYPE = 0;
-        CDMA_DECODING_ERROR = 1;
-        CDMA_SCP_EMPTY = 2;
-        CDMA_SCP_HANDLING_ERROR = 3;
-        GSM_INVALID_HEADER_LENGTH = 4;
-        GSM_UNSUPPORTED_HEADER_MESSAGE_TYPE = 5;
-        GSM_UNSUPPORTED_HEADER_DATA_CODING_SCHEME = 6;
-        GSM_INVALID_PDU = 7;
-        GSM_INVALID_GEO_FENCING_DATA = 8;
-        GSM_UMTS_INVALID_WAC = 9;
-        FAILED_TO_INSERT_TO_DB = 10;
-        UNEXPECTED_GEOMETRY_FROM_FWK = 11;
-        UNEXPECTED_GSM_MESSAGE_TYPE_FROM_FWK = 12;
-        UNEXPECTED_CDMA_MESSAGE_TYPE_FROM_FWK = 13;
-        UNEXPECTED_CDMA_SCP_MESSAGE_TYPE_FROM_FWK = 14;
-        NO_CONNECTION_TO_CB_SERVICE = 15;
-    }
-
-    // What kind of error occurred
-    optional ErrorType type = 1;
-
-    // Exception message (or log message) associated with the error (max 1000 chars)
-    optional string exception_message = 2;
-}
-
-/**
- * Logs when a tune occurs through device's Frontend.
- * This is atom ID 276.
- *
- * Logged from:
- *   frameworks/base/media/java/android/media/tv/tuner/Tuner.java
- */
-message TvTunerStateChanged {
-    enum State {
-        UNKNOWN = 0;
-        TUNING = 1; // Signal is tuned
-        LOCKED = 2;    // the signal is locked
-        NOT_LOCKED = 3; // the signal isn’t locked.
-        SIGNAL_LOST = 4; // the signal was locked, but is lost now.
-        SCANNING = 5; // the signal is scanned
-        SCAN_STOPPED = 6; // the scan is stopped.
-    }
-    // The uid of the application that sent this custom atom.
-    optional int32 uid = 1 [(is_uid) = true];
-    //  new state
-    optional State state = 2;
-}
-
-/**
- * Logs the status of a dvr playback or record.
- * This is atom ID 279.
- *
- * Logged from:
- *   frameworks/base/media/java/android/media/tv/tuner/dvr
- */
-message TvTunerDvrStatus {
-    enum Type {
-        UNKNOWN_TYPE = 0;
-        PLAYBACK = 1; // is a playback
-        RECORD = 2; // is a record
-    }
-    enum State {
-        UNKNOWN_STATE = 0;
-        STARTED = 1; // DVR is started
-        STOPPED = 2; // DVR is stopped
-    }
-    // The uid of the application that sent this custom atom.
-    optional int32 uid = 1 [(is_uid) = true];
-    // DVR type
-    optional Type type = 2;
-    //  DVR state
-    optional State state = 3;
-    //  Identify the segment of a record or playback
-    optional int32 segment_id = 4;
-    // indicate how many overflow or underflow happened between started to stopped
-    optional int32 overflow_underflow_count = 5;
-}
-
-/**
- * Logs when a cas session opened through MediaCas.
- * This is atom ID 280.
- *
- * Logged from:
- *   frameworks/base/media/java/android/media/MediaCas.java
- */
-message TvCasSessionOpenStatus {
-    enum State {
-        UNKNOWN = 0;
-        SUCCEEDED = 1; // indicate that the session is opened successfully.
-        FAILED = 2; // indicate that the session isn’t opened successfully.
-    }
-    // The uid of the application that sent this custom atom.
-    optional int32 uid = 1 [(is_uid) = true];
-    //  Cas system Id
-    optional int32 cas_system_id = 2;
-    // State of the session
-    optional State state = 3;
-}
-
-/**
- * Logs for ContactsProvider general usage.
- * This is atom ID 301.
- *
- * Logged from:
- *   packages/providers/ContactsProvider/src/com/android/providers/contacts/ContactsProvider2.java
- */
-message ContactsProviderStatusReported {
-    enum ApiType {
-        UNKNOWN_API = 0;
-        QUERY = 1;
-        // INSERT includes insert and bulkInsert, and inserts triggered by applyBatch.
-        INSERT = 2;
-        // UPDATE and DELETE includes update/delete and the ones triggered by applyBatch.
-        UPDATE = 3;
-        DELETE = 4;
-    }
-
-    enum ResultType {
-        UNKNOWN_RESULT = 0;
-        SUCCESS = 1;
-        FAIL = 2;
-        ILLEGAL_ARGUMENT = 3;
-        UNSUPPORTED_OPERATION = 4;
-    }
-
-    enum CallerType {
-        UNSPECIFIED_CALLER_TYPE = 0;
-        CALLER_IS_SYNC_ADAPTER = 1;
-        CALLER_IS_NOT_SYNC_ADAPTER = 2;
-    }
-
-    optional ApiType api_type = 1;
-    // Defined in
-    // packages/providers/ContactsProvider/src/com/android/providers/contacts/ContactsProvider2.java
-    optional int32 uri_type = 2;
-    optional CallerType caller_type = 3;
-    optional ResultType result_type = 4;
-    optional int32 result_count = 5;
-    optional int64 latency_micros = 6;
-}
-
-/**
- * Logs when an app is frozen or unfrozen.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/CachedAppOptimizer.java
- */
-message AppFreezeChanged {
-    // The type of event.
-    enum Action {
-        UNKNOWN = 0;
-        FREEZE_APP = 1;
-        UNFREEZE_APP = 2;
-    }
-    optional Action action = 1;
-
-    // Pid of the process being frozen.
-    optional int32 pid = 2;
-
-    // Name of the process being frozen.
-    optional string process_name = 3;
-
-    // Time since last unfrozen.
-    optional int64 time_unfrozen_millis = 4;
-}
-
-/**
- * Pulls information for a single voice call.
- *
- * Each pull creates multiple atoms, one for each call. The sequence is randomized when pulled.
- *
- * Pulled from:
- *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
- */
-message VoiceCallSession {
-    // Bearer (IMS or CS) when the call started.
-    optional android.telephony.CallBearerEnum bearer_at_start = 1;
-
-    // Bearer (IMS or CS) when the call ended.
-    // The bearer may change during the call, e.g. due to SRVCC.
-    optional android.telephony.CallBearerEnum bearer_at_end = 2;
-
-    // Direction of the call (incoming or outgoing).
-    optional android.telephony.CallDirectionEnum direction = 3;
-
-    // Time spent setting up the call.
-    optional android.telephony.CallSetupDurationEnum setup_duration = 4;
-
-    // Whether the call ended before the setup was completed.
-    optional bool setup_failed = 5;
-
-    // IMS reason code or CS disconnect cause.
-    // For IMS, see: frameworks/base/telephony/java/android/telephony/ims/ImsReasonInfo.java
-    // For CS, see: frameworks/base/telephony/java/android/telephony/DisconnectCause.java
-    optional int32 disconnect_reason_code = 6;
-
-    // IMS extra code or CS precise disconnect cause.
-    // For IMS, this code is vendor-specific
-    // For CS, see: frameworks/base/telephony/java/android/telephony/PreciseDisconnectCause.java
-    optional int32 disconnect_extra_code = 7;
-
-    // IMS extra message or CS vendor cause.
-    optional string disconnect_extra_message = 8;
-
-    // Radio access technology (RAT) used when call started.
-    optional android.telephony.NetworkTypeEnum rat_at_start = 9;
-
-    // Radio access technology (RAT) used when call terminated.
-    optional android.telephony.NetworkTypeEnum rat_at_end = 10;
-
-    // Number of times RAT changed during the call.
-    optional int64 rat_switch_count = 11;
-
-    // A bitmask of all codecs used during the call.
-    // See: frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/VoiceCallSessionStats.java
-    optional int64 codec_bitmask = 12;
-
-    // Number of other calls going on during call setup, for the same SIM slot.
-    optional int32 concurrent_call_count_at_start = 13;
-
-    // Number of other calls going on during call termination, for the same SIM slot.
-    optional int32 concurrent_call_count_at_end = 14;
-
-    // Index of the SIM is used, 0 for single-SIM devices.
-    optional int32 sim_slot_index = 15;
-
-    // Whether the device was in multi-SIM mode (with multiple active SIM profiles).
-    optional bool is_multi_sim = 16;
-
-    // Whether the call was made with an eSIM profile.
-    optional bool is_esim = 17;
-
-    // Carrier ID of the SIM card.
-    // See https://source.android.com/devices/tech/config/carrierid.
-    optional int32 carrier_id = 18;
-
-    // Whether an SRVCC has been completed successfully for this call.
-    optional bool srvcc_completed = 19;
-
-    // Number of SRVCC failures.
-    optional int64 srvcc_failure_count = 20;
-
-    // Number of SRVCC cancellations.
-    optional int64 srvcc_cancellation_count = 21;
-
-    // Whether the Real-Time Text (RTT) was ever used in the call (rather than whether RTT was
-    // enabled in the dialer's settings).
-    optional bool rtt_enabled = 22;
-
-    // Whether this was an emergency call.
-    optional bool is_emergency = 23;
-
-    // Whether the call was performed while roaming.
-    optional bool is_roaming = 24;
-
-    // A random number used as the dimension field to pull multiple atoms.
-    optional int32 dimension = 25;
-}
-
-/**
- * Pulls voice call radio access technology (RAT) usage.
- *
- * Each pull creates multiple atoms, one for each carrier/RAT, the order of which is irrelevant to
- * time. The atom will be skipped if not enough data is available.
- *
- * Pulled from:
- *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
- */
-message VoiceCallRatUsage {
-    // Carrier ID (https://source.android.com/devices/tech/config/carrierid).
-    optional int32 carrier_id = 1;
-
-    // Radio access technology.
-    optional android.telephony.NetworkTypeEnum rat = 2;
-
-    // Total duration that voice calls spent on this carrier and RAT.
-    optional int64 total_duration_seconds = 3;
-
-    // Total number of calls using this carrier and RAT.
-    // A call is counted once even if it used the RAT multiple times.
-    optional int64 call_count = 4;
-}
-
-/**
- * Pulls the number of active SIM slots and SIMs/eSIM profiles.
- *
- * Pulled from:
- *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
- */
-message SimSlotState {
-    // Number of active SIM slots (both physical and eSIM profiles) in the device.
-    optional int32 active_slot_count = 1;
-
-    // Number of SIM cards (both physical and active eSIM profiles).
-    // This number is always equal to or less than the number of active SIM slots.
-    optional int32 sim_count = 2;
-
-    // Number of active eSIM profiles.
-    // This number is always equal to or less than the number of SIMs.
-    optional int32 esim_count = 3;
-}
-
-/**
- * Pulls supported cellular radio access technologies.
- *
- * This atom reports the capabilities of the device, rather than the network it has access to.
- *
- * Pulled from:
- *   frameworks/opt/telephony/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
- */
-message SupportedRadioAccessFamily {
-    // A bitmask of supported radio technologies.
-    // See android.telephony.TelephonyManager.NetworkTypeBitMask.
-    optional int64 network_type_bitmask = 1;
-}
-
-/**
- * Logs gnss stats from location service provider
- *
- * Pulled from:
- *  frameworks/base/location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java
- */
-
-message GnssStats {
-    // Number of location reports since boot
-    optional int64 location_reports = 1;
-
-    // Total pulled reports of Location failures since boot
-    optional int64 location_failure_reports = 2;
-
-    // Number of time to first fix reports since boot
-    optional int64 time_to_first_fix_reports = 3;
-
-    // Total pulled reported time to first fix (in milli-seconds) since boot
-    optional int64 time_to_first_fix_millis = 4;
-
-    // Number of position accuracy reports since boot
-    optional int64 position_accuracy_reports = 5;
-
-    // Total pulled reported position accuracy (in meters) since boot
-    optional int64 position_accuracy_meters = 6;
-
-    // Number of top 4 average CN0 reports since boot
-    optional int64 top_four_average_cn0_reports = 7;
-
-    // Total pulled reported of top 4 average CN0 (dB-mHz) since boot
-    optional int64 top_four_average_cn0_db_mhz = 8;
-
-    // Number of l5 top 4 average CN0 reports since boot
-    optional int64 l5_top_four_average_cn0_reports = 9;
-
-    // Total pulled reported of l5 top 4 average CN0 (dB-mHz) since boot
-    optional int64 l5_top_four_average_cn0_db_mhz = 10;
-
-    // Total number of sv status messages reports since boot
-    optional int64 sv_status_reports = 11;
-
-    // Total number of sv status messages reports, where sv is used in fix since boot
-    optional int64 sv_status_reports_used_in_fix = 12;
-
-    // Total number of L5 sv status messages reports since boot
-    optional int64 l5_sv_status_reports = 13;
-
-    // Total number of L5 sv status messages reports, where sv is used in fix since boot
-    optional int64 l5_sv_status_reports_used_in_fix = 14;
-}
-
-/**
- * Logs when an app is moved to a different standby bucket.
- *
- * Logged from:
- *   frameworks/base/apex/jobscheduler/service/java/com/android/server/usage/AppIdleHistory.java
- */
-message AppStandbyBucketChanged {
-    optional string package_name = 1;
-
-    // Should be 0, 10, 11, 12, etc. where 0 is the owner. See UserHandle for more documentation.
-    optional int32 user_id = 2;
-
-    // These enum values match the constants defined in UsageStatsManager.java.
-    enum Bucket {
-        BUCKET_UNKNOWN = 0;
-        BUCKET_EXEMPTED = 5;
-        BUCKET_ACTIVE = 10;
-        BUCKET_WORKING_SET = 20;
-        BUCKET_FREQUENT = 30;
-        BUCKET_RARE = 40;
-        BUCKET_RESTRICTED = 45;
-        BUCKET_NEVER = 50;
-    }
-    optional Bucket bucket = 3;
-
-    enum MainReason {
-        MAIN_UNKNOWN = 0;
-        MAIN_DEFAULT = 0x0100;
-        MAIN_TIMEOUT = 0x0200;
-        MAIN_USAGE = 0x0300;
-        MAIN_FORCED_BY_USER = 0x0400;
-        MAIN_PREDICTED = 0x0500;
-        MAIN_FORCED_BY_SYSTEM = 0x0600;
-    }
-    optional MainReason main_reason = 4;
-
-    // A more detailed reason for the standby bucket change. The sub reason name is dependent on
-    // the main reason. Values are one of the REASON_SUB_XXX constants defined in
-    // UsageStatsManager.java.
-    optional int32 sub_reason = 5;
-}
-
-/**
-* Reports a started sharesheet transaction.
-*
-* Logged from:
-*   frameworks/base/core/java/com/android/internal/app/ChooserActivity.java
-*/
-message SharesheetStarted {
-    // The event_id (as for UiEventReported).
-    optional int32 event_id = 1;
-    // The calling app's package name.
-    optional string package_name = 2;
-    // An identifier to tie together multiple logs relating to the same share event
-    optional int32 instance_id = 3;
-    // The mime type of the share
-    optional string mime_type = 4;
-    // The number of direct targets the calling app is providing that will be shown.
-    optional int32 num_app_provided_direct_targets = 5;
-    // The number of app targets the calling app is providing that will be shown.
-    optional int32 num_app_provided_app_targets = 6;
-    // True if the share originates from the workprofile
-    optional bool is_workprofile = 7;
-
-    enum SharesheetPreviewType {  // Constants from ChooserActivity.java
-        CONTENT_PREVIEW_TYPE_UNKNOWN = 0;  // Default for proto 2 / 3 compatibility.
-        CONTENT_PREVIEW_IMAGE = 1;  // The preview shown in the sharesheet is an image.
-        CONTENT_PREVIEW_FILE = 2;  // The preview shown in the sharesheet is a file.
-        CONTENT_PREVIEW_TEXT = 3;  // The preview shown in the sharesheet is text.
-    }
-    // How the sharesheet preview is presented.
-    optional SharesheetPreviewType preview_type = 8;
-
-    enum ResolverActivityIntent { // Intents handled by ResolverActivity.java
-        INTENT_DEFAULT = 0;
-        INTENT_ACTION_VIEW = 1;
-        INTENT_ACTION_EDIT = 2;
-        INTENT_ACTION_SEND = 3;
-        INTENT_ACTION_SENDTO = 4;
-        INTENT_ACTION_SEND_MULTIPLE = 5;
-        INTENT_ACTION_IMAGE_CAPTURE = 6;
-        INTENT_ACTION_MAIN = 7;
-    }
-    // The intent being processed (only SEND and SEND_MULTIPLE are system sharesheet)
-    optional ResolverActivityIntent intent_type = 9;
-}
-
-/**
- * Reports a ranking selection event.
- *
- * Logged from:
- *   frameworks/base/core/java/com/android/internal/app/ChooserActivity.java (sharesheet)
- */
-message RankingSelected {
-    // The event_id (as for UiEventReported).
-    optional int32 event_id = 1;
-    // The relevant app's package name (can be source or picked package).
-    optional string package_name = 2;
-    // An identifier to tie together multiple logs relating to the same share event.
-    optional int32 instance_id = 3;
-    // Which of the ranked targets got picked, default starting position 0.
-    optional int32 position_picked = 4;
-}
-
-/**
- * Logs when TvSettings UI is interacted at.
- *
- * Logged from: packages/apps/TvSettings
- */
-message TvSettingsUIInteracted {
-
-    /** The UI action category */
-    optional android.app.tvsettings.Action action = 1;
-
-    /** The ID of the entry that the users actioned on */
-    optional android.app.tvsettings.ItemId item_id = 2;
-}
-
-/**
- * Logs information about a package installation using package installer V2 APIs.
- *
- * Logged from:
- *      frameworks/base/services/core/java/com/android/server/pm/PackageInstallerSession.java
- */
-message PackageInstallerV2Reported {
-    // Whether this installation uses Incremental File System
-    optional bool is_incremental = 1;
-    // Name of the package that is intended to be installed
-    optional string package_name = 2;
-    // The duration between when the install was requested to when the install has completed
-    optional int64 duration_millis = 3;
-    // Installation result in final integer, which are SystemApi's.
-    // Return_code 1 indicates success.
-    // For full list, see frameworks/base/core/java/android/content/pm/PackageManager.java
-    optional int32 return_code  = 4;
-    // Total size of the APKs installed for this package
-    optional int64 apks_size_bytes = 5;
-}
-
-/**
- * Logs settings provider values.
- *
- * Use DeviceConfig.getProperties to get a list Setting key, query the data from content provider,
- * then write the value to proto.
- *
- */
-message SettingSnapshot {
-
-    // Setting key
-    optional string name = 1;
-
-    enum SettingsValueType {
-        NOTASSIGNED = 0;
-        ASSIGNED_BOOL_TYPE = 1;
-        ASSIGNED_INT_TYPE = 2;
-        ASSIGNED_FLOAT_TYPE = 3;
-        ASSIGNED_STRING_TYPE = 4;
-    };
-    // Setting value type
-    optional SettingsValueType type = 2;
-
-    optional bool bool_value = 3;
-
-    optional int32 int_value = 4;
-
-    optional float float_value = 5;
-
-    optional string str_value = 6;
-
-    // Android user index. 0 for primary user, 10, 11 for secondary or profile user
-    optional int32 user_id = 7;
-}
-
-/**
- * An event logged to indicate that a user journey is about to be performed. This atom includes
- * relevant information about the users involved in the journey. A UserLifecycleEventOccurred event
- * will immediately follow this atom which will describe the event(s) and its state.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/UserController.java
- *   frameworks/base/services/core/java/com/android/server/pm/UserManagerService.java
- */
-message UserLifecycleJourneyReported {
-    // An identifier to track a chain of user lifecycle events occurring (referenced in the
-    // UserLifecycleEventOccurred atom)
-    optional int64 session_id = 1;
-
-    // Indicates what type of user journey this session is related to
-    enum Journey {
-        UNKNOWN = 0; // Undefined user lifecycle journey
-        USER_SWITCH_UI = 1; // A user switch journey where a UI is shown
-        USER_SWITCH_FG = 2; // A user switch journey without a UI shown
-        USER_START = 3; // A user start journey
-        USER_CREATE = 4; // A user creation journey
-    }
-    optional Journey journey = 2;
-    // Which user the journey is originating from - could be -1 for certain phases (eg USER_CREATE)
-    // This integer is a UserIdInt (eg 0 for the system user, 10 for secondary/guest)
-    optional int32 origin_user = 3;
-    // Which user the journey is targeting
-    // This integer is a UserIdInt (eg 0 for the system user, 10 for secondary/guest)
-    optional int32 target_user = 4;
-
-    // What is the user type of the target user
-    // These should be in sync with USER_TYPE_* flags defined in UserManager.java
-    enum UserType {
-        TYPE_UNKNOWN = 0;
-        FULL_SYSTEM = 1;
-        FULL_SECONDARY = 2;
-        FULL_GUEST = 3;
-        FULL_DEMO = 4;
-        FULL_RESTRICTED = 5;
-        PROFILE_MANAGED = 6;
-        SYSTEM_HEADLESS = 7;
-    }
-    optional UserType user_type = 5;
-    // What are the flags attached to the target user
-    optional int32 user_flags = 6;
-}
-
-/**
- * An event logged when a specific user lifecycle event is performed. These events should be
- * correlated with a UserLifecycleJourneyReported atom via the session_id.
- * Note: journeys can span over multiple events, hence some events may share a single session id.
- *
- * Logged from:
- *   frameworks/base/services/core/java/com/android/server/am/UserController.java
- *   frameworks/base/services/core/java/com/android/server/pm/UserManagerService.java
- */
-message UserLifecycleEventOccurred {
-    // An id which links back to user details (reported in the UserLifecycleJourneyReported atom)
-    optional int64 session_id = 1;
-    // The target user for this event (same as target_user in the UserLifecycleJourneyReported atom)
-    // This integer is a UserIdInt (eg 0 for the system user, 10 for secondary/guest)
-    optional int32 user_id = 2;
-
-    enum Event {
-        UNKNOWN = 0; // Indicates that the associated user journey timed-out or resulted in an error
-        SWITCH_USER = 1; // Indicates that this is a user switch event
-        START_USER = 2; // Indicates that this is a user start event
-        CREATE_USER = 3; // Indicates that this is a user create event
-        USER_RUNNING_LOCKED = 4; // Indicates that user is running in locked state
-        UNLOCKING_USER = 5; // Indicates that this is a user unlocking event
-        UNLOCKED_USER = 6; // Indicates that this is a user unlocked event
-    }
-    optional Event event = 3;
-
-    enum State {
-        NONE = 0; // Indicates the associated event has no start/end defined
-        BEGIN = 1;
-        FINISH = 2;
-    }
-    optional State state = 4; // Represents the state of an event (beginning/ending)
-}
-
-/**
- * Logs when accessibility shortcut clicked.
- *
- * Logged from:
- *   frameworks/base/services/accessibility/java/com/android/server/accessibility
- */
-message AccessibilityShortcutReported {
-    // The accessibility feature(including installed a11y service, framework a11y feature,
-    // and installed a11y activity) package name that is assigned to the accessibility shortcut.
-    optional string package_name = 1;
-
-    // The definition of the accessibility shortcut.
-    // From frameworks/base/core/proto/android/stats/accessibility/accessibility_enums.proto.
-    optional android.stats.accessibility.ShortcutType shortcut_type = 2;
-
-    // The definition of the service status.
-    // From frameworks/base/core/proto/android/stats/accessibility/accessibility_enums.proto.
-    optional android.stats.accessibility.ServiceStatus service_status = 3;
-}
-
-/**
- * Logs when accessibility service status changed.
- *
- * Logged from:
- *   packages/apps/Settings/src/com/android/settings/accessibility
- */
-message AccessibilityServiceReported {
-    // The accessibility service package name.
-    optional string package_name = 1;
-
-    // The definition of the service status.
-    // From frameworks/base/core/proto/android/stats/accessibility/accessibility_enums.proto.
-    optional android.stats.accessibility.ServiceStatus service_status = 2;
-}
-
-/**
- * Logs when display wake up.
- *
- * Logged from:
- *   services/core/java/com/android/server/power/Notifier.java
- */
-
-message DisplayWakeReported {
-    // Wake_up_reason code
-    // If LOWORD(wake_up_reason) = 0
-    //     reference to HIWORD(wake_up_reason) PowerManager.WAKE_REASON_XXX
-    //     else reference wake_up_reason to
-    //     services/core/java/com/android/server/power/Notifier.java#onWakeUp
-    optional int32 wake_up_reason = 1;
-}
-
-/**
- * Logs app usage events.
- */
-message AppUsageEventOccurred {
-    optional int32 uid = 1 [(is_uid) = true];
-    optional string package_name = 2;
-    optional string class_name = 3;
-
-    enum EventType {
-        NONE = 0;
-        MOVE_TO_FOREGROUND = 1;
-        MOVE_TO_BACKGROUND = 2;
-    }
-    optional EventType event_type = 4;
-}
-
-/*
- * Quality metrics logged when EVS cameras are active.
- *
- * Logged from:
- *  packages/services/Car/evs/manager/1.1/Enumerator.cpp
- */
-message EvsUsageStatsReported {
-
-    // Camera identifier to distinguish the source camera device.  This is not
-    // globally unique and therefore cannot be used to identify the user and/or
-    // the device.
-    optional int32 device_id = 1;
-
-    // Peak number of clients during the service
-    optional int32 peak_num_clients = 2;
-
-    // Number of erroneous events during the service
-    optional int32 num_errors = 3;
-
-    // Round trip latency of the very first frame
-    optional int64 first_latency_millis = 4;
-
-    // Average frame round trip latency
-    optional float avg_latency_millis = 5;
-
-    // Peak frame round trip latency
-    optional int64 peak_latency_millis = 6;
-
-    // Total number of frames received
-    optional int64 total_frames = 7;
-
-    // Number of frames ignored
-    optional int64 ignored_frames = 8;
-
-    // Number of dropped frames to synchronize camera devices
-    optional int64 dropped_frames_to_sync = 9;
-
-    // The duration of the service
-    optional int64 duration_millis = 10;
-}
-
-/**
- * Logs audio power usage stats.
- *
- * Pushed from:
- *  frameworks/av/services/mediametrics/AudioPowerUsage.cpp
- */
-message AudioPowerUsageDataReported {
-    /**
-     * Device used for input/output
-     *
-     * All audio devices please refer to below file:
-     * system/media/audio/include/system/audio-base.h
-     *
-     * Define our own enum values because we don't report all audio devices.
-     * Currently, we only report built-in audio devices such as handset, speaker,
-     * built-in mics, common audio devices such as wired headset, usb headset
-     * and bluetooth devices.
-     */
-    enum AudioDevice {
-        OUTPUT_EARPIECE         = 0x1; // handset
-        OUTPUT_SPEAKER          = 0x2; // dual speaker
-        OUTPUT_WIRED_HEADSET    = 0x4; // 3.5mm headset
-        OUTPUT_USB_HEADSET      = 0x8; // usb headset
-        OUTPUT_BLUETOOTH_SCO    = 0x10; // bluetooth sco
-        OUTPUT_BLUETOOTH_A2DP   = 0x20; // a2dp
-        OUTPUT_SPEAKER_SAFE     = 0x40; // bottom speaker
-
-        INPUT_DEVICE_BIT        = 0x40000000; // non-negative positive int32.
-        INPUT_BUILTIN_MIC       = 0x40000001; // buildin mic
-        INPUT_BUILTIN_BACK_MIC  = 0x40000002; // buildin back mic
-        INPUT_WIRED_HEADSET_MIC = 0x40000004; // 3.5mm headset mic
-        INPUT_USB_HEADSET_MIC   = 0x40000008; // usb headset mic
-        INPUT_BLUETOOTH_SCO     = 0x40000010; // bluetooth sco mic
-    }
-    optional AudioDevice audio_device = 1;
-
-    // Duration of the audio in seconds
-    optional int32 duration_secs = 2;
-
-    // Average volume (0 ... 1.0)
-    optional float average_volume = 3;
-
-    enum AudioType {
-        UNKNOWN_TYPE = 0;
-        VOICE_CALL_TYPE = 1; // voice call
-        VOIP_CALL_TYPE = 2; // voip call, including uplink and downlink
-        MEDIA_TYPE = 3; // music and system sound
-        RINGTONE_NOTIFICATION_TYPE = 4; // ringtone and notification
-        ALARM_TYPE = 5; // alarm type
-        // record type
-        CAMCORDER_TYPE = 6; // camcorder
-        RECORD_TYPE = 7;  // other recording
-    }
-    optional AudioType type = 4;
-}
-
-/**
-  * Pulls bytes transferred over WiFi and mobile networks sliced by uid, is_metered, and tag.
-  *
-  * Pulled from:
-  *   StatsPullAtomService, which uses NetworkStatsService to query NetworkStats.
-  */
-message BytesTransferByTagAndMetered {
-    optional int32 uid = 1 [(is_uid) = true];
-
-    optional bool is_metered = 2;
-
-    optional int32 tag = 3;
-
-    optional int64 rx_bytes = 4;
-
-    optional int64 rx_packets = 5;
-
-    optional int64 tx_bytes = 6;
-
-    optional int64 tx_packets = 7;
-}
-
-/*
- * Logs when the Media Output Switcher finishes a media switch operation.
- *
- * Logged from:
- *  packages/apps/Settings/src/com/android/settings/media/MediaOutputSliceWorker.java
- */
-message MediaOutputOpSwitchReported {
-    // Source medium type before switching.
-    optional android.app.settings.mediaoutput.MediumType source = 1;
-
-    // Target medium type after switching.
-    optional android.app.settings.mediaoutput.MediumType target = 2;
-
-    // The result of switching.
-    optional android.app.settings.mediaoutput.SwitchResult result = 3;
-
-    // The detail code of a switching result.
-    optional android.app.settings.mediaoutput.SubResult subresult = 4;
-
-    /*
-     * The package name of a pre-installed app, whose media session is being switched.
-     */
-    optional string media_session_package_name = 5;
-
-    // The amount of available wired devices when a switching is being performed.
-    optional int32 available_wired_device_count = 6;
-
-    // The amount of available Bluetooth devices a switching is being performed.
-    optional int32 available_bt_device_count = 7;
-
-    // The amount of available remote devices when a switching is being performed.
-    optional int32 available_remote_device_count = 8;
-
-    // The amount of applied devices within a remote dynamic group after a switching is done.
-    optional int32 applied_device_count_within_remote_group = 9;
-}
-
-/**
- * Logs when the Assistant is invoked.
- *
- * Logged from:
- *   frameworks/base/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java
- */
-message AssistantInvocationReported {
-
-    // The event_id (as for UiEventReported).
-    optional int32 event_id = 1;
-
-    // The registered Assistant's uid and package (as for UiEventReported).
-    optional int32 uid = 2 [(is_uid) = true];
-    optional string package_name = 3;
-
-    // An identifier used to disambiguate which logs refer to a particular invocation of the
-    // Assistant  (as for UiEventReported).
-    optional int32 instance_id = 4;
-
-    // The state of the device at the time of invocation.
-    enum DeviceState {
-        UNKNOWN_DEVICE_STATE = 0;
-        AOD1 = 1;
-        AOD2 = 2;
-        BOUNCER = 3;
-        UNLOCKED_LOCKSCREEN = 4;
-        LAUNCHER_HOME = 5;
-        LAUNCHER_OVERVIEW = 6;
-        LAUNCHER_ALL_APPS = 7;
-        APP_DEFAULT = 8;
-        APP_IMMERSIVE = 9;
-        APP_FULLSCREEN = 10;
-    }
-    optional DeviceState device_state = 5;
-
-    // Whether the Assistant handles were showing at the time of invocation.
-    optional bool assistant_handles_showing = 6;
-}
-
-/**
- * Logs when an AudioRecord finishes running on an audio device
- *
- * Logged from:
- *   frameworks/av/services/mediametrics/AudioAnalytics.cpp
- */
-message MediametricsAudioRecordDeviceUsageReported {
-    // The devices connected to this AudioRecord.
-    // A string OR of various input device categories, e.g. "DEVICE1|DEVICE2".
-    // See lookup<INPUT_DEVICE>() in frameworks/av/services/mediametrics/AudioTypes.cpp
-    // See audio_device_t in system/media/audio/include/system/audio-base.h
-    optional string devices = 1;
-
-    // The name of the remote device attached to the device, typically available for USB or BT.
-    // This may be empty for a fixed device, or separated by "|" if more than one.
-    optional string device_names = 2;
-
-    // The amount of time spent in the device as measured by the active track in AudioFlinger.
-    optional int64 device_time_nanos = 3;
-
-    // The audio data format used for encoding.
-    // An enumeration from system/media/audio/include/system/audio-base.h audio_format_t
-    optional string encoding = 4;
-
-    // The client-server buffer framecount.
-    // The framecount is generally between 960 - 48000 for PCM encoding.
-    // The framecount represents raw buffer size in bytes for non-PCM encoding.
-    optional int32 frame_count = 5;
-
-    // The number of audio intervals (contiguous, continuous playbacks).
-    optional int32 interval_count = 6;
-
-    // The sample rate of the AudioRecord.
-    // A number generally between 8000-96000 (frames per second).
-    optional int32 sample_rate = 7;
-
-    // The audio input flags used to construct the AudioRecord.
-    // A string OR from system/media/audio/include/system/audio-base.h audio_input_flags_t
-    optional string flags = 8;
-
-    // The santized package name of the audio client associated with the AudioRecord.
-    // See getSanitizedPackageNameAndVersionCode() in
-    // frameworks/av/services/mediametrics/MediaMetricsService.cpp
-    optional string package_name = 9;
-
-    // The selected device id (nonzero if a non-default device is selected)
-    optional int32 selected_device_id = 10;
-
-    // The caller of the AudioRecord.
-    // See lookup<CALLER_NAME>() in frameworks/av/services/mediametrics/AudioTypes.cpp
-    optional string caller = 11;
-
-    // The audio source for AudioRecord.
-    // An enumeration from system/media/audio/include/system/audio-base.h audio_source_t
-    optional string source = 12;
-}
-
-/**
- * Logs when an AudioThread finishes running on an audio device
- *
- * Logged from:
- *   frameworks/av/services/mediametrics/AudioAnalytics.cpp
- */
-message MediametricsAudioThreadDeviceUsageReported {
-    // The devices connected to this audio thread.
-    // A string OR of various input device categories, e.g. "DEVICE1|DEVICE2".
-    // (for record threads):
-    // See lookup<INPUT_DEVICE> in frameworks/av/services/mediametrics/AudioTypes.cpp
-    // (for playback threads):
-    // See lookup<OUTPUT_DEVICE>() in frameworks/av/services/mediametrics/AudioTypes.cpp
-    // See audio_device_t in system/media/audio/include/system/audio-base.h
-    optional string devices = 1;
-
-    // The name of the remote device attached to the device, typically available for USB or BT.
-    // This may be empty for a fixed device, or separated by "|" if more than one.
-    optional string device_names = 2;
-
-    // The amount of time spent in the device as measured by the active track in AudioFlinger.
-    optional int64 device_time_nanos = 3;
-
-    // The audio data format used for encoding.
-    // An enumeration from system/media/audio/include/system/audio-base.h audio_format_t
-    optional string encoding = 4;
-
-    // The framecount of the buffer delivered to (or from) the HAL.
-    // The framecount is generally ~960 for PCM encoding.
-    // The framecount represents raw buffer size in bytes for non-PCM encoding.
-    optional int32 frame_count = 5;
-
-    // The number of audio intervals (contiguous, continuous playbacks).
-    optional int32 interval_count = 6;
-
-    // The sample rate of the audio thread.
-    // A number generally between 8000-96000 (frames per second).
-    optional int32 sample_rate = 7;
-
-    // The audio flags used to construct the thread
-    // (for record threads):
-    // A string OR from system/media/audio/include/system/audio-base.h audio_input_flags_t
-    // (for playback threads):
-    // A string OR from system/media/audio/include/system/audio-base.h audio_output_flags_t
-    optional string flags = 8;
-
-    // The number of underruns encountered for a playback thread or the
-    // number of overruns encountered for a capture thread.
-    optional int32 xruns = 9;
-
-    // The type of thread
-    // A thread type enumeration from
-    // frameworks/av/mediametrics/services/Translate.h
-    optional string type = 10;
-}
-
-/**
- * Logs when an AudioTrack finishes running on an audio device
- *
- * Logged from:
- *   frameworks/av/services/mediametrics/AudioAnalytics.cpp
- */
-message MediametricsAudioTrackDeviceUsageReported {
-    // The output devices connected to this AudioTrack.
-    // A string OR of various output device categories, e.g. "DEVICE1|DEVICE2".
-    // See lookup<OUTPUT_DEVICE>() in frameworks/av/services/mediametrics/AudioTypes.cpp
-    // See audio_device_t in system/media/audio/include/system/audio-base.h
-    optional string devices = 1;
-
-    // The name of the remote device attached to the device, typically available for USB or BT.
-    // This may be empty for a fixed device, or separated by "|" if more than one.
-    optional string device_names = 2;
-
-    // The amount of time spent in the device as measured by the active track in AudioFlinger.
-    optional int64 device_time_nanos = 3;
-
-    // The audio data format used for encoding.
-    // An enumeration from system/media/audio/include/system/audio-base.h audio_format_t
-    optional string encoding = 4;
-
-    // The client-server buffer framecount.
-    // The framecount is generally between 960 - 48000 for PCM encoding.
-    // The framecount represents raw buffer size in bytes for non-PCM encoding.
-    // A static track (see traits) may have a very large framecount.
-    optional int32 frame_count = 5;
-
-    // The number of audio intervals (contiguous, continuous playbacks).
-    optional int32 interval_count = 6;
-
-    // The sample rate of the AudioTrack.
-    // A number generally between 8000-96000 (frames per second).
-    optional int32 sample_rate = 7;
-
-    // The audio flags used to construct the AudioTrack.
-    // A string OR from system/media/audio/include/system/audio-base.h audio_output_flags_t
-    optional string flags = 8;
-
-    // The number of underruns encountered.
-    optional int32 xruns = 9;
-
-    // The santized package name of the audio client associated with the AudioTrack.
-    // See getSanitizedPackageNameAndVersionCode() in
-    // frameworks/av/services/mediametrics/MediaMetricsService.cpp
-    optional string package_name = 10;
-
-    // The latency of the last sample in the buffer in milliseconds.
-    optional float device_latency_millis = 11;
-
-    // The startup time in milliseconds from start() to sample played.
-    optional float device_startup_millis = 12;
-
-    // The average volume of the track on the device [ 0.f - 1.f ]
-    optional float device_volume = 13;
-
-    // The selected device id (nonzero if a non-default device is selected)
-    optional int32 selected_device_id = 14;
-
-    // The stream_type category for the AudioTrack.
-    // An enumeration from system/media/audio/include/system/audio-base.h audio_stream_type_t
-    optional string stream_type = 15;
-
-    // The usage for the AudioTrack.
-    // An enumeration from system/media/audio/include/system/audio-base.h audio_usage_t
-    optional string usage = 16;
-
-    // The content type of the AudioTrack.
-    // An enumeration from system/media/audio/include/system/audio-base.h audio_content_type_t
-    optional string content_type = 17;
-
-    // The caller of the AudioTrack.
-    // See lookup<CALLER_NAME>() in frameworks/av/services/mediametrics/AudioTypes.cpp
-    optional string caller = 18;
-
-    // The traits of the AudioTrack.
-    // A string OR of different traits, may be empty string.
-    // Only "static" is supported for R.
-    // See lookup<TRACK_TRAITS>() in frameworks/av/services/mediametrics/AudioTypes.cpp
-    optional string traits = 19;
-}
-
-/**
- * Logs the status of an audio device connection attempt.
- *
- * Logged from:
- *   frameworks/av/services/mediametrics/AudioAnalytics.cpp
- */
-message MediametricsAudioDeviceConnectionReported {
-    // The input devices represented by this report.
-    // A string OR of various input device categories, e.g. "DEVICE1|DEVICE2".
-    // See lookup<INPUT_DEVICE>() in frameworks/av/services/mediametrics/AudioTypes.cpp
-    // See audio_device_t in system/media/audio/include/system/audio-base.h
-    optional string input_devices = 1;
-
-    // The output devices represented by this report.
-    // A string OR of various output device categories.
-    // See lookup<OUTPUT_DEVICE>() in frameworks/av/services/mediametrics/AudioTypes.cpp
-    // See audio_device_t in system/media/audio/include/system/audio-base.h
-    optional string output_devices = 2;
-
-    // The name of the remote device attached to the device, typically available for USB or BT.
-    // This may be empty for a fixed device, or separated by "|" if more than one.
-    optional string device_names = 3;
-
-    // The result of the audio device connection.
-    // 0 indicates success: connection verified.
-    // 1 indicates unknown: connection not verified or not known if diverted properly.
-    // Other values indicate specific status.
-    // See DeviceConnectionResult in frameworks/av/services/mediametrics/AudioTypes.h
-    optional int32 result = 4;
-
-    // Average milliseconds of time to connect
-    optional float time_to_connect_millis = 5;
-
-    // Number of connections if aggregated statistics, otherwise 1.
-    optional int32 connection_count = 6;
-}
-
-/**
- * Logs: i) creation of different types of cryptographic keys in the keystore,
- * ii) operations performed using the keys,
- * iii) attestation of the keys
- * Logged from: system/security/keystore/key_event_log_handler.cpp
- */
-message KeystoreKeyEventReported {
-
-    enum Algorithm {
-        /** Asymmetric algorithms. */
-        RSA = 1;
-        // 2 removed, do not reuse.
-        EC = 3;
-        /** Block cipher algorithms */
-        AES = 32;
-        TRIPLE_DES = 33;
-        /** MAC algorithms */
-        HMAC = 128;
-    };
-    /** Algorithm associated with the key */
-    optional Algorithm algorithm = 1;
-
-    /** Size of the key */
-    optional int32 key_size = 2;
-
-    enum KeyOrigin {
-        /** Generated in keymaster.  Should not exist outside the TEE. */
-        GENERATED = 0;
-        /** Derived inside keymaster.  Likely exists off-device. */
-        DERIVED = 1;
-        /** Imported into keymaster.  Existed as cleartext in Android. */
-        IMPORTED = 2;
-        /** Keymaster did not record origin. */
-        UNKNOWN = 3;
-        /** Securely imported into Keymaster. */
-        SECURELY_IMPORTED = 4;
-    };
-    /* Logs whether the key was generated, imported, securely imported, or derived.*/
-    optional KeyOrigin key_origin = 3;
-
-    enum HardwareAuthenticatorType {
-        NONE = 0;
-        PASSWORD = 1;
-        FINGERPRINT = 2;
-        // Additional entries must be powers of 2.
-    };
-    /**
-     * What auth types does this key require? If none,
-     * then no auth required.
-     */
-    optional HardwareAuthenticatorType user_auth_type = 4;
-
-    /**
-     * If user authentication is required, is the requirement time based? If it
-     * is not time based then this field will not be used and the key is per
-     * operation. Per operation keys must be user authenticated on each usage.
-     */
-    optional int32 user_auth_key_timeout_secs = 5;
-
-    /**
-     * padding mode, digest, block_mode and purpose should ideally be repeated
-     * fields. However, since statsd does not support repeated fields in
-     * pushed atoms, they are represented using bitmaps.
-     */
-
-    /** Track which padding mode is being used.*/
-    optional int32 padding_mode_bitmap = 6;
-
-    /** Track which digest is being used. */
-    optional int32 digest_bitmap = 7;
-
-    /** Track what block mode is being used (for encryption). */
-    optional int32 block_mode_bitmap = 8;
-
-    /** Track what purpose is this key serving. */
-    optional int32 purpose_bitmap = 9;
-
-    enum EcCurve {
-        P_224 = 0;
-        P_256 = 1;
-        P_384 = 2;
-        P_521 = 3;
-    };
-    /** Which ec curve was selected if elliptic curve cryptography is in use **/
-    optional EcCurve ec_curve = 10;
-
-    enum KeyBlobUsageRequirements {
-        STANDALONE = 0;
-        REQUIRES_FILE_SYSTEM = 1;
-    };
-    /** Standalone or is a file system required */
-    optional KeyBlobUsageRequirements key_blob_usage_reqs = 11;
-
-    enum Type {
-        key_operation = 0;
-        key_creation = 1;
-        key_attestation = 2;
-    }
-    /** Key creation event, operation event or attestation event? */
-    optional Type type = 12;
-
-    /** Was the key creation, operation, or attestation successful? */
-    optional bool was_successful = 13;
-
-    /** Response code or error code */
-    optional int32 error_code = 14;
-}
-
-// Blob Committer stats
-// Keep in sync between:
-//     frameworks/base/core/proto/android/server/blobstoremanagerservice.proto
-//     frameworks/base/cmds/statsd/src/atoms.proto
-message BlobCommitterProto {
-    // Committer app's uid
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // Unix epoch timestamp of the commit in milliseconds
-    optional int64 commit_timestamp_millis = 2;
-
-    // Flags of what access types the committer has set for the Blob
-    optional int32 access_mode = 3;
-
-    // Number of packages that have been whitelisted for ACCESS_TYPE_WHITELIST
-    optional int32 num_whitelisted_package = 4;
-}
-
-// Blob Leasee stats
-// Keep in sync between:
-//     frameworks/base/core/proto/android/server/blobstoremanagerservice.proto
-//     frameworks/base/cmds/statsd/src/atoms.proto
-message BlobLeaseeProto {
-    // Leasee app's uid
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // Unix epoch timestamp for lease expiration in milliseconds
-    optional int64 lease_expiry_timestamp_millis = 2;
-}
-
-// List of Blob Committers
-// Keep in sync between:
-//     frameworks/base/core/proto/android/server/blobstoremanagerservice.proto
-//     frameworks/base/cmds/statsd/src/atoms.proto
-message BlobCommitterListProto {
-    repeated BlobCommitterProto committer = 1;
-}
-
-// List of Blob Leasees
-// Keep in sync between:
-//     frameworks/base/core/proto/android/server/blobstoremanagerservice.proto
-//     frameworks/base/cmds/statsd/src/atoms.proto
-message BlobLeaseeListProto {
-    repeated BlobLeaseeProto leasee = 1;
-}
-
-/**
- * Logs the current state of a Blob committed with BlobStoreManager
- *
- * Pulled from:
- *  frameworks/base/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java
- */
-message BlobInfo {
-    // Id of the Blob
-    optional int64 blob_id = 1;
-
-    // Size of the Blob data
-    optional int64 size = 2;
-
-    // Unix epoch timestamp of the Blob's expiration in milliseconds
-    optional int64 expiry_timestamp_millis = 3;
-
-    // List of committers of this Blob
-    optional BlobCommitterListProto committers = 4;
-
-    // List of leasees of this Blob
-    optional BlobLeaseeListProto leasees = 5;
-}
diff --git a/cmds/statsd/src/shell/shell_data.proto b/cmds/statsd/src/shell/shell_data.proto
index 236bdbd..ec41cbc 100644
--- a/cmds/statsd/src/shell/shell_data.proto
+++ b/cmds/statsd/src/shell/shell_data.proto
@@ -21,7 +21,7 @@
 option java_package = "com.android.os.statsd";
 option java_outer_classname = "ShellDataProto";
 
-import "frameworks/base/cmds/statsd/src/atoms.proto";
+import "frameworks/proto_logging/stats/atoms.proto";
 
 // The output of shell subscription, including both pulled and pushed subscriptions.
 message ShellData {
diff --git a/cmds/statsd/src/stats_log.proto b/cmds/statsd/src/stats_log.proto
index ddd2725..bb07963 100644
--- a/cmds/statsd/src/stats_log.proto
+++ b/cmds/statsd/src/stats_log.proto
@@ -21,7 +21,7 @@
 option java_package = "com.android.os";
 option java_outer_classname = "StatsLog";
 
-import "frameworks/base/cmds/statsd/src/atoms.proto";
+import "frameworks/proto_logging/stats/atoms.proto";
 
 message DimensionsValue {
   optional int32 field = 1;
diff --git a/cmds/statsd/tests/LogEvent_test.cpp b/cmds/statsd/tests/LogEvent_test.cpp
index 5c170c0..bde59f4 100644
--- a/cmds/statsd/tests/LogEvent_test.cpp
+++ b/cmds/statsd/tests/LogEvent_test.cpp
@@ -16,8 +16,8 @@
 
 #include <gtest/gtest.h>
 
-#include "frameworks/base/cmds/statsd/src/atoms.pb.h"
-#include "frameworks/base/core/proto/android/stats/launcher/launcher.pb.h"
+#include "frameworks/proto_logging/stats/atoms.pb.h"
+#include "frameworks/proto_logging/stats/enums/stats/launcher/launcher.pb.h"
 #include "log/log_event_list.h"
 #include "stats_event.h"
 
diff --git a/cmds/statsd/tests/e2e/Anomaly_duration_sum_e2e_test.cpp b/cmds/statsd/tests/e2e/Anomaly_duration_sum_e2e_test.cpp
index 95e3010..70e7365 100644
--- a/cmds/statsd/tests/e2e/Anomaly_duration_sum_e2e_test.cpp
+++ b/cmds/statsd/tests/e2e/Anomaly_duration_sum_e2e_test.cpp
@@ -12,14 +12,19 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include <android/binder_ibinder.h>
+#include <android/binder_interface_utils.h>
 #include <gtest/gtest.h>
 
-#include "src/anomaly/DurationAnomalyTracker.h"
+#include <vector>
+
 #include "src/StatsLogProcessor.h"
+#include "src/StatsService.h"
+#include "src/anomaly/DurationAnomalyTracker.h"
 #include "src/stats_log_util.h"
 #include "tests/statsd_test_util.h"
 
-#include <vector>
+using ::ndk::SharedRefBase;
 
 namespace android {
 namespace os {
@@ -29,6 +34,9 @@
 
 namespace {
 
+const int kConfigKey = 789130124;
+const int kCallingUid = 0;
+
 StatsdConfig CreateStatsdConfig(int num_buckets,
                                 uint64_t threshold_ns,
                                 DurationMetric::AggregationType aggregationType,
@@ -89,6 +97,13 @@
                                            (int32_t)0x02010101), Value((int32_t)222))}),
     DEFAULT_DIMENSION_KEY);
 
+void sendConfig(shared_ptr<StatsService>& service, const StatsdConfig& config) {
+    string str;
+    config.SerializeToString(&str);
+    std::vector<uint8_t> configAsVec(str.begin(), str.end());
+    service->addConfiguration(kConfigKey, configAsVec, kCallingUid);
+}
+
 }  // namespace
 
 TEST(AnomalyDetectionE2eTest, TestDurationMetric_SUM_single_bucket) {
@@ -98,16 +113,18 @@
     const uint64_t alert_id = config.alert(0).id();
     const uint32_t refractory_period_sec = config.alert(0).refractory_period_secs();
 
-    int64_t bucketStartTimeNs = 10 * NS_PER_SEC;
-    int64_t bucketSizeNs =
-            TimeUnitToBucketSizeInMillis(config.duration_metric(0).bucket()) * 1000000;
+    shared_ptr<StatsService> service = SharedRefBase::make<StatsService>(nullptr, nullptr);
+    sendConfig(service, config);
 
-    ConfigKey cfgKey;
-    auto processor = CreateStatsLogProcessor(bucketStartTimeNs, bucketStartTimeNs, config, cfgKey);
+    auto processor = service->mProcessor;
     ASSERT_EQ(processor->mMetricsManagers.size(), 1u);
     EXPECT_TRUE(processor->mMetricsManagers.begin()->second->isConfigValid());
     ASSERT_EQ(1u, processor->mMetricsManagers.begin()->second->mAllAnomalyTrackers.size());
 
+    int64_t bucketStartTimeNs = processor->mTimeBaseNs;
+    int64_t roundedBucketStartTimeNs = bucketStartTimeNs / NS_PER_SEC * NS_PER_SEC;
+    int64_t bucketSizeNs = TimeUnitToBucketSizeInMillis(config.duration_metric(0).bucket()) * 1e6;
+
     sp<AnomalyTracker> anomalyTracker =
             processor->mMetricsManagers.begin()->second->mAllAnomalyTrackers[0];
 
@@ -158,12 +175,13 @@
     const int64_t alarmFiredTimestampSec0 = anomalyTracker->getAlarmTimestampSec(dimensionKey1);
     EXPECT_EQ(refractory_period_sec + (bucketStartTimeNs + NS_PER_SEC + 109) / NS_PER_SEC + 1,
               (uint32_t)alarmFiredTimestampSec0);
+    EXPECT_EQ(alarmFiredTimestampSec0,
+              processor->getAnomalyAlarmMonitor()->getRegisteredAlarmTimeSec());
 
     // Anomaly alarm fired.
-    auto alarmSet = processor->getAnomalyAlarmMonitor()->popSoonerThan(
-            static_cast<uint32_t>(alarmFiredTimestampSec0));
-    ASSERT_EQ(1u, alarmSet.size());
-    processor->onAnomalyAlarmFired(alarmFiredTimestampSec0 * NS_PER_SEC, alarmSet);
+    auto alarmTriggerEvent = CreateBatterySaverOnEvent(alarmFiredTimestampSec0 * NS_PER_SEC);
+    processor->OnLogEvent(alarmTriggerEvent.get(), alarmFiredTimestampSec0 * NS_PER_SEC);
+
     EXPECT_EQ(0u, anomalyTracker->getAlarmTimestampSec(dimensionKey1));
     EXPECT_EQ(refractory_period_sec + alarmFiredTimestampSec0,
               anomalyTracker->getRefractoryPeriodEndsSec(dimensionKey1));
@@ -179,39 +197,39 @@
               anomalyTracker->getRefractoryPeriodEndsSec(dimensionKey1));
 
     // Acquire wakelock wl1.
-    acquire_event =
-            CreateAcquireWakelockEvent(bucketStartTimeNs + bucketSizeNs - 5 * NS_PER_SEC - 11,
-                                       attributionUids2, attributionTags2, "wl1");
+    acquire_event = CreateAcquireWakelockEvent(
+            roundedBucketStartTimeNs + bucketSizeNs - 5 * NS_PER_SEC - 11, attributionUids2,
+            attributionTags2, "wl1");
     processor->OnLogEvent(acquire_event.get());
     const int64_t alarmFiredTimestampSec1 = anomalyTracker->getAlarmTimestampSec(dimensionKey1);
     EXPECT_EQ((bucketStartTimeNs + bucketSizeNs - 5 * NS_PER_SEC) / NS_PER_SEC,
               (uint64_t)alarmFiredTimestampSec1);
 
     // Release wakelock wl1.
-    release_event =
-            CreateReleaseWakelockEvent(bucketStartTimeNs + bucketSizeNs - 4 * NS_PER_SEC - 10,
-                                       attributionUids2, attributionTags2, "wl1");
-    processor->OnLogEvent(release_event.get());
+    int64_t release_event_time = roundedBucketStartTimeNs + bucketSizeNs - 4 * NS_PER_SEC - 10;
+    release_event = CreateReleaseWakelockEvent(release_event_time, attributionUids2,
+                                               attributionTags2, "wl1");
+    processor->OnLogEvent(release_event.get(), release_event_time);
     EXPECT_EQ(0u, anomalyTracker->getAlarmTimestampSec(dimensionKey1));
-    EXPECT_EQ(refractory_period_sec +
-                      (bucketStartTimeNs + bucketSizeNs - 4 * NS_PER_SEC - 10) / NS_PER_SEC + 1,
+    EXPECT_EQ(refractory_period_sec + (release_event_time) / NS_PER_SEC + 1,
               anomalyTracker->getRefractoryPeriodEndsSec(dimensionKey1));
 
-    alarmSet = processor->getAnomalyAlarmMonitor()->popSoonerThan(
+    auto alarmSet = processor->getAnomalyAlarmMonitor()->popSoonerThan(
             static_cast<uint32_t>(alarmFiredTimestampSec1));
     ASSERT_EQ(0u, alarmSet.size());
 
     // Acquire wakelock wl1 near the end of bucket #0.
-    acquire_event = CreateAcquireWakelockEvent(bucketStartTimeNs + bucketSizeNs - 2,
+    acquire_event = CreateAcquireWakelockEvent(roundedBucketStartTimeNs + bucketSizeNs - 2,
                                                attributionUids1, attributionTags1, "wl1");
     processor->OnLogEvent(acquire_event.get());
     EXPECT_EQ((bucketStartTimeNs + bucketSizeNs) / NS_PER_SEC,
               anomalyTracker->getAlarmTimestampSec(dimensionKey1));
 
     // Release the event at early bucket #1.
-    release_event = CreateReleaseWakelockEvent(bucketStartTimeNs + bucketSizeNs + NS_PER_SEC - 1,
-                                               attributionUids1, attributionTags1, "wl1");
-    processor->OnLogEvent(release_event.get());
+    release_event_time = roundedBucketStartTimeNs + bucketSizeNs + NS_PER_SEC - 1;
+    release_event = CreateReleaseWakelockEvent(release_event_time, attributionUids1,
+                                               attributionTags1, "wl1");
+    processor->OnLogEvent(release_event.get(), release_event_time);
     EXPECT_EQ(0u, anomalyTracker->getAlarmTimestampSec(dimensionKey1));
     // Anomaly detected when stopping the alarm. The refractory period does not change.
     EXPECT_EQ(refractory_period_sec + (bucketStartTimeNs + bucketSizeNs + NS_PER_SEC) / NS_PER_SEC,
@@ -236,17 +254,17 @@
 
     // Condition turns true.
     screen_off_event =
-            CreateScreenStateChangedEvent(bucketStartTimeNs + 2 * bucketSizeNs + NS_PER_SEC,
+            CreateScreenStateChangedEvent(roundedBucketStartTimeNs + 2 * bucketSizeNs + NS_PER_SEC,
                                           android::view::DisplayStateEnum::DISPLAY_STATE_OFF);
     processor->OnLogEvent(screen_off_event.get());
     EXPECT_EQ((bucketStartTimeNs + 2 * bucketSizeNs + NS_PER_SEC + threshold_ns) / NS_PER_SEC,
               anomalyTracker->getAlarmTimestampSec(dimensionKey1));
 
     // Condition turns to false.
-    screen_on_event =
-            CreateScreenStateChangedEvent(bucketStartTimeNs + 2 * bucketSizeNs + 2 * NS_PER_SEC + 1,
-                                          android::view::DisplayStateEnum::DISPLAY_STATE_ON);
-    processor->OnLogEvent(screen_on_event.get());
+    int64_t condition_false_time = bucketStartTimeNs + 2 * bucketSizeNs + 2 * NS_PER_SEC + 1;
+    screen_on_event = CreateScreenStateChangedEvent(
+            condition_false_time, android::view::DisplayStateEnum::DISPLAY_STATE_ON);
+    processor->OnLogEvent(screen_on_event.get(), condition_false_time);
     // Condition turns to false. Cancelled the alarm.
     EXPECT_EQ(0u, anomalyTracker->getAlarmTimestampSec(dimensionKey1));
     //  Detected one anomaly.
@@ -262,12 +280,11 @@
     EXPECT_EQ((bucketStartTimeNs + 2 * bucketSizeNs) / NS_PER_SEC + 2 + 2 + 1,
               anomalyTracker->getAlarmTimestampSec(dimensionKey1));
 
-    release_event =
-            CreateReleaseWakelockEvent(bucketStartTimeNs + 2 * bucketSizeNs + 5 * NS_PER_SEC,
-                                       attributionUids2, attributionTags2, "wl1");
+    release_event_time = roundedBucketStartTimeNs + 2 * bucketSizeNs + 5 * NS_PER_SEC;
+    release_event = CreateReleaseWakelockEvent(release_event_time, attributionUids2,
+                                               attributionTags2, "wl1");
     processor->OnLogEvent(release_event.get());
-    EXPECT_EQ(refractory_period_sec +
-                      (bucketStartTimeNs + 2 * bucketSizeNs + 5 * NS_PER_SEC) / NS_PER_SEC,
+    EXPECT_EQ(refractory_period_sec + (release_event_time) / NS_PER_SEC,
               anomalyTracker->getRefractoryPeriodEndsSec(dimensionKey1));
     EXPECT_EQ(0u, anomalyTracker->getAlarmTimestampSec(dimensionKey1));
 }
@@ -279,16 +296,18 @@
     const uint64_t alert_id = config.alert(0).id();
     const uint32_t refractory_period_sec = config.alert(0).refractory_period_secs();
 
-    int64_t bucketStartTimeNs = 10 * NS_PER_SEC;
-    int64_t bucketSizeNs =
-            TimeUnitToBucketSizeInMillis(config.duration_metric(0).bucket()) * 1000000;
+    shared_ptr<StatsService> service = SharedRefBase::make<StatsService>(nullptr, nullptr);
+    sendConfig(service, config);
 
-    ConfigKey cfgKey;
-    auto processor = CreateStatsLogProcessor(bucketStartTimeNs, bucketStartTimeNs, config, cfgKey);
+    auto processor = service->mProcessor;
     ASSERT_EQ(processor->mMetricsManagers.size(), 1u);
     EXPECT_TRUE(processor->mMetricsManagers.begin()->second->isConfigValid());
     ASSERT_EQ(1u, processor->mMetricsManagers.begin()->second->mAllAnomalyTrackers.size());
 
+    int64_t bucketStartTimeNs = processor->mTimeBaseNs;
+    int64_t roundedBucketStartTimeNs = bucketStartTimeNs / NS_PER_SEC * NS_PER_SEC;
+    int64_t bucketSizeNs = TimeUnitToBucketSizeInMillis(config.duration_metric(0).bucket()) * 1e6;
+
     sp<AnomalyTracker> anomalyTracker =
             processor->mMetricsManagers.begin()->second->mAllAnomalyTrackers[0];
 
@@ -298,96 +317,97 @@
 
     // Acquire wakelock "wc1" in bucket #0.
     auto acquire_event =
-            CreateAcquireWakelockEvent(bucketStartTimeNs + bucketSizeNs - NS_PER_SEC / 2 - 1,
+            CreateAcquireWakelockEvent(roundedBucketStartTimeNs + bucketSizeNs - NS_PER_SEC / 2 - 1,
                                        attributionUids1, attributionTags1, "wl1");
     processor->OnLogEvent(acquire_event.get());
-    EXPECT_EQ((bucketStartTimeNs + bucketSizeNs) / NS_PER_SEC + 1,
+    EXPECT_EQ((roundedBucketStartTimeNs + bucketSizeNs) / NS_PER_SEC + 1,
               anomalyTracker->getAlarmTimestampSec(dimensionKey1));
     EXPECT_EQ(0u, anomalyTracker->getRefractoryPeriodEndsSec(dimensionKey1));
 
     // Release wakelock "wc1" in bucket #0.
-    auto release_event = CreateReleaseWakelockEvent(bucketStartTimeNs + bucketSizeNs - 1,
-                                                    attributionUids1, attributionTags1, "wl1");
-    processor->OnLogEvent(release_event.get());
+    int64_t release_event_time = roundedBucketStartTimeNs + bucketSizeNs - 1;
+    auto release_event = CreateReleaseWakelockEvent(release_event_time, attributionUids1,
+                                                    attributionTags1, "wl1");
+    processor->OnLogEvent(release_event.get(), release_event_time);
     EXPECT_EQ(0u, anomalyTracker->getAlarmTimestampSec(dimensionKey1));
     EXPECT_EQ(0u, anomalyTracker->getRefractoryPeriodEndsSec(dimensionKey1));
 
     // Acquire wakelock "wc1" in bucket #1.
-    acquire_event = CreateAcquireWakelockEvent(bucketStartTimeNs + bucketSizeNs + 1,
-                                               attributionUids2, attributionTags2, "wl1");
+    acquire_event =
+            CreateAcquireWakelockEvent(roundedBucketStartTimeNs + bucketSizeNs + NS_PER_SEC + 1,
+                                       attributionUids2, attributionTags2, "wl1");
     processor->OnLogEvent(acquire_event.get());
-    EXPECT_EQ((bucketStartTimeNs + bucketSizeNs) / NS_PER_SEC + 1,
+    EXPECT_EQ((bucketStartTimeNs + bucketSizeNs + NS_PER_SEC) / NS_PER_SEC + 1,
               anomalyTracker->getAlarmTimestampSec(dimensionKey1));
     EXPECT_EQ(0u, anomalyTracker->getRefractoryPeriodEndsSec(dimensionKey1));
 
-    release_event = CreateReleaseWakelockEvent(bucketStartTimeNs + bucketSizeNs + 100,
-                                               attributionUids2, attributionTags2, "wl1");
-    processor->OnLogEvent(release_event.get());
+    release_event_time = roundedBucketStartTimeNs + bucketSizeNs + NS_PER_SEC + 100;
+    release_event = CreateReleaseWakelockEvent(release_event_time, attributionUids2,
+                                               attributionTags2, "wl1");
+    processor->OnLogEvent(release_event.get(), release_event_time);
     EXPECT_EQ(0u, anomalyTracker->getAlarmTimestampSec(dimensionKey1));
     EXPECT_EQ(0u, anomalyTracker->getRefractoryPeriodEndsSec(dimensionKey1));
 
     // Acquire wakelock "wc2" in bucket #2.
-    acquire_event = CreateAcquireWakelockEvent(bucketStartTimeNs + 2 * bucketSizeNs + 1,
-                                               attributionUids3, attributionTags3, "wl2");
+    acquire_event =
+            CreateAcquireWakelockEvent(roundedBucketStartTimeNs + 2 * bucketSizeNs + NS_PER_SEC + 1,
+                                       attributionUids3, attributionTags3, "wl2");
     processor->OnLogEvent(acquire_event.get());
-    EXPECT_EQ((bucketStartTimeNs + 2 * bucketSizeNs) / NS_PER_SEC + 2,
+    EXPECT_EQ((bucketStartTimeNs + 2 * bucketSizeNs) / NS_PER_SEC + 3,
               anomalyTracker->getAlarmTimestampSec(dimensionKey2));
     EXPECT_EQ(0u, anomalyTracker->getRefractoryPeriodEndsSec(dimensionKey2));
 
     // Release wakelock "wc2" in bucket #2.
-    release_event =
-            CreateReleaseWakelockEvent(bucketStartTimeNs + 2 * bucketSizeNs + 2 * NS_PER_SEC,
-                                       attributionUids3, attributionTags3, "wl2");
-    processor->OnLogEvent(release_event.get());
+    release_event_time = roundedBucketStartTimeNs + 2 * bucketSizeNs + 3 * NS_PER_SEC;
+    release_event = CreateReleaseWakelockEvent(release_event_time, attributionUids3,
+                                               attributionTags3, "wl2");
+    processor->OnLogEvent(release_event.get(), release_event_time);
     EXPECT_EQ(0u, anomalyTracker->getAlarmTimestampSec(dimensionKey2));
-    EXPECT_EQ(refractory_period_sec +
-                      (bucketStartTimeNs + 2 * bucketSizeNs + 2 * NS_PER_SEC) / NS_PER_SEC,
+    EXPECT_EQ(refractory_period_sec + (release_event_time) / NS_PER_SEC,
               anomalyTracker->getRefractoryPeriodEndsSec(dimensionKey2));
 
     // Acquire wakelock "wc1" in bucket #2.
     acquire_event =
-            CreateAcquireWakelockEvent(bucketStartTimeNs + 2 * bucketSizeNs + 2 * NS_PER_SEC,
+            CreateAcquireWakelockEvent(roundedBucketStartTimeNs + 2 * bucketSizeNs + 3 * NS_PER_SEC,
                                        attributionUids2, attributionTags2, "wl1");
     processor->OnLogEvent(acquire_event.get());
-    EXPECT_EQ((bucketStartTimeNs + 2 * bucketSizeNs) / NS_PER_SEC + 2 + 1,
+    EXPECT_EQ((roundedBucketStartTimeNs + 2 * bucketSizeNs) / NS_PER_SEC + 3 + 1,
               anomalyTracker->getAlarmTimestampSec(dimensionKey1));
     EXPECT_EQ(0u, anomalyTracker->getRefractoryPeriodEndsSec(dimensionKey1));
 
     // Release wakelock "wc1" in bucket #2.
-    release_event =
-            CreateReleaseWakelockEvent(bucketStartTimeNs + 2 * bucketSizeNs + 2.5 * NS_PER_SEC,
-                                       attributionUids2, attributionTags2, "wl1");
-    processor->OnLogEvent(release_event.get());
+    release_event_time = roundedBucketStartTimeNs + 2 * bucketSizeNs + 3.5 * NS_PER_SEC;
+    release_event = CreateReleaseWakelockEvent(release_event_time, attributionUids2,
+                                               attributionTags2, "wl1");
+    processor->OnLogEvent(release_event.get(), release_event_time);
     EXPECT_EQ(0u, anomalyTracker->getAlarmTimestampSec(dimensionKey1));
-    EXPECT_EQ(refractory_period_sec +
-                      (int64_t)(bucketStartTimeNs + 2 * bucketSizeNs + 2.5 * NS_PER_SEC) /
-                              NS_PER_SEC +
-                      1,
+    EXPECT_EQ(refractory_period_sec + (release_event_time) / NS_PER_SEC + 1,
               anomalyTracker->getRefractoryPeriodEndsSec(dimensionKey1));
 
-    acquire_event =
-            CreateAcquireWakelockEvent(bucketStartTimeNs + 6 * bucketSizeNs - NS_PER_SEC + 4,
-                                       attributionUids3, attributionTags3, "wl2");
+    acquire_event = CreateAcquireWakelockEvent(roundedBucketStartTimeNs + 6 * bucketSizeNs + 4,
+                                               attributionUids3, attributionTags3, "wl2");
     processor->OnLogEvent(acquire_event.get());
-    acquire_event =
-            CreateAcquireWakelockEvent(bucketStartTimeNs + 6 * bucketSizeNs - NS_PER_SEC + 5,
-                                       attributionUids1, attributionTags1, "wl1");
+    acquire_event = CreateAcquireWakelockEvent(roundedBucketStartTimeNs + 6 * bucketSizeNs + 5,
+                                               attributionUids1, attributionTags1, "wl1");
     processor->OnLogEvent(acquire_event.get());
-    EXPECT_EQ((bucketStartTimeNs + 6 * bucketSizeNs) / NS_PER_SEC + 1,
+    EXPECT_EQ((roundedBucketStartTimeNs + 6 * bucketSizeNs) / NS_PER_SEC + 2,
               anomalyTracker->getAlarmTimestampSec(dimensionKey1));
-    EXPECT_EQ((bucketStartTimeNs + 6 * bucketSizeNs) / NS_PER_SEC + 1,
+    EXPECT_EQ((roundedBucketStartTimeNs + 6 * bucketSizeNs) / NS_PER_SEC + 2,
               anomalyTracker->getAlarmTimestampSec(dimensionKey2));
 
-    release_event = CreateReleaseWakelockEvent(bucketStartTimeNs + 6 * bucketSizeNs + 2,
-                                               attributionUids3, attributionTags3, "wl2");
-    processor->OnLogEvent(release_event.get());
-    release_event = CreateReleaseWakelockEvent(bucketStartTimeNs + 6 * bucketSizeNs + 6,
-                                               attributionUids1, attributionTags1, "wl1");
-    processor->OnLogEvent(release_event.get());
+    release_event_time = roundedBucketStartTimeNs + 6 * bucketSizeNs + NS_PER_SEC + 2;
+    release_event = CreateReleaseWakelockEvent(release_event_time, attributionUids3,
+                                               attributionTags3, "wl2");
+    processor->OnLogEvent(release_event.get(), release_event_time);
+    release_event = CreateReleaseWakelockEvent(release_event_time + 4, attributionUids1,
+                                               attributionTags1, "wl1");
+    processor->OnLogEvent(release_event.get(), release_event_time + 4);
     EXPECT_EQ(0u, anomalyTracker->getAlarmTimestampSec(dimensionKey1));
     EXPECT_EQ(0u, anomalyTracker->getAlarmTimestampSec(dimensionKey2));
     // The buckets are not messed up across dimensions. Only one dimension has anomaly triggered.
-    EXPECT_EQ(refractory_period_sec + (int64_t)(bucketStartTimeNs + 6 * bucketSizeNs) / NS_PER_SEC +
+    EXPECT_EQ(refractory_period_sec +
+                      (int64_t)(roundedBucketStartTimeNs + 6 * bucketSizeNs + NS_PER_SEC) /
+                              NS_PER_SEC +
                       1,
               anomalyTracker->getRefractoryPeriodEndsSec(dimensionKey1));
 }
@@ -396,20 +416,22 @@
     const int num_buckets = 2;
     const uint64_t threshold_ns = 3 * NS_PER_SEC;
     auto config = CreateStatsdConfig(num_buckets, threshold_ns, DurationMetric::SUM, false);
-    int64_t bucketStartTimeNs = 10 * NS_PER_SEC;
-    int64_t bucketSizeNs =
-            TimeUnitToBucketSizeInMillis(config.duration_metric(0).bucket()) * 1000000;
-
     const uint64_t alert_id = config.alert(0).id();
+    int64_t bucketSizeNs = TimeUnitToBucketSizeInMillis(config.duration_metric(0).bucket()) * 1e6;
     const uint32_t refractory_period_sec = 3 * bucketSizeNs / NS_PER_SEC;
     config.mutable_alert(0)->set_refractory_period_secs(refractory_period_sec);
 
-    ConfigKey cfgKey;
-    auto processor = CreateStatsLogProcessor(bucketStartTimeNs, bucketStartTimeNs, config, cfgKey);
+    shared_ptr<StatsService> service = SharedRefBase::make<StatsService>(nullptr, nullptr);
+    sendConfig(service, config);
+
+    auto processor = service->mProcessor;
     ASSERT_EQ(processor->mMetricsManagers.size(), 1u);
     EXPECT_TRUE(processor->mMetricsManagers.begin()->second->isConfigValid());
     ASSERT_EQ(1u, processor->mMetricsManagers.begin()->second->mAllAnomalyTrackers.size());
 
+    int64_t bucketStartTimeNs = processor->mTimeBaseNs;
+    int64_t roundedBucketStartTimeNs = bucketStartTimeNs / NS_PER_SEC * NS_PER_SEC;
+
     sp<AnomalyTracker> anomalyTracker =
             processor->mMetricsManagers.begin()->second->mAllAnomalyTrackers[0];
 
@@ -418,81 +440,81 @@
     processor->OnLogEvent(screen_off_event.get());
 
     // Acquire wakelock "wc1" in bucket #0.
-    auto acquire_event = CreateAcquireWakelockEvent(bucketStartTimeNs + bucketSizeNs - 100,
+    auto acquire_event = CreateAcquireWakelockEvent(roundedBucketStartTimeNs + bucketSizeNs - 100,
                                                     attributionUids1, attributionTags1, "wl1");
     processor->OnLogEvent(acquire_event.get());
-    EXPECT_EQ((bucketStartTimeNs + bucketSizeNs) / NS_PER_SEC + 3,
+    EXPECT_EQ((roundedBucketStartTimeNs + bucketSizeNs) / NS_PER_SEC + 3,
               anomalyTracker->getAlarmTimestampSec(dimensionKey1));
     EXPECT_EQ(0u, anomalyTracker->getRefractoryPeriodEndsSec(dimensionKey1));
 
     // Acquire the wakelock "wc1" again.
     acquire_event =
-            CreateAcquireWakelockEvent(bucketStartTimeNs + bucketSizeNs + 2 * NS_PER_SEC + 1,
+            CreateAcquireWakelockEvent(roundedBucketStartTimeNs + bucketSizeNs + 2 * NS_PER_SEC + 1,
                                        attributionUids1, attributionTags1, "wl1");
     processor->OnLogEvent(acquire_event.get());
     // The alarm does not change.
-    EXPECT_EQ((bucketStartTimeNs + bucketSizeNs) / NS_PER_SEC + 3,
+    EXPECT_EQ((roundedBucketStartTimeNs + bucketSizeNs) / NS_PER_SEC + 3,
               anomalyTracker->getAlarmTimestampSec(dimensionKey1));
     EXPECT_EQ(0u, anomalyTracker->getRefractoryPeriodEndsSec(dimensionKey1));
 
     // Anomaly alarm fired late.
-    const int64_t firedAlarmTimestampNs = bucketStartTimeNs + 2 * bucketSizeNs - NS_PER_SEC;
-    auto alarmSet = processor->getAnomalyAlarmMonitor()->popSoonerThan(
-            static_cast<uint32_t>(firedAlarmTimestampNs / NS_PER_SEC));
-    ASSERT_EQ(1u, alarmSet.size());
-    processor->onAnomalyAlarmFired(firedAlarmTimestampNs, alarmSet);
+    const int64_t firedAlarmTimestampNs = roundedBucketStartTimeNs + 2 * bucketSizeNs - NS_PER_SEC;
+    auto alarmTriggerEvent = CreateBatterySaverOnEvent(firedAlarmTimestampNs);
+    processor->OnLogEvent(alarmTriggerEvent.get(), firedAlarmTimestampNs);
     EXPECT_EQ(0u, anomalyTracker->getAlarmTimestampSec(dimensionKey1));
     EXPECT_EQ(refractory_period_sec + firedAlarmTimestampNs / NS_PER_SEC,
               anomalyTracker->getRefractoryPeriodEndsSec(dimensionKey1));
 
-    acquire_event = CreateAcquireWakelockEvent(bucketStartTimeNs + 2 * bucketSizeNs - 100,
+    acquire_event = CreateAcquireWakelockEvent(roundedBucketStartTimeNs + 2 * bucketSizeNs - 100,
                                                attributionUids1, attributionTags1, "wl1");
     processor->OnLogEvent(acquire_event.get());
     EXPECT_EQ(0u, anomalyTracker->getAlarmTimestampSec(dimensionKey1));
     EXPECT_EQ(refractory_period_sec + firedAlarmTimestampNs / NS_PER_SEC,
               anomalyTracker->getRefractoryPeriodEndsSec(dimensionKey1));
 
-    auto release_event = CreateReleaseWakelockEvent(bucketStartTimeNs + 2 * bucketSizeNs + 1,
-                                                    attributionUids1, attributionTags1, "wl1");
-    processor->OnLogEvent(release_event.get());
+    int64_t release_event_time = bucketStartTimeNs + 2 * bucketSizeNs + 1;
+    auto release_event = CreateReleaseWakelockEvent(release_event_time, attributionUids1,
+                                                    attributionTags1, "wl1");
+    processor->OnLogEvent(release_event.get(), release_event_time);
     EXPECT_EQ(0u, anomalyTracker->getAlarmTimestampSec(dimensionKey1));
     // Within the refractory period. No anomaly.
     EXPECT_EQ(refractory_period_sec + firedAlarmTimestampNs / NS_PER_SEC,
               anomalyTracker->getRefractoryPeriodEndsSec(dimensionKey1));
 
     // A new wakelock, but still within refractory period.
-    acquire_event =
-            CreateAcquireWakelockEvent(bucketStartTimeNs + 2 * bucketSizeNs + 10 * NS_PER_SEC,
-                                       attributionUids1, attributionTags1, "wl1");
+    acquire_event = CreateAcquireWakelockEvent(
+            roundedBucketStartTimeNs + 2 * bucketSizeNs + 10 * NS_PER_SEC, attributionUids1,
+            attributionTags1, "wl1");
     processor->OnLogEvent(acquire_event.get());
     EXPECT_EQ(refractory_period_sec + firedAlarmTimestampNs / NS_PER_SEC,
               anomalyTracker->getAlarmTimestampSec(dimensionKey1));
 
-    release_event = CreateReleaseWakelockEvent(bucketStartTimeNs + 3 * bucketSizeNs - NS_PER_SEC,
-                                               attributionUids1, attributionTags1, "wl1");
+    release_event =
+            CreateReleaseWakelockEvent(roundedBucketStartTimeNs + 3 * bucketSizeNs - NS_PER_SEC,
+                                       attributionUids1, attributionTags1, "wl1");
     // Still in the refractory period. No anomaly.
     processor->OnLogEvent(release_event.get());
     EXPECT_EQ(refractory_period_sec + firedAlarmTimestampNs / NS_PER_SEC,
               anomalyTracker->getRefractoryPeriodEndsSec(dimensionKey1));
 
-    acquire_event =
-            CreateAcquireWakelockEvent(bucketStartTimeNs + 5 * bucketSizeNs - 3 * NS_PER_SEC - 5,
-                                       attributionUids1, attributionTags1, "wl1");
+    acquire_event = CreateAcquireWakelockEvent(
+            roundedBucketStartTimeNs + 5 * bucketSizeNs - 2 * NS_PER_SEC - 5, attributionUids1,
+            attributionTags1, "wl1");
     processor->OnLogEvent(acquire_event.get());
-    EXPECT_EQ((bucketStartTimeNs + 5 * bucketSizeNs) / NS_PER_SEC,
+    EXPECT_EQ((roundedBucketStartTimeNs + 5 * bucketSizeNs) / NS_PER_SEC + 1,
               anomalyTracker->getAlarmTimestampSec(dimensionKey1));
 
-    release_event =
-            CreateReleaseWakelockEvent(bucketStartTimeNs + 5 * bucketSizeNs - 3 * NS_PER_SEC - 4,
-                                       attributionUids1, attributionTags1, "wl1");
-    processor->OnLogEvent(release_event.get());
+    release_event_time = roundedBucketStartTimeNs + 5 * bucketSizeNs - 2 * NS_PER_SEC - 4;
+    release_event = CreateReleaseWakelockEvent(release_event_time, attributionUids1,
+                                               attributionTags1, "wl1");
+    processor->OnLogEvent(release_event.get(), release_event_time);
     EXPECT_EQ(0u, anomalyTracker->getAlarmTimestampSec(dimensionKey1));
 
-    acquire_event =
-            CreateAcquireWakelockEvent(bucketStartTimeNs + 5 * bucketSizeNs - 3 * NS_PER_SEC - 3,
-                                       attributionUids1, attributionTags1, "wl1");
+    acquire_event = CreateAcquireWakelockEvent(
+            roundedBucketStartTimeNs + 5 * bucketSizeNs - 2 * NS_PER_SEC - 3, attributionUids1,
+            attributionTags1, "wl1");
     processor->OnLogEvent(acquire_event.get());
-    EXPECT_EQ((bucketStartTimeNs + 5 * bucketSizeNs) / NS_PER_SEC,
+    EXPECT_EQ((roundedBucketStartTimeNs + 5 * bucketSizeNs) / NS_PER_SEC + 1,
               anomalyTracker->getAlarmTimestampSec(dimensionKey1));
 }
 
diff --git a/cmds/statsd/tests/shell/ShellSubscriber_test.cpp b/cmds/statsd/tests/shell/ShellSubscriber_test.cpp
index e384b6a..1f0e2c8 100644
--- a/cmds/statsd/tests/shell/ShellSubscriber_test.cpp
+++ b/cmds/statsd/tests/shell/ShellSubscriber_test.cpp
@@ -20,9 +20,9 @@
 
 #include <vector>
 
-#include "frameworks/base/cmds/statsd/src/atoms.pb.h"
 #include "frameworks/base/cmds/statsd/src/shell/shell_config.pb.h"
 #include "frameworks/base/cmds/statsd/src/shell/shell_data.pb.h"
+#include "frameworks/proto_logging/stats/atoms.pb.h"
 #include "stats_event.h"
 #include "tests/metrics/metrics_test_helper.h"
 #include "tests/statsd_test_util.h"
diff --git a/config/boot-image-profile.txt b/config/boot-image-profile.txt
index 30826e0..09aaf5b 100644
--- a/config/boot-image-profile.txt
+++ b/config/boot-image-profile.txt
@@ -18839,7 +18839,6 @@
 HSPLandroid/telephony/PreciseDataConnectionState;-><init>(Landroid/os/Parcel;Landroid/telephony/PreciseDataConnectionState$1;)V
 HPLandroid/telephony/PreciseDataConnectionState;->equals(Ljava/lang/Object;)Z
 HPLandroid/telephony/PreciseDataConnectionState;->getDataConnectionApn()Ljava/lang/String;
-HPLandroid/telephony/PreciseDataConnectionState;->getDataConnectionLinkProperties()Landroid/net/LinkProperties;
 HPLandroid/telephony/PreciseDataConnectionState;->getNetworkType()I
 HPLandroid/telephony/PreciseDataConnectionState;->getState()I
 HSPLandroid/telephony/PreciseDataConnectionState;->toString()Ljava/lang/String;
diff --git a/config/hiddenapi-temp-blocklist.txt b/config/hiddenapi-temp-blocklist.txt
new file mode 100644
index 0000000..246eeea
--- /dev/null
+++ b/config/hiddenapi-temp-blocklist.txt
@@ -0,0 +1,55 @@
+Landroid/app/IActivityManager$Stub$Proxy;->setActivityController(Landroid/app/IActivityController;Z)V
+Landroid/app/IActivityManager$Stub$Proxy;->updatePersistentConfiguration(Landroid/content/res/Configuration;)V
+Landroid/app/IActivityManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IActivityManager;
+Landroid/app/IInstrumentationWatcher$Stub;-><init>()V
+Landroid/app/INotificationManager$Stub;->TRANSACTION_enqueueNotificationWithTag:I
+Landroid/bluetooth/IBluetooth$Stub$Proxy;->getConnectionState(Landroid/bluetooth/BluetoothDevice;)I
+Landroid/bluetooth/IBluetooth$Stub;->TRANSACTION_enable:I
+Landroid/bluetooth/IBluetoothManager$Stub;->TRANSACTION_enable:I
+Landroid/companion/ICompanionDeviceDiscoveryService$Stub;-><init>()V
+Landroid/content/om/IOverlayManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/om/IOverlayManager;
+Landroid/content/pm/IPackageManager$Stub;->TRANSACTION_getApplicationInfo:I
+Landroid/hardware/ICameraService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/ICameraService;
+Landroid/hardware/input/IInputManager$Stub;->TRANSACTION_injectInputEvent:I
+Landroid/hardware/location/IActivityRecognitionHardwareClient$Stub;-><init>()V
+Landroid/hardware/usb/IUsbManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/usb/IUsbManager;
+Landroid/location/ICountryDetector$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/ICountryDetector;
+Landroid/location/IGeofenceProvider$Stub;-><init>()V
+Landroid/location/ILocationManager$Stub;->TRANSACTION_getAllProviders:I
+Landroid/Manifest$permission;->CAPTURE_SECURE_VIDEO_OUTPUT:Ljava/lang/String;
+Landroid/Manifest$permission;->CAPTURE_VIDEO_OUTPUT:Ljava/lang/String;
+Landroid/Manifest$permission;->READ_FRAME_BUFFER:Ljava/lang/String;
+Landroid/media/IVolumeController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IVolumeController;
+Landroid/net/INetworkPolicyListener$Stub;-><init>()V
+Landroid/net/nsd/INsdManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/nsd/INsdManager;
+Landroid/net/sip/ISipSession$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/sip/ISipSession;
+Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getScanResults:I
+Landroid/net/wifi/p2p/IWifiP2pManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/p2p/IWifiP2pManager;
+Landroid/nfc/INfcAdapter$Stub;->TRANSACTION_enable:I
+Landroid/os/IPowerManager$Stub;->TRANSACTION_acquireWakeLock:I
+Landroid/os/IPowerManager$Stub;->TRANSACTION_goToSleep:I
+Landroid/service/euicc/IEuiccService$Stub;-><init>()V
+Landroid/service/media/IMediaBrowserServiceCallbacks$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/media/IMediaBrowserServiceCallbacks;
+Landroid/telephony/mbms/IMbmsStreamingSessionCallback$Stub;-><init>()V
+Landroid/telephony/mbms/IStreamingServiceCallback$Stub;-><init>()V
+Landroid/telephony/mbms/vendor/IMbmsStreamingService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/telephony/mbms/vendor/IMbmsStreamingService;
+Lcom/android/ims/ImsConfigListener$Stub;-><init>()V
+Lcom/android/ims/internal/IImsCallSession$Stub;-><init>()V
+Lcom/android/ims/internal/IImsConfig$Stub;-><init>()V
+Lcom/android/ims/internal/IImsEcbm$Stub;-><init>()V
+Lcom/android/ims/internal/IImsService$Stub;-><init>()V
+Lcom/android/ims/internal/IImsService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsService;
+Lcom/android/ims/internal/IImsUt$Stub;-><init>()V
+Lcom/android/ims/internal/IImsVideoCallProvider$Stub;-><init>()V
+Lcom/android/ims/internal/uce/options/IOptionsService$Stub;-><init>()V
+Lcom/android/ims/internal/uce/presence/IPresenceService$Stub;-><init>()V
+Lcom/android/ims/internal/uce/uceservice/IUceListener$Stub;-><init>()V
+Lcom/android/ims/internal/uce/uceservice/IUceService$Stub;-><init>()V
+Lcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;->showSessionFromSession(Landroid/os/IBinder;Landroid/os/Bundle;I)Z
+Lcom/android/internal/appwidget/IAppWidgetService$Stub;->TRANSACTION_bindAppWidgetId:I
+Lcom/android/internal/location/ILocationProvider$Stub;-><init>()V
+Lcom/android/internal/location/ILocationProviderManager$Stub;-><init>()V
+Lcom/android/internal/location/ILocationProviderManager$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/location/ILocationProviderManager;
+Lcom/android/internal/telephony/ITelephony$Stub;->DESCRIPTOR:Ljava/lang/String;
+Lcom/android/internal/telephony/ITelephony$Stub;->TRANSACTION_dial:I
+Lcom/android/internal/widget/IRemoteViewsFactory$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/widget/IRemoteViewsFactory;
diff --git a/config/hiddenapi-unsupported.txt b/config/hiddenapi-unsupported.txt
index a3543dc..8a377ac 100644
--- a/config/hiddenapi-unsupported.txt
+++ b/config/hiddenapi-unsupported.txt
@@ -26,19 +26,14 @@
 Landroid/app/IActivityManager$Stub$Proxy;->getProcessLimit()I
 Landroid/app/IActivityManager$Stub$Proxy;->getProcessPss([I)[J
 Landroid/app/IActivityManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/app/IActivityManager$Stub$Proxy;->setActivityController(Landroid/app/IActivityController;Z)V
-Landroid/app/IActivityManager$Stub$Proxy;->updatePersistentConfiguration(Landroid/content/res/Configuration;)V
-Landroid/app/IActivityManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IActivityManager;
 Landroid/app/IAlarmManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Landroid/app/IAlarmManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IAlarmManager;
 Landroid/app/IAlarmManager$Stub;->TRANSACTION_remove:I
 Landroid/app/IAlarmManager$Stub;->TRANSACTION_set:I
 Landroid/app/IAssistDataReceiver$Stub;-><init>()V
-Landroid/app/IInstrumentationWatcher$Stub;-><init>()V
 Landroid/app/INotificationManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Landroid/app/INotificationManager$Stub$Proxy;->areNotificationsEnabledForPackage(Ljava/lang/String;I)Z
 Landroid/app/INotificationManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/INotificationManager;
-Landroid/app/INotificationManager$Stub;->TRANSACTION_enqueueNotificationWithTag:I
 Landroid/app/IProcessObserver$Stub;-><init>()V
 Landroid/app/ISearchManager$Stub$Proxy;->getGlobalSearchActivity()Landroid/content/ComponentName;
 Landroid/app/ISearchManager$Stub$Proxy;->getWebSearchActivity()Landroid/content/ComponentName;
@@ -68,9 +63,7 @@
 Landroid/app/trust/ITrustManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Landroid/app/usage/IUsageStatsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/usage/IUsageStatsManager;
 Landroid/bluetooth/IBluetooth$Stub$Proxy;->getAddress()Ljava/lang/String;
-Landroid/bluetooth/IBluetooth$Stub$Proxy;->getConnectionState(Landroid/bluetooth/BluetoothDevice;)I
 Landroid/bluetooth/IBluetooth$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetooth;
-Landroid/bluetooth/IBluetooth$Stub;->TRANSACTION_enable:I
 Landroid/bluetooth/IBluetoothA2dp$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothA2dp;
 Landroid/bluetooth/IBluetoothCallback$Stub;-><init>()V
 Landroid/bluetooth/IBluetoothGattCallback$Stub;-><init>()V
@@ -79,11 +72,9 @@
 Landroid/bluetooth/IBluetoothHidDeviceCallback$Stub;-><init>()V
 Landroid/bluetooth/IBluetoothManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Landroid/bluetooth/IBluetoothManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothManager;
-Landroid/bluetooth/IBluetoothManager$Stub;->TRANSACTION_enable:I
 Landroid/bluetooth/IBluetoothManagerCallback$Stub;-><init>()V
 Landroid/bluetooth/IBluetoothPbap$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothPbap;
 Landroid/bluetooth/IBluetoothStateChangeCallback$Stub;-><init>()V
-Landroid/companion/ICompanionDeviceDiscoveryService$Stub;-><init>()V
 Landroid/content/IClipboard$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Landroid/content/IClipboard$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/IClipboard;
 Landroid/content/IContentService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
@@ -108,7 +99,6 @@
 Landroid/content/ISyncStatusObserver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
 Landroid/content/ISyncStatusObserver$Stub;-><init>()V
 Landroid/content/ISyncStatusObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/ISyncStatusObserver;
-Landroid/content/om/IOverlayManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/om/IOverlayManager;
 Landroid/content/pm/IPackageDataObserver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Landroid/content/pm/IPackageDataObserver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
 Landroid/content/pm/IPackageDataObserver$Stub;-><init>()V
@@ -141,7 +131,6 @@
 Landroid/content/pm/IPackageManager$Stub$Proxy;->getPackagesForUid(I)[Ljava/lang/String;
 Landroid/content/pm/IPackageManager$Stub$Proxy;->getSystemSharedLibraryNames()[Ljava/lang/String;
 Landroid/content/pm/IPackageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageManager;
-Landroid/content/pm/IPackageManager$Stub;->TRANSACTION_getApplicationInfo:I
 Landroid/content/pm/IPackageMoveObserver$Stub;-><init>()V
 Landroid/content/pm/IPackageMoveObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageMoveObserver;
 Landroid/content/pm/IPackageStatsObserver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
@@ -155,30 +144,20 @@
 Landroid/hardware/display/IDisplayManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/display/IDisplayManager;
 Landroid/hardware/fingerprint/IFingerprintService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Landroid/hardware/fingerprint/IFingerprintService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/fingerprint/IFingerprintService;
-Landroid/hardware/ICameraService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/ICameraService;
 Landroid/hardware/input/IInputManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Landroid/hardware/input/IInputManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/input/IInputManager;
-Landroid/hardware/input/IInputManager$Stub;->TRANSACTION_injectInputEvent:I
-Landroid/hardware/location/IActivityRecognitionHardwareClient$Stub;-><init>()V
 Landroid/hardware/location/IContextHubService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IContextHubService;
 Landroid/hardware/usb/IUsbManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/hardware/usb/IUsbManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/usb/IUsbManager;
-Landroid/location/ICountryDetector$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/ICountryDetector;
 Landroid/location/ICountryListener$Stub;-><init>()V
 Landroid/location/IGeocodeProvider$Stub;-><init>()V
 Landroid/location/IGeocodeProvider$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/IGeocodeProvider;
-Landroid/location/IGeofenceProvider$Stub;-><init>()V
 Landroid/location/ILocationListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Landroid/location/ILocationListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
 Landroid/location/ILocationListener$Stub;-><init>()V
 Landroid/location/ILocationListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/ILocationListener;
 Landroid/location/ILocationManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Landroid/location/ILocationManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/ILocationManager;
-Landroid/location/ILocationManager$Stub;->TRANSACTION_getAllProviders:I
 Landroid/location/INetInitiatedListener$Stub;-><init>()V
-Landroid/Manifest$permission;->CAPTURE_SECURE_VIDEO_OUTPUT:Ljava/lang/String;
-Landroid/Manifest$permission;->CAPTURE_VIDEO_OUTPUT:Ljava/lang/String;
-Landroid/Manifest$permission;->READ_FRAME_BUFFER:Ljava/lang/String;
 Landroid/media/IAudioRoutesObserver$Stub;-><init>()V
 Landroid/media/IAudioService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Landroid/media/IAudioService$Stub;-><init>()V
@@ -186,7 +165,6 @@
 Landroid/media/IMediaRouterService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IMediaRouterService;
 Landroid/media/IMediaScannerListener$Stub;-><init>()V
 Landroid/media/IMediaScannerService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IMediaScannerService;
-Landroid/media/IVolumeController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IVolumeController;
 Landroid/media/session/ISessionManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/session/ISessionManager;
 Landroid/media/tv/ITvRemoteProvider$Stub;-><init>()V
 Landroid/net/IConnectivityManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
@@ -200,23 +178,17 @@
 Landroid/net/IConnectivityManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
 Landroid/net/IConnectivityManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/IConnectivityManager;
 Landroid/net/INetworkManagementEventObserver$Stub;-><init>()V
-Landroid/net/INetworkPolicyListener$Stub;-><init>()V
 Landroid/net/INetworkPolicyManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkPolicyManager;
 Landroid/net/INetworkScoreService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkScoreService;
 Landroid/net/INetworkStatsService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Landroid/net/INetworkStatsService$Stub$Proxy;->getMobileIfaces()[Ljava/lang/String;
 Landroid/net/INetworkStatsService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkStatsService;
-Landroid/net/nsd/INsdManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/nsd/INsdManager;
-Landroid/net/sip/ISipSession$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/sip/ISipSession;
 Landroid/net/wifi/IWifiManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Landroid/net/wifi/IWifiManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/IWifiManager;
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getScanResults:I
 Landroid/net/wifi/IWifiScanner$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Landroid/net/wifi/IWifiScanner$Stub$Proxy;->mRemote:Landroid/os/IBinder;
 Landroid/net/wifi/IWifiScanner$Stub;-><init>()V
 Landroid/net/wifi/IWifiScanner$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/IWifiScanner;
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/p2p/IWifiP2pManager;
-Landroid/nfc/INfcAdapter$Stub;->TRANSACTION_enable:I
 Landroid/os/IBatteryPropertiesRegistrar$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Landroid/os/IDeviceIdentifiersPolicyService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IDeviceIdentifiersPolicyService;
 Landroid/os/IDeviceIdleController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IDeviceIdleController;
@@ -227,8 +199,6 @@
 Landroid/os/IPowerManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Landroid/os/IPowerManager$Stub$Proxy;->isLightDeviceIdleMode()Z
 Landroid/os/IPowerManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IPowerManager;
-Landroid/os/IPowerManager$Stub;->TRANSACTION_acquireWakeLock:I
-Landroid/os/IPowerManager$Stub;->TRANSACTION_goToSleep:I
 Landroid/os/IRecoverySystem$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IRecoverySystem;
 Landroid/os/IRemoteCallback$Stub;-><init>()V
 Landroid/os/IUpdateEngine$Stub;-><init>()V
@@ -241,16 +211,11 @@
 Landroid/security/IKeyChainService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/security/IKeyChainService;
 Landroid/security/keystore/IKeystoreService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/security/keystore/IKeystoreService;
 Landroid/service/dreams/IDreamManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/dreams/IDreamManager;
-Landroid/service/euicc/IEuiccService$Stub;-><init>()V
-Landroid/service/media/IMediaBrowserServiceCallbacks$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/media/IMediaBrowserServiceCallbacks;
 Landroid/service/notification/INotificationListener$Stub;-><init>()V
 Landroid/service/persistentdata/IPersistentDataBlockService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/persistentdata/IPersistentDataBlockService;
 Landroid/service/vr/IVrManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/vr/IVrManager;
 Landroid/service/wallpaper/IWallpaperConnection$Stub;-><init>()V
 Landroid/service/wallpaper/IWallpaperService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/wallpaper/IWallpaperService;
-Landroid/telephony/mbms/IMbmsStreamingSessionCallback$Stub;-><init>()V
-Landroid/telephony/mbms/IStreamingServiceCallback$Stub;-><init>()V
-Landroid/telephony/mbms/vendor/IMbmsStreamingService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/telephony/mbms/vendor/IMbmsStreamingService;
 Landroid/view/accessibility/IAccessibilityManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Landroid/view/accessibility/IAccessibilityManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/accessibility/IAccessibilityManager;
 Landroid/view/autofill/IAutoFillManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
@@ -274,19 +239,7 @@
 Landroid/webkit/IWebViewUpdateService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Landroid/webkit/IWebViewUpdateService$Stub$Proxy;->waitForAndGetProvider()Landroid/webkit/WebViewProviderResponse;
 Landroid/webkit/IWebViewUpdateService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/webkit/IWebViewUpdateService;
-Lcom/android/ims/ImsConfigListener$Stub;-><init>()V
-Lcom/android/ims/internal/IImsCallSession$Stub;-><init>()V
 Lcom/android/ims/internal/IImsCallSession$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsCallSession;
-Lcom/android/ims/internal/IImsConfig$Stub;-><init>()V
-Lcom/android/ims/internal/IImsEcbm$Stub;-><init>()V
-Lcom/android/ims/internal/IImsService$Stub;-><init>()V
-Lcom/android/ims/internal/IImsService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsService;
-Lcom/android/ims/internal/IImsUt$Stub;-><init>()V
-Lcom/android/ims/internal/IImsVideoCallProvider$Stub;-><init>()V
-Lcom/android/ims/internal/uce/options/IOptionsService$Stub;-><init>()V
-Lcom/android/ims/internal/uce/presence/IPresenceService$Stub;-><init>()V
-Lcom/android/ims/internal/uce/uceservice/IUceListener$Stub;-><init>()V
-Lcom/android/ims/internal/uce/uceservice/IUceService$Stub;-><init>()V
 Lcom/android/internal/app/IAppOpsCallback$Stub;-><init>()V
 Lcom/android/internal/app/IAppOpsService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Lcom/android/internal/app/IAppOpsService$Stub$Proxy;->checkOperation(IILjava/lang/String;)I
@@ -313,15 +266,10 @@
 Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Lcom/android/internal/app/IBatteryStats$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IBatteryStats;
 Lcom/android/internal/app/IMediaContainerService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IMediaContainerService;
-Lcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;->showSessionFromSession(Landroid/os/IBinder;Landroid/os/Bundle;I)Z
 Lcom/android/internal/app/IVoiceInteractionManagerService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IVoiceInteractionManagerService;
 Lcom/android/internal/appwidget/IAppWidgetService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/appwidget/IAppWidgetService;
-Lcom/android/internal/appwidget/IAppWidgetService$Stub;->TRANSACTION_bindAppWidgetId:I
 Lcom/android/internal/backup/IBackupTransport$Stub;-><init>()V
-Lcom/android/internal/location/ILocationProvider$Stub;-><init>()V
 Lcom/android/internal/location/ILocationProvider$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/location/ILocationProvider;
-Lcom/android/internal/location/ILocationProviderManager$Stub;-><init>()V
-Lcom/android/internal/location/ILocationProviderManager$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/location/ILocationProviderManager;
 Lcom/android/internal/os/IDropBoxManagerService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/os/IDropBoxManagerService;
 Lcom/android/internal/policy/IKeyguardService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/policy/IKeyguardService;
 Lcom/android/internal/policy/IKeyguardStateCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/policy/IKeyguardStateCallback;
@@ -343,9 +291,7 @@
 Lcom/android/internal/telephony/ITelephony$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Lcom/android/internal/telephony/ITelephony$Stub$Proxy;->mRemote:Landroid/os/IBinder;
 Lcom/android/internal/telephony/ITelephony$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/ITelephony;
-Lcom/android/internal/telephony/ITelephony$Stub;->DESCRIPTOR:Ljava/lang/String;
 Lcom/android/internal/telephony/ITelephony$Stub;->TRANSACTION_call:I
-Lcom/android/internal/telephony/ITelephony$Stub;->TRANSACTION_dial:I
 Lcom/android/internal/telephony/ITelephony$Stub;->TRANSACTION_getDeviceId:I
 Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Lcom/android/internal/telephony/ITelephonyRegistry$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/ITelephonyRegistry;
@@ -355,4 +301,3 @@
 Lcom/android/internal/view/IInputMethodManager$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/view/IInputMethodManager;
 Lcom/android/internal/view/IInputMethodSession$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/view/IInputMethodSession;
 Lcom/android/internal/widget/ILockSettings$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/widget/ILockSettings;
-Lcom/android/internal/widget/IRemoteViewsFactory$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/widget/IRemoteViewsFactory;
diff --git a/config/preloaded-classes b/config/preloaded-classes
index 481bcb5..d56fc77 100644
--- a/config/preloaded-classes
+++ b/config/preloaded-classes
@@ -4539,7 +4539,6 @@
 android.os.BadParcelableException
 android.os.BaseBundle$NoImagePreloadHolder
 android.os.BaseBundle
-android.os.BasicShellCommandHandler
 android.os.BatteryManager
 android.os.BatteryManagerInternal
 android.os.BatteryProperty$1
@@ -9565,6 +9564,7 @@
 com.android.internal.widget.VerifyCredentialResponse
 com.android.internal.widget.ViewClippingUtil$ClippingParameters
 com.android.internal.widget.ViewClippingUtil
+com.android.modules.utils.BasicShellCommandHandler
 com.android.okhttp.Address
 com.android.okhttp.AndroidShimResponseCache
 com.android.okhttp.Authenticator
diff --git a/core/api/Android.bp b/core/api/Android.bp
new file mode 100644
index 0000000..00b9019
--- /dev/null
+++ b/core/api/Android.bp
@@ -0,0 +1,53 @@
+// Copyright (C) 2020 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package {
+    default_visibility: ["//visibility:private"],
+}
+
+filegroup {
+    name: "non-updatable-current.txt",
+    srcs: ["current.txt"],
+    visibility: ["//frameworks/base/api"],
+}
+
+filegroup {
+    name: "non-updatable-removed.txt",
+    srcs: ["removed.txt"],
+    visibility: ["//frameworks/base/api"],
+}
+
+filegroup {
+    name: "non-updatable-system-current.txt",
+    srcs: ["system-current.txt"],
+    visibility: ["//frameworks/base/api"],
+}
+
+filegroup {
+    name: "non-updatable-system-removed.txt",
+    srcs: ["system-removed.txt"],
+    visibility: ["//frameworks/base/api"],
+}
+
+filegroup {
+    name: "non-updatable-module-lib-current.txt",
+    srcs: ["module-lib-current.txt"],
+    visibility: ["//frameworks/base/api"],
+}
+
+filegroup {
+    name: "non-updatable-module-lib-removed.txt",
+    srcs: ["module-lib-removed.txt"],
+    visibility: ["//frameworks/base/api"],
+}
diff --git a/core/api/current.txt b/core/api/current.txt
new file mode 100644
index 0000000..a20b58e
--- /dev/null
+++ b/core/api/current.txt
@@ -0,0 +1,80582 @@
+// Signature format: 2.0
+package android {
+
+  public final class Manifest {
+    ctor public Manifest();
+  }
+
+  public static final class Manifest.permission {
+    ctor public Manifest.permission();
+    field public static final String ACCEPT_HANDOVER = "android.permission.ACCEPT_HANDOVER";
+    field public static final String ACCESS_BACKGROUND_LOCATION = "android.permission.ACCESS_BACKGROUND_LOCATION";
+    field public static final String ACCESS_CHECKIN_PROPERTIES = "android.permission.ACCESS_CHECKIN_PROPERTIES";
+    field public static final String ACCESS_COARSE_LOCATION = "android.permission.ACCESS_COARSE_LOCATION";
+    field public static final String ACCESS_FINE_LOCATION = "android.permission.ACCESS_FINE_LOCATION";
+    field public static final String ACCESS_LOCATION_EXTRA_COMMANDS = "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS";
+    field public static final String ACCESS_MEDIA_LOCATION = "android.permission.ACCESS_MEDIA_LOCATION";
+    field public static final String ACCESS_NETWORK_STATE = "android.permission.ACCESS_NETWORK_STATE";
+    field public static final String ACCESS_NOTIFICATION_POLICY = "android.permission.ACCESS_NOTIFICATION_POLICY";
+    field public static final String ACCESS_WIFI_STATE = "android.permission.ACCESS_WIFI_STATE";
+    field public static final String ACCOUNT_MANAGER = "android.permission.ACCOUNT_MANAGER";
+    field public static final String ACTIVITY_RECOGNITION = "android.permission.ACTIVITY_RECOGNITION";
+    field public static final String ADD_VOICEMAIL = "com.android.voicemail.permission.ADD_VOICEMAIL";
+    field public static final String ANSWER_PHONE_CALLS = "android.permission.ANSWER_PHONE_CALLS";
+    field public static final String BATTERY_STATS = "android.permission.BATTERY_STATS";
+    field public static final String BIND_ACCESSIBILITY_SERVICE = "android.permission.BIND_ACCESSIBILITY_SERVICE";
+    field public static final String BIND_APPWIDGET = "android.permission.BIND_APPWIDGET";
+    field public static final String BIND_AUTOFILL_SERVICE = "android.permission.BIND_AUTOFILL_SERVICE";
+    field public static final String BIND_CALL_REDIRECTION_SERVICE = "android.permission.BIND_CALL_REDIRECTION_SERVICE";
+    field public static final String BIND_CARRIER_MESSAGING_CLIENT_SERVICE = "android.permission.BIND_CARRIER_MESSAGING_CLIENT_SERVICE";
+    field @Deprecated public static final String BIND_CARRIER_MESSAGING_SERVICE = "android.permission.BIND_CARRIER_MESSAGING_SERVICE";
+    field public static final String BIND_CARRIER_SERVICES = "android.permission.BIND_CARRIER_SERVICES";
+    field @Deprecated public static final String BIND_CHOOSER_TARGET_SERVICE = "android.permission.BIND_CHOOSER_TARGET_SERVICE";
+    field public static final String BIND_CONDITION_PROVIDER_SERVICE = "android.permission.BIND_CONDITION_PROVIDER_SERVICE";
+    field public static final String BIND_CONTROLS = "android.permission.BIND_CONTROLS";
+    field public static final String BIND_DEVICE_ADMIN = "android.permission.BIND_DEVICE_ADMIN";
+    field public static final String BIND_DREAM_SERVICE = "android.permission.BIND_DREAM_SERVICE";
+    field public static final String BIND_INCALL_SERVICE = "android.permission.BIND_INCALL_SERVICE";
+    field public static final String BIND_INPUT_METHOD = "android.permission.BIND_INPUT_METHOD";
+    field public static final String BIND_MIDI_DEVICE_SERVICE = "android.permission.BIND_MIDI_DEVICE_SERVICE";
+    field public static final String BIND_NFC_SERVICE = "android.permission.BIND_NFC_SERVICE";
+    field public static final String BIND_NOTIFICATION_LISTENER_SERVICE = "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE";
+    field public static final String BIND_PRINT_SERVICE = "android.permission.BIND_PRINT_SERVICE";
+    field public static final String BIND_QUICK_ACCESS_WALLET_SERVICE = "android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE";
+    field public static final String BIND_QUICK_SETTINGS_TILE = "android.permission.BIND_QUICK_SETTINGS_TILE";
+    field public static final String BIND_REMOTEVIEWS = "android.permission.BIND_REMOTEVIEWS";
+    field public static final String BIND_SCREENING_SERVICE = "android.permission.BIND_SCREENING_SERVICE";
+    field public static final String BIND_TELECOM_CONNECTION_SERVICE = "android.permission.BIND_TELECOM_CONNECTION_SERVICE";
+    field public static final String BIND_TEXT_SERVICE = "android.permission.BIND_TEXT_SERVICE";
+    field public static final String BIND_TV_INPUT = "android.permission.BIND_TV_INPUT";
+    field public static final String BIND_VISUAL_VOICEMAIL_SERVICE = "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE";
+    field public static final String BIND_VOICE_INTERACTION = "android.permission.BIND_VOICE_INTERACTION";
+    field public static final String BIND_VPN_SERVICE = "android.permission.BIND_VPN_SERVICE";
+    field public static final String BIND_VR_LISTENER_SERVICE = "android.permission.BIND_VR_LISTENER_SERVICE";
+    field public static final String BIND_WALLPAPER = "android.permission.BIND_WALLPAPER";
+    field public static final String BLUETOOTH = "android.permission.BLUETOOTH";
+    field public static final String BLUETOOTH_ADMIN = "android.permission.BLUETOOTH_ADMIN";
+    field public static final String BLUETOOTH_PRIVILEGED = "android.permission.BLUETOOTH_PRIVILEGED";
+    field public static final String BODY_SENSORS = "android.permission.BODY_SENSORS";
+    field public static final String BROADCAST_PACKAGE_REMOVED = "android.permission.BROADCAST_PACKAGE_REMOVED";
+    field public static final String BROADCAST_SMS = "android.permission.BROADCAST_SMS";
+    field public static final String BROADCAST_STICKY = "android.permission.BROADCAST_STICKY";
+    field public static final String BROADCAST_WAP_PUSH = "android.permission.BROADCAST_WAP_PUSH";
+    field public static final String CALL_COMPANION_APP = "android.permission.CALL_COMPANION_APP";
+    field public static final String CALL_PHONE = "android.permission.CALL_PHONE";
+    field public static final String CALL_PRIVILEGED = "android.permission.CALL_PRIVILEGED";
+    field public static final String CAMERA = "android.permission.CAMERA";
+    field public static final String CAPTURE_AUDIO_OUTPUT = "android.permission.CAPTURE_AUDIO_OUTPUT";
+    field public static final String CHANGE_COMPONENT_ENABLED_STATE = "android.permission.CHANGE_COMPONENT_ENABLED_STATE";
+    field public static final String CHANGE_CONFIGURATION = "android.permission.CHANGE_CONFIGURATION";
+    field public static final String CHANGE_NETWORK_STATE = "android.permission.CHANGE_NETWORK_STATE";
+    field public static final String CHANGE_WIFI_MULTICAST_STATE = "android.permission.CHANGE_WIFI_MULTICAST_STATE";
+    field public static final String CHANGE_WIFI_STATE = "android.permission.CHANGE_WIFI_STATE";
+    field public static final String CLEAR_APP_CACHE = "android.permission.CLEAR_APP_CACHE";
+    field public static final String CONTROL_LOCATION_UPDATES = "android.permission.CONTROL_LOCATION_UPDATES";
+    field public static final String DELETE_CACHE_FILES = "android.permission.DELETE_CACHE_FILES";
+    field public static final String DELETE_PACKAGES = "android.permission.DELETE_PACKAGES";
+    field public static final String DIAGNOSTIC = "android.permission.DIAGNOSTIC";
+    field public static final String DISABLE_KEYGUARD = "android.permission.DISABLE_KEYGUARD";
+    field public static final String DUMP = "android.permission.DUMP";
+    field public static final String EXPAND_STATUS_BAR = "android.permission.EXPAND_STATUS_BAR";
+    field public static final String FACTORY_TEST = "android.permission.FACTORY_TEST";
+    field public static final String FOREGROUND_SERVICE = "android.permission.FOREGROUND_SERVICE";
+    field public static final String GET_ACCOUNTS = "android.permission.GET_ACCOUNTS";
+    field public static final String GET_ACCOUNTS_PRIVILEGED = "android.permission.GET_ACCOUNTS_PRIVILEGED";
+    field public static final String GET_PACKAGE_SIZE = "android.permission.GET_PACKAGE_SIZE";
+    field @Deprecated public static final String GET_TASKS = "android.permission.GET_TASKS";
+    field public static final String GLOBAL_SEARCH = "android.permission.GLOBAL_SEARCH";
+    field public static final String INSTALL_LOCATION_PROVIDER = "android.permission.INSTALL_LOCATION_PROVIDER";
+    field public static final String INSTALL_PACKAGES = "android.permission.INSTALL_PACKAGES";
+    field public static final String INSTALL_SHORTCUT = "com.android.launcher.permission.INSTALL_SHORTCUT";
+    field public static final String INSTANT_APP_FOREGROUND_SERVICE = "android.permission.INSTANT_APP_FOREGROUND_SERVICE";
+    field public static final String INTERACT_ACROSS_PROFILES = "android.permission.INTERACT_ACROSS_PROFILES";
+    field public static final String INTERNET = "android.permission.INTERNET";
+    field public static final String KILL_BACKGROUND_PROCESSES = "android.permission.KILL_BACKGROUND_PROCESSES";
+    field public static final String LOADER_USAGE_STATS = "android.permission.LOADER_USAGE_STATS";
+    field public static final String LOCATION_HARDWARE = "android.permission.LOCATION_HARDWARE";
+    field public static final String MANAGE_DOCUMENTS = "android.permission.MANAGE_DOCUMENTS";
+    field public static final String MANAGE_EXTERNAL_STORAGE = "android.permission.MANAGE_EXTERNAL_STORAGE";
+    field public static final String MANAGE_ONGOING_CALLS = "android.permission.MANAGE_ONGOING_CALLS";
+    field public static final String MANAGE_OWN_CALLS = "android.permission.MANAGE_OWN_CALLS";
+    field public static final String MASTER_CLEAR = "android.permission.MASTER_CLEAR";
+    field public static final String MEDIA_CONTENT_CONTROL = "android.permission.MEDIA_CONTENT_CONTROL";
+    field public static final String MODIFY_AUDIO_SETTINGS = "android.permission.MODIFY_AUDIO_SETTINGS";
+    field public static final String MODIFY_PHONE_STATE = "android.permission.MODIFY_PHONE_STATE";
+    field public static final String MOUNT_FORMAT_FILESYSTEMS = "android.permission.MOUNT_FORMAT_FILESYSTEMS";
+    field public static final String MOUNT_UNMOUNT_FILESYSTEMS = "android.permission.MOUNT_UNMOUNT_FILESYSTEMS";
+    field public static final String NFC = "android.permission.NFC";
+    field public static final String NFC_PREFERRED_PAYMENT_INFO = "android.permission.NFC_PREFERRED_PAYMENT_INFO";
+    field public static final String NFC_TRANSACTION_EVENT = "android.permission.NFC_TRANSACTION_EVENT";
+    field public static final String PACKAGE_USAGE_STATS = "android.permission.PACKAGE_USAGE_STATS";
+    field @Deprecated public static final String PERSISTENT_ACTIVITY = "android.permission.PERSISTENT_ACTIVITY";
+    field @Deprecated public static final String PROCESS_OUTGOING_CALLS = "android.permission.PROCESS_OUTGOING_CALLS";
+    field public static final String QUERY_ALL_PACKAGES = "android.permission.QUERY_ALL_PACKAGES";
+    field public static final String READ_CALENDAR = "android.permission.READ_CALENDAR";
+    field public static final String READ_CALL_LOG = "android.permission.READ_CALL_LOG";
+    field public static final String READ_CONTACTS = "android.permission.READ_CONTACTS";
+    field public static final String READ_EXTERNAL_STORAGE = "android.permission.READ_EXTERNAL_STORAGE";
+    field @Deprecated public static final String READ_INPUT_STATE = "android.permission.READ_INPUT_STATE";
+    field public static final String READ_LOGS = "android.permission.READ_LOGS";
+    field public static final String READ_PHONE_NUMBERS = "android.permission.READ_PHONE_NUMBERS";
+    field public static final String READ_PHONE_STATE = "android.permission.READ_PHONE_STATE";
+    field public static final String READ_PRECISE_PHONE_STATE = "android.permission.READ_PRECISE_PHONE_STATE";
+    field public static final String READ_SMS = "android.permission.READ_SMS";
+    field public static final String READ_SYNC_SETTINGS = "android.permission.READ_SYNC_SETTINGS";
+    field public static final String READ_SYNC_STATS = "android.permission.READ_SYNC_STATS";
+    field public static final String READ_VOICEMAIL = "com.android.voicemail.permission.READ_VOICEMAIL";
+    field public static final String REBOOT = "android.permission.REBOOT";
+    field public static final String RECEIVE_BOOT_COMPLETED = "android.permission.RECEIVE_BOOT_COMPLETED";
+    field public static final String RECEIVE_MMS = "android.permission.RECEIVE_MMS";
+    field public static final String RECEIVE_SMS = "android.permission.RECEIVE_SMS";
+    field public static final String RECEIVE_WAP_PUSH = "android.permission.RECEIVE_WAP_PUSH";
+    field public static final String RECORD_AUDIO = "android.permission.RECORD_AUDIO";
+    field public static final String REORDER_TASKS = "android.permission.REORDER_TASKS";
+    field public static final String REQUEST_COMPANION_RUN_IN_BACKGROUND = "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND";
+    field public static final String REQUEST_COMPANION_USE_DATA_IN_BACKGROUND = "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND";
+    field public static final String REQUEST_DELETE_PACKAGES = "android.permission.REQUEST_DELETE_PACKAGES";
+    field public static final String REQUEST_IGNORE_BATTERY_OPTIMIZATIONS = "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS";
+    field public static final String REQUEST_INSTALL_PACKAGES = "android.permission.REQUEST_INSTALL_PACKAGES";
+    field public static final String REQUEST_PASSWORD_COMPLEXITY = "android.permission.REQUEST_PASSWORD_COMPLEXITY";
+    field @Deprecated public static final String RESTART_PACKAGES = "android.permission.RESTART_PACKAGES";
+    field public static final String SEND_RESPOND_VIA_MESSAGE = "android.permission.SEND_RESPOND_VIA_MESSAGE";
+    field public static final String SEND_SMS = "android.permission.SEND_SMS";
+    field public static final String SET_ALARM = "com.android.alarm.permission.SET_ALARM";
+    field public static final String SET_ALWAYS_FINISH = "android.permission.SET_ALWAYS_FINISH";
+    field public static final String SET_ANIMATION_SCALE = "android.permission.SET_ANIMATION_SCALE";
+    field public static final String SET_DEBUG_APP = "android.permission.SET_DEBUG_APP";
+    field @Deprecated public static final String SET_PREFERRED_APPLICATIONS = "android.permission.SET_PREFERRED_APPLICATIONS";
+    field public static final String SET_PROCESS_LIMIT = "android.permission.SET_PROCESS_LIMIT";
+    field public static final String SET_TIME = "android.permission.SET_TIME";
+    field public static final String SET_TIME_ZONE = "android.permission.SET_TIME_ZONE";
+    field public static final String SET_WALLPAPER = "android.permission.SET_WALLPAPER";
+    field public static final String SET_WALLPAPER_HINTS = "android.permission.SET_WALLPAPER_HINTS";
+    field public static final String SIGNAL_PERSISTENT_PROCESSES = "android.permission.SIGNAL_PERSISTENT_PROCESSES";
+    field public static final String SMS_FINANCIAL_TRANSACTIONS = "android.permission.SMS_FINANCIAL_TRANSACTIONS";
+    field public static final String START_VIEW_PERMISSION_USAGE = "android.permission.START_VIEW_PERMISSION_USAGE";
+    field public static final String STATUS_BAR = "android.permission.STATUS_BAR";
+    field public static final String SYSTEM_ALERT_WINDOW = "android.permission.SYSTEM_ALERT_WINDOW";
+    field public static final String TRANSMIT_IR = "android.permission.TRANSMIT_IR";
+    field public static final String UNINSTALL_SHORTCUT = "com.android.launcher.permission.UNINSTALL_SHORTCUT";
+    field public static final String UPDATE_DEVICE_STATS = "android.permission.UPDATE_DEVICE_STATS";
+    field public static final String USE_BIOMETRIC = "android.permission.USE_BIOMETRIC";
+    field @Deprecated public static final String USE_FINGERPRINT = "android.permission.USE_FINGERPRINT";
+    field public static final String USE_FULL_SCREEN_INTENT = "android.permission.USE_FULL_SCREEN_INTENT";
+    field public static final String USE_SIP = "android.permission.USE_SIP";
+    field public static final String VIBRATE = "android.permission.VIBRATE";
+    field public static final String WAKE_LOCK = "android.permission.WAKE_LOCK";
+    field public static final String WRITE_APN_SETTINGS = "android.permission.WRITE_APN_SETTINGS";
+    field public static final String WRITE_CALENDAR = "android.permission.WRITE_CALENDAR";
+    field public static final String WRITE_CALL_LOG = "android.permission.WRITE_CALL_LOG";
+    field public static final String WRITE_CONTACTS = "android.permission.WRITE_CONTACTS";
+    field public static final String WRITE_EXTERNAL_STORAGE = "android.permission.WRITE_EXTERNAL_STORAGE";
+    field public static final String WRITE_GSERVICES = "android.permission.WRITE_GSERVICES";
+    field public static final String WRITE_SECURE_SETTINGS = "android.permission.WRITE_SECURE_SETTINGS";
+    field public static final String WRITE_SETTINGS = "android.permission.WRITE_SETTINGS";
+    field public static final String WRITE_SYNC_SETTINGS = "android.permission.WRITE_SYNC_SETTINGS";
+    field public static final String WRITE_VOICEMAIL = "com.android.voicemail.permission.WRITE_VOICEMAIL";
+  }
+
+  public static final class Manifest.permission_group {
+    ctor public Manifest.permission_group();
+    field public static final String ACTIVITY_RECOGNITION = "android.permission-group.ACTIVITY_RECOGNITION";
+    field public static final String CALENDAR = "android.permission-group.CALENDAR";
+    field public static final String CALL_LOG = "android.permission-group.CALL_LOG";
+    field public static final String CAMERA = "android.permission-group.CAMERA";
+    field public static final String CONTACTS = "android.permission-group.CONTACTS";
+    field public static final String LOCATION = "android.permission-group.LOCATION";
+    field public static final String MICROPHONE = "android.permission-group.MICROPHONE";
+    field public static final String PHONE = "android.permission-group.PHONE";
+    field public static final String SENSORS = "android.permission-group.SENSORS";
+    field public static final String SMS = "android.permission-group.SMS";
+    field public static final String STORAGE = "android.permission-group.STORAGE";
+  }
+
+  public final class R {
+    ctor public R();
+  }
+
+  public static final class R.anim {
+    ctor public R.anim();
+    field public static final int accelerate_decelerate_interpolator = 17432580; // 0x10a0004
+    field public static final int accelerate_interpolator = 17432581; // 0x10a0005
+    field public static final int anticipate_interpolator = 17432583; // 0x10a0007
+    field public static final int anticipate_overshoot_interpolator = 17432585; // 0x10a0009
+    field public static final int bounce_interpolator = 17432586; // 0x10a000a
+    field public static final int cycle_interpolator = 17432588; // 0x10a000c
+    field public static final int decelerate_interpolator = 17432582; // 0x10a0006
+    field public static final int fade_in = 17432576; // 0x10a0000
+    field public static final int fade_out = 17432577; // 0x10a0001
+    field public static final int linear_interpolator = 17432587; // 0x10a000b
+    field public static final int overshoot_interpolator = 17432584; // 0x10a0008
+    field public static final int slide_in_left = 17432578; // 0x10a0002
+    field public static final int slide_out_right = 17432579; // 0x10a0003
+  }
+
+  public static final class R.animator {
+    ctor public R.animator();
+    field public static final int fade_in = 17498112; // 0x10b0000
+    field public static final int fade_out = 17498113; // 0x10b0001
+  }
+
+  public static final class R.array {
+    ctor public R.array();
+    field public static final int emailAddressTypes = 17235968; // 0x1070000
+    field public static final int imProtocols = 17235969; // 0x1070001
+    field public static final int organizationTypes = 17235970; // 0x1070002
+    field public static final int phoneTypes = 17235971; // 0x1070003
+    field public static final int postalAddressTypes = 17235972; // 0x1070004
+  }
+
+  public static final class R.attr {
+    ctor public R.attr();
+    field public static final int absListViewStyle = 16842858; // 0x101006a
+    field public static final int accessibilityEventTypes = 16843648; // 0x1010380
+    field public static final int accessibilityFeedbackType = 16843650; // 0x1010382
+    field public static final int accessibilityFlags = 16843652; // 0x1010384
+    field public static final int accessibilityHeading = 16844160; // 0x1010580
+    field public static final int accessibilityLiveRegion = 16843758; // 0x10103ee
+    field public static final int accessibilityPaneTitle = 16844156; // 0x101057c
+    field public static final int accessibilityTraversalAfter = 16843986; // 0x10104d2
+    field public static final int accessibilityTraversalBefore = 16843985; // 0x10104d1
+    field public static final int accountPreferences = 16843423; // 0x101029f
+    field public static final int accountType = 16843407; // 0x101028f
+    field public static final int action = 16842797; // 0x101002d
+    field public static final int actionBarDivider = 16843675; // 0x101039b
+    field public static final int actionBarItemBackground = 16843676; // 0x101039c
+    field public static final int actionBarPopupTheme = 16843917; // 0x101048d
+    field public static final int actionBarSize = 16843499; // 0x10102eb
+    field public static final int actionBarSplitStyle = 16843656; // 0x1010388
+    field public static final int actionBarStyle = 16843470; // 0x10102ce
+    field public static final int actionBarTabBarStyle = 16843508; // 0x10102f4
+    field public static final int actionBarTabStyle = 16843507; // 0x10102f3
+    field public static final int actionBarTabTextStyle = 16843509; // 0x10102f5
+    field public static final int actionBarTheme = 16843825; // 0x1010431
+    field public static final int actionBarWidgetTheme = 16843671; // 0x1010397
+    field public static final int actionButtonStyle = 16843480; // 0x10102d8
+    field public static final int actionDropDownStyle = 16843479; // 0x10102d7
+    field public static final int actionLayout = 16843515; // 0x10102fb
+    field public static final int actionMenuTextAppearance = 16843616; // 0x1010360
+    field public static final int actionMenuTextColor = 16843617; // 0x1010361
+    field public static final int actionModeBackground = 16843483; // 0x10102db
+    field public static final int actionModeCloseButtonStyle = 16843511; // 0x10102f7
+    field public static final int actionModeCloseDrawable = 16843484; // 0x10102dc
+    field public static final int actionModeCopyDrawable = 16843538; // 0x1010312
+    field public static final int actionModeCutDrawable = 16843537; // 0x1010311
+    field public static final int actionModeFindDrawable = 16843898; // 0x101047a
+    field public static final int actionModePasteDrawable = 16843539; // 0x1010313
+    field public static final int actionModeSelectAllDrawable = 16843646; // 0x101037e
+    field public static final int actionModeShareDrawable = 16843897; // 0x1010479
+    field public static final int actionModeSplitBackground = 16843677; // 0x101039d
+    field public static final int actionModeStyle = 16843668; // 0x1010394
+    field public static final int actionModeWebSearchDrawable = 16843899; // 0x101047b
+    field public static final int actionOverflowButtonStyle = 16843510; // 0x10102f6
+    field public static final int actionOverflowMenuStyle = 16843844; // 0x1010444
+    field public static final int actionProviderClass = 16843657; // 0x1010389
+    field public static final int actionViewClass = 16843516; // 0x10102fc
+    field public static final int activatedBackgroundIndicator = 16843517; // 0x10102fd
+    field public static final int activityCloseEnterAnimation = 16842938; // 0x10100ba
+    field public static final int activityCloseExitAnimation = 16842939; // 0x10100bb
+    field public static final int activityOpenEnterAnimation = 16842936; // 0x10100b8
+    field public static final int activityOpenExitAnimation = 16842937; // 0x10100b9
+    field public static final int addPrintersActivity = 16843750; // 0x10103e6
+    field public static final int addStatesFromChildren = 16842992; // 0x10100f0
+    field public static final int adjustViewBounds = 16843038; // 0x101011e
+    field public static final int advancedPrintOptionsActivity = 16843761; // 0x10103f1
+    field public static final int alertDialogIcon = 16843605; // 0x1010355
+    field public static final int alertDialogStyle = 16842845; // 0x101005d
+    field public static final int alertDialogTheme = 16843529; // 0x1010309
+    field public static final int alignmentMode = 16843642; // 0x101037a
+    field public static final int allContactsName = 16843468; // 0x10102cc
+    field public static final int allowAudioPlaybackCapture = 16844289; // 0x1010601
+    field public static final int allowBackup = 16843392; // 0x1010280
+    field public static final int allowClearUserData = 16842757; // 0x1010005
+    field public static final int allowEmbedded = 16843765; // 0x10103f5
+    field public static final int allowNativeHeapPointerTagging = 16844306; // 0x1010612
+    field public static final int allowParallelSyncs = 16843570; // 0x1010332
+    field public static final int allowSingleTap = 16843353; // 0x1010259
+    field public static final int allowTaskReparenting = 16843268; // 0x1010204
+    field public static final int allowUndo = 16843999; // 0x10104df
+    field public static final int alpha = 16843551; // 0x101031f
+    field public static final int alphabeticModifiers = 16844110; // 0x101054e
+    field public static final int alphabeticShortcut = 16843235; // 0x10101e3
+    field public static final int alwaysDrawnWithCache = 16842991; // 0x10100ef
+    field public static final int alwaysRetainTaskState = 16843267; // 0x1010203
+    field @Deprecated public static final int amPmBackgroundColor = 16843941; // 0x10104a5
+    field @Deprecated public static final int amPmTextColor = 16843940; // 0x10104a4
+    field public static final int ambientShadowAlpha = 16843966; // 0x10104be
+    field public static final int angle = 16843168; // 0x10101a0
+    field public static final int animateFirstView = 16843477; // 0x10102d5
+    field public static final int animateLayoutChanges = 16843506; // 0x10102f2
+    field public static final int animateOnClick = 16843356; // 0x101025c
+    field public static final int animatedImageDrawable = 16844298; // 0x101060a
+    field public static final int animation = 16843213; // 0x10101cd
+    field public static final int animationCache = 16842989; // 0x10100ed
+    field public static final int animationDuration = 16843026; // 0x1010112
+    field public static final int animationOrder = 16843214; // 0x10101ce
+    field @Deprecated public static final int animationResolution = 16843546; // 0x101031a
+    field public static final int antialias = 16843034; // 0x101011a
+    field @Deprecated public static final int anyDensity = 16843372; // 0x101026c
+    field public static final int apduServiceBanner = 16843757; // 0x10103ed
+    field public static final int apiKey = 16843281; // 0x1010211
+    field public static final int appCategory = 16844101; // 0x1010545
+    field public static final int appComponentFactory = 16844154; // 0x101057a
+    field public static final int author = 16843444; // 0x10102b4
+    field public static final int authorities = 16842776; // 0x1010018
+    field public static final int autoAdvanceViewId = 16843535; // 0x101030f
+    field public static final int autoCompleteTextViewStyle = 16842859; // 0x101006b
+    field public static final int autoLink = 16842928; // 0x10100b0
+    field public static final int autoMirrored = 16843754; // 0x10103ea
+    field public static final int autoRemoveFromRecents = 16843847; // 0x1010447
+    field public static final int autoRevokePermissions = 16844307; // 0x1010613
+    field public static final int autoSizeMaxTextSize = 16844102; // 0x1010546
+    field public static final int autoSizeMinTextSize = 16844088; // 0x1010538
+    field public static final int autoSizePresetSizes = 16844087; // 0x1010537
+    field public static final int autoSizeStepGranularity = 16844086; // 0x1010536
+    field public static final int autoSizeTextType = 16844085; // 0x1010535
+    field public static final int autoStart = 16843445; // 0x10102b5
+    field @Deprecated public static final int autoText = 16843114; // 0x101016a
+    field public static final int autoUrlDetect = 16843404; // 0x101028c
+    field public static final int autoVerify = 16844014; // 0x10104ee
+    field public static final int autofillHints = 16844118; // 0x1010556
+    field public static final int autofilledHighlight = 16844136; // 0x1010568
+    field public static final int background = 16842964; // 0x10100d4
+    field public static final int backgroundDimAmount = 16842802; // 0x1010032
+    field public static final int backgroundDimEnabled = 16843295; // 0x101021f
+    field public static final int backgroundSplit = 16843659; // 0x101038b
+    field public static final int backgroundStacked = 16843658; // 0x101038a
+    field public static final int backgroundTint = 16843883; // 0x101046b
+    field public static final int backgroundTintMode = 16843884; // 0x101046c
+    field public static final int backupAgent = 16843391; // 0x101027f
+    field public static final int backupInForeground = 16844058; // 0x101051a
+    field public static final int banner = 16843762; // 0x10103f2
+    field public static final int baseline = 16843548; // 0x101031c
+    field public static final int baselineAlignBottom = 16843042; // 0x1010122
+    field public static final int baselineAligned = 16843046; // 0x1010126
+    field public static final int baselineAlignedChildIndex = 16843047; // 0x1010127
+    field public static final int bitmap = 16844054; // 0x1010516
+    field public static final int borderlessButtonStyle = 16843563; // 0x101032b
+    field public static final int bottom = 16843184; // 0x10101b0
+    field public static final int bottomBright = 16842957; // 0x10100cd
+    field public static final int bottomDark = 16842953; // 0x10100c9
+    field public static final int bottomLeftRadius = 16843179; // 0x10101ab
+    field public static final int bottomMedium = 16842958; // 0x10100ce
+    field public static final int bottomOffset = 16843351; // 0x1010257
+    field public static final int bottomRightRadius = 16843180; // 0x10101ac
+    field public static final int breadCrumbShortTitle = 16843524; // 0x1010304
+    field public static final int breadCrumbTitle = 16843523; // 0x1010303
+    field public static final int breakStrategy = 16843997; // 0x10104dd
+    field public static final int bufferType = 16843086; // 0x101014e
+    field public static final int button = 16843015; // 0x1010107
+    field public static final int buttonBarButtonStyle = 16843567; // 0x101032f
+    field public static final int buttonBarNegativeButtonStyle = 16843915; // 0x101048b
+    field public static final int buttonBarNeutralButtonStyle = 16843914; // 0x101048a
+    field public static final int buttonBarPositiveButtonStyle = 16843913; // 0x1010489
+    field public static final int buttonBarStyle = 16843566; // 0x101032e
+    field public static final int buttonCornerRadius = 16844149; // 0x1010575
+    field public static final int buttonGravity = 16844030; // 0x10104fe
+    field public static final int buttonStyle = 16842824; // 0x1010048
+    field public static final int buttonStyleInset = 16842826; // 0x101004a
+    field public static final int buttonStyleSmall = 16842825; // 0x1010049
+    field public static final int buttonStyleToggle = 16842827; // 0x101004b
+    field public static final int buttonTint = 16843887; // 0x101046f
+    field public static final int buttonTintMode = 16843888; // 0x1010470
+    field public static final int cacheColorHint = 16843009; // 0x1010101
+    field public static final int calendarTextColor = 16843931; // 0x101049b
+    field public static final int calendarViewShown = 16843596; // 0x101034c
+    field public static final int calendarViewStyle = 16843613; // 0x101035d
+    field public static final int canControlMagnification = 16844039; // 0x1010507
+    field public static final int canPerformGestures = 16844045; // 0x101050d
+    field public static final int canRecord = 16844060; // 0x101051c
+    field @Deprecated public static final int canRequestEnhancedWebAccessibility = 16843736; // 0x10103d8
+    field public static final int canRequestFilterKeyEvents = 16843737; // 0x10103d9
+    field public static final int canRequestFingerprintGestures = 16844109; // 0x101054d
+    field public static final int canRequestTouchExplorationMode = 16843735; // 0x10103d7
+    field public static final int canRetrieveWindowContent = 16843653; // 0x1010385
+    field public static final int canTakeScreenshot = 16844303; // 0x101060f
+    field public static final int candidatesTextStyleSpans = 16843312; // 0x1010230
+    field public static final int cantSaveState = 16844142; // 0x101056e
+    field @Deprecated public static final int capitalize = 16843113; // 0x1010169
+    field public static final int category = 16843752; // 0x10103e8
+    field public static final int centerBright = 16842956; // 0x10100cc
+    field public static final int centerColor = 16843275; // 0x101020b
+    field public static final int centerDark = 16842952; // 0x10100c8
+    field public static final int centerMedium = 16842959; // 0x10100cf
+    field public static final int centerX = 16843170; // 0x10101a2
+    field public static final int centerY = 16843171; // 0x10101a3
+    field public static final int certDigest = 16844104; // 0x1010548
+    field public static final int checkBoxPreferenceStyle = 16842895; // 0x101008f
+    field public static final int checkMark = 16843016; // 0x1010108
+    field public static final int checkMarkTint = 16843943; // 0x10104a7
+    field public static final int checkMarkTintMode = 16843944; // 0x10104a8
+    field public static final int checkable = 16843237; // 0x10101e5
+    field public static final int checkableBehavior = 16843232; // 0x10101e0
+    field public static final int checkboxStyle = 16842860; // 0x101006c
+    field public static final int checked = 16843014; // 0x1010106
+    field public static final int checkedButton = 16843080; // 0x1010148
+    field public static final int checkedTextViewStyle = 16843720; // 0x10103c8
+    field public static final int childDivider = 16843025; // 0x1010111
+    field public static final int childIndicator = 16843020; // 0x101010c
+    field public static final int childIndicatorEnd = 16843732; // 0x10103d4
+    field public static final int childIndicatorLeft = 16843023; // 0x101010f
+    field public static final int childIndicatorRight = 16843024; // 0x1010110
+    field public static final int childIndicatorStart = 16843731; // 0x10103d3
+    field public static final int choiceMode = 16843051; // 0x101012b
+    field public static final int classLoader = 16844139; // 0x101056b
+    field public static final int clearTaskOnLaunch = 16842773; // 0x1010015
+    field public static final int clickable = 16842981; // 0x10100e5
+    field public static final int clipChildren = 16842986; // 0x10100ea
+    field public static final int clipOrientation = 16843274; // 0x101020a
+    field public static final int clipToPadding = 16842987; // 0x10100eb
+    field public static final int closeIcon = 16843905; // 0x1010481
+    field @Deprecated public static final int codes = 16843330; // 0x1010242
+    field public static final int collapseColumns = 16843083; // 0x101014b
+    field public static final int collapseContentDescription = 16843984; // 0x10104d0
+    field public static final int collapseIcon = 16844031; // 0x10104ff
+    field public static final int color = 16843173; // 0x10101a5
+    field public static final int colorAccent = 16843829; // 0x1010435
+    field public static final int colorActivatedHighlight = 16843664; // 0x1010390
+    field public static final int colorBackground = 16842801; // 0x1010031
+    field public static final int colorBackgroundCacheHint = 16843435; // 0x10102ab
+    field public static final int colorBackgroundFloating = 16844002; // 0x10104e2
+    field public static final int colorButtonNormal = 16843819; // 0x101042b
+    field public static final int colorControlActivated = 16843818; // 0x101042a
+    field public static final int colorControlHighlight = 16843820; // 0x101042c
+    field public static final int colorControlNormal = 16843817; // 0x1010429
+    field public static final int colorEdgeEffect = 16843982; // 0x10104ce
+    field public static final int colorError = 16844099; // 0x1010543
+    field public static final int colorFocusedHighlight = 16843663; // 0x101038f
+    field public static final int colorForeground = 16842800; // 0x1010030
+    field public static final int colorForegroundInverse = 16843270; // 0x1010206
+    field public static final int colorLongPressedHighlight = 16843662; // 0x101038e
+    field public static final int colorMode = 16844106; // 0x101054a
+    field public static final int colorMultiSelectHighlight = 16843665; // 0x1010391
+    field public static final int colorPressedHighlight = 16843661; // 0x101038d
+    field public static final int colorPrimary = 16843827; // 0x1010433
+    field public static final int colorPrimaryDark = 16843828; // 0x1010434
+    field public static final int colorSecondary = 16844080; // 0x1010530
+    field public static final int columnCount = 16843639; // 0x1010377
+    field public static final int columnDelay = 16843215; // 0x10101cf
+    field public static final int columnOrderPreserved = 16843640; // 0x1010378
+    field public static final int columnWidth = 16843031; // 0x1010117
+    field public static final int commitIcon = 16843909; // 0x1010485
+    field public static final int compatibleWidthLimitDp = 16843621; // 0x1010365
+    field public static final int completionHint = 16843122; // 0x1010172
+    field public static final int completionHintView = 16843123; // 0x1010173
+    field public static final int completionThreshold = 16843124; // 0x1010174
+    field public static final int configChanges = 16842783; // 0x101001f
+    field public static final int configure = 16843357; // 0x101025d
+    field public static final int constantSize = 16843158; // 0x1010196
+    field public static final int content = 16843355; // 0x101025b
+    field public static final int contentAgeHint = 16843961; // 0x10104b9
+    field public static final int contentAuthority = 16843408; // 0x1010290
+    field public static final int contentDescription = 16843379; // 0x1010273
+    field public static final int contentInsetEnd = 16843860; // 0x1010454
+    field public static final int contentInsetEndWithActions = 16844067; // 0x1010523
+    field public static final int contentInsetLeft = 16843861; // 0x1010455
+    field public static final int contentInsetRight = 16843862; // 0x1010456
+    field public static final int contentInsetStart = 16843859; // 0x1010453
+    field public static final int contentInsetStartWithNavigation = 16844066; // 0x1010522
+    field public static final int contextClickable = 16844007; // 0x10104e7
+    field public static final int contextDescription = 16844078; // 0x101052e
+    field public static final int contextPopupMenuStyle = 16844033; // 0x1010501
+    field public static final int contextUri = 16844077; // 0x101052d
+    field public static final int controlX1 = 16843772; // 0x10103fc
+    field public static final int controlX2 = 16843774; // 0x10103fe
+    field public static final int controlY1 = 16843773; // 0x10103fd
+    field public static final int controlY2 = 16843775; // 0x10103ff
+    field public static final int countDown = 16844059; // 0x101051b
+    field public static final int country = 16843962; // 0x10104ba
+    field public static final int cropToPadding = 16843043; // 0x1010123
+    field public static final int crossProfile = 16844302; // 0x101060e
+    field public static final int cursorVisible = 16843090; // 0x1010152
+    field public static final int customNavigationLayout = 16843474; // 0x10102d2
+    field public static final int customTokens = 16843579; // 0x101033b
+    field public static final int cycles = 16843220; // 0x10101d4
+    field public static final int dashGap = 16843175; // 0x10101a7
+    field public static final int dashWidth = 16843174; // 0x10101a6
+    field public static final int data = 16842798; // 0x101002e
+    field public static final int datePickerDialogTheme = 16843948; // 0x10104ac
+    field public static final int datePickerMode = 16843955; // 0x10104b3
+    field public static final int datePickerStyle = 16843612; // 0x101035c
+    field public static final int dateTextAppearance = 16843593; // 0x1010349
+    field @Deprecated public static final int dayOfWeekBackground = 16843924; // 0x1010494
+    field @Deprecated public static final int dayOfWeekTextAppearance = 16843925; // 0x1010495
+    field public static final int debuggable = 16842767; // 0x101000f
+    field public static final int defaultFocusHighlightEnabled = 16844130; // 0x1010562
+    field public static final int defaultHeight = 16844021; // 0x10104f5
+    field public static final int defaultToDeviceProtectedStorage = 16844036; // 0x1010504
+    field public static final int defaultValue = 16843245; // 0x10101ed
+    field public static final int defaultWidth = 16844020; // 0x10104f4
+    field public static final int delay = 16843212; // 0x10101cc
+    field public static final int dependency = 16843244; // 0x10101ec
+    field public static final int descendantFocusability = 16842993; // 0x10100f1
+    field public static final int description = 16842784; // 0x1010020
+    field public static final int detachWallpaper = 16843430; // 0x10102a6
+    field public static final int detailColumn = 16843427; // 0x10102a3
+    field public static final int detailSocialSummary = 16843428; // 0x10102a4
+    field public static final int detailsElementBackground = 16843598; // 0x101034e
+    field public static final int dial = 16843010; // 0x1010102
+    field public static final int dialogCornerRadius = 16844145; // 0x1010571
+    field public static final int dialogIcon = 16843252; // 0x10101f4
+    field public static final int dialogLayout = 16843255; // 0x10101f7
+    field public static final int dialogMessage = 16843251; // 0x10101f3
+    field public static final int dialogPreferenceStyle = 16842897; // 0x1010091
+    field public static final int dialogPreferredPadding = 16843987; // 0x10104d3
+    field public static final int dialogTheme = 16843528; // 0x1010308
+    field public static final int dialogTitle = 16843250; // 0x10101f2
+    field public static final int digits = 16843110; // 0x1010166
+    field public static final int directBootAware = 16844037; // 0x1010505
+    field public static final int direction = 16843217; // 0x10101d1
+    field @Deprecated public static final int directionDescriptions = 16843681; // 0x10103a1
+    field public static final int directionPriority = 16843218; // 0x10101d2
+    field public static final int disableDependentsState = 16843249; // 0x10101f1
+    field public static final int disabledAlpha = 16842803; // 0x1010033
+    field public static final int displayOptions = 16843472; // 0x10102d0
+    field public static final int dither = 16843036; // 0x101011c
+    field public static final int divider = 16843049; // 0x1010129
+    field public static final int dividerHeight = 16843050; // 0x101012a
+    field public static final int dividerHorizontal = 16843564; // 0x101032c
+    field public static final int dividerPadding = 16843562; // 0x101032a
+    field public static final int dividerVertical = 16843530; // 0x101030a
+    field public static final int documentLaunchMode = 16843845; // 0x1010445
+    field public static final int drawSelectorOnTop = 16843004; // 0x10100fc
+    field public static final int drawable = 16843161; // 0x1010199
+    field public static final int drawableBottom = 16843118; // 0x101016e
+    field public static final int drawableEnd = 16843667; // 0x1010393
+    field public static final int drawableLeft = 16843119; // 0x101016f
+    field public static final int drawablePadding = 16843121; // 0x1010171
+    field public static final int drawableRight = 16843120; // 0x1010170
+    field public static final int drawableStart = 16843666; // 0x1010392
+    field public static final int drawableTint = 16843990; // 0x10104d6
+    field public static final int drawableTintMode = 16843991; // 0x10104d7
+    field public static final int drawableTop = 16843117; // 0x101016d
+    field public static final int drawingCacheQuality = 16842984; // 0x10100e8
+    field public static final int dropDownAnchor = 16843363; // 0x1010263
+    field public static final int dropDownHeight = 16843395; // 0x1010283
+    field public static final int dropDownHintAppearance = 16842888; // 0x1010088
+    field public static final int dropDownHorizontalOffset = 16843436; // 0x10102ac
+    field public static final int dropDownItemStyle = 16842886; // 0x1010086
+    field public static final int dropDownListViewStyle = 16842861; // 0x101006d
+    field public static final int dropDownSelector = 16843125; // 0x1010175
+    field public static final int dropDownSpinnerStyle = 16843478; // 0x10102d6
+    field public static final int dropDownVerticalOffset = 16843437; // 0x10102ad
+    field public static final int dropDownWidth = 16843362; // 0x1010262
+    field public static final int duplicateParentState = 16842985; // 0x10100e9
+    field public static final int duration = 16843160; // 0x1010198
+    field public static final int editTextBackground = 16843602; // 0x1010352
+    field public static final int editTextColor = 16843601; // 0x1010351
+    field public static final int editTextPreferenceStyle = 16842898; // 0x1010092
+    field public static final int editTextStyle = 16842862; // 0x101006e
+    field @Deprecated public static final int editable = 16843115; // 0x101016b
+    field public static final int editorExtras = 16843300; // 0x1010224
+    field public static final int elegantTextHeight = 16843869; // 0x101045d
+    field public static final int elevation = 16843840; // 0x1010440
+    field public static final int ellipsize = 16842923; // 0x10100ab
+    field public static final int ems = 16843096; // 0x1010158
+    field public static final int enableVrMode = 16844069; // 0x1010525
+    field public static final int enabled = 16842766; // 0x101000e
+    field public static final int end = 16843996; // 0x10104dc
+    field public static final int endColor = 16843166; // 0x101019e
+    field public static final int endX = 16844050; // 0x1010512
+    field public static final int endY = 16844051; // 0x1010513
+    field @Deprecated public static final int endYear = 16843133; // 0x101017d
+    field public static final int enforceNavigationBarContrast = 16844293; // 0x1010605
+    field public static final int enforceStatusBarContrast = 16844292; // 0x1010604
+    field public static final int enterFadeDuration = 16843532; // 0x101030c
+    field public static final int entries = 16842930; // 0x10100b2
+    field public static final int entryValues = 16843256; // 0x10101f8
+    field public static final int eventsInterceptionEnabled = 16843389; // 0x101027d
+    field public static final int excludeClass = 16843842; // 0x1010442
+    field public static final int excludeFromRecents = 16842775; // 0x1010017
+    field public static final int excludeId = 16843841; // 0x1010441
+    field public static final int excludeName = 16843854; // 0x101044e
+    field public static final int exitFadeDuration = 16843533; // 0x101030d
+    field public static final int expandableListPreferredChildIndicatorLeft = 16842834; // 0x1010052
+    field public static final int expandableListPreferredChildIndicatorRight = 16842835; // 0x1010053
+    field public static final int expandableListPreferredChildPaddingLeft = 16842831; // 0x101004f
+    field public static final int expandableListPreferredItemIndicatorLeft = 16842832; // 0x1010050
+    field public static final int expandableListPreferredItemIndicatorRight = 16842833; // 0x1010051
+    field public static final int expandableListPreferredItemPaddingLeft = 16842830; // 0x101004e
+    field public static final int expandableListViewStyle = 16842863; // 0x101006f
+    field public static final int expandableListViewWhiteStyle = 16843446; // 0x10102b6
+    field public static final int exported = 16842768; // 0x1010010
+    field public static final int externalService = 16844046; // 0x101050e
+    field public static final int extraTension = 16843371; // 0x101026b
+    field public static final int extractNativeLibs = 16844010; // 0x10104ea
+    field public static final int factor = 16843219; // 0x10101d3
+    field public static final int fadeDuration = 16843384; // 0x1010278
+    field public static final int fadeEnabled = 16843390; // 0x101027e
+    field public static final int fadeOffset = 16843383; // 0x1010277
+    field public static final int fadeScrollbars = 16843434; // 0x10102aa
+    field public static final int fadingEdge = 16842975; // 0x10100df
+    field public static final int fadingEdgeLength = 16842976; // 0x10100e0
+    field public static final int fadingMode = 16843745; // 0x10103e1
+    field public static final int fallbackLineSpacing = 16844155; // 0x101057b
+    field public static final int fastScrollAlwaysVisible = 16843573; // 0x1010335
+    field public static final int fastScrollEnabled = 16843302; // 0x1010226
+    field public static final int fastScrollOverlayPosition = 16843578; // 0x101033a
+    field public static final int fastScrollPreviewBackgroundLeft = 16843575; // 0x1010337
+    field public static final int fastScrollPreviewBackgroundRight = 16843576; // 0x1010338
+    field public static final int fastScrollStyle = 16843767; // 0x10103f7
+    field public static final int fastScrollTextColor = 16843609; // 0x1010359
+    field public static final int fastScrollThumbDrawable = 16843574; // 0x1010336
+    field public static final int fastScrollTrackDrawable = 16843577; // 0x1010339
+    field public static final int fillAfter = 16843197; // 0x10101bd
+    field public static final int fillAlpha = 16843980; // 0x10104cc
+    field public static final int fillBefore = 16843196; // 0x10101bc
+    field public static final int fillColor = 16843780; // 0x1010404
+    field public static final int fillEnabled = 16843343; // 0x101024f
+    field public static final int fillType = 16844062; // 0x101051e
+    field public static final int fillViewport = 16843130; // 0x101017a
+    field public static final int filter = 16843035; // 0x101011b
+    field public static final int filterTouchesWhenObscured = 16843460; // 0x10102c4
+    field public static final int fingerprintAuthDrawable = 16844008; // 0x10104e8
+    field public static final int finishOnCloseSystemDialogs = 16843431; // 0x10102a7
+    field public static final int finishOnTaskLaunch = 16842772; // 0x1010014
+    field public static final int firstBaselineToTopHeight = 16844157; // 0x101057d
+    field public static final int firstDayOfWeek = 16843581; // 0x101033d
+    field public static final int fitsSystemWindows = 16842973; // 0x10100dd
+    field public static final int flipInterval = 16843129; // 0x1010179
+    field public static final int focusable = 16842970; // 0x10100da
+    field public static final int focusableInTouchMode = 16842971; // 0x10100db
+    field public static final int focusedByDefault = 16844100; // 0x1010544
+    field @Deprecated public static final int focusedMonthDateColor = 16843587; // 0x1010343
+    field public static final int font = 16844082; // 0x1010532
+    field public static final int fontFamily = 16843692; // 0x10103ac
+    field public static final int fontFeatureSettings = 16843959; // 0x10104b7
+    field public static final int fontProviderAuthority = 16844112; // 0x1010550
+    field public static final int fontProviderCerts = 16844125; // 0x101055d
+    field public static final int fontProviderPackage = 16844119; // 0x1010557
+    field public static final int fontProviderQuery = 16844113; // 0x1010551
+    field public static final int fontStyle = 16844095; // 0x101053f
+    field public static final int fontVariationSettings = 16844144; // 0x1010570
+    field public static final int fontWeight = 16844083; // 0x1010533
+    field public static final int footerDividersEnabled = 16843311; // 0x101022f
+    field public static final int forceDarkAllowed = 16844172; // 0x101058c
+    field public static final int forceHasOverlappingRendering = 16844065; // 0x1010521
+    field public static final int forceQueryable = 16844296; // 0x1010608
+    field public static final int forceUriPermissions = 16844191; // 0x101059f
+    field public static final int foreground = 16843017; // 0x1010109
+    field public static final int foregroundGravity = 16843264; // 0x1010200
+    field public static final int foregroundServiceType = 16844185; // 0x1010599
+    field public static final int foregroundTint = 16843885; // 0x101046d
+    field public static final int foregroundTintMode = 16843886; // 0x101046e
+    field public static final int format = 16843013; // 0x1010105
+    field public static final int format12Hour = 16843722; // 0x10103ca
+    field public static final int format24Hour = 16843723; // 0x10103cb
+    field public static final int fraction = 16843992; // 0x10104d8
+    field public static final int fragment = 16843491; // 0x10102e3
+    field public static final int fragmentAllowEnterTransitionOverlap = 16843976; // 0x10104c8
+    field public static final int fragmentAllowReturnTransitionOverlap = 16843977; // 0x10104c9
+    field public static final int fragmentCloseEnterAnimation = 16843495; // 0x10102e7
+    field public static final int fragmentCloseExitAnimation = 16843496; // 0x10102e8
+    field public static final int fragmentEnterTransition = 16843971; // 0x10104c3
+    field public static final int fragmentExitTransition = 16843970; // 0x10104c2
+    field public static final int fragmentFadeEnterAnimation = 16843497; // 0x10102e9
+    field public static final int fragmentFadeExitAnimation = 16843498; // 0x10102ea
+    field public static final int fragmentOpenEnterAnimation = 16843493; // 0x10102e5
+    field public static final int fragmentOpenExitAnimation = 16843494; // 0x10102e6
+    field public static final int fragmentReenterTransition = 16843975; // 0x10104c7
+    field public static final int fragmentReturnTransition = 16843973; // 0x10104c5
+    field public static final int fragmentSharedElementEnterTransition = 16843972; // 0x10104c4
+    field public static final int fragmentSharedElementReturnTransition = 16843974; // 0x10104c6
+    field public static final int freezesText = 16843116; // 0x101016c
+    field public static final int fromAlpha = 16843210; // 0x10101ca
+    field public static final int fromDegrees = 16843187; // 0x10101b3
+    field public static final int fromId = 16843850; // 0x101044a
+    field public static final int fromScene = 16843741; // 0x10103dd
+    field public static final int fromXDelta = 16843206; // 0x10101c6
+    field public static final int fromXScale = 16843202; // 0x10101c2
+    field public static final int fromYDelta = 16843208; // 0x10101c8
+    field public static final int fromYScale = 16843204; // 0x10101c4
+    field public static final int fullBackupContent = 16844011; // 0x10104eb
+    field public static final int fullBackupOnly = 16843891; // 0x1010473
+    field public static final int fullBright = 16842954; // 0x10100ca
+    field public static final int fullDark = 16842950; // 0x10100c6
+    field public static final int functionalTest = 16842787; // 0x1010023
+    field public static final int galleryItemBackground = 16842828; // 0x101004c
+    field public static final int galleryStyle = 16842864; // 0x1010070
+    field public static final int gestureColor = 16843381; // 0x1010275
+    field public static final int gestureStrokeAngleThreshold = 16843388; // 0x101027c
+    field public static final int gestureStrokeLengthThreshold = 16843386; // 0x101027a
+    field public static final int gestureStrokeSquarenessThreshold = 16843387; // 0x101027b
+    field public static final int gestureStrokeType = 16843385; // 0x1010279
+    field public static final int gestureStrokeWidth = 16843380; // 0x1010274
+    field public static final int glEsVersion = 16843393; // 0x1010281
+    field public static final int goIcon = 16843906; // 0x1010482
+    field public static final int gradientRadius = 16843172; // 0x10101a4
+    field public static final int grantUriPermissions = 16842779; // 0x101001b
+    field public static final int gravity = 16842927; // 0x10100af
+    field public static final int gridViewStyle = 16842865; // 0x1010071
+    field public static final int groupIndicator = 16843019; // 0x101010b
+    field public static final int gwpAsanMode = 16844310; // 0x1010616
+    field public static final int hand_hour = 16843011; // 0x1010103
+    field public static final int hand_minute = 16843012; // 0x1010104
+    field public static final int handle = 16843354; // 0x101025a
+    field public static final int handleProfiling = 16842786; // 0x1010022
+    field public static final int hapticFeedbackEnabled = 16843358; // 0x101025e
+    field public static final int hardwareAccelerated = 16843475; // 0x10102d3
+    field public static final int hasCode = 16842764; // 0x101000c
+    field public static final int hasFragileUserData = 16844186; // 0x101059a
+    field @Deprecated public static final int headerAmPmTextAppearance = 16843936; // 0x10104a0
+    field public static final int headerBackground = 16843055; // 0x101012f
+    field @Deprecated public static final int headerDayOfMonthTextAppearance = 16843927; // 0x1010497
+    field public static final int headerDividersEnabled = 16843310; // 0x101022e
+    field @Deprecated public static final int headerMonthTextAppearance = 16843926; // 0x1010496
+    field @Deprecated public static final int headerTimeTextAppearance = 16843935; // 0x101049f
+    field @Deprecated public static final int headerYearTextAppearance = 16843928; // 0x1010498
+    field public static final int height = 16843093; // 0x1010155
+    field public static final int hideOnContentScroll = 16843843; // 0x1010443
+    field public static final int hint = 16843088; // 0x1010150
+    field public static final int homeAsUpIndicator = 16843531; // 0x101030b
+    field public static final int homeLayout = 16843549; // 0x101031d
+    field public static final int horizontalDivider = 16843053; // 0x101012d
+    field @Deprecated public static final int horizontalGap = 16843327; // 0x101023f
+    field public static final int horizontalScrollViewStyle = 16843603; // 0x1010353
+    field public static final int horizontalSpacing = 16843028; // 0x1010114
+    field public static final int host = 16842792; // 0x1010028
+    field public static final int hotSpotX = 16844055; // 0x1010517
+    field public static final int hotSpotY = 16844056; // 0x1010518
+    field public static final int htmlDescription = 16844299; // 0x101060b
+    field public static final int hyphenationFrequency = 16843998; // 0x10104de
+    field public static final int icon = 16842754; // 0x1010002
+    field @Deprecated public static final int iconPreview = 16843337; // 0x1010249
+    field public static final int iconSpaceReserved = 16844129; // 0x1010561
+    field public static final int iconTint = 16844126; // 0x101055e
+    field public static final int iconTintMode = 16844127; // 0x101055f
+    field public static final int iconifiedByDefault = 16843514; // 0x10102fa
+    field public static final int id = 16842960; // 0x10100d0
+    field public static final int identifier = 16844294; // 0x1010606
+    field public static final int ignoreGravity = 16843263; // 0x10101ff
+    field public static final int imageButtonStyle = 16842866; // 0x1010072
+    field public static final int imageWellStyle = 16842867; // 0x1010073
+    field public static final int imeActionId = 16843366; // 0x1010266
+    field public static final int imeActionLabel = 16843365; // 0x1010265
+    field public static final int imeExtractEnterAnimation = 16843368; // 0x1010268
+    field public static final int imeExtractExitAnimation = 16843369; // 0x1010269
+    field public static final int imeFullscreenBackground = 16843308; // 0x101022c
+    field public static final int imeOptions = 16843364; // 0x1010264
+    field public static final int imeSubtypeExtraValue = 16843502; // 0x10102ee
+    field public static final int imeSubtypeLocale = 16843500; // 0x10102ec
+    field public static final int imeSubtypeMode = 16843501; // 0x10102ed
+    field public static final int immersive = 16843456; // 0x10102c0
+    field public static final int importantForAccessibility = 16843690; // 0x10103aa
+    field public static final int importantForAutofill = 16844120; // 0x1010558
+    field public static final int importantForContentCapture = 16844295; // 0x1010607
+    field public static final int inAnimation = 16843127; // 0x1010177
+    field public static final int includeFontPadding = 16843103; // 0x101015f
+    field public static final int includeInGlobalSearch = 16843374; // 0x101026e
+    field public static final int indeterminate = 16843065; // 0x1010139
+    field public static final int indeterminateBehavior = 16843070; // 0x101013e
+    field public static final int indeterminateDrawable = 16843067; // 0x101013b
+    field public static final int indeterminateDuration = 16843069; // 0x101013d
+    field public static final int indeterminateOnly = 16843066; // 0x101013a
+    field public static final int indeterminateProgressStyle = 16843544; // 0x1010318
+    field public static final int indeterminateTint = 16843881; // 0x1010469
+    field public static final int indeterminateTintMode = 16843882; // 0x101046a
+    field public static final int indicatorEnd = 16843730; // 0x10103d2
+    field public static final int indicatorLeft = 16843021; // 0x101010d
+    field public static final int indicatorRight = 16843022; // 0x101010e
+    field public static final int indicatorStart = 16843729; // 0x10103d1
+    field public static final int inflatedId = 16842995; // 0x10100f3
+    field public static final int inheritShowWhenLocked = 16844188; // 0x101059c
+    field public static final int initOrder = 16842778; // 0x101001a
+    field public static final int initialKeyguardLayout = 16843714; // 0x10103c2
+    field public static final int initialLayout = 16843345; // 0x1010251
+    field public static final int innerRadius = 16843359; // 0x101025f
+    field public static final int innerRadiusRatio = 16843163; // 0x101019b
+    field @Deprecated public static final int inputMethod = 16843112; // 0x1010168
+    field public static final int inputType = 16843296; // 0x1010220
+    field public static final int inset = 16843957; // 0x10104b5
+    field public static final int insetBottom = 16843194; // 0x10101ba
+    field public static final int insetLeft = 16843191; // 0x10101b7
+    field public static final int insetRight = 16843192; // 0x10101b8
+    field public static final int insetTop = 16843193; // 0x10101b9
+    field public static final int installLocation = 16843447; // 0x10102b7
+    field public static final int interactiveUiTimeout = 16844181; // 0x1010595
+    field public static final int interpolator = 16843073; // 0x1010141
+    field public static final int isAlwaysSyncable = 16843571; // 0x1010333
+    field public static final int isAsciiCapable = 16843753; // 0x10103e9
+    field public static final int isAuxiliary = 16843647; // 0x101037f
+    field public static final int isDefault = 16843297; // 0x1010221
+    field public static final int isFeatureSplit = 16844123; // 0x101055b
+    field public static final int isGame = 16843764; // 0x10103f4
+    field public static final int isIndicator = 16843079; // 0x1010147
+    field public static final int isLightTheme = 16844176; // 0x1010590
+    field @Deprecated public static final int isModifier = 16843334; // 0x1010246
+    field @Deprecated public static final int isRepeatable = 16843336; // 0x1010248
+    field public static final int isScrollContainer = 16843342; // 0x101024e
+    field public static final int isSplitRequired = 16844177; // 0x1010591
+    field public static final int isStatic = 16844122; // 0x101055a
+    field @Deprecated public static final int isSticky = 16843335; // 0x1010247
+    field public static final int isolatedProcess = 16843689; // 0x10103a9
+    field public static final int isolatedSplits = 16844107; // 0x101054b
+    field public static final int itemBackground = 16843056; // 0x1010130
+    field public static final int itemIconDisabledAlpha = 16843057; // 0x1010131
+    field public static final int itemPadding = 16843565; // 0x101032d
+    field public static final int itemTextAppearance = 16843052; // 0x101012c
+    field public static final int justificationMode = 16844135; // 0x1010567
+    field public static final int keepScreenOn = 16843286; // 0x1010216
+    field public static final int key = 16843240; // 0x10101e8
+    field @Deprecated public static final int keyBackground = 16843315; // 0x1010233
+    field @Deprecated public static final int keyEdgeFlags = 16843333; // 0x1010245
+    field @Deprecated public static final int keyHeight = 16843326; // 0x101023e
+    field @Deprecated public static final int keyIcon = 16843340; // 0x101024c
+    field @Deprecated public static final int keyLabel = 16843339; // 0x101024b
+    field @Deprecated public static final int keyOutputText = 16843338; // 0x101024a
+    field @Deprecated public static final int keyPreviewHeight = 16843321; // 0x1010239
+    field @Deprecated public static final int keyPreviewLayout = 16843319; // 0x1010237
+    field @Deprecated public static final int keyPreviewOffset = 16843320; // 0x1010238
+    field public static final int keySet = 16843739; // 0x10103db
+    field @Deprecated public static final int keyTextColor = 16843318; // 0x1010236
+    field @Deprecated public static final int keyTextSize = 16843316; // 0x1010234
+    field @Deprecated public static final int keyWidth = 16843325; // 0x101023d
+    field public static final int keyboardLayout = 16843691; // 0x10103ab
+    field @Deprecated public static final int keyboardMode = 16843341; // 0x101024d
+    field public static final int keyboardNavigationCluster = 16844096; // 0x1010540
+    field public static final int keycode = 16842949; // 0x10100c5
+    field public static final int killAfterRestore = 16843420; // 0x101029c
+    field public static final int label = 16842753; // 0x1010001
+    field public static final int labelFor = 16843718; // 0x10103c6
+    field @Deprecated public static final int labelTextSize = 16843317; // 0x1010235
+    field public static final int languageTag = 16844040; // 0x1010508
+    field public static final int largeHeap = 16843610; // 0x101035a
+    field public static final int largeScreens = 16843398; // 0x1010286
+    field public static final int largestWidthLimitDp = 16843622; // 0x1010366
+    field public static final int lastBaselineToBottomHeight = 16844158; // 0x101057e
+    field public static final int launchMode = 16842781; // 0x101001d
+    field public static final int launchTaskBehindSourceAnimation = 16843922; // 0x1010492
+    field public static final int launchTaskBehindTargetAnimation = 16843921; // 0x1010491
+    field public static final int layerType = 16843604; // 0x1010354
+    field public static final int layout = 16842994; // 0x10100f2
+    field public static final int layoutAnimation = 16842988; // 0x10100ec
+    field public static final int layoutDirection = 16843698; // 0x10103b2
+    field public static final int layoutMode = 16843738; // 0x10103da
+    field public static final int layout_above = 16843140; // 0x1010184
+    field public static final int layout_alignBaseline = 16843142; // 0x1010186
+    field public static final int layout_alignBottom = 16843146; // 0x101018a
+    field public static final int layout_alignEnd = 16843706; // 0x10103ba
+    field public static final int layout_alignLeft = 16843143; // 0x1010187
+    field public static final int layout_alignParentBottom = 16843150; // 0x101018e
+    field public static final int layout_alignParentEnd = 16843708; // 0x10103bc
+    field public static final int layout_alignParentLeft = 16843147; // 0x101018b
+    field public static final int layout_alignParentRight = 16843149; // 0x101018d
+    field public static final int layout_alignParentStart = 16843707; // 0x10103bb
+    field public static final int layout_alignParentTop = 16843148; // 0x101018c
+    field public static final int layout_alignRight = 16843145; // 0x1010189
+    field public static final int layout_alignStart = 16843705; // 0x10103b9
+    field public static final int layout_alignTop = 16843144; // 0x1010188
+    field public static final int layout_alignWithParentIfMissing = 16843154; // 0x1010192
+    field public static final int layout_below = 16843141; // 0x1010185
+    field public static final int layout_centerHorizontal = 16843152; // 0x1010190
+    field public static final int layout_centerInParent = 16843151; // 0x101018f
+    field public static final int layout_centerVertical = 16843153; // 0x1010191
+    field public static final int layout_column = 16843084; // 0x101014c
+    field public static final int layout_columnSpan = 16843645; // 0x101037d
+    field public static final int layout_columnWeight = 16843865; // 0x1010459
+    field public static final int layout_gravity = 16842931; // 0x10100b3
+    field public static final int layout_height = 16842997; // 0x10100f5
+    field public static final int layout_margin = 16842998; // 0x10100f6
+    field public static final int layout_marginBottom = 16843002; // 0x10100fa
+    field public static final int layout_marginEnd = 16843702; // 0x10103b6
+    field public static final int layout_marginHorizontal = 16844091; // 0x101053b
+    field public static final int layout_marginLeft = 16842999; // 0x10100f7
+    field public static final int layout_marginRight = 16843001; // 0x10100f9
+    field public static final int layout_marginStart = 16843701; // 0x10103b5
+    field public static final int layout_marginTop = 16843000; // 0x10100f8
+    field public static final int layout_marginVertical = 16844092; // 0x101053c
+    field public static final int layout_row = 16843643; // 0x101037b
+    field public static final int layout_rowSpan = 16843644; // 0x101037c
+    field public static final int layout_rowWeight = 16843864; // 0x1010458
+    field public static final int layout_scale = 16843155; // 0x1010193
+    field public static final int layout_span = 16843085; // 0x101014d
+    field public static final int layout_toEndOf = 16843704; // 0x10103b8
+    field public static final int layout_toLeftOf = 16843138; // 0x1010182
+    field public static final int layout_toRightOf = 16843139; // 0x1010183
+    field public static final int layout_toStartOf = 16843703; // 0x10103b7
+    field public static final int layout_weight = 16843137; // 0x1010181
+    field public static final int layout_width = 16842996; // 0x10100f4
+    field public static final int layout_x = 16843135; // 0x101017f
+    field public static final int layout_y = 16843136; // 0x1010180
+    field public static final int left = 16843181; // 0x10101ad
+    field public static final int letterSpacing = 16843958; // 0x10104b6
+    field public static final int level = 16844032; // 0x1010500
+    field public static final int lineHeight = 16844159; // 0x101057f
+    field public static final int lineSpacingExtra = 16843287; // 0x1010217
+    field public static final int lineSpacingMultiplier = 16843288; // 0x1010218
+    field public static final int lines = 16843092; // 0x1010154
+    field public static final int linksClickable = 16842929; // 0x10100b1
+    field public static final int listChoiceBackgroundIndicator = 16843504; // 0x10102f0
+    field public static final int listChoiceIndicatorMultiple = 16843290; // 0x101021a
+    field public static final int listChoiceIndicatorSingle = 16843289; // 0x1010219
+    field public static final int listDivider = 16843284; // 0x1010214
+    field public static final int listDividerAlertDialog = 16843525; // 0x1010305
+    field public static final int listMenuViewStyle = 16844018; // 0x10104f2
+    field public static final int listPopupWindowStyle = 16843519; // 0x10102ff
+    field public static final int listPreferredItemHeight = 16842829; // 0x101004d
+    field public static final int listPreferredItemHeightLarge = 16843654; // 0x1010386
+    field public static final int listPreferredItemHeightSmall = 16843655; // 0x1010387
+    field public static final int listPreferredItemPaddingEnd = 16843710; // 0x10103be
+    field public static final int listPreferredItemPaddingLeft = 16843683; // 0x10103a3
+    field public static final int listPreferredItemPaddingRight = 16843684; // 0x10103a4
+    field public static final int listPreferredItemPaddingStart = 16843709; // 0x10103bd
+    field public static final int listSelector = 16843003; // 0x10100fb
+    field public static final int listSeparatorTextViewStyle = 16843272; // 0x1010208
+    field public static final int listViewStyle = 16842868; // 0x1010074
+    field public static final int listViewWhiteStyle = 16842869; // 0x1010075
+    field public static final int lockTaskMode = 16844013; // 0x10104ed
+    field public static final int logo = 16843454; // 0x10102be
+    field public static final int logoDescription = 16844009; // 0x10104e9
+    field public static final int longClickable = 16842982; // 0x10100e6
+    field public static final int loopViews = 16843527; // 0x1010307
+    field public static final int manageSpaceActivity = 16842756; // 0x1010004
+    field public static final int mapViewStyle = 16842890; // 0x101008a
+    field public static final int marqueeRepeatLimit = 16843293; // 0x101021d
+    field public static final int matchOrder = 16843855; // 0x101044f
+    field public static final int max = 16843062; // 0x1010136
+    field public static final int maxAspectRatio = 16844128; // 0x1010560
+    field public static final int maxButtonHeight = 16844029; // 0x10104fd
+    field public static final int maxDate = 16843584; // 0x1010340
+    field public static final int maxEms = 16843095; // 0x1010157
+    field public static final int maxHeight = 16843040; // 0x1010120
+    field public static final int maxItemsPerRow = 16843060; // 0x1010134
+    field public static final int maxLength = 16843104; // 0x1010160
+    field public static final int maxLevel = 16843186; // 0x10101b2
+    field public static final int maxLines = 16843091; // 0x1010153
+    field public static final int maxLongVersionCode = 16844163; // 0x1010583
+    field public static final int maxRecents = 16843846; // 0x1010446
+    field public static final int maxRows = 16843059; // 0x1010133
+    field public static final int maxSdkVersion = 16843377; // 0x1010271
+    field public static final int maxWidth = 16843039; // 0x101011f
+    field public static final int maximumAngle = 16843903; // 0x101047f
+    field public static final int measureAllChildren = 16843018; // 0x101010a
+    field public static final int measureWithLargestChild = 16843476; // 0x10102d4
+    field public static final int mediaRouteButtonStyle = 16843693; // 0x10103ad
+    field public static final int mediaRouteTypes = 16843694; // 0x10103ae
+    field public static final int menuCategory = 16843230; // 0x10101de
+    field public static final int mimeGroup = 16844309; // 0x1010615
+    field public static final int mimeType = 16842790; // 0x1010026
+    field public static final int min = 16844089; // 0x1010539
+    field public static final int minAspectRatio = 16844187; // 0x101059b
+    field public static final int minDate = 16843583; // 0x101033f
+    field public static final int minEms = 16843098; // 0x101015a
+    field public static final int minHeight = 16843072; // 0x1010140
+    field public static final int minLevel = 16843185; // 0x10101b1
+    field public static final int minLines = 16843094; // 0x1010156
+    field public static final int minResizeHeight = 16843670; // 0x1010396
+    field public static final int minResizeWidth = 16843669; // 0x1010395
+    field public static final int minSdkVersion = 16843276; // 0x101020c
+    field public static final int minWidth = 16843071; // 0x101013f
+    field public static final int minimumHorizontalAngle = 16843901; // 0x101047d
+    field public static final int minimumVerticalAngle = 16843902; // 0x101047e
+    field public static final int mipMap = 16843725; // 0x10103cd
+    field public static final int mirrorForRtl = 16843726; // 0x10103ce
+    field public static final int mode = 16843134; // 0x101017e
+    field public static final int moreIcon = 16843061; // 0x1010135
+    field public static final int multiArch = 16843918; // 0x101048e
+    field public static final int multiprocess = 16842771; // 0x1010013
+    field public static final int name = 16842755; // 0x1010003
+    field public static final int navigationBarColor = 16843858; // 0x1010452
+    field public static final int navigationBarDividerColor = 16844141; // 0x101056d
+    field public static final int navigationContentDescription = 16843969; // 0x10104c1
+    field public static final int navigationIcon = 16843968; // 0x10104c0
+    field public static final int navigationMode = 16843471; // 0x10102cf
+    field public static final int negativeButtonText = 16843254; // 0x10101f6
+    field public static final int nestedScrollingEnabled = 16843830; // 0x1010436
+    field public static final int networkSecurityConfig = 16844071; // 0x1010527
+    field public static final int nextClusterForward = 16844098; // 0x1010542
+    field public static final int nextFocusDown = 16842980; // 0x10100e4
+    field public static final int nextFocusForward = 16843580; // 0x101033c
+    field public static final int nextFocusLeft = 16842977; // 0x10100e1
+    field public static final int nextFocusRight = 16842978; // 0x10100e2
+    field public static final int nextFocusUp = 16842979; // 0x10100e3
+    field public static final int noHistory = 16843309; // 0x101022d
+    field public static final int nonInteractiveUiTimeout = 16844175; // 0x101058f
+    field public static final int normalScreens = 16843397; // 0x1010285
+    field public static final int notificationTimeout = 16843651; // 0x1010383
+    field public static final int numColumns = 16843032; // 0x1010118
+    field public static final int numStars = 16843076; // 0x1010144
+    field public static final int numberPickerStyle = 16844068; // 0x1010524
+    field public static final int numbersBackgroundColor = 16843938; // 0x10104a2
+    field public static final int numbersInnerTextColor = 16844001; // 0x10104e1
+    field public static final int numbersSelectorColor = 16843939; // 0x10104a3
+    field public static final int numbersTextColor = 16843937; // 0x10104a1
+    field @Deprecated public static final int numeric = 16843109; // 0x1010165
+    field public static final int numericModifiers = 16844111; // 0x101054f
+    field public static final int numericShortcut = 16843236; // 0x10101e4
+    field public static final int offset = 16844052; // 0x1010514
+    field public static final int onClick = 16843375; // 0x101026f
+    field public static final int oneshot = 16843159; // 0x1010197
+    field public static final int opacity = 16843550; // 0x101031e
+    field public static final int opticalInsetBottom = 16844171; // 0x101058b
+    field public static final int opticalInsetLeft = 16844168; // 0x1010588
+    field public static final int opticalInsetRight = 16844170; // 0x101058a
+    field public static final int opticalInsetTop = 16844169; // 0x1010589
+    field public static final int order = 16843242; // 0x10101ea
+    field public static final int orderInCategory = 16843231; // 0x10101df
+    field public static final int ordering = 16843490; // 0x10102e2
+    field public static final int orderingFromXml = 16843239; // 0x10101e7
+    field public static final int orientation = 16842948; // 0x10100c4
+    field public static final int outAnimation = 16843128; // 0x1010178
+    field public static final int outlineAmbientShadowColor = 16844162; // 0x1010582
+    field public static final int outlineProvider = 16843960; // 0x10104b8
+    field public static final int outlineSpotShadowColor = 16844161; // 0x1010581
+    field public static final int overScrollFooter = 16843459; // 0x10102c3
+    field public static final int overScrollHeader = 16843458; // 0x10102c2
+    field public static final int overScrollMode = 16843457; // 0x10102c1
+    field public static final int overlapAnchor = 16843874; // 0x1010462
+    field public static final int overridesImplicitlyEnabledSubtype = 16843682; // 0x10103a2
+    field public static final int packageNames = 16843649; // 0x1010381
+    field public static final int packageType = 16844167; // 0x1010587
+    field public static final int padding = 16842965; // 0x10100d5
+    field public static final int paddingBottom = 16842969; // 0x10100d9
+    field public static final int paddingEnd = 16843700; // 0x10103b4
+    field public static final int paddingHorizontal = 16844093; // 0x101053d
+    field public static final int paddingLeft = 16842966; // 0x10100d6
+    field public static final int paddingMode = 16843863; // 0x1010457
+    field public static final int paddingRight = 16842968; // 0x10100d8
+    field public static final int paddingStart = 16843699; // 0x10103b3
+    field public static final int paddingTop = 16842967; // 0x10100d7
+    field public static final int paddingVertical = 16844094; // 0x101053e
+    field public static final int panelBackground = 16842846; // 0x101005e
+    field public static final int panelColorBackground = 16842849; // 0x1010061
+    field public static final int panelColorForeground = 16842848; // 0x1010060
+    field public static final int panelFullBackground = 16842847; // 0x101005f
+    field public static final int panelTextAppearance = 16842850; // 0x1010062
+    field public static final int parentActivityName = 16843687; // 0x10103a7
+    field @Deprecated public static final int password = 16843100; // 0x101015c
+    field public static final int path = 16842794; // 0x101002a
+    field public static final int pathData = 16843781; // 0x1010405
+    field public static final int pathPattern = 16842796; // 0x101002c
+    field public static final int pathPrefix = 16842795; // 0x101002b
+    field public static final int patternPathData = 16843978; // 0x10104ca
+    field public static final int permission = 16842758; // 0x1010006
+    field public static final int permissionFlags = 16843719; // 0x10103c7
+    field public static final int permissionGroup = 16842762; // 0x101000a
+    field public static final int permissionGroupFlags = 16843717; // 0x10103c5
+    field public static final int persistableMode = 16843821; // 0x101042d
+    field public static final int persistent = 16842765; // 0x101000d
+    field public static final int persistentDrawingCache = 16842990; // 0x10100ee
+    field public static final int persistentWhenFeatureAvailable = 16844131; // 0x1010563
+    field @Deprecated public static final int phoneNumber = 16843111; // 0x1010167
+    field public static final int pivotX = 16843189; // 0x10101b5
+    field public static final int pivotY = 16843190; // 0x10101b6
+    field public static final int pointerIcon = 16844041; // 0x1010509
+    field public static final int popupAnimationStyle = 16843465; // 0x10102c9
+    field public static final int popupBackground = 16843126; // 0x1010176
+    field @Deprecated public static final int popupCharacters = 16843332; // 0x1010244
+    field public static final int popupElevation = 16843916; // 0x101048c
+    field public static final int popupEnterTransition = 16844063; // 0x101051f
+    field public static final int popupExitTransition = 16844064; // 0x1010520
+    field @Deprecated public static final int popupKeyboard = 16843331; // 0x1010243
+    field @Deprecated public static final int popupLayout = 16843323; // 0x101023b
+    field public static final int popupMenuStyle = 16843520; // 0x1010300
+    field public static final int popupTheme = 16843945; // 0x10104a9
+    field public static final int popupWindowStyle = 16842870; // 0x1010076
+    field public static final int port = 16842793; // 0x1010029
+    field public static final int positiveButtonText = 16843253; // 0x10101f5
+    field public static final int preferMinimalPostProcessing = 16844300; // 0x101060c
+    field public static final int preferenceCategoryStyle = 16842892; // 0x101008c
+    field public static final int preferenceFragmentStyle = 16844038; // 0x1010506
+    field public static final int preferenceInformationStyle = 16842893; // 0x101008d
+    field public static final int preferenceLayoutChild = 16842900; // 0x1010094
+    field public static final int preferenceScreenStyle = 16842891; // 0x101008b
+    field public static final int preferenceStyle = 16842894; // 0x101008e
+    field public static final int presentationTheme = 16843712; // 0x10103c0
+    field public static final int preserveLegacyExternalStorage = 16844308; // 0x1010614
+    field public static final int previewImage = 16843482; // 0x10102da
+    field public static final int primaryContentAlpha = 16844114; // 0x1010552
+    field public static final int priority = 16842780; // 0x101001c
+    field public static final int privateImeOptions = 16843299; // 0x1010223
+    field public static final int process = 16842769; // 0x1010011
+    field public static final int progress = 16843063; // 0x1010137
+    field public static final int progressBackgroundTint = 16843877; // 0x1010465
+    field public static final int progressBackgroundTintMode = 16843878; // 0x1010466
+    field public static final int progressBarPadding = 16843545; // 0x1010319
+    field public static final int progressBarStyle = 16842871; // 0x1010077
+    field public static final int progressBarStyleHorizontal = 16842872; // 0x1010078
+    field public static final int progressBarStyleInverse = 16843399; // 0x1010287
+    field public static final int progressBarStyleLarge = 16842874; // 0x101007a
+    field public static final int progressBarStyleLargeInverse = 16843401; // 0x1010289
+    field public static final int progressBarStyleSmall = 16842873; // 0x1010079
+    field public static final int progressBarStyleSmallInverse = 16843400; // 0x1010288
+    field public static final int progressBarStyleSmallTitle = 16843279; // 0x101020f
+    field public static final int progressDrawable = 16843068; // 0x101013c
+    field public static final int progressTint = 16843875; // 0x1010463
+    field public static final int progressTintMode = 16843876; // 0x1010464
+    field public static final int prompt = 16843131; // 0x101017b
+    field public static final int propertyName = 16843489; // 0x10102e1
+    field public static final int propertyXName = 16843892; // 0x1010474
+    field public static final int propertyYName = 16843893; // 0x1010475
+    field public static final int protectionLevel = 16842761; // 0x1010009
+    field public static final int publicKey = 16843686; // 0x10103a6
+    field public static final int queryActionMsg = 16843227; // 0x10101db
+    field public static final int queryAfterZeroResults = 16843394; // 0x1010282
+    field public static final int queryBackground = 16843911; // 0x1010487
+    field public static final int queryHint = 16843608; // 0x1010358
+    field public static final int quickContactBadgeStyleSmallWindowLarge = 16843443; // 0x10102b3
+    field public static final int quickContactBadgeStyleSmallWindowMedium = 16843442; // 0x10102b2
+    field public static final int quickContactBadgeStyleSmallWindowSmall = 16843441; // 0x10102b1
+    field public static final int quickContactBadgeStyleWindowLarge = 16843440; // 0x10102b0
+    field public static final int quickContactBadgeStyleWindowMedium = 16843439; // 0x10102af
+    field public static final int quickContactBadgeStyleWindowSmall = 16843438; // 0x10102ae
+    field public static final int radioButtonStyle = 16842878; // 0x101007e
+    field public static final int radius = 16843176; // 0x10101a8
+    field public static final int rating = 16843077; // 0x1010145
+    field public static final int ratingBarStyle = 16842876; // 0x101007c
+    field public static final int ratingBarStyleIndicator = 16843280; // 0x1010210
+    field public static final int ratingBarStyleSmall = 16842877; // 0x101007d
+    field public static final int readPermission = 16842759; // 0x1010007
+    field public static final int recognitionService = 16843932; // 0x101049c
+    field public static final int recreateOnConfigChanges = 16844103; // 0x1010547
+    field public static final int recycleEnabled = 16844121; // 0x1010559
+    field public static final int relinquishTaskIdentity = 16843894; // 0x1010476
+    field public static final int reparent = 16843964; // 0x10104bc
+    field public static final int reparentWithOverlay = 16843965; // 0x10104bd
+    field public static final int repeatCount = 16843199; // 0x10101bf
+    field public static final int repeatMode = 16843200; // 0x10101c0
+    field public static final int reqFiveWayNav = 16843314; // 0x1010232
+    field public static final int reqHardKeyboard = 16843305; // 0x1010229
+    field public static final int reqKeyboardType = 16843304; // 0x1010228
+    field public static final int reqNavigation = 16843306; // 0x101022a
+    field public static final int reqTouchScreen = 16843303; // 0x1010227
+    field public static final int requestLegacyExternalStorage = 16844291; // 0x1010603
+    field public static final int requireDeviceUnlock = 16843756; // 0x10103ec
+    field public static final int required = 16843406; // 0x101028e
+    field public static final int requiredAccountType = 16843734; // 0x10103d6
+    field public static final int requiredFeature = 16844116; // 0x1010554
+    field public static final int requiredForAllUsers = 16843728; // 0x10103d0
+    field public static final int requiredNotFeature = 16844117; // 0x1010555
+    field public static final int requiresFadingEdge = 16843685; // 0x10103a5
+    field public static final int requiresSmallestWidthDp = 16843620; // 0x1010364
+    field public static final int resizeClip = 16843983; // 0x10104cf
+    field public static final int resizeMode = 16843619; // 0x1010363
+    field public static final int resizeable = 16843405; // 0x101028d
+    field public static final int resizeableActivity = 16844022; // 0x10104f6
+    field public static final int resource = 16842789; // 0x1010025
+    field public static final int resourcesMap = 16844297; // 0x1010609
+    field public static final int restoreAnyVersion = 16843450; // 0x10102ba
+    field @Deprecated public static final int restoreNeedsApplication = 16843421; // 0x101029d
+    field public static final int restrictedAccountType = 16843733; // 0x10103d5
+    field public static final int restrictionType = 16843923; // 0x1010493
+    field public static final int resumeWhilePausing = 16843954; // 0x10104b2
+    field public static final int reversible = 16843851; // 0x101044b
+    field public static final int revisionCode = 16843989; // 0x10104d5
+    field public static final int right = 16843183; // 0x10101af
+    field public static final int ringtonePreferenceStyle = 16842899; // 0x1010093
+    field public static final int ringtoneType = 16843257; // 0x10101f9
+    field public static final int rotation = 16843558; // 0x1010326
+    field public static final int rotationAnimation = 16844090; // 0x101053a
+    field public static final int rotationX = 16843559; // 0x1010327
+    field public static final int rotationY = 16843560; // 0x1010328
+    field public static final int roundIcon = 16844076; // 0x101052c
+    field public static final int rowCount = 16843637; // 0x1010375
+    field public static final int rowDelay = 16843216; // 0x10101d0
+    field @Deprecated public static final int rowEdgeFlags = 16843329; // 0x1010241
+    field public static final int rowHeight = 16843058; // 0x1010132
+    field public static final int rowOrderPreserved = 16843638; // 0x1010376
+    field public static final int saveEnabled = 16842983; // 0x10100e7
+    field public static final int scaleGravity = 16843262; // 0x10101fe
+    field public static final int scaleHeight = 16843261; // 0x10101fd
+    field public static final int scaleType = 16843037; // 0x101011d
+    field public static final int scaleWidth = 16843260; // 0x10101fc
+    field public static final int scaleX = 16843556; // 0x1010324
+    field public static final int scaleY = 16843557; // 0x1010325
+    field public static final int scheme = 16842791; // 0x1010027
+    field public static final int screenDensity = 16843467; // 0x10102cb
+    field public static final int screenOrientation = 16842782; // 0x101001e
+    field public static final int screenReaderFocusable = 16844148; // 0x1010574
+    field public static final int screenSize = 16843466; // 0x10102ca
+    field public static final int scrollHorizontally = 16843099; // 0x101015b
+    field public static final int scrollIndicators = 16844006; // 0x10104e6
+    field public static final int scrollViewStyle = 16842880; // 0x1010080
+    field public static final int scrollX = 16842962; // 0x10100d2
+    field public static final int scrollY = 16842963; // 0x10100d3
+    field public static final int scrollbarAlwaysDrawHorizontalTrack = 16842856; // 0x1010068
+    field public static final int scrollbarAlwaysDrawVerticalTrack = 16842857; // 0x1010069
+    field public static final int scrollbarDefaultDelayBeforeFade = 16843433; // 0x10102a9
+    field public static final int scrollbarFadeDuration = 16843432; // 0x10102a8
+    field public static final int scrollbarSize = 16842851; // 0x1010063
+    field public static final int scrollbarStyle = 16842879; // 0x101007f
+    field public static final int scrollbarThumbHorizontal = 16842852; // 0x1010064
+    field public static final int scrollbarThumbVertical = 16842853; // 0x1010065
+    field public static final int scrollbarTrackHorizontal = 16842854; // 0x1010066
+    field public static final int scrollbarTrackVertical = 16842855; // 0x1010067
+    field public static final int scrollbars = 16842974; // 0x10100de
+    field public static final int scrollingCache = 16843006; // 0x10100fe
+    field @Deprecated public static final int searchButtonText = 16843269; // 0x1010205
+    field public static final int searchHintIcon = 16843988; // 0x10104d4
+    field public static final int searchIcon = 16843907; // 0x1010483
+    field public static final int searchMode = 16843221; // 0x10101d5
+    field public static final int searchSettingsDescription = 16843402; // 0x101028a
+    field public static final int searchSuggestAuthority = 16843222; // 0x10101d6
+    field public static final int searchSuggestIntentAction = 16843225; // 0x10101d9
+    field public static final int searchSuggestIntentData = 16843226; // 0x10101da
+    field public static final int searchSuggestPath = 16843223; // 0x10101d7
+    field public static final int searchSuggestSelection = 16843224; // 0x10101d8
+    field public static final int searchSuggestThreshold = 16843373; // 0x101026d
+    field public static final int searchViewStyle = 16843904; // 0x1010480
+    field public static final int secondaryContentAlpha = 16844115; // 0x1010553
+    field public static final int secondaryProgress = 16843064; // 0x1010138
+    field public static final int secondaryProgressTint = 16843879; // 0x1010467
+    field public static final int secondaryProgressTintMode = 16843880; // 0x1010468
+    field public static final int secureElementName = 16844290; // 0x1010602
+    field public static final int seekBarStyle = 16842875; // 0x101007b
+    field public static final int segmentedButtonStyle = 16843568; // 0x1010330
+    field public static final int selectAllOnFocus = 16843102; // 0x101015e
+    field public static final int selectable = 16843238; // 0x10101e6
+    field public static final int selectableItemBackground = 16843534; // 0x101030e
+    field public static final int selectableItemBackgroundBorderless = 16843868; // 0x101045c
+    field @Deprecated public static final int selectedDateVerticalBar = 16843591; // 0x1010347
+    field @Deprecated public static final int selectedWeekBackgroundColor = 16843586; // 0x1010342
+    field public static final int selectionDividerHeight = 16844184; // 0x1010598
+    field public static final int sessionService = 16843837; // 0x101043d
+    field public static final int settingsActivity = 16843301; // 0x1010225
+    field public static final int settingsSliceUri = 16844179; // 0x1010593
+    field public static final int setupActivity = 16843766; // 0x10103f6
+    field public static final int shadowColor = 16843105; // 0x1010161
+    field public static final int shadowDx = 16843106; // 0x1010162
+    field public static final int shadowDy = 16843107; // 0x1010163
+    field public static final int shadowRadius = 16843108; // 0x1010164
+    field public static final int shape = 16843162; // 0x101019a
+    field public static final int shareInterpolator = 16843195; // 0x10101bb
+    field @Deprecated public static final int sharedUserId = 16842763; // 0x101000b
+    field @Deprecated public static final int sharedUserLabel = 16843361; // 0x1010261
+    field public static final int shell = 16844180; // 0x1010594
+    field public static final int shortcutDisabledMessage = 16844075; // 0x101052b
+    field public static final int shortcutId = 16844072; // 0x1010528
+    field public static final int shortcutLongLabel = 16844074; // 0x101052a
+    field public static final int shortcutShortLabel = 16844073; // 0x1010529
+    field public static final int shouldDisableView = 16843246; // 0x10101ee
+    field public static final int showAsAction = 16843481; // 0x10102d9
+    field public static final int showDefault = 16843258; // 0x10101fa
+    field public static final int showDividers = 16843561; // 0x1010329
+    field public static final int showForAllUsers = 16844015; // 0x10104ef
+    field public static final int showMetadataInPreview = 16844079; // 0x101052f
+    field @Deprecated public static final int showOnLockScreen = 16843721; // 0x10103c9
+    field public static final int showSilent = 16843259; // 0x10101fb
+    field public static final int showText = 16843949; // 0x10104ad
+    field @Deprecated public static final int showWeekNumber = 16843582; // 0x101033e
+    field public static final int showWhenLocked = 16844137; // 0x1010569
+    field @Deprecated public static final int shownWeekCount = 16843585; // 0x1010341
+    field public static final int shrinkColumns = 16843082; // 0x101014a
+    field @Deprecated public static final int singleLine = 16843101; // 0x101015d
+    field public static final int singleLineTitle = 16844124; // 0x101055c
+    field public static final int singleUser = 16843711; // 0x10103bf
+    field public static final int slideEdge = 16843824; // 0x1010430
+    field public static final int smallIcon = 16843422; // 0x101029e
+    field public static final int smallScreens = 16843396; // 0x1010284
+    field public static final int smoothScrollbar = 16843313; // 0x1010231
+    field public static final int soundEffectsEnabled = 16843285; // 0x1010215
+    field public static final int spacing = 16843027; // 0x1010113
+    field public static final int spinnerDropDownItemStyle = 16842887; // 0x1010087
+    field public static final int spinnerItemStyle = 16842889; // 0x1010089
+    field public static final int spinnerMode = 16843505; // 0x10102f1
+    field public static final int spinnerStyle = 16842881; // 0x1010081
+    field public static final int spinnersShown = 16843595; // 0x101034b
+    field public static final int splitMotionEvents = 16843503; // 0x10102ef
+    field public static final int splitName = 16844105; // 0x1010549
+    field public static final int splitTrack = 16843852; // 0x101044c
+    field public static final int spotShadowAlpha = 16843967; // 0x10104bf
+    field public static final int src = 16843033; // 0x1010119
+    field public static final int ssp = 16843747; // 0x10103e3
+    field public static final int sspPattern = 16843749; // 0x10103e5
+    field public static final int sspPrefix = 16843748; // 0x10103e4
+    field public static final int stackFromBottom = 16843005; // 0x10100fd
+    field public static final int stackViewStyle = 16843838; // 0x101043e
+    field public static final int starStyle = 16842882; // 0x1010082
+    field public static final int start = 16843995; // 0x10104db
+    field public static final int startColor = 16843165; // 0x101019d
+    field public static final int startDelay = 16843746; // 0x10103e2
+    field public static final int startOffset = 16843198; // 0x10101be
+    field public static final int startX = 16844048; // 0x1010510
+    field public static final int startY = 16844049; // 0x1010511
+    field @Deprecated public static final int startYear = 16843132; // 0x101017c
+    field public static final int stateListAnimator = 16843848; // 0x1010448
+    field public static final int stateNotNeeded = 16842774; // 0x1010016
+    field public static final int state_above_anchor = 16842922; // 0x10100aa
+    field public static final int state_accelerated = 16843547; // 0x101031b
+    field public static final int state_activated = 16843518; // 0x10102fe
+    field public static final int state_active = 16842914; // 0x10100a2
+    field public static final int state_checkable = 16842911; // 0x101009f
+    field public static final int state_checked = 16842912; // 0x10100a0
+    field public static final int state_drag_can_accept = 16843624; // 0x1010368
+    field public static final int state_drag_hovered = 16843625; // 0x1010369
+    field public static final int state_empty = 16842921; // 0x10100a9
+    field public static final int state_enabled = 16842910; // 0x101009e
+    field public static final int state_expanded = 16842920; // 0x10100a8
+    field public static final int state_first = 16842916; // 0x10100a4
+    field public static final int state_focused = 16842908; // 0x101009c
+    field public static final int state_hovered = 16843623; // 0x1010367
+    field public static final int state_last = 16842918; // 0x10100a6
+    field @Deprecated public static final int state_long_pressable = 16843324; // 0x101023c
+    field public static final int state_middle = 16842917; // 0x10100a5
+    field public static final int state_multiline = 16843597; // 0x101034d
+    field public static final int state_pressed = 16842919; // 0x10100a7
+    field public static final int state_selected = 16842913; // 0x10100a1
+    field public static final int state_single = 16842915; // 0x10100a3
+    field public static final int state_window_focused = 16842909; // 0x101009d
+    field public static final int staticWallpaperPreview = 16843569; // 0x1010331
+    field public static final int statusBarColor = 16843857; // 0x1010451
+    field public static final int stepSize = 16843078; // 0x1010146
+    field public static final int stopWithTask = 16843626; // 0x101036a
+    field public static final int streamType = 16843273; // 0x1010209
+    field public static final int stretchColumns = 16843081; // 0x1010149
+    field public static final int stretchMode = 16843030; // 0x1010116
+    field public static final int strokeAlpha = 16843979; // 0x10104cb
+    field public static final int strokeColor = 16843782; // 0x1010406
+    field public static final int strokeLineCap = 16843787; // 0x101040b
+    field public static final int strokeLineJoin = 16843788; // 0x101040c
+    field public static final int strokeMiterLimit = 16843789; // 0x101040d
+    field public static final int strokeWidth = 16843783; // 0x1010407
+    field public static final int subMenuArrow = 16844019; // 0x10104f3
+    field public static final int submitBackground = 16843912; // 0x1010488
+    field public static final int subtitle = 16843473; // 0x10102d1
+    field public static final int subtitleTextAppearance = 16843823; // 0x101042f
+    field public static final int subtitleTextColor = 16844004; // 0x10104e4
+    field public static final int subtitleTextStyle = 16843513; // 0x10102f9
+    field public static final int subtypeExtraValue = 16843674; // 0x101039a
+    field public static final int subtypeId = 16843713; // 0x10103c1
+    field public static final int subtypeLocale = 16843673; // 0x1010399
+    field public static final int suggestActionMsg = 16843228; // 0x10101dc
+    field public static final int suggestActionMsgColumn = 16843229; // 0x10101dd
+    field public static final int suggestionRowLayout = 16843910; // 0x1010486
+    field public static final int summary = 16843241; // 0x10101e9
+    field public static final int summaryColumn = 16843426; // 0x10102a2
+    field public static final int summaryOff = 16843248; // 0x10101f0
+    field public static final int summaryOn = 16843247; // 0x10101ef
+    field public static final int supportsAssist = 16844016; // 0x10104f0
+    field public static final int supportsInlineSuggestions = 16844301; // 0x101060d
+    field public static final int supportsLaunchVoiceAssistFromKeyguard = 16844017; // 0x10104f1
+    field public static final int supportsLocalInteraction = 16844047; // 0x101050f
+    field public static final int supportsMultipleDisplays = 16844182; // 0x1010596
+    field public static final int supportsPictureInPicture = 16844023; // 0x10104f7
+    field public static final int supportsRtl = 16843695; // 0x10103af
+    field public static final int supportsSwitchingToNextInputMethod = 16843755; // 0x10103eb
+    field public static final int supportsUploading = 16843419; // 0x101029b
+    field public static final int switchMinWidth = 16843632; // 0x1010370
+    field public static final int switchPadding = 16843633; // 0x1010371
+    field public static final int switchPreferenceStyle = 16843629; // 0x101036d
+    field public static final int switchStyle = 16843839; // 0x101043f
+    field public static final int switchTextAppearance = 16843630; // 0x101036e
+    field public static final int switchTextOff = 16843628; // 0x101036c
+    field public static final int switchTextOn = 16843627; // 0x101036b
+    field public static final int syncable = 16842777; // 0x1010019
+    field public static final int tabStripEnabled = 16843453; // 0x10102bd
+    field public static final int tabStripLeft = 16843451; // 0x10102bb
+    field public static final int tabStripRight = 16843452; // 0x10102bc
+    field public static final int tabWidgetStyle = 16842883; // 0x1010083
+    field public static final int tag = 16842961; // 0x10100d1
+    field public static final int targetActivity = 16843266; // 0x1010202
+    field public static final int targetClass = 16842799; // 0x101002f
+    field @Deprecated public static final int targetDescriptions = 16843680; // 0x10103a0
+    field public static final int targetId = 16843740; // 0x10103dc
+    field public static final int targetName = 16843853; // 0x101044d
+    field public static final int targetPackage = 16842785; // 0x1010021
+    field public static final int targetProcesses = 16844097; // 0x1010541
+    field @Deprecated public static final int targetSandboxVersion = 16844108; // 0x101054c
+    field public static final int targetSdkVersion = 16843376; // 0x1010270
+    field public static final int taskAffinity = 16842770; // 0x1010012
+    field public static final int taskCloseEnterAnimation = 16842942; // 0x10100be
+    field public static final int taskCloseExitAnimation = 16842943; // 0x10100bf
+    field public static final int taskOpenEnterAnimation = 16842940; // 0x10100bc
+    field public static final int taskOpenExitAnimation = 16842941; // 0x10100bd
+    field public static final int taskToBackEnterAnimation = 16842946; // 0x10100c2
+    field public static final int taskToBackExitAnimation = 16842947; // 0x10100c3
+    field public static final int taskToFrontEnterAnimation = 16842944; // 0x10100c0
+    field public static final int taskToFrontExitAnimation = 16842945; // 0x10100c1
+    field public static final int tension = 16843370; // 0x101026a
+    field public static final int testOnly = 16843378; // 0x1010272
+    field public static final int text = 16843087; // 0x101014f
+    field public static final int textAlignment = 16843697; // 0x10103b1
+    field public static final int textAllCaps = 16843660; // 0x101038c
+    field public static final int textAppearance = 16842804; // 0x1010034
+    field public static final int textAppearanceButton = 16843271; // 0x1010207
+    field public static final int textAppearanceInverse = 16842805; // 0x1010035
+    field public static final int textAppearanceLarge = 16842816; // 0x1010040
+    field public static final int textAppearanceLargeInverse = 16842819; // 0x1010043
+    field public static final int textAppearanceLargePopupMenu = 16843521; // 0x1010301
+    field public static final int textAppearanceListItem = 16843678; // 0x101039e
+    field public static final int textAppearanceListItemSecondary = 16843826; // 0x1010432
+    field public static final int textAppearanceListItemSmall = 16843679; // 0x101039f
+    field public static final int textAppearanceMedium = 16842817; // 0x1010041
+    field public static final int textAppearanceMediumInverse = 16842820; // 0x1010044
+    field public static final int textAppearancePopupMenuHeader = 16844034; // 0x1010502
+    field public static final int textAppearanceSearchResultSubtitle = 16843424; // 0x10102a0
+    field public static final int textAppearanceSearchResultTitle = 16843425; // 0x10102a1
+    field public static final int textAppearanceSmall = 16842818; // 0x1010042
+    field public static final int textAppearanceSmallInverse = 16842821; // 0x1010045
+    field public static final int textAppearanceSmallPopupMenu = 16843522; // 0x1010302
+    field public static final int textCheckMark = 16842822; // 0x1010046
+    field public static final int textCheckMarkInverse = 16842823; // 0x1010047
+    field public static final int textColor = 16842904; // 0x1010098
+    field public static final int textColorAlertDialogListItem = 16843526; // 0x1010306
+    field public static final int textColorHighlight = 16842905; // 0x1010099
+    field public static final int textColorHighlightInverse = 16843599; // 0x101034f
+    field public static final int textColorHint = 16842906; // 0x101009a
+    field public static final int textColorHintInverse = 16842815; // 0x101003f
+    field public static final int textColorLink = 16842907; // 0x101009b
+    field public static final int textColorLinkInverse = 16843600; // 0x1010350
+    field public static final int textColorPrimary = 16842806; // 0x1010036
+    field public static final int textColorPrimaryDisableOnly = 16842807; // 0x1010037
+    field public static final int textColorPrimaryInverse = 16842809; // 0x1010039
+    field public static final int textColorPrimaryInverseDisableOnly = 16843403; // 0x101028b
+    field public static final int textColorPrimaryInverseNoDisable = 16842813; // 0x101003d
+    field public static final int textColorPrimaryNoDisable = 16842811; // 0x101003b
+    field public static final int textColorSecondary = 16842808; // 0x1010038
+    field public static final int textColorSecondaryInverse = 16842810; // 0x101003a
+    field public static final int textColorSecondaryInverseNoDisable = 16842814; // 0x101003e
+    field public static final int textColorSecondaryNoDisable = 16842812; // 0x101003c
+    field public static final int textColorTertiary = 16843282; // 0x1010212
+    field public static final int textColorTertiaryInverse = 16843283; // 0x1010213
+    field public static final int textCursorDrawable = 16843618; // 0x1010362
+    field public static final int textDirection = 16843696; // 0x10103b0
+    field public static final int textEditNoPasteWindowLayout = 16843541; // 0x1010315
+    field public static final int textEditPasteWindowLayout = 16843540; // 0x1010314
+    field public static final int textEditSideNoPasteWindowLayout = 16843615; // 0x101035f
+    field public static final int textEditSidePasteWindowLayout = 16843614; // 0x101035e
+    field public static final int textEditSuggestionItemLayout = 16843636; // 0x1010374
+    field public static final int textFilterEnabled = 16843007; // 0x10100ff
+    field public static final int textFontWeight = 16844165; // 0x1010585
+    field public static final int textIsSelectable = 16843542; // 0x1010316
+    field public static final int textLocale = 16844178; // 0x1010592
+    field public static final int textOff = 16843045; // 0x1010125
+    field public static final int textOn = 16843044; // 0x1010124
+    field public static final int textScaleX = 16843089; // 0x1010151
+    field public static final int textSelectHandle = 16843463; // 0x10102c7
+    field public static final int textSelectHandleLeft = 16843461; // 0x10102c5
+    field public static final int textSelectHandleRight = 16843462; // 0x10102c6
+    field public static final int textSelectHandleWindowStyle = 16843464; // 0x10102c8
+    field public static final int textSize = 16842901; // 0x1010095
+    field public static final int textStyle = 16842903; // 0x1010097
+    field public static final int textSuggestionsWindowStyle = 16843635; // 0x1010373
+    field public static final int textViewStyle = 16842884; // 0x1010084
+    field public static final int theme = 16842752; // 0x1010000
+    field public static final int thickness = 16843360; // 0x1010260
+    field public static final int thicknessRatio = 16843164; // 0x101019c
+    field public static final int thumb = 16843074; // 0x1010142
+    field public static final int thumbOffset = 16843075; // 0x1010143
+    field public static final int thumbPosition = 16844005; // 0x10104e5
+    field public static final int thumbTextPadding = 16843634; // 0x1010372
+    field public static final int thumbTint = 16843889; // 0x1010471
+    field public static final int thumbTintMode = 16843890; // 0x1010472
+    field public static final int thumbnail = 16843429; // 0x10102a5
+    field public static final int tickMark = 16844042; // 0x101050a
+    field public static final int tickMarkTint = 16844043; // 0x101050b
+    field public static final int tickMarkTintMode = 16844044; // 0x101050c
+    field public static final int tileMode = 16843265; // 0x1010201
+    field public static final int tileModeX = 16843895; // 0x1010477
+    field public static final int tileModeY = 16843896; // 0x1010478
+    field public static final int timePickerDialogTheme = 16843934; // 0x101049e
+    field public static final int timePickerMode = 16843956; // 0x10104b4
+    field public static final int timePickerStyle = 16843933; // 0x101049d
+    field public static final int timeZone = 16843724; // 0x10103cc
+    field public static final int tint = 16843041; // 0x1010121
+    field public static final int tintMode = 16843771; // 0x10103fb
+    field public static final int title = 16843233; // 0x10101e1
+    field public static final int titleCondensed = 16843234; // 0x10101e2
+    field public static final int titleMargin = 16844024; // 0x10104f8
+    field public static final int titleMarginBottom = 16844028; // 0x10104fc
+    field public static final int titleMarginEnd = 16844026; // 0x10104fa
+    field public static final int titleMarginStart = 16844025; // 0x10104f9
+    field public static final int titleMarginTop = 16844027; // 0x10104fb
+    field public static final int titleTextAppearance = 16843822; // 0x101042e
+    field public static final int titleTextColor = 16844003; // 0x10104e3
+    field public static final int titleTextStyle = 16843512; // 0x10102f8
+    field public static final int toAlpha = 16843211; // 0x10101cb
+    field public static final int toDegrees = 16843188; // 0x10101b4
+    field public static final int toId = 16843849; // 0x1010449
+    field public static final int toScene = 16843742; // 0x10103de
+    field public static final int toXDelta = 16843207; // 0x10101c7
+    field public static final int toXScale = 16843203; // 0x10101c3
+    field public static final int toYDelta = 16843209; // 0x10101c9
+    field public static final int toYScale = 16843205; // 0x10101c5
+    field public static final int toolbarStyle = 16843946; // 0x10104aa
+    field public static final int tooltipText = 16844084; // 0x1010534
+    field public static final int top = 16843182; // 0x10101ae
+    field public static final int topBright = 16842955; // 0x10100cb
+    field public static final int topDark = 16842951; // 0x10100c7
+    field public static final int topLeftRadius = 16843177; // 0x10101a9
+    field public static final int topOffset = 16843352; // 0x1010258
+    field public static final int topRightRadius = 16843178; // 0x10101aa
+    field public static final int touchscreenBlocksFocus = 16843919; // 0x101048f
+    field public static final int track = 16843631; // 0x101036f
+    field public static final int trackTint = 16843993; // 0x10104d9
+    field public static final int trackTintMode = 16843994; // 0x10104da
+    field public static final int transcriptMode = 16843008; // 0x1010100
+    field public static final int transformPivotX = 16843552; // 0x1010320
+    field public static final int transformPivotY = 16843553; // 0x1010321
+    field public static final int transition = 16843743; // 0x10103df
+    field public static final int transitionGroup = 16843777; // 0x1010401
+    field public static final int transitionName = 16843776; // 0x1010400
+    field public static final int transitionOrdering = 16843744; // 0x10103e0
+    field public static final int transitionVisibilityMode = 16843900; // 0x101047c
+    field public static final int translateX = 16843866; // 0x101045a
+    field public static final int translateY = 16843867; // 0x101045b
+    field public static final int translationX = 16843554; // 0x1010322
+    field public static final int translationY = 16843555; // 0x1010323
+    field public static final int translationZ = 16843770; // 0x10103fa
+    field public static final int trimPathEnd = 16843785; // 0x1010409
+    field public static final int trimPathOffset = 16843786; // 0x101040a
+    field public static final int trimPathStart = 16843784; // 0x1010408
+    field public static final int ttcIndex = 16844143; // 0x101056f
+    field public static final int tunerCount = 16844061; // 0x101051d
+    field public static final int turnScreenOn = 16844138; // 0x101056a
+    field public static final int type = 16843169; // 0x10101a1
+    field public static final int typeface = 16842902; // 0x1010096
+    field public static final int uiOptions = 16843672; // 0x1010398
+    field public static final int uncertainGestureColor = 16843382; // 0x1010276
+    field @Deprecated public static final int unfocusedMonthDateColor = 16843588; // 0x1010344
+    field public static final int unselectedAlpha = 16843278; // 0x101020e
+    field public static final int updatePeriodMillis = 16843344; // 0x1010250
+    field public static final int use32bitAbi = 16844053; // 0x1010515
+    field public static final int useAppZygote = 16844183; // 0x1010597
+    field public static final int useDefaultMargins = 16843641; // 0x1010379
+    field public static final int useEmbeddedDex = 16844190; // 0x101059e
+    field public static final int useIntrinsicSizeAsMinimum = 16843536; // 0x1010310
+    field public static final int useLevel = 16843167; // 0x101019f
+    field public static final int userVisible = 16843409; // 0x1010291
+    field public static final int usesCleartextTraffic = 16844012; // 0x10104ec
+    field public static final int value = 16842788; // 0x1010024
+    field public static final int valueFrom = 16843486; // 0x10102de
+    field public static final int valueTo = 16843487; // 0x10102df
+    field public static final int valueType = 16843488; // 0x10102e0
+    field public static final int variablePadding = 16843157; // 0x1010195
+    field public static final int vendor = 16843751; // 0x10103e7
+    field public static final int version = 16844057; // 0x1010519
+    field public static final int versionCode = 16843291; // 0x101021b
+    field public static final int versionCodeMajor = 16844150; // 0x1010576
+    field public static final int versionMajor = 16844151; // 0x1010577
+    field public static final int versionName = 16843292; // 0x101021c
+    field @Deprecated public static final int verticalCorrection = 16843322; // 0x101023a
+    field public static final int verticalDivider = 16843054; // 0x101012e
+    field @Deprecated public static final int verticalGap = 16843328; // 0x1010240
+    field public static final int verticalScrollbarPosition = 16843572; // 0x1010334
+    field public static final int verticalSpacing = 16843029; // 0x1010115
+    field public static final int viewportHeight = 16843779; // 0x1010403
+    field public static final int viewportWidth = 16843778; // 0x1010402
+    field public static final int visibility = 16842972; // 0x10100dc
+    field public static final int visible = 16843156; // 0x1010194
+    field public static final int visibleToInstantApps = 16844081; // 0x1010531
+    field public static final int vmSafeMode = 16843448; // 0x10102b8
+    field public static final int voiceIcon = 16843908; // 0x1010484
+    field public static final int voiceLanguage = 16843349; // 0x1010255
+    field public static final int voiceLanguageModel = 16843347; // 0x1010253
+    field public static final int voiceMaxResults = 16843350; // 0x1010256
+    field public static final int voicePromptText = 16843348; // 0x1010254
+    field public static final int voiceSearchMode = 16843346; // 0x1010252
+    field public static final int wallpaperCloseEnterAnimation = 16843413; // 0x1010295
+    field public static final int wallpaperCloseExitAnimation = 16843414; // 0x1010296
+    field public static final int wallpaperIntraCloseEnterAnimation = 16843417; // 0x1010299
+    field public static final int wallpaperIntraCloseExitAnimation = 16843418; // 0x101029a
+    field public static final int wallpaperIntraOpenEnterAnimation = 16843415; // 0x1010297
+    field public static final int wallpaperIntraOpenExitAnimation = 16843416; // 0x1010298
+    field public static final int wallpaperOpenEnterAnimation = 16843411; // 0x1010293
+    field public static final int wallpaperOpenExitAnimation = 16843412; // 0x1010294
+    field public static final int webTextViewStyle = 16843449; // 0x10102b9
+    field public static final int webViewStyle = 16842885; // 0x1010085
+    field public static final int weekDayTextAppearance = 16843592; // 0x1010348
+    field @Deprecated public static final int weekNumberColor = 16843589; // 0x1010345
+    field @Deprecated public static final int weekSeparatorLineColor = 16843590; // 0x1010346
+    field public static final int weightSum = 16843048; // 0x1010128
+    field public static final int widgetCategory = 16843716; // 0x10103c4
+    field public static final int widgetFeatures = 16844153; // 0x1010579
+    field public static final int widgetLayout = 16843243; // 0x10101eb
+    field public static final int width = 16843097; // 0x1010159
+    field public static final int windowActionBar = 16843469; // 0x10102cd
+    field public static final int windowActionBarOverlay = 16843492; // 0x10102e4
+    field public static final int windowActionModeOverlay = 16843485; // 0x10102dd
+    field public static final int windowActivityTransitions = 16843981; // 0x10104cd
+    field public static final int windowAllowEnterTransitionOverlap = 16843836; // 0x101043c
+    field public static final int windowAllowReturnTransitionOverlap = 16843835; // 0x101043b
+    field public static final int windowAnimationStyle = 16842926; // 0x10100ae
+    field public static final int windowBackground = 16842836; // 0x1010054
+    field public static final int windowBackgroundFallback = 16844035; // 0x1010503
+    field public static final int windowClipToOutline = 16843947; // 0x10104ab
+    field public static final int windowCloseOnTouchOutside = 16843611; // 0x101035b
+    field public static final int windowContentOverlay = 16842841; // 0x1010059
+    field public static final int windowContentTransitionManager = 16843769; // 0x10103f9
+    field public static final int windowContentTransitions = 16843768; // 0x10103f8
+    field public static final int windowDisablePreview = 16843298; // 0x1010222
+    field public static final int windowDrawsSystemBarBackgrounds = 16843856; // 0x1010450
+    field public static final int windowElevation = 16843920; // 0x1010490
+    field public static final int windowEnableSplitTouch = 16843543; // 0x1010317
+    field public static final int windowEnterAnimation = 16842932; // 0x10100b4
+    field public static final int windowEnterTransition = 16843831; // 0x1010437
+    field public static final int windowExitAnimation = 16842933; // 0x10100b5
+    field public static final int windowExitTransition = 16843832; // 0x1010438
+    field public static final int windowFrame = 16842837; // 0x1010055
+    field public static final int windowFullscreen = 16843277; // 0x101020d
+    field public static final int windowHideAnimation = 16842935; // 0x10100b7
+    field public static final int windowIsFloating = 16842839; // 0x1010057
+    field public static final int windowIsTranslucent = 16842840; // 0x1010058
+    field public static final int windowLayoutInDisplayCutoutMode = 16844166; // 0x1010586
+    field public static final int windowLightNavigationBar = 16844140; // 0x101056c
+    field public static final int windowLightStatusBar = 16844000; // 0x10104e0
+    field public static final int windowMinWidthMajor = 16843606; // 0x1010356
+    field public static final int windowMinWidthMinor = 16843607; // 0x1010357
+    field public static final int windowNoDisplay = 16843294; // 0x101021e
+    field public static final int windowNoTitle = 16842838; // 0x1010056
+    field @Deprecated public static final int windowOverscan = 16843727; // 0x10103cf
+    field public static final int windowReenterTransition = 16843951; // 0x10104af
+    field public static final int windowReturnTransition = 16843950; // 0x10104ae
+    field public static final int windowSharedElementEnterTransition = 16843833; // 0x1010439
+    field public static final int windowSharedElementExitTransition = 16843834; // 0x101043a
+    field public static final int windowSharedElementReenterTransition = 16843953; // 0x10104b1
+    field public static final int windowSharedElementReturnTransition = 16843952; // 0x10104b0
+    field public static final int windowSharedElementsUseOverlay = 16843963; // 0x10104bb
+    field public static final int windowShowAnimation = 16842934; // 0x10100b6
+    field public static final int windowShowWallpaper = 16843410; // 0x1010292
+    field public static final int windowSoftInputMode = 16843307; // 0x101022b
+    field public static final int windowSplashscreenContent = 16844132; // 0x1010564
+    field @Deprecated public static final int windowSwipeToDismiss = 16843763; // 0x10103f3
+    field public static final int windowTitleBackgroundStyle = 16842844; // 0x101005c
+    field public static final int windowTitleSize = 16842842; // 0x101005a
+    field public static final int windowTitleStyle = 16842843; // 0x101005b
+    field public static final int windowTransitionBackgroundFadeDuration = 16843873; // 0x1010461
+    field public static final int windowTranslucentNavigation = 16843760; // 0x10103f0
+    field public static final int windowTranslucentStatus = 16843759; // 0x10103ef
+    field public static final int writePermission = 16842760; // 0x1010008
+    field public static final int x = 16842924; // 0x10100ac
+    field public static final int xlargeScreens = 16843455; // 0x10102bf
+    field public static final int y = 16842925; // 0x10100ad
+    field @Deprecated public static final int yearListItemTextAppearance = 16843929; // 0x1010499
+    field @Deprecated public static final int yearListSelectorColor = 16843930; // 0x101049a
+    field public static final int yesNoPreferenceStyle = 16842896; // 0x1010090
+    field public static final int zAdjustment = 16843201; // 0x10101c1
+    field public static final int zygotePreloadName = 16844189; // 0x101059d
+  }
+
+  public static final class R.bool {
+    ctor public R.bool();
+  }
+
+  public static final class R.color {
+    ctor public R.color();
+    field public static final int background_dark = 17170446; // 0x106000e
+    field public static final int background_light = 17170447; // 0x106000f
+    field public static final int black = 17170444; // 0x106000c
+    field public static final int darker_gray = 17170432; // 0x1060000
+    field public static final int holo_blue_bright = 17170459; // 0x106001b
+    field public static final int holo_blue_dark = 17170451; // 0x1060013
+    field public static final int holo_blue_light = 17170450; // 0x1060012
+    field public static final int holo_green_dark = 17170453; // 0x1060015
+    field public static final int holo_green_light = 17170452; // 0x1060014
+    field public static final int holo_orange_dark = 17170457; // 0x1060019
+    field public static final int holo_orange_light = 17170456; // 0x1060018
+    field public static final int holo_purple = 17170458; // 0x106001a
+    field public static final int holo_red_dark = 17170455; // 0x1060017
+    field public static final int holo_red_light = 17170454; // 0x1060016
+    field @Deprecated public static final int primary_text_dark = 17170433; // 0x1060001
+    field @Deprecated public static final int primary_text_dark_nodisable = 17170434; // 0x1060002
+    field @Deprecated public static final int primary_text_light = 17170435; // 0x1060003
+    field @Deprecated public static final int primary_text_light_nodisable = 17170436; // 0x1060004
+    field @Deprecated public static final int secondary_text_dark = 17170437; // 0x1060005
+    field @Deprecated public static final int secondary_text_dark_nodisable = 17170438; // 0x1060006
+    field @Deprecated public static final int secondary_text_light = 17170439; // 0x1060007
+    field @Deprecated public static final int secondary_text_light_nodisable = 17170440; // 0x1060008
+    field public static final int tab_indicator_text = 17170441; // 0x1060009
+    field @Deprecated public static final int tertiary_text_dark = 17170448; // 0x1060010
+    field @Deprecated public static final int tertiary_text_light = 17170449; // 0x1060011
+    field public static final int transparent = 17170445; // 0x106000d
+    field public static final int white = 17170443; // 0x106000b
+    field public static final int widget_edittext_dark = 17170442; // 0x106000a
+  }
+
+  public static final class R.dimen {
+    ctor public R.dimen();
+    field public static final int app_icon_size = 17104896; // 0x1050000
+    field public static final int dialog_min_width_major = 17104899; // 0x1050003
+    field public static final int dialog_min_width_minor = 17104900; // 0x1050004
+    field public static final int notification_large_icon_height = 17104902; // 0x1050006
+    field public static final int notification_large_icon_width = 17104901; // 0x1050005
+    field public static final int thumbnail_height = 17104897; // 0x1050001
+    field public static final int thumbnail_width = 17104898; // 0x1050002
+  }
+
+  public static final class R.drawable {
+    ctor public R.drawable();
+    field public static final int alert_dark_frame = 17301504; // 0x1080000
+    field public static final int alert_light_frame = 17301505; // 0x1080001
+    field public static final int arrow_down_float = 17301506; // 0x1080002
+    field public static final int arrow_up_float = 17301507; // 0x1080003
+    field public static final int bottom_bar = 17301658; // 0x108009a
+    field public static final int btn_default = 17301508; // 0x1080004
+    field public static final int btn_default_small = 17301509; // 0x1080005
+    field public static final int btn_dialog = 17301527; // 0x1080017
+    field public static final int btn_dropdown = 17301510; // 0x1080006
+    field public static final int btn_minus = 17301511; // 0x1080007
+    field public static final int btn_plus = 17301512; // 0x1080008
+    field public static final int btn_radio = 17301513; // 0x1080009
+    field public static final int btn_star = 17301514; // 0x108000a
+    field public static final int btn_star_big_off = 17301515; // 0x108000b
+    field public static final int btn_star_big_on = 17301516; // 0x108000c
+    field public static final int button_onoff_indicator_off = 17301518; // 0x108000e
+    field public static final int button_onoff_indicator_on = 17301517; // 0x108000d
+    field public static final int checkbox_off_background = 17301519; // 0x108000f
+    field public static final int checkbox_on_background = 17301520; // 0x1080010
+    field public static final int dark_header = 17301669; // 0x10800a5
+    field public static final int dialog_frame = 17301521; // 0x1080011
+    field public static final int dialog_holo_dark_frame = 17301682; // 0x10800b2
+    field public static final int dialog_holo_light_frame = 17301683; // 0x10800b3
+    field public static final int divider_horizontal_bright = 17301522; // 0x1080012
+    field public static final int divider_horizontal_dark = 17301524; // 0x1080014
+    field public static final int divider_horizontal_dim_dark = 17301525; // 0x1080015
+    field public static final int divider_horizontal_textfield = 17301523; // 0x1080013
+    field public static final int edit_text = 17301526; // 0x1080016
+    field public static final int editbox_background = 17301528; // 0x1080018
+    field public static final int editbox_background_normal = 17301529; // 0x1080019
+    field public static final int editbox_dropdown_dark_frame = 17301530; // 0x108001a
+    field public static final int editbox_dropdown_light_frame = 17301531; // 0x108001b
+    field public static final int gallery_thumb = 17301532; // 0x108001c
+    field public static final int ic_btn_speak_now = 17301668; // 0x10800a4
+    field public static final int ic_delete = 17301533; // 0x108001d
+    field public static final int ic_dialog_alert = 17301543; // 0x1080027
+    field public static final int ic_dialog_dialer = 17301544; // 0x1080028
+    field public static final int ic_dialog_email = 17301545; // 0x1080029
+    field public static final int ic_dialog_info = 17301659; // 0x108009b
+    field public static final int ic_dialog_map = 17301546; // 0x108002a
+    field public static final int ic_input_add = 17301547; // 0x108002b
+    field public static final int ic_input_delete = 17301548; // 0x108002c
+    field public static final int ic_input_get = 17301549; // 0x108002d
+    field public static final int ic_lock_idle_alarm = 17301550; // 0x108002e
+    field public static final int ic_lock_idle_charging = 17301534; // 0x108001e
+    field public static final int ic_lock_idle_lock = 17301535; // 0x108001f
+    field public static final int ic_lock_idle_low_battery = 17301536; // 0x1080020
+    field public static final int ic_lock_lock = 17301551; // 0x108002f
+    field public static final int ic_lock_power_off = 17301552; // 0x1080030
+    field public static final int ic_lock_silent_mode = 17301553; // 0x1080031
+    field public static final int ic_lock_silent_mode_off = 17301554; // 0x1080032
+    field public static final int ic_media_ff = 17301537; // 0x1080021
+    field public static final int ic_media_next = 17301538; // 0x1080022
+    field public static final int ic_media_pause = 17301539; // 0x1080023
+    field public static final int ic_media_play = 17301540; // 0x1080024
+    field public static final int ic_media_previous = 17301541; // 0x1080025
+    field public static final int ic_media_rew = 17301542; // 0x1080026
+    field public static final int ic_menu_add = 17301555; // 0x1080033
+    field public static final int ic_menu_agenda = 17301556; // 0x1080034
+    field public static final int ic_menu_always_landscape_portrait = 17301557; // 0x1080035
+    field public static final int ic_menu_call = 17301558; // 0x1080036
+    field public static final int ic_menu_camera = 17301559; // 0x1080037
+    field public static final int ic_menu_close_clear_cancel = 17301560; // 0x1080038
+    field public static final int ic_menu_compass = 17301561; // 0x1080039
+    field public static final int ic_menu_crop = 17301562; // 0x108003a
+    field public static final int ic_menu_day = 17301563; // 0x108003b
+    field public static final int ic_menu_delete = 17301564; // 0x108003c
+    field public static final int ic_menu_directions = 17301565; // 0x108003d
+    field public static final int ic_menu_edit = 17301566; // 0x108003e
+    field public static final int ic_menu_gallery = 17301567; // 0x108003f
+    field public static final int ic_menu_help = 17301568; // 0x1080040
+    field public static final int ic_menu_info_details = 17301569; // 0x1080041
+    field public static final int ic_menu_manage = 17301570; // 0x1080042
+    field public static final int ic_menu_mapmode = 17301571; // 0x1080043
+    field public static final int ic_menu_month = 17301572; // 0x1080044
+    field public static final int ic_menu_more = 17301573; // 0x1080045
+    field public static final int ic_menu_my_calendar = 17301574; // 0x1080046
+    field public static final int ic_menu_mylocation = 17301575; // 0x1080047
+    field public static final int ic_menu_myplaces = 17301576; // 0x1080048
+    field public static final int ic_menu_preferences = 17301577; // 0x1080049
+    field public static final int ic_menu_recent_history = 17301578; // 0x108004a
+    field public static final int ic_menu_report_image = 17301579; // 0x108004b
+    field public static final int ic_menu_revert = 17301580; // 0x108004c
+    field public static final int ic_menu_rotate = 17301581; // 0x108004d
+    field public static final int ic_menu_save = 17301582; // 0x108004e
+    field public static final int ic_menu_search = 17301583; // 0x108004f
+    field public static final int ic_menu_send = 17301584; // 0x1080050
+    field public static final int ic_menu_set_as = 17301585; // 0x1080051
+    field public static final int ic_menu_share = 17301586; // 0x1080052
+    field public static final int ic_menu_slideshow = 17301587; // 0x1080053
+    field public static final int ic_menu_sort_alphabetically = 17301660; // 0x108009c
+    field public static final int ic_menu_sort_by_size = 17301661; // 0x108009d
+    field public static final int ic_menu_today = 17301588; // 0x1080054
+    field public static final int ic_menu_upload = 17301589; // 0x1080055
+    field public static final int ic_menu_upload_you_tube = 17301590; // 0x1080056
+    field public static final int ic_menu_view = 17301591; // 0x1080057
+    field public static final int ic_menu_week = 17301592; // 0x1080058
+    field public static final int ic_menu_zoom = 17301593; // 0x1080059
+    field public static final int ic_notification_clear_all = 17301594; // 0x108005a
+    field public static final int ic_notification_overlay = 17301595; // 0x108005b
+    field public static final int ic_partial_secure = 17301596; // 0x108005c
+    field public static final int ic_popup_disk_full = 17301597; // 0x108005d
+    field public static final int ic_popup_reminder = 17301598; // 0x108005e
+    field public static final int ic_popup_sync = 17301599; // 0x108005f
+    field public static final int ic_search_category_default = 17301600; // 0x1080060
+    field public static final int ic_secure = 17301601; // 0x1080061
+    field public static final int list_selector_background = 17301602; // 0x1080062
+    field public static final int menu_frame = 17301603; // 0x1080063
+    field public static final int menu_full_frame = 17301604; // 0x1080064
+    field public static final int menuitem_background = 17301605; // 0x1080065
+    field public static final int picture_frame = 17301606; // 0x1080066
+    field public static final int presence_audio_away = 17301679; // 0x10800af
+    field public static final int presence_audio_busy = 17301680; // 0x10800b0
+    field public static final int presence_audio_online = 17301681; // 0x10800b1
+    field public static final int presence_away = 17301607; // 0x1080067
+    field public static final int presence_busy = 17301608; // 0x1080068
+    field public static final int presence_invisible = 17301609; // 0x1080069
+    field public static final int presence_offline = 17301610; // 0x108006a
+    field public static final int presence_online = 17301611; // 0x108006b
+    field public static final int presence_video_away = 17301676; // 0x10800ac
+    field public static final int presence_video_busy = 17301677; // 0x10800ad
+    field public static final int presence_video_online = 17301678; // 0x10800ae
+    field public static final int progress_horizontal = 17301612; // 0x108006c
+    field public static final int progress_indeterminate_horizontal = 17301613; // 0x108006d
+    field public static final int radiobutton_off_background = 17301614; // 0x108006e
+    field public static final int radiobutton_on_background = 17301615; // 0x108006f
+    field public static final int screen_background_dark = 17301656; // 0x1080098
+    field public static final int screen_background_dark_transparent = 17301673; // 0x10800a9
+    field public static final int screen_background_light = 17301657; // 0x1080099
+    field public static final int screen_background_light_transparent = 17301674; // 0x10800aa
+    field public static final int spinner_background = 17301616; // 0x1080070
+    field public static final int spinner_dropdown_background = 17301617; // 0x1080071
+    field public static final int star_big_off = 17301619; // 0x1080073
+    field public static final int star_big_on = 17301618; // 0x1080072
+    field public static final int star_off = 17301621; // 0x1080075
+    field public static final int star_on = 17301620; // 0x1080074
+    field public static final int stat_notify_call_mute = 17301622; // 0x1080076
+    field public static final int stat_notify_chat = 17301623; // 0x1080077
+    field public static final int stat_notify_error = 17301624; // 0x1080078
+    field public static final int stat_notify_missed_call = 17301631; // 0x108007f
+    field public static final int stat_notify_more = 17301625; // 0x1080079
+    field public static final int stat_notify_sdcard = 17301626; // 0x108007a
+    field public static final int stat_notify_sdcard_prepare = 17301675; // 0x10800ab
+    field public static final int stat_notify_sdcard_usb = 17301627; // 0x108007b
+    field public static final int stat_notify_sync = 17301628; // 0x108007c
+    field public static final int stat_notify_sync_noanim = 17301629; // 0x108007d
+    field public static final int stat_notify_voicemail = 17301630; // 0x108007e
+    field public static final int stat_sys_data_bluetooth = 17301632; // 0x1080080
+    field public static final int stat_sys_download = 17301633; // 0x1080081
+    field public static final int stat_sys_download_done = 17301634; // 0x1080082
+    field public static final int stat_sys_headset = 17301635; // 0x1080083
+    field @Deprecated public static final int stat_sys_phone_call = 17301636; // 0x1080084
+    field @Deprecated public static final int stat_sys_phone_call_forward = 17301637; // 0x1080085
+    field @Deprecated public static final int stat_sys_phone_call_on_hold = 17301638; // 0x1080086
+    field public static final int stat_sys_speakerphone = 17301639; // 0x1080087
+    field public static final int stat_sys_upload = 17301640; // 0x1080088
+    field public static final int stat_sys_upload_done = 17301641; // 0x1080089
+    field @Deprecated public static final int stat_sys_vp_phone_call = 17301671; // 0x10800a7
+    field @Deprecated public static final int stat_sys_vp_phone_call_on_hold = 17301672; // 0x10800a8
+    field public static final int stat_sys_warning = 17301642; // 0x108008a
+    field public static final int status_bar_item_app_background = 17301643; // 0x108008b
+    field public static final int status_bar_item_background = 17301644; // 0x108008c
+    field public static final int sym_action_call = 17301645; // 0x108008d
+    field public static final int sym_action_chat = 17301646; // 0x108008e
+    field public static final int sym_action_email = 17301647; // 0x108008f
+    field public static final int sym_call_incoming = 17301648; // 0x1080090
+    field public static final int sym_call_missed = 17301649; // 0x1080091
+    field public static final int sym_call_outgoing = 17301650; // 0x1080092
+    field public static final int sym_contact_card = 17301652; // 0x1080094
+    field public static final int sym_def_app_icon = 17301651; // 0x1080093
+    field public static final int title_bar = 17301653; // 0x1080095
+    field public static final int title_bar_tall = 17301670; // 0x10800a6
+    field public static final int toast_frame = 17301654; // 0x1080096
+    field public static final int zoom_plate = 17301655; // 0x1080097
+  }
+
+  public static final class R.fraction {
+    ctor public R.fraction();
+  }
+
+  public static final class R.id {
+    ctor public R.id();
+    field public static final int accessibilityActionContextClick = 16908348; // 0x102003c
+    field public static final int accessibilityActionHideTooltip = 16908357; // 0x1020045
+    field public static final int accessibilityActionImeEnter = 16908372; // 0x1020054
+    field public static final int accessibilityActionMoveWindow = 16908354; // 0x1020042
+    field public static final int accessibilityActionPageDown = 16908359; // 0x1020047
+    field public static final int accessibilityActionPageLeft = 16908360; // 0x1020048
+    field public static final int accessibilityActionPageRight = 16908361; // 0x1020049
+    field public static final int accessibilityActionPageUp = 16908358; // 0x1020046
+    field public static final int accessibilityActionPressAndHold = 16908362; // 0x102004a
+    field public static final int accessibilityActionScrollDown = 16908346; // 0x102003a
+    field public static final int accessibilityActionScrollLeft = 16908345; // 0x1020039
+    field public static final int accessibilityActionScrollRight = 16908347; // 0x102003b
+    field public static final int accessibilityActionScrollToPosition = 16908343; // 0x1020037
+    field public static final int accessibilityActionScrollUp = 16908344; // 0x1020038
+    field public static final int accessibilityActionSetProgress = 16908349; // 0x102003d
+    field public static final int accessibilityActionShowOnScreen = 16908342; // 0x1020036
+    field public static final int accessibilityActionShowTooltip = 16908356; // 0x1020044
+    field public static final int accessibilitySystemActionBack = 16908363; // 0x102004b
+    field public static final int accessibilitySystemActionHome = 16908364; // 0x102004c
+    field public static final int accessibilitySystemActionLockScreen = 16908370; // 0x1020052
+    field public static final int accessibilitySystemActionNotifications = 16908366; // 0x102004e
+    field public static final int accessibilitySystemActionPowerDialog = 16908368; // 0x1020050
+    field public static final int accessibilitySystemActionQuickSettings = 16908367; // 0x102004f
+    field public static final int accessibilitySystemActionRecents = 16908365; // 0x102004d
+    field public static final int accessibilitySystemActionTakeScreenshot = 16908371; // 0x1020053
+    field public static final int accessibilitySystemActionToggleSplitScreen = 16908369; // 0x1020051
+    field public static final int addToDictionary = 16908330; // 0x102002a
+    field public static final int autofill = 16908355; // 0x1020043
+    field public static final int background = 16908288; // 0x1020000
+    field public static final int button1 = 16908313; // 0x1020019
+    field public static final int button2 = 16908314; // 0x102001a
+    field public static final int button3 = 16908315; // 0x102001b
+    field public static final int candidatesArea = 16908317; // 0x102001d
+    field public static final int checkbox = 16908289; // 0x1020001
+    field public static final int closeButton = 16908327; // 0x1020027
+    field public static final int content = 16908290; // 0x1020002
+    field public static final int copy = 16908321; // 0x1020021
+    field public static final int copyUrl = 16908323; // 0x1020023
+    field public static final int custom = 16908331; // 0x102002b
+    field public static final int cut = 16908320; // 0x1020020
+    field public static final int edit = 16908291; // 0x1020003
+    field public static final int empty = 16908292; // 0x1020004
+    field public static final int extractArea = 16908316; // 0x102001c
+    field public static final int hint = 16908293; // 0x1020005
+    field public static final int home = 16908332; // 0x102002c
+    field public static final int icon = 16908294; // 0x1020006
+    field public static final int icon1 = 16908295; // 0x1020007
+    field public static final int icon2 = 16908296; // 0x1020008
+    field public static final int icon_frame = 16908350; // 0x102003e
+    field public static final int input = 16908297; // 0x1020009
+    field public static final int inputArea = 16908318; // 0x102001e
+    field public static final int inputExtractEditText = 16908325; // 0x1020025
+    field @Deprecated public static final int keyboardView = 16908326; // 0x1020026
+    field public static final int list = 16908298; // 0x102000a
+    field public static final int list_container = 16908351; // 0x102003f
+    field public static final int mask = 16908334; // 0x102002e
+    field public static final int message = 16908299; // 0x102000b
+    field public static final int navigationBarBackground = 16908336; // 0x1020030
+    field public static final int paste = 16908322; // 0x1020022
+    field public static final int pasteAsPlainText = 16908337; // 0x1020031
+    field public static final int primary = 16908300; // 0x102000c
+    field public static final int progress = 16908301; // 0x102000d
+    field public static final int redo = 16908339; // 0x1020033
+    field public static final int replaceText = 16908340; // 0x1020034
+    field public static final int secondaryProgress = 16908303; // 0x102000f
+    field public static final int selectAll = 16908319; // 0x102001f
+    field public static final int selectTextMode = 16908333; // 0x102002d
+    field public static final int selectedIcon = 16908302; // 0x102000e
+    field public static final int shareText = 16908341; // 0x1020035
+    field public static final int startSelectingText = 16908328; // 0x1020028
+    field public static final int statusBarBackground = 16908335; // 0x102002f
+    field public static final int stopSelectingText = 16908329; // 0x1020029
+    field public static final int summary = 16908304; // 0x1020010
+    field public static final int switchInputMethod = 16908324; // 0x1020024
+    field public static final int switch_widget = 16908352; // 0x1020040
+    field public static final int tabcontent = 16908305; // 0x1020011
+    field public static final int tabhost = 16908306; // 0x1020012
+    field public static final int tabs = 16908307; // 0x1020013
+    field public static final int text1 = 16908308; // 0x1020014
+    field public static final int text2 = 16908309; // 0x1020015
+    field public static final int textAssist = 16908353; // 0x1020041
+    field public static final int title = 16908310; // 0x1020016
+    field public static final int toggle = 16908311; // 0x1020017
+    field public static final int undo = 16908338; // 0x1020032
+    field public static final int widget_frame = 16908312; // 0x1020018
+  }
+
+  public static final class R.integer {
+    ctor public R.integer();
+    field public static final int config_longAnimTime = 17694722; // 0x10e0002
+    field public static final int config_mediumAnimTime = 17694721; // 0x10e0001
+    field public static final int config_shortAnimTime = 17694720; // 0x10e0000
+    field public static final int status_bar_notification_info_maxnum = 17694723; // 0x10e0003
+  }
+
+  public static final class R.interpolator {
+    ctor public R.interpolator();
+    field public static final int accelerate_cubic = 17563650; // 0x10c0002
+    field public static final int accelerate_decelerate = 17563654; // 0x10c0006
+    field public static final int accelerate_quad = 17563648; // 0x10c0000
+    field public static final int accelerate_quint = 17563652; // 0x10c0004
+    field public static final int anticipate = 17563655; // 0x10c0007
+    field public static final int anticipate_overshoot = 17563657; // 0x10c0009
+    field public static final int bounce = 17563658; // 0x10c000a
+    field public static final int cycle = 17563660; // 0x10c000c
+    field public static final int decelerate_cubic = 17563651; // 0x10c0003
+    field public static final int decelerate_quad = 17563649; // 0x10c0001
+    field public static final int decelerate_quint = 17563653; // 0x10c0005
+    field public static final int fast_out_extra_slow_in = 17563674; // 0x10c001a
+    field public static final int fast_out_linear_in = 17563663; // 0x10c000f
+    field public static final int fast_out_slow_in = 17563661; // 0x10c000d
+    field public static final int linear = 17563659; // 0x10c000b
+    field public static final int linear_out_slow_in = 17563662; // 0x10c000e
+    field public static final int overshoot = 17563656; // 0x10c0008
+  }
+
+  public static final class R.layout {
+    ctor public R.layout();
+    field public static final int activity_list_item = 17367040; // 0x1090000
+    field public static final int browser_link_context_header = 17367054; // 0x109000e
+    field public static final int expandable_list_content = 17367041; // 0x1090001
+    field public static final int list_content = 17367060; // 0x1090014
+    field public static final int preference_category = 17367042; // 0x1090002
+    field public static final int select_dialog_item = 17367057; // 0x1090011
+    field public static final int select_dialog_multichoice = 17367059; // 0x1090013
+    field public static final int select_dialog_singlechoice = 17367058; // 0x1090012
+    field public static final int simple_dropdown_item_1line = 17367050; // 0x109000a
+    field public static final int simple_expandable_list_item_1 = 17367046; // 0x1090006
+    field public static final int simple_expandable_list_item_2 = 17367047; // 0x1090007
+    field public static final int simple_gallery_item = 17367051; // 0x109000b
+    field public static final int simple_list_item_1 = 17367043; // 0x1090003
+    field public static final int simple_list_item_2 = 17367044; // 0x1090004
+    field public static final int simple_list_item_activated_1 = 17367062; // 0x1090016
+    field public static final int simple_list_item_activated_2 = 17367063; // 0x1090017
+    field public static final int simple_list_item_checked = 17367045; // 0x1090005
+    field public static final int simple_list_item_multiple_choice = 17367056; // 0x1090010
+    field public static final int simple_list_item_single_choice = 17367055; // 0x109000f
+    field public static final int simple_selectable_list_item = 17367061; // 0x1090015
+    field public static final int simple_spinner_dropdown_item = 17367049; // 0x1090009
+    field public static final int simple_spinner_item = 17367048; // 0x1090008
+    field public static final int test_list_item = 17367052; // 0x109000c
+    field public static final int two_line_list_item = 17367053; // 0x109000d
+  }
+
+  public static final class R.menu {
+    ctor public R.menu();
+  }
+
+  public static final class R.mipmap {
+    ctor public R.mipmap();
+    field public static final int sym_def_app_icon = 17629184; // 0x10d0000
+  }
+
+  public static final class R.plurals {
+    ctor public R.plurals();
+  }
+
+  public static final class R.raw {
+    ctor public R.raw();
+  }
+
+  public static final class R.string {
+    ctor public R.string();
+    field public static final int VideoView_error_button = 17039376; // 0x1040010
+    field public static final int VideoView_error_text_invalid_progressive_playback = 17039381; // 0x1040015
+    field public static final int VideoView_error_text_unknown = 17039377; // 0x1040011
+    field public static final int VideoView_error_title = 17039378; // 0x1040012
+    field public static final int autofill = 17039386; // 0x104001a
+    field public static final int cancel = 17039360; // 0x1040000
+    field public static final int copy = 17039361; // 0x1040001
+    field public static final int copyUrl = 17039362; // 0x1040002
+    field public static final int cut = 17039363; // 0x1040003
+    field public static final int defaultMsisdnAlphaTag = 17039365; // 0x1040005
+    field public static final int defaultVoiceMailAlphaTag = 17039364; // 0x1040004
+    field public static final int dialog_alert_title = 17039380; // 0x1040014
+    field public static final int emptyPhoneNumber = 17039366; // 0x1040006
+    field public static final int fingerprint_icon_content_description = 17039384; // 0x1040018
+    field public static final int httpErrorBadUrl = 17039367; // 0x1040007
+    field public static final int httpErrorUnsupportedScheme = 17039368; // 0x1040008
+    field @Deprecated public static final int no = 17039369; // 0x1040009
+    field public static final int ok = 17039370; // 0x104000a
+    field public static final int paste = 17039371; // 0x104000b
+    field public static final int paste_as_plain_text = 17039385; // 0x1040019
+    field public static final int search_go = 17039372; // 0x104000c
+    field public static final int selectAll = 17039373; // 0x104000d
+    field public static final int selectTextMode = 17039382; // 0x1040016
+    field public static final int status_bar_notification_info_overflow = 17039383; // 0x1040017
+    field public static final int unknownName = 17039374; // 0x104000e
+    field public static final int untitled = 17039375; // 0x104000f
+    field @Deprecated public static final int yes = 17039379; // 0x1040013
+  }
+
+  public static final class R.style {
+    ctor public R.style();
+    field public static final int Animation = 16973824; // 0x1030000
+    field public static final int Animation_Activity = 16973825; // 0x1030001
+    field public static final int Animation_Dialog = 16973826; // 0x1030002
+    field public static final int Animation_InputMethod = 16973910; // 0x1030056
+    field public static final int Animation_Toast = 16973828; // 0x1030004
+    field public static final int Animation_Translucent = 16973827; // 0x1030003
+    field public static final int DeviceDefault_ButtonBar = 16974287; // 0x10301cf
+    field public static final int DeviceDefault_ButtonBar_AlertDialog = 16974288; // 0x10301d0
+    field public static final int DeviceDefault_Light_ButtonBar = 16974290; // 0x10301d2
+    field public static final int DeviceDefault_Light_ButtonBar_AlertDialog = 16974291; // 0x10301d3
+    field public static final int DeviceDefault_Light_SegmentedButton = 16974292; // 0x10301d4
+    field public static final int DeviceDefault_SegmentedButton = 16974289; // 0x10301d1
+    field public static final int Holo_ButtonBar = 16974053; // 0x10300e5
+    field public static final int Holo_ButtonBar_AlertDialog = 16974055; // 0x10300e7
+    field public static final int Holo_Light_ButtonBar = 16974054; // 0x10300e6
+    field public static final int Holo_Light_ButtonBar_AlertDialog = 16974056; // 0x10300e8
+    field public static final int Holo_Light_SegmentedButton = 16974058; // 0x10300ea
+    field public static final int Holo_SegmentedButton = 16974057; // 0x10300e9
+    field public static final int MediaButton = 16973879; // 0x1030037
+    field public static final int MediaButton_Ffwd = 16973883; // 0x103003b
+    field public static final int MediaButton_Next = 16973881; // 0x1030039
+    field public static final int MediaButton_Pause = 16973885; // 0x103003d
+    field public static final int MediaButton_Play = 16973882; // 0x103003a
+    field public static final int MediaButton_Previous = 16973880; // 0x1030038
+    field public static final int MediaButton_Rew = 16973884; // 0x103003c
+    field public static final int TextAppearance = 16973886; // 0x103003e
+    field public static final int TextAppearance_DeviceDefault = 16974253; // 0x10301ad
+    field public static final int TextAppearance_DeviceDefault_DialogWindowTitle = 16974264; // 0x10301b8
+    field public static final int TextAppearance_DeviceDefault_Inverse = 16974254; // 0x10301ae
+    field public static final int TextAppearance_DeviceDefault_Large = 16974255; // 0x10301af
+    field public static final int TextAppearance_DeviceDefault_Large_Inverse = 16974256; // 0x10301b0
+    field public static final int TextAppearance_DeviceDefault_Medium = 16974257; // 0x10301b1
+    field public static final int TextAppearance_DeviceDefault_Medium_Inverse = 16974258; // 0x10301b2
+    field public static final int TextAppearance_DeviceDefault_SearchResult_Subtitle = 16974262; // 0x10301b6
+    field public static final int TextAppearance_DeviceDefault_SearchResult_Title = 16974261; // 0x10301b5
+    field public static final int TextAppearance_DeviceDefault_Small = 16974259; // 0x10301b3
+    field public static final int TextAppearance_DeviceDefault_Small_Inverse = 16974260; // 0x10301b4
+    field public static final int TextAppearance_DeviceDefault_Widget = 16974265; // 0x10301b9
+    field public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Menu = 16974286; // 0x10301ce
+    field public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Subtitle = 16974279; // 0x10301c7
+    field @Deprecated public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Subtitle_Inverse = 16974283; // 0x10301cb
+    field public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Title = 16974278; // 0x10301c6
+    field @Deprecated public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Title_Inverse = 16974282; // 0x10301ca
+    field public static final int TextAppearance_DeviceDefault_Widget_ActionMode_Subtitle = 16974281; // 0x10301c9
+    field @Deprecated public static final int TextAppearance_DeviceDefault_Widget_ActionMode_Subtitle_Inverse = 16974285; // 0x10301cd
+    field public static final int TextAppearance_DeviceDefault_Widget_ActionMode_Title = 16974280; // 0x10301c8
+    field @Deprecated public static final int TextAppearance_DeviceDefault_Widget_ActionMode_Title_Inverse = 16974284; // 0x10301cc
+    field public static final int TextAppearance_DeviceDefault_Widget_Button = 16974266; // 0x10301ba
+    field public static final int TextAppearance_DeviceDefault_Widget_DropDownHint = 16974271; // 0x10301bf
+    field public static final int TextAppearance_DeviceDefault_Widget_DropDownItem = 16974272; // 0x10301c0
+    field public static final int TextAppearance_DeviceDefault_Widget_EditText = 16974274; // 0x10301c2
+    field public static final int TextAppearance_DeviceDefault_Widget_IconMenu_Item = 16974267; // 0x10301bb
+    field public static final int TextAppearance_DeviceDefault_Widget_PopupMenu = 16974275; // 0x10301c3
+    field public static final int TextAppearance_DeviceDefault_Widget_PopupMenu_Large = 16974276; // 0x10301c4
+    field public static final int TextAppearance_DeviceDefault_Widget_PopupMenu_Small = 16974277; // 0x10301c5
+    field public static final int TextAppearance_DeviceDefault_Widget_TabWidget = 16974268; // 0x10301bc
+    field public static final int TextAppearance_DeviceDefault_Widget_TextView = 16974269; // 0x10301bd
+    field public static final int TextAppearance_DeviceDefault_Widget_TextView_PopupMenu = 16974270; // 0x10301be
+    field public static final int TextAppearance_DeviceDefault_Widget_TextView_SpinnerItem = 16974273; // 0x10301c1
+    field public static final int TextAppearance_DeviceDefault_WindowTitle = 16974263; // 0x10301b7
+    field public static final int TextAppearance_DialogWindowTitle = 16973889; // 0x1030041
+    field public static final int TextAppearance_Holo = 16974075; // 0x10300fb
+    field public static final int TextAppearance_Holo_DialogWindowTitle = 16974103; // 0x1030117
+    field public static final int TextAppearance_Holo_Inverse = 16974076; // 0x10300fc
+    field public static final int TextAppearance_Holo_Large = 16974077; // 0x10300fd
+    field public static final int TextAppearance_Holo_Large_Inverse = 16974078; // 0x10300fe
+    field public static final int TextAppearance_Holo_Medium = 16974079; // 0x10300ff
+    field public static final int TextAppearance_Holo_Medium_Inverse = 16974080; // 0x1030100
+    field public static final int TextAppearance_Holo_SearchResult_Subtitle = 16974084; // 0x1030104
+    field public static final int TextAppearance_Holo_SearchResult_Title = 16974083; // 0x1030103
+    field public static final int TextAppearance_Holo_Small = 16974081; // 0x1030101
+    field public static final int TextAppearance_Holo_Small_Inverse = 16974082; // 0x1030102
+    field public static final int TextAppearance_Holo_Widget = 16974085; // 0x1030105
+    field public static final int TextAppearance_Holo_Widget_ActionBar_Menu = 16974112; // 0x1030120
+    field public static final int TextAppearance_Holo_Widget_ActionBar_Subtitle = 16974099; // 0x1030113
+    field public static final int TextAppearance_Holo_Widget_ActionBar_Subtitle_Inverse = 16974109; // 0x103011d
+    field public static final int TextAppearance_Holo_Widget_ActionBar_Title = 16974098; // 0x1030112
+    field public static final int TextAppearance_Holo_Widget_ActionBar_Title_Inverse = 16974108; // 0x103011c
+    field public static final int TextAppearance_Holo_Widget_ActionMode_Subtitle = 16974101; // 0x1030115
+    field public static final int TextAppearance_Holo_Widget_ActionMode_Subtitle_Inverse = 16974111; // 0x103011f
+    field public static final int TextAppearance_Holo_Widget_ActionMode_Title = 16974100; // 0x1030114
+    field public static final int TextAppearance_Holo_Widget_ActionMode_Title_Inverse = 16974110; // 0x103011e
+    field public static final int TextAppearance_Holo_Widget_Button = 16974086; // 0x1030106
+    field public static final int TextAppearance_Holo_Widget_DropDownHint = 16974091; // 0x103010b
+    field public static final int TextAppearance_Holo_Widget_DropDownItem = 16974092; // 0x103010c
+    field public static final int TextAppearance_Holo_Widget_EditText = 16974094; // 0x103010e
+    field public static final int TextAppearance_Holo_Widget_IconMenu_Item = 16974087; // 0x1030107
+    field public static final int TextAppearance_Holo_Widget_PopupMenu = 16974095; // 0x103010f
+    field public static final int TextAppearance_Holo_Widget_PopupMenu_Large = 16974096; // 0x1030110
+    field public static final int TextAppearance_Holo_Widget_PopupMenu_Small = 16974097; // 0x1030111
+    field public static final int TextAppearance_Holo_Widget_TabWidget = 16974088; // 0x1030108
+    field public static final int TextAppearance_Holo_Widget_TextView = 16974089; // 0x1030109
+    field public static final int TextAppearance_Holo_Widget_TextView_PopupMenu = 16974090; // 0x103010a
+    field public static final int TextAppearance_Holo_Widget_TextView_SpinnerItem = 16974093; // 0x103010d
+    field public static final int TextAppearance_Holo_WindowTitle = 16974102; // 0x1030116
+    field public static final int TextAppearance_Inverse = 16973887; // 0x103003f
+    field public static final int TextAppearance_Large = 16973890; // 0x1030042
+    field public static final int TextAppearance_Large_Inverse = 16973891; // 0x1030043
+    field public static final int TextAppearance_Material = 16974317; // 0x10301ed
+    field public static final int TextAppearance_Material_Body1 = 16974320; // 0x10301f0
+    field public static final int TextAppearance_Material_Body2 = 16974319; // 0x10301ef
+    field public static final int TextAppearance_Material_Button = 16974318; // 0x10301ee
+    field public static final int TextAppearance_Material_Caption = 16974321; // 0x10301f1
+    field public static final int TextAppearance_Material_DialogWindowTitle = 16974322; // 0x10301f2
+    field public static final int TextAppearance_Material_Display1 = 16974326; // 0x10301f6
+    field public static final int TextAppearance_Material_Display2 = 16974325; // 0x10301f5
+    field public static final int TextAppearance_Material_Display3 = 16974324; // 0x10301f4
+    field public static final int TextAppearance_Material_Display4 = 16974323; // 0x10301f3
+    field public static final int TextAppearance_Material_Headline = 16974327; // 0x10301f7
+    field public static final int TextAppearance_Material_Inverse = 16974328; // 0x10301f8
+    field public static final int TextAppearance_Material_Large = 16974329; // 0x10301f9
+    field public static final int TextAppearance_Material_Large_Inverse = 16974330; // 0x10301fa
+    field public static final int TextAppearance_Material_Medium = 16974331; // 0x10301fb
+    field public static final int TextAppearance_Material_Medium_Inverse = 16974332; // 0x10301fc
+    field public static final int TextAppearance_Material_Menu = 16974333; // 0x10301fd
+    field public static final int TextAppearance_Material_Notification = 16974334; // 0x10301fe
+    field public static final int TextAppearance_Material_Notification_Emphasis = 16974335; // 0x10301ff
+    field public static final int TextAppearance_Material_Notification_Info = 16974336; // 0x1030200
+    field public static final int TextAppearance_Material_Notification_Line2 = 16974337; // 0x1030201
+    field public static final int TextAppearance_Material_Notification_Time = 16974338; // 0x1030202
+    field public static final int TextAppearance_Material_Notification_Title = 16974339; // 0x1030203
+    field public static final int TextAppearance_Material_SearchResult_Subtitle = 16974340; // 0x1030204
+    field public static final int TextAppearance_Material_SearchResult_Title = 16974341; // 0x1030205
+    field public static final int TextAppearance_Material_Small = 16974342; // 0x1030206
+    field public static final int TextAppearance_Material_Small_Inverse = 16974343; // 0x1030207
+    field public static final int TextAppearance_Material_Subhead = 16974344; // 0x1030208
+    field public static final int TextAppearance_Material_Title = 16974345; // 0x1030209
+    field public static final int TextAppearance_Material_Widget = 16974347; // 0x103020b
+    field public static final int TextAppearance_Material_Widget_ActionBar_Menu = 16974348; // 0x103020c
+    field public static final int TextAppearance_Material_Widget_ActionBar_Subtitle = 16974349; // 0x103020d
+    field public static final int TextAppearance_Material_Widget_ActionBar_Subtitle_Inverse = 16974350; // 0x103020e
+    field public static final int TextAppearance_Material_Widget_ActionBar_Title = 16974351; // 0x103020f
+    field public static final int TextAppearance_Material_Widget_ActionBar_Title_Inverse = 16974352; // 0x1030210
+    field public static final int TextAppearance_Material_Widget_ActionMode_Subtitle = 16974353; // 0x1030211
+    field public static final int TextAppearance_Material_Widget_ActionMode_Subtitle_Inverse = 16974354; // 0x1030212
+    field public static final int TextAppearance_Material_Widget_ActionMode_Title = 16974355; // 0x1030213
+    field public static final int TextAppearance_Material_Widget_ActionMode_Title_Inverse = 16974356; // 0x1030214
+    field public static final int TextAppearance_Material_Widget_Button = 16974357; // 0x1030215
+    field public static final int TextAppearance_Material_Widget_Button_Borderless_Colored = 16974559; // 0x10302df
+    field public static final int TextAppearance_Material_Widget_Button_Colored = 16974558; // 0x10302de
+    field public static final int TextAppearance_Material_Widget_Button_Inverse = 16974548; // 0x10302d4
+    field public static final int TextAppearance_Material_Widget_DropDownHint = 16974358; // 0x1030216
+    field public static final int TextAppearance_Material_Widget_DropDownItem = 16974359; // 0x1030217
+    field public static final int TextAppearance_Material_Widget_EditText = 16974360; // 0x1030218
+    field public static final int TextAppearance_Material_Widget_IconMenu_Item = 16974361; // 0x1030219
+    field public static final int TextAppearance_Material_Widget_PopupMenu = 16974362; // 0x103021a
+    field public static final int TextAppearance_Material_Widget_PopupMenu_Large = 16974363; // 0x103021b
+    field public static final int TextAppearance_Material_Widget_PopupMenu_Small = 16974364; // 0x103021c
+    field public static final int TextAppearance_Material_Widget_TabWidget = 16974365; // 0x103021d
+    field public static final int TextAppearance_Material_Widget_TextView = 16974366; // 0x103021e
+    field public static final int TextAppearance_Material_Widget_TextView_PopupMenu = 16974367; // 0x103021f
+    field public static final int TextAppearance_Material_Widget_TextView_SpinnerItem = 16974368; // 0x1030220
+    field public static final int TextAppearance_Material_Widget_Toolbar_Subtitle = 16974369; // 0x1030221
+    field public static final int TextAppearance_Material_Widget_Toolbar_Title = 16974370; // 0x1030222
+    field public static final int TextAppearance_Material_WindowTitle = 16974346; // 0x103020a
+    field public static final int TextAppearance_Medium = 16973892; // 0x1030044
+    field public static final int TextAppearance_Medium_Inverse = 16973893; // 0x1030045
+    field public static final int TextAppearance_Small = 16973894; // 0x1030046
+    field public static final int TextAppearance_Small_Inverse = 16973895; // 0x1030047
+    field public static final int TextAppearance_StatusBar_EventContent = 16973927; // 0x1030067
+    field public static final int TextAppearance_StatusBar_EventContent_Title = 16973928; // 0x1030068
+    field public static final int TextAppearance_StatusBar_Icon = 16973926; // 0x1030066
+    field public static final int TextAppearance_StatusBar_Title = 16973925; // 0x1030065
+    field public static final int TextAppearance_SuggestionHighlight = 16974104; // 0x1030118
+    field public static final int TextAppearance_Theme = 16973888; // 0x1030040
+    field public static final int TextAppearance_Theme_Dialog = 16973896; // 0x1030048
+    field public static final int TextAppearance_Widget = 16973897; // 0x1030049
+    field public static final int TextAppearance_Widget_Button = 16973898; // 0x103004a
+    field public static final int TextAppearance_Widget_DropDownHint = 16973904; // 0x1030050
+    field public static final int TextAppearance_Widget_DropDownItem = 16973905; // 0x1030051
+    field public static final int TextAppearance_Widget_EditText = 16973900; // 0x103004c
+    field public static final int TextAppearance_Widget_IconMenu_Item = 16973899; // 0x103004b
+    field public static final int TextAppearance_Widget_PopupMenu_Large = 16973952; // 0x1030080
+    field public static final int TextAppearance_Widget_PopupMenu_Small = 16973953; // 0x1030081
+    field public static final int TextAppearance_Widget_TabWidget = 16973901; // 0x103004d
+    field public static final int TextAppearance_Widget_TextView = 16973902; // 0x103004e
+    field public static final int TextAppearance_Widget_TextView_PopupMenu = 16973903; // 0x103004f
+    field public static final int TextAppearance_Widget_TextView_SpinnerItem = 16973906; // 0x1030052
+    field public static final int TextAppearance_WindowTitle = 16973907; // 0x1030053
+    field public static final int Theme = 16973829; // 0x1030005
+    field public static final int ThemeOverlay = 16974407; // 0x1030247
+    field public static final int ThemeOverlay_DeviceDefault_Accent_DayNight = 16974564; // 0x10302e4
+    field public static final int ThemeOverlay_Material = 16974408; // 0x1030248
+    field public static final int ThemeOverlay_Material_ActionBar = 16974409; // 0x1030249
+    field public static final int ThemeOverlay_Material_Dark = 16974411; // 0x103024b
+    field public static final int ThemeOverlay_Material_Dark_ActionBar = 16974412; // 0x103024c
+    field public static final int ThemeOverlay_Material_Dialog = 16974550; // 0x10302d6
+    field public static final int ThemeOverlay_Material_Dialog_Alert = 16974551; // 0x10302d7
+    field public static final int ThemeOverlay_Material_Light = 16974410; // 0x103024a
+    field public static final int Theme_Black = 16973832; // 0x1030008
+    field public static final int Theme_Black_NoTitleBar = 16973833; // 0x1030009
+    field public static final int Theme_Black_NoTitleBar_Fullscreen = 16973834; // 0x103000a
+    field public static final int Theme_DeviceDefault = 16974120; // 0x1030128
+    field public static final int Theme_DeviceDefault_DayNight = 16974563; // 0x10302e3
+    field public static final int Theme_DeviceDefault_Dialog = 16974126; // 0x103012e
+    field public static final int Theme_DeviceDefault_DialogWhenLarge = 16974134; // 0x1030136
+    field public static final int Theme_DeviceDefault_DialogWhenLarge_NoActionBar = 16974135; // 0x1030137
+    field public static final int Theme_DeviceDefault_Dialog_Alert = 16974545; // 0x10302d1
+    field public static final int Theme_DeviceDefault_Dialog_MinWidth = 16974127; // 0x103012f
+    field public static final int Theme_DeviceDefault_Dialog_NoActionBar = 16974128; // 0x1030130
+    field public static final int Theme_DeviceDefault_Dialog_NoActionBar_MinWidth = 16974129; // 0x1030131
+    field public static final int Theme_DeviceDefault_InputMethod = 16974142; // 0x103013e
+    field public static final int Theme_DeviceDefault_Light = 16974123; // 0x103012b
+    field public static final int Theme_DeviceDefault_Light_DarkActionBar = 16974143; // 0x103013f
+    field public static final int Theme_DeviceDefault_Light_Dialog = 16974130; // 0x1030132
+    field public static final int Theme_DeviceDefault_Light_DialogWhenLarge = 16974136; // 0x1030138
+    field public static final int Theme_DeviceDefault_Light_DialogWhenLarge_NoActionBar = 16974137; // 0x1030139
+    field public static final int Theme_DeviceDefault_Light_Dialog_Alert = 16974546; // 0x10302d2
+    field public static final int Theme_DeviceDefault_Light_Dialog_MinWidth = 16974131; // 0x1030133
+    field public static final int Theme_DeviceDefault_Light_Dialog_NoActionBar = 16974132; // 0x1030134
+    field public static final int Theme_DeviceDefault_Light_Dialog_NoActionBar_MinWidth = 16974133; // 0x1030135
+    field public static final int Theme_DeviceDefault_Light_NoActionBar = 16974124; // 0x103012c
+    field public static final int Theme_DeviceDefault_Light_NoActionBar_Fullscreen = 16974125; // 0x103012d
+    field public static final int Theme_DeviceDefault_Light_NoActionBar_Overscan = 16974304; // 0x10301e0
+    field public static final int Theme_DeviceDefault_Light_NoActionBar_TranslucentDecor = 16974308; // 0x10301e4
+    field public static final int Theme_DeviceDefault_Light_Panel = 16974139; // 0x103013b
+    field public static final int Theme_DeviceDefault_NoActionBar = 16974121; // 0x1030129
+    field public static final int Theme_DeviceDefault_NoActionBar_Fullscreen = 16974122; // 0x103012a
+    field public static final int Theme_DeviceDefault_NoActionBar_Overscan = 16974303; // 0x10301df
+    field public static final int Theme_DeviceDefault_NoActionBar_TranslucentDecor = 16974307; // 0x10301e3
+    field public static final int Theme_DeviceDefault_Panel = 16974138; // 0x103013a
+    field public static final int Theme_DeviceDefault_Settings = 16974371; // 0x1030223
+    field public static final int Theme_DeviceDefault_Wallpaper = 16974140; // 0x103013c
+    field public static final int Theme_DeviceDefault_Wallpaper_NoTitleBar = 16974141; // 0x103013d
+    field public static final int Theme_Dialog = 16973835; // 0x103000b
+    field @Deprecated public static final int Theme_Holo = 16973931; // 0x103006b
+    field @Deprecated public static final int Theme_Holo_Dialog = 16973935; // 0x103006f
+    field @Deprecated public static final int Theme_Holo_DialogWhenLarge = 16973943; // 0x1030077
+    field @Deprecated public static final int Theme_Holo_DialogWhenLarge_NoActionBar = 16973944; // 0x1030078
+    field @Deprecated public static final int Theme_Holo_Dialog_MinWidth = 16973936; // 0x1030070
+    field @Deprecated public static final int Theme_Holo_Dialog_NoActionBar = 16973937; // 0x1030071
+    field @Deprecated public static final int Theme_Holo_Dialog_NoActionBar_MinWidth = 16973938; // 0x1030072
+    field @Deprecated public static final int Theme_Holo_InputMethod = 16973951; // 0x103007f
+    field @Deprecated public static final int Theme_Holo_Light = 16973934; // 0x103006e
+    field @Deprecated public static final int Theme_Holo_Light_DarkActionBar = 16974105; // 0x1030119
+    field @Deprecated public static final int Theme_Holo_Light_Dialog = 16973939; // 0x1030073
+    field @Deprecated public static final int Theme_Holo_Light_DialogWhenLarge = 16973945; // 0x1030079
+    field @Deprecated public static final int Theme_Holo_Light_DialogWhenLarge_NoActionBar = 16973946; // 0x103007a
+    field @Deprecated public static final int Theme_Holo_Light_Dialog_MinWidth = 16973940; // 0x1030074
+    field @Deprecated public static final int Theme_Holo_Light_Dialog_NoActionBar = 16973941; // 0x1030075
+    field @Deprecated public static final int Theme_Holo_Light_Dialog_NoActionBar_MinWidth = 16973942; // 0x1030076
+    field @Deprecated public static final int Theme_Holo_Light_NoActionBar = 16974064; // 0x10300f0
+    field @Deprecated public static final int Theme_Holo_Light_NoActionBar_Fullscreen = 16974065; // 0x10300f1
+    field @Deprecated public static final int Theme_Holo_Light_NoActionBar_Overscan = 16974302; // 0x10301de
+    field @Deprecated public static final int Theme_Holo_Light_NoActionBar_TranslucentDecor = 16974306; // 0x10301e2
+    field @Deprecated public static final int Theme_Holo_Light_Panel = 16973948; // 0x103007c
+    field @Deprecated public static final int Theme_Holo_NoActionBar = 16973932; // 0x103006c
+    field @Deprecated public static final int Theme_Holo_NoActionBar_Fullscreen = 16973933; // 0x103006d
+    field @Deprecated public static final int Theme_Holo_NoActionBar_Overscan = 16974301; // 0x10301dd
+    field @Deprecated public static final int Theme_Holo_NoActionBar_TranslucentDecor = 16974305; // 0x10301e1
+    field @Deprecated public static final int Theme_Holo_Panel = 16973947; // 0x103007b
+    field @Deprecated public static final int Theme_Holo_Wallpaper = 16973949; // 0x103007d
+    field @Deprecated public static final int Theme_Holo_Wallpaper_NoTitleBar = 16973950; // 0x103007e
+    field public static final int Theme_InputMethod = 16973908; // 0x1030054
+    field public static final int Theme_Light = 16973836; // 0x103000c
+    field public static final int Theme_Light_NoTitleBar = 16973837; // 0x103000d
+    field public static final int Theme_Light_NoTitleBar_Fullscreen = 16973838; // 0x103000e
+    field public static final int Theme_Light_Panel = 16973914; // 0x103005a
+    field public static final int Theme_Light_WallpaperSettings = 16973922; // 0x1030062
+    field public static final int Theme_Material = 16974372; // 0x1030224
+    field public static final int Theme_Material_Dialog = 16974373; // 0x1030225
+    field public static final int Theme_Material_DialogWhenLarge = 16974379; // 0x103022b
+    field public static final int Theme_Material_DialogWhenLarge_NoActionBar = 16974380; // 0x103022c
+    field public static final int Theme_Material_Dialog_Alert = 16974374; // 0x1030226
+    field public static final int Theme_Material_Dialog_MinWidth = 16974375; // 0x1030227
+    field public static final int Theme_Material_Dialog_NoActionBar = 16974376; // 0x1030228
+    field public static final int Theme_Material_Dialog_NoActionBar_MinWidth = 16974377; // 0x1030229
+    field public static final int Theme_Material_Dialog_Presentation = 16974378; // 0x103022a
+    field public static final int Theme_Material_InputMethod = 16974381; // 0x103022d
+    field public static final int Theme_Material_Light = 16974391; // 0x1030237
+    field public static final int Theme_Material_Light_DarkActionBar = 16974392; // 0x1030238
+    field public static final int Theme_Material_Light_Dialog = 16974393; // 0x1030239
+    field public static final int Theme_Material_Light_DialogWhenLarge = 16974399; // 0x103023f
+    field public static final int Theme_Material_Light_DialogWhenLarge_DarkActionBar = 16974552; // 0x10302d8
+    field public static final int Theme_Material_Light_DialogWhenLarge_NoActionBar = 16974400; // 0x1030240
+    field public static final int Theme_Material_Light_Dialog_Alert = 16974394; // 0x103023a
+    field public static final int Theme_Material_Light_Dialog_MinWidth = 16974395; // 0x103023b
+    field public static final int Theme_Material_Light_Dialog_NoActionBar = 16974396; // 0x103023c
+    field public static final int Theme_Material_Light_Dialog_NoActionBar_MinWidth = 16974397; // 0x103023d
+    field public static final int Theme_Material_Light_Dialog_Presentation = 16974398; // 0x103023e
+    field public static final int Theme_Material_Light_LightStatusBar = 16974549; // 0x10302d5
+    field public static final int Theme_Material_Light_NoActionBar = 16974401; // 0x1030241
+    field public static final int Theme_Material_Light_NoActionBar_Fullscreen = 16974402; // 0x1030242
+    field @Deprecated public static final int Theme_Material_Light_NoActionBar_Overscan = 16974403; // 0x1030243
+    field public static final int Theme_Material_Light_NoActionBar_TranslucentDecor = 16974404; // 0x1030244
+    field public static final int Theme_Material_Light_Panel = 16974405; // 0x1030245
+    field public static final int Theme_Material_Light_Voice = 16974406; // 0x1030246
+    field public static final int Theme_Material_NoActionBar = 16974382; // 0x103022e
+    field public static final int Theme_Material_NoActionBar_Fullscreen = 16974383; // 0x103022f
+    field @Deprecated public static final int Theme_Material_NoActionBar_Overscan = 16974384; // 0x1030230
+    field public static final int Theme_Material_NoActionBar_TranslucentDecor = 16974385; // 0x1030231
+    field public static final int Theme_Material_Panel = 16974386; // 0x1030232
+    field public static final int Theme_Material_Settings = 16974387; // 0x1030233
+    field public static final int Theme_Material_Voice = 16974388; // 0x1030234
+    field public static final int Theme_Material_Wallpaper = 16974389; // 0x1030235
+    field public static final int Theme_Material_Wallpaper_NoTitleBar = 16974390; // 0x1030236
+    field public static final int Theme_NoDisplay = 16973909; // 0x1030055
+    field public static final int Theme_NoTitleBar = 16973830; // 0x1030006
+    field public static final int Theme_NoTitleBar_Fullscreen = 16973831; // 0x1030007
+    field public static final int Theme_NoTitleBar_OverlayActionModes = 16973930; // 0x103006a
+    field public static final int Theme_Panel = 16973913; // 0x1030059
+    field public static final int Theme_Translucent = 16973839; // 0x103000f
+    field public static final int Theme_Translucent_NoTitleBar = 16973840; // 0x1030010
+    field public static final int Theme_Translucent_NoTitleBar_Fullscreen = 16973841; // 0x1030011
+    field public static final int Theme_Wallpaper = 16973918; // 0x103005e
+    field public static final int Theme_WallpaperSettings = 16973921; // 0x1030061
+    field public static final int Theme_Wallpaper_NoTitleBar = 16973919; // 0x103005f
+    field public static final int Theme_Wallpaper_NoTitleBar_Fullscreen = 16973920; // 0x1030060
+    field public static final int Theme_WithActionBar = 16973929; // 0x1030069
+    field public static final int Widget = 16973842; // 0x1030012
+    field public static final int Widget_AbsListView = 16973843; // 0x1030013
+    field public static final int Widget_ActionBar = 16973954; // 0x1030082
+    field public static final int Widget_ActionBar_TabBar = 16974068; // 0x10300f4
+    field public static final int Widget_ActionBar_TabText = 16974067; // 0x10300f3
+    field public static final int Widget_ActionBar_TabView = 16974066; // 0x10300f2
+    field public static final int Widget_ActionButton = 16973956; // 0x1030084
+    field public static final int Widget_ActionButton_CloseMode = 16973960; // 0x1030088
+    field public static final int Widget_ActionButton_Overflow = 16973959; // 0x1030087
+    field public static final int Widget_AutoCompleteTextView = 16973863; // 0x1030027
+    field public static final int Widget_Button = 16973844; // 0x1030014
+    field public static final int Widget_Button_Inset = 16973845; // 0x1030015
+    field public static final int Widget_Button_Small = 16973846; // 0x1030016
+    field public static final int Widget_Button_Toggle = 16973847; // 0x1030017
+    field public static final int Widget_CalendarView = 16974059; // 0x10300eb
+    field public static final int Widget_CompoundButton = 16973848; // 0x1030018
+    field public static final int Widget_CompoundButton_CheckBox = 16973849; // 0x1030019
+    field public static final int Widget_CompoundButton_RadioButton = 16973850; // 0x103001a
+    field public static final int Widget_CompoundButton_Star = 16973851; // 0x103001b
+    field public static final int Widget_DatePicker = 16974062; // 0x10300ee
+    field public static final int Widget_DeviceDefault = 16974144; // 0x1030140
+    field public static final int Widget_DeviceDefault_ActionBar = 16974187; // 0x103016b
+    field public static final int Widget_DeviceDefault_ActionBar_Solid = 16974195; // 0x1030173
+    field public static final int Widget_DeviceDefault_ActionBar_TabBar = 16974194; // 0x1030172
+    field public static final int Widget_DeviceDefault_ActionBar_TabText = 16974193; // 0x1030171
+    field public static final int Widget_DeviceDefault_ActionBar_TabView = 16974192; // 0x1030170
+    field public static final int Widget_DeviceDefault_ActionButton = 16974182; // 0x1030166
+    field public static final int Widget_DeviceDefault_ActionButton_CloseMode = 16974186; // 0x103016a
+    field public static final int Widget_DeviceDefault_ActionButton_Overflow = 16974183; // 0x1030167
+    field public static final int Widget_DeviceDefault_ActionButton_TextButton = 16974184; // 0x1030168
+    field public static final int Widget_DeviceDefault_ActionMode = 16974185; // 0x1030169
+    field public static final int Widget_DeviceDefault_AutoCompleteTextView = 16974151; // 0x1030147
+    field public static final int Widget_DeviceDefault_Button = 16974145; // 0x1030141
+    field public static final int Widget_DeviceDefault_Button_Borderless = 16974188; // 0x103016c
+    field public static final int Widget_DeviceDefault_Button_Borderless_Colored = 16974561; // 0x10302e1
+    field public static final int Widget_DeviceDefault_Button_Borderless_Small = 16974149; // 0x1030145
+    field public static final int Widget_DeviceDefault_Button_Colored = 16974560; // 0x10302e0
+    field public static final int Widget_DeviceDefault_Button_Inset = 16974147; // 0x1030143
+    field public static final int Widget_DeviceDefault_Button_Small = 16974146; // 0x1030142
+    field public static final int Widget_DeviceDefault_Button_Toggle = 16974148; // 0x1030144
+    field public static final int Widget_DeviceDefault_CalendarView = 16974190; // 0x103016e
+    field public static final int Widget_DeviceDefault_CheckedTextView = 16974299; // 0x10301db
+    field public static final int Widget_DeviceDefault_CompoundButton_CheckBox = 16974152; // 0x1030148
+    field public static final int Widget_DeviceDefault_CompoundButton_RadioButton = 16974169; // 0x1030159
+    field public static final int Widget_DeviceDefault_CompoundButton_Star = 16974173; // 0x103015d
+    field public static final int Widget_DeviceDefault_DatePicker = 16974191; // 0x103016f
+    field public static final int Widget_DeviceDefault_DropDownItem = 16974177; // 0x1030161
+    field public static final int Widget_DeviceDefault_DropDownItem_Spinner = 16974178; // 0x1030162
+    field public static final int Widget_DeviceDefault_EditText = 16974154; // 0x103014a
+    field public static final int Widget_DeviceDefault_ExpandableListView = 16974155; // 0x103014b
+    field public static final int Widget_DeviceDefault_FastScroll = 16974313; // 0x10301e9
+    field public static final int Widget_DeviceDefault_GridView = 16974156; // 0x103014c
+    field public static final int Widget_DeviceDefault_HorizontalScrollView = 16974171; // 0x103015b
+    field public static final int Widget_DeviceDefault_ImageButton = 16974157; // 0x103014d
+    field public static final int Widget_DeviceDefault_Light = 16974196; // 0x1030174
+    field public static final int Widget_DeviceDefault_Light_ActionBar = 16974243; // 0x10301a3
+    field public static final int Widget_DeviceDefault_Light_ActionBar_Solid = 16974247; // 0x10301a7
+    field @Deprecated public static final int Widget_DeviceDefault_Light_ActionBar_Solid_Inverse = 16974248; // 0x10301a8
+    field public static final int Widget_DeviceDefault_Light_ActionBar_TabBar = 16974246; // 0x10301a6
+    field @Deprecated public static final int Widget_DeviceDefault_Light_ActionBar_TabBar_Inverse = 16974249; // 0x10301a9
+    field public static final int Widget_DeviceDefault_Light_ActionBar_TabText = 16974245; // 0x10301a5
+    field @Deprecated public static final int Widget_DeviceDefault_Light_ActionBar_TabText_Inverse = 16974251; // 0x10301ab
+    field public static final int Widget_DeviceDefault_Light_ActionBar_TabView = 16974244; // 0x10301a4
+    field @Deprecated public static final int Widget_DeviceDefault_Light_ActionBar_TabView_Inverse = 16974250; // 0x10301aa
+    field public static final int Widget_DeviceDefault_Light_ActionButton = 16974239; // 0x103019f
+    field public static final int Widget_DeviceDefault_Light_ActionButton_CloseMode = 16974242; // 0x10301a2
+    field public static final int Widget_DeviceDefault_Light_ActionButton_Overflow = 16974240; // 0x10301a0
+    field public static final int Widget_DeviceDefault_Light_ActionMode = 16974241; // 0x10301a1
+    field @Deprecated public static final int Widget_DeviceDefault_Light_ActionMode_Inverse = 16974252; // 0x10301ac
+    field public static final int Widget_DeviceDefault_Light_AutoCompleteTextView = 16974203; // 0x103017b
+    field public static final int Widget_DeviceDefault_Light_Button = 16974197; // 0x1030175
+    field public static final int Widget_DeviceDefault_Light_Button_Borderless_Small = 16974201; // 0x1030179
+    field public static final int Widget_DeviceDefault_Light_Button_Inset = 16974199; // 0x1030177
+    field public static final int Widget_DeviceDefault_Light_Button_Small = 16974198; // 0x1030176
+    field public static final int Widget_DeviceDefault_Light_Button_Toggle = 16974200; // 0x1030178
+    field public static final int Widget_DeviceDefault_Light_CalendarView = 16974238; // 0x103019e
+    field public static final int Widget_DeviceDefault_Light_CheckedTextView = 16974300; // 0x10301dc
+    field public static final int Widget_DeviceDefault_Light_CompoundButton_CheckBox = 16974204; // 0x103017c
+    field public static final int Widget_DeviceDefault_Light_CompoundButton_RadioButton = 16974224; // 0x1030190
+    field public static final int Widget_DeviceDefault_Light_CompoundButton_Star = 16974228; // 0x1030194
+    field public static final int Widget_DeviceDefault_Light_DropDownItem = 16974232; // 0x1030198
+    field public static final int Widget_DeviceDefault_Light_DropDownItem_Spinner = 16974233; // 0x1030199
+    field public static final int Widget_DeviceDefault_Light_EditText = 16974206; // 0x103017e
+    field public static final int Widget_DeviceDefault_Light_ExpandableListView = 16974207; // 0x103017f
+    field public static final int Widget_DeviceDefault_Light_FastScroll = 16974315; // 0x10301eb
+    field public static final int Widget_DeviceDefault_Light_GridView = 16974208; // 0x1030180
+    field public static final int Widget_DeviceDefault_Light_HorizontalScrollView = 16974226; // 0x1030192
+    field public static final int Widget_DeviceDefault_Light_ImageButton = 16974209; // 0x1030181
+    field public static final int Widget_DeviceDefault_Light_ListPopupWindow = 16974235; // 0x103019b
+    field public static final int Widget_DeviceDefault_Light_ListView = 16974210; // 0x1030182
+    field public static final int Widget_DeviceDefault_Light_ListView_DropDown = 16974205; // 0x103017d
+    field public static final int Widget_DeviceDefault_Light_MediaRouteButton = 16974296; // 0x10301d8
+    field public static final int Widget_DeviceDefault_Light_PopupMenu = 16974236; // 0x103019c
+    field public static final int Widget_DeviceDefault_Light_PopupWindow = 16974211; // 0x1030183
+    field public static final int Widget_DeviceDefault_Light_ProgressBar = 16974212; // 0x1030184
+    field public static final int Widget_DeviceDefault_Light_ProgressBar_Horizontal = 16974213; // 0x1030185
+    field public static final int Widget_DeviceDefault_Light_ProgressBar_Inverse = 16974217; // 0x1030189
+    field public static final int Widget_DeviceDefault_Light_ProgressBar_Large = 16974216; // 0x1030188
+    field public static final int Widget_DeviceDefault_Light_ProgressBar_Large_Inverse = 16974219; // 0x103018b
+    field public static final int Widget_DeviceDefault_Light_ProgressBar_Small = 16974214; // 0x1030186
+    field public static final int Widget_DeviceDefault_Light_ProgressBar_Small_Inverse = 16974218; // 0x103018a
+    field public static final int Widget_DeviceDefault_Light_ProgressBar_Small_Title = 16974215; // 0x1030187
+    field public static final int Widget_DeviceDefault_Light_RatingBar = 16974221; // 0x103018d
+    field public static final int Widget_DeviceDefault_Light_RatingBar_Indicator = 16974222; // 0x103018e
+    field public static final int Widget_DeviceDefault_Light_RatingBar_Small = 16974223; // 0x103018f
+    field public static final int Widget_DeviceDefault_Light_ScrollView = 16974225; // 0x1030191
+    field public static final int Widget_DeviceDefault_Light_SeekBar = 16974220; // 0x103018c
+    field public static final int Widget_DeviceDefault_Light_Spinner = 16974227; // 0x1030193
+    field public static final int Widget_DeviceDefault_Light_StackView = 16974316; // 0x10301ec
+    field public static final int Widget_DeviceDefault_Light_Tab = 16974237; // 0x103019d
+    field public static final int Widget_DeviceDefault_Light_TabWidget = 16974229; // 0x1030195
+    field public static final int Widget_DeviceDefault_Light_TextView = 16974202; // 0x103017a
+    field public static final int Widget_DeviceDefault_Light_TextView_SpinnerItem = 16974234; // 0x103019a
+    field public static final int Widget_DeviceDefault_Light_WebTextView = 16974230; // 0x1030196
+    field public static final int Widget_DeviceDefault_Light_WebView = 16974231; // 0x1030197
+    field public static final int Widget_DeviceDefault_ListPopupWindow = 16974180; // 0x1030164
+    field public static final int Widget_DeviceDefault_ListView = 16974158; // 0x103014e
+    field public static final int Widget_DeviceDefault_ListView_DropDown = 16974153; // 0x1030149
+    field public static final int Widget_DeviceDefault_MediaRouteButton = 16974295; // 0x10301d7
+    field public static final int Widget_DeviceDefault_PopupMenu = 16974181; // 0x1030165
+    field public static final int Widget_DeviceDefault_PopupWindow = 16974159; // 0x103014f
+    field public static final int Widget_DeviceDefault_ProgressBar = 16974160; // 0x1030150
+    field public static final int Widget_DeviceDefault_ProgressBar_Horizontal = 16974161; // 0x1030151
+    field public static final int Widget_DeviceDefault_ProgressBar_Large = 16974164; // 0x1030154
+    field public static final int Widget_DeviceDefault_ProgressBar_Small = 16974162; // 0x1030152
+    field public static final int Widget_DeviceDefault_ProgressBar_Small_Title = 16974163; // 0x1030153
+    field public static final int Widget_DeviceDefault_RatingBar = 16974166; // 0x1030156
+    field public static final int Widget_DeviceDefault_RatingBar_Indicator = 16974167; // 0x1030157
+    field public static final int Widget_DeviceDefault_RatingBar_Small = 16974168; // 0x1030158
+    field public static final int Widget_DeviceDefault_ScrollView = 16974170; // 0x103015a
+    field public static final int Widget_DeviceDefault_SeekBar = 16974165; // 0x1030155
+    field public static final int Widget_DeviceDefault_Spinner = 16974172; // 0x103015c
+    field public static final int Widget_DeviceDefault_StackView = 16974314; // 0x10301ea
+    field public static final int Widget_DeviceDefault_Tab = 16974189; // 0x103016d
+    field public static final int Widget_DeviceDefault_TabWidget = 16974174; // 0x103015e
+    field public static final int Widget_DeviceDefault_TextView = 16974150; // 0x1030146
+    field public static final int Widget_DeviceDefault_TextView_SpinnerItem = 16974179; // 0x1030163
+    field public static final int Widget_DeviceDefault_WebTextView = 16974175; // 0x103015f
+    field public static final int Widget_DeviceDefault_WebView = 16974176; // 0x1030160
+    field public static final int Widget_DropDownItem = 16973867; // 0x103002b
+    field public static final int Widget_DropDownItem_Spinner = 16973868; // 0x103002c
+    field public static final int Widget_EditText = 16973859; // 0x1030023
+    field public static final int Widget_ExpandableListView = 16973860; // 0x1030024
+    field public static final int Widget_FastScroll = 16974309; // 0x10301e5
+    field public static final int Widget_FragmentBreadCrumbs = 16973961; // 0x1030089
+    field public static final int Widget_Gallery = 16973877; // 0x1030035
+    field public static final int Widget_GridView = 16973874; // 0x1030032
+    field public static final int Widget_Holo = 16973962; // 0x103008a
+    field public static final int Widget_Holo_ActionBar = 16974004; // 0x10300b4
+    field public static final int Widget_Holo_ActionBar_Solid = 16974113; // 0x1030121
+    field public static final int Widget_Holo_ActionBar_TabBar = 16974071; // 0x10300f7
+    field public static final int Widget_Holo_ActionBar_TabText = 16974070; // 0x10300f6
+    field public static final int Widget_Holo_ActionBar_TabView = 16974069; // 0x10300f5
+    field public static final int Widget_Holo_ActionButton = 16973999; // 0x10300af
+    field public static final int Widget_Holo_ActionButton_CloseMode = 16974003; // 0x10300b3
+    field public static final int Widget_Holo_ActionButton_Overflow = 16974000; // 0x10300b0
+    field public static final int Widget_Holo_ActionButton_TextButton = 16974001; // 0x10300b1
+    field public static final int Widget_Holo_ActionMode = 16974002; // 0x10300b2
+    field public static final int Widget_Holo_AutoCompleteTextView = 16973968; // 0x1030090
+    field public static final int Widget_Holo_Button = 16973963; // 0x103008b
+    field public static final int Widget_Holo_Button_Borderless = 16974050; // 0x10300e2
+    field public static final int Widget_Holo_Button_Borderless_Small = 16974106; // 0x103011a
+    field public static final int Widget_Holo_Button_Inset = 16973965; // 0x103008d
+    field public static final int Widget_Holo_Button_Small = 16973964; // 0x103008c
+    field public static final int Widget_Holo_Button_Toggle = 16973966; // 0x103008e
+    field public static final int Widget_Holo_CalendarView = 16974060; // 0x10300ec
+    field public static final int Widget_Holo_CheckedTextView = 16974297; // 0x10301d9
+    field public static final int Widget_Holo_CompoundButton_CheckBox = 16973969; // 0x1030091
+    field public static final int Widget_Holo_CompoundButton_RadioButton = 16973986; // 0x10300a2
+    field public static final int Widget_Holo_CompoundButton_Star = 16973990; // 0x10300a6
+    field public static final int Widget_Holo_DatePicker = 16974063; // 0x10300ef
+    field public static final int Widget_Holo_DropDownItem = 16973994; // 0x10300aa
+    field public static final int Widget_Holo_DropDownItem_Spinner = 16973995; // 0x10300ab
+    field public static final int Widget_Holo_EditText = 16973971; // 0x1030093
+    field public static final int Widget_Holo_ExpandableListView = 16973972; // 0x1030094
+    field public static final int Widget_Holo_GridView = 16973973; // 0x1030095
+    field public static final int Widget_Holo_HorizontalScrollView = 16973988; // 0x10300a4
+    field public static final int Widget_Holo_ImageButton = 16973974; // 0x1030096
+    field public static final int Widget_Holo_Light = 16974005; // 0x10300b5
+    field public static final int Widget_Holo_Light_ActionBar = 16974049; // 0x10300e1
+    field public static final int Widget_Holo_Light_ActionBar_Solid = 16974114; // 0x1030122
+    field public static final int Widget_Holo_Light_ActionBar_Solid_Inverse = 16974115; // 0x1030123
+    field public static final int Widget_Holo_Light_ActionBar_TabBar = 16974074; // 0x10300fa
+    field public static final int Widget_Holo_Light_ActionBar_TabBar_Inverse = 16974116; // 0x1030124
+    field public static final int Widget_Holo_Light_ActionBar_TabText = 16974073; // 0x10300f9
+    field public static final int Widget_Holo_Light_ActionBar_TabText_Inverse = 16974118; // 0x1030126
+    field public static final int Widget_Holo_Light_ActionBar_TabView = 16974072; // 0x10300f8
+    field public static final int Widget_Holo_Light_ActionBar_TabView_Inverse = 16974117; // 0x1030125
+    field public static final int Widget_Holo_Light_ActionButton = 16974045; // 0x10300dd
+    field public static final int Widget_Holo_Light_ActionButton_CloseMode = 16974048; // 0x10300e0
+    field public static final int Widget_Holo_Light_ActionButton_Overflow = 16974046; // 0x10300de
+    field public static final int Widget_Holo_Light_ActionMode = 16974047; // 0x10300df
+    field public static final int Widget_Holo_Light_ActionMode_Inverse = 16974119; // 0x1030127
+    field public static final int Widget_Holo_Light_AutoCompleteTextView = 16974011; // 0x10300bb
+    field public static final int Widget_Holo_Light_Button = 16974006; // 0x10300b6
+    field public static final int Widget_Holo_Light_Button_Borderless_Small = 16974107; // 0x103011b
+    field public static final int Widget_Holo_Light_Button_Inset = 16974008; // 0x10300b8
+    field public static final int Widget_Holo_Light_Button_Small = 16974007; // 0x10300b7
+    field public static final int Widget_Holo_Light_Button_Toggle = 16974009; // 0x10300b9
+    field public static final int Widget_Holo_Light_CalendarView = 16974061; // 0x10300ed
+    field public static final int Widget_Holo_Light_CheckedTextView = 16974298; // 0x10301da
+    field public static final int Widget_Holo_Light_CompoundButton_CheckBox = 16974012; // 0x10300bc
+    field public static final int Widget_Holo_Light_CompoundButton_RadioButton = 16974032; // 0x10300d0
+    field public static final int Widget_Holo_Light_CompoundButton_Star = 16974036; // 0x10300d4
+    field public static final int Widget_Holo_Light_DropDownItem = 16974040; // 0x10300d8
+    field public static final int Widget_Holo_Light_DropDownItem_Spinner = 16974041; // 0x10300d9
+    field public static final int Widget_Holo_Light_EditText = 16974014; // 0x10300be
+    field public static final int Widget_Holo_Light_ExpandableListView = 16974015; // 0x10300bf
+    field public static final int Widget_Holo_Light_GridView = 16974016; // 0x10300c0
+    field public static final int Widget_Holo_Light_HorizontalScrollView = 16974034; // 0x10300d2
+    field public static final int Widget_Holo_Light_ImageButton = 16974017; // 0x10300c1
+    field public static final int Widget_Holo_Light_ListPopupWindow = 16974043; // 0x10300db
+    field public static final int Widget_Holo_Light_ListView = 16974018; // 0x10300c2
+    field public static final int Widget_Holo_Light_ListView_DropDown = 16974013; // 0x10300bd
+    field public static final int Widget_Holo_Light_MediaRouteButton = 16974294; // 0x10301d6
+    field public static final int Widget_Holo_Light_PopupMenu = 16974044; // 0x10300dc
+    field public static final int Widget_Holo_Light_PopupWindow = 16974019; // 0x10300c3
+    field public static final int Widget_Holo_Light_ProgressBar = 16974020; // 0x10300c4
+    field public static final int Widget_Holo_Light_ProgressBar_Horizontal = 16974021; // 0x10300c5
+    field public static final int Widget_Holo_Light_ProgressBar_Inverse = 16974025; // 0x10300c9
+    field public static final int Widget_Holo_Light_ProgressBar_Large = 16974024; // 0x10300c8
+    field public static final int Widget_Holo_Light_ProgressBar_Large_Inverse = 16974027; // 0x10300cb
+    field public static final int Widget_Holo_Light_ProgressBar_Small = 16974022; // 0x10300c6
+    field public static final int Widget_Holo_Light_ProgressBar_Small_Inverse = 16974026; // 0x10300ca
+    field public static final int Widget_Holo_Light_ProgressBar_Small_Title = 16974023; // 0x10300c7
+    field public static final int Widget_Holo_Light_RatingBar = 16974029; // 0x10300cd
+    field public static final int Widget_Holo_Light_RatingBar_Indicator = 16974030; // 0x10300ce
+    field public static final int Widget_Holo_Light_RatingBar_Small = 16974031; // 0x10300cf
+    field public static final int Widget_Holo_Light_ScrollView = 16974033; // 0x10300d1
+    field public static final int Widget_Holo_Light_SeekBar = 16974028; // 0x10300cc
+    field public static final int Widget_Holo_Light_Spinner = 16974035; // 0x10300d3
+    field public static final int Widget_Holo_Light_Tab = 16974052; // 0x10300e4
+    field public static final int Widget_Holo_Light_TabWidget = 16974037; // 0x10300d5
+    field public static final int Widget_Holo_Light_TextView = 16974010; // 0x10300ba
+    field public static final int Widget_Holo_Light_TextView_SpinnerItem = 16974042; // 0x10300da
+    field public static final int Widget_Holo_Light_WebTextView = 16974038; // 0x10300d6
+    field public static final int Widget_Holo_Light_WebView = 16974039; // 0x10300d7
+    field public static final int Widget_Holo_ListPopupWindow = 16973997; // 0x10300ad
+    field public static final int Widget_Holo_ListView = 16973975; // 0x1030097
+    field public static final int Widget_Holo_ListView_DropDown = 16973970; // 0x1030092
+    field public static final int Widget_Holo_MediaRouteButton = 16974293; // 0x10301d5
+    field public static final int Widget_Holo_PopupMenu = 16973998; // 0x10300ae
+    field public static final int Widget_Holo_PopupWindow = 16973976; // 0x1030098
+    field public static final int Widget_Holo_ProgressBar = 16973977; // 0x1030099
+    field public static final int Widget_Holo_ProgressBar_Horizontal = 16973978; // 0x103009a
+    field public static final int Widget_Holo_ProgressBar_Large = 16973981; // 0x103009d
+    field public static final int Widget_Holo_ProgressBar_Small = 16973979; // 0x103009b
+    field public static final int Widget_Holo_ProgressBar_Small_Title = 16973980; // 0x103009c
+    field public static final int Widget_Holo_RatingBar = 16973983; // 0x103009f
+    field public static final int Widget_Holo_RatingBar_Indicator = 16973984; // 0x10300a0
+    field public static final int Widget_Holo_RatingBar_Small = 16973985; // 0x10300a1
+    field public static final int Widget_Holo_ScrollView = 16973987; // 0x10300a3
+    field public static final int Widget_Holo_SeekBar = 16973982; // 0x103009e
+    field public static final int Widget_Holo_Spinner = 16973989; // 0x10300a5
+    field public static final int Widget_Holo_Tab = 16974051; // 0x10300e3
+    field public static final int Widget_Holo_TabWidget = 16973991; // 0x10300a7
+    field public static final int Widget_Holo_TextView = 16973967; // 0x103008f
+    field public static final int Widget_Holo_TextView_SpinnerItem = 16973996; // 0x10300ac
+    field public static final int Widget_Holo_WebTextView = 16973992; // 0x10300a8
+    field public static final int Widget_Holo_WebView = 16973993; // 0x10300a9
+    field public static final int Widget_ImageButton = 16973862; // 0x1030026
+    field public static final int Widget_ImageWell = 16973861; // 0x1030025
+    field @Deprecated public static final int Widget_KeyboardView = 16973911; // 0x1030057
+    field public static final int Widget_ListPopupWindow = 16973957; // 0x1030085
+    field public static final int Widget_ListView = 16973870; // 0x103002e
+    field public static final int Widget_ListView_DropDown = 16973872; // 0x1030030
+    field public static final int Widget_ListView_Menu = 16973873; // 0x1030031
+    field public static final int Widget_ListView_White = 16973871; // 0x103002f
+    field public static final int Widget_Material = 16974413; // 0x103024d
+    field public static final int Widget_Material_ActionBar = 16974414; // 0x103024e
+    field public static final int Widget_Material_ActionBar_Solid = 16974415; // 0x103024f
+    field public static final int Widget_Material_ActionBar_TabBar = 16974416; // 0x1030250
+    field public static final int Widget_Material_ActionBar_TabText = 16974417; // 0x1030251
+    field public static final int Widget_Material_ActionBar_TabView = 16974418; // 0x1030252
+    field public static final int Widget_Material_ActionButton = 16974419; // 0x1030253
+    field public static final int Widget_Material_ActionButton_CloseMode = 16974420; // 0x1030254
+    field public static final int Widget_Material_ActionButton_Overflow = 16974421; // 0x1030255
+    field public static final int Widget_Material_ActionMode = 16974422; // 0x1030256
+    field public static final int Widget_Material_AutoCompleteTextView = 16974423; // 0x1030257
+    field public static final int Widget_Material_Button = 16974424; // 0x1030258
+    field public static final int Widget_Material_ButtonBar = 16974431; // 0x103025f
+    field public static final int Widget_Material_ButtonBar_AlertDialog = 16974432; // 0x1030260
+    field public static final int Widget_Material_Button_Borderless = 16974425; // 0x1030259
+    field public static final int Widget_Material_Button_Borderless_Colored = 16974426; // 0x103025a
+    field public static final int Widget_Material_Button_Borderless_Small = 16974427; // 0x103025b
+    field public static final int Widget_Material_Button_Colored = 16974547; // 0x10302d3
+    field public static final int Widget_Material_Button_Inset = 16974428; // 0x103025c
+    field public static final int Widget_Material_Button_Small = 16974429; // 0x103025d
+    field public static final int Widget_Material_Button_Toggle = 16974430; // 0x103025e
+    field public static final int Widget_Material_CalendarView = 16974433; // 0x1030261
+    field public static final int Widget_Material_CheckedTextView = 16974434; // 0x1030262
+    field public static final int Widget_Material_CompoundButton_CheckBox = 16974435; // 0x1030263
+    field public static final int Widget_Material_CompoundButton_RadioButton = 16974436; // 0x1030264
+    field public static final int Widget_Material_CompoundButton_Star = 16974437; // 0x1030265
+    field public static final int Widget_Material_CompoundButton_Switch = 16974554; // 0x10302da
+    field public static final int Widget_Material_DatePicker = 16974438; // 0x1030266
+    field public static final int Widget_Material_DropDownItem = 16974439; // 0x1030267
+    field public static final int Widget_Material_DropDownItem_Spinner = 16974440; // 0x1030268
+    field public static final int Widget_Material_EditText = 16974441; // 0x1030269
+    field public static final int Widget_Material_ExpandableListView = 16974442; // 0x103026a
+    field public static final int Widget_Material_FastScroll = 16974443; // 0x103026b
+    field public static final int Widget_Material_GridView = 16974444; // 0x103026c
+    field public static final int Widget_Material_HorizontalScrollView = 16974445; // 0x103026d
+    field public static final int Widget_Material_ImageButton = 16974446; // 0x103026e
+    field public static final int Widget_Material_Light = 16974478; // 0x103028e
+    field public static final int Widget_Material_Light_ActionBar = 16974479; // 0x103028f
+    field public static final int Widget_Material_Light_ActionBar_Solid = 16974480; // 0x1030290
+    field public static final int Widget_Material_Light_ActionBar_TabBar = 16974481; // 0x1030291
+    field public static final int Widget_Material_Light_ActionBar_TabText = 16974482; // 0x1030292
+    field public static final int Widget_Material_Light_ActionBar_TabView = 16974483; // 0x1030293
+    field public static final int Widget_Material_Light_ActionButton = 16974484; // 0x1030294
+    field public static final int Widget_Material_Light_ActionButton_CloseMode = 16974485; // 0x1030295
+    field public static final int Widget_Material_Light_ActionButton_Overflow = 16974486; // 0x1030296
+    field public static final int Widget_Material_Light_ActionMode = 16974487; // 0x1030297
+    field public static final int Widget_Material_Light_AutoCompleteTextView = 16974488; // 0x1030298
+    field public static final int Widget_Material_Light_Button = 16974489; // 0x1030299
+    field public static final int Widget_Material_Light_ButtonBar = 16974496; // 0x10302a0
+    field public static final int Widget_Material_Light_ButtonBar_AlertDialog = 16974497; // 0x10302a1
+    field public static final int Widget_Material_Light_Button_Borderless = 16974490; // 0x103029a
+    field public static final int Widget_Material_Light_Button_Borderless_Colored = 16974491; // 0x103029b
+    field public static final int Widget_Material_Light_Button_Borderless_Small = 16974492; // 0x103029c
+    field public static final int Widget_Material_Light_Button_Inset = 16974493; // 0x103029d
+    field public static final int Widget_Material_Light_Button_Small = 16974494; // 0x103029e
+    field public static final int Widget_Material_Light_Button_Toggle = 16974495; // 0x103029f
+    field public static final int Widget_Material_Light_CalendarView = 16974498; // 0x10302a2
+    field public static final int Widget_Material_Light_CheckedTextView = 16974499; // 0x10302a3
+    field public static final int Widget_Material_Light_CompoundButton_CheckBox = 16974500; // 0x10302a4
+    field public static final int Widget_Material_Light_CompoundButton_RadioButton = 16974501; // 0x10302a5
+    field public static final int Widget_Material_Light_CompoundButton_Star = 16974502; // 0x10302a6
+    field public static final int Widget_Material_Light_CompoundButton_Switch = 16974555; // 0x10302db
+    field public static final int Widget_Material_Light_DatePicker = 16974503; // 0x10302a7
+    field public static final int Widget_Material_Light_DropDownItem = 16974504; // 0x10302a8
+    field public static final int Widget_Material_Light_DropDownItem_Spinner = 16974505; // 0x10302a9
+    field public static final int Widget_Material_Light_EditText = 16974506; // 0x10302aa
+    field public static final int Widget_Material_Light_ExpandableListView = 16974507; // 0x10302ab
+    field public static final int Widget_Material_Light_FastScroll = 16974508; // 0x10302ac
+    field public static final int Widget_Material_Light_GridView = 16974509; // 0x10302ad
+    field public static final int Widget_Material_Light_HorizontalScrollView = 16974510; // 0x10302ae
+    field public static final int Widget_Material_Light_ImageButton = 16974511; // 0x10302af
+    field public static final int Widget_Material_Light_ListPopupWindow = 16974512; // 0x10302b0
+    field public static final int Widget_Material_Light_ListView = 16974513; // 0x10302b1
+    field public static final int Widget_Material_Light_ListView_DropDown = 16974514; // 0x10302b2
+    field public static final int Widget_Material_Light_MediaRouteButton = 16974515; // 0x10302b3
+    field public static final int Widget_Material_Light_NumberPicker = 16974557; // 0x10302dd
+    field public static final int Widget_Material_Light_PopupMenu = 16974516; // 0x10302b4
+    field public static final int Widget_Material_Light_PopupMenu_Overflow = 16974517; // 0x10302b5
+    field public static final int Widget_Material_Light_PopupWindow = 16974518; // 0x10302b6
+    field public static final int Widget_Material_Light_ProgressBar = 16974519; // 0x10302b7
+    field public static final int Widget_Material_Light_ProgressBar_Horizontal = 16974520; // 0x10302b8
+    field public static final int Widget_Material_Light_ProgressBar_Inverse = 16974521; // 0x10302b9
+    field public static final int Widget_Material_Light_ProgressBar_Large = 16974522; // 0x10302ba
+    field public static final int Widget_Material_Light_ProgressBar_Large_Inverse = 16974523; // 0x10302bb
+    field public static final int Widget_Material_Light_ProgressBar_Small = 16974524; // 0x10302bc
+    field public static final int Widget_Material_Light_ProgressBar_Small_Inverse = 16974525; // 0x10302bd
+    field public static final int Widget_Material_Light_ProgressBar_Small_Title = 16974526; // 0x10302be
+    field public static final int Widget_Material_Light_RatingBar = 16974527; // 0x10302bf
+    field public static final int Widget_Material_Light_RatingBar_Indicator = 16974528; // 0x10302c0
+    field public static final int Widget_Material_Light_RatingBar_Small = 16974529; // 0x10302c1
+    field public static final int Widget_Material_Light_ScrollView = 16974530; // 0x10302c2
+    field public static final int Widget_Material_Light_SearchView = 16974531; // 0x10302c3
+    field public static final int Widget_Material_Light_SeekBar = 16974532; // 0x10302c4
+    field public static final int Widget_Material_Light_SegmentedButton = 16974533; // 0x10302c5
+    field public static final int Widget_Material_Light_Spinner = 16974535; // 0x10302c7
+    field public static final int Widget_Material_Light_Spinner_Underlined = 16974536; // 0x10302c8
+    field public static final int Widget_Material_Light_StackView = 16974534; // 0x10302c6
+    field public static final int Widget_Material_Light_Tab = 16974537; // 0x10302c9
+    field public static final int Widget_Material_Light_TabWidget = 16974538; // 0x10302ca
+    field public static final int Widget_Material_Light_TextView = 16974539; // 0x10302cb
+    field public static final int Widget_Material_Light_TextView_SpinnerItem = 16974540; // 0x10302cc
+    field public static final int Widget_Material_Light_TimePicker = 16974541; // 0x10302cd
+    field public static final int Widget_Material_Light_WebTextView = 16974542; // 0x10302ce
+    field public static final int Widget_Material_Light_WebView = 16974543; // 0x10302cf
+    field public static final int Widget_Material_ListPopupWindow = 16974447; // 0x103026f
+    field public static final int Widget_Material_ListView = 16974448; // 0x1030270
+    field public static final int Widget_Material_ListView_DropDown = 16974449; // 0x1030271
+    field public static final int Widget_Material_MediaRouteButton = 16974450; // 0x1030272
+    field public static final int Widget_Material_NumberPicker = 16974556; // 0x10302dc
+    field public static final int Widget_Material_PopupMenu = 16974451; // 0x1030273
+    field public static final int Widget_Material_PopupMenu_Overflow = 16974452; // 0x1030274
+    field public static final int Widget_Material_PopupWindow = 16974453; // 0x1030275
+    field public static final int Widget_Material_ProgressBar = 16974454; // 0x1030276
+    field public static final int Widget_Material_ProgressBar_Horizontal = 16974455; // 0x1030277
+    field public static final int Widget_Material_ProgressBar_Large = 16974456; // 0x1030278
+    field public static final int Widget_Material_ProgressBar_Small = 16974457; // 0x1030279
+    field public static final int Widget_Material_ProgressBar_Small_Title = 16974458; // 0x103027a
+    field public static final int Widget_Material_RatingBar = 16974459; // 0x103027b
+    field public static final int Widget_Material_RatingBar_Indicator = 16974460; // 0x103027c
+    field public static final int Widget_Material_RatingBar_Small = 16974461; // 0x103027d
+    field public static final int Widget_Material_ScrollView = 16974462; // 0x103027e
+    field public static final int Widget_Material_SearchView = 16974463; // 0x103027f
+    field public static final int Widget_Material_SeekBar = 16974464; // 0x1030280
+    field public static final int Widget_Material_SeekBar_Discrete = 16974553; // 0x10302d9
+    field public static final int Widget_Material_SegmentedButton = 16974465; // 0x1030281
+    field public static final int Widget_Material_Spinner = 16974467; // 0x1030283
+    field public static final int Widget_Material_Spinner_Underlined = 16974468; // 0x1030284
+    field public static final int Widget_Material_StackView = 16974466; // 0x1030282
+    field public static final int Widget_Material_Tab = 16974469; // 0x1030285
+    field public static final int Widget_Material_TabWidget = 16974470; // 0x1030286
+    field public static final int Widget_Material_TextView = 16974471; // 0x1030287
+    field public static final int Widget_Material_TextView_SpinnerItem = 16974472; // 0x1030288
+    field public static final int Widget_Material_TimePicker = 16974473; // 0x1030289
+    field public static final int Widget_Material_Toolbar = 16974474; // 0x103028a
+    field public static final int Widget_Material_Toolbar_Button_Navigation = 16974475; // 0x103028b
+    field public static final int Widget_Material_WebTextView = 16974476; // 0x103028c
+    field public static final int Widget_Material_WebView = 16974477; // 0x103028d
+    field public static final int Widget_PopupMenu = 16973958; // 0x1030086
+    field public static final int Widget_PopupWindow = 16973878; // 0x1030036
+    field public static final int Widget_ProgressBar = 16973852; // 0x103001c
+    field public static final int Widget_ProgressBar_Horizontal = 16973855; // 0x103001f
+    field public static final int Widget_ProgressBar_Inverse = 16973915; // 0x103005b
+    field public static final int Widget_ProgressBar_Large = 16973853; // 0x103001d
+    field public static final int Widget_ProgressBar_Large_Inverse = 16973916; // 0x103005c
+    field public static final int Widget_ProgressBar_Small = 16973854; // 0x103001e
+    field public static final int Widget_ProgressBar_Small_Inverse = 16973917; // 0x103005d
+    field public static final int Widget_RatingBar = 16973857; // 0x1030021
+    field public static final int Widget_ScrollView = 16973869; // 0x103002d
+    field public static final int Widget_SeekBar = 16973856; // 0x1030020
+    field public static final int Widget_Spinner = 16973864; // 0x1030028
+    field public static final int Widget_Spinner_DropDown = 16973955; // 0x1030083
+    field public static final int Widget_StackView = 16974310; // 0x10301e6
+    field public static final int Widget_TabWidget = 16973876; // 0x1030034
+    field public static final int Widget_TextView = 16973858; // 0x1030022
+    field public static final int Widget_TextView_PopupMenu = 16973865; // 0x1030029
+    field public static final int Widget_TextView_SpinnerItem = 16973866; // 0x103002a
+    field public static final int Widget_Toolbar = 16974311; // 0x10301e7
+    field public static final int Widget_Toolbar_Button_Navigation = 16974312; // 0x10301e8
+    field public static final int Widget_WebView = 16973875; // 0x1030033
+  }
+
+  public static final class R.transition {
+    ctor public R.transition();
+    field public static final int explode = 17760259; // 0x10f0003
+    field public static final int fade = 17760258; // 0x10f0002
+    field public static final int move = 17760257; // 0x10f0001
+    field public static final int no_transition = 17760256; // 0x10f0000
+    field public static final int slide_bottom = 17760260; // 0x10f0004
+    field public static final int slide_left = 17760263; // 0x10f0007
+    field public static final int slide_right = 17760262; // 0x10f0006
+    field public static final int slide_top = 17760261; // 0x10f0005
+  }
+
+  public static final class R.xml {
+    ctor public R.xml();
+  }
+
+}
+
+package android.accessibilityservice {
+
+  public final class AccessibilityButtonController {
+    method public boolean isAccessibilityButtonAvailable();
+    method public void registerAccessibilityButtonCallback(@NonNull android.accessibilityservice.AccessibilityButtonController.AccessibilityButtonCallback);
+    method public void registerAccessibilityButtonCallback(@NonNull android.accessibilityservice.AccessibilityButtonController.AccessibilityButtonCallback, @NonNull android.os.Handler);
+    method public void unregisterAccessibilityButtonCallback(@NonNull android.accessibilityservice.AccessibilityButtonController.AccessibilityButtonCallback);
+  }
+
+  public abstract static class AccessibilityButtonController.AccessibilityButtonCallback {
+    ctor public AccessibilityButtonController.AccessibilityButtonCallback();
+    method public void onAvailabilityChanged(android.accessibilityservice.AccessibilityButtonController, boolean);
+    method public void onClicked(android.accessibilityservice.AccessibilityButtonController);
+  }
+
+  public final class AccessibilityGestureEvent implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getDisplayId();
+    method public int getGestureId();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.accessibilityservice.AccessibilityGestureEvent> CREATOR;
+  }
+
+  public abstract class AccessibilityService extends android.app.Service {
+    ctor public AccessibilityService();
+    method public final void disableSelf();
+    method public final boolean dispatchGesture(@NonNull android.accessibilityservice.GestureDescription, @Nullable android.accessibilityservice.AccessibilityService.GestureResultCallback, @Nullable android.os.Handler);
+    method public android.view.accessibility.AccessibilityNodeInfo findFocus(int);
+    method @NonNull public final android.accessibilityservice.AccessibilityButtonController getAccessibilityButtonController();
+    method @NonNull public final android.accessibilityservice.AccessibilityButtonController getAccessibilityButtonController(int);
+    method @NonNull @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public final android.accessibilityservice.FingerprintGestureController getFingerprintGestureController();
+    method @NonNull public final android.accessibilityservice.AccessibilityService.MagnificationController getMagnificationController();
+    method public android.view.accessibility.AccessibilityNodeInfo getRootInActiveWindow();
+    method public final android.accessibilityservice.AccessibilityServiceInfo getServiceInfo();
+    method @NonNull public final android.accessibilityservice.AccessibilityService.SoftKeyboardController getSoftKeyboardController();
+    method @NonNull public final java.util.List<android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction> getSystemActions();
+    method public java.util.List<android.view.accessibility.AccessibilityWindowInfo> getWindows();
+    method @NonNull public final android.util.SparseArray<java.util.List<android.view.accessibility.AccessibilityWindowInfo>> getWindowsOnAllDisplays();
+    method public abstract void onAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
+    method public final android.os.IBinder onBind(android.content.Intent);
+    method @Deprecated protected boolean onGesture(int);
+    method public boolean onGesture(@NonNull android.accessibilityservice.AccessibilityGestureEvent);
+    method public abstract void onInterrupt();
+    method protected boolean onKeyEvent(android.view.KeyEvent);
+    method protected void onServiceConnected();
+    method public void onSystemActionsChanged();
+    method public final boolean performGlobalAction(int);
+    method public void setGestureDetectionPassthroughRegion(int, @NonNull android.graphics.Region);
+    method public final void setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo);
+    method public void setTouchExplorationPassthroughRegion(int, @NonNull android.graphics.Region);
+    method public void takeScreenshot(int, @NonNull java.util.concurrent.Executor, @NonNull android.accessibilityservice.AccessibilityService.TakeScreenshotCallback);
+    field public static final int ERROR_TAKE_SCREENSHOT_INTERNAL_ERROR = 1; // 0x1
+    field public static final int ERROR_TAKE_SCREENSHOT_INTERVAL_TIME_SHORT = 3; // 0x3
+    field public static final int ERROR_TAKE_SCREENSHOT_INVALID_DISPLAY = 4; // 0x4
+    field public static final int ERROR_TAKE_SCREENSHOT_NO_ACCESSIBILITY_ACCESS = 2; // 0x2
+    field public static final int GESTURE_2_FINGER_DOUBLE_TAP = 20; // 0x14
+    field public static final int GESTURE_2_FINGER_DOUBLE_TAP_AND_HOLD = 40; // 0x28
+    field public static final int GESTURE_2_FINGER_SINGLE_TAP = 19; // 0x13
+    field public static final int GESTURE_2_FINGER_SWIPE_DOWN = 26; // 0x1a
+    field public static final int GESTURE_2_FINGER_SWIPE_LEFT = 27; // 0x1b
+    field public static final int GESTURE_2_FINGER_SWIPE_RIGHT = 28; // 0x1c
+    field public static final int GESTURE_2_FINGER_SWIPE_UP = 25; // 0x19
+    field public static final int GESTURE_2_FINGER_TRIPLE_TAP = 21; // 0x15
+    field public static final int GESTURE_3_FINGER_DOUBLE_TAP = 23; // 0x17
+    field public static final int GESTURE_3_FINGER_DOUBLE_TAP_AND_HOLD = 41; // 0x29
+    field public static final int GESTURE_3_FINGER_SINGLE_TAP = 22; // 0x16
+    field public static final int GESTURE_3_FINGER_SWIPE_DOWN = 30; // 0x1e
+    field public static final int GESTURE_3_FINGER_SWIPE_LEFT = 31; // 0x1f
+    field public static final int GESTURE_3_FINGER_SWIPE_RIGHT = 32; // 0x20
+    field public static final int GESTURE_3_FINGER_SWIPE_UP = 29; // 0x1d
+    field public static final int GESTURE_3_FINGER_TRIPLE_TAP = 24; // 0x18
+    field public static final int GESTURE_4_FINGER_DOUBLE_TAP = 38; // 0x26
+    field public static final int GESTURE_4_FINGER_DOUBLE_TAP_AND_HOLD = 42; // 0x2a
+    field public static final int GESTURE_4_FINGER_SINGLE_TAP = 37; // 0x25
+    field public static final int GESTURE_4_FINGER_SWIPE_DOWN = 34; // 0x22
+    field public static final int GESTURE_4_FINGER_SWIPE_LEFT = 35; // 0x23
+    field public static final int GESTURE_4_FINGER_SWIPE_RIGHT = 36; // 0x24
+    field public static final int GESTURE_4_FINGER_SWIPE_UP = 33; // 0x21
+    field public static final int GESTURE_4_FINGER_TRIPLE_TAP = 39; // 0x27
+    field public static final int GESTURE_DOUBLE_TAP = 17; // 0x11
+    field public static final int GESTURE_DOUBLE_TAP_AND_HOLD = 18; // 0x12
+    field public static final int GESTURE_SWIPE_DOWN = 2; // 0x2
+    field public static final int GESTURE_SWIPE_DOWN_AND_LEFT = 15; // 0xf
+    field public static final int GESTURE_SWIPE_DOWN_AND_RIGHT = 16; // 0x10
+    field public static final int GESTURE_SWIPE_DOWN_AND_UP = 8; // 0x8
+    field public static final int GESTURE_SWIPE_LEFT = 3; // 0x3
+    field public static final int GESTURE_SWIPE_LEFT_AND_DOWN = 10; // 0xa
+    field public static final int GESTURE_SWIPE_LEFT_AND_RIGHT = 5; // 0x5
+    field public static final int GESTURE_SWIPE_LEFT_AND_UP = 9; // 0x9
+    field public static final int GESTURE_SWIPE_RIGHT = 4; // 0x4
+    field public static final int GESTURE_SWIPE_RIGHT_AND_DOWN = 12; // 0xc
+    field public static final int GESTURE_SWIPE_RIGHT_AND_LEFT = 6; // 0x6
+    field public static final int GESTURE_SWIPE_RIGHT_AND_UP = 11; // 0xb
+    field public static final int GESTURE_SWIPE_UP = 1; // 0x1
+    field public static final int GESTURE_SWIPE_UP_AND_DOWN = 7; // 0x7
+    field public static final int GESTURE_SWIPE_UP_AND_LEFT = 13; // 0xd
+    field public static final int GESTURE_SWIPE_UP_AND_RIGHT = 14; // 0xe
+    field public static final int GLOBAL_ACTION_BACK = 1; // 0x1
+    field public static final int GLOBAL_ACTION_HOME = 2; // 0x2
+    field public static final int GLOBAL_ACTION_LOCK_SCREEN = 8; // 0x8
+    field public static final int GLOBAL_ACTION_NOTIFICATIONS = 4; // 0x4
+    field public static final int GLOBAL_ACTION_POWER_DIALOG = 6; // 0x6
+    field public static final int GLOBAL_ACTION_QUICK_SETTINGS = 5; // 0x5
+    field public static final int GLOBAL_ACTION_RECENTS = 3; // 0x3
+    field public static final int GLOBAL_ACTION_TAKE_SCREENSHOT = 9; // 0x9
+    field public static final int GLOBAL_ACTION_TOGGLE_SPLIT_SCREEN = 7; // 0x7
+    field public static final String SERVICE_INTERFACE = "android.accessibilityservice.AccessibilityService";
+    field public static final String SERVICE_META_DATA = "android.accessibilityservice";
+    field public static final int SHOW_MODE_AUTO = 0; // 0x0
+    field public static final int SHOW_MODE_HIDDEN = 1; // 0x1
+    field public static final int SHOW_MODE_IGNORE_HARD_KEYBOARD = 2; // 0x2
+  }
+
+  public abstract static class AccessibilityService.GestureResultCallback {
+    ctor public AccessibilityService.GestureResultCallback();
+    method public void onCancelled(android.accessibilityservice.GestureDescription);
+    method public void onCompleted(android.accessibilityservice.GestureDescription);
+  }
+
+  public static final class AccessibilityService.MagnificationController {
+    method public void addListener(@NonNull android.accessibilityservice.AccessibilityService.MagnificationController.OnMagnificationChangedListener);
+    method public void addListener(@NonNull android.accessibilityservice.AccessibilityService.MagnificationController.OnMagnificationChangedListener, @Nullable android.os.Handler);
+    method public float getCenterX();
+    method public float getCenterY();
+    method @NonNull public android.graphics.Region getMagnificationRegion();
+    method public float getScale();
+    method public boolean removeListener(@NonNull android.accessibilityservice.AccessibilityService.MagnificationController.OnMagnificationChangedListener);
+    method public boolean reset(boolean);
+    method public boolean setCenter(float, float, boolean);
+    method public boolean setScale(float, boolean);
+  }
+
+  public static interface AccessibilityService.MagnificationController.OnMagnificationChangedListener {
+    method public void onMagnificationChanged(@NonNull android.accessibilityservice.AccessibilityService.MagnificationController, @NonNull android.graphics.Region, float, float, float);
+  }
+
+  public static final class AccessibilityService.ScreenshotResult {
+    method @NonNull public android.graphics.ColorSpace getColorSpace();
+    method @NonNull public android.hardware.HardwareBuffer getHardwareBuffer();
+    method public long getTimestamp();
+  }
+
+  public static final class AccessibilityService.SoftKeyboardController {
+    method public void addOnShowModeChangedListener(@NonNull android.accessibilityservice.AccessibilityService.SoftKeyboardController.OnShowModeChangedListener);
+    method public void addOnShowModeChangedListener(@NonNull android.accessibilityservice.AccessibilityService.SoftKeyboardController.OnShowModeChangedListener, @Nullable android.os.Handler);
+    method public int getShowMode();
+    method public boolean removeOnShowModeChangedListener(@NonNull android.accessibilityservice.AccessibilityService.SoftKeyboardController.OnShowModeChangedListener);
+    method public boolean setShowMode(int);
+    method public boolean switchToInputMethod(@NonNull String);
+  }
+
+  public static interface AccessibilityService.SoftKeyboardController.OnShowModeChangedListener {
+    method public void onShowModeChanged(@NonNull android.accessibilityservice.AccessibilityService.SoftKeyboardController, int);
+  }
+
+  public static interface AccessibilityService.TakeScreenshotCallback {
+    method public void onFailure(int);
+    method public void onSuccess(@NonNull android.accessibilityservice.AccessibilityService.ScreenshotResult);
+  }
+
+  public class AccessibilityServiceInfo implements android.os.Parcelable {
+    ctor public AccessibilityServiceInfo();
+    method public static String capabilityToString(int);
+    method public int describeContents();
+    method public static String feedbackTypeToString(int);
+    method public static String flagToString(int);
+    method @Deprecated public boolean getCanRetrieveWindowContent();
+    method public int getCapabilities();
+    method @Deprecated public String getDescription();
+    method public String getId();
+    method public int getInteractiveUiTimeoutMillis();
+    method public int getNonInteractiveUiTimeoutMillis();
+    method public android.content.pm.ResolveInfo getResolveInfo();
+    method public String getSettingsActivityName();
+    method public String loadDescription(android.content.pm.PackageManager);
+    method public CharSequence loadSummary(android.content.pm.PackageManager);
+    method public void setInteractiveUiTimeoutMillis(@IntRange(from=0) int);
+    method public void setNonInteractiveUiTimeoutMillis(@IntRange(from=0) int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int CAPABILITY_CAN_CONTROL_MAGNIFICATION = 16; // 0x10
+    field public static final int CAPABILITY_CAN_PERFORM_GESTURES = 32; // 0x20
+    field @Deprecated public static final int CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 4; // 0x4
+    field public static final int CAPABILITY_CAN_REQUEST_FILTER_KEY_EVENTS = 8; // 0x8
+    field public static final int CAPABILITY_CAN_REQUEST_FINGERPRINT_GESTURES = 64; // 0x40
+    field public static final int CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION = 2; // 0x2
+    field public static final int CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT = 1; // 0x1
+    field public static final int CAPABILITY_CAN_TAKE_SCREENSHOT = 128; // 0x80
+    field @NonNull public static final android.os.Parcelable.Creator<android.accessibilityservice.AccessibilityServiceInfo> CREATOR;
+    field public static final int DEFAULT = 1; // 0x1
+    field public static final int FEEDBACK_ALL_MASK = -1; // 0xffffffff
+    field public static final int FEEDBACK_AUDIBLE = 4; // 0x4
+    field public static final int FEEDBACK_BRAILLE = 32; // 0x20
+    field public static final int FEEDBACK_GENERIC = 16; // 0x10
+    field public static final int FEEDBACK_HAPTIC = 2; // 0x2
+    field public static final int FEEDBACK_SPOKEN = 1; // 0x1
+    field public static final int FEEDBACK_VISUAL = 8; // 0x8
+    field public static final int FLAG_ENABLE_ACCESSIBILITY_VOLUME = 128; // 0x80
+    field public static final int FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 2; // 0x2
+    field public static final int FLAG_REPORT_VIEW_IDS = 16; // 0x10
+    field public static final int FLAG_REQUEST_ACCESSIBILITY_BUTTON = 256; // 0x100
+    field @Deprecated public static final int FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 8; // 0x8
+    field public static final int FLAG_REQUEST_FILTER_KEY_EVENTS = 32; // 0x20
+    field public static final int FLAG_REQUEST_FINGERPRINT_GESTURES = 512; // 0x200
+    field public static final int FLAG_REQUEST_MULTI_FINGER_GESTURES = 4096; // 0x1000
+    field public static final int FLAG_REQUEST_SHORTCUT_WARNING_DIALOG_SPOKEN_FEEDBACK = 1024; // 0x400
+    field public static final int FLAG_REQUEST_TOUCH_EXPLORATION_MODE = 4; // 0x4
+    field public static final int FLAG_RETRIEVE_INTERACTIVE_WINDOWS = 64; // 0x40
+    field public static final int FLAG_SERVICE_HANDLES_DOUBLE_TAP = 2048; // 0x800
+    field public int eventTypes;
+    field public int feedbackType;
+    field public int flags;
+    field public long notificationTimeout;
+    field public String[] packageNames;
+  }
+
+  public final class FingerprintGestureController {
+    method public boolean isGestureDetectionAvailable();
+    method public void registerFingerprintGestureCallback(@NonNull android.accessibilityservice.FingerprintGestureController.FingerprintGestureCallback, @Nullable android.os.Handler);
+    method public void unregisterFingerprintGestureCallback(android.accessibilityservice.FingerprintGestureController.FingerprintGestureCallback);
+    field public static final int FINGERPRINT_GESTURE_SWIPE_DOWN = 8; // 0x8
+    field public static final int FINGERPRINT_GESTURE_SWIPE_LEFT = 2; // 0x2
+    field public static final int FINGERPRINT_GESTURE_SWIPE_RIGHT = 1; // 0x1
+    field public static final int FINGERPRINT_GESTURE_SWIPE_UP = 4; // 0x4
+  }
+
+  public abstract static class FingerprintGestureController.FingerprintGestureCallback {
+    ctor public FingerprintGestureController.FingerprintGestureCallback();
+    method public void onGestureDetected(int);
+    method public void onGestureDetectionAvailabilityChanged(boolean);
+  }
+
+  public final class GestureDescription {
+    method public int getDisplayId();
+    method public static long getMaxGestureDuration();
+    method public static int getMaxStrokeCount();
+    method public android.accessibilityservice.GestureDescription.StrokeDescription getStroke(@IntRange(from=0) int);
+    method public int getStrokeCount();
+  }
+
+  public static class GestureDescription.Builder {
+    ctor public GestureDescription.Builder();
+    method public android.accessibilityservice.GestureDescription.Builder addStroke(@NonNull android.accessibilityservice.GestureDescription.StrokeDescription);
+    method public android.accessibilityservice.GestureDescription build();
+    method @NonNull public android.accessibilityservice.GestureDescription.Builder setDisplayId(int);
+  }
+
+  public static class GestureDescription.StrokeDescription {
+    ctor public GestureDescription.StrokeDescription(@NonNull android.graphics.Path, @IntRange(from=0) long, @IntRange(from=0) long);
+    ctor public GestureDescription.StrokeDescription(@NonNull android.graphics.Path, @IntRange(from=0) long, @IntRange(from=0) long, boolean);
+    method public android.accessibilityservice.GestureDescription.StrokeDescription continueStroke(android.graphics.Path, long, long, boolean);
+    method public long getDuration();
+    method public android.graphics.Path getPath();
+    method public long getStartTime();
+    method public boolean willContinue();
+  }
+
+}
+
+package android.accounts {
+
+  public abstract class AbstractAccountAuthenticator {
+    ctor public AbstractAccountAuthenticator(android.content.Context);
+    method public abstract android.os.Bundle addAccount(android.accounts.AccountAuthenticatorResponse, String, String, String[], android.os.Bundle) throws android.accounts.NetworkErrorException;
+    method public android.os.Bundle addAccountFromCredentials(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, android.os.Bundle) throws android.accounts.NetworkErrorException;
+    method public abstract android.os.Bundle confirmCredentials(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, android.os.Bundle) throws android.accounts.NetworkErrorException;
+    method public abstract android.os.Bundle editProperties(android.accounts.AccountAuthenticatorResponse, String);
+    method public android.os.Bundle finishSession(android.accounts.AccountAuthenticatorResponse, String, android.os.Bundle) throws android.accounts.NetworkErrorException;
+    method public android.os.Bundle getAccountCredentialsForCloning(android.accounts.AccountAuthenticatorResponse, android.accounts.Account) throws android.accounts.NetworkErrorException;
+    method public android.os.Bundle getAccountRemovalAllowed(android.accounts.AccountAuthenticatorResponse, android.accounts.Account) throws android.accounts.NetworkErrorException;
+    method public abstract android.os.Bundle getAuthToken(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, String, android.os.Bundle) throws android.accounts.NetworkErrorException;
+    method public abstract String getAuthTokenLabel(String);
+    method public final android.os.IBinder getIBinder();
+    method public abstract android.os.Bundle hasFeatures(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, String[]) throws android.accounts.NetworkErrorException;
+    method public android.os.Bundle isCredentialsUpdateSuggested(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, String) throws android.accounts.NetworkErrorException;
+    method public android.os.Bundle startAddAccountSession(android.accounts.AccountAuthenticatorResponse, String, String, String[], android.os.Bundle) throws android.accounts.NetworkErrorException;
+    method public android.os.Bundle startUpdateCredentialsSession(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, String, android.os.Bundle) throws android.accounts.NetworkErrorException;
+    method public abstract android.os.Bundle updateCredentials(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, String, android.os.Bundle) throws android.accounts.NetworkErrorException;
+    field public static final String KEY_CUSTOM_TOKEN_EXPIRY = "android.accounts.expiry";
+  }
+
+  public class Account implements android.os.Parcelable {
+    ctor public Account(String, String);
+    ctor public Account(android.os.Parcel);
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.accounts.Account> CREATOR;
+    field public final String name;
+    field public final String type;
+  }
+
+  @Deprecated public class AccountAuthenticatorActivity extends android.app.Activity {
+    ctor @Deprecated public AccountAuthenticatorActivity();
+    method @Deprecated public final void setAccountAuthenticatorResult(android.os.Bundle);
+  }
+
+  public class AccountAuthenticatorResponse implements android.os.Parcelable {
+    ctor public AccountAuthenticatorResponse(android.os.Parcel);
+    method public int describeContents();
+    method public void onError(int, String);
+    method public void onRequestContinued();
+    method public void onResult(android.os.Bundle);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.accounts.AccountAuthenticatorResponse> CREATOR;
+  }
+
+  public class AccountManager {
+    method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> addAccount(String, String, String[], android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public boolean addAccountExplicitly(android.accounts.Account, String, android.os.Bundle);
+    method public boolean addAccountExplicitly(android.accounts.Account, String, android.os.Bundle, java.util.Map<java.lang.String,java.lang.Integer>);
+    method @RequiresPermission(value="android.permission.GET_ACCOUNTS", apis="..22") public void addOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener, android.os.Handler, boolean);
+    method public void addOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener, android.os.Handler, boolean, String[]);
+    method @RequiresPermission(value="android.permission.USE_CREDENTIALS", apis="..22") public String blockingGetAuthToken(android.accounts.Account, String, boolean) throws android.accounts.AuthenticatorException, java.io.IOException, android.accounts.OperationCanceledException;
+    method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public void clearPassword(android.accounts.Account);
+    method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> confirmCredentials(android.accounts.Account, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+    method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> editProperties(String, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+    method public android.accounts.AccountManagerFuture<android.os.Bundle> finishSession(android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+    method public static android.accounts.AccountManager get(android.content.Context);
+    method public int getAccountVisibility(android.accounts.Account, String);
+    method @NonNull @RequiresPermission(value="android.permission.GET_ACCOUNTS", apis="..22") public android.accounts.Account[] getAccounts();
+    method public java.util.Map<android.accounts.Account,java.lang.Integer> getAccountsAndVisibilityForPackage(String, String);
+    method @NonNull @RequiresPermission(value="android.permission.GET_ACCOUNTS", apis="..22") public android.accounts.Account[] getAccountsByType(String);
+    method public android.accounts.AccountManagerFuture<android.accounts.Account[]> getAccountsByTypeAndFeatures(String, String[], android.accounts.AccountManagerCallback<android.accounts.Account[]>, android.os.Handler);
+    method @NonNull public android.accounts.Account[] getAccountsByTypeForPackage(String, String);
+    method @RequiresPermission(value="android.permission.USE_CREDENTIALS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> getAuthToken(android.accounts.Account, String, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+    method @Deprecated @RequiresPermission(value="android.permission.USE_CREDENTIALS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> getAuthToken(android.accounts.Account, String, boolean, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+    method @RequiresPermission(value="android.permission.USE_CREDENTIALS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> getAuthToken(android.accounts.Account, String, android.os.Bundle, boolean, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+    method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> getAuthTokenByFeatures(String, String, String[], android.app.Activity, android.os.Bundle, android.os.Bundle, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+    method public android.accounts.AuthenticatorDescription[] getAuthenticatorTypes();
+    method public java.util.Map<java.lang.String,java.lang.Integer> getPackagesAndVisibilityForAccount(android.accounts.Account);
+    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public String getPassword(android.accounts.Account);
+    method public String getPreviousName(android.accounts.Account);
+    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public String getUserData(android.accounts.Account, String);
+    method public android.accounts.AccountManagerFuture<java.lang.Boolean> hasFeatures(android.accounts.Account, String[], android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler);
+    method @RequiresPermission(anyOf={"android.permission.MANAGE_ACCOUNTS", "android.permission.USE_CREDENTIALS"}, apis="..22") public void invalidateAuthToken(String, String);
+    method public android.accounts.AccountManagerFuture<java.lang.Boolean> isCredentialsUpdateSuggested(android.accounts.Account, String, android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler);
+    method @Deprecated public static android.content.Intent newChooseAccountIntent(android.accounts.Account, java.util.ArrayList<android.accounts.Account>, String[], boolean, String, String, String[], android.os.Bundle);
+    method public static android.content.Intent newChooseAccountIntent(android.accounts.Account, java.util.List<android.accounts.Account>, String[], String, String, String[], android.os.Bundle);
+    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public boolean notifyAccountAuthenticated(android.accounts.Account);
+    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public String peekAuthToken(android.accounts.Account, String);
+    method @Deprecated @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<java.lang.Boolean> removeAccount(android.accounts.Account, android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler);
+    method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> removeAccount(android.accounts.Account, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public boolean removeAccountExplicitly(android.accounts.Account);
+    method public void removeOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener);
+    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.accounts.Account> renameAccount(android.accounts.Account, @Size(min=1) String, android.accounts.AccountManagerCallback<android.accounts.Account>, android.os.Handler);
+    method public boolean setAccountVisibility(android.accounts.Account, String, int);
+    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public void setAuthToken(android.accounts.Account, String, String);
+    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public void setPassword(android.accounts.Account, String);
+    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public void setUserData(android.accounts.Account, String, String);
+    method public android.accounts.AccountManagerFuture<android.os.Bundle> startAddAccountSession(String, String, String[], android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+    method public android.accounts.AccountManagerFuture<android.os.Bundle> startUpdateCredentialsSession(android.accounts.Account, String, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+    method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> updateCredentials(android.accounts.Account, String, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+    field public static final String ACTION_ACCOUNT_REMOVED = "android.accounts.action.ACCOUNT_REMOVED";
+    field public static final String ACTION_AUTHENTICATOR_INTENT = "android.accounts.AccountAuthenticator";
+    field public static final String AUTHENTICATOR_ATTRIBUTES_NAME = "account-authenticator";
+    field public static final String AUTHENTICATOR_META_DATA_NAME = "android.accounts.AccountAuthenticator";
+    field public static final int ERROR_CODE_BAD_ARGUMENTS = 7; // 0x7
+    field public static final int ERROR_CODE_BAD_AUTHENTICATION = 9; // 0x9
+    field public static final int ERROR_CODE_BAD_REQUEST = 8; // 0x8
+    field public static final int ERROR_CODE_CANCELED = 4; // 0x4
+    field public static final int ERROR_CODE_INVALID_RESPONSE = 5; // 0x5
+    field public static final int ERROR_CODE_NETWORK_ERROR = 3; // 0x3
+    field public static final int ERROR_CODE_REMOTE_EXCEPTION = 1; // 0x1
+    field public static final int ERROR_CODE_UNSUPPORTED_OPERATION = 6; // 0x6
+    field public static final String KEY_ACCOUNTS = "accounts";
+    field public static final String KEY_ACCOUNT_AUTHENTICATOR_RESPONSE = "accountAuthenticatorResponse";
+    field public static final String KEY_ACCOUNT_MANAGER_RESPONSE = "accountManagerResponse";
+    field public static final String KEY_ACCOUNT_NAME = "authAccount";
+    field public static final String KEY_ACCOUNT_SESSION_BUNDLE = "accountSessionBundle";
+    field public static final String KEY_ACCOUNT_STATUS_TOKEN = "accountStatusToken";
+    field public static final String KEY_ACCOUNT_TYPE = "accountType";
+    field public static final String KEY_ANDROID_PACKAGE_NAME = "androidPackageName";
+    field public static final String KEY_AUTHENTICATOR_TYPES = "authenticator_types";
+    field public static final String KEY_AUTHTOKEN = "authtoken";
+    field public static final String KEY_AUTH_FAILED_MESSAGE = "authFailedMessage";
+    field public static final String KEY_AUTH_TOKEN_LABEL = "authTokenLabelKey";
+    field public static final String KEY_BOOLEAN_RESULT = "booleanResult";
+    field public static final String KEY_CALLER_PID = "callerPid";
+    field public static final String KEY_CALLER_UID = "callerUid";
+    field public static final String KEY_ERROR_CODE = "errorCode";
+    field public static final String KEY_ERROR_MESSAGE = "errorMessage";
+    field public static final String KEY_INTENT = "intent";
+    field public static final String KEY_LAST_AUTHENTICATED_TIME = "lastAuthenticatedTime";
+    field public static final String KEY_PASSWORD = "password";
+    field public static final String KEY_USERDATA = "userdata";
+    field @Deprecated public static final String LOGIN_ACCOUNTS_CHANGED_ACTION = "android.accounts.LOGIN_ACCOUNTS_CHANGED";
+    field public static final String PACKAGE_NAME_KEY_LEGACY_NOT_VISIBLE = "android:accounts:key_legacy_not_visible";
+    field public static final String PACKAGE_NAME_KEY_LEGACY_VISIBLE = "android:accounts:key_legacy_visible";
+    field public static final int VISIBILITY_NOT_VISIBLE = 3; // 0x3
+    field public static final int VISIBILITY_UNDEFINED = 0; // 0x0
+    field public static final int VISIBILITY_USER_MANAGED_NOT_VISIBLE = 4; // 0x4
+    field public static final int VISIBILITY_USER_MANAGED_VISIBLE = 2; // 0x2
+    field public static final int VISIBILITY_VISIBLE = 1; // 0x1
+  }
+
+  public interface AccountManagerCallback<V> {
+    method public void run(android.accounts.AccountManagerFuture<V>);
+  }
+
+  public interface AccountManagerFuture<V> {
+    method public boolean cancel(boolean);
+    method public V getResult() throws android.accounts.AuthenticatorException, java.io.IOException, android.accounts.OperationCanceledException;
+    method public V getResult(long, java.util.concurrent.TimeUnit) throws android.accounts.AuthenticatorException, java.io.IOException, android.accounts.OperationCanceledException;
+    method public boolean isCancelled();
+    method public boolean isDone();
+  }
+
+  public class AccountsException extends java.lang.Exception {
+    ctor public AccountsException();
+    ctor public AccountsException(String);
+    ctor public AccountsException(String, Throwable);
+    ctor public AccountsException(Throwable);
+  }
+
+  public class AuthenticatorDescription implements android.os.Parcelable {
+    ctor public AuthenticatorDescription(String, String, int, int, int, int, boolean);
+    ctor public AuthenticatorDescription(String, String, int, int, int, int);
+    method public int describeContents();
+    method public static android.accounts.AuthenticatorDescription newKey(String);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.accounts.AuthenticatorDescription> CREATOR;
+    field public final int accountPreferencesId;
+    field public final boolean customTokens;
+    field public final int iconId;
+    field public final int labelId;
+    field public final String packageName;
+    field public final int smallIconId;
+    field public final String type;
+  }
+
+  public class AuthenticatorException extends android.accounts.AccountsException {
+    ctor public AuthenticatorException();
+    ctor public AuthenticatorException(String);
+    ctor public AuthenticatorException(String, Throwable);
+    ctor public AuthenticatorException(Throwable);
+  }
+
+  public class NetworkErrorException extends android.accounts.AccountsException {
+    ctor public NetworkErrorException();
+    ctor public NetworkErrorException(String);
+    ctor public NetworkErrorException(String, Throwable);
+    ctor public NetworkErrorException(Throwable);
+  }
+
+  public interface OnAccountsUpdateListener {
+    method public void onAccountsUpdated(android.accounts.Account[]);
+  }
+
+  public class OperationCanceledException extends android.accounts.AccountsException {
+    ctor public OperationCanceledException();
+    ctor public OperationCanceledException(String);
+    ctor public OperationCanceledException(String, Throwable);
+    ctor public OperationCanceledException(Throwable);
+  }
+
+}
+
+package android.animation {
+
+  public abstract class Animator implements java.lang.Cloneable {
+    ctor public Animator();
+    method public void addListener(android.animation.Animator.AnimatorListener);
+    method public void addPauseListener(android.animation.Animator.AnimatorPauseListener);
+    method public void cancel();
+    method public android.animation.Animator clone();
+    method public void end();
+    method public abstract long getDuration();
+    method public android.animation.TimeInterpolator getInterpolator();
+    method public java.util.ArrayList<android.animation.Animator.AnimatorListener> getListeners();
+    method public abstract long getStartDelay();
+    method public long getTotalDuration();
+    method public boolean isPaused();
+    method public abstract boolean isRunning();
+    method public boolean isStarted();
+    method public void pause();
+    method public void removeAllListeners();
+    method public void removeListener(android.animation.Animator.AnimatorListener);
+    method public void removePauseListener(android.animation.Animator.AnimatorPauseListener);
+    method public void resume();
+    method public abstract android.animation.Animator setDuration(long);
+    method public abstract void setInterpolator(android.animation.TimeInterpolator);
+    method public abstract void setStartDelay(long);
+    method public void setTarget(@Nullable Object);
+    method public void setupEndValues();
+    method public void setupStartValues();
+    method public void start();
+    field public static final long DURATION_INFINITE = -1L; // 0xffffffffffffffffL
+  }
+
+  public static interface Animator.AnimatorListener {
+    method public void onAnimationCancel(android.animation.Animator);
+    method public default void onAnimationEnd(android.animation.Animator, boolean);
+    method public void onAnimationEnd(android.animation.Animator);
+    method public void onAnimationRepeat(android.animation.Animator);
+    method public default void onAnimationStart(android.animation.Animator, boolean);
+    method public void onAnimationStart(android.animation.Animator);
+  }
+
+  public static interface Animator.AnimatorPauseListener {
+    method public void onAnimationPause(android.animation.Animator);
+    method public void onAnimationResume(android.animation.Animator);
+  }
+
+  public class AnimatorInflater {
+    ctor public AnimatorInflater();
+    method public static android.animation.Animator loadAnimator(android.content.Context, @AnimatorRes int) throws android.content.res.Resources.NotFoundException;
+    method public static android.animation.StateListAnimator loadStateListAnimator(android.content.Context, int) throws android.content.res.Resources.NotFoundException;
+  }
+
+  public abstract class AnimatorListenerAdapter implements android.animation.Animator.AnimatorListener android.animation.Animator.AnimatorPauseListener {
+    ctor public AnimatorListenerAdapter();
+    method public void onAnimationCancel(android.animation.Animator);
+    method public void onAnimationEnd(android.animation.Animator);
+    method public void onAnimationPause(android.animation.Animator);
+    method public void onAnimationRepeat(android.animation.Animator);
+    method public void onAnimationResume(android.animation.Animator);
+    method public void onAnimationStart(android.animation.Animator);
+  }
+
+  public final class AnimatorSet extends android.animation.Animator {
+    ctor public AnimatorSet();
+    method public android.animation.AnimatorSet clone();
+    method public java.util.ArrayList<android.animation.Animator> getChildAnimations();
+    method public long getCurrentPlayTime();
+    method public long getDuration();
+    method public long getStartDelay();
+    method public boolean isRunning();
+    method public android.animation.AnimatorSet.Builder play(android.animation.Animator);
+    method public void playSequentially(android.animation.Animator...);
+    method public void playSequentially(java.util.List<android.animation.Animator>);
+    method public void playTogether(android.animation.Animator...);
+    method public void playTogether(java.util.Collection<android.animation.Animator>);
+    method public void reverse();
+    method public void setCurrentPlayTime(long);
+    method public android.animation.AnimatorSet setDuration(long);
+    method public void setInterpolator(android.animation.TimeInterpolator);
+    method public void setStartDelay(long);
+  }
+
+  public class AnimatorSet.Builder {
+    method public android.animation.AnimatorSet.Builder after(android.animation.Animator);
+    method public android.animation.AnimatorSet.Builder after(long);
+    method public android.animation.AnimatorSet.Builder before(android.animation.Animator);
+    method public android.animation.AnimatorSet.Builder with(android.animation.Animator);
+  }
+
+  public class ArgbEvaluator implements android.animation.TypeEvaluator {
+    ctor public ArgbEvaluator();
+    method public Object evaluate(float, Object, Object);
+  }
+
+  public abstract class BidirectionalTypeConverter<T, V> extends android.animation.TypeConverter<T,V> {
+    ctor public BidirectionalTypeConverter(Class<T>, Class<V>);
+    method public abstract T convertBack(V);
+    method public android.animation.BidirectionalTypeConverter<V,T> invert();
+  }
+
+  public class FloatArrayEvaluator implements android.animation.TypeEvaluator<float[]> {
+    ctor public FloatArrayEvaluator();
+    ctor public FloatArrayEvaluator(float[]);
+    method public float[] evaluate(float, float[], float[]);
+  }
+
+  public class FloatEvaluator implements android.animation.TypeEvaluator<java.lang.Number> {
+    ctor public FloatEvaluator();
+    method public Float evaluate(float, Number, Number);
+  }
+
+  public class IntArrayEvaluator implements android.animation.TypeEvaluator<int[]> {
+    ctor public IntArrayEvaluator();
+    ctor public IntArrayEvaluator(int[]);
+    method public int[] evaluate(float, int[], int[]);
+  }
+
+  public class IntEvaluator implements android.animation.TypeEvaluator<java.lang.Integer> {
+    ctor public IntEvaluator();
+    method public Integer evaluate(float, Integer, Integer);
+  }
+
+  public abstract class Keyframe implements java.lang.Cloneable {
+    ctor public Keyframe();
+    method public abstract android.animation.Keyframe clone();
+    method public float getFraction();
+    method public android.animation.TimeInterpolator getInterpolator();
+    method public Class getType();
+    method public abstract Object getValue();
+    method public boolean hasValue();
+    method public static android.animation.Keyframe ofFloat(float, float);
+    method public static android.animation.Keyframe ofFloat(float);
+    method public static android.animation.Keyframe ofInt(float, int);
+    method public static android.animation.Keyframe ofInt(float);
+    method public static android.animation.Keyframe ofObject(float, Object);
+    method public static android.animation.Keyframe ofObject(float);
+    method public void setFraction(float);
+    method public void setInterpolator(android.animation.TimeInterpolator);
+    method public abstract void setValue(Object);
+  }
+
+  public class LayoutTransition {
+    ctor public LayoutTransition();
+    method public void addChild(android.view.ViewGroup, android.view.View);
+    method public void addTransitionListener(android.animation.LayoutTransition.TransitionListener);
+    method public void disableTransitionType(int);
+    method public void enableTransitionType(int);
+    method public android.animation.Animator getAnimator(int);
+    method public long getDuration(int);
+    method public android.animation.TimeInterpolator getInterpolator(int);
+    method public long getStagger(int);
+    method public long getStartDelay(int);
+    method public java.util.List<android.animation.LayoutTransition.TransitionListener> getTransitionListeners();
+    method @Deprecated public void hideChild(android.view.ViewGroup, android.view.View);
+    method public void hideChild(android.view.ViewGroup, android.view.View, int);
+    method public boolean isChangingLayout();
+    method public boolean isRunning();
+    method public boolean isTransitionTypeEnabled(int);
+    method public void removeChild(android.view.ViewGroup, android.view.View);
+    method public void removeTransitionListener(android.animation.LayoutTransition.TransitionListener);
+    method public void setAnimateParentHierarchy(boolean);
+    method public void setAnimator(int, android.animation.Animator);
+    method public void setDuration(long);
+    method public void setDuration(int, long);
+    method public void setInterpolator(int, android.animation.TimeInterpolator);
+    method public void setStagger(int, long);
+    method public void setStartDelay(int, long);
+    method @Deprecated public void showChild(android.view.ViewGroup, android.view.View);
+    method public void showChild(android.view.ViewGroup, android.view.View, int);
+    field public static final int APPEARING = 2; // 0x2
+    field public static final int CHANGE_APPEARING = 0; // 0x0
+    field public static final int CHANGE_DISAPPEARING = 1; // 0x1
+    field public static final int CHANGING = 4; // 0x4
+    field public static final int DISAPPEARING = 3; // 0x3
+  }
+
+  public static interface LayoutTransition.TransitionListener {
+    method public void endTransition(android.animation.LayoutTransition, android.view.ViewGroup, android.view.View, int);
+    method public void startTransition(android.animation.LayoutTransition, android.view.ViewGroup, android.view.View, int);
+  }
+
+  public final class ObjectAnimator extends android.animation.ValueAnimator {
+    ctor public ObjectAnimator();
+    method public android.animation.ObjectAnimator clone();
+    method @Nullable public String getPropertyName();
+    method @Nullable public Object getTarget();
+    method public static android.animation.ObjectAnimator ofArgb(Object, String, int...);
+    method public static <T> android.animation.ObjectAnimator ofArgb(T, android.util.Property<T,java.lang.Integer>, int...);
+    method public static android.animation.ObjectAnimator ofFloat(Object, String, float...);
+    method public static android.animation.ObjectAnimator ofFloat(Object, String, String, android.graphics.Path);
+    method public static <T> android.animation.ObjectAnimator ofFloat(T, android.util.Property<T,java.lang.Float>, float...);
+    method public static <T> android.animation.ObjectAnimator ofFloat(T, android.util.Property<T,java.lang.Float>, android.util.Property<T,java.lang.Float>, android.graphics.Path);
+    method public static android.animation.ObjectAnimator ofInt(Object, String, int...);
+    method public static android.animation.ObjectAnimator ofInt(Object, String, String, android.graphics.Path);
+    method public static <T> android.animation.ObjectAnimator ofInt(T, android.util.Property<T,java.lang.Integer>, int...);
+    method public static <T> android.animation.ObjectAnimator ofInt(T, android.util.Property<T,java.lang.Integer>, android.util.Property<T,java.lang.Integer>, android.graphics.Path);
+    method public static android.animation.ObjectAnimator ofMultiFloat(Object, String, float[][]);
+    method public static android.animation.ObjectAnimator ofMultiFloat(Object, String, android.graphics.Path);
+    method @java.lang.SafeVarargs public static <T> android.animation.ObjectAnimator ofMultiFloat(Object, String, android.animation.TypeConverter<T,float[]>, android.animation.TypeEvaluator<T>, T...);
+    method public static android.animation.ObjectAnimator ofMultiInt(Object, String, int[][]);
+    method public static android.animation.ObjectAnimator ofMultiInt(Object, String, android.graphics.Path);
+    method @java.lang.SafeVarargs public static <T> android.animation.ObjectAnimator ofMultiInt(Object, String, android.animation.TypeConverter<T,int[]>, android.animation.TypeEvaluator<T>, T...);
+    method public static android.animation.ObjectAnimator ofObject(Object, String, android.animation.TypeEvaluator, java.lang.Object...);
+    method @NonNull public static android.animation.ObjectAnimator ofObject(Object, String, @Nullable android.animation.TypeConverter<android.graphics.PointF,?>, android.graphics.Path);
+    method @NonNull @java.lang.SafeVarargs public static <T, V> android.animation.ObjectAnimator ofObject(T, android.util.Property<T,V>, android.animation.TypeEvaluator<V>, V...);
+    method @NonNull @java.lang.SafeVarargs public static <T, V, P> android.animation.ObjectAnimator ofObject(T, android.util.Property<T,P>, android.animation.TypeConverter<V,P>, android.animation.TypeEvaluator<V>, V...);
+    method @NonNull public static <T, V> android.animation.ObjectAnimator ofObject(T, @NonNull android.util.Property<T,V>, @Nullable android.animation.TypeConverter<android.graphics.PointF,V>, android.graphics.Path);
+    method @NonNull public static android.animation.ObjectAnimator ofPropertyValuesHolder(Object, android.animation.PropertyValuesHolder...);
+    method public void setAutoCancel(boolean);
+    method @NonNull public android.animation.ObjectAnimator setDuration(long);
+    method public void setProperty(@NonNull android.util.Property);
+    method public void setPropertyName(@NonNull String);
+  }
+
+  public class PointFEvaluator implements android.animation.TypeEvaluator<android.graphics.PointF> {
+    ctor public PointFEvaluator();
+    ctor public PointFEvaluator(android.graphics.PointF);
+    method public android.graphics.PointF evaluate(float, android.graphics.PointF, android.graphics.PointF);
+  }
+
+  public class PropertyValuesHolder implements java.lang.Cloneable {
+    method public android.animation.PropertyValuesHolder clone();
+    method public String getPropertyName();
+    method public static android.animation.PropertyValuesHolder ofFloat(String, float...);
+    method public static android.animation.PropertyValuesHolder ofFloat(android.util.Property<?,java.lang.Float>, float...);
+    method public static android.animation.PropertyValuesHolder ofInt(String, int...);
+    method public static android.animation.PropertyValuesHolder ofInt(android.util.Property<?,java.lang.Integer>, int...);
+    method public static android.animation.PropertyValuesHolder ofKeyframe(String, android.animation.Keyframe...);
+    method public static android.animation.PropertyValuesHolder ofKeyframe(android.util.Property, android.animation.Keyframe...);
+    method public static android.animation.PropertyValuesHolder ofMultiFloat(String, float[][]);
+    method public static android.animation.PropertyValuesHolder ofMultiFloat(String, android.graphics.Path);
+    method @java.lang.SafeVarargs public static <V> android.animation.PropertyValuesHolder ofMultiFloat(String, android.animation.TypeConverter<V,float[]>, android.animation.TypeEvaluator<V>, V...);
+    method public static <T> android.animation.PropertyValuesHolder ofMultiFloat(String, android.animation.TypeConverter<T,float[]>, android.animation.TypeEvaluator<T>, android.animation.Keyframe...);
+    method public static android.animation.PropertyValuesHolder ofMultiInt(String, int[][]);
+    method public static android.animation.PropertyValuesHolder ofMultiInt(String, android.graphics.Path);
+    method @java.lang.SafeVarargs public static <V> android.animation.PropertyValuesHolder ofMultiInt(String, android.animation.TypeConverter<V,int[]>, android.animation.TypeEvaluator<V>, V...);
+    method public static <T> android.animation.PropertyValuesHolder ofMultiInt(String, android.animation.TypeConverter<T,int[]>, android.animation.TypeEvaluator<T>, android.animation.Keyframe...);
+    method public static android.animation.PropertyValuesHolder ofObject(String, android.animation.TypeEvaluator, java.lang.Object...);
+    method public static android.animation.PropertyValuesHolder ofObject(String, android.animation.TypeConverter<android.graphics.PointF,?>, android.graphics.Path);
+    method @java.lang.SafeVarargs public static <V> android.animation.PropertyValuesHolder ofObject(android.util.Property, android.animation.TypeEvaluator<V>, V...);
+    method @java.lang.SafeVarargs public static <T, V> android.animation.PropertyValuesHolder ofObject(android.util.Property<?,V>, android.animation.TypeConverter<T,V>, android.animation.TypeEvaluator<T>, T...);
+    method public static <V> android.animation.PropertyValuesHolder ofObject(android.util.Property<?,V>, android.animation.TypeConverter<android.graphics.PointF,V>, android.graphics.Path);
+    method public void setConverter(android.animation.TypeConverter);
+    method public void setEvaluator(android.animation.TypeEvaluator);
+    method public void setFloatValues(float...);
+    method public void setIntValues(int...);
+    method public void setKeyframes(android.animation.Keyframe...);
+    method public void setObjectValues(java.lang.Object...);
+    method public void setProperty(android.util.Property);
+    method public void setPropertyName(String);
+  }
+
+  public class RectEvaluator implements android.animation.TypeEvaluator<android.graphics.Rect> {
+    ctor public RectEvaluator();
+    ctor public RectEvaluator(android.graphics.Rect);
+    method public android.graphics.Rect evaluate(float, android.graphics.Rect, android.graphics.Rect);
+  }
+
+  public class StateListAnimator implements java.lang.Cloneable {
+    ctor public StateListAnimator();
+    method public void addState(int[], android.animation.Animator);
+    method public android.animation.StateListAnimator clone();
+    method public void jumpToCurrentState();
+  }
+
+  public class TimeAnimator extends android.animation.ValueAnimator {
+    ctor public TimeAnimator();
+    method public void setTimeListener(android.animation.TimeAnimator.TimeListener);
+  }
+
+  public static interface TimeAnimator.TimeListener {
+    method public void onTimeUpdate(android.animation.TimeAnimator, long, long);
+  }
+
+  public interface TimeInterpolator {
+    method public float getInterpolation(float);
+  }
+
+  public abstract class TypeConverter<T, V> {
+    ctor public TypeConverter(Class<T>, Class<V>);
+    method public abstract V convert(T);
+  }
+
+  public interface TypeEvaluator<T> {
+    method public T evaluate(float, T, T);
+  }
+
+  public class ValueAnimator extends android.animation.Animator {
+    ctor public ValueAnimator();
+    method public void addUpdateListener(android.animation.ValueAnimator.AnimatorUpdateListener);
+    method public static boolean areAnimatorsEnabled();
+    method public android.animation.ValueAnimator clone();
+    method public float getAnimatedFraction();
+    method public Object getAnimatedValue();
+    method public Object getAnimatedValue(String);
+    method public long getCurrentPlayTime();
+    method public long getDuration();
+    method public static long getFrameDelay();
+    method public int getRepeatCount();
+    method public int getRepeatMode();
+    method public long getStartDelay();
+    method public android.animation.PropertyValuesHolder[] getValues();
+    method public boolean isRunning();
+    method public static android.animation.ValueAnimator ofArgb(int...);
+    method public static android.animation.ValueAnimator ofFloat(float...);
+    method public static android.animation.ValueAnimator ofInt(int...);
+    method public static android.animation.ValueAnimator ofObject(android.animation.TypeEvaluator, java.lang.Object...);
+    method public static android.animation.ValueAnimator ofPropertyValuesHolder(android.animation.PropertyValuesHolder...);
+    method public void removeAllUpdateListeners();
+    method public void removeUpdateListener(android.animation.ValueAnimator.AnimatorUpdateListener);
+    method public void reverse();
+    method public void setCurrentFraction(float);
+    method public void setCurrentPlayTime(long);
+    method public android.animation.ValueAnimator setDuration(long);
+    method public void setEvaluator(android.animation.TypeEvaluator);
+    method public void setFloatValues(float...);
+    method public static void setFrameDelay(long);
+    method public void setIntValues(int...);
+    method public void setInterpolator(android.animation.TimeInterpolator);
+    method public void setObjectValues(java.lang.Object...);
+    method public void setRepeatCount(int);
+    method public void setRepeatMode(int);
+    method public void setStartDelay(long);
+    method public void setValues(android.animation.PropertyValuesHolder...);
+    field public static final int INFINITE = -1; // 0xffffffff
+    field public static final int RESTART = 1; // 0x1
+    field public static final int REVERSE = 2; // 0x2
+  }
+
+  public static interface ValueAnimator.AnimatorUpdateListener {
+    method public void onAnimationUpdate(android.animation.ValueAnimator);
+  }
+
+}
+
+package android.annotation {
+
+  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE, java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.LOCAL_VARIABLE}) public @interface SuppressLint {
+    method public abstract String[] value();
+  }
+
+  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.FIELD}) public @interface TargetApi {
+    method public abstract int value();
+  }
+
+}
+
+package android.app {
+
+  public abstract class ActionBar {
+    ctor public ActionBar();
+    method public abstract void addOnMenuVisibilityListener(android.app.ActionBar.OnMenuVisibilityListener);
+    method @Deprecated public abstract void addTab(android.app.ActionBar.Tab);
+    method @Deprecated public abstract void addTab(android.app.ActionBar.Tab, boolean);
+    method @Deprecated public abstract void addTab(android.app.ActionBar.Tab, int);
+    method @Deprecated public abstract void addTab(android.app.ActionBar.Tab, int, boolean);
+    method public abstract android.view.View getCustomView();
+    method public abstract int getDisplayOptions();
+    method public float getElevation();
+    method public abstract int getHeight();
+    method public int getHideOffset();
+    method @Deprecated public abstract int getNavigationItemCount();
+    method @Deprecated public abstract int getNavigationMode();
+    method @Deprecated public abstract int getSelectedNavigationIndex();
+    method @Deprecated public abstract android.app.ActionBar.Tab getSelectedTab();
+    method public abstract CharSequence getSubtitle();
+    method @Deprecated public abstract android.app.ActionBar.Tab getTabAt(int);
+    method @Deprecated public abstract int getTabCount();
+    method public android.content.Context getThemedContext();
+    method public abstract CharSequence getTitle();
+    method public abstract void hide();
+    method public boolean isHideOnContentScrollEnabled();
+    method public abstract boolean isShowing();
+    method @Deprecated public abstract android.app.ActionBar.Tab newTab();
+    method @Deprecated public abstract void removeAllTabs();
+    method public abstract void removeOnMenuVisibilityListener(android.app.ActionBar.OnMenuVisibilityListener);
+    method @Deprecated public abstract void removeTab(android.app.ActionBar.Tab);
+    method @Deprecated public abstract void removeTabAt(int);
+    method @Deprecated public abstract void selectTab(android.app.ActionBar.Tab);
+    method public abstract void setBackgroundDrawable(@Nullable android.graphics.drawable.Drawable);
+    method public abstract void setCustomView(android.view.View);
+    method public abstract void setCustomView(android.view.View, android.app.ActionBar.LayoutParams);
+    method public abstract void setCustomView(@LayoutRes int);
+    method public abstract void setDisplayHomeAsUpEnabled(boolean);
+    method public abstract void setDisplayOptions(int);
+    method public abstract void setDisplayOptions(int, int);
+    method public abstract void setDisplayShowCustomEnabled(boolean);
+    method public abstract void setDisplayShowHomeEnabled(boolean);
+    method public abstract void setDisplayShowTitleEnabled(boolean);
+    method public abstract void setDisplayUseLogoEnabled(boolean);
+    method public void setElevation(float);
+    method public void setHideOffset(int);
+    method public void setHideOnContentScrollEnabled(boolean);
+    method public void setHomeActionContentDescription(CharSequence);
+    method public void setHomeActionContentDescription(@StringRes int);
+    method public void setHomeAsUpIndicator(android.graphics.drawable.Drawable);
+    method public void setHomeAsUpIndicator(@DrawableRes int);
+    method public void setHomeButtonEnabled(boolean);
+    method public abstract void setIcon(@DrawableRes int);
+    method public abstract void setIcon(android.graphics.drawable.Drawable);
+    method @Deprecated public abstract void setListNavigationCallbacks(android.widget.SpinnerAdapter, android.app.ActionBar.OnNavigationListener);
+    method public abstract void setLogo(@DrawableRes int);
+    method public abstract void setLogo(android.graphics.drawable.Drawable);
+    method @Deprecated public abstract void setNavigationMode(int);
+    method @Deprecated public abstract void setSelectedNavigationItem(int);
+    method public void setSplitBackgroundDrawable(android.graphics.drawable.Drawable);
+    method public void setStackedBackgroundDrawable(android.graphics.drawable.Drawable);
+    method public abstract void setSubtitle(CharSequence);
+    method public abstract void setSubtitle(@StringRes int);
+    method public abstract void setTitle(CharSequence);
+    method public abstract void setTitle(@StringRes int);
+    method public abstract void show();
+    field public static final int DISPLAY_HOME_AS_UP = 4; // 0x4
+    field public static final int DISPLAY_SHOW_CUSTOM = 16; // 0x10
+    field public static final int DISPLAY_SHOW_HOME = 2; // 0x2
+    field public static final int DISPLAY_SHOW_TITLE = 8; // 0x8
+    field public static final int DISPLAY_USE_LOGO = 1; // 0x1
+    field @Deprecated public static final int NAVIGATION_MODE_LIST = 1; // 0x1
+    field @Deprecated public static final int NAVIGATION_MODE_STANDARD = 0; // 0x0
+    field @Deprecated public static final int NAVIGATION_MODE_TABS = 2; // 0x2
+  }
+
+  public static class ActionBar.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
+    ctor public ActionBar.LayoutParams(@NonNull android.content.Context, android.util.AttributeSet);
+    ctor public ActionBar.LayoutParams(int, int);
+    ctor public ActionBar.LayoutParams(int, int, int);
+    ctor public ActionBar.LayoutParams(int);
+    ctor public ActionBar.LayoutParams(android.app.ActionBar.LayoutParams);
+    ctor public ActionBar.LayoutParams(android.view.ViewGroup.LayoutParams);
+    field public int gravity;
+  }
+
+  public static interface ActionBar.OnMenuVisibilityListener {
+    method public void onMenuVisibilityChanged(boolean);
+  }
+
+  @Deprecated public static interface ActionBar.OnNavigationListener {
+    method @Deprecated public boolean onNavigationItemSelected(int, long);
+  }
+
+  @Deprecated public abstract static class ActionBar.Tab {
+    ctor @Deprecated public ActionBar.Tab();
+    method @Deprecated public abstract CharSequence getContentDescription();
+    method @Deprecated public abstract android.view.View getCustomView();
+    method @Deprecated public abstract android.graphics.drawable.Drawable getIcon();
+    method @Deprecated public abstract int getPosition();
+    method @Deprecated public abstract Object getTag();
+    method @Deprecated public abstract CharSequence getText();
+    method @Deprecated public abstract void select();
+    method @Deprecated public abstract android.app.ActionBar.Tab setContentDescription(@StringRes int);
+    method @Deprecated public abstract android.app.ActionBar.Tab setContentDescription(CharSequence);
+    method @Deprecated public abstract android.app.ActionBar.Tab setCustomView(android.view.View);
+    method @Deprecated public abstract android.app.ActionBar.Tab setCustomView(@LayoutRes int);
+    method @Deprecated public abstract android.app.ActionBar.Tab setIcon(android.graphics.drawable.Drawable);
+    method @Deprecated public abstract android.app.ActionBar.Tab setIcon(@DrawableRes int);
+    method @Deprecated public abstract android.app.ActionBar.Tab setTabListener(android.app.ActionBar.TabListener);
+    method @Deprecated public abstract android.app.ActionBar.Tab setTag(Object);
+    method @Deprecated public abstract android.app.ActionBar.Tab setText(CharSequence);
+    method @Deprecated public abstract android.app.ActionBar.Tab setText(@StringRes int);
+    field @Deprecated public static final int INVALID_POSITION = -1; // 0xffffffff
+  }
+
+  @Deprecated public static interface ActionBar.TabListener {
+    method @Deprecated public void onTabReselected(android.app.ActionBar.Tab, android.app.FragmentTransaction);
+    method @Deprecated public void onTabSelected(android.app.ActionBar.Tab, android.app.FragmentTransaction);
+    method @Deprecated public void onTabUnselected(android.app.ActionBar.Tab, android.app.FragmentTransaction);
+  }
+
+  public class Activity extends android.view.ContextThemeWrapper implements android.content.ComponentCallbacks2 android.view.KeyEvent.Callback android.view.LayoutInflater.Factory2 android.view.View.OnCreateContextMenuListener android.view.Window.Callback {
+    ctor public Activity();
+    method public void addContentView(android.view.View, android.view.ViewGroup.LayoutParams);
+    method public void closeContextMenu();
+    method public void closeOptionsMenu();
+    method public android.app.PendingIntent createPendingResult(int, @NonNull android.content.Intent, int);
+    method @Deprecated public final void dismissDialog(int);
+    method public final void dismissKeyboardShortcutsHelper();
+    method public boolean dispatchGenericMotionEvent(android.view.MotionEvent);
+    method public boolean dispatchKeyEvent(android.view.KeyEvent);
+    method public boolean dispatchKeyShortcutEvent(android.view.KeyEvent);
+    method public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
+    method public boolean dispatchTouchEvent(android.view.MotionEvent);
+    method public boolean dispatchTrackballEvent(android.view.MotionEvent);
+    method public void dump(@NonNull String, @Nullable java.io.FileDescriptor, @NonNull java.io.PrintWriter, @Nullable String[]);
+    method @Deprecated public void enterPictureInPictureMode();
+    method public boolean enterPictureInPictureMode(@NonNull android.app.PictureInPictureParams);
+    method public <T extends android.view.View> T findViewById(@IdRes int);
+    method public void finish();
+    method public void finishActivity(int);
+    method @Deprecated public void finishActivityFromChild(@NonNull android.app.Activity, int);
+    method public void finishAffinity();
+    method public void finishAfterTransition();
+    method public void finishAndRemoveTask();
+    method @Deprecated public void finishFromChild(android.app.Activity);
+    method @Nullable public android.app.ActionBar getActionBar();
+    method public final android.app.Application getApplication();
+    method @Nullable public android.content.ComponentName getCallingActivity();
+    method @Nullable public String getCallingPackage();
+    method public int getChangingConfigurations();
+    method public android.content.ComponentName getComponentName();
+    method public android.transition.Scene getContentScene();
+    method public android.transition.TransitionManager getContentTransitionManager();
+    method @Nullable public android.view.View getCurrentFocus();
+    method @Deprecated public android.app.FragmentManager getFragmentManager();
+    method public android.content.Intent getIntent();
+    method @Nullable public Object getLastNonConfigurationInstance();
+    method @NonNull public android.view.LayoutInflater getLayoutInflater();
+    method @Deprecated public android.app.LoaderManager getLoaderManager();
+    method @NonNull public String getLocalClassName();
+    method public int getMaxNumPictureInPictureActions();
+    method public final android.media.session.MediaController getMediaController();
+    method @NonNull public android.view.MenuInflater getMenuInflater();
+    method public final android.app.Activity getParent();
+    method @Nullable public android.content.Intent getParentActivityIntent();
+    method public android.content.SharedPreferences getPreferences(int);
+    method @Nullable public android.net.Uri getReferrer();
+    method public int getRequestedOrientation();
+    method public final android.view.SearchEvent getSearchEvent();
+    method public int getTaskId();
+    method public final CharSequence getTitle();
+    method public final int getTitleColor();
+    method public android.app.VoiceInteractor getVoiceInteractor();
+    method public final int getVolumeControlStream();
+    method public android.view.Window getWindow();
+    method public android.view.WindowManager getWindowManager();
+    method public boolean hasWindowFocus();
+    method public void invalidateOptionsMenu();
+    method public boolean isActivityTransitionRunning();
+    method public boolean isChangingConfigurations();
+    method public final boolean isChild();
+    method public boolean isDestroyed();
+    method public boolean isFinishing();
+    method public boolean isImmersive();
+    method public boolean isInMultiWindowMode();
+    method public boolean isInPictureInPictureMode();
+    method public boolean isLocalVoiceInteractionSupported();
+    method public boolean isTaskRoot();
+    method public boolean isVoiceInteraction();
+    method public boolean isVoiceInteractionRoot();
+    method @Deprecated public final android.database.Cursor managedQuery(android.net.Uri, String[], String, String[], String);
+    method public boolean moveTaskToBack(boolean);
+    method public boolean navigateUpTo(android.content.Intent);
+    method @Deprecated public boolean navigateUpToFromChild(android.app.Activity, android.content.Intent);
+    method @CallSuper public void onActionModeFinished(android.view.ActionMode);
+    method @CallSuper public void onActionModeStarted(android.view.ActionMode);
+    method public void onActivityReenter(int, android.content.Intent);
+    method protected void onActivityResult(int, int, android.content.Intent);
+    method @Deprecated public void onAttachFragment(android.app.Fragment);
+    method public void onAttachedToWindow();
+    method public void onBackPressed();
+    method protected void onChildTitleChanged(android.app.Activity, CharSequence);
+    method public void onConfigurationChanged(@NonNull android.content.res.Configuration);
+    method public void onContentChanged();
+    method public boolean onContextItemSelected(@NonNull android.view.MenuItem);
+    method public void onContextMenuClosed(@NonNull android.view.Menu);
+    method @CallSuper @MainThread protected void onCreate(@Nullable android.os.Bundle);
+    method public void onCreate(@Nullable android.os.Bundle, @Nullable android.os.PersistableBundle);
+    method public void onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo);
+    method @Nullable public CharSequence onCreateDescription();
+    method @Deprecated protected android.app.Dialog onCreateDialog(int);
+    method @Deprecated @Nullable protected android.app.Dialog onCreateDialog(int, android.os.Bundle);
+    method public void onCreateNavigateUpTaskStack(android.app.TaskStackBuilder);
+    method public boolean onCreateOptionsMenu(android.view.Menu);
+    method public boolean onCreatePanelMenu(int, @NonNull android.view.Menu);
+    method @Nullable public android.view.View onCreatePanelView(int);
+    method @Deprecated public boolean onCreateThumbnail(android.graphics.Bitmap, android.graphics.Canvas);
+    method @Nullable public android.view.View onCreateView(@NonNull String, @NonNull android.content.Context, @NonNull android.util.AttributeSet);
+    method @Nullable public android.view.View onCreateView(@Nullable android.view.View, @NonNull String, @NonNull android.content.Context, @NonNull android.util.AttributeSet);
+    method @CallSuper protected void onDestroy();
+    method public void onDetachedFromWindow();
+    method public void onEnterAnimationComplete();
+    method public boolean onGenericMotionEvent(android.view.MotionEvent);
+    method public void onGetDirectActions(@NonNull android.os.CancellationSignal, @NonNull java.util.function.Consumer<java.util.List<android.app.DirectAction>>);
+    method public boolean onKeyDown(int, android.view.KeyEvent);
+    method public boolean onKeyLongPress(int, android.view.KeyEvent);
+    method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
+    method public boolean onKeyShortcut(int, android.view.KeyEvent);
+    method public boolean onKeyUp(int, android.view.KeyEvent);
+    method public void onLocalVoiceInteractionStarted();
+    method public void onLocalVoiceInteractionStopped();
+    method public void onLowMemory();
+    method public boolean onMenuItemSelected(int, @NonNull android.view.MenuItem);
+    method public boolean onMenuOpened(int, @NonNull android.view.Menu);
+    method public void onMultiWindowModeChanged(boolean, android.content.res.Configuration);
+    method @Deprecated public void onMultiWindowModeChanged(boolean);
+    method public boolean onNavigateUp();
+    method @Deprecated public boolean onNavigateUpFromChild(android.app.Activity);
+    method protected void onNewIntent(android.content.Intent);
+    method public boolean onOptionsItemSelected(@NonNull android.view.MenuItem);
+    method public void onOptionsMenuClosed(android.view.Menu);
+    method public void onPanelClosed(int, @NonNull android.view.Menu);
+    method @CallSuper protected void onPause();
+    method public void onPerformDirectAction(@NonNull String, @NonNull android.os.Bundle, @NonNull android.os.CancellationSignal, @NonNull java.util.function.Consumer<android.os.Bundle>);
+    method public void onPictureInPictureModeChanged(boolean, android.content.res.Configuration);
+    method @Deprecated public void onPictureInPictureModeChanged(boolean);
+    method public boolean onPictureInPictureRequested();
+    method @CallSuper protected void onPostCreate(@Nullable android.os.Bundle);
+    method public void onPostCreate(@Nullable android.os.Bundle, @Nullable android.os.PersistableBundle);
+    method @CallSuper protected void onPostResume();
+    method @Deprecated protected void onPrepareDialog(int, android.app.Dialog);
+    method @Deprecated protected void onPrepareDialog(int, android.app.Dialog, android.os.Bundle);
+    method public void onPrepareNavigateUpTaskStack(android.app.TaskStackBuilder);
+    method public boolean onPrepareOptionsMenu(android.view.Menu);
+    method public boolean onPreparePanel(int, @Nullable android.view.View, @NonNull android.view.Menu);
+    method public void onProvideAssistContent(android.app.assist.AssistContent);
+    method public void onProvideAssistData(android.os.Bundle);
+    method public android.net.Uri onProvideReferrer();
+    method public void onRequestPermissionsResult(int, @NonNull String[], @NonNull int[]);
+    method @CallSuper protected void onRestart();
+    method protected void onRestoreInstanceState(@NonNull android.os.Bundle);
+    method public void onRestoreInstanceState(@Nullable android.os.Bundle, @Nullable android.os.PersistableBundle);
+    method @CallSuper protected void onResume();
+    method public Object onRetainNonConfigurationInstance();
+    method protected void onSaveInstanceState(@NonNull android.os.Bundle);
+    method public void onSaveInstanceState(@NonNull android.os.Bundle, @NonNull android.os.PersistableBundle);
+    method public boolean onSearchRequested(@Nullable android.view.SearchEvent);
+    method public boolean onSearchRequested();
+    method @CallSuper protected void onStart();
+    method @Deprecated public void onStateNotSaved();
+    method @CallSuper protected void onStop();
+    method protected void onTitleChanged(CharSequence, int);
+    method public void onTopResumedActivityChanged(boolean);
+    method public boolean onTouchEvent(android.view.MotionEvent);
+    method public boolean onTrackballEvent(android.view.MotionEvent);
+    method public void onTrimMemory(int);
+    method public void onUserInteraction();
+    method protected void onUserLeaveHint();
+    method @Deprecated @CallSuper public void onVisibleBehindCanceled();
+    method public void onWindowAttributesChanged(android.view.WindowManager.LayoutParams);
+    method public void onWindowFocusChanged(boolean);
+    method @Nullable public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback);
+    method @Nullable public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback, int);
+    method public void openContextMenu(android.view.View);
+    method public void openOptionsMenu();
+    method public void overridePendingTransition(int, int);
+    method public void postponeEnterTransition();
+    method public void recreate();
+    method public void registerActivityLifecycleCallbacks(@NonNull android.app.Application.ActivityLifecycleCallbacks);
+    method public void registerForContextMenu(android.view.View);
+    method public boolean releaseInstance();
+    method @Deprecated public final void removeDialog(int);
+    method public void reportFullyDrawn();
+    method public android.view.DragAndDropPermissions requestDragAndDropPermissions(android.view.DragEvent);
+    method public final void requestPermissions(@NonNull String[], int);
+    method public final void requestShowKeyboardShortcuts();
+    method @Deprecated public boolean requestVisibleBehind(boolean);
+    method public final boolean requestWindowFeature(int);
+    method @NonNull public final <T extends android.view.View> T requireViewById(@IdRes int);
+    method public final void runOnUiThread(Runnable);
+    method public void setActionBar(@Nullable android.widget.Toolbar);
+    method public void setContentTransitionManager(android.transition.TransitionManager);
+    method public void setContentView(@LayoutRes int);
+    method public void setContentView(android.view.View);
+    method public void setContentView(android.view.View, android.view.ViewGroup.LayoutParams);
+    method public final void setDefaultKeyMode(int);
+    method public void setEnterSharedElementCallback(android.app.SharedElementCallback);
+    method public void setExitSharedElementCallback(android.app.SharedElementCallback);
+    method public final void setFeatureDrawable(int, android.graphics.drawable.Drawable);
+    method public final void setFeatureDrawableAlpha(int, int);
+    method public final void setFeatureDrawableResource(int, @DrawableRes int);
+    method public final void setFeatureDrawableUri(int, android.net.Uri);
+    method public void setFinishOnTouchOutside(boolean);
+    method public void setImmersive(boolean);
+    method public void setInheritShowWhenLocked(boolean);
+    method public void setIntent(android.content.Intent);
+    method public void setLocusContext(@Nullable android.content.LocusId, @Nullable android.os.Bundle);
+    method public final void setMediaController(android.media.session.MediaController);
+    method public void setPictureInPictureParams(@NonNull android.app.PictureInPictureParams);
+    method @Deprecated public final void setProgress(int);
+    method @Deprecated public final void setProgressBarIndeterminate(boolean);
+    method @Deprecated public final void setProgressBarIndeterminateVisibility(boolean);
+    method @Deprecated public final void setProgressBarVisibility(boolean);
+    method public void setRequestedOrientation(int);
+    method public final void setResult(int);
+    method public final void setResult(int, android.content.Intent);
+    method @Deprecated public final void setSecondaryProgress(int);
+    method public void setShowWhenLocked(boolean);
+    method public void setTaskDescription(android.app.ActivityManager.TaskDescription);
+    method public void setTitle(CharSequence);
+    method public void setTitle(int);
+    method @Deprecated public void setTitleColor(int);
+    method public boolean setTranslucent(boolean);
+    method public void setTurnScreenOn(boolean);
+    method public void setVisible(boolean);
+    method public final void setVolumeControlStream(int);
+    method public void setVrModeEnabled(boolean, @NonNull android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
+    method public boolean shouldShowRequestPermissionRationale(@NonNull String);
+    method public boolean shouldUpRecreateTask(android.content.Intent);
+    method public boolean showAssist(android.os.Bundle);
+    method @Deprecated public final void showDialog(int);
+    method @Deprecated public final boolean showDialog(int, android.os.Bundle);
+    method public void showLockTaskEscapeMessage();
+    method @Nullable public android.view.ActionMode startActionMode(android.view.ActionMode.Callback);
+    method @Nullable public android.view.ActionMode startActionMode(android.view.ActionMode.Callback, int);
+    method public void startActivityForResult(@RequiresPermission android.content.Intent, int);
+    method public void startActivityForResult(@RequiresPermission android.content.Intent, int, @Nullable android.os.Bundle);
+    method @Deprecated public void startActivityFromChild(@NonNull android.app.Activity, @RequiresPermission android.content.Intent, int);
+    method @Deprecated public void startActivityFromChild(@NonNull android.app.Activity, @RequiresPermission android.content.Intent, int, @Nullable android.os.Bundle);
+    method @Deprecated public void startActivityFromFragment(@NonNull android.app.Fragment, @RequiresPermission android.content.Intent, int);
+    method @Deprecated public void startActivityFromFragment(@NonNull android.app.Fragment, @RequiresPermission android.content.Intent, int, @Nullable android.os.Bundle);
+    method public boolean startActivityIfNeeded(@NonNull @RequiresPermission android.content.Intent, int);
+    method public boolean startActivityIfNeeded(@NonNull @RequiresPermission android.content.Intent, int, @Nullable android.os.Bundle);
+    method public void startIntentSenderForResult(android.content.IntentSender, int, @Nullable android.content.Intent, int, int, int) throws android.content.IntentSender.SendIntentException;
+    method public void startIntentSenderForResult(android.content.IntentSender, int, @Nullable android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
+    method @Deprecated public void startIntentSenderFromChild(android.app.Activity, android.content.IntentSender, int, android.content.Intent, int, int, int) throws android.content.IntentSender.SendIntentException;
+    method @Deprecated public void startIntentSenderFromChild(android.app.Activity, android.content.IntentSender, int, android.content.Intent, int, int, int, @Nullable android.os.Bundle) throws android.content.IntentSender.SendIntentException;
+    method public void startLocalVoiceInteraction(android.os.Bundle);
+    method public void startLockTask();
+    method @Deprecated public void startManagingCursor(android.database.Cursor);
+    method public boolean startNextMatchingActivity(@NonNull @RequiresPermission android.content.Intent);
+    method public boolean startNextMatchingActivity(@NonNull @RequiresPermission android.content.Intent, @Nullable android.os.Bundle);
+    method public void startPostponedEnterTransition();
+    method public void startSearch(@Nullable String, boolean, @Nullable android.os.Bundle, boolean);
+    method public void stopLocalVoiceInteraction();
+    method public void stopLockTask();
+    method @Deprecated public void stopManagingCursor(android.database.Cursor);
+    method public void takeKeyEvents(boolean);
+    method public void triggerSearch(String, @Nullable android.os.Bundle);
+    method public void unregisterActivityLifecycleCallbacks(@NonNull android.app.Application.ActivityLifecycleCallbacks);
+    method public void unregisterForContextMenu(android.view.View);
+    field public static final int DEFAULT_KEYS_DIALER = 1; // 0x1
+    field public static final int DEFAULT_KEYS_DISABLE = 0; // 0x0
+    field public static final int DEFAULT_KEYS_SEARCH_GLOBAL = 4; // 0x4
+    field public static final int DEFAULT_KEYS_SEARCH_LOCAL = 3; // 0x3
+    field public static final int DEFAULT_KEYS_SHORTCUT = 2; // 0x2
+    field protected static final int[] FOCUSED_STATE_SET;
+    field public static final int RESULT_CANCELED = 0; // 0x0
+    field public static final int RESULT_FIRST_USER = 1; // 0x1
+    field public static final int RESULT_OK = -1; // 0xffffffff
+  }
+
+  @Deprecated public class ActivityGroup extends android.app.Activity {
+    ctor @Deprecated public ActivityGroup();
+    ctor @Deprecated public ActivityGroup(boolean);
+    method @Deprecated public android.app.Activity getCurrentActivity();
+    method @Deprecated public final android.app.LocalActivityManager getLocalActivityManager();
+  }
+
+  public class ActivityManager {
+    method public int addAppTask(@NonNull android.app.Activity, @NonNull android.content.Intent, @Nullable android.app.ActivityManager.TaskDescription, @NonNull android.graphics.Bitmap);
+    method public void appNotResponding(@NonNull String);
+    method public boolean clearApplicationUserData();
+    method public void clearWatchHeapLimit();
+    method @RequiresPermission(android.Manifest.permission.DUMP) public void dumpPackageState(java.io.FileDescriptor, String);
+    method public android.util.Size getAppTaskThumbnailSize();
+    method public java.util.List<android.app.ActivityManager.AppTask> getAppTasks();
+    method public android.content.pm.ConfigurationInfo getDeviceConfigurationInfo();
+    method @NonNull public java.util.List<android.app.ApplicationExitInfo> getHistoricalProcessExitReasons(@Nullable String, @IntRange(from=0) int, @IntRange(from=0) int);
+    method public int getLargeMemoryClass();
+    method public int getLauncherLargeIconDensity();
+    method public int getLauncherLargeIconSize();
+    method public int getLockTaskModeState();
+    method public int getMemoryClass();
+    method public void getMemoryInfo(android.app.ActivityManager.MemoryInfo);
+    method public static void getMyMemoryState(android.app.ActivityManager.RunningAppProcessInfo);
+    method public android.os.Debug.MemoryInfo[] getProcessMemoryInfo(int[]);
+    method public java.util.List<android.app.ActivityManager.ProcessErrorStateInfo> getProcessesInErrorState();
+    method @Deprecated public java.util.List<android.app.ActivityManager.RecentTaskInfo> getRecentTasks(int, int) throws java.lang.SecurityException;
+    method public java.util.List<android.app.ActivityManager.RunningAppProcessInfo> getRunningAppProcesses();
+    method public android.app.PendingIntent getRunningServiceControlPanel(android.content.ComponentName) throws java.lang.SecurityException;
+    method @Deprecated public java.util.List<android.app.ActivityManager.RunningServiceInfo> getRunningServices(int) throws java.lang.SecurityException;
+    method @Deprecated public java.util.List<android.app.ActivityManager.RunningTaskInfo> getRunningTasks(int) throws java.lang.SecurityException;
+    method public boolean isActivityStartAllowedOnDisplay(@NonNull android.content.Context, int, @NonNull android.content.Intent);
+    method public boolean isBackgroundRestricted();
+    method @Deprecated public boolean isInLockTaskMode();
+    method public static boolean isLowMemoryKillReportSupported();
+    method public boolean isLowRamDevice();
+    method @Deprecated public static boolean isRunningInTestHarness();
+    method public static boolean isRunningInUserTestHarness();
+    method public static boolean isUserAMonkey();
+    method @RequiresPermission(android.Manifest.permission.KILL_BACKGROUND_PROCESSES) public void killBackgroundProcesses(String);
+    method @RequiresPermission(android.Manifest.permission.REORDER_TASKS) public void moveTaskToFront(int, int);
+    method @RequiresPermission(android.Manifest.permission.REORDER_TASKS) public void moveTaskToFront(int, int, android.os.Bundle);
+    method @Deprecated public void restartPackage(String);
+    method public void setProcessStateSummary(@Nullable byte[]);
+    method public static void setVrThread(int);
+    method public void setWatchHeapLimit(long);
+    field public static final String ACTION_REPORT_HEAP_LIMIT = "android.app.action.REPORT_HEAP_LIMIT";
+    field public static final int LOCK_TASK_MODE_LOCKED = 1; // 0x1
+    field public static final int LOCK_TASK_MODE_NONE = 0; // 0x0
+    field public static final int LOCK_TASK_MODE_PINNED = 2; // 0x2
+    field public static final String META_HOME_ALTERNATE = "android.app.home.alternate";
+    field public static final int MOVE_TASK_NO_USER_ACTION = 2; // 0x2
+    field public static final int MOVE_TASK_WITH_HOME = 1; // 0x1
+    field public static final int RECENT_IGNORE_UNAVAILABLE = 2; // 0x2
+    field public static final int RECENT_WITH_EXCLUDED = 1; // 0x1
+  }
+
+  public static class ActivityManager.AppTask {
+    method public void finishAndRemoveTask();
+    method public android.app.ActivityManager.RecentTaskInfo getTaskInfo();
+    method public void moveToFront();
+    method public void setExcludeFromRecents(boolean);
+    method public void startActivity(android.content.Context, android.content.Intent, android.os.Bundle);
+  }
+
+  public static class ActivityManager.MemoryInfo implements android.os.Parcelable {
+    ctor public ActivityManager.MemoryInfo();
+    method public int describeContents();
+    method public void readFromParcel(android.os.Parcel);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.ActivityManager.MemoryInfo> CREATOR;
+    field public long availMem;
+    field public boolean lowMemory;
+    field public long threshold;
+    field public long totalMem;
+  }
+
+  public static class ActivityManager.ProcessErrorStateInfo implements android.os.Parcelable {
+    ctor public ActivityManager.ProcessErrorStateInfo();
+    method public int describeContents();
+    method public void readFromParcel(android.os.Parcel);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int CRASHED = 1; // 0x1
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.ActivityManager.ProcessErrorStateInfo> CREATOR;
+    field public static final int NOT_RESPONDING = 2; // 0x2
+    field public static final int NO_ERROR = 0; // 0x0
+    field public int condition;
+    field public byte[] crashData;
+    field public String longMsg;
+    field public int pid;
+    field public String processName;
+    field public String shortMsg;
+    field public String stackTrace;
+    field public String tag;
+    field public int uid;
+  }
+
+  public static class ActivityManager.RecentTaskInfo extends android.app.TaskInfo implements android.os.Parcelable {
+    ctor public ActivityManager.RecentTaskInfo();
+    method public int describeContents();
+    method public void readFromParcel(android.os.Parcel);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.ActivityManager.RecentTaskInfo> CREATOR;
+    field @Deprecated public int affiliatedTaskId;
+    field @Deprecated public CharSequence description;
+    field @Deprecated public int id;
+    field @Deprecated public int persistentId;
+  }
+
+  public static class ActivityManager.RunningAppProcessInfo implements android.os.Parcelable {
+    ctor public ActivityManager.RunningAppProcessInfo();
+    ctor public ActivityManager.RunningAppProcessInfo(String, int, String[]);
+    method public int describeContents();
+    method public void readFromParcel(android.os.Parcel);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.ActivityManager.RunningAppProcessInfo> CREATOR;
+    field @Deprecated public static final int IMPORTANCE_BACKGROUND = 400; // 0x190
+    field public static final int IMPORTANCE_CACHED = 400; // 0x190
+    field public static final int IMPORTANCE_CANT_SAVE_STATE = 350; // 0x15e
+    field @Deprecated public static final int IMPORTANCE_EMPTY = 500; // 0x1f4
+    field public static final int IMPORTANCE_FOREGROUND = 100; // 0x64
+    field public static final int IMPORTANCE_FOREGROUND_SERVICE = 125; // 0x7d
+    field public static final int IMPORTANCE_GONE = 1000; // 0x3e8
+    field public static final int IMPORTANCE_PERCEPTIBLE = 230; // 0xe6
+    field public static final int IMPORTANCE_PERCEPTIBLE_PRE_26 = 130; // 0x82
+    field public static final int IMPORTANCE_SERVICE = 300; // 0x12c
+    field public static final int IMPORTANCE_TOP_SLEEPING = 325; // 0x145
+    field @Deprecated public static final int IMPORTANCE_TOP_SLEEPING_PRE_28 = 150; // 0x96
+    field public static final int IMPORTANCE_VISIBLE = 200; // 0xc8
+    field public static final int REASON_PROVIDER_IN_USE = 1; // 0x1
+    field public static final int REASON_SERVICE_IN_USE = 2; // 0x2
+    field public static final int REASON_UNKNOWN = 0; // 0x0
+    field public int importance;
+    field public int importanceReasonCode;
+    field public android.content.ComponentName importanceReasonComponent;
+    field public int importanceReasonPid;
+    field public int lastTrimLevel;
+    field public int lru;
+    field public int pid;
+    field public String[] pkgList;
+    field public String processName;
+    field public int uid;
+  }
+
+  public static class ActivityManager.RunningServiceInfo implements android.os.Parcelable {
+    ctor public ActivityManager.RunningServiceInfo();
+    method public int describeContents();
+    method public void readFromParcel(android.os.Parcel);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.ActivityManager.RunningServiceInfo> CREATOR;
+    field public static final int FLAG_FOREGROUND = 2; // 0x2
+    field public static final int FLAG_PERSISTENT_PROCESS = 8; // 0x8
+    field public static final int FLAG_STARTED = 1; // 0x1
+    field public static final int FLAG_SYSTEM_PROCESS = 4; // 0x4
+    field public long activeSince;
+    field public int clientCount;
+    field public int clientLabel;
+    field public String clientPackage;
+    field public int crashCount;
+    field public int flags;
+    field public boolean foreground;
+    field public long lastActivityTime;
+    field public int pid;
+    field public String process;
+    field public long restarting;
+    field public android.content.ComponentName service;
+    field public boolean started;
+    field public int uid;
+  }
+
+  public static class ActivityManager.RunningTaskInfo extends android.app.TaskInfo implements android.os.Parcelable {
+    ctor public ActivityManager.RunningTaskInfo();
+    method public int describeContents();
+    method public void readFromParcel(android.os.Parcel);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.ActivityManager.RunningTaskInfo> CREATOR;
+    field @Deprecated public CharSequence description;
+    field @Deprecated public int id;
+    field @Deprecated public int numRunning;
+    field @Deprecated public android.graphics.Bitmap thumbnail;
+  }
+
+  public static class ActivityManager.TaskDescription implements android.os.Parcelable {
+    ctor public ActivityManager.TaskDescription(String, @DrawableRes int, int);
+    ctor public ActivityManager.TaskDescription(String, @DrawableRes int);
+    ctor public ActivityManager.TaskDescription(String);
+    ctor public ActivityManager.TaskDescription();
+    ctor @Deprecated public ActivityManager.TaskDescription(String, android.graphics.Bitmap, int);
+    ctor @Deprecated public ActivityManager.TaskDescription(String, android.graphics.Bitmap);
+    ctor public ActivityManager.TaskDescription(android.app.ActivityManager.TaskDescription);
+    method public int describeContents();
+    method @Deprecated public android.graphics.Bitmap getIcon();
+    method public String getLabel();
+    method public int getPrimaryColor();
+    method public void readFromParcel(android.os.Parcel);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.ActivityManager.TaskDescription> CREATOR;
+  }
+
+  public class ActivityOptions {
+    method @Nullable public android.graphics.Rect getLaunchBounds();
+    method public int getLaunchDisplayId();
+    method public boolean getLockTaskMode();
+    method public static android.app.ActivityOptions makeBasic();
+    method public static android.app.ActivityOptions makeClipRevealAnimation(android.view.View, int, int, int, int);
+    method public static android.app.ActivityOptions makeCustomAnimation(android.content.Context, int, int);
+    method public static android.app.ActivityOptions makeScaleUpAnimation(android.view.View, int, int, int, int);
+    method public static android.app.ActivityOptions makeSceneTransitionAnimation(android.app.Activity, android.view.View, String);
+    method @java.lang.SafeVarargs public static android.app.ActivityOptions makeSceneTransitionAnimation(android.app.Activity, android.util.Pair<android.view.View,java.lang.String>...);
+    method public static android.app.ActivityOptions makeTaskLaunchBehind();
+    method public static android.app.ActivityOptions makeThumbnailScaleUpAnimation(android.view.View, android.graphics.Bitmap, int, int);
+    method public void requestUsageTimeReport(android.app.PendingIntent);
+    method public android.app.ActivityOptions setAppVerificationBundle(android.os.Bundle);
+    method public android.app.ActivityOptions setLaunchBounds(@Nullable android.graphics.Rect);
+    method public android.app.ActivityOptions setLaunchDisplayId(int);
+    method public android.app.ActivityOptions setLockTaskEnabled(boolean);
+    method public android.os.Bundle toBundle();
+    method public void update(android.app.ActivityOptions);
+    field public static final String EXTRA_USAGE_TIME_REPORT = "android.activity.usage_time";
+    field public static final String EXTRA_USAGE_TIME_REPORT_PACKAGES = "android.usage_time_packages";
+  }
+
+  public class AlarmManager {
+    method public void cancel(android.app.PendingIntent);
+    method public void cancel(android.app.AlarmManager.OnAlarmListener);
+    method public android.app.AlarmManager.AlarmClockInfo getNextAlarmClock();
+    method public void set(int, long, android.app.PendingIntent);
+    method public void set(int, long, String, android.app.AlarmManager.OnAlarmListener, android.os.Handler);
+    method public void setAlarmClock(android.app.AlarmManager.AlarmClockInfo, android.app.PendingIntent);
+    method public void setAndAllowWhileIdle(int, long, android.app.PendingIntent);
+    method public void setExact(int, long, android.app.PendingIntent);
+    method public void setExact(int, long, String, android.app.AlarmManager.OnAlarmListener, android.os.Handler);
+    method public void setExactAndAllowWhileIdle(int, long, android.app.PendingIntent);
+    method public void setInexactRepeating(int, long, long, android.app.PendingIntent);
+    method public void setRepeating(int, long, long, android.app.PendingIntent);
+    method @RequiresPermission(android.Manifest.permission.SET_TIME) public void setTime(long);
+    method @RequiresPermission(android.Manifest.permission.SET_TIME_ZONE) public void setTimeZone(String);
+    method public void setWindow(int, long, long, android.app.PendingIntent);
+    method public void setWindow(int, long, long, String, android.app.AlarmManager.OnAlarmListener, android.os.Handler);
+    field public static final String ACTION_NEXT_ALARM_CLOCK_CHANGED = "android.app.action.NEXT_ALARM_CLOCK_CHANGED";
+    field public static final int ELAPSED_REALTIME = 3; // 0x3
+    field public static final int ELAPSED_REALTIME_WAKEUP = 2; // 0x2
+    field public static final long INTERVAL_DAY = 86400000L; // 0x5265c00L
+    field public static final long INTERVAL_FIFTEEN_MINUTES = 900000L; // 0xdbba0L
+    field public static final long INTERVAL_HALF_DAY = 43200000L; // 0x2932e00L
+    field public static final long INTERVAL_HALF_HOUR = 1800000L; // 0x1b7740L
+    field public static final long INTERVAL_HOUR = 3600000L; // 0x36ee80L
+    field public static final int RTC = 1; // 0x1
+    field public static final int RTC_WAKEUP = 0; // 0x0
+  }
+
+  public static final class AlarmManager.AlarmClockInfo implements android.os.Parcelable {
+    ctor public AlarmManager.AlarmClockInfo(long, android.app.PendingIntent);
+    method public int describeContents();
+    method public android.app.PendingIntent getShowIntent();
+    method public long getTriggerTime();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.AlarmManager.AlarmClockInfo> CREATOR;
+  }
+
+  public static interface AlarmManager.OnAlarmListener {
+    method public void onAlarm();
+  }
+
+  public class AlertDialog extends android.app.Dialog implements android.content.DialogInterface {
+    ctor protected AlertDialog(android.content.Context);
+    ctor protected AlertDialog(android.content.Context, boolean, android.content.DialogInterface.OnCancelListener);
+    ctor protected AlertDialog(android.content.Context, @StyleRes int);
+    method public android.widget.Button getButton(int);
+    method public android.widget.ListView getListView();
+    method public void setButton(int, CharSequence, android.os.Message);
+    method public void setButton(int, CharSequence, android.content.DialogInterface.OnClickListener);
+    method @Deprecated public void setButton(CharSequence, android.os.Message);
+    method @Deprecated public void setButton(CharSequence, android.content.DialogInterface.OnClickListener);
+    method @Deprecated public void setButton2(CharSequence, android.os.Message);
+    method @Deprecated public void setButton2(CharSequence, android.content.DialogInterface.OnClickListener);
+    method @Deprecated public void setButton3(CharSequence, android.os.Message);
+    method @Deprecated public void setButton3(CharSequence, android.content.DialogInterface.OnClickListener);
+    method public void setCustomTitle(android.view.View);
+    method public void setIcon(@DrawableRes int);
+    method public void setIcon(android.graphics.drawable.Drawable);
+    method public void setIconAttribute(@AttrRes int);
+    method public void setInverseBackgroundForced(boolean);
+    method public void setMessage(CharSequence);
+    method public void setView(android.view.View);
+    method public void setView(android.view.View, int, int, int, int);
+    field @Deprecated public static final int THEME_DEVICE_DEFAULT_DARK = 4; // 0x4
+    field @Deprecated public static final int THEME_DEVICE_DEFAULT_LIGHT = 5; // 0x5
+    field @Deprecated public static final int THEME_HOLO_DARK = 2; // 0x2
+    field @Deprecated public static final int THEME_HOLO_LIGHT = 3; // 0x3
+    field @Deprecated public static final int THEME_TRADITIONAL = 1; // 0x1
+  }
+
+  public static class AlertDialog.Builder {
+    ctor public AlertDialog.Builder(android.content.Context);
+    ctor public AlertDialog.Builder(android.content.Context, int);
+    method public android.app.AlertDialog create();
+    method public android.content.Context getContext();
+    method public android.app.AlertDialog.Builder setAdapter(android.widget.ListAdapter, android.content.DialogInterface.OnClickListener);
+    method public android.app.AlertDialog.Builder setCancelable(boolean);
+    method public android.app.AlertDialog.Builder setCursor(android.database.Cursor, android.content.DialogInterface.OnClickListener, String);
+    method public android.app.AlertDialog.Builder setCustomTitle(android.view.View);
+    method public android.app.AlertDialog.Builder setIcon(@DrawableRes int);
+    method public android.app.AlertDialog.Builder setIcon(android.graphics.drawable.Drawable);
+    method public android.app.AlertDialog.Builder setIconAttribute(@AttrRes int);
+    method @Deprecated public android.app.AlertDialog.Builder setInverseBackgroundForced(boolean);
+    method public android.app.AlertDialog.Builder setItems(@ArrayRes int, android.content.DialogInterface.OnClickListener);
+    method public android.app.AlertDialog.Builder setItems(CharSequence[], android.content.DialogInterface.OnClickListener);
+    method public android.app.AlertDialog.Builder setMessage(@StringRes int);
+    method public android.app.AlertDialog.Builder setMessage(CharSequence);
+    method public android.app.AlertDialog.Builder setMultiChoiceItems(@ArrayRes int, boolean[], android.content.DialogInterface.OnMultiChoiceClickListener);
+    method public android.app.AlertDialog.Builder setMultiChoiceItems(CharSequence[], boolean[], android.content.DialogInterface.OnMultiChoiceClickListener);
+    method public android.app.AlertDialog.Builder setMultiChoiceItems(android.database.Cursor, String, String, android.content.DialogInterface.OnMultiChoiceClickListener);
+    method public android.app.AlertDialog.Builder setNegativeButton(@StringRes int, android.content.DialogInterface.OnClickListener);
+    method public android.app.AlertDialog.Builder setNegativeButton(CharSequence, android.content.DialogInterface.OnClickListener);
+    method public android.app.AlertDialog.Builder setNeutralButton(@StringRes int, android.content.DialogInterface.OnClickListener);
+    method public android.app.AlertDialog.Builder setNeutralButton(CharSequence, android.content.DialogInterface.OnClickListener);
+    method public android.app.AlertDialog.Builder setOnCancelListener(android.content.DialogInterface.OnCancelListener);
+    method public android.app.AlertDialog.Builder setOnDismissListener(android.content.DialogInterface.OnDismissListener);
+    method public android.app.AlertDialog.Builder setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener);
+    method public android.app.AlertDialog.Builder setOnKeyListener(android.content.DialogInterface.OnKeyListener);
+    method public android.app.AlertDialog.Builder setPositiveButton(@StringRes int, android.content.DialogInterface.OnClickListener);
+    method public android.app.AlertDialog.Builder setPositiveButton(CharSequence, android.content.DialogInterface.OnClickListener);
+    method public android.app.AlertDialog.Builder setSingleChoiceItems(@ArrayRes int, int, android.content.DialogInterface.OnClickListener);
+    method public android.app.AlertDialog.Builder setSingleChoiceItems(android.database.Cursor, int, String, android.content.DialogInterface.OnClickListener);
+    method public android.app.AlertDialog.Builder setSingleChoiceItems(CharSequence[], int, android.content.DialogInterface.OnClickListener);
+    method public android.app.AlertDialog.Builder setSingleChoiceItems(android.widget.ListAdapter, int, android.content.DialogInterface.OnClickListener);
+    method public android.app.AlertDialog.Builder setTitle(@StringRes int);
+    method public android.app.AlertDialog.Builder setTitle(CharSequence);
+    method public android.app.AlertDialog.Builder setView(int);
+    method public android.app.AlertDialog.Builder setView(android.view.View);
+    method public android.app.AlertDialog show();
+  }
+
+  @Deprecated public class AliasActivity extends android.app.Activity {
+    ctor @Deprecated public AliasActivity();
+  }
+
+  public class AppComponentFactory {
+    ctor public AppComponentFactory();
+    method @NonNull public android.app.Activity instantiateActivity(@NonNull ClassLoader, @NonNull String, @Nullable android.content.Intent) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+    method @NonNull public android.app.Application instantiateApplication(@NonNull ClassLoader, @NonNull String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+    method @NonNull public ClassLoader instantiateClassLoader(@NonNull ClassLoader, @NonNull android.content.pm.ApplicationInfo);
+    method @NonNull public android.content.ContentProvider instantiateProvider(@NonNull ClassLoader, @NonNull String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+    method @NonNull public android.content.BroadcastReceiver instantiateReceiver(@NonNull ClassLoader, @NonNull String, @Nullable android.content.Intent) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+    method @NonNull public android.app.Service instantiateService(@NonNull ClassLoader, @NonNull String, @Nullable android.content.Intent) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+  }
+
+  public class AppOpsManager {
+    method @Deprecated public int checkOp(@NonNull String, int, @NonNull String);
+    method @Deprecated public int checkOpNoThrow(@NonNull String, int, @NonNull String);
+    method @Deprecated public void checkPackage(int, @NonNull String);
+    method @Deprecated public void finishOp(@NonNull String, int, @NonNull String);
+    method public void finishOp(@NonNull String, int, @NonNull String, @Nullable String);
+    method public boolean isOpActive(@NonNull String, int, @NonNull String);
+    method @Deprecated public int noteOp(@NonNull String, int, @NonNull String);
+    method public int noteOp(@NonNull String, int, @Nullable String, @Nullable String, @Nullable String);
+    method @Deprecated public int noteOpNoThrow(@NonNull String, int, @NonNull String);
+    method public int noteOpNoThrow(@NonNull String, int, @NonNull String, @Nullable String, @Nullable String);
+    method @Deprecated public int noteProxyOp(@NonNull String, @NonNull String);
+    method public int noteProxyOp(@NonNull String, @Nullable String, int, @Nullable String, @Nullable String);
+    method @Deprecated public int noteProxyOpNoThrow(@NonNull String, @NonNull String);
+    method @Deprecated public int noteProxyOpNoThrow(@NonNull String, @Nullable String, int);
+    method public int noteProxyOpNoThrow(@NonNull String, @Nullable String, int, @Nullable String, @Nullable String);
+    method @Nullable public static String permissionToOp(@NonNull String);
+    method public void setOnOpNotedCallback(@Nullable java.util.concurrent.Executor, @Nullable android.app.AppOpsManager.OnOpNotedCallback);
+    method @Deprecated public int startOp(@NonNull String, int, @NonNull String);
+    method public int startOp(@NonNull String, int, @Nullable String, @Nullable String, @Nullable String);
+    method @Deprecated public int startOpNoThrow(@NonNull String, int, @NonNull String);
+    method public int startOpNoThrow(@NonNull String, int, @NonNull String, @NonNull String, @Nullable String);
+    method public void startWatchingActive(@NonNull String[], @NonNull java.util.concurrent.Executor, @NonNull android.app.AppOpsManager.OnOpActiveChangedListener);
+    method public void startWatchingMode(@NonNull String, @Nullable String, @NonNull android.app.AppOpsManager.OnOpChangedListener);
+    method public void startWatchingMode(@NonNull String, @Nullable String, int, @NonNull android.app.AppOpsManager.OnOpChangedListener);
+    method public void stopWatchingActive(@NonNull android.app.AppOpsManager.OnOpActiveChangedListener);
+    method public void stopWatchingMode(@NonNull android.app.AppOpsManager.OnOpChangedListener);
+    method public int unsafeCheckOp(@NonNull String, int, @NonNull String);
+    method public int unsafeCheckOpNoThrow(@NonNull String, int, @NonNull String);
+    method public int unsafeCheckOpRaw(@NonNull String, int, @NonNull String);
+    method public int unsafeCheckOpRawNoThrow(@NonNull String, int, @NonNull String);
+    field public static final int MODE_ALLOWED = 0; // 0x0
+    field public static final int MODE_DEFAULT = 3; // 0x3
+    field public static final int MODE_ERRORED = 2; // 0x2
+    field public static final int MODE_FOREGROUND = 4; // 0x4
+    field public static final int MODE_IGNORED = 1; // 0x1
+    field public static final String OPSTR_ADD_VOICEMAIL = "android:add_voicemail";
+    field public static final String OPSTR_ANSWER_PHONE_CALLS = "android:answer_phone_calls";
+    field public static final String OPSTR_BODY_SENSORS = "android:body_sensors";
+    field public static final String OPSTR_CALL_PHONE = "android:call_phone";
+    field public static final String OPSTR_CAMERA = "android:camera";
+    field public static final String OPSTR_COARSE_LOCATION = "android:coarse_location";
+    field public static final String OPSTR_FINE_LOCATION = "android:fine_location";
+    field public static final String OPSTR_GET_USAGE_STATS = "android:get_usage_stats";
+    field public static final String OPSTR_MOCK_LOCATION = "android:mock_location";
+    field public static final String OPSTR_MONITOR_HIGH_POWER_LOCATION = "android:monitor_location_high_power";
+    field public static final String OPSTR_MONITOR_LOCATION = "android:monitor_location";
+    field public static final String OPSTR_PICTURE_IN_PICTURE = "android:picture_in_picture";
+    field public static final String OPSTR_PROCESS_OUTGOING_CALLS = "android:process_outgoing_calls";
+    field public static final String OPSTR_READ_CALENDAR = "android:read_calendar";
+    field public static final String OPSTR_READ_CALL_LOG = "android:read_call_log";
+    field public static final String OPSTR_READ_CELL_BROADCASTS = "android:read_cell_broadcasts";
+    field public static final String OPSTR_READ_CONTACTS = "android:read_contacts";
+    field public static final String OPSTR_READ_EXTERNAL_STORAGE = "android:read_external_storage";
+    field public static final String OPSTR_READ_PHONE_NUMBERS = "android:read_phone_numbers";
+    field public static final String OPSTR_READ_PHONE_STATE = "android:read_phone_state";
+    field public static final String OPSTR_READ_SMS = "android:read_sms";
+    field public static final String OPSTR_RECEIVE_MMS = "android:receive_mms";
+    field public static final String OPSTR_RECEIVE_SMS = "android:receive_sms";
+    field public static final String OPSTR_RECEIVE_WAP_PUSH = "android:receive_wap_push";
+    field public static final String OPSTR_RECORD_AUDIO = "android:record_audio";
+    field public static final String OPSTR_SEND_SMS = "android:send_sms";
+    field public static final String OPSTR_SYSTEM_ALERT_WINDOW = "android:system_alert_window";
+    field public static final String OPSTR_USE_FINGERPRINT = "android:use_fingerprint";
+    field public static final String OPSTR_USE_SIP = "android:use_sip";
+    field public static final String OPSTR_WRITE_CALENDAR = "android:write_calendar";
+    field public static final String OPSTR_WRITE_CALL_LOG = "android:write_call_log";
+    field public static final String OPSTR_WRITE_CONTACTS = "android:write_contacts";
+    field public static final String OPSTR_WRITE_EXTERNAL_STORAGE = "android:write_external_storage";
+    field public static final String OPSTR_WRITE_SETTINGS = "android:write_settings";
+    field public static final int WATCH_FOREGROUND_CHANGES = 1; // 0x1
+  }
+
+  public static interface AppOpsManager.OnOpActiveChangedListener {
+    method public void onOpActiveChanged(@NonNull String, int, @NonNull String, boolean);
+  }
+
+  public static interface AppOpsManager.OnOpChangedListener {
+    method public void onOpChanged(String, String);
+  }
+
+  public abstract static class AppOpsManager.OnOpNotedCallback {
+    ctor public AppOpsManager.OnOpNotedCallback();
+    method public abstract void onAsyncNoted(@NonNull android.app.AsyncNotedAppOp);
+    method public abstract void onNoted(@NonNull android.app.SyncNotedAppOp);
+    method public abstract void onSelfNoted(@NonNull android.app.SyncNotedAppOp);
+  }
+
+  public class Application extends android.content.ContextWrapper implements android.content.ComponentCallbacks2 {
+    ctor public Application();
+    method public static String getProcessName();
+    method @CallSuper public void onConfigurationChanged(@NonNull android.content.res.Configuration);
+    method @CallSuper public void onCreate();
+    method @CallSuper public void onLowMemory();
+    method @CallSuper public void onTerminate();
+    method @CallSuper public void onTrimMemory(int);
+    method public void registerActivityLifecycleCallbacks(android.app.Application.ActivityLifecycleCallbacks);
+    method public void registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener);
+    method public void unregisterActivityLifecycleCallbacks(android.app.Application.ActivityLifecycleCallbacks);
+    method public void unregisterOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener);
+  }
+
+  public static interface Application.ActivityLifecycleCallbacks {
+    method public void onActivityCreated(@NonNull android.app.Activity, @Nullable android.os.Bundle);
+    method public void onActivityDestroyed(@NonNull android.app.Activity);
+    method public void onActivityPaused(@NonNull android.app.Activity);
+    method public default void onActivityPostCreated(@NonNull android.app.Activity, @Nullable android.os.Bundle);
+    method public default void onActivityPostDestroyed(@NonNull android.app.Activity);
+    method public default void onActivityPostPaused(@NonNull android.app.Activity);
+    method public default void onActivityPostResumed(@NonNull android.app.Activity);
+    method public default void onActivityPostSaveInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle);
+    method public default void onActivityPostStarted(@NonNull android.app.Activity);
+    method public default void onActivityPostStopped(@NonNull android.app.Activity);
+    method public default void onActivityPreCreated(@NonNull android.app.Activity, @Nullable android.os.Bundle);
+    method public default void onActivityPreDestroyed(@NonNull android.app.Activity);
+    method public default void onActivityPrePaused(@NonNull android.app.Activity);
+    method public default void onActivityPreResumed(@NonNull android.app.Activity);
+    method public default void onActivityPreSaveInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle);
+    method public default void onActivityPreStarted(@NonNull android.app.Activity);
+    method public default void onActivityPreStopped(@NonNull android.app.Activity);
+    method public void onActivityResumed(@NonNull android.app.Activity);
+    method public void onActivitySaveInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle);
+    method public void onActivityStarted(@NonNull android.app.Activity);
+    method public void onActivityStopped(@NonNull android.app.Activity);
+  }
+
+  public static interface Application.OnProvideAssistDataListener {
+    method public void onProvideAssistData(android.app.Activity, android.os.Bundle);
+  }
+
+  public class ApplicationErrorReport implements android.os.Parcelable {
+    ctor public ApplicationErrorReport();
+    method public int describeContents();
+    method public void dump(android.util.Printer, String);
+    method public static android.content.ComponentName getErrorReportReceiver(android.content.Context, String, int);
+    method public void readFromParcel(android.os.Parcel);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.ApplicationErrorReport> CREATOR;
+    field public static final int TYPE_ANR = 2; // 0x2
+    field public static final int TYPE_BATTERY = 3; // 0x3
+    field public static final int TYPE_CRASH = 1; // 0x1
+    field public static final int TYPE_NONE = 0; // 0x0
+    field public static final int TYPE_RUNNING_SERVICE = 5; // 0x5
+    field public android.app.ApplicationErrorReport.AnrInfo anrInfo;
+    field public android.app.ApplicationErrorReport.BatteryInfo batteryInfo;
+    field public android.app.ApplicationErrorReport.CrashInfo crashInfo;
+    field public String installerPackageName;
+    field public String packageName;
+    field public String processName;
+    field public android.app.ApplicationErrorReport.RunningServiceInfo runningServiceInfo;
+    field public boolean systemApp;
+    field public long time;
+    field public int type;
+  }
+
+  public static class ApplicationErrorReport.AnrInfo {
+    ctor public ApplicationErrorReport.AnrInfo();
+    ctor public ApplicationErrorReport.AnrInfo(android.os.Parcel);
+    method public void dump(android.util.Printer, String);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public String activity;
+    field public String cause;
+    field public String info;
+  }
+
+  public static class ApplicationErrorReport.BatteryInfo {
+    ctor public ApplicationErrorReport.BatteryInfo();
+    ctor public ApplicationErrorReport.BatteryInfo(android.os.Parcel);
+    method public void dump(android.util.Printer, String);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public String checkinDetails;
+    field public long durationMicros;
+    field public String usageDetails;
+    field public int usagePercent;
+  }
+
+  public static class ApplicationErrorReport.CrashInfo {
+    ctor public ApplicationErrorReport.CrashInfo();
+    ctor public ApplicationErrorReport.CrashInfo(Throwable);
+    ctor public ApplicationErrorReport.CrashInfo(android.os.Parcel);
+    method public void dump(android.util.Printer, String);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public String exceptionClassName;
+    field public String exceptionMessage;
+    field public String stackTrace;
+    field public String throwClassName;
+    field public String throwFileName;
+    field public int throwLineNumber;
+    field public String throwMethodName;
+  }
+
+  public static class ApplicationErrorReport.RunningServiceInfo {
+    ctor public ApplicationErrorReport.RunningServiceInfo();
+    ctor public ApplicationErrorReport.RunningServiceInfo(android.os.Parcel);
+    method public void dump(android.util.Printer, String);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public long durationMillis;
+    field public String serviceDetails;
+  }
+
+  public final class ApplicationExitInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getDefiningUid();
+    method @Nullable public String getDescription();
+    method public int getImportance();
+    method public int getPackageUid();
+    method public int getPid();
+    method @NonNull public String getProcessName();
+    method @Nullable public byte[] getProcessStateSummary();
+    method public long getPss();
+    method public int getRealUid();
+    method public int getReason();
+    method public long getRss();
+    method public int getStatus();
+    method public long getTimestamp();
+    method @Nullable public java.io.InputStream getTraceInputStream() throws java.io.IOException;
+    method @NonNull public android.os.UserHandle getUserHandle();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.ApplicationExitInfo> CREATOR;
+    field public static final int REASON_ANR = 6; // 0x6
+    field public static final int REASON_CRASH = 4; // 0x4
+    field public static final int REASON_CRASH_NATIVE = 5; // 0x5
+    field public static final int REASON_DEPENDENCY_DIED = 12; // 0xc
+    field public static final int REASON_EXCESSIVE_RESOURCE_USAGE = 9; // 0x9
+    field public static final int REASON_EXIT_SELF = 1; // 0x1
+    field public static final int REASON_INITIALIZATION_FAILURE = 7; // 0x7
+    field public static final int REASON_LOW_MEMORY = 3; // 0x3
+    field public static final int REASON_OTHER = 13; // 0xd
+    field public static final int REASON_PERMISSION_CHANGE = 8; // 0x8
+    field public static final int REASON_SIGNALED = 2; // 0x2
+    field public static final int REASON_UNKNOWN = 0; // 0x0
+    field public static final int REASON_USER_REQUESTED = 10; // 0xa
+    field public static final int REASON_USER_STOPPED = 11; // 0xb
+  }
+
+  public final class AsyncNotedAppOp implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public String getAttributionTag();
+    method @NonNull public String getMessage();
+    method @IntRange(from=0) public int getNotingUid();
+    method @NonNull public String getOp();
+    method public long getTime();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.AsyncNotedAppOp> CREATOR;
+  }
+
+  public final class AuthenticationRequiredException extends java.lang.SecurityException implements android.os.Parcelable {
+    ctor public AuthenticationRequiredException(Throwable, android.app.PendingIntent);
+    method public int describeContents();
+    method public android.app.PendingIntent getUserAction();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.AuthenticationRequiredException> CREATOR;
+  }
+
+  public final class AutomaticZenRule implements android.os.Parcelable {
+    ctor @Deprecated public AutomaticZenRule(String, android.content.ComponentName, android.net.Uri, int, boolean);
+    ctor public AutomaticZenRule(@NonNull String, @Nullable android.content.ComponentName, @Nullable android.content.ComponentName, @NonNull android.net.Uri, @Nullable android.service.notification.ZenPolicy, int, boolean);
+    ctor public AutomaticZenRule(android.os.Parcel);
+    method public int describeContents();
+    method public android.net.Uri getConditionId();
+    method @Nullable public android.content.ComponentName getConfigurationActivity();
+    method public long getCreationTime();
+    method public int getInterruptionFilter();
+    method public String getName();
+    method public android.content.ComponentName getOwner();
+    method public android.service.notification.ZenPolicy getZenPolicy();
+    method public boolean isEnabled();
+    method public void setConditionId(android.net.Uri);
+    method public void setConfigurationActivity(@Nullable android.content.ComponentName);
+    method public void setEnabled(boolean);
+    method public void setInterruptionFilter(int);
+    method public void setName(String);
+    method public void setZenPolicy(android.service.notification.ZenPolicy);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.AutomaticZenRule> CREATOR;
+  }
+
+  public class DatePickerDialog extends android.app.AlertDialog implements android.widget.DatePicker.OnDateChangedListener android.content.DialogInterface.OnClickListener {
+    ctor public DatePickerDialog(@NonNull android.content.Context);
+    ctor public DatePickerDialog(@NonNull android.content.Context, @StyleRes int);
+    ctor public DatePickerDialog(@NonNull android.content.Context, @Nullable android.app.DatePickerDialog.OnDateSetListener, int, int, int);
+    ctor public DatePickerDialog(@NonNull android.content.Context, @StyleRes int, @Nullable android.app.DatePickerDialog.OnDateSetListener, int, int, int);
+    method @NonNull public android.widget.DatePicker getDatePicker();
+    method public void onClick(@NonNull android.content.DialogInterface, int);
+    method public void onDateChanged(@NonNull android.widget.DatePicker, int, int, int);
+    method public void setOnDateSetListener(@Nullable android.app.DatePickerDialog.OnDateSetListener);
+    method public void updateDate(int, int, int);
+  }
+
+  public static interface DatePickerDialog.OnDateSetListener {
+    method public void onDateSet(android.widget.DatePicker, int, int, int);
+  }
+
+  public class Dialog implements android.content.DialogInterface android.view.KeyEvent.Callback android.view.View.OnCreateContextMenuListener android.view.Window.Callback {
+    ctor public Dialog(@NonNull android.content.Context);
+    ctor public Dialog(@NonNull android.content.Context, @StyleRes int);
+    ctor protected Dialog(@NonNull android.content.Context, boolean, @Nullable android.content.DialogInterface.OnCancelListener);
+    method public void addContentView(@NonNull android.view.View, @Nullable android.view.ViewGroup.LayoutParams);
+    method public void cancel();
+    method public void closeOptionsMenu();
+    method public void create();
+    method public void dismiss();
+    method public boolean dispatchGenericMotionEvent(@NonNull android.view.MotionEvent);
+    method public boolean dispatchKeyEvent(@NonNull android.view.KeyEvent);
+    method public boolean dispatchKeyShortcutEvent(@NonNull android.view.KeyEvent);
+    method public boolean dispatchPopulateAccessibilityEvent(@NonNull android.view.accessibility.AccessibilityEvent);
+    method public boolean dispatchTouchEvent(@NonNull android.view.MotionEvent);
+    method public boolean dispatchTrackballEvent(@NonNull android.view.MotionEvent);
+    method public <T extends android.view.View> T findViewById(@IdRes int);
+    method @Nullable public android.app.ActionBar getActionBar();
+    method @NonNull public final android.content.Context getContext();
+    method @Nullable public android.view.View getCurrentFocus();
+    method @NonNull public android.view.LayoutInflater getLayoutInflater();
+    method @Nullable public final android.app.Activity getOwnerActivity();
+    method @Nullable public final android.view.SearchEvent getSearchEvent();
+    method public final int getVolumeControlStream();
+    method @Nullable public android.view.Window getWindow();
+    method public void hide();
+    method public void invalidateOptionsMenu();
+    method public boolean isShowing();
+    method @CallSuper public void onActionModeFinished(android.view.ActionMode);
+    method @CallSuper public void onActionModeStarted(android.view.ActionMode);
+    method public void onAttachedToWindow();
+    method public void onBackPressed();
+    method public void onContentChanged();
+    method public boolean onContextItemSelected(@NonNull android.view.MenuItem);
+    method public void onContextMenuClosed(@NonNull android.view.Menu);
+    method protected void onCreate(android.os.Bundle);
+    method public void onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo);
+    method public boolean onCreateOptionsMenu(@NonNull android.view.Menu);
+    method public boolean onCreatePanelMenu(int, @NonNull android.view.Menu);
+    method public android.view.View onCreatePanelView(int);
+    method public void onDetachedFromWindow();
+    method public boolean onGenericMotionEvent(@NonNull android.view.MotionEvent);
+    method public boolean onKeyDown(int, @NonNull android.view.KeyEvent);
+    method public boolean onKeyLongPress(int, @NonNull android.view.KeyEvent);
+    method public boolean onKeyMultiple(int, int, @NonNull android.view.KeyEvent);
+    method public boolean onKeyShortcut(int, @NonNull android.view.KeyEvent);
+    method public boolean onKeyUp(int, @NonNull android.view.KeyEvent);
+    method public boolean onMenuItemSelected(int, @NonNull android.view.MenuItem);
+    method public boolean onMenuOpened(int, @NonNull android.view.Menu);
+    method public boolean onOptionsItemSelected(@NonNull android.view.MenuItem);
+    method public void onOptionsMenuClosed(@NonNull android.view.Menu);
+    method public void onPanelClosed(int, @NonNull android.view.Menu);
+    method public boolean onPrepareOptionsMenu(@NonNull android.view.Menu);
+    method public boolean onPreparePanel(int, @Nullable android.view.View, @NonNull android.view.Menu);
+    method public void onRestoreInstanceState(@NonNull android.os.Bundle);
+    method @NonNull public android.os.Bundle onSaveInstanceState();
+    method public boolean onSearchRequested(@NonNull android.view.SearchEvent);
+    method public boolean onSearchRequested();
+    method protected void onStart();
+    method protected void onStop();
+    method public boolean onTouchEvent(@NonNull android.view.MotionEvent);
+    method public boolean onTrackballEvent(@NonNull android.view.MotionEvent);
+    method public void onWindowAttributesChanged(android.view.WindowManager.LayoutParams);
+    method public void onWindowFocusChanged(boolean);
+    method public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback);
+    method public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback, int);
+    method public void openContextMenu(@NonNull android.view.View);
+    method public void openOptionsMenu();
+    method public void registerForContextMenu(@NonNull android.view.View);
+    method public final boolean requestWindowFeature(int);
+    method @NonNull public final <T extends android.view.View> T requireViewById(@IdRes int);
+    method public void setCancelMessage(@Nullable android.os.Message);
+    method public void setCancelable(boolean);
+    method public void setCanceledOnTouchOutside(boolean);
+    method public void setContentView(@LayoutRes int);
+    method public void setContentView(@NonNull android.view.View);
+    method public void setContentView(@NonNull android.view.View, @Nullable android.view.ViewGroup.LayoutParams);
+    method public void setDismissMessage(@Nullable android.os.Message);
+    method public final void setFeatureDrawable(int, @Nullable android.graphics.drawable.Drawable);
+    method public final void setFeatureDrawableAlpha(int, int);
+    method public final void setFeatureDrawableResource(int, @DrawableRes int);
+    method public final void setFeatureDrawableUri(int, @Nullable android.net.Uri);
+    method public void setOnCancelListener(@Nullable android.content.DialogInterface.OnCancelListener);
+    method public void setOnDismissListener(@Nullable android.content.DialogInterface.OnDismissListener);
+    method public void setOnKeyListener(@Nullable android.content.DialogInterface.OnKeyListener);
+    method public void setOnShowListener(@Nullable android.content.DialogInterface.OnShowListener);
+    method public final void setOwnerActivity(@NonNull android.app.Activity);
+    method public void setTitle(@Nullable CharSequence);
+    method public void setTitle(@StringRes int);
+    method public final void setVolumeControlStream(int);
+    method public void show();
+    method public void takeKeyEvents(boolean);
+    method public void unregisterForContextMenu(@NonNull android.view.View);
+  }
+
+  @Deprecated public class DialogFragment extends android.app.Fragment implements android.content.DialogInterface.OnCancelListener android.content.DialogInterface.OnDismissListener {
+    ctor @Deprecated public DialogFragment();
+    method @Deprecated public void dismiss();
+    method @Deprecated public void dismissAllowingStateLoss();
+    method @Deprecated public android.app.Dialog getDialog();
+    method @Deprecated public boolean getShowsDialog();
+    method @Deprecated public int getTheme();
+    method @Deprecated public boolean isCancelable();
+    method @Deprecated public void onCancel(android.content.DialogInterface);
+    method @Deprecated public android.app.Dialog onCreateDialog(android.os.Bundle);
+    method @Deprecated public void onDismiss(android.content.DialogInterface);
+    method public android.view.LayoutInflater onGetLayoutInflater(android.os.Bundle);
+    method @Deprecated public void setCancelable(boolean);
+    method @Deprecated public void setShowsDialog(boolean);
+    method @Deprecated public void setStyle(int, int);
+    method @Deprecated public void show(android.app.FragmentManager, String);
+    method @Deprecated public int show(android.app.FragmentTransaction, String);
+    field @Deprecated public static final int STYLE_NORMAL = 0; // 0x0
+    field @Deprecated public static final int STYLE_NO_FRAME = 2; // 0x2
+    field @Deprecated public static final int STYLE_NO_INPUT = 3; // 0x3
+    field @Deprecated public static final int STYLE_NO_TITLE = 1; // 0x1
+  }
+
+  public final class DirectAction implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public android.os.Bundle getExtras();
+    method @NonNull public String getId();
+    method @Nullable public android.content.LocusId getLocusId();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.DirectAction> CREATOR;
+  }
+
+  public static final class DirectAction.Builder {
+    ctor public DirectAction.Builder(@NonNull String);
+    method @NonNull public android.app.DirectAction build();
+    method @NonNull public android.app.DirectAction.Builder setExtras(@Nullable android.os.Bundle);
+    method @NonNull public android.app.DirectAction.Builder setLocusId(@Nullable android.content.LocusId);
+  }
+
+  public class DownloadManager {
+    method @Deprecated public long addCompletedDownload(String, String, boolean, String, String, long, boolean);
+    method @Deprecated public long addCompletedDownload(String, String, boolean, String, String, long, boolean, android.net.Uri, android.net.Uri);
+    method public long enqueue(android.app.DownloadManager.Request);
+    method public static Long getMaxBytesOverMobile(android.content.Context);
+    method public String getMimeTypeForDownloadedFile(long);
+    method public static Long getRecommendedMaxBytesOverMobile(android.content.Context);
+    method public android.net.Uri getUriForDownloadedFile(long);
+    method public android.os.ParcelFileDescriptor openDownloadedFile(long) throws java.io.FileNotFoundException;
+    method public android.database.Cursor query(android.app.DownloadManager.Query);
+    method public int remove(long...);
+    field public static final String ACTION_DOWNLOAD_COMPLETE = "android.intent.action.DOWNLOAD_COMPLETE";
+    field public static final String ACTION_NOTIFICATION_CLICKED = "android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED";
+    field public static final String ACTION_VIEW_DOWNLOADS = "android.intent.action.VIEW_DOWNLOADS";
+    field public static final String COLUMN_BYTES_DOWNLOADED_SO_FAR = "bytes_so_far";
+    field public static final String COLUMN_DESCRIPTION = "description";
+    field public static final String COLUMN_ID = "_id";
+    field public static final String COLUMN_LAST_MODIFIED_TIMESTAMP = "last_modified_timestamp";
+    field @Deprecated public static final String COLUMN_LOCAL_FILENAME = "local_filename";
+    field public static final String COLUMN_LOCAL_URI = "local_uri";
+    field public static final String COLUMN_MEDIAPROVIDER_URI = "mediaprovider_uri";
+    field public static final String COLUMN_MEDIA_TYPE = "media_type";
+    field public static final String COLUMN_REASON = "reason";
+    field public static final String COLUMN_STATUS = "status";
+    field public static final String COLUMN_TITLE = "title";
+    field public static final String COLUMN_TOTAL_SIZE_BYTES = "total_size";
+    field public static final String COLUMN_URI = "uri";
+    field public static final int ERROR_CANNOT_RESUME = 1008; // 0x3f0
+    field public static final int ERROR_DEVICE_NOT_FOUND = 1007; // 0x3ef
+    field public static final int ERROR_FILE_ALREADY_EXISTS = 1009; // 0x3f1
+    field public static final int ERROR_FILE_ERROR = 1001; // 0x3e9
+    field public static final int ERROR_HTTP_DATA_ERROR = 1004; // 0x3ec
+    field public static final int ERROR_INSUFFICIENT_SPACE = 1006; // 0x3ee
+    field public static final int ERROR_TOO_MANY_REDIRECTS = 1005; // 0x3ed
+    field public static final int ERROR_UNHANDLED_HTTP_CODE = 1002; // 0x3ea
+    field public static final int ERROR_UNKNOWN = 1000; // 0x3e8
+    field public static final String EXTRA_DOWNLOAD_ID = "extra_download_id";
+    field public static final String EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS = "extra_click_download_ids";
+    field public static final String INTENT_EXTRAS_SORT_BY_SIZE = "android.app.DownloadManager.extra_sortBySize";
+    field public static final int PAUSED_QUEUED_FOR_WIFI = 3; // 0x3
+    field public static final int PAUSED_UNKNOWN = 4; // 0x4
+    field public static final int PAUSED_WAITING_FOR_NETWORK = 2; // 0x2
+    field public static final int PAUSED_WAITING_TO_RETRY = 1; // 0x1
+    field public static final int STATUS_FAILED = 16; // 0x10
+    field public static final int STATUS_PAUSED = 4; // 0x4
+    field public static final int STATUS_PENDING = 1; // 0x1
+    field public static final int STATUS_RUNNING = 2; // 0x2
+    field public static final int STATUS_SUCCESSFUL = 8; // 0x8
+  }
+
+  public static class DownloadManager.Query {
+    ctor public DownloadManager.Query();
+    method public android.app.DownloadManager.Query setFilterById(long...);
+    method public android.app.DownloadManager.Query setFilterByStatus(int);
+  }
+
+  public static class DownloadManager.Request {
+    ctor public DownloadManager.Request(android.net.Uri);
+    method public android.app.DownloadManager.Request addRequestHeader(String, String);
+    method @Deprecated public void allowScanningByMediaScanner();
+    method public android.app.DownloadManager.Request setAllowedNetworkTypes(int);
+    method public android.app.DownloadManager.Request setAllowedOverMetered(boolean);
+    method public android.app.DownloadManager.Request setAllowedOverRoaming(boolean);
+    method public android.app.DownloadManager.Request setDescription(CharSequence);
+    method public android.app.DownloadManager.Request setDestinationInExternalFilesDir(android.content.Context, String, String);
+    method public android.app.DownloadManager.Request setDestinationInExternalPublicDir(String, String);
+    method public android.app.DownloadManager.Request setDestinationUri(android.net.Uri);
+    method public android.app.DownloadManager.Request setMimeType(String);
+    method public android.app.DownloadManager.Request setNotificationVisibility(int);
+    method public android.app.DownloadManager.Request setRequiresCharging(boolean);
+    method public android.app.DownloadManager.Request setRequiresDeviceIdle(boolean);
+    method @Deprecated public android.app.DownloadManager.Request setShowRunningNotification(boolean);
+    method public android.app.DownloadManager.Request setTitle(CharSequence);
+    method @Deprecated public android.app.DownloadManager.Request setVisibleInDownloadsUi(boolean);
+    field public static final int NETWORK_MOBILE = 1; // 0x1
+    field public static final int NETWORK_WIFI = 2; // 0x2
+    field public static final int VISIBILITY_HIDDEN = 2; // 0x2
+    field public static final int VISIBILITY_VISIBLE = 0; // 0x0
+    field public static final int VISIBILITY_VISIBLE_NOTIFY_COMPLETED = 1; // 0x1
+    field public static final int VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION = 3; // 0x3
+  }
+
+  @Deprecated public class ExpandableListActivity extends android.app.Activity implements android.widget.ExpandableListView.OnChildClickListener android.widget.ExpandableListView.OnGroupCollapseListener android.widget.ExpandableListView.OnGroupExpandListener android.view.View.OnCreateContextMenuListener {
+    ctor @Deprecated public ExpandableListActivity();
+    method @Deprecated public android.widget.ExpandableListAdapter getExpandableListAdapter();
+    method @Deprecated public android.widget.ExpandableListView getExpandableListView();
+    method @Deprecated public long getSelectedId();
+    method @Deprecated public long getSelectedPosition();
+    method @Deprecated public boolean onChildClick(android.widget.ExpandableListView, android.view.View, int, int, long);
+    method @Deprecated public void onGroupCollapse(int);
+    method @Deprecated public void onGroupExpand(int);
+    method @Deprecated public void setListAdapter(android.widget.ExpandableListAdapter);
+    method @Deprecated public boolean setSelectedChild(int, int, boolean);
+    method @Deprecated public void setSelectedGroup(int);
+  }
+
+  @Deprecated public class Fragment implements android.content.ComponentCallbacks2 android.view.View.OnCreateContextMenuListener {
+    ctor @Deprecated public Fragment();
+    method @Deprecated public void dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
+    method @Deprecated public final boolean equals(Object);
+    method @Deprecated public final android.app.Activity getActivity();
+    method @Deprecated public boolean getAllowEnterTransitionOverlap();
+    method @Deprecated public boolean getAllowReturnTransitionOverlap();
+    method @Deprecated public final android.os.Bundle getArguments();
+    method @Deprecated public final android.app.FragmentManager getChildFragmentManager();
+    method @Deprecated public android.content.Context getContext();
+    method @Deprecated public android.transition.Transition getEnterTransition();
+    method @Deprecated public android.transition.Transition getExitTransition();
+    method @Deprecated public final android.app.FragmentManager getFragmentManager();
+    method @Deprecated @Nullable public final Object getHost();
+    method @Deprecated public final int getId();
+    method @Deprecated public final android.view.LayoutInflater getLayoutInflater();
+    method @Deprecated public android.app.LoaderManager getLoaderManager();
+    method @Deprecated public final android.app.Fragment getParentFragment();
+    method @Deprecated public android.transition.Transition getReenterTransition();
+    method @Deprecated public final android.content.res.Resources getResources();
+    method @Deprecated public final boolean getRetainInstance();
+    method @Deprecated public android.transition.Transition getReturnTransition();
+    method @Deprecated public android.transition.Transition getSharedElementEnterTransition();
+    method @Deprecated public android.transition.Transition getSharedElementReturnTransition();
+    method @Deprecated public final String getString(@StringRes int);
+    method @Deprecated public final String getString(@StringRes int, java.lang.Object...);
+    method @Deprecated public final String getTag();
+    method @Deprecated public final android.app.Fragment getTargetFragment();
+    method @Deprecated public final int getTargetRequestCode();
+    method @Deprecated public final CharSequence getText(@StringRes int);
+    method @Deprecated public boolean getUserVisibleHint();
+    method @Deprecated @Nullable public android.view.View getView();
+    method @Deprecated public final int hashCode();
+    method @Deprecated public static android.app.Fragment instantiate(android.content.Context, String);
+    method @Deprecated public static android.app.Fragment instantiate(android.content.Context, String, @Nullable android.os.Bundle);
+    method @Deprecated public final boolean isAdded();
+    method @Deprecated public final boolean isDetached();
+    method @Deprecated public final boolean isHidden();
+    method @Deprecated public final boolean isInLayout();
+    method @Deprecated public final boolean isRemoving();
+    method @Deprecated public final boolean isResumed();
+    method @Deprecated public final boolean isStateSaved();
+    method @Deprecated public final boolean isVisible();
+    method @Deprecated @CallSuper public void onActivityCreated(@Nullable android.os.Bundle);
+    method @Deprecated public void onActivityResult(int, int, android.content.Intent);
+    method @Deprecated @CallSuper public void onAttach(android.content.Context);
+    method @Deprecated @CallSuper public void onAttach(android.app.Activity);
+    method @Deprecated public void onAttachFragment(android.app.Fragment);
+    method @Deprecated @CallSuper public void onConfigurationChanged(android.content.res.Configuration);
+    method @Deprecated public boolean onContextItemSelected(android.view.MenuItem);
+    method @Deprecated @CallSuper public void onCreate(@Nullable android.os.Bundle);
+    method @Deprecated public android.animation.Animator onCreateAnimator(int, boolean, int);
+    method @Deprecated public void onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo);
+    method @Deprecated public void onCreateOptionsMenu(android.view.Menu, android.view.MenuInflater);
+    method @Deprecated @Nullable public android.view.View onCreateView(android.view.LayoutInflater, @Nullable android.view.ViewGroup, android.os.Bundle);
+    method @Deprecated @CallSuper public void onDestroy();
+    method @Deprecated public void onDestroyOptionsMenu();
+    method @Deprecated @CallSuper public void onDestroyView();
+    method @Deprecated @CallSuper public void onDetach();
+    method @Deprecated public android.view.LayoutInflater onGetLayoutInflater(android.os.Bundle);
+    method @Deprecated public void onHiddenChanged(boolean);
+    method @Deprecated @CallSuper public void onInflate(android.util.AttributeSet, android.os.Bundle);
+    method @Deprecated @CallSuper public void onInflate(android.content.Context, android.util.AttributeSet, android.os.Bundle);
+    method @Deprecated @CallSuper public void onInflate(android.app.Activity, android.util.AttributeSet, android.os.Bundle);
+    method @Deprecated @CallSuper public void onLowMemory();
+    method @Deprecated public void onMultiWindowModeChanged(boolean, android.content.res.Configuration);
+    method @Deprecated public void onMultiWindowModeChanged(boolean);
+    method @Deprecated public boolean onOptionsItemSelected(android.view.MenuItem);
+    method @Deprecated public void onOptionsMenuClosed(android.view.Menu);
+    method @Deprecated @CallSuper public void onPause();
+    method @Deprecated public void onPictureInPictureModeChanged(boolean, android.content.res.Configuration);
+    method @Deprecated public void onPictureInPictureModeChanged(boolean);
+    method @Deprecated public void onPrepareOptionsMenu(android.view.Menu);
+    method @Deprecated public void onRequestPermissionsResult(int, @NonNull String[], @NonNull int[]);
+    method @Deprecated @CallSuper public void onResume();
+    method @Deprecated public void onSaveInstanceState(android.os.Bundle);
+    method @Deprecated @CallSuper public void onStart();
+    method @Deprecated @CallSuper public void onStop();
+    method @Deprecated @CallSuper public void onTrimMemory(int);
+    method @Deprecated public void onViewCreated(android.view.View, @Nullable android.os.Bundle);
+    method @Deprecated @CallSuper public void onViewStateRestored(android.os.Bundle);
+    method @Deprecated public void postponeEnterTransition();
+    method @Deprecated public void registerForContextMenu(android.view.View);
+    method @Deprecated public final void requestPermissions(@NonNull String[], int);
+    method @Deprecated public void setAllowEnterTransitionOverlap(boolean);
+    method @Deprecated public void setAllowReturnTransitionOverlap(boolean);
+    method @Deprecated public void setArguments(android.os.Bundle);
+    method @Deprecated public void setEnterSharedElementCallback(android.app.SharedElementCallback);
+    method @Deprecated public void setEnterTransition(android.transition.Transition);
+    method @Deprecated public void setExitSharedElementCallback(android.app.SharedElementCallback);
+    method @Deprecated public void setExitTransition(android.transition.Transition);
+    method @Deprecated public void setHasOptionsMenu(boolean);
+    method @Deprecated public void setInitialSavedState(android.app.Fragment.SavedState);
+    method @Deprecated public void setMenuVisibility(boolean);
+    method @Deprecated public void setReenterTransition(android.transition.Transition);
+    method @Deprecated public void setRetainInstance(boolean);
+    method @Deprecated public void setReturnTransition(android.transition.Transition);
+    method @Deprecated public void setSharedElementEnterTransition(android.transition.Transition);
+    method @Deprecated public void setSharedElementReturnTransition(android.transition.Transition);
+    method @Deprecated public void setTargetFragment(android.app.Fragment, int);
+    method @Deprecated public void setUserVisibleHint(boolean);
+    method @Deprecated public boolean shouldShowRequestPermissionRationale(@NonNull String);
+    method @Deprecated public void startActivity(android.content.Intent);
+    method @Deprecated public void startActivity(android.content.Intent, android.os.Bundle);
+    method @Deprecated public void startActivityForResult(android.content.Intent, int);
+    method @Deprecated public void startActivityForResult(android.content.Intent, int, android.os.Bundle);
+    method @Deprecated public void startIntentSenderForResult(android.content.IntentSender, int, @Nullable android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
+    method @Deprecated public void startPostponedEnterTransition();
+    method @Deprecated public void unregisterForContextMenu(android.view.View);
+  }
+
+  @Deprecated public static class Fragment.InstantiationException extends android.util.AndroidRuntimeException {
+    ctor @Deprecated public Fragment.InstantiationException(String, Exception);
+  }
+
+  @Deprecated public static class Fragment.SavedState implements android.os.Parcelable {
+    method @Deprecated public int describeContents();
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated public static final android.os.Parcelable.ClassLoaderCreator<android.app.Fragment.SavedState> CREATOR;
+  }
+
+  @Deprecated public class FragmentBreadCrumbs extends android.view.ViewGroup implements android.app.FragmentManager.OnBackStackChangedListener {
+    ctor @Deprecated public FragmentBreadCrumbs(android.content.Context);
+    ctor @Deprecated public FragmentBreadCrumbs(android.content.Context, android.util.AttributeSet);
+    ctor @Deprecated public FragmentBreadCrumbs(android.content.Context, android.util.AttributeSet, int);
+    method @Deprecated public void onBackStackChanged();
+    method @Deprecated public void setActivity(android.app.Activity);
+    method @Deprecated public void setMaxVisible(int);
+    method @Deprecated public void setOnBreadCrumbClickListener(android.app.FragmentBreadCrumbs.OnBreadCrumbClickListener);
+    method @Deprecated public void setParentTitle(CharSequence, CharSequence, android.view.View.OnClickListener);
+    method @Deprecated public void setTitle(CharSequence, CharSequence);
+  }
+
+  @Deprecated public static interface FragmentBreadCrumbs.OnBreadCrumbClickListener {
+    method @Deprecated public boolean onBreadCrumbClick(android.app.FragmentManager.BackStackEntry, int);
+  }
+
+  @Deprecated public abstract class FragmentContainer {
+    ctor @Deprecated public FragmentContainer();
+    method @Deprecated @Nullable public abstract <T extends android.view.View> T onFindViewById(@IdRes int);
+    method @Deprecated public abstract boolean onHasView();
+  }
+
+  @Deprecated public class FragmentController {
+    method @Deprecated public void attachHost(android.app.Fragment);
+    method @Deprecated public static final android.app.FragmentController createController(android.app.FragmentHostCallback<?>);
+    method @Deprecated public void dispatchActivityCreated();
+    method @Deprecated public void dispatchConfigurationChanged(android.content.res.Configuration);
+    method @Deprecated public boolean dispatchContextItemSelected(android.view.MenuItem);
+    method @Deprecated public void dispatchCreate();
+    method @Deprecated public boolean dispatchCreateOptionsMenu(android.view.Menu, android.view.MenuInflater);
+    method @Deprecated public void dispatchDestroy();
+    method @Deprecated public void dispatchDestroyView();
+    method @Deprecated public void dispatchLowMemory();
+    method @Deprecated public void dispatchMultiWindowModeChanged(boolean);
+    method @Deprecated public void dispatchMultiWindowModeChanged(boolean, android.content.res.Configuration);
+    method @Deprecated public boolean dispatchOptionsItemSelected(android.view.MenuItem);
+    method @Deprecated public void dispatchOptionsMenuClosed(android.view.Menu);
+    method @Deprecated public void dispatchPause();
+    method @Deprecated public void dispatchPictureInPictureModeChanged(boolean);
+    method @Deprecated public void dispatchPictureInPictureModeChanged(boolean, android.content.res.Configuration);
+    method @Deprecated public boolean dispatchPrepareOptionsMenu(android.view.Menu);
+    method @Deprecated public void dispatchResume();
+    method @Deprecated public void dispatchStart();
+    method @Deprecated public void dispatchStop();
+    method @Deprecated public void dispatchTrimMemory(int);
+    method @Deprecated public void doLoaderDestroy();
+    method @Deprecated public void doLoaderStart();
+    method @Deprecated public void doLoaderStop(boolean);
+    method @Deprecated public void dumpLoaders(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
+    method @Deprecated public boolean execPendingActions();
+    method @Deprecated @Nullable public android.app.Fragment findFragmentByWho(String);
+    method @Deprecated public android.app.FragmentManager getFragmentManager();
+    method @Deprecated public android.app.LoaderManager getLoaderManager();
+    method @Deprecated public void noteStateNotSaved();
+    method @Deprecated public android.view.View onCreateView(android.view.View, String, android.content.Context, android.util.AttributeSet);
+    method @Deprecated public void reportLoaderStart();
+    method @Deprecated public void restoreAllState(android.os.Parcelable, java.util.List<android.app.Fragment>);
+    method @Deprecated public void restoreAllState(android.os.Parcelable, android.app.FragmentManagerNonConfig);
+    method @Deprecated public void restoreLoaderNonConfig(android.util.ArrayMap<java.lang.String,android.app.LoaderManager>);
+    method @Deprecated public android.util.ArrayMap<java.lang.String,android.app.LoaderManager> retainLoaderNonConfig();
+    method @Deprecated public android.app.FragmentManagerNonConfig retainNestedNonConfig();
+    method @Deprecated public java.util.List<android.app.Fragment> retainNonConfig();
+    method @Deprecated public android.os.Parcelable saveAllState();
+  }
+
+  @Deprecated public abstract class FragmentHostCallback<E> extends android.app.FragmentContainer {
+    ctor @Deprecated public FragmentHostCallback(android.content.Context, android.os.Handler, int);
+    method @Deprecated public void onAttachFragment(android.app.Fragment);
+    method @Deprecated public void onDump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
+    method @Deprecated @Nullable public <T extends android.view.View> T onFindViewById(int);
+    method @Deprecated @Nullable public abstract E onGetHost();
+    method @Deprecated public android.view.LayoutInflater onGetLayoutInflater();
+    method @Deprecated public int onGetWindowAnimations();
+    method @Deprecated public boolean onHasView();
+    method @Deprecated public boolean onHasWindowAnimations();
+    method @Deprecated public void onInvalidateOptionsMenu();
+    method @Deprecated public void onRequestPermissionsFromFragment(@NonNull android.app.Fragment, @NonNull String[], int);
+    method @Deprecated public boolean onShouldSaveFragmentState(android.app.Fragment);
+    method @Deprecated public void onStartActivityFromFragment(android.app.Fragment, android.content.Intent, int, android.os.Bundle);
+    method @Deprecated public void onStartIntentSenderFromFragment(android.app.Fragment, android.content.IntentSender, int, @Nullable android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
+    method @Deprecated public boolean onUseFragmentManagerInflaterFactory();
+  }
+
+  @Deprecated public abstract class FragmentManager {
+    ctor @Deprecated public FragmentManager();
+    method @Deprecated public abstract void addOnBackStackChangedListener(android.app.FragmentManager.OnBackStackChangedListener);
+    method @Deprecated public abstract android.app.FragmentTransaction beginTransaction();
+    method @Deprecated public abstract void dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
+    method @Deprecated public static void enableDebugLogging(boolean);
+    method @Deprecated public abstract boolean executePendingTransactions();
+    method @Deprecated public abstract android.app.Fragment findFragmentById(int);
+    method @Deprecated public abstract android.app.Fragment findFragmentByTag(String);
+    method @Deprecated public abstract android.app.FragmentManager.BackStackEntry getBackStackEntryAt(int);
+    method @Deprecated public abstract int getBackStackEntryCount();
+    method @Deprecated public abstract android.app.Fragment getFragment(android.os.Bundle, String);
+    method @Deprecated public abstract java.util.List<android.app.Fragment> getFragments();
+    method @Deprecated public abstract android.app.Fragment getPrimaryNavigationFragment();
+    method @Deprecated public void invalidateOptionsMenu();
+    method @Deprecated public abstract boolean isDestroyed();
+    method @Deprecated public abstract boolean isStateSaved();
+    method @Deprecated public abstract void popBackStack();
+    method @Deprecated public abstract void popBackStack(String, int);
+    method @Deprecated public abstract void popBackStack(int, int);
+    method @Deprecated public abstract boolean popBackStackImmediate();
+    method @Deprecated public abstract boolean popBackStackImmediate(String, int);
+    method @Deprecated public abstract boolean popBackStackImmediate(int, int);
+    method @Deprecated public abstract void putFragment(android.os.Bundle, String, android.app.Fragment);
+    method @Deprecated public abstract void registerFragmentLifecycleCallbacks(android.app.FragmentManager.FragmentLifecycleCallbacks, boolean);
+    method @Deprecated public abstract void removeOnBackStackChangedListener(android.app.FragmentManager.OnBackStackChangedListener);
+    method @Deprecated public abstract android.app.Fragment.SavedState saveFragmentInstanceState(android.app.Fragment);
+    method @Deprecated public abstract void unregisterFragmentLifecycleCallbacks(android.app.FragmentManager.FragmentLifecycleCallbacks);
+    field @Deprecated public static final int POP_BACK_STACK_INCLUSIVE = 1; // 0x1
+  }
+
+  @Deprecated public static interface FragmentManager.BackStackEntry {
+    method @Deprecated public CharSequence getBreadCrumbShortTitle();
+    method @Deprecated public int getBreadCrumbShortTitleRes();
+    method @Deprecated public CharSequence getBreadCrumbTitle();
+    method @Deprecated public int getBreadCrumbTitleRes();
+    method @Deprecated public int getId();
+    method @Deprecated public String getName();
+  }
+
+  @Deprecated public abstract static class FragmentManager.FragmentLifecycleCallbacks {
+    ctor @Deprecated public FragmentManager.FragmentLifecycleCallbacks();
+    method @Deprecated public void onFragmentActivityCreated(android.app.FragmentManager, android.app.Fragment, android.os.Bundle);
+    method @Deprecated public void onFragmentAttached(android.app.FragmentManager, android.app.Fragment, android.content.Context);
+    method @Deprecated public void onFragmentCreated(android.app.FragmentManager, android.app.Fragment, android.os.Bundle);
+    method @Deprecated public void onFragmentDestroyed(android.app.FragmentManager, android.app.Fragment);
+    method @Deprecated public void onFragmentDetached(android.app.FragmentManager, android.app.Fragment);
+    method @Deprecated public void onFragmentPaused(android.app.FragmentManager, android.app.Fragment);
+    method @Deprecated public void onFragmentPreAttached(android.app.FragmentManager, android.app.Fragment, android.content.Context);
+    method @Deprecated public void onFragmentPreCreated(android.app.FragmentManager, android.app.Fragment, android.os.Bundle);
+    method @Deprecated public void onFragmentResumed(android.app.FragmentManager, android.app.Fragment);
+    method @Deprecated public void onFragmentSaveInstanceState(android.app.FragmentManager, android.app.Fragment, android.os.Bundle);
+    method @Deprecated public void onFragmentStarted(android.app.FragmentManager, android.app.Fragment);
+    method @Deprecated public void onFragmentStopped(android.app.FragmentManager, android.app.Fragment);
+    method @Deprecated public void onFragmentViewCreated(android.app.FragmentManager, android.app.Fragment, android.view.View, android.os.Bundle);
+    method @Deprecated public void onFragmentViewDestroyed(android.app.FragmentManager, android.app.Fragment);
+  }
+
+  @Deprecated public static interface FragmentManager.OnBackStackChangedListener {
+    method @Deprecated public void onBackStackChanged();
+  }
+
+  @Deprecated public class FragmentManagerNonConfig {
+  }
+
+  @Deprecated public abstract class FragmentTransaction {
+    ctor @Deprecated public FragmentTransaction();
+    method @Deprecated public abstract android.app.FragmentTransaction add(android.app.Fragment, String);
+    method @Deprecated public abstract android.app.FragmentTransaction add(@IdRes int, android.app.Fragment);
+    method @Deprecated public abstract android.app.FragmentTransaction add(@IdRes int, android.app.Fragment, String);
+    method @Deprecated public abstract android.app.FragmentTransaction addSharedElement(android.view.View, String);
+    method @Deprecated public abstract android.app.FragmentTransaction addToBackStack(@Nullable String);
+    method @Deprecated public abstract android.app.FragmentTransaction attach(android.app.Fragment);
+    method @Deprecated public abstract int commit();
+    method @Deprecated public abstract int commitAllowingStateLoss();
+    method @Deprecated public abstract void commitNow();
+    method @Deprecated public abstract void commitNowAllowingStateLoss();
+    method @Deprecated public abstract android.app.FragmentTransaction detach(android.app.Fragment);
+    method @Deprecated public abstract android.app.FragmentTransaction disallowAddToBackStack();
+    method @Deprecated public abstract android.app.FragmentTransaction hide(android.app.Fragment);
+    method @Deprecated public abstract boolean isAddToBackStackAllowed();
+    method @Deprecated public abstract boolean isEmpty();
+    method @Deprecated public abstract android.app.FragmentTransaction remove(android.app.Fragment);
+    method @Deprecated public abstract android.app.FragmentTransaction replace(@IdRes int, android.app.Fragment);
+    method @Deprecated public abstract android.app.FragmentTransaction replace(@IdRes int, android.app.Fragment, String);
+    method @Deprecated public abstract android.app.FragmentTransaction runOnCommit(Runnable);
+    method @Deprecated public abstract android.app.FragmentTransaction setBreadCrumbShortTitle(@StringRes int);
+    method @Deprecated public abstract android.app.FragmentTransaction setBreadCrumbShortTitle(CharSequence);
+    method @Deprecated public abstract android.app.FragmentTransaction setBreadCrumbTitle(@StringRes int);
+    method @Deprecated public abstract android.app.FragmentTransaction setBreadCrumbTitle(CharSequence);
+    method @Deprecated public abstract android.app.FragmentTransaction setCustomAnimations(@AnimatorRes int, @AnimatorRes int);
+    method @Deprecated public abstract android.app.FragmentTransaction setCustomAnimations(@AnimatorRes int, @AnimatorRes int, @AnimatorRes int, @AnimatorRes int);
+    method @Deprecated public abstract android.app.FragmentTransaction setPrimaryNavigationFragment(android.app.Fragment);
+    method @Deprecated public abstract android.app.FragmentTransaction setReorderingAllowed(boolean);
+    method @Deprecated public abstract android.app.FragmentTransaction setTransition(int);
+    method @Deprecated public abstract android.app.FragmentTransaction setTransitionStyle(@StyleRes int);
+    method @Deprecated public abstract android.app.FragmentTransaction show(android.app.Fragment);
+    field @Deprecated public static final int TRANSIT_ENTER_MASK = 4096; // 0x1000
+    field @Deprecated public static final int TRANSIT_EXIT_MASK = 8192; // 0x2000
+    field @Deprecated public static final int TRANSIT_FRAGMENT_CLOSE = 8194; // 0x2002
+    field @Deprecated public static final int TRANSIT_FRAGMENT_FADE = 4099; // 0x1003
+    field @Deprecated public static final int TRANSIT_FRAGMENT_OPEN = 4097; // 0x1001
+    field @Deprecated public static final int TRANSIT_NONE = 0; // 0x0
+    field @Deprecated public static final int TRANSIT_UNSET = -1; // 0xffffffff
+  }
+
+  public class Instrumentation {
+    ctor public Instrumentation();
+    method public android.os.TestLooperManager acquireLooperManager(android.os.Looper);
+    method public void addMonitor(android.app.Instrumentation.ActivityMonitor);
+    method public android.app.Instrumentation.ActivityMonitor addMonitor(android.content.IntentFilter, android.app.Instrumentation.ActivityResult, boolean);
+    method public android.app.Instrumentation.ActivityMonitor addMonitor(String, android.app.Instrumentation.ActivityResult, boolean);
+    method public void addResults(android.os.Bundle);
+    method public void callActivityOnCreate(android.app.Activity, android.os.Bundle);
+    method public void callActivityOnCreate(android.app.Activity, android.os.Bundle, android.os.PersistableBundle);
+    method public void callActivityOnDestroy(android.app.Activity);
+    method public void callActivityOnNewIntent(android.app.Activity, android.content.Intent);
+    method public void callActivityOnPause(android.app.Activity);
+    method public void callActivityOnPictureInPictureRequested(@NonNull android.app.Activity);
+    method public void callActivityOnPostCreate(@NonNull android.app.Activity, @Nullable android.os.Bundle);
+    method public void callActivityOnPostCreate(@NonNull android.app.Activity, @Nullable android.os.Bundle, @Nullable android.os.PersistableBundle);
+    method public void callActivityOnRestart(android.app.Activity);
+    method public void callActivityOnRestoreInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle);
+    method public void callActivityOnRestoreInstanceState(@NonNull android.app.Activity, @Nullable android.os.Bundle, @Nullable android.os.PersistableBundle);
+    method public void callActivityOnResume(android.app.Activity);
+    method public void callActivityOnSaveInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle);
+    method public void callActivityOnSaveInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle, @NonNull android.os.PersistableBundle);
+    method public void callActivityOnStart(android.app.Activity);
+    method public void callActivityOnStop(android.app.Activity);
+    method public void callActivityOnUserLeaving(android.app.Activity);
+    method public void callApplicationOnCreate(android.app.Application);
+    method public boolean checkMonitorHit(android.app.Instrumentation.ActivityMonitor, int);
+    method public void endPerformanceSnapshot();
+    method public void finish(int, android.os.Bundle);
+    method public android.os.Bundle getAllocCounts();
+    method public android.os.Bundle getBinderCounts();
+    method public android.content.ComponentName getComponentName();
+    method public android.content.Context getContext();
+    method public String getProcessName();
+    method public android.content.Context getTargetContext();
+    method public android.app.UiAutomation getUiAutomation();
+    method public android.app.UiAutomation getUiAutomation(int);
+    method public boolean invokeContextMenuAction(android.app.Activity, int, int);
+    method public boolean invokeMenuActionSync(android.app.Activity, int, int);
+    method public boolean isProfiling();
+    method public android.app.Activity newActivity(Class<?>, android.content.Context, android.os.IBinder, android.app.Application, android.content.Intent, android.content.pm.ActivityInfo, CharSequence, android.app.Activity, String, Object) throws java.lang.IllegalAccessException, java.lang.InstantiationException;
+    method public android.app.Activity newActivity(ClassLoader, String, android.content.Intent) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+    method public android.app.Application newApplication(ClassLoader, String, android.content.Context) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+    method public static android.app.Application newApplication(Class<?>, android.content.Context) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+    method public void onCreate(android.os.Bundle);
+    method public void onDestroy();
+    method public boolean onException(Object, Throwable);
+    method public void onStart();
+    method public void removeMonitor(android.app.Instrumentation.ActivityMonitor);
+    method public void runOnMainSync(Runnable);
+    method public void sendCharacterSync(int);
+    method public void sendKeyDownUpSync(int);
+    method public void sendKeySync(android.view.KeyEvent);
+    method public void sendPointerSync(android.view.MotionEvent);
+    method public void sendStatus(int, android.os.Bundle);
+    method public void sendStringSync(String);
+    method public void sendTrackballEventSync(android.view.MotionEvent);
+    method public void setAutomaticPerformanceSnapshots();
+    method public void setInTouchMode(boolean);
+    method public void start();
+    method public android.app.Activity startActivitySync(android.content.Intent);
+    method @NonNull public android.app.Activity startActivitySync(@NonNull android.content.Intent, @Nullable android.os.Bundle);
+    method @Deprecated public void startAllocCounting();
+    method public void startPerformanceSnapshot();
+    method public void startProfiling();
+    method @Deprecated public void stopAllocCounting();
+    method public void stopProfiling();
+    method public void waitForIdle(Runnable);
+    method public void waitForIdleSync();
+    method public android.app.Activity waitForMonitor(android.app.Instrumentation.ActivityMonitor);
+    method public android.app.Activity waitForMonitorWithTimeout(android.app.Instrumentation.ActivityMonitor, long);
+    field public static final String REPORT_KEY_IDENTIFIER = "id";
+    field public static final String REPORT_KEY_STREAMRESULT = "stream";
+  }
+
+  public static class Instrumentation.ActivityMonitor {
+    ctor public Instrumentation.ActivityMonitor(android.content.IntentFilter, android.app.Instrumentation.ActivityResult, boolean);
+    ctor public Instrumentation.ActivityMonitor(String, android.app.Instrumentation.ActivityResult, boolean);
+    ctor public Instrumentation.ActivityMonitor();
+    method public final android.content.IntentFilter getFilter();
+    method public final int getHits();
+    method public final android.app.Activity getLastActivity();
+    method public final android.app.Instrumentation.ActivityResult getResult();
+    method public final boolean isBlocking();
+    method public android.app.Instrumentation.ActivityResult onStartActivity(android.content.Intent);
+    method public final android.app.Activity waitForActivity();
+    method public final android.app.Activity waitForActivityWithTimeout(long);
+  }
+
+  public static final class Instrumentation.ActivityResult {
+    ctor public Instrumentation.ActivityResult(int, android.content.Intent);
+    method public int getResultCode();
+    method public android.content.Intent getResultData();
+  }
+
+  @Deprecated public abstract class IntentService extends android.app.Service {
+    ctor @Deprecated public IntentService(String);
+    method @Deprecated @Nullable public android.os.IBinder onBind(android.content.Intent);
+    method @Deprecated @WorkerThread protected abstract void onHandleIntent(@Nullable android.content.Intent);
+    method @Deprecated public void onStart(@Nullable android.content.Intent, int);
+    method @Deprecated public void setIntentRedelivery(boolean);
+  }
+
+  public class KeyguardManager {
+    method @Deprecated public android.content.Intent createConfirmDeviceCredentialIntent(CharSequence, CharSequence);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.DISABLE_KEYGUARD) public void exitKeyguardSecurely(android.app.KeyguardManager.OnKeyguardExitResult);
+    method @Deprecated public boolean inKeyguardRestrictedInputMode();
+    method public boolean isDeviceLocked();
+    method public boolean isDeviceSecure();
+    method public boolean isKeyguardLocked();
+    method public boolean isKeyguardSecure();
+    method @Deprecated public android.app.KeyguardManager.KeyguardLock newKeyguardLock(String);
+    method public void requestDismissKeyguard(@NonNull android.app.Activity, @Nullable android.app.KeyguardManager.KeyguardDismissCallback);
+  }
+
+  public abstract static class KeyguardManager.KeyguardDismissCallback {
+    ctor public KeyguardManager.KeyguardDismissCallback();
+    method public void onDismissCancelled();
+    method public void onDismissError();
+    method public void onDismissSucceeded();
+  }
+
+  @Deprecated public class KeyguardManager.KeyguardLock {
+    method @Deprecated @RequiresPermission(android.Manifest.permission.DISABLE_KEYGUARD) public void disableKeyguard();
+    method @Deprecated @RequiresPermission(android.Manifest.permission.DISABLE_KEYGUARD) public void reenableKeyguard();
+  }
+
+  @Deprecated public static interface KeyguardManager.OnKeyguardExitResult {
+    method @Deprecated public void onKeyguardExitResult(boolean);
+  }
+
+  @Deprecated public abstract class LauncherActivity extends android.app.ListActivity {
+    ctor @Deprecated public LauncherActivity();
+    method @Deprecated protected android.content.Intent getTargetIntent();
+    method @Deprecated protected android.content.Intent intentForPosition(int);
+    method @Deprecated protected android.app.LauncherActivity.ListItem itemForPosition(int);
+    method @Deprecated public java.util.List<android.app.LauncherActivity.ListItem> makeListItems();
+    method @Deprecated protected java.util.List<android.content.pm.ResolveInfo> onQueryPackageManager(android.content.Intent);
+    method @Deprecated protected void onSetContentView();
+  }
+
+  @Deprecated public class LauncherActivity.IconResizer {
+    ctor @Deprecated public LauncherActivity.IconResizer();
+    method @Deprecated public android.graphics.drawable.Drawable createIconThumbnail(android.graphics.drawable.Drawable);
+  }
+
+  @Deprecated public static class LauncherActivity.ListItem {
+    ctor @Deprecated public LauncherActivity.ListItem();
+    field @Deprecated public String className;
+    field @Deprecated public android.os.Bundle extras;
+    field @Deprecated public android.graphics.drawable.Drawable icon;
+    field @Deprecated public CharSequence label;
+    field @Deprecated public String packageName;
+    field @Deprecated public android.content.pm.ResolveInfo resolveInfo;
+  }
+
+  @Deprecated public class ListActivity extends android.app.Activity {
+    ctor @Deprecated public ListActivity();
+    method @Deprecated public android.widget.ListAdapter getListAdapter();
+    method @Deprecated public android.widget.ListView getListView();
+    method @Deprecated public long getSelectedItemId();
+    method @Deprecated public int getSelectedItemPosition();
+    method @Deprecated protected void onListItemClick(android.widget.ListView, android.view.View, int, long);
+    method @Deprecated public void setListAdapter(android.widget.ListAdapter);
+    method @Deprecated public void setSelection(int);
+  }
+
+  @Deprecated public class ListFragment extends android.app.Fragment {
+    ctor @Deprecated public ListFragment();
+    method @Deprecated public android.widget.ListAdapter getListAdapter();
+    method @Deprecated public android.widget.ListView getListView();
+    method @Deprecated public long getSelectedItemId();
+    method @Deprecated public int getSelectedItemPosition();
+    method @Deprecated public void onListItemClick(android.widget.ListView, android.view.View, int, long);
+    method @Deprecated public void setEmptyText(CharSequence);
+    method @Deprecated public void setListAdapter(android.widget.ListAdapter);
+    method @Deprecated public void setListShown(boolean);
+    method @Deprecated public void setListShownNoAnimation(boolean);
+    method @Deprecated public void setSelection(int);
+  }
+
+  @Deprecated public abstract class LoaderManager {
+    ctor @Deprecated public LoaderManager();
+    method @Deprecated public abstract void destroyLoader(int);
+    method @Deprecated public abstract void dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
+    method @Deprecated public static void enableDebugLogging(boolean);
+    method @Deprecated public abstract <D> android.content.Loader<D> getLoader(int);
+    method @Deprecated public abstract <D> android.content.Loader<D> initLoader(int, android.os.Bundle, android.app.LoaderManager.LoaderCallbacks<D>);
+    method @Deprecated public abstract <D> android.content.Loader<D> restartLoader(int, android.os.Bundle, android.app.LoaderManager.LoaderCallbacks<D>);
+  }
+
+  @Deprecated public static interface LoaderManager.LoaderCallbacks<D> {
+    method @Deprecated public android.content.Loader<D> onCreateLoader(int, android.os.Bundle);
+    method @Deprecated public void onLoadFinished(android.content.Loader<D>, D);
+    method @Deprecated public void onLoaderReset(android.content.Loader<D>);
+  }
+
+  @Deprecated public class LocalActivityManager {
+    ctor @Deprecated public LocalActivityManager(android.app.Activity, boolean);
+    method @Deprecated public android.view.Window destroyActivity(String, boolean);
+    method @Deprecated public void dispatchCreate(android.os.Bundle);
+    method @Deprecated public void dispatchDestroy(boolean);
+    method @Deprecated public void dispatchPause(boolean);
+    method @Deprecated public void dispatchResume();
+    method @Deprecated public void dispatchStop();
+    method @Deprecated public android.app.Activity getActivity(String);
+    method @Deprecated public android.app.Activity getCurrentActivity();
+    method @Deprecated public String getCurrentId();
+    method @Deprecated public void removeAllActivities();
+    method @Deprecated public android.os.Bundle saveInstanceState();
+    method @Deprecated public android.view.Window startActivity(String, android.content.Intent);
+  }
+
+  public class MediaRouteActionProvider extends android.view.ActionProvider {
+    ctor public MediaRouteActionProvider(android.content.Context);
+    method public android.view.View onCreateActionView();
+    method public void setExtendedSettingsClickListener(android.view.View.OnClickListener);
+    method public void setRouteTypes(int);
+  }
+
+  public class MediaRouteButton extends android.view.View {
+    ctor public MediaRouteButton(android.content.Context);
+    ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet);
+    ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet, int);
+    ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet, int, int);
+    method public int getRouteTypes();
+    method public void onAttachedToWindow();
+    method public void onDetachedFromWindow();
+    method public void setExtendedSettingsClickListener(android.view.View.OnClickListener);
+    method public void setRouteTypes(int);
+    method public void showDialog();
+  }
+
+  public class NativeActivity extends android.app.Activity implements android.view.InputQueue.Callback android.view.SurfaceHolder.Callback2 android.view.ViewTreeObserver.OnGlobalLayoutListener {
+    ctor public NativeActivity();
+    method public void onGlobalLayout();
+    method public void onInputQueueCreated(android.view.InputQueue);
+    method public void onInputQueueDestroyed(android.view.InputQueue);
+    method public void surfaceChanged(android.view.SurfaceHolder, int, int, int);
+    method public void surfaceCreated(android.view.SurfaceHolder);
+    method public void surfaceDestroyed(android.view.SurfaceHolder);
+    method public void surfaceRedrawNeeded(android.view.SurfaceHolder);
+    field public static final String META_DATA_FUNC_NAME = "android.app.func_name";
+    field public static final String META_DATA_LIB_NAME = "android.app.lib_name";
+  }
+
+  public class Notification implements android.os.Parcelable {
+    ctor public Notification();
+    ctor @Deprecated public Notification(int, CharSequence, long);
+    ctor public Notification(android.os.Parcel);
+    method public android.app.Notification clone();
+    method public int describeContents();
+    method @Nullable public android.util.Pair<android.app.RemoteInput,android.app.Notification.Action> findRemoteInputActionPair(boolean);
+    method public boolean getAllowSystemGeneratedContextualActions();
+    method public int getBadgeIconType();
+    method @Nullable public android.app.Notification.BubbleMetadata getBubbleMetadata();
+    method public String getChannelId();
+    method @NonNull public java.util.List<android.app.Notification.Action> getContextualActions();
+    method public String getGroup();
+    method public int getGroupAlertBehavior();
+    method public android.graphics.drawable.Icon getLargeIcon();
+    method @Nullable public android.content.LocusId getLocusId();
+    method public CharSequence getSettingsText();
+    method public String getShortcutId();
+    method public android.graphics.drawable.Icon getSmallIcon();
+    method public String getSortKey();
+    method public long getTimeoutAfter();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final android.media.AudioAttributes AUDIO_ATTRIBUTES_DEFAULT;
+    field public static final int BADGE_ICON_LARGE = 2; // 0x2
+    field public static final int BADGE_ICON_NONE = 0; // 0x0
+    field public static final int BADGE_ICON_SMALL = 1; // 0x1
+    field public static final String CATEGORY_ALARM = "alarm";
+    field public static final String CATEGORY_CALL = "call";
+    field public static final String CATEGORY_EMAIL = "email";
+    field public static final String CATEGORY_ERROR = "err";
+    field public static final String CATEGORY_EVENT = "event";
+    field public static final String CATEGORY_MESSAGE = "msg";
+    field public static final String CATEGORY_NAVIGATION = "navigation";
+    field public static final String CATEGORY_PROGRESS = "progress";
+    field public static final String CATEGORY_PROMO = "promo";
+    field public static final String CATEGORY_RECOMMENDATION = "recommendation";
+    field public static final String CATEGORY_REMINDER = "reminder";
+    field public static final String CATEGORY_SERVICE = "service";
+    field public static final String CATEGORY_SOCIAL = "social";
+    field public static final String CATEGORY_STATUS = "status";
+    field public static final String CATEGORY_SYSTEM = "sys";
+    field public static final String CATEGORY_TRANSPORT = "transport";
+    field @ColorInt public static final int COLOR_DEFAULT = 0; // 0x0
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.Notification> CREATOR;
+    field public static final int DEFAULT_ALL = -1; // 0xffffffff
+    field public static final int DEFAULT_LIGHTS = 4; // 0x4
+    field public static final int DEFAULT_SOUND = 1; // 0x1
+    field public static final int DEFAULT_VIBRATE = 2; // 0x2
+    field public static final String EXTRA_AUDIO_CONTENTS_URI = "android.audioContents";
+    field public static final String EXTRA_BACKGROUND_IMAGE_URI = "android.backgroundImageUri";
+    field public static final String EXTRA_BIG_TEXT = "android.bigText";
+    field public static final String EXTRA_CHANNEL_GROUP_ID = "android.intent.extra.CHANNEL_GROUP_ID";
+    field public static final String EXTRA_CHANNEL_ID = "android.intent.extra.CHANNEL_ID";
+    field public static final String EXTRA_CHRONOMETER_COUNT_DOWN = "android.chronometerCountDown";
+    field public static final String EXTRA_COLORIZED = "android.colorized";
+    field public static final String EXTRA_COMPACT_ACTIONS = "android.compactActions";
+    field public static final String EXTRA_CONVERSATION_TITLE = "android.conversationTitle";
+    field public static final String EXTRA_HISTORIC_MESSAGES = "android.messages.historic";
+    field public static final String EXTRA_INFO_TEXT = "android.infoText";
+    field public static final String EXTRA_IS_GROUP_CONVERSATION = "android.isGroupConversation";
+    field @Deprecated public static final String EXTRA_LARGE_ICON = "android.largeIcon";
+    field public static final String EXTRA_LARGE_ICON_BIG = "android.largeIcon.big";
+    field public static final String EXTRA_MEDIA_SESSION = "android.mediaSession";
+    field public static final String EXTRA_MESSAGES = "android.messages";
+    field public static final String EXTRA_MESSAGING_PERSON = "android.messagingUser";
+    field public static final String EXTRA_NOTIFICATION_ID = "android.intent.extra.NOTIFICATION_ID";
+    field public static final String EXTRA_NOTIFICATION_TAG = "android.intent.extra.NOTIFICATION_TAG";
+    field @Deprecated public static final String EXTRA_PEOPLE = "android.people";
+    field public static final String EXTRA_PEOPLE_LIST = "android.people.list";
+    field public static final String EXTRA_PICTURE = "android.picture";
+    field public static final String EXTRA_PROGRESS = "android.progress";
+    field public static final String EXTRA_PROGRESS_INDETERMINATE = "android.progressIndeterminate";
+    field public static final String EXTRA_PROGRESS_MAX = "android.progressMax";
+    field public static final String EXTRA_REMOTE_INPUT_DRAFT = "android.remoteInputDraft";
+    field public static final String EXTRA_REMOTE_INPUT_HISTORY = "android.remoteInputHistory";
+    field @Deprecated public static final String EXTRA_SELF_DISPLAY_NAME = "android.selfDisplayName";
+    field public static final String EXTRA_SHOW_CHRONOMETER = "android.showChronometer";
+    field public static final String EXTRA_SHOW_WHEN = "android.showWhen";
+    field @Deprecated public static final String EXTRA_SMALL_ICON = "android.icon";
+    field public static final String EXTRA_SUB_TEXT = "android.subText";
+    field public static final String EXTRA_SUMMARY_TEXT = "android.summaryText";
+    field public static final String EXTRA_TEMPLATE = "android.template";
+    field public static final String EXTRA_TEXT = "android.text";
+    field public static final String EXTRA_TEXT_LINES = "android.textLines";
+    field public static final String EXTRA_TITLE = "android.title";
+    field public static final String EXTRA_TITLE_BIG = "android.title.big";
+    field public static final int FLAG_AUTO_CANCEL = 16; // 0x10
+    field public static final int FLAG_BUBBLE = 4096; // 0x1000
+    field public static final int FLAG_FOREGROUND_SERVICE = 64; // 0x40
+    field public static final int FLAG_GROUP_SUMMARY = 512; // 0x200
+    field @Deprecated public static final int FLAG_HIGH_PRIORITY = 128; // 0x80
+    field public static final int FLAG_INSISTENT = 4; // 0x4
+    field public static final int FLAG_LOCAL_ONLY = 256; // 0x100
+    field public static final int FLAG_NO_CLEAR = 32; // 0x20
+    field public static final int FLAG_ONGOING_EVENT = 2; // 0x2
+    field public static final int FLAG_ONLY_ALERT_ONCE = 8; // 0x8
+    field @Deprecated public static final int FLAG_SHOW_LIGHTS = 1; // 0x1
+    field public static final int GROUP_ALERT_ALL = 0; // 0x0
+    field public static final int GROUP_ALERT_CHILDREN = 2; // 0x2
+    field public static final int GROUP_ALERT_SUMMARY = 1; // 0x1
+    field public static final String INTENT_CATEGORY_NOTIFICATION_PREFERENCES = "android.intent.category.NOTIFICATION_PREFERENCES";
+    field @Deprecated public static final int PRIORITY_DEFAULT = 0; // 0x0
+    field @Deprecated public static final int PRIORITY_HIGH = 1; // 0x1
+    field @Deprecated public static final int PRIORITY_LOW = -1; // 0xffffffff
+    field @Deprecated public static final int PRIORITY_MAX = 2; // 0x2
+    field @Deprecated public static final int PRIORITY_MIN = -2; // 0xfffffffe
+    field @Deprecated public static final int STREAM_DEFAULT = -1; // 0xffffffff
+    field public static final int VISIBILITY_PRIVATE = 0; // 0x0
+    field public static final int VISIBILITY_PUBLIC = 1; // 0x1
+    field public static final int VISIBILITY_SECRET = -1; // 0xffffffff
+    field public android.app.Notification.Action[] actions;
+    field @Deprecated public android.media.AudioAttributes audioAttributes;
+    field @Deprecated public int audioStreamType;
+    field @Deprecated public android.widget.RemoteViews bigContentView;
+    field public String category;
+    field @ColorInt public int color;
+    field public android.app.PendingIntent contentIntent;
+    field @Deprecated public android.widget.RemoteViews contentView;
+    field @Deprecated public int defaults;
+    field public android.app.PendingIntent deleteIntent;
+    field public android.os.Bundle extras;
+    field public int flags;
+    field public android.app.PendingIntent fullScreenIntent;
+    field @Deprecated public android.widget.RemoteViews headsUpContentView;
+    field @Deprecated @DrawableRes public int icon;
+    field public int iconLevel;
+    field @Deprecated public android.graphics.Bitmap largeIcon;
+    field @Deprecated @ColorInt public int ledARGB;
+    field @Deprecated public int ledOffMS;
+    field @Deprecated public int ledOnMS;
+    field public int number;
+    field @Deprecated public int priority;
+    field public android.app.Notification publicVersion;
+    field @Deprecated public android.net.Uri sound;
+    field public CharSequence tickerText;
+    field @Deprecated public android.widget.RemoteViews tickerView;
+    field @Deprecated public long[] vibrate;
+    field public int visibility;
+    field public long when;
+  }
+
+  public static class Notification.Action implements android.os.Parcelable {
+    ctor @Deprecated public Notification.Action(int, CharSequence, android.app.PendingIntent);
+    method public android.app.Notification.Action clone();
+    method public int describeContents();
+    method public boolean getAllowGeneratedReplies();
+    method public android.app.RemoteInput[] getDataOnlyRemoteInputs();
+    method public android.os.Bundle getExtras();
+    method public android.graphics.drawable.Icon getIcon();
+    method public android.app.RemoteInput[] getRemoteInputs();
+    method public int getSemanticAction();
+    method public boolean isContextual();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.Notification.Action> CREATOR;
+    field public static final int SEMANTIC_ACTION_ARCHIVE = 5; // 0x5
+    field public static final int SEMANTIC_ACTION_CALL = 10; // 0xa
+    field public static final int SEMANTIC_ACTION_DELETE = 4; // 0x4
+    field public static final int SEMANTIC_ACTION_MARK_AS_READ = 2; // 0x2
+    field public static final int SEMANTIC_ACTION_MARK_AS_UNREAD = 3; // 0x3
+    field public static final int SEMANTIC_ACTION_MUTE = 6; // 0x6
+    field public static final int SEMANTIC_ACTION_NONE = 0; // 0x0
+    field public static final int SEMANTIC_ACTION_REPLY = 1; // 0x1
+    field public static final int SEMANTIC_ACTION_THUMBS_DOWN = 9; // 0x9
+    field public static final int SEMANTIC_ACTION_THUMBS_UP = 8; // 0x8
+    field public static final int SEMANTIC_ACTION_UNMUTE = 7; // 0x7
+    field public android.app.PendingIntent actionIntent;
+    field @Deprecated public int icon;
+    field public CharSequence title;
+  }
+
+  public static final class Notification.Action.Builder {
+    ctor @Deprecated public Notification.Action.Builder(int, CharSequence, android.app.PendingIntent);
+    ctor public Notification.Action.Builder(android.graphics.drawable.Icon, CharSequence, android.app.PendingIntent);
+    ctor public Notification.Action.Builder(android.app.Notification.Action);
+    method @NonNull public android.app.Notification.Action.Builder addExtras(android.os.Bundle);
+    method @NonNull public android.app.Notification.Action.Builder addRemoteInput(android.app.RemoteInput);
+    method @NonNull public android.app.Notification.Action build();
+    method @NonNull public android.app.Notification.Action.Builder extend(android.app.Notification.Action.Extender);
+    method @NonNull public android.os.Bundle getExtras();
+    method @NonNull public android.app.Notification.Action.Builder setAllowGeneratedReplies(boolean);
+    method @NonNull public android.app.Notification.Action.Builder setContextual(boolean);
+    method @NonNull public android.app.Notification.Action.Builder setSemanticAction(int);
+  }
+
+  public static interface Notification.Action.Extender {
+    method public android.app.Notification.Action.Builder extend(android.app.Notification.Action.Builder);
+  }
+
+  public static final class Notification.Action.WearableExtender implements android.app.Notification.Action.Extender {
+    ctor public Notification.Action.WearableExtender();
+    ctor public Notification.Action.WearableExtender(android.app.Notification.Action);
+    method public android.app.Notification.Action.WearableExtender clone();
+    method public android.app.Notification.Action.Builder extend(android.app.Notification.Action.Builder);
+    method @Deprecated public CharSequence getCancelLabel();
+    method @Deprecated public CharSequence getConfirmLabel();
+    method public boolean getHintDisplayActionInline();
+    method public boolean getHintLaunchesActivity();
+    method @Deprecated public CharSequence getInProgressLabel();
+    method public boolean isAvailableOffline();
+    method public android.app.Notification.Action.WearableExtender setAvailableOffline(boolean);
+    method @Deprecated public android.app.Notification.Action.WearableExtender setCancelLabel(CharSequence);
+    method @Deprecated public android.app.Notification.Action.WearableExtender setConfirmLabel(CharSequence);
+    method public android.app.Notification.Action.WearableExtender setHintDisplayActionInline(boolean);
+    method public android.app.Notification.Action.WearableExtender setHintLaunchesActivity(boolean);
+    method @Deprecated public android.app.Notification.Action.WearableExtender setInProgressLabel(CharSequence);
+  }
+
+  public static class Notification.BigPictureStyle extends android.app.Notification.Style {
+    ctor public Notification.BigPictureStyle();
+    ctor @Deprecated public Notification.BigPictureStyle(android.app.Notification.Builder);
+    method public android.app.Notification.BigPictureStyle bigLargeIcon(android.graphics.Bitmap);
+    method public android.app.Notification.BigPictureStyle bigLargeIcon(android.graphics.drawable.Icon);
+    method public android.app.Notification.BigPictureStyle bigPicture(android.graphics.Bitmap);
+    method public android.app.Notification.BigPictureStyle setBigContentTitle(CharSequence);
+    method public android.app.Notification.BigPictureStyle setSummaryText(CharSequence);
+  }
+
+  public static class Notification.BigTextStyle extends android.app.Notification.Style {
+    ctor public Notification.BigTextStyle();
+    ctor @Deprecated public Notification.BigTextStyle(android.app.Notification.Builder);
+    method public android.app.Notification.BigTextStyle bigText(CharSequence);
+    method public android.app.Notification.BigTextStyle setBigContentTitle(CharSequence);
+    method public android.app.Notification.BigTextStyle setSummaryText(CharSequence);
+  }
+
+  public static final class Notification.BubbleMetadata implements android.os.Parcelable {
+    method public int describeContents();
+    method public boolean getAutoExpandBubble();
+    method @Nullable public android.app.PendingIntent getDeleteIntent();
+    method @Dimension(unit=android.annotation.Dimension.DP) public int getDesiredHeight();
+    method @DimenRes public int getDesiredHeightResId();
+    method @Nullable public android.graphics.drawable.Icon getIcon();
+    method @Nullable public android.app.PendingIntent getIntent();
+    method @Nullable public String getShortcutId();
+    method public boolean isNotificationSuppressed();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.Notification.BubbleMetadata> CREATOR;
+  }
+
+  public static final class Notification.BubbleMetadata.Builder {
+    ctor @Deprecated public Notification.BubbleMetadata.Builder();
+    ctor public Notification.BubbleMetadata.Builder(@NonNull String);
+    ctor public Notification.BubbleMetadata.Builder(@NonNull android.app.PendingIntent, @NonNull android.graphics.drawable.Icon);
+    method @NonNull public android.app.Notification.BubbleMetadata build();
+    method @NonNull public android.app.Notification.BubbleMetadata.Builder setAutoExpandBubble(boolean);
+    method @NonNull public android.app.Notification.BubbleMetadata.Builder setDeleteIntent(@Nullable android.app.PendingIntent);
+    method @NonNull public android.app.Notification.BubbleMetadata.Builder setDesiredHeight(@Dimension(unit=android.annotation.Dimension.DP) int);
+    method @NonNull public android.app.Notification.BubbleMetadata.Builder setDesiredHeightResId(@DimenRes int);
+    method @NonNull public android.app.Notification.BubbleMetadata.Builder setIcon(@NonNull android.graphics.drawable.Icon);
+    method @NonNull public android.app.Notification.BubbleMetadata.Builder setIntent(@NonNull android.app.PendingIntent);
+    method @NonNull public android.app.Notification.BubbleMetadata.Builder setSuppressNotification(boolean);
+  }
+
+  public static class Notification.Builder {
+    ctor public Notification.Builder(android.content.Context, String);
+    ctor @Deprecated public Notification.Builder(android.content.Context);
+    method @Deprecated public android.app.Notification.Builder addAction(int, CharSequence, android.app.PendingIntent);
+    method @NonNull public android.app.Notification.Builder addAction(android.app.Notification.Action);
+    method @NonNull public android.app.Notification.Builder addExtras(android.os.Bundle);
+    method @Deprecated public android.app.Notification.Builder addPerson(String);
+    method @NonNull public android.app.Notification.Builder addPerson(android.app.Person);
+    method @NonNull public android.app.Notification build();
+    method public android.widget.RemoteViews createBigContentView();
+    method public android.widget.RemoteViews createContentView();
+    method public android.widget.RemoteViews createHeadsUpContentView();
+    method @NonNull public android.app.Notification.Builder extend(android.app.Notification.Extender);
+    method public android.os.Bundle getExtras();
+    method @Deprecated public android.app.Notification getNotification();
+    method public android.app.Notification.Style getStyle();
+    method @NonNull public static android.app.Notification.Builder recoverBuilder(android.content.Context, android.app.Notification);
+    method @NonNull public android.app.Notification.Builder setActions(android.app.Notification.Action...);
+    method @NonNull public android.app.Notification.Builder setAllowSystemGeneratedContextualActions(boolean);
+    method @NonNull public android.app.Notification.Builder setAutoCancel(boolean);
+    method @NonNull public android.app.Notification.Builder setBadgeIconType(int);
+    method @NonNull public android.app.Notification.Builder setBubbleMetadata(@Nullable android.app.Notification.BubbleMetadata);
+    method @NonNull public android.app.Notification.Builder setCategory(String);
+    method @NonNull public android.app.Notification.Builder setChannelId(String);
+    method @NonNull public android.app.Notification.Builder setChronometerCountDown(boolean);
+    method @NonNull public android.app.Notification.Builder setColor(@ColorInt int);
+    method @NonNull public android.app.Notification.Builder setColorized(boolean);
+    method @Deprecated public android.app.Notification.Builder setContent(android.widget.RemoteViews);
+    method @Deprecated public android.app.Notification.Builder setContentInfo(CharSequence);
+    method @NonNull public android.app.Notification.Builder setContentIntent(android.app.PendingIntent);
+    method @NonNull public android.app.Notification.Builder setContentText(CharSequence);
+    method @NonNull public android.app.Notification.Builder setContentTitle(CharSequence);
+    method @NonNull public android.app.Notification.Builder setCustomBigContentView(android.widget.RemoteViews);
+    method @NonNull public android.app.Notification.Builder setCustomContentView(android.widget.RemoteViews);
+    method @NonNull public android.app.Notification.Builder setCustomHeadsUpContentView(android.widget.RemoteViews);
+    method @Deprecated public android.app.Notification.Builder setDefaults(int);
+    method @NonNull public android.app.Notification.Builder setDeleteIntent(android.app.PendingIntent);
+    method @NonNull public android.app.Notification.Builder setExtras(android.os.Bundle);
+    method @NonNull public android.app.Notification.Builder setFlag(int, boolean);
+    method @NonNull public android.app.Notification.Builder setFullScreenIntent(android.app.PendingIntent, boolean);
+    method @NonNull public android.app.Notification.Builder setGroup(String);
+    method @NonNull public android.app.Notification.Builder setGroupAlertBehavior(int);
+    method @NonNull public android.app.Notification.Builder setGroupSummary(boolean);
+    method @NonNull public android.app.Notification.Builder setLargeIcon(android.graphics.Bitmap);
+    method @NonNull public android.app.Notification.Builder setLargeIcon(android.graphics.drawable.Icon);
+    method @Deprecated public android.app.Notification.Builder setLights(@ColorInt int, int, int);
+    method @NonNull public android.app.Notification.Builder setLocalOnly(boolean);
+    method @NonNull public android.app.Notification.Builder setLocusId(@Nullable android.content.LocusId);
+    method @NonNull public android.app.Notification.Builder setNumber(int);
+    method @NonNull public android.app.Notification.Builder setOngoing(boolean);
+    method @NonNull public android.app.Notification.Builder setOnlyAlertOnce(boolean);
+    method @Deprecated public android.app.Notification.Builder setPriority(int);
+    method @NonNull public android.app.Notification.Builder setProgress(int, int, boolean);
+    method @NonNull public android.app.Notification.Builder setPublicVersion(android.app.Notification);
+    method @NonNull public android.app.Notification.Builder setRemoteInputHistory(CharSequence[]);
+    method @NonNull public android.app.Notification.Builder setSettingsText(CharSequence);
+    method @NonNull public android.app.Notification.Builder setShortcutId(String);
+    method @NonNull public android.app.Notification.Builder setShowWhen(boolean);
+    method @NonNull public android.app.Notification.Builder setSmallIcon(@DrawableRes int);
+    method @NonNull public android.app.Notification.Builder setSmallIcon(@DrawableRes int, int);
+    method @NonNull public android.app.Notification.Builder setSmallIcon(android.graphics.drawable.Icon);
+    method @NonNull public android.app.Notification.Builder setSortKey(String);
+    method @Deprecated public android.app.Notification.Builder setSound(android.net.Uri);
+    method @Deprecated public android.app.Notification.Builder setSound(android.net.Uri, int);
+    method @Deprecated public android.app.Notification.Builder setSound(android.net.Uri, android.media.AudioAttributes);
+    method @NonNull public android.app.Notification.Builder setStyle(android.app.Notification.Style);
+    method @NonNull public android.app.Notification.Builder setSubText(CharSequence);
+    method @NonNull public android.app.Notification.Builder setTicker(CharSequence);
+    method @Deprecated public android.app.Notification.Builder setTicker(CharSequence, android.widget.RemoteViews);
+    method @NonNull public android.app.Notification.Builder setTimeoutAfter(long);
+    method @NonNull public android.app.Notification.Builder setUsesChronometer(boolean);
+    method @Deprecated public android.app.Notification.Builder setVibrate(long[]);
+    method @NonNull public android.app.Notification.Builder setVisibility(int);
+    method @NonNull public android.app.Notification.Builder setWhen(long);
+  }
+
+  public static final class Notification.CarExtender implements android.app.Notification.Extender {
+    ctor public Notification.CarExtender();
+    ctor public Notification.CarExtender(android.app.Notification);
+    method public android.app.Notification.Builder extend(android.app.Notification.Builder);
+    method @ColorInt public int getColor();
+    method public android.graphics.Bitmap getLargeIcon();
+    method public android.app.Notification.CarExtender.UnreadConversation getUnreadConversation();
+    method public android.app.Notification.CarExtender setColor(@ColorInt int);
+    method public android.app.Notification.CarExtender setLargeIcon(android.graphics.Bitmap);
+    method public android.app.Notification.CarExtender setUnreadConversation(android.app.Notification.CarExtender.UnreadConversation);
+  }
+
+  public static class Notification.CarExtender.Builder {
+    ctor public Notification.CarExtender.Builder(String);
+    method public android.app.Notification.CarExtender.Builder addMessage(String);
+    method public android.app.Notification.CarExtender.UnreadConversation build();
+    method public android.app.Notification.CarExtender.Builder setLatestTimestamp(long);
+    method public android.app.Notification.CarExtender.Builder setReadPendingIntent(android.app.PendingIntent);
+    method public android.app.Notification.CarExtender.Builder setReplyAction(android.app.PendingIntent, android.app.RemoteInput);
+  }
+
+  public static class Notification.CarExtender.UnreadConversation {
+    method public long getLatestTimestamp();
+    method public String[] getMessages();
+    method public String getParticipant();
+    method public String[] getParticipants();
+    method public android.app.PendingIntent getReadPendingIntent();
+    method public android.app.RemoteInput getRemoteInput();
+    method public android.app.PendingIntent getReplyPendingIntent();
+  }
+
+  public static class Notification.DecoratedCustomViewStyle extends android.app.Notification.Style {
+    ctor public Notification.DecoratedCustomViewStyle();
+  }
+
+  public static class Notification.DecoratedMediaCustomViewStyle extends android.app.Notification.MediaStyle {
+    ctor public Notification.DecoratedMediaCustomViewStyle();
+  }
+
+  public static interface Notification.Extender {
+    method public android.app.Notification.Builder extend(android.app.Notification.Builder);
+  }
+
+  public static class Notification.InboxStyle extends android.app.Notification.Style {
+    ctor public Notification.InboxStyle();
+    ctor @Deprecated public Notification.InboxStyle(android.app.Notification.Builder);
+    method public android.app.Notification.InboxStyle addLine(CharSequence);
+    method public android.app.Notification.InboxStyle setBigContentTitle(CharSequence);
+    method public android.app.Notification.InboxStyle setSummaryText(CharSequence);
+  }
+
+  public static class Notification.MediaStyle extends android.app.Notification.Style {
+    ctor public Notification.MediaStyle();
+    ctor @Deprecated public Notification.MediaStyle(android.app.Notification.Builder);
+    method public android.app.Notification.MediaStyle setMediaSession(android.media.session.MediaSession.Token);
+    method public android.app.Notification.MediaStyle setShowActionsInCompactView(int...);
+  }
+
+  public static class Notification.MessagingStyle extends android.app.Notification.Style {
+    ctor @Deprecated public Notification.MessagingStyle(@NonNull CharSequence);
+    ctor public Notification.MessagingStyle(@NonNull android.app.Person);
+    method public android.app.Notification.MessagingStyle addHistoricMessage(android.app.Notification.MessagingStyle.Message);
+    method @Deprecated public android.app.Notification.MessagingStyle addMessage(CharSequence, long, CharSequence);
+    method public android.app.Notification.MessagingStyle addMessage(@NonNull CharSequence, long, @Nullable android.app.Person);
+    method public android.app.Notification.MessagingStyle addMessage(android.app.Notification.MessagingStyle.Message);
+    method @Nullable public CharSequence getConversationTitle();
+    method public java.util.List<android.app.Notification.MessagingStyle.Message> getHistoricMessages();
+    method public java.util.List<android.app.Notification.MessagingStyle.Message> getMessages();
+    method @NonNull public android.app.Person getUser();
+    method @Deprecated public CharSequence getUserDisplayName();
+    method public boolean isGroupConversation();
+    method public android.app.Notification.MessagingStyle setConversationTitle(@Nullable CharSequence);
+    method public android.app.Notification.MessagingStyle setGroupConversation(boolean);
+    field public static final int MAXIMUM_RETAINED_MESSAGES = 25; // 0x19
+  }
+
+  public static final class Notification.MessagingStyle.Message {
+    ctor @Deprecated public Notification.MessagingStyle.Message(CharSequence, long, CharSequence);
+    ctor public Notification.MessagingStyle.Message(@NonNull CharSequence, long, @Nullable android.app.Person);
+    method public String getDataMimeType();
+    method public android.net.Uri getDataUri();
+    method public android.os.Bundle getExtras();
+    method @NonNull public static java.util.List<android.app.Notification.MessagingStyle.Message> getMessagesFromBundleArray(@Nullable android.os.Parcelable[]);
+    method @Deprecated public CharSequence getSender();
+    method @Nullable public android.app.Person getSenderPerson();
+    method public CharSequence getText();
+    method public long getTimestamp();
+    method public android.app.Notification.MessagingStyle.Message setData(String, android.net.Uri);
+  }
+
+  public abstract static class Notification.Style {
+    ctor public Notification.Style();
+    method public android.app.Notification build();
+    method protected void checkBuilder();
+    method protected android.widget.RemoteViews getStandardView(int);
+    method protected void internalSetBigContentTitle(CharSequence);
+    method protected void internalSetSummaryText(CharSequence);
+    method public void setBuilder(android.app.Notification.Builder);
+    field protected android.app.Notification.Builder mBuilder;
+  }
+
+  public static final class Notification.WearableExtender implements android.app.Notification.Extender {
+    ctor public Notification.WearableExtender();
+    ctor public Notification.WearableExtender(android.app.Notification);
+    method public android.app.Notification.WearableExtender addAction(android.app.Notification.Action);
+    method public android.app.Notification.WearableExtender addActions(java.util.List<android.app.Notification.Action>);
+    method @Deprecated public android.app.Notification.WearableExtender addPage(android.app.Notification);
+    method @Deprecated public android.app.Notification.WearableExtender addPages(java.util.List<android.app.Notification>);
+    method public android.app.Notification.WearableExtender clearActions();
+    method @Deprecated public android.app.Notification.WearableExtender clearPages();
+    method public android.app.Notification.WearableExtender clone();
+    method public android.app.Notification.Builder extend(android.app.Notification.Builder);
+    method public java.util.List<android.app.Notification.Action> getActions();
+    method @Deprecated public android.graphics.Bitmap getBackground();
+    method public String getBridgeTag();
+    method public int getContentAction();
+    method @Deprecated public int getContentIcon();
+    method @Deprecated public int getContentIconGravity();
+    method public boolean getContentIntentAvailableOffline();
+    method @Deprecated public int getCustomContentHeight();
+    method @Deprecated public int getCustomSizePreset();
+    method public String getDismissalId();
+    method @Deprecated public android.app.PendingIntent getDisplayIntent();
+    method @Deprecated public int getGravity();
+    method @Deprecated public boolean getHintAmbientBigPicture();
+    method @Deprecated public boolean getHintAvoidBackgroundClipping();
+    method public boolean getHintContentIntentLaunchesActivity();
+    method @Deprecated public boolean getHintHideIcon();
+    method @Deprecated public int getHintScreenTimeout();
+    method @Deprecated public boolean getHintShowBackgroundOnly();
+    method @Deprecated public java.util.List<android.app.Notification> getPages();
+    method public boolean getStartScrollBottom();
+    method @Deprecated public android.app.Notification.WearableExtender setBackground(android.graphics.Bitmap);
+    method public android.app.Notification.WearableExtender setBridgeTag(String);
+    method public android.app.Notification.WearableExtender setContentAction(int);
+    method @Deprecated public android.app.Notification.WearableExtender setContentIcon(int);
+    method @Deprecated public android.app.Notification.WearableExtender setContentIconGravity(int);
+    method public android.app.Notification.WearableExtender setContentIntentAvailableOffline(boolean);
+    method @Deprecated public android.app.Notification.WearableExtender setCustomContentHeight(int);
+    method @Deprecated public android.app.Notification.WearableExtender setCustomSizePreset(int);
+    method public android.app.Notification.WearableExtender setDismissalId(String);
+    method @Deprecated public android.app.Notification.WearableExtender setDisplayIntent(android.app.PendingIntent);
+    method @Deprecated public android.app.Notification.WearableExtender setGravity(int);
+    method @Deprecated public android.app.Notification.WearableExtender setHintAmbientBigPicture(boolean);
+    method @Deprecated public android.app.Notification.WearableExtender setHintAvoidBackgroundClipping(boolean);
+    method public android.app.Notification.WearableExtender setHintContentIntentLaunchesActivity(boolean);
+    method @Deprecated public android.app.Notification.WearableExtender setHintHideIcon(boolean);
+    method @Deprecated public android.app.Notification.WearableExtender setHintScreenTimeout(int);
+    method @Deprecated public android.app.Notification.WearableExtender setHintShowBackgroundOnly(boolean);
+    method public android.app.Notification.WearableExtender setStartScrollBottom(boolean);
+    field @Deprecated public static final int SCREEN_TIMEOUT_LONG = -1; // 0xffffffff
+    field @Deprecated public static final int SCREEN_TIMEOUT_SHORT = 0; // 0x0
+    field @Deprecated public static final int SIZE_DEFAULT = 0; // 0x0
+    field @Deprecated public static final int SIZE_FULL_SCREEN = 5; // 0x5
+    field @Deprecated public static final int SIZE_LARGE = 4; // 0x4
+    field @Deprecated public static final int SIZE_MEDIUM = 3; // 0x3
+    field @Deprecated public static final int SIZE_SMALL = 2; // 0x2
+    field @Deprecated public static final int SIZE_XSMALL = 1; // 0x1
+    field public static final int UNSET_ACTION_INDEX = -1; // 0xffffffff
+  }
+
+  public final class NotificationChannel implements android.os.Parcelable {
+    ctor public NotificationChannel(String, CharSequence, int);
+    method public boolean canBubble();
+    method public boolean canBypassDnd();
+    method public boolean canShowBadge();
+    method public int describeContents();
+    method public void enableLights(boolean);
+    method public void enableVibration(boolean);
+    method public android.media.AudioAttributes getAudioAttributes();
+    method @Nullable public String getConversationId();
+    method public String getDescription();
+    method public String getGroup();
+    method public String getId();
+    method public int getImportance();
+    method public int getLightColor();
+    method public int getLockscreenVisibility();
+    method public CharSequence getName();
+    method @Nullable public String getParentChannelId();
+    method public android.net.Uri getSound();
+    method public long[] getVibrationPattern();
+    method public boolean hasUserSetImportance();
+    method public boolean hasUserSetSound();
+    method public boolean isImportantConversation();
+    method public void setAllowBubbles(boolean);
+    method public void setBypassDnd(boolean);
+    method public void setConversationId(@NonNull String, @NonNull String);
+    method public void setDescription(String);
+    method public void setGroup(String);
+    method public void setImportance(int);
+    method public void setLightColor(int);
+    method public void setLockscreenVisibility(int);
+    method public void setName(CharSequence);
+    method public void setShowBadge(boolean);
+    method public void setSound(android.net.Uri, android.media.AudioAttributes);
+    method public void setVibrationPattern(long[]);
+    method public boolean shouldShowLights();
+    method public boolean shouldVibrate();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.NotificationChannel> CREATOR;
+    field public static final String DEFAULT_CHANNEL_ID = "miscellaneous";
+  }
+
+  public final class NotificationChannelGroup implements android.os.Parcelable {
+    ctor public NotificationChannelGroup(String, CharSequence);
+    method public android.app.NotificationChannelGroup clone();
+    method public int describeContents();
+    method public java.util.List<android.app.NotificationChannel> getChannels();
+    method public String getDescription();
+    method public String getId();
+    method public CharSequence getName();
+    method public boolean isBlocked();
+    method public void setDescription(String);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.NotificationChannelGroup> CREATOR;
+  }
+
+  public class NotificationManager {
+    method public String addAutomaticZenRule(android.app.AutomaticZenRule);
+    method public boolean areBubblesAllowed();
+    method public boolean areNotificationsEnabled();
+    method public boolean areNotificationsPaused();
+    method public boolean canNotifyAsPackage(@NonNull String);
+    method public void cancel(int);
+    method public void cancel(@Nullable String, int);
+    method public void cancelAll();
+    method public void cancelAsPackage(@NonNull String, @Nullable String, int);
+    method public void createNotificationChannel(@NonNull android.app.NotificationChannel);
+    method public void createNotificationChannelGroup(@NonNull android.app.NotificationChannelGroup);
+    method public void createNotificationChannelGroups(@NonNull java.util.List<android.app.NotificationChannelGroup>);
+    method public void createNotificationChannels(@NonNull java.util.List<android.app.NotificationChannel>);
+    method public void deleteNotificationChannel(String);
+    method public void deleteNotificationChannelGroup(String);
+    method public android.service.notification.StatusBarNotification[] getActiveNotifications();
+    method public android.app.AutomaticZenRule getAutomaticZenRule(String);
+    method public java.util.Map<java.lang.String,android.app.AutomaticZenRule> getAutomaticZenRules();
+    method @NonNull public android.app.NotificationManager.Policy getConsolidatedNotificationPolicy();
+    method public final int getCurrentInterruptionFilter();
+    method public int getImportance();
+    method public android.app.NotificationChannel getNotificationChannel(String);
+    method @Nullable public android.app.NotificationChannel getNotificationChannel(@NonNull String, @NonNull String);
+    method public android.app.NotificationChannelGroup getNotificationChannelGroup(String);
+    method public java.util.List<android.app.NotificationChannelGroup> getNotificationChannelGroups();
+    method public java.util.List<android.app.NotificationChannel> getNotificationChannels();
+    method @Nullable public String getNotificationDelegate();
+    method public android.app.NotificationManager.Policy getNotificationPolicy();
+    method public boolean isNotificationListenerAccessGranted(android.content.ComponentName);
+    method public boolean isNotificationPolicyAccessGranted();
+    method public void notify(int, android.app.Notification);
+    method public void notify(String, int, android.app.Notification);
+    method public void notifyAsPackage(@NonNull String, @Nullable String, int, @NonNull android.app.Notification);
+    method public boolean removeAutomaticZenRule(String);
+    method public void setAutomaticZenRuleState(@NonNull String, @NonNull android.service.notification.Condition);
+    method public final void setInterruptionFilter(int);
+    method public void setNotificationDelegate(@Nullable String);
+    method public void setNotificationPolicy(@NonNull android.app.NotificationManager.Policy);
+    method public boolean shouldHideSilentStatusBarIcons();
+    method public boolean updateAutomaticZenRule(String, android.app.AutomaticZenRule);
+    field public static final String ACTION_APP_BLOCK_STATE_CHANGED = "android.app.action.APP_BLOCK_STATE_CHANGED";
+    field public static final String ACTION_AUTOMATIC_ZEN_RULE = "android.app.action.AUTOMATIC_ZEN_RULE";
+    field public static final String ACTION_AUTOMATIC_ZEN_RULE_STATUS_CHANGED = "android.app.action.AUTOMATIC_ZEN_RULE_STATUS_CHANGED";
+    field public static final String ACTION_INTERRUPTION_FILTER_CHANGED = "android.app.action.INTERRUPTION_FILTER_CHANGED";
+    field public static final String ACTION_NOTIFICATION_CHANNEL_BLOCK_STATE_CHANGED = "android.app.action.NOTIFICATION_CHANNEL_BLOCK_STATE_CHANGED";
+    field public static final String ACTION_NOTIFICATION_CHANNEL_GROUP_BLOCK_STATE_CHANGED = "android.app.action.NOTIFICATION_CHANNEL_GROUP_BLOCK_STATE_CHANGED";
+    field public static final String ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED = "android.app.action.NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED";
+    field public static final String ACTION_NOTIFICATION_POLICY_CHANGED = "android.app.action.NOTIFICATION_POLICY_CHANGED";
+    field public static final int AUTOMATIC_RULE_STATUS_DISABLED = 2; // 0x2
+    field public static final int AUTOMATIC_RULE_STATUS_ENABLED = 1; // 0x1
+    field public static final int AUTOMATIC_RULE_STATUS_REMOVED = 3; // 0x3
+    field public static final int AUTOMATIC_RULE_STATUS_UNKNOWN = -1; // 0xffffffff
+    field public static final String EXTRA_AUTOMATIC_RULE_ID = "android.app.extra.AUTOMATIC_RULE_ID";
+    field public static final String EXTRA_AUTOMATIC_ZEN_RULE_ID = "android.app.extra.AUTOMATIC_ZEN_RULE_ID";
+    field public static final String EXTRA_AUTOMATIC_ZEN_RULE_STATUS = "android.app.extra.AUTOMATIC_ZEN_RULE_STATUS";
+    field public static final String EXTRA_BLOCKED_STATE = "android.app.extra.BLOCKED_STATE";
+    field public static final String EXTRA_NOTIFICATION_CHANNEL_GROUP_ID = "android.app.extra.NOTIFICATION_CHANNEL_GROUP_ID";
+    field public static final String EXTRA_NOTIFICATION_CHANNEL_ID = "android.app.extra.NOTIFICATION_CHANNEL_ID";
+    field public static final int IMPORTANCE_DEFAULT = 3; // 0x3
+    field public static final int IMPORTANCE_HIGH = 4; // 0x4
+    field public static final int IMPORTANCE_LOW = 2; // 0x2
+    field public static final int IMPORTANCE_MAX = 5; // 0x5
+    field public static final int IMPORTANCE_MIN = 1; // 0x1
+    field public static final int IMPORTANCE_NONE = 0; // 0x0
+    field public static final int IMPORTANCE_UNSPECIFIED = -1000; // 0xfffffc18
+    field public static final int INTERRUPTION_FILTER_ALARMS = 4; // 0x4
+    field public static final int INTERRUPTION_FILTER_ALL = 1; // 0x1
+    field public static final int INTERRUPTION_FILTER_NONE = 3; // 0x3
+    field public static final int INTERRUPTION_FILTER_PRIORITY = 2; // 0x2
+    field public static final int INTERRUPTION_FILTER_UNKNOWN = 0; // 0x0
+    field public static final String META_DATA_AUTOMATIC_RULE_TYPE = "android.service.zen.automatic.ruleType";
+    field public static final String META_DATA_RULE_INSTANCE_LIMIT = "android.service.zen.automatic.ruleInstanceLimit";
+  }
+
+  public static class NotificationManager.Policy implements android.os.Parcelable {
+    ctor public NotificationManager.Policy(int, int, int);
+    ctor public NotificationManager.Policy(int, int, int, int);
+    ctor public NotificationManager.Policy(int, int, int, int, int);
+    method public int describeContents();
+    method public static String priorityCategoriesToString(int);
+    method public static String prioritySendersToString(int);
+    method public static String suppressedEffectsToString(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int CONVERSATION_SENDERS_ANYONE = 1; // 0x1
+    field public static final int CONVERSATION_SENDERS_IMPORTANT = 2; // 0x2
+    field public static final int CONVERSATION_SENDERS_NONE = 3; // 0x3
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.NotificationManager.Policy> CREATOR;
+    field public static final int PRIORITY_CATEGORY_ALARMS = 32; // 0x20
+    field public static final int PRIORITY_CATEGORY_CALLS = 8; // 0x8
+    field public static final int PRIORITY_CATEGORY_CONVERSATIONS = 256; // 0x100
+    field public static final int PRIORITY_CATEGORY_EVENTS = 2; // 0x2
+    field public static final int PRIORITY_CATEGORY_MEDIA = 64; // 0x40
+    field public static final int PRIORITY_CATEGORY_MESSAGES = 4; // 0x4
+    field public static final int PRIORITY_CATEGORY_REMINDERS = 1; // 0x1
+    field public static final int PRIORITY_CATEGORY_REPEAT_CALLERS = 16; // 0x10
+    field public static final int PRIORITY_CATEGORY_SYSTEM = 128; // 0x80
+    field public static final int PRIORITY_SENDERS_ANY = 0; // 0x0
+    field public static final int PRIORITY_SENDERS_CONTACTS = 1; // 0x1
+    field public static final int PRIORITY_SENDERS_STARRED = 2; // 0x2
+    field public static final int SUPPRESSED_EFFECT_AMBIENT = 128; // 0x80
+    field public static final int SUPPRESSED_EFFECT_BADGE = 64; // 0x40
+    field public static final int SUPPRESSED_EFFECT_FULL_SCREEN_INTENT = 4; // 0x4
+    field public static final int SUPPRESSED_EFFECT_LIGHTS = 8; // 0x8
+    field public static final int SUPPRESSED_EFFECT_NOTIFICATION_LIST = 256; // 0x100
+    field public static final int SUPPRESSED_EFFECT_PEEK = 16; // 0x10
+    field @Deprecated public static final int SUPPRESSED_EFFECT_SCREEN_OFF = 1; // 0x1
+    field @Deprecated public static final int SUPPRESSED_EFFECT_SCREEN_ON = 2; // 0x2
+    field public static final int SUPPRESSED_EFFECT_STATUS_BAR = 32; // 0x20
+    field public final int priorityCallSenders;
+    field public final int priorityCategories;
+    field public final int priorityConversationSenders;
+    field public final int priorityMessageSenders;
+    field public final int suppressedVisualEffects;
+  }
+
+  public final class PendingIntent implements android.os.Parcelable {
+    method public void cancel();
+    method public int describeContents();
+    method public static android.app.PendingIntent getActivities(android.content.Context, int, @NonNull android.content.Intent[], int);
+    method public static android.app.PendingIntent getActivities(android.content.Context, int, @NonNull android.content.Intent[], int, @Nullable android.os.Bundle);
+    method public static android.app.PendingIntent getActivity(android.content.Context, int, android.content.Intent, int);
+    method public static android.app.PendingIntent getActivity(android.content.Context, int, @NonNull android.content.Intent, int, @Nullable android.os.Bundle);
+    method public static android.app.PendingIntent getBroadcast(android.content.Context, int, android.content.Intent, int);
+    method @Nullable public String getCreatorPackage();
+    method public int getCreatorUid();
+    method @Nullable public android.os.UserHandle getCreatorUserHandle();
+    method public static android.app.PendingIntent getForegroundService(android.content.Context, int, @NonNull android.content.Intent, int);
+    method public android.content.IntentSender getIntentSender();
+    method public static android.app.PendingIntent getService(android.content.Context, int, @NonNull android.content.Intent, int);
+    method @Deprecated public String getTargetPackage();
+    method @Nullable public static android.app.PendingIntent readPendingIntentOrNullFromParcel(@NonNull android.os.Parcel);
+    method public void send() throws android.app.PendingIntent.CanceledException;
+    method public void send(int) throws android.app.PendingIntent.CanceledException;
+    method public void send(android.content.Context, int, @Nullable android.content.Intent) throws android.app.PendingIntent.CanceledException;
+    method public void send(int, @Nullable android.app.PendingIntent.OnFinished, @Nullable android.os.Handler) throws android.app.PendingIntent.CanceledException;
+    method public void send(android.content.Context, int, @Nullable android.content.Intent, @Nullable android.app.PendingIntent.OnFinished, @Nullable android.os.Handler) throws android.app.PendingIntent.CanceledException;
+    method public void send(android.content.Context, int, @Nullable android.content.Intent, @Nullable android.app.PendingIntent.OnFinished, @Nullable android.os.Handler, @Nullable String) throws android.app.PendingIntent.CanceledException;
+    method public void send(android.content.Context, int, @Nullable android.content.Intent, @Nullable android.app.PendingIntent.OnFinished, @Nullable android.os.Handler, @Nullable String, @Nullable android.os.Bundle) throws android.app.PendingIntent.CanceledException;
+    method public static void writePendingIntentOrNullToParcel(@Nullable android.app.PendingIntent, @NonNull android.os.Parcel);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.PendingIntent> CREATOR;
+    field public static final int FLAG_CANCEL_CURRENT = 268435456; // 0x10000000
+    field public static final int FLAG_IMMUTABLE = 67108864; // 0x4000000
+    field public static final int FLAG_NO_CREATE = 536870912; // 0x20000000
+    field public static final int FLAG_ONE_SHOT = 1073741824; // 0x40000000
+    field public static final int FLAG_UPDATE_CURRENT = 134217728; // 0x8000000
+  }
+
+  public static class PendingIntent.CanceledException extends android.util.AndroidException {
+    ctor public PendingIntent.CanceledException();
+    ctor public PendingIntent.CanceledException(String);
+    ctor public PendingIntent.CanceledException(Exception);
+  }
+
+  public static interface PendingIntent.OnFinished {
+    method public void onSendFinished(android.app.PendingIntent, android.content.Intent, int, String, android.os.Bundle);
+  }
+
+  public final class Person implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public android.graphics.drawable.Icon getIcon();
+    method @Nullable public String getKey();
+    method @Nullable public CharSequence getName();
+    method @Nullable public String getUri();
+    method public boolean isBot();
+    method public boolean isImportant();
+    method public android.app.Person.Builder toBuilder();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.Person> CREATOR;
+  }
+
+  public static class Person.Builder {
+    ctor public Person.Builder();
+    method @NonNull public android.app.Person build();
+    method @NonNull public android.app.Person.Builder setBot(boolean);
+    method @NonNull public android.app.Person.Builder setIcon(@Nullable android.graphics.drawable.Icon);
+    method @NonNull public android.app.Person.Builder setImportant(boolean);
+    method @NonNull public android.app.Person.Builder setKey(@Nullable String);
+    method @NonNull public android.app.Person.Builder setName(@Nullable CharSequence);
+    method @NonNull public android.app.Person.Builder setUri(@Nullable String);
+  }
+
+  public final class PictureInPictureParams implements android.os.Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.PictureInPictureParams> CREATOR;
+  }
+
+  public static class PictureInPictureParams.Builder {
+    ctor public PictureInPictureParams.Builder();
+    method public android.app.PictureInPictureParams build();
+    method public android.app.PictureInPictureParams.Builder setActions(java.util.List<android.app.RemoteAction>);
+    method public android.app.PictureInPictureParams.Builder setAspectRatio(android.util.Rational);
+    method public android.app.PictureInPictureParams.Builder setSourceRectHint(android.graphics.Rect);
+  }
+
+  public class Presentation extends android.app.Dialog {
+    ctor public Presentation(android.content.Context, android.view.Display);
+    ctor public Presentation(android.content.Context, android.view.Display, int);
+    method public android.view.Display getDisplay();
+    method public android.content.res.Resources getResources();
+    method public void onDisplayChanged();
+    method public void onDisplayRemoved();
+  }
+
+  @Deprecated public class ProgressDialog extends android.app.AlertDialog {
+    ctor @Deprecated public ProgressDialog(android.content.Context);
+    ctor @Deprecated public ProgressDialog(android.content.Context, int);
+    method @Deprecated public int getMax();
+    method @Deprecated public int getProgress();
+    method @Deprecated public int getSecondaryProgress();
+    method @Deprecated public void incrementProgressBy(int);
+    method @Deprecated public void incrementSecondaryProgressBy(int);
+    method @Deprecated public boolean isIndeterminate();
+    method @Deprecated public void onStart();
+    method @Deprecated public void setIndeterminate(boolean);
+    method @Deprecated public void setIndeterminateDrawable(android.graphics.drawable.Drawable);
+    method @Deprecated public void setMax(int);
+    method @Deprecated public void setProgress(int);
+    method @Deprecated public void setProgressDrawable(android.graphics.drawable.Drawable);
+    method @Deprecated public void setProgressNumberFormat(String);
+    method @Deprecated public void setProgressPercentFormat(java.text.NumberFormat);
+    method @Deprecated public void setProgressStyle(int);
+    method @Deprecated public void setSecondaryProgress(int);
+    method @Deprecated public static android.app.ProgressDialog show(android.content.Context, CharSequence, CharSequence);
+    method @Deprecated public static android.app.ProgressDialog show(android.content.Context, CharSequence, CharSequence, boolean);
+    method @Deprecated public static android.app.ProgressDialog show(android.content.Context, CharSequence, CharSequence, boolean, boolean);
+    method @Deprecated public static android.app.ProgressDialog show(android.content.Context, CharSequence, CharSequence, boolean, boolean, android.content.DialogInterface.OnCancelListener);
+    field @Deprecated public static final int STYLE_HORIZONTAL = 1; // 0x1
+    field @Deprecated public static final int STYLE_SPINNER = 0; // 0x0
+  }
+
+  public final class RecoverableSecurityException extends java.lang.SecurityException implements android.os.Parcelable {
+    ctor public RecoverableSecurityException(@NonNull Throwable, @NonNull CharSequence, @NonNull android.app.RemoteAction);
+    method public int describeContents();
+    method @NonNull public android.app.RemoteAction getUserAction();
+    method @NonNull public CharSequence getUserMessage();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.RecoverableSecurityException> CREATOR;
+  }
+
+  public final class RemoteAction implements android.os.Parcelable {
+    ctor public RemoteAction(@NonNull android.graphics.drawable.Icon, @NonNull CharSequence, @NonNull CharSequence, @NonNull android.app.PendingIntent);
+    method public android.app.RemoteAction clone();
+    method public int describeContents();
+    method public void dump(String, java.io.PrintWriter);
+    method @NonNull public android.app.PendingIntent getActionIntent();
+    method @NonNull public CharSequence getContentDescription();
+    method @NonNull public android.graphics.drawable.Icon getIcon();
+    method @NonNull public CharSequence getTitle();
+    method public boolean isEnabled();
+    method public void setEnabled(boolean);
+    method public void setShouldShowIcon(boolean);
+    method public boolean shouldShowIcon();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.RemoteAction> CREATOR;
+  }
+
+  public final class RemoteInput implements android.os.Parcelable {
+    method public static void addDataResultToIntent(android.app.RemoteInput, android.content.Intent, java.util.Map<java.lang.String,android.net.Uri>);
+    method public static void addResultsToIntent(android.app.RemoteInput[], android.content.Intent, android.os.Bundle);
+    method public int describeContents();
+    method public boolean getAllowFreeFormInput();
+    method public java.util.Set<java.lang.String> getAllowedDataTypes();
+    method public CharSequence[] getChoices();
+    method public static java.util.Map<java.lang.String,android.net.Uri> getDataResultsFromIntent(android.content.Intent, String);
+    method public int getEditChoicesBeforeSending();
+    method public android.os.Bundle getExtras();
+    method public CharSequence getLabel();
+    method public String getResultKey();
+    method public static android.os.Bundle getResultsFromIntent(android.content.Intent);
+    method public static int getResultsSource(android.content.Intent);
+    method public boolean isDataOnly();
+    method public static void setResultsSource(android.content.Intent, int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.RemoteInput> CREATOR;
+    field public static final int EDIT_CHOICES_BEFORE_SENDING_AUTO = 0; // 0x0
+    field public static final int EDIT_CHOICES_BEFORE_SENDING_DISABLED = 1; // 0x1
+    field public static final int EDIT_CHOICES_BEFORE_SENDING_ENABLED = 2; // 0x2
+    field public static final String EXTRA_RESULTS_DATA = "android.remoteinput.resultsData";
+    field public static final String RESULTS_CLIP_LABEL = "android.remoteinput.results";
+    field public static final int SOURCE_CHOICE = 1; // 0x1
+    field public static final int SOURCE_FREE_FORM_INPUT = 0; // 0x0
+  }
+
+  public static final class RemoteInput.Builder {
+    ctor public RemoteInput.Builder(@NonNull String);
+    method @NonNull public android.app.RemoteInput.Builder addExtras(@NonNull android.os.Bundle);
+    method @NonNull public android.app.RemoteInput build();
+    method @NonNull public android.os.Bundle getExtras();
+    method @NonNull public android.app.RemoteInput.Builder setAllowDataType(@NonNull String, boolean);
+    method @NonNull public android.app.RemoteInput.Builder setAllowFreeFormInput(boolean);
+    method @NonNull public android.app.RemoteInput.Builder setChoices(@Nullable CharSequence[]);
+    method @NonNull public android.app.RemoteInput.Builder setEditChoicesBeforeSending(int);
+    method @NonNull public android.app.RemoteInput.Builder setLabel(@Nullable CharSequence);
+  }
+
+  public class SearchManager implements android.content.DialogInterface.OnCancelListener android.content.DialogInterface.OnDismissListener {
+    method public android.content.ComponentName getGlobalSearchActivity();
+    method public android.app.SearchableInfo getSearchableInfo(android.content.ComponentName);
+    method public java.util.List<android.app.SearchableInfo> getSearchablesInGlobalSearch();
+    method @Deprecated public void onCancel(android.content.DialogInterface);
+    method @Deprecated public void onDismiss(android.content.DialogInterface);
+    method public void setOnCancelListener(android.app.SearchManager.OnCancelListener);
+    method public void setOnDismissListener(android.app.SearchManager.OnDismissListener);
+    method public void startSearch(String, boolean, android.content.ComponentName, android.os.Bundle, boolean);
+    method public void stopSearch();
+    method public void triggerSearch(String, android.content.ComponentName, android.os.Bundle);
+    field public static final String ACTION_KEY = "action_key";
+    field public static final String ACTION_MSG = "action_msg";
+    field public static final String APP_DATA = "app_data";
+    field public static final String CURSOR_EXTRA_KEY_IN_PROGRESS = "in_progress";
+    field public static final String EXTRA_DATA_KEY = "intent_extra_data_key";
+    field public static final String EXTRA_NEW_SEARCH = "new_search";
+    field public static final String EXTRA_SELECT_QUERY = "select_query";
+    field public static final String EXTRA_WEB_SEARCH_PENDINGINTENT = "web_search_pendingintent";
+    field public static final int FLAG_QUERY_REFINEMENT = 1; // 0x1
+    field public static final String INTENT_ACTION_GLOBAL_SEARCH = "android.search.action.GLOBAL_SEARCH";
+    field public static final String INTENT_ACTION_SEARCHABLES_CHANGED = "android.search.action.SEARCHABLES_CHANGED";
+    field public static final String INTENT_ACTION_SEARCH_SETTINGS = "android.search.action.SEARCH_SETTINGS";
+    field public static final String INTENT_ACTION_SEARCH_SETTINGS_CHANGED = "android.search.action.SETTINGS_CHANGED";
+    field public static final String INTENT_ACTION_WEB_SEARCH_SETTINGS = "android.search.action.WEB_SEARCH_SETTINGS";
+    field public static final String INTENT_GLOBAL_SEARCH_ACTIVITY_CHANGED = "android.search.action.GLOBAL_SEARCH_ACTIVITY_CHANGED";
+    field public static final char MENU_KEY = 115; // 0x0073 's'
+    field public static final int MENU_KEYCODE = 47; // 0x2f
+    field public static final String QUERY = "query";
+    field public static final String SHORTCUT_MIME_TYPE = "vnd.android.cursor.item/vnd.android.search.suggest";
+    field public static final String SUGGEST_COLUMN_AUDIO_CHANNEL_CONFIG = "suggest_audio_channel_config";
+    field public static final String SUGGEST_COLUMN_CONTENT_TYPE = "suggest_content_type";
+    field public static final String SUGGEST_COLUMN_DURATION = "suggest_duration";
+    field public static final String SUGGEST_COLUMN_FLAGS = "suggest_flags";
+    field public static final String SUGGEST_COLUMN_FORMAT = "suggest_format";
+    field public static final String SUGGEST_COLUMN_ICON_1 = "suggest_icon_1";
+    field public static final String SUGGEST_COLUMN_ICON_2 = "suggest_icon_2";
+    field public static final String SUGGEST_COLUMN_INTENT_ACTION = "suggest_intent_action";
+    field public static final String SUGGEST_COLUMN_INTENT_DATA = "suggest_intent_data";
+    field public static final String SUGGEST_COLUMN_INTENT_DATA_ID = "suggest_intent_data_id";
+    field public static final String SUGGEST_COLUMN_INTENT_EXTRA_DATA = "suggest_intent_extra_data";
+    field public static final String SUGGEST_COLUMN_IS_LIVE = "suggest_is_live";
+    field public static final String SUGGEST_COLUMN_LAST_ACCESS_HINT = "suggest_last_access_hint";
+    field public static final String SUGGEST_COLUMN_PRODUCTION_YEAR = "suggest_production_year";
+    field public static final String SUGGEST_COLUMN_PURCHASE_PRICE = "suggest_purchase_price";
+    field public static final String SUGGEST_COLUMN_QUERY = "suggest_intent_query";
+    field public static final String SUGGEST_COLUMN_RATING_SCORE = "suggest_rating_score";
+    field public static final String SUGGEST_COLUMN_RATING_STYLE = "suggest_rating_style";
+    field public static final String SUGGEST_COLUMN_RENTAL_PRICE = "suggest_rental_price";
+    field public static final String SUGGEST_COLUMN_RESULT_CARD_IMAGE = "suggest_result_card_image";
+    field public static final String SUGGEST_COLUMN_SHORTCUT_ID = "suggest_shortcut_id";
+    field public static final String SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING = "suggest_spinner_while_refreshing";
+    field public static final String SUGGEST_COLUMN_TEXT_1 = "suggest_text_1";
+    field public static final String SUGGEST_COLUMN_TEXT_2 = "suggest_text_2";
+    field public static final String SUGGEST_COLUMN_TEXT_2_URL = "suggest_text_2_url";
+    field public static final String SUGGEST_COLUMN_VIDEO_HEIGHT = "suggest_video_height";
+    field public static final String SUGGEST_COLUMN_VIDEO_WIDTH = "suggest_video_width";
+    field public static final String SUGGEST_MIME_TYPE = "vnd.android.cursor.dir/vnd.android.search.suggest";
+    field public static final String SUGGEST_NEVER_MAKE_SHORTCUT = "_-1";
+    field public static final String SUGGEST_PARAMETER_LIMIT = "limit";
+    field public static final String SUGGEST_URI_PATH_QUERY = "search_suggest_query";
+    field public static final String SUGGEST_URI_PATH_SHORTCUT = "search_suggest_shortcut";
+    field public static final String USER_QUERY = "user_query";
+  }
+
+  public static interface SearchManager.OnCancelListener {
+    method public void onCancel();
+  }
+
+  public static interface SearchManager.OnDismissListener {
+    method public void onDismiss();
+  }
+
+  public final class SearchableInfo implements android.os.Parcelable {
+    method public boolean autoUrlDetect();
+    method public int describeContents();
+    method public int getHintId();
+    method public int getImeOptions();
+    method public int getInputType();
+    method public android.content.ComponentName getSearchActivity();
+    method public int getSettingsDescriptionId();
+    method public String getSuggestAuthority();
+    method public String getSuggestIntentAction();
+    method public String getSuggestIntentData();
+    method public String getSuggestPackage();
+    method public String getSuggestPath();
+    method public String getSuggestSelection();
+    method public int getSuggestThreshold();
+    method @StringRes public int getVoiceLanguageId();
+    method @StringRes public int getVoiceLanguageModeId();
+    method public int getVoiceMaxResults();
+    method @StringRes public int getVoicePromptTextId();
+    method public boolean getVoiceSearchEnabled();
+    method public boolean getVoiceSearchLaunchRecognizer();
+    method public boolean getVoiceSearchLaunchWebSearch();
+    method public boolean queryAfterZeroResults();
+    method public boolean shouldIncludeInGlobalSearch();
+    method public boolean shouldRewriteQueryFromData();
+    method public boolean shouldRewriteQueryFromText();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.SearchableInfo> CREATOR;
+  }
+
+  public abstract class Service extends android.content.ContextWrapper implements android.content.ComponentCallbacks2 {
+    ctor public Service();
+    method protected void dump(java.io.FileDescriptor, java.io.PrintWriter, String[]);
+    method public final android.app.Application getApplication();
+    method public final int getForegroundServiceType();
+    method @Nullable public abstract android.os.IBinder onBind(android.content.Intent);
+    method public void onConfigurationChanged(android.content.res.Configuration);
+    method public void onCreate();
+    method public void onDestroy();
+    method public void onLowMemory();
+    method public void onRebind(android.content.Intent);
+    method @Deprecated public void onStart(android.content.Intent, int);
+    method public int onStartCommand(android.content.Intent, int, int);
+    method public void onTaskRemoved(android.content.Intent);
+    method public void onTrimMemory(int);
+    method public boolean onUnbind(android.content.Intent);
+    method public final void startForeground(int, android.app.Notification);
+    method public final void startForeground(int, @NonNull android.app.Notification, int);
+    method public final void stopForeground(boolean);
+    method public final void stopForeground(int);
+    method public final void stopSelf();
+    method public final void stopSelf(int);
+    method public final boolean stopSelfResult(int);
+    field public static final int START_CONTINUATION_MASK = 15; // 0xf
+    field public static final int START_FLAG_REDELIVERY = 1; // 0x1
+    field public static final int START_FLAG_RETRY = 2; // 0x2
+    field public static final int START_NOT_STICKY = 2; // 0x2
+    field public static final int START_REDELIVER_INTENT = 3; // 0x3
+    field public static final int START_STICKY = 1; // 0x1
+    field public static final int START_STICKY_COMPATIBILITY = 0; // 0x0
+    field public static final int STOP_FOREGROUND_DETACH = 2; // 0x2
+    field public static final int STOP_FOREGROUND_REMOVE = 1; // 0x1
+  }
+
+  public abstract class SharedElementCallback {
+    ctor public SharedElementCallback();
+    method public android.os.Parcelable onCaptureSharedElementSnapshot(android.view.View, android.graphics.Matrix, android.graphics.RectF);
+    method public android.view.View onCreateSnapshotView(android.content.Context, android.os.Parcelable);
+    method public void onMapSharedElements(java.util.List<java.lang.String>, java.util.Map<java.lang.String,android.view.View>);
+    method public void onRejectSharedElements(java.util.List<android.view.View>);
+    method public void onSharedElementEnd(java.util.List<java.lang.String>, java.util.List<android.view.View>, java.util.List<android.view.View>);
+    method public void onSharedElementStart(java.util.List<java.lang.String>, java.util.List<android.view.View>, java.util.List<android.view.View>);
+    method public void onSharedElementsArrived(java.util.List<java.lang.String>, java.util.List<android.view.View>, android.app.SharedElementCallback.OnSharedElementsReadyListener);
+  }
+
+  public static interface SharedElementCallback.OnSharedElementsReadyListener {
+    method public void onSharedElementsReady();
+  }
+
+  public class StatusBarManager {
+  }
+
+  public final class SyncNotedAppOp implements android.os.Parcelable {
+    ctor public SyncNotedAppOp(@IntRange(from=0L) int, @Nullable String);
+    method public int describeContents();
+    method @Nullable public String getAttributionTag();
+    method @NonNull public String getOp();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.SyncNotedAppOp> CREATOR;
+  }
+
+  @Deprecated public class TabActivity extends android.app.ActivityGroup {
+    ctor @Deprecated public TabActivity();
+    method @Deprecated public android.widget.TabHost getTabHost();
+    method @Deprecated public android.widget.TabWidget getTabWidget();
+    method @Deprecated public void setDefaultTab(String);
+    method @Deprecated public void setDefaultTab(int);
+  }
+
+  public class TaskInfo {
+    field @Nullable public android.content.ComponentName baseActivity;
+    field @NonNull public android.content.Intent baseIntent;
+    field public boolean isRunning;
+    field public int numActivities;
+    field @Nullable public android.content.ComponentName origActivity;
+    field @Nullable public android.app.ActivityManager.TaskDescription taskDescription;
+    field public int taskId;
+    field @Nullable public android.content.ComponentName topActivity;
+  }
+
+  public class TaskStackBuilder {
+    method public android.app.TaskStackBuilder addNextIntent(android.content.Intent);
+    method public android.app.TaskStackBuilder addNextIntentWithParentStack(android.content.Intent);
+    method public android.app.TaskStackBuilder addParentStack(android.app.Activity);
+    method public android.app.TaskStackBuilder addParentStack(Class<?>);
+    method public android.app.TaskStackBuilder addParentStack(android.content.ComponentName);
+    method public static android.app.TaskStackBuilder create(android.content.Context);
+    method public android.content.Intent editIntentAt(int);
+    method public int getIntentCount();
+    method @NonNull public android.content.Intent[] getIntents();
+    method public android.app.PendingIntent getPendingIntent(int, int);
+    method public android.app.PendingIntent getPendingIntent(int, int, android.os.Bundle);
+    method public void startActivities();
+    method public void startActivities(android.os.Bundle);
+  }
+
+  public class TimePickerDialog extends android.app.AlertDialog implements android.content.DialogInterface.OnClickListener android.widget.TimePicker.OnTimeChangedListener {
+    ctor public TimePickerDialog(android.content.Context, android.app.TimePickerDialog.OnTimeSetListener, int, int, boolean);
+    ctor public TimePickerDialog(android.content.Context, int, android.app.TimePickerDialog.OnTimeSetListener, int, int, boolean);
+    method public void onClick(android.content.DialogInterface, int);
+    method public void onTimeChanged(android.widget.TimePicker, int, int);
+    method public void updateTime(int, int);
+  }
+
+  public static interface TimePickerDialog.OnTimeSetListener {
+    method public void onTimeSet(android.widget.TimePicker, int, int);
+  }
+
+  public final class UiAutomation {
+    method public void adoptShellPermissionIdentity();
+    method public void adoptShellPermissionIdentity(@Nullable java.lang.String...);
+    method public void clearWindowAnimationFrameStats();
+    method public boolean clearWindowContentFrameStats(int);
+    method public void dropShellPermissionIdentity();
+    method public android.view.accessibility.AccessibilityEvent executeAndWaitForEvent(Runnable, android.app.UiAutomation.AccessibilityEventFilter, long) throws java.util.concurrent.TimeoutException;
+    method public android.os.ParcelFileDescriptor executeShellCommand(String);
+    method public android.view.accessibility.AccessibilityNodeInfo findFocus(int);
+    method public android.view.accessibility.AccessibilityNodeInfo getRootInActiveWindow();
+    method public android.accessibilityservice.AccessibilityServiceInfo getServiceInfo();
+    method public android.view.WindowAnimationFrameStats getWindowAnimationFrameStats();
+    method public android.view.WindowContentFrameStats getWindowContentFrameStats(int);
+    method public java.util.List<android.view.accessibility.AccessibilityWindowInfo> getWindows();
+    method @NonNull public android.util.SparseArray<java.util.List<android.view.accessibility.AccessibilityWindowInfo>> getWindowsOnAllDisplays();
+    method public void grantRuntimePermission(String, String);
+    method public void grantRuntimePermissionAsUser(String, String, android.os.UserHandle);
+    method public boolean injectInputEvent(android.view.InputEvent, boolean);
+    method public boolean performGlobalAction(int);
+    method public void revokeRuntimePermission(String, String);
+    method public void revokeRuntimePermissionAsUser(String, String, android.os.UserHandle);
+    method public void setOnAccessibilityEventListener(android.app.UiAutomation.OnAccessibilityEventListener);
+    method public boolean setRotation(int);
+    method public void setRunAsMonkey(boolean);
+    method public void setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo);
+    method public android.graphics.Bitmap takeScreenshot();
+    method public void waitForIdle(long, long) throws java.util.concurrent.TimeoutException;
+    field public static final int FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES = 1; // 0x1
+    field public static final int ROTATION_FREEZE_0 = 0; // 0x0
+    field public static final int ROTATION_FREEZE_180 = 2; // 0x2
+    field public static final int ROTATION_FREEZE_270 = 3; // 0x3
+    field public static final int ROTATION_FREEZE_90 = 1; // 0x1
+    field public static final int ROTATION_FREEZE_CURRENT = -1; // 0xffffffff
+    field public static final int ROTATION_UNFREEZE = -2; // 0xfffffffe
+  }
+
+  public static interface UiAutomation.AccessibilityEventFilter {
+    method public boolean accept(android.view.accessibility.AccessibilityEvent);
+  }
+
+  public static interface UiAutomation.OnAccessibilityEventListener {
+    method public void onAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
+  }
+
+  public class UiModeManager {
+    method public void disableCarMode(int);
+    method public void enableCarMode(int);
+    method public int getCurrentModeType();
+    method @NonNull public java.time.LocalTime getCustomNightModeEnd();
+    method @NonNull public java.time.LocalTime getCustomNightModeStart();
+    method public int getNightMode();
+    method public void setCustomNightModeEnd(@NonNull java.time.LocalTime);
+    method public void setCustomNightModeStart(@NonNull java.time.LocalTime);
+    method public void setNightMode(int);
+    field public static String ACTION_ENTER_CAR_MODE;
+    field public static String ACTION_ENTER_DESK_MODE;
+    field public static String ACTION_EXIT_CAR_MODE;
+    field public static String ACTION_EXIT_DESK_MODE;
+    field public static final int DISABLE_CAR_MODE_GO_HOME = 1; // 0x1
+    field public static final int ENABLE_CAR_MODE_ALLOW_SLEEP = 2; // 0x2
+    field public static final int ENABLE_CAR_MODE_GO_CAR_HOME = 1; // 0x1
+    field public static final int MODE_NIGHT_AUTO = 0; // 0x0
+    field public static final int MODE_NIGHT_CUSTOM = 3; // 0x3
+    field public static final int MODE_NIGHT_NO = 1; // 0x1
+    field public static final int MODE_NIGHT_YES = 2; // 0x2
+  }
+
+  public final class VoiceInteractor {
+    method public android.app.VoiceInteractor.Request getActiveRequest(String);
+    method public android.app.VoiceInteractor.Request[] getActiveRequests();
+    method public boolean isDestroyed();
+    method public void notifyDirectActionsChanged();
+    method public boolean registerOnDestroyedCallback(@NonNull java.util.concurrent.Executor, @NonNull Runnable);
+    method public boolean submitRequest(android.app.VoiceInteractor.Request);
+    method public boolean submitRequest(android.app.VoiceInteractor.Request, String);
+    method public boolean[] supportsCommands(String[]);
+    method public boolean unregisterOnDestroyedCallback(@NonNull Runnable);
+  }
+
+  public static class VoiceInteractor.AbortVoiceRequest extends android.app.VoiceInteractor.Request {
+    ctor public VoiceInteractor.AbortVoiceRequest(@Nullable android.app.VoiceInteractor.Prompt, @Nullable android.os.Bundle);
+    method public void onAbortResult(android.os.Bundle);
+  }
+
+  public static class VoiceInteractor.CommandRequest extends android.app.VoiceInteractor.Request {
+    ctor public VoiceInteractor.CommandRequest(String, android.os.Bundle);
+    method public void onCommandResult(boolean, android.os.Bundle);
+  }
+
+  public static class VoiceInteractor.CompleteVoiceRequest extends android.app.VoiceInteractor.Request {
+    ctor public VoiceInteractor.CompleteVoiceRequest(@Nullable android.app.VoiceInteractor.Prompt, @Nullable android.os.Bundle);
+    method public void onCompleteResult(android.os.Bundle);
+  }
+
+  public static class VoiceInteractor.ConfirmationRequest extends android.app.VoiceInteractor.Request {
+    ctor public VoiceInteractor.ConfirmationRequest(@Nullable android.app.VoiceInteractor.Prompt, @Nullable android.os.Bundle);
+    method public void onConfirmationResult(boolean, android.os.Bundle);
+  }
+
+  public static class VoiceInteractor.PickOptionRequest extends android.app.VoiceInteractor.Request {
+    ctor public VoiceInteractor.PickOptionRequest(@Nullable android.app.VoiceInteractor.Prompt, android.app.VoiceInteractor.PickOptionRequest.Option[], @Nullable android.os.Bundle);
+    method public void onPickOptionResult(boolean, android.app.VoiceInteractor.PickOptionRequest.Option[], android.os.Bundle);
+  }
+
+  public static final class VoiceInteractor.PickOptionRequest.Option implements android.os.Parcelable {
+    ctor public VoiceInteractor.PickOptionRequest.Option(CharSequence, int);
+    method public android.app.VoiceInteractor.PickOptionRequest.Option addSynonym(CharSequence);
+    method public int countSynonyms();
+    method public int describeContents();
+    method public android.os.Bundle getExtras();
+    method public int getIndex();
+    method public CharSequence getLabel();
+    method public CharSequence getSynonymAt(int);
+    method public void setExtras(android.os.Bundle);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.VoiceInteractor.PickOptionRequest.Option> CREATOR;
+  }
+
+  public static class VoiceInteractor.Prompt implements android.os.Parcelable {
+    ctor public VoiceInteractor.Prompt(@NonNull CharSequence[], @NonNull CharSequence);
+    ctor public VoiceInteractor.Prompt(@NonNull CharSequence);
+    method public int countVoicePrompts();
+    method public int describeContents();
+    method @NonNull public CharSequence getVisualPrompt();
+    method @NonNull public CharSequence getVoicePromptAt(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.VoiceInteractor.Prompt> CREATOR;
+  }
+
+  public abstract static class VoiceInteractor.Request {
+    method public void cancel();
+    method public android.app.Activity getActivity();
+    method public android.content.Context getContext();
+    method public String getName();
+    method public void onAttached(android.app.Activity);
+    method public void onCancel();
+    method public void onDetached();
+  }
+
+  public final class WallpaperColors implements android.os.Parcelable {
+    ctor public WallpaperColors(android.os.Parcel);
+    ctor public WallpaperColors(@NonNull android.graphics.Color, @Nullable android.graphics.Color, @Nullable android.graphics.Color);
+    method public int describeContents();
+    method public static android.app.WallpaperColors fromBitmap(@NonNull android.graphics.Bitmap);
+    method public static android.app.WallpaperColors fromDrawable(android.graphics.drawable.Drawable);
+    method @NonNull public android.graphics.Color getPrimaryColor();
+    method @Nullable public android.graphics.Color getSecondaryColor();
+    method @Nullable public android.graphics.Color getTertiaryColor();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.WallpaperColors> CREATOR;
+  }
+
+  public final class WallpaperInfo implements android.os.Parcelable {
+    ctor public WallpaperInfo(android.content.Context, android.content.pm.ResolveInfo) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method public int describeContents();
+    method public void dump(android.util.Printer, String);
+    method public android.content.ComponentName getComponent();
+    method public String getPackageName();
+    method public android.content.pm.ServiceInfo getServiceInfo();
+    method public String getServiceName();
+    method public String getSettingsActivity();
+    method @Nullable public android.net.Uri getSettingsSliceUri();
+    method public boolean getShowMetadataInPreview();
+    method public CharSequence loadAuthor(android.content.pm.PackageManager) throws android.content.res.Resources.NotFoundException;
+    method public CharSequence loadContextDescription(android.content.pm.PackageManager) throws android.content.res.Resources.NotFoundException;
+    method public android.net.Uri loadContextUri(android.content.pm.PackageManager) throws android.content.res.Resources.NotFoundException;
+    method public CharSequence loadDescription(android.content.pm.PackageManager) throws android.content.res.Resources.NotFoundException;
+    method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
+    method public CharSequence loadLabel(android.content.pm.PackageManager);
+    method public android.graphics.drawable.Drawable loadThumbnail(android.content.pm.PackageManager);
+    method public boolean supportsMultipleDisplays();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.WallpaperInfo> CREATOR;
+  }
+
+  public class WallpaperManager {
+    method public void addOnColorsChangedListener(@NonNull android.app.WallpaperManager.OnColorsChangedListener, @NonNull android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void clear() throws java.io.IOException;
+    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void clear(int) throws java.io.IOException;
+    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void clearWallpaper();
+    method public void clearWallpaperOffsets(android.os.IBinder);
+    method public void forgetLoadedWallpaper();
+    method public android.graphics.drawable.Drawable getBuiltInDrawable();
+    method public android.graphics.drawable.Drawable getBuiltInDrawable(int);
+    method public android.graphics.drawable.Drawable getBuiltInDrawable(int, int, boolean, float, float);
+    method public android.graphics.drawable.Drawable getBuiltInDrawable(int, int, boolean, float, float, int);
+    method public android.content.Intent getCropAndSetWallpaperIntent(android.net.Uri);
+    method public int getDesiredMinimumHeight();
+    method public int getDesiredMinimumWidth();
+    method public android.graphics.drawable.Drawable getDrawable();
+    method @RequiresPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) public android.graphics.drawable.Drawable getFastDrawable();
+    method public static android.app.WallpaperManager getInstance(android.content.Context);
+    method @Nullable public android.app.WallpaperColors getWallpaperColors(int);
+    method @RequiresPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) public android.os.ParcelFileDescriptor getWallpaperFile(int);
+    method public int getWallpaperId(int);
+    method public android.app.WallpaperInfo getWallpaperInfo();
+    method public boolean hasResourceWallpaper(@RawRes int);
+    method public boolean isSetWallpaperAllowed();
+    method public boolean isWallpaperSupported();
+    method public android.graphics.drawable.Drawable peekDrawable();
+    method @RequiresPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) public android.graphics.drawable.Drawable peekFastDrawable();
+    method public void removeOnColorsChangedListener(@NonNull android.app.WallpaperManager.OnColorsChangedListener);
+    method public void sendWallpaperCommand(android.os.IBinder, String, int, int, int, android.os.Bundle);
+    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void setBitmap(android.graphics.Bitmap) throws java.io.IOException;
+    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setBitmap(android.graphics.Bitmap, android.graphics.Rect, boolean) throws java.io.IOException;
+    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setBitmap(android.graphics.Bitmap, android.graphics.Rect, boolean, int) throws java.io.IOException;
+    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER_HINTS) public void setDisplayPadding(android.graphics.Rect);
+    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void setResource(@RawRes int) throws java.io.IOException;
+    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setResource(@RawRes int, int) throws java.io.IOException;
+    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void setStream(java.io.InputStream) throws java.io.IOException;
+    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setStream(java.io.InputStream, android.graphics.Rect, boolean) throws java.io.IOException;
+    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setStream(java.io.InputStream, android.graphics.Rect, boolean, int) throws java.io.IOException;
+    method public void setWallpaperOffsetSteps(float, float);
+    method public void setWallpaperOffsets(android.os.IBinder, float, float);
+    method public void suggestDesiredDimensions(int, int);
+    field public static final String ACTION_CHANGE_LIVE_WALLPAPER = "android.service.wallpaper.CHANGE_LIVE_WALLPAPER";
+    field public static final String ACTION_CROP_AND_SET_WALLPAPER = "android.service.wallpaper.CROP_AND_SET_WALLPAPER";
+    field public static final String ACTION_LIVE_WALLPAPER_CHOOSER = "android.service.wallpaper.LIVE_WALLPAPER_CHOOSER";
+    field public static final String COMMAND_DROP = "android.home.drop";
+    field public static final String COMMAND_SECONDARY_TAP = "android.wallpaper.secondaryTap";
+    field public static final String COMMAND_TAP = "android.wallpaper.tap";
+    field public static final String EXTRA_LIVE_WALLPAPER_COMPONENT = "android.service.wallpaper.extra.LIVE_WALLPAPER_COMPONENT";
+    field public static final int FLAG_LOCK = 2; // 0x2
+    field public static final int FLAG_SYSTEM = 1; // 0x1
+    field public static final String WALLPAPER_PREVIEW_META_DATA = "android.wallpaper.preview";
+  }
+
+  public static interface WallpaperManager.OnColorsChangedListener {
+    method public void onColorsChanged(android.app.WallpaperColors, int);
+  }
+
+  public interface ZygotePreload {
+    method public void doPreload(@NonNull android.content.pm.ApplicationInfo);
+  }
+
+}
+
+package android.app.admin {
+
+  public final class ConnectEvent extends android.app.admin.NetworkEvent implements android.os.Parcelable {
+    method public java.net.InetAddress getInetAddress();
+    method public int getPort();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.ConnectEvent> CREATOR;
+  }
+
+  public class DelegatedAdminReceiver extends android.content.BroadcastReceiver {
+    ctor public DelegatedAdminReceiver();
+    method @Nullable public String onChoosePrivateKeyAlias(@NonNull android.content.Context, @NonNull android.content.Intent, int, @Nullable android.net.Uri, @Nullable String);
+    method public void onNetworkLogsAvailable(@NonNull android.content.Context, @NonNull android.content.Intent, long, @IntRange(from=1) int);
+    method public final void onReceive(@NonNull android.content.Context, @NonNull android.content.Intent);
+  }
+
+  public final class DeviceAdminInfo implements android.os.Parcelable {
+    ctor public DeviceAdminInfo(android.content.Context, android.content.pm.ResolveInfo) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method public int describeContents();
+    method public void dump(android.util.Printer, String);
+    method public android.content.pm.ActivityInfo getActivityInfo();
+    method @NonNull public android.content.ComponentName getComponent();
+    method public String getPackageName();
+    method public String getReceiverName();
+    method public String getTagForPolicy(int);
+    method public boolean isVisible();
+    method public CharSequence loadDescription(android.content.pm.PackageManager) throws android.content.res.Resources.NotFoundException;
+    method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
+    method public CharSequence loadLabel(android.content.pm.PackageManager);
+    method public boolean supportsTransferOwnership();
+    method public boolean usesPolicy(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.DeviceAdminInfo> CREATOR;
+    field public static final int USES_ENCRYPTED_STORAGE = 7; // 0x7
+    field public static final int USES_POLICY_DISABLE_CAMERA = 8; // 0x8
+    field public static final int USES_POLICY_DISABLE_KEYGUARD_FEATURES = 9; // 0x9
+    field public static final int USES_POLICY_EXPIRE_PASSWORD = 6; // 0x6
+    field public static final int USES_POLICY_FORCE_LOCK = 3; // 0x3
+    field public static final int USES_POLICY_LIMIT_PASSWORD = 0; // 0x0
+    field public static final int USES_POLICY_RESET_PASSWORD = 2; // 0x2
+    field public static final int USES_POLICY_WATCH_LOGIN = 1; // 0x1
+    field public static final int USES_POLICY_WIPE_DATA = 4; // 0x4
+  }
+
+  public class DeviceAdminReceiver extends android.content.BroadcastReceiver {
+    ctor public DeviceAdminReceiver();
+    method @NonNull public android.app.admin.DevicePolicyManager getManager(@NonNull android.content.Context);
+    method @NonNull public android.content.ComponentName getWho(@NonNull android.content.Context);
+    method public void onBugreportFailed(@NonNull android.content.Context, @NonNull android.content.Intent, int);
+    method public void onBugreportShared(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull String);
+    method public void onBugreportSharingDeclined(@NonNull android.content.Context, @NonNull android.content.Intent);
+    method @Nullable public String onChoosePrivateKeyAlias(@NonNull android.content.Context, @NonNull android.content.Intent, int, @Nullable android.net.Uri, @Nullable String);
+    method @Nullable public CharSequence onDisableRequested(@NonNull android.content.Context, @NonNull android.content.Intent);
+    method public void onDisabled(@NonNull android.content.Context, @NonNull android.content.Intent);
+    method public void onEnabled(@NonNull android.content.Context, @NonNull android.content.Intent);
+    method public void onLockTaskModeEntering(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull String);
+    method public void onLockTaskModeExiting(@NonNull android.content.Context, @NonNull android.content.Intent);
+    method public void onNetworkLogsAvailable(@NonNull android.content.Context, @NonNull android.content.Intent, long, @IntRange(from=1) int);
+    method @Deprecated public void onPasswordChanged(@NonNull android.content.Context, @NonNull android.content.Intent);
+    method public void onPasswordChanged(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
+    method @Deprecated public void onPasswordExpiring(@NonNull android.content.Context, @NonNull android.content.Intent);
+    method public void onPasswordExpiring(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
+    method @Deprecated public void onPasswordFailed(@NonNull android.content.Context, @NonNull android.content.Intent);
+    method public void onPasswordFailed(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
+    method @Deprecated public void onPasswordSucceeded(@NonNull android.content.Context, @NonNull android.content.Intent);
+    method public void onPasswordSucceeded(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
+    method public void onProfileProvisioningComplete(@NonNull android.content.Context, @NonNull android.content.Intent);
+    method @Deprecated public void onReadyForUserInitialization(@NonNull android.content.Context, @NonNull android.content.Intent);
+    method public void onReceive(@NonNull android.content.Context, @NonNull android.content.Intent);
+    method public void onSecurityLogsAvailable(@NonNull android.content.Context, @NonNull android.content.Intent);
+    method public void onSystemUpdatePending(@NonNull android.content.Context, @NonNull android.content.Intent, long);
+    method public void onTransferAffiliatedProfileOwnershipComplete(@NonNull android.content.Context, @NonNull android.os.UserHandle);
+    method public void onTransferOwnershipComplete(@NonNull android.content.Context, @Nullable android.os.PersistableBundle);
+    method public void onUserAdded(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
+    method public void onUserRemoved(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
+    method public void onUserStarted(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
+    method public void onUserStopped(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
+    method public void onUserSwitched(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
+    field public static final String ACTION_CHOOSE_PRIVATE_KEY_ALIAS = "android.app.action.CHOOSE_PRIVATE_KEY_ALIAS";
+    field public static final String ACTION_DEVICE_ADMIN_DISABLED = "android.app.action.DEVICE_ADMIN_DISABLED";
+    field public static final String ACTION_DEVICE_ADMIN_DISABLE_REQUESTED = "android.app.action.DEVICE_ADMIN_DISABLE_REQUESTED";
+    field public static final String ACTION_DEVICE_ADMIN_ENABLED = "android.app.action.DEVICE_ADMIN_ENABLED";
+    field public static final String ACTION_LOCK_TASK_ENTERING = "android.app.action.LOCK_TASK_ENTERING";
+    field public static final String ACTION_LOCK_TASK_EXITING = "android.app.action.LOCK_TASK_EXITING";
+    field public static final String ACTION_NETWORK_LOGS_AVAILABLE = "android.app.action.NETWORK_LOGS_AVAILABLE";
+    field public static final String ACTION_PASSWORD_CHANGED = "android.app.action.ACTION_PASSWORD_CHANGED";
+    field public static final String ACTION_PASSWORD_EXPIRING = "android.app.action.ACTION_PASSWORD_EXPIRING";
+    field public static final String ACTION_PASSWORD_FAILED = "android.app.action.ACTION_PASSWORD_FAILED";
+    field public static final String ACTION_PASSWORD_SUCCEEDED = "android.app.action.ACTION_PASSWORD_SUCCEEDED";
+    field public static final String ACTION_PROFILE_PROVISIONING_COMPLETE = "android.app.action.PROFILE_PROVISIONING_COMPLETE";
+    field public static final int BUGREPORT_FAILURE_FAILED_COMPLETING = 0; // 0x0
+    field public static final int BUGREPORT_FAILURE_FILE_NO_LONGER_AVAILABLE = 1; // 0x1
+    field public static final String DEVICE_ADMIN_META_DATA = "android.app.device_admin";
+    field public static final String EXTRA_DISABLE_WARNING = "android.app.extra.DISABLE_WARNING";
+    field public static final String EXTRA_LOCK_TASK_PACKAGE = "android.app.extra.LOCK_TASK_PACKAGE";
+    field public static final String EXTRA_TRANSFER_OWNERSHIP_ADMIN_EXTRAS_BUNDLE = "android.app.extra.TRANSFER_OWNERSHIP_ADMIN_EXTRAS_BUNDLE";
+  }
+
+  public class DeviceAdminService extends android.app.Service {
+    ctor public DeviceAdminService();
+    method public final android.os.IBinder onBind(android.content.Intent);
+  }
+
+  public class DevicePolicyManager {
+    method public void addCrossProfileIntentFilter(@NonNull android.content.ComponentName, android.content.IntentFilter, int);
+    method public boolean addCrossProfileWidgetProvider(@NonNull android.content.ComponentName, String);
+    method public int addOverrideApn(@NonNull android.content.ComponentName, @NonNull android.telephony.data.ApnSetting);
+    method public void addPersistentPreferredActivity(@NonNull android.content.ComponentName, android.content.IntentFilter, @NonNull android.content.ComponentName);
+    method public void addUserRestriction(@NonNull android.content.ComponentName, String);
+    method public boolean bindDeviceAdminServiceAsUser(@NonNull android.content.ComponentName, android.content.Intent, @NonNull android.content.ServiceConnection, int, @NonNull android.os.UserHandle);
+    method public void clearApplicationUserData(@NonNull android.content.ComponentName, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.app.admin.DevicePolicyManager.OnClearApplicationUserDataListener);
+    method public void clearCrossProfileIntentFilters(@NonNull android.content.ComponentName);
+    method @Deprecated public void clearDeviceOwnerApp(String);
+    method public void clearPackagePersistentPreferredActivities(@NonNull android.content.ComponentName, String);
+    method @Deprecated public void clearProfileOwner(@NonNull android.content.ComponentName);
+    method public boolean clearResetPasswordToken(android.content.ComponentName);
+    method public void clearUserRestriction(@NonNull android.content.ComponentName, String);
+    method public android.content.Intent createAdminSupportIntent(@NonNull String);
+    method @Nullable public android.os.UserHandle createAndManageUser(@NonNull android.content.ComponentName, @NonNull String, @NonNull android.content.ComponentName, @Nullable android.os.PersistableBundle, int);
+    method public void enableSystemApp(@NonNull android.content.ComponentName, String);
+    method public int enableSystemApp(@NonNull android.content.ComponentName, android.content.Intent);
+    method public android.security.AttestedKeyPair generateKeyPair(@Nullable android.content.ComponentName, @NonNull String, @NonNull android.security.keystore.KeyGenParameterSpec, int);
+    method @Nullable public String[] getAccountTypesWithManagementDisabled();
+    method @Nullable public java.util.List<android.content.ComponentName> getActiveAdmins();
+    method @NonNull public java.util.Set<java.lang.String> getAffiliationIds(@NonNull android.content.ComponentName);
+    method @Nullable public java.util.Set<java.lang.String> getAlwaysOnVpnLockdownWhitelist(@NonNull android.content.ComponentName);
+    method @Nullable public String getAlwaysOnVpnPackage(@NonNull android.content.ComponentName);
+    method @NonNull @WorkerThread public android.os.Bundle getApplicationRestrictions(@Nullable android.content.ComponentName, String);
+    method @Deprecated @Nullable public String getApplicationRestrictionsManagingPackage(@NonNull android.content.ComponentName);
+    method public boolean getAutoTimeEnabled(@NonNull android.content.ComponentName);
+    method @Deprecated public boolean getAutoTimeRequired();
+    method public boolean getAutoTimeZoneEnabled(@NonNull android.content.ComponentName);
+    method @NonNull public java.util.List<android.os.UserHandle> getBindDeviceAdminTargetUsers(@NonNull android.content.ComponentName);
+    method public boolean getBluetoothContactSharingDisabled(@NonNull android.content.ComponentName);
+    method public boolean getCameraDisabled(@Nullable android.content.ComponentName);
+    method @Deprecated @Nullable public String getCertInstallerPackage(@NonNull android.content.ComponentName) throws java.lang.SecurityException;
+    method @Nullable public java.util.Set<java.lang.String> getCrossProfileCalendarPackages(@NonNull android.content.ComponentName);
+    method public boolean getCrossProfileCallerIdDisabled(@NonNull android.content.ComponentName);
+    method public boolean getCrossProfileContactsSearchDisabled(@NonNull android.content.ComponentName);
+    method @NonNull public java.util.Set<java.lang.String> getCrossProfilePackages(@NonNull android.content.ComponentName);
+    method @NonNull public java.util.List<java.lang.String> getCrossProfileWidgetProviders(@NonNull android.content.ComponentName);
+    method public int getCurrentFailedPasswordAttempts();
+    method @Nullable public java.util.List<java.lang.String> getDelegatePackages(@NonNull android.content.ComponentName, @NonNull String);
+    method @NonNull public java.util.List<java.lang.String> getDelegatedScopes(@Nullable android.content.ComponentName, @NonNull String);
+    method public CharSequence getDeviceOwnerLockScreenInfo();
+    method public CharSequence getEndUserSessionMessage(@NonNull android.content.ComponentName);
+    method @Nullable public android.app.admin.FactoryResetProtectionPolicy getFactoryResetProtectionPolicy(@Nullable android.content.ComponentName);
+    method @Nullable public String getGlobalPrivateDnsHost(@NonNull android.content.ComponentName);
+    method public int getGlobalPrivateDnsMode(@NonNull android.content.ComponentName);
+    method @NonNull public java.util.List<byte[]> getInstalledCaCerts(@Nullable android.content.ComponentName);
+    method @Nullable public java.util.List<java.lang.String> getKeepUninstalledPackages(@Nullable android.content.ComponentName);
+    method public int getKeyguardDisabledFeatures(@Nullable android.content.ComponentName);
+    method public int getLockTaskFeatures(@NonNull android.content.ComponentName);
+    method @NonNull public String[] getLockTaskPackages(@NonNull android.content.ComponentName);
+    method @Nullable public CharSequence getLongSupportMessage(@NonNull android.content.ComponentName);
+    method public long getManagedProfileMaximumTimeOff(@NonNull android.content.ComponentName);
+    method public int getMaximumFailedPasswordsForWipe(@Nullable android.content.ComponentName);
+    method public long getMaximumTimeToLock(@Nullable android.content.ComponentName);
+    method @NonNull public java.util.List<java.lang.String> getMeteredDataDisabledPackages(@NonNull android.content.ComponentName);
+    method @ColorInt public int getOrganizationColor(@NonNull android.content.ComponentName);
+    method @Nullable public CharSequence getOrganizationName(@NonNull android.content.ComponentName);
+    method public java.util.List<android.telephony.data.ApnSetting> getOverrideApns(@NonNull android.content.ComponentName);
+    method @NonNull public android.app.admin.DevicePolicyManager getParentProfileInstance(@NonNull android.content.ComponentName);
+    method @RequiresPermission(android.Manifest.permission.REQUEST_PASSWORD_COMPLEXITY) public int getPasswordComplexity();
+    method public long getPasswordExpiration(@Nullable android.content.ComponentName);
+    method public long getPasswordExpirationTimeout(@Nullable android.content.ComponentName);
+    method public int getPasswordHistoryLength(@Nullable android.content.ComponentName);
+    method public int getPasswordMaximumLength(int);
+    method public int getPasswordMinimumLength(@Nullable android.content.ComponentName);
+    method public int getPasswordMinimumLetters(@Nullable android.content.ComponentName);
+    method public int getPasswordMinimumLowerCase(@Nullable android.content.ComponentName);
+    method public int getPasswordMinimumNonLetter(@Nullable android.content.ComponentName);
+    method public int getPasswordMinimumNumeric(@Nullable android.content.ComponentName);
+    method public int getPasswordMinimumSymbols(@Nullable android.content.ComponentName);
+    method public int getPasswordMinimumUpperCase(@Nullable android.content.ComponentName);
+    method public int getPasswordQuality(@Nullable android.content.ComponentName);
+    method @Nullable public android.app.admin.SystemUpdateInfo getPendingSystemUpdate(@NonNull android.content.ComponentName);
+    method public int getPermissionGrantState(@Nullable android.content.ComponentName, @NonNull String, @NonNull String);
+    method public int getPermissionPolicy(android.content.ComponentName);
+    method @Nullable public java.util.List<java.lang.String> getPermittedAccessibilityServices(@NonNull android.content.ComponentName);
+    method @Nullable public java.util.List<java.lang.String> getPermittedCrossProfileNotificationListeners(@NonNull android.content.ComponentName);
+    method @Nullable public java.util.List<java.lang.String> getPermittedInputMethods(@NonNull android.content.ComponentName);
+    method public int getPersonalAppsSuspendedReasons(@NonNull android.content.ComponentName);
+    method public long getRequiredStrongAuthTimeout(@Nullable android.content.ComponentName);
+    method public boolean getScreenCaptureDisabled(@Nullable android.content.ComponentName);
+    method public java.util.List<android.os.UserHandle> getSecondaryUsers(@NonNull android.content.ComponentName);
+    method public CharSequence getShortSupportMessage(@NonNull android.content.ComponentName);
+    method public CharSequence getStartUserSessionMessage(@NonNull android.content.ComponentName);
+    method @Deprecated public boolean getStorageEncryption(@Nullable android.content.ComponentName);
+    method public int getStorageEncryptionStatus();
+    method @Nullable public android.app.admin.SystemUpdatePolicy getSystemUpdatePolicy();
+    method @Nullable public android.os.PersistableBundle getTransferOwnershipBundle();
+    method @Nullable public java.util.List<android.os.PersistableBundle> getTrustAgentConfiguration(@Nullable android.content.ComponentName, @NonNull android.content.ComponentName);
+    method @NonNull public java.util.List<java.lang.String> getUserControlDisabledPackages(@NonNull android.content.ComponentName);
+    method @NonNull public android.os.Bundle getUserRestrictions(@NonNull android.content.ComponentName);
+    method @Nullable public String getWifiMacAddress(@NonNull android.content.ComponentName);
+    method public boolean grantKeyPairToApp(@Nullable android.content.ComponentName, @NonNull String, @NonNull String);
+    method public boolean hasCaCertInstalled(@Nullable android.content.ComponentName, byte[]);
+    method public boolean hasGrantedPolicy(@NonNull android.content.ComponentName, int);
+    method public boolean hasLockdownAdminConfiguredNetworks(@NonNull android.content.ComponentName);
+    method public boolean installCaCert(@Nullable android.content.ComponentName, byte[]);
+    method public boolean installExistingPackage(@NonNull android.content.ComponentName, String);
+    method public boolean installKeyPair(@Nullable android.content.ComponentName, @NonNull java.security.PrivateKey, @NonNull java.security.cert.Certificate, @NonNull String);
+    method public boolean installKeyPair(@Nullable android.content.ComponentName, @NonNull java.security.PrivateKey, @NonNull java.security.cert.Certificate[], @NonNull String, boolean);
+    method public boolean installKeyPair(@Nullable android.content.ComponentName, @NonNull java.security.PrivateKey, @NonNull java.security.cert.Certificate[], @NonNull String, int);
+    method public void installSystemUpdate(@NonNull android.content.ComponentName, @NonNull android.net.Uri, @NonNull java.util.concurrent.Executor, @NonNull android.app.admin.DevicePolicyManager.InstallSystemUpdateCallback);
+    method public boolean isActivePasswordSufficient();
+    method public boolean isAdminActive(@NonNull android.content.ComponentName);
+    method public boolean isAffiliatedUser();
+    method public boolean isAlwaysOnVpnLockdownEnabled(@NonNull android.content.ComponentName);
+    method public boolean isApplicationHidden(@NonNull android.content.ComponentName, String);
+    method public boolean isBackupServiceEnabled(@NonNull android.content.ComponentName);
+    method @Deprecated public boolean isCallerApplicationRestrictionsManagingPackage();
+    method public boolean isCommonCriteriaModeEnabled(@Nullable android.content.ComponentName);
+    method public boolean isDeviceIdAttestationSupported();
+    method public boolean isDeviceOwnerApp(String);
+    method public boolean isEphemeralUser(@NonNull android.content.ComponentName);
+    method public boolean isLockTaskPermitted(String);
+    method public boolean isLogoutEnabled();
+    method public boolean isManagedProfile(@NonNull android.content.ComponentName);
+    method public boolean isMasterVolumeMuted(@NonNull android.content.ComponentName);
+    method public boolean isNetworkLoggingEnabled(@Nullable android.content.ComponentName);
+    method public boolean isOrganizationOwnedDeviceWithManagedProfile();
+    method public boolean isOverrideApnEnabled(@NonNull android.content.ComponentName);
+    method public boolean isPackageSuspended(@NonNull android.content.ComponentName, String) throws android.content.pm.PackageManager.NameNotFoundException;
+    method public boolean isProfileOwnerApp(String);
+    method public boolean isProvisioningAllowed(@NonNull String);
+    method public boolean isResetPasswordTokenActive(android.content.ComponentName);
+    method public boolean isSecurityLoggingEnabled(@Nullable android.content.ComponentName);
+    method public boolean isUninstallBlocked(@Nullable android.content.ComponentName, String);
+    method public boolean isUniqueDeviceAttestationSupported();
+    method public boolean isUsingUnifiedPassword(@NonNull android.content.ComponentName);
+    method public void lockNow();
+    method public void lockNow(int);
+    method public int logoutUser(@NonNull android.content.ComponentName);
+    method public void reboot(@NonNull android.content.ComponentName);
+    method public void removeActiveAdmin(@NonNull android.content.ComponentName);
+    method public boolean removeCrossProfileWidgetProvider(@NonNull android.content.ComponentName, String);
+    method public boolean removeKeyPair(@Nullable android.content.ComponentName, @NonNull String);
+    method public boolean removeOverrideApn(@NonNull android.content.ComponentName, int);
+    method public boolean removeUser(@NonNull android.content.ComponentName, @NonNull android.os.UserHandle);
+    method public boolean requestBugreport(@NonNull android.content.ComponentName);
+    method @Deprecated public boolean resetPassword(String, int);
+    method public boolean resetPasswordWithToken(@NonNull android.content.ComponentName, String, byte[], int);
+    method @Nullable public java.util.List<android.app.admin.NetworkEvent> retrieveNetworkLogs(@Nullable android.content.ComponentName, long);
+    method @Nullable public java.util.List<android.app.admin.SecurityLog.SecurityEvent> retrievePreRebootSecurityLogs(@NonNull android.content.ComponentName);
+    method @Nullable public java.util.List<android.app.admin.SecurityLog.SecurityEvent> retrieveSecurityLogs(@NonNull android.content.ComponentName);
+    method public boolean revokeKeyPairFromApp(@Nullable android.content.ComponentName, @NonNull String, @NonNull String);
+    method public void setAccountManagementDisabled(@NonNull android.content.ComponentName, String, boolean);
+    method public void setAffiliationIds(@NonNull android.content.ComponentName, @NonNull java.util.Set<java.lang.String>);
+    method public void setAlwaysOnVpnPackage(@NonNull android.content.ComponentName, @Nullable String, boolean) throws android.content.pm.PackageManager.NameNotFoundException;
+    method public void setAlwaysOnVpnPackage(@NonNull android.content.ComponentName, @Nullable String, boolean, @Nullable java.util.Set<java.lang.String>) throws android.content.pm.PackageManager.NameNotFoundException;
+    method public boolean setApplicationHidden(@NonNull android.content.ComponentName, String, boolean);
+    method @WorkerThread public void setApplicationRestrictions(@Nullable android.content.ComponentName, String, android.os.Bundle);
+    method @Deprecated public void setApplicationRestrictionsManagingPackage(@NonNull android.content.ComponentName, @Nullable String) throws android.content.pm.PackageManager.NameNotFoundException;
+    method public void setAutoTimeEnabled(@NonNull android.content.ComponentName, boolean);
+    method @Deprecated public void setAutoTimeRequired(@NonNull android.content.ComponentName, boolean);
+    method public void setAutoTimeZoneEnabled(@NonNull android.content.ComponentName, boolean);
+    method public void setBackupServiceEnabled(@NonNull android.content.ComponentName, boolean);
+    method public void setBluetoothContactSharingDisabled(@NonNull android.content.ComponentName, boolean);
+    method public void setCameraDisabled(@NonNull android.content.ComponentName, boolean);
+    method @Deprecated public void setCertInstallerPackage(@NonNull android.content.ComponentName, @Nullable String) throws java.lang.SecurityException;
+    method public void setCommonCriteriaModeEnabled(@NonNull android.content.ComponentName, boolean);
+    method public void setConfiguredNetworksLockdownState(@NonNull android.content.ComponentName, boolean);
+    method public void setCrossProfileCalendarPackages(@NonNull android.content.ComponentName, @Nullable java.util.Set<java.lang.String>);
+    method public void setCrossProfileCallerIdDisabled(@NonNull android.content.ComponentName, boolean);
+    method public void setCrossProfileContactsSearchDisabled(@NonNull android.content.ComponentName, boolean);
+    method public void setCrossProfilePackages(@NonNull android.content.ComponentName, @NonNull java.util.Set<java.lang.String>);
+    method public void setDefaultSmsApplication(@NonNull android.content.ComponentName, @NonNull String);
+    method public void setDelegatedScopes(@NonNull android.content.ComponentName, @NonNull String, @NonNull java.util.List<java.lang.String>);
+    method public void setDeviceOwnerLockScreenInfo(@NonNull android.content.ComponentName, CharSequence);
+    method public void setEndUserSessionMessage(@NonNull android.content.ComponentName, @Nullable CharSequence);
+    method public void setFactoryResetProtectionPolicy(@NonNull android.content.ComponentName, @Nullable android.app.admin.FactoryResetProtectionPolicy);
+    method public int setGlobalPrivateDnsModeOpportunistic(@NonNull android.content.ComponentName);
+    method @WorkerThread public int setGlobalPrivateDnsModeSpecifiedHost(@NonNull android.content.ComponentName, @NonNull String);
+    method public void setGlobalSetting(@NonNull android.content.ComponentName, String, String);
+    method public void setKeepUninstalledPackages(@Nullable android.content.ComponentName, @NonNull java.util.List<java.lang.String>);
+    method public boolean setKeyPairCertificate(@Nullable android.content.ComponentName, @NonNull String, @NonNull java.util.List<java.security.cert.Certificate>, boolean);
+    method public boolean setKeyguardDisabled(@NonNull android.content.ComponentName, boolean);
+    method public void setKeyguardDisabledFeatures(@NonNull android.content.ComponentName, int);
+    method public void setLocationEnabled(@NonNull android.content.ComponentName, boolean);
+    method public void setLockTaskFeatures(@NonNull android.content.ComponentName, int);
+    method public void setLockTaskPackages(@NonNull android.content.ComponentName, @NonNull String[]) throws java.lang.SecurityException;
+    method public void setLogoutEnabled(@NonNull android.content.ComponentName, boolean);
+    method public void setLongSupportMessage(@NonNull android.content.ComponentName, @Nullable CharSequence);
+    method public void setManagedProfileMaximumTimeOff(@NonNull android.content.ComponentName, long);
+    method public void setMasterVolumeMuted(@NonNull android.content.ComponentName, boolean);
+    method public void setMaximumFailedPasswordsForWipe(@NonNull android.content.ComponentName, int);
+    method public void setMaximumTimeToLock(@NonNull android.content.ComponentName, long);
+    method @NonNull public java.util.List<java.lang.String> setMeteredDataDisabledPackages(@NonNull android.content.ComponentName, @NonNull java.util.List<java.lang.String>);
+    method public void setNetworkLoggingEnabled(@Nullable android.content.ComponentName, boolean);
+    method public void setOrganizationColor(@NonNull android.content.ComponentName, int);
+    method public void setOrganizationName(@NonNull android.content.ComponentName, @Nullable CharSequence);
+    method public void setOverrideApnsEnabled(@NonNull android.content.ComponentName, boolean);
+    method @NonNull public String[] setPackagesSuspended(@NonNull android.content.ComponentName, @NonNull String[], boolean);
+    method public void setPasswordExpirationTimeout(@NonNull android.content.ComponentName, long);
+    method public void setPasswordHistoryLength(@NonNull android.content.ComponentName, int);
+    method public void setPasswordMinimumLength(@NonNull android.content.ComponentName, int);
+    method public void setPasswordMinimumLetters(@NonNull android.content.ComponentName, int);
+    method public void setPasswordMinimumLowerCase(@NonNull android.content.ComponentName, int);
+    method public void setPasswordMinimumNonLetter(@NonNull android.content.ComponentName, int);
+    method public void setPasswordMinimumNumeric(@NonNull android.content.ComponentName, int);
+    method public void setPasswordMinimumSymbols(@NonNull android.content.ComponentName, int);
+    method public void setPasswordMinimumUpperCase(@NonNull android.content.ComponentName, int);
+    method public void setPasswordQuality(@NonNull android.content.ComponentName, int);
+    method public boolean setPermissionGrantState(@NonNull android.content.ComponentName, @NonNull String, @NonNull String, int);
+    method public void setPermissionPolicy(@NonNull android.content.ComponentName, int);
+    method public boolean setPermittedAccessibilityServices(@NonNull android.content.ComponentName, java.util.List<java.lang.String>);
+    method public boolean setPermittedCrossProfileNotificationListeners(@NonNull android.content.ComponentName, @Nullable java.util.List<java.lang.String>);
+    method public boolean setPermittedInputMethods(@NonNull android.content.ComponentName, java.util.List<java.lang.String>);
+    method public void setPersonalAppsSuspended(@NonNull android.content.ComponentName, boolean);
+    method public void setProfileEnabled(@NonNull android.content.ComponentName);
+    method public void setProfileName(@NonNull android.content.ComponentName, String);
+    method public void setRecommendedGlobalProxy(@NonNull android.content.ComponentName, @Nullable android.net.ProxyInfo);
+    method public void setRequiredStrongAuthTimeout(@NonNull android.content.ComponentName, long);
+    method public boolean setResetPasswordToken(android.content.ComponentName, byte[]);
+    method public void setRestrictionsProvider(@NonNull android.content.ComponentName, @Nullable android.content.ComponentName);
+    method public void setScreenCaptureDisabled(@NonNull android.content.ComponentName, boolean);
+    method public void setSecureSetting(@NonNull android.content.ComponentName, String, String);
+    method public void setSecurityLoggingEnabled(@NonNull android.content.ComponentName, boolean);
+    method public void setShortSupportMessage(@NonNull android.content.ComponentName, @Nullable CharSequence);
+    method public void setStartUserSessionMessage(@NonNull android.content.ComponentName, @Nullable CharSequence);
+    method public boolean setStatusBarDisabled(@NonNull android.content.ComponentName, boolean);
+    method @Deprecated public int setStorageEncryption(@NonNull android.content.ComponentName, boolean);
+    method public void setSystemSetting(@NonNull android.content.ComponentName, @NonNull String, String);
+    method public void setSystemUpdatePolicy(@NonNull android.content.ComponentName, android.app.admin.SystemUpdatePolicy);
+    method public boolean setTime(@NonNull android.content.ComponentName, long);
+    method public boolean setTimeZone(@NonNull android.content.ComponentName, String);
+    method public void setTrustAgentConfiguration(@NonNull android.content.ComponentName, @NonNull android.content.ComponentName, android.os.PersistableBundle);
+    method public void setUninstallBlocked(@Nullable android.content.ComponentName, String, boolean);
+    method public void setUserControlDisabledPackages(@NonNull android.content.ComponentName, @NonNull java.util.List<java.lang.String>);
+    method public void setUserIcon(@NonNull android.content.ComponentName, android.graphics.Bitmap);
+    method public int startUserInBackground(@NonNull android.content.ComponentName, @NonNull android.os.UserHandle);
+    method public int stopUser(@NonNull android.content.ComponentName, @NonNull android.os.UserHandle);
+    method public boolean switchUser(@NonNull android.content.ComponentName, @Nullable android.os.UserHandle);
+    method public void transferOwnership(@NonNull android.content.ComponentName, @NonNull android.content.ComponentName, @Nullable android.os.PersistableBundle);
+    method public void uninstallAllUserCaCerts(@Nullable android.content.ComponentName);
+    method public void uninstallCaCert(@Nullable android.content.ComponentName, byte[]);
+    method public boolean updateOverrideApn(@NonNull android.content.ComponentName, int, @NonNull android.telephony.data.ApnSetting);
+    method public void wipeData(int);
+    method public void wipeData(int, @NonNull CharSequence);
+    field public static final String ACTION_ADD_DEVICE_ADMIN = "android.app.action.ADD_DEVICE_ADMIN";
+    field public static final String ACTION_ADMIN_POLICY_COMPLIANCE = "android.app.action.ADMIN_POLICY_COMPLIANCE";
+    field public static final String ACTION_APPLICATION_DELEGATION_SCOPES_CHANGED = "android.app.action.APPLICATION_DELEGATION_SCOPES_CHANGED";
+    field public static final String ACTION_CHECK_POLICY_COMPLIANCE = "android.app.action.CHECK_POLICY_COMPLIANCE";
+    field public static final String ACTION_DEVICE_ADMIN_SERVICE = "android.app.action.DEVICE_ADMIN_SERVICE";
+    field public static final String ACTION_DEVICE_OWNER_CHANGED = "android.app.action.DEVICE_OWNER_CHANGED";
+    field public static final String ACTION_GET_PROVISIONING_MODE = "android.app.action.GET_PROVISIONING_MODE";
+    field public static final String ACTION_MANAGED_PROFILE_PROVISIONED = "android.app.action.MANAGED_PROFILE_PROVISIONED";
+    field public static final String ACTION_PROFILE_OWNER_CHANGED = "android.app.action.PROFILE_OWNER_CHANGED";
+    field public static final String ACTION_PROVISIONING_SUCCESSFUL = "android.app.action.PROVISIONING_SUCCESSFUL";
+    field public static final String ACTION_PROVISION_MANAGED_DEVICE = "android.app.action.PROVISION_MANAGED_DEVICE";
+    field public static final String ACTION_PROVISION_MANAGED_PROFILE = "android.app.action.PROVISION_MANAGED_PROFILE";
+    field public static final String ACTION_SET_NEW_PARENT_PROFILE_PASSWORD = "android.app.action.SET_NEW_PARENT_PROFILE_PASSWORD";
+    field public static final String ACTION_SET_NEW_PASSWORD = "android.app.action.SET_NEW_PASSWORD";
+    field public static final String ACTION_START_ENCRYPTION = "android.app.action.START_ENCRYPTION";
+    field public static final String ACTION_SYSTEM_UPDATE_POLICY_CHANGED = "android.app.action.SYSTEM_UPDATE_POLICY_CHANGED";
+    field public static final String DELEGATION_APP_RESTRICTIONS = "delegation-app-restrictions";
+    field public static final String DELEGATION_BLOCK_UNINSTALL = "delegation-block-uninstall";
+    field public static final String DELEGATION_CERT_INSTALL = "delegation-cert-install";
+    field public static final String DELEGATION_CERT_SELECTION = "delegation-cert-selection";
+    field public static final String DELEGATION_ENABLE_SYSTEM_APP = "delegation-enable-system-app";
+    field public static final String DELEGATION_INSTALL_EXISTING_PACKAGE = "delegation-install-existing-package";
+    field public static final String DELEGATION_KEEP_UNINSTALLED_PACKAGES = "delegation-keep-uninstalled-packages";
+    field public static final String DELEGATION_NETWORK_LOGGING = "delegation-network-logging";
+    field public static final String DELEGATION_PACKAGE_ACCESS = "delegation-package-access";
+    field public static final String DELEGATION_PERMISSION_GRANT = "delegation-permission-grant";
+    field public static final int ENCRYPTION_STATUS_ACTIVATING = 2; // 0x2
+    field public static final int ENCRYPTION_STATUS_ACTIVE = 3; // 0x3
+    field public static final int ENCRYPTION_STATUS_ACTIVE_DEFAULT_KEY = 4; // 0x4
+    field public static final int ENCRYPTION_STATUS_ACTIVE_PER_USER = 5; // 0x5
+    field public static final int ENCRYPTION_STATUS_INACTIVE = 1; // 0x1
+    field public static final int ENCRYPTION_STATUS_UNSUPPORTED = 0; // 0x0
+    field public static final String EXTRA_ADD_EXPLANATION = "android.app.extra.ADD_EXPLANATION";
+    field public static final String EXTRA_DELEGATION_SCOPES = "android.app.extra.DELEGATION_SCOPES";
+    field public static final String EXTRA_DEVICE_ADMIN = "android.app.extra.DEVICE_ADMIN";
+    field @RequiresPermission(android.Manifest.permission.REQUEST_PASSWORD_COMPLEXITY) public static final String EXTRA_PASSWORD_COMPLEXITY = "android.app.extra.PASSWORD_COMPLEXITY";
+    field public static final String EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE = "android.app.extra.PROVISIONING_ACCOUNT_TO_MIGRATE";
+    field public static final String EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE = "android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE";
+    field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME = "android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME";
+    field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_MINIMUM_VERSION_CODE = "android.app.extra.PROVISIONING_DEVICE_ADMIN_MINIMUM_VERSION_CODE";
+    field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM";
+    field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER";
+    field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION";
+    field @Deprecated public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME";
+    field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM = "android.app.extra.PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM";
+    field public static final String EXTRA_PROVISIONING_DISCLAIMERS = "android.app.extra.PROVISIONING_DISCLAIMERS";
+    field public static final String EXTRA_PROVISIONING_DISCLAIMER_CONTENT = "android.app.extra.PROVISIONING_DISCLAIMER_CONTENT";
+    field public static final String EXTRA_PROVISIONING_DISCLAIMER_HEADER = "android.app.extra.PROVISIONING_DISCLAIMER_HEADER";
+    field @Deprecated public static final String EXTRA_PROVISIONING_EMAIL_ADDRESS = "android.app.extra.PROVISIONING_EMAIL_ADDRESS";
+    field public static final String EXTRA_PROVISIONING_IMEI = "android.app.extra.PROVISIONING_IMEI";
+    field public static final String EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION = "android.app.extra.PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION";
+    field public static final String EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED = "android.app.extra.PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED";
+    field public static final String EXTRA_PROVISIONING_LOCALE = "android.app.extra.PROVISIONING_LOCALE";
+    field public static final String EXTRA_PROVISIONING_LOCAL_TIME = "android.app.extra.PROVISIONING_LOCAL_TIME";
+    field public static final String EXTRA_PROVISIONING_LOGO_URI = "android.app.extra.PROVISIONING_LOGO_URI";
+    field public static final String EXTRA_PROVISIONING_MAIN_COLOR = "android.app.extra.PROVISIONING_MAIN_COLOR";
+    field public static final String EXTRA_PROVISIONING_MODE = "android.app.extra.PROVISIONING_MODE";
+    field public static final String EXTRA_PROVISIONING_SERIAL_NUMBER = "android.app.extra.PROVISIONING_SERIAL_NUMBER";
+    field public static final String EXTRA_PROVISIONING_SKIP_EDUCATION_SCREENS = "android.app.extra.PROVISIONING_SKIP_EDUCATION_SCREENS";
+    field public static final String EXTRA_PROVISIONING_SKIP_ENCRYPTION = "android.app.extra.PROVISIONING_SKIP_ENCRYPTION";
+    field public static final String EXTRA_PROVISIONING_SKIP_USER_CONSENT = "android.app.extra.PROVISIONING_SKIP_USER_CONSENT";
+    field public static final String EXTRA_PROVISIONING_TIME_ZONE = "android.app.extra.PROVISIONING_TIME_ZONE";
+    field public static final String EXTRA_PROVISIONING_WIFI_ANONYMOUS_IDENTITY = "android.app.extra.PROVISIONING_WIFI_ANONYMOUS_IDENTITY";
+    field public static final String EXTRA_PROVISIONING_WIFI_CA_CERTIFICATE = "android.app.extra.PROVISIONING_WIFI_CA_CERTIFICATE";
+    field public static final String EXTRA_PROVISIONING_WIFI_DOMAIN = "android.app.extra.PROVISIONING_WIFI_DOMAIN";
+    field public static final String EXTRA_PROVISIONING_WIFI_EAP_METHOD = "android.app.extra.PROVISIONING_WIFI_EAP_METHOD";
+    field public static final String EXTRA_PROVISIONING_WIFI_HIDDEN = "android.app.extra.PROVISIONING_WIFI_HIDDEN";
+    field public static final String EXTRA_PROVISIONING_WIFI_IDENTITY = "android.app.extra.PROVISIONING_WIFI_IDENTITY";
+    field public static final String EXTRA_PROVISIONING_WIFI_PAC_URL = "android.app.extra.PROVISIONING_WIFI_PAC_URL";
+    field public static final String EXTRA_PROVISIONING_WIFI_PASSWORD = "android.app.extra.PROVISIONING_WIFI_PASSWORD";
+    field public static final String EXTRA_PROVISIONING_WIFI_PHASE2_AUTH = "android.app.extra.PROVISIONING_WIFI_PHASE2_AUTH";
+    field public static final String EXTRA_PROVISIONING_WIFI_PROXY_BYPASS = "android.app.extra.PROVISIONING_WIFI_PROXY_BYPASS";
+    field public static final String EXTRA_PROVISIONING_WIFI_PROXY_HOST = "android.app.extra.PROVISIONING_WIFI_PROXY_HOST";
+    field public static final String EXTRA_PROVISIONING_WIFI_PROXY_PORT = "android.app.extra.PROVISIONING_WIFI_PROXY_PORT";
+    field public static final String EXTRA_PROVISIONING_WIFI_SECURITY_TYPE = "android.app.extra.PROVISIONING_WIFI_SECURITY_TYPE";
+    field public static final String EXTRA_PROVISIONING_WIFI_SSID = "android.app.extra.PROVISIONING_WIFI_SSID";
+    field public static final String EXTRA_PROVISIONING_WIFI_USER_CERTIFICATE = "android.app.extra.PROVISIONING_WIFI_USER_CERTIFICATE";
+    field public static final int FLAG_EVICT_CREDENTIAL_ENCRYPTION_KEY = 1; // 0x1
+    field public static final int FLAG_MANAGED_CAN_ACCESS_PARENT = 2; // 0x2
+    field public static final int FLAG_PARENT_CAN_ACCESS_MANAGED = 1; // 0x1
+    field public static final int ID_TYPE_BASE_INFO = 1; // 0x1
+    field public static final int ID_TYPE_IMEI = 4; // 0x4
+    field public static final int ID_TYPE_INDIVIDUAL_ATTESTATION = 16; // 0x10
+    field public static final int ID_TYPE_MEID = 8; // 0x8
+    field public static final int ID_TYPE_SERIAL = 2; // 0x2
+    field public static final int INSTALLKEY_REQUEST_CREDENTIALS_ACCESS = 1; // 0x1
+    field public static final int INSTALLKEY_SET_USER_SELECTABLE = 2; // 0x2
+    field public static final int KEYGUARD_DISABLE_BIOMETRICS = 416; // 0x1a0
+    field public static final int KEYGUARD_DISABLE_FACE = 128; // 0x80
+    field public static final int KEYGUARD_DISABLE_FEATURES_ALL = 2147483647; // 0x7fffffff
+    field public static final int KEYGUARD_DISABLE_FEATURES_NONE = 0; // 0x0
+    field public static final int KEYGUARD_DISABLE_FINGERPRINT = 32; // 0x20
+    field public static final int KEYGUARD_DISABLE_IRIS = 256; // 0x100
+    field public static final int KEYGUARD_DISABLE_REMOTE_INPUT = 64; // 0x40
+    field public static final int KEYGUARD_DISABLE_SECURE_CAMERA = 2; // 0x2
+    field public static final int KEYGUARD_DISABLE_SECURE_NOTIFICATIONS = 4; // 0x4
+    field public static final int KEYGUARD_DISABLE_TRUST_AGENTS = 16; // 0x10
+    field public static final int KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS = 8; // 0x8
+    field public static final int KEYGUARD_DISABLE_WIDGETS_ALL = 1; // 0x1
+    field public static final int LEAVE_ALL_SYSTEM_APPS_ENABLED = 16; // 0x10
+    field public static final int LOCK_TASK_FEATURE_BLOCK_ACTIVITY_START_IN_TASK = 64; // 0x40
+    field public static final int LOCK_TASK_FEATURE_GLOBAL_ACTIONS = 16; // 0x10
+    field public static final int LOCK_TASK_FEATURE_HOME = 4; // 0x4
+    field public static final int LOCK_TASK_FEATURE_KEYGUARD = 32; // 0x20
+    field public static final int LOCK_TASK_FEATURE_NONE = 0; // 0x0
+    field public static final int LOCK_TASK_FEATURE_NOTIFICATIONS = 2; // 0x2
+    field public static final int LOCK_TASK_FEATURE_OVERVIEW = 8; // 0x8
+    field public static final int LOCK_TASK_FEATURE_SYSTEM_INFO = 1; // 0x1
+    field public static final int MAKE_USER_EPHEMERAL = 2; // 0x2
+    field public static final String MIME_TYPE_PROVISIONING_NFC = "application/com.android.managedprovisioning";
+    field public static final int PASSWORD_COMPLEXITY_HIGH = 327680; // 0x50000
+    field public static final int PASSWORD_COMPLEXITY_LOW = 65536; // 0x10000
+    field public static final int PASSWORD_COMPLEXITY_MEDIUM = 196608; // 0x30000
+    field public static final int PASSWORD_COMPLEXITY_NONE = 0; // 0x0
+    field public static final int PASSWORD_QUALITY_ALPHABETIC = 262144; // 0x40000
+    field public static final int PASSWORD_QUALITY_ALPHANUMERIC = 327680; // 0x50000
+    field public static final int PASSWORD_QUALITY_BIOMETRIC_WEAK = 32768; // 0x8000
+    field public static final int PASSWORD_QUALITY_COMPLEX = 393216; // 0x60000
+    field public static final int PASSWORD_QUALITY_NUMERIC = 131072; // 0x20000
+    field public static final int PASSWORD_QUALITY_NUMERIC_COMPLEX = 196608; // 0x30000
+    field public static final int PASSWORD_QUALITY_SOMETHING = 65536; // 0x10000
+    field public static final int PASSWORD_QUALITY_UNSPECIFIED = 0; // 0x0
+    field public static final int PERMISSION_GRANT_STATE_DEFAULT = 0; // 0x0
+    field public static final int PERMISSION_GRANT_STATE_DENIED = 2; // 0x2
+    field public static final int PERMISSION_GRANT_STATE_GRANTED = 1; // 0x1
+    field public static final int PERMISSION_POLICY_AUTO_DENY = 2; // 0x2
+    field public static final int PERMISSION_POLICY_AUTO_GRANT = 1; // 0x1
+    field public static final int PERMISSION_POLICY_PROMPT = 0; // 0x0
+    field public static final int PERSONAL_APPS_NOT_SUSPENDED = 0; // 0x0
+    field public static final int PERSONAL_APPS_SUSPENDED_EXPLICITLY = 1; // 0x1
+    field public static final int PERSONAL_APPS_SUSPENDED_PROFILE_TIMEOUT = 2; // 0x2
+    field public static final String POLICY_DISABLE_CAMERA = "policy_disable_camera";
+    field public static final String POLICY_DISABLE_SCREEN_CAPTURE = "policy_disable_screen_capture";
+    field public static final int PRIVATE_DNS_MODE_OFF = 1; // 0x1
+    field public static final int PRIVATE_DNS_MODE_OPPORTUNISTIC = 2; // 0x2
+    field public static final int PRIVATE_DNS_MODE_PROVIDER_HOSTNAME = 3; // 0x3
+    field public static final int PRIVATE_DNS_MODE_UNKNOWN = 0; // 0x0
+    field public static final int PRIVATE_DNS_SET_ERROR_FAILURE_SETTING = 2; // 0x2
+    field public static final int PRIVATE_DNS_SET_ERROR_HOST_NOT_SERVING = 1; // 0x1
+    field public static final int PRIVATE_DNS_SET_NO_ERROR = 0; // 0x0
+    field public static final int PROVISIONING_MODE_FULLY_MANAGED_DEVICE = 1; // 0x1
+    field public static final int PROVISIONING_MODE_MANAGED_PROFILE = 2; // 0x2
+    field public static final int RESET_PASSWORD_DO_NOT_ASK_CREDENTIALS_ON_BOOT = 2; // 0x2
+    field public static final int RESET_PASSWORD_REQUIRE_ENTRY = 1; // 0x1
+    field public static final int SKIP_SETUP_WIZARD = 1; // 0x1
+    field public static final int WIPE_EUICC = 4; // 0x4
+    field public static final int WIPE_EXTERNAL_STORAGE = 1; // 0x1
+    field public static final int WIPE_RESET_PROTECTION_DATA = 2; // 0x2
+    field public static final int WIPE_SILENTLY = 8; // 0x8
+  }
+
+  public abstract static class DevicePolicyManager.InstallSystemUpdateCallback {
+    ctor public DevicePolicyManager.InstallSystemUpdateCallback();
+    method public void onInstallUpdateError(int, @NonNull String);
+    field public static final int UPDATE_ERROR_BATTERY_LOW = 5; // 0x5
+    field public static final int UPDATE_ERROR_FILE_NOT_FOUND = 4; // 0x4
+    field public static final int UPDATE_ERROR_INCORRECT_OS_VERSION = 2; // 0x2
+    field public static final int UPDATE_ERROR_UNKNOWN = 1; // 0x1
+    field public static final int UPDATE_ERROR_UPDATE_FILE_INVALID = 3; // 0x3
+  }
+
+  public static interface DevicePolicyManager.OnClearApplicationUserDataListener {
+    method public void onApplicationUserDataCleared(String, boolean);
+  }
+
+  public final class DnsEvent extends android.app.admin.NetworkEvent implements android.os.Parcelable {
+    method public String getHostname();
+    method public java.util.List<java.net.InetAddress> getInetAddresses();
+    method public int getTotalResolvedAddressCount();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.DnsEvent> CREATOR;
+  }
+
+  public final class FactoryResetProtectionPolicy implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public java.util.List<java.lang.String> getFactoryResetProtectionAccounts();
+    method public boolean isFactoryResetProtectionEnabled();
+    method public void writeToParcel(@NonNull android.os.Parcel, @Nullable int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.FactoryResetProtectionPolicy> CREATOR;
+  }
+
+  public static class FactoryResetProtectionPolicy.Builder {
+    ctor public FactoryResetProtectionPolicy.Builder();
+    method @NonNull public android.app.admin.FactoryResetProtectionPolicy build();
+    method @NonNull public android.app.admin.FactoryResetProtectionPolicy.Builder setFactoryResetProtectionAccounts(@NonNull java.util.List<java.lang.String>);
+    method @NonNull public android.app.admin.FactoryResetProtectionPolicy.Builder setFactoryResetProtectionEnabled(boolean);
+  }
+
+  public class FreezePeriod {
+    ctor public FreezePeriod(java.time.MonthDay, java.time.MonthDay);
+    method public java.time.MonthDay getEnd();
+    method public java.time.MonthDay getStart();
+  }
+
+  public abstract class NetworkEvent implements android.os.Parcelable {
+    method public int describeContents();
+    method public long getId();
+    method public String getPackageName();
+    method public long getTimestamp();
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.NetworkEvent> CREATOR;
+  }
+
+  public class SecurityLog {
+    ctor public SecurityLog();
+    field public static final int LEVEL_ERROR = 3; // 0x3
+    field public static final int LEVEL_INFO = 1; // 0x1
+    field public static final int LEVEL_WARNING = 2; // 0x2
+    field public static final int TAG_ADB_SHELL_CMD = 210002; // 0x33452
+    field public static final int TAG_ADB_SHELL_INTERACTIVE = 210001; // 0x33451
+    field public static final int TAG_APP_PROCESS_START = 210005; // 0x33455
+    field public static final int TAG_CAMERA_POLICY_SET = 210034; // 0x33472
+    field public static final int TAG_CERT_AUTHORITY_INSTALLED = 210029; // 0x3346d
+    field public static final int TAG_CERT_AUTHORITY_REMOVED = 210030; // 0x3346e
+    field public static final int TAG_CERT_VALIDATION_FAILURE = 210033; // 0x33471
+    field public static final int TAG_CRYPTO_SELF_TEST_COMPLETED = 210031; // 0x3346f
+    field public static final int TAG_KEYGUARD_DISABLED_FEATURES_SET = 210021; // 0x33465
+    field public static final int TAG_KEYGUARD_DISMISSED = 210006; // 0x33456
+    field public static final int TAG_KEYGUARD_DISMISS_AUTH_ATTEMPT = 210007; // 0x33457
+    field public static final int TAG_KEYGUARD_SECURED = 210008; // 0x33458
+    field public static final int TAG_KEY_DESTRUCTION = 210026; // 0x3346a
+    field public static final int TAG_KEY_GENERATED = 210024; // 0x33468
+    field public static final int TAG_KEY_IMPORT = 210025; // 0x33469
+    field public static final int TAG_KEY_INTEGRITY_VIOLATION = 210032; // 0x33470
+    field public static final int TAG_LOGGING_STARTED = 210011; // 0x3345b
+    field public static final int TAG_LOGGING_STOPPED = 210012; // 0x3345c
+    field public static final int TAG_LOG_BUFFER_SIZE_CRITICAL = 210015; // 0x3345f
+    field public static final int TAG_MAX_PASSWORD_ATTEMPTS_SET = 210020; // 0x33464
+    field public static final int TAG_MAX_SCREEN_LOCK_TIMEOUT_SET = 210019; // 0x33463
+    field public static final int TAG_MEDIA_MOUNT = 210013; // 0x3345d
+    field public static final int TAG_MEDIA_UNMOUNT = 210014; // 0x3345e
+    field public static final int TAG_OS_SHUTDOWN = 210010; // 0x3345a
+    field public static final int TAG_OS_STARTUP = 210009; // 0x33459
+    field public static final int TAG_PASSWORD_COMPLEXITY_SET = 210017; // 0x33461
+    field public static final int TAG_PASSWORD_EXPIRATION_SET = 210016; // 0x33460
+    field public static final int TAG_PASSWORD_HISTORY_LENGTH_SET = 210018; // 0x33462
+    field public static final int TAG_REMOTE_LOCK = 210022; // 0x33466
+    field public static final int TAG_SYNC_RECV_FILE = 210003; // 0x33453
+    field public static final int TAG_SYNC_SEND_FILE = 210004; // 0x33454
+    field public static final int TAG_USER_RESTRICTION_ADDED = 210027; // 0x3346b
+    field public static final int TAG_USER_RESTRICTION_REMOVED = 210028; // 0x3346c
+    field public static final int TAG_WIPE_FAILURE = 210023; // 0x33467
+  }
+
+  public static final class SecurityLog.SecurityEvent implements android.os.Parcelable {
+    method public int describeContents();
+    method public Object getData();
+    method public long getId();
+    method public int getLogLevel();
+    method public int getTag();
+    method public long getTimeNanos();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.SecurityLog.SecurityEvent> CREATOR;
+  }
+
+  public final class SystemUpdateInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public long getReceivedTime();
+    method public int getSecurityPatchState();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.SystemUpdateInfo> CREATOR;
+    field public static final int SECURITY_PATCH_STATE_FALSE = 1; // 0x1
+    field public static final int SECURITY_PATCH_STATE_TRUE = 2; // 0x2
+    field public static final int SECURITY_PATCH_STATE_UNKNOWN = 0; // 0x0
+  }
+
+  public final class SystemUpdatePolicy implements android.os.Parcelable {
+    method public static android.app.admin.SystemUpdatePolicy createAutomaticInstallPolicy();
+    method public static android.app.admin.SystemUpdatePolicy createPostponeInstallPolicy();
+    method public static android.app.admin.SystemUpdatePolicy createWindowedInstallPolicy(int, int);
+    method public int describeContents();
+    method public java.util.List<android.app.admin.FreezePeriod> getFreezePeriods();
+    method public int getInstallWindowEnd();
+    method public int getInstallWindowStart();
+    method public int getPolicyType();
+    method public android.app.admin.SystemUpdatePolicy setFreezePeriods(java.util.List<android.app.admin.FreezePeriod>);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.SystemUpdatePolicy> CREATOR;
+    field public static final int TYPE_INSTALL_AUTOMATIC = 1; // 0x1
+    field public static final int TYPE_INSTALL_WINDOWED = 2; // 0x2
+    field public static final int TYPE_POSTPONE = 3; // 0x3
+  }
+
+  public static final class SystemUpdatePolicy.ValidationFailedException extends java.lang.IllegalArgumentException implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getErrorCode();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.SystemUpdatePolicy.ValidationFailedException> CREATOR;
+    field public static final int ERROR_COMBINED_FREEZE_PERIOD_TOO_CLOSE = 6; // 0x6
+    field public static final int ERROR_COMBINED_FREEZE_PERIOD_TOO_LONG = 5; // 0x5
+    field public static final int ERROR_DUPLICATE_OR_OVERLAP = 2; // 0x2
+    field public static final int ERROR_NEW_FREEZE_PERIOD_TOO_CLOSE = 4; // 0x4
+    field public static final int ERROR_NEW_FREEZE_PERIOD_TOO_LONG = 3; // 0x3
+    field public static final int ERROR_UNKNOWN = 1; // 0x1
+  }
+
+}
+
+package android.app.assist {
+
+  public class AssistContent implements android.os.Parcelable {
+    ctor public AssistContent();
+    method public int describeContents();
+    method public android.content.ClipData getClipData();
+    method public android.os.Bundle getExtras();
+    method public android.content.Intent getIntent();
+    method public String getStructuredData();
+    method public android.net.Uri getWebUri();
+    method public boolean isAppProvidedIntent();
+    method public boolean isAppProvidedWebUri();
+    method public void setClipData(android.content.ClipData);
+    method public void setIntent(android.content.Intent);
+    method public void setStructuredData(String);
+    method public void setWebUri(android.net.Uri);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.assist.AssistContent> CREATOR;
+  }
+
+  public class AssistStructure implements android.os.Parcelable {
+    ctor public AssistStructure();
+    method public int describeContents();
+    method public long getAcquisitionEndTime();
+    method public long getAcquisitionStartTime();
+    method public android.content.ComponentName getActivityComponent();
+    method public android.app.assist.AssistStructure.WindowNode getWindowNodeAt(int);
+    method public int getWindowNodeCount();
+    method public boolean isHomeActivity();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.assist.AssistStructure> CREATOR;
+  }
+
+  public static class AssistStructure.ViewNode {
+    method public float getAlpha();
+    method @Nullable public String[] getAutofillHints();
+    method @Nullable public android.view.autofill.AutofillId getAutofillId();
+    method @Nullable public CharSequence[] getAutofillOptions();
+    method public int getAutofillType();
+    method @Nullable public android.view.autofill.AutofillValue getAutofillValue();
+    method public android.app.assist.AssistStructure.ViewNode getChildAt(int);
+    method public int getChildCount();
+    method @Nullable public String getClassName();
+    method @Nullable public CharSequence getContentDescription();
+    method public float getElevation();
+    method @Nullable public android.os.Bundle getExtras();
+    method public int getHeight();
+    method @Nullable public String getHint();
+    method @Nullable public String getHintIdEntry();
+    method @Nullable public android.view.ViewStructure.HtmlInfo getHtmlInfo();
+    method public int getId();
+    method @Nullable public String getIdEntry();
+    method @Nullable public String getIdPackage();
+    method @Nullable public String getIdType();
+    method public int getImportantForAutofill();
+    method public int getInputType();
+    method public int getLeft();
+    method @Nullable public android.os.LocaleList getLocaleList();
+    method public int getMaxTextEms();
+    method public int getMaxTextLength();
+    method public int getMinTextEms();
+    method public int getScrollX();
+    method public int getScrollY();
+    method @Nullable public CharSequence getText();
+    method public int getTextBackgroundColor();
+    method public int getTextColor();
+    method @Nullable public String getTextIdEntry();
+    method @Nullable public int[] getTextLineBaselines();
+    method @Nullable public int[] getTextLineCharOffsets();
+    method public int getTextSelectionEnd();
+    method public int getTextSelectionStart();
+    method public float getTextSize();
+    method public int getTextStyle();
+    method public int getTop();
+    method public android.graphics.Matrix getTransformation();
+    method public int getVisibility();
+    method @Nullable public String getWebDomain();
+    method @Nullable public String getWebScheme();
+    method public int getWidth();
+    method public boolean isAccessibilityFocused();
+    method public boolean isActivated();
+    method public boolean isAssistBlocked();
+    method public boolean isCheckable();
+    method public boolean isChecked();
+    method public boolean isClickable();
+    method public boolean isContextClickable();
+    method public boolean isEnabled();
+    method public boolean isFocusable();
+    method public boolean isFocused();
+    method public boolean isLongClickable();
+    method public boolean isOpaque();
+    method public boolean isSelected();
+    field public static final int TEXT_COLOR_UNDEFINED = 1; // 0x1
+    field public static final int TEXT_STYLE_BOLD = 1; // 0x1
+    field public static final int TEXT_STYLE_ITALIC = 2; // 0x2
+    field public static final int TEXT_STYLE_STRIKE_THRU = 8; // 0x8
+    field public static final int TEXT_STYLE_UNDERLINE = 4; // 0x4
+  }
+
+  public static class AssistStructure.WindowNode {
+    method public int getDisplayId();
+    method public int getHeight();
+    method public int getLeft();
+    method public android.app.assist.AssistStructure.ViewNode getRootViewNode();
+    method public CharSequence getTitle();
+    method public int getTop();
+    method public int getWidth();
+  }
+
+}
+
+package android.app.backup {
+
+  public abstract class BackupAgent extends android.content.ContextWrapper {
+    ctor public BackupAgent();
+    method public final void fullBackupFile(java.io.File, android.app.backup.FullBackupDataOutput);
+    method public abstract void onBackup(android.os.ParcelFileDescriptor, android.app.backup.BackupDataOutput, android.os.ParcelFileDescriptor) throws java.io.IOException;
+    method public void onCreate();
+    method public void onDestroy();
+    method public void onFullBackup(android.app.backup.FullBackupDataOutput) throws java.io.IOException;
+    method public void onQuotaExceeded(long, long);
+    method public abstract void onRestore(android.app.backup.BackupDataInput, int, android.os.ParcelFileDescriptor) throws java.io.IOException;
+    method public void onRestore(android.app.backup.BackupDataInput, long, android.os.ParcelFileDescriptor) throws java.io.IOException;
+    method public void onRestoreFile(android.os.ParcelFileDescriptor, long, java.io.File, int, long, long) throws java.io.IOException;
+    method public void onRestoreFinished();
+    field public static final int FLAG_CLIENT_SIDE_ENCRYPTION_ENABLED = 1; // 0x1
+    field public static final int FLAG_DEVICE_TO_DEVICE_TRANSFER = 2; // 0x2
+    field public static final int TYPE_DIRECTORY = 2; // 0x2
+    field public static final int TYPE_FILE = 1; // 0x1
+  }
+
+  public class BackupAgentHelper extends android.app.backup.BackupAgent {
+    ctor public BackupAgentHelper();
+    method public void addHelper(String, android.app.backup.BackupHelper);
+    method public void onBackup(android.os.ParcelFileDescriptor, android.app.backup.BackupDataOutput, android.os.ParcelFileDescriptor) throws java.io.IOException;
+    method public void onRestore(android.app.backup.BackupDataInput, int, android.os.ParcelFileDescriptor) throws java.io.IOException;
+  }
+
+  public class BackupDataInput {
+    method public int getDataSize();
+    method public String getKey();
+    method public int readEntityData(byte[], int, int) throws java.io.IOException;
+    method public boolean readNextHeader() throws java.io.IOException;
+    method public void skipEntityData() throws java.io.IOException;
+  }
+
+  public class BackupDataInputStream extends java.io.InputStream {
+    method public String getKey();
+    method public int read() throws java.io.IOException;
+    method public int size();
+  }
+
+  public class BackupDataOutput {
+    method public long getQuota();
+    method public int getTransportFlags();
+    method public int writeEntityData(byte[], int) throws java.io.IOException;
+    method public int writeEntityHeader(String, int) throws java.io.IOException;
+  }
+
+  public interface BackupHelper {
+    method public void performBackup(android.os.ParcelFileDescriptor, android.app.backup.BackupDataOutput, android.os.ParcelFileDescriptor);
+    method public void restoreEntity(android.app.backup.BackupDataInputStream);
+    method public void writeNewStateDescription(android.os.ParcelFileDescriptor);
+  }
+
+  public class BackupManager {
+    ctor public BackupManager(android.content.Context);
+    method public void dataChanged();
+    method public static void dataChanged(String);
+    method @Nullable public android.os.UserHandle getUserForAncestralSerialNumber(long);
+    method @Deprecated public int requestRestore(android.app.backup.RestoreObserver);
+  }
+
+  public class FileBackupHelper implements android.app.backup.BackupHelper {
+    ctor public FileBackupHelper(android.content.Context, java.lang.String...);
+    method public void performBackup(android.os.ParcelFileDescriptor, android.app.backup.BackupDataOutput, android.os.ParcelFileDescriptor);
+    method public void restoreEntity(android.app.backup.BackupDataInputStream);
+    method public void writeNewStateDescription(android.os.ParcelFileDescriptor);
+  }
+
+  public class FullBackupDataOutput {
+    method public long getQuota();
+    method public int getTransportFlags();
+  }
+
+  public abstract class RestoreObserver {
+    ctor public RestoreObserver();
+    method public void onUpdate(int, String);
+    method public void restoreFinished(int);
+    method public void restoreStarting(int);
+  }
+
+  public class SharedPreferencesBackupHelper implements android.app.backup.BackupHelper {
+    ctor public SharedPreferencesBackupHelper(android.content.Context, java.lang.String...);
+    method public void performBackup(android.os.ParcelFileDescriptor, android.app.backup.BackupDataOutput, android.os.ParcelFileDescriptor);
+    method public void restoreEntity(android.app.backup.BackupDataInputStream);
+    method public void writeNewStateDescription(android.os.ParcelFileDescriptor);
+  }
+
+}
+
+package android.app.blob {
+
+  public final class BlobHandle implements android.os.Parcelable {
+    method @NonNull public static android.app.blob.BlobHandle createWithSha256(@NonNull byte[], @NonNull CharSequence, long, @NonNull String);
+    method public int describeContents();
+    method public long getExpiryTimeMillis();
+    method @NonNull public CharSequence getLabel();
+    method @NonNull public byte[] getSha256Digest();
+    method @NonNull public String getTag();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.blob.BlobHandle> CREATOR;
+  }
+
+  public class BlobStoreManager {
+    method public void abandonSession(@IntRange(from=1) long) throws java.io.IOException;
+    method public void acquireLease(@NonNull android.app.blob.BlobHandle, @IdRes int, long) throws java.io.IOException;
+    method public void acquireLease(@NonNull android.app.blob.BlobHandle, @NonNull CharSequence, long) throws java.io.IOException;
+    method public void acquireLease(@NonNull android.app.blob.BlobHandle, @IdRes int) throws java.io.IOException;
+    method public void acquireLease(@NonNull android.app.blob.BlobHandle, @NonNull CharSequence) throws java.io.IOException;
+    method @IntRange(from=1) public long createSession(@NonNull android.app.blob.BlobHandle) throws java.io.IOException;
+    method @NonNull public java.util.List<android.app.blob.BlobHandle> getLeasedBlobs() throws java.io.IOException;
+    method @IntRange(from=0) public long getRemainingLeaseQuotaBytes();
+    method @NonNull public android.os.ParcelFileDescriptor openBlob(@NonNull android.app.blob.BlobHandle) throws java.io.IOException;
+    method @NonNull public android.app.blob.BlobStoreManager.Session openSession(@IntRange(from=1) long) throws java.io.IOException;
+    method public void releaseLease(@NonNull android.app.blob.BlobHandle) throws java.io.IOException;
+  }
+
+  public static class BlobStoreManager.Session implements java.io.Closeable {
+    method public void abandon() throws java.io.IOException;
+    method public void allowPackageAccess(@NonNull String, @NonNull byte[]) throws java.io.IOException;
+    method public void allowPublicAccess() throws java.io.IOException;
+    method public void allowSameSignatureAccess() throws java.io.IOException;
+    method public void close() throws java.io.IOException;
+    method public void commit(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>) throws java.io.IOException;
+    method public long getSize() throws java.io.IOException;
+    method public boolean isPackageAccessAllowed(@NonNull String, @NonNull byte[]) throws java.io.IOException;
+    method public boolean isPublicAccessAllowed() throws java.io.IOException;
+    method public boolean isSameSignatureAccessAllowed() throws java.io.IOException;
+    method @NonNull public android.os.ParcelFileDescriptor openRead() throws java.io.IOException;
+    method @NonNull public android.os.ParcelFileDescriptor openWrite(long, long) throws java.io.IOException;
+  }
+
+}
+
+package android.app.job {
+
+  public class JobInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getBackoffPolicy();
+    method @Nullable public android.content.ClipData getClipData();
+    method public int getClipGrantFlags();
+    method public long getEstimatedNetworkDownloadBytes();
+    method public long getEstimatedNetworkUploadBytes();
+    method @NonNull public android.os.PersistableBundle getExtras();
+    method public long getFlexMillis();
+    method public int getId();
+    method public long getInitialBackoffMillis();
+    method public long getIntervalMillis();
+    method public long getMaxExecutionDelayMillis();
+    method public static final long getMinFlexMillis();
+    method public long getMinLatencyMillis();
+    method public static final long getMinPeriodMillis();
+    method @Deprecated public int getNetworkType();
+    method @Nullable public android.net.NetworkRequest getRequiredNetwork();
+    method @NonNull public android.content.ComponentName getService();
+    method @NonNull public android.os.Bundle getTransientExtras();
+    method public long getTriggerContentMaxDelay();
+    method public long getTriggerContentUpdateDelay();
+    method @Nullable public android.app.job.JobInfo.TriggerContentUri[] getTriggerContentUris();
+    method public boolean isImportantWhileForeground();
+    method public boolean isPeriodic();
+    method public boolean isPersisted();
+    method public boolean isPrefetch();
+    method public boolean isRequireBatteryNotLow();
+    method public boolean isRequireCharging();
+    method public boolean isRequireDeviceIdle();
+    method public boolean isRequireStorageNotLow();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int BACKOFF_POLICY_EXPONENTIAL = 1; // 0x1
+    field public static final int BACKOFF_POLICY_LINEAR = 0; // 0x0
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.job.JobInfo> CREATOR;
+    field public static final long DEFAULT_INITIAL_BACKOFF_MILLIS = 30000L; // 0x7530L
+    field public static final long MAX_BACKOFF_DELAY_MILLIS = 18000000L; // 0x112a880L
+    field public static final int NETWORK_BYTES_UNKNOWN = -1; // 0xffffffff
+    field public static final int NETWORK_TYPE_ANY = 1; // 0x1
+    field public static final int NETWORK_TYPE_CELLULAR = 4; // 0x4
+    field @Deprecated public static final int NETWORK_TYPE_METERED = 4; // 0x4
+    field public static final int NETWORK_TYPE_NONE = 0; // 0x0
+    field public static final int NETWORK_TYPE_NOT_ROAMING = 3; // 0x3
+    field public static final int NETWORK_TYPE_UNMETERED = 2; // 0x2
+  }
+
+  public static final class JobInfo.Builder {
+    ctor public JobInfo.Builder(int, @NonNull android.content.ComponentName);
+    method public android.app.job.JobInfo.Builder addTriggerContentUri(@NonNull android.app.job.JobInfo.TriggerContentUri);
+    method public android.app.job.JobInfo build();
+    method public android.app.job.JobInfo.Builder setBackoffCriteria(long, int);
+    method public android.app.job.JobInfo.Builder setClipData(@Nullable android.content.ClipData, int);
+    method public android.app.job.JobInfo.Builder setEstimatedNetworkBytes(long, long);
+    method public android.app.job.JobInfo.Builder setExtras(@NonNull android.os.PersistableBundle);
+    method public android.app.job.JobInfo.Builder setImportantWhileForeground(boolean);
+    method public android.app.job.JobInfo.Builder setMinimumLatency(long);
+    method public android.app.job.JobInfo.Builder setOverrideDeadline(long);
+    method public android.app.job.JobInfo.Builder setPeriodic(long);
+    method public android.app.job.JobInfo.Builder setPeriodic(long, long);
+    method @RequiresPermission(android.Manifest.permission.RECEIVE_BOOT_COMPLETED) public android.app.job.JobInfo.Builder setPersisted(boolean);
+    method public android.app.job.JobInfo.Builder setPrefetch(boolean);
+    method public android.app.job.JobInfo.Builder setRequiredNetwork(@Nullable android.net.NetworkRequest);
+    method public android.app.job.JobInfo.Builder setRequiredNetworkType(int);
+    method public android.app.job.JobInfo.Builder setRequiresBatteryNotLow(boolean);
+    method public android.app.job.JobInfo.Builder setRequiresCharging(boolean);
+    method public android.app.job.JobInfo.Builder setRequiresDeviceIdle(boolean);
+    method public android.app.job.JobInfo.Builder setRequiresStorageNotLow(boolean);
+    method public android.app.job.JobInfo.Builder setTransientExtras(@NonNull android.os.Bundle);
+    method public android.app.job.JobInfo.Builder setTriggerContentMaxDelay(long);
+    method public android.app.job.JobInfo.Builder setTriggerContentUpdateDelay(long);
+  }
+
+  public static final class JobInfo.TriggerContentUri implements android.os.Parcelable {
+    ctor public JobInfo.TriggerContentUri(@NonNull android.net.Uri, int);
+    method public int describeContents();
+    method public int getFlags();
+    method public android.net.Uri getUri();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.job.JobInfo.TriggerContentUri> CREATOR;
+    field public static final int FLAG_NOTIFY_FOR_DESCENDANTS = 1; // 0x1
+  }
+
+  public class JobParameters implements android.os.Parcelable {
+    method public void completeWork(@NonNull android.app.job.JobWorkItem);
+    method @Nullable public android.app.job.JobWorkItem dequeueWork();
+    method public int describeContents();
+    method @Nullable public android.content.ClipData getClipData();
+    method public int getClipGrantFlags();
+    method @NonNull public android.os.PersistableBundle getExtras();
+    method public int getJobId();
+    method @Nullable public android.net.Network getNetwork();
+    method @NonNull public android.os.Bundle getTransientExtras();
+    method @Nullable public String[] getTriggeredContentAuthorities();
+    method @Nullable public android.net.Uri[] getTriggeredContentUris();
+    method public boolean isOverrideDeadlineExpired();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.job.JobParameters> CREATOR;
+  }
+
+  public abstract class JobScheduler {
+    ctor public JobScheduler();
+    method public abstract void cancel(int);
+    method public abstract void cancelAll();
+    method public abstract int enqueue(@NonNull android.app.job.JobInfo, @NonNull android.app.job.JobWorkItem);
+    method @NonNull public abstract java.util.List<android.app.job.JobInfo> getAllPendingJobs();
+    method @Nullable public abstract android.app.job.JobInfo getPendingJob(int);
+    method public abstract int schedule(@NonNull android.app.job.JobInfo);
+    field public static final int RESULT_FAILURE = 0; // 0x0
+    field public static final int RESULT_SUCCESS = 1; // 0x1
+  }
+
+  public abstract class JobService extends android.app.Service {
+    ctor public JobService();
+    method public final void jobFinished(android.app.job.JobParameters, boolean);
+    method public final android.os.IBinder onBind(android.content.Intent);
+    method public abstract boolean onStartJob(android.app.job.JobParameters);
+    method public abstract boolean onStopJob(android.app.job.JobParameters);
+    field public static final String PERMISSION_BIND = "android.permission.BIND_JOB_SERVICE";
+  }
+
+  public abstract class JobServiceEngine {
+    ctor public JobServiceEngine(android.app.Service);
+    method public final android.os.IBinder getBinder();
+    method public void jobFinished(android.app.job.JobParameters, boolean);
+    method public abstract boolean onStartJob(android.app.job.JobParameters);
+    method public abstract boolean onStopJob(android.app.job.JobParameters);
+  }
+
+  public final class JobWorkItem implements android.os.Parcelable {
+    ctor public JobWorkItem(android.content.Intent);
+    ctor public JobWorkItem(android.content.Intent, long, long);
+    method public int describeContents();
+    method public int getDeliveryCount();
+    method public long getEstimatedNetworkDownloadBytes();
+    method public long getEstimatedNetworkUploadBytes();
+    method public android.content.Intent getIntent();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.job.JobWorkItem> CREATOR;
+  }
+
+}
+
+package android.app.role {
+
+  public final class RoleManager {
+    method @NonNull public android.content.Intent createRequestRoleIntent(@NonNull String);
+    method public boolean isRoleAvailable(@NonNull String);
+    method public boolean isRoleHeld(@NonNull String);
+    field public static final String ROLE_ASSISTANT = "android.app.role.ASSISTANT";
+    field public static final String ROLE_BROWSER = "android.app.role.BROWSER";
+    field public static final String ROLE_CALL_REDIRECTION = "android.app.role.CALL_REDIRECTION";
+    field public static final String ROLE_CALL_SCREENING = "android.app.role.CALL_SCREENING";
+    field public static final String ROLE_DIALER = "android.app.role.DIALER";
+    field public static final String ROLE_EMERGENCY = "android.app.role.EMERGENCY";
+    field public static final String ROLE_HOME = "android.app.role.HOME";
+    field public static final String ROLE_SMS = "android.app.role.SMS";
+  }
+
+}
+
+package android.app.slice {
+
+  public final class Slice implements android.os.Parcelable {
+    ctor protected Slice(android.os.Parcel);
+    method public int describeContents();
+    method public java.util.List<java.lang.String> getHints();
+    method public java.util.List<android.app.slice.SliceItem> getItems();
+    method @Nullable public android.app.slice.SliceSpec getSpec();
+    method public android.net.Uri getUri();
+    method public boolean isCallerNeeded();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.slice.Slice> CREATOR;
+    field public static final String EXTRA_RANGE_VALUE = "android.app.slice.extra.RANGE_VALUE";
+    field public static final String EXTRA_TOGGLE_STATE = "android.app.slice.extra.TOGGLE_STATE";
+    field public static final String HINT_ACTIONS = "actions";
+    field public static final String HINT_ERROR = "error";
+    field public static final String HINT_HORIZONTAL = "horizontal";
+    field public static final String HINT_KEYWORDS = "keywords";
+    field public static final String HINT_LARGE = "large";
+    field public static final String HINT_LAST_UPDATED = "last_updated";
+    field public static final String HINT_LIST = "list";
+    field public static final String HINT_LIST_ITEM = "list_item";
+    field public static final String HINT_NO_TINT = "no_tint";
+    field public static final String HINT_PARTIAL = "partial";
+    field public static final String HINT_PERMISSION_REQUEST = "permission_request";
+    field public static final String HINT_SEE_MORE = "see_more";
+    field public static final String HINT_SELECTED = "selected";
+    field public static final String HINT_SHORTCUT = "shortcut";
+    field public static final String HINT_SUMMARY = "summary";
+    field public static final String HINT_TITLE = "title";
+    field public static final String HINT_TTL = "ttl";
+    field public static final String SUBTYPE_COLOR = "color";
+    field public static final String SUBTYPE_CONTENT_DESCRIPTION = "content_description";
+    field public static final String SUBTYPE_LAYOUT_DIRECTION = "layout_direction";
+    field public static final String SUBTYPE_MAX = "max";
+    field public static final String SUBTYPE_MESSAGE = "message";
+    field public static final String SUBTYPE_MILLIS = "millis";
+    field public static final String SUBTYPE_PRIORITY = "priority";
+    field public static final String SUBTYPE_RANGE = "range";
+    field public static final String SUBTYPE_SOURCE = "source";
+    field public static final String SUBTYPE_TOGGLE = "toggle";
+    field public static final String SUBTYPE_VALUE = "value";
+  }
+
+  public static class Slice.Builder {
+    ctor public Slice.Builder(@NonNull android.net.Uri, android.app.slice.SliceSpec);
+    ctor public Slice.Builder(@NonNull android.app.slice.Slice.Builder);
+    method public android.app.slice.Slice.Builder addAction(@NonNull android.app.PendingIntent, @NonNull android.app.slice.Slice, @Nullable String);
+    method public android.app.slice.Slice.Builder addBundle(android.os.Bundle, @Nullable String, java.util.List<java.lang.String>);
+    method public android.app.slice.Slice.Builder addHints(java.util.List<java.lang.String>);
+    method public android.app.slice.Slice.Builder addIcon(android.graphics.drawable.Icon, @Nullable String, java.util.List<java.lang.String>);
+    method public android.app.slice.Slice.Builder addInt(int, @Nullable String, java.util.List<java.lang.String>);
+    method public android.app.slice.Slice.Builder addLong(long, @Nullable String, java.util.List<java.lang.String>);
+    method public android.app.slice.Slice.Builder addRemoteInput(android.app.RemoteInput, @Nullable String, java.util.List<java.lang.String>);
+    method public android.app.slice.Slice.Builder addSubSlice(@NonNull android.app.slice.Slice, @Nullable String);
+    method public android.app.slice.Slice.Builder addText(CharSequence, @Nullable String, java.util.List<java.lang.String>);
+    method public android.app.slice.Slice build();
+    method public android.app.slice.Slice.Builder setCallerNeeded(boolean);
+  }
+
+  public final class SliceItem implements android.os.Parcelable {
+    method public int describeContents();
+    method public android.app.PendingIntent getAction();
+    method public android.os.Bundle getBundle();
+    method public String getFormat();
+    method @NonNull public java.util.List<java.lang.String> getHints();
+    method public android.graphics.drawable.Icon getIcon();
+    method public int getInt();
+    method public long getLong();
+    method public android.app.RemoteInput getRemoteInput();
+    method public android.app.slice.Slice getSlice();
+    method public String getSubType();
+    method public CharSequence getText();
+    method public boolean hasHint(String);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.slice.SliceItem> CREATOR;
+    field public static final String FORMAT_ACTION = "action";
+    field public static final String FORMAT_BUNDLE = "bundle";
+    field public static final String FORMAT_IMAGE = "image";
+    field public static final String FORMAT_INT = "int";
+    field public static final String FORMAT_LONG = "long";
+    field public static final String FORMAT_REMOTE_INPUT = "input";
+    field public static final String FORMAT_SLICE = "slice";
+    field public static final String FORMAT_TEXT = "text";
+  }
+
+  public class SliceManager {
+    method @Nullable public android.app.slice.Slice bindSlice(@NonNull android.net.Uri, @NonNull java.util.Set<android.app.slice.SliceSpec>);
+    method @Nullable public android.app.slice.Slice bindSlice(@NonNull android.content.Intent, @NonNull java.util.Set<android.app.slice.SliceSpec>);
+    method public int checkSlicePermission(@NonNull android.net.Uri, int, int);
+    method @NonNull public java.util.List<android.net.Uri> getPinnedSlices();
+    method @NonNull public java.util.Set<android.app.slice.SliceSpec> getPinnedSpecs(android.net.Uri);
+    method @NonNull @WorkerThread public java.util.Collection<android.net.Uri> getSliceDescendants(@NonNull android.net.Uri);
+    method public void grantSlicePermission(@NonNull String, @NonNull android.net.Uri);
+    method @Nullable public android.net.Uri mapIntentToUri(@NonNull android.content.Intent);
+    method public void pinSlice(@NonNull android.net.Uri, @NonNull java.util.Set<android.app.slice.SliceSpec>);
+    method public void revokeSlicePermission(@NonNull String, @NonNull android.net.Uri);
+    method public void unpinSlice(@NonNull android.net.Uri);
+    field public static final String CATEGORY_SLICE = "android.app.slice.category.SLICE";
+    field public static final String SLICE_METADATA_KEY = "android.metadata.SLICE_URI";
+  }
+
+  public class SliceMetrics {
+    ctor public SliceMetrics(@NonNull android.content.Context, @NonNull android.net.Uri);
+    method public void logHidden();
+    method public void logTouch(int, @NonNull android.net.Uri);
+    method public void logVisible();
+  }
+
+  public abstract class SliceProvider extends android.content.ContentProvider {
+    ctor public SliceProvider(@NonNull java.lang.String...);
+    ctor public SliceProvider();
+    method public final int delete(android.net.Uri, String, String[]);
+    method public final String getType(android.net.Uri);
+    method public final android.net.Uri insert(android.net.Uri, android.content.ContentValues);
+    method public android.app.slice.Slice onBindSlice(android.net.Uri, java.util.Set<android.app.slice.SliceSpec>);
+    method @NonNull public android.app.PendingIntent onCreatePermissionRequest(android.net.Uri);
+    method @NonNull public java.util.Collection<android.net.Uri> onGetSliceDescendants(@NonNull android.net.Uri);
+    method @NonNull public android.net.Uri onMapIntentToUri(android.content.Intent);
+    method public void onSlicePinned(android.net.Uri);
+    method public void onSliceUnpinned(android.net.Uri);
+    method public final android.database.Cursor query(android.net.Uri, String[], String, String[], String);
+    method public final android.database.Cursor query(android.net.Uri, String[], String, String[], String, android.os.CancellationSignal);
+    method public final android.database.Cursor query(android.net.Uri, String[], android.os.Bundle, android.os.CancellationSignal);
+    method public final int update(android.net.Uri, android.content.ContentValues, String, String[]);
+    field public static final String SLICE_TYPE = "vnd.android.slice";
+  }
+
+  public final class SliceSpec implements android.os.Parcelable {
+    ctor public SliceSpec(@NonNull String, int);
+    method public boolean canRender(@NonNull android.app.slice.SliceSpec);
+    method public int describeContents();
+    method public int getRevision();
+    method public String getType();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.slice.SliceSpec> CREATOR;
+  }
+
+}
+
+package android.app.usage {
+
+  public final class ConfigurationStats implements android.os.Parcelable {
+    ctor public ConfigurationStats(android.app.usage.ConfigurationStats);
+    method public int describeContents();
+    method public int getActivationCount();
+    method public android.content.res.Configuration getConfiguration();
+    method public long getFirstTimeStamp();
+    method public long getLastTimeActive();
+    method public long getLastTimeStamp();
+    method public long getTotalTimeActive();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.usage.ConfigurationStats> CREATOR;
+  }
+
+  public final class EventStats implements android.os.Parcelable {
+    ctor public EventStats(android.app.usage.EventStats);
+    method public void add(android.app.usage.EventStats);
+    method public int describeContents();
+    method public int getCount();
+    method public int getEventType();
+    method public long getFirstTimeStamp();
+    method public long getLastEventTime();
+    method public long getLastTimeStamp();
+    method public long getTotalTime();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.usage.EventStats> CREATOR;
+  }
+
+  public final class ExternalStorageStats implements android.os.Parcelable {
+    method public int describeContents();
+    method public long getAppBytes();
+    method public long getAudioBytes();
+    method public long getImageBytes();
+    method public long getTotalBytes();
+    method public long getVideoBytes();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.usage.ExternalStorageStats> CREATOR;
+  }
+
+  public final class NetworkStats implements java.lang.AutoCloseable {
+    method public void close();
+    method public boolean getNextBucket(android.app.usage.NetworkStats.Bucket);
+    method public boolean hasNextBucket();
+  }
+
+  public static class NetworkStats.Bucket {
+    ctor public NetworkStats.Bucket();
+    method public int getDefaultNetworkStatus();
+    method public long getEndTimeStamp();
+    method public int getMetered();
+    method public int getRoaming();
+    method public long getRxBytes();
+    method public long getRxPackets();
+    method public long getStartTimeStamp();
+    method public int getState();
+    method public int getTag();
+    method public long getTxBytes();
+    method public long getTxPackets();
+    method public int getUid();
+    field public static final int DEFAULT_NETWORK_ALL = -1; // 0xffffffff
+    field public static final int DEFAULT_NETWORK_NO = 1; // 0x1
+    field public static final int DEFAULT_NETWORK_YES = 2; // 0x2
+    field public static final int METERED_ALL = -1; // 0xffffffff
+    field public static final int METERED_NO = 1; // 0x1
+    field public static final int METERED_YES = 2; // 0x2
+    field public static final int ROAMING_ALL = -1; // 0xffffffff
+    field public static final int ROAMING_NO = 1; // 0x1
+    field public static final int ROAMING_YES = 2; // 0x2
+    field public static final int STATE_ALL = -1; // 0xffffffff
+    field public static final int STATE_DEFAULT = 1; // 0x1
+    field public static final int STATE_FOREGROUND = 2; // 0x2
+    field public static final int TAG_NONE = 0; // 0x0
+    field public static final int UID_ALL = -1; // 0xffffffff
+    field public static final int UID_REMOVED = -4; // 0xfffffffc
+    field public static final int UID_TETHERING = -5; // 0xfffffffb
+  }
+
+  public class NetworkStatsManager {
+    method public android.app.usage.NetworkStats queryDetails(int, String, long, long) throws android.os.RemoteException, java.lang.SecurityException;
+    method public android.app.usage.NetworkStats queryDetailsForUid(int, String, long, long, int) throws java.lang.SecurityException;
+    method public android.app.usage.NetworkStats queryDetailsForUidTag(int, String, long, long, int, int) throws java.lang.SecurityException;
+    method public android.app.usage.NetworkStats queryDetailsForUidTagState(int, String, long, long, int, int, int) throws java.lang.SecurityException;
+    method public android.app.usage.NetworkStats querySummary(int, String, long, long) throws android.os.RemoteException, java.lang.SecurityException;
+    method public android.app.usage.NetworkStats.Bucket querySummaryForDevice(int, String, long, long) throws android.os.RemoteException, java.lang.SecurityException;
+    method public android.app.usage.NetworkStats.Bucket querySummaryForUser(int, String, long, long) throws android.os.RemoteException, java.lang.SecurityException;
+    method public void registerUsageCallback(int, String, long, android.app.usage.NetworkStatsManager.UsageCallback);
+    method public void registerUsageCallback(int, String, long, android.app.usage.NetworkStatsManager.UsageCallback, @Nullable android.os.Handler);
+    method public void unregisterUsageCallback(android.app.usage.NetworkStatsManager.UsageCallback);
+  }
+
+  public abstract static class NetworkStatsManager.UsageCallback {
+    ctor public NetworkStatsManager.UsageCallback();
+    method public abstract void onThresholdReached(int, String);
+  }
+
+  public final class StorageStats implements android.os.Parcelable {
+    method public int describeContents();
+    method public long getAppBytes();
+    method public long getCacheBytes();
+    method public long getDataBytes();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.usage.StorageStats> CREATOR;
+  }
+
+  public class StorageStatsManager {
+    method @WorkerThread public long getFreeBytes(@NonNull java.util.UUID) throws java.io.IOException;
+    method @WorkerThread public long getTotalBytes(@NonNull java.util.UUID) throws java.io.IOException;
+    method @NonNull @WorkerThread public android.app.usage.ExternalStorageStats queryExternalStatsForUser(@NonNull java.util.UUID, @NonNull android.os.UserHandle) throws java.io.IOException;
+    method @NonNull @WorkerThread public android.app.usage.StorageStats queryStatsForPackage(@NonNull java.util.UUID, @NonNull String, @NonNull android.os.UserHandle) throws java.io.IOException, android.content.pm.PackageManager.NameNotFoundException;
+    method @NonNull @WorkerThread public android.app.usage.StorageStats queryStatsForUid(@NonNull java.util.UUID, int) throws java.io.IOException;
+    method @NonNull @WorkerThread public android.app.usage.StorageStats queryStatsForUser(@NonNull java.util.UUID, @NonNull android.os.UserHandle) throws java.io.IOException;
+  }
+
+  public final class UsageEvents implements android.os.Parcelable {
+    method public int describeContents();
+    method public boolean getNextEvent(android.app.usage.UsageEvents.Event);
+    method public boolean hasNextEvent();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.usage.UsageEvents> CREATOR;
+  }
+
+  public static final class UsageEvents.Event {
+    ctor public UsageEvents.Event();
+    method public int getAppStandbyBucket();
+    method public String getClassName();
+    method public android.content.res.Configuration getConfiguration();
+    method public int getEventType();
+    method public String getPackageName();
+    method public String getShortcutId();
+    method public long getTimeStamp();
+    field public static final int ACTIVITY_PAUSED = 2; // 0x2
+    field public static final int ACTIVITY_RESUMED = 1; // 0x1
+    field public static final int ACTIVITY_STOPPED = 23; // 0x17
+    field public static final int CONFIGURATION_CHANGE = 5; // 0x5
+    field public static final int DEVICE_SHUTDOWN = 26; // 0x1a
+    field public static final int DEVICE_STARTUP = 27; // 0x1b
+    field public static final int FOREGROUND_SERVICE_START = 19; // 0x13
+    field public static final int FOREGROUND_SERVICE_STOP = 20; // 0x14
+    field public static final int KEYGUARD_HIDDEN = 18; // 0x12
+    field public static final int KEYGUARD_SHOWN = 17; // 0x11
+    field @Deprecated public static final int MOVE_TO_BACKGROUND = 2; // 0x2
+    field @Deprecated public static final int MOVE_TO_FOREGROUND = 1; // 0x1
+    field public static final int NONE = 0; // 0x0
+    field public static final int SCREEN_INTERACTIVE = 15; // 0xf
+    field public static final int SCREEN_NON_INTERACTIVE = 16; // 0x10
+    field public static final int SHORTCUT_INVOCATION = 8; // 0x8
+    field public static final int STANDBY_BUCKET_CHANGED = 11; // 0xb
+    field public static final int USER_INTERACTION = 7; // 0x7
+  }
+
+  public final class UsageStats implements android.os.Parcelable {
+    ctor public UsageStats(android.app.usage.UsageStats);
+    method public void add(android.app.usage.UsageStats);
+    method public int describeContents();
+    method public long getFirstTimeStamp();
+    method public long getLastTimeForegroundServiceUsed();
+    method public long getLastTimeStamp();
+    method public long getLastTimeUsed();
+    method public long getLastTimeVisible();
+    method public String getPackageName();
+    method public long getTotalTimeForegroundServiceUsed();
+    method public long getTotalTimeInForeground();
+    method public long getTotalTimeVisible();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.usage.UsageStats> CREATOR;
+  }
+
+  public final class UsageStatsManager {
+    method public int getAppStandbyBucket();
+    method public boolean isAppInactive(String);
+    method public java.util.Map<java.lang.String,android.app.usage.UsageStats> queryAndAggregateUsageStats(long, long);
+    method public java.util.List<android.app.usage.ConfigurationStats> queryConfigurations(int, long, long);
+    method public java.util.List<android.app.usage.EventStats> queryEventStats(int, long, long);
+    method public android.app.usage.UsageEvents queryEvents(long, long);
+    method public android.app.usage.UsageEvents queryEventsForSelf(long, long);
+    method public java.util.List<android.app.usage.UsageStats> queryUsageStats(int, long, long);
+    field public static final int INTERVAL_BEST = 4; // 0x4
+    field public static final int INTERVAL_DAILY = 0; // 0x0
+    field public static final int INTERVAL_MONTHLY = 2; // 0x2
+    field public static final int INTERVAL_WEEKLY = 1; // 0x1
+    field public static final int INTERVAL_YEARLY = 3; // 0x3
+    field public static final int STANDBY_BUCKET_ACTIVE = 10; // 0xa
+    field public static final int STANDBY_BUCKET_FREQUENT = 30; // 0x1e
+    field public static final int STANDBY_BUCKET_RARE = 40; // 0x28
+    field public static final int STANDBY_BUCKET_RESTRICTED = 45; // 0x2d
+    field public static final int STANDBY_BUCKET_WORKING_SET = 20; // 0x14
+  }
+
+}
+
+package android.appwidget {
+
+  public class AppWidgetHost {
+    ctor public AppWidgetHost(android.content.Context, int);
+    method public int allocateAppWidgetId();
+    method protected void clearViews();
+    method public final android.appwidget.AppWidgetHostView createView(android.content.Context, int, android.appwidget.AppWidgetProviderInfo);
+    method public static void deleteAllHosts();
+    method public void deleteAppWidgetId(int);
+    method public void deleteHost();
+    method public int[] getAppWidgetIds();
+    method public void onAppWidgetRemoved(int);
+    method protected android.appwidget.AppWidgetHostView onCreateView(android.content.Context, int, android.appwidget.AppWidgetProviderInfo);
+    method protected void onProviderChanged(int, android.appwidget.AppWidgetProviderInfo);
+    method protected void onProvidersChanged();
+    method public final void startAppWidgetConfigureActivityForResult(@NonNull android.app.Activity, int, int, int, @Nullable android.os.Bundle);
+    method public void startListening();
+    method public void stopListening();
+  }
+
+  public class AppWidgetHostView extends android.widget.FrameLayout {
+    ctor public AppWidgetHostView(android.content.Context);
+    ctor public AppWidgetHostView(android.content.Context, int, int);
+    method public int getAppWidgetId();
+    method public android.appwidget.AppWidgetProviderInfo getAppWidgetInfo();
+    method public static android.graphics.Rect getDefaultPaddingForWidget(android.content.Context, android.content.ComponentName, android.graphics.Rect);
+    method protected android.view.View getDefaultView();
+    method protected android.view.View getErrorView();
+    method protected void prepareView(android.view.View);
+    method public void setAppWidget(int, android.appwidget.AppWidgetProviderInfo);
+    method public void setExecutor(java.util.concurrent.Executor);
+    method public void setOnLightBackground(boolean);
+    method public void updateAppWidget(android.widget.RemoteViews);
+    method public void updateAppWidgetOptions(android.os.Bundle);
+    method public void updateAppWidgetSize(android.os.Bundle, int, int, int, int);
+  }
+
+  public class AppWidgetManager {
+    method public boolean bindAppWidgetIdIfAllowed(int, android.content.ComponentName);
+    method public boolean bindAppWidgetIdIfAllowed(int, android.content.ComponentName, android.os.Bundle);
+    method public boolean bindAppWidgetIdIfAllowed(int, android.os.UserHandle, android.content.ComponentName, android.os.Bundle);
+    method public int[] getAppWidgetIds(android.content.ComponentName);
+    method public android.appwidget.AppWidgetProviderInfo getAppWidgetInfo(int);
+    method public android.os.Bundle getAppWidgetOptions(int);
+    method public java.util.List<android.appwidget.AppWidgetProviderInfo> getInstalledProviders();
+    method @NonNull public java.util.List<android.appwidget.AppWidgetProviderInfo> getInstalledProvidersForPackage(@NonNull String, @Nullable android.os.UserHandle);
+    method @NonNull public java.util.List<android.appwidget.AppWidgetProviderInfo> getInstalledProvidersForProfile(@Nullable android.os.UserHandle);
+    method public static android.appwidget.AppWidgetManager getInstance(android.content.Context);
+    method public boolean isRequestPinAppWidgetSupported();
+    method public void notifyAppWidgetViewDataChanged(int[], int);
+    method public void notifyAppWidgetViewDataChanged(int, int);
+    method public void partiallyUpdateAppWidget(int[], android.widget.RemoteViews);
+    method public void partiallyUpdateAppWidget(int, android.widget.RemoteViews);
+    method public boolean requestPinAppWidget(@NonNull android.content.ComponentName, @Nullable android.os.Bundle, @Nullable android.app.PendingIntent);
+    method public void updateAppWidget(int[], android.widget.RemoteViews);
+    method public void updateAppWidget(int, android.widget.RemoteViews);
+    method public void updateAppWidget(android.content.ComponentName, android.widget.RemoteViews);
+    method public void updateAppWidgetOptions(int, android.os.Bundle);
+    method public void updateAppWidgetProviderInfo(android.content.ComponentName, @Nullable String);
+    field public static final String ACTION_APPWIDGET_BIND = "android.appwidget.action.APPWIDGET_BIND";
+    field public static final String ACTION_APPWIDGET_CONFIGURE = "android.appwidget.action.APPWIDGET_CONFIGURE";
+    field public static final String ACTION_APPWIDGET_DELETED = "android.appwidget.action.APPWIDGET_DELETED";
+    field public static final String ACTION_APPWIDGET_DISABLED = "android.appwidget.action.APPWIDGET_DISABLED";
+    field public static final String ACTION_APPWIDGET_ENABLED = "android.appwidget.action.APPWIDGET_ENABLED";
+    field public static final String ACTION_APPWIDGET_HOST_RESTORED = "android.appwidget.action.APPWIDGET_HOST_RESTORED";
+    field public static final String ACTION_APPWIDGET_OPTIONS_CHANGED = "android.appwidget.action.APPWIDGET_UPDATE_OPTIONS";
+    field public static final String ACTION_APPWIDGET_PICK = "android.appwidget.action.APPWIDGET_PICK";
+    field public static final String ACTION_APPWIDGET_RESTORED = "android.appwidget.action.APPWIDGET_RESTORED";
+    field public static final String ACTION_APPWIDGET_UPDATE = "android.appwidget.action.APPWIDGET_UPDATE";
+    field public static final String EXTRA_APPWIDGET_ID = "appWidgetId";
+    field public static final String EXTRA_APPWIDGET_IDS = "appWidgetIds";
+    field public static final String EXTRA_APPWIDGET_OLD_IDS = "appWidgetOldIds";
+    field public static final String EXTRA_APPWIDGET_OPTIONS = "appWidgetOptions";
+    field public static final String EXTRA_APPWIDGET_PREVIEW = "appWidgetPreview";
+    field public static final String EXTRA_APPWIDGET_PROVIDER = "appWidgetProvider";
+    field public static final String EXTRA_APPWIDGET_PROVIDER_PROFILE = "appWidgetProviderProfile";
+    field public static final String EXTRA_CUSTOM_EXTRAS = "customExtras";
+    field public static final String EXTRA_CUSTOM_INFO = "customInfo";
+    field public static final String EXTRA_HOST_ID = "hostId";
+    field public static final int INVALID_APPWIDGET_ID = 0; // 0x0
+    field public static final String META_DATA_APPWIDGET_PROVIDER = "android.appwidget.provider";
+    field public static final String OPTION_APPWIDGET_HOST_CATEGORY = "appWidgetCategory";
+    field public static final String OPTION_APPWIDGET_MAX_HEIGHT = "appWidgetMaxHeight";
+    field public static final String OPTION_APPWIDGET_MAX_WIDTH = "appWidgetMaxWidth";
+    field public static final String OPTION_APPWIDGET_MIN_HEIGHT = "appWidgetMinHeight";
+    field public static final String OPTION_APPWIDGET_MIN_WIDTH = "appWidgetMinWidth";
+    field public static final String OPTION_APPWIDGET_RESTORE_COMPLETED = "appWidgetRestoreCompleted";
+  }
+
+  public class AppWidgetProvider extends android.content.BroadcastReceiver {
+    ctor public AppWidgetProvider();
+    method public void onAppWidgetOptionsChanged(android.content.Context, android.appwidget.AppWidgetManager, int, android.os.Bundle);
+    method public void onDeleted(android.content.Context, int[]);
+    method public void onDisabled(android.content.Context);
+    method public void onEnabled(android.content.Context);
+    method public void onReceive(android.content.Context, android.content.Intent);
+    method public void onRestored(android.content.Context, int[], int[]);
+    method public void onUpdate(android.content.Context, android.appwidget.AppWidgetManager, int[]);
+  }
+
+  public class AppWidgetProviderInfo implements android.os.Parcelable {
+    ctor public AppWidgetProviderInfo();
+    ctor public AppWidgetProviderInfo(android.os.Parcel);
+    method public android.appwidget.AppWidgetProviderInfo clone();
+    method public int describeContents();
+    method public final android.os.UserHandle getProfile();
+    method public final android.graphics.drawable.Drawable loadIcon(@NonNull android.content.Context, int);
+    method public final String loadLabel(android.content.pm.PackageManager);
+    method public final android.graphics.drawable.Drawable loadPreviewImage(@NonNull android.content.Context, int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.appwidget.AppWidgetProviderInfo> CREATOR;
+    field public static final int RESIZE_BOTH = 3; // 0x3
+    field public static final int RESIZE_HORIZONTAL = 1; // 0x1
+    field public static final int RESIZE_NONE = 0; // 0x0
+    field public static final int RESIZE_VERTICAL = 2; // 0x2
+    field public static final int WIDGET_CATEGORY_HOME_SCREEN = 1; // 0x1
+    field public static final int WIDGET_CATEGORY_KEYGUARD = 2; // 0x2
+    field public static final int WIDGET_CATEGORY_SEARCHBOX = 4; // 0x4
+    field public static final int WIDGET_FEATURE_HIDE_FROM_PICKER = 2; // 0x2
+    field public static final int WIDGET_FEATURE_RECONFIGURABLE = 1; // 0x1
+    field public int autoAdvanceViewId;
+    field public android.content.ComponentName configure;
+    field public int icon;
+    field public int initialKeyguardLayout;
+    field public int initialLayout;
+    field @Deprecated public String label;
+    field public int minHeight;
+    field public int minResizeHeight;
+    field public int minResizeWidth;
+    field public int minWidth;
+    field public int previewImage;
+    field public android.content.ComponentName provider;
+    field public int resizeMode;
+    field public int updatePeriodMillis;
+    field public int widgetCategory;
+    field public int widgetFeatures;
+  }
+
+}
+
+package android.bluetooth {
+
+  public final class BluetoothA2dp implements android.bluetooth.BluetoothProfile {
+    method public void finalize();
+    method public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
+    method public int getConnectionState(android.bluetooth.BluetoothDevice);
+    method public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
+    method public boolean isA2dpPlaying(android.bluetooth.BluetoothDevice);
+    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.a2dp.profile.action.CONNECTION_STATE_CHANGED";
+    field public static final String ACTION_PLAYING_STATE_CHANGED = "android.bluetooth.a2dp.profile.action.PLAYING_STATE_CHANGED";
+    field public static final int STATE_NOT_PLAYING = 11; // 0xb
+    field public static final int STATE_PLAYING = 10; // 0xa
+  }
+
+  public final class BluetoothAdapter {
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean cancelDiscovery();
+    method public static boolean checkBluetoothAddress(String);
+    method public void closeProfileProxy(int, android.bluetooth.BluetoothProfile);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean disable();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean enable();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public String getAddress();
+    method public android.bluetooth.le.BluetoothLeAdvertiser getBluetoothLeAdvertiser();
+    method public android.bluetooth.le.BluetoothLeScanner getBluetoothLeScanner();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public java.util.Set<android.bluetooth.BluetoothDevice> getBondedDevices();
+    method public static android.bluetooth.BluetoothAdapter getDefaultAdapter();
+    method public int getLeMaximumAdvertisingDataLength();
+    method public String getName();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getProfileConnectionState(int);
+    method public boolean getProfileProxy(android.content.Context, android.bluetooth.BluetoothProfile.ServiceListener, int);
+    method public android.bluetooth.BluetoothDevice getRemoteDevice(String);
+    method public android.bluetooth.BluetoothDevice getRemoteDevice(byte[]);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getScanMode();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getState();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isDiscovering();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isEnabled();
+    method public boolean isLe2MPhySupported();
+    method public boolean isLeCodedPhySupported();
+    method public boolean isLeExtendedAdvertisingSupported();
+    method public boolean isLePeriodicAdvertisingSupported();
+    method public boolean isMultipleAdvertisementSupported();
+    method public boolean isOffloadedFilteringSupported();
+    method public boolean isOffloadedScanBatchingSupported();
+    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothServerSocket listenUsingInsecureL2capChannel() throws java.io.IOException;
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothServerSocket listenUsingInsecureRfcommWithServiceRecord(String, java.util.UUID) throws java.io.IOException;
+    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothServerSocket listenUsingL2capChannel() throws java.io.IOException;
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothServerSocket listenUsingRfcommWithServiceRecord(String, java.util.UUID) throws java.io.IOException;
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean setName(String);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean startDiscovery();
+    method @Deprecated @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean startLeScan(android.bluetooth.BluetoothAdapter.LeScanCallback);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean startLeScan(java.util.UUID[], android.bluetooth.BluetoothAdapter.LeScanCallback);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public void stopLeScan(android.bluetooth.BluetoothAdapter.LeScanCallback);
+    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.adapter.action.CONNECTION_STATE_CHANGED";
+    field public static final String ACTION_DISCOVERY_FINISHED = "android.bluetooth.adapter.action.DISCOVERY_FINISHED";
+    field public static final String ACTION_DISCOVERY_STARTED = "android.bluetooth.adapter.action.DISCOVERY_STARTED";
+    field public static final String ACTION_LOCAL_NAME_CHANGED = "android.bluetooth.adapter.action.LOCAL_NAME_CHANGED";
+    field public static final String ACTION_REQUEST_DISCOVERABLE = "android.bluetooth.adapter.action.REQUEST_DISCOVERABLE";
+    field public static final String ACTION_REQUEST_ENABLE = "android.bluetooth.adapter.action.REQUEST_ENABLE";
+    field public static final String ACTION_SCAN_MODE_CHANGED = "android.bluetooth.adapter.action.SCAN_MODE_CHANGED";
+    field public static final String ACTION_STATE_CHANGED = "android.bluetooth.adapter.action.STATE_CHANGED";
+    field public static final int ERROR = -2147483648; // 0x80000000
+    field public static final String EXTRA_CONNECTION_STATE = "android.bluetooth.adapter.extra.CONNECTION_STATE";
+    field public static final String EXTRA_DISCOVERABLE_DURATION = "android.bluetooth.adapter.extra.DISCOVERABLE_DURATION";
+    field public static final String EXTRA_LOCAL_NAME = "android.bluetooth.adapter.extra.LOCAL_NAME";
+    field public static final String EXTRA_PREVIOUS_CONNECTION_STATE = "android.bluetooth.adapter.extra.PREVIOUS_CONNECTION_STATE";
+    field public static final String EXTRA_PREVIOUS_SCAN_MODE = "android.bluetooth.adapter.extra.PREVIOUS_SCAN_MODE";
+    field public static final String EXTRA_PREVIOUS_STATE = "android.bluetooth.adapter.extra.PREVIOUS_STATE";
+    field public static final String EXTRA_SCAN_MODE = "android.bluetooth.adapter.extra.SCAN_MODE";
+    field public static final String EXTRA_STATE = "android.bluetooth.adapter.extra.STATE";
+    field public static final int SCAN_MODE_CONNECTABLE = 21; // 0x15
+    field public static final int SCAN_MODE_CONNECTABLE_DISCOVERABLE = 23; // 0x17
+    field public static final int SCAN_MODE_NONE = 20; // 0x14
+    field public static final int STATE_CONNECTED = 2; // 0x2
+    field public static final int STATE_CONNECTING = 1; // 0x1
+    field public static final int STATE_DISCONNECTED = 0; // 0x0
+    field public static final int STATE_DISCONNECTING = 3; // 0x3
+    field public static final int STATE_OFF = 10; // 0xa
+    field public static final int STATE_ON = 12; // 0xc
+    field public static final int STATE_TURNING_OFF = 13; // 0xd
+    field public static final int STATE_TURNING_ON = 11; // 0xb
+  }
+
+  public static interface BluetoothAdapter.LeScanCallback {
+    method public void onLeScan(android.bluetooth.BluetoothDevice, int, byte[]);
+  }
+
+  public class BluetoothAssignedNumbers {
+    field public static final int AAMP_OF_AMERICA = 190; // 0xbe
+    field public static final int ACCEL_SEMICONDUCTOR = 74; // 0x4a
+    field public static final int ACE_SENSOR = 188; // 0xbc
+    field public static final int ADIDAS = 195; // 0xc3
+    field public static final int ADVANCED_PANMOBIL_SYSTEMS = 145; // 0x91
+    field public static final int AIROHA_TECHNOLOGY = 148; // 0x94
+    field public static final int ALCATEL = 36; // 0x24
+    field public static final int ALPWISE = 154; // 0x9a
+    field public static final int AMICCOM_ELECTRONICS = 192; // 0xc0
+    field public static final int APLIX = 189; // 0xbd
+    field public static final int APPLE = 76; // 0x4c
+    field public static final int APT_LICENSING = 79; // 0x4f
+    field public static final int ARCHOS = 207; // 0xcf
+    field public static final int ARP_DEVICES = 168; // 0xa8
+    field public static final int ATHEROS_COMMUNICATIONS = 69; // 0x45
+    field public static final int ATMEL = 19; // 0x13
+    field public static final int AUSTCO_COMMUNICATION_SYSTEMS = 213; // 0xd5
+    field public static final int AUTONET_MOBILE = 127; // 0x7f
+    field public static final int AVAGO = 78; // 0x4e
+    field public static final int AVM_BERLIN = 31; // 0x1f
+    field public static final int A_AND_D_ENGINEERING = 105; // 0x69
+    field public static final int A_AND_R_CAMBRIDGE = 124; // 0x7c
+    field public static final int BANDSPEED = 32; // 0x20
+    field public static final int BAND_XI_INTERNATIONAL = 100; // 0x64
+    field public static final int BDE_TECHNOLOGY = 180; // 0xb4
+    field public static final int BEATS_ELECTRONICS = 204; // 0xcc
+    field public static final int BEAUTIFUL_ENTERPRISE = 108; // 0x6c
+    field public static final int BEKEY = 178; // 0xb2
+    field public static final int BELKIN_INTERNATIONAL = 92; // 0x5c
+    field public static final int BINAURIC = 203; // 0xcb
+    field public static final int BIOSENTRONICS = 219; // 0xdb
+    field public static final int BLUEGIGA = 71; // 0x47
+    field public static final int BLUERADIOS = 133; // 0x85
+    field public static final int BLUETOOTH_SIG = 63; // 0x3f
+    field public static final int BLUETREK_TECHNOLOGIES = 151; // 0x97
+    field public static final int BOSE = 158; // 0x9e
+    field public static final int BRIARTEK = 109; // 0x6d
+    field public static final int BROADCOM = 15; // 0xf
+    field public static final int CAEN_RFID = 170; // 0xaa
+    field public static final int CAMBRIDGE_SILICON_RADIO = 10; // 0xa
+    field public static final int CATC = 52; // 0x34
+    field public static final int CINETIX = 175; // 0xaf
+    field public static final int CLARINOX_TECHNOLOGIES = 179; // 0xb3
+    field public static final int COLORFY = 156; // 0x9c
+    field public static final int COMMIL = 51; // 0x33
+    field public static final int CONEXANT_SYSTEMS = 28; // 0x1c
+    field public static final int CONNECTBLUE = 113; // 0x71
+    field public static final int CONTINENTAL_AUTOMOTIVE = 75; // 0x4b
+    field public static final int CONWISE_TECHNOLOGY = 66; // 0x42
+    field public static final int CREATIVE_TECHNOLOGY = 118; // 0x76
+    field public static final int C_TECHNOLOGIES = 38; // 0x26
+    field public static final int DANLERS = 225; // 0xe1
+    field public static final int DELORME_PUBLISHING_COMPANY = 128; // 0x80
+    field public static final int DEXCOM = 208; // 0xd0
+    field public static final int DIALOG_SEMICONDUCTOR = 210; // 0xd2
+    field public static final int DIGIANSWER = 12; // 0xc
+    field public static final int ECLIPSE = 53; // 0x35
+    field public static final int ECOTEST = 136; // 0x88
+    field public static final int ELGATO_SYSTEMS = 206; // 0xce
+    field public static final int EM_MICROELECTRONIC_MARIN = 90; // 0x5a
+    field public static final int EQUINOX_AG = 134; // 0x86
+    field public static final int ERICSSON_TECHNOLOGY = 0; // 0x0
+    field public static final int EVLUMA = 201; // 0xc9
+    field public static final int FREE2MOVE = 83; // 0x53
+    field public static final int FUNAI_ELECTRIC = 144; // 0x90
+    field public static final int GARMIN_INTERNATIONAL = 135; // 0x87
+    field public static final int GCT_SEMICONDUCTOR = 45; // 0x2d
+    field public static final int GELO = 200; // 0xc8
+    field public static final int GENEQ = 194; // 0xc2
+    field public static final int GENERAL_MOTORS = 104; // 0x68
+    field public static final int GENNUM = 59; // 0x3b
+    field public static final int GEOFORCE = 157; // 0x9d
+    field public static final int GIBSON_GUITARS = 98; // 0x62
+    field public static final int GN_NETCOM = 103; // 0x67
+    field public static final int GN_RESOUND = 137; // 0x89
+    field public static final int GOOGLE = 224; // 0xe0
+    field public static final int GREEN_THROTTLE_GAMES = 172; // 0xac
+    field public static final int GROUP_SENSE = 115; // 0x73
+    field public static final int HANLYNN_TECHNOLOGIES = 123; // 0x7b
+    field public static final int HARMAN_INTERNATIONAL = 87; // 0x57
+    field public static final int HEWLETT_PACKARD = 101; // 0x65
+    field public static final int HITACHI = 41; // 0x29
+    field public static final int HOSIDEN = 221; // 0xdd
+    field public static final int IBM = 3; // 0x3
+    field public static final int INFINEON_TECHNOLOGIES = 9; // 0x9
+    field public static final int INGENIEUR_SYSTEMGRUPPE_ZAHN = 171; // 0xab
+    field public static final int INTEGRATED_SILICON_SOLUTION = 65; // 0x41
+    field public static final int INTEGRATED_SYSTEM_SOLUTION = 57; // 0x39
+    field public static final int INTEL = 2; // 0x2
+    field public static final int INVENTEL = 30; // 0x1e
+    field public static final int IPEXTREME = 61; // 0x3d
+    field public static final int I_TECH_DYNAMIC_GLOBAL_DISTRIBUTION = 153; // 0x99
+    field public static final int JAWBONE = 138; // 0x8a
+    field public static final int JIANGSU_TOPPOWER_AUTOMOTIVE_ELECTRONICS = 155; // 0x9b
+    field public static final int JOHNSON_CONTROLS = 185; // 0xb9
+    field public static final int J_AND_M = 82; // 0x52
+    field public static final int KAWANTECH = 212; // 0xd4
+    field public static final int KC_TECHNOLOGY = 22; // 0x16
+    field public static final int KENSINGTON_COMPUTER_PRODUCTS_GROUP = 160; // 0xa0
+    field public static final int LAIRD_TECHNOLOGIES = 119; // 0x77
+    field public static final int LESSWIRE = 121; // 0x79
+    field public static final int LG_ELECTRONICS = 196; // 0xc4
+    field public static final int LINAK = 164; // 0xa4
+    field public static final int LUCENT = 7; // 0x7
+    field public static final int LUDUS_HELSINKI = 132; // 0x84
+    field public static final int MACRONIX = 44; // 0x2c
+    field public static final int MAGNETI_MARELLI = 169; // 0xa9
+    field public static final int MANSELLA = 33; // 0x21
+    field public static final int MARVELL = 72; // 0x48
+    field public static final int MATSUSHITA_ELECTRIC = 58; // 0x3a
+    field public static final int MC10 = 202; // 0xca
+    field public static final int MEDIATEK = 70; // 0x46
+    field public static final int MESO_INTERNATIONAL = 182; // 0xb6
+    field public static final int META_WATCH = 163; // 0xa3
+    field public static final int MEWTEL_TECHNOLOGY = 47; // 0x2f
+    field public static final int MICOMMAND = 99; // 0x63
+    field public static final int MICROCHIP_TECHNOLOGY = 205; // 0xcd
+    field public static final int MICROSOFT = 6; // 0x6
+    field public static final int MINDTREE = 106; // 0x6a
+    field public static final int MISFIT_WEARABLES = 223; // 0xdf
+    field public static final int MITEL_SEMICONDUCTOR = 16; // 0x10
+    field public static final int MITSUBISHI_ELECTRIC = 20; // 0x14
+    field public static final int MOBILIAN_CORPORATION = 55; // 0x37
+    field public static final int MONSTER = 112; // 0x70
+    field public static final int MOTOROLA = 8; // 0x8
+    field public static final int MSTAR_SEMICONDUCTOR = 122; // 0x7a
+    field public static final int MUZIK = 222; // 0xde
+    field public static final int NEC = 34; // 0x22
+    field public static final int NEC_LIGHTING = 149; // 0x95
+    field public static final int NEWLOGIC = 23; // 0x17
+    field public static final int NIKE = 120; // 0x78
+    field public static final int NINE_SOLUTIONS = 102; // 0x66
+    field public static final int NOKIA_MOBILE_PHONES = 1; // 0x1
+    field public static final int NORDIC_SEMICONDUCTOR = 89; // 0x59
+    field public static final int NORWOOD_SYSTEMS = 46; // 0x2e
+    field public static final int ODM_TECHNOLOGY = 150; // 0x96
+    field public static final int OMEGAWAVE = 174; // 0xae
+    field public static final int ONSET_COMPUTER = 197; // 0xc5
+    field public static final int OPEN_INTERFACE = 39; // 0x27
+    field public static final int OTL_DYNAMICS = 165; // 0xa5
+    field public static final int PANDA_OCEAN = 166; // 0xa6
+    field public static final int PARROT = 67; // 0x43
+    field public static final int PARTHUS_TECHNOLOGIES = 14; // 0xe
+    field public static final int PASSIF_SEMICONDUCTOR = 176; // 0xb0
+    field public static final int PETER_SYSTEMTECHNIK = 173; // 0xad
+    field public static final int PHILIPS_SEMICONDUCTORS = 37; // 0x25
+    field public static final int PLANTRONICS = 85; // 0x55
+    field public static final int POLAR_ELECTRO = 107; // 0x6b
+    field public static final int POLAR_ELECTRO_EUROPE = 209; // 0xd1
+    field public static final int PROCTER_AND_GAMBLE = 220; // 0xdc
+    field public static final int QUALCOMM = 29; // 0x1d
+    field public static final int QUALCOMM_CONNECTED_EXPERIENCES = 216; // 0xd8
+    field public static final int QUALCOMM_INNOVATION_CENTER = 184; // 0xb8
+    field public static final int QUALCOMM_LABS = 140; // 0x8c
+    field public static final int QUALCOMM_TECHNOLOGIES = 215; // 0xd7
+    field public static final int QUINTIC = 142; // 0x8e
+    field public static final int QUUPPA = 199; // 0xc7
+    field public static final int RALINK_TECHNOLOGY = 91; // 0x5b
+    field public static final int RDA_MICROELECTRONICS = 97; // 0x61
+    field public static final int REALTEK_SEMICONDUCTOR = 93; // 0x5d
+    field public static final int RED_M = 50; // 0x32
+    field public static final int RENESAS_TECHNOLOGY = 54; // 0x36
+    field public static final int RESEARCH_IN_MOTION = 60; // 0x3c
+    field public static final int RF_MICRO_DEVICES = 40; // 0x28
+    field public static final int RIVIERAWAVES = 96; // 0x60
+    field public static final int ROHDE_AND_SCHWARZ = 25; // 0x19
+    field public static final int RTX_TELECOM = 21; // 0x15
+    field public static final int SAMSUNG_ELECTRONICS = 117; // 0x75
+    field public static final int SARIS_CYCLING_GROUP = 177; // 0xb1
+    field public static final int SEERS_TECHNOLOGY = 125; // 0x7d
+    field public static final int SEIKO_EPSON = 64; // 0x40
+    field public static final int SELFLY = 198; // 0xc6
+    field public static final int SEMILINK = 226; // 0xe2
+    field public static final int SENNHEISER_COMMUNICATIONS = 130; // 0x82
+    field public static final int SHANGHAI_SUPER_SMART_ELECTRONICS = 114; // 0x72
+    field public static final int SHENZHEN_EXCELSECU_DATA_TECHNOLOGY = 193; // 0xc1
+    field public static final int SIGNIA_TECHNOLOGIES = 27; // 0x1b
+    field public static final int SILICON_WAVE = 11; // 0xb
+    field public static final int SIRF_TECHNOLOGY = 80; // 0x50
+    field public static final int SOCKET_MOBILE = 68; // 0x44
+    field public static final int SONY_ERICSSON = 86; // 0x56
+    field public static final int SOUND_ID = 111; // 0x6f
+    field public static final int SPORTS_TRACKING_TECHNOLOGIES = 126; // 0x7e
+    field public static final int SR_MEDIZINELEKTRONIK = 161; // 0xa1
+    field public static final int STACCATO_COMMUNICATIONS = 77; // 0x4d
+    field public static final int STALMART_TECHNOLOGY = 191; // 0xbf
+    field public static final int STARKEY_LABORATORIES = 186; // 0xba
+    field public static final int STOLLMAN_E_PLUS_V = 143; // 0x8f
+    field public static final int STONESTREET_ONE = 94; // 0x5e
+    field public static final int ST_MICROELECTRONICS = 48; // 0x30
+    field public static final int SUMMIT_DATA_COMMUNICATIONS = 110; // 0x6e
+    field public static final int SUUNTO = 159; // 0x9f
+    field public static final int SWIRL_NETWORKS = 181; // 0xb5
+    field public static final int SYMBOL_TECHNOLOGIES = 42; // 0x2a
+    field public static final int SYNOPSYS = 49; // 0x31
+    field public static final int SYSTEMS_AND_CHIPS = 62; // 0x3e
+    field public static final int S_POWER_ELECTRONICS = 187; // 0xbb
+    field public static final int TAIXINGBANG_TECHNOLOGY = 211; // 0xd3
+    field public static final int TENOVIS = 43; // 0x2b
+    field public static final int TERAX = 56; // 0x38
+    field public static final int TEXAS_INSTRUMENTS = 13; // 0xd
+    field public static final int THINKOPTICS = 146; // 0x92
+    field public static final int THREECOM = 5; // 0x5
+    field public static final int THREE_DIJOY = 84; // 0x54
+    field public static final int THREE_DSP = 73; // 0x49
+    field public static final int TIMEKEEPING_SYSTEMS = 131; // 0x83
+    field public static final int TIMEX_GROUP_USA = 214; // 0xd6
+    field public static final int TOPCORN_POSITIONING_SYSTEMS = 139; // 0x8b
+    field public static final int TOSHIBA = 4; // 0x4
+    field public static final int TRANSILICA = 24; // 0x18
+    field public static final int TRELAB = 183; // 0xb7
+    field public static final int TTPCOM = 26; // 0x1a
+    field public static final int TXTR = 218; // 0xda
+    field public static final int TZERO_TECHNOLOGIES = 81; // 0x51
+    field public static final int UNIVERSAL_ELECTRONICS = 147; // 0x93
+    field public static final int VERTU = 162; // 0xa2
+    field public static final int VISTEON = 167; // 0xa7
+    field public static final int VIZIO = 88; // 0x58
+    field public static final int VOYETRA_TURTLE_BEACH = 217; // 0xd9
+    field public static final int WAVEPLUS_TECHNOLOGY = 35; // 0x23
+    field public static final int WICENTRIC = 95; // 0x5f
+    field public static final int WIDCOMM = 17; // 0x11
+    field public static final int WUXI_VIMICRO = 129; // 0x81
+    field public static final int ZEEVO = 18; // 0x12
+    field public static final int ZER01_TV = 152; // 0x98
+    field public static final int ZOMM = 116; // 0x74
+    field public static final int ZSCAN_SOFTWARE = 141; // 0x8d
+  }
+
+  public final class BluetoothClass implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getDeviceClass();
+    method public int getMajorDeviceClass();
+    method public boolean hasService(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothClass> CREATOR;
+  }
+
+  public static class BluetoothClass.Device {
+    ctor public BluetoothClass.Device();
+    field public static final int AUDIO_VIDEO_CAMCORDER = 1076; // 0x434
+    field public static final int AUDIO_VIDEO_CAR_AUDIO = 1056; // 0x420
+    field public static final int AUDIO_VIDEO_HANDSFREE = 1032; // 0x408
+    field public static final int AUDIO_VIDEO_HEADPHONES = 1048; // 0x418
+    field public static final int AUDIO_VIDEO_HIFI_AUDIO = 1064; // 0x428
+    field public static final int AUDIO_VIDEO_LOUDSPEAKER = 1044; // 0x414
+    field public static final int AUDIO_VIDEO_MICROPHONE = 1040; // 0x410
+    field public static final int AUDIO_VIDEO_PORTABLE_AUDIO = 1052; // 0x41c
+    field public static final int AUDIO_VIDEO_SET_TOP_BOX = 1060; // 0x424
+    field public static final int AUDIO_VIDEO_UNCATEGORIZED = 1024; // 0x400
+    field public static final int AUDIO_VIDEO_VCR = 1068; // 0x42c
+    field public static final int AUDIO_VIDEO_VIDEO_CAMERA = 1072; // 0x430
+    field public static final int AUDIO_VIDEO_VIDEO_CONFERENCING = 1088; // 0x440
+    field public static final int AUDIO_VIDEO_VIDEO_DISPLAY_AND_LOUDSPEAKER = 1084; // 0x43c
+    field public static final int AUDIO_VIDEO_VIDEO_GAMING_TOY = 1096; // 0x448
+    field public static final int AUDIO_VIDEO_VIDEO_MONITOR = 1080; // 0x438
+    field public static final int AUDIO_VIDEO_WEARABLE_HEADSET = 1028; // 0x404
+    field public static final int COMPUTER_DESKTOP = 260; // 0x104
+    field public static final int COMPUTER_HANDHELD_PC_PDA = 272; // 0x110
+    field public static final int COMPUTER_LAPTOP = 268; // 0x10c
+    field public static final int COMPUTER_PALM_SIZE_PC_PDA = 276; // 0x114
+    field public static final int COMPUTER_SERVER = 264; // 0x108
+    field public static final int COMPUTER_UNCATEGORIZED = 256; // 0x100
+    field public static final int COMPUTER_WEARABLE = 280; // 0x118
+    field public static final int HEALTH_BLOOD_PRESSURE = 2308; // 0x904
+    field public static final int HEALTH_DATA_DISPLAY = 2332; // 0x91c
+    field public static final int HEALTH_GLUCOSE = 2320; // 0x910
+    field public static final int HEALTH_PULSE_OXIMETER = 2324; // 0x914
+    field public static final int HEALTH_PULSE_RATE = 2328; // 0x918
+    field public static final int HEALTH_THERMOMETER = 2312; // 0x908
+    field public static final int HEALTH_UNCATEGORIZED = 2304; // 0x900
+    field public static final int HEALTH_WEIGHING = 2316; // 0x90c
+    field public static final int PHONE_CELLULAR = 516; // 0x204
+    field public static final int PHONE_CORDLESS = 520; // 0x208
+    field public static final int PHONE_ISDN = 532; // 0x214
+    field public static final int PHONE_MODEM_OR_GATEWAY = 528; // 0x210
+    field public static final int PHONE_SMART = 524; // 0x20c
+    field public static final int PHONE_UNCATEGORIZED = 512; // 0x200
+    field public static final int TOY_CONTROLLER = 2064; // 0x810
+    field public static final int TOY_DOLL_ACTION_FIGURE = 2060; // 0x80c
+    field public static final int TOY_GAME = 2068; // 0x814
+    field public static final int TOY_ROBOT = 2052; // 0x804
+    field public static final int TOY_UNCATEGORIZED = 2048; // 0x800
+    field public static final int TOY_VEHICLE = 2056; // 0x808
+    field public static final int WEARABLE_GLASSES = 1812; // 0x714
+    field public static final int WEARABLE_HELMET = 1808; // 0x710
+    field public static final int WEARABLE_JACKET = 1804; // 0x70c
+    field public static final int WEARABLE_PAGER = 1800; // 0x708
+    field public static final int WEARABLE_UNCATEGORIZED = 1792; // 0x700
+    field public static final int WEARABLE_WRIST_WATCH = 1796; // 0x704
+  }
+
+  public static class BluetoothClass.Device.Major {
+    ctor public BluetoothClass.Device.Major();
+    field public static final int AUDIO_VIDEO = 1024; // 0x400
+    field public static final int COMPUTER = 256; // 0x100
+    field public static final int HEALTH = 2304; // 0x900
+    field public static final int IMAGING = 1536; // 0x600
+    field public static final int MISC = 0; // 0x0
+    field public static final int NETWORKING = 768; // 0x300
+    field public static final int PERIPHERAL = 1280; // 0x500
+    field public static final int PHONE = 512; // 0x200
+    field public static final int TOY = 2048; // 0x800
+    field public static final int UNCATEGORIZED = 7936; // 0x1f00
+    field public static final int WEARABLE = 1792; // 0x700
+  }
+
+  public static final class BluetoothClass.Service {
+    ctor public BluetoothClass.Service();
+    field public static final int AUDIO = 2097152; // 0x200000
+    field public static final int CAPTURE = 524288; // 0x80000
+    field public static final int INFORMATION = 8388608; // 0x800000
+    field public static final int LIMITED_DISCOVERABILITY = 8192; // 0x2000
+    field public static final int NETWORKING = 131072; // 0x20000
+    field public static final int OBJECT_TRANSFER = 1048576; // 0x100000
+    field public static final int POSITIONING = 65536; // 0x10000
+    field public static final int RENDER = 262144; // 0x40000
+    field public static final int TELEPHONY = 4194304; // 0x400000
+  }
+
+  public final class BluetoothDevice implements android.os.Parcelable {
+    method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback);
+    method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback, int);
+    method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback, int, int);
+    method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback, int, int, android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean createBond();
+    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothSocket createInsecureL2capChannel(int) throws java.io.IOException;
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothSocket createInsecureRfcommSocketToServiceRecord(java.util.UUID) throws java.io.IOException;
+    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothSocket createL2capChannel(int) throws java.io.IOException;
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothSocket createRfcommSocketToServiceRecord(java.util.UUID) throws java.io.IOException;
+    method public int describeContents();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean fetchUuidsWithSdp();
+    method public String getAddress();
+    method @Nullable @RequiresPermission(android.Manifest.permission.BLUETOOTH) public String getAlias();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothClass getBluetoothClass();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getBondState();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public String getName();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getType();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.os.ParcelUuid[] getUuids();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setPairingConfirmation(boolean);
+    method public boolean setPin(byte[]);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final String ACTION_ACL_CONNECTED = "android.bluetooth.device.action.ACL_CONNECTED";
+    field public static final String ACTION_ACL_DISCONNECTED = "android.bluetooth.device.action.ACL_DISCONNECTED";
+    field public static final String ACTION_ACL_DISCONNECT_REQUESTED = "android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED";
+    field public static final String ACTION_ALIAS_CHANGED = "android.bluetooth.device.action.ALIAS_CHANGED";
+    field public static final String ACTION_BOND_STATE_CHANGED = "android.bluetooth.device.action.BOND_STATE_CHANGED";
+    field public static final String ACTION_CLASS_CHANGED = "android.bluetooth.device.action.CLASS_CHANGED";
+    field public static final String ACTION_FOUND = "android.bluetooth.device.action.FOUND";
+    field public static final String ACTION_NAME_CHANGED = "android.bluetooth.device.action.NAME_CHANGED";
+    field public static final String ACTION_PAIRING_REQUEST = "android.bluetooth.device.action.PAIRING_REQUEST";
+    field public static final String ACTION_UUID = "android.bluetooth.device.action.UUID";
+    field public static final int BOND_BONDED = 12; // 0xc
+    field public static final int BOND_BONDING = 11; // 0xb
+    field public static final int BOND_NONE = 10; // 0xa
+    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothDevice> CREATOR;
+    field public static final int DEVICE_TYPE_CLASSIC = 1; // 0x1
+    field public static final int DEVICE_TYPE_DUAL = 3; // 0x3
+    field public static final int DEVICE_TYPE_LE = 2; // 0x2
+    field public static final int DEVICE_TYPE_UNKNOWN = 0; // 0x0
+    field public static final int ERROR = -2147483648; // 0x80000000
+    field public static final String EXTRA_BOND_STATE = "android.bluetooth.device.extra.BOND_STATE";
+    field public static final String EXTRA_CLASS = "android.bluetooth.device.extra.CLASS";
+    field public static final String EXTRA_DEVICE = "android.bluetooth.device.extra.DEVICE";
+    field public static final String EXTRA_NAME = "android.bluetooth.device.extra.NAME";
+    field public static final String EXTRA_PAIRING_KEY = "android.bluetooth.device.extra.PAIRING_KEY";
+    field public static final String EXTRA_PAIRING_VARIANT = "android.bluetooth.device.extra.PAIRING_VARIANT";
+    field public static final String EXTRA_PREVIOUS_BOND_STATE = "android.bluetooth.device.extra.PREVIOUS_BOND_STATE";
+    field public static final String EXTRA_RSSI = "android.bluetooth.device.extra.RSSI";
+    field public static final String EXTRA_UUID = "android.bluetooth.device.extra.UUID";
+    field public static final int PAIRING_VARIANT_PASSKEY_CONFIRMATION = 2; // 0x2
+    field public static final int PAIRING_VARIANT_PIN = 0; // 0x0
+    field public static final int PHY_LE_1M = 1; // 0x1
+    field public static final int PHY_LE_1M_MASK = 1; // 0x1
+    field public static final int PHY_LE_2M = 2; // 0x2
+    field public static final int PHY_LE_2M_MASK = 2; // 0x2
+    field public static final int PHY_LE_CODED = 3; // 0x3
+    field public static final int PHY_LE_CODED_MASK = 4; // 0x4
+    field public static final int PHY_OPTION_NO_PREFERRED = 0; // 0x0
+    field public static final int PHY_OPTION_S2 = 1; // 0x1
+    field public static final int PHY_OPTION_S8 = 2; // 0x2
+    field public static final int TRANSPORT_AUTO = 0; // 0x0
+    field public static final int TRANSPORT_BREDR = 1; // 0x1
+    field public static final int TRANSPORT_LE = 2; // 0x2
+  }
+
+  public final class BluetoothGatt implements android.bluetooth.BluetoothProfile {
+    method public void abortReliableWrite();
+    method @Deprecated public void abortReliableWrite(android.bluetooth.BluetoothDevice);
+    method public boolean beginReliableWrite();
+    method public void close();
+    method public boolean connect();
+    method public void disconnect();
+    method public boolean discoverServices();
+    method public boolean executeReliableWrite();
+    method public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
+    method public int getConnectionState(android.bluetooth.BluetoothDevice);
+    method public android.bluetooth.BluetoothDevice getDevice();
+    method public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
+    method public android.bluetooth.BluetoothGattService getService(java.util.UUID);
+    method public java.util.List<android.bluetooth.BluetoothGattService> getServices();
+    method public boolean readCharacteristic(android.bluetooth.BluetoothGattCharacteristic);
+    method public boolean readDescriptor(android.bluetooth.BluetoothGattDescriptor);
+    method public void readPhy();
+    method public boolean readRemoteRssi();
+    method public boolean requestConnectionPriority(int);
+    method public boolean requestMtu(int);
+    method public boolean setCharacteristicNotification(android.bluetooth.BluetoothGattCharacteristic, boolean);
+    method public void setPreferredPhy(int, int, int);
+    method public boolean writeCharacteristic(android.bluetooth.BluetoothGattCharacteristic);
+    method public boolean writeDescriptor(android.bluetooth.BluetoothGattDescriptor);
+    field public static final int CONNECTION_PRIORITY_BALANCED = 0; // 0x0
+    field public static final int CONNECTION_PRIORITY_HIGH = 1; // 0x1
+    field public static final int CONNECTION_PRIORITY_LOW_POWER = 2; // 0x2
+    field public static final int GATT_CONNECTION_CONGESTED = 143; // 0x8f
+    field public static final int GATT_FAILURE = 257; // 0x101
+    field public static final int GATT_INSUFFICIENT_AUTHENTICATION = 5; // 0x5
+    field public static final int GATT_INSUFFICIENT_ENCRYPTION = 15; // 0xf
+    field public static final int GATT_INVALID_ATTRIBUTE_LENGTH = 13; // 0xd
+    field public static final int GATT_INVALID_OFFSET = 7; // 0x7
+    field public static final int GATT_READ_NOT_PERMITTED = 2; // 0x2
+    field public static final int GATT_REQUEST_NOT_SUPPORTED = 6; // 0x6
+    field public static final int GATT_SUCCESS = 0; // 0x0
+    field public static final int GATT_WRITE_NOT_PERMITTED = 3; // 0x3
+  }
+
+  public abstract class BluetoothGattCallback {
+    ctor public BluetoothGattCallback();
+    method public void onCharacteristicChanged(android.bluetooth.BluetoothGatt, android.bluetooth.BluetoothGattCharacteristic);
+    method public void onCharacteristicRead(android.bluetooth.BluetoothGatt, android.bluetooth.BluetoothGattCharacteristic, int);
+    method public void onCharacteristicWrite(android.bluetooth.BluetoothGatt, android.bluetooth.BluetoothGattCharacteristic, int);
+    method public void onConnectionStateChange(android.bluetooth.BluetoothGatt, int, int);
+    method public void onDescriptorRead(android.bluetooth.BluetoothGatt, android.bluetooth.BluetoothGattDescriptor, int);
+    method public void onDescriptorWrite(android.bluetooth.BluetoothGatt, android.bluetooth.BluetoothGattDescriptor, int);
+    method public void onMtuChanged(android.bluetooth.BluetoothGatt, int, int);
+    method public void onPhyRead(android.bluetooth.BluetoothGatt, int, int, int);
+    method public void onPhyUpdate(android.bluetooth.BluetoothGatt, int, int, int);
+    method public void onReadRemoteRssi(android.bluetooth.BluetoothGatt, int, int);
+    method public void onReliableWriteCompleted(android.bluetooth.BluetoothGatt, int);
+    method public void onServiceChanged(@NonNull android.bluetooth.BluetoothGatt);
+    method public void onServicesDiscovered(android.bluetooth.BluetoothGatt, int);
+  }
+
+  public class BluetoothGattCharacteristic implements android.os.Parcelable {
+    ctor public BluetoothGattCharacteristic(java.util.UUID, int, int);
+    method public boolean addDescriptor(android.bluetooth.BluetoothGattDescriptor);
+    method public int describeContents();
+    method public android.bluetooth.BluetoothGattDescriptor getDescriptor(java.util.UUID);
+    method public java.util.List<android.bluetooth.BluetoothGattDescriptor> getDescriptors();
+    method public Float getFloatValue(int, int);
+    method public int getInstanceId();
+    method public Integer getIntValue(int, int);
+    method public int getPermissions();
+    method public int getProperties();
+    method public android.bluetooth.BluetoothGattService getService();
+    method public String getStringValue(int);
+    method public java.util.UUID getUuid();
+    method public byte[] getValue();
+    method public int getWriteType();
+    method public boolean setValue(byte[]);
+    method public boolean setValue(int, int, int);
+    method public boolean setValue(int, int, int, int);
+    method public boolean setValue(String);
+    method public void setWriteType(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothGattCharacteristic> CREATOR;
+    field public static final int FORMAT_FLOAT = 52; // 0x34
+    field public static final int FORMAT_SFLOAT = 50; // 0x32
+    field public static final int FORMAT_SINT16 = 34; // 0x22
+    field public static final int FORMAT_SINT32 = 36; // 0x24
+    field public static final int FORMAT_SINT8 = 33; // 0x21
+    field public static final int FORMAT_UINT16 = 18; // 0x12
+    field public static final int FORMAT_UINT32 = 20; // 0x14
+    field public static final int FORMAT_UINT8 = 17; // 0x11
+    field public static final int PERMISSION_READ = 1; // 0x1
+    field public static final int PERMISSION_READ_ENCRYPTED = 2; // 0x2
+    field public static final int PERMISSION_READ_ENCRYPTED_MITM = 4; // 0x4
+    field public static final int PERMISSION_WRITE = 16; // 0x10
+    field public static final int PERMISSION_WRITE_ENCRYPTED = 32; // 0x20
+    field public static final int PERMISSION_WRITE_ENCRYPTED_MITM = 64; // 0x40
+    field public static final int PERMISSION_WRITE_SIGNED = 128; // 0x80
+    field public static final int PERMISSION_WRITE_SIGNED_MITM = 256; // 0x100
+    field public static final int PROPERTY_BROADCAST = 1; // 0x1
+    field public static final int PROPERTY_EXTENDED_PROPS = 128; // 0x80
+    field public static final int PROPERTY_INDICATE = 32; // 0x20
+    field public static final int PROPERTY_NOTIFY = 16; // 0x10
+    field public static final int PROPERTY_READ = 2; // 0x2
+    field public static final int PROPERTY_SIGNED_WRITE = 64; // 0x40
+    field public static final int PROPERTY_WRITE = 8; // 0x8
+    field public static final int PROPERTY_WRITE_NO_RESPONSE = 4; // 0x4
+    field public static final int WRITE_TYPE_DEFAULT = 2; // 0x2
+    field public static final int WRITE_TYPE_NO_RESPONSE = 1; // 0x1
+    field public static final int WRITE_TYPE_SIGNED = 4; // 0x4
+    field protected java.util.List<android.bluetooth.BluetoothGattDescriptor> mDescriptors;
+  }
+
+  public class BluetoothGattDescriptor implements android.os.Parcelable {
+    ctor public BluetoothGattDescriptor(java.util.UUID, int);
+    method public int describeContents();
+    method public android.bluetooth.BluetoothGattCharacteristic getCharacteristic();
+    method public int getPermissions();
+    method public java.util.UUID getUuid();
+    method public byte[] getValue();
+    method public boolean setValue(byte[]);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothGattDescriptor> CREATOR;
+    field public static final byte[] DISABLE_NOTIFICATION_VALUE;
+    field public static final byte[] ENABLE_INDICATION_VALUE;
+    field public static final byte[] ENABLE_NOTIFICATION_VALUE;
+    field public static final int PERMISSION_READ = 1; // 0x1
+    field public static final int PERMISSION_READ_ENCRYPTED = 2; // 0x2
+    field public static final int PERMISSION_READ_ENCRYPTED_MITM = 4; // 0x4
+    field public static final int PERMISSION_WRITE = 16; // 0x10
+    field public static final int PERMISSION_WRITE_ENCRYPTED = 32; // 0x20
+    field public static final int PERMISSION_WRITE_ENCRYPTED_MITM = 64; // 0x40
+    field public static final int PERMISSION_WRITE_SIGNED = 128; // 0x80
+    field public static final int PERMISSION_WRITE_SIGNED_MITM = 256; // 0x100
+  }
+
+  public final class BluetoothGattServer implements android.bluetooth.BluetoothProfile {
+    method public boolean addService(android.bluetooth.BluetoothGattService);
+    method public void cancelConnection(android.bluetooth.BluetoothDevice);
+    method public void clearServices();
+    method public void close();
+    method public boolean connect(android.bluetooth.BluetoothDevice, boolean);
+    method public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
+    method public int getConnectionState(android.bluetooth.BluetoothDevice);
+    method public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
+    method public android.bluetooth.BluetoothGattService getService(java.util.UUID);
+    method public java.util.List<android.bluetooth.BluetoothGattService> getServices();
+    method public boolean notifyCharacteristicChanged(android.bluetooth.BluetoothDevice, android.bluetooth.BluetoothGattCharacteristic, boolean);
+    method public void readPhy(android.bluetooth.BluetoothDevice);
+    method public boolean removeService(android.bluetooth.BluetoothGattService);
+    method public boolean sendResponse(android.bluetooth.BluetoothDevice, int, int, int, byte[]);
+    method public void setPreferredPhy(android.bluetooth.BluetoothDevice, int, int, int);
+  }
+
+  public abstract class BluetoothGattServerCallback {
+    ctor public BluetoothGattServerCallback();
+    method public void onCharacteristicReadRequest(android.bluetooth.BluetoothDevice, int, int, android.bluetooth.BluetoothGattCharacteristic);
+    method public void onCharacteristicWriteRequest(android.bluetooth.BluetoothDevice, int, android.bluetooth.BluetoothGattCharacteristic, boolean, boolean, int, byte[]);
+    method public void onConnectionStateChange(android.bluetooth.BluetoothDevice, int, int);
+    method public void onDescriptorReadRequest(android.bluetooth.BluetoothDevice, int, int, android.bluetooth.BluetoothGattDescriptor);
+    method public void onDescriptorWriteRequest(android.bluetooth.BluetoothDevice, int, android.bluetooth.BluetoothGattDescriptor, boolean, boolean, int, byte[]);
+    method public void onExecuteWrite(android.bluetooth.BluetoothDevice, int, boolean);
+    method public void onMtuChanged(android.bluetooth.BluetoothDevice, int);
+    method public void onNotificationSent(android.bluetooth.BluetoothDevice, int);
+    method public void onPhyRead(android.bluetooth.BluetoothDevice, int, int, int);
+    method public void onPhyUpdate(android.bluetooth.BluetoothDevice, int, int, int);
+    method public void onServiceAdded(int, android.bluetooth.BluetoothGattService);
+  }
+
+  public class BluetoothGattService implements android.os.Parcelable {
+    ctor public BluetoothGattService(java.util.UUID, int);
+    method public boolean addCharacteristic(android.bluetooth.BluetoothGattCharacteristic);
+    method public boolean addService(android.bluetooth.BluetoothGattService);
+    method public int describeContents();
+    method public android.bluetooth.BluetoothGattCharacteristic getCharacteristic(java.util.UUID);
+    method public java.util.List<android.bluetooth.BluetoothGattCharacteristic> getCharacteristics();
+    method public java.util.List<android.bluetooth.BluetoothGattService> getIncludedServices();
+    method public int getInstanceId();
+    method public int getType();
+    method public java.util.UUID getUuid();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothGattService> CREATOR;
+    field public static final int SERVICE_TYPE_PRIMARY = 0; // 0x0
+    field public static final int SERVICE_TYPE_SECONDARY = 1; // 0x1
+    field protected java.util.List<android.bluetooth.BluetoothGattCharacteristic> mCharacteristics;
+    field protected java.util.List<android.bluetooth.BluetoothGattService> mIncludedServices;
+  }
+
+  public final class BluetoothHeadset implements android.bluetooth.BluetoothProfile {
+    method public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
+    method public int getConnectionState(android.bluetooth.BluetoothDevice);
+    method public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
+    method public boolean isAudioConnected(android.bluetooth.BluetoothDevice);
+    method public boolean sendVendorSpecificResultCode(android.bluetooth.BluetoothDevice, String, String);
+    method public boolean startVoiceRecognition(android.bluetooth.BluetoothDevice);
+    method public boolean stopVoiceRecognition(android.bluetooth.BluetoothDevice);
+    field public static final String ACTION_AUDIO_STATE_CHANGED = "android.bluetooth.headset.profile.action.AUDIO_STATE_CHANGED";
+    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.headset.profile.action.CONNECTION_STATE_CHANGED";
+    field public static final String ACTION_VENDOR_SPECIFIC_HEADSET_EVENT = "android.bluetooth.headset.action.VENDOR_SPECIFIC_HEADSET_EVENT";
+    field public static final int AT_CMD_TYPE_ACTION = 4; // 0x4
+    field public static final int AT_CMD_TYPE_BASIC = 3; // 0x3
+    field public static final int AT_CMD_TYPE_READ = 0; // 0x0
+    field public static final int AT_CMD_TYPE_SET = 2; // 0x2
+    field public static final int AT_CMD_TYPE_TEST = 1; // 0x1
+    field public static final String EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_ARGS = "android.bluetooth.headset.extra.VENDOR_SPECIFIC_HEADSET_EVENT_ARGS";
+    field public static final String EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_CMD = "android.bluetooth.headset.extra.VENDOR_SPECIFIC_HEADSET_EVENT_CMD";
+    field public static final String EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_CMD_TYPE = "android.bluetooth.headset.extra.VENDOR_SPECIFIC_HEADSET_EVENT_CMD_TYPE";
+    field public static final int STATE_AUDIO_CONNECTED = 12; // 0xc
+    field public static final int STATE_AUDIO_CONNECTING = 11; // 0xb
+    field public static final int STATE_AUDIO_DISCONNECTED = 10; // 0xa
+    field public static final String VENDOR_RESULT_CODE_COMMAND_ANDROID = "+ANDROID";
+    field public static final String VENDOR_SPECIFIC_HEADSET_EVENT_COMPANY_ID_CATEGORY = "android.bluetooth.headset.intent.category.companyid";
+  }
+
+  @Deprecated public final class BluetoothHealth implements android.bluetooth.BluetoothProfile {
+    method @Deprecated public boolean connectChannelToSource(android.bluetooth.BluetoothDevice, android.bluetooth.BluetoothHealthAppConfiguration);
+    method @Deprecated public boolean disconnectChannel(android.bluetooth.BluetoothDevice, android.bluetooth.BluetoothHealthAppConfiguration, int);
+    method @Deprecated public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
+    method @Deprecated public int getConnectionState(android.bluetooth.BluetoothDevice);
+    method @Deprecated public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
+    method @Deprecated public android.os.ParcelFileDescriptor getMainChannelFd(android.bluetooth.BluetoothDevice, android.bluetooth.BluetoothHealthAppConfiguration);
+    method @Deprecated public boolean registerSinkAppConfiguration(String, int, android.bluetooth.BluetoothHealthCallback);
+    method @Deprecated public boolean unregisterAppConfiguration(android.bluetooth.BluetoothHealthAppConfiguration);
+    field @Deprecated public static final int APP_CONFIG_REGISTRATION_FAILURE = 1; // 0x1
+    field @Deprecated public static final int APP_CONFIG_REGISTRATION_SUCCESS = 0; // 0x0
+    field @Deprecated public static final int APP_CONFIG_UNREGISTRATION_FAILURE = 3; // 0x3
+    field @Deprecated public static final int APP_CONFIG_UNREGISTRATION_SUCCESS = 2; // 0x2
+    field @Deprecated public static final int CHANNEL_TYPE_RELIABLE = 10; // 0xa
+    field @Deprecated public static final int CHANNEL_TYPE_STREAMING = 11; // 0xb
+    field @Deprecated public static final int SINK_ROLE = 2; // 0x2
+    field @Deprecated public static final int SOURCE_ROLE = 1; // 0x1
+    field @Deprecated public static final int STATE_CHANNEL_CONNECTED = 2; // 0x2
+    field @Deprecated public static final int STATE_CHANNEL_CONNECTING = 1; // 0x1
+    field @Deprecated public static final int STATE_CHANNEL_DISCONNECTED = 0; // 0x0
+    field @Deprecated public static final int STATE_CHANNEL_DISCONNECTING = 3; // 0x3
+  }
+
+  @Deprecated public final class BluetoothHealthAppConfiguration implements android.os.Parcelable {
+    method @Deprecated public int describeContents();
+    method @Deprecated public int getDataType();
+    method @Deprecated public String getName();
+    method @Deprecated public int getRole();
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothHealthAppConfiguration> CREATOR;
+  }
+
+  @Deprecated public abstract class BluetoothHealthCallback {
+    ctor @Deprecated public BluetoothHealthCallback();
+    method @Deprecated @BinderThread public void onHealthAppConfigurationStatusChange(android.bluetooth.BluetoothHealthAppConfiguration, int);
+    method @Deprecated @BinderThread public void onHealthChannelStateChange(android.bluetooth.BluetoothHealthAppConfiguration, android.bluetooth.BluetoothDevice, int, int, android.os.ParcelFileDescriptor, int);
+  }
+
+  public final class BluetoothHearingAid implements android.bluetooth.BluetoothProfile {
+    method @NonNull public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
+    method public int getConnectionState(@NonNull android.bluetooth.BluetoothDevice);
+    method @NonNull public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(@NonNull int[]);
+    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.hearingaid.profile.action.CONNECTION_STATE_CHANGED";
+  }
+
+  public final class BluetoothHidDevice implements android.bluetooth.BluetoothProfile {
+    method public boolean connect(android.bluetooth.BluetoothDevice);
+    method public boolean disconnect(android.bluetooth.BluetoothDevice);
+    method public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
+    method public int getConnectionState(android.bluetooth.BluetoothDevice);
+    method public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
+    method public boolean registerApp(android.bluetooth.BluetoothHidDeviceAppSdpSettings, android.bluetooth.BluetoothHidDeviceAppQosSettings, android.bluetooth.BluetoothHidDeviceAppQosSettings, java.util.concurrent.Executor, android.bluetooth.BluetoothHidDevice.Callback);
+    method public boolean replyReport(android.bluetooth.BluetoothDevice, byte, byte, byte[]);
+    method public boolean reportError(android.bluetooth.BluetoothDevice, byte);
+    method public boolean sendReport(android.bluetooth.BluetoothDevice, int, byte[]);
+    method public boolean unregisterApp();
+    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.hiddevice.profile.action.CONNECTION_STATE_CHANGED";
+    field public static final byte ERROR_RSP_INVALID_PARAM = 4; // 0x4
+    field public static final byte ERROR_RSP_INVALID_RPT_ID = 2; // 0x2
+    field public static final byte ERROR_RSP_NOT_READY = 1; // 0x1
+    field public static final byte ERROR_RSP_SUCCESS = 0; // 0x0
+    field public static final byte ERROR_RSP_UNKNOWN = 14; // 0xe
+    field public static final byte ERROR_RSP_UNSUPPORTED_REQ = 3; // 0x3
+    field public static final byte PROTOCOL_BOOT_MODE = 0; // 0x0
+    field public static final byte PROTOCOL_REPORT_MODE = 1; // 0x1
+    field public static final byte REPORT_TYPE_FEATURE = 3; // 0x3
+    field public static final byte REPORT_TYPE_INPUT = 1; // 0x1
+    field public static final byte REPORT_TYPE_OUTPUT = 2; // 0x2
+    field public static final byte SUBCLASS1_COMBO = -64; // 0xffffffc0
+    field public static final byte SUBCLASS1_KEYBOARD = 64; // 0x40
+    field public static final byte SUBCLASS1_MOUSE = -128; // 0xffffff80
+    field public static final byte SUBCLASS1_NONE = 0; // 0x0
+    field public static final byte SUBCLASS2_CARD_READER = 6; // 0x6
+    field public static final byte SUBCLASS2_DIGITIZER_TABLET = 5; // 0x5
+    field public static final byte SUBCLASS2_GAMEPAD = 2; // 0x2
+    field public static final byte SUBCLASS2_JOYSTICK = 1; // 0x1
+    field public static final byte SUBCLASS2_REMOTE_CONTROL = 3; // 0x3
+    field public static final byte SUBCLASS2_SENSING_DEVICE = 4; // 0x4
+    field public static final byte SUBCLASS2_UNCATEGORIZED = 0; // 0x0
+  }
+
+  public abstract static class BluetoothHidDevice.Callback {
+    ctor public BluetoothHidDevice.Callback();
+    method public void onAppStatusChanged(android.bluetooth.BluetoothDevice, boolean);
+    method public void onConnectionStateChanged(android.bluetooth.BluetoothDevice, int);
+    method public void onGetReport(android.bluetooth.BluetoothDevice, byte, byte, int);
+    method public void onInterruptData(android.bluetooth.BluetoothDevice, byte, byte[]);
+    method public void onSetProtocol(android.bluetooth.BluetoothDevice, byte);
+    method public void onSetReport(android.bluetooth.BluetoothDevice, byte, byte, byte[]);
+    method public void onVirtualCableUnplug(android.bluetooth.BluetoothDevice);
+  }
+
+  public final class BluetoothHidDeviceAppQosSettings implements android.os.Parcelable {
+    ctor public BluetoothHidDeviceAppQosSettings(int, int, int, int, int, int);
+    method public int describeContents();
+    method public int getDelayVariation();
+    method public int getLatency();
+    method public int getPeakBandwidth();
+    method public int getServiceType();
+    method public int getTokenBucketSize();
+    method public int getTokenRate();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothHidDeviceAppQosSettings> CREATOR;
+    field public static final int MAX = -1; // 0xffffffff
+    field public static final int SERVICE_BEST_EFFORT = 1; // 0x1
+    field public static final int SERVICE_GUARANTEED = 2; // 0x2
+    field public static final int SERVICE_NO_TRAFFIC = 0; // 0x0
+  }
+
+  public final class BluetoothHidDeviceAppSdpSettings implements android.os.Parcelable {
+    ctor public BluetoothHidDeviceAppSdpSettings(String, String, String, byte, byte[]);
+    method public int describeContents();
+    method public String getDescription();
+    method public byte[] getDescriptors();
+    method public String getName();
+    method public String getProvider();
+    method public byte getSubclass();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothHidDeviceAppSdpSettings> CREATOR;
+  }
+
+  public final class BluetoothManager {
+    method public android.bluetooth.BluetoothAdapter getAdapter();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices(int);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getConnectionState(android.bluetooth.BluetoothDevice, int);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int, int[]);
+    method public android.bluetooth.BluetoothGattServer openGattServer(android.content.Context, android.bluetooth.BluetoothGattServerCallback);
+  }
+
+  public interface BluetoothProfile {
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getConnectionState(android.bluetooth.BluetoothDevice);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
+    field public static final int A2DP = 2; // 0x2
+    field public static final String EXTRA_PREVIOUS_STATE = "android.bluetooth.profile.extra.PREVIOUS_STATE";
+    field public static final String EXTRA_STATE = "android.bluetooth.profile.extra.STATE";
+    field public static final int GATT = 7; // 0x7
+    field public static final int GATT_SERVER = 8; // 0x8
+    field public static final int HEADSET = 1; // 0x1
+    field @Deprecated public static final int HEALTH = 3; // 0x3
+    field public static final int HEARING_AID = 21; // 0x15
+    field public static final int HID_DEVICE = 19; // 0x13
+    field public static final int SAP = 10; // 0xa
+    field public static final int STATE_CONNECTED = 2; // 0x2
+    field public static final int STATE_CONNECTING = 1; // 0x1
+    field public static final int STATE_DISCONNECTED = 0; // 0x0
+    field public static final int STATE_DISCONNECTING = 3; // 0x3
+  }
+
+  public static interface BluetoothProfile.ServiceListener {
+    method public void onServiceConnected(int, android.bluetooth.BluetoothProfile);
+    method public void onServiceDisconnected(int);
+  }
+
+  public final class BluetoothServerSocket implements java.io.Closeable {
+    method public android.bluetooth.BluetoothSocket accept() throws java.io.IOException;
+    method public android.bluetooth.BluetoothSocket accept(int) throws java.io.IOException;
+    method public void close() throws java.io.IOException;
+    method public int getPsm();
+  }
+
+  public final class BluetoothSocket implements java.io.Closeable {
+    method public void close() throws java.io.IOException;
+    method public void connect() throws java.io.IOException;
+    method public int getConnectionType();
+    method public java.io.InputStream getInputStream() throws java.io.IOException;
+    method public int getMaxReceivePacketSize();
+    method public int getMaxTransmitPacketSize();
+    method public java.io.OutputStream getOutputStream() throws java.io.IOException;
+    method public android.bluetooth.BluetoothDevice getRemoteDevice();
+    method public boolean isConnected();
+    field public static final int TYPE_L2CAP = 3; // 0x3
+    field public static final int TYPE_RFCOMM = 1; // 0x1
+    field public static final int TYPE_SCO = 2; // 0x2
+  }
+
+}
+
+package android.bluetooth.le {
+
+  public abstract class AdvertiseCallback {
+    ctor public AdvertiseCallback();
+    method public void onStartFailure(int);
+    method public void onStartSuccess(android.bluetooth.le.AdvertiseSettings);
+    field public static final int ADVERTISE_FAILED_ALREADY_STARTED = 3; // 0x3
+    field public static final int ADVERTISE_FAILED_DATA_TOO_LARGE = 1; // 0x1
+    field public static final int ADVERTISE_FAILED_FEATURE_UNSUPPORTED = 5; // 0x5
+    field public static final int ADVERTISE_FAILED_INTERNAL_ERROR = 4; // 0x4
+    field public static final int ADVERTISE_FAILED_TOO_MANY_ADVERTISERS = 2; // 0x2
+  }
+
+  public final class AdvertiseData implements android.os.Parcelable {
+    method public int describeContents();
+    method public boolean getIncludeDeviceName();
+    method public boolean getIncludeTxPowerLevel();
+    method public android.util.SparseArray<byte[]> getManufacturerSpecificData();
+    method public java.util.Map<android.os.ParcelUuid,byte[]> getServiceData();
+    method @Nullable public java.util.List<android.os.ParcelUuid> getServiceSolicitationUuids();
+    method public java.util.List<android.os.ParcelUuid> getServiceUuids();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.AdvertiseData> CREATOR;
+  }
+
+  public static final class AdvertiseData.Builder {
+    ctor public AdvertiseData.Builder();
+    method public android.bluetooth.le.AdvertiseData.Builder addManufacturerData(int, byte[]);
+    method public android.bluetooth.le.AdvertiseData.Builder addServiceData(android.os.ParcelUuid, byte[]);
+    method @NonNull public android.bluetooth.le.AdvertiseData.Builder addServiceSolicitationUuid(@NonNull android.os.ParcelUuid);
+    method public android.bluetooth.le.AdvertiseData.Builder addServiceUuid(android.os.ParcelUuid);
+    method public android.bluetooth.le.AdvertiseData build();
+    method public android.bluetooth.le.AdvertiseData.Builder setIncludeDeviceName(boolean);
+    method public android.bluetooth.le.AdvertiseData.Builder setIncludeTxPowerLevel(boolean);
+  }
+
+  public final class AdvertiseSettings implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getMode();
+    method public int getTimeout();
+    method public int getTxPowerLevel();
+    method public boolean isConnectable();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int ADVERTISE_MODE_BALANCED = 1; // 0x1
+    field public static final int ADVERTISE_MODE_LOW_LATENCY = 2; // 0x2
+    field public static final int ADVERTISE_MODE_LOW_POWER = 0; // 0x0
+    field public static final int ADVERTISE_TX_POWER_HIGH = 3; // 0x3
+    field public static final int ADVERTISE_TX_POWER_LOW = 1; // 0x1
+    field public static final int ADVERTISE_TX_POWER_MEDIUM = 2; // 0x2
+    field public static final int ADVERTISE_TX_POWER_ULTRA_LOW = 0; // 0x0
+    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.AdvertiseSettings> CREATOR;
+  }
+
+  public static final class AdvertiseSettings.Builder {
+    ctor public AdvertiseSettings.Builder();
+    method public android.bluetooth.le.AdvertiseSettings build();
+    method public android.bluetooth.le.AdvertiseSettings.Builder setAdvertiseMode(int);
+    method public android.bluetooth.le.AdvertiseSettings.Builder setConnectable(boolean);
+    method public android.bluetooth.le.AdvertiseSettings.Builder setTimeout(int);
+    method public android.bluetooth.le.AdvertiseSettings.Builder setTxPowerLevel(int);
+  }
+
+  public final class AdvertisingSet {
+    method public void enableAdvertising(boolean, int, int);
+    method public void setAdvertisingData(android.bluetooth.le.AdvertiseData);
+    method public void setAdvertisingParameters(android.bluetooth.le.AdvertisingSetParameters);
+    method public void setPeriodicAdvertisingData(android.bluetooth.le.AdvertiseData);
+    method public void setPeriodicAdvertisingEnabled(boolean);
+    method public void setPeriodicAdvertisingParameters(android.bluetooth.le.PeriodicAdvertisingParameters);
+    method public void setScanResponseData(android.bluetooth.le.AdvertiseData);
+  }
+
+  public abstract class AdvertisingSetCallback {
+    ctor public AdvertisingSetCallback();
+    method public void onAdvertisingDataSet(android.bluetooth.le.AdvertisingSet, int);
+    method public void onAdvertisingEnabled(android.bluetooth.le.AdvertisingSet, boolean, int);
+    method public void onAdvertisingParametersUpdated(android.bluetooth.le.AdvertisingSet, int, int);
+    method public void onAdvertisingSetStarted(android.bluetooth.le.AdvertisingSet, int, int);
+    method public void onAdvertisingSetStopped(android.bluetooth.le.AdvertisingSet);
+    method public void onPeriodicAdvertisingDataSet(android.bluetooth.le.AdvertisingSet, int);
+    method public void onPeriodicAdvertisingEnabled(android.bluetooth.le.AdvertisingSet, boolean, int);
+    method public void onPeriodicAdvertisingParametersUpdated(android.bluetooth.le.AdvertisingSet, int);
+    method public void onScanResponseDataSet(android.bluetooth.le.AdvertisingSet, int);
+    field public static final int ADVERTISE_FAILED_ALREADY_STARTED = 3; // 0x3
+    field public static final int ADVERTISE_FAILED_DATA_TOO_LARGE = 1; // 0x1
+    field public static final int ADVERTISE_FAILED_FEATURE_UNSUPPORTED = 5; // 0x5
+    field public static final int ADVERTISE_FAILED_INTERNAL_ERROR = 4; // 0x4
+    field public static final int ADVERTISE_FAILED_TOO_MANY_ADVERTISERS = 2; // 0x2
+    field public static final int ADVERTISE_SUCCESS = 0; // 0x0
+  }
+
+  public final class AdvertisingSetParameters implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getInterval();
+    method public int getPrimaryPhy();
+    method public int getSecondaryPhy();
+    method public int getTxPowerLevel();
+    method public boolean includeTxPower();
+    method public boolean isAnonymous();
+    method public boolean isConnectable();
+    method public boolean isLegacy();
+    method public boolean isScannable();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.AdvertisingSetParameters> CREATOR;
+    field public static final int INTERVAL_HIGH = 1600; // 0x640
+    field public static final int INTERVAL_LOW = 160; // 0xa0
+    field public static final int INTERVAL_MAX = 16777215; // 0xffffff
+    field public static final int INTERVAL_MEDIUM = 400; // 0x190
+    field public static final int INTERVAL_MIN = 160; // 0xa0
+    field public static final int TX_POWER_HIGH = 1; // 0x1
+    field public static final int TX_POWER_LOW = -15; // 0xfffffff1
+    field public static final int TX_POWER_MAX = 1; // 0x1
+    field public static final int TX_POWER_MEDIUM = -7; // 0xfffffff9
+    field public static final int TX_POWER_MIN = -127; // 0xffffff81
+    field public static final int TX_POWER_ULTRA_LOW = -21; // 0xffffffeb
+  }
+
+  public static final class AdvertisingSetParameters.Builder {
+    ctor public AdvertisingSetParameters.Builder();
+    method public android.bluetooth.le.AdvertisingSetParameters build();
+    method public android.bluetooth.le.AdvertisingSetParameters.Builder setAnonymous(boolean);
+    method public android.bluetooth.le.AdvertisingSetParameters.Builder setConnectable(boolean);
+    method public android.bluetooth.le.AdvertisingSetParameters.Builder setIncludeTxPower(boolean);
+    method public android.bluetooth.le.AdvertisingSetParameters.Builder setInterval(int);
+    method public android.bluetooth.le.AdvertisingSetParameters.Builder setLegacyMode(boolean);
+    method public android.bluetooth.le.AdvertisingSetParameters.Builder setPrimaryPhy(int);
+    method public android.bluetooth.le.AdvertisingSetParameters.Builder setScannable(boolean);
+    method public android.bluetooth.le.AdvertisingSetParameters.Builder setSecondaryPhy(int);
+    method public android.bluetooth.le.AdvertisingSetParameters.Builder setTxPowerLevel(int);
+  }
+
+  public final class BluetoothLeAdvertiser {
+    method public void startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback);
+    method public void startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback);
+    method public void startAdvertisingSet(android.bluetooth.le.AdvertisingSetParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.PeriodicAdvertisingParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertisingSetCallback);
+    method public void startAdvertisingSet(android.bluetooth.le.AdvertisingSetParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.PeriodicAdvertisingParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertisingSetCallback, android.os.Handler);
+    method public void startAdvertisingSet(android.bluetooth.le.AdvertisingSetParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.PeriodicAdvertisingParameters, android.bluetooth.le.AdvertiseData, int, int, android.bluetooth.le.AdvertisingSetCallback);
+    method public void startAdvertisingSet(android.bluetooth.le.AdvertisingSetParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.PeriodicAdvertisingParameters, android.bluetooth.le.AdvertiseData, int, int, android.bluetooth.le.AdvertisingSetCallback, android.os.Handler);
+    method public void stopAdvertising(android.bluetooth.le.AdvertiseCallback);
+    method public void stopAdvertisingSet(android.bluetooth.le.AdvertisingSetCallback);
+  }
+
+  public final class BluetoothLeScanner {
+    method public void flushPendingScanResults(android.bluetooth.le.ScanCallback);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public void startScan(android.bluetooth.le.ScanCallback);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public void startScan(java.util.List<android.bluetooth.le.ScanFilter>, android.bluetooth.le.ScanSettings, android.bluetooth.le.ScanCallback);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public int startScan(@Nullable java.util.List<android.bluetooth.le.ScanFilter>, @Nullable android.bluetooth.le.ScanSettings, @NonNull android.app.PendingIntent);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public void stopScan(android.bluetooth.le.ScanCallback);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public void stopScan(android.app.PendingIntent);
+    field public static final String EXTRA_CALLBACK_TYPE = "android.bluetooth.le.extra.CALLBACK_TYPE";
+    field public static final String EXTRA_ERROR_CODE = "android.bluetooth.le.extra.ERROR_CODE";
+    field public static final String EXTRA_LIST_SCAN_RESULT = "android.bluetooth.le.extra.LIST_SCAN_RESULT";
+  }
+
+  public final class PeriodicAdvertisingParameters implements android.os.Parcelable {
+    method public int describeContents();
+    method public boolean getIncludeTxPower();
+    method public int getInterval();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final android.os.Parcelable.Creator<android.bluetooth.le.PeriodicAdvertisingParameters> CREATOR;
+  }
+
+  public static final class PeriodicAdvertisingParameters.Builder {
+    ctor public PeriodicAdvertisingParameters.Builder();
+    method public android.bluetooth.le.PeriodicAdvertisingParameters build();
+    method public android.bluetooth.le.PeriodicAdvertisingParameters.Builder setIncludeTxPower(boolean);
+    method public android.bluetooth.le.PeriodicAdvertisingParameters.Builder setInterval(int);
+  }
+
+  public abstract class ScanCallback {
+    ctor public ScanCallback();
+    method public void onBatchScanResults(java.util.List<android.bluetooth.le.ScanResult>);
+    method public void onScanFailed(int);
+    method public void onScanResult(int, android.bluetooth.le.ScanResult);
+    field public static final int SCAN_FAILED_ALREADY_STARTED = 1; // 0x1
+    field public static final int SCAN_FAILED_APPLICATION_REGISTRATION_FAILED = 2; // 0x2
+    field public static final int SCAN_FAILED_FEATURE_UNSUPPORTED = 4; // 0x4
+    field public static final int SCAN_FAILED_INTERNAL_ERROR = 3; // 0x3
+  }
+
+  public final class ScanFilter implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public String getDeviceAddress();
+    method @Nullable public String getDeviceName();
+    method @Nullable public byte[] getManufacturerData();
+    method @Nullable public byte[] getManufacturerDataMask();
+    method public int getManufacturerId();
+    method @Nullable public byte[] getServiceData();
+    method @Nullable public byte[] getServiceDataMask();
+    method @Nullable public android.os.ParcelUuid getServiceDataUuid();
+    method @Nullable public android.os.ParcelUuid getServiceSolicitationUuid();
+    method @Nullable public android.os.ParcelUuid getServiceSolicitationUuidMask();
+    method @Nullable public android.os.ParcelUuid getServiceUuid();
+    method @Nullable public android.os.ParcelUuid getServiceUuidMask();
+    method public boolean matches(android.bluetooth.le.ScanResult);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.ScanFilter> CREATOR;
+  }
+
+  public static final class ScanFilter.Builder {
+    ctor public ScanFilter.Builder();
+    method public android.bluetooth.le.ScanFilter build();
+    method public android.bluetooth.le.ScanFilter.Builder setDeviceAddress(String);
+    method public android.bluetooth.le.ScanFilter.Builder setDeviceName(String);
+    method public android.bluetooth.le.ScanFilter.Builder setManufacturerData(int, byte[]);
+    method public android.bluetooth.le.ScanFilter.Builder setManufacturerData(int, byte[], byte[]);
+    method public android.bluetooth.le.ScanFilter.Builder setServiceData(android.os.ParcelUuid, byte[]);
+    method public android.bluetooth.le.ScanFilter.Builder setServiceData(android.os.ParcelUuid, byte[], byte[]);
+    method @NonNull public android.bluetooth.le.ScanFilter.Builder setServiceSolicitationUuid(@Nullable android.os.ParcelUuid);
+    method @NonNull public android.bluetooth.le.ScanFilter.Builder setServiceSolicitationUuid(@Nullable android.os.ParcelUuid, @Nullable android.os.ParcelUuid);
+    method public android.bluetooth.le.ScanFilter.Builder setServiceUuid(android.os.ParcelUuid);
+    method public android.bluetooth.le.ScanFilter.Builder setServiceUuid(android.os.ParcelUuid, android.os.ParcelUuid);
+  }
+
+  public final class ScanRecord {
+    method public int getAdvertiseFlags();
+    method public byte[] getBytes();
+    method @Nullable public String getDeviceName();
+    method public android.util.SparseArray<byte[]> getManufacturerSpecificData();
+    method @Nullable public byte[] getManufacturerSpecificData(int);
+    method public java.util.Map<android.os.ParcelUuid,byte[]> getServiceData();
+    method @Nullable public byte[] getServiceData(android.os.ParcelUuid);
+    method @NonNull public java.util.List<android.os.ParcelUuid> getServiceSolicitationUuids();
+    method public java.util.List<android.os.ParcelUuid> getServiceUuids();
+    method public int getTxPowerLevel();
+  }
+
+  public final class ScanResult implements android.os.Parcelable {
+    ctor @Deprecated public ScanResult(android.bluetooth.BluetoothDevice, android.bluetooth.le.ScanRecord, int, long);
+    ctor public ScanResult(android.bluetooth.BluetoothDevice, int, int, int, int, int, int, int, android.bluetooth.le.ScanRecord, long);
+    method public int describeContents();
+    method public int getAdvertisingSid();
+    method public int getDataStatus();
+    method public android.bluetooth.BluetoothDevice getDevice();
+    method public int getPeriodicAdvertisingInterval();
+    method public int getPrimaryPhy();
+    method public int getRssi();
+    method @Nullable public android.bluetooth.le.ScanRecord getScanRecord();
+    method public int getSecondaryPhy();
+    method public long getTimestampNanos();
+    method public int getTxPower();
+    method public boolean isConnectable();
+    method public boolean isLegacy();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.ScanResult> CREATOR;
+    field public static final int DATA_COMPLETE = 0; // 0x0
+    field public static final int DATA_TRUNCATED = 2; // 0x2
+    field public static final int PERIODIC_INTERVAL_NOT_PRESENT = 0; // 0x0
+    field public static final int PHY_UNUSED = 0; // 0x0
+    field public static final int SID_NOT_PRESENT = 255; // 0xff
+    field public static final int TX_POWER_NOT_PRESENT = 127; // 0x7f
+  }
+
+  public final class ScanSettings implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getCallbackType();
+    method public boolean getLegacy();
+    method public int getPhy();
+    method public long getReportDelayMillis();
+    method public int getScanMode();
+    method public int getScanResultType();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int CALLBACK_TYPE_ALL_MATCHES = 1; // 0x1
+    field public static final int CALLBACK_TYPE_FIRST_MATCH = 2; // 0x2
+    field public static final int CALLBACK_TYPE_MATCH_LOST = 4; // 0x4
+    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.ScanSettings> CREATOR;
+    field public static final int MATCH_MODE_AGGRESSIVE = 1; // 0x1
+    field public static final int MATCH_MODE_STICKY = 2; // 0x2
+    field public static final int MATCH_NUM_FEW_ADVERTISEMENT = 2; // 0x2
+    field public static final int MATCH_NUM_MAX_ADVERTISEMENT = 3; // 0x3
+    field public static final int MATCH_NUM_ONE_ADVERTISEMENT = 1; // 0x1
+    field public static final int PHY_LE_ALL_SUPPORTED = 255; // 0xff
+    field public static final int SCAN_MODE_BALANCED = 1; // 0x1
+    field public static final int SCAN_MODE_LOW_LATENCY = 2; // 0x2
+    field public static final int SCAN_MODE_LOW_POWER = 0; // 0x0
+    field public static final int SCAN_MODE_OPPORTUNISTIC = -1; // 0xffffffff
+  }
+
+  public static final class ScanSettings.Builder {
+    ctor public ScanSettings.Builder();
+    method public android.bluetooth.le.ScanSettings build();
+    method public android.bluetooth.le.ScanSettings.Builder setCallbackType(int);
+    method public android.bluetooth.le.ScanSettings.Builder setLegacy(boolean);
+    method public android.bluetooth.le.ScanSettings.Builder setMatchMode(int);
+    method public android.bluetooth.le.ScanSettings.Builder setNumOfMatches(int);
+    method public android.bluetooth.le.ScanSettings.Builder setPhy(int);
+    method public android.bluetooth.le.ScanSettings.Builder setReportDelay(long);
+    method public android.bluetooth.le.ScanSettings.Builder setScanMode(int);
+  }
+
+}
+
+package android.companion {
+
+  public final class AssociationRequest implements android.os.Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.companion.AssociationRequest> CREATOR;
+  }
+
+  public static final class AssociationRequest.Builder {
+    ctor public AssociationRequest.Builder();
+    method @NonNull public android.companion.AssociationRequest.Builder addDeviceFilter(@Nullable android.companion.DeviceFilter<?>);
+    method @NonNull public android.companion.AssociationRequest build();
+    method @NonNull public android.companion.AssociationRequest.Builder setSingleDevice(boolean);
+  }
+
+  public final class BluetoothDeviceFilter implements android.companion.DeviceFilter<android.bluetooth.BluetoothDevice> {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.companion.BluetoothDeviceFilter> CREATOR;
+  }
+
+  public static final class BluetoothDeviceFilter.Builder {
+    ctor public BluetoothDeviceFilter.Builder();
+    method @NonNull public android.companion.BluetoothDeviceFilter.Builder addServiceUuid(@Nullable android.os.ParcelUuid, @Nullable android.os.ParcelUuid);
+    method @NonNull public android.companion.BluetoothDeviceFilter build();
+    method @NonNull public android.companion.BluetoothDeviceFilter.Builder setAddress(@Nullable String);
+    method public android.companion.BluetoothDeviceFilter.Builder setNamePattern(@Nullable java.util.regex.Pattern);
+  }
+
+  public final class BluetoothLeDeviceFilter implements android.companion.DeviceFilter<android.bluetooth.le.ScanResult> {
+    method public int describeContents();
+    method public static int getRenamePrefixLengthLimit();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.companion.BluetoothLeDeviceFilter> CREATOR;
+  }
+
+  public static final class BluetoothLeDeviceFilter.Builder {
+    ctor public BluetoothLeDeviceFilter.Builder();
+    method @NonNull public android.companion.BluetoothLeDeviceFilter build();
+    method public android.companion.BluetoothLeDeviceFilter.Builder setNamePattern(@Nullable java.util.regex.Pattern);
+    method @NonNull public android.companion.BluetoothLeDeviceFilter.Builder setRawDataFilter(@NonNull byte[], @Nullable byte[]);
+    method @NonNull public android.companion.BluetoothLeDeviceFilter.Builder setRenameFromBytes(@NonNull String, @NonNull String, int, int, java.nio.ByteOrder);
+    method @NonNull public android.companion.BluetoothLeDeviceFilter.Builder setRenameFromName(@NonNull String, @NonNull String, int, int);
+    method @NonNull public android.companion.BluetoothLeDeviceFilter.Builder setScanFilter(@Nullable android.bluetooth.le.ScanFilter);
+  }
+
+  public final class CompanionDeviceManager {
+    method public void associate(@NonNull android.companion.AssociationRequest, @NonNull android.companion.CompanionDeviceManager.Callback, @Nullable android.os.Handler);
+    method public void disassociate(@NonNull String);
+    method @NonNull public java.util.List<java.lang.String> getAssociations();
+    method public boolean hasNotificationAccess(android.content.ComponentName);
+    method public void requestNotificationAccess(android.content.ComponentName);
+    field public static final String EXTRA_DEVICE = "android.companion.extra.DEVICE";
+  }
+
+  public abstract static class CompanionDeviceManager.Callback {
+    ctor public CompanionDeviceManager.Callback();
+    method public abstract void onDeviceFound(android.content.IntentSender);
+    method public abstract void onFailure(CharSequence);
+  }
+
+  public interface DeviceFilter<D extends android.os.Parcelable> extends android.os.Parcelable {
+  }
+
+  public final class WifiDeviceFilter implements android.companion.DeviceFilter<android.net.wifi.ScanResult> {
+    method public int describeContents();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.companion.WifiDeviceFilter> CREATOR;
+  }
+
+  public static final class WifiDeviceFilter.Builder {
+    ctor public WifiDeviceFilter.Builder();
+    method @NonNull public android.companion.WifiDeviceFilter build();
+    method @NonNull public android.companion.WifiDeviceFilter.Builder setBssid(@NonNull android.net.MacAddress);
+    method @NonNull public android.companion.WifiDeviceFilter.Builder setBssidMask(@NonNull android.net.MacAddress);
+    method @NonNull public android.companion.WifiDeviceFilter.Builder setNamePattern(@Nullable java.util.regex.Pattern);
+  }
+
+}
+
+package android.content {
+
+  public abstract class AbstractThreadedSyncAdapter {
+    ctor public AbstractThreadedSyncAdapter(android.content.Context, boolean);
+    ctor public AbstractThreadedSyncAdapter(android.content.Context, boolean, boolean);
+    method public android.content.Context getContext();
+    method public final android.os.IBinder getSyncAdapterBinder();
+    method public abstract void onPerformSync(android.accounts.Account, android.os.Bundle, String, android.content.ContentProviderClient, android.content.SyncResult);
+    method public void onSecurityException(android.accounts.Account, android.os.Bundle, String, android.content.SyncResult);
+    method public void onSyncCanceled();
+    method public void onSyncCanceled(Thread);
+    method @MainThread public boolean onUnsyncableAccount();
+    field @Deprecated public static final int LOG_SYNC_DETAILS = 2743; // 0xab7
+  }
+
+  public class ActivityNotFoundException extends java.lang.RuntimeException {
+    ctor public ActivityNotFoundException();
+    ctor public ActivityNotFoundException(String);
+  }
+
+  public abstract class AsyncQueryHandler extends android.os.Handler {
+    ctor public AsyncQueryHandler(android.content.ContentResolver);
+    method public final void cancelOperation(int);
+    method protected android.os.Handler createHandler(android.os.Looper);
+    method protected void onDeleteComplete(int, Object, int);
+    method protected void onInsertComplete(int, Object, android.net.Uri);
+    method protected void onQueryComplete(int, Object, android.database.Cursor);
+    method protected void onUpdateComplete(int, Object, int);
+    method public final void startDelete(int, Object, android.net.Uri, String, String[]);
+    method public final void startInsert(int, Object, android.net.Uri, android.content.ContentValues);
+    method public void startQuery(int, Object, android.net.Uri, String[], String, String[], String);
+    method public final void startUpdate(int, Object, android.net.Uri, android.content.ContentValues, String, String[]);
+  }
+
+  protected static final class AsyncQueryHandler.WorkerArgs {
+    ctor protected AsyncQueryHandler.WorkerArgs();
+    field public Object cookie;
+    field public android.os.Handler handler;
+    field public String orderBy;
+    field public String[] projection;
+    field public Object result;
+    field public String selection;
+    field public String[] selectionArgs;
+    field public android.net.Uri uri;
+    field public android.content.ContentValues values;
+  }
+
+  protected class AsyncQueryHandler.WorkerHandler extends android.os.Handler {
+    ctor public AsyncQueryHandler.WorkerHandler(android.os.Looper);
+  }
+
+  @Deprecated public abstract class AsyncTaskLoader<D> extends android.content.Loader<D> {
+    ctor @Deprecated public AsyncTaskLoader(android.content.Context);
+    method @Deprecated public void cancelLoadInBackground();
+    method @Deprecated public boolean isLoadInBackgroundCanceled();
+    method @Deprecated public abstract D loadInBackground();
+    method @Deprecated public void onCanceled(D);
+    method @Deprecated protected D onLoadInBackground();
+    method @Deprecated public void setUpdateThrottle(long);
+  }
+
+  public abstract class BroadcastReceiver {
+    ctor public BroadcastReceiver();
+    method public final void abortBroadcast();
+    method public final void clearAbortBroadcast();
+    method public final boolean getAbortBroadcast();
+    method public final boolean getDebugUnregister();
+    method public final int getResultCode();
+    method public final String getResultData();
+    method public final android.os.Bundle getResultExtras(boolean);
+    method public final android.content.BroadcastReceiver.PendingResult goAsync();
+    method public final boolean isInitialStickyBroadcast();
+    method public final boolean isOrderedBroadcast();
+    method public abstract void onReceive(android.content.Context, android.content.Intent);
+    method public android.os.IBinder peekService(android.content.Context, android.content.Intent);
+    method public final void setDebugUnregister(boolean);
+    method public final void setOrderedHint(boolean);
+    method public final void setResult(int, String, android.os.Bundle);
+    method public final void setResultCode(int);
+    method public final void setResultData(String);
+    method public final void setResultExtras(android.os.Bundle);
+  }
+
+  public static class BroadcastReceiver.PendingResult {
+    method public final void abortBroadcast();
+    method public final void clearAbortBroadcast();
+    method public final void finish();
+    method public final boolean getAbortBroadcast();
+    method public final int getResultCode();
+    method public final String getResultData();
+    method public final android.os.Bundle getResultExtras(boolean);
+    method public final void setResult(int, String, android.os.Bundle);
+    method public final void setResultCode(int);
+    method public final void setResultData(String);
+    method public final void setResultExtras(android.os.Bundle);
+  }
+
+  public class ClipData implements android.os.Parcelable {
+    ctor public ClipData(CharSequence, String[], android.content.ClipData.Item);
+    ctor public ClipData(android.content.ClipDescription, android.content.ClipData.Item);
+    ctor public ClipData(android.content.ClipData);
+    method public void addItem(android.content.ClipData.Item);
+    method public void addItem(android.content.ContentResolver, android.content.ClipData.Item);
+    method public int describeContents();
+    method public android.content.ClipDescription getDescription();
+    method public android.content.ClipData.Item getItemAt(int);
+    method public int getItemCount();
+    method public static android.content.ClipData newHtmlText(CharSequence, CharSequence, String);
+    method public static android.content.ClipData newIntent(CharSequence, android.content.Intent);
+    method public static android.content.ClipData newPlainText(CharSequence, CharSequence);
+    method public static android.content.ClipData newRawUri(CharSequence, android.net.Uri);
+    method public static android.content.ClipData newUri(android.content.ContentResolver, CharSequence, android.net.Uri);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.ClipData> CREATOR;
+  }
+
+  public static class ClipData.Item {
+    ctor public ClipData.Item(CharSequence);
+    ctor public ClipData.Item(CharSequence, String);
+    ctor public ClipData.Item(android.content.Intent);
+    ctor public ClipData.Item(android.net.Uri);
+    ctor public ClipData.Item(CharSequence, android.content.Intent, android.net.Uri);
+    ctor public ClipData.Item(CharSequence, String, android.content.Intent, android.net.Uri);
+    method public String coerceToHtmlText(android.content.Context);
+    method public CharSequence coerceToStyledText(android.content.Context);
+    method public CharSequence coerceToText(android.content.Context);
+    method public String getHtmlText();
+    method public android.content.Intent getIntent();
+    method public CharSequence getText();
+    method public android.net.Uri getUri();
+  }
+
+  public class ClipDescription implements android.os.Parcelable {
+    ctor public ClipDescription(CharSequence, String[]);
+    ctor public ClipDescription(android.content.ClipDescription);
+    method public static boolean compareMimeTypes(String, String);
+    method public int describeContents();
+    method public String[] filterMimeTypes(String);
+    method public android.os.PersistableBundle getExtras();
+    method public CharSequence getLabel();
+    method public String getMimeType(int);
+    method public int getMimeTypeCount();
+    method public long getTimestamp();
+    method public boolean hasMimeType(String);
+    method public void setExtras(android.os.PersistableBundle);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.ClipDescription> CREATOR;
+    field public static final String MIMETYPE_TEXT_HTML = "text/html";
+    field public static final String MIMETYPE_TEXT_INTENT = "text/vnd.android.intent";
+    field public static final String MIMETYPE_TEXT_PLAIN = "text/plain";
+    field public static final String MIMETYPE_TEXT_URILIST = "text/uri-list";
+    field public static final String MIMETYPE_UNKNOWN = "application/octet-stream";
+  }
+
+  public class ClipboardManager extends android.text.ClipboardManager {
+    method public void addPrimaryClipChangedListener(android.content.ClipboardManager.OnPrimaryClipChangedListener);
+    method public void clearPrimaryClip();
+    method @Nullable public android.content.ClipData getPrimaryClip();
+    method @Nullable public android.content.ClipDescription getPrimaryClipDescription();
+    method @Deprecated public CharSequence getText();
+    method public boolean hasPrimaryClip();
+    method @Deprecated public boolean hasText();
+    method public void removePrimaryClipChangedListener(android.content.ClipboardManager.OnPrimaryClipChangedListener);
+    method public void setPrimaryClip(@NonNull android.content.ClipData);
+    method @Deprecated public void setText(CharSequence);
+  }
+
+  public static interface ClipboardManager.OnPrimaryClipChangedListener {
+    method public void onPrimaryClipChanged();
+  }
+
+  public interface ComponentCallbacks {
+    method public void onConfigurationChanged(@NonNull android.content.res.Configuration);
+    method public void onLowMemory();
+  }
+
+  public interface ComponentCallbacks2 extends android.content.ComponentCallbacks {
+    method public void onTrimMemory(int);
+    field public static final int TRIM_MEMORY_BACKGROUND = 40; // 0x28
+    field public static final int TRIM_MEMORY_COMPLETE = 80; // 0x50
+    field public static final int TRIM_MEMORY_MODERATE = 60; // 0x3c
+    field public static final int TRIM_MEMORY_RUNNING_CRITICAL = 15; // 0xf
+    field public static final int TRIM_MEMORY_RUNNING_LOW = 10; // 0xa
+    field public static final int TRIM_MEMORY_RUNNING_MODERATE = 5; // 0x5
+    field public static final int TRIM_MEMORY_UI_HIDDEN = 20; // 0x14
+  }
+
+  public final class ComponentName implements java.lang.Cloneable java.lang.Comparable<android.content.ComponentName> android.os.Parcelable {
+    ctor public ComponentName(@NonNull String, @NonNull String);
+    ctor public ComponentName(@NonNull android.content.Context, @NonNull String);
+    ctor public ComponentName(@NonNull android.content.Context, @NonNull Class<?>);
+    ctor public ComponentName(android.os.Parcel);
+    method public android.content.ComponentName clone();
+    method public int compareTo(android.content.ComponentName);
+    method @NonNull public static android.content.ComponentName createRelative(@NonNull String, @NonNull String);
+    method @NonNull public static android.content.ComponentName createRelative(@NonNull android.content.Context, @NonNull String);
+    method public int describeContents();
+    method @NonNull public String flattenToShortString();
+    method @NonNull public String flattenToString();
+    method @NonNull public String getClassName();
+    method @NonNull public String getPackageName();
+    method public String getShortClassName();
+    method public static android.content.ComponentName readFromParcel(android.os.Parcel);
+    method public String toShortString();
+    method @Nullable public static android.content.ComponentName unflattenFromString(@NonNull String);
+    method public void writeToParcel(android.os.Parcel, int);
+    method public static void writeToParcel(android.content.ComponentName, android.os.Parcel);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.ComponentName> CREATOR;
+  }
+
+  public abstract class ContentProvider implements android.content.ComponentCallbacks2 {
+    ctor public ContentProvider();
+    method @NonNull public android.content.ContentProviderResult[] applyBatch(@NonNull String, @NonNull java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException;
+    method @NonNull public android.content.ContentProviderResult[] applyBatch(@NonNull java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException;
+    method public void attachInfo(android.content.Context, android.content.pm.ProviderInfo);
+    method public int bulkInsert(@NonNull android.net.Uri, @NonNull android.content.ContentValues[]);
+    method @Nullable public android.os.Bundle call(@NonNull String, @NonNull String, @Nullable String, @Nullable android.os.Bundle);
+    method @Nullable public android.os.Bundle call(@NonNull String, @Nullable String, @Nullable android.os.Bundle);
+    method @Nullable public android.net.Uri canonicalize(@NonNull android.net.Uri);
+    method @NonNull public final android.content.ContentProvider.CallingIdentity clearCallingIdentity();
+    method public abstract int delete(@NonNull android.net.Uri, @Nullable String, @Nullable String[]);
+    method public int delete(@NonNull android.net.Uri, @Nullable android.os.Bundle);
+    method public void dump(java.io.FileDescriptor, java.io.PrintWriter, String[]);
+    method @Nullable public final String getCallingAttributionTag();
+    method @Nullable public final String getCallingPackage();
+    method @Nullable public final String getCallingPackageUnchecked();
+    method @Nullable public final android.content.Context getContext();
+    method @Nullable public final android.content.pm.PathPermission[] getPathPermissions();
+    method @Nullable public final String getReadPermission();
+    method @Nullable public String[] getStreamTypes(@NonNull android.net.Uri, @NonNull String);
+    method @Nullable public abstract String getType(@NonNull android.net.Uri);
+    method @Nullable public final String getWritePermission();
+    method @Nullable public abstract android.net.Uri insert(@NonNull android.net.Uri, @Nullable android.content.ContentValues);
+    method @Nullable public android.net.Uri insert(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable android.os.Bundle);
+    method protected boolean isTemporary();
+    method public void onCallingPackageChanged();
+    method public void onConfigurationChanged(android.content.res.Configuration);
+    method public abstract boolean onCreate();
+    method public void onLowMemory();
+    method public void onTrimMemory(int);
+    method @Nullable public android.content.res.AssetFileDescriptor openAssetFile(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
+    method @Nullable public android.content.res.AssetFileDescriptor openAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
+    method @Nullable public android.os.ParcelFileDescriptor openFile(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
+    method @Nullable public android.os.ParcelFileDescriptor openFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
+    method @NonNull protected final android.os.ParcelFileDescriptor openFileHelper(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
+    method @NonNull public <T> android.os.ParcelFileDescriptor openPipeHelper(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable T, @NonNull android.content.ContentProvider.PipeDataWriter<T>) throws java.io.FileNotFoundException;
+    method @Nullable public android.content.res.AssetFileDescriptor openTypedAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle) throws java.io.FileNotFoundException;
+    method @Nullable public android.content.res.AssetFileDescriptor openTypedAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
+    method @Nullable public abstract android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String);
+    method @Nullable public android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String, @Nullable android.os.CancellationSignal);
+    method @Nullable public android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal);
+    method public boolean refresh(android.net.Uri, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal);
+    method @NonNull public final android.content.Context requireContext();
+    method public final void restoreCallingIdentity(@NonNull android.content.ContentProvider.CallingIdentity);
+    method protected final void setPathPermissions(@Nullable android.content.pm.PathPermission[]);
+    method protected final void setReadPermission(@Nullable String);
+    method protected final void setWritePermission(@Nullable String);
+    method public void shutdown();
+    method @Nullable public android.net.Uri uncanonicalize(@NonNull android.net.Uri);
+    method public abstract int update(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable String, @Nullable String[]);
+    method public int update(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable android.os.Bundle);
+  }
+
+  public final class ContentProvider.CallingIdentity {
+  }
+
+  public static interface ContentProvider.PipeDataWriter<T> {
+    method public void writeDataToPipe(@NonNull android.os.ParcelFileDescriptor, @NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable T);
+  }
+
+  public class ContentProviderClient implements java.lang.AutoCloseable {
+    method @NonNull public android.content.ContentProviderResult[] applyBatch(@NonNull java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException, android.os.RemoteException;
+    method @NonNull public android.content.ContentProviderResult[] applyBatch(@NonNull String, @NonNull java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException, android.os.RemoteException;
+    method public int bulkInsert(@NonNull android.net.Uri, @NonNull android.content.ContentValues[]) throws android.os.RemoteException;
+    method @Nullable public android.os.Bundle call(@NonNull String, @Nullable String, @Nullable android.os.Bundle) throws android.os.RemoteException;
+    method @Nullable public android.os.Bundle call(@NonNull String, @NonNull String, @Nullable String, @Nullable android.os.Bundle) throws android.os.RemoteException;
+    method @Nullable public final android.net.Uri canonicalize(@NonNull android.net.Uri) throws android.os.RemoteException;
+    method public void close();
+    method public int delete(@NonNull android.net.Uri, @Nullable String, @Nullable String[]) throws android.os.RemoteException;
+    method public int delete(@NonNull android.net.Uri, @Nullable android.os.Bundle) throws android.os.RemoteException;
+    method @Nullable public android.content.ContentProvider getLocalContentProvider();
+    method @Nullable public String[] getStreamTypes(@NonNull android.net.Uri, @NonNull String) throws android.os.RemoteException;
+    method @Nullable public String getType(@NonNull android.net.Uri) throws android.os.RemoteException;
+    method @Nullable public android.net.Uri insert(@NonNull android.net.Uri, @Nullable android.content.ContentValues) throws android.os.RemoteException;
+    method @Nullable public android.net.Uri insert(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable android.os.Bundle) throws android.os.RemoteException;
+    method @Nullable public android.content.res.AssetFileDescriptor openAssetFile(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException, android.os.RemoteException;
+    method @Nullable public android.content.res.AssetFileDescriptor openAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
+    method @Nullable public android.os.ParcelFileDescriptor openFile(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException, android.os.RemoteException;
+    method @Nullable public android.os.ParcelFileDescriptor openFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
+    method @Nullable public final android.content.res.AssetFileDescriptor openTypedAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
+    method @Nullable public final android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle) throws java.io.FileNotFoundException, android.os.RemoteException;
+    method @Nullable public final android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
+    method @Nullable public android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String) throws android.os.RemoteException;
+    method @Nullable public android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String, @Nullable android.os.CancellationSignal) throws android.os.RemoteException;
+    method @Nullable public android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], android.os.Bundle, @Nullable android.os.CancellationSignal) throws android.os.RemoteException;
+    method public boolean refresh(android.net.Uri, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws android.os.RemoteException;
+    method @Deprecated public boolean release();
+    method @Nullable public final android.net.Uri uncanonicalize(@NonNull android.net.Uri) throws android.os.RemoteException;
+    method public int update(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable String, @Nullable String[]) throws android.os.RemoteException;
+    method public int update(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable android.os.Bundle) throws android.os.RemoteException;
+  }
+
+  public class ContentProviderOperation implements android.os.Parcelable {
+    method @NonNull public android.content.ContentProviderResult apply(@NonNull android.content.ContentProvider, @NonNull android.content.ContentProviderResult[], int) throws android.content.OperationApplicationException;
+    method public int describeContents();
+    method @NonNull public android.net.Uri getUri();
+    method public boolean isAssertQuery();
+    method public boolean isCall();
+    method public boolean isDelete();
+    method public boolean isExceptionAllowed();
+    method public boolean isInsert();
+    method public boolean isReadOperation();
+    method public boolean isUpdate();
+    method public boolean isWriteOperation();
+    method public boolean isYieldAllowed();
+    method @NonNull public static android.content.ContentProviderOperation.Builder newAssertQuery(@NonNull android.net.Uri);
+    method @NonNull public static android.content.ContentProviderOperation.Builder newCall(@NonNull android.net.Uri, @Nullable String, @Nullable String);
+    method @NonNull public static android.content.ContentProviderOperation.Builder newDelete(@NonNull android.net.Uri);
+    method @NonNull public static android.content.ContentProviderOperation.Builder newInsert(@NonNull android.net.Uri);
+    method @NonNull public static android.content.ContentProviderOperation.Builder newUpdate(@NonNull android.net.Uri);
+    method @Nullable public android.os.Bundle resolveExtrasBackReferences(@NonNull android.content.ContentProviderResult[], int);
+    method @Nullable public String[] resolveSelectionArgsBackReferences(@NonNull android.content.ContentProviderResult[], int);
+    method @Nullable public android.content.ContentValues resolveValueBackReferences(@NonNull android.content.ContentProviderResult[], int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.ContentProviderOperation> CREATOR;
+  }
+
+  public static class ContentProviderOperation.Builder {
+    method @NonNull public android.content.ContentProviderOperation build();
+    method @NonNull public android.content.ContentProviderOperation.Builder withExceptionAllowed(boolean);
+    method @NonNull public android.content.ContentProviderOperation.Builder withExpectedCount(int);
+    method @NonNull public android.content.ContentProviderOperation.Builder withExtra(@NonNull String, @Nullable Object);
+    method @NonNull public android.content.ContentProviderOperation.Builder withExtraBackReference(@NonNull String, int);
+    method @NonNull public android.content.ContentProviderOperation.Builder withExtraBackReference(@NonNull String, int, @NonNull String);
+    method @NonNull public android.content.ContentProviderOperation.Builder withExtras(@NonNull android.os.Bundle);
+    method @NonNull public android.content.ContentProviderOperation.Builder withSelection(@Nullable String, @Nullable String[]);
+    method @NonNull public android.content.ContentProviderOperation.Builder withSelectionBackReference(int, int);
+    method @NonNull public android.content.ContentProviderOperation.Builder withSelectionBackReference(int, int, @NonNull String);
+    method @NonNull public android.content.ContentProviderOperation.Builder withValue(@NonNull String, @Nullable Object);
+    method @NonNull public android.content.ContentProviderOperation.Builder withValueBackReference(@NonNull String, int);
+    method @NonNull public android.content.ContentProviderOperation.Builder withValueBackReference(@NonNull String, int, @NonNull String);
+    method @NonNull public android.content.ContentProviderOperation.Builder withValueBackReferences(@NonNull android.content.ContentValues);
+    method @NonNull public android.content.ContentProviderOperation.Builder withValues(@NonNull android.content.ContentValues);
+    method @NonNull public android.content.ContentProviderOperation.Builder withYieldAllowed(boolean);
+  }
+
+  public class ContentProviderResult implements android.os.Parcelable {
+    ctor public ContentProviderResult(@NonNull android.net.Uri);
+    ctor public ContentProviderResult(int);
+    ctor public ContentProviderResult(@NonNull android.os.Bundle);
+    ctor public ContentProviderResult(@NonNull Throwable);
+    ctor public ContentProviderResult(android.os.Parcel);
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.ContentProviderResult> CREATOR;
+    field @Nullable public final Integer count;
+    field @Nullable public final Throwable exception;
+    field @Nullable public final android.os.Bundle extras;
+    field @Nullable public final android.net.Uri uri;
+  }
+
+  public class ContentQueryMap extends java.util.Observable {
+    ctor public ContentQueryMap(android.database.Cursor, String, boolean, android.os.Handler);
+    method public void close();
+    method public java.util.Map<java.lang.String,android.content.ContentValues> getRows();
+    method public android.content.ContentValues getValues(String);
+    method public void requery();
+    method public void setKeepUpdated(boolean);
+  }
+
+  public abstract class ContentResolver {
+    ctor public ContentResolver(@Nullable android.content.Context);
+    method @Nullable public final android.content.ContentProviderClient acquireContentProviderClient(@NonNull android.net.Uri);
+    method @Nullable public final android.content.ContentProviderClient acquireContentProviderClient(@NonNull String);
+    method @Nullable public final android.content.ContentProviderClient acquireUnstableContentProviderClient(@NonNull android.net.Uri);
+    method @Nullable public final android.content.ContentProviderClient acquireUnstableContentProviderClient(@NonNull String);
+    method public static void addPeriodicSync(android.accounts.Account, String, android.os.Bundle, long);
+    method public static Object addStatusChangeListener(int, android.content.SyncStatusObserver);
+    method @NonNull public android.content.ContentProviderResult[] applyBatch(@NonNull String, @NonNull java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException, android.os.RemoteException;
+    method public final int bulkInsert(@NonNull @RequiresPermission.Write android.net.Uri, @NonNull android.content.ContentValues[]);
+    method @Nullable public final android.os.Bundle call(@NonNull android.net.Uri, @NonNull String, @Nullable String, @Nullable android.os.Bundle);
+    method @Nullable public final android.os.Bundle call(@NonNull String, @NonNull String, @Nullable String, @Nullable android.os.Bundle);
+    method @Deprecated public void cancelSync(android.net.Uri);
+    method public static void cancelSync(android.accounts.Account, String);
+    method public static void cancelSync(android.content.SyncRequest);
+    method @Nullable public final android.net.Uri canonicalize(@NonNull android.net.Uri);
+    method public final int delete(@NonNull @RequiresPermission.Write android.net.Uri, @Nullable String, @Nullable String[]);
+    method public final int delete(@NonNull @RequiresPermission.Write android.net.Uri, @Nullable android.os.Bundle);
+    method @Deprecated public static android.content.SyncInfo getCurrentSync();
+    method public static java.util.List<android.content.SyncInfo> getCurrentSyncs();
+    method public static int getIsSyncable(android.accounts.Account, String);
+    method public static boolean getMasterSyncAutomatically();
+    method @NonNull public java.util.List<android.content.UriPermission> getOutgoingPersistedUriPermissions();
+    method public static java.util.List<android.content.PeriodicSync> getPeriodicSyncs(android.accounts.Account, String);
+    method @NonNull public java.util.List<android.content.UriPermission> getPersistedUriPermissions();
+    method @Nullable public String[] getStreamTypes(@NonNull android.net.Uri, @NonNull String);
+    method public static android.content.SyncAdapterType[] getSyncAdapterTypes();
+    method public static boolean getSyncAutomatically(android.accounts.Account, String);
+    method @Nullable public final String getType(@NonNull android.net.Uri);
+    method @NonNull public final android.content.ContentResolver.MimeTypeInfo getTypeInfo(@NonNull String);
+    method @Nullable public final android.net.Uri insert(@NonNull @RequiresPermission.Write android.net.Uri, @Nullable android.content.ContentValues);
+    method @Nullable public final android.net.Uri insert(@NonNull @RequiresPermission.Write android.net.Uri, @Nullable android.content.ContentValues, @Nullable android.os.Bundle);
+    method public static boolean isSyncActive(android.accounts.Account, String);
+    method public static boolean isSyncPending(android.accounts.Account, String);
+    method @NonNull public android.graphics.Bitmap loadThumbnail(@NonNull android.net.Uri, @NonNull android.util.Size, @Nullable android.os.CancellationSignal) throws java.io.IOException;
+    method public void notifyChange(@NonNull android.net.Uri, @Nullable android.database.ContentObserver);
+    method @Deprecated public void notifyChange(@NonNull android.net.Uri, @Nullable android.database.ContentObserver, boolean);
+    method public void notifyChange(@NonNull android.net.Uri, @Nullable android.database.ContentObserver, int);
+    method public void notifyChange(@NonNull java.util.Collection<android.net.Uri>, @Nullable android.database.ContentObserver, int);
+    method @Nullable public final android.content.res.AssetFileDescriptor openAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
+    method @Nullable public final android.content.res.AssetFileDescriptor openAssetFileDescriptor(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
+    method @Nullable public final android.content.res.AssetFileDescriptor openAssetFileDescriptor(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
+    method @Nullable public final android.os.ParcelFileDescriptor openFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
+    method @Nullable public final android.os.ParcelFileDescriptor openFileDescriptor(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
+    method @Nullable public final android.os.ParcelFileDescriptor openFileDescriptor(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
+    method @Nullable public final java.io.InputStream openInputStream(@NonNull android.net.Uri) throws java.io.FileNotFoundException;
+    method @Nullable public final java.io.OutputStream openOutputStream(@NonNull android.net.Uri) throws java.io.FileNotFoundException;
+    method @Nullable public final java.io.OutputStream openOutputStream(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
+    method @Nullable public final android.content.res.AssetFileDescriptor openTypedAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
+    method @Nullable public final android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle) throws java.io.FileNotFoundException;
+    method @Nullable public final android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
+    method @Nullable public final android.database.Cursor query(@NonNull @RequiresPermission.Read android.net.Uri, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String);
+    method @Nullable public final android.database.Cursor query(@NonNull @RequiresPermission.Read android.net.Uri, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String, @Nullable android.os.CancellationSignal);
+    method @Nullable public final android.database.Cursor query(@NonNull @RequiresPermission.Read android.net.Uri, @Nullable String[], @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal);
+    method public final boolean refresh(@NonNull android.net.Uri, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal);
+    method public final void registerContentObserver(@NonNull android.net.Uri, boolean, @NonNull android.database.ContentObserver);
+    method public void releasePersistableUriPermission(@NonNull android.net.Uri, int);
+    method public static void removePeriodicSync(android.accounts.Account, String, android.os.Bundle);
+    method public static void removeStatusChangeListener(Object);
+    method public static void requestSync(android.accounts.Account, String, android.os.Bundle);
+    method public static void requestSync(android.content.SyncRequest);
+    method public static void setIsSyncable(android.accounts.Account, String, int);
+    method public static void setMasterSyncAutomatically(boolean);
+    method public static void setSyncAutomatically(android.accounts.Account, String, boolean);
+    method @Deprecated public void startSync(android.net.Uri, android.os.Bundle);
+    method public void takePersistableUriPermission(@NonNull android.net.Uri, int);
+    method @Nullable public final android.net.Uri uncanonicalize(@NonNull android.net.Uri);
+    method public final void unregisterContentObserver(@NonNull android.database.ContentObserver);
+    method public final int update(@NonNull @RequiresPermission.Write android.net.Uri, @Nullable android.content.ContentValues, @Nullable String, @Nullable String[]);
+    method public final int update(@NonNull @RequiresPermission.Write android.net.Uri, @Nullable android.content.ContentValues, @Nullable android.os.Bundle);
+    method public static void validateSyncExtrasBundle(android.os.Bundle);
+    method @NonNull public static android.content.ContentResolver wrap(@NonNull android.content.ContentProvider);
+    method @NonNull public static android.content.ContentResolver wrap(@NonNull android.content.ContentProviderClient);
+    field public static final String ANY_CURSOR_ITEM_TYPE = "vnd.android.cursor.item/*";
+    field public static final String CURSOR_DIR_BASE_TYPE = "vnd.android.cursor.dir";
+    field public static final String CURSOR_ITEM_BASE_TYPE = "vnd.android.cursor.item";
+    field public static final String EXTRA_HONORED_ARGS = "android.content.extra.HONORED_ARGS";
+    field public static final String EXTRA_REFRESH_SUPPORTED = "android.content.extra.REFRESH_SUPPORTED";
+    field public static final String EXTRA_SIZE = "android.content.extra.SIZE";
+    field public static final String EXTRA_TOTAL_COUNT = "android.content.extra.TOTAL_COUNT";
+    field public static final int NOTIFY_DELETE = 16; // 0x10
+    field public static final int NOTIFY_INSERT = 4; // 0x4
+    field public static final int NOTIFY_SKIP_NOTIFY_FOR_DESCENDANTS = 2; // 0x2
+    field public static final int NOTIFY_SYNC_TO_NETWORK = 1; // 0x1
+    field public static final int NOTIFY_UPDATE = 8; // 0x8
+    field public static final String QUERY_ARG_GROUP_COLUMNS = "android:query-arg-group-columns";
+    field public static final String QUERY_ARG_LIMIT = "android:query-arg-limit";
+    field public static final String QUERY_ARG_OFFSET = "android:query-arg-offset";
+    field public static final String QUERY_ARG_SORT_COLLATION = "android:query-arg-sort-collation";
+    field public static final String QUERY_ARG_SORT_COLUMNS = "android:query-arg-sort-columns";
+    field public static final String QUERY_ARG_SORT_DIRECTION = "android:query-arg-sort-direction";
+    field public static final String QUERY_ARG_SORT_LOCALE = "android:query-arg-sort-locale";
+    field public static final String QUERY_ARG_SQL_GROUP_BY = "android:query-arg-sql-group-by";
+    field public static final String QUERY_ARG_SQL_HAVING = "android:query-arg-sql-having";
+    field public static final String QUERY_ARG_SQL_LIMIT = "android:query-arg-sql-limit";
+    field public static final String QUERY_ARG_SQL_SELECTION = "android:query-arg-sql-selection";
+    field public static final String QUERY_ARG_SQL_SELECTION_ARGS = "android:query-arg-sql-selection-args";
+    field public static final String QUERY_ARG_SQL_SORT_ORDER = "android:query-arg-sql-sort-order";
+    field public static final int QUERY_SORT_DIRECTION_ASCENDING = 0; // 0x0
+    field public static final int QUERY_SORT_DIRECTION_DESCENDING = 1; // 0x1
+    field public static final String SCHEME_ANDROID_RESOURCE = "android.resource";
+    field public static final String SCHEME_CONTENT = "content";
+    field public static final String SCHEME_FILE = "file";
+    field @Deprecated public static final String SYNC_EXTRAS_ACCOUNT = "account";
+    field public static final String SYNC_EXTRAS_DISCARD_LOCAL_DELETIONS = "discard_deletions";
+    field public static final String SYNC_EXTRAS_DO_NOT_RETRY = "do_not_retry";
+    field public static final String SYNC_EXTRAS_EXPEDITED = "expedited";
+    field @Deprecated public static final String SYNC_EXTRAS_FORCE = "force";
+    field public static final String SYNC_EXTRAS_IGNORE_BACKOFF = "ignore_backoff";
+    field public static final String SYNC_EXTRAS_IGNORE_SETTINGS = "ignore_settings";
+    field public static final String SYNC_EXTRAS_INITIALIZE = "initialize";
+    field public static final String SYNC_EXTRAS_MANUAL = "force";
+    field public static final String SYNC_EXTRAS_OVERRIDE_TOO_MANY_DELETIONS = "deletions_override";
+    field public static final String SYNC_EXTRAS_REQUIRE_CHARGING = "require_charging";
+    field public static final String SYNC_EXTRAS_UPLOAD = "upload";
+    field public static final int SYNC_OBSERVER_TYPE_ACTIVE = 4; // 0x4
+    field public static final int SYNC_OBSERVER_TYPE_PENDING = 2; // 0x2
+    field public static final int SYNC_OBSERVER_TYPE_SETTINGS = 1; // 0x1
+  }
+
+  public static final class ContentResolver.MimeTypeInfo {
+    method @NonNull public CharSequence getContentDescription();
+    method @NonNull public android.graphics.drawable.Icon getIcon();
+    method @NonNull public CharSequence getLabel();
+  }
+
+  public class ContentUris {
+    ctor public ContentUris();
+    method @NonNull public static android.net.Uri.Builder appendId(@NonNull android.net.Uri.Builder, long);
+    method public static long parseId(@NonNull android.net.Uri);
+    method @NonNull public static android.net.Uri removeId(@NonNull android.net.Uri);
+    method @NonNull public static android.net.Uri withAppendedId(@NonNull android.net.Uri, long);
+  }
+
+  public final class ContentValues implements android.os.Parcelable {
+    ctor public ContentValues();
+    ctor public ContentValues(int);
+    ctor public ContentValues(android.content.ContentValues);
+    method public void clear();
+    method public boolean containsKey(String);
+    method public int describeContents();
+    method public Object get(String);
+    method public Boolean getAsBoolean(String);
+    method public Byte getAsByte(String);
+    method public byte[] getAsByteArray(String);
+    method public Double getAsDouble(String);
+    method public Float getAsFloat(String);
+    method public Integer getAsInteger(String);
+    method public Long getAsLong(String);
+    method public Short getAsShort(String);
+    method public String getAsString(String);
+    method public boolean isEmpty();
+    method public java.util.Set<java.lang.String> keySet();
+    method public void put(String, String);
+    method public void put(String, Byte);
+    method public void put(String, Short);
+    method public void put(String, Integer);
+    method public void put(String, Long);
+    method public void put(String, Float);
+    method public void put(String, Double);
+    method public void put(String, Boolean);
+    method public void put(String, byte[]);
+    method public void putAll(android.content.ContentValues);
+    method public void putNull(String);
+    method public void remove(String);
+    method public int size();
+    method public java.util.Set<java.util.Map.Entry<java.lang.String,java.lang.Object>> valueSet();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.ContentValues> CREATOR;
+    field public static final String TAG = "ContentValues";
+  }
+
+  public abstract class Context {
+    ctor public Context();
+    method public boolean bindIsolatedService(@NonNull @RequiresPermission android.content.Intent, int, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.content.ServiceConnection);
+    method public abstract boolean bindService(@RequiresPermission android.content.Intent, @NonNull android.content.ServiceConnection, int);
+    method public boolean bindService(@NonNull @RequiresPermission android.content.Intent, int, @NonNull java.util.concurrent.Executor, @NonNull android.content.ServiceConnection);
+    method @RequiresPermission(anyOf={"android.permission.INTERACT_ACROSS_USERS", android.Manifest.permission.INTERACT_ACROSS_PROFILES}) public boolean bindServiceAsUser(@NonNull @RequiresPermission android.content.Intent, @NonNull android.content.ServiceConnection, int, @NonNull android.os.UserHandle);
+    method @CheckResult(suggest="#enforceCallingOrSelfPermission(String,String)") public abstract int checkCallingOrSelfPermission(@NonNull String);
+    method @CheckResult(suggest="#enforceCallingOrSelfUriPermission(Uri,int,String)") public abstract int checkCallingOrSelfUriPermission(android.net.Uri, int);
+    method @CheckResult(suggest="#enforceCallingPermission(String,String)") public abstract int checkCallingPermission(@NonNull String);
+    method @CheckResult(suggest="#enforceCallingUriPermission(Uri,int,String)") public abstract int checkCallingUriPermission(android.net.Uri, int);
+    method @CheckResult(suggest="#enforcePermission(String,int,int,String)") public abstract int checkPermission(@NonNull String, int, int);
+    method public abstract int checkSelfPermission(@NonNull String);
+    method @CheckResult(suggest="#enforceUriPermission(Uri,int,int,String)") public abstract int checkUriPermission(android.net.Uri, int, int, int);
+    method @CheckResult(suggest="#enforceUriPermission(Uri,String,String,int,int,int,String)") public abstract int checkUriPermission(@Nullable android.net.Uri, @Nullable String, @Nullable String, int, int, int);
+    method @Deprecated public abstract void clearWallpaper() throws java.io.IOException;
+    method @NonNull public android.content.Context createAttributionContext(@Nullable String);
+    method public abstract android.content.Context createConfigurationContext(@NonNull android.content.res.Configuration);
+    method public abstract android.content.Context createContextForSplit(String) throws android.content.pm.PackageManager.NameNotFoundException;
+    method public abstract android.content.Context createDeviceProtectedStorageContext();
+    method public abstract android.content.Context createDisplayContext(@NonNull android.view.Display);
+    method public abstract android.content.Context createPackageContext(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @NonNull public android.content.Context createWindowContext(int, @Nullable android.os.Bundle);
+    method public abstract String[] databaseList();
+    method public abstract boolean deleteDatabase(String);
+    method public abstract boolean deleteFile(String);
+    method public abstract boolean deleteSharedPreferences(String);
+    method public abstract void enforceCallingOrSelfPermission(@NonNull String, @Nullable String);
+    method public abstract void enforceCallingOrSelfUriPermission(android.net.Uri, int, String);
+    method public abstract void enforceCallingPermission(@NonNull String, @Nullable String);
+    method public abstract void enforceCallingUriPermission(android.net.Uri, int, String);
+    method public abstract void enforcePermission(@NonNull String, int, int, @Nullable String);
+    method public abstract void enforceUriPermission(android.net.Uri, int, int, int, String);
+    method public abstract void enforceUriPermission(@Nullable android.net.Uri, @Nullable String, @Nullable String, int, int, int, @Nullable String);
+    method public abstract String[] fileList();
+    method public abstract android.content.Context getApplicationContext();
+    method public abstract android.content.pm.ApplicationInfo getApplicationInfo();
+    method public abstract android.content.res.AssetManager getAssets();
+    method @Nullable public String getAttributionTag();
+    method public abstract java.io.File getCacheDir();
+    method public abstract ClassLoader getClassLoader();
+    method public abstract java.io.File getCodeCacheDir();
+    method @ColorInt public final int getColor(@ColorRes int);
+    method @NonNull public final android.content.res.ColorStateList getColorStateList(@ColorRes int);
+    method public abstract android.content.ContentResolver getContentResolver();
+    method public abstract java.io.File getDataDir();
+    method public abstract java.io.File getDatabasePath(String);
+    method public abstract java.io.File getDir(String, int);
+    method @Nullable public android.view.Display getDisplay();
+    method @Nullable public final android.graphics.drawable.Drawable getDrawable(@DrawableRes int);
+    method @Nullable public abstract java.io.File getExternalCacheDir();
+    method public abstract java.io.File[] getExternalCacheDirs();
+    method @Nullable public abstract java.io.File getExternalFilesDir(@Nullable String);
+    method public abstract java.io.File[] getExternalFilesDirs(String);
+    method @Deprecated public abstract java.io.File[] getExternalMediaDirs();
+    method public abstract java.io.File getFileStreamPath(String);
+    method public abstract java.io.File getFilesDir();
+    method public java.util.concurrent.Executor getMainExecutor();
+    method public abstract android.os.Looper getMainLooper();
+    method public abstract java.io.File getNoBackupFilesDir();
+    method public abstract java.io.File getObbDir();
+    method public abstract java.io.File[] getObbDirs();
+    method @NonNull public String getOpPackageName();
+    method public abstract String getPackageCodePath();
+    method public abstract android.content.pm.PackageManager getPackageManager();
+    method public abstract String getPackageName();
+    method public abstract String getPackageResourcePath();
+    method public abstract android.content.res.Resources getResources();
+    method public abstract android.content.SharedPreferences getSharedPreferences(String, int);
+    method @NonNull public final String getString(@StringRes int);
+    method @NonNull public final String getString(@StringRes int, java.lang.Object...);
+    method public abstract Object getSystemService(@NonNull String);
+    method public final <T> T getSystemService(@NonNull Class<T>);
+    method @Nullable public abstract String getSystemServiceName(@NonNull Class<?>);
+    method @NonNull public final CharSequence getText(@StringRes int);
+    method public abstract android.content.res.Resources.Theme getTheme();
+    method @Deprecated public abstract android.graphics.drawable.Drawable getWallpaper();
+    method @Deprecated public abstract int getWallpaperDesiredMinimumHeight();
+    method @Deprecated public abstract int getWallpaperDesiredMinimumWidth();
+    method public abstract void grantUriPermission(String, android.net.Uri, int);
+    method public abstract boolean isDeviceProtectedStorage();
+    method public boolean isRestricted();
+    method public abstract boolean moveDatabaseFrom(android.content.Context, String);
+    method public abstract boolean moveSharedPreferencesFrom(android.content.Context, String);
+    method @NonNull public final android.content.res.TypedArray obtainStyledAttributes(@NonNull @StyleableRes int[]);
+    method @NonNull public final android.content.res.TypedArray obtainStyledAttributes(@StyleRes int, @NonNull @StyleableRes int[]) throws android.content.res.Resources.NotFoundException;
+    method @NonNull public final android.content.res.TypedArray obtainStyledAttributes(@Nullable android.util.AttributeSet, @NonNull @StyleableRes int[]);
+    method @NonNull public final android.content.res.TypedArray obtainStyledAttributes(@Nullable android.util.AttributeSet, @NonNull @StyleableRes int[], @AttrRes int, @StyleRes int);
+    method public abstract java.io.FileInputStream openFileInput(String) throws java.io.FileNotFoundException;
+    method public abstract java.io.FileOutputStream openFileOutput(String, int) throws java.io.FileNotFoundException;
+    method public abstract android.database.sqlite.SQLiteDatabase openOrCreateDatabase(String, int, android.database.sqlite.SQLiteDatabase.CursorFactory);
+    method public abstract android.database.sqlite.SQLiteDatabase openOrCreateDatabase(String, int, android.database.sqlite.SQLiteDatabase.CursorFactory, @Nullable android.database.DatabaseErrorHandler);
+    method @Deprecated public abstract android.graphics.drawable.Drawable peekWallpaper();
+    method public void registerComponentCallbacks(android.content.ComponentCallbacks);
+    method @Nullable public abstract android.content.Intent registerReceiver(@Nullable android.content.BroadcastReceiver, android.content.IntentFilter);
+    method @Nullable public abstract android.content.Intent registerReceiver(@Nullable android.content.BroadcastReceiver, android.content.IntentFilter, int);
+    method @Nullable public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, @Nullable String, @Nullable android.os.Handler);
+    method @Nullable public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, @Nullable String, @Nullable android.os.Handler, int);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.BROADCAST_STICKY) public abstract void removeStickyBroadcast(@RequiresPermission android.content.Intent);
+    method @Deprecated @RequiresPermission(allOf={"android.permission.INTERACT_ACROSS_USERS", android.Manifest.permission.BROADCAST_STICKY}) public abstract void removeStickyBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle);
+    method public abstract void revokeUriPermission(android.net.Uri, int);
+    method public abstract void revokeUriPermission(String, android.net.Uri, int);
+    method public abstract void sendBroadcast(@RequiresPermission android.content.Intent);
+    method public abstract void sendBroadcast(@RequiresPermission android.content.Intent, @Nullable String);
+    method @RequiresPermission("android.permission.INTERACT_ACROSS_USERS") public abstract void sendBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle);
+    method @RequiresPermission("android.permission.INTERACT_ACROSS_USERS") public abstract void sendBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle, @Nullable String);
+    method public void sendBroadcastWithMultiplePermissions(@NonNull android.content.Intent, @NonNull String[]);
+    method public abstract void sendOrderedBroadcast(@RequiresPermission android.content.Intent, @Nullable String);
+    method public abstract void sendOrderedBroadcast(@NonNull @RequiresPermission android.content.Intent, @Nullable String, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
+    method public void sendOrderedBroadcast(@NonNull android.content.Intent, @Nullable String, @Nullable String, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
+    method @RequiresPermission("android.permission.INTERACT_ACROSS_USERS") public abstract void sendOrderedBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle, @Nullable String, android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.BROADCAST_STICKY) public abstract void sendStickyBroadcast(@RequiresPermission android.content.Intent);
+    method @Deprecated @RequiresPermission(allOf={"android.permission.INTERACT_ACROSS_USERS", android.Manifest.permission.BROADCAST_STICKY}) public abstract void sendStickyBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.BROADCAST_STICKY) public abstract void sendStickyOrderedBroadcast(@RequiresPermission android.content.Intent, android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
+    method @Deprecated @RequiresPermission(allOf={"android.permission.INTERACT_ACROSS_USERS", android.Manifest.permission.BROADCAST_STICKY}) public abstract void sendStickyOrderedBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle, android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
+    method public abstract void setTheme(@StyleRes int);
+    method @Deprecated public abstract void setWallpaper(android.graphics.Bitmap) throws java.io.IOException;
+    method @Deprecated public abstract void setWallpaper(java.io.InputStream) throws java.io.IOException;
+    method public abstract void startActivities(@RequiresPermission android.content.Intent[]);
+    method public abstract void startActivities(@RequiresPermission android.content.Intent[], android.os.Bundle);
+    method public abstract void startActivity(@RequiresPermission android.content.Intent);
+    method public abstract void startActivity(@RequiresPermission android.content.Intent, @Nullable android.os.Bundle);
+    method @Nullable public abstract android.content.ComponentName startForegroundService(android.content.Intent);
+    method public abstract boolean startInstrumentation(@NonNull android.content.ComponentName, @Nullable String, @Nullable android.os.Bundle);
+    method public abstract void startIntentSender(android.content.IntentSender, @Nullable android.content.Intent, int, int, int) throws android.content.IntentSender.SendIntentException;
+    method public abstract void startIntentSender(android.content.IntentSender, @Nullable android.content.Intent, int, int, int, @Nullable android.os.Bundle) throws android.content.IntentSender.SendIntentException;
+    method @Nullable public abstract android.content.ComponentName startService(android.content.Intent);
+    method public abstract boolean stopService(android.content.Intent);
+    method public abstract void unbindService(@NonNull android.content.ServiceConnection);
+    method public void unregisterComponentCallbacks(android.content.ComponentCallbacks);
+    method public abstract void unregisterReceiver(android.content.BroadcastReceiver);
+    method public void updateServiceGroup(@NonNull android.content.ServiceConnection, int, int);
+    field public static final String ACCESSIBILITY_SERVICE = "accessibility";
+    field public static final String ACCOUNT_SERVICE = "account";
+    field public static final String ACTIVITY_SERVICE = "activity";
+    field public static final String ALARM_SERVICE = "alarm";
+    field public static final String APPWIDGET_SERVICE = "appwidget";
+    field public static final String APP_OPS_SERVICE = "appops";
+    field public static final String AUDIO_SERVICE = "audio";
+    field public static final String BATTERY_SERVICE = "batterymanager";
+    field public static final int BIND_ABOVE_CLIENT = 8; // 0x8
+    field public static final int BIND_ADJUST_WITH_ACTIVITY = 128; // 0x80
+    field public static final int BIND_ALLOW_OOM_MANAGEMENT = 16; // 0x10
+    field public static final int BIND_AUTO_CREATE = 1; // 0x1
+    field public static final int BIND_DEBUG_UNBIND = 2; // 0x2
+    field public static final int BIND_EXTERNAL_SERVICE = -2147483648; // 0x80000000
+    field public static final int BIND_IMPORTANT = 64; // 0x40
+    field public static final int BIND_INCLUDE_CAPABILITIES = 4096; // 0x1000
+    field public static final int BIND_NOT_FOREGROUND = 4; // 0x4
+    field public static final int BIND_NOT_PERCEPTIBLE = 256; // 0x100
+    field public static final int BIND_WAIVE_PRIORITY = 32; // 0x20
+    field public static final String BIOMETRIC_SERVICE = "biometric";
+    field public static final String BLOB_STORE_SERVICE = "blob_store";
+    field public static final String BLUETOOTH_SERVICE = "bluetooth";
+    field public static final String CAMERA_SERVICE = "camera";
+    field public static final String CAPTIONING_SERVICE = "captioning";
+    field public static final String CARRIER_CONFIG_SERVICE = "carrier_config";
+    field public static final String CLIPBOARD_SERVICE = "clipboard";
+    field public static final String COMPANION_DEVICE_SERVICE = "companiondevice";
+    field public static final String CONNECTIVITY_DIAGNOSTICS_SERVICE = "connectivity_diagnostics";
+    field public static final String CONNECTIVITY_SERVICE = "connectivity";
+    field public static final String CONSUMER_IR_SERVICE = "consumer_ir";
+    field public static final int CONTEXT_IGNORE_SECURITY = 2; // 0x2
+    field public static final int CONTEXT_INCLUDE_CODE = 1; // 0x1
+    field public static final int CONTEXT_RESTRICTED = 4; // 0x4
+    field public static final String CROSS_PROFILE_APPS_SERVICE = "crossprofileapps";
+    field public static final String DEVICE_POLICY_SERVICE = "device_policy";
+    field public static final String DISPLAY_SERVICE = "display";
+    field public static final String DOWNLOAD_SERVICE = "download";
+    field public static final String DROPBOX_SERVICE = "dropbox";
+    field public static final String EUICC_SERVICE = "euicc";
+    field public static final String FILE_INTEGRITY_SERVICE = "file_integrity";
+    field public static final String FINGERPRINT_SERVICE = "fingerprint";
+    field public static final String HARDWARE_PROPERTIES_SERVICE = "hardware_properties";
+    field public static final String INPUT_METHOD_SERVICE = "input_method";
+    field public static final String INPUT_SERVICE = "input";
+    field public static final String IPSEC_SERVICE = "ipsec";
+    field public static final String JOB_SCHEDULER_SERVICE = "jobscheduler";
+    field public static final String KEYGUARD_SERVICE = "keyguard";
+    field public static final String LAUNCHER_APPS_SERVICE = "launcherapps";
+    field public static final String LAYOUT_INFLATER_SERVICE = "layout_inflater";
+    field public static final String LOCATION_SERVICE = "location";
+    field public static final String MEDIA_PROJECTION_SERVICE = "media_projection";
+    field public static final String MEDIA_ROUTER_SERVICE = "media_router";
+    field public static final String MEDIA_SESSION_SERVICE = "media_session";
+    field public static final String MIDI_SERVICE = "midi";
+    field public static final int MODE_APPEND = 32768; // 0x8000
+    field public static final int MODE_ENABLE_WRITE_AHEAD_LOGGING = 8; // 0x8
+    field @Deprecated public static final int MODE_MULTI_PROCESS = 4; // 0x4
+    field public static final int MODE_NO_LOCALIZED_COLLATORS = 16; // 0x10
+    field public static final int MODE_PRIVATE = 0; // 0x0
+    field @Deprecated public static final int MODE_WORLD_READABLE = 1; // 0x1
+    field @Deprecated public static final int MODE_WORLD_WRITEABLE = 2; // 0x2
+    field public static final String NETWORK_STATS_SERVICE = "netstats";
+    field public static final String NFC_SERVICE = "nfc";
+    field public static final String NOTIFICATION_SERVICE = "notification";
+    field public static final String NSD_SERVICE = "servicediscovery";
+    field public static final String POWER_SERVICE = "power";
+    field public static final String PRINT_SERVICE = "print";
+    field public static final int RECEIVER_VISIBLE_TO_INSTANT_APPS = 1; // 0x1
+    field public static final String RESTRICTIONS_SERVICE = "restrictions";
+    field public static final String ROLE_SERVICE = "role";
+    field public static final String SEARCH_SERVICE = "search";
+    field public static final String SENSOR_SERVICE = "sensor";
+    field public static final String SHORTCUT_SERVICE = "shortcut";
+    field public static final String STORAGE_SERVICE = "storage";
+    field public static final String STORAGE_STATS_SERVICE = "storagestats";
+    field public static final String SYSTEM_HEALTH_SERVICE = "systemhealth";
+    field public static final String TELECOM_SERVICE = "telecom";
+    field public static final String TELEPHONY_IMS_SERVICE = "telephony_ims";
+    field public static final String TELEPHONY_SERVICE = "phone";
+    field public static final String TELEPHONY_SUBSCRIPTION_SERVICE = "telephony_subscription_service";
+    field public static final String TEXT_CLASSIFICATION_SERVICE = "textclassification";
+    field public static final String TEXT_SERVICES_MANAGER_SERVICE = "textservices";
+    field public static final String TV_INPUT_SERVICE = "tv_input";
+    field public static final String UI_MODE_SERVICE = "uimode";
+    field public static final String USAGE_STATS_SERVICE = "usagestats";
+    field public static final String USB_SERVICE = "usb";
+    field public static final String USER_SERVICE = "user";
+    field public static final String VIBRATOR_SERVICE = "vibrator";
+    field public static final String VPN_MANAGEMENT_SERVICE = "vpn_management";
+    field public static final String WALLPAPER_SERVICE = "wallpaper";
+    field public static final String WIFI_AWARE_SERVICE = "wifiaware";
+    field public static final String WIFI_P2P_SERVICE = "wifip2p";
+    field public static final String WIFI_RTT_RANGING_SERVICE = "wifirtt";
+    field public static final String WIFI_SERVICE = "wifi";
+    field public static final String WINDOW_SERVICE = "window";
+  }
+
+  public class ContextWrapper extends android.content.Context {
+    ctor public ContextWrapper(android.content.Context);
+    method protected void attachBaseContext(android.content.Context);
+    method public boolean bindService(android.content.Intent, android.content.ServiceConnection, int);
+    method public int checkCallingOrSelfPermission(String);
+    method public int checkCallingOrSelfUriPermission(android.net.Uri, int);
+    method public int checkCallingPermission(String);
+    method public int checkCallingUriPermission(android.net.Uri, int);
+    method public int checkPermission(String, int, int);
+    method public int checkSelfPermission(String);
+    method public int checkUriPermission(android.net.Uri, int, int, int);
+    method public int checkUriPermission(android.net.Uri, String, String, int, int, int);
+    method @Deprecated public void clearWallpaper() throws java.io.IOException;
+    method public android.content.Context createConfigurationContext(android.content.res.Configuration);
+    method public android.content.Context createContextForSplit(String) throws android.content.pm.PackageManager.NameNotFoundException;
+    method public android.content.Context createDeviceProtectedStorageContext();
+    method public android.content.Context createDisplayContext(android.view.Display);
+    method public android.content.Context createPackageContext(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+    method public String[] databaseList();
+    method public boolean deleteDatabase(String);
+    method public boolean deleteFile(String);
+    method public boolean deleteSharedPreferences(String);
+    method public void enforceCallingOrSelfPermission(String, String);
+    method public void enforceCallingOrSelfUriPermission(android.net.Uri, int, String);
+    method public void enforceCallingPermission(String, String);
+    method public void enforceCallingUriPermission(android.net.Uri, int, String);
+    method public void enforcePermission(String, int, int, String);
+    method public void enforceUriPermission(android.net.Uri, int, int, int, String);
+    method public void enforceUriPermission(android.net.Uri, String, String, int, int, int, String);
+    method public String[] fileList();
+    method public android.content.Context getApplicationContext();
+    method public android.content.pm.ApplicationInfo getApplicationInfo();
+    method public android.content.res.AssetManager getAssets();
+    method public android.content.Context getBaseContext();
+    method public java.io.File getCacheDir();
+    method public ClassLoader getClassLoader();
+    method public java.io.File getCodeCacheDir();
+    method public android.content.ContentResolver getContentResolver();
+    method public java.io.File getDataDir();
+    method public java.io.File getDatabasePath(String);
+    method public java.io.File getDir(String, int);
+    method public java.io.File getExternalCacheDir();
+    method public java.io.File[] getExternalCacheDirs();
+    method public java.io.File getExternalFilesDir(String);
+    method public java.io.File[] getExternalFilesDirs(String);
+    method public java.io.File[] getExternalMediaDirs();
+    method public java.io.File getFileStreamPath(String);
+    method public java.io.File getFilesDir();
+    method public android.os.Looper getMainLooper();
+    method public java.io.File getNoBackupFilesDir();
+    method public java.io.File getObbDir();
+    method public java.io.File[] getObbDirs();
+    method public String getPackageCodePath();
+    method public android.content.pm.PackageManager getPackageManager();
+    method public String getPackageName();
+    method public String getPackageResourcePath();
+    method public android.content.res.Resources getResources();
+    method public android.content.SharedPreferences getSharedPreferences(String, int);
+    method public Object getSystemService(String);
+    method public String getSystemServiceName(Class<?>);
+    method public android.content.res.Resources.Theme getTheme();
+    method @Deprecated public android.graphics.drawable.Drawable getWallpaper();
+    method @Deprecated public int getWallpaperDesiredMinimumHeight();
+    method @Deprecated public int getWallpaperDesiredMinimumWidth();
+    method public void grantUriPermission(String, android.net.Uri, int);
+    method public boolean isDeviceProtectedStorage();
+    method public boolean moveDatabaseFrom(android.content.Context, String);
+    method public boolean moveSharedPreferencesFrom(android.content.Context, String);
+    method public java.io.FileInputStream openFileInput(String) throws java.io.FileNotFoundException;
+    method public java.io.FileOutputStream openFileOutput(String, int) throws java.io.FileNotFoundException;
+    method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(String, int, android.database.sqlite.SQLiteDatabase.CursorFactory);
+    method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(String, int, android.database.sqlite.SQLiteDatabase.CursorFactory, android.database.DatabaseErrorHandler);
+    method @Deprecated public android.graphics.drawable.Drawable peekWallpaper();
+    method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter);
+    method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, int);
+    method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, String, android.os.Handler);
+    method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, String, android.os.Handler, int);
+    method @Deprecated public void removeStickyBroadcast(android.content.Intent);
+    method @Deprecated public void removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle);
+    method public void revokeUriPermission(android.net.Uri, int);
+    method public void revokeUriPermission(String, android.net.Uri, int);
+    method public void sendBroadcast(android.content.Intent);
+    method public void sendBroadcast(android.content.Intent, String);
+    method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle);
+    method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, String);
+    method public void sendOrderedBroadcast(android.content.Intent, String);
+    method public void sendOrderedBroadcast(android.content.Intent, String, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
+    method public void sendOrderedBroadcast(@NonNull @RequiresPermission android.content.Intent, int, @Nullable String, @Nullable String, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, @Nullable String, @Nullable android.os.Bundle, @Nullable android.os.Bundle);
+    method public void sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, String, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
+    method @Deprecated public void sendStickyBroadcast(android.content.Intent);
+    method @Deprecated public void sendStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle);
+    method @Deprecated public void sendStickyOrderedBroadcast(android.content.Intent, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
+    method @Deprecated public void sendStickyOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
+    method public void setTheme(int);
+    method @Deprecated public void setWallpaper(android.graphics.Bitmap) throws java.io.IOException;
+    method @Deprecated public void setWallpaper(java.io.InputStream) throws java.io.IOException;
+    method public void startActivities(android.content.Intent[]);
+    method public void startActivities(android.content.Intent[], android.os.Bundle);
+    method public void startActivity(android.content.Intent);
+    method public void startActivity(android.content.Intent, android.os.Bundle);
+    method public android.content.ComponentName startForegroundService(android.content.Intent);
+    method public boolean startInstrumentation(android.content.ComponentName, String, android.os.Bundle);
+    method public void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int) throws android.content.IntentSender.SendIntentException;
+    method public void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
+    method public android.content.ComponentName startService(android.content.Intent);
+    method public boolean stopService(android.content.Intent);
+    method public void unbindService(android.content.ServiceConnection);
+    method public void unregisterReceiver(android.content.BroadcastReceiver);
+  }
+
+  @Deprecated public class CursorLoader extends android.content.AsyncTaskLoader<android.database.Cursor> {
+    ctor @Deprecated public CursorLoader(android.content.Context);
+    ctor @Deprecated public CursorLoader(android.content.Context, android.net.Uri, String[], String, String[], String);
+    method @Deprecated public void deliverResult(android.database.Cursor);
+    method @Deprecated public String[] getProjection();
+    method @Deprecated public String getSelection();
+    method @Deprecated public String[] getSelectionArgs();
+    method @Deprecated public String getSortOrder();
+    method @Deprecated public android.net.Uri getUri();
+    method @Deprecated public android.database.Cursor loadInBackground();
+    method @Deprecated public void onCanceled(android.database.Cursor);
+    method @Deprecated public void setProjection(String[]);
+    method @Deprecated public void setSelection(String);
+    method @Deprecated public void setSelectionArgs(String[]);
+    method @Deprecated public void setSortOrder(String);
+    method @Deprecated public void setUri(android.net.Uri);
+  }
+
+  public interface DialogInterface {
+    method public void cancel();
+    method public void dismiss();
+    field @Deprecated public static final int BUTTON1 = -1; // 0xffffffff
+    field @Deprecated public static final int BUTTON2 = -2; // 0xfffffffe
+    field @Deprecated public static final int BUTTON3 = -3; // 0xfffffffd
+    field public static final int BUTTON_NEGATIVE = -2; // 0xfffffffe
+    field public static final int BUTTON_NEUTRAL = -3; // 0xfffffffd
+    field public static final int BUTTON_POSITIVE = -1; // 0xffffffff
+  }
+
+  public static interface DialogInterface.OnCancelListener {
+    method public void onCancel(android.content.DialogInterface);
+  }
+
+  public static interface DialogInterface.OnClickListener {
+    method public void onClick(android.content.DialogInterface, int);
+  }
+
+  public static interface DialogInterface.OnDismissListener {
+    method public void onDismiss(android.content.DialogInterface);
+  }
+
+  public static interface DialogInterface.OnKeyListener {
+    method public boolean onKey(android.content.DialogInterface, int, android.view.KeyEvent);
+  }
+
+  public static interface DialogInterface.OnMultiChoiceClickListener {
+    method public void onClick(android.content.DialogInterface, int, boolean);
+  }
+
+  public static interface DialogInterface.OnShowListener {
+    method public void onShow(android.content.DialogInterface);
+  }
+
+  public final class Entity {
+    ctor public Entity(android.content.ContentValues);
+    method public void addSubValue(android.net.Uri, android.content.ContentValues);
+    method public android.content.ContentValues getEntityValues();
+    method public java.util.ArrayList<android.content.Entity.NamedContentValues> getSubValues();
+  }
+
+  public static class Entity.NamedContentValues {
+    ctor public Entity.NamedContentValues(android.net.Uri, android.content.ContentValues);
+    field public final android.net.Uri uri;
+    field public final android.content.ContentValues values;
+  }
+
+  public interface EntityIterator extends java.util.Iterator<android.content.Entity> {
+    method public void close();
+    method public void reset();
+  }
+
+  public class Intent implements java.lang.Cloneable android.os.Parcelable {
+    ctor public Intent();
+    ctor public Intent(android.content.Intent);
+    ctor public Intent(String);
+    ctor public Intent(String, android.net.Uri);
+    ctor public Intent(android.content.Context, Class<?>);
+    ctor public Intent(String, android.net.Uri, android.content.Context, Class<?>);
+    method @NonNull public android.content.Intent addCategory(String);
+    method @NonNull public android.content.Intent addFlags(int);
+    method public Object clone();
+    method @NonNull public android.content.Intent cloneFilter();
+    method public static android.content.Intent createChooser(android.content.Intent, CharSequence);
+    method public static android.content.Intent createChooser(android.content.Intent, CharSequence, android.content.IntentSender);
+    method public int describeContents();
+    method public int fillIn(@NonNull android.content.Intent, int);
+    method public boolean filterEquals(android.content.Intent);
+    method public int filterHashCode();
+    method @Nullable public String getAction();
+    method @Nullable public boolean[] getBooleanArrayExtra(String);
+    method public boolean getBooleanExtra(String, boolean);
+    method @Nullable public android.os.Bundle getBundleExtra(String);
+    method @Nullable public byte[] getByteArrayExtra(String);
+    method public byte getByteExtra(String, byte);
+    method public java.util.Set<java.lang.String> getCategories();
+    method @Nullable public char[] getCharArrayExtra(String);
+    method public char getCharExtra(String, char);
+    method @Nullable public CharSequence[] getCharSequenceArrayExtra(String);
+    method @Nullable public java.util.ArrayList<java.lang.CharSequence> getCharSequenceArrayListExtra(String);
+    method @Nullable public CharSequence getCharSequenceExtra(String);
+    method @Nullable public android.content.ClipData getClipData();
+    method @Nullable public android.content.ComponentName getComponent();
+    method @Nullable public android.net.Uri getData();
+    method @Nullable public String getDataString();
+    method @Nullable public double[] getDoubleArrayExtra(String);
+    method public double getDoubleExtra(String, double);
+    method @Nullable public android.os.Bundle getExtras();
+    method public int getFlags();
+    method @Nullable public float[] getFloatArrayExtra(String);
+    method public float getFloatExtra(String, float);
+    method @Nullable public String getIdentifier();
+    method @Nullable public int[] getIntArrayExtra(String);
+    method public int getIntExtra(String, int);
+    method @Nullable public java.util.ArrayList<java.lang.Integer> getIntegerArrayListExtra(String);
+    method @Deprecated public static android.content.Intent getIntent(String) throws java.net.URISyntaxException;
+    method public static android.content.Intent getIntentOld(String) throws java.net.URISyntaxException;
+    method @Nullable public long[] getLongArrayExtra(String);
+    method public long getLongExtra(String, long);
+    method @Nullable public String getPackage();
+    method @Nullable public android.os.Parcelable[] getParcelableArrayExtra(String);
+    method @Nullable public <T extends android.os.Parcelable> java.util.ArrayList<T> getParcelableArrayListExtra(String);
+    method @Nullable public <T extends android.os.Parcelable> T getParcelableExtra(String);
+    method @Nullable public String getScheme();
+    method @Nullable public android.content.Intent getSelector();
+    method @Nullable public java.io.Serializable getSerializableExtra(String);
+    method @Nullable public short[] getShortArrayExtra(String);
+    method public short getShortExtra(String, short);
+    method @Nullable public android.graphics.Rect getSourceBounds();
+    method @Nullable public String[] getStringArrayExtra(String);
+    method @Nullable public java.util.ArrayList<java.lang.String> getStringArrayListExtra(String);
+    method @Nullable public String getStringExtra(String);
+    method @Nullable public String getType();
+    method public boolean hasCategory(String);
+    method public boolean hasExtra(String);
+    method public boolean hasFileDescriptors();
+    method public static android.content.Intent makeMainActivity(android.content.ComponentName);
+    method public static android.content.Intent makeMainSelectorActivity(String, String);
+    method public static android.content.Intent makeRestartActivityTask(android.content.ComponentName);
+    method @Nullable public static String normalizeMimeType(@Nullable String);
+    method @NonNull public static android.content.Intent parseIntent(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, android.util.AttributeSet) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method public static android.content.Intent parseUri(String, int) throws java.net.URISyntaxException;
+    method @NonNull public android.content.Intent putCharSequenceArrayListExtra(String, @Nullable java.util.ArrayList<java.lang.CharSequence>);
+    method @NonNull public android.content.Intent putExtra(String, boolean);
+    method @NonNull public android.content.Intent putExtra(String, byte);
+    method @NonNull public android.content.Intent putExtra(String, char);
+    method @NonNull public android.content.Intent putExtra(String, short);
+    method @NonNull public android.content.Intent putExtra(String, int);
+    method @NonNull public android.content.Intent putExtra(String, long);
+    method @NonNull public android.content.Intent putExtra(String, float);
+    method @NonNull public android.content.Intent putExtra(String, double);
+    method @NonNull public android.content.Intent putExtra(String, @Nullable String);
+    method @NonNull public android.content.Intent putExtra(String, @Nullable CharSequence);
+    method @NonNull public android.content.Intent putExtra(String, @Nullable android.os.Parcelable);
+    method @NonNull public android.content.Intent putExtra(String, @Nullable android.os.Parcelable[]);
+    method @NonNull public android.content.Intent putExtra(String, @Nullable java.io.Serializable);
+    method @NonNull public android.content.Intent putExtra(String, @Nullable boolean[]);
+    method @NonNull public android.content.Intent putExtra(String, @Nullable byte[]);
+    method @NonNull public android.content.Intent putExtra(String, @Nullable short[]);
+    method @NonNull public android.content.Intent putExtra(String, @Nullable char[]);
+    method @NonNull public android.content.Intent putExtra(String, @Nullable int[]);
+    method @NonNull public android.content.Intent putExtra(String, @Nullable long[]);
+    method @NonNull public android.content.Intent putExtra(String, @Nullable float[]);
+    method @NonNull public android.content.Intent putExtra(String, @Nullable double[]);
+    method @NonNull public android.content.Intent putExtra(String, @Nullable String[]);
+    method @NonNull public android.content.Intent putExtra(String, @Nullable CharSequence[]);
+    method @NonNull public android.content.Intent putExtra(String, @Nullable android.os.Bundle);
+    method @NonNull public android.content.Intent putExtras(@NonNull android.content.Intent);
+    method @NonNull public android.content.Intent putExtras(@NonNull android.os.Bundle);
+    method @NonNull public android.content.Intent putIntegerArrayListExtra(String, @Nullable java.util.ArrayList<java.lang.Integer>);
+    method @NonNull public android.content.Intent putParcelableArrayListExtra(String, @Nullable java.util.ArrayList<? extends android.os.Parcelable>);
+    method @NonNull public android.content.Intent putStringArrayListExtra(String, @Nullable java.util.ArrayList<java.lang.String>);
+    method public void readFromParcel(android.os.Parcel);
+    method public void removeCategory(String);
+    method public void removeExtra(String);
+    method public void removeFlags(int);
+    method @NonNull public android.content.Intent replaceExtras(@NonNull android.content.Intent);
+    method @NonNull public android.content.Intent replaceExtras(@Nullable android.os.Bundle);
+    method public android.content.ComponentName resolveActivity(@NonNull android.content.pm.PackageManager);
+    method public android.content.pm.ActivityInfo resolveActivityInfo(@NonNull android.content.pm.PackageManager, int);
+    method @Nullable public String resolveType(@NonNull android.content.Context);
+    method @Nullable public String resolveType(@NonNull android.content.ContentResolver);
+    method @Nullable public String resolveTypeIfNeeded(@NonNull android.content.ContentResolver);
+    method @NonNull public android.content.Intent setAction(@Nullable String);
+    method @NonNull public android.content.Intent setClass(@NonNull android.content.Context, @NonNull Class<?>);
+    method @NonNull public android.content.Intent setClassName(@NonNull android.content.Context, @NonNull String);
+    method @NonNull public android.content.Intent setClassName(@NonNull String, @NonNull String);
+    method public void setClipData(@Nullable android.content.ClipData);
+    method @NonNull public android.content.Intent setComponent(@Nullable android.content.ComponentName);
+    method @NonNull public android.content.Intent setData(@Nullable android.net.Uri);
+    method @NonNull public android.content.Intent setDataAndNormalize(@NonNull android.net.Uri);
+    method @NonNull public android.content.Intent setDataAndType(@Nullable android.net.Uri, @Nullable String);
+    method @NonNull public android.content.Intent setDataAndTypeAndNormalize(@NonNull android.net.Uri, @Nullable String);
+    method public void setExtrasClassLoader(@Nullable ClassLoader);
+    method @NonNull public android.content.Intent setFlags(int);
+    method @NonNull public android.content.Intent setIdentifier(@Nullable String);
+    method @NonNull public android.content.Intent setPackage(@Nullable String);
+    method public void setSelector(@Nullable android.content.Intent);
+    method public void setSourceBounds(@Nullable android.graphics.Rect);
+    method @NonNull public android.content.Intent setType(@Nullable String);
+    method @NonNull public android.content.Intent setTypeAndNormalize(@Nullable String);
+    method @Deprecated public String toURI();
+    method public String toUri(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final String ACTION_AIRPLANE_MODE_CHANGED = "android.intent.action.AIRPLANE_MODE";
+    field public static final String ACTION_ALL_APPS = "android.intent.action.ALL_APPS";
+    field public static final String ACTION_ANSWER = "android.intent.action.ANSWER";
+    field public static final String ACTION_APPLICATION_PREFERENCES = "android.intent.action.APPLICATION_PREFERENCES";
+    field public static final String ACTION_APPLICATION_RESTRICTIONS_CHANGED = "android.intent.action.APPLICATION_RESTRICTIONS_CHANGED";
+    field public static final String ACTION_APP_ERROR = "android.intent.action.APP_ERROR";
+    field public static final String ACTION_ASSIST = "android.intent.action.ASSIST";
+    field public static final String ACTION_ATTACH_DATA = "android.intent.action.ATTACH_DATA";
+    field public static final String ACTION_AUTO_REVOKE_PERMISSIONS = "android.intent.action.AUTO_REVOKE_PERMISSIONS";
+    field public static final String ACTION_BATTERY_CHANGED = "android.intent.action.BATTERY_CHANGED";
+    field public static final String ACTION_BATTERY_LOW = "android.intent.action.BATTERY_LOW";
+    field public static final String ACTION_BATTERY_OKAY = "android.intent.action.BATTERY_OKAY";
+    field public static final String ACTION_BOOT_COMPLETED = "android.intent.action.BOOT_COMPLETED";
+    field public static final String ACTION_BUG_REPORT = "android.intent.action.BUG_REPORT";
+    field public static final String ACTION_CALL = "android.intent.action.CALL";
+    field public static final String ACTION_CALL_BUTTON = "android.intent.action.CALL_BUTTON";
+    field public static final String ACTION_CAMERA_BUTTON = "android.intent.action.CAMERA_BUTTON";
+    field public static final String ACTION_CARRIER_SETUP = "android.intent.action.CARRIER_SETUP";
+    field public static final String ACTION_CHOOSER = "android.intent.action.CHOOSER";
+    field public static final String ACTION_CLOSE_SYSTEM_DIALOGS = "android.intent.action.CLOSE_SYSTEM_DIALOGS";
+    field public static final String ACTION_CONFIGURATION_CHANGED = "android.intent.action.CONFIGURATION_CHANGED";
+    field public static final String ACTION_CREATE_DOCUMENT = "android.intent.action.CREATE_DOCUMENT";
+    field public static final String ACTION_CREATE_REMINDER = "android.intent.action.CREATE_REMINDER";
+    field public static final String ACTION_CREATE_SHORTCUT = "android.intent.action.CREATE_SHORTCUT";
+    field public static final String ACTION_DATE_CHANGED = "android.intent.action.DATE_CHANGED";
+    field public static final String ACTION_DEFAULT = "android.intent.action.VIEW";
+    field public static final String ACTION_DEFINE = "android.intent.action.DEFINE";
+    field public static final String ACTION_DELETE = "android.intent.action.DELETE";
+    field @Deprecated public static final String ACTION_DEVICE_STORAGE_LOW = "android.intent.action.DEVICE_STORAGE_LOW";
+    field @Deprecated public static final String ACTION_DEVICE_STORAGE_OK = "android.intent.action.DEVICE_STORAGE_OK";
+    field public static final String ACTION_DIAL = "android.intent.action.DIAL";
+    field public static final String ACTION_DOCK_EVENT = "android.intent.action.DOCK_EVENT";
+    field public static final String ACTION_DREAMING_STARTED = "android.intent.action.DREAMING_STARTED";
+    field public static final String ACTION_DREAMING_STOPPED = "android.intent.action.DREAMING_STOPPED";
+    field public static final String ACTION_EDIT = "android.intent.action.EDIT";
+    field public static final String ACTION_EXTERNAL_APPLICATIONS_AVAILABLE = "android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE";
+    field public static final String ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE = "android.intent.action.EXTERNAL_APPLICATIONS_UNAVAILABLE";
+    field public static final String ACTION_FACTORY_TEST = "android.intent.action.FACTORY_TEST";
+    field public static final String ACTION_GET_CONTENT = "android.intent.action.GET_CONTENT";
+    field public static final String ACTION_GET_RESTRICTION_ENTRIES = "android.intent.action.GET_RESTRICTION_ENTRIES";
+    field public static final String ACTION_GTALK_SERVICE_CONNECTED = "android.intent.action.GTALK_CONNECTED";
+    field public static final String ACTION_GTALK_SERVICE_DISCONNECTED = "android.intent.action.GTALK_DISCONNECTED";
+    field public static final String ACTION_HEADSET_PLUG = "android.intent.action.HEADSET_PLUG";
+    field public static final String ACTION_INPUT_METHOD_CHANGED = "android.intent.action.INPUT_METHOD_CHANGED";
+    field public static final String ACTION_INSERT = "android.intent.action.INSERT";
+    field public static final String ACTION_INSERT_OR_EDIT = "android.intent.action.INSERT_OR_EDIT";
+    field public static final String ACTION_INSTALL_FAILURE = "android.intent.action.INSTALL_FAILURE";
+    field @Deprecated public static final String ACTION_INSTALL_PACKAGE = "android.intent.action.INSTALL_PACKAGE";
+    field public static final String ACTION_LOCALE_CHANGED = "android.intent.action.LOCALE_CHANGED";
+    field public static final String ACTION_LOCKED_BOOT_COMPLETED = "android.intent.action.LOCKED_BOOT_COMPLETED";
+    field public static final String ACTION_MAIN = "android.intent.action.MAIN";
+    field public static final String ACTION_MANAGED_PROFILE_ADDED = "android.intent.action.MANAGED_PROFILE_ADDED";
+    field public static final String ACTION_MANAGED_PROFILE_AVAILABLE = "android.intent.action.MANAGED_PROFILE_AVAILABLE";
+    field public static final String ACTION_MANAGED_PROFILE_REMOVED = "android.intent.action.MANAGED_PROFILE_REMOVED";
+    field public static final String ACTION_MANAGED_PROFILE_UNAVAILABLE = "android.intent.action.MANAGED_PROFILE_UNAVAILABLE";
+    field public static final String ACTION_MANAGED_PROFILE_UNLOCKED = "android.intent.action.MANAGED_PROFILE_UNLOCKED";
+    field public static final String ACTION_MANAGE_NETWORK_USAGE = "android.intent.action.MANAGE_NETWORK_USAGE";
+    field public static final String ACTION_MANAGE_PACKAGE_STORAGE = "android.intent.action.MANAGE_PACKAGE_STORAGE";
+    field public static final String ACTION_MEDIA_BAD_REMOVAL = "android.intent.action.MEDIA_BAD_REMOVAL";
+    field public static final String ACTION_MEDIA_BUTTON = "android.intent.action.MEDIA_BUTTON";
+    field public static final String ACTION_MEDIA_CHECKING = "android.intent.action.MEDIA_CHECKING";
+    field public static final String ACTION_MEDIA_EJECT = "android.intent.action.MEDIA_EJECT";
+    field public static final String ACTION_MEDIA_MOUNTED = "android.intent.action.MEDIA_MOUNTED";
+    field public static final String ACTION_MEDIA_NOFS = "android.intent.action.MEDIA_NOFS";
+    field public static final String ACTION_MEDIA_REMOVED = "android.intent.action.MEDIA_REMOVED";
+    field public static final String ACTION_MEDIA_SCANNER_FINISHED = "android.intent.action.MEDIA_SCANNER_FINISHED";
+    field @Deprecated public static final String ACTION_MEDIA_SCANNER_SCAN_FILE = "android.intent.action.MEDIA_SCANNER_SCAN_FILE";
+    field public static final String ACTION_MEDIA_SCANNER_STARTED = "android.intent.action.MEDIA_SCANNER_STARTED";
+    field public static final String ACTION_MEDIA_SHARED = "android.intent.action.MEDIA_SHARED";
+    field public static final String ACTION_MEDIA_UNMOUNTABLE = "android.intent.action.MEDIA_UNMOUNTABLE";
+    field public static final String ACTION_MEDIA_UNMOUNTED = "android.intent.action.MEDIA_UNMOUNTED";
+    field public static final String ACTION_MY_PACKAGE_REPLACED = "android.intent.action.MY_PACKAGE_REPLACED";
+    field public static final String ACTION_MY_PACKAGE_SUSPENDED = "android.intent.action.MY_PACKAGE_SUSPENDED";
+    field public static final String ACTION_MY_PACKAGE_UNSUSPENDED = "android.intent.action.MY_PACKAGE_UNSUSPENDED";
+    field @Deprecated public static final String ACTION_NEW_OUTGOING_CALL = "android.intent.action.NEW_OUTGOING_CALL";
+    field public static final String ACTION_OPEN_DOCUMENT = "android.intent.action.OPEN_DOCUMENT";
+    field public static final String ACTION_OPEN_DOCUMENT_TREE = "android.intent.action.OPEN_DOCUMENT_TREE";
+    field public static final String ACTION_PACKAGES_SUSPENDED = "android.intent.action.PACKAGES_SUSPENDED";
+    field public static final String ACTION_PACKAGES_UNSUSPENDED = "android.intent.action.PACKAGES_UNSUSPENDED";
+    field public static final String ACTION_PACKAGE_ADDED = "android.intent.action.PACKAGE_ADDED";
+    field public static final String ACTION_PACKAGE_CHANGED = "android.intent.action.PACKAGE_CHANGED";
+    field public static final String ACTION_PACKAGE_DATA_CLEARED = "android.intent.action.PACKAGE_DATA_CLEARED";
+    field public static final String ACTION_PACKAGE_FIRST_LAUNCH = "android.intent.action.PACKAGE_FIRST_LAUNCH";
+    field public static final String ACTION_PACKAGE_FULLY_REMOVED = "android.intent.action.PACKAGE_FULLY_REMOVED";
+    field @Deprecated public static final String ACTION_PACKAGE_INSTALL = "android.intent.action.PACKAGE_INSTALL";
+    field public static final String ACTION_PACKAGE_NEEDS_VERIFICATION = "android.intent.action.PACKAGE_NEEDS_VERIFICATION";
+    field public static final String ACTION_PACKAGE_REMOVED = "android.intent.action.PACKAGE_REMOVED";
+    field public static final String ACTION_PACKAGE_REPLACED = "android.intent.action.PACKAGE_REPLACED";
+    field public static final String ACTION_PACKAGE_RESTARTED = "android.intent.action.PACKAGE_RESTARTED";
+    field public static final String ACTION_PACKAGE_VERIFIED = "android.intent.action.PACKAGE_VERIFIED";
+    field public static final String ACTION_PASTE = "android.intent.action.PASTE";
+    field public static final String ACTION_PICK = "android.intent.action.PICK";
+    field public static final String ACTION_PICK_ACTIVITY = "android.intent.action.PICK_ACTIVITY";
+    field public static final String ACTION_POWER_CONNECTED = "android.intent.action.ACTION_POWER_CONNECTED";
+    field public static final String ACTION_POWER_DISCONNECTED = "android.intent.action.ACTION_POWER_DISCONNECTED";
+    field public static final String ACTION_POWER_USAGE_SUMMARY = "android.intent.action.POWER_USAGE_SUMMARY";
+    field public static final String ACTION_PROCESS_TEXT = "android.intent.action.PROCESS_TEXT";
+    field public static final String ACTION_PROVIDER_CHANGED = "android.intent.action.PROVIDER_CHANGED";
+    field public static final String ACTION_QUICK_CLOCK = "android.intent.action.QUICK_CLOCK";
+    field public static final String ACTION_QUICK_VIEW = "android.intent.action.QUICK_VIEW";
+    field public static final String ACTION_REBOOT = "android.intent.action.REBOOT";
+    field public static final String ACTION_RUN = "android.intent.action.RUN";
+    field public static final String ACTION_SCREEN_OFF = "android.intent.action.SCREEN_OFF";
+    field public static final String ACTION_SCREEN_ON = "android.intent.action.SCREEN_ON";
+    field public static final String ACTION_SEARCH = "android.intent.action.SEARCH";
+    field public static final String ACTION_SEARCH_LONG_PRESS = "android.intent.action.SEARCH_LONG_PRESS";
+    field public static final String ACTION_SEND = "android.intent.action.SEND";
+    field public static final String ACTION_SENDTO = "android.intent.action.SENDTO";
+    field public static final String ACTION_SEND_MULTIPLE = "android.intent.action.SEND_MULTIPLE";
+    field public static final String ACTION_SET_WALLPAPER = "android.intent.action.SET_WALLPAPER";
+    field public static final String ACTION_SHOW_APP_INFO = "android.intent.action.SHOW_APP_INFO";
+    field public static final String ACTION_SHUTDOWN = "android.intent.action.ACTION_SHUTDOWN";
+    field public static final String ACTION_SYNC = "android.intent.action.SYNC";
+    field public static final String ACTION_SYSTEM_TUTORIAL = "android.intent.action.SYSTEM_TUTORIAL";
+    field public static final String ACTION_TIMEZONE_CHANGED = "android.intent.action.TIMEZONE_CHANGED";
+    field public static final String ACTION_TIME_CHANGED = "android.intent.action.TIME_SET";
+    field public static final String ACTION_TIME_TICK = "android.intent.action.TIME_TICK";
+    field public static final String ACTION_TRANSLATE = "android.intent.action.TRANSLATE";
+    field public static final String ACTION_UID_REMOVED = "android.intent.action.UID_REMOVED";
+    field @Deprecated public static final String ACTION_UMS_CONNECTED = "android.intent.action.UMS_CONNECTED";
+    field @Deprecated public static final String ACTION_UMS_DISCONNECTED = "android.intent.action.UMS_DISCONNECTED";
+    field @Deprecated public static final String ACTION_UNINSTALL_PACKAGE = "android.intent.action.UNINSTALL_PACKAGE";
+    field public static final String ACTION_USER_BACKGROUND = "android.intent.action.USER_BACKGROUND";
+    field public static final String ACTION_USER_FOREGROUND = "android.intent.action.USER_FOREGROUND";
+    field public static final String ACTION_USER_INITIALIZE = "android.intent.action.USER_INITIALIZE";
+    field public static final String ACTION_USER_PRESENT = "android.intent.action.USER_PRESENT";
+    field public static final String ACTION_USER_UNLOCKED = "android.intent.action.USER_UNLOCKED";
+    field public static final String ACTION_VIEW = "android.intent.action.VIEW";
+    field public static final String ACTION_VIEW_LOCUS = "android.intent.action.VIEW_LOCUS";
+    field @RequiresPermission(android.Manifest.permission.START_VIEW_PERMISSION_USAGE) public static final String ACTION_VIEW_PERMISSION_USAGE = "android.intent.action.VIEW_PERMISSION_USAGE";
+    field public static final String ACTION_VOICE_COMMAND = "android.intent.action.VOICE_COMMAND";
+    field @Deprecated public static final String ACTION_WALLPAPER_CHANGED = "android.intent.action.WALLPAPER_CHANGED";
+    field public static final String ACTION_WEB_SEARCH = "android.intent.action.WEB_SEARCH";
+    field public static final String CATEGORY_ACCESSIBILITY_SHORTCUT_TARGET = "android.intent.category.ACCESSIBILITY_SHORTCUT_TARGET";
+    field public static final String CATEGORY_ALTERNATIVE = "android.intent.category.ALTERNATIVE";
+    field public static final String CATEGORY_APP_BROWSER = "android.intent.category.APP_BROWSER";
+    field public static final String CATEGORY_APP_CALCULATOR = "android.intent.category.APP_CALCULATOR";
+    field public static final String CATEGORY_APP_CALENDAR = "android.intent.category.APP_CALENDAR";
+    field public static final String CATEGORY_APP_CONTACTS = "android.intent.category.APP_CONTACTS";
+    field public static final String CATEGORY_APP_EMAIL = "android.intent.category.APP_EMAIL";
+    field public static final String CATEGORY_APP_FILES = "android.intent.category.APP_FILES";
+    field public static final String CATEGORY_APP_GALLERY = "android.intent.category.APP_GALLERY";
+    field public static final String CATEGORY_APP_MAPS = "android.intent.category.APP_MAPS";
+    field public static final String CATEGORY_APP_MARKET = "android.intent.category.APP_MARKET";
+    field public static final String CATEGORY_APP_MESSAGING = "android.intent.category.APP_MESSAGING";
+    field public static final String CATEGORY_APP_MUSIC = "android.intent.category.APP_MUSIC";
+    field public static final String CATEGORY_BROWSABLE = "android.intent.category.BROWSABLE";
+    field public static final String CATEGORY_CAR_DOCK = "android.intent.category.CAR_DOCK";
+    field public static final String CATEGORY_CAR_MODE = "android.intent.category.CAR_MODE";
+    field public static final String CATEGORY_DEFAULT = "android.intent.category.DEFAULT";
+    field public static final String CATEGORY_DESK_DOCK = "android.intent.category.DESK_DOCK";
+    field public static final String CATEGORY_DEVELOPMENT_PREFERENCE = "android.intent.category.DEVELOPMENT_PREFERENCE";
+    field public static final String CATEGORY_EMBED = "android.intent.category.EMBED";
+    field public static final String CATEGORY_FRAMEWORK_INSTRUMENTATION_TEST = "android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST";
+    field public static final String CATEGORY_HE_DESK_DOCK = "android.intent.category.HE_DESK_DOCK";
+    field public static final String CATEGORY_HOME = "android.intent.category.HOME";
+    field public static final String CATEGORY_INFO = "android.intent.category.INFO";
+    field public static final String CATEGORY_LAUNCHER = "android.intent.category.LAUNCHER";
+    field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
+    field public static final String CATEGORY_LE_DESK_DOCK = "android.intent.category.LE_DESK_DOCK";
+    field public static final String CATEGORY_MONKEY = "android.intent.category.MONKEY";
+    field public static final String CATEGORY_OPENABLE = "android.intent.category.OPENABLE";
+    field public static final String CATEGORY_PREFERENCE = "android.intent.category.PREFERENCE";
+    field public static final String CATEGORY_SAMPLE_CODE = "android.intent.category.SAMPLE_CODE";
+    field public static final String CATEGORY_SECONDARY_HOME = "android.intent.category.SECONDARY_HOME";
+    field public static final String CATEGORY_SELECTED_ALTERNATIVE = "android.intent.category.SELECTED_ALTERNATIVE";
+    field public static final String CATEGORY_TAB = "android.intent.category.TAB";
+    field public static final String CATEGORY_TEST = "android.intent.category.TEST";
+    field public static final String CATEGORY_TYPED_OPENABLE = "android.intent.category.TYPED_OPENABLE";
+    field public static final String CATEGORY_UNIT_TEST = "android.intent.category.UNIT_TEST";
+    field public static final String CATEGORY_VOICE = "android.intent.category.VOICE";
+    field public static final String CATEGORY_VR_HOME = "android.intent.category.VR_HOME";
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.Intent> CREATOR;
+    field public static final String EXTRA_ALARM_COUNT = "android.intent.extra.ALARM_COUNT";
+    field public static final String EXTRA_ALLOW_MULTIPLE = "android.intent.extra.ALLOW_MULTIPLE";
+    field @Deprecated public static final String EXTRA_ALLOW_REPLACE = "android.intent.extra.ALLOW_REPLACE";
+    field public static final String EXTRA_ALTERNATE_INTENTS = "android.intent.extra.ALTERNATE_INTENTS";
+    field public static final String EXTRA_ASSIST_CONTEXT = "android.intent.extra.ASSIST_CONTEXT";
+    field public static final String EXTRA_ASSIST_INPUT_DEVICE_ID = "android.intent.extra.ASSIST_INPUT_DEVICE_ID";
+    field public static final String EXTRA_ASSIST_INPUT_HINT_KEYBOARD = "android.intent.extra.ASSIST_INPUT_HINT_KEYBOARD";
+    field public static final String EXTRA_ASSIST_PACKAGE = "android.intent.extra.ASSIST_PACKAGE";
+    field public static final String EXTRA_ASSIST_UID = "android.intent.extra.ASSIST_UID";
+    field public static final String EXTRA_AUTO_LAUNCH_SINGLE_CHOICE = "android.intent.extra.AUTO_LAUNCH_SINGLE_CHOICE";
+    field public static final String EXTRA_BCC = "android.intent.extra.BCC";
+    field public static final String EXTRA_BUG_REPORT = "android.intent.extra.BUG_REPORT";
+    field public static final String EXTRA_CC = "android.intent.extra.CC";
+    field @Deprecated public static final String EXTRA_CHANGED_COMPONENT_NAME = "android.intent.extra.changed_component_name";
+    field public static final String EXTRA_CHANGED_COMPONENT_NAME_LIST = "android.intent.extra.changed_component_name_list";
+    field public static final String EXTRA_CHANGED_PACKAGE_LIST = "android.intent.extra.changed_package_list";
+    field public static final String EXTRA_CHANGED_UID_LIST = "android.intent.extra.changed_uid_list";
+    field public static final String EXTRA_CHOOSER_REFINEMENT_INTENT_SENDER = "android.intent.extra.CHOOSER_REFINEMENT_INTENT_SENDER";
+    field public static final String EXTRA_CHOOSER_TARGETS = "android.intent.extra.CHOOSER_TARGETS";
+    field public static final String EXTRA_CHOSEN_COMPONENT = "android.intent.extra.CHOSEN_COMPONENT";
+    field public static final String EXTRA_CHOSEN_COMPONENT_INTENT_SENDER = "android.intent.extra.CHOSEN_COMPONENT_INTENT_SENDER";
+    field public static final String EXTRA_COMPONENT_NAME = "android.intent.extra.COMPONENT_NAME";
+    field public static final String EXTRA_CONTENT_ANNOTATIONS = "android.intent.extra.CONTENT_ANNOTATIONS";
+    field public static final String EXTRA_CONTENT_QUERY = "android.intent.extra.CONTENT_QUERY";
+    field public static final String EXTRA_DATA_REMOVED = "android.intent.extra.DATA_REMOVED";
+    field public static final String EXTRA_DOCK_STATE = "android.intent.extra.DOCK_STATE";
+    field public static final int EXTRA_DOCK_STATE_CAR = 2; // 0x2
+    field public static final int EXTRA_DOCK_STATE_DESK = 1; // 0x1
+    field public static final int EXTRA_DOCK_STATE_HE_DESK = 4; // 0x4
+    field public static final int EXTRA_DOCK_STATE_LE_DESK = 3; // 0x3
+    field public static final int EXTRA_DOCK_STATE_UNDOCKED = 0; // 0x0
+    field public static final String EXTRA_DONT_KILL_APP = "android.intent.extra.DONT_KILL_APP";
+    field public static final String EXTRA_DURATION_MILLIS = "android.intent.extra.DURATION_MILLIS";
+    field public static final String EXTRA_EMAIL = "android.intent.extra.EMAIL";
+    field public static final String EXTRA_EXCLUDE_COMPONENTS = "android.intent.extra.EXCLUDE_COMPONENTS";
+    field public static final String EXTRA_FROM_STORAGE = "android.intent.extra.FROM_STORAGE";
+    field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
+    field public static final String EXTRA_INDEX = "android.intent.extra.INDEX";
+    field public static final String EXTRA_INITIAL_INTENTS = "android.intent.extra.INITIAL_INTENTS";
+    field public static final String EXTRA_INSTALLER_PACKAGE_NAME = "android.intent.extra.INSTALLER_PACKAGE_NAME";
+    field public static final String EXTRA_INTENT = "android.intent.extra.INTENT";
+    field public static final String EXTRA_KEY_EVENT = "android.intent.extra.KEY_EVENT";
+    field public static final String EXTRA_LOCAL_ONLY = "android.intent.extra.LOCAL_ONLY";
+    field public static final String EXTRA_LOCUS_ID = "android.intent.extra.LOCUS_ID";
+    field public static final String EXTRA_MIME_TYPES = "android.intent.extra.MIME_TYPES";
+    field public static final String EXTRA_NOT_UNKNOWN_SOURCE = "android.intent.extra.NOT_UNKNOWN_SOURCE";
+    field public static final String EXTRA_ORIGINATING_URI = "android.intent.extra.ORIGINATING_URI";
+    field public static final String EXTRA_PACKAGE_NAME = "android.intent.extra.PACKAGE_NAME";
+    field public static final String EXTRA_PHONE_NUMBER = "android.intent.extra.PHONE_NUMBER";
+    field public static final String EXTRA_PROCESS_TEXT = "android.intent.extra.PROCESS_TEXT";
+    field public static final String EXTRA_PROCESS_TEXT_READONLY = "android.intent.extra.PROCESS_TEXT_READONLY";
+    field public static final String EXTRA_QUICK_VIEW_FEATURES = "android.intent.extra.QUICK_VIEW_FEATURES";
+    field public static final String EXTRA_QUIET_MODE = "android.intent.extra.QUIET_MODE";
+    field public static final String EXTRA_REFERRER = "android.intent.extra.REFERRER";
+    field public static final String EXTRA_REFERRER_NAME = "android.intent.extra.REFERRER_NAME";
+    field public static final String EXTRA_REMOTE_INTENT_TOKEN = "android.intent.extra.remote_intent_token";
+    field public static final String EXTRA_REPLACEMENT_EXTRAS = "android.intent.extra.REPLACEMENT_EXTRAS";
+    field public static final String EXTRA_REPLACING = "android.intent.extra.REPLACING";
+    field public static final String EXTRA_RESTRICTIONS_BUNDLE = "android.intent.extra.restrictions_bundle";
+    field public static final String EXTRA_RESTRICTIONS_INTENT = "android.intent.extra.restrictions_intent";
+    field public static final String EXTRA_RESTRICTIONS_LIST = "android.intent.extra.restrictions_list";
+    field public static final String EXTRA_RESULT_RECEIVER = "android.intent.extra.RESULT_RECEIVER";
+    field public static final String EXTRA_RETURN_RESULT = "android.intent.extra.RETURN_RESULT";
+    field @Deprecated public static final String EXTRA_SHORTCUT_ICON = "android.intent.extra.shortcut.ICON";
+    field @Deprecated public static final String EXTRA_SHORTCUT_ICON_RESOURCE = "android.intent.extra.shortcut.ICON_RESOURCE";
+    field public static final String EXTRA_SHORTCUT_ID = "android.intent.extra.shortcut.ID";
+    field @Deprecated public static final String EXTRA_SHORTCUT_INTENT = "android.intent.extra.shortcut.INTENT";
+    field @Deprecated public static final String EXTRA_SHORTCUT_NAME = "android.intent.extra.shortcut.NAME";
+    field public static final String EXTRA_SHUTDOWN_USERSPACE_ONLY = "android.intent.extra.SHUTDOWN_USERSPACE_ONLY";
+    field public static final String EXTRA_SPLIT_NAME = "android.intent.extra.SPLIT_NAME";
+    field public static final String EXTRA_STREAM = "android.intent.extra.STREAM";
+    field public static final String EXTRA_SUBJECT = "android.intent.extra.SUBJECT";
+    field public static final String EXTRA_SUSPENDED_PACKAGE_EXTRAS = "android.intent.extra.SUSPENDED_PACKAGE_EXTRAS";
+    field public static final String EXTRA_TEMPLATE = "android.intent.extra.TEMPLATE";
+    field public static final String EXTRA_TEXT = "android.intent.extra.TEXT";
+    field public static final String EXTRA_TIME = "android.intent.extra.TIME";
+    field public static final String EXTRA_TIMEZONE = "time-zone";
+    field public static final String EXTRA_TITLE = "android.intent.extra.TITLE";
+    field public static final String EXTRA_UID = "android.intent.extra.UID";
+    field public static final String EXTRA_USER = "android.intent.extra.USER";
+    field public static final int FILL_IN_ACTION = 1; // 0x1
+    field public static final int FILL_IN_CATEGORIES = 4; // 0x4
+    field public static final int FILL_IN_CLIP_DATA = 128; // 0x80
+    field public static final int FILL_IN_COMPONENT = 8; // 0x8
+    field public static final int FILL_IN_DATA = 2; // 0x2
+    field public static final int FILL_IN_IDENTIFIER = 256; // 0x100
+    field public static final int FILL_IN_PACKAGE = 16; // 0x10
+    field public static final int FILL_IN_SELECTOR = 64; // 0x40
+    field public static final int FILL_IN_SOURCE_BOUNDS = 32; // 0x20
+    field public static final int FLAG_ACTIVITY_BROUGHT_TO_FRONT = 4194304; // 0x400000
+    field public static final int FLAG_ACTIVITY_CLEAR_TASK = 32768; // 0x8000
+    field public static final int FLAG_ACTIVITY_CLEAR_TOP = 67108864; // 0x4000000
+    field @Deprecated public static final int FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET = 524288; // 0x80000
+    field public static final int FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS = 8388608; // 0x800000
+    field public static final int FLAG_ACTIVITY_FORWARD_RESULT = 33554432; // 0x2000000
+    field public static final int FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY = 1048576; // 0x100000
+    field public static final int FLAG_ACTIVITY_LAUNCH_ADJACENT = 4096; // 0x1000
+    field public static final int FLAG_ACTIVITY_MATCH_EXTERNAL = 2048; // 0x800
+    field public static final int FLAG_ACTIVITY_MULTIPLE_TASK = 134217728; // 0x8000000
+    field public static final int FLAG_ACTIVITY_NEW_DOCUMENT = 524288; // 0x80000
+    field public static final int FLAG_ACTIVITY_NEW_TASK = 268435456; // 0x10000000
+    field public static final int FLAG_ACTIVITY_NO_ANIMATION = 65536; // 0x10000
+    field public static final int FLAG_ACTIVITY_NO_HISTORY = 1073741824; // 0x40000000
+    field public static final int FLAG_ACTIVITY_NO_USER_ACTION = 262144; // 0x40000
+    field public static final int FLAG_ACTIVITY_PREVIOUS_IS_TOP = 16777216; // 0x1000000
+    field public static final int FLAG_ACTIVITY_REORDER_TO_FRONT = 131072; // 0x20000
+    field public static final int FLAG_ACTIVITY_REQUIRE_DEFAULT = 512; // 0x200
+    field public static final int FLAG_ACTIVITY_REQUIRE_NON_BROWSER = 1024; // 0x400
+    field public static final int FLAG_ACTIVITY_RESET_TASK_IF_NEEDED = 2097152; // 0x200000
+    field public static final int FLAG_ACTIVITY_RETAIN_IN_RECENTS = 8192; // 0x2000
+    field public static final int FLAG_ACTIVITY_SINGLE_TOP = 536870912; // 0x20000000
+    field public static final int FLAG_ACTIVITY_TASK_ON_HOME = 16384; // 0x4000
+    field public static final int FLAG_DEBUG_LOG_RESOLUTION = 8; // 0x8
+    field public static final int FLAG_DIRECT_BOOT_AUTO = 256; // 0x100
+    field public static final int FLAG_EXCLUDE_STOPPED_PACKAGES = 16; // 0x10
+    field public static final int FLAG_FROM_BACKGROUND = 4; // 0x4
+    field public static final int FLAG_GRANT_PERSISTABLE_URI_PERMISSION = 64; // 0x40
+    field public static final int FLAG_GRANT_PREFIX_URI_PERMISSION = 128; // 0x80
+    field public static final int FLAG_GRANT_READ_URI_PERMISSION = 1; // 0x1
+    field public static final int FLAG_GRANT_WRITE_URI_PERMISSION = 2; // 0x2
+    field public static final int FLAG_INCLUDE_STOPPED_PACKAGES = 32; // 0x20
+    field public static final int FLAG_RECEIVER_FOREGROUND = 268435456; // 0x10000000
+    field public static final int FLAG_RECEIVER_NO_ABORT = 134217728; // 0x8000000
+    field public static final int FLAG_RECEIVER_REGISTERED_ONLY = 1073741824; // 0x40000000
+    field public static final int FLAG_RECEIVER_REPLACE_PENDING = 536870912; // 0x20000000
+    field public static final int FLAG_RECEIVER_VISIBLE_TO_INSTANT_APPS = 2097152; // 0x200000
+    field public static final String METADATA_DOCK_HOME = "android.dock_home";
+    field public static final int URI_ALLOW_UNSAFE = 4; // 0x4
+    field public static final int URI_ANDROID_APP_SCHEME = 2; // 0x2
+    field public static final int URI_INTENT_SCHEME = 1; // 0x1
+  }
+
+  public static final class Intent.FilterComparison {
+    ctor public Intent.FilterComparison(android.content.Intent);
+    method public android.content.Intent getIntent();
+  }
+
+  public static class Intent.ShortcutIconResource implements android.os.Parcelable {
+    ctor public Intent.ShortcutIconResource();
+    method public int describeContents();
+    method public static android.content.Intent.ShortcutIconResource fromContext(android.content.Context, @AnyRes int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.Intent.ShortcutIconResource> CREATOR;
+    field public String packageName;
+    field public String resourceName;
+  }
+
+  public class IntentFilter implements android.os.Parcelable {
+    ctor public IntentFilter();
+    ctor public IntentFilter(String);
+    ctor public IntentFilter(String, String) throws android.content.IntentFilter.MalformedMimeTypeException;
+    ctor public IntentFilter(android.content.IntentFilter);
+    method public final java.util.Iterator<java.lang.String> actionsIterator();
+    method public final void addAction(String);
+    method public final void addCategory(String);
+    method public final void addDataAuthority(String, String);
+    method public final void addDataPath(String, int);
+    method public final void addDataScheme(String);
+    method public final void addDataSchemeSpecificPart(String, int);
+    method public final void addDataType(String) throws android.content.IntentFilter.MalformedMimeTypeException;
+    method public final java.util.Iterator<android.content.IntentFilter.AuthorityEntry> authoritiesIterator();
+    method public final java.util.Iterator<java.lang.String> categoriesIterator();
+    method public final int countActions();
+    method public final int countCategories();
+    method public final int countDataAuthorities();
+    method public final int countDataPaths();
+    method public final int countDataSchemeSpecificParts();
+    method public final int countDataSchemes();
+    method public final int countDataTypes();
+    method public static android.content.IntentFilter create(String, String);
+    method public final int describeContents();
+    method public void dump(android.util.Printer, String);
+    method public final String getAction(int);
+    method public final String getCategory(int);
+    method public final android.content.IntentFilter.AuthorityEntry getDataAuthority(int);
+    method public final android.os.PatternMatcher getDataPath(int);
+    method public final String getDataScheme(int);
+    method public final android.os.PatternMatcher getDataSchemeSpecificPart(int);
+    method public final String getDataType(int);
+    method public final int getPriority();
+    method public final boolean hasAction(String);
+    method public final boolean hasCategory(String);
+    method public final boolean hasDataAuthority(android.net.Uri);
+    method public final boolean hasDataPath(String);
+    method public final boolean hasDataScheme(String);
+    method public final boolean hasDataSchemeSpecificPart(String);
+    method public final boolean hasDataType(String);
+    method public final int match(android.content.ContentResolver, android.content.Intent, boolean, String);
+    method public final int match(String, String, String, android.net.Uri, java.util.Set<java.lang.String>, String);
+    method public final boolean matchAction(String);
+    method public final String matchCategories(java.util.Set<java.lang.String>);
+    method public final int matchData(String, String, android.net.Uri);
+    method public final int matchDataAuthority(android.net.Uri);
+    method public final java.util.Iterator<android.os.PatternMatcher> pathsIterator();
+    method public void readFromXml(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method public final java.util.Iterator<android.os.PatternMatcher> schemeSpecificPartsIterator();
+    method public final java.util.Iterator<java.lang.String> schemesIterator();
+    method public final void setPriority(int);
+    method public final java.util.Iterator<java.lang.String> typesIterator();
+    method public final void writeToParcel(android.os.Parcel, int);
+    method public void writeToXml(org.xmlpull.v1.XmlSerializer) throws java.io.IOException;
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.IntentFilter> CREATOR;
+    field public static final int MATCH_ADJUSTMENT_MASK = 65535; // 0xffff
+    field public static final int MATCH_ADJUSTMENT_NORMAL = 32768; // 0x8000
+    field public static final int MATCH_CATEGORY_EMPTY = 1048576; // 0x100000
+    field public static final int MATCH_CATEGORY_HOST = 3145728; // 0x300000
+    field public static final int MATCH_CATEGORY_MASK = 268369920; // 0xfff0000
+    field public static final int MATCH_CATEGORY_PATH = 5242880; // 0x500000
+    field public static final int MATCH_CATEGORY_PORT = 4194304; // 0x400000
+    field public static final int MATCH_CATEGORY_SCHEME = 2097152; // 0x200000
+    field public static final int MATCH_CATEGORY_SCHEME_SPECIFIC_PART = 5767168; // 0x580000
+    field public static final int MATCH_CATEGORY_TYPE = 6291456; // 0x600000
+    field public static final int NO_MATCH_ACTION = -3; // 0xfffffffd
+    field public static final int NO_MATCH_CATEGORY = -4; // 0xfffffffc
+    field public static final int NO_MATCH_DATA = -2; // 0xfffffffe
+    field public static final int NO_MATCH_TYPE = -1; // 0xffffffff
+    field public static final int SYSTEM_HIGH_PRIORITY = 1000; // 0x3e8
+    field public static final int SYSTEM_LOW_PRIORITY = -1000; // 0xfffffc18
+  }
+
+  public static final class IntentFilter.AuthorityEntry {
+    ctor public IntentFilter.AuthorityEntry(String, String);
+    method public String getHost();
+    method public int getPort();
+    method public int match(android.net.Uri);
+  }
+
+  public static class IntentFilter.MalformedMimeTypeException extends android.util.AndroidException {
+    ctor public IntentFilter.MalformedMimeTypeException();
+    ctor public IntentFilter.MalformedMimeTypeException(String);
+  }
+
+  public class IntentSender implements android.os.Parcelable {
+    method public int describeContents();
+    method public String getCreatorPackage();
+    method public int getCreatorUid();
+    method public android.os.UserHandle getCreatorUserHandle();
+    method @Deprecated public String getTargetPackage();
+    method public static android.content.IntentSender readIntentSenderOrNullFromParcel(android.os.Parcel);
+    method public void sendIntent(android.content.Context, int, android.content.Intent, android.content.IntentSender.OnFinished, android.os.Handler) throws android.content.IntentSender.SendIntentException;
+    method public void sendIntent(android.content.Context, int, android.content.Intent, android.content.IntentSender.OnFinished, android.os.Handler, String) throws android.content.IntentSender.SendIntentException;
+    method public static void writeIntentSenderOrNullToParcel(android.content.IntentSender, android.os.Parcel);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.IntentSender> CREATOR;
+  }
+
+  public static interface IntentSender.OnFinished {
+    method public void onSendFinished(android.content.IntentSender, android.content.Intent, int, String, android.os.Bundle);
+  }
+
+  public static class IntentSender.SendIntentException extends android.util.AndroidException {
+    ctor public IntentSender.SendIntentException();
+    ctor public IntentSender.SendIntentException(String);
+    ctor public IntentSender.SendIntentException(Exception);
+  }
+
+  @Deprecated public class Loader<D> {
+    ctor @Deprecated public Loader(android.content.Context);
+    method @Deprecated public void abandon();
+    method @Deprecated public boolean cancelLoad();
+    method @Deprecated public void commitContentChanged();
+    method @Deprecated public String dataToString(D);
+    method @Deprecated public void deliverCancellation();
+    method @Deprecated public void deliverResult(D);
+    method @Deprecated public void dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
+    method @Deprecated public void forceLoad();
+    method @Deprecated public android.content.Context getContext();
+    method @Deprecated public int getId();
+    method @Deprecated public boolean isAbandoned();
+    method @Deprecated public boolean isReset();
+    method @Deprecated public boolean isStarted();
+    method @Deprecated protected void onAbandon();
+    method @Deprecated protected boolean onCancelLoad();
+    method @Deprecated public void onContentChanged();
+    method @Deprecated protected void onForceLoad();
+    method @Deprecated protected void onReset();
+    method @Deprecated protected void onStartLoading();
+    method @Deprecated protected void onStopLoading();
+    method @Deprecated public void registerListener(int, android.content.Loader.OnLoadCompleteListener<D>);
+    method @Deprecated public void registerOnLoadCanceledListener(android.content.Loader.OnLoadCanceledListener<D>);
+    method @Deprecated public void reset();
+    method @Deprecated public void rollbackContentChanged();
+    method @Deprecated public final void startLoading();
+    method @Deprecated public void stopLoading();
+    method @Deprecated public boolean takeContentChanged();
+    method @Deprecated public void unregisterListener(android.content.Loader.OnLoadCompleteListener<D>);
+    method @Deprecated public void unregisterOnLoadCanceledListener(android.content.Loader.OnLoadCanceledListener<D>);
+  }
+
+  @Deprecated public final class Loader.ForceLoadContentObserver extends android.database.ContentObserver {
+    ctor @Deprecated public Loader.ForceLoadContentObserver();
+  }
+
+  @Deprecated public static interface Loader.OnLoadCanceledListener<D> {
+    method @Deprecated public void onLoadCanceled(android.content.Loader<D>);
+  }
+
+  @Deprecated public static interface Loader.OnLoadCompleteListener<D> {
+    method @Deprecated public void onLoadComplete(android.content.Loader<D>, D);
+  }
+
+  public final class LocusId implements android.os.Parcelable {
+    ctor public LocusId(@NonNull String);
+    method public int describeContents();
+    method @NonNull public String getId();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.LocusId> CREATOR;
+  }
+
+  public class MutableContextWrapper extends android.content.ContextWrapper {
+    ctor public MutableContextWrapper(android.content.Context);
+    method public void setBaseContext(android.content.Context);
+  }
+
+  public class OperationApplicationException extends java.lang.Exception {
+    ctor public OperationApplicationException();
+    ctor public OperationApplicationException(String);
+    ctor public OperationApplicationException(String, Throwable);
+    ctor public OperationApplicationException(Throwable);
+    ctor public OperationApplicationException(int);
+    ctor public OperationApplicationException(String, int);
+    method public int getNumSuccessfulYieldPoints();
+  }
+
+  public class PeriodicSync implements android.os.Parcelable {
+    ctor public PeriodicSync(android.accounts.Account, String, android.os.Bundle, long);
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.PeriodicSync> CREATOR;
+    field public final android.accounts.Account account;
+    field public final String authority;
+    field public final android.os.Bundle extras;
+    field public final long period;
+  }
+
+  public class QuickViewConstants {
+    field public static final String FEATURE_DELETE = "android:delete";
+    field public static final String FEATURE_DOWNLOAD = "android:download";
+    field public static final String FEATURE_EDIT = "android:edit";
+    field public static final String FEATURE_PRINT = "android:print";
+    field public static final String FEATURE_SEND = "android:send";
+    field public static final String FEATURE_VIEW = "android:view";
+  }
+
+  public class ReceiverCallNotAllowedException extends android.util.AndroidRuntimeException {
+    ctor public ReceiverCallNotAllowedException(String);
+  }
+
+  public class RestrictionEntry implements android.os.Parcelable {
+    ctor public RestrictionEntry(int, String);
+    ctor public RestrictionEntry(String, String);
+    ctor public RestrictionEntry(String, boolean);
+    ctor public RestrictionEntry(String, String[]);
+    ctor public RestrictionEntry(String, int);
+    ctor public RestrictionEntry(android.os.Parcel);
+    method public static android.content.RestrictionEntry createBundleArrayEntry(String, android.content.RestrictionEntry[]);
+    method public static android.content.RestrictionEntry createBundleEntry(String, android.content.RestrictionEntry[]);
+    method public int describeContents();
+    method public String[] getAllSelectedStrings();
+    method public String[] getChoiceEntries();
+    method public String[] getChoiceValues();
+    method public String getDescription();
+    method public int getIntValue();
+    method public String getKey();
+    method public android.content.RestrictionEntry[] getRestrictions();
+    method public boolean getSelectedState();
+    method public String getSelectedString();
+    method public String getTitle();
+    method public int getType();
+    method public void setAllSelectedStrings(String[]);
+    method public void setChoiceEntries(String[]);
+    method public void setChoiceEntries(android.content.Context, @ArrayRes int);
+    method public void setChoiceValues(String[]);
+    method public void setChoiceValues(android.content.Context, @ArrayRes int);
+    method public void setDescription(String);
+    method public void setIntValue(int);
+    method public void setRestrictions(android.content.RestrictionEntry[]);
+    method public void setSelectedState(boolean);
+    method public void setSelectedString(String);
+    method public void setTitle(String);
+    method public void setType(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.RestrictionEntry> CREATOR;
+    field public static final int TYPE_BOOLEAN = 1; // 0x1
+    field public static final int TYPE_BUNDLE = 7; // 0x7
+    field public static final int TYPE_BUNDLE_ARRAY = 8; // 0x8
+    field public static final int TYPE_CHOICE = 2; // 0x2
+    field public static final int TYPE_INTEGER = 5; // 0x5
+    field public static final int TYPE_MULTI_SELECT = 4; // 0x4
+    field public static final int TYPE_NULL = 0; // 0x0
+    field public static final int TYPE_STRING = 6; // 0x6
+  }
+
+  public class RestrictionsManager {
+    method public static android.os.Bundle convertRestrictionsToBundle(java.util.List<android.content.RestrictionEntry>);
+    method public android.content.Intent createLocalApprovalIntent();
+    method public android.os.Bundle getApplicationRestrictions();
+    method public java.util.List<android.content.RestrictionEntry> getManifestRestrictions(String);
+    method public boolean hasRestrictionsProvider();
+    method public void notifyPermissionResponse(String, android.os.PersistableBundle);
+    method public void requestPermission(String, String, android.os.PersistableBundle);
+    field public static final String ACTION_PERMISSION_RESPONSE_RECEIVED = "android.content.action.PERMISSION_RESPONSE_RECEIVED";
+    field public static final String ACTION_REQUEST_LOCAL_APPROVAL = "android.content.action.REQUEST_LOCAL_APPROVAL";
+    field public static final String ACTION_REQUEST_PERMISSION = "android.content.action.REQUEST_PERMISSION";
+    field public static final String EXTRA_PACKAGE_NAME = "android.content.extra.PACKAGE_NAME";
+    field public static final String EXTRA_REQUEST_BUNDLE = "android.content.extra.REQUEST_BUNDLE";
+    field public static final String EXTRA_REQUEST_ID = "android.content.extra.REQUEST_ID";
+    field public static final String EXTRA_REQUEST_TYPE = "android.content.extra.REQUEST_TYPE";
+    field public static final String EXTRA_RESPONSE_BUNDLE = "android.content.extra.RESPONSE_BUNDLE";
+    field public static final String META_DATA_APP_RESTRICTIONS = "android.content.APP_RESTRICTIONS";
+    field public static final String REQUEST_KEY_APPROVE_LABEL = "android.request.approve_label";
+    field public static final String REQUEST_KEY_DATA = "android.request.data";
+    field public static final String REQUEST_KEY_DENY_LABEL = "android.request.deny_label";
+    field public static final String REQUEST_KEY_ICON = "android.request.icon";
+    field public static final String REQUEST_KEY_ID = "android.request.id";
+    field public static final String REQUEST_KEY_MESSAGE = "android.request.mesg";
+    field public static final String REQUEST_KEY_NEW_REQUEST = "android.request.new_request";
+    field public static final String REQUEST_KEY_TITLE = "android.request.title";
+    field public static final String REQUEST_TYPE_APPROVAL = "android.request.type.approval";
+    field public static final String RESPONSE_KEY_ERROR_CODE = "android.response.errorcode";
+    field public static final String RESPONSE_KEY_MESSAGE = "android.response.msg";
+    field public static final String RESPONSE_KEY_RESPONSE_TIMESTAMP = "android.response.timestamp";
+    field public static final String RESPONSE_KEY_RESULT = "android.response.result";
+    field public static final int RESULT_APPROVED = 1; // 0x1
+    field public static final int RESULT_DENIED = 2; // 0x2
+    field public static final int RESULT_ERROR = 5; // 0x5
+    field public static final int RESULT_ERROR_BAD_REQUEST = 1; // 0x1
+    field public static final int RESULT_ERROR_INTERNAL = 3; // 0x3
+    field public static final int RESULT_ERROR_NETWORK = 2; // 0x2
+    field public static final int RESULT_NO_RESPONSE = 3; // 0x3
+    field public static final int RESULT_UNKNOWN_REQUEST = 4; // 0x4
+  }
+
+  public class SearchRecentSuggestionsProvider extends android.content.ContentProvider {
+    ctor public SearchRecentSuggestionsProvider();
+    method public int delete(android.net.Uri, String, String[]);
+    method public String getType(android.net.Uri);
+    method public android.net.Uri insert(android.net.Uri, android.content.ContentValues);
+    method public boolean onCreate();
+    method public android.database.Cursor query(android.net.Uri, String[], String, String[], String);
+    method protected void setupSuggestions(String, int);
+    method public int update(android.net.Uri, android.content.ContentValues, String, String[]);
+    field public static final int DATABASE_MODE_2LINES = 2; // 0x2
+    field public static final int DATABASE_MODE_QUERIES = 1; // 0x1
+  }
+
+  public interface ServiceConnection {
+    method public default void onBindingDied(android.content.ComponentName);
+    method public default void onNullBinding(android.content.ComponentName);
+    method public void onServiceConnected(android.content.ComponentName, android.os.IBinder);
+    method public void onServiceDisconnected(android.content.ComponentName);
+  }
+
+  public interface SharedPreferences {
+    method public boolean contains(String);
+    method public android.content.SharedPreferences.Editor edit();
+    method public java.util.Map<java.lang.String,?> getAll();
+    method public boolean getBoolean(String, boolean);
+    method public float getFloat(String, float);
+    method public int getInt(String, int);
+    method public long getLong(String, long);
+    method @Nullable public String getString(String, @Nullable String);
+    method @Nullable public java.util.Set<java.lang.String> getStringSet(String, @Nullable java.util.Set<java.lang.String>);
+    method public void registerOnSharedPreferenceChangeListener(android.content.SharedPreferences.OnSharedPreferenceChangeListener);
+    method public void unregisterOnSharedPreferenceChangeListener(android.content.SharedPreferences.OnSharedPreferenceChangeListener);
+  }
+
+  public static interface SharedPreferences.Editor {
+    method public void apply();
+    method public android.content.SharedPreferences.Editor clear();
+    method public boolean commit();
+    method public android.content.SharedPreferences.Editor putBoolean(String, boolean);
+    method public android.content.SharedPreferences.Editor putFloat(String, float);
+    method public android.content.SharedPreferences.Editor putInt(String, int);
+    method public android.content.SharedPreferences.Editor putLong(String, long);
+    method public android.content.SharedPreferences.Editor putString(String, @Nullable String);
+    method public android.content.SharedPreferences.Editor putStringSet(String, @Nullable java.util.Set<java.lang.String>);
+    method public android.content.SharedPreferences.Editor remove(String);
+  }
+
+  public static interface SharedPreferences.OnSharedPreferenceChangeListener {
+    method public void onSharedPreferenceChanged(android.content.SharedPreferences, String);
+  }
+
+  public class SyncAdapterType implements android.os.Parcelable {
+    ctor public SyncAdapterType(String, String, boolean, boolean);
+    ctor public SyncAdapterType(android.os.Parcel);
+    method public boolean allowParallelSyncs();
+    method public int describeContents();
+    method public String getSettingsActivity();
+    method public boolean isAlwaysSyncable();
+    method public boolean isUserVisible();
+    method public static android.content.SyncAdapterType newKey(String, String);
+    method public boolean supportsUploading();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.SyncAdapterType> CREATOR;
+    field public final String accountType;
+    field public final String authority;
+    field public final boolean isKey;
+  }
+
+  public class SyncContext {
+    method public android.os.IBinder getSyncContextBinder();
+    method public void onFinished(android.content.SyncResult);
+  }
+
+  public class SyncInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public final android.accounts.Account account;
+    field public final String authority;
+    field public final long startTime;
+  }
+
+  public class SyncRequest implements android.os.Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.SyncRequest> CREATOR;
+  }
+
+  public static class SyncRequest.Builder {
+    ctor public SyncRequest.Builder();
+    method public android.content.SyncRequest build();
+    method public android.content.SyncRequest.Builder setDisallowMetered(boolean);
+    method public android.content.SyncRequest.Builder setExpedited(boolean);
+    method public android.content.SyncRequest.Builder setExtras(android.os.Bundle);
+    method public android.content.SyncRequest.Builder setIgnoreBackoff(boolean);
+    method public android.content.SyncRequest.Builder setIgnoreSettings(boolean);
+    method public android.content.SyncRequest.Builder setManual(boolean);
+    method public android.content.SyncRequest.Builder setNoRetry(boolean);
+    method public android.content.SyncRequest.Builder setRequiresCharging(boolean);
+    method public android.content.SyncRequest.Builder setSyncAdapter(android.accounts.Account, String);
+    method public android.content.SyncRequest.Builder syncOnce();
+    method public android.content.SyncRequest.Builder syncPeriodic(long, long);
+  }
+
+  public final class SyncResult implements android.os.Parcelable {
+    ctor public SyncResult();
+    method public void clear();
+    method public int describeContents();
+    method public boolean hasError();
+    method public boolean hasHardError();
+    method public boolean hasSoftError();
+    method public boolean madeSomeProgress();
+    method public String toDebugString();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final android.content.SyncResult ALREADY_IN_PROGRESS;
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.SyncResult> CREATOR;
+    field public boolean databaseError;
+    field public long delayUntil;
+    field public boolean fullSyncRequested;
+    field public boolean moreRecordsToGet;
+    field public boolean partialSyncUnavailable;
+    field public final android.content.SyncStats stats;
+    field public final boolean syncAlreadyInProgress;
+    field public boolean tooManyDeletions;
+    field public boolean tooManyRetries;
+  }
+
+  public class SyncStats implements android.os.Parcelable {
+    ctor public SyncStats();
+    ctor public SyncStats(android.os.Parcel);
+    method public void clear();
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.SyncStats> CREATOR;
+    field public long numAuthExceptions;
+    field public long numConflictDetectedExceptions;
+    field public long numDeletes;
+    field public long numEntries;
+    field public long numInserts;
+    field public long numIoExceptions;
+    field public long numParseExceptions;
+    field public long numSkippedEntries;
+    field public long numUpdates;
+  }
+
+  public interface SyncStatusObserver {
+    method public void onStatusChanged(int);
+  }
+
+  public class UriMatcher {
+    ctor public UriMatcher(int);
+    method public void addURI(String, String, int);
+    method public int match(android.net.Uri);
+    field public static final int NO_MATCH = -1; // 0xffffffff
+  }
+
+  public final class UriPermission implements android.os.Parcelable {
+    method public int describeContents();
+    method public long getPersistedTime();
+    method public android.net.Uri getUri();
+    method public boolean isReadPermission();
+    method public boolean isWritePermission();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.UriPermission> CREATOR;
+    field public static final long INVALID_TIME = -9223372036854775808L; // 0x8000000000000000L
+  }
+
+}
+
+package android.content.pm {
+
+  public class ActivityInfo extends android.content.pm.ComponentInfo implements android.os.Parcelable {
+    ctor public ActivityInfo();
+    ctor public ActivityInfo(android.content.pm.ActivityInfo);
+    method public int describeContents();
+    method public void dump(android.util.Printer, String);
+    method public final int getThemeResource();
+    field public static final int COLOR_MODE_DEFAULT = 0; // 0x0
+    field public static final int COLOR_MODE_HDR = 2; // 0x2
+    field public static final int COLOR_MODE_WIDE_COLOR_GAMUT = 1; // 0x1
+    field public static final int CONFIG_COLOR_MODE = 16384; // 0x4000
+    field public static final int CONFIG_DENSITY = 4096; // 0x1000
+    field public static final int CONFIG_FONT_SCALE = 1073741824; // 0x40000000
+    field public static final int CONFIG_KEYBOARD = 16; // 0x10
+    field public static final int CONFIG_KEYBOARD_HIDDEN = 32; // 0x20
+    field public static final int CONFIG_LAYOUT_DIRECTION = 8192; // 0x2000
+    field public static final int CONFIG_LOCALE = 4; // 0x4
+    field public static final int CONFIG_MCC = 1; // 0x1
+    field public static final int CONFIG_MNC = 2; // 0x2
+    field public static final int CONFIG_NAVIGATION = 64; // 0x40
+    field public static final int CONFIG_ORIENTATION = 128; // 0x80
+    field public static final int CONFIG_SCREEN_LAYOUT = 256; // 0x100
+    field public static final int CONFIG_SCREEN_SIZE = 1024; // 0x400
+    field public static final int CONFIG_SMALLEST_SCREEN_SIZE = 2048; // 0x800
+    field public static final int CONFIG_TOUCHSCREEN = 8; // 0x8
+    field public static final int CONFIG_UI_MODE = 512; // 0x200
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ActivityInfo> CREATOR;
+    field public static final int DOCUMENT_LAUNCH_ALWAYS = 2; // 0x2
+    field public static final int DOCUMENT_LAUNCH_INTO_EXISTING = 1; // 0x1
+    field public static final int DOCUMENT_LAUNCH_NEVER = 3; // 0x3
+    field public static final int DOCUMENT_LAUNCH_NONE = 0; // 0x0
+    field public static final int FLAG_ALLOW_TASK_REPARENTING = 64; // 0x40
+    field public static final int FLAG_ALWAYS_RETAIN_TASK_STATE = 8; // 0x8
+    field public static final int FLAG_AUTO_REMOVE_FROM_RECENTS = 8192; // 0x2000
+    field public static final int FLAG_CLEAR_TASK_ON_LAUNCH = 4; // 0x4
+    field public static final int FLAG_ENABLE_VR_MODE = 32768; // 0x8000
+    field public static final int FLAG_EXCLUDE_FROM_RECENTS = 32; // 0x20
+    field public static final int FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS = 256; // 0x100
+    field public static final int FLAG_FINISH_ON_TASK_LAUNCH = 2; // 0x2
+    field public static final int FLAG_HARDWARE_ACCELERATED = 512; // 0x200
+    field public static final int FLAG_IMMERSIVE = 2048; // 0x800
+    field public static final int FLAG_MULTIPROCESS = 1; // 0x1
+    field public static final int FLAG_NO_HISTORY = 128; // 0x80
+    field public static final int FLAG_PREFER_MINIMAL_POST_PROCESSING = 33554432; // 0x2000000
+    field public static final int FLAG_RELINQUISH_TASK_IDENTITY = 4096; // 0x1000
+    field public static final int FLAG_RESUME_WHILE_PAUSING = 16384; // 0x4000
+    field public static final int FLAG_SINGLE_USER = 1073741824; // 0x40000000
+    field public static final int FLAG_STATE_NOT_NEEDED = 16; // 0x10
+    field public static final int LAUNCH_MULTIPLE = 0; // 0x0
+    field public static final int LAUNCH_SINGLE_INSTANCE = 3; // 0x3
+    field public static final int LAUNCH_SINGLE_TASK = 2; // 0x2
+    field public static final int LAUNCH_SINGLE_TOP = 1; // 0x1
+    field public static final int PERSIST_ACROSS_REBOOTS = 2; // 0x2
+    field public static final int PERSIST_NEVER = 1; // 0x1
+    field public static final int PERSIST_ROOT_ONLY = 0; // 0x0
+    field public static final int SCREEN_ORIENTATION_BEHIND = 3; // 0x3
+    field public static final int SCREEN_ORIENTATION_FULL_SENSOR = 10; // 0xa
+    field public static final int SCREEN_ORIENTATION_FULL_USER = 13; // 0xd
+    field public static final int SCREEN_ORIENTATION_LANDSCAPE = 0; // 0x0
+    field public static final int SCREEN_ORIENTATION_LOCKED = 14; // 0xe
+    field public static final int SCREEN_ORIENTATION_NOSENSOR = 5; // 0x5
+    field public static final int SCREEN_ORIENTATION_PORTRAIT = 1; // 0x1
+    field public static final int SCREEN_ORIENTATION_REVERSE_LANDSCAPE = 8; // 0x8
+    field public static final int SCREEN_ORIENTATION_REVERSE_PORTRAIT = 9; // 0x9
+    field public static final int SCREEN_ORIENTATION_SENSOR = 4; // 0x4
+    field public static final int SCREEN_ORIENTATION_SENSOR_LANDSCAPE = 6; // 0x6
+    field public static final int SCREEN_ORIENTATION_SENSOR_PORTRAIT = 7; // 0x7
+    field public static final int SCREEN_ORIENTATION_UNSPECIFIED = -1; // 0xffffffff
+    field public static final int SCREEN_ORIENTATION_USER = 2; // 0x2
+    field public static final int SCREEN_ORIENTATION_USER_LANDSCAPE = 11; // 0xb
+    field public static final int SCREEN_ORIENTATION_USER_PORTRAIT = 12; // 0xc
+    field public static final int UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW = 1; // 0x1
+    field public int colorMode;
+    field public int configChanges;
+    field public int documentLaunchMode;
+    field public int flags;
+    field public int launchMode;
+    field public int maxRecents;
+    field public String parentActivityName;
+    field public String permission;
+    field public int persistableMode;
+    field public int screenOrientation;
+    field public int softInputMode;
+    field public String targetActivity;
+    field public String taskAffinity;
+    field public int theme;
+    field public int uiOptions;
+    field public android.content.pm.ActivityInfo.WindowLayout windowLayout;
+  }
+
+  public static final class ActivityInfo.WindowLayout {
+    ctor public ActivityInfo.WindowLayout(int, float, int, float, int, int, int);
+    field public final int gravity;
+    field public final int height;
+    field public final float heightFraction;
+    field public final int minHeight;
+    field public final int minWidth;
+    field public final int width;
+    field public final float widthFraction;
+  }
+
+  public class ApplicationInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
+    ctor public ApplicationInfo();
+    ctor public ApplicationInfo(android.content.pm.ApplicationInfo);
+    method public int describeContents();
+    method public void dump(android.util.Printer, String);
+    method public static CharSequence getCategoryTitle(android.content.Context, int);
+    method public int getGwpAsanMode();
+    method public boolean isProfileableByShell();
+    method public boolean isResourceOverlay();
+    method public boolean isVirtualPreload();
+    method public CharSequence loadDescription(android.content.pm.PackageManager);
+    field public static final int CATEGORY_AUDIO = 1; // 0x1
+    field public static final int CATEGORY_GAME = 0; // 0x0
+    field public static final int CATEGORY_IMAGE = 3; // 0x3
+    field public static final int CATEGORY_MAPS = 6; // 0x6
+    field public static final int CATEGORY_NEWS = 5; // 0x5
+    field public static final int CATEGORY_PRODUCTIVITY = 7; // 0x7
+    field public static final int CATEGORY_SOCIAL = 4; // 0x4
+    field public static final int CATEGORY_UNDEFINED = -1; // 0xffffffff
+    field public static final int CATEGORY_VIDEO = 2; // 0x2
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ApplicationInfo> CREATOR;
+    field public static final int FLAG_ALLOW_BACKUP = 32768; // 0x8000
+    field public static final int FLAG_ALLOW_CLEAR_USER_DATA = 64; // 0x40
+    field public static final int FLAG_ALLOW_TASK_REPARENTING = 32; // 0x20
+    field public static final int FLAG_DEBUGGABLE = 2; // 0x2
+    field public static final int FLAG_EXTERNAL_STORAGE = 262144; // 0x40000
+    field public static final int FLAG_EXTRACT_NATIVE_LIBS = 268435456; // 0x10000000
+    field public static final int FLAG_FACTORY_TEST = 16; // 0x10
+    field public static final int FLAG_FULL_BACKUP_ONLY = 67108864; // 0x4000000
+    field public static final int FLAG_HARDWARE_ACCELERATED = 536870912; // 0x20000000
+    field public static final int FLAG_HAS_CODE = 4; // 0x4
+    field public static final int FLAG_INSTALLED = 8388608; // 0x800000
+    field public static final int FLAG_IS_DATA_ONLY = 16777216; // 0x1000000
+    field @Deprecated public static final int FLAG_IS_GAME = 33554432; // 0x2000000
+    field public static final int FLAG_KILL_AFTER_RESTORE = 65536; // 0x10000
+    field public static final int FLAG_LARGE_HEAP = 1048576; // 0x100000
+    field public static final int FLAG_MULTIARCH = -2147483648; // 0x80000000
+    field public static final int FLAG_PERSISTENT = 8; // 0x8
+    field public static final int FLAG_RESIZEABLE_FOR_SCREENS = 4096; // 0x1000
+    field public static final int FLAG_RESTORE_ANY_VERSION = 131072; // 0x20000
+    field public static final int FLAG_STOPPED = 2097152; // 0x200000
+    field public static final int FLAG_SUPPORTS_LARGE_SCREENS = 2048; // 0x800
+    field public static final int FLAG_SUPPORTS_NORMAL_SCREENS = 1024; // 0x400
+    field public static final int FLAG_SUPPORTS_RTL = 4194304; // 0x400000
+    field @Deprecated public static final int FLAG_SUPPORTS_SCREEN_DENSITIES = 8192; // 0x2000
+    field public static final int FLAG_SUPPORTS_SMALL_SCREENS = 512; // 0x200
+    field public static final int FLAG_SUPPORTS_XLARGE_SCREENS = 524288; // 0x80000
+    field public static final int FLAG_SUSPENDED = 1073741824; // 0x40000000
+    field public static final int FLAG_SYSTEM = 1; // 0x1
+    field public static final int FLAG_TEST_ONLY = 256; // 0x100
+    field public static final int FLAG_UPDATED_SYSTEM_APP = 128; // 0x80
+    field public static final int FLAG_USES_CLEARTEXT_TRAFFIC = 134217728; // 0x8000000
+    field public static final int FLAG_VM_SAFE_MODE = 16384; // 0x4000
+    field public static final int GWP_ASAN_ALWAYS = 1; // 0x1
+    field public static final int GWP_ASAN_DEFAULT = -1; // 0xffffffff
+    field public static final int GWP_ASAN_NEVER = 0; // 0x0
+    field public String appComponentFactory;
+    field public String backupAgentName;
+    field public int category;
+    field public String className;
+    field public int compatibleWidthLimitDp;
+    field public String dataDir;
+    field public int descriptionRes;
+    field public String deviceProtectedDataDir;
+    field public boolean enabled;
+    field public int flags;
+    field public int largestWidthLimitDp;
+    field public String manageSpaceActivityName;
+    field public int minSdkVersion;
+    field public String nativeLibraryDir;
+    field public String permission;
+    field public String processName;
+    field public String publicSourceDir;
+    field public int requiresSmallestWidthDp;
+    field public String[] sharedLibraryFiles;
+    field public String sourceDir;
+    field public String[] splitNames;
+    field public String[] splitPublicSourceDirs;
+    field public String[] splitSourceDirs;
+    field public java.util.UUID storageUuid;
+    field public int targetSdkVersion;
+    field public String taskAffinity;
+    field public int theme;
+    field public int uiOptions;
+    field public int uid;
+  }
+
+  public static class ApplicationInfo.DisplayNameComparator implements java.util.Comparator<android.content.pm.ApplicationInfo> {
+    ctor public ApplicationInfo.DisplayNameComparator(android.content.pm.PackageManager);
+    method public final int compare(android.content.pm.ApplicationInfo, android.content.pm.ApplicationInfo);
+  }
+
+  public final class ChangedPackages implements android.os.Parcelable {
+    ctor public ChangedPackages(int, @NonNull java.util.List<java.lang.String>);
+    method public int describeContents();
+    method @NonNull public java.util.List<java.lang.String> getPackageNames();
+    method public int getSequenceNumber();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ChangedPackages> CREATOR;
+  }
+
+  public class ComponentInfo extends android.content.pm.PackageItemInfo {
+    ctor public ComponentInfo();
+    ctor public ComponentInfo(android.content.pm.ComponentInfo);
+    ctor protected ComponentInfo(android.os.Parcel);
+    method public final int getBannerResource();
+    method public final int getIconResource();
+    method public final int getLogoResource();
+    method public boolean isEnabled();
+    field public android.content.pm.ApplicationInfo applicationInfo;
+    field public int descriptionRes;
+    field public boolean directBootAware;
+    field public boolean enabled;
+    field public boolean exported;
+    field public String processName;
+    field public String splitName;
+  }
+
+  public class ConfigurationInfo implements android.os.Parcelable {
+    ctor public ConfigurationInfo();
+    ctor public ConfigurationInfo(android.content.pm.ConfigurationInfo);
+    method public int describeContents();
+    method public String getGlEsVersion();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ConfigurationInfo> CREATOR;
+    field public static final int GL_ES_VERSION_UNDEFINED = 0; // 0x0
+    field public static final int INPUT_FEATURE_FIVE_WAY_NAV = 2; // 0x2
+    field public static final int INPUT_FEATURE_HARD_KEYBOARD = 1; // 0x1
+    field public int reqGlEsVersion;
+    field public int reqInputFeatures;
+    field public int reqKeyboardType;
+    field public int reqNavigation;
+    field public int reqTouchScreen;
+  }
+
+  public class CrossProfileApps {
+    method public boolean canInteractAcrossProfiles();
+    method public boolean canRequestInteractAcrossProfiles();
+    method @NonNull public android.content.Intent createRequestInteractAcrossProfilesIntent();
+    method @NonNull public android.graphics.drawable.Drawable getProfileSwitchingIconDrawable(@NonNull android.os.UserHandle);
+    method @NonNull public CharSequence getProfileSwitchingLabel(@NonNull android.os.UserHandle);
+    method @NonNull public java.util.List<android.os.UserHandle> getTargetUserProfiles();
+    method @RequiresPermission(anyOf={android.Manifest.permission.INTERACT_ACROSS_PROFILES, "android.permission.INTERACT_ACROSS_USERS"}) public void startActivity(@NonNull android.content.Intent, @NonNull android.os.UserHandle, @Nullable android.app.Activity);
+    method @RequiresPermission(anyOf={android.Manifest.permission.INTERACT_ACROSS_PROFILES, "android.permission.INTERACT_ACROSS_USERS"}) public void startActivity(@NonNull android.content.Intent, @NonNull android.os.UserHandle, @Nullable android.app.Activity, @Nullable android.os.Bundle);
+    method public void startMainActivity(@NonNull android.content.ComponentName, @NonNull android.os.UserHandle);
+    field public static final String ACTION_CAN_INTERACT_ACROSS_PROFILES_CHANGED = "android.content.pm.action.CAN_INTERACT_ACROSS_PROFILES_CHANGED";
+  }
+
+  public final class FeatureGroupInfo implements android.os.Parcelable {
+    ctor public FeatureGroupInfo();
+    ctor public FeatureGroupInfo(android.content.pm.FeatureGroupInfo);
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.FeatureGroupInfo> CREATOR;
+    field public android.content.pm.FeatureInfo[] features;
+  }
+
+  public class FeatureInfo implements android.os.Parcelable {
+    ctor public FeatureInfo();
+    ctor public FeatureInfo(android.content.pm.FeatureInfo);
+    method public int describeContents();
+    method public String getGlEsVersion();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.FeatureInfo> CREATOR;
+    field public static final int FLAG_REQUIRED = 1; // 0x1
+    field public static final int GL_ES_VERSION_UNDEFINED = 0; // 0x0
+    field public int flags;
+    field public String name;
+    field public int reqGlEsVersion;
+    field public int version;
+  }
+
+  public final class InstallSourceInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public String getInitiatingPackageName();
+    method @Nullable public android.content.pm.SigningInfo getInitiatingPackageSigningInfo();
+    method @Nullable public String getInstallingPackageName();
+    method @Nullable public String getOriginatingPackageName();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstallSourceInfo> CREATOR;
+  }
+
+  public class InstrumentationInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
+    ctor public InstrumentationInfo();
+    ctor public InstrumentationInfo(android.content.pm.InstrumentationInfo);
+    method public int describeContents();
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstrumentationInfo> CREATOR;
+    field public String dataDir;
+    field public boolean functionalTest;
+    field public boolean handleProfiling;
+    field public String publicSourceDir;
+    field public String sourceDir;
+    field public String[] splitNames;
+    field public String[] splitPublicSourceDirs;
+    field public String[] splitSourceDirs;
+    field public String targetPackage;
+    field public String targetProcesses;
+  }
+
+  public class LabeledIntent extends android.content.Intent {
+    ctor public LabeledIntent(android.content.Intent, String, int, int);
+    ctor public LabeledIntent(android.content.Intent, String, CharSequence, int);
+    ctor public LabeledIntent(String, int, int);
+    ctor public LabeledIntent(String, CharSequence, int);
+    method public int getIconResource();
+    method public int getLabelResource();
+    method public CharSequence getNonLocalizedLabel();
+    method public String getSourcePackage();
+    method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
+    method public CharSequence loadLabel(android.content.pm.PackageManager);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.LabeledIntent> CREATOR;
+  }
+
+  public class LauncherActivityInfo {
+    method public android.content.pm.ApplicationInfo getApplicationInfo();
+    method public android.graphics.drawable.Drawable getBadgedIcon(int);
+    method public android.content.ComponentName getComponentName();
+    method public long getFirstInstallTime();
+    method public android.graphics.drawable.Drawable getIcon(int);
+    method public CharSequence getLabel();
+    method public String getName();
+    method public android.os.UserHandle getUser();
+  }
+
+  public class LauncherApps {
+    method public java.util.List<android.content.pm.LauncherActivityInfo> getActivityList(String, android.os.UserHandle);
+    method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getAllPackageInstallerSessions();
+    method public android.content.pm.ApplicationInfo getApplicationInfo(@NonNull String, int, @NonNull android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
+    method public android.content.pm.LauncherApps.PinItemRequest getPinItemRequest(android.content.Intent);
+    method public java.util.List<android.os.UserHandle> getProfiles();
+    method public android.graphics.drawable.Drawable getShortcutBadgedIconDrawable(android.content.pm.ShortcutInfo, int);
+    method @Nullable public android.content.IntentSender getShortcutConfigActivityIntent(@NonNull android.content.pm.LauncherActivityInfo);
+    method public java.util.List<android.content.pm.LauncherActivityInfo> getShortcutConfigActivityList(@Nullable String, @NonNull android.os.UserHandle);
+    method public android.graphics.drawable.Drawable getShortcutIconDrawable(@NonNull android.content.pm.ShortcutInfo, int);
+    method @Nullable public java.util.List<android.content.pm.ShortcutInfo> getShortcuts(@NonNull android.content.pm.LauncherApps.ShortcutQuery, @NonNull android.os.UserHandle);
+    method @Nullable public android.os.Bundle getSuspendedPackageLauncherExtras(String, android.os.UserHandle);
+    method public boolean hasShortcutHostPermission();
+    method public boolean isActivityEnabled(android.content.ComponentName, android.os.UserHandle);
+    method public boolean isPackageEnabled(String, android.os.UserHandle);
+    method public void pinShortcuts(@NonNull String, @NonNull java.util.List<java.lang.String>, @NonNull android.os.UserHandle);
+    method public void registerCallback(android.content.pm.LauncherApps.Callback);
+    method public void registerCallback(android.content.pm.LauncherApps.Callback, android.os.Handler);
+    method public void registerPackageInstallerSessionCallback(@NonNull java.util.concurrent.Executor, @NonNull android.content.pm.PackageInstaller.SessionCallback);
+    method public android.content.pm.LauncherActivityInfo resolveActivity(android.content.Intent, android.os.UserHandle);
+    method public boolean shouldHideFromSuggestions(@NonNull String, @NonNull android.os.UserHandle);
+    method public void startAppDetailsActivity(android.content.ComponentName, android.os.UserHandle, android.graphics.Rect, android.os.Bundle);
+    method public void startMainActivity(android.content.ComponentName, android.os.UserHandle, android.graphics.Rect, android.os.Bundle);
+    method public void startPackageInstallerSessionDetailsActivity(@NonNull android.content.pm.PackageInstaller.SessionInfo, @Nullable android.graphics.Rect, @Nullable android.os.Bundle);
+    method public void startShortcut(@NonNull String, @NonNull String, @Nullable android.graphics.Rect, @Nullable android.os.Bundle, @NonNull android.os.UserHandle);
+    method public void startShortcut(@NonNull android.content.pm.ShortcutInfo, @Nullable android.graphics.Rect, @Nullable android.os.Bundle);
+    method public void unregisterCallback(android.content.pm.LauncherApps.Callback);
+    method public void unregisterPackageInstallerSessionCallback(@NonNull android.content.pm.PackageInstaller.SessionCallback);
+    field public static final String ACTION_CONFIRM_PIN_APPWIDGET = "android.content.pm.action.CONFIRM_PIN_APPWIDGET";
+    field public static final String ACTION_CONFIRM_PIN_SHORTCUT = "android.content.pm.action.CONFIRM_PIN_SHORTCUT";
+    field public static final String EXTRA_PIN_ITEM_REQUEST = "android.content.pm.extra.PIN_ITEM_REQUEST";
+  }
+
+  public abstract static class LauncherApps.Callback {
+    ctor public LauncherApps.Callback();
+    method public abstract void onPackageAdded(String, android.os.UserHandle);
+    method public abstract void onPackageChanged(String, android.os.UserHandle);
+    method public abstract void onPackageRemoved(String, android.os.UserHandle);
+    method public abstract void onPackagesAvailable(String[], android.os.UserHandle, boolean);
+    method public void onPackagesSuspended(String[], android.os.UserHandle);
+    method @Deprecated public void onPackagesSuspended(String[], android.os.UserHandle, @Nullable android.os.Bundle);
+    method public abstract void onPackagesUnavailable(String[], android.os.UserHandle, boolean);
+    method public void onPackagesUnsuspended(String[], android.os.UserHandle);
+    method public void onShortcutsChanged(@NonNull String, @NonNull java.util.List<android.content.pm.ShortcutInfo>, @NonNull android.os.UserHandle);
+  }
+
+  public static final class LauncherApps.PinItemRequest implements android.os.Parcelable {
+    method public boolean accept(@Nullable android.os.Bundle);
+    method public boolean accept();
+    method public int describeContents();
+    method @Nullable public android.appwidget.AppWidgetProviderInfo getAppWidgetProviderInfo(android.content.Context);
+    method @Nullable public android.os.Bundle getExtras();
+    method public int getRequestType();
+    method @Nullable public android.content.pm.ShortcutInfo getShortcutInfo();
+    method public boolean isValid();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.LauncherApps.PinItemRequest> CREATOR;
+    field public static final int REQUEST_TYPE_APPWIDGET = 2; // 0x2
+    field public static final int REQUEST_TYPE_SHORTCUT = 1; // 0x1
+  }
+
+  public static class LauncherApps.ShortcutQuery {
+    ctor public LauncherApps.ShortcutQuery();
+    method public android.content.pm.LauncherApps.ShortcutQuery setActivity(@Nullable android.content.ComponentName);
+    method public android.content.pm.LauncherApps.ShortcutQuery setChangedSince(long);
+    method @NonNull public android.content.pm.LauncherApps.ShortcutQuery setLocusIds(@Nullable java.util.List<android.content.LocusId>);
+    method public android.content.pm.LauncherApps.ShortcutQuery setPackage(@Nullable String);
+    method public android.content.pm.LauncherApps.ShortcutQuery setQueryFlags(int);
+    method public android.content.pm.LauncherApps.ShortcutQuery setShortcutIds(@Nullable java.util.List<java.lang.String>);
+    field public static final int FLAG_GET_KEY_FIELDS_ONLY = 4; // 0x4
+    field public static final int FLAG_MATCH_CACHED = 16; // 0x10
+    field public static final int FLAG_MATCH_DYNAMIC = 1; // 0x1
+    field public static final int FLAG_MATCH_MANIFEST = 8; // 0x8
+    field public static final int FLAG_MATCH_PINNED = 2; // 0x2
+    field public static final int FLAG_MATCH_PINNED_BY_ANY_LAUNCHER = 1024; // 0x400
+  }
+
+  public final class ModuleInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public CharSequence getName();
+    method @Nullable public String getPackageName();
+    method public boolean isHidden();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ModuleInfo> CREATOR;
+  }
+
+  public class PackageInfo implements android.os.Parcelable {
+    ctor public PackageInfo();
+    method public int describeContents();
+    method public long getLongVersionCode();
+    method public void setLongVersionCode(long);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.PackageInfo> CREATOR;
+    field public static final int INSTALL_LOCATION_AUTO = 0; // 0x0
+    field public static final int INSTALL_LOCATION_INTERNAL_ONLY = 1; // 0x1
+    field public static final int INSTALL_LOCATION_PREFER_EXTERNAL = 2; // 0x2
+    field public static final int REQUESTED_PERMISSION_GRANTED = 2; // 0x2
+    field public android.content.pm.ActivityInfo[] activities;
+    field public android.content.pm.ApplicationInfo applicationInfo;
+    field public int baseRevisionCode;
+    field public android.content.pm.ConfigurationInfo[] configPreferences;
+    field public android.content.pm.FeatureGroupInfo[] featureGroups;
+    field public long firstInstallTime;
+    field public int[] gids;
+    field public int installLocation;
+    field public android.content.pm.InstrumentationInfo[] instrumentation;
+    field public boolean isApex;
+    field public long lastUpdateTime;
+    field public String packageName;
+    field public android.content.pm.PermissionInfo[] permissions;
+    field public android.content.pm.ProviderInfo[] providers;
+    field public android.content.pm.ActivityInfo[] receivers;
+    field public android.content.pm.FeatureInfo[] reqFeatures;
+    field public String[] requestedPermissions;
+    field public int[] requestedPermissionsFlags;
+    field public android.content.pm.ServiceInfo[] services;
+    field public String sharedUserId;
+    field public int sharedUserLabel;
+    field @Deprecated public android.content.pm.Signature[] signatures;
+    field public android.content.pm.SigningInfo signingInfo;
+    field public String[] splitNames;
+    field public int[] splitRevisionCodes;
+    field @Deprecated public int versionCode;
+    field public String versionName;
+  }
+
+  public class PackageInstaller {
+    method public void abandonSession(int);
+    method public int createSession(@NonNull android.content.pm.PackageInstaller.SessionParams) throws java.io.IOException;
+    method @Deprecated @Nullable public android.content.pm.PackageInstaller.SessionInfo getActiveStagedSession();
+    method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getActiveStagedSessions();
+    method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getAllSessions();
+    method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getMySessions();
+    method @Nullable public android.content.pm.PackageInstaller.SessionInfo getSessionInfo(int);
+    method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getStagedSessions();
+    method @RequiresPermission(allOf={android.Manifest.permission.INSTALL_PACKAGES, "com.android.permission.INSTALL_EXISTING_PACKAGES"}) public void installExistingPackage(@NonNull String, int, @Nullable android.content.IntentSender);
+    method @NonNull public android.content.pm.PackageInstaller.Session openSession(int) throws java.io.IOException;
+    method public void registerSessionCallback(@NonNull android.content.pm.PackageInstaller.SessionCallback);
+    method public void registerSessionCallback(@NonNull android.content.pm.PackageInstaller.SessionCallback, @NonNull android.os.Handler);
+    method @RequiresPermission(anyOf={android.Manifest.permission.DELETE_PACKAGES, android.Manifest.permission.REQUEST_DELETE_PACKAGES}) public void uninstall(@NonNull String, @NonNull android.content.IntentSender);
+    method @RequiresPermission(anyOf={android.Manifest.permission.DELETE_PACKAGES, android.Manifest.permission.REQUEST_DELETE_PACKAGES}) public void uninstall(@NonNull android.content.pm.VersionedPackage, @NonNull android.content.IntentSender);
+    method public void unregisterSessionCallback(@NonNull android.content.pm.PackageInstaller.SessionCallback);
+    method public void updateSessionAppIcon(int, @Nullable android.graphics.Bitmap);
+    method public void updateSessionAppLabel(int, @Nullable CharSequence);
+    field public static final String ACTION_SESSION_COMMITTED = "android.content.pm.action.SESSION_COMMITTED";
+    field public static final String ACTION_SESSION_DETAILS = "android.content.pm.action.SESSION_DETAILS";
+    field public static final String ACTION_SESSION_UPDATED = "android.content.pm.action.SESSION_UPDATED";
+    field public static final String EXTRA_OTHER_PACKAGE_NAME = "android.content.pm.extra.OTHER_PACKAGE_NAME";
+    field public static final String EXTRA_PACKAGE_NAME = "android.content.pm.extra.PACKAGE_NAME";
+    field public static final String EXTRA_SESSION = "android.content.pm.extra.SESSION";
+    field public static final String EXTRA_SESSION_ID = "android.content.pm.extra.SESSION_ID";
+    field public static final String EXTRA_STATUS = "android.content.pm.extra.STATUS";
+    field public static final String EXTRA_STATUS_MESSAGE = "android.content.pm.extra.STATUS_MESSAGE";
+    field public static final String EXTRA_STORAGE_PATH = "android.content.pm.extra.STORAGE_PATH";
+    field public static final int STATUS_FAILURE = 1; // 0x1
+    field public static final int STATUS_FAILURE_ABORTED = 3; // 0x3
+    field public static final int STATUS_FAILURE_BLOCKED = 2; // 0x2
+    field public static final int STATUS_FAILURE_CONFLICT = 5; // 0x5
+    field public static final int STATUS_FAILURE_INCOMPATIBLE = 7; // 0x7
+    field public static final int STATUS_FAILURE_INVALID = 4; // 0x4
+    field public static final int STATUS_FAILURE_STORAGE = 6; // 0x6
+    field public static final int STATUS_PENDING_USER_ACTION = -1; // 0xffffffff
+    field public static final int STATUS_SUCCESS = 0; // 0x0
+  }
+
+  public static class PackageInstaller.Session implements java.io.Closeable {
+    method public void abandon();
+    method public void addChildSessionId(int);
+    method public void close();
+    method public void commit(@NonNull android.content.IntentSender);
+    method public void fsync(@NonNull java.io.OutputStream) throws java.io.IOException;
+    method @NonNull public int[] getChildSessionIds();
+    method @NonNull public String[] getNames() throws java.io.IOException;
+    method public int getParentSessionId();
+    method public boolean isMultiPackage();
+    method public boolean isStaged();
+    method @NonNull public java.io.InputStream openRead(@NonNull String) throws java.io.IOException;
+    method @NonNull public java.io.OutputStream openWrite(@NonNull String, long, long) throws java.io.IOException;
+    method public void removeChildSessionId(int);
+    method public void removeSplit(@NonNull String) throws java.io.IOException;
+    method public void setStagingProgress(float);
+    method public void transfer(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
+  }
+
+  public abstract static class PackageInstaller.SessionCallback {
+    ctor public PackageInstaller.SessionCallback();
+    method public abstract void onActiveChanged(int, boolean);
+    method public abstract void onBadgingChanged(int);
+    method public abstract void onCreated(int);
+    method public abstract void onFinished(int, boolean);
+    method public abstract void onProgressChanged(int, float);
+  }
+
+  public static class PackageInstaller.SessionInfo implements android.os.Parcelable {
+    method @Nullable public android.content.Intent createDetailsIntent();
+    method public int describeContents();
+    method @Nullable public android.graphics.Bitmap getAppIcon();
+    method @Nullable public CharSequence getAppLabel();
+    method @Nullable public String getAppPackageName();
+    method @NonNull public int[] getChildSessionIds();
+    method public long getCreatedMillis();
+    method public int getInstallLocation();
+    method public int getInstallReason();
+    method @Nullable public String getInstallerPackageName();
+    method public int getMode();
+    method public int getOriginatingUid();
+    method @Nullable public android.net.Uri getOriginatingUri();
+    method public int getParentSessionId();
+    method public float getProgress();
+    method @Nullable public android.net.Uri getReferrerUri();
+    method public int getSessionId();
+    method public long getSize();
+    method public int getStagedSessionErrorCode();
+    method @NonNull public String getStagedSessionErrorMessage();
+    method public long getUpdatedMillis();
+    method @NonNull public android.os.UserHandle getUser();
+    method public boolean hasParentSessionId();
+    method public boolean isActive();
+    method public boolean isCommitted();
+    method public boolean isMultiPackage();
+    method public boolean isSealed();
+    method public boolean isStaged();
+    method public boolean isStagedSessionActive();
+    method public boolean isStagedSessionApplied();
+    method public boolean isStagedSessionFailed();
+    method public boolean isStagedSessionReady();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final android.os.Parcelable.Creator<android.content.pm.PackageInstaller.SessionInfo> CREATOR;
+    field public static final int INVALID_ID = -1; // 0xffffffff
+    field public static final int STAGED_SESSION_ACTIVATION_FAILED = 2; // 0x2
+    field public static final int STAGED_SESSION_NO_ERROR = 0; // 0x0
+    field public static final int STAGED_SESSION_UNKNOWN = 3; // 0x3
+    field public static final int STAGED_SESSION_VERIFICATION_FAILED = 1; // 0x1
+  }
+
+  public static class PackageInstaller.SessionParams implements android.os.Parcelable {
+    ctor public PackageInstaller.SessionParams(int);
+    method public int describeContents();
+    method public void setAppIcon(@Nullable android.graphics.Bitmap);
+    method public void setAppLabel(@Nullable CharSequence);
+    method public void setAppPackageName(@Nullable String);
+    method public void setAutoRevokePermissionsMode(boolean);
+    method public void setInstallLocation(int);
+    method public void setInstallReason(int);
+    method public void setMultiPackage();
+    method public void setOriginatingUid(int);
+    method public void setOriginatingUri(@Nullable android.net.Uri);
+    method public void setReferrerUri(@Nullable android.net.Uri);
+    method public void setSize(long);
+    method public void setWhitelistedRestrictedPermissions(@Nullable java.util.Set<java.lang.String>);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final android.os.Parcelable.Creator<android.content.pm.PackageInstaller.SessionParams> CREATOR;
+    field public static final int MODE_FULL_INSTALL = 1; // 0x1
+    field public static final int MODE_INHERIT_EXISTING = 2; // 0x2
+    field @NonNull public static final java.util.Set<java.lang.String> RESTRICTED_PERMISSIONS_ALL;
+  }
+
+  public class PackageItemInfo {
+    ctor public PackageItemInfo();
+    ctor public PackageItemInfo(android.content.pm.PackageItemInfo);
+    ctor protected PackageItemInfo(android.os.Parcel);
+    method protected void dumpBack(android.util.Printer, String);
+    method protected void dumpFront(android.util.Printer, String);
+    method public android.graphics.drawable.Drawable loadBanner(android.content.pm.PackageManager);
+    method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
+    method @NonNull public CharSequence loadLabel(@NonNull android.content.pm.PackageManager);
+    method public android.graphics.drawable.Drawable loadLogo(android.content.pm.PackageManager);
+    method public android.graphics.drawable.Drawable loadUnbadgedIcon(android.content.pm.PackageManager);
+    method public android.content.res.XmlResourceParser loadXmlMetaData(android.content.pm.PackageManager, String);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public int banner;
+    field public int icon;
+    field public int labelRes;
+    field public int logo;
+    field public android.os.Bundle metaData;
+    field public String name;
+    field public CharSequence nonLocalizedLabel;
+    field public String packageName;
+  }
+
+  public static class PackageItemInfo.DisplayNameComparator implements java.util.Comparator<android.content.pm.PackageItemInfo> {
+    ctor public PackageItemInfo.DisplayNameComparator(android.content.pm.PackageManager);
+    method public final int compare(android.content.pm.PackageItemInfo, android.content.pm.PackageItemInfo);
+  }
+
+  public abstract class PackageManager {
+    ctor @Deprecated public PackageManager();
+    method @Deprecated public abstract void addPackageToPreferred(@NonNull String);
+    method public abstract boolean addPermission(@NonNull android.content.pm.PermissionInfo);
+    method public abstract boolean addPermissionAsync(@NonNull android.content.pm.PermissionInfo);
+    method @Deprecated public abstract void addPreferredActivity(@NonNull android.content.IntentFilter, int, @Nullable android.content.ComponentName[], @NonNull android.content.ComponentName);
+    method @RequiresPermission(value="android.permission.WHITELIST_RESTRICTED_PERMISSIONS", conditional=true) public boolean addWhitelistedRestrictedPermission(@NonNull String, @NonNull String, int);
+    method public abstract boolean canRequestPackageInstalls();
+    method public abstract String[] canonicalToCurrentPackageNames(@NonNull String[]);
+    method @CheckResult public abstract int checkPermission(@NonNull String, @NonNull String);
+    method @CheckResult public abstract int checkSignatures(@NonNull String, @NonNull String);
+    method @CheckResult public abstract int checkSignatures(int, int);
+    method public abstract void clearInstantAppCookie();
+    method @Deprecated public abstract void clearPackagePreferredActivities(@NonNull String);
+    method public abstract String[] currentToCanonicalPackageNames(@NonNull String[]);
+    method public abstract void extendVerificationTimeout(int, int, long);
+    method @Nullable public abstract android.graphics.drawable.Drawable getActivityBanner(@NonNull android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @Nullable public abstract android.graphics.drawable.Drawable getActivityBanner(@NonNull android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @NonNull public abstract android.graphics.drawable.Drawable getActivityIcon(@NonNull android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @NonNull public abstract android.graphics.drawable.Drawable getActivityIcon(@NonNull android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @NonNull public abstract android.content.pm.ActivityInfo getActivityInfo(@NonNull android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @Nullable public abstract android.graphics.drawable.Drawable getActivityLogo(@NonNull android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @Nullable public abstract android.graphics.drawable.Drawable getActivityLogo(@NonNull android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @NonNull public abstract java.util.List<android.content.pm.PermissionGroupInfo> getAllPermissionGroups(int);
+    method @Nullable public abstract android.graphics.drawable.Drawable getApplicationBanner(@NonNull android.content.pm.ApplicationInfo);
+    method @Nullable public abstract android.graphics.drawable.Drawable getApplicationBanner(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
+    method public abstract int getApplicationEnabledSetting(@NonNull String);
+    method @NonNull public abstract android.graphics.drawable.Drawable getApplicationIcon(@NonNull android.content.pm.ApplicationInfo);
+    method @NonNull public abstract android.graphics.drawable.Drawable getApplicationIcon(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @NonNull public abstract android.content.pm.ApplicationInfo getApplicationInfo(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @NonNull public abstract CharSequence getApplicationLabel(@NonNull android.content.pm.ApplicationInfo);
+    method @Nullable public abstract android.graphics.drawable.Drawable getApplicationLogo(@NonNull android.content.pm.ApplicationInfo);
+    method @Nullable public abstract android.graphics.drawable.Drawable getApplicationLogo(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @NonNull public CharSequence getBackgroundPermissionOptionLabel();
+    method @Nullable public abstract android.content.pm.ChangedPackages getChangedPackages(@IntRange(from=0) int);
+    method public abstract int getComponentEnabledSetting(@NonNull android.content.ComponentName);
+    method @NonNull public abstract android.graphics.drawable.Drawable getDefaultActivityIcon();
+    method @Nullable public abstract android.graphics.drawable.Drawable getDrawable(@NonNull String, @DrawableRes int, @Nullable android.content.pm.ApplicationInfo);
+    method @NonNull public android.content.pm.InstallSourceInfo getInstallSourceInfo(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @NonNull public abstract java.util.List<android.content.pm.ApplicationInfo> getInstalledApplications(int);
+    method @NonNull public java.util.List<android.content.pm.ModuleInfo> getInstalledModules(int);
+    method @NonNull public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int);
+    method @Deprecated @Nullable public abstract String getInstallerPackageName(@NonNull String);
+    method @NonNull public abstract byte[] getInstantAppCookie();
+    method public abstract int getInstantAppCookieMaxBytes();
+    method @NonNull public abstract android.content.pm.InstrumentationInfo getInstrumentationInfo(@NonNull android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @Nullable public abstract android.content.Intent getLaunchIntentForPackage(@NonNull String);
+    method @Nullable public abstract android.content.Intent getLeanbackLaunchIntentForPackage(@NonNull String);
+    method @NonNull public java.util.Set<java.lang.String> getMimeGroup(@NonNull String);
+    method @NonNull public android.content.pm.ModuleInfo getModuleInfo(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @Nullable public abstract String getNameForUid(int);
+    method @Nullable public android.content.pm.PackageInfo getPackageArchiveInfo(@NonNull String, int);
+    method public abstract int[] getPackageGids(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
+    method public abstract int[] getPackageGids(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+    method public abstract android.content.pm.PackageInfo getPackageInfo(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+    method public abstract android.content.pm.PackageInfo getPackageInfo(@NonNull android.content.pm.VersionedPackage, int) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @NonNull public abstract android.content.pm.PackageInstaller getPackageInstaller();
+    method public abstract int getPackageUid(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @Nullable public abstract String[] getPackagesForUid(int);
+    method @NonNull public abstract java.util.List<android.content.pm.PackageInfo> getPackagesHoldingPermissions(@NonNull String[], int);
+    method @NonNull public abstract android.content.pm.PermissionGroupInfo getPermissionGroupInfo(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+    method public abstract android.content.pm.PermissionInfo getPermissionInfo(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @Deprecated public abstract int getPreferredActivities(@NonNull java.util.List<android.content.IntentFilter>, @NonNull java.util.List<android.content.ComponentName>, @Nullable String);
+    method @Deprecated @NonNull public abstract java.util.List<android.content.pm.PackageInfo> getPreferredPackages(int);
+    method @NonNull public abstract android.content.pm.ProviderInfo getProviderInfo(@NonNull android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @NonNull public abstract android.content.pm.ActivityInfo getReceiverInfo(@NonNull android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @NonNull public abstract android.content.res.Resources getResourcesForActivity(@NonNull android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @NonNull public abstract android.content.res.Resources getResourcesForApplication(@NonNull android.content.pm.ApplicationInfo) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @NonNull public abstract android.content.res.Resources getResourcesForApplication(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @NonNull public abstract android.content.pm.ServiceInfo getServiceInfo(@NonNull android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @NonNull public abstract java.util.List<android.content.pm.SharedLibraryInfo> getSharedLibraries(int);
+    method @Nullable public android.os.Bundle getSuspendedPackageAppExtras();
+    method public boolean getSyntheticAppDetailsActivityEnabled(@NonNull String);
+    method @NonNull public abstract android.content.pm.FeatureInfo[] getSystemAvailableFeatures();
+    method @Nullable public abstract String[] getSystemSharedLibraryNames();
+    method @Nullable public abstract CharSequence getText(@NonNull String, @StringRes int, @Nullable android.content.pm.ApplicationInfo);
+    method @NonNull public abstract android.graphics.drawable.Drawable getUserBadgedDrawableForDensity(@NonNull android.graphics.drawable.Drawable, @NonNull android.os.UserHandle, @Nullable android.graphics.Rect, int);
+    method @NonNull public abstract android.graphics.drawable.Drawable getUserBadgedIcon(@NonNull android.graphics.drawable.Drawable, @NonNull android.os.UserHandle);
+    method @NonNull public abstract CharSequence getUserBadgedLabel(@NonNull CharSequence, @NonNull android.os.UserHandle);
+    method @NonNull @RequiresPermission(value="android.permission.WHITELIST_RESTRICTED_PERMISSIONS", conditional=true) public java.util.Set<java.lang.String> getWhitelistedRestrictedPermissions(@NonNull String, int);
+    method @Nullable public abstract android.content.res.XmlResourceParser getXml(@NonNull String, @XmlRes int, @Nullable android.content.pm.ApplicationInfo);
+    method public boolean hasSigningCertificate(@NonNull String, @NonNull byte[], int);
+    method public boolean hasSigningCertificate(int, @NonNull byte[], int);
+    method public abstract boolean hasSystemFeature(@NonNull String);
+    method public abstract boolean hasSystemFeature(@NonNull String, int);
+    method @RequiresPermission(value="android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS", conditional=true) public boolean isAutoRevokeWhitelisted(@NonNull String);
+    method public boolean isAutoRevokeWhitelisted();
+    method public boolean isDefaultApplicationIcon(@NonNull android.graphics.drawable.Drawable);
+    method public boolean isDeviceUpgrading();
+    method public abstract boolean isInstantApp();
+    method public abstract boolean isInstantApp(@NonNull String);
+    method public boolean isPackageSuspended(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
+    method public boolean isPackageSuspended();
+    method @CheckResult public abstract boolean isPermissionRevokedByPolicy(@NonNull String, @NonNull String);
+    method public abstract boolean isSafeMode();
+    method @NonNull public abstract java.util.List<android.content.pm.ResolveInfo> queryBroadcastReceivers(@NonNull android.content.Intent, int);
+    method @NonNull public abstract java.util.List<android.content.pm.ProviderInfo> queryContentProviders(@Nullable String, int, int);
+    method @NonNull public abstract java.util.List<android.content.pm.InstrumentationInfo> queryInstrumentation(@NonNull String, int);
+    method @NonNull public abstract java.util.List<android.content.pm.ResolveInfo> queryIntentActivities(@NonNull android.content.Intent, int);
+    method @NonNull public abstract java.util.List<android.content.pm.ResolveInfo> queryIntentActivityOptions(@Nullable android.content.ComponentName, @Nullable android.content.Intent[], @NonNull android.content.Intent, int);
+    method @NonNull public abstract java.util.List<android.content.pm.ResolveInfo> queryIntentContentProviders(@NonNull android.content.Intent, int);
+    method @NonNull public abstract java.util.List<android.content.pm.ResolveInfo> queryIntentServices(@NonNull android.content.Intent, int);
+    method @NonNull public abstract java.util.List<android.content.pm.PermissionInfo> queryPermissionsByGroup(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @Deprecated public abstract void removePackageFromPreferred(@NonNull String);
+    method public abstract void removePermission(@NonNull String);
+    method @RequiresPermission(value="android.permission.WHITELIST_RESTRICTED_PERMISSIONS", conditional=true) public boolean removeWhitelistedRestrictedPermission(@NonNull String, @NonNull String, int);
+    method @Nullable public abstract android.content.pm.ResolveInfo resolveActivity(@NonNull android.content.Intent, int);
+    method @Nullable public abstract android.content.pm.ProviderInfo resolveContentProvider(@NonNull String, int);
+    method @Nullable public abstract android.content.pm.ResolveInfo resolveService(@NonNull android.content.Intent, int);
+    method public abstract void setApplicationCategoryHint(@NonNull String, int);
+    method @RequiresPermission(value=android.Manifest.permission.CHANGE_COMPONENT_ENABLED_STATE, conditional=true) public abstract void setApplicationEnabledSetting(@NonNull String, int, int);
+    method @RequiresPermission(value="android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS", conditional=true) public boolean setAutoRevokeWhitelisted(@NonNull String, boolean);
+    method @RequiresPermission(value=android.Manifest.permission.CHANGE_COMPONENT_ENABLED_STATE, conditional=true) public abstract void setComponentEnabledSetting(@NonNull android.content.ComponentName, int, int);
+    method public abstract void setInstallerPackageName(@NonNull String, @Nullable String);
+    method public void setMimeGroup(@NonNull String, @NonNull java.util.Set<java.lang.String>);
+    method public abstract void updateInstantAppCookie(@Nullable byte[]);
+    method public abstract void verifyPendingInstall(int, int);
+    field public static final int CERT_INPUT_RAW_X509 = 0; // 0x0
+    field public static final int CERT_INPUT_SHA256 = 1; // 0x1
+    field public static final int COMPONENT_ENABLED_STATE_DEFAULT = 0; // 0x0
+    field public static final int COMPONENT_ENABLED_STATE_DISABLED = 2; // 0x2
+    field public static final int COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED = 4; // 0x4
+    field public static final int COMPONENT_ENABLED_STATE_DISABLED_USER = 3; // 0x3
+    field public static final int COMPONENT_ENABLED_STATE_ENABLED = 1; // 0x1
+    field public static final int DONT_KILL_APP = 1; // 0x1
+    field public static final String EXTRA_VERIFICATION_ID = "android.content.pm.extra.VERIFICATION_ID";
+    field public static final String EXTRA_VERIFICATION_RESULT = "android.content.pm.extra.VERIFICATION_RESULT";
+    field public static final String FEATURE_ACTIVITIES_ON_SECONDARY_DISPLAYS = "android.software.activities_on_secondary_displays";
+    field public static final String FEATURE_APP_WIDGETS = "android.software.app_widgets";
+    field public static final String FEATURE_AUDIO_LOW_LATENCY = "android.hardware.audio.low_latency";
+    field public static final String FEATURE_AUDIO_OUTPUT = "android.hardware.audio.output";
+    field public static final String FEATURE_AUDIO_PRO = "android.hardware.audio.pro";
+    field public static final String FEATURE_AUTOFILL = "android.software.autofill";
+    field public static final String FEATURE_AUTOMOTIVE = "android.hardware.type.automotive";
+    field public static final String FEATURE_BACKUP = "android.software.backup";
+    field public static final String FEATURE_BLUETOOTH = "android.hardware.bluetooth";
+    field public static final String FEATURE_BLUETOOTH_LE = "android.hardware.bluetooth_le";
+    field public static final String FEATURE_CAMERA = "android.hardware.camera";
+    field public static final String FEATURE_CAMERA_ANY = "android.hardware.camera.any";
+    field public static final String FEATURE_CAMERA_AR = "android.hardware.camera.ar";
+    field public static final String FEATURE_CAMERA_AUTOFOCUS = "android.hardware.camera.autofocus";
+    field public static final String FEATURE_CAMERA_CAPABILITY_MANUAL_POST_PROCESSING = "android.hardware.camera.capability.manual_post_processing";
+    field public static final String FEATURE_CAMERA_CAPABILITY_MANUAL_SENSOR = "android.hardware.camera.capability.manual_sensor";
+    field public static final String FEATURE_CAMERA_CAPABILITY_RAW = "android.hardware.camera.capability.raw";
+    field public static final String FEATURE_CAMERA_CONCURRENT = "android.hardware.camera.concurrent";
+    field public static final String FEATURE_CAMERA_EXTERNAL = "android.hardware.camera.external";
+    field public static final String FEATURE_CAMERA_FLASH = "android.hardware.camera.flash";
+    field public static final String FEATURE_CAMERA_FRONT = "android.hardware.camera.front";
+    field public static final String FEATURE_CAMERA_LEVEL_FULL = "android.hardware.camera.level.full";
+    field public static final String FEATURE_CANT_SAVE_STATE = "android.software.cant_save_state";
+    field public static final String FEATURE_COMPANION_DEVICE_SETUP = "android.software.companion_device_setup";
+    field public static final String FEATURE_CONNECTION_SERVICE = "android.software.connectionservice";
+    field public static final String FEATURE_CONSUMER_IR = "android.hardware.consumerir";
+    field public static final String FEATURE_CONTROLS = "android.software.controls";
+    field public static final String FEATURE_DEVICE_ADMIN = "android.software.device_admin";
+    field public static final String FEATURE_EMBEDDED = "android.hardware.type.embedded";
+    field public static final String FEATURE_ETHERNET = "android.hardware.ethernet";
+    field public static final String FEATURE_FACE = "android.hardware.biometrics.face";
+    field public static final String FEATURE_FAKETOUCH = "android.hardware.faketouch";
+    field public static final String FEATURE_FAKETOUCH_MULTITOUCH_DISTINCT = "android.hardware.faketouch.multitouch.distinct";
+    field public static final String FEATURE_FAKETOUCH_MULTITOUCH_JAZZHAND = "android.hardware.faketouch.multitouch.jazzhand";
+    field public static final String FEATURE_FINGERPRINT = "android.hardware.fingerprint";
+    field public static final String FEATURE_FREEFORM_WINDOW_MANAGEMENT = "android.software.freeform_window_management";
+    field public static final String FEATURE_GAMEPAD = "android.hardware.gamepad";
+    field public static final String FEATURE_HIFI_SENSORS = "android.hardware.sensor.hifi_sensors";
+    field public static final String FEATURE_HOME_SCREEN = "android.software.home_screen";
+    field public static final String FEATURE_INPUT_METHODS = "android.software.input_methods";
+    field public static final String FEATURE_IPSEC_TUNNELS = "android.software.ipsec_tunnels";
+    field public static final String FEATURE_IRIS = "android.hardware.biometrics.iris";
+    field public static final String FEATURE_LEANBACK = "android.software.leanback";
+    field public static final String FEATURE_LEANBACK_ONLY = "android.software.leanback_only";
+    field public static final String FEATURE_LIVE_TV = "android.software.live_tv";
+    field public static final String FEATURE_LIVE_WALLPAPER = "android.software.live_wallpaper";
+    field public static final String FEATURE_LOCATION = "android.hardware.location";
+    field public static final String FEATURE_LOCATION_GPS = "android.hardware.location.gps";
+    field public static final String FEATURE_LOCATION_NETWORK = "android.hardware.location.network";
+    field public static final String FEATURE_MANAGED_USERS = "android.software.managed_users";
+    field public static final String FEATURE_MICROPHONE = "android.hardware.microphone";
+    field public static final String FEATURE_MIDI = "android.software.midi";
+    field public static final String FEATURE_NFC = "android.hardware.nfc";
+    field public static final String FEATURE_NFC_BEAM = "android.sofware.nfc.beam";
+    field public static final String FEATURE_NFC_HOST_CARD_EMULATION = "android.hardware.nfc.hce";
+    field public static final String FEATURE_NFC_HOST_CARD_EMULATION_NFCF = "android.hardware.nfc.hcef";
+    field public static final String FEATURE_NFC_OFF_HOST_CARD_EMULATION_ESE = "android.hardware.nfc.ese";
+    field public static final String FEATURE_NFC_OFF_HOST_CARD_EMULATION_UICC = "android.hardware.nfc.uicc";
+    field public static final String FEATURE_OPENGLES_EXTENSION_PACK = "android.hardware.opengles.aep";
+    field public static final String FEATURE_PC = "android.hardware.type.pc";
+    field public static final String FEATURE_PICTURE_IN_PICTURE = "android.software.picture_in_picture";
+    field public static final String FEATURE_PRINTING = "android.software.print";
+    field public static final String FEATURE_RAM_LOW = "android.hardware.ram.low";
+    field public static final String FEATURE_RAM_NORMAL = "android.hardware.ram.normal";
+    field public static final String FEATURE_SCREEN_LANDSCAPE = "android.hardware.screen.landscape";
+    field public static final String FEATURE_SCREEN_PORTRAIT = "android.hardware.screen.portrait";
+    field public static final String FEATURE_SECURELY_REMOVES_USERS = "android.software.securely_removes_users";
+    field public static final String FEATURE_SECURE_LOCK_SCREEN = "android.software.secure_lock_screen";
+    field public static final String FEATURE_SENSOR_ACCELEROMETER = "android.hardware.sensor.accelerometer";
+    field public static final String FEATURE_SENSOR_AMBIENT_TEMPERATURE = "android.hardware.sensor.ambient_temperature";
+    field public static final String FEATURE_SENSOR_BAROMETER = "android.hardware.sensor.barometer";
+    field public static final String FEATURE_SENSOR_COMPASS = "android.hardware.sensor.compass";
+    field public static final String FEATURE_SENSOR_GYROSCOPE = "android.hardware.sensor.gyroscope";
+    field public static final String FEATURE_SENSOR_HEART_RATE = "android.hardware.sensor.heartrate";
+    field public static final String FEATURE_SENSOR_HEART_RATE_ECG = "android.hardware.sensor.heartrate.ecg";
+    field public static final String FEATURE_SENSOR_HINGE_ANGLE = "android.hardware.sensor.hinge_angle";
+    field public static final String FEATURE_SENSOR_LIGHT = "android.hardware.sensor.light";
+    field public static final String FEATURE_SENSOR_PROXIMITY = "android.hardware.sensor.proximity";
+    field public static final String FEATURE_SENSOR_RELATIVE_HUMIDITY = "android.hardware.sensor.relative_humidity";
+    field public static final String FEATURE_SENSOR_STEP_COUNTER = "android.hardware.sensor.stepcounter";
+    field public static final String FEATURE_SENSOR_STEP_DETECTOR = "android.hardware.sensor.stepdetector";
+    field public static final String FEATURE_SE_OMAPI_ESE = "android.hardware.se.omapi.ese";
+    field public static final String FEATURE_SE_OMAPI_SD = "android.hardware.se.omapi.sd";
+    field public static final String FEATURE_SE_OMAPI_UICC = "android.hardware.se.omapi.uicc";
+    field public static final String FEATURE_SIP = "android.software.sip";
+    field public static final String FEATURE_SIP_VOIP = "android.software.sip.voip";
+    field public static final String FEATURE_STRONGBOX_KEYSTORE = "android.hardware.strongbox_keystore";
+    field public static final String FEATURE_TELEPHONY = "android.hardware.telephony";
+    field public static final String FEATURE_TELEPHONY_CDMA = "android.hardware.telephony.cdma";
+    field public static final String FEATURE_TELEPHONY_EUICC = "android.hardware.telephony.euicc";
+    field public static final String FEATURE_TELEPHONY_GSM = "android.hardware.telephony.gsm";
+    field public static final String FEATURE_TELEPHONY_IMS = "android.hardware.telephony.ims";
+    field public static final String FEATURE_TELEPHONY_MBMS = "android.hardware.telephony.mbms";
+    field @Deprecated public static final String FEATURE_TELEVISION = "android.hardware.type.television";
+    field public static final String FEATURE_TOUCHSCREEN = "android.hardware.touchscreen";
+    field public static final String FEATURE_TOUCHSCREEN_MULTITOUCH = "android.hardware.touchscreen.multitouch";
+    field public static final String FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT = "android.hardware.touchscreen.multitouch.distinct";
+    field public static final String FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND = "android.hardware.touchscreen.multitouch.jazzhand";
+    field public static final String FEATURE_USB_ACCESSORY = "android.hardware.usb.accessory";
+    field public static final String FEATURE_USB_HOST = "android.hardware.usb.host";
+    field public static final String FEATURE_VERIFIED_BOOT = "android.software.verified_boot";
+    field public static final String FEATURE_VR_HEADTRACKING = "android.hardware.vr.headtracking";
+    field @Deprecated public static final String FEATURE_VR_MODE = "android.software.vr.mode";
+    field public static final String FEATURE_VR_MODE_HIGH_PERFORMANCE = "android.hardware.vr.high_performance";
+    field public static final String FEATURE_VULKAN_DEQP_LEVEL = "android.software.vulkan.deqp.level";
+    field public static final String FEATURE_VULKAN_HARDWARE_COMPUTE = "android.hardware.vulkan.compute";
+    field public static final String FEATURE_VULKAN_HARDWARE_LEVEL = "android.hardware.vulkan.level";
+    field public static final String FEATURE_VULKAN_HARDWARE_VERSION = "android.hardware.vulkan.version";
+    field public static final String FEATURE_WATCH = "android.hardware.type.watch";
+    field public static final String FEATURE_WEBVIEW = "android.software.webview";
+    field public static final String FEATURE_WIFI = "android.hardware.wifi";
+    field public static final String FEATURE_WIFI_AWARE = "android.hardware.wifi.aware";
+    field public static final String FEATURE_WIFI_DIRECT = "android.hardware.wifi.direct";
+    field public static final String FEATURE_WIFI_PASSPOINT = "android.hardware.wifi.passpoint";
+    field public static final String FEATURE_WIFI_RTT = "android.hardware.wifi.rtt";
+    field public static final int FLAG_PERMISSION_WHITELIST_INSTALLER = 2; // 0x2
+    field public static final int FLAG_PERMISSION_WHITELIST_SYSTEM = 1; // 0x1
+    field public static final int FLAG_PERMISSION_WHITELIST_UPGRADE = 4; // 0x4
+    field public static final int GET_ACTIVITIES = 1; // 0x1
+    field public static final int GET_CONFIGURATIONS = 16384; // 0x4000
+    field @Deprecated public static final int GET_DISABLED_COMPONENTS = 512; // 0x200
+    field @Deprecated public static final int GET_DISABLED_UNTIL_USED_COMPONENTS = 32768; // 0x8000
+    field public static final int GET_GIDS = 256; // 0x100
+    field public static final int GET_INSTRUMENTATION = 16; // 0x10
+    field public static final int GET_INTENT_FILTERS = 32; // 0x20
+    field public static final int GET_META_DATA = 128; // 0x80
+    field public static final int GET_PERMISSIONS = 4096; // 0x1000
+    field public static final int GET_PROVIDERS = 8; // 0x8
+    field public static final int GET_RECEIVERS = 2; // 0x2
+    field public static final int GET_RESOLVED_FILTER = 64; // 0x40
+    field public static final int GET_SERVICES = 4; // 0x4
+    field public static final int GET_SHARED_LIBRARY_FILES = 1024; // 0x400
+    field @Deprecated public static final int GET_SIGNATURES = 64; // 0x40
+    field public static final int GET_SIGNING_CERTIFICATES = 134217728; // 0x8000000
+    field @Deprecated public static final int GET_UNINSTALLED_PACKAGES = 8192; // 0x2000
+    field public static final int GET_URI_PERMISSION_PATTERNS = 2048; // 0x800
+    field public static final int INSTALL_REASON_DEVICE_RESTORE = 2; // 0x2
+    field public static final int INSTALL_REASON_DEVICE_SETUP = 3; // 0x3
+    field public static final int INSTALL_REASON_POLICY = 1; // 0x1
+    field public static final int INSTALL_REASON_UNKNOWN = 0; // 0x0
+    field public static final int INSTALL_REASON_USER = 4; // 0x4
+    field public static final int MATCH_ALL = 131072; // 0x20000
+    field public static final int MATCH_APEX = 1073741824; // 0x40000000
+    field public static final int MATCH_DEFAULT_ONLY = 65536; // 0x10000
+    field public static final int MATCH_DIRECT_BOOT_AUTO = 268435456; // 0x10000000
+    field public static final int MATCH_DIRECT_BOOT_AWARE = 524288; // 0x80000
+    field public static final int MATCH_DIRECT_BOOT_UNAWARE = 262144; // 0x40000
+    field public static final int MATCH_DISABLED_COMPONENTS = 512; // 0x200
+    field public static final int MATCH_DISABLED_UNTIL_USED_COMPONENTS = 32768; // 0x8000
+    field public static final int MATCH_SYSTEM_ONLY = 1048576; // 0x100000
+    field public static final int MATCH_UNINSTALLED_PACKAGES = 8192; // 0x2000
+    field public static final long MAXIMUM_VERIFICATION_TIMEOUT = 3600000L; // 0x36ee80L
+    field public static final int PERMISSION_DENIED = -1; // 0xffffffff
+    field public static final int PERMISSION_GRANTED = 0; // 0x0
+    field public static final int SIGNATURE_FIRST_NOT_SIGNED = -1; // 0xffffffff
+    field public static final int SIGNATURE_MATCH = 0; // 0x0
+    field public static final int SIGNATURE_NEITHER_SIGNED = 1; // 0x1
+    field public static final int SIGNATURE_NO_MATCH = -3; // 0xfffffffd
+    field public static final int SIGNATURE_SECOND_NOT_SIGNED = -2; // 0xfffffffe
+    field public static final int SIGNATURE_UNKNOWN_PACKAGE = -4; // 0xfffffffc
+    field public static final int SYNCHRONOUS = 2; // 0x2
+    field public static final int VERIFICATION_ALLOW = 1; // 0x1
+    field public static final int VERIFICATION_REJECT = -1; // 0xffffffff
+    field public static final int VERSION_CODE_HIGHEST = -1; // 0xffffffff
+  }
+
+  public static class PackageManager.NameNotFoundException extends android.util.AndroidException {
+    ctor public PackageManager.NameNotFoundException();
+    ctor public PackageManager.NameNotFoundException(String);
+  }
+
+  @Deprecated public class PackageStats implements android.os.Parcelable {
+    ctor @Deprecated public PackageStats(String);
+    ctor @Deprecated public PackageStats(android.os.Parcel);
+    ctor @Deprecated public PackageStats(android.content.pm.PackageStats);
+    method @Deprecated public int describeContents();
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.content.pm.PackageStats> CREATOR;
+    field @Deprecated public long cacheSize;
+    field @Deprecated public long codeSize;
+    field @Deprecated public long dataSize;
+    field @Deprecated public long externalCacheSize;
+    field @Deprecated public long externalCodeSize;
+    field @Deprecated public long externalDataSize;
+    field @Deprecated public long externalMediaSize;
+    field @Deprecated public long externalObbSize;
+    field @Deprecated public String packageName;
+  }
+
+  public class PathPermission extends android.os.PatternMatcher {
+    ctor public PathPermission(String, int, String, String);
+    ctor public PathPermission(android.os.Parcel);
+    method public String getReadPermission();
+    method public String getWritePermission();
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.PathPermission> CREATOR;
+  }
+
+  public class PermissionGroupInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
+    ctor @Deprecated public PermissionGroupInfo();
+    ctor @Deprecated public PermissionGroupInfo(@NonNull android.content.pm.PermissionGroupInfo);
+    method public int describeContents();
+    method @Nullable public CharSequence loadDescription(@NonNull android.content.pm.PackageManager);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.PermissionGroupInfo> CREATOR;
+    field public static final int FLAG_PERSONAL_INFO = 1; // 0x1
+    field @StringRes public int descriptionRes;
+    field public int flags;
+    field @Nullable public CharSequence nonLocalizedDescription;
+    field public int priority;
+  }
+
+  public class PermissionInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
+    ctor @Deprecated public PermissionInfo();
+    ctor @Deprecated public PermissionInfo(@NonNull android.content.pm.PermissionInfo);
+    method public int describeContents();
+    method public int getProtection();
+    method public int getProtectionFlags();
+    method @Nullable public CharSequence loadDescription(@NonNull android.content.pm.PackageManager);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.PermissionInfo> CREATOR;
+    field public static final int FLAG_COSTS_MONEY = 1; // 0x1
+    field public static final int FLAG_HARD_RESTRICTED = 4; // 0x4
+    field public static final int FLAG_IMMUTABLY_RESTRICTED = 16; // 0x10
+    field public static final int FLAG_INSTALLED = 1073741824; // 0x40000000
+    field public static final int FLAG_SOFT_RESTRICTED = 8; // 0x8
+    field public static final int PROTECTION_DANGEROUS = 1; // 0x1
+    field public static final int PROTECTION_FLAG_APPOP = 64; // 0x40
+    field public static final int PROTECTION_FLAG_DEVELOPMENT = 32; // 0x20
+    field public static final int PROTECTION_FLAG_INSTALLER = 256; // 0x100
+    field public static final int PROTECTION_FLAG_INSTANT = 4096; // 0x1000
+    field public static final int PROTECTION_FLAG_PRE23 = 128; // 0x80
+    field public static final int PROTECTION_FLAG_PREINSTALLED = 1024; // 0x400
+    field public static final int PROTECTION_FLAG_PRIVILEGED = 16; // 0x10
+    field public static final int PROTECTION_FLAG_RUNTIME_ONLY = 8192; // 0x2000
+    field public static final int PROTECTION_FLAG_SETUP = 2048; // 0x800
+    field @Deprecated public static final int PROTECTION_FLAG_SYSTEM = 16; // 0x10
+    field public static final int PROTECTION_FLAG_VERIFIER = 512; // 0x200
+    field @Deprecated public static final int PROTECTION_MASK_BASE = 15; // 0xf
+    field @Deprecated public static final int PROTECTION_MASK_FLAGS = 65520; // 0xfff0
+    field public static final int PROTECTION_NORMAL = 0; // 0x0
+    field public static final int PROTECTION_SIGNATURE = 2; // 0x2
+    field @Deprecated public static final int PROTECTION_SIGNATURE_OR_SYSTEM = 3; // 0x3
+    field @StringRes public int descriptionRes;
+    field public int flags;
+    field @Nullable public String group;
+    field @Nullable public CharSequence nonLocalizedDescription;
+    field @Deprecated public int protectionLevel;
+  }
+
+  public final class ProviderInfo extends android.content.pm.ComponentInfo implements android.os.Parcelable {
+    ctor public ProviderInfo();
+    ctor public ProviderInfo(android.content.pm.ProviderInfo);
+    method public int describeContents();
+    method public void dump(android.util.Printer, String);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ProviderInfo> CREATOR;
+    field public static final int FLAG_SINGLE_USER = 1073741824; // 0x40000000
+    field public String authority;
+    field public int flags;
+    field public boolean forceUriPermissions;
+    field public boolean grantUriPermissions;
+    field public int initOrder;
+    field @Deprecated public boolean isSyncable;
+    field public boolean multiprocess;
+    field public android.content.pm.PathPermission[] pathPermissions;
+    field public String readPermission;
+    field public android.os.PatternMatcher[] uriPermissionPatterns;
+    field public String writePermission;
+  }
+
+  public class ResolveInfo implements android.os.Parcelable {
+    ctor public ResolveInfo();
+    ctor public ResolveInfo(android.content.pm.ResolveInfo);
+    method public int describeContents();
+    method public void dump(android.util.Printer, String);
+    method public final int getIconResource();
+    method public boolean isCrossProfileIntentForwarderActivity();
+    method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
+    method public CharSequence loadLabel(android.content.pm.PackageManager);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ResolveInfo> CREATOR;
+    field public android.content.pm.ActivityInfo activityInfo;
+    field public android.content.IntentFilter filter;
+    field public int icon;
+    field public boolean isDefault;
+    field public boolean isInstantAppAvailable;
+    field public int labelRes;
+    field public int match;
+    field public CharSequence nonLocalizedLabel;
+    field public int preferredOrder;
+    field public int priority;
+    field public android.content.pm.ProviderInfo providerInfo;
+    field public String resolvePackageName;
+    field public android.content.pm.ServiceInfo serviceInfo;
+    field public int specificIndex;
+  }
+
+  public static class ResolveInfo.DisplayNameComparator implements java.util.Comparator<android.content.pm.ResolveInfo> {
+    ctor public ResolveInfo.DisplayNameComparator(android.content.pm.PackageManager);
+    method public final int compare(android.content.pm.ResolveInfo, android.content.pm.ResolveInfo);
+  }
+
+  public class ServiceInfo extends android.content.pm.ComponentInfo implements android.os.Parcelable {
+    ctor public ServiceInfo();
+    ctor public ServiceInfo(android.content.pm.ServiceInfo);
+    method public int describeContents();
+    method public void dump(android.util.Printer, String);
+    method public int getForegroundServiceType();
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ServiceInfo> CREATOR;
+    field public static final int FLAG_EXTERNAL_SERVICE = 4; // 0x4
+    field public static final int FLAG_ISOLATED_PROCESS = 2; // 0x2
+    field public static final int FLAG_SINGLE_USER = 1073741824; // 0x40000000
+    field public static final int FLAG_STOP_WITH_TASK = 1; // 0x1
+    field public static final int FLAG_USE_APP_ZYGOTE = 8; // 0x8
+    field public static final int FOREGROUND_SERVICE_TYPE_CAMERA = 64; // 0x40
+    field public static final int FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE = 16; // 0x10
+    field public static final int FOREGROUND_SERVICE_TYPE_DATA_SYNC = 1; // 0x1
+    field public static final int FOREGROUND_SERVICE_TYPE_LOCATION = 8; // 0x8
+    field public static final int FOREGROUND_SERVICE_TYPE_MANIFEST = -1; // 0xffffffff
+    field public static final int FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK = 2; // 0x2
+    field public static final int FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION = 32; // 0x20
+    field public static final int FOREGROUND_SERVICE_TYPE_MICROPHONE = 128; // 0x80
+    field public static final int FOREGROUND_SERVICE_TYPE_NONE = 0; // 0x0
+    field public static final int FOREGROUND_SERVICE_TYPE_PHONE_CALL = 4; // 0x4
+    field public int flags;
+    field public String permission;
+  }
+
+  public final class SharedLibraryInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public android.content.pm.VersionedPackage getDeclaringPackage();
+    method @NonNull public java.util.List<android.content.pm.VersionedPackage> getDependentPackages();
+    method @IntRange(from=0xffffffff) public long getLongVersion();
+    method public String getName();
+    method public int getType();
+    method @Deprecated @IntRange(from=0xffffffff) public int getVersion();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.SharedLibraryInfo> CREATOR;
+    field public static final int TYPE_BUILTIN = 0; // 0x0
+    field public static final int TYPE_DYNAMIC = 1; // 0x1
+    field public static final int TYPE_STATIC = 2; // 0x2
+    field public static final int VERSION_UNDEFINED = -1; // 0xffffffff
+  }
+
+  public final class ShortcutInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public android.content.ComponentName getActivity();
+    method @Nullable public java.util.Set<java.lang.String> getCategories();
+    method @Nullable public CharSequence getDisabledMessage();
+    method public int getDisabledReason();
+    method @Nullable public android.os.PersistableBundle getExtras();
+    method @NonNull public String getId();
+    method @Nullable public android.content.Intent getIntent();
+    method @Nullable public android.content.Intent[] getIntents();
+    method public long getLastChangedTimestamp();
+    method @Nullable public android.content.LocusId getLocusId();
+    method @Nullable public CharSequence getLongLabel();
+    method @NonNull public String getPackage();
+    method public int getRank();
+    method @Nullable public CharSequence getShortLabel();
+    method public android.os.UserHandle getUserHandle();
+    method public boolean hasKeyFieldsOnly();
+    method public boolean isCached();
+    method public boolean isDeclaredInManifest();
+    method public boolean isDynamic();
+    method public boolean isEnabled();
+    method public boolean isImmutable();
+    method public boolean isPinned();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ShortcutInfo> CREATOR;
+    field public static final int DISABLED_REASON_APP_CHANGED = 2; // 0x2
+    field public static final int DISABLED_REASON_BACKUP_NOT_SUPPORTED = 101; // 0x65
+    field public static final int DISABLED_REASON_BY_APP = 1; // 0x1
+    field public static final int DISABLED_REASON_NOT_DISABLED = 0; // 0x0
+    field public static final int DISABLED_REASON_OTHER_RESTORE_ISSUE = 103; // 0x67
+    field public static final int DISABLED_REASON_SIGNATURE_MISMATCH = 102; // 0x66
+    field public static final int DISABLED_REASON_UNKNOWN = 3; // 0x3
+    field public static final int DISABLED_REASON_VERSION_LOWER = 100; // 0x64
+    field public static final String SHORTCUT_CATEGORY_CONVERSATION = "android.shortcut.conversation";
+  }
+
+  public static class ShortcutInfo.Builder {
+    ctor public ShortcutInfo.Builder(android.content.Context, String);
+    method @NonNull public android.content.pm.ShortcutInfo build();
+    method @NonNull public android.content.pm.ShortcutInfo.Builder setActivity(@NonNull android.content.ComponentName);
+    method @NonNull public android.content.pm.ShortcutInfo.Builder setCategories(java.util.Set<java.lang.String>);
+    method @NonNull public android.content.pm.ShortcutInfo.Builder setDisabledMessage(@NonNull CharSequence);
+    method @NonNull public android.content.pm.ShortcutInfo.Builder setExtras(@NonNull android.os.PersistableBundle);
+    method @NonNull public android.content.pm.ShortcutInfo.Builder setIcon(android.graphics.drawable.Icon);
+    method @NonNull public android.content.pm.ShortcutInfo.Builder setIntent(@NonNull android.content.Intent);
+    method @NonNull public android.content.pm.ShortcutInfo.Builder setIntents(@NonNull android.content.Intent[]);
+    method @NonNull public android.content.pm.ShortcutInfo.Builder setLocusId(@NonNull android.content.LocusId);
+    method @NonNull public android.content.pm.ShortcutInfo.Builder setLongLabel(@NonNull CharSequence);
+    method @NonNull public android.content.pm.ShortcutInfo.Builder setLongLived(boolean);
+    method @NonNull public android.content.pm.ShortcutInfo.Builder setPerson(@NonNull android.app.Person);
+    method @NonNull public android.content.pm.ShortcutInfo.Builder setPersons(@NonNull android.app.Person[]);
+    method @NonNull public android.content.pm.ShortcutInfo.Builder setRank(int);
+    method @NonNull public android.content.pm.ShortcutInfo.Builder setShortLabel(@NonNull CharSequence);
+  }
+
+  public class ShortcutManager {
+    method public boolean addDynamicShortcuts(@NonNull java.util.List<android.content.pm.ShortcutInfo>);
+    method public android.content.Intent createShortcutResultIntent(@NonNull android.content.pm.ShortcutInfo);
+    method public void disableShortcuts(@NonNull java.util.List<java.lang.String>);
+    method public void disableShortcuts(@NonNull java.util.List<java.lang.String>, CharSequence);
+    method public void enableShortcuts(@NonNull java.util.List<java.lang.String>);
+    method @NonNull public java.util.List<android.content.pm.ShortcutInfo> getDynamicShortcuts();
+    method public int getIconMaxHeight();
+    method public int getIconMaxWidth();
+    method @NonNull public java.util.List<android.content.pm.ShortcutInfo> getManifestShortcuts();
+    method public int getMaxShortcutCountPerActivity();
+    method @NonNull public java.util.List<android.content.pm.ShortcutInfo> getPinnedShortcuts();
+    method @NonNull public java.util.List<android.content.pm.ShortcutInfo> getShortcuts(int);
+    method public boolean isRateLimitingActive();
+    method public boolean isRequestPinShortcutSupported();
+    method public void pushDynamicShortcut(@NonNull android.content.pm.ShortcutInfo);
+    method public void removeAllDynamicShortcuts();
+    method public void removeDynamicShortcuts(@NonNull java.util.List<java.lang.String>);
+    method public void removeLongLivedShortcuts(@NonNull java.util.List<java.lang.String>);
+    method public void reportShortcutUsed(String);
+    method public boolean requestPinShortcut(@NonNull android.content.pm.ShortcutInfo, @Nullable android.content.IntentSender);
+    method public boolean setDynamicShortcuts(@NonNull java.util.List<android.content.pm.ShortcutInfo>);
+    method public boolean updateShortcuts(@NonNull java.util.List<android.content.pm.ShortcutInfo>);
+    field public static final int FLAG_MATCH_CACHED = 8; // 0x8
+    field public static final int FLAG_MATCH_DYNAMIC = 2; // 0x2
+    field public static final int FLAG_MATCH_MANIFEST = 1; // 0x1
+    field public static final int FLAG_MATCH_PINNED = 4; // 0x4
+  }
+
+  public class Signature implements android.os.Parcelable {
+    ctor public Signature(byte[]);
+    ctor public Signature(String);
+    method public int describeContents();
+    method public byte[] toByteArray();
+    method public char[] toChars();
+    method public char[] toChars(char[], int[]);
+    method public String toCharsString();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.Signature> CREATOR;
+  }
+
+  public final class SigningInfo implements android.os.Parcelable {
+    ctor public SigningInfo();
+    ctor public SigningInfo(android.content.pm.SigningInfo);
+    method public int describeContents();
+    method public android.content.pm.Signature[] getApkContentsSigners();
+    method public android.content.pm.Signature[] getSigningCertificateHistory();
+    method public boolean hasMultipleSigners();
+    method public boolean hasPastSigningCertificates();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.SigningInfo> CREATOR;
+  }
+
+  public final class VersionedPackage implements android.os.Parcelable {
+    ctor public VersionedPackage(@NonNull String, int);
+    ctor public VersionedPackage(@NonNull String, long);
+    method public int describeContents();
+    method public long getLongVersionCode();
+    method @NonNull public String getPackageName();
+    method @Deprecated public int getVersionCode();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.VersionedPackage> CREATOR;
+  }
+
+}
+
+package android.content.res {
+
+  public class AssetFileDescriptor implements java.io.Closeable android.os.Parcelable {
+    ctor public AssetFileDescriptor(android.os.ParcelFileDescriptor, long, long);
+    ctor public AssetFileDescriptor(android.os.ParcelFileDescriptor, long, long, android.os.Bundle);
+    method public void close() throws java.io.IOException;
+    method public java.io.FileInputStream createInputStream() throws java.io.IOException;
+    method public java.io.FileOutputStream createOutputStream() throws java.io.IOException;
+    method public int describeContents();
+    method public long getDeclaredLength();
+    method public android.os.Bundle getExtras();
+    method public java.io.FileDescriptor getFileDescriptor();
+    method public long getLength();
+    method public android.os.ParcelFileDescriptor getParcelFileDescriptor();
+    method public long getStartOffset();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.res.AssetFileDescriptor> CREATOR;
+    field public static final long UNKNOWN_LENGTH = -1L; // 0xffffffffffffffffL
+  }
+
+  public static class AssetFileDescriptor.AutoCloseInputStream extends android.os.ParcelFileDescriptor.AutoCloseInputStream {
+    ctor public AssetFileDescriptor.AutoCloseInputStream(android.content.res.AssetFileDescriptor) throws java.io.IOException;
+  }
+
+  public static class AssetFileDescriptor.AutoCloseOutputStream extends android.os.ParcelFileDescriptor.AutoCloseOutputStream {
+    ctor public AssetFileDescriptor.AutoCloseOutputStream(android.content.res.AssetFileDescriptor) throws java.io.IOException;
+  }
+
+  public final class AssetManager implements java.lang.AutoCloseable {
+    method public void close();
+    method public String[] getLocales();
+    method @Nullable public String[] list(@NonNull String) throws java.io.IOException;
+    method @NonNull public java.io.InputStream open(@NonNull String) throws java.io.IOException;
+    method @NonNull public java.io.InputStream open(@NonNull String, int) throws java.io.IOException;
+    method @NonNull public android.content.res.AssetFileDescriptor openFd(@NonNull String) throws java.io.IOException;
+    method @NonNull public android.content.res.AssetFileDescriptor openNonAssetFd(@NonNull String) throws java.io.IOException;
+    method @NonNull public android.content.res.AssetFileDescriptor openNonAssetFd(int, @NonNull String) throws java.io.IOException;
+    method @NonNull public android.content.res.XmlResourceParser openXmlResourceParser(@NonNull String) throws java.io.IOException;
+    method @NonNull public android.content.res.XmlResourceParser openXmlResourceParser(int, @NonNull String) throws java.io.IOException;
+    field public static final int ACCESS_BUFFER = 3; // 0x3
+    field public static final int ACCESS_RANDOM = 1; // 0x1
+    field public static final int ACCESS_STREAMING = 2; // 0x2
+    field public static final int ACCESS_UNKNOWN = 0; // 0x0
+  }
+
+  public final class AssetManager.AssetInputStream extends java.io.InputStream {
+    method public int read() throws java.io.IOException;
+  }
+
+  public class ColorStateList implements android.os.Parcelable {
+    ctor public ColorStateList(int[][], @ColorInt int[]);
+    method @Deprecated @NonNull public static android.content.res.ColorStateList createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method @NonNull public static android.content.res.ColorStateList createFromXml(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, @Nullable android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method public int describeContents();
+    method public int getChangingConfigurations();
+    method public int getColorForState(@Nullable int[], int);
+    method @ColorInt public int getDefaultColor();
+    method public boolean isOpaque();
+    method public boolean isStateful();
+    method @NonNull public static android.content.res.ColorStateList valueOf(@ColorInt int);
+    method @NonNull public android.content.res.ColorStateList withAlpha(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.res.ColorStateList> CREATOR;
+  }
+
+  public final class Configuration implements java.lang.Comparable<android.content.res.Configuration> android.os.Parcelable {
+    ctor public Configuration();
+    ctor public Configuration(android.content.res.Configuration);
+    method public int compareTo(android.content.res.Configuration);
+    method public int describeContents();
+    method public int diff(android.content.res.Configuration);
+    method public boolean equals(android.content.res.Configuration);
+    method public int getLayoutDirection();
+    method @NonNull public android.os.LocaleList getLocales();
+    method public boolean isLayoutSizeAtLeast(int);
+    method public boolean isNightModeActive();
+    method public boolean isScreenHdr();
+    method public boolean isScreenRound();
+    method public boolean isScreenWideColorGamut();
+    method public static boolean needNewResources(int, int);
+    method public void readFromParcel(android.os.Parcel);
+    method public void setLayoutDirection(java.util.Locale);
+    method public void setLocale(@Nullable java.util.Locale);
+    method public void setLocales(@Nullable android.os.LocaleList);
+    method public void setTo(android.content.res.Configuration);
+    method public void setToDefaults();
+    method public int updateFrom(@NonNull android.content.res.Configuration);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int COLOR_MODE_HDR_MASK = 12; // 0xc
+    field public static final int COLOR_MODE_HDR_NO = 4; // 0x4
+    field public static final int COLOR_MODE_HDR_SHIFT = 2; // 0x2
+    field public static final int COLOR_MODE_HDR_UNDEFINED = 0; // 0x0
+    field public static final int COLOR_MODE_HDR_YES = 8; // 0x8
+    field public static final int COLOR_MODE_UNDEFINED = 0; // 0x0
+    field public static final int COLOR_MODE_WIDE_COLOR_GAMUT_MASK = 3; // 0x3
+    field public static final int COLOR_MODE_WIDE_COLOR_GAMUT_NO = 1; // 0x1
+    field public static final int COLOR_MODE_WIDE_COLOR_GAMUT_UNDEFINED = 0; // 0x0
+    field public static final int COLOR_MODE_WIDE_COLOR_GAMUT_YES = 2; // 0x2
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.res.Configuration> CREATOR;
+    field public static final int DENSITY_DPI_UNDEFINED = 0; // 0x0
+    field public static final int HARDKEYBOARDHIDDEN_NO = 1; // 0x1
+    field public static final int HARDKEYBOARDHIDDEN_UNDEFINED = 0; // 0x0
+    field public static final int HARDKEYBOARDHIDDEN_YES = 2; // 0x2
+    field public static final int KEYBOARDHIDDEN_NO = 1; // 0x1
+    field public static final int KEYBOARDHIDDEN_UNDEFINED = 0; // 0x0
+    field public static final int KEYBOARDHIDDEN_YES = 2; // 0x2
+    field public static final int KEYBOARD_12KEY = 3; // 0x3
+    field public static final int KEYBOARD_NOKEYS = 1; // 0x1
+    field public static final int KEYBOARD_QWERTY = 2; // 0x2
+    field public static final int KEYBOARD_UNDEFINED = 0; // 0x0
+    field public static final int MNC_ZERO = 65535; // 0xffff
+    field public static final int NAVIGATIONHIDDEN_NO = 1; // 0x1
+    field public static final int NAVIGATIONHIDDEN_UNDEFINED = 0; // 0x0
+    field public static final int NAVIGATIONHIDDEN_YES = 2; // 0x2
+    field public static final int NAVIGATION_DPAD = 2; // 0x2
+    field public static final int NAVIGATION_NONAV = 1; // 0x1
+    field public static final int NAVIGATION_TRACKBALL = 3; // 0x3
+    field public static final int NAVIGATION_UNDEFINED = 0; // 0x0
+    field public static final int NAVIGATION_WHEEL = 4; // 0x4
+    field public static final int ORIENTATION_LANDSCAPE = 2; // 0x2
+    field public static final int ORIENTATION_PORTRAIT = 1; // 0x1
+    field @Deprecated public static final int ORIENTATION_SQUARE = 3; // 0x3
+    field public static final int ORIENTATION_UNDEFINED = 0; // 0x0
+    field public static final int SCREENLAYOUT_LAYOUTDIR_LTR = 64; // 0x40
+    field public static final int SCREENLAYOUT_LAYOUTDIR_MASK = 192; // 0xc0
+    field public static final int SCREENLAYOUT_LAYOUTDIR_RTL = 128; // 0x80
+    field public static final int SCREENLAYOUT_LAYOUTDIR_SHIFT = 6; // 0x6
+    field public static final int SCREENLAYOUT_LAYOUTDIR_UNDEFINED = 0; // 0x0
+    field public static final int SCREENLAYOUT_LONG_MASK = 48; // 0x30
+    field public static final int SCREENLAYOUT_LONG_NO = 16; // 0x10
+    field public static final int SCREENLAYOUT_LONG_UNDEFINED = 0; // 0x0
+    field public static final int SCREENLAYOUT_LONG_YES = 32; // 0x20
+    field public static final int SCREENLAYOUT_ROUND_MASK = 768; // 0x300
+    field public static final int SCREENLAYOUT_ROUND_NO = 256; // 0x100
+    field public static final int SCREENLAYOUT_ROUND_UNDEFINED = 0; // 0x0
+    field public static final int SCREENLAYOUT_ROUND_YES = 512; // 0x200
+    field public static final int SCREENLAYOUT_SIZE_LARGE = 3; // 0x3
+    field public static final int SCREENLAYOUT_SIZE_MASK = 15; // 0xf
+    field public static final int SCREENLAYOUT_SIZE_NORMAL = 2; // 0x2
+    field public static final int SCREENLAYOUT_SIZE_SMALL = 1; // 0x1
+    field public static final int SCREENLAYOUT_SIZE_UNDEFINED = 0; // 0x0
+    field public static final int SCREENLAYOUT_SIZE_XLARGE = 4; // 0x4
+    field public static final int SCREENLAYOUT_UNDEFINED = 0; // 0x0
+    field public static final int SCREEN_HEIGHT_DP_UNDEFINED = 0; // 0x0
+    field public static final int SCREEN_WIDTH_DP_UNDEFINED = 0; // 0x0
+    field public static final int SMALLEST_SCREEN_WIDTH_DP_UNDEFINED = 0; // 0x0
+    field public static final int TOUCHSCREEN_FINGER = 3; // 0x3
+    field public static final int TOUCHSCREEN_NOTOUCH = 1; // 0x1
+    field @Deprecated public static final int TOUCHSCREEN_STYLUS = 2; // 0x2
+    field public static final int TOUCHSCREEN_UNDEFINED = 0; // 0x0
+    field public static final int UI_MODE_NIGHT_MASK = 48; // 0x30
+    field public static final int UI_MODE_NIGHT_NO = 16; // 0x10
+    field public static final int UI_MODE_NIGHT_UNDEFINED = 0; // 0x0
+    field public static final int UI_MODE_NIGHT_YES = 32; // 0x20
+    field public static final int UI_MODE_TYPE_APPLIANCE = 5; // 0x5
+    field public static final int UI_MODE_TYPE_CAR = 3; // 0x3
+    field public static final int UI_MODE_TYPE_DESK = 2; // 0x2
+    field public static final int UI_MODE_TYPE_MASK = 15; // 0xf
+    field public static final int UI_MODE_TYPE_NORMAL = 1; // 0x1
+    field public static final int UI_MODE_TYPE_TELEVISION = 4; // 0x4
+    field public static final int UI_MODE_TYPE_UNDEFINED = 0; // 0x0
+    field public static final int UI_MODE_TYPE_VR_HEADSET = 7; // 0x7
+    field public static final int UI_MODE_TYPE_WATCH = 6; // 0x6
+    field public int colorMode;
+    field public int densityDpi;
+    field public float fontScale;
+    field public int hardKeyboardHidden;
+    field public int keyboard;
+    field public int keyboardHidden;
+    field @Deprecated public java.util.Locale locale;
+    field public int mcc;
+    field public int mnc;
+    field public int navigation;
+    field public int navigationHidden;
+    field public int orientation;
+    field public int screenHeightDp;
+    field public int screenLayout;
+    field public int screenWidthDp;
+    field public int smallestScreenWidthDp;
+    field public int touchscreen;
+    field public int uiMode;
+  }
+
+  public class ObbInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.res.ObbInfo> CREATOR;
+    field public static final int OBB_OVERLAY = 1; // 0x1
+    field public String filename;
+    field public int flags;
+    field public String packageName;
+    field public int version;
+  }
+
+  public class ObbScanner {
+    method public static android.content.res.ObbInfo getObbInfo(String) throws java.io.IOException;
+  }
+
+  public class Resources {
+    ctor @Deprecated public Resources(android.content.res.AssetManager, android.util.DisplayMetrics, android.content.res.Configuration);
+    method public void addLoaders(@NonNull android.content.res.loader.ResourcesLoader...);
+    method public final void finishPreloading();
+    method public final void flushLayoutCache();
+    method @NonNull public android.content.res.XmlResourceParser getAnimation(@AnimRes @AnimatorRes int) throws android.content.res.Resources.NotFoundException;
+    method public final android.content.res.AssetManager getAssets();
+    method @AnyRes public static int getAttributeSetSourceResId(@Nullable android.util.AttributeSet);
+    method public boolean getBoolean(@BoolRes int) throws android.content.res.Resources.NotFoundException;
+    method @Deprecated @ColorInt public int getColor(@ColorRes int) throws android.content.res.Resources.NotFoundException;
+    method @ColorInt public int getColor(@ColorRes int, @Nullable android.content.res.Resources.Theme) throws android.content.res.Resources.NotFoundException;
+    method @Deprecated @NonNull public android.content.res.ColorStateList getColorStateList(@ColorRes int) throws android.content.res.Resources.NotFoundException;
+    method @NonNull public android.content.res.ColorStateList getColorStateList(@ColorRes int, @Nullable android.content.res.Resources.Theme) throws android.content.res.Resources.NotFoundException;
+    method public android.content.res.Configuration getConfiguration();
+    method public float getDimension(@DimenRes int) throws android.content.res.Resources.NotFoundException;
+    method public int getDimensionPixelOffset(@DimenRes int) throws android.content.res.Resources.NotFoundException;
+    method public int getDimensionPixelSize(@DimenRes int) throws android.content.res.Resources.NotFoundException;
+    method public android.util.DisplayMetrics getDisplayMetrics();
+    method @Deprecated public android.graphics.drawable.Drawable getDrawable(@DrawableRes int) throws android.content.res.Resources.NotFoundException;
+    method public android.graphics.drawable.Drawable getDrawable(@DrawableRes int, @Nullable android.content.res.Resources.Theme) throws android.content.res.Resources.NotFoundException;
+    method @Deprecated @Nullable public android.graphics.drawable.Drawable getDrawableForDensity(@DrawableRes int, int) throws android.content.res.Resources.NotFoundException;
+    method @Nullable public android.graphics.drawable.Drawable getDrawableForDensity(@DrawableRes int, int, @Nullable android.content.res.Resources.Theme);
+    method public float getFloat(@DimenRes int);
+    method @NonNull public android.graphics.Typeface getFont(@FontRes int) throws android.content.res.Resources.NotFoundException;
+    method public float getFraction(@FractionRes int, int, int);
+    method public int getIdentifier(String, String, String);
+    method @NonNull public int[] getIntArray(@ArrayRes int) throws android.content.res.Resources.NotFoundException;
+    method public int getInteger(@IntegerRes int) throws android.content.res.Resources.NotFoundException;
+    method @NonNull public android.content.res.XmlResourceParser getLayout(@LayoutRes int) throws android.content.res.Resources.NotFoundException;
+    method @Deprecated public android.graphics.Movie getMovie(@RawRes int) throws android.content.res.Resources.NotFoundException;
+    method @NonNull public String getQuantityString(@PluralsRes int, int, java.lang.Object...) throws android.content.res.Resources.NotFoundException;
+    method @NonNull public String getQuantityString(@PluralsRes int, int) throws android.content.res.Resources.NotFoundException;
+    method @NonNull public CharSequence getQuantityText(@PluralsRes int, int) throws android.content.res.Resources.NotFoundException;
+    method public String getResourceEntryName(@AnyRes int) throws android.content.res.Resources.NotFoundException;
+    method public String getResourceName(@AnyRes int) throws android.content.res.Resources.NotFoundException;
+    method public String getResourcePackageName(@AnyRes int) throws android.content.res.Resources.NotFoundException;
+    method public String getResourceTypeName(@AnyRes int) throws android.content.res.Resources.NotFoundException;
+    method @NonNull public String getString(@StringRes int) throws android.content.res.Resources.NotFoundException;
+    method @NonNull public String getString(@StringRes int, java.lang.Object...) throws android.content.res.Resources.NotFoundException;
+    method @NonNull public String[] getStringArray(@ArrayRes int) throws android.content.res.Resources.NotFoundException;
+    method public static android.content.res.Resources getSystem();
+    method @NonNull public CharSequence getText(@StringRes int) throws android.content.res.Resources.NotFoundException;
+    method public CharSequence getText(@StringRes int, CharSequence);
+    method @NonNull public CharSequence[] getTextArray(@ArrayRes int) throws android.content.res.Resources.NotFoundException;
+    method public void getValue(@AnyRes int, android.util.TypedValue, boolean) throws android.content.res.Resources.NotFoundException;
+    method public void getValue(String, android.util.TypedValue, boolean) throws android.content.res.Resources.NotFoundException;
+    method public void getValueForDensity(@AnyRes int, int, android.util.TypedValue, boolean) throws android.content.res.Resources.NotFoundException;
+    method @NonNull public android.content.res.XmlResourceParser getXml(@XmlRes int) throws android.content.res.Resources.NotFoundException;
+    method public final android.content.res.Resources.Theme newTheme();
+    method public android.content.res.TypedArray obtainAttributes(android.util.AttributeSet, @StyleableRes int[]);
+    method @NonNull public android.content.res.TypedArray obtainTypedArray(@ArrayRes int) throws android.content.res.Resources.NotFoundException;
+    method @NonNull public java.io.InputStream openRawResource(@RawRes int) throws android.content.res.Resources.NotFoundException;
+    method @NonNull public java.io.InputStream openRawResource(@RawRes int, android.util.TypedValue) throws android.content.res.Resources.NotFoundException;
+    method public android.content.res.AssetFileDescriptor openRawResourceFd(@RawRes int) throws android.content.res.Resources.NotFoundException;
+    method public void parseBundleExtra(String, android.util.AttributeSet, android.os.Bundle) throws org.xmlpull.v1.XmlPullParserException;
+    method public void parseBundleExtras(android.content.res.XmlResourceParser, android.os.Bundle) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method public void removeLoaders(@NonNull android.content.res.loader.ResourcesLoader...);
+    method @Deprecated public void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics);
+    field @AnyRes public static final int ID_NULL = 0; // 0x0
+  }
+
+  public static class Resources.NotFoundException extends java.lang.RuntimeException {
+    ctor public Resources.NotFoundException();
+    ctor public Resources.NotFoundException(String);
+    ctor public Resources.NotFoundException(String, Exception);
+  }
+
+  public final class Resources.Theme {
+    method public void applyStyle(int, boolean);
+    method public void dump(int, String, String);
+    method @NonNull public int[] getAttributeResolutionStack(@AttrRes int, @StyleRes int, @StyleRes int);
+    method public int getChangingConfigurations();
+    method public android.graphics.drawable.Drawable getDrawable(@DrawableRes int) throws android.content.res.Resources.NotFoundException;
+    method @StyleRes public int getExplicitStyle(@Nullable android.util.AttributeSet);
+    method public android.content.res.Resources getResources();
+    method @NonNull public android.content.res.TypedArray obtainStyledAttributes(@NonNull @StyleableRes int[]);
+    method @NonNull public android.content.res.TypedArray obtainStyledAttributes(@StyleRes int, @NonNull @StyleableRes int[]) throws android.content.res.Resources.NotFoundException;
+    method @NonNull public android.content.res.TypedArray obtainStyledAttributes(@Nullable android.util.AttributeSet, @NonNull @StyleableRes int[], @AttrRes int, @StyleRes int);
+    method public void rebase();
+    method public boolean resolveAttribute(int, android.util.TypedValue, boolean);
+    method public void setTo(android.content.res.Resources.Theme);
+  }
+
+  public class TypedArray {
+    method public boolean getBoolean(@StyleableRes int, boolean);
+    method public int getChangingConfigurations();
+    method @ColorInt public int getColor(@StyleableRes int, @ColorInt int);
+    method @Nullable public android.content.res.ColorStateList getColorStateList(@StyleableRes int);
+    method public float getDimension(@StyleableRes int, float);
+    method public int getDimensionPixelOffset(@StyleableRes int, int);
+    method public int getDimensionPixelSize(@StyleableRes int, int);
+    method @Nullable public android.graphics.drawable.Drawable getDrawable(@StyleableRes int);
+    method public float getFloat(@StyleableRes int, float);
+    method @Nullable public android.graphics.Typeface getFont(@StyleableRes int);
+    method public float getFraction(@StyleableRes int, int, int, float);
+    method public int getIndex(int);
+    method public int getIndexCount();
+    method public int getInt(@StyleableRes int, int);
+    method public int getInteger(@StyleableRes int, int);
+    method public int getLayoutDimension(@StyleableRes int, String);
+    method public int getLayoutDimension(@StyleableRes int, int);
+    method public String getNonResourceString(@StyleableRes int);
+    method public String getPositionDescription();
+    method @AnyRes public int getResourceId(@StyleableRes int, int);
+    method public android.content.res.Resources getResources();
+    method @AnyRes public int getSourceResourceId(@StyleableRes int, @AnyRes int);
+    method @Nullable public String getString(@StyleableRes int);
+    method public CharSequence getText(@StyleableRes int);
+    method public CharSequence[] getTextArray(@StyleableRes int);
+    method public int getType(@StyleableRes int);
+    method public boolean getValue(@StyleableRes int, android.util.TypedValue);
+    method public boolean hasValue(@StyleableRes int);
+    method public boolean hasValueOrEmpty(@StyleableRes int);
+    method public int length();
+    method public android.util.TypedValue peekValue(@StyleableRes int);
+    method public void recycle();
+  }
+
+  public interface XmlResourceParser extends org.xmlpull.v1.XmlPullParser android.util.AttributeSet java.lang.AutoCloseable {
+    method public void close();
+  }
+
+}
+
+package android.content.res.loader {
+
+  public interface AssetsProvider {
+    method @Nullable public default android.content.res.AssetFileDescriptor loadAssetFd(@NonNull String, int);
+  }
+
+  public class ResourcesLoader {
+    ctor public ResourcesLoader();
+    method public void addProvider(@NonNull android.content.res.loader.ResourcesProvider);
+    method public void clearProviders();
+    method @NonNull public java.util.List<android.content.res.loader.ResourcesProvider> getProviders();
+    method public void removeProvider(@NonNull android.content.res.loader.ResourcesProvider);
+    method public void setProviders(@NonNull java.util.List<android.content.res.loader.ResourcesProvider>);
+  }
+
+  public class ResourcesProvider implements java.lang.AutoCloseable java.io.Closeable {
+    method public void close();
+    method @NonNull public static android.content.res.loader.ResourcesProvider empty(@NonNull android.content.res.loader.AssetsProvider);
+    method @NonNull public static android.content.res.loader.ResourcesProvider loadFromApk(@NonNull android.os.ParcelFileDescriptor) throws java.io.IOException;
+    method @NonNull public static android.content.res.loader.ResourcesProvider loadFromApk(@NonNull android.os.ParcelFileDescriptor, @Nullable android.content.res.loader.AssetsProvider) throws java.io.IOException;
+    method @NonNull public static android.content.res.loader.ResourcesProvider loadFromDirectory(@NonNull String, @Nullable android.content.res.loader.AssetsProvider) throws java.io.IOException;
+    method @NonNull public static android.content.res.loader.ResourcesProvider loadFromSplit(@NonNull android.content.Context, @NonNull String) throws java.io.IOException;
+    method @NonNull public static android.content.res.loader.ResourcesProvider loadFromTable(@NonNull android.os.ParcelFileDescriptor, @Nullable android.content.res.loader.AssetsProvider) throws java.io.IOException;
+  }
+
+}
+
+package android.database {
+
+  public abstract class AbstractCursor implements android.database.CrossProcessCursor {
+    ctor public AbstractCursor();
+    method protected void checkPosition();
+    method public void close();
+    method public void copyStringToBuffer(int, android.database.CharArrayBuffer);
+    method public void deactivate();
+    method public void fillWindow(int, android.database.CursorWindow);
+    method protected void finalize();
+    method public byte[] getBlob(int);
+    method public int getColumnCount();
+    method public int getColumnIndex(String);
+    method public int getColumnIndexOrThrow(String);
+    method public String getColumnName(int);
+    method public android.os.Bundle getExtras();
+    method public android.net.Uri getNotificationUri();
+    method public final int getPosition();
+    method public int getType(int);
+    method @Deprecated protected Object getUpdatedField(int);
+    method public boolean getWantsAllOnMoveCalls();
+    method public android.database.CursorWindow getWindow();
+    method public final boolean isAfterLast();
+    method public final boolean isBeforeFirst();
+    method public boolean isClosed();
+    method @Deprecated protected boolean isFieldUpdated(int);
+    method public final boolean isFirst();
+    method public final boolean isLast();
+    method public final boolean move(int);
+    method public final boolean moveToFirst();
+    method public final boolean moveToLast();
+    method public final boolean moveToNext();
+    method public final boolean moveToPosition(int);
+    method public final boolean moveToPrevious();
+    method protected void onChange(boolean);
+    method public boolean onMove(int, int);
+    method public void registerContentObserver(android.database.ContentObserver);
+    method public void registerDataSetObserver(android.database.DataSetObserver);
+    method public boolean requery();
+    method public android.os.Bundle respond(android.os.Bundle);
+    method public void setExtras(android.os.Bundle);
+    method public void setNotificationUri(android.content.ContentResolver, android.net.Uri);
+    method public void unregisterContentObserver(android.database.ContentObserver);
+    method public void unregisterDataSetObserver(android.database.DataSetObserver);
+    field @Deprecated protected boolean mClosed;
+    field @Deprecated protected android.content.ContentResolver mContentResolver;
+    field @Deprecated protected int mPos;
+  }
+
+  protected static class AbstractCursor.SelfContentObserver extends android.database.ContentObserver {
+    ctor public AbstractCursor.SelfContentObserver(android.database.AbstractCursor);
+  }
+
+  public abstract class AbstractWindowedCursor extends android.database.AbstractCursor {
+    ctor public AbstractWindowedCursor();
+    method public double getDouble(int);
+    method public float getFloat(int);
+    method public int getInt(int);
+    method public long getLong(int);
+    method public short getShort(int);
+    method public String getString(int);
+    method public boolean hasWindow();
+    method @Deprecated public boolean isBlob(int);
+    method @Deprecated public boolean isFloat(int);
+    method @Deprecated public boolean isLong(int);
+    method public boolean isNull(int);
+    method @Deprecated public boolean isString(int);
+    method public void setWindow(android.database.CursorWindow);
+    field protected android.database.CursorWindow mWindow;
+  }
+
+  public final class CharArrayBuffer {
+    ctor public CharArrayBuffer(int);
+    ctor public CharArrayBuffer(char[]);
+    field public char[] data;
+    field public int sizeCopied;
+  }
+
+  public class ContentObservable extends android.database.Observable<android.database.ContentObserver> {
+    ctor public ContentObservable();
+    method @Deprecated public void dispatchChange(boolean);
+    method public void dispatchChange(boolean, android.net.Uri);
+    method @Deprecated public void notifyChange(boolean);
+    method public void registerObserver(android.database.ContentObserver);
+  }
+
+  public abstract class ContentObserver {
+    ctor public ContentObserver(android.os.Handler);
+    method public boolean deliverSelfNotifications();
+    method @Deprecated public final void dispatchChange(boolean);
+    method public final void dispatchChange(boolean, @Nullable android.net.Uri);
+    method public final void dispatchChange(boolean, @Nullable android.net.Uri, int);
+    method public final void dispatchChange(boolean, @NonNull java.util.Collection<android.net.Uri>, int);
+    method public void onChange(boolean);
+    method public void onChange(boolean, @Nullable android.net.Uri);
+    method public void onChange(boolean, @Nullable android.net.Uri, int);
+    method public void onChange(boolean, @NonNull java.util.Collection<android.net.Uri>, int);
+  }
+
+  public interface CrossProcessCursor extends android.database.Cursor {
+    method public void fillWindow(int, android.database.CursorWindow);
+    method public android.database.CursorWindow getWindow();
+    method public boolean onMove(int, int);
+  }
+
+  public class CrossProcessCursorWrapper extends android.database.CursorWrapper implements android.database.CrossProcessCursor {
+    ctor public CrossProcessCursorWrapper(android.database.Cursor);
+    method public void fillWindow(int, android.database.CursorWindow);
+    method public android.database.CursorWindow getWindow();
+    method public boolean onMove(int, int);
+  }
+
+  public interface Cursor extends java.io.Closeable {
+    method public void close();
+    method public void copyStringToBuffer(int, android.database.CharArrayBuffer);
+    method @Deprecated public void deactivate();
+    method public byte[] getBlob(int);
+    method public int getColumnCount();
+    method public int getColumnIndex(String);
+    method public int getColumnIndexOrThrow(String) throws java.lang.IllegalArgumentException;
+    method public String getColumnName(int);
+    method public String[] getColumnNames();
+    method public int getCount();
+    method public double getDouble(int);
+    method public android.os.Bundle getExtras();
+    method public float getFloat(int);
+    method public int getInt(int);
+    method public long getLong(int);
+    method public android.net.Uri getNotificationUri();
+    method @Nullable public default java.util.List<android.net.Uri> getNotificationUris();
+    method public int getPosition();
+    method public short getShort(int);
+    method public String getString(int);
+    method public int getType(int);
+    method public boolean getWantsAllOnMoveCalls();
+    method public boolean isAfterLast();
+    method public boolean isBeforeFirst();
+    method public boolean isClosed();
+    method public boolean isFirst();
+    method public boolean isLast();
+    method public boolean isNull(int);
+    method public boolean move(int);
+    method public boolean moveToFirst();
+    method public boolean moveToLast();
+    method public boolean moveToNext();
+    method public boolean moveToPosition(int);
+    method public boolean moveToPrevious();
+    method public void registerContentObserver(android.database.ContentObserver);
+    method public void registerDataSetObserver(android.database.DataSetObserver);
+    method @Deprecated public boolean requery();
+    method public android.os.Bundle respond(android.os.Bundle);
+    method public void setExtras(android.os.Bundle);
+    method public void setNotificationUri(android.content.ContentResolver, android.net.Uri);
+    method public default void setNotificationUris(@NonNull android.content.ContentResolver, @NonNull java.util.List<android.net.Uri>);
+    method public void unregisterContentObserver(android.database.ContentObserver);
+    method public void unregisterDataSetObserver(android.database.DataSetObserver);
+    field public static final int FIELD_TYPE_BLOB = 4; // 0x4
+    field public static final int FIELD_TYPE_FLOAT = 2; // 0x2
+    field public static final int FIELD_TYPE_INTEGER = 1; // 0x1
+    field public static final int FIELD_TYPE_NULL = 0; // 0x0
+    field public static final int FIELD_TYPE_STRING = 3; // 0x3
+  }
+
+  public class CursorIndexOutOfBoundsException extends java.lang.IndexOutOfBoundsException {
+    ctor public CursorIndexOutOfBoundsException(int, int);
+    ctor public CursorIndexOutOfBoundsException(String);
+  }
+
+  public final class CursorJoiner implements java.lang.Iterable<android.database.CursorJoiner.Result> java.util.Iterator<android.database.CursorJoiner.Result> {
+    ctor public CursorJoiner(android.database.Cursor, String[], android.database.Cursor, String[]);
+    method public boolean hasNext();
+    method public java.util.Iterator<android.database.CursorJoiner.Result> iterator();
+    method public android.database.CursorJoiner.Result next();
+  }
+
+  public enum CursorJoiner.Result {
+    enum_constant public static final android.database.CursorJoiner.Result BOTH;
+    enum_constant public static final android.database.CursorJoiner.Result LEFT;
+    enum_constant public static final android.database.CursorJoiner.Result RIGHT;
+  }
+
+  public class CursorWindow extends android.database.sqlite.SQLiteClosable implements android.os.Parcelable {
+    ctor public CursorWindow(String);
+    ctor public CursorWindow(String, long);
+    ctor @Deprecated public CursorWindow(boolean);
+    method public boolean allocRow();
+    method public void clear();
+    method public void copyStringToBuffer(int, int, android.database.CharArrayBuffer);
+    method public int describeContents();
+    method public void freeLastRow();
+    method public byte[] getBlob(int, int);
+    method public double getDouble(int, int);
+    method public float getFloat(int, int);
+    method public int getInt(int, int);
+    method public long getLong(int, int);
+    method public int getNumRows();
+    method public short getShort(int, int);
+    method public int getStartPosition();
+    method public String getString(int, int);
+    method public int getType(int, int);
+    method @Deprecated public boolean isBlob(int, int);
+    method @Deprecated public boolean isFloat(int, int);
+    method @Deprecated public boolean isLong(int, int);
+    method @Deprecated public boolean isNull(int, int);
+    method @Deprecated public boolean isString(int, int);
+    method public static android.database.CursorWindow newFromParcel(android.os.Parcel);
+    method protected void onAllReferencesReleased();
+    method public boolean putBlob(byte[], int, int);
+    method public boolean putDouble(double, int, int);
+    method public boolean putLong(long, int, int);
+    method public boolean putNull(int, int);
+    method public boolean putString(String, int, int);
+    method public boolean setNumColumns(int);
+    method public void setStartPosition(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.database.CursorWindow> CREATOR;
+  }
+
+  public class CursorWrapper implements android.database.Cursor {
+    ctor public CursorWrapper(android.database.Cursor);
+    method public void close();
+    method public void copyStringToBuffer(int, android.database.CharArrayBuffer);
+    method @Deprecated public void deactivate();
+    method public byte[] getBlob(int);
+    method public int getColumnCount();
+    method public int getColumnIndex(String);
+    method public int getColumnIndexOrThrow(String) throws java.lang.IllegalArgumentException;
+    method public String getColumnName(int);
+    method public String[] getColumnNames();
+    method public int getCount();
+    method public double getDouble(int);
+    method public android.os.Bundle getExtras();
+    method public float getFloat(int);
+    method public int getInt(int);
+    method public long getLong(int);
+    method public android.net.Uri getNotificationUri();
+    method public int getPosition();
+    method public short getShort(int);
+    method public String getString(int);
+    method public int getType(int);
+    method public boolean getWantsAllOnMoveCalls();
+    method public android.database.Cursor getWrappedCursor();
+    method public boolean isAfterLast();
+    method public boolean isBeforeFirst();
+    method public boolean isClosed();
+    method public boolean isFirst();
+    method public boolean isLast();
+    method public boolean isNull(int);
+    method public boolean move(int);
+    method public boolean moveToFirst();
+    method public boolean moveToLast();
+    method public boolean moveToNext();
+    method public boolean moveToPosition(int);
+    method public boolean moveToPrevious();
+    method public void registerContentObserver(android.database.ContentObserver);
+    method public void registerDataSetObserver(android.database.DataSetObserver);
+    method @Deprecated public boolean requery();
+    method public android.os.Bundle respond(android.os.Bundle);
+    method public void setExtras(android.os.Bundle);
+    method public void setNotificationUri(android.content.ContentResolver, android.net.Uri);
+    method public void unregisterContentObserver(android.database.ContentObserver);
+    method public void unregisterDataSetObserver(android.database.DataSetObserver);
+  }
+
+  public class DataSetObservable extends android.database.Observable<android.database.DataSetObserver> {
+    ctor public DataSetObservable();
+    method public void notifyChanged();
+    method public void notifyInvalidated();
+  }
+
+  public abstract class DataSetObserver {
+    ctor public DataSetObserver();
+    method public void onChanged();
+    method public void onInvalidated();
+  }
+
+  public interface DatabaseErrorHandler {
+    method public void onCorruption(android.database.sqlite.SQLiteDatabase);
+  }
+
+  public class DatabaseUtils {
+    ctor public DatabaseUtils();
+    method public static void appendEscapedSQLString(StringBuilder, String);
+    method public static String[] appendSelectionArgs(String[], String[]);
+    method public static final void appendValueToSql(StringBuilder, Object);
+    method public static void bindObjectToProgram(android.database.sqlite.SQLiteProgram, int, Object);
+    method public static android.os.ParcelFileDescriptor blobFileDescriptorForQuery(android.database.sqlite.SQLiteDatabase, String, String[]);
+    method public static android.os.ParcelFileDescriptor blobFileDescriptorForQuery(android.database.sqlite.SQLiteStatement, String[]);
+    method public static String concatenateWhere(String, String);
+    method public static void createDbFromSqlStatements(android.content.Context, String, int, String);
+    method public static void cursorDoubleToContentValues(android.database.Cursor, String, android.content.ContentValues, String);
+    method public static void cursorDoubleToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, String);
+    method public static void cursorDoubleToCursorValues(android.database.Cursor, String, android.content.ContentValues);
+    method public static void cursorFloatToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, String);
+    method public static void cursorIntToContentValues(android.database.Cursor, String, android.content.ContentValues);
+    method public static void cursorIntToContentValues(android.database.Cursor, String, android.content.ContentValues, String);
+    method public static void cursorIntToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, String);
+    method public static void cursorLongToContentValues(android.database.Cursor, String, android.content.ContentValues);
+    method public static void cursorLongToContentValues(android.database.Cursor, String, android.content.ContentValues, String);
+    method public static void cursorLongToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, String);
+    method public static void cursorRowToContentValues(android.database.Cursor, android.content.ContentValues);
+    method public static void cursorShortToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, String);
+    method public static void cursorStringToContentValues(android.database.Cursor, String, android.content.ContentValues);
+    method public static void cursorStringToContentValues(android.database.Cursor, String, android.content.ContentValues, String);
+    method public static void cursorStringToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, String);
+    method public static void cursorStringToInsertHelper(android.database.Cursor, String, android.database.DatabaseUtils.InsertHelper, int);
+    method public static void dumpCurrentRow(android.database.Cursor);
+    method public static void dumpCurrentRow(android.database.Cursor, java.io.PrintStream);
+    method public static void dumpCurrentRow(android.database.Cursor, StringBuilder);
+    method public static String dumpCurrentRowToString(android.database.Cursor);
+    method public static void dumpCursor(android.database.Cursor);
+    method public static void dumpCursor(android.database.Cursor, java.io.PrintStream);
+    method public static void dumpCursor(android.database.Cursor, StringBuilder);
+    method public static String dumpCursorToString(android.database.Cursor);
+    method public static String getCollationKey(String);
+    method public static String getHexCollationKey(String);
+    method public static int getSqlStatementType(String);
+    method public static long longForQuery(android.database.sqlite.SQLiteDatabase, String, String[]);
+    method public static long longForQuery(android.database.sqlite.SQLiteStatement, String[]);
+    method public static long queryNumEntries(android.database.sqlite.SQLiteDatabase, String);
+    method public static long queryNumEntries(android.database.sqlite.SQLiteDatabase, String, String);
+    method public static long queryNumEntries(android.database.sqlite.SQLiteDatabase, String, String, String[]);
+    method public static final void readExceptionFromParcel(android.os.Parcel);
+    method public static void readExceptionWithFileNotFoundExceptionFromParcel(android.os.Parcel) throws java.io.FileNotFoundException;
+    method public static void readExceptionWithOperationApplicationExceptionFromParcel(android.os.Parcel) throws android.content.OperationApplicationException;
+    method public static String sqlEscapeString(String);
+    method public static String stringForQuery(android.database.sqlite.SQLiteDatabase, String, String[]);
+    method public static String stringForQuery(android.database.sqlite.SQLiteStatement, String[]);
+    method public static final void writeExceptionToParcel(android.os.Parcel, Exception);
+    field public static final int STATEMENT_ABORT = 6; // 0x6
+    field public static final int STATEMENT_ATTACH = 3; // 0x3
+    field public static final int STATEMENT_BEGIN = 4; // 0x4
+    field public static final int STATEMENT_COMMIT = 5; // 0x5
+    field public static final int STATEMENT_DDL = 8; // 0x8
+    field public static final int STATEMENT_OTHER = 99; // 0x63
+    field public static final int STATEMENT_PRAGMA = 7; // 0x7
+    field public static final int STATEMENT_SELECT = 1; // 0x1
+    field public static final int STATEMENT_UNPREPARED = 9; // 0x9
+    field public static final int STATEMENT_UPDATE = 2; // 0x2
+  }
+
+  @Deprecated public static class DatabaseUtils.InsertHelper {
+    ctor @Deprecated public DatabaseUtils.InsertHelper(android.database.sqlite.SQLiteDatabase, String);
+    method @Deprecated public void bind(int, double);
+    method @Deprecated public void bind(int, float);
+    method @Deprecated public void bind(int, long);
+    method @Deprecated public void bind(int, int);
+    method @Deprecated public void bind(int, boolean);
+    method @Deprecated public void bind(int, byte[]);
+    method @Deprecated public void bind(int, String);
+    method @Deprecated public void bindNull(int);
+    method @Deprecated public void close();
+    method @Deprecated public long execute();
+    method @Deprecated public int getColumnIndex(String);
+    method @Deprecated public long insert(android.content.ContentValues);
+    method @Deprecated public void prepareForInsert();
+    method @Deprecated public void prepareForReplace();
+    method @Deprecated public long replace(android.content.ContentValues);
+  }
+
+  public final class DefaultDatabaseErrorHandler implements android.database.DatabaseErrorHandler {
+    ctor public DefaultDatabaseErrorHandler();
+    method public void onCorruption(android.database.sqlite.SQLiteDatabase);
+  }
+
+  public class MatrixCursor extends android.database.AbstractCursor {
+    ctor public MatrixCursor(String[], int);
+    ctor public MatrixCursor(String[]);
+    method public void addRow(Object[]);
+    method public void addRow(Iterable<?>);
+    method public String[] getColumnNames();
+    method public int getCount();
+    method public double getDouble(int);
+    method public float getFloat(int);
+    method public int getInt(int);
+    method public long getLong(int);
+    method public short getShort(int);
+    method public String getString(int);
+    method public boolean isNull(int);
+    method public android.database.MatrixCursor.RowBuilder newRow();
+  }
+
+  public class MatrixCursor.RowBuilder {
+    method public android.database.MatrixCursor.RowBuilder add(Object);
+    method public android.database.MatrixCursor.RowBuilder add(String, Object);
+  }
+
+  public class MergeCursor extends android.database.AbstractCursor {
+    ctor public MergeCursor(android.database.Cursor[]);
+    method public String[] getColumnNames();
+    method public int getCount();
+    method public double getDouble(int);
+    method public float getFloat(int);
+    method public int getInt(int);
+    method public long getLong(int);
+    method public short getShort(int);
+    method public String getString(int);
+    method public boolean isNull(int);
+  }
+
+  public abstract class Observable<T> {
+    ctor public Observable();
+    method public void registerObserver(T);
+    method public void unregisterAll();
+    method public void unregisterObserver(T);
+    field protected final java.util.ArrayList<T> mObservers;
+  }
+
+  public class SQLException extends java.lang.RuntimeException {
+    ctor public SQLException();
+    ctor public SQLException(String);
+    ctor public SQLException(String, Throwable);
+  }
+
+  public class StaleDataException extends java.lang.RuntimeException {
+    ctor public StaleDataException();
+    ctor public StaleDataException(String);
+  }
+
+}
+
+package android.database.sqlite {
+
+  public class SQLiteAbortException extends android.database.sqlite.SQLiteException {
+    ctor public SQLiteAbortException();
+    ctor public SQLiteAbortException(String);
+  }
+
+  public class SQLiteAccessPermException extends android.database.sqlite.SQLiteException {
+    ctor public SQLiteAccessPermException();
+    ctor public SQLiteAccessPermException(String);
+  }
+
+  public class SQLiteBindOrColumnIndexOutOfRangeException extends android.database.sqlite.SQLiteException {
+    ctor public SQLiteBindOrColumnIndexOutOfRangeException();
+    ctor public SQLiteBindOrColumnIndexOutOfRangeException(String);
+  }
+
+  public class SQLiteBlobTooBigException extends android.database.sqlite.SQLiteException {
+    ctor public SQLiteBlobTooBigException();
+    ctor public SQLiteBlobTooBigException(String);
+  }
+
+  public class SQLiteCantOpenDatabaseException extends android.database.sqlite.SQLiteException {
+    ctor public SQLiteCantOpenDatabaseException();
+    ctor public SQLiteCantOpenDatabaseException(String);
+  }
+
+  public abstract class SQLiteClosable implements java.io.Closeable {
+    ctor public SQLiteClosable();
+    method public void acquireReference();
+    method public void close();
+    method protected abstract void onAllReferencesReleased();
+    method @Deprecated protected void onAllReferencesReleasedFromContainer();
+    method public void releaseReference();
+    method @Deprecated public void releaseReferenceFromContainer();
+  }
+
+  public class SQLiteConstraintException extends android.database.sqlite.SQLiteException {
+    ctor public SQLiteConstraintException();
+    ctor public SQLiteConstraintException(String);
+  }
+
+  public class SQLiteCursor extends android.database.AbstractWindowedCursor {
+    ctor @Deprecated public SQLiteCursor(android.database.sqlite.SQLiteDatabase, android.database.sqlite.SQLiteCursorDriver, String, android.database.sqlite.SQLiteQuery);
+    ctor public SQLiteCursor(android.database.sqlite.SQLiteCursorDriver, String, android.database.sqlite.SQLiteQuery);
+    method public String[] getColumnNames();
+    method public int getCount();
+    method public android.database.sqlite.SQLiteDatabase getDatabase();
+    method public void setFillWindowForwardOnly(boolean);
+    method public void setSelectionArguments(String[]);
+  }
+
+  public interface SQLiteCursorDriver {
+    method public void cursorClosed();
+    method public void cursorDeactivated();
+    method public void cursorRequeried(android.database.Cursor);
+    method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase.CursorFactory, String[]);
+    method public void setBindArguments(String[]);
+  }
+
+  public final class SQLiteDatabase extends android.database.sqlite.SQLiteClosable {
+    method public void beginTransaction();
+    method public void beginTransactionNonExclusive();
+    method public void beginTransactionWithListener(android.database.sqlite.SQLiteTransactionListener);
+    method public void beginTransactionWithListenerNonExclusive(android.database.sqlite.SQLiteTransactionListener);
+    method public android.database.sqlite.SQLiteStatement compileStatement(String) throws android.database.SQLException;
+    method @NonNull public static android.database.sqlite.SQLiteDatabase create(@Nullable android.database.sqlite.SQLiteDatabase.CursorFactory);
+    method @NonNull public static android.database.sqlite.SQLiteDatabase createInMemory(@NonNull android.database.sqlite.SQLiteDatabase.OpenParams);
+    method public int delete(String, String, String[]);
+    method public static boolean deleteDatabase(@NonNull java.io.File);
+    method public void disableWriteAheadLogging();
+    method public boolean enableWriteAheadLogging();
+    method public void endTransaction();
+    method public void execPerConnectionSQL(@NonNull String, @Nullable Object[]) throws android.database.SQLException;
+    method public void execSQL(String) throws android.database.SQLException;
+    method public void execSQL(String, Object[]) throws android.database.SQLException;
+    method public static String findEditTable(String);
+    method public java.util.List<android.util.Pair<java.lang.String,java.lang.String>> getAttachedDbs();
+    method public long getMaximumSize();
+    method public long getPageSize();
+    method public String getPath();
+    method @Deprecated public java.util.Map<java.lang.String,java.lang.String> getSyncedTables();
+    method public int getVersion();
+    method public boolean inTransaction();
+    method public long insert(String, String, android.content.ContentValues);
+    method public long insertOrThrow(String, String, android.content.ContentValues) throws android.database.SQLException;
+    method public long insertWithOnConflict(String, String, android.content.ContentValues, int);
+    method public boolean isDatabaseIntegrityOk();
+    method public boolean isDbLockedByCurrentThread();
+    method @Deprecated public boolean isDbLockedByOtherThreads();
+    method public boolean isOpen();
+    method public boolean isReadOnly();
+    method public boolean isWriteAheadLoggingEnabled();
+    method @Deprecated public void markTableSyncable(String, String);
+    method @Deprecated public void markTableSyncable(String, String, String);
+    method public boolean needUpgrade(int);
+    method protected void onAllReferencesReleased();
+    method public static android.database.sqlite.SQLiteDatabase openDatabase(@NonNull String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, int);
+    method public static android.database.sqlite.SQLiteDatabase openDatabase(@NonNull java.io.File, @NonNull android.database.sqlite.SQLiteDatabase.OpenParams);
+    method public static android.database.sqlite.SQLiteDatabase openDatabase(@NonNull String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, int, @Nullable android.database.DatabaseErrorHandler);
+    method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(@NonNull java.io.File, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory);
+    method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(@NonNull String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory);
+    method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(@NonNull String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, @Nullable android.database.DatabaseErrorHandler);
+    method public android.database.Cursor query(boolean, String, String[], String, String[], String, String, String, String);
+    method public android.database.Cursor query(boolean, String, String[], String, String[], String, String, String, String, android.os.CancellationSignal);
+    method public android.database.Cursor query(String, String[], String, String[], String, String, String);
+    method public android.database.Cursor query(String, String[], String, String[], String, String, String, String);
+    method public android.database.Cursor queryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, boolean, String, String[], String, String[], String, String, String, String);
+    method public android.database.Cursor queryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, boolean, String, String[], String, String[], String, String, String, String, android.os.CancellationSignal);
+    method public android.database.Cursor rawQuery(String, String[]);
+    method public android.database.Cursor rawQuery(String, String[], android.os.CancellationSignal);
+    method public android.database.Cursor rawQueryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, String, String[], String);
+    method public android.database.Cursor rawQueryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, String, String[], String, android.os.CancellationSignal);
+    method public static int releaseMemory();
+    method public long replace(String, String, android.content.ContentValues);
+    method public long replaceOrThrow(String, String, android.content.ContentValues) throws android.database.SQLException;
+    method public void setCustomAggregateFunction(@NonNull String, @NonNull java.util.function.BinaryOperator<java.lang.String>) throws android.database.sqlite.SQLiteException;
+    method public void setCustomScalarFunction(@NonNull String, @NonNull java.util.function.UnaryOperator<java.lang.String>) throws android.database.sqlite.SQLiteException;
+    method public void setForeignKeyConstraintsEnabled(boolean);
+    method public void setLocale(java.util.Locale);
+    method @Deprecated public void setLockingEnabled(boolean);
+    method public void setMaxSqlCacheSize(int);
+    method public long setMaximumSize(long);
+    method public void setPageSize(long);
+    method public void setTransactionSuccessful();
+    method public void setVersion(int);
+    method public int update(String, android.content.ContentValues, String, String[]);
+    method public int updateWithOnConflict(String, android.content.ContentValues, String, String[], int);
+    method public void validateSql(@NonNull String, @Nullable android.os.CancellationSignal);
+    method @Deprecated public boolean yieldIfContended();
+    method public boolean yieldIfContendedSafely();
+    method public boolean yieldIfContendedSafely(long);
+    field public static final int CONFLICT_ABORT = 2; // 0x2
+    field public static final int CONFLICT_FAIL = 3; // 0x3
+    field public static final int CONFLICT_IGNORE = 4; // 0x4
+    field public static final int CONFLICT_NONE = 0; // 0x0
+    field public static final int CONFLICT_REPLACE = 5; // 0x5
+    field public static final int CONFLICT_ROLLBACK = 1; // 0x1
+    field public static final int CREATE_IF_NECESSARY = 268435456; // 0x10000000
+    field public static final int ENABLE_WRITE_AHEAD_LOGGING = 536870912; // 0x20000000
+    field public static final int MAX_SQL_CACHE_SIZE = 100; // 0x64
+    field public static final int NO_LOCALIZED_COLLATORS = 16; // 0x10
+    field public static final int OPEN_READONLY = 1; // 0x1
+    field public static final int OPEN_READWRITE = 0; // 0x0
+    field public static final int SQLITE_MAX_LIKE_PATTERN_LENGTH = 50000; // 0xc350
+  }
+
+  public static interface SQLiteDatabase.CursorFactory {
+    method public android.database.Cursor newCursor(android.database.sqlite.SQLiteDatabase, android.database.sqlite.SQLiteCursorDriver, String, android.database.sqlite.SQLiteQuery);
+  }
+
+  public static final class SQLiteDatabase.OpenParams {
+    method @Nullable public android.database.sqlite.SQLiteDatabase.CursorFactory getCursorFactory();
+    method @Nullable public android.database.DatabaseErrorHandler getErrorHandler();
+    method public long getIdleConnectionTimeout();
+    method @Nullable public String getJournalMode();
+    method @IntRange(from=0xffffffff) public int getLookasideSlotCount();
+    method @IntRange(from=0xffffffff) public int getLookasideSlotSize();
+    method public int getOpenFlags();
+    method @Nullable public String getSynchronousMode();
+  }
+
+  public static final class SQLiteDatabase.OpenParams.Builder {
+    ctor public SQLiteDatabase.OpenParams.Builder();
+    ctor public SQLiteDatabase.OpenParams.Builder(android.database.sqlite.SQLiteDatabase.OpenParams);
+    method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder addOpenFlags(int);
+    method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams build();
+    method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder removeOpenFlags(int);
+    method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setCursorFactory(@Nullable android.database.sqlite.SQLiteDatabase.CursorFactory);
+    method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setErrorHandler(@Nullable android.database.DatabaseErrorHandler);
+    method @Deprecated @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setIdleConnectionTimeout(@IntRange(from=0) long);
+    method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setJournalMode(@NonNull String);
+    method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setLookasideConfig(@IntRange(from=0) int, @IntRange(from=0) int);
+    method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setOpenFlags(int);
+    method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setSynchronousMode(@NonNull String);
+  }
+
+  public class SQLiteDatabaseCorruptException extends android.database.sqlite.SQLiteException {
+    ctor public SQLiteDatabaseCorruptException();
+    ctor public SQLiteDatabaseCorruptException(String);
+  }
+
+  public class SQLiteDatabaseLockedException extends android.database.sqlite.SQLiteException {
+    ctor public SQLiteDatabaseLockedException();
+    ctor public SQLiteDatabaseLockedException(String);
+  }
+
+  public class SQLiteDatatypeMismatchException extends android.database.sqlite.SQLiteException {
+    ctor public SQLiteDatatypeMismatchException();
+    ctor public SQLiteDatatypeMismatchException(String);
+  }
+
+  public class SQLiteDiskIOException extends android.database.sqlite.SQLiteException {
+    ctor public SQLiteDiskIOException();
+    ctor public SQLiteDiskIOException(String);
+  }
+
+  public class SQLiteDoneException extends android.database.sqlite.SQLiteException {
+    ctor public SQLiteDoneException();
+    ctor public SQLiteDoneException(String);
+  }
+
+  public class SQLiteException extends android.database.SQLException {
+    ctor public SQLiteException();
+    ctor public SQLiteException(String);
+    ctor public SQLiteException(String, Throwable);
+  }
+
+  public class SQLiteFullException extends android.database.sqlite.SQLiteException {
+    ctor public SQLiteFullException();
+    ctor public SQLiteFullException(String);
+  }
+
+  public class SQLiteMisuseException extends android.database.sqlite.SQLiteException {
+    ctor public SQLiteMisuseException();
+    ctor public SQLiteMisuseException(String);
+  }
+
+  public abstract class SQLiteOpenHelper implements java.lang.AutoCloseable {
+    ctor public SQLiteOpenHelper(@Nullable android.content.Context, @Nullable String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, int);
+    ctor public SQLiteOpenHelper(@Nullable android.content.Context, @Nullable String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, int, @Nullable android.database.DatabaseErrorHandler);
+    ctor public SQLiteOpenHelper(@Nullable android.content.Context, @Nullable String, int, @NonNull android.database.sqlite.SQLiteDatabase.OpenParams);
+    method public void close();
+    method public String getDatabaseName();
+    method public android.database.sqlite.SQLiteDatabase getReadableDatabase();
+    method public android.database.sqlite.SQLiteDatabase getWritableDatabase();
+    method public void onConfigure(android.database.sqlite.SQLiteDatabase);
+    method public abstract void onCreate(android.database.sqlite.SQLiteDatabase);
+    method public void onDowngrade(android.database.sqlite.SQLiteDatabase, int, int);
+    method public void onOpen(android.database.sqlite.SQLiteDatabase);
+    method public abstract void onUpgrade(android.database.sqlite.SQLiteDatabase, int, int);
+    method @Deprecated public void setIdleConnectionTimeout(@IntRange(from=0) long);
+    method public void setLookasideConfig(@IntRange(from=0) int, @IntRange(from=0) int);
+    method public void setOpenParams(@NonNull android.database.sqlite.SQLiteDatabase.OpenParams);
+    method public void setWriteAheadLoggingEnabled(boolean);
+  }
+
+  public class SQLiteOutOfMemoryException extends android.database.sqlite.SQLiteException {
+    ctor public SQLiteOutOfMemoryException();
+    ctor public SQLiteOutOfMemoryException(String);
+  }
+
+  public abstract class SQLiteProgram extends android.database.sqlite.SQLiteClosable {
+    method public void bindAllArgsAsStrings(String[]);
+    method public void bindBlob(int, byte[]);
+    method public void bindDouble(int, double);
+    method public void bindLong(int, long);
+    method public void bindNull(int);
+    method public void bindString(int, String);
+    method public void clearBindings();
+    method @Deprecated public final int getUniqueId();
+    method protected void onAllReferencesReleased();
+  }
+
+  public final class SQLiteQuery extends android.database.sqlite.SQLiteProgram {
+  }
+
+  public class SQLiteQueryBuilder {
+    ctor public SQLiteQueryBuilder();
+    method public static void appendColumns(StringBuilder, String[]);
+    method public void appendWhere(@NonNull CharSequence);
+    method public void appendWhereEscapeString(@NonNull String);
+    method public void appendWhereStandalone(@NonNull CharSequence);
+    method public String buildQuery(String[], String, String, String, String, String);
+    method @Deprecated public String buildQuery(String[], String, String[], String, String, String, String);
+    method public static String buildQueryString(boolean, String, String[], String, String, String, String, String);
+    method public String buildUnionQuery(String[], String, String);
+    method public String buildUnionSubQuery(String, String[], java.util.Set<java.lang.String>, int, String, String, String, String);
+    method @Deprecated public String buildUnionSubQuery(String, String[], java.util.Set<java.lang.String>, int, String, String, String[], String, String);
+    method public int delete(@NonNull android.database.sqlite.SQLiteDatabase, @Nullable String, @Nullable String[]);
+    method @Nullable public android.database.sqlite.SQLiteDatabase.CursorFactory getCursorFactory();
+    method @Nullable public java.util.Collection<java.util.regex.Pattern> getProjectionGreylist();
+    method @Nullable public java.util.Map<java.lang.String,java.lang.String> getProjectionMap();
+    method @Nullable public String getTables();
+    method public long insert(@NonNull android.database.sqlite.SQLiteDatabase, @NonNull android.content.ContentValues);
+    method public boolean isDistinct();
+    method public boolean isStrict();
+    method public boolean isStrictColumns();
+    method public boolean isStrictGrammar();
+    method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase, String[], String, String[], String, String, String);
+    method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase, String[], String, String[], String, String, String, String);
+    method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase, String[], String, String[], String, String, String, String, android.os.CancellationSignal);
+    method public void setCursorFactory(@Nullable android.database.sqlite.SQLiteDatabase.CursorFactory);
+    method public void setDistinct(boolean);
+    method public void setProjectionGreylist(@Nullable java.util.Collection<java.util.regex.Pattern>);
+    method public void setProjectionMap(@Nullable java.util.Map<java.lang.String,java.lang.String>);
+    method public void setStrict(boolean);
+    method public void setStrictColumns(boolean);
+    method public void setStrictGrammar(boolean);
+    method public void setTables(@Nullable String);
+    method public int update(@NonNull android.database.sqlite.SQLiteDatabase, @NonNull android.content.ContentValues, @Nullable String, @Nullable String[]);
+  }
+
+  public class SQLiteReadOnlyDatabaseException extends android.database.sqlite.SQLiteException {
+    ctor public SQLiteReadOnlyDatabaseException();
+    ctor public SQLiteReadOnlyDatabaseException(String);
+  }
+
+  public final class SQLiteStatement extends android.database.sqlite.SQLiteProgram {
+    method public void execute();
+    method public long executeInsert();
+    method public int executeUpdateDelete();
+    method public android.os.ParcelFileDescriptor simpleQueryForBlobFileDescriptor();
+    method public long simpleQueryForLong();
+    method public String simpleQueryForString();
+  }
+
+  public class SQLiteTableLockedException extends android.database.sqlite.SQLiteException {
+    ctor public SQLiteTableLockedException();
+    ctor public SQLiteTableLockedException(String);
+  }
+
+  public interface SQLiteTransactionListener {
+    method public void onBegin();
+    method public void onCommit();
+    method public void onRollback();
+  }
+
+}
+
+package android.drm {
+
+  @Deprecated public class DrmConvertedStatus {
+    ctor @Deprecated public DrmConvertedStatus(int, byte[], int);
+    field @Deprecated public static final int STATUS_ERROR = 3; // 0x3
+    field @Deprecated public static final int STATUS_INPUTDATA_ERROR = 2; // 0x2
+    field @Deprecated public static final int STATUS_OK = 1; // 0x1
+    field @Deprecated public final byte[] convertedData;
+    field @Deprecated public final int offset;
+    field @Deprecated public final int statusCode;
+  }
+
+  @Deprecated public class DrmErrorEvent extends android.drm.DrmEvent {
+    ctor @Deprecated public DrmErrorEvent(int, int, String);
+    ctor @Deprecated public DrmErrorEvent(int, int, String, java.util.HashMap<java.lang.String,java.lang.Object>);
+    field @Deprecated public static final int TYPE_ACQUIRE_DRM_INFO_FAILED = 2008; // 0x7d8
+    field @Deprecated public static final int TYPE_NOT_SUPPORTED = 2003; // 0x7d3
+    field @Deprecated public static final int TYPE_NO_INTERNET_CONNECTION = 2005; // 0x7d5
+    field @Deprecated public static final int TYPE_OUT_OF_MEMORY = 2004; // 0x7d4
+    field @Deprecated public static final int TYPE_PROCESS_DRM_INFO_FAILED = 2006; // 0x7d6
+    field @Deprecated public static final int TYPE_REMOVE_ALL_RIGHTS_FAILED = 2007; // 0x7d7
+    field @Deprecated public static final int TYPE_RIGHTS_NOT_INSTALLED = 2001; // 0x7d1
+    field @Deprecated public static final int TYPE_RIGHTS_RENEWAL_NOT_ALLOWED = 2002; // 0x7d2
+  }
+
+  @Deprecated public class DrmEvent {
+    ctor @Deprecated protected DrmEvent(int, int, String, java.util.HashMap<java.lang.String,java.lang.Object>);
+    ctor @Deprecated protected DrmEvent(int, int, String);
+    method @Deprecated public Object getAttribute(String);
+    method @Deprecated public String getMessage();
+    method @Deprecated public int getType();
+    method @Deprecated public int getUniqueId();
+    field @Deprecated public static final String DRM_INFO_OBJECT = "drm_info_object";
+    field @Deprecated public static final String DRM_INFO_STATUS_OBJECT = "drm_info_status_object";
+    field @Deprecated public static final int TYPE_ALL_RIGHTS_REMOVED = 1001; // 0x3e9
+    field @Deprecated public static final int TYPE_DRM_INFO_PROCESSED = 1002; // 0x3ea
+  }
+
+  @Deprecated public class DrmInfo {
+    ctor @Deprecated public DrmInfo(int, byte[], String);
+    ctor @Deprecated public DrmInfo(int, String, String);
+    method @Deprecated public Object get(String);
+    method @Deprecated public byte[] getData();
+    method @Deprecated public int getInfoType();
+    method @Deprecated public String getMimeType();
+    method @Deprecated public java.util.Iterator<java.lang.Object> iterator();
+    method @Deprecated public java.util.Iterator<java.lang.String> keyIterator();
+    method @Deprecated public void put(String, Object);
+  }
+
+  @Deprecated public class DrmInfoEvent extends android.drm.DrmEvent {
+    ctor @Deprecated public DrmInfoEvent(int, int, String);
+    ctor @Deprecated public DrmInfoEvent(int, int, String, java.util.HashMap<java.lang.String,java.lang.Object>);
+    field @Deprecated public static final int TYPE_ACCOUNT_ALREADY_REGISTERED = 5; // 0x5
+    field @Deprecated public static final int TYPE_ALREADY_REGISTERED_BY_ANOTHER_ACCOUNT = 1; // 0x1
+    field @Deprecated public static final int TYPE_REMOVE_RIGHTS = 2; // 0x2
+    field @Deprecated public static final int TYPE_RIGHTS_INSTALLED = 3; // 0x3
+    field @Deprecated public static final int TYPE_RIGHTS_REMOVED = 6; // 0x6
+    field @Deprecated public static final int TYPE_WAIT_FOR_RIGHTS = 4; // 0x4
+  }
+
+  @Deprecated public class DrmInfoRequest {
+    ctor @Deprecated public DrmInfoRequest(int, String);
+    method @Deprecated public Object get(String);
+    method @Deprecated public int getInfoType();
+    method @Deprecated public String getMimeType();
+    method @Deprecated public java.util.Iterator<java.lang.Object> iterator();
+    method @Deprecated public java.util.Iterator<java.lang.String> keyIterator();
+    method @Deprecated public void put(String, Object);
+    field @Deprecated public static final String ACCOUNT_ID = "account_id";
+    field @Deprecated public static final String SUBSCRIPTION_ID = "subscription_id";
+    field @Deprecated public static final int TYPE_REGISTRATION_INFO = 1; // 0x1
+    field @Deprecated public static final int TYPE_RIGHTS_ACQUISITION_INFO = 3; // 0x3
+    field @Deprecated public static final int TYPE_RIGHTS_ACQUISITION_PROGRESS_INFO = 4; // 0x4
+    field @Deprecated public static final int TYPE_UNREGISTRATION_INFO = 2; // 0x2
+  }
+
+  @Deprecated public class DrmInfoStatus {
+    ctor @Deprecated public DrmInfoStatus(int, int, android.drm.ProcessedData, String);
+    field @Deprecated public static final int STATUS_ERROR = 2; // 0x2
+    field @Deprecated public static final int STATUS_OK = 1; // 0x1
+    field @Deprecated public final android.drm.ProcessedData data;
+    field @Deprecated public final int infoType;
+    field @Deprecated public final String mimeType;
+    field @Deprecated public final int statusCode;
+  }
+
+  @Deprecated public class DrmManagerClient implements java.lang.AutoCloseable {
+    ctor @Deprecated public DrmManagerClient(android.content.Context);
+    method @Deprecated public android.drm.DrmInfo acquireDrmInfo(android.drm.DrmInfoRequest);
+    method @Deprecated public int acquireRights(android.drm.DrmInfoRequest);
+    method @Deprecated public boolean canHandle(String, String);
+    method @Deprecated public boolean canHandle(android.net.Uri, String);
+    method @Deprecated public int checkRightsStatus(String);
+    method @Deprecated public int checkRightsStatus(android.net.Uri);
+    method @Deprecated public int checkRightsStatus(String, int);
+    method @Deprecated public int checkRightsStatus(android.net.Uri, int);
+    method @Deprecated public void close();
+    method @Deprecated public android.drm.DrmConvertedStatus closeConvertSession(int);
+    method @Deprecated public android.drm.DrmConvertedStatus convertData(int, byte[]);
+    method @Deprecated public String[] getAvailableDrmEngines();
+    method @Deprecated @NonNull public java.util.Collection<android.drm.DrmSupportInfo> getAvailableDrmSupportInfo();
+    method @Deprecated public android.content.ContentValues getConstraints(String, int);
+    method @Deprecated public android.content.ContentValues getConstraints(android.net.Uri, int);
+    method @Deprecated public int getDrmObjectType(String, String);
+    method @Deprecated public int getDrmObjectType(android.net.Uri, String);
+    method @Deprecated public android.content.ContentValues getMetadata(String);
+    method @Deprecated public android.content.ContentValues getMetadata(android.net.Uri);
+    method @Deprecated public String getOriginalMimeType(String);
+    method @Deprecated public String getOriginalMimeType(android.net.Uri);
+    method @Deprecated public int openConvertSession(String);
+    method @Deprecated public int processDrmInfo(android.drm.DrmInfo);
+    method @Deprecated public void release();
+    method @Deprecated public int removeAllRights();
+    method @Deprecated public int removeRights(String);
+    method @Deprecated public int removeRights(android.net.Uri);
+    method @Deprecated public int saveRights(android.drm.DrmRights, String, String) throws java.io.IOException;
+    method @Deprecated public void setOnErrorListener(android.drm.DrmManagerClient.OnErrorListener);
+    method @Deprecated public void setOnEventListener(android.drm.DrmManagerClient.OnEventListener);
+    method @Deprecated public void setOnInfoListener(android.drm.DrmManagerClient.OnInfoListener);
+    field @Deprecated public static final int ERROR_NONE = 0; // 0x0
+    field @Deprecated public static final int ERROR_UNKNOWN = -2000; // 0xfffff830
+  }
+
+  @Deprecated public static interface DrmManagerClient.OnErrorListener {
+    method @Deprecated public void onError(android.drm.DrmManagerClient, android.drm.DrmErrorEvent);
+  }
+
+  @Deprecated public static interface DrmManagerClient.OnEventListener {
+    method @Deprecated public void onEvent(android.drm.DrmManagerClient, android.drm.DrmEvent);
+  }
+
+  @Deprecated public static interface DrmManagerClient.OnInfoListener {
+    method @Deprecated public void onInfo(android.drm.DrmManagerClient, android.drm.DrmInfoEvent);
+  }
+
+  @Deprecated public class DrmRights {
+    ctor @Deprecated public DrmRights(String, String);
+    ctor @Deprecated public DrmRights(String, String, String);
+    ctor @Deprecated public DrmRights(String, String, String, String);
+    ctor @Deprecated public DrmRights(java.io.File, String);
+    ctor @Deprecated public DrmRights(android.drm.ProcessedData, String);
+    method @Deprecated public String getAccountId();
+    method @Deprecated public byte[] getData();
+    method @Deprecated public String getMimeType();
+    method @Deprecated public String getSubscriptionId();
+  }
+
+  @Deprecated public class DrmStore {
+    ctor @Deprecated public DrmStore();
+  }
+
+  @Deprecated public static class DrmStore.Action {
+    ctor @Deprecated public DrmStore.Action();
+    field @Deprecated public static final int DEFAULT = 0; // 0x0
+    field @Deprecated public static final int DISPLAY = 7; // 0x7
+    field @Deprecated public static final int EXECUTE = 6; // 0x6
+    field @Deprecated public static final int OUTPUT = 4; // 0x4
+    field @Deprecated public static final int PLAY = 1; // 0x1
+    field @Deprecated public static final int PREVIEW = 5; // 0x5
+    field @Deprecated public static final int RINGTONE = 2; // 0x2
+    field @Deprecated public static final int TRANSFER = 3; // 0x3
+  }
+
+  @Deprecated public static interface DrmStore.ConstraintsColumns {
+    field @Deprecated public static final String EXTENDED_METADATA = "extended_metadata";
+    field @Deprecated public static final String LICENSE_AVAILABLE_TIME = "license_available_time";
+    field @Deprecated public static final String LICENSE_EXPIRY_TIME = "license_expiry_time";
+    field @Deprecated public static final String LICENSE_START_TIME = "license_start_time";
+    field @Deprecated public static final String MAX_REPEAT_COUNT = "max_repeat_count";
+    field @Deprecated public static final String REMAINING_REPEAT_COUNT = "remaining_repeat_count";
+  }
+
+  @Deprecated public static class DrmStore.DrmObjectType {
+    ctor @Deprecated public DrmStore.DrmObjectType();
+    field @Deprecated public static final int CONTENT = 1; // 0x1
+    field @Deprecated public static final int RIGHTS_OBJECT = 2; // 0x2
+    field @Deprecated public static final int TRIGGER_OBJECT = 3; // 0x3
+    field @Deprecated public static final int UNKNOWN = 0; // 0x0
+  }
+
+  @Deprecated public static class DrmStore.Playback {
+    ctor @Deprecated public DrmStore.Playback();
+    field @Deprecated public static final int PAUSE = 2; // 0x2
+    field @Deprecated public static final int RESUME = 3; // 0x3
+    field @Deprecated public static final int START = 0; // 0x0
+    field @Deprecated public static final int STOP = 1; // 0x1
+  }
+
+  @Deprecated public static class DrmStore.RightsStatus {
+    ctor @Deprecated public DrmStore.RightsStatus();
+    field @Deprecated public static final int RIGHTS_EXPIRED = 2; // 0x2
+    field @Deprecated public static final int RIGHTS_INVALID = 1; // 0x1
+    field @Deprecated public static final int RIGHTS_NOT_ACQUIRED = 3; // 0x3
+    field @Deprecated public static final int RIGHTS_VALID = 0; // 0x0
+  }
+
+  @Deprecated public class DrmSupportInfo {
+    ctor @Deprecated public DrmSupportInfo();
+    method @Deprecated public void addFileSuffix(String);
+    method @Deprecated public void addMimeType(String);
+    method @Deprecated public String getDescriprition();
+    method @Deprecated public String getDescription();
+    method @Deprecated public java.util.Iterator<java.lang.String> getFileSuffixIterator();
+    method @Deprecated public java.util.Iterator<java.lang.String> getMimeTypeIterator();
+    method @Deprecated public void setDescription(String);
+  }
+
+  @Deprecated public class DrmUtils {
+    ctor @Deprecated public DrmUtils();
+    method @Deprecated public static android.drm.DrmUtils.ExtendedMetadataParser getExtendedMetadataParser(byte[]);
+  }
+
+  @Deprecated public static class DrmUtils.ExtendedMetadataParser {
+    method @Deprecated public String get(String);
+    method @Deprecated public java.util.Iterator<java.lang.String> iterator();
+    method @Deprecated public java.util.Iterator<java.lang.String> keyIterator();
+  }
+
+  @Deprecated public class ProcessedData {
+    method @Deprecated public String getAccountId();
+    method @Deprecated public byte[] getData();
+    method @Deprecated public String getSubscriptionId();
+  }
+
+}
+
+package android.gesture {
+
+  public class Gesture implements android.os.Parcelable {
+    ctor public Gesture();
+    method public void addStroke(android.gesture.GestureStroke);
+    method public Object clone();
+    method public int describeContents();
+    method public android.graphics.RectF getBoundingBox();
+    method public long getID();
+    method public float getLength();
+    method public java.util.ArrayList<android.gesture.GestureStroke> getStrokes();
+    method public int getStrokesCount();
+    method public android.graphics.Bitmap toBitmap(int, int, int, int, int);
+    method public android.graphics.Bitmap toBitmap(int, int, int, int);
+    method public android.graphics.Path toPath();
+    method public android.graphics.Path toPath(android.graphics.Path);
+    method public android.graphics.Path toPath(int, int, int, int);
+    method public android.graphics.Path toPath(android.graphics.Path, int, int, int, int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.gesture.Gesture> CREATOR;
+  }
+
+  public final class GestureLibraries {
+    method public static android.gesture.GestureLibrary fromFile(String);
+    method public static android.gesture.GestureLibrary fromFile(java.io.File);
+    method @NonNull public static android.gesture.GestureLibrary fromFileDescriptor(@NonNull android.os.ParcelFileDescriptor);
+    method public static android.gesture.GestureLibrary fromPrivateFile(android.content.Context, String);
+    method public static android.gesture.GestureLibrary fromRawResource(android.content.Context, @RawRes int);
+  }
+
+  public abstract class GestureLibrary {
+    ctor protected GestureLibrary();
+    method public void addGesture(String, android.gesture.Gesture);
+    method public java.util.Set<java.lang.String> getGestureEntries();
+    method public java.util.ArrayList<android.gesture.Gesture> getGestures(String);
+    method public int getOrientationStyle();
+    method public int getSequenceType();
+    method public boolean isReadOnly();
+    method public abstract boolean load();
+    method public java.util.ArrayList<android.gesture.Prediction> recognize(android.gesture.Gesture);
+    method public void removeEntry(String);
+    method public void removeGesture(String, android.gesture.Gesture);
+    method public abstract boolean save();
+    method public void setOrientationStyle(int);
+    method public void setSequenceType(int);
+    field protected final android.gesture.GestureStore mStore;
+  }
+
+  public class GestureOverlayView extends android.widget.FrameLayout {
+    ctor public GestureOverlayView(android.content.Context);
+    ctor public GestureOverlayView(android.content.Context, android.util.AttributeSet);
+    ctor public GestureOverlayView(android.content.Context, android.util.AttributeSet, int);
+    ctor public GestureOverlayView(android.content.Context, android.util.AttributeSet, int, int);
+    method public void addOnGestureListener(android.gesture.GestureOverlayView.OnGestureListener);
+    method public void addOnGesturePerformedListener(android.gesture.GestureOverlayView.OnGesturePerformedListener);
+    method public void addOnGesturingListener(android.gesture.GestureOverlayView.OnGesturingListener);
+    method public void cancelClearAnimation();
+    method public void cancelGesture();
+    method public void clear(boolean);
+    method public java.util.ArrayList<android.gesture.GesturePoint> getCurrentStroke();
+    method public long getFadeOffset();
+    method public android.gesture.Gesture getGesture();
+    method @ColorInt public int getGestureColor();
+    method public android.graphics.Path getGesturePath();
+    method public android.graphics.Path getGesturePath(android.graphics.Path);
+    method public float getGestureStrokeAngleThreshold();
+    method public float getGestureStrokeLengthThreshold();
+    method public float getGestureStrokeSquarenessTreshold();
+    method public int getGestureStrokeType();
+    method public float getGestureStrokeWidth();
+    method public int getOrientation();
+    method @ColorInt public int getUncertainGestureColor();
+    method public boolean isEventsInterceptionEnabled();
+    method public boolean isFadeEnabled();
+    method public boolean isGestureVisible();
+    method public boolean isGesturing();
+    method public void removeAllOnGestureListeners();
+    method public void removeAllOnGesturePerformedListeners();
+    method public void removeAllOnGesturingListeners();
+    method public void removeOnGestureListener(android.gesture.GestureOverlayView.OnGestureListener);
+    method public void removeOnGesturePerformedListener(android.gesture.GestureOverlayView.OnGesturePerformedListener);
+    method public void removeOnGesturingListener(android.gesture.GestureOverlayView.OnGesturingListener);
+    method public void setEventsInterceptionEnabled(boolean);
+    method public void setFadeEnabled(boolean);
+    method public void setFadeOffset(long);
+    method public void setGesture(android.gesture.Gesture);
+    method public void setGestureColor(@ColorInt int);
+    method public void setGestureStrokeAngleThreshold(float);
+    method public void setGestureStrokeLengthThreshold(float);
+    method public void setGestureStrokeSquarenessTreshold(float);
+    method public void setGestureStrokeType(int);
+    method public void setGestureStrokeWidth(float);
+    method public void setGestureVisible(boolean);
+    method public void setOrientation(int);
+    method public void setUncertainGestureColor(@ColorInt int);
+    field public static final int GESTURE_STROKE_TYPE_MULTIPLE = 1; // 0x1
+    field public static final int GESTURE_STROKE_TYPE_SINGLE = 0; // 0x0
+    field public static final int ORIENTATION_HORIZONTAL = 0; // 0x0
+    field public static final int ORIENTATION_VERTICAL = 1; // 0x1
+  }
+
+  public static interface GestureOverlayView.OnGestureListener {
+    method public void onGesture(android.gesture.GestureOverlayView, android.view.MotionEvent);
+    method public void onGestureCancelled(android.gesture.GestureOverlayView, android.view.MotionEvent);
+    method public void onGestureEnded(android.gesture.GestureOverlayView, android.view.MotionEvent);
+    method public void onGestureStarted(android.gesture.GestureOverlayView, android.view.MotionEvent);
+  }
+
+  public static interface GestureOverlayView.OnGesturePerformedListener {
+    method public void onGesturePerformed(android.gesture.GestureOverlayView, android.gesture.Gesture);
+  }
+
+  public static interface GestureOverlayView.OnGesturingListener {
+    method public void onGesturingEnded(android.gesture.GestureOverlayView);
+    method public void onGesturingStarted(android.gesture.GestureOverlayView);
+  }
+
+  public class GesturePoint {
+    ctor public GesturePoint(float, float, long);
+    method public Object clone();
+    field public final long timestamp;
+    field public final float x;
+    field public final float y;
+  }
+
+  public class GestureStore {
+    ctor public GestureStore();
+    method public void addGesture(String, android.gesture.Gesture);
+    method public java.util.Set<java.lang.String> getGestureEntries();
+    method public java.util.ArrayList<android.gesture.Gesture> getGestures(String);
+    method public int getOrientationStyle();
+    method public int getSequenceType();
+    method public boolean hasChanged();
+    method public void load(java.io.InputStream) throws java.io.IOException;
+    method public void load(java.io.InputStream, boolean) throws java.io.IOException;
+    method public java.util.ArrayList<android.gesture.Prediction> recognize(android.gesture.Gesture);
+    method public void removeEntry(String);
+    method public void removeGesture(String, android.gesture.Gesture);
+    method public void save(java.io.OutputStream) throws java.io.IOException;
+    method public void save(java.io.OutputStream, boolean) throws java.io.IOException;
+    method public void setOrientationStyle(int);
+    method public void setSequenceType(int);
+    field public static final int ORIENTATION_INVARIANT = 1; // 0x1
+    field public static final int ORIENTATION_SENSITIVE = 2; // 0x2
+    field public static final int SEQUENCE_INVARIANT = 1; // 0x1
+    field public static final int SEQUENCE_SENSITIVE = 2; // 0x2
+  }
+
+  public class GestureStroke {
+    ctor public GestureStroke(java.util.ArrayList<android.gesture.GesturePoint>);
+    method public void clearPath();
+    method public Object clone();
+    method public android.gesture.OrientedBoundingBox computeOrientedBoundingBox();
+    method public android.graphics.Path getPath();
+    method public android.graphics.Path toPath(float, float, int);
+    field public final android.graphics.RectF boundingBox;
+    field public final float length;
+    field public final float[] points;
+  }
+
+  public final class GestureUtils {
+    method public static android.gesture.OrientedBoundingBox computeOrientedBoundingBox(java.util.ArrayList<android.gesture.GesturePoint>);
+    method public static android.gesture.OrientedBoundingBox computeOrientedBoundingBox(float[]);
+    method public static float[] spatialSampling(android.gesture.Gesture, int);
+    method public static float[] spatialSampling(android.gesture.Gesture, int, boolean);
+    method public static float[] temporalSampling(android.gesture.GestureStroke, int);
+  }
+
+  public class OrientedBoundingBox {
+    field public final float centerX;
+    field public final float centerY;
+    field public final float height;
+    field public final float orientation;
+    field public final float squareness;
+    field public final float width;
+  }
+
+  public class Prediction {
+    field public final String name;
+    field public double score;
+  }
+
+}
+
+package android.graphics {
+
+  public final class Bitmap implements android.os.Parcelable {
+    method @WorkerThread public boolean compress(android.graphics.Bitmap.CompressFormat, int, java.io.OutputStream);
+    method public android.graphics.Bitmap copy(android.graphics.Bitmap.Config, boolean);
+    method public void copyPixelsFromBuffer(java.nio.Buffer);
+    method public void copyPixelsToBuffer(java.nio.Buffer);
+    method public static android.graphics.Bitmap createBitmap(@NonNull android.graphics.Bitmap);
+    method public static android.graphics.Bitmap createBitmap(@NonNull android.graphics.Bitmap, int, int, int, int);
+    method public static android.graphics.Bitmap createBitmap(@NonNull android.graphics.Bitmap, int, int, int, int, @Nullable android.graphics.Matrix, boolean);
+    method public static android.graphics.Bitmap createBitmap(int, int, @NonNull android.graphics.Bitmap.Config);
+    method public static android.graphics.Bitmap createBitmap(@Nullable android.util.DisplayMetrics, int, int, @NonNull android.graphics.Bitmap.Config);
+    method public static android.graphics.Bitmap createBitmap(int, int, @NonNull android.graphics.Bitmap.Config, boolean);
+    method public static android.graphics.Bitmap createBitmap(int, int, @NonNull android.graphics.Bitmap.Config, boolean, @NonNull android.graphics.ColorSpace);
+    method public static android.graphics.Bitmap createBitmap(@Nullable android.util.DisplayMetrics, int, int, @NonNull android.graphics.Bitmap.Config, boolean);
+    method public static android.graphics.Bitmap createBitmap(@Nullable android.util.DisplayMetrics, int, int, @NonNull android.graphics.Bitmap.Config, boolean, @NonNull android.graphics.ColorSpace);
+    method public static android.graphics.Bitmap createBitmap(@ColorInt @NonNull int[], int, int, int, int, @NonNull android.graphics.Bitmap.Config);
+    method public static android.graphics.Bitmap createBitmap(@NonNull android.util.DisplayMetrics, @ColorInt @NonNull int[], int, int, int, int, @NonNull android.graphics.Bitmap.Config);
+    method public static android.graphics.Bitmap createBitmap(@ColorInt @NonNull int[], int, int, android.graphics.Bitmap.Config);
+    method public static android.graphics.Bitmap createBitmap(@Nullable android.util.DisplayMetrics, @ColorInt @NonNull int[], int, int, @NonNull android.graphics.Bitmap.Config);
+    method @NonNull public static android.graphics.Bitmap createBitmap(@NonNull android.graphics.Picture);
+    method @NonNull public static android.graphics.Bitmap createBitmap(@NonNull android.graphics.Picture, int, int, @NonNull android.graphics.Bitmap.Config);
+    method public static android.graphics.Bitmap createScaledBitmap(@NonNull android.graphics.Bitmap, int, int, boolean);
+    method public int describeContents();
+    method public void eraseColor(@ColorInt int);
+    method public void eraseColor(@ColorLong long);
+    method @CheckResult public android.graphics.Bitmap extractAlpha();
+    method @CheckResult public android.graphics.Bitmap extractAlpha(android.graphics.Paint, int[]);
+    method public int getAllocationByteCount();
+    method public int getByteCount();
+    method @NonNull public android.graphics.Color getColor(int, int);
+    method @Nullable public android.graphics.ColorSpace getColorSpace();
+    method public android.graphics.Bitmap.Config getConfig();
+    method public int getDensity();
+    method public int getGenerationId();
+    method public int getHeight();
+    method public byte[] getNinePatchChunk();
+    method @ColorInt public int getPixel(int, int);
+    method public void getPixels(@ColorInt int[], int, int, int, int, int, int);
+    method public int getRowBytes();
+    method public int getScaledHeight(android.graphics.Canvas);
+    method public int getScaledHeight(android.util.DisplayMetrics);
+    method public int getScaledHeight(int);
+    method public int getScaledWidth(android.graphics.Canvas);
+    method public int getScaledWidth(android.util.DisplayMetrics);
+    method public int getScaledWidth(int);
+    method public int getWidth();
+    method public boolean hasAlpha();
+    method public boolean hasMipMap();
+    method public boolean isMutable();
+    method public boolean isPremultiplied();
+    method public boolean isRecycled();
+    method public void prepareToDraw();
+    method public void reconfigure(int, int, android.graphics.Bitmap.Config);
+    method public void recycle();
+    method public boolean sameAs(android.graphics.Bitmap);
+    method public void setColorSpace(@NonNull android.graphics.ColorSpace);
+    method public void setConfig(android.graphics.Bitmap.Config);
+    method public void setDensity(int);
+    method public void setHasAlpha(boolean);
+    method public void setHasMipMap(boolean);
+    method public void setHeight(int);
+    method public void setPixel(int, int, @ColorInt int);
+    method public void setPixels(@ColorInt int[], int, int, int, int, int, int);
+    method public void setPremultiplied(boolean);
+    method public void setWidth(int);
+    method @Nullable public static android.graphics.Bitmap wrapHardwareBuffer(@NonNull android.hardware.HardwareBuffer, @Nullable android.graphics.ColorSpace);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.graphics.Bitmap> CREATOR;
+    field public static final int DENSITY_NONE = 0; // 0x0
+  }
+
+  public enum Bitmap.CompressFormat {
+    enum_constant public static final android.graphics.Bitmap.CompressFormat JPEG;
+    enum_constant public static final android.graphics.Bitmap.CompressFormat PNG;
+    enum_constant @Deprecated public static final android.graphics.Bitmap.CompressFormat WEBP;
+    enum_constant public static final android.graphics.Bitmap.CompressFormat WEBP_LOSSLESS;
+    enum_constant public static final android.graphics.Bitmap.CompressFormat WEBP_LOSSY;
+  }
+
+  public enum Bitmap.Config {
+    enum_constant public static final android.graphics.Bitmap.Config ALPHA_8;
+    enum_constant @Deprecated public static final android.graphics.Bitmap.Config ARGB_4444;
+    enum_constant public static final android.graphics.Bitmap.Config ARGB_8888;
+    enum_constant public static final android.graphics.Bitmap.Config HARDWARE;
+    enum_constant public static final android.graphics.Bitmap.Config RGBA_F16;
+    enum_constant public static final android.graphics.Bitmap.Config RGB_565;
+  }
+
+  public class BitmapFactory {
+    ctor public BitmapFactory();
+    method public static android.graphics.Bitmap decodeByteArray(byte[], int, int, android.graphics.BitmapFactory.Options);
+    method public static android.graphics.Bitmap decodeByteArray(byte[], int, int);
+    method public static android.graphics.Bitmap decodeFile(String, android.graphics.BitmapFactory.Options);
+    method public static android.graphics.Bitmap decodeFile(String);
+    method public static android.graphics.Bitmap decodeFileDescriptor(java.io.FileDescriptor, android.graphics.Rect, android.graphics.BitmapFactory.Options);
+    method public static android.graphics.Bitmap decodeFileDescriptor(java.io.FileDescriptor);
+    method public static android.graphics.Bitmap decodeResource(android.content.res.Resources, int, android.graphics.BitmapFactory.Options);
+    method public static android.graphics.Bitmap decodeResource(android.content.res.Resources, int);
+    method @Nullable public static android.graphics.Bitmap decodeResourceStream(@Nullable android.content.res.Resources, @Nullable android.util.TypedValue, @Nullable java.io.InputStream, @Nullable android.graphics.Rect, @Nullable android.graphics.BitmapFactory.Options);
+    method @Nullable public static android.graphics.Bitmap decodeStream(@Nullable java.io.InputStream, @Nullable android.graphics.Rect, @Nullable android.graphics.BitmapFactory.Options);
+    method public static android.graphics.Bitmap decodeStream(java.io.InputStream);
+  }
+
+  public static class BitmapFactory.Options {
+    ctor public BitmapFactory.Options();
+    method @Deprecated public void requestCancelDecode();
+    field public android.graphics.Bitmap inBitmap;
+    field public int inDensity;
+    field @Deprecated public boolean inDither;
+    field @Deprecated public boolean inInputShareable;
+    field public boolean inJustDecodeBounds;
+    field public boolean inMutable;
+    field @Deprecated public boolean inPreferQualityOverSpeed;
+    field public android.graphics.ColorSpace inPreferredColorSpace;
+    field public android.graphics.Bitmap.Config inPreferredConfig;
+    field public boolean inPremultiplied;
+    field @Deprecated public boolean inPurgeable;
+    field public int inSampleSize;
+    field public boolean inScaled;
+    field public int inScreenDensity;
+    field public int inTargetDensity;
+    field public byte[] inTempStorage;
+    field @Deprecated public boolean mCancel;
+    field public android.graphics.ColorSpace outColorSpace;
+    field public android.graphics.Bitmap.Config outConfig;
+    field public int outHeight;
+    field public String outMimeType;
+    field public int outWidth;
+  }
+
+  public final class BitmapRegionDecoder {
+    method public android.graphics.Bitmap decodeRegion(android.graphics.Rect, android.graphics.BitmapFactory.Options);
+    method public int getHeight();
+    method public int getWidth();
+    method public boolean isRecycled();
+    method public static android.graphics.BitmapRegionDecoder newInstance(byte[], int, int, boolean) throws java.io.IOException;
+    method public static android.graphics.BitmapRegionDecoder newInstance(java.io.FileDescriptor, boolean) throws java.io.IOException;
+    method public static android.graphics.BitmapRegionDecoder newInstance(java.io.InputStream, boolean) throws java.io.IOException;
+    method public static android.graphics.BitmapRegionDecoder newInstance(String, boolean) throws java.io.IOException;
+    method public void recycle();
+  }
+
+  public class BitmapShader extends android.graphics.Shader {
+    ctor public BitmapShader(@NonNull android.graphics.Bitmap, @NonNull android.graphics.Shader.TileMode, @NonNull android.graphics.Shader.TileMode);
+  }
+
+  public enum BlendMode {
+    enum_constant public static final android.graphics.BlendMode CLEAR;
+    enum_constant public static final android.graphics.BlendMode COLOR;
+    enum_constant public static final android.graphics.BlendMode COLOR_BURN;
+    enum_constant public static final android.graphics.BlendMode COLOR_DODGE;
+    enum_constant public static final android.graphics.BlendMode DARKEN;
+    enum_constant public static final android.graphics.BlendMode DIFFERENCE;
+    enum_constant public static final android.graphics.BlendMode DST;
+    enum_constant public static final android.graphics.BlendMode DST_ATOP;
+    enum_constant public static final android.graphics.BlendMode DST_IN;
+    enum_constant public static final android.graphics.BlendMode DST_OUT;
+    enum_constant public static final android.graphics.BlendMode DST_OVER;
+    enum_constant public static final android.graphics.BlendMode EXCLUSION;
+    enum_constant public static final android.graphics.BlendMode HARD_LIGHT;
+    enum_constant public static final android.graphics.BlendMode HUE;
+    enum_constant public static final android.graphics.BlendMode LIGHTEN;
+    enum_constant public static final android.graphics.BlendMode LUMINOSITY;
+    enum_constant public static final android.graphics.BlendMode MODULATE;
+    enum_constant public static final android.graphics.BlendMode MULTIPLY;
+    enum_constant public static final android.graphics.BlendMode OVERLAY;
+    enum_constant public static final android.graphics.BlendMode PLUS;
+    enum_constant public static final android.graphics.BlendMode SATURATION;
+    enum_constant public static final android.graphics.BlendMode SCREEN;
+    enum_constant public static final android.graphics.BlendMode SOFT_LIGHT;
+    enum_constant public static final android.graphics.BlendMode SRC;
+    enum_constant public static final android.graphics.BlendMode SRC_ATOP;
+    enum_constant public static final android.graphics.BlendMode SRC_IN;
+    enum_constant public static final android.graphics.BlendMode SRC_OUT;
+    enum_constant public static final android.graphics.BlendMode SRC_OVER;
+    enum_constant public static final android.graphics.BlendMode XOR;
+  }
+
+  public final class BlendModeColorFilter extends android.graphics.ColorFilter {
+    ctor public BlendModeColorFilter(@ColorInt int, @NonNull android.graphics.BlendMode);
+    method @ColorInt public int getColor();
+    method public android.graphics.BlendMode getMode();
+  }
+
+  public class BlurMaskFilter extends android.graphics.MaskFilter {
+    ctor public BlurMaskFilter(float, android.graphics.BlurMaskFilter.Blur);
+  }
+
+  public enum BlurMaskFilter.Blur {
+    enum_constant public static final android.graphics.BlurMaskFilter.Blur INNER;
+    enum_constant public static final android.graphics.BlurMaskFilter.Blur NORMAL;
+    enum_constant public static final android.graphics.BlurMaskFilter.Blur OUTER;
+    enum_constant public static final android.graphics.BlurMaskFilter.Blur SOLID;
+  }
+
+  public class Camera {
+    ctor public Camera();
+    method public void applyToCanvas(android.graphics.Canvas);
+    method public float dotWithNormal(float, float, float);
+    method public float getLocationX();
+    method public float getLocationY();
+    method public float getLocationZ();
+    method public void getMatrix(android.graphics.Matrix);
+    method public void restore();
+    method public void rotate(float, float, float);
+    method public void rotateX(float);
+    method public void rotateY(float);
+    method public void rotateZ(float);
+    method public void save();
+    method public void setLocation(float, float, float);
+    method public void translate(float, float, float);
+  }
+
+  public class Canvas {
+    ctor public Canvas();
+    ctor public Canvas(@NonNull android.graphics.Bitmap);
+    method public boolean clipOutPath(@NonNull android.graphics.Path);
+    method public boolean clipOutRect(@NonNull android.graphics.RectF);
+    method public boolean clipOutRect(@NonNull android.graphics.Rect);
+    method public boolean clipOutRect(float, float, float, float);
+    method public boolean clipOutRect(int, int, int, int);
+    method @Deprecated public boolean clipPath(@NonNull android.graphics.Path, @NonNull android.graphics.Region.Op);
+    method public boolean clipPath(@NonNull android.graphics.Path);
+    method @Deprecated public boolean clipRect(@NonNull android.graphics.RectF, @NonNull android.graphics.Region.Op);
+    method @Deprecated public boolean clipRect(@NonNull android.graphics.Rect, @NonNull android.graphics.Region.Op);
+    method public boolean clipRect(@NonNull android.graphics.RectF);
+    method public boolean clipRect(@NonNull android.graphics.Rect);
+    method @Deprecated public boolean clipRect(float, float, float, float, @NonNull android.graphics.Region.Op);
+    method public boolean clipRect(float, float, float, float);
+    method public boolean clipRect(int, int, int, int);
+    method public void concat(@Nullable android.graphics.Matrix);
+    method public void disableZ();
+    method public void drawARGB(int, int, int, int);
+    method public void drawArc(@NonNull android.graphics.RectF, float, float, boolean, @NonNull android.graphics.Paint);
+    method public void drawArc(float, float, float, float, float, float, boolean, @NonNull android.graphics.Paint);
+    method public void drawBitmap(@NonNull android.graphics.Bitmap, float, float, @Nullable android.graphics.Paint);
+    method public void drawBitmap(@NonNull android.graphics.Bitmap, @Nullable android.graphics.Rect, @NonNull android.graphics.RectF, @Nullable android.graphics.Paint);
+    method public void drawBitmap(@NonNull android.graphics.Bitmap, @Nullable android.graphics.Rect, @NonNull android.graphics.Rect, @Nullable android.graphics.Paint);
+    method @Deprecated public void drawBitmap(@NonNull int[], int, int, float, float, int, int, boolean, @Nullable android.graphics.Paint);
+    method @Deprecated public void drawBitmap(@NonNull int[], int, int, int, int, int, int, boolean, @Nullable android.graphics.Paint);
+    method public void drawBitmap(@NonNull android.graphics.Bitmap, @NonNull android.graphics.Matrix, @Nullable android.graphics.Paint);
+    method public void drawBitmapMesh(@NonNull android.graphics.Bitmap, int, int, @NonNull float[], int, @Nullable int[], int, @Nullable android.graphics.Paint);
+    method public void drawCircle(float, float, float, @NonNull android.graphics.Paint);
+    method public void drawColor(@ColorInt int);
+    method public void drawColor(@ColorLong long);
+    method public void drawColor(@ColorInt int, @NonNull android.graphics.PorterDuff.Mode);
+    method public void drawColor(@ColorInt int, @NonNull android.graphics.BlendMode);
+    method public void drawColor(@ColorLong long, @NonNull android.graphics.BlendMode);
+    method public void drawDoubleRoundRect(@NonNull android.graphics.RectF, float, float, @NonNull android.graphics.RectF, float, float, @NonNull android.graphics.Paint);
+    method public void drawDoubleRoundRect(@NonNull android.graphics.RectF, @NonNull float[], @NonNull android.graphics.RectF, @NonNull float[], @NonNull android.graphics.Paint);
+    method public void drawLine(float, float, float, float, @NonNull android.graphics.Paint);
+    method public void drawLines(@NonNull @Size(multiple=4) float[], int, int, @NonNull android.graphics.Paint);
+    method public void drawLines(@NonNull @Size(multiple=4) float[], @NonNull android.graphics.Paint);
+    method public void drawOval(@NonNull android.graphics.RectF, @NonNull android.graphics.Paint);
+    method public void drawOval(float, float, float, float, @NonNull android.graphics.Paint);
+    method public void drawPaint(@NonNull android.graphics.Paint);
+    method public void drawPath(@NonNull android.graphics.Path, @NonNull android.graphics.Paint);
+    method public void drawPicture(@NonNull android.graphics.Picture);
+    method public void drawPicture(@NonNull android.graphics.Picture, @NonNull android.graphics.RectF);
+    method public void drawPicture(@NonNull android.graphics.Picture, @NonNull android.graphics.Rect);
+    method public void drawPoint(float, float, @NonNull android.graphics.Paint);
+    method public void drawPoints(@Size(multiple=2) float[], int, int, @NonNull android.graphics.Paint);
+    method public void drawPoints(@NonNull @Size(multiple=2) float[], @NonNull android.graphics.Paint);
+    method @Deprecated public void drawPosText(@NonNull char[], int, int, @NonNull @Size(multiple=2) float[], @NonNull android.graphics.Paint);
+    method @Deprecated public void drawPosText(@NonNull String, @NonNull @Size(multiple=2) float[], @NonNull android.graphics.Paint);
+    method public void drawRGB(int, int, int);
+    method public void drawRect(@NonNull android.graphics.RectF, @NonNull android.graphics.Paint);
+    method public void drawRect(@NonNull android.graphics.Rect, @NonNull android.graphics.Paint);
+    method public void drawRect(float, float, float, float, @NonNull android.graphics.Paint);
+    method public void drawRenderNode(@NonNull android.graphics.RenderNode);
+    method public void drawRoundRect(@NonNull android.graphics.RectF, float, float, @NonNull android.graphics.Paint);
+    method public void drawRoundRect(float, float, float, float, float, float, @NonNull android.graphics.Paint);
+    method public void drawText(@NonNull char[], int, int, float, float, @NonNull android.graphics.Paint);
+    method public void drawText(@NonNull String, float, float, @NonNull android.graphics.Paint);
+    method public void drawText(@NonNull String, int, int, float, float, @NonNull android.graphics.Paint);
+    method public void drawText(@NonNull CharSequence, int, int, float, float, @NonNull android.graphics.Paint);
+    method public void drawTextOnPath(@NonNull char[], int, int, @NonNull android.graphics.Path, float, float, @NonNull android.graphics.Paint);
+    method public void drawTextOnPath(@NonNull String, @NonNull android.graphics.Path, float, float, @NonNull android.graphics.Paint);
+    method public void drawTextRun(@NonNull char[], int, int, int, int, float, float, boolean, @NonNull android.graphics.Paint);
+    method public void drawTextRun(@NonNull CharSequence, int, int, int, int, float, float, boolean, @NonNull android.graphics.Paint);
+    method public void drawTextRun(@NonNull android.graphics.text.MeasuredText, int, int, int, int, float, float, boolean, @NonNull android.graphics.Paint);
+    method public void drawVertices(@NonNull android.graphics.Canvas.VertexMode, int, @NonNull float[], int, @Nullable float[], int, @Nullable int[], int, @Nullable short[], int, int, @NonNull android.graphics.Paint);
+    method public void enableZ();
+    method public boolean getClipBounds(@Nullable android.graphics.Rect);
+    method @NonNull public final android.graphics.Rect getClipBounds();
+    method public int getDensity();
+    method @Nullable public android.graphics.DrawFilter getDrawFilter();
+    method public int getHeight();
+    method @Deprecated public void getMatrix(@NonNull android.graphics.Matrix);
+    method @Deprecated @NonNull public final android.graphics.Matrix getMatrix();
+    method public int getMaximumBitmapHeight();
+    method public int getMaximumBitmapWidth();
+    method public int getSaveCount();
+    method public int getWidth();
+    method public boolean isHardwareAccelerated();
+    method public boolean isOpaque();
+    method @Deprecated public boolean quickReject(@NonNull android.graphics.RectF, @NonNull android.graphics.Canvas.EdgeType);
+    method public boolean quickReject(@NonNull android.graphics.RectF);
+    method @Deprecated public boolean quickReject(@NonNull android.graphics.Path, @NonNull android.graphics.Canvas.EdgeType);
+    method public boolean quickReject(@NonNull android.graphics.Path);
+    method @Deprecated public boolean quickReject(float, float, float, float, @NonNull android.graphics.Canvas.EdgeType);
+    method public boolean quickReject(float, float, float, float);
+    method public void restore();
+    method public void restoreToCount(int);
+    method public void rotate(float);
+    method public final void rotate(float, float, float);
+    method public int save();
+    method @Deprecated public int saveLayer(@Nullable android.graphics.RectF, @Nullable android.graphics.Paint, int);
+    method public int saveLayer(@Nullable android.graphics.RectF, @Nullable android.graphics.Paint);
+    method @Deprecated public int saveLayer(float, float, float, float, @Nullable android.graphics.Paint, int);
+    method public int saveLayer(float, float, float, float, @Nullable android.graphics.Paint);
+    method @Deprecated public int saveLayerAlpha(@Nullable android.graphics.RectF, int, int);
+    method public int saveLayerAlpha(@Nullable android.graphics.RectF, int);
+    method @Deprecated public int saveLayerAlpha(float, float, float, float, int, int);
+    method public int saveLayerAlpha(float, float, float, float, int);
+    method public void scale(float, float);
+    method public final void scale(float, float, float, float);
+    method public void setBitmap(@Nullable android.graphics.Bitmap);
+    method public void setDensity(int);
+    method public void setDrawFilter(@Nullable android.graphics.DrawFilter);
+    method public void setMatrix(@Nullable android.graphics.Matrix);
+    method public void skew(float, float);
+    method public void translate(float, float);
+    field public static final int ALL_SAVE_FLAG = 31; // 0x1f
+  }
+
+  @Deprecated public enum Canvas.EdgeType {
+    enum_constant @Deprecated public static final android.graphics.Canvas.EdgeType AA;
+    enum_constant @Deprecated public static final android.graphics.Canvas.EdgeType BW;
+  }
+
+  public enum Canvas.VertexMode {
+    enum_constant public static final android.graphics.Canvas.VertexMode TRIANGLES;
+    enum_constant public static final android.graphics.Canvas.VertexMode TRIANGLE_FAN;
+    enum_constant public static final android.graphics.Canvas.VertexMode TRIANGLE_STRIP;
+  }
+
+  @AnyThread public class Color {
+    ctor public Color();
+    method @ColorInt public static int HSVToColor(@Size(3) float[]);
+    method @ColorInt public static int HSVToColor(@IntRange(from=0, to=255) int, @Size(3) float[]);
+    method public static void RGBToHSV(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @Size(3) float[]);
+    method public float alpha();
+    method public static float alpha(@ColorLong long);
+    method @IntRange(from=0, to=255) public static int alpha(int);
+    method @ColorInt public static int argb(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int);
+    method @ColorInt public static int argb(float, float, float, float);
+    method public float blue();
+    method public static float blue(@ColorLong long);
+    method @IntRange(from=0, to=255) public static int blue(int);
+    method @NonNull public static android.graphics.ColorSpace colorSpace(@ColorLong long);
+    method public static void colorToHSV(@ColorInt int, @Size(3) float[]);
+    method @NonNull public android.graphics.Color convert(@NonNull android.graphics.ColorSpace);
+    method @ColorLong public static long convert(@ColorInt int, @NonNull android.graphics.ColorSpace);
+    method @ColorLong public static long convert(@ColorLong long, @NonNull android.graphics.ColorSpace);
+    method @ColorLong public static long convert(float, float, float, float, @NonNull android.graphics.ColorSpace, @NonNull android.graphics.ColorSpace);
+    method @ColorLong public static long convert(@ColorLong long, @NonNull android.graphics.ColorSpace.Connector);
+    method @ColorLong public static long convert(float, float, float, float, @NonNull android.graphics.ColorSpace.Connector);
+    method @NonNull public android.graphics.ColorSpace getColorSpace();
+    method public float getComponent(@IntRange(from=0, to=4) int);
+    method @IntRange(from=4, to=5) public int getComponentCount();
+    method @NonNull @Size(min=4, max=5) public float[] getComponents();
+    method @NonNull @Size(min=4) public float[] getComponents(@Nullable @Size(min=4) float[]);
+    method public android.graphics.ColorSpace.Model getModel();
+    method public float green();
+    method public static float green(@ColorLong long);
+    method @IntRange(from=0, to=255) public static int green(int);
+    method public static boolean isInColorSpace(@ColorLong long, @NonNull android.graphics.ColorSpace);
+    method public boolean isSrgb();
+    method public static boolean isSrgb(@ColorLong long);
+    method public boolean isWideGamut();
+    method public static boolean isWideGamut(@ColorLong long);
+    method public float luminance();
+    method public static float luminance(@ColorLong long);
+    method public static float luminance(@ColorInt int);
+    method @ColorLong public long pack();
+    method @ColorLong public static long pack(@ColorInt int);
+    method @ColorLong public static long pack(float, float, float);
+    method @ColorLong public static long pack(float, float, float, float);
+    method @ColorLong public static long pack(float, float, float, float, @NonNull android.graphics.ColorSpace);
+    method @ColorInt public static int parseColor(@Size(min=1) String);
+    method public float red();
+    method public static float red(@ColorLong long);
+    method @IntRange(from=0, to=255) public static int red(int);
+    method @ColorInt public static int rgb(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int);
+    method @ColorInt public static int rgb(float, float, float);
+    method @ColorInt public int toArgb();
+    method @ColorInt public static int toArgb(@ColorLong long);
+    method @NonNull public static android.graphics.Color valueOf(@ColorInt int);
+    method @NonNull public static android.graphics.Color valueOf(@ColorLong long);
+    method @NonNull public static android.graphics.Color valueOf(float, float, float);
+    method @NonNull public static android.graphics.Color valueOf(float, float, float, float);
+    method @NonNull public static android.graphics.Color valueOf(float, float, float, float, @NonNull android.graphics.ColorSpace);
+    method @NonNull public static android.graphics.Color valueOf(@NonNull @Size(min=4, max=5) float[], @NonNull android.graphics.ColorSpace);
+    field @ColorInt public static final int BLACK = -16777216; // 0xff000000
+    field @ColorInt public static final int BLUE = -16776961; // 0xff0000ff
+    field @ColorInt public static final int CYAN = -16711681; // 0xff00ffff
+    field @ColorInt public static final int DKGRAY = -12303292; // 0xff444444
+    field @ColorInt public static final int GRAY = -7829368; // 0xff888888
+    field @ColorInt public static final int GREEN = -16711936; // 0xff00ff00
+    field @ColorInt public static final int LTGRAY = -3355444; // 0xffcccccc
+    field @ColorInt public static final int MAGENTA = -65281; // 0xffff00ff
+    field @ColorInt public static final int RED = -65536; // 0xffff0000
+    field @ColorInt public static final int TRANSPARENT = 0; // 0x0
+    field @ColorInt public static final int WHITE = -1; // 0xffffffff
+    field @ColorInt public static final int YELLOW = -256; // 0xffffff00
+  }
+
+  public class ColorFilter {
+    ctor @Deprecated public ColorFilter();
+  }
+
+  public class ColorMatrix {
+    ctor public ColorMatrix();
+    ctor public ColorMatrix(float[]);
+    ctor public ColorMatrix(android.graphics.ColorMatrix);
+    method public final float[] getArray();
+    method public void postConcat(android.graphics.ColorMatrix);
+    method public void preConcat(android.graphics.ColorMatrix);
+    method public void reset();
+    method public void set(android.graphics.ColorMatrix);
+    method public void set(float[]);
+    method public void setConcat(android.graphics.ColorMatrix, android.graphics.ColorMatrix);
+    method public void setRGB2YUV();
+    method public void setRotate(int, float);
+    method public void setSaturation(float);
+    method public void setScale(float, float, float, float);
+    method public void setYUV2RGB();
+  }
+
+  public class ColorMatrixColorFilter extends android.graphics.ColorFilter {
+    ctor public ColorMatrixColorFilter(@NonNull android.graphics.ColorMatrix);
+    ctor public ColorMatrixColorFilter(@NonNull float[]);
+    method public void getColorMatrix(android.graphics.ColorMatrix);
+  }
+
+  @AnyThread public abstract class ColorSpace {
+    method @NonNull public static android.graphics.ColorSpace adapt(@NonNull android.graphics.ColorSpace, @NonNull @Size(min=2, max=3) float[]);
+    method @NonNull public static android.graphics.ColorSpace adapt(@NonNull android.graphics.ColorSpace, @NonNull @Size(min=2, max=3) float[], @NonNull android.graphics.ColorSpace.Adaptation);
+    method @NonNull public static android.graphics.ColorSpace.Connector connect(@NonNull android.graphics.ColorSpace, @NonNull android.graphics.ColorSpace);
+    method @NonNull public static android.graphics.ColorSpace.Connector connect(@NonNull android.graphics.ColorSpace, @NonNull android.graphics.ColorSpace, @NonNull android.graphics.ColorSpace.RenderIntent);
+    method @NonNull public static android.graphics.ColorSpace.Connector connect(@NonNull android.graphics.ColorSpace);
+    method @NonNull public static android.graphics.ColorSpace.Connector connect(@NonNull android.graphics.ColorSpace, @NonNull android.graphics.ColorSpace.RenderIntent);
+    method @NonNull @Size(min=3) public float[] fromXyz(float, float, float);
+    method @NonNull @Size(min=3) public abstract float[] fromXyz(@NonNull @Size(min=3) float[]);
+    method @NonNull public static android.graphics.ColorSpace get(@NonNull android.graphics.ColorSpace.Named);
+    method @IntRange(from=1, to=4) public int getComponentCount();
+    method @IntRange(from=android.graphics.ColorSpace.MIN_ID, to=android.graphics.ColorSpace.MAX_ID) public int getId();
+    method public abstract float getMaxValue(@IntRange(from=0, to=3) int);
+    method public abstract float getMinValue(@IntRange(from=0, to=3) int);
+    method @NonNull public android.graphics.ColorSpace.Model getModel();
+    method @NonNull public String getName();
+    method public boolean isSrgb();
+    method public abstract boolean isWideGamut();
+    method @Nullable public static android.graphics.ColorSpace match(@NonNull @Size(9) float[], @NonNull android.graphics.ColorSpace.Rgb.TransferParameters);
+    method @NonNull @Size(3) public float[] toXyz(float, float, float);
+    method @NonNull @Size(min=3) public abstract float[] toXyz(@NonNull @Size(min=3) float[]);
+    field public static final float[] ILLUMINANT_A;
+    field public static final float[] ILLUMINANT_B;
+    field public static final float[] ILLUMINANT_C;
+    field public static final float[] ILLUMINANT_D50;
+    field public static final float[] ILLUMINANT_D55;
+    field public static final float[] ILLUMINANT_D60;
+    field public static final float[] ILLUMINANT_D65;
+    field public static final float[] ILLUMINANT_D75;
+    field public static final float[] ILLUMINANT_E;
+    field public static final int MAX_ID = 63; // 0x3f
+    field public static final int MIN_ID = -1; // 0xffffffff
+  }
+
+  public enum ColorSpace.Adaptation {
+    enum_constant public static final android.graphics.ColorSpace.Adaptation BRADFORD;
+    enum_constant public static final android.graphics.ColorSpace.Adaptation CIECAT02;
+    enum_constant public static final android.graphics.ColorSpace.Adaptation VON_KRIES;
+  }
+
+  @AnyThread public static class ColorSpace.Connector {
+    method @NonNull public android.graphics.ColorSpace getDestination();
+    method public android.graphics.ColorSpace.RenderIntent getRenderIntent();
+    method @NonNull public android.graphics.ColorSpace getSource();
+    method @NonNull @Size(3) public float[] transform(float, float, float);
+    method @NonNull @Size(min=3) public float[] transform(@NonNull @Size(min=3) float[]);
+  }
+
+  public enum ColorSpace.Model {
+    method @IntRange(from=1, to=4) public int getComponentCount();
+    enum_constant public static final android.graphics.ColorSpace.Model CMYK;
+    enum_constant public static final android.graphics.ColorSpace.Model LAB;
+    enum_constant public static final android.graphics.ColorSpace.Model RGB;
+    enum_constant public static final android.graphics.ColorSpace.Model XYZ;
+  }
+
+  public enum ColorSpace.Named {
+    enum_constant public static final android.graphics.ColorSpace.Named ACES;
+    enum_constant public static final android.graphics.ColorSpace.Named ACESCG;
+    enum_constant public static final android.graphics.ColorSpace.Named ADOBE_RGB;
+    enum_constant public static final android.graphics.ColorSpace.Named BT2020;
+    enum_constant public static final android.graphics.ColorSpace.Named BT709;
+    enum_constant public static final android.graphics.ColorSpace.Named CIE_LAB;
+    enum_constant public static final android.graphics.ColorSpace.Named CIE_XYZ;
+    enum_constant public static final android.graphics.ColorSpace.Named DCI_P3;
+    enum_constant public static final android.graphics.ColorSpace.Named DISPLAY_P3;
+    enum_constant public static final android.graphics.ColorSpace.Named EXTENDED_SRGB;
+    enum_constant public static final android.graphics.ColorSpace.Named LINEAR_EXTENDED_SRGB;
+    enum_constant public static final android.graphics.ColorSpace.Named LINEAR_SRGB;
+    enum_constant public static final android.graphics.ColorSpace.Named NTSC_1953;
+    enum_constant public static final android.graphics.ColorSpace.Named PRO_PHOTO_RGB;
+    enum_constant public static final android.graphics.ColorSpace.Named SMPTE_C;
+    enum_constant public static final android.graphics.ColorSpace.Named SRGB;
+  }
+
+  public enum ColorSpace.RenderIntent {
+    enum_constant public static final android.graphics.ColorSpace.RenderIntent ABSOLUTE;
+    enum_constant public static final android.graphics.ColorSpace.RenderIntent PERCEPTUAL;
+    enum_constant public static final android.graphics.ColorSpace.RenderIntent RELATIVE;
+    enum_constant public static final android.graphics.ColorSpace.RenderIntent SATURATION;
+  }
+
+  @AnyThread public static class ColorSpace.Rgb extends android.graphics.ColorSpace {
+    ctor public ColorSpace.Rgb(@NonNull @Size(min=1) String, @NonNull @Size(9) float[], @NonNull java.util.function.DoubleUnaryOperator, @NonNull java.util.function.DoubleUnaryOperator);
+    ctor public ColorSpace.Rgb(@NonNull @Size(min=1) String, @NonNull @Size(min=6, max=9) float[], @NonNull @Size(min=2, max=3) float[], @NonNull java.util.function.DoubleUnaryOperator, @NonNull java.util.function.DoubleUnaryOperator, float, float);
+    ctor public ColorSpace.Rgb(@NonNull @Size(min=1) String, @NonNull @Size(9) float[], @NonNull android.graphics.ColorSpace.Rgb.TransferParameters);
+    ctor public ColorSpace.Rgb(@NonNull @Size(min=1) String, @NonNull @Size(min=6, max=9) float[], @NonNull @Size(min=2, max=3) float[], @NonNull android.graphics.ColorSpace.Rgb.TransferParameters);
+    ctor public ColorSpace.Rgb(@NonNull @Size(min=1) String, @NonNull @Size(9) float[], double);
+    ctor public ColorSpace.Rgb(@NonNull @Size(min=1) String, @NonNull @Size(min=6, max=9) float[], @NonNull @Size(min=2, max=3) float[], double);
+    method @NonNull @Size(3) public float[] fromLinear(float, float, float);
+    method @NonNull @Size(min=3) public float[] fromLinear(@NonNull @Size(min=3) float[]);
+    method @NonNull @Size(min=3) public float[] fromXyz(@NonNull @Size(min=3) float[]);
+    method @NonNull public java.util.function.DoubleUnaryOperator getEotf();
+    method @NonNull @Size(min=9) public float[] getInverseTransform(@NonNull @Size(min=9) float[]);
+    method @NonNull @Size(9) public float[] getInverseTransform();
+    method public float getMaxValue(int);
+    method public float getMinValue(int);
+    method @NonNull public java.util.function.DoubleUnaryOperator getOetf();
+    method @NonNull @Size(min=6) public float[] getPrimaries(@NonNull @Size(min=6) float[]);
+    method @NonNull @Size(6) public float[] getPrimaries();
+    method @Nullable public android.graphics.ColorSpace.Rgb.TransferParameters getTransferParameters();
+    method @NonNull @Size(min=9) public float[] getTransform(@NonNull @Size(min=9) float[]);
+    method @NonNull @Size(9) public float[] getTransform();
+    method @NonNull @Size(min=2) public float[] getWhitePoint(@NonNull @Size(min=2) float[]);
+    method @NonNull @Size(2) public float[] getWhitePoint();
+    method public boolean isWideGamut();
+    method @NonNull @Size(3) public float[] toLinear(float, float, float);
+    method @NonNull @Size(min=3) public float[] toLinear(@NonNull @Size(min=3) float[]);
+    method @NonNull @Size(min=3) public float[] toXyz(@NonNull @Size(min=3) float[]);
+  }
+
+  public static class ColorSpace.Rgb.TransferParameters {
+    ctor public ColorSpace.Rgb.TransferParameters(double, double, double, double, double);
+    ctor public ColorSpace.Rgb.TransferParameters(double, double, double, double, double, double, double);
+    field public final double a;
+    field public final double b;
+    field public final double c;
+    field public final double d;
+    field public final double e;
+    field public final double f;
+    field public final double g;
+  }
+
+  public class ComposePathEffect extends android.graphics.PathEffect {
+    ctor public ComposePathEffect(android.graphics.PathEffect, android.graphics.PathEffect);
+  }
+
+  public class ComposeShader extends android.graphics.Shader {
+    ctor @Deprecated public ComposeShader(@NonNull android.graphics.Shader, @NonNull android.graphics.Shader, @NonNull android.graphics.Xfermode);
+    ctor public ComposeShader(@NonNull android.graphics.Shader, @NonNull android.graphics.Shader, @NonNull android.graphics.PorterDuff.Mode);
+    ctor public ComposeShader(@NonNull android.graphics.Shader, @NonNull android.graphics.Shader, @NonNull android.graphics.BlendMode);
+  }
+
+  public class CornerPathEffect extends android.graphics.PathEffect {
+    ctor public CornerPathEffect(float);
+  }
+
+  public class DashPathEffect extends android.graphics.PathEffect {
+    ctor public DashPathEffect(float[], float);
+  }
+
+  public class DiscretePathEffect extends android.graphics.PathEffect {
+    ctor public DiscretePathEffect(float, float);
+  }
+
+  public class DrawFilter {
+    ctor public DrawFilter();
+  }
+
+  public class EmbossMaskFilter extends android.graphics.MaskFilter {
+    ctor @Deprecated public EmbossMaskFilter(float[], float, float, float);
+  }
+
+  public class HardwareRenderer {
+    ctor public HardwareRenderer();
+    method public void clearContent();
+    method @NonNull public android.graphics.HardwareRenderer.FrameRenderRequest createRenderRequest();
+    method public void destroy();
+    method public boolean isOpaque();
+    method public void notifyFramePending();
+    method public void setContentRoot(@Nullable android.graphics.RenderNode);
+    method public void setLightSourceAlpha(@FloatRange(from=0.0f, to=1.0f) float, @FloatRange(from=0.0f, to=1.0f) float);
+    method public void setLightSourceGeometry(float, float, float, float);
+    method public void setName(@NonNull String);
+    method public void setOpaque(boolean);
+    method public void setSurface(@Nullable android.view.Surface);
+    method public void start();
+    method public void stop();
+    field public static final int SYNC_CONTEXT_IS_STOPPED = 4; // 0x4
+    field public static final int SYNC_FRAME_DROPPED = 8; // 0x8
+    field public static final int SYNC_LOST_SURFACE_REWARD_IF_FOUND = 2; // 0x2
+    field public static final int SYNC_OK = 0; // 0x0
+    field public static final int SYNC_REDRAW_REQUESTED = 1; // 0x1
+  }
+
+  public final class HardwareRenderer.FrameRenderRequest {
+    method @NonNull public android.graphics.HardwareRenderer.FrameRenderRequest setFrameCommitCallback(@NonNull java.util.concurrent.Executor, @NonNull Runnable);
+    method @NonNull public android.graphics.HardwareRenderer.FrameRenderRequest setVsyncTime(long);
+    method @NonNull public android.graphics.HardwareRenderer.FrameRenderRequest setWaitForPresent(boolean);
+    method public int syncAndDraw();
+  }
+
+  public final class ImageDecoder implements java.lang.AutoCloseable {
+    method public void close();
+    method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull android.content.res.Resources, int);
+    method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull android.content.ContentResolver, @NonNull android.net.Uri);
+    method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull android.content.res.AssetManager, @NonNull String);
+    method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull java.nio.ByteBuffer);
+    method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull java.io.File);
+    method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull java.util.concurrent.Callable<android.content.res.AssetFileDescriptor>);
+    method @NonNull @WorkerThread public static android.graphics.Bitmap decodeBitmap(@NonNull android.graphics.ImageDecoder.Source, @NonNull android.graphics.ImageDecoder.OnHeaderDecodedListener) throws java.io.IOException;
+    method @NonNull @WorkerThread public static android.graphics.Bitmap decodeBitmap(@NonNull android.graphics.ImageDecoder.Source) throws java.io.IOException;
+    method @NonNull @WorkerThread public static android.graphics.drawable.Drawable decodeDrawable(@NonNull android.graphics.ImageDecoder.Source, @NonNull android.graphics.ImageDecoder.OnHeaderDecodedListener) throws java.io.IOException;
+    method @NonNull @WorkerThread public static android.graphics.drawable.Drawable decodeDrawable(@NonNull android.graphics.ImageDecoder.Source) throws java.io.IOException;
+    method public int getAllocator();
+    method @Nullable public android.graphics.Rect getCrop();
+    method public int getMemorySizePolicy();
+    method @Nullable public android.graphics.ImageDecoder.OnPartialImageListener getOnPartialImageListener();
+    method @Nullable public android.graphics.PostProcessor getPostProcessor();
+    method public boolean isDecodeAsAlphaMaskEnabled();
+    method public static boolean isMimeTypeSupported(@NonNull String);
+    method public boolean isMutableRequired();
+    method public boolean isUnpremultipliedRequired();
+    method public void setAllocator(int);
+    method public void setCrop(@Nullable android.graphics.Rect);
+    method public void setDecodeAsAlphaMaskEnabled(boolean);
+    method public void setMemorySizePolicy(int);
+    method public void setMutableRequired(boolean);
+    method public void setOnPartialImageListener(@Nullable android.graphics.ImageDecoder.OnPartialImageListener);
+    method public void setPostProcessor(@Nullable android.graphics.PostProcessor);
+    method public void setTargetColorSpace(android.graphics.ColorSpace);
+    method public void setTargetSampleSize(@IntRange(from=1) int);
+    method public void setTargetSize(@IntRange(from=1) @Px int, @IntRange(from=1) @Px int);
+    method public void setUnpremultipliedRequired(boolean);
+    field public static final int ALLOCATOR_DEFAULT = 0; // 0x0
+    field public static final int ALLOCATOR_HARDWARE = 3; // 0x3
+    field public static final int ALLOCATOR_SHARED_MEMORY = 2; // 0x2
+    field public static final int ALLOCATOR_SOFTWARE = 1; // 0x1
+    field public static final int MEMORY_POLICY_DEFAULT = 1; // 0x1
+    field public static final int MEMORY_POLICY_LOW_RAM = 0; // 0x0
+  }
+
+  public static final class ImageDecoder.DecodeException extends java.io.IOException {
+    method public int getError();
+    method @NonNull public android.graphics.ImageDecoder.Source getSource();
+    field public static final int SOURCE_EXCEPTION = 1; // 0x1
+    field public static final int SOURCE_INCOMPLETE = 2; // 0x2
+    field public static final int SOURCE_MALFORMED_DATA = 3; // 0x3
+  }
+
+  public static class ImageDecoder.ImageInfo {
+    method @Nullable public android.graphics.ColorSpace getColorSpace();
+    method @NonNull public String getMimeType();
+    method @NonNull public android.util.Size getSize();
+    method public boolean isAnimated();
+  }
+
+  public static interface ImageDecoder.OnHeaderDecodedListener {
+    method public void onHeaderDecoded(@NonNull android.graphics.ImageDecoder, @NonNull android.graphics.ImageDecoder.ImageInfo, @NonNull android.graphics.ImageDecoder.Source);
+  }
+
+  public static interface ImageDecoder.OnPartialImageListener {
+    method public boolean onPartialImage(@NonNull android.graphics.ImageDecoder.DecodeException);
+  }
+
+  public abstract static class ImageDecoder.Source {
+  }
+
+  public class ImageFormat {
+    ctor public ImageFormat();
+    method public static int getBitsPerPixel(int);
+    field public static final int DEPTH16 = 1144402265; // 0x44363159
+    field public static final int DEPTH_JPEG = 1768253795; // 0x69656963
+    field public static final int DEPTH_POINT_CLOUD = 257; // 0x101
+    field public static final int FLEX_RGBA_8888 = 42; // 0x2a
+    field public static final int FLEX_RGB_888 = 41; // 0x29
+    field public static final int HEIC = 1212500294; // 0x48454946
+    field public static final int JPEG = 256; // 0x100
+    field public static final int NV16 = 16; // 0x10
+    field public static final int NV21 = 17; // 0x11
+    field public static final int PRIVATE = 34; // 0x22
+    field public static final int RAW10 = 37; // 0x25
+    field public static final int RAW12 = 38; // 0x26
+    field public static final int RAW_PRIVATE = 36; // 0x24
+    field public static final int RAW_SENSOR = 32; // 0x20
+    field public static final int RGB_565 = 4; // 0x4
+    field public static final int UNKNOWN = 0; // 0x0
+    field public static final int Y8 = 538982489; // 0x20203859
+    field public static final int YUV_420_888 = 35; // 0x23
+    field public static final int YUV_422_888 = 39; // 0x27
+    field public static final int YUV_444_888 = 40; // 0x28
+    field public static final int YUY2 = 20; // 0x14
+    field public static final int YV12 = 842094169; // 0x32315659
+  }
+
+  public final class Insets implements android.os.Parcelable {
+    method @NonNull public static android.graphics.Insets add(@NonNull android.graphics.Insets, @NonNull android.graphics.Insets);
+    method public int describeContents();
+    method @NonNull public static android.graphics.Insets max(@NonNull android.graphics.Insets, @NonNull android.graphics.Insets);
+    method @NonNull public static android.graphics.Insets min(@NonNull android.graphics.Insets, @NonNull android.graphics.Insets);
+    method @NonNull public static android.graphics.Insets of(int, int, int, int);
+    method @NonNull public static android.graphics.Insets of(@Nullable android.graphics.Rect);
+    method @NonNull public static android.graphics.Insets subtract(@NonNull android.graphics.Insets, @NonNull android.graphics.Insets);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.graphics.Insets> CREATOR;
+    field @NonNull public static final android.graphics.Insets NONE;
+    field public final int bottom;
+    field public final int left;
+    field public final int right;
+    field public final int top;
+  }
+
+  public class Interpolator {
+    ctor public Interpolator(int);
+    ctor public Interpolator(int, int);
+    method public final int getKeyFrameCount();
+    method public final int getValueCount();
+    method public void reset(int);
+    method public void reset(int, int);
+    method public void setKeyFrame(int, int, float[]);
+    method public void setKeyFrame(int, int, float[], float[]);
+    method public void setRepeatMirror(float, boolean);
+    method public android.graphics.Interpolator.Result timeToValues(float[]);
+    method public android.graphics.Interpolator.Result timeToValues(int, float[]);
+  }
+
+  public enum Interpolator.Result {
+    enum_constant public static final android.graphics.Interpolator.Result FREEZE_END;
+    enum_constant public static final android.graphics.Interpolator.Result FREEZE_START;
+    enum_constant public static final android.graphics.Interpolator.Result NORMAL;
+  }
+
+  public class LightingColorFilter extends android.graphics.ColorFilter {
+    ctor public LightingColorFilter(@ColorInt int, @ColorInt int);
+    method @ColorInt public int getColorAdd();
+    method @ColorInt public int getColorMultiply();
+  }
+
+  public class LinearGradient extends android.graphics.Shader {
+    ctor public LinearGradient(float, float, float, float, @ColorInt @NonNull int[], @Nullable float[], @NonNull android.graphics.Shader.TileMode);
+    ctor public LinearGradient(float, float, float, float, @ColorLong @NonNull long[], @Nullable float[], @NonNull android.graphics.Shader.TileMode);
+    ctor public LinearGradient(float, float, float, float, @ColorInt int, @ColorInt int, @NonNull android.graphics.Shader.TileMode);
+    ctor public LinearGradient(float, float, float, float, @ColorLong long, @ColorLong long, @NonNull android.graphics.Shader.TileMode);
+  }
+
+  public class MaskFilter {
+    ctor public MaskFilter();
+  }
+
+  public class Matrix {
+    ctor public Matrix();
+    ctor public Matrix(android.graphics.Matrix);
+    method public void getValues(float[]);
+    method public boolean invert(android.graphics.Matrix);
+    method public boolean isAffine();
+    method public boolean isIdentity();
+    method public void mapPoints(float[], int, float[], int, int);
+    method public void mapPoints(float[], float[]);
+    method public void mapPoints(float[]);
+    method public float mapRadius(float);
+    method public boolean mapRect(android.graphics.RectF, android.graphics.RectF);
+    method public boolean mapRect(android.graphics.RectF);
+    method public void mapVectors(float[], int, float[], int, int);
+    method public void mapVectors(float[], float[]);
+    method public void mapVectors(float[]);
+    method public boolean postConcat(android.graphics.Matrix);
+    method public boolean postRotate(float, float, float);
+    method public boolean postRotate(float);
+    method public boolean postScale(float, float, float, float);
+    method public boolean postScale(float, float);
+    method public boolean postSkew(float, float, float, float);
+    method public boolean postSkew(float, float);
+    method public boolean postTranslate(float, float);
+    method public boolean preConcat(android.graphics.Matrix);
+    method public boolean preRotate(float, float, float);
+    method public boolean preRotate(float);
+    method public boolean preScale(float, float, float, float);
+    method public boolean preScale(float, float);
+    method public boolean preSkew(float, float, float, float);
+    method public boolean preSkew(float, float);
+    method public boolean preTranslate(float, float);
+    method public boolean rectStaysRect();
+    method public void reset();
+    method public void set(android.graphics.Matrix);
+    method public boolean setConcat(android.graphics.Matrix, android.graphics.Matrix);
+    method public boolean setPolyToPoly(float[], int, float[], int, int);
+    method public boolean setRectToRect(android.graphics.RectF, android.graphics.RectF, android.graphics.Matrix.ScaleToFit);
+    method public void setRotate(float, float, float);
+    method public void setRotate(float);
+    method public void setScale(float, float, float, float);
+    method public void setScale(float, float);
+    method public void setSinCos(float, float, float, float);
+    method public void setSinCos(float, float);
+    method public void setSkew(float, float, float, float);
+    method public void setSkew(float, float);
+    method public void setTranslate(float, float);
+    method public void setValues(float[]);
+    method public String toShortString();
+    field public static final int MPERSP_0 = 6; // 0x6
+    field public static final int MPERSP_1 = 7; // 0x7
+    field public static final int MPERSP_2 = 8; // 0x8
+    field public static final int MSCALE_X = 0; // 0x0
+    field public static final int MSCALE_Y = 4; // 0x4
+    field public static final int MSKEW_X = 1; // 0x1
+    field public static final int MSKEW_Y = 3; // 0x3
+    field public static final int MTRANS_X = 2; // 0x2
+    field public static final int MTRANS_Y = 5; // 0x5
+  }
+
+  public enum Matrix.ScaleToFit {
+    enum_constant public static final android.graphics.Matrix.ScaleToFit CENTER;
+    enum_constant public static final android.graphics.Matrix.ScaleToFit END;
+    enum_constant public static final android.graphics.Matrix.ScaleToFit FILL;
+    enum_constant public static final android.graphics.Matrix.ScaleToFit START;
+  }
+
+  @Deprecated public class Movie {
+    method @Deprecated public static android.graphics.Movie decodeByteArray(byte[], int, int);
+    method @Deprecated public static android.graphics.Movie decodeFile(String);
+    method @Deprecated public static android.graphics.Movie decodeStream(java.io.InputStream);
+    method @Deprecated public void draw(android.graphics.Canvas, float, float, android.graphics.Paint);
+    method @Deprecated public void draw(android.graphics.Canvas, float, float);
+    method @Deprecated public int duration();
+    method @Deprecated public int height();
+    method @Deprecated public boolean isOpaque();
+    method @Deprecated public boolean setTime(int);
+    method @Deprecated public int width();
+  }
+
+  public class NinePatch {
+    ctor public NinePatch(android.graphics.Bitmap, byte[]);
+    ctor public NinePatch(android.graphics.Bitmap, byte[], String);
+    method public void draw(android.graphics.Canvas, android.graphics.RectF);
+    method public void draw(android.graphics.Canvas, android.graphics.Rect);
+    method public void draw(android.graphics.Canvas, android.graphics.Rect, android.graphics.Paint);
+    method public android.graphics.Bitmap getBitmap();
+    method public int getDensity();
+    method public int getHeight();
+    method public String getName();
+    method public android.graphics.Paint getPaint();
+    method public final android.graphics.Region getTransparentRegion(android.graphics.Rect);
+    method public int getWidth();
+    method public final boolean hasAlpha();
+    method public static boolean isNinePatchChunk(byte[]);
+    method public void setPaint(android.graphics.Paint);
+  }
+
+  public final class Outline {
+    ctor public Outline();
+    ctor public Outline(@NonNull android.graphics.Outline);
+    method public boolean canClip();
+    method public float getAlpha();
+    method public float getRadius();
+    method public boolean getRect(@NonNull android.graphics.Rect);
+    method public boolean isEmpty();
+    method public void offset(int, int);
+    method public void set(@NonNull android.graphics.Outline);
+    method public void setAlpha(@FloatRange(from=0.0, to=1.0) float);
+    method @Deprecated public void setConvexPath(@NonNull android.graphics.Path);
+    method public void setEmpty();
+    method public void setOval(int, int, int, int);
+    method public void setOval(@NonNull android.graphics.Rect);
+    method public void setPath(@NonNull android.graphics.Path);
+    method public void setRect(int, int, int, int);
+    method public void setRect(@NonNull android.graphics.Rect);
+    method public void setRoundRect(int, int, int, int, float);
+    method public void setRoundRect(@NonNull android.graphics.Rect, float);
+  }
+
+  public class Paint {
+    ctor public Paint();
+    ctor public Paint(int);
+    ctor public Paint(android.graphics.Paint);
+    method public float ascent();
+    method public int breakText(char[], int, int, float, float[]);
+    method public int breakText(CharSequence, int, int, boolean, float, float[]);
+    method public int breakText(String, boolean, float, float[]);
+    method public void clearShadowLayer();
+    method public float descent();
+    method public boolean equalsForTextMeasurement(@NonNull android.graphics.Paint);
+    method public int getAlpha();
+    method @Nullable public android.graphics.BlendMode getBlendMode();
+    method @ColorInt public int getColor();
+    method public android.graphics.ColorFilter getColorFilter();
+    method @ColorLong public long getColorLong();
+    method public int getEndHyphenEdit();
+    method public boolean getFillPath(android.graphics.Path, android.graphics.Path);
+    method public int getFlags();
+    method public String getFontFeatureSettings();
+    method public float getFontMetrics(android.graphics.Paint.FontMetrics);
+    method public android.graphics.Paint.FontMetrics getFontMetrics();
+    method public int getFontMetricsInt(android.graphics.Paint.FontMetricsInt);
+    method public android.graphics.Paint.FontMetricsInt getFontMetricsInt();
+    method public float getFontSpacing();
+    method public String getFontVariationSettings();
+    method public int getHinting();
+    method public float getLetterSpacing();
+    method public android.graphics.MaskFilter getMaskFilter();
+    method public int getOffsetForAdvance(char[], int, int, int, int, boolean, float);
+    method public int getOffsetForAdvance(CharSequence, int, int, int, int, boolean, float);
+    method public android.graphics.PathEffect getPathEffect();
+    method public float getRunAdvance(char[], int, int, int, int, boolean, int);
+    method public float getRunAdvance(CharSequence, int, int, int, int, boolean, int);
+    method public android.graphics.Shader getShader();
+    method @ColorInt public int getShadowLayerColor();
+    method @ColorLong public long getShadowLayerColorLong();
+    method public float getShadowLayerDx();
+    method public float getShadowLayerDy();
+    method public float getShadowLayerRadius();
+    method public int getStartHyphenEdit();
+    method @Px public float getStrikeThruPosition();
+    method @Px public float getStrikeThruThickness();
+    method public android.graphics.Paint.Cap getStrokeCap();
+    method public android.graphics.Paint.Join getStrokeJoin();
+    method public float getStrokeMiter();
+    method public float getStrokeWidth();
+    method public android.graphics.Paint.Style getStyle();
+    method public android.graphics.Paint.Align getTextAlign();
+    method public void getTextBounds(String, int, int, android.graphics.Rect);
+    method public void getTextBounds(@NonNull CharSequence, int, int, @NonNull android.graphics.Rect);
+    method public void getTextBounds(char[], int, int, android.graphics.Rect);
+    method @NonNull public java.util.Locale getTextLocale();
+    method @NonNull @Size(min=1) public android.os.LocaleList getTextLocales();
+    method public void getTextPath(char[], int, int, float, float, android.graphics.Path);
+    method public void getTextPath(String, int, int, float, float, android.graphics.Path);
+    method public float getTextRunAdvances(@NonNull char[], @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int, boolean, @Nullable float[], @IntRange(from=0) int);
+    method public int getTextRunCursor(@NonNull char[], @IntRange(from=0) int, @IntRange(from=0) int, boolean, @IntRange(from=0) int, int);
+    method public int getTextRunCursor(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, boolean, @IntRange(from=0) int, int);
+    method public float getTextScaleX();
+    method public float getTextSize();
+    method public float getTextSkewX();
+    method public int getTextWidths(char[], int, int, float[]);
+    method public int getTextWidths(CharSequence, int, int, float[]);
+    method public int getTextWidths(String, int, int, float[]);
+    method public int getTextWidths(String, float[]);
+    method public android.graphics.Typeface getTypeface();
+    method @Px public float getUnderlinePosition();
+    method @Px public float getUnderlineThickness();
+    method @Px public float getWordSpacing();
+    method public android.graphics.Xfermode getXfermode();
+    method public boolean hasGlyph(String);
+    method public final boolean isAntiAlias();
+    method public final boolean isDither();
+    method public boolean isElegantTextHeight();
+    method public final boolean isFakeBoldText();
+    method public final boolean isFilterBitmap();
+    method public final boolean isLinearText();
+    method public final boolean isStrikeThruText();
+    method public final boolean isSubpixelText();
+    method public final boolean isUnderlineText();
+    method public float measureText(char[], int, int);
+    method public float measureText(String, int, int);
+    method public float measureText(String);
+    method public float measureText(CharSequence, int, int);
+    method public void reset();
+    method public void set(android.graphics.Paint);
+    method public void setARGB(int, int, int, int);
+    method public void setAlpha(int);
+    method public void setAntiAlias(boolean);
+    method public void setBlendMode(@Nullable android.graphics.BlendMode);
+    method public void setColor(@ColorInt int);
+    method public void setColor(@ColorLong long);
+    method public android.graphics.ColorFilter setColorFilter(android.graphics.ColorFilter);
+    method public void setDither(boolean);
+    method public void setElegantTextHeight(boolean);
+    method public void setEndHyphenEdit(int);
+    method public void setFakeBoldText(boolean);
+    method public void setFilterBitmap(boolean);
+    method public void setFlags(int);
+    method public void setFontFeatureSettings(String);
+    method public boolean setFontVariationSettings(String);
+    method public void setHinting(int);
+    method public void setLetterSpacing(float);
+    method public void setLinearText(boolean);
+    method public android.graphics.MaskFilter setMaskFilter(android.graphics.MaskFilter);
+    method public android.graphics.PathEffect setPathEffect(android.graphics.PathEffect);
+    method public android.graphics.Shader setShader(android.graphics.Shader);
+    method public void setShadowLayer(float, float, float, @ColorInt int);
+    method public void setShadowLayer(float, float, float, @ColorLong long);
+    method public void setStartHyphenEdit(int);
+    method public void setStrikeThruText(boolean);
+    method public void setStrokeCap(android.graphics.Paint.Cap);
+    method public void setStrokeJoin(android.graphics.Paint.Join);
+    method public void setStrokeMiter(float);
+    method public void setStrokeWidth(float);
+    method public void setStyle(android.graphics.Paint.Style);
+    method public void setSubpixelText(boolean);
+    method public void setTextAlign(android.graphics.Paint.Align);
+    method public void setTextLocale(@NonNull java.util.Locale);
+    method public void setTextLocales(@NonNull @Size(min=1) android.os.LocaleList);
+    method public void setTextScaleX(float);
+    method public void setTextSize(float);
+    method public void setTextSkewX(float);
+    method public android.graphics.Typeface setTypeface(android.graphics.Typeface);
+    method public void setUnderlineText(boolean);
+    method public void setWordSpacing(@Px float);
+    method public android.graphics.Xfermode setXfermode(android.graphics.Xfermode);
+    field public static final int ANTI_ALIAS_FLAG = 1; // 0x1
+    field public static final int CURSOR_AFTER = 0; // 0x0
+    field public static final int CURSOR_AT = 4; // 0x4
+    field public static final int CURSOR_AT_OR_AFTER = 1; // 0x1
+    field public static final int CURSOR_AT_OR_BEFORE = 3; // 0x3
+    field public static final int CURSOR_BEFORE = 2; // 0x2
+    field public static final int DEV_KERN_TEXT_FLAG = 256; // 0x100
+    field public static final int DITHER_FLAG = 4; // 0x4
+    field public static final int EMBEDDED_BITMAP_TEXT_FLAG = 1024; // 0x400
+    field public static final int END_HYPHEN_EDIT_INSERT_ARMENIAN_HYPHEN = 3; // 0x3
+    field public static final int END_HYPHEN_EDIT_INSERT_HYPHEN = 2; // 0x2
+    field public static final int END_HYPHEN_EDIT_INSERT_MAQAF = 4; // 0x4
+    field public static final int END_HYPHEN_EDIT_INSERT_UCAS_HYPHEN = 5; // 0x5
+    field public static final int END_HYPHEN_EDIT_INSERT_ZWJ_AND_HYPHEN = 6; // 0x6
+    field public static final int END_HYPHEN_EDIT_NO_EDIT = 0; // 0x0
+    field public static final int END_HYPHEN_EDIT_REPLACE_WITH_HYPHEN = 1; // 0x1
+    field public static final int FAKE_BOLD_TEXT_FLAG = 32; // 0x20
+    field public static final int FILTER_BITMAP_FLAG = 2; // 0x2
+    field public static final int HINTING_OFF = 0; // 0x0
+    field public static final int HINTING_ON = 1; // 0x1
+    field public static final int LINEAR_TEXT_FLAG = 64; // 0x40
+    field public static final int START_HYPHEN_EDIT_INSERT_HYPHEN = 1; // 0x1
+    field public static final int START_HYPHEN_EDIT_INSERT_ZWJ = 2; // 0x2
+    field public static final int START_HYPHEN_EDIT_NO_EDIT = 0; // 0x0
+    field public static final int STRIKE_THRU_TEXT_FLAG = 16; // 0x10
+    field public static final int SUBPIXEL_TEXT_FLAG = 128; // 0x80
+    field public static final int UNDERLINE_TEXT_FLAG = 8; // 0x8
+  }
+
+  public enum Paint.Align {
+    enum_constant public static final android.graphics.Paint.Align CENTER;
+    enum_constant public static final android.graphics.Paint.Align LEFT;
+    enum_constant public static final android.graphics.Paint.Align RIGHT;
+  }
+
+  public enum Paint.Cap {
+    enum_constant public static final android.graphics.Paint.Cap BUTT;
+    enum_constant public static final android.graphics.Paint.Cap ROUND;
+    enum_constant public static final android.graphics.Paint.Cap SQUARE;
+  }
+
+  public static class Paint.FontMetrics {
+    ctor public Paint.FontMetrics();
+    field public float ascent;
+    field public float bottom;
+    field public float descent;
+    field public float leading;
+    field public float top;
+  }
+
+  public static class Paint.FontMetricsInt {
+    ctor public Paint.FontMetricsInt();
+    field public int ascent;
+    field public int bottom;
+    field public int descent;
+    field public int leading;
+    field public int top;
+  }
+
+  public enum Paint.Join {
+    enum_constant public static final android.graphics.Paint.Join BEVEL;
+    enum_constant public static final android.graphics.Paint.Join MITER;
+    enum_constant public static final android.graphics.Paint.Join ROUND;
+  }
+
+  public enum Paint.Style {
+    enum_constant public static final android.graphics.Paint.Style FILL;
+    enum_constant public static final android.graphics.Paint.Style FILL_AND_STROKE;
+    enum_constant public static final android.graphics.Paint.Style STROKE;
+  }
+
+  public class PaintFlagsDrawFilter extends android.graphics.DrawFilter {
+    ctor public PaintFlagsDrawFilter(int, int);
+  }
+
+  public class Path {
+    ctor public Path();
+    ctor public Path(@Nullable android.graphics.Path);
+    method public void addArc(@NonNull android.graphics.RectF, float, float);
+    method public void addArc(float, float, float, float, float, float);
+    method public void addCircle(float, float, float, @NonNull android.graphics.Path.Direction);
+    method public void addOval(@NonNull android.graphics.RectF, @NonNull android.graphics.Path.Direction);
+    method public void addOval(float, float, float, float, @NonNull android.graphics.Path.Direction);
+    method public void addPath(@NonNull android.graphics.Path, float, float);
+    method public void addPath(@NonNull android.graphics.Path);
+    method public void addPath(@NonNull android.graphics.Path, @NonNull android.graphics.Matrix);
+    method public void addRect(@NonNull android.graphics.RectF, @NonNull android.graphics.Path.Direction);
+    method public void addRect(float, float, float, float, @NonNull android.graphics.Path.Direction);
+    method public void addRoundRect(@NonNull android.graphics.RectF, float, float, @NonNull android.graphics.Path.Direction);
+    method public void addRoundRect(float, float, float, float, float, float, @NonNull android.graphics.Path.Direction);
+    method public void addRoundRect(@NonNull android.graphics.RectF, @NonNull float[], @NonNull android.graphics.Path.Direction);
+    method public void addRoundRect(float, float, float, float, @NonNull float[], @NonNull android.graphics.Path.Direction);
+    method @NonNull @Size(min=6, multiple=3) public float[] approximate(@FloatRange(from=0) float);
+    method public void arcTo(@NonNull android.graphics.RectF, float, float, boolean);
+    method public void arcTo(@NonNull android.graphics.RectF, float, float);
+    method public void arcTo(float, float, float, float, float, float, boolean);
+    method public void close();
+    method public void computeBounds(@NonNull android.graphics.RectF, boolean);
+    method public void cubicTo(float, float, float, float, float, float);
+    method @NonNull public android.graphics.Path.FillType getFillType();
+    method public void incReserve(int);
+    method @Deprecated public boolean isConvex();
+    method public boolean isEmpty();
+    method public boolean isInverseFillType();
+    method public boolean isRect(@Nullable android.graphics.RectF);
+    method public void lineTo(float, float);
+    method public void moveTo(float, float);
+    method public void offset(float, float, @Nullable android.graphics.Path);
+    method public void offset(float, float);
+    method public boolean op(@NonNull android.graphics.Path, @NonNull android.graphics.Path.Op);
+    method public boolean op(@NonNull android.graphics.Path, @NonNull android.graphics.Path, @NonNull android.graphics.Path.Op);
+    method public void quadTo(float, float, float, float);
+    method public void rCubicTo(float, float, float, float, float, float);
+    method public void rLineTo(float, float);
+    method public void rMoveTo(float, float);
+    method public void rQuadTo(float, float, float, float);
+    method public void reset();
+    method public void rewind();
+    method public void set(@NonNull android.graphics.Path);
+    method public void setFillType(@NonNull android.graphics.Path.FillType);
+    method public void setLastPoint(float, float);
+    method public void toggleInverseFillType();
+    method public void transform(@NonNull android.graphics.Matrix, @Nullable android.graphics.Path);
+    method public void transform(@NonNull android.graphics.Matrix);
+  }
+
+  public enum Path.Direction {
+    enum_constant public static final android.graphics.Path.Direction CCW;
+    enum_constant public static final android.graphics.Path.Direction CW;
+  }
+
+  public enum Path.FillType {
+    enum_constant public static final android.graphics.Path.FillType EVEN_ODD;
+    enum_constant public static final android.graphics.Path.FillType INVERSE_EVEN_ODD;
+    enum_constant public static final android.graphics.Path.FillType INVERSE_WINDING;
+    enum_constant public static final android.graphics.Path.FillType WINDING;
+  }
+
+  public enum Path.Op {
+    enum_constant public static final android.graphics.Path.Op DIFFERENCE;
+    enum_constant public static final android.graphics.Path.Op INTERSECT;
+    enum_constant public static final android.graphics.Path.Op REVERSE_DIFFERENCE;
+    enum_constant public static final android.graphics.Path.Op UNION;
+    enum_constant public static final android.graphics.Path.Op XOR;
+  }
+
+  public class PathDashPathEffect extends android.graphics.PathEffect {
+    ctor public PathDashPathEffect(android.graphics.Path, float, float, android.graphics.PathDashPathEffect.Style);
+  }
+
+  public enum PathDashPathEffect.Style {
+    enum_constant public static final android.graphics.PathDashPathEffect.Style MORPH;
+    enum_constant public static final android.graphics.PathDashPathEffect.Style ROTATE;
+    enum_constant public static final android.graphics.PathDashPathEffect.Style TRANSLATE;
+  }
+
+  public class PathEffect {
+    ctor public PathEffect();
+  }
+
+  public class PathMeasure {
+    ctor public PathMeasure();
+    ctor public PathMeasure(android.graphics.Path, boolean);
+    method public float getLength();
+    method public boolean getMatrix(float, android.graphics.Matrix, int);
+    method public boolean getPosTan(float, float[], float[]);
+    method public boolean getSegment(float, float, android.graphics.Path, boolean);
+    method public boolean isClosed();
+    method public boolean nextContour();
+    method public void setPath(android.graphics.Path, boolean);
+    field public static final int POSITION_MATRIX_FLAG = 1; // 0x1
+    field public static final int TANGENT_MATRIX_FLAG = 2; // 0x2
+  }
+
+  public class Picture {
+    ctor public Picture();
+    ctor public Picture(android.graphics.Picture);
+    method @NonNull public android.graphics.Canvas beginRecording(int, int);
+    method public void draw(@NonNull android.graphics.Canvas);
+    method public void endRecording();
+    method public int getHeight();
+    method public int getWidth();
+    method public boolean requiresHardwareAcceleration();
+  }
+
+  public class PixelFormat {
+    ctor public PixelFormat();
+    method public static boolean formatHasAlpha(int);
+    method public static void getPixelFormatInfo(int, android.graphics.PixelFormat);
+    field @Deprecated public static final int A_8 = 8; // 0x8
+    field @Deprecated public static final int JPEG = 256; // 0x100
+    field @Deprecated public static final int LA_88 = 10; // 0xa
+    field @Deprecated public static final int L_8 = 9; // 0x9
+    field public static final int OPAQUE = -1; // 0xffffffff
+    field public static final int RGBA_1010102 = 43; // 0x2b
+    field @Deprecated public static final int RGBA_4444 = 7; // 0x7
+    field @Deprecated public static final int RGBA_5551 = 6; // 0x6
+    field public static final int RGBA_8888 = 1; // 0x1
+    field public static final int RGBA_F16 = 22; // 0x16
+    field public static final int RGBX_8888 = 2; // 0x2
+    field @Deprecated public static final int RGB_332 = 11; // 0xb
+    field public static final int RGB_565 = 4; // 0x4
+    field public static final int RGB_888 = 3; // 0x3
+    field public static final int TRANSLUCENT = -3; // 0xfffffffd
+    field public static final int TRANSPARENT = -2; // 0xfffffffe
+    field public static final int UNKNOWN = 0; // 0x0
+    field @Deprecated public static final int YCbCr_420_SP = 17; // 0x11
+    field @Deprecated public static final int YCbCr_422_I = 20; // 0x14
+    field @Deprecated public static final int YCbCr_422_SP = 16; // 0x10
+    field public int bitsPerPixel;
+    field public int bytesPerPixel;
+  }
+
+  public class Point implements android.os.Parcelable {
+    ctor public Point();
+    ctor public Point(int, int);
+    ctor public Point(@NonNull android.graphics.Point);
+    method public int describeContents();
+    method public final boolean equals(int, int);
+    method public final void negate();
+    method public final void offset(int, int);
+    method public void readFromParcel(@NonNull android.os.Parcel);
+    method public void set(int, int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.graphics.Point> CREATOR;
+    field public int x;
+    field public int y;
+  }
+
+  public class PointF implements android.os.Parcelable {
+    ctor public PointF();
+    ctor public PointF(float, float);
+    ctor public PointF(@NonNull android.graphics.Point);
+    ctor public PointF(@NonNull android.graphics.PointF);
+    method public int describeContents();
+    method public final boolean equals(float, float);
+    method public final float length();
+    method public static float length(float, float);
+    method public final void negate();
+    method public final void offset(float, float);
+    method public void readFromParcel(@NonNull android.os.Parcel);
+    method public final void set(float, float);
+    method public final void set(@NonNull android.graphics.PointF);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.graphics.PointF> CREATOR;
+    field public float x;
+    field public float y;
+  }
+
+  public class PorterDuff {
+    ctor public PorterDuff();
+  }
+
+  public enum PorterDuff.Mode {
+    enum_constant public static final android.graphics.PorterDuff.Mode ADD;
+    enum_constant public static final android.graphics.PorterDuff.Mode CLEAR;
+    enum_constant public static final android.graphics.PorterDuff.Mode DARKEN;
+    enum_constant public static final android.graphics.PorterDuff.Mode DST;
+    enum_constant public static final android.graphics.PorterDuff.Mode DST_ATOP;
+    enum_constant public static final android.graphics.PorterDuff.Mode DST_IN;
+    enum_constant public static final android.graphics.PorterDuff.Mode DST_OUT;
+    enum_constant public static final android.graphics.PorterDuff.Mode DST_OVER;
+    enum_constant public static final android.graphics.PorterDuff.Mode LIGHTEN;
+    enum_constant public static final android.graphics.PorterDuff.Mode MULTIPLY;
+    enum_constant public static final android.graphics.PorterDuff.Mode OVERLAY;
+    enum_constant public static final android.graphics.PorterDuff.Mode SCREEN;
+    enum_constant public static final android.graphics.PorterDuff.Mode SRC;
+    enum_constant public static final android.graphics.PorterDuff.Mode SRC_ATOP;
+    enum_constant public static final android.graphics.PorterDuff.Mode SRC_IN;
+    enum_constant public static final android.graphics.PorterDuff.Mode SRC_OUT;
+    enum_constant public static final android.graphics.PorterDuff.Mode SRC_OVER;
+    enum_constant public static final android.graphics.PorterDuff.Mode XOR;
+  }
+
+  public class PorterDuffColorFilter extends android.graphics.ColorFilter {
+    ctor public PorterDuffColorFilter(@ColorInt int, @NonNull android.graphics.PorterDuff.Mode);
+  }
+
+  public class PorterDuffXfermode extends android.graphics.Xfermode {
+    ctor public PorterDuffXfermode(android.graphics.PorterDuff.Mode);
+  }
+
+  public interface PostProcessor {
+    method public int onPostProcess(@NonNull android.graphics.Canvas);
+  }
+
+  public class RadialGradient extends android.graphics.Shader {
+    ctor public RadialGradient(float, float, float, @ColorInt @NonNull int[], @Nullable float[], @NonNull android.graphics.Shader.TileMode);
+    ctor public RadialGradient(float, float, float, @ColorLong @NonNull long[], @Nullable float[], @NonNull android.graphics.Shader.TileMode);
+    ctor public RadialGradient(float, float, float, @ColorInt int, @ColorInt int, @NonNull android.graphics.Shader.TileMode);
+    ctor public RadialGradient(float, float, float, @ColorLong long, @ColorLong long, @NonNull android.graphics.Shader.TileMode);
+  }
+
+  public final class RecordingCanvas extends android.graphics.Canvas {
+    method public final void drawPatch(@NonNull android.graphics.NinePatch, @NonNull android.graphics.Rect, @Nullable android.graphics.Paint);
+    method public final void drawPatch(@NonNull android.graphics.NinePatch, @NonNull android.graphics.RectF, @Nullable android.graphics.Paint);
+  }
+
+  public final class Rect implements android.os.Parcelable {
+    ctor public Rect();
+    ctor public Rect(int, int, int, int);
+    ctor public Rect(@Nullable android.graphics.Rect);
+    method public int centerX();
+    method public int centerY();
+    method public boolean contains(int, int);
+    method public boolean contains(int, int, int, int);
+    method public boolean contains(@NonNull android.graphics.Rect);
+    method public int describeContents();
+    method public float exactCenterX();
+    method public float exactCenterY();
+    method @NonNull public String flattenToString();
+    method public int height();
+    method public void inset(int, int);
+    method @CheckResult public boolean intersect(int, int, int, int);
+    method @CheckResult public boolean intersect(@NonNull android.graphics.Rect);
+    method public boolean intersects(int, int, int, int);
+    method public static boolean intersects(@NonNull android.graphics.Rect, @NonNull android.graphics.Rect);
+    method public boolean isEmpty();
+    method public void offset(int, int);
+    method public void offsetTo(int, int);
+    method public void readFromParcel(@NonNull android.os.Parcel);
+    method public void set(int, int, int, int);
+    method public void set(@NonNull android.graphics.Rect);
+    method public void setEmpty();
+    method @CheckResult public boolean setIntersect(@NonNull android.graphics.Rect, @NonNull android.graphics.Rect);
+    method public void sort();
+    method @NonNull public String toShortString();
+    method @Nullable public static android.graphics.Rect unflattenFromString(@Nullable String);
+    method public void union(int, int, int, int);
+    method public void union(@NonNull android.graphics.Rect);
+    method public void union(int, int);
+    method public int width();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.graphics.Rect> CREATOR;
+    field public int bottom;
+    field public int left;
+    field public int right;
+    field public int top;
+  }
+
+  public class RectF implements android.os.Parcelable {
+    ctor public RectF();
+    ctor public RectF(float, float, float, float);
+    ctor public RectF(@Nullable android.graphics.RectF);
+    ctor public RectF(@Nullable android.graphics.Rect);
+    method public final float centerX();
+    method public final float centerY();
+    method public boolean contains(float, float);
+    method public boolean contains(float, float, float, float);
+    method public boolean contains(@NonNull android.graphics.RectF);
+    method public int describeContents();
+    method public final float height();
+    method public void inset(float, float);
+    method public boolean intersect(float, float, float, float);
+    method public boolean intersect(@NonNull android.graphics.RectF);
+    method public boolean intersects(float, float, float, float);
+    method public static boolean intersects(@NonNull android.graphics.RectF, @NonNull android.graphics.RectF);
+    method public final boolean isEmpty();
+    method public void offset(float, float);
+    method public void offsetTo(float, float);
+    method public void readFromParcel(@NonNull android.os.Parcel);
+    method public void round(@NonNull android.graphics.Rect);
+    method public void roundOut(@NonNull android.graphics.Rect);
+    method public void set(float, float, float, float);
+    method public void set(@NonNull android.graphics.RectF);
+    method public void set(@NonNull android.graphics.Rect);
+    method public void setEmpty();
+    method public boolean setIntersect(@NonNull android.graphics.RectF, @NonNull android.graphics.RectF);
+    method public void sort();
+    method @NonNull public String toShortString();
+    method public void union(float, float, float, float);
+    method public void union(@NonNull android.graphics.RectF);
+    method public void union(float, float);
+    method public final float width();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.graphics.RectF> CREATOR;
+    field public float bottom;
+    field public float left;
+    field public float right;
+    field public float top;
+  }
+
+  public class Region implements android.os.Parcelable {
+    ctor public Region();
+    ctor public Region(@NonNull android.graphics.Region);
+    ctor public Region(@NonNull android.graphics.Rect);
+    ctor public Region(int, int, int, int);
+    method public boolean contains(int, int);
+    method public int describeContents();
+    method @NonNull public android.graphics.Path getBoundaryPath();
+    method public boolean getBoundaryPath(@NonNull android.graphics.Path);
+    method @NonNull public android.graphics.Rect getBounds();
+    method public boolean getBounds(@NonNull android.graphics.Rect);
+    method public boolean isComplex();
+    method public boolean isEmpty();
+    method public boolean isRect();
+    method public boolean op(@NonNull android.graphics.Rect, @NonNull android.graphics.Region.Op);
+    method public boolean op(int, int, int, int, @NonNull android.graphics.Region.Op);
+    method public boolean op(@NonNull android.graphics.Region, @NonNull android.graphics.Region.Op);
+    method public boolean op(@NonNull android.graphics.Rect, @NonNull android.graphics.Region, @NonNull android.graphics.Region.Op);
+    method public boolean op(@NonNull android.graphics.Region, @NonNull android.graphics.Region, @NonNull android.graphics.Region.Op);
+    method public boolean quickContains(@NonNull android.graphics.Rect);
+    method public boolean quickContains(int, int, int, int);
+    method public boolean quickReject(@NonNull android.graphics.Rect);
+    method public boolean quickReject(int, int, int, int);
+    method public boolean quickReject(android.graphics.Region);
+    method public boolean set(@NonNull android.graphics.Region);
+    method public boolean set(@NonNull android.graphics.Rect);
+    method public boolean set(int, int, int, int);
+    method public void setEmpty();
+    method public boolean setPath(@NonNull android.graphics.Path, @NonNull android.graphics.Region);
+    method public void translate(int, int);
+    method public void translate(int, int, android.graphics.Region);
+    method public final boolean union(@NonNull android.graphics.Rect);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.graphics.Region> CREATOR;
+  }
+
+  public enum Region.Op {
+    enum_constant public static final android.graphics.Region.Op DIFFERENCE;
+    enum_constant public static final android.graphics.Region.Op INTERSECT;
+    enum_constant public static final android.graphics.Region.Op REPLACE;
+    enum_constant public static final android.graphics.Region.Op REVERSE_DIFFERENCE;
+    enum_constant public static final android.graphics.Region.Op UNION;
+    enum_constant public static final android.graphics.Region.Op XOR;
+  }
+
+  public class RegionIterator {
+    ctor public RegionIterator(android.graphics.Region);
+    method public final boolean next(android.graphics.Rect);
+  }
+
+  public final class RenderNode {
+    ctor public RenderNode(@Nullable String);
+    method @NonNull public android.graphics.RecordingCanvas beginRecording(int, int);
+    method @NonNull public android.graphics.RecordingCanvas beginRecording();
+    method public long computeApproximateMemoryUsage();
+    method public void discardDisplayList();
+    method public void endRecording();
+    method public float getAlpha();
+    method @ColorInt public int getAmbientShadowColor();
+    method public int getBottom();
+    method @FloatRange(from=0.0f, to=java.lang.Float.MAX_VALUE) public float getCameraDistance();
+    method public boolean getClipToBounds();
+    method public boolean getClipToOutline();
+    method public float getElevation();
+    method public int getHeight();
+    method public void getInverseMatrix(@NonNull android.graphics.Matrix);
+    method public int getLeft();
+    method public void getMatrix(@NonNull android.graphics.Matrix);
+    method public float getPivotX();
+    method public float getPivotY();
+    method public int getRight();
+    method public float getRotationX();
+    method public float getRotationY();
+    method public float getRotationZ();
+    method public float getScaleX();
+    method public float getScaleY();
+    method @ColorInt public int getSpotShadowColor();
+    method public int getTop();
+    method public float getTranslationX();
+    method public float getTranslationY();
+    method public float getTranslationZ();
+    method public long getUniqueId();
+    method public boolean getUseCompositingLayer();
+    method public int getWidth();
+    method public boolean hasDisplayList();
+    method public boolean hasIdentityMatrix();
+    method public boolean hasOverlappingRendering();
+    method public boolean hasShadow();
+    method public boolean isForceDarkAllowed();
+    method public boolean isPivotExplicitlySet();
+    method public boolean offsetLeftAndRight(int);
+    method public boolean offsetTopAndBottom(int);
+    method public boolean resetPivot();
+    method public boolean setAlpha(float);
+    method public boolean setAmbientShadowColor(@ColorInt int);
+    method public boolean setCameraDistance(@FloatRange(from=0.0f, to=java.lang.Float.MAX_VALUE) float);
+    method public boolean setClipRect(@Nullable android.graphics.Rect);
+    method public boolean setClipToBounds(boolean);
+    method public boolean setClipToOutline(boolean);
+    method public boolean setElevation(float);
+    method public boolean setForceDarkAllowed(boolean);
+    method public boolean setHasOverlappingRendering(boolean);
+    method public boolean setOutline(@Nullable android.graphics.Outline);
+    method public boolean setPivotX(float);
+    method public boolean setPivotY(float);
+    method public boolean setPosition(int, int, int, int);
+    method public boolean setPosition(@NonNull android.graphics.Rect);
+    method public boolean setProjectBackwards(boolean);
+    method public boolean setProjectionReceiver(boolean);
+    method public boolean setRotationX(float);
+    method public boolean setRotationY(float);
+    method public boolean setRotationZ(float);
+    method public boolean setScaleX(float);
+    method public boolean setScaleY(float);
+    method public boolean setSpotShadowColor(@ColorInt int);
+    method public boolean setTranslationX(float);
+    method public boolean setTranslationY(float);
+    method public boolean setTranslationZ(float);
+    method public boolean setUseCompositingLayer(boolean, @Nullable android.graphics.Paint);
+  }
+
+  public class Shader {
+    ctor @Deprecated public Shader();
+    method public boolean getLocalMatrix(@NonNull android.graphics.Matrix);
+    method public void setLocalMatrix(@Nullable android.graphics.Matrix);
+  }
+
+  public enum Shader.TileMode {
+    enum_constant public static final android.graphics.Shader.TileMode CLAMP;
+    enum_constant public static final android.graphics.Shader.TileMode MIRROR;
+    enum_constant public static final android.graphics.Shader.TileMode REPEAT;
+  }
+
+  public class SumPathEffect extends android.graphics.PathEffect {
+    ctor public SumPathEffect(android.graphics.PathEffect, android.graphics.PathEffect);
+  }
+
+  public class SurfaceTexture {
+    ctor public SurfaceTexture(int);
+    ctor public SurfaceTexture(int, boolean);
+    ctor public SurfaceTexture(boolean);
+    method public void attachToGLContext(int);
+    method public void detachFromGLContext();
+    method public long getTimestamp();
+    method public void getTransformMatrix(float[]);
+    method public boolean isReleased();
+    method public void release();
+    method public void releaseTexImage();
+    method public void setDefaultBufferSize(int, int);
+    method public void setOnFrameAvailableListener(@Nullable android.graphics.SurfaceTexture.OnFrameAvailableListener);
+    method public void setOnFrameAvailableListener(@Nullable android.graphics.SurfaceTexture.OnFrameAvailableListener, @Nullable android.os.Handler);
+    method public void updateTexImage();
+  }
+
+  public static interface SurfaceTexture.OnFrameAvailableListener {
+    method public void onFrameAvailable(android.graphics.SurfaceTexture);
+  }
+
+  @Deprecated public static class SurfaceTexture.OutOfResourcesException extends java.lang.Exception {
+    ctor @Deprecated public SurfaceTexture.OutOfResourcesException();
+    ctor @Deprecated public SurfaceTexture.OutOfResourcesException(String);
+  }
+
+  public class SweepGradient extends android.graphics.Shader {
+    ctor public SweepGradient(float, float, @ColorInt @NonNull int[], @Nullable float[]);
+    ctor public SweepGradient(float, float, @ColorLong @NonNull long[], @Nullable float[]);
+    ctor public SweepGradient(float, float, @ColorInt int, @ColorInt int);
+    ctor public SweepGradient(float, float, @ColorLong long, @ColorLong long);
+  }
+
+  public class Typeface {
+    method public static android.graphics.Typeface create(String, int);
+    method public static android.graphics.Typeface create(android.graphics.Typeface, int);
+    method @NonNull public static android.graphics.Typeface create(@Nullable android.graphics.Typeface, @IntRange(from=1, to=1000) int, boolean);
+    method public static android.graphics.Typeface createFromAsset(android.content.res.AssetManager, String);
+    method public static android.graphics.Typeface createFromFile(@Nullable java.io.File);
+    method public static android.graphics.Typeface createFromFile(@Nullable String);
+    method public static android.graphics.Typeface defaultFromStyle(int);
+    method public int getStyle();
+    method @IntRange(from=0, to=1000) public int getWeight();
+    method public final boolean isBold();
+    method public final boolean isItalic();
+    field public static final int BOLD = 1; // 0x1
+    field public static final int BOLD_ITALIC = 3; // 0x3
+    field public static final android.graphics.Typeface DEFAULT;
+    field public static final android.graphics.Typeface DEFAULT_BOLD;
+    field public static final int ITALIC = 2; // 0x2
+    field public static final android.graphics.Typeface MONOSPACE;
+    field public static final int NORMAL = 0; // 0x0
+    field public static final android.graphics.Typeface SANS_SERIF;
+    field public static final android.graphics.Typeface SERIF;
+  }
+
+  public static final class Typeface.Builder {
+    ctor public Typeface.Builder(@NonNull java.io.File);
+    ctor public Typeface.Builder(@NonNull java.io.FileDescriptor);
+    ctor public Typeface.Builder(@NonNull String);
+    ctor public Typeface.Builder(@NonNull android.content.res.AssetManager, @NonNull String);
+    method public android.graphics.Typeface build();
+    method public android.graphics.Typeface.Builder setFallback(@Nullable String);
+    method public android.graphics.Typeface.Builder setFontVariationSettings(@Nullable String);
+    method public android.graphics.Typeface.Builder setFontVariationSettings(@Nullable android.graphics.fonts.FontVariationAxis[]);
+    method public android.graphics.Typeface.Builder setItalic(boolean);
+    method public android.graphics.Typeface.Builder setTtcIndex(@IntRange(from=0) int);
+    method public android.graphics.Typeface.Builder setWeight(@IntRange(from=1, to=1000) int);
+  }
+
+  public static final class Typeface.CustomFallbackBuilder {
+    ctor public Typeface.CustomFallbackBuilder(@NonNull android.graphics.fonts.FontFamily);
+    method @NonNull public android.graphics.Typeface.CustomFallbackBuilder addCustomFallback(@NonNull android.graphics.fonts.FontFamily);
+    method @NonNull public android.graphics.Typeface build();
+    method @IntRange(from=64) public static int getMaxCustomFallbackCount();
+    method @NonNull public android.graphics.Typeface.CustomFallbackBuilder setStyle(@NonNull android.graphics.fonts.FontStyle);
+    method @NonNull public android.graphics.Typeface.CustomFallbackBuilder setSystemFallback(@NonNull String);
+  }
+
+  public class Xfermode {
+    ctor public Xfermode();
+  }
+
+  public class YuvImage {
+    ctor public YuvImage(byte[], int, int, int, int[]);
+    method public boolean compressToJpeg(android.graphics.Rect, int, java.io.OutputStream);
+    method public int getHeight();
+    method public int[] getStrides();
+    method public int getWidth();
+    method public byte[] getYuvData();
+    method public int getYuvFormat();
+  }
+
+}
+
+package android.graphics.drawable {
+
+  public class AdaptiveIconDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
+    ctor public AdaptiveIconDrawable(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable);
+    method public void draw(android.graphics.Canvas);
+    method public android.graphics.drawable.Drawable getBackground();
+    method public static float getExtraInsetFraction();
+    method public android.graphics.drawable.Drawable getForeground();
+    method public android.graphics.Path getIconMask();
+    method public int getOpacity();
+    method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
+    method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
+    method public void setAlpha(int);
+    method public void setColorFilter(android.graphics.ColorFilter);
+    method public void setDither(boolean);
+    method public void setOpacity(int);
+    method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
+  }
+
+  public interface Animatable {
+    method public boolean isRunning();
+    method public void start();
+    method public void stop();
+  }
+
+  public interface Animatable2 extends android.graphics.drawable.Animatable {
+    method public void clearAnimationCallbacks();
+    method public void registerAnimationCallback(@NonNull android.graphics.drawable.Animatable2.AnimationCallback);
+    method public boolean unregisterAnimationCallback(@NonNull android.graphics.drawable.Animatable2.AnimationCallback);
+  }
+
+  public abstract static class Animatable2.AnimationCallback {
+    ctor public Animatable2.AnimationCallback();
+    method public void onAnimationEnd(android.graphics.drawable.Drawable);
+    method public void onAnimationStart(android.graphics.drawable.Drawable);
+  }
+
+  public class AnimatedImageDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Animatable2 {
+    ctor public AnimatedImageDrawable();
+    method public void clearAnimationCallbacks();
+    method public void draw(@NonNull android.graphics.Canvas);
+    method public int getOpacity();
+    method public int getRepeatCount();
+    method public final boolean isAutoMirrored();
+    method public boolean isRunning();
+    method public void registerAnimationCallback(@NonNull android.graphics.drawable.Animatable2.AnimationCallback);
+    method public void setAlpha(@IntRange(from=0, to=255) int);
+    method public void setColorFilter(@Nullable android.graphics.ColorFilter);
+    method public void setRepeatCount(@IntRange(from=android.graphics.drawable.AnimatedImageDrawable.REPEAT_INFINITE) int);
+    method public void start();
+    method public void stop();
+    method public boolean unregisterAnimationCallback(@NonNull android.graphics.drawable.Animatable2.AnimationCallback);
+    field public static final int REPEAT_INFINITE = -1; // 0xffffffff
+  }
+
+  public class AnimatedStateListDrawable extends android.graphics.drawable.StateListDrawable {
+    ctor public AnimatedStateListDrawable();
+    method public void addState(@NonNull int[], @NonNull android.graphics.drawable.Drawable, int);
+    method public <T extends android.graphics.drawable.Drawable & android.graphics.drawable.Animatable> void addTransition(int, int, @NonNull T, boolean);
+  }
+
+  public class AnimatedVectorDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Animatable2 {
+    ctor public AnimatedVectorDrawable();
+    method public void clearAnimationCallbacks();
+    method public void draw(android.graphics.Canvas);
+    method public int getOpacity();
+    method public boolean isRunning();
+    method public void registerAnimationCallback(@NonNull android.graphics.drawable.Animatable2.AnimationCallback);
+    method public void reset();
+    method public void setAlpha(int);
+    method public void setColorFilter(android.graphics.ColorFilter);
+    method public void start();
+    method public void stop();
+    method public boolean unregisterAnimationCallback(@NonNull android.graphics.drawable.Animatable2.AnimationCallback);
+  }
+
+  public class AnimationDrawable extends android.graphics.drawable.DrawableContainer implements android.graphics.drawable.Animatable java.lang.Runnable {
+    ctor public AnimationDrawable();
+    method public void addFrame(@NonNull android.graphics.drawable.Drawable, int);
+    method public int getDuration(int);
+    method public android.graphics.drawable.Drawable getFrame(int);
+    method public int getNumberOfFrames();
+    method public boolean isOneShot();
+    method public boolean isRunning();
+    method public void run();
+    method public void setOneShot(boolean);
+    method public void start();
+    method public void stop();
+  }
+
+  public class BitmapDrawable extends android.graphics.drawable.Drawable {
+    ctor @Deprecated public BitmapDrawable();
+    ctor @Deprecated public BitmapDrawable(android.content.res.Resources);
+    ctor @Deprecated public BitmapDrawable(android.graphics.Bitmap);
+    ctor public BitmapDrawable(android.content.res.Resources, android.graphics.Bitmap);
+    ctor @Deprecated public BitmapDrawable(String);
+    ctor public BitmapDrawable(android.content.res.Resources, String);
+    ctor @Deprecated public BitmapDrawable(java.io.InputStream);
+    ctor public BitmapDrawable(android.content.res.Resources, java.io.InputStream);
+    method public void draw(android.graphics.Canvas);
+    method public final android.graphics.Bitmap getBitmap();
+    method public final android.graphics.drawable.Drawable.ConstantState getConstantState();
+    method public int getGravity();
+    method public int getOpacity();
+    method public final android.graphics.Paint getPaint();
+    method public android.graphics.Shader.TileMode getTileModeX();
+    method public android.graphics.Shader.TileMode getTileModeY();
+    method public boolean hasAntiAlias();
+    method public boolean hasMipMap();
+    method public final boolean isAutoMirrored();
+    method public void setAlpha(int);
+    method public void setAntiAlias(boolean);
+    method public void setColorFilter(android.graphics.ColorFilter);
+    method public void setDither(boolean);
+    method public void setGravity(int);
+    method public void setMipMap(boolean);
+    method public void setTargetDensity(android.graphics.Canvas);
+    method public void setTargetDensity(android.util.DisplayMetrics);
+    method public void setTargetDensity(int);
+    method public void setTileModeX(android.graphics.Shader.TileMode);
+    method public void setTileModeXY(android.graphics.Shader.TileMode, android.graphics.Shader.TileMode);
+    method public final void setTileModeY(android.graphics.Shader.TileMode);
+  }
+
+  public class ClipDrawable extends android.graphics.drawable.DrawableWrapper {
+    ctor public ClipDrawable(android.graphics.drawable.Drawable, int, int);
+    field public static final int HORIZONTAL = 1; // 0x1
+    field public static final int VERTICAL = 2; // 0x2
+  }
+
+  public class ColorDrawable extends android.graphics.drawable.Drawable {
+    ctor public ColorDrawable();
+    ctor public ColorDrawable(@ColorInt int);
+    method public void draw(android.graphics.Canvas);
+    method @ColorInt public int getColor();
+    method public int getOpacity();
+    method public void setAlpha(int);
+    method public void setColor(@ColorInt int);
+    method public void setColorFilter(android.graphics.ColorFilter);
+  }
+
+  public class ColorStateListDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
+    ctor public ColorStateListDrawable();
+    ctor public ColorStateListDrawable(@NonNull android.content.res.ColorStateList);
+    method public void clearAlpha();
+    method public void draw(@NonNull android.graphics.Canvas);
+    method @NonNull public android.content.res.ColorStateList getColorStateList();
+    method public int getOpacity();
+    method public boolean hasFocusStateSpecified();
+    method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
+    method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
+    method public void setAlpha(@IntRange(from=0, to=255) int);
+    method public void setColorFilter(@Nullable android.graphics.ColorFilter);
+    method public void setColorStateList(@NonNull android.content.res.ColorStateList);
+    method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
+  }
+
+  public abstract class Drawable {
+    ctor public Drawable();
+    method public void applyTheme(@NonNull android.content.res.Resources.Theme);
+    method public boolean canApplyTheme();
+    method public void clearColorFilter();
+    method public final void copyBounds(@NonNull android.graphics.Rect);
+    method @NonNull public final android.graphics.Rect copyBounds();
+    method @Nullable public static android.graphics.drawable.Drawable createFromPath(String);
+    method public static android.graphics.drawable.Drawable createFromResourceStream(android.content.res.Resources, android.util.TypedValue, java.io.InputStream, String);
+    method @Deprecated @Nullable public static android.graphics.drawable.Drawable createFromResourceStream(@Nullable android.content.res.Resources, @Nullable android.util.TypedValue, @Nullable java.io.InputStream, @Nullable String, @Nullable android.graphics.BitmapFactory.Options);
+    method public static android.graphics.drawable.Drawable createFromStream(java.io.InputStream, String);
+    method @NonNull public static android.graphics.drawable.Drawable createFromXml(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method @NonNull public static android.graphics.drawable.Drawable createFromXml(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, @Nullable android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method @NonNull public static android.graphics.drawable.Drawable createFromXmlInner(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, @NonNull android.util.AttributeSet) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method @NonNull public static android.graphics.drawable.Drawable createFromXmlInner(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, @NonNull android.util.AttributeSet, @Nullable android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method public abstract void draw(@NonNull android.graphics.Canvas);
+    method @IntRange(from=0, to=255) public int getAlpha();
+    method @NonNull public final android.graphics.Rect getBounds();
+    method @Nullable public android.graphics.drawable.Drawable.Callback getCallback();
+    method public int getChangingConfigurations();
+    method @Nullable public android.graphics.ColorFilter getColorFilter();
+    method @Nullable public android.graphics.drawable.Drawable.ConstantState getConstantState();
+    method @NonNull public android.graphics.drawable.Drawable getCurrent();
+    method @NonNull public android.graphics.Rect getDirtyBounds();
+    method public void getHotspotBounds(@NonNull android.graphics.Rect);
+    method public int getIntrinsicHeight();
+    method public int getIntrinsicWidth();
+    method public int getLayoutDirection();
+    method @IntRange(from=0, to=10000) public final int getLevel();
+    method public int getMinimumHeight();
+    method public int getMinimumWidth();
+    method @Deprecated public abstract int getOpacity();
+    method @NonNull public android.graphics.Insets getOpticalInsets();
+    method public void getOutline(@NonNull android.graphics.Outline);
+    method public boolean getPadding(@NonNull android.graphics.Rect);
+    method @NonNull public int[] getState();
+    method @Nullable public android.graphics.Region getTransparentRegion();
+    method public void inflate(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, @NonNull android.util.AttributeSet) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method public void inflate(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, @NonNull android.util.AttributeSet, @Nullable android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method public void invalidateSelf();
+    method public boolean isAutoMirrored();
+    method public boolean isFilterBitmap();
+    method public boolean isProjected();
+    method public boolean isStateful();
+    method public final boolean isVisible();
+    method public void jumpToCurrentState();
+    method @NonNull public android.graphics.drawable.Drawable mutate();
+    method protected void onBoundsChange(android.graphics.Rect);
+    method public boolean onLayoutDirectionChanged(int);
+    method protected boolean onLevelChange(int);
+    method protected boolean onStateChange(int[]);
+    method public static int resolveOpacity(int, int);
+    method public void scheduleSelf(@NonNull Runnable, long);
+    method public abstract void setAlpha(@IntRange(from=0, to=255) int);
+    method public void setAutoMirrored(boolean);
+    method public void setBounds(int, int, int, int);
+    method public void setBounds(@NonNull android.graphics.Rect);
+    method public final void setCallback(@Nullable android.graphics.drawable.Drawable.Callback);
+    method public void setChangingConfigurations(int);
+    method public abstract void setColorFilter(@Nullable android.graphics.ColorFilter);
+    method @Deprecated public void setColorFilter(@ColorInt int, @NonNull android.graphics.PorterDuff.Mode);
+    method @Deprecated public void setDither(boolean);
+    method public void setFilterBitmap(boolean);
+    method public void setHotspot(float, float);
+    method public void setHotspotBounds(int, int, int, int);
+    method public final boolean setLayoutDirection(int);
+    method public final boolean setLevel(@IntRange(from=0, to=10000) int);
+    method public boolean setState(@NonNull int[]);
+    method public void setTint(@ColorInt int);
+    method public void setTintBlendMode(@Nullable android.graphics.BlendMode);
+    method public void setTintList(@Nullable android.content.res.ColorStateList);
+    method public void setTintMode(@Nullable android.graphics.PorterDuff.Mode);
+    method public boolean setVisible(boolean, boolean);
+    method public void unscheduleSelf(@NonNull Runnable);
+  }
+
+  public static interface Drawable.Callback {
+    method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
+    method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
+    method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
+  }
+
+  public abstract static class Drawable.ConstantState {
+    ctor public Drawable.ConstantState();
+    method public boolean canApplyTheme();
+    method public abstract int getChangingConfigurations();
+    method @NonNull public abstract android.graphics.drawable.Drawable newDrawable();
+    method @NonNull public android.graphics.drawable.Drawable newDrawable(@Nullable android.content.res.Resources);
+    method @NonNull public android.graphics.drawable.Drawable newDrawable(@Nullable android.content.res.Resources, @Nullable android.content.res.Resources.Theme);
+  }
+
+  public class DrawableContainer extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
+    ctor public DrawableContainer();
+    method public void draw(android.graphics.Canvas);
+    method public int getOpacity();
+    method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
+    method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
+    method public boolean selectDrawable(int);
+    method public void setAlpha(int);
+    method public void setColorFilter(android.graphics.ColorFilter);
+    method protected void setConstantState(android.graphics.drawable.DrawableContainer.DrawableContainerState);
+    method public void setDither(boolean);
+    method public void setEnterFadeDuration(int);
+    method public void setExitFadeDuration(int);
+    method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
+  }
+
+  public abstract static class DrawableContainer.DrawableContainerState extends android.graphics.drawable.Drawable.ConstantState {
+    method public final int addChild(android.graphics.drawable.Drawable);
+    method public boolean canConstantState();
+    method protected void computeConstantSize();
+    method public int getChangingConfigurations();
+    method public final android.graphics.drawable.Drawable getChild(int);
+    method public final int getChildCount();
+    method public final android.graphics.drawable.Drawable[] getChildren();
+    method public final int getConstantHeight();
+    method public final int getConstantMinimumHeight();
+    method public final int getConstantMinimumWidth();
+    method public final android.graphics.Rect getConstantPadding();
+    method public final int getConstantWidth();
+    method public final int getEnterFadeDuration();
+    method public final int getExitFadeDuration();
+    method public final int getOpacity();
+    method public void growArray(int, int);
+    method public final boolean isConstantSize();
+    method public final boolean isStateful();
+    method public final void setConstantSize(boolean);
+    method public final void setEnterFadeDuration(int);
+    method public final void setExitFadeDuration(int);
+    method public final void setVariablePadding(boolean);
+  }
+
+  public abstract class DrawableWrapper extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
+    ctor public DrawableWrapper(@Nullable android.graphics.drawable.Drawable);
+    method public void draw(@NonNull android.graphics.Canvas);
+    method @Nullable public android.graphics.drawable.Drawable getDrawable();
+    method public int getOpacity();
+    method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
+    method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
+    method public void setAlpha(int);
+    method public void setColorFilter(@Nullable android.graphics.ColorFilter);
+    method public void setDrawable(@Nullable android.graphics.drawable.Drawable);
+    method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
+  }
+
+  public class GradientDrawable extends android.graphics.drawable.Drawable {
+    ctor public GradientDrawable();
+    ctor public GradientDrawable(android.graphics.drawable.GradientDrawable.Orientation, @ColorInt int[]);
+    method public void draw(android.graphics.Canvas);
+    method @Nullable public android.content.res.ColorStateList getColor();
+    method @Nullable public int[] getColors();
+    method @Nullable public float[] getCornerRadii();
+    method public float getCornerRadius();
+    method public float getGradientCenterX();
+    method public float getGradientCenterY();
+    method public float getGradientRadius();
+    method public int getGradientType();
+    method @Px public int getInnerRadius();
+    method public float getInnerRadiusRatio();
+    method public int getOpacity();
+    method public android.graphics.drawable.GradientDrawable.Orientation getOrientation();
+    method public int getShape();
+    method @Px public int getThickness();
+    method public float getThicknessRatio();
+    method public boolean getUseLevel();
+    method public void setAlpha(int);
+    method public void setColor(@ColorInt int);
+    method public void setColor(@Nullable android.content.res.ColorStateList);
+    method public void setColorFilter(@Nullable android.graphics.ColorFilter);
+    method public void setColors(@ColorInt @Nullable int[]);
+    method public void setColors(@ColorInt @Nullable int[], @Nullable float[]);
+    method public void setCornerRadii(@Nullable float[]);
+    method public void setCornerRadius(float);
+    method public void setDither(boolean);
+    method public void setGradientCenter(float, float);
+    method public void setGradientRadius(float);
+    method public void setGradientType(int);
+    method public void setInnerRadius(@Px int);
+    method public void setInnerRadiusRatio(@FloatRange(from=0.0f, fromInclusive=false) float);
+    method public void setOrientation(android.graphics.drawable.GradientDrawable.Orientation);
+    method public void setPadding(@Px int, @Px int, @Px int, @Px int);
+    method public void setShape(int);
+    method public void setSize(int, int);
+    method public void setStroke(int, @ColorInt int);
+    method public void setStroke(int, android.content.res.ColorStateList);
+    method public void setStroke(int, @ColorInt int, float, float);
+    method public void setStroke(int, android.content.res.ColorStateList, float, float);
+    method public void setThickness(@Px int);
+    method public void setThicknessRatio(@FloatRange(from=0.0f, fromInclusive=false) float);
+    method public void setUseLevel(boolean);
+    field public static final int LINE = 2; // 0x2
+    field public static final int LINEAR_GRADIENT = 0; // 0x0
+    field public static final int OVAL = 1; // 0x1
+    field public static final int RADIAL_GRADIENT = 1; // 0x1
+    field public static final int RECTANGLE = 0; // 0x0
+    field public static final int RING = 3; // 0x3
+    field public static final int SWEEP_GRADIENT = 2; // 0x2
+  }
+
+  public enum GradientDrawable.Orientation {
+    enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation BL_TR;
+    enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation BOTTOM_TOP;
+    enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation BR_TL;
+    enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation LEFT_RIGHT;
+    enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation RIGHT_LEFT;
+    enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation TL_BR;
+    enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation TOP_BOTTOM;
+    enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation TR_BL;
+  }
+
+  public final class Icon implements android.os.Parcelable {
+    method public static android.graphics.drawable.Icon createWithAdaptiveBitmap(android.graphics.Bitmap);
+    method @NonNull public static android.graphics.drawable.Icon createWithAdaptiveBitmapContentUri(@NonNull String);
+    method @NonNull public static android.graphics.drawable.Icon createWithAdaptiveBitmapContentUri(@NonNull android.net.Uri);
+    method public static android.graphics.drawable.Icon createWithBitmap(android.graphics.Bitmap);
+    method public static android.graphics.drawable.Icon createWithContentUri(String);
+    method public static android.graphics.drawable.Icon createWithContentUri(android.net.Uri);
+    method public static android.graphics.drawable.Icon createWithData(byte[], int, int);
+    method public static android.graphics.drawable.Icon createWithFilePath(String);
+    method public static android.graphics.drawable.Icon createWithResource(android.content.Context, @DrawableRes int);
+    method public static android.graphics.drawable.Icon createWithResource(String, @DrawableRes int);
+    method public int describeContents();
+    method @IdRes public int getResId();
+    method @NonNull public String getResPackage();
+    method public int getType();
+    method @NonNull public android.net.Uri getUri();
+    method public android.graphics.drawable.Drawable loadDrawable(android.content.Context);
+    method public void loadDrawableAsync(android.content.Context, android.os.Message);
+    method public void loadDrawableAsync(android.content.Context, android.graphics.drawable.Icon.OnDrawableLoadedListener, android.os.Handler);
+    method public android.graphics.drawable.Icon setTint(@ColorInt int);
+    method @NonNull public android.graphics.drawable.Icon setTintBlendMode(@NonNull android.graphics.BlendMode);
+    method public android.graphics.drawable.Icon setTintList(android.content.res.ColorStateList);
+    method @NonNull public android.graphics.drawable.Icon setTintMode(@NonNull android.graphics.PorterDuff.Mode);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.graphics.drawable.Icon> CREATOR;
+    field public static final int TYPE_ADAPTIVE_BITMAP = 5; // 0x5
+    field public static final int TYPE_BITMAP = 1; // 0x1
+    field public static final int TYPE_DATA = 3; // 0x3
+    field public static final int TYPE_RESOURCE = 2; // 0x2
+    field public static final int TYPE_URI = 4; // 0x4
+    field public static final int TYPE_URI_ADAPTIVE_BITMAP = 6; // 0x6
+  }
+
+  public static interface Icon.OnDrawableLoadedListener {
+    method public void onDrawableLoaded(android.graphics.drawable.Drawable);
+  }
+
+  public class InsetDrawable extends android.graphics.drawable.DrawableWrapper {
+    ctor public InsetDrawable(@Nullable android.graphics.drawable.Drawable, int);
+    ctor public InsetDrawable(@Nullable android.graphics.drawable.Drawable, float);
+    ctor public InsetDrawable(@Nullable android.graphics.drawable.Drawable, int, int, int, int);
+    ctor public InsetDrawable(@Nullable android.graphics.drawable.Drawable, float, float, float, float);
+  }
+
+  public class LayerDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
+    ctor public LayerDrawable(@NonNull android.graphics.drawable.Drawable[]);
+    method public int addLayer(android.graphics.drawable.Drawable);
+    method public void draw(android.graphics.Canvas);
+    method public android.graphics.drawable.Drawable findDrawableByLayerId(int);
+    method public int findIndexByLayerId(int);
+    method public int getBottomPadding();
+    method public android.graphics.drawable.Drawable getDrawable(int);
+    method public int getEndPadding();
+    method public int getId(int);
+    method public int getLayerGravity(int);
+    method public int getLayerHeight(int);
+    method public int getLayerInsetBottom(int);
+    method public int getLayerInsetEnd(int);
+    method public int getLayerInsetLeft(int);
+    method public int getLayerInsetRight(int);
+    method public int getLayerInsetStart(int);
+    method public int getLayerInsetTop(int);
+    method public int getLayerWidth(int);
+    method public int getLeftPadding();
+    method public int getNumberOfLayers();
+    method public int getOpacity();
+    method public int getPaddingMode();
+    method public int getRightPadding();
+    method public int getStartPadding();
+    method public int getTopPadding();
+    method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
+    method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
+    method public void setAlpha(int);
+    method public void setColorFilter(android.graphics.ColorFilter);
+    method public void setDither(boolean);
+    method public void setDrawable(int, android.graphics.drawable.Drawable);
+    method public boolean setDrawableByLayerId(int, android.graphics.drawable.Drawable);
+    method public void setId(int, int);
+    method public void setLayerGravity(int, int);
+    method public void setLayerHeight(int, int);
+    method public void setLayerInset(int, int, int, int, int);
+    method public void setLayerInsetBottom(int, int);
+    method public void setLayerInsetEnd(int, int);
+    method public void setLayerInsetLeft(int, int);
+    method public void setLayerInsetRelative(int, int, int, int, int);
+    method public void setLayerInsetRight(int, int);
+    method public void setLayerInsetStart(int, int);
+    method public void setLayerInsetTop(int, int);
+    method public void setLayerSize(int, int, int);
+    method public void setLayerWidth(int, int);
+    method public void setOpacity(int);
+    method public void setPadding(int, int, int, int);
+    method public void setPaddingMode(int);
+    method public void setPaddingRelative(int, int, int, int);
+    method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
+    field public static final int INSET_UNDEFINED = -2147483648; // 0x80000000
+    field public static final int PADDING_MODE_NEST = 0; // 0x0
+    field public static final int PADDING_MODE_STACK = 1; // 0x1
+  }
+
+  public class LevelListDrawable extends android.graphics.drawable.DrawableContainer {
+    ctor public LevelListDrawable();
+    method public void addLevel(int, int, android.graphics.drawable.Drawable);
+  }
+
+  public class NinePatchDrawable extends android.graphics.drawable.Drawable {
+    ctor @Deprecated public NinePatchDrawable(android.graphics.Bitmap, byte[], android.graphics.Rect, String);
+    ctor public NinePatchDrawable(android.content.res.Resources, android.graphics.Bitmap, byte[], android.graphics.Rect, String);
+    ctor @Deprecated public NinePatchDrawable(@NonNull android.graphics.NinePatch);
+    ctor public NinePatchDrawable(@Nullable android.content.res.Resources, @NonNull android.graphics.NinePatch);
+    method public void draw(android.graphics.Canvas);
+    method public int getOpacity();
+    method @NonNull public android.graphics.Paint getPaint();
+    method public void setAlpha(int);
+    method public void setColorFilter(@Nullable android.graphics.ColorFilter);
+    method public void setDither(boolean);
+    method public void setTargetDensity(@NonNull android.graphics.Canvas);
+    method public void setTargetDensity(@NonNull android.util.DisplayMetrics);
+    method public void setTargetDensity(int);
+  }
+
+  public class PaintDrawable extends android.graphics.drawable.ShapeDrawable {
+    ctor public PaintDrawable();
+    ctor public PaintDrawable(int);
+    method public void setCornerRadii(float[]);
+    method public void setCornerRadius(float);
+  }
+
+  public class PictureDrawable extends android.graphics.drawable.Drawable {
+    ctor public PictureDrawable(android.graphics.Picture);
+    method public void draw(android.graphics.Canvas);
+    method public int getOpacity();
+    method public android.graphics.Picture getPicture();
+    method public void setAlpha(int);
+    method public void setColorFilter(android.graphics.ColorFilter);
+    method public void setPicture(android.graphics.Picture);
+  }
+
+  public class RippleDrawable extends android.graphics.drawable.LayerDrawable {
+    ctor public RippleDrawable(@NonNull android.content.res.ColorStateList, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable);
+    method public int getRadius();
+    method public void setColor(android.content.res.ColorStateList);
+    method public void setRadius(int);
+    field public static final int RADIUS_AUTO = -1; // 0xffffffff
+  }
+
+  public class RotateDrawable extends android.graphics.drawable.DrawableWrapper {
+    ctor public RotateDrawable();
+    method public float getFromDegrees();
+    method public float getPivotX();
+    method public float getPivotY();
+    method public float getToDegrees();
+    method public boolean isPivotXRelative();
+    method public boolean isPivotYRelative();
+    method public void setFromDegrees(float);
+    method public void setPivotX(float);
+    method public void setPivotXRelative(boolean);
+    method public void setPivotY(float);
+    method public void setPivotYRelative(boolean);
+    method public void setToDegrees(float);
+  }
+
+  public class ScaleDrawable extends android.graphics.drawable.DrawableWrapper {
+    ctor public ScaleDrawable(android.graphics.drawable.Drawable, int, float, float);
+  }
+
+  public class ShapeDrawable extends android.graphics.drawable.Drawable {
+    ctor public ShapeDrawable();
+    ctor public ShapeDrawable(android.graphics.drawable.shapes.Shape);
+    method public void draw(android.graphics.Canvas);
+    method public int getOpacity();
+    method public android.graphics.Paint getPaint();
+    method public android.graphics.drawable.ShapeDrawable.ShaderFactory getShaderFactory();
+    method public android.graphics.drawable.shapes.Shape getShape();
+    method protected boolean inflateTag(String, android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet);
+    method protected void onDraw(android.graphics.drawable.shapes.Shape, android.graphics.Canvas, android.graphics.Paint);
+    method public void setAlpha(int);
+    method public void setColorFilter(android.graphics.ColorFilter);
+    method public void setDither(boolean);
+    method public void setIntrinsicHeight(int);
+    method public void setIntrinsicWidth(int);
+    method public void setPadding(int, int, int, int);
+    method public void setPadding(android.graphics.Rect);
+    method public void setShaderFactory(android.graphics.drawable.ShapeDrawable.ShaderFactory);
+    method public void setShape(android.graphics.drawable.shapes.Shape);
+  }
+
+  public abstract static class ShapeDrawable.ShaderFactory {
+    ctor public ShapeDrawable.ShaderFactory();
+    method public abstract android.graphics.Shader resize(int, int);
+  }
+
+  public class StateListDrawable extends android.graphics.drawable.DrawableContainer {
+    ctor public StateListDrawable();
+    method public void addState(int[], android.graphics.drawable.Drawable);
+    method public int findStateDrawableIndex(@NonNull int[]);
+    method public int getStateCount();
+    method @Nullable public android.graphics.drawable.Drawable getStateDrawable(int);
+    method @NonNull public int[] getStateSet(int);
+  }
+
+  public class TransitionDrawable extends android.graphics.drawable.LayerDrawable implements android.graphics.drawable.Drawable.Callback {
+    ctor public TransitionDrawable(android.graphics.drawable.Drawable[]);
+    method public boolean isCrossFadeEnabled();
+    method public void resetTransition();
+    method public void reverseTransition(int);
+    method public void setCrossFadeEnabled(boolean);
+    method public void startTransition(int);
+  }
+
+  public class VectorDrawable extends android.graphics.drawable.Drawable {
+    ctor public VectorDrawable();
+    method public void draw(android.graphics.Canvas);
+    method public int getOpacity();
+    method public void setAlpha(int);
+    method public void setColorFilter(android.graphics.ColorFilter);
+  }
+
+}
+
+package android.graphics.drawable.shapes {
+
+  public class ArcShape extends android.graphics.drawable.shapes.RectShape {
+    ctor public ArcShape(float, float);
+    method public android.graphics.drawable.shapes.ArcShape clone() throws java.lang.CloneNotSupportedException;
+    method public final float getStartAngle();
+    method public final float getSweepAngle();
+  }
+
+  public class OvalShape extends android.graphics.drawable.shapes.RectShape {
+    ctor public OvalShape();
+    method public android.graphics.drawable.shapes.OvalShape clone() throws java.lang.CloneNotSupportedException;
+  }
+
+  public class PathShape extends android.graphics.drawable.shapes.Shape {
+    ctor public PathShape(@NonNull android.graphics.Path, float, float);
+    method public android.graphics.drawable.shapes.PathShape clone() throws java.lang.CloneNotSupportedException;
+    method public void draw(android.graphics.Canvas, android.graphics.Paint);
+  }
+
+  public class RectShape extends android.graphics.drawable.shapes.Shape {
+    ctor public RectShape();
+    method public android.graphics.drawable.shapes.RectShape clone() throws java.lang.CloneNotSupportedException;
+    method public void draw(android.graphics.Canvas, android.graphics.Paint);
+    method protected final android.graphics.RectF rect();
+  }
+
+  public class RoundRectShape extends android.graphics.drawable.shapes.RectShape {
+    ctor public RoundRectShape(@Nullable float[], @Nullable android.graphics.RectF, @Nullable float[]);
+    method public android.graphics.drawable.shapes.RoundRectShape clone() throws java.lang.CloneNotSupportedException;
+  }
+
+  public abstract class Shape implements java.lang.Cloneable {
+    ctor public Shape();
+    method public android.graphics.drawable.shapes.Shape clone() throws java.lang.CloneNotSupportedException;
+    method public abstract void draw(android.graphics.Canvas, android.graphics.Paint);
+    method public final float getHeight();
+    method public void getOutline(@NonNull android.graphics.Outline);
+    method public final float getWidth();
+    method public boolean hasAlpha();
+    method protected void onResize(float, float);
+    method public final void resize(float, float);
+  }
+
+}
+
+package android.graphics.fonts {
+
+  public final class Font {
+    method @Nullable public android.graphics.fonts.FontVariationAxis[] getAxes();
+    method @NonNull public java.nio.ByteBuffer getBuffer();
+    method @Nullable public java.io.File getFile();
+    method @NonNull public android.os.LocaleList getLocaleList();
+    method @NonNull public android.graphics.fonts.FontStyle getStyle();
+    method @IntRange(from=0) public int getTtcIndex();
+  }
+
+  public static final class Font.Builder {
+    ctor public Font.Builder(@NonNull java.nio.ByteBuffer);
+    ctor public Font.Builder(@NonNull java.io.File);
+    ctor public Font.Builder(@NonNull android.os.ParcelFileDescriptor);
+    ctor public Font.Builder(@NonNull android.os.ParcelFileDescriptor, @IntRange(from=0) long, @IntRange(from=0xffffffff) long);
+    ctor public Font.Builder(@NonNull android.content.res.AssetManager, @NonNull String);
+    ctor public Font.Builder(@NonNull android.content.res.Resources, int);
+    method @NonNull public android.graphics.fonts.Font build() throws java.io.IOException;
+    method @NonNull public android.graphics.fonts.Font.Builder setFontVariationSettings(@Nullable String);
+    method @NonNull public android.graphics.fonts.Font.Builder setFontVariationSettings(@Nullable android.graphics.fonts.FontVariationAxis[]);
+    method @NonNull public android.graphics.fonts.Font.Builder setSlant(int);
+    method @NonNull public android.graphics.fonts.Font.Builder setTtcIndex(@IntRange(from=0) int);
+    method @NonNull public android.graphics.fonts.Font.Builder setWeight(@IntRange(from=android.graphics.fonts.FontStyle.FONT_WEIGHT_MIN, to=android.graphics.fonts.FontStyle.FONT_WEIGHT_MAX) int);
+  }
+
+  public final class FontFamily {
+    method @NonNull public android.graphics.fonts.Font getFont(@IntRange(from=0) int);
+    method @IntRange(from=1) public int getSize();
+  }
+
+  public static final class FontFamily.Builder {
+    ctor public FontFamily.Builder(@NonNull android.graphics.fonts.Font);
+    method @NonNull public android.graphics.fonts.FontFamily.Builder addFont(@NonNull android.graphics.fonts.Font);
+    method @NonNull public android.graphics.fonts.FontFamily build();
+  }
+
+  public final class FontStyle {
+    ctor public FontStyle();
+    ctor public FontStyle(int, int);
+    method public int getSlant();
+    method @IntRange(from=0, to=1000) public int getWeight();
+    field public static final int FONT_SLANT_ITALIC = 1; // 0x1
+    field public static final int FONT_SLANT_UPRIGHT = 0; // 0x0
+    field public static final int FONT_WEIGHT_BLACK = 900; // 0x384
+    field public static final int FONT_WEIGHT_BOLD = 700; // 0x2bc
+    field public static final int FONT_WEIGHT_EXTRA_BOLD = 800; // 0x320
+    field public static final int FONT_WEIGHT_EXTRA_LIGHT = 200; // 0xc8
+    field public static final int FONT_WEIGHT_LIGHT = 300; // 0x12c
+    field public static final int FONT_WEIGHT_MAX = 1000; // 0x3e8
+    field public static final int FONT_WEIGHT_MEDIUM = 500; // 0x1f4
+    field public static final int FONT_WEIGHT_MIN = 1; // 0x1
+    field public static final int FONT_WEIGHT_NORMAL = 400; // 0x190
+    field public static final int FONT_WEIGHT_SEMI_BOLD = 600; // 0x258
+    field public static final int FONT_WEIGHT_THIN = 100; // 0x64
+  }
+
+  public final class FontVariationAxis {
+    ctor public FontVariationAxis(@NonNull String, float);
+    method @Nullable public static android.graphics.fonts.FontVariationAxis[] fromFontVariationSettings(@Nullable String);
+    method public float getStyleValue();
+    method public String getTag();
+    method @NonNull public static String toFontVariationSettings(@Nullable android.graphics.fonts.FontVariationAxis[]);
+  }
+
+  public final class SystemFonts {
+    method @NonNull public static java.util.Set<android.graphics.fonts.Font> getAvailableFonts();
+  }
+
+}
+
+package android.graphics.pdf {
+
+  public class PdfDocument {
+    ctor public PdfDocument();
+    method public void close();
+    method public void finishPage(android.graphics.pdf.PdfDocument.Page);
+    method public java.util.List<android.graphics.pdf.PdfDocument.PageInfo> getPages();
+    method public android.graphics.pdf.PdfDocument.Page startPage(android.graphics.pdf.PdfDocument.PageInfo);
+    method public void writeTo(java.io.OutputStream) throws java.io.IOException;
+  }
+
+  public static final class PdfDocument.Page {
+    method public android.graphics.Canvas getCanvas();
+    method public android.graphics.pdf.PdfDocument.PageInfo getInfo();
+  }
+
+  public static final class PdfDocument.PageInfo {
+    method public android.graphics.Rect getContentRect();
+    method public int getPageHeight();
+    method public int getPageNumber();
+    method public int getPageWidth();
+  }
+
+  public static final class PdfDocument.PageInfo.Builder {
+    ctor public PdfDocument.PageInfo.Builder(int, int, int);
+    method public android.graphics.pdf.PdfDocument.PageInfo create();
+    method public android.graphics.pdf.PdfDocument.PageInfo.Builder setContentRect(android.graphics.Rect);
+  }
+
+  public final class PdfRenderer implements java.lang.AutoCloseable {
+    ctor public PdfRenderer(@NonNull android.os.ParcelFileDescriptor) throws java.io.IOException;
+    method public void close();
+    method public int getPageCount();
+    method public android.graphics.pdf.PdfRenderer.Page openPage(int);
+    method public boolean shouldScaleForPrinting();
+  }
+
+  public final class PdfRenderer.Page implements java.lang.AutoCloseable {
+    method public void close();
+    method public int getHeight();
+    method public int getIndex();
+    method public int getWidth();
+    method public void render(@NonNull android.graphics.Bitmap, @Nullable android.graphics.Rect, @Nullable android.graphics.Matrix, int);
+    field public static final int RENDER_MODE_FOR_DISPLAY = 1; // 0x1
+    field public static final int RENDER_MODE_FOR_PRINT = 2; // 0x2
+  }
+
+}
+
+package android.graphics.text {
+
+  public class LineBreaker {
+    method @NonNull public android.graphics.text.LineBreaker.Result computeLineBreaks(@NonNull android.graphics.text.MeasuredText, @NonNull android.graphics.text.LineBreaker.ParagraphConstraints, @IntRange(from=0) int);
+    field public static final int BREAK_STRATEGY_BALANCED = 2; // 0x2
+    field public static final int BREAK_STRATEGY_HIGH_QUALITY = 1; // 0x1
+    field public static final int BREAK_STRATEGY_SIMPLE = 0; // 0x0
+    field public static final int HYPHENATION_FREQUENCY_FULL = 2; // 0x2
+    field public static final int HYPHENATION_FREQUENCY_NONE = 0; // 0x0
+    field public static final int HYPHENATION_FREQUENCY_NORMAL = 1; // 0x1
+    field public static final int JUSTIFICATION_MODE_INTER_WORD = 1; // 0x1
+    field public static final int JUSTIFICATION_MODE_NONE = 0; // 0x0
+  }
+
+  public static final class LineBreaker.Builder {
+    ctor public LineBreaker.Builder();
+    method @NonNull public android.graphics.text.LineBreaker build();
+    method @NonNull public android.graphics.text.LineBreaker.Builder setBreakStrategy(int);
+    method @NonNull public android.graphics.text.LineBreaker.Builder setHyphenationFrequency(int);
+    method @NonNull public android.graphics.text.LineBreaker.Builder setIndents(@Nullable int[]);
+    method @NonNull public android.graphics.text.LineBreaker.Builder setJustificationMode(int);
+  }
+
+  public static class LineBreaker.ParagraphConstraints {
+    ctor public LineBreaker.ParagraphConstraints();
+    method @FloatRange(from=0) @Px public float getDefaultTabStop();
+    method @FloatRange(from=0.0f) @Px public float getFirstWidth();
+    method @IntRange(from=0) @Px public int getFirstWidthLineCount();
+    method @Nullable public float[] getTabStops();
+    method @FloatRange(from=0.0f) @Px public float getWidth();
+    method public void setIndent(@FloatRange(from=0.0f) @Px float, @IntRange(from=0) @Px int);
+    method public void setTabStops(@Nullable float[], @FloatRange(from=0) @Px float);
+    method public void setWidth(@FloatRange(from=0.0f) @Px float);
+  }
+
+  public static class LineBreaker.Result {
+    method public int getEndLineHyphenEdit(int);
+    method @Px public float getLineAscent(@IntRange(from=0) int);
+    method @IntRange(from=0) public int getLineBreakOffset(@IntRange(from=0) int);
+    method @IntRange(from=0) public int getLineCount();
+    method @Px public float getLineDescent(@IntRange(from=0) int);
+    method @Px public float getLineWidth(@IntRange(from=0) int);
+    method public int getStartLineHyphenEdit(int);
+    method public boolean hasLineTab(int);
+  }
+
+  public class MeasuredText {
+    method public void getBounds(@IntRange(from=0) int, @IntRange(from=0) int, @NonNull android.graphics.Rect);
+    method @FloatRange(from=0.0f) @Px public float getCharWidthAt(@IntRange(from=0) int);
+    method @FloatRange(from=0.0) @Px public float getWidth(@IntRange(from=0) int, @IntRange(from=0) int);
+  }
+
+  public static final class MeasuredText.Builder {
+    ctor public MeasuredText.Builder(@NonNull char[]);
+    ctor public MeasuredText.Builder(@NonNull android.graphics.text.MeasuredText);
+    method @NonNull public android.graphics.text.MeasuredText.Builder appendReplacementRun(@NonNull android.graphics.Paint, @IntRange(from=0) int, @FloatRange(from=0) @Px float);
+    method @NonNull public android.graphics.text.MeasuredText.Builder appendStyleRun(@NonNull android.graphics.Paint, @IntRange(from=0) int, boolean);
+    method @NonNull public android.graphics.text.MeasuredText build();
+    method @NonNull public android.graphics.text.MeasuredText.Builder setComputeHyphenation(boolean);
+    method @NonNull public android.graphics.text.MeasuredText.Builder setComputeLayout(boolean);
+  }
+
+}
+
+package android.hardware {
+
+  @Deprecated public class Camera {
+    method @Deprecated public final void addCallbackBuffer(byte[]);
+    method @Deprecated public final void autoFocus(android.hardware.Camera.AutoFocusCallback);
+    method @Deprecated public final void cancelAutoFocus();
+    method @Deprecated public final boolean enableShutterSound(boolean);
+    method @Deprecated protected void finalize();
+    method @Deprecated public static void getCameraInfo(int, android.hardware.Camera.CameraInfo);
+    method @Deprecated public static int getNumberOfCameras();
+    method @Deprecated public android.hardware.Camera.Parameters getParameters();
+    method @Deprecated public final void lock();
+    method @Deprecated public static android.hardware.Camera open(int);
+    method @Deprecated public static android.hardware.Camera open();
+    method @Deprecated public final void reconnect() throws java.io.IOException;
+    method @Deprecated public final void release();
+    method @Deprecated public void setAutoFocusMoveCallback(android.hardware.Camera.AutoFocusMoveCallback);
+    method @Deprecated public final void setDisplayOrientation(int);
+    method @Deprecated public final void setErrorCallback(android.hardware.Camera.ErrorCallback);
+    method @Deprecated public final void setFaceDetectionListener(android.hardware.Camera.FaceDetectionListener);
+    method @Deprecated public final void setOneShotPreviewCallback(android.hardware.Camera.PreviewCallback);
+    method @Deprecated public void setParameters(android.hardware.Camera.Parameters);
+    method @Deprecated public final void setPreviewCallback(android.hardware.Camera.PreviewCallback);
+    method @Deprecated public final void setPreviewCallbackWithBuffer(android.hardware.Camera.PreviewCallback);
+    method @Deprecated public final void setPreviewDisplay(android.view.SurfaceHolder) throws java.io.IOException;
+    method @Deprecated public final void setPreviewTexture(android.graphics.SurfaceTexture) throws java.io.IOException;
+    method @Deprecated public final void setZoomChangeListener(android.hardware.Camera.OnZoomChangeListener);
+    method @Deprecated public final void startFaceDetection();
+    method @Deprecated public final void startPreview();
+    method @Deprecated public final void startSmoothZoom(int);
+    method @Deprecated public final void stopFaceDetection();
+    method @Deprecated public final void stopPreview();
+    method @Deprecated public final void stopSmoothZoom();
+    method @Deprecated public final void takePicture(android.hardware.Camera.ShutterCallback, android.hardware.Camera.PictureCallback, android.hardware.Camera.PictureCallback);
+    method @Deprecated public final void takePicture(android.hardware.Camera.ShutterCallback, android.hardware.Camera.PictureCallback, android.hardware.Camera.PictureCallback, android.hardware.Camera.PictureCallback);
+    method @Deprecated public final void unlock();
+    field @Deprecated public static final String ACTION_NEW_PICTURE = "android.hardware.action.NEW_PICTURE";
+    field @Deprecated public static final String ACTION_NEW_VIDEO = "android.hardware.action.NEW_VIDEO";
+    field @Deprecated public static final int CAMERA_ERROR_EVICTED = 2; // 0x2
+    field @Deprecated public static final int CAMERA_ERROR_SERVER_DIED = 100; // 0x64
+    field @Deprecated public static final int CAMERA_ERROR_UNKNOWN = 1; // 0x1
+  }
+
+  @Deprecated public static class Camera.Area {
+    ctor @Deprecated public Camera.Area(android.graphics.Rect, int);
+    field @Deprecated public android.graphics.Rect rect;
+    field @Deprecated public int weight;
+  }
+
+  @Deprecated public static interface Camera.AutoFocusCallback {
+    method @Deprecated public void onAutoFocus(boolean, android.hardware.Camera);
+  }
+
+  @Deprecated public static interface Camera.AutoFocusMoveCallback {
+    method @Deprecated public void onAutoFocusMoving(boolean, android.hardware.Camera);
+  }
+
+  @Deprecated public static class Camera.CameraInfo {
+    ctor @Deprecated public Camera.CameraInfo();
+    field @Deprecated public static final int CAMERA_FACING_BACK = 0; // 0x0
+    field @Deprecated public static final int CAMERA_FACING_FRONT = 1; // 0x1
+    field @Deprecated public boolean canDisableShutterSound;
+    field @Deprecated public int facing;
+    field @Deprecated public int orientation;
+  }
+
+  @Deprecated public static interface Camera.ErrorCallback {
+    method @Deprecated public void onError(int, android.hardware.Camera);
+  }
+
+  @Deprecated public static class Camera.Face {
+    ctor @Deprecated public Camera.Face();
+    field @Deprecated public int id;
+    field @Deprecated public android.graphics.Point leftEye;
+    field @Deprecated public android.graphics.Point mouth;
+    field @Deprecated public android.graphics.Rect rect;
+    field @Deprecated public android.graphics.Point rightEye;
+    field @Deprecated public int score;
+  }
+
+  @Deprecated public static interface Camera.FaceDetectionListener {
+    method @Deprecated public void onFaceDetection(android.hardware.Camera.Face[], android.hardware.Camera);
+  }
+
+  @Deprecated public static interface Camera.OnZoomChangeListener {
+    method @Deprecated public void onZoomChange(int, boolean, android.hardware.Camera);
+  }
+
+  @Deprecated public class Camera.Parameters {
+    method @Deprecated public String flatten();
+    method @Deprecated public String get(String);
+    method @Deprecated public String getAntibanding();
+    method @Deprecated public boolean getAutoExposureLock();
+    method @Deprecated public boolean getAutoWhiteBalanceLock();
+    method @Deprecated public String getColorEffect();
+    method @Deprecated public int getExposureCompensation();
+    method @Deprecated public float getExposureCompensationStep();
+    method @Deprecated public String getFlashMode();
+    method @Deprecated public float getFocalLength();
+    method @Deprecated public java.util.List<android.hardware.Camera.Area> getFocusAreas();
+    method @Deprecated public void getFocusDistances(float[]);
+    method @Deprecated public String getFocusMode();
+    method @Deprecated public float getHorizontalViewAngle();
+    method @Deprecated public int getInt(String);
+    method @Deprecated public int getJpegQuality();
+    method @Deprecated public int getJpegThumbnailQuality();
+    method @Deprecated public android.hardware.Camera.Size getJpegThumbnailSize();
+    method @Deprecated public int getMaxExposureCompensation();
+    method @Deprecated public int getMaxNumDetectedFaces();
+    method @Deprecated public int getMaxNumFocusAreas();
+    method @Deprecated public int getMaxNumMeteringAreas();
+    method @Deprecated public int getMaxZoom();
+    method @Deprecated public java.util.List<android.hardware.Camera.Area> getMeteringAreas();
+    method @Deprecated public int getMinExposureCompensation();
+    method @Deprecated public int getPictureFormat();
+    method @Deprecated public android.hardware.Camera.Size getPictureSize();
+    method @Deprecated public android.hardware.Camera.Size getPreferredPreviewSizeForVideo();
+    method @Deprecated public int getPreviewFormat();
+    method @Deprecated public void getPreviewFpsRange(int[]);
+    method @Deprecated public int getPreviewFrameRate();
+    method @Deprecated public android.hardware.Camera.Size getPreviewSize();
+    method @Deprecated public String getSceneMode();
+    method @Deprecated public java.util.List<java.lang.String> getSupportedAntibanding();
+    method @Deprecated public java.util.List<java.lang.String> getSupportedColorEffects();
+    method @Deprecated public java.util.List<java.lang.String> getSupportedFlashModes();
+    method @Deprecated public java.util.List<java.lang.String> getSupportedFocusModes();
+    method @Deprecated public java.util.List<android.hardware.Camera.Size> getSupportedJpegThumbnailSizes();
+    method @Deprecated public java.util.List<java.lang.Integer> getSupportedPictureFormats();
+    method @Deprecated public java.util.List<android.hardware.Camera.Size> getSupportedPictureSizes();
+    method @Deprecated public java.util.List<java.lang.Integer> getSupportedPreviewFormats();
+    method @Deprecated public java.util.List<int[]> getSupportedPreviewFpsRange();
+    method @Deprecated public java.util.List<java.lang.Integer> getSupportedPreviewFrameRates();
+    method @Deprecated public java.util.List<android.hardware.Camera.Size> getSupportedPreviewSizes();
+    method @Deprecated public java.util.List<java.lang.String> getSupportedSceneModes();
+    method @Deprecated public java.util.List<android.hardware.Camera.Size> getSupportedVideoSizes();
+    method @Deprecated public java.util.List<java.lang.String> getSupportedWhiteBalance();
+    method @Deprecated public float getVerticalViewAngle();
+    method @Deprecated public boolean getVideoStabilization();
+    method @Deprecated public String getWhiteBalance();
+    method @Deprecated public int getZoom();
+    method @Deprecated public java.util.List<java.lang.Integer> getZoomRatios();
+    method @Deprecated public boolean isAutoExposureLockSupported();
+    method @Deprecated public boolean isAutoWhiteBalanceLockSupported();
+    method @Deprecated public boolean isSmoothZoomSupported();
+    method @Deprecated public boolean isVideoSnapshotSupported();
+    method @Deprecated public boolean isVideoStabilizationSupported();
+    method @Deprecated public boolean isZoomSupported();
+    method @Deprecated public void remove(String);
+    method @Deprecated public void removeGpsData();
+    method @Deprecated public void set(String, String);
+    method @Deprecated public void set(String, int);
+    method @Deprecated public void setAntibanding(String);
+    method @Deprecated public void setAutoExposureLock(boolean);
+    method @Deprecated public void setAutoWhiteBalanceLock(boolean);
+    method @Deprecated public void setColorEffect(String);
+    method @Deprecated public void setExposureCompensation(int);
+    method @Deprecated public void setFlashMode(String);
+    method @Deprecated public void setFocusAreas(java.util.List<android.hardware.Camera.Area>);
+    method @Deprecated public void setFocusMode(String);
+    method @Deprecated public void setGpsAltitude(double);
+    method @Deprecated public void setGpsLatitude(double);
+    method @Deprecated public void setGpsLongitude(double);
+    method @Deprecated public void setGpsProcessingMethod(String);
+    method @Deprecated public void setGpsTimestamp(long);
+    method @Deprecated public void setJpegQuality(int);
+    method @Deprecated public void setJpegThumbnailQuality(int);
+    method @Deprecated public void setJpegThumbnailSize(int, int);
+    method @Deprecated public void setMeteringAreas(java.util.List<android.hardware.Camera.Area>);
+    method @Deprecated public void setPictureFormat(int);
+    method @Deprecated public void setPictureSize(int, int);
+    method @Deprecated public void setPreviewFormat(int);
+    method @Deprecated public void setPreviewFpsRange(int, int);
+    method @Deprecated public void setPreviewFrameRate(int);
+    method @Deprecated public void setPreviewSize(int, int);
+    method @Deprecated public void setRecordingHint(boolean);
+    method @Deprecated public void setRotation(int);
+    method @Deprecated public void setSceneMode(String);
+    method @Deprecated public void setVideoStabilization(boolean);
+    method @Deprecated public void setWhiteBalance(String);
+    method @Deprecated public void setZoom(int);
+    method @Deprecated public void unflatten(String);
+    field @Deprecated public static final String ANTIBANDING_50HZ = "50hz";
+    field @Deprecated public static final String ANTIBANDING_60HZ = "60hz";
+    field @Deprecated public static final String ANTIBANDING_AUTO = "auto";
+    field @Deprecated public static final String ANTIBANDING_OFF = "off";
+    field @Deprecated public static final String EFFECT_AQUA = "aqua";
+    field @Deprecated public static final String EFFECT_BLACKBOARD = "blackboard";
+    field @Deprecated public static final String EFFECT_MONO = "mono";
+    field @Deprecated public static final String EFFECT_NEGATIVE = "negative";
+    field @Deprecated public static final String EFFECT_NONE = "none";
+    field @Deprecated public static final String EFFECT_POSTERIZE = "posterize";
+    field @Deprecated public static final String EFFECT_SEPIA = "sepia";
+    field @Deprecated public static final String EFFECT_SOLARIZE = "solarize";
+    field @Deprecated public static final String EFFECT_WHITEBOARD = "whiteboard";
+    field @Deprecated public static final String FLASH_MODE_AUTO = "auto";
+    field @Deprecated public static final String FLASH_MODE_OFF = "off";
+    field @Deprecated public static final String FLASH_MODE_ON = "on";
+    field @Deprecated public static final String FLASH_MODE_RED_EYE = "red-eye";
+    field @Deprecated public static final String FLASH_MODE_TORCH = "torch";
+    field @Deprecated public static final int FOCUS_DISTANCE_FAR_INDEX = 2; // 0x2
+    field @Deprecated public static final int FOCUS_DISTANCE_NEAR_INDEX = 0; // 0x0
+    field @Deprecated public static final int FOCUS_DISTANCE_OPTIMAL_INDEX = 1; // 0x1
+    field @Deprecated public static final String FOCUS_MODE_AUTO = "auto";
+    field @Deprecated public static final String FOCUS_MODE_CONTINUOUS_PICTURE = "continuous-picture";
+    field @Deprecated public static final String FOCUS_MODE_CONTINUOUS_VIDEO = "continuous-video";
+    field @Deprecated public static final String FOCUS_MODE_EDOF = "edof";
+    field @Deprecated public static final String FOCUS_MODE_FIXED = "fixed";
+    field @Deprecated public static final String FOCUS_MODE_INFINITY = "infinity";
+    field @Deprecated public static final String FOCUS_MODE_MACRO = "macro";
+    field @Deprecated public static final int PREVIEW_FPS_MAX_INDEX = 1; // 0x1
+    field @Deprecated public static final int PREVIEW_FPS_MIN_INDEX = 0; // 0x0
+    field @Deprecated public static final String SCENE_MODE_ACTION = "action";
+    field @Deprecated public static final String SCENE_MODE_AUTO = "auto";
+    field @Deprecated public static final String SCENE_MODE_BARCODE = "barcode";
+    field @Deprecated public static final String SCENE_MODE_BEACH = "beach";
+    field @Deprecated public static final String SCENE_MODE_CANDLELIGHT = "candlelight";
+    field @Deprecated public static final String SCENE_MODE_FIREWORKS = "fireworks";
+    field @Deprecated public static final String SCENE_MODE_HDR = "hdr";
+    field @Deprecated public static final String SCENE_MODE_LANDSCAPE = "landscape";
+    field @Deprecated public static final String SCENE_MODE_NIGHT = "night";
+    field @Deprecated public static final String SCENE_MODE_NIGHT_PORTRAIT = "night-portrait";
+    field @Deprecated public static final String SCENE_MODE_PARTY = "party";
+    field @Deprecated public static final String SCENE_MODE_PORTRAIT = "portrait";
+    field @Deprecated public static final String SCENE_MODE_SNOW = "snow";
+    field @Deprecated public static final String SCENE_MODE_SPORTS = "sports";
+    field @Deprecated public static final String SCENE_MODE_STEADYPHOTO = "steadyphoto";
+    field @Deprecated public static final String SCENE_MODE_SUNSET = "sunset";
+    field @Deprecated public static final String SCENE_MODE_THEATRE = "theatre";
+    field @Deprecated public static final String WHITE_BALANCE_AUTO = "auto";
+    field @Deprecated public static final String WHITE_BALANCE_CLOUDY_DAYLIGHT = "cloudy-daylight";
+    field @Deprecated public static final String WHITE_BALANCE_DAYLIGHT = "daylight";
+    field @Deprecated public static final String WHITE_BALANCE_FLUORESCENT = "fluorescent";
+    field @Deprecated public static final String WHITE_BALANCE_INCANDESCENT = "incandescent";
+    field @Deprecated public static final String WHITE_BALANCE_SHADE = "shade";
+    field @Deprecated public static final String WHITE_BALANCE_TWILIGHT = "twilight";
+    field @Deprecated public static final String WHITE_BALANCE_WARM_FLUORESCENT = "warm-fluorescent";
+  }
+
+  @Deprecated public static interface Camera.PictureCallback {
+    method @Deprecated public void onPictureTaken(byte[], android.hardware.Camera);
+  }
+
+  @Deprecated public static interface Camera.PreviewCallback {
+    method @Deprecated public void onPreviewFrame(byte[], android.hardware.Camera);
+  }
+
+  @Deprecated public static interface Camera.ShutterCallback {
+    method @Deprecated public void onShutter();
+  }
+
+  @Deprecated public class Camera.Size {
+    ctor @Deprecated public Camera.Size(int, int);
+    field @Deprecated public int height;
+    field @Deprecated public int width;
+  }
+
+  public final class ConsumerIrManager {
+    method public android.hardware.ConsumerIrManager.CarrierFrequencyRange[] getCarrierFrequencies();
+    method public boolean hasIrEmitter();
+    method public void transmit(int, int[]);
+  }
+
+  public final class ConsumerIrManager.CarrierFrequencyRange {
+    ctor public ConsumerIrManager.CarrierFrequencyRange(int, int);
+    method public int getMaxFrequency();
+    method public int getMinFrequency();
+  }
+
+  public class GeomagneticField {
+    ctor public GeomagneticField(float, float, float, long);
+    method public float getDeclination();
+    method public float getFieldStrength();
+    method public float getHorizontalStrength();
+    method public float getInclination();
+    method public float getX();
+    method public float getY();
+    method public float getZ();
+  }
+
+  public final class HardwareBuffer implements java.lang.AutoCloseable android.os.Parcelable {
+    method public void close();
+    method @NonNull public static android.hardware.HardwareBuffer create(@IntRange(from=1) int, @IntRange(from=1) int, int, @IntRange(from=1) int, long);
+    method public int describeContents();
+    method public int getFormat();
+    method public int getHeight();
+    method public int getLayers();
+    method public long getUsage();
+    method public int getWidth();
+    method public boolean isClosed();
+    method public static boolean isSupported(@IntRange(from=1) int, @IntRange(from=1) int, int, @IntRange(from=1) int, long);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int BLOB = 33; // 0x21
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.HardwareBuffer> CREATOR;
+    field public static final int DS_24UI8 = 50; // 0x32
+    field public static final int DS_FP32UI8 = 52; // 0x34
+    field public static final int D_16 = 48; // 0x30
+    field public static final int D_24 = 49; // 0x31
+    field public static final int D_FP32 = 51; // 0x33
+    field public static final int RGBA_1010102 = 43; // 0x2b
+    field public static final int RGBA_8888 = 1; // 0x1
+    field public static final int RGBA_FP16 = 22; // 0x16
+    field public static final int RGBX_8888 = 2; // 0x2
+    field public static final int RGB_565 = 4; // 0x4
+    field public static final int RGB_888 = 3; // 0x3
+    field public static final int S_UI8 = 53; // 0x35
+    field public static final long USAGE_CPU_READ_OFTEN = 3L; // 0x3L
+    field public static final long USAGE_CPU_READ_RARELY = 2L; // 0x2L
+    field public static final long USAGE_CPU_WRITE_OFTEN = 48L; // 0x30L
+    field public static final long USAGE_CPU_WRITE_RARELY = 32L; // 0x20L
+    field public static final long USAGE_GPU_COLOR_OUTPUT = 512L; // 0x200L
+    field public static final long USAGE_GPU_CUBE_MAP = 33554432L; // 0x2000000L
+    field public static final long USAGE_GPU_DATA_BUFFER = 16777216L; // 0x1000000L
+    field public static final long USAGE_GPU_MIPMAP_COMPLETE = 67108864L; // 0x4000000L
+    field public static final long USAGE_GPU_SAMPLED_IMAGE = 256L; // 0x100L
+    field public static final long USAGE_PROTECTED_CONTENT = 16384L; // 0x4000L
+    field public static final long USAGE_SENSOR_DIRECT_DATA = 8388608L; // 0x800000L
+    field public static final long USAGE_VIDEO_ENCODE = 65536L; // 0x10000L
+    field public static final int YCBCR_420_888 = 35; // 0x23
+  }
+
+  public final class Sensor {
+    method public int getFifoMaxEventCount();
+    method public int getFifoReservedEventCount();
+    method public int getHighestDirectReportRateLevel();
+    method public int getId();
+    method public int getMaxDelay();
+    method public float getMaximumRange();
+    method public int getMinDelay();
+    method public String getName();
+    method public float getPower();
+    method public int getReportingMode();
+    method public float getResolution();
+    method public String getStringType();
+    method public int getType();
+    method public String getVendor();
+    method public int getVersion();
+    method public boolean isAdditionalInfoSupported();
+    method public boolean isDirectChannelTypeSupported(int);
+    method public boolean isDynamicSensor();
+    method public boolean isWakeUpSensor();
+    field public static final int REPORTING_MODE_CONTINUOUS = 0; // 0x0
+    field public static final int REPORTING_MODE_ONE_SHOT = 2; // 0x2
+    field public static final int REPORTING_MODE_ON_CHANGE = 1; // 0x1
+    field public static final int REPORTING_MODE_SPECIAL_TRIGGER = 3; // 0x3
+    field public static final String STRING_TYPE_ACCELEROMETER = "android.sensor.accelerometer";
+    field public static final String STRING_TYPE_ACCELEROMETER_UNCALIBRATED = "android.sensor.accelerometer_uncalibrated";
+    field public static final String STRING_TYPE_AMBIENT_TEMPERATURE = "android.sensor.ambient_temperature";
+    field public static final String STRING_TYPE_GAME_ROTATION_VECTOR = "android.sensor.game_rotation_vector";
+    field public static final String STRING_TYPE_GEOMAGNETIC_ROTATION_VECTOR = "android.sensor.geomagnetic_rotation_vector";
+    field public static final String STRING_TYPE_GRAVITY = "android.sensor.gravity";
+    field public static final String STRING_TYPE_GYROSCOPE = "android.sensor.gyroscope";
+    field public static final String STRING_TYPE_GYROSCOPE_UNCALIBRATED = "android.sensor.gyroscope_uncalibrated";
+    field public static final String STRING_TYPE_HEART_BEAT = "android.sensor.heart_beat";
+    field public static final String STRING_TYPE_HEART_RATE = "android.sensor.heart_rate";
+    field public static final String STRING_TYPE_HINGE_ANGLE = "android.sensor.hinge_angle";
+    field public static final String STRING_TYPE_LIGHT = "android.sensor.light";
+    field public static final String STRING_TYPE_LINEAR_ACCELERATION = "android.sensor.linear_acceleration";
+    field public static final String STRING_TYPE_LOW_LATENCY_OFFBODY_DETECT = "android.sensor.low_latency_offbody_detect";
+    field public static final String STRING_TYPE_MAGNETIC_FIELD = "android.sensor.magnetic_field";
+    field public static final String STRING_TYPE_MAGNETIC_FIELD_UNCALIBRATED = "android.sensor.magnetic_field_uncalibrated";
+    field public static final String STRING_TYPE_MOTION_DETECT = "android.sensor.motion_detect";
+    field @Deprecated public static final String STRING_TYPE_ORIENTATION = "android.sensor.orientation";
+    field public static final String STRING_TYPE_POSE_6DOF = "android.sensor.pose_6dof";
+    field public static final String STRING_TYPE_PRESSURE = "android.sensor.pressure";
+    field public static final String STRING_TYPE_PROXIMITY = "android.sensor.proximity";
+    field public static final String STRING_TYPE_RELATIVE_HUMIDITY = "android.sensor.relative_humidity";
+    field public static final String STRING_TYPE_ROTATION_VECTOR = "android.sensor.rotation_vector";
+    field public static final String STRING_TYPE_SIGNIFICANT_MOTION = "android.sensor.significant_motion";
+    field public static final String STRING_TYPE_STATIONARY_DETECT = "android.sensor.stationary_detect";
+    field public static final String STRING_TYPE_STEP_COUNTER = "android.sensor.step_counter";
+    field public static final String STRING_TYPE_STEP_DETECTOR = "android.sensor.step_detector";
+    field @Deprecated public static final String STRING_TYPE_TEMPERATURE = "android.sensor.temperature";
+    field public static final int TYPE_ACCELEROMETER = 1; // 0x1
+    field public static final int TYPE_ACCELEROMETER_UNCALIBRATED = 35; // 0x23
+    field public static final int TYPE_ALL = -1; // 0xffffffff
+    field public static final int TYPE_AMBIENT_TEMPERATURE = 13; // 0xd
+    field public static final int TYPE_DEVICE_PRIVATE_BASE = 65536; // 0x10000
+    field public static final int TYPE_GAME_ROTATION_VECTOR = 15; // 0xf
+    field public static final int TYPE_GEOMAGNETIC_ROTATION_VECTOR = 20; // 0x14
+    field public static final int TYPE_GRAVITY = 9; // 0x9
+    field public static final int TYPE_GYROSCOPE = 4; // 0x4
+    field public static final int TYPE_GYROSCOPE_UNCALIBRATED = 16; // 0x10
+    field public static final int TYPE_HEART_BEAT = 31; // 0x1f
+    field public static final int TYPE_HEART_RATE = 21; // 0x15
+    field public static final int TYPE_HINGE_ANGLE = 36; // 0x24
+    field public static final int TYPE_LIGHT = 5; // 0x5
+    field public static final int TYPE_LINEAR_ACCELERATION = 10; // 0xa
+    field public static final int TYPE_LOW_LATENCY_OFFBODY_DETECT = 34; // 0x22
+    field public static final int TYPE_MAGNETIC_FIELD = 2; // 0x2
+    field public static final int TYPE_MAGNETIC_FIELD_UNCALIBRATED = 14; // 0xe
+    field public static final int TYPE_MOTION_DETECT = 30; // 0x1e
+    field @Deprecated public static final int TYPE_ORIENTATION = 3; // 0x3
+    field public static final int TYPE_POSE_6DOF = 28; // 0x1c
+    field public static final int TYPE_PRESSURE = 6; // 0x6
+    field public static final int TYPE_PROXIMITY = 8; // 0x8
+    field public static final int TYPE_RELATIVE_HUMIDITY = 12; // 0xc
+    field public static final int TYPE_ROTATION_VECTOR = 11; // 0xb
+    field public static final int TYPE_SIGNIFICANT_MOTION = 17; // 0x11
+    field public static final int TYPE_STATIONARY_DETECT = 29; // 0x1d
+    field public static final int TYPE_STEP_COUNTER = 19; // 0x13
+    field public static final int TYPE_STEP_DETECTOR = 18; // 0x12
+    field @Deprecated public static final int TYPE_TEMPERATURE = 7; // 0x7
+  }
+
+  public class SensorAdditionalInfo {
+    field public static final int TYPE_FRAME_BEGIN = 0; // 0x0
+    field public static final int TYPE_FRAME_END = 1; // 0x1
+    field public static final int TYPE_INTERNAL_TEMPERATURE = 65537; // 0x10001
+    field public static final int TYPE_SAMPLING = 65540; // 0x10004
+    field public static final int TYPE_SENSOR_PLACEMENT = 65539; // 0x10003
+    field public static final int TYPE_UNTRACKED_DELAY = 65536; // 0x10000
+    field public static final int TYPE_VEC3_CALIBRATION = 65538; // 0x10002
+    field public final float[] floatValues;
+    field public final int[] intValues;
+    field public final android.hardware.Sensor sensor;
+    field public final int serial;
+    field public final int type;
+  }
+
+  public final class SensorDirectChannel implements java.nio.channels.Channel {
+    method public void close();
+    method public int configure(android.hardware.Sensor, int);
+    method public boolean isOpen();
+    field public static final int RATE_FAST = 2; // 0x2
+    field public static final int RATE_NORMAL = 1; // 0x1
+    field public static final int RATE_STOP = 0; // 0x0
+    field public static final int RATE_VERY_FAST = 3; // 0x3
+    field public static final int TYPE_HARDWARE_BUFFER = 2; // 0x2
+    field public static final int TYPE_MEMORY_FILE = 1; // 0x1
+  }
+
+  public class SensorEvent {
+    field public int accuracy;
+    field public android.hardware.Sensor sensor;
+    field public long timestamp;
+    field public final float[] values;
+  }
+
+  public abstract class SensorEventCallback implements android.hardware.SensorEventListener2 {
+    ctor public SensorEventCallback();
+    method public void onAccuracyChanged(android.hardware.Sensor, int);
+    method public void onFlushCompleted(android.hardware.Sensor);
+    method public void onSensorAdditionalInfo(android.hardware.SensorAdditionalInfo);
+    method public void onSensorChanged(android.hardware.SensorEvent);
+  }
+
+  public interface SensorEventListener {
+    method public void onAccuracyChanged(android.hardware.Sensor, int);
+    method public void onSensorChanged(android.hardware.SensorEvent);
+  }
+
+  public interface SensorEventListener2 extends android.hardware.SensorEventListener {
+    method public void onFlushCompleted(android.hardware.Sensor);
+  }
+
+  @Deprecated public interface SensorListener {
+    method @Deprecated public void onAccuracyChanged(int, int);
+    method @Deprecated public void onSensorChanged(int, float[]);
+  }
+
+  public abstract class SensorManager {
+    method public boolean cancelTriggerSensor(android.hardware.TriggerEventListener, android.hardware.Sensor);
+    method public android.hardware.SensorDirectChannel createDirectChannel(android.os.MemoryFile);
+    method public android.hardware.SensorDirectChannel createDirectChannel(android.hardware.HardwareBuffer);
+    method public boolean flush(android.hardware.SensorEventListener);
+    method public static float getAltitude(float, float);
+    method public static void getAngleChange(float[], float[], float[]);
+    method public android.hardware.Sensor getDefaultSensor(int);
+    method public android.hardware.Sensor getDefaultSensor(int, boolean);
+    method public java.util.List<android.hardware.Sensor> getDynamicSensorList(int);
+    method public static float getInclination(float[]);
+    method public static float[] getOrientation(float[], float[]);
+    method public static void getQuaternionFromVector(float[], float[]);
+    method public static boolean getRotationMatrix(float[], float[], float[], float[]);
+    method public static void getRotationMatrixFromVector(float[], float[]);
+    method public java.util.List<android.hardware.Sensor> getSensorList(int);
+    method @Deprecated public int getSensors();
+    method public boolean isDynamicSensorDiscoverySupported();
+    method public void registerDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorCallback);
+    method public void registerDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorCallback, android.os.Handler);
+    method @Deprecated public boolean registerListener(android.hardware.SensorListener, int);
+    method @Deprecated public boolean registerListener(android.hardware.SensorListener, int, int);
+    method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int);
+    method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int, int);
+    method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int, android.os.Handler);
+    method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int, int, android.os.Handler);
+    method public static boolean remapCoordinateSystem(float[], int, int, float[]);
+    method public boolean requestTriggerSensor(android.hardware.TriggerEventListener, android.hardware.Sensor);
+    method public void unregisterDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorCallback);
+    method @Deprecated public void unregisterListener(android.hardware.SensorListener);
+    method @Deprecated public void unregisterListener(android.hardware.SensorListener, int);
+    method public void unregisterListener(android.hardware.SensorEventListener, android.hardware.Sensor);
+    method public void unregisterListener(android.hardware.SensorEventListener);
+    field public static final int AXIS_MINUS_X = 129; // 0x81
+    field public static final int AXIS_MINUS_Y = 130; // 0x82
+    field public static final int AXIS_MINUS_Z = 131; // 0x83
+    field public static final int AXIS_X = 1; // 0x1
+    field public static final int AXIS_Y = 2; // 0x2
+    field public static final int AXIS_Z = 3; // 0x3
+    field @Deprecated public static final int DATA_X = 0; // 0x0
+    field @Deprecated public static final int DATA_Y = 1; // 0x1
+    field @Deprecated public static final int DATA_Z = 2; // 0x2
+    field public static final float GRAVITY_DEATH_STAR_I = 3.5303614E-7f;
+    field public static final float GRAVITY_EARTH = 9.80665f;
+    field public static final float GRAVITY_JUPITER = 23.12f;
+    field public static final float GRAVITY_MARS = 3.71f;
+    field public static final float GRAVITY_MERCURY = 3.7f;
+    field public static final float GRAVITY_MOON = 1.6f;
+    field public static final float GRAVITY_NEPTUNE = 11.0f;
+    field public static final float GRAVITY_PLUTO = 0.6f;
+    field public static final float GRAVITY_SATURN = 8.96f;
+    field public static final float GRAVITY_SUN = 275.0f;
+    field public static final float GRAVITY_THE_ISLAND = 4.815162f;
+    field public static final float GRAVITY_URANUS = 8.69f;
+    field public static final float GRAVITY_VENUS = 8.87f;
+    field public static final float LIGHT_CLOUDY = 100.0f;
+    field public static final float LIGHT_FULLMOON = 0.25f;
+    field public static final float LIGHT_NO_MOON = 0.001f;
+    field public static final float LIGHT_OVERCAST = 10000.0f;
+    field public static final float LIGHT_SHADE = 20000.0f;
+    field public static final float LIGHT_SUNLIGHT = 110000.0f;
+    field public static final float LIGHT_SUNLIGHT_MAX = 120000.0f;
+    field public static final float LIGHT_SUNRISE = 400.0f;
+    field public static final float MAGNETIC_FIELD_EARTH_MAX = 60.0f;
+    field public static final float MAGNETIC_FIELD_EARTH_MIN = 30.0f;
+    field public static final float PRESSURE_STANDARD_ATMOSPHERE = 1013.25f;
+    field @Deprecated public static final int RAW_DATA_INDEX = 3; // 0x3
+    field @Deprecated public static final int RAW_DATA_X = 3; // 0x3
+    field @Deprecated public static final int RAW_DATA_Y = 4; // 0x4
+    field @Deprecated public static final int RAW_DATA_Z = 5; // 0x5
+    field @Deprecated public static final int SENSOR_ACCELEROMETER = 2; // 0x2
+    field @Deprecated public static final int SENSOR_ALL = 127; // 0x7f
+    field public static final int SENSOR_DELAY_FASTEST = 0; // 0x0
+    field public static final int SENSOR_DELAY_GAME = 1; // 0x1
+    field public static final int SENSOR_DELAY_NORMAL = 3; // 0x3
+    field public static final int SENSOR_DELAY_UI = 2; // 0x2
+    field @Deprecated public static final int SENSOR_LIGHT = 16; // 0x10
+    field @Deprecated public static final int SENSOR_MAGNETIC_FIELD = 8; // 0x8
+    field @Deprecated public static final int SENSOR_MAX = 64; // 0x40
+    field @Deprecated public static final int SENSOR_MIN = 1; // 0x1
+    field @Deprecated public static final int SENSOR_ORIENTATION = 1; // 0x1
+    field @Deprecated public static final int SENSOR_ORIENTATION_RAW = 128; // 0x80
+    field @Deprecated public static final int SENSOR_PROXIMITY = 32; // 0x20
+    field public static final int SENSOR_STATUS_ACCURACY_HIGH = 3; // 0x3
+    field public static final int SENSOR_STATUS_ACCURACY_LOW = 1; // 0x1
+    field public static final int SENSOR_STATUS_ACCURACY_MEDIUM = 2; // 0x2
+    field public static final int SENSOR_STATUS_NO_CONTACT = -1; // 0xffffffff
+    field public static final int SENSOR_STATUS_UNRELIABLE = 0; // 0x0
+    field @Deprecated public static final int SENSOR_TEMPERATURE = 4; // 0x4
+    field @Deprecated public static final int SENSOR_TRICORDER = 64; // 0x40
+    field public static final float STANDARD_GRAVITY = 9.80665f;
+  }
+
+  public abstract static class SensorManager.DynamicSensorCallback {
+    ctor public SensorManager.DynamicSensorCallback();
+    method public void onDynamicSensorConnected(android.hardware.Sensor);
+    method public void onDynamicSensorDisconnected(android.hardware.Sensor);
+  }
+
+  public final class TriggerEvent {
+    field public android.hardware.Sensor sensor;
+    field public long timestamp;
+    field public final float[] values;
+  }
+
+  public abstract class TriggerEventListener {
+    ctor public TriggerEventListener();
+    method public abstract void onTrigger(android.hardware.TriggerEvent);
+  }
+
+}
+
+package android.hardware.biometrics {
+
+  public class BiometricManager {
+    method @Deprecated @RequiresPermission(android.Manifest.permission.USE_BIOMETRIC) public int canAuthenticate();
+    method @RequiresPermission(android.Manifest.permission.USE_BIOMETRIC) public int canAuthenticate(int);
+    field public static final int BIOMETRIC_ERROR_HW_UNAVAILABLE = 1; // 0x1
+    field public static final int BIOMETRIC_ERROR_NONE_ENROLLED = 11; // 0xb
+    field public static final int BIOMETRIC_ERROR_NO_HARDWARE = 12; // 0xc
+    field public static final int BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED = 15; // 0xf
+    field public static final int BIOMETRIC_SUCCESS = 0; // 0x0
+  }
+
+  public static interface BiometricManager.Authenticators {
+    field public static final int BIOMETRIC_STRONG = 15; // 0xf
+    field public static final int BIOMETRIC_WEAK = 255; // 0xff
+    field public static final int DEVICE_CREDENTIAL = 32768; // 0x8000
+  }
+
+  public class BiometricPrompt {
+    method @RequiresPermission(android.Manifest.permission.USE_BIOMETRIC) public void authenticate(@NonNull android.hardware.biometrics.BiometricPrompt.CryptoObject, @NonNull android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.biometrics.BiometricPrompt.AuthenticationCallback);
+    method @RequiresPermission(android.Manifest.permission.USE_BIOMETRIC) public void authenticate(@NonNull android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.biometrics.BiometricPrompt.AuthenticationCallback);
+    method @Nullable public int getAllowedAuthenticators();
+    method @Nullable public CharSequence getDescription();
+    method @Nullable public CharSequence getNegativeButtonText();
+    method @Nullable public CharSequence getSubtitle();
+    method @NonNull public CharSequence getTitle();
+    method public boolean isConfirmationRequired();
+    field public static final int AUTHENTICATION_RESULT_TYPE_BIOMETRIC = 2; // 0x2
+    field public static final int AUTHENTICATION_RESULT_TYPE_DEVICE_CREDENTIAL = 1; // 0x1
+    field public static final int BIOMETRIC_ACQUIRED_GOOD = 0; // 0x0
+    field public static final int BIOMETRIC_ACQUIRED_IMAGER_DIRTY = 3; // 0x3
+    field public static final int BIOMETRIC_ACQUIRED_INSUFFICIENT = 2; // 0x2
+    field public static final int BIOMETRIC_ACQUIRED_PARTIAL = 1; // 0x1
+    field public static final int BIOMETRIC_ACQUIRED_TOO_FAST = 5; // 0x5
+    field public static final int BIOMETRIC_ACQUIRED_TOO_SLOW = 4; // 0x4
+    field public static final int BIOMETRIC_ERROR_CANCELED = 5; // 0x5
+    field public static final int BIOMETRIC_ERROR_HW_NOT_PRESENT = 12; // 0xc
+    field public static final int BIOMETRIC_ERROR_HW_UNAVAILABLE = 1; // 0x1
+    field public static final int BIOMETRIC_ERROR_LOCKOUT = 7; // 0x7
+    field public static final int BIOMETRIC_ERROR_LOCKOUT_PERMANENT = 9; // 0x9
+    field public static final int BIOMETRIC_ERROR_NO_BIOMETRICS = 11; // 0xb
+    field public static final int BIOMETRIC_ERROR_NO_DEVICE_CREDENTIAL = 14; // 0xe
+    field public static final int BIOMETRIC_ERROR_NO_SPACE = 4; // 0x4
+    field public static final int BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED = 15; // 0xf
+    field public static final int BIOMETRIC_ERROR_TIMEOUT = 3; // 0x3
+    field public static final int BIOMETRIC_ERROR_UNABLE_TO_PROCESS = 2; // 0x2
+    field public static final int BIOMETRIC_ERROR_USER_CANCELED = 10; // 0xa
+    field public static final int BIOMETRIC_ERROR_VENDOR = 8; // 0x8
+  }
+
+  public abstract static class BiometricPrompt.AuthenticationCallback {
+    ctor public BiometricPrompt.AuthenticationCallback();
+    method public void onAuthenticationError(int, CharSequence);
+    method public void onAuthenticationFailed();
+    method public void onAuthenticationHelp(int, CharSequence);
+    method public void onAuthenticationSucceeded(android.hardware.biometrics.BiometricPrompt.AuthenticationResult);
+  }
+
+  public static class BiometricPrompt.AuthenticationResult {
+    method public int getAuthenticationType();
+    method public android.hardware.biometrics.BiometricPrompt.CryptoObject getCryptoObject();
+  }
+
+  public static class BiometricPrompt.Builder {
+    ctor public BiometricPrompt.Builder(android.content.Context);
+    method @NonNull public android.hardware.biometrics.BiometricPrompt build();
+    method @NonNull public android.hardware.biometrics.BiometricPrompt.Builder setAllowedAuthenticators(int);
+    method @NonNull public android.hardware.biometrics.BiometricPrompt.Builder setConfirmationRequired(boolean);
+    method @NonNull public android.hardware.biometrics.BiometricPrompt.Builder setDescription(@NonNull CharSequence);
+    method @Deprecated @NonNull public android.hardware.biometrics.BiometricPrompt.Builder setDeviceCredentialAllowed(boolean);
+    method @NonNull public android.hardware.biometrics.BiometricPrompt.Builder setNegativeButton(@NonNull CharSequence, @NonNull java.util.concurrent.Executor, @NonNull android.content.DialogInterface.OnClickListener);
+    method @NonNull public android.hardware.biometrics.BiometricPrompt.Builder setSubtitle(@NonNull CharSequence);
+    method @NonNull public android.hardware.biometrics.BiometricPrompt.Builder setTitle(@NonNull CharSequence);
+  }
+
+  public static final class BiometricPrompt.CryptoObject {
+    ctor public BiometricPrompt.CryptoObject(@NonNull java.security.Signature);
+    ctor public BiometricPrompt.CryptoObject(@NonNull javax.crypto.Cipher);
+    ctor public BiometricPrompt.CryptoObject(@NonNull javax.crypto.Mac);
+    ctor public BiometricPrompt.CryptoObject(@NonNull android.security.identity.IdentityCredential);
+    method public javax.crypto.Cipher getCipher();
+    method @Nullable public android.security.identity.IdentityCredential getIdentityCredential();
+    method public javax.crypto.Mac getMac();
+    method public java.security.Signature getSignature();
+  }
+
+}
+
+package android.hardware.camera2 {
+
+  public class CameraAccessException extends android.util.AndroidException {
+    ctor public CameraAccessException(int);
+    ctor public CameraAccessException(int, String);
+    ctor public CameraAccessException(int, String, Throwable);
+    ctor public CameraAccessException(int, Throwable);
+    method public final int getReason();
+    field public static final int CAMERA_DISABLED = 1; // 0x1
+    field public static final int CAMERA_DISCONNECTED = 2; // 0x2
+    field public static final int CAMERA_ERROR = 3; // 0x3
+    field public static final int CAMERA_IN_USE = 4; // 0x4
+    field public static final int MAX_CAMERAS_IN_USE = 5; // 0x5
+  }
+
+  public abstract class CameraCaptureSession implements java.lang.AutoCloseable {
+    ctor public CameraCaptureSession();
+    method public abstract void abortCaptures() throws android.hardware.camera2.CameraAccessException;
+    method public abstract int capture(@NonNull android.hardware.camera2.CaptureRequest, @Nullable android.hardware.camera2.CameraCaptureSession.CaptureCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
+    method public abstract int captureBurst(@NonNull java.util.List<android.hardware.camera2.CaptureRequest>, @Nullable android.hardware.camera2.CameraCaptureSession.CaptureCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
+    method public int captureBurstRequests(@NonNull java.util.List<android.hardware.camera2.CaptureRequest>, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraCaptureSession.CaptureCallback) throws android.hardware.camera2.CameraAccessException;
+    method public int captureSingleRequest(@NonNull android.hardware.camera2.CaptureRequest, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraCaptureSession.CaptureCallback) throws android.hardware.camera2.CameraAccessException;
+    method public abstract void close();
+    method public abstract void finalizeOutputConfigurations(java.util.List<android.hardware.camera2.params.OutputConfiguration>) throws android.hardware.camera2.CameraAccessException;
+    method @NonNull public abstract android.hardware.camera2.CameraDevice getDevice();
+    method @Nullable public abstract android.view.Surface getInputSurface();
+    method public abstract boolean isReprocessable();
+    method public abstract void prepare(@NonNull android.view.Surface) throws android.hardware.camera2.CameraAccessException;
+    method public abstract int setRepeatingBurst(@NonNull java.util.List<android.hardware.camera2.CaptureRequest>, @Nullable android.hardware.camera2.CameraCaptureSession.CaptureCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
+    method public int setRepeatingBurstRequests(@NonNull java.util.List<android.hardware.camera2.CaptureRequest>, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraCaptureSession.CaptureCallback) throws android.hardware.camera2.CameraAccessException;
+    method public abstract int setRepeatingRequest(@NonNull android.hardware.camera2.CaptureRequest, @Nullable android.hardware.camera2.CameraCaptureSession.CaptureCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
+    method public int setSingleRepeatingRequest(@NonNull android.hardware.camera2.CaptureRequest, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraCaptureSession.CaptureCallback) throws android.hardware.camera2.CameraAccessException;
+    method public abstract void stopRepeating() throws android.hardware.camera2.CameraAccessException;
+    method public boolean supportsOfflineProcessing(@NonNull android.view.Surface);
+    method @Nullable public android.hardware.camera2.CameraOfflineSession switchToOffline(@NonNull java.util.Collection<android.view.Surface>, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraOfflineSession.CameraOfflineSessionCallback) throws android.hardware.camera2.CameraAccessException;
+    method public void updateOutputConfiguration(android.hardware.camera2.params.OutputConfiguration) throws android.hardware.camera2.CameraAccessException;
+  }
+
+  public abstract static class CameraCaptureSession.CaptureCallback {
+    ctor public CameraCaptureSession.CaptureCallback();
+    method public void onCaptureBufferLost(@NonNull android.hardware.camera2.CameraCaptureSession, @NonNull android.hardware.camera2.CaptureRequest, @NonNull android.view.Surface, long);
+    method public void onCaptureCompleted(@NonNull android.hardware.camera2.CameraCaptureSession, @NonNull android.hardware.camera2.CaptureRequest, @NonNull android.hardware.camera2.TotalCaptureResult);
+    method public void onCaptureFailed(@NonNull android.hardware.camera2.CameraCaptureSession, @NonNull android.hardware.camera2.CaptureRequest, @NonNull android.hardware.camera2.CaptureFailure);
+    method public void onCaptureProgressed(@NonNull android.hardware.camera2.CameraCaptureSession, @NonNull android.hardware.camera2.CaptureRequest, @NonNull android.hardware.camera2.CaptureResult);
+    method public void onCaptureSequenceAborted(@NonNull android.hardware.camera2.CameraCaptureSession, int);
+    method public void onCaptureSequenceCompleted(@NonNull android.hardware.camera2.CameraCaptureSession, int, long);
+    method public void onCaptureStarted(@NonNull android.hardware.camera2.CameraCaptureSession, @NonNull android.hardware.camera2.CaptureRequest, long, long);
+  }
+
+  public abstract static class CameraCaptureSession.StateCallback {
+    ctor public CameraCaptureSession.StateCallback();
+    method public void onActive(@NonNull android.hardware.camera2.CameraCaptureSession);
+    method public void onCaptureQueueEmpty(@NonNull android.hardware.camera2.CameraCaptureSession);
+    method public void onClosed(@NonNull android.hardware.camera2.CameraCaptureSession);
+    method public abstract void onConfigureFailed(@NonNull android.hardware.camera2.CameraCaptureSession);
+    method public abstract void onConfigured(@NonNull android.hardware.camera2.CameraCaptureSession);
+    method public void onReady(@NonNull android.hardware.camera2.CameraCaptureSession);
+    method public void onSurfacePrepared(@NonNull android.hardware.camera2.CameraCaptureSession, @NonNull android.view.Surface);
+  }
+
+  public final class CameraCharacteristics extends android.hardware.camera2.CameraMetadata<android.hardware.camera2.CameraCharacteristics.Key<?>> {
+    method @Nullable public <T> T get(android.hardware.camera2.CameraCharacteristics.Key<T>);
+    method @NonNull public java.util.List<android.hardware.camera2.CaptureRequest.Key<?>> getAvailableCaptureRequestKeys();
+    method @NonNull public java.util.List<android.hardware.camera2.CaptureResult.Key<?>> getAvailableCaptureResultKeys();
+    method public java.util.List<android.hardware.camera2.CaptureRequest.Key<?>> getAvailablePhysicalCameraRequestKeys();
+    method public java.util.List<android.hardware.camera2.CaptureRequest.Key<?>> getAvailableSessionKeys();
+    method @NonNull public java.util.List<android.hardware.camera2.CameraCharacteristics.Key<?>> getKeys();
+    method @NonNull public java.util.List<android.hardware.camera2.CameraCharacteristics.Key<?>> getKeysNeedingPermission();
+    method @NonNull public java.util.Set<java.lang.String> getPhysicalCameraIds();
+    method @Nullable public android.hardware.camera2.params.RecommendedStreamConfigurationMap getRecommendedStreamConfigurationMap(int);
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AE_AVAILABLE_ANTIBANDING_MODES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AE_AVAILABLE_MODES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Range<java.lang.Integer>[]> CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Range<java.lang.Integer>> CONTROL_AE_COMPENSATION_RANGE;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Rational> CONTROL_AE_COMPENSATION_STEP;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Boolean> CONTROL_AE_LOCK_AVAILABLE;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AF_AVAILABLE_MODES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AVAILABLE_EFFECTS;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.Capability[]> CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_CAPABILITIES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AVAILABLE_MODES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AVAILABLE_SCENE_MODES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AWB_AVAILABLE_MODES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Boolean> CONTROL_AWB_LOCK_AVAILABLE;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> CONTROL_MAX_REGIONS_AE;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> CONTROL_MAX_REGIONS_AF;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> CONTROL_MAX_REGIONS_AWB;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Range<java.lang.Integer>> CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Range<java.lang.Float>> CONTROL_ZOOM_RATIO_RANGE;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Boolean> DEPTH_DEPTH_IS_EXCLUSIVE;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> DISTORTION_CORRECTION_AVAILABLE_MODES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> EDGE_AVAILABLE_EDGE_MODES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Boolean> FLASH_INFO_AVAILABLE;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> INFO_SUPPORTED_HARDWARE_LEVEL;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.String> INFO_VERSION;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Size[]> JPEG_AVAILABLE_THUMBNAIL_SIZES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_DISTORTION;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> LENS_FACING;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_INFO_AVAILABLE_APERTURES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_INFO_AVAILABLE_FILTER_DENSITIES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_INFO_AVAILABLE_FOCAL_LENGTHS;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> LENS_INFO_FOCUS_DISTANCE_CALIBRATION;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Float> LENS_INFO_HYPERFOCAL_DISTANCE;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Float> LENS_INFO_MINIMUM_FOCUS_DISTANCE;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_INTRINSIC_CALIBRATION;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> LENS_POSE_REFERENCE;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_POSE_ROTATION;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_POSE_TRANSLATION;
+    field @Deprecated @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_RADIAL_DISTORTION;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> REPROCESS_MAX_CAPTURE_STALL;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> REQUEST_AVAILABLE_CAPABILITIES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> REQUEST_MAX_NUM_INPUT_STREAMS;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> REQUEST_MAX_NUM_OUTPUT_PROC;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> REQUEST_MAX_NUM_OUTPUT_PROC_STALLING;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> REQUEST_MAX_NUM_OUTPUT_RAW;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> REQUEST_PARTIAL_RESULT_COUNT;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Byte> REQUEST_PIPELINE_MAX_DEPTH;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Float> SCALER_AVAILABLE_MAX_DIGITAL_ZOOM;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> SCALER_CROPPING_TYPE;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.MandatoryStreamCombination[]> SCALER_MANDATORY_CONCURRENT_STREAM_COMBINATIONS;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.MandatoryStreamCombination[]> SCALER_MANDATORY_STREAM_COMBINATIONS;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.StreamConfigurationMap> SCALER_STREAM_CONFIGURATION_MAP;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> SENSOR_AVAILABLE_TEST_PATTERN_MODES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.BlackLevelPattern> SENSOR_BLACK_LEVEL_PATTERN;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.ColorSpaceTransform> SENSOR_CALIBRATION_TRANSFORM1;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.ColorSpaceTransform> SENSOR_CALIBRATION_TRANSFORM2;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.ColorSpaceTransform> SENSOR_COLOR_TRANSFORM1;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.ColorSpaceTransform> SENSOR_COLOR_TRANSFORM2;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.ColorSpaceTransform> SENSOR_FORWARD_MATRIX1;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.ColorSpaceTransform> SENSOR_FORWARD_MATRIX2;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.graphics.Rect> SENSOR_INFO_ACTIVE_ARRAY_SIZE;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> SENSOR_INFO_COLOR_FILTER_ARRANGEMENT;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Range<java.lang.Long>> SENSOR_INFO_EXPOSURE_TIME_RANGE;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Boolean> SENSOR_INFO_LENS_SHADING_APPLIED;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Long> SENSOR_INFO_MAX_FRAME_DURATION;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.SizeF> SENSOR_INFO_PHYSICAL_SIZE;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Size> SENSOR_INFO_PIXEL_ARRAY_SIZE;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.graphics.Rect> SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Range<java.lang.Integer>> SENSOR_INFO_SENSITIVITY_RANGE;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> SENSOR_INFO_TIMESTAMP_SOURCE;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> SENSOR_INFO_WHITE_LEVEL;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> SENSOR_MAX_ANALOG_SENSITIVITY;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.graphics.Rect[]> SENSOR_OPTICAL_BLACK_REGIONS;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> SENSOR_ORIENTATION;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> SENSOR_REFERENCE_ILLUMINANT1;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Byte> SENSOR_REFERENCE_ILLUMINANT2;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> SHADING_AVAILABLE_MODES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<boolean[]> STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> STATISTICS_INFO_AVAILABLE_OIS_DATA_MODES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> STATISTICS_INFO_MAX_FACE_COUNT;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> SYNC_MAX_LATENCY;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> TONEMAP_AVAILABLE_TONE_MAP_MODES;
+    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> TONEMAP_MAX_CURVE_POINTS;
+  }
+
+  public static final class CameraCharacteristics.Key<T> {
+    ctor public CameraCharacteristics.Key(@NonNull String, @NonNull Class<T>);
+    method @NonNull public String getName();
+  }
+
+  public abstract class CameraConstrainedHighSpeedCaptureSession extends android.hardware.camera2.CameraCaptureSession {
+    ctor public CameraConstrainedHighSpeedCaptureSession();
+    method @NonNull public abstract java.util.List<android.hardware.camera2.CaptureRequest> createHighSpeedRequestList(@NonNull android.hardware.camera2.CaptureRequest) throws android.hardware.camera2.CameraAccessException;
+  }
+
+  public abstract class CameraDevice implements java.lang.AutoCloseable {
+    method public abstract void close();
+    method @NonNull public abstract android.hardware.camera2.CaptureRequest.Builder createCaptureRequest(int) throws android.hardware.camera2.CameraAccessException;
+    method @NonNull public android.hardware.camera2.CaptureRequest.Builder createCaptureRequest(int, java.util.Set<java.lang.String>) throws android.hardware.camera2.CameraAccessException;
+    method @Deprecated public abstract void createCaptureSession(@NonNull java.util.List<android.view.Surface>, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
+    method public void createCaptureSession(android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException;
+    method @Deprecated public abstract void createCaptureSessionByOutputConfigurations(java.util.List<android.hardware.camera2.params.OutputConfiguration>, android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
+    method @Deprecated public abstract void createConstrainedHighSpeedCaptureSession(@NonNull java.util.List<android.view.Surface>, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
+    method @NonNull public abstract android.hardware.camera2.CaptureRequest.Builder createReprocessCaptureRequest(@NonNull android.hardware.camera2.TotalCaptureResult) throws android.hardware.camera2.CameraAccessException;
+    method @Deprecated public abstract void createReprocessableCaptureSession(@NonNull android.hardware.camera2.params.InputConfiguration, @NonNull java.util.List<android.view.Surface>, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
+    method @Deprecated public abstract void createReprocessableCaptureSessionByConfigurations(@NonNull android.hardware.camera2.params.InputConfiguration, @NonNull java.util.List<android.hardware.camera2.params.OutputConfiguration>, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
+    method public int getCameraAudioRestriction() throws android.hardware.camera2.CameraAccessException;
+    method @NonNull public abstract String getId();
+    method public boolean isSessionConfigurationSupported(@NonNull android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException;
+    method public void setCameraAudioRestriction(int) throws android.hardware.camera2.CameraAccessException;
+    field public static final int AUDIO_RESTRICTION_NONE = 0; // 0x0
+    field public static final int AUDIO_RESTRICTION_VIBRATION = 1; // 0x1
+    field public static final int AUDIO_RESTRICTION_VIBRATION_SOUND = 3; // 0x3
+    field public static final int TEMPLATE_MANUAL = 6; // 0x6
+    field public static final int TEMPLATE_PREVIEW = 1; // 0x1
+    field public static final int TEMPLATE_RECORD = 3; // 0x3
+    field public static final int TEMPLATE_STILL_CAPTURE = 2; // 0x2
+    field public static final int TEMPLATE_VIDEO_SNAPSHOT = 4; // 0x4
+    field public static final int TEMPLATE_ZERO_SHUTTER_LAG = 5; // 0x5
+  }
+
+  public abstract static class CameraDevice.StateCallback {
+    ctor public CameraDevice.StateCallback();
+    method public void onClosed(@NonNull android.hardware.camera2.CameraDevice);
+    method public abstract void onDisconnected(@NonNull android.hardware.camera2.CameraDevice);
+    method public abstract void onError(@NonNull android.hardware.camera2.CameraDevice, int);
+    method public abstract void onOpened(@NonNull android.hardware.camera2.CameraDevice);
+    field public static final int ERROR_CAMERA_DEVICE = 4; // 0x4
+    field public static final int ERROR_CAMERA_DISABLED = 3; // 0x3
+    field public static final int ERROR_CAMERA_IN_USE = 1; // 0x1
+    field public static final int ERROR_CAMERA_SERVICE = 5; // 0x5
+    field public static final int ERROR_MAX_CAMERAS_IN_USE = 2; // 0x2
+  }
+
+  public final class CameraManager {
+    method @NonNull public android.hardware.camera2.CameraCharacteristics getCameraCharacteristics(@NonNull String) throws android.hardware.camera2.CameraAccessException;
+    method @NonNull public String[] getCameraIdList() throws android.hardware.camera2.CameraAccessException;
+    method @NonNull public java.util.Set<java.util.Set<java.lang.String>> getConcurrentCameraIds() throws android.hardware.camera2.CameraAccessException;
+    method @RequiresPermission(android.Manifest.permission.CAMERA) public boolean isConcurrentSessionConfigurationSupported(@NonNull java.util.Map<java.lang.String,android.hardware.camera2.params.SessionConfiguration>) throws android.hardware.camera2.CameraAccessException;
+    method @RequiresPermission(android.Manifest.permission.CAMERA) public void openCamera(@NonNull String, @NonNull android.hardware.camera2.CameraDevice.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
+    method @RequiresPermission(android.Manifest.permission.CAMERA) public void openCamera(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraDevice.StateCallback) throws android.hardware.camera2.CameraAccessException;
+    method public void registerAvailabilityCallback(@NonNull android.hardware.camera2.CameraManager.AvailabilityCallback, @Nullable android.os.Handler);
+    method public void registerAvailabilityCallback(@NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraManager.AvailabilityCallback);
+    method public void registerTorchCallback(@NonNull android.hardware.camera2.CameraManager.TorchCallback, @Nullable android.os.Handler);
+    method public void registerTorchCallback(@NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraManager.TorchCallback);
+    method public void setTorchMode(@NonNull String, boolean) throws android.hardware.camera2.CameraAccessException;
+    method public void unregisterAvailabilityCallback(@NonNull android.hardware.camera2.CameraManager.AvailabilityCallback);
+    method public void unregisterTorchCallback(@NonNull android.hardware.camera2.CameraManager.TorchCallback);
+  }
+
+  public abstract static class CameraManager.AvailabilityCallback {
+    ctor public CameraManager.AvailabilityCallback();
+    method public void onCameraAccessPrioritiesChanged();
+    method public void onCameraAvailable(@NonNull String);
+    method public void onCameraUnavailable(@NonNull String);
+    method public void onPhysicalCameraAvailable(@NonNull String, @NonNull String);
+    method public void onPhysicalCameraUnavailable(@NonNull String, @NonNull String);
+  }
+
+  public abstract static class CameraManager.TorchCallback {
+    ctor public CameraManager.TorchCallback();
+    method public void onTorchModeChanged(@NonNull String, boolean);
+    method public void onTorchModeUnavailable(@NonNull String);
+  }
+
+  public abstract class CameraMetadata<TKey> {
+    method @NonNull public java.util.List<TKey> getKeys();
+    field public static final int COLOR_CORRECTION_ABERRATION_MODE_FAST = 1; // 0x1
+    field public static final int COLOR_CORRECTION_ABERRATION_MODE_HIGH_QUALITY = 2; // 0x2
+    field public static final int COLOR_CORRECTION_ABERRATION_MODE_OFF = 0; // 0x0
+    field public static final int COLOR_CORRECTION_MODE_FAST = 1; // 0x1
+    field public static final int COLOR_CORRECTION_MODE_HIGH_QUALITY = 2; // 0x2
+    field public static final int COLOR_CORRECTION_MODE_TRANSFORM_MATRIX = 0; // 0x0
+    field public static final int CONTROL_AE_ANTIBANDING_MODE_50HZ = 1; // 0x1
+    field public static final int CONTROL_AE_ANTIBANDING_MODE_60HZ = 2; // 0x2
+    field public static final int CONTROL_AE_ANTIBANDING_MODE_AUTO = 3; // 0x3
+    field public static final int CONTROL_AE_ANTIBANDING_MODE_OFF = 0; // 0x0
+    field public static final int CONTROL_AE_MODE_OFF = 0; // 0x0
+    field public static final int CONTROL_AE_MODE_ON = 1; // 0x1
+    field public static final int CONTROL_AE_MODE_ON_ALWAYS_FLASH = 3; // 0x3
+    field public static final int CONTROL_AE_MODE_ON_AUTO_FLASH = 2; // 0x2
+    field public static final int CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE = 4; // 0x4
+    field public static final int CONTROL_AE_MODE_ON_EXTERNAL_FLASH = 5; // 0x5
+    field public static final int CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL = 2; // 0x2
+    field public static final int CONTROL_AE_PRECAPTURE_TRIGGER_IDLE = 0; // 0x0
+    field public static final int CONTROL_AE_PRECAPTURE_TRIGGER_START = 1; // 0x1
+    field public static final int CONTROL_AE_STATE_CONVERGED = 2; // 0x2
+    field public static final int CONTROL_AE_STATE_FLASH_REQUIRED = 4; // 0x4
+    field public static final int CONTROL_AE_STATE_INACTIVE = 0; // 0x0
+    field public static final int CONTROL_AE_STATE_LOCKED = 3; // 0x3
+    field public static final int CONTROL_AE_STATE_PRECAPTURE = 5; // 0x5
+    field public static final int CONTROL_AE_STATE_SEARCHING = 1; // 0x1
+    field public static final int CONTROL_AF_MODE_AUTO = 1; // 0x1
+    field public static final int CONTROL_AF_MODE_CONTINUOUS_PICTURE = 4; // 0x4
+    field public static final int CONTROL_AF_MODE_CONTINUOUS_VIDEO = 3; // 0x3
+    field public static final int CONTROL_AF_MODE_EDOF = 5; // 0x5
+    field public static final int CONTROL_AF_MODE_MACRO = 2; // 0x2
+    field public static final int CONTROL_AF_MODE_OFF = 0; // 0x0
+    field public static final int CONTROL_AF_SCENE_CHANGE_DETECTED = 1; // 0x1
+    field public static final int CONTROL_AF_SCENE_CHANGE_NOT_DETECTED = 0; // 0x0
+    field public static final int CONTROL_AF_STATE_ACTIVE_SCAN = 3; // 0x3
+    field public static final int CONTROL_AF_STATE_FOCUSED_LOCKED = 4; // 0x4
+    field public static final int CONTROL_AF_STATE_INACTIVE = 0; // 0x0
+    field public static final int CONTROL_AF_STATE_NOT_FOCUSED_LOCKED = 5; // 0x5
+    field public static final int CONTROL_AF_STATE_PASSIVE_FOCUSED = 2; // 0x2
+    field public static final int CONTROL_AF_STATE_PASSIVE_SCAN = 1; // 0x1
+    field public static final int CONTROL_AF_STATE_PASSIVE_UNFOCUSED = 6; // 0x6
+    field public static final int CONTROL_AF_TRIGGER_CANCEL = 2; // 0x2
+    field public static final int CONTROL_AF_TRIGGER_IDLE = 0; // 0x0
+    field public static final int CONTROL_AF_TRIGGER_START = 1; // 0x1
+    field public static final int CONTROL_AWB_MODE_AUTO = 1; // 0x1
+    field public static final int CONTROL_AWB_MODE_CLOUDY_DAYLIGHT = 6; // 0x6
+    field public static final int CONTROL_AWB_MODE_DAYLIGHT = 5; // 0x5
+    field public static final int CONTROL_AWB_MODE_FLUORESCENT = 3; // 0x3
+    field public static final int CONTROL_AWB_MODE_INCANDESCENT = 2; // 0x2
+    field public static final int CONTROL_AWB_MODE_OFF = 0; // 0x0
+    field public static final int CONTROL_AWB_MODE_SHADE = 8; // 0x8
+    field public static final int CONTROL_AWB_MODE_TWILIGHT = 7; // 0x7
+    field public static final int CONTROL_AWB_MODE_WARM_FLUORESCENT = 4; // 0x4
+    field public static final int CONTROL_AWB_STATE_CONVERGED = 2; // 0x2
+    field public static final int CONTROL_AWB_STATE_INACTIVE = 0; // 0x0
+    field public static final int CONTROL_AWB_STATE_LOCKED = 3; // 0x3
+    field public static final int CONTROL_AWB_STATE_SEARCHING = 1; // 0x1
+    field public static final int CONTROL_CAPTURE_INTENT_CUSTOM = 0; // 0x0
+    field public static final int CONTROL_CAPTURE_INTENT_MANUAL = 6; // 0x6
+    field public static final int CONTROL_CAPTURE_INTENT_MOTION_TRACKING = 7; // 0x7
+    field public static final int CONTROL_CAPTURE_INTENT_PREVIEW = 1; // 0x1
+    field public static final int CONTROL_CAPTURE_INTENT_STILL_CAPTURE = 2; // 0x2
+    field public static final int CONTROL_CAPTURE_INTENT_VIDEO_RECORD = 3; // 0x3
+    field public static final int CONTROL_CAPTURE_INTENT_VIDEO_SNAPSHOT = 4; // 0x4
+    field public static final int CONTROL_CAPTURE_INTENT_ZERO_SHUTTER_LAG = 5; // 0x5
+    field public static final int CONTROL_EFFECT_MODE_AQUA = 8; // 0x8
+    field public static final int CONTROL_EFFECT_MODE_BLACKBOARD = 7; // 0x7
+    field public static final int CONTROL_EFFECT_MODE_MONO = 1; // 0x1
+    field public static final int CONTROL_EFFECT_MODE_NEGATIVE = 2; // 0x2
+    field public static final int CONTROL_EFFECT_MODE_OFF = 0; // 0x0
+    field public static final int CONTROL_EFFECT_MODE_POSTERIZE = 5; // 0x5
+    field public static final int CONTROL_EFFECT_MODE_SEPIA = 4; // 0x4
+    field public static final int CONTROL_EFFECT_MODE_SOLARIZE = 3; // 0x3
+    field public static final int CONTROL_EFFECT_MODE_WHITEBOARD = 6; // 0x6
+    field public static final int CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUS = 2; // 0x2
+    field public static final int CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTURE = 1; // 0x1
+    field public static final int CONTROL_EXTENDED_SCENE_MODE_DISABLED = 0; // 0x0
+    field public static final int CONTROL_MODE_AUTO = 1; // 0x1
+    field public static final int CONTROL_MODE_OFF = 0; // 0x0
+    field public static final int CONTROL_MODE_OFF_KEEP_STATE = 3; // 0x3
+    field public static final int CONTROL_MODE_USE_EXTENDED_SCENE_MODE = 4; // 0x4
+    field public static final int CONTROL_MODE_USE_SCENE_MODE = 2; // 0x2
+    field public static final int CONTROL_SCENE_MODE_ACTION = 2; // 0x2
+    field public static final int CONTROL_SCENE_MODE_BARCODE = 16; // 0x10
+    field public static final int CONTROL_SCENE_MODE_BEACH = 8; // 0x8
+    field public static final int CONTROL_SCENE_MODE_CANDLELIGHT = 15; // 0xf
+    field public static final int CONTROL_SCENE_MODE_DISABLED = 0; // 0x0
+    field public static final int CONTROL_SCENE_MODE_FACE_PRIORITY = 1; // 0x1
+    field public static final int CONTROL_SCENE_MODE_FIREWORKS = 12; // 0xc
+    field public static final int CONTROL_SCENE_MODE_HDR = 18; // 0x12
+    field @Deprecated public static final int CONTROL_SCENE_MODE_HIGH_SPEED_VIDEO = 17; // 0x11
+    field public static final int CONTROL_SCENE_MODE_LANDSCAPE = 4; // 0x4
+    field public static final int CONTROL_SCENE_MODE_NIGHT = 5; // 0x5
+    field public static final int CONTROL_SCENE_MODE_NIGHT_PORTRAIT = 6; // 0x6
+    field public static final int CONTROL_SCENE_MODE_PARTY = 14; // 0xe
+    field public static final int CONTROL_SCENE_MODE_PORTRAIT = 3; // 0x3
+    field public static final int CONTROL_SCENE_MODE_SNOW = 9; // 0x9
+    field public static final int CONTROL_SCENE_MODE_SPORTS = 13; // 0xd
+    field public static final int CONTROL_SCENE_MODE_STEADYPHOTO = 11; // 0xb
+    field public static final int CONTROL_SCENE_MODE_SUNSET = 10; // 0xa
+    field public static final int CONTROL_SCENE_MODE_THEATRE = 7; // 0x7
+    field public static final int CONTROL_VIDEO_STABILIZATION_MODE_OFF = 0; // 0x0
+    field public static final int CONTROL_VIDEO_STABILIZATION_MODE_ON = 1; // 0x1
+    field public static final int DISTORTION_CORRECTION_MODE_FAST = 1; // 0x1
+    field public static final int DISTORTION_CORRECTION_MODE_HIGH_QUALITY = 2; // 0x2
+    field public static final int DISTORTION_CORRECTION_MODE_OFF = 0; // 0x0
+    field public static final int EDGE_MODE_FAST = 1; // 0x1
+    field public static final int EDGE_MODE_HIGH_QUALITY = 2; // 0x2
+    field public static final int EDGE_MODE_OFF = 0; // 0x0
+    field public static final int EDGE_MODE_ZERO_SHUTTER_LAG = 3; // 0x3
+    field public static final int FLASH_MODE_OFF = 0; // 0x0
+    field public static final int FLASH_MODE_SINGLE = 1; // 0x1
+    field public static final int FLASH_MODE_TORCH = 2; // 0x2
+    field public static final int FLASH_STATE_CHARGING = 1; // 0x1
+    field public static final int FLASH_STATE_FIRED = 3; // 0x3
+    field public static final int FLASH_STATE_PARTIAL = 4; // 0x4
+    field public static final int FLASH_STATE_READY = 2; // 0x2
+    field public static final int FLASH_STATE_UNAVAILABLE = 0; // 0x0
+    field public static final int HOT_PIXEL_MODE_FAST = 1; // 0x1
+    field public static final int HOT_PIXEL_MODE_HIGH_QUALITY = 2; // 0x2
+    field public static final int HOT_PIXEL_MODE_OFF = 0; // 0x0
+    field public static final int INFO_SUPPORTED_HARDWARE_LEVEL_3 = 3; // 0x3
+    field public static final int INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL = 4; // 0x4
+    field public static final int INFO_SUPPORTED_HARDWARE_LEVEL_FULL = 1; // 0x1
+    field public static final int INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY = 2; // 0x2
+    field public static final int INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED = 0; // 0x0
+    field public static final int LENS_FACING_BACK = 1; // 0x1
+    field public static final int LENS_FACING_EXTERNAL = 2; // 0x2
+    field public static final int LENS_FACING_FRONT = 0; // 0x0
+    field public static final int LENS_INFO_FOCUS_DISTANCE_CALIBRATION_APPROXIMATE = 1; // 0x1
+    field public static final int LENS_INFO_FOCUS_DISTANCE_CALIBRATION_CALIBRATED = 2; // 0x2
+    field public static final int LENS_INFO_FOCUS_DISTANCE_CALIBRATION_UNCALIBRATED = 0; // 0x0
+    field public static final int LENS_OPTICAL_STABILIZATION_MODE_OFF = 0; // 0x0
+    field public static final int LENS_OPTICAL_STABILIZATION_MODE_ON = 1; // 0x1
+    field public static final int LENS_POSE_REFERENCE_GYROSCOPE = 1; // 0x1
+    field public static final int LENS_POSE_REFERENCE_PRIMARY_CAMERA = 0; // 0x0
+    field public static final int LENS_POSE_REFERENCE_UNDEFINED = 2; // 0x2
+    field public static final int LENS_STATE_MOVING = 1; // 0x1
+    field public static final int LENS_STATE_STATIONARY = 0; // 0x0
+    field public static final int LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE = 0; // 0x0
+    field public static final int LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED = 1; // 0x1
+    field public static final int NOISE_REDUCTION_MODE_FAST = 1; // 0x1
+    field public static final int NOISE_REDUCTION_MODE_HIGH_QUALITY = 2; // 0x2
+    field public static final int NOISE_REDUCTION_MODE_MINIMAL = 3; // 0x3
+    field public static final int NOISE_REDUCTION_MODE_OFF = 0; // 0x0
+    field public static final int NOISE_REDUCTION_MODE_ZERO_SHUTTER_LAG = 4; // 0x4
+    field public static final int REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE = 0; // 0x0
+    field public static final int REQUEST_AVAILABLE_CAPABILITIES_BURST_CAPTURE = 6; // 0x6
+    field public static final int REQUEST_AVAILABLE_CAPABILITIES_CONSTRAINED_HIGH_SPEED_VIDEO = 9; // 0x9
+    field public static final int REQUEST_AVAILABLE_CAPABILITIES_DEPTH_OUTPUT = 8; // 0x8
+    field public static final int REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA = 11; // 0xb
+    field public static final int REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING = 2; // 0x2
+    field public static final int REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR = 1; // 0x1
+    field public static final int REQUEST_AVAILABLE_CAPABILITIES_MONOCHROME = 12; // 0xc
+    field public static final int REQUEST_AVAILABLE_CAPABILITIES_MOTION_TRACKING = 10; // 0xa
+    field public static final int REQUEST_AVAILABLE_CAPABILITIES_OFFLINE_PROCESSING = 15; // 0xf
+    field public static final int REQUEST_AVAILABLE_CAPABILITIES_PRIVATE_REPROCESSING = 4; // 0x4
+    field public static final int REQUEST_AVAILABLE_CAPABILITIES_RAW = 3; // 0x3
+    field public static final int REQUEST_AVAILABLE_CAPABILITIES_READ_SENSOR_SETTINGS = 5; // 0x5
+    field public static final int REQUEST_AVAILABLE_CAPABILITIES_SECURE_IMAGE_DATA = 13; // 0xd
+    field public static final int REQUEST_AVAILABLE_CAPABILITIES_SYSTEM_CAMERA = 14; // 0xe
+    field public static final int REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING = 7; // 0x7
+    field public static final int SCALER_CROPPING_TYPE_CENTER_ONLY = 0; // 0x0
+    field public static final int SCALER_CROPPING_TYPE_FREEFORM = 1; // 0x1
+    field public static final int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_BGGR = 3; // 0x3
+    field public static final int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GBRG = 2; // 0x2
+    field public static final int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GRBG = 1; // 0x1
+    field public static final int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_MONO = 5; // 0x5
+    field public static final int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_NIR = 6; // 0x6
+    field public static final int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGB = 4; // 0x4
+    field public static final int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGGB = 0; // 0x0
+    field public static final int SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME = 1; // 0x1
+    field public static final int SENSOR_INFO_TIMESTAMP_SOURCE_UNKNOWN = 0; // 0x0
+    field public static final int SENSOR_REFERENCE_ILLUMINANT1_CLOUDY_WEATHER = 10; // 0xa
+    field public static final int SENSOR_REFERENCE_ILLUMINANT1_COOL_WHITE_FLUORESCENT = 14; // 0xe
+    field public static final int SENSOR_REFERENCE_ILLUMINANT1_D50 = 23; // 0x17
+    field public static final int SENSOR_REFERENCE_ILLUMINANT1_D55 = 20; // 0x14
+    field public static final int SENSOR_REFERENCE_ILLUMINANT1_D65 = 21; // 0x15
+    field public static final int SENSOR_REFERENCE_ILLUMINANT1_D75 = 22; // 0x16
+    field public static final int SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT = 1; // 0x1
+    field public static final int SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT_FLUORESCENT = 12; // 0xc
+    field public static final int SENSOR_REFERENCE_ILLUMINANT1_DAY_WHITE_FLUORESCENT = 13; // 0xd
+    field public static final int SENSOR_REFERENCE_ILLUMINANT1_FINE_WEATHER = 9; // 0x9
+    field public static final int SENSOR_REFERENCE_ILLUMINANT1_FLASH = 4; // 0x4
+    field public static final int SENSOR_REFERENCE_ILLUMINANT1_FLUORESCENT = 2; // 0x2
+    field public static final int SENSOR_REFERENCE_ILLUMINANT1_ISO_STUDIO_TUNGSTEN = 24; // 0x18
+    field public static final int SENSOR_REFERENCE_ILLUMINANT1_SHADE = 11; // 0xb
+    field public static final int SENSOR_REFERENCE_ILLUMINANT1_STANDARD_A = 17; // 0x11
+    field public static final int SENSOR_REFERENCE_ILLUMINANT1_STANDARD_B = 18; // 0x12
+    field public static final int SENSOR_REFERENCE_ILLUMINANT1_STANDARD_C = 19; // 0x13
+    field public static final int SENSOR_REFERENCE_ILLUMINANT1_TUNGSTEN = 3; // 0x3
+    field public static final int SENSOR_REFERENCE_ILLUMINANT1_WHITE_FLUORESCENT = 15; // 0xf
+    field public static final int SENSOR_TEST_PATTERN_MODE_COLOR_BARS = 2; // 0x2
+    field public static final int SENSOR_TEST_PATTERN_MODE_COLOR_BARS_FADE_TO_GRAY = 3; // 0x3
+    field public static final int SENSOR_TEST_PATTERN_MODE_CUSTOM1 = 256; // 0x100
+    field public static final int SENSOR_TEST_PATTERN_MODE_OFF = 0; // 0x0
+    field public static final int SENSOR_TEST_PATTERN_MODE_PN9 = 4; // 0x4
+    field public static final int SENSOR_TEST_PATTERN_MODE_SOLID_COLOR = 1; // 0x1
+    field public static final int SHADING_MODE_FAST = 1; // 0x1
+    field public static final int SHADING_MODE_HIGH_QUALITY = 2; // 0x2
+    field public static final int SHADING_MODE_OFF = 0; // 0x0
+    field public static final int STATISTICS_FACE_DETECT_MODE_FULL = 2; // 0x2
+    field public static final int STATISTICS_FACE_DETECT_MODE_OFF = 0; // 0x0
+    field public static final int STATISTICS_FACE_DETECT_MODE_SIMPLE = 1; // 0x1
+    field public static final int STATISTICS_LENS_SHADING_MAP_MODE_OFF = 0; // 0x0
+    field public static final int STATISTICS_LENS_SHADING_MAP_MODE_ON = 1; // 0x1
+    field public static final int STATISTICS_OIS_DATA_MODE_OFF = 0; // 0x0
+    field public static final int STATISTICS_OIS_DATA_MODE_ON = 1; // 0x1
+    field public static final int STATISTICS_SCENE_FLICKER_50HZ = 1; // 0x1
+    field public static final int STATISTICS_SCENE_FLICKER_60HZ = 2; // 0x2
+    field public static final int STATISTICS_SCENE_FLICKER_NONE = 0; // 0x0
+    field public static final int SYNC_MAX_LATENCY_PER_FRAME_CONTROL = 0; // 0x0
+    field public static final int SYNC_MAX_LATENCY_UNKNOWN = -1; // 0xffffffff
+    field public static final int TONEMAP_MODE_CONTRAST_CURVE = 0; // 0x0
+    field public static final int TONEMAP_MODE_FAST = 1; // 0x1
+    field public static final int TONEMAP_MODE_GAMMA_VALUE = 3; // 0x3
+    field public static final int TONEMAP_MODE_HIGH_QUALITY = 2; // 0x2
+    field public static final int TONEMAP_MODE_PRESET_CURVE = 4; // 0x4
+    field public static final int TONEMAP_PRESET_CURVE_REC709 = 1; // 0x1
+    field public static final int TONEMAP_PRESET_CURVE_SRGB = 0; // 0x0
+  }
+
+  public abstract class CameraOfflineSession extends android.hardware.camera2.CameraCaptureSession {
+    ctor public CameraOfflineSession();
+  }
+
+  public abstract static class CameraOfflineSession.CameraOfflineSessionCallback {
+    ctor public CameraOfflineSession.CameraOfflineSessionCallback();
+    method public abstract void onClosed(@NonNull android.hardware.camera2.CameraOfflineSession);
+    method public abstract void onError(@NonNull android.hardware.camera2.CameraOfflineSession, int);
+    method public abstract void onIdle(@NonNull android.hardware.camera2.CameraOfflineSession);
+    method public abstract void onReady(@NonNull android.hardware.camera2.CameraOfflineSession);
+    method public abstract void onSwitchFailed(@NonNull android.hardware.camera2.CameraOfflineSession);
+    field public static final int STATUS_INTERNAL_ERROR = 0; // 0x0
+  }
+
+  public class CaptureFailure {
+    method public long getFrameNumber();
+    method @Nullable public String getPhysicalCameraId();
+    method public int getReason();
+    method @NonNull public android.hardware.camera2.CaptureRequest getRequest();
+    method public int getSequenceId();
+    method public boolean wasImageCaptured();
+    field public static final int REASON_ERROR = 0; // 0x0
+    field public static final int REASON_FLUSHED = 1; // 0x1
+  }
+
+  public final class CaptureRequest extends android.hardware.camera2.CameraMetadata<android.hardware.camera2.CaptureRequest.Key<?>> implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public <T> T get(android.hardware.camera2.CaptureRequest.Key<T>);
+    method @NonNull public java.util.List<android.hardware.camera2.CaptureRequest.Key<?>> getKeys();
+    method @Nullable public Object getTag();
+    method public boolean isReprocess();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Boolean> BLACK_LEVEL_LOCK;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> COLOR_CORRECTION_ABERRATION_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.hardware.camera2.params.RggbChannelVector> COLOR_CORRECTION_GAINS;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> COLOR_CORRECTION_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.hardware.camera2.params.ColorSpaceTransform> COLOR_CORRECTION_TRANSFORM;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_AE_ANTIBANDING_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_AE_EXPOSURE_COMPENSATION;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Boolean> CONTROL_AE_LOCK;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_AE_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_AE_PRECAPTURE_TRIGGER;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.hardware.camera2.params.MeteringRectangle[]> CONTROL_AE_REGIONS;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.util.Range<java.lang.Integer>> CONTROL_AE_TARGET_FPS_RANGE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_AF_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.hardware.camera2.params.MeteringRectangle[]> CONTROL_AF_REGIONS;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_AF_TRIGGER;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Boolean> CONTROL_AWB_LOCK;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_AWB_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.hardware.camera2.params.MeteringRectangle[]> CONTROL_AWB_REGIONS;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_CAPTURE_INTENT;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_EFFECT_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Boolean> CONTROL_ENABLE_ZSL;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_EXTENDED_SCENE_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_POST_RAW_SENSITIVITY_BOOST;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_SCENE_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_VIDEO_STABILIZATION_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> CONTROL_ZOOM_RATIO;
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.camera2.CaptureRequest> CREATOR;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> DISTORTION_CORRECTION_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> EDGE_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> FLASH_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> HOT_PIXEL_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.location.Location> JPEG_GPS_LOCATION;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> JPEG_ORIENTATION;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Byte> JPEG_QUALITY;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Byte> JPEG_THUMBNAIL_QUALITY;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.util.Size> JPEG_THUMBNAIL_SIZE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> LENS_APERTURE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> LENS_FILTER_DENSITY;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> LENS_FOCAL_LENGTH;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> LENS_FOCUS_DISTANCE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> LENS_OPTICAL_STABILIZATION_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> NOISE_REDUCTION_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> REPROCESS_EFFECTIVE_EXPOSURE_FACTOR;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.graphics.Rect> SCALER_CROP_REGION;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Long> SENSOR_EXPOSURE_TIME;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Long> SENSOR_FRAME_DURATION;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> SENSOR_SENSITIVITY;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<int[]> SENSOR_TEST_PATTERN_DATA;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> SENSOR_TEST_PATTERN_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> SHADING_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> STATISTICS_FACE_DETECT_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Boolean> STATISTICS_HOT_PIXEL_MAP_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> STATISTICS_LENS_SHADING_MAP_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> STATISTICS_OIS_DATA_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.hardware.camera2.params.TonemapCurve> TONEMAP_CURVE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> TONEMAP_GAMMA;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> TONEMAP_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> TONEMAP_PRESET_CURVE;
+  }
+
+  public static final class CaptureRequest.Builder {
+    method public void addTarget(@NonNull android.view.Surface);
+    method @NonNull public android.hardware.camera2.CaptureRequest build();
+    method @Nullable public <T> T get(android.hardware.camera2.CaptureRequest.Key<T>);
+    method @Nullable public <T> T getPhysicalCameraKey(android.hardware.camera2.CaptureRequest.Key<T>, @NonNull String);
+    method public void removeTarget(@NonNull android.view.Surface);
+    method public <T> void set(@NonNull android.hardware.camera2.CaptureRequest.Key<T>, T);
+    method public <T> android.hardware.camera2.CaptureRequest.Builder setPhysicalCameraKey(@NonNull android.hardware.camera2.CaptureRequest.Key<T>, T, @NonNull String);
+    method public void setTag(@Nullable Object);
+  }
+
+  public static final class CaptureRequest.Key<T> {
+    ctor public CaptureRequest.Key(@NonNull String, @NonNull Class<T>);
+    method @NonNull public String getName();
+  }
+
+  public class CaptureResult extends android.hardware.camera2.CameraMetadata<android.hardware.camera2.CaptureResult.Key<?>> {
+    method @Nullable public <T> T get(android.hardware.camera2.CaptureResult.Key<T>);
+    method public long getFrameNumber();
+    method @NonNull public java.util.List<android.hardware.camera2.CaptureResult.Key<?>> getKeys();
+    method @NonNull public android.hardware.camera2.CaptureRequest getRequest();
+    method public int getSequenceId();
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Boolean> BLACK_LEVEL_LOCK;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> COLOR_CORRECTION_ABERRATION_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.RggbChannelVector> COLOR_CORRECTION_GAINS;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> COLOR_CORRECTION_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.ColorSpaceTransform> COLOR_CORRECTION_TRANSFORM;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AE_ANTIBANDING_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AE_EXPOSURE_COMPENSATION;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Boolean> CONTROL_AE_LOCK;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AE_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AE_PRECAPTURE_TRIGGER;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.MeteringRectangle[]> CONTROL_AE_REGIONS;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AE_STATE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.util.Range<java.lang.Integer>> CONTROL_AE_TARGET_FPS_RANGE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AF_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.MeteringRectangle[]> CONTROL_AF_REGIONS;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AF_SCENE_CHANGE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AF_STATE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AF_TRIGGER;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Boolean> CONTROL_AWB_LOCK;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AWB_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.MeteringRectangle[]> CONTROL_AWB_REGIONS;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AWB_STATE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_CAPTURE_INTENT;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_EFFECT_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Boolean> CONTROL_ENABLE_ZSL;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_EXTENDED_SCENE_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_POST_RAW_SENSITIVITY_BOOST;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_SCENE_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_VIDEO_STABILIZATION_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> CONTROL_ZOOM_RATIO;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> DISTORTION_CORRECTION_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> EDGE_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> FLASH_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> FLASH_STATE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> HOT_PIXEL_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.location.Location> JPEG_GPS_LOCATION;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> JPEG_ORIENTATION;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Byte> JPEG_QUALITY;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Byte> JPEG_THUMBNAIL_QUALITY;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.util.Size> JPEG_THUMBNAIL_SIZE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> LENS_APERTURE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<float[]> LENS_DISTORTION;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> LENS_FILTER_DENSITY;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> LENS_FOCAL_LENGTH;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> LENS_FOCUS_DISTANCE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.util.Pair<java.lang.Float,java.lang.Float>> LENS_FOCUS_RANGE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<float[]> LENS_INTRINSIC_CALIBRATION;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> LENS_OPTICAL_STABILIZATION_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<float[]> LENS_POSE_ROTATION;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<float[]> LENS_POSE_TRANSLATION;
+    field @Deprecated @NonNull public static final android.hardware.camera2.CaptureResult.Key<float[]> LENS_RADIAL_DISTORTION;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> LENS_STATE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.String> LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> NOISE_REDUCTION_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> REPROCESS_EFFECTIVE_EXPOSURE_FACTOR;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Byte> REQUEST_PIPELINE_DEPTH;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.graphics.Rect> SCALER_CROP_REGION;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<float[]> SENSOR_DYNAMIC_BLACK_LEVEL;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> SENSOR_DYNAMIC_WHITE_LEVEL;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Long> SENSOR_EXPOSURE_TIME;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Long> SENSOR_FRAME_DURATION;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> SENSOR_GREEN_SPLIT;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.util.Rational[]> SENSOR_NEUTRAL_COLOR_POINT;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.util.Pair<java.lang.Double,java.lang.Double>[]> SENSOR_NOISE_PROFILE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Long> SENSOR_ROLLING_SHUTTER_SKEW;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> SENSOR_SENSITIVITY;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<int[]> SENSOR_TEST_PATTERN_DATA;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> SENSOR_TEST_PATTERN_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Long> SENSOR_TIMESTAMP;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> SHADING_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.Face[]> STATISTICS_FACES;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> STATISTICS_FACE_DETECT_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.graphics.Point[]> STATISTICS_HOT_PIXEL_MAP;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Boolean> STATISTICS_HOT_PIXEL_MAP_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.LensShadingMap> STATISTICS_LENS_SHADING_CORRECTION_MAP;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> STATISTICS_LENS_SHADING_MAP_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> STATISTICS_OIS_DATA_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.OisSample[]> STATISTICS_OIS_SAMPLES;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> STATISTICS_SCENE_FLICKER;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.TonemapCurve> TONEMAP_CURVE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> TONEMAP_GAMMA;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> TONEMAP_MODE;
+    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> TONEMAP_PRESET_CURVE;
+  }
+
+  public static final class CaptureResult.Key<T> {
+    ctor public CaptureResult.Key(@NonNull String, @NonNull Class<T>);
+    method @NonNull public String getName();
+  }
+
+  public final class DngCreator implements java.lang.AutoCloseable {
+    ctor public DngCreator(@NonNull android.hardware.camera2.CameraCharacteristics, @NonNull android.hardware.camera2.CaptureResult);
+    method public void close();
+    method @NonNull public android.hardware.camera2.DngCreator setDescription(@NonNull String);
+    method @NonNull public android.hardware.camera2.DngCreator setLocation(@NonNull android.location.Location);
+    method @NonNull public android.hardware.camera2.DngCreator setOrientation(int);
+    method @NonNull public android.hardware.camera2.DngCreator setThumbnail(@NonNull android.graphics.Bitmap);
+    method @NonNull public android.hardware.camera2.DngCreator setThumbnail(@NonNull android.media.Image);
+    method public void writeByteBuffer(@NonNull java.io.OutputStream, @NonNull android.util.Size, @NonNull java.nio.ByteBuffer, @IntRange(from=0) long) throws java.io.IOException;
+    method public void writeImage(@NonNull java.io.OutputStream, @NonNull android.media.Image) throws java.io.IOException;
+    method public void writeInputStream(@NonNull java.io.OutputStream, @NonNull android.util.Size, @NonNull java.io.InputStream, @IntRange(from=0) long) throws java.io.IOException;
+    field public static final int MAX_THUMBNAIL_DIMENSION = 256; // 0x100
+  }
+
+  public final class TotalCaptureResult extends android.hardware.camera2.CaptureResult {
+    method @NonNull public java.util.List<android.hardware.camera2.CaptureResult> getPartialResults();
+    method public java.util.Map<java.lang.String,android.hardware.camera2.CaptureResult> getPhysicalCameraResults();
+  }
+
+}
+
+package android.hardware.camera2.params {
+
+  public final class BlackLevelPattern {
+    method public void copyTo(int[], int);
+    method public int getOffsetForIndex(int, int);
+    field public static final int COUNT = 4; // 0x4
+  }
+
+  public final class Capability {
+    method @NonNull public android.util.Size getMaxStreamingSize();
+    method public int getMode();
+    method @NonNull public android.util.Range<java.lang.Float> getZoomRatioRange();
+  }
+
+  public final class ColorSpaceTransform {
+    ctor public ColorSpaceTransform(android.util.Rational[]);
+    ctor public ColorSpaceTransform(int[]);
+    method public void copyElements(android.util.Rational[], int);
+    method public void copyElements(int[], int);
+    method public android.util.Rational getElement(int, int);
+  }
+
+  public final class Face {
+    method public android.graphics.Rect getBounds();
+    method public int getId();
+    method public android.graphics.Point getLeftEyePosition();
+    method public android.graphics.Point getMouthPosition();
+    method public android.graphics.Point getRightEyePosition();
+    method public int getScore();
+    field public static final int ID_UNSUPPORTED = -1; // 0xffffffff
+    field public static final int SCORE_MAX = 100; // 0x64
+    field public static final int SCORE_MIN = 1; // 0x1
+  }
+
+  public final class InputConfiguration {
+    ctor public InputConfiguration(int, int, int);
+    method public int getFormat();
+    method public int getHeight();
+    method public int getWidth();
+  }
+
+  public final class LensShadingMap {
+    method public void copyGainFactors(float[], int);
+    method public int getColumnCount();
+    method public float getGainFactor(int, int, int);
+    method public int getGainFactorCount();
+    method public android.hardware.camera2.params.RggbChannelVector getGainFactorVector(int, int);
+    method public int getRowCount();
+    field public static final float MINIMUM_GAIN_FACTOR = 1.0f;
+  }
+
+  public final class MandatoryStreamCombination {
+    method @NonNull public CharSequence getDescription();
+    method @NonNull public java.util.List<android.hardware.camera2.params.MandatoryStreamCombination.MandatoryStreamInformation> getStreamsInformation();
+    method public boolean isReprocessable();
+  }
+
+  public static final class MandatoryStreamCombination.MandatoryStreamInformation {
+    method @NonNull public java.util.List<android.util.Size> getAvailableSizes();
+    method public int getFormat();
+    method public boolean isInput();
+  }
+
+  public final class MeteringRectangle {
+    ctor public MeteringRectangle(int, int, int, int, int);
+    ctor public MeteringRectangle(android.graphics.Point, android.util.Size, int);
+    ctor public MeteringRectangle(android.graphics.Rect, int);
+    method public boolean equals(android.hardware.camera2.params.MeteringRectangle);
+    method public int getHeight();
+    method public int getMeteringWeight();
+    method public android.graphics.Rect getRect();
+    method public android.util.Size getSize();
+    method public android.graphics.Point getUpperLeftPoint();
+    method public int getWidth();
+    method public int getX();
+    method public int getY();
+    field public static final int METERING_WEIGHT_DONT_CARE = 0; // 0x0
+    field public static final int METERING_WEIGHT_MAX = 1000; // 0x3e8
+    field public static final int METERING_WEIGHT_MIN = 0; // 0x0
+  }
+
+  public final class OisSample {
+    ctor public OisSample(long, float, float);
+    method public long getTimestamp();
+    method public float getXshift();
+    method public float getYshift();
+  }
+
+  public final class OutputConfiguration implements android.os.Parcelable {
+    ctor public OutputConfiguration(@NonNull android.view.Surface);
+    ctor public OutputConfiguration(int, @NonNull android.view.Surface);
+    ctor public OutputConfiguration(@NonNull android.util.Size, @NonNull Class<T>);
+    method public void addSurface(@NonNull android.view.Surface);
+    method public int describeContents();
+    method public void enableSurfaceSharing();
+    method public int getMaxSharedSurfaceCount();
+    method @Nullable public android.view.Surface getSurface();
+    method public int getSurfaceGroupId();
+    method @NonNull public java.util.List<android.view.Surface> getSurfaces();
+    method public void removeSurface(@NonNull android.view.Surface);
+    method public void setPhysicalCameraId(@Nullable String);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.camera2.params.OutputConfiguration> CREATOR;
+    field public static final int SURFACE_GROUP_ID_NONE = -1; // 0xffffffff
+  }
+
+  public final class RecommendedStreamConfigurationMap {
+    method @Nullable public java.util.Set<android.util.Size> getHighResolutionOutputSizes(int);
+    method @Nullable public java.util.Set<android.util.Range<java.lang.Integer>> getHighSpeedVideoFpsRanges();
+    method @Nullable public java.util.Set<android.util.Range<java.lang.Integer>> getHighSpeedVideoFpsRangesFor(@NonNull android.util.Size);
+    method @Nullable public java.util.Set<android.util.Size> getHighSpeedVideoSizes();
+    method @Nullable public java.util.Set<android.util.Size> getHighSpeedVideoSizesFor(@NonNull android.util.Range<java.lang.Integer>);
+    method @Nullable public java.util.Set<java.lang.Integer> getInputFormats();
+    method @Nullable public java.util.Set<android.util.Size> getInputSizes(int);
+    method @NonNull public java.util.Set<java.lang.Integer> getOutputFormats();
+    method @IntRange(from=0) public long getOutputMinFrameDuration(int, @NonNull android.util.Size);
+    method @IntRange(from=0) public <T> long getOutputMinFrameDuration(@NonNull Class<T>, @NonNull android.util.Size);
+    method @Nullable public java.util.Set<android.util.Size> getOutputSizes(int);
+    method @Nullable public <T> java.util.Set<android.util.Size> getOutputSizes(@NonNull Class<T>);
+    method @IntRange(from=0) public long getOutputStallDuration(int, @NonNull android.util.Size);
+    method @IntRange(from=0) public <T> long getOutputStallDuration(@NonNull Class<T>, @NonNull android.util.Size);
+    method public int getRecommendedUseCase();
+    method @Nullable public java.util.Set<java.lang.Integer> getValidOutputFormatsForInput(int);
+    method public boolean isOutputSupportedFor(int);
+    method public boolean isOutputSupportedFor(@NonNull android.view.Surface);
+    field public static final int USECASE_LOW_LATENCY_SNAPSHOT = 6; // 0x6
+    field public static final int USECASE_PREVIEW = 0; // 0x0
+    field public static final int USECASE_RAW = 5; // 0x5
+    field public static final int USECASE_RECORD = 1; // 0x1
+    field public static final int USECASE_SNAPSHOT = 3; // 0x3
+    field public static final int USECASE_VIDEO_SNAPSHOT = 2; // 0x2
+    field public static final int USECASE_ZSL = 4; // 0x4
+  }
+
+  public final class RggbChannelVector {
+    ctor public RggbChannelVector(float, float, float, float);
+    method public void copyTo(float[], int);
+    method public float getBlue();
+    method public float getComponent(int);
+    method public float getGreenEven();
+    method public float getGreenOdd();
+    method public float getRed();
+    field public static final int BLUE = 3; // 0x3
+    field public static final int COUNT = 4; // 0x4
+    field public static final int GREEN_EVEN = 1; // 0x1
+    field public static final int GREEN_ODD = 2; // 0x2
+    field public static final int RED = 0; // 0x0
+  }
+
+  public final class SessionConfiguration implements android.os.Parcelable {
+    ctor public SessionConfiguration(int, @NonNull java.util.List<android.hardware.camera2.params.OutputConfiguration>, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback);
+    method public int describeContents();
+    method public java.util.concurrent.Executor getExecutor();
+    method public android.hardware.camera2.params.InputConfiguration getInputConfiguration();
+    method public java.util.List<android.hardware.camera2.params.OutputConfiguration> getOutputConfigurations();
+    method public android.hardware.camera2.CaptureRequest getSessionParameters();
+    method public int getSessionType();
+    method public android.hardware.camera2.CameraCaptureSession.StateCallback getStateCallback();
+    method public void setInputConfiguration(@NonNull android.hardware.camera2.params.InputConfiguration);
+    method public void setSessionParameters(android.hardware.camera2.CaptureRequest);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.camera2.params.SessionConfiguration> CREATOR;
+    field public static final int SESSION_HIGH_SPEED = 1; // 0x1
+    field public static final int SESSION_REGULAR = 0; // 0x0
+  }
+
+  public final class StreamConfigurationMap {
+    method public android.util.Size[] getHighResolutionOutputSizes(int);
+    method public android.util.Range<java.lang.Integer>[] getHighSpeedVideoFpsRanges();
+    method public android.util.Range<java.lang.Integer>[] getHighSpeedVideoFpsRangesFor(android.util.Size);
+    method public android.util.Size[] getHighSpeedVideoSizes();
+    method public android.util.Size[] getHighSpeedVideoSizesFor(android.util.Range<java.lang.Integer>);
+    method public int[] getInputFormats();
+    method public android.util.Size[] getInputSizes(int);
+    method public int[] getOutputFormats();
+    method public long getOutputMinFrameDuration(int, android.util.Size);
+    method public <T> long getOutputMinFrameDuration(Class<T>, android.util.Size);
+    method public <T> android.util.Size[] getOutputSizes(Class<T>);
+    method public android.util.Size[] getOutputSizes(int);
+    method public long getOutputStallDuration(int, android.util.Size);
+    method public <T> long getOutputStallDuration(Class<T>, android.util.Size);
+    method public int[] getValidOutputFormatsForInput(int);
+    method public boolean isOutputSupportedFor(int);
+    method public static <T> boolean isOutputSupportedFor(Class<T>);
+    method public boolean isOutputSupportedFor(android.view.Surface);
+  }
+
+  public final class TonemapCurve {
+    ctor public TonemapCurve(float[], float[], float[]);
+    method public void copyColorCurve(int, float[], int);
+    method public android.graphics.PointF getPoint(int, int);
+    method public int getPointCount(int);
+    field public static final int CHANNEL_BLUE = 2; // 0x2
+    field public static final int CHANNEL_GREEN = 1; // 0x1
+    field public static final int CHANNEL_RED = 0; // 0x0
+    field public static final float LEVEL_BLACK = 0.0f;
+    field public static final float LEVEL_WHITE = 1.0f;
+    field public static final int POINT_SIZE = 2; // 0x2
+  }
+
+}
+
+package android.hardware.display {
+
+  public final class DisplayManager {
+    method public android.hardware.display.VirtualDisplay createVirtualDisplay(@NonNull String, int, int, int, @Nullable android.view.Surface, int);
+    method public android.hardware.display.VirtualDisplay createVirtualDisplay(@NonNull String, int, int, int, @Nullable android.view.Surface, int, @Nullable android.hardware.display.VirtualDisplay.Callback, @Nullable android.os.Handler);
+    method public android.view.Display getDisplay(int);
+    method public android.view.Display[] getDisplays();
+    method public android.view.Display[] getDisplays(String);
+    method public void registerDisplayListener(android.hardware.display.DisplayManager.DisplayListener, android.os.Handler);
+    method public void unregisterDisplayListener(android.hardware.display.DisplayManager.DisplayListener);
+    field public static final String DISPLAY_CATEGORY_PRESENTATION = "android.hardware.display.category.PRESENTATION";
+    field public static final int VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR = 16; // 0x10
+    field public static final int VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY = 8; // 0x8
+    field public static final int VIRTUAL_DISPLAY_FLAG_PRESENTATION = 2; // 0x2
+    field public static final int VIRTUAL_DISPLAY_FLAG_PUBLIC = 1; // 0x1
+    field public static final int VIRTUAL_DISPLAY_FLAG_SECURE = 4; // 0x4
+  }
+
+  public static interface DisplayManager.DisplayListener {
+    method public void onDisplayAdded(int);
+    method public void onDisplayChanged(int);
+    method public void onDisplayRemoved(int);
+  }
+
+  public final class VirtualDisplay {
+    method public android.view.Display getDisplay();
+    method public android.view.Surface getSurface();
+    method public void release();
+    method public void resize(int, int, int);
+    method public void setSurface(android.view.Surface);
+  }
+
+  public abstract static class VirtualDisplay.Callback {
+    ctor public VirtualDisplay.Callback();
+    method public void onPaused();
+    method public void onResumed();
+    method public void onStopped();
+  }
+
+}
+
+package android.hardware.fingerprint {
+
+  @Deprecated public class FingerprintManager {
+    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.USE_BIOMETRIC, android.Manifest.permission.USE_FINGERPRINT}) public void authenticate(@Nullable android.hardware.fingerprint.FingerprintManager.CryptoObject, @Nullable android.os.CancellationSignal, int, @NonNull android.hardware.fingerprint.FingerprintManager.AuthenticationCallback, @Nullable android.os.Handler);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public boolean hasEnrolledFingerprints();
+    method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public boolean isHardwareDetected();
+    field public static final int FINGERPRINT_ACQUIRED_GOOD = 0; // 0x0
+    field public static final int FINGERPRINT_ACQUIRED_IMAGER_DIRTY = 3; // 0x3
+    field public static final int FINGERPRINT_ACQUIRED_INSUFFICIENT = 2; // 0x2
+    field public static final int FINGERPRINT_ACQUIRED_PARTIAL = 1; // 0x1
+    field public static final int FINGERPRINT_ACQUIRED_TOO_FAST = 5; // 0x5
+    field public static final int FINGERPRINT_ACQUIRED_TOO_SLOW = 4; // 0x4
+    field public static final int FINGERPRINT_ERROR_CANCELED = 5; // 0x5
+    field public static final int FINGERPRINT_ERROR_HW_NOT_PRESENT = 12; // 0xc
+    field public static final int FINGERPRINT_ERROR_HW_UNAVAILABLE = 1; // 0x1
+    field public static final int FINGERPRINT_ERROR_LOCKOUT = 7; // 0x7
+    field public static final int FINGERPRINT_ERROR_LOCKOUT_PERMANENT = 9; // 0x9
+    field public static final int FINGERPRINT_ERROR_NO_FINGERPRINTS = 11; // 0xb
+    field public static final int FINGERPRINT_ERROR_NO_SPACE = 4; // 0x4
+    field public static final int FINGERPRINT_ERROR_TIMEOUT = 3; // 0x3
+    field public static final int FINGERPRINT_ERROR_UNABLE_TO_PROCESS = 2; // 0x2
+    field public static final int FINGERPRINT_ERROR_USER_CANCELED = 10; // 0xa
+    field public static final int FINGERPRINT_ERROR_VENDOR = 8; // 0x8
+  }
+
+  @Deprecated public abstract static class FingerprintManager.AuthenticationCallback {
+    ctor @Deprecated public FingerprintManager.AuthenticationCallback();
+    method @Deprecated public void onAuthenticationError(int, CharSequence);
+    method @Deprecated public void onAuthenticationFailed();
+    method @Deprecated public void onAuthenticationHelp(int, CharSequence);
+    method @Deprecated public void onAuthenticationSucceeded(android.hardware.fingerprint.FingerprintManager.AuthenticationResult);
+  }
+
+  @Deprecated public static class FingerprintManager.AuthenticationResult {
+    method @Deprecated public android.hardware.fingerprint.FingerprintManager.CryptoObject getCryptoObject();
+  }
+
+  @Deprecated public static final class FingerprintManager.CryptoObject {
+    ctor @Deprecated public FingerprintManager.CryptoObject(@NonNull java.security.Signature);
+    ctor @Deprecated public FingerprintManager.CryptoObject(@NonNull javax.crypto.Cipher);
+    ctor @Deprecated public FingerprintManager.CryptoObject(@NonNull javax.crypto.Mac);
+    method @Deprecated public javax.crypto.Cipher getCipher();
+    method @Deprecated public javax.crypto.Mac getMac();
+    method @Deprecated public java.security.Signature getSignature();
+  }
+
+}
+
+package android.hardware.input {
+
+  public final class InputManager {
+    method public android.view.InputDevice getInputDevice(int);
+    method public int[] getInputDeviceIds();
+    method public void registerInputDeviceListener(android.hardware.input.InputManager.InputDeviceListener, android.os.Handler);
+    method public void unregisterInputDeviceListener(android.hardware.input.InputManager.InputDeviceListener);
+    method @Nullable public android.view.VerifiedInputEvent verifyInputEvent(@NonNull android.view.InputEvent);
+    field public static final String ACTION_QUERY_KEYBOARD_LAYOUTS = "android.hardware.input.action.QUERY_KEYBOARD_LAYOUTS";
+    field public static final String META_DATA_KEYBOARD_LAYOUTS = "android.hardware.input.metadata.KEYBOARD_LAYOUTS";
+  }
+
+  public static interface InputManager.InputDeviceListener {
+    method public void onInputDeviceAdded(int);
+    method public void onInputDeviceChanged(int);
+    method public void onInputDeviceRemoved(int);
+  }
+
+}
+
+package android.hardware.usb {
+
+  public class UsbAccessory implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public String getDescription();
+    method @NonNull public String getManufacturer();
+    method @NonNull public String getModel();
+    method @Nullable public String getSerial();
+    method @Nullable public String getUri();
+    method @Nullable public String getVersion();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.usb.UsbAccessory> CREATOR;
+  }
+
+  public class UsbConfiguration implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getId();
+    method @NonNull public android.hardware.usb.UsbInterface getInterface(int);
+    method public int getInterfaceCount();
+    method public int getMaxPower();
+    method @Nullable public String getName();
+    method public boolean isRemoteWakeup();
+    method public boolean isSelfPowered();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.usb.UsbConfiguration> CREATOR;
+  }
+
+  public final class UsbConstants {
+    ctor public UsbConstants();
+    field public static final int USB_CLASS_APP_SPEC = 254; // 0xfe
+    field public static final int USB_CLASS_AUDIO = 1; // 0x1
+    field public static final int USB_CLASS_CDC_DATA = 10; // 0xa
+    field public static final int USB_CLASS_COMM = 2; // 0x2
+    field public static final int USB_CLASS_CONTENT_SEC = 13; // 0xd
+    field public static final int USB_CLASS_CSCID = 11; // 0xb
+    field public static final int USB_CLASS_HID = 3; // 0x3
+    field public static final int USB_CLASS_HUB = 9; // 0x9
+    field public static final int USB_CLASS_MASS_STORAGE = 8; // 0x8
+    field public static final int USB_CLASS_MISC = 239; // 0xef
+    field public static final int USB_CLASS_PER_INTERFACE = 0; // 0x0
+    field public static final int USB_CLASS_PHYSICA = 5; // 0x5
+    field public static final int USB_CLASS_PRINTER = 7; // 0x7
+    field public static final int USB_CLASS_STILL_IMAGE = 6; // 0x6
+    field public static final int USB_CLASS_VENDOR_SPEC = 255; // 0xff
+    field public static final int USB_CLASS_VIDEO = 14; // 0xe
+    field public static final int USB_CLASS_WIRELESS_CONTROLLER = 224; // 0xe0
+    field public static final int USB_DIR_IN = 128; // 0x80
+    field public static final int USB_DIR_OUT = 0; // 0x0
+    field public static final int USB_ENDPOINT_DIR_MASK = 128; // 0x80
+    field public static final int USB_ENDPOINT_NUMBER_MASK = 15; // 0xf
+    field public static final int USB_ENDPOINT_XFERTYPE_MASK = 3; // 0x3
+    field public static final int USB_ENDPOINT_XFER_BULK = 2; // 0x2
+    field public static final int USB_ENDPOINT_XFER_CONTROL = 0; // 0x0
+    field public static final int USB_ENDPOINT_XFER_INT = 3; // 0x3
+    field public static final int USB_ENDPOINT_XFER_ISOC = 1; // 0x1
+    field public static final int USB_INTERFACE_SUBCLASS_BOOT = 1; // 0x1
+    field public static final int USB_SUBCLASS_VENDOR_SPEC = 255; // 0xff
+    field public static final int USB_TYPE_CLASS = 32; // 0x20
+    field public static final int USB_TYPE_MASK = 96; // 0x60
+    field public static final int USB_TYPE_RESERVED = 96; // 0x60
+    field public static final int USB_TYPE_STANDARD = 0; // 0x0
+    field public static final int USB_TYPE_VENDOR = 64; // 0x40
+  }
+
+  public class UsbDevice implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public android.hardware.usb.UsbConfiguration getConfiguration(int);
+    method public int getConfigurationCount();
+    method public int getDeviceClass();
+    method public int getDeviceId();
+    method public static int getDeviceId(String);
+    method @NonNull public String getDeviceName();
+    method public static String getDeviceName(int);
+    method public int getDeviceProtocol();
+    method public int getDeviceSubclass();
+    method @NonNull public android.hardware.usb.UsbInterface getInterface(int);
+    method public int getInterfaceCount();
+    method @Nullable public String getManufacturerName();
+    method public int getProductId();
+    method @Nullable public String getProductName();
+    method @Nullable public String getSerialNumber();
+    method public int getVendorId();
+    method @NonNull public String getVersion();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.usb.UsbDevice> CREATOR;
+  }
+
+  public class UsbDeviceConnection {
+    method public int bulkTransfer(android.hardware.usb.UsbEndpoint, byte[], int, int);
+    method public int bulkTransfer(android.hardware.usb.UsbEndpoint, byte[], int, int, int);
+    method public boolean claimInterface(android.hardware.usb.UsbInterface, boolean);
+    method public void close();
+    method public int controlTransfer(int, int, int, int, byte[], int, int);
+    method public int controlTransfer(int, int, int, int, byte[], int, int, int);
+    method public int getFileDescriptor();
+    method public byte[] getRawDescriptors();
+    method public String getSerial();
+    method public boolean releaseInterface(android.hardware.usb.UsbInterface);
+    method public android.hardware.usb.UsbRequest requestWait();
+    method public android.hardware.usb.UsbRequest requestWait(long) throws java.util.concurrent.TimeoutException;
+    method public boolean setConfiguration(android.hardware.usb.UsbConfiguration);
+    method public boolean setInterface(android.hardware.usb.UsbInterface);
+  }
+
+  public class UsbEndpoint implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getAddress();
+    method public int getAttributes();
+    method public int getDirection();
+    method public int getEndpointNumber();
+    method public int getInterval();
+    method public int getMaxPacketSize();
+    method public int getType();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.usb.UsbEndpoint> CREATOR;
+  }
+
+  public class UsbInterface implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getAlternateSetting();
+    method public android.hardware.usb.UsbEndpoint getEndpoint(int);
+    method public int getEndpointCount();
+    method public int getId();
+    method public int getInterfaceClass();
+    method public int getInterfaceProtocol();
+    method public int getInterfaceSubclass();
+    method @Nullable public String getName();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.usb.UsbInterface> CREATOR;
+  }
+
+  public class UsbManager {
+    method public android.hardware.usb.UsbAccessory[] getAccessoryList();
+    method public java.util.HashMap<java.lang.String,android.hardware.usb.UsbDevice> getDeviceList();
+    method public boolean hasPermission(android.hardware.usb.UsbDevice);
+    method public boolean hasPermission(android.hardware.usb.UsbAccessory);
+    method public android.os.ParcelFileDescriptor openAccessory(android.hardware.usb.UsbAccessory);
+    method public android.hardware.usb.UsbDeviceConnection openDevice(android.hardware.usb.UsbDevice);
+    method public void requestPermission(android.hardware.usb.UsbDevice, android.app.PendingIntent);
+    method public void requestPermission(android.hardware.usb.UsbAccessory, android.app.PendingIntent);
+    field public static final String ACTION_USB_ACCESSORY_ATTACHED = "android.hardware.usb.action.USB_ACCESSORY_ATTACHED";
+    field public static final String ACTION_USB_ACCESSORY_DETACHED = "android.hardware.usb.action.USB_ACCESSORY_DETACHED";
+    field public static final String ACTION_USB_DEVICE_ATTACHED = "android.hardware.usb.action.USB_DEVICE_ATTACHED";
+    field public static final String ACTION_USB_DEVICE_DETACHED = "android.hardware.usb.action.USB_DEVICE_DETACHED";
+    field public static final String EXTRA_ACCESSORY = "accessory";
+    field public static final String EXTRA_DEVICE = "device";
+    field public static final String EXTRA_PERMISSION_GRANTED = "permission";
+  }
+
+  public class UsbRequest {
+    ctor public UsbRequest();
+    method public boolean cancel();
+    method public void close();
+    method public Object getClientData();
+    method public android.hardware.usb.UsbEndpoint getEndpoint();
+    method public boolean initialize(android.hardware.usb.UsbDeviceConnection, android.hardware.usb.UsbEndpoint);
+    method @Deprecated public boolean queue(java.nio.ByteBuffer, int);
+    method public boolean queue(@Nullable java.nio.ByteBuffer);
+    method public void setClientData(Object);
+  }
+
+}
+
+package android.icu.lang {
+
+  public final class UCharacter implements android.icu.lang.UCharacterEnums.ECharacterCategory android.icu.lang.UCharacterEnums.ECharacterDirection {
+    method public static int charCount(int);
+    method public static int codePointAt(CharSequence, int);
+    method public static int codePointAt(char[], int);
+    method public static int codePointAt(char[], int, int);
+    method public static int codePointBefore(CharSequence, int);
+    method public static int codePointBefore(char[], int);
+    method public static int codePointBefore(char[], int, int);
+    method public static int codePointCount(CharSequence, int, int);
+    method public static int codePointCount(char[], int, int);
+    method public static int digit(int, int);
+    method public static int digit(int);
+    method public static int foldCase(int, boolean);
+    method public static String foldCase(String, boolean);
+    method public static int foldCase(int, int);
+    method public static String foldCase(String, int);
+    method public static char forDigit(int, int);
+    method public static android.icu.util.VersionInfo getAge(int);
+    method public static int getBidiPairedBracket(int);
+    method public static int getCharFromExtendedName(String);
+    method public static int getCharFromName(String);
+    method public static int getCharFromNameAlias(String);
+    method public static int getCodePoint(char, char);
+    method public static int getCodePoint(char);
+    method public static int getCombiningClass(int);
+    method public static int getDirection(int);
+    method public static byte getDirectionality(int);
+    method public static String getExtendedName(int);
+    method public static android.icu.util.ValueIterator getExtendedNameIterator();
+    method public static int getHanNumericValue(int);
+    method public static int getIntPropertyMaxValue(int);
+    method public static int getIntPropertyMinValue(int);
+    method public static int getIntPropertyValue(int, int);
+    method public static int getMirror(int);
+    method public static String getName(int);
+    method public static String getName(String, String);
+    method public static String getNameAlias(int);
+    method public static android.icu.util.ValueIterator getNameIterator();
+    method public static int getNumericValue(int);
+    method public static int getPropertyEnum(CharSequence);
+    method public static String getPropertyName(int, int);
+    method public static int getPropertyValueEnum(int, CharSequence);
+    method public static String getPropertyValueName(int, int, int);
+    method public static int getType(int);
+    method public static android.icu.util.RangeValueIterator getTypeIterator();
+    method public static double getUnicodeNumericValue(int);
+    method public static android.icu.util.VersionInfo getUnicodeVersion();
+    method public static boolean hasBinaryProperty(int, int);
+    method public static boolean isBMP(int);
+    method public static boolean isBaseForm(int);
+    method public static boolean isDefined(int);
+    method public static boolean isDigit(int);
+    method public static boolean isHighSurrogate(char);
+    method public static boolean isISOControl(int);
+    method public static boolean isIdentifierIgnorable(int);
+    method public static boolean isJavaIdentifierPart(int);
+    method public static boolean isJavaIdentifierStart(int);
+    method public static boolean isLegal(int);
+    method public static boolean isLegal(String);
+    method public static boolean isLetter(int);
+    method public static boolean isLetterOrDigit(int);
+    method public static boolean isLowSurrogate(char);
+    method public static boolean isLowerCase(int);
+    method public static boolean isMirrored(int);
+    method public static boolean isPrintable(int);
+    method public static boolean isSpaceChar(int);
+    method public static boolean isSupplementary(int);
+    method public static boolean isSupplementaryCodePoint(int);
+    method public static boolean isSurrogatePair(char, char);
+    method public static boolean isTitleCase(int);
+    method public static boolean isUAlphabetic(int);
+    method public static boolean isULowercase(int);
+    method public static boolean isUUppercase(int);
+    method public static boolean isUWhiteSpace(int);
+    method public static boolean isUnicodeIdentifierPart(int);
+    method public static boolean isUnicodeIdentifierStart(int);
+    method public static boolean isUpperCase(int);
+    method public static boolean isValidCodePoint(int);
+    method public static boolean isWhitespace(int);
+    method public static int offsetByCodePoints(CharSequence, int, int);
+    method public static int offsetByCodePoints(char[], int, int, int, int);
+    method public static int toChars(int, char[], int);
+    method public static char[] toChars(int);
+    method public static int toCodePoint(char, char);
+    method public static int toLowerCase(int);
+    method public static String toLowerCase(String);
+    method public static String toLowerCase(java.util.Locale, String);
+    method public static String toLowerCase(android.icu.util.ULocale, String);
+    method public static String toString(int);
+    method public static int toTitleCase(int);
+    method public static String toTitleCase(String, android.icu.text.BreakIterator);
+    method public static String toTitleCase(java.util.Locale, String, android.icu.text.BreakIterator);
+    method public static String toTitleCase(android.icu.util.ULocale, String, android.icu.text.BreakIterator);
+    method public static String toTitleCase(android.icu.util.ULocale, String, android.icu.text.BreakIterator, int);
+    method public static String toTitleCase(java.util.Locale, String, android.icu.text.BreakIterator, int);
+    method public static int toUpperCase(int);
+    method public static String toUpperCase(String);
+    method public static String toUpperCase(java.util.Locale, String);
+    method public static String toUpperCase(android.icu.util.ULocale, String);
+    field public static final int FOLD_CASE_DEFAULT = 0; // 0x0
+    field public static final int FOLD_CASE_EXCLUDE_SPECIAL_I = 1; // 0x1
+    field public static final int MAX_CODE_POINT = 1114111; // 0x10ffff
+    field public static final char MAX_HIGH_SURROGATE = 56319; // 0xdbff '\udbff'
+    field public static final char MAX_LOW_SURROGATE = 57343; // 0xdfff '\udfff'
+    field public static final int MAX_RADIX = 36; // 0x24
+    field public static final char MAX_SURROGATE = 57343; // 0xdfff '\udfff'
+    field public static final int MAX_VALUE = 1114111; // 0x10ffff
+    field public static final int MIN_CODE_POINT = 0; // 0x0
+    field public static final char MIN_HIGH_SURROGATE = 55296; // 0xd800 '\ud800'
+    field public static final char MIN_LOW_SURROGATE = 56320; // 0xdc00 '\udc00'
+    field public static final int MIN_RADIX = 2; // 0x2
+    field public static final int MIN_SUPPLEMENTARY_CODE_POINT = 65536; // 0x10000
+    field public static final char MIN_SURROGATE = 55296; // 0xd800 '\ud800'
+    field public static final int MIN_VALUE = 0; // 0x0
+    field public static final double NO_NUMERIC_VALUE = -1.23456789E8;
+    field public static final int REPLACEMENT_CHAR = 65533; // 0xfffd
+    field public static final int SUPPLEMENTARY_MIN_VALUE = 65536; // 0x10000
+    field public static final int TITLECASE_NO_BREAK_ADJUSTMENT = 512; // 0x200
+    field public static final int TITLECASE_NO_LOWERCASE = 256; // 0x100
+  }
+
+  public static interface UCharacter.BidiPairedBracketType {
+    field public static final int CLOSE = 2; // 0x2
+    field public static final int NONE = 0; // 0x0
+    field public static final int OPEN = 1; // 0x1
+  }
+
+  public static interface UCharacter.DecompositionType {
+    field public static final int CANONICAL = 1; // 0x1
+    field public static final int CIRCLE = 3; // 0x3
+    field public static final int COMPAT = 2; // 0x2
+    field public static final int FINAL = 4; // 0x4
+    field public static final int FONT = 5; // 0x5
+    field public static final int FRACTION = 6; // 0x6
+    field public static final int INITIAL = 7; // 0x7
+    field public static final int ISOLATED = 8; // 0x8
+    field public static final int MEDIAL = 9; // 0x9
+    field public static final int NARROW = 10; // 0xa
+    field public static final int NOBREAK = 11; // 0xb
+    field public static final int NONE = 0; // 0x0
+    field public static final int SMALL = 12; // 0xc
+    field public static final int SQUARE = 13; // 0xd
+    field public static final int SUB = 14; // 0xe
+    field public static final int SUPER = 15; // 0xf
+    field public static final int VERTICAL = 16; // 0x10
+    field public static final int WIDE = 17; // 0x11
+  }
+
+  public static interface UCharacter.EastAsianWidth {
+    field public static final int AMBIGUOUS = 1; // 0x1
+    field public static final int FULLWIDTH = 3; // 0x3
+    field public static final int HALFWIDTH = 2; // 0x2
+    field public static final int NARROW = 4; // 0x4
+    field public static final int NEUTRAL = 0; // 0x0
+    field public static final int WIDE = 5; // 0x5
+  }
+
+  public static interface UCharacter.GraphemeClusterBreak {
+    field public static final int CONTROL = 1; // 0x1
+    field public static final int CR = 2; // 0x2
+    field public static final int EXTEND = 3; // 0x3
+    field public static final int E_BASE = 13; // 0xd
+    field public static final int E_BASE_GAZ = 14; // 0xe
+    field public static final int E_MODIFIER = 15; // 0xf
+    field public static final int GLUE_AFTER_ZWJ = 16; // 0x10
+    field public static final int L = 4; // 0x4
+    field public static final int LF = 5; // 0x5
+    field public static final int LV = 6; // 0x6
+    field public static final int LVT = 7; // 0x7
+    field public static final int OTHER = 0; // 0x0
+    field public static final int PREPEND = 11; // 0xb
+    field public static final int REGIONAL_INDICATOR = 12; // 0xc
+    field public static final int SPACING_MARK = 10; // 0xa
+    field public static final int T = 8; // 0x8
+    field public static final int V = 9; // 0x9
+    field public static final int ZWJ = 17; // 0x11
+  }
+
+  public static interface UCharacter.HangulSyllableType {
+    field public static final int LEADING_JAMO = 1; // 0x1
+    field public static final int LVT_SYLLABLE = 5; // 0x5
+    field public static final int LV_SYLLABLE = 4; // 0x4
+    field public static final int NOT_APPLICABLE = 0; // 0x0
+    field public static final int TRAILING_JAMO = 3; // 0x3
+    field public static final int VOWEL_JAMO = 2; // 0x2
+  }
+
+  public static interface UCharacter.IndicPositionalCategory {
+    field public static final int BOTTOM = 1; // 0x1
+    field public static final int BOTTOM_AND_LEFT = 2; // 0x2
+    field public static final int BOTTOM_AND_RIGHT = 3; // 0x3
+    field public static final int LEFT = 4; // 0x4
+    field public static final int LEFT_AND_RIGHT = 5; // 0x5
+    field public static final int NA = 0; // 0x0
+    field public static final int OVERSTRUCK = 6; // 0x6
+    field public static final int RIGHT = 7; // 0x7
+    field public static final int TOP = 8; // 0x8
+    field public static final int TOP_AND_BOTTOM = 9; // 0x9
+    field public static final int TOP_AND_BOTTOM_AND_LEFT = 15; // 0xf
+    field public static final int TOP_AND_BOTTOM_AND_RIGHT = 10; // 0xa
+    field public static final int TOP_AND_LEFT = 11; // 0xb
+    field public static final int TOP_AND_LEFT_AND_RIGHT = 12; // 0xc
+    field public static final int TOP_AND_RIGHT = 13; // 0xd
+    field public static final int VISUAL_ORDER_LEFT = 14; // 0xe
+  }
+
+  public static interface UCharacter.IndicSyllabicCategory {
+    field public static final int AVAGRAHA = 1; // 0x1
+    field public static final int BINDU = 2; // 0x2
+    field public static final int BRAHMI_JOINING_NUMBER = 3; // 0x3
+    field public static final int CANTILLATION_MARK = 4; // 0x4
+    field public static final int CONSONANT = 5; // 0x5
+    field public static final int CONSONANT_DEAD = 6; // 0x6
+    field public static final int CONSONANT_FINAL = 7; // 0x7
+    field public static final int CONSONANT_HEAD_LETTER = 8; // 0x8
+    field public static final int CONSONANT_INITIAL_POSTFIXED = 9; // 0x9
+    field public static final int CONSONANT_KILLER = 10; // 0xa
+    field public static final int CONSONANT_MEDIAL = 11; // 0xb
+    field public static final int CONSONANT_PLACEHOLDER = 12; // 0xc
+    field public static final int CONSONANT_PRECEDING_REPHA = 13; // 0xd
+    field public static final int CONSONANT_PREFIXED = 14; // 0xe
+    field public static final int CONSONANT_SUBJOINED = 15; // 0xf
+    field public static final int CONSONANT_SUCCEEDING_REPHA = 16; // 0x10
+    field public static final int CONSONANT_WITH_STACKER = 17; // 0x11
+    field public static final int GEMINATION_MARK = 18; // 0x12
+    field public static final int INVISIBLE_STACKER = 19; // 0x13
+    field public static final int JOINER = 20; // 0x14
+    field public static final int MODIFYING_LETTER = 21; // 0x15
+    field public static final int NON_JOINER = 22; // 0x16
+    field public static final int NUKTA = 23; // 0x17
+    field public static final int NUMBER = 24; // 0x18
+    field public static final int NUMBER_JOINER = 25; // 0x19
+    field public static final int OTHER = 0; // 0x0
+    field public static final int PURE_KILLER = 26; // 0x1a
+    field public static final int REGISTER_SHIFTER = 27; // 0x1b
+    field public static final int SYLLABLE_MODIFIER = 28; // 0x1c
+    field public static final int TONE_LETTER = 29; // 0x1d
+    field public static final int TONE_MARK = 30; // 0x1e
+    field public static final int VIRAMA = 31; // 0x1f
+    field public static final int VISARGA = 32; // 0x20
+    field public static final int VOWEL = 33; // 0x21
+    field public static final int VOWEL_DEPENDENT = 34; // 0x22
+    field public static final int VOWEL_INDEPENDENT = 35; // 0x23
+  }
+
+  public static interface UCharacter.JoiningGroup {
+    field public static final int AFRICAN_FEH = 86; // 0x56
+    field public static final int AFRICAN_NOON = 87; // 0x57
+    field public static final int AFRICAN_QAF = 88; // 0x58
+    field public static final int AIN = 1; // 0x1
+    field public static final int ALAPH = 2; // 0x2
+    field public static final int ALEF = 3; // 0x3
+    field public static final int BEH = 4; // 0x4
+    field public static final int BETH = 5; // 0x5
+    field public static final int BURUSHASKI_YEH_BARREE = 54; // 0x36
+    field public static final int DAL = 6; // 0x6
+    field public static final int DALATH_RISH = 7; // 0x7
+    field public static final int E = 8; // 0x8
+    field public static final int FARSI_YEH = 55; // 0x37
+    field public static final int FE = 51; // 0x33
+    field public static final int FEH = 9; // 0x9
+    field public static final int FINAL_SEMKATH = 10; // 0xa
+    field public static final int GAF = 11; // 0xb
+    field public static final int GAMAL = 12; // 0xc
+    field public static final int HAH = 13; // 0xd
+    field public static final int HAMZA_ON_HEH_GOAL = 14; // 0xe
+    field public static final int HANIFI_ROHINGYA_KINNA_YA = 100; // 0x64
+    field public static final int HANIFI_ROHINGYA_PA = 101; // 0x65
+    field public static final int HE = 15; // 0xf
+    field public static final int HEH = 16; // 0x10
+    field public static final int HEH_GOAL = 17; // 0x11
+    field public static final int HETH = 18; // 0x12
+    field public static final int KAF = 19; // 0x13
+    field public static final int KAPH = 20; // 0x14
+    field public static final int KHAPH = 52; // 0x34
+    field public static final int KNOTTED_HEH = 21; // 0x15
+    field public static final int LAM = 22; // 0x16
+    field public static final int LAMADH = 23; // 0x17
+    field public static final int MALAYALAM_BHA = 89; // 0x59
+    field public static final int MALAYALAM_JA = 90; // 0x5a
+    field public static final int MALAYALAM_LLA = 91; // 0x5b
+    field public static final int MALAYALAM_LLLA = 92; // 0x5c
+    field public static final int MALAYALAM_NGA = 93; // 0x5d
+    field public static final int MALAYALAM_NNA = 94; // 0x5e
+    field public static final int MALAYALAM_NNNA = 95; // 0x5f
+    field public static final int MALAYALAM_NYA = 96; // 0x60
+    field public static final int MALAYALAM_RA = 97; // 0x61
+    field public static final int MALAYALAM_SSA = 98; // 0x62
+    field public static final int MALAYALAM_TTA = 99; // 0x63
+    field public static final int MANICHAEAN_ALEPH = 58; // 0x3a
+    field public static final int MANICHAEAN_AYIN = 59; // 0x3b
+    field public static final int MANICHAEAN_BETH = 60; // 0x3c
+    field public static final int MANICHAEAN_DALETH = 61; // 0x3d
+    field public static final int MANICHAEAN_DHAMEDH = 62; // 0x3e
+    field public static final int MANICHAEAN_FIVE = 63; // 0x3f
+    field public static final int MANICHAEAN_GIMEL = 64; // 0x40
+    field public static final int MANICHAEAN_HETH = 65; // 0x41
+    field public static final int MANICHAEAN_HUNDRED = 66; // 0x42
+    field public static final int MANICHAEAN_KAPH = 67; // 0x43
+    field public static final int MANICHAEAN_LAMEDH = 68; // 0x44
+    field public static final int MANICHAEAN_MEM = 69; // 0x45
+    field public static final int MANICHAEAN_NUN = 70; // 0x46
+    field public static final int MANICHAEAN_ONE = 71; // 0x47
+    field public static final int MANICHAEAN_PE = 72; // 0x48
+    field public static final int MANICHAEAN_QOPH = 73; // 0x49
+    field public static final int MANICHAEAN_RESH = 74; // 0x4a
+    field public static final int MANICHAEAN_SADHE = 75; // 0x4b
+    field public static final int MANICHAEAN_SAMEKH = 76; // 0x4c
+    field public static final int MANICHAEAN_TAW = 77; // 0x4d
+    field public static final int MANICHAEAN_TEN = 78; // 0x4e
+    field public static final int MANICHAEAN_TETH = 79; // 0x4f
+    field public static final int MANICHAEAN_THAMEDH = 80; // 0x50
+    field public static final int MANICHAEAN_TWENTY = 81; // 0x51
+    field public static final int MANICHAEAN_WAW = 82; // 0x52
+    field public static final int MANICHAEAN_YODH = 83; // 0x53
+    field public static final int MANICHAEAN_ZAYIN = 84; // 0x54
+    field public static final int MEEM = 24; // 0x18
+    field public static final int MIM = 25; // 0x19
+    field public static final int NOON = 26; // 0x1a
+    field public static final int NO_JOINING_GROUP = 0; // 0x0
+    field public static final int NUN = 27; // 0x1b
+    field public static final int NYA = 56; // 0x38
+    field public static final int PE = 28; // 0x1c
+    field public static final int QAF = 29; // 0x1d
+    field public static final int QAPH = 30; // 0x1e
+    field public static final int REH = 31; // 0x1f
+    field public static final int REVERSED_PE = 32; // 0x20
+    field public static final int ROHINGYA_YEH = 57; // 0x39
+    field public static final int SAD = 33; // 0x21
+    field public static final int SADHE = 34; // 0x22
+    field public static final int SEEN = 35; // 0x23
+    field public static final int SEMKATH = 36; // 0x24
+    field public static final int SHIN = 37; // 0x25
+    field public static final int STRAIGHT_WAW = 85; // 0x55
+    field public static final int SWASH_KAF = 38; // 0x26
+    field public static final int SYRIAC_WAW = 39; // 0x27
+    field public static final int TAH = 40; // 0x28
+    field public static final int TAW = 41; // 0x29
+    field public static final int TEH_MARBUTA = 42; // 0x2a
+    field public static final int TEH_MARBUTA_GOAL = 14; // 0xe
+    field public static final int TETH = 43; // 0x2b
+    field public static final int WAW = 44; // 0x2c
+    field public static final int YEH = 45; // 0x2d
+    field public static final int YEH_BARREE = 46; // 0x2e
+    field public static final int YEH_WITH_TAIL = 47; // 0x2f
+    field public static final int YUDH = 48; // 0x30
+    field public static final int YUDH_HE = 49; // 0x31
+    field public static final int ZAIN = 50; // 0x32
+    field public static final int ZHAIN = 53; // 0x35
+  }
+
+  public static interface UCharacter.JoiningType {
+    field public static final int DUAL_JOINING = 2; // 0x2
+    field public static final int JOIN_CAUSING = 1; // 0x1
+    field public static final int LEFT_JOINING = 3; // 0x3
+    field public static final int NON_JOINING = 0; // 0x0
+    field public static final int RIGHT_JOINING = 4; // 0x4
+    field public static final int TRANSPARENT = 5; // 0x5
+  }
+
+  public static interface UCharacter.LineBreak {
+    field public static final int ALPHABETIC = 2; // 0x2
+    field public static final int AMBIGUOUS = 1; // 0x1
+    field public static final int BREAK_AFTER = 4; // 0x4
+    field public static final int BREAK_BEFORE = 5; // 0x5
+    field public static final int BREAK_BOTH = 3; // 0x3
+    field public static final int BREAK_SYMBOLS = 27; // 0x1b
+    field public static final int CARRIAGE_RETURN = 10; // 0xa
+    field public static final int CLOSE_PARENTHESIS = 36; // 0x24
+    field public static final int CLOSE_PUNCTUATION = 8; // 0x8
+    field public static final int COMBINING_MARK = 9; // 0x9
+    field public static final int COMPLEX_CONTEXT = 24; // 0x18
+    field public static final int CONDITIONAL_JAPANESE_STARTER = 37; // 0x25
+    field public static final int CONTINGENT_BREAK = 7; // 0x7
+    field public static final int EXCLAMATION = 11; // 0xb
+    field public static final int E_BASE = 40; // 0x28
+    field public static final int E_MODIFIER = 41; // 0x29
+    field public static final int GLUE = 12; // 0xc
+    field public static final int H2 = 31; // 0x1f
+    field public static final int H3 = 32; // 0x20
+    field public static final int HEBREW_LETTER = 38; // 0x26
+    field public static final int HYPHEN = 13; // 0xd
+    field public static final int IDEOGRAPHIC = 14; // 0xe
+    field public static final int INFIX_NUMERIC = 16; // 0x10
+    field public static final int INSEPARABLE = 15; // 0xf
+    field public static final int INSEPERABLE = 15; // 0xf
+    field public static final int JL = 33; // 0x21
+    field public static final int JT = 34; // 0x22
+    field public static final int JV = 35; // 0x23
+    field public static final int LINE_FEED = 17; // 0x11
+    field public static final int MANDATORY_BREAK = 6; // 0x6
+    field public static final int NEXT_LINE = 29; // 0x1d
+    field public static final int NONSTARTER = 18; // 0x12
+    field public static final int NUMERIC = 19; // 0x13
+    field public static final int OPEN_PUNCTUATION = 20; // 0x14
+    field public static final int POSTFIX_NUMERIC = 21; // 0x15
+    field public static final int PREFIX_NUMERIC = 22; // 0x16
+    field public static final int QUOTATION = 23; // 0x17
+    field public static final int REGIONAL_INDICATOR = 39; // 0x27
+    field public static final int SPACE = 26; // 0x1a
+    field public static final int SURROGATE = 25; // 0x19
+    field public static final int UNKNOWN = 0; // 0x0
+    field public static final int WORD_JOINER = 30; // 0x1e
+    field public static final int ZWJ = 42; // 0x2a
+    field public static final int ZWSPACE = 28; // 0x1c
+  }
+
+  public static interface UCharacter.NumericType {
+    field public static final int DECIMAL = 1; // 0x1
+    field public static final int DIGIT = 2; // 0x2
+    field public static final int NONE = 0; // 0x0
+    field public static final int NUMERIC = 3; // 0x3
+  }
+
+  public static interface UCharacter.SentenceBreak {
+    field public static final int ATERM = 1; // 0x1
+    field public static final int CLOSE = 2; // 0x2
+    field public static final int CR = 11; // 0xb
+    field public static final int EXTEND = 12; // 0xc
+    field public static final int FORMAT = 3; // 0x3
+    field public static final int LF = 13; // 0xd
+    field public static final int LOWER = 4; // 0x4
+    field public static final int NUMERIC = 5; // 0x5
+    field public static final int OLETTER = 6; // 0x6
+    field public static final int OTHER = 0; // 0x0
+    field public static final int SCONTINUE = 14; // 0xe
+    field public static final int SEP = 7; // 0x7
+    field public static final int SP = 8; // 0x8
+    field public static final int STERM = 9; // 0x9
+    field public static final int UPPER = 10; // 0xa
+  }
+
+  public static final class UCharacter.UnicodeBlock extends java.lang.Character.Subset {
+    method public static android.icu.lang.UCharacter.UnicodeBlock forName(String);
+    method public int getID();
+    method public static android.icu.lang.UCharacter.UnicodeBlock getInstance(int);
+    method public static android.icu.lang.UCharacter.UnicodeBlock of(int);
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ADLAM;
+    field public static final int ADLAM_ID = 263; // 0x107
+    field public static final android.icu.lang.UCharacter.UnicodeBlock AEGEAN_NUMBERS;
+    field public static final int AEGEAN_NUMBERS_ID = 119; // 0x77
+    field public static final android.icu.lang.UCharacter.UnicodeBlock AHOM;
+    field public static final int AHOM_ID = 253; // 0xfd
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ALCHEMICAL_SYMBOLS;
+    field public static final int ALCHEMICAL_SYMBOLS_ID = 208; // 0xd0
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ALPHABETIC_PRESENTATION_FORMS;
+    field public static final int ALPHABETIC_PRESENTATION_FORMS_ID = 80; // 0x50
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ANATOLIAN_HIEROGLYPHS;
+    field public static final int ANATOLIAN_HIEROGLYPHS_ID = 254; // 0xfe
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ANCIENT_GREEK_MUSICAL_NOTATION;
+    field public static final int ANCIENT_GREEK_MUSICAL_NOTATION_ID = 126; // 0x7e
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ANCIENT_GREEK_NUMBERS;
+    field public static final int ANCIENT_GREEK_NUMBERS_ID = 127; // 0x7f
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ANCIENT_SYMBOLS;
+    field public static final int ANCIENT_SYMBOLS_ID = 165; // 0xa5
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ARABIC;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ARABIC_EXTENDED_A;
+    field public static final int ARABIC_EXTENDED_A_ID = 210; // 0xd2
+    field public static final int ARABIC_ID = 12; // 0xc
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS;
+    field public static final int ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS_ID = 211; // 0xd3
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ARABIC_PRESENTATION_FORMS_A;
+    field public static final int ARABIC_PRESENTATION_FORMS_A_ID = 81; // 0x51
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ARABIC_PRESENTATION_FORMS_B;
+    field public static final int ARABIC_PRESENTATION_FORMS_B_ID = 85; // 0x55
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ARABIC_SUPPLEMENT;
+    field public static final int ARABIC_SUPPLEMENT_ID = 128; // 0x80
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ARMENIAN;
+    field public static final int ARMENIAN_ID = 10; // 0xa
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ARROWS;
+    field public static final int ARROWS_ID = 46; // 0x2e
+    field public static final android.icu.lang.UCharacter.UnicodeBlock AVESTAN;
+    field public static final int AVESTAN_ID = 188; // 0xbc
+    field public static final android.icu.lang.UCharacter.UnicodeBlock BALINESE;
+    field public static final int BALINESE_ID = 147; // 0x93
+    field public static final android.icu.lang.UCharacter.UnicodeBlock BAMUM;
+    field public static final int BAMUM_ID = 177; // 0xb1
+    field public static final android.icu.lang.UCharacter.UnicodeBlock BAMUM_SUPPLEMENT;
+    field public static final int BAMUM_SUPPLEMENT_ID = 202; // 0xca
+    field public static final android.icu.lang.UCharacter.UnicodeBlock BASIC_LATIN;
+    field public static final int BASIC_LATIN_ID = 1; // 0x1
+    field public static final android.icu.lang.UCharacter.UnicodeBlock BASSA_VAH;
+    field public static final int BASSA_VAH_ID = 221; // 0xdd
+    field public static final android.icu.lang.UCharacter.UnicodeBlock BATAK;
+    field public static final int BATAK_ID = 199; // 0xc7
+    field public static final android.icu.lang.UCharacter.UnicodeBlock BENGALI;
+    field public static final int BENGALI_ID = 16; // 0x10
+    field public static final android.icu.lang.UCharacter.UnicodeBlock BHAIKSUKI;
+    field public static final int BHAIKSUKI_ID = 264; // 0x108
+    field public static final android.icu.lang.UCharacter.UnicodeBlock BLOCK_ELEMENTS;
+    field public static final int BLOCK_ELEMENTS_ID = 53; // 0x35
+    field public static final android.icu.lang.UCharacter.UnicodeBlock BOPOMOFO;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock BOPOMOFO_EXTENDED;
+    field public static final int BOPOMOFO_EXTENDED_ID = 67; // 0x43
+    field public static final int BOPOMOFO_ID = 64; // 0x40
+    field public static final android.icu.lang.UCharacter.UnicodeBlock BOX_DRAWING;
+    field public static final int BOX_DRAWING_ID = 52; // 0x34
+    field public static final android.icu.lang.UCharacter.UnicodeBlock BRAHMI;
+    field public static final int BRAHMI_ID = 201; // 0xc9
+    field public static final android.icu.lang.UCharacter.UnicodeBlock BRAILLE_PATTERNS;
+    field public static final int BRAILLE_PATTERNS_ID = 57; // 0x39
+    field public static final android.icu.lang.UCharacter.UnicodeBlock BUGINESE;
+    field public static final int BUGINESE_ID = 129; // 0x81
+    field public static final android.icu.lang.UCharacter.UnicodeBlock BUHID;
+    field public static final int BUHID_ID = 100; // 0x64
+    field public static final android.icu.lang.UCharacter.UnicodeBlock BYZANTINE_MUSICAL_SYMBOLS;
+    field public static final int BYZANTINE_MUSICAL_SYMBOLS_ID = 91; // 0x5b
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CARIAN;
+    field public static final int CARIAN_ID = 168; // 0xa8
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CAUCASIAN_ALBANIAN;
+    field public static final int CAUCASIAN_ALBANIAN_ID = 222; // 0xde
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CHAKMA;
+    field public static final int CHAKMA_ID = 212; // 0xd4
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CHAM;
+    field public static final int CHAM_ID = 164; // 0xa4
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CHEROKEE;
+    field public static final int CHEROKEE_ID = 32; // 0x20
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CHEROKEE_SUPPLEMENT;
+    field public static final int CHEROKEE_SUPPLEMENT_ID = 255; // 0xff
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CHESS_SYMBOLS;
+    field public static final int CHESS_SYMBOLS_ID = 281; // 0x119
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CHORASMIAN;
+    field public static final int CHORASMIAN_ID = 301; // 0x12d
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_COMPATIBILITY;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_COMPATIBILITY_FORMS;
+    field public static final int CJK_COMPATIBILITY_FORMS_ID = 83; // 0x53
+    field public static final int CJK_COMPATIBILITY_ID = 69; // 0x45
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS;
+    field public static final int CJK_COMPATIBILITY_IDEOGRAPHS_ID = 79; // 0x4f
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT;
+    field public static final int CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_ID = 95; // 0x5f
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_RADICALS_SUPPLEMENT;
+    field public static final int CJK_RADICALS_SUPPLEMENT_ID = 58; // 0x3a
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_STROKES;
+    field public static final int CJK_STROKES_ID = 130; // 0x82
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_SYMBOLS_AND_PUNCTUATION;
+    field public static final int CJK_SYMBOLS_AND_PUNCTUATION_ID = 61; // 0x3d
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A;
+    field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_ID = 70; // 0x46
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B;
+    field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_ID = 94; // 0x5e
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C;
+    field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_ID = 197; // 0xc5
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D;
+    field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_ID = 209; // 0xd1
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E;
+    field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E_ID = 256; // 0x100
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F;
+    field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F_ID = 274; // 0x112
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G;
+    field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G_ID = 302; // 0x12e
+    field public static final int CJK_UNIFIED_IDEOGRAPHS_ID = 71; // 0x47
+    field public static final android.icu.lang.UCharacter.UnicodeBlock COMBINING_DIACRITICAL_MARKS;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock COMBINING_DIACRITICAL_MARKS_EXTENDED;
+    field public static final int COMBINING_DIACRITICAL_MARKS_EXTENDED_ID = 224; // 0xe0
+    field public static final int COMBINING_DIACRITICAL_MARKS_ID = 7; // 0x7
+    field public static final android.icu.lang.UCharacter.UnicodeBlock COMBINING_DIACRITICAL_MARKS_SUPPLEMENT;
+    field public static final int COMBINING_DIACRITICAL_MARKS_SUPPLEMENT_ID = 131; // 0x83
+    field public static final android.icu.lang.UCharacter.UnicodeBlock COMBINING_HALF_MARKS;
+    field public static final int COMBINING_HALF_MARKS_ID = 82; // 0x52
+    field public static final android.icu.lang.UCharacter.UnicodeBlock COMBINING_MARKS_FOR_SYMBOLS;
+    field public static final int COMBINING_MARKS_FOR_SYMBOLS_ID = 43; // 0x2b
+    field public static final android.icu.lang.UCharacter.UnicodeBlock COMMON_INDIC_NUMBER_FORMS;
+    field public static final int COMMON_INDIC_NUMBER_FORMS_ID = 178; // 0xb2
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CONTROL_PICTURES;
+    field public static final int CONTROL_PICTURES_ID = 49; // 0x31
+    field public static final android.icu.lang.UCharacter.UnicodeBlock COPTIC;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock COPTIC_EPACT_NUMBERS;
+    field public static final int COPTIC_EPACT_NUMBERS_ID = 223; // 0xdf
+    field public static final int COPTIC_ID = 132; // 0x84
+    field public static final android.icu.lang.UCharacter.UnicodeBlock COUNTING_ROD_NUMERALS;
+    field public static final int COUNTING_ROD_NUMERALS_ID = 154; // 0x9a
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CUNEIFORM;
+    field public static final int CUNEIFORM_ID = 152; // 0x98
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CUNEIFORM_NUMBERS_AND_PUNCTUATION;
+    field public static final int CUNEIFORM_NUMBERS_AND_PUNCTUATION_ID = 153; // 0x99
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CURRENCY_SYMBOLS;
+    field public static final int CURRENCY_SYMBOLS_ID = 42; // 0x2a
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CYPRIOT_SYLLABARY;
+    field public static final int CYPRIOT_SYLLABARY_ID = 123; // 0x7b
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CYRILLIC;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CYRILLIC_EXTENDED_A;
+    field public static final int CYRILLIC_EXTENDED_A_ID = 158; // 0x9e
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CYRILLIC_EXTENDED_B;
+    field public static final int CYRILLIC_EXTENDED_B_ID = 160; // 0xa0
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CYRILLIC_EXTENDED_C;
+    field public static final int CYRILLIC_EXTENDED_C_ID = 265; // 0x109
+    field public static final int CYRILLIC_ID = 9; // 0x9
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CYRILLIC_SUPPLEMENT;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock CYRILLIC_SUPPLEMENTARY;
+    field public static final int CYRILLIC_SUPPLEMENTARY_ID = 97; // 0x61
+    field public static final int CYRILLIC_SUPPLEMENT_ID = 97; // 0x61
+    field public static final android.icu.lang.UCharacter.UnicodeBlock DESERET;
+    field public static final int DESERET_ID = 90; // 0x5a
+    field public static final android.icu.lang.UCharacter.UnicodeBlock DEVANAGARI;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock DEVANAGARI_EXTENDED;
+    field public static final int DEVANAGARI_EXTENDED_ID = 179; // 0xb3
+    field public static final int DEVANAGARI_ID = 15; // 0xf
+    field public static final android.icu.lang.UCharacter.UnicodeBlock DINGBATS;
+    field public static final int DINGBATS_ID = 56; // 0x38
+    field public static final android.icu.lang.UCharacter.UnicodeBlock DIVES_AKURU;
+    field public static final int DIVES_AKURU_ID = 303; // 0x12f
+    field public static final android.icu.lang.UCharacter.UnicodeBlock DOGRA;
+    field public static final int DOGRA_ID = 282; // 0x11a
+    field public static final android.icu.lang.UCharacter.UnicodeBlock DOMINO_TILES;
+    field public static final int DOMINO_TILES_ID = 171; // 0xab
+    field public static final android.icu.lang.UCharacter.UnicodeBlock DUPLOYAN;
+    field public static final int DUPLOYAN_ID = 225; // 0xe1
+    field public static final android.icu.lang.UCharacter.UnicodeBlock EARLY_DYNASTIC_CUNEIFORM;
+    field public static final int EARLY_DYNASTIC_CUNEIFORM_ID = 257; // 0x101
+    field public static final android.icu.lang.UCharacter.UnicodeBlock EGYPTIAN_HIEROGLYPHS;
+    field public static final int EGYPTIAN_HIEROGLYPHS_ID = 194; // 0xc2
+    field public static final android.icu.lang.UCharacter.UnicodeBlock EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS;
+    field public static final int EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS_ID = 292; // 0x124
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ELBASAN;
+    field public static final int ELBASAN_ID = 226; // 0xe2
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ELYMAIC;
+    field public static final int ELYMAIC_ID = 293; // 0x125
+    field public static final android.icu.lang.UCharacter.UnicodeBlock EMOTICONS;
+    field public static final int EMOTICONS_ID = 206; // 0xce
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ENCLOSED_ALPHANUMERICS;
+    field public static final int ENCLOSED_ALPHANUMERICS_ID = 51; // 0x33
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ENCLOSED_ALPHANUMERIC_SUPPLEMENT;
+    field public static final int ENCLOSED_ALPHANUMERIC_SUPPLEMENT_ID = 195; // 0xc3
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ENCLOSED_CJK_LETTERS_AND_MONTHS;
+    field public static final int ENCLOSED_CJK_LETTERS_AND_MONTHS_ID = 68; // 0x44
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ENCLOSED_IDEOGRAPHIC_SUPPLEMENT;
+    field public static final int ENCLOSED_IDEOGRAPHIC_SUPPLEMENT_ID = 196; // 0xc4
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ETHIOPIC;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ETHIOPIC_EXTENDED;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ETHIOPIC_EXTENDED_A;
+    field public static final int ETHIOPIC_EXTENDED_A_ID = 200; // 0xc8
+    field public static final int ETHIOPIC_EXTENDED_ID = 133; // 0x85
+    field public static final int ETHIOPIC_ID = 31; // 0x1f
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ETHIOPIC_SUPPLEMENT;
+    field public static final int ETHIOPIC_SUPPLEMENT_ID = 134; // 0x86
+    field public static final android.icu.lang.UCharacter.UnicodeBlock GENERAL_PUNCTUATION;
+    field public static final int GENERAL_PUNCTUATION_ID = 40; // 0x28
+    field public static final android.icu.lang.UCharacter.UnicodeBlock GEOMETRIC_SHAPES;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock GEOMETRIC_SHAPES_EXTENDED;
+    field public static final int GEOMETRIC_SHAPES_EXTENDED_ID = 227; // 0xe3
+    field public static final int GEOMETRIC_SHAPES_ID = 54; // 0x36
+    field public static final android.icu.lang.UCharacter.UnicodeBlock GEORGIAN;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock GEORGIAN_EXTENDED;
+    field public static final int GEORGIAN_EXTENDED_ID = 283; // 0x11b
+    field public static final int GEORGIAN_ID = 29; // 0x1d
+    field public static final android.icu.lang.UCharacter.UnicodeBlock GEORGIAN_SUPPLEMENT;
+    field public static final int GEORGIAN_SUPPLEMENT_ID = 135; // 0x87
+    field public static final android.icu.lang.UCharacter.UnicodeBlock GLAGOLITIC;
+    field public static final int GLAGOLITIC_ID = 136; // 0x88
+    field public static final android.icu.lang.UCharacter.UnicodeBlock GLAGOLITIC_SUPPLEMENT;
+    field public static final int GLAGOLITIC_SUPPLEMENT_ID = 266; // 0x10a
+    field public static final android.icu.lang.UCharacter.UnicodeBlock GOTHIC;
+    field public static final int GOTHIC_ID = 89; // 0x59
+    field public static final android.icu.lang.UCharacter.UnicodeBlock GRANTHA;
+    field public static final int GRANTHA_ID = 228; // 0xe4
+    field public static final android.icu.lang.UCharacter.UnicodeBlock GREEK;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock GREEK_EXTENDED;
+    field public static final int GREEK_EXTENDED_ID = 39; // 0x27
+    field public static final int GREEK_ID = 8; // 0x8
+    field public static final android.icu.lang.UCharacter.UnicodeBlock GUJARATI;
+    field public static final int GUJARATI_ID = 18; // 0x12
+    field public static final android.icu.lang.UCharacter.UnicodeBlock GUNJALA_GONDI;
+    field public static final int GUNJALA_GONDI_ID = 284; // 0x11c
+    field public static final android.icu.lang.UCharacter.UnicodeBlock GURMUKHI;
+    field public static final int GURMUKHI_ID = 17; // 0x11
+    field public static final android.icu.lang.UCharacter.UnicodeBlock HALFWIDTH_AND_FULLWIDTH_FORMS;
+    field public static final int HALFWIDTH_AND_FULLWIDTH_FORMS_ID = 87; // 0x57
+    field public static final android.icu.lang.UCharacter.UnicodeBlock HANGUL_COMPATIBILITY_JAMO;
+    field public static final int HANGUL_COMPATIBILITY_JAMO_ID = 65; // 0x41
+    field public static final android.icu.lang.UCharacter.UnicodeBlock HANGUL_JAMO;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock HANGUL_JAMO_EXTENDED_A;
+    field public static final int HANGUL_JAMO_EXTENDED_A_ID = 180; // 0xb4
+    field public static final android.icu.lang.UCharacter.UnicodeBlock HANGUL_JAMO_EXTENDED_B;
+    field public static final int HANGUL_JAMO_EXTENDED_B_ID = 185; // 0xb9
+    field public static final int HANGUL_JAMO_ID = 30; // 0x1e
+    field public static final android.icu.lang.UCharacter.UnicodeBlock HANGUL_SYLLABLES;
+    field public static final int HANGUL_SYLLABLES_ID = 74; // 0x4a
+    field public static final android.icu.lang.UCharacter.UnicodeBlock HANIFI_ROHINGYA;
+    field public static final int HANIFI_ROHINGYA_ID = 285; // 0x11d
+    field public static final android.icu.lang.UCharacter.UnicodeBlock HANUNOO;
+    field public static final int HANUNOO_ID = 99; // 0x63
+    field public static final android.icu.lang.UCharacter.UnicodeBlock HATRAN;
+    field public static final int HATRAN_ID = 258; // 0x102
+    field public static final android.icu.lang.UCharacter.UnicodeBlock HEBREW;
+    field public static final int HEBREW_ID = 11; // 0xb
+    field public static final android.icu.lang.UCharacter.UnicodeBlock HIGH_PRIVATE_USE_SURROGATES;
+    field public static final int HIGH_PRIVATE_USE_SURROGATES_ID = 76; // 0x4c
+    field public static final android.icu.lang.UCharacter.UnicodeBlock HIGH_SURROGATES;
+    field public static final int HIGH_SURROGATES_ID = 75; // 0x4b
+    field public static final android.icu.lang.UCharacter.UnicodeBlock HIRAGANA;
+    field public static final int HIRAGANA_ID = 62; // 0x3e
+    field public static final android.icu.lang.UCharacter.UnicodeBlock IDEOGRAPHIC_DESCRIPTION_CHARACTERS;
+    field public static final int IDEOGRAPHIC_DESCRIPTION_CHARACTERS_ID = 60; // 0x3c
+    field public static final android.icu.lang.UCharacter.UnicodeBlock IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION;
+    field public static final int IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION_ID = 267; // 0x10b
+    field public static final android.icu.lang.UCharacter.UnicodeBlock IMPERIAL_ARAMAIC;
+    field public static final int IMPERIAL_ARAMAIC_ID = 186; // 0xba
+    field public static final android.icu.lang.UCharacter.UnicodeBlock INDIC_SIYAQ_NUMBERS;
+    field public static final int INDIC_SIYAQ_NUMBERS_ID = 286; // 0x11e
+    field public static final android.icu.lang.UCharacter.UnicodeBlock INSCRIPTIONAL_PAHLAVI;
+    field public static final int INSCRIPTIONAL_PAHLAVI_ID = 190; // 0xbe
+    field public static final android.icu.lang.UCharacter.UnicodeBlock INSCRIPTIONAL_PARTHIAN;
+    field public static final int INSCRIPTIONAL_PARTHIAN_ID = 189; // 0xbd
+    field public static final android.icu.lang.UCharacter.UnicodeBlock INVALID_CODE;
+    field public static final int INVALID_CODE_ID = -1; // 0xffffffff
+    field public static final android.icu.lang.UCharacter.UnicodeBlock IPA_EXTENSIONS;
+    field public static final int IPA_EXTENSIONS_ID = 5; // 0x5
+    field public static final android.icu.lang.UCharacter.UnicodeBlock JAVANESE;
+    field public static final int JAVANESE_ID = 181; // 0xb5
+    field public static final android.icu.lang.UCharacter.UnicodeBlock KAITHI;
+    field public static final int KAITHI_ID = 193; // 0xc1
+    field public static final android.icu.lang.UCharacter.UnicodeBlock KANA_EXTENDED_A;
+    field public static final int KANA_EXTENDED_A_ID = 275; // 0x113
+    field public static final android.icu.lang.UCharacter.UnicodeBlock KANA_SUPPLEMENT;
+    field public static final int KANA_SUPPLEMENT_ID = 203; // 0xcb
+    field public static final android.icu.lang.UCharacter.UnicodeBlock KANBUN;
+    field public static final int KANBUN_ID = 66; // 0x42
+    field public static final android.icu.lang.UCharacter.UnicodeBlock KANGXI_RADICALS;
+    field public static final int KANGXI_RADICALS_ID = 59; // 0x3b
+    field public static final android.icu.lang.UCharacter.UnicodeBlock KANNADA;
+    field public static final int KANNADA_ID = 22; // 0x16
+    field public static final android.icu.lang.UCharacter.UnicodeBlock KATAKANA;
+    field public static final int KATAKANA_ID = 63; // 0x3f
+    field public static final android.icu.lang.UCharacter.UnicodeBlock KATAKANA_PHONETIC_EXTENSIONS;
+    field public static final int KATAKANA_PHONETIC_EXTENSIONS_ID = 107; // 0x6b
+    field public static final android.icu.lang.UCharacter.UnicodeBlock KAYAH_LI;
+    field public static final int KAYAH_LI_ID = 162; // 0xa2
+    field public static final android.icu.lang.UCharacter.UnicodeBlock KHAROSHTHI;
+    field public static final int KHAROSHTHI_ID = 137; // 0x89
+    field public static final android.icu.lang.UCharacter.UnicodeBlock KHITAN_SMALL_SCRIPT;
+    field public static final int KHITAN_SMALL_SCRIPT_ID = 304; // 0x130
+    field public static final android.icu.lang.UCharacter.UnicodeBlock KHMER;
+    field public static final int KHMER_ID = 36; // 0x24
+    field public static final android.icu.lang.UCharacter.UnicodeBlock KHMER_SYMBOLS;
+    field public static final int KHMER_SYMBOLS_ID = 113; // 0x71
+    field public static final android.icu.lang.UCharacter.UnicodeBlock KHOJKI;
+    field public static final int KHOJKI_ID = 229; // 0xe5
+    field public static final android.icu.lang.UCharacter.UnicodeBlock KHUDAWADI;
+    field public static final int KHUDAWADI_ID = 230; // 0xe6
+    field public static final android.icu.lang.UCharacter.UnicodeBlock LAO;
+    field public static final int LAO_ID = 26; // 0x1a
+    field public static final android.icu.lang.UCharacter.UnicodeBlock LATIN_1_SUPPLEMENT;
+    field public static final int LATIN_1_SUPPLEMENT_ID = 2; // 0x2
+    field public static final android.icu.lang.UCharacter.UnicodeBlock LATIN_EXTENDED_A;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock LATIN_EXTENDED_ADDITIONAL;
+    field public static final int LATIN_EXTENDED_ADDITIONAL_ID = 38; // 0x26
+    field public static final int LATIN_EXTENDED_A_ID = 3; // 0x3
+    field public static final android.icu.lang.UCharacter.UnicodeBlock LATIN_EXTENDED_B;
+    field public static final int LATIN_EXTENDED_B_ID = 4; // 0x4
+    field public static final android.icu.lang.UCharacter.UnicodeBlock LATIN_EXTENDED_C;
+    field public static final int LATIN_EXTENDED_C_ID = 148; // 0x94
+    field public static final android.icu.lang.UCharacter.UnicodeBlock LATIN_EXTENDED_D;
+    field public static final int LATIN_EXTENDED_D_ID = 149; // 0x95
+    field public static final android.icu.lang.UCharacter.UnicodeBlock LATIN_EXTENDED_E;
+    field public static final int LATIN_EXTENDED_E_ID = 231; // 0xe7
+    field public static final android.icu.lang.UCharacter.UnicodeBlock LEPCHA;
+    field public static final int LEPCHA_ID = 156; // 0x9c
+    field public static final android.icu.lang.UCharacter.UnicodeBlock LETTERLIKE_SYMBOLS;
+    field public static final int LETTERLIKE_SYMBOLS_ID = 44; // 0x2c
+    field public static final android.icu.lang.UCharacter.UnicodeBlock LIMBU;
+    field public static final int LIMBU_ID = 111; // 0x6f
+    field public static final android.icu.lang.UCharacter.UnicodeBlock LINEAR_A;
+    field public static final int LINEAR_A_ID = 232; // 0xe8
+    field public static final android.icu.lang.UCharacter.UnicodeBlock LINEAR_B_IDEOGRAMS;
+    field public static final int LINEAR_B_IDEOGRAMS_ID = 118; // 0x76
+    field public static final android.icu.lang.UCharacter.UnicodeBlock LINEAR_B_SYLLABARY;
+    field public static final int LINEAR_B_SYLLABARY_ID = 117; // 0x75
+    field public static final android.icu.lang.UCharacter.UnicodeBlock LISU;
+    field public static final int LISU_ID = 176; // 0xb0
+    field public static final android.icu.lang.UCharacter.UnicodeBlock LISU_SUPPLEMENT;
+    field public static final int LISU_SUPPLEMENT_ID = 305; // 0x131
+    field public static final android.icu.lang.UCharacter.UnicodeBlock LOW_SURROGATES;
+    field public static final int LOW_SURROGATES_ID = 77; // 0x4d
+    field public static final android.icu.lang.UCharacter.UnicodeBlock LYCIAN;
+    field public static final int LYCIAN_ID = 167; // 0xa7
+    field public static final android.icu.lang.UCharacter.UnicodeBlock LYDIAN;
+    field public static final int LYDIAN_ID = 169; // 0xa9
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MAHAJANI;
+    field public static final int MAHAJANI_ID = 233; // 0xe9
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MAHJONG_TILES;
+    field public static final int MAHJONG_TILES_ID = 170; // 0xaa
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MAKASAR;
+    field public static final int MAKASAR_ID = 287; // 0x11f
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MALAYALAM;
+    field public static final int MALAYALAM_ID = 23; // 0x17
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MANDAIC;
+    field public static final int MANDAIC_ID = 198; // 0xc6
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MANICHAEAN;
+    field public static final int MANICHAEAN_ID = 234; // 0xea
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MARCHEN;
+    field public static final int MARCHEN_ID = 268; // 0x10c
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MASARAM_GONDI;
+    field public static final int MASARAM_GONDI_ID = 276; // 0x114
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MATHEMATICAL_ALPHANUMERIC_SYMBOLS;
+    field public static final int MATHEMATICAL_ALPHANUMERIC_SYMBOLS_ID = 93; // 0x5d
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MATHEMATICAL_OPERATORS;
+    field public static final int MATHEMATICAL_OPERATORS_ID = 47; // 0x2f
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MAYAN_NUMERALS;
+    field public static final int MAYAN_NUMERALS_ID = 288; // 0x120
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MEDEFAIDRIN;
+    field public static final int MEDEFAIDRIN_ID = 289; // 0x121
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MEETEI_MAYEK;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MEETEI_MAYEK_EXTENSIONS;
+    field public static final int MEETEI_MAYEK_EXTENSIONS_ID = 213; // 0xd5
+    field public static final int MEETEI_MAYEK_ID = 184; // 0xb8
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MENDE_KIKAKUI;
+    field public static final int MENDE_KIKAKUI_ID = 235; // 0xeb
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MEROITIC_CURSIVE;
+    field public static final int MEROITIC_CURSIVE_ID = 214; // 0xd6
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MEROITIC_HIEROGLYPHS;
+    field public static final int MEROITIC_HIEROGLYPHS_ID = 215; // 0xd7
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MIAO;
+    field public static final int MIAO_ID = 216; // 0xd8
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A;
+    field public static final int MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A_ID = 102; // 0x66
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B;
+    field public static final int MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B_ID = 105; // 0x69
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MISCELLANEOUS_SYMBOLS;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_ARROWS;
+    field public static final int MISCELLANEOUS_SYMBOLS_AND_ARROWS_ID = 115; // 0x73
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS;
+    field public static final int MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS_ID = 205; // 0xcd
+    field public static final int MISCELLANEOUS_SYMBOLS_ID = 55; // 0x37
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MISCELLANEOUS_TECHNICAL;
+    field public static final int MISCELLANEOUS_TECHNICAL_ID = 48; // 0x30
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MODI;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MODIFIER_TONE_LETTERS;
+    field public static final int MODIFIER_TONE_LETTERS_ID = 138; // 0x8a
+    field public static final int MODI_ID = 236; // 0xec
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MONGOLIAN;
+    field public static final int MONGOLIAN_ID = 37; // 0x25
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MONGOLIAN_SUPPLEMENT;
+    field public static final int MONGOLIAN_SUPPLEMENT_ID = 269; // 0x10d
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MRO;
+    field public static final int MRO_ID = 237; // 0xed
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MULTANI;
+    field public static final int MULTANI_ID = 259; // 0x103
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MUSICAL_SYMBOLS;
+    field public static final int MUSICAL_SYMBOLS_ID = 92; // 0x5c
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MYANMAR;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MYANMAR_EXTENDED_A;
+    field public static final int MYANMAR_EXTENDED_A_ID = 182; // 0xb6
+    field public static final android.icu.lang.UCharacter.UnicodeBlock MYANMAR_EXTENDED_B;
+    field public static final int MYANMAR_EXTENDED_B_ID = 238; // 0xee
+    field public static final int MYANMAR_ID = 28; // 0x1c
+    field public static final android.icu.lang.UCharacter.UnicodeBlock NABATAEAN;
+    field public static final int NABATAEAN_ID = 239; // 0xef
+    field public static final android.icu.lang.UCharacter.UnicodeBlock NANDINAGARI;
+    field public static final int NANDINAGARI_ID = 294; // 0x126
+    field public static final android.icu.lang.UCharacter.UnicodeBlock NEWA;
+    field public static final int NEWA_ID = 270; // 0x10e
+    field public static final android.icu.lang.UCharacter.UnicodeBlock NEW_TAI_LUE;
+    field public static final int NEW_TAI_LUE_ID = 139; // 0x8b
+    field public static final android.icu.lang.UCharacter.UnicodeBlock NKO;
+    field public static final int NKO_ID = 146; // 0x92
+    field public static final android.icu.lang.UCharacter.UnicodeBlock NO_BLOCK;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock NUMBER_FORMS;
+    field public static final int NUMBER_FORMS_ID = 45; // 0x2d
+    field public static final android.icu.lang.UCharacter.UnicodeBlock NUSHU;
+    field public static final int NUSHU_ID = 277; // 0x115
+    field public static final android.icu.lang.UCharacter.UnicodeBlock NYIAKENG_PUACHUE_HMONG;
+    field public static final int NYIAKENG_PUACHUE_HMONG_ID = 295; // 0x127
+    field public static final android.icu.lang.UCharacter.UnicodeBlock OGHAM;
+    field public static final int OGHAM_ID = 34; // 0x22
+    field public static final android.icu.lang.UCharacter.UnicodeBlock OLD_HUNGARIAN;
+    field public static final int OLD_HUNGARIAN_ID = 260; // 0x104
+    field public static final android.icu.lang.UCharacter.UnicodeBlock OLD_ITALIC;
+    field public static final int OLD_ITALIC_ID = 88; // 0x58
+    field public static final android.icu.lang.UCharacter.UnicodeBlock OLD_NORTH_ARABIAN;
+    field public static final int OLD_NORTH_ARABIAN_ID = 240; // 0xf0
+    field public static final android.icu.lang.UCharacter.UnicodeBlock OLD_PERMIC;
+    field public static final int OLD_PERMIC_ID = 241; // 0xf1
+    field public static final android.icu.lang.UCharacter.UnicodeBlock OLD_PERSIAN;
+    field public static final int OLD_PERSIAN_ID = 140; // 0x8c
+    field public static final android.icu.lang.UCharacter.UnicodeBlock OLD_SOGDIAN;
+    field public static final int OLD_SOGDIAN_ID = 290; // 0x122
+    field public static final android.icu.lang.UCharacter.UnicodeBlock OLD_SOUTH_ARABIAN;
+    field public static final int OLD_SOUTH_ARABIAN_ID = 187; // 0xbb
+    field public static final android.icu.lang.UCharacter.UnicodeBlock OLD_TURKIC;
+    field public static final int OLD_TURKIC_ID = 191; // 0xbf
+    field public static final android.icu.lang.UCharacter.UnicodeBlock OL_CHIKI;
+    field public static final int OL_CHIKI_ID = 157; // 0x9d
+    field public static final android.icu.lang.UCharacter.UnicodeBlock OPTICAL_CHARACTER_RECOGNITION;
+    field public static final int OPTICAL_CHARACTER_RECOGNITION_ID = 50; // 0x32
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ORIYA;
+    field public static final int ORIYA_ID = 19; // 0x13
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ORNAMENTAL_DINGBATS;
+    field public static final int ORNAMENTAL_DINGBATS_ID = 242; // 0xf2
+    field public static final android.icu.lang.UCharacter.UnicodeBlock OSAGE;
+    field public static final int OSAGE_ID = 271; // 0x10f
+    field public static final android.icu.lang.UCharacter.UnicodeBlock OSMANYA;
+    field public static final int OSMANYA_ID = 122; // 0x7a
+    field public static final android.icu.lang.UCharacter.UnicodeBlock OTTOMAN_SIYAQ_NUMBERS;
+    field public static final int OTTOMAN_SIYAQ_NUMBERS_ID = 296; // 0x128
+    field public static final android.icu.lang.UCharacter.UnicodeBlock PAHAWH_HMONG;
+    field public static final int PAHAWH_HMONG_ID = 243; // 0xf3
+    field public static final android.icu.lang.UCharacter.UnicodeBlock PALMYRENE;
+    field public static final int PALMYRENE_ID = 244; // 0xf4
+    field public static final android.icu.lang.UCharacter.UnicodeBlock PAU_CIN_HAU;
+    field public static final int PAU_CIN_HAU_ID = 245; // 0xf5
+    field public static final android.icu.lang.UCharacter.UnicodeBlock PHAGS_PA;
+    field public static final int PHAGS_PA_ID = 150; // 0x96
+    field public static final android.icu.lang.UCharacter.UnicodeBlock PHAISTOS_DISC;
+    field public static final int PHAISTOS_DISC_ID = 166; // 0xa6
+    field public static final android.icu.lang.UCharacter.UnicodeBlock PHOENICIAN;
+    field public static final int PHOENICIAN_ID = 151; // 0x97
+    field public static final android.icu.lang.UCharacter.UnicodeBlock PHONETIC_EXTENSIONS;
+    field public static final int PHONETIC_EXTENSIONS_ID = 114; // 0x72
+    field public static final android.icu.lang.UCharacter.UnicodeBlock PHONETIC_EXTENSIONS_SUPPLEMENT;
+    field public static final int PHONETIC_EXTENSIONS_SUPPLEMENT_ID = 141; // 0x8d
+    field public static final android.icu.lang.UCharacter.UnicodeBlock PLAYING_CARDS;
+    field public static final int PLAYING_CARDS_ID = 204; // 0xcc
+    field public static final android.icu.lang.UCharacter.UnicodeBlock PRIVATE_USE;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock PRIVATE_USE_AREA;
+    field public static final int PRIVATE_USE_AREA_ID = 78; // 0x4e
+    field public static final int PRIVATE_USE_ID = 78; // 0x4e
+    field public static final android.icu.lang.UCharacter.UnicodeBlock PSALTER_PAHLAVI;
+    field public static final int PSALTER_PAHLAVI_ID = 246; // 0xf6
+    field public static final android.icu.lang.UCharacter.UnicodeBlock REJANG;
+    field public static final int REJANG_ID = 163; // 0xa3
+    field public static final android.icu.lang.UCharacter.UnicodeBlock RUMI_NUMERAL_SYMBOLS;
+    field public static final int RUMI_NUMERAL_SYMBOLS_ID = 192; // 0xc0
+    field public static final android.icu.lang.UCharacter.UnicodeBlock RUNIC;
+    field public static final int RUNIC_ID = 35; // 0x23
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SAMARITAN;
+    field public static final int SAMARITAN_ID = 172; // 0xac
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SAURASHTRA;
+    field public static final int SAURASHTRA_ID = 161; // 0xa1
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SHARADA;
+    field public static final int SHARADA_ID = 217; // 0xd9
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SHAVIAN;
+    field public static final int SHAVIAN_ID = 121; // 0x79
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SHORTHAND_FORMAT_CONTROLS;
+    field public static final int SHORTHAND_FORMAT_CONTROLS_ID = 247; // 0xf7
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SIDDHAM;
+    field public static final int SIDDHAM_ID = 248; // 0xf8
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SINHALA;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SINHALA_ARCHAIC_NUMBERS;
+    field public static final int SINHALA_ARCHAIC_NUMBERS_ID = 249; // 0xf9
+    field public static final int SINHALA_ID = 24; // 0x18
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SMALL_FORM_VARIANTS;
+    field public static final int SMALL_FORM_VARIANTS_ID = 84; // 0x54
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SMALL_KANA_EXTENSION;
+    field public static final int SMALL_KANA_EXTENSION_ID = 297; // 0x129
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SOGDIAN;
+    field public static final int SOGDIAN_ID = 291; // 0x123
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SORA_SOMPENG;
+    field public static final int SORA_SOMPENG_ID = 218; // 0xda
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SOYOMBO;
+    field public static final int SOYOMBO_ID = 278; // 0x116
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SPACING_MODIFIER_LETTERS;
+    field public static final int SPACING_MODIFIER_LETTERS_ID = 6; // 0x6
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SPECIALS;
+    field public static final int SPECIALS_ID = 86; // 0x56
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SUNDANESE;
+    field public static final int SUNDANESE_ID = 155; // 0x9b
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SUNDANESE_SUPPLEMENT;
+    field public static final int SUNDANESE_SUPPLEMENT_ID = 219; // 0xdb
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPERSCRIPTS_AND_SUBSCRIPTS;
+    field public static final int SUPERSCRIPTS_AND_SUBSCRIPTS_ID = 41; // 0x29
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPPLEMENTAL_ARROWS_A;
+    field public static final int SUPPLEMENTAL_ARROWS_A_ID = 103; // 0x67
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPPLEMENTAL_ARROWS_B;
+    field public static final int SUPPLEMENTAL_ARROWS_B_ID = 104; // 0x68
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPPLEMENTAL_ARROWS_C;
+    field public static final int SUPPLEMENTAL_ARROWS_C_ID = 250; // 0xfa
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPPLEMENTAL_MATHEMATICAL_OPERATORS;
+    field public static final int SUPPLEMENTAL_MATHEMATICAL_OPERATORS_ID = 106; // 0x6a
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPPLEMENTAL_PUNCTUATION;
+    field public static final int SUPPLEMENTAL_PUNCTUATION_ID = 142; // 0x8e
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS;
+    field public static final int SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS_ID = 261; // 0x105
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_A;
+    field public static final int SUPPLEMENTARY_PRIVATE_USE_AREA_A_ID = 109; // 0x6d
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_B;
+    field public static final int SUPPLEMENTARY_PRIVATE_USE_AREA_B_ID = 110; // 0x6e
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SUTTON_SIGNWRITING;
+    field public static final int SUTTON_SIGNWRITING_ID = 262; // 0x106
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SYLOTI_NAGRI;
+    field public static final int SYLOTI_NAGRI_ID = 143; // 0x8f
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A;
+    field public static final int SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A_ID = 298; // 0x12a
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SYMBOLS_FOR_LEGACY_COMPUTING;
+    field public static final int SYMBOLS_FOR_LEGACY_COMPUTING_ID = 306; // 0x132
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SYRIAC;
+    field public static final int SYRIAC_ID = 13; // 0xd
+    field public static final android.icu.lang.UCharacter.UnicodeBlock SYRIAC_SUPPLEMENT;
+    field public static final int SYRIAC_SUPPLEMENT_ID = 279; // 0x117
+    field public static final android.icu.lang.UCharacter.UnicodeBlock TAGALOG;
+    field public static final int TAGALOG_ID = 98; // 0x62
+    field public static final android.icu.lang.UCharacter.UnicodeBlock TAGBANWA;
+    field public static final int TAGBANWA_ID = 101; // 0x65
+    field public static final android.icu.lang.UCharacter.UnicodeBlock TAGS;
+    field public static final int TAGS_ID = 96; // 0x60
+    field public static final android.icu.lang.UCharacter.UnicodeBlock TAI_LE;
+    field public static final int TAI_LE_ID = 112; // 0x70
+    field public static final android.icu.lang.UCharacter.UnicodeBlock TAI_THAM;
+    field public static final int TAI_THAM_ID = 174; // 0xae
+    field public static final android.icu.lang.UCharacter.UnicodeBlock TAI_VIET;
+    field public static final int TAI_VIET_ID = 183; // 0xb7
+    field public static final android.icu.lang.UCharacter.UnicodeBlock TAI_XUAN_JING_SYMBOLS;
+    field public static final int TAI_XUAN_JING_SYMBOLS_ID = 124; // 0x7c
+    field public static final android.icu.lang.UCharacter.UnicodeBlock TAKRI;
+    field public static final int TAKRI_ID = 220; // 0xdc
+    field public static final android.icu.lang.UCharacter.UnicodeBlock TAMIL;
+    field public static final int TAMIL_ID = 20; // 0x14
+    field public static final android.icu.lang.UCharacter.UnicodeBlock TAMIL_SUPPLEMENT;
+    field public static final int TAMIL_SUPPLEMENT_ID = 299; // 0x12b
+    field public static final android.icu.lang.UCharacter.UnicodeBlock TANGUT;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock TANGUT_COMPONENTS;
+    field public static final int TANGUT_COMPONENTS_ID = 273; // 0x111
+    field public static final int TANGUT_ID = 272; // 0x110
+    field public static final android.icu.lang.UCharacter.UnicodeBlock TANGUT_SUPPLEMENT;
+    field public static final int TANGUT_SUPPLEMENT_ID = 307; // 0x133
+    field public static final android.icu.lang.UCharacter.UnicodeBlock TELUGU;
+    field public static final int TELUGU_ID = 21; // 0x15
+    field public static final android.icu.lang.UCharacter.UnicodeBlock THAANA;
+    field public static final int THAANA_ID = 14; // 0xe
+    field public static final android.icu.lang.UCharacter.UnicodeBlock THAI;
+    field public static final int THAI_ID = 25; // 0x19
+    field public static final android.icu.lang.UCharacter.UnicodeBlock TIBETAN;
+    field public static final int TIBETAN_ID = 27; // 0x1b
+    field public static final android.icu.lang.UCharacter.UnicodeBlock TIFINAGH;
+    field public static final int TIFINAGH_ID = 144; // 0x90
+    field public static final android.icu.lang.UCharacter.UnicodeBlock TIRHUTA;
+    field public static final int TIRHUTA_ID = 251; // 0xfb
+    field public static final android.icu.lang.UCharacter.UnicodeBlock TRANSPORT_AND_MAP_SYMBOLS;
+    field public static final int TRANSPORT_AND_MAP_SYMBOLS_ID = 207; // 0xcf
+    field public static final android.icu.lang.UCharacter.UnicodeBlock UGARITIC;
+    field public static final int UGARITIC_ID = 120; // 0x78
+    field public static final android.icu.lang.UCharacter.UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS;
+    field public static final android.icu.lang.UCharacter.UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED;
+    field public static final int UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_ID = 173; // 0xad
+    field public static final int UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_ID = 33; // 0x21
+    field public static final android.icu.lang.UCharacter.UnicodeBlock VAI;
+    field public static final int VAI_ID = 159; // 0x9f
+    field public static final android.icu.lang.UCharacter.UnicodeBlock VARIATION_SELECTORS;
+    field public static final int VARIATION_SELECTORS_ID = 108; // 0x6c
+    field public static final android.icu.lang.UCharacter.UnicodeBlock VARIATION_SELECTORS_SUPPLEMENT;
+    field public static final int VARIATION_SELECTORS_SUPPLEMENT_ID = 125; // 0x7d
+    field public static final android.icu.lang.UCharacter.UnicodeBlock VEDIC_EXTENSIONS;
+    field public static final int VEDIC_EXTENSIONS_ID = 175; // 0xaf
+    field public static final android.icu.lang.UCharacter.UnicodeBlock VERTICAL_FORMS;
+    field public static final int VERTICAL_FORMS_ID = 145; // 0x91
+    field public static final android.icu.lang.UCharacter.UnicodeBlock WANCHO;
+    field public static final int WANCHO_ID = 300; // 0x12c
+    field public static final android.icu.lang.UCharacter.UnicodeBlock WARANG_CITI;
+    field public static final int WARANG_CITI_ID = 252; // 0xfc
+    field public static final android.icu.lang.UCharacter.UnicodeBlock YEZIDI;
+    field public static final int YEZIDI_ID = 308; // 0x134
+    field public static final android.icu.lang.UCharacter.UnicodeBlock YIJING_HEXAGRAM_SYMBOLS;
+    field public static final int YIJING_HEXAGRAM_SYMBOLS_ID = 116; // 0x74
+    field public static final android.icu.lang.UCharacter.UnicodeBlock YI_RADICALS;
+    field public static final int YI_RADICALS_ID = 73; // 0x49
+    field public static final android.icu.lang.UCharacter.UnicodeBlock YI_SYLLABLES;
+    field public static final int YI_SYLLABLES_ID = 72; // 0x48
+    field public static final android.icu.lang.UCharacter.UnicodeBlock ZANABAZAR_SQUARE;
+    field public static final int ZANABAZAR_SQUARE_ID = 280; // 0x118
+  }
+
+  public static interface UCharacter.VerticalOrientation {
+    field public static final int ROTATED = 0; // 0x0
+    field public static final int TRANSFORMED_ROTATED = 1; // 0x1
+    field public static final int TRANSFORMED_UPRIGHT = 2; // 0x2
+    field public static final int UPRIGHT = 3; // 0x3
+  }
+
+  public static interface UCharacter.WordBreak {
+    field public static final int ALETTER = 1; // 0x1
+    field public static final int CR = 8; // 0x8
+    field public static final int DOUBLE_QUOTE = 16; // 0x10
+    field public static final int EXTEND = 9; // 0x9
+    field public static final int EXTENDNUMLET = 7; // 0x7
+    field public static final int E_BASE = 17; // 0x11
+    field public static final int E_BASE_GAZ = 18; // 0x12
+    field public static final int E_MODIFIER = 19; // 0x13
+    field public static final int FORMAT = 2; // 0x2
+    field public static final int GLUE_AFTER_ZWJ = 20; // 0x14
+    field public static final int HEBREW_LETTER = 14; // 0xe
+    field public static final int KATAKANA = 3; // 0x3
+    field public static final int LF = 10; // 0xa
+    field public static final int MIDLETTER = 4; // 0x4
+    field public static final int MIDNUM = 5; // 0x5
+    field public static final int MIDNUMLET = 11; // 0xb
+    field public static final int NEWLINE = 12; // 0xc
+    field public static final int NUMERIC = 6; // 0x6
+    field public static final int OTHER = 0; // 0x0
+    field public static final int REGIONAL_INDICATOR = 13; // 0xd
+    field public static final int SINGLE_QUOTE = 15; // 0xf
+    field public static final int WSEGSPACE = 22; // 0x16
+    field public static final int ZWJ = 21; // 0x15
+  }
+
+  public final class UCharacterCategory implements android.icu.lang.UCharacterEnums.ECharacterCategory {
+    method public static String toString(int);
+  }
+
+  public final class UCharacterDirection implements android.icu.lang.UCharacterEnums.ECharacterDirection {
+    method public static String toString(int);
+  }
+
+  public class UCharacterEnums {
+  }
+
+  public static interface UCharacterEnums.ECharacterCategory {
+    field public static final byte COMBINING_SPACING_MARK = 8; // 0x8
+    field public static final byte CONNECTOR_PUNCTUATION = 22; // 0x16
+    field public static final byte CONTROL = 15; // 0xf
+    field public static final byte CURRENCY_SYMBOL = 25; // 0x19
+    field public static final byte DASH_PUNCTUATION = 19; // 0x13
+    field public static final byte DECIMAL_DIGIT_NUMBER = 9; // 0x9
+    field public static final byte ENCLOSING_MARK = 7; // 0x7
+    field public static final byte END_PUNCTUATION = 21; // 0x15
+    field public static final byte FINAL_PUNCTUATION = 29; // 0x1d
+    field public static final byte FINAL_QUOTE_PUNCTUATION = 29; // 0x1d
+    field public static final byte FORMAT = 16; // 0x10
+    field public static final byte GENERAL_OTHER_TYPES = 0; // 0x0
+    field public static final byte INITIAL_PUNCTUATION = 28; // 0x1c
+    field public static final byte INITIAL_QUOTE_PUNCTUATION = 28; // 0x1c
+    field public static final byte LETTER_NUMBER = 10; // 0xa
+    field public static final byte LINE_SEPARATOR = 13; // 0xd
+    field public static final byte LOWERCASE_LETTER = 2; // 0x2
+    field public static final byte MATH_SYMBOL = 24; // 0x18
+    field public static final byte MODIFIER_LETTER = 4; // 0x4
+    field public static final byte MODIFIER_SYMBOL = 26; // 0x1a
+    field public static final byte NON_SPACING_MARK = 6; // 0x6
+    field public static final byte OTHER_LETTER = 5; // 0x5
+    field public static final byte OTHER_NUMBER = 11; // 0xb
+    field public static final byte OTHER_PUNCTUATION = 23; // 0x17
+    field public static final byte OTHER_SYMBOL = 27; // 0x1b
+    field public static final byte PARAGRAPH_SEPARATOR = 14; // 0xe
+    field public static final byte PRIVATE_USE = 17; // 0x11
+    field public static final byte SPACE_SEPARATOR = 12; // 0xc
+    field public static final byte START_PUNCTUATION = 20; // 0x14
+    field public static final byte SURROGATE = 18; // 0x12
+    field public static final byte TITLECASE_LETTER = 3; // 0x3
+    field public static final byte UNASSIGNED = 0; // 0x0
+    field public static final byte UPPERCASE_LETTER = 1; // 0x1
+  }
+
+  public static interface UCharacterEnums.ECharacterDirection {
+    field public static final int ARABIC_NUMBER = 5; // 0x5
+    field public static final int BLOCK_SEPARATOR = 7; // 0x7
+    field public static final int BOUNDARY_NEUTRAL = 18; // 0x12
+    field public static final int COMMON_NUMBER_SEPARATOR = 6; // 0x6
+    field public static final byte DIRECTIONALITY_ARABIC_NUMBER = 5; // 0x5
+    field public static final byte DIRECTIONALITY_BOUNDARY_NEUTRAL = 18; // 0x12
+    field public static final byte DIRECTIONALITY_COMMON_NUMBER_SEPARATOR = 6; // 0x6
+    field public static final byte DIRECTIONALITY_EUROPEAN_NUMBER = 2; // 0x2
+    field public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR = 3; // 0x3
+    field public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR = 4; // 0x4
+    field public static final byte DIRECTIONALITY_LEFT_TO_RIGHT = 0; // 0x0
+    field public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING = 11; // 0xb
+    field public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE = 12; // 0xc
+    field public static final byte DIRECTIONALITY_NONSPACING_MARK = 17; // 0x11
+    field public static final byte DIRECTIONALITY_OTHER_NEUTRALS = 10; // 0xa
+    field public static final byte DIRECTIONALITY_PARAGRAPH_SEPARATOR = 7; // 0x7
+    field public static final byte DIRECTIONALITY_POP_DIRECTIONAL_FORMAT = 16; // 0x10
+    field public static final byte DIRECTIONALITY_RIGHT_TO_LEFT = 1; // 0x1
+    field public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC = 13; // 0xd
+    field public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING = 14; // 0xe
+    field public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE = 15; // 0xf
+    field public static final byte DIRECTIONALITY_SEGMENT_SEPARATOR = 8; // 0x8
+    field public static final byte DIRECTIONALITY_UNDEFINED = -1; // 0xffffffff
+    field public static final byte DIRECTIONALITY_WHITESPACE = 9; // 0x9
+    field public static final int DIR_NON_SPACING_MARK = 17; // 0x11
+    field public static final int EUROPEAN_NUMBER = 2; // 0x2
+    field public static final int EUROPEAN_NUMBER_SEPARATOR = 3; // 0x3
+    field public static final int EUROPEAN_NUMBER_TERMINATOR = 4; // 0x4
+    field public static final byte FIRST_STRONG_ISOLATE = 19; // 0x13
+    field public static final int LEFT_TO_RIGHT = 0; // 0x0
+    field public static final int LEFT_TO_RIGHT_EMBEDDING = 11; // 0xb
+    field public static final byte LEFT_TO_RIGHT_ISOLATE = 20; // 0x14
+    field public static final int LEFT_TO_RIGHT_OVERRIDE = 12; // 0xc
+    field public static final int OTHER_NEUTRAL = 10; // 0xa
+    field public static final int POP_DIRECTIONAL_FORMAT = 16; // 0x10
+    field public static final byte POP_DIRECTIONAL_ISOLATE = 22; // 0x16
+    field public static final int RIGHT_TO_LEFT = 1; // 0x1
+    field public static final int RIGHT_TO_LEFT_ARABIC = 13; // 0xd
+    field public static final int RIGHT_TO_LEFT_EMBEDDING = 14; // 0xe
+    field public static final byte RIGHT_TO_LEFT_ISOLATE = 21; // 0x15
+    field public static final int RIGHT_TO_LEFT_OVERRIDE = 15; // 0xf
+    field public static final int SEGMENT_SEPARATOR = 8; // 0x8
+    field public static final int WHITE_SPACE_NEUTRAL = 9; // 0x9
+  }
+
+  public interface UProperty {
+    field public static final int AGE = 16384; // 0x4000
+    field public static final int ALPHABETIC = 0; // 0x0
+    field public static final int ASCII_HEX_DIGIT = 1; // 0x1
+    field public static final int BIDI_CLASS = 4096; // 0x1000
+    field public static final int BIDI_CONTROL = 2; // 0x2
+    field public static final int BIDI_MIRRORED = 3; // 0x3
+    field public static final int BIDI_MIRRORING_GLYPH = 16385; // 0x4001
+    field public static final int BIDI_PAIRED_BRACKET = 16397; // 0x400d
+    field public static final int BIDI_PAIRED_BRACKET_TYPE = 4117; // 0x1015
+    field public static final int BINARY_START = 0; // 0x0
+    field public static final int BLOCK = 4097; // 0x1001
+    field public static final int CANONICAL_COMBINING_CLASS = 4098; // 0x1002
+    field public static final int CASED = 49; // 0x31
+    field public static final int CASE_FOLDING = 16386; // 0x4002
+    field public static final int CASE_IGNORABLE = 50; // 0x32
+    field public static final int CASE_SENSITIVE = 34; // 0x22
+    field public static final int CHANGES_WHEN_CASEFOLDED = 54; // 0x36
+    field public static final int CHANGES_WHEN_CASEMAPPED = 55; // 0x37
+    field public static final int CHANGES_WHEN_LOWERCASED = 51; // 0x33
+    field public static final int CHANGES_WHEN_NFKC_CASEFOLDED = 56; // 0x38
+    field public static final int CHANGES_WHEN_TITLECASED = 53; // 0x35
+    field public static final int CHANGES_WHEN_UPPERCASED = 52; // 0x34
+    field public static final int DASH = 4; // 0x4
+    field public static final int DECOMPOSITION_TYPE = 4099; // 0x1003
+    field public static final int DEFAULT_IGNORABLE_CODE_POINT = 5; // 0x5
+    field public static final int DEPRECATED = 6; // 0x6
+    field public static final int DIACRITIC = 7; // 0x7
+    field public static final int DOUBLE_START = 12288; // 0x3000
+    field public static final int EAST_ASIAN_WIDTH = 4100; // 0x1004
+    field public static final int EMOJI = 57; // 0x39
+    field public static final int EMOJI_COMPONENT = 61; // 0x3d
+    field public static final int EMOJI_MODIFIER = 59; // 0x3b
+    field public static final int EMOJI_MODIFIER_BASE = 60; // 0x3c
+    field public static final int EMOJI_PRESENTATION = 58; // 0x3a
+    field public static final int EXTENDED_PICTOGRAPHIC = 64; // 0x40
+    field public static final int EXTENDER = 8; // 0x8
+    field public static final int FULL_COMPOSITION_EXCLUSION = 9; // 0x9
+    field public static final int GENERAL_CATEGORY = 4101; // 0x1005
+    field public static final int GENERAL_CATEGORY_MASK = 8192; // 0x2000
+    field public static final int GRAPHEME_BASE = 10; // 0xa
+    field public static final int GRAPHEME_CLUSTER_BREAK = 4114; // 0x1012
+    field public static final int GRAPHEME_EXTEND = 11; // 0xb
+    field public static final int GRAPHEME_LINK = 12; // 0xc
+    field public static final int HANGUL_SYLLABLE_TYPE = 4107; // 0x100b
+    field public static final int HEX_DIGIT = 13; // 0xd
+    field public static final int HYPHEN = 14; // 0xe
+    field public static final int IDEOGRAPHIC = 17; // 0x11
+    field public static final int IDS_BINARY_OPERATOR = 18; // 0x12
+    field public static final int IDS_TRINARY_OPERATOR = 19; // 0x13
+    field public static final int ID_CONTINUE = 15; // 0xf
+    field public static final int ID_START = 16; // 0x10
+    field public static final int INDIC_POSITIONAL_CATEGORY = 4118; // 0x1016
+    field public static final int INDIC_SYLLABIC_CATEGORY = 4119; // 0x1017
+    field public static final int INT_START = 4096; // 0x1000
+    field public static final int JOINING_GROUP = 4102; // 0x1006
+    field public static final int JOINING_TYPE = 4103; // 0x1007
+    field public static final int JOIN_CONTROL = 20; // 0x14
+    field public static final int LEAD_CANONICAL_COMBINING_CLASS = 4112; // 0x1010
+    field public static final int LINE_BREAK = 4104; // 0x1008
+    field public static final int LOGICAL_ORDER_EXCEPTION = 21; // 0x15
+    field public static final int LOWERCASE = 22; // 0x16
+    field public static final int LOWERCASE_MAPPING = 16388; // 0x4004
+    field public static final int MASK_START = 8192; // 0x2000
+    field public static final int MATH = 23; // 0x17
+    field public static final int NAME = 16389; // 0x4005
+    field public static final int NFC_INERT = 39; // 0x27
+    field public static final int NFC_QUICK_CHECK = 4110; // 0x100e
+    field public static final int NFD_INERT = 37; // 0x25
+    field public static final int NFD_QUICK_CHECK = 4108; // 0x100c
+    field public static final int NFKC_INERT = 40; // 0x28
+    field public static final int NFKC_QUICK_CHECK = 4111; // 0x100f
+    field public static final int NFKD_INERT = 38; // 0x26
+    field public static final int NFKD_QUICK_CHECK = 4109; // 0x100d
+    field public static final int NONCHARACTER_CODE_POINT = 24; // 0x18
+    field public static final int NUMERIC_TYPE = 4105; // 0x1009
+    field public static final int NUMERIC_VALUE = 12288; // 0x3000
+    field public static final int OTHER_PROPERTY_START = 28672; // 0x7000
+    field public static final int PATTERN_SYNTAX = 42; // 0x2a
+    field public static final int PATTERN_WHITE_SPACE = 43; // 0x2b
+    field public static final int POSIX_ALNUM = 44; // 0x2c
+    field public static final int POSIX_BLANK = 45; // 0x2d
+    field public static final int POSIX_GRAPH = 46; // 0x2e
+    field public static final int POSIX_PRINT = 47; // 0x2f
+    field public static final int POSIX_XDIGIT = 48; // 0x30
+    field public static final int PREPENDED_CONCATENATION_MARK = 63; // 0x3f
+    field public static final int QUOTATION_MARK = 25; // 0x19
+    field public static final int RADICAL = 26; // 0x1a
+    field public static final int REGIONAL_INDICATOR = 62; // 0x3e
+    field public static final int SCRIPT = 4106; // 0x100a
+    field public static final int SCRIPT_EXTENSIONS = 28672; // 0x7000
+    field public static final int SEGMENT_STARTER = 41; // 0x29
+    field public static final int SENTENCE_BREAK = 4115; // 0x1013
+    field public static final int SIMPLE_CASE_FOLDING = 16390; // 0x4006
+    field public static final int SIMPLE_LOWERCASE_MAPPING = 16391; // 0x4007
+    field public static final int SIMPLE_TITLECASE_MAPPING = 16392; // 0x4008
+    field public static final int SIMPLE_UPPERCASE_MAPPING = 16393; // 0x4009
+    field public static final int SOFT_DOTTED = 27; // 0x1b
+    field public static final int STRING_START = 16384; // 0x4000
+    field public static final int S_TERM = 35; // 0x23
+    field public static final int TERMINAL_PUNCTUATION = 28; // 0x1c
+    field public static final int TITLECASE_MAPPING = 16394; // 0x400a
+    field public static final int TRAIL_CANONICAL_COMBINING_CLASS = 4113; // 0x1011
+    field public static final int UNIFIED_IDEOGRAPH = 29; // 0x1d
+    field public static final int UPPERCASE = 30; // 0x1e
+    field public static final int UPPERCASE_MAPPING = 16396; // 0x400c
+    field public static final int VARIATION_SELECTOR = 36; // 0x24
+    field public static final int VERTICAL_ORIENTATION = 4120; // 0x1018
+    field public static final int WHITE_SPACE = 31; // 0x1f
+    field public static final int WORD_BREAK = 4116; // 0x1014
+    field public static final int XID_CONTINUE = 32; // 0x20
+    field public static final int XID_START = 33; // 0x21
+  }
+
+  public static interface UProperty.NameChoice {
+    field public static final int LONG = 1; // 0x1
+    field public static final int SHORT = 0; // 0x0
+  }
+
+  public final class UScript {
+    method public static boolean breaksBetweenLetters(int);
+    method public static int[] getCode(java.util.Locale);
+    method public static int[] getCode(android.icu.util.ULocale);
+    method public static int[] getCode(String);
+    method public static int getCodeFromName(String);
+    method public static String getName(int);
+    method public static String getSampleString(int);
+    method public static int getScript(int);
+    method public static int getScriptExtensions(int, java.util.BitSet);
+    method public static String getShortName(int);
+    method public static android.icu.lang.UScript.ScriptUsage getUsage(int);
+    method public static boolean hasScript(int, int);
+    method public static boolean isCased(int);
+    method public static boolean isRightToLeft(int);
+    field public static final int ADLAM = 167; // 0xa7
+    field public static final int AFAKA = 147; // 0x93
+    field public static final int AHOM = 161; // 0xa1
+    field public static final int ANATOLIAN_HIEROGLYPHS = 156; // 0x9c
+    field public static final int ARABIC = 2; // 0x2
+    field public static final int ARMENIAN = 3; // 0x3
+    field public static final int AVESTAN = 117; // 0x75
+    field public static final int BALINESE = 62; // 0x3e
+    field public static final int BAMUM = 130; // 0x82
+    field public static final int BASSA_VAH = 134; // 0x86
+    field public static final int BATAK = 63; // 0x3f
+    field public static final int BENGALI = 4; // 0x4
+    field public static final int BHAIKSUKI = 168; // 0xa8
+    field public static final int BLISSYMBOLS = 64; // 0x40
+    field public static final int BOOK_PAHLAVI = 124; // 0x7c
+    field public static final int BOPOMOFO = 5; // 0x5
+    field public static final int BRAHMI = 65; // 0x41
+    field public static final int BRAILLE = 46; // 0x2e
+    field public static final int BUGINESE = 55; // 0x37
+    field public static final int BUHID = 44; // 0x2c
+    field public static final int CANADIAN_ABORIGINAL = 40; // 0x28
+    field public static final int CARIAN = 104; // 0x68
+    field public static final int CAUCASIAN_ALBANIAN = 159; // 0x9f
+    field public static final int CHAKMA = 118; // 0x76
+    field public static final int CHAM = 66; // 0x42
+    field public static final int CHEROKEE = 6; // 0x6
+    field public static final int CHORASMIAN = 189; // 0xbd
+    field public static final int CIRTH = 67; // 0x43
+    field public static final int COMMON = 0; // 0x0
+    field public static final int COPTIC = 7; // 0x7
+    field public static final int CUNEIFORM = 101; // 0x65
+    field public static final int CYPRIOT = 47; // 0x2f
+    field public static final int CYRILLIC = 8; // 0x8
+    field public static final int DEMOTIC_EGYPTIAN = 69; // 0x45
+    field public static final int DESERET = 9; // 0x9
+    field public static final int DEVANAGARI = 10; // 0xa
+    field public static final int DIVES_AKURU = 190; // 0xbe
+    field public static final int DOGRA = 178; // 0xb2
+    field public static final int DUPLOYAN = 135; // 0x87
+    field public static final int EASTERN_SYRIAC = 97; // 0x61
+    field public static final int EGYPTIAN_HIEROGLYPHS = 71; // 0x47
+    field public static final int ELBASAN = 136; // 0x88
+    field public static final int ELYMAIC = 185; // 0xb9
+    field public static final int ESTRANGELO_SYRIAC = 95; // 0x5f
+    field public static final int ETHIOPIC = 11; // 0xb
+    field public static final int GEORGIAN = 12; // 0xc
+    field public static final int GLAGOLITIC = 56; // 0x38
+    field public static final int GOTHIC = 13; // 0xd
+    field public static final int GRANTHA = 137; // 0x89
+    field public static final int GREEK = 14; // 0xe
+    field public static final int GUJARATI = 15; // 0xf
+    field public static final int GUNJALA_GONDI = 179; // 0xb3
+    field public static final int GURMUKHI = 16; // 0x10
+    field public static final int HAN = 17; // 0x11
+    field public static final int HANGUL = 18; // 0x12
+    field public static final int HANIFI_ROHINGYA = 182; // 0xb6
+    field public static final int HANUNOO = 43; // 0x2b
+    field public static final int HAN_WITH_BOPOMOFO = 172; // 0xac
+    field public static final int HARAPPAN_INDUS = 77; // 0x4d
+    field public static final int HATRAN = 162; // 0xa2
+    field public static final int HEBREW = 19; // 0x13
+    field public static final int HIERATIC_EGYPTIAN = 70; // 0x46
+    field public static final int HIRAGANA = 20; // 0x14
+    field public static final int IMPERIAL_ARAMAIC = 116; // 0x74
+    field public static final int INHERITED = 1; // 0x1
+    field public static final int INSCRIPTIONAL_PAHLAVI = 122; // 0x7a
+    field public static final int INSCRIPTIONAL_PARTHIAN = 125; // 0x7d
+    field public static final int INVALID_CODE = -1; // 0xffffffff
+    field public static final int JAMO = 173; // 0xad
+    field public static final int JAPANESE = 105; // 0x69
+    field public static final int JAVANESE = 78; // 0x4e
+    field public static final int JURCHEN = 148; // 0x94
+    field public static final int KAITHI = 120; // 0x78
+    field public static final int KANNADA = 21; // 0x15
+    field public static final int KATAKANA = 22; // 0x16
+    field public static final int KATAKANA_OR_HIRAGANA = 54; // 0x36
+    field public static final int KAYAH_LI = 79; // 0x4f
+    field public static final int KHAROSHTHI = 57; // 0x39
+    field public static final int KHITAN_SMALL_SCRIPT = 191; // 0xbf
+    field public static final int KHMER = 23; // 0x17
+    field public static final int KHOJKI = 157; // 0x9d
+    field public static final int KHUDAWADI = 145; // 0x91
+    field public static final int KHUTSURI = 72; // 0x48
+    field public static final int KOREAN = 119; // 0x77
+    field public static final int KPELLE = 138; // 0x8a
+    field public static final int LANNA = 106; // 0x6a
+    field public static final int LAO = 24; // 0x18
+    field public static final int LATIN = 25; // 0x19
+    field public static final int LATIN_FRAKTUR = 80; // 0x50
+    field public static final int LATIN_GAELIC = 81; // 0x51
+    field public static final int LEPCHA = 82; // 0x52
+    field public static final int LIMBU = 48; // 0x30
+    field public static final int LINEAR_A = 83; // 0x53
+    field public static final int LINEAR_B = 49; // 0x31
+    field public static final int LISU = 131; // 0x83
+    field public static final int LOMA = 139; // 0x8b
+    field public static final int LYCIAN = 107; // 0x6b
+    field public static final int LYDIAN = 108; // 0x6c
+    field public static final int MAHAJANI = 160; // 0xa0
+    field public static final int MAKASAR = 180; // 0xb4
+    field public static final int MALAYALAM = 26; // 0x1a
+    field public static final int MANDAEAN = 84; // 0x54
+    field public static final int MANDAIC = 84; // 0x54
+    field public static final int MANICHAEAN = 121; // 0x79
+    field public static final int MARCHEN = 169; // 0xa9
+    field public static final int MASARAM_GONDI = 175; // 0xaf
+    field public static final int MATHEMATICAL_NOTATION = 128; // 0x80
+    field public static final int MAYAN_HIEROGLYPHS = 85; // 0x55
+    field public static final int MEDEFAIDRIN = 181; // 0xb5
+    field public static final int MEITEI_MAYEK = 115; // 0x73
+    field public static final int MENDE = 140; // 0x8c
+    field public static final int MEROITIC = 86; // 0x56
+    field public static final int MEROITIC_CURSIVE = 141; // 0x8d
+    field public static final int MEROITIC_HIEROGLYPHS = 86; // 0x56
+    field public static final int MIAO = 92; // 0x5c
+    field public static final int MODI = 163; // 0xa3
+    field public static final int MONGOLIAN = 27; // 0x1b
+    field public static final int MOON = 114; // 0x72
+    field public static final int MRO = 149; // 0x95
+    field public static final int MULTANI = 164; // 0xa4
+    field public static final int MYANMAR = 28; // 0x1c
+    field public static final int NABATAEAN = 143; // 0x8f
+    field public static final int NAKHI_GEBA = 132; // 0x84
+    field public static final int NANDINAGARI = 187; // 0xbb
+    field public static final int NEWA = 170; // 0xaa
+    field public static final int NEW_TAI_LUE = 59; // 0x3b
+    field public static final int NKO = 87; // 0x57
+    field public static final int NUSHU = 150; // 0x96
+    field public static final int NYIAKENG_PUACHUE_HMONG = 186; // 0xba
+    field public static final int OGHAM = 29; // 0x1d
+    field public static final int OLD_CHURCH_SLAVONIC_CYRILLIC = 68; // 0x44
+    field public static final int OLD_HUNGARIAN = 76; // 0x4c
+    field public static final int OLD_ITALIC = 30; // 0x1e
+    field public static final int OLD_NORTH_ARABIAN = 142; // 0x8e
+    field public static final int OLD_PERMIC = 89; // 0x59
+    field public static final int OLD_PERSIAN = 61; // 0x3d
+    field public static final int OLD_SOGDIAN = 184; // 0xb8
+    field public static final int OLD_SOUTH_ARABIAN = 133; // 0x85
+    field public static final int OL_CHIKI = 109; // 0x6d
+    field public static final int ORIYA = 31; // 0x1f
+    field public static final int ORKHON = 88; // 0x58
+    field public static final int OSAGE = 171; // 0xab
+    field public static final int OSMANYA = 50; // 0x32
+    field public static final int PAHAWH_HMONG = 75; // 0x4b
+    field public static final int PALMYRENE = 144; // 0x90
+    field public static final int PAU_CIN_HAU = 165; // 0xa5
+    field public static final int PHAGS_PA = 90; // 0x5a
+    field public static final int PHOENICIAN = 91; // 0x5b
+    field public static final int PHONETIC_POLLARD = 92; // 0x5c
+    field public static final int PSALTER_PAHLAVI = 123; // 0x7b
+    field public static final int REJANG = 110; // 0x6e
+    field public static final int RONGORONGO = 93; // 0x5d
+    field public static final int RUNIC = 32; // 0x20
+    field public static final int SAMARITAN = 126; // 0x7e
+    field public static final int SARATI = 94; // 0x5e
+    field public static final int SAURASHTRA = 111; // 0x6f
+    field public static final int SHARADA = 151; // 0x97
+    field public static final int SHAVIAN = 51; // 0x33
+    field public static final int SIDDHAM = 166; // 0xa6
+    field public static final int SIGN_WRITING = 112; // 0x70
+    field public static final int SIMPLIFIED_HAN = 73; // 0x49
+    field public static final int SINDHI = 145; // 0x91
+    field public static final int SINHALA = 33; // 0x21
+    field public static final int SOGDIAN = 183; // 0xb7
+    field public static final int SORA_SOMPENG = 152; // 0x98
+    field public static final int SOYOMBO = 176; // 0xb0
+    field public static final int SUNDANESE = 113; // 0x71
+    field public static final int SYLOTI_NAGRI = 58; // 0x3a
+    field public static final int SYMBOLS = 129; // 0x81
+    field public static final int SYMBOLS_EMOJI = 174; // 0xae
+    field public static final int SYRIAC = 34; // 0x22
+    field public static final int TAGALOG = 42; // 0x2a
+    field public static final int TAGBANWA = 45; // 0x2d
+    field public static final int TAI_LE = 52; // 0x34
+    field public static final int TAI_VIET = 127; // 0x7f
+    field public static final int TAKRI = 153; // 0x99
+    field public static final int TAMIL = 35; // 0x23
+    field public static final int TANGUT = 154; // 0x9a
+    field public static final int TELUGU = 36; // 0x24
+    field public static final int TENGWAR = 98; // 0x62
+    field public static final int THAANA = 37; // 0x25
+    field public static final int THAI = 38; // 0x26
+    field public static final int TIBETAN = 39; // 0x27
+    field public static final int TIFINAGH = 60; // 0x3c
+    field public static final int TIRHUTA = 158; // 0x9e
+    field public static final int TRADITIONAL_HAN = 74; // 0x4a
+    field public static final int UCAS = 40; // 0x28
+    field public static final int UGARITIC = 53; // 0x35
+    field public static final int UNKNOWN = 103; // 0x67
+    field public static final int UNWRITTEN_LANGUAGES = 102; // 0x66
+    field public static final int VAI = 99; // 0x63
+    field public static final int VISIBLE_SPEECH = 100; // 0x64
+    field public static final int WANCHO = 188; // 0xbc
+    field public static final int WARANG_CITI = 146; // 0x92
+    field public static final int WESTERN_SYRIAC = 96; // 0x60
+    field public static final int WOLEAI = 155; // 0x9b
+    field public static final int YEZIDI = 192; // 0xc0
+    field public static final int YI = 41; // 0x29
+    field public static final int ZANABAZAR_SQUARE = 177; // 0xb1
+  }
+
+  public enum UScript.ScriptUsage {
+    enum_constant public static final android.icu.lang.UScript.ScriptUsage ASPIRATIONAL;
+    enum_constant public static final android.icu.lang.UScript.ScriptUsage EXCLUDED;
+    enum_constant public static final android.icu.lang.UScript.ScriptUsage LIMITED_USE;
+    enum_constant public static final android.icu.lang.UScript.ScriptUsage NOT_ENCODED;
+    enum_constant public static final android.icu.lang.UScript.ScriptUsage RECOMMENDED;
+    enum_constant public static final android.icu.lang.UScript.ScriptUsage UNKNOWN;
+  }
+
+}
+
+package android.icu.math {
+
+  public class BigDecimal extends java.lang.Number implements java.lang.Comparable<android.icu.math.BigDecimal> java.io.Serializable {
+    ctor public BigDecimal(java.math.BigDecimal);
+    ctor public BigDecimal(java.math.BigInteger);
+    ctor public BigDecimal(java.math.BigInteger, int);
+    ctor public BigDecimal(char[]);
+    ctor public BigDecimal(char[], int, int);
+    ctor public BigDecimal(double);
+    ctor public BigDecimal(int);
+    ctor public BigDecimal(long);
+    ctor public BigDecimal(String);
+    method public android.icu.math.BigDecimal abs();
+    method public android.icu.math.BigDecimal abs(android.icu.math.MathContext);
+    method public android.icu.math.BigDecimal add(android.icu.math.BigDecimal);
+    method public android.icu.math.BigDecimal add(android.icu.math.BigDecimal, android.icu.math.MathContext);
+    method public byte byteValueExact();
+    method public int compareTo(android.icu.math.BigDecimal);
+    method public int compareTo(android.icu.math.BigDecimal, android.icu.math.MathContext);
+    method public android.icu.math.BigDecimal divide(android.icu.math.BigDecimal);
+    method public android.icu.math.BigDecimal divide(android.icu.math.BigDecimal, int);
+    method public android.icu.math.BigDecimal divide(android.icu.math.BigDecimal, int, int);
+    method public android.icu.math.BigDecimal divide(android.icu.math.BigDecimal, android.icu.math.MathContext);
+    method public android.icu.math.BigDecimal divideInteger(android.icu.math.BigDecimal);
+    method public android.icu.math.BigDecimal divideInteger(android.icu.math.BigDecimal, android.icu.math.MathContext);
+    method public double doubleValue();
+    method public float floatValue();
+    method public String format(int, int);
+    method public String format(int, int, int, int, int, int);
+    method public int intValue();
+    method public int intValueExact();
+    method public long longValue();
+    method public long longValueExact();
+    method public android.icu.math.BigDecimal max(android.icu.math.BigDecimal);
+    method public android.icu.math.BigDecimal max(android.icu.math.BigDecimal, android.icu.math.MathContext);
+    method public android.icu.math.BigDecimal min(android.icu.math.BigDecimal);
+    method public android.icu.math.BigDecimal min(android.icu.math.BigDecimal, android.icu.math.MathContext);
+    method public android.icu.math.BigDecimal movePointLeft(int);
+    method public android.icu.math.BigDecimal movePointRight(int);
+    method public android.icu.math.BigDecimal multiply(android.icu.math.BigDecimal);
+    method public android.icu.math.BigDecimal multiply(android.icu.math.BigDecimal, android.icu.math.MathContext);
+    method public android.icu.math.BigDecimal negate();
+    method public android.icu.math.BigDecimal negate(android.icu.math.MathContext);
+    method public android.icu.math.BigDecimal plus();
+    method public android.icu.math.BigDecimal plus(android.icu.math.MathContext);
+    method public android.icu.math.BigDecimal pow(android.icu.math.BigDecimal);
+    method public android.icu.math.BigDecimal pow(android.icu.math.BigDecimal, android.icu.math.MathContext);
+    method public android.icu.math.BigDecimal remainder(android.icu.math.BigDecimal);
+    method public android.icu.math.BigDecimal remainder(android.icu.math.BigDecimal, android.icu.math.MathContext);
+    method public int scale();
+    method public android.icu.math.BigDecimal setScale(int);
+    method public android.icu.math.BigDecimal setScale(int, int);
+    method public short shortValueExact();
+    method public int signum();
+    method public android.icu.math.BigDecimal subtract(android.icu.math.BigDecimal);
+    method public android.icu.math.BigDecimal subtract(android.icu.math.BigDecimal, android.icu.math.MathContext);
+    method public java.math.BigDecimal toBigDecimal();
+    method public java.math.BigInteger toBigInteger();
+    method public java.math.BigInteger toBigIntegerExact();
+    method public char[] toCharArray();
+    method public java.math.BigInteger unscaledValue();
+    method public static android.icu.math.BigDecimal valueOf(double);
+    method public static android.icu.math.BigDecimal valueOf(long);
+    method public static android.icu.math.BigDecimal valueOf(long, int);
+    field public static final android.icu.math.BigDecimal ONE;
+    field public static final int ROUND_CEILING = 2; // 0x2
+    field public static final int ROUND_DOWN = 1; // 0x1
+    field public static final int ROUND_FLOOR = 3; // 0x3
+    field public static final int ROUND_HALF_DOWN = 5; // 0x5
+    field public static final int ROUND_HALF_EVEN = 6; // 0x6
+    field public static final int ROUND_HALF_UP = 4; // 0x4
+    field public static final int ROUND_UNNECESSARY = 7; // 0x7
+    field public static final int ROUND_UP = 0; // 0x0
+    field public static final android.icu.math.BigDecimal TEN;
+    field public static final android.icu.math.BigDecimal ZERO;
+  }
+
+  public final class MathContext implements java.io.Serializable {
+    ctor public MathContext(int);
+    ctor public MathContext(int, int);
+    ctor public MathContext(int, int, boolean);
+    ctor public MathContext(int, int, boolean, int);
+    method public int getDigits();
+    method public int getForm();
+    method public boolean getLostDigits();
+    method public int getRoundingMode();
+    field public static final android.icu.math.MathContext DEFAULT;
+    field public static final int ENGINEERING = 2; // 0x2
+    field public static final int PLAIN = 0; // 0x0
+    field public static final int ROUND_CEILING = 2; // 0x2
+    field public static final int ROUND_DOWN = 1; // 0x1
+    field public static final int ROUND_FLOOR = 3; // 0x3
+    field public static final int ROUND_HALF_DOWN = 5; // 0x5
+    field public static final int ROUND_HALF_EVEN = 6; // 0x6
+    field public static final int ROUND_HALF_UP = 4; // 0x4
+    field public static final int ROUND_UNNECESSARY = 7; // 0x7
+    field public static final int ROUND_UP = 0; // 0x0
+    field public static final int SCIENTIFIC = 1; // 0x1
+  }
+
+}
+
+package android.icu.number {
+
+  public class CompactNotation extends android.icu.number.Notation {
+  }
+
+  public abstract class CurrencyPrecision extends android.icu.number.Precision {
+    method public android.icu.number.Precision withCurrency(android.icu.util.Currency);
+  }
+
+  public class FormattedNumber implements java.lang.CharSequence {
+    method public char charAt(int);
+    method public int length();
+    method public CharSequence subSequence(int, int);
+    method public java.math.BigDecimal toBigDecimal();
+    method public java.text.AttributedCharacterIterator toCharacterIterator();
+  }
+
+  public class FormattedNumberRange implements java.lang.CharSequence {
+    method public char charAt(int);
+    method public java.math.BigDecimal getFirstBigDecimal();
+    method public android.icu.number.NumberRangeFormatter.RangeIdentityResult getIdentityResult();
+    method public java.math.BigDecimal getSecondBigDecimal();
+    method public int length();
+    method public CharSequence subSequence(int, int);
+    method public java.text.AttributedCharacterIterator toCharacterIterator();
+  }
+
+  public abstract class FractionPrecision extends android.icu.number.Precision {
+    method public android.icu.number.Precision withMaxDigits(int);
+    method public android.icu.number.Precision withMinDigits(int);
+  }
+
+  public class IntegerWidth {
+    method public android.icu.number.IntegerWidth truncateAt(int);
+    method public static android.icu.number.IntegerWidth zeroFillTo(int);
+  }
+
+  public class LocalizedNumberFormatter extends android.icu.number.NumberFormatterSettings<android.icu.number.LocalizedNumberFormatter> {
+    method public android.icu.number.FormattedNumber format(long);
+    method public android.icu.number.FormattedNumber format(double);
+    method public android.icu.number.FormattedNumber format(Number);
+    method public android.icu.number.FormattedNumber format(android.icu.util.Measure);
+    method public java.text.Format toFormat();
+  }
+
+  public class LocalizedNumberRangeFormatter extends android.icu.number.NumberRangeFormatterSettings<android.icu.number.LocalizedNumberRangeFormatter> {
+    method public android.icu.number.FormattedNumberRange formatRange(int, int);
+    method public android.icu.number.FormattedNumberRange formatRange(double, double);
+    method public android.icu.number.FormattedNumberRange formatRange(Number, Number);
+  }
+
+  public class Notation {
+    method public static android.icu.number.CompactNotation compactLong();
+    method public static android.icu.number.CompactNotation compactShort();
+    method public static android.icu.number.ScientificNotation engineering();
+    method public static android.icu.number.ScientificNotation scientific();
+    method public static android.icu.number.SimpleNotation simple();
+  }
+
+  public final class NumberFormatter {
+    method public static android.icu.number.UnlocalizedNumberFormatter with();
+    method public static android.icu.number.LocalizedNumberFormatter withLocale(java.util.Locale);
+    method public static android.icu.number.LocalizedNumberFormatter withLocale(android.icu.util.ULocale);
+  }
+
+  public enum NumberFormatter.DecimalSeparatorDisplay {
+    enum_constant public static final android.icu.number.NumberFormatter.DecimalSeparatorDisplay ALWAYS;
+    enum_constant public static final android.icu.number.NumberFormatter.DecimalSeparatorDisplay AUTO;
+  }
+
+  public enum NumberFormatter.GroupingStrategy {
+    enum_constant public static final android.icu.number.NumberFormatter.GroupingStrategy AUTO;
+    enum_constant public static final android.icu.number.NumberFormatter.GroupingStrategy MIN2;
+    enum_constant public static final android.icu.number.NumberFormatter.GroupingStrategy OFF;
+    enum_constant public static final android.icu.number.NumberFormatter.GroupingStrategy ON_ALIGNED;
+    enum_constant public static final android.icu.number.NumberFormatter.GroupingStrategy THOUSANDS;
+  }
+
+  public enum NumberFormatter.SignDisplay {
+    enum_constant public static final android.icu.number.NumberFormatter.SignDisplay ACCOUNTING;
+    enum_constant public static final android.icu.number.NumberFormatter.SignDisplay ACCOUNTING_ALWAYS;
+    enum_constant public static final android.icu.number.NumberFormatter.SignDisplay ACCOUNTING_EXCEPT_ZERO;
+    enum_constant public static final android.icu.number.NumberFormatter.SignDisplay ALWAYS;
+    enum_constant public static final android.icu.number.NumberFormatter.SignDisplay AUTO;
+    enum_constant public static final android.icu.number.NumberFormatter.SignDisplay EXCEPT_ZERO;
+    enum_constant public static final android.icu.number.NumberFormatter.SignDisplay NEVER;
+  }
+
+  public enum NumberFormatter.UnitWidth {
+    enum_constant public static final android.icu.number.NumberFormatter.UnitWidth FULL_NAME;
+    enum_constant public static final android.icu.number.NumberFormatter.UnitWidth HIDDEN;
+    enum_constant public static final android.icu.number.NumberFormatter.UnitWidth ISO_CODE;
+    enum_constant public static final android.icu.number.NumberFormatter.UnitWidth NARROW;
+    enum_constant public static final android.icu.number.NumberFormatter.UnitWidth SHORT;
+  }
+
+  public abstract class NumberFormatterSettings<T extends android.icu.number.NumberFormatterSettings<?>> {
+    method public T decimal(android.icu.number.NumberFormatter.DecimalSeparatorDisplay);
+    method public T grouping(android.icu.number.NumberFormatter.GroupingStrategy);
+    method public T integerWidth(android.icu.number.IntegerWidth);
+    method public T notation(android.icu.number.Notation);
+    method public T perUnit(android.icu.util.MeasureUnit);
+    method public T precision(android.icu.number.Precision);
+    method public T roundingMode(java.math.RoundingMode);
+    method public T scale(android.icu.number.Scale);
+    method public T sign(android.icu.number.NumberFormatter.SignDisplay);
+    method public T symbols(android.icu.text.DecimalFormatSymbols);
+    method public T symbols(android.icu.text.NumberingSystem);
+    method public T unit(android.icu.util.MeasureUnit);
+    method public T unitWidth(android.icu.number.NumberFormatter.UnitWidth);
+  }
+
+  public abstract class NumberRangeFormatter {
+    method public static android.icu.number.UnlocalizedNumberRangeFormatter with();
+    method public static android.icu.number.LocalizedNumberRangeFormatter withLocale(java.util.Locale);
+    method public static android.icu.number.LocalizedNumberRangeFormatter withLocale(android.icu.util.ULocale);
+  }
+
+  public enum NumberRangeFormatter.RangeCollapse {
+    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeCollapse ALL;
+    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeCollapse AUTO;
+    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeCollapse NONE;
+    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeCollapse UNIT;
+  }
+
+  public enum NumberRangeFormatter.RangeIdentityFallback {
+    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeIdentityFallback APPROXIMATELY;
+    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeIdentityFallback APPROXIMATELY_OR_SINGLE_VALUE;
+    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeIdentityFallback RANGE;
+    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeIdentityFallback SINGLE_VALUE;
+  }
+
+  public enum NumberRangeFormatter.RangeIdentityResult {
+    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeIdentityResult EQUAL_AFTER_ROUNDING;
+    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeIdentityResult EQUAL_BEFORE_ROUNDING;
+    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeIdentityResult NOT_EQUAL;
+  }
+
+  public abstract class NumberRangeFormatterSettings<T extends android.icu.number.NumberRangeFormatterSettings<?>> {
+    method public T collapse(android.icu.number.NumberRangeFormatter.RangeCollapse);
+    method public T identityFallback(android.icu.number.NumberRangeFormatter.RangeIdentityFallback);
+    method public T numberFormatterBoth(android.icu.number.UnlocalizedNumberFormatter);
+    method public T numberFormatterFirst(android.icu.number.UnlocalizedNumberFormatter);
+    method public T numberFormatterSecond(android.icu.number.UnlocalizedNumberFormatter);
+  }
+
+  public abstract class Precision {
+    method public static android.icu.number.CurrencyPrecision currency(android.icu.util.Currency.CurrencyUsage);
+    method public static android.icu.number.FractionPrecision fixedFraction(int);
+    method public static android.icu.number.Precision fixedSignificantDigits(int);
+    method public static android.icu.number.Precision increment(java.math.BigDecimal);
+    method public static android.icu.number.FractionPrecision integer();
+    method public static android.icu.number.FractionPrecision maxFraction(int);
+    method public static android.icu.number.Precision maxSignificantDigits(int);
+    method public static android.icu.number.FractionPrecision minFraction(int);
+    method public static android.icu.number.FractionPrecision minMaxFraction(int, int);
+    method public static android.icu.number.Precision minMaxSignificantDigits(int, int);
+    method public static android.icu.number.Precision minSignificantDigits(int);
+    method public static android.icu.number.Precision unlimited();
+  }
+
+  public class Scale {
+    method public static android.icu.number.Scale byBigDecimal(java.math.BigDecimal);
+    method public static android.icu.number.Scale byDouble(double);
+    method public static android.icu.number.Scale byDoubleAndPowerOfTen(double, int);
+    method public static android.icu.number.Scale none();
+    method public static android.icu.number.Scale powerOfTen(int);
+  }
+
+  public class ScientificNotation extends android.icu.number.Notation {
+    method public android.icu.number.ScientificNotation withExponentSignDisplay(android.icu.number.NumberFormatter.SignDisplay);
+    method public android.icu.number.ScientificNotation withMinExponentDigits(int);
+  }
+
+  public class SimpleNotation extends android.icu.number.Notation {
+  }
+
+  public class UnlocalizedNumberFormatter extends android.icu.number.NumberFormatterSettings<android.icu.number.UnlocalizedNumberFormatter> {
+    method public android.icu.number.LocalizedNumberFormatter locale(java.util.Locale);
+    method public android.icu.number.LocalizedNumberFormatter locale(android.icu.util.ULocale);
+  }
+
+  public class UnlocalizedNumberRangeFormatter extends android.icu.number.NumberRangeFormatterSettings<android.icu.number.UnlocalizedNumberRangeFormatter> {
+    method public android.icu.number.LocalizedNumberRangeFormatter locale(java.util.Locale);
+    method public android.icu.number.LocalizedNumberRangeFormatter locale(android.icu.util.ULocale);
+  }
+
+}
+
+package android.icu.text {
+
+  public final class AlphabeticIndex<V> implements java.lang.Iterable<android.icu.text.AlphabeticIndex.Bucket<V>> {
+    ctor public AlphabeticIndex(android.icu.util.ULocale);
+    ctor public AlphabeticIndex(java.util.Locale);
+    ctor public AlphabeticIndex(android.icu.text.RuleBasedCollator);
+    method public android.icu.text.AlphabeticIndex<V> addLabels(android.icu.text.UnicodeSet);
+    method public android.icu.text.AlphabeticIndex<V> addLabels(android.icu.util.ULocale...);
+    method public android.icu.text.AlphabeticIndex<V> addLabels(java.util.Locale...);
+    method public android.icu.text.AlphabeticIndex<V> addRecord(CharSequence, V);
+    method public android.icu.text.AlphabeticIndex.ImmutableIndex<V> buildImmutableIndex();
+    method public android.icu.text.AlphabeticIndex<V> clearRecords();
+    method public int getBucketCount();
+    method public int getBucketIndex(CharSequence);
+    method public java.util.List<java.lang.String> getBucketLabels();
+    method public android.icu.text.RuleBasedCollator getCollator();
+    method public String getInflowLabel();
+    method public int getMaxLabelCount();
+    method public String getOverflowLabel();
+    method public int getRecordCount();
+    method public String getUnderflowLabel();
+    method public java.util.Iterator<android.icu.text.AlphabeticIndex.Bucket<V>> iterator();
+    method public android.icu.text.AlphabeticIndex<V> setInflowLabel(String);
+    method public android.icu.text.AlphabeticIndex<V> setMaxLabelCount(int);
+    method public android.icu.text.AlphabeticIndex<V> setOverflowLabel(String);
+    method public android.icu.text.AlphabeticIndex<V> setUnderflowLabel(String);
+  }
+
+  public static class AlphabeticIndex.Bucket<V> implements java.lang.Iterable<android.icu.text.AlphabeticIndex.Record<V>> {
+    method public String getLabel();
+    method public android.icu.text.AlphabeticIndex.Bucket.LabelType getLabelType();
+    method public java.util.Iterator<android.icu.text.AlphabeticIndex.Record<V>> iterator();
+    method public int size();
+  }
+
+  public enum AlphabeticIndex.Bucket.LabelType {
+    enum_constant public static final android.icu.text.AlphabeticIndex.Bucket.LabelType INFLOW;
+    enum_constant public static final android.icu.text.AlphabeticIndex.Bucket.LabelType NORMAL;
+    enum_constant public static final android.icu.text.AlphabeticIndex.Bucket.LabelType OVERFLOW;
+    enum_constant public static final android.icu.text.AlphabeticIndex.Bucket.LabelType UNDERFLOW;
+  }
+
+  public static final class AlphabeticIndex.ImmutableIndex<V> implements java.lang.Iterable<android.icu.text.AlphabeticIndex.Bucket<V>> {
+    method public android.icu.text.AlphabeticIndex.Bucket<V> getBucket(int);
+    method public int getBucketCount();
+    method public int getBucketIndex(CharSequence);
+    method public java.util.Iterator<android.icu.text.AlphabeticIndex.Bucket<V>> iterator();
+  }
+
+  public static class AlphabeticIndex.Record<V> {
+    method public V getData();
+    method public CharSequence getName();
+  }
+
+  public class Bidi {
+    ctor public Bidi();
+    ctor public Bidi(int, int);
+    ctor public Bidi(String, int);
+    ctor public Bidi(java.text.AttributedCharacterIterator);
+    ctor public Bidi(char[], int, byte[], int, int, int);
+    method public boolean baseIsLeftToRight();
+    method public int countParagraphs();
+    method public int countRuns();
+    method public android.icu.text.Bidi createLineBidi(int, int);
+    method public static byte getBaseDirection(CharSequence);
+    method public int getBaseLevel();
+    method public android.icu.text.BidiClassifier getCustomClassifier();
+    method public int getCustomizedClass(int);
+    method public byte getDirection();
+    method public int getLength();
+    method public byte getLevelAt(int);
+    method public byte[] getLevels();
+    method public int getLogicalIndex(int);
+    method public int[] getLogicalMap();
+    method public android.icu.text.BidiRun getLogicalRun(int);
+    method public byte getParaLevel();
+    method public android.icu.text.BidiRun getParagraph(int);
+    method public android.icu.text.BidiRun getParagraphByIndex(int);
+    method public int getParagraphIndex(int);
+    method public int getProcessedLength();
+    method public int getReorderingMode();
+    method public int getReorderingOptions();
+    method public int getResultLength();
+    method public int getRunCount();
+    method public int getRunLevel(int);
+    method public int getRunLimit(int);
+    method public int getRunStart(int);
+    method public char[] getText();
+    method public String getTextAsString();
+    method public int getVisualIndex(int);
+    method public int[] getVisualMap();
+    method public android.icu.text.BidiRun getVisualRun(int);
+    method public static int[] invertMap(int[]);
+    method public boolean isInverse();
+    method public boolean isLeftToRight();
+    method public boolean isMixed();
+    method public boolean isOrderParagraphsLTR();
+    method public boolean isRightToLeft();
+    method public void orderParagraphsLTR(boolean);
+    method public static int[] reorderLogical(byte[]);
+    method public static int[] reorderVisual(byte[]);
+    method public static void reorderVisually(byte[], int, Object[], int, int);
+    method public static boolean requiresBidi(char[], int, int);
+    method public void setContext(String, String);
+    method public void setCustomClassifier(android.icu.text.BidiClassifier);
+    method public void setInverse(boolean);
+    method public android.icu.text.Bidi setLine(int, int);
+    method public void setPara(String, byte, byte[]);
+    method public void setPara(char[], byte, byte[]);
+    method public void setPara(java.text.AttributedCharacterIterator);
+    method public void setReorderingMode(int);
+    method public void setReorderingOptions(int);
+    method public String writeReordered(int);
+    method public static String writeReverse(String, int);
+    field public static final int DIRECTION_DEFAULT_LEFT_TO_RIGHT = 126; // 0x7e
+    field public static final int DIRECTION_DEFAULT_RIGHT_TO_LEFT = 127; // 0x7f
+    field public static final int DIRECTION_LEFT_TO_RIGHT = 0; // 0x0
+    field public static final int DIRECTION_RIGHT_TO_LEFT = 1; // 0x1
+    field public static final short DO_MIRRORING = 2; // 0x2
+    field public static final short INSERT_LRM_FOR_NUMERIC = 4; // 0x4
+    field public static final short KEEP_BASE_COMBINING = 1; // 0x1
+    field public static final byte LEVEL_DEFAULT_LTR = 126; // 0x7e
+    field public static final byte LEVEL_DEFAULT_RTL = 127; // 0x7f
+    field public static final byte LEVEL_OVERRIDE = -128; // 0xffffff80
+    field public static final byte LTR = 0; // 0x0
+    field public static final int MAP_NOWHERE = -1; // 0xffffffff
+    field public static final byte MAX_EXPLICIT_LEVEL = 125; // 0x7d
+    field public static final byte MIXED = 2; // 0x2
+    field public static final byte NEUTRAL = 3; // 0x3
+    field public static final int OPTION_DEFAULT = 0; // 0x0
+    field public static final int OPTION_INSERT_MARKS = 1; // 0x1
+    field public static final int OPTION_REMOVE_CONTROLS = 2; // 0x2
+    field public static final int OPTION_STREAMING = 4; // 0x4
+    field public static final short OUTPUT_REVERSE = 16; // 0x10
+    field public static final short REMOVE_BIDI_CONTROLS = 8; // 0x8
+    field public static final short REORDER_DEFAULT = 0; // 0x0
+    field public static final short REORDER_GROUP_NUMBERS_WITH_R = 2; // 0x2
+    field public static final short REORDER_INVERSE_FOR_NUMBERS_SPECIAL = 6; // 0x6
+    field public static final short REORDER_INVERSE_LIKE_DIRECT = 5; // 0x5
+    field public static final short REORDER_INVERSE_NUMBERS_AS_L = 4; // 0x4
+    field public static final short REORDER_NUMBERS_SPECIAL = 1; // 0x1
+    field public static final short REORDER_RUNS_ONLY = 3; // 0x3
+    field public static final byte RTL = 1; // 0x1
+  }
+
+  public class BidiClassifier {
+    ctor public BidiClassifier(Object);
+    method public int classify(int);
+    method public Object getContext();
+    method public void setContext(Object);
+  }
+
+  public class BidiRun {
+    method public byte getDirection();
+    method public byte getEmbeddingLevel();
+    method public int getLength();
+    method public int getLimit();
+    method public int getStart();
+    method public boolean isEvenRun();
+    method public boolean isOddRun();
+  }
+
+  public abstract class BreakIterator implements java.lang.Cloneable {
+    ctor protected BreakIterator();
+    method public Object clone();
+    method public abstract int current();
+    method public abstract int first();
+    method public abstract int following(int);
+    method public static java.util.Locale[] getAvailableLocales();
+    method public static android.icu.text.BreakIterator getCharacterInstance();
+    method public static android.icu.text.BreakIterator getCharacterInstance(java.util.Locale);
+    method public static android.icu.text.BreakIterator getCharacterInstance(android.icu.util.ULocale);
+    method public static android.icu.text.BreakIterator getLineInstance();
+    method public static android.icu.text.BreakIterator getLineInstance(java.util.Locale);
+    method public static android.icu.text.BreakIterator getLineInstance(android.icu.util.ULocale);
+    method public int getRuleStatus();
+    method public int getRuleStatusVec(int[]);
+    method public static android.icu.text.BreakIterator getSentenceInstance();
+    method public static android.icu.text.BreakIterator getSentenceInstance(java.util.Locale);
+    method public static android.icu.text.BreakIterator getSentenceInstance(android.icu.util.ULocale);
+    method public abstract java.text.CharacterIterator getText();
+    method @Deprecated public static android.icu.text.BreakIterator getTitleInstance();
+    method @Deprecated public static android.icu.text.BreakIterator getTitleInstance(java.util.Locale);
+    method @Deprecated public static android.icu.text.BreakIterator getTitleInstance(android.icu.util.ULocale);
+    method public static android.icu.text.BreakIterator getWordInstance();
+    method public static android.icu.text.BreakIterator getWordInstance(java.util.Locale);
+    method public static android.icu.text.BreakIterator getWordInstance(android.icu.util.ULocale);
+    method public boolean isBoundary(int);
+    method public abstract int last();
+    method public abstract int next(int);
+    method public abstract int next();
+    method public int preceding(int);
+    method public abstract int previous();
+    method public void setText(String);
+    method public void setText(CharSequence);
+    method public abstract void setText(java.text.CharacterIterator);
+    field public static final int DONE = -1; // 0xffffffff
+    field public static final int KIND_CHARACTER = 0; // 0x0
+    field public static final int KIND_LINE = 2; // 0x2
+    field public static final int KIND_SENTENCE = 3; // 0x3
+    field @Deprecated public static final int KIND_TITLE = 4; // 0x4
+    field public static final int KIND_WORD = 1; // 0x1
+    field public static final int WORD_IDEO = 400; // 0x190
+    field public static final int WORD_IDEO_LIMIT = 500; // 0x1f4
+    field public static final int WORD_KANA = 300; // 0x12c
+    field public static final int WORD_KANA_LIMIT = 400; // 0x190
+    field public static final int WORD_LETTER = 200; // 0xc8
+    field public static final int WORD_LETTER_LIMIT = 300; // 0x12c
+    field public static final int WORD_NONE = 0; // 0x0
+    field public static final int WORD_NONE_LIMIT = 100; // 0x64
+    field public static final int WORD_NUMBER = 100; // 0x64
+    field public static final int WORD_NUMBER_LIMIT = 200; // 0xc8
+  }
+
+  public abstract class CaseMap {
+    method public static android.icu.text.CaseMap.Fold fold();
+    method public abstract android.icu.text.CaseMap omitUnchangedText();
+    method public static android.icu.text.CaseMap.Lower toLower();
+    method public static android.icu.text.CaseMap.Title toTitle();
+    method public static android.icu.text.CaseMap.Upper toUpper();
+  }
+
+  public static final class CaseMap.Fold extends android.icu.text.CaseMap {
+    method public String apply(CharSequence);
+    method public <A extends java.lang.Appendable> A apply(CharSequence, A, android.icu.text.Edits);
+    method public android.icu.text.CaseMap.Fold omitUnchangedText();
+    method public android.icu.text.CaseMap.Fold turkic();
+  }
+
+  public static final class CaseMap.Lower extends android.icu.text.CaseMap {
+    method public String apply(java.util.Locale, CharSequence);
+    method public <A extends java.lang.Appendable> A apply(java.util.Locale, CharSequence, A, android.icu.text.Edits);
+    method public android.icu.text.CaseMap.Lower omitUnchangedText();
+  }
+
+  public static final class CaseMap.Title extends android.icu.text.CaseMap {
+    method public android.icu.text.CaseMap.Title adjustToCased();
+    method public String apply(java.util.Locale, android.icu.text.BreakIterator, CharSequence);
+    method public <A extends java.lang.Appendable> A apply(java.util.Locale, android.icu.text.BreakIterator, CharSequence, A, android.icu.text.Edits);
+    method public android.icu.text.CaseMap.Title noBreakAdjustment();
+    method public android.icu.text.CaseMap.Title noLowercase();
+    method public android.icu.text.CaseMap.Title omitUnchangedText();
+    method public android.icu.text.CaseMap.Title sentences();
+    method public android.icu.text.CaseMap.Title wholeString();
+  }
+
+  public static final class CaseMap.Upper extends android.icu.text.CaseMap {
+    method public String apply(java.util.Locale, CharSequence);
+    method public <A extends java.lang.Appendable> A apply(java.util.Locale, CharSequence, A, android.icu.text.Edits);
+    method public android.icu.text.CaseMap.Upper omitUnchangedText();
+  }
+
+  public final class CollationElementIterator {
+    method public int getMaxExpansion(int);
+    method public int getOffset();
+    method public int next();
+    method public int previous();
+    method public static int primaryOrder(int);
+    method public void reset();
+    method public static int secondaryOrder(int);
+    method public void setOffset(int);
+    method public void setText(String);
+    method public void setText(android.icu.text.UCharacterIterator);
+    method public void setText(java.text.CharacterIterator);
+    method public static int tertiaryOrder(int);
+    field public static final int IGNORABLE = 0; // 0x0
+    field public static final int NULLORDER = -1; // 0xffffffff
+  }
+
+  public final class CollationKey implements java.lang.Comparable<android.icu.text.CollationKey> {
+    ctor public CollationKey(String, byte[]);
+    method public int compareTo(android.icu.text.CollationKey);
+    method public boolean equals(android.icu.text.CollationKey);
+    method public android.icu.text.CollationKey getBound(int, int);
+    method public String getSourceString();
+    method public android.icu.text.CollationKey merge(android.icu.text.CollationKey);
+    method public byte[] toByteArray();
+  }
+
+  public static final class CollationKey.BoundMode {
+    field public static final int LOWER = 0; // 0x0
+    field public static final int UPPER = 1; // 0x1
+    field public static final int UPPER_LONG = 2; // 0x2
+  }
+
+  public abstract class Collator implements java.lang.Cloneable java.util.Comparator<java.lang.Object> android.icu.util.Freezable<android.icu.text.Collator> {
+    ctor protected Collator();
+    method public Object clone() throws java.lang.CloneNotSupportedException;
+    method public android.icu.text.Collator cloneAsThawed();
+    method public abstract int compare(String, String);
+    method public int compare(Object, Object);
+    method public boolean equals(String, String);
+    method public android.icu.text.Collator freeze();
+    method public static java.util.Locale[] getAvailableLocales();
+    method public static final android.icu.util.ULocale[] getAvailableULocales();
+    method public abstract android.icu.text.CollationKey getCollationKey(String);
+    method public int getDecomposition();
+    method public static String getDisplayName(java.util.Locale, java.util.Locale);
+    method public static String getDisplayName(android.icu.util.ULocale, android.icu.util.ULocale);
+    method public static String getDisplayName(java.util.Locale);
+    method public static String getDisplayName(android.icu.util.ULocale);
+    method public static int[] getEquivalentReorderCodes(int);
+    method public static final android.icu.util.ULocale getFunctionalEquivalent(String, android.icu.util.ULocale, boolean[]);
+    method public static final android.icu.util.ULocale getFunctionalEquivalent(String, android.icu.util.ULocale);
+    method public static final android.icu.text.Collator getInstance();
+    method public static final android.icu.text.Collator getInstance(android.icu.util.ULocale);
+    method public static final android.icu.text.Collator getInstance(java.util.Locale);
+    method public static final String[] getKeywordValues(String);
+    method public static final String[] getKeywordValuesForLocale(String, android.icu.util.ULocale, boolean);
+    method public static final String[] getKeywords();
+    method public int getMaxVariable();
+    method public int[] getReorderCodes();
+    method public int getStrength();
+    method public android.icu.text.UnicodeSet getTailoredSet();
+    method public abstract android.icu.util.VersionInfo getUCAVersion();
+    method public abstract int getVariableTop();
+    method public abstract android.icu.util.VersionInfo getVersion();
+    method public boolean isFrozen();
+    method public void setDecomposition(int);
+    method public android.icu.text.Collator setMaxVariable(int);
+    method public void setReorderCodes(int...);
+    method public void setStrength(int);
+    field public static final int CANONICAL_DECOMPOSITION = 17; // 0x11
+    field public static final int FULL_DECOMPOSITION = 15; // 0xf
+    field public static final int IDENTICAL = 15; // 0xf
+    field public static final int NO_DECOMPOSITION = 16; // 0x10
+    field public static final int PRIMARY = 0; // 0x0
+    field public static final int QUATERNARY = 3; // 0x3
+    field public static final int SECONDARY = 1; // 0x1
+    field public static final int TERTIARY = 2; // 0x2
+  }
+
+  public static interface Collator.ReorderCodes {
+    field public static final int CURRENCY = 4099; // 0x1003
+    field public static final int DEFAULT = -1; // 0xffffffff
+    field public static final int DIGIT = 4100; // 0x1004
+    field public static final int FIRST = 4096; // 0x1000
+    field public static final int NONE = 103; // 0x67
+    field public static final int OTHERS = 103; // 0x67
+    field public static final int PUNCTUATION = 4097; // 0x1001
+    field public static final int SPACE = 4096; // 0x1000
+    field public static final int SYMBOL = 4098; // 0x1002
+  }
+
+  public class CompactDecimalFormat extends android.icu.text.DecimalFormat {
+    method public static android.icu.text.CompactDecimalFormat getInstance(android.icu.util.ULocale, android.icu.text.CompactDecimalFormat.CompactStyle);
+    method public static android.icu.text.CompactDecimalFormat getInstance(java.util.Locale, android.icu.text.CompactDecimalFormat.CompactStyle);
+  }
+
+  public enum CompactDecimalFormat.CompactStyle {
+    enum_constant public static final android.icu.text.CompactDecimalFormat.CompactStyle LONG;
+    enum_constant public static final android.icu.text.CompactDecimalFormat.CompactStyle SHORT;
+  }
+
+  public class CurrencyPluralInfo implements java.lang.Cloneable java.io.Serializable {
+    ctor public CurrencyPluralInfo();
+    ctor public CurrencyPluralInfo(java.util.Locale);
+    ctor public CurrencyPluralInfo(android.icu.util.ULocale);
+    method public Object clone();
+    method public String getCurrencyPluralPattern(String);
+    method public static android.icu.text.CurrencyPluralInfo getInstance();
+    method public static android.icu.text.CurrencyPluralInfo getInstance(java.util.Locale);
+    method public static android.icu.text.CurrencyPluralInfo getInstance(android.icu.util.ULocale);
+    method public android.icu.util.ULocale getLocale();
+    method public android.icu.text.PluralRules getPluralRules();
+    method public void setCurrencyPluralPattern(String, String);
+    method public void setLocale(android.icu.util.ULocale);
+    method public void setPluralRules(String);
+  }
+
+  public abstract class DateFormat extends android.icu.text.UFormat {
+    ctor protected DateFormat();
+    method public final StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
+    method public abstract StringBuffer format(android.icu.util.Calendar, StringBuffer, java.text.FieldPosition);
+    method public StringBuffer format(java.util.Date, StringBuffer, java.text.FieldPosition);
+    method public final String format(java.util.Date);
+    method public static java.util.Locale[] getAvailableLocales();
+    method public boolean getBooleanAttribute(android.icu.text.DateFormat.BooleanAttribute);
+    method public android.icu.util.Calendar getCalendar();
+    method public android.icu.text.DisplayContext getContext(android.icu.text.DisplayContext.Type);
+    method public static final android.icu.text.DateFormat getDateInstance();
+    method public static final android.icu.text.DateFormat getDateInstance(int);
+    method public static final android.icu.text.DateFormat getDateInstance(int, java.util.Locale);
+    method public static final android.icu.text.DateFormat getDateInstance(int, android.icu.util.ULocale);
+    method public static final android.icu.text.DateFormat getDateInstance(android.icu.util.Calendar, int, java.util.Locale);
+    method public static final android.icu.text.DateFormat getDateInstance(android.icu.util.Calendar, int, android.icu.util.ULocale);
+    method public static final android.icu.text.DateFormat getDateInstance(android.icu.util.Calendar, int);
+    method public static final android.icu.text.DateFormat getDateTimeInstance();
+    method public static final android.icu.text.DateFormat getDateTimeInstance(int, int);
+    method public static final android.icu.text.DateFormat getDateTimeInstance(int, int, java.util.Locale);
+    method public static final android.icu.text.DateFormat getDateTimeInstance(int, int, android.icu.util.ULocale);
+    method public static final android.icu.text.DateFormat getDateTimeInstance(android.icu.util.Calendar, int, int, java.util.Locale);
+    method public static final android.icu.text.DateFormat getDateTimeInstance(android.icu.util.Calendar, int, int, android.icu.util.ULocale);
+    method public static final android.icu.text.DateFormat getDateTimeInstance(android.icu.util.Calendar, int, int);
+    method public static final android.icu.text.DateFormat getInstance();
+    method public static final android.icu.text.DateFormat getInstance(android.icu.util.Calendar, java.util.Locale);
+    method public static final android.icu.text.DateFormat getInstance(android.icu.util.Calendar);
+    method public static final android.icu.text.DateFormat getInstanceForSkeleton(String);
+    method public static final android.icu.text.DateFormat getInstanceForSkeleton(String, java.util.Locale);
+    method public static final android.icu.text.DateFormat getInstanceForSkeleton(String, android.icu.util.ULocale);
+    method public static final android.icu.text.DateFormat getInstanceForSkeleton(android.icu.util.Calendar, String, java.util.Locale);
+    method public static final android.icu.text.DateFormat getInstanceForSkeleton(android.icu.util.Calendar, String, android.icu.util.ULocale);
+    method public android.icu.text.NumberFormat getNumberFormat();
+    method public static final android.icu.text.DateFormat getPatternInstance(String);
+    method public static final android.icu.text.DateFormat getPatternInstance(String, java.util.Locale);
+    method public static final android.icu.text.DateFormat getPatternInstance(String, android.icu.util.ULocale);
+    method public static final android.icu.text.DateFormat getPatternInstance(android.icu.util.Calendar, String, java.util.Locale);
+    method public static final android.icu.text.DateFormat getPatternInstance(android.icu.util.Calendar, String, android.icu.util.ULocale);
+    method public static final android.icu.text.DateFormat getTimeInstance();
+    method public static final android.icu.text.DateFormat getTimeInstance(int);
+    method public static final android.icu.text.DateFormat getTimeInstance(int, java.util.Locale);
+    method public static final android.icu.text.DateFormat getTimeInstance(int, android.icu.util.ULocale);
+    method public static final android.icu.text.DateFormat getTimeInstance(android.icu.util.Calendar, int, java.util.Locale);
+    method public static final android.icu.text.DateFormat getTimeInstance(android.icu.util.Calendar, int, android.icu.util.ULocale);
+    method public static final android.icu.text.DateFormat getTimeInstance(android.icu.util.Calendar, int);
+    method public android.icu.util.TimeZone getTimeZone();
+    method public boolean isCalendarLenient();
+    method public boolean isLenient();
+    method public java.util.Date parse(String) throws java.text.ParseException;
+    method public abstract void parse(String, android.icu.util.Calendar, java.text.ParsePosition);
+    method public java.util.Date parse(String, java.text.ParsePosition);
+    method public Object parseObject(String, java.text.ParsePosition);
+    method public android.icu.text.DateFormat setBooleanAttribute(android.icu.text.DateFormat.BooleanAttribute, boolean);
+    method public void setCalendar(android.icu.util.Calendar);
+    method public void setCalendarLenient(boolean);
+    method public void setContext(android.icu.text.DisplayContext);
+    method public void setLenient(boolean);
+    method public void setNumberFormat(android.icu.text.NumberFormat);
+    method public void setTimeZone(android.icu.util.TimeZone);
+    field public static final String ABBR_GENERIC_TZ = "v";
+    field public static final String ABBR_MONTH = "MMM";
+    field public static final String ABBR_MONTH_DAY = "MMMd";
+    field public static final String ABBR_MONTH_WEEKDAY_DAY = "MMMEd";
+    field public static final String ABBR_QUARTER = "QQQ";
+    field public static final String ABBR_SPECIFIC_TZ = "z";
+    field public static final String ABBR_UTC_TZ = "ZZZZ";
+    field public static final String ABBR_WEEKDAY = "E";
+    field public static final int AM_PM_FIELD = 14; // 0xe
+    field public static final int AM_PM_MIDNIGHT_NOON_FIELD = 35; // 0x23
+    field public static final int DATE_FIELD = 3; // 0x3
+    field public static final String DAY = "d";
+    field public static final int DAY_OF_WEEK_FIELD = 9; // 0x9
+    field public static final int DAY_OF_WEEK_IN_MONTH_FIELD = 11; // 0xb
+    field public static final int DAY_OF_YEAR_FIELD = 10; // 0xa
+    field public static final int DEFAULT = 2; // 0x2
+    field public static final int DOW_LOCAL_FIELD = 19; // 0x13
+    field public static final int ERA_FIELD = 0; // 0x0
+    field public static final int EXTENDED_YEAR_FIELD = 20; // 0x14
+    field public static final int FLEXIBLE_DAY_PERIOD_FIELD = 36; // 0x24
+    field public static final int FRACTIONAL_SECOND_FIELD = 8; // 0x8
+    field public static final int FULL = 0; // 0x0
+    field public static final String GENERIC_TZ = "vvvv";
+    field public static final String HOUR = "j";
+    field public static final int HOUR0_FIELD = 16; // 0x10
+    field public static final int HOUR1_FIELD = 15; // 0xf
+    field public static final String HOUR24 = "H";
+    field public static final String HOUR24_MINUTE = "Hm";
+    field public static final String HOUR24_MINUTE_SECOND = "Hms";
+    field public static final String HOUR_MINUTE = "jm";
+    field public static final String HOUR_MINUTE_SECOND = "jms";
+    field public static final int HOUR_OF_DAY0_FIELD = 5; // 0x5
+    field public static final int HOUR_OF_DAY1_FIELD = 4; // 0x4
+    field public static final int JULIAN_DAY_FIELD = 21; // 0x15
+    field public static final String LOCATION_TZ = "VVVV";
+    field public static final int LONG = 1; // 0x1
+    field public static final int MEDIUM = 2; // 0x2
+    field public static final int MILLISECONDS_IN_DAY_FIELD = 22; // 0x16
+    field public static final int MILLISECOND_FIELD = 8; // 0x8
+    field public static final String MINUTE = "m";
+    field public static final int MINUTE_FIELD = 6; // 0x6
+    field public static final String MINUTE_SECOND = "ms";
+    field public static final String MONTH = "MMMM";
+    field public static final String MONTH_DAY = "MMMMd";
+    field public static final int MONTH_FIELD = 2; // 0x2
+    field public static final String MONTH_WEEKDAY_DAY = "MMMMEEEEd";
+    field public static final int NONE = -1; // 0xffffffff
+    field public static final String NUM_MONTH = "M";
+    field public static final String NUM_MONTH_DAY = "Md";
+    field public static final String NUM_MONTH_WEEKDAY_DAY = "MEd";
+    field public static final String QUARTER = "QQQQ";
+    field public static final int QUARTER_FIELD = 27; // 0x1b
+    field public static final int RELATIVE = 128; // 0x80
+    field public static final int RELATIVE_DEFAULT = 130; // 0x82
+    field public static final int RELATIVE_FULL = 128; // 0x80
+    field public static final int RELATIVE_LONG = 129; // 0x81
+    field public static final int RELATIVE_MEDIUM = 130; // 0x82
+    field public static final int RELATIVE_SHORT = 131; // 0x83
+    field public static final String SECOND = "s";
+    field public static final int SECOND_FIELD = 7; // 0x7
+    field public static final int SHORT = 3; // 0x3
+    field public static final String SPECIFIC_TZ = "zzzz";
+    field public static final int STANDALONE_DAY_FIELD = 25; // 0x19
+    field public static final int STANDALONE_MONTH_FIELD = 26; // 0x1a
+    field public static final int STANDALONE_QUARTER_FIELD = 28; // 0x1c
+    field public static final int TIMEZONE_FIELD = 17; // 0x11
+    field public static final int TIMEZONE_GENERIC_FIELD = 24; // 0x18
+    field public static final int TIMEZONE_ISO_FIELD = 32; // 0x20
+    field public static final int TIMEZONE_ISO_LOCAL_FIELD = 33; // 0x21
+    field public static final int TIMEZONE_LOCALIZED_GMT_OFFSET_FIELD = 31; // 0x1f
+    field public static final int TIMEZONE_RFC_FIELD = 23; // 0x17
+    field public static final int TIMEZONE_SPECIAL_FIELD = 29; // 0x1d
+    field public static final String WEEKDAY = "EEEE";
+    field public static final int WEEK_OF_MONTH_FIELD = 13; // 0xd
+    field public static final int WEEK_OF_YEAR_FIELD = 12; // 0xc
+    field public static final String YEAR = "y";
+    field public static final String YEAR_ABBR_MONTH = "yMMM";
+    field public static final String YEAR_ABBR_MONTH_DAY = "yMMMd";
+    field public static final String YEAR_ABBR_MONTH_WEEKDAY_DAY = "yMMMEd";
+    field public static final String YEAR_ABBR_QUARTER = "yQQQ";
+    field public static final int YEAR_FIELD = 1; // 0x1
+    field public static final String YEAR_MONTH = "yMMMM";
+    field public static final String YEAR_MONTH_DAY = "yMMMMd";
+    field public static final String YEAR_MONTH_WEEKDAY_DAY = "yMMMMEEEEd";
+    field public static final int YEAR_NAME_FIELD = 30; // 0x1e
+    field public static final String YEAR_NUM_MONTH = "yM";
+    field public static final String YEAR_NUM_MONTH_DAY = "yMd";
+    field public static final String YEAR_NUM_MONTH_WEEKDAY_DAY = "yMEd";
+    field public static final String YEAR_QUARTER = "yQQQQ";
+    field public static final int YEAR_WOY_FIELD = 18; // 0x12
+    field protected android.icu.util.Calendar calendar;
+    field protected android.icu.text.NumberFormat numberFormat;
+  }
+
+  public enum DateFormat.BooleanAttribute {
+    enum_constant public static final android.icu.text.DateFormat.BooleanAttribute PARSE_ALLOW_NUMERIC;
+    enum_constant public static final android.icu.text.DateFormat.BooleanAttribute PARSE_ALLOW_WHITESPACE;
+    enum_constant public static final android.icu.text.DateFormat.BooleanAttribute PARSE_MULTIPLE_PATTERNS_FOR_MATCH;
+    enum_constant public static final android.icu.text.DateFormat.BooleanAttribute PARSE_PARTIAL_LITERAL_MATCH;
+  }
+
+  public static class DateFormat.Field extends java.text.Format.Field {
+    ctor protected DateFormat.Field(String, int);
+    method public int getCalendarField();
+    method public static android.icu.text.DateFormat.Field ofCalendarField(int);
+    field public static final android.icu.text.DateFormat.Field AM_PM;
+    field public static final android.icu.text.DateFormat.Field AM_PM_MIDNIGHT_NOON;
+    field public static final android.icu.text.DateFormat.Field DAY_OF_MONTH;
+    field public static final android.icu.text.DateFormat.Field DAY_OF_WEEK;
+    field public static final android.icu.text.DateFormat.Field DAY_OF_WEEK_IN_MONTH;
+    field public static final android.icu.text.DateFormat.Field DAY_OF_YEAR;
+    field public static final android.icu.text.DateFormat.Field DOW_LOCAL;
+    field public static final android.icu.text.DateFormat.Field ERA;
+    field public static final android.icu.text.DateFormat.Field EXTENDED_YEAR;
+    field public static final android.icu.text.DateFormat.Field FLEXIBLE_DAY_PERIOD;
+    field public static final android.icu.text.DateFormat.Field HOUR0;
+    field public static final android.icu.text.DateFormat.Field HOUR1;
+    field public static final android.icu.text.DateFormat.Field HOUR_OF_DAY0;
+    field public static final android.icu.text.DateFormat.Field HOUR_OF_DAY1;
+    field public static final android.icu.text.DateFormat.Field JULIAN_DAY;
+    field public static final android.icu.text.DateFormat.Field MILLISECOND;
+    field public static final android.icu.text.DateFormat.Field MILLISECONDS_IN_DAY;
+    field public static final android.icu.text.DateFormat.Field MINUTE;
+    field public static final android.icu.text.DateFormat.Field MONTH;
+    field public static final android.icu.text.DateFormat.Field QUARTER;
+    field public static final android.icu.text.DateFormat.Field SECOND;
+    field public static final android.icu.text.DateFormat.Field TIME_ZONE;
+    field public static final android.icu.text.DateFormat.Field WEEK_OF_MONTH;
+    field public static final android.icu.text.DateFormat.Field WEEK_OF_YEAR;
+    field public static final android.icu.text.DateFormat.Field YEAR;
+    field public static final android.icu.text.DateFormat.Field YEAR_WOY;
+  }
+
+  public class DateFormatSymbols implements java.lang.Cloneable java.io.Serializable {
+    ctor public DateFormatSymbols();
+    ctor public DateFormatSymbols(java.util.Locale);
+    ctor public DateFormatSymbols(android.icu.util.ULocale);
+    ctor public DateFormatSymbols(android.icu.util.Calendar, java.util.Locale);
+    ctor public DateFormatSymbols(android.icu.util.Calendar, android.icu.util.ULocale);
+    ctor public DateFormatSymbols(Class<? extends android.icu.util.Calendar>, java.util.Locale);
+    ctor public DateFormatSymbols(Class<? extends android.icu.util.Calendar>, android.icu.util.ULocale);
+    ctor public DateFormatSymbols(java.util.ResourceBundle, java.util.Locale);
+    ctor public DateFormatSymbols(java.util.ResourceBundle, android.icu.util.ULocale);
+    method public Object clone();
+    method public String[] getAmPmStrings();
+    method public static java.util.Locale[] getAvailableLocales();
+    method public String[] getEraNames();
+    method public String[] getEras();
+    method public static android.icu.text.DateFormatSymbols getInstance();
+    method public static android.icu.text.DateFormatSymbols getInstance(java.util.Locale);
+    method public static android.icu.text.DateFormatSymbols getInstance(android.icu.util.ULocale);
+    method public String getLocalPatternChars();
+    method public String[] getMonths();
+    method public String[] getMonths(int, int);
+    method public String[] getQuarters(int, int);
+    method public String[] getShortMonths();
+    method public String[] getShortWeekdays();
+    method public String[] getWeekdays();
+    method public String[] getWeekdays(int, int);
+    method public String[] getYearNames(int, int);
+    method public String[] getZodiacNames(int, int);
+    method public String[][] getZoneStrings();
+    method protected void initializeData(android.icu.util.ULocale, String);
+    method public void setAmPmStrings(String[]);
+    method public void setEraNames(String[]);
+    method public void setEras(String[]);
+    method public void setLocalPatternChars(String);
+    method public void setMonths(String[]);
+    method public void setMonths(String[], int, int);
+    method public void setQuarters(String[], int, int);
+    method public void setShortMonths(String[]);
+    method public void setShortWeekdays(String[]);
+    method public void setWeekdays(String[], int, int);
+    method public void setWeekdays(String[]);
+    method public void setYearNames(String[], int, int);
+    method public void setZodiacNames(String[], int, int);
+    method public void setZoneStrings(String[][]);
+    field public static final int ABBREVIATED = 0; // 0x0
+    field public static final int FORMAT = 0; // 0x0
+    field public static final int NARROW = 2; // 0x2
+    field public static final int SHORT = 3; // 0x3
+    field public static final int STANDALONE = 1; // 0x1
+    field public static final int WIDE = 1; // 0x1
+  }
+
+  public class DateIntervalFormat extends android.icu.text.UFormat {
+    method public final StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
+    method public final StringBuffer format(android.icu.util.DateInterval, StringBuffer, java.text.FieldPosition);
+    method public final StringBuffer format(android.icu.util.Calendar, android.icu.util.Calendar, StringBuffer, java.text.FieldPosition);
+    method public android.icu.text.DateFormat getDateFormat();
+    method public android.icu.text.DateIntervalInfo getDateIntervalInfo();
+    method public static final android.icu.text.DateIntervalFormat getInstance(String);
+    method public static final android.icu.text.DateIntervalFormat getInstance(String, java.util.Locale);
+    method public static final android.icu.text.DateIntervalFormat getInstance(String, android.icu.util.ULocale);
+    method public static final android.icu.text.DateIntervalFormat getInstance(String, android.icu.text.DateIntervalInfo);
+    method public static final android.icu.text.DateIntervalFormat getInstance(String, java.util.Locale, android.icu.text.DateIntervalInfo);
+    method public static final android.icu.text.DateIntervalFormat getInstance(String, android.icu.util.ULocale, android.icu.text.DateIntervalInfo);
+    method public android.icu.util.TimeZone getTimeZone();
+    method @Deprecated public Object parseObject(String, java.text.ParsePosition);
+    method public void setDateIntervalInfo(android.icu.text.DateIntervalInfo);
+    method public void setTimeZone(android.icu.util.TimeZone);
+  }
+
+  public class DateIntervalInfo implements java.lang.Cloneable android.icu.util.Freezable<android.icu.text.DateIntervalInfo> java.io.Serializable {
+    ctor public DateIntervalInfo(android.icu.util.ULocale);
+    ctor public DateIntervalInfo(java.util.Locale);
+    method public Object clone();
+    method public android.icu.text.DateIntervalInfo cloneAsThawed();
+    method public android.icu.text.DateIntervalInfo freeze();
+    method public boolean getDefaultOrder();
+    method public String getFallbackIntervalPattern();
+    method public android.icu.text.DateIntervalInfo.PatternInfo getIntervalPattern(String, int);
+    method public boolean isFrozen();
+    method public void setFallbackIntervalPattern(String);
+    method public void setIntervalPattern(String, int, String);
+  }
+
+  public static final class DateIntervalInfo.PatternInfo implements java.lang.Cloneable java.io.Serializable {
+    ctor public DateIntervalInfo.PatternInfo(String, String, boolean);
+    method public boolean firstDateInPtnIsLaterDate();
+    method public String getFirstPart();
+    method public String getSecondPart();
+  }
+
+  public class DateTimePatternGenerator implements java.lang.Cloneable android.icu.util.Freezable<android.icu.text.DateTimePatternGenerator> {
+    ctor protected DateTimePatternGenerator();
+    method public android.icu.text.DateTimePatternGenerator addPattern(String, boolean, android.icu.text.DateTimePatternGenerator.PatternInfo);
+    method public Object clone();
+    method public android.icu.text.DateTimePatternGenerator cloneAsThawed();
+    method public android.icu.text.DateTimePatternGenerator freeze();
+    method public String getAppendItemFormat(int);
+    method public String getAppendItemName(int);
+    method public String getBaseSkeleton(String);
+    method public java.util.Set<java.lang.String> getBaseSkeletons(java.util.Set<java.lang.String>);
+    method public String getBestPattern(String);
+    method public String getBestPattern(String, int);
+    method public String getDateTimeFormat();
+    method public String getDecimal();
+    method public static android.icu.text.DateTimePatternGenerator getEmptyInstance();
+    method public String getFieldDisplayName(int, android.icu.text.DateTimePatternGenerator.DisplayWidth);
+    method public static android.icu.text.DateTimePatternGenerator getInstance();
+    method public static android.icu.text.DateTimePatternGenerator getInstance(android.icu.util.ULocale);
+    method public static android.icu.text.DateTimePatternGenerator getInstance(java.util.Locale);
+    method public String getSkeleton(String);
+    method public java.util.Map<java.lang.String,java.lang.String> getSkeletons(java.util.Map<java.lang.String,java.lang.String>);
+    method public boolean isFrozen();
+    method public String replaceFieldTypes(String, String);
+    method public String replaceFieldTypes(String, String, int);
+    method public void setAppendItemFormat(int, String);
+    method public void setAppendItemName(int, String);
+    method public void setDateTimeFormat(String);
+    method public void setDecimal(String);
+    field public static final int DAY = 7; // 0x7
+    field public static final int DAYPERIOD = 10; // 0xa
+    field public static final int DAY_OF_WEEK_IN_MONTH = 9; // 0x9
+    field public static final int DAY_OF_YEAR = 8; // 0x8
+    field public static final int ERA = 0; // 0x0
+    field public static final int FRACTIONAL_SECOND = 14; // 0xe
+    field public static final int HOUR = 11; // 0xb
+    field public static final int MATCH_ALL_FIELDS_LENGTH = 65535; // 0xffff
+    field public static final int MATCH_HOUR_FIELD_LENGTH = 2048; // 0x800
+    field public static final int MATCH_NO_OPTIONS = 0; // 0x0
+    field public static final int MINUTE = 12; // 0xc
+    field public static final int MONTH = 3; // 0x3
+    field public static final int QUARTER = 2; // 0x2
+    field public static final int SECOND = 13; // 0xd
+    field public static final int WEEKDAY = 6; // 0x6
+    field public static final int WEEK_OF_MONTH = 5; // 0x5
+    field public static final int WEEK_OF_YEAR = 4; // 0x4
+    field public static final int YEAR = 1; // 0x1
+    field public static final int ZONE = 15; // 0xf
+  }
+
+  public enum DateTimePatternGenerator.DisplayWidth {
+    enum_constant public static final android.icu.text.DateTimePatternGenerator.DisplayWidth ABBREVIATED;
+    enum_constant public static final android.icu.text.DateTimePatternGenerator.DisplayWidth NARROW;
+    enum_constant public static final android.icu.text.DateTimePatternGenerator.DisplayWidth WIDE;
+  }
+
+  public static final class DateTimePatternGenerator.PatternInfo {
+    ctor public DateTimePatternGenerator.PatternInfo();
+    field public static final int BASE_CONFLICT = 1; // 0x1
+    field public static final int CONFLICT = 2; // 0x2
+    field public static final int OK = 0; // 0x0
+    field public String conflictingPattern;
+    field public int status;
+  }
+
+  public class DecimalFormat extends android.icu.text.NumberFormat {
+    ctor public DecimalFormat();
+    ctor public DecimalFormat(String);
+    ctor public DecimalFormat(String, android.icu.text.DecimalFormatSymbols);
+    ctor public DecimalFormat(String, android.icu.text.DecimalFormatSymbols, android.icu.text.CurrencyPluralInfo, int);
+    method public void applyLocalizedPattern(String);
+    method public void applyPattern(String);
+    method public boolean areSignificantDigitsUsed();
+    method public StringBuffer format(double, StringBuffer, java.text.FieldPosition);
+    method public StringBuffer format(long, StringBuffer, java.text.FieldPosition);
+    method public StringBuffer format(java.math.BigInteger, StringBuffer, java.text.FieldPosition);
+    method public StringBuffer format(java.math.BigDecimal, StringBuffer, java.text.FieldPosition);
+    method public StringBuffer format(android.icu.math.BigDecimal, StringBuffer, java.text.FieldPosition);
+    method public android.icu.text.CurrencyPluralInfo getCurrencyPluralInfo();
+    method public android.icu.util.Currency.CurrencyUsage getCurrencyUsage();
+    method public android.icu.text.DecimalFormatSymbols getDecimalFormatSymbols();
+    method public int getFormatWidth();
+    method public int getGroupingSize();
+    method public java.math.MathContext getMathContext();
+    method public android.icu.math.MathContext getMathContextICU();
+    method public int getMaximumSignificantDigits();
+    method public byte getMinimumExponentDigits();
+    method public int getMinimumSignificantDigits();
+    method public int getMultiplier();
+    method public String getNegativePrefix();
+    method public String getNegativeSuffix();
+    method public char getPadCharacter();
+    method public int getPadPosition();
+    method @Deprecated public int getParseMaxDigits();
+    method public String getPositivePrefix();
+    method public String getPositiveSuffix();
+    method public java.math.BigDecimal getRoundingIncrement();
+    method public int getSecondaryGroupingSize();
+    method public boolean isDecimalPatternMatchRequired();
+    method public boolean isDecimalSeparatorAlwaysShown();
+    method public boolean isExponentSignAlwaysShown();
+    method public boolean isParseBigDecimal();
+    method public boolean isScientificNotation();
+    method public Number parse(String, java.text.ParsePosition);
+    method public void setCurrencyPluralInfo(android.icu.text.CurrencyPluralInfo);
+    method public void setCurrencyUsage(android.icu.util.Currency.CurrencyUsage);
+    method public void setDecimalFormatSymbols(android.icu.text.DecimalFormatSymbols);
+    method public void setDecimalPatternMatchRequired(boolean);
+    method public void setDecimalSeparatorAlwaysShown(boolean);
+    method public void setExponentSignAlwaysShown(boolean);
+    method public void setFormatWidth(int);
+    method public void setGroupingSize(int);
+    method public void setMathContext(java.math.MathContext);
+    method public void setMathContextICU(android.icu.math.MathContext);
+    method public void setMaximumSignificantDigits(int);
+    method public void setMinimumExponentDigits(byte);
+    method public void setMinimumSignificantDigits(int);
+    method public void setMultiplier(int);
+    method public void setNegativePrefix(String);
+    method public void setNegativeSuffix(String);
+    method public void setPadCharacter(char);
+    method public void setPadPosition(int);
+    method public void setParseBigDecimal(boolean);
+    method @Deprecated public void setParseMaxDigits(int);
+    method public void setPositivePrefix(String);
+    method public void setPositiveSuffix(String);
+    method public void setRoundingIncrement(java.math.BigDecimal);
+    method public void setRoundingIncrement(android.icu.math.BigDecimal);
+    method public void setRoundingIncrement(double);
+    method public void setScientificNotation(boolean);
+    method public void setSecondaryGroupingSize(int);
+    method public void setSignificantDigitsUsed(boolean);
+    method public String toLocalizedPattern();
+    method public String toPattern();
+    field public static final int PAD_AFTER_PREFIX = 1; // 0x1
+    field public static final int PAD_AFTER_SUFFIX = 3; // 0x3
+    field public static final int PAD_BEFORE_PREFIX = 0; // 0x0
+    field public static final int PAD_BEFORE_SUFFIX = 2; // 0x2
+  }
+
+  public class DecimalFormatSymbols implements java.lang.Cloneable java.io.Serializable {
+    ctor public DecimalFormatSymbols();
+    ctor public DecimalFormatSymbols(java.util.Locale);
+    ctor public DecimalFormatSymbols(android.icu.util.ULocale);
+    method public Object clone();
+    method public static android.icu.text.DecimalFormatSymbols forNumberingSystem(java.util.Locale, android.icu.text.NumberingSystem);
+    method public static android.icu.text.DecimalFormatSymbols forNumberingSystem(android.icu.util.ULocale, android.icu.text.NumberingSystem);
+    method public static java.util.Locale[] getAvailableLocales();
+    method public android.icu.util.Currency getCurrency();
+    method public String getCurrencySymbol();
+    method public char getDecimalSeparator();
+    method public String getDecimalSeparatorString();
+    method public char getDigit();
+    method public String[] getDigitStrings();
+    method public char[] getDigits();
+    method public String getExponentMultiplicationSign();
+    method public String getExponentSeparator();
+    method public char getGroupingSeparator();
+    method public String getGroupingSeparatorString();
+    method public String getInfinity();
+    method public static android.icu.text.DecimalFormatSymbols getInstance();
+    method public static android.icu.text.DecimalFormatSymbols getInstance(java.util.Locale);
+    method public static android.icu.text.DecimalFormatSymbols getInstance(android.icu.util.ULocale);
+    method public String getInternationalCurrencySymbol();
+    method public java.util.Locale getLocale();
+    method public char getMinusSign();
+    method public String getMinusSignString();
+    method public char getMonetaryDecimalSeparator();
+    method public String getMonetaryDecimalSeparatorString();
+    method public char getMonetaryGroupingSeparator();
+    method public String getMonetaryGroupingSeparatorString();
+    method public String getNaN();
+    method public char getPadEscape();
+    method public String getPatternForCurrencySpacing(int, boolean);
+    method public char getPatternSeparator();
+    method public char getPerMill();
+    method public String getPerMillString();
+    method public char getPercent();
+    method public String getPercentString();
+    method public char getPlusSign();
+    method public String getPlusSignString();
+    method public char getSignificantDigit();
+    method public android.icu.util.ULocale getULocale();
+    method public char getZeroDigit();
+    method public void setCurrency(android.icu.util.Currency);
+    method public void setCurrencySymbol(String);
+    method public void setDecimalSeparator(char);
+    method public void setDecimalSeparatorString(String);
+    method public void setDigit(char);
+    method public void setDigitStrings(String[]);
+    method public void setExponentMultiplicationSign(String);
+    method public void setExponentSeparator(String);
+    method public void setGroupingSeparator(char);
+    method public void setGroupingSeparatorString(String);
+    method public void setInfinity(String);
+    method public void setInternationalCurrencySymbol(String);
+    method public void setMinusSign(char);
+    method public void setMinusSignString(String);
+    method public void setMonetaryDecimalSeparator(char);
+    method public void setMonetaryDecimalSeparatorString(String);
+    method public void setMonetaryGroupingSeparator(char);
+    method public void setMonetaryGroupingSeparatorString(String);
+    method public void setNaN(String);
+    method public void setPadEscape(char);
+    method public void setPatternForCurrencySpacing(int, boolean, String);
+    method public void setPatternSeparator(char);
+    method public void setPerMill(char);
+    method public void setPerMillString(String);
+    method public void setPercent(char);
+    method public void setPercentString(String);
+    method public void setPlusSign(char);
+    method public void setPlusSignString(String);
+    method public void setSignificantDigit(char);
+    method public void setZeroDigit(char);
+    field public static final int CURRENCY_SPC_CURRENCY_MATCH = 0; // 0x0
+    field public static final int CURRENCY_SPC_INSERT = 2; // 0x2
+    field public static final int CURRENCY_SPC_SURROUNDING_MATCH = 1; // 0x1
+  }
+
+  public enum DisplayContext {
+    method public android.icu.text.DisplayContext.Type type();
+    method public int value();
+    enum_constant public static final android.icu.text.DisplayContext CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE;
+    enum_constant public static final android.icu.text.DisplayContext CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE;
+    enum_constant public static final android.icu.text.DisplayContext CAPITALIZATION_FOR_STANDALONE;
+    enum_constant public static final android.icu.text.DisplayContext CAPITALIZATION_FOR_UI_LIST_OR_MENU;
+    enum_constant public static final android.icu.text.DisplayContext CAPITALIZATION_NONE;
+    enum_constant public static final android.icu.text.DisplayContext DIALECT_NAMES;
+    enum_constant public static final android.icu.text.DisplayContext LENGTH_FULL;
+    enum_constant public static final android.icu.text.DisplayContext LENGTH_SHORT;
+    enum_constant public static final android.icu.text.DisplayContext NO_SUBSTITUTE;
+    enum_constant public static final android.icu.text.DisplayContext STANDARD_NAMES;
+    enum_constant public static final android.icu.text.DisplayContext SUBSTITUTE;
+  }
+
+  public enum DisplayContext.Type {
+    enum_constant public static final android.icu.text.DisplayContext.Type CAPITALIZATION;
+    enum_constant public static final android.icu.text.DisplayContext.Type DIALECT_HANDLING;
+    enum_constant public static final android.icu.text.DisplayContext.Type DISPLAY_LENGTH;
+    enum_constant public static final android.icu.text.DisplayContext.Type SUBSTITUTE_HANDLING;
+  }
+
+  public final class Edits {
+    ctor public Edits();
+    method public void addReplace(int, int);
+    method public void addUnchanged(int);
+    method public android.icu.text.Edits.Iterator getCoarseChangesIterator();
+    method public android.icu.text.Edits.Iterator getCoarseIterator();
+    method public android.icu.text.Edits.Iterator getFineChangesIterator();
+    method public android.icu.text.Edits.Iterator getFineIterator();
+    method public boolean hasChanges();
+    method public int lengthDelta();
+    method public android.icu.text.Edits mergeAndAppend(android.icu.text.Edits, android.icu.text.Edits);
+    method public int numberOfChanges();
+    method public void reset();
+  }
+
+  public static final class Edits.Iterator {
+    method public int destinationIndex();
+    method public int destinationIndexFromSourceIndex(int);
+    method public boolean findDestinationIndex(int);
+    method public boolean findSourceIndex(int);
+    method public boolean hasChange();
+    method public int newLength();
+    method public boolean next();
+    method public int oldLength();
+    method public int replacementIndex();
+    method public int sourceIndex();
+    method public int sourceIndexFromDestinationIndex(int);
+  }
+
+  public abstract class IDNA {
+    method public static android.icu.text.IDNA getUTS46Instance(int);
+    method public abstract StringBuilder labelToASCII(CharSequence, StringBuilder, android.icu.text.IDNA.Info);
+    method public abstract StringBuilder labelToUnicode(CharSequence, StringBuilder, android.icu.text.IDNA.Info);
+    method public abstract StringBuilder nameToASCII(CharSequence, StringBuilder, android.icu.text.IDNA.Info);
+    method public abstract StringBuilder nameToUnicode(CharSequence, StringBuilder, android.icu.text.IDNA.Info);
+    field public static final int CHECK_BIDI = 4; // 0x4
+    field public static final int CHECK_CONTEXTJ = 8; // 0x8
+    field public static final int CHECK_CONTEXTO = 64; // 0x40
+    field public static final int DEFAULT = 0; // 0x0
+    field public static final int NONTRANSITIONAL_TO_ASCII = 16; // 0x10
+    field public static final int NONTRANSITIONAL_TO_UNICODE = 32; // 0x20
+    field public static final int USE_STD3_RULES = 2; // 0x2
+  }
+
+  public enum IDNA.Error {
+    enum_constant public static final android.icu.text.IDNA.Error BIDI;
+    enum_constant public static final android.icu.text.IDNA.Error CONTEXTJ;
+    enum_constant public static final android.icu.text.IDNA.Error CONTEXTO_DIGITS;
+    enum_constant public static final android.icu.text.IDNA.Error CONTEXTO_PUNCTUATION;
+    enum_constant public static final android.icu.text.IDNA.Error DISALLOWED;
+    enum_constant public static final android.icu.text.IDNA.Error DOMAIN_NAME_TOO_LONG;
+    enum_constant public static final android.icu.text.IDNA.Error EMPTY_LABEL;
+    enum_constant public static final android.icu.text.IDNA.Error HYPHEN_3_4;
+    enum_constant public static final android.icu.text.IDNA.Error INVALID_ACE_LABEL;
+    enum_constant public static final android.icu.text.IDNA.Error LABEL_HAS_DOT;
+    enum_constant public static final android.icu.text.IDNA.Error LABEL_TOO_LONG;
+    enum_constant public static final android.icu.text.IDNA.Error LEADING_COMBINING_MARK;
+    enum_constant public static final android.icu.text.IDNA.Error LEADING_HYPHEN;
+    enum_constant public static final android.icu.text.IDNA.Error PUNYCODE;
+    enum_constant public static final android.icu.text.IDNA.Error TRAILING_HYPHEN;
+  }
+
+  public static final class IDNA.Info {
+    ctor public IDNA.Info();
+    method public java.util.Set<android.icu.text.IDNA.Error> getErrors();
+    method public boolean hasErrors();
+    method public boolean isTransitionalDifferent();
+  }
+
+  public final class ListFormatter {
+    method public String format(java.lang.Object...);
+    method public String format(java.util.Collection<?>);
+    method public static android.icu.text.ListFormatter getInstance(android.icu.util.ULocale);
+    method public static android.icu.text.ListFormatter getInstance(java.util.Locale);
+    method public static android.icu.text.ListFormatter getInstance();
+    method public String getPatternForNumItems(int);
+  }
+
+  public abstract class LocaleDisplayNames {
+    method public abstract android.icu.text.DisplayContext getContext(android.icu.text.DisplayContext.Type);
+    method public abstract android.icu.text.LocaleDisplayNames.DialectHandling getDialectHandling();
+    method public static android.icu.text.LocaleDisplayNames getInstance(android.icu.util.ULocale);
+    method public static android.icu.text.LocaleDisplayNames getInstance(java.util.Locale);
+    method public static android.icu.text.LocaleDisplayNames getInstance(android.icu.util.ULocale, android.icu.text.LocaleDisplayNames.DialectHandling);
+    method public static android.icu.text.LocaleDisplayNames getInstance(android.icu.util.ULocale, android.icu.text.DisplayContext...);
+    method public static android.icu.text.LocaleDisplayNames getInstance(java.util.Locale, android.icu.text.DisplayContext...);
+    method public abstract android.icu.util.ULocale getLocale();
+    method public java.util.List<android.icu.text.LocaleDisplayNames.UiListItem> getUiList(java.util.Set<android.icu.util.ULocale>, boolean, java.util.Comparator<java.lang.Object>);
+    method public abstract java.util.List<android.icu.text.LocaleDisplayNames.UiListItem> getUiListCompareWholeItems(java.util.Set<android.icu.util.ULocale>, java.util.Comparator<android.icu.text.LocaleDisplayNames.UiListItem>);
+    method public abstract String keyDisplayName(String);
+    method public abstract String keyValueDisplayName(String, String);
+    method public abstract String languageDisplayName(String);
+    method public abstract String localeDisplayName(android.icu.util.ULocale);
+    method public abstract String localeDisplayName(java.util.Locale);
+    method public abstract String localeDisplayName(String);
+    method public abstract String regionDisplayName(String);
+    method public abstract String scriptDisplayName(String);
+    method public abstract String scriptDisplayName(int);
+    method public abstract String variantDisplayName(String);
+  }
+
+  public enum LocaleDisplayNames.DialectHandling {
+    enum_constant public static final android.icu.text.LocaleDisplayNames.DialectHandling DIALECT_NAMES;
+    enum_constant public static final android.icu.text.LocaleDisplayNames.DialectHandling STANDARD_NAMES;
+  }
+
+  public static class LocaleDisplayNames.UiListItem {
+    ctor public LocaleDisplayNames.UiListItem(android.icu.util.ULocale, android.icu.util.ULocale, String, String);
+    method public static java.util.Comparator<android.icu.text.LocaleDisplayNames.UiListItem> getComparator(java.util.Comparator<java.lang.Object>, boolean);
+    field public final android.icu.util.ULocale minimized;
+    field public final android.icu.util.ULocale modified;
+    field public final String nameInDisplayLocale;
+    field public final String nameInSelf;
+  }
+
+  public class MeasureFormat extends android.icu.text.UFormat {
+    method public final boolean equals(Object);
+    method public StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
+    method public StringBuilder formatMeasurePerUnit(android.icu.util.Measure, android.icu.util.MeasureUnit, StringBuilder, java.text.FieldPosition);
+    method public final String formatMeasures(android.icu.util.Measure...);
+    method public StringBuilder formatMeasures(StringBuilder, java.text.FieldPosition, android.icu.util.Measure...);
+    method public static android.icu.text.MeasureFormat getCurrencyFormat(android.icu.util.ULocale);
+    method public static android.icu.text.MeasureFormat getCurrencyFormat(java.util.Locale);
+    method public static android.icu.text.MeasureFormat getCurrencyFormat();
+    method public static android.icu.text.MeasureFormat getInstance(android.icu.util.ULocale, android.icu.text.MeasureFormat.FormatWidth);
+    method public static android.icu.text.MeasureFormat getInstance(java.util.Locale, android.icu.text.MeasureFormat.FormatWidth);
+    method public static android.icu.text.MeasureFormat getInstance(android.icu.util.ULocale, android.icu.text.MeasureFormat.FormatWidth, android.icu.text.NumberFormat);
+    method public static android.icu.text.MeasureFormat getInstance(java.util.Locale, android.icu.text.MeasureFormat.FormatWidth, android.icu.text.NumberFormat);
+    method public final android.icu.util.ULocale getLocale();
+    method public android.icu.text.NumberFormat getNumberFormat();
+    method public String getUnitDisplayName(android.icu.util.MeasureUnit);
+    method public android.icu.text.MeasureFormat.FormatWidth getWidth();
+    method public final int hashCode();
+    method public android.icu.util.Measure parseObject(String, java.text.ParsePosition);
+  }
+
+  public enum MeasureFormat.FormatWidth {
+    enum_constant public static final android.icu.text.MeasureFormat.FormatWidth NARROW;
+    enum_constant public static final android.icu.text.MeasureFormat.FormatWidth NUMERIC;
+    enum_constant public static final android.icu.text.MeasureFormat.FormatWidth SHORT;
+    enum_constant public static final android.icu.text.MeasureFormat.FormatWidth WIDE;
+  }
+
+  public class MessageFormat extends android.icu.text.UFormat {
+    ctor public MessageFormat(String);
+    ctor public MessageFormat(String, java.util.Locale);
+    ctor public MessageFormat(String, android.icu.util.ULocale);
+    method public void applyPattern(String);
+    method public void applyPattern(String, android.icu.text.MessagePattern.ApostropheMode);
+    method public static String autoQuoteApostrophe(String);
+    method public final StringBuffer format(Object[], StringBuffer, java.text.FieldPosition);
+    method public final StringBuffer format(java.util.Map<java.lang.String,java.lang.Object>, StringBuffer, java.text.FieldPosition);
+    method public static String format(String, java.lang.Object...);
+    method public static String format(String, java.util.Map<java.lang.String,java.lang.Object>);
+    method public final StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
+    method public android.icu.text.MessagePattern.ApostropheMode getApostropheMode();
+    method public java.util.Set<java.lang.String> getArgumentNames();
+    method public java.text.Format getFormatByArgumentName(String);
+    method public java.text.Format[] getFormats();
+    method public java.text.Format[] getFormatsByArgumentIndex();
+    method public java.util.Locale getLocale();
+    method public android.icu.util.ULocale getULocale();
+    method public Object[] parse(String, java.text.ParsePosition);
+    method public Object[] parse(String) throws java.text.ParseException;
+    method public Object parseObject(String, java.text.ParsePosition);
+    method public java.util.Map<java.lang.String,java.lang.Object> parseToMap(String, java.text.ParsePosition);
+    method public java.util.Map<java.lang.String,java.lang.Object> parseToMap(String) throws java.text.ParseException;
+    method public void setFormat(int, java.text.Format);
+    method public void setFormatByArgumentIndex(int, java.text.Format);
+    method public void setFormatByArgumentName(String, java.text.Format);
+    method public void setFormats(java.text.Format[]);
+    method public void setFormatsByArgumentIndex(java.text.Format[]);
+    method public void setFormatsByArgumentName(java.util.Map<java.lang.String,java.text.Format>);
+    method public void setLocale(java.util.Locale);
+    method public void setLocale(android.icu.util.ULocale);
+    method public String toPattern();
+    method public boolean usesNamedArguments();
+  }
+
+  public static class MessageFormat.Field extends java.text.Format.Field {
+    ctor protected MessageFormat.Field(String);
+    field public static final android.icu.text.MessageFormat.Field ARGUMENT;
+  }
+
+  public final class MessagePattern implements java.lang.Cloneable android.icu.util.Freezable<android.icu.text.MessagePattern> {
+    ctor public MessagePattern();
+    ctor public MessagePattern(android.icu.text.MessagePattern.ApostropheMode);
+    ctor public MessagePattern(String);
+    method public String autoQuoteApostropheDeep();
+    method public void clear();
+    method public void clearPatternAndSetApostropheMode(android.icu.text.MessagePattern.ApostropheMode);
+    method public Object clone();
+    method public android.icu.text.MessagePattern cloneAsThawed();
+    method public int countParts();
+    method public android.icu.text.MessagePattern freeze();
+    method public android.icu.text.MessagePattern.ApostropheMode getApostropheMode();
+    method public int getLimitPartIndex(int);
+    method public double getNumericValue(android.icu.text.MessagePattern.Part);
+    method public android.icu.text.MessagePattern.Part getPart(int);
+    method public android.icu.text.MessagePattern.Part.Type getPartType(int);
+    method public int getPatternIndex(int);
+    method public String getPatternString();
+    method public double getPluralOffset(int);
+    method public String getSubstring(android.icu.text.MessagePattern.Part);
+    method public boolean hasNamedArguments();
+    method public boolean hasNumberedArguments();
+    method public boolean isFrozen();
+    method public android.icu.text.MessagePattern parse(String);
+    method public android.icu.text.MessagePattern parseChoiceStyle(String);
+    method public android.icu.text.MessagePattern parsePluralStyle(String);
+    method public android.icu.text.MessagePattern parseSelectStyle(String);
+    method public boolean partSubstringMatches(android.icu.text.MessagePattern.Part, String);
+    method public static int validateArgumentName(String);
+    field public static final int ARG_NAME_NOT_NUMBER = -1; // 0xffffffff
+    field public static final int ARG_NAME_NOT_VALID = -2; // 0xfffffffe
+    field public static final double NO_NUMERIC_VALUE = -1.23456789E8;
+  }
+
+  public enum MessagePattern.ApostropheMode {
+    enum_constant public static final android.icu.text.MessagePattern.ApostropheMode DOUBLE_OPTIONAL;
+    enum_constant public static final android.icu.text.MessagePattern.ApostropheMode DOUBLE_REQUIRED;
+  }
+
+  public enum MessagePattern.ArgType {
+    method public boolean hasPluralStyle();
+    enum_constant public static final android.icu.text.MessagePattern.ArgType CHOICE;
+    enum_constant public static final android.icu.text.MessagePattern.ArgType NONE;
+    enum_constant public static final android.icu.text.MessagePattern.ArgType PLURAL;
+    enum_constant public static final android.icu.text.MessagePattern.ArgType SELECT;
+    enum_constant public static final android.icu.text.MessagePattern.ArgType SELECTORDINAL;
+    enum_constant public static final android.icu.text.MessagePattern.ArgType SIMPLE;
+  }
+
+  public static final class MessagePattern.Part {
+    method public android.icu.text.MessagePattern.ArgType getArgType();
+    method public int getIndex();
+    method public int getLength();
+    method public int getLimit();
+    method public android.icu.text.MessagePattern.Part.Type getType();
+    method public int getValue();
+  }
+
+  public enum MessagePattern.Part.Type {
+    method public boolean hasNumericValue();
+    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_DOUBLE;
+    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_INT;
+    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_LIMIT;
+    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_NAME;
+    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_NUMBER;
+    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_SELECTOR;
+    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_START;
+    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_STYLE;
+    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_TYPE;
+    enum_constant public static final android.icu.text.MessagePattern.Part.Type INSERT_CHAR;
+    enum_constant public static final android.icu.text.MessagePattern.Part.Type MSG_LIMIT;
+    enum_constant public static final android.icu.text.MessagePattern.Part.Type MSG_START;
+    enum_constant public static final android.icu.text.MessagePattern.Part.Type REPLACE_NUMBER;
+    enum_constant public static final android.icu.text.MessagePattern.Part.Type SKIP_SYNTAX;
+  }
+
+  public final class Normalizer implements java.lang.Cloneable {
+    method @Deprecated public Object clone();
+    method public static int compare(char[], int, int, char[], int, int, int);
+    method public static int compare(String, String, int);
+    method public static int compare(char[], char[], int);
+    method public static int compare(int, int, int);
+    method public static int compare(int, String, int);
+    field public static final int COMPARE_CODE_POINT_ORDER = 32768; // 0x8000
+    field public static final int COMPARE_IGNORE_CASE = 65536; // 0x10000
+    field public static final int FOLD_CASE_DEFAULT = 0; // 0x0
+    field public static final int FOLD_CASE_EXCLUDE_SPECIAL_I = 1; // 0x1
+    field public static final int INPUT_IS_FCD = 131072; // 0x20000
+    field public static final android.icu.text.Normalizer.QuickCheckResult MAYBE;
+    field public static final android.icu.text.Normalizer.QuickCheckResult NO;
+    field public static final android.icu.text.Normalizer.QuickCheckResult YES;
+  }
+
+  public static final class Normalizer.QuickCheckResult {
+  }
+
+  public abstract class Normalizer2 {
+    method public abstract StringBuilder append(StringBuilder, CharSequence);
+    method public int composePair(int, int);
+    method public int getCombiningClass(int);
+    method public abstract String getDecomposition(int);
+    method public static android.icu.text.Normalizer2 getInstance(java.io.InputStream, String, android.icu.text.Normalizer2.Mode);
+    method public static android.icu.text.Normalizer2 getNFCInstance();
+    method public static android.icu.text.Normalizer2 getNFDInstance();
+    method public static android.icu.text.Normalizer2 getNFKCCasefoldInstance();
+    method public static android.icu.text.Normalizer2 getNFKCInstance();
+    method public static android.icu.text.Normalizer2 getNFKDInstance();
+    method public String getRawDecomposition(int);
+    method public abstract boolean hasBoundaryAfter(int);
+    method public abstract boolean hasBoundaryBefore(int);
+    method public abstract boolean isInert(int);
+    method public abstract boolean isNormalized(CharSequence);
+    method public String normalize(CharSequence);
+    method public abstract StringBuilder normalize(CharSequence, StringBuilder);
+    method public abstract Appendable normalize(CharSequence, Appendable);
+    method public abstract StringBuilder normalizeSecondAndAppend(StringBuilder, CharSequence);
+    method public abstract android.icu.text.Normalizer.QuickCheckResult quickCheck(CharSequence);
+    method public abstract int spanQuickCheckYes(CharSequence);
+  }
+
+  public enum Normalizer2.Mode {
+    enum_constant public static final android.icu.text.Normalizer2.Mode COMPOSE;
+    enum_constant public static final android.icu.text.Normalizer2.Mode COMPOSE_CONTIGUOUS;
+    enum_constant public static final android.icu.text.Normalizer2.Mode DECOMPOSE;
+    enum_constant public static final android.icu.text.Normalizer2.Mode FCD;
+  }
+
+  public abstract class NumberFormat extends android.icu.text.UFormat {
+    ctor public NumberFormat();
+    method public StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
+    method public final String format(double);
+    method public final String format(long);
+    method public final String format(java.math.BigInteger);
+    method public final String format(java.math.BigDecimal);
+    method public final String format(android.icu.math.BigDecimal);
+    method public final String format(android.icu.util.CurrencyAmount);
+    method public abstract StringBuffer format(double, StringBuffer, java.text.FieldPosition);
+    method public abstract StringBuffer format(long, StringBuffer, java.text.FieldPosition);
+    method public abstract StringBuffer format(java.math.BigInteger, StringBuffer, java.text.FieldPosition);
+    method public abstract StringBuffer format(java.math.BigDecimal, StringBuffer, java.text.FieldPosition);
+    method public abstract StringBuffer format(android.icu.math.BigDecimal, StringBuffer, java.text.FieldPosition);
+    method public StringBuffer format(android.icu.util.CurrencyAmount, StringBuffer, java.text.FieldPosition);
+    method public static java.util.Locale[] getAvailableLocales();
+    method public android.icu.text.DisplayContext getContext(android.icu.text.DisplayContext.Type);
+    method public android.icu.util.Currency getCurrency();
+    method public static final android.icu.text.NumberFormat getCurrencyInstance();
+    method public static android.icu.text.NumberFormat getCurrencyInstance(java.util.Locale);
+    method public static android.icu.text.NumberFormat getCurrencyInstance(android.icu.util.ULocale);
+    method public static final android.icu.text.NumberFormat getInstance();
+    method public static android.icu.text.NumberFormat getInstance(java.util.Locale);
+    method public static android.icu.text.NumberFormat getInstance(android.icu.util.ULocale);
+    method public static final android.icu.text.NumberFormat getInstance(int);
+    method public static android.icu.text.NumberFormat getInstance(java.util.Locale, int);
+    method public static android.icu.text.NumberFormat getInstance(android.icu.util.ULocale, int);
+    method public static final android.icu.text.NumberFormat getIntegerInstance();
+    method public static android.icu.text.NumberFormat getIntegerInstance(java.util.Locale);
+    method public static android.icu.text.NumberFormat getIntegerInstance(android.icu.util.ULocale);
+    method public int getMaximumFractionDigits();
+    method public int getMaximumIntegerDigits();
+    method public int getMinimumFractionDigits();
+    method public int getMinimumIntegerDigits();
+    method public static final android.icu.text.NumberFormat getNumberInstance();
+    method public static android.icu.text.NumberFormat getNumberInstance(java.util.Locale);
+    method public static android.icu.text.NumberFormat getNumberInstance(android.icu.util.ULocale);
+    method protected static String getPattern(android.icu.util.ULocale, int);
+    method public static final android.icu.text.NumberFormat getPercentInstance();
+    method public static android.icu.text.NumberFormat getPercentInstance(java.util.Locale);
+    method public static android.icu.text.NumberFormat getPercentInstance(android.icu.util.ULocale);
+    method public int getRoundingMode();
+    method public static final android.icu.text.NumberFormat getScientificInstance();
+    method public static android.icu.text.NumberFormat getScientificInstance(java.util.Locale);
+    method public static android.icu.text.NumberFormat getScientificInstance(android.icu.util.ULocale);
+    method public boolean isGroupingUsed();
+    method public boolean isParseIntegerOnly();
+    method public boolean isParseStrict();
+    method public abstract Number parse(String, java.text.ParsePosition);
+    method public Number parse(String) throws java.text.ParseException;
+    method public android.icu.util.CurrencyAmount parseCurrency(CharSequence, java.text.ParsePosition);
+    method public final Object parseObject(String, java.text.ParsePosition);
+    method public void setContext(android.icu.text.DisplayContext);
+    method public void setCurrency(android.icu.util.Currency);
+    method public void setGroupingUsed(boolean);
+    method public void setMaximumFractionDigits(int);
+    method public void setMaximumIntegerDigits(int);
+    method public void setMinimumFractionDigits(int);
+    method public void setMinimumIntegerDigits(int);
+    method public void setParseIntegerOnly(boolean);
+    method public void setParseStrict(boolean);
+    method public void setRoundingMode(int);
+    field public static final int ACCOUNTINGCURRENCYSTYLE = 7; // 0x7
+    field public static final int CASHCURRENCYSTYLE = 8; // 0x8
+    field public static final int CURRENCYSTYLE = 1; // 0x1
+    field public static final int FRACTION_FIELD = 1; // 0x1
+    field public static final int INTEGERSTYLE = 4; // 0x4
+    field public static final int INTEGER_FIELD = 0; // 0x0
+    field public static final int ISOCURRENCYSTYLE = 5; // 0x5
+    field public static final int NUMBERSTYLE = 0; // 0x0
+    field public static final int PERCENTSTYLE = 2; // 0x2
+    field public static final int PLURALCURRENCYSTYLE = 6; // 0x6
+    field public static final int SCIENTIFICSTYLE = 3; // 0x3
+    field public static final int STANDARDCURRENCYSTYLE = 9; // 0x9
+  }
+
+  public static class NumberFormat.Field extends java.text.Format.Field {
+    ctor protected NumberFormat.Field(String);
+    field public static final android.icu.text.NumberFormat.Field CURRENCY;
+    field public static final android.icu.text.NumberFormat.Field DECIMAL_SEPARATOR;
+    field public static final android.icu.text.NumberFormat.Field EXPONENT;
+    field public static final android.icu.text.NumberFormat.Field EXPONENT_SIGN;
+    field public static final android.icu.text.NumberFormat.Field EXPONENT_SYMBOL;
+    field public static final android.icu.text.NumberFormat.Field FRACTION;
+    field public static final android.icu.text.NumberFormat.Field GROUPING_SEPARATOR;
+    field public static final android.icu.text.NumberFormat.Field INTEGER;
+    field public static final android.icu.text.NumberFormat.Field PERCENT;
+    field public static final android.icu.text.NumberFormat.Field PERMILLE;
+    field public static final android.icu.text.NumberFormat.Field SIGN;
+  }
+
+  public class NumberingSystem {
+    ctor public NumberingSystem();
+    method public static String[] getAvailableNames();
+    method public String getDescription();
+    method public static android.icu.text.NumberingSystem getInstance(int, boolean, String);
+    method public static android.icu.text.NumberingSystem getInstance(java.util.Locale);
+    method public static android.icu.text.NumberingSystem getInstance(android.icu.util.ULocale);
+    method public static android.icu.text.NumberingSystem getInstance();
+    method public static android.icu.text.NumberingSystem getInstanceByName(String);
+    method public String getName();
+    method public int getRadix();
+    method public boolean isAlgorithmic();
+    method public static boolean isValidDigitString(String);
+    field public static final android.icu.text.NumberingSystem LATIN;
+  }
+
+  public class PluralFormat extends android.icu.text.UFormat {
+    ctor public PluralFormat();
+    ctor public PluralFormat(android.icu.util.ULocale);
+    ctor public PluralFormat(java.util.Locale);
+    ctor public PluralFormat(android.icu.text.PluralRules);
+    ctor public PluralFormat(android.icu.util.ULocale, android.icu.text.PluralRules);
+    ctor public PluralFormat(java.util.Locale, android.icu.text.PluralRules);
+    ctor public PluralFormat(android.icu.util.ULocale, android.icu.text.PluralRules.PluralType);
+    ctor public PluralFormat(java.util.Locale, android.icu.text.PluralRules.PluralType);
+    ctor public PluralFormat(String);
+    ctor public PluralFormat(android.icu.util.ULocale, String);
+    ctor public PluralFormat(android.icu.text.PluralRules, String);
+    ctor public PluralFormat(android.icu.util.ULocale, android.icu.text.PluralRules, String);
+    ctor public PluralFormat(android.icu.util.ULocale, android.icu.text.PluralRules.PluralType, String);
+    method public void applyPattern(String);
+    method public boolean equals(android.icu.text.PluralFormat);
+    method public final String format(double);
+    method public StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
+    method public Number parse(String, java.text.ParsePosition);
+    method public Object parseObject(String, java.text.ParsePosition);
+    method public void setNumberFormat(android.icu.text.NumberFormat);
+    method public String toPattern();
+  }
+
+  public class PluralRules implements java.io.Serializable {
+    method public static android.icu.text.PluralRules createRules(String);
+    method public boolean equals(android.icu.text.PluralRules);
+    method public static android.icu.text.PluralRules forLocale(android.icu.util.ULocale);
+    method public static android.icu.text.PluralRules forLocale(java.util.Locale);
+    method public static android.icu.text.PluralRules forLocale(android.icu.util.ULocale, android.icu.text.PluralRules.PluralType);
+    method public static android.icu.text.PluralRules forLocale(java.util.Locale, android.icu.text.PluralRules.PluralType);
+    method public java.util.Collection<java.lang.Double> getAllKeywordValues(String);
+    method public java.util.Set<java.lang.String> getKeywords();
+    method public java.util.Collection<java.lang.Double> getSamples(String);
+    method public double getUniqueKeywordValue(String);
+    method public static android.icu.text.PluralRules parseDescription(String) throws java.text.ParseException;
+    method public String select(double);
+    field public static final android.icu.text.PluralRules DEFAULT;
+    field public static final String KEYWORD_FEW = "few";
+    field public static final String KEYWORD_MANY = "many";
+    field public static final String KEYWORD_ONE = "one";
+    field public static final String KEYWORD_OTHER = "other";
+    field public static final String KEYWORD_TWO = "two";
+    field public static final String KEYWORD_ZERO = "zero";
+    field public static final double NO_UNIQUE_VALUE = -0.00123456777;
+  }
+
+  public enum PluralRules.PluralType {
+    enum_constant public static final android.icu.text.PluralRules.PluralType CARDINAL;
+    enum_constant public static final android.icu.text.PluralRules.PluralType ORDINAL;
+  }
+
+  public final class RelativeDateTimeFormatter {
+    method public String combineDateAndTime(String, String);
+    method public String format(double, android.icu.text.RelativeDateTimeFormatter.Direction, android.icu.text.RelativeDateTimeFormatter.RelativeUnit);
+    method public String format(android.icu.text.RelativeDateTimeFormatter.Direction, android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit);
+    method public String format(double, android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit);
+    method public String formatNumeric(double, android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit);
+    method public android.icu.text.DisplayContext getCapitalizationContext();
+    method public android.icu.text.RelativeDateTimeFormatter.Style getFormatStyle();
+    method public static android.icu.text.RelativeDateTimeFormatter getInstance();
+    method public static android.icu.text.RelativeDateTimeFormatter getInstance(android.icu.util.ULocale);
+    method public static android.icu.text.RelativeDateTimeFormatter getInstance(java.util.Locale);
+    method public static android.icu.text.RelativeDateTimeFormatter getInstance(android.icu.util.ULocale, android.icu.text.NumberFormat);
+    method public static android.icu.text.RelativeDateTimeFormatter getInstance(android.icu.util.ULocale, android.icu.text.NumberFormat, android.icu.text.RelativeDateTimeFormatter.Style, android.icu.text.DisplayContext);
+    method public static android.icu.text.RelativeDateTimeFormatter getInstance(java.util.Locale, android.icu.text.NumberFormat);
+    method public android.icu.text.NumberFormat getNumberFormat();
+  }
+
+  public enum RelativeDateTimeFormatter.AbsoluteUnit {
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit DAY;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit FRIDAY;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit MONDAY;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit MONTH;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit NOW;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit SATURDAY;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit SUNDAY;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit THURSDAY;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit TUESDAY;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit WEDNESDAY;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit WEEK;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit YEAR;
+  }
+
+  public enum RelativeDateTimeFormatter.Direction {
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Direction LAST;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Direction LAST_2;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Direction NEXT;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Direction NEXT_2;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Direction PLAIN;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Direction THIS;
+  }
+
+  public enum RelativeDateTimeFormatter.RelativeDateTimeUnit {
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit DAY;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit FRIDAY;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit HOUR;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit MINUTE;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit MONDAY;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit MONTH;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit QUARTER;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit SATURDAY;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit SECOND;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit SUNDAY;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit THURSDAY;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit TUESDAY;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit WEDNESDAY;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit WEEK;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit YEAR;
+  }
+
+  public enum RelativeDateTimeFormatter.RelativeUnit {
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit DAYS;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit HOURS;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit MINUTES;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit MONTHS;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit SECONDS;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit WEEKS;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit YEARS;
+  }
+
+  public enum RelativeDateTimeFormatter.Style {
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Style LONG;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Style NARROW;
+    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Style SHORT;
+  }
+
+  public interface Replaceable {
+    method public int char32At(int);
+    method public char charAt(int);
+    method public void copy(int, int, int);
+    method public void getChars(int, int, char[], int);
+    method public boolean hasMetaData();
+    method public int length();
+    method public void replace(int, int, String);
+    method public void replace(int, int, char[], int, int);
+  }
+
+  public final class RuleBasedCollator extends android.icu.text.Collator {
+    ctor public RuleBasedCollator(String) throws java.lang.Exception;
+    method public android.icu.text.RuleBasedCollator cloneAsThawed();
+    method public int compare(String, String);
+    method public android.icu.text.CollationElementIterator getCollationElementIterator(String);
+    method public android.icu.text.CollationElementIterator getCollationElementIterator(java.text.CharacterIterator);
+    method public android.icu.text.CollationElementIterator getCollationElementIterator(android.icu.text.UCharacterIterator);
+    method public android.icu.text.CollationKey getCollationKey(String);
+    method public void getContractionsAndExpansions(android.icu.text.UnicodeSet, android.icu.text.UnicodeSet, boolean) throws java.lang.Exception;
+    method public boolean getNumericCollation();
+    method public String getRules();
+    method public String getRules(boolean);
+    method public android.icu.util.VersionInfo getUCAVersion();
+    method public int getVariableTop();
+    method public android.icu.util.VersionInfo getVersion();
+    method public boolean isAlternateHandlingShifted();
+    method public boolean isCaseLevel();
+    method public boolean isFrenchCollation();
+    method public boolean isLowerCaseFirst();
+    method public boolean isUpperCaseFirst();
+    method public void setAlternateHandlingDefault();
+    method public void setAlternateHandlingShifted(boolean);
+    method public void setCaseFirstDefault();
+    method public void setCaseLevel(boolean);
+    method public void setCaseLevelDefault();
+    method public void setDecompositionDefault();
+    method public void setFrenchCollation(boolean);
+    method public void setFrenchCollationDefault();
+    method public void setLowerCaseFirst(boolean);
+    method public android.icu.text.RuleBasedCollator setMaxVariable(int);
+    method public void setNumericCollation(boolean);
+    method public void setNumericCollationDefault();
+    method public void setStrengthDefault();
+    method public void setUpperCaseFirst(boolean);
+  }
+
+  public final class ScientificNumberFormatter {
+    method public String format(Object);
+    method public static android.icu.text.ScientificNumberFormatter getMarkupInstance(android.icu.util.ULocale, String, String);
+    method public static android.icu.text.ScientificNumberFormatter getMarkupInstance(android.icu.text.DecimalFormat, String, String);
+    method public static android.icu.text.ScientificNumberFormatter getSuperscriptInstance(android.icu.util.ULocale);
+    method public static android.icu.text.ScientificNumberFormatter getSuperscriptInstance(android.icu.text.DecimalFormat);
+  }
+
+  public abstract class SearchIterator {
+    ctor protected SearchIterator(java.text.CharacterIterator, android.icu.text.BreakIterator);
+    method public final int first();
+    method public final int following(int);
+    method public android.icu.text.BreakIterator getBreakIterator();
+    method public android.icu.text.SearchIterator.ElementComparisonType getElementComparisonType();
+    method public abstract int getIndex();
+    method public int getMatchLength();
+    method public int getMatchStart();
+    method public String getMatchedText();
+    method public java.text.CharacterIterator getTarget();
+    method protected abstract int handleNext(int);
+    method protected abstract int handlePrevious(int);
+    method public boolean isOverlapping();
+    method public final int last();
+    method public int next();
+    method public final int preceding(int);
+    method public int previous();
+    method public void reset();
+    method public void setBreakIterator(android.icu.text.BreakIterator);
+    method public void setElementComparisonType(android.icu.text.SearchIterator.ElementComparisonType);
+    method public void setIndex(int);
+    method protected void setMatchLength(int);
+    method public void setOverlapping(boolean);
+    method public void setTarget(java.text.CharacterIterator);
+    field public static final int DONE = -1; // 0xffffffff
+    field protected android.icu.text.BreakIterator breakIterator;
+    field protected int matchLength;
+    field protected java.text.CharacterIterator targetText;
+  }
+
+  public enum SearchIterator.ElementComparisonType {
+    enum_constant public static final android.icu.text.SearchIterator.ElementComparisonType ANY_BASE_WEIGHT_IS_WILDCARD;
+    enum_constant public static final android.icu.text.SearchIterator.ElementComparisonType PATTERN_BASE_WEIGHT_IS_WILDCARD;
+    enum_constant public static final android.icu.text.SearchIterator.ElementComparisonType STANDARD_ELEMENT_COMPARISON;
+  }
+
+  public class SelectFormat extends java.text.Format {
+    ctor public SelectFormat(String);
+    method public void applyPattern(String);
+    method public final String format(String);
+    method public StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
+    method public Object parseObject(String, java.text.ParsePosition);
+    method public String toPattern();
+  }
+
+  public class SimpleDateFormat extends android.icu.text.DateFormat {
+    ctor public SimpleDateFormat();
+    ctor public SimpleDateFormat(String);
+    ctor public SimpleDateFormat(String, java.util.Locale);
+    ctor public SimpleDateFormat(String, android.icu.util.ULocale);
+    ctor public SimpleDateFormat(String, String, android.icu.util.ULocale);
+    ctor public SimpleDateFormat(String, android.icu.text.DateFormatSymbols);
+    method public void applyLocalizedPattern(String);
+    method public void applyPattern(String);
+    method public StringBuffer format(android.icu.util.Calendar, StringBuffer, java.text.FieldPosition);
+    method public java.util.Date get2DigitYearStart();
+    method public android.icu.text.DateFormatSymbols getDateFormatSymbols();
+    method public android.icu.text.NumberFormat getNumberFormat(char);
+    method protected android.icu.text.DateFormatSymbols getSymbols();
+    method public android.icu.text.TimeZoneFormat getTimeZoneFormat();
+    method protected int matchQuarterString(String, int, int, String[], android.icu.util.Calendar);
+    method protected int matchString(String, int, int, String[], android.icu.util.Calendar);
+    method public void parse(String, android.icu.util.Calendar, java.text.ParsePosition);
+    method protected android.icu.text.DateFormat.Field patternCharToDateFormatField(char);
+    method public void set2DigitYearStart(java.util.Date);
+    method public void setDateFormatSymbols(android.icu.text.DateFormatSymbols);
+    method public void setNumberFormat(String, android.icu.text.NumberFormat);
+    method public void setTimeZoneFormat(android.icu.text.TimeZoneFormat);
+    method protected String subFormat(char, int, int, java.text.FieldPosition, android.icu.text.DateFormatSymbols, android.icu.util.Calendar) throws java.lang.IllegalArgumentException;
+    method protected int subParse(String, int, char, int, boolean, boolean, boolean[], android.icu.util.Calendar);
+    method public String toLocalizedPattern();
+    method public String toPattern();
+    method protected String zeroPaddingNumber(long, int, int);
+  }
+
+  public class StringPrepParseException extends java.text.ParseException {
+    ctor public StringPrepParseException(String, int);
+    ctor public StringPrepParseException(String, int, String, int);
+    ctor public StringPrepParseException(String, int, String, int, int);
+    method public int getError();
+    field public static final int ACE_PREFIX_ERROR = 6; // 0x6
+    field public static final int BUFFER_OVERFLOW_ERROR = 9; // 0x9
+    field public static final int CHECK_BIDI_ERROR = 4; // 0x4
+    field public static final int DOMAIN_NAME_TOO_LONG_ERROR = 11; // 0xb
+    field public static final int ILLEGAL_CHAR_FOUND = 1; // 0x1
+    field public static final int INVALID_CHAR_FOUND = 0; // 0x0
+    field public static final int LABEL_TOO_LONG_ERROR = 8; // 0x8
+    field public static final int PROHIBITED_ERROR = 2; // 0x2
+    field public static final int STD3_ASCII_RULES_ERROR = 5; // 0x5
+    field public static final int UNASSIGNED_ERROR = 3; // 0x3
+    field public static final int VERIFICATION_ERROR = 7; // 0x7
+    field public static final int ZERO_LENGTH_LABEL = 10; // 0xa
+  }
+
+  public final class StringSearch extends android.icu.text.SearchIterator {
+    ctor public StringSearch(String, java.text.CharacterIterator, android.icu.text.RuleBasedCollator, android.icu.text.BreakIterator);
+    ctor public StringSearch(String, java.text.CharacterIterator, android.icu.text.RuleBasedCollator);
+    ctor public StringSearch(String, java.text.CharacterIterator, java.util.Locale);
+    ctor public StringSearch(String, java.text.CharacterIterator, android.icu.util.ULocale);
+    ctor public StringSearch(String, String);
+    method public android.icu.text.RuleBasedCollator getCollator();
+    method public int getIndex();
+    method public String getPattern();
+    method protected int handleNext(int);
+    method protected int handlePrevious(int);
+    method public boolean isCanonical();
+    method public void setCanonical(boolean);
+    method public void setCollator(android.icu.text.RuleBasedCollator);
+    method public void setPattern(String);
+  }
+
+  public interface SymbolTable {
+    method public char[] lookup(String);
+    method public android.icu.text.UnicodeMatcher lookupMatcher(int);
+    method public String parseReference(String, java.text.ParsePosition, int);
+    field public static final char SYMBOL_REF = 36; // 0x0024 '$'
+  }
+
+  public class TimeZoneFormat extends android.icu.text.UFormat implements android.icu.util.Freezable<android.icu.text.TimeZoneFormat> java.io.Serializable {
+    ctor protected TimeZoneFormat(android.icu.util.ULocale);
+    method public android.icu.text.TimeZoneFormat cloneAsThawed();
+    method public final String format(android.icu.text.TimeZoneFormat.Style, android.icu.util.TimeZone, long);
+    method public String format(android.icu.text.TimeZoneFormat.Style, android.icu.util.TimeZone, long, android.icu.util.Output<android.icu.text.TimeZoneFormat.TimeType>);
+    method public StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
+    method public final String formatOffsetISO8601Basic(int, boolean, boolean, boolean);
+    method public final String formatOffsetISO8601Extended(int, boolean, boolean, boolean);
+    method public String formatOffsetLocalizedGMT(int);
+    method public String formatOffsetShortLocalizedGMT(int);
+    method public android.icu.text.TimeZoneFormat freeze();
+    method public java.util.EnumSet<android.icu.text.TimeZoneFormat.ParseOption> getDefaultParseOptions();
+    method public String getGMTOffsetDigits();
+    method public String getGMTOffsetPattern(android.icu.text.TimeZoneFormat.GMTOffsetPatternType);
+    method public String getGMTPattern();
+    method public String getGMTZeroFormat();
+    method public static android.icu.text.TimeZoneFormat getInstance(android.icu.util.ULocale);
+    method public static android.icu.text.TimeZoneFormat getInstance(java.util.Locale);
+    method public android.icu.text.TimeZoneNames getTimeZoneNames();
+    method public boolean isFrozen();
+    method public android.icu.util.TimeZone parse(android.icu.text.TimeZoneFormat.Style, String, java.text.ParsePosition, java.util.EnumSet<android.icu.text.TimeZoneFormat.ParseOption>, android.icu.util.Output<android.icu.text.TimeZoneFormat.TimeType>);
+    method public android.icu.util.TimeZone parse(android.icu.text.TimeZoneFormat.Style, String, java.text.ParsePosition, android.icu.util.Output<android.icu.text.TimeZoneFormat.TimeType>);
+    method public final android.icu.util.TimeZone parse(String, java.text.ParsePosition);
+    method public final android.icu.util.TimeZone parse(String) throws java.text.ParseException;
+    method public Object parseObject(String, java.text.ParsePosition);
+    method public final int parseOffsetISO8601(String, java.text.ParsePosition);
+    method public int parseOffsetLocalizedGMT(String, java.text.ParsePosition);
+    method public int parseOffsetShortLocalizedGMT(String, java.text.ParsePosition);
+    method public android.icu.text.TimeZoneFormat setDefaultParseOptions(java.util.EnumSet<android.icu.text.TimeZoneFormat.ParseOption>);
+    method public android.icu.text.TimeZoneFormat setGMTOffsetDigits(String);
+    method public android.icu.text.TimeZoneFormat setGMTOffsetPattern(android.icu.text.TimeZoneFormat.GMTOffsetPatternType, String);
+    method public android.icu.text.TimeZoneFormat setGMTPattern(String);
+    method public android.icu.text.TimeZoneFormat setGMTZeroFormat(String);
+    method public android.icu.text.TimeZoneFormat setTimeZoneNames(android.icu.text.TimeZoneNames);
+  }
+
+  public enum TimeZoneFormat.GMTOffsetPatternType {
+    enum_constant public static final android.icu.text.TimeZoneFormat.GMTOffsetPatternType NEGATIVE_H;
+    enum_constant public static final android.icu.text.TimeZoneFormat.GMTOffsetPatternType NEGATIVE_HM;
+    enum_constant public static final android.icu.text.TimeZoneFormat.GMTOffsetPatternType NEGATIVE_HMS;
+    enum_constant public static final android.icu.text.TimeZoneFormat.GMTOffsetPatternType POSITIVE_H;
+    enum_constant public static final android.icu.text.TimeZoneFormat.GMTOffsetPatternType POSITIVE_HM;
+    enum_constant public static final android.icu.text.TimeZoneFormat.GMTOffsetPatternType POSITIVE_HMS;
+  }
+
+  public enum TimeZoneFormat.ParseOption {
+    enum_constant public static final android.icu.text.TimeZoneFormat.ParseOption ALL_STYLES;
+    enum_constant public static final android.icu.text.TimeZoneFormat.ParseOption TZ_DATABASE_ABBREVIATIONS;
+  }
+
+  public enum TimeZoneFormat.Style {
+    enum_constant public static final android.icu.text.TimeZoneFormat.Style EXEMPLAR_LOCATION;
+    enum_constant public static final android.icu.text.TimeZoneFormat.Style GENERIC_LOCATION;
+    enum_constant public static final android.icu.text.TimeZoneFormat.Style GENERIC_LONG;
+    enum_constant public static final android.icu.text.TimeZoneFormat.Style GENERIC_SHORT;
+    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_BASIC_FIXED;
+    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_BASIC_FULL;
+    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_BASIC_LOCAL_FIXED;
+    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_BASIC_LOCAL_FULL;
+    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_BASIC_LOCAL_SHORT;
+    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_BASIC_SHORT;
+    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_EXTENDED_FIXED;
+    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_EXTENDED_FULL;
+    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_EXTENDED_LOCAL_FIXED;
+    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_EXTENDED_LOCAL_FULL;
+    enum_constant public static final android.icu.text.TimeZoneFormat.Style LOCALIZED_GMT;
+    enum_constant public static final android.icu.text.TimeZoneFormat.Style LOCALIZED_GMT_SHORT;
+    enum_constant public static final android.icu.text.TimeZoneFormat.Style SPECIFIC_LONG;
+    enum_constant public static final android.icu.text.TimeZoneFormat.Style SPECIFIC_SHORT;
+    enum_constant public static final android.icu.text.TimeZoneFormat.Style ZONE_ID;
+    enum_constant public static final android.icu.text.TimeZoneFormat.Style ZONE_ID_SHORT;
+  }
+
+  public enum TimeZoneFormat.TimeType {
+    enum_constant public static final android.icu.text.TimeZoneFormat.TimeType DAYLIGHT;
+    enum_constant public static final android.icu.text.TimeZoneFormat.TimeType STANDARD;
+    enum_constant public static final android.icu.text.TimeZoneFormat.TimeType UNKNOWN;
+  }
+
+  public abstract class TimeZoneNames implements java.io.Serializable {
+    method public abstract java.util.Set<java.lang.String> getAvailableMetaZoneIDs();
+    method public abstract java.util.Set<java.lang.String> getAvailableMetaZoneIDs(String);
+    method public final String getDisplayName(String, android.icu.text.TimeZoneNames.NameType, long);
+    method public String getExemplarLocationName(String);
+    method public static android.icu.text.TimeZoneNames getInstance(android.icu.util.ULocale);
+    method public static android.icu.text.TimeZoneNames getInstance(java.util.Locale);
+    method public abstract String getMetaZoneDisplayName(String, android.icu.text.TimeZoneNames.NameType);
+    method public abstract String getMetaZoneID(String, long);
+    method public abstract String getReferenceZoneID(String, String);
+    method public static android.icu.text.TimeZoneNames getTZDBInstance(android.icu.util.ULocale);
+    method public abstract String getTimeZoneDisplayName(String, android.icu.text.TimeZoneNames.NameType);
+  }
+
+  public enum TimeZoneNames.NameType {
+    enum_constant public static final android.icu.text.TimeZoneNames.NameType EXEMPLAR_LOCATION;
+    enum_constant public static final android.icu.text.TimeZoneNames.NameType LONG_DAYLIGHT;
+    enum_constant public static final android.icu.text.TimeZoneNames.NameType LONG_GENERIC;
+    enum_constant public static final android.icu.text.TimeZoneNames.NameType LONG_STANDARD;
+    enum_constant public static final android.icu.text.TimeZoneNames.NameType SHORT_DAYLIGHT;
+    enum_constant public static final android.icu.text.TimeZoneNames.NameType SHORT_GENERIC;
+    enum_constant public static final android.icu.text.TimeZoneNames.NameType SHORT_STANDARD;
+  }
+
+  public abstract class Transliterator {
+    method public static final android.icu.text.Transliterator createFromRules(String, String, int);
+    method public void filteredTransliterate(android.icu.text.Replaceable, android.icu.text.Transliterator.Position, boolean);
+    method public final void finishTransliteration(android.icu.text.Replaceable, android.icu.text.Transliterator.Position);
+    method public static final java.util.Enumeration<java.lang.String> getAvailableIDs();
+    method public static final java.util.Enumeration<java.lang.String> getAvailableSources();
+    method public static final java.util.Enumeration<java.lang.String> getAvailableTargets(String);
+    method public static final java.util.Enumeration<java.lang.String> getAvailableVariants(String, String);
+    method public static final String getDisplayName(String);
+    method public static String getDisplayName(String, java.util.Locale);
+    method public static String getDisplayName(String, android.icu.util.ULocale);
+    method public android.icu.text.Transliterator[] getElements();
+    method public final android.icu.text.UnicodeFilter getFilter();
+    method public final String getID();
+    method public static final android.icu.text.Transliterator getInstance(String);
+    method public static android.icu.text.Transliterator getInstance(String, int);
+    method public final android.icu.text.Transliterator getInverse();
+    method public final int getMaximumContextLength();
+    method public final android.icu.text.UnicodeSet getSourceSet();
+    method public android.icu.text.UnicodeSet getTargetSet();
+    method public void setFilter(android.icu.text.UnicodeFilter);
+    method public String toRules(boolean);
+    method public final int transliterate(android.icu.text.Replaceable, int, int);
+    method public final void transliterate(android.icu.text.Replaceable);
+    method public final String transliterate(String);
+    method public final void transliterate(android.icu.text.Replaceable, android.icu.text.Transliterator.Position, String);
+    method public final void transliterate(android.icu.text.Replaceable, android.icu.text.Transliterator.Position, int);
+    method public final void transliterate(android.icu.text.Replaceable, android.icu.text.Transliterator.Position);
+    field public static final int FORWARD = 0; // 0x0
+    field public static final int REVERSE = 1; // 0x1
+  }
+
+  public static class Transliterator.Position {
+    ctor public Transliterator.Position();
+    ctor public Transliterator.Position(int, int, int);
+    ctor public Transliterator.Position(int, int, int, int);
+    ctor public Transliterator.Position(android.icu.text.Transliterator.Position);
+    method public void set(android.icu.text.Transliterator.Position);
+    method public final void validate(int);
+    field public int contextLimit;
+    field public int contextStart;
+    field public int limit;
+    field public int start;
+  }
+
+  public abstract class UCharacterIterator implements java.lang.Cloneable {
+    ctor protected UCharacterIterator();
+    method public Object clone() throws java.lang.CloneNotSupportedException;
+    method public abstract int current();
+    method public int currentCodePoint();
+    method public java.text.CharacterIterator getCharacterIterator();
+    method public abstract int getIndex();
+    method public static final android.icu.text.UCharacterIterator getInstance(android.icu.text.Replaceable);
+    method public static final android.icu.text.UCharacterIterator getInstance(String);
+    method public static final android.icu.text.UCharacterIterator getInstance(char[]);
+    method public static final android.icu.text.UCharacterIterator getInstance(char[], int, int);
+    method public static final android.icu.text.UCharacterIterator getInstance(StringBuffer);
+    method public static final android.icu.text.UCharacterIterator getInstance(java.text.CharacterIterator);
+    method public abstract int getLength();
+    method public abstract int getText(char[], int);
+    method public final int getText(char[]);
+    method public String getText();
+    method public int moveCodePointIndex(int);
+    method public int moveIndex(int);
+    method public abstract int next();
+    method public int nextCodePoint();
+    method public abstract int previous();
+    method public int previousCodePoint();
+    method public abstract void setIndex(int);
+    method public void setToLimit();
+    method public void setToStart();
+    field public static final int DONE = -1; // 0xffffffff
+  }
+
+  public abstract class UFormat extends java.text.Format {
+    ctor public UFormat();
+  }
+
+  public abstract class UnicodeFilter implements android.icu.text.UnicodeMatcher {
+    method public abstract boolean contains(int);
+    method public int matches(android.icu.text.Replaceable, int[], int, boolean);
+  }
+
+  public interface UnicodeMatcher {
+    method public void addMatchSetTo(android.icu.text.UnicodeSet);
+    method public int matches(android.icu.text.Replaceable, int[], int, boolean);
+    method public boolean matchesIndexValue(int);
+    method public String toPattern(boolean);
+    field public static final char ETHER = 65535; // 0xffff '\uffff'
+    field public static final int U_MATCH = 2; // 0x2
+    field public static final int U_MISMATCH = 0; // 0x0
+    field public static final int U_PARTIAL_MATCH = 1; // 0x1
+  }
+
+  public class UnicodeSet extends android.icu.text.UnicodeFilter implements java.lang.Comparable<android.icu.text.UnicodeSet> android.icu.util.Freezable<android.icu.text.UnicodeSet> java.lang.Iterable<java.lang.String> {
+    ctor public UnicodeSet();
+    ctor public UnicodeSet(android.icu.text.UnicodeSet);
+    ctor public UnicodeSet(int, int);
+    ctor public UnicodeSet(int...);
+    ctor public UnicodeSet(String);
+    ctor public UnicodeSet(String, boolean);
+    ctor public UnicodeSet(String, int);
+    ctor public UnicodeSet(String, java.text.ParsePosition, android.icu.text.SymbolTable);
+    ctor public UnicodeSet(String, java.text.ParsePosition, android.icu.text.SymbolTable, int);
+    method public StringBuffer _generatePattern(StringBuffer, boolean);
+    method public StringBuffer _generatePattern(StringBuffer, boolean, boolean);
+    method public android.icu.text.UnicodeSet add(int, int);
+    method public final android.icu.text.UnicodeSet add(int);
+    method public final android.icu.text.UnicodeSet add(CharSequence);
+    method public android.icu.text.UnicodeSet add(Iterable<?>);
+    method public android.icu.text.UnicodeSet addAll(int, int);
+    method public final android.icu.text.UnicodeSet addAll(CharSequence);
+    method public android.icu.text.UnicodeSet addAll(android.icu.text.UnicodeSet);
+    method public android.icu.text.UnicodeSet addAll(Iterable<?>);
+    method public <T extends java.lang.CharSequence> android.icu.text.UnicodeSet addAll(T...);
+    method public <T extends java.util.Collection<java.lang.String>> T addAllTo(T);
+    method public void addMatchSetTo(android.icu.text.UnicodeSet);
+    method public android.icu.text.UnicodeSet applyIntPropertyValue(int, int);
+    method public final android.icu.text.UnicodeSet applyPattern(String);
+    method public android.icu.text.UnicodeSet applyPattern(String, boolean);
+    method public android.icu.text.UnicodeSet applyPattern(String, int);
+    method public android.icu.text.UnicodeSet applyPropertyAlias(String, String);
+    method public android.icu.text.UnicodeSet applyPropertyAlias(String, String, android.icu.text.SymbolTable);
+    method public int charAt(int);
+    method public android.icu.text.UnicodeSet clear();
+    method public Object clone();
+    method public android.icu.text.UnicodeSet cloneAsThawed();
+    method public android.icu.text.UnicodeSet closeOver(int);
+    method public android.icu.text.UnicodeSet compact();
+    method public int compareTo(android.icu.text.UnicodeSet);
+    method public int compareTo(android.icu.text.UnicodeSet, android.icu.text.UnicodeSet.ComparisonStyle);
+    method public int compareTo(Iterable<java.lang.String>);
+    method public android.icu.text.UnicodeSet complement(int, int);
+    method public final android.icu.text.UnicodeSet complement(int);
+    method public android.icu.text.UnicodeSet complement();
+    method public final android.icu.text.UnicodeSet complement(CharSequence);
+    method public final android.icu.text.UnicodeSet complementAll(CharSequence);
+    method public android.icu.text.UnicodeSet complementAll(android.icu.text.UnicodeSet);
+    method public boolean contains(int);
+    method public boolean contains(int, int);
+    method public final boolean contains(CharSequence);
+    method public boolean containsAll(android.icu.text.UnicodeSet);
+    method public boolean containsAll(String);
+    method public <T extends java.lang.CharSequence> boolean containsAll(Iterable<T>);
+    method public boolean containsNone(int, int);
+    method public boolean containsNone(android.icu.text.UnicodeSet);
+    method public boolean containsNone(CharSequence);
+    method public <T extends java.lang.CharSequence> boolean containsNone(Iterable<T>);
+    method public final boolean containsSome(int, int);
+    method public final boolean containsSome(android.icu.text.UnicodeSet);
+    method public final boolean containsSome(CharSequence);
+    method public final <T extends java.lang.CharSequence> boolean containsSome(Iterable<T>);
+    method public android.icu.text.UnicodeSet freeze();
+    method public static android.icu.text.UnicodeSet from(CharSequence);
+    method public static android.icu.text.UnicodeSet fromAll(CharSequence);
+    method public int getRangeCount();
+    method public int getRangeEnd(int);
+    method public int getRangeStart(int);
+    method public int indexOf(int);
+    method public boolean isEmpty();
+    method public boolean isFrozen();
+    method public java.util.Iterator<java.lang.String> iterator();
+    method public boolean matchesIndexValue(int);
+    method public Iterable<android.icu.text.UnicodeSet.EntryRange> ranges();
+    method public android.icu.text.UnicodeSet remove(int, int);
+    method public final android.icu.text.UnicodeSet remove(int);
+    method public final android.icu.text.UnicodeSet remove(CharSequence);
+    method public final android.icu.text.UnicodeSet removeAll(CharSequence);
+    method public android.icu.text.UnicodeSet removeAll(android.icu.text.UnicodeSet);
+    method public <T extends java.lang.CharSequence> android.icu.text.UnicodeSet removeAll(Iterable<T>);
+    method public final android.icu.text.UnicodeSet removeAllStrings();
+    method public android.icu.text.UnicodeSet retain(int, int);
+    method public final android.icu.text.UnicodeSet retain(int);
+    method public final android.icu.text.UnicodeSet retain(CharSequence);
+    method public final android.icu.text.UnicodeSet retainAll(CharSequence);
+    method public android.icu.text.UnicodeSet retainAll(android.icu.text.UnicodeSet);
+    method public <T extends java.lang.CharSequence> android.icu.text.UnicodeSet retainAll(Iterable<T>);
+    method public android.icu.text.UnicodeSet set(int, int);
+    method public android.icu.text.UnicodeSet set(android.icu.text.UnicodeSet);
+    method public int size();
+    method public int span(CharSequence, android.icu.text.UnicodeSet.SpanCondition);
+    method public int span(CharSequence, int, android.icu.text.UnicodeSet.SpanCondition);
+    method public int spanBack(CharSequence, android.icu.text.UnicodeSet.SpanCondition);
+    method public int spanBack(CharSequence, int, android.icu.text.UnicodeSet.SpanCondition);
+    method public java.util.Collection<java.lang.String> strings();
+    method public String toPattern(boolean);
+    field public static final int ADD_CASE_MAPPINGS = 4; // 0x4
+    field public static final android.icu.text.UnicodeSet ALL_CODE_POINTS;
+    field public static final int CASE = 2; // 0x2
+    field public static final int CASE_INSENSITIVE = 2; // 0x2
+    field public static final android.icu.text.UnicodeSet EMPTY;
+    field public static final int IGNORE_SPACE = 1; // 0x1
+    field public static final int MAX_VALUE = 1114111; // 0x10ffff
+    field public static final int MIN_VALUE = 0; // 0x0
+  }
+
+  public enum UnicodeSet.ComparisonStyle {
+    enum_constant public static final android.icu.text.UnicodeSet.ComparisonStyle LEXICOGRAPHIC;
+    enum_constant public static final android.icu.text.UnicodeSet.ComparisonStyle LONGER_FIRST;
+    enum_constant public static final android.icu.text.UnicodeSet.ComparisonStyle SHORTER_FIRST;
+  }
+
+  public static class UnicodeSet.EntryRange {
+    field public int codepoint;
+    field public int codepointEnd;
+  }
+
+  public enum UnicodeSet.SpanCondition {
+    enum_constant public static final android.icu.text.UnicodeSet.SpanCondition CONDITION_COUNT;
+    enum_constant public static final android.icu.text.UnicodeSet.SpanCondition CONTAINED;
+    enum_constant public static final android.icu.text.UnicodeSet.SpanCondition NOT_CONTAINED;
+    enum_constant public static final android.icu.text.UnicodeSet.SpanCondition SIMPLE;
+  }
+
+  public class UnicodeSetIterator {
+    ctor public UnicodeSetIterator(android.icu.text.UnicodeSet);
+    ctor public UnicodeSetIterator();
+    method public String getString();
+    method public boolean next();
+    method public boolean nextRange();
+    method public void reset(android.icu.text.UnicodeSet);
+    method public void reset();
+    field public static int IS_STRING;
+    field public int codepoint;
+    field public int codepointEnd;
+    field public String string;
+  }
+
+  public class UnicodeSetSpanner {
+    ctor public UnicodeSetSpanner(android.icu.text.UnicodeSet);
+    method public int countIn(CharSequence);
+    method public int countIn(CharSequence, android.icu.text.UnicodeSetSpanner.CountMethod);
+    method public int countIn(CharSequence, android.icu.text.UnicodeSetSpanner.CountMethod, android.icu.text.UnicodeSet.SpanCondition);
+    method public String deleteFrom(CharSequence);
+    method public String deleteFrom(CharSequence, android.icu.text.UnicodeSet.SpanCondition);
+    method public android.icu.text.UnicodeSet getUnicodeSet();
+    method public String replaceFrom(CharSequence, CharSequence);
+    method public String replaceFrom(CharSequence, CharSequence, android.icu.text.UnicodeSetSpanner.CountMethod);
+    method public String replaceFrom(CharSequence, CharSequence, android.icu.text.UnicodeSetSpanner.CountMethod, android.icu.text.UnicodeSet.SpanCondition);
+    method public CharSequence trim(CharSequence);
+    method public CharSequence trim(CharSequence, android.icu.text.UnicodeSetSpanner.TrimOption);
+    method public CharSequence trim(CharSequence, android.icu.text.UnicodeSetSpanner.TrimOption, android.icu.text.UnicodeSet.SpanCondition);
+  }
+
+  public enum UnicodeSetSpanner.CountMethod {
+    enum_constant public static final android.icu.text.UnicodeSetSpanner.CountMethod MIN_ELEMENTS;
+    enum_constant public static final android.icu.text.UnicodeSetSpanner.CountMethod WHOLE_SPAN;
+  }
+
+  public enum UnicodeSetSpanner.TrimOption {
+    enum_constant public static final android.icu.text.UnicodeSetSpanner.TrimOption BOTH;
+    enum_constant public static final android.icu.text.UnicodeSetSpanner.TrimOption LEADING;
+    enum_constant public static final android.icu.text.UnicodeSetSpanner.TrimOption TRAILING;
+  }
+
+}
+
+package android.icu.util {
+
+  public class BuddhistCalendar extends android.icu.util.GregorianCalendar {
+    ctor public BuddhistCalendar();
+    ctor public BuddhistCalendar(android.icu.util.TimeZone);
+    ctor public BuddhistCalendar(java.util.Locale);
+    ctor public BuddhistCalendar(android.icu.util.ULocale);
+    ctor public BuddhistCalendar(android.icu.util.TimeZone, java.util.Locale);
+    ctor public BuddhistCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
+    ctor public BuddhistCalendar(java.util.Date);
+    ctor public BuddhistCalendar(int, int, int);
+    ctor public BuddhistCalendar(int, int, int, int, int, int);
+    field public static final int BE = 0; // 0x0
+  }
+
+  public abstract class Calendar implements java.lang.Cloneable java.lang.Comparable<android.icu.util.Calendar> java.io.Serializable {
+    ctor protected Calendar();
+    ctor protected Calendar(android.icu.util.TimeZone, java.util.Locale);
+    ctor protected Calendar(android.icu.util.TimeZone, android.icu.util.ULocale);
+    method public void add(int, int);
+    method public boolean after(Object);
+    method public boolean before(Object);
+    method public final void clear();
+    method public final void clear(int);
+    method public Object clone();
+    method public int compareTo(android.icu.util.Calendar);
+    method protected void complete();
+    method protected void computeFields();
+    method protected final void computeGregorianFields(int);
+    method protected int computeGregorianMonthStart(int, int);
+    method protected int computeJulianDay();
+    method @Deprecated protected int computeMillisInDay();
+    method protected void computeTime();
+    method @Deprecated protected int computeZoneOffset(long, int);
+    method public int fieldDifference(java.util.Date, int);
+    method protected String fieldName(int);
+    method protected static final long floorDivide(long, long);
+    method protected static final int floorDivide(int, int);
+    method protected static final int floorDivide(int, int, int[]);
+    method protected static final int floorDivide(long, int, int[]);
+    method public final int get(int);
+    method public int getActualMaximum(int);
+    method public int getActualMinimum(int);
+    method public static java.util.Locale[] getAvailableLocales();
+    method public android.icu.text.DateFormat getDateTimeFormat(int, int, java.util.Locale);
+    method public android.icu.text.DateFormat getDateTimeFormat(int, int, android.icu.util.ULocale);
+    method public String getDisplayName(java.util.Locale);
+    method public String getDisplayName(android.icu.util.ULocale);
+    method public final int getFieldCount();
+    method protected int[][][] getFieldResolutionTable();
+    method public int getFirstDayOfWeek();
+    method public final int getGreatestMinimum(int);
+    method protected final int getGregorianDayOfMonth();
+    method protected final int getGregorianDayOfYear();
+    method protected final int getGregorianMonth();
+    method protected final int getGregorianYear();
+    method public static android.icu.util.Calendar getInstance();
+    method public static android.icu.util.Calendar getInstance(android.icu.util.TimeZone);
+    method public static android.icu.util.Calendar getInstance(java.util.Locale);
+    method public static android.icu.util.Calendar getInstance(android.icu.util.ULocale);
+    method public static android.icu.util.Calendar getInstance(android.icu.util.TimeZone, java.util.Locale);
+    method public static android.icu.util.Calendar getInstance(android.icu.util.TimeZone, android.icu.util.ULocale);
+    method public static final String[] getKeywordValuesForLocale(String, android.icu.util.ULocale, boolean);
+    method public final int getLeastMaximum(int);
+    method protected int getLimit(int, int);
+    method public final int getMaximum(int);
+    method public int getMinimalDaysInFirstWeek();
+    method public final int getMinimum(int);
+    method public int getRepeatedWallTimeOption();
+    method public int getSkippedWallTimeOption();
+    method protected final int getStamp(int);
+    method public final java.util.Date getTime();
+    method public long getTimeInMillis();
+    method public android.icu.util.TimeZone getTimeZone();
+    method public String getType();
+    method public android.icu.util.Calendar.WeekData getWeekData();
+    method public static android.icu.util.Calendar.WeekData getWeekDataForRegion(String);
+    method protected static final int gregorianMonthLength(int, int);
+    method protected static final int gregorianPreviousMonthLength(int, int);
+    method protected void handleComputeFields(int);
+    method protected int handleComputeJulianDay(int);
+    method protected abstract int handleComputeMonthStart(int, int, boolean);
+    method protected int[] handleCreateFields();
+    method protected android.icu.text.DateFormat handleGetDateFormat(String, java.util.Locale);
+    method protected android.icu.text.DateFormat handleGetDateFormat(String, String, java.util.Locale);
+    method protected android.icu.text.DateFormat handleGetDateFormat(String, android.icu.util.ULocale);
+    method protected abstract int handleGetExtendedYear();
+    method protected abstract int handleGetLimit(int, int);
+    method protected int handleGetMonthLength(int, int);
+    method protected int handleGetYearLength(int);
+    method protected final int internalGet(int);
+    method protected final int internalGet(int, int);
+    method protected final long internalGetTimeInMillis();
+    method protected final void internalSet(int, int);
+    method public boolean isEquivalentTo(android.icu.util.Calendar);
+    method protected static final boolean isGregorianLeapYear(int);
+    method public boolean isLenient();
+    method public final boolean isSet(int);
+    method public boolean isWeekend(java.util.Date);
+    method public boolean isWeekend();
+    method protected static final int julianDayToDayOfWeek(int);
+    method protected static final long julianDayToMillis(int);
+    method protected static final int millisToJulianDay(long);
+    method protected int newerField(int, int);
+    method protected int newestStamp(int, int, int);
+    method protected void pinField(int);
+    method protected void prepareGetActual(int, boolean);
+    method protected int resolveFields(int[][][]);
+    method public final void roll(int, boolean);
+    method public void roll(int, int);
+    method public final void set(int, int);
+    method public final void set(int, int, int);
+    method public final void set(int, int, int, int, int);
+    method public final void set(int, int, int, int, int, int);
+    method public void setFirstDayOfWeek(int);
+    method public void setLenient(boolean);
+    method public void setMinimalDaysInFirstWeek(int);
+    method public void setRepeatedWallTimeOption(int);
+    method public void setSkippedWallTimeOption(int);
+    method public final void setTime(java.util.Date);
+    method public void setTimeInMillis(long);
+    method public void setTimeZone(android.icu.util.TimeZone);
+    method public android.icu.util.Calendar setWeekData(android.icu.util.Calendar.WeekData);
+    method protected void validateField(int);
+    method protected final void validateField(int, int, int);
+    method protected void validateFields();
+    method protected int weekNumber(int, int, int);
+    method protected final int weekNumber(int, int);
+    field public static final int AM = 0; // 0x0
+    field public static final int AM_PM = 9; // 0x9
+    field public static final int APRIL = 3; // 0x3
+    field public static final int AUGUST = 7; // 0x7
+    field @Deprecated protected static final int BASE_FIELD_COUNT = 23; // 0x17
+    field public static final int DATE = 5; // 0x5
+    field public static final int DAY_OF_MONTH = 5; // 0x5
+    field public static final int DAY_OF_WEEK = 7; // 0x7
+    field public static final int DAY_OF_WEEK_IN_MONTH = 8; // 0x8
+    field public static final int DAY_OF_YEAR = 6; // 0x6
+    field public static final int DECEMBER = 11; // 0xb
+    field public static final int DOW_LOCAL = 18; // 0x12
+    field public static final int DST_OFFSET = 16; // 0x10
+    field protected static final int EPOCH_JULIAN_DAY = 2440588; // 0x253d8c
+    field public static final int ERA = 0; // 0x0
+    field public static final int EXTENDED_YEAR = 19; // 0x13
+    field public static final int FEBRUARY = 1; // 0x1
+    field public static final int FRIDAY = 6; // 0x6
+    field protected static final int GREATEST_MINIMUM = 1; // 0x1
+    field public static final int HOUR = 10; // 0xa
+    field public static final int HOUR_OF_DAY = 11; // 0xb
+    field protected static final int INTERNALLY_SET = 1; // 0x1
+    field public static final int IS_LEAP_MONTH = 22; // 0x16
+    field public static final int JANUARY = 0; // 0x0
+    field protected static final int JAN_1_1_JULIAN_DAY = 1721426; // 0x1a4452
+    field public static final int JULIAN_DAY = 20; // 0x14
+    field public static final int JULY = 6; // 0x6
+    field public static final int JUNE = 5; // 0x5
+    field protected static final int LEAST_MAXIMUM = 2; // 0x2
+    field public static final int MARCH = 2; // 0x2
+    field protected static final int MAXIMUM = 3; // 0x3
+    field protected static final java.util.Date MAX_DATE;
+    field @Deprecated protected static final int MAX_FIELD_COUNT = 32; // 0x20
+    field protected static final int MAX_JULIAN = 2130706432; // 0x7f000000
+    field protected static final long MAX_MILLIS = 183882168921600000L; // 0x28d47dbbf19b000L
+    field public static final int MAY = 4; // 0x4
+    field public static final int MILLISECOND = 14; // 0xe
+    field public static final int MILLISECONDS_IN_DAY = 21; // 0x15
+    field protected static final int MINIMUM = 0; // 0x0
+    field protected static final int MINIMUM_USER_STAMP = 2; // 0x2
+    field public static final int MINUTE = 12; // 0xc
+    field protected static final java.util.Date MIN_DATE;
+    field protected static final int MIN_JULIAN = -2130706432; // 0x81000000
+    field protected static final long MIN_MILLIS = -184303902528000000L; // 0xfd713893bf19b000L
+    field public static final int MONDAY = 2; // 0x2
+    field public static final int MONTH = 2; // 0x2
+    field public static final int NOVEMBER = 10; // 0xa
+    field public static final int OCTOBER = 9; // 0x9
+    field protected static final long ONE_DAY = 86400000L; // 0x5265c00L
+    field protected static final int ONE_HOUR = 3600000; // 0x36ee80
+    field protected static final int ONE_MINUTE = 60000; // 0xea60
+    field protected static final int ONE_SECOND = 1000; // 0x3e8
+    field protected static final long ONE_WEEK = 604800000L; // 0x240c8400L
+    field public static final int PM = 1; // 0x1
+    field protected static final int RESOLVE_REMAP = 32; // 0x20
+    field public static final int SATURDAY = 7; // 0x7
+    field public static final int SECOND = 13; // 0xd
+    field public static final int SEPTEMBER = 8; // 0x8
+    field public static final int SUNDAY = 1; // 0x1
+    field public static final int THURSDAY = 5; // 0x5
+    field public static final int TUESDAY = 3; // 0x3
+    field public static final int UNDECIMBER = 12; // 0xc
+    field protected static final int UNSET = 0; // 0x0
+    field public static final int WALLTIME_FIRST = 1; // 0x1
+    field public static final int WALLTIME_LAST = 0; // 0x0
+    field public static final int WALLTIME_NEXT_VALID = 2; // 0x2
+    field public static final int WEDNESDAY = 4; // 0x4
+    field public static final int WEEK_OF_MONTH = 4; // 0x4
+    field public static final int WEEK_OF_YEAR = 3; // 0x3
+    field public static final int YEAR = 1; // 0x1
+    field public static final int YEAR_WOY = 17; // 0x11
+    field public static final int ZONE_OFFSET = 15; // 0xf
+  }
+
+  public static final class Calendar.WeekData {
+    ctor public Calendar.WeekData(int, int, int, int, int, int);
+    field public final int firstDayOfWeek;
+    field public final int minimalDaysInFirstWeek;
+    field public final int weekendCease;
+    field public final int weekendCeaseMillis;
+    field public final int weekendOnset;
+    field public final int weekendOnsetMillis;
+  }
+
+  public class ChineseCalendar extends android.icu.util.Calendar {
+    ctor public ChineseCalendar();
+    ctor public ChineseCalendar(java.util.Date);
+    ctor public ChineseCalendar(int, int, int, int);
+    ctor public ChineseCalendar(int, int, int, int, int, int, int);
+    ctor public ChineseCalendar(int, int, int, int, int);
+    ctor public ChineseCalendar(int, int, int, int, int, int, int, int);
+    ctor public ChineseCalendar(java.util.Locale);
+    ctor public ChineseCalendar(android.icu.util.TimeZone);
+    ctor public ChineseCalendar(android.icu.util.TimeZone, java.util.Locale);
+    ctor public ChineseCalendar(android.icu.util.ULocale);
+    ctor public ChineseCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
+    method protected int handleComputeMonthStart(int, int, boolean);
+    method protected android.icu.text.DateFormat handleGetDateFormat(String, String, android.icu.util.ULocale);
+    method protected int handleGetExtendedYear();
+    method protected int handleGetLimit(int, int);
+  }
+
+  public final class CopticCalendar extends android.icu.util.Calendar {
+    ctor public CopticCalendar();
+    ctor public CopticCalendar(android.icu.util.TimeZone);
+    ctor public CopticCalendar(java.util.Locale);
+    ctor public CopticCalendar(android.icu.util.ULocale);
+    ctor public CopticCalendar(android.icu.util.TimeZone, java.util.Locale);
+    ctor public CopticCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
+    ctor public CopticCalendar(int, int, int);
+    ctor public CopticCalendar(java.util.Date);
+    ctor public CopticCalendar(int, int, int, int, int, int);
+    method @Deprecated protected void handleComputeFields(int);
+    method protected int handleComputeMonthStart(int, int, boolean);
+    method @Deprecated protected int handleGetExtendedYear();
+    method protected int handleGetLimit(int, int);
+    field public static final int AMSHIR = 5; // 0x5
+    field public static final int BABA = 1; // 0x1
+    field public static final int BARAMHAT = 6; // 0x6
+    field public static final int BARAMOUDA = 7; // 0x7
+    field public static final int BASHANS = 8; // 0x8
+    field public static final int EPEP = 10; // 0xa
+    field public static final int HATOR = 2; // 0x2
+    field public static final int KIAHK = 3; // 0x3
+    field public static final int MESRA = 11; // 0xb
+    field public static final int NASIE = 12; // 0xc
+    field public static final int PAONA = 9; // 0x9
+    field public static final int TOBA = 4; // 0x4
+    field public static final int TOUT = 0; // 0x0
+  }
+
+  public class Currency extends android.icu.util.MeasureUnit {
+    ctor protected Currency(String);
+    method public static android.icu.util.Currency fromJavaCurrency(java.util.Currency);
+    method public static java.util.Set<android.icu.util.Currency> getAvailableCurrencies();
+    method public static String[] getAvailableCurrencyCodes(android.icu.util.ULocale, java.util.Date);
+    method public static String[] getAvailableCurrencyCodes(java.util.Locale, java.util.Date);
+    method public static java.util.Locale[] getAvailableLocales();
+    method public static android.icu.util.ULocale[] getAvailableULocales();
+    method public String getCurrencyCode();
+    method public int getDefaultFractionDigits();
+    method public int getDefaultFractionDigits(android.icu.util.Currency.CurrencyUsage);
+    method public String getDisplayName();
+    method public String getDisplayName(java.util.Locale);
+    method public static android.icu.util.Currency getInstance(java.util.Locale);
+    method public static android.icu.util.Currency getInstance(android.icu.util.ULocale);
+    method public static android.icu.util.Currency getInstance(String);
+    method public static final String[] getKeywordValuesForLocale(String, android.icu.util.ULocale, boolean);
+    method public String getName(java.util.Locale, int, boolean[]);
+    method public String getName(android.icu.util.ULocale, int, boolean[]);
+    method public String getName(java.util.Locale, int, String, boolean[]);
+    method public String getName(android.icu.util.ULocale, int, String, boolean[]);
+    method public int getNumericCode();
+    method public double getRoundingIncrement();
+    method public double getRoundingIncrement(android.icu.util.Currency.CurrencyUsage);
+    method public String getSymbol();
+    method public String getSymbol(java.util.Locale);
+    method public String getSymbol(android.icu.util.ULocale);
+    method public static boolean isAvailable(String, java.util.Date, java.util.Date);
+    method public java.util.Currency toJavaCurrency();
+    field public static final int LONG_NAME = 1; // 0x1
+    field public static final int NARROW_SYMBOL_NAME = 3; // 0x3
+    field public static final int PLURAL_LONG_NAME = 2; // 0x2
+    field public static final int SYMBOL_NAME = 0; // 0x0
+  }
+
+  public enum Currency.CurrencyUsage {
+    enum_constant public static final android.icu.util.Currency.CurrencyUsage CASH;
+    enum_constant public static final android.icu.util.Currency.CurrencyUsage STANDARD;
+  }
+
+  public class CurrencyAmount extends android.icu.util.Measure {
+    ctor public CurrencyAmount(Number, android.icu.util.Currency);
+    ctor public CurrencyAmount(double, android.icu.util.Currency);
+    ctor public CurrencyAmount(Number, java.util.Currency);
+    ctor public CurrencyAmount(double, java.util.Currency);
+    method public android.icu.util.Currency getCurrency();
+  }
+
+  public final class DateInterval implements java.io.Serializable {
+    ctor public DateInterval(long, long);
+    method public long getFromDate();
+    method public long getToDate();
+  }
+
+  public final class EthiopicCalendar extends android.icu.util.Calendar {
+    ctor public EthiopicCalendar();
+    ctor public EthiopicCalendar(android.icu.util.TimeZone);
+    ctor public EthiopicCalendar(java.util.Locale);
+    ctor public EthiopicCalendar(android.icu.util.ULocale);
+    ctor public EthiopicCalendar(android.icu.util.TimeZone, java.util.Locale);
+    ctor public EthiopicCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
+    ctor public EthiopicCalendar(int, int, int);
+    ctor public EthiopicCalendar(java.util.Date);
+    ctor public EthiopicCalendar(int, int, int, int, int, int);
+    method @Deprecated protected void handleComputeFields(int);
+    method protected int handleComputeMonthStart(int, int, boolean);
+    method @Deprecated protected int handleGetExtendedYear();
+    method @Deprecated protected int handleGetLimit(int, int);
+    method public boolean isAmeteAlemEra();
+    method public void setAmeteAlemEra(boolean);
+    field public static final int GENBOT = 8; // 0x8
+    field public static final int HAMLE = 10; // 0xa
+    field public static final int HEDAR = 2; // 0x2
+    field public static final int MEGABIT = 6; // 0x6
+    field public static final int MESKEREM = 0; // 0x0
+    field public static final int MIAZIA = 7; // 0x7
+    field public static final int NEHASSE = 11; // 0xb
+    field public static final int PAGUMEN = 12; // 0xc
+    field public static final int SENE = 9; // 0x9
+    field public static final int TAHSAS = 3; // 0x3
+    field public static final int TEKEMT = 1; // 0x1
+    field public static final int TER = 4; // 0x4
+    field public static final int YEKATIT = 5; // 0x5
+  }
+
+  public interface Freezable<T> extends java.lang.Cloneable {
+    method public T cloneAsThawed();
+    method public T freeze();
+    method public boolean isFrozen();
+  }
+
+  public class GregorianCalendar extends android.icu.util.Calendar {
+    ctor public GregorianCalendar();
+    ctor public GregorianCalendar(android.icu.util.TimeZone);
+    ctor public GregorianCalendar(java.util.Locale);
+    ctor public GregorianCalendar(android.icu.util.ULocale);
+    ctor public GregorianCalendar(android.icu.util.TimeZone, java.util.Locale);
+    ctor public GregorianCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
+    ctor public GregorianCalendar(int, int, int);
+    ctor public GregorianCalendar(int, int, int, int, int);
+    ctor public GregorianCalendar(int, int, int, int, int, int);
+    method public final java.util.Date getGregorianChange();
+    method protected int handleComputeMonthStart(int, int, boolean);
+    method protected int handleGetExtendedYear();
+    method protected int handleGetLimit(int, int);
+    method public boolean isLeapYear(int);
+    method public void setGregorianChange(java.util.Date);
+    field public static final int AD = 1; // 0x1
+    field public static final int BC = 0; // 0x0
+    field protected transient boolean invertGregorian;
+    field protected transient boolean isGregorian;
+  }
+
+  public class HebrewCalendar extends android.icu.util.Calendar {
+    ctor public HebrewCalendar();
+    ctor public HebrewCalendar(android.icu.util.TimeZone);
+    ctor public HebrewCalendar(java.util.Locale);
+    ctor public HebrewCalendar(android.icu.util.ULocale);
+    ctor public HebrewCalendar(android.icu.util.TimeZone, java.util.Locale);
+    ctor public HebrewCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
+    ctor public HebrewCalendar(int, int, int);
+    ctor public HebrewCalendar(java.util.Date);
+    ctor public HebrewCalendar(int, int, int, int, int, int);
+    method protected int handleComputeMonthStart(int, int, boolean);
+    method protected int handleGetExtendedYear();
+    method protected int handleGetLimit(int, int);
+    method @Deprecated protected void validateField(int);
+    field public static final int ADAR = 6; // 0x6
+    field public static final int ADAR_1 = 5; // 0x5
+    field public static final int AV = 11; // 0xb
+    field public static final int ELUL = 12; // 0xc
+    field public static final int HESHVAN = 1; // 0x1
+    field public static final int IYAR = 8; // 0x8
+    field public static final int KISLEV = 2; // 0x2
+    field public static final int NISAN = 7; // 0x7
+    field public static final int SHEVAT = 4; // 0x4
+    field public static final int SIVAN = 9; // 0x9
+    field public static final int TAMUZ = 10; // 0xa
+    field public static final int TEVET = 3; // 0x3
+    field public static final int TISHRI = 0; // 0x0
+  }
+
+  public class ICUUncheckedIOException extends java.lang.RuntimeException {
+    ctor public ICUUncheckedIOException();
+    ctor public ICUUncheckedIOException(String);
+    ctor public ICUUncheckedIOException(Throwable);
+    ctor public ICUUncheckedIOException(String, Throwable);
+  }
+
+  public class IllformedLocaleException extends java.lang.RuntimeException {
+    ctor public IllformedLocaleException();
+    ctor public IllformedLocaleException(String);
+    ctor public IllformedLocaleException(String, int);
+    method public int getErrorIndex();
+  }
+
+  public class IndianCalendar extends android.icu.util.Calendar {
+    ctor public IndianCalendar();
+    ctor public IndianCalendar(android.icu.util.TimeZone);
+    ctor public IndianCalendar(java.util.Locale);
+    ctor public IndianCalendar(android.icu.util.ULocale);
+    ctor public IndianCalendar(android.icu.util.TimeZone, java.util.Locale);
+    ctor public IndianCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
+    ctor public IndianCalendar(java.util.Date);
+    ctor public IndianCalendar(int, int, int);
+    ctor public IndianCalendar(int, int, int, int, int, int);
+    method protected int handleComputeMonthStart(int, int, boolean);
+    method protected int handleGetExtendedYear();
+    method protected int handleGetLimit(int, int);
+    field public static final int AGRAHAYANA = 8; // 0x8
+    field public static final int ASADHA = 3; // 0x3
+    field public static final int ASVINA = 6; // 0x6
+    field public static final int BHADRA = 5; // 0x5
+    field public static final int CHAITRA = 0; // 0x0
+    field public static final int IE = 0; // 0x0
+    field public static final int JYAISTHA = 2; // 0x2
+    field public static final int KARTIKA = 7; // 0x7
+    field public static final int MAGHA = 10; // 0xa
+    field public static final int PAUSA = 9; // 0x9
+    field public static final int PHALGUNA = 11; // 0xb
+    field public static final int SRAVANA = 4; // 0x4
+    field public static final int VAISAKHA = 1; // 0x1
+  }
+
+  public class IslamicCalendar extends android.icu.util.Calendar {
+    ctor public IslamicCalendar();
+    ctor public IslamicCalendar(android.icu.util.TimeZone);
+    ctor public IslamicCalendar(java.util.Locale);
+    ctor public IslamicCalendar(android.icu.util.ULocale);
+    ctor public IslamicCalendar(android.icu.util.TimeZone, java.util.Locale);
+    ctor public IslamicCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
+    ctor public IslamicCalendar(java.util.Date);
+    ctor public IslamicCalendar(int, int, int);
+    ctor public IslamicCalendar(int, int, int, int, int, int);
+    method public android.icu.util.IslamicCalendar.CalculationType getCalculationType();
+    method protected int handleComputeMonthStart(int, int, boolean);
+    method protected int handleGetExtendedYear();
+    method protected int handleGetLimit(int, int);
+    method public void setCalculationType(android.icu.util.IslamicCalendar.CalculationType);
+    field public static final int DHU_AL_HIJJAH = 11; // 0xb
+    field public static final int DHU_AL_QIDAH = 10; // 0xa
+    field public static final int JUMADA_1 = 4; // 0x4
+    field public static final int JUMADA_2 = 5; // 0x5
+    field public static final int MUHARRAM = 0; // 0x0
+    field public static final int RABI_1 = 2; // 0x2
+    field public static final int RABI_2 = 3; // 0x3
+    field public static final int RAJAB = 6; // 0x6
+    field public static final int RAMADAN = 8; // 0x8
+    field public static final int SAFAR = 1; // 0x1
+    field public static final int SHABAN = 7; // 0x7
+    field public static final int SHAWWAL = 9; // 0x9
+  }
+
+  public enum IslamicCalendar.CalculationType {
+    enum_constant public static final android.icu.util.IslamicCalendar.CalculationType ISLAMIC;
+    enum_constant public static final android.icu.util.IslamicCalendar.CalculationType ISLAMIC_CIVIL;
+    enum_constant public static final android.icu.util.IslamicCalendar.CalculationType ISLAMIC_TBLA;
+    enum_constant public static final android.icu.util.IslamicCalendar.CalculationType ISLAMIC_UMALQURA;
+  }
+
+  public class JapaneseCalendar extends android.icu.util.GregorianCalendar {
+    ctor public JapaneseCalendar();
+    ctor public JapaneseCalendar(android.icu.util.TimeZone);
+    ctor public JapaneseCalendar(java.util.Locale);
+    ctor public JapaneseCalendar(android.icu.util.ULocale);
+    ctor public JapaneseCalendar(android.icu.util.TimeZone, java.util.Locale);
+    ctor public JapaneseCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
+    ctor public JapaneseCalendar(java.util.Date);
+    ctor public JapaneseCalendar(int, int, int, int);
+    ctor public JapaneseCalendar(int, int, int);
+    ctor public JapaneseCalendar(int, int, int, int, int, int);
+    field public static final int HEISEI;
+    field public static final int MEIJI;
+    field public static final int REIWA;
+    field public static final int SHOWA;
+    field public static final int TAISHO;
+  }
+
+  public final class LocaleData {
+    method public static android.icu.util.VersionInfo getCLDRVersion();
+    method public String getDelimiter(int);
+    method public static android.icu.util.LocaleData getInstance(android.icu.util.ULocale);
+    method public static android.icu.util.LocaleData getInstance();
+    method public static android.icu.util.LocaleData.MeasurementSystem getMeasurementSystem(android.icu.util.ULocale);
+    method public boolean getNoSubstitute();
+    method public static android.icu.util.LocaleData.PaperSize getPaperSize(android.icu.util.ULocale);
+    method public void setNoSubstitute(boolean);
+    field public static final int ALT_QUOTATION_END = 3; // 0x3
+    field public static final int ALT_QUOTATION_START = 2; // 0x2
+    field public static final int QUOTATION_END = 1; // 0x1
+    field public static final int QUOTATION_START = 0; // 0x0
+  }
+
+  public static final class LocaleData.MeasurementSystem {
+    field public static final android.icu.util.LocaleData.MeasurementSystem SI;
+    field public static final android.icu.util.LocaleData.MeasurementSystem UK;
+    field public static final android.icu.util.LocaleData.MeasurementSystem US;
+  }
+
+  public static final class LocaleData.PaperSize {
+    method public int getHeight();
+    method public int getWidth();
+  }
+
+  public class Measure {
+    ctor public Measure(Number, android.icu.util.MeasureUnit);
+    method public Number getNumber();
+    method public android.icu.util.MeasureUnit getUnit();
+  }
+
+  public class MeasureUnit implements java.io.Serializable {
+    method public static java.util.Set<android.icu.util.MeasureUnit> getAvailable(String);
+    method public static java.util.Set<android.icu.util.MeasureUnit> getAvailable();
+    method public static java.util.Set<java.lang.String> getAvailableTypes();
+    method public String getSubtype();
+    method public String getType();
+    field public static final android.icu.util.MeasureUnit ACRE;
+    field public static final android.icu.util.MeasureUnit ACRE_FOOT;
+    field public static final android.icu.util.MeasureUnit AMPERE;
+    field public static final android.icu.util.MeasureUnit ARC_MINUTE;
+    field public static final android.icu.util.MeasureUnit ARC_SECOND;
+    field public static final android.icu.util.MeasureUnit ASTRONOMICAL_UNIT;
+    field public static final android.icu.util.MeasureUnit ATMOSPHERE;
+    field public static final android.icu.util.MeasureUnit BIT;
+    field public static final android.icu.util.MeasureUnit BUSHEL;
+    field public static final android.icu.util.MeasureUnit BYTE;
+    field public static final android.icu.util.MeasureUnit CALORIE;
+    field public static final android.icu.util.MeasureUnit CARAT;
+    field public static final android.icu.util.MeasureUnit CELSIUS;
+    field public static final android.icu.util.MeasureUnit CENTILITER;
+    field public static final android.icu.util.MeasureUnit CENTIMETER;
+    field public static final android.icu.util.MeasureUnit CENTURY;
+    field public static final android.icu.util.MeasureUnit CUBIC_CENTIMETER;
+    field public static final android.icu.util.MeasureUnit CUBIC_FOOT;
+    field public static final android.icu.util.MeasureUnit CUBIC_INCH;
+    field public static final android.icu.util.MeasureUnit CUBIC_KILOMETER;
+    field public static final android.icu.util.MeasureUnit CUBIC_METER;
+    field public static final android.icu.util.MeasureUnit CUBIC_MILE;
+    field public static final android.icu.util.MeasureUnit CUBIC_YARD;
+    field public static final android.icu.util.MeasureUnit CUP;
+    field public static final android.icu.util.MeasureUnit CUP_METRIC;
+    field public static final android.icu.util.TimeUnit DAY;
+    field public static final android.icu.util.MeasureUnit DECILITER;
+    field public static final android.icu.util.MeasureUnit DECIMETER;
+    field public static final android.icu.util.MeasureUnit DEGREE;
+    field public static final android.icu.util.MeasureUnit FAHRENHEIT;
+    field public static final android.icu.util.MeasureUnit FATHOM;
+    field public static final android.icu.util.MeasureUnit FLUID_OUNCE;
+    field public static final android.icu.util.MeasureUnit FOODCALORIE;
+    field public static final android.icu.util.MeasureUnit FOOT;
+    field public static final android.icu.util.MeasureUnit FURLONG;
+    field public static final android.icu.util.MeasureUnit GALLON;
+    field public static final android.icu.util.MeasureUnit GALLON_IMPERIAL;
+    field public static final android.icu.util.MeasureUnit GENERIC_TEMPERATURE;
+    field public static final android.icu.util.MeasureUnit GIGABIT;
+    field public static final android.icu.util.MeasureUnit GIGABYTE;
+    field public static final android.icu.util.MeasureUnit GIGAHERTZ;
+    field public static final android.icu.util.MeasureUnit GIGAWATT;
+    field public static final android.icu.util.MeasureUnit GRAM;
+    field public static final android.icu.util.MeasureUnit G_FORCE;
+    field public static final android.icu.util.MeasureUnit HECTARE;
+    field public static final android.icu.util.MeasureUnit HECTOLITER;
+    field public static final android.icu.util.MeasureUnit HECTOPASCAL;
+    field public static final android.icu.util.MeasureUnit HERTZ;
+    field public static final android.icu.util.MeasureUnit HORSEPOWER;
+    field public static final android.icu.util.TimeUnit HOUR;
+    field public static final android.icu.util.MeasureUnit INCH;
+    field public static final android.icu.util.MeasureUnit INCH_HG;
+    field public static final android.icu.util.MeasureUnit JOULE;
+    field public static final android.icu.util.MeasureUnit KARAT;
+    field public static final android.icu.util.MeasureUnit KELVIN;
+    field public static final android.icu.util.MeasureUnit KILOBIT;
+    field public static final android.icu.util.MeasureUnit KILOBYTE;
+    field public static final android.icu.util.MeasureUnit KILOCALORIE;
+    field public static final android.icu.util.MeasureUnit KILOGRAM;
+    field public static final android.icu.util.MeasureUnit KILOHERTZ;
+    field public static final android.icu.util.MeasureUnit KILOJOULE;
+    field public static final android.icu.util.MeasureUnit KILOMETER;
+    field public static final android.icu.util.MeasureUnit KILOMETER_PER_HOUR;
+    field public static final android.icu.util.MeasureUnit KILOWATT;
+    field public static final android.icu.util.MeasureUnit KILOWATT_HOUR;
+    field public static final android.icu.util.MeasureUnit KNOT;
+    field public static final android.icu.util.MeasureUnit LIGHT_YEAR;
+    field public static final android.icu.util.MeasureUnit LITER;
+    field public static final android.icu.util.MeasureUnit LITER_PER_100KILOMETERS;
+    field public static final android.icu.util.MeasureUnit LITER_PER_KILOMETER;
+    field public static final android.icu.util.MeasureUnit LUX;
+    field public static final android.icu.util.MeasureUnit MEGABIT;
+    field public static final android.icu.util.MeasureUnit MEGABYTE;
+    field public static final android.icu.util.MeasureUnit MEGAHERTZ;
+    field public static final android.icu.util.MeasureUnit MEGALITER;
+    field public static final android.icu.util.MeasureUnit MEGAWATT;
+    field public static final android.icu.util.MeasureUnit METER;
+    field public static final android.icu.util.MeasureUnit METER_PER_SECOND;
+    field public static final android.icu.util.MeasureUnit METER_PER_SECOND_SQUARED;
+    field public static final android.icu.util.MeasureUnit METRIC_TON;
+    field public static final android.icu.util.MeasureUnit MICROGRAM;
+    field public static final android.icu.util.MeasureUnit MICROMETER;
+    field public static final android.icu.util.MeasureUnit MICROSECOND;
+    field public static final android.icu.util.MeasureUnit MILE;
+    field public static final android.icu.util.MeasureUnit MILE_PER_GALLON;
+    field public static final android.icu.util.MeasureUnit MILE_PER_GALLON_IMPERIAL;
+    field public static final android.icu.util.MeasureUnit MILE_PER_HOUR;
+    field public static final android.icu.util.MeasureUnit MILE_SCANDINAVIAN;
+    field public static final android.icu.util.MeasureUnit MILLIAMPERE;
+    field public static final android.icu.util.MeasureUnit MILLIBAR;
+    field public static final android.icu.util.MeasureUnit MILLIGRAM;
+    field public static final android.icu.util.MeasureUnit MILLIGRAM_PER_DECILITER;
+    field public static final android.icu.util.MeasureUnit MILLILITER;
+    field public static final android.icu.util.MeasureUnit MILLIMETER;
+    field public static final android.icu.util.MeasureUnit MILLIMETER_OF_MERCURY;
+    field public static final android.icu.util.MeasureUnit MILLIMOLE_PER_LITER;
+    field public static final android.icu.util.MeasureUnit MILLISECOND;
+    field public static final android.icu.util.MeasureUnit MILLIWATT;
+    field public static final android.icu.util.TimeUnit MINUTE;
+    field public static final android.icu.util.TimeUnit MONTH;
+    field public static final android.icu.util.MeasureUnit NANOMETER;
+    field public static final android.icu.util.MeasureUnit NANOSECOND;
+    field public static final android.icu.util.MeasureUnit NAUTICAL_MILE;
+    field public static final android.icu.util.MeasureUnit OHM;
+    field public static final android.icu.util.MeasureUnit OUNCE;
+    field public static final android.icu.util.MeasureUnit OUNCE_TROY;
+    field public static final android.icu.util.MeasureUnit PARSEC;
+    field public static final android.icu.util.MeasureUnit PART_PER_MILLION;
+    field public static final android.icu.util.MeasureUnit PERCENT;
+    field public static final android.icu.util.MeasureUnit PERMILLE;
+    field public static final android.icu.util.MeasureUnit PETABYTE;
+    field public static final android.icu.util.MeasureUnit PICOMETER;
+    field public static final android.icu.util.MeasureUnit PINT;
+    field public static final android.icu.util.MeasureUnit PINT_METRIC;
+    field public static final android.icu.util.MeasureUnit POINT;
+    field public static final android.icu.util.MeasureUnit POUND;
+    field public static final android.icu.util.MeasureUnit POUND_PER_SQUARE_INCH;
+    field public static final android.icu.util.MeasureUnit QUART;
+    field public static final android.icu.util.MeasureUnit RADIAN;
+    field public static final android.icu.util.MeasureUnit REVOLUTION_ANGLE;
+    field public static final android.icu.util.TimeUnit SECOND;
+    field public static final android.icu.util.MeasureUnit SQUARE_CENTIMETER;
+    field public static final android.icu.util.MeasureUnit SQUARE_FOOT;
+    field public static final android.icu.util.MeasureUnit SQUARE_INCH;
+    field public static final android.icu.util.MeasureUnit SQUARE_KILOMETER;
+    field public static final android.icu.util.MeasureUnit SQUARE_METER;
+    field public static final android.icu.util.MeasureUnit SQUARE_MILE;
+    field public static final android.icu.util.MeasureUnit SQUARE_YARD;
+    field public static final android.icu.util.MeasureUnit STONE;
+    field public static final android.icu.util.MeasureUnit TABLESPOON;
+    field public static final android.icu.util.MeasureUnit TEASPOON;
+    field public static final android.icu.util.MeasureUnit TERABIT;
+    field public static final android.icu.util.MeasureUnit TERABYTE;
+    field public static final android.icu.util.MeasureUnit TON;
+    field public static final android.icu.util.MeasureUnit VOLT;
+    field public static final android.icu.util.MeasureUnit WATT;
+    field public static final android.icu.util.TimeUnit WEEK;
+    field public static final android.icu.util.MeasureUnit YARD;
+    field public static final android.icu.util.TimeUnit YEAR;
+  }
+
+  public class Output<T> {
+    ctor public Output();
+    ctor public Output(T);
+    field public T value;
+  }
+
+  public interface RangeValueIterator {
+    method public boolean next(android.icu.util.RangeValueIterator.Element);
+    method public void reset();
+  }
+
+  public static class RangeValueIterator.Element {
+    ctor public RangeValueIterator.Element();
+    field public int limit;
+    field public int start;
+    field public int value;
+  }
+
+  public class TaiwanCalendar extends android.icu.util.GregorianCalendar {
+    ctor public TaiwanCalendar();
+    ctor public TaiwanCalendar(android.icu.util.TimeZone);
+    ctor public TaiwanCalendar(java.util.Locale);
+    ctor public TaiwanCalendar(android.icu.util.ULocale);
+    ctor public TaiwanCalendar(android.icu.util.TimeZone, java.util.Locale);
+    ctor public TaiwanCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
+    ctor public TaiwanCalendar(java.util.Date);
+    ctor public TaiwanCalendar(int, int, int);
+    ctor public TaiwanCalendar(int, int, int, int, int, int);
+    field public static final int BEFORE_MINGUO = 0; // 0x0
+    field public static final int MINGUO = 1; // 0x1
+  }
+
+  public class TimeUnit extends android.icu.util.MeasureUnit {
+    method public static android.icu.util.TimeUnit[] values();
+  }
+
+  public abstract class TimeZone implements java.lang.Cloneable android.icu.util.Freezable<android.icu.util.TimeZone> java.io.Serializable {
+    ctor public TimeZone();
+    method public Object clone();
+    method public android.icu.util.TimeZone cloneAsThawed();
+    method public static int countEquivalentIDs(String);
+    method public android.icu.util.TimeZone freeze();
+    method public static java.util.Set<java.lang.String> getAvailableIDs(android.icu.util.TimeZone.SystemTimeZoneType, String, Integer);
+    method public static String[] getAvailableIDs(int);
+    method public static String[] getAvailableIDs(String);
+    method public static String[] getAvailableIDs();
+    method public static String getCanonicalID(String);
+    method public static String getCanonicalID(String, boolean[]);
+    method public int getDSTSavings();
+    method public static android.icu.util.TimeZone getDefault();
+    method public final String getDisplayName();
+    method public final String getDisplayName(java.util.Locale);
+    method public final String getDisplayName(android.icu.util.ULocale);
+    method public final String getDisplayName(boolean, int);
+    method public String getDisplayName(boolean, int, java.util.Locale);
+    method public String getDisplayName(boolean, int, android.icu.util.ULocale);
+    method public static String getEquivalentID(String, int);
+    method public static android.icu.util.TimeZone getFrozenTimeZone(String);
+    method public String getID();
+    method public static String getIDForWindowsID(String, String);
+    method public abstract int getOffset(int, int, int, int, int, int);
+    method public int getOffset(long);
+    method public void getOffset(long, boolean, int[]);
+    method public abstract int getRawOffset();
+    method public static String getRegion(String);
+    method public static String getTZDataVersion();
+    method public static android.icu.util.TimeZone getTimeZone(String);
+    method public static android.icu.util.TimeZone getTimeZone(String, int);
+    method public static String getWindowsID(String);
+    method public boolean hasSameRules(android.icu.util.TimeZone);
+    method public abstract boolean inDaylightTime(java.util.Date);
+    method public boolean isFrozen();
+    method public boolean observesDaylightTime();
+    method public void setID(String);
+    method public abstract void setRawOffset(int);
+    method public abstract boolean useDaylightTime();
+    field public static final int GENERIC_LOCATION = 7; // 0x7
+    field public static final android.icu.util.TimeZone GMT_ZONE;
+    field public static final int LONG = 1; // 0x1
+    field public static final int LONG_GENERIC = 3; // 0x3
+    field public static final int LONG_GMT = 5; // 0x5
+    field public static final int SHORT = 0; // 0x0
+    field public static final int SHORT_COMMONLY_USED = 6; // 0x6
+    field public static final int SHORT_GENERIC = 2; // 0x2
+    field public static final int SHORT_GMT = 4; // 0x4
+    field public static final int TIMEZONE_ICU = 0; // 0x0
+    field public static final int TIMEZONE_JDK = 1; // 0x1
+    field public static final android.icu.util.TimeZone UNKNOWN_ZONE;
+    field public static final String UNKNOWN_ZONE_ID = "Etc/Unknown";
+  }
+
+  public enum TimeZone.SystemTimeZoneType {
+    enum_constant public static final android.icu.util.TimeZone.SystemTimeZoneType ANY;
+    enum_constant public static final android.icu.util.TimeZone.SystemTimeZoneType CANONICAL;
+    enum_constant public static final android.icu.util.TimeZone.SystemTimeZoneType CANONICAL_LOCATION;
+  }
+
+  public final class ULocale implements java.lang.Comparable<android.icu.util.ULocale> java.io.Serializable {
+    ctor public ULocale(String);
+    ctor public ULocale(String, String);
+    ctor public ULocale(String, String, String);
+    method public static android.icu.util.ULocale acceptLanguage(String, android.icu.util.ULocale[], boolean[]);
+    method public static android.icu.util.ULocale acceptLanguage(android.icu.util.ULocale[], android.icu.util.ULocale[], boolean[]);
+    method public static android.icu.util.ULocale acceptLanguage(String, boolean[]);
+    method public static android.icu.util.ULocale acceptLanguage(android.icu.util.ULocale[], boolean[]);
+    method public static android.icu.util.ULocale addLikelySubtags(android.icu.util.ULocale);
+    method public static String canonicalize(String);
+    method public Object clone();
+    method public int compareTo(android.icu.util.ULocale);
+    method public static android.icu.util.ULocale createCanonical(String);
+    method public static android.icu.util.ULocale forLanguageTag(String);
+    method public static android.icu.util.ULocale forLocale(java.util.Locale);
+    method public static android.icu.util.ULocale[] getAvailableLocales();
+    method public String getBaseName();
+    method public static String getBaseName(String);
+    method public String getCharacterOrientation();
+    method public String getCountry();
+    method public static String getCountry(String);
+    method public static android.icu.util.ULocale getDefault();
+    method public static android.icu.util.ULocale getDefault(android.icu.util.ULocale.Category);
+    method public String getDisplayCountry();
+    method public String getDisplayCountry(android.icu.util.ULocale);
+    method public static String getDisplayCountry(String, String);
+    method public static String getDisplayCountry(String, android.icu.util.ULocale);
+    method public static String getDisplayKeyword(String);
+    method public static String getDisplayKeyword(String, String);
+    method public static String getDisplayKeyword(String, android.icu.util.ULocale);
+    method public String getDisplayKeywordValue(String);
+    method public String getDisplayKeywordValue(String, android.icu.util.ULocale);
+    method public static String getDisplayKeywordValue(String, String, String);
+    method public static String getDisplayKeywordValue(String, String, android.icu.util.ULocale);
+    method public String getDisplayLanguage();
+    method public String getDisplayLanguage(android.icu.util.ULocale);
+    method public static String getDisplayLanguage(String, String);
+    method public static String getDisplayLanguage(String, android.icu.util.ULocale);
+    method public String getDisplayLanguageWithDialect();
+    method public String getDisplayLanguageWithDialect(android.icu.util.ULocale);
+    method public static String getDisplayLanguageWithDialect(String, String);
+    method public static String getDisplayLanguageWithDialect(String, android.icu.util.ULocale);
+    method public String getDisplayName();
+    method public String getDisplayName(android.icu.util.ULocale);
+    method public static String getDisplayName(String, String);
+    method public static String getDisplayName(String, android.icu.util.ULocale);
+    method public String getDisplayNameWithDialect();
+    method public String getDisplayNameWithDialect(android.icu.util.ULocale);
+    method public static String getDisplayNameWithDialect(String, String);
+    method public static String getDisplayNameWithDialect(String, android.icu.util.ULocale);
+    method public String getDisplayScript();
+    method public String getDisplayScript(android.icu.util.ULocale);
+    method public static String getDisplayScript(String, String);
+    method public static String getDisplayScript(String, android.icu.util.ULocale);
+    method public String getDisplayVariant();
+    method public String getDisplayVariant(android.icu.util.ULocale);
+    method public static String getDisplayVariant(String, String);
+    method public static String getDisplayVariant(String, android.icu.util.ULocale);
+    method public String getExtension(char);
+    method public java.util.Set<java.lang.Character> getExtensionKeys();
+    method public static String getFallback(String);
+    method public android.icu.util.ULocale getFallback();
+    method public String getISO3Country();
+    method public static String getISO3Country(String);
+    method public String getISO3Language();
+    method public static String getISO3Language(String);
+    method public static String[] getISOCountries();
+    method public static String[] getISOLanguages();
+    method public String getKeywordValue(String);
+    method public static String getKeywordValue(String, String);
+    method public java.util.Iterator<java.lang.String> getKeywords();
+    method public static java.util.Iterator<java.lang.String> getKeywords(String);
+    method public String getLanguage();
+    method public static String getLanguage(String);
+    method public String getLineOrientation();
+    method public String getName();
+    method public static String getName(String);
+    method public String getScript();
+    method public static String getScript(String);
+    method public java.util.Set<java.lang.String> getUnicodeLocaleAttributes();
+    method public java.util.Set<java.lang.String> getUnicodeLocaleKeys();
+    method public String getUnicodeLocaleType(String);
+    method public String getVariant();
+    method public static String getVariant(String);
+    method public boolean isRightToLeft();
+    method public static android.icu.util.ULocale minimizeSubtags(android.icu.util.ULocale);
+    method public android.icu.util.ULocale setKeywordValue(String, String);
+    method public static String setKeywordValue(String, String, String);
+    method public String toLanguageTag();
+    method public static String toLegacyKey(String);
+    method public static String toLegacyType(String, String);
+    method public java.util.Locale toLocale();
+    method public static String toUnicodeLocaleKey(String);
+    method public static String toUnicodeLocaleType(String, String);
+    field public static final android.icu.util.ULocale CANADA;
+    field public static final android.icu.util.ULocale CANADA_FRENCH;
+    field public static final android.icu.util.ULocale CHINA;
+    field public static final android.icu.util.ULocale CHINESE;
+    field public static final android.icu.util.ULocale ENGLISH;
+    field public static final android.icu.util.ULocale FRANCE;
+    field public static final android.icu.util.ULocale FRENCH;
+    field public static final android.icu.util.ULocale GERMAN;
+    field public static final android.icu.util.ULocale GERMANY;
+    field public static final android.icu.util.ULocale ITALIAN;
+    field public static final android.icu.util.ULocale ITALY;
+    field public static final android.icu.util.ULocale JAPAN;
+    field public static final android.icu.util.ULocale JAPANESE;
+    field public static final android.icu.util.ULocale KOREA;
+    field public static final android.icu.util.ULocale KOREAN;
+    field public static final android.icu.util.ULocale PRC;
+    field public static final char PRIVATE_USE_EXTENSION = 120; // 0x0078 'x'
+    field public static final android.icu.util.ULocale ROOT;
+    field public static final android.icu.util.ULocale SIMPLIFIED_CHINESE;
+    field public static final android.icu.util.ULocale TAIWAN;
+    field public static final android.icu.util.ULocale TRADITIONAL_CHINESE;
+    field public static final android.icu.util.ULocale UK;
+    field public static final char UNICODE_LOCALE_EXTENSION = 117; // 0x0075 'u'
+    field public static final android.icu.util.ULocale US;
+  }
+
+  public static final class ULocale.Builder {
+    ctor public ULocale.Builder();
+    method public android.icu.util.ULocale.Builder addUnicodeLocaleAttribute(String);
+    method public android.icu.util.ULocale build();
+    method public android.icu.util.ULocale.Builder clear();
+    method public android.icu.util.ULocale.Builder clearExtensions();
+    method public android.icu.util.ULocale.Builder removeUnicodeLocaleAttribute(String);
+    method public android.icu.util.ULocale.Builder setExtension(char, String);
+    method public android.icu.util.ULocale.Builder setLanguage(String);
+    method public android.icu.util.ULocale.Builder setLanguageTag(String);
+    method public android.icu.util.ULocale.Builder setLocale(android.icu.util.ULocale);
+    method public android.icu.util.ULocale.Builder setRegion(String);
+    method public android.icu.util.ULocale.Builder setScript(String);
+    method public android.icu.util.ULocale.Builder setUnicodeLocaleKeyword(String, String);
+    method public android.icu.util.ULocale.Builder setVariant(String);
+  }
+
+  public enum ULocale.Category {
+    enum_constant public static final android.icu.util.ULocale.Category DISPLAY;
+    enum_constant public static final android.icu.util.ULocale.Category FORMAT;
+  }
+
+  public final class UniversalTimeScale {
+    method public static android.icu.math.BigDecimal bigDecimalFrom(double, int);
+    method public static android.icu.math.BigDecimal bigDecimalFrom(long, int);
+    method public static android.icu.math.BigDecimal bigDecimalFrom(android.icu.math.BigDecimal, int);
+    method public static long from(long, int);
+    method public static long getTimeScaleValue(int, int);
+    method public static android.icu.math.BigDecimal toBigDecimal(long, int);
+    method public static android.icu.math.BigDecimal toBigDecimal(android.icu.math.BigDecimal, int);
+    method public static long toLong(long, int);
+    field public static final int DB2_TIME = 8; // 0x8
+    field public static final int DOTNET_DATE_TIME = 4; // 0x4
+    field public static final int EPOCH_OFFSET_PLUS_1_VALUE = 6; // 0x6
+    field public static final int EPOCH_OFFSET_VALUE = 1; // 0x1
+    field public static final int EXCEL_TIME = 7; // 0x7
+    field public static final int FROM_MAX_VALUE = 3; // 0x3
+    field public static final int FROM_MIN_VALUE = 2; // 0x2
+    field public static final int ICU4C_TIME = 2; // 0x2
+    field public static final int JAVA_TIME = 0; // 0x0
+    field public static final int MAC_OLD_TIME = 5; // 0x5
+    field public static final int MAC_TIME = 6; // 0x6
+    field @Deprecated public static final int MAX_SCALE = 10; // 0xa
+    field public static final int TO_MAX_VALUE = 5; // 0x5
+    field public static final int TO_MIN_VALUE = 4; // 0x4
+    field public static final int UNITS_VALUE = 0; // 0x0
+    field public static final int UNIX_MICROSECONDS_TIME = 9; // 0x9
+    field public static final int UNIX_TIME = 1; // 0x1
+    field public static final int WINDOWS_FILE_TIME = 3; // 0x3
+  }
+
+  public interface ValueIterator {
+    method public boolean next(android.icu.util.ValueIterator.Element);
+    method public void reset();
+    method public void setRange(int, int);
+  }
+
+  public static final class ValueIterator.Element {
+    ctor public ValueIterator.Element();
+    field public int integer;
+    field public Object value;
+  }
+
+  public final class VersionInfo implements java.lang.Comparable<android.icu.util.VersionInfo> {
+    method public int compareTo(android.icu.util.VersionInfo);
+    method public static android.icu.util.VersionInfo getInstance(String);
+    method public static android.icu.util.VersionInfo getInstance(int, int, int, int);
+    method public static android.icu.util.VersionInfo getInstance(int, int, int);
+    method public static android.icu.util.VersionInfo getInstance(int, int);
+    method public static android.icu.util.VersionInfo getInstance(int);
+    method public int getMajor();
+    method public int getMicro();
+    method public int getMilli();
+    method public int getMinor();
+    field public static final android.icu.util.VersionInfo ICU_VERSION;
+    field public static final android.icu.util.VersionInfo UCOL_BUILDER_VERSION;
+    field public static final android.icu.util.VersionInfo UCOL_RUNTIME_VERSION;
+    field public static final android.icu.util.VersionInfo UNICODE_10_0;
+    field public static final android.icu.util.VersionInfo UNICODE_11_0;
+    field public static final android.icu.util.VersionInfo UNICODE_12_0;
+    field public static final android.icu.util.VersionInfo UNICODE_12_1;
+    field public static final android.icu.util.VersionInfo UNICODE_13_0;
+    field public static final android.icu.util.VersionInfo UNICODE_1_0;
+    field public static final android.icu.util.VersionInfo UNICODE_1_0_1;
+    field public static final android.icu.util.VersionInfo UNICODE_1_1_0;
+    field public static final android.icu.util.VersionInfo UNICODE_1_1_5;
+    field public static final android.icu.util.VersionInfo UNICODE_2_0;
+    field public static final android.icu.util.VersionInfo UNICODE_2_1_2;
+    field public static final android.icu.util.VersionInfo UNICODE_2_1_5;
+    field public static final android.icu.util.VersionInfo UNICODE_2_1_8;
+    field public static final android.icu.util.VersionInfo UNICODE_2_1_9;
+    field public static final android.icu.util.VersionInfo UNICODE_3_0;
+    field public static final android.icu.util.VersionInfo UNICODE_3_0_1;
+    field public static final android.icu.util.VersionInfo UNICODE_3_1_0;
+    field public static final android.icu.util.VersionInfo UNICODE_3_1_1;
+    field public static final android.icu.util.VersionInfo UNICODE_3_2;
+    field public static final android.icu.util.VersionInfo UNICODE_4_0;
+    field public static final android.icu.util.VersionInfo UNICODE_4_0_1;
+    field public static final android.icu.util.VersionInfo UNICODE_4_1;
+    field public static final android.icu.util.VersionInfo UNICODE_5_0;
+    field public static final android.icu.util.VersionInfo UNICODE_5_1;
+    field public static final android.icu.util.VersionInfo UNICODE_5_2;
+    field public static final android.icu.util.VersionInfo UNICODE_6_0;
+    field public static final android.icu.util.VersionInfo UNICODE_6_1;
+    field public static final android.icu.util.VersionInfo UNICODE_6_2;
+    field public static final android.icu.util.VersionInfo UNICODE_6_3;
+    field public static final android.icu.util.VersionInfo UNICODE_7_0;
+    field public static final android.icu.util.VersionInfo UNICODE_8_0;
+    field public static final android.icu.util.VersionInfo UNICODE_9_0;
+  }
+
+}
+
+package android.inputmethodservice {
+
+  public abstract class AbstractInputMethodService extends android.app.Service implements android.view.KeyEvent.Callback {
+    ctor public AbstractInputMethodService();
+    method public android.view.KeyEvent.DispatcherState getKeyDispatcherState();
+    method public final android.os.IBinder onBind(android.content.Intent);
+    method public abstract android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodImpl onCreateInputMethodInterface();
+    method public abstract android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodSessionImpl onCreateInputMethodSessionInterface();
+    method public boolean onGenericMotionEvent(android.view.MotionEvent);
+    method public boolean onTrackballEvent(android.view.MotionEvent);
+  }
+
+  public abstract class AbstractInputMethodService.AbstractInputMethodImpl implements android.view.inputmethod.InputMethod {
+    ctor public AbstractInputMethodService.AbstractInputMethodImpl();
+    method @MainThread public void createSession(android.view.inputmethod.InputMethod.SessionCallback);
+    method @MainThread public void revokeSession(android.view.inputmethod.InputMethodSession);
+    method @MainThread public void setSessionEnabled(android.view.inputmethod.InputMethodSession, boolean);
+  }
+
+  public abstract class AbstractInputMethodService.AbstractInputMethodSessionImpl implements android.view.inputmethod.InputMethodSession {
+    ctor public AbstractInputMethodService.AbstractInputMethodSessionImpl();
+    method public void dispatchGenericMotionEvent(int, android.view.MotionEvent, android.view.inputmethod.InputMethodSession.EventCallback);
+    method public void dispatchKeyEvent(int, android.view.KeyEvent, android.view.inputmethod.InputMethodSession.EventCallback);
+    method public void dispatchTrackballEvent(int, android.view.MotionEvent, android.view.inputmethod.InputMethodSession.EventCallback);
+    method public boolean isEnabled();
+    method public boolean isRevoked();
+    method public void revokeSelf();
+    method public void setEnabled(boolean);
+  }
+
+  public class ExtractEditText extends android.widget.EditText {
+    ctor public ExtractEditText(android.content.Context);
+    ctor public ExtractEditText(android.content.Context, android.util.AttributeSet);
+    ctor public ExtractEditText(android.content.Context, android.util.AttributeSet, int);
+    ctor public ExtractEditText(android.content.Context, android.util.AttributeSet, int, int);
+    method public void finishInternalChanges();
+    method public boolean hasVerticalScrollBar();
+    method public void startInternalChanges();
+  }
+
+  public class InputMethodService extends android.inputmethodservice.AbstractInputMethodService {
+    ctor public InputMethodService();
+    method @Deprecated public boolean enableHardwareAcceleration();
+    method public int getBackDisposition();
+    method public int getCandidatesHiddenVisibility();
+    method public android.view.inputmethod.InputBinding getCurrentInputBinding();
+    method public android.view.inputmethod.InputConnection getCurrentInputConnection();
+    method public android.view.inputmethod.EditorInfo getCurrentInputEditorInfo();
+    method public boolean getCurrentInputStarted();
+    method @Deprecated public int getInputMethodWindowRecommendedHeight();
+    method public android.view.LayoutInflater getLayoutInflater();
+    method public int getMaxWidth();
+    method public CharSequence getTextForImeAction(int);
+    method public android.app.Dialog getWindow();
+    method public void hideStatusIcon();
+    method public void hideWindow();
+    method public boolean isExtractViewShown();
+    method public boolean isFullscreenMode();
+    method public boolean isInputViewShown();
+    method public boolean isShowInputRequested();
+    method public void onAppPrivateCommand(String, android.os.Bundle);
+    method public void onBindInput();
+    method public void onComputeInsets(android.inputmethodservice.InputMethodService.Insets);
+    method public void onConfigureWindow(android.view.Window, boolean, boolean);
+    method public android.view.View onCreateCandidatesView();
+    method public android.view.View onCreateExtractTextView();
+    method @Nullable public android.view.inputmethod.InlineSuggestionsRequest onCreateInlineSuggestionsRequest(@NonNull android.os.Bundle);
+    method public android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodImpl onCreateInputMethodInterface();
+    method public android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodSessionImpl onCreateInputMethodSessionInterface();
+    method public android.view.View onCreateInputView();
+    method protected void onCurrentInputMethodSubtypeChanged(android.view.inputmethod.InputMethodSubtype);
+    method public void onDisplayCompletions(android.view.inputmethod.CompletionInfo[]);
+    method public boolean onEvaluateFullscreenMode();
+    method @CallSuper public boolean onEvaluateInputViewShown();
+    method public boolean onExtractTextContextMenuItem(int);
+    method public void onExtractedCursorMovement(int, int);
+    method public void onExtractedSelectionChanged(int, int);
+    method public void onExtractedTextClicked();
+    method public void onExtractingInputChanged(android.view.inputmethod.EditorInfo);
+    method public void onFinishCandidatesView(boolean);
+    method public void onFinishInput();
+    method public void onFinishInputView(boolean);
+    method public void onInitializeInterface();
+    method public boolean onInlineSuggestionsResponse(@NonNull android.view.inputmethod.InlineSuggestionsResponse);
+    method public boolean onKeyDown(int, android.view.KeyEvent);
+    method public boolean onKeyLongPress(int, android.view.KeyEvent);
+    method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
+    method public boolean onKeyUp(int, android.view.KeyEvent);
+    method public boolean onShowInputRequested(int, boolean);
+    method public void onStartCandidatesView(android.view.inputmethod.EditorInfo, boolean);
+    method public void onStartInput(android.view.inputmethod.EditorInfo, boolean);
+    method public void onStartInputView(android.view.inputmethod.EditorInfo, boolean);
+    method public void onUnbindInput();
+    method @Deprecated public void onUpdateCursor(android.graphics.Rect);
+    method public void onUpdateCursorAnchorInfo(android.view.inputmethod.CursorAnchorInfo);
+    method public void onUpdateExtractedText(int, android.view.inputmethod.ExtractedText);
+    method public void onUpdateExtractingViews(android.view.inputmethod.EditorInfo);
+    method public void onUpdateExtractingVisibility(android.view.inputmethod.EditorInfo);
+    method public void onUpdateSelection(int, int, int, int, int, int);
+    method @Deprecated public void onViewClicked(boolean);
+    method public void onWindowHidden();
+    method public void onWindowShown();
+    method public void requestHideSelf(int);
+    method public final void requestShowSelf(int);
+    method public boolean sendDefaultEditorAction(boolean);
+    method public void sendDownUpKeyEvents(int);
+    method public void sendKeyChar(char);
+    method public void setBackDisposition(int);
+    method public void setCandidatesView(android.view.View);
+    method public void setCandidatesViewShown(boolean);
+    method public void setExtractView(android.view.View);
+    method public void setExtractViewShown(boolean);
+    method public void setInputView(android.view.View);
+    method public final boolean shouldOfferSwitchingToNextInputMethod();
+    method public void showStatusIcon(@DrawableRes int);
+    method public void showWindow(boolean);
+    method public void switchInputMethod(String);
+    method public final void switchInputMethod(String, android.view.inputmethod.InputMethodSubtype);
+    method public final boolean switchToNextInputMethod(boolean);
+    method public final boolean switchToPreviousInputMethod();
+    method public void updateFullscreenMode();
+    method public void updateInputViewShown();
+    field public static final int BACK_DISPOSITION_ADJUST_NOTHING = 3; // 0x3
+    field public static final int BACK_DISPOSITION_DEFAULT = 0; // 0x0
+    field @Deprecated public static final int BACK_DISPOSITION_WILL_DISMISS = 2; // 0x2
+    field @Deprecated public static final int BACK_DISPOSITION_WILL_NOT_DISMISS = 1; // 0x1
+  }
+
+  public class InputMethodService.InputMethodImpl extends android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodImpl {
+    ctor public InputMethodService.InputMethodImpl();
+    method @MainThread public void attachToken(android.os.IBinder);
+    method @MainThread public void bindInput(android.view.inputmethod.InputBinding);
+    method @MainThread public void changeInputMethodSubtype(android.view.inputmethod.InputMethodSubtype);
+    method @MainThread public void hideSoftInput(int, android.os.ResultReceiver);
+    method @MainThread public void restartInput(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo);
+    method @MainThread public void showSoftInput(int, android.os.ResultReceiver);
+    method @MainThread public void startInput(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo);
+    method @MainThread public void unbindInput();
+  }
+
+  public class InputMethodService.InputMethodSessionImpl extends android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodSessionImpl {
+    ctor public InputMethodService.InputMethodSessionImpl();
+    method public void appPrivateCommand(String, android.os.Bundle);
+    method public void displayCompletions(android.view.inputmethod.CompletionInfo[]);
+    method public void finishInput();
+    method public void toggleSoftInput(int, int);
+    method public void updateCursor(android.graphics.Rect);
+    method public void updateCursorAnchorInfo(android.view.inputmethod.CursorAnchorInfo);
+    method public void updateExtractedText(int, android.view.inputmethod.ExtractedText);
+    method public void updateSelection(int, int, int, int, int, int);
+    method public void viewClicked(boolean);
+  }
+
+  public static final class InputMethodService.Insets {
+    ctor public InputMethodService.Insets();
+    field public static final int TOUCHABLE_INSETS_CONTENT = 1; // 0x1
+    field public static final int TOUCHABLE_INSETS_FRAME = 0; // 0x0
+    field public static final int TOUCHABLE_INSETS_REGION = 3; // 0x3
+    field public static final int TOUCHABLE_INSETS_VISIBLE = 2; // 0x2
+    field public int contentTopInsets;
+    field public int touchableInsets;
+    field public final android.graphics.Region touchableRegion;
+    field public int visibleTopInsets;
+  }
+
+  @Deprecated public class Keyboard {
+    ctor @Deprecated public Keyboard(android.content.Context, int);
+    ctor @Deprecated public Keyboard(android.content.Context, @XmlRes int, int, int, int);
+    ctor @Deprecated public Keyboard(android.content.Context, @XmlRes int, int);
+    ctor @Deprecated public Keyboard(android.content.Context, int, CharSequence, int, int);
+    method @Deprecated protected android.inputmethodservice.Keyboard.Key createKeyFromXml(android.content.res.Resources, android.inputmethodservice.Keyboard.Row, int, int, android.content.res.XmlResourceParser);
+    method @Deprecated protected android.inputmethodservice.Keyboard.Row createRowFromXml(android.content.res.Resources, android.content.res.XmlResourceParser);
+    method @Deprecated public int getHeight();
+    method @Deprecated protected int getHorizontalGap();
+    method @Deprecated protected int getKeyHeight();
+    method @Deprecated protected int getKeyWidth();
+    method @Deprecated public java.util.List<android.inputmethodservice.Keyboard.Key> getKeys();
+    method @Deprecated public int getMinWidth();
+    method @Deprecated public java.util.List<android.inputmethodservice.Keyboard.Key> getModifierKeys();
+    method @Deprecated public int[] getNearestKeys(int, int);
+    method @Deprecated public int getShiftKeyIndex();
+    method @Deprecated protected int getVerticalGap();
+    method @Deprecated public boolean isShifted();
+    method @Deprecated protected void setHorizontalGap(int);
+    method @Deprecated protected void setKeyHeight(int);
+    method @Deprecated protected void setKeyWidth(int);
+    method @Deprecated public boolean setShifted(boolean);
+    method @Deprecated protected void setVerticalGap(int);
+    field @Deprecated public static final int EDGE_BOTTOM = 8; // 0x8
+    field @Deprecated public static final int EDGE_LEFT = 1; // 0x1
+    field @Deprecated public static final int EDGE_RIGHT = 2; // 0x2
+    field @Deprecated public static final int EDGE_TOP = 4; // 0x4
+    field @Deprecated public static final int KEYCODE_ALT = -6; // 0xfffffffa
+    field @Deprecated public static final int KEYCODE_CANCEL = -3; // 0xfffffffd
+    field @Deprecated public static final int KEYCODE_DELETE = -5; // 0xfffffffb
+    field @Deprecated public static final int KEYCODE_DONE = -4; // 0xfffffffc
+    field @Deprecated public static final int KEYCODE_MODE_CHANGE = -2; // 0xfffffffe
+    field @Deprecated public static final int KEYCODE_SHIFT = -1; // 0xffffffff
+  }
+
+  @Deprecated public static class Keyboard.Key {
+    ctor @Deprecated public Keyboard.Key(android.inputmethodservice.Keyboard.Row);
+    ctor @Deprecated public Keyboard.Key(android.content.res.Resources, android.inputmethodservice.Keyboard.Row, int, int, android.content.res.XmlResourceParser);
+    method @Deprecated public int[] getCurrentDrawableState();
+    method @Deprecated public boolean isInside(int, int);
+    method @Deprecated public void onPressed();
+    method @Deprecated public void onReleased(boolean);
+    method @Deprecated public int squaredDistanceFrom(int, int);
+    field @Deprecated public int[] codes;
+    field @Deprecated public int edgeFlags;
+    field @Deprecated public int gap;
+    field @Deprecated public int height;
+    field @Deprecated public android.graphics.drawable.Drawable icon;
+    field @Deprecated public android.graphics.drawable.Drawable iconPreview;
+    field @Deprecated public CharSequence label;
+    field @Deprecated public boolean modifier;
+    field @Deprecated public boolean on;
+    field @Deprecated public CharSequence popupCharacters;
+    field @Deprecated public int popupResId;
+    field @Deprecated public boolean pressed;
+    field @Deprecated public boolean repeatable;
+    field @Deprecated public boolean sticky;
+    field @Deprecated public CharSequence text;
+    field @Deprecated public int width;
+    field @Deprecated public int x;
+    field @Deprecated public int y;
+  }
+
+  @Deprecated public static class Keyboard.Row {
+    ctor @Deprecated public Keyboard.Row(android.inputmethodservice.Keyboard);
+    ctor @Deprecated public Keyboard.Row(android.content.res.Resources, android.inputmethodservice.Keyboard, android.content.res.XmlResourceParser);
+    field @Deprecated public int defaultHeight;
+    field @Deprecated public int defaultHorizontalGap;
+    field @Deprecated public int defaultWidth;
+    field @Deprecated public int mode;
+    field @Deprecated public int rowEdgeFlags;
+    field @Deprecated public int verticalGap;
+  }
+
+  @Deprecated public class KeyboardView extends android.view.View implements android.view.View.OnClickListener {
+    ctor @Deprecated public KeyboardView(android.content.Context, android.util.AttributeSet);
+    ctor @Deprecated public KeyboardView(android.content.Context, android.util.AttributeSet, int);
+    ctor @Deprecated public KeyboardView(android.content.Context, android.util.AttributeSet, int, int);
+    method @Deprecated public void closing();
+    method @Deprecated public android.inputmethodservice.Keyboard getKeyboard();
+    method @Deprecated protected android.inputmethodservice.KeyboardView.OnKeyboardActionListener getOnKeyboardActionListener();
+    method @Deprecated public boolean handleBack();
+    method @Deprecated public void invalidateAllKeys();
+    method @Deprecated public void invalidateKey(int);
+    method @Deprecated public boolean isPreviewEnabled();
+    method @Deprecated public boolean isProximityCorrectionEnabled();
+    method @Deprecated public boolean isShifted();
+    method public void onClick(android.view.View);
+    method @Deprecated public void onDetachedFromWindow();
+    method @Deprecated public void onDraw(android.graphics.Canvas);
+    method @Deprecated protected boolean onLongPress(android.inputmethodservice.Keyboard.Key);
+    method @Deprecated public void onMeasure(int, int);
+    method @Deprecated public void onSizeChanged(int, int, int, int);
+    method @Deprecated public void setKeyboard(android.inputmethodservice.Keyboard);
+    method @Deprecated public void setOnKeyboardActionListener(android.inputmethodservice.KeyboardView.OnKeyboardActionListener);
+    method @Deprecated public void setPopupOffset(int, int);
+    method @Deprecated public void setPopupParent(android.view.View);
+    method @Deprecated public void setPreviewEnabled(boolean);
+    method @Deprecated public void setProximityCorrectionEnabled(boolean);
+    method @Deprecated public boolean setShifted(boolean);
+    method @Deprecated public void setVerticalCorrection(int);
+    method @Deprecated protected void swipeDown();
+    method @Deprecated protected void swipeLeft();
+    method @Deprecated protected void swipeRight();
+    method @Deprecated protected void swipeUp();
+  }
+
+  @Deprecated public static interface KeyboardView.OnKeyboardActionListener {
+    method @Deprecated public void onKey(int, int[]);
+    method @Deprecated public void onPress(int);
+    method @Deprecated public void onRelease(int);
+    method @Deprecated public void onText(CharSequence);
+    method @Deprecated public void swipeDown();
+    method @Deprecated public void swipeLeft();
+    method @Deprecated public void swipeRight();
+    method @Deprecated public void swipeUp();
+  }
+
+}
+
+package android.location {
+
+  public class Address implements android.os.Parcelable {
+    ctor public Address(java.util.Locale);
+    method public void clearLatitude();
+    method public void clearLongitude();
+    method public int describeContents();
+    method public String getAddressLine(int);
+    method public String getAdminArea();
+    method public String getCountryCode();
+    method public String getCountryName();
+    method public android.os.Bundle getExtras();
+    method public String getFeatureName();
+    method public double getLatitude();
+    method public java.util.Locale getLocale();
+    method public String getLocality();
+    method public double getLongitude();
+    method public int getMaxAddressLineIndex();
+    method public String getPhone();
+    method public String getPostalCode();
+    method public String getPremises();
+    method public String getSubAdminArea();
+    method public String getSubLocality();
+    method public String getSubThoroughfare();
+    method public String getThoroughfare();
+    method public String getUrl();
+    method public boolean hasLatitude();
+    method public boolean hasLongitude();
+    method public void setAddressLine(int, String);
+    method public void setAdminArea(String);
+    method public void setCountryCode(String);
+    method public void setCountryName(String);
+    method public void setExtras(android.os.Bundle);
+    method public void setFeatureName(String);
+    method public void setLatitude(double);
+    method public void setLocality(String);
+    method public void setLongitude(double);
+    method public void setPhone(String);
+    method public void setPostalCode(String);
+    method public void setPremises(String);
+    method public void setSubAdminArea(String);
+    method public void setSubLocality(String);
+    method public void setSubThoroughfare(String);
+    method public void setThoroughfare(String);
+    method public void setUrl(String);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.location.Address> CREATOR;
+  }
+
+  public class Criteria implements android.os.Parcelable {
+    ctor public Criteria();
+    ctor public Criteria(android.location.Criteria);
+    method public int describeContents();
+    method public int getAccuracy();
+    method public int getBearingAccuracy();
+    method public int getHorizontalAccuracy();
+    method public int getPowerRequirement();
+    method public int getSpeedAccuracy();
+    method public int getVerticalAccuracy();
+    method public boolean isAltitudeRequired();
+    method public boolean isBearingRequired();
+    method public boolean isCostAllowed();
+    method public boolean isSpeedRequired();
+    method public void setAccuracy(int);
+    method public void setAltitudeRequired(boolean);
+    method public void setBearingAccuracy(int);
+    method public void setBearingRequired(boolean);
+    method public void setCostAllowed(boolean);
+    method public void setHorizontalAccuracy(int);
+    method public void setPowerRequirement(int);
+    method public void setSpeedAccuracy(int);
+    method public void setSpeedRequired(boolean);
+    method public void setVerticalAccuracy(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int ACCURACY_COARSE = 2; // 0x2
+    field public static final int ACCURACY_FINE = 1; // 0x1
+    field public static final int ACCURACY_HIGH = 3; // 0x3
+    field public static final int ACCURACY_LOW = 1; // 0x1
+    field public static final int ACCURACY_MEDIUM = 2; // 0x2
+    field @NonNull public static final android.os.Parcelable.Creator<android.location.Criteria> CREATOR;
+    field public static final int NO_REQUIREMENT = 0; // 0x0
+    field public static final int POWER_HIGH = 3; // 0x3
+    field public static final int POWER_LOW = 1; // 0x1
+    field public static final int POWER_MEDIUM = 2; // 0x2
+  }
+
+  public final class Geocoder {
+    ctor public Geocoder(android.content.Context, java.util.Locale);
+    ctor public Geocoder(android.content.Context);
+    method public java.util.List<android.location.Address> getFromLocation(double, double, int) throws java.io.IOException;
+    method public java.util.List<android.location.Address> getFromLocationName(String, int) throws java.io.IOException;
+    method public java.util.List<android.location.Address> getFromLocationName(String, int, double, double, double, double) throws java.io.IOException;
+    method public static boolean isPresent();
+  }
+
+  public final class GnssAntennaInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method @FloatRange(from=0.0f) public double getCarrierFrequencyMHz();
+    method @NonNull public android.location.GnssAntennaInfo.PhaseCenterOffset getPhaseCenterOffset();
+    method @Nullable public android.location.GnssAntennaInfo.SphericalCorrections getPhaseCenterVariationCorrections();
+    method @Nullable public android.location.GnssAntennaInfo.SphericalCorrections getSignalGainCorrections();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssAntennaInfo> CREATOR;
+  }
+
+  public static class GnssAntennaInfo.Builder {
+    ctor public GnssAntennaInfo.Builder();
+    method @NonNull public android.location.GnssAntennaInfo build();
+    method @NonNull public android.location.GnssAntennaInfo.Builder setCarrierFrequencyMHz(@FloatRange(from=0.0f) double);
+    method @NonNull public android.location.GnssAntennaInfo.Builder setPhaseCenterOffset(@NonNull android.location.GnssAntennaInfo.PhaseCenterOffset);
+    method @NonNull public android.location.GnssAntennaInfo.Builder setPhaseCenterVariationCorrections(@Nullable android.location.GnssAntennaInfo.SphericalCorrections);
+    method @NonNull public android.location.GnssAntennaInfo.Builder setSignalGainCorrections(@Nullable android.location.GnssAntennaInfo.SphericalCorrections);
+  }
+
+  public static interface GnssAntennaInfo.Listener {
+    method public void onGnssAntennaInfoReceived(@NonNull java.util.List<android.location.GnssAntennaInfo>);
+  }
+
+  public static final class GnssAntennaInfo.PhaseCenterOffset implements android.os.Parcelable {
+    ctor public GnssAntennaInfo.PhaseCenterOffset(double, double, double, double, double, double);
+    method public int describeContents();
+    method @FloatRange public double getXOffsetMm();
+    method @FloatRange public double getXOffsetUncertaintyMm();
+    method @FloatRange public double getYOffsetMm();
+    method @FloatRange public double getYOffsetUncertaintyMm();
+    method @FloatRange public double getZOffsetMm();
+    method @FloatRange public double getZOffsetUncertaintyMm();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssAntennaInfo.PhaseCenterOffset> CREATOR;
+  }
+
+  public static final class GnssAntennaInfo.SphericalCorrections implements android.os.Parcelable {
+    ctor public GnssAntennaInfo.SphericalCorrections(@NonNull double[][], @NonNull double[][]);
+    method public int describeContents();
+    method @NonNull public double[][] getCorrectionUncertaintiesArray();
+    method @NonNull public double[][] getCorrectionsArray();
+    method @FloatRange(from=0.0f, to=180.0f) public double getDeltaPhi();
+    method @FloatRange(from=0.0f, to=360.0f) public double getDeltaTheta();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssAntennaInfo.SphericalCorrections> CREATOR;
+  }
+
+  public final class GnssCapabilities {
+    method public boolean hasGnssAntennaInfo();
+  }
+
+  public final class GnssClock implements android.os.Parcelable {
+    method public int describeContents();
+    method public double getBiasNanos();
+    method @FloatRange(from=0.0f) public double getBiasUncertaintyNanos();
+    method public double getDriftNanosPerSecond();
+    method @FloatRange(from=0.0f) public double getDriftUncertaintyNanosPerSecond();
+    method public long getElapsedRealtimeNanos();
+    method @FloatRange(from=0.0f) public double getElapsedRealtimeUncertaintyNanos();
+    method public long getFullBiasNanos();
+    method public int getHardwareClockDiscontinuityCount();
+    method public int getLeapSecond();
+    method @FloatRange(from=0.0) public double getReferenceCarrierFrequencyHzForIsb();
+    method @NonNull public String getReferenceCodeTypeForIsb();
+    method public int getReferenceConstellationTypeForIsb();
+    method public long getTimeNanos();
+    method @FloatRange(from=0.0f) public double getTimeUncertaintyNanos();
+    method public boolean hasBiasNanos();
+    method public boolean hasBiasUncertaintyNanos();
+    method public boolean hasDriftNanosPerSecond();
+    method public boolean hasDriftUncertaintyNanosPerSecond();
+    method public boolean hasElapsedRealtimeNanos();
+    method public boolean hasElapsedRealtimeUncertaintyNanos();
+    method public boolean hasFullBiasNanos();
+    method public boolean hasLeapSecond();
+    method public boolean hasReferenceCarrierFrequencyHzForIsb();
+    method public boolean hasReferenceCodeTypeForIsb();
+    method public boolean hasReferenceConstellationTypeForIsb();
+    method public boolean hasTimeUncertaintyNanos();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssClock> CREATOR;
+  }
+
+  public final class GnssMeasurement implements android.os.Parcelable {
+    method public int describeContents();
+    method public double getAccumulatedDeltaRangeMeters();
+    method public int getAccumulatedDeltaRangeState();
+    method public double getAccumulatedDeltaRangeUncertaintyMeters();
+    method public double getAutomaticGainControlLevelDb();
+    method @FloatRange(from=0, to=63) public double getBasebandCn0DbHz();
+    method @Deprecated public long getCarrierCycles();
+    method public float getCarrierFrequencyHz();
+    method @Deprecated public double getCarrierPhase();
+    method @Deprecated public double getCarrierPhaseUncertainty();
+    method @FloatRange(from=0, to=63) public double getCn0DbHz();
+    method @NonNull public String getCodeType();
+    method public int getConstellationType();
+    method public double getFullInterSignalBiasNanos();
+    method @FloatRange(from=0.0) public double getFullInterSignalBiasUncertaintyNanos();
+    method public int getMultipathIndicator();
+    method public double getPseudorangeRateMetersPerSecond();
+    method public double getPseudorangeRateUncertaintyMetersPerSecond();
+    method public long getReceivedSvTimeNanos();
+    method public long getReceivedSvTimeUncertaintyNanos();
+    method public double getSatelliteInterSignalBiasNanos();
+    method @FloatRange(from=0.0) public double getSatelliteInterSignalBiasUncertaintyNanos();
+    method public double getSnrInDb();
+    method public int getState();
+    method public int getSvid();
+    method public double getTimeOffsetNanos();
+    method public boolean hasAutomaticGainControlLevelDb();
+    method public boolean hasBasebandCn0DbHz();
+    method @Deprecated public boolean hasCarrierCycles();
+    method public boolean hasCarrierFrequencyHz();
+    method @Deprecated public boolean hasCarrierPhase();
+    method @Deprecated public boolean hasCarrierPhaseUncertainty();
+    method public boolean hasCodeType();
+    method public boolean hasFullInterSignalBiasNanos();
+    method public boolean hasFullInterSignalBiasUncertaintyNanos();
+    method public boolean hasSatelliteInterSignalBiasNanos();
+    method public boolean hasSatelliteInterSignalBiasUncertaintyNanos();
+    method public boolean hasSnrInDb();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int ADR_STATE_CYCLE_SLIP = 4; // 0x4
+    field public static final int ADR_STATE_HALF_CYCLE_REPORTED = 16; // 0x10
+    field public static final int ADR_STATE_HALF_CYCLE_RESOLVED = 8; // 0x8
+    field public static final int ADR_STATE_RESET = 2; // 0x2
+    field public static final int ADR_STATE_UNKNOWN = 0; // 0x0
+    field public static final int ADR_STATE_VALID = 1; // 0x1
+    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssMeasurement> CREATOR;
+    field public static final int MULTIPATH_INDICATOR_DETECTED = 1; // 0x1
+    field public static final int MULTIPATH_INDICATOR_NOT_DETECTED = 2; // 0x2
+    field public static final int MULTIPATH_INDICATOR_UNKNOWN = 0; // 0x0
+    field public static final int STATE_2ND_CODE_LOCK = 65536; // 0x10000
+    field public static final int STATE_BDS_D2_BIT_SYNC = 256; // 0x100
+    field public static final int STATE_BDS_D2_SUBFRAME_SYNC = 512; // 0x200
+    field public static final int STATE_BIT_SYNC = 2; // 0x2
+    field public static final int STATE_CODE_LOCK = 1; // 0x1
+    field public static final int STATE_GAL_E1BC_CODE_LOCK = 1024; // 0x400
+    field public static final int STATE_GAL_E1B_PAGE_SYNC = 4096; // 0x1000
+    field public static final int STATE_GAL_E1C_2ND_CODE_LOCK = 2048; // 0x800
+    field public static final int STATE_GLO_STRING_SYNC = 64; // 0x40
+    field public static final int STATE_GLO_TOD_DECODED = 128; // 0x80
+    field public static final int STATE_GLO_TOD_KNOWN = 32768; // 0x8000
+    field public static final int STATE_MSEC_AMBIGUOUS = 16; // 0x10
+    field public static final int STATE_SBAS_SYNC = 8192; // 0x2000
+    field public static final int STATE_SUBFRAME_SYNC = 4; // 0x4
+    field public static final int STATE_SYMBOL_SYNC = 32; // 0x20
+    field public static final int STATE_TOW_DECODED = 8; // 0x8
+    field public static final int STATE_TOW_KNOWN = 16384; // 0x4000
+    field public static final int STATE_UNKNOWN = 0; // 0x0
+  }
+
+  public final class GnssMeasurementsEvent implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public android.location.GnssClock getClock();
+    method @NonNull public java.util.Collection<android.location.GnssMeasurement> getMeasurements();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssMeasurementsEvent> CREATOR;
+  }
+
+  public abstract static class GnssMeasurementsEvent.Callback {
+    ctor public GnssMeasurementsEvent.Callback();
+    method public void onGnssMeasurementsReceived(android.location.GnssMeasurementsEvent);
+    method public void onStatusChanged(int);
+    field public static final int STATUS_LOCATION_DISABLED = 2; // 0x2
+    field public static final int STATUS_NOT_ALLOWED = 3; // 0x3
+    field public static final int STATUS_NOT_SUPPORTED = 0; // 0x0
+    field public static final int STATUS_READY = 1; // 0x1
+  }
+
+  public final class GnssNavigationMessage implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public byte[] getData();
+    method public int getMessageId();
+    method public int getStatus();
+    method public int getSubmessageId();
+    method public int getSvid();
+    method public int getType();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssNavigationMessage> CREATOR;
+    field public static final int STATUS_PARITY_PASSED = 1; // 0x1
+    field public static final int STATUS_PARITY_REBUILT = 2; // 0x2
+    field public static final int STATUS_UNKNOWN = 0; // 0x0
+    field public static final int TYPE_BDS_CNAV1 = 1283; // 0x503
+    field public static final int TYPE_BDS_CNAV2 = 1284; // 0x504
+    field public static final int TYPE_BDS_D1 = 1281; // 0x501
+    field public static final int TYPE_BDS_D2 = 1282; // 0x502
+    field public static final int TYPE_GAL_F = 1538; // 0x602
+    field public static final int TYPE_GAL_I = 1537; // 0x601
+    field public static final int TYPE_GLO_L1CA = 769; // 0x301
+    field public static final int TYPE_GPS_CNAV2 = 260; // 0x104
+    field public static final int TYPE_GPS_L1CA = 257; // 0x101
+    field public static final int TYPE_GPS_L2CNAV = 258; // 0x102
+    field public static final int TYPE_GPS_L5CNAV = 259; // 0x103
+    field public static final int TYPE_IRN_L5CA = 1793; // 0x701
+    field public static final int TYPE_QZS_L1CA = 1025; // 0x401
+    field public static final int TYPE_SBS = 513; // 0x201
+    field public static final int TYPE_UNKNOWN = 0; // 0x0
+  }
+
+  public abstract static class GnssNavigationMessage.Callback {
+    ctor public GnssNavigationMessage.Callback();
+    method public void onGnssNavigationMessageReceived(android.location.GnssNavigationMessage);
+    method public void onStatusChanged(int);
+    field public static final int STATUS_LOCATION_DISABLED = 2; // 0x2
+    field public static final int STATUS_NOT_SUPPORTED = 0; // 0x0
+    field public static final int STATUS_READY = 1; // 0x1
+  }
+
+  public final class GnssStatus {
+    method @FloatRange(from=0, to=360) public float getAzimuthDegrees(@IntRange(from=0) int);
+    method @FloatRange(from=0, to=63) public float getBasebandCn0DbHz(@IntRange(from=0) int);
+    method @FloatRange(from=0) public float getCarrierFrequencyHz(@IntRange(from=0) int);
+    method @FloatRange(from=0, to=63) public float getCn0DbHz(@IntRange(from=0) int);
+    method public int getConstellationType(@IntRange(from=0) int);
+    method @FloatRange(from=0xffffffa6, to=90) public float getElevationDegrees(@IntRange(from=0) int);
+    method @IntRange(from=0) public int getSatelliteCount();
+    method @IntRange(from=1, to=200) public int getSvid(@IntRange(from=0) int);
+    method public boolean hasAlmanacData(@IntRange(from=0) int);
+    method public boolean hasBasebandCn0DbHz(@IntRange(from=0) int);
+    method public boolean hasCarrierFrequencyHz(@IntRange(from=0) int);
+    method public boolean hasEphemerisData(@IntRange(from=0) int);
+    method public boolean usedInFix(@IntRange(from=0) int);
+    field public static final int CONSTELLATION_BEIDOU = 5; // 0x5
+    field public static final int CONSTELLATION_GALILEO = 6; // 0x6
+    field public static final int CONSTELLATION_GLONASS = 3; // 0x3
+    field public static final int CONSTELLATION_GPS = 1; // 0x1
+    field public static final int CONSTELLATION_IRNSS = 7; // 0x7
+    field public static final int CONSTELLATION_QZSS = 4; // 0x4
+    field public static final int CONSTELLATION_SBAS = 2; // 0x2
+    field public static final int CONSTELLATION_UNKNOWN = 0; // 0x0
+  }
+
+  public static final class GnssStatus.Builder {
+    ctor public GnssStatus.Builder();
+    method @NonNull public android.location.GnssStatus.Builder addSatellite(int, @IntRange(from=1, to=200) int, @FloatRange(from=0, to=63) float, @FloatRange(from=0xffffffa6, to=90) float, @FloatRange(from=0, to=360) float, boolean, boolean, boolean, boolean, @FloatRange(from=0) float, boolean, @FloatRange(from=0, to=63) float);
+    method @NonNull public android.location.GnssStatus build();
+    method @NonNull public android.location.GnssStatus.Builder clearSatellites();
+  }
+
+  public abstract static class GnssStatus.Callback {
+    ctor public GnssStatus.Callback();
+    method public void onFirstFix(int);
+    method public void onSatelliteStatusChanged(@NonNull android.location.GnssStatus);
+    method public void onStarted();
+    method public void onStopped();
+  }
+
+  @Deprecated public final class GpsSatellite {
+    method @Deprecated public float getAzimuth();
+    method @Deprecated public float getElevation();
+    method @Deprecated public int getPrn();
+    method @Deprecated public float getSnr();
+    method @Deprecated public boolean hasAlmanac();
+    method @Deprecated public boolean hasEphemeris();
+    method @Deprecated public boolean usedInFix();
+  }
+
+  @Deprecated public final class GpsStatus {
+    method @Deprecated @NonNull public static android.location.GpsStatus create(@NonNull android.location.GnssStatus, int);
+    method @Deprecated public int getMaxSatellites();
+    method @Deprecated public Iterable<android.location.GpsSatellite> getSatellites();
+    method @Deprecated public int getTimeToFirstFix();
+    field @Deprecated public static final int GPS_EVENT_FIRST_FIX = 3; // 0x3
+    field @Deprecated public static final int GPS_EVENT_SATELLITE_STATUS = 4; // 0x4
+    field @Deprecated public static final int GPS_EVENT_STARTED = 1; // 0x1
+    field @Deprecated public static final int GPS_EVENT_STOPPED = 2; // 0x2
+  }
+
+  @Deprecated public static interface GpsStatus.Listener {
+    method @Deprecated public void onGpsStatusChanged(int);
+  }
+
+  @Deprecated public static interface GpsStatus.NmeaListener {
+    method @Deprecated public void onNmeaReceived(long, String);
+  }
+
+  public class Location implements android.os.Parcelable {
+    ctor public Location(String);
+    ctor public Location(android.location.Location);
+    method public float bearingTo(android.location.Location);
+    method public static String convert(double, int);
+    method public static double convert(String);
+    method public int describeContents();
+    method public static void distanceBetween(double, double, double, double, float[]);
+    method public float distanceTo(android.location.Location);
+    method public void dump(android.util.Printer, String);
+    method public float getAccuracy();
+    method public double getAltitude();
+    method public float getBearing();
+    method public float getBearingAccuracyDegrees();
+    method public long getElapsedRealtimeNanos();
+    method public double getElapsedRealtimeUncertaintyNanos();
+    method public android.os.Bundle getExtras();
+    method public double getLatitude();
+    method public double getLongitude();
+    method public String getProvider();
+    method public float getSpeed();
+    method public float getSpeedAccuracyMetersPerSecond();
+    method public long getTime();
+    method public float getVerticalAccuracyMeters();
+    method public boolean hasAccuracy();
+    method public boolean hasAltitude();
+    method public boolean hasBearing();
+    method public boolean hasBearingAccuracy();
+    method public boolean hasElapsedRealtimeUncertaintyNanos();
+    method public boolean hasSpeed();
+    method public boolean hasSpeedAccuracy();
+    method public boolean hasVerticalAccuracy();
+    method public boolean isFromMockProvider();
+    method @Deprecated public void removeAccuracy();
+    method @Deprecated public void removeAltitude();
+    method @Deprecated public void removeBearing();
+    method @Deprecated public void removeSpeed();
+    method public void reset();
+    method public void set(android.location.Location);
+    method public void setAccuracy(float);
+    method public void setAltitude(double);
+    method public void setBearing(float);
+    method public void setBearingAccuracyDegrees(float);
+    method public void setElapsedRealtimeNanos(long);
+    method public void setElapsedRealtimeUncertaintyNanos(double);
+    method public void setExtras(android.os.Bundle);
+    method public void setLatitude(double);
+    method public void setLongitude(double);
+    method public void setProvider(String);
+    method public void setSpeed(float);
+    method public void setSpeedAccuracyMetersPerSecond(float);
+    method public void setTime(long);
+    method public void setVerticalAccuracyMeters(float);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.location.Location> CREATOR;
+    field public static final int FORMAT_DEGREES = 0; // 0x0
+    field public static final int FORMAT_MINUTES = 1; // 0x1
+    field public static final int FORMAT_SECONDS = 2; // 0x2
+  }
+
+  public interface LocationListener {
+    method public void onLocationChanged(@NonNull android.location.Location);
+    method public default void onProviderDisabled(@NonNull String);
+    method public default void onProviderEnabled(@NonNull String);
+    method @Deprecated public default void onStatusChanged(String, int, android.os.Bundle);
+  }
+
+  public class LocationManager {
+    method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addGpsStatusListener(android.location.GpsStatus.Listener);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(@NonNull android.location.GpsStatus.NmeaListener);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(@NonNull android.location.OnNmeaMessageListener);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(@NonNull android.location.OnNmeaMessageListener, @Nullable android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(@NonNull java.util.concurrent.Executor, @NonNull android.location.OnNmeaMessageListener);
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void addProximityAlert(double, double, float, long, @NonNull android.app.PendingIntent);
+    method public void addTestProvider(@NonNull String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int);
+    method @Deprecated public void clearTestProviderEnabled(@NonNull String);
+    method @Deprecated public void clearTestProviderLocation(@NonNull String);
+    method @Deprecated public void clearTestProviderStatus(@NonNull String);
+    method @NonNull public java.util.List<java.lang.String> getAllProviders();
+    method @Nullable public String getBestProvider(@NonNull android.location.Criteria, boolean);
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void getCurrentLocation(@NonNull String, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.location.Location>);
+    method @NonNull public android.location.GnssCapabilities getGnssCapabilities();
+    method @Nullable public String getGnssHardwareModelName();
+    method public int getGnssYearOfHardware();
+    method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public android.location.GpsStatus getGpsStatus(@Nullable android.location.GpsStatus);
+    method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public android.location.Location getLastKnownLocation(@NonNull String);
+    method @Nullable public android.location.LocationProvider getProvider(@NonNull String);
+    method @NonNull public java.util.List<java.lang.String> getProviders(boolean);
+    method @NonNull public java.util.List<java.lang.String> getProviders(@NonNull android.location.Criteria, boolean);
+    method public boolean isLocationEnabled();
+    method public boolean isProviderEnabled(@NonNull String);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerAntennaInfoListener(@NonNull java.util.concurrent.Executor, @NonNull android.location.GnssAntennaInfo.Listener);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(@NonNull android.location.GnssMeasurementsEvent.Callback);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(@NonNull android.location.GnssMeasurementsEvent.Callback, @Nullable android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(@NonNull java.util.concurrent.Executor, @NonNull android.location.GnssMeasurementsEvent.Callback);
+    method @Deprecated public boolean registerGnssNavigationMessageCallback(@NonNull android.location.GnssNavigationMessage.Callback);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssNavigationMessageCallback(@NonNull android.location.GnssNavigationMessage.Callback, @Nullable android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssNavigationMessageCallback(@NonNull java.util.concurrent.Executor, @NonNull android.location.GnssNavigationMessage.Callback);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssStatusCallback(@NonNull android.location.GnssStatus.Callback);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssStatusCallback(@NonNull android.location.GnssStatus.Callback, @Nullable android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssStatusCallback(@NonNull java.util.concurrent.Executor, @NonNull android.location.GnssStatus.Callback);
+    method @Deprecated public void removeGpsStatusListener(android.location.GpsStatus.Listener);
+    method @Deprecated public void removeNmeaListener(@NonNull android.location.GpsStatus.NmeaListener);
+    method public void removeNmeaListener(@NonNull android.location.OnNmeaMessageListener);
+    method @RequiresPermission(anyOf={"android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION"}, apis="..22") public void removeProximityAlert(@NonNull android.app.PendingIntent);
+    method public void removeTestProvider(@NonNull String);
+    method @RequiresPermission(anyOf={"android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION"}, apis="..22") public void removeUpdates(@NonNull android.location.LocationListener);
+    method public void removeUpdates(@NonNull android.app.PendingIntent);
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull String, long, float, @NonNull android.location.LocationListener);
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull String, long, float, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull String, long, float, @NonNull java.util.concurrent.Executor, @NonNull android.location.LocationListener);
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(long, float, @NonNull android.location.Criteria, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(long, float, @NonNull android.location.Criteria, @NonNull java.util.concurrent.Executor, @NonNull android.location.LocationListener);
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull String, long, float, @NonNull android.app.PendingIntent);
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(long, float, @NonNull android.location.Criteria, @NonNull android.app.PendingIntent);
+    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(@NonNull String, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
+    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(@NonNull android.location.Criteria, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
+    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(@NonNull String, @NonNull android.app.PendingIntent);
+    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(@NonNull android.location.Criteria, @NonNull android.app.PendingIntent);
+    method public boolean sendExtraCommand(@NonNull String, @NonNull String, @Nullable android.os.Bundle);
+    method public void setTestProviderEnabled(@NonNull String, boolean);
+    method public void setTestProviderLocation(@NonNull String, @NonNull android.location.Location);
+    method @Deprecated public void setTestProviderStatus(@NonNull String, int, @Nullable android.os.Bundle, long);
+    method public void unregisterAntennaInfoListener(@NonNull android.location.GnssAntennaInfo.Listener);
+    method public void unregisterGnssMeasurementsCallback(@NonNull android.location.GnssMeasurementsEvent.Callback);
+    method public void unregisterGnssNavigationMessageCallback(@NonNull android.location.GnssNavigationMessage.Callback);
+    method public void unregisterGnssStatusCallback(@NonNull android.location.GnssStatus.Callback);
+    field public static final String EXTRA_LOCATION_ENABLED = "android.location.extra.LOCATION_ENABLED";
+    field public static final String EXTRA_PROVIDER_ENABLED = "android.location.extra.PROVIDER_ENABLED";
+    field public static final String EXTRA_PROVIDER_NAME = "android.location.extra.PROVIDER_NAME";
+    field public static final String GPS_PROVIDER = "gps";
+    field public static final String KEY_LOCATION_CHANGED = "location";
+    field public static final String KEY_PROVIDER_ENABLED = "providerEnabled";
+    field public static final String KEY_PROXIMITY_ENTERING = "entering";
+    field @Deprecated public static final String KEY_STATUS_CHANGED = "status";
+    field public static final String MODE_CHANGED_ACTION = "android.location.MODE_CHANGED";
+    field public static final String NETWORK_PROVIDER = "network";
+    field public static final String PASSIVE_PROVIDER = "passive";
+    field public static final String PROVIDERS_CHANGED_ACTION = "android.location.PROVIDERS_CHANGED";
+  }
+
+  public class LocationProvider {
+    method public int getAccuracy();
+    method public String getName();
+    method public int getPowerRequirement();
+    method public boolean hasMonetaryCost();
+    method public boolean meetsCriteria(android.location.Criteria);
+    method public boolean requiresCell();
+    method public boolean requiresNetwork();
+    method public boolean requiresSatellite();
+    method public boolean supportsAltitude();
+    method public boolean supportsBearing();
+    method public boolean supportsSpeed();
+    field @Deprecated public static final int AVAILABLE = 2; // 0x2
+    field @Deprecated public static final int OUT_OF_SERVICE = 0; // 0x0
+    field @Deprecated public static final int TEMPORARILY_UNAVAILABLE = 1; // 0x1
+  }
+
+  public interface OnNmeaMessageListener {
+    method public void onNmeaMessage(String, long);
+  }
+
+  public abstract class SettingInjectorService extends android.app.Service {
+    ctor public SettingInjectorService(String);
+    method public final android.os.IBinder onBind(android.content.Intent);
+    method protected abstract boolean onGetEnabled();
+    method protected abstract String onGetSummary();
+    method public final void onStart(android.content.Intent, int);
+    method public final int onStartCommand(android.content.Intent, int, int);
+    method public static final void refreshSettings(@NonNull android.content.Context);
+    field public static final String ACTION_INJECTED_SETTING_CHANGED = "android.location.InjectedSettingChanged";
+    field public static final String ACTION_SERVICE_INTENT = "android.location.SettingInjectorService";
+    field public static final String ATTRIBUTES_NAME = "injected-location-setting";
+    field public static final String META_DATA_NAME = "android.location.SettingInjectorService";
+  }
+
+}
+
+package android.media {
+
+  public class AsyncPlayer {
+    ctor public AsyncPlayer(String);
+    method @Deprecated public void play(android.content.Context, android.net.Uri, boolean, int);
+    method public void play(@NonNull android.content.Context, @NonNull android.net.Uri, boolean, @NonNull android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
+    method public void stop();
+  }
+
+  public final class AudioAttributes implements android.os.Parcelable {
+    method public boolean areHapticChannelsMuted();
+    method public int describeContents();
+    method public int getAllowedCapturePolicy();
+    method public int getContentType();
+    method public int getFlags();
+    method public int getUsage();
+    method public int getVolumeControlStream();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int ALLOW_CAPTURE_BY_ALL = 1; // 0x1
+    field public static final int ALLOW_CAPTURE_BY_NONE = 3; // 0x3
+    field public static final int ALLOW_CAPTURE_BY_SYSTEM = 2; // 0x2
+    field public static final int CONTENT_TYPE_MOVIE = 3; // 0x3
+    field public static final int CONTENT_TYPE_MUSIC = 2; // 0x2
+    field public static final int CONTENT_TYPE_SONIFICATION = 4; // 0x4
+    field public static final int CONTENT_TYPE_SPEECH = 1; // 0x1
+    field public static final int CONTENT_TYPE_UNKNOWN = 0; // 0x0
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.AudioAttributes> CREATOR;
+    field public static final int FLAG_AUDIBILITY_ENFORCED = 1; // 0x1
+    field public static final int FLAG_HW_AV_SYNC = 16; // 0x10
+    field @Deprecated public static final int FLAG_LOW_LATENCY = 256; // 0x100
+    field public static final int USAGE_ALARM = 4; // 0x4
+    field public static final int USAGE_ASSISTANCE_ACCESSIBILITY = 11; // 0xb
+    field public static final int USAGE_ASSISTANCE_NAVIGATION_GUIDANCE = 12; // 0xc
+    field public static final int USAGE_ASSISTANCE_SONIFICATION = 13; // 0xd
+    field public static final int USAGE_ASSISTANT = 16; // 0x10
+    field public static final int USAGE_GAME = 14; // 0xe
+    field public static final int USAGE_MEDIA = 1; // 0x1
+    field public static final int USAGE_NOTIFICATION = 5; // 0x5
+    field public static final int USAGE_NOTIFICATION_COMMUNICATION_DELAYED = 9; // 0x9
+    field public static final int USAGE_NOTIFICATION_COMMUNICATION_INSTANT = 8; // 0x8
+    field public static final int USAGE_NOTIFICATION_COMMUNICATION_REQUEST = 7; // 0x7
+    field public static final int USAGE_NOTIFICATION_EVENT = 10; // 0xa
+    field public static final int USAGE_NOTIFICATION_RINGTONE = 6; // 0x6
+    field public static final int USAGE_UNKNOWN = 0; // 0x0
+    field public static final int USAGE_VOICE_COMMUNICATION = 2; // 0x2
+    field public static final int USAGE_VOICE_COMMUNICATION_SIGNALLING = 3; // 0x3
+  }
+
+  public static class AudioAttributes.Builder {
+    ctor public AudioAttributes.Builder();
+    ctor public AudioAttributes.Builder(android.media.AudioAttributes);
+    method public android.media.AudioAttributes build();
+    method @NonNull public android.media.AudioAttributes.Builder setAllowedCapturePolicy(int);
+    method public android.media.AudioAttributes.Builder setContentType(int);
+    method public android.media.AudioAttributes.Builder setFlags(int);
+    method @NonNull public android.media.AudioAttributes.Builder setHapticChannelsMuted(boolean);
+    method public android.media.AudioAttributes.Builder setLegacyStreamType(int);
+    method public android.media.AudioAttributes.Builder setUsage(int);
+  }
+
+  public abstract class AudioDeviceCallback {
+    ctor public AudioDeviceCallback();
+    method public void onAudioDevicesAdded(android.media.AudioDeviceInfo[]);
+    method public void onAudioDevicesRemoved(android.media.AudioDeviceInfo[]);
+  }
+
+  public final class AudioDeviceInfo {
+    method @NonNull public String getAddress();
+    method @NonNull public int[] getChannelCounts();
+    method @NonNull public int[] getChannelIndexMasks();
+    method @NonNull public int[] getChannelMasks();
+    method @NonNull public int[] getEncapsulationMetadataTypes();
+    method @NonNull public int[] getEncapsulationModes();
+    method @NonNull public int[] getEncodings();
+    method public int getId();
+    method public CharSequence getProductName();
+    method @NonNull public int[] getSampleRates();
+    method public int getType();
+    method public boolean isSink();
+    method public boolean isSource();
+    field public static final int TYPE_AUX_LINE = 19; // 0x13
+    field public static final int TYPE_BLE_HEADSET = 26; // 0x1a
+    field public static final int TYPE_BLE_SPEAKER = 27; // 0x1b
+    field public static final int TYPE_BLUETOOTH_A2DP = 8; // 0x8
+    field public static final int TYPE_BLUETOOTH_SCO = 7; // 0x7
+    field public static final int TYPE_BUILTIN_EARPIECE = 1; // 0x1
+    field public static final int TYPE_BUILTIN_MIC = 15; // 0xf
+    field public static final int TYPE_BUILTIN_SPEAKER = 2; // 0x2
+    field public static final int TYPE_BUILTIN_SPEAKER_SAFE = 24; // 0x18
+    field public static final int TYPE_BUS = 21; // 0x15
+    field public static final int TYPE_DOCK = 13; // 0xd
+    field public static final int TYPE_FM = 14; // 0xe
+    field public static final int TYPE_FM_TUNER = 16; // 0x10
+    field public static final int TYPE_HDMI = 9; // 0x9
+    field public static final int TYPE_HDMI_ARC = 10; // 0xa
+    field public static final int TYPE_HEARING_AID = 23; // 0x17
+    field public static final int TYPE_IP = 20; // 0x14
+    field public static final int TYPE_LINE_ANALOG = 5; // 0x5
+    field public static final int TYPE_LINE_DIGITAL = 6; // 0x6
+    field public static final int TYPE_TELEPHONY = 18; // 0x12
+    field public static final int TYPE_TV_TUNER = 17; // 0x11
+    field public static final int TYPE_UNKNOWN = 0; // 0x0
+    field public static final int TYPE_USB_ACCESSORY = 12; // 0xc
+    field public static final int TYPE_USB_DEVICE = 11; // 0xb
+    field public static final int TYPE_USB_HEADSET = 22; // 0x16
+    field public static final int TYPE_WIRED_HEADPHONES = 4; // 0x4
+    field public static final int TYPE_WIRED_HEADSET = 3; // 0x3
+  }
+
+  public final class AudioFocusRequest {
+    method public boolean acceptsDelayedFocusGain();
+    method @NonNull public android.media.AudioAttributes getAudioAttributes();
+    method public int getFocusGain();
+    method public boolean willPauseWhenDucked();
+  }
+
+  public static final class AudioFocusRequest.Builder {
+    ctor public AudioFocusRequest.Builder(int);
+    ctor public AudioFocusRequest.Builder(@NonNull android.media.AudioFocusRequest);
+    method public android.media.AudioFocusRequest build();
+    method @NonNull public android.media.AudioFocusRequest.Builder setAcceptsDelayedFocusGain(boolean);
+    method @NonNull public android.media.AudioFocusRequest.Builder setAudioAttributes(@NonNull android.media.AudioAttributes);
+    method @NonNull public android.media.AudioFocusRequest.Builder setFocusGain(int);
+    method @NonNull public android.media.AudioFocusRequest.Builder setForceDucking(boolean);
+    method @NonNull public android.media.AudioFocusRequest.Builder setOnAudioFocusChangeListener(@NonNull android.media.AudioManager.OnAudioFocusChangeListener);
+    method @NonNull public android.media.AudioFocusRequest.Builder setOnAudioFocusChangeListener(@NonNull android.media.AudioManager.OnAudioFocusChangeListener, @NonNull android.os.Handler);
+    method @NonNull public android.media.AudioFocusRequest.Builder setWillPauseWhenDucked(boolean);
+  }
+
+  public final class AudioFormat implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getChannelCount();
+    method public int getChannelIndexMask();
+    method public int getChannelMask();
+    method public int getEncoding();
+    method @IntRange(from=1) public int getFrameSizeInBytes();
+    method public int getSampleRate();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated public static final int CHANNEL_CONFIGURATION_DEFAULT = 1; // 0x1
+    field @Deprecated public static final int CHANNEL_CONFIGURATION_INVALID = 0; // 0x0
+    field @Deprecated public static final int CHANNEL_CONFIGURATION_MONO = 2; // 0x2
+    field @Deprecated public static final int CHANNEL_CONFIGURATION_STEREO = 3; // 0x3
+    field public static final int CHANNEL_INVALID = 0; // 0x0
+    field public static final int CHANNEL_IN_BACK = 32; // 0x20
+    field public static final int CHANNEL_IN_BACK_PROCESSED = 512; // 0x200
+    field public static final int CHANNEL_IN_DEFAULT = 1; // 0x1
+    field public static final int CHANNEL_IN_FRONT = 16; // 0x10
+    field public static final int CHANNEL_IN_FRONT_PROCESSED = 256; // 0x100
+    field public static final int CHANNEL_IN_LEFT = 4; // 0x4
+    field public static final int CHANNEL_IN_LEFT_PROCESSED = 64; // 0x40
+    field public static final int CHANNEL_IN_MONO = 16; // 0x10
+    field public static final int CHANNEL_IN_PRESSURE = 1024; // 0x400
+    field public static final int CHANNEL_IN_RIGHT = 8; // 0x8
+    field public static final int CHANNEL_IN_RIGHT_PROCESSED = 128; // 0x80
+    field public static final int CHANNEL_IN_STEREO = 12; // 0xc
+    field public static final int CHANNEL_IN_VOICE_DNLINK = 32768; // 0x8000
+    field public static final int CHANNEL_IN_VOICE_UPLINK = 16384; // 0x4000
+    field public static final int CHANNEL_IN_X_AXIS = 2048; // 0x800
+    field public static final int CHANNEL_IN_Y_AXIS = 4096; // 0x1000
+    field public static final int CHANNEL_IN_Z_AXIS = 8192; // 0x2000
+    field public static final int CHANNEL_OUT_5POINT1 = 252; // 0xfc
+    field @Deprecated public static final int CHANNEL_OUT_7POINT1 = 1020; // 0x3fc
+    field public static final int CHANNEL_OUT_7POINT1_SURROUND = 6396; // 0x18fc
+    field public static final int CHANNEL_OUT_BACK_CENTER = 1024; // 0x400
+    field public static final int CHANNEL_OUT_BACK_LEFT = 64; // 0x40
+    field public static final int CHANNEL_OUT_BACK_RIGHT = 128; // 0x80
+    field public static final int CHANNEL_OUT_DEFAULT = 1; // 0x1
+    field public static final int CHANNEL_OUT_FRONT_CENTER = 16; // 0x10
+    field public static final int CHANNEL_OUT_FRONT_LEFT = 4; // 0x4
+    field public static final int CHANNEL_OUT_FRONT_LEFT_OF_CENTER = 256; // 0x100
+    field public static final int CHANNEL_OUT_FRONT_RIGHT = 8; // 0x8
+    field public static final int CHANNEL_OUT_FRONT_RIGHT_OF_CENTER = 512; // 0x200
+    field public static final int CHANNEL_OUT_LOW_FREQUENCY = 32; // 0x20
+    field public static final int CHANNEL_OUT_MONO = 4; // 0x4
+    field public static final int CHANNEL_OUT_QUAD = 204; // 0xcc
+    field public static final int CHANNEL_OUT_SIDE_LEFT = 2048; // 0x800
+    field public static final int CHANNEL_OUT_SIDE_RIGHT = 4096; // 0x1000
+    field public static final int CHANNEL_OUT_STEREO = 12; // 0xc
+    field public static final int CHANNEL_OUT_SURROUND = 1052; // 0x41c
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.AudioFormat> CREATOR;
+    field public static final int ENCODING_AAC_ELD = 15; // 0xf
+    field public static final int ENCODING_AAC_HE_V1 = 11; // 0xb
+    field public static final int ENCODING_AAC_HE_V2 = 12; // 0xc
+    field public static final int ENCODING_AAC_LC = 10; // 0xa
+    field public static final int ENCODING_AAC_XHE = 16; // 0x10
+    field public static final int ENCODING_AC3 = 5; // 0x5
+    field public static final int ENCODING_AC4 = 17; // 0x11
+    field public static final int ENCODING_DEFAULT = 1; // 0x1
+    field public static final int ENCODING_DOLBY_MAT = 19; // 0x13
+    field public static final int ENCODING_DOLBY_TRUEHD = 14; // 0xe
+    field public static final int ENCODING_DTS = 7; // 0x7
+    field public static final int ENCODING_DTS_HD = 8; // 0x8
+    field public static final int ENCODING_E_AC3 = 6; // 0x6
+    field public static final int ENCODING_E_AC3_JOC = 18; // 0x12
+    field public static final int ENCODING_IEC61937 = 13; // 0xd
+    field public static final int ENCODING_INVALID = 0; // 0x0
+    field public static final int ENCODING_MP3 = 9; // 0x9
+    field public static final int ENCODING_OPUS = 20; // 0x14
+    field public static final int ENCODING_PCM_16BIT = 2; // 0x2
+    field public static final int ENCODING_PCM_8BIT = 3; // 0x3
+    field public static final int ENCODING_PCM_FLOAT = 4; // 0x4
+    field public static final int SAMPLE_RATE_UNSPECIFIED = 0; // 0x0
+  }
+
+  public static class AudioFormat.Builder {
+    ctor public AudioFormat.Builder();
+    ctor public AudioFormat.Builder(android.media.AudioFormat);
+    method public android.media.AudioFormat build();
+    method @NonNull public android.media.AudioFormat.Builder setChannelIndexMask(int);
+    method @NonNull public android.media.AudioFormat.Builder setChannelMask(int);
+    method public android.media.AudioFormat.Builder setEncoding(int) throws java.lang.IllegalArgumentException;
+    method public android.media.AudioFormat.Builder setSampleRate(int) throws java.lang.IllegalArgumentException;
+  }
+
+  public class AudioManager {
+    method @Deprecated public int abandonAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener);
+    method public int abandonAudioFocusRequest(@NonNull android.media.AudioFocusRequest);
+    method public void adjustStreamVolume(int, int, int);
+    method public void adjustSuggestedStreamVolume(int, int, int);
+    method public void adjustVolume(int, int);
+    method public void dispatchMediaKeyEvent(android.view.KeyEvent);
+    method public int generateAudioSessionId();
+    method @NonNull public java.util.List<android.media.AudioPlaybackConfiguration> getActivePlaybackConfigurations();
+    method @NonNull public java.util.List<android.media.AudioRecordingConfiguration> getActiveRecordingConfigurations();
+    method public int getAllowedCapturePolicy();
+    method public android.media.AudioDeviceInfo[] getDevices(int);
+    method public java.util.List<android.media.MicrophoneInfo> getMicrophones() throws java.io.IOException;
+    method public int getMode();
+    method public String getParameters(String);
+    method public String getProperty(String);
+    method public int getRingerMode();
+    method @Deprecated public int getRouting(int);
+    method public int getStreamMaxVolume(int);
+    method public int getStreamMinVolume(int);
+    method public int getStreamVolume(int);
+    method public float getStreamVolumeDb(int, int, int);
+    method @Deprecated public int getVibrateSetting(int);
+    method @Deprecated public boolean isBluetoothA2dpOn();
+    method public boolean isBluetoothScoAvailableOffCall();
+    method public boolean isBluetoothScoOn();
+    method public boolean isCallScreeningModeSupported();
+    method public static boolean isHapticPlaybackSupported();
+    method public boolean isMicrophoneMute();
+    method public boolean isMusicActive();
+    method public static boolean isOffloadedPlaybackSupported(@NonNull android.media.AudioFormat, @NonNull android.media.AudioAttributes);
+    method public boolean isSpeakerphoneOn();
+    method public boolean isStreamMute(int);
+    method public boolean isVolumeFixed();
+    method @Deprecated public boolean isWiredHeadsetOn();
+    method public void loadSoundEffects();
+    method public void playSoundEffect(int);
+    method public void playSoundEffect(int, float);
+    method public void registerAudioDeviceCallback(android.media.AudioDeviceCallback, @Nullable android.os.Handler);
+    method public void registerAudioPlaybackCallback(@NonNull android.media.AudioManager.AudioPlaybackCallback, @Nullable android.os.Handler);
+    method public void registerAudioRecordingCallback(@NonNull android.media.AudioManager.AudioRecordingCallback, @Nullable android.os.Handler);
+    method @Deprecated public void registerMediaButtonEventReceiver(android.content.ComponentName);
+    method @Deprecated public void registerMediaButtonEventReceiver(android.app.PendingIntent);
+    method @Deprecated public void registerRemoteControlClient(android.media.RemoteControlClient);
+    method @Deprecated public boolean registerRemoteController(android.media.RemoteController);
+    method @Deprecated public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, int, int);
+    method public int requestAudioFocus(@NonNull android.media.AudioFocusRequest);
+    method public void setAllowedCapturePolicy(int);
+    method @Deprecated public void setBluetoothA2dpOn(boolean);
+    method public void setBluetoothScoOn(boolean);
+    method public void setMicrophoneMute(boolean);
+    method public void setMode(int);
+    method public void setParameters(String);
+    method public void setRingerMode(int);
+    method @Deprecated public void setRouting(int, int, int);
+    method public void setSpeakerphoneOn(boolean);
+    method @Deprecated public void setStreamMute(int, boolean);
+    method @Deprecated public void setStreamSolo(int, boolean);
+    method public void setStreamVolume(int, int, int);
+    method @Deprecated public void setVibrateSetting(int, int);
+    method @Deprecated public void setWiredHeadsetOn(boolean);
+    method @Deprecated public boolean shouldVibrate(int);
+    method public void startBluetoothSco();
+    method public void stopBluetoothSco();
+    method public void unloadSoundEffects();
+    method public void unregisterAudioDeviceCallback(android.media.AudioDeviceCallback);
+    method public void unregisterAudioPlaybackCallback(@NonNull android.media.AudioManager.AudioPlaybackCallback);
+    method public void unregisterAudioRecordingCallback(@NonNull android.media.AudioManager.AudioRecordingCallback);
+    method @Deprecated public void unregisterMediaButtonEventReceiver(android.content.ComponentName);
+    method @Deprecated public void unregisterMediaButtonEventReceiver(android.app.PendingIntent);
+    method @Deprecated public void unregisterRemoteControlClient(android.media.RemoteControlClient);
+    method @Deprecated public void unregisterRemoteController(android.media.RemoteController);
+    field public static final String ACTION_AUDIO_BECOMING_NOISY = "android.media.AUDIO_BECOMING_NOISY";
+    field public static final String ACTION_HDMI_AUDIO_PLUG = "android.media.action.HDMI_AUDIO_PLUG";
+    field public static final String ACTION_HEADSET_PLUG = "android.intent.action.HEADSET_PLUG";
+    field public static final String ACTION_MICROPHONE_MUTE_CHANGED = "android.media.action.MICROPHONE_MUTE_CHANGED";
+    field @Deprecated public static final String ACTION_SCO_AUDIO_STATE_CHANGED = "android.media.SCO_AUDIO_STATE_CHANGED";
+    field public static final String ACTION_SCO_AUDIO_STATE_UPDATED = "android.media.ACTION_SCO_AUDIO_STATE_UPDATED";
+    field public static final String ACTION_SPEAKERPHONE_STATE_CHANGED = "android.media.action.SPEAKERPHONE_STATE_CHANGED";
+    field public static final int ADJUST_LOWER = -1; // 0xffffffff
+    field public static final int ADJUST_MUTE = -100; // 0xffffff9c
+    field public static final int ADJUST_RAISE = 1; // 0x1
+    field public static final int ADJUST_SAME = 0; // 0x0
+    field public static final int ADJUST_TOGGLE_MUTE = 101; // 0x65
+    field public static final int ADJUST_UNMUTE = 100; // 0x64
+    field public static final int AUDIOFOCUS_GAIN = 1; // 0x1
+    field public static final int AUDIOFOCUS_GAIN_TRANSIENT = 2; // 0x2
+    field public static final int AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE = 4; // 0x4
+    field public static final int AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK = 3; // 0x3
+    field public static final int AUDIOFOCUS_LOSS = -1; // 0xffffffff
+    field public static final int AUDIOFOCUS_LOSS_TRANSIENT = -2; // 0xfffffffe
+    field public static final int AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK = -3; // 0xfffffffd
+    field public static final int AUDIOFOCUS_NONE = 0; // 0x0
+    field public static final int AUDIOFOCUS_REQUEST_DELAYED = 2; // 0x2
+    field public static final int AUDIOFOCUS_REQUEST_FAILED = 0; // 0x0
+    field public static final int AUDIOFOCUS_REQUEST_GRANTED = 1; // 0x1
+    field public static final int AUDIO_SESSION_ID_GENERATE = 0; // 0x0
+    field public static final int ERROR = -1; // 0xffffffff
+    field public static final int ERROR_DEAD_OBJECT = -6; // 0xfffffffa
+    field public static final String EXTRA_AUDIO_PLUG_STATE = "android.media.extra.AUDIO_PLUG_STATE";
+    field public static final String EXTRA_ENCODINGS = "android.media.extra.ENCODINGS";
+    field public static final String EXTRA_MAX_CHANNEL_COUNT = "android.media.extra.MAX_CHANNEL_COUNT";
+    field public static final String EXTRA_RINGER_MODE = "android.media.EXTRA_RINGER_MODE";
+    field public static final String EXTRA_SCO_AUDIO_PREVIOUS_STATE = "android.media.extra.SCO_AUDIO_PREVIOUS_STATE";
+    field public static final String EXTRA_SCO_AUDIO_STATE = "android.media.extra.SCO_AUDIO_STATE";
+    field @Deprecated public static final String EXTRA_VIBRATE_SETTING = "android.media.EXTRA_VIBRATE_SETTING";
+    field @Deprecated public static final String EXTRA_VIBRATE_TYPE = "android.media.EXTRA_VIBRATE_TYPE";
+    field public static final int FLAG_ALLOW_RINGER_MODES = 2; // 0x2
+    field public static final int FLAG_PLAY_SOUND = 4; // 0x4
+    field public static final int FLAG_REMOVE_SOUND_AND_VIBRATE = 8; // 0x8
+    field public static final int FLAG_SHOW_UI = 1; // 0x1
+    field public static final int FLAG_VIBRATE = 16; // 0x10
+    field public static final int FX_FOCUS_NAVIGATION_DOWN = 2; // 0x2
+    field public static final int FX_FOCUS_NAVIGATION_LEFT = 3; // 0x3
+    field public static final int FX_FOCUS_NAVIGATION_RIGHT = 4; // 0x4
+    field public static final int FX_FOCUS_NAVIGATION_UP = 1; // 0x1
+    field public static final int FX_KEYPRESS_DELETE = 7; // 0x7
+    field public static final int FX_KEYPRESS_INVALID = 9; // 0x9
+    field public static final int FX_KEYPRESS_RETURN = 8; // 0x8
+    field public static final int FX_KEYPRESS_SPACEBAR = 6; // 0x6
+    field public static final int FX_KEYPRESS_STANDARD = 5; // 0x5
+    field public static final int FX_KEY_CLICK = 0; // 0x0
+    field public static final int GET_DEVICES_ALL = 3; // 0x3
+    field public static final int GET_DEVICES_INPUTS = 1; // 0x1
+    field public static final int GET_DEVICES_OUTPUTS = 2; // 0x2
+    field public static final int MODE_CALL_SCREENING = 4; // 0x4
+    field public static final int MODE_CURRENT = -1; // 0xffffffff
+    field public static final int MODE_INVALID = -2; // 0xfffffffe
+    field public static final int MODE_IN_CALL = 2; // 0x2
+    field public static final int MODE_IN_COMMUNICATION = 3; // 0x3
+    field public static final int MODE_NORMAL = 0; // 0x0
+    field public static final int MODE_RINGTONE = 1; // 0x1
+    field @Deprecated public static final int NUM_STREAMS = 5; // 0x5
+    field public static final String PROPERTY_OUTPUT_FRAMES_PER_BUFFER = "android.media.property.OUTPUT_FRAMES_PER_BUFFER";
+    field public static final String PROPERTY_OUTPUT_SAMPLE_RATE = "android.media.property.OUTPUT_SAMPLE_RATE";
+    field public static final String PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED = "android.media.property.SUPPORT_AUDIO_SOURCE_UNPROCESSED";
+    field public static final String PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND = "android.media.property.SUPPORT_MIC_NEAR_ULTRASOUND";
+    field public static final String PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND = "android.media.property.SUPPORT_SPEAKER_NEAR_ULTRASOUND";
+    field public static final String RINGER_MODE_CHANGED_ACTION = "android.media.RINGER_MODE_CHANGED";
+    field public static final int RINGER_MODE_NORMAL = 2; // 0x2
+    field public static final int RINGER_MODE_SILENT = 0; // 0x0
+    field public static final int RINGER_MODE_VIBRATE = 1; // 0x1
+    field @Deprecated public static final int ROUTE_ALL = -1; // 0xffffffff
+    field @Deprecated public static final int ROUTE_BLUETOOTH = 4; // 0x4
+    field @Deprecated public static final int ROUTE_BLUETOOTH_A2DP = 16; // 0x10
+    field @Deprecated public static final int ROUTE_BLUETOOTH_SCO = 4; // 0x4
+    field @Deprecated public static final int ROUTE_EARPIECE = 1; // 0x1
+    field @Deprecated public static final int ROUTE_HEADSET = 8; // 0x8
+    field @Deprecated public static final int ROUTE_SPEAKER = 2; // 0x2
+    field public static final int SCO_AUDIO_STATE_CONNECTED = 1; // 0x1
+    field public static final int SCO_AUDIO_STATE_CONNECTING = 2; // 0x2
+    field public static final int SCO_AUDIO_STATE_DISCONNECTED = 0; // 0x0
+    field public static final int SCO_AUDIO_STATE_ERROR = -1; // 0xffffffff
+    field public static final int STREAM_ACCESSIBILITY = 10; // 0xa
+    field public static final int STREAM_ALARM = 4; // 0x4
+    field public static final int STREAM_DTMF = 8; // 0x8
+    field public static final int STREAM_MUSIC = 3; // 0x3
+    field public static final int STREAM_NOTIFICATION = 5; // 0x5
+    field public static final int STREAM_RING = 2; // 0x2
+    field public static final int STREAM_SYSTEM = 1; // 0x1
+    field public static final int STREAM_VOICE_CALL = 0; // 0x0
+    field public static final int USE_DEFAULT_STREAM_TYPE = -2147483648; // 0x80000000
+    field @Deprecated public static final String VIBRATE_SETTING_CHANGED_ACTION = "android.media.VIBRATE_SETTING_CHANGED";
+    field @Deprecated public static final int VIBRATE_SETTING_OFF = 0; // 0x0
+    field @Deprecated public static final int VIBRATE_SETTING_ON = 1; // 0x1
+    field @Deprecated public static final int VIBRATE_SETTING_ONLY_SILENT = 2; // 0x2
+    field @Deprecated public static final int VIBRATE_TYPE_NOTIFICATION = 1; // 0x1
+    field @Deprecated public static final int VIBRATE_TYPE_RINGER = 0; // 0x0
+  }
+
+  public abstract static class AudioManager.AudioPlaybackCallback {
+    ctor public AudioManager.AudioPlaybackCallback();
+    method public void onPlaybackConfigChanged(java.util.List<android.media.AudioPlaybackConfiguration>);
+  }
+
+  public abstract static class AudioManager.AudioRecordingCallback {
+    ctor public AudioManager.AudioRecordingCallback();
+    method public void onRecordingConfigChanged(java.util.List<android.media.AudioRecordingConfiguration>);
+  }
+
+  public static interface AudioManager.OnAudioFocusChangeListener {
+    method public void onAudioFocusChange(int);
+  }
+
+  public final class AudioMetadata {
+    method @NonNull public static android.media.AudioMetadataMap createMap();
+  }
+
+  public static class AudioMetadata.Format {
+    field @NonNull public static final android.media.AudioMetadata.Key<java.lang.Boolean> KEY_ATMOS_PRESENT;
+    field @NonNull public static final android.media.AudioMetadata.Key<java.lang.Integer> KEY_AUDIO_ENCODING;
+    field @NonNull public static final android.media.AudioMetadata.Key<java.lang.Integer> KEY_BIT_RATE;
+    field @NonNull public static final android.media.AudioMetadata.Key<java.lang.Integer> KEY_BIT_WIDTH;
+    field @NonNull public static final android.media.AudioMetadata.Key<java.lang.Integer> KEY_CHANNEL_MASK;
+    field @NonNull public static final android.media.AudioMetadata.Key<java.lang.String> KEY_MIME;
+    field @NonNull public static final android.media.AudioMetadata.Key<java.lang.Integer> KEY_SAMPLE_RATE;
+  }
+
+  public static interface AudioMetadata.Key<T> {
+    method @NonNull public String getName();
+    method @NonNull public Class<T> getValueClass();
+  }
+
+  public interface AudioMetadataMap extends android.media.AudioMetadataReadMap {
+    method @Nullable public <T> T remove(@NonNull android.media.AudioMetadata.Key<T>);
+    method @Nullable public <T> T set(@NonNull android.media.AudioMetadata.Key<T>, @NonNull T);
+  }
+
+  public interface AudioMetadataReadMap {
+    method public <T> boolean containsKey(@NonNull android.media.AudioMetadata.Key<T>);
+    method @NonNull public android.media.AudioMetadataMap dup();
+    method @Nullable public <T> T get(@NonNull android.media.AudioMetadata.Key<T>);
+    method @IntRange(from=0) public int size();
+  }
+
+  public final class AudioPlaybackCaptureConfiguration {
+    method @NonNull public int[] getExcludeUids();
+    method @NonNull public int[] getExcludeUsages();
+    method @NonNull public int[] getMatchingUids();
+    method @NonNull public int[] getMatchingUsages();
+    method @NonNull public android.media.projection.MediaProjection getMediaProjection();
+  }
+
+  public static final class AudioPlaybackCaptureConfiguration.Builder {
+    ctor public AudioPlaybackCaptureConfiguration.Builder(@NonNull android.media.projection.MediaProjection);
+    method @NonNull public android.media.AudioPlaybackCaptureConfiguration.Builder addMatchingUid(int);
+    method @NonNull public android.media.AudioPlaybackCaptureConfiguration.Builder addMatchingUsage(int);
+    method @NonNull public android.media.AudioPlaybackCaptureConfiguration build();
+    method @NonNull public android.media.AudioPlaybackCaptureConfiguration.Builder excludeUid(int);
+    method @NonNull public android.media.AudioPlaybackCaptureConfiguration.Builder excludeUsage(int);
+  }
+
+  public final class AudioPlaybackConfiguration implements android.os.Parcelable {
+    method public int describeContents();
+    method public android.media.AudioAttributes getAudioAttributes();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.AudioPlaybackConfiguration> CREATOR;
+  }
+
+  public final class AudioPresentation {
+    method public java.util.Map<java.util.Locale,java.lang.String> getLabels();
+    method public java.util.Locale getLocale();
+    method public int getMasteringIndication();
+    method public int getPresentationId();
+    method public int getProgramId();
+    method public boolean hasAudioDescription();
+    method public boolean hasDialogueEnhancement();
+    method public boolean hasSpokenSubtitles();
+    field public static final int MASTERED_FOR_3D = 3; // 0x3
+    field public static final int MASTERED_FOR_HEADPHONE = 4; // 0x4
+    field public static final int MASTERED_FOR_STEREO = 1; // 0x1
+    field public static final int MASTERED_FOR_SURROUND = 2; // 0x2
+    field public static final int MASTERING_NOT_INDICATED = 0; // 0x0
+  }
+
+  public static final class AudioPresentation.Builder {
+    ctor public AudioPresentation.Builder(int);
+    method @NonNull public android.media.AudioPresentation build();
+    method @NonNull public android.media.AudioPresentation.Builder setHasAudioDescription(boolean);
+    method @NonNull public android.media.AudioPresentation.Builder setHasDialogueEnhancement(boolean);
+    method @NonNull public android.media.AudioPresentation.Builder setHasSpokenSubtitles(boolean);
+    method @NonNull public android.media.AudioPresentation.Builder setLabels(@NonNull java.util.Map<android.icu.util.ULocale,java.lang.CharSequence>);
+    method @NonNull public android.media.AudioPresentation.Builder setLocale(@NonNull android.icu.util.ULocale);
+    method @NonNull public android.media.AudioPresentation.Builder setMasteringIndication(int);
+    method @NonNull public android.media.AudioPresentation.Builder setProgramId(int);
+  }
+
+  public class AudioRecord implements android.media.AudioRecordingMonitor android.media.AudioRouting android.media.MicrophoneDirection {
+    ctor public AudioRecord(int, int, int, int, int) throws java.lang.IllegalArgumentException;
+    method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
+    method @Deprecated public void addOnRoutingChangedListener(android.media.AudioRecord.OnRoutingChangedListener, android.os.Handler);
+    method protected void finalize();
+    method public java.util.List<android.media.MicrophoneInfo> getActiveMicrophones() throws java.io.IOException;
+    method @Nullable public android.media.AudioRecordingConfiguration getActiveRecordingConfiguration();
+    method public int getAudioFormat();
+    method public int getAudioSessionId();
+    method public int getAudioSource();
+    method public int getBufferSizeInFrames();
+    method public int getChannelConfiguration();
+    method public int getChannelCount();
+    method @NonNull public android.media.AudioFormat getFormat();
+    method public android.os.PersistableBundle getMetrics();
+    method public static int getMinBufferSize(int, int, int);
+    method public int getNotificationMarkerPosition();
+    method public int getPositionNotificationPeriod();
+    method public android.media.AudioDeviceInfo getPreferredDevice();
+    method public int getRecordingState();
+    method public android.media.AudioDeviceInfo getRoutedDevice();
+    method public int getSampleRate();
+    method public int getState();
+    method public int getTimestamp(@NonNull android.media.AudioTimestamp, int);
+    method public boolean isPrivacySensitive();
+    method public int read(@NonNull byte[], int, int);
+    method public int read(@NonNull byte[], int, int, int);
+    method public int read(@NonNull short[], int, int);
+    method public int read(@NonNull short[], int, int, int);
+    method public int read(@NonNull float[], int, int, int);
+    method public int read(@NonNull java.nio.ByteBuffer, int);
+    method public int read(@NonNull java.nio.ByteBuffer, int, int);
+    method public void registerAudioRecordingCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.AudioRecordingCallback);
+    method public void release();
+    method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
+    method @Deprecated public void removeOnRoutingChangedListener(android.media.AudioRecord.OnRoutingChangedListener);
+    method public int setNotificationMarkerPosition(int);
+    method public int setPositionNotificationPeriod(int);
+    method public boolean setPreferredDevice(android.media.AudioDeviceInfo);
+    method public boolean setPreferredMicrophoneDirection(int);
+    method public boolean setPreferredMicrophoneFieldDimension(@FloatRange(from=-1.0, to=1.0) float);
+    method public void setRecordPositionUpdateListener(android.media.AudioRecord.OnRecordPositionUpdateListener);
+    method public void setRecordPositionUpdateListener(android.media.AudioRecord.OnRecordPositionUpdateListener, android.os.Handler);
+    method public void startRecording() throws java.lang.IllegalStateException;
+    method public void startRecording(android.media.MediaSyncEvent) throws java.lang.IllegalStateException;
+    method public void stop() throws java.lang.IllegalStateException;
+    method public void unregisterAudioRecordingCallback(@NonNull android.media.AudioManager.AudioRecordingCallback);
+    field public static final int ERROR = -1; // 0xffffffff
+    field public static final int ERROR_BAD_VALUE = -2; // 0xfffffffe
+    field public static final int ERROR_DEAD_OBJECT = -6; // 0xfffffffa
+    field public static final int ERROR_INVALID_OPERATION = -3; // 0xfffffffd
+    field public static final int READ_BLOCKING = 0; // 0x0
+    field public static final int READ_NON_BLOCKING = 1; // 0x1
+    field public static final int RECORDSTATE_RECORDING = 3; // 0x3
+    field public static final int RECORDSTATE_STOPPED = 1; // 0x1
+    field public static final int STATE_INITIALIZED = 1; // 0x1
+    field public static final int STATE_UNINITIALIZED = 0; // 0x0
+    field public static final int SUCCESS = 0; // 0x0
+  }
+
+  public static class AudioRecord.Builder {
+    ctor public AudioRecord.Builder();
+    method public android.media.AudioRecord build() throws java.lang.UnsupportedOperationException;
+    method public android.media.AudioRecord.Builder setAudioFormat(@NonNull android.media.AudioFormat) throws java.lang.IllegalArgumentException;
+    method @NonNull public android.media.AudioRecord.Builder setAudioPlaybackCaptureConfig(@NonNull android.media.AudioPlaybackCaptureConfiguration);
+    method public android.media.AudioRecord.Builder setAudioSource(int) throws java.lang.IllegalArgumentException;
+    method public android.media.AudioRecord.Builder setBufferSizeInBytes(int) throws java.lang.IllegalArgumentException;
+    method @NonNull public android.media.AudioRecord.Builder setPrivacySensitive(boolean);
+  }
+
+  public static final class AudioRecord.MetricsConstants {
+    field public static final String CHANNELS = "android.media.audiorecord.channels";
+    field public static final String ENCODING = "android.media.audiorecord.encoding";
+    field @Deprecated public static final String LATENCY = "android.media.audiorecord.latency";
+    field public static final String SAMPLERATE = "android.media.audiorecord.samplerate";
+    field public static final String SOURCE = "android.media.audiorecord.source";
+  }
+
+  public static interface AudioRecord.OnRecordPositionUpdateListener {
+    method public void onMarkerReached(android.media.AudioRecord);
+    method public void onPeriodicNotification(android.media.AudioRecord);
+  }
+
+  @Deprecated public static interface AudioRecord.OnRoutingChangedListener extends android.media.AudioRouting.OnRoutingChangedListener {
+    method @Deprecated public void onRoutingChanged(android.media.AudioRecord);
+    method @Deprecated public default void onRoutingChanged(android.media.AudioRouting);
+  }
+
+  public final class AudioRecordingConfiguration implements android.os.Parcelable {
+    method public int describeContents();
+    method public android.media.AudioDeviceInfo getAudioDevice();
+    method public int getAudioSource();
+    method public int getClientAudioSessionId();
+    method public int getClientAudioSource();
+    method @NonNull public java.util.List<android.media.audiofx.AudioEffect.Descriptor> getClientEffects();
+    method public android.media.AudioFormat getClientFormat();
+    method @NonNull public java.util.List<android.media.audiofx.AudioEffect.Descriptor> getEffects();
+    method public android.media.AudioFormat getFormat();
+    method public boolean isClientSilenced();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.AudioRecordingConfiguration> CREATOR;
+  }
+
+  public interface AudioRecordingMonitor {
+    method @Nullable public android.media.AudioRecordingConfiguration getActiveRecordingConfiguration();
+    method public void registerAudioRecordingCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.AudioRecordingCallback);
+    method public void unregisterAudioRecordingCallback(@NonNull android.media.AudioManager.AudioRecordingCallback);
+  }
+
+  public interface AudioRouting {
+    method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
+    method public android.media.AudioDeviceInfo getPreferredDevice();
+    method public android.media.AudioDeviceInfo getRoutedDevice();
+    method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
+    method public boolean setPreferredDevice(android.media.AudioDeviceInfo);
+  }
+
+  public static interface AudioRouting.OnRoutingChangedListener {
+    method public void onRoutingChanged(android.media.AudioRouting);
+  }
+
+  public final class AudioTimestamp {
+    ctor public AudioTimestamp();
+    field public static final int TIMEBASE_BOOTTIME = 1; // 0x1
+    field public static final int TIMEBASE_MONOTONIC = 0; // 0x0
+    field public long framePosition;
+    field public long nanoTime;
+  }
+
+  public class AudioTrack implements android.media.AudioRouting android.media.VolumeAutomation {
+    ctor @Deprecated public AudioTrack(int, int, int, int, int, int) throws java.lang.IllegalArgumentException;
+    ctor @Deprecated public AudioTrack(int, int, int, int, int, int, int) throws java.lang.IllegalArgumentException;
+    ctor public AudioTrack(android.media.AudioAttributes, android.media.AudioFormat, int, int, int) throws java.lang.IllegalArgumentException;
+    method public void addOnCodecFormatChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioTrack.OnCodecFormatChangedListener);
+    method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
+    method @Deprecated public void addOnRoutingChangedListener(android.media.AudioTrack.OnRoutingChangedListener, android.os.Handler);
+    method public int attachAuxEffect(int);
+    method @NonNull public android.media.VolumeShaper createVolumeShaper(@NonNull android.media.VolumeShaper.Configuration);
+    method protected void finalize();
+    method public void flush();
+    method @NonNull public android.media.AudioAttributes getAudioAttributes();
+    method public float getAudioDescriptionMixLeveldB();
+    method public int getAudioFormat();
+    method public int getAudioSessionId();
+    method @IntRange(from=0) public int getBufferCapacityInFrames();
+    method @IntRange(from=0) public int getBufferSizeInFrames();
+    method public int getChannelConfiguration();
+    method public int getChannelCount();
+    method public int getDualMonoMode();
+    method @NonNull public android.media.AudioFormat getFormat();
+    method public static float getMaxVolume();
+    method public android.os.PersistableBundle getMetrics();
+    method public static int getMinBufferSize(int, int, int);
+    method public static float getMinVolume();
+    method @Deprecated protected int getNativeFrameCount();
+    method public static int getNativeOutputSampleRate(int);
+    method public int getNotificationMarkerPosition();
+    method @IntRange(from=0) public int getOffloadDelay();
+    method @IntRange(from=0) public int getOffloadPadding();
+    method public int getPerformanceMode();
+    method public int getPlayState();
+    method public int getPlaybackHeadPosition();
+    method @NonNull public android.media.PlaybackParams getPlaybackParams();
+    method public int getPlaybackRate();
+    method public int getPositionNotificationPeriod();
+    method public android.media.AudioDeviceInfo getPreferredDevice();
+    method public android.media.AudioDeviceInfo getRoutedDevice();
+    method public int getSampleRate();
+    method public int getState();
+    method public int getStreamType();
+    method public boolean getTimestamp(android.media.AudioTimestamp);
+    method public int getUnderrunCount();
+    method public static boolean isDirectPlaybackSupported(@NonNull android.media.AudioFormat, @NonNull android.media.AudioAttributes);
+    method public boolean isOffloadedPlayback();
+    method public void pause() throws java.lang.IllegalStateException;
+    method public void play() throws java.lang.IllegalStateException;
+    method public void registerStreamEventCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioTrack.StreamEventCallback);
+    method public void release();
+    method public int reloadStaticData();
+    method public void removeOnCodecFormatChangedListener(@NonNull android.media.AudioTrack.OnCodecFormatChangedListener);
+    method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
+    method @Deprecated public void removeOnRoutingChangedListener(android.media.AudioTrack.OnRoutingChangedListener);
+    method public boolean setAudioDescriptionMixLeveldB(@FloatRange(to=48.0f, toInclusive=true) float);
+    method public int setAuxEffectSendLevel(@FloatRange(from=0.0) float);
+    method public int setBufferSizeInFrames(@IntRange(from=0) int);
+    method public boolean setDualMonoMode(int);
+    method public int setLoopPoints(@IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0xffffffff) int);
+    method public int setNotificationMarkerPosition(int);
+    method public void setOffloadDelayPadding(@IntRange(from=0) int, @IntRange(from=0) int);
+    method public void setOffloadEndOfStream();
+    method public int setPlaybackHeadPosition(@IntRange(from=0) int);
+    method public void setPlaybackParams(@NonNull android.media.PlaybackParams);
+    method public void setPlaybackPositionUpdateListener(android.media.AudioTrack.OnPlaybackPositionUpdateListener);
+    method public void setPlaybackPositionUpdateListener(android.media.AudioTrack.OnPlaybackPositionUpdateListener, android.os.Handler);
+    method public int setPlaybackRate(int);
+    method public int setPositionNotificationPeriod(int);
+    method public boolean setPreferredDevice(android.media.AudioDeviceInfo);
+    method public int setPresentation(@NonNull android.media.AudioPresentation);
+    method @Deprecated protected void setState(int);
+    method @Deprecated public int setStereoVolume(float, float);
+    method public int setVolume(float);
+    method public void stop() throws java.lang.IllegalStateException;
+    method public void unregisterStreamEventCallback(@NonNull android.media.AudioTrack.StreamEventCallback);
+    method public int write(@NonNull byte[], int, int);
+    method public int write(@NonNull byte[], int, int, int);
+    method public int write(@NonNull short[], int, int);
+    method public int write(@NonNull short[], int, int, int);
+    method public int write(@NonNull float[], int, int, int);
+    method public int write(@NonNull java.nio.ByteBuffer, int, int);
+    method public int write(@NonNull java.nio.ByteBuffer, int, int, long);
+    field public static final int DUAL_MONO_MODE_LL = 2; // 0x2
+    field public static final int DUAL_MONO_MODE_LR = 1; // 0x1
+    field public static final int DUAL_MONO_MODE_OFF = 0; // 0x0
+    field public static final int DUAL_MONO_MODE_RR = 3; // 0x3
+    field public static final int ENCAPSULATION_METADATA_TYPE_DVB_AD_DESCRIPTOR = 2; // 0x2
+    field public static final int ENCAPSULATION_METADATA_TYPE_FRAMEWORK_TUNER = 1; // 0x1
+    field public static final int ENCAPSULATION_MODE_ELEMENTARY_STREAM = 1; // 0x1
+    field public static final int ENCAPSULATION_MODE_NONE = 0; // 0x0
+    field public static final int ERROR = -1; // 0xffffffff
+    field public static final int ERROR_BAD_VALUE = -2; // 0xfffffffe
+    field public static final int ERROR_DEAD_OBJECT = -6; // 0xfffffffa
+    field public static final int ERROR_INVALID_OPERATION = -3; // 0xfffffffd
+    field public static final int MODE_STATIC = 0; // 0x0
+    field public static final int MODE_STREAM = 1; // 0x1
+    field public static final int PERFORMANCE_MODE_LOW_LATENCY = 1; // 0x1
+    field public static final int PERFORMANCE_MODE_NONE = 0; // 0x0
+    field public static final int PERFORMANCE_MODE_POWER_SAVING = 2; // 0x2
+    field public static final int PLAYSTATE_PAUSED = 2; // 0x2
+    field public static final int PLAYSTATE_PLAYING = 3; // 0x3
+    field public static final int PLAYSTATE_STOPPED = 1; // 0x1
+    field public static final int STATE_INITIALIZED = 1; // 0x1
+    field public static final int STATE_NO_STATIC_DATA = 2; // 0x2
+    field public static final int STATE_UNINITIALIZED = 0; // 0x0
+    field public static final int SUCCESS = 0; // 0x0
+    field public static final int WRITE_BLOCKING = 0; // 0x0
+    field public static final int WRITE_NON_BLOCKING = 1; // 0x1
+  }
+
+  public static class AudioTrack.Builder {
+    ctor public AudioTrack.Builder();
+    method @NonNull public android.media.AudioTrack build() throws java.lang.UnsupportedOperationException;
+    method @NonNull public android.media.AudioTrack.Builder setAudioAttributes(@NonNull android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
+    method @NonNull public android.media.AudioTrack.Builder setAudioFormat(@NonNull android.media.AudioFormat) throws java.lang.IllegalArgumentException;
+    method @NonNull public android.media.AudioTrack.Builder setBufferSizeInBytes(@IntRange(from=0) int) throws java.lang.IllegalArgumentException;
+    method @NonNull public android.media.AudioTrack.Builder setEncapsulationMode(int);
+    method @NonNull public android.media.AudioTrack.Builder setOffloadedPlayback(boolean);
+    method @NonNull public android.media.AudioTrack.Builder setPerformanceMode(int);
+    method @NonNull public android.media.AudioTrack.Builder setSessionId(@IntRange(from=1) int) throws java.lang.IllegalArgumentException;
+    method @NonNull public android.media.AudioTrack.Builder setTransferMode(int) throws java.lang.IllegalArgumentException;
+  }
+
+  public static final class AudioTrack.MetricsConstants {
+    field @Deprecated public static final String CHANNELMASK = "android.media.audiorecord.channelmask";
+    field public static final String CONTENTTYPE = "android.media.audiotrack.type";
+    field @Deprecated public static final String SAMPLERATE = "android.media.audiorecord.samplerate";
+    field public static final String STREAMTYPE = "android.media.audiotrack.streamtype";
+    field public static final String USAGE = "android.media.audiotrack.usage";
+  }
+
+  public static interface AudioTrack.OnCodecFormatChangedListener {
+    method public void onCodecFormatChanged(@NonNull android.media.AudioTrack, @Nullable android.media.AudioMetadataReadMap);
+  }
+
+  public static interface AudioTrack.OnPlaybackPositionUpdateListener {
+    method public void onMarkerReached(android.media.AudioTrack);
+    method public void onPeriodicNotification(android.media.AudioTrack);
+  }
+
+  @Deprecated public static interface AudioTrack.OnRoutingChangedListener extends android.media.AudioRouting.OnRoutingChangedListener {
+    method @Deprecated public void onRoutingChanged(android.media.AudioTrack);
+    method @Deprecated public default void onRoutingChanged(android.media.AudioRouting);
+  }
+
+  public abstract static class AudioTrack.StreamEventCallback {
+    ctor public AudioTrack.StreamEventCallback();
+    method public void onDataRequest(@NonNull android.media.AudioTrack, @IntRange(from=0) int);
+    method public void onPresentationEnded(@NonNull android.media.AudioTrack);
+    method public void onTearDown(@NonNull android.media.AudioTrack);
+  }
+
+  public class CamcorderProfile {
+    method public static android.media.CamcorderProfile get(int);
+    method public static android.media.CamcorderProfile get(int, int);
+    method public static boolean hasProfile(int);
+    method public static boolean hasProfile(int, int);
+    field public static final int QUALITY_1080P = 6; // 0x6
+    field public static final int QUALITY_2160P = 8; // 0x8
+    field public static final int QUALITY_2K = 12; // 0xc
+    field public static final int QUALITY_480P = 4; // 0x4
+    field public static final int QUALITY_4KDCI = 10; // 0xa
+    field public static final int QUALITY_720P = 5; // 0x5
+    field public static final int QUALITY_CIF = 3; // 0x3
+    field public static final int QUALITY_HIGH = 1; // 0x1
+    field public static final int QUALITY_HIGH_SPEED_1080P = 2004; // 0x7d4
+    field public static final int QUALITY_HIGH_SPEED_2160P = 2005; // 0x7d5
+    field public static final int QUALITY_HIGH_SPEED_480P = 2002; // 0x7d2
+    field public static final int QUALITY_HIGH_SPEED_4KDCI = 2008; // 0x7d8
+    field public static final int QUALITY_HIGH_SPEED_720P = 2003; // 0x7d3
+    field public static final int QUALITY_HIGH_SPEED_CIF = 2006; // 0x7d6
+    field public static final int QUALITY_HIGH_SPEED_HIGH = 2001; // 0x7d1
+    field public static final int QUALITY_HIGH_SPEED_LOW = 2000; // 0x7d0
+    field public static final int QUALITY_HIGH_SPEED_VGA = 2007; // 0x7d7
+    field public static final int QUALITY_LOW = 0; // 0x0
+    field public static final int QUALITY_QCIF = 2; // 0x2
+    field public static final int QUALITY_QHD = 11; // 0xb
+    field public static final int QUALITY_QVGA = 7; // 0x7
+    field public static final int QUALITY_TIME_LAPSE_1080P = 1006; // 0x3ee
+    field public static final int QUALITY_TIME_LAPSE_2160P = 1008; // 0x3f0
+    field public static final int QUALITY_TIME_LAPSE_2K = 1012; // 0x3f4
+    field public static final int QUALITY_TIME_LAPSE_480P = 1004; // 0x3ec
+    field public static final int QUALITY_TIME_LAPSE_4KDCI = 1010; // 0x3f2
+    field public static final int QUALITY_TIME_LAPSE_720P = 1005; // 0x3ed
+    field public static final int QUALITY_TIME_LAPSE_CIF = 1003; // 0x3eb
+    field public static final int QUALITY_TIME_LAPSE_HIGH = 1001; // 0x3e9
+    field public static final int QUALITY_TIME_LAPSE_LOW = 1000; // 0x3e8
+    field public static final int QUALITY_TIME_LAPSE_QCIF = 1002; // 0x3ea
+    field public static final int QUALITY_TIME_LAPSE_QHD = 1011; // 0x3f3
+    field public static final int QUALITY_TIME_LAPSE_QVGA = 1007; // 0x3ef
+    field public static final int QUALITY_TIME_LAPSE_VGA = 1009; // 0x3f1
+    field public static final int QUALITY_VGA = 9; // 0x9
+    field public int audioBitRate;
+    field public int audioChannels;
+    field public int audioCodec;
+    field public int audioSampleRate;
+    field public int duration;
+    field public int fileFormat;
+    field public int quality;
+    field public int videoBitRate;
+    field public int videoCodec;
+    field public int videoFrameHeight;
+    field public int videoFrameRate;
+    field public int videoFrameWidth;
+  }
+
+  public class CameraProfile {
+    ctor public CameraProfile();
+    method public static int getJpegEncodingQualityParameter(int);
+    method public static int getJpegEncodingQualityParameter(int, int);
+    field public static final int QUALITY_HIGH = 2; // 0x2
+    field public static final int QUALITY_LOW = 0; // 0x0
+    field public static final int QUALITY_MEDIUM = 1; // 0x1
+  }
+
+  public final class DeniedByServerException extends android.media.MediaDrmException {
+    ctor public DeniedByServerException(String);
+  }
+
+  public abstract class DrmInitData {
+    method @Deprecated public abstract android.media.DrmInitData.SchemeInitData get(java.util.UUID);
+    method @NonNull public android.media.DrmInitData.SchemeInitData getSchemeInitDataAt(int);
+    method public int getSchemeInitDataCount();
+  }
+
+  public static final class DrmInitData.SchemeInitData {
+    field @NonNull public static final java.util.UUID UUID_NIL;
+    field public final byte[] data;
+    field public final String mimeType;
+    field @NonNull public final java.util.UUID uuid;
+  }
+
+  public class ExifInterface {
+    ctor public ExifInterface(@NonNull java.io.File) throws java.io.IOException;
+    ctor public ExifInterface(@NonNull String) throws java.io.IOException;
+    ctor public ExifInterface(@NonNull java.io.FileDescriptor) throws java.io.IOException;
+    ctor public ExifInterface(@NonNull java.io.InputStream) throws java.io.IOException;
+    ctor public ExifInterface(@NonNull java.io.InputStream, int) throws java.io.IOException;
+    method public double getAltitude(double);
+    method @Nullable public String getAttribute(@NonNull String);
+    method @Nullable public byte[] getAttributeBytes(@NonNull String);
+    method public double getAttributeDouble(@NonNull String, double);
+    method public int getAttributeInt(@NonNull String, int);
+    method @Nullable public long[] getAttributeRange(@NonNull String);
+    method public boolean getLatLong(float[]);
+    method public byte[] getThumbnail();
+    method public android.graphics.Bitmap getThumbnailBitmap();
+    method public byte[] getThumbnailBytes();
+    method @Nullable public long[] getThumbnailRange();
+    method public boolean hasAttribute(@NonNull String);
+    method public boolean hasThumbnail();
+    method public static boolean isSupportedMimeType(@NonNull String);
+    method public boolean isThumbnailCompressed();
+    method public void saveAttributes() throws java.io.IOException;
+    method public void setAttribute(@NonNull String, @Nullable String);
+    field public static final int ORIENTATION_FLIP_HORIZONTAL = 2; // 0x2
+    field public static final int ORIENTATION_FLIP_VERTICAL = 4; // 0x4
+    field public static final int ORIENTATION_NORMAL = 1; // 0x1
+    field public static final int ORIENTATION_ROTATE_180 = 3; // 0x3
+    field public static final int ORIENTATION_ROTATE_270 = 8; // 0x8
+    field public static final int ORIENTATION_ROTATE_90 = 6; // 0x6
+    field public static final int ORIENTATION_TRANSPOSE = 5; // 0x5
+    field public static final int ORIENTATION_TRANSVERSE = 7; // 0x7
+    field public static final int ORIENTATION_UNDEFINED = 0; // 0x0
+    field public static final int STREAM_TYPE_EXIF_DATA_ONLY = 1; // 0x1
+    field public static final int STREAM_TYPE_FULL_IMAGE_DATA = 0; // 0x0
+    field @Deprecated public static final String TAG_APERTURE = "FNumber";
+    field public static final String TAG_APERTURE_VALUE = "ApertureValue";
+    field public static final String TAG_ARTIST = "Artist";
+    field public static final String TAG_BITS_PER_SAMPLE = "BitsPerSample";
+    field public static final String TAG_BRIGHTNESS_VALUE = "BrightnessValue";
+    field public static final String TAG_CFA_PATTERN = "CFAPattern";
+    field public static final String TAG_COLOR_SPACE = "ColorSpace";
+    field public static final String TAG_COMPONENTS_CONFIGURATION = "ComponentsConfiguration";
+    field public static final String TAG_COMPRESSED_BITS_PER_PIXEL = "CompressedBitsPerPixel";
+    field public static final String TAG_COMPRESSION = "Compression";
+    field public static final String TAG_CONTRAST = "Contrast";
+    field public static final String TAG_COPYRIGHT = "Copyright";
+    field public static final String TAG_CUSTOM_RENDERED = "CustomRendered";
+    field public static final String TAG_DATETIME = "DateTime";
+    field public static final String TAG_DATETIME_DIGITIZED = "DateTimeDigitized";
+    field public static final String TAG_DATETIME_ORIGINAL = "DateTimeOriginal";
+    field public static final String TAG_DEFAULT_CROP_SIZE = "DefaultCropSize";
+    field public static final String TAG_DEVICE_SETTING_DESCRIPTION = "DeviceSettingDescription";
+    field public static final String TAG_DIGITAL_ZOOM_RATIO = "DigitalZoomRatio";
+    field public static final String TAG_DNG_VERSION = "DNGVersion";
+    field public static final String TAG_EXIF_VERSION = "ExifVersion";
+    field public static final String TAG_EXPOSURE_BIAS_VALUE = "ExposureBiasValue";
+    field public static final String TAG_EXPOSURE_INDEX = "ExposureIndex";
+    field public static final String TAG_EXPOSURE_MODE = "ExposureMode";
+    field public static final String TAG_EXPOSURE_PROGRAM = "ExposureProgram";
+    field public static final String TAG_EXPOSURE_TIME = "ExposureTime";
+    field public static final String TAG_FILE_SOURCE = "FileSource";
+    field public static final String TAG_FLASH = "Flash";
+    field public static final String TAG_FLASHPIX_VERSION = "FlashpixVersion";
+    field public static final String TAG_FLASH_ENERGY = "FlashEnergy";
+    field public static final String TAG_FOCAL_LENGTH = "FocalLength";
+    field public static final String TAG_FOCAL_LENGTH_IN_35MM_FILM = "FocalLengthIn35mmFilm";
+    field public static final String TAG_FOCAL_PLANE_RESOLUTION_UNIT = "FocalPlaneResolutionUnit";
+    field public static final String TAG_FOCAL_PLANE_X_RESOLUTION = "FocalPlaneXResolution";
+    field public static final String TAG_FOCAL_PLANE_Y_RESOLUTION = "FocalPlaneYResolution";
+    field public static final String TAG_F_NUMBER = "FNumber";
+    field public static final String TAG_GAIN_CONTROL = "GainControl";
+    field public static final String TAG_GPS_ALTITUDE = "GPSAltitude";
+    field public static final String TAG_GPS_ALTITUDE_REF = "GPSAltitudeRef";
+    field public static final String TAG_GPS_AREA_INFORMATION = "GPSAreaInformation";
+    field public static final String TAG_GPS_DATESTAMP = "GPSDateStamp";
+    field public static final String TAG_GPS_DEST_BEARING = "GPSDestBearing";
+    field public static final String TAG_GPS_DEST_BEARING_REF = "GPSDestBearingRef";
+    field public static final String TAG_GPS_DEST_DISTANCE = "GPSDestDistance";
+    field public static final String TAG_GPS_DEST_DISTANCE_REF = "GPSDestDistanceRef";
+    field public static final String TAG_GPS_DEST_LATITUDE = "GPSDestLatitude";
+    field public static final String TAG_GPS_DEST_LATITUDE_REF = "GPSDestLatitudeRef";
+    field public static final String TAG_GPS_DEST_LONGITUDE = "GPSDestLongitude";
+    field public static final String TAG_GPS_DEST_LONGITUDE_REF = "GPSDestLongitudeRef";
+    field public static final String TAG_GPS_DIFFERENTIAL = "GPSDifferential";
+    field public static final String TAG_GPS_DOP = "GPSDOP";
+    field public static final String TAG_GPS_IMG_DIRECTION = "GPSImgDirection";
+    field public static final String TAG_GPS_IMG_DIRECTION_REF = "GPSImgDirectionRef";
+    field public static final String TAG_GPS_LATITUDE = "GPSLatitude";
+    field public static final String TAG_GPS_LATITUDE_REF = "GPSLatitudeRef";
+    field public static final String TAG_GPS_LONGITUDE = "GPSLongitude";
+    field public static final String TAG_GPS_LONGITUDE_REF = "GPSLongitudeRef";
+    field public static final String TAG_GPS_MAP_DATUM = "GPSMapDatum";
+    field public static final String TAG_GPS_MEASURE_MODE = "GPSMeasureMode";
+    field public static final String TAG_GPS_PROCESSING_METHOD = "GPSProcessingMethod";
+    field public static final String TAG_GPS_SATELLITES = "GPSSatellites";
+    field public static final String TAG_GPS_SPEED = "GPSSpeed";
+    field public static final String TAG_GPS_SPEED_REF = "GPSSpeedRef";
+    field public static final String TAG_GPS_STATUS = "GPSStatus";
+    field public static final String TAG_GPS_TIMESTAMP = "GPSTimeStamp";
+    field public static final String TAG_GPS_TRACK = "GPSTrack";
+    field public static final String TAG_GPS_TRACK_REF = "GPSTrackRef";
+    field public static final String TAG_GPS_VERSION_ID = "GPSVersionID";
+    field public static final String TAG_IMAGE_DESCRIPTION = "ImageDescription";
+    field public static final String TAG_IMAGE_LENGTH = "ImageLength";
+    field public static final String TAG_IMAGE_UNIQUE_ID = "ImageUniqueID";
+    field public static final String TAG_IMAGE_WIDTH = "ImageWidth";
+    field public static final String TAG_INTEROPERABILITY_INDEX = "InteroperabilityIndex";
+    field @Deprecated public static final String TAG_ISO = "ISOSpeedRatings";
+    field public static final String TAG_ISO_SPEED_RATINGS = "ISOSpeedRatings";
+    field public static final String TAG_JPEG_INTERCHANGE_FORMAT = "JPEGInterchangeFormat";
+    field public static final String TAG_JPEG_INTERCHANGE_FORMAT_LENGTH = "JPEGInterchangeFormatLength";
+    field public static final String TAG_LIGHT_SOURCE = "LightSource";
+    field public static final String TAG_MAKE = "Make";
+    field public static final String TAG_MAKER_NOTE = "MakerNote";
+    field public static final String TAG_MAX_APERTURE_VALUE = "MaxApertureValue";
+    field public static final String TAG_METERING_MODE = "MeteringMode";
+    field public static final String TAG_MODEL = "Model";
+    field public static final String TAG_NEW_SUBFILE_TYPE = "NewSubfileType";
+    field public static final String TAG_OECF = "OECF";
+    field public static final String TAG_OFFSET_TIME = "OffsetTime";
+    field public static final String TAG_OFFSET_TIME_DIGITIZED = "OffsetTimeDigitized";
+    field public static final String TAG_OFFSET_TIME_ORIGINAL = "OffsetTimeOriginal";
+    field public static final String TAG_ORF_ASPECT_FRAME = "AspectFrame";
+    field public static final String TAG_ORF_PREVIEW_IMAGE_LENGTH = "PreviewImageLength";
+    field public static final String TAG_ORF_PREVIEW_IMAGE_START = "PreviewImageStart";
+    field public static final String TAG_ORF_THUMBNAIL_IMAGE = "ThumbnailImage";
+    field public static final String TAG_ORIENTATION = "Orientation";
+    field public static final String TAG_PHOTOMETRIC_INTERPRETATION = "PhotometricInterpretation";
+    field public static final String TAG_PIXEL_X_DIMENSION = "PixelXDimension";
+    field public static final String TAG_PIXEL_Y_DIMENSION = "PixelYDimension";
+    field public static final String TAG_PLANAR_CONFIGURATION = "PlanarConfiguration";
+    field public static final String TAG_PRIMARY_CHROMATICITIES = "PrimaryChromaticities";
+    field public static final String TAG_REFERENCE_BLACK_WHITE = "ReferenceBlackWhite";
+    field public static final String TAG_RELATED_SOUND_FILE = "RelatedSoundFile";
+    field public static final String TAG_RESOLUTION_UNIT = "ResolutionUnit";
+    field public static final String TAG_ROWS_PER_STRIP = "RowsPerStrip";
+    field public static final String TAG_RW2_ISO = "ISO";
+    field public static final String TAG_RW2_JPG_FROM_RAW = "JpgFromRaw";
+    field public static final String TAG_RW2_SENSOR_BOTTOM_BORDER = "SensorBottomBorder";
+    field public static final String TAG_RW2_SENSOR_LEFT_BORDER = "SensorLeftBorder";
+    field public static final String TAG_RW2_SENSOR_RIGHT_BORDER = "SensorRightBorder";
+    field public static final String TAG_RW2_SENSOR_TOP_BORDER = "SensorTopBorder";
+    field public static final String TAG_SAMPLES_PER_PIXEL = "SamplesPerPixel";
+    field public static final String TAG_SATURATION = "Saturation";
+    field public static final String TAG_SCENE_CAPTURE_TYPE = "SceneCaptureType";
+    field public static final String TAG_SCENE_TYPE = "SceneType";
+    field public static final String TAG_SENSING_METHOD = "SensingMethod";
+    field public static final String TAG_SHARPNESS = "Sharpness";
+    field public static final String TAG_SHUTTER_SPEED_VALUE = "ShutterSpeedValue";
+    field public static final String TAG_SOFTWARE = "Software";
+    field public static final String TAG_SPATIAL_FREQUENCY_RESPONSE = "SpatialFrequencyResponse";
+    field public static final String TAG_SPECTRAL_SENSITIVITY = "SpectralSensitivity";
+    field public static final String TAG_STRIP_BYTE_COUNTS = "StripByteCounts";
+    field public static final String TAG_STRIP_OFFSETS = "StripOffsets";
+    field public static final String TAG_SUBFILE_TYPE = "SubfileType";
+    field public static final String TAG_SUBJECT_AREA = "SubjectArea";
+    field public static final String TAG_SUBJECT_DISTANCE = "SubjectDistance";
+    field public static final String TAG_SUBJECT_DISTANCE_RANGE = "SubjectDistanceRange";
+    field public static final String TAG_SUBJECT_LOCATION = "SubjectLocation";
+    field public static final String TAG_SUBSEC_TIME = "SubSecTime";
+    field @Deprecated public static final String TAG_SUBSEC_TIME_DIG = "SubSecTimeDigitized";
+    field public static final String TAG_SUBSEC_TIME_DIGITIZED = "SubSecTimeDigitized";
+    field @Deprecated public static final String TAG_SUBSEC_TIME_ORIG = "SubSecTimeOriginal";
+    field public static final String TAG_SUBSEC_TIME_ORIGINAL = "SubSecTimeOriginal";
+    field public static final String TAG_THUMBNAIL_IMAGE_LENGTH = "ThumbnailImageLength";
+    field public static final String TAG_THUMBNAIL_IMAGE_WIDTH = "ThumbnailImageWidth";
+    field public static final String TAG_THUMBNAIL_ORIENTATION = "ThumbnailOrientation";
+    field public static final String TAG_TRANSFER_FUNCTION = "TransferFunction";
+    field public static final String TAG_USER_COMMENT = "UserComment";
+    field public static final String TAG_WHITE_BALANCE = "WhiteBalance";
+    field public static final String TAG_WHITE_POINT = "WhitePoint";
+    field public static final String TAG_XMP = "Xmp";
+    field public static final String TAG_X_RESOLUTION = "XResolution";
+    field public static final String TAG_Y_CB_CR_COEFFICIENTS = "YCbCrCoefficients";
+    field public static final String TAG_Y_CB_CR_POSITIONING = "YCbCrPositioning";
+    field public static final String TAG_Y_CB_CR_SUB_SAMPLING = "YCbCrSubSampling";
+    field public static final String TAG_Y_RESOLUTION = "YResolution";
+    field public static final int WHITEBALANCE_AUTO = 0; // 0x0
+    field public static final int WHITEBALANCE_MANUAL = 1; // 0x1
+  }
+
+  public class FaceDetector {
+    ctor public FaceDetector(int, int, int);
+    method public int findFaces(android.graphics.Bitmap, android.media.FaceDetector.Face[]);
+  }
+
+  public class FaceDetector.Face {
+    method public float confidence();
+    method public float eyesDistance();
+    method public void getMidPoint(android.graphics.PointF);
+    method public float pose(int);
+    field public static final float CONFIDENCE_THRESHOLD = 0.4f;
+    field public static final int EULER_X = 0; // 0x0
+    field public static final int EULER_Y = 1; // 0x1
+    field public static final int EULER_Z = 2; // 0x2
+  }
+
+  public abstract class Image implements java.lang.AutoCloseable {
+    method public abstract void close();
+    method public android.graphics.Rect getCropRect();
+    method public abstract int getFormat();
+    method @Nullable public android.hardware.HardwareBuffer getHardwareBuffer();
+    method public abstract int getHeight();
+    method public abstract android.media.Image.Plane[] getPlanes();
+    method public abstract long getTimestamp();
+    method public abstract int getWidth();
+    method public void setCropRect(android.graphics.Rect);
+    method public void setTimestamp(long);
+  }
+
+  public abstract static class Image.Plane {
+    method public abstract java.nio.ByteBuffer getBuffer();
+    method public abstract int getPixelStride();
+    method public abstract int getRowStride();
+  }
+
+  public class ImageReader implements java.lang.AutoCloseable {
+    method public android.media.Image acquireLatestImage();
+    method public android.media.Image acquireNextImage();
+    method public void close();
+    method public void discardFreeBuffers();
+    method public int getHeight();
+    method public int getImageFormat();
+    method public int getMaxImages();
+    method public android.view.Surface getSurface();
+    method public int getWidth();
+    method @NonNull public static android.media.ImageReader newInstance(@IntRange(from=1) int, @IntRange(from=1) int, int, @IntRange(from=1) int);
+    method @NonNull public static android.media.ImageReader newInstance(@IntRange(from=1) int, @IntRange(from=1) int, int, @IntRange(from=1) int, long);
+    method public void setOnImageAvailableListener(android.media.ImageReader.OnImageAvailableListener, android.os.Handler);
+  }
+
+  public static interface ImageReader.OnImageAvailableListener {
+    method public void onImageAvailable(android.media.ImageReader);
+  }
+
+  public class ImageWriter implements java.lang.AutoCloseable {
+    method public void close();
+    method public android.media.Image dequeueInputImage();
+    method public int getFormat();
+    method public int getMaxImages();
+    method @NonNull public static android.media.ImageWriter newInstance(@NonNull android.view.Surface, @IntRange(from=1) int);
+    method @NonNull public static android.media.ImageWriter newInstance(@NonNull android.view.Surface, @IntRange(from=1) int, int);
+    method public void queueInputImage(android.media.Image);
+    method public void setOnImageReleasedListener(android.media.ImageWriter.OnImageReleasedListener, android.os.Handler);
+  }
+
+  public static interface ImageWriter.OnImageReleasedListener {
+    method public void onImageReleased(android.media.ImageWriter);
+  }
+
+  public class JetPlayer {
+    method public boolean clearQueue();
+    method public Object clone() throws java.lang.CloneNotSupportedException;
+    method public boolean closeJetFile();
+    method protected void finalize();
+    method public static android.media.JetPlayer getJetPlayer();
+    method public static int getMaxTracks();
+    method public boolean loadJetFile(String);
+    method public boolean loadJetFile(android.content.res.AssetFileDescriptor);
+    method public boolean pause();
+    method public boolean play();
+    method public boolean queueJetSegment(int, int, int, int, int, byte);
+    method public boolean queueJetSegmentMuteArray(int, int, int, int, boolean[], byte);
+    method public void release();
+    method public void setEventListener(android.media.JetPlayer.OnJetEventListener);
+    method public void setEventListener(android.media.JetPlayer.OnJetEventListener, android.os.Handler);
+    method public boolean setMuteArray(boolean[], boolean);
+    method public boolean setMuteFlag(int, boolean, boolean);
+    method public boolean setMuteFlags(int, boolean);
+    method public boolean triggerClip(int);
+  }
+
+  public static interface JetPlayer.OnJetEventListener {
+    method public void onJetEvent(android.media.JetPlayer, short, byte, byte, byte, byte);
+    method public void onJetNumQueuedSegmentUpdate(android.media.JetPlayer, int);
+    method public void onJetPauseUpdate(android.media.JetPlayer, int);
+    method public void onJetUserIdUpdate(android.media.JetPlayer, int, int);
+  }
+
+  public class MediaActionSound {
+    ctor public MediaActionSound();
+    method public void load(int);
+    method public void play(int);
+    method public void release();
+    field public static final int FOCUS_COMPLETE = 1; // 0x1
+    field public static final int SHUTTER_CLICK = 0; // 0x0
+    field public static final int START_VIDEO_RECORDING = 2; // 0x2
+    field public static final int STOP_VIDEO_RECORDING = 3; // 0x3
+  }
+
+  public final class MediaCas implements java.lang.AutoCloseable {
+    ctor public MediaCas(int) throws android.media.MediaCasException.UnsupportedCasException;
+    ctor public MediaCas(@NonNull android.content.Context, int, @Nullable String, int) throws android.media.MediaCasException.UnsupportedCasException;
+    method public void close();
+    method public static android.media.MediaCas.PluginDescriptor[] enumeratePlugins();
+    method protected void finalize();
+    method public static boolean isSystemIdSupported(int);
+    method public android.media.MediaCas.Session openSession() throws android.media.MediaCasException;
+    method @Nullable public android.media.MediaCas.Session openSession(int, int) throws android.media.MediaCasException;
+    method public void processEmm(@NonNull byte[], int, int) throws android.media.MediaCasException;
+    method public void processEmm(@NonNull byte[]) throws android.media.MediaCasException;
+    method public void provision(@NonNull String) throws android.media.MediaCasException;
+    method public void refreshEntitlements(int, @Nullable byte[]) throws android.media.MediaCasException;
+    method public void sendEvent(int, int, @Nullable byte[]) throws android.media.MediaCasException;
+    method public void setEventListener(@Nullable android.media.MediaCas.EventListener, @Nullable android.os.Handler);
+    method public void setPrivateData(@NonNull byte[]) throws android.media.MediaCasException;
+    field public static final int PLUGIN_STATUS_PHYSICAL_MODULE_CHANGED = 0; // 0x0
+    field public static final int PLUGIN_STATUS_SESSION_NUMBER_CHANGED = 1; // 0x1
+    field public static final int SCRAMBLING_MODE_AES128 = 9; // 0x9
+    field public static final int SCRAMBLING_MODE_AES_ECB = 10; // 0xa
+    field public static final int SCRAMBLING_MODE_AES_SCTE52 = 11; // 0xb
+    field public static final int SCRAMBLING_MODE_DVB_CISSA_V1 = 6; // 0x6
+    field public static final int SCRAMBLING_MODE_DVB_CSA1 = 1; // 0x1
+    field public static final int SCRAMBLING_MODE_DVB_CSA2 = 2; // 0x2
+    field public static final int SCRAMBLING_MODE_DVB_CSA3_ENHANCE = 5; // 0x5
+    field public static final int SCRAMBLING_MODE_DVB_CSA3_MINIMAL = 4; // 0x4
+    field public static final int SCRAMBLING_MODE_DVB_CSA3_STANDARD = 3; // 0x3
+    field public static final int SCRAMBLING_MODE_DVB_IDSA = 7; // 0x7
+    field public static final int SCRAMBLING_MODE_MULTI2 = 8; // 0x8
+    field public static final int SCRAMBLING_MODE_RESERVED = 0; // 0x0
+    field public static final int SCRAMBLING_MODE_TDES_ECB = 12; // 0xc
+    field public static final int SCRAMBLING_MODE_TDES_SCTE52 = 13; // 0xd
+    field public static final int SESSION_USAGE_LIVE = 0; // 0x0
+    field public static final int SESSION_USAGE_PLAYBACK = 1; // 0x1
+    field public static final int SESSION_USAGE_RECORD = 2; // 0x2
+    field public static final int SESSION_USAGE_TIMESHIFT = 3; // 0x3
+  }
+
+  public static interface MediaCas.EventListener {
+    method public void onEvent(@NonNull android.media.MediaCas, int, int, @Nullable byte[]);
+    method public default void onPluginStatusUpdate(@NonNull android.media.MediaCas, int, int);
+    method public default void onResourceLost(@NonNull android.media.MediaCas);
+    method public default void onSessionEvent(@NonNull android.media.MediaCas, @NonNull android.media.MediaCas.Session, int, int, @Nullable byte[]);
+  }
+
+  public static class MediaCas.PluginDescriptor {
+    method @NonNull public String getName();
+    method public int getSystemId();
+  }
+
+  public final class MediaCas.Session implements java.lang.AutoCloseable {
+    method public void close();
+    method @NonNull public byte[] getSessionId();
+    method public void processEcm(@NonNull byte[], int, int) throws android.media.MediaCasException;
+    method public void processEcm(@NonNull byte[]) throws android.media.MediaCasException;
+    method public void sendSessionEvent(int, int, @Nullable byte[]) throws android.media.MediaCasException;
+    method public void setPrivateData(@NonNull byte[]) throws android.media.MediaCasException;
+  }
+
+  public class MediaCasException extends java.lang.Exception {
+  }
+
+  public static final class MediaCasException.DeniedByServerException extends android.media.MediaCasException {
+  }
+
+  public static final class MediaCasException.InsufficientResourceException extends android.media.MediaCasException {
+  }
+
+  public static final class MediaCasException.NotProvisionedException extends android.media.MediaCasException {
+  }
+
+  public static final class MediaCasException.ResourceBusyException extends android.media.MediaCasException {
+  }
+
+  public static final class MediaCasException.UnsupportedCasException extends android.media.MediaCasException {
+  }
+
+  public class MediaCasStateException extends java.lang.IllegalStateException {
+    method @NonNull public String getDiagnosticInfo();
+  }
+
+  public final class MediaCodec {
+    method public void configure(@Nullable android.media.MediaFormat, @Nullable android.view.Surface, @Nullable android.media.MediaCrypto, int);
+    method public void configure(@Nullable android.media.MediaFormat, @Nullable android.view.Surface, int, @Nullable android.media.MediaDescrambler);
+    method @NonNull public static android.media.MediaCodec createByCodecName(@NonNull String) throws java.io.IOException;
+    method @NonNull public static android.media.MediaCodec createDecoderByType(@NonNull String) throws java.io.IOException;
+    method @NonNull public static android.media.MediaCodec createEncoderByType(@NonNull String) throws java.io.IOException;
+    method @NonNull public android.view.Surface createInputSurface();
+    method @NonNull public static android.view.Surface createPersistentInputSurface();
+    method public int dequeueInputBuffer(long);
+    method public int dequeueOutputBuffer(@NonNull android.media.MediaCodec.BufferInfo, long);
+    method protected void finalize();
+    method public void flush();
+    method @NonNull public String getCanonicalName();
+    method @NonNull public android.media.MediaCodecInfo getCodecInfo();
+    method @Nullable public java.nio.ByteBuffer getInputBuffer(int);
+    method @Deprecated @NonNull public java.nio.ByteBuffer[] getInputBuffers();
+    method @NonNull public android.media.MediaFormat getInputFormat();
+    method @Nullable public android.media.Image getInputImage(int);
+    method public android.os.PersistableBundle getMetrics();
+    method @NonNull public String getName();
+    method @Nullable public java.nio.ByteBuffer getOutputBuffer(int);
+    method @Deprecated @NonNull public java.nio.ByteBuffer[] getOutputBuffers();
+    method @NonNull public android.media.MediaFormat getOutputFormat();
+    method @NonNull public android.media.MediaFormat getOutputFormat(int);
+    method @NonNull public android.media.MediaCodec.OutputFrame getOutputFrame(int);
+    method @Nullable public android.media.Image getOutputImage(int);
+    method @NonNull public android.media.MediaCodec.QueueRequest getQueueRequest(int);
+    method @Nullable public static android.media.Image mapHardwareBuffer(@NonNull android.hardware.HardwareBuffer);
+    method public void queueInputBuffer(int, int, int, long, int) throws android.media.MediaCodec.CryptoException;
+    method public void queueSecureInputBuffer(int, int, @NonNull android.media.MediaCodec.CryptoInfo, long, int) throws android.media.MediaCodec.CryptoException;
+    method public void release();
+    method public void releaseOutputBuffer(int, boolean);
+    method public void releaseOutputBuffer(int, long);
+    method public void reset();
+    method public void setAudioPresentation(@NonNull android.media.AudioPresentation);
+    method public void setCallback(@Nullable android.media.MediaCodec.Callback, @Nullable android.os.Handler);
+    method public void setCallback(@Nullable android.media.MediaCodec.Callback);
+    method public void setInputSurface(@NonNull android.view.Surface);
+    method public void setOnFrameRenderedListener(@Nullable android.media.MediaCodec.OnFrameRenderedListener, @Nullable android.os.Handler);
+    method public void setOutputSurface(@NonNull android.view.Surface);
+    method public void setParameters(@Nullable android.os.Bundle);
+    method public void setVideoScalingMode(int);
+    method public void signalEndOfInputStream();
+    method public void start();
+    method public void stop();
+    field public static final int BUFFER_FLAG_CODEC_CONFIG = 2; // 0x2
+    field public static final int BUFFER_FLAG_END_OF_STREAM = 4; // 0x4
+    field public static final int BUFFER_FLAG_KEY_FRAME = 1; // 0x1
+    field public static final int BUFFER_FLAG_PARTIAL_FRAME = 8; // 0x8
+    field @Deprecated public static final int BUFFER_FLAG_SYNC_FRAME = 1; // 0x1
+    field public static final int CONFIGURE_FLAG_ENCODE = 1; // 0x1
+    field public static final int CONFIGURE_FLAG_USE_BLOCK_MODEL = 2; // 0x2
+    field public static final int CRYPTO_MODE_AES_CBC = 2; // 0x2
+    field public static final int CRYPTO_MODE_AES_CTR = 1; // 0x1
+    field public static final int CRYPTO_MODE_UNENCRYPTED = 0; // 0x0
+    field @Deprecated public static final int INFO_OUTPUT_BUFFERS_CHANGED = -3; // 0xfffffffd
+    field public static final int INFO_OUTPUT_FORMAT_CHANGED = -2; // 0xfffffffe
+    field public static final int INFO_TRY_AGAIN_LATER = -1; // 0xffffffff
+    field public static final String PARAMETER_KEY_HDR10_PLUS_INFO = "hdr10-plus-info";
+    field public static final String PARAMETER_KEY_LOW_LATENCY = "low-latency";
+    field public static final String PARAMETER_KEY_OFFSET_TIME = "time-offset-us";
+    field public static final String PARAMETER_KEY_REQUEST_SYNC_FRAME = "request-sync";
+    field public static final String PARAMETER_KEY_SUSPEND = "drop-input-frames";
+    field public static final String PARAMETER_KEY_SUSPEND_TIME = "drop-start-time-us";
+    field public static final String PARAMETER_KEY_VIDEO_BITRATE = "video-bitrate";
+    field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT = 1; // 0x1
+    field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING = 2; // 0x2
+  }
+
+  public static final class MediaCodec.BufferInfo {
+    ctor public MediaCodec.BufferInfo();
+    method public void set(int, int, long, int);
+    field public int flags;
+    field public int offset;
+    field public long presentationTimeUs;
+    field public int size;
+  }
+
+  public abstract static class MediaCodec.Callback {
+    ctor public MediaCodec.Callback();
+    method public abstract void onError(@NonNull android.media.MediaCodec, @NonNull android.media.MediaCodec.CodecException);
+    method public abstract void onInputBufferAvailable(@NonNull android.media.MediaCodec, int);
+    method public abstract void onOutputBufferAvailable(@NonNull android.media.MediaCodec, int, @NonNull android.media.MediaCodec.BufferInfo);
+    method public abstract void onOutputFormatChanged(@NonNull android.media.MediaCodec, @NonNull android.media.MediaFormat);
+  }
+
+  public static final class MediaCodec.CodecException extends java.lang.IllegalStateException {
+    method @NonNull public String getDiagnosticInfo();
+    method public int getErrorCode();
+    method public boolean isRecoverable();
+    method public boolean isTransient();
+    field public static final int ERROR_INSUFFICIENT_RESOURCE = 1100; // 0x44c
+    field public static final int ERROR_RECLAIMED = 1101; // 0x44d
+  }
+
+  public static final class MediaCodec.CryptoException extends java.lang.RuntimeException {
+    ctor public MediaCodec.CryptoException(int, @Nullable String);
+    method public int getErrorCode();
+    field public static final int ERROR_FRAME_TOO_LARGE = 8; // 0x8
+    field public static final int ERROR_INSUFFICIENT_OUTPUT_PROTECTION = 4; // 0x4
+    field public static final int ERROR_INSUFFICIENT_SECURITY = 7; // 0x7
+    field public static final int ERROR_KEY_EXPIRED = 2; // 0x2
+    field public static final int ERROR_LOST_STATE = 9; // 0x9
+    field public static final int ERROR_NO_KEY = 1; // 0x1
+    field public static final int ERROR_RESOURCE_BUSY = 3; // 0x3
+    field public static final int ERROR_SESSION_NOT_OPENED = 5; // 0x5
+    field public static final int ERROR_UNSUPPORTED_OPERATION = 6; // 0x6
+  }
+
+  public static final class MediaCodec.CryptoInfo {
+    ctor public MediaCodec.CryptoInfo();
+    method public void set(int, @NonNull int[], @NonNull int[], @NonNull byte[], @NonNull byte[], int);
+    method public void setPattern(android.media.MediaCodec.CryptoInfo.Pattern);
+    field public byte[] iv;
+    field public byte[] key;
+    field public int mode;
+    field public int[] numBytesOfClearData;
+    field public int[] numBytesOfEncryptedData;
+    field public int numSubSamples;
+  }
+
+  public static final class MediaCodec.CryptoInfo.Pattern {
+    ctor public MediaCodec.CryptoInfo.Pattern(int, int);
+    method public int getEncryptBlocks();
+    method public int getSkipBlocks();
+    method public void set(int, int);
+  }
+
+  public class MediaCodec.IncompatibleWithBlockModelException extends java.lang.RuntimeException {
+  }
+
+  public static final class MediaCodec.LinearBlock {
+    method protected void finalize();
+    method public static boolean isCodecCopyFreeCompatible(@NonNull String[]);
+    method public boolean isMappable();
+    method @NonNull public java.nio.ByteBuffer map();
+    method @Nullable public static android.media.MediaCodec.LinearBlock obtain(int, @NonNull String[]);
+    method public void recycle();
+  }
+
+  public static final class MediaCodec.MetricsConstants {
+    field public static final String CODEC = "android.media.mediacodec.codec";
+    field public static final String ENCODER = "android.media.mediacodec.encoder";
+    field public static final String HEIGHT = "android.media.mediacodec.height";
+    field public static final String MIME_TYPE = "android.media.mediacodec.mime";
+    field public static final String MODE = "android.media.mediacodec.mode";
+    field public static final String MODE_AUDIO = "audio";
+    field public static final String MODE_VIDEO = "video";
+    field public static final String ROTATION = "android.media.mediacodec.rotation";
+    field public static final String SECURE = "android.media.mediacodec.secure";
+    field public static final String WIDTH = "android.media.mediacodec.width";
+  }
+
+  public static interface MediaCodec.OnFrameRenderedListener {
+    method public void onFrameRendered(@NonNull android.media.MediaCodec, long, long);
+  }
+
+  public static final class MediaCodec.OutputFrame {
+    method @NonNull public java.util.Set<java.lang.String> getChangedKeys();
+    method public int getFlags();
+    method @NonNull public android.media.MediaFormat getFormat();
+    method @Nullable public android.hardware.HardwareBuffer getHardwareBuffer();
+    method @Nullable public android.media.MediaCodec.LinearBlock getLinearBlock();
+    method public long getPresentationTimeUs();
+  }
+
+  public final class MediaCodec.QueueRequest {
+    method public void queue();
+    method @NonNull public android.media.MediaCodec.QueueRequest setByteBufferParameter(@NonNull String, @NonNull java.nio.ByteBuffer);
+    method @NonNull public android.media.MediaCodec.QueueRequest setEncryptedLinearBlock(@NonNull android.media.MediaCodec.LinearBlock, int, int, @NonNull android.media.MediaCodec.CryptoInfo);
+    method @NonNull public android.media.MediaCodec.QueueRequest setFlags(int);
+    method @NonNull public android.media.MediaCodec.QueueRequest setFloatParameter(@NonNull String, float);
+    method @NonNull public android.media.MediaCodec.QueueRequest setHardwareBuffer(@NonNull android.hardware.HardwareBuffer);
+    method @NonNull public android.media.MediaCodec.QueueRequest setIntegerParameter(@NonNull String, int);
+    method @NonNull public android.media.MediaCodec.QueueRequest setLinearBlock(@NonNull android.media.MediaCodec.LinearBlock, int, int);
+    method @NonNull public android.media.MediaCodec.QueueRequest setLongParameter(@NonNull String, long);
+    method @NonNull public android.media.MediaCodec.QueueRequest setPresentationTimeUs(long);
+    method @NonNull public android.media.MediaCodec.QueueRequest setStringParameter(@NonNull String, @NonNull String);
+  }
+
+  public final class MediaCodecInfo {
+    method @NonNull public String getCanonicalName();
+    method public android.media.MediaCodecInfo.CodecCapabilities getCapabilitiesForType(String);
+    method @NonNull public String getName();
+    method public String[] getSupportedTypes();
+    method public boolean isAlias();
+    method public boolean isEncoder();
+    method public boolean isHardwareAccelerated();
+    method public boolean isSoftwareOnly();
+    method public boolean isVendor();
+  }
+
+  public static final class MediaCodecInfo.AudioCapabilities {
+    method public android.util.Range<java.lang.Integer> getBitrateRange();
+    method public int getMaxInputChannelCount();
+    method public android.util.Range<java.lang.Integer>[] getSupportedSampleRateRanges();
+    method public int[] getSupportedSampleRates();
+    method public boolean isSampleRateSupported(int);
+  }
+
+  public static final class MediaCodecInfo.CodecCapabilities {
+    ctor public MediaCodecInfo.CodecCapabilities();
+    method public static android.media.MediaCodecInfo.CodecCapabilities createFromProfileLevel(String, int, int);
+    method public android.media.MediaCodecInfo.AudioCapabilities getAudioCapabilities();
+    method public android.media.MediaFormat getDefaultFormat();
+    method public android.media.MediaCodecInfo.EncoderCapabilities getEncoderCapabilities();
+    method public int getMaxSupportedInstances();
+    method public String getMimeType();
+    method public android.media.MediaCodecInfo.VideoCapabilities getVideoCapabilities();
+    method public boolean isFeatureRequired(String);
+    method public boolean isFeatureSupported(String);
+    method public boolean isFormatSupported(android.media.MediaFormat);
+    field @Deprecated public static final int COLOR_Format12bitRGB444 = 3; // 0x3
+    field @Deprecated public static final int COLOR_Format16bitARGB1555 = 5; // 0x5
+    field @Deprecated public static final int COLOR_Format16bitARGB4444 = 4; // 0x4
+    field @Deprecated public static final int COLOR_Format16bitBGR565 = 7; // 0x7
+    field public static final int COLOR_Format16bitRGB565 = 6; // 0x6
+    field @Deprecated public static final int COLOR_Format18BitBGR666 = 41; // 0x29
+    field @Deprecated public static final int COLOR_Format18bitARGB1665 = 9; // 0x9
+    field @Deprecated public static final int COLOR_Format18bitRGB666 = 8; // 0x8
+    field @Deprecated public static final int COLOR_Format19bitARGB1666 = 10; // 0xa
+    field @Deprecated public static final int COLOR_Format24BitABGR6666 = 43; // 0x2b
+    field @Deprecated public static final int COLOR_Format24BitARGB6666 = 42; // 0x2a
+    field @Deprecated public static final int COLOR_Format24bitARGB1887 = 13; // 0xd
+    field public static final int COLOR_Format24bitBGR888 = 12; // 0xc
+    field @Deprecated public static final int COLOR_Format24bitRGB888 = 11; // 0xb
+    field @Deprecated public static final int COLOR_Format25bitARGB1888 = 14; // 0xe
+    field public static final int COLOR_Format32bitABGR8888 = 2130747392; // 0x7f00a000
+    field @Deprecated public static final int COLOR_Format32bitARGB8888 = 16; // 0x10
+    field @Deprecated public static final int COLOR_Format32bitBGRA8888 = 15; // 0xf
+    field @Deprecated public static final int COLOR_Format8bitRGB332 = 2; // 0x2
+    field @Deprecated public static final int COLOR_FormatCbYCrY = 27; // 0x1b
+    field @Deprecated public static final int COLOR_FormatCrYCbY = 28; // 0x1c
+    field public static final int COLOR_FormatL16 = 36; // 0x24
+    field @Deprecated public static final int COLOR_FormatL2 = 33; // 0x21
+    field @Deprecated public static final int COLOR_FormatL24 = 37; // 0x25
+    field @Deprecated public static final int COLOR_FormatL32 = 38; // 0x26
+    field @Deprecated public static final int COLOR_FormatL4 = 34; // 0x22
+    field public static final int COLOR_FormatL8 = 35; // 0x23
+    field @Deprecated public static final int COLOR_FormatMonochrome = 1; // 0x1
+    field public static final int COLOR_FormatRGBAFlexible = 2134288520; // 0x7f36a888
+    field public static final int COLOR_FormatRGBFlexible = 2134292616; // 0x7f36b888
+    field public static final int COLOR_FormatRawBayer10bit = 31; // 0x1f
+    field public static final int COLOR_FormatRawBayer8bit = 30; // 0x1e
+    field public static final int COLOR_FormatRawBayer8bitcompressed = 32; // 0x20
+    field public static final int COLOR_FormatSurface = 2130708361; // 0x7f000789
+    field @Deprecated public static final int COLOR_FormatYCbYCr = 25; // 0x19
+    field @Deprecated public static final int COLOR_FormatYCrYCb = 26; // 0x1a
+    field @Deprecated public static final int COLOR_FormatYUV411PackedPlanar = 18; // 0x12
+    field @Deprecated public static final int COLOR_FormatYUV411Planar = 17; // 0x11
+    field public static final int COLOR_FormatYUV420Flexible = 2135033992; // 0x7f420888
+    field @Deprecated public static final int COLOR_FormatYUV420PackedPlanar = 20; // 0x14
+    field @Deprecated public static final int COLOR_FormatYUV420PackedSemiPlanar = 39; // 0x27
+    field @Deprecated public static final int COLOR_FormatYUV420Planar = 19; // 0x13
+    field @Deprecated public static final int COLOR_FormatYUV420SemiPlanar = 21; // 0x15
+    field public static final int COLOR_FormatYUV422Flexible = 2135042184; // 0x7f422888
+    field @Deprecated public static final int COLOR_FormatYUV422PackedPlanar = 23; // 0x17
+    field @Deprecated public static final int COLOR_FormatYUV422PackedSemiPlanar = 40; // 0x28
+    field @Deprecated public static final int COLOR_FormatYUV422Planar = 22; // 0x16
+    field @Deprecated public static final int COLOR_FormatYUV422SemiPlanar = 24; // 0x18
+    field public static final int COLOR_FormatYUV444Flexible = 2135181448; // 0x7f444888
+    field @Deprecated public static final int COLOR_FormatYUV444Interleaved = 29; // 0x1d
+    field @Deprecated public static final int COLOR_QCOM_FormatYUV420SemiPlanar = 2141391872; // 0x7fa30c00
+    field @Deprecated public static final int COLOR_TI_FormatYUV420PackedSemiPlanar = 2130706688; // 0x7f000100
+    field public static final String FEATURE_AdaptivePlayback = "adaptive-playback";
+    field public static final String FEATURE_DynamicTimestamp = "dynamic-timestamp";
+    field public static final String FEATURE_FrameParsing = "frame-parsing";
+    field public static final String FEATURE_IntraRefresh = "intra-refresh";
+    field public static final String FEATURE_LowLatency = "low-latency";
+    field public static final String FEATURE_MultipleFrames = "multiple-frames";
+    field public static final String FEATURE_PartialFrame = "partial-frame";
+    field public static final String FEATURE_SecurePlayback = "secure-playback";
+    field public static final String FEATURE_TunneledPlayback = "tunneled-playback";
+    field public int[] colorFormats;
+    field public android.media.MediaCodecInfo.CodecProfileLevel[] profileLevels;
+  }
+
+  public static final class MediaCodecInfo.CodecProfileLevel {
+    ctor public MediaCodecInfo.CodecProfileLevel();
+    field public static final int AACObjectELD = 39; // 0x27
+    field public static final int AACObjectERLC = 17; // 0x11
+    field public static final int AACObjectERScalable = 20; // 0x14
+    field public static final int AACObjectHE = 5; // 0x5
+    field public static final int AACObjectHE_PS = 29; // 0x1d
+    field public static final int AACObjectLC = 2; // 0x2
+    field public static final int AACObjectLD = 23; // 0x17
+    field public static final int AACObjectLTP = 4; // 0x4
+    field public static final int AACObjectMain = 1; // 0x1
+    field public static final int AACObjectSSR = 3; // 0x3
+    field public static final int AACObjectScalable = 6; // 0x6
+    field public static final int AACObjectXHE = 42; // 0x2a
+    field public static final int AV1Level2 = 1; // 0x1
+    field public static final int AV1Level21 = 2; // 0x2
+    field public static final int AV1Level22 = 4; // 0x4
+    field public static final int AV1Level23 = 8; // 0x8
+    field public static final int AV1Level3 = 16; // 0x10
+    field public static final int AV1Level31 = 32; // 0x20
+    field public static final int AV1Level32 = 64; // 0x40
+    field public static final int AV1Level33 = 128; // 0x80
+    field public static final int AV1Level4 = 256; // 0x100
+    field public static final int AV1Level41 = 512; // 0x200
+    field public static final int AV1Level42 = 1024; // 0x400
+    field public static final int AV1Level43 = 2048; // 0x800
+    field public static final int AV1Level5 = 4096; // 0x1000
+    field public static final int AV1Level51 = 8192; // 0x2000
+    field public static final int AV1Level52 = 16384; // 0x4000
+    field public static final int AV1Level53 = 32768; // 0x8000
+    field public static final int AV1Level6 = 65536; // 0x10000
+    field public static final int AV1Level61 = 131072; // 0x20000
+    field public static final int AV1Level62 = 262144; // 0x40000
+    field public static final int AV1Level63 = 524288; // 0x80000
+    field public static final int AV1Level7 = 1048576; // 0x100000
+    field public static final int AV1Level71 = 2097152; // 0x200000
+    field public static final int AV1Level72 = 4194304; // 0x400000
+    field public static final int AV1Level73 = 8388608; // 0x800000
+    field public static final int AV1ProfileMain10 = 2; // 0x2
+    field public static final int AV1ProfileMain10HDR10 = 4096; // 0x1000
+    field public static final int AV1ProfileMain10HDR10Plus = 8192; // 0x2000
+    field public static final int AV1ProfileMain8 = 1; // 0x1
+    field public static final int AVCLevel1 = 1; // 0x1
+    field public static final int AVCLevel11 = 4; // 0x4
+    field public static final int AVCLevel12 = 8; // 0x8
+    field public static final int AVCLevel13 = 16; // 0x10
+    field public static final int AVCLevel1b = 2; // 0x2
+    field public static final int AVCLevel2 = 32; // 0x20
+    field public static final int AVCLevel21 = 64; // 0x40
+    field public static final int AVCLevel22 = 128; // 0x80
+    field public static final int AVCLevel3 = 256; // 0x100
+    field public static final int AVCLevel31 = 512; // 0x200
+    field public static final int AVCLevel32 = 1024; // 0x400
+    field public static final int AVCLevel4 = 2048; // 0x800
+    field public static final int AVCLevel41 = 4096; // 0x1000
+    field public static final int AVCLevel42 = 8192; // 0x2000
+    field public static final int AVCLevel5 = 16384; // 0x4000
+    field public static final int AVCLevel51 = 32768; // 0x8000
+    field public static final int AVCLevel52 = 65536; // 0x10000
+    field public static final int AVCLevel6 = 131072; // 0x20000
+    field public static final int AVCLevel61 = 262144; // 0x40000
+    field public static final int AVCLevel62 = 524288; // 0x80000
+    field public static final int AVCProfileBaseline = 1; // 0x1
+    field public static final int AVCProfileConstrainedBaseline = 65536; // 0x10000
+    field public static final int AVCProfileConstrainedHigh = 524288; // 0x80000
+    field public static final int AVCProfileExtended = 4; // 0x4
+    field public static final int AVCProfileHigh = 8; // 0x8
+    field public static final int AVCProfileHigh10 = 16; // 0x10
+    field public static final int AVCProfileHigh422 = 32; // 0x20
+    field public static final int AVCProfileHigh444 = 64; // 0x40
+    field public static final int AVCProfileMain = 2; // 0x2
+    field public static final int DolbyVisionLevelFhd24 = 4; // 0x4
+    field public static final int DolbyVisionLevelFhd30 = 8; // 0x8
+    field public static final int DolbyVisionLevelFhd60 = 16; // 0x10
+    field public static final int DolbyVisionLevelHd24 = 1; // 0x1
+    field public static final int DolbyVisionLevelHd30 = 2; // 0x2
+    field public static final int DolbyVisionLevelUhd24 = 32; // 0x20
+    field public static final int DolbyVisionLevelUhd30 = 64; // 0x40
+    field public static final int DolbyVisionLevelUhd48 = 128; // 0x80
+    field public static final int DolbyVisionLevelUhd60 = 256; // 0x100
+    field public static final int DolbyVisionProfileDvav110 = 1024; // 0x400
+    field public static final int DolbyVisionProfileDvavPen = 2; // 0x2
+    field public static final int DolbyVisionProfileDvavPer = 1; // 0x1
+    field public static final int DolbyVisionProfileDvavSe = 512; // 0x200
+    field public static final int DolbyVisionProfileDvheDen = 8; // 0x8
+    field public static final int DolbyVisionProfileDvheDer = 4; // 0x4
+    field public static final int DolbyVisionProfileDvheDtb = 128; // 0x80
+    field public static final int DolbyVisionProfileDvheDth = 64; // 0x40
+    field public static final int DolbyVisionProfileDvheDtr = 16; // 0x10
+    field public static final int DolbyVisionProfileDvheSt = 256; // 0x100
+    field public static final int DolbyVisionProfileDvheStn = 32; // 0x20
+    field public static final int H263Level10 = 1; // 0x1
+    field public static final int H263Level20 = 2; // 0x2
+    field public static final int H263Level30 = 4; // 0x4
+    field public static final int H263Level40 = 8; // 0x8
+    field public static final int H263Level45 = 16; // 0x10
+    field public static final int H263Level50 = 32; // 0x20
+    field public static final int H263Level60 = 64; // 0x40
+    field public static final int H263Level70 = 128; // 0x80
+    field public static final int H263ProfileBackwardCompatible = 4; // 0x4
+    field public static final int H263ProfileBaseline = 1; // 0x1
+    field public static final int H263ProfileH320Coding = 2; // 0x2
+    field public static final int H263ProfileHighCompression = 32; // 0x20
+    field public static final int H263ProfileHighLatency = 256; // 0x100
+    field public static final int H263ProfileISWV2 = 8; // 0x8
+    field public static final int H263ProfileISWV3 = 16; // 0x10
+    field public static final int H263ProfileInterlace = 128; // 0x80
+    field public static final int H263ProfileInternet = 64; // 0x40
+    field public static final int HEVCHighTierLevel1 = 2; // 0x2
+    field public static final int HEVCHighTierLevel2 = 8; // 0x8
+    field public static final int HEVCHighTierLevel21 = 32; // 0x20
+    field public static final int HEVCHighTierLevel3 = 128; // 0x80
+    field public static final int HEVCHighTierLevel31 = 512; // 0x200
+    field public static final int HEVCHighTierLevel4 = 2048; // 0x800
+    field public static final int HEVCHighTierLevel41 = 8192; // 0x2000
+    field public static final int HEVCHighTierLevel5 = 32768; // 0x8000
+    field public static final int HEVCHighTierLevel51 = 131072; // 0x20000
+    field public static final int HEVCHighTierLevel52 = 524288; // 0x80000
+    field public static final int HEVCHighTierLevel6 = 2097152; // 0x200000
+    field public static final int HEVCHighTierLevel61 = 8388608; // 0x800000
+    field public static final int HEVCHighTierLevel62 = 33554432; // 0x2000000
+    field public static final int HEVCMainTierLevel1 = 1; // 0x1
+    field public static final int HEVCMainTierLevel2 = 4; // 0x4
+    field public static final int HEVCMainTierLevel21 = 16; // 0x10
+    field public static final int HEVCMainTierLevel3 = 64; // 0x40
+    field public static final int HEVCMainTierLevel31 = 256; // 0x100
+    field public static final int HEVCMainTierLevel4 = 1024; // 0x400
+    field public static final int HEVCMainTierLevel41 = 4096; // 0x1000
+    field public static final int HEVCMainTierLevel5 = 16384; // 0x4000
+    field public static final int HEVCMainTierLevel51 = 65536; // 0x10000
+    field public static final int HEVCMainTierLevel52 = 262144; // 0x40000
+    field public static final int HEVCMainTierLevel6 = 1048576; // 0x100000
+    field public static final int HEVCMainTierLevel61 = 4194304; // 0x400000
+    field public static final int HEVCMainTierLevel62 = 16777216; // 0x1000000
+    field public static final int HEVCProfileMain = 1; // 0x1
+    field public static final int HEVCProfileMain10 = 2; // 0x2
+    field public static final int HEVCProfileMain10HDR10 = 4096; // 0x1000
+    field public static final int HEVCProfileMain10HDR10Plus = 8192; // 0x2000
+    field public static final int HEVCProfileMainStill = 4; // 0x4
+    field public static final int MPEG2LevelH14 = 2; // 0x2
+    field public static final int MPEG2LevelHL = 3; // 0x3
+    field public static final int MPEG2LevelHP = 4; // 0x4
+    field public static final int MPEG2LevelLL = 0; // 0x0
+    field public static final int MPEG2LevelML = 1; // 0x1
+    field public static final int MPEG2Profile422 = 2; // 0x2
+    field public static final int MPEG2ProfileHigh = 5; // 0x5
+    field public static final int MPEG2ProfileMain = 1; // 0x1
+    field public static final int MPEG2ProfileSNR = 3; // 0x3
+    field public static final int MPEG2ProfileSimple = 0; // 0x0
+    field public static final int MPEG2ProfileSpatial = 4; // 0x4
+    field public static final int MPEG4Level0 = 1; // 0x1
+    field public static final int MPEG4Level0b = 2; // 0x2
+    field public static final int MPEG4Level1 = 4; // 0x4
+    field public static final int MPEG4Level2 = 8; // 0x8
+    field public static final int MPEG4Level3 = 16; // 0x10
+    field public static final int MPEG4Level3b = 24; // 0x18
+    field public static final int MPEG4Level4 = 32; // 0x20
+    field public static final int MPEG4Level4a = 64; // 0x40
+    field public static final int MPEG4Level5 = 128; // 0x80
+    field public static final int MPEG4Level6 = 256; // 0x100
+    field public static final int MPEG4ProfileAdvancedCoding = 4096; // 0x1000
+    field public static final int MPEG4ProfileAdvancedCore = 8192; // 0x2000
+    field public static final int MPEG4ProfileAdvancedRealTime = 1024; // 0x400
+    field public static final int MPEG4ProfileAdvancedScalable = 16384; // 0x4000
+    field public static final int MPEG4ProfileAdvancedSimple = 32768; // 0x8000
+    field public static final int MPEG4ProfileBasicAnimated = 256; // 0x100
+    field public static final int MPEG4ProfileCore = 4; // 0x4
+    field public static final int MPEG4ProfileCoreScalable = 2048; // 0x800
+    field public static final int MPEG4ProfileHybrid = 512; // 0x200
+    field public static final int MPEG4ProfileMain = 8; // 0x8
+    field public static final int MPEG4ProfileNbit = 16; // 0x10
+    field public static final int MPEG4ProfileScalableTexture = 32; // 0x20
+    field public static final int MPEG4ProfileSimple = 1; // 0x1
+    field public static final int MPEG4ProfileSimpleFBA = 128; // 0x80
+    field public static final int MPEG4ProfileSimpleFace = 64; // 0x40
+    field public static final int MPEG4ProfileSimpleScalable = 2; // 0x2
+    field public static final int VP8Level_Version0 = 1; // 0x1
+    field public static final int VP8Level_Version1 = 2; // 0x2
+    field public static final int VP8Level_Version2 = 4; // 0x4
+    field public static final int VP8Level_Version3 = 8; // 0x8
+    field public static final int VP8ProfileMain = 1; // 0x1
+    field public static final int VP9Level1 = 1; // 0x1
+    field public static final int VP9Level11 = 2; // 0x2
+    field public static final int VP9Level2 = 4; // 0x4
+    field public static final int VP9Level21 = 8; // 0x8
+    field public static final int VP9Level3 = 16; // 0x10
+    field public static final int VP9Level31 = 32; // 0x20
+    field public static final int VP9Level4 = 64; // 0x40
+    field public static final int VP9Level41 = 128; // 0x80
+    field public static final int VP9Level5 = 256; // 0x100
+    field public static final int VP9Level51 = 512; // 0x200
+    field public static final int VP9Level52 = 1024; // 0x400
+    field public static final int VP9Level6 = 2048; // 0x800
+    field public static final int VP9Level61 = 4096; // 0x1000
+    field public static final int VP9Level62 = 8192; // 0x2000
+    field public static final int VP9Profile0 = 1; // 0x1
+    field public static final int VP9Profile1 = 2; // 0x2
+    field public static final int VP9Profile2 = 4; // 0x4
+    field public static final int VP9Profile2HDR = 4096; // 0x1000
+    field public static final int VP9Profile2HDR10Plus = 16384; // 0x4000
+    field public static final int VP9Profile3 = 8; // 0x8
+    field public static final int VP9Profile3HDR = 8192; // 0x2000
+    field public static final int VP9Profile3HDR10Plus = 32768; // 0x8000
+    field public int level;
+    field public int profile;
+  }
+
+  public static final class MediaCodecInfo.EncoderCapabilities {
+    method public android.util.Range<java.lang.Integer> getComplexityRange();
+    method public android.util.Range<java.lang.Integer> getQualityRange();
+    method public boolean isBitrateModeSupported(int);
+    field public static final int BITRATE_MODE_CBR = 2; // 0x2
+    field public static final int BITRATE_MODE_CQ = 0; // 0x0
+    field public static final int BITRATE_MODE_VBR = 1; // 0x1
+  }
+
+  public static final class MediaCodecInfo.VideoCapabilities {
+    method public boolean areSizeAndRateSupported(int, int, double);
+    method @Nullable public android.util.Range<java.lang.Double> getAchievableFrameRatesFor(int, int);
+    method public android.util.Range<java.lang.Integer> getBitrateRange();
+    method public int getHeightAlignment();
+    method public android.util.Range<java.lang.Integer> getSupportedFrameRates();
+    method public android.util.Range<java.lang.Double> getSupportedFrameRatesFor(int, int);
+    method public android.util.Range<java.lang.Integer> getSupportedHeights();
+    method public android.util.Range<java.lang.Integer> getSupportedHeightsFor(int);
+    method @Nullable public java.util.List<android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint> getSupportedPerformancePoints();
+    method public android.util.Range<java.lang.Integer> getSupportedWidths();
+    method public android.util.Range<java.lang.Integer> getSupportedWidthsFor(int);
+    method public int getWidthAlignment();
+    method public boolean isSizeSupported(int, int);
+  }
+
+  public static final class MediaCodecInfo.VideoCapabilities.PerformancePoint {
+    ctor public MediaCodecInfo.VideoCapabilities.PerformancePoint(int, int, int);
+    method public boolean covers(@NonNull android.media.MediaFormat);
+    method public boolean covers(@NonNull android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint);
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_100;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_120;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_200;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_24;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_240;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_25;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_30;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_50;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_60;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_100;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_120;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_200;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_24;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_240;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_25;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_30;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_50;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_60;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_24;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_25;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_30;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_48;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_50;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_60;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_100;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_120;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_200;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_24;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_240;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_25;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_30;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_50;
+    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_60;
+  }
+
+  public final class MediaCodecList {
+    ctor public MediaCodecList(int);
+    method public String findDecoderForFormat(android.media.MediaFormat);
+    method public String findEncoderForFormat(android.media.MediaFormat);
+    method @Deprecated public static int getCodecCount();
+    method @Deprecated public static android.media.MediaCodecInfo getCodecInfoAt(int);
+    method public android.media.MediaCodecInfo[] getCodecInfos();
+    field public static final int ALL_CODECS = 1; // 0x1
+    field public static final int REGULAR_CODECS = 0; // 0x0
+  }
+
+  public final class MediaCrypto {
+    ctor public MediaCrypto(@NonNull java.util.UUID, @NonNull byte[]) throws android.media.MediaCryptoException;
+    method protected void finalize();
+    method public static boolean isCryptoSchemeSupported(@NonNull java.util.UUID);
+    method public void release();
+    method public boolean requiresSecureDecoderComponent(@NonNull String);
+    method public void setMediaDrmSession(@NonNull byte[]) throws android.media.MediaCryptoException;
+  }
+
+  public final class MediaCryptoException extends java.lang.Exception {
+    ctor public MediaCryptoException(@Nullable String);
+  }
+
+  public abstract class MediaDataSource implements java.io.Closeable {
+    ctor public MediaDataSource();
+    method public abstract long getSize() throws java.io.IOException;
+    method public abstract int readAt(long, byte[], int, int) throws java.io.IOException;
+  }
+
+  public final class MediaDescrambler implements java.lang.AutoCloseable {
+    ctor public MediaDescrambler(int) throws android.media.MediaCasException.UnsupportedCasException;
+    method public void close();
+    method public int descramble(@NonNull java.nio.ByteBuffer, @NonNull java.nio.ByteBuffer, @NonNull android.media.MediaCodec.CryptoInfo);
+    method protected void finalize();
+    method public boolean requiresSecureDecoderComponent(@NonNull String);
+    method public void setMediaCasSession(@NonNull android.media.MediaCas.Session);
+    field public static final byte SCRAMBLE_CONTROL_EVEN_KEY = 2; // 0x2
+    field public static final byte SCRAMBLE_CONTROL_ODD_KEY = 3; // 0x3
+    field public static final byte SCRAMBLE_CONTROL_RESERVED = 1; // 0x1
+    field public static final byte SCRAMBLE_CONTROL_UNSCRAMBLED = 0; // 0x0
+    field public static final byte SCRAMBLE_FLAG_PES_HEADER = 1; // 0x1
+  }
+
+  public class MediaDescription implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public CharSequence getDescription();
+    method @Nullable public android.os.Bundle getExtras();
+    method @Nullable public android.graphics.Bitmap getIconBitmap();
+    method @Nullable public android.net.Uri getIconUri();
+    method @Nullable public String getMediaId();
+    method @Nullable public android.net.Uri getMediaUri();
+    method @Nullable public CharSequence getSubtitle();
+    method @Nullable public CharSequence getTitle();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final long BT_FOLDER_TYPE_ALBUMS = 2L; // 0x2L
+    field public static final long BT_FOLDER_TYPE_ARTISTS = 3L; // 0x3L
+    field public static final long BT_FOLDER_TYPE_GENRES = 4L; // 0x4L
+    field public static final long BT_FOLDER_TYPE_MIXED = 0L; // 0x0L
+    field public static final long BT_FOLDER_TYPE_PLAYLISTS = 5L; // 0x5L
+    field public static final long BT_FOLDER_TYPE_TITLES = 1L; // 0x1L
+    field public static final long BT_FOLDER_TYPE_YEARS = 6L; // 0x6L
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.MediaDescription> CREATOR;
+    field public static final String EXTRA_BT_FOLDER_TYPE = "android.media.extra.BT_FOLDER_TYPE";
+  }
+
+  public static class MediaDescription.Builder {
+    ctor public MediaDescription.Builder();
+    method public android.media.MediaDescription build();
+    method public android.media.MediaDescription.Builder setDescription(@Nullable CharSequence);
+    method public android.media.MediaDescription.Builder setExtras(@Nullable android.os.Bundle);
+    method public android.media.MediaDescription.Builder setIconBitmap(@Nullable android.graphics.Bitmap);
+    method public android.media.MediaDescription.Builder setIconUri(@Nullable android.net.Uri);
+    method public android.media.MediaDescription.Builder setMediaId(@Nullable String);
+    method public android.media.MediaDescription.Builder setMediaUri(@Nullable android.net.Uri);
+    method public android.media.MediaDescription.Builder setSubtitle(@Nullable CharSequence);
+    method public android.media.MediaDescription.Builder setTitle(@Nullable CharSequence);
+  }
+
+  public final class MediaDrm implements java.lang.AutoCloseable {
+    ctor public MediaDrm(@NonNull java.util.UUID) throws android.media.UnsupportedSchemeException;
+    method public void clearOnEventListener();
+    method public void clearOnExpirationUpdateListener();
+    method public void clearOnKeyStatusChangeListener();
+    method public void clearOnSessionLostStateListener();
+    method public void close();
+    method public void closeSession(@NonNull byte[]);
+    method @android.media.MediaDrm.HdcpLevel public int getConnectedHdcpLevel();
+    method public android.media.MediaDrm.CryptoSession getCryptoSession(@NonNull byte[], @NonNull String, @NonNull String);
+    method @NonNull public android.media.MediaDrm.KeyRequest getKeyRequest(@NonNull byte[], @Nullable byte[], @Nullable String, int, @Nullable java.util.HashMap<java.lang.String,java.lang.String>) throws android.media.NotProvisionedException;
+    method @android.media.MediaDrm.HdcpLevel public int getMaxHdcpLevel();
+    method public static int getMaxSecurityLevel();
+    method public int getMaxSessionCount();
+    method public android.os.PersistableBundle getMetrics();
+    method @NonNull public java.util.List<byte[]> getOfflineLicenseKeySetIds();
+    method public int getOfflineLicenseState(@NonNull byte[]);
+    method public int getOpenSessionCount();
+    method @NonNull public byte[] getPropertyByteArray(String);
+    method @NonNull public String getPropertyString(@NonNull String);
+    method @NonNull public android.media.MediaDrm.ProvisionRequest getProvisionRequest();
+    method @NonNull public byte[] getSecureStop(@NonNull byte[]);
+    method @NonNull public java.util.List<byte[]> getSecureStopIds();
+    method @NonNull public java.util.List<byte[]> getSecureStops();
+    method @android.media.MediaDrm.SecurityLevel public int getSecurityLevel(@NonNull byte[]);
+    method @NonNull public static java.util.List<java.util.UUID> getSupportedCryptoSchemes();
+    method public static boolean isCryptoSchemeSupported(@NonNull java.util.UUID);
+    method public static boolean isCryptoSchemeSupported(@NonNull java.util.UUID, @NonNull String);
+    method public static boolean isCryptoSchemeSupported(@NonNull java.util.UUID, @NonNull String, @android.media.MediaDrm.SecurityLevel int);
+    method @NonNull public byte[] openSession() throws android.media.NotProvisionedException, android.media.ResourceBusyException;
+    method @NonNull public byte[] openSession(@android.media.MediaDrm.SecurityLevel int) throws android.media.NotProvisionedException, android.media.ResourceBusyException;
+    method @Nullable public byte[] provideKeyResponse(@NonNull byte[], @NonNull byte[]) throws android.media.DeniedByServerException, android.media.NotProvisionedException;
+    method public void provideProvisionResponse(@NonNull byte[]) throws android.media.DeniedByServerException;
+    method @NonNull public java.util.HashMap<java.lang.String,java.lang.String> queryKeyStatus(@NonNull byte[]);
+    method @Deprecated public void release();
+    method @Deprecated public void releaseAllSecureStops();
+    method public void releaseSecureStops(@NonNull byte[]);
+    method public void removeAllSecureStops();
+    method public void removeKeys(@NonNull byte[]);
+    method public void removeOfflineLicense(@NonNull byte[]);
+    method public void removeSecureStop(@NonNull byte[]);
+    method public void restoreKeys(@NonNull byte[], @NonNull byte[]);
+    method public void setOnEventListener(@Nullable android.media.MediaDrm.OnEventListener);
+    method public void setOnEventListener(@Nullable android.media.MediaDrm.OnEventListener, @Nullable android.os.Handler);
+    method public void setOnEventListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaDrm.OnEventListener);
+    method public void setOnExpirationUpdateListener(@Nullable android.media.MediaDrm.OnExpirationUpdateListener, @Nullable android.os.Handler);
+    method public void setOnExpirationUpdateListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaDrm.OnExpirationUpdateListener);
+    method public void setOnKeyStatusChangeListener(@Nullable android.media.MediaDrm.OnKeyStatusChangeListener, @Nullable android.os.Handler);
+    method public void setOnKeyStatusChangeListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaDrm.OnKeyStatusChangeListener);
+    method public void setOnSessionLostStateListener(@Nullable android.media.MediaDrm.OnSessionLostStateListener, @Nullable android.os.Handler);
+    method public void setOnSessionLostStateListener(@NonNull java.util.concurrent.Executor, @Nullable android.media.MediaDrm.OnSessionLostStateListener);
+    method public void setPropertyByteArray(@NonNull String, @NonNull byte[]);
+    method public void setPropertyString(@NonNull String, @NonNull String);
+    field @Deprecated public static final int EVENT_KEY_EXPIRED = 3; // 0x3
+    field public static final int EVENT_KEY_REQUIRED = 2; // 0x2
+    field @Deprecated public static final int EVENT_PROVISION_REQUIRED = 1; // 0x1
+    field public static final int EVENT_SESSION_RECLAIMED = 5; // 0x5
+    field public static final int EVENT_VENDOR_DEFINED = 4; // 0x4
+    field public static final int HDCP_LEVEL_UNKNOWN = 0; // 0x0
+    field public static final int HDCP_NONE = 1; // 0x1
+    field public static final int HDCP_NO_DIGITAL_OUTPUT = 2147483647; // 0x7fffffff
+    field public static final int HDCP_V1 = 2; // 0x2
+    field public static final int HDCP_V2 = 3; // 0x3
+    field public static final int HDCP_V2_1 = 4; // 0x4
+    field public static final int HDCP_V2_2 = 5; // 0x5
+    field public static final int HDCP_V2_3 = 6; // 0x6
+    field public static final int KEY_TYPE_OFFLINE = 2; // 0x2
+    field public static final int KEY_TYPE_RELEASE = 3; // 0x3
+    field public static final int KEY_TYPE_STREAMING = 1; // 0x1
+    field public static final int OFFLINE_LICENSE_STATE_RELEASED = 2; // 0x2
+    field public static final int OFFLINE_LICENSE_STATE_UNKNOWN = 0; // 0x0
+    field public static final int OFFLINE_LICENSE_STATE_USABLE = 1; // 0x1
+    field public static final String PROPERTY_ALGORITHMS = "algorithms";
+    field public static final String PROPERTY_DESCRIPTION = "description";
+    field public static final String PROPERTY_DEVICE_UNIQUE_ID = "deviceUniqueId";
+    field public static final String PROPERTY_VENDOR = "vendor";
+    field public static final String PROPERTY_VERSION = "version";
+    field public static final int SECURITY_LEVEL_HW_SECURE_ALL = 5; // 0x5
+    field public static final int SECURITY_LEVEL_HW_SECURE_CRYPTO = 3; // 0x3
+    field public static final int SECURITY_LEVEL_HW_SECURE_DECODE = 4; // 0x4
+    field public static final int SECURITY_LEVEL_SW_SECURE_CRYPTO = 1; // 0x1
+    field public static final int SECURITY_LEVEL_SW_SECURE_DECODE = 2; // 0x2
+    field public static final int SECURITY_LEVEL_UNKNOWN = 0; // 0x0
+  }
+
+  public final class MediaDrm.CryptoSession {
+    method @NonNull public byte[] decrypt(@NonNull byte[], @NonNull byte[], @NonNull byte[]);
+    method @NonNull public byte[] encrypt(@NonNull byte[], @NonNull byte[], @NonNull byte[]);
+    method @NonNull public byte[] sign(@NonNull byte[], @NonNull byte[]);
+    method public boolean verify(@NonNull byte[], @NonNull byte[], @NonNull byte[]);
+  }
+
+  @Deprecated @IntDef({android.media.MediaDrm.HDCP_LEVEL_UNKNOWN, android.media.MediaDrm.HDCP_NONE, android.media.MediaDrm.HDCP_V1, android.media.MediaDrm.HDCP_V2, android.media.MediaDrm.HDCP_V2_1, android.media.MediaDrm.HDCP_V2_2, android.media.MediaDrm.HDCP_V2_3, android.media.MediaDrm.HDCP_NO_DIGITAL_OUTPUT}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface MediaDrm.HdcpLevel {
+  }
+
+  public static final class MediaDrm.KeyRequest {
+    method @NonNull public byte[] getData();
+    method @NonNull public String getDefaultUrl();
+    method public int getRequestType();
+    field public static final int REQUEST_TYPE_INITIAL = 0; // 0x0
+    field public static final int REQUEST_TYPE_NONE = 3; // 0x3
+    field public static final int REQUEST_TYPE_RELEASE = 2; // 0x2
+    field public static final int REQUEST_TYPE_RENEWAL = 1; // 0x1
+    field public static final int REQUEST_TYPE_UPDATE = 4; // 0x4
+  }
+
+  public static final class MediaDrm.KeyStatus {
+    method @NonNull public byte[] getKeyId();
+    method public int getStatusCode();
+    field public static final int STATUS_EXPIRED = 1; // 0x1
+    field public static final int STATUS_INTERNAL_ERROR = 4; // 0x4
+    field public static final int STATUS_OUTPUT_NOT_ALLOWED = 2; // 0x2
+    field public static final int STATUS_PENDING = 3; // 0x3
+    field public static final int STATUS_USABLE = 0; // 0x0
+    field public static final int STATUS_USABLE_IN_FUTURE = 5; // 0x5
+  }
+
+  public static final class MediaDrm.MediaDrmStateException extends java.lang.IllegalStateException {
+    method @NonNull public String getDiagnosticInfo();
+  }
+
+  public static final class MediaDrm.MetricsConstants {
+    field public static final String CLOSE_SESSION_ERROR_COUNT = "drm.mediadrm.close_session.error.count";
+    field public static final String CLOSE_SESSION_ERROR_LIST = "drm.mediadrm.close_session.error.list";
+    field public static final String CLOSE_SESSION_OK_COUNT = "drm.mediadrm.close_session.ok.count";
+    field public static final String EVENT_KEY_EXPIRED_COUNT = "drm.mediadrm.event.KEY_EXPIRED.count";
+    field public static final String EVENT_KEY_NEEDED_COUNT = "drm.mediadrm.event.KEY_NEEDED.count";
+    field public static final String EVENT_PROVISION_REQUIRED_COUNT = "drm.mediadrm.event.PROVISION_REQUIRED.count";
+    field public static final String EVENT_SESSION_RECLAIMED_COUNT = "drm.mediadrm.event.SESSION_RECLAIMED.count";
+    field public static final String EVENT_VENDOR_DEFINED_COUNT = "drm.mediadrm.event.VENDOR_DEFINED.count";
+    field public static final String GET_DEVICE_UNIQUE_ID_ERROR_COUNT = "drm.mediadrm.get_device_unique_id.error.count";
+    field public static final String GET_DEVICE_UNIQUE_ID_ERROR_LIST = "drm.mediadrm.get_device_unique_id.error.list";
+    field public static final String GET_DEVICE_UNIQUE_ID_OK_COUNT = "drm.mediadrm.get_device_unique_id.ok.count";
+    field public static final String GET_KEY_REQUEST_ERROR_COUNT = "drm.mediadrm.get_key_request.error.count";
+    field public static final String GET_KEY_REQUEST_ERROR_LIST = "drm.mediadrm.get_key_request.error.list";
+    field public static final String GET_KEY_REQUEST_OK_COUNT = "drm.mediadrm.get_key_request.ok.count";
+    field public static final String GET_KEY_REQUEST_OK_TIME_MICROS = "drm.mediadrm.get_key_request.ok.average_time_micros";
+    field public static final String GET_PROVISION_REQUEST_ERROR_COUNT = "drm.mediadrm.get_provision_request.error.count";
+    field public static final String GET_PROVISION_REQUEST_ERROR_LIST = "drm.mediadrm.get_provision_request.error.list";
+    field public static final String GET_PROVISION_REQUEST_OK_COUNT = "drm.mediadrm.get_provision_request.ok.count";
+    field public static final String KEY_STATUS_EXPIRED_COUNT = "drm.mediadrm.key_status.EXPIRED.count";
+    field public static final String KEY_STATUS_INTERNAL_ERROR_COUNT = "drm.mediadrm.key_status.INTERNAL_ERROR.count";
+    field public static final String KEY_STATUS_OUTPUT_NOT_ALLOWED_COUNT = "drm.mediadrm.key_status_change.OUTPUT_NOT_ALLOWED.count";
+    field public static final String KEY_STATUS_PENDING_COUNT = "drm.mediadrm.key_status_change.PENDING.count";
+    field public static final String KEY_STATUS_USABLE_COUNT = "drm.mediadrm.key_status_change.USABLE.count";
+    field public static final String OPEN_SESSION_ERROR_COUNT = "drm.mediadrm.open_session.error.count";
+    field public static final String OPEN_SESSION_ERROR_LIST = "drm.mediadrm.open_session.error.list";
+    field public static final String OPEN_SESSION_OK_COUNT = "drm.mediadrm.open_session.ok.count";
+    field public static final String PROVIDE_KEY_RESPONSE_ERROR_COUNT = "drm.mediadrm.provide_key_response.error.count";
+    field public static final String PROVIDE_KEY_RESPONSE_ERROR_LIST = "drm.mediadrm.provide_key_response.error.list";
+    field public static final String PROVIDE_KEY_RESPONSE_OK_COUNT = "drm.mediadrm.provide_key_response.ok.count";
+    field public static final String PROVIDE_KEY_RESPONSE_OK_TIME_MICROS = "drm.mediadrm.provide_key_response.ok.average_time_micros";
+    field public static final String PROVIDE_PROVISION_RESPONSE_ERROR_COUNT = "drm.mediadrm.provide_provision_response.error.count";
+    field public static final String PROVIDE_PROVISION_RESPONSE_ERROR_LIST = "drm.mediadrm.provide_provision_response.error.list";
+    field public static final String PROVIDE_PROVISION_RESPONSE_OK_COUNT = "drm.mediadrm.provide_provision_response.ok.count";
+    field public static final String SESSION_END_TIMES_MS = "drm.mediadrm.session_end_times_ms";
+    field public static final String SESSION_START_TIMES_MS = "drm.mediadrm.session_start_times_ms";
+  }
+
+  public static interface MediaDrm.OnEventListener {
+    method public void onEvent(@NonNull android.media.MediaDrm, @Nullable byte[], int, int, @Nullable byte[]);
+  }
+
+  public static interface MediaDrm.OnExpirationUpdateListener {
+    method public void onExpirationUpdate(@NonNull android.media.MediaDrm, @NonNull byte[], long);
+  }
+
+  public static interface MediaDrm.OnKeyStatusChangeListener {
+    method public void onKeyStatusChange(@NonNull android.media.MediaDrm, @NonNull byte[], @NonNull java.util.List<android.media.MediaDrm.KeyStatus>, boolean);
+  }
+
+  public static interface MediaDrm.OnSessionLostStateListener {
+    method public void onSessionLostState(@NonNull android.media.MediaDrm, @NonNull byte[]);
+  }
+
+  public static final class MediaDrm.ProvisionRequest {
+    method @NonNull public byte[] getData();
+    method @NonNull public String getDefaultUrl();
+  }
+
+  @Deprecated @IntDef({android.media.MediaDrm.SECURITY_LEVEL_UNKNOWN, android.media.MediaDrm.SECURITY_LEVEL_SW_SECURE_CRYPTO, android.media.MediaDrm.SECURITY_LEVEL_SW_SECURE_DECODE, android.media.MediaDrm.SECURITY_LEVEL_HW_SECURE_CRYPTO, android.media.MediaDrm.SECURITY_LEVEL_HW_SECURE_DECODE, android.media.MediaDrm.SECURITY_LEVEL_HW_SECURE_ALL}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface MediaDrm.SecurityLevel {
+  }
+
+  public static final class MediaDrm.SessionException extends java.lang.RuntimeException {
+    ctor public MediaDrm.SessionException(int, @Nullable String);
+    method public int getErrorCode();
+    field public static final int ERROR_RESOURCE_CONTENTION = 1; // 0x1
+    field public static final int ERROR_UNKNOWN = 0; // 0x0
+  }
+
+  public class MediaDrmException extends java.lang.Exception {
+    ctor public MediaDrmException(String);
+  }
+
+  public class MediaDrmResetException extends java.lang.IllegalStateException {
+    ctor public MediaDrmResetException(String);
+  }
+
+  public final class MediaExtractor {
+    ctor public MediaExtractor();
+    method public boolean advance();
+    method protected void finalize();
+    method @NonNull public java.util.List<android.media.AudioPresentation> getAudioPresentations(int);
+    method public long getCachedDuration();
+    method public android.media.MediaExtractor.CasInfo getCasInfo(int);
+    method public android.media.DrmInitData getDrmInitData();
+    method public android.os.PersistableBundle getMetrics();
+    method @Nullable public java.util.Map<java.util.UUID,byte[]> getPsshInfo();
+    method public boolean getSampleCryptoInfo(@NonNull android.media.MediaCodec.CryptoInfo);
+    method public int getSampleFlags();
+    method public long getSampleSize();
+    method public long getSampleTime();
+    method public int getSampleTrackIndex();
+    method public int getTrackCount();
+    method @NonNull public android.media.MediaFormat getTrackFormat(int);
+    method public boolean hasCacheReachedEndOfStream();
+    method public int readSampleData(@NonNull java.nio.ByteBuffer, int);
+    method public void release();
+    method public void seekTo(long, int);
+    method public void selectTrack(int);
+    method public void setDataSource(@NonNull android.media.MediaDataSource) throws java.io.IOException;
+    method public void setDataSource(@NonNull android.content.Context, @NonNull android.net.Uri, @Nullable java.util.Map<java.lang.String,java.lang.String>) throws java.io.IOException;
+    method public void setDataSource(@NonNull String, @Nullable java.util.Map<java.lang.String,java.lang.String>) throws java.io.IOException;
+    method public void setDataSource(@NonNull String) throws java.io.IOException;
+    method public void setDataSource(@NonNull android.content.res.AssetFileDescriptor) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public void setDataSource(@NonNull java.io.FileDescriptor) throws java.io.IOException;
+    method public void setDataSource(@NonNull java.io.FileDescriptor, long, long) throws java.io.IOException;
+    method public void setMediaCas(@NonNull android.media.MediaCas);
+    method public void unselectTrack(int);
+    field public static final int SAMPLE_FLAG_ENCRYPTED = 2; // 0x2
+    field public static final int SAMPLE_FLAG_PARTIAL_FRAME = 4; // 0x4
+    field public static final int SAMPLE_FLAG_SYNC = 1; // 0x1
+    field public static final int SEEK_TO_CLOSEST_SYNC = 2; // 0x2
+    field public static final int SEEK_TO_NEXT_SYNC = 1; // 0x1
+    field public static final int SEEK_TO_PREVIOUS_SYNC = 0; // 0x0
+  }
+
+  public static final class MediaExtractor.CasInfo {
+    method @Nullable public byte[] getPrivateData();
+    method public android.media.MediaCas.Session getSession();
+    method public int getSystemId();
+  }
+
+  public static final class MediaExtractor.MetricsConstants {
+    field public static final String FORMAT = "android.media.mediaextractor.fmt";
+    field public static final String MIME_TYPE = "android.media.mediaextractor.mime";
+    field public static final String TRACKS = "android.media.mediaextractor.ntrk";
+  }
+
+  public final class MediaFormat {
+    ctor public MediaFormat();
+    ctor public MediaFormat(@NonNull android.media.MediaFormat);
+    method public boolean containsFeature(@NonNull String);
+    method public boolean containsKey(@NonNull String);
+    method @NonNull public static android.media.MediaFormat createAudioFormat(@NonNull String, int, int);
+    method @NonNull public static android.media.MediaFormat createSubtitleFormat(@NonNull String, String);
+    method @NonNull public static android.media.MediaFormat createVideoFormat(@NonNull String, int, int);
+    method @Nullable public java.nio.ByteBuffer getByteBuffer(@NonNull String);
+    method @NonNull public java.nio.ByteBuffer getByteBuffer(@NonNull String, @NonNull java.nio.ByteBuffer);
+    method public boolean getFeatureEnabled(@NonNull String);
+    method @NonNull public java.util.Set<java.lang.String> getFeatures();
+    method public float getFloat(@NonNull String);
+    method public float getFloat(@NonNull String, float);
+    method public int getInteger(@NonNull String);
+    method public int getInteger(@NonNull String, int);
+    method @NonNull public java.util.Set<java.lang.String> getKeys();
+    method public long getLong(@NonNull String);
+    method public long getLong(@NonNull String, long);
+    method @Nullable public Number getNumber(@NonNull String);
+    method @NonNull public Number getNumber(@NonNull String, @NonNull Number);
+    method @Nullable public String getString(@NonNull String);
+    method @NonNull public String getString(@NonNull String, @NonNull String);
+    method public int getValueTypeForKey(@NonNull String);
+    method public void removeFeature(@NonNull String);
+    method public void removeKey(@NonNull String);
+    method public void setByteBuffer(@NonNull String, @Nullable java.nio.ByteBuffer);
+    method public void setFeatureEnabled(@NonNull String, boolean);
+    method public void setFloat(@NonNull String, float);
+    method public void setInteger(@NonNull String, int);
+    method public void setLong(@NonNull String, long);
+    method public void setString(@NonNull String, @Nullable String);
+    field public static final int COLOR_RANGE_FULL = 1; // 0x1
+    field public static final int COLOR_RANGE_LIMITED = 2; // 0x2
+    field public static final int COLOR_STANDARD_BT2020 = 6; // 0x6
+    field public static final int COLOR_STANDARD_BT601_NTSC = 4; // 0x4
+    field public static final int COLOR_STANDARD_BT601_PAL = 2; // 0x2
+    field public static final int COLOR_STANDARD_BT709 = 1; // 0x1
+    field public static final int COLOR_TRANSFER_HLG = 7; // 0x7
+    field public static final int COLOR_TRANSFER_LINEAR = 1; // 0x1
+    field public static final int COLOR_TRANSFER_SDR_VIDEO = 3; // 0x3
+    field public static final int COLOR_TRANSFER_ST2084 = 6; // 0x6
+    field public static final String KEY_AAC_DRC_ALBUM_MODE = "aac-drc-album-mode";
+    field public static final String KEY_AAC_DRC_ATTENUATION_FACTOR = "aac-drc-cut-level";
+    field public static final String KEY_AAC_DRC_BOOST_FACTOR = "aac-drc-boost-level";
+    field public static final String KEY_AAC_DRC_EFFECT_TYPE = "aac-drc-effect-type";
+    field public static final String KEY_AAC_DRC_HEAVY_COMPRESSION = "aac-drc-heavy-compression";
+    field public static final String KEY_AAC_DRC_OUTPUT_LOUDNESS = "aac-drc-output-loudness";
+    field public static final String KEY_AAC_DRC_TARGET_REFERENCE_LEVEL = "aac-target-ref-level";
+    field public static final String KEY_AAC_ENCODED_TARGET_LEVEL = "aac-encoded-target-level";
+    field public static final String KEY_AAC_MAX_OUTPUT_CHANNEL_COUNT = "aac-max-output-channel_count";
+    field public static final String KEY_AAC_PROFILE = "aac-profile";
+    field public static final String KEY_AAC_SBR_MODE = "aac-sbr-mode";
+    field public static final String KEY_AUDIO_SESSION_ID = "audio-session-id";
+    field public static final String KEY_BITRATE_MODE = "bitrate-mode";
+    field public static final String KEY_BIT_RATE = "bitrate";
+    field public static final String KEY_CAPTION_SERVICE_NUMBER = "caption-service-number";
+    field public static final String KEY_CAPTURE_RATE = "capture-rate";
+    field public static final String KEY_CHANNEL_COUNT = "channel-count";
+    field public static final String KEY_CHANNEL_MASK = "channel-mask";
+    field public static final String KEY_CODECS_STRING = "codecs-string";
+    field public static final String KEY_COLOR_FORMAT = "color-format";
+    field public static final String KEY_COLOR_RANGE = "color-range";
+    field public static final String KEY_COLOR_STANDARD = "color-standard";
+    field public static final String KEY_COLOR_TRANSFER = "color-transfer";
+    field public static final String KEY_COMPLEXITY = "complexity";
+    field public static final String KEY_CREATE_INPUT_SURFACE_SUSPENDED = "create-input-buffers-suspended";
+    field public static final String KEY_DURATION = "durationUs";
+    field public static final String KEY_ENCODER_DELAY = "encoder-delay";
+    field public static final String KEY_ENCODER_PADDING = "encoder-padding";
+    field public static final String KEY_FLAC_COMPRESSION_LEVEL = "flac-compression-level";
+    field public static final String KEY_FRAME_RATE = "frame-rate";
+    field public static final String KEY_GRID_COLUMNS = "grid-cols";
+    field public static final String KEY_GRID_ROWS = "grid-rows";
+    field public static final String KEY_HAPTIC_CHANNEL_COUNT = "haptic-channel-count";
+    field public static final String KEY_HARDWARE_AV_SYNC_ID = "hw-av-sync-id";
+    field public static final String KEY_HDR10_PLUS_INFO = "hdr10-plus-info";
+    field public static final String KEY_HDR_STATIC_INFO = "hdr-static-info";
+    field public static final String KEY_HEIGHT = "height";
+    field public static final String KEY_INTRA_REFRESH_PERIOD = "intra-refresh-period";
+    field public static final String KEY_IS_ADTS = "is-adts";
+    field public static final String KEY_IS_AUTOSELECT = "is-autoselect";
+    field public static final String KEY_IS_DEFAULT = "is-default";
+    field public static final String KEY_IS_FORCED_SUBTITLE = "is-forced-subtitle";
+    field public static final String KEY_I_FRAME_INTERVAL = "i-frame-interval";
+    field public static final String KEY_LANGUAGE = "language";
+    field public static final String KEY_LATENCY = "latency";
+    field public static final String KEY_LEVEL = "level";
+    field public static final String KEY_LOW_LATENCY = "low-latency";
+    field public static final String KEY_MAX_B_FRAMES = "max-bframes";
+    field public static final String KEY_MAX_FPS_TO_ENCODER = "max-fps-to-encoder";
+    field public static final String KEY_MAX_HEIGHT = "max-height";
+    field public static final String KEY_MAX_INPUT_SIZE = "max-input-size";
+    field public static final String KEY_MAX_PTS_GAP_TO_ENCODER = "max-pts-gap-to-encoder";
+    field public static final String KEY_MAX_WIDTH = "max-width";
+    field public static final String KEY_MIME = "mime";
+    field public static final String KEY_OPERATING_RATE = "operating-rate";
+    field public static final String KEY_OUTPUT_REORDER_DEPTH = "output-reorder-depth";
+    field public static final String KEY_PCM_ENCODING = "pcm-encoding";
+    field public static final String KEY_PIXEL_ASPECT_RATIO_HEIGHT = "sar-height";
+    field public static final String KEY_PIXEL_ASPECT_RATIO_WIDTH = "sar-width";
+    field public static final String KEY_PREPEND_HEADER_TO_SYNC_FRAMES = "prepend-sps-pps-to-idr-frames";
+    field public static final String KEY_PRIORITY = "priority";
+    field public static final String KEY_PROFILE = "profile";
+    field public static final String KEY_PUSH_BLANK_BUFFERS_ON_STOP = "push-blank-buffers-on-shutdown";
+    field public static final String KEY_QUALITY = "quality";
+    field public static final String KEY_REPEAT_PREVIOUS_FRAME_AFTER = "repeat-previous-frame-after";
+    field public static final String KEY_ROTATION = "rotation-degrees";
+    field public static final String KEY_SAMPLE_RATE = "sample-rate";
+    field public static final String KEY_SLICE_HEIGHT = "slice-height";
+    field public static final String KEY_STRIDE = "stride";
+    field public static final String KEY_TEMPORAL_LAYERING = "ts-schema";
+    field public static final String KEY_TILE_HEIGHT = "tile-height";
+    field public static final String KEY_TILE_WIDTH = "tile-width";
+    field public static final String KEY_TRACK_ID = "track-id";
+    field public static final String KEY_WIDTH = "width";
+    field public static final String MIMETYPE_AUDIO_AAC = "audio/mp4a-latm";
+    field public static final String MIMETYPE_AUDIO_AC3 = "audio/ac3";
+    field public static final String MIMETYPE_AUDIO_AC4 = "audio/ac4";
+    field public static final String MIMETYPE_AUDIO_AMR_NB = "audio/3gpp";
+    field public static final String MIMETYPE_AUDIO_AMR_WB = "audio/amr-wb";
+    field public static final String MIMETYPE_AUDIO_EAC3 = "audio/eac3";
+    field public static final String MIMETYPE_AUDIO_EAC3_JOC = "audio/eac3-joc";
+    field public static final String MIMETYPE_AUDIO_FLAC = "audio/flac";
+    field public static final String MIMETYPE_AUDIO_G711_ALAW = "audio/g711-alaw";
+    field public static final String MIMETYPE_AUDIO_G711_MLAW = "audio/g711-mlaw";
+    field public static final String MIMETYPE_AUDIO_MPEG = "audio/mpeg";
+    field public static final String MIMETYPE_AUDIO_MSGSM = "audio/gsm";
+    field public static final String MIMETYPE_AUDIO_OPUS = "audio/opus";
+    field public static final String MIMETYPE_AUDIO_QCELP = "audio/qcelp";
+    field public static final String MIMETYPE_AUDIO_RAW = "audio/raw";
+    field public static final String MIMETYPE_AUDIO_SCRAMBLED = "audio/scrambled";
+    field public static final String MIMETYPE_AUDIO_VORBIS = "audio/vorbis";
+    field public static final String MIMETYPE_IMAGE_ANDROID_HEIC = "image/vnd.android.heic";
+    field public static final String MIMETYPE_TEXT_CEA_608 = "text/cea-608";
+    field public static final String MIMETYPE_TEXT_CEA_708 = "text/cea-708";
+    field public static final String MIMETYPE_TEXT_SUBRIP = "application/x-subrip";
+    field public static final String MIMETYPE_TEXT_VTT = "text/vtt";
+    field public static final String MIMETYPE_VIDEO_AV1 = "video/av01";
+    field public static final String MIMETYPE_VIDEO_AVC = "video/avc";
+    field public static final String MIMETYPE_VIDEO_DOLBY_VISION = "video/dolby-vision";
+    field public static final String MIMETYPE_VIDEO_H263 = "video/3gpp";
+    field public static final String MIMETYPE_VIDEO_HEVC = "video/hevc";
+    field public static final String MIMETYPE_VIDEO_MPEG2 = "video/mpeg2";
+    field public static final String MIMETYPE_VIDEO_MPEG4 = "video/mp4v-es";
+    field public static final String MIMETYPE_VIDEO_RAW = "video/raw";
+    field public static final String MIMETYPE_VIDEO_SCRAMBLED = "video/scrambled";
+    field public static final String MIMETYPE_VIDEO_VP8 = "video/x-vnd.on2.vp8";
+    field public static final String MIMETYPE_VIDEO_VP9 = "video/x-vnd.on2.vp9";
+    field public static final int TYPE_BYTE_BUFFER = 5; // 0x5
+    field public static final int TYPE_FLOAT = 3; // 0x3
+    field public static final int TYPE_INTEGER = 1; // 0x1
+    field public static final int TYPE_LONG = 2; // 0x2
+    field public static final int TYPE_NULL = 0; // 0x0
+    field public static final int TYPE_STRING = 4; // 0x4
+  }
+
+  public final class MediaMetadata implements android.os.Parcelable {
+    method public boolean containsKey(String);
+    method public int describeContents();
+    method public android.graphics.Bitmap getBitmap(String);
+    method @NonNull public android.media.MediaDescription getDescription();
+    method public long getLong(String);
+    method public android.media.Rating getRating(String);
+    method public String getString(String);
+    method public CharSequence getText(String);
+    method public java.util.Set<java.lang.String> keySet();
+    method public int size();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.MediaMetadata> CREATOR;
+    field public static final String METADATA_KEY_ALBUM = "android.media.metadata.ALBUM";
+    field public static final String METADATA_KEY_ALBUM_ART = "android.media.metadata.ALBUM_ART";
+    field public static final String METADATA_KEY_ALBUM_ARTIST = "android.media.metadata.ALBUM_ARTIST";
+    field public static final String METADATA_KEY_ALBUM_ART_URI = "android.media.metadata.ALBUM_ART_URI";
+    field public static final String METADATA_KEY_ART = "android.media.metadata.ART";
+    field public static final String METADATA_KEY_ARTIST = "android.media.metadata.ARTIST";
+    field public static final String METADATA_KEY_ART_URI = "android.media.metadata.ART_URI";
+    field public static final String METADATA_KEY_AUTHOR = "android.media.metadata.AUTHOR";
+    field public static final String METADATA_KEY_BT_FOLDER_TYPE = "android.media.metadata.BT_FOLDER_TYPE";
+    field public static final String METADATA_KEY_COMPILATION = "android.media.metadata.COMPILATION";
+    field public static final String METADATA_KEY_COMPOSER = "android.media.metadata.COMPOSER";
+    field public static final String METADATA_KEY_DATE = "android.media.metadata.DATE";
+    field public static final String METADATA_KEY_DISC_NUMBER = "android.media.metadata.DISC_NUMBER";
+    field public static final String METADATA_KEY_DISPLAY_DESCRIPTION = "android.media.metadata.DISPLAY_DESCRIPTION";
+    field public static final String METADATA_KEY_DISPLAY_ICON = "android.media.metadata.DISPLAY_ICON";
+    field public static final String METADATA_KEY_DISPLAY_ICON_URI = "android.media.metadata.DISPLAY_ICON_URI";
+    field public static final String METADATA_KEY_DISPLAY_SUBTITLE = "android.media.metadata.DISPLAY_SUBTITLE";
+    field public static final String METADATA_KEY_DISPLAY_TITLE = "android.media.metadata.DISPLAY_TITLE";
+    field public static final String METADATA_KEY_DURATION = "android.media.metadata.DURATION";
+    field public static final String METADATA_KEY_GENRE = "android.media.metadata.GENRE";
+    field public static final String METADATA_KEY_MEDIA_ID = "android.media.metadata.MEDIA_ID";
+    field public static final String METADATA_KEY_MEDIA_URI = "android.media.metadata.MEDIA_URI";
+    field public static final String METADATA_KEY_NUM_TRACKS = "android.media.metadata.NUM_TRACKS";
+    field public static final String METADATA_KEY_RATING = "android.media.metadata.RATING";
+    field public static final String METADATA_KEY_TITLE = "android.media.metadata.TITLE";
+    field public static final String METADATA_KEY_TRACK_NUMBER = "android.media.metadata.TRACK_NUMBER";
+    field public static final String METADATA_KEY_USER_RATING = "android.media.metadata.USER_RATING";
+    field public static final String METADATA_KEY_WRITER = "android.media.metadata.WRITER";
+    field public static final String METADATA_KEY_YEAR = "android.media.metadata.YEAR";
+  }
+
+  public static final class MediaMetadata.Builder {
+    ctor public MediaMetadata.Builder();
+    ctor public MediaMetadata.Builder(android.media.MediaMetadata);
+    method public android.media.MediaMetadata build();
+    method public android.media.MediaMetadata.Builder putBitmap(String, android.graphics.Bitmap);
+    method public android.media.MediaMetadata.Builder putLong(String, long);
+    method public android.media.MediaMetadata.Builder putRating(String, android.media.Rating);
+    method public android.media.MediaMetadata.Builder putString(String, String);
+    method public android.media.MediaMetadata.Builder putText(String, CharSequence);
+  }
+
+  @Deprecated public abstract class MediaMetadataEditor {
+    method @Deprecated public void addEditableKey(int);
+    method @Deprecated public abstract void apply();
+    method @Deprecated public void clear();
+    method @Deprecated public android.graphics.Bitmap getBitmap(int, android.graphics.Bitmap) throws java.lang.IllegalArgumentException;
+    method @Deprecated public int[] getEditableKeys();
+    method @Deprecated public long getLong(int, long) throws java.lang.IllegalArgumentException;
+    method @Deprecated public Object getObject(int, Object) throws java.lang.IllegalArgumentException;
+    method @Deprecated public String getString(int, String) throws java.lang.IllegalArgumentException;
+    method @Deprecated public android.media.MediaMetadataEditor putBitmap(int, android.graphics.Bitmap) throws java.lang.IllegalArgumentException;
+    method @Deprecated public android.media.MediaMetadataEditor putLong(int, long) throws java.lang.IllegalArgumentException;
+    method @Deprecated public android.media.MediaMetadataEditor putObject(int, Object) throws java.lang.IllegalArgumentException;
+    method @Deprecated public android.media.MediaMetadataEditor putString(int, String) throws java.lang.IllegalArgumentException;
+    method @Deprecated public void removeEditableKeys();
+    field @Deprecated public static final int BITMAP_KEY_ARTWORK = 100; // 0x64
+    field @Deprecated public static final int RATING_KEY_BY_OTHERS = 101; // 0x65
+    field @Deprecated public static final int RATING_KEY_BY_USER = 268435457; // 0x10000001
+  }
+
+  public class MediaMetadataRetriever implements java.lang.AutoCloseable {
+    ctor public MediaMetadataRetriever();
+    method public void close();
+    method @Nullable public String extractMetadata(int);
+    method @Nullable public byte[] getEmbeddedPicture();
+    method @Nullable public android.graphics.Bitmap getFrameAtIndex(int, @NonNull android.media.MediaMetadataRetriever.BitmapParams);
+    method @Nullable public android.graphics.Bitmap getFrameAtIndex(int);
+    method @Nullable public android.graphics.Bitmap getFrameAtTime(long, int);
+    method @Nullable public android.graphics.Bitmap getFrameAtTime(long, int, @NonNull android.media.MediaMetadataRetriever.BitmapParams);
+    method @Nullable public android.graphics.Bitmap getFrameAtTime(long);
+    method @Nullable public android.graphics.Bitmap getFrameAtTime();
+    method @NonNull public java.util.List<android.graphics.Bitmap> getFramesAtIndex(int, int, @NonNull android.media.MediaMetadataRetriever.BitmapParams);
+    method @NonNull public java.util.List<android.graphics.Bitmap> getFramesAtIndex(int, int);
+    method @Nullable public android.graphics.Bitmap getImageAtIndex(int, @NonNull android.media.MediaMetadataRetriever.BitmapParams);
+    method @Nullable public android.graphics.Bitmap getImageAtIndex(int);
+    method @Nullable public android.graphics.Bitmap getPrimaryImage(@NonNull android.media.MediaMetadataRetriever.BitmapParams);
+    method @Nullable public android.graphics.Bitmap getPrimaryImage();
+    method @Nullable public android.graphics.Bitmap getScaledFrameAtTime(long, int, @IntRange(from=1) int, @IntRange(from=1) int);
+    method @Nullable public android.graphics.Bitmap getScaledFrameAtTime(long, int, @IntRange(from=1) int, @IntRange(from=1) int, @NonNull android.media.MediaMetadataRetriever.BitmapParams);
+    method public void release();
+    method public void setDataSource(String) throws java.lang.IllegalArgumentException;
+    method public void setDataSource(String, java.util.Map<java.lang.String,java.lang.String>) throws java.lang.IllegalArgumentException;
+    method public void setDataSource(java.io.FileDescriptor, long, long) throws java.lang.IllegalArgumentException;
+    method public void setDataSource(java.io.FileDescriptor) throws java.lang.IllegalArgumentException;
+    method public void setDataSource(android.content.Context, android.net.Uri) throws java.lang.IllegalArgumentException, java.lang.SecurityException;
+    method public void setDataSource(android.media.MediaDataSource) throws java.lang.IllegalArgumentException;
+    field public static final int METADATA_KEY_ALBUM = 1; // 0x1
+    field public static final int METADATA_KEY_ALBUMARTIST = 13; // 0xd
+    field public static final int METADATA_KEY_ARTIST = 2; // 0x2
+    field public static final int METADATA_KEY_AUTHOR = 3; // 0x3
+    field public static final int METADATA_KEY_BITRATE = 20; // 0x14
+    field public static final int METADATA_KEY_CAPTURE_FRAMERATE = 25; // 0x19
+    field public static final int METADATA_KEY_CD_TRACK_NUMBER = 0; // 0x0
+    field public static final int METADATA_KEY_COLOR_RANGE = 37; // 0x25
+    field public static final int METADATA_KEY_COLOR_STANDARD = 35; // 0x23
+    field public static final int METADATA_KEY_COLOR_TRANSFER = 36; // 0x24
+    field public static final int METADATA_KEY_COMPILATION = 15; // 0xf
+    field public static final int METADATA_KEY_COMPOSER = 4; // 0x4
+    field public static final int METADATA_KEY_DATE = 5; // 0x5
+    field public static final int METADATA_KEY_DISC_NUMBER = 14; // 0xe
+    field public static final int METADATA_KEY_DURATION = 9; // 0x9
+    field public static final int METADATA_KEY_EXIF_LENGTH = 34; // 0x22
+    field public static final int METADATA_KEY_EXIF_OFFSET = 33; // 0x21
+    field public static final int METADATA_KEY_GENRE = 6; // 0x6
+    field public static final int METADATA_KEY_HAS_AUDIO = 16; // 0x10
+    field public static final int METADATA_KEY_HAS_IMAGE = 26; // 0x1a
+    field public static final int METADATA_KEY_HAS_VIDEO = 17; // 0x11
+    field public static final int METADATA_KEY_IMAGE_COUNT = 27; // 0x1b
+    field public static final int METADATA_KEY_IMAGE_HEIGHT = 30; // 0x1e
+    field public static final int METADATA_KEY_IMAGE_PRIMARY = 28; // 0x1c
+    field public static final int METADATA_KEY_IMAGE_ROTATION = 31; // 0x1f
+    field public static final int METADATA_KEY_IMAGE_WIDTH = 29; // 0x1d
+    field public static final int METADATA_KEY_LOCATION = 23; // 0x17
+    field public static final int METADATA_KEY_MIMETYPE = 12; // 0xc
+    field public static final int METADATA_KEY_NUM_TRACKS = 10; // 0xa
+    field public static final int METADATA_KEY_TITLE = 7; // 0x7
+    field public static final int METADATA_KEY_VIDEO_FRAME_COUNT = 32; // 0x20
+    field public static final int METADATA_KEY_VIDEO_HEIGHT = 19; // 0x13
+    field public static final int METADATA_KEY_VIDEO_ROTATION = 24; // 0x18
+    field public static final int METADATA_KEY_VIDEO_WIDTH = 18; // 0x12
+    field public static final int METADATA_KEY_WRITER = 11; // 0xb
+    field public static final int METADATA_KEY_YEAR = 8; // 0x8
+    field public static final int OPTION_CLOSEST = 3; // 0x3
+    field public static final int OPTION_CLOSEST_SYNC = 2; // 0x2
+    field public static final int OPTION_NEXT_SYNC = 1; // 0x1
+    field public static final int OPTION_PREVIOUS_SYNC = 0; // 0x0
+  }
+
+  public static final class MediaMetadataRetriever.BitmapParams {
+    ctor public MediaMetadataRetriever.BitmapParams();
+    method @NonNull public android.graphics.Bitmap.Config getActualConfig();
+    method @NonNull public android.graphics.Bitmap.Config getPreferredConfig();
+    method public void setPreferredConfig(@NonNull android.graphics.Bitmap.Config);
+  }
+
+  public final class MediaMuxer {
+    ctor public MediaMuxer(@NonNull String, int) throws java.io.IOException;
+    ctor public MediaMuxer(@NonNull java.io.FileDescriptor, int) throws java.io.IOException;
+    method public int addTrack(@NonNull android.media.MediaFormat);
+    method public void release();
+    method public void setLocation(float, float);
+    method public void setOrientationHint(int);
+    method public void start();
+    method public void stop();
+    method public void writeSampleData(int, @NonNull java.nio.ByteBuffer, @NonNull android.media.MediaCodec.BufferInfo);
+  }
+
+  public static final class MediaMuxer.OutputFormat {
+    field public static final int MUXER_OUTPUT_3GPP = 2; // 0x2
+    field public static final int MUXER_OUTPUT_HEIF = 3; // 0x3
+    field public static final int MUXER_OUTPUT_MPEG_4 = 0; // 0x0
+    field public static final int MUXER_OUTPUT_OGG = 4; // 0x4
+    field public static final int MUXER_OUTPUT_WEBM = 1; // 0x1
+  }
+
+  public class MediaPlayer implements android.media.AudioRouting android.media.VolumeAutomation {
+    ctor public MediaPlayer();
+    method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
+    method public void addTimedTextSource(String, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public void addTimedTextSource(android.content.Context, android.net.Uri, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public void addTimedTextSource(java.io.FileDescriptor, String) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public void addTimedTextSource(java.io.FileDescriptor, long, long, String) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public void attachAuxEffect(int);
+    method public void clearOnMediaTimeDiscontinuityListener();
+    method public void clearOnSubtitleDataListener();
+    method public static android.media.MediaPlayer create(android.content.Context, android.net.Uri);
+    method public static android.media.MediaPlayer create(android.content.Context, android.net.Uri, android.view.SurfaceHolder);
+    method public static android.media.MediaPlayer create(android.content.Context, android.net.Uri, android.view.SurfaceHolder, android.media.AudioAttributes, int);
+    method public static android.media.MediaPlayer create(android.content.Context, int);
+    method public static android.media.MediaPlayer create(android.content.Context, int, android.media.AudioAttributes, int);
+    method @NonNull public android.media.VolumeShaper createVolumeShaper(@NonNull android.media.VolumeShaper.Configuration);
+    method public void deselectTrack(int) throws java.lang.IllegalStateException;
+    method protected void finalize();
+    method public int getAudioSessionId();
+    method public int getCurrentPosition();
+    method public android.media.MediaPlayer.DrmInfo getDrmInfo();
+    method @NonNull public String getDrmPropertyString(@NonNull String) throws android.media.MediaPlayer.NoDrmSchemeException;
+    method public int getDuration();
+    method @NonNull public android.media.MediaDrm.KeyRequest getKeyRequest(@Nullable byte[], @Nullable byte[], @Nullable String, int, @Nullable java.util.Map<java.lang.String,java.lang.String>) throws android.media.MediaPlayer.NoDrmSchemeException;
+    method public android.os.PersistableBundle getMetrics();
+    method @NonNull public android.media.PlaybackParams getPlaybackParams();
+    method public android.media.AudioDeviceInfo getPreferredDevice();
+    method public android.media.AudioDeviceInfo getRoutedDevice();
+    method public int getSelectedTrack(int) throws java.lang.IllegalStateException;
+    method @NonNull public android.media.SyncParams getSyncParams();
+    method @Nullable public android.media.MediaTimestamp getTimestamp();
+    method public android.media.MediaPlayer.TrackInfo[] getTrackInfo() throws java.lang.IllegalStateException;
+    method public int getVideoHeight();
+    method public int getVideoWidth();
+    method public boolean isLooping();
+    method public boolean isPlaying();
+    method public void pause() throws java.lang.IllegalStateException;
+    method public void prepare() throws java.io.IOException, java.lang.IllegalStateException;
+    method public void prepareAsync() throws java.lang.IllegalStateException;
+    method public void prepareDrm(@NonNull java.util.UUID) throws android.media.MediaPlayer.ProvisioningNetworkErrorException, android.media.MediaPlayer.ProvisioningServerErrorException, android.media.ResourceBusyException, android.media.UnsupportedSchemeException;
+    method public byte[] provideKeyResponse(@Nullable byte[], @NonNull byte[]) throws android.media.DeniedByServerException, android.media.MediaPlayer.NoDrmSchemeException;
+    method public void release();
+    method public void releaseDrm() throws android.media.MediaPlayer.NoDrmSchemeException;
+    method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
+    method public void reset();
+    method public void restoreKeys(@NonNull byte[]) throws android.media.MediaPlayer.NoDrmSchemeException;
+    method public void seekTo(long, int);
+    method public void seekTo(int) throws java.lang.IllegalStateException;
+    method public void selectTrack(int) throws java.lang.IllegalStateException;
+    method public void setAudioAttributes(android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
+    method public void setAudioSessionId(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method @Deprecated public void setAudioStreamType(int);
+    method public void setAuxEffectSendLevel(float);
+    method public void setDataSource(@NonNull android.content.Context, @NonNull android.net.Uri) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException;
+    method public void setDataSource(@NonNull android.content.Context, @NonNull android.net.Uri, @Nullable java.util.Map<java.lang.String,java.lang.String>, @Nullable java.util.List<java.net.HttpCookie>) throws java.io.IOException;
+    method public void setDataSource(@NonNull android.content.Context, @NonNull android.net.Uri, @Nullable java.util.Map<java.lang.String,java.lang.String>) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException;
+    method public void setDataSource(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException;
+    method public void setDataSource(@NonNull android.content.res.AssetFileDescriptor) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public void setDataSource(java.io.FileDescriptor) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public void setDataSource(java.io.FileDescriptor, long, long) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public void setDataSource(android.media.MediaDataSource) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public void setDisplay(android.view.SurfaceHolder);
+    method public void setDrmPropertyString(@NonNull String, @NonNull String) throws android.media.MediaPlayer.NoDrmSchemeException;
+    method public void setLooping(boolean);
+    method public void setNextMediaPlayer(android.media.MediaPlayer);
+    method public void setOnBufferingUpdateListener(android.media.MediaPlayer.OnBufferingUpdateListener);
+    method public void setOnCompletionListener(android.media.MediaPlayer.OnCompletionListener);
+    method public void setOnDrmConfigHelper(android.media.MediaPlayer.OnDrmConfigHelper);
+    method public void setOnDrmInfoListener(android.media.MediaPlayer.OnDrmInfoListener);
+    method public void setOnDrmInfoListener(android.media.MediaPlayer.OnDrmInfoListener, android.os.Handler);
+    method public void setOnDrmPreparedListener(android.media.MediaPlayer.OnDrmPreparedListener);
+    method public void setOnDrmPreparedListener(android.media.MediaPlayer.OnDrmPreparedListener, android.os.Handler);
+    method public void setOnErrorListener(android.media.MediaPlayer.OnErrorListener);
+    method public void setOnInfoListener(android.media.MediaPlayer.OnInfoListener);
+    method public void setOnMediaTimeDiscontinuityListener(@NonNull android.media.MediaPlayer.OnMediaTimeDiscontinuityListener, @NonNull android.os.Handler);
+    method public void setOnMediaTimeDiscontinuityListener(@NonNull android.media.MediaPlayer.OnMediaTimeDiscontinuityListener);
+    method public void setOnPreparedListener(android.media.MediaPlayer.OnPreparedListener);
+    method public void setOnSeekCompleteListener(android.media.MediaPlayer.OnSeekCompleteListener);
+    method public void setOnSubtitleDataListener(@NonNull android.media.MediaPlayer.OnSubtitleDataListener, @NonNull android.os.Handler);
+    method public void setOnSubtitleDataListener(@NonNull android.media.MediaPlayer.OnSubtitleDataListener);
+    method public void setOnTimedMetaDataAvailableListener(android.media.MediaPlayer.OnTimedMetaDataAvailableListener);
+    method public void setOnTimedTextListener(android.media.MediaPlayer.OnTimedTextListener);
+    method public void setOnVideoSizeChangedListener(android.media.MediaPlayer.OnVideoSizeChangedListener);
+    method public void setPlaybackParams(@NonNull android.media.PlaybackParams);
+    method public boolean setPreferredDevice(android.media.AudioDeviceInfo);
+    method public void setScreenOnWhilePlaying(boolean);
+    method public void setSurface(android.view.Surface);
+    method public void setSyncParams(@NonNull android.media.SyncParams);
+    method public void setVideoScalingMode(int);
+    method public void setVolume(float, float);
+    method public void setWakeMode(android.content.Context, int);
+    method public void start() throws java.lang.IllegalStateException;
+    method public void stop() throws java.lang.IllegalStateException;
+    field public static final int MEDIA_ERROR_IO = -1004; // 0xfffffc14
+    field public static final int MEDIA_ERROR_MALFORMED = -1007; // 0xfffffc11
+    field public static final int MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK = 200; // 0xc8
+    field public static final int MEDIA_ERROR_SERVER_DIED = 100; // 0x64
+    field public static final int MEDIA_ERROR_TIMED_OUT = -110; // 0xffffff92
+    field public static final int MEDIA_ERROR_UNKNOWN = 1; // 0x1
+    field public static final int MEDIA_ERROR_UNSUPPORTED = -1010; // 0xfffffc0e
+    field public static final int MEDIA_INFO_AUDIO_NOT_PLAYING = 804; // 0x324
+    field public static final int MEDIA_INFO_BAD_INTERLEAVING = 800; // 0x320
+    field public static final int MEDIA_INFO_BUFFERING_END = 702; // 0x2be
+    field public static final int MEDIA_INFO_BUFFERING_START = 701; // 0x2bd
+    field public static final int MEDIA_INFO_METADATA_UPDATE = 802; // 0x322
+    field public static final int MEDIA_INFO_NOT_SEEKABLE = 801; // 0x321
+    field public static final int MEDIA_INFO_STARTED_AS_NEXT = 2; // 0x2
+    field public static final int MEDIA_INFO_SUBTITLE_TIMED_OUT = 902; // 0x386
+    field public static final int MEDIA_INFO_UNKNOWN = 1; // 0x1
+    field public static final int MEDIA_INFO_UNSUPPORTED_SUBTITLE = 901; // 0x385
+    field public static final int MEDIA_INFO_VIDEO_NOT_PLAYING = 805; // 0x325
+    field public static final int MEDIA_INFO_VIDEO_RENDERING_START = 3; // 0x3
+    field public static final int MEDIA_INFO_VIDEO_TRACK_LAGGING = 700; // 0x2bc
+    field @Deprecated public static final String MEDIA_MIMETYPE_TEXT_SUBRIP = "application/x-subrip";
+    field public static final int PREPARE_DRM_STATUS_PREPARATION_ERROR = 3; // 0x3
+    field public static final int PREPARE_DRM_STATUS_PROVISIONING_NETWORK_ERROR = 1; // 0x1
+    field public static final int PREPARE_DRM_STATUS_PROVISIONING_SERVER_ERROR = 2; // 0x2
+    field public static final int PREPARE_DRM_STATUS_SUCCESS = 0; // 0x0
+    field public static final int SEEK_CLOSEST = 3; // 0x3
+    field public static final int SEEK_CLOSEST_SYNC = 2; // 0x2
+    field public static final int SEEK_NEXT_SYNC = 1; // 0x1
+    field public static final int SEEK_PREVIOUS_SYNC = 0; // 0x0
+    field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT = 1; // 0x1
+    field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING = 2; // 0x2
+  }
+
+  public static final class MediaPlayer.DrmInfo {
+    method public java.util.Map<java.util.UUID,byte[]> getPssh();
+    method public java.util.UUID[] getSupportedSchemes();
+  }
+
+  public static final class MediaPlayer.MetricsConstants {
+    field public static final String CODEC_AUDIO = "android.media.mediaplayer.audio.codec";
+    field public static final String CODEC_VIDEO = "android.media.mediaplayer.video.codec";
+    field public static final String DURATION = "android.media.mediaplayer.durationMs";
+    field public static final String ERRORS = "android.media.mediaplayer.err";
+    field public static final String ERROR_CODE = "android.media.mediaplayer.errcode";
+    field public static final String FRAMES = "android.media.mediaplayer.frames";
+    field public static final String FRAMES_DROPPED = "android.media.mediaplayer.dropped";
+    field public static final String HEIGHT = "android.media.mediaplayer.height";
+    field public static final String MIME_TYPE_AUDIO = "android.media.mediaplayer.audio.mime";
+    field public static final String MIME_TYPE_VIDEO = "android.media.mediaplayer.video.mime";
+    field public static final String PLAYING = "android.media.mediaplayer.playingMs";
+    field public static final String WIDTH = "android.media.mediaplayer.width";
+  }
+
+  public static final class MediaPlayer.NoDrmSchemeException extends android.media.MediaDrmException {
+    ctor public MediaPlayer.NoDrmSchemeException(String);
+  }
+
+  public static interface MediaPlayer.OnBufferingUpdateListener {
+    method public void onBufferingUpdate(android.media.MediaPlayer, int);
+  }
+
+  public static interface MediaPlayer.OnCompletionListener {
+    method public void onCompletion(android.media.MediaPlayer);
+  }
+
+  public static interface MediaPlayer.OnDrmConfigHelper {
+    method public void onDrmConfig(android.media.MediaPlayer);
+  }
+
+  public static interface MediaPlayer.OnDrmInfoListener {
+    method public void onDrmInfo(android.media.MediaPlayer, android.media.MediaPlayer.DrmInfo);
+  }
+
+  public static interface MediaPlayer.OnDrmPreparedListener {
+    method public void onDrmPrepared(android.media.MediaPlayer, int);
+  }
+
+  public static interface MediaPlayer.OnErrorListener {
+    method public boolean onError(android.media.MediaPlayer, int, int);
+  }
+
+  public static interface MediaPlayer.OnInfoListener {
+    method public boolean onInfo(android.media.MediaPlayer, int, int);
+  }
+
+  public static interface MediaPlayer.OnMediaTimeDiscontinuityListener {
+    method public void onMediaTimeDiscontinuity(@NonNull android.media.MediaPlayer, @NonNull android.media.MediaTimestamp);
+  }
+
+  public static interface MediaPlayer.OnPreparedListener {
+    method public void onPrepared(android.media.MediaPlayer);
+  }
+
+  public static interface MediaPlayer.OnSeekCompleteListener {
+    method public void onSeekComplete(android.media.MediaPlayer);
+  }
+
+  public static interface MediaPlayer.OnSubtitleDataListener {
+    method public void onSubtitleData(@NonNull android.media.MediaPlayer, @NonNull android.media.SubtitleData);
+  }
+
+  public static interface MediaPlayer.OnTimedMetaDataAvailableListener {
+    method public void onTimedMetaDataAvailable(android.media.MediaPlayer, android.media.TimedMetaData);
+  }
+
+  public static interface MediaPlayer.OnTimedTextListener {
+    method public void onTimedText(android.media.MediaPlayer, android.media.TimedText);
+  }
+
+  public static interface MediaPlayer.OnVideoSizeChangedListener {
+    method public void onVideoSizeChanged(android.media.MediaPlayer, int, int);
+  }
+
+  public static final class MediaPlayer.ProvisioningNetworkErrorException extends android.media.MediaDrmException {
+    ctor public MediaPlayer.ProvisioningNetworkErrorException(String);
+  }
+
+  public static final class MediaPlayer.ProvisioningServerErrorException extends android.media.MediaDrmException {
+    ctor public MediaPlayer.ProvisioningServerErrorException(String);
+  }
+
+  public static class MediaPlayer.TrackInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public android.media.MediaFormat getFormat();
+    method public String getLanguage();
+    method public int getTrackType();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int MEDIA_TRACK_TYPE_AUDIO = 2; // 0x2
+    field public static final int MEDIA_TRACK_TYPE_METADATA = 5; // 0x5
+    field public static final int MEDIA_TRACK_TYPE_SUBTITLE = 4; // 0x4
+    field public static final int MEDIA_TRACK_TYPE_TIMEDTEXT = 3; // 0x3
+    field public static final int MEDIA_TRACK_TYPE_UNKNOWN = 0; // 0x0
+    field public static final int MEDIA_TRACK_TYPE_VIDEO = 1; // 0x1
+  }
+
+  public class MediaRecorder implements android.media.AudioRecordingMonitor android.media.AudioRouting android.media.MicrophoneDirection {
+    ctor public MediaRecorder();
+    method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
+    method protected void finalize();
+    method public java.util.List<android.media.MicrophoneInfo> getActiveMicrophones() throws java.io.IOException;
+    method @Nullable public android.media.AudioRecordingConfiguration getActiveRecordingConfiguration();
+    method public static final int getAudioSourceMax();
+    method public int getMaxAmplitude() throws java.lang.IllegalStateException;
+    method public android.os.PersistableBundle getMetrics();
+    method public android.media.AudioDeviceInfo getPreferredDevice();
+    method public android.media.AudioDeviceInfo getRoutedDevice();
+    method public android.view.Surface getSurface();
+    method public boolean isPrivacySensitive();
+    method public void pause() throws java.lang.IllegalStateException;
+    method public void prepare() throws java.io.IOException, java.lang.IllegalStateException;
+    method public void registerAudioRecordingCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.AudioRecordingCallback);
+    method public void release();
+    method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
+    method public void reset();
+    method public void resume() throws java.lang.IllegalStateException;
+    method public void setAudioChannels(int);
+    method public void setAudioEncoder(int) throws java.lang.IllegalStateException;
+    method public void setAudioEncodingBitRate(int);
+    method public void setAudioSamplingRate(int);
+    method public void setAudioSource(int) throws java.lang.IllegalStateException;
+    method @Deprecated public void setCamera(android.hardware.Camera);
+    method public void setCaptureRate(double);
+    method public void setInputSurface(@NonNull android.view.Surface);
+    method public void setLocation(float, float);
+    method public void setMaxDuration(int) throws java.lang.IllegalArgumentException;
+    method public void setMaxFileSize(long) throws java.lang.IllegalArgumentException;
+    method public void setNextOutputFile(java.io.FileDescriptor) throws java.io.IOException;
+    method public void setNextOutputFile(java.io.File) throws java.io.IOException;
+    method public void setOnErrorListener(android.media.MediaRecorder.OnErrorListener);
+    method public void setOnInfoListener(android.media.MediaRecorder.OnInfoListener);
+    method public void setOrientationHint(int);
+    method public void setOutputFile(java.io.FileDescriptor) throws java.lang.IllegalStateException;
+    method public void setOutputFile(java.io.File);
+    method public void setOutputFile(String) throws java.lang.IllegalStateException;
+    method public void setOutputFormat(int) throws java.lang.IllegalStateException;
+    method public boolean setPreferredDevice(android.media.AudioDeviceInfo);
+    method public boolean setPreferredMicrophoneDirection(int);
+    method public boolean setPreferredMicrophoneFieldDimension(@FloatRange(from=-1.0, to=1.0) float);
+    method public void setPreviewDisplay(android.view.Surface);
+    method public void setPrivacySensitive(boolean);
+    method public void setProfile(android.media.CamcorderProfile);
+    method public void setVideoEncoder(int) throws java.lang.IllegalStateException;
+    method public void setVideoEncodingBitRate(int);
+    method public void setVideoEncodingProfileLevel(int, int);
+    method public void setVideoFrameRate(int) throws java.lang.IllegalStateException;
+    method public void setVideoSize(int, int) throws java.lang.IllegalStateException;
+    method public void setVideoSource(int) throws java.lang.IllegalStateException;
+    method public void start() throws java.lang.IllegalStateException;
+    method public void stop() throws java.lang.IllegalStateException;
+    method public void unregisterAudioRecordingCallback(@NonNull android.media.AudioManager.AudioRecordingCallback);
+    field public static final int MEDIA_ERROR_SERVER_DIED = 100; // 0x64
+    field public static final int MEDIA_RECORDER_ERROR_UNKNOWN = 1; // 0x1
+    field public static final int MEDIA_RECORDER_INFO_MAX_DURATION_REACHED = 800; // 0x320
+    field public static final int MEDIA_RECORDER_INFO_MAX_FILESIZE_APPROACHING = 802; // 0x322
+    field public static final int MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED = 801; // 0x321
+    field public static final int MEDIA_RECORDER_INFO_NEXT_OUTPUT_FILE_STARTED = 803; // 0x323
+    field public static final int MEDIA_RECORDER_INFO_UNKNOWN = 1; // 0x1
+  }
+
+  public final class MediaRecorder.AudioEncoder {
+    field public static final int AAC = 3; // 0x3
+    field public static final int AAC_ELD = 5; // 0x5
+    field public static final int AMR_NB = 1; // 0x1
+    field public static final int AMR_WB = 2; // 0x2
+    field public static final int DEFAULT = 0; // 0x0
+    field public static final int HE_AAC = 4; // 0x4
+    field public static final int OPUS = 7; // 0x7
+    field public static final int VORBIS = 6; // 0x6
+  }
+
+  public final class MediaRecorder.AudioSource {
+    field public static final int CAMCORDER = 5; // 0x5
+    field public static final int DEFAULT = 0; // 0x0
+    field public static final int MIC = 1; // 0x1
+    field @RequiresPermission(android.Manifest.permission.CAPTURE_AUDIO_OUTPUT) public static final int REMOTE_SUBMIX = 8; // 0x8
+    field public static final int UNPROCESSED = 9; // 0x9
+    field public static final int VOICE_CALL = 4; // 0x4
+    field public static final int VOICE_COMMUNICATION = 7; // 0x7
+    field public static final int VOICE_DOWNLINK = 3; // 0x3
+    field public static final int VOICE_PERFORMANCE = 10; // 0xa
+    field public static final int VOICE_RECOGNITION = 6; // 0x6
+    field public static final int VOICE_UPLINK = 2; // 0x2
+  }
+
+  public static final class MediaRecorder.MetricsConstants {
+    field public static final String AUDIO_BITRATE = "android.media.mediarecorder.audio-bitrate";
+    field public static final String AUDIO_CHANNELS = "android.media.mediarecorder.audio-channels";
+    field public static final String AUDIO_SAMPLERATE = "android.media.mediarecorder.audio-samplerate";
+    field public static final String AUDIO_TIMESCALE = "android.media.mediarecorder.audio-timescale";
+    field public static final String CAPTURE_FPS = "android.media.mediarecorder.capture-fps";
+    field public static final String CAPTURE_FPS_ENABLE = "android.media.mediarecorder.capture-fpsenable";
+    field public static final String FRAMERATE = "android.media.mediarecorder.frame-rate";
+    field public static final String HEIGHT = "android.media.mediarecorder.height";
+    field public static final String MOVIE_TIMESCALE = "android.media.mediarecorder.movie-timescale";
+    field public static final String ROTATION = "android.media.mediarecorder.rotation";
+    field public static final String VIDEO_BITRATE = "android.media.mediarecorder.video-bitrate";
+    field public static final String VIDEO_IFRAME_INTERVAL = "android.media.mediarecorder.video-iframe-interval";
+    field public static final String VIDEO_LEVEL = "android.media.mediarecorder.video-encoder-level";
+    field public static final String VIDEO_PROFILE = "android.media.mediarecorder.video-encoder-profile";
+    field public static final String VIDEO_TIMESCALE = "android.media.mediarecorder.video-timescale";
+    field public static final String WIDTH = "android.media.mediarecorder.width";
+  }
+
+  public static interface MediaRecorder.OnErrorListener {
+    method public void onError(android.media.MediaRecorder, int, int);
+  }
+
+  public static interface MediaRecorder.OnInfoListener {
+    method public void onInfo(android.media.MediaRecorder, int, int);
+  }
+
+  public final class MediaRecorder.OutputFormat {
+    field public static final int AAC_ADTS = 6; // 0x6
+    field public static final int AMR_NB = 3; // 0x3
+    field public static final int AMR_WB = 4; // 0x4
+    field public static final int DEFAULT = 0; // 0x0
+    field public static final int MPEG_2_TS = 8; // 0x8
+    field public static final int MPEG_4 = 2; // 0x2
+    field public static final int OGG = 11; // 0xb
+    field @Deprecated public static final int RAW_AMR = 3; // 0x3
+    field public static final int THREE_GPP = 1; // 0x1
+    field public static final int WEBM = 9; // 0x9
+  }
+
+  public final class MediaRecorder.VideoEncoder {
+    field public static final int DEFAULT = 0; // 0x0
+    field public static final int H263 = 1; // 0x1
+    field public static final int H264 = 2; // 0x2
+    field public static final int HEVC = 5; // 0x5
+    field public static final int MPEG_4_SP = 3; // 0x3
+    field public static final int VP8 = 4; // 0x4
+  }
+
+  public final class MediaRecorder.VideoSource {
+    field public static final int CAMERA = 1; // 0x1
+    field public static final int DEFAULT = 0; // 0x0
+    field public static final int SURFACE = 2; // 0x2
+  }
+
+  public final class MediaRoute2Info implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public String getClientPackageName();
+    method public int getConnectionState();
+    method @Nullable public CharSequence getDescription();
+    method @Nullable public android.os.Bundle getExtras();
+    method @NonNull public java.util.List<java.lang.String> getFeatures();
+    method @Nullable public android.net.Uri getIconUri();
+    method @NonNull public String getId();
+    method @NonNull public CharSequence getName();
+    method public int getVolume();
+    method public int getVolumeHandling();
+    method public int getVolumeMax();
+    method public boolean isSystemRoute();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field public static final int CONNECTION_STATE_CONNECTED = 2; // 0x2
+    field public static final int CONNECTION_STATE_CONNECTING = 1; // 0x1
+    field public static final int CONNECTION_STATE_DISCONNECTED = 0; // 0x0
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.MediaRoute2Info> CREATOR;
+    field public static final String FEATURE_LIVE_AUDIO = "android.media.route.feature.LIVE_AUDIO";
+    field public static final String FEATURE_LIVE_VIDEO = "android.media.route.feature.LIVE_VIDEO";
+    field public static final String FEATURE_REMOTE_AUDIO_PLAYBACK = "android.media.route.feature.REMOTE_AUDIO_PLAYBACK";
+    field public static final String FEATURE_REMOTE_PLAYBACK = "android.media.route.feature.REMOTE_PLAYBACK";
+    field public static final String FEATURE_REMOTE_VIDEO_PLAYBACK = "android.media.route.feature.REMOTE_VIDEO_PLAYBACK";
+    field public static final int PLAYBACK_VOLUME_FIXED = 0; // 0x0
+    field public static final int PLAYBACK_VOLUME_VARIABLE = 1; // 0x1
+  }
+
+  public static final class MediaRoute2Info.Builder {
+    ctor public MediaRoute2Info.Builder(@NonNull String, @NonNull CharSequence);
+    ctor public MediaRoute2Info.Builder(@NonNull android.media.MediaRoute2Info);
+    method @NonNull public android.media.MediaRoute2Info.Builder addFeature(@NonNull String);
+    method @NonNull public android.media.MediaRoute2Info.Builder addFeatures(@NonNull java.util.Collection<java.lang.String>);
+    method @NonNull public android.media.MediaRoute2Info build();
+    method @NonNull public android.media.MediaRoute2Info.Builder clearFeatures();
+    method @NonNull public android.media.MediaRoute2Info.Builder setClientPackageName(@Nullable String);
+    method @NonNull public android.media.MediaRoute2Info.Builder setConnectionState(int);
+    method @NonNull public android.media.MediaRoute2Info.Builder setDescription(@Nullable CharSequence);
+    method @NonNull public android.media.MediaRoute2Info.Builder setExtras(@Nullable android.os.Bundle);
+    method @NonNull public android.media.MediaRoute2Info.Builder setIconUri(@Nullable android.net.Uri);
+    method @NonNull public android.media.MediaRoute2Info.Builder setVolume(int);
+    method @NonNull public android.media.MediaRoute2Info.Builder setVolumeHandling(int);
+    method @NonNull public android.media.MediaRoute2Info.Builder setVolumeMax(int);
+  }
+
+  public abstract class MediaRoute2ProviderService extends android.app.Service {
+    ctor public MediaRoute2ProviderService();
+    method @NonNull public final java.util.List<android.media.RoutingSessionInfo> getAllSessionInfo();
+    method @Nullable public final android.media.RoutingSessionInfo getSessionInfo(@NonNull String);
+    method public final void notifyRequestFailed(long, int);
+    method public final void notifyRoutes(@NonNull java.util.Collection<android.media.MediaRoute2Info>);
+    method public final void notifySessionCreated(long, @NonNull android.media.RoutingSessionInfo);
+    method public final void notifySessionReleased(@NonNull String);
+    method public final void notifySessionUpdated(@NonNull android.media.RoutingSessionInfo);
+    method @CallSuper @Nullable public android.os.IBinder onBind(@NonNull android.content.Intent);
+    method public abstract void onCreateSession(long, @NonNull String, @NonNull String, @Nullable android.os.Bundle);
+    method public abstract void onDeselectRoute(long, @NonNull String, @NonNull String);
+    method public void onDiscoveryPreferenceChanged(@NonNull android.media.RouteDiscoveryPreference);
+    method public abstract void onReleaseSession(long, @NonNull String);
+    method public abstract void onSelectRoute(long, @NonNull String, @NonNull String);
+    method public abstract void onSetRouteVolume(long, @NonNull String, int);
+    method public abstract void onSetSessionVolume(long, @NonNull String, int);
+    method public abstract void onTransferToRoute(long, @NonNull String, @NonNull String);
+    field public static final int REASON_INVALID_COMMAND = 4; // 0x4
+    field public static final int REASON_NETWORK_ERROR = 2; // 0x2
+    field public static final int REASON_REJECTED = 1; // 0x1
+    field public static final int REASON_ROUTE_NOT_AVAILABLE = 3; // 0x3
+    field public static final int REASON_UNKNOWN_ERROR = 0; // 0x0
+    field public static final long REQUEST_ID_NONE = 0L; // 0x0L
+    field public static final String SERVICE_INTERFACE = "android.media.MediaRoute2ProviderService";
+  }
+
+  public class MediaRouter {
+    method public void addCallback(int, android.media.MediaRouter.Callback);
+    method public void addCallback(int, android.media.MediaRouter.Callback, int);
+    method public void addUserRoute(android.media.MediaRouter.UserRouteInfo);
+    method public void clearUserRoutes();
+    method public android.media.MediaRouter.RouteCategory createRouteCategory(CharSequence, boolean);
+    method public android.media.MediaRouter.RouteCategory createRouteCategory(int, boolean);
+    method public android.media.MediaRouter.UserRouteInfo createUserRoute(android.media.MediaRouter.RouteCategory);
+    method public android.media.MediaRouter.RouteCategory getCategoryAt(int);
+    method public int getCategoryCount();
+    method public android.media.MediaRouter.RouteInfo getDefaultRoute();
+    method public android.media.MediaRouter.RouteInfo getRouteAt(int);
+    method public int getRouteCount();
+    method public android.media.MediaRouter.RouteInfo getSelectedRoute(int);
+    method public void removeCallback(android.media.MediaRouter.Callback);
+    method public void removeUserRoute(android.media.MediaRouter.UserRouteInfo);
+    method public void selectRoute(int, @NonNull android.media.MediaRouter.RouteInfo);
+    field public static final int CALLBACK_FLAG_PERFORM_ACTIVE_SCAN = 1; // 0x1
+    field public static final int CALLBACK_FLAG_UNFILTERED_EVENTS = 2; // 0x2
+    field public static final int ROUTE_TYPE_LIVE_AUDIO = 1; // 0x1
+    field public static final int ROUTE_TYPE_LIVE_VIDEO = 2; // 0x2
+    field public static final int ROUTE_TYPE_USER = 8388608; // 0x800000
+  }
+
+  public abstract static class MediaRouter.Callback {
+    ctor public MediaRouter.Callback();
+    method public abstract void onRouteAdded(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
+    method public abstract void onRouteChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
+    method public abstract void onRouteGrouped(android.media.MediaRouter, android.media.MediaRouter.RouteInfo, android.media.MediaRouter.RouteGroup, int);
+    method public void onRoutePresentationDisplayChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
+    method public abstract void onRouteRemoved(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
+    method public abstract void onRouteSelected(android.media.MediaRouter, int, android.media.MediaRouter.RouteInfo);
+    method public abstract void onRouteUngrouped(android.media.MediaRouter, android.media.MediaRouter.RouteInfo, android.media.MediaRouter.RouteGroup);
+    method public abstract void onRouteUnselected(android.media.MediaRouter, int, android.media.MediaRouter.RouteInfo);
+    method public abstract void onRouteVolumeChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
+  }
+
+  public static class MediaRouter.RouteCategory {
+    method public CharSequence getName();
+    method public CharSequence getName(android.content.Context);
+    method public java.util.List<android.media.MediaRouter.RouteInfo> getRoutes(java.util.List<android.media.MediaRouter.RouteInfo>);
+    method public int getSupportedTypes();
+    method public boolean isGroupable();
+  }
+
+  public static class MediaRouter.RouteGroup extends android.media.MediaRouter.RouteInfo {
+    method public void addRoute(android.media.MediaRouter.RouteInfo);
+    method public void addRoute(android.media.MediaRouter.RouteInfo, int);
+    method public android.media.MediaRouter.RouteInfo getRouteAt(int);
+    method public int getRouteCount();
+    method public void removeRoute(android.media.MediaRouter.RouteInfo);
+    method public void removeRoute(int);
+    method public void setIconDrawable(android.graphics.drawable.Drawable);
+    method public void setIconResource(@DrawableRes int);
+  }
+
+  public static class MediaRouter.RouteInfo {
+    method public android.media.MediaRouter.RouteCategory getCategory();
+    method public CharSequence getDescription();
+    method public int getDeviceType();
+    method public android.media.MediaRouter.RouteGroup getGroup();
+    method public android.graphics.drawable.Drawable getIconDrawable();
+    method public CharSequence getName();
+    method public CharSequence getName(android.content.Context);
+    method public int getPlaybackStream();
+    method public int getPlaybackType();
+    method public android.view.Display getPresentationDisplay();
+    method public CharSequence getStatus();
+    method public int getSupportedTypes();
+    method public Object getTag();
+    method public int getVolume();
+    method public int getVolumeHandling();
+    method public int getVolumeMax();
+    method public boolean isConnecting();
+    method public boolean isEnabled();
+    method public void requestSetVolume(int);
+    method public void requestUpdateVolume(int);
+    method public void setTag(Object);
+    field public static final int DEVICE_TYPE_BLUETOOTH = 3; // 0x3
+    field public static final int DEVICE_TYPE_SPEAKER = 2; // 0x2
+    field public static final int DEVICE_TYPE_TV = 1; // 0x1
+    field public static final int DEVICE_TYPE_UNKNOWN = 0; // 0x0
+    field public static final int PLAYBACK_TYPE_LOCAL = 0; // 0x0
+    field public static final int PLAYBACK_TYPE_REMOTE = 1; // 0x1
+    field public static final int PLAYBACK_VOLUME_FIXED = 0; // 0x0
+    field public static final int PLAYBACK_VOLUME_VARIABLE = 1; // 0x1
+  }
+
+  public static class MediaRouter.SimpleCallback extends android.media.MediaRouter.Callback {
+    ctor public MediaRouter.SimpleCallback();
+    method public void onRouteAdded(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
+    method public void onRouteChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
+    method public void onRouteGrouped(android.media.MediaRouter, android.media.MediaRouter.RouteInfo, android.media.MediaRouter.RouteGroup, int);
+    method public void onRouteRemoved(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
+    method public void onRouteSelected(android.media.MediaRouter, int, android.media.MediaRouter.RouteInfo);
+    method public void onRouteUngrouped(android.media.MediaRouter, android.media.MediaRouter.RouteInfo, android.media.MediaRouter.RouteGroup);
+    method public void onRouteUnselected(android.media.MediaRouter, int, android.media.MediaRouter.RouteInfo);
+    method public void onRouteVolumeChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
+  }
+
+  public static class MediaRouter.UserRouteInfo extends android.media.MediaRouter.RouteInfo {
+    method public android.media.RemoteControlClient getRemoteControlClient();
+    method public void setDescription(CharSequence);
+    method public void setIconDrawable(android.graphics.drawable.Drawable);
+    method public void setIconResource(@DrawableRes int);
+    method public void setName(CharSequence);
+    method public void setName(int);
+    method public void setPlaybackStream(int);
+    method public void setPlaybackType(int);
+    method public void setRemoteControlClient(android.media.RemoteControlClient);
+    method public void setStatus(CharSequence);
+    method public void setVolume(int);
+    method public void setVolumeCallback(android.media.MediaRouter.VolumeCallback);
+    method public void setVolumeHandling(int);
+    method public void setVolumeMax(int);
+  }
+
+  public abstract static class MediaRouter.VolumeCallback {
+    ctor public MediaRouter.VolumeCallback();
+    method public abstract void onVolumeSetRequest(android.media.MediaRouter.RouteInfo, int);
+    method public abstract void onVolumeUpdateRequest(android.media.MediaRouter.RouteInfo, int);
+  }
+
+  public final class MediaRouter2 {
+    method @NonNull public java.util.List<android.media.MediaRouter2.RoutingController> getControllers();
+    method @NonNull public static android.media.MediaRouter2 getInstance(@NonNull android.content.Context);
+    method @NonNull public java.util.List<android.media.MediaRoute2Info> getRoutes();
+    method @NonNull public android.media.MediaRouter2.RoutingController getSystemController();
+    method public void registerControllerCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.ControllerCallback);
+    method public void registerRouteCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.RouteCallback, @NonNull android.media.RouteDiscoveryPreference);
+    method public void registerTransferCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.TransferCallback);
+    method public void setOnGetControllerHintsListener(@Nullable android.media.MediaRouter2.OnGetControllerHintsListener);
+    method public void stop();
+    method public void transferTo(@NonNull android.media.MediaRoute2Info);
+    method public void unregisterControllerCallback(@NonNull android.media.MediaRouter2.ControllerCallback);
+    method public void unregisterRouteCallback(@NonNull android.media.MediaRouter2.RouteCallback);
+    method public void unregisterTransferCallback(@NonNull android.media.MediaRouter2.TransferCallback);
+  }
+
+  public abstract static class MediaRouter2.ControllerCallback {
+    ctor public MediaRouter2.ControllerCallback();
+    method public void onControllerUpdated(@NonNull android.media.MediaRouter2.RoutingController);
+  }
+
+  public static interface MediaRouter2.OnGetControllerHintsListener {
+    method @Nullable public android.os.Bundle onGetControllerHints(@NonNull android.media.MediaRoute2Info);
+  }
+
+  public abstract static class MediaRouter2.RouteCallback {
+    ctor public MediaRouter2.RouteCallback();
+    method public void onRoutesAdded(@NonNull java.util.List<android.media.MediaRoute2Info>);
+    method public void onRoutesChanged(@NonNull java.util.List<android.media.MediaRoute2Info>);
+    method public void onRoutesRemoved(@NonNull java.util.List<android.media.MediaRoute2Info>);
+  }
+
+  public class MediaRouter2.RoutingController {
+    method public void deselectRoute(@NonNull android.media.MediaRoute2Info);
+    method @Nullable public android.os.Bundle getControlHints();
+    method @NonNull public java.util.List<android.media.MediaRoute2Info> getDeselectableRoutes();
+    method @NonNull public String getId();
+    method @NonNull public java.util.List<android.media.MediaRoute2Info> getSelectableRoutes();
+    method @NonNull public java.util.List<android.media.MediaRoute2Info> getSelectedRoutes();
+    method public int getVolume();
+    method public int getVolumeHandling();
+    method public int getVolumeMax();
+    method public boolean isReleased();
+    method public void release();
+    method public void selectRoute(@NonNull android.media.MediaRoute2Info);
+    method public void setVolume(int);
+  }
+
+  public abstract static class MediaRouter2.TransferCallback {
+    ctor public MediaRouter2.TransferCallback();
+    method public void onStop(@NonNull android.media.MediaRouter2.RoutingController);
+    method public void onTransfer(@NonNull android.media.MediaRouter2.RoutingController, @NonNull android.media.MediaRouter2.RoutingController);
+    method public void onTransferFailure(@NonNull android.media.MediaRoute2Info);
+  }
+
+  public class MediaScannerConnection implements android.content.ServiceConnection {
+    ctor public MediaScannerConnection(android.content.Context, android.media.MediaScannerConnection.MediaScannerConnectionClient);
+    method public void connect();
+    method public void disconnect();
+    method public boolean isConnected();
+    method public void onServiceConnected(android.content.ComponentName, android.os.IBinder);
+    method public void onServiceDisconnected(android.content.ComponentName);
+    method public void scanFile(String, String);
+    method public static void scanFile(android.content.Context, String[], String[], android.media.MediaScannerConnection.OnScanCompletedListener);
+  }
+
+  public static interface MediaScannerConnection.MediaScannerConnectionClient extends android.media.MediaScannerConnection.OnScanCompletedListener {
+    method public void onMediaScannerConnected();
+  }
+
+  public static interface MediaScannerConnection.OnScanCompletedListener {
+    method public void onScanCompleted(String, android.net.Uri);
+  }
+
+  public final class MediaSync {
+    ctor public MediaSync();
+    method @NonNull public android.view.Surface createInputSurface();
+    method protected void finalize();
+    method public void flush();
+    method @NonNull public android.media.PlaybackParams getPlaybackParams();
+    method @NonNull public android.media.SyncParams getSyncParams();
+    method @Nullable public android.media.MediaTimestamp getTimestamp();
+    method public void queueAudio(@NonNull java.nio.ByteBuffer, int, long);
+    method public void release();
+    method public void setAudioTrack(@Nullable android.media.AudioTrack);
+    method public void setCallback(@Nullable android.media.MediaSync.Callback, @Nullable android.os.Handler);
+    method public void setOnErrorListener(@Nullable android.media.MediaSync.OnErrorListener, @Nullable android.os.Handler);
+    method public void setPlaybackParams(@NonNull android.media.PlaybackParams);
+    method public void setSurface(@Nullable android.view.Surface);
+    method public void setSyncParams(@NonNull android.media.SyncParams);
+    field public static final int MEDIASYNC_ERROR_AUDIOTRACK_FAIL = 1; // 0x1
+    field public static final int MEDIASYNC_ERROR_SURFACE_FAIL = 2; // 0x2
+  }
+
+  public abstract static class MediaSync.Callback {
+    ctor public MediaSync.Callback();
+    method public abstract void onAudioBufferConsumed(@NonNull android.media.MediaSync, @NonNull java.nio.ByteBuffer, int);
+  }
+
+  public static interface MediaSync.OnErrorListener {
+    method public void onError(@NonNull android.media.MediaSync, int, int);
+  }
+
+  public class MediaSyncEvent {
+    method public static android.media.MediaSyncEvent createEvent(int) throws java.lang.IllegalArgumentException;
+    method public int getAudioSessionId();
+    method public int getType();
+    method public android.media.MediaSyncEvent setAudioSessionId(int) throws java.lang.IllegalArgumentException;
+    field public static final int SYNC_EVENT_NONE = 0; // 0x0
+    field public static final int SYNC_EVENT_PRESENTATION_COMPLETE = 1; // 0x1
+  }
+
+  public final class MediaTimestamp {
+    ctor public MediaTimestamp(long, long, @FloatRange(from=0.0f, to=java.lang.Float.MAX_VALUE) float);
+    method public long getAnchorMediaTimeUs();
+    method public long getAnchorSystemNanoTime();
+    method @Deprecated public long getAnchorSytemNanoTime();
+    method @FloatRange(from=0.0f, to=java.lang.Float.MAX_VALUE) public float getMediaClockRate();
+    field public static final android.media.MediaTimestamp TIMESTAMP_UNKNOWN;
+  }
+
+  public interface MicrophoneDirection {
+    method public boolean setPreferredMicrophoneDirection(int);
+    method public boolean setPreferredMicrophoneFieldDimension(@FloatRange(from=-1.0, to=1.0) float);
+    field public static final int MIC_DIRECTION_AWAY_FROM_USER = 2; // 0x2
+    field public static final int MIC_DIRECTION_EXTERNAL = 3; // 0x3
+    field public static final int MIC_DIRECTION_TOWARDS_USER = 1; // 0x1
+    field public static final int MIC_DIRECTION_UNSPECIFIED = 0; // 0x0
+  }
+
+  public final class MicrophoneInfo {
+    method @NonNull public String getAddress();
+    method public java.util.List<android.util.Pair<java.lang.Integer,java.lang.Integer>> getChannelMapping();
+    method public String getDescription();
+    method public int getDirectionality();
+    method public java.util.List<android.util.Pair<java.lang.Float,java.lang.Float>> getFrequencyResponse();
+    method public int getGroup();
+    method public int getId();
+    method public int getIndexInTheGroup();
+    method public int getLocation();
+    method public float getMaxSpl();
+    method public float getMinSpl();
+    method public android.media.MicrophoneInfo.Coordinate3F getOrientation();
+    method public android.media.MicrophoneInfo.Coordinate3F getPosition();
+    method public float getSensitivity();
+    method public int getType();
+    field public static final int CHANNEL_MAPPING_DIRECT = 1; // 0x1
+    field public static final int CHANNEL_MAPPING_PROCESSED = 2; // 0x2
+    field public static final int DIRECTIONALITY_BI_DIRECTIONAL = 2; // 0x2
+    field public static final int DIRECTIONALITY_CARDIOID = 3; // 0x3
+    field public static final int DIRECTIONALITY_HYPER_CARDIOID = 4; // 0x4
+    field public static final int DIRECTIONALITY_OMNI = 1; // 0x1
+    field public static final int DIRECTIONALITY_SUPER_CARDIOID = 5; // 0x5
+    field public static final int DIRECTIONALITY_UNKNOWN = 0; // 0x0
+    field public static final int GROUP_UNKNOWN = -1; // 0xffffffff
+    field public static final int INDEX_IN_THE_GROUP_UNKNOWN = -1; // 0xffffffff
+    field public static final int LOCATION_MAINBODY = 1; // 0x1
+    field public static final int LOCATION_MAINBODY_MOVABLE = 2; // 0x2
+    field public static final int LOCATION_PERIPHERAL = 3; // 0x3
+    field public static final int LOCATION_UNKNOWN = 0; // 0x0
+    field public static final android.media.MicrophoneInfo.Coordinate3F ORIENTATION_UNKNOWN;
+    field public static final android.media.MicrophoneInfo.Coordinate3F POSITION_UNKNOWN;
+    field public static final float SENSITIVITY_UNKNOWN = -3.4028235E38f;
+    field public static final float SPL_UNKNOWN = -3.4028235E38f;
+  }
+
+  public static final class MicrophoneInfo.Coordinate3F {
+    field public final float x;
+    field public final float y;
+    field public final float z;
+  }
+
+  public final class NotProvisionedException extends android.media.MediaDrmException {
+    ctor public NotProvisionedException(String);
+  }
+
+  public final class PlaybackParams implements android.os.Parcelable {
+    ctor public PlaybackParams();
+    method public android.media.PlaybackParams allowDefaults();
+    method public int describeContents();
+    method public int getAudioFallbackMode();
+    method public float getPitch();
+    method public float getSpeed();
+    method public android.media.PlaybackParams setAudioFallbackMode(int);
+    method public android.media.PlaybackParams setPitch(float);
+    method public android.media.PlaybackParams setSpeed(float);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int AUDIO_FALLBACK_MODE_DEFAULT = 0; // 0x0
+    field public static final int AUDIO_FALLBACK_MODE_FAIL = 2; // 0x2
+    field public static final int AUDIO_FALLBACK_MODE_MUTE = 1; // 0x1
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.PlaybackParams> CREATOR;
+  }
+
+  public final class Rating implements android.os.Parcelable {
+    method public int describeContents();
+    method public float getPercentRating();
+    method public int getRatingStyle();
+    method public float getStarRating();
+    method public boolean hasHeart();
+    method public boolean isRated();
+    method public boolean isThumbUp();
+    method public static android.media.Rating newHeartRating(boolean);
+    method public static android.media.Rating newPercentageRating(float);
+    method public static android.media.Rating newStarRating(int, float);
+    method public static android.media.Rating newThumbRating(boolean);
+    method public static android.media.Rating newUnratedRating(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.Rating> CREATOR;
+    field public static final int RATING_3_STARS = 3; // 0x3
+    field public static final int RATING_4_STARS = 4; // 0x4
+    field public static final int RATING_5_STARS = 5; // 0x5
+    field public static final int RATING_HEART = 1; // 0x1
+    field public static final int RATING_NONE = 0; // 0x0
+    field public static final int RATING_PERCENTAGE = 6; // 0x6
+    field public static final int RATING_THUMB_UP_DOWN = 2; // 0x2
+  }
+
+  @Deprecated public class RemoteControlClient {
+    ctor @Deprecated public RemoteControlClient(android.app.PendingIntent);
+    ctor @Deprecated public RemoteControlClient(android.app.PendingIntent, android.os.Looper);
+    method @Deprecated public android.media.RemoteControlClient.MetadataEditor editMetadata(boolean);
+    method @Deprecated public android.media.session.MediaSession getMediaSession();
+    method @Deprecated public void setMetadataUpdateListener(android.media.RemoteControlClient.OnMetadataUpdateListener);
+    method @Deprecated public void setOnGetPlaybackPositionListener(android.media.RemoteControlClient.OnGetPlaybackPositionListener);
+    method @Deprecated public void setPlaybackPositionUpdateListener(android.media.RemoteControlClient.OnPlaybackPositionUpdateListener);
+    method @Deprecated public void setPlaybackState(int);
+    method @Deprecated public void setPlaybackState(int, long, float);
+    method @Deprecated public void setTransportControlFlags(int);
+    field @Deprecated public static final int FLAG_KEY_MEDIA_FAST_FORWARD = 64; // 0x40
+    field @Deprecated public static final int FLAG_KEY_MEDIA_NEXT = 128; // 0x80
+    field @Deprecated public static final int FLAG_KEY_MEDIA_PAUSE = 16; // 0x10
+    field @Deprecated public static final int FLAG_KEY_MEDIA_PLAY = 4; // 0x4
+    field @Deprecated public static final int FLAG_KEY_MEDIA_PLAY_PAUSE = 8; // 0x8
+    field @Deprecated public static final int FLAG_KEY_MEDIA_POSITION_UPDATE = 256; // 0x100
+    field @Deprecated public static final int FLAG_KEY_MEDIA_PREVIOUS = 1; // 0x1
+    field @Deprecated public static final int FLAG_KEY_MEDIA_RATING = 512; // 0x200
+    field @Deprecated public static final int FLAG_KEY_MEDIA_REWIND = 2; // 0x2
+    field @Deprecated public static final int FLAG_KEY_MEDIA_STOP = 32; // 0x20
+    field @Deprecated public static final int PLAYSTATE_BUFFERING = 8; // 0x8
+    field @Deprecated public static final int PLAYSTATE_ERROR = 9; // 0x9
+    field @Deprecated public static final int PLAYSTATE_FAST_FORWARDING = 4; // 0x4
+    field @Deprecated public static final int PLAYSTATE_PAUSED = 2; // 0x2
+    field @Deprecated public static final int PLAYSTATE_PLAYING = 3; // 0x3
+    field @Deprecated public static final int PLAYSTATE_REWINDING = 5; // 0x5
+    field @Deprecated public static final int PLAYSTATE_SKIPPING_BACKWARDS = 7; // 0x7
+    field @Deprecated public static final int PLAYSTATE_SKIPPING_FORWARDS = 6; // 0x6
+    field @Deprecated public static final int PLAYSTATE_STOPPED = 1; // 0x1
+  }
+
+  @Deprecated public class RemoteControlClient.MetadataEditor extends android.media.MediaMetadataEditor {
+    method @Deprecated public void apply();
+    method public Object clone() throws java.lang.CloneNotSupportedException;
+    method @Deprecated public android.media.RemoteControlClient.MetadataEditor putBitmap(int, android.graphics.Bitmap) throws java.lang.IllegalArgumentException;
+    method @Deprecated public android.media.RemoteControlClient.MetadataEditor putLong(int, long) throws java.lang.IllegalArgumentException;
+    method @Deprecated public android.media.RemoteControlClient.MetadataEditor putObject(int, Object) throws java.lang.IllegalArgumentException;
+    method @Deprecated public android.media.RemoteControlClient.MetadataEditor putString(int, String) throws java.lang.IllegalArgumentException;
+    field @Deprecated public static final int BITMAP_KEY_ARTWORK = 100; // 0x64
+  }
+
+  @Deprecated public static interface RemoteControlClient.OnGetPlaybackPositionListener {
+    method @Deprecated public long onGetPlaybackPosition();
+  }
+
+  @Deprecated public static interface RemoteControlClient.OnMetadataUpdateListener {
+    method @Deprecated public void onMetadataUpdate(int, Object);
+  }
+
+  @Deprecated public static interface RemoteControlClient.OnPlaybackPositionUpdateListener {
+    method @Deprecated public void onPlaybackPositionUpdate(long);
+  }
+
+  @Deprecated public final class RemoteController {
+    ctor @Deprecated public RemoteController(android.content.Context, android.media.RemoteController.OnClientUpdateListener) throws java.lang.IllegalArgumentException;
+    ctor @Deprecated public RemoteController(android.content.Context, android.media.RemoteController.OnClientUpdateListener, android.os.Looper) throws java.lang.IllegalArgumentException;
+    method @Deprecated public boolean clearArtworkConfiguration();
+    method @Deprecated public android.media.RemoteController.MetadataEditor editMetadata();
+    method @Deprecated public long getEstimatedMediaPosition();
+    method @Deprecated public boolean seekTo(long) throws java.lang.IllegalArgumentException;
+    method @Deprecated public boolean sendMediaKeyEvent(android.view.KeyEvent) throws java.lang.IllegalArgumentException;
+    method @Deprecated public boolean setArtworkConfiguration(int, int) throws java.lang.IllegalArgumentException;
+    method @Deprecated public boolean setSynchronizationMode(int) throws java.lang.IllegalArgumentException;
+    field @Deprecated public static final int POSITION_SYNCHRONIZATION_CHECK = 1; // 0x1
+    field @Deprecated public static final int POSITION_SYNCHRONIZATION_NONE = 0; // 0x0
+  }
+
+  @Deprecated public class RemoteController.MetadataEditor extends android.media.MediaMetadataEditor {
+    method @Deprecated public void apply();
+  }
+
+  @Deprecated public static interface RemoteController.OnClientUpdateListener {
+    method @Deprecated public void onClientChange(boolean);
+    method @Deprecated public void onClientMetadataUpdate(android.media.RemoteController.MetadataEditor);
+    method @Deprecated public void onClientPlaybackStateUpdate(int);
+    method @Deprecated public void onClientPlaybackStateUpdate(int, long, long, float);
+    method @Deprecated public void onClientTransportControlUpdate(int);
+  }
+
+  public final class ResourceBusyException extends android.media.MediaDrmException {
+    ctor public ResourceBusyException(String);
+  }
+
+  public class Ringtone {
+    method protected void finalize();
+    method public android.media.AudioAttributes getAudioAttributes();
+    method @Deprecated public int getStreamType();
+    method public String getTitle(android.content.Context);
+    method public float getVolume();
+    method public boolean isLooping();
+    method public boolean isPlaying();
+    method public void play();
+    method public void setAudioAttributes(android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
+    method public void setLooping(boolean);
+    method @Deprecated public void setStreamType(int);
+    method public void setVolume(float);
+    method public void stop();
+  }
+
+  public class RingtoneManager {
+    ctor public RingtoneManager(android.app.Activity);
+    ctor public RingtoneManager(android.content.Context);
+    method public static android.net.Uri getActualDefaultRingtoneUri(android.content.Context, int);
+    method public android.database.Cursor getCursor();
+    method public static int getDefaultType(android.net.Uri);
+    method public static android.net.Uri getDefaultUri(int);
+    method @Deprecated public boolean getIncludeDrm();
+    method public android.media.Ringtone getRingtone(int);
+    method public static android.media.Ringtone getRingtone(android.content.Context, android.net.Uri);
+    method public int getRingtonePosition(android.net.Uri);
+    method public android.net.Uri getRingtoneUri(int);
+    method public boolean getStopPreviousRingtone();
+    method public static android.net.Uri getValidRingtoneUri(android.content.Context);
+    method public boolean hasHapticChannels(int);
+    method public static boolean hasHapticChannels(@NonNull android.net.Uri);
+    method public int inferStreamType();
+    method public static boolean isDefault(android.net.Uri);
+    method @Nullable public static android.content.res.AssetFileDescriptor openDefaultRingtoneUri(@NonNull android.content.Context, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
+    method public static void setActualDefaultRingtoneUri(android.content.Context, int, android.net.Uri);
+    method @Deprecated public void setIncludeDrm(boolean);
+    method public void setStopPreviousRingtone(boolean);
+    method public void setType(int);
+    method public void stopPreviousRingtone();
+    field public static final String ACTION_RINGTONE_PICKER = "android.intent.action.RINGTONE_PICKER";
+    field public static final String EXTRA_RINGTONE_DEFAULT_URI = "android.intent.extra.ringtone.DEFAULT_URI";
+    field public static final String EXTRA_RINGTONE_EXISTING_URI = "android.intent.extra.ringtone.EXISTING_URI";
+    field @Deprecated public static final String EXTRA_RINGTONE_INCLUDE_DRM = "android.intent.extra.ringtone.INCLUDE_DRM";
+    field public static final String EXTRA_RINGTONE_PICKED_URI = "android.intent.extra.ringtone.PICKED_URI";
+    field public static final String EXTRA_RINGTONE_SHOW_DEFAULT = "android.intent.extra.ringtone.SHOW_DEFAULT";
+    field public static final String EXTRA_RINGTONE_SHOW_SILENT = "android.intent.extra.ringtone.SHOW_SILENT";
+    field public static final String EXTRA_RINGTONE_TITLE = "android.intent.extra.ringtone.TITLE";
+    field public static final String EXTRA_RINGTONE_TYPE = "android.intent.extra.ringtone.TYPE";
+    field public static final int ID_COLUMN_INDEX = 0; // 0x0
+    field public static final int TITLE_COLUMN_INDEX = 1; // 0x1
+    field public static final int TYPE_ALARM = 4; // 0x4
+    field public static final int TYPE_ALL = 7; // 0x7
+    field public static final int TYPE_NOTIFICATION = 2; // 0x2
+    field public static final int TYPE_RINGTONE = 1; // 0x1
+    field public static final int URI_COLUMN_INDEX = 2; // 0x2
+  }
+
+  public final class RouteDiscoveryPreference implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public java.util.List<java.lang.String> getPreferredFeatures();
+    method public boolean shouldPerformActiveScan();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.RouteDiscoveryPreference> CREATOR;
+  }
+
+  public static final class RouteDiscoveryPreference.Builder {
+    ctor public RouteDiscoveryPreference.Builder(@NonNull java.util.List<java.lang.String>, boolean);
+    ctor public RouteDiscoveryPreference.Builder(@NonNull android.media.RouteDiscoveryPreference);
+    method @NonNull public android.media.RouteDiscoveryPreference build();
+    method @NonNull public android.media.RouteDiscoveryPreference.Builder setPreferredFeatures(@NonNull java.util.List<java.lang.String>);
+    method @NonNull public android.media.RouteDiscoveryPreference.Builder setShouldPerformActiveScan(boolean);
+  }
+
+  public final class RoutingSessionInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public String getClientPackageName();
+    method @Nullable public android.os.Bundle getControlHints();
+    method @NonNull public java.util.List<java.lang.String> getDeselectableRoutes();
+    method @NonNull public String getId();
+    method @Nullable public CharSequence getName();
+    method @NonNull public java.util.List<java.lang.String> getSelectableRoutes();
+    method @NonNull public java.util.List<java.lang.String> getSelectedRoutes();
+    method @NonNull public java.util.List<java.lang.String> getTransferableRoutes();
+    method public int getVolume();
+    method public int getVolumeHandling();
+    method public int getVolumeMax();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.RoutingSessionInfo> CREATOR;
+  }
+
+  public static final class RoutingSessionInfo.Builder {
+    ctor public RoutingSessionInfo.Builder(@NonNull String, @NonNull String);
+    ctor public RoutingSessionInfo.Builder(@NonNull android.media.RoutingSessionInfo);
+    method @NonNull public android.media.RoutingSessionInfo.Builder addDeselectableRoute(@NonNull String);
+    method @NonNull public android.media.RoutingSessionInfo.Builder addSelectableRoute(@NonNull String);
+    method @NonNull public android.media.RoutingSessionInfo.Builder addSelectedRoute(@NonNull String);
+    method @NonNull public android.media.RoutingSessionInfo.Builder addTransferableRoute(@NonNull String);
+    method @NonNull public android.media.RoutingSessionInfo build();
+    method @NonNull public android.media.RoutingSessionInfo.Builder clearDeselectableRoutes();
+    method @NonNull public android.media.RoutingSessionInfo.Builder clearSelectableRoutes();
+    method @NonNull public android.media.RoutingSessionInfo.Builder clearSelectedRoutes();
+    method @NonNull public android.media.RoutingSessionInfo.Builder clearTransferableRoutes();
+    method @NonNull public android.media.RoutingSessionInfo.Builder removeDeselectableRoute(@NonNull String);
+    method @NonNull public android.media.RoutingSessionInfo.Builder removeSelectableRoute(@NonNull String);
+    method @NonNull public android.media.RoutingSessionInfo.Builder removeSelectedRoute(@NonNull String);
+    method @NonNull public android.media.RoutingSessionInfo.Builder removeTransferableRoute(@NonNull String);
+    method @NonNull public android.media.RoutingSessionInfo.Builder setControlHints(@Nullable android.os.Bundle);
+    method @NonNull public android.media.RoutingSessionInfo.Builder setName(@Nullable CharSequence);
+    method @NonNull public android.media.RoutingSessionInfo.Builder setVolume(int);
+    method @NonNull public android.media.RoutingSessionInfo.Builder setVolumeHandling(int);
+    method @NonNull public android.media.RoutingSessionInfo.Builder setVolumeMax(int);
+  }
+
+  public class SoundPool {
+    ctor @Deprecated public SoundPool(int, int, int);
+    method public final void autoPause();
+    method public final void autoResume();
+    method protected void finalize();
+    method public int load(String, int);
+    method public int load(android.content.Context, int, int);
+    method public int load(android.content.res.AssetFileDescriptor, int);
+    method public int load(java.io.FileDescriptor, long, long, int);
+    method public final void pause(int);
+    method public final int play(int, float, float, int, int, float);
+    method public final void release();
+    method public final void resume(int);
+    method public final void setLoop(int, int);
+    method public void setOnLoadCompleteListener(android.media.SoundPool.OnLoadCompleteListener);
+    method public final void setPriority(int, int);
+    method public final void setRate(int, float);
+    method public final void setVolume(int, float, float);
+    method public final void stop(int);
+    method public final boolean unload(int);
+  }
+
+  public static class SoundPool.Builder {
+    ctor public SoundPool.Builder();
+    method public android.media.SoundPool build();
+    method public android.media.SoundPool.Builder setAudioAttributes(android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
+    method public android.media.SoundPool.Builder setMaxStreams(int) throws java.lang.IllegalArgumentException;
+  }
+
+  public static interface SoundPool.OnLoadCompleteListener {
+    method public void onLoadComplete(android.media.SoundPool, int, int);
+  }
+
+  public final class SubtitleData {
+    ctor public SubtitleData(int, long, long, @NonNull byte[]);
+    method @NonNull public byte[] getData();
+    method public long getDurationUs();
+    method public long getStartTimeUs();
+    method public int getTrackIndex();
+  }
+
+  public final class SyncParams {
+    ctor public SyncParams();
+    method public android.media.SyncParams allowDefaults();
+    method public int getAudioAdjustMode();
+    method public float getFrameRate();
+    method public int getSyncSource();
+    method public float getTolerance();
+    method public android.media.SyncParams setAudioAdjustMode(int);
+    method public android.media.SyncParams setFrameRate(float);
+    method public android.media.SyncParams setSyncSource(int);
+    method public android.media.SyncParams setTolerance(float);
+    field public static final int AUDIO_ADJUST_MODE_DEFAULT = 0; // 0x0
+    field public static final int AUDIO_ADJUST_MODE_RESAMPLE = 2; // 0x2
+    field public static final int AUDIO_ADJUST_MODE_STRETCH = 1; // 0x1
+    field public static final int SYNC_SOURCE_AUDIO = 2; // 0x2
+    field public static final int SYNC_SOURCE_DEFAULT = 0; // 0x0
+    field public static final int SYNC_SOURCE_SYSTEM_CLOCK = 1; // 0x1
+    field public static final int SYNC_SOURCE_VSYNC = 3; // 0x3
+  }
+
+  public class ThumbnailUtils {
+    ctor public ThumbnailUtils();
+    method @Deprecated @Nullable public static android.graphics.Bitmap createAudioThumbnail(@NonNull String, int);
+    method @NonNull public static android.graphics.Bitmap createAudioThumbnail(@NonNull java.io.File, @NonNull android.util.Size, @Nullable android.os.CancellationSignal) throws java.io.IOException;
+    method @Deprecated @Nullable public static android.graphics.Bitmap createImageThumbnail(@NonNull String, int);
+    method @NonNull public static android.graphics.Bitmap createImageThumbnail(@NonNull java.io.File, @NonNull android.util.Size, @Nullable android.os.CancellationSignal) throws java.io.IOException;
+    method @Deprecated @Nullable public static android.graphics.Bitmap createVideoThumbnail(@NonNull String, int);
+    method @NonNull public static android.graphics.Bitmap createVideoThumbnail(@NonNull java.io.File, @NonNull android.util.Size, @Nullable android.os.CancellationSignal) throws java.io.IOException;
+    method public static android.graphics.Bitmap extractThumbnail(android.graphics.Bitmap, int, int);
+    method public static android.graphics.Bitmap extractThumbnail(android.graphics.Bitmap, int, int, int);
+    field public static final int OPTIONS_RECYCLE_INPUT = 2; // 0x2
+  }
+
+  public final class TimedMetaData {
+    ctor public TimedMetaData(long, @NonNull byte[]);
+    method public byte[] getMetaData();
+    method public long getTimestamp();
+  }
+
+  public final class TimedText {
+    method public android.graphics.Rect getBounds();
+    method public String getText();
+  }
+
+  public class ToneGenerator {
+    ctor public ToneGenerator(int, int);
+    method protected void finalize();
+    method public final int getAudioSessionId();
+    method public void release();
+    method public boolean startTone(int);
+    method public boolean startTone(int, int);
+    method public void stopTone();
+    field public static final int MAX_VOLUME = 100; // 0x64
+    field public static final int MIN_VOLUME = 0; // 0x0
+    field public static final int TONE_CDMA_ABBR_ALERT = 97; // 0x61
+    field public static final int TONE_CDMA_ABBR_INTERCEPT = 37; // 0x25
+    field public static final int TONE_CDMA_ABBR_REORDER = 39; // 0x27
+    field public static final int TONE_CDMA_ALERT_AUTOREDIAL_LITE = 87; // 0x57
+    field public static final int TONE_CDMA_ALERT_CALL_GUARD = 93; // 0x5d
+    field public static final int TONE_CDMA_ALERT_INCALL_LITE = 91; // 0x5b
+    field public static final int TONE_CDMA_ALERT_NETWORK_LITE = 86; // 0x56
+    field public static final int TONE_CDMA_ANSWER = 42; // 0x2a
+    field public static final int TONE_CDMA_CALLDROP_LITE = 95; // 0x5f
+    field public static final int TONE_CDMA_CALL_SIGNAL_ISDN_INTERGROUP = 46; // 0x2e
+    field public static final int TONE_CDMA_CALL_SIGNAL_ISDN_NORMAL = 45; // 0x2d
+    field public static final int TONE_CDMA_CALL_SIGNAL_ISDN_PAT3 = 48; // 0x30
+    field public static final int TONE_CDMA_CALL_SIGNAL_ISDN_PAT5 = 50; // 0x32
+    field public static final int TONE_CDMA_CALL_SIGNAL_ISDN_PAT6 = 51; // 0x33
+    field public static final int TONE_CDMA_CALL_SIGNAL_ISDN_PAT7 = 52; // 0x34
+    field public static final int TONE_CDMA_CALL_SIGNAL_ISDN_PING_RING = 49; // 0x31
+    field public static final int TONE_CDMA_CALL_SIGNAL_ISDN_SP_PRI = 47; // 0x2f
+    field public static final int TONE_CDMA_CONFIRM = 41; // 0x29
+    field public static final int TONE_CDMA_DIAL_TONE_LITE = 34; // 0x22
+    field public static final int TONE_CDMA_EMERGENCY_RINGBACK = 92; // 0x5c
+    field public static final int TONE_CDMA_HIGH_L = 53; // 0x35
+    field public static final int TONE_CDMA_HIGH_PBX_L = 71; // 0x47
+    field public static final int TONE_CDMA_HIGH_PBX_SLS = 80; // 0x50
+    field public static final int TONE_CDMA_HIGH_PBX_SS = 74; // 0x4a
+    field public static final int TONE_CDMA_HIGH_PBX_SSL = 77; // 0x4d
+    field public static final int TONE_CDMA_HIGH_PBX_S_X4 = 83; // 0x53
+    field public static final int TONE_CDMA_HIGH_SLS = 65; // 0x41
+    field public static final int TONE_CDMA_HIGH_SS = 56; // 0x38
+    field public static final int TONE_CDMA_HIGH_SSL = 59; // 0x3b
+    field public static final int TONE_CDMA_HIGH_SS_2 = 62; // 0x3e
+    field public static final int TONE_CDMA_HIGH_S_X4 = 68; // 0x44
+    field public static final int TONE_CDMA_INTERCEPT = 36; // 0x24
+    field public static final int TONE_CDMA_KEYPAD_VOLUME_KEY_LITE = 89; // 0x59
+    field public static final int TONE_CDMA_LOW_L = 55; // 0x37
+    field public static final int TONE_CDMA_LOW_PBX_L = 73; // 0x49
+    field public static final int TONE_CDMA_LOW_PBX_SLS = 82; // 0x52
+    field public static final int TONE_CDMA_LOW_PBX_SS = 76; // 0x4c
+    field public static final int TONE_CDMA_LOW_PBX_SSL = 79; // 0x4f
+    field public static final int TONE_CDMA_LOW_PBX_S_X4 = 85; // 0x55
+    field public static final int TONE_CDMA_LOW_SLS = 67; // 0x43
+    field public static final int TONE_CDMA_LOW_SS = 58; // 0x3a
+    field public static final int TONE_CDMA_LOW_SSL = 61; // 0x3d
+    field public static final int TONE_CDMA_LOW_SS_2 = 64; // 0x40
+    field public static final int TONE_CDMA_LOW_S_X4 = 70; // 0x46
+    field public static final int TONE_CDMA_MED_L = 54; // 0x36
+    field public static final int TONE_CDMA_MED_PBX_L = 72; // 0x48
+    field public static final int TONE_CDMA_MED_PBX_SLS = 81; // 0x51
+    field public static final int TONE_CDMA_MED_PBX_SS = 75; // 0x4b
+    field public static final int TONE_CDMA_MED_PBX_SSL = 78; // 0x4e
+    field public static final int TONE_CDMA_MED_PBX_S_X4 = 84; // 0x54
+    field public static final int TONE_CDMA_MED_SLS = 66; // 0x42
+    field public static final int TONE_CDMA_MED_SS = 57; // 0x39
+    field public static final int TONE_CDMA_MED_SSL = 60; // 0x3c
+    field public static final int TONE_CDMA_MED_SS_2 = 63; // 0x3f
+    field public static final int TONE_CDMA_MED_S_X4 = 69; // 0x45
+    field public static final int TONE_CDMA_NETWORK_BUSY = 40; // 0x28
+    field public static final int TONE_CDMA_NETWORK_BUSY_ONE_SHOT = 96; // 0x60
+    field public static final int TONE_CDMA_NETWORK_CALLWAITING = 43; // 0x2b
+    field public static final int TONE_CDMA_NETWORK_USA_RINGBACK = 35; // 0x23
+    field public static final int TONE_CDMA_ONE_MIN_BEEP = 88; // 0x58
+    field public static final int TONE_CDMA_PIP = 44; // 0x2c
+    field public static final int TONE_CDMA_PRESSHOLDKEY_LITE = 90; // 0x5a
+    field public static final int TONE_CDMA_REORDER = 38; // 0x26
+    field public static final int TONE_CDMA_SIGNAL_OFF = 98; // 0x62
+    field public static final int TONE_CDMA_SOFT_ERROR_LITE = 94; // 0x5e
+    field public static final int TONE_DTMF_0 = 0; // 0x0
+    field public static final int TONE_DTMF_1 = 1; // 0x1
+    field public static final int TONE_DTMF_2 = 2; // 0x2
+    field public static final int TONE_DTMF_3 = 3; // 0x3
+    field public static final int TONE_DTMF_4 = 4; // 0x4
+    field public static final int TONE_DTMF_5 = 5; // 0x5
+    field public static final int TONE_DTMF_6 = 6; // 0x6
+    field public static final int TONE_DTMF_7 = 7; // 0x7
+    field public static final int TONE_DTMF_8 = 8; // 0x8
+    field public static final int TONE_DTMF_9 = 9; // 0x9
+    field public static final int TONE_DTMF_A = 12; // 0xc
+    field public static final int TONE_DTMF_B = 13; // 0xd
+    field public static final int TONE_DTMF_C = 14; // 0xe
+    field public static final int TONE_DTMF_D = 15; // 0xf
+    field public static final int TONE_DTMF_P = 11; // 0xb
+    field public static final int TONE_DTMF_S = 10; // 0xa
+    field public static final int TONE_PROP_ACK = 25; // 0x19
+    field public static final int TONE_PROP_BEEP = 24; // 0x18
+    field public static final int TONE_PROP_BEEP2 = 28; // 0x1c
+    field public static final int TONE_PROP_NACK = 26; // 0x1a
+    field public static final int TONE_PROP_PROMPT = 27; // 0x1b
+    field public static final int TONE_SUP_BUSY = 17; // 0x11
+    field public static final int TONE_SUP_CALL_WAITING = 22; // 0x16
+    field public static final int TONE_SUP_CONFIRM = 32; // 0x20
+    field public static final int TONE_SUP_CONGESTION = 18; // 0x12
+    field public static final int TONE_SUP_CONGESTION_ABBREV = 31; // 0x1f
+    field public static final int TONE_SUP_DIAL = 16; // 0x10
+    field public static final int TONE_SUP_ERROR = 21; // 0x15
+    field public static final int TONE_SUP_INTERCEPT = 29; // 0x1d
+    field public static final int TONE_SUP_INTERCEPT_ABBREV = 30; // 0x1e
+    field public static final int TONE_SUP_PIP = 33; // 0x21
+    field public static final int TONE_SUP_RADIO_ACK = 19; // 0x13
+    field public static final int TONE_SUP_RADIO_NOTAVAIL = 20; // 0x14
+    field public static final int TONE_SUP_RINGTONE = 23; // 0x17
+  }
+
+  public final class UnsupportedSchemeException extends android.media.MediaDrmException {
+    ctor public UnsupportedSchemeException(String);
+  }
+
+  public interface VolumeAutomation {
+    method @NonNull public android.media.VolumeShaper createVolumeShaper(@NonNull android.media.VolumeShaper.Configuration);
+  }
+
+  public abstract class VolumeProvider {
+    ctor public VolumeProvider(int, int, int);
+    ctor public VolumeProvider(int, int, int, @Nullable String);
+    method public final int getCurrentVolume();
+    method public final int getMaxVolume();
+    method public final int getVolumeControl();
+    method @Nullable public final String getVolumeControlId();
+    method public void onAdjustVolume(int);
+    method public void onSetVolumeTo(int);
+    method public final void setCurrentVolume(int);
+    field public static final int VOLUME_CONTROL_ABSOLUTE = 2; // 0x2
+    field public static final int VOLUME_CONTROL_FIXED = 0; // 0x0
+    field public static final int VOLUME_CONTROL_RELATIVE = 1; // 0x1
+  }
+
+  public final class VolumeShaper implements java.lang.AutoCloseable {
+    method public void apply(@NonNull android.media.VolumeShaper.Operation);
+    method public void close();
+    method protected void finalize();
+    method public float getVolume();
+    method public void replace(@NonNull android.media.VolumeShaper.Configuration, @NonNull android.media.VolumeShaper.Operation, boolean);
+  }
+
+  public static final class VolumeShaper.Configuration implements android.os.Parcelable {
+    method public int describeContents();
+    method public long getDuration();
+    method public int getInterpolatorType();
+    method public static int getMaximumCurvePoints();
+    method public float[] getTimes();
+    method public float[] getVolumes();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.VolumeShaper.Configuration> CREATOR;
+    field public static final android.media.VolumeShaper.Configuration CUBIC_RAMP;
+    field public static final int INTERPOLATOR_TYPE_CUBIC = 2; // 0x2
+    field public static final int INTERPOLATOR_TYPE_CUBIC_MONOTONIC = 3; // 0x3
+    field public static final int INTERPOLATOR_TYPE_LINEAR = 1; // 0x1
+    field public static final int INTERPOLATOR_TYPE_STEP = 0; // 0x0
+    field public static final android.media.VolumeShaper.Configuration LINEAR_RAMP;
+    field public static final android.media.VolumeShaper.Configuration SCURVE_RAMP;
+    field public static final android.media.VolumeShaper.Configuration SINE_RAMP;
+  }
+
+  public static final class VolumeShaper.Configuration.Builder {
+    ctor public VolumeShaper.Configuration.Builder();
+    ctor public VolumeShaper.Configuration.Builder(@NonNull android.media.VolumeShaper.Configuration);
+    method @NonNull public android.media.VolumeShaper.Configuration build();
+    method @NonNull public android.media.VolumeShaper.Configuration.Builder invertVolumes();
+    method @NonNull public android.media.VolumeShaper.Configuration.Builder reflectTimes();
+    method @NonNull public android.media.VolumeShaper.Configuration.Builder scaleToEndVolume(float);
+    method @NonNull public android.media.VolumeShaper.Configuration.Builder scaleToStartVolume(float);
+    method @NonNull public android.media.VolumeShaper.Configuration.Builder setCurve(@NonNull float[], @NonNull float[]);
+    method @NonNull public android.media.VolumeShaper.Configuration.Builder setDuration(long);
+    method @NonNull public android.media.VolumeShaper.Configuration.Builder setInterpolatorType(int);
+  }
+
+  public static final class VolumeShaper.Operation implements android.os.Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.VolumeShaper.Operation> CREATOR;
+    field public static final android.media.VolumeShaper.Operation PLAY;
+    field public static final android.media.VolumeShaper.Operation REVERSE;
+  }
+
+}
+
+package android.media.audiofx {
+
+  public class AcousticEchoCanceler extends android.media.audiofx.AudioEffect {
+    method public static android.media.audiofx.AcousticEchoCanceler create(int);
+    method public static boolean isAvailable();
+  }
+
+  public class AudioEffect {
+    method protected void finalize();
+    method public android.media.audiofx.AudioEffect.Descriptor getDescriptor() throws java.lang.IllegalStateException;
+    method public boolean getEnabled() throws java.lang.IllegalStateException;
+    method public int getId() throws java.lang.IllegalStateException;
+    method public boolean hasControl() throws java.lang.IllegalStateException;
+    method public static android.media.audiofx.AudioEffect.Descriptor[] queryEffects();
+    method public void release();
+    method public void setControlStatusListener(android.media.audiofx.AudioEffect.OnControlStatusChangeListener);
+    method public void setEnableStatusListener(android.media.audiofx.AudioEffect.OnEnableStatusChangeListener);
+    method public int setEnabled(boolean) throws java.lang.IllegalStateException;
+    field public static final String ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION = "android.media.action.CLOSE_AUDIO_EFFECT_CONTROL_SESSION";
+    field public static final String ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL = "android.media.action.DISPLAY_AUDIO_EFFECT_CONTROL_PANEL";
+    field public static final String ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION = "android.media.action.OPEN_AUDIO_EFFECT_CONTROL_SESSION";
+    field public static final int ALREADY_EXISTS = -2; // 0xfffffffe
+    field public static final int CONTENT_TYPE_GAME = 2; // 0x2
+    field public static final int CONTENT_TYPE_MOVIE = 1; // 0x1
+    field public static final int CONTENT_TYPE_MUSIC = 0; // 0x0
+    field public static final int CONTENT_TYPE_VOICE = 3; // 0x3
+    field public static final String EFFECT_AUXILIARY = "Auxiliary";
+    field public static final String EFFECT_INSERT = "Insert";
+    field public static final String EFFECT_POST_PROCESSING = "Post Processing";
+    field public static final String EFFECT_PRE_PROCESSING = "Pre Processing";
+    field public static final java.util.UUID EFFECT_TYPE_AEC;
+    field public static final java.util.UUID EFFECT_TYPE_AGC;
+    field public static final java.util.UUID EFFECT_TYPE_BASS_BOOST;
+    field public static final java.util.UUID EFFECT_TYPE_DYNAMICS_PROCESSING;
+    field public static final java.util.UUID EFFECT_TYPE_ENV_REVERB;
+    field public static final java.util.UUID EFFECT_TYPE_EQUALIZER;
+    field public static final java.util.UUID EFFECT_TYPE_LOUDNESS_ENHANCER;
+    field public static final java.util.UUID EFFECT_TYPE_NS;
+    field public static final java.util.UUID EFFECT_TYPE_PRESET_REVERB;
+    field public static final java.util.UUID EFFECT_TYPE_VIRTUALIZER;
+    field public static final int ERROR = -1; // 0xffffffff
+    field public static final int ERROR_BAD_VALUE = -4; // 0xfffffffc
+    field public static final int ERROR_DEAD_OBJECT = -7; // 0xfffffff9
+    field public static final int ERROR_INVALID_OPERATION = -5; // 0xfffffffb
+    field public static final int ERROR_NO_INIT = -3; // 0xfffffffd
+    field public static final int ERROR_NO_MEMORY = -6; // 0xfffffffa
+    field public static final String EXTRA_AUDIO_SESSION = "android.media.extra.AUDIO_SESSION";
+    field public static final String EXTRA_CONTENT_TYPE = "android.media.extra.CONTENT_TYPE";
+    field public static final String EXTRA_PACKAGE_NAME = "android.media.extra.PACKAGE_NAME";
+    field public static final int SUCCESS = 0; // 0x0
+  }
+
+  public static class AudioEffect.Descriptor {
+    ctor public AudioEffect.Descriptor();
+    ctor public AudioEffect.Descriptor(String, String, String, String, String);
+    field public String connectMode;
+    field public String implementor;
+    field public String name;
+    field public java.util.UUID type;
+    field public java.util.UUID uuid;
+  }
+
+  public static interface AudioEffect.OnControlStatusChangeListener {
+    method public void onControlStatusChange(android.media.audiofx.AudioEffect, boolean);
+  }
+
+  public static interface AudioEffect.OnEnableStatusChangeListener {
+    method public void onEnableStatusChange(android.media.audiofx.AudioEffect, boolean);
+  }
+
+  public class AutomaticGainControl extends android.media.audiofx.AudioEffect {
+    method public static android.media.audiofx.AutomaticGainControl create(int);
+    method public static boolean isAvailable();
+  }
+
+  public class BassBoost extends android.media.audiofx.AudioEffect {
+    ctor public BassBoost(int, int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.RuntimeException, java.lang.UnsupportedOperationException;
+    method public android.media.audiofx.BassBoost.Settings getProperties() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public short getRoundedStrength() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public boolean getStrengthSupported();
+    method public void setParameterListener(android.media.audiofx.BassBoost.OnParameterChangeListener);
+    method public void setProperties(android.media.audiofx.BassBoost.Settings) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public void setStrength(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    field public static final int PARAM_STRENGTH = 1; // 0x1
+    field public static final int PARAM_STRENGTH_SUPPORTED = 0; // 0x0
+  }
+
+  public static interface BassBoost.OnParameterChangeListener {
+    method public void onParameterChange(android.media.audiofx.BassBoost, int, int, short);
+  }
+
+  public static class BassBoost.Settings {
+    ctor public BassBoost.Settings();
+    ctor public BassBoost.Settings(String);
+    field public short strength;
+  }
+
+  public final class DynamicsProcessing extends android.media.audiofx.AudioEffect {
+    ctor public DynamicsProcessing(int);
+    ctor public DynamicsProcessing(int, int, @Nullable android.media.audiofx.DynamicsProcessing.Config);
+    method public android.media.audiofx.DynamicsProcessing.Channel getChannelByChannelIndex(int);
+    method public int getChannelCount();
+    method public android.media.audiofx.DynamicsProcessing.Config getConfig();
+    method public float getInputGainByChannelIndex(int);
+    method public android.media.audiofx.DynamicsProcessing.Limiter getLimiterByChannelIndex(int);
+    method public android.media.audiofx.DynamicsProcessing.MbcBand getMbcBandByChannelIndex(int, int);
+    method public android.media.audiofx.DynamicsProcessing.Mbc getMbcByChannelIndex(int);
+    method public android.media.audiofx.DynamicsProcessing.EqBand getPostEqBandByChannelIndex(int, int);
+    method public android.media.audiofx.DynamicsProcessing.Eq getPostEqByChannelIndex(int);
+    method public android.media.audiofx.DynamicsProcessing.EqBand getPreEqBandByChannelIndex(int, int);
+    method public android.media.audiofx.DynamicsProcessing.Eq getPreEqByChannelIndex(int);
+    method public void setAllChannelsTo(android.media.audiofx.DynamicsProcessing.Channel);
+    method public void setChannelTo(int, android.media.audiofx.DynamicsProcessing.Channel);
+    method public void setInputGainAllChannelsTo(float);
+    method public void setInputGainbyChannel(int, float);
+    method public void setLimiterAllChannelsTo(android.media.audiofx.DynamicsProcessing.Limiter);
+    method public void setLimiterByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Limiter);
+    method public void setMbcAllChannelsTo(android.media.audiofx.DynamicsProcessing.Mbc);
+    method public void setMbcBandAllChannelsTo(int, android.media.audiofx.DynamicsProcessing.MbcBand);
+    method public void setMbcBandByChannelIndex(int, int, android.media.audiofx.DynamicsProcessing.MbcBand);
+    method public void setMbcByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Mbc);
+    method public void setPostEqAllChannelsTo(android.media.audiofx.DynamicsProcessing.Eq);
+    method public void setPostEqBandAllChannelsTo(int, android.media.audiofx.DynamicsProcessing.EqBand);
+    method public void setPostEqBandByChannelIndex(int, int, android.media.audiofx.DynamicsProcessing.EqBand);
+    method public void setPostEqByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Eq);
+    method public void setPreEqAllChannelsTo(android.media.audiofx.DynamicsProcessing.Eq);
+    method public void setPreEqBandAllChannelsTo(int, android.media.audiofx.DynamicsProcessing.EqBand);
+    method public void setPreEqBandByChannelIndex(int, int, android.media.audiofx.DynamicsProcessing.EqBand);
+    method public void setPreEqByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Eq);
+    field public static final int VARIANT_FAVOR_FREQUENCY_RESOLUTION = 0; // 0x0
+    field public static final int VARIANT_FAVOR_TIME_RESOLUTION = 1; // 0x1
+  }
+
+  public static class DynamicsProcessing.BandBase {
+    ctor public DynamicsProcessing.BandBase(boolean, float);
+    method public float getCutoffFrequency();
+    method public boolean isEnabled();
+    method public void setCutoffFrequency(float);
+    method public void setEnabled(boolean);
+  }
+
+  public static class DynamicsProcessing.BandStage extends android.media.audiofx.DynamicsProcessing.Stage {
+    ctor public DynamicsProcessing.BandStage(boolean, boolean, int);
+    method public int getBandCount();
+  }
+
+  public static final class DynamicsProcessing.Channel {
+    ctor public DynamicsProcessing.Channel(float, boolean, int, boolean, int, boolean, int, boolean);
+    ctor public DynamicsProcessing.Channel(android.media.audiofx.DynamicsProcessing.Channel);
+    method public float getInputGain();
+    method public android.media.audiofx.DynamicsProcessing.Limiter getLimiter();
+    method public android.media.audiofx.DynamicsProcessing.Mbc getMbc();
+    method public android.media.audiofx.DynamicsProcessing.MbcBand getMbcBand(int);
+    method public android.media.audiofx.DynamicsProcessing.Eq getPostEq();
+    method public android.media.audiofx.DynamicsProcessing.EqBand getPostEqBand(int);
+    method public android.media.audiofx.DynamicsProcessing.Eq getPreEq();
+    method public android.media.audiofx.DynamicsProcessing.EqBand getPreEqBand(int);
+    method public void setInputGain(float);
+    method public void setLimiter(android.media.audiofx.DynamicsProcessing.Limiter);
+    method public void setMbc(android.media.audiofx.DynamicsProcessing.Mbc);
+    method public void setMbcBand(int, android.media.audiofx.DynamicsProcessing.MbcBand);
+    method public void setPostEq(android.media.audiofx.DynamicsProcessing.Eq);
+    method public void setPostEqBand(int, android.media.audiofx.DynamicsProcessing.EqBand);
+    method public void setPreEq(android.media.audiofx.DynamicsProcessing.Eq);
+    method public void setPreEqBand(int, android.media.audiofx.DynamicsProcessing.EqBand);
+  }
+
+  public static final class DynamicsProcessing.Config {
+    method public android.media.audiofx.DynamicsProcessing.Channel getChannelByChannelIndex(int);
+    method public float getInputGainByChannelIndex(int);
+    method public android.media.audiofx.DynamicsProcessing.Limiter getLimiterByChannelIndex(int);
+    method public android.media.audiofx.DynamicsProcessing.MbcBand getMbcBandByChannelIndex(int, int);
+    method public int getMbcBandCount();
+    method public android.media.audiofx.DynamicsProcessing.Mbc getMbcByChannelIndex(int);
+    method public android.media.audiofx.DynamicsProcessing.EqBand getPostEqBandByChannelIndex(int, int);
+    method public int getPostEqBandCount();
+    method public android.media.audiofx.DynamicsProcessing.Eq getPostEqByChannelIndex(int);
+    method public android.media.audiofx.DynamicsProcessing.EqBand getPreEqBandByChannelIndex(int, int);
+    method public int getPreEqBandCount();
+    method public android.media.audiofx.DynamicsProcessing.Eq getPreEqByChannelIndex(int);
+    method public float getPreferredFrameDuration();
+    method public int getVariant();
+    method public boolean isLimiterInUse();
+    method public boolean isMbcInUse();
+    method public boolean isPostEqInUse();
+    method public boolean isPreEqInUse();
+    method public void setAllChannelsTo(android.media.audiofx.DynamicsProcessing.Channel);
+    method public void setChannelTo(int, android.media.audiofx.DynamicsProcessing.Channel);
+    method public void setInputGainAllChannelsTo(float);
+    method public void setInputGainByChannelIndex(int, float);
+    method public void setLimiterAllChannelsTo(android.media.audiofx.DynamicsProcessing.Limiter);
+    method public void setLimiterByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Limiter);
+    method public void setMbcAllChannelsTo(android.media.audiofx.DynamicsProcessing.Mbc);
+    method public void setMbcBandAllChannelsTo(int, android.media.audiofx.DynamicsProcessing.MbcBand);
+    method public void setMbcBandByChannelIndex(int, int, android.media.audiofx.DynamicsProcessing.MbcBand);
+    method public void setMbcByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Mbc);
+    method public void setPostEqAllChannelsTo(android.media.audiofx.DynamicsProcessing.Eq);
+    method public void setPostEqBandAllChannelsTo(int, android.media.audiofx.DynamicsProcessing.EqBand);
+    method public void setPostEqBandByChannelIndex(int, int, android.media.audiofx.DynamicsProcessing.EqBand);
+    method public void setPostEqByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Eq);
+    method public void setPreEqAllChannelsTo(android.media.audiofx.DynamicsProcessing.Eq);
+    method public void setPreEqBandAllChannelsTo(int, android.media.audiofx.DynamicsProcessing.EqBand);
+    method public void setPreEqBandByChannelIndex(int, int, android.media.audiofx.DynamicsProcessing.EqBand);
+    method public void setPreEqByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Eq);
+  }
+
+  public static final class DynamicsProcessing.Config.Builder {
+    ctor public DynamicsProcessing.Config.Builder(int, int, boolean, int, boolean, int, boolean, int, boolean);
+    method public android.media.audiofx.DynamicsProcessing.Config build();
+    method public android.media.audiofx.DynamicsProcessing.Config.Builder setAllChannelsTo(android.media.audiofx.DynamicsProcessing.Channel);
+    method public android.media.audiofx.DynamicsProcessing.Config.Builder setChannelTo(int, android.media.audiofx.DynamicsProcessing.Channel);
+    method public android.media.audiofx.DynamicsProcessing.Config.Builder setInputGainAllChannelsTo(float);
+    method public android.media.audiofx.DynamicsProcessing.Config.Builder setInputGainByChannelIndex(int, float);
+    method public android.media.audiofx.DynamicsProcessing.Config.Builder setLimiterAllChannelsTo(android.media.audiofx.DynamicsProcessing.Limiter);
+    method public android.media.audiofx.DynamicsProcessing.Config.Builder setLimiterByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Limiter);
+    method public android.media.audiofx.DynamicsProcessing.Config.Builder setMbcAllChannelsTo(android.media.audiofx.DynamicsProcessing.Mbc);
+    method public android.media.audiofx.DynamicsProcessing.Config.Builder setMbcByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Mbc);
+    method public android.media.audiofx.DynamicsProcessing.Config.Builder setPostEqAllChannelsTo(android.media.audiofx.DynamicsProcessing.Eq);
+    method public android.media.audiofx.DynamicsProcessing.Config.Builder setPostEqByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Eq);
+    method public android.media.audiofx.DynamicsProcessing.Config.Builder setPreEqAllChannelsTo(android.media.audiofx.DynamicsProcessing.Eq);
+    method public android.media.audiofx.DynamicsProcessing.Config.Builder setPreEqByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Eq);
+    method public android.media.audiofx.DynamicsProcessing.Config.Builder setPreferredFrameDuration(float);
+  }
+
+  public static final class DynamicsProcessing.Eq extends android.media.audiofx.DynamicsProcessing.BandStage {
+    ctor public DynamicsProcessing.Eq(boolean, boolean, int);
+    ctor public DynamicsProcessing.Eq(android.media.audiofx.DynamicsProcessing.Eq);
+    method public android.media.audiofx.DynamicsProcessing.EqBand getBand(int);
+    method public void setBand(int, android.media.audiofx.DynamicsProcessing.EqBand);
+  }
+
+  public static final class DynamicsProcessing.EqBand extends android.media.audiofx.DynamicsProcessing.BandBase {
+    ctor public DynamicsProcessing.EqBand(boolean, float, float);
+    ctor public DynamicsProcessing.EqBand(android.media.audiofx.DynamicsProcessing.EqBand);
+    method public float getGain();
+    method public void setGain(float);
+  }
+
+  public static final class DynamicsProcessing.Limiter extends android.media.audiofx.DynamicsProcessing.Stage {
+    ctor public DynamicsProcessing.Limiter(boolean, boolean, int, float, float, float, float, float);
+    ctor public DynamicsProcessing.Limiter(android.media.audiofx.DynamicsProcessing.Limiter);
+    method public float getAttackTime();
+    method public int getLinkGroup();
+    method public float getPostGain();
+    method public float getRatio();
+    method public float getReleaseTime();
+    method public float getThreshold();
+    method public void setAttackTime(float);
+    method public void setLinkGroup(int);
+    method public void setPostGain(float);
+    method public void setRatio(float);
+    method public void setReleaseTime(float);
+    method public void setThreshold(float);
+  }
+
+  public static final class DynamicsProcessing.Mbc extends android.media.audiofx.DynamicsProcessing.BandStage {
+    ctor public DynamicsProcessing.Mbc(boolean, boolean, int);
+    ctor public DynamicsProcessing.Mbc(android.media.audiofx.DynamicsProcessing.Mbc);
+    method public android.media.audiofx.DynamicsProcessing.MbcBand getBand(int);
+    method public void setBand(int, android.media.audiofx.DynamicsProcessing.MbcBand);
+  }
+
+  public static final class DynamicsProcessing.MbcBand extends android.media.audiofx.DynamicsProcessing.BandBase {
+    ctor public DynamicsProcessing.MbcBand(boolean, float, float, float, float, float, float, float, float, float, float);
+    ctor public DynamicsProcessing.MbcBand(android.media.audiofx.DynamicsProcessing.MbcBand);
+    method public float getAttackTime();
+    method public float getExpanderRatio();
+    method public float getKneeWidth();
+    method public float getNoiseGateThreshold();
+    method public float getPostGain();
+    method public float getPreGain();
+    method public float getRatio();
+    method public float getReleaseTime();
+    method public float getThreshold();
+    method public void setAttackTime(float);
+    method public void setExpanderRatio(float);
+    method public void setKneeWidth(float);
+    method public void setNoiseGateThreshold(float);
+    method public void setPostGain(float);
+    method public void setPreGain(float);
+    method public void setRatio(float);
+    method public void setReleaseTime(float);
+    method public void setThreshold(float);
+  }
+
+  public static class DynamicsProcessing.Stage {
+    ctor public DynamicsProcessing.Stage(boolean, boolean);
+    method public boolean isEnabled();
+    method public boolean isInUse();
+    method public void setEnabled(boolean);
+  }
+
+  public class EnvironmentalReverb extends android.media.audiofx.AudioEffect {
+    ctor public EnvironmentalReverb(int, int) throws java.lang.IllegalArgumentException, java.lang.RuntimeException, java.lang.UnsupportedOperationException;
+    method public short getDecayHFRatio() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public int getDecayTime() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public short getDensity() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public short getDiffusion() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public android.media.audiofx.EnvironmentalReverb.Settings getProperties() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public int getReflectionsDelay() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public short getReflectionsLevel() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public int getReverbDelay() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public short getReverbLevel() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public short getRoomHFLevel() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public short getRoomLevel() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public void setDecayHFRatio(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public void setDecayTime(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public void setDensity(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public void setDiffusion(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public void setParameterListener(android.media.audiofx.EnvironmentalReverb.OnParameterChangeListener);
+    method public void setProperties(android.media.audiofx.EnvironmentalReverb.Settings) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public void setReflectionsDelay(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public void setReflectionsLevel(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public void setReverbDelay(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public void setReverbLevel(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public void setRoomHFLevel(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public void setRoomLevel(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    field public static final int PARAM_DECAY_HF_RATIO = 3; // 0x3
+    field public static final int PARAM_DECAY_TIME = 2; // 0x2
+    field public static final int PARAM_DENSITY = 9; // 0x9
+    field public static final int PARAM_DIFFUSION = 8; // 0x8
+    field public static final int PARAM_REFLECTIONS_DELAY = 5; // 0x5
+    field public static final int PARAM_REFLECTIONS_LEVEL = 4; // 0x4
+    field public static final int PARAM_REVERB_DELAY = 7; // 0x7
+    field public static final int PARAM_REVERB_LEVEL = 6; // 0x6
+    field public static final int PARAM_ROOM_HF_LEVEL = 1; // 0x1
+    field public static final int PARAM_ROOM_LEVEL = 0; // 0x0
+  }
+
+  public static interface EnvironmentalReverb.OnParameterChangeListener {
+    method public void onParameterChange(android.media.audiofx.EnvironmentalReverb, int, int, int);
+  }
+
+  public static class EnvironmentalReverb.Settings {
+    ctor public EnvironmentalReverb.Settings();
+    ctor public EnvironmentalReverb.Settings(String);
+    field public short decayHFRatio;
+    field public int decayTime;
+    field public short density;
+    field public short diffusion;
+    field public int reflectionsDelay;
+    field public short reflectionsLevel;
+    field public int reverbDelay;
+    field public short reverbLevel;
+    field public short roomHFLevel;
+    field public short roomLevel;
+  }
+
+  public class Equalizer extends android.media.audiofx.AudioEffect {
+    ctor public Equalizer(int, int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.RuntimeException, java.lang.UnsupportedOperationException;
+    method public short getBand(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public int[] getBandFreqRange(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public short getBandLevel(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public short[] getBandLevelRange() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public int getCenterFreq(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public short getCurrentPreset() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public short getNumberOfBands() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public short getNumberOfPresets() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public String getPresetName(short);
+    method public android.media.audiofx.Equalizer.Settings getProperties() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public void setBandLevel(short, short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public void setParameterListener(android.media.audiofx.Equalizer.OnParameterChangeListener);
+    method public void setProperties(android.media.audiofx.Equalizer.Settings) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public void usePreset(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    field public static final int PARAM_BAND_FREQ_RANGE = 4; // 0x4
+    field public static final int PARAM_BAND_LEVEL = 2; // 0x2
+    field public static final int PARAM_CENTER_FREQ = 3; // 0x3
+    field public static final int PARAM_CURRENT_PRESET = 6; // 0x6
+    field public static final int PARAM_GET_BAND = 5; // 0x5
+    field public static final int PARAM_GET_NUM_OF_PRESETS = 7; // 0x7
+    field public static final int PARAM_GET_PRESET_NAME = 8; // 0x8
+    field public static final int PARAM_LEVEL_RANGE = 1; // 0x1
+    field public static final int PARAM_NUM_BANDS = 0; // 0x0
+    field public static final int PARAM_STRING_SIZE_MAX = 32; // 0x20
+  }
+
+  public static interface Equalizer.OnParameterChangeListener {
+    method public void onParameterChange(android.media.audiofx.Equalizer, int, int, int, int);
+  }
+
+  public static class Equalizer.Settings {
+    ctor public Equalizer.Settings();
+    ctor public Equalizer.Settings(String);
+    field public short[] bandLevels;
+    field public short curPreset;
+    field public short numBands;
+  }
+
+  public class LoudnessEnhancer extends android.media.audiofx.AudioEffect {
+    ctor public LoudnessEnhancer(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.RuntimeException, java.lang.UnsupportedOperationException;
+    method public float getTargetGain() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public void setTargetGain(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    field public static final int PARAM_TARGET_GAIN_MB = 0; // 0x0
+  }
+
+  public class NoiseSuppressor extends android.media.audiofx.AudioEffect {
+    method public static android.media.audiofx.NoiseSuppressor create(int);
+    method public static boolean isAvailable();
+  }
+
+  public class PresetReverb extends android.media.audiofx.AudioEffect {
+    ctor public PresetReverb(int, int) throws java.lang.IllegalArgumentException, java.lang.RuntimeException, java.lang.UnsupportedOperationException;
+    method public short getPreset() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public android.media.audiofx.PresetReverb.Settings getProperties() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public void setParameterListener(android.media.audiofx.PresetReverb.OnParameterChangeListener);
+    method public void setPreset(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public void setProperties(android.media.audiofx.PresetReverb.Settings) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    field public static final int PARAM_PRESET = 0; // 0x0
+    field public static final short PRESET_LARGEHALL = 5; // 0x5
+    field public static final short PRESET_LARGEROOM = 3; // 0x3
+    field public static final short PRESET_MEDIUMHALL = 4; // 0x4
+    field public static final short PRESET_MEDIUMROOM = 2; // 0x2
+    field public static final short PRESET_NONE = 0; // 0x0
+    field public static final short PRESET_PLATE = 6; // 0x6
+    field public static final short PRESET_SMALLROOM = 1; // 0x1
+  }
+
+  public static interface PresetReverb.OnParameterChangeListener {
+    method public void onParameterChange(android.media.audiofx.PresetReverb, int, int, short);
+  }
+
+  public static class PresetReverb.Settings {
+    ctor public PresetReverb.Settings();
+    ctor public PresetReverb.Settings(String);
+    field public short preset;
+  }
+
+  public class Virtualizer extends android.media.audiofx.AudioEffect {
+    ctor public Virtualizer(int, int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.RuntimeException, java.lang.UnsupportedOperationException;
+    method public boolean canVirtualize(int, int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public boolean forceVirtualizationMode(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public android.media.audiofx.Virtualizer.Settings getProperties() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public short getRoundedStrength() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public boolean getSpeakerAngles(int, int, int[]) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public boolean getStrengthSupported();
+    method public int getVirtualizationMode() throws java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public void setParameterListener(android.media.audiofx.Virtualizer.OnParameterChangeListener);
+    method public void setProperties(android.media.audiofx.Virtualizer.Settings) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    method public void setStrength(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
+    field public static final int PARAM_STRENGTH = 1; // 0x1
+    field public static final int PARAM_STRENGTH_SUPPORTED = 0; // 0x0
+    field public static final int VIRTUALIZATION_MODE_AUTO = 1; // 0x1
+    field public static final int VIRTUALIZATION_MODE_BINAURAL = 2; // 0x2
+    field public static final int VIRTUALIZATION_MODE_OFF = 0; // 0x0
+    field public static final int VIRTUALIZATION_MODE_TRANSAURAL = 3; // 0x3
+  }
+
+  public static interface Virtualizer.OnParameterChangeListener {
+    method public void onParameterChange(android.media.audiofx.Virtualizer, int, int, short);
+  }
+
+  public static class Virtualizer.Settings {
+    ctor public Virtualizer.Settings();
+    ctor public Virtualizer.Settings(String);
+    field public short strength;
+  }
+
+  public class Visualizer {
+    ctor public Visualizer(int) throws java.lang.RuntimeException, java.lang.UnsupportedOperationException;
+    method protected void finalize();
+    method public int getCaptureSize() throws java.lang.IllegalStateException;
+    method public static int[] getCaptureSizeRange();
+    method public boolean getEnabled();
+    method public int getFft(byte[]) throws java.lang.IllegalStateException;
+    method public static int getMaxCaptureRate();
+    method public int getMeasurementMode() throws java.lang.IllegalStateException;
+    method public int getMeasurementPeakRms(android.media.audiofx.Visualizer.MeasurementPeakRms);
+    method public int getSamplingRate() throws java.lang.IllegalStateException;
+    method public int getScalingMode() throws java.lang.IllegalStateException;
+    method public int getWaveForm(byte[]) throws java.lang.IllegalStateException;
+    method public void release();
+    method public int setCaptureSize(int) throws java.lang.IllegalStateException;
+    method public int setDataCaptureListener(android.media.audiofx.Visualizer.OnDataCaptureListener, int, boolean, boolean);
+    method public int setEnabled(boolean) throws java.lang.IllegalStateException;
+    method public int setMeasurementMode(int) throws java.lang.IllegalStateException;
+    method public int setScalingMode(int) throws java.lang.IllegalStateException;
+    field public static final int ALREADY_EXISTS = -2; // 0xfffffffe
+    field public static final int ERROR = -1; // 0xffffffff
+    field public static final int ERROR_BAD_VALUE = -4; // 0xfffffffc
+    field public static final int ERROR_DEAD_OBJECT = -7; // 0xfffffff9
+    field public static final int ERROR_INVALID_OPERATION = -5; // 0xfffffffb
+    field public static final int ERROR_NO_INIT = -3; // 0xfffffffd
+    field public static final int ERROR_NO_MEMORY = -6; // 0xfffffffa
+    field public static final int MEASUREMENT_MODE_NONE = 0; // 0x0
+    field public static final int MEASUREMENT_MODE_PEAK_RMS = 1; // 0x1
+    field public static final int SCALING_MODE_AS_PLAYED = 1; // 0x1
+    field public static final int SCALING_MODE_NORMALIZED = 0; // 0x0
+    field public static final int STATE_ENABLED = 2; // 0x2
+    field public static final int STATE_INITIALIZED = 1; // 0x1
+    field public static final int STATE_UNINITIALIZED = 0; // 0x0
+    field public static final int SUCCESS = 0; // 0x0
+  }
+
+  public static final class Visualizer.MeasurementPeakRms {
+    ctor public Visualizer.MeasurementPeakRms();
+    field public int mPeak;
+    field public int mRms;
+  }
+
+  public static interface Visualizer.OnDataCaptureListener {
+    method public void onFftDataCapture(android.media.audiofx.Visualizer, byte[], int);
+    method public void onWaveFormDataCapture(android.media.audiofx.Visualizer, byte[], int);
+  }
+
+}
+
+package android.media.browse {
+
+  public final class MediaBrowser {
+    ctor public MediaBrowser(android.content.Context, android.content.ComponentName, android.media.browse.MediaBrowser.ConnectionCallback, android.os.Bundle);
+    method public void connect();
+    method public void disconnect();
+    method @Nullable public android.os.Bundle getExtras();
+    method public void getItem(@NonNull String, @NonNull android.media.browse.MediaBrowser.ItemCallback);
+    method @NonNull public String getRoot();
+    method @NonNull public android.content.ComponentName getServiceComponent();
+    method @NonNull public android.media.session.MediaSession.Token getSessionToken();
+    method public boolean isConnected();
+    method public void subscribe(@NonNull String, @NonNull android.media.browse.MediaBrowser.SubscriptionCallback);
+    method public void subscribe(@NonNull String, @NonNull android.os.Bundle, @NonNull android.media.browse.MediaBrowser.SubscriptionCallback);
+    method public void unsubscribe(@NonNull String);
+    method public void unsubscribe(@NonNull String, @NonNull android.media.browse.MediaBrowser.SubscriptionCallback);
+    field public static final String EXTRA_PAGE = "android.media.browse.extra.PAGE";
+    field public static final String EXTRA_PAGE_SIZE = "android.media.browse.extra.PAGE_SIZE";
+  }
+
+  public static class MediaBrowser.ConnectionCallback {
+    ctor public MediaBrowser.ConnectionCallback();
+    method public void onConnected();
+    method public void onConnectionFailed();
+    method public void onConnectionSuspended();
+  }
+
+  public abstract static class MediaBrowser.ItemCallback {
+    ctor public MediaBrowser.ItemCallback();
+    method public void onError(@NonNull String);
+    method public void onItemLoaded(android.media.browse.MediaBrowser.MediaItem);
+  }
+
+  public static class MediaBrowser.MediaItem implements android.os.Parcelable {
+    ctor public MediaBrowser.MediaItem(@NonNull android.media.MediaDescription, int);
+    method public int describeContents();
+    method @NonNull public android.media.MediaDescription getDescription();
+    method public int getFlags();
+    method @Nullable public String getMediaId();
+    method public boolean isBrowsable();
+    method public boolean isPlayable();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.browse.MediaBrowser.MediaItem> CREATOR;
+    field public static final int FLAG_BROWSABLE = 1; // 0x1
+    field public static final int FLAG_PLAYABLE = 2; // 0x2
+  }
+
+  public abstract static class MediaBrowser.SubscriptionCallback {
+    ctor public MediaBrowser.SubscriptionCallback();
+    method public void onChildrenLoaded(@NonNull String, @NonNull java.util.List<android.media.browse.MediaBrowser.MediaItem>);
+    method public void onChildrenLoaded(@NonNull String, @NonNull java.util.List<android.media.browse.MediaBrowser.MediaItem>, @NonNull android.os.Bundle);
+    method public void onError(@NonNull String);
+    method public void onError(@NonNull String, @NonNull android.os.Bundle);
+  }
+
+}
+
+package android.media.effect {
+
+  public abstract class Effect {
+    ctor public Effect();
+    method public abstract void apply(int, int, int, int);
+    method public abstract String getName();
+    method public abstract void release();
+    method public abstract void setParameter(String, Object);
+    method public void setUpdateListener(android.media.effect.EffectUpdateListener);
+  }
+
+  public class EffectContext {
+    method public static android.media.effect.EffectContext createWithCurrentGlContext();
+    method public android.media.effect.EffectFactory getFactory();
+    method public void release();
+  }
+
+  public class EffectFactory {
+    method public android.media.effect.Effect createEffect(String);
+    method public static boolean isEffectSupported(String);
+    field public static final String EFFECT_AUTOFIX = "android.media.effect.effects.AutoFixEffect";
+    field public static final String EFFECT_BACKDROPPER = "android.media.effect.effects.BackDropperEffect";
+    field public static final String EFFECT_BITMAPOVERLAY = "android.media.effect.effects.BitmapOverlayEffect";
+    field public static final String EFFECT_BLACKWHITE = "android.media.effect.effects.BlackWhiteEffect";
+    field public static final String EFFECT_BRIGHTNESS = "android.media.effect.effects.BrightnessEffect";
+    field public static final String EFFECT_CONTRAST = "android.media.effect.effects.ContrastEffect";
+    field public static final String EFFECT_CROP = "android.media.effect.effects.CropEffect";
+    field public static final String EFFECT_CROSSPROCESS = "android.media.effect.effects.CrossProcessEffect";
+    field public static final String EFFECT_DOCUMENTARY = "android.media.effect.effects.DocumentaryEffect";
+    field public static final String EFFECT_DUOTONE = "android.media.effect.effects.DuotoneEffect";
+    field public static final String EFFECT_FILLLIGHT = "android.media.effect.effects.FillLightEffect";
+    field public static final String EFFECT_FISHEYE = "android.media.effect.effects.FisheyeEffect";
+    field public static final String EFFECT_FLIP = "android.media.effect.effects.FlipEffect";
+    field public static final String EFFECT_GRAIN = "android.media.effect.effects.GrainEffect";
+    field public static final String EFFECT_GRAYSCALE = "android.media.effect.effects.GrayscaleEffect";
+    field public static final String EFFECT_LOMOISH = "android.media.effect.effects.LomoishEffect";
+    field public static final String EFFECT_NEGATIVE = "android.media.effect.effects.NegativeEffect";
+    field public static final String EFFECT_POSTERIZE = "android.media.effect.effects.PosterizeEffect";
+    field public static final String EFFECT_REDEYE = "android.media.effect.effects.RedEyeEffect";
+    field public static final String EFFECT_ROTATE = "android.media.effect.effects.RotateEffect";
+    field public static final String EFFECT_SATURATE = "android.media.effect.effects.SaturateEffect";
+    field public static final String EFFECT_SEPIA = "android.media.effect.effects.SepiaEffect";
+    field public static final String EFFECT_SHARPEN = "android.media.effect.effects.SharpenEffect";
+    field public static final String EFFECT_STRAIGHTEN = "android.media.effect.effects.StraightenEffect";
+    field public static final String EFFECT_TEMPERATURE = "android.media.effect.effects.ColorTemperatureEffect";
+    field public static final String EFFECT_TINT = "android.media.effect.effects.TintEffect";
+    field public static final String EFFECT_VIGNETTE = "android.media.effect.effects.VignetteEffect";
+  }
+
+  public interface EffectUpdateListener {
+    method public void onEffectUpdated(android.media.effect.Effect, Object);
+  }
+
+}
+
+package android.media.midi {
+
+  public final class MidiDevice implements java.io.Closeable {
+    method public void close() throws java.io.IOException;
+    method public android.media.midi.MidiDevice.MidiConnection connectPorts(android.media.midi.MidiInputPort, int);
+    method public android.media.midi.MidiDeviceInfo getInfo();
+    method public android.media.midi.MidiInputPort openInputPort(int);
+    method public android.media.midi.MidiOutputPort openOutputPort(int);
+  }
+
+  public class MidiDevice.MidiConnection implements java.io.Closeable {
+    method public void close() throws java.io.IOException;
+  }
+
+  public final class MidiDeviceInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getId();
+    method public int getInputPortCount();
+    method public int getOutputPortCount();
+    method public android.media.midi.MidiDeviceInfo.PortInfo[] getPorts();
+    method public android.os.Bundle getProperties();
+    method public int getType();
+    method public boolean isPrivate();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.midi.MidiDeviceInfo> CREATOR;
+    field public static final String PROPERTY_BLUETOOTH_DEVICE = "bluetooth_device";
+    field public static final String PROPERTY_MANUFACTURER = "manufacturer";
+    field public static final String PROPERTY_NAME = "name";
+    field public static final String PROPERTY_PRODUCT = "product";
+    field public static final String PROPERTY_SERIAL_NUMBER = "serial_number";
+    field public static final String PROPERTY_USB_DEVICE = "usb_device";
+    field public static final String PROPERTY_VERSION = "version";
+    field public static final int TYPE_BLUETOOTH = 3; // 0x3
+    field public static final int TYPE_USB = 1; // 0x1
+    field public static final int TYPE_VIRTUAL = 2; // 0x2
+  }
+
+  public static final class MidiDeviceInfo.PortInfo {
+    method public String getName();
+    method public int getPortNumber();
+    method public int getType();
+    field public static final int TYPE_INPUT = 1; // 0x1
+    field public static final int TYPE_OUTPUT = 2; // 0x2
+  }
+
+  public abstract class MidiDeviceService extends android.app.Service {
+    ctor public MidiDeviceService();
+    method public final android.media.midi.MidiDeviceInfo getDeviceInfo();
+    method public final android.media.midi.MidiReceiver[] getOutputPortReceivers();
+    method public android.os.IBinder onBind(android.content.Intent);
+    method public void onClose();
+    method public void onDeviceStatusChanged(android.media.midi.MidiDeviceStatus);
+    method public abstract android.media.midi.MidiReceiver[] onGetInputPortReceivers();
+    field public static final String SERVICE_INTERFACE = "android.media.midi.MidiDeviceService";
+  }
+
+  public final class MidiDeviceStatus implements android.os.Parcelable {
+    method public int describeContents();
+    method public android.media.midi.MidiDeviceInfo getDeviceInfo();
+    method public int getOutputPortOpenCount(int);
+    method public boolean isInputPortOpen(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.midi.MidiDeviceStatus> CREATOR;
+  }
+
+  public final class MidiInputPort extends android.media.midi.MidiReceiver implements java.io.Closeable {
+    method public void close() throws java.io.IOException;
+    method public int getPortNumber();
+    method public void onSend(byte[], int, int, long) throws java.io.IOException;
+  }
+
+  public final class MidiManager {
+    method public android.media.midi.MidiDeviceInfo[] getDevices();
+    method public void openBluetoothDevice(android.bluetooth.BluetoothDevice, android.media.midi.MidiManager.OnDeviceOpenedListener, android.os.Handler);
+    method public void openDevice(android.media.midi.MidiDeviceInfo, android.media.midi.MidiManager.OnDeviceOpenedListener, android.os.Handler);
+    method public void registerDeviceCallback(android.media.midi.MidiManager.DeviceCallback, android.os.Handler);
+    method public void unregisterDeviceCallback(android.media.midi.MidiManager.DeviceCallback);
+  }
+
+  public static class MidiManager.DeviceCallback {
+    ctor public MidiManager.DeviceCallback();
+    method public void onDeviceAdded(android.media.midi.MidiDeviceInfo);
+    method public void onDeviceRemoved(android.media.midi.MidiDeviceInfo);
+    method public void onDeviceStatusChanged(android.media.midi.MidiDeviceStatus);
+  }
+
+  public static interface MidiManager.OnDeviceOpenedListener {
+    method public void onDeviceOpened(android.media.midi.MidiDevice);
+  }
+
+  public final class MidiOutputPort extends android.media.midi.MidiSender implements java.io.Closeable {
+    method public void close() throws java.io.IOException;
+    method public int getPortNumber();
+    method public void onConnect(android.media.midi.MidiReceiver);
+    method public void onDisconnect(android.media.midi.MidiReceiver);
+  }
+
+  public abstract class MidiReceiver {
+    ctor public MidiReceiver();
+    ctor public MidiReceiver(int);
+    method public void flush() throws java.io.IOException;
+    method public final int getMaxMessageSize();
+    method public void onFlush() throws java.io.IOException;
+    method public abstract void onSend(byte[], int, int, long) throws java.io.IOException;
+    method public void send(byte[], int, int) throws java.io.IOException;
+    method public void send(byte[], int, int, long) throws java.io.IOException;
+  }
+
+  public abstract class MidiSender {
+    ctor public MidiSender();
+    method public void connect(android.media.midi.MidiReceiver);
+    method public void disconnect(android.media.midi.MidiReceiver);
+    method public abstract void onConnect(android.media.midi.MidiReceiver);
+    method public abstract void onDisconnect(android.media.midi.MidiReceiver);
+  }
+
+}
+
+package android.media.projection {
+
+  public final class MediaProjection {
+    method public android.hardware.display.VirtualDisplay createVirtualDisplay(@NonNull String, int, int, int, int, @Nullable android.view.Surface, @Nullable android.hardware.display.VirtualDisplay.Callback, @Nullable android.os.Handler);
+    method public void registerCallback(android.media.projection.MediaProjection.Callback, android.os.Handler);
+    method public void stop();
+    method public void unregisterCallback(android.media.projection.MediaProjection.Callback);
+  }
+
+  public abstract static class MediaProjection.Callback {
+    ctor public MediaProjection.Callback();
+    method public void onStop();
+  }
+
+  public final class MediaProjectionManager {
+    method public android.content.Intent createScreenCaptureIntent();
+    method public android.media.projection.MediaProjection getMediaProjection(int, @NonNull android.content.Intent);
+  }
+
+}
+
+package android.media.session {
+
+  public final class MediaController {
+    ctor public MediaController(@NonNull android.content.Context, @NonNull android.media.session.MediaSession.Token);
+    method public void adjustVolume(int, int);
+    method public boolean dispatchMediaButtonEvent(@NonNull android.view.KeyEvent);
+    method @Nullable public android.os.Bundle getExtras();
+    method public long getFlags();
+    method @Nullable public android.media.MediaMetadata getMetadata();
+    method public String getPackageName();
+    method @Nullable public android.media.session.MediaController.PlaybackInfo getPlaybackInfo();
+    method @Nullable public android.media.session.PlaybackState getPlaybackState();
+    method @Nullable public java.util.List<android.media.session.MediaSession.QueueItem> getQueue();
+    method @Nullable public CharSequence getQueueTitle();
+    method public int getRatingType();
+    method @Nullable public android.app.PendingIntent getSessionActivity();
+    method @NonNull public android.os.Bundle getSessionInfo();
+    method @NonNull public android.media.session.MediaSession.Token getSessionToken();
+    method @NonNull public String getTag();
+    method @NonNull public android.media.session.MediaController.TransportControls getTransportControls();
+    method public void registerCallback(@NonNull android.media.session.MediaController.Callback);
+    method public void registerCallback(@NonNull android.media.session.MediaController.Callback, @Nullable android.os.Handler);
+    method public void sendCommand(@NonNull String, @Nullable android.os.Bundle, @Nullable android.os.ResultReceiver);
+    method public void setVolumeTo(int, int);
+    method public void unregisterCallback(@NonNull android.media.session.MediaController.Callback);
+  }
+
+  public abstract static class MediaController.Callback {
+    ctor public MediaController.Callback();
+    method public void onAudioInfoChanged(android.media.session.MediaController.PlaybackInfo);
+    method public void onExtrasChanged(@Nullable android.os.Bundle);
+    method public void onMetadataChanged(@Nullable android.media.MediaMetadata);
+    method public void onPlaybackStateChanged(@Nullable android.media.session.PlaybackState);
+    method public void onQueueChanged(@Nullable java.util.List<android.media.session.MediaSession.QueueItem>);
+    method public void onQueueTitleChanged(@Nullable CharSequence);
+    method public void onSessionDestroyed();
+    method public void onSessionEvent(@NonNull String, @Nullable android.os.Bundle);
+  }
+
+  public static final class MediaController.PlaybackInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public android.media.AudioAttributes getAudioAttributes();
+    method public int getCurrentVolume();
+    method public int getMaxVolume();
+    method public int getPlaybackType();
+    method public int getVolumeControl();
+    method @Nullable public String getVolumeControlId();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.session.MediaController.PlaybackInfo> CREATOR;
+    field public static final int PLAYBACK_TYPE_LOCAL = 1; // 0x1
+    field public static final int PLAYBACK_TYPE_REMOTE = 2; // 0x2
+  }
+
+  public final class MediaController.TransportControls {
+    method public void fastForward();
+    method public void pause();
+    method public void play();
+    method public void playFromMediaId(String, android.os.Bundle);
+    method public void playFromSearch(String, android.os.Bundle);
+    method public void playFromUri(android.net.Uri, android.os.Bundle);
+    method public void prepare();
+    method public void prepareFromMediaId(String, android.os.Bundle);
+    method public void prepareFromSearch(String, android.os.Bundle);
+    method public void prepareFromUri(android.net.Uri, android.os.Bundle);
+    method public void rewind();
+    method public void seekTo(long);
+    method public void sendCustomAction(@NonNull android.media.session.PlaybackState.CustomAction, @Nullable android.os.Bundle);
+    method public void sendCustomAction(@NonNull String, @Nullable android.os.Bundle);
+    method public void setPlaybackSpeed(float);
+    method public void setRating(android.media.Rating);
+    method public void skipToNext();
+    method public void skipToPrevious();
+    method public void skipToQueueItem(long);
+    method public void stop();
+  }
+
+  public final class MediaSession {
+    ctor public MediaSession(@NonNull android.content.Context, @NonNull String);
+    ctor public MediaSession(@NonNull android.content.Context, @NonNull String, @Nullable android.os.Bundle);
+    method @NonNull public android.media.session.MediaController getController();
+    method @NonNull public android.media.session.MediaSessionManager.RemoteUserInfo getCurrentControllerInfo();
+    method @NonNull public android.media.session.MediaSession.Token getSessionToken();
+    method public boolean isActive();
+    method public void release();
+    method public void sendSessionEvent(@NonNull String, @Nullable android.os.Bundle);
+    method public void setActive(boolean);
+    method public void setCallback(@Nullable android.media.session.MediaSession.Callback);
+    method public void setCallback(@Nullable android.media.session.MediaSession.Callback, @Nullable android.os.Handler);
+    method public void setExtras(@Nullable android.os.Bundle);
+    method public void setFlags(int);
+    method public void setMediaButtonReceiver(@Nullable android.app.PendingIntent);
+    method public void setMetadata(@Nullable android.media.MediaMetadata);
+    method public void setPlaybackState(@Nullable android.media.session.PlaybackState);
+    method public void setPlaybackToLocal(android.media.AudioAttributes);
+    method public void setPlaybackToRemote(@NonNull android.media.VolumeProvider);
+    method public void setQueue(@Nullable java.util.List<android.media.session.MediaSession.QueueItem>);
+    method public void setQueueTitle(@Nullable CharSequence);
+    method public void setRatingType(int);
+    method public void setSessionActivity(@Nullable android.app.PendingIntent);
+    field @Deprecated public static final int FLAG_HANDLES_MEDIA_BUTTONS = 1; // 0x1
+    field @Deprecated public static final int FLAG_HANDLES_TRANSPORT_CONTROLS = 2; // 0x2
+  }
+
+  public abstract static class MediaSession.Callback {
+    ctor public MediaSession.Callback();
+    method public void onCommand(@NonNull String, @Nullable android.os.Bundle, @Nullable android.os.ResultReceiver);
+    method public void onCustomAction(@NonNull String, @Nullable android.os.Bundle);
+    method public void onFastForward();
+    method public boolean onMediaButtonEvent(@NonNull android.content.Intent);
+    method public void onPause();
+    method public void onPlay();
+    method public void onPlayFromMediaId(String, android.os.Bundle);
+    method public void onPlayFromSearch(String, android.os.Bundle);
+    method public void onPlayFromUri(android.net.Uri, android.os.Bundle);
+    method public void onPrepare();
+    method public void onPrepareFromMediaId(String, android.os.Bundle);
+    method public void onPrepareFromSearch(String, android.os.Bundle);
+    method public void onPrepareFromUri(android.net.Uri, android.os.Bundle);
+    method public void onRewind();
+    method public void onSeekTo(long);
+    method public void onSetPlaybackSpeed(float);
+    method public void onSetRating(@NonNull android.media.Rating);
+    method public void onSkipToNext();
+    method public void onSkipToPrevious();
+    method public void onSkipToQueueItem(long);
+    method public void onStop();
+  }
+
+  public static final class MediaSession.QueueItem implements android.os.Parcelable {
+    ctor public MediaSession.QueueItem(android.media.MediaDescription, long);
+    method public int describeContents();
+    method public android.media.MediaDescription getDescription();
+    method public long getQueueId();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.session.MediaSession.QueueItem> CREATOR;
+    field public static final int UNKNOWN_ID = -1; // 0xffffffff
+  }
+
+  public static final class MediaSession.Token implements android.os.Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.session.MediaSession.Token> CREATOR;
+  }
+
+  public final class MediaSessionManager {
+    method public void addOnActiveSessionsChangedListener(@NonNull android.media.session.MediaSessionManager.OnActiveSessionsChangedListener, @Nullable android.content.ComponentName);
+    method public void addOnActiveSessionsChangedListener(@NonNull android.media.session.MediaSessionManager.OnActiveSessionsChangedListener, @Nullable android.content.ComponentName, @Nullable android.os.Handler);
+    method public void addOnSession2TokensChangedListener(@NonNull android.media.session.MediaSessionManager.OnSession2TokensChangedListener);
+    method public void addOnSession2TokensChangedListener(@NonNull android.media.session.MediaSessionManager.OnSession2TokensChangedListener, @NonNull android.os.Handler);
+    method @NonNull public java.util.List<android.media.session.MediaController> getActiveSessions(@Nullable android.content.ComponentName);
+    method @NonNull public java.util.List<android.media.Session2Token> getSession2Tokens();
+    method public boolean isTrustedForMediaControl(@NonNull android.media.session.MediaSessionManager.RemoteUserInfo);
+    method public void notifySession2Created(@NonNull android.media.Session2Token);
+    method public void removeOnActiveSessionsChangedListener(@NonNull android.media.session.MediaSessionManager.OnActiveSessionsChangedListener);
+    method public void removeOnSession2TokensChangedListener(@NonNull android.media.session.MediaSessionManager.OnSession2TokensChangedListener);
+  }
+
+  public static interface MediaSessionManager.OnActiveSessionsChangedListener {
+    method public void onActiveSessionsChanged(@Nullable java.util.List<android.media.session.MediaController>);
+  }
+
+  public static interface MediaSessionManager.OnSession2TokensChangedListener {
+    method public void onSession2TokensChanged(@NonNull java.util.List<android.media.Session2Token>);
+  }
+
+  public static final class MediaSessionManager.RemoteUserInfo {
+    ctor public MediaSessionManager.RemoteUserInfo(@NonNull String, int, int);
+    method public String getPackageName();
+    method public int getPid();
+    method public int getUid();
+  }
+
+  public final class PlaybackState implements android.os.Parcelable {
+    method public int describeContents();
+    method public long getActions();
+    method public long getActiveQueueItemId();
+    method public long getBufferedPosition();
+    method public java.util.List<android.media.session.PlaybackState.CustomAction> getCustomActions();
+    method public CharSequence getErrorMessage();
+    method @Nullable public android.os.Bundle getExtras();
+    method public long getLastPositionUpdateTime();
+    method public float getPlaybackSpeed();
+    method public long getPosition();
+    method public int getState();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final long ACTION_FAST_FORWARD = 64L; // 0x40L
+    field public static final long ACTION_PAUSE = 2L; // 0x2L
+    field public static final long ACTION_PLAY = 4L; // 0x4L
+    field public static final long ACTION_PLAY_FROM_MEDIA_ID = 1024L; // 0x400L
+    field public static final long ACTION_PLAY_FROM_SEARCH = 2048L; // 0x800L
+    field public static final long ACTION_PLAY_FROM_URI = 8192L; // 0x2000L
+    field public static final long ACTION_PLAY_PAUSE = 512L; // 0x200L
+    field public static final long ACTION_PREPARE = 16384L; // 0x4000L
+    field public static final long ACTION_PREPARE_FROM_MEDIA_ID = 32768L; // 0x8000L
+    field public static final long ACTION_PREPARE_FROM_SEARCH = 65536L; // 0x10000L
+    field public static final long ACTION_PREPARE_FROM_URI = 131072L; // 0x20000L
+    field public static final long ACTION_REWIND = 8L; // 0x8L
+    field public static final long ACTION_SEEK_TO = 256L; // 0x100L
+    field public static final long ACTION_SET_RATING = 128L; // 0x80L
+    field public static final long ACTION_SKIP_TO_NEXT = 32L; // 0x20L
+    field public static final long ACTION_SKIP_TO_PREVIOUS = 16L; // 0x10L
+    field public static final long ACTION_SKIP_TO_QUEUE_ITEM = 4096L; // 0x1000L
+    field public static final long ACTION_STOP = 1L; // 0x1L
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.session.PlaybackState> CREATOR;
+    field public static final long PLAYBACK_POSITION_UNKNOWN = -1L; // 0xffffffffffffffffL
+    field public static final int STATE_BUFFERING = 6; // 0x6
+    field public static final int STATE_CONNECTING = 8; // 0x8
+    field public static final int STATE_ERROR = 7; // 0x7
+    field public static final int STATE_FAST_FORWARDING = 4; // 0x4
+    field public static final int STATE_NONE = 0; // 0x0
+    field public static final int STATE_PAUSED = 2; // 0x2
+    field public static final int STATE_PLAYING = 3; // 0x3
+    field public static final int STATE_REWINDING = 5; // 0x5
+    field public static final int STATE_SKIPPING_TO_NEXT = 10; // 0xa
+    field public static final int STATE_SKIPPING_TO_PREVIOUS = 9; // 0x9
+    field public static final int STATE_SKIPPING_TO_QUEUE_ITEM = 11; // 0xb
+    field public static final int STATE_STOPPED = 1; // 0x1
+  }
+
+  public static final class PlaybackState.Builder {
+    ctor public PlaybackState.Builder();
+    ctor public PlaybackState.Builder(android.media.session.PlaybackState);
+    method public android.media.session.PlaybackState.Builder addCustomAction(String, String, int);
+    method public android.media.session.PlaybackState.Builder addCustomAction(android.media.session.PlaybackState.CustomAction);
+    method public android.media.session.PlaybackState build();
+    method public android.media.session.PlaybackState.Builder setActions(long);
+    method public android.media.session.PlaybackState.Builder setActiveQueueItemId(long);
+    method public android.media.session.PlaybackState.Builder setBufferedPosition(long);
+    method public android.media.session.PlaybackState.Builder setErrorMessage(CharSequence);
+    method public android.media.session.PlaybackState.Builder setExtras(android.os.Bundle);
+    method public android.media.session.PlaybackState.Builder setState(int, long, float, long);
+    method public android.media.session.PlaybackState.Builder setState(int, long, float);
+  }
+
+  public static final class PlaybackState.CustomAction implements android.os.Parcelable {
+    method public int describeContents();
+    method public String getAction();
+    method public android.os.Bundle getExtras();
+    method public int getIcon();
+    method public CharSequence getName();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.session.PlaybackState.CustomAction> CREATOR;
+  }
+
+  public static final class PlaybackState.CustomAction.Builder {
+    ctor public PlaybackState.CustomAction.Builder(String, CharSequence, @DrawableRes int);
+    method public android.media.session.PlaybackState.CustomAction build();
+    method public android.media.session.PlaybackState.CustomAction.Builder setExtras(android.os.Bundle);
+  }
+
+}
+
+package android.media.tv {
+
+  public final class TvContentRating {
+    method public boolean contains(@NonNull android.media.tv.TvContentRating);
+    method public static android.media.tv.TvContentRating createRating(String, String, String, java.lang.String...);
+    method public String flattenToString();
+    method public String getDomain();
+    method public String getMainRating();
+    method public String getRatingSystem();
+    method public java.util.List<java.lang.String> getSubRatings();
+    method public static android.media.tv.TvContentRating unflattenFromString(String);
+    field public static final android.media.tv.TvContentRating UNRATED;
+  }
+
+  public final class TvContract {
+    method public static android.net.Uri buildChannelLogoUri(long);
+    method public static android.net.Uri buildChannelLogoUri(android.net.Uri);
+    method public static android.net.Uri buildChannelUri(long);
+    method public static android.net.Uri buildChannelUriForPassthroughInput(String);
+    method public static android.net.Uri buildChannelsUriForInput(@Nullable String);
+    method public static String buildInputId(android.content.ComponentName);
+    method public static android.net.Uri buildPreviewProgramUri(long);
+    method public static android.net.Uri buildPreviewProgramsUriForChannel(long);
+    method public static android.net.Uri buildPreviewProgramsUriForChannel(android.net.Uri);
+    method public static android.net.Uri buildProgramUri(long);
+    method public static android.net.Uri buildProgramsUriForChannel(long);
+    method public static android.net.Uri buildProgramsUriForChannel(android.net.Uri);
+    method public static android.net.Uri buildProgramsUriForChannel(long, long, long);
+    method public static android.net.Uri buildProgramsUriForChannel(android.net.Uri, long, long);
+    method public static android.net.Uri buildRecordedProgramUri(long);
+    method public static android.net.Uri buildWatchNextProgramUri(long);
+    method public static boolean isChannelUri(@NonNull android.net.Uri);
+    method public static boolean isChannelUriForPassthroughInput(@NonNull android.net.Uri);
+    method public static boolean isChannelUriForTunerInput(@NonNull android.net.Uri);
+    method public static boolean isProgramUri(@NonNull android.net.Uri);
+    method public static boolean isRecordedProgramUri(@NonNull android.net.Uri);
+    method public static void requestChannelBrowsable(android.content.Context, long);
+    field public static final String ACTION_INITIALIZE_PROGRAMS = "android.media.tv.action.INITIALIZE_PROGRAMS";
+    field public static final String ACTION_PREVIEW_PROGRAM_ADDED_TO_WATCH_NEXT = "android.media.tv.action.PREVIEW_PROGRAM_ADDED_TO_WATCH_NEXT";
+    field public static final String ACTION_PREVIEW_PROGRAM_BROWSABLE_DISABLED = "android.media.tv.action.PREVIEW_PROGRAM_BROWSABLE_DISABLED";
+    field public static final String ACTION_REQUEST_CHANNEL_BROWSABLE = "android.media.tv.action.REQUEST_CHANNEL_BROWSABLE";
+    field public static final String ACTION_WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED = "android.media.tv.action.WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED";
+    field public static final String AUTHORITY = "android.media.tv";
+    field public static final String EXTRA_CHANNEL_ID = "android.media.tv.extra.CHANNEL_ID";
+    field public static final String EXTRA_PREVIEW_PROGRAM_ID = "android.media.tv.extra.PREVIEW_PROGRAM_ID";
+    field public static final String EXTRA_WATCH_NEXT_PROGRAM_ID = "android.media.tv.extra.WATCH_NEXT_PROGRAM_ID";
+  }
+
+  public static interface TvContract.BaseTvColumns extends android.provider.BaseColumns {
+    field public static final String COLUMN_PACKAGE_NAME = "package_name";
+  }
+
+  public static final class TvContract.Channels implements android.media.tv.TvContract.BaseTvColumns {
+    method @Nullable public static String getVideoResolution(String);
+    field public static final String COLUMN_APP_LINK_COLOR = "app_link_color";
+    field public static final String COLUMN_APP_LINK_ICON_URI = "app_link_icon_uri";
+    field public static final String COLUMN_APP_LINK_INTENT_URI = "app_link_intent_uri";
+    field public static final String COLUMN_APP_LINK_POSTER_ART_URI = "app_link_poster_art_uri";
+    field public static final String COLUMN_APP_LINK_TEXT = "app_link_text";
+    field public static final String COLUMN_BROWSABLE = "browsable";
+    field public static final String COLUMN_DESCRIPTION = "description";
+    field public static final String COLUMN_DISPLAY_NAME = "display_name";
+    field public static final String COLUMN_DISPLAY_NUMBER = "display_number";
+    field public static final String COLUMN_GLOBAL_CONTENT_ID = "global_content_id";
+    field public static final String COLUMN_INPUT_ID = "input_id";
+    field public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
+    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
+    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
+    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
+    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
+    field public static final String COLUMN_INTERNAL_PROVIDER_ID = "internal_provider_id";
+    field public static final String COLUMN_LOCKED = "locked";
+    field public static final String COLUMN_NETWORK_AFFILIATION = "network_affiliation";
+    field public static final String COLUMN_ORIGINAL_NETWORK_ID = "original_network_id";
+    field public static final String COLUMN_SEARCHABLE = "searchable";
+    field public static final String COLUMN_SERVICE_ID = "service_id";
+    field public static final String COLUMN_SERVICE_TYPE = "service_type";
+    field public static final String COLUMN_TRANSIENT = "transient";
+    field public static final String COLUMN_TRANSPORT_STREAM_ID = "transport_stream_id";
+    field public static final String COLUMN_TYPE = "type";
+    field public static final String COLUMN_VERSION_NUMBER = "version_number";
+    field public static final String COLUMN_VIDEO_FORMAT = "video_format";
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/channel";
+    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/channel";
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String SERVICE_TYPE_AUDIO = "SERVICE_TYPE_AUDIO";
+    field public static final String SERVICE_TYPE_AUDIO_VIDEO = "SERVICE_TYPE_AUDIO_VIDEO";
+    field public static final String SERVICE_TYPE_OTHER = "SERVICE_TYPE_OTHER";
+    field public static final String TYPE_1SEG = "TYPE_1SEG";
+    field public static final String TYPE_ATSC3_T = "TYPE_ATSC3_T";
+    field public static final String TYPE_ATSC_C = "TYPE_ATSC_C";
+    field public static final String TYPE_ATSC_M_H = "TYPE_ATSC_M_H";
+    field public static final String TYPE_ATSC_T = "TYPE_ATSC_T";
+    field public static final String TYPE_CMMB = "TYPE_CMMB";
+    field public static final String TYPE_DTMB = "TYPE_DTMB";
+    field public static final String TYPE_DVB_C = "TYPE_DVB_C";
+    field public static final String TYPE_DVB_C2 = "TYPE_DVB_C2";
+    field public static final String TYPE_DVB_H = "TYPE_DVB_H";
+    field public static final String TYPE_DVB_S = "TYPE_DVB_S";
+    field public static final String TYPE_DVB_S2 = "TYPE_DVB_S2";
+    field public static final String TYPE_DVB_SH = "TYPE_DVB_SH";
+    field public static final String TYPE_DVB_T = "TYPE_DVB_T";
+    field public static final String TYPE_DVB_T2 = "TYPE_DVB_T2";
+    field public static final String TYPE_ISDB_C = "TYPE_ISDB_C";
+    field public static final String TYPE_ISDB_S = "TYPE_ISDB_S";
+    field public static final String TYPE_ISDB_S3 = "TYPE_ISDB_S3";
+    field public static final String TYPE_ISDB_T = "TYPE_ISDB_T";
+    field public static final String TYPE_ISDB_TB = "TYPE_ISDB_TB";
+    field public static final String TYPE_NTSC = "TYPE_NTSC";
+    field public static final String TYPE_OTHER = "TYPE_OTHER";
+    field public static final String TYPE_PAL = "TYPE_PAL";
+    field public static final String TYPE_PREVIEW = "TYPE_PREVIEW";
+    field public static final String TYPE_SECAM = "TYPE_SECAM";
+    field public static final String TYPE_S_DMB = "TYPE_S_DMB";
+    field public static final String TYPE_T_DMB = "TYPE_T_DMB";
+    field public static final String VIDEO_FORMAT_1080I = "VIDEO_FORMAT_1080I";
+    field public static final String VIDEO_FORMAT_1080P = "VIDEO_FORMAT_1080P";
+    field public static final String VIDEO_FORMAT_2160P = "VIDEO_FORMAT_2160P";
+    field public static final String VIDEO_FORMAT_240P = "VIDEO_FORMAT_240P";
+    field public static final String VIDEO_FORMAT_360P = "VIDEO_FORMAT_360P";
+    field public static final String VIDEO_FORMAT_4320P = "VIDEO_FORMAT_4320P";
+    field public static final String VIDEO_FORMAT_480I = "VIDEO_FORMAT_480I";
+    field public static final String VIDEO_FORMAT_480P = "VIDEO_FORMAT_480P";
+    field public static final String VIDEO_FORMAT_576I = "VIDEO_FORMAT_576I";
+    field public static final String VIDEO_FORMAT_576P = "VIDEO_FORMAT_576P";
+    field public static final String VIDEO_FORMAT_720P = "VIDEO_FORMAT_720P";
+    field public static final String VIDEO_RESOLUTION_ED = "VIDEO_RESOLUTION_ED";
+    field public static final String VIDEO_RESOLUTION_FHD = "VIDEO_RESOLUTION_FHD";
+    field public static final String VIDEO_RESOLUTION_HD = "VIDEO_RESOLUTION_HD";
+    field public static final String VIDEO_RESOLUTION_SD = "VIDEO_RESOLUTION_SD";
+    field public static final String VIDEO_RESOLUTION_UHD = "VIDEO_RESOLUTION_UHD";
+  }
+
+  public static final class TvContract.Channels.Logo {
+    field public static final String CONTENT_DIRECTORY = "logo";
+  }
+
+  public static final class TvContract.PreviewPrograms implements android.media.tv.TvContract.BaseTvColumns {
+    field public static final int ASPECT_RATIO_16_9 = 0; // 0x0
+    field public static final int ASPECT_RATIO_1_1 = 3; // 0x3
+    field public static final int ASPECT_RATIO_2_3 = 4; // 0x4
+    field public static final int ASPECT_RATIO_3_2 = 1; // 0x1
+    field public static final int ASPECT_RATIO_4_3 = 2; // 0x2
+    field public static final int AVAILABILITY_AVAILABLE = 0; // 0x0
+    field public static final int AVAILABILITY_FREE_WITH_SUBSCRIPTION = 1; // 0x1
+    field public static final int AVAILABILITY_PAID_CONTENT = 2; // 0x2
+    field public static final String COLUMN_AUDIO_LANGUAGE = "audio_language";
+    field public static final String COLUMN_AUTHOR = "author";
+    field public static final String COLUMN_AVAILABILITY = "availability";
+    field public static final String COLUMN_BROWSABLE = "browsable";
+    field public static final String COLUMN_CANONICAL_GENRE = "canonical_genre";
+    field public static final String COLUMN_CHANNEL_ID = "channel_id";
+    field public static final String COLUMN_CONTENT_ID = "content_id";
+    field public static final String COLUMN_CONTENT_RATING = "content_rating";
+    field public static final String COLUMN_DURATION_MILLIS = "duration_millis";
+    field public static final String COLUMN_EPISODE_DISPLAY_NUMBER = "episode_display_number";
+    field public static final String COLUMN_EPISODE_TITLE = "episode_title";
+    field public static final String COLUMN_INTENT_URI = "intent_uri";
+    field public static final String COLUMN_INTERACTION_COUNT = "interaction_count";
+    field public static final String COLUMN_INTERACTION_TYPE = "interaction_type";
+    field public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
+    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
+    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
+    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
+    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
+    field public static final String COLUMN_INTERNAL_PROVIDER_ID = "internal_provider_id";
+    field public static final String COLUMN_ITEM_COUNT = "item_count";
+    field public static final String COLUMN_LAST_PLAYBACK_POSITION_MILLIS = "last_playback_position_millis";
+    field public static final String COLUMN_LIVE = "live";
+    field public static final String COLUMN_LOGO_URI = "logo_uri";
+    field public static final String COLUMN_LONG_DESCRIPTION = "long_description";
+    field public static final String COLUMN_OFFER_PRICE = "offer_price";
+    field public static final String COLUMN_POSTER_ART_ASPECT_RATIO = "poster_art_aspect_ratio";
+    field public static final String COLUMN_POSTER_ART_URI = "poster_art_uri";
+    field public static final String COLUMN_PREVIEW_VIDEO_URI = "preview_video_uri";
+    field public static final String COLUMN_RELEASE_DATE = "release_date";
+    field public static final String COLUMN_REVIEW_RATING = "review_rating";
+    field public static final String COLUMN_REVIEW_RATING_STYLE = "review_rating_style";
+    field public static final String COLUMN_SEARCHABLE = "searchable";
+    field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
+    field public static final String COLUMN_SEASON_TITLE = "season_title";
+    field public static final String COLUMN_SERIES_ID = "series_id";
+    field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
+    field public static final String COLUMN_SPLIT_ID = "split_id";
+    field public static final String COLUMN_STARTING_PRICE = "starting_price";
+    field public static final String COLUMN_THUMBNAIL_ASPECT_RATIO = "poster_thumbnail_aspect_ratio";
+    field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
+    field public static final String COLUMN_TITLE = "title";
+    field public static final String COLUMN_TRANSIENT = "transient";
+    field public static final String COLUMN_TYPE = "type";
+    field public static final String COLUMN_VERSION_NUMBER = "version_number";
+    field public static final String COLUMN_VIDEO_HEIGHT = "video_height";
+    field public static final String COLUMN_VIDEO_WIDTH = "video_width";
+    field public static final String COLUMN_WEIGHT = "weight";
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/preview_program";
+    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/preview_program";
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final int INTERACTION_TYPE_FANS = 3; // 0x3
+    field public static final int INTERACTION_TYPE_FOLLOWERS = 2; // 0x2
+    field public static final int INTERACTION_TYPE_LIKES = 4; // 0x4
+    field public static final int INTERACTION_TYPE_LISTENS = 1; // 0x1
+    field public static final int INTERACTION_TYPE_THUMBS = 5; // 0x5
+    field public static final int INTERACTION_TYPE_VIEWERS = 6; // 0x6
+    field public static final int INTERACTION_TYPE_VIEWS = 0; // 0x0
+    field public static final int REVIEW_RATING_STYLE_PERCENTAGE = 2; // 0x2
+    field public static final int REVIEW_RATING_STYLE_STARS = 0; // 0x0
+    field public static final int REVIEW_RATING_STYLE_THUMBS_UP_DOWN = 1; // 0x1
+    field public static final int TYPE_ALBUM = 8; // 0x8
+    field public static final int TYPE_ARTIST = 9; // 0x9
+    field public static final int TYPE_CHANNEL = 6; // 0x6
+    field public static final int TYPE_CLIP = 4; // 0x4
+    field public static final int TYPE_EVENT = 5; // 0x5
+    field public static final int TYPE_MOVIE = 0; // 0x0
+    field public static final int TYPE_PLAYLIST = 10; // 0xa
+    field public static final int TYPE_STATION = 11; // 0xb
+    field public static final int TYPE_TRACK = 7; // 0x7
+    field public static final int TYPE_TV_EPISODE = 3; // 0x3
+    field public static final int TYPE_TV_SEASON = 2; // 0x2
+    field public static final int TYPE_TV_SERIES = 1; // 0x1
+  }
+
+  public static final class TvContract.Programs implements android.media.tv.TvContract.BaseTvColumns {
+    field public static final String COLUMN_AUDIO_LANGUAGE = "audio_language";
+    field public static final String COLUMN_BROADCAST_GENRE = "broadcast_genre";
+    field public static final String COLUMN_CANONICAL_GENRE = "canonical_genre";
+    field public static final String COLUMN_CHANNEL_ID = "channel_id";
+    field public static final String COLUMN_CONTENT_RATING = "content_rating";
+    field public static final String COLUMN_END_TIME_UTC_MILLIS = "end_time_utc_millis";
+    field public static final String COLUMN_EPISODE_DISPLAY_NUMBER = "episode_display_number";
+    field @Deprecated public static final String COLUMN_EPISODE_NUMBER = "episode_number";
+    field public static final String COLUMN_EPISODE_TITLE = "episode_title";
+    field public static final String COLUMN_EVENT_ID = "event_id";
+    field public static final String COLUMN_GLOBAL_CONTENT_ID = "global_content_id";
+    field public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
+    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
+    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
+    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
+    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
+    field public static final String COLUMN_LONG_DESCRIPTION = "long_description";
+    field public static final String COLUMN_POSTER_ART_URI = "poster_art_uri";
+    field public static final String COLUMN_RECORDING_PROHIBITED = "recording_prohibited";
+    field public static final String COLUMN_REVIEW_RATING = "review_rating";
+    field public static final String COLUMN_REVIEW_RATING_STYLE = "review_rating_style";
+    field public static final String COLUMN_SEARCHABLE = "searchable";
+    field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
+    field @Deprecated public static final String COLUMN_SEASON_NUMBER = "season_number";
+    field public static final String COLUMN_SEASON_TITLE = "season_title";
+    field public static final String COLUMN_SERIES_ID = "series_id";
+    field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
+    field public static final String COLUMN_SPLIT_ID = "split_id";
+    field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
+    field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
+    field public static final String COLUMN_TITLE = "title";
+    field public static final String COLUMN_VERSION_NUMBER = "version_number";
+    field public static final String COLUMN_VIDEO_HEIGHT = "video_height";
+    field public static final String COLUMN_VIDEO_WIDTH = "video_width";
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/program";
+    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/program";
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final int REVIEW_RATING_STYLE_PERCENTAGE = 2; // 0x2
+    field public static final int REVIEW_RATING_STYLE_STARS = 0; // 0x0
+    field public static final int REVIEW_RATING_STYLE_THUMBS_UP_DOWN = 1; // 0x1
+  }
+
+  public static final class TvContract.Programs.Genres {
+    method public static String[] decode(@NonNull String);
+    method public static String encode(@NonNull java.lang.String...);
+    method public static boolean isCanonical(String);
+    field public static final String ANIMAL_WILDLIFE = "ANIMAL_WILDLIFE";
+    field public static final String ARTS = "ARTS";
+    field public static final String COMEDY = "COMEDY";
+    field public static final String DRAMA = "DRAMA";
+    field public static final String EDUCATION = "EDUCATION";
+    field public static final String ENTERTAINMENT = "ENTERTAINMENT";
+    field public static final String FAMILY_KIDS = "FAMILY_KIDS";
+    field public static final String GAMING = "GAMING";
+    field public static final String LIFE_STYLE = "LIFE_STYLE";
+    field public static final String MOVIES = "MOVIES";
+    field public static final String MUSIC = "MUSIC";
+    field public static final String NEWS = "NEWS";
+    field public static final String PREMIER = "PREMIER";
+    field public static final String SHOPPING = "SHOPPING";
+    field public static final String SPORTS = "SPORTS";
+    field public static final String TECH_SCIENCE = "TECH_SCIENCE";
+    field public static final String TRAVEL = "TRAVEL";
+  }
+
+  public static final class TvContract.RecordedPrograms implements android.media.tv.TvContract.BaseTvColumns {
+    field public static final String COLUMN_AUDIO_LANGUAGE = "audio_language";
+    field public static final String COLUMN_BROADCAST_GENRE = "broadcast_genre";
+    field public static final String COLUMN_CANONICAL_GENRE = "canonical_genre";
+    field public static final String COLUMN_CHANNEL_ID = "channel_id";
+    field public static final String COLUMN_CONTENT_RATING = "content_rating";
+    field public static final String COLUMN_END_TIME_UTC_MILLIS = "end_time_utc_millis";
+    field public static final String COLUMN_EPISODE_DISPLAY_NUMBER = "episode_display_number";
+    field public static final String COLUMN_EPISODE_TITLE = "episode_title";
+    field public static final String COLUMN_INPUT_ID = "input_id";
+    field public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
+    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
+    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
+    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
+    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
+    field public static final String COLUMN_LONG_DESCRIPTION = "long_description";
+    field public static final String COLUMN_POSTER_ART_URI = "poster_art_uri";
+    field public static final String COLUMN_RECORDING_DATA_BYTES = "recording_data_bytes";
+    field public static final String COLUMN_RECORDING_DATA_URI = "recording_data_uri";
+    field public static final String COLUMN_RECORDING_DURATION_MILLIS = "recording_duration_millis";
+    field public static final String COLUMN_RECORDING_EXPIRE_TIME_UTC_MILLIS = "recording_expire_time_utc_millis";
+    field public static final String COLUMN_REVIEW_RATING = "review_rating";
+    field public static final String COLUMN_REVIEW_RATING_STYLE = "review_rating_style";
+    field public static final String COLUMN_SEARCHABLE = "searchable";
+    field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
+    field public static final String COLUMN_SEASON_TITLE = "season_title";
+    field public static final String COLUMN_SERIES_ID = "series_id";
+    field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
+    field public static final String COLUMN_SPLIT_ID = "split_id";
+    field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
+    field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
+    field public static final String COLUMN_TITLE = "title";
+    field public static final String COLUMN_VERSION_NUMBER = "version_number";
+    field public static final String COLUMN_VIDEO_HEIGHT = "video_height";
+    field public static final String COLUMN_VIDEO_WIDTH = "video_width";
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/recorded_program";
+    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/recorded_program";
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final int REVIEW_RATING_STYLE_PERCENTAGE = 2; // 0x2
+    field public static final int REVIEW_RATING_STYLE_STARS = 0; // 0x0
+    field public static final int REVIEW_RATING_STYLE_THUMBS_UP_DOWN = 1; // 0x1
+  }
+
+  public static final class TvContract.WatchNextPrograms implements android.media.tv.TvContract.BaseTvColumns {
+    field public static final int ASPECT_RATIO_16_9 = 0; // 0x0
+    field public static final int ASPECT_RATIO_1_1 = 3; // 0x3
+    field public static final int ASPECT_RATIO_2_3 = 4; // 0x4
+    field public static final int ASPECT_RATIO_3_2 = 1; // 0x1
+    field public static final int ASPECT_RATIO_4_3 = 2; // 0x2
+    field public static final int AVAILABILITY_AVAILABLE = 0; // 0x0
+    field public static final int AVAILABILITY_FREE_WITH_SUBSCRIPTION = 1; // 0x1
+    field public static final int AVAILABILITY_PAID_CONTENT = 2; // 0x2
+    field public static final String COLUMN_AUDIO_LANGUAGE = "audio_language";
+    field public static final String COLUMN_AUTHOR = "author";
+    field public static final String COLUMN_AVAILABILITY = "availability";
+    field public static final String COLUMN_BROWSABLE = "browsable";
+    field public static final String COLUMN_CANONICAL_GENRE = "canonical_genre";
+    field public static final String COLUMN_CONTENT_ID = "content_id";
+    field public static final String COLUMN_CONTENT_RATING = "content_rating";
+    field public static final String COLUMN_DURATION_MILLIS = "duration_millis";
+    field public static final String COLUMN_EPISODE_DISPLAY_NUMBER = "episode_display_number";
+    field public static final String COLUMN_EPISODE_TITLE = "episode_title";
+    field public static final String COLUMN_INTENT_URI = "intent_uri";
+    field public static final String COLUMN_INTERACTION_COUNT = "interaction_count";
+    field public static final String COLUMN_INTERACTION_TYPE = "interaction_type";
+    field public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
+    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
+    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
+    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
+    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
+    field public static final String COLUMN_INTERNAL_PROVIDER_ID = "internal_provider_id";
+    field public static final String COLUMN_ITEM_COUNT = "item_count";
+    field public static final String COLUMN_LAST_ENGAGEMENT_TIME_UTC_MILLIS = "last_engagement_time_utc_millis";
+    field public static final String COLUMN_LAST_PLAYBACK_POSITION_MILLIS = "last_playback_position_millis";
+    field public static final String COLUMN_LIVE = "live";
+    field public static final String COLUMN_LOGO_URI = "logo_uri";
+    field public static final String COLUMN_LONG_DESCRIPTION = "long_description";
+    field public static final String COLUMN_OFFER_PRICE = "offer_price";
+    field public static final String COLUMN_POSTER_ART_ASPECT_RATIO = "poster_art_aspect_ratio";
+    field public static final String COLUMN_POSTER_ART_URI = "poster_art_uri";
+    field public static final String COLUMN_PREVIEW_VIDEO_URI = "preview_video_uri";
+    field public static final String COLUMN_RELEASE_DATE = "release_date";
+    field public static final String COLUMN_REVIEW_RATING = "review_rating";
+    field public static final String COLUMN_REVIEW_RATING_STYLE = "review_rating_style";
+    field public static final String COLUMN_SEARCHABLE = "searchable";
+    field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
+    field public static final String COLUMN_SEASON_TITLE = "season_title";
+    field public static final String COLUMN_SERIES_ID = "series_id";
+    field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
+    field public static final String COLUMN_SPLIT_ID = "split_id";
+    field public static final String COLUMN_STARTING_PRICE = "starting_price";
+    field public static final String COLUMN_THUMBNAIL_ASPECT_RATIO = "poster_thumbnail_aspect_ratio";
+    field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
+    field public static final String COLUMN_TITLE = "title";
+    field public static final String COLUMN_TRANSIENT = "transient";
+    field public static final String COLUMN_TYPE = "type";
+    field public static final String COLUMN_VERSION_NUMBER = "version_number";
+    field public static final String COLUMN_VIDEO_HEIGHT = "video_height";
+    field public static final String COLUMN_VIDEO_WIDTH = "video_width";
+    field public static final String COLUMN_WATCH_NEXT_TYPE = "watch_next_type";
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/watch_next_program";
+    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/watch_next_program";
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final int INTERACTION_TYPE_FANS = 3; // 0x3
+    field public static final int INTERACTION_TYPE_FOLLOWERS = 2; // 0x2
+    field public static final int INTERACTION_TYPE_LIKES = 4; // 0x4
+    field public static final int INTERACTION_TYPE_LISTENS = 1; // 0x1
+    field public static final int INTERACTION_TYPE_THUMBS = 5; // 0x5
+    field public static final int INTERACTION_TYPE_VIEWERS = 6; // 0x6
+    field public static final int INTERACTION_TYPE_VIEWS = 0; // 0x0
+    field public static final int REVIEW_RATING_STYLE_PERCENTAGE = 2; // 0x2
+    field public static final int REVIEW_RATING_STYLE_STARS = 0; // 0x0
+    field public static final int REVIEW_RATING_STYLE_THUMBS_UP_DOWN = 1; // 0x1
+    field public static final int TYPE_ALBUM = 8; // 0x8
+    field public static final int TYPE_ARTIST = 9; // 0x9
+    field public static final int TYPE_CHANNEL = 6; // 0x6
+    field public static final int TYPE_CLIP = 4; // 0x4
+    field public static final int TYPE_EVENT = 5; // 0x5
+    field public static final int TYPE_MOVIE = 0; // 0x0
+    field public static final int TYPE_PLAYLIST = 10; // 0xa
+    field public static final int TYPE_STATION = 11; // 0xb
+    field public static final int TYPE_TRACK = 7; // 0x7
+    field public static final int TYPE_TV_EPISODE = 3; // 0x3
+    field public static final int TYPE_TV_SEASON = 2; // 0x2
+    field public static final int TYPE_TV_SERIES = 1; // 0x1
+    field public static final int WATCH_NEXT_TYPE_CONTINUE = 0; // 0x0
+    field public static final int WATCH_NEXT_TYPE_NEW = 2; // 0x2
+    field public static final int WATCH_NEXT_TYPE_NEXT = 1; // 0x1
+    field public static final int WATCH_NEXT_TYPE_WATCHLIST = 3; // 0x3
+  }
+
+  public final class TvInputInfo implements android.os.Parcelable {
+    method public boolean canRecord();
+    method @Deprecated public android.content.Intent createSettingsIntent();
+    method public android.content.Intent createSetupIntent();
+    method public int describeContents();
+    method public android.os.Bundle getExtras();
+    method public String getId();
+    method public String getParentId();
+    method public android.content.pm.ServiceInfo getServiceInfo();
+    method public int getTunerCount();
+    method public int getType();
+    method public boolean isHidden(android.content.Context);
+    method public boolean isPassthroughInput();
+    method public CharSequence loadCustomLabel(android.content.Context);
+    method public android.graphics.drawable.Drawable loadIcon(@NonNull android.content.Context);
+    method public CharSequence loadLabel(@NonNull android.content.Context);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.TvInputInfo> CREATOR;
+    field public static final String EXTRA_INPUT_ID = "android.media.tv.extra.INPUT_ID";
+    field public static final int TYPE_COMPONENT = 1004; // 0x3ec
+    field public static final int TYPE_COMPOSITE = 1001; // 0x3e9
+    field public static final int TYPE_DISPLAY_PORT = 1008; // 0x3f0
+    field public static final int TYPE_DVI = 1006; // 0x3ee
+    field public static final int TYPE_HDMI = 1007; // 0x3ef
+    field public static final int TYPE_OTHER = 1000; // 0x3e8
+    field public static final int TYPE_SCART = 1003; // 0x3eb
+    field public static final int TYPE_SVIDEO = 1002; // 0x3ea
+    field public static final int TYPE_TUNER = 0; // 0x0
+    field public static final int TYPE_VGA = 1005; // 0x3ed
+  }
+
+  public static final class TvInputInfo.Builder {
+    ctor public TvInputInfo.Builder(android.content.Context, android.content.ComponentName);
+    method public android.media.tv.TvInputInfo build();
+    method public android.media.tv.TvInputInfo.Builder setCanRecord(boolean);
+    method public android.media.tv.TvInputInfo.Builder setExtras(android.os.Bundle);
+    method public android.media.tv.TvInputInfo.Builder setTunerCount(int);
+  }
+
+  public final class TvInputManager {
+    method public java.util.List<android.media.tv.TvContentRating> getBlockedRatings();
+    method public int getInputState(@NonNull String);
+    method @Nullable public android.media.tv.TvInputInfo getTvInputInfo(@NonNull String);
+    method public java.util.List<android.media.tv.TvInputInfo> getTvInputList();
+    method public boolean isParentalControlsEnabled();
+    method public boolean isRatingBlocked(@NonNull android.media.tv.TvContentRating);
+    method public void registerCallback(@NonNull android.media.tv.TvInputManager.TvInputCallback, @NonNull android.os.Handler);
+    method public void unregisterCallback(@NonNull android.media.tv.TvInputManager.TvInputCallback);
+    method public void updateTvInputInfo(@NonNull android.media.tv.TvInputInfo);
+    field public static final String ACTION_BLOCKED_RATINGS_CHANGED = "android.media.tv.action.BLOCKED_RATINGS_CHANGED";
+    field public static final String ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED = "android.media.tv.action.PARENTAL_CONTROLS_ENABLED_CHANGED";
+    field public static final String ACTION_QUERY_CONTENT_RATING_SYSTEMS = "android.media.tv.action.QUERY_CONTENT_RATING_SYSTEMS";
+    field public static final String ACTION_SETUP_INPUTS = "android.media.tv.action.SETUP_INPUTS";
+    field public static final String ACTION_VIEW_RECORDING_SCHEDULES = "android.media.tv.action.VIEW_RECORDING_SCHEDULES";
+    field public static final int INPUT_STATE_CONNECTED = 0; // 0x0
+    field public static final int INPUT_STATE_CONNECTED_STANDBY = 1; // 0x1
+    field public static final int INPUT_STATE_DISCONNECTED = 2; // 0x2
+    field public static final String META_DATA_CONTENT_RATING_SYSTEMS = "android.media.tv.metadata.CONTENT_RATING_SYSTEMS";
+    field public static final int RECORDING_ERROR_INSUFFICIENT_SPACE = 1; // 0x1
+    field public static final int RECORDING_ERROR_RESOURCE_BUSY = 2; // 0x2
+    field public static final int RECORDING_ERROR_UNKNOWN = 0; // 0x0
+    field public static final long TIME_SHIFT_INVALID_TIME = -9223372036854775808L; // 0x8000000000000000L
+    field public static final int TIME_SHIFT_STATUS_AVAILABLE = 3; // 0x3
+    field public static final int TIME_SHIFT_STATUS_UNAVAILABLE = 2; // 0x2
+    field public static final int TIME_SHIFT_STATUS_UNKNOWN = 0; // 0x0
+    field public static final int TIME_SHIFT_STATUS_UNSUPPORTED = 1; // 0x1
+    field public static final int VIDEO_UNAVAILABLE_REASON_AUDIO_ONLY = 4; // 0x4
+    field public static final int VIDEO_UNAVAILABLE_REASON_BUFFERING = 3; // 0x3
+    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_BLACKOUT = 16; // 0x10
+    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_CARD_INVALID = 15; // 0xf
+    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_CARD_MUTE = 14; // 0xe
+    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_INSUFFICIENT_OUTPUT_PROTECTION = 7; // 0x7
+    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_LICENSE_EXPIRED = 10; // 0xa
+    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_NEED_ACTIVATION = 11; // 0xb
+    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_NEED_PAIRING = 12; // 0xc
+    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_NO_CARD = 13; // 0xd
+    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_PVR_RECORDING_NOT_ALLOWED = 8; // 0x8
+    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_REBOOTING = 17; // 0x11
+    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_UNKNOWN = 18; // 0x12
+    field public static final int VIDEO_UNAVAILABLE_REASON_INSUFFICIENT_RESOURCE = 6; // 0x6
+    field public static final int VIDEO_UNAVAILABLE_REASON_NOT_CONNECTED = 5; // 0x5
+    field public static final int VIDEO_UNAVAILABLE_REASON_TUNING = 1; // 0x1
+    field public static final int VIDEO_UNAVAILABLE_REASON_UNKNOWN = 0; // 0x0
+    field public static final int VIDEO_UNAVAILABLE_REASON_WEAK_SIGNAL = 2; // 0x2
+  }
+
+  public abstract static class TvInputManager.TvInputCallback {
+    ctor public TvInputManager.TvInputCallback();
+    method public void onInputAdded(String);
+    method public void onInputRemoved(String);
+    method public void onInputStateChanged(String, int);
+    method public void onInputUpdated(String);
+    method public void onTvInputInfoUpdated(android.media.tv.TvInputInfo);
+  }
+
+  public abstract class TvInputService extends android.app.Service {
+    ctor public TvInputService();
+    method public final android.os.IBinder onBind(android.content.Intent);
+    method @Nullable public android.media.tv.TvInputService.RecordingSession onCreateRecordingSession(@NonNull String);
+    method @Nullable public android.media.tv.TvInputService.RecordingSession onCreateRecordingSession(@NonNull String, @NonNull String);
+    method @Nullable public abstract android.media.tv.TvInputService.Session onCreateSession(@NonNull String);
+    method @Nullable public android.media.tv.TvInputService.Session onCreateSession(@NonNull String, @NonNull String);
+    field public static final int PRIORITY_HINT_USE_CASE_TYPE_BACKGROUND = 100; // 0x64
+    field public static final int PRIORITY_HINT_USE_CASE_TYPE_LIVE = 400; // 0x190
+    field public static final int PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK = 300; // 0x12c
+    field public static final int PRIORITY_HINT_USE_CASE_TYPE_RECORD = 500; // 0x1f4
+    field public static final int PRIORITY_HINT_USE_CASE_TYPE_SCAN = 200; // 0xc8
+    field public static final String SERVICE_INTERFACE = "android.media.tv.TvInputService";
+    field public static final String SERVICE_META_DATA = "android.media.tv.input";
+  }
+
+  public abstract static class TvInputService.HardwareSession extends android.media.tv.TvInputService.Session {
+    ctor public TvInputService.HardwareSession(android.content.Context);
+    method public abstract String getHardwareInputId();
+    method public void onHardwareVideoAvailable();
+    method public void onHardwareVideoUnavailable(int);
+    method public final boolean onSetSurface(android.view.Surface);
+  }
+
+  public abstract static class TvInputService.RecordingSession {
+    ctor public TvInputService.RecordingSession(android.content.Context);
+    method public void notifyError(int);
+    method public void notifyRecordingStopped(android.net.Uri);
+    method public void notifyTuned(android.net.Uri);
+    method public void onAppPrivateCommand(@NonNull String, android.os.Bundle);
+    method public abstract void onRelease();
+    method public abstract void onStartRecording(@Nullable android.net.Uri);
+    method public void onStartRecording(@Nullable android.net.Uri, @NonNull android.os.Bundle);
+    method public abstract void onStopRecording();
+    method public abstract void onTune(android.net.Uri);
+    method public void onTune(android.net.Uri, android.os.Bundle);
+  }
+
+  public abstract static class TvInputService.Session implements android.view.KeyEvent.Callback {
+    ctor public TvInputService.Session(android.content.Context);
+    method public void layoutSurface(int, int, int, int);
+    method public void notifyChannelRetuned(android.net.Uri);
+    method public void notifyContentAllowed();
+    method public void notifyContentBlocked(@NonNull android.media.tv.TvContentRating);
+    method public void notifyTimeShiftStatusChanged(int);
+    method public void notifyTrackSelected(int, String);
+    method public void notifyTracksChanged(java.util.List<android.media.tv.TvTrackInfo>);
+    method public void notifyVideoAvailable();
+    method public void notifyVideoUnavailable(int);
+    method public void onAppPrivateCommand(@NonNull String, android.os.Bundle);
+    method public android.view.View onCreateOverlayView();
+    method public boolean onGenericMotionEvent(android.view.MotionEvent);
+    method public boolean onKeyDown(int, android.view.KeyEvent);
+    method public boolean onKeyLongPress(int, android.view.KeyEvent);
+    method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
+    method public boolean onKeyUp(int, android.view.KeyEvent);
+    method public void onOverlayViewSizeChanged(int, int);
+    method public abstract void onRelease();
+    method public boolean onSelectTrack(int, @Nullable String);
+    method public abstract void onSetCaptionEnabled(boolean);
+    method public abstract void onSetStreamVolume(@FloatRange(from=0.0, to=1.0) float);
+    method public abstract boolean onSetSurface(@Nullable android.view.Surface);
+    method public void onSurfaceChanged(int, int, int);
+    method public long onTimeShiftGetCurrentPosition();
+    method public long onTimeShiftGetStartPosition();
+    method public void onTimeShiftPause();
+    method public void onTimeShiftPlay(android.net.Uri);
+    method public void onTimeShiftResume();
+    method public void onTimeShiftSeekTo(long);
+    method public void onTimeShiftSetPlaybackParams(android.media.PlaybackParams);
+    method public boolean onTouchEvent(android.view.MotionEvent);
+    method public boolean onTrackballEvent(android.view.MotionEvent);
+    method public abstract boolean onTune(android.net.Uri);
+    method public boolean onTune(android.net.Uri, android.os.Bundle);
+    method public void onUnblockContent(android.media.tv.TvContentRating);
+    method public void setOverlayViewEnabled(boolean);
+  }
+
+  public class TvRecordingClient {
+    ctor public TvRecordingClient(android.content.Context, String, @NonNull android.media.tv.TvRecordingClient.RecordingCallback, android.os.Handler);
+    method public void release();
+    method public void sendAppPrivateCommand(@NonNull String, android.os.Bundle);
+    method public void startRecording(@Nullable android.net.Uri);
+    method public void startRecording(@Nullable android.net.Uri, @NonNull android.os.Bundle);
+    method public void stopRecording();
+    method public void tune(String, android.net.Uri);
+    method public void tune(String, android.net.Uri, android.os.Bundle);
+  }
+
+  public abstract static class TvRecordingClient.RecordingCallback {
+    ctor public TvRecordingClient.RecordingCallback();
+    method public void onConnectionFailed(String);
+    method public void onDisconnected(String);
+    method public void onError(int);
+    method public void onRecordingStopped(android.net.Uri);
+    method public void onTuned(android.net.Uri);
+  }
+
+  public final class TvTrackInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getAudioChannelCount();
+    method public int getAudioSampleRate();
+    method public CharSequence getDescription();
+    method @Nullable public String getEncoding();
+    method public android.os.Bundle getExtra();
+    method public String getId();
+    method public String getLanguage();
+    method public int getType();
+    method public byte getVideoActiveFormatDescription();
+    method public float getVideoFrameRate();
+    method public int getVideoHeight();
+    method public float getVideoPixelAspectRatio();
+    method public int getVideoWidth();
+    method public boolean isAudioDescription();
+    method public boolean isEncrypted();
+    method public boolean isHardOfHearing();
+    method public boolean isSpokenSubtitle();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.TvTrackInfo> CREATOR;
+    field public static final int TYPE_AUDIO = 0; // 0x0
+    field public static final int TYPE_SUBTITLE = 2; // 0x2
+    field public static final int TYPE_VIDEO = 1; // 0x1
+  }
+
+  public static final class TvTrackInfo.Builder {
+    ctor public TvTrackInfo.Builder(int, @NonNull String);
+    method @NonNull public android.media.tv.TvTrackInfo build();
+    method @NonNull public android.media.tv.TvTrackInfo.Builder setAudioChannelCount(int);
+    method @NonNull public android.media.tv.TvTrackInfo.Builder setAudioDescription(boolean);
+    method @NonNull public android.media.tv.TvTrackInfo.Builder setAudioSampleRate(int);
+    method @NonNull public android.media.tv.TvTrackInfo.Builder setDescription(@NonNull CharSequence);
+    method @NonNull public android.media.tv.TvTrackInfo.Builder setEncoding(@Nullable String);
+    method @NonNull public android.media.tv.TvTrackInfo.Builder setEncrypted(boolean);
+    method @NonNull public android.media.tv.TvTrackInfo.Builder setExtra(@NonNull android.os.Bundle);
+    method @NonNull public android.media.tv.TvTrackInfo.Builder setHardOfHearing(boolean);
+    method @NonNull public android.media.tv.TvTrackInfo.Builder setLanguage(@NonNull String);
+    method @NonNull public android.media.tv.TvTrackInfo.Builder setSpokenSubtitle(boolean);
+    method @NonNull public android.media.tv.TvTrackInfo.Builder setVideoActiveFormatDescription(byte);
+    method @NonNull public android.media.tv.TvTrackInfo.Builder setVideoFrameRate(float);
+    method @NonNull public android.media.tv.TvTrackInfo.Builder setVideoHeight(int);
+    method @NonNull public android.media.tv.TvTrackInfo.Builder setVideoPixelAspectRatio(float);
+    method @NonNull public android.media.tv.TvTrackInfo.Builder setVideoWidth(int);
+  }
+
+  public class TvView extends android.view.ViewGroup {
+    ctor public TvView(android.content.Context);
+    ctor public TvView(android.content.Context, android.util.AttributeSet);
+    ctor public TvView(android.content.Context, android.util.AttributeSet, int);
+    method public boolean dispatchUnhandledInputEvent(android.view.InputEvent);
+    method public String getSelectedTrack(int);
+    method public java.util.List<android.media.tv.TvTrackInfo> getTracks(int);
+    method public boolean onUnhandledInputEvent(android.view.InputEvent);
+    method public void reset();
+    method public void selectTrack(int, String);
+    method public void sendAppPrivateCommand(@NonNull String, android.os.Bundle);
+    method public void setCallback(@Nullable android.media.tv.TvView.TvInputCallback);
+    method public void setCaptionEnabled(boolean);
+    method public void setOnUnhandledInputEventListener(android.media.tv.TvView.OnUnhandledInputEventListener);
+    method public void setStreamVolume(@FloatRange(from=0.0, to=1.0) float);
+    method public void setTimeShiftPositionCallback(@Nullable android.media.tv.TvView.TimeShiftPositionCallback);
+    method public void setZOrderMediaOverlay(boolean);
+    method public void setZOrderOnTop(boolean);
+    method public void timeShiftPause();
+    method public void timeShiftPlay(String, android.net.Uri);
+    method public void timeShiftResume();
+    method public void timeShiftSeekTo(long);
+    method public void timeShiftSetPlaybackParams(@NonNull android.media.PlaybackParams);
+    method public void tune(@NonNull String, android.net.Uri);
+    method public void tune(String, android.net.Uri, android.os.Bundle);
+  }
+
+  public static interface TvView.OnUnhandledInputEventListener {
+    method public boolean onUnhandledInputEvent(android.view.InputEvent);
+  }
+
+  public abstract static class TvView.TimeShiftPositionCallback {
+    ctor public TvView.TimeShiftPositionCallback();
+    method public void onTimeShiftCurrentPositionChanged(String, long);
+    method public void onTimeShiftStartPositionChanged(String, long);
+  }
+
+  public abstract static class TvView.TvInputCallback {
+    ctor public TvView.TvInputCallback();
+    method public void onChannelRetuned(String, android.net.Uri);
+    method public void onConnectionFailed(String);
+    method public void onContentAllowed(String);
+    method public void onContentBlocked(String, android.media.tv.TvContentRating);
+    method public void onDisconnected(String);
+    method public void onTimeShiftStatusChanged(String, int);
+    method public void onTrackSelected(String, int, String);
+    method public void onTracksChanged(String, java.util.List<android.media.tv.TvTrackInfo>);
+    method public void onVideoAvailable(String);
+    method public void onVideoSizeChanged(String, int, int);
+    method public void onVideoUnavailable(String, int);
+  }
+
+}
+
+package android.mtp {
+
+  public final class MtpConstants {
+    ctor public MtpConstants();
+    method public static boolean isAbstractObject(int);
+    field public static final int ASSOCIATION_TYPE_GENERIC_FOLDER = 1; // 0x1
+    field public static final int FORMAT_3GP_CONTAINER = 47492; // 0xb984
+    field public static final int FORMAT_AAC = 47363; // 0xb903
+    field public static final int FORMAT_ABSTRACT_AUDIO_ALBUM = 47619; // 0xba03
+    field public static final int FORMAT_ABSTRACT_AUDIO_PLAYLIST = 47625; // 0xba09
+    field public static final int FORMAT_ABSTRACT_AV_PLAYLIST = 47621; // 0xba05
+    field public static final int FORMAT_ABSTRACT_DOCUMENT = 47745; // 0xba81
+    field public static final int FORMAT_ABSTRACT_IMAGE_ALBUM = 47618; // 0xba02
+    field public static final int FORMAT_ABSTRACT_MEDIACAST = 47627; // 0xba0b
+    field public static final int FORMAT_ABSTRACT_MULTIMEDIA_ALBUM = 47617; // 0xba01
+    field public static final int FORMAT_ABSTRACT_VIDEO_ALBUM = 47620; // 0xba04
+    field public static final int FORMAT_ABSTRACT_VIDEO_PLAYLIST = 47626; // 0xba0a
+    field public static final int FORMAT_AIFF = 12295; // 0x3007
+    field public static final int FORMAT_ASF = 12300; // 0x300c
+    field public static final int FORMAT_ASSOCIATION = 12289; // 0x3001
+    field public static final int FORMAT_ASX_PLAYLIST = 47635; // 0xba13
+    field public static final int FORMAT_AUDIBLE = 47364; // 0xb904
+    field public static final int FORMAT_AVI = 12298; // 0x300a
+    field public static final int FORMAT_BMP = 14340; // 0x3804
+    field public static final int FORMAT_DEFINED = 14336; // 0x3800
+    field public static final int FORMAT_DNG = 14353; // 0x3811
+    field public static final int FORMAT_DPOF = 12294; // 0x3006
+    field public static final int FORMAT_EXECUTABLE = 12291; // 0x3003
+    field public static final int FORMAT_EXIF_JPEG = 14337; // 0x3801
+    field public static final int FORMAT_FLAC = 47366; // 0xb906
+    field public static final int FORMAT_GIF = 14343; // 0x3807
+    field public static final int FORMAT_HTML = 12293; // 0x3005
+    field public static final int FORMAT_JFIF = 14344; // 0x3808
+    field public static final int FORMAT_JP2 = 14351; // 0x380f
+    field public static final int FORMAT_JPX = 14352; // 0x3810
+    field public static final int FORMAT_M3U_PLAYLIST = 47633; // 0xba11
+    field public static final int FORMAT_MP2 = 47491; // 0xb983
+    field public static final int FORMAT_MP3 = 12297; // 0x3009
+    field public static final int FORMAT_MP4_CONTAINER = 47490; // 0xb982
+    field public static final int FORMAT_MPEG = 12299; // 0x300b
+    field public static final int FORMAT_MPL_PLAYLIST = 47634; // 0xba12
+    field public static final int FORMAT_MS_EXCEL_SPREADSHEET = 47749; // 0xba85
+    field public static final int FORMAT_MS_POWERPOINT_PRESENTATION = 47750; // 0xba86
+    field public static final int FORMAT_MS_WORD_DOCUMENT = 47747; // 0xba83
+    field public static final int FORMAT_OGG = 47362; // 0xb902
+    field public static final int FORMAT_PICT = 14346; // 0x380a
+    field public static final int FORMAT_PLS_PLAYLIST = 47636; // 0xba14
+    field public static final int FORMAT_PNG = 14347; // 0x380b
+    field public static final int FORMAT_SCRIPT = 12290; // 0x3002
+    field public static final int FORMAT_TEXT = 12292; // 0x3004
+    field public static final int FORMAT_TIFF = 14349; // 0x380d
+    field public static final int FORMAT_TIFF_EP = 14338; // 0x3802
+    field public static final int FORMAT_UNDEFINED = 12288; // 0x3000
+    field public static final int FORMAT_UNDEFINED_AUDIO = 47360; // 0xb900
+    field public static final int FORMAT_UNDEFINED_COLLECTION = 47616; // 0xba00
+    field public static final int FORMAT_UNDEFINED_DOCUMENT = 47744; // 0xba80
+    field public static final int FORMAT_UNDEFINED_FIRMWARE = 47106; // 0xb802
+    field public static final int FORMAT_UNDEFINED_VIDEO = 47488; // 0xb980
+    field public static final int FORMAT_WAV = 12296; // 0x3008
+    field public static final int FORMAT_WINDOWS_IMAGE_FORMAT = 47233; // 0xb881
+    field public static final int FORMAT_WMA = 47361; // 0xb901
+    field public static final int FORMAT_WMV = 47489; // 0xb981
+    field public static final int FORMAT_WPL_PLAYLIST = 47632; // 0xba10
+    field public static final int FORMAT_XML_DOCUMENT = 47746; // 0xba82
+    field public static final int OPERATION_CLOSE_SESSION = 4099; // 0x1003
+    field public static final int OPERATION_COPY_OBJECT = 4122; // 0x101a
+    field public static final int OPERATION_DELETE_OBJECT = 4107; // 0x100b
+    field public static final int OPERATION_FORMAT_STORE = 4111; // 0x100f
+    field public static final int OPERATION_GET_DEVICE_INFO = 4097; // 0x1001
+    field public static final int OPERATION_GET_DEVICE_PROP_DESC = 4116; // 0x1014
+    field public static final int OPERATION_GET_DEVICE_PROP_VALUE = 4117; // 0x1015
+    field public static final int OPERATION_GET_NUM_OBJECTS = 4102; // 0x1006
+    field public static final int OPERATION_GET_OBJECT = 4105; // 0x1009
+    field public static final int OPERATION_GET_OBJECT_HANDLES = 4103; // 0x1007
+    field public static final int OPERATION_GET_OBJECT_INFO = 4104; // 0x1008
+    field public static final int OPERATION_GET_OBJECT_PROPS_SUPPORTED = 38913; // 0x9801
+    field public static final int OPERATION_GET_OBJECT_PROP_DESC = 38914; // 0x9802
+    field public static final int OPERATION_GET_OBJECT_PROP_VALUE = 38915; // 0x9803
+    field public static final int OPERATION_GET_OBJECT_REFERENCES = 38928; // 0x9810
+    field public static final int OPERATION_GET_PARTIAL_OBJECT = 4123; // 0x101b
+    field public static final int OPERATION_GET_PARTIAL_OBJECT_64 = 38337; // 0x95c1
+    field public static final int OPERATION_GET_STORAGE_INFO = 4101; // 0x1005
+    field public static final int OPERATION_GET_STORAGE_I_DS = 4100; // 0x1004
+    field public static final int OPERATION_GET_THUMB = 4106; // 0x100a
+    field public static final int OPERATION_INITIATE_CAPTURE = 4110; // 0x100e
+    field public static final int OPERATION_INITIATE_OPEN_CAPTURE = 4124; // 0x101c
+    field public static final int OPERATION_MOVE_OBJECT = 4121; // 0x1019
+    field public static final int OPERATION_OPEN_SESSION = 4098; // 0x1002
+    field public static final int OPERATION_POWER_DOWN = 4115; // 0x1013
+    field public static final int OPERATION_RESET_DEVICE = 4112; // 0x1010
+    field public static final int OPERATION_RESET_DEVICE_PROP_VALUE = 4119; // 0x1017
+    field public static final int OPERATION_SELF_TEST = 4113; // 0x1011
+    field public static final int OPERATION_SEND_OBJECT = 4109; // 0x100d
+    field public static final int OPERATION_SEND_OBJECT_INFO = 4108; // 0x100c
+    field public static final int OPERATION_SET_DEVICE_PROP_VALUE = 4118; // 0x1016
+    field public static final int OPERATION_SET_OBJECT_PROP_VALUE = 38916; // 0x9804
+    field public static final int OPERATION_SET_OBJECT_PROTECTION = 4114; // 0x1012
+    field public static final int OPERATION_SET_OBJECT_REFERENCES = 38929; // 0x9811
+    field public static final int OPERATION_SKIP = 38944; // 0x9820
+    field public static final int OPERATION_TERMINATE_OPEN_CAPTURE = 4120; // 0x1018
+    field public static final int PROTECTION_STATUS_NONE = 0; // 0x0
+    field public static final int PROTECTION_STATUS_NON_TRANSFERABLE_DATA = 32771; // 0x8003
+    field public static final int PROTECTION_STATUS_READ_ONLY = 32769; // 0x8001
+    field public static final int PROTECTION_STATUS_READ_ONLY_DATA = 32770; // 0x8002
+  }
+
+  public final class MtpDevice {
+    ctor public MtpDevice(@NonNull android.hardware.usb.UsbDevice);
+    method public void close();
+    method public boolean deleteObject(int);
+    method public int getDeviceId();
+    method @Nullable public android.mtp.MtpDeviceInfo getDeviceInfo();
+    method @NonNull public String getDeviceName();
+    method @Nullable public byte[] getObject(int, int);
+    method @Nullable public int[] getObjectHandles(int, int, int);
+    method @Nullable public android.mtp.MtpObjectInfo getObjectInfo(int);
+    method public long getParent(int);
+    method public long getPartialObject(int, long, long, @NonNull byte[]) throws java.io.IOException;
+    method public long getPartialObject64(int, long, long, @NonNull byte[]) throws java.io.IOException;
+    method public long getStorageId(int);
+    method @Nullable public int[] getStorageIds();
+    method @Nullable public android.mtp.MtpStorageInfo getStorageInfo(int);
+    method @Nullable public byte[] getThumbnail(int);
+    method public boolean importFile(int, @NonNull String);
+    method public boolean importFile(int, @NonNull android.os.ParcelFileDescriptor);
+    method public boolean open(@NonNull android.hardware.usb.UsbDeviceConnection);
+    method @NonNull public android.mtp.MtpEvent readEvent(@Nullable android.os.CancellationSignal) throws java.io.IOException;
+    method public boolean sendObject(int, long, @NonNull android.os.ParcelFileDescriptor);
+    method @Nullable public android.mtp.MtpObjectInfo sendObjectInfo(@NonNull android.mtp.MtpObjectInfo);
+  }
+
+  public class MtpDeviceInfo {
+    method @NonNull public final int[] getEventsSupported();
+    method @NonNull public final String getManufacturer();
+    method @NonNull public final String getModel();
+    method @NonNull public final int[] getOperationsSupported();
+    method @NonNull public final String getSerialNumber();
+    method @NonNull public final String getVersion();
+    method public boolean isEventSupported(int);
+    method public boolean isOperationSupported(int);
+  }
+
+  public class MtpEvent {
+    method public int getDevicePropCode();
+    method public int getEventCode();
+    method public int getObjectFormatCode();
+    method public int getObjectHandle();
+    method public int getObjectPropCode();
+    method public int getParameter1();
+    method public int getParameter2();
+    method public int getParameter3();
+    method public int getStorageId();
+    method public int getTransactionId();
+    field public static final int EVENT_CANCEL_TRANSACTION = 16385; // 0x4001
+    field public static final int EVENT_CAPTURE_COMPLETE = 16397; // 0x400d
+    field public static final int EVENT_DEVICE_INFO_CHANGED = 16392; // 0x4008
+    field public static final int EVENT_DEVICE_PROP_CHANGED = 16390; // 0x4006
+    field public static final int EVENT_DEVICE_RESET = 16395; // 0x400b
+    field public static final int EVENT_OBJECT_ADDED = 16386; // 0x4002
+    field public static final int EVENT_OBJECT_INFO_CHANGED = 16391; // 0x4007
+    field public static final int EVENT_OBJECT_PROP_CHANGED = 51201; // 0xc801
+    field public static final int EVENT_OBJECT_PROP_DESC_CHANGED = 51202; // 0xc802
+    field public static final int EVENT_OBJECT_REFERENCES_CHANGED = 51203; // 0xc803
+    field public static final int EVENT_OBJECT_REMOVED = 16387; // 0x4003
+    field public static final int EVENT_REQUEST_OBJECT_TRANSFER = 16393; // 0x4009
+    field public static final int EVENT_STORAGE_INFO_CHANGED = 16396; // 0x400c
+    field public static final int EVENT_STORE_ADDED = 16388; // 0x4004
+    field public static final int EVENT_STORE_FULL = 16394; // 0x400a
+    field public static final int EVENT_STORE_REMOVED = 16389; // 0x4005
+    field public static final int EVENT_UNDEFINED = 16384; // 0x4000
+    field public static final int EVENT_UNREPORTED_STATUS = 16398; // 0x400e
+  }
+
+  public final class MtpObjectInfo {
+    method public int getAssociationDesc();
+    method public int getAssociationType();
+    method public int getCompressedSize();
+    method public long getCompressedSizeLong();
+    method public long getDateCreated();
+    method public long getDateModified();
+    method public int getFormat();
+    method public int getImagePixDepth();
+    method public long getImagePixDepthLong();
+    method public int getImagePixHeight();
+    method public long getImagePixHeightLong();
+    method public int getImagePixWidth();
+    method public long getImagePixWidthLong();
+    method @NonNull public String getKeywords();
+    method @NonNull public String getName();
+    method public int getObjectHandle();
+    method public int getParent();
+    method public int getProtectionStatus();
+    method public int getSequenceNumber();
+    method public long getSequenceNumberLong();
+    method public int getStorageId();
+    method public int getThumbCompressedSize();
+    method public long getThumbCompressedSizeLong();
+    method public int getThumbFormat();
+    method public int getThumbPixHeight();
+    method public long getThumbPixHeightLong();
+    method public int getThumbPixWidth();
+    method public long getThumbPixWidthLong();
+  }
+
+  public static class MtpObjectInfo.Builder {
+    ctor public MtpObjectInfo.Builder();
+    ctor public MtpObjectInfo.Builder(android.mtp.MtpObjectInfo);
+    method public android.mtp.MtpObjectInfo build();
+    method public android.mtp.MtpObjectInfo.Builder setAssociationDesc(int);
+    method public android.mtp.MtpObjectInfo.Builder setAssociationType(int);
+    method public android.mtp.MtpObjectInfo.Builder setCompressedSize(long);
+    method public android.mtp.MtpObjectInfo.Builder setDateCreated(long);
+    method public android.mtp.MtpObjectInfo.Builder setDateModified(long);
+    method public android.mtp.MtpObjectInfo.Builder setFormat(int);
+    method public android.mtp.MtpObjectInfo.Builder setImagePixDepth(long);
+    method public android.mtp.MtpObjectInfo.Builder setImagePixHeight(long);
+    method public android.mtp.MtpObjectInfo.Builder setImagePixWidth(long);
+    method public android.mtp.MtpObjectInfo.Builder setKeywords(@NonNull String);
+    method public android.mtp.MtpObjectInfo.Builder setName(@NonNull String);
+    method public android.mtp.MtpObjectInfo.Builder setObjectHandle(int);
+    method public android.mtp.MtpObjectInfo.Builder setParent(int);
+    method public android.mtp.MtpObjectInfo.Builder setProtectionStatus(int);
+    method public android.mtp.MtpObjectInfo.Builder setSequenceNumber(long);
+    method public android.mtp.MtpObjectInfo.Builder setStorageId(int);
+    method public android.mtp.MtpObjectInfo.Builder setThumbCompressedSize(long);
+    method public android.mtp.MtpObjectInfo.Builder setThumbFormat(int);
+    method public android.mtp.MtpObjectInfo.Builder setThumbPixHeight(long);
+    method public android.mtp.MtpObjectInfo.Builder setThumbPixWidth(long);
+  }
+
+  public final class MtpStorageInfo {
+    method @NonNull public String getDescription();
+    method public long getFreeSpace();
+    method public long getMaxCapacity();
+    method public int getStorageId();
+    method @NonNull public String getVolumeIdentifier();
+  }
+
+}
+
+package android.net {
+
+  public class CaptivePortal implements android.os.Parcelable {
+    method public int describeContents();
+    method public void ignoreNetwork();
+    method public void reportCaptivePortalDismissed();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.CaptivePortal> CREATOR;
+  }
+
+  public class ConnectivityDiagnosticsManager {
+    method public void registerConnectivityDiagnosticsCallback(@NonNull android.net.NetworkRequest, @NonNull java.util.concurrent.Executor, @NonNull android.net.ConnectivityDiagnosticsManager.ConnectivityDiagnosticsCallback);
+    method public void unregisterConnectivityDiagnosticsCallback(@NonNull android.net.ConnectivityDiagnosticsManager.ConnectivityDiagnosticsCallback);
+  }
+
+  public abstract static class ConnectivityDiagnosticsManager.ConnectivityDiagnosticsCallback {
+    ctor public ConnectivityDiagnosticsManager.ConnectivityDiagnosticsCallback();
+    method public void onConnectivityReportAvailable(@NonNull android.net.ConnectivityDiagnosticsManager.ConnectivityReport);
+    method public void onDataStallSuspected(@NonNull android.net.ConnectivityDiagnosticsManager.DataStallReport);
+    method public void onNetworkConnectivityReported(@NonNull android.net.Network, boolean);
+  }
+
+  public static final class ConnectivityDiagnosticsManager.ConnectivityReport implements android.os.Parcelable {
+    ctor public ConnectivityDiagnosticsManager.ConnectivityReport(@NonNull android.net.Network, long, @NonNull android.net.LinkProperties, @NonNull android.net.NetworkCapabilities, @NonNull android.os.PersistableBundle);
+    method public int describeContents();
+    method @NonNull public android.os.PersistableBundle getAdditionalInfo();
+    method @NonNull public android.net.LinkProperties getLinkProperties();
+    method @NonNull public android.net.Network getNetwork();
+    method @NonNull public android.net.NetworkCapabilities getNetworkCapabilities();
+    method public long getReportTimestamp();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.ConnectivityDiagnosticsManager.ConnectivityReport> CREATOR;
+    field public static final String KEY_NETWORK_PROBES_ATTEMPTED_BITMASK = "networkProbesAttempted";
+    field public static final String KEY_NETWORK_PROBES_SUCCEEDED_BITMASK = "networkProbesSucceeded";
+    field public static final String KEY_NETWORK_VALIDATION_RESULT = "networkValidationResult";
+    field public static final int NETWORK_PROBE_DNS = 4; // 0x4
+    field public static final int NETWORK_PROBE_FALLBACK = 32; // 0x20
+    field public static final int NETWORK_PROBE_HTTP = 8; // 0x8
+    field public static final int NETWORK_PROBE_HTTPS = 16; // 0x10
+    field public static final int NETWORK_PROBE_PRIVATE_DNS = 64; // 0x40
+    field public static final int NETWORK_VALIDATION_RESULT_INVALID = 0; // 0x0
+    field public static final int NETWORK_VALIDATION_RESULT_PARTIALLY_VALID = 2; // 0x2
+    field public static final int NETWORK_VALIDATION_RESULT_SKIPPED = 3; // 0x3
+    field public static final int NETWORK_VALIDATION_RESULT_VALID = 1; // 0x1
+  }
+
+  public static final class ConnectivityDiagnosticsManager.DataStallReport implements android.os.Parcelable {
+    ctor public ConnectivityDiagnosticsManager.DataStallReport(@NonNull android.net.Network, long, int, @NonNull android.net.LinkProperties, @NonNull android.net.NetworkCapabilities, @NonNull android.os.PersistableBundle);
+    method public int describeContents();
+    method public int getDetectionMethod();
+    method @NonNull public android.net.LinkProperties getLinkProperties();
+    method @NonNull public android.net.Network getNetwork();
+    method @NonNull public android.net.NetworkCapabilities getNetworkCapabilities();
+    method public long getReportTimestamp();
+    method @NonNull public android.os.PersistableBundle getStallDetails();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.ConnectivityDiagnosticsManager.DataStallReport> CREATOR;
+    field public static final int DETECTION_METHOD_DNS_EVENTS = 1; // 0x1
+    field public static final int DETECTION_METHOD_TCP_METRICS = 2; // 0x2
+    field public static final String KEY_DNS_CONSECUTIVE_TIMEOUTS = "dnsConsecutiveTimeouts";
+    field public static final String KEY_TCP_METRICS_COLLECTION_PERIOD_MILLIS = "tcpMetricsCollectionPeriodMillis";
+    field public static final String KEY_TCP_PACKET_FAIL_RATE = "tcpPacketFailRate";
+  }
+
+  public class ConnectivityManager {
+    method public void addDefaultNetworkActiveListener(android.net.ConnectivityManager.OnNetworkActiveListener);
+    method public boolean bindProcessToNetwork(@Nullable android.net.Network);
+    method @NonNull public android.net.SocketKeepalive createSocketKeepalive(@NonNull android.net.Network, @NonNull android.net.IpSecManager.UdpEncapsulationSocket, @NonNull java.net.InetAddress, @NonNull java.net.InetAddress, @NonNull java.util.concurrent.Executor, @NonNull android.net.SocketKeepalive.Callback);
+    method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.Network getActiveNetwork();
+    method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.NetworkInfo getActiveNetworkInfo();
+    method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.NetworkInfo[] getAllNetworkInfo();
+    method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.Network[] getAllNetworks();
+    method @Deprecated public boolean getBackgroundDataSetting();
+    method @Nullable public android.net.Network getBoundNetworkForProcess();
+    method public int getConnectionOwnerUid(int, @NonNull java.net.InetSocketAddress, @NonNull java.net.InetSocketAddress);
+    method @Nullable public android.net.ProxyInfo getDefaultProxy();
+    method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.LinkProperties getLinkProperties(@Nullable android.net.Network);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public int getMultipathPreference(@Nullable android.net.Network);
+    method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.NetworkCapabilities getNetworkCapabilities(@Nullable android.net.Network);
+    method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.NetworkInfo getNetworkInfo(int);
+    method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.NetworkInfo getNetworkInfo(@Nullable android.net.Network);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public int getNetworkPreference();
+    method @Nullable public byte[] getNetworkWatchlistConfigHash();
+    method @Deprecated @Nullable public static android.net.Network getProcessDefaultNetwork();
+    method public int getRestrictBackgroundStatus();
+    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public boolean isActiveNetworkMetered();
+    method public boolean isDefaultNetworkActive();
+    method @Deprecated public static boolean isNetworkTypeValid(int);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerDefaultNetworkCallback(@NonNull android.net.ConnectivityManager.NetworkCallback);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerDefaultNetworkCallback(@NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerNetworkCallback(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerNetworkCallback(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerNetworkCallback(@NonNull android.net.NetworkRequest, @NonNull android.app.PendingIntent);
+    method public void releaseNetworkRequest(@NonNull android.app.PendingIntent);
+    method public void removeDefaultNetworkActiveListener(@NonNull android.net.ConnectivityManager.OnNetworkActiveListener);
+    method @Deprecated public void reportBadNetwork(@Nullable android.net.Network);
+    method public void reportNetworkConnectivity(@Nullable android.net.Network, boolean);
+    method public boolean requestBandwidthUpdate(@NonNull android.net.Network);
+    method public void requestNetwork(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback);
+    method public void requestNetwork(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
+    method public void requestNetwork(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback, int);
+    method public void requestNetwork(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler, int);
+    method public void requestNetwork(@NonNull android.net.NetworkRequest, @NonNull android.app.PendingIntent);
+    method @Deprecated public void setNetworkPreference(int);
+    method @Deprecated public static boolean setProcessDefaultNetwork(@Nullable android.net.Network);
+    method public void unregisterNetworkCallback(@NonNull android.net.ConnectivityManager.NetworkCallback);
+    method public void unregisterNetworkCallback(@NonNull android.app.PendingIntent);
+    field @Deprecated public static final String ACTION_BACKGROUND_DATA_SETTING_CHANGED = "android.net.conn.BACKGROUND_DATA_SETTING_CHANGED";
+    field public static final String ACTION_CAPTIVE_PORTAL_SIGN_IN = "android.net.conn.CAPTIVE_PORTAL";
+    field public static final String ACTION_RESTRICT_BACKGROUND_CHANGED = "android.net.conn.RESTRICT_BACKGROUND_CHANGED";
+    field @Deprecated public static final String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
+    field @Deprecated public static final int DEFAULT_NETWORK_PREFERENCE = 1; // 0x1
+    field public static final String EXTRA_CAPTIVE_PORTAL = "android.net.extra.CAPTIVE_PORTAL";
+    field public static final String EXTRA_CAPTIVE_PORTAL_URL = "android.net.extra.CAPTIVE_PORTAL_URL";
+    field @Deprecated public static final String EXTRA_EXTRA_INFO = "extraInfo";
+    field @Deprecated public static final String EXTRA_IS_FAILOVER = "isFailover";
+    field public static final String EXTRA_NETWORK = "android.net.extra.NETWORK";
+    field @Deprecated public static final String EXTRA_NETWORK_INFO = "networkInfo";
+    field public static final String EXTRA_NETWORK_REQUEST = "android.net.extra.NETWORK_REQUEST";
+    field @Deprecated public static final String EXTRA_NETWORK_TYPE = "networkType";
+    field public static final String EXTRA_NO_CONNECTIVITY = "noConnectivity";
+    field @Deprecated public static final String EXTRA_OTHER_NETWORK_INFO = "otherNetwork";
+    field public static final String EXTRA_REASON = "reason";
+    field public static final int MULTIPATH_PREFERENCE_HANDOVER = 1; // 0x1
+    field public static final int MULTIPATH_PREFERENCE_PERFORMANCE = 4; // 0x4
+    field public static final int MULTIPATH_PREFERENCE_RELIABILITY = 2; // 0x2
+    field public static final int RESTRICT_BACKGROUND_STATUS_DISABLED = 1; // 0x1
+    field public static final int RESTRICT_BACKGROUND_STATUS_ENABLED = 3; // 0x3
+    field public static final int RESTRICT_BACKGROUND_STATUS_WHITELISTED = 2; // 0x2
+    field @Deprecated public static final int TYPE_BLUETOOTH = 7; // 0x7
+    field @Deprecated public static final int TYPE_DUMMY = 8; // 0x8
+    field @Deprecated public static final int TYPE_ETHERNET = 9; // 0x9
+    field @Deprecated public static final int TYPE_MOBILE = 0; // 0x0
+    field @Deprecated public static final int TYPE_MOBILE_DUN = 4; // 0x4
+    field @Deprecated public static final int TYPE_MOBILE_HIPRI = 5; // 0x5
+    field @Deprecated public static final int TYPE_MOBILE_MMS = 2; // 0x2
+    field @Deprecated public static final int TYPE_MOBILE_SUPL = 3; // 0x3
+    field @Deprecated public static final int TYPE_VPN = 17; // 0x11
+    field @Deprecated public static final int TYPE_WIFI = 1; // 0x1
+    field @Deprecated public static final int TYPE_WIMAX = 6; // 0x6
+  }
+
+  public static class ConnectivityManager.NetworkCallback {
+    ctor public ConnectivityManager.NetworkCallback();
+    method public void onAvailable(@NonNull android.net.Network);
+    method public void onBlockedStatusChanged(@NonNull android.net.Network, boolean);
+    method public void onCapabilitiesChanged(@NonNull android.net.Network, @NonNull android.net.NetworkCapabilities);
+    method public void onLinkPropertiesChanged(@NonNull android.net.Network, @NonNull android.net.LinkProperties);
+    method public void onLosing(@NonNull android.net.Network, int);
+    method public void onLost(@NonNull android.net.Network);
+    method public void onUnavailable();
+  }
+
+  public static interface ConnectivityManager.OnNetworkActiveListener {
+    method public void onNetworkActive();
+  }
+
+  public class Credentials {
+    ctor public Credentials(int, int, int);
+    method public int getGid();
+    method public int getPid();
+    method public int getUid();
+  }
+
+  public class DhcpInfo implements android.os.Parcelable {
+    ctor public DhcpInfo();
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.DhcpInfo> CREATOR;
+    field public int dns1;
+    field public int dns2;
+    field public int gateway;
+    field public int ipAddress;
+    field public int leaseDuration;
+    field public int netmask;
+    field public int serverAddress;
+  }
+
+  public final class DnsResolver {
+    method @NonNull public static android.net.DnsResolver getInstance();
+    method public void query(@Nullable android.net.Network, @NonNull String, int, @NonNull java.util.concurrent.Executor, @Nullable android.os.CancellationSignal, @NonNull android.net.DnsResolver.Callback<? super java.util.List<java.net.InetAddress>>);
+    method public void query(@Nullable android.net.Network, @NonNull String, int, int, @NonNull java.util.concurrent.Executor, @Nullable android.os.CancellationSignal, @NonNull android.net.DnsResolver.Callback<? super java.util.List<java.net.InetAddress>>);
+    method public void rawQuery(@Nullable android.net.Network, @NonNull byte[], int, @NonNull java.util.concurrent.Executor, @Nullable android.os.CancellationSignal, @NonNull android.net.DnsResolver.Callback<? super byte[]>);
+    method public void rawQuery(@Nullable android.net.Network, @NonNull String, int, int, int, @NonNull java.util.concurrent.Executor, @Nullable android.os.CancellationSignal, @NonNull android.net.DnsResolver.Callback<? super byte[]>);
+    field public static final int CLASS_IN = 1; // 0x1
+    field public static final int ERROR_PARSE = 0; // 0x0
+    field public static final int ERROR_SYSTEM = 1; // 0x1
+    field public static final int FLAG_EMPTY = 0; // 0x0
+    field public static final int FLAG_NO_CACHE_LOOKUP = 4; // 0x4
+    field public static final int FLAG_NO_CACHE_STORE = 2; // 0x2
+    field public static final int FLAG_NO_RETRY = 1; // 0x1
+    field public static final int TYPE_A = 1; // 0x1
+    field public static final int TYPE_AAAA = 28; // 0x1c
+  }
+
+  public static interface DnsResolver.Callback<T> {
+    method public void onAnswer(@NonNull T, int);
+    method public void onError(@NonNull android.net.DnsResolver.DnsException);
+  }
+
+  public static class DnsResolver.DnsException extends java.lang.Exception {
+    field public final int code;
+  }
+
+  public final class Ikev2VpnProfile extends android.net.PlatformVpnProfile {
+    method @NonNull public java.util.List<java.lang.String> getAllowedAlgorithms();
+    method public int getMaxMtu();
+    method @Nullable public String getPassword();
+    method @Nullable public byte[] getPresharedKey();
+    method @Nullable public android.net.ProxyInfo getProxyInfo();
+    method @Nullable public java.security.PrivateKey getRsaPrivateKey();
+    method @NonNull public String getServerAddr();
+    method @Nullable public java.security.cert.X509Certificate getServerRootCaCert();
+    method @Nullable public java.security.cert.X509Certificate getUserCert();
+    method @NonNull public String getUserIdentity();
+    method @Nullable public String getUsername();
+    method public boolean isBypassable();
+    method public boolean isMetered();
+  }
+
+  public static final class Ikev2VpnProfile.Builder {
+    ctor public Ikev2VpnProfile.Builder(@NonNull String, @NonNull String);
+    method @NonNull public android.net.Ikev2VpnProfile build();
+    method @NonNull public android.net.Ikev2VpnProfile.Builder setAllowedAlgorithms(@NonNull java.util.List<java.lang.String>);
+    method @NonNull public android.net.Ikev2VpnProfile.Builder setAuthDigitalSignature(@NonNull java.security.cert.X509Certificate, @NonNull java.security.PrivateKey, @Nullable java.security.cert.X509Certificate);
+    method @NonNull public android.net.Ikev2VpnProfile.Builder setAuthPsk(@NonNull byte[]);
+    method @NonNull public android.net.Ikev2VpnProfile.Builder setAuthUsernamePassword(@NonNull String, @NonNull String, @Nullable java.security.cert.X509Certificate);
+    method @NonNull public android.net.Ikev2VpnProfile.Builder setBypassable(boolean);
+    method @NonNull public android.net.Ikev2VpnProfile.Builder setMaxMtu(int);
+    method @NonNull public android.net.Ikev2VpnProfile.Builder setMetered(boolean);
+    method @NonNull public android.net.Ikev2VpnProfile.Builder setProxy(@Nullable android.net.ProxyInfo);
+  }
+
+  public class InetAddresses {
+    method public static boolean isNumericAddress(@NonNull String);
+    method @NonNull public static java.net.InetAddress parseNumericAddress(@NonNull String);
+  }
+
+  public final class IpPrefix implements android.os.Parcelable {
+    method public boolean contains(@NonNull java.net.InetAddress);
+    method public int describeContents();
+    method @NonNull public java.net.InetAddress getAddress();
+    method @IntRange(from=0, to=128) public int getPrefixLength();
+    method @NonNull public byte[] getRawAddress();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.IpPrefix> CREATOR;
+  }
+
+  public final class IpSecAlgorithm implements android.os.Parcelable {
+    ctor public IpSecAlgorithm(@NonNull String, @NonNull byte[]);
+    ctor public IpSecAlgorithm(@NonNull String, @NonNull byte[], int);
+    method public int describeContents();
+    method @NonNull public byte[] getKey();
+    method @NonNull public String getName();
+    method @NonNull public static java.util.Set<java.lang.String> getSupportedAlgorithms();
+    method public int getTruncationLengthBits();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final String AUTH_AES_XCBC = "xcbc(aes)";
+    field public static final String AUTH_CRYPT_AES_GCM = "rfc4106(gcm(aes))";
+    field public static final String AUTH_CRYPT_CHACHA20_POLY1305 = "rfc7539esp(chacha20,poly1305)";
+    field public static final String AUTH_HMAC_MD5 = "hmac(md5)";
+    field public static final String AUTH_HMAC_SHA1 = "hmac(sha1)";
+    field public static final String AUTH_HMAC_SHA256 = "hmac(sha256)";
+    field public static final String AUTH_HMAC_SHA384 = "hmac(sha384)";
+    field public static final String AUTH_HMAC_SHA512 = "hmac(sha512)";
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.IpSecAlgorithm> CREATOR;
+    field public static final String CRYPT_AES_CBC = "cbc(aes)";
+    field public static final String CRYPT_AES_CTR = "rfc3686(ctr(aes))";
+  }
+
+  public final class IpSecManager {
+    method @NonNull public android.net.IpSecManager.SecurityParameterIndex allocateSecurityParameterIndex(@NonNull java.net.InetAddress) throws android.net.IpSecManager.ResourceUnavailableException;
+    method @NonNull public android.net.IpSecManager.SecurityParameterIndex allocateSecurityParameterIndex(@NonNull java.net.InetAddress, int) throws android.net.IpSecManager.ResourceUnavailableException, android.net.IpSecManager.SpiUnavailableException;
+    method public void applyTransportModeTransform(@NonNull java.net.Socket, int, @NonNull android.net.IpSecTransform) throws java.io.IOException;
+    method public void applyTransportModeTransform(@NonNull java.net.DatagramSocket, int, @NonNull android.net.IpSecTransform) throws java.io.IOException;
+    method public void applyTransportModeTransform(@NonNull java.io.FileDescriptor, int, @NonNull android.net.IpSecTransform) throws java.io.IOException;
+    method @NonNull public android.net.IpSecManager.UdpEncapsulationSocket openUdpEncapsulationSocket(int) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException;
+    method @NonNull public android.net.IpSecManager.UdpEncapsulationSocket openUdpEncapsulationSocket() throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException;
+    method public void removeTransportModeTransforms(@NonNull java.net.Socket) throws java.io.IOException;
+    method public void removeTransportModeTransforms(@NonNull java.net.DatagramSocket) throws java.io.IOException;
+    method public void removeTransportModeTransforms(@NonNull java.io.FileDescriptor) throws java.io.IOException;
+    field public static final int DIRECTION_IN = 0; // 0x0
+    field public static final int DIRECTION_OUT = 1; // 0x1
+  }
+
+  public static final class IpSecManager.ResourceUnavailableException extends android.util.AndroidException {
+  }
+
+  public static final class IpSecManager.SecurityParameterIndex implements java.lang.AutoCloseable {
+    method public void close();
+    method public int getSpi();
+  }
+
+  public static final class IpSecManager.SpiUnavailableException extends android.util.AndroidException {
+    method public int getSpi();
+  }
+
+  public static final class IpSecManager.UdpEncapsulationSocket implements java.lang.AutoCloseable {
+    method public void close() throws java.io.IOException;
+    method public java.io.FileDescriptor getFileDescriptor();
+    method public int getPort();
+  }
+
+  public final class IpSecTransform implements java.lang.AutoCloseable {
+    method public void close();
+  }
+
+  public static class IpSecTransform.Builder {
+    ctor public IpSecTransform.Builder(@NonNull android.content.Context);
+    method @NonNull public android.net.IpSecTransform buildTransportModeTransform(@NonNull java.net.InetAddress, @NonNull android.net.IpSecManager.SecurityParameterIndex) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException, android.net.IpSecManager.SpiUnavailableException;
+    method @NonNull public android.net.IpSecTransform.Builder setAuthenticatedEncryption(@NonNull android.net.IpSecAlgorithm);
+    method @NonNull public android.net.IpSecTransform.Builder setAuthentication(@NonNull android.net.IpSecAlgorithm);
+    method @NonNull public android.net.IpSecTransform.Builder setEncryption(@NonNull android.net.IpSecAlgorithm);
+    method @NonNull public android.net.IpSecTransform.Builder setIpv4Encapsulation(@NonNull android.net.IpSecManager.UdpEncapsulationSocket, int);
+  }
+
+  public class LinkAddress implements android.os.Parcelable {
+    method public int describeContents();
+    method public java.net.InetAddress getAddress();
+    method public int getFlags();
+    method @IntRange(from=0, to=128) public int getPrefixLength();
+    method public int getScope();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.LinkAddress> CREATOR;
+  }
+
+  public final class LinkProperties implements android.os.Parcelable {
+    ctor public LinkProperties();
+    method public boolean addRoute(@NonNull android.net.RouteInfo);
+    method public void clear();
+    method public int describeContents();
+    method @Nullable public java.net.Inet4Address getDhcpServerAddress();
+    method @NonNull public java.util.List<java.net.InetAddress> getDnsServers();
+    method @Nullable public String getDomains();
+    method @Nullable public android.net.ProxyInfo getHttpProxy();
+    method @Nullable public String getInterfaceName();
+    method @NonNull public java.util.List<android.net.LinkAddress> getLinkAddresses();
+    method public int getMtu();
+    method @Nullable public android.net.IpPrefix getNat64Prefix();
+    method @Nullable public String getPrivateDnsServerName();
+    method @NonNull public java.util.List<android.net.RouteInfo> getRoutes();
+    method public boolean isPrivateDnsActive();
+    method public boolean isWakeOnLanSupported();
+    method public void setDhcpServerAddress(@Nullable java.net.Inet4Address);
+    method public void setDnsServers(@NonNull java.util.Collection<java.net.InetAddress>);
+    method public void setDomains(@Nullable String);
+    method public void setHttpProxy(@Nullable android.net.ProxyInfo);
+    method public void setInterfaceName(@Nullable String);
+    method public void setLinkAddresses(@NonNull java.util.Collection<android.net.LinkAddress>);
+    method public void setMtu(int);
+    method public void setNat64Prefix(@Nullable android.net.IpPrefix);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.LinkProperties> CREATOR;
+  }
+
+  public class LocalServerSocket implements java.io.Closeable {
+    ctor public LocalServerSocket(String) throws java.io.IOException;
+    ctor public LocalServerSocket(java.io.FileDescriptor) throws java.io.IOException;
+    method public android.net.LocalSocket accept() throws java.io.IOException;
+    method public void close() throws java.io.IOException;
+    method public java.io.FileDescriptor getFileDescriptor();
+    method public android.net.LocalSocketAddress getLocalSocketAddress();
+  }
+
+  public class LocalSocket implements java.io.Closeable {
+    ctor public LocalSocket();
+    ctor public LocalSocket(int);
+    method public void bind(android.net.LocalSocketAddress) throws java.io.IOException;
+    method public void close() throws java.io.IOException;
+    method public void connect(android.net.LocalSocketAddress) throws java.io.IOException;
+    method public void connect(android.net.LocalSocketAddress, int) throws java.io.IOException;
+    method public java.io.FileDescriptor[] getAncillaryFileDescriptors() throws java.io.IOException;
+    method public java.io.FileDescriptor getFileDescriptor();
+    method public java.io.InputStream getInputStream() throws java.io.IOException;
+    method public android.net.LocalSocketAddress getLocalSocketAddress();
+    method public java.io.OutputStream getOutputStream() throws java.io.IOException;
+    method public android.net.Credentials getPeerCredentials() throws java.io.IOException;
+    method public int getReceiveBufferSize() throws java.io.IOException;
+    method public android.net.LocalSocketAddress getRemoteSocketAddress();
+    method public int getSendBufferSize() throws java.io.IOException;
+    method public int getSoTimeout() throws java.io.IOException;
+    method public boolean isBound();
+    method public boolean isClosed();
+    method public boolean isConnected();
+    method public boolean isInputShutdown();
+    method public boolean isOutputShutdown();
+    method public void setFileDescriptorsForSend(java.io.FileDescriptor[]);
+    method public void setReceiveBufferSize(int) throws java.io.IOException;
+    method public void setSendBufferSize(int) throws java.io.IOException;
+    method public void setSoTimeout(int) throws java.io.IOException;
+    method public void shutdownInput() throws java.io.IOException;
+    method public void shutdownOutput() throws java.io.IOException;
+    field public static final int SOCKET_DGRAM = 1; // 0x1
+    field public static final int SOCKET_SEQPACKET = 3; // 0x3
+    field public static final int SOCKET_STREAM = 2; // 0x2
+  }
+
+  public class LocalSocketAddress {
+    ctor public LocalSocketAddress(String, android.net.LocalSocketAddress.Namespace);
+    ctor public LocalSocketAddress(String);
+    method public String getName();
+    method public android.net.LocalSocketAddress.Namespace getNamespace();
+  }
+
+  public enum LocalSocketAddress.Namespace {
+    enum_constant public static final android.net.LocalSocketAddress.Namespace ABSTRACT;
+    enum_constant public static final android.net.LocalSocketAddress.Namespace FILESYSTEM;
+    enum_constant public static final android.net.LocalSocketAddress.Namespace RESERVED;
+  }
+
+  public final class MacAddress implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public static android.net.MacAddress fromBytes(@NonNull byte[]);
+    method @NonNull public static android.net.MacAddress fromString(@NonNull String);
+    method public int getAddressType();
+    method @Nullable public java.net.Inet6Address getLinkLocalIpv6FromEui48Mac();
+    method public boolean isLocallyAssigned();
+    method public boolean matches(@NonNull android.net.MacAddress, @NonNull android.net.MacAddress);
+    method @NonNull public byte[] toByteArray();
+    method @NonNull public String toOuiString();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final android.net.MacAddress BROADCAST_ADDRESS;
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.MacAddress> CREATOR;
+    field public static final int TYPE_BROADCAST = 3; // 0x3
+    field public static final int TYPE_MULTICAST = 2; // 0x2
+    field public static final int TYPE_UNICAST = 1; // 0x1
+  }
+
+  public class MailTo {
+    method public String getBody();
+    method public String getCc();
+    method public java.util.Map<java.lang.String,java.lang.String> getHeaders();
+    method public String getSubject();
+    method public String getTo();
+    method public static boolean isMailTo(String);
+    method public static android.net.MailTo parse(String) throws android.net.ParseException;
+    field public static final String MAILTO_SCHEME = "mailto:";
+  }
+
+  public class Network implements android.os.Parcelable {
+    method public void bindSocket(java.net.DatagramSocket) throws java.io.IOException;
+    method public void bindSocket(java.net.Socket) throws java.io.IOException;
+    method public void bindSocket(java.io.FileDescriptor) throws java.io.IOException;
+    method public int describeContents();
+    method public static android.net.Network fromNetworkHandle(long);
+    method public java.net.InetAddress[] getAllByName(String) throws java.net.UnknownHostException;
+    method public java.net.InetAddress getByName(String) throws java.net.UnknownHostException;
+    method public long getNetworkHandle();
+    method public javax.net.SocketFactory getSocketFactory();
+    method public java.net.URLConnection openConnection(java.net.URL) throws java.io.IOException;
+    method public java.net.URLConnection openConnection(java.net.URL, java.net.Proxy) throws java.io.IOException;
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.Network> CREATOR;
+  }
+
+  public final class NetworkCapabilities implements android.os.Parcelable {
+    ctor public NetworkCapabilities();
+    ctor public NetworkCapabilities(android.net.NetworkCapabilities);
+    method public int describeContents();
+    method public int getLinkDownstreamBandwidthKbps();
+    method public int getLinkUpstreamBandwidthKbps();
+    method @Nullable public android.net.NetworkSpecifier getNetworkSpecifier();
+    method public int getOwnerUid();
+    method public int getSignalStrength();
+    method @Nullable public android.net.TransportInfo getTransportInfo();
+    method public boolean hasCapability(int);
+    method public boolean hasTransport(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkCapabilities> CREATOR;
+    field public static final int NET_CAPABILITY_CAPTIVE_PORTAL = 17; // 0x11
+    field public static final int NET_CAPABILITY_CBS = 5; // 0x5
+    field public static final int NET_CAPABILITY_DUN = 2; // 0x2
+    field public static final int NET_CAPABILITY_EIMS = 10; // 0xa
+    field public static final int NET_CAPABILITY_FOREGROUND = 19; // 0x13
+    field public static final int NET_CAPABILITY_FOTA = 3; // 0x3
+    field public static final int NET_CAPABILITY_IA = 7; // 0x7
+    field public static final int NET_CAPABILITY_IMS = 4; // 0x4
+    field public static final int NET_CAPABILITY_INTERNET = 12; // 0xc
+    field public static final int NET_CAPABILITY_MCX = 23; // 0x17
+    field public static final int NET_CAPABILITY_MMS = 0; // 0x0
+    field public static final int NET_CAPABILITY_NOT_CONGESTED = 20; // 0x14
+    field public static final int NET_CAPABILITY_NOT_METERED = 11; // 0xb
+    field public static final int NET_CAPABILITY_NOT_RESTRICTED = 13; // 0xd
+    field public static final int NET_CAPABILITY_NOT_ROAMING = 18; // 0x12
+    field public static final int NET_CAPABILITY_NOT_SUSPENDED = 21; // 0x15
+    field public static final int NET_CAPABILITY_NOT_VPN = 15; // 0xf
+    field public static final int NET_CAPABILITY_RCS = 8; // 0x8
+    field public static final int NET_CAPABILITY_SUPL = 1; // 0x1
+    field public static final int NET_CAPABILITY_TEMPORARILY_NOT_METERED = 25; // 0x19
+    field public static final int NET_CAPABILITY_TRUSTED = 14; // 0xe
+    field public static final int NET_CAPABILITY_VALIDATED = 16; // 0x10
+    field public static final int NET_CAPABILITY_WIFI_P2P = 6; // 0x6
+    field public static final int NET_CAPABILITY_XCAP = 9; // 0x9
+    field public static final int SIGNAL_STRENGTH_UNSPECIFIED = -2147483648; // 0x80000000
+    field public static final int TRANSPORT_BLUETOOTH = 2; // 0x2
+    field public static final int TRANSPORT_CELLULAR = 0; // 0x0
+    field public static final int TRANSPORT_ETHERNET = 3; // 0x3
+    field public static final int TRANSPORT_LOWPAN = 6; // 0x6
+    field public static final int TRANSPORT_VPN = 4; // 0x4
+    field public static final int TRANSPORT_WIFI = 1; // 0x1
+    field public static final int TRANSPORT_WIFI_AWARE = 5; // 0x5
+  }
+
+  @Deprecated public class NetworkInfo implements android.os.Parcelable {
+    ctor @Deprecated public NetworkInfo(int, int, @Nullable String, @Nullable String);
+    method @Deprecated public int describeContents();
+    method @Deprecated @NonNull public android.net.NetworkInfo.DetailedState getDetailedState();
+    method @Deprecated public String getExtraInfo();
+    method @Deprecated public String getReason();
+    method @Deprecated public android.net.NetworkInfo.State getState();
+    method @Deprecated public int getSubtype();
+    method @Deprecated public String getSubtypeName();
+    method @Deprecated public int getType();
+    method @Deprecated public String getTypeName();
+    method @Deprecated public boolean isAvailable();
+    method @Deprecated public boolean isConnected();
+    method @Deprecated public boolean isConnectedOrConnecting();
+    method @Deprecated public boolean isFailover();
+    method @Deprecated public boolean isRoaming();
+    method @Deprecated public void setDetailedState(@NonNull android.net.NetworkInfo.DetailedState, @Nullable String, @Nullable String);
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkInfo> CREATOR;
+  }
+
+  @Deprecated public enum NetworkInfo.DetailedState {
+    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState AUTHENTICATING;
+    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState BLOCKED;
+    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState CAPTIVE_PORTAL_CHECK;
+    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState CONNECTED;
+    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState CONNECTING;
+    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState DISCONNECTED;
+    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState DISCONNECTING;
+    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState FAILED;
+    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState IDLE;
+    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState OBTAINING_IPADDR;
+    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState SCANNING;
+    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState SUSPENDED;
+    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState VERIFYING_POOR_LINK;
+  }
+
+  @Deprecated public enum NetworkInfo.State {
+    enum_constant @Deprecated public static final android.net.NetworkInfo.State CONNECTED;
+    enum_constant @Deprecated public static final android.net.NetworkInfo.State CONNECTING;
+    enum_constant @Deprecated public static final android.net.NetworkInfo.State DISCONNECTED;
+    enum_constant @Deprecated public static final android.net.NetworkInfo.State DISCONNECTING;
+    enum_constant @Deprecated public static final android.net.NetworkInfo.State SUSPENDED;
+    enum_constant @Deprecated public static final android.net.NetworkInfo.State UNKNOWN;
+  }
+
+  public class NetworkRequest implements android.os.Parcelable {
+    method public boolean canBeSatisfiedBy(@Nullable android.net.NetworkCapabilities);
+    method public int describeContents();
+    method @Nullable public android.net.NetworkSpecifier getNetworkSpecifier();
+    method public boolean hasCapability(int);
+    method public boolean hasTransport(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkRequest> CREATOR;
+  }
+
+  public static class NetworkRequest.Builder {
+    ctor public NetworkRequest.Builder();
+    method public android.net.NetworkRequest.Builder addCapability(int);
+    method public android.net.NetworkRequest.Builder addTransportType(int);
+    method public android.net.NetworkRequest build();
+    method @NonNull public android.net.NetworkRequest.Builder clearCapabilities();
+    method public android.net.NetworkRequest.Builder removeCapability(int);
+    method public android.net.NetworkRequest.Builder removeTransportType(int);
+    method @Deprecated public android.net.NetworkRequest.Builder setNetworkSpecifier(String);
+    method public android.net.NetworkRequest.Builder setNetworkSpecifier(android.net.NetworkSpecifier);
+  }
+
+  public abstract class NetworkSpecifier {
+    ctor public NetworkSpecifier();
+  }
+
+  public class ParseException extends java.lang.RuntimeException {
+    field public String response;
+  }
+
+  public abstract class PlatformVpnProfile {
+    method public final int getType();
+    method @NonNull public final String getTypeString();
+    field public static final int TYPE_IKEV2_IPSEC_PSK = 7; // 0x7
+    field public static final int TYPE_IKEV2_IPSEC_RSA = 8; // 0x8
+    field public static final int TYPE_IKEV2_IPSEC_USER_PASS = 6; // 0x6
+  }
+
+  public final class Proxy {
+    ctor public Proxy();
+    method @Deprecated public static String getDefaultHost();
+    method @Deprecated public static int getDefaultPort();
+    method @Deprecated public static String getHost(android.content.Context);
+    method @Deprecated public static int getPort(android.content.Context);
+    field @Deprecated public static final String EXTRA_PROXY_INFO = "android.intent.extra.PROXY_INFO";
+    field public static final String PROXY_CHANGE_ACTION = "android.intent.action.PROXY_CHANGE";
+  }
+
+  public class ProxyInfo implements android.os.Parcelable {
+    ctor public ProxyInfo(@Nullable android.net.ProxyInfo);
+    method public static android.net.ProxyInfo buildDirectProxy(String, int);
+    method public static android.net.ProxyInfo buildDirectProxy(String, int, java.util.List<java.lang.String>);
+    method public static android.net.ProxyInfo buildPacProxy(android.net.Uri);
+    method @NonNull public static android.net.ProxyInfo buildPacProxy(@NonNull android.net.Uri, int);
+    method public int describeContents();
+    method public String[] getExclusionList();
+    method public String getHost();
+    method public android.net.Uri getPacFileUrl();
+    method public int getPort();
+    method public boolean isValid();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.ProxyInfo> CREATOR;
+  }
+
+  public final class RouteInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public android.net.IpPrefix getDestination();
+    method @Nullable public java.net.InetAddress getGateway();
+    method @Nullable public String getInterface();
+    method public boolean hasGateway();
+    method public boolean isDefaultRoute();
+    method public boolean matches(java.net.InetAddress);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.RouteInfo> CREATOR;
+  }
+
+  @Deprecated public class SSLCertificateSocketFactory extends javax.net.ssl.SSLSocketFactory {
+    ctor @Deprecated public SSLCertificateSocketFactory(int);
+    method @Deprecated public java.net.Socket createSocket(java.net.Socket, String, int, boolean) throws java.io.IOException;
+    method @Deprecated public java.net.Socket createSocket(java.net.InetAddress, int, java.net.InetAddress, int) throws java.io.IOException;
+    method @Deprecated public java.net.Socket createSocket(java.net.InetAddress, int) throws java.io.IOException;
+    method @Deprecated public java.net.Socket createSocket(String, int, java.net.InetAddress, int) throws java.io.IOException;
+    method @Deprecated public java.net.Socket createSocket(String, int) throws java.io.IOException;
+    method @Deprecated public static javax.net.SocketFactory getDefault(int);
+    method @Deprecated public static javax.net.ssl.SSLSocketFactory getDefault(int, android.net.SSLSessionCache);
+    method @Deprecated public String[] getDefaultCipherSuites();
+    method @Deprecated public static javax.net.ssl.SSLSocketFactory getInsecure(int, android.net.SSLSessionCache);
+    method @Deprecated public byte[] getNpnSelectedProtocol(java.net.Socket);
+    method @Deprecated public String[] getSupportedCipherSuites();
+    method @Deprecated public void setHostname(java.net.Socket, String);
+    method @Deprecated public void setKeyManagers(javax.net.ssl.KeyManager[]);
+    method @Deprecated public void setNpnProtocols(byte[][]);
+    method @Deprecated public void setTrustManagers(javax.net.ssl.TrustManager[]);
+    method @Deprecated public void setUseSessionTickets(java.net.Socket, boolean);
+  }
+
+  public final class SSLSessionCache {
+    ctor public SSLSessionCache(java.io.File) throws java.io.IOException;
+    ctor public SSLSessionCache(android.content.Context);
+  }
+
+  public abstract class SocketKeepalive implements java.lang.AutoCloseable {
+    method public final void close();
+    method public final void start(@IntRange(from=0xa, to=0xe10) int);
+    method public final void stop();
+    field public static final int ERROR_HARDWARE_ERROR = -31; // 0xffffffe1
+    field public static final int ERROR_INSUFFICIENT_RESOURCES = -32; // 0xffffffe0
+    field public static final int ERROR_INVALID_INTERVAL = -24; // 0xffffffe8
+    field public static final int ERROR_INVALID_IP_ADDRESS = -21; // 0xffffffeb
+    field public static final int ERROR_INVALID_LENGTH = -23; // 0xffffffe9
+    field public static final int ERROR_INVALID_NETWORK = -20; // 0xffffffec
+    field public static final int ERROR_INVALID_PORT = -22; // 0xffffffea
+    field public static final int ERROR_INVALID_SOCKET = -25; // 0xffffffe7
+    field public static final int ERROR_SOCKET_NOT_IDLE = -26; // 0xffffffe6
+    field public static final int ERROR_UNSUPPORTED = -30; // 0xffffffe2
+  }
+
+  public static class SocketKeepalive.Callback {
+    ctor public SocketKeepalive.Callback();
+    method public void onDataReceived();
+    method public void onError(int);
+    method public void onStarted();
+    method public void onStopped();
+  }
+
+  public final class TelephonyNetworkSpecifier extends android.net.NetworkSpecifier implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getSubscriptionId();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.TelephonyNetworkSpecifier> CREATOR;
+  }
+
+  public static final class TelephonyNetworkSpecifier.Builder {
+    ctor public TelephonyNetworkSpecifier.Builder();
+    method @NonNull public android.net.TelephonyNetworkSpecifier build();
+    method @NonNull public android.net.TelephonyNetworkSpecifier.Builder setSubscriptionId(int);
+  }
+
+  public class TrafficStats {
+    ctor public TrafficStats();
+    method public static void clearThreadStatsTag();
+    method public static void clearThreadStatsUid();
+    method public static int getAndSetThreadStatsTag(int);
+    method public static long getMobileRxBytes();
+    method public static long getMobileRxPackets();
+    method public static long getMobileTxBytes();
+    method public static long getMobileTxPackets();
+    method public static long getRxBytes(@NonNull String);
+    method public static long getRxPackets(@NonNull String);
+    method public static int getThreadStatsTag();
+    method public static int getThreadStatsUid();
+    method public static long getTotalRxBytes();
+    method public static long getTotalRxPackets();
+    method public static long getTotalTxBytes();
+    method public static long getTotalTxPackets();
+    method public static long getTxBytes(@NonNull String);
+    method public static long getTxPackets(@NonNull String);
+    method public static long getUidRxBytes(int);
+    method public static long getUidRxPackets(int);
+    method @Deprecated public static long getUidTcpRxBytes(int);
+    method @Deprecated public static long getUidTcpRxSegments(int);
+    method @Deprecated public static long getUidTcpTxBytes(int);
+    method @Deprecated public static long getUidTcpTxSegments(int);
+    method public static long getUidTxBytes(int);
+    method public static long getUidTxPackets(int);
+    method @Deprecated public static long getUidUdpRxBytes(int);
+    method @Deprecated public static long getUidUdpRxPackets(int);
+    method @Deprecated public static long getUidUdpTxBytes(int);
+    method @Deprecated public static long getUidUdpTxPackets(int);
+    method public static void incrementOperationCount(int);
+    method public static void incrementOperationCount(int, int);
+    method public static void setThreadStatsTag(int);
+    method public static void setThreadStatsUid(int);
+    method public static void tagDatagramSocket(java.net.DatagramSocket) throws java.net.SocketException;
+    method public static void tagFileDescriptor(java.io.FileDescriptor) throws java.io.IOException;
+    method public static void tagSocket(java.net.Socket) throws java.net.SocketException;
+    method public static void untagDatagramSocket(java.net.DatagramSocket) throws java.net.SocketException;
+    method public static void untagFileDescriptor(java.io.FileDescriptor) throws java.io.IOException;
+    method public static void untagSocket(java.net.Socket) throws java.net.SocketException;
+    field public static final int UNSUPPORTED = -1; // 0xffffffff
+  }
+
+  public interface TransportInfo {
+  }
+
+  public abstract class Uri implements java.lang.Comparable<android.net.Uri> android.os.Parcelable {
+    method public abstract android.net.Uri.Builder buildUpon();
+    method public int compareTo(android.net.Uri);
+    method public static String decode(String);
+    method public static String encode(String);
+    method public static String encode(String, String);
+    method public static android.net.Uri fromFile(java.io.File);
+    method public static android.net.Uri fromParts(String, String, String);
+    method @Nullable public abstract String getAuthority();
+    method public boolean getBooleanQueryParameter(String, boolean);
+    method @Nullable public abstract String getEncodedAuthority();
+    method @Nullable public abstract String getEncodedFragment();
+    method @Nullable public abstract String getEncodedPath();
+    method @Nullable public abstract String getEncodedQuery();
+    method public abstract String getEncodedSchemeSpecificPart();
+    method @Nullable public abstract String getEncodedUserInfo();
+    method @Nullable public abstract String getFragment();
+    method @Nullable public abstract String getHost();
+    method @Nullable public abstract String getLastPathSegment();
+    method @Nullable public abstract String getPath();
+    method public abstract java.util.List<java.lang.String> getPathSegments();
+    method public abstract int getPort();
+    method @Nullable public abstract String getQuery();
+    method @Nullable public String getQueryParameter(String);
+    method public java.util.Set<java.lang.String> getQueryParameterNames();
+    method public java.util.List<java.lang.String> getQueryParameters(String);
+    method @Nullable public abstract String getScheme();
+    method public abstract String getSchemeSpecificPart();
+    method @Nullable public abstract String getUserInfo();
+    method public boolean isAbsolute();
+    method public abstract boolean isHierarchical();
+    method public boolean isOpaque();
+    method public abstract boolean isRelative();
+    method public android.net.Uri normalizeScheme();
+    method public static android.net.Uri parse(String);
+    method public abstract String toString();
+    method public static android.net.Uri withAppendedPath(android.net.Uri, String);
+    method public static void writeToParcel(android.os.Parcel, android.net.Uri);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.Uri> CREATOR;
+    field public static final android.net.Uri EMPTY;
+  }
+
+  public static final class Uri.Builder {
+    ctor public Uri.Builder();
+    method public android.net.Uri.Builder appendEncodedPath(String);
+    method public android.net.Uri.Builder appendPath(String);
+    method public android.net.Uri.Builder appendQueryParameter(String, String);
+    method public android.net.Uri.Builder authority(String);
+    method public android.net.Uri build();
+    method public android.net.Uri.Builder clearQuery();
+    method public android.net.Uri.Builder encodedAuthority(String);
+    method public android.net.Uri.Builder encodedFragment(String);
+    method public android.net.Uri.Builder encodedOpaquePart(String);
+    method public android.net.Uri.Builder encodedPath(String);
+    method public android.net.Uri.Builder encodedQuery(String);
+    method public android.net.Uri.Builder fragment(String);
+    method public android.net.Uri.Builder opaquePart(String);
+    method public android.net.Uri.Builder path(String);
+    method public android.net.Uri.Builder query(String);
+    method public android.net.Uri.Builder scheme(String);
+  }
+
+  public class UrlQuerySanitizer {
+    ctor public UrlQuerySanitizer();
+    ctor public UrlQuerySanitizer(String);
+    method protected void addSanitizedEntry(String, String);
+    method protected void clear();
+    method protected int decodeHexDigit(char);
+    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getAllButNulAndAngleBracketsLegal();
+    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getAllButNulLegal();
+    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getAllButWhitespaceLegal();
+    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getAllIllegal();
+    method public boolean getAllowUnregisteredParamaters();
+    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getAmpAndSpaceLegal();
+    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getAmpLegal();
+    method public android.net.UrlQuerySanitizer.ValueSanitizer getEffectiveValueSanitizer(String);
+    method public java.util.List<android.net.UrlQuerySanitizer.ParameterValuePair> getParameterList();
+    method public java.util.Set<java.lang.String> getParameterSet();
+    method public boolean getPreferFirstRepeatedParameter();
+    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getSpaceLegal();
+    method public android.net.UrlQuerySanitizer.ValueSanitizer getUnregisteredParameterValueSanitizer();
+    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getUrlAndSpaceLegal();
+    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getUrlLegal();
+    method public String getValue(String);
+    method public android.net.UrlQuerySanitizer.ValueSanitizer getValueSanitizer(String);
+    method public boolean hasParameter(String);
+    method protected boolean isHexDigit(char);
+    method protected void parseEntry(String, String);
+    method public void parseQuery(String);
+    method public void parseUrl(String);
+    method public void registerParameter(String, android.net.UrlQuerySanitizer.ValueSanitizer);
+    method public void registerParameters(String[], android.net.UrlQuerySanitizer.ValueSanitizer);
+    method public void setAllowUnregisteredParamaters(boolean);
+    method public void setPreferFirstRepeatedParameter(boolean);
+    method public void setUnregisteredParameterValueSanitizer(android.net.UrlQuerySanitizer.ValueSanitizer);
+    method public String unescape(String);
+  }
+
+  public static class UrlQuerySanitizer.IllegalCharacterValueSanitizer implements android.net.UrlQuerySanitizer.ValueSanitizer {
+    ctor public UrlQuerySanitizer.IllegalCharacterValueSanitizer(int);
+    method public String sanitize(String);
+    field public static final int ALL_BUT_NUL_AND_ANGLE_BRACKETS_LEGAL = 1439; // 0x59f
+    field public static final int ALL_BUT_NUL_LEGAL = 1535; // 0x5ff
+    field public static final int ALL_BUT_WHITESPACE_LEGAL = 1532; // 0x5fc
+    field public static final int ALL_ILLEGAL = 0; // 0x0
+    field public static final int ALL_OK = 2047; // 0x7ff
+    field public static final int ALL_WHITESPACE_OK = 3; // 0x3
+    field public static final int AMP_AND_SPACE_LEGAL = 129; // 0x81
+    field public static final int AMP_LEGAL = 128; // 0x80
+    field public static final int AMP_OK = 128; // 0x80
+    field public static final int DQUOTE_OK = 8; // 0x8
+    field public static final int GT_OK = 64; // 0x40
+    field public static final int LT_OK = 32; // 0x20
+    field public static final int NON_7_BIT_ASCII_OK = 4; // 0x4
+    field public static final int NUL_OK = 512; // 0x200
+    field public static final int OTHER_WHITESPACE_OK = 2; // 0x2
+    field public static final int PCT_OK = 256; // 0x100
+    field public static final int SCRIPT_URL_OK = 1024; // 0x400
+    field public static final int SPACE_LEGAL = 1; // 0x1
+    field public static final int SPACE_OK = 1; // 0x1
+    field public static final int SQUOTE_OK = 16; // 0x10
+    field public static final int URL_AND_SPACE_LEGAL = 405; // 0x195
+    field public static final int URL_LEGAL = 404; // 0x194
+  }
+
+  public class UrlQuerySanitizer.ParameterValuePair {
+    ctor public UrlQuerySanitizer.ParameterValuePair(String, String);
+    field public String mParameter;
+    field public String mValue;
+  }
+
+  public static interface UrlQuerySanitizer.ValueSanitizer {
+    method public String sanitize(String);
+  }
+
+  public class VpnManager {
+    method public void deleteProvisionedVpnProfile();
+    method @Nullable public android.content.Intent provisionVpnProfile(@NonNull android.net.PlatformVpnProfile);
+    method public void startProvisionedVpnProfile();
+    method public void stopProvisionedVpnProfile();
+  }
+
+  public class VpnService extends android.app.Service {
+    ctor public VpnService();
+    method public final boolean isAlwaysOn();
+    method public final boolean isLockdownEnabled();
+    method public android.os.IBinder onBind(android.content.Intent);
+    method public void onRevoke();
+    method public static android.content.Intent prepare(android.content.Context);
+    method public boolean protect(int);
+    method public boolean protect(java.net.Socket);
+    method public boolean protect(java.net.DatagramSocket);
+    method public boolean setUnderlyingNetworks(android.net.Network[]);
+    field public static final String SERVICE_INTERFACE = "android.net.VpnService";
+    field public static final String SERVICE_META_DATA_SUPPORTS_ALWAYS_ON = "android.net.VpnService.SUPPORTS_ALWAYS_ON";
+  }
+
+  public class VpnService.Builder {
+    ctor public VpnService.Builder();
+    method @NonNull public android.net.VpnService.Builder addAddress(@NonNull java.net.InetAddress, int);
+    method @NonNull public android.net.VpnService.Builder addAddress(@NonNull String, int);
+    method @NonNull public android.net.VpnService.Builder addAllowedApplication(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @NonNull public android.net.VpnService.Builder addDisallowedApplication(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @NonNull public android.net.VpnService.Builder addDnsServer(@NonNull java.net.InetAddress);
+    method @NonNull public android.net.VpnService.Builder addDnsServer(@NonNull String);
+    method @NonNull public android.net.VpnService.Builder addRoute(@NonNull java.net.InetAddress, int);
+    method @NonNull public android.net.VpnService.Builder addRoute(@NonNull String, int);
+    method @NonNull public android.net.VpnService.Builder addSearchDomain(@NonNull String);
+    method @NonNull public android.net.VpnService.Builder allowBypass();
+    method @NonNull public android.net.VpnService.Builder allowFamily(int);
+    method @Nullable public android.os.ParcelFileDescriptor establish();
+    method @NonNull public android.net.VpnService.Builder setBlocking(boolean);
+    method @NonNull public android.net.VpnService.Builder setConfigureIntent(@NonNull android.app.PendingIntent);
+    method @NonNull public android.net.VpnService.Builder setHttpProxy(@NonNull android.net.ProxyInfo);
+    method @NonNull public android.net.VpnService.Builder setMetered(boolean);
+    method @NonNull public android.net.VpnService.Builder setMtu(int);
+    method @NonNull public android.net.VpnService.Builder setSession(@NonNull String);
+    method @NonNull public android.net.VpnService.Builder setUnderlyingNetworks(@Nullable android.net.Network[]);
+  }
+
+}
+
+package android.net.http {
+
+  public final class HttpResponseCache extends java.net.ResponseCache implements java.io.Closeable {
+    method public void close() throws java.io.IOException;
+    method public void delete() throws java.io.IOException;
+    method public void flush();
+    method public java.net.CacheResponse get(java.net.URI, String, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
+    method public int getHitCount();
+    method public static android.net.http.HttpResponseCache getInstalled();
+    method public int getNetworkCount();
+    method public int getRequestCount();
+    method public static android.net.http.HttpResponseCache install(java.io.File, long) throws java.io.IOException;
+    method public long maxSize();
+    method public java.net.CacheRequest put(java.net.URI, java.net.URLConnection) throws java.io.IOException;
+    method public long size();
+  }
+
+  public class SslCertificate {
+    ctor @Deprecated public SslCertificate(String, String, String, String);
+    ctor @Deprecated public SslCertificate(String, String, java.util.Date, java.util.Date);
+    ctor public SslCertificate(java.security.cert.X509Certificate);
+    method public android.net.http.SslCertificate.DName getIssuedBy();
+    method public android.net.http.SslCertificate.DName getIssuedTo();
+    method @Deprecated public String getValidNotAfter();
+    method public java.util.Date getValidNotAfterDate();
+    method @Deprecated public String getValidNotBefore();
+    method public java.util.Date getValidNotBeforeDate();
+    method @Nullable public java.security.cert.X509Certificate getX509Certificate();
+    method public static android.net.http.SslCertificate restoreState(android.os.Bundle);
+    method public static android.os.Bundle saveState(android.net.http.SslCertificate);
+  }
+
+  public class SslCertificate.DName {
+    ctor public SslCertificate.DName(String);
+    method public String getCName();
+    method public String getDName();
+    method public String getOName();
+    method public String getUName();
+  }
+
+  public class SslError {
+    ctor @Deprecated public SslError(int, android.net.http.SslCertificate);
+    ctor @Deprecated public SslError(int, java.security.cert.X509Certificate);
+    ctor public SslError(int, android.net.http.SslCertificate, String);
+    ctor public SslError(int, java.security.cert.X509Certificate, String);
+    method public boolean addError(int);
+    method public android.net.http.SslCertificate getCertificate();
+    method public int getPrimaryError();
+    method public String getUrl();
+    method public boolean hasError(int);
+    field public static final int SSL_DATE_INVALID = 4; // 0x4
+    field public static final int SSL_EXPIRED = 1; // 0x1
+    field public static final int SSL_IDMISMATCH = 2; // 0x2
+    field public static final int SSL_INVALID = 5; // 0x5
+    field @Deprecated public static final int SSL_MAX_ERROR = 6; // 0x6
+    field public static final int SSL_NOTYETVALID = 0; // 0x0
+    field public static final int SSL_UNTRUSTED = 3; // 0x3
+  }
+
+  public class X509TrustManagerExtensions {
+    ctor public X509TrustManagerExtensions(javax.net.ssl.X509TrustManager) throws java.lang.IllegalArgumentException;
+    method public java.util.List<java.security.cert.X509Certificate> checkServerTrusted(java.security.cert.X509Certificate[], String, String) throws java.security.cert.CertificateException;
+    method public boolean isSameTrustConfiguration(String, String);
+    method public boolean isUserAddedCertificate(java.security.cert.X509Certificate);
+  }
+
+}
+
+package android.net.nsd {
+
+  public final class NsdManager {
+    method public void discoverServices(String, int, android.net.nsd.NsdManager.DiscoveryListener);
+    method public void registerService(android.net.nsd.NsdServiceInfo, int, android.net.nsd.NsdManager.RegistrationListener);
+    method public void resolveService(android.net.nsd.NsdServiceInfo, android.net.nsd.NsdManager.ResolveListener);
+    method public void stopServiceDiscovery(android.net.nsd.NsdManager.DiscoveryListener);
+    method public void unregisterService(android.net.nsd.NsdManager.RegistrationListener);
+    field public static final String ACTION_NSD_STATE_CHANGED = "android.net.nsd.STATE_CHANGED";
+    field public static final String EXTRA_NSD_STATE = "nsd_state";
+    field public static final int FAILURE_ALREADY_ACTIVE = 3; // 0x3
+    field public static final int FAILURE_INTERNAL_ERROR = 0; // 0x0
+    field public static final int FAILURE_MAX_LIMIT = 4; // 0x4
+    field public static final int NSD_STATE_DISABLED = 1; // 0x1
+    field public static final int NSD_STATE_ENABLED = 2; // 0x2
+    field public static final int PROTOCOL_DNS_SD = 1; // 0x1
+  }
+
+  public static interface NsdManager.DiscoveryListener {
+    method public void onDiscoveryStarted(String);
+    method public void onDiscoveryStopped(String);
+    method public void onServiceFound(android.net.nsd.NsdServiceInfo);
+    method public void onServiceLost(android.net.nsd.NsdServiceInfo);
+    method public void onStartDiscoveryFailed(String, int);
+    method public void onStopDiscoveryFailed(String, int);
+  }
+
+  public static interface NsdManager.RegistrationListener {
+    method public void onRegistrationFailed(android.net.nsd.NsdServiceInfo, int);
+    method public void onServiceRegistered(android.net.nsd.NsdServiceInfo);
+    method public void onServiceUnregistered(android.net.nsd.NsdServiceInfo);
+    method public void onUnregistrationFailed(android.net.nsd.NsdServiceInfo, int);
+  }
+
+  public static interface NsdManager.ResolveListener {
+    method public void onResolveFailed(android.net.nsd.NsdServiceInfo, int);
+    method public void onServiceResolved(android.net.nsd.NsdServiceInfo);
+  }
+
+  public final class NsdServiceInfo implements android.os.Parcelable {
+    ctor public NsdServiceInfo();
+    method public int describeContents();
+    method public java.util.Map<java.lang.String,byte[]> getAttributes();
+    method public java.net.InetAddress getHost();
+    method public int getPort();
+    method public String getServiceName();
+    method public String getServiceType();
+    method public void removeAttribute(String);
+    method public void setAttribute(String, String);
+    method public void setHost(java.net.InetAddress);
+    method public void setPort(int);
+    method public void setServiceName(String);
+    method public void setServiceType(String);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.nsd.NsdServiceInfo> CREATOR;
+  }
+
+}
+
+package android.net.rtp {
+
+  public class AudioCodec {
+    method public static android.net.rtp.AudioCodec getCodec(int, String, String);
+    method public static android.net.rtp.AudioCodec[] getCodecs();
+    field public static final android.net.rtp.AudioCodec AMR;
+    field public static final android.net.rtp.AudioCodec GSM;
+    field public static final android.net.rtp.AudioCodec GSM_EFR;
+    field public static final android.net.rtp.AudioCodec PCMA;
+    field public static final android.net.rtp.AudioCodec PCMU;
+    field public final String fmtp;
+    field public final String rtpmap;
+    field public final int type;
+  }
+
+  public class AudioGroup {
+    ctor @Deprecated public AudioGroup();
+    ctor public AudioGroup(@NonNull android.content.Context);
+    method public void clear();
+    method public int getMode();
+    method public android.net.rtp.AudioStream[] getStreams();
+    method public void sendDtmf(int);
+    method public void setMode(int);
+    field public static final int MODE_ECHO_SUPPRESSION = 3; // 0x3
+    field public static final int MODE_MUTED = 1; // 0x1
+    field public static final int MODE_NORMAL = 2; // 0x2
+    field public static final int MODE_ON_HOLD = 0; // 0x0
+  }
+
+  public class AudioStream extends android.net.rtp.RtpStream {
+    ctor public AudioStream(java.net.InetAddress) throws java.net.SocketException;
+    method public android.net.rtp.AudioCodec getCodec();
+    method public int getDtmfType();
+    method public android.net.rtp.AudioGroup getGroup();
+    method public final boolean isBusy();
+    method public void join(android.net.rtp.AudioGroup);
+    method public void setCodec(android.net.rtp.AudioCodec);
+    method public void setDtmfType(int);
+  }
+
+  public class RtpStream {
+    method public void associate(java.net.InetAddress, int);
+    method public java.net.InetAddress getLocalAddress();
+    method public int getLocalPort();
+    method public int getMode();
+    method public java.net.InetAddress getRemoteAddress();
+    method public int getRemotePort();
+    method public boolean isBusy();
+    method public void release();
+    method public void setMode(int);
+    field public static final int MODE_NORMAL = 0; // 0x0
+    field public static final int MODE_RECEIVE_ONLY = 2; // 0x2
+    field public static final int MODE_SEND_ONLY = 1; // 0x1
+  }
+
+}
+
+package android.net.sip {
+
+  public class SipAudioCall {
+    ctor public SipAudioCall(android.content.Context, android.net.sip.SipProfile);
+    method public void answerCall(int) throws android.net.sip.SipException;
+    method public void attachCall(android.net.sip.SipSession, String) throws android.net.sip.SipException;
+    method public void close();
+    method public void continueCall(int) throws android.net.sip.SipException;
+    method public void endCall() throws android.net.sip.SipException;
+    method public android.net.sip.SipProfile getLocalProfile();
+    method public android.net.sip.SipProfile getPeerProfile();
+    method public int getState();
+    method public void holdCall(int) throws android.net.sip.SipException;
+    method public boolean isInCall();
+    method public boolean isMuted();
+    method public boolean isOnHold();
+    method public void makeCall(android.net.sip.SipProfile, android.net.sip.SipSession, int) throws android.net.sip.SipException;
+    method public void sendDtmf(int);
+    method public void sendDtmf(int, android.os.Message);
+    method public void setListener(android.net.sip.SipAudioCall.Listener);
+    method public void setListener(android.net.sip.SipAudioCall.Listener, boolean);
+    method public void setSpeakerMode(boolean);
+    method public void startAudio();
+    method public void toggleMute();
+  }
+
+  public static class SipAudioCall.Listener {
+    ctor public SipAudioCall.Listener();
+    method public void onCallBusy(android.net.sip.SipAudioCall);
+    method public void onCallEnded(android.net.sip.SipAudioCall);
+    method public void onCallEstablished(android.net.sip.SipAudioCall);
+    method public void onCallHeld(android.net.sip.SipAudioCall);
+    method public void onCalling(android.net.sip.SipAudioCall);
+    method public void onChanged(android.net.sip.SipAudioCall);
+    method public void onError(android.net.sip.SipAudioCall, int, String);
+    method public void onReadyToCall(android.net.sip.SipAudioCall);
+    method public void onRinging(android.net.sip.SipAudioCall, android.net.sip.SipProfile);
+    method public void onRingingBack(android.net.sip.SipAudioCall);
+  }
+
+  public class SipErrorCode {
+    method public static String toString(int);
+    field public static final int CLIENT_ERROR = -4; // 0xfffffffc
+    field public static final int CROSS_DOMAIN_AUTHENTICATION = -11; // 0xfffffff5
+    field public static final int DATA_CONNECTION_LOST = -10; // 0xfffffff6
+    field public static final int INVALID_CREDENTIALS = -8; // 0xfffffff8
+    field public static final int INVALID_REMOTE_URI = -6; // 0xfffffffa
+    field public static final int IN_PROGRESS = -9; // 0xfffffff7
+    field public static final int NO_ERROR = 0; // 0x0
+    field public static final int PEER_NOT_REACHABLE = -7; // 0xfffffff9
+    field public static final int SERVER_ERROR = -2; // 0xfffffffe
+    field public static final int SERVER_UNREACHABLE = -12; // 0xfffffff4
+    field public static final int SOCKET_ERROR = -1; // 0xffffffff
+    field public static final int TIME_OUT = -5; // 0xfffffffb
+    field public static final int TRANSACTION_TERMINTED = -3; // 0xfffffffd
+  }
+
+  public class SipException extends java.lang.Exception {
+    ctor public SipException();
+    ctor public SipException(String);
+    ctor public SipException(String, Throwable);
+  }
+
+  public class SipManager {
+    method public void close(String) throws android.net.sip.SipException;
+    method public android.net.sip.SipSession createSipSession(android.net.sip.SipProfile, android.net.sip.SipSession.Listener) throws android.net.sip.SipException;
+    method public static String getCallId(android.content.Intent);
+    method public static String getOfferSessionDescription(android.content.Intent);
+    method public android.net.sip.SipSession getSessionFor(android.content.Intent) throws android.net.sip.SipException;
+    method public static boolean isApiSupported(android.content.Context);
+    method public static boolean isIncomingCallIntent(android.content.Intent);
+    method public boolean isOpened(String) throws android.net.sip.SipException;
+    method public boolean isRegistered(String) throws android.net.sip.SipException;
+    method public static boolean isSipWifiOnly(android.content.Context);
+    method public static boolean isVoipSupported(android.content.Context);
+    method public android.net.sip.SipAudioCall makeAudioCall(android.net.sip.SipProfile, android.net.sip.SipProfile, android.net.sip.SipAudioCall.Listener, int) throws android.net.sip.SipException;
+    method public android.net.sip.SipAudioCall makeAudioCall(String, String, android.net.sip.SipAudioCall.Listener, int) throws android.net.sip.SipException;
+    method public static android.net.sip.SipManager newInstance(android.content.Context);
+    method public void open(android.net.sip.SipProfile) throws android.net.sip.SipException;
+    method public void open(android.net.sip.SipProfile, android.app.PendingIntent, android.net.sip.SipRegistrationListener) throws android.net.sip.SipException;
+    method public void register(android.net.sip.SipProfile, int, android.net.sip.SipRegistrationListener) throws android.net.sip.SipException;
+    method public void setRegistrationListener(String, android.net.sip.SipRegistrationListener) throws android.net.sip.SipException;
+    method public android.net.sip.SipAudioCall takeAudioCall(android.content.Intent, android.net.sip.SipAudioCall.Listener) throws android.net.sip.SipException;
+    method public void unregister(android.net.sip.SipProfile, android.net.sip.SipRegistrationListener) throws android.net.sip.SipException;
+    field public static final String EXTRA_CALL_ID = "android:sipCallID";
+    field public static final String EXTRA_OFFER_SD = "android:sipOfferSD";
+    field public static final int INCOMING_CALL_RESULT_CODE = 101; // 0x65
+  }
+
+  public class SipProfile implements java.lang.Cloneable android.os.Parcelable java.io.Serializable {
+    method public int describeContents();
+    method public String getAuthUserName();
+    method public boolean getAutoRegistration();
+    method public String getDisplayName();
+    method public String getPassword();
+    method public int getPort();
+    method public String getProfileName();
+    method public String getProtocol();
+    method public String getProxyAddress();
+    method public boolean getSendKeepAlive();
+    method public String getSipDomain();
+    method public String getUriString();
+    method public String getUserName();
+    method public void setCallingUid(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final android.os.Parcelable.Creator<android.net.sip.SipProfile> CREATOR;
+  }
+
+  public static class SipProfile.Builder {
+    ctor public SipProfile.Builder(android.net.sip.SipProfile);
+    ctor public SipProfile.Builder(String) throws java.text.ParseException;
+    ctor public SipProfile.Builder(String, String) throws java.text.ParseException;
+    method public android.net.sip.SipProfile build();
+    method public android.net.sip.SipProfile.Builder setAuthUserName(String);
+    method public android.net.sip.SipProfile.Builder setAutoRegistration(boolean);
+    method public android.net.sip.SipProfile.Builder setDisplayName(String);
+    method public android.net.sip.SipProfile.Builder setOutboundProxy(String);
+    method public android.net.sip.SipProfile.Builder setPassword(String);
+    method public android.net.sip.SipProfile.Builder setPort(int) throws java.lang.IllegalArgumentException;
+    method public android.net.sip.SipProfile.Builder setProfileName(String);
+    method public android.net.sip.SipProfile.Builder setProtocol(String) throws java.lang.IllegalArgumentException;
+    method public android.net.sip.SipProfile.Builder setSendKeepAlive(boolean);
+  }
+
+  public interface SipRegistrationListener {
+    method public void onRegistering(String);
+    method public void onRegistrationDone(String, long);
+    method public void onRegistrationFailed(String, int, String);
+  }
+
+  public final class SipSession {
+    method public void answerCall(String, int);
+    method public void changeCall(String, int);
+    method public void endCall();
+    method public String getCallId();
+    method public String getLocalIp();
+    method public android.net.sip.SipProfile getLocalProfile();
+    method public android.net.sip.SipProfile getPeerProfile();
+    method public int getState();
+    method public boolean isInCall();
+    method public void makeCall(android.net.sip.SipProfile, String, int);
+    method public void register(int);
+    method public void setListener(android.net.sip.SipSession.Listener);
+    method public void unregister();
+  }
+
+  public static class SipSession.Listener {
+    ctor public SipSession.Listener();
+    method public void onCallBusy(android.net.sip.SipSession);
+    method public void onCallChangeFailed(android.net.sip.SipSession, int, String);
+    method public void onCallEnded(android.net.sip.SipSession);
+    method public void onCallEstablished(android.net.sip.SipSession, String);
+    method public void onCalling(android.net.sip.SipSession);
+    method public void onError(android.net.sip.SipSession, int, String);
+    method public void onRegistering(android.net.sip.SipSession);
+    method public void onRegistrationDone(android.net.sip.SipSession, int);
+    method public void onRegistrationFailed(android.net.sip.SipSession, int, String);
+    method public void onRegistrationTimeout(android.net.sip.SipSession);
+    method public void onRinging(android.net.sip.SipSession, android.net.sip.SipProfile, String);
+    method public void onRingingBack(android.net.sip.SipSession);
+  }
+
+  public static class SipSession.State {
+    method public static String toString(int);
+    field public static final int DEREGISTERING = 2; // 0x2
+    field public static final int INCOMING_CALL = 3; // 0x3
+    field public static final int INCOMING_CALL_ANSWERING = 4; // 0x4
+    field public static final int IN_CALL = 8; // 0x8
+    field public static final int NOT_DEFINED = 101; // 0x65
+    field public static final int OUTGOING_CALL = 5; // 0x5
+    field public static final int OUTGOING_CALL_CANCELING = 7; // 0x7
+    field public static final int OUTGOING_CALL_RING_BACK = 6; // 0x6
+    field public static final int PINGING = 9; // 0x9
+    field public static final int READY_TO_CALL = 0; // 0x0
+    field public static final int REGISTERING = 1; // 0x1
+  }
+
+}
+
+package android.nfc {
+
+  public class FormatException extends java.lang.Exception {
+    ctor public FormatException();
+    ctor public FormatException(String);
+    ctor public FormatException(String, Throwable);
+  }
+
+  public final class NdefMessage implements android.os.Parcelable {
+    ctor public NdefMessage(byte[]) throws android.nfc.FormatException;
+    ctor public NdefMessage(android.nfc.NdefRecord, android.nfc.NdefRecord...);
+    ctor public NdefMessage(android.nfc.NdefRecord[]);
+    method public int describeContents();
+    method public int getByteArrayLength();
+    method public android.nfc.NdefRecord[] getRecords();
+    method public byte[] toByteArray();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.nfc.NdefMessage> CREATOR;
+  }
+
+  public final class NdefRecord implements android.os.Parcelable {
+    ctor public NdefRecord(short, byte[], byte[], byte[]);
+    ctor @Deprecated public NdefRecord(byte[]) throws android.nfc.FormatException;
+    method public static android.nfc.NdefRecord createApplicationRecord(String);
+    method public static android.nfc.NdefRecord createExternal(String, String, byte[]);
+    method public static android.nfc.NdefRecord createMime(String, byte[]);
+    method public static android.nfc.NdefRecord createTextRecord(String, String);
+    method public static android.nfc.NdefRecord createUri(android.net.Uri);
+    method public static android.nfc.NdefRecord createUri(String);
+    method public int describeContents();
+    method public byte[] getId();
+    method public byte[] getPayload();
+    method public short getTnf();
+    method public byte[] getType();
+    method @Deprecated public byte[] toByteArray();
+    method public String toMimeType();
+    method public android.net.Uri toUri();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.nfc.NdefRecord> CREATOR;
+    field public static final byte[] RTD_ALTERNATIVE_CARRIER;
+    field public static final byte[] RTD_HANDOVER_CARRIER;
+    field public static final byte[] RTD_HANDOVER_REQUEST;
+    field public static final byte[] RTD_HANDOVER_SELECT;
+    field public static final byte[] RTD_SMART_POSTER;
+    field public static final byte[] RTD_TEXT;
+    field public static final byte[] RTD_URI;
+    field public static final short TNF_ABSOLUTE_URI = 3; // 0x3
+    field public static final short TNF_EMPTY = 0; // 0x0
+    field public static final short TNF_EXTERNAL_TYPE = 4; // 0x4
+    field public static final short TNF_MIME_MEDIA = 2; // 0x2
+    field public static final short TNF_UNCHANGED = 6; // 0x6
+    field public static final short TNF_UNKNOWN = 5; // 0x5
+    field public static final short TNF_WELL_KNOWN = 1; // 0x1
+  }
+
+  public final class NfcAdapter {
+    method public void disableForegroundDispatch(android.app.Activity);
+    method @Deprecated public void disableForegroundNdefPush(android.app.Activity);
+    method public void disableReaderMode(android.app.Activity);
+    method public void enableForegroundDispatch(android.app.Activity, android.app.PendingIntent, android.content.IntentFilter[], String[][]);
+    method @Deprecated public void enableForegroundNdefPush(android.app.Activity, android.nfc.NdefMessage);
+    method public void enableReaderMode(android.app.Activity, android.nfc.NfcAdapter.ReaderCallback, int, android.os.Bundle);
+    method public static android.nfc.NfcAdapter getDefaultAdapter(android.content.Context);
+    method public boolean ignore(android.nfc.Tag, int, android.nfc.NfcAdapter.OnTagRemovedListener, android.os.Handler);
+    method @Deprecated public boolean invokeBeam(android.app.Activity);
+    method public boolean isEnabled();
+    method @Deprecated public boolean isNdefPushEnabled();
+    method public boolean isSecureNfcEnabled();
+    method public boolean isSecureNfcSupported();
+    method @Deprecated public void setBeamPushUris(android.net.Uri[], android.app.Activity);
+    method @Deprecated public void setBeamPushUrisCallback(android.nfc.NfcAdapter.CreateBeamUrisCallback, android.app.Activity);
+    method @Deprecated public void setNdefPushMessage(android.nfc.NdefMessage, android.app.Activity, android.app.Activity...);
+    method @Deprecated public void setNdefPushMessageCallback(android.nfc.NfcAdapter.CreateNdefMessageCallback, android.app.Activity, android.app.Activity...);
+    method @Deprecated public void setOnNdefPushCompleteCallback(android.nfc.NfcAdapter.OnNdefPushCompleteCallback, android.app.Activity, android.app.Activity...);
+    field public static final String ACTION_ADAPTER_STATE_CHANGED = "android.nfc.action.ADAPTER_STATE_CHANGED";
+    field public static final String ACTION_NDEF_DISCOVERED = "android.nfc.action.NDEF_DISCOVERED";
+    field @RequiresPermission(android.Manifest.permission.NFC_PREFERRED_PAYMENT_INFO) public static final String ACTION_PREFERRED_PAYMENT_CHANGED = "android.nfc.action.PREFERRED_PAYMENT_CHANGED";
+    field public static final String ACTION_TAG_DISCOVERED = "android.nfc.action.TAG_DISCOVERED";
+    field public static final String ACTION_TECH_DISCOVERED = "android.nfc.action.TECH_DISCOVERED";
+    field @RequiresPermission(android.Manifest.permission.NFC_TRANSACTION_EVENT) public static final String ACTION_TRANSACTION_DETECTED = "android.nfc.action.TRANSACTION_DETECTED";
+    field public static final String EXTRA_ADAPTER_STATE = "android.nfc.extra.ADAPTER_STATE";
+    field public static final String EXTRA_AID = "android.nfc.extra.AID";
+    field public static final String EXTRA_DATA = "android.nfc.extra.DATA";
+    field public static final String EXTRA_ID = "android.nfc.extra.ID";
+    field public static final String EXTRA_NDEF_MESSAGES = "android.nfc.extra.NDEF_MESSAGES";
+    field public static final String EXTRA_PREFERRED_PAYMENT_CHANGED_REASON = "android.nfc.extra.PREFERRED_PAYMENT_CHANGED_REASON";
+    field public static final String EXTRA_READER_PRESENCE_CHECK_DELAY = "presence";
+    field public static final String EXTRA_SECURE_ELEMENT_NAME = "android.nfc.extra.SECURE_ELEMENT_NAME";
+    field public static final String EXTRA_TAG = "android.nfc.extra.TAG";
+    field public static final int FLAG_READER_NFC_A = 1; // 0x1
+    field public static final int FLAG_READER_NFC_B = 2; // 0x2
+    field public static final int FLAG_READER_NFC_BARCODE = 16; // 0x10
+    field public static final int FLAG_READER_NFC_F = 4; // 0x4
+    field public static final int FLAG_READER_NFC_V = 8; // 0x8
+    field public static final int FLAG_READER_NO_PLATFORM_SOUNDS = 256; // 0x100
+    field public static final int FLAG_READER_SKIP_NDEF_CHECK = 128; // 0x80
+    field public static final int PREFERRED_PAYMENT_CHANGED = 2; // 0x2
+    field public static final int PREFERRED_PAYMENT_LOADED = 1; // 0x1
+    field public static final int PREFERRED_PAYMENT_UPDATED = 3; // 0x3
+    field public static final int STATE_OFF = 1; // 0x1
+    field public static final int STATE_ON = 3; // 0x3
+    field public static final int STATE_TURNING_OFF = 4; // 0x4
+    field public static final int STATE_TURNING_ON = 2; // 0x2
+  }
+
+  @Deprecated public static interface NfcAdapter.CreateBeamUrisCallback {
+    method @Deprecated public android.net.Uri[] createBeamUris(android.nfc.NfcEvent);
+  }
+
+  @Deprecated public static interface NfcAdapter.CreateNdefMessageCallback {
+    method @Deprecated public android.nfc.NdefMessage createNdefMessage(android.nfc.NfcEvent);
+  }
+
+  @Deprecated public static interface NfcAdapter.OnNdefPushCompleteCallback {
+    method @Deprecated public void onNdefPushComplete(android.nfc.NfcEvent);
+  }
+
+  public static interface NfcAdapter.OnTagRemovedListener {
+    method public void onTagRemoved();
+  }
+
+  public static interface NfcAdapter.ReaderCallback {
+    method public void onTagDiscovered(android.nfc.Tag);
+  }
+
+  public final class NfcEvent {
+    field public final android.nfc.NfcAdapter nfcAdapter;
+    field public final int peerLlcpMajorVersion;
+    field public final int peerLlcpMinorVersion;
+  }
+
+  public final class NfcManager {
+    method public android.nfc.NfcAdapter getDefaultAdapter();
+  }
+
+  public final class Tag implements android.os.Parcelable {
+    method public int describeContents();
+    method public byte[] getId();
+    method public String[] getTechList();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.nfc.Tag> CREATOR;
+  }
+
+  public class TagLostException extends java.io.IOException {
+    ctor public TagLostException();
+    ctor public TagLostException(String);
+  }
+
+}
+
+package android.nfc.cardemulation {
+
+  public final class CardEmulation {
+    method public boolean categoryAllowsForegroundPreference(String);
+    method @Nullable @RequiresPermission(android.Manifest.permission.NFC_PREFERRED_PAYMENT_INFO) public java.util.List<java.lang.String> getAidsForPreferredPaymentService();
+    method public java.util.List<java.lang.String> getAidsForService(android.content.ComponentName, String);
+    method @Nullable @RequiresPermission(android.Manifest.permission.NFC_PREFERRED_PAYMENT_INFO) public CharSequence getDescriptionForPreferredPaymentService();
+    method public static android.nfc.cardemulation.CardEmulation getInstance(android.nfc.NfcAdapter);
+    method @Nullable @RequiresPermission(android.Manifest.permission.NFC_PREFERRED_PAYMENT_INFO) public String getRouteDestinationForPreferredPaymentService();
+    method public int getSelectionModeForCategory(String);
+    method public boolean isDefaultServiceForAid(android.content.ComponentName, String);
+    method public boolean isDefaultServiceForCategory(android.content.ComponentName, String);
+    method public boolean registerAidsForService(android.content.ComponentName, String, java.util.List<java.lang.String>);
+    method public boolean removeAidsForService(android.content.ComponentName, String);
+    method @NonNull @RequiresPermission(android.Manifest.permission.NFC) public boolean setOffHostForService(@NonNull android.content.ComponentName, @NonNull String);
+    method public boolean setPreferredService(android.app.Activity, android.content.ComponentName);
+    method public boolean supportsAidPrefixRegistration();
+    method @NonNull @RequiresPermission(android.Manifest.permission.NFC) public boolean unsetOffHostForService(@NonNull android.content.ComponentName);
+    method public boolean unsetPreferredService(android.app.Activity);
+    field public static final String ACTION_CHANGE_DEFAULT = "android.nfc.cardemulation.action.ACTION_CHANGE_DEFAULT";
+    field public static final String CATEGORY_OTHER = "other";
+    field public static final String CATEGORY_PAYMENT = "payment";
+    field public static final String EXTRA_CATEGORY = "category";
+    field public static final String EXTRA_SERVICE_COMPONENT = "component";
+    field public static final int SELECTION_MODE_ALWAYS_ASK = 1; // 0x1
+    field public static final int SELECTION_MODE_ASK_IF_CONFLICT = 2; // 0x2
+    field public static final int SELECTION_MODE_PREFER_DEFAULT = 0; // 0x0
+  }
+
+  public abstract class HostApduService extends android.app.Service {
+    ctor public HostApduService();
+    method public final void notifyUnhandled();
+    method public final android.os.IBinder onBind(android.content.Intent);
+    method public abstract void onDeactivated(int);
+    method public abstract byte[] processCommandApdu(byte[], android.os.Bundle);
+    method public final void sendResponseApdu(byte[]);
+    field public static final int DEACTIVATION_DESELECTED = 1; // 0x1
+    field public static final int DEACTIVATION_LINK_LOSS = 0; // 0x0
+    field public static final String SERVICE_INTERFACE = "android.nfc.cardemulation.action.HOST_APDU_SERVICE";
+    field public static final String SERVICE_META_DATA = "android.nfc.cardemulation.host_apdu_service";
+  }
+
+  public abstract class HostNfcFService extends android.app.Service {
+    ctor public HostNfcFService();
+    method public final android.os.IBinder onBind(android.content.Intent);
+    method public abstract void onDeactivated(int);
+    method public abstract byte[] processNfcFPacket(byte[], android.os.Bundle);
+    method public final void sendResponsePacket(byte[]);
+    field public static final int DEACTIVATION_LINK_LOSS = 0; // 0x0
+    field public static final String SERVICE_INTERFACE = "android.nfc.cardemulation.action.HOST_NFCF_SERVICE";
+    field public static final String SERVICE_META_DATA = "android.nfc.cardemulation.host_nfcf_service";
+  }
+
+  public final class NfcFCardEmulation {
+    method public boolean disableService(android.app.Activity) throws java.lang.RuntimeException;
+    method public boolean enableService(android.app.Activity, android.content.ComponentName) throws java.lang.RuntimeException;
+    method public static android.nfc.cardemulation.NfcFCardEmulation getInstance(android.nfc.NfcAdapter);
+    method public String getNfcid2ForService(android.content.ComponentName) throws java.lang.RuntimeException;
+    method public String getSystemCodeForService(android.content.ComponentName) throws java.lang.RuntimeException;
+    method public boolean registerSystemCodeForService(android.content.ComponentName, String) throws java.lang.RuntimeException;
+    method public boolean setNfcid2ForService(android.content.ComponentName, String) throws java.lang.RuntimeException;
+    method public boolean unregisterSystemCodeForService(android.content.ComponentName) throws java.lang.RuntimeException;
+  }
+
+  public abstract class OffHostApduService extends android.app.Service {
+    ctor public OffHostApduService();
+    field public static final String SERVICE_INTERFACE = "android.nfc.cardemulation.action.OFF_HOST_APDU_SERVICE";
+    field public static final String SERVICE_META_DATA = "android.nfc.cardemulation.off_host_apdu_service";
+  }
+
+}
+
+package android.nfc.tech {
+
+  public final class IsoDep implements android.nfc.tech.TagTechnology {
+    method public void close() throws java.io.IOException;
+    method public void connect() throws java.io.IOException;
+    method public static android.nfc.tech.IsoDep get(android.nfc.Tag);
+    method public byte[] getHiLayerResponse();
+    method public byte[] getHistoricalBytes();
+    method public int getMaxTransceiveLength();
+    method public android.nfc.Tag getTag();
+    method public int getTimeout();
+    method public boolean isConnected();
+    method public boolean isExtendedLengthApduSupported();
+    method public void setTimeout(int);
+    method public byte[] transceive(byte[]) throws java.io.IOException;
+  }
+
+  public final class MifareClassic implements android.nfc.tech.TagTechnology {
+    method public boolean authenticateSectorWithKeyA(int, byte[]) throws java.io.IOException;
+    method public boolean authenticateSectorWithKeyB(int, byte[]) throws java.io.IOException;
+    method public int blockToSector(int);
+    method public void close() throws java.io.IOException;
+    method public void connect() throws java.io.IOException;
+    method public void decrement(int, int) throws java.io.IOException;
+    method public static android.nfc.tech.MifareClassic get(android.nfc.Tag);
+    method public int getBlockCount();
+    method public int getBlockCountInSector(int);
+    method public int getMaxTransceiveLength();
+    method public int getSectorCount();
+    method public int getSize();
+    method public android.nfc.Tag getTag();
+    method public int getTimeout();
+    method public int getType();
+    method public void increment(int, int) throws java.io.IOException;
+    method public boolean isConnected();
+    method public byte[] readBlock(int) throws java.io.IOException;
+    method public void restore(int) throws java.io.IOException;
+    method public int sectorToBlock(int);
+    method public void setTimeout(int);
+    method public byte[] transceive(byte[]) throws java.io.IOException;
+    method public void transfer(int) throws java.io.IOException;
+    method public void writeBlock(int, byte[]) throws java.io.IOException;
+    field public static final int BLOCK_SIZE = 16; // 0x10
+    field public static final byte[] KEY_DEFAULT;
+    field public static final byte[] KEY_MIFARE_APPLICATION_DIRECTORY;
+    field public static final byte[] KEY_NFC_FORUM;
+    field public static final int SIZE_1K = 1024; // 0x400
+    field public static final int SIZE_2K = 2048; // 0x800
+    field public static final int SIZE_4K = 4096; // 0x1000
+    field public static final int SIZE_MINI = 320; // 0x140
+    field public static final int TYPE_CLASSIC = 0; // 0x0
+    field public static final int TYPE_PLUS = 1; // 0x1
+    field public static final int TYPE_PRO = 2; // 0x2
+    field public static final int TYPE_UNKNOWN = -1; // 0xffffffff
+  }
+
+  public final class MifareUltralight implements android.nfc.tech.TagTechnology {
+    method public void close() throws java.io.IOException;
+    method public void connect() throws java.io.IOException;
+    method public static android.nfc.tech.MifareUltralight get(android.nfc.Tag);
+    method public int getMaxTransceiveLength();
+    method public android.nfc.Tag getTag();
+    method public int getTimeout();
+    method public int getType();
+    method public boolean isConnected();
+    method public byte[] readPages(int) throws java.io.IOException;
+    method public void setTimeout(int);
+    method public byte[] transceive(byte[]) throws java.io.IOException;
+    method public void writePage(int, byte[]) throws java.io.IOException;
+    field public static final int PAGE_SIZE = 4; // 0x4
+    field public static final int TYPE_ULTRALIGHT = 1; // 0x1
+    field public static final int TYPE_ULTRALIGHT_C = 2; // 0x2
+    field public static final int TYPE_UNKNOWN = -1; // 0xffffffff
+  }
+
+  public final class Ndef implements android.nfc.tech.TagTechnology {
+    method public boolean canMakeReadOnly();
+    method public void close() throws java.io.IOException;
+    method public void connect() throws java.io.IOException;
+    method public static android.nfc.tech.Ndef get(android.nfc.Tag);
+    method public android.nfc.NdefMessage getCachedNdefMessage();
+    method public int getMaxSize();
+    method public android.nfc.NdefMessage getNdefMessage() throws android.nfc.FormatException, java.io.IOException;
+    method public android.nfc.Tag getTag();
+    method public String getType();
+    method public boolean isConnected();
+    method public boolean isWritable();
+    method public boolean makeReadOnly() throws java.io.IOException;
+    method public void writeNdefMessage(android.nfc.NdefMessage) throws android.nfc.FormatException, java.io.IOException;
+    field public static final String MIFARE_CLASSIC = "com.nxp.ndef.mifareclassic";
+    field public static final String NFC_FORUM_TYPE_1 = "org.nfcforum.ndef.type1";
+    field public static final String NFC_FORUM_TYPE_2 = "org.nfcforum.ndef.type2";
+    field public static final String NFC_FORUM_TYPE_3 = "org.nfcforum.ndef.type3";
+    field public static final String NFC_FORUM_TYPE_4 = "org.nfcforum.ndef.type4";
+  }
+
+  public final class NdefFormatable implements android.nfc.tech.TagTechnology {
+    method public void close() throws java.io.IOException;
+    method public void connect() throws java.io.IOException;
+    method public void format(android.nfc.NdefMessage) throws android.nfc.FormatException, java.io.IOException;
+    method public void formatReadOnly(android.nfc.NdefMessage) throws android.nfc.FormatException, java.io.IOException;
+    method public static android.nfc.tech.NdefFormatable get(android.nfc.Tag);
+    method public android.nfc.Tag getTag();
+    method public boolean isConnected();
+  }
+
+  public final class NfcA implements android.nfc.tech.TagTechnology {
+    method public void close() throws java.io.IOException;
+    method public void connect() throws java.io.IOException;
+    method public static android.nfc.tech.NfcA get(android.nfc.Tag);
+    method public byte[] getAtqa();
+    method public int getMaxTransceiveLength();
+    method public short getSak();
+    method public android.nfc.Tag getTag();
+    method public int getTimeout();
+    method public boolean isConnected();
+    method public void setTimeout(int);
+    method public byte[] transceive(byte[]) throws java.io.IOException;
+  }
+
+  public final class NfcB implements android.nfc.tech.TagTechnology {
+    method public void close() throws java.io.IOException;
+    method public void connect() throws java.io.IOException;
+    method public static android.nfc.tech.NfcB get(android.nfc.Tag);
+    method public byte[] getApplicationData();
+    method public int getMaxTransceiveLength();
+    method public byte[] getProtocolInfo();
+    method public android.nfc.Tag getTag();
+    method public boolean isConnected();
+    method public byte[] transceive(byte[]) throws java.io.IOException;
+  }
+
+  public final class NfcBarcode implements android.nfc.tech.TagTechnology {
+    method public void close() throws java.io.IOException;
+    method public void connect() throws java.io.IOException;
+    method public static android.nfc.tech.NfcBarcode get(android.nfc.Tag);
+    method public byte[] getBarcode();
+    method public android.nfc.Tag getTag();
+    method public int getType();
+    method public boolean isConnected();
+    field public static final int TYPE_KOVIO = 1; // 0x1
+    field public static final int TYPE_UNKNOWN = -1; // 0xffffffff
+  }
+
+  public final class NfcF implements android.nfc.tech.TagTechnology {
+    method public void close() throws java.io.IOException;
+    method public void connect() throws java.io.IOException;
+    method public static android.nfc.tech.NfcF get(android.nfc.Tag);
+    method public byte[] getManufacturer();
+    method public int getMaxTransceiveLength();
+    method public byte[] getSystemCode();
+    method public android.nfc.Tag getTag();
+    method public int getTimeout();
+    method public boolean isConnected();
+    method public void setTimeout(int);
+    method public byte[] transceive(byte[]) throws java.io.IOException;
+  }
+
+  public final class NfcV implements android.nfc.tech.TagTechnology {
+    method public void close() throws java.io.IOException;
+    method public void connect() throws java.io.IOException;
+    method public static android.nfc.tech.NfcV get(android.nfc.Tag);
+    method public byte getDsfId();
+    method public int getMaxTransceiveLength();
+    method public byte getResponseFlags();
+    method public android.nfc.Tag getTag();
+    method public boolean isConnected();
+    method public byte[] transceive(byte[]) throws java.io.IOException;
+  }
+
+  public interface TagTechnology extends java.io.Closeable {
+    method public void connect() throws java.io.IOException;
+    method public android.nfc.Tag getTag();
+    method public boolean isConnected();
+  }
+
+}
+
+package android.opengl {
+
+  public class EGL14 {
+    ctor public EGL14();
+    method public static boolean eglBindAPI(int);
+    method public static boolean eglBindTexImage(android.opengl.EGLDisplay, android.opengl.EGLSurface, int);
+    method public static boolean eglChooseConfig(android.opengl.EGLDisplay, int[], int, android.opengl.EGLConfig[], int, int, int[], int);
+    method public static boolean eglCopyBuffers(android.opengl.EGLDisplay, android.opengl.EGLSurface, int);
+    method public static android.opengl.EGLContext eglCreateContext(android.opengl.EGLDisplay, android.opengl.EGLConfig, android.opengl.EGLContext, int[], int);
+    method public static android.opengl.EGLSurface eglCreatePbufferFromClientBuffer(android.opengl.EGLDisplay, int, int, android.opengl.EGLConfig, int[], int);
+    method public static android.opengl.EGLSurface eglCreatePbufferSurface(android.opengl.EGLDisplay, android.opengl.EGLConfig, int[], int);
+    method @Deprecated public static android.opengl.EGLSurface eglCreatePixmapSurface(android.opengl.EGLDisplay, android.opengl.EGLConfig, int, int[], int);
+    method public static android.opengl.EGLSurface eglCreateWindowSurface(android.opengl.EGLDisplay, android.opengl.EGLConfig, Object, int[], int);
+    method public static boolean eglDestroyContext(android.opengl.EGLDisplay, android.opengl.EGLContext);
+    method public static boolean eglDestroySurface(android.opengl.EGLDisplay, android.opengl.EGLSurface);
+    method public static boolean eglGetConfigAttrib(android.opengl.EGLDisplay, android.opengl.EGLConfig, int, int[], int);
+    method public static boolean eglGetConfigs(android.opengl.EGLDisplay, android.opengl.EGLConfig[], int, int, int[], int);
+    method public static android.opengl.EGLContext eglGetCurrentContext();
+    method public static android.opengl.EGLDisplay eglGetCurrentDisplay();
+    method public static android.opengl.EGLSurface eglGetCurrentSurface(int);
+    method public static android.opengl.EGLDisplay eglGetDisplay(int);
+    method public static int eglGetError();
+    method public static boolean eglInitialize(android.opengl.EGLDisplay, int[], int, int[], int);
+    method public static boolean eglMakeCurrent(android.opengl.EGLDisplay, android.opengl.EGLSurface, android.opengl.EGLSurface, android.opengl.EGLContext);
+    method public static int eglQueryAPI();
+    method public static boolean eglQueryContext(android.opengl.EGLDisplay, android.opengl.EGLContext, int, int[], int);
+    method public static String eglQueryString(android.opengl.EGLDisplay, int);
+    method public static boolean eglQuerySurface(android.opengl.EGLDisplay, android.opengl.EGLSurface, int, int[], int);
+    method public static boolean eglReleaseTexImage(android.opengl.EGLDisplay, android.opengl.EGLSurface, int);
+    method public static boolean eglReleaseThread();
+    method public static boolean eglSurfaceAttrib(android.opengl.EGLDisplay, android.opengl.EGLSurface, int, int);
+    method public static boolean eglSwapBuffers(android.opengl.EGLDisplay, android.opengl.EGLSurface);
+    method public static boolean eglSwapInterval(android.opengl.EGLDisplay, int);
+    method public static boolean eglTerminate(android.opengl.EGLDisplay);
+    method public static boolean eglWaitClient();
+    method public static boolean eglWaitGL();
+    method public static boolean eglWaitNative(int);
+    field public static final int EGL_ALPHA_MASK_SIZE = 12350; // 0x303e
+    field public static final int EGL_ALPHA_SIZE = 12321; // 0x3021
+    field public static final int EGL_BACK_BUFFER = 12420; // 0x3084
+    field public static final int EGL_BAD_ACCESS = 12290; // 0x3002
+    field public static final int EGL_BAD_ALLOC = 12291; // 0x3003
+    field public static final int EGL_BAD_ATTRIBUTE = 12292; // 0x3004
+    field public static final int EGL_BAD_CONFIG = 12293; // 0x3005
+    field public static final int EGL_BAD_CONTEXT = 12294; // 0x3006
+    field public static final int EGL_BAD_CURRENT_SURFACE = 12295; // 0x3007
+    field public static final int EGL_BAD_DISPLAY = 12296; // 0x3008
+    field public static final int EGL_BAD_MATCH = 12297; // 0x3009
+    field public static final int EGL_BAD_NATIVE_PIXMAP = 12298; // 0x300a
+    field public static final int EGL_BAD_NATIVE_WINDOW = 12299; // 0x300b
+    field public static final int EGL_BAD_PARAMETER = 12300; // 0x300c
+    field public static final int EGL_BAD_SURFACE = 12301; // 0x300d
+    field public static final int EGL_BIND_TO_TEXTURE_RGB = 12345; // 0x3039
+    field public static final int EGL_BIND_TO_TEXTURE_RGBA = 12346; // 0x303a
+    field public static final int EGL_BLUE_SIZE = 12322; // 0x3022
+    field public static final int EGL_BUFFER_DESTROYED = 12437; // 0x3095
+    field public static final int EGL_BUFFER_PRESERVED = 12436; // 0x3094
+    field public static final int EGL_BUFFER_SIZE = 12320; // 0x3020
+    field public static final int EGL_CLIENT_APIS = 12429; // 0x308d
+    field public static final int EGL_COLOR_BUFFER_TYPE = 12351; // 0x303f
+    field public static final int EGL_CONFIG_CAVEAT = 12327; // 0x3027
+    field public static final int EGL_CONFIG_ID = 12328; // 0x3028
+    field public static final int EGL_CONFORMANT = 12354; // 0x3042
+    field public static final int EGL_CONTEXT_CLIENT_TYPE = 12439; // 0x3097
+    field public static final int EGL_CONTEXT_CLIENT_VERSION = 12440; // 0x3098
+    field public static final int EGL_CONTEXT_LOST = 12302; // 0x300e
+    field public static final int EGL_CORE_NATIVE_ENGINE = 12379; // 0x305b
+    field public static final int EGL_DEFAULT_DISPLAY = 0; // 0x0
+    field public static final int EGL_DEPTH_SIZE = 12325; // 0x3025
+    field public static final int EGL_DISPLAY_SCALING = 10000; // 0x2710
+    field public static final int EGL_DRAW = 12377; // 0x3059
+    field public static final int EGL_EXTENSIONS = 12373; // 0x3055
+    field public static final int EGL_FALSE = 0; // 0x0
+    field public static final int EGL_GREEN_SIZE = 12323; // 0x3023
+    field public static final int EGL_HEIGHT = 12374; // 0x3056
+    field public static final int EGL_HORIZONTAL_RESOLUTION = 12432; // 0x3090
+    field public static final int EGL_LARGEST_PBUFFER = 12376; // 0x3058
+    field public static final int EGL_LEVEL = 12329; // 0x3029
+    field public static final int EGL_LUMINANCE_BUFFER = 12431; // 0x308f
+    field public static final int EGL_LUMINANCE_SIZE = 12349; // 0x303d
+    field public static final int EGL_MATCH_NATIVE_PIXMAP = 12353; // 0x3041
+    field public static final int EGL_MAX_PBUFFER_HEIGHT = 12330; // 0x302a
+    field public static final int EGL_MAX_PBUFFER_PIXELS = 12331; // 0x302b
+    field public static final int EGL_MAX_PBUFFER_WIDTH = 12332; // 0x302c
+    field public static final int EGL_MAX_SWAP_INTERVAL = 12348; // 0x303c
+    field public static final int EGL_MIN_SWAP_INTERVAL = 12347; // 0x303b
+    field public static final int EGL_MIPMAP_LEVEL = 12419; // 0x3083
+    field public static final int EGL_MIPMAP_TEXTURE = 12418; // 0x3082
+    field public static final int EGL_MULTISAMPLE_RESOLVE = 12441; // 0x3099
+    field public static final int EGL_MULTISAMPLE_RESOLVE_BOX = 12443; // 0x309b
+    field public static final int EGL_MULTISAMPLE_RESOLVE_BOX_BIT = 512; // 0x200
+    field public static final int EGL_MULTISAMPLE_RESOLVE_DEFAULT = 12442; // 0x309a
+    field public static final int EGL_NATIVE_RENDERABLE = 12333; // 0x302d
+    field public static final int EGL_NATIVE_VISUAL_ID = 12334; // 0x302e
+    field public static final int EGL_NATIVE_VISUAL_TYPE = 12335; // 0x302f
+    field public static final int EGL_NONE = 12344; // 0x3038
+    field public static final int EGL_NON_CONFORMANT_CONFIG = 12369; // 0x3051
+    field public static final int EGL_NOT_INITIALIZED = 12289; // 0x3001
+    field public static android.opengl.EGLContext EGL_NO_CONTEXT;
+    field public static android.opengl.EGLDisplay EGL_NO_DISPLAY;
+    field public static android.opengl.EGLSurface EGL_NO_SURFACE;
+    field public static final int EGL_NO_TEXTURE = 12380; // 0x305c
+    field public static final int EGL_OPENGL_API = 12450; // 0x30a2
+    field public static final int EGL_OPENGL_BIT = 8; // 0x8
+    field public static final int EGL_OPENGL_ES2_BIT = 4; // 0x4
+    field public static final int EGL_OPENGL_ES_API = 12448; // 0x30a0
+    field public static final int EGL_OPENGL_ES_BIT = 1; // 0x1
+    field public static final int EGL_OPENVG_API = 12449; // 0x30a1
+    field public static final int EGL_OPENVG_BIT = 2; // 0x2
+    field public static final int EGL_OPENVG_IMAGE = 12438; // 0x3096
+    field public static final int EGL_PBUFFER_BIT = 1; // 0x1
+    field public static final int EGL_PIXEL_ASPECT_RATIO = 12434; // 0x3092
+    field public static final int EGL_PIXMAP_BIT = 2; // 0x2
+    field public static final int EGL_READ = 12378; // 0x305a
+    field public static final int EGL_RED_SIZE = 12324; // 0x3024
+    field public static final int EGL_RENDERABLE_TYPE = 12352; // 0x3040
+    field public static final int EGL_RENDER_BUFFER = 12422; // 0x3086
+    field public static final int EGL_RGB_BUFFER = 12430; // 0x308e
+    field public static final int EGL_SAMPLES = 12337; // 0x3031
+    field public static final int EGL_SAMPLE_BUFFERS = 12338; // 0x3032
+    field public static final int EGL_SINGLE_BUFFER = 12421; // 0x3085
+    field public static final int EGL_SLOW_CONFIG = 12368; // 0x3050
+    field public static final int EGL_STENCIL_SIZE = 12326; // 0x3026
+    field public static final int EGL_SUCCESS = 12288; // 0x3000
+    field public static final int EGL_SURFACE_TYPE = 12339; // 0x3033
+    field public static final int EGL_SWAP_BEHAVIOR = 12435; // 0x3093
+    field public static final int EGL_SWAP_BEHAVIOR_PRESERVED_BIT = 1024; // 0x400
+    field public static final int EGL_TEXTURE_2D = 12383; // 0x305f
+    field public static final int EGL_TEXTURE_FORMAT = 12416; // 0x3080
+    field public static final int EGL_TEXTURE_RGB = 12381; // 0x305d
+    field public static final int EGL_TEXTURE_RGBA = 12382; // 0x305e
+    field public static final int EGL_TEXTURE_TARGET = 12417; // 0x3081
+    field public static final int EGL_TRANSPARENT_BLUE_VALUE = 12341; // 0x3035
+    field public static final int EGL_TRANSPARENT_GREEN_VALUE = 12342; // 0x3036
+    field public static final int EGL_TRANSPARENT_RED_VALUE = 12343; // 0x3037
+    field public static final int EGL_TRANSPARENT_RGB = 12370; // 0x3052
+    field public static final int EGL_TRANSPARENT_TYPE = 12340; // 0x3034
+    field public static final int EGL_TRUE = 1; // 0x1
+    field public static final int EGL_VENDOR = 12371; // 0x3053
+    field public static final int EGL_VERSION = 12372; // 0x3054
+    field public static final int EGL_VERTICAL_RESOLUTION = 12433; // 0x3091
+    field public static final int EGL_VG_ALPHA_FORMAT = 12424; // 0x3088
+    field public static final int EGL_VG_ALPHA_FORMAT_NONPRE = 12427; // 0x308b
+    field public static final int EGL_VG_ALPHA_FORMAT_PRE = 12428; // 0x308c
+    field public static final int EGL_VG_ALPHA_FORMAT_PRE_BIT = 64; // 0x40
+    field public static final int EGL_VG_COLORSPACE = 12423; // 0x3087
+    field public static final int EGL_VG_COLORSPACE_LINEAR = 12426; // 0x308a
+    field public static final int EGL_VG_COLORSPACE_LINEAR_BIT = 32; // 0x20
+    field public static final int EGL_VG_COLORSPACE_sRGB = 12425; // 0x3089
+    field public static final int EGL_WIDTH = 12375; // 0x3057
+    field public static final int EGL_WINDOW_BIT = 4; // 0x4
+  }
+
+  public final class EGL15 {
+    method public static int eglClientWaitSync(android.opengl.EGLDisplay, android.opengl.EGLSync, int, long);
+    method public static android.opengl.EGLImage eglCreateImage(android.opengl.EGLDisplay, android.opengl.EGLContext, int, long, long[], int);
+    method public static android.opengl.EGLSurface eglCreatePlatformPixmapSurface(android.opengl.EGLDisplay, android.opengl.EGLConfig, java.nio.Buffer, long[], int);
+    method public static android.opengl.EGLSurface eglCreatePlatformWindowSurface(android.opengl.EGLDisplay, android.opengl.EGLConfig, java.nio.Buffer, long[], int);
+    method public static android.opengl.EGLSync eglCreateSync(android.opengl.EGLDisplay, int, long[], int);
+    method public static boolean eglDestroyImage(android.opengl.EGLDisplay, android.opengl.EGLImage);
+    method public static boolean eglDestroySync(android.opengl.EGLDisplay, android.opengl.EGLSync);
+    method public static android.opengl.EGLDisplay eglGetPlatformDisplay(int, long, long[], int);
+    method public static boolean eglGetSyncAttrib(android.opengl.EGLDisplay, android.opengl.EGLSync, int, long[], int);
+    method public static boolean eglWaitSync(android.opengl.EGLDisplay, android.opengl.EGLSync, int);
+    field public static final int EGL_CL_EVENT_HANDLE = 12444; // 0x309c
+    field public static final int EGL_CONDITION_SATISFIED = 12534; // 0x30f6
+    field public static final int EGL_CONTEXT_MAJOR_VERSION = 12440; // 0x3098
+    field public static final int EGL_CONTEXT_MINOR_VERSION = 12539; // 0x30fb
+    field public static final int EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT = 2; // 0x2
+    field public static final int EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT = 1; // 0x1
+    field public static final int EGL_CONTEXT_OPENGL_DEBUG = 12720; // 0x31b0
+    field public static final int EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE = 12721; // 0x31b1
+    field public static final int EGL_CONTEXT_OPENGL_PROFILE_MASK = 12541; // 0x30fd
+    field public static final int EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY = 12733; // 0x31bd
+    field public static final int EGL_CONTEXT_OPENGL_ROBUST_ACCESS = 12722; // 0x31b2
+    field public static final long EGL_FOREVER = -1L; // 0xffffffffffffffffL
+    field public static final int EGL_GL_COLORSPACE = 12445; // 0x309d
+    field public static final int EGL_GL_COLORSPACE_LINEAR = 12426; // 0x308a
+    field public static final int EGL_GL_COLORSPACE_SRGB = 12425; // 0x3089
+    field public static final int EGL_GL_RENDERBUFFER = 12473; // 0x30b9
+    field public static final int EGL_GL_TEXTURE_2D = 12465; // 0x30b1
+    field public static final int EGL_GL_TEXTURE_3D = 12466; // 0x30b2
+    field public static final int EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 12468; // 0x30b4
+    field public static final int EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 12470; // 0x30b6
+    field public static final int EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 12472; // 0x30b8
+    field public static final int EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X = 12467; // 0x30b3
+    field public static final int EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 12469; // 0x30b5
+    field public static final int EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 12471; // 0x30b7
+    field public static final int EGL_GL_TEXTURE_LEVEL = 12476; // 0x30bc
+    field public static final int EGL_GL_TEXTURE_ZOFFSET = 12477; // 0x30bd
+    field public static final int EGL_IMAGE_PRESERVED = 12498; // 0x30d2
+    field public static final int EGL_LOSE_CONTEXT_ON_RESET = 12735; // 0x31bf
+    field public static final android.opengl.EGLContext EGL_NO_CONTEXT;
+    field public static final android.opengl.EGLDisplay EGL_NO_DISPLAY;
+    field public static final android.opengl.EGLImage EGL_NO_IMAGE;
+    field public static final int EGL_NO_RESET_NOTIFICATION = 12734; // 0x31be
+    field public static final android.opengl.EGLSurface EGL_NO_SURFACE;
+    field public static final android.opengl.EGLSync EGL_NO_SYNC;
+    field public static final int EGL_OPENGL_ES3_BIT = 64; // 0x40
+    field public static final int EGL_PLATFORM_ANDROID_KHR = 12609; // 0x3141
+    field public static final int EGL_SIGNALED = 12530; // 0x30f2
+    field public static final int EGL_SYNC_CL_EVENT = 12542; // 0x30fe
+    field public static final int EGL_SYNC_CL_EVENT_COMPLETE = 12543; // 0x30ff
+    field public static final int EGL_SYNC_CONDITION = 12536; // 0x30f8
+    field public static final int EGL_SYNC_FENCE = 12537; // 0x30f9
+    field public static final int EGL_SYNC_FLUSH_COMMANDS_BIT = 1; // 0x1
+    field public static final int EGL_SYNC_PRIOR_COMMANDS_COMPLETE = 12528; // 0x30f0
+    field public static final int EGL_SYNC_STATUS = 12529; // 0x30f1
+    field public static final int EGL_SYNC_TYPE = 12535; // 0x30f7
+    field public static final int EGL_TIMEOUT_EXPIRED = 12533; // 0x30f5
+    field public static final int EGL_UNSIGNALED = 12531; // 0x30f3
+  }
+
+  public class EGLConfig extends android.opengl.EGLObjectHandle {
+  }
+
+  public class EGLContext extends android.opengl.EGLObjectHandle {
+  }
+
+  public class EGLDisplay extends android.opengl.EGLObjectHandle {
+  }
+
+  public class EGLExt {
+    ctor public EGLExt();
+    method public static boolean eglPresentationTimeANDROID(android.opengl.EGLDisplay, android.opengl.EGLSurface, long);
+    field public static final int EGL_CONTEXT_FLAGS_KHR = 12540; // 0x30fc
+    field public static final int EGL_CONTEXT_MAJOR_VERSION_KHR = 12440; // 0x3098
+    field public static final int EGL_CONTEXT_MINOR_VERSION_KHR = 12539; // 0x30fb
+    field public static final int EGL_OPENGL_ES3_BIT_KHR = 64; // 0x40
+    field public static final int EGL_RECORDABLE_ANDROID = 12610; // 0x3142
+  }
+
+  public class EGLImage extends android.opengl.EGLObjectHandle {
+  }
+
+  public abstract class EGLObjectHandle {
+    ctor @Deprecated protected EGLObjectHandle(int);
+    ctor protected EGLObjectHandle(long);
+    method @Deprecated public int getHandle();
+    method public long getNativeHandle();
+  }
+
+  public class EGLSurface extends android.opengl.EGLObjectHandle {
+  }
+
+  public class EGLSync extends android.opengl.EGLObjectHandle {
+  }
+
+  public class ETC1 {
+    ctor public ETC1();
+    method public static void decodeBlock(java.nio.Buffer, java.nio.Buffer);
+    method public static void decodeImage(java.nio.Buffer, java.nio.Buffer, int, int, int, int);
+    method public static void encodeBlock(java.nio.Buffer, int, java.nio.Buffer);
+    method public static void encodeImage(java.nio.Buffer, int, int, int, int, java.nio.Buffer);
+    method public static void formatHeader(java.nio.Buffer, int, int);
+    method public static int getEncodedDataSize(int, int);
+    method public static int getHeight(java.nio.Buffer);
+    method public static int getWidth(java.nio.Buffer);
+    method public static boolean isValid(java.nio.Buffer);
+    field public static final int DECODED_BLOCK_SIZE = 48; // 0x30
+    field public static final int ENCODED_BLOCK_SIZE = 8; // 0x8
+    field public static final int ETC1_RGB8_OES = 36196; // 0x8d64
+    field public static final int ETC_PKM_HEADER_SIZE = 16; // 0x10
+  }
+
+  public class ETC1Util {
+    ctor public ETC1Util();
+    method public static android.opengl.ETC1Util.ETC1Texture compressTexture(java.nio.Buffer, int, int, int, int);
+    method public static android.opengl.ETC1Util.ETC1Texture createTexture(java.io.InputStream) throws java.io.IOException;
+    method public static boolean isETC1Supported();
+    method public static void loadTexture(int, int, int, int, int, java.io.InputStream) throws java.io.IOException;
+    method public static void loadTexture(int, int, int, int, int, android.opengl.ETC1Util.ETC1Texture);
+    method public static void writeTexture(android.opengl.ETC1Util.ETC1Texture, java.io.OutputStream) throws java.io.IOException;
+  }
+
+  public static class ETC1Util.ETC1Texture {
+    ctor public ETC1Util.ETC1Texture(int, int, java.nio.ByteBuffer);
+    method public java.nio.ByteBuffer getData();
+    method public int getHeight();
+    method public int getWidth();
+  }
+
+  public class GLDebugHelper {
+    ctor public GLDebugHelper();
+    method public static javax.microedition.khronos.opengles.GL wrap(javax.microedition.khronos.opengles.GL, int, java.io.Writer);
+    method public static javax.microedition.khronos.egl.EGL wrap(javax.microedition.khronos.egl.EGL, int, java.io.Writer);
+    field public static final int CONFIG_CHECK_GL_ERROR = 1; // 0x1
+    field public static final int CONFIG_CHECK_THREAD = 2; // 0x2
+    field public static final int CONFIG_LOG_ARGUMENT_NAMES = 4; // 0x4
+    field public static final int ERROR_WRONG_THREAD = 28672; // 0x7000
+  }
+
+  public class GLES10 {
+    ctor public GLES10();
+    method public static void glActiveTexture(int);
+    method public static void glAlphaFunc(int, float);
+    method public static void glAlphaFuncx(int, int);
+    method public static void glBindTexture(int, int);
+    method public static void glBlendFunc(int, int);
+    method public static void glClear(int);
+    method public static void glClearColor(float, float, float, float);
+    method public static void glClearColorx(int, int, int, int);
+    method public static void glClearDepthf(float);
+    method public static void glClearDepthx(int);
+    method public static void glClearStencil(int);
+    method public static void glClientActiveTexture(int);
+    method public static void glColor4f(float, float, float, float);
+    method public static void glColor4x(int, int, int, int);
+    method public static void glColorMask(boolean, boolean, boolean, boolean);
+    method public static void glColorPointer(int, int, int, java.nio.Buffer);
+    method public static void glCompressedTexImage2D(int, int, int, int, int, int, int, java.nio.Buffer);
+    method public static void glCompressedTexSubImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
+    method public static void glCopyTexImage2D(int, int, int, int, int, int, int, int);
+    method public static void glCopyTexSubImage2D(int, int, int, int, int, int, int, int);
+    method public static void glCullFace(int);
+    method public static void glDeleteTextures(int, int[], int);
+    method public static void glDeleteTextures(int, java.nio.IntBuffer);
+    method public static void glDepthFunc(int);
+    method public static void glDepthMask(boolean);
+    method public static void glDepthRangef(float, float);
+    method public static void glDepthRangex(int, int);
+    method public static void glDisable(int);
+    method public static void glDisableClientState(int);
+    method public static void glDrawArrays(int, int, int);
+    method public static void glDrawElements(int, int, int, java.nio.Buffer);
+    method public static void glEnable(int);
+    method public static void glEnableClientState(int);
+    method public static void glFinish();
+    method public static void glFlush();
+    method public static void glFogf(int, float);
+    method public static void glFogfv(int, float[], int);
+    method public static void glFogfv(int, java.nio.FloatBuffer);
+    method public static void glFogx(int, int);
+    method public static void glFogxv(int, int[], int);
+    method public static void glFogxv(int, java.nio.IntBuffer);
+    method public static void glFrontFace(int);
+    method public static void glFrustumf(float, float, float, float, float, float);
+    method public static void glFrustumx(int, int, int, int, int, int);
+    method public static void glGenTextures(int, int[], int);
+    method public static void glGenTextures(int, java.nio.IntBuffer);
+    method public static int glGetError();
+    method public static void glGetIntegerv(int, int[], int);
+    method public static void glGetIntegerv(int, java.nio.IntBuffer);
+    method public static String glGetString(int);
+    method public static void glHint(int, int);
+    method public static void glLightModelf(int, float);
+    method public static void glLightModelfv(int, float[], int);
+    method public static void glLightModelfv(int, java.nio.FloatBuffer);
+    method public static void glLightModelx(int, int);
+    method public static void glLightModelxv(int, int[], int);
+    method public static void glLightModelxv(int, java.nio.IntBuffer);
+    method public static void glLightf(int, int, float);
+    method public static void glLightfv(int, int, float[], int);
+    method public static void glLightfv(int, int, java.nio.FloatBuffer);
+    method public static void glLightx(int, int, int);
+    method public static void glLightxv(int, int, int[], int);
+    method public static void glLightxv(int, int, java.nio.IntBuffer);
+    method public static void glLineWidth(float);
+    method public static void glLineWidthx(int);
+    method public static void glLoadIdentity();
+    method public static void glLoadMatrixf(float[], int);
+    method public static void glLoadMatrixf(java.nio.FloatBuffer);
+    method public static void glLoadMatrixx(int[], int);
+    method public static void glLoadMatrixx(java.nio.IntBuffer);
+    method public static void glLogicOp(int);
+    method public static void glMaterialf(int, int, float);
+    method public static void glMaterialfv(int, int, float[], int);
+    method public static void glMaterialfv(int, int, java.nio.FloatBuffer);
+    method public static void glMaterialx(int, int, int);
+    method public static void glMaterialxv(int, int, int[], int);
+    method public static void glMaterialxv(int, int, java.nio.IntBuffer);
+    method public static void glMatrixMode(int);
+    method public static void glMultMatrixf(float[], int);
+    method public static void glMultMatrixf(java.nio.FloatBuffer);
+    method public static void glMultMatrixx(int[], int);
+    method public static void glMultMatrixx(java.nio.IntBuffer);
+    method public static void glMultiTexCoord4f(int, float, float, float, float);
+    method public static void glMultiTexCoord4x(int, int, int, int, int);
+    method public static void glNormal3f(float, float, float);
+    method public static void glNormal3x(int, int, int);
+    method public static void glNormalPointer(int, int, java.nio.Buffer);
+    method public static void glOrthof(float, float, float, float, float, float);
+    method public static void glOrthox(int, int, int, int, int, int);
+    method public static void glPixelStorei(int, int);
+    method public static void glPointSize(float);
+    method public static void glPointSizex(int);
+    method public static void glPolygonOffset(float, float);
+    method public static void glPolygonOffsetx(int, int);
+    method public static void glPopMatrix();
+    method public static void glPushMatrix();
+    method public static void glReadPixels(int, int, int, int, int, int, java.nio.Buffer);
+    method public static void glRotatef(float, float, float, float);
+    method public static void glRotatex(int, int, int, int);
+    method public static void glSampleCoverage(float, boolean);
+    method public static void glSampleCoveragex(int, boolean);
+    method public static void glScalef(float, float, float);
+    method public static void glScalex(int, int, int);
+    method public static void glScissor(int, int, int, int);
+    method public static void glShadeModel(int);
+    method public static void glStencilFunc(int, int, int);
+    method public static void glStencilMask(int);
+    method public static void glStencilOp(int, int, int);
+    method public static void glTexCoordPointer(int, int, int, java.nio.Buffer);
+    method public static void glTexEnvf(int, int, float);
+    method public static void glTexEnvfv(int, int, float[], int);
+    method public static void glTexEnvfv(int, int, java.nio.FloatBuffer);
+    method public static void glTexEnvx(int, int, int);
+    method public static void glTexEnvxv(int, int, int[], int);
+    method public static void glTexEnvxv(int, int, java.nio.IntBuffer);
+    method public static void glTexImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
+    method public static void glTexParameterf(int, int, float);
+    method public static void glTexParameterx(int, int, int);
+    method public static void glTexSubImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
+    method public static void glTranslatef(float, float, float);
+    method public static void glTranslatex(int, int, int);
+    method public static void glVertexPointer(int, int, int, java.nio.Buffer);
+    method public static void glViewport(int, int, int, int);
+    field public static final int GL_ADD = 260; // 0x104
+    field public static final int GL_ALIASED_LINE_WIDTH_RANGE = 33902; // 0x846e
+    field public static final int GL_ALIASED_POINT_SIZE_RANGE = 33901; // 0x846d
+    field public static final int GL_ALPHA = 6406; // 0x1906
+    field public static final int GL_ALPHA_BITS = 3413; // 0xd55
+    field public static final int GL_ALPHA_TEST = 3008; // 0xbc0
+    field public static final int GL_ALWAYS = 519; // 0x207
+    field public static final int GL_AMBIENT = 4608; // 0x1200
+    field public static final int GL_AMBIENT_AND_DIFFUSE = 5634; // 0x1602
+    field public static final int GL_AND = 5377; // 0x1501
+    field public static final int GL_AND_INVERTED = 5380; // 0x1504
+    field public static final int GL_AND_REVERSE = 5378; // 0x1502
+    field public static final int GL_BACK = 1029; // 0x405
+    field public static final int GL_BLEND = 3042; // 0xbe2
+    field public static final int GL_BLUE_BITS = 3412; // 0xd54
+    field public static final int GL_BYTE = 5120; // 0x1400
+    field public static final int GL_CCW = 2305; // 0x901
+    field public static final int GL_CLAMP_TO_EDGE = 33071; // 0x812f
+    field public static final int GL_CLEAR = 5376; // 0x1500
+    field public static final int GL_COLOR_ARRAY = 32886; // 0x8076
+    field public static final int GL_COLOR_BUFFER_BIT = 16384; // 0x4000
+    field public static final int GL_COLOR_LOGIC_OP = 3058; // 0xbf2
+    field public static final int GL_COLOR_MATERIAL = 2903; // 0xb57
+    field public static final int GL_COMPRESSED_TEXTURE_FORMATS = 34467; // 0x86a3
+    field public static final int GL_CONSTANT_ATTENUATION = 4615; // 0x1207
+    field public static final int GL_COPY = 5379; // 0x1503
+    field public static final int GL_COPY_INVERTED = 5388; // 0x150c
+    field public static final int GL_CULL_FACE = 2884; // 0xb44
+    field public static final int GL_CW = 2304; // 0x900
+    field public static final int GL_DECAL = 8449; // 0x2101
+    field public static final int GL_DECR = 7683; // 0x1e03
+    field public static final int GL_DEPTH_BITS = 3414; // 0xd56
+    field public static final int GL_DEPTH_BUFFER_BIT = 256; // 0x100
+    field public static final int GL_DEPTH_TEST = 2929; // 0xb71
+    field public static final int GL_DIFFUSE = 4609; // 0x1201
+    field public static final int GL_DITHER = 3024; // 0xbd0
+    field public static final int GL_DONT_CARE = 4352; // 0x1100
+    field public static final int GL_DST_ALPHA = 772; // 0x304
+    field public static final int GL_DST_COLOR = 774; // 0x306
+    field public static final int GL_EMISSION = 5632; // 0x1600
+    field public static final int GL_EQUAL = 514; // 0x202
+    field public static final int GL_EQUIV = 5385; // 0x1509
+    field public static final int GL_EXP = 2048; // 0x800
+    field public static final int GL_EXP2 = 2049; // 0x801
+    field public static final int GL_EXTENSIONS = 7939; // 0x1f03
+    field public static final int GL_FALSE = 0; // 0x0
+    field public static final int GL_FASTEST = 4353; // 0x1101
+    field public static final int GL_FIXED = 5132; // 0x140c
+    field public static final int GL_FLAT = 7424; // 0x1d00
+    field public static final int GL_FLOAT = 5126; // 0x1406
+    field public static final int GL_FOG = 2912; // 0xb60
+    field public static final int GL_FOG_COLOR = 2918; // 0xb66
+    field public static final int GL_FOG_DENSITY = 2914; // 0xb62
+    field public static final int GL_FOG_END = 2916; // 0xb64
+    field public static final int GL_FOG_HINT = 3156; // 0xc54
+    field public static final int GL_FOG_MODE = 2917; // 0xb65
+    field public static final int GL_FOG_START = 2915; // 0xb63
+    field public static final int GL_FRONT = 1028; // 0x404
+    field public static final int GL_FRONT_AND_BACK = 1032; // 0x408
+    field public static final int GL_GEQUAL = 518; // 0x206
+    field public static final int GL_GREATER = 516; // 0x204
+    field public static final int GL_GREEN_BITS = 3411; // 0xd53
+    field public static final int GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES = 35739; // 0x8b9b
+    field public static final int GL_IMPLEMENTATION_COLOR_READ_TYPE_OES = 35738; // 0x8b9a
+    field public static final int GL_INCR = 7682; // 0x1e02
+    field public static final int GL_INVALID_ENUM = 1280; // 0x500
+    field public static final int GL_INVALID_OPERATION = 1282; // 0x502
+    field public static final int GL_INVALID_VALUE = 1281; // 0x501
+    field public static final int GL_INVERT = 5386; // 0x150a
+    field public static final int GL_KEEP = 7680; // 0x1e00
+    field public static final int GL_LEQUAL = 515; // 0x203
+    field public static final int GL_LESS = 513; // 0x201
+    field public static final int GL_LIGHT0 = 16384; // 0x4000
+    field public static final int GL_LIGHT1 = 16385; // 0x4001
+    field public static final int GL_LIGHT2 = 16386; // 0x4002
+    field public static final int GL_LIGHT3 = 16387; // 0x4003
+    field public static final int GL_LIGHT4 = 16388; // 0x4004
+    field public static final int GL_LIGHT5 = 16389; // 0x4005
+    field public static final int GL_LIGHT6 = 16390; // 0x4006
+    field public static final int GL_LIGHT7 = 16391; // 0x4007
+    field public static final int GL_LIGHTING = 2896; // 0xb50
+    field public static final int GL_LIGHT_MODEL_AMBIENT = 2899; // 0xb53
+    field public static final int GL_LIGHT_MODEL_TWO_SIDE = 2898; // 0xb52
+    field public static final int GL_LINEAR = 9729; // 0x2601
+    field public static final int GL_LINEAR_ATTENUATION = 4616; // 0x1208
+    field public static final int GL_LINEAR_MIPMAP_LINEAR = 9987; // 0x2703
+    field public static final int GL_LINEAR_MIPMAP_NEAREST = 9985; // 0x2701
+    field public static final int GL_LINES = 1; // 0x1
+    field public static final int GL_LINE_LOOP = 2; // 0x2
+    field public static final int GL_LINE_SMOOTH = 2848; // 0xb20
+    field public static final int GL_LINE_SMOOTH_HINT = 3154; // 0xc52
+    field public static final int GL_LINE_STRIP = 3; // 0x3
+    field public static final int GL_LUMINANCE = 6409; // 0x1909
+    field public static final int GL_LUMINANCE_ALPHA = 6410; // 0x190a
+    field public static final int GL_MAX_ELEMENTS_INDICES = 33001; // 0x80e9
+    field public static final int GL_MAX_ELEMENTS_VERTICES = 33000; // 0x80e8
+    field public static final int GL_MAX_LIGHTS = 3377; // 0xd31
+    field public static final int GL_MAX_MODELVIEW_STACK_DEPTH = 3382; // 0xd36
+    field public static final int GL_MAX_PROJECTION_STACK_DEPTH = 3384; // 0xd38
+    field public static final int GL_MAX_TEXTURE_SIZE = 3379; // 0xd33
+    field public static final int GL_MAX_TEXTURE_STACK_DEPTH = 3385; // 0xd39
+    field public static final int GL_MAX_TEXTURE_UNITS = 34018; // 0x84e2
+    field public static final int GL_MAX_VIEWPORT_DIMS = 3386; // 0xd3a
+    field public static final int GL_MODELVIEW = 5888; // 0x1700
+    field public static final int GL_MODULATE = 8448; // 0x2100
+    field public static final int GL_MULTISAMPLE = 32925; // 0x809d
+    field public static final int GL_NAND = 5390; // 0x150e
+    field public static final int GL_NEAREST = 9728; // 0x2600
+    field public static final int GL_NEAREST_MIPMAP_LINEAR = 9986; // 0x2702
+    field public static final int GL_NEAREST_MIPMAP_NEAREST = 9984; // 0x2700
+    field public static final int GL_NEVER = 512; // 0x200
+    field public static final int GL_NICEST = 4354; // 0x1102
+    field public static final int GL_NOOP = 5381; // 0x1505
+    field public static final int GL_NOR = 5384; // 0x1508
+    field public static final int GL_NORMALIZE = 2977; // 0xba1
+    field public static final int GL_NORMAL_ARRAY = 32885; // 0x8075
+    field public static final int GL_NOTEQUAL = 517; // 0x205
+    field public static final int GL_NO_ERROR = 0; // 0x0
+    field public static final int GL_NUM_COMPRESSED_TEXTURE_FORMATS = 34466; // 0x86a2
+    field public static final int GL_ONE = 1; // 0x1
+    field public static final int GL_ONE_MINUS_DST_ALPHA = 773; // 0x305
+    field public static final int GL_ONE_MINUS_DST_COLOR = 775; // 0x307
+    field public static final int GL_ONE_MINUS_SRC_ALPHA = 771; // 0x303
+    field public static final int GL_ONE_MINUS_SRC_COLOR = 769; // 0x301
+    field public static final int GL_OR = 5383; // 0x1507
+    field public static final int GL_OR_INVERTED = 5389; // 0x150d
+    field public static final int GL_OR_REVERSE = 5387; // 0x150b
+    field public static final int GL_OUT_OF_MEMORY = 1285; // 0x505
+    field public static final int GL_PACK_ALIGNMENT = 3333; // 0xd05
+    field public static final int GL_PALETTE4_R5_G6_B5_OES = 35730; // 0x8b92
+    field public static final int GL_PALETTE4_RGB5_A1_OES = 35732; // 0x8b94
+    field public static final int GL_PALETTE4_RGB8_OES = 35728; // 0x8b90
+    field public static final int GL_PALETTE4_RGBA4_OES = 35731; // 0x8b93
+    field public static final int GL_PALETTE4_RGBA8_OES = 35729; // 0x8b91
+    field public static final int GL_PALETTE8_R5_G6_B5_OES = 35735; // 0x8b97
+    field public static final int GL_PALETTE8_RGB5_A1_OES = 35737; // 0x8b99
+    field public static final int GL_PALETTE8_RGB8_OES = 35733; // 0x8b95
+    field public static final int GL_PALETTE8_RGBA4_OES = 35736; // 0x8b98
+    field public static final int GL_PALETTE8_RGBA8_OES = 35734; // 0x8b96
+    field public static final int GL_PERSPECTIVE_CORRECTION_HINT = 3152; // 0xc50
+    field public static final int GL_POINTS = 0; // 0x0
+    field public static final int GL_POINT_FADE_THRESHOLD_SIZE = 33064; // 0x8128
+    field public static final int GL_POINT_SIZE = 2833; // 0xb11
+    field public static final int GL_POINT_SMOOTH = 2832; // 0xb10
+    field public static final int GL_POINT_SMOOTH_HINT = 3153; // 0xc51
+    field public static final int GL_POLYGON_OFFSET_FILL = 32823; // 0x8037
+    field public static final int GL_POLYGON_SMOOTH_HINT = 3155; // 0xc53
+    field public static final int GL_POSITION = 4611; // 0x1203
+    field public static final int GL_PROJECTION = 5889; // 0x1701
+    field public static final int GL_QUADRATIC_ATTENUATION = 4617; // 0x1209
+    field public static final int GL_RED_BITS = 3410; // 0xd52
+    field public static final int GL_RENDERER = 7937; // 0x1f01
+    field public static final int GL_REPEAT = 10497; // 0x2901
+    field public static final int GL_REPLACE = 7681; // 0x1e01
+    field public static final int GL_RESCALE_NORMAL = 32826; // 0x803a
+    field public static final int GL_RGB = 6407; // 0x1907
+    field public static final int GL_RGBA = 6408; // 0x1908
+    field public static final int GL_SAMPLE_ALPHA_TO_COVERAGE = 32926; // 0x809e
+    field public static final int GL_SAMPLE_ALPHA_TO_ONE = 32927; // 0x809f
+    field public static final int GL_SAMPLE_COVERAGE = 32928; // 0x80a0
+    field public static final int GL_SCISSOR_TEST = 3089; // 0xc11
+    field public static final int GL_SET = 5391; // 0x150f
+    field public static final int GL_SHININESS = 5633; // 0x1601
+    field public static final int GL_SHORT = 5122; // 0x1402
+    field public static final int GL_SMOOTH = 7425; // 0x1d01
+    field public static final int GL_SMOOTH_LINE_WIDTH_RANGE = 2850; // 0xb22
+    field public static final int GL_SMOOTH_POINT_SIZE_RANGE = 2834; // 0xb12
+    field public static final int GL_SPECULAR = 4610; // 0x1202
+    field public static final int GL_SPOT_CUTOFF = 4614; // 0x1206
+    field public static final int GL_SPOT_DIRECTION = 4612; // 0x1204
+    field public static final int GL_SPOT_EXPONENT = 4613; // 0x1205
+    field public static final int GL_SRC_ALPHA = 770; // 0x302
+    field public static final int GL_SRC_ALPHA_SATURATE = 776; // 0x308
+    field public static final int GL_SRC_COLOR = 768; // 0x300
+    field public static final int GL_STACK_OVERFLOW = 1283; // 0x503
+    field public static final int GL_STACK_UNDERFLOW = 1284; // 0x504
+    field public static final int GL_STENCIL_BITS = 3415; // 0xd57
+    field public static final int GL_STENCIL_BUFFER_BIT = 1024; // 0x400
+    field public static final int GL_STENCIL_TEST = 2960; // 0xb90
+    field public static final int GL_SUBPIXEL_BITS = 3408; // 0xd50
+    field public static final int GL_TEXTURE = 5890; // 0x1702
+    field public static final int GL_TEXTURE0 = 33984; // 0x84c0
+    field public static final int GL_TEXTURE1 = 33985; // 0x84c1
+    field public static final int GL_TEXTURE10 = 33994; // 0x84ca
+    field public static final int GL_TEXTURE11 = 33995; // 0x84cb
+    field public static final int GL_TEXTURE12 = 33996; // 0x84cc
+    field public static final int GL_TEXTURE13 = 33997; // 0x84cd
+    field public static final int GL_TEXTURE14 = 33998; // 0x84ce
+    field public static final int GL_TEXTURE15 = 33999; // 0x84cf
+    field public static final int GL_TEXTURE16 = 34000; // 0x84d0
+    field public static final int GL_TEXTURE17 = 34001; // 0x84d1
+    field public static final int GL_TEXTURE18 = 34002; // 0x84d2
+    field public static final int GL_TEXTURE19 = 34003; // 0x84d3
+    field public static final int GL_TEXTURE2 = 33986; // 0x84c2
+    field public static final int GL_TEXTURE20 = 34004; // 0x84d4
+    field public static final int GL_TEXTURE21 = 34005; // 0x84d5
+    field public static final int GL_TEXTURE22 = 34006; // 0x84d6
+    field public static final int GL_TEXTURE23 = 34007; // 0x84d7
+    field public static final int GL_TEXTURE24 = 34008; // 0x84d8
+    field public static final int GL_TEXTURE25 = 34009; // 0x84d9
+    field public static final int GL_TEXTURE26 = 34010; // 0x84da
+    field public static final int GL_TEXTURE27 = 34011; // 0x84db
+    field public static final int GL_TEXTURE28 = 34012; // 0x84dc
+    field public static final int GL_TEXTURE29 = 34013; // 0x84dd
+    field public static final int GL_TEXTURE3 = 33987; // 0x84c3
+    field public static final int GL_TEXTURE30 = 34014; // 0x84de
+    field public static final int GL_TEXTURE31 = 34015; // 0x84df
+    field public static final int GL_TEXTURE4 = 33988; // 0x84c4
+    field public static final int GL_TEXTURE5 = 33989; // 0x84c5
+    field public static final int GL_TEXTURE6 = 33990; // 0x84c6
+    field public static final int GL_TEXTURE7 = 33991; // 0x84c7
+    field public static final int GL_TEXTURE8 = 33992; // 0x84c8
+    field public static final int GL_TEXTURE9 = 33993; // 0x84c9
+    field public static final int GL_TEXTURE_2D = 3553; // 0xde1
+    field public static final int GL_TEXTURE_COORD_ARRAY = 32888; // 0x8078
+    field public static final int GL_TEXTURE_ENV = 8960; // 0x2300
+    field public static final int GL_TEXTURE_ENV_COLOR = 8705; // 0x2201
+    field public static final int GL_TEXTURE_ENV_MODE = 8704; // 0x2200
+    field public static final int GL_TEXTURE_MAG_FILTER = 10240; // 0x2800
+    field public static final int GL_TEXTURE_MIN_FILTER = 10241; // 0x2801
+    field public static final int GL_TEXTURE_WRAP_S = 10242; // 0x2802
+    field public static final int GL_TEXTURE_WRAP_T = 10243; // 0x2803
+    field public static final int GL_TRIANGLES = 4; // 0x4
+    field public static final int GL_TRIANGLE_FAN = 6; // 0x6
+    field public static final int GL_TRIANGLE_STRIP = 5; // 0x5
+    field public static final int GL_TRUE = 1; // 0x1
+    field public static final int GL_UNPACK_ALIGNMENT = 3317; // 0xcf5
+    field public static final int GL_UNSIGNED_BYTE = 5121; // 0x1401
+    field public static final int GL_UNSIGNED_SHORT = 5123; // 0x1403
+    field public static final int GL_UNSIGNED_SHORT_4_4_4_4 = 32819; // 0x8033
+    field public static final int GL_UNSIGNED_SHORT_5_5_5_1 = 32820; // 0x8034
+    field public static final int GL_UNSIGNED_SHORT_5_6_5 = 33635; // 0x8363
+    field public static final int GL_VENDOR = 7936; // 0x1f00
+    field public static final int GL_VERSION = 7938; // 0x1f02
+    field public static final int GL_VERTEX_ARRAY = 32884; // 0x8074
+    field public static final int GL_XOR = 5382; // 0x1506
+    field public static final int GL_ZERO = 0; // 0x0
+  }
+
+  public class GLES10Ext {
+    ctor public GLES10Ext();
+    method public static int glQueryMatrixxOES(int[], int, int[], int);
+    method public static int glQueryMatrixxOES(java.nio.IntBuffer, java.nio.IntBuffer);
+  }
+
+  public class GLES11 extends android.opengl.GLES10 {
+    ctor public GLES11();
+    method public static void glBindBuffer(int, int);
+    method public static void glBufferData(int, int, java.nio.Buffer, int);
+    method public static void glBufferSubData(int, int, int, java.nio.Buffer);
+    method public static void glClipPlanef(int, float[], int);
+    method public static void glClipPlanef(int, java.nio.FloatBuffer);
+    method public static void glClipPlanex(int, int[], int);
+    method public static void glClipPlanex(int, java.nio.IntBuffer);
+    method public static void glColor4ub(byte, byte, byte, byte);
+    method public static void glColorPointer(int, int, int, int);
+    method public static void glDeleteBuffers(int, int[], int);
+    method public static void glDeleteBuffers(int, java.nio.IntBuffer);
+    method public static void glDrawElements(int, int, int, int);
+    method public static void glGenBuffers(int, int[], int);
+    method public static void glGenBuffers(int, java.nio.IntBuffer);
+    method public static void glGetBooleanv(int, boolean[], int);
+    method public static void glGetBooleanv(int, java.nio.IntBuffer);
+    method public static void glGetBufferParameteriv(int, int, int[], int);
+    method public static void glGetBufferParameteriv(int, int, java.nio.IntBuffer);
+    method public static void glGetClipPlanef(int, float[], int);
+    method public static void glGetClipPlanef(int, java.nio.FloatBuffer);
+    method public static void glGetClipPlanex(int, int[], int);
+    method public static void glGetClipPlanex(int, java.nio.IntBuffer);
+    method public static void glGetFixedv(int, int[], int);
+    method public static void glGetFixedv(int, java.nio.IntBuffer);
+    method public static void glGetFloatv(int, float[], int);
+    method public static void glGetFloatv(int, java.nio.FloatBuffer);
+    method public static void glGetLightfv(int, int, float[], int);
+    method public static void glGetLightfv(int, int, java.nio.FloatBuffer);
+    method public static void glGetLightxv(int, int, int[], int);
+    method public static void glGetLightxv(int, int, java.nio.IntBuffer);
+    method public static void glGetMaterialfv(int, int, float[], int);
+    method public static void glGetMaterialfv(int, int, java.nio.FloatBuffer);
+    method public static void glGetMaterialxv(int, int, int[], int);
+    method public static void glGetMaterialxv(int, int, java.nio.IntBuffer);
+    method public static void glGetTexEnvfv(int, int, float[], int);
+    method public static void glGetTexEnvfv(int, int, java.nio.FloatBuffer);
+    method public static void glGetTexEnviv(int, int, int[], int);
+    method public static void glGetTexEnviv(int, int, java.nio.IntBuffer);
+    method public static void glGetTexEnvxv(int, int, int[], int);
+    method public static void glGetTexEnvxv(int, int, java.nio.IntBuffer);
+    method public static void glGetTexParameterfv(int, int, float[], int);
+    method public static void glGetTexParameterfv(int, int, java.nio.FloatBuffer);
+    method public static void glGetTexParameteriv(int, int, int[], int);
+    method public static void glGetTexParameteriv(int, int, java.nio.IntBuffer);
+    method public static void glGetTexParameterxv(int, int, int[], int);
+    method public static void glGetTexParameterxv(int, int, java.nio.IntBuffer);
+    method public static boolean glIsBuffer(int);
+    method public static boolean glIsEnabled(int);
+    method public static boolean glIsTexture(int);
+    method public static void glNormalPointer(int, int, int);
+    method public static void glPointParameterf(int, float);
+    method public static void glPointParameterfv(int, float[], int);
+    method public static void glPointParameterfv(int, java.nio.FloatBuffer);
+    method public static void glPointParameterx(int, int);
+    method public static void glPointParameterxv(int, int[], int);
+    method public static void glPointParameterxv(int, java.nio.IntBuffer);
+    method public static void glPointSizePointerOES(int, int, java.nio.Buffer);
+    method public static void glTexCoordPointer(int, int, int, int);
+    method public static void glTexEnvi(int, int, int);
+    method public static void glTexEnviv(int, int, int[], int);
+    method public static void glTexEnviv(int, int, java.nio.IntBuffer);
+    method public static void glTexParameterfv(int, int, float[], int);
+    method public static void glTexParameterfv(int, int, java.nio.FloatBuffer);
+    method public static void glTexParameteri(int, int, int);
+    method public static void glTexParameteriv(int, int, int[], int);
+    method public static void glTexParameteriv(int, int, java.nio.IntBuffer);
+    method public static void glTexParameterxv(int, int, int[], int);
+    method public static void glTexParameterxv(int, int, java.nio.IntBuffer);
+    method public static void glVertexPointer(int, int, int, int);
+    field public static final int GL_ACTIVE_TEXTURE = 34016; // 0x84e0
+    field public static final int GL_ADD_SIGNED = 34164; // 0x8574
+    field public static final int GL_ALPHA_SCALE = 3356; // 0xd1c
+    field public static final int GL_ALPHA_TEST_FUNC = 3009; // 0xbc1
+    field public static final int GL_ALPHA_TEST_REF = 3010; // 0xbc2
+    field public static final int GL_ARRAY_BUFFER = 34962; // 0x8892
+    field public static final int GL_ARRAY_BUFFER_BINDING = 34964; // 0x8894
+    field public static final int GL_BLEND_DST = 3040; // 0xbe0
+    field public static final int GL_BLEND_SRC = 3041; // 0xbe1
+    field public static final int GL_BUFFER_ACCESS = 35003; // 0x88bb
+    field public static final int GL_BUFFER_SIZE = 34660; // 0x8764
+    field public static final int GL_BUFFER_USAGE = 34661; // 0x8765
+    field public static final int GL_CLIENT_ACTIVE_TEXTURE = 34017; // 0x84e1
+    field public static final int GL_CLIP_PLANE0 = 12288; // 0x3000
+    field public static final int GL_CLIP_PLANE1 = 12289; // 0x3001
+    field public static final int GL_CLIP_PLANE2 = 12290; // 0x3002
+    field public static final int GL_CLIP_PLANE3 = 12291; // 0x3003
+    field public static final int GL_CLIP_PLANE4 = 12292; // 0x3004
+    field public static final int GL_CLIP_PLANE5 = 12293; // 0x3005
+    field public static final int GL_COLOR_ARRAY_BUFFER_BINDING = 34968; // 0x8898
+    field public static final int GL_COLOR_ARRAY_POINTER = 32912; // 0x8090
+    field public static final int GL_COLOR_ARRAY_SIZE = 32897; // 0x8081
+    field public static final int GL_COLOR_ARRAY_STRIDE = 32899; // 0x8083
+    field public static final int GL_COLOR_ARRAY_TYPE = 32898; // 0x8082
+    field public static final int GL_COLOR_CLEAR_VALUE = 3106; // 0xc22
+    field public static final int GL_COLOR_WRITEMASK = 3107; // 0xc23
+    field public static final int GL_COMBINE = 34160; // 0x8570
+    field public static final int GL_COMBINE_ALPHA = 34162; // 0x8572
+    field public static final int GL_COMBINE_RGB = 34161; // 0x8571
+    field public static final int GL_CONSTANT = 34166; // 0x8576
+    field public static final int GL_COORD_REPLACE_OES = 34914; // 0x8862
+    field public static final int GL_CULL_FACE_MODE = 2885; // 0xb45
+    field public static final int GL_CURRENT_COLOR = 2816; // 0xb00
+    field public static final int GL_CURRENT_NORMAL = 2818; // 0xb02
+    field public static final int GL_CURRENT_TEXTURE_COORDS = 2819; // 0xb03
+    field public static final int GL_DEPTH_CLEAR_VALUE = 2931; // 0xb73
+    field public static final int GL_DEPTH_FUNC = 2932; // 0xb74
+    field public static final int GL_DEPTH_RANGE = 2928; // 0xb70
+    field public static final int GL_DEPTH_WRITEMASK = 2930; // 0xb72
+    field public static final int GL_DOT3_RGB = 34478; // 0x86ae
+    field public static final int GL_DOT3_RGBA = 34479; // 0x86af
+    field public static final int GL_DYNAMIC_DRAW = 35048; // 0x88e8
+    field public static final int GL_ELEMENT_ARRAY_BUFFER = 34963; // 0x8893
+    field public static final int GL_ELEMENT_ARRAY_BUFFER_BINDING = 34965; // 0x8895
+    field public static final int GL_FRONT_FACE = 2886; // 0xb46
+    field public static final int GL_GENERATE_MIPMAP = 33169; // 0x8191
+    field public static final int GL_GENERATE_MIPMAP_HINT = 33170; // 0x8192
+    field public static final int GL_INTERPOLATE = 34165; // 0x8575
+    field public static final int GL_LINE_WIDTH = 2849; // 0xb21
+    field public static final int GL_LOGIC_OP_MODE = 3056; // 0xbf0
+    field public static final int GL_MATRIX_MODE = 2976; // 0xba0
+    field public static final int GL_MAX_CLIP_PLANES = 3378; // 0xd32
+    field public static final int GL_MODELVIEW_MATRIX = 2982; // 0xba6
+    field public static final int GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES = 35213; // 0x898d
+    field public static final int GL_MODELVIEW_STACK_DEPTH = 2979; // 0xba3
+    field public static final int GL_NORMAL_ARRAY_BUFFER_BINDING = 34967; // 0x8897
+    field public static final int GL_NORMAL_ARRAY_POINTER = 32911; // 0x808f
+    field public static final int GL_NORMAL_ARRAY_STRIDE = 32895; // 0x807f
+    field public static final int GL_NORMAL_ARRAY_TYPE = 32894; // 0x807e
+    field public static final int GL_OPERAND0_ALPHA = 34200; // 0x8598
+    field public static final int GL_OPERAND0_RGB = 34192; // 0x8590
+    field public static final int GL_OPERAND1_ALPHA = 34201; // 0x8599
+    field public static final int GL_OPERAND1_RGB = 34193; // 0x8591
+    field public static final int GL_OPERAND2_ALPHA = 34202; // 0x859a
+    field public static final int GL_OPERAND2_RGB = 34194; // 0x8592
+    field public static final int GL_POINT_DISTANCE_ATTENUATION = 33065; // 0x8129
+    field public static final int GL_POINT_FADE_THRESHOLD_SIZE = 33064; // 0x8128
+    field public static final int GL_POINT_SIZE = 2833; // 0xb11
+    field public static final int GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES = 35743; // 0x8b9f
+    field public static final int GL_POINT_SIZE_ARRAY_OES = 35740; // 0x8b9c
+    field public static final int GL_POINT_SIZE_ARRAY_POINTER_OES = 35212; // 0x898c
+    field public static final int GL_POINT_SIZE_ARRAY_STRIDE_OES = 35211; // 0x898b
+    field public static final int GL_POINT_SIZE_ARRAY_TYPE_OES = 35210; // 0x898a
+    field public static final int GL_POINT_SIZE_MAX = 33063; // 0x8127
+    field public static final int GL_POINT_SIZE_MIN = 33062; // 0x8126
+    field public static final int GL_POINT_SPRITE_OES = 34913; // 0x8861
+    field public static final int GL_POLYGON_OFFSET_FACTOR = 32824; // 0x8038
+    field public static final int GL_POLYGON_OFFSET_UNITS = 10752; // 0x2a00
+    field public static final int GL_PREVIOUS = 34168; // 0x8578
+    field public static final int GL_PRIMARY_COLOR = 34167; // 0x8577
+    field public static final int GL_PROJECTION_MATRIX = 2983; // 0xba7
+    field public static final int GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES = 35214; // 0x898e
+    field public static final int GL_PROJECTION_STACK_DEPTH = 2980; // 0xba4
+    field public static final int GL_RGB_SCALE = 34163; // 0x8573
+    field public static final int GL_SAMPLES = 32937; // 0x80a9
+    field public static final int GL_SAMPLE_BUFFERS = 32936; // 0x80a8
+    field public static final int GL_SAMPLE_COVERAGE_INVERT = 32939; // 0x80ab
+    field public static final int GL_SAMPLE_COVERAGE_VALUE = 32938; // 0x80aa
+    field public static final int GL_SCISSOR_BOX = 3088; // 0xc10
+    field public static final int GL_SHADE_MODEL = 2900; // 0xb54
+    field public static final int GL_SRC0_ALPHA = 34184; // 0x8588
+    field public static final int GL_SRC0_RGB = 34176; // 0x8580
+    field public static final int GL_SRC1_ALPHA = 34185; // 0x8589
+    field public static final int GL_SRC1_RGB = 34177; // 0x8581
+    field public static final int GL_SRC2_ALPHA = 34186; // 0x858a
+    field public static final int GL_SRC2_RGB = 34178; // 0x8582
+    field public static final int GL_STATIC_DRAW = 35044; // 0x88e4
+    field public static final int GL_STENCIL_CLEAR_VALUE = 2961; // 0xb91
+    field public static final int GL_STENCIL_FAIL = 2964; // 0xb94
+    field public static final int GL_STENCIL_FUNC = 2962; // 0xb92
+    field public static final int GL_STENCIL_PASS_DEPTH_FAIL = 2965; // 0xb95
+    field public static final int GL_STENCIL_PASS_DEPTH_PASS = 2966; // 0xb96
+    field public static final int GL_STENCIL_REF = 2967; // 0xb97
+    field public static final int GL_STENCIL_VALUE_MASK = 2963; // 0xb93
+    field public static final int GL_STENCIL_WRITEMASK = 2968; // 0xb98
+    field public static final int GL_SUBTRACT = 34023; // 0x84e7
+    field public static final int GL_TEXTURE_BINDING_2D = 32873; // 0x8069
+    field public static final int GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING = 34970; // 0x889a
+    field public static final int GL_TEXTURE_COORD_ARRAY_POINTER = 32914; // 0x8092
+    field public static final int GL_TEXTURE_COORD_ARRAY_SIZE = 32904; // 0x8088
+    field public static final int GL_TEXTURE_COORD_ARRAY_STRIDE = 32906; // 0x808a
+    field public static final int GL_TEXTURE_COORD_ARRAY_TYPE = 32905; // 0x8089
+    field public static final int GL_TEXTURE_MATRIX = 2984; // 0xba8
+    field public static final int GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES = 35215; // 0x898f
+    field public static final int GL_TEXTURE_STACK_DEPTH = 2981; // 0xba5
+    field public static final int GL_VERTEX_ARRAY_BUFFER_BINDING = 34966; // 0x8896
+    field public static final int GL_VERTEX_ARRAY_POINTER = 32910; // 0x808e
+    field public static final int GL_VERTEX_ARRAY_SIZE = 32890; // 0x807a
+    field public static final int GL_VERTEX_ARRAY_STRIDE = 32892; // 0x807c
+    field public static final int GL_VERTEX_ARRAY_TYPE = 32891; // 0x807b
+    field public static final int GL_VIEWPORT = 2978; // 0xba2
+    field public static final int GL_WRITE_ONLY = 35001; // 0x88b9
+  }
+
+  public class GLES11Ext {
+    ctor public GLES11Ext();
+    method public static void glAlphaFuncxOES(int, int);
+    method public static void glBindFramebufferOES(int, int);
+    method public static void glBindRenderbufferOES(int, int);
+    method public static void glBlendEquationOES(int);
+    method public static void glBlendEquationSeparateOES(int, int);
+    method public static void glBlendFuncSeparateOES(int, int, int, int);
+    method public static int glCheckFramebufferStatusOES(int);
+    method public static void glClearColorxOES(int, int, int, int);
+    method public static void glClearDepthfOES(float);
+    method public static void glClearDepthxOES(int);
+    method public static void glClipPlanefOES(int, float[], int);
+    method public static void glClipPlanefOES(int, java.nio.FloatBuffer);
+    method public static void glClipPlanexOES(int, int[], int);
+    method public static void glClipPlanexOES(int, java.nio.IntBuffer);
+    method public static void glColor4xOES(int, int, int, int);
+    method public static void glCurrentPaletteMatrixOES(int);
+    method public static void glDeleteFramebuffersOES(int, int[], int);
+    method public static void glDeleteFramebuffersOES(int, java.nio.IntBuffer);
+    method public static void glDeleteRenderbuffersOES(int, int[], int);
+    method public static void glDeleteRenderbuffersOES(int, java.nio.IntBuffer);
+    method public static void glDepthRangefOES(float, float);
+    method public static void glDepthRangexOES(int, int);
+    method public static void glDrawTexfOES(float, float, float, float, float);
+    method public static void glDrawTexfvOES(float[], int);
+    method public static void glDrawTexfvOES(java.nio.FloatBuffer);
+    method public static void glDrawTexiOES(int, int, int, int, int);
+    method public static void glDrawTexivOES(int[], int);
+    method public static void glDrawTexivOES(java.nio.IntBuffer);
+    method public static void glDrawTexsOES(short, short, short, short, short);
+    method public static void glDrawTexsvOES(short[], int);
+    method public static void glDrawTexsvOES(java.nio.ShortBuffer);
+    method public static void glDrawTexxOES(int, int, int, int, int);
+    method public static void glDrawTexxvOES(int[], int);
+    method public static void glDrawTexxvOES(java.nio.IntBuffer);
+    method public static void glEGLImageTargetRenderbufferStorageOES(int, java.nio.Buffer);
+    method public static void glEGLImageTargetTexture2DOES(int, java.nio.Buffer);
+    method public static void glFogxOES(int, int);
+    method public static void glFogxvOES(int, int[], int);
+    method public static void glFogxvOES(int, java.nio.IntBuffer);
+    method public static void glFramebufferRenderbufferOES(int, int, int, int);
+    method public static void glFramebufferTexture2DOES(int, int, int, int, int);
+    method public static void glFrustumfOES(float, float, float, float, float, float);
+    method public static void glFrustumxOES(int, int, int, int, int, int);
+    method public static void glGenFramebuffersOES(int, int[], int);
+    method public static void glGenFramebuffersOES(int, java.nio.IntBuffer);
+    method public static void glGenRenderbuffersOES(int, int[], int);
+    method public static void glGenRenderbuffersOES(int, java.nio.IntBuffer);
+    method public static void glGenerateMipmapOES(int);
+    method public static void glGetClipPlanefOES(int, float[], int);
+    method public static void glGetClipPlanefOES(int, java.nio.FloatBuffer);
+    method public static void glGetClipPlanexOES(int, int[], int);
+    method public static void glGetClipPlanexOES(int, java.nio.IntBuffer);
+    method public static void glGetFixedvOES(int, int[], int);
+    method public static void glGetFixedvOES(int, java.nio.IntBuffer);
+    method public static void glGetFramebufferAttachmentParameterivOES(int, int, int, int[], int);
+    method public static void glGetFramebufferAttachmentParameterivOES(int, int, int, java.nio.IntBuffer);
+    method public static void glGetLightxvOES(int, int, int[], int);
+    method public static void glGetLightxvOES(int, int, java.nio.IntBuffer);
+    method public static void glGetMaterialxvOES(int, int, int[], int);
+    method public static void glGetMaterialxvOES(int, int, java.nio.IntBuffer);
+    method public static void glGetRenderbufferParameterivOES(int, int, int[], int);
+    method public static void glGetRenderbufferParameterivOES(int, int, java.nio.IntBuffer);
+    method public static void glGetTexEnvxvOES(int, int, int[], int);
+    method public static void glGetTexEnvxvOES(int, int, java.nio.IntBuffer);
+    method public static void glGetTexGenfvOES(int, int, float[], int);
+    method public static void glGetTexGenfvOES(int, int, java.nio.FloatBuffer);
+    method public static void glGetTexGenivOES(int, int, int[], int);
+    method public static void glGetTexGenivOES(int, int, java.nio.IntBuffer);
+    method public static void glGetTexGenxvOES(int, int, int[], int);
+    method public static void glGetTexGenxvOES(int, int, java.nio.IntBuffer);
+    method public static void glGetTexParameterxvOES(int, int, int[], int);
+    method public static void glGetTexParameterxvOES(int, int, java.nio.IntBuffer);
+    method public static boolean glIsFramebufferOES(int);
+    method public static boolean glIsRenderbufferOES(int);
+    method public static void glLightModelxOES(int, int);
+    method public static void glLightModelxvOES(int, int[], int);
+    method public static void glLightModelxvOES(int, java.nio.IntBuffer);
+    method public static void glLightxOES(int, int, int);
+    method public static void glLightxvOES(int, int, int[], int);
+    method public static void glLightxvOES(int, int, java.nio.IntBuffer);
+    method public static void glLineWidthxOES(int);
+    method public static void glLoadMatrixxOES(int[], int);
+    method public static void glLoadMatrixxOES(java.nio.IntBuffer);
+    method public static void glLoadPaletteFromModelViewMatrixOES();
+    method public static void glMaterialxOES(int, int, int);
+    method public static void glMaterialxvOES(int, int, int[], int);
+    method public static void glMaterialxvOES(int, int, java.nio.IntBuffer);
+    method public static void glMatrixIndexPointerOES(int, int, int, java.nio.Buffer);
+    method public static void glMultMatrixxOES(int[], int);
+    method public static void glMultMatrixxOES(java.nio.IntBuffer);
+    method public static void glMultiTexCoord4xOES(int, int, int, int, int);
+    method public static void glNormal3xOES(int, int, int);
+    method public static void glOrthofOES(float, float, float, float, float, float);
+    method public static void glOrthoxOES(int, int, int, int, int, int);
+    method public static void glPointParameterxOES(int, int);
+    method public static void glPointParameterxvOES(int, int[], int);
+    method public static void glPointParameterxvOES(int, java.nio.IntBuffer);
+    method public static void glPointSizexOES(int);
+    method public static void glPolygonOffsetxOES(int, int);
+    method public static void glRenderbufferStorageOES(int, int, int, int);
+    method public static void glRotatexOES(int, int, int, int);
+    method public static void glSampleCoveragexOES(int, boolean);
+    method public static void glScalexOES(int, int, int);
+    method public static void glTexEnvxOES(int, int, int);
+    method public static void glTexEnvxvOES(int, int, int[], int);
+    method public static void glTexEnvxvOES(int, int, java.nio.IntBuffer);
+    method public static void glTexGenfOES(int, int, float);
+    method public static void glTexGenfvOES(int, int, float[], int);
+    method public static void glTexGenfvOES(int, int, java.nio.FloatBuffer);
+    method public static void glTexGeniOES(int, int, int);
+    method public static void glTexGenivOES(int, int, int[], int);
+    method public static void glTexGenivOES(int, int, java.nio.IntBuffer);
+    method public static void glTexGenxOES(int, int, int);
+    method public static void glTexGenxvOES(int, int, int[], int);
+    method public static void glTexGenxvOES(int, int, java.nio.IntBuffer);
+    method public static void glTexParameterxOES(int, int, int);
+    method public static void glTexParameterxvOES(int, int, int[], int);
+    method public static void glTexParameterxvOES(int, int, java.nio.IntBuffer);
+    method public static void glTranslatexOES(int, int, int);
+    method public static void glWeightPointerOES(int, int, int, java.nio.Buffer);
+    field public static final int GL_3DC_XY_AMD = 34810; // 0x87fa
+    field public static final int GL_3DC_X_AMD = 34809; // 0x87f9
+    field public static final int GL_ATC_RGBA_EXPLICIT_ALPHA_AMD = 35987; // 0x8c93
+    field public static final int GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD = 34798; // 0x87ee
+    field public static final int GL_ATC_RGB_AMD = 35986; // 0x8c92
+    field public static final int GL_BGRA = 32993; // 0x80e1
+    field public static final int GL_BLEND_DST_ALPHA_OES = 32970; // 0x80ca
+    field public static final int GL_BLEND_DST_RGB_OES = 32968; // 0x80c8
+    field public static final int GL_BLEND_EQUATION_ALPHA_OES = 34877; // 0x883d
+    field public static final int GL_BLEND_EQUATION_OES = 32777; // 0x8009
+    field public static final int GL_BLEND_EQUATION_RGB_OES = 32777; // 0x8009
+    field public static final int GL_BLEND_SRC_ALPHA_OES = 32971; // 0x80cb
+    field public static final int GL_BLEND_SRC_RGB_OES = 32969; // 0x80c9
+    field public static final int GL_BUFFER_ACCESS_OES = 35003; // 0x88bb
+    field public static final int GL_BUFFER_MAPPED_OES = 35004; // 0x88bc
+    field public static final int GL_BUFFER_MAP_POINTER_OES = 35005; // 0x88bd
+    field public static final int GL_COLOR_ATTACHMENT0_OES = 36064; // 0x8ce0
+    field public static final int GL_CURRENT_PALETTE_MATRIX_OES = 34883; // 0x8843
+    field public static final int GL_DECR_WRAP_OES = 34056; // 0x8508
+    field public static final int GL_DEPTH24_STENCIL8_OES = 35056; // 0x88f0
+    field public static final int GL_DEPTH_ATTACHMENT_OES = 36096; // 0x8d00
+    field public static final int GL_DEPTH_COMPONENT16_OES = 33189; // 0x81a5
+    field public static final int GL_DEPTH_COMPONENT24_OES = 33190; // 0x81a6
+    field public static final int GL_DEPTH_COMPONENT32_OES = 33191; // 0x81a7
+    field public static final int GL_DEPTH_STENCIL_OES = 34041; // 0x84f9
+    field public static final int GL_ETC1_RGB8_OES = 36196; // 0x8d64
+    field public static final int GL_FIXED_OES = 5132; // 0x140c
+    field public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES = 36049; // 0x8cd1
+    field public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES = 36048; // 0x8cd0
+    field public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES = 36051; // 0x8cd3
+    field public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES = 36050; // 0x8cd2
+    field public static final int GL_FRAMEBUFFER_BINDING_OES = 36006; // 0x8ca6
+    field public static final int GL_FRAMEBUFFER_COMPLETE_OES = 36053; // 0x8cd5
+    field public static final int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES = 36054; // 0x8cd6
+    field public static final int GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES = 36057; // 0x8cd9
+    field public static final int GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES = 36058; // 0x8cda
+    field public static final int GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES = 36055; // 0x8cd7
+    field public static final int GL_FRAMEBUFFER_OES = 36160; // 0x8d40
+    field public static final int GL_FRAMEBUFFER_UNSUPPORTED_OES = 36061; // 0x8cdd
+    field public static final int GL_FUNC_ADD_OES = 32774; // 0x8006
+    field public static final int GL_FUNC_REVERSE_SUBTRACT_OES = 32779; // 0x800b
+    field public static final int GL_FUNC_SUBTRACT_OES = 32778; // 0x800a
+    field public static final int GL_INCR_WRAP_OES = 34055; // 0x8507
+    field public static final int GL_INVALID_FRAMEBUFFER_OPERATION_OES = 1286; // 0x506
+    field public static final int GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES = 35742; // 0x8b9e
+    field public static final int GL_MATRIX_INDEX_ARRAY_OES = 34884; // 0x8844
+    field public static final int GL_MATRIX_INDEX_ARRAY_POINTER_OES = 34889; // 0x8849
+    field public static final int GL_MATRIX_INDEX_ARRAY_SIZE_OES = 34886; // 0x8846
+    field public static final int GL_MATRIX_INDEX_ARRAY_STRIDE_OES = 34888; // 0x8848
+    field public static final int GL_MATRIX_INDEX_ARRAY_TYPE_OES = 34887; // 0x8847
+    field public static final int GL_MATRIX_PALETTE_OES = 34880; // 0x8840
+    field public static final int GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES = 34076; // 0x851c
+    field public static final int GL_MAX_PALETTE_MATRICES_OES = 34882; // 0x8842
+    field public static final int GL_MAX_RENDERBUFFER_SIZE_OES = 34024; // 0x84e8
+    field public static final int GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 34047; // 0x84ff
+    field public static final int GL_MAX_VERTEX_UNITS_OES = 34468; // 0x86a4
+    field public static final int GL_MIRRORED_REPEAT_OES = 33648; // 0x8370
+    field public static final int GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES = 35213; // 0x898d
+    field public static final int GL_NONE_OES = 0; // 0x0
+    field public static final int GL_NORMAL_MAP_OES = 34065; // 0x8511
+    field public static final int GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES = 35214; // 0x898e
+    field public static final int GL_REFLECTION_MAP_OES = 34066; // 0x8512
+    field public static final int GL_RENDERBUFFER_ALPHA_SIZE_OES = 36179; // 0x8d53
+    field public static final int GL_RENDERBUFFER_BINDING_OES = 36007; // 0x8ca7
+    field public static final int GL_RENDERBUFFER_BLUE_SIZE_OES = 36178; // 0x8d52
+    field public static final int GL_RENDERBUFFER_DEPTH_SIZE_OES = 36180; // 0x8d54
+    field public static final int GL_RENDERBUFFER_GREEN_SIZE_OES = 36177; // 0x8d51
+    field public static final int GL_RENDERBUFFER_HEIGHT_OES = 36163; // 0x8d43
+    field public static final int GL_RENDERBUFFER_INTERNAL_FORMAT_OES = 36164; // 0x8d44
+    field public static final int GL_RENDERBUFFER_OES = 36161; // 0x8d41
+    field public static final int GL_RENDERBUFFER_RED_SIZE_OES = 36176; // 0x8d50
+    field public static final int GL_RENDERBUFFER_STENCIL_SIZE_OES = 36181; // 0x8d55
+    field public static final int GL_RENDERBUFFER_WIDTH_OES = 36162; // 0x8d42
+    field public static final int GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES = 36200; // 0x8d68
+    field public static final int GL_RGB565_OES = 36194; // 0x8d62
+    field public static final int GL_RGB5_A1_OES = 32855; // 0x8057
+    field public static final int GL_RGB8_OES = 32849; // 0x8051
+    field public static final int GL_RGBA4_OES = 32854; // 0x8056
+    field public static final int GL_RGBA8_OES = 32856; // 0x8058
+    field public static final int GL_SAMPLER_EXTERNAL_OES = 36198; // 0x8d66
+    field public static final int GL_STENCIL_ATTACHMENT_OES = 36128; // 0x8d20
+    field public static final int GL_STENCIL_INDEX1_OES = 36166; // 0x8d46
+    field public static final int GL_STENCIL_INDEX4_OES = 36167; // 0x8d47
+    field public static final int GL_STENCIL_INDEX8_OES = 36168; // 0x8d48
+    field public static final int GL_TEXTURE_BINDING_CUBE_MAP_OES = 34068; // 0x8514
+    field public static final int GL_TEXTURE_BINDING_EXTERNAL_OES = 36199; // 0x8d67
+    field public static final int GL_TEXTURE_CROP_RECT_OES = 35741; // 0x8b9d
+    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES = 34070; // 0x8516
+    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES = 34072; // 0x8518
+    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES = 34074; // 0x851a
+    field public static final int GL_TEXTURE_CUBE_MAP_OES = 34067; // 0x8513
+    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES = 34069; // 0x8515
+    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES = 34071; // 0x8517
+    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES = 34073; // 0x8519
+    field public static final int GL_TEXTURE_EXTERNAL_OES = 36197; // 0x8d65
+    field public static final int GL_TEXTURE_GEN_MODE_OES = 9472; // 0x2500
+    field public static final int GL_TEXTURE_GEN_STR_OES = 36192; // 0x8d60
+    field public static final int GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES = 35215; // 0x898f
+    field public static final int GL_TEXTURE_MAX_ANISOTROPY_EXT = 34046; // 0x84fe
+    field public static final int GL_UNSIGNED_INT_24_8_OES = 34042; // 0x84fa
+    field public static final int GL_WEIGHT_ARRAY_BUFFER_BINDING_OES = 34974; // 0x889e
+    field public static final int GL_WEIGHT_ARRAY_OES = 34477; // 0x86ad
+    field public static final int GL_WEIGHT_ARRAY_POINTER_OES = 34476; // 0x86ac
+    field public static final int GL_WEIGHT_ARRAY_SIZE_OES = 34475; // 0x86ab
+    field public static final int GL_WEIGHT_ARRAY_STRIDE_OES = 34474; // 0x86aa
+    field public static final int GL_WEIGHT_ARRAY_TYPE_OES = 34473; // 0x86a9
+    field public static final int GL_WRITE_ONLY_OES = 35001; // 0x88b9
+  }
+
+  public class GLES20 {
+    ctor public GLES20();
+    method public static void glActiveTexture(int);
+    method public static void glAttachShader(int, int);
+    method public static void glBindAttribLocation(int, int, String);
+    method public static void glBindBuffer(int, int);
+    method public static void glBindFramebuffer(int, int);
+    method public static void glBindRenderbuffer(int, int);
+    method public static void glBindTexture(int, int);
+    method public static void glBlendColor(float, float, float, float);
+    method public static void glBlendEquation(int);
+    method public static void glBlendEquationSeparate(int, int);
+    method public static void glBlendFunc(int, int);
+    method public static void glBlendFuncSeparate(int, int, int, int);
+    method public static void glBufferData(int, int, java.nio.Buffer, int);
+    method public static void glBufferSubData(int, int, int, java.nio.Buffer);
+    method public static int glCheckFramebufferStatus(int);
+    method public static void glClear(int);
+    method public static void glClearColor(float, float, float, float);
+    method public static void glClearDepthf(float);
+    method public static void glClearStencil(int);
+    method public static void glColorMask(boolean, boolean, boolean, boolean);
+    method public static void glCompileShader(int);
+    method public static void glCompressedTexImage2D(int, int, int, int, int, int, int, java.nio.Buffer);
+    method public static void glCompressedTexSubImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
+    method public static void glCopyTexImage2D(int, int, int, int, int, int, int, int);
+    method public static void glCopyTexSubImage2D(int, int, int, int, int, int, int, int);
+    method public static int glCreateProgram();
+    method public static int glCreateShader(int);
+    method public static void glCullFace(int);
+    method public static void glDeleteBuffers(int, int[], int);
+    method public static void glDeleteBuffers(int, java.nio.IntBuffer);
+    method public static void glDeleteFramebuffers(int, int[], int);
+    method public static void glDeleteFramebuffers(int, java.nio.IntBuffer);
+    method public static void glDeleteProgram(int);
+    method public static void glDeleteRenderbuffers(int, int[], int);
+    method public static void glDeleteRenderbuffers(int, java.nio.IntBuffer);
+    method public static void glDeleteShader(int);
+    method public static void glDeleteTextures(int, int[], int);
+    method public static void glDeleteTextures(int, java.nio.IntBuffer);
+    method public static void glDepthFunc(int);
+    method public static void glDepthMask(boolean);
+    method public static void glDepthRangef(float, float);
+    method public static void glDetachShader(int, int);
+    method public static void glDisable(int);
+    method public static void glDisableVertexAttribArray(int);
+    method public static void glDrawArrays(int, int, int);
+    method public static void glDrawElements(int, int, int, int);
+    method public static void glDrawElements(int, int, int, java.nio.Buffer);
+    method public static void glEnable(int);
+    method public static void glEnableVertexAttribArray(int);
+    method public static void glFinish();
+    method public static void glFlush();
+    method public static void glFramebufferRenderbuffer(int, int, int, int);
+    method public static void glFramebufferTexture2D(int, int, int, int, int);
+    method public static void glFrontFace(int);
+    method public static void glGenBuffers(int, int[], int);
+    method public static void glGenBuffers(int, java.nio.IntBuffer);
+    method public static void glGenFramebuffers(int, int[], int);
+    method public static void glGenFramebuffers(int, java.nio.IntBuffer);
+    method public static void glGenRenderbuffers(int, int[], int);
+    method public static void glGenRenderbuffers(int, java.nio.IntBuffer);
+    method public static void glGenTextures(int, int[], int);
+    method public static void glGenTextures(int, java.nio.IntBuffer);
+    method public static void glGenerateMipmap(int);
+    method public static void glGetActiveAttrib(int, int, int, int[], int, int[], int, int[], int, byte[], int);
+    method public static String glGetActiveAttrib(int, int, int[], int, int[], int);
+    method public static String glGetActiveAttrib(int, int, java.nio.IntBuffer, java.nio.IntBuffer);
+    method public static void glGetActiveUniform(int, int, int, int[], int, int[], int, int[], int, byte[], int);
+    method public static String glGetActiveUniform(int, int, int[], int, int[], int);
+    method public static String glGetActiveUniform(int, int, java.nio.IntBuffer, java.nio.IntBuffer);
+    method public static void glGetAttachedShaders(int, int, int[], int, int[], int);
+    method public static void glGetAttachedShaders(int, int, java.nio.IntBuffer, java.nio.IntBuffer);
+    method public static int glGetAttribLocation(int, String);
+    method public static void glGetBooleanv(int, boolean[], int);
+    method public static void glGetBooleanv(int, java.nio.IntBuffer);
+    method public static void glGetBufferParameteriv(int, int, int[], int);
+    method public static void glGetBufferParameteriv(int, int, java.nio.IntBuffer);
+    method public static int glGetError();
+    method public static void glGetFloatv(int, float[], int);
+    method public static void glGetFloatv(int, java.nio.FloatBuffer);
+    method public static void glGetFramebufferAttachmentParameteriv(int, int, int, int[], int);
+    method public static void glGetFramebufferAttachmentParameteriv(int, int, int, java.nio.IntBuffer);
+    method public static void glGetIntegerv(int, int[], int);
+    method public static void glGetIntegerv(int, java.nio.IntBuffer);
+    method public static String glGetProgramInfoLog(int);
+    method public static void glGetProgramiv(int, int, int[], int);
+    method public static void glGetProgramiv(int, int, java.nio.IntBuffer);
+    method public static void glGetRenderbufferParameteriv(int, int, int[], int);
+    method public static void glGetRenderbufferParameteriv(int, int, java.nio.IntBuffer);
+    method public static String glGetShaderInfoLog(int);
+    method public static void glGetShaderPrecisionFormat(int, int, int[], int, int[], int);
+    method public static void glGetShaderPrecisionFormat(int, int, java.nio.IntBuffer, java.nio.IntBuffer);
+    method public static void glGetShaderSource(int, int, int[], int, byte[], int);
+    method public static String glGetShaderSource(int);
+    method public static void glGetShaderiv(int, int, int[], int);
+    method public static void glGetShaderiv(int, int, java.nio.IntBuffer);
+    method public static String glGetString(int);
+    method public static void glGetTexParameterfv(int, int, float[], int);
+    method public static void glGetTexParameterfv(int, int, java.nio.FloatBuffer);
+    method public static void glGetTexParameteriv(int, int, int[], int);
+    method public static void glGetTexParameteriv(int, int, java.nio.IntBuffer);
+    method public static int glGetUniformLocation(int, String);
+    method public static void glGetUniformfv(int, int, float[], int);
+    method public static void glGetUniformfv(int, int, java.nio.FloatBuffer);
+    method public static void glGetUniformiv(int, int, int[], int);
+    method public static void glGetUniformiv(int, int, java.nio.IntBuffer);
+    method public static void glGetVertexAttribfv(int, int, float[], int);
+    method public static void glGetVertexAttribfv(int, int, java.nio.FloatBuffer);
+    method public static void glGetVertexAttribiv(int, int, int[], int);
+    method public static void glGetVertexAttribiv(int, int, java.nio.IntBuffer);
+    method public static void glHint(int, int);
+    method public static boolean glIsBuffer(int);
+    method public static boolean glIsEnabled(int);
+    method public static boolean glIsFramebuffer(int);
+    method public static boolean glIsProgram(int);
+    method public static boolean glIsRenderbuffer(int);
+    method public static boolean glIsShader(int);
+    method public static boolean glIsTexture(int);
+    method public static void glLineWidth(float);
+    method public static void glLinkProgram(int);
+    method public static void glPixelStorei(int, int);
+    method public static void glPolygonOffset(float, float);
+    method public static void glReadPixels(int, int, int, int, int, int, java.nio.Buffer);
+    method public static void glReleaseShaderCompiler();
+    method public static void glRenderbufferStorage(int, int, int, int);
+    method public static void glSampleCoverage(float, boolean);
+    method public static void glScissor(int, int, int, int);
+    method public static void glShaderBinary(int, int[], int, int, java.nio.Buffer, int);
+    method public static void glShaderBinary(int, java.nio.IntBuffer, int, java.nio.Buffer, int);
+    method public static void glShaderSource(int, String);
+    method public static void glStencilFunc(int, int, int);
+    method public static void glStencilFuncSeparate(int, int, int, int);
+    method public static void glStencilMask(int);
+    method public static void glStencilMaskSeparate(int, int);
+    method public static void glStencilOp(int, int, int);
+    method public static void glStencilOpSeparate(int, int, int, int);
+    method public static void glTexImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
+    method public static void glTexParameterf(int, int, float);
+    method public static void glTexParameterfv(int, int, float[], int);
+    method public static void glTexParameterfv(int, int, java.nio.FloatBuffer);
+    method public static void glTexParameteri(int, int, int);
+    method public static void glTexParameteriv(int, int, int[], int);
+    method public static void glTexParameteriv(int, int, java.nio.IntBuffer);
+    method public static void glTexSubImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
+    method public static void glUniform1f(int, float);
+    method public static void glUniform1fv(int, int, float[], int);
+    method public static void glUniform1fv(int, int, java.nio.FloatBuffer);
+    method public static void glUniform1i(int, int);
+    method public static void glUniform1iv(int, int, int[], int);
+    method public static void glUniform1iv(int, int, java.nio.IntBuffer);
+    method public static void glUniform2f(int, float, float);
+    method public static void glUniform2fv(int, int, float[], int);
+    method public static void glUniform2fv(int, int, java.nio.FloatBuffer);
+    method public static void glUniform2i(int, int, int);
+    method public static void glUniform2iv(int, int, int[], int);
+    method public static void glUniform2iv(int, int, java.nio.IntBuffer);
+    method public static void glUniform3f(int, float, float, float);
+    method public static void glUniform3fv(int, int, float[], int);
+    method public static void glUniform3fv(int, int, java.nio.FloatBuffer);
+    method public static void glUniform3i(int, int, int, int);
+    method public static void glUniform3iv(int, int, int[], int);
+    method public static void glUniform3iv(int, int, java.nio.IntBuffer);
+    method public static void glUniform4f(int, float, float, float, float);
+    method public static void glUniform4fv(int, int, float[], int);
+    method public static void glUniform4fv(int, int, java.nio.FloatBuffer);
+    method public static void glUniform4i(int, int, int, int, int);
+    method public static void glUniform4iv(int, int, int[], int);
+    method public static void glUniform4iv(int, int, java.nio.IntBuffer);
+    method public static void glUniformMatrix2fv(int, int, boolean, float[], int);
+    method public static void glUniformMatrix2fv(int, int, boolean, java.nio.FloatBuffer);
+    method public static void glUniformMatrix3fv(int, int, boolean, float[], int);
+    method public static void glUniformMatrix3fv(int, int, boolean, java.nio.FloatBuffer);
+    method public static void glUniformMatrix4fv(int, int, boolean, float[], int);
+    method public static void glUniformMatrix4fv(int, int, boolean, java.nio.FloatBuffer);
+    method public static void glUseProgram(int);
+    method public static void glValidateProgram(int);
+    method public static void glVertexAttrib1f(int, float);
+    method public static void glVertexAttrib1fv(int, float[], int);
+    method public static void glVertexAttrib1fv(int, java.nio.FloatBuffer);
+    method public static void glVertexAttrib2f(int, float, float);
+    method public static void glVertexAttrib2fv(int, float[], int);
+    method public static void glVertexAttrib2fv(int, java.nio.FloatBuffer);
+    method public static void glVertexAttrib3f(int, float, float, float);
+    method public static void glVertexAttrib3fv(int, float[], int);
+    method public static void glVertexAttrib3fv(int, java.nio.FloatBuffer);
+    method public static void glVertexAttrib4f(int, float, float, float, float);
+    method public static void glVertexAttrib4fv(int, float[], int);
+    method public static void glVertexAttrib4fv(int, java.nio.FloatBuffer);
+    method public static void glVertexAttribPointer(int, int, int, boolean, int, int);
+    method public static void glVertexAttribPointer(int, int, int, boolean, int, java.nio.Buffer);
+    method public static void glViewport(int, int, int, int);
+    field public static final int GL_ACTIVE_ATTRIBUTES = 35721; // 0x8b89
+    field public static final int GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = 35722; // 0x8b8a
+    field public static final int GL_ACTIVE_TEXTURE = 34016; // 0x84e0
+    field public static final int GL_ACTIVE_UNIFORMS = 35718; // 0x8b86
+    field public static final int GL_ACTIVE_UNIFORM_MAX_LENGTH = 35719; // 0x8b87
+    field public static final int GL_ALIASED_LINE_WIDTH_RANGE = 33902; // 0x846e
+    field public static final int GL_ALIASED_POINT_SIZE_RANGE = 33901; // 0x846d
+    field public static final int GL_ALPHA = 6406; // 0x1906
+    field public static final int GL_ALPHA_BITS = 3413; // 0xd55
+    field public static final int GL_ALWAYS = 519; // 0x207
+    field public static final int GL_ARRAY_BUFFER = 34962; // 0x8892
+    field public static final int GL_ARRAY_BUFFER_BINDING = 34964; // 0x8894
+    field public static final int GL_ATTACHED_SHADERS = 35717; // 0x8b85
+    field public static final int GL_BACK = 1029; // 0x405
+    field public static final int GL_BLEND = 3042; // 0xbe2
+    field public static final int GL_BLEND_COLOR = 32773; // 0x8005
+    field public static final int GL_BLEND_DST_ALPHA = 32970; // 0x80ca
+    field public static final int GL_BLEND_DST_RGB = 32968; // 0x80c8
+    field public static final int GL_BLEND_EQUATION = 32777; // 0x8009
+    field public static final int GL_BLEND_EQUATION_ALPHA = 34877; // 0x883d
+    field public static final int GL_BLEND_EQUATION_RGB = 32777; // 0x8009
+    field public static final int GL_BLEND_SRC_ALPHA = 32971; // 0x80cb
+    field public static final int GL_BLEND_SRC_RGB = 32969; // 0x80c9
+    field public static final int GL_BLUE_BITS = 3412; // 0xd54
+    field public static final int GL_BOOL = 35670; // 0x8b56
+    field public static final int GL_BOOL_VEC2 = 35671; // 0x8b57
+    field public static final int GL_BOOL_VEC3 = 35672; // 0x8b58
+    field public static final int GL_BOOL_VEC4 = 35673; // 0x8b59
+    field public static final int GL_BUFFER_SIZE = 34660; // 0x8764
+    field public static final int GL_BUFFER_USAGE = 34661; // 0x8765
+    field public static final int GL_BYTE = 5120; // 0x1400
+    field public static final int GL_CCW = 2305; // 0x901
+    field public static final int GL_CLAMP_TO_EDGE = 33071; // 0x812f
+    field public static final int GL_COLOR_ATTACHMENT0 = 36064; // 0x8ce0
+    field public static final int GL_COLOR_BUFFER_BIT = 16384; // 0x4000
+    field public static final int GL_COLOR_CLEAR_VALUE = 3106; // 0xc22
+    field public static final int GL_COLOR_WRITEMASK = 3107; // 0xc23
+    field public static final int GL_COMPILE_STATUS = 35713; // 0x8b81
+    field public static final int GL_COMPRESSED_TEXTURE_FORMATS = 34467; // 0x86a3
+    field public static final int GL_CONSTANT_ALPHA = 32771; // 0x8003
+    field public static final int GL_CONSTANT_COLOR = 32769; // 0x8001
+    field public static final int GL_CULL_FACE = 2884; // 0xb44
+    field public static final int GL_CULL_FACE_MODE = 2885; // 0xb45
+    field public static final int GL_CURRENT_PROGRAM = 35725; // 0x8b8d
+    field public static final int GL_CURRENT_VERTEX_ATTRIB = 34342; // 0x8626
+    field public static final int GL_CW = 2304; // 0x900
+    field public static final int GL_DECR = 7683; // 0x1e03
+    field public static final int GL_DECR_WRAP = 34056; // 0x8508
+    field public static final int GL_DELETE_STATUS = 35712; // 0x8b80
+    field public static final int GL_DEPTH_ATTACHMENT = 36096; // 0x8d00
+    field public static final int GL_DEPTH_BITS = 3414; // 0xd56
+    field public static final int GL_DEPTH_BUFFER_BIT = 256; // 0x100
+    field public static final int GL_DEPTH_CLEAR_VALUE = 2931; // 0xb73
+    field public static final int GL_DEPTH_COMPONENT = 6402; // 0x1902
+    field public static final int GL_DEPTH_COMPONENT16 = 33189; // 0x81a5
+    field public static final int GL_DEPTH_FUNC = 2932; // 0xb74
+    field public static final int GL_DEPTH_RANGE = 2928; // 0xb70
+    field public static final int GL_DEPTH_TEST = 2929; // 0xb71
+    field public static final int GL_DEPTH_WRITEMASK = 2930; // 0xb72
+    field public static final int GL_DITHER = 3024; // 0xbd0
+    field public static final int GL_DONT_CARE = 4352; // 0x1100
+    field public static final int GL_DST_ALPHA = 772; // 0x304
+    field public static final int GL_DST_COLOR = 774; // 0x306
+    field public static final int GL_DYNAMIC_DRAW = 35048; // 0x88e8
+    field public static final int GL_ELEMENT_ARRAY_BUFFER = 34963; // 0x8893
+    field public static final int GL_ELEMENT_ARRAY_BUFFER_BINDING = 34965; // 0x8895
+    field public static final int GL_EQUAL = 514; // 0x202
+    field public static final int GL_EXTENSIONS = 7939; // 0x1f03
+    field public static final int GL_FALSE = 0; // 0x0
+    field public static final int GL_FASTEST = 4353; // 0x1101
+    field public static final int GL_FIXED = 5132; // 0x140c
+    field public static final int GL_FLOAT = 5126; // 0x1406
+    field public static final int GL_FLOAT_MAT2 = 35674; // 0x8b5a
+    field public static final int GL_FLOAT_MAT3 = 35675; // 0x8b5b
+    field public static final int GL_FLOAT_MAT4 = 35676; // 0x8b5c
+    field public static final int GL_FLOAT_VEC2 = 35664; // 0x8b50
+    field public static final int GL_FLOAT_VEC3 = 35665; // 0x8b51
+    field public static final int GL_FLOAT_VEC4 = 35666; // 0x8b52
+    field public static final int GL_FRAGMENT_SHADER = 35632; // 0x8b30
+    field public static final int GL_FRAMEBUFFER = 36160; // 0x8d40
+    field public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 36049; // 0x8cd1
+    field public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 36048; // 0x8cd0
+    field public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 36051; // 0x8cd3
+    field public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 36050; // 0x8cd2
+    field public static final int GL_FRAMEBUFFER_BINDING = 36006; // 0x8ca6
+    field public static final int GL_FRAMEBUFFER_COMPLETE = 36053; // 0x8cd5
+    field public static final int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 36054; // 0x8cd6
+    field public static final int GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 36057; // 0x8cd9
+    field public static final int GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 36055; // 0x8cd7
+    field public static final int GL_FRAMEBUFFER_UNSUPPORTED = 36061; // 0x8cdd
+    field public static final int GL_FRONT = 1028; // 0x404
+    field public static final int GL_FRONT_AND_BACK = 1032; // 0x408
+    field public static final int GL_FRONT_FACE = 2886; // 0xb46
+    field public static final int GL_FUNC_ADD = 32774; // 0x8006
+    field public static final int GL_FUNC_REVERSE_SUBTRACT = 32779; // 0x800b
+    field public static final int GL_FUNC_SUBTRACT = 32778; // 0x800a
+    field public static final int GL_GENERATE_MIPMAP_HINT = 33170; // 0x8192
+    field public static final int GL_GEQUAL = 518; // 0x206
+    field public static final int GL_GREATER = 516; // 0x204
+    field public static final int GL_GREEN_BITS = 3411; // 0xd53
+    field public static final int GL_HIGH_FLOAT = 36338; // 0x8df2
+    field public static final int GL_HIGH_INT = 36341; // 0x8df5
+    field public static final int GL_IMPLEMENTATION_COLOR_READ_FORMAT = 35739; // 0x8b9b
+    field public static final int GL_IMPLEMENTATION_COLOR_READ_TYPE = 35738; // 0x8b9a
+    field public static final int GL_INCR = 7682; // 0x1e02
+    field public static final int GL_INCR_WRAP = 34055; // 0x8507
+    field public static final int GL_INFO_LOG_LENGTH = 35716; // 0x8b84
+    field public static final int GL_INT = 5124; // 0x1404
+    field public static final int GL_INT_VEC2 = 35667; // 0x8b53
+    field public static final int GL_INT_VEC3 = 35668; // 0x8b54
+    field public static final int GL_INT_VEC4 = 35669; // 0x8b55
+    field public static final int GL_INVALID_ENUM = 1280; // 0x500
+    field public static final int GL_INVALID_FRAMEBUFFER_OPERATION = 1286; // 0x506
+    field public static final int GL_INVALID_OPERATION = 1282; // 0x502
+    field public static final int GL_INVALID_VALUE = 1281; // 0x501
+    field public static final int GL_INVERT = 5386; // 0x150a
+    field public static final int GL_KEEP = 7680; // 0x1e00
+    field public static final int GL_LEQUAL = 515; // 0x203
+    field public static final int GL_LESS = 513; // 0x201
+    field public static final int GL_LINEAR = 9729; // 0x2601
+    field public static final int GL_LINEAR_MIPMAP_LINEAR = 9987; // 0x2703
+    field public static final int GL_LINEAR_MIPMAP_NEAREST = 9985; // 0x2701
+    field public static final int GL_LINES = 1; // 0x1
+    field public static final int GL_LINE_LOOP = 2; // 0x2
+    field public static final int GL_LINE_STRIP = 3; // 0x3
+    field public static final int GL_LINE_WIDTH = 2849; // 0xb21
+    field public static final int GL_LINK_STATUS = 35714; // 0x8b82
+    field public static final int GL_LOW_FLOAT = 36336; // 0x8df0
+    field public static final int GL_LOW_INT = 36339; // 0x8df3
+    field public static final int GL_LUMINANCE = 6409; // 0x1909
+    field public static final int GL_LUMINANCE_ALPHA = 6410; // 0x190a
+    field public static final int GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 35661; // 0x8b4d
+    field public static final int GL_MAX_CUBE_MAP_TEXTURE_SIZE = 34076; // 0x851c
+    field public static final int GL_MAX_FRAGMENT_UNIFORM_VECTORS = 36349; // 0x8dfd
+    field public static final int GL_MAX_RENDERBUFFER_SIZE = 34024; // 0x84e8
+    field public static final int GL_MAX_TEXTURE_IMAGE_UNITS = 34930; // 0x8872
+    field public static final int GL_MAX_TEXTURE_SIZE = 3379; // 0xd33
+    field public static final int GL_MAX_VARYING_VECTORS = 36348; // 0x8dfc
+    field public static final int GL_MAX_VERTEX_ATTRIBS = 34921; // 0x8869
+    field public static final int GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 35660; // 0x8b4c
+    field public static final int GL_MAX_VERTEX_UNIFORM_VECTORS = 36347; // 0x8dfb
+    field public static final int GL_MAX_VIEWPORT_DIMS = 3386; // 0xd3a
+    field public static final int GL_MEDIUM_FLOAT = 36337; // 0x8df1
+    field public static final int GL_MEDIUM_INT = 36340; // 0x8df4
+    field public static final int GL_MIRRORED_REPEAT = 33648; // 0x8370
+    field public static final int GL_NEAREST = 9728; // 0x2600
+    field public static final int GL_NEAREST_MIPMAP_LINEAR = 9986; // 0x2702
+    field public static final int GL_NEAREST_MIPMAP_NEAREST = 9984; // 0x2700
+    field public static final int GL_NEVER = 512; // 0x200
+    field public static final int GL_NICEST = 4354; // 0x1102
+    field public static final int GL_NONE = 0; // 0x0
+    field public static final int GL_NOTEQUAL = 517; // 0x205
+    field public static final int GL_NO_ERROR = 0; // 0x0
+    field public static final int GL_NUM_COMPRESSED_TEXTURE_FORMATS = 34466; // 0x86a2
+    field public static final int GL_NUM_SHADER_BINARY_FORMATS = 36345; // 0x8df9
+    field public static final int GL_ONE = 1; // 0x1
+    field public static final int GL_ONE_MINUS_CONSTANT_ALPHA = 32772; // 0x8004
+    field public static final int GL_ONE_MINUS_CONSTANT_COLOR = 32770; // 0x8002
+    field public static final int GL_ONE_MINUS_DST_ALPHA = 773; // 0x305
+    field public static final int GL_ONE_MINUS_DST_COLOR = 775; // 0x307
+    field public static final int GL_ONE_MINUS_SRC_ALPHA = 771; // 0x303
+    field public static final int GL_ONE_MINUS_SRC_COLOR = 769; // 0x301
+    field public static final int GL_OUT_OF_MEMORY = 1285; // 0x505
+    field public static final int GL_PACK_ALIGNMENT = 3333; // 0xd05
+    field public static final int GL_POINTS = 0; // 0x0
+    field public static final int GL_POLYGON_OFFSET_FACTOR = 32824; // 0x8038
+    field public static final int GL_POLYGON_OFFSET_FILL = 32823; // 0x8037
+    field public static final int GL_POLYGON_OFFSET_UNITS = 10752; // 0x2a00
+    field public static final int GL_RED_BITS = 3410; // 0xd52
+    field public static final int GL_RENDERBUFFER = 36161; // 0x8d41
+    field public static final int GL_RENDERBUFFER_ALPHA_SIZE = 36179; // 0x8d53
+    field public static final int GL_RENDERBUFFER_BINDING = 36007; // 0x8ca7
+    field public static final int GL_RENDERBUFFER_BLUE_SIZE = 36178; // 0x8d52
+    field public static final int GL_RENDERBUFFER_DEPTH_SIZE = 36180; // 0x8d54
+    field public static final int GL_RENDERBUFFER_GREEN_SIZE = 36177; // 0x8d51
+    field public static final int GL_RENDERBUFFER_HEIGHT = 36163; // 0x8d43
+    field public static final int GL_RENDERBUFFER_INTERNAL_FORMAT = 36164; // 0x8d44
+    field public static final int GL_RENDERBUFFER_RED_SIZE = 36176; // 0x8d50
+    field public static final int GL_RENDERBUFFER_STENCIL_SIZE = 36181; // 0x8d55
+    field public static final int GL_RENDERBUFFER_WIDTH = 36162; // 0x8d42
+    field public static final int GL_RENDERER = 7937; // 0x1f01
+    field public static final int GL_REPEAT = 10497; // 0x2901
+    field public static final int GL_REPLACE = 7681; // 0x1e01
+    field public static final int GL_RGB = 6407; // 0x1907
+    field public static final int GL_RGB565 = 36194; // 0x8d62
+    field public static final int GL_RGB5_A1 = 32855; // 0x8057
+    field public static final int GL_RGBA = 6408; // 0x1908
+    field public static final int GL_RGBA4 = 32854; // 0x8056
+    field public static final int GL_SAMPLER_2D = 35678; // 0x8b5e
+    field public static final int GL_SAMPLER_CUBE = 35680; // 0x8b60
+    field public static final int GL_SAMPLES = 32937; // 0x80a9
+    field public static final int GL_SAMPLE_ALPHA_TO_COVERAGE = 32926; // 0x809e
+    field public static final int GL_SAMPLE_BUFFERS = 32936; // 0x80a8
+    field public static final int GL_SAMPLE_COVERAGE = 32928; // 0x80a0
+    field public static final int GL_SAMPLE_COVERAGE_INVERT = 32939; // 0x80ab
+    field public static final int GL_SAMPLE_COVERAGE_VALUE = 32938; // 0x80aa
+    field public static final int GL_SCISSOR_BOX = 3088; // 0xc10
+    field public static final int GL_SCISSOR_TEST = 3089; // 0xc11
+    field public static final int GL_SHADER_BINARY_FORMATS = 36344; // 0x8df8
+    field public static final int GL_SHADER_COMPILER = 36346; // 0x8dfa
+    field public static final int GL_SHADER_SOURCE_LENGTH = 35720; // 0x8b88
+    field public static final int GL_SHADER_TYPE = 35663; // 0x8b4f
+    field public static final int GL_SHADING_LANGUAGE_VERSION = 35724; // 0x8b8c
+    field public static final int GL_SHORT = 5122; // 0x1402
+    field public static final int GL_SRC_ALPHA = 770; // 0x302
+    field public static final int GL_SRC_ALPHA_SATURATE = 776; // 0x308
+    field public static final int GL_SRC_COLOR = 768; // 0x300
+    field public static final int GL_STATIC_DRAW = 35044; // 0x88e4
+    field public static final int GL_STENCIL_ATTACHMENT = 36128; // 0x8d20
+    field public static final int GL_STENCIL_BACK_FAIL = 34817; // 0x8801
+    field public static final int GL_STENCIL_BACK_FUNC = 34816; // 0x8800
+    field public static final int GL_STENCIL_BACK_PASS_DEPTH_FAIL = 34818; // 0x8802
+    field public static final int GL_STENCIL_BACK_PASS_DEPTH_PASS = 34819; // 0x8803
+    field public static final int GL_STENCIL_BACK_REF = 36003; // 0x8ca3
+    field public static final int GL_STENCIL_BACK_VALUE_MASK = 36004; // 0x8ca4
+    field public static final int GL_STENCIL_BACK_WRITEMASK = 36005; // 0x8ca5
+    field public static final int GL_STENCIL_BITS = 3415; // 0xd57
+    field public static final int GL_STENCIL_BUFFER_BIT = 1024; // 0x400
+    field public static final int GL_STENCIL_CLEAR_VALUE = 2961; // 0xb91
+    field public static final int GL_STENCIL_FAIL = 2964; // 0xb94
+    field public static final int GL_STENCIL_FUNC = 2962; // 0xb92
+    field @Deprecated public static final int GL_STENCIL_INDEX = 6401; // 0x1901
+    field public static final int GL_STENCIL_INDEX8 = 36168; // 0x8d48
+    field public static final int GL_STENCIL_PASS_DEPTH_FAIL = 2965; // 0xb95
+    field public static final int GL_STENCIL_PASS_DEPTH_PASS = 2966; // 0xb96
+    field public static final int GL_STENCIL_REF = 2967; // 0xb97
+    field public static final int GL_STENCIL_TEST = 2960; // 0xb90
+    field public static final int GL_STENCIL_VALUE_MASK = 2963; // 0xb93
+    field public static final int GL_STENCIL_WRITEMASK = 2968; // 0xb98
+    field public static final int GL_STREAM_DRAW = 35040; // 0x88e0
+    field public static final int GL_SUBPIXEL_BITS = 3408; // 0xd50
+    field public static final int GL_TEXTURE = 5890; // 0x1702
+    field public static final int GL_TEXTURE0 = 33984; // 0x84c0
+    field public static final int GL_TEXTURE1 = 33985; // 0x84c1
+    field public static final int GL_TEXTURE10 = 33994; // 0x84ca
+    field public static final int GL_TEXTURE11 = 33995; // 0x84cb
+    field public static final int GL_TEXTURE12 = 33996; // 0x84cc
+    field public static final int GL_TEXTURE13 = 33997; // 0x84cd
+    field public static final int GL_TEXTURE14 = 33998; // 0x84ce
+    field public static final int GL_TEXTURE15 = 33999; // 0x84cf
+    field public static final int GL_TEXTURE16 = 34000; // 0x84d0
+    field public static final int GL_TEXTURE17 = 34001; // 0x84d1
+    field public static final int GL_TEXTURE18 = 34002; // 0x84d2
+    field public static final int GL_TEXTURE19 = 34003; // 0x84d3
+    field public static final int GL_TEXTURE2 = 33986; // 0x84c2
+    field public static final int GL_TEXTURE20 = 34004; // 0x84d4
+    field public static final int GL_TEXTURE21 = 34005; // 0x84d5
+    field public static final int GL_TEXTURE22 = 34006; // 0x84d6
+    field public static final int GL_TEXTURE23 = 34007; // 0x84d7
+    field public static final int GL_TEXTURE24 = 34008; // 0x84d8
+    field public static final int GL_TEXTURE25 = 34009; // 0x84d9
+    field public static final int GL_TEXTURE26 = 34010; // 0x84da
+    field public static final int GL_TEXTURE27 = 34011; // 0x84db
+    field public static final int GL_TEXTURE28 = 34012; // 0x84dc
+    field public static final int GL_TEXTURE29 = 34013; // 0x84dd
+    field public static final int GL_TEXTURE3 = 33987; // 0x84c3
+    field public static final int GL_TEXTURE30 = 34014; // 0x84de
+    field public static final int GL_TEXTURE31 = 34015; // 0x84df
+    field public static final int GL_TEXTURE4 = 33988; // 0x84c4
+    field public static final int GL_TEXTURE5 = 33989; // 0x84c5
+    field public static final int GL_TEXTURE6 = 33990; // 0x84c6
+    field public static final int GL_TEXTURE7 = 33991; // 0x84c7
+    field public static final int GL_TEXTURE8 = 33992; // 0x84c8
+    field public static final int GL_TEXTURE9 = 33993; // 0x84c9
+    field public static final int GL_TEXTURE_2D = 3553; // 0xde1
+    field public static final int GL_TEXTURE_BINDING_2D = 32873; // 0x8069
+    field public static final int GL_TEXTURE_BINDING_CUBE_MAP = 34068; // 0x8514
+    field public static final int GL_TEXTURE_CUBE_MAP = 34067; // 0x8513
+    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 34070; // 0x8516
+    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072; // 0x8518
+    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074; // 0x851a
+    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_X = 34069; // 0x8515
+    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 34071; // 0x8517
+    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 34073; // 0x8519
+    field public static final int GL_TEXTURE_MAG_FILTER = 10240; // 0x2800
+    field public static final int GL_TEXTURE_MIN_FILTER = 10241; // 0x2801
+    field public static final int GL_TEXTURE_WRAP_S = 10242; // 0x2802
+    field public static final int GL_TEXTURE_WRAP_T = 10243; // 0x2803
+    field public static final int GL_TRIANGLES = 4; // 0x4
+    field public static final int GL_TRIANGLE_FAN = 6; // 0x6
+    field public static final int GL_TRIANGLE_STRIP = 5; // 0x5
+    field public static final int GL_TRUE = 1; // 0x1
+    field public static final int GL_UNPACK_ALIGNMENT = 3317; // 0xcf5
+    field public static final int GL_UNSIGNED_BYTE = 5121; // 0x1401
+    field public static final int GL_UNSIGNED_INT = 5125; // 0x1405
+    field public static final int GL_UNSIGNED_SHORT = 5123; // 0x1403
+    field public static final int GL_UNSIGNED_SHORT_4_4_4_4 = 32819; // 0x8033
+    field public static final int GL_UNSIGNED_SHORT_5_5_5_1 = 32820; // 0x8034
+    field public static final int GL_UNSIGNED_SHORT_5_6_5 = 33635; // 0x8363
+    field public static final int GL_VALIDATE_STATUS = 35715; // 0x8b83
+    field public static final int GL_VENDOR = 7936; // 0x1f00
+    field public static final int GL_VERSION = 7938; // 0x1f02
+    field public static final int GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 34975; // 0x889f
+    field public static final int GL_VERTEX_ATTRIB_ARRAY_ENABLED = 34338; // 0x8622
+    field public static final int GL_VERTEX_ATTRIB_ARRAY_NORMALIZED = 34922; // 0x886a
+    field public static final int GL_VERTEX_ATTRIB_ARRAY_POINTER = 34373; // 0x8645
+    field public static final int GL_VERTEX_ATTRIB_ARRAY_SIZE = 34339; // 0x8623
+    field public static final int GL_VERTEX_ATTRIB_ARRAY_STRIDE = 34340; // 0x8624
+    field public static final int GL_VERTEX_ATTRIB_ARRAY_TYPE = 34341; // 0x8625
+    field public static final int GL_VERTEX_SHADER = 35633; // 0x8b31
+    field public static final int GL_VIEWPORT = 2978; // 0xba2
+    field public static final int GL_ZERO = 0; // 0x0
+  }
+
+  public class GLES30 extends android.opengl.GLES20 {
+    ctor public GLES30();
+    method public static void glBeginQuery(int, int);
+    method public static void glBeginTransformFeedback(int);
+    method public static void glBindBufferBase(int, int, int);
+    method public static void glBindBufferRange(int, int, int, int, int);
+    method public static void glBindSampler(int, int);
+    method public static void glBindTransformFeedback(int, int);
+    method public static void glBindVertexArray(int);
+    method public static void glBlitFramebuffer(int, int, int, int, int, int, int, int, int, int);
+    method public static void glClearBufferfi(int, int, float, int);
+    method public static void glClearBufferfv(int, int, float[], int);
+    method public static void glClearBufferfv(int, int, java.nio.FloatBuffer);
+    method public static void glClearBufferiv(int, int, int[], int);
+    method public static void glClearBufferiv(int, int, java.nio.IntBuffer);
+    method public static void glClearBufferuiv(int, int, int[], int);
+    method public static void glClearBufferuiv(int, int, java.nio.IntBuffer);
+    method public static int glClientWaitSync(long, int, long);
+    method public static void glCompressedTexImage3D(int, int, int, int, int, int, int, int, java.nio.Buffer);
+    method public static void glCompressedTexImage3D(int, int, int, int, int, int, int, int, int);
+    method public static void glCompressedTexSubImage3D(int, int, int, int, int, int, int, int, int, int, java.nio.Buffer);
+    method public static void glCompressedTexSubImage3D(int, int, int, int, int, int, int, int, int, int, int);
+    method public static void glCopyBufferSubData(int, int, int, int, int);
+    method public static void glCopyTexSubImage3D(int, int, int, int, int, int, int, int, int);
+    method public static void glDeleteQueries(int, int[], int);
+    method public static void glDeleteQueries(int, java.nio.IntBuffer);
+    method public static void glDeleteSamplers(int, int[], int);
+    method public static void glDeleteSamplers(int, java.nio.IntBuffer);
+    method public static void glDeleteSync(long);
+    method public static void glDeleteTransformFeedbacks(int, int[], int);
+    method public static void glDeleteTransformFeedbacks(int, java.nio.IntBuffer);
+    method public static void glDeleteVertexArrays(int, int[], int);
+    method public static void glDeleteVertexArrays(int, java.nio.IntBuffer);
+    method public static void glDrawArraysInstanced(int, int, int, int);
+    method public static void glDrawBuffers(int, int[], int);
+    method public static void glDrawBuffers(int, java.nio.IntBuffer);
+    method public static void glDrawElementsInstanced(int, int, int, java.nio.Buffer, int);
+    method public static void glDrawElementsInstanced(int, int, int, int, int);
+    method public static void glDrawRangeElements(int, int, int, int, int, java.nio.Buffer);
+    method public static void glDrawRangeElements(int, int, int, int, int, int);
+    method public static void glEndQuery(int);
+    method public static void glEndTransformFeedback();
+    method public static long glFenceSync(int, int);
+    method public static void glFlushMappedBufferRange(int, int, int);
+    method public static void glFramebufferTextureLayer(int, int, int, int, int);
+    method public static void glGenQueries(int, int[], int);
+    method public static void glGenQueries(int, java.nio.IntBuffer);
+    method public static void glGenSamplers(int, int[], int);
+    method public static void glGenSamplers(int, java.nio.IntBuffer);
+    method public static void glGenTransformFeedbacks(int, int[], int);
+    method public static void glGenTransformFeedbacks(int, java.nio.IntBuffer);
+    method public static void glGenVertexArrays(int, int[], int);
+    method public static void glGenVertexArrays(int, java.nio.IntBuffer);
+    method public static void glGetActiveUniformBlockName(int, int, int, int[], int, byte[], int);
+    method public static void glGetActiveUniformBlockName(int, int, java.nio.Buffer, java.nio.Buffer);
+    method public static String glGetActiveUniformBlockName(int, int);
+    method public static void glGetActiveUniformBlockiv(int, int, int, int[], int);
+    method public static void glGetActiveUniformBlockiv(int, int, int, java.nio.IntBuffer);
+    method public static void glGetActiveUniformsiv(int, int, int[], int, int, int[], int);
+    method public static void glGetActiveUniformsiv(int, int, java.nio.IntBuffer, int, java.nio.IntBuffer);
+    method public static void glGetBufferParameteri64v(int, int, long[], int);
+    method public static void glGetBufferParameteri64v(int, int, java.nio.LongBuffer);
+    method public static java.nio.Buffer glGetBufferPointerv(int, int);
+    method public static int glGetFragDataLocation(int, String);
+    method public static void glGetInteger64i_v(int, int, long[], int);
+    method public static void glGetInteger64i_v(int, int, java.nio.LongBuffer);
+    method public static void glGetInteger64v(int, long[], int);
+    method public static void glGetInteger64v(int, java.nio.LongBuffer);
+    method public static void glGetIntegeri_v(int, int, int[], int);
+    method public static void glGetIntegeri_v(int, int, java.nio.IntBuffer);
+    method public static void glGetInternalformativ(int, int, int, int, int[], int);
+    method public static void glGetInternalformativ(int, int, int, int, java.nio.IntBuffer);
+    method public static void glGetProgramBinary(int, int, int[], int, int[], int, java.nio.Buffer);
+    method public static void glGetProgramBinary(int, int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.Buffer);
+    method public static void glGetQueryObjectuiv(int, int, int[], int);
+    method public static void glGetQueryObjectuiv(int, int, java.nio.IntBuffer);
+    method public static void glGetQueryiv(int, int, int[], int);
+    method public static void glGetQueryiv(int, int, java.nio.IntBuffer);
+    method public static void glGetSamplerParameterfv(int, int, float[], int);
+    method public static void glGetSamplerParameterfv(int, int, java.nio.FloatBuffer);
+    method public static void glGetSamplerParameteriv(int, int, int[], int);
+    method public static void glGetSamplerParameteriv(int, int, java.nio.IntBuffer);
+    method public static String glGetStringi(int, int);
+    method public static void glGetSynciv(long, int, int, int[], int, int[], int);
+    method public static void glGetSynciv(long, int, int, java.nio.IntBuffer, java.nio.IntBuffer);
+    method public static void glGetTransformFeedbackVarying(int, int, int, int[], int, int[], int, int[], int, byte[], int);
+    method @Deprecated public static void glGetTransformFeedbackVarying(int, int, int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, byte);
+    method public static void glGetTransformFeedbackVarying(int, int, int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.ByteBuffer);
+    method public static String glGetTransformFeedbackVarying(int, int, int[], int, int[], int);
+    method public static String glGetTransformFeedbackVarying(int, int, java.nio.IntBuffer, java.nio.IntBuffer);
+    method public static int glGetUniformBlockIndex(int, String);
+    method public static void glGetUniformIndices(int, String[], int[], int);
+    method public static void glGetUniformIndices(int, String[], java.nio.IntBuffer);
+    method public static void glGetUniformuiv(int, int, int[], int);
+    method public static void glGetUniformuiv(int, int, java.nio.IntBuffer);
+    method public static void glGetVertexAttribIiv(int, int, int[], int);
+    method public static void glGetVertexAttribIiv(int, int, java.nio.IntBuffer);
+    method public static void glGetVertexAttribIuiv(int, int, int[], int);
+    method public static void glGetVertexAttribIuiv(int, int, java.nio.IntBuffer);
+    method public static void glInvalidateFramebuffer(int, int, int[], int);
+    method public static void glInvalidateFramebuffer(int, int, java.nio.IntBuffer);
+    method public static void glInvalidateSubFramebuffer(int, int, int[], int, int, int, int, int);
+    method public static void glInvalidateSubFramebuffer(int, int, java.nio.IntBuffer, int, int, int, int);
+    method public static boolean glIsQuery(int);
+    method public static boolean glIsSampler(int);
+    method public static boolean glIsSync(long);
+    method public static boolean glIsTransformFeedback(int);
+    method public static boolean glIsVertexArray(int);
+    method public static java.nio.Buffer glMapBufferRange(int, int, int, int);
+    method public static void glPauseTransformFeedback();
+    method public static void glProgramBinary(int, int, java.nio.Buffer, int);
+    method public static void glProgramParameteri(int, int, int);
+    method public static void glReadBuffer(int);
+    method public static void glReadPixels(int, int, int, int, int, int, int);
+    method public static void glRenderbufferStorageMultisample(int, int, int, int, int);
+    method public static void glResumeTransformFeedback();
+    method public static void glSamplerParameterf(int, int, float);
+    method public static void glSamplerParameterfv(int, int, float[], int);
+    method public static void glSamplerParameterfv(int, int, java.nio.FloatBuffer);
+    method public static void glSamplerParameteri(int, int, int);
+    method public static void glSamplerParameteriv(int, int, int[], int);
+    method public static void glSamplerParameteriv(int, int, java.nio.IntBuffer);
+    method public static void glTexImage3D(int, int, int, int, int, int, int, int, int, java.nio.Buffer);
+    method public static void glTexImage3D(int, int, int, int, int, int, int, int, int, int);
+    method public static void glTexStorage2D(int, int, int, int, int);
+    method public static void glTexStorage3D(int, int, int, int, int, int);
+    method public static void glTexSubImage3D(int, int, int, int, int, int, int, int, int, int, java.nio.Buffer);
+    method public static void glTexSubImage3D(int, int, int, int, int, int, int, int, int, int, int);
+    method public static void glTransformFeedbackVaryings(int, String[], int);
+    method public static void glUniform1ui(int, int);
+    method public static void glUniform1uiv(int, int, int[], int);
+    method public static void glUniform1uiv(int, int, java.nio.IntBuffer);
+    method public static void glUniform2ui(int, int, int);
+    method public static void glUniform2uiv(int, int, int[], int);
+    method public static void glUniform2uiv(int, int, java.nio.IntBuffer);
+    method public static void glUniform3ui(int, int, int, int);
+    method public static void glUniform3uiv(int, int, int[], int);
+    method public static void glUniform3uiv(int, int, java.nio.IntBuffer);
+    method public static void glUniform4ui(int, int, int, int, int);
+    method public static void glUniform4uiv(int, int, int[], int);
+    method public static void glUniform4uiv(int, int, java.nio.IntBuffer);
+    method public static void glUniformBlockBinding(int, int, int);
+    method public static void glUniformMatrix2x3fv(int, int, boolean, float[], int);
+    method public static void glUniformMatrix2x3fv(int, int, boolean, java.nio.FloatBuffer);
+    method public static void glUniformMatrix2x4fv(int, int, boolean, float[], int);
+    method public static void glUniformMatrix2x4fv(int, int, boolean, java.nio.FloatBuffer);
+    method public static void glUniformMatrix3x2fv(int, int, boolean, float[], int);
+    method public static void glUniformMatrix3x2fv(int, int, boolean, java.nio.FloatBuffer);
+    method public static void glUniformMatrix3x4fv(int, int, boolean, float[], int);
+    method public static void glUniformMatrix3x4fv(int, int, boolean, java.nio.FloatBuffer);
+    method public static void glUniformMatrix4x2fv(int, int, boolean, float[], int);
+    method public static void glUniformMatrix4x2fv(int, int, boolean, java.nio.FloatBuffer);
+    method public static void glUniformMatrix4x3fv(int, int, boolean, float[], int);
+    method public static void glUniformMatrix4x3fv(int, int, boolean, java.nio.FloatBuffer);
+    method public static boolean glUnmapBuffer(int);
+    method public static void glVertexAttribDivisor(int, int);
+    method public static void glVertexAttribI4i(int, int, int, int, int);
+    method public static void glVertexAttribI4iv(int, int[], int);
+    method public static void glVertexAttribI4iv(int, java.nio.IntBuffer);
+    method public static void glVertexAttribI4ui(int, int, int, int, int);
+    method public static void glVertexAttribI4uiv(int, int[], int);
+    method public static void glVertexAttribI4uiv(int, java.nio.IntBuffer);
+    method public static void glVertexAttribIPointer(int, int, int, int, java.nio.Buffer);
+    method public static void glVertexAttribIPointer(int, int, int, int, int);
+    method public static void glWaitSync(long, int, long);
+    field public static final int GL_ACTIVE_UNIFORM_BLOCKS = 35382; // 0x8a36
+    field public static final int GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = 35381; // 0x8a35
+    field public static final int GL_ALREADY_SIGNALED = 37146; // 0x911a
+    field public static final int GL_ANY_SAMPLES_PASSED = 35887; // 0x8c2f
+    field public static final int GL_ANY_SAMPLES_PASSED_CONSERVATIVE = 36202; // 0x8d6a
+    field public static final int GL_BLUE = 6405; // 0x1905
+    field public static final int GL_BUFFER_ACCESS_FLAGS = 37151; // 0x911f
+    field public static final int GL_BUFFER_MAPPED = 35004; // 0x88bc
+    field public static final int GL_BUFFER_MAP_LENGTH = 37152; // 0x9120
+    field public static final int GL_BUFFER_MAP_OFFSET = 37153; // 0x9121
+    field public static final int GL_BUFFER_MAP_POINTER = 35005; // 0x88bd
+    field public static final int GL_COLOR = 6144; // 0x1800
+    field public static final int GL_COLOR_ATTACHMENT1 = 36065; // 0x8ce1
+    field public static final int GL_COLOR_ATTACHMENT10 = 36074; // 0x8cea
+    field public static final int GL_COLOR_ATTACHMENT11 = 36075; // 0x8ceb
+    field public static final int GL_COLOR_ATTACHMENT12 = 36076; // 0x8cec
+    field public static final int GL_COLOR_ATTACHMENT13 = 36077; // 0x8ced
+    field public static final int GL_COLOR_ATTACHMENT14 = 36078; // 0x8cee
+    field public static final int GL_COLOR_ATTACHMENT15 = 36079; // 0x8cef
+    field public static final int GL_COLOR_ATTACHMENT2 = 36066; // 0x8ce2
+    field public static final int GL_COLOR_ATTACHMENT3 = 36067; // 0x8ce3
+    field public static final int GL_COLOR_ATTACHMENT4 = 36068; // 0x8ce4
+    field public static final int GL_COLOR_ATTACHMENT5 = 36069; // 0x8ce5
+    field public static final int GL_COLOR_ATTACHMENT6 = 36070; // 0x8ce6
+    field public static final int GL_COLOR_ATTACHMENT7 = 36071; // 0x8ce7
+    field public static final int GL_COLOR_ATTACHMENT8 = 36072; // 0x8ce8
+    field public static final int GL_COLOR_ATTACHMENT9 = 36073; // 0x8ce9
+    field public static final int GL_COMPARE_REF_TO_TEXTURE = 34894; // 0x884e
+    field public static final int GL_COMPRESSED_R11_EAC = 37488; // 0x9270
+    field public static final int GL_COMPRESSED_RG11_EAC = 37490; // 0x9272
+    field public static final int GL_COMPRESSED_RGB8_ETC2 = 37492; // 0x9274
+    field public static final int GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37494; // 0x9276
+    field public static final int GL_COMPRESSED_RGBA8_ETC2_EAC = 37496; // 0x9278
+    field public static final int GL_COMPRESSED_SIGNED_R11_EAC = 37489; // 0x9271
+    field public static final int GL_COMPRESSED_SIGNED_RG11_EAC = 37491; // 0x9273
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 37497; // 0x9279
+    field public static final int GL_COMPRESSED_SRGB8_ETC2 = 37493; // 0x9275
+    field public static final int GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37495; // 0x9277
+    field public static final int GL_CONDITION_SATISFIED = 37148; // 0x911c
+    field public static final int GL_COPY_READ_BUFFER = 36662; // 0x8f36
+    field public static final int GL_COPY_READ_BUFFER_BINDING = 36662; // 0x8f36
+    field public static final int GL_COPY_WRITE_BUFFER = 36663; // 0x8f37
+    field public static final int GL_COPY_WRITE_BUFFER_BINDING = 36663; // 0x8f37
+    field public static final int GL_CURRENT_QUERY = 34917; // 0x8865
+    field public static final int GL_DEPTH = 6145; // 0x1801
+    field public static final int GL_DEPTH24_STENCIL8 = 35056; // 0x88f0
+    field public static final int GL_DEPTH32F_STENCIL8 = 36013; // 0x8cad
+    field public static final int GL_DEPTH_COMPONENT24 = 33190; // 0x81a6
+    field public static final int GL_DEPTH_COMPONENT32F = 36012; // 0x8cac
+    field public static final int GL_DEPTH_STENCIL = 34041; // 0x84f9
+    field public static final int GL_DEPTH_STENCIL_ATTACHMENT = 33306; // 0x821a
+    field public static final int GL_DRAW_BUFFER0 = 34853; // 0x8825
+    field public static final int GL_DRAW_BUFFER1 = 34854; // 0x8826
+    field public static final int GL_DRAW_BUFFER10 = 34863; // 0x882f
+    field public static final int GL_DRAW_BUFFER11 = 34864; // 0x8830
+    field public static final int GL_DRAW_BUFFER12 = 34865; // 0x8831
+    field public static final int GL_DRAW_BUFFER13 = 34866; // 0x8832
+    field public static final int GL_DRAW_BUFFER14 = 34867; // 0x8833
+    field public static final int GL_DRAW_BUFFER15 = 34868; // 0x8834
+    field public static final int GL_DRAW_BUFFER2 = 34855; // 0x8827
+    field public static final int GL_DRAW_BUFFER3 = 34856; // 0x8828
+    field public static final int GL_DRAW_BUFFER4 = 34857; // 0x8829
+    field public static final int GL_DRAW_BUFFER5 = 34858; // 0x882a
+    field public static final int GL_DRAW_BUFFER6 = 34859; // 0x882b
+    field public static final int GL_DRAW_BUFFER7 = 34860; // 0x882c
+    field public static final int GL_DRAW_BUFFER8 = 34861; // 0x882d
+    field public static final int GL_DRAW_BUFFER9 = 34862; // 0x882e
+    field public static final int GL_DRAW_FRAMEBUFFER = 36009; // 0x8ca9
+    field public static final int GL_DRAW_FRAMEBUFFER_BINDING = 36006; // 0x8ca6
+    field public static final int GL_DYNAMIC_COPY = 35050; // 0x88ea
+    field public static final int GL_DYNAMIC_READ = 35049; // 0x88e9
+    field public static final int GL_FLOAT_32_UNSIGNED_INT_24_8_REV = 36269; // 0x8dad
+    field public static final int GL_FLOAT_MAT2x3 = 35685; // 0x8b65
+    field public static final int GL_FLOAT_MAT2x4 = 35686; // 0x8b66
+    field public static final int GL_FLOAT_MAT3x2 = 35687; // 0x8b67
+    field public static final int GL_FLOAT_MAT3x4 = 35688; // 0x8b68
+    field public static final int GL_FLOAT_MAT4x2 = 35689; // 0x8b69
+    field public static final int GL_FLOAT_MAT4x3 = 35690; // 0x8b6a
+    field public static final int GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 35723; // 0x8b8b
+    field public static final int GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 33301; // 0x8215
+    field public static final int GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 33300; // 0x8214
+    field public static final int GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 33296; // 0x8210
+    field public static final int GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 33297; // 0x8211
+    field public static final int GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 33302; // 0x8216
+    field public static final int GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 33299; // 0x8213
+    field public static final int GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE = 33298; // 0x8212
+    field public static final int GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 33303; // 0x8217
+    field public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 36052; // 0x8cd4
+    field public static final int GL_FRAMEBUFFER_DEFAULT = 33304; // 0x8218
+    field public static final int GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 36182; // 0x8d56
+    field public static final int GL_FRAMEBUFFER_UNDEFINED = 33305; // 0x8219
+    field public static final int GL_GREEN = 6404; // 0x1904
+    field public static final int GL_HALF_FLOAT = 5131; // 0x140b
+    field public static final int GL_INTERLEAVED_ATTRIBS = 35980; // 0x8c8c
+    field public static final int GL_INT_2_10_10_10_REV = 36255; // 0x8d9f
+    field public static final int GL_INT_SAMPLER_2D = 36298; // 0x8dca
+    field public static final int GL_INT_SAMPLER_2D_ARRAY = 36303; // 0x8dcf
+    field public static final int GL_INT_SAMPLER_3D = 36299; // 0x8dcb
+    field public static final int GL_INT_SAMPLER_CUBE = 36300; // 0x8dcc
+    field public static final int GL_INVALID_INDEX = -1; // 0xffffffff
+    field public static final int GL_MAJOR_VERSION = 33307; // 0x821b
+    field public static final int GL_MAP_FLUSH_EXPLICIT_BIT = 16; // 0x10
+    field public static final int GL_MAP_INVALIDATE_BUFFER_BIT = 8; // 0x8
+    field public static final int GL_MAP_INVALIDATE_RANGE_BIT = 4; // 0x4
+    field public static final int GL_MAP_READ_BIT = 1; // 0x1
+    field public static final int GL_MAP_UNSYNCHRONIZED_BIT = 32; // 0x20
+    field public static final int GL_MAP_WRITE_BIT = 2; // 0x2
+    field public static final int GL_MAX = 32776; // 0x8008
+    field public static final int GL_MAX_3D_TEXTURE_SIZE = 32883; // 0x8073
+    field public static final int GL_MAX_ARRAY_TEXTURE_LAYERS = 35071; // 0x88ff
+    field public static final int GL_MAX_COLOR_ATTACHMENTS = 36063; // 0x8cdf
+    field public static final int GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 35379; // 0x8a33
+    field public static final int GL_MAX_COMBINED_UNIFORM_BLOCKS = 35374; // 0x8a2e
+    field public static final int GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 35377; // 0x8a31
+    field public static final int GL_MAX_DRAW_BUFFERS = 34852; // 0x8824
+    field public static final int GL_MAX_ELEMENTS_INDICES = 33001; // 0x80e9
+    field public static final int GL_MAX_ELEMENTS_VERTICES = 33000; // 0x80e8
+    field public static final int GL_MAX_ELEMENT_INDEX = 36203; // 0x8d6b
+    field public static final int GL_MAX_FRAGMENT_INPUT_COMPONENTS = 37157; // 0x9125
+    field public static final int GL_MAX_FRAGMENT_UNIFORM_BLOCKS = 35373; // 0x8a2d
+    field public static final int GL_MAX_FRAGMENT_UNIFORM_COMPONENTS = 35657; // 0x8b49
+    field public static final int GL_MAX_PROGRAM_TEXEL_OFFSET = 35077; // 0x8905
+    field public static final int GL_MAX_SAMPLES = 36183; // 0x8d57
+    field public static final int GL_MAX_SERVER_WAIT_TIMEOUT = 37137; // 0x9111
+    field public static final int GL_MAX_TEXTURE_LOD_BIAS = 34045; // 0x84fd
+    field public static final int GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 35978; // 0x8c8a
+    field public static final int GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 35979; // 0x8c8b
+    field public static final int GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 35968; // 0x8c80
+    field public static final int GL_MAX_UNIFORM_BLOCK_SIZE = 35376; // 0x8a30
+    field public static final int GL_MAX_UNIFORM_BUFFER_BINDINGS = 35375; // 0x8a2f
+    field public static final int GL_MAX_VARYING_COMPONENTS = 35659; // 0x8b4b
+    field public static final int GL_MAX_VERTEX_OUTPUT_COMPONENTS = 37154; // 0x9122
+    field public static final int GL_MAX_VERTEX_UNIFORM_BLOCKS = 35371; // 0x8a2b
+    field public static final int GL_MAX_VERTEX_UNIFORM_COMPONENTS = 35658; // 0x8b4a
+    field public static final int GL_MIN = 32775; // 0x8007
+    field public static final int GL_MINOR_VERSION = 33308; // 0x821c
+    field public static final int GL_MIN_PROGRAM_TEXEL_OFFSET = 35076; // 0x8904
+    field public static final int GL_NUM_EXTENSIONS = 33309; // 0x821d
+    field public static final int GL_NUM_PROGRAM_BINARY_FORMATS = 34814; // 0x87fe
+    field public static final int GL_NUM_SAMPLE_COUNTS = 37760; // 0x9380
+    field public static final int GL_OBJECT_TYPE = 37138; // 0x9112
+    field public static final int GL_PACK_ROW_LENGTH = 3330; // 0xd02
+    field public static final int GL_PACK_SKIP_PIXELS = 3332; // 0xd04
+    field public static final int GL_PACK_SKIP_ROWS = 3331; // 0xd03
+    field public static final int GL_PIXEL_PACK_BUFFER = 35051; // 0x88eb
+    field public static final int GL_PIXEL_PACK_BUFFER_BINDING = 35053; // 0x88ed
+    field public static final int GL_PIXEL_UNPACK_BUFFER = 35052; // 0x88ec
+    field public static final int GL_PIXEL_UNPACK_BUFFER_BINDING = 35055; // 0x88ef
+    field public static final int GL_PRIMITIVE_RESTART_FIXED_INDEX = 36201; // 0x8d69
+    field public static final int GL_PROGRAM_BINARY_FORMATS = 34815; // 0x87ff
+    field public static final int GL_PROGRAM_BINARY_LENGTH = 34625; // 0x8741
+    field public static final int GL_PROGRAM_BINARY_RETRIEVABLE_HINT = 33367; // 0x8257
+    field public static final int GL_QUERY_RESULT = 34918; // 0x8866
+    field public static final int GL_QUERY_RESULT_AVAILABLE = 34919; // 0x8867
+    field public static final int GL_R11F_G11F_B10F = 35898; // 0x8c3a
+    field public static final int GL_R16F = 33325; // 0x822d
+    field public static final int GL_R16I = 33331; // 0x8233
+    field public static final int GL_R16UI = 33332; // 0x8234
+    field public static final int GL_R32F = 33326; // 0x822e
+    field public static final int GL_R32I = 33333; // 0x8235
+    field public static final int GL_R32UI = 33334; // 0x8236
+    field public static final int GL_R8 = 33321; // 0x8229
+    field public static final int GL_R8I = 33329; // 0x8231
+    field public static final int GL_R8UI = 33330; // 0x8232
+    field public static final int GL_R8_SNORM = 36756; // 0x8f94
+    field public static final int GL_RASTERIZER_DISCARD = 35977; // 0x8c89
+    field public static final int GL_READ_BUFFER = 3074; // 0xc02
+    field public static final int GL_READ_FRAMEBUFFER = 36008; // 0x8ca8
+    field public static final int GL_READ_FRAMEBUFFER_BINDING = 36010; // 0x8caa
+    field public static final int GL_RED = 6403; // 0x1903
+    field public static final int GL_RED_INTEGER = 36244; // 0x8d94
+    field public static final int GL_RENDERBUFFER_SAMPLES = 36011; // 0x8cab
+    field public static final int GL_RG = 33319; // 0x8227
+    field public static final int GL_RG16F = 33327; // 0x822f
+    field public static final int GL_RG16I = 33337; // 0x8239
+    field public static final int GL_RG16UI = 33338; // 0x823a
+    field public static final int GL_RG32F = 33328; // 0x8230
+    field public static final int GL_RG32I = 33339; // 0x823b
+    field public static final int GL_RG32UI = 33340; // 0x823c
+    field public static final int GL_RG8 = 33323; // 0x822b
+    field public static final int GL_RG8I = 33335; // 0x8237
+    field public static final int GL_RG8UI = 33336; // 0x8238
+    field public static final int GL_RG8_SNORM = 36757; // 0x8f95
+    field public static final int GL_RGB10_A2 = 32857; // 0x8059
+    field public static final int GL_RGB10_A2UI = 36975; // 0x906f
+    field public static final int GL_RGB16F = 34843; // 0x881b
+    field public static final int GL_RGB16I = 36233; // 0x8d89
+    field public static final int GL_RGB16UI = 36215; // 0x8d77
+    field public static final int GL_RGB32F = 34837; // 0x8815
+    field public static final int GL_RGB32I = 36227; // 0x8d83
+    field public static final int GL_RGB32UI = 36209; // 0x8d71
+    field public static final int GL_RGB8 = 32849; // 0x8051
+    field public static final int GL_RGB8I = 36239; // 0x8d8f
+    field public static final int GL_RGB8UI = 36221; // 0x8d7d
+    field public static final int GL_RGB8_SNORM = 36758; // 0x8f96
+    field public static final int GL_RGB9_E5 = 35901; // 0x8c3d
+    field public static final int GL_RGBA16F = 34842; // 0x881a
+    field public static final int GL_RGBA16I = 36232; // 0x8d88
+    field public static final int GL_RGBA16UI = 36214; // 0x8d76
+    field public static final int GL_RGBA32F = 34836; // 0x8814
+    field public static final int GL_RGBA32I = 36226; // 0x8d82
+    field public static final int GL_RGBA32UI = 36208; // 0x8d70
+    field public static final int GL_RGBA8 = 32856; // 0x8058
+    field public static final int GL_RGBA8I = 36238; // 0x8d8e
+    field public static final int GL_RGBA8UI = 36220; // 0x8d7c
+    field public static final int GL_RGBA8_SNORM = 36759; // 0x8f97
+    field public static final int GL_RGBA_INTEGER = 36249; // 0x8d99
+    field public static final int GL_RGB_INTEGER = 36248; // 0x8d98
+    field public static final int GL_RG_INTEGER = 33320; // 0x8228
+    field public static final int GL_SAMPLER_2D_ARRAY = 36289; // 0x8dc1
+    field public static final int GL_SAMPLER_2D_ARRAY_SHADOW = 36292; // 0x8dc4
+    field public static final int GL_SAMPLER_2D_SHADOW = 35682; // 0x8b62
+    field public static final int GL_SAMPLER_3D = 35679; // 0x8b5f
+    field public static final int GL_SAMPLER_BINDING = 35097; // 0x8919
+    field public static final int GL_SAMPLER_CUBE_SHADOW = 36293; // 0x8dc5
+    field public static final int GL_SEPARATE_ATTRIBS = 35981; // 0x8c8d
+    field public static final int GL_SIGNALED = 37145; // 0x9119
+    field public static final int GL_SIGNED_NORMALIZED = 36764; // 0x8f9c
+    field public static final int GL_SRGB = 35904; // 0x8c40
+    field public static final int GL_SRGB8 = 35905; // 0x8c41
+    field public static final int GL_SRGB8_ALPHA8 = 35907; // 0x8c43
+    field public static final int GL_STATIC_COPY = 35046; // 0x88e6
+    field public static final int GL_STATIC_READ = 35045; // 0x88e5
+    field public static final int GL_STENCIL = 6146; // 0x1802
+    field public static final int GL_STREAM_COPY = 35042; // 0x88e2
+    field public static final int GL_STREAM_READ = 35041; // 0x88e1
+    field public static final int GL_SYNC_CONDITION = 37139; // 0x9113
+    field public static final int GL_SYNC_FENCE = 37142; // 0x9116
+    field public static final int GL_SYNC_FLAGS = 37141; // 0x9115
+    field public static final int GL_SYNC_FLUSH_COMMANDS_BIT = 1; // 0x1
+    field public static final int GL_SYNC_GPU_COMMANDS_COMPLETE = 37143; // 0x9117
+    field public static final int GL_SYNC_STATUS = 37140; // 0x9114
+    field public static final int GL_TEXTURE_2D_ARRAY = 35866; // 0x8c1a
+    field public static final int GL_TEXTURE_3D = 32879; // 0x806f
+    field public static final int GL_TEXTURE_BASE_LEVEL = 33084; // 0x813c
+    field public static final int GL_TEXTURE_BINDING_2D_ARRAY = 35869; // 0x8c1d
+    field public static final int GL_TEXTURE_BINDING_3D = 32874; // 0x806a
+    field public static final int GL_TEXTURE_COMPARE_FUNC = 34893; // 0x884d
+    field public static final int GL_TEXTURE_COMPARE_MODE = 34892; // 0x884c
+    field public static final int GL_TEXTURE_IMMUTABLE_FORMAT = 37167; // 0x912f
+    field public static final int GL_TEXTURE_IMMUTABLE_LEVELS = 33503; // 0x82df
+    field public static final int GL_TEXTURE_MAX_LEVEL = 33085; // 0x813d
+    field public static final int GL_TEXTURE_MAX_LOD = 33083; // 0x813b
+    field public static final int GL_TEXTURE_MIN_LOD = 33082; // 0x813a
+    field public static final int GL_TEXTURE_SWIZZLE_A = 36421; // 0x8e45
+    field public static final int GL_TEXTURE_SWIZZLE_B = 36420; // 0x8e44
+    field public static final int GL_TEXTURE_SWIZZLE_G = 36419; // 0x8e43
+    field public static final int GL_TEXTURE_SWIZZLE_R = 36418; // 0x8e42
+    field public static final int GL_TEXTURE_WRAP_R = 32882; // 0x8072
+    field public static final int GL_TIMEOUT_EXPIRED = 37147; // 0x911b
+    field public static final long GL_TIMEOUT_IGNORED = -1L; // 0xffffffffffffffffL
+    field public static final int GL_TRANSFORM_FEEDBACK = 36386; // 0x8e22
+    field public static final int GL_TRANSFORM_FEEDBACK_ACTIVE = 36388; // 0x8e24
+    field public static final int GL_TRANSFORM_FEEDBACK_BINDING = 36389; // 0x8e25
+    field public static final int GL_TRANSFORM_FEEDBACK_BUFFER = 35982; // 0x8c8e
+    field public static final int GL_TRANSFORM_FEEDBACK_BUFFER_BINDING = 35983; // 0x8c8f
+    field public static final int GL_TRANSFORM_FEEDBACK_BUFFER_MODE = 35967; // 0x8c7f
+    field public static final int GL_TRANSFORM_FEEDBACK_BUFFER_SIZE = 35973; // 0x8c85
+    field public static final int GL_TRANSFORM_FEEDBACK_BUFFER_START = 35972; // 0x8c84
+    field public static final int GL_TRANSFORM_FEEDBACK_PAUSED = 36387; // 0x8e23
+    field public static final int GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 35976; // 0x8c88
+    field public static final int GL_TRANSFORM_FEEDBACK_VARYINGS = 35971; // 0x8c83
+    field public static final int GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = 35958; // 0x8c76
+    field public static final int GL_UNIFORM_ARRAY_STRIDE = 35388; // 0x8a3c
+    field public static final int GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS = 35394; // 0x8a42
+    field public static final int GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 35395; // 0x8a43
+    field public static final int GL_UNIFORM_BLOCK_BINDING = 35391; // 0x8a3f
+    field public static final int GL_UNIFORM_BLOCK_DATA_SIZE = 35392; // 0x8a40
+    field public static final int GL_UNIFORM_BLOCK_INDEX = 35386; // 0x8a3a
+    field public static final int GL_UNIFORM_BLOCK_NAME_LENGTH = 35393; // 0x8a41
+    field public static final int GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 35398; // 0x8a46
+    field public static final int GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 35396; // 0x8a44
+    field public static final int GL_UNIFORM_BUFFER = 35345; // 0x8a11
+    field public static final int GL_UNIFORM_BUFFER_BINDING = 35368; // 0x8a28
+    field public static final int GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT = 35380; // 0x8a34
+    field public static final int GL_UNIFORM_BUFFER_SIZE = 35370; // 0x8a2a
+    field public static final int GL_UNIFORM_BUFFER_START = 35369; // 0x8a29
+    field public static final int GL_UNIFORM_IS_ROW_MAJOR = 35390; // 0x8a3e
+    field public static final int GL_UNIFORM_MATRIX_STRIDE = 35389; // 0x8a3d
+    field public static final int GL_UNIFORM_NAME_LENGTH = 35385; // 0x8a39
+    field public static final int GL_UNIFORM_OFFSET = 35387; // 0x8a3b
+    field public static final int GL_UNIFORM_SIZE = 35384; // 0x8a38
+    field public static final int GL_UNIFORM_TYPE = 35383; // 0x8a37
+    field public static final int GL_UNPACK_IMAGE_HEIGHT = 32878; // 0x806e
+    field public static final int GL_UNPACK_ROW_LENGTH = 3314; // 0xcf2
+    field public static final int GL_UNPACK_SKIP_IMAGES = 32877; // 0x806d
+    field public static final int GL_UNPACK_SKIP_PIXELS = 3316; // 0xcf4
+    field public static final int GL_UNPACK_SKIP_ROWS = 3315; // 0xcf3
+    field public static final int GL_UNSIGNALED = 37144; // 0x9118
+    field public static final int GL_UNSIGNED_INT_10F_11F_11F_REV = 35899; // 0x8c3b
+    field public static final int GL_UNSIGNED_INT_24_8 = 34042; // 0x84fa
+    field public static final int GL_UNSIGNED_INT_2_10_10_10_REV = 33640; // 0x8368
+    field public static final int GL_UNSIGNED_INT_5_9_9_9_REV = 35902; // 0x8c3e
+    field public static final int GL_UNSIGNED_INT_SAMPLER_2D = 36306; // 0x8dd2
+    field public static final int GL_UNSIGNED_INT_SAMPLER_2D_ARRAY = 36311; // 0x8dd7
+    field public static final int GL_UNSIGNED_INT_SAMPLER_3D = 36307; // 0x8dd3
+    field public static final int GL_UNSIGNED_INT_SAMPLER_CUBE = 36308; // 0x8dd4
+    field public static final int GL_UNSIGNED_INT_VEC2 = 36294; // 0x8dc6
+    field public static final int GL_UNSIGNED_INT_VEC3 = 36295; // 0x8dc7
+    field public static final int GL_UNSIGNED_INT_VEC4 = 36296; // 0x8dc8
+    field public static final int GL_UNSIGNED_NORMALIZED = 35863; // 0x8c17
+    field public static final int GL_VERTEX_ARRAY_BINDING = 34229; // 0x85b5
+    field public static final int GL_VERTEX_ATTRIB_ARRAY_DIVISOR = 35070; // 0x88fe
+    field public static final int GL_VERTEX_ATTRIB_ARRAY_INTEGER = 35069; // 0x88fd
+    field public static final int GL_WAIT_FAILED = 37149; // 0x911d
+  }
+
+  public class GLES31 extends android.opengl.GLES30 {
+    method public static void glActiveShaderProgram(int, int);
+    method public static void glBindImageTexture(int, int, int, boolean, int, int, int);
+    method public static void glBindProgramPipeline(int);
+    method public static void glBindVertexBuffer(int, int, long, int);
+    method public static int glCreateShaderProgramv(int, String[]);
+    method public static void glDeleteProgramPipelines(int, int[], int);
+    method public static void glDeleteProgramPipelines(int, java.nio.IntBuffer);
+    method public static void glDispatchCompute(int, int, int);
+    method public static void glDispatchComputeIndirect(long);
+    method public static void glDrawArraysIndirect(int, long);
+    method public static void glDrawElementsIndirect(int, int, long);
+    method public static void glFramebufferParameteri(int, int, int);
+    method public static void glGenProgramPipelines(int, int[], int);
+    method public static void glGenProgramPipelines(int, java.nio.IntBuffer);
+    method public static void glGetBooleani_v(int, int, boolean[], int);
+    method public static void glGetBooleani_v(int, int, java.nio.IntBuffer);
+    method public static void glGetFramebufferParameteriv(int, int, int[], int);
+    method public static void glGetFramebufferParameteriv(int, int, java.nio.IntBuffer);
+    method public static void glGetMultisamplefv(int, int, float[], int);
+    method public static void glGetMultisamplefv(int, int, java.nio.FloatBuffer);
+    method public static void glGetProgramInterfaceiv(int, int, int, int[], int);
+    method public static void glGetProgramInterfaceiv(int, int, int, java.nio.IntBuffer);
+    method public static String glGetProgramPipelineInfoLog(int);
+    method public static void glGetProgramPipelineiv(int, int, int[], int);
+    method public static void glGetProgramPipelineiv(int, int, java.nio.IntBuffer);
+    method public static int glGetProgramResourceIndex(int, int, String);
+    method public static int glGetProgramResourceLocation(int, int, String);
+    method public static String glGetProgramResourceName(int, int, int);
+    method public static void glGetProgramResourceiv(int, int, int, int, int[], int, int, int[], int, int[], int);
+    method public static void glGetProgramResourceiv(int, int, int, int, java.nio.IntBuffer, int, java.nio.IntBuffer, java.nio.IntBuffer);
+    method public static void glGetTexLevelParameterfv(int, int, int, float[], int);
+    method public static void glGetTexLevelParameterfv(int, int, int, java.nio.FloatBuffer);
+    method public static void glGetTexLevelParameteriv(int, int, int, int[], int);
+    method public static void glGetTexLevelParameteriv(int, int, int, java.nio.IntBuffer);
+    method public static boolean glIsProgramPipeline(int);
+    method public static void glMemoryBarrier(int);
+    method public static void glMemoryBarrierByRegion(int);
+    method public static void glProgramUniform1f(int, int, float);
+    method public static void glProgramUniform1fv(int, int, int, float[], int);
+    method public static void glProgramUniform1fv(int, int, int, java.nio.FloatBuffer);
+    method public static void glProgramUniform1i(int, int, int);
+    method public static void glProgramUniform1iv(int, int, int, int[], int);
+    method public static void glProgramUniform1iv(int, int, int, java.nio.IntBuffer);
+    method public static void glProgramUniform1ui(int, int, int);
+    method public static void glProgramUniform1uiv(int, int, int, int[], int);
+    method public static void glProgramUniform1uiv(int, int, int, java.nio.IntBuffer);
+    method public static void glProgramUniform2f(int, int, float, float);
+    method public static void glProgramUniform2fv(int, int, int, float[], int);
+    method public static void glProgramUniform2fv(int, int, int, java.nio.FloatBuffer);
+    method public static void glProgramUniform2i(int, int, int, int);
+    method public static void glProgramUniform2iv(int, int, int, int[], int);
+    method public static void glProgramUniform2iv(int, int, int, java.nio.IntBuffer);
+    method public static void glProgramUniform2ui(int, int, int, int);
+    method public static void glProgramUniform2uiv(int, int, int, int[], int);
+    method public static void glProgramUniform2uiv(int, int, int, java.nio.IntBuffer);
+    method public static void glProgramUniform3f(int, int, float, float, float);
+    method public static void glProgramUniform3fv(int, int, int, float[], int);
+    method public static void glProgramUniform3fv(int, int, int, java.nio.FloatBuffer);
+    method public static void glProgramUniform3i(int, int, int, int, int);
+    method public static void glProgramUniform3iv(int, int, int, int[], int);
+    method public static void glProgramUniform3iv(int, int, int, java.nio.IntBuffer);
+    method public static void glProgramUniform3ui(int, int, int, int, int);
+    method public static void glProgramUniform3uiv(int, int, int, int[], int);
+    method public static void glProgramUniform3uiv(int, int, int, java.nio.IntBuffer);
+    method public static void glProgramUniform4f(int, int, float, float, float, float);
+    method public static void glProgramUniform4fv(int, int, int, float[], int);
+    method public static void glProgramUniform4fv(int, int, int, java.nio.FloatBuffer);
+    method public static void glProgramUniform4i(int, int, int, int, int, int);
+    method public static void glProgramUniform4iv(int, int, int, int[], int);
+    method public static void glProgramUniform4iv(int, int, int, java.nio.IntBuffer);
+    method public static void glProgramUniform4ui(int, int, int, int, int, int);
+    method public static void glProgramUniform4uiv(int, int, int, int[], int);
+    method public static void glProgramUniform4uiv(int, int, int, java.nio.IntBuffer);
+    method public static void glProgramUniformMatrix2fv(int, int, int, boolean, float[], int);
+    method public static void glProgramUniformMatrix2fv(int, int, int, boolean, java.nio.FloatBuffer);
+    method public static void glProgramUniformMatrix2x3fv(int, int, int, boolean, float[], int);
+    method public static void glProgramUniformMatrix2x3fv(int, int, int, boolean, java.nio.FloatBuffer);
+    method public static void glProgramUniformMatrix2x4fv(int, int, int, boolean, float[], int);
+    method public static void glProgramUniformMatrix2x4fv(int, int, int, boolean, java.nio.FloatBuffer);
+    method public static void glProgramUniformMatrix3fv(int, int, int, boolean, float[], int);
+    method public static void glProgramUniformMatrix3fv(int, int, int, boolean, java.nio.FloatBuffer);
+    method public static void glProgramUniformMatrix3x2fv(int, int, int, boolean, float[], int);
+    method public static void glProgramUniformMatrix3x2fv(int, int, int, boolean, java.nio.FloatBuffer);
+    method public static void glProgramUniformMatrix3x4fv(int, int, int, boolean, float[], int);
+    method public static void glProgramUniformMatrix3x4fv(int, int, int, boolean, java.nio.FloatBuffer);
+    method public static void glProgramUniformMatrix4fv(int, int, int, boolean, float[], int);
+    method public static void glProgramUniformMatrix4fv(int, int, int, boolean, java.nio.FloatBuffer);
+    method public static void glProgramUniformMatrix4x2fv(int, int, int, boolean, float[], int);
+    method public static void glProgramUniformMatrix4x2fv(int, int, int, boolean, java.nio.FloatBuffer);
+    method public static void glProgramUniformMatrix4x3fv(int, int, int, boolean, float[], int);
+    method public static void glProgramUniformMatrix4x3fv(int, int, int, boolean, java.nio.FloatBuffer);
+    method public static void glSampleMaski(int, int);
+    method public static void glTexStorage2DMultisample(int, int, int, int, int, boolean);
+    method public static void glUseProgramStages(int, int, int);
+    method public static void glValidateProgramPipeline(int);
+    method public static void glVertexAttribBinding(int, int);
+    method public static void glVertexAttribFormat(int, int, int, boolean, int);
+    method public static void glVertexAttribIFormat(int, int, int, int);
+    method public static void glVertexBindingDivisor(int, int);
+    field public static final int GL_ACTIVE_ATOMIC_COUNTER_BUFFERS = 37593; // 0x92d9
+    field public static final int GL_ACTIVE_PROGRAM = 33369; // 0x8259
+    field public static final int GL_ACTIVE_RESOURCES = 37621; // 0x92f5
+    field public static final int GL_ACTIVE_VARIABLES = 37637; // 0x9305
+    field public static final int GL_ALL_BARRIER_BITS = -1; // 0xffffffff
+    field public static final int GL_ALL_SHADER_BITS = -1; // 0xffffffff
+    field public static final int GL_ARRAY_SIZE = 37627; // 0x92fb
+    field public static final int GL_ARRAY_STRIDE = 37630; // 0x92fe
+    field public static final int GL_ATOMIC_COUNTER_BARRIER_BIT = 4096; // 0x1000
+    field public static final int GL_ATOMIC_COUNTER_BUFFER = 37568; // 0x92c0
+    field public static final int GL_ATOMIC_COUNTER_BUFFER_BINDING = 37569; // 0x92c1
+    field public static final int GL_ATOMIC_COUNTER_BUFFER_INDEX = 37633; // 0x9301
+    field public static final int GL_ATOMIC_COUNTER_BUFFER_SIZE = 37571; // 0x92c3
+    field public static final int GL_ATOMIC_COUNTER_BUFFER_START = 37570; // 0x92c2
+    field public static final int GL_BLOCK_INDEX = 37629; // 0x92fd
+    field public static final int GL_BUFFER_BINDING = 37634; // 0x9302
+    field public static final int GL_BUFFER_DATA_SIZE = 37635; // 0x9303
+    field public static final int GL_BUFFER_UPDATE_BARRIER_BIT = 512; // 0x200
+    field public static final int GL_BUFFER_VARIABLE = 37605; // 0x92e5
+    field public static final int GL_COMMAND_BARRIER_BIT = 64; // 0x40
+    field public static final int GL_COMPUTE_SHADER = 37305; // 0x91b9
+    field public static final int GL_COMPUTE_SHADER_BIT = 32; // 0x20
+    field public static final int GL_COMPUTE_WORK_GROUP_SIZE = 33383; // 0x8267
+    field public static final int GL_DEPTH_STENCIL_TEXTURE_MODE = 37098; // 0x90ea
+    field public static final int GL_DISPATCH_INDIRECT_BUFFER = 37102; // 0x90ee
+    field public static final int GL_DISPATCH_INDIRECT_BUFFER_BINDING = 37103; // 0x90ef
+    field public static final int GL_DRAW_INDIRECT_BUFFER = 36671; // 0x8f3f
+    field public static final int GL_DRAW_INDIRECT_BUFFER_BINDING = 36675; // 0x8f43
+    field public static final int GL_ELEMENT_ARRAY_BARRIER_BIT = 2; // 0x2
+    field public static final int GL_FRAGMENT_SHADER_BIT = 2; // 0x2
+    field public static final int GL_FRAMEBUFFER_BARRIER_BIT = 1024; // 0x400
+    field public static final int GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS = 37652; // 0x9314
+    field public static final int GL_FRAMEBUFFER_DEFAULT_HEIGHT = 37649; // 0x9311
+    field public static final int GL_FRAMEBUFFER_DEFAULT_SAMPLES = 37651; // 0x9313
+    field public static final int GL_FRAMEBUFFER_DEFAULT_WIDTH = 37648; // 0x9310
+    field public static final int GL_IMAGE_2D = 36941; // 0x904d
+    field public static final int GL_IMAGE_2D_ARRAY = 36947; // 0x9053
+    field public static final int GL_IMAGE_3D = 36942; // 0x904e
+    field public static final int GL_IMAGE_BINDING_ACCESS = 36670; // 0x8f3e
+    field public static final int GL_IMAGE_BINDING_FORMAT = 36974; // 0x906e
+    field public static final int GL_IMAGE_BINDING_LAYER = 36669; // 0x8f3d
+    field public static final int GL_IMAGE_BINDING_LAYERED = 36668; // 0x8f3c
+    field public static final int GL_IMAGE_BINDING_LEVEL = 36667; // 0x8f3b
+    field public static final int GL_IMAGE_BINDING_NAME = 36666; // 0x8f3a
+    field public static final int GL_IMAGE_CUBE = 36944; // 0x9050
+    field public static final int GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS = 37065; // 0x90c9
+    field public static final int GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE = 37064; // 0x90c8
+    field public static final int GL_IMAGE_FORMAT_COMPATIBILITY_TYPE = 37063; // 0x90c7
+    field public static final int GL_INT_IMAGE_2D = 36952; // 0x9058
+    field public static final int GL_INT_IMAGE_2D_ARRAY = 36958; // 0x905e
+    field public static final int GL_INT_IMAGE_3D = 36953; // 0x9059
+    field public static final int GL_INT_IMAGE_CUBE = 36955; // 0x905b
+    field public static final int GL_INT_SAMPLER_2D_MULTISAMPLE = 37129; // 0x9109
+    field public static final int GL_IS_ROW_MAJOR = 37632; // 0x9300
+    field public static final int GL_LOCATION = 37646; // 0x930e
+    field public static final int GL_MATRIX_STRIDE = 37631; // 0x92ff
+    field public static final int GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS = 37596; // 0x92dc
+    field public static final int GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE = 37592; // 0x92d8
+    field public static final int GL_MAX_COLOR_TEXTURE_SAMPLES = 37134; // 0x910e
+    field public static final int GL_MAX_COMBINED_ATOMIC_COUNTERS = 37591; // 0x92d7
+    field public static final int GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS = 37585; // 0x92d1
+    field public static final int GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS = 33382; // 0x8266
+    field public static final int GL_MAX_COMBINED_IMAGE_UNIFORMS = 37071; // 0x90cf
+    field public static final int GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES = 36665; // 0x8f39
+    field public static final int GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS = 37084; // 0x90dc
+    field public static final int GL_MAX_COMPUTE_ATOMIC_COUNTERS = 33381; // 0x8265
+    field public static final int GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS = 33380; // 0x8264
+    field public static final int GL_MAX_COMPUTE_IMAGE_UNIFORMS = 37309; // 0x91bd
+    field public static final int GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS = 37083; // 0x90db
+    field public static final int GL_MAX_COMPUTE_SHARED_MEMORY_SIZE = 33378; // 0x8262
+    field public static final int GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS = 37308; // 0x91bc
+    field public static final int GL_MAX_COMPUTE_UNIFORM_BLOCKS = 37307; // 0x91bb
+    field public static final int GL_MAX_COMPUTE_UNIFORM_COMPONENTS = 33379; // 0x8263
+    field public static final int GL_MAX_COMPUTE_WORK_GROUP_COUNT = 37310; // 0x91be
+    field public static final int GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS = 37099; // 0x90eb
+    field public static final int GL_MAX_COMPUTE_WORK_GROUP_SIZE = 37311; // 0x91bf
+    field public static final int GL_MAX_DEPTH_TEXTURE_SAMPLES = 37135; // 0x910f
+    field public static final int GL_MAX_FRAGMENT_ATOMIC_COUNTERS = 37590; // 0x92d6
+    field public static final int GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS = 37584; // 0x92d0
+    field public static final int GL_MAX_FRAGMENT_IMAGE_UNIFORMS = 37070; // 0x90ce
+    field public static final int GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS = 37082; // 0x90da
+    field public static final int GL_MAX_FRAMEBUFFER_HEIGHT = 37654; // 0x9316
+    field public static final int GL_MAX_FRAMEBUFFER_SAMPLES = 37656; // 0x9318
+    field public static final int GL_MAX_FRAMEBUFFER_WIDTH = 37653; // 0x9315
+    field public static final int GL_MAX_IMAGE_UNITS = 36664; // 0x8f38
+    field public static final int GL_MAX_INTEGER_SAMPLES = 37136; // 0x9110
+    field public static final int GL_MAX_NAME_LENGTH = 37622; // 0x92f6
+    field public static final int GL_MAX_NUM_ACTIVE_VARIABLES = 37623; // 0x92f7
+    field public static final int GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET = 36447; // 0x8e5f
+    field public static final int GL_MAX_SAMPLE_MASK_WORDS = 36441; // 0x8e59
+    field public static final int GL_MAX_SHADER_STORAGE_BLOCK_SIZE = 37086; // 0x90de
+    field public static final int GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS = 37085; // 0x90dd
+    field public static final int GL_MAX_UNIFORM_LOCATIONS = 33390; // 0x826e
+    field public static final int GL_MAX_VERTEX_ATOMIC_COUNTERS = 37586; // 0x92d2
+    field public static final int GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS = 37580; // 0x92cc
+    field public static final int GL_MAX_VERTEX_ATTRIB_BINDINGS = 33498; // 0x82da
+    field public static final int GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET = 33497; // 0x82d9
+    field public static final int GL_MAX_VERTEX_ATTRIB_STRIDE = 33509; // 0x82e5
+    field public static final int GL_MAX_VERTEX_IMAGE_UNIFORMS = 37066; // 0x90ca
+    field public static final int GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS = 37078; // 0x90d6
+    field public static final int GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET = 36446; // 0x8e5e
+    field public static final int GL_NAME_LENGTH = 37625; // 0x92f9
+    field public static final int GL_NUM_ACTIVE_VARIABLES = 37636; // 0x9304
+    field public static final int GL_OFFSET = 37628; // 0x92fc
+    field public static final int GL_PIXEL_BUFFER_BARRIER_BIT = 128; // 0x80
+    field public static final int GL_PROGRAM_INPUT = 37603; // 0x92e3
+    field public static final int GL_PROGRAM_OUTPUT = 37604; // 0x92e4
+    field public static final int GL_PROGRAM_PIPELINE_BINDING = 33370; // 0x825a
+    field public static final int GL_PROGRAM_SEPARABLE = 33368; // 0x8258
+    field public static final int GL_READ_ONLY = 35000; // 0x88b8
+    field public static final int GL_READ_WRITE = 35002; // 0x88ba
+    field public static final int GL_REFERENCED_BY_COMPUTE_SHADER = 37643; // 0x930b
+    field public static final int GL_REFERENCED_BY_FRAGMENT_SHADER = 37642; // 0x930a
+    field public static final int GL_REFERENCED_BY_VERTEX_SHADER = 37638; // 0x9306
+    field public static final int GL_SAMPLER_2D_MULTISAMPLE = 37128; // 0x9108
+    field public static final int GL_SAMPLE_MASK = 36433; // 0x8e51
+    field public static final int GL_SAMPLE_MASK_VALUE = 36434; // 0x8e52
+    field public static final int GL_SAMPLE_POSITION = 36432; // 0x8e50
+    field public static final int GL_SHADER_IMAGE_ACCESS_BARRIER_BIT = 32; // 0x20
+    field public static final int GL_SHADER_STORAGE_BARRIER_BIT = 8192; // 0x2000
+    field public static final int GL_SHADER_STORAGE_BLOCK = 37606; // 0x92e6
+    field public static final int GL_SHADER_STORAGE_BUFFER = 37074; // 0x90d2
+    field public static final int GL_SHADER_STORAGE_BUFFER_BINDING = 37075; // 0x90d3
+    field public static final int GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT = 37087; // 0x90df
+    field public static final int GL_SHADER_STORAGE_BUFFER_SIZE = 37077; // 0x90d5
+    field public static final int GL_SHADER_STORAGE_BUFFER_START = 37076; // 0x90d4
+    field public static final int GL_STENCIL_INDEX = 6401; // 0x1901
+    field public static final int GL_TEXTURE_2D_MULTISAMPLE = 37120; // 0x9100
+    field public static final int GL_TEXTURE_ALPHA_SIZE = 32863; // 0x805f
+    field public static final int GL_TEXTURE_ALPHA_TYPE = 35859; // 0x8c13
+    field public static final int GL_TEXTURE_BINDING_2D_MULTISAMPLE = 37124; // 0x9104
+    field public static final int GL_TEXTURE_BLUE_SIZE = 32862; // 0x805e
+    field public static final int GL_TEXTURE_BLUE_TYPE = 35858; // 0x8c12
+    field public static final int GL_TEXTURE_COMPRESSED = 34465; // 0x86a1
+    field public static final int GL_TEXTURE_DEPTH = 32881; // 0x8071
+    field public static final int GL_TEXTURE_DEPTH_SIZE = 34890; // 0x884a
+    field public static final int GL_TEXTURE_DEPTH_TYPE = 35862; // 0x8c16
+    field public static final int GL_TEXTURE_FETCH_BARRIER_BIT = 8; // 0x8
+    field public static final int GL_TEXTURE_FIXED_SAMPLE_LOCATIONS = 37127; // 0x9107
+    field public static final int GL_TEXTURE_GREEN_SIZE = 32861; // 0x805d
+    field public static final int GL_TEXTURE_GREEN_TYPE = 35857; // 0x8c11
+    field public static final int GL_TEXTURE_HEIGHT = 4097; // 0x1001
+    field public static final int GL_TEXTURE_INTERNAL_FORMAT = 4099; // 0x1003
+    field public static final int GL_TEXTURE_RED_SIZE = 32860; // 0x805c
+    field public static final int GL_TEXTURE_RED_TYPE = 35856; // 0x8c10
+    field public static final int GL_TEXTURE_SAMPLES = 37126; // 0x9106
+    field public static final int GL_TEXTURE_SHARED_SIZE = 35903; // 0x8c3f
+    field public static final int GL_TEXTURE_STENCIL_SIZE = 35057; // 0x88f1
+    field public static final int GL_TEXTURE_UPDATE_BARRIER_BIT = 256; // 0x100
+    field public static final int GL_TEXTURE_WIDTH = 4096; // 0x1000
+    field public static final int GL_TOP_LEVEL_ARRAY_SIZE = 37644; // 0x930c
+    field public static final int GL_TOP_LEVEL_ARRAY_STRIDE = 37645; // 0x930d
+    field public static final int GL_TRANSFORM_FEEDBACK_BARRIER_BIT = 2048; // 0x800
+    field public static final int GL_TRANSFORM_FEEDBACK_VARYING = 37620; // 0x92f4
+    field public static final int GL_TYPE = 37626; // 0x92fa
+    field public static final int GL_UNIFORM = 37601; // 0x92e1
+    field public static final int GL_UNIFORM_BARRIER_BIT = 4; // 0x4
+    field public static final int GL_UNIFORM_BLOCK = 37602; // 0x92e2
+    field public static final int GL_UNSIGNED_INT_ATOMIC_COUNTER = 37595; // 0x92db
+    field public static final int GL_UNSIGNED_INT_IMAGE_2D = 36963; // 0x9063
+    field public static final int GL_UNSIGNED_INT_IMAGE_2D_ARRAY = 36969; // 0x9069
+    field public static final int GL_UNSIGNED_INT_IMAGE_3D = 36964; // 0x9064
+    field public static final int GL_UNSIGNED_INT_IMAGE_CUBE = 36966; // 0x9066
+    field public static final int GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = 37130; // 0x910a
+    field public static final int GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT = 1; // 0x1
+    field public static final int GL_VERTEX_ATTRIB_BINDING = 33492; // 0x82d4
+    field public static final int GL_VERTEX_ATTRIB_RELATIVE_OFFSET = 33493; // 0x82d5
+    field public static final int GL_VERTEX_BINDING_BUFFER = 36687; // 0x8f4f
+    field public static final int GL_VERTEX_BINDING_DIVISOR = 33494; // 0x82d6
+    field public static final int GL_VERTEX_BINDING_OFFSET = 33495; // 0x82d7
+    field public static final int GL_VERTEX_BINDING_STRIDE = 33496; // 0x82d8
+    field public static final int GL_VERTEX_SHADER_BIT = 1; // 0x1
+    field public static final int GL_WRITE_ONLY = 35001; // 0x88b9
+  }
+
+  public class GLES31Ext {
+    method public static void glBlendBarrierKHR();
+    method public static void glBlendEquationSeparateiEXT(int, int, int);
+    method public static void glBlendEquationiEXT(int, int);
+    method public static void glBlendFuncSeparateiEXT(int, int, int, int, int);
+    method public static void glBlendFunciEXT(int, int, int);
+    method public static void glColorMaskiEXT(int, boolean, boolean, boolean, boolean);
+    method public static void glCopyImageSubDataEXT(int, int, int, int, int, int, int, int, int, int, int, int, int, int, int);
+    method public static void glDebugMessageCallbackKHR(android.opengl.GLES31Ext.DebugProcKHR);
+    method public static void glDebugMessageControlKHR(int, int, int, int, int[], int, boolean);
+    method public static void glDebugMessageControlKHR(int, int, int, int, java.nio.IntBuffer, boolean);
+    method public static void glDebugMessageInsertKHR(int, int, int, int, String);
+    method public static void glDisableiEXT(int, int);
+    method public static void glEnableiEXT(int, int);
+    method public static void glFramebufferTextureEXT(int, int, int, int);
+    method public static android.opengl.GLES31Ext.DebugProcKHR glGetDebugMessageCallbackKHR();
+    method public static int glGetDebugMessageLogKHR(int, int, int[], int, int[], int, int[], int, int[], int, int[], int, byte[], int);
+    method public static int glGetDebugMessageLogKHR(int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.ByteBuffer);
+    method public static String[] glGetDebugMessageLogKHR(int, int[], int, int[], int, int[], int, int[], int);
+    method public static String[] glGetDebugMessageLogKHR(int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer);
+    method public static String glGetObjectLabelKHR(int, int);
+    method public static String glGetObjectPtrLabelKHR(long);
+    method public static void glGetSamplerParameterIivEXT(int, int, int[], int);
+    method public static void glGetSamplerParameterIivEXT(int, int, java.nio.IntBuffer);
+    method public static void glGetSamplerParameterIuivEXT(int, int, int[], int);
+    method public static void glGetSamplerParameterIuivEXT(int, int, java.nio.IntBuffer);
+    method public static void glGetTexParameterIivEXT(int, int, int[], int);
+    method public static void glGetTexParameterIivEXT(int, int, java.nio.IntBuffer);
+    method public static void glGetTexParameterIuivEXT(int, int, int[], int);
+    method public static void glGetTexParameterIuivEXT(int, int, java.nio.IntBuffer);
+    method public static boolean glIsEnablediEXT(int, int);
+    method public static void glMinSampleShadingOES(float);
+    method public static void glObjectLabelKHR(int, int, int, String);
+    method public static void glObjectPtrLabelKHR(long, String);
+    method public static void glPatchParameteriEXT(int, int);
+    method public static void glPopDebugGroupKHR();
+    method public static void glPrimitiveBoundingBoxEXT(float, float, float, float, float, float, float, float);
+    method public static void glPushDebugGroupKHR(int, int, int, String);
+    method public static void glSamplerParameterIivEXT(int, int, int[], int);
+    method public static void glSamplerParameterIivEXT(int, int, java.nio.IntBuffer);
+    method public static void glSamplerParameterIuivEXT(int, int, int[], int);
+    method public static void glSamplerParameterIuivEXT(int, int, java.nio.IntBuffer);
+    method public static void glTexBufferEXT(int, int, int);
+    method public static void glTexBufferRangeEXT(int, int, int, int, int);
+    method public static void glTexParameterIivEXT(int, int, int[], int);
+    method public static void glTexParameterIivEXT(int, int, java.nio.IntBuffer);
+    method public static void glTexParameterIuivEXT(int, int, int[], int);
+    method public static void glTexParameterIuivEXT(int, int, java.nio.IntBuffer);
+    method public static void glTexStorage3DMultisampleOES(int, int, int, int, int, int, boolean);
+    field public static final int GL_BLEND_ADVANCED_COHERENT_KHR = 37509; // 0x9285
+    field public static final int GL_BUFFER_KHR = 33504; // 0x82e0
+    field public static final int GL_CLAMP_TO_BORDER_EXT = 33069; // 0x812d
+    field public static final int GL_COLORBURN_KHR = 37530; // 0x929a
+    field public static final int GL_COLORDODGE_KHR = 37529; // 0x9299
+    field public static final int GL_COMPRESSED_RGBA_ASTC_10x10_KHR = 37819; // 0x93bb
+    field public static final int GL_COMPRESSED_RGBA_ASTC_10x5_KHR = 37816; // 0x93b8
+    field public static final int GL_COMPRESSED_RGBA_ASTC_10x6_KHR = 37817; // 0x93b9
+    field public static final int GL_COMPRESSED_RGBA_ASTC_10x8_KHR = 37818; // 0x93ba
+    field public static final int GL_COMPRESSED_RGBA_ASTC_12x10_KHR = 37820; // 0x93bc
+    field public static final int GL_COMPRESSED_RGBA_ASTC_12x12_KHR = 37821; // 0x93bd
+    field public static final int GL_COMPRESSED_RGBA_ASTC_4x4_KHR = 37808; // 0x93b0
+    field public static final int GL_COMPRESSED_RGBA_ASTC_5x4_KHR = 37809; // 0x93b1
+    field public static final int GL_COMPRESSED_RGBA_ASTC_5x5_KHR = 37810; // 0x93b2
+    field public static final int GL_COMPRESSED_RGBA_ASTC_6x5_KHR = 37811; // 0x93b3
+    field public static final int GL_COMPRESSED_RGBA_ASTC_6x6_KHR = 37812; // 0x93b4
+    field public static final int GL_COMPRESSED_RGBA_ASTC_8x5_KHR = 37813; // 0x93b5
+    field public static final int GL_COMPRESSED_RGBA_ASTC_8x6_KHR = 37814; // 0x93b6
+    field public static final int GL_COMPRESSED_RGBA_ASTC_8x8_KHR = 37815; // 0x93b7
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR = 37851; // 0x93db
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR = 37848; // 0x93d8
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR = 37849; // 0x93d9
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR = 37850; // 0x93da
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR = 37852; // 0x93dc
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR = 37853; // 0x93dd
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR = 37840; // 0x93d0
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR = 37841; // 0x93d1
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR = 37842; // 0x93d2
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR = 37843; // 0x93d3
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR = 37844; // 0x93d4
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR = 37845; // 0x93d5
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR = 37846; // 0x93d6
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR = 37847; // 0x93d7
+    field public static final int GL_CONTEXT_FLAG_DEBUG_BIT_KHR = 2; // 0x2
+    field public static final int GL_DARKEN_KHR = 37527; // 0x9297
+    field public static final int GL_DEBUG_CALLBACK_FUNCTION_KHR = 33348; // 0x8244
+    field public static final int GL_DEBUG_CALLBACK_USER_PARAM_KHR = 33349; // 0x8245
+    field public static final int GL_DEBUG_GROUP_STACK_DEPTH_KHR = 33389; // 0x826d
+    field public static final int GL_DEBUG_LOGGED_MESSAGES_KHR = 37189; // 0x9145
+    field public static final int GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR = 33347; // 0x8243
+    field public static final int GL_DEBUG_OUTPUT_KHR = 37600; // 0x92e0
+    field public static final int GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR = 33346; // 0x8242
+    field public static final int GL_DEBUG_SEVERITY_HIGH_KHR = 37190; // 0x9146
+    field public static final int GL_DEBUG_SEVERITY_LOW_KHR = 37192; // 0x9148
+    field public static final int GL_DEBUG_SEVERITY_MEDIUM_KHR = 37191; // 0x9147
+    field public static final int GL_DEBUG_SEVERITY_NOTIFICATION_KHR = 33387; // 0x826b
+    field public static final int GL_DEBUG_SOURCE_API_KHR = 33350; // 0x8246
+    field public static final int GL_DEBUG_SOURCE_APPLICATION_KHR = 33354; // 0x824a
+    field public static final int GL_DEBUG_SOURCE_OTHER_KHR = 33355; // 0x824b
+    field public static final int GL_DEBUG_SOURCE_SHADER_COMPILER_KHR = 33352; // 0x8248
+    field public static final int GL_DEBUG_SOURCE_THIRD_PARTY_KHR = 33353; // 0x8249
+    field public static final int GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR = 33351; // 0x8247
+    field public static final int GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR = 33357; // 0x824d
+    field public static final int GL_DEBUG_TYPE_ERROR_KHR = 33356; // 0x824c
+    field public static final int GL_DEBUG_TYPE_MARKER_KHR = 33384; // 0x8268
+    field public static final int GL_DEBUG_TYPE_OTHER_KHR = 33361; // 0x8251
+    field public static final int GL_DEBUG_TYPE_PERFORMANCE_KHR = 33360; // 0x8250
+    field public static final int GL_DEBUG_TYPE_POP_GROUP_KHR = 33386; // 0x826a
+    field public static final int GL_DEBUG_TYPE_PORTABILITY_KHR = 33359; // 0x824f
+    field public static final int GL_DEBUG_TYPE_PUSH_GROUP_KHR = 33385; // 0x8269
+    field public static final int GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR = 33358; // 0x824e
+    field public static final int GL_DECODE_EXT = 35401; // 0x8a49
+    field public static final int GL_DIFFERENCE_KHR = 37534; // 0x929e
+    field public static final int GL_EXCLUSION_KHR = 37536; // 0x92a0
+    field public static final int GL_FIRST_VERTEX_CONVENTION_EXT = 36429; // 0x8e4d
+    field public static final int GL_FRACTIONAL_EVEN_EXT = 36476; // 0x8e7c
+    field public static final int GL_FRACTIONAL_ODD_EXT = 36475; // 0x8e7b
+    field public static final int GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES = 36445; // 0x8e5d
+    field public static final int GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT = 36263; // 0x8da7
+    field public static final int GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT = 37650; // 0x9312
+    field public static final int GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT = 36264; // 0x8da8
+    field public static final int GL_GEOMETRY_LINKED_INPUT_TYPE_EXT = 35095; // 0x8917
+    field public static final int GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT = 35096; // 0x8918
+    field public static final int GL_GEOMETRY_LINKED_VERTICES_OUT_EXT = 35094; // 0x8916
+    field public static final int GL_GEOMETRY_SHADER_BIT_EXT = 4; // 0x4
+    field public static final int GL_GEOMETRY_SHADER_EXT = 36313; // 0x8dd9
+    field public static final int GL_GEOMETRY_SHADER_INVOCATIONS_EXT = 34943; // 0x887f
+    field public static final int GL_HARDLIGHT_KHR = 37531; // 0x929b
+    field public static final int GL_HSL_COLOR_KHR = 37551; // 0x92af
+    field public static final int GL_HSL_HUE_KHR = 37549; // 0x92ad
+    field public static final int GL_HSL_LUMINOSITY_KHR = 37552; // 0x92b0
+    field public static final int GL_HSL_SATURATION_KHR = 37550; // 0x92ae
+    field public static final int GL_IMAGE_BUFFER_EXT = 36945; // 0x9051
+    field public static final int GL_IMAGE_CUBE_MAP_ARRAY_EXT = 36948; // 0x9054
+    field public static final int GL_INT_IMAGE_BUFFER_EXT = 36956; // 0x905c
+    field public static final int GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT = 36959; // 0x905f
+    field public static final int GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = 37132; // 0x910c
+    field public static final int GL_INT_SAMPLER_BUFFER_EXT = 36304; // 0x8dd0
+    field public static final int GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT = 36878; // 0x900e
+    field public static final int GL_ISOLINES_EXT = 36474; // 0x8e7a
+    field public static final int GL_IS_PER_PATCH_EXT = 37607; // 0x92e7
+    field public static final int GL_LAST_VERTEX_CONVENTION_EXT = 36430; // 0x8e4e
+    field public static final int GL_LAYER_PROVOKING_VERTEX_EXT = 33374; // 0x825e
+    field public static final int GL_LIGHTEN_KHR = 37528; // 0x9298
+    field public static final int GL_LINES_ADJACENCY_EXT = 10; // 0xa
+    field public static final int GL_LINE_STRIP_ADJACENCY_EXT = 11; // 0xb
+    field public static final int GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT = 35378; // 0x8a32
+    field public static final int GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT = 36382; // 0x8e1e
+    field public static final int GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT = 36383; // 0x8e1f
+    field public static final int GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR = 33388; // 0x826c
+    field public static final int GL_MAX_DEBUG_LOGGED_MESSAGES_KHR = 37188; // 0x9144
+    field public static final int GL_MAX_DEBUG_MESSAGE_LENGTH_KHR = 37187; // 0x9143
+    field public static final int GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES = 36444; // 0x8e5c
+    field public static final int GL_MAX_FRAMEBUFFER_LAYERS_EXT = 37655; // 0x9317
+    field public static final int GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT = 37589; // 0x92d5
+    field public static final int GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT = 37583; // 0x92cf
+    field public static final int GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT = 37069; // 0x90cd
+    field public static final int GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT = 37155; // 0x9123
+    field public static final int GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT = 37156; // 0x9124
+    field public static final int GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT = 36320; // 0x8de0
+    field public static final int GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT = 36442; // 0x8e5a
+    field public static final int GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT = 37079; // 0x90d7
+    field public static final int GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT = 35881; // 0x8c29
+    field public static final int GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT = 36321; // 0x8de1
+    field public static final int GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT = 35372; // 0x8a2c
+    field public static final int GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT = 36319; // 0x8ddf
+    field public static final int GL_MAX_LABEL_LENGTH_KHR = 33512; // 0x82e8
+    field public static final int GL_MAX_PATCH_VERTICES_EXT = 36477; // 0x8e7d
+    field public static final int GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT = 37587; // 0x92d3
+    field public static final int GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT = 37581; // 0x92cd
+    field public static final int GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT = 37067; // 0x90cb
+    field public static final int GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT = 34924; // 0x886c
+    field public static final int GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT = 36483; // 0x8e83
+    field public static final int GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT = 37080; // 0x90d8
+    field public static final int GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT = 36481; // 0x8e81
+    field public static final int GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT = 36485; // 0x8e85
+    field public static final int GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT = 36489; // 0x8e89
+    field public static final int GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT = 36479; // 0x8e7f
+    field public static final int GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT = 37588; // 0x92d4
+    field public static final int GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT = 37582; // 0x92ce
+    field public static final int GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT = 37068; // 0x90cc
+    field public static final int GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT = 34925; // 0x886d
+    field public static final int GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT = 36486; // 0x8e86
+    field public static final int GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT = 37081; // 0x90d9
+    field public static final int GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT = 36482; // 0x8e82
+    field public static final int GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT = 36490; // 0x8e8a
+    field public static final int GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT = 36480; // 0x8e80
+    field public static final int GL_MAX_TESS_GEN_LEVEL_EXT = 36478; // 0x8e7e
+    field public static final int GL_MAX_TESS_PATCH_COMPONENTS_EXT = 36484; // 0x8e84
+    field public static final int GL_MAX_TEXTURE_BUFFER_SIZE_EXT = 35883; // 0x8c2b
+    field public static final int GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES = 36443; // 0x8e5b
+    field public static final int GL_MIN_SAMPLE_SHADING_VALUE_OES = 35895; // 0x8c37
+    field public static final int GL_MULTIPLY_KHR = 37524; // 0x9294
+    field public static final int GL_OVERLAY_KHR = 37526; // 0x9296
+    field public static final int GL_PATCHES_EXT = 14; // 0xe
+    field public static final int GL_PATCH_VERTICES_EXT = 36466; // 0x8e72
+    field public static final int GL_PRIMITIVES_GENERATED_EXT = 35975; // 0x8c87
+    field public static final int GL_PRIMITIVE_BOUNDING_BOX_EXT = 37566; // 0x92be
+    field public static final int GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED = 33313; // 0x8221
+    field public static final int GL_PROGRAM_KHR = 33506; // 0x82e2
+    field public static final int GL_QUADS_EXT = 7; // 0x7
+    field public static final int GL_QUERY_KHR = 33507; // 0x82e3
+    field public static final int GL_REFERENCED_BY_GEOMETRY_SHADER_EXT = 37641; // 0x9309
+    field public static final int GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT = 37639; // 0x9307
+    field public static final int GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT = 37640; // 0x9308
+    field public static final int GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = 37131; // 0x910b
+    field public static final int GL_SAMPLER_BUFFER_EXT = 36290; // 0x8dc2
+    field public static final int GL_SAMPLER_CUBE_MAP_ARRAY_EXT = 36876; // 0x900c
+    field public static final int GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT = 36877; // 0x900d
+    field public static final int GL_SAMPLER_KHR = 33510; // 0x82e6
+    field public static final int GL_SAMPLE_SHADING_OES = 35894; // 0x8c36
+    field public static final int GL_SCREEN_KHR = 37525; // 0x9295
+    field public static final int GL_SHADER_KHR = 33505; // 0x82e1
+    field public static final int GL_SKIP_DECODE_EXT = 35402; // 0x8a4a
+    field public static final int GL_SOFTLIGHT_KHR = 37532; // 0x929c
+    field public static final int GL_STACK_OVERFLOW_KHR = 1283; // 0x503
+    field public static final int GL_STACK_UNDERFLOW_KHR = 1284; // 0x504
+    field public static final int GL_STENCIL_INDEX8_OES = 36168; // 0x8d48
+    field public static final int GL_STENCIL_INDEX_OES = 6401; // 0x1901
+    field public static final int GL_TESS_CONTROL_OUTPUT_VERTICES_EXT = 36469; // 0x8e75
+    field public static final int GL_TESS_CONTROL_SHADER_BIT_EXT = 8; // 0x8
+    field public static final int GL_TESS_CONTROL_SHADER_EXT = 36488; // 0x8e88
+    field public static final int GL_TESS_EVALUATION_SHADER_BIT_EXT = 16; // 0x10
+    field public static final int GL_TESS_EVALUATION_SHADER_EXT = 36487; // 0x8e87
+    field public static final int GL_TESS_GEN_MODE_EXT = 36470; // 0x8e76
+    field public static final int GL_TESS_GEN_POINT_MODE_EXT = 36473; // 0x8e79
+    field public static final int GL_TESS_GEN_SPACING_EXT = 36471; // 0x8e77
+    field public static final int GL_TESS_GEN_VERTEX_ORDER_EXT = 36472; // 0x8e78
+    field public static final int GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES = 37122; // 0x9102
+    field public static final int GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES = 37125; // 0x9105
+    field public static final int GL_TEXTURE_BINDING_BUFFER_EXT = 35884; // 0x8c2c
+    field public static final int GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT = 36874; // 0x900a
+    field public static final int GL_TEXTURE_BORDER_COLOR_EXT = 4100; // 0x1004
+    field public static final int GL_TEXTURE_BUFFER_BINDING_EXT = 35882; // 0x8c2a
+    field public static final int GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT = 35885; // 0x8c2d
+    field public static final int GL_TEXTURE_BUFFER_EXT = 35882; // 0x8c2a
+    field public static final int GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT = 37279; // 0x919f
+    field public static final int GL_TEXTURE_BUFFER_OFFSET_EXT = 37277; // 0x919d
+    field public static final int GL_TEXTURE_BUFFER_SIZE_EXT = 37278; // 0x919e
+    field public static final int GL_TEXTURE_CUBE_MAP_ARRAY_EXT = 36873; // 0x9009
+    field public static final int GL_TEXTURE_SRGB_DECODE_EXT = 35400; // 0x8a48
+    field public static final int GL_TRIANGLES_ADJACENCY_EXT = 12; // 0xc
+    field public static final int GL_TRIANGLE_STRIP_ADJACENCY_EXT = 13; // 0xd
+    field public static final int GL_UNDEFINED_VERTEX_EXT = 33376; // 0x8260
+    field public static final int GL_UNSIGNED_INT_IMAGE_BUFFER_EXT = 36967; // 0x9067
+    field public static final int GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT = 36970; // 0x906a
+    field public static final int GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = 37133; // 0x910d
+    field public static final int GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT = 36312; // 0x8dd8
+    field public static final int GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT = 36879; // 0x900f
+    field public static final int GL_VERTEX_ARRAY_KHR = 32884; // 0x8074
+  }
+
+  public static interface GLES31Ext.DebugProcKHR {
+    method public void onMessage(int, int, int, int, String);
+  }
+
+  public class GLES32 extends android.opengl.GLES31 {
+    method public static void glBlendBarrier();
+    method public static void glBlendEquationSeparatei(int, int, int);
+    method public static void glBlendEquationi(int, int);
+    method public static void glBlendFuncSeparatei(int, int, int, int, int);
+    method public static void glBlendFunci(int, int, int);
+    method public static void glColorMaski(int, boolean, boolean, boolean, boolean);
+    method public static void glCopyImageSubData(int, int, int, int, int, int, int, int, int, int, int, int, int, int, int);
+    method public static void glDebugMessageCallback(android.opengl.GLES32.DebugProc);
+    method public static void glDebugMessageControl(int, int, int, int, int[], int, boolean);
+    method public static void glDebugMessageControl(int, int, int, int, java.nio.IntBuffer, boolean);
+    method public static void glDebugMessageInsert(int, int, int, int, int, String);
+    method public static void glDisablei(int, int);
+    method public static void glDrawElementsBaseVertex(int, int, int, java.nio.Buffer, int);
+    method public static void glDrawElementsInstancedBaseVertex(int, int, int, java.nio.Buffer, int, int);
+    method public static void glDrawElementsInstancedBaseVertex(int, int, int, int, int, int);
+    method public static void glDrawRangeElementsBaseVertex(int, int, int, int, int, java.nio.Buffer, int);
+    method public static void glEnablei(int, int);
+    method public static void glFramebufferTexture(int, int, int, int);
+    method public static int glGetDebugMessageLog(int, int, int[], int, int[], int, int[], int, int[], int, int[], int, byte[], int);
+    method public static int glGetDebugMessageLog(int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.ByteBuffer);
+    method public static String[] glGetDebugMessageLog(int, int[], int, int[], int, int[], int, int[], int);
+    method public static String[] glGetDebugMessageLog(int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer);
+    method public static int glGetGraphicsResetStatus();
+    method public static String glGetObjectLabel(int, int);
+    method public static String glGetObjectPtrLabel(long);
+    method public static long glGetPointerv(int);
+    method public static void glGetSamplerParameterIiv(int, int, int[], int);
+    method public static void glGetSamplerParameterIiv(int, int, java.nio.IntBuffer);
+    method public static void glGetSamplerParameterIuiv(int, int, int[], int);
+    method public static void glGetSamplerParameterIuiv(int, int, java.nio.IntBuffer);
+    method public static void glGetTexParameterIiv(int, int, int[], int);
+    method public static void glGetTexParameterIiv(int, int, java.nio.IntBuffer);
+    method public static void glGetTexParameterIuiv(int, int, int[], int);
+    method public static void glGetTexParameterIuiv(int, int, java.nio.IntBuffer);
+    method public static void glGetnUniformfv(int, int, int, float[], int);
+    method public static void glGetnUniformfv(int, int, int, java.nio.FloatBuffer);
+    method public static void glGetnUniformiv(int, int, int, int[], int);
+    method public static void glGetnUniformiv(int, int, int, java.nio.IntBuffer);
+    method public static void glGetnUniformuiv(int, int, int, int[], int);
+    method public static void glGetnUniformuiv(int, int, int, java.nio.IntBuffer);
+    method public static boolean glIsEnabledi(int, int);
+    method public static void glMinSampleShading(float);
+    method public static void glObjectLabel(int, int, int, String);
+    method public static void glObjectPtrLabel(long, String);
+    method public static void glPatchParameteri(int, int);
+    method public static void glPopDebugGroup();
+    method public static void glPrimitiveBoundingBox(float, float, float, float, float, float, float, float);
+    method public static void glPushDebugGroup(int, int, int, String);
+    method public static void glReadnPixels(int, int, int, int, int, int, int, java.nio.Buffer);
+    method public static void glSamplerParameterIiv(int, int, int[], int);
+    method public static void glSamplerParameterIiv(int, int, java.nio.IntBuffer);
+    method public static void glSamplerParameterIuiv(int, int, int[], int);
+    method public static void glSamplerParameterIuiv(int, int, java.nio.IntBuffer);
+    method public static void glTexBuffer(int, int, int);
+    method public static void glTexBufferRange(int, int, int, int, int);
+    method public static void glTexParameterIiv(int, int, int[], int);
+    method public static void glTexParameterIiv(int, int, java.nio.IntBuffer);
+    method public static void glTexParameterIuiv(int, int, int[], int);
+    method public static void glTexParameterIuiv(int, int, java.nio.IntBuffer);
+    method public static void glTexStorage3DMultisample(int, int, int, int, int, int, boolean);
+    field public static final int GL_BUFFER = 33504; // 0x82e0
+    field public static final int GL_CLAMP_TO_BORDER = 33069; // 0x812d
+    field public static final int GL_COLORBURN = 37530; // 0x929a
+    field public static final int GL_COLORDODGE = 37529; // 0x9299
+    field public static final int GL_COMPRESSED_RGBA_ASTC_10x10 = 37819; // 0x93bb
+    field public static final int GL_COMPRESSED_RGBA_ASTC_10x5 = 37816; // 0x93b8
+    field public static final int GL_COMPRESSED_RGBA_ASTC_10x6 = 37817; // 0x93b9
+    field public static final int GL_COMPRESSED_RGBA_ASTC_10x8 = 37818; // 0x93ba
+    field public static final int GL_COMPRESSED_RGBA_ASTC_12x10 = 37820; // 0x93bc
+    field public static final int GL_COMPRESSED_RGBA_ASTC_12x12 = 37821; // 0x93bd
+    field public static final int GL_COMPRESSED_RGBA_ASTC_4x4 = 37808; // 0x93b0
+    field public static final int GL_COMPRESSED_RGBA_ASTC_5x4 = 37809; // 0x93b1
+    field public static final int GL_COMPRESSED_RGBA_ASTC_5x5 = 37810; // 0x93b2
+    field public static final int GL_COMPRESSED_RGBA_ASTC_6x5 = 37811; // 0x93b3
+    field public static final int GL_COMPRESSED_RGBA_ASTC_6x6 = 37812; // 0x93b4
+    field public static final int GL_COMPRESSED_RGBA_ASTC_8x5 = 37813; // 0x93b5
+    field public static final int GL_COMPRESSED_RGBA_ASTC_8x6 = 37814; // 0x93b6
+    field public static final int GL_COMPRESSED_RGBA_ASTC_8x8 = 37815; // 0x93b7
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10 = 37851; // 0x93db
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5 = 37848; // 0x93d8
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6 = 37849; // 0x93d9
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8 = 37850; // 0x93da
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10 = 37852; // 0x93dc
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12 = 37853; // 0x93dd
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4 = 37840; // 0x93d0
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4 = 37841; // 0x93d1
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5 = 37842; // 0x93d2
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5 = 37843; // 0x93d3
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6 = 37844; // 0x93d4
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5 = 37845; // 0x93d5
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6 = 37846; // 0x93d6
+    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8 = 37847; // 0x93d7
+    field public static final int GL_CONTEXT_FLAGS = 33310; // 0x821e
+    field public static final int GL_CONTEXT_FLAG_DEBUG_BIT = 2; // 0x2
+    field public static final int GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT = 4; // 0x4
+    field public static final int GL_CONTEXT_LOST = 1287; // 0x507
+    field public static final int GL_DARKEN = 37527; // 0x9297
+    field public static final int GL_DEBUG_CALLBACK_FUNCTION = 33348; // 0x8244
+    field public static final int GL_DEBUG_CALLBACK_USER_PARAM = 33349; // 0x8245
+    field public static final int GL_DEBUG_GROUP_STACK_DEPTH = 33389; // 0x826d
+    field public static final int GL_DEBUG_LOGGED_MESSAGES = 37189; // 0x9145
+    field public static final int GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH = 33347; // 0x8243
+    field public static final int GL_DEBUG_OUTPUT = 37600; // 0x92e0
+    field public static final int GL_DEBUG_OUTPUT_SYNCHRONOUS = 33346; // 0x8242
+    field public static final int GL_DEBUG_SEVERITY_HIGH = 37190; // 0x9146
+    field public static final int GL_DEBUG_SEVERITY_LOW = 37192; // 0x9148
+    field public static final int GL_DEBUG_SEVERITY_MEDIUM = 37191; // 0x9147
+    field public static final int GL_DEBUG_SEVERITY_NOTIFICATION = 33387; // 0x826b
+    field public static final int GL_DEBUG_SOURCE_API = 33350; // 0x8246
+    field public static final int GL_DEBUG_SOURCE_APPLICATION = 33354; // 0x824a
+    field public static final int GL_DEBUG_SOURCE_OTHER = 33355; // 0x824b
+    field public static final int GL_DEBUG_SOURCE_SHADER_COMPILER = 33352; // 0x8248
+    field public static final int GL_DEBUG_SOURCE_THIRD_PARTY = 33353; // 0x8249
+    field public static final int GL_DEBUG_SOURCE_WINDOW_SYSTEM = 33351; // 0x8247
+    field public static final int GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR = 33357; // 0x824d
+    field public static final int GL_DEBUG_TYPE_ERROR = 33356; // 0x824c
+    field public static final int GL_DEBUG_TYPE_MARKER = 33384; // 0x8268
+    field public static final int GL_DEBUG_TYPE_OTHER = 33361; // 0x8251
+    field public static final int GL_DEBUG_TYPE_PERFORMANCE = 33360; // 0x8250
+    field public static final int GL_DEBUG_TYPE_POP_GROUP = 33386; // 0x826a
+    field public static final int GL_DEBUG_TYPE_PORTABILITY = 33359; // 0x824f
+    field public static final int GL_DEBUG_TYPE_PUSH_GROUP = 33385; // 0x8269
+    field public static final int GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR = 33358; // 0x824e
+    field public static final int GL_DIFFERENCE = 37534; // 0x929e
+    field public static final int GL_EXCLUSION = 37536; // 0x92a0
+    field public static final int GL_FIRST_VERTEX_CONVENTION = 36429; // 0x8e4d
+    field public static final int GL_FRACTIONAL_EVEN = 36476; // 0x8e7c
+    field public static final int GL_FRACTIONAL_ODD = 36475; // 0x8e7b
+    field public static final int GL_FRAGMENT_INTERPOLATION_OFFSET_BITS = 36445; // 0x8e5d
+    field public static final int GL_FRAMEBUFFER_ATTACHMENT_LAYERED = 36263; // 0x8da7
+    field public static final int GL_FRAMEBUFFER_DEFAULT_LAYERS = 37650; // 0x9312
+    field public static final int GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = 36264; // 0x8da8
+    field public static final int GL_GEOMETRY_INPUT_TYPE = 35095; // 0x8917
+    field public static final int GL_GEOMETRY_OUTPUT_TYPE = 35096; // 0x8918
+    field public static final int GL_GEOMETRY_SHADER = 36313; // 0x8dd9
+    field public static final int GL_GEOMETRY_SHADER_BIT = 4; // 0x4
+    field public static final int GL_GEOMETRY_SHADER_INVOCATIONS = 34943; // 0x887f
+    field public static final int GL_GEOMETRY_VERTICES_OUT = 35094; // 0x8916
+    field public static final int GL_GUILTY_CONTEXT_RESET = 33363; // 0x8253
+    field public static final int GL_HARDLIGHT = 37531; // 0x929b
+    field public static final int GL_HSL_COLOR = 37551; // 0x92af
+    field public static final int GL_HSL_HUE = 37549; // 0x92ad
+    field public static final int GL_HSL_LUMINOSITY = 37552; // 0x92b0
+    field public static final int GL_HSL_SATURATION = 37550; // 0x92ae
+    field public static final int GL_IMAGE_BUFFER = 36945; // 0x9051
+    field public static final int GL_IMAGE_CUBE_MAP_ARRAY = 36948; // 0x9054
+    field public static final int GL_INNOCENT_CONTEXT_RESET = 33364; // 0x8254
+    field public static final int GL_INT_IMAGE_BUFFER = 36956; // 0x905c
+    field public static final int GL_INT_IMAGE_CUBE_MAP_ARRAY = 36959; // 0x905f
+    field public static final int GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 37132; // 0x910c
+    field public static final int GL_INT_SAMPLER_BUFFER = 36304; // 0x8dd0
+    field public static final int GL_INT_SAMPLER_CUBE_MAP_ARRAY = 36878; // 0x900e
+    field public static final int GL_ISOLINES = 36474; // 0x8e7a
+    field public static final int GL_IS_PER_PATCH = 37607; // 0x92e7
+    field public static final int GL_LAST_VERTEX_CONVENTION = 36430; // 0x8e4e
+    field public static final int GL_LAYER_PROVOKING_VERTEX = 33374; // 0x825e
+    field public static final int GL_LIGHTEN = 37528; // 0x9298
+    field public static final int GL_LINES_ADJACENCY = 10; // 0xa
+    field public static final int GL_LINE_STRIP_ADJACENCY = 11; // 0xb
+    field public static final int GL_LOSE_CONTEXT_ON_RESET = 33362; // 0x8252
+    field public static final int GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS = 35378; // 0x8a32
+    field public static final int GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS = 36382; // 0x8e1e
+    field public static final int GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS = 36383; // 0x8e1f
+    field public static final int GL_MAX_DEBUG_GROUP_STACK_DEPTH = 33388; // 0x826c
+    field public static final int GL_MAX_DEBUG_LOGGED_MESSAGES = 37188; // 0x9144
+    field public static final int GL_MAX_DEBUG_MESSAGE_LENGTH = 37187; // 0x9143
+    field public static final int GL_MAX_FRAGMENT_INTERPOLATION_OFFSET = 36444; // 0x8e5c
+    field public static final int GL_MAX_FRAMEBUFFER_LAYERS = 37655; // 0x9317
+    field public static final int GL_MAX_GEOMETRY_ATOMIC_COUNTERS = 37589; // 0x92d5
+    field public static final int GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS = 37583; // 0x92cf
+    field public static final int GL_MAX_GEOMETRY_IMAGE_UNIFORMS = 37069; // 0x90cd
+    field public static final int GL_MAX_GEOMETRY_INPUT_COMPONENTS = 37155; // 0x9123
+    field public static final int GL_MAX_GEOMETRY_OUTPUT_COMPONENTS = 37156; // 0x9124
+    field public static final int GL_MAX_GEOMETRY_OUTPUT_VERTICES = 36320; // 0x8de0
+    field public static final int GL_MAX_GEOMETRY_SHADER_INVOCATIONS = 36442; // 0x8e5a
+    field public static final int GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS = 37079; // 0x90d7
+    field public static final int GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = 35881; // 0x8c29
+    field public static final int GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 36321; // 0x8de1
+    field public static final int GL_MAX_GEOMETRY_UNIFORM_BLOCKS = 35372; // 0x8a2c
+    field public static final int GL_MAX_GEOMETRY_UNIFORM_COMPONENTS = 36319; // 0x8ddf
+    field public static final int GL_MAX_LABEL_LENGTH = 33512; // 0x82e8
+    field public static final int GL_MAX_PATCH_VERTICES = 36477; // 0x8e7d
+    field public static final int GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS = 37587; // 0x92d3
+    field public static final int GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS = 37581; // 0x92cd
+    field public static final int GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS = 37067; // 0x90cb
+    field public static final int GL_MAX_TESS_CONTROL_INPUT_COMPONENTS = 34924; // 0x886c
+    field public static final int GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS = 36483; // 0x8e83
+    field public static final int GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS = 37080; // 0x90d8
+    field public static final int GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS = 36481; // 0x8e81
+    field public static final int GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS = 36485; // 0x8e85
+    field public static final int GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS = 36489; // 0x8e89
+    field public static final int GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS = 36479; // 0x8e7f
+    field public static final int GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS = 37588; // 0x92d4
+    field public static final int GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS = 37582; // 0x92ce
+    field public static final int GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS = 37068; // 0x90cc
+    field public static final int GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS = 34925; // 0x886d
+    field public static final int GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS = 36486; // 0x8e86
+    field public static final int GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS = 37081; // 0x90d9
+    field public static final int GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS = 36482; // 0x8e82
+    field public static final int GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS = 36490; // 0x8e8a
+    field public static final int GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS = 36480; // 0x8e80
+    field public static final int GL_MAX_TESS_GEN_LEVEL = 36478; // 0x8e7e
+    field public static final int GL_MAX_TESS_PATCH_COMPONENTS = 36484; // 0x8e84
+    field public static final int GL_MAX_TEXTURE_BUFFER_SIZE = 35883; // 0x8c2b
+    field public static final int GL_MIN_FRAGMENT_INTERPOLATION_OFFSET = 36443; // 0x8e5b
+    field public static final int GL_MIN_SAMPLE_SHADING_VALUE = 35895; // 0x8c37
+    field public static final int GL_MULTIPLY = 37524; // 0x9294
+    field public static final int GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY = 37762; // 0x9382
+    field public static final int GL_MULTISAMPLE_LINE_WIDTH_RANGE = 37761; // 0x9381
+    field public static final int GL_NO_RESET_NOTIFICATION = 33377; // 0x8261
+    field public static final int GL_OVERLAY = 37526; // 0x9296
+    field public static final int GL_PATCHES = 14; // 0xe
+    field public static final int GL_PATCH_VERTICES = 36466; // 0x8e72
+    field public static final int GL_PRIMITIVES_GENERATED = 35975; // 0x8c87
+    field public static final int GL_PRIMITIVE_BOUNDING_BOX = 37566; // 0x92be
+    field public static final int GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED = 33313; // 0x8221
+    field public static final int GL_PROGRAM = 33506; // 0x82e2
+    field public static final int GL_PROGRAM_PIPELINE = 33508; // 0x82e4
+    field public static final int GL_QUADS = 7; // 0x7
+    field public static final int GL_QUERY = 33507; // 0x82e3
+    field public static final int GL_REFERENCED_BY_GEOMETRY_SHADER = 37641; // 0x9309
+    field public static final int GL_REFERENCED_BY_TESS_CONTROL_SHADER = 37639; // 0x9307
+    field public static final int GL_REFERENCED_BY_TESS_EVALUATION_SHADER = 37640; // 0x9308
+    field public static final int GL_RESET_NOTIFICATION_STRATEGY = 33366; // 0x8256
+    field public static final int GL_SAMPLER = 33510; // 0x82e6
+    field public static final int GL_SAMPLER_2D_MULTISAMPLE_ARRAY = 37131; // 0x910b
+    field public static final int GL_SAMPLER_BUFFER = 36290; // 0x8dc2
+    field public static final int GL_SAMPLER_CUBE_MAP_ARRAY = 36876; // 0x900c
+    field public static final int GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW = 36877; // 0x900d
+    field public static final int GL_SAMPLE_SHADING = 35894; // 0x8c36
+    field public static final int GL_SCREEN = 37525; // 0x9295
+    field public static final int GL_SHADER = 33505; // 0x82e1
+    field public static final int GL_SOFTLIGHT = 37532; // 0x929c
+    field public static final int GL_STACK_OVERFLOW = 1283; // 0x503
+    field public static final int GL_STACK_UNDERFLOW = 1284; // 0x504
+    field public static final int GL_TESS_CONTROL_OUTPUT_VERTICES = 36469; // 0x8e75
+    field public static final int GL_TESS_CONTROL_SHADER = 36488; // 0x8e88
+    field public static final int GL_TESS_CONTROL_SHADER_BIT = 8; // 0x8
+    field public static final int GL_TESS_EVALUATION_SHADER = 36487; // 0x8e87
+    field public static final int GL_TESS_EVALUATION_SHADER_BIT = 16; // 0x10
+    field public static final int GL_TESS_GEN_MODE = 36470; // 0x8e76
+    field public static final int GL_TESS_GEN_POINT_MODE = 36473; // 0x8e79
+    field public static final int GL_TESS_GEN_SPACING = 36471; // 0x8e77
+    field public static final int GL_TESS_GEN_VERTEX_ORDER = 36472; // 0x8e78
+    field public static final int GL_TEXTURE_2D_MULTISAMPLE_ARRAY = 37122; // 0x9102
+    field public static final int GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY = 37125; // 0x9105
+    field public static final int GL_TEXTURE_BINDING_BUFFER = 35884; // 0x8c2c
+    field public static final int GL_TEXTURE_BINDING_CUBE_MAP_ARRAY = 36874; // 0x900a
+    field public static final int GL_TEXTURE_BORDER_COLOR = 4100; // 0x1004
+    field public static final int GL_TEXTURE_BUFFER = 35882; // 0x8c2a
+    field public static final int GL_TEXTURE_BUFFER_BINDING = 35882; // 0x8c2a
+    field public static final int GL_TEXTURE_BUFFER_DATA_STORE_BINDING = 35885; // 0x8c2d
+    field public static final int GL_TEXTURE_BUFFER_OFFSET = 37277; // 0x919d
+    field public static final int GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT = 37279; // 0x919f
+    field public static final int GL_TEXTURE_BUFFER_SIZE = 37278; // 0x919e
+    field public static final int GL_TEXTURE_CUBE_MAP_ARRAY = 36873; // 0x9009
+    field public static final int GL_TRIANGLES_ADJACENCY = 12; // 0xc
+    field public static final int GL_TRIANGLE_STRIP_ADJACENCY = 13; // 0xd
+    field public static final int GL_UNDEFINED_VERTEX = 33376; // 0x8260
+    field public static final int GL_UNKNOWN_CONTEXT_RESET = 33365; // 0x8255
+    field public static final int GL_UNSIGNED_INT_IMAGE_BUFFER = 36967; // 0x9067
+    field public static final int GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY = 36970; // 0x906a
+    field public static final int GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 37133; // 0x910d
+    field public static final int GL_UNSIGNED_INT_SAMPLER_BUFFER = 36312; // 0x8dd8
+    field public static final int GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY = 36879; // 0x900f
+    field public static final int GL_VERTEX_ARRAY = 32884; // 0x8074
+  }
+
+  public static interface GLES32.DebugProc {
+    method public void onMessage(int, int, int, int, String);
+  }
+
+  public class GLException extends java.lang.RuntimeException {
+    ctor public GLException(int);
+    ctor public GLException(int, String);
+  }
+
+  public class GLSurfaceView extends android.view.SurfaceView implements android.view.SurfaceHolder.Callback2 {
+    ctor public GLSurfaceView(android.content.Context);
+    ctor public GLSurfaceView(android.content.Context, android.util.AttributeSet);
+    method public int getDebugFlags();
+    method public boolean getPreserveEGLContextOnPause();
+    method public int getRenderMode();
+    method public void onPause();
+    method public void onResume();
+    method public void queueEvent(Runnable);
+    method public void requestRender();
+    method public void setDebugFlags(int);
+    method public void setEGLConfigChooser(android.opengl.GLSurfaceView.EGLConfigChooser);
+    method public void setEGLConfigChooser(boolean);
+    method public void setEGLConfigChooser(int, int, int, int, int, int);
+    method public void setEGLContextClientVersion(int);
+    method public void setEGLContextFactory(android.opengl.GLSurfaceView.EGLContextFactory);
+    method public void setEGLWindowSurfaceFactory(android.opengl.GLSurfaceView.EGLWindowSurfaceFactory);
+    method public void setGLWrapper(android.opengl.GLSurfaceView.GLWrapper);
+    method public void setPreserveEGLContextOnPause(boolean);
+    method public void setRenderMode(int);
+    method public void setRenderer(android.opengl.GLSurfaceView.Renderer);
+    method public void surfaceChanged(android.view.SurfaceHolder, int, int, int);
+    method public void surfaceCreated(android.view.SurfaceHolder);
+    method public void surfaceDestroyed(android.view.SurfaceHolder);
+    method @Deprecated public void surfaceRedrawNeeded(android.view.SurfaceHolder);
+    field public static final int DEBUG_CHECK_GL_ERROR = 1; // 0x1
+    field public static final int DEBUG_LOG_GL_CALLS = 2; // 0x2
+    field public static final int RENDERMODE_CONTINUOUSLY = 1; // 0x1
+    field public static final int RENDERMODE_WHEN_DIRTY = 0; // 0x0
+  }
+
+  public static interface GLSurfaceView.EGLConfigChooser {
+    method public javax.microedition.khronos.egl.EGLConfig chooseConfig(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay);
+  }
+
+  public static interface GLSurfaceView.EGLContextFactory {
+    method public javax.microedition.khronos.egl.EGLContext createContext(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig);
+    method public void destroyContext(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLContext);
+  }
+
+  public static interface GLSurfaceView.EGLWindowSurfaceFactory {
+    method public javax.microedition.khronos.egl.EGLSurface createWindowSurface(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, Object);
+    method public void destroySurface(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface);
+  }
+
+  public static interface GLSurfaceView.GLWrapper {
+    method public javax.microedition.khronos.opengles.GL wrap(javax.microedition.khronos.opengles.GL);
+  }
+
+  public static interface GLSurfaceView.Renderer {
+    method public void onDrawFrame(javax.microedition.khronos.opengles.GL10);
+    method public void onSurfaceChanged(javax.microedition.khronos.opengles.GL10, int, int);
+    method public void onSurfaceCreated(javax.microedition.khronos.opengles.GL10, javax.microedition.khronos.egl.EGLConfig);
+  }
+
+  public class GLU {
+    ctor public GLU();
+    method public static String gluErrorString(int);
+    method public static void gluLookAt(javax.microedition.khronos.opengles.GL10, float, float, float, float, float, float, float, float, float);
+    method public static void gluOrtho2D(javax.microedition.khronos.opengles.GL10, float, float, float, float);
+    method public static void gluPerspective(javax.microedition.khronos.opengles.GL10, float, float, float, float);
+    method public static int gluProject(float, float, float, float[], int, float[], int, int[], int, float[], int);
+    method public static int gluUnProject(float, float, float, float[], int, float[], int, int[], int, float[], int);
+  }
+
+  public final class GLUtils {
+    method public static String getEGLErrorString(int);
+    method public static int getInternalFormat(android.graphics.Bitmap);
+    method public static int getType(android.graphics.Bitmap);
+    method public static void texImage2D(int, int, int, android.graphics.Bitmap, int);
+    method public static void texImage2D(int, int, int, android.graphics.Bitmap, int, int);
+    method public static void texImage2D(int, int, android.graphics.Bitmap, int);
+    method public static void texSubImage2D(int, int, int, int, android.graphics.Bitmap);
+    method public static void texSubImage2D(int, int, int, int, android.graphics.Bitmap, int, int);
+  }
+
+  public class Matrix {
+    ctor @Deprecated public Matrix();
+    method public static void frustumM(float[], int, float, float, float, float, float, float);
+    method public static boolean invertM(float[], int, float[], int);
+    method public static float length(float, float, float);
+    method public static void multiplyMM(float[], int, float[], int, float[], int);
+    method public static void multiplyMV(float[], int, float[], int, float[], int);
+    method public static void orthoM(float[], int, float, float, float, float, float, float);
+    method public static void perspectiveM(float[], int, float, float, float, float);
+    method public static void rotateM(float[], int, float[], int, float, float, float, float);
+    method public static void rotateM(float[], int, float, float, float, float);
+    method public static void scaleM(float[], int, float[], int, float, float, float);
+    method public static void scaleM(float[], int, float, float, float);
+    method public static void setIdentityM(float[], int);
+    method public static void setLookAtM(float[], int, float, float, float, float, float, float, float, float, float);
+    method public static void setRotateEulerM(float[], int, float, float, float);
+    method public static void setRotateM(float[], int, float, float, float, float);
+    method public static void translateM(float[], int, float[], int, float, float, float);
+    method public static void translateM(float[], int, float, float, float);
+    method public static void transposeM(float[], int, float[], int);
+  }
+
+  public class Visibility {
+    ctor public Visibility();
+    method public static void computeBoundingSphere(float[], int, int, float[], int);
+    method public static int frustumCullSpheres(float[], int, float[], int, int, int[], int, int);
+    method public static int visibilityTest(float[], int, float[], int, char[], int, int);
+  }
+
+}
+
+package android.os {
+
+  @Deprecated public abstract class AsyncTask<Params, Progress, Result> {
+    ctor @Deprecated public AsyncTask();
+    method @Deprecated public final boolean cancel(boolean);
+    method @Deprecated @WorkerThread protected abstract Result doInBackground(Params...);
+    method @Deprecated @MainThread public final android.os.AsyncTask<Params,Progress,Result> execute(Params...);
+    method @Deprecated @MainThread public static void execute(Runnable);
+    method @Deprecated @MainThread public final android.os.AsyncTask<Params,Progress,Result> executeOnExecutor(java.util.concurrent.Executor, Params...);
+    method @Deprecated public final Result get() throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
+    method @Deprecated public final Result get(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
+    method @Deprecated public final android.os.AsyncTask.Status getStatus();
+    method @Deprecated public final boolean isCancelled();
+    method @Deprecated @MainThread protected void onCancelled(Result);
+    method @Deprecated @MainThread protected void onCancelled();
+    method @Deprecated @MainThread protected void onPostExecute(Result);
+    method @Deprecated @MainThread protected void onPreExecute();
+    method @Deprecated @MainThread protected void onProgressUpdate(Progress...);
+    method @Deprecated @WorkerThread protected final void publishProgress(Progress...);
+    field @Deprecated public static final java.util.concurrent.Executor SERIAL_EXECUTOR;
+    field @Deprecated public static final java.util.concurrent.Executor THREAD_POOL_EXECUTOR;
+  }
+
+  @Deprecated public enum AsyncTask.Status {
+    enum_constant @Deprecated public static final android.os.AsyncTask.Status FINISHED;
+    enum_constant @Deprecated public static final android.os.AsyncTask.Status PENDING;
+    enum_constant @Deprecated public static final android.os.AsyncTask.Status RUNNING;
+  }
+
+  public class BadParcelableException extends android.util.AndroidRuntimeException {
+    ctor public BadParcelableException(String);
+    ctor public BadParcelableException(Exception);
+  }
+
+  public class BaseBundle {
+    method public void clear();
+    method public boolean containsKey(String);
+    method @Nullable public Object get(String);
+    method public boolean getBoolean(String);
+    method public boolean getBoolean(String, boolean);
+    method @Nullable public boolean[] getBooleanArray(@Nullable String);
+    method public double getDouble(String);
+    method public double getDouble(String, double);
+    method @Nullable public double[] getDoubleArray(@Nullable String);
+    method public int getInt(String);
+    method public int getInt(String, int);
+    method @Nullable public int[] getIntArray(@Nullable String);
+    method public long getLong(String);
+    method public long getLong(String, long);
+    method @Nullable public long[] getLongArray(@Nullable String);
+    method @Nullable public String getString(@Nullable String);
+    method public String getString(@Nullable String, String);
+    method @Nullable public String[] getStringArray(@Nullable String);
+    method public boolean isEmpty();
+    method public java.util.Set<java.lang.String> keySet();
+    method public void putAll(android.os.PersistableBundle);
+    method public void putBoolean(@Nullable String, boolean);
+    method public void putBooleanArray(@Nullable String, @Nullable boolean[]);
+    method public void putDouble(@Nullable String, double);
+    method public void putDoubleArray(@Nullable String, @Nullable double[]);
+    method public void putInt(@Nullable String, int);
+    method public void putIntArray(@Nullable String, @Nullable int[]);
+    method public void putLong(@Nullable String, long);
+    method public void putLongArray(@Nullable String, @Nullable long[]);
+    method public void putString(@Nullable String, @Nullable String);
+    method public void putStringArray(@Nullable String, @Nullable String[]);
+    method public void remove(String);
+    method public int size();
+  }
+
+  public class BatteryManager {
+    method public long computeChargeTimeRemaining();
+    method public int getIntProperty(int);
+    method public long getLongProperty(int);
+    method public boolean isCharging();
+    field public static final String ACTION_CHARGING = "android.os.action.CHARGING";
+    field public static final String ACTION_DISCHARGING = "android.os.action.DISCHARGING";
+    field public static final int BATTERY_HEALTH_COLD = 7; // 0x7
+    field public static final int BATTERY_HEALTH_DEAD = 4; // 0x4
+    field public static final int BATTERY_HEALTH_GOOD = 2; // 0x2
+    field public static final int BATTERY_HEALTH_OVERHEAT = 3; // 0x3
+    field public static final int BATTERY_HEALTH_OVER_VOLTAGE = 5; // 0x5
+    field public static final int BATTERY_HEALTH_UNKNOWN = 1; // 0x1
+    field public static final int BATTERY_HEALTH_UNSPECIFIED_FAILURE = 6; // 0x6
+    field public static final int BATTERY_PLUGGED_AC = 1; // 0x1
+    field public static final int BATTERY_PLUGGED_USB = 2; // 0x2
+    field public static final int BATTERY_PLUGGED_WIRELESS = 4; // 0x4
+    field public static final int BATTERY_PROPERTY_CAPACITY = 4; // 0x4
+    field public static final int BATTERY_PROPERTY_CHARGE_COUNTER = 1; // 0x1
+    field public static final int BATTERY_PROPERTY_CURRENT_AVERAGE = 3; // 0x3
+    field public static final int BATTERY_PROPERTY_CURRENT_NOW = 2; // 0x2
+    field public static final int BATTERY_PROPERTY_ENERGY_COUNTER = 5; // 0x5
+    field public static final int BATTERY_PROPERTY_STATUS = 6; // 0x6
+    field public static final int BATTERY_STATUS_CHARGING = 2; // 0x2
+    field public static final int BATTERY_STATUS_DISCHARGING = 3; // 0x3
+    field public static final int BATTERY_STATUS_FULL = 5; // 0x5
+    field public static final int BATTERY_STATUS_NOT_CHARGING = 4; // 0x4
+    field public static final int BATTERY_STATUS_UNKNOWN = 1; // 0x1
+    field public static final String EXTRA_BATTERY_LOW = "battery_low";
+    field public static final String EXTRA_HEALTH = "health";
+    field public static final String EXTRA_ICON_SMALL = "icon-small";
+    field public static final String EXTRA_LEVEL = "level";
+    field public static final String EXTRA_PLUGGED = "plugged";
+    field public static final String EXTRA_PRESENT = "present";
+    field public static final String EXTRA_SCALE = "scale";
+    field public static final String EXTRA_STATUS = "status";
+    field public static final String EXTRA_TECHNOLOGY = "technology";
+    field public static final String EXTRA_TEMPERATURE = "temperature";
+    field public static final String EXTRA_VOLTAGE = "voltage";
+  }
+
+  public class Binder implements android.os.IBinder {
+    ctor public Binder();
+    ctor public Binder(@Nullable String);
+    method public void attachInterface(@Nullable android.os.IInterface, @Nullable String);
+    method public static final long clearCallingIdentity();
+    method public static final long clearCallingWorkSource();
+    method public void dump(@NonNull java.io.FileDescriptor, @Nullable String[]);
+    method protected void dump(@NonNull java.io.FileDescriptor, @NonNull java.io.PrintWriter, @Nullable String[]);
+    method public void dumpAsync(@NonNull java.io.FileDescriptor, @Nullable String[]);
+    method public static final void flushPendingCommands();
+    method public static final int getCallingPid();
+    method public static final int getCallingUid();
+    method public static final int getCallingUidOrThrow();
+    method @NonNull public static final android.os.UserHandle getCallingUserHandle();
+    method public static final int getCallingWorkSourceUid();
+    method @Nullable public String getInterfaceDescriptor();
+    method public boolean isBinderAlive();
+    method public static final void joinThreadPool();
+    method public void linkToDeath(@NonNull android.os.IBinder.DeathRecipient, int);
+    method protected boolean onTransact(int, @NonNull android.os.Parcel, @Nullable android.os.Parcel, int) throws android.os.RemoteException;
+    method public boolean pingBinder();
+    method @Nullable public android.os.IInterface queryLocalInterface(@NonNull String);
+    method public static final void restoreCallingIdentity(long);
+    method public static final void restoreCallingWorkSource(long);
+    method public static final long setCallingWorkSourceUid(int);
+    method public final boolean transact(int, @NonNull android.os.Parcel, @Nullable android.os.Parcel, int) throws android.os.RemoteException;
+    method public boolean unlinkToDeath(@NonNull android.os.IBinder.DeathRecipient, int);
+  }
+
+  public class Build {
+    ctor public Build();
+    method @NonNull public static java.util.List<android.os.Build.Partition> getFingerprintedPartitions();
+    method public static String getRadioVersion();
+    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public static String getSerial();
+    field public static final String BOARD;
+    field public static final String BOOTLOADER;
+    field public static final String BRAND;
+    field @Deprecated public static final String CPU_ABI;
+    field @Deprecated public static final String CPU_ABI2;
+    field public static final String DEVICE;
+    field public static final String DISPLAY;
+    field public static final String FINGERPRINT;
+    field public static final String HARDWARE;
+    field public static final String HOST;
+    field public static final String ID;
+    field public static final String MANUFACTURER;
+    field public static final String MODEL;
+    field public static final String PRODUCT;
+    field @Deprecated public static final String RADIO;
+    field @Deprecated public static final String SERIAL;
+    field @NonNull public static final String SKU;
+    field public static final String[] SUPPORTED_32_BIT_ABIS;
+    field public static final String[] SUPPORTED_64_BIT_ABIS;
+    field public static final String[] SUPPORTED_ABIS;
+    field public static final String TAGS;
+    field public static final long TIME;
+    field public static final String TYPE;
+    field public static final String UNKNOWN = "unknown";
+    field public static final String USER;
+  }
+
+  public static class Build.Partition {
+    method public long getBuildTimeMillis();
+    method @NonNull public String getFingerprint();
+    method @NonNull public String getName();
+    field public static final String PARTITION_NAME_SYSTEM = "system";
+  }
+
+  public static class Build.VERSION {
+    ctor public Build.VERSION();
+    field public static final String BASE_OS;
+    field public static final String CODENAME;
+    field public static final String INCREMENTAL;
+    field public static final int PREVIEW_SDK_INT;
+    field public static final String RELEASE;
+    field @NonNull public static final String RELEASE_OR_CODENAME;
+    field @Deprecated public static final String SDK;
+    field public static final int SDK_INT;
+    field public static final String SECURITY_PATCH;
+  }
+
+  public static class Build.VERSION_CODES {
+    ctor public Build.VERSION_CODES();
+    field public static final int BASE = 1; // 0x1
+    field public static final int BASE_1_1 = 2; // 0x2
+    field public static final int CUPCAKE = 3; // 0x3
+    field public static final int CUR_DEVELOPMENT = 10000; // 0x2710
+    field public static final int DONUT = 4; // 0x4
+    field public static final int ECLAIR = 5; // 0x5
+    field public static final int ECLAIR_0_1 = 6; // 0x6
+    field public static final int ECLAIR_MR1 = 7; // 0x7
+    field public static final int FROYO = 8; // 0x8
+    field public static final int GINGERBREAD = 9; // 0x9
+    field public static final int GINGERBREAD_MR1 = 10; // 0xa
+    field public static final int HONEYCOMB = 11; // 0xb
+    field public static final int HONEYCOMB_MR1 = 12; // 0xc
+    field public static final int HONEYCOMB_MR2 = 13; // 0xd
+    field public static final int ICE_CREAM_SANDWICH = 14; // 0xe
+    field public static final int ICE_CREAM_SANDWICH_MR1 = 15; // 0xf
+    field public static final int JELLY_BEAN = 16; // 0x10
+    field public static final int JELLY_BEAN_MR1 = 17; // 0x11
+    field public static final int JELLY_BEAN_MR2 = 18; // 0x12
+    field public static final int KITKAT = 19; // 0x13
+    field public static final int KITKAT_WATCH = 20; // 0x14
+    field public static final int LOLLIPOP = 21; // 0x15
+    field public static final int LOLLIPOP_MR1 = 22; // 0x16
+    field public static final int M = 23; // 0x17
+    field public static final int N = 24; // 0x18
+    field public static final int N_MR1 = 25; // 0x19
+    field public static final int O = 26; // 0x1a
+    field public static final int O_MR1 = 27; // 0x1b
+    field public static final int P = 28; // 0x1c
+    field public static final int Q = 29; // 0x1d
+    field public static final int R = 30; // 0x1e
+  }
+
+  public final class Bundle extends android.os.BaseBundle implements java.lang.Cloneable android.os.Parcelable {
+    ctor public Bundle();
+    ctor public Bundle(ClassLoader);
+    ctor public Bundle(int);
+    ctor public Bundle(android.os.Bundle);
+    ctor public Bundle(android.os.PersistableBundle);
+    method public Object clone();
+    method public android.os.Bundle deepCopy();
+    method public int describeContents();
+    method @Nullable public android.os.IBinder getBinder(@Nullable String);
+    method @Nullable public android.os.Bundle getBundle(@Nullable String);
+    method public byte getByte(String);
+    method public Byte getByte(String, byte);
+    method @Nullable public byte[] getByteArray(@Nullable String);
+    method public char getChar(String);
+    method public char getChar(String, char);
+    method @Nullable public char[] getCharArray(@Nullable String);
+    method @Nullable public CharSequence getCharSequence(@Nullable String);
+    method public CharSequence getCharSequence(@Nullable String, CharSequence);
+    method @Nullable public CharSequence[] getCharSequenceArray(@Nullable String);
+    method @Nullable public java.util.ArrayList<java.lang.CharSequence> getCharSequenceArrayList(@Nullable String);
+    method public ClassLoader getClassLoader();
+    method public float getFloat(String);
+    method public float getFloat(String, float);
+    method @Nullable public float[] getFloatArray(@Nullable String);
+    method @Nullable public java.util.ArrayList<java.lang.Integer> getIntegerArrayList(@Nullable String);
+    method @Nullable public <T extends android.os.Parcelable> T getParcelable(@Nullable String);
+    method @Nullable public android.os.Parcelable[] getParcelableArray(@Nullable String);
+    method @Nullable public <T extends android.os.Parcelable> java.util.ArrayList<T> getParcelableArrayList(@Nullable String);
+    method @Nullable public java.io.Serializable getSerializable(@Nullable String);
+    method public short getShort(String);
+    method public short getShort(String, short);
+    method @Nullable public short[] getShortArray(@Nullable String);
+    method @Nullable public android.util.Size getSize(@Nullable String);
+    method @Nullable public android.util.SizeF getSizeF(@Nullable String);
+    method @Nullable public <T extends android.os.Parcelable> android.util.SparseArray<T> getSparseParcelableArray(@Nullable String);
+    method @Nullable public java.util.ArrayList<java.lang.String> getStringArrayList(@Nullable String);
+    method public boolean hasFileDescriptors();
+    method public void putAll(android.os.Bundle);
+    method public void putBinder(@Nullable String, @Nullable android.os.IBinder);
+    method public void putBundle(@Nullable String, @Nullable android.os.Bundle);
+    method public void putByte(@Nullable String, byte);
+    method public void putByteArray(@Nullable String, @Nullable byte[]);
+    method public void putChar(@Nullable String, char);
+    method public void putCharArray(@Nullable String, @Nullable char[]);
+    method public void putCharSequence(@Nullable String, @Nullable CharSequence);
+    method public void putCharSequenceArray(@Nullable String, @Nullable CharSequence[]);
+    method public void putCharSequenceArrayList(@Nullable String, @Nullable java.util.ArrayList<java.lang.CharSequence>);
+    method public void putFloat(@Nullable String, float);
+    method public void putFloatArray(@Nullable String, @Nullable float[]);
+    method public void putIntegerArrayList(@Nullable String, @Nullable java.util.ArrayList<java.lang.Integer>);
+    method public void putParcelable(@Nullable String, @Nullable android.os.Parcelable);
+    method public void putParcelableArray(@Nullable String, @Nullable android.os.Parcelable[]);
+    method public void putParcelableArrayList(@Nullable String, @Nullable java.util.ArrayList<? extends android.os.Parcelable>);
+    method public void putSerializable(@Nullable String, @Nullable java.io.Serializable);
+    method public void putShort(@Nullable String, short);
+    method public void putShortArray(@Nullable String, @Nullable short[]);
+    method public void putSize(@Nullable String, @Nullable android.util.Size);
+    method public void putSizeF(@Nullable String, @Nullable android.util.SizeF);
+    method public void putSparseParcelableArray(@Nullable String, @Nullable android.util.SparseArray<? extends android.os.Parcelable>);
+    method public void putStringArrayList(@Nullable String, @Nullable java.util.ArrayList<java.lang.String>);
+    method public void readFromParcel(android.os.Parcel);
+    method public void setClassLoader(ClassLoader);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.Bundle> CREATOR;
+    field public static final android.os.Bundle EMPTY;
+  }
+
+  public final class CancellationSignal {
+    ctor public CancellationSignal();
+    method public void cancel();
+    method public boolean isCanceled();
+    method public void setOnCancelListener(android.os.CancellationSignal.OnCancelListener);
+    method public void throwIfCanceled();
+  }
+
+  public static interface CancellationSignal.OnCancelListener {
+    method public void onCancel();
+  }
+
+  public class ConditionVariable {
+    ctor public ConditionVariable();
+    ctor public ConditionVariable(boolean);
+    method public void block();
+    method public boolean block(long);
+    method public void close();
+    method public void open();
+  }
+
+  public abstract class CountDownTimer {
+    ctor public CountDownTimer(long, long);
+    method public final void cancel();
+    method public abstract void onFinish();
+    method public abstract void onTick(long);
+    method public final android.os.CountDownTimer start();
+  }
+
+  public final class CpuUsageInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public long getActive();
+    method public long getTotal();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.CpuUsageInfo> CREATOR;
+  }
+
+  public class DeadObjectException extends android.os.RemoteException {
+    ctor public DeadObjectException();
+    ctor public DeadObjectException(String);
+  }
+
+  public class DeadSystemException extends android.os.DeadObjectException {
+    ctor public DeadSystemException();
+  }
+
+  public final class Debug {
+    method public static void attachJvmtiAgent(@NonNull String, @Nullable String, @Nullable ClassLoader) throws java.io.IOException;
+    method @Deprecated public static void changeDebugPort(int);
+    method public static void dumpHprofData(String) throws java.io.IOException;
+    method public static boolean dumpService(String, java.io.FileDescriptor, String[]);
+    method public static void enableEmulatorTraceOutput();
+    method public static int getBinderDeathObjectCount();
+    method public static int getBinderLocalObjectCount();
+    method public static int getBinderProxyObjectCount();
+    method public static int getBinderReceivedTransactions();
+    method public static int getBinderSentTransactions();
+    method @Deprecated public static int getGlobalAllocCount();
+    method @Deprecated public static int getGlobalAllocSize();
+    method @Deprecated public static int getGlobalClassInitCount();
+    method @Deprecated public static int getGlobalClassInitTime();
+    method @Deprecated public static int getGlobalExternalAllocCount();
+    method @Deprecated public static int getGlobalExternalAllocSize();
+    method @Deprecated public static int getGlobalExternalFreedCount();
+    method @Deprecated public static int getGlobalExternalFreedSize();
+    method @Deprecated public static int getGlobalFreedCount();
+    method @Deprecated public static int getGlobalFreedSize();
+    method @Deprecated public static int getGlobalGcInvocationCount();
+    method public static int getLoadedClassCount();
+    method public static void getMemoryInfo(android.os.Debug.MemoryInfo);
+    method public static long getNativeHeapAllocatedSize();
+    method public static long getNativeHeapFreeSize();
+    method public static long getNativeHeapSize();
+    method public static long getPss();
+    method public static String getRuntimeStat(String);
+    method public static java.util.Map<java.lang.String,java.lang.String> getRuntimeStats();
+    method @Deprecated public static int getThreadAllocCount();
+    method @Deprecated public static int getThreadAllocSize();
+    method @Deprecated public static int getThreadExternalAllocCount();
+    method @Deprecated public static int getThreadExternalAllocSize();
+    method @Deprecated public static int getThreadGcInvocationCount();
+    method public static boolean isDebuggerConnected();
+    method public static void printLoadedClasses(int);
+    method @Deprecated public static void resetAllCounts();
+    method @Deprecated public static void resetGlobalAllocCount();
+    method @Deprecated public static void resetGlobalAllocSize();
+    method @Deprecated public static void resetGlobalClassInitCount();
+    method @Deprecated public static void resetGlobalClassInitTime();
+    method @Deprecated public static void resetGlobalExternalAllocCount();
+    method @Deprecated public static void resetGlobalExternalAllocSize();
+    method @Deprecated public static void resetGlobalExternalFreedCount();
+    method @Deprecated public static void resetGlobalExternalFreedSize();
+    method @Deprecated public static void resetGlobalFreedCount();
+    method @Deprecated public static void resetGlobalFreedSize();
+    method @Deprecated public static void resetGlobalGcInvocationCount();
+    method @Deprecated public static void resetThreadAllocCount();
+    method @Deprecated public static void resetThreadAllocSize();
+    method @Deprecated public static void resetThreadExternalAllocCount();
+    method @Deprecated public static void resetThreadExternalAllocSize();
+    method @Deprecated public static void resetThreadGcInvocationCount();
+    method @Deprecated public static int setAllocationLimit(int);
+    method @Deprecated public static int setGlobalAllocationLimit(int);
+    method @Deprecated public static void startAllocCounting();
+    method public static void startMethodTracing();
+    method public static void startMethodTracing(String);
+    method public static void startMethodTracing(String, int);
+    method public static void startMethodTracing(String, int, int);
+    method public static void startMethodTracingSampling(String, int, int);
+    method public static void startNativeTracing();
+    method @Deprecated public static void stopAllocCounting();
+    method public static void stopMethodTracing();
+    method public static void stopNativeTracing();
+    method public static long threadCpuTimeNanos();
+    method public static void waitForDebugger();
+    method public static boolean waitingForDebugger();
+    field public static final int SHOW_CLASSLOADER = 2; // 0x2
+    field public static final int SHOW_FULL_DETAIL = 1; // 0x1
+    field public static final int SHOW_INITIALIZED = 4; // 0x4
+    field @Deprecated public static final int TRACE_COUNT_ALLOCS = 1; // 0x1
+  }
+
+  @Deprecated public static class Debug.InstructionCount {
+    ctor @Deprecated public Debug.InstructionCount();
+    method @Deprecated public boolean collect();
+    method @Deprecated public int globalMethodInvocations();
+    method @Deprecated public int globalTotal();
+    method @Deprecated public boolean resetAndStart();
+  }
+
+  public static class Debug.MemoryInfo implements android.os.Parcelable {
+    ctor public Debug.MemoryInfo();
+    method public int describeContents();
+    method public String getMemoryStat(String);
+    method public java.util.Map<java.lang.String,java.lang.String> getMemoryStats();
+    method public int getTotalPrivateClean();
+    method public int getTotalPrivateDirty();
+    method public int getTotalPss();
+    method public int getTotalSharedClean();
+    method public int getTotalSharedDirty();
+    method public int getTotalSwappablePss();
+    method public void readFromParcel(android.os.Parcel);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.Debug.MemoryInfo> CREATOR;
+    field public int dalvikPrivateDirty;
+    field public int dalvikPss;
+    field public int dalvikSharedDirty;
+    field public int nativePrivateDirty;
+    field public int nativePss;
+    field public int nativeSharedDirty;
+    field public int otherPrivateDirty;
+    field public int otherPss;
+    field public int otherSharedDirty;
+  }
+
+  public class DropBoxManager {
+    ctor protected DropBoxManager();
+    method public void addData(String, byte[], int);
+    method public void addFile(String, java.io.File, int) throws java.io.IOException;
+    method public void addText(String, String);
+    method @Nullable @RequiresPermission(allOf={android.Manifest.permission.READ_LOGS, android.Manifest.permission.PACKAGE_USAGE_STATS}) public android.os.DropBoxManager.Entry getNextEntry(String, long);
+    method public boolean isTagEnabled(String);
+    field public static final String ACTION_DROPBOX_ENTRY_ADDED = "android.intent.action.DROPBOX_ENTRY_ADDED";
+    field public static final String EXTRA_DROPPED_COUNT = "android.os.extra.DROPPED_COUNT";
+    field public static final String EXTRA_TAG = "tag";
+    field public static final String EXTRA_TIME = "time";
+    field public static final int IS_EMPTY = 1; // 0x1
+    field public static final int IS_GZIPPED = 4; // 0x4
+    field public static final int IS_TEXT = 2; // 0x2
+  }
+
+  public static class DropBoxManager.Entry implements java.io.Closeable android.os.Parcelable {
+    ctor public DropBoxManager.Entry(String, long);
+    ctor public DropBoxManager.Entry(String, long, String);
+    ctor public DropBoxManager.Entry(String, long, byte[], int);
+    ctor public DropBoxManager.Entry(String, long, android.os.ParcelFileDescriptor, int);
+    ctor public DropBoxManager.Entry(String, long, java.io.File, int) throws java.io.IOException;
+    method public void close();
+    method public int describeContents();
+    method public int getFlags();
+    method public java.io.InputStream getInputStream() throws java.io.IOException;
+    method public String getTag();
+    method public String getText(int);
+    method public long getTimeMillis();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.DropBoxManager.Entry> CREATOR;
+  }
+
+  public class Environment {
+    ctor public Environment();
+    method public static java.io.File getDataDirectory();
+    method public static java.io.File getDownloadCacheDirectory();
+    method @Deprecated public static java.io.File getExternalStorageDirectory();
+    method @Deprecated public static java.io.File getExternalStoragePublicDirectory(String);
+    method public static String getExternalStorageState();
+    method public static String getExternalStorageState(java.io.File);
+    method @NonNull public static java.io.File getRootDirectory();
+    method @NonNull public static java.io.File getStorageDirectory();
+    method @Deprecated public static String getStorageState(java.io.File);
+    method public static boolean isExternalStorageEmulated();
+    method public static boolean isExternalStorageEmulated(@NonNull java.io.File);
+    method public static boolean isExternalStorageLegacy();
+    method public static boolean isExternalStorageLegacy(@NonNull java.io.File);
+    method public static boolean isExternalStorageManager();
+    method public static boolean isExternalStorageManager(@NonNull java.io.File);
+    method public static boolean isExternalStorageRemovable();
+    method public static boolean isExternalStorageRemovable(@NonNull java.io.File);
+    field public static String DIRECTORY_ALARMS;
+    field public static String DIRECTORY_AUDIOBOOKS;
+    field public static String DIRECTORY_DCIM;
+    field public static String DIRECTORY_DOCUMENTS;
+    field public static String DIRECTORY_DOWNLOADS;
+    field public static String DIRECTORY_MOVIES;
+    field public static String DIRECTORY_MUSIC;
+    field public static String DIRECTORY_NOTIFICATIONS;
+    field public static String DIRECTORY_PICTURES;
+    field public static String DIRECTORY_PODCASTS;
+    field public static String DIRECTORY_RINGTONES;
+    field public static String DIRECTORY_SCREENSHOTS;
+    field public static final String MEDIA_BAD_REMOVAL = "bad_removal";
+    field public static final String MEDIA_CHECKING = "checking";
+    field public static final String MEDIA_EJECTING = "ejecting";
+    field public static final String MEDIA_MOUNTED = "mounted";
+    field public static final String MEDIA_MOUNTED_READ_ONLY = "mounted_ro";
+    field public static final String MEDIA_NOFS = "nofs";
+    field public static final String MEDIA_REMOVED = "removed";
+    field public static final String MEDIA_SHARED = "shared";
+    field public static final String MEDIA_UNKNOWN = "unknown";
+    field public static final String MEDIA_UNMOUNTABLE = "unmountable";
+    field public static final String MEDIA_UNMOUNTED = "unmounted";
+  }
+
+  public abstract class FileObserver {
+    ctor @Deprecated public FileObserver(String);
+    ctor public FileObserver(@NonNull java.io.File);
+    ctor public FileObserver(@NonNull java.util.List<java.io.File>);
+    ctor @Deprecated public FileObserver(String, int);
+    ctor public FileObserver(@NonNull java.io.File, int);
+    ctor public FileObserver(@NonNull java.util.List<java.io.File>, int);
+    method protected void finalize();
+    method public abstract void onEvent(int, @Nullable String);
+    method public void startWatching();
+    method public void stopWatching();
+    field public static final int ACCESS = 1; // 0x1
+    field public static final int ALL_EVENTS = 4095; // 0xfff
+    field public static final int ATTRIB = 4; // 0x4
+    field public static final int CLOSE_NOWRITE = 16; // 0x10
+    field public static final int CLOSE_WRITE = 8; // 0x8
+    field public static final int CREATE = 256; // 0x100
+    field public static final int DELETE = 512; // 0x200
+    field public static final int DELETE_SELF = 1024; // 0x400
+    field public static final int MODIFY = 2; // 0x2
+    field public static final int MOVED_FROM = 64; // 0x40
+    field public static final int MOVED_TO = 128; // 0x80
+    field public static final int MOVE_SELF = 2048; // 0x800
+    field public static final int OPEN = 32; // 0x20
+  }
+
+  public class FileUriExposedException extends java.lang.RuntimeException {
+    ctor public FileUriExposedException(String);
+  }
+
+  public final class FileUtils {
+    method @Deprecated public static void closeQuietly(@Nullable AutoCloseable);
+    method @Deprecated public static void closeQuietly(@Nullable java.io.FileDescriptor);
+    method public static long copy(@NonNull java.io.InputStream, @NonNull java.io.OutputStream) throws java.io.IOException;
+    method public static long copy(@NonNull java.io.InputStream, @NonNull java.io.OutputStream, @Nullable android.os.CancellationSignal, @Nullable java.util.concurrent.Executor, @Nullable android.os.FileUtils.ProgressListener) throws java.io.IOException;
+    method public static long copy(@NonNull java.io.FileDescriptor, @NonNull java.io.FileDescriptor) throws java.io.IOException;
+    method public static long copy(@NonNull java.io.FileDescriptor, @NonNull java.io.FileDescriptor, @Nullable android.os.CancellationSignal, @Nullable java.util.concurrent.Executor, @Nullable android.os.FileUtils.ProgressListener) throws java.io.IOException;
+  }
+
+  public static interface FileUtils.ProgressListener {
+    method public void onProgress(long);
+  }
+
+  public class Handler {
+    ctor @Deprecated public Handler();
+    ctor @Deprecated public Handler(@Nullable android.os.Handler.Callback);
+    ctor public Handler(@NonNull android.os.Looper);
+    ctor public Handler(@NonNull android.os.Looper, @Nullable android.os.Handler.Callback);
+    method @NonNull public static android.os.Handler createAsync(@NonNull android.os.Looper);
+    method @NonNull public static android.os.Handler createAsync(@NonNull android.os.Looper, @NonNull android.os.Handler.Callback);
+    method public void dispatchMessage(@NonNull android.os.Message);
+    method public final void dump(@NonNull android.util.Printer, @NonNull String);
+    method @NonNull public final android.os.Looper getLooper();
+    method @NonNull public String getMessageName(@NonNull android.os.Message);
+    method public void handleMessage(@NonNull android.os.Message);
+    method public final boolean hasCallbacks(@NonNull Runnable);
+    method public final boolean hasMessages(int);
+    method public final boolean hasMessages(int, @Nullable Object);
+    method @NonNull public final android.os.Message obtainMessage();
+    method @NonNull public final android.os.Message obtainMessage(int);
+    method @NonNull public final android.os.Message obtainMessage(int, @Nullable Object);
+    method @NonNull public final android.os.Message obtainMessage(int, int, int);
+    method @NonNull public final android.os.Message obtainMessage(int, int, int, @Nullable Object);
+    method public final boolean post(@NonNull Runnable);
+    method public final boolean postAtFrontOfQueue(@NonNull Runnable);
+    method public final boolean postAtTime(@NonNull Runnable, long);
+    method public final boolean postAtTime(@NonNull Runnable, @Nullable Object, long);
+    method public final boolean postDelayed(@NonNull Runnable, long);
+    method public final boolean postDelayed(@NonNull Runnable, @Nullable Object, long);
+    method public final void removeCallbacks(@NonNull Runnable);
+    method public final void removeCallbacks(@NonNull Runnable, @Nullable Object);
+    method public final void removeCallbacksAndMessages(@Nullable Object);
+    method public final void removeMessages(int);
+    method public final void removeMessages(int, @Nullable Object);
+    method public final boolean sendEmptyMessage(int);
+    method public final boolean sendEmptyMessageAtTime(int, long);
+    method public final boolean sendEmptyMessageDelayed(int, long);
+    method public final boolean sendMessage(@NonNull android.os.Message);
+    method public final boolean sendMessageAtFrontOfQueue(@NonNull android.os.Message);
+    method public boolean sendMessageAtTime(@NonNull android.os.Message, long);
+    method public final boolean sendMessageDelayed(@NonNull android.os.Message, long);
+  }
+
+  public static interface Handler.Callback {
+    method public boolean handleMessage(@NonNull android.os.Message);
+  }
+
+  public class HandlerThread extends java.lang.Thread {
+    ctor public HandlerThread(String);
+    ctor public HandlerThread(String, int);
+    method public android.os.Looper getLooper();
+    method public int getThreadId();
+    method protected void onLooperPrepared();
+    method public boolean quit();
+    method public boolean quitSafely();
+  }
+
+  public class HardwarePropertiesManager {
+    method @NonNull public android.os.CpuUsageInfo[] getCpuUsages();
+    method @NonNull public float[] getDeviceTemperatures(int, int);
+    method @NonNull public float[] getFanSpeeds();
+    field public static final int DEVICE_TEMPERATURE_BATTERY = 2; // 0x2
+    field public static final int DEVICE_TEMPERATURE_CPU = 0; // 0x0
+    field public static final int DEVICE_TEMPERATURE_GPU = 1; // 0x1
+    field public static final int DEVICE_TEMPERATURE_SKIN = 3; // 0x3
+    field public static final int TEMPERATURE_CURRENT = 0; // 0x0
+    field public static final int TEMPERATURE_SHUTDOWN = 2; // 0x2
+    field public static final int TEMPERATURE_THROTTLING = 1; // 0x1
+    field public static final int TEMPERATURE_THROTTLING_BELOW_VR_MIN = 3; // 0x3
+    field public static final float UNDEFINED_TEMPERATURE = -3.4028235E38f;
+  }
+
+  public interface IBinder {
+    method public void dump(@NonNull java.io.FileDescriptor, @Nullable String[]) throws android.os.RemoteException;
+    method public void dumpAsync(@NonNull java.io.FileDescriptor, @Nullable String[]) throws android.os.RemoteException;
+    method @Nullable public String getInterfaceDescriptor() throws android.os.RemoteException;
+    method public static int getSuggestedMaxIpcSizeBytes();
+    method public boolean isBinderAlive();
+    method public void linkToDeath(@NonNull android.os.IBinder.DeathRecipient, int) throws android.os.RemoteException;
+    method public boolean pingBinder();
+    method @Nullable public android.os.IInterface queryLocalInterface(@NonNull String);
+    method public boolean transact(int, @NonNull android.os.Parcel, @Nullable android.os.Parcel, int) throws android.os.RemoteException;
+    method public boolean unlinkToDeath(@NonNull android.os.IBinder.DeathRecipient, int);
+    field public static final int DUMP_TRANSACTION = 1598311760; // 0x5f444d50
+    field public static final int FIRST_CALL_TRANSACTION = 1; // 0x1
+    field public static final int FLAG_ONEWAY = 1; // 0x1
+    field public static final int INTERFACE_TRANSACTION = 1598968902; // 0x5f4e5446
+    field public static final int LAST_CALL_TRANSACTION = 16777215; // 0xffffff
+    field public static final int LIKE_TRANSACTION = 1598835019; // 0x5f4c494b
+    field public static final int PING_TRANSACTION = 1599098439; // 0x5f504e47
+    field public static final int TWEET_TRANSACTION = 1599362900; // 0x5f545754
+  }
+
+  public static interface IBinder.DeathRecipient {
+    method public void binderDied();
+  }
+
+  public interface IInterface {
+    method public android.os.IBinder asBinder();
+  }
+
+  public class LimitExceededException extends java.lang.IllegalStateException {
+    ctor public LimitExceededException();
+    ctor public LimitExceededException(@NonNull String);
+  }
+
+  public final class LocaleList implements android.os.Parcelable {
+    ctor public LocaleList(@NonNull java.util.Locale...);
+    method public int describeContents();
+    method @NonNull public static android.os.LocaleList forLanguageTags(@Nullable String);
+    method public java.util.Locale get(int);
+    method @NonNull @Size(min=1) public static android.os.LocaleList getAdjustedDefault();
+    method @NonNull @Size(min=1) public static android.os.LocaleList getDefault();
+    method @NonNull public static android.os.LocaleList getEmptyLocaleList();
+    method @Nullable public java.util.Locale getFirstMatch(String[]);
+    method @IntRange(from=0xffffffff) public int indexOf(java.util.Locale);
+    method public boolean isEmpty();
+    method public static boolean isPseudoLocale(@Nullable android.icu.util.ULocale);
+    method public static void setDefault(@NonNull @Size(min=1) android.os.LocaleList);
+    method @IntRange(from=0) public int size();
+    method @NonNull public String toLanguageTags();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.LocaleList> CREATOR;
+  }
+
+  public final class Looper {
+    method public void dump(@NonNull android.util.Printer, @NonNull String);
+    method public static android.os.Looper getMainLooper();
+    method @NonNull public android.os.MessageQueue getQueue();
+    method @NonNull public Thread getThread();
+    method public boolean isCurrentThread();
+    method public static void loop();
+    method @Nullable public static android.os.Looper myLooper();
+    method @NonNull public static android.os.MessageQueue myQueue();
+    method public static void prepare();
+    method @Deprecated public static void prepareMainLooper();
+    method public void quit();
+    method public void quitSafely();
+    method public void setMessageLogging(@Nullable android.util.Printer);
+  }
+
+  public class MemoryFile {
+    ctor public MemoryFile(String, int) throws java.io.IOException;
+    method @Deprecated public boolean allowPurging(boolean) throws java.io.IOException;
+    method public void close();
+    method public java.io.InputStream getInputStream();
+    method public java.io.OutputStream getOutputStream();
+    method @Deprecated public boolean isPurgingAllowed();
+    method public int length();
+    method public int readBytes(byte[], int, int, int) throws java.io.IOException;
+    method public void writeBytes(byte[], int, int, int) throws java.io.IOException;
+  }
+
+  public final class Message implements android.os.Parcelable {
+    ctor public Message();
+    method public void copyFrom(android.os.Message);
+    method public int describeContents();
+    method public Runnable getCallback();
+    method public android.os.Bundle getData();
+    method public android.os.Handler getTarget();
+    method public long getWhen();
+    method public boolean isAsynchronous();
+    method public static android.os.Message obtain();
+    method public static android.os.Message obtain(android.os.Message);
+    method public static android.os.Message obtain(android.os.Handler);
+    method public static android.os.Message obtain(android.os.Handler, Runnable);
+    method public static android.os.Message obtain(android.os.Handler, int);
+    method public static android.os.Message obtain(android.os.Handler, int, Object);
+    method public static android.os.Message obtain(android.os.Handler, int, int, int);
+    method public static android.os.Message obtain(android.os.Handler, int, int, int, Object);
+    method public android.os.Bundle peekData();
+    method public void recycle();
+    method public void sendToTarget();
+    method public void setAsynchronous(boolean);
+    method public void setData(android.os.Bundle);
+    method public void setTarget(android.os.Handler);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.Message> CREATOR;
+    field public int arg1;
+    field public int arg2;
+    field public Object obj;
+    field public android.os.Messenger replyTo;
+    field public int sendingUid;
+    field public int what;
+  }
+
+  public final class MessageQueue {
+    method public void addIdleHandler(@NonNull android.os.MessageQueue.IdleHandler);
+    method public void addOnFileDescriptorEventListener(@NonNull java.io.FileDescriptor, int, @NonNull android.os.MessageQueue.OnFileDescriptorEventListener);
+    method public boolean isIdle();
+    method public void removeIdleHandler(@NonNull android.os.MessageQueue.IdleHandler);
+    method public void removeOnFileDescriptorEventListener(@NonNull java.io.FileDescriptor);
+  }
+
+  public static interface MessageQueue.IdleHandler {
+    method public boolean queueIdle();
+  }
+
+  public static interface MessageQueue.OnFileDescriptorEventListener {
+    method public int onFileDescriptorEvents(@NonNull java.io.FileDescriptor, int);
+    field public static final int EVENT_ERROR = 4; // 0x4
+    field public static final int EVENT_INPUT = 1; // 0x1
+    field public static final int EVENT_OUTPUT = 2; // 0x2
+  }
+
+  public final class Messenger implements android.os.Parcelable {
+    ctor public Messenger(android.os.Handler);
+    ctor public Messenger(android.os.IBinder);
+    method public int describeContents();
+    method public android.os.IBinder getBinder();
+    method public static android.os.Messenger readMessengerOrNullFromParcel(android.os.Parcel);
+    method public void send(android.os.Message) throws android.os.RemoteException;
+    method public static void writeMessengerOrNullToParcel(android.os.Messenger, android.os.Parcel);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.Messenger> CREATOR;
+  }
+
+  public class NetworkOnMainThreadException extends java.lang.RuntimeException {
+    ctor public NetworkOnMainThreadException();
+  }
+
+  public class OperationCanceledException extends java.lang.RuntimeException {
+    ctor public OperationCanceledException();
+    ctor public OperationCanceledException(String);
+  }
+
+  public final class Parcel {
+    method public void appendFrom(android.os.Parcel, int, int);
+    method @Nullable public android.os.IBinder[] createBinderArray();
+    method @Nullable public java.util.ArrayList<android.os.IBinder> createBinderArrayList();
+    method @Nullable public boolean[] createBooleanArray();
+    method @Nullable public byte[] createByteArray();
+    method @Nullable public char[] createCharArray();
+    method @Nullable public double[] createDoubleArray();
+    method @Nullable public float[] createFloatArray();
+    method @Nullable public int[] createIntArray();
+    method @Nullable public long[] createLongArray();
+    method @Nullable public String[] createStringArray();
+    method @Nullable public java.util.ArrayList<java.lang.String> createStringArrayList();
+    method @Nullable public <T> T[] createTypedArray(@NonNull android.os.Parcelable.Creator<T>);
+    method @Nullable public <T> java.util.ArrayList<T> createTypedArrayList(@NonNull android.os.Parcelable.Creator<T>);
+    method @Nullable public <T extends android.os.Parcelable> android.util.ArrayMap<java.lang.String,T> createTypedArrayMap(@NonNull android.os.Parcelable.Creator<T>);
+    method @Nullable public <T extends android.os.Parcelable> android.util.SparseArray<T> createTypedSparseArray(@NonNull android.os.Parcelable.Creator<T>);
+    method public int dataAvail();
+    method public int dataCapacity();
+    method public int dataPosition();
+    method public int dataSize();
+    method public void enforceInterface(@NonNull String);
+    method public boolean hasFileDescriptors();
+    method public byte[] marshall();
+    method @NonNull public static android.os.Parcel obtain();
+    method @Nullable public Object[] readArray(@Nullable ClassLoader);
+    method @Nullable public java.util.ArrayList readArrayList(@Nullable ClassLoader);
+    method public void readBinderArray(@NonNull android.os.IBinder[]);
+    method public void readBinderList(@NonNull java.util.List<android.os.IBinder>);
+    method public boolean readBoolean();
+    method public void readBooleanArray(@NonNull boolean[]);
+    method @Nullable public android.os.Bundle readBundle();
+    method @Nullable public android.os.Bundle readBundle(@Nullable ClassLoader);
+    method public byte readByte();
+    method public void readByteArray(@NonNull byte[]);
+    method public void readCharArray(@NonNull char[]);
+    method public double readDouble();
+    method public void readDoubleArray(@NonNull double[]);
+    method public void readException();
+    method public void readException(int, String);
+    method public android.os.ParcelFileDescriptor readFileDescriptor();
+    method public float readFloat();
+    method public void readFloatArray(@NonNull float[]);
+    method @Nullable public java.util.HashMap readHashMap(@Nullable ClassLoader);
+    method public int readInt();
+    method public void readIntArray(@NonNull int[]);
+    method public void readList(@NonNull java.util.List, @Nullable ClassLoader);
+    method public long readLong();
+    method public void readLongArray(@NonNull long[]);
+    method public void readMap(@NonNull java.util.Map, @Nullable ClassLoader);
+    method @Nullable public <T extends android.os.Parcelable> T readParcelable(@Nullable ClassLoader);
+    method @Nullable public android.os.Parcelable[] readParcelableArray(@Nullable ClassLoader);
+    method @Nullable public android.os.Parcelable.Creator<?> readParcelableCreator(@Nullable ClassLoader);
+    method @NonNull public <T extends android.os.Parcelable> java.util.List<T> readParcelableList(@NonNull java.util.List<T>, @Nullable ClassLoader);
+    method @Nullable public android.os.PersistableBundle readPersistableBundle();
+    method @Nullable public android.os.PersistableBundle readPersistableBundle(@Nullable ClassLoader);
+    method @Nullable public java.io.Serializable readSerializable();
+    method @NonNull public android.util.Size readSize();
+    method @NonNull public android.util.SizeF readSizeF();
+    method @Nullable public <T> android.util.SparseArray<T> readSparseArray(@Nullable ClassLoader);
+    method @Nullable public android.util.SparseBooleanArray readSparseBooleanArray();
+    method @Nullable public String readString();
+    method public void readStringArray(@NonNull String[]);
+    method public void readStringList(@NonNull java.util.List<java.lang.String>);
+    method public android.os.IBinder readStrongBinder();
+    method public <T> void readTypedArray(@NonNull T[], @NonNull android.os.Parcelable.Creator<T>);
+    method public <T> void readTypedList(@NonNull java.util.List<T>, @NonNull android.os.Parcelable.Creator<T>);
+    method @Nullable public <T> T readTypedObject(@NonNull android.os.Parcelable.Creator<T>);
+    method @Nullable public Object readValue(@Nullable ClassLoader);
+    method public void recycle();
+    method public void setDataCapacity(int);
+    method public void setDataPosition(int);
+    method public void setDataSize(int);
+    method public void unmarshall(@NonNull byte[], int, int);
+    method public void writeArray(@Nullable Object[]);
+    method public void writeBinderArray(@Nullable android.os.IBinder[]);
+    method public void writeBinderList(@Nullable java.util.List<android.os.IBinder>);
+    method public void writeBoolean(boolean);
+    method public void writeBooleanArray(@Nullable boolean[]);
+    method public void writeBundle(@Nullable android.os.Bundle);
+    method public void writeByte(byte);
+    method public void writeByteArray(@Nullable byte[]);
+    method public void writeByteArray(@Nullable byte[], int, int);
+    method public void writeCharArray(@Nullable char[]);
+    method public void writeDouble(double);
+    method public void writeDoubleArray(@Nullable double[]);
+    method public void writeException(@NonNull Exception);
+    method public void writeFileDescriptor(@NonNull java.io.FileDescriptor);
+    method public void writeFloat(float);
+    method public void writeFloatArray(@Nullable float[]);
+    method public void writeInt(int);
+    method public void writeIntArray(@Nullable int[]);
+    method public void writeInterfaceToken(@NonNull String);
+    method public void writeList(@Nullable java.util.List);
+    method public void writeLong(long);
+    method public void writeLongArray(@Nullable long[]);
+    method public void writeMap(@Nullable java.util.Map);
+    method public void writeNoException();
+    method public void writeParcelable(@Nullable android.os.Parcelable, int);
+    method public <T extends android.os.Parcelable> void writeParcelableArray(@Nullable T[], int);
+    method public void writeParcelableCreator(@NonNull android.os.Parcelable);
+    method public <T extends android.os.Parcelable> void writeParcelableList(@Nullable java.util.List<T>, int);
+    method public void writePersistableBundle(@Nullable android.os.PersistableBundle);
+    method public void writeSerializable(@Nullable java.io.Serializable);
+    method public void writeSize(@NonNull android.util.Size);
+    method public void writeSizeF(@NonNull android.util.SizeF);
+    method public <T> void writeSparseArray(@Nullable android.util.SparseArray<T>);
+    method public void writeSparseBooleanArray(@Nullable android.util.SparseBooleanArray);
+    method public void writeString(@Nullable String);
+    method public void writeStringArray(@Nullable String[]);
+    method public void writeStringList(@Nullable java.util.List<java.lang.String>);
+    method public void writeStrongBinder(android.os.IBinder);
+    method public void writeStrongInterface(android.os.IInterface);
+    method public <T extends android.os.Parcelable> void writeTypedArray(@Nullable T[], int);
+    method public <T extends android.os.Parcelable> void writeTypedArrayMap(@Nullable android.util.ArrayMap<java.lang.String,T>, int);
+    method public <T extends android.os.Parcelable> void writeTypedList(@Nullable java.util.List<T>);
+    method public <T extends android.os.Parcelable> void writeTypedObject(@Nullable T, int);
+    method public <T extends android.os.Parcelable> void writeTypedSparseArray(@Nullable android.util.SparseArray<T>, int);
+    method public void writeValue(@Nullable Object);
+    field public static final android.os.Parcelable.Creator<java.lang.String> STRING_CREATOR;
+  }
+
+  public class ParcelFileDescriptor implements java.io.Closeable android.os.Parcelable {
+    ctor public ParcelFileDescriptor(android.os.ParcelFileDescriptor);
+    method public static android.os.ParcelFileDescriptor adoptFd(int);
+    method public boolean canDetectErrors();
+    method public void checkError() throws java.io.IOException;
+    method public void close() throws java.io.IOException;
+    method public void closeWithError(String) throws java.io.IOException;
+    method public static android.os.ParcelFileDescriptor[] createPipe() throws java.io.IOException;
+    method public static android.os.ParcelFileDescriptor[] createReliablePipe() throws java.io.IOException;
+    method public static android.os.ParcelFileDescriptor[] createReliableSocketPair() throws java.io.IOException;
+    method public static android.os.ParcelFileDescriptor[] createSocketPair() throws java.io.IOException;
+    method public int describeContents();
+    method public int detachFd();
+    method public static android.os.ParcelFileDescriptor dup(java.io.FileDescriptor) throws java.io.IOException;
+    method public android.os.ParcelFileDescriptor dup() throws java.io.IOException;
+    method public static android.os.ParcelFileDescriptor fromDatagramSocket(java.net.DatagramSocket);
+    method public static android.os.ParcelFileDescriptor fromFd(int) throws java.io.IOException;
+    method public static android.os.ParcelFileDescriptor fromSocket(java.net.Socket);
+    method public int getFd();
+    method public java.io.FileDescriptor getFileDescriptor();
+    method public long getStatSize();
+    method public static android.os.ParcelFileDescriptor open(java.io.File, int) throws java.io.FileNotFoundException;
+    method public static android.os.ParcelFileDescriptor open(java.io.File, int, android.os.Handler, android.os.ParcelFileDescriptor.OnCloseListener) throws java.io.IOException;
+    method public static int parseMode(String);
+    method @NonNull public static android.os.ParcelFileDescriptor wrap(@NonNull android.os.ParcelFileDescriptor, @NonNull android.os.Handler, @NonNull android.os.ParcelFileDescriptor.OnCloseListener) throws java.io.IOException;
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.ParcelFileDescriptor> CREATOR;
+    field public static final int MODE_APPEND = 33554432; // 0x2000000
+    field public static final int MODE_CREATE = 134217728; // 0x8000000
+    field public static final int MODE_READ_ONLY = 268435456; // 0x10000000
+    field public static final int MODE_READ_WRITE = 805306368; // 0x30000000
+    field public static final int MODE_TRUNCATE = 67108864; // 0x4000000
+    field @Deprecated public static final int MODE_WORLD_READABLE = 1; // 0x1
+    field @Deprecated public static final int MODE_WORLD_WRITEABLE = 2; // 0x2
+    field public static final int MODE_WRITE_ONLY = 536870912; // 0x20000000
+  }
+
+  public static class ParcelFileDescriptor.AutoCloseInputStream extends java.io.FileInputStream {
+    ctor public ParcelFileDescriptor.AutoCloseInputStream(android.os.ParcelFileDescriptor);
+  }
+
+  public static class ParcelFileDescriptor.AutoCloseOutputStream extends java.io.FileOutputStream {
+    ctor public ParcelFileDescriptor.AutoCloseOutputStream(android.os.ParcelFileDescriptor);
+  }
+
+  public static class ParcelFileDescriptor.FileDescriptorDetachedException extends java.io.IOException {
+    ctor public ParcelFileDescriptor.FileDescriptorDetachedException();
+  }
+
+  public static interface ParcelFileDescriptor.OnCloseListener {
+    method public void onClose(java.io.IOException);
+  }
+
+  public class ParcelFormatException extends java.lang.RuntimeException {
+    ctor public ParcelFormatException();
+    ctor public ParcelFormatException(String);
+  }
+
+  public final class ParcelUuid implements android.os.Parcelable {
+    ctor public ParcelUuid(java.util.UUID);
+    method public int describeContents();
+    method public static android.os.ParcelUuid fromString(String);
+    method public java.util.UUID getUuid();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.ParcelUuid> CREATOR;
+  }
+
+  public interface Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int CONTENTS_FILE_DESCRIPTOR = 1; // 0x1
+    field public static final int PARCELABLE_WRITE_RETURN_VALUE = 1; // 0x1
+  }
+
+  public static interface Parcelable.ClassLoaderCreator<T> extends android.os.Parcelable.Creator<T> {
+    method public T createFromParcel(android.os.Parcel, ClassLoader);
+  }
+
+  public static interface Parcelable.Creator<T> {
+    method public T createFromParcel(android.os.Parcel);
+    method public T[] newArray(int);
+  }
+
+  public class PatternMatcher implements android.os.Parcelable {
+    ctor public PatternMatcher(String, int);
+    ctor public PatternMatcher(android.os.Parcel);
+    method public int describeContents();
+    method public final String getPath();
+    method public final int getType();
+    method public boolean match(String);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.PatternMatcher> CREATOR;
+    field public static final int PATTERN_ADVANCED_GLOB = 3; // 0x3
+    field public static final int PATTERN_LITERAL = 0; // 0x0
+    field public static final int PATTERN_PREFIX = 1; // 0x1
+    field public static final int PATTERN_SIMPLE_GLOB = 2; // 0x2
+  }
+
+  public final class PersistableBundle extends android.os.BaseBundle implements java.lang.Cloneable android.os.Parcelable {
+    ctor public PersistableBundle();
+    ctor public PersistableBundle(int);
+    ctor public PersistableBundle(android.os.PersistableBundle);
+    method public Object clone();
+    method public android.os.PersistableBundle deepCopy();
+    method public int describeContents();
+    method @Nullable public android.os.PersistableBundle getPersistableBundle(@Nullable String);
+    method public void putPersistableBundle(@Nullable String, @Nullable android.os.PersistableBundle);
+    method @NonNull public static android.os.PersistableBundle readFromStream(@NonNull java.io.InputStream) throws java.io.IOException;
+    method public void writeToParcel(android.os.Parcel, int);
+    method public void writeToStream(@NonNull java.io.OutputStream) throws java.io.IOException;
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.PersistableBundle> CREATOR;
+    field public static final android.os.PersistableBundle EMPTY;
+  }
+
+  public final class PowerManager {
+    method public void addThermalStatusListener(@NonNull android.os.PowerManager.OnThermalStatusChangedListener);
+    method public void addThermalStatusListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.PowerManager.OnThermalStatusChangedListener);
+    method public int getCurrentThermalStatus();
+    method public int getLocationPowerSaveMode();
+    method public float getThermalHeadroom(@IntRange(from=0, to=60) int);
+    method public boolean isDeviceIdleMode();
+    method public boolean isIgnoringBatteryOptimizations(String);
+    method public boolean isInteractive();
+    method public boolean isPowerSaveMode();
+    method public boolean isRebootingUserspaceSupported();
+    method @Deprecated public boolean isScreenOn();
+    method public boolean isSustainedPerformanceModeSupported();
+    method public boolean isWakeLockLevelSupported(int);
+    method public android.os.PowerManager.WakeLock newWakeLock(int, String);
+    method @RequiresPermission(android.Manifest.permission.REBOOT) public void reboot(@Nullable String);
+    method public void removeThermalStatusListener(@NonNull android.os.PowerManager.OnThermalStatusChangedListener);
+    field public static final int ACQUIRE_CAUSES_WAKEUP = 268435456; // 0x10000000
+    field public static final String ACTION_DEVICE_IDLE_MODE_CHANGED = "android.os.action.DEVICE_IDLE_MODE_CHANGED";
+    field public static final String ACTION_POWER_SAVE_MODE_CHANGED = "android.os.action.POWER_SAVE_MODE_CHANGED";
+    field @Deprecated public static final int FULL_WAKE_LOCK = 26; // 0x1a
+    field public static final int LOCATION_MODE_ALL_DISABLED_WHEN_SCREEN_OFF = 2; // 0x2
+    field public static final int LOCATION_MODE_FOREGROUND_ONLY = 3; // 0x3
+    field public static final int LOCATION_MODE_GPS_DISABLED_WHEN_SCREEN_OFF = 1; // 0x1
+    field public static final int LOCATION_MODE_NO_CHANGE = 0; // 0x0
+    field public static final int LOCATION_MODE_THROTTLE_REQUESTS_WHEN_SCREEN_OFF = 4; // 0x4
+    field public static final int ON_AFTER_RELEASE = 536870912; // 0x20000000
+    field public static final int PARTIAL_WAKE_LOCK = 1; // 0x1
+    field public static final int PROXIMITY_SCREEN_OFF_WAKE_LOCK = 32; // 0x20
+    field public static final int RELEASE_FLAG_WAIT_FOR_NO_PROXIMITY = 1; // 0x1
+    field @Deprecated public static final int SCREEN_BRIGHT_WAKE_LOCK = 10; // 0xa
+    field @Deprecated public static final int SCREEN_DIM_WAKE_LOCK = 6; // 0x6
+    field public static final int THERMAL_STATUS_CRITICAL = 4; // 0x4
+    field public static final int THERMAL_STATUS_EMERGENCY = 5; // 0x5
+    field public static final int THERMAL_STATUS_LIGHT = 1; // 0x1
+    field public static final int THERMAL_STATUS_MODERATE = 2; // 0x2
+    field public static final int THERMAL_STATUS_NONE = 0; // 0x0
+    field public static final int THERMAL_STATUS_SEVERE = 3; // 0x3
+    field public static final int THERMAL_STATUS_SHUTDOWN = 6; // 0x6
+  }
+
+  public static interface PowerManager.OnThermalStatusChangedListener {
+    method public void onThermalStatusChanged(int);
+  }
+
+  public final class PowerManager.WakeLock {
+    method public void acquire();
+    method public void acquire(long);
+    method public boolean isHeld();
+    method public void release();
+    method public void release(int);
+    method public void setReferenceCounted(boolean);
+    method public void setWorkSource(android.os.WorkSource);
+  }
+
+  public class Process {
+    ctor public Process();
+    method public static final long getElapsedCpuTime();
+    method public static final int[] getExclusiveCores();
+    method public static final int getGidForName(String);
+    method public static final long getStartElapsedRealtime();
+    method public static final long getStartUptimeMillis();
+    method public static final int getThreadPriority(int) throws java.lang.IllegalArgumentException;
+    method public static final int getUidForName(String);
+    method public static final boolean is64Bit();
+    method public static boolean isApplicationUid(int);
+    method public static final boolean isIsolated();
+    method public static final void killProcess(int);
+    method public static final int myPid();
+    method public static final int myTid();
+    method public static final int myUid();
+    method public static android.os.UserHandle myUserHandle();
+    method public static final void sendSignal(int, int);
+    method public static final void setThreadPriority(int, int) throws java.lang.IllegalArgumentException, java.lang.SecurityException;
+    method public static final void setThreadPriority(int) throws java.lang.IllegalArgumentException, java.lang.SecurityException;
+    method @Deprecated public static final boolean supportsProcesses();
+    field public static final int BLUETOOTH_UID = 1002; // 0x3ea
+    field public static final int FIRST_APPLICATION_UID = 10000; // 0x2710
+    field public static final int INVALID_UID = -1; // 0xffffffff
+    field public static final int LAST_APPLICATION_UID = 19999; // 0x4e1f
+    field public static final int PHONE_UID = 1001; // 0x3e9
+    field public static final int ROOT_UID = 0; // 0x0
+    field public static final int SHELL_UID = 2000; // 0x7d0
+    field public static final int SIGNAL_KILL = 9; // 0x9
+    field public static final int SIGNAL_QUIT = 3; // 0x3
+    field public static final int SIGNAL_USR1 = 10; // 0xa
+    field public static final int SYSTEM_UID = 1000; // 0x3e8
+    field public static final int THREAD_PRIORITY_AUDIO = -16; // 0xfffffff0
+    field public static final int THREAD_PRIORITY_BACKGROUND = 10; // 0xa
+    field public static final int THREAD_PRIORITY_DEFAULT = 0; // 0x0
+    field public static final int THREAD_PRIORITY_DISPLAY = -4; // 0xfffffffc
+    field public static final int THREAD_PRIORITY_FOREGROUND = -2; // 0xfffffffe
+    field public static final int THREAD_PRIORITY_LESS_FAVORABLE = 1; // 0x1
+    field public static final int THREAD_PRIORITY_LOWEST = 19; // 0x13
+    field public static final int THREAD_PRIORITY_MORE_FAVORABLE = -1; // 0xffffffff
+    field public static final int THREAD_PRIORITY_URGENT_AUDIO = -19; // 0xffffffed
+    field public static final int THREAD_PRIORITY_URGENT_DISPLAY = -8; // 0xfffffff8
+    field public static final int THREAD_PRIORITY_VIDEO = -10; // 0xfffffff6
+    field public static final int WIFI_UID = 1010; // 0x3f2
+  }
+
+  public abstract class ProxyFileDescriptorCallback {
+    ctor public ProxyFileDescriptorCallback();
+    method public void onFsync() throws android.system.ErrnoException;
+    method public long onGetSize() throws android.system.ErrnoException;
+    method public int onRead(long, int, byte[]) throws android.system.ErrnoException;
+    method public abstract void onRelease();
+    method public int onWrite(long, int, byte[]) throws android.system.ErrnoException;
+  }
+
+  public class RecoverySystem {
+    method @RequiresPermission("android.permission.RECOVERY") public static void installPackage(android.content.Context, java.io.File) throws java.io.IOException;
+    method public static void rebootWipeCache(android.content.Context) throws java.io.IOException;
+    method public static void rebootWipeUserData(android.content.Context) throws java.io.IOException;
+    method public static void verifyPackage(java.io.File, android.os.RecoverySystem.ProgressListener, java.io.File) throws java.security.GeneralSecurityException, java.io.IOException;
+  }
+
+  public static interface RecoverySystem.ProgressListener {
+    method public void onProgress(int);
+  }
+
+  public class RemoteCallbackList<E extends android.os.IInterface> {
+    ctor public RemoteCallbackList();
+    method public int beginBroadcast();
+    method public void finishBroadcast();
+    method public Object getBroadcastCookie(int);
+    method public E getBroadcastItem(int);
+    method public Object getRegisteredCallbackCookie(int);
+    method public int getRegisteredCallbackCount();
+    method public E getRegisteredCallbackItem(int);
+    method public void kill();
+    method public void onCallbackDied(E);
+    method public void onCallbackDied(E, Object);
+    method public boolean register(E);
+    method public boolean register(E, Object);
+    method public boolean unregister(E);
+  }
+
+  public class RemoteException extends android.util.AndroidException {
+    ctor public RemoteException();
+    ctor public RemoteException(String);
+    method @NonNull public RuntimeException rethrowAsRuntimeException();
+    method @NonNull public RuntimeException rethrowFromSystemServer();
+  }
+
+  public class ResultReceiver implements android.os.Parcelable {
+    ctor public ResultReceiver(android.os.Handler);
+    method public int describeContents();
+    method protected void onReceiveResult(int, android.os.Bundle);
+    method public void send(int, android.os.Bundle);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.ResultReceiver> CREATOR;
+  }
+
+  public final class SharedMemory implements java.io.Closeable android.os.Parcelable {
+    method public void close();
+    method @NonNull public static android.os.SharedMemory create(@Nullable String, int) throws android.system.ErrnoException;
+    method public int describeContents();
+    method public int getSize();
+    method @NonNull public java.nio.ByteBuffer map(int, int, int) throws android.system.ErrnoException;
+    method @NonNull public java.nio.ByteBuffer mapReadOnly() throws android.system.ErrnoException;
+    method @NonNull public java.nio.ByteBuffer mapReadWrite() throws android.system.ErrnoException;
+    method public boolean setProtect(int);
+    method public static void unmap(@NonNull java.nio.ByteBuffer);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.SharedMemory> CREATOR;
+  }
+
+  public class StatFs {
+    ctor public StatFs(String);
+    method @Deprecated public int getAvailableBlocks();
+    method public long getAvailableBlocksLong();
+    method public long getAvailableBytes();
+    method @Deprecated public int getBlockCount();
+    method public long getBlockCountLong();
+    method @Deprecated public int getBlockSize();
+    method public long getBlockSizeLong();
+    method @Deprecated public int getFreeBlocks();
+    method public long getFreeBlocksLong();
+    method public long getFreeBytes();
+    method public long getTotalBytes();
+    method public void restat(String);
+  }
+
+  public final class StrictMode {
+    method public static android.os.StrictMode.ThreadPolicy allowThreadDiskReads();
+    method public static android.os.StrictMode.ThreadPolicy allowThreadDiskWrites();
+    method public static void enableDefaults();
+    method public static android.os.StrictMode.ThreadPolicy getThreadPolicy();
+    method public static android.os.StrictMode.VmPolicy getVmPolicy();
+    method public static void noteSlowCall(String);
+    method public static void setThreadPolicy(android.os.StrictMode.ThreadPolicy);
+    method public static void setVmPolicy(android.os.StrictMode.VmPolicy);
+  }
+
+  public static interface StrictMode.OnThreadViolationListener {
+    method public void onThreadViolation(android.os.strictmode.Violation);
+  }
+
+  public static interface StrictMode.OnVmViolationListener {
+    method public void onVmViolation(android.os.strictmode.Violation);
+  }
+
+  public static final class StrictMode.ThreadPolicy {
+    field public static final android.os.StrictMode.ThreadPolicy LAX;
+  }
+
+  public static final class StrictMode.ThreadPolicy.Builder {
+    ctor public StrictMode.ThreadPolicy.Builder();
+    ctor public StrictMode.ThreadPolicy.Builder(android.os.StrictMode.ThreadPolicy);
+    method public android.os.StrictMode.ThreadPolicy build();
+    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectAll();
+    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectCustomSlowCalls();
+    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectDiskReads();
+    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectDiskWrites();
+    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectNetwork();
+    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectResourceMismatches();
+    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectUnbufferedIo();
+    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder penaltyDeath();
+    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder penaltyDeathOnNetwork();
+    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder penaltyDialog();
+    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder penaltyDropBox();
+    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder penaltyFlashScreen();
+    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder penaltyListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.StrictMode.OnThreadViolationListener);
+    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder penaltyLog();
+    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitAll();
+    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitCustomSlowCalls();
+    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitDiskReads();
+    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitDiskWrites();
+    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitNetwork();
+    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitResourceMismatches();
+    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitUnbufferedIo();
+  }
+
+  public static final class StrictMode.VmPolicy {
+    field public static final android.os.StrictMode.VmPolicy LAX;
+  }
+
+  public static final class StrictMode.VmPolicy.Builder {
+    ctor public StrictMode.VmPolicy.Builder();
+    ctor public StrictMode.VmPolicy.Builder(android.os.StrictMode.VmPolicy);
+    method public android.os.StrictMode.VmPolicy build();
+    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectActivityLeaks();
+    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectAll();
+    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectCleartextNetwork();
+    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectContentUriWithoutPermission();
+    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectCredentialProtectedWhileLocked();
+    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectFileUriExposure();
+    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectImplicitDirectBoot();
+    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectLeakedClosableObjects();
+    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectLeakedRegistrationObjects();
+    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectLeakedSqlLiteObjects();
+    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectNonSdkApiUsage();
+    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectUntaggedSockets();
+    method @NonNull public android.os.StrictMode.VmPolicy.Builder penaltyDeath();
+    method @NonNull public android.os.StrictMode.VmPolicy.Builder penaltyDeathOnCleartextNetwork();
+    method @NonNull public android.os.StrictMode.VmPolicy.Builder penaltyDeathOnFileUriExposure();
+    method @NonNull public android.os.StrictMode.VmPolicy.Builder penaltyDropBox();
+    method @NonNull public android.os.StrictMode.VmPolicy.Builder penaltyListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.StrictMode.OnVmViolationListener);
+    method @NonNull public android.os.StrictMode.VmPolicy.Builder penaltyLog();
+    method @NonNull public android.os.StrictMode.VmPolicy.Builder permitNonSdkApiUsage();
+    method @NonNull public android.os.StrictMode.VmPolicy.Builder setClassInstanceLimit(Class, int);
+  }
+
+  public final class SystemClock {
+    method @NonNull public static java.time.Clock currentGnssTimeClock();
+    method public static long currentThreadTimeMillis();
+    method public static long elapsedRealtime();
+    method public static long elapsedRealtimeNanos();
+    method public static boolean setCurrentTimeMillis(long);
+    method public static void sleep(long);
+    method public static long uptimeMillis();
+  }
+
+  public class TestLooperManager {
+    method public void execute(android.os.Message);
+    method public android.os.MessageQueue getMessageQueue();
+    method public boolean hasMessages(android.os.Handler, Object, int);
+    method public boolean hasMessages(android.os.Handler, Object, Runnable);
+    method public android.os.Message next();
+    method public void recycle(android.os.Message);
+    method public void release();
+  }
+
+  public abstract class TokenWatcher {
+    ctor public TokenWatcher(android.os.Handler, String);
+    method public void acquire(android.os.IBinder, String);
+    method public abstract void acquired();
+    method public void cleanup(android.os.IBinder, boolean);
+    method public void dump();
+    method public void dump(java.io.PrintWriter);
+    method public boolean isAcquired();
+    method public void release(android.os.IBinder);
+    method public abstract void released();
+  }
+
+  public final class Trace {
+    method public static void beginAsyncSection(@NonNull String, int);
+    method public static void beginSection(@NonNull String);
+    method public static void endAsyncSection(@NonNull String, int);
+    method public static void endSection();
+    method public static boolean isEnabled();
+    method public static void setCounter(@NonNull String, long);
+  }
+
+  public class TransactionTooLargeException extends android.os.RemoteException {
+    ctor public TransactionTooLargeException();
+    ctor public TransactionTooLargeException(String);
+  }
+
+  public final class UserHandle implements android.os.Parcelable {
+    ctor public UserHandle(android.os.Parcel);
+    method public int describeContents();
+    method public static android.os.UserHandle getUserHandleForUid(int);
+    method public static android.os.UserHandle readFromParcel(android.os.Parcel);
+    method public void writeToParcel(android.os.Parcel, int);
+    method public static void writeToParcel(android.os.UserHandle, android.os.Parcel);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.UserHandle> CREATOR;
+  }
+
+  public class UserManager {
+    method public static android.content.Intent createUserCreationIntent(@Nullable String, @Nullable String, @Nullable String, @Nullable android.os.PersistableBundle);
+    method @WorkerThread public android.os.Bundle getApplicationRestrictions(String);
+    method public long getSerialNumberForUser(android.os.UserHandle);
+    method @RequiresPermission("android.permission.MANAGE_USERS") public int getUserCount();
+    method public long getUserCreationTime(android.os.UserHandle);
+    method public android.os.UserHandle getUserForSerialNumber(long);
+    method @NonNull @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", android.Manifest.permission.GET_ACCOUNTS_PRIVILEGED}, conditional=true) public String getUserName();
+    method public java.util.List<android.os.UserHandle> getUserProfiles();
+    method public android.os.Bundle getUserRestrictions();
+    method @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.INTERACT_ACROSS_USERS"}, conditional=true) public android.os.Bundle getUserRestrictions(android.os.UserHandle);
+    method public boolean hasUserRestriction(String);
+    method public boolean isDemoUser();
+    method public boolean isManagedProfile();
+    method public boolean isQuietModeEnabled(android.os.UserHandle);
+    method public boolean isSystemUser();
+    method public boolean isUserAGoat();
+    method @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.INTERACT_ACROSS_USERS"}, conditional=true) public boolean isUserRunning(android.os.UserHandle);
+    method @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.INTERACT_ACROSS_USERS"}, conditional=true) public boolean isUserRunningOrStopping(android.os.UserHandle);
+    method public boolean isUserUnlocked();
+    method @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.INTERACT_ACROSS_USERS"}, conditional=true) public boolean isUserUnlocked(android.os.UserHandle);
+    method @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.MODIFY_QUIET_MODE"}, conditional=true) public boolean requestQuietModeEnabled(boolean, @NonNull android.os.UserHandle);
+    method public boolean requestQuietModeEnabled(boolean, @NonNull android.os.UserHandle, int);
+    method @Deprecated public boolean setRestrictionsChallenge(String);
+    method @Deprecated @RequiresPermission("android.permission.MANAGE_USERS") public void setUserRestriction(String, boolean);
+    method @Deprecated public void setUserRestrictions(android.os.Bundle);
+    method @Deprecated public void setUserRestrictions(android.os.Bundle, android.os.UserHandle);
+    method public static boolean supportsMultipleUsers();
+    field public static final String ALLOW_PARENT_PROFILE_APP_LINKING = "allow_parent_profile_app_linking";
+    field @Deprecated public static final String DISALLOW_ADD_MANAGED_PROFILE = "no_add_managed_profile";
+    field public static final String DISALLOW_ADD_USER = "no_add_user";
+    field public static final String DISALLOW_ADJUST_VOLUME = "no_adjust_volume";
+    field public static final String DISALLOW_AIRPLANE_MODE = "no_airplane_mode";
+    field public static final String DISALLOW_AMBIENT_DISPLAY = "no_ambient_display";
+    field public static final String DISALLOW_APPS_CONTROL = "no_control_apps";
+    field public static final String DISALLOW_AUTOFILL = "no_autofill";
+    field public static final String DISALLOW_BLUETOOTH = "no_bluetooth";
+    field public static final String DISALLOW_BLUETOOTH_SHARING = "no_bluetooth_sharing";
+    field public static final String DISALLOW_CONFIG_BLUETOOTH = "no_config_bluetooth";
+    field public static final String DISALLOW_CONFIG_BRIGHTNESS = "no_config_brightness";
+    field public static final String DISALLOW_CONFIG_CELL_BROADCASTS = "no_config_cell_broadcasts";
+    field public static final String DISALLOW_CONFIG_CREDENTIALS = "no_config_credentials";
+    field public static final String DISALLOW_CONFIG_DATE_TIME = "no_config_date_time";
+    field public static final String DISALLOW_CONFIG_LOCALE = "no_config_locale";
+    field public static final String DISALLOW_CONFIG_LOCATION = "no_config_location";
+    field public static final String DISALLOW_CONFIG_MOBILE_NETWORKS = "no_config_mobile_networks";
+    field public static final String DISALLOW_CONFIG_PRIVATE_DNS = "disallow_config_private_dns";
+    field public static final String DISALLOW_CONFIG_SCREEN_TIMEOUT = "no_config_screen_timeout";
+    field public static final String DISALLOW_CONFIG_TETHERING = "no_config_tethering";
+    field public static final String DISALLOW_CONFIG_VPN = "no_config_vpn";
+    field public static final String DISALLOW_CONFIG_WIFI = "no_config_wifi";
+    field public static final String DISALLOW_CONTENT_CAPTURE = "no_content_capture";
+    field public static final String DISALLOW_CONTENT_SUGGESTIONS = "no_content_suggestions";
+    field public static final String DISALLOW_CREATE_WINDOWS = "no_create_windows";
+    field public static final String DISALLOW_CROSS_PROFILE_COPY_PASTE = "no_cross_profile_copy_paste";
+    field public static final String DISALLOW_DATA_ROAMING = "no_data_roaming";
+    field public static final String DISALLOW_DEBUGGING_FEATURES = "no_debugging_features";
+    field public static final String DISALLOW_FACTORY_RESET = "no_factory_reset";
+    field public static final String DISALLOW_FUN = "no_fun";
+    field public static final String DISALLOW_INSTALL_APPS = "no_install_apps";
+    field public static final String DISALLOW_INSTALL_UNKNOWN_SOURCES = "no_install_unknown_sources";
+    field public static final String DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY = "no_install_unknown_sources_globally";
+    field public static final String DISALLOW_MODIFY_ACCOUNTS = "no_modify_accounts";
+    field public static final String DISALLOW_MOUNT_PHYSICAL_MEDIA = "no_physical_media";
+    field public static final String DISALLOW_NETWORK_RESET = "no_network_reset";
+    field public static final String DISALLOW_OUTGOING_BEAM = "no_outgoing_beam";
+    field public static final String DISALLOW_OUTGOING_CALLS = "no_outgoing_calls";
+    field public static final String DISALLOW_PRINTING = "no_printing";
+    field @Deprecated public static final String DISALLOW_REMOVE_MANAGED_PROFILE = "no_remove_managed_profile";
+    field public static final String DISALLOW_REMOVE_USER = "no_remove_user";
+    field public static final String DISALLOW_SAFE_BOOT = "no_safe_boot";
+    field public static final String DISALLOW_SET_USER_ICON = "no_set_user_icon";
+    field public static final String DISALLOW_SET_WALLPAPER = "no_set_wallpaper";
+    field public static final String DISALLOW_SHARE_INTO_MANAGED_PROFILE = "no_sharing_into_profile";
+    field public static final String DISALLOW_SHARE_LOCATION = "no_share_location";
+    field public static final String DISALLOW_SMS = "no_sms";
+    field public static final String DISALLOW_SYSTEM_ERROR_DIALOGS = "no_system_error_dialogs";
+    field public static final String DISALLOW_UNIFIED_PASSWORD = "no_unified_password";
+    field public static final String DISALLOW_UNINSTALL_APPS = "no_uninstall_apps";
+    field public static final String DISALLOW_UNMUTE_MICROPHONE = "no_unmute_microphone";
+    field public static final String DISALLOW_USB_FILE_TRANSFER = "no_usb_file_transfer";
+    field public static final String DISALLOW_USER_SWITCH = "no_user_switch";
+    field public static final String ENSURE_VERIFY_APPS = "ensure_verify_apps";
+    field public static final String KEY_RESTRICTIONS_PENDING = "restrictions_pending";
+    field public static final int QUIET_MODE_DISABLE_ONLY_IF_CREDENTIAL_NOT_REQUIRED = 1; // 0x1
+    field public static final int USER_CREATION_FAILED_NOT_PERMITTED = 1; // 0x1
+    field public static final int USER_CREATION_FAILED_NO_MORE_USERS = 2; // 0x2
+    field public static final int USER_OPERATION_ERROR_CURRENT_USER = 4; // 0x4
+    field public static final int USER_OPERATION_ERROR_LOW_STORAGE = 5; // 0x5
+    field public static final int USER_OPERATION_ERROR_MANAGED_PROFILE = 2; // 0x2
+    field public static final int USER_OPERATION_ERROR_MAX_RUNNING_USERS = 3; // 0x3
+    field public static final int USER_OPERATION_ERROR_MAX_USERS = 6; // 0x6
+    field public static final int USER_OPERATION_ERROR_UNKNOWN = 1; // 0x1
+    field public static final int USER_OPERATION_SUCCESS = 0; // 0x0
+  }
+
+  public static class UserManager.UserOperationException extends java.lang.RuntimeException {
+    method public int getUserOperationResult();
+  }
+
+  public final class VibrationAttributes implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getFlags();
+    method public int getUsage();
+    method public int getUsageClass();
+    method public boolean isFlagSet(int);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.VibrationAttributes> CREATOR;
+    field public static final int FLAG_BYPASS_INTERRUPTION_POLICY = 1; // 0x1
+    field public static final int USAGE_ALARM = 17; // 0x11
+    field public static final int USAGE_CLASS_ALARM = 1; // 0x1
+    field public static final int USAGE_CLASS_FEEDBACK = 2; // 0x2
+    field public static final int USAGE_CLASS_MASK = 15; // 0xf
+    field public static final int USAGE_CLASS_UNKNOWN = 0; // 0x0
+    field public static final int USAGE_COMMUNICATION_REQUEST = 65; // 0x41
+    field public static final int USAGE_HARDWARE_FEEDBACK = 50; // 0x32
+    field public static final int USAGE_NOTIFICATION = 49; // 0x31
+    field public static final int USAGE_PHYSICAL_EMULATION = 34; // 0x22
+    field public static final int USAGE_RINGTONE = 33; // 0x21
+    field public static final int USAGE_TOUCH = 18; // 0x12
+    field public static final int USAGE_UNKNOWN = 0; // 0x0
+  }
+
+  public static final class VibrationAttributes.Builder {
+    ctor public VibrationAttributes.Builder();
+    ctor public VibrationAttributes.Builder(@Nullable android.os.VibrationAttributes);
+    method @NonNull public android.os.VibrationAttributes build();
+    method @NonNull public android.os.VibrationAttributes.Builder setFlags(int, int);
+    method @NonNull public android.os.VibrationAttributes.Builder setUsage(int);
+  }
+
+  public abstract class VibrationEffect implements android.os.Parcelable {
+    method public static android.os.VibrationEffect createOneShot(long, int);
+    method @NonNull public static android.os.VibrationEffect createPredefined(int);
+    method public static android.os.VibrationEffect createWaveform(long[], int);
+    method public static android.os.VibrationEffect createWaveform(long[], int[], int);
+    method public int describeContents();
+    method @NonNull public static android.os.VibrationEffect.Composition startComposition();
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.VibrationEffect> CREATOR;
+    field public static final int DEFAULT_AMPLITUDE = -1; // 0xffffffff
+    field public static final int EFFECT_CLICK = 0; // 0x0
+    field public static final int EFFECT_DOUBLE_CLICK = 1; // 0x1
+    field public static final int EFFECT_HEAVY_CLICK = 5; // 0x5
+    field public static final int EFFECT_TICK = 2; // 0x2
+  }
+
+  public static final class VibrationEffect.Composition {
+    method @NonNull public android.os.VibrationEffect.Composition addPrimitive(int);
+    method @NonNull public android.os.VibrationEffect.Composition addPrimitive(int, @FloatRange(from=0.0f, to=1.0f) float);
+    method @NonNull public android.os.VibrationEffect.Composition addPrimitive(int, @FloatRange(from=0.0f, to=1.0f) float, @IntRange(from=0) int);
+    method @NonNull public android.os.VibrationEffect compose();
+    field public static final int PRIMITIVE_CLICK = 1; // 0x1
+    field public static final int PRIMITIVE_QUICK_FALL = 6; // 0x6
+    field public static final int PRIMITIVE_QUICK_RISE = 4; // 0x4
+    field public static final int PRIMITIVE_SLOW_RISE = 5; // 0x5
+    field public static final int PRIMITIVE_TICK = 7; // 0x7
+  }
+
+  public abstract class Vibrator {
+    method public final int areAllEffectsSupported(@NonNull int...);
+    method public final boolean areAllPrimitivesSupported(@NonNull int...);
+    method @NonNull public int[] areEffectsSupported(@NonNull int...);
+    method @NonNull public boolean[] arePrimitivesSupported(@NonNull int...);
+    method @RequiresPermission(android.Manifest.permission.VIBRATE) public abstract void cancel();
+    method public abstract boolean hasAmplitudeControl();
+    method public abstract boolean hasVibrator();
+    method @Deprecated @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(long);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(long, android.media.AudioAttributes);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(long[], int);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(long[], int, android.media.AudioAttributes);
+    method @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(android.os.VibrationEffect);
+    method @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(android.os.VibrationEffect, android.media.AudioAttributes);
+    field public static final int VIBRATION_EFFECT_SUPPORT_NO = 2; // 0x2
+    field public static final int VIBRATION_EFFECT_SUPPORT_UNKNOWN = 0; // 0x0
+    field public static final int VIBRATION_EFFECT_SUPPORT_YES = 1; // 0x1
+  }
+
+  public class WorkSource implements android.os.Parcelable {
+    ctor public WorkSource();
+    ctor public WorkSource(android.os.WorkSource);
+    method public boolean add(android.os.WorkSource);
+    method public void clear();
+    method public int describeContents();
+    method public boolean diff(android.os.WorkSource);
+    method public boolean remove(android.os.WorkSource);
+    method public void set(android.os.WorkSource);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.WorkSource> CREATOR;
+  }
+
+}
+
+package android.os.health {
+
+  public class HealthStats {
+    method public String getDataType();
+    method public long getMeasurement(int);
+    method public int getMeasurementKeyAt(int);
+    method public int getMeasurementKeyCount();
+    method public java.util.Map<java.lang.String,java.lang.Long> getMeasurements(int);
+    method public int getMeasurementsKeyAt(int);
+    method public int getMeasurementsKeyCount();
+    method public java.util.Map<java.lang.String,android.os.health.HealthStats> getStats(int);
+    method public int getStatsKeyAt(int);
+    method public int getStatsKeyCount();
+    method public android.os.health.TimerStat getTimer(int);
+    method public int getTimerCount(int);
+    method public int getTimerKeyAt(int);
+    method public int getTimerKeyCount();
+    method public long getTimerTime(int);
+    method public java.util.Map<java.lang.String,android.os.health.TimerStat> getTimers(int);
+    method public int getTimersKeyAt(int);
+    method public int getTimersKeyCount();
+    method public boolean hasMeasurement(int);
+    method public boolean hasMeasurements(int);
+    method public boolean hasStats(int);
+    method public boolean hasTimer(int);
+    method public boolean hasTimers(int);
+  }
+
+  public final class PackageHealthStats {
+    field public static final int MEASUREMENTS_WAKEUP_ALARMS_COUNT = 40002; // 0x9c42
+    field public static final int STATS_SERVICES = 40001; // 0x9c41
+  }
+
+  public final class PidHealthStats {
+    field public static final int MEASUREMENT_WAKE_NESTING_COUNT = 20001; // 0x4e21
+    field public static final int MEASUREMENT_WAKE_START_MS = 20003; // 0x4e23
+    field public static final int MEASUREMENT_WAKE_SUM_MS = 20002; // 0x4e22
+  }
+
+  public final class ProcessHealthStats {
+    field public static final int MEASUREMENT_ANR_COUNT = 30005; // 0x7535
+    field public static final int MEASUREMENT_CRASHES_COUNT = 30004; // 0x7534
+    field public static final int MEASUREMENT_FOREGROUND_MS = 30006; // 0x7536
+    field public static final int MEASUREMENT_STARTS_COUNT = 30003; // 0x7533
+    field public static final int MEASUREMENT_SYSTEM_TIME_MS = 30002; // 0x7532
+    field public static final int MEASUREMENT_USER_TIME_MS = 30001; // 0x7531
+  }
+
+  public final class ServiceHealthStats {
+    field public static final int MEASUREMENT_LAUNCH_COUNT = 50002; // 0xc352
+    field public static final int MEASUREMENT_START_SERVICE_COUNT = 50001; // 0xc351
+  }
+
+  public class SystemHealthManager {
+    method public android.os.health.HealthStats takeMyUidSnapshot();
+    method public android.os.health.HealthStats takeUidSnapshot(int);
+    method public android.os.health.HealthStats[] takeUidSnapshots(int[]);
+  }
+
+  public final class TimerStat implements android.os.Parcelable {
+    ctor public TimerStat();
+    ctor public TimerStat(int, long);
+    ctor public TimerStat(android.os.Parcel);
+    method public int describeContents();
+    method public int getCount();
+    method public long getTime();
+    method public void setCount(int);
+    method public void setTime(long);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.health.TimerStat> CREATOR;
+  }
+
+  public final class UidHealthStats {
+    field public static final int MEASUREMENT_BLUETOOTH_IDLE_MS = 10020; // 0x2724
+    field public static final int MEASUREMENT_BLUETOOTH_POWER_MAMS = 10023; // 0x2727
+    field public static final int MEASUREMENT_BLUETOOTH_RX_BYTES = 10052; // 0x2744
+    field public static final int MEASUREMENT_BLUETOOTH_RX_MS = 10021; // 0x2725
+    field public static final int MEASUREMENT_BLUETOOTH_RX_PACKETS = 10058; // 0x274a
+    field public static final int MEASUREMENT_BLUETOOTH_TX_BYTES = 10053; // 0x2745
+    field public static final int MEASUREMENT_BLUETOOTH_TX_MS = 10022; // 0x2726
+    field public static final int MEASUREMENT_BLUETOOTH_TX_PACKETS = 10059; // 0x274b
+    field public static final int MEASUREMENT_BUTTON_USER_ACTIVITY_COUNT = 10046; // 0x273e
+    field @Deprecated public static final int MEASUREMENT_CPU_POWER_MAMS = 10064; // 0x2750
+    field public static final int MEASUREMENT_MOBILE_IDLE_MS = 10024; // 0x2728
+    field public static final int MEASUREMENT_MOBILE_POWER_MAMS = 10027; // 0x272b
+    field public static final int MEASUREMENT_MOBILE_RX_BYTES = 10048; // 0x2740
+    field public static final int MEASUREMENT_MOBILE_RX_MS = 10025; // 0x2729
+    field public static final int MEASUREMENT_MOBILE_RX_PACKETS = 10054; // 0x2746
+    field public static final int MEASUREMENT_MOBILE_TX_BYTES = 10049; // 0x2741
+    field public static final int MEASUREMENT_MOBILE_TX_MS = 10026; // 0x272a
+    field public static final int MEASUREMENT_MOBILE_TX_PACKETS = 10055; // 0x2747
+    field public static final int MEASUREMENT_OTHER_USER_ACTIVITY_COUNT = 10045; // 0x273d
+    field public static final int MEASUREMENT_REALTIME_BATTERY_MS = 10001; // 0x2711
+    field public static final int MEASUREMENT_REALTIME_SCREEN_OFF_BATTERY_MS = 10003; // 0x2713
+    field public static final int MEASUREMENT_SYSTEM_CPU_TIME_MS = 10063; // 0x274f
+    field public static final int MEASUREMENT_TOUCH_USER_ACTIVITY_COUNT = 10047; // 0x273f
+    field public static final int MEASUREMENT_UPTIME_BATTERY_MS = 10002; // 0x2712
+    field public static final int MEASUREMENT_UPTIME_SCREEN_OFF_BATTERY_MS = 10004; // 0x2714
+    field public static final int MEASUREMENT_USER_CPU_TIME_MS = 10062; // 0x274e
+    field public static final int MEASUREMENT_WIFI_FULL_LOCK_MS = 10029; // 0x272d
+    field public static final int MEASUREMENT_WIFI_IDLE_MS = 10016; // 0x2720
+    field public static final int MEASUREMENT_WIFI_MULTICAST_MS = 10031; // 0x272f
+    field public static final int MEASUREMENT_WIFI_POWER_MAMS = 10019; // 0x2723
+    field public static final int MEASUREMENT_WIFI_RUNNING_MS = 10028; // 0x272c
+    field public static final int MEASUREMENT_WIFI_RX_BYTES = 10050; // 0x2742
+    field public static final int MEASUREMENT_WIFI_RX_MS = 10017; // 0x2721
+    field public static final int MEASUREMENT_WIFI_RX_PACKETS = 10056; // 0x2748
+    field public static final int MEASUREMENT_WIFI_TX_BYTES = 10051; // 0x2743
+    field public static final int MEASUREMENT_WIFI_TX_MS = 10018; // 0x2722
+    field public static final int MEASUREMENT_WIFI_TX_PACKETS = 10057; // 0x2749
+    field public static final int STATS_PACKAGES = 10015; // 0x271f
+    field public static final int STATS_PIDS = 10013; // 0x271d
+    field public static final int STATS_PROCESSES = 10014; // 0x271e
+    field public static final int TIMERS_JOBS = 10010; // 0x271a
+    field public static final int TIMERS_SENSORS = 10012; // 0x271c
+    field public static final int TIMERS_SYNCS = 10009; // 0x2719
+    field public static final int TIMERS_WAKELOCKS_DRAW = 10008; // 0x2718
+    field public static final int TIMERS_WAKELOCKS_FULL = 10005; // 0x2715
+    field public static final int TIMERS_WAKELOCKS_PARTIAL = 10006; // 0x2716
+    field public static final int TIMERS_WAKELOCKS_WINDOW = 10007; // 0x2717
+    field public static final int TIMER_AUDIO = 10032; // 0x2730
+    field public static final int TIMER_BLUETOOTH_SCAN = 10037; // 0x2735
+    field public static final int TIMER_CAMERA = 10035; // 0x2733
+    field public static final int TIMER_FLASHLIGHT = 10034; // 0x2732
+    field public static final int TIMER_FOREGROUND_ACTIVITY = 10036; // 0x2734
+    field public static final int TIMER_GPS_SENSOR = 10011; // 0x271b
+    field public static final int TIMER_MOBILE_RADIO_ACTIVE = 10061; // 0x274d
+    field public static final int TIMER_PROCESS_STATE_BACKGROUND_MS = 10042; // 0x273a
+    field public static final int TIMER_PROCESS_STATE_CACHED_MS = 10043; // 0x273b
+    field public static final int TIMER_PROCESS_STATE_FOREGROUND_MS = 10041; // 0x2739
+    field public static final int TIMER_PROCESS_STATE_FOREGROUND_SERVICE_MS = 10039; // 0x2737
+    field public static final int TIMER_PROCESS_STATE_TOP_MS = 10038; // 0x2736
+    field public static final int TIMER_PROCESS_STATE_TOP_SLEEPING_MS = 10040; // 0x2738
+    field public static final int TIMER_VIBRATOR = 10044; // 0x273c
+    field public static final int TIMER_VIDEO = 10033; // 0x2731
+    field public static final int TIMER_WIFI_SCAN = 10030; // 0x272e
+  }
+
+}
+
+package android.os.storage {
+
+  public abstract class OnObbStateChangeListener {
+    ctor public OnObbStateChangeListener();
+    method public void onObbStateChange(String, int);
+    field public static final int ERROR_ALREADY_MOUNTED = 24; // 0x18
+    field public static final int ERROR_COULD_NOT_MOUNT = 21; // 0x15
+    field public static final int ERROR_COULD_NOT_UNMOUNT = 22; // 0x16
+    field public static final int ERROR_INTERNAL = 20; // 0x14
+    field public static final int ERROR_NOT_MOUNTED = 23; // 0x17
+    field public static final int ERROR_PERMISSION_DENIED = 25; // 0x19
+    field public static final int MOUNTED = 1; // 0x1
+    field public static final int UNMOUNTED = 2; // 0x2
+  }
+
+  public class StorageManager {
+    method @WorkerThread public void allocateBytes(@NonNull java.util.UUID, long) throws java.io.IOException;
+    method @WorkerThread public void allocateBytes(java.io.FileDescriptor, long) throws java.io.IOException;
+    method @WorkerThread public long getAllocatableBytes(@NonNull java.util.UUID) throws java.io.IOException;
+    method @WorkerThread public long getCacheQuotaBytes(@NonNull java.util.UUID) throws java.io.IOException;
+    method @WorkerThread public long getCacheSizeBytes(@NonNull java.util.UUID) throws java.io.IOException;
+    method public String getMountedObbPath(String);
+    method @NonNull public android.os.storage.StorageVolume getPrimaryStorageVolume();
+    method @NonNull public java.util.List<android.os.storage.StorageVolume> getRecentStorageVolumes();
+    method @Nullable public android.os.storage.StorageVolume getStorageVolume(@NonNull java.io.File);
+    method @NonNull public android.os.storage.StorageVolume getStorageVolume(@NonNull android.net.Uri);
+    method @NonNull public java.util.List<android.os.storage.StorageVolume> getStorageVolumes();
+    method @NonNull public java.util.UUID getUuidForPath(@NonNull java.io.File) throws java.io.IOException;
+    method public boolean isAllocationSupported(@NonNull java.io.FileDescriptor);
+    method public boolean isCacheBehaviorGroup(java.io.File) throws java.io.IOException;
+    method public boolean isCacheBehaviorTombstone(java.io.File) throws java.io.IOException;
+    method public boolean isCheckpointSupported();
+    method public boolean isEncrypted(java.io.File);
+    method public boolean isObbMounted(String);
+    method public boolean mountObb(String, String, android.os.storage.OnObbStateChangeListener);
+    method @NonNull public android.os.ParcelFileDescriptor openProxyFileDescriptor(int, android.os.ProxyFileDescriptorCallback, android.os.Handler) throws java.io.IOException;
+    method public void registerStorageVolumeCallback(@NonNull java.util.concurrent.Executor, @NonNull android.os.storage.StorageManager.StorageVolumeCallback);
+    method public void setCacheBehaviorGroup(java.io.File, boolean) throws java.io.IOException;
+    method public void setCacheBehaviorTombstone(java.io.File, boolean) throws java.io.IOException;
+    method public boolean unmountObb(String, boolean, android.os.storage.OnObbStateChangeListener);
+    method public void unregisterStorageVolumeCallback(@NonNull android.os.storage.StorageManager.StorageVolumeCallback);
+    field @RequiresPermission(android.Manifest.permission.MANAGE_EXTERNAL_STORAGE) public static final String ACTION_CLEAR_APP_CACHE = "android.os.storage.action.CLEAR_APP_CACHE";
+    field public static final String ACTION_MANAGE_STORAGE = "android.os.storage.action.MANAGE_STORAGE";
+    field public static final String EXTRA_REQUESTED_BYTES = "android.os.storage.extra.REQUESTED_BYTES";
+    field public static final String EXTRA_UUID = "android.os.storage.extra.UUID";
+    field public static final java.util.UUID UUID_DEFAULT;
+  }
+
+  public static class StorageManager.StorageVolumeCallback {
+    ctor public StorageManager.StorageVolumeCallback();
+    method public void onStateChanged(@NonNull android.os.storage.StorageVolume);
+  }
+
+  public final class StorageVolume implements android.os.Parcelable {
+    method @Deprecated @Nullable public android.content.Intent createAccessIntent(String);
+    method @NonNull public android.content.Intent createOpenDocumentTreeIntent();
+    method public int describeContents();
+    method public String getDescription(android.content.Context);
+    method @Nullable public java.io.File getDirectory();
+    method @Nullable public String getMediaStoreVolumeName();
+    method public String getState();
+    method @Nullable public String getUuid();
+    method public boolean isEmulated();
+    method public boolean isPrimary();
+    method public boolean isRemovable();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.storage.StorageVolume> CREATOR;
+    field public static final String EXTRA_STORAGE_VOLUME = "android.os.storage.extra.STORAGE_VOLUME";
+  }
+
+}
+
+package android.os.strictmode {
+
+  public final class CleartextNetworkViolation extends android.os.strictmode.Violation {
+  }
+
+  public final class ContentUriWithoutPermissionViolation extends android.os.strictmode.Violation {
+  }
+
+  public final class CredentialProtectedWhileLockedViolation extends android.os.strictmode.Violation {
+  }
+
+  public final class CustomViolation extends android.os.strictmode.Violation {
+  }
+
+  public final class DiskReadViolation extends android.os.strictmode.Violation {
+  }
+
+  public final class DiskWriteViolation extends android.os.strictmode.Violation {
+  }
+
+  public final class FileUriExposedViolation extends android.os.strictmode.Violation {
+  }
+
+  public final class ImplicitDirectBootViolation extends android.os.strictmode.Violation {
+  }
+
+  public class InstanceCountViolation extends android.os.strictmode.Violation {
+    method public long getNumberOfInstances();
+  }
+
+  public final class IntentReceiverLeakedViolation extends android.os.strictmode.Violation {
+  }
+
+  public final class LeakedClosableViolation extends android.os.strictmode.Violation {
+  }
+
+  public final class NetworkViolation extends android.os.strictmode.Violation {
+  }
+
+  public final class NonSdkApiUsedViolation extends android.os.strictmode.Violation {
+  }
+
+  public final class ResourceMismatchViolation extends android.os.strictmode.Violation {
+  }
+
+  public final class ServiceConnectionLeakedViolation extends android.os.strictmode.Violation {
+  }
+
+  public final class SqliteObjectLeakedViolation extends android.os.strictmode.Violation {
+  }
+
+  public final class UnbufferedIoViolation extends android.os.strictmode.Violation {
+  }
+
+  public final class UntaggedSocketViolation extends android.os.strictmode.Violation {
+  }
+
+  public abstract class Violation extends java.lang.Throwable {
+  }
+
+  public final class WebViewMethodCalledOnWrongThreadViolation extends android.os.strictmode.Violation {
+  }
+
+}
+
+package android.preference {
+
+  @Deprecated public class CheckBoxPreference extends android.preference.TwoStatePreference {
+    ctor @Deprecated public CheckBoxPreference(android.content.Context, android.util.AttributeSet, int);
+    ctor @Deprecated public CheckBoxPreference(android.content.Context, android.util.AttributeSet, int, int);
+    ctor @Deprecated public CheckBoxPreference(android.content.Context, android.util.AttributeSet);
+    ctor @Deprecated public CheckBoxPreference(android.content.Context);
+  }
+
+  @Deprecated public abstract class DialogPreference extends android.preference.Preference implements android.content.DialogInterface.OnClickListener android.content.DialogInterface.OnDismissListener android.preference.PreferenceManager.OnActivityDestroyListener {
+    ctor @Deprecated public DialogPreference(android.content.Context, android.util.AttributeSet, int, int);
+    ctor @Deprecated public DialogPreference(android.content.Context, android.util.AttributeSet, int);
+    ctor @Deprecated public DialogPreference(android.content.Context, android.util.AttributeSet);
+    ctor @Deprecated public DialogPreference(android.content.Context);
+    method @Deprecated public android.app.Dialog getDialog();
+    method @Deprecated public android.graphics.drawable.Drawable getDialogIcon();
+    method @Deprecated public int getDialogLayoutResource();
+    method @Deprecated public CharSequence getDialogMessage();
+    method @Deprecated public CharSequence getDialogTitle();
+    method @Deprecated public CharSequence getNegativeButtonText();
+    method @Deprecated public CharSequence getPositiveButtonText();
+    method @Deprecated public void onActivityDestroy();
+    method @Deprecated @CallSuper protected void onBindDialogView(android.view.View);
+    method @Deprecated public void onClick(android.content.DialogInterface, int);
+    method @Deprecated protected android.view.View onCreateDialogView();
+    method @Deprecated protected void onDialogClosed(boolean);
+    method @Deprecated public void onDismiss(android.content.DialogInterface);
+    method @Deprecated protected void onPrepareDialogBuilder(android.app.AlertDialog.Builder);
+    method @Deprecated public void setDialogIcon(android.graphics.drawable.Drawable);
+    method @Deprecated public void setDialogIcon(@DrawableRes int);
+    method @Deprecated public void setDialogLayoutResource(int);
+    method @Deprecated public void setDialogMessage(CharSequence);
+    method @Deprecated public void setDialogMessage(int);
+    method @Deprecated public void setDialogTitle(CharSequence);
+    method @Deprecated public void setDialogTitle(int);
+    method @Deprecated public void setNegativeButtonText(CharSequence);
+    method @Deprecated public void setNegativeButtonText(@StringRes int);
+    method @Deprecated public void setPositiveButtonText(CharSequence);
+    method @Deprecated public void setPositiveButtonText(@StringRes int);
+    method @Deprecated protected void showDialog(android.os.Bundle);
+  }
+
+  @Deprecated public class EditTextPreference extends android.preference.DialogPreference {
+    ctor @Deprecated public EditTextPreference(android.content.Context, android.util.AttributeSet, int, int);
+    ctor @Deprecated public EditTextPreference(android.content.Context, android.util.AttributeSet, int);
+    ctor @Deprecated public EditTextPreference(android.content.Context, android.util.AttributeSet);
+    ctor @Deprecated public EditTextPreference(android.content.Context);
+    method @Deprecated public android.widget.EditText getEditText();
+    method @Deprecated public String getText();
+    method @Deprecated protected void onAddEditTextToDialogView(android.view.View, android.widget.EditText);
+    method @Deprecated public void setText(String);
+  }
+
+  @Deprecated public class ListPreference extends android.preference.DialogPreference {
+    ctor @Deprecated public ListPreference(android.content.Context, android.util.AttributeSet, int, int);
+    ctor @Deprecated public ListPreference(android.content.Context, android.util.AttributeSet, int);
+    ctor @Deprecated public ListPreference(android.content.Context, android.util.AttributeSet);
+    ctor @Deprecated public ListPreference(android.content.Context);
+    method @Deprecated public int findIndexOfValue(String);
+    method @Deprecated public CharSequence[] getEntries();
+    method @Deprecated public CharSequence getEntry();
+    method @Deprecated public CharSequence[] getEntryValues();
+    method @Deprecated public String getValue();
+    method @Deprecated public void setEntries(CharSequence[]);
+    method @Deprecated public void setEntries(@ArrayRes int);
+    method @Deprecated public void setEntryValues(CharSequence[]);
+    method @Deprecated public void setEntryValues(@ArrayRes int);
+    method @Deprecated public void setValue(String);
+    method @Deprecated public void setValueIndex(int);
+  }
+
+  @Deprecated public class MultiSelectListPreference extends android.preference.DialogPreference {
+    ctor @Deprecated public MultiSelectListPreference(android.content.Context, android.util.AttributeSet, int, int);
+    ctor @Deprecated public MultiSelectListPreference(android.content.Context, android.util.AttributeSet, int);
+    ctor @Deprecated public MultiSelectListPreference(android.content.Context, android.util.AttributeSet);
+    ctor @Deprecated public MultiSelectListPreference(android.content.Context);
+    method @Deprecated public int findIndexOfValue(String);
+    method @Deprecated public CharSequence[] getEntries();
+    method @Deprecated public CharSequence[] getEntryValues();
+    method @Deprecated public java.util.Set<java.lang.String> getValues();
+    method @Deprecated public void setEntries(CharSequence[]);
+    method @Deprecated public void setEntries(@ArrayRes int);
+    method @Deprecated public void setEntryValues(CharSequence[]);
+    method @Deprecated public void setEntryValues(@ArrayRes int);
+    method @Deprecated public void setValues(java.util.Set<java.lang.String>);
+  }
+
+  @Deprecated public class Preference implements java.lang.Comparable<android.preference.Preference> {
+    ctor @Deprecated public Preference(android.content.Context, android.util.AttributeSet, int, int);
+    ctor @Deprecated public Preference(android.content.Context, android.util.AttributeSet, int);
+    ctor @Deprecated public Preference(android.content.Context, android.util.AttributeSet);
+    ctor @Deprecated public Preference(android.content.Context);
+    method @Deprecated protected boolean callChangeListener(Object);
+    method @Deprecated public int compareTo(android.preference.Preference);
+    method @Deprecated protected android.preference.Preference findPreferenceInHierarchy(String);
+    method @Deprecated public android.content.Context getContext();
+    method @Deprecated public String getDependency();
+    method @Deprecated public android.content.SharedPreferences.Editor getEditor();
+    method @Deprecated public android.os.Bundle getExtras();
+    method @Deprecated public String getFragment();
+    method @Deprecated public android.graphics.drawable.Drawable getIcon();
+    method @Deprecated public android.content.Intent getIntent();
+    method @Deprecated public String getKey();
+    method @Deprecated @LayoutRes public int getLayoutResource();
+    method @Deprecated public android.preference.Preference.OnPreferenceChangeListener getOnPreferenceChangeListener();
+    method @Deprecated public android.preference.Preference.OnPreferenceClickListener getOnPreferenceClickListener();
+    method @Deprecated public int getOrder();
+    method @Deprecated @Nullable public android.preference.PreferenceGroup getParent();
+    method @Deprecated protected boolean getPersistedBoolean(boolean);
+    method @Deprecated protected float getPersistedFloat(float);
+    method @Deprecated protected int getPersistedInt(int);
+    method @Deprecated protected long getPersistedLong(long);
+    method @Deprecated protected String getPersistedString(String);
+    method @Deprecated public java.util.Set<java.lang.String> getPersistedStringSet(java.util.Set<java.lang.String>);
+    method @Deprecated @Nullable public android.preference.PreferenceDataStore getPreferenceDataStore();
+    method @Deprecated public android.preference.PreferenceManager getPreferenceManager();
+    method @Deprecated public android.content.SharedPreferences getSharedPreferences();
+    method @Deprecated public boolean getShouldDisableView();
+    method @Deprecated public CharSequence getSummary();
+    method @Deprecated public CharSequence getTitle();
+    method @Deprecated @StringRes public int getTitleRes();
+    method @Deprecated public android.view.View getView(android.view.View, android.view.ViewGroup);
+    method @Deprecated @LayoutRes public int getWidgetLayoutResource();
+    method @Deprecated public boolean hasKey();
+    method @Deprecated public boolean isEnabled();
+    method @Deprecated public boolean isIconSpaceReserved();
+    method @Deprecated public boolean isPersistent();
+    method @Deprecated public boolean isRecycleEnabled();
+    method @Deprecated public boolean isSelectable();
+    method @Deprecated public boolean isSingleLineTitle();
+    method @Deprecated protected void notifyChanged();
+    method @Deprecated public void notifyDependencyChange(boolean);
+    method @Deprecated protected void notifyHierarchyChanged();
+    method @Deprecated protected void onAttachedToActivity();
+    method @Deprecated protected void onAttachedToHierarchy(android.preference.PreferenceManager);
+    method @Deprecated @CallSuper protected void onBindView(android.view.View);
+    method @Deprecated protected void onClick();
+    method @Deprecated @CallSuper protected android.view.View onCreateView(android.view.ViewGroup);
+    method @Deprecated public void onDependencyChanged(android.preference.Preference, boolean);
+    method @Deprecated protected Object onGetDefaultValue(android.content.res.TypedArray, int);
+    method @Deprecated public void onParentChanged(android.preference.Preference, boolean);
+    method @Deprecated @CallSuper protected void onPrepareForRemoval();
+    method @Deprecated protected void onRestoreInstanceState(android.os.Parcelable);
+    method @Deprecated protected android.os.Parcelable onSaveInstanceState();
+    method @Deprecated protected void onSetInitialValue(boolean, Object);
+    method @Deprecated public android.os.Bundle peekExtras();
+    method @Deprecated protected boolean persistBoolean(boolean);
+    method @Deprecated protected boolean persistFloat(float);
+    method @Deprecated protected boolean persistInt(int);
+    method @Deprecated protected boolean persistLong(long);
+    method @Deprecated protected boolean persistString(String);
+    method @Deprecated public boolean persistStringSet(java.util.Set<java.lang.String>);
+    method @Deprecated public void restoreHierarchyState(android.os.Bundle);
+    method @Deprecated public void saveHierarchyState(android.os.Bundle);
+    method @Deprecated public void setDefaultValue(Object);
+    method @Deprecated public void setDependency(String);
+    method @Deprecated public void setEnabled(boolean);
+    method @Deprecated public void setFragment(String);
+    method @Deprecated public void setIcon(android.graphics.drawable.Drawable);
+    method @Deprecated public void setIcon(@DrawableRes int);
+    method @Deprecated public void setIconSpaceReserved(boolean);
+    method @Deprecated public void setIntent(android.content.Intent);
+    method @Deprecated public void setKey(String);
+    method @Deprecated public void setLayoutResource(@LayoutRes int);
+    method @Deprecated public void setOnPreferenceChangeListener(android.preference.Preference.OnPreferenceChangeListener);
+    method @Deprecated public void setOnPreferenceClickListener(android.preference.Preference.OnPreferenceClickListener);
+    method @Deprecated public void setOrder(int);
+    method @Deprecated public void setPersistent(boolean);
+    method @Deprecated public void setPreferenceDataStore(android.preference.PreferenceDataStore);
+    method @Deprecated @CallSuper public void setRecycleEnabled(boolean);
+    method @Deprecated public void setSelectable(boolean);
+    method @Deprecated public void setShouldDisableView(boolean);
+    method @Deprecated public void setSingleLineTitle(boolean);
+    method @Deprecated public void setSummary(CharSequence);
+    method @Deprecated public void setSummary(@StringRes int);
+    method @Deprecated public void setTitle(CharSequence);
+    method @Deprecated public void setTitle(@StringRes int);
+    method @Deprecated public void setWidgetLayoutResource(@LayoutRes int);
+    method @Deprecated public boolean shouldCommit();
+    method @Deprecated public boolean shouldDisableDependents();
+    method @Deprecated protected boolean shouldPersist();
+    field @Deprecated public static final int DEFAULT_ORDER = 2147483647; // 0x7fffffff
+  }
+
+  @Deprecated public static class Preference.BaseSavedState extends android.view.AbsSavedState {
+    ctor @Deprecated public Preference.BaseSavedState(android.os.Parcel);
+    ctor @Deprecated public Preference.BaseSavedState(android.os.Parcelable);
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.preference.Preference.BaseSavedState> CREATOR;
+  }
+
+  @Deprecated public static interface Preference.OnPreferenceChangeListener {
+    method @Deprecated public boolean onPreferenceChange(android.preference.Preference, Object);
+  }
+
+  @Deprecated public static interface Preference.OnPreferenceClickListener {
+    method @Deprecated public boolean onPreferenceClick(android.preference.Preference);
+  }
+
+  @Deprecated public abstract class PreferenceActivity extends android.app.ListActivity implements android.preference.PreferenceFragment.OnPreferenceStartFragmentCallback {
+    ctor @Deprecated public PreferenceActivity();
+    method @Deprecated public void addPreferencesFromIntent(android.content.Intent);
+    method @Deprecated public void addPreferencesFromResource(int);
+    method @Deprecated public android.preference.Preference findPreference(CharSequence);
+    method @Deprecated public void finishPreferencePanel(android.app.Fragment, int, android.content.Intent);
+    method @Deprecated public android.preference.PreferenceManager getPreferenceManager();
+    method @Deprecated public android.preference.PreferenceScreen getPreferenceScreen();
+    method @Deprecated public boolean hasHeaders();
+    method @Deprecated public void invalidateHeaders();
+    method @Deprecated public boolean isMultiPane();
+    method @Deprecated protected boolean isValidFragment(String);
+    method @Deprecated public void loadHeadersFromResource(@XmlRes int, java.util.List<android.preference.PreferenceActivity.Header>);
+    method @Deprecated public void onBuildHeaders(java.util.List<android.preference.PreferenceActivity.Header>);
+    method @Deprecated public android.content.Intent onBuildStartFragmentIntent(String, android.os.Bundle, @StringRes int, int);
+    method @Deprecated public android.preference.PreferenceActivity.Header onGetInitialHeader();
+    method @Deprecated public android.preference.PreferenceActivity.Header onGetNewHeader();
+    method @Deprecated public void onHeaderClick(android.preference.PreferenceActivity.Header, int);
+    method @Deprecated public boolean onIsHidingHeaders();
+    method @Deprecated public boolean onIsMultiPane();
+    method @Deprecated public boolean onPreferenceStartFragment(android.preference.PreferenceFragment, android.preference.Preference);
+    method @Deprecated public boolean onPreferenceTreeClick(android.preference.PreferenceScreen, android.preference.Preference);
+    method @Deprecated public void setListFooter(android.view.View);
+    method @Deprecated public void setParentTitle(CharSequence, CharSequence, android.view.View.OnClickListener);
+    method @Deprecated public void setPreferenceScreen(android.preference.PreferenceScreen);
+    method @Deprecated public void showBreadCrumbs(CharSequence, CharSequence);
+    method @Deprecated public void startPreferenceFragment(android.app.Fragment, boolean);
+    method @Deprecated public void startPreferencePanel(String, android.os.Bundle, @StringRes int, CharSequence, android.app.Fragment, int);
+    method @Deprecated public void startWithFragment(String, android.os.Bundle, android.app.Fragment, int);
+    method @Deprecated public void startWithFragment(String, android.os.Bundle, android.app.Fragment, int, @StringRes int, @StringRes int);
+    method @Deprecated public void switchToHeader(String, android.os.Bundle);
+    method @Deprecated public void switchToHeader(android.preference.PreferenceActivity.Header);
+    field @Deprecated public static final String EXTRA_NO_HEADERS = ":android:no_headers";
+    field @Deprecated public static final String EXTRA_SHOW_FRAGMENT = ":android:show_fragment";
+    field @Deprecated public static final String EXTRA_SHOW_FRAGMENT_ARGUMENTS = ":android:show_fragment_args";
+    field @Deprecated public static final String EXTRA_SHOW_FRAGMENT_SHORT_TITLE = ":android:show_fragment_short_title";
+    field @Deprecated public static final String EXTRA_SHOW_FRAGMENT_TITLE = ":android:show_fragment_title";
+    field @Deprecated public static final long HEADER_ID_UNDEFINED = -1L; // 0xffffffffffffffffL
+  }
+
+  @Deprecated public static final class PreferenceActivity.Header implements android.os.Parcelable {
+    ctor @Deprecated public PreferenceActivity.Header();
+    method @Deprecated public int describeContents();
+    method @Deprecated public CharSequence getBreadCrumbShortTitle(android.content.res.Resources);
+    method @Deprecated public CharSequence getBreadCrumbTitle(android.content.res.Resources);
+    method @Deprecated public CharSequence getSummary(android.content.res.Resources);
+    method @Deprecated public CharSequence getTitle(android.content.res.Resources);
+    method @Deprecated public void readFromParcel(android.os.Parcel);
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.preference.PreferenceActivity.Header> CREATOR;
+    field @Deprecated public CharSequence breadCrumbShortTitle;
+    field @Deprecated @StringRes public int breadCrumbShortTitleRes;
+    field @Deprecated public CharSequence breadCrumbTitle;
+    field @Deprecated @StringRes public int breadCrumbTitleRes;
+    field @Deprecated public android.os.Bundle extras;
+    field @Deprecated public String fragment;
+    field @Deprecated public android.os.Bundle fragmentArguments;
+    field @Deprecated public int iconRes;
+    field @Deprecated public long id;
+    field @Deprecated public android.content.Intent intent;
+    field @Deprecated public CharSequence summary;
+    field @Deprecated @StringRes public int summaryRes;
+    field @Deprecated public CharSequence title;
+    field @Deprecated @StringRes public int titleRes;
+  }
+
+  @Deprecated public class PreferenceCategory extends android.preference.PreferenceGroup {
+    ctor @Deprecated public PreferenceCategory(android.content.Context, android.util.AttributeSet, int, int);
+    ctor @Deprecated public PreferenceCategory(android.content.Context, android.util.AttributeSet, int);
+    ctor @Deprecated public PreferenceCategory(android.content.Context, android.util.AttributeSet);
+    ctor @Deprecated public PreferenceCategory(android.content.Context);
+  }
+
+  @Deprecated public interface PreferenceDataStore {
+    method @Deprecated public default boolean getBoolean(String, boolean);
+    method @Deprecated public default float getFloat(String, float);
+    method @Deprecated public default int getInt(String, int);
+    method @Deprecated public default long getLong(String, long);
+    method @Deprecated @Nullable public default String getString(String, @Nullable String);
+    method @Deprecated @Nullable public default java.util.Set<java.lang.String> getStringSet(String, @Nullable java.util.Set<java.lang.String>);
+    method @Deprecated public default void putBoolean(String, boolean);
+    method @Deprecated public default void putFloat(String, float);
+    method @Deprecated public default void putInt(String, int);
+    method @Deprecated public default void putLong(String, long);
+    method @Deprecated public default void putString(String, @Nullable String);
+    method @Deprecated public default void putStringSet(String, @Nullable java.util.Set<java.lang.String>);
+  }
+
+  @Deprecated public abstract class PreferenceFragment extends android.app.Fragment {
+    ctor @Deprecated public PreferenceFragment();
+    method @Deprecated public void addPreferencesFromIntent(android.content.Intent);
+    method @Deprecated public void addPreferencesFromResource(@XmlRes int);
+    method @Deprecated public android.preference.Preference findPreference(CharSequence);
+    method @Deprecated public android.preference.PreferenceManager getPreferenceManager();
+    method @Deprecated public android.preference.PreferenceScreen getPreferenceScreen();
+    method @Deprecated public boolean onPreferenceTreeClick(android.preference.PreferenceScreen, android.preference.Preference);
+    method @Deprecated public void setPreferenceScreen(android.preference.PreferenceScreen);
+  }
+
+  @Deprecated public static interface PreferenceFragment.OnPreferenceStartFragmentCallback {
+    method @Deprecated public boolean onPreferenceStartFragment(android.preference.PreferenceFragment, android.preference.Preference);
+  }
+
+  @Deprecated public abstract class PreferenceGroup extends android.preference.Preference {
+    ctor @Deprecated public PreferenceGroup(android.content.Context, android.util.AttributeSet, int, int);
+    ctor @Deprecated public PreferenceGroup(android.content.Context, android.util.AttributeSet, int);
+    ctor @Deprecated public PreferenceGroup(android.content.Context, android.util.AttributeSet);
+    method @Deprecated public void addItemFromInflater(android.preference.Preference);
+    method @Deprecated public boolean addPreference(android.preference.Preference);
+    method @Deprecated protected void dispatchRestoreInstanceState(android.os.Bundle);
+    method @Deprecated protected void dispatchSaveInstanceState(android.os.Bundle);
+    method @Deprecated public android.preference.Preference findPreference(CharSequence);
+    method @Deprecated public android.preference.Preference getPreference(int);
+    method @Deprecated public int getPreferenceCount();
+    method @Deprecated protected boolean isOnSameScreenAsChildren();
+    method @Deprecated public boolean isOrderingAsAdded();
+    method @Deprecated protected boolean onPrepareAddPreference(android.preference.Preference);
+    method @Deprecated public void removeAll();
+    method @Deprecated public boolean removePreference(android.preference.Preference);
+    method @Deprecated public void setOrderingAsAdded(boolean);
+  }
+
+  @Deprecated public class PreferenceManager {
+    method @Deprecated public android.preference.PreferenceScreen createPreferenceScreen(android.content.Context);
+    method @Deprecated @Nullable public android.preference.Preference findPreference(CharSequence);
+    method @Deprecated public static android.content.SharedPreferences getDefaultSharedPreferences(android.content.Context);
+    method @Deprecated public static String getDefaultSharedPreferencesName(android.content.Context);
+    method @Deprecated @Nullable public android.preference.PreferenceDataStore getPreferenceDataStore();
+    method @Deprecated public android.content.SharedPreferences getSharedPreferences();
+    method @Deprecated public int getSharedPreferencesMode();
+    method @Deprecated public String getSharedPreferencesName();
+    method @Deprecated public boolean isStorageDefault();
+    method @Deprecated public boolean isStorageDeviceProtected();
+    method @Deprecated public static void setDefaultValues(android.content.Context, @XmlRes int, boolean);
+    method @Deprecated public static void setDefaultValues(android.content.Context, String, int, int, boolean);
+    method @Deprecated public void setPreferenceDataStore(android.preference.PreferenceDataStore);
+    method @Deprecated public void setSharedPreferencesMode(int);
+    method @Deprecated public void setSharedPreferencesName(String);
+    method @Deprecated public void setStorageDefault();
+    method @Deprecated public void setStorageDeviceProtected();
+    field @Deprecated public static final String KEY_HAS_SET_DEFAULT_VALUES = "_has_set_default_values";
+    field @Deprecated public static final String METADATA_KEY_PREFERENCES = "android.preference";
+  }
+
+  @Deprecated public static interface PreferenceManager.OnActivityDestroyListener {
+    method @Deprecated public void onActivityDestroy();
+  }
+
+  @Deprecated public static interface PreferenceManager.OnActivityResultListener {
+    method @Deprecated public boolean onActivityResult(int, int, android.content.Intent);
+  }
+
+  @Deprecated public static interface PreferenceManager.OnActivityStopListener {
+    method @Deprecated public void onActivityStop();
+  }
+
+  @Deprecated public final class PreferenceScreen extends android.preference.PreferenceGroup implements android.widget.AdapterView.OnItemClickListener android.content.DialogInterface.OnDismissListener {
+    method @Deprecated public void bind(android.widget.ListView);
+    method @Deprecated public android.app.Dialog getDialog();
+    method @Deprecated public android.widget.ListAdapter getRootAdapter();
+    method @Deprecated protected android.widget.ListAdapter onCreateRootAdapter();
+    method @Deprecated public void onDismiss(android.content.DialogInterface);
+    method @Deprecated public void onItemClick(android.widget.AdapterView, android.view.View, int, long);
+  }
+
+  @Deprecated public class RingtonePreference extends android.preference.Preference implements android.preference.PreferenceManager.OnActivityResultListener {
+    ctor @Deprecated public RingtonePreference(android.content.Context, android.util.AttributeSet, int, int);
+    ctor @Deprecated public RingtonePreference(android.content.Context, android.util.AttributeSet, int);
+    ctor @Deprecated public RingtonePreference(android.content.Context, android.util.AttributeSet);
+    ctor @Deprecated public RingtonePreference(android.content.Context);
+    method @Deprecated public int getRingtoneType();
+    method @Deprecated public boolean getShowDefault();
+    method @Deprecated public boolean getShowSilent();
+    method @Deprecated public boolean onActivityResult(int, int, android.content.Intent);
+    method @Deprecated protected void onPrepareRingtonePickerIntent(android.content.Intent);
+    method @Deprecated protected android.net.Uri onRestoreRingtone();
+    method @Deprecated protected void onSaveRingtone(android.net.Uri);
+    method @Deprecated public void setRingtoneType(int);
+    method @Deprecated public void setShowDefault(boolean);
+    method @Deprecated public void setShowSilent(boolean);
+  }
+
+  @Deprecated public class SwitchPreference extends android.preference.TwoStatePreference {
+    ctor @Deprecated public SwitchPreference(android.content.Context, android.util.AttributeSet, int, int);
+    ctor @Deprecated public SwitchPreference(android.content.Context, android.util.AttributeSet, int);
+    ctor @Deprecated public SwitchPreference(android.content.Context, android.util.AttributeSet);
+    ctor @Deprecated public SwitchPreference(android.content.Context);
+    method @Deprecated public CharSequence getSwitchTextOff();
+    method @Deprecated public CharSequence getSwitchTextOn();
+    method @Deprecated public void setSwitchTextOff(CharSequence);
+    method @Deprecated public void setSwitchTextOff(@StringRes int);
+    method @Deprecated public void setSwitchTextOn(CharSequence);
+    method @Deprecated public void setSwitchTextOn(@StringRes int);
+  }
+
+  @Deprecated public abstract class TwoStatePreference extends android.preference.Preference {
+    ctor @Deprecated public TwoStatePreference(android.content.Context, android.util.AttributeSet, int, int);
+    ctor @Deprecated public TwoStatePreference(android.content.Context, android.util.AttributeSet, int);
+    ctor @Deprecated public TwoStatePreference(android.content.Context, android.util.AttributeSet);
+    ctor @Deprecated public TwoStatePreference(android.content.Context);
+    method @Deprecated public boolean getDisableDependentsState();
+    method @Deprecated public CharSequence getSummaryOff();
+    method @Deprecated public CharSequence getSummaryOn();
+    method @Deprecated public boolean isChecked();
+    method @Deprecated public void setChecked(boolean);
+    method @Deprecated public void setDisableDependentsState(boolean);
+    method @Deprecated public void setSummaryOff(CharSequence);
+    method @Deprecated public void setSummaryOff(@StringRes int);
+    method @Deprecated public void setSummaryOn(CharSequence);
+    method @Deprecated public void setSummaryOn(@StringRes int);
+  }
+
+}
+
+package android.print {
+
+  public final class PageRange implements android.os.Parcelable {
+    ctor public PageRange(@IntRange(from=0) int, @IntRange(from=0) int);
+    method public int describeContents();
+    method @IntRange(from=0) public int getEnd();
+    method @IntRange(from=0) public int getStart();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final android.print.PageRange ALL_PAGES;
+    field @NonNull public static final android.os.Parcelable.Creator<android.print.PageRange> CREATOR;
+  }
+
+  public final class PrintAttributes implements android.os.Parcelable {
+    method public int describeContents();
+    method @IntRange(from=0) public int getColorMode();
+    method @IntRange(from=0) public int getDuplexMode();
+    method @Nullable public android.print.PrintAttributes.MediaSize getMediaSize();
+    method @Nullable public android.print.PrintAttributes.Margins getMinMargins();
+    method @Nullable public android.print.PrintAttributes.Resolution getResolution();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int COLOR_MODE_COLOR = 2; // 0x2
+    field public static final int COLOR_MODE_MONOCHROME = 1; // 0x1
+    field @NonNull public static final android.os.Parcelable.Creator<android.print.PrintAttributes> CREATOR;
+    field public static final int DUPLEX_MODE_LONG_EDGE = 2; // 0x2
+    field public static final int DUPLEX_MODE_NONE = 1; // 0x1
+    field public static final int DUPLEX_MODE_SHORT_EDGE = 4; // 0x4
+  }
+
+  public static final class PrintAttributes.Builder {
+    ctor public PrintAttributes.Builder();
+    method @NonNull public android.print.PrintAttributes build();
+    method @NonNull public android.print.PrintAttributes.Builder setColorMode(int);
+    method @NonNull public android.print.PrintAttributes.Builder setDuplexMode(int);
+    method @NonNull public android.print.PrintAttributes.Builder setMediaSize(@NonNull android.print.PrintAttributes.MediaSize);
+    method @NonNull public android.print.PrintAttributes.Builder setMinMargins(@NonNull android.print.PrintAttributes.Margins);
+    method @NonNull public android.print.PrintAttributes.Builder setResolution(@NonNull android.print.PrintAttributes.Resolution);
+  }
+
+  public static final class PrintAttributes.Margins {
+    ctor public PrintAttributes.Margins(int, int, int, int);
+    method public int getBottomMils();
+    method public int getLeftMils();
+    method public int getRightMils();
+    method public int getTopMils();
+    field public static final android.print.PrintAttributes.Margins NO_MARGINS;
+  }
+
+  public static final class PrintAttributes.MediaSize {
+    ctor public PrintAttributes.MediaSize(@NonNull String, @NonNull String, @IntRange(from=1) int, @IntRange(from=1) int);
+    method @NonNull public android.print.PrintAttributes.MediaSize asLandscape();
+    method @NonNull public android.print.PrintAttributes.MediaSize asPortrait();
+    method @IntRange(from=1) public int getHeightMils();
+    method @NonNull public String getId();
+    method @NonNull public String getLabel(@NonNull android.content.pm.PackageManager);
+    method @IntRange(from=1) public int getWidthMils();
+    method public boolean isPortrait();
+    field public static final android.print.PrintAttributes.MediaSize ISO_A0;
+    field public static final android.print.PrintAttributes.MediaSize ISO_A1;
+    field public static final android.print.PrintAttributes.MediaSize ISO_A10;
+    field public static final android.print.PrintAttributes.MediaSize ISO_A2;
+    field public static final android.print.PrintAttributes.MediaSize ISO_A3;
+    field public static final android.print.PrintAttributes.MediaSize ISO_A4;
+    field public static final android.print.PrintAttributes.MediaSize ISO_A5;
+    field public static final android.print.PrintAttributes.MediaSize ISO_A6;
+    field public static final android.print.PrintAttributes.MediaSize ISO_A7;
+    field public static final android.print.PrintAttributes.MediaSize ISO_A8;
+    field public static final android.print.PrintAttributes.MediaSize ISO_A9;
+    field public static final android.print.PrintAttributes.MediaSize ISO_B0;
+    field public static final android.print.PrintAttributes.MediaSize ISO_B1;
+    field public static final android.print.PrintAttributes.MediaSize ISO_B10;
+    field public static final android.print.PrintAttributes.MediaSize ISO_B2;
+    field public static final android.print.PrintAttributes.MediaSize ISO_B3;
+    field public static final android.print.PrintAttributes.MediaSize ISO_B4;
+    field public static final android.print.PrintAttributes.MediaSize ISO_B5;
+    field public static final android.print.PrintAttributes.MediaSize ISO_B6;
+    field public static final android.print.PrintAttributes.MediaSize ISO_B7;
+    field public static final android.print.PrintAttributes.MediaSize ISO_B8;
+    field public static final android.print.PrintAttributes.MediaSize ISO_B9;
+    field public static final android.print.PrintAttributes.MediaSize ISO_C0;
+    field public static final android.print.PrintAttributes.MediaSize ISO_C1;
+    field public static final android.print.PrintAttributes.MediaSize ISO_C10;
+    field public static final android.print.PrintAttributes.MediaSize ISO_C2;
+    field public static final android.print.PrintAttributes.MediaSize ISO_C3;
+    field public static final android.print.PrintAttributes.MediaSize ISO_C4;
+    field public static final android.print.PrintAttributes.MediaSize ISO_C5;
+    field public static final android.print.PrintAttributes.MediaSize ISO_C6;
+    field public static final android.print.PrintAttributes.MediaSize ISO_C7;
+    field public static final android.print.PrintAttributes.MediaSize ISO_C8;
+    field public static final android.print.PrintAttributes.MediaSize ISO_C9;
+    field public static final android.print.PrintAttributes.MediaSize JIS_B0;
+    field public static final android.print.PrintAttributes.MediaSize JIS_B1;
+    field public static final android.print.PrintAttributes.MediaSize JIS_B10;
+    field public static final android.print.PrintAttributes.MediaSize JIS_B2;
+    field public static final android.print.PrintAttributes.MediaSize JIS_B3;
+    field public static final android.print.PrintAttributes.MediaSize JIS_B4;
+    field public static final android.print.PrintAttributes.MediaSize JIS_B5;
+    field public static final android.print.PrintAttributes.MediaSize JIS_B6;
+    field public static final android.print.PrintAttributes.MediaSize JIS_B7;
+    field public static final android.print.PrintAttributes.MediaSize JIS_B8;
+    field public static final android.print.PrintAttributes.MediaSize JIS_B9;
+    field public static final android.print.PrintAttributes.MediaSize JIS_EXEC;
+    field public static final android.print.PrintAttributes.MediaSize JPN_CHOU2;
+    field public static final android.print.PrintAttributes.MediaSize JPN_CHOU3;
+    field public static final android.print.PrintAttributes.MediaSize JPN_CHOU4;
+    field public static final android.print.PrintAttributes.MediaSize JPN_HAGAKI;
+    field public static final android.print.PrintAttributes.MediaSize JPN_KAHU;
+    field public static final android.print.PrintAttributes.MediaSize JPN_KAKU2;
+    field public static final android.print.PrintAttributes.MediaSize JPN_OUFUKU;
+    field public static final android.print.PrintAttributes.MediaSize JPN_YOU4;
+    field public static final android.print.PrintAttributes.MediaSize NA_FOOLSCAP;
+    field public static final android.print.PrintAttributes.MediaSize NA_GOVT_LETTER;
+    field public static final android.print.PrintAttributes.MediaSize NA_INDEX_3X5;
+    field public static final android.print.PrintAttributes.MediaSize NA_INDEX_4X6;
+    field public static final android.print.PrintAttributes.MediaSize NA_INDEX_5X8;
+    field public static final android.print.PrintAttributes.MediaSize NA_JUNIOR_LEGAL;
+    field public static final android.print.PrintAttributes.MediaSize NA_LEDGER;
+    field public static final android.print.PrintAttributes.MediaSize NA_LEGAL;
+    field public static final android.print.PrintAttributes.MediaSize NA_LETTER;
+    field public static final android.print.PrintAttributes.MediaSize NA_MONARCH;
+    field public static final android.print.PrintAttributes.MediaSize NA_QUARTO;
+    field public static final android.print.PrintAttributes.MediaSize NA_TABLOID;
+    field public static final android.print.PrintAttributes.MediaSize OM_DAI_PA_KAI;
+    field public static final android.print.PrintAttributes.MediaSize OM_JUURO_KU_KAI;
+    field public static final android.print.PrintAttributes.MediaSize OM_PA_KAI;
+    field public static final android.print.PrintAttributes.MediaSize PRC_1;
+    field public static final android.print.PrintAttributes.MediaSize PRC_10;
+    field public static final android.print.PrintAttributes.MediaSize PRC_16K;
+    field public static final android.print.PrintAttributes.MediaSize PRC_2;
+    field public static final android.print.PrintAttributes.MediaSize PRC_3;
+    field public static final android.print.PrintAttributes.MediaSize PRC_4;
+    field public static final android.print.PrintAttributes.MediaSize PRC_5;
+    field public static final android.print.PrintAttributes.MediaSize PRC_6;
+    field public static final android.print.PrintAttributes.MediaSize PRC_7;
+    field public static final android.print.PrintAttributes.MediaSize PRC_8;
+    field public static final android.print.PrintAttributes.MediaSize PRC_9;
+    field public static final android.print.PrintAttributes.MediaSize ROC_16K;
+    field public static final android.print.PrintAttributes.MediaSize ROC_8K;
+    field public static final android.print.PrintAttributes.MediaSize UNKNOWN_LANDSCAPE;
+    field public static final android.print.PrintAttributes.MediaSize UNKNOWN_PORTRAIT;
+  }
+
+  public static final class PrintAttributes.Resolution {
+    ctor public PrintAttributes.Resolution(@NonNull String, @NonNull String, @IntRange(from=1) int, @IntRange(from=1) int);
+    method @IntRange(from=1) public int getHorizontalDpi();
+    method @NonNull public String getId();
+    method @NonNull public String getLabel();
+    method @IntRange(from=1) public int getVerticalDpi();
+  }
+
+  public abstract class PrintDocumentAdapter {
+    ctor public PrintDocumentAdapter();
+    method public void onFinish();
+    method public abstract void onLayout(android.print.PrintAttributes, android.print.PrintAttributes, android.os.CancellationSignal, android.print.PrintDocumentAdapter.LayoutResultCallback, android.os.Bundle);
+    method public void onStart();
+    method public abstract void onWrite(android.print.PageRange[], android.os.ParcelFileDescriptor, android.os.CancellationSignal, android.print.PrintDocumentAdapter.WriteResultCallback);
+    field public static final String EXTRA_PRINT_PREVIEW = "EXTRA_PRINT_PREVIEW";
+  }
+
+  public abstract static class PrintDocumentAdapter.LayoutResultCallback {
+    method public void onLayoutCancelled();
+    method public void onLayoutFailed(CharSequence);
+    method public void onLayoutFinished(android.print.PrintDocumentInfo, boolean);
+  }
+
+  public abstract static class PrintDocumentAdapter.WriteResultCallback {
+    method public void onWriteCancelled();
+    method public void onWriteFailed(CharSequence);
+    method public void onWriteFinished(android.print.PageRange[]);
+  }
+
+  public final class PrintDocumentInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getContentType();
+    method @IntRange(from=0) public long getDataSize();
+    method @NonNull public String getName();
+    method @IntRange(from=0xffffffff) public int getPageCount();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int CONTENT_TYPE_DOCUMENT = 0; // 0x0
+    field public static final int CONTENT_TYPE_PHOTO = 1; // 0x1
+    field public static final int CONTENT_TYPE_UNKNOWN = -1; // 0xffffffff
+    field @NonNull public static final android.os.Parcelable.Creator<android.print.PrintDocumentInfo> CREATOR;
+    field public static final int PAGE_COUNT_UNKNOWN = -1; // 0xffffffff
+  }
+
+  public static final class PrintDocumentInfo.Builder {
+    ctor public PrintDocumentInfo.Builder(@NonNull String);
+    method @NonNull public android.print.PrintDocumentInfo build();
+    method @NonNull public android.print.PrintDocumentInfo.Builder setContentType(int);
+    method @NonNull public android.print.PrintDocumentInfo.Builder setPageCount(@IntRange(from=0xffffffff) int);
+  }
+
+  public final class PrintJob {
+    method public void cancel();
+    method @Nullable public android.print.PrintJobId getId();
+    method @NonNull public android.print.PrintJobInfo getInfo();
+    method public boolean isBlocked();
+    method public boolean isCancelled();
+    method public boolean isCompleted();
+    method public boolean isFailed();
+    method public boolean isQueued();
+    method public boolean isStarted();
+    method public void restart();
+  }
+
+  public final class PrintJobId implements android.os.Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.print.PrintJobId> CREATOR;
+  }
+
+  public final class PrintJobInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getAdvancedIntOption(String);
+    method public String getAdvancedStringOption(String);
+    method @NonNull public android.print.PrintAttributes getAttributes();
+    method @IntRange(from=0) public int getCopies();
+    method public long getCreationTime();
+    method @Nullable public android.print.PrintJobId getId();
+    method @NonNull public String getLabel();
+    method @Nullable public android.print.PageRange[] getPages();
+    method @Nullable public android.print.PrinterId getPrinterId();
+    method public int getState();
+    method public boolean hasAdvancedOption(String);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.print.PrintJobInfo> CREATOR;
+    field public static final int STATE_BLOCKED = 4; // 0x4
+    field public static final int STATE_CANCELED = 7; // 0x7
+    field public static final int STATE_COMPLETED = 5; // 0x5
+    field public static final int STATE_CREATED = 1; // 0x1
+    field public static final int STATE_FAILED = 6; // 0x6
+    field public static final int STATE_QUEUED = 2; // 0x2
+    field public static final int STATE_STARTED = 3; // 0x3
+  }
+
+  public static final class PrintJobInfo.Builder {
+    ctor public PrintJobInfo.Builder(@Nullable android.print.PrintJobInfo);
+    method @NonNull public android.print.PrintJobInfo build();
+    method public void putAdvancedOption(@NonNull String, @Nullable String);
+    method public void putAdvancedOption(@NonNull String, int);
+    method public void setAttributes(@NonNull android.print.PrintAttributes);
+    method public void setCopies(@IntRange(from=1) int);
+    method public void setPages(@NonNull android.print.PageRange[]);
+  }
+
+  public final class PrintManager {
+    method @NonNull public java.util.List<android.print.PrintJob> getPrintJobs();
+    method @NonNull public android.print.PrintJob print(@NonNull String, @NonNull android.print.PrintDocumentAdapter, @Nullable android.print.PrintAttributes);
+  }
+
+  public final class PrinterCapabilitiesInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getColorModes();
+    method @NonNull public android.print.PrintAttributes getDefaults();
+    method public int getDuplexModes();
+    method @NonNull public java.util.List<android.print.PrintAttributes.MediaSize> getMediaSizes();
+    method @NonNull public android.print.PrintAttributes.Margins getMinMargins();
+    method @NonNull public java.util.List<android.print.PrintAttributes.Resolution> getResolutions();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.print.PrinterCapabilitiesInfo> CREATOR;
+  }
+
+  public static final class PrinterCapabilitiesInfo.Builder {
+    ctor public PrinterCapabilitiesInfo.Builder(@NonNull android.print.PrinterId);
+    method @NonNull public android.print.PrinterCapabilitiesInfo.Builder addMediaSize(@NonNull android.print.PrintAttributes.MediaSize, boolean);
+    method @NonNull public android.print.PrinterCapabilitiesInfo.Builder addResolution(@NonNull android.print.PrintAttributes.Resolution, boolean);
+    method @NonNull public android.print.PrinterCapabilitiesInfo build();
+    method @NonNull public android.print.PrinterCapabilitiesInfo.Builder setColorModes(int, int);
+    method @NonNull public android.print.PrinterCapabilitiesInfo.Builder setDuplexModes(int, int);
+    method @NonNull public android.print.PrinterCapabilitiesInfo.Builder setMinMargins(@NonNull android.print.PrintAttributes.Margins);
+  }
+
+  public final class PrinterId implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public String getLocalId();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.print.PrinterId> CREATOR;
+  }
+
+  public final class PrinterInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public android.print.PrinterCapabilitiesInfo getCapabilities();
+    method @Nullable public String getDescription();
+    method @NonNull public android.print.PrinterId getId();
+    method @NonNull public String getName();
+    method public int getStatus();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.print.PrinterInfo> CREATOR;
+    field public static final int STATUS_BUSY = 2; // 0x2
+    field public static final int STATUS_IDLE = 1; // 0x1
+    field public static final int STATUS_UNAVAILABLE = 3; // 0x3
+  }
+
+  public static final class PrinterInfo.Builder {
+    ctor public PrinterInfo.Builder(@NonNull android.print.PrinterId, @NonNull String, int);
+    ctor public PrinterInfo.Builder(@NonNull android.print.PrinterInfo);
+    method @NonNull public android.print.PrinterInfo build();
+    method @NonNull public android.print.PrinterInfo.Builder setCapabilities(@NonNull android.print.PrinterCapabilitiesInfo);
+    method @NonNull public android.print.PrinterInfo.Builder setDescription(@NonNull String);
+    method @NonNull public android.print.PrinterInfo.Builder setHasCustomPrinterIcon(boolean);
+    method @NonNull public android.print.PrinterInfo.Builder setIconResourceId(@DrawableRes int);
+    method @NonNull public android.print.PrinterInfo.Builder setInfoIntent(@NonNull android.app.PendingIntent);
+    method @NonNull public android.print.PrinterInfo.Builder setName(@NonNull String);
+    method @NonNull public android.print.PrinterInfo.Builder setStatus(int);
+  }
+
+}
+
+package android.print.pdf {
+
+  public class PrintedPdfDocument extends android.graphics.pdf.PdfDocument {
+    ctor public PrintedPdfDocument(@NonNull android.content.Context, @NonNull android.print.PrintAttributes);
+    method @NonNull public android.graphics.Rect getPageContentRect();
+    method @IntRange(from=0) public int getPageHeight();
+    method @IntRange(from=0) public int getPageWidth();
+    method @NonNull public android.graphics.pdf.PdfDocument.Page startPage(@IntRange(from=0) int);
+  }
+
+}
+
+package android.printservice {
+
+  public final class CustomPrinterIconCallback {
+    method public boolean onCustomPrinterIconLoaded(@Nullable android.graphics.drawable.Icon);
+  }
+
+  public final class PrintDocument {
+    method @Nullable public android.os.ParcelFileDescriptor getData();
+    method @NonNull public android.print.PrintDocumentInfo getInfo();
+  }
+
+  public final class PrintJob {
+    method @MainThread public boolean block(@Nullable String);
+    method @MainThread public boolean cancel();
+    method @MainThread public boolean complete();
+    method @MainThread public boolean fail(@Nullable String);
+    method @MainThread public int getAdvancedIntOption(String);
+    method @MainThread public String getAdvancedStringOption(String);
+    method @MainThread @NonNull public android.printservice.PrintDocument getDocument();
+    method @MainThread public android.print.PrintJobId getId();
+    method @MainThread @NonNull public android.print.PrintJobInfo getInfo();
+    method @MainThread @Nullable public String getTag();
+    method @MainThread public boolean hasAdvancedOption(String);
+    method @MainThread public boolean isBlocked();
+    method @MainThread public boolean isCancelled();
+    method @MainThread public boolean isCompleted();
+    method @MainThread public boolean isFailed();
+    method @MainThread public boolean isQueued();
+    method @MainThread public boolean isStarted();
+    method @MainThread public void setProgress(@FloatRange(from=0.0, to=1.0) float);
+    method @MainThread public void setStatus(@Nullable CharSequence);
+    method @MainThread public void setStatus(@StringRes int);
+    method @MainThread public boolean setTag(@NonNull String);
+    method @MainThread public boolean start();
+  }
+
+  public abstract class PrintService extends android.app.Service {
+    ctor public PrintService();
+    method protected final void attachBaseContext(android.content.Context);
+    method @NonNull public final android.print.PrinterId generatePrinterId(String);
+    method public final java.util.List<android.printservice.PrintJob> getActivePrintJobs();
+    method public final android.os.IBinder onBind(android.content.Intent);
+    method protected void onConnected();
+    method @Nullable protected abstract android.printservice.PrinterDiscoverySession onCreatePrinterDiscoverySession();
+    method protected void onDisconnected();
+    method protected abstract void onPrintJobQueued(android.printservice.PrintJob);
+    method protected abstract void onRequestCancelPrintJob(android.printservice.PrintJob);
+    field public static final String EXTRA_CAN_SELECT_PRINTER = "android.printservice.extra.CAN_SELECT_PRINTER";
+    field public static final String EXTRA_PRINTER_INFO = "android.intent.extra.print.EXTRA_PRINTER_INFO";
+    field public static final String EXTRA_PRINT_DOCUMENT_INFO = "android.printservice.extra.PRINT_DOCUMENT_INFO";
+    field public static final String EXTRA_PRINT_JOB_INFO = "android.intent.extra.print.PRINT_JOB_INFO";
+    field public static final String EXTRA_SELECT_PRINTER = "android.printservice.extra.SELECT_PRINTER";
+    field public static final String SERVICE_INTERFACE = "android.printservice.PrintService";
+    field public static final String SERVICE_META_DATA = "android.printservice";
+  }
+
+  public abstract class PrinterDiscoverySession {
+    ctor public PrinterDiscoverySession();
+    method public final void addPrinters(@NonNull java.util.List<android.print.PrinterInfo>);
+    method @NonNull public final java.util.List<android.print.PrinterInfo> getPrinters();
+    method @NonNull public final java.util.List<android.print.PrinterId> getTrackedPrinters();
+    method public final boolean isDestroyed();
+    method public final boolean isPrinterDiscoveryStarted();
+    method public abstract void onDestroy();
+    method public void onRequestCustomPrinterIcon(@NonNull android.print.PrinterId, @NonNull android.os.CancellationSignal, @NonNull android.printservice.CustomPrinterIconCallback);
+    method public abstract void onStartPrinterDiscovery(@NonNull java.util.List<android.print.PrinterId>);
+    method public abstract void onStartPrinterStateTracking(@NonNull android.print.PrinterId);
+    method public abstract void onStopPrinterDiscovery();
+    method public abstract void onStopPrinterStateTracking(@NonNull android.print.PrinterId);
+    method public abstract void onValidatePrinters(@NonNull java.util.List<android.print.PrinterId>);
+    method public final void removePrinters(@NonNull java.util.List<android.print.PrinterId>);
+  }
+
+}
+
+package android.provider {
+
+  public final class AlarmClock {
+    ctor public AlarmClock();
+    field public static final String ACTION_DISMISS_ALARM = "android.intent.action.DISMISS_ALARM";
+    field public static final String ACTION_DISMISS_TIMER = "android.intent.action.DISMISS_TIMER";
+    field public static final String ACTION_SET_ALARM = "android.intent.action.SET_ALARM";
+    field public static final String ACTION_SET_TIMER = "android.intent.action.SET_TIMER";
+    field public static final String ACTION_SHOW_ALARMS = "android.intent.action.SHOW_ALARMS";
+    field public static final String ACTION_SHOW_TIMERS = "android.intent.action.SHOW_TIMERS";
+    field public static final String ACTION_SNOOZE_ALARM = "android.intent.action.SNOOZE_ALARM";
+    field public static final String ALARM_SEARCH_MODE_ALL = "android.all";
+    field public static final String ALARM_SEARCH_MODE_LABEL = "android.label";
+    field public static final String ALARM_SEARCH_MODE_NEXT = "android.next";
+    field public static final String ALARM_SEARCH_MODE_TIME = "android.time";
+    field public static final String EXTRA_ALARM_SEARCH_MODE = "android.intent.extra.alarm.SEARCH_MODE";
+    field public static final String EXTRA_ALARM_SNOOZE_DURATION = "android.intent.extra.alarm.SNOOZE_DURATION";
+    field public static final String EXTRA_DAYS = "android.intent.extra.alarm.DAYS";
+    field public static final String EXTRA_HOUR = "android.intent.extra.alarm.HOUR";
+    field public static final String EXTRA_IS_PM = "android.intent.extra.alarm.IS_PM";
+    field public static final String EXTRA_LENGTH = "android.intent.extra.alarm.LENGTH";
+    field public static final String EXTRA_MESSAGE = "android.intent.extra.alarm.MESSAGE";
+    field public static final String EXTRA_MINUTES = "android.intent.extra.alarm.MINUTES";
+    field public static final String EXTRA_RINGTONE = "android.intent.extra.alarm.RINGTONE";
+    field public static final String EXTRA_SKIP_UI = "android.intent.extra.alarm.SKIP_UI";
+    field public static final String EXTRA_VIBRATE = "android.intent.extra.alarm.VIBRATE";
+    field public static final String VALUE_RINGTONE_SILENT = "silent";
+  }
+
+  public interface BaseColumns {
+    field public static final String _COUNT = "_count";
+    field public static final String _ID = "_id";
+  }
+
+  public class BlockedNumberContract {
+    method public static boolean canCurrentUserBlockNumbers(android.content.Context);
+    method @WorkerThread public static boolean isBlocked(android.content.Context, String);
+    method @WorkerThread public static int unblock(android.content.Context, String);
+    field public static final String AUTHORITY = "com.android.blockednumber";
+    field public static final android.net.Uri AUTHORITY_URI;
+  }
+
+  public static class BlockedNumberContract.BlockedNumbers {
+    field public static final String COLUMN_E164_NUMBER = "e164_number";
+    field public static final String COLUMN_ID = "_id";
+    field public static final String COLUMN_ORIGINAL_NUMBER = "original_number";
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/blocked_number";
+    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/blocked_number";
+    field public static final android.net.Uri CONTENT_URI;
+  }
+
+  public class Browser {
+    ctor public Browser();
+    method public static final void sendString(android.content.Context, String);
+    field public static final String EXTRA_APPLICATION_ID = "com.android.browser.application_id";
+    field public static final String EXTRA_CREATE_NEW_TAB = "create_new_tab";
+    field public static final String EXTRA_HEADERS = "com.android.browser.headers";
+    field public static final String INITIAL_ZOOM_LEVEL = "browser.initialZoomLevel";
+  }
+
+  public final class CalendarContract {
+    method public static boolean startViewCalendarEventInManagedProfile(@NonNull android.content.Context, long, long, long, boolean, int);
+    field public static final String ACCOUNT_TYPE_LOCAL = "LOCAL";
+    field public static final String ACTION_EVENT_REMINDER = "android.intent.action.EVENT_REMINDER";
+    field public static final String ACTION_HANDLE_CUSTOM_EVENT = "android.provider.calendar.action.HANDLE_CUSTOM_EVENT";
+    field public static final String ACTION_VIEW_MANAGED_PROFILE_CALENDAR_EVENT = "android.provider.calendar.action.VIEW_MANAGED_PROFILE_CALENDAR_EVENT";
+    field public static final String AUTHORITY = "com.android.calendar";
+    field public static final String CALLER_IS_SYNCADAPTER = "caller_is_syncadapter";
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String EXTRA_CUSTOM_APP_URI = "customAppUri";
+    field public static final String EXTRA_EVENT_ALL_DAY = "allDay";
+    field public static final String EXTRA_EVENT_BEGIN_TIME = "beginTime";
+    field public static final String EXTRA_EVENT_END_TIME = "endTime";
+    field public static final String EXTRA_EVENT_ID = "id";
+  }
+
+  public static final class CalendarContract.Attendees implements android.provider.BaseColumns android.provider.CalendarContract.AttendeesColumns android.provider.CalendarContract.EventsColumns {
+    method public static android.database.Cursor query(android.content.ContentResolver, long, String[]);
+    field public static final android.net.Uri CONTENT_URI;
+  }
+
+  protected static interface CalendarContract.AttendeesColumns {
+    field public static final String ATTENDEE_EMAIL = "attendeeEmail";
+    field public static final String ATTENDEE_IDENTITY = "attendeeIdentity";
+    field public static final String ATTENDEE_ID_NAMESPACE = "attendeeIdNamespace";
+    field public static final String ATTENDEE_NAME = "attendeeName";
+    field public static final String ATTENDEE_RELATIONSHIP = "attendeeRelationship";
+    field public static final String ATTENDEE_STATUS = "attendeeStatus";
+    field public static final int ATTENDEE_STATUS_ACCEPTED = 1; // 0x1
+    field public static final int ATTENDEE_STATUS_DECLINED = 2; // 0x2
+    field public static final int ATTENDEE_STATUS_INVITED = 3; // 0x3
+    field public static final int ATTENDEE_STATUS_NONE = 0; // 0x0
+    field public static final int ATTENDEE_STATUS_TENTATIVE = 4; // 0x4
+    field public static final String ATTENDEE_TYPE = "attendeeType";
+    field public static final String EVENT_ID = "event_id";
+    field public static final int RELATIONSHIP_ATTENDEE = 1; // 0x1
+    field public static final int RELATIONSHIP_NONE = 0; // 0x0
+    field public static final int RELATIONSHIP_ORGANIZER = 2; // 0x2
+    field public static final int RELATIONSHIP_PERFORMER = 3; // 0x3
+    field public static final int RELATIONSHIP_SPEAKER = 4; // 0x4
+    field public static final int TYPE_NONE = 0; // 0x0
+    field public static final int TYPE_OPTIONAL = 2; // 0x2
+    field public static final int TYPE_REQUIRED = 1; // 0x1
+    field public static final int TYPE_RESOURCE = 3; // 0x3
+  }
+
+  public static final class CalendarContract.CalendarAlerts implements android.provider.BaseColumns android.provider.CalendarContract.CalendarAlertsColumns android.provider.CalendarContract.CalendarColumns android.provider.CalendarContract.EventsColumns {
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final android.net.Uri CONTENT_URI_BY_INSTANCE;
+  }
+
+  protected static interface CalendarContract.CalendarAlertsColumns {
+    field public static final String ALARM_TIME = "alarmTime";
+    field public static final String BEGIN = "begin";
+    field public static final String CREATION_TIME = "creationTime";
+    field public static final String DEFAULT_SORT_ORDER = "begin ASC,title ASC";
+    field public static final String END = "end";
+    field public static final String EVENT_ID = "event_id";
+    field public static final String MINUTES = "minutes";
+    field public static final String NOTIFY_TIME = "notifyTime";
+    field public static final String RECEIVED_TIME = "receivedTime";
+    field public static final String STATE = "state";
+    field public static final int STATE_DISMISSED = 2; // 0x2
+    field public static final int STATE_FIRED = 1; // 0x1
+    field public static final int STATE_SCHEDULED = 0; // 0x0
+  }
+
+  public static final class CalendarContract.CalendarCache implements android.provider.CalendarContract.CalendarCacheColumns {
+    field public static final String KEY_TIMEZONE_INSTANCES = "timezoneInstances";
+    field public static final String KEY_TIMEZONE_INSTANCES_PREVIOUS = "timezoneInstancesPrevious";
+    field public static final String KEY_TIMEZONE_TYPE = "timezoneType";
+    field public static final String TIMEZONE_TYPE_AUTO = "auto";
+    field public static final String TIMEZONE_TYPE_HOME = "home";
+    field public static final android.net.Uri URI;
+  }
+
+  protected static interface CalendarContract.CalendarCacheColumns {
+    field public static final String KEY = "key";
+    field public static final String VALUE = "value";
+  }
+
+  protected static interface CalendarContract.CalendarColumns {
+    field public static final String ALLOWED_ATTENDEE_TYPES = "allowedAttendeeTypes";
+    field public static final String ALLOWED_AVAILABILITY = "allowedAvailability";
+    field public static final String ALLOWED_REMINDERS = "allowedReminders";
+    field public static final String CALENDAR_ACCESS_LEVEL = "calendar_access_level";
+    field public static final String CALENDAR_COLOR = "calendar_color";
+    field public static final String CALENDAR_COLOR_KEY = "calendar_color_index";
+    field public static final String CALENDAR_DISPLAY_NAME = "calendar_displayName";
+    field public static final String CALENDAR_TIME_ZONE = "calendar_timezone";
+    field public static final int CAL_ACCESS_CONTRIBUTOR = 500; // 0x1f4
+    field public static final int CAL_ACCESS_EDITOR = 600; // 0x258
+    field public static final int CAL_ACCESS_FREEBUSY = 100; // 0x64
+    field public static final int CAL_ACCESS_NONE = 0; // 0x0
+    field public static final int CAL_ACCESS_OVERRIDE = 400; // 0x190
+    field public static final int CAL_ACCESS_OWNER = 700; // 0x2bc
+    field public static final int CAL_ACCESS_READ = 200; // 0xc8
+    field public static final int CAL_ACCESS_RESPOND = 300; // 0x12c
+    field public static final int CAL_ACCESS_ROOT = 800; // 0x320
+    field public static final String CAN_MODIFY_TIME_ZONE = "canModifyTimeZone";
+    field public static final String CAN_ORGANIZER_RESPOND = "canOrganizerRespond";
+    field public static final String IS_PRIMARY = "isPrimary";
+    field public static final String MAX_REMINDERS = "maxReminders";
+    field public static final String OWNER_ACCOUNT = "ownerAccount";
+    field public static final String SYNC_EVENTS = "sync_events";
+    field public static final String VISIBLE = "visible";
+  }
+
+  public static final class CalendarContract.CalendarEntity implements android.provider.BaseColumns android.provider.CalendarContract.CalendarColumns android.provider.CalendarContract.SyncColumns {
+    method public static android.content.EntityIterator newEntityIterator(android.database.Cursor);
+    field public static final android.net.Uri CONTENT_URI;
+  }
+
+  protected static interface CalendarContract.CalendarSyncColumns {
+    field public static final String CAL_SYNC1 = "cal_sync1";
+    field public static final String CAL_SYNC10 = "cal_sync10";
+    field public static final String CAL_SYNC2 = "cal_sync2";
+    field public static final String CAL_SYNC3 = "cal_sync3";
+    field public static final String CAL_SYNC4 = "cal_sync4";
+    field public static final String CAL_SYNC5 = "cal_sync5";
+    field public static final String CAL_SYNC6 = "cal_sync6";
+    field public static final String CAL_SYNC7 = "cal_sync7";
+    field public static final String CAL_SYNC8 = "cal_sync8";
+    field public static final String CAL_SYNC9 = "cal_sync9";
+  }
+
+  public static final class CalendarContract.Calendars implements android.provider.BaseColumns android.provider.CalendarContract.CalendarColumns android.provider.CalendarContract.SyncColumns {
+    field public static final String CALENDAR_LOCATION = "calendar_location";
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String DEFAULT_SORT_ORDER = "calendar_displayName";
+    field @NonNull public static final android.net.Uri ENTERPRISE_CONTENT_URI;
+    field public static final String NAME = "name";
+  }
+
+  public static final class CalendarContract.Colors implements android.provider.CalendarContract.ColorsColumns {
+    field public static final android.net.Uri CONTENT_URI;
+  }
+
+  protected static interface CalendarContract.ColorsColumns extends android.provider.SyncStateContract.Columns {
+    field public static final String COLOR = "color";
+    field public static final String COLOR_KEY = "color_index";
+    field public static final String COLOR_TYPE = "color_type";
+    field public static final int TYPE_CALENDAR = 0; // 0x0
+    field public static final int TYPE_EVENT = 1; // 0x1
+  }
+
+  public static final class CalendarContract.EventDays implements android.provider.CalendarContract.EventDaysColumns {
+    method public static android.database.Cursor query(android.content.ContentResolver, int, int, String[]);
+    field public static final android.net.Uri CONTENT_URI;
+  }
+
+  protected static interface CalendarContract.EventDaysColumns {
+    field public static final String ENDDAY = "endDay";
+    field public static final String STARTDAY = "startDay";
+  }
+
+  public static final class CalendarContract.Events implements android.provider.BaseColumns android.provider.CalendarContract.CalendarColumns android.provider.CalendarContract.EventsColumns android.provider.CalendarContract.SyncColumns {
+    field public static final android.net.Uri CONTENT_EXCEPTION_URI;
+    field public static final android.net.Uri CONTENT_URI;
+    field @NonNull public static final android.net.Uri ENTERPRISE_CONTENT_URI;
+  }
+
+  protected static interface CalendarContract.EventsColumns {
+    field public static final int ACCESS_CONFIDENTIAL = 1; // 0x1
+    field public static final int ACCESS_DEFAULT = 0; // 0x0
+    field public static final String ACCESS_LEVEL = "accessLevel";
+    field public static final int ACCESS_PRIVATE = 2; // 0x2
+    field public static final int ACCESS_PUBLIC = 3; // 0x3
+    field public static final String ALL_DAY = "allDay";
+    field public static final String AVAILABILITY = "availability";
+    field public static final int AVAILABILITY_BUSY = 0; // 0x0
+    field public static final int AVAILABILITY_FREE = 1; // 0x1
+    field public static final int AVAILABILITY_TENTATIVE = 2; // 0x2
+    field public static final String CALENDAR_ID = "calendar_id";
+    field public static final String CAN_INVITE_OTHERS = "canInviteOthers";
+    field public static final String CUSTOM_APP_PACKAGE = "customAppPackage";
+    field public static final String CUSTOM_APP_URI = "customAppUri";
+    field public static final String DESCRIPTION = "description";
+    field public static final String DISPLAY_COLOR = "displayColor";
+    field public static final String DTEND = "dtend";
+    field public static final String DTSTART = "dtstart";
+    field public static final String DURATION = "duration";
+    field public static final String EVENT_COLOR = "eventColor";
+    field public static final String EVENT_COLOR_KEY = "eventColor_index";
+    field public static final String EVENT_END_TIMEZONE = "eventEndTimezone";
+    field public static final String EVENT_LOCATION = "eventLocation";
+    field public static final String EVENT_TIMEZONE = "eventTimezone";
+    field public static final String EXDATE = "exdate";
+    field public static final String EXRULE = "exrule";
+    field public static final String GUESTS_CAN_INVITE_OTHERS = "guestsCanInviteOthers";
+    field public static final String GUESTS_CAN_MODIFY = "guestsCanModify";
+    field public static final String GUESTS_CAN_SEE_GUESTS = "guestsCanSeeGuests";
+    field public static final String HAS_ALARM = "hasAlarm";
+    field public static final String HAS_ATTENDEE_DATA = "hasAttendeeData";
+    field public static final String HAS_EXTENDED_PROPERTIES = "hasExtendedProperties";
+    field public static final String IS_ORGANIZER = "isOrganizer";
+    field public static final String LAST_DATE = "lastDate";
+    field public static final String LAST_SYNCED = "lastSynced";
+    field public static final String ORGANIZER = "organizer";
+    field public static final String ORIGINAL_ALL_DAY = "originalAllDay";
+    field public static final String ORIGINAL_ID = "original_id";
+    field public static final String ORIGINAL_INSTANCE_TIME = "originalInstanceTime";
+    field public static final String ORIGINAL_SYNC_ID = "original_sync_id";
+    field public static final String RDATE = "rdate";
+    field public static final String RRULE = "rrule";
+    field public static final String SELF_ATTENDEE_STATUS = "selfAttendeeStatus";
+    field public static final String STATUS = "eventStatus";
+    field public static final int STATUS_CANCELED = 2; // 0x2
+    field public static final int STATUS_CONFIRMED = 1; // 0x1
+    field public static final int STATUS_TENTATIVE = 0; // 0x0
+    field public static final String SYNC_DATA1 = "sync_data1";
+    field public static final String SYNC_DATA10 = "sync_data10";
+    field public static final String SYNC_DATA2 = "sync_data2";
+    field public static final String SYNC_DATA3 = "sync_data3";
+    field public static final String SYNC_DATA4 = "sync_data4";
+    field public static final String SYNC_DATA5 = "sync_data5";
+    field public static final String SYNC_DATA6 = "sync_data6";
+    field public static final String SYNC_DATA7 = "sync_data7";
+    field public static final String SYNC_DATA8 = "sync_data8";
+    field public static final String SYNC_DATA9 = "sync_data9";
+    field public static final String TITLE = "title";
+    field public static final String UID_2445 = "uid2445";
+  }
+
+  public static final class CalendarContract.EventsEntity implements android.provider.BaseColumns android.provider.CalendarContract.EventsColumns android.provider.CalendarContract.SyncColumns {
+    method public static android.content.EntityIterator newEntityIterator(android.database.Cursor, android.content.ContentResolver);
+    method public static android.content.EntityIterator newEntityIterator(android.database.Cursor, android.content.ContentProviderClient);
+    field public static final android.net.Uri CONTENT_URI;
+  }
+
+  public static final class CalendarContract.ExtendedProperties implements android.provider.BaseColumns android.provider.CalendarContract.EventsColumns android.provider.CalendarContract.ExtendedPropertiesColumns {
+    field public static final android.net.Uri CONTENT_URI;
+  }
+
+  protected static interface CalendarContract.ExtendedPropertiesColumns {
+    field public static final String EVENT_ID = "event_id";
+    field public static final String NAME = "name";
+    field public static final String VALUE = "value";
+  }
+
+  public static final class CalendarContract.Instances implements android.provider.BaseColumns android.provider.CalendarContract.CalendarColumns android.provider.CalendarContract.EventsColumns {
+    method public static android.database.Cursor query(android.content.ContentResolver, String[], long, long);
+    method public static android.database.Cursor query(android.content.ContentResolver, String[], long, long, String);
+    field public static final String BEGIN = "begin";
+    field public static final android.net.Uri CONTENT_BY_DAY_URI;
+    field public static final android.net.Uri CONTENT_SEARCH_BY_DAY_URI;
+    field public static final android.net.Uri CONTENT_SEARCH_URI;
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String END = "end";
+    field public static final String END_DAY = "endDay";
+    field public static final String END_MINUTE = "endMinute";
+    field @NonNull public static final android.net.Uri ENTERPRISE_CONTENT_BY_DAY_URI;
+    field @NonNull public static final android.net.Uri ENTERPRISE_CONTENT_SEARCH_BY_DAY_URI;
+    field @NonNull public static final android.net.Uri ENTERPRISE_CONTENT_SEARCH_URI;
+    field @NonNull public static final android.net.Uri ENTERPRISE_CONTENT_URI;
+    field public static final String EVENT_ID = "event_id";
+    field public static final String START_DAY = "startDay";
+    field public static final String START_MINUTE = "startMinute";
+  }
+
+  public static final class CalendarContract.Reminders implements android.provider.BaseColumns android.provider.CalendarContract.EventsColumns android.provider.CalendarContract.RemindersColumns {
+    method public static android.database.Cursor query(android.content.ContentResolver, long, String[]);
+    field public static final android.net.Uri CONTENT_URI;
+  }
+
+  protected static interface CalendarContract.RemindersColumns {
+    field public static final String EVENT_ID = "event_id";
+    field public static final String METHOD = "method";
+    field public static final int METHOD_ALARM = 4; // 0x4
+    field public static final int METHOD_ALERT = 1; // 0x1
+    field public static final int METHOD_DEFAULT = 0; // 0x0
+    field public static final int METHOD_EMAIL = 2; // 0x2
+    field public static final int METHOD_SMS = 3; // 0x3
+    field public static final String MINUTES = "minutes";
+    field public static final int MINUTES_DEFAULT = -1; // 0xffffffff
+  }
+
+  protected static interface CalendarContract.SyncColumns extends android.provider.CalendarContract.CalendarSyncColumns {
+    field public static final String ACCOUNT_NAME = "account_name";
+    field public static final String ACCOUNT_TYPE = "account_type";
+    field public static final String CAN_PARTIALLY_UPDATE = "canPartiallyUpdate";
+    field public static final String DELETED = "deleted";
+    field public static final String DIRTY = "dirty";
+    field public static final String MUTATORS = "mutators";
+    field public static final String _SYNC_ID = "_sync_id";
+  }
+
+  public static final class CalendarContract.SyncState implements android.provider.SyncStateContract.Columns {
+    field public static final android.net.Uri CONTENT_URI;
+  }
+
+  public class CallLog {
+    ctor public CallLog();
+    field public static final String AUTHORITY = "call_log";
+    field public static final android.net.Uri CONTENT_URI;
+  }
+
+  public static class CallLog.Calls implements android.provider.BaseColumns {
+    ctor public CallLog.Calls();
+    method public static String getLastOutgoingCall(android.content.Context);
+    field public static final int ANSWERED_EXTERNALLY_TYPE = 7; // 0x7
+    field public static final long AUTO_MISSED_EMERGENCY_CALL = 1L; // 0x1L
+    field public static final long AUTO_MISSED_MAXIMUM_DIALING = 4L; // 0x4L
+    field public static final long AUTO_MISSED_MAXIMUM_RINGING = 2L; // 0x2L
+    field public static final int BLOCKED_TYPE = 6; // 0x6
+    field public static final String BLOCK_REASON = "block_reason";
+    field public static final int BLOCK_REASON_BLOCKED_NUMBER = 3; // 0x3
+    field public static final int BLOCK_REASON_CALL_SCREENING_SERVICE = 1; // 0x1
+    field public static final int BLOCK_REASON_DIRECT_TO_VOICEMAIL = 2; // 0x2
+    field public static final int BLOCK_REASON_NOT_BLOCKED = 0; // 0x0
+    field public static final int BLOCK_REASON_NOT_IN_CONTACTS = 7; // 0x7
+    field public static final int BLOCK_REASON_PAY_PHONE = 6; // 0x6
+    field public static final int BLOCK_REASON_RESTRICTED_NUMBER = 5; // 0x5
+    field public static final int BLOCK_REASON_UNKNOWN_NUMBER = 4; // 0x4
+    field public static final String CACHED_FORMATTED_NUMBER = "formatted_number";
+    field public static final String CACHED_LOOKUP_URI = "lookup_uri";
+    field public static final String CACHED_MATCHED_NUMBER = "matched_number";
+    field public static final String CACHED_NAME = "name";
+    field public static final String CACHED_NORMALIZED_NUMBER = "normalized_number";
+    field public static final String CACHED_NUMBER_LABEL = "numberlabel";
+    field public static final String CACHED_NUMBER_TYPE = "numbertype";
+    field public static final String CACHED_PHOTO_ID = "photo_id";
+    field public static final String CACHED_PHOTO_URI = "photo_uri";
+    field public static final String CALL_SCREENING_APP_NAME = "call_screening_app_name";
+    field public static final String CALL_SCREENING_COMPONENT_NAME = "call_screening_component_name";
+    field public static final android.net.Uri CONTENT_FILTER_URI;
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/calls";
+    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/calls";
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final android.net.Uri CONTENT_URI_WITH_VOICEMAIL;
+    field public static final String COUNTRY_ISO = "countryiso";
+    field public static final String DATA_USAGE = "data_usage";
+    field public static final String DATE = "date";
+    field public static final String DEFAULT_SORT_ORDER = "date DESC";
+    field public static final String DURATION = "duration";
+    field public static final String EXTRA_CALL_TYPE_FILTER = "android.provider.extra.CALL_TYPE_FILTER";
+    field public static final String FEATURES = "features";
+    field public static final int FEATURES_ASSISTED_DIALING_USED = 16; // 0x10
+    field public static final int FEATURES_HD_CALL = 4; // 0x4
+    field public static final int FEATURES_PULLED_EXTERNALLY = 2; // 0x2
+    field public static final int FEATURES_RTT = 32; // 0x20
+    field public static final int FEATURES_VIDEO = 1; // 0x1
+    field public static final int FEATURES_VOLTE = 64; // 0x40
+    field public static final int FEATURES_WIFI = 8; // 0x8
+    field public static final String GEOCODED_LOCATION = "geocoded_location";
+    field public static final int INCOMING_TYPE = 1; // 0x1
+    field public static final String IS_READ = "is_read";
+    field public static final String LAST_MODIFIED = "last_modified";
+    field public static final String LIMIT_PARAM_KEY = "limit";
+    field public static final String MISSED_REASON = "missed_reason";
+    field public static final long MISSED_REASON_NOT_MISSED = 0L; // 0x0L
+    field public static final int MISSED_TYPE = 3; // 0x3
+    field public static final String NEW = "new";
+    field public static final String NUMBER = "number";
+    field public static final String NUMBER_PRESENTATION = "presentation";
+    field public static final String OFFSET_PARAM_KEY = "offset";
+    field public static final int OUTGOING_TYPE = 2; // 0x2
+    field public static final String PHONE_ACCOUNT_COMPONENT_NAME = "subscription_component_name";
+    field public static final String PHONE_ACCOUNT_ID = "subscription_id";
+    field public static final String POST_DIAL_DIGITS = "post_dial_digits";
+    field public static final int PRESENTATION_ALLOWED = 1; // 0x1
+    field public static final int PRESENTATION_PAYPHONE = 4; // 0x4
+    field public static final int PRESENTATION_RESTRICTED = 2; // 0x2
+    field public static final int PRESENTATION_UNKNOWN = 3; // 0x3
+    field public static final int REJECTED_TYPE = 5; // 0x5
+    field public static final String TRANSCRIPTION = "transcription";
+    field public static final String TYPE = "type";
+    field public static final long USER_MISSED_CALL_FILTERS_TIMEOUT = 4194304L; // 0x400000L
+    field public static final long USER_MISSED_CALL_SCREENING_SERVICE_SILENCED = 2097152L; // 0x200000L
+    field public static final long USER_MISSED_DND_MODE = 262144L; // 0x40000L
+    field public static final long USER_MISSED_LOW_RING_VOLUME = 524288L; // 0x80000L
+    field public static final long USER_MISSED_NO_ANSWER = 65536L; // 0x10000L
+    field public static final long USER_MISSED_NO_VIBRATE = 1048576L; // 0x100000L
+    field public static final long USER_MISSED_SHORT_RING = 131072L; // 0x20000L
+    field public static final String VIA_NUMBER = "via_number";
+    field public static final int VOICEMAIL_TYPE = 4; // 0x4
+    field public static final String VOICEMAIL_URI = "voicemail_uri";
+  }
+
+  @Deprecated public class Contacts {
+    field @Deprecated public static final String AUTHORITY = "contacts";
+    field @Deprecated public static final android.net.Uri CONTENT_URI;
+    field @Deprecated public static final int KIND_EMAIL = 1; // 0x1
+    field @Deprecated public static final int KIND_IM = 3; // 0x3
+    field @Deprecated public static final int KIND_ORGANIZATION = 4; // 0x4
+    field @Deprecated public static final int KIND_PHONE = 5; // 0x5
+    field @Deprecated public static final int KIND_POSTAL = 2; // 0x2
+  }
+
+  @Deprecated public static final class Contacts.ContactMethods implements android.provider.BaseColumns android.provider.Contacts.ContactMethodsColumns android.provider.Contacts.PeopleColumns {
+    method @Deprecated public void addPostalLocation(android.content.Context, long, double, double);
+    method @Deprecated public static Object decodeImProtocol(String);
+    method @Deprecated public static String encodeCustomImProtocol(String);
+    method @Deprecated public static String encodePredefinedImProtocol(int);
+    method @Deprecated public static CharSequence getDisplayLabel(android.content.Context, int, int, CharSequence);
+    field @Deprecated public static final String CONTENT_EMAIL_ITEM_TYPE = "vnd.android.cursor.item/email";
+    field @Deprecated public static final String CONTENT_EMAIL_TYPE = "vnd.android.cursor.dir/email";
+    field @Deprecated public static final android.net.Uri CONTENT_EMAIL_URI;
+    field @Deprecated public static final String CONTENT_IM_ITEM_TYPE = "vnd.android.cursor.item/jabber-im";
+    field @Deprecated public static final String CONTENT_POSTAL_ITEM_TYPE = "vnd.android.cursor.item/postal-address";
+    field @Deprecated public static final String CONTENT_POSTAL_TYPE = "vnd.android.cursor.dir/postal-address";
+    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact-methods";
+    field @Deprecated public static final android.net.Uri CONTENT_URI;
+    field @Deprecated public static final String DEFAULT_SORT_ORDER = "name ASC";
+    field @Deprecated public static final String PERSON_ID = "person";
+    field @Deprecated public static final String POSTAL_LOCATION_LATITUDE = "data";
+    field @Deprecated public static final String POSTAL_LOCATION_LONGITUDE = "aux_data";
+    field @Deprecated public static final int PROTOCOL_AIM = 0; // 0x0
+    field @Deprecated public static final int PROTOCOL_GOOGLE_TALK = 5; // 0x5
+    field @Deprecated public static final int PROTOCOL_ICQ = 6; // 0x6
+    field @Deprecated public static final int PROTOCOL_JABBER = 7; // 0x7
+    field @Deprecated public static final int PROTOCOL_MSN = 1; // 0x1
+    field @Deprecated public static final int PROTOCOL_QQ = 4; // 0x4
+    field @Deprecated public static final int PROTOCOL_SKYPE = 3; // 0x3
+    field @Deprecated public static final int PROTOCOL_YAHOO = 2; // 0x2
+  }
+
+  @Deprecated public static interface Contacts.ContactMethodsColumns {
+    field @Deprecated public static final String AUX_DATA = "aux_data";
+    field @Deprecated public static final String DATA = "data";
+    field @Deprecated public static final String ISPRIMARY = "isprimary";
+    field @Deprecated public static final String KIND = "kind";
+    field @Deprecated public static final String LABEL = "label";
+    field @Deprecated public static final String TYPE = "type";
+    field @Deprecated public static final int TYPE_CUSTOM = 0; // 0x0
+    field @Deprecated public static final int TYPE_HOME = 1; // 0x1
+    field @Deprecated public static final int TYPE_OTHER = 3; // 0x3
+    field @Deprecated public static final int TYPE_WORK = 2; // 0x2
+  }
+
+  @Deprecated public static final class Contacts.Extensions implements android.provider.BaseColumns android.provider.Contacts.ExtensionsColumns {
+    field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_extensions";
+    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact_extensions";
+    field @Deprecated public static final android.net.Uri CONTENT_URI;
+    field @Deprecated public static final String DEFAULT_SORT_ORDER = "person, name ASC";
+    field @Deprecated public static final String PERSON_ID = "person";
+  }
+
+  @Deprecated public static interface Contacts.ExtensionsColumns {
+    field @Deprecated public static final String NAME = "name";
+    field @Deprecated public static final String VALUE = "value";
+  }
+
+  @Deprecated public static final class Contacts.GroupMembership implements android.provider.BaseColumns android.provider.Contacts.GroupsColumns {
+    field @Deprecated public static final String CONTENT_DIRECTORY = "groupmembership";
+    field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contactsgroupmembership";
+    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contactsgroupmembership";
+    field @Deprecated public static final android.net.Uri CONTENT_URI;
+    field @Deprecated public static final String DEFAULT_SORT_ORDER = "group_id ASC";
+    field @Deprecated public static final String GROUP_ID = "group_id";
+    field @Deprecated public static final String GROUP_SYNC_ACCOUNT = "group_sync_account";
+    field @Deprecated public static final String GROUP_SYNC_ACCOUNT_TYPE = "group_sync_account_type";
+    field @Deprecated public static final String GROUP_SYNC_ID = "group_sync_id";
+    field @Deprecated public static final String PERSON_ID = "person";
+    field @Deprecated public static final android.net.Uri RAW_CONTENT_URI;
+  }
+
+  @Deprecated public static final class Contacts.Groups implements android.provider.BaseColumns android.provider.Contacts.GroupsColumns {
+    field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contactsgroup";
+    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contactsgroup";
+    field @Deprecated public static final android.net.Uri CONTENT_URI;
+    field @Deprecated public static final String DEFAULT_SORT_ORDER = "name ASC";
+    field @Deprecated public static final android.net.Uri DELETED_CONTENT_URI;
+    field @Deprecated public static final String GROUP_ANDROID_STARRED = "Starred in Android";
+    field @Deprecated public static final String GROUP_MY_CONTACTS = "Contacts";
+  }
+
+  @Deprecated public static interface Contacts.GroupsColumns {
+    field @Deprecated public static final String NAME = "name";
+    field @Deprecated public static final String NOTES = "notes";
+    field @Deprecated public static final String SHOULD_SYNC = "should_sync";
+    field @Deprecated public static final String SYSTEM_ID = "system_id";
+  }
+
+  @Deprecated public static final class Contacts.Intents {
+    ctor @Deprecated public Contacts.Intents();
+    field @Deprecated public static final String ATTACH_IMAGE = "com.android.contacts.action.ATTACH_IMAGE";
+    field @Deprecated public static final String EXTRA_CREATE_DESCRIPTION = "com.android.contacts.action.CREATE_DESCRIPTION";
+    field @Deprecated public static final String EXTRA_FORCE_CREATE = "com.android.contacts.action.FORCE_CREATE";
+    field @Deprecated public static final String SEARCH_SUGGESTION_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CLICKED";
+    field @Deprecated public static final String SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED";
+    field @Deprecated public static final String SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED";
+    field @Deprecated public static final String SHOW_OR_CREATE_CONTACT = "com.android.contacts.action.SHOW_OR_CREATE_CONTACT";
+  }
+
+  @Deprecated public static final class Contacts.Intents.Insert {
+    ctor @Deprecated public Contacts.Intents.Insert();
+    field @Deprecated public static final String ACTION = "android.intent.action.INSERT";
+    field @Deprecated public static final String COMPANY = "company";
+    field @Deprecated public static final String EMAIL = "email";
+    field @Deprecated public static final String EMAIL_ISPRIMARY = "email_isprimary";
+    field @Deprecated public static final String EMAIL_TYPE = "email_type";
+    field @Deprecated public static final String FULL_MODE = "full_mode";
+    field @Deprecated public static final String IM_HANDLE = "im_handle";
+    field @Deprecated public static final String IM_ISPRIMARY = "im_isprimary";
+    field @Deprecated public static final String IM_PROTOCOL = "im_protocol";
+    field @Deprecated public static final String JOB_TITLE = "job_title";
+    field @Deprecated public static final String NAME = "name";
+    field @Deprecated public static final String NOTES = "notes";
+    field @Deprecated public static final String PHONE = "phone";
+    field @Deprecated public static final String PHONETIC_NAME = "phonetic_name";
+    field @Deprecated public static final String PHONE_ISPRIMARY = "phone_isprimary";
+    field @Deprecated public static final String PHONE_TYPE = "phone_type";
+    field @Deprecated public static final String POSTAL = "postal";
+    field @Deprecated public static final String POSTAL_ISPRIMARY = "postal_isprimary";
+    field @Deprecated public static final String POSTAL_TYPE = "postal_type";
+    field @Deprecated public static final String SECONDARY_EMAIL = "secondary_email";
+    field @Deprecated public static final String SECONDARY_EMAIL_TYPE = "secondary_email_type";
+    field @Deprecated public static final String SECONDARY_PHONE = "secondary_phone";
+    field @Deprecated public static final String SECONDARY_PHONE_TYPE = "secondary_phone_type";
+    field @Deprecated public static final String TERTIARY_EMAIL = "tertiary_email";
+    field @Deprecated public static final String TERTIARY_EMAIL_TYPE = "tertiary_email_type";
+    field @Deprecated public static final String TERTIARY_PHONE = "tertiary_phone";
+    field @Deprecated public static final String TERTIARY_PHONE_TYPE = "tertiary_phone_type";
+  }
+
+  @Deprecated public static final class Contacts.Intents.UI {
+    ctor @Deprecated public Contacts.Intents.UI();
+    field @Deprecated public static final String FILTER_CONTACTS_ACTION = "com.android.contacts.action.FILTER_CONTACTS";
+    field @Deprecated public static final String FILTER_TEXT_EXTRA_KEY = "com.android.contacts.extra.FILTER_TEXT";
+    field @Deprecated public static final String GROUP_NAME_EXTRA_KEY = "com.android.contacts.extra.GROUP";
+    field @Deprecated public static final String LIST_ALL_CONTACTS_ACTION = "com.android.contacts.action.LIST_ALL_CONTACTS";
+    field @Deprecated public static final String LIST_CONTACTS_WITH_PHONES_ACTION = "com.android.contacts.action.LIST_CONTACTS_WITH_PHONES";
+    field @Deprecated public static final String LIST_DEFAULT = "com.android.contacts.action.LIST_DEFAULT";
+    field @Deprecated public static final String LIST_FREQUENT_ACTION = "com.android.contacts.action.LIST_FREQUENT";
+    field @Deprecated public static final String LIST_GROUP_ACTION = "com.android.contacts.action.LIST_GROUP";
+    field @Deprecated public static final String LIST_STARRED_ACTION = "com.android.contacts.action.LIST_STARRED";
+    field @Deprecated public static final String LIST_STREQUENT_ACTION = "com.android.contacts.action.LIST_STREQUENT";
+    field @Deprecated public static final String TITLE_EXTRA_KEY = "com.android.contacts.extra.TITLE_EXTRA";
+  }
+
+  @Deprecated public static interface Contacts.OrganizationColumns {
+    field @Deprecated public static final String COMPANY = "company";
+    field @Deprecated public static final String ISPRIMARY = "isprimary";
+    field @Deprecated public static final String LABEL = "label";
+    field @Deprecated public static final String PERSON_ID = "person";
+    field @Deprecated public static final String TITLE = "title";
+    field @Deprecated public static final String TYPE = "type";
+    field @Deprecated public static final int TYPE_CUSTOM = 0; // 0x0
+    field @Deprecated public static final int TYPE_OTHER = 2; // 0x2
+    field @Deprecated public static final int TYPE_WORK = 1; // 0x1
+  }
+
+  @Deprecated public static final class Contacts.Organizations implements android.provider.BaseColumns android.provider.Contacts.OrganizationColumns {
+    method @Deprecated public static CharSequence getDisplayLabel(android.content.Context, int, CharSequence);
+    field @Deprecated public static final String CONTENT_DIRECTORY = "organizations";
+    field @Deprecated public static final android.net.Uri CONTENT_URI;
+    field @Deprecated public static final String DEFAULT_SORT_ORDER = "company, title, isprimary ASC";
+  }
+
+  @Deprecated public static final class Contacts.People implements android.provider.BaseColumns android.provider.Contacts.PeopleColumns android.provider.Contacts.PhonesColumns android.provider.Contacts.PresenceColumns {
+    method @Deprecated public static android.net.Uri addToGroup(android.content.ContentResolver, long, String);
+    method @Deprecated public static android.net.Uri addToGroup(android.content.ContentResolver, long, long);
+    method @Deprecated public static android.net.Uri addToMyContactsGroup(android.content.ContentResolver, long);
+    method @Deprecated public static android.net.Uri createPersonInMyContactsGroup(android.content.ContentResolver, android.content.ContentValues);
+    method @Deprecated public static android.graphics.Bitmap loadContactPhoto(android.content.Context, android.net.Uri, int, android.graphics.BitmapFactory.Options);
+    method @Deprecated public static void markAsContacted(android.content.ContentResolver, long);
+    method @Deprecated public static java.io.InputStream openContactPhotoInputStream(android.content.ContentResolver, android.net.Uri);
+    method @Deprecated public static android.database.Cursor queryGroups(android.content.ContentResolver, long);
+    method @Deprecated public static void setPhotoData(android.content.ContentResolver, android.net.Uri, byte[]);
+    field @Deprecated public static final android.net.Uri CONTENT_FILTER_URI;
+    field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/person";
+    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/person";
+    field @Deprecated public static final android.net.Uri CONTENT_URI;
+    field @Deprecated public static final String DEFAULT_SORT_ORDER = "name ASC";
+    field @Deprecated public static final android.net.Uri DELETED_CONTENT_URI;
+    field @Deprecated public static final String PRIMARY_EMAIL_ID = "primary_email";
+    field @Deprecated public static final String PRIMARY_ORGANIZATION_ID = "primary_organization";
+    field @Deprecated public static final String PRIMARY_PHONE_ID = "primary_phone";
+  }
+
+  @Deprecated public static final class Contacts.People.ContactMethods implements android.provider.BaseColumns android.provider.Contacts.ContactMethodsColumns android.provider.Contacts.PeopleColumns {
+    field @Deprecated public static final String CONTENT_DIRECTORY = "contact_methods";
+    field @Deprecated public static final String DEFAULT_SORT_ORDER = "data ASC";
+  }
+
+  @Deprecated public static class Contacts.People.Extensions implements android.provider.BaseColumns android.provider.Contacts.ExtensionsColumns {
+    field @Deprecated public static final String CONTENT_DIRECTORY = "extensions";
+    field @Deprecated public static final String DEFAULT_SORT_ORDER = "name ASC";
+    field @Deprecated public static final String PERSON_ID = "person";
+  }
+
+  @Deprecated public static final class Contacts.People.Phones implements android.provider.BaseColumns android.provider.Contacts.PeopleColumns android.provider.Contacts.PhonesColumns {
+    field @Deprecated public static final String CONTENT_DIRECTORY = "phones";
+    field @Deprecated public static final String DEFAULT_SORT_ORDER = "number ASC";
+  }
+
+  @Deprecated public static interface Contacts.PeopleColumns {
+    field @Deprecated public static final String CUSTOM_RINGTONE = "custom_ringtone";
+    field @Deprecated public static final String DISPLAY_NAME = "display_name";
+    field @Deprecated public static final String LAST_TIME_CONTACTED = "last_time_contacted";
+    field @Deprecated public static final String NAME = "name";
+    field @Deprecated public static final String NOTES = "notes";
+    field @Deprecated public static final String PHONETIC_NAME = "phonetic_name";
+    field @Deprecated public static final String PHOTO_VERSION = "photo_version";
+    field @Deprecated public static final String SEND_TO_VOICEMAIL = "send_to_voicemail";
+    field @Deprecated public static final String STARRED = "starred";
+    field @Deprecated public static final String TIMES_CONTACTED = "times_contacted";
+  }
+
+  @Deprecated public static final class Contacts.Phones implements android.provider.BaseColumns android.provider.Contacts.PeopleColumns android.provider.Contacts.PhonesColumns {
+    method @Deprecated public static CharSequence getDisplayLabel(android.content.Context, int, CharSequence, CharSequence[]);
+    method @Deprecated public static CharSequence getDisplayLabel(android.content.Context, int, CharSequence);
+    field @Deprecated public static final android.net.Uri CONTENT_FILTER_URL;
+    field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/phone";
+    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/phone";
+    field @Deprecated public static final android.net.Uri CONTENT_URI;
+    field @Deprecated public static final String DEFAULT_SORT_ORDER = "name ASC";
+    field @Deprecated public static final String PERSON_ID = "person";
+  }
+
+  @Deprecated public static interface Contacts.PhonesColumns {
+    field @Deprecated public static final String ISPRIMARY = "isprimary";
+    field @Deprecated public static final String LABEL = "label";
+    field @Deprecated public static final String NUMBER = "number";
+    field @Deprecated public static final String NUMBER_KEY = "number_key";
+    field @Deprecated public static final String TYPE = "type";
+    field @Deprecated public static final int TYPE_CUSTOM = 0; // 0x0
+    field @Deprecated public static final int TYPE_FAX_HOME = 5; // 0x5
+    field @Deprecated public static final int TYPE_FAX_WORK = 4; // 0x4
+    field @Deprecated public static final int TYPE_HOME = 1; // 0x1
+    field @Deprecated public static final int TYPE_MOBILE = 2; // 0x2
+    field @Deprecated public static final int TYPE_OTHER = 7; // 0x7
+    field @Deprecated public static final int TYPE_PAGER = 6; // 0x6
+    field @Deprecated public static final int TYPE_WORK = 3; // 0x3
+  }
+
+  @Deprecated public static final class Contacts.Photos implements android.provider.BaseColumns android.provider.Contacts.PhotosColumns {
+    field @Deprecated public static final String CONTENT_DIRECTORY = "photo";
+    field @Deprecated public static final android.net.Uri CONTENT_URI;
+    field @Deprecated public static final String DEFAULT_SORT_ORDER = "person ASC";
+  }
+
+  @Deprecated public static interface Contacts.PhotosColumns {
+    field @Deprecated public static final String DATA = "data";
+    field @Deprecated public static final String DOWNLOAD_REQUIRED = "download_required";
+    field @Deprecated public static final String EXISTS_ON_SERVER = "exists_on_server";
+    field @Deprecated public static final String LOCAL_VERSION = "local_version";
+    field @Deprecated public static final String PERSON_ID = "person";
+    field @Deprecated public static final String SYNC_ERROR = "sync_error";
+  }
+
+  @Deprecated public static interface Contacts.PresenceColumns {
+    field @Deprecated public static final int AVAILABLE = 5; // 0x5
+    field @Deprecated public static final int AWAY = 2; // 0x2
+    field @Deprecated public static final int DO_NOT_DISTURB = 4; // 0x4
+    field @Deprecated public static final int IDLE = 3; // 0x3
+    field @Deprecated public static final String IM_ACCOUNT = "im_account";
+    field @Deprecated public static final String IM_HANDLE = "im_handle";
+    field @Deprecated public static final String IM_PROTOCOL = "im_protocol";
+    field @Deprecated public static final int INVISIBLE = 1; // 0x1
+    field @Deprecated public static final int OFFLINE = 0; // 0x0
+    field @Deprecated public static final String PRESENCE_CUSTOM_STATUS = "status";
+    field @Deprecated public static final String PRESENCE_STATUS = "mode";
+    field @Deprecated public static final String PRIORITY = "priority";
+  }
+
+  @Deprecated public static final class Contacts.Settings implements android.provider.BaseColumns android.provider.Contacts.SettingsColumns {
+    method @Deprecated public static String getSetting(android.content.ContentResolver, String, String);
+    method @Deprecated public static void setSetting(android.content.ContentResolver, String, String, String);
+    field @Deprecated public static final String CONTENT_DIRECTORY = "settings";
+    field @Deprecated public static final android.net.Uri CONTENT_URI;
+    field @Deprecated public static final String DEFAULT_SORT_ORDER = "key ASC";
+    field @Deprecated public static final String SYNC_EVERYTHING = "syncEverything";
+  }
+
+  @Deprecated public static interface Contacts.SettingsColumns {
+    field @Deprecated public static final String KEY = "key";
+    field @Deprecated public static final String VALUE = "value";
+    field @Deprecated public static final String _SYNC_ACCOUNT = "_sync_account";
+    field @Deprecated public static final String _SYNC_ACCOUNT_TYPE = "_sync_account_type";
+  }
+
+  public final class ContactsContract {
+    ctor public ContactsContract();
+    method public static boolean isProfileId(long);
+    field public static final String AUTHORITY = "com.android.contacts";
+    field public static final android.net.Uri AUTHORITY_URI;
+    field public static final String CALLER_IS_SYNCADAPTER = "caller_is_syncadapter";
+    field public static final String DEFERRED_SNIPPETING = "deferred_snippeting";
+    field public static final String DEFERRED_SNIPPETING_QUERY = "deferred_snippeting_query";
+    field public static final String DIRECTORY_PARAM_KEY = "directory";
+    field public static final String LIMIT_PARAM_KEY = "limit";
+    field public static final String PRIMARY_ACCOUNT_NAME = "name_for_primary_account";
+    field public static final String PRIMARY_ACCOUNT_TYPE = "type_for_primary_account";
+    field public static final String REMOVE_DUPLICATE_ENTRIES = "remove_duplicate_entries";
+    field public static final String STREQUENT_PHONE_ONLY = "strequent_phone_only";
+  }
+
+  public static final class ContactsContract.AggregationExceptions implements android.provider.BaseColumns {
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/aggregation_exception";
+    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/aggregation_exception";
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String RAW_CONTACT_ID1 = "raw_contact_id1";
+    field public static final String RAW_CONTACT_ID2 = "raw_contact_id2";
+    field public static final String TYPE = "type";
+    field public static final int TYPE_AUTOMATIC = 0; // 0x0
+    field public static final int TYPE_KEEP_SEPARATE = 2; // 0x2
+    field public static final int TYPE_KEEP_TOGETHER = 1; // 0x1
+  }
+
+  protected static interface ContactsContract.BaseSyncColumns {
+    field public static final String SYNC1 = "sync1";
+    field public static final String SYNC2 = "sync2";
+    field public static final String SYNC3 = "sync3";
+    field public static final String SYNC4 = "sync4";
+  }
+
+  public static final class ContactsContract.CommonDataKinds {
+  }
+
+  public static interface ContactsContract.CommonDataKinds.BaseTypes {
+    field public static final int TYPE_CUSTOM = 0; // 0x0
+  }
+
+  public static final class ContactsContract.CommonDataKinds.Callable implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
+    ctor public ContactsContract.CommonDataKinds.Callable();
+    field public static final android.net.Uri CONTENT_FILTER_URI;
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final android.net.Uri ENTERPRISE_CONTENT_FILTER_URI;
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+  }
+
+  protected static interface ContactsContract.CommonDataKinds.CommonColumns extends android.provider.ContactsContract.CommonDataKinds.BaseTypes {
+    field public static final String DATA = "data1";
+    field public static final String LABEL = "data3";
+    field public static final String TYPE = "data2";
+  }
+
+  public static final class ContactsContract.CommonDataKinds.Contactables implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
+    ctor public ContactsContract.CommonDataKinds.Contactables();
+    field public static final android.net.Uri CONTENT_FILTER_URI;
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+    field public static final String VISIBLE_CONTACTS_ONLY = "visible_contacts_only";
+  }
+
+  public static final class ContactsContract.CommonDataKinds.Email implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
+    method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
+    method public static int getTypeLabelResource(int);
+    field public static final String ADDRESS = "data1";
+    field public static final android.net.Uri CONTENT_FILTER_URI;
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/email_v2";
+    field public static final android.net.Uri CONTENT_LOOKUP_URI;
+    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/email_v2";
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String DISPLAY_NAME = "data4";
+    field public static final android.net.Uri ENTERPRISE_CONTENT_FILTER_URI;
+    field public static final android.net.Uri ENTERPRISE_CONTENT_LOOKUP_URI;
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+    field public static final int TYPE_HOME = 1; // 0x1
+    field public static final int TYPE_MOBILE = 4; // 0x4
+    field public static final int TYPE_OTHER = 3; // 0x3
+    field public static final int TYPE_WORK = 2; // 0x2
+  }
+
+  public static final class ContactsContract.CommonDataKinds.Event implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
+    method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
+    method public static int getTypeResource(Integer);
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_event";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+    field public static final String START_DATE = "data1";
+    field public static final int TYPE_ANNIVERSARY = 1; // 0x1
+    field public static final int TYPE_BIRTHDAY = 3; // 0x3
+    field public static final int TYPE_OTHER = 2; // 0x2
+  }
+
+  public static final class ContactsContract.CommonDataKinds.GroupMembership implements android.provider.ContactsContract.DataColumnsWithJoins {
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/group_membership";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+    field public static final String GROUP_ROW_ID = "data1";
+    field public static final String GROUP_SOURCE_ID = "group_sourceid";
+  }
+
+  public static final class ContactsContract.CommonDataKinds.Identity implements android.provider.ContactsContract.DataColumnsWithJoins {
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/identity";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+    field public static final String IDENTITY = "data1";
+    field public static final String NAMESPACE = "data2";
+  }
+
+  public static final class ContactsContract.CommonDataKinds.Im implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
+    method public static CharSequence getProtocolLabel(android.content.res.Resources, int, CharSequence);
+    method public static int getProtocolLabelResource(int);
+    method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
+    method public static int getTypeLabelResource(int);
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/im";
+    field public static final String CUSTOM_PROTOCOL = "data6";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+    field public static final String PROTOCOL = "data5";
+    field public static final int PROTOCOL_AIM = 0; // 0x0
+    field public static final int PROTOCOL_CUSTOM = -1; // 0xffffffff
+    field public static final int PROTOCOL_GOOGLE_TALK = 5; // 0x5
+    field public static final int PROTOCOL_ICQ = 6; // 0x6
+    field public static final int PROTOCOL_JABBER = 7; // 0x7
+    field public static final int PROTOCOL_MSN = 1; // 0x1
+    field public static final int PROTOCOL_NETMEETING = 8; // 0x8
+    field public static final int PROTOCOL_QQ = 4; // 0x4
+    field public static final int PROTOCOL_SKYPE = 3; // 0x3
+    field public static final int PROTOCOL_YAHOO = 2; // 0x2
+    field public static final int TYPE_HOME = 1; // 0x1
+    field public static final int TYPE_OTHER = 3; // 0x3
+    field public static final int TYPE_WORK = 2; // 0x2
+  }
+
+  public static final class ContactsContract.CommonDataKinds.Nickname implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/nickname";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+    field public static final String NAME = "data1";
+    field public static final int TYPE_DEFAULT = 1; // 0x1
+    field public static final int TYPE_INITIALS = 5; // 0x5
+    field public static final int TYPE_MAIDEN_NAME = 3; // 0x3
+    field @Deprecated public static final int TYPE_MAINDEN_NAME = 3; // 0x3
+    field public static final int TYPE_OTHER_NAME = 2; // 0x2
+    field public static final int TYPE_SHORT_NAME = 4; // 0x4
+  }
+
+  public static final class ContactsContract.CommonDataKinds.Note implements android.provider.ContactsContract.DataColumnsWithJoins {
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/note";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+    field public static final String NOTE = "data1";
+  }
+
+  public static final class ContactsContract.CommonDataKinds.Organization implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
+    method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
+    method public static int getTypeLabelResource(int);
+    field public static final String COMPANY = "data1";
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/organization";
+    field public static final String DEPARTMENT = "data5";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+    field public static final String JOB_DESCRIPTION = "data6";
+    field public static final String OFFICE_LOCATION = "data9";
+    field public static final String PHONETIC_NAME = "data8";
+    field public static final String PHONETIC_NAME_STYLE = "data10";
+    field public static final String SYMBOL = "data7";
+    field public static final String TITLE = "data4";
+    field public static final int TYPE_OTHER = 2; // 0x2
+    field public static final int TYPE_WORK = 1; // 0x1
+  }
+
+  public static final class ContactsContract.CommonDataKinds.Phone implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
+    method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
+    method public static int getTypeLabelResource(int);
+    field public static final android.net.Uri CONTENT_FILTER_URI;
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/phone_v2";
+    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/phone_v2";
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final android.net.Uri ENTERPRISE_CONTENT_FILTER_URI;
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+    field public static final String NORMALIZED_NUMBER = "data4";
+    field public static final String NUMBER = "data1";
+    field public static final String SEARCH_DISPLAY_NAME_KEY = "search_display_name";
+    field public static final String SEARCH_PHONE_NUMBER_KEY = "search_phone_number";
+    field public static final int TYPE_ASSISTANT = 19; // 0x13
+    field public static final int TYPE_CALLBACK = 8; // 0x8
+    field public static final int TYPE_CAR = 9; // 0x9
+    field public static final int TYPE_COMPANY_MAIN = 10; // 0xa
+    field public static final int TYPE_FAX_HOME = 5; // 0x5
+    field public static final int TYPE_FAX_WORK = 4; // 0x4
+    field public static final int TYPE_HOME = 1; // 0x1
+    field public static final int TYPE_ISDN = 11; // 0xb
+    field public static final int TYPE_MAIN = 12; // 0xc
+    field public static final int TYPE_MMS = 20; // 0x14
+    field public static final int TYPE_MOBILE = 2; // 0x2
+    field public static final int TYPE_OTHER = 7; // 0x7
+    field public static final int TYPE_OTHER_FAX = 13; // 0xd
+    field public static final int TYPE_PAGER = 6; // 0x6
+    field public static final int TYPE_RADIO = 14; // 0xe
+    field public static final int TYPE_TELEX = 15; // 0xf
+    field public static final int TYPE_TTY_TDD = 16; // 0x10
+    field public static final int TYPE_WORK = 3; // 0x3
+    field public static final int TYPE_WORK_MOBILE = 17; // 0x11
+    field public static final int TYPE_WORK_PAGER = 18; // 0x12
+  }
+
+  public static final class ContactsContract.CommonDataKinds.Photo implements android.provider.ContactsContract.DataColumnsWithJoins {
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/photo";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+    field public static final String PHOTO = "data15";
+    field public static final String PHOTO_FILE_ID = "data14";
+  }
+
+  public static final class ContactsContract.CommonDataKinds.Relation implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
+    method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
+    method public static int getTypeLabelResource(int);
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/relation";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+    field public static final String NAME = "data1";
+    field public static final int TYPE_ASSISTANT = 1; // 0x1
+    field public static final int TYPE_BROTHER = 2; // 0x2
+    field public static final int TYPE_CHILD = 3; // 0x3
+    field public static final int TYPE_DOMESTIC_PARTNER = 4; // 0x4
+    field public static final int TYPE_FATHER = 5; // 0x5
+    field public static final int TYPE_FRIEND = 6; // 0x6
+    field public static final int TYPE_MANAGER = 7; // 0x7
+    field public static final int TYPE_MOTHER = 8; // 0x8
+    field public static final int TYPE_PARENT = 9; // 0x9
+    field public static final int TYPE_PARTNER = 10; // 0xa
+    field public static final int TYPE_REFERRED_BY = 11; // 0xb
+    field public static final int TYPE_RELATIVE = 12; // 0xc
+    field public static final int TYPE_SISTER = 13; // 0xd
+    field public static final int TYPE_SPOUSE = 14; // 0xe
+  }
+
+  public static final class ContactsContract.CommonDataKinds.SipAddress implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
+    method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
+    method public static int getTypeLabelResource(int);
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/sip_address";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+    field public static final String SIP_ADDRESS = "data1";
+    field public static final int TYPE_HOME = 1; // 0x1
+    field public static final int TYPE_OTHER = 3; // 0x3
+    field public static final int TYPE_WORK = 2; // 0x2
+  }
+
+  public static final class ContactsContract.CommonDataKinds.StructuredName implements android.provider.ContactsContract.DataColumnsWithJoins {
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/name";
+    field public static final String DISPLAY_NAME = "data1";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+    field public static final String FAMILY_NAME = "data3";
+    field public static final String FULL_NAME_STYLE = "data10";
+    field public static final String GIVEN_NAME = "data2";
+    field public static final String MIDDLE_NAME = "data5";
+    field public static final String PHONETIC_FAMILY_NAME = "data9";
+    field public static final String PHONETIC_GIVEN_NAME = "data7";
+    field public static final String PHONETIC_MIDDLE_NAME = "data8";
+    field public static final String PHONETIC_NAME_STYLE = "data11";
+    field public static final String PREFIX = "data4";
+    field public static final String SUFFIX = "data6";
+  }
+
+  public static final class ContactsContract.CommonDataKinds.StructuredPostal implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
+    method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
+    method public static int getTypeLabelResource(int);
+    field public static final String CITY = "data7";
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/postal-address_v2";
+    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/postal-address_v2";
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String COUNTRY = "data10";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+    field public static final String FORMATTED_ADDRESS = "data1";
+    field public static final String NEIGHBORHOOD = "data6";
+    field public static final String POBOX = "data5";
+    field public static final String POSTCODE = "data9";
+    field public static final String REGION = "data8";
+    field public static final String STREET = "data4";
+    field public static final int TYPE_HOME = 1; // 0x1
+    field public static final int TYPE_OTHER = 3; // 0x3
+    field public static final int TYPE_WORK = 2; // 0x2
+  }
+
+  public static final class ContactsContract.CommonDataKinds.Website implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/website";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+    field public static final int TYPE_BLOG = 2; // 0x2
+    field public static final int TYPE_FTP = 6; // 0x6
+    field public static final int TYPE_HOME = 4; // 0x4
+    field public static final int TYPE_HOMEPAGE = 1; // 0x1
+    field public static final int TYPE_OTHER = 7; // 0x7
+    field public static final int TYPE_PROFILE = 3; // 0x3
+    field public static final int TYPE_WORK = 5; // 0x5
+    field public static final String URL = "data1";
+  }
+
+  protected static interface ContactsContract.ContactNameColumns {
+    field public static final String DISPLAY_NAME_ALTERNATIVE = "display_name_alt";
+    field public static final String DISPLAY_NAME_PRIMARY = "display_name";
+    field public static final String DISPLAY_NAME_SOURCE = "display_name_source";
+    field public static final String PHONETIC_NAME = "phonetic_name";
+    field public static final String PHONETIC_NAME_STYLE = "phonetic_name_style";
+    field public static final String SORT_KEY_ALTERNATIVE = "sort_key_alt";
+    field public static final String SORT_KEY_PRIMARY = "sort_key";
+  }
+
+  protected static interface ContactsContract.ContactOptionsColumns {
+    field public static final String CUSTOM_RINGTONE = "custom_ringtone";
+    field @Deprecated public static final String LAST_TIME_CONTACTED = "last_time_contacted";
+    field public static final String PINNED = "pinned";
+    field public static final String SEND_TO_VOICEMAIL = "send_to_voicemail";
+    field public static final String STARRED = "starred";
+    field @Deprecated public static final String TIMES_CONTACTED = "times_contacted";
+  }
+
+  protected static interface ContactsContract.ContactStatusColumns {
+    field public static final String CONTACT_CHAT_CAPABILITY = "contact_chat_capability";
+    field public static final String CONTACT_PRESENCE = "contact_presence";
+    field public static final String CONTACT_STATUS = "contact_status";
+    field public static final String CONTACT_STATUS_ICON = "contact_status_icon";
+    field public static final String CONTACT_STATUS_LABEL = "contact_status_label";
+    field public static final String CONTACT_STATUS_RES_PACKAGE = "contact_status_res_package";
+    field public static final String CONTACT_STATUS_TIMESTAMP = "contact_status_ts";
+  }
+
+  public static class ContactsContract.Contacts implements android.provider.BaseColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.ContactsColumns {
+    method public static android.net.Uri getLookupUri(android.content.ContentResolver, android.net.Uri);
+    method public static android.net.Uri getLookupUri(long, String);
+    method public static boolean isEnterpriseContactId(long);
+    method public static android.net.Uri lookupContact(android.content.ContentResolver, android.net.Uri);
+    method @Deprecated public static void markAsContacted(android.content.ContentResolver, long);
+    method public static java.io.InputStream openContactPhotoInputStream(android.content.ContentResolver, android.net.Uri, boolean);
+    method public static java.io.InputStream openContactPhotoInputStream(android.content.ContentResolver, android.net.Uri);
+    field public static final android.net.Uri CONTENT_FILTER_URI;
+    field @Deprecated public static final android.net.Uri CONTENT_FREQUENT_URI;
+    field public static final android.net.Uri CONTENT_GROUP_URI;
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact";
+    field public static final android.net.Uri CONTENT_LOOKUP_URI;
+    field public static final android.net.Uri CONTENT_MULTI_VCARD_URI;
+    field public static final android.net.Uri CONTENT_STREQUENT_FILTER_URI;
+    field public static final android.net.Uri CONTENT_STREQUENT_URI;
+    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact";
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String CONTENT_VCARD_TYPE = "text/x-vcard";
+    field public static final android.net.Uri CONTENT_VCARD_URI;
+    field public static final android.net.Uri ENTERPRISE_CONTENT_FILTER_URI;
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+    field public static final String QUERY_PARAMETER_VCARD_NO_PHOTO = "no_photo";
+  }
+
+  public static final class ContactsContract.Contacts.AggregationSuggestions implements android.provider.BaseColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.ContactsColumns {
+    field public static final String CONTENT_DIRECTORY = "suggestions";
+  }
+
+  public static final class ContactsContract.Contacts.AggregationSuggestions.Builder {
+    ctor public ContactsContract.Contacts.AggregationSuggestions.Builder();
+    method public android.provider.ContactsContract.Contacts.AggregationSuggestions.Builder addNameParameter(String);
+    method public android.net.Uri build();
+    method public android.provider.ContactsContract.Contacts.AggregationSuggestions.Builder setContactId(long);
+    method public android.provider.ContactsContract.Contacts.AggregationSuggestions.Builder setLimit(int);
+  }
+
+  public static final class ContactsContract.Contacts.Data implements android.provider.BaseColumns android.provider.ContactsContract.DataColumns {
+    field public static final String CONTENT_DIRECTORY = "data";
+  }
+
+  public static final class ContactsContract.Contacts.Entity implements android.provider.BaseColumns android.provider.ContactsContract.BaseSyncColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.ContactsColumns android.provider.ContactsContract.DataColumns android.provider.ContactsContract.DataUsageStatColumns android.provider.ContactsContract.RawContactsColumns android.provider.ContactsContract.StatusColumns android.provider.ContactsContract.SyncColumns {
+    field public static final String CONTENT_DIRECTORY = "entities";
+    field public static final String DATA_ID = "data_id";
+    field public static final String RAW_CONTACT_ID = "raw_contact_id";
+  }
+
+  public static final class ContactsContract.Contacts.Photo implements android.provider.BaseColumns android.provider.ContactsContract.DataColumnsWithJoins {
+    field public static final String CONTENT_DIRECTORY = "photo";
+    field public static final String DISPLAY_PHOTO = "display_photo";
+    field public static final String PHOTO = "data15";
+    field public static final String PHOTO_FILE_ID = "data14";
+  }
+
+  protected static interface ContactsContract.ContactsColumns {
+    field public static final String CONTACT_LAST_UPDATED_TIMESTAMP = "contact_last_updated_timestamp";
+    field public static final String DISPLAY_NAME = "display_name";
+    field public static final String HAS_PHONE_NUMBER = "has_phone_number";
+    field public static final String IN_DEFAULT_DIRECTORY = "in_default_directory";
+    field public static final String IN_VISIBLE_GROUP = "in_visible_group";
+    field public static final String IS_USER_PROFILE = "is_user_profile";
+    field public static final String LOOKUP_KEY = "lookup";
+    field public static final String NAME_RAW_CONTACT_ID = "name_raw_contact_id";
+    field public static final String PHOTO_FILE_ID = "photo_file_id";
+    field public static final String PHOTO_ID = "photo_id";
+    field public static final String PHOTO_THUMBNAIL_URI = "photo_thumb_uri";
+    field public static final String PHOTO_URI = "photo_uri";
+  }
+
+  public static final class ContactsContract.Data implements android.provider.ContactsContract.DataColumnsWithJoins {
+    method public static android.net.Uri getContactLookupUri(android.content.ContentResolver, android.net.Uri);
+    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/data";
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
+    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
+    field public static final String VISIBLE_CONTACTS_ONLY = "visible_contacts_only";
+  }
+
+  protected static interface ContactsContract.DataColumns {
+    field public static final String CARRIER_PRESENCE = "carrier_presence";
+    field public static final int CARRIER_PRESENCE_VT_CAPABLE = 1; // 0x1
+    field public static final String DATA1 = "data1";
+    field public static final String DATA10 = "data10";
+    field public static final String DATA11 = "data11";
+    field public static final String DATA12 = "data12";
+    field public static final String DATA13 = "data13";
+    field public static final String DATA14 = "data14";
+    field public static final String DATA15 = "data15";
+    field public static final String DATA2 = "data2";
+    field public static final String DATA3 = "data3";
+    field public static final String DATA4 = "data4";
+    field public static final String DATA5 = "data5";
+    field public static final String DATA6 = "data6";
+    field public static final String DATA7 = "data7";
+    field public static final String DATA8 = "data8";
+    field public static final String DATA9 = "data9";
+    field public static final String DATA_VERSION = "data_version";
+    field public static final String IS_PRIMARY = "is_primary";
+    field public static final String IS_READ_ONLY = "is_read_only";
+    field public static final String IS_SUPER_PRIMARY = "is_super_primary";
+    field public static final String MIMETYPE = "mimetype";
+    field public static final String PREFERRED_PHONE_ACCOUNT_COMPONENT_NAME = "preferred_phone_account_component_name";
+    field public static final String PREFERRED_PHONE_ACCOUNT_ID = "preferred_phone_account_id";
+    field public static final String RAW_CONTACT_ID = "raw_contact_id";
+    field public static final String RES_PACKAGE = "res_package";
+    field public static final String SYNC1 = "data_sync1";
+    field public static final String SYNC2 = "data_sync2";
+    field public static final String SYNC3 = "data_sync3";
+    field public static final String SYNC4 = "data_sync4";
+  }
+
+  protected static interface ContactsContract.DataColumnsWithJoins extends android.provider.BaseColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.ContactsColumns android.provider.ContactsContract.DataColumns android.provider.ContactsContract.DataUsageStatColumns android.provider.ContactsContract.RawContactsColumns android.provider.ContactsContract.StatusColumns {
+  }
+
+  @Deprecated public static final class ContactsContract.DataUsageFeedback {
+    ctor @Deprecated public ContactsContract.DataUsageFeedback();
+    field @Deprecated public static final android.net.Uri DELETE_USAGE_URI;
+    field @Deprecated public static final android.net.Uri FEEDBACK_URI;
+    field @Deprecated public static final String USAGE_TYPE = "type";
+    field @Deprecated public static final String USAGE_TYPE_CALL = "call";
+    field @Deprecated public static final String USAGE_TYPE_LONG_TEXT = "long_text";
+    field @Deprecated public static final String USAGE_TYPE_SHORT_TEXT = "short_text";
+  }
+
+  protected static interface ContactsContract.DataUsageStatColumns {
+    field @Deprecated public static final String LAST_TIME_USED = "last_time_used";
+    field @Deprecated public static final String TIMES_USED = "times_used";
+  }
+
+  public static final class ContactsContract.DeletedContacts implements android.provider.ContactsContract.DeletedContactsColumns {
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final long DAYS_KEPT_MILLISECONDS = 2592000000L; // 0x9a7ec800L
+  }
+
+  protected static interface ContactsContract.DeletedContactsColumns {
+    field public static final String CONTACT_DELETED_TIMESTAMP = "contact_deleted_timestamp";
+    field public static final String CONTACT_ID = "contact_id";
+  }
+
+  public static final class ContactsContract.Directory implements android.provider.BaseColumns {
+    method public static boolean isEnterpriseDirectoryId(long);
+    method public static boolean isRemoteDirectoryId(long);
+    method public static void notifyDirectoryChange(android.content.ContentResolver);
+    field public static final String ACCOUNT_NAME = "accountName";
+    field public static final String ACCOUNT_TYPE = "accountType";
+    field public static final String CALLER_PACKAGE_PARAM_KEY = "callerPackage";
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_directory";
+    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact_directories";
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final long DEFAULT = 0L; // 0x0L
+    field public static final String DIRECTORY_AUTHORITY = "authority";
+    field public static final String DISPLAY_NAME = "displayName";
+    field public static final android.net.Uri ENTERPRISE_CONTENT_URI;
+    field public static final long ENTERPRISE_DEFAULT = 1000000000L; // 0x3b9aca00L
+    field public static final long ENTERPRISE_LOCAL_INVISIBLE = 1000000001L; // 0x3b9aca01L
+    field public static final String EXPORT_SUPPORT = "exportSupport";
+    field public static final int EXPORT_SUPPORT_ANY_ACCOUNT = 2; // 0x2
+    field public static final int EXPORT_SUPPORT_NONE = 0; // 0x0
+    field public static final int EXPORT_SUPPORT_SAME_ACCOUNT_ONLY = 1; // 0x1
+    field public static final long LOCAL_INVISIBLE = 1L; // 0x1L
+    field public static final String PACKAGE_NAME = "packageName";
+    field public static final String PHOTO_SUPPORT = "photoSupport";
+    field public static final int PHOTO_SUPPORT_FULL = 3; // 0x3
+    field public static final int PHOTO_SUPPORT_FULL_SIZE_ONLY = 2; // 0x2
+    field public static final int PHOTO_SUPPORT_NONE = 0; // 0x0
+    field public static final int PHOTO_SUPPORT_THUMBNAIL_ONLY = 1; // 0x1
+    field public static final String SHORTCUT_SUPPORT = "shortcutSupport";
+    field public static final int SHORTCUT_SUPPORT_DATA_ITEMS_ONLY = 1; // 0x1
+    field public static final int SHORTCUT_SUPPORT_FULL = 2; // 0x2
+    field public static final int SHORTCUT_SUPPORT_NONE = 0; // 0x0
+    field public static final String TYPE_RESOURCE_ID = "typeResourceId";
+  }
+
+  public static interface ContactsContract.DisplayNameSources {
+    field public static final int EMAIL = 10; // 0xa
+    field public static final int NICKNAME = 35; // 0x23
+    field public static final int ORGANIZATION = 30; // 0x1e
+    field public static final int PHONE = 20; // 0x14
+    field public static final int STRUCTURED_NAME = 40; // 0x28
+    field public static final int STRUCTURED_PHONETIC_NAME = 37; // 0x25
+    field public static final int UNDEFINED = 0; // 0x0
+  }
+
+  public static final class ContactsContract.DisplayPhoto {
+    field public static final android.net.Uri CONTENT_MAX_DIMENSIONS_URI;
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String DISPLAY_MAX_DIM = "display_max_dim";
+    field public static final String THUMBNAIL_MAX_DIM = "thumbnail_max_dim";
+  }
+
+  public static interface ContactsContract.FullNameStyle {
+    field public static final int CHINESE = 3; // 0x3
+    field public static final int CJK = 2; // 0x2
+    field public static final int JAPANESE = 4; // 0x4
+    field public static final int KOREAN = 5; // 0x5
+    field public static final int UNDEFINED = 0; // 0x0
+    field public static final int WESTERN = 1; // 0x1
+  }
+
+  public static final class ContactsContract.Groups implements android.provider.BaseColumns android.provider.ContactsContract.GroupsColumns android.provider.ContactsContract.SyncColumns {
+    method public static android.content.EntityIterator newEntityIterator(android.database.Cursor);
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/group";
+    field public static final android.net.Uri CONTENT_SUMMARY_URI;
+    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/group";
+    field public static final android.net.Uri CONTENT_URI;
+  }
+
+  protected static interface ContactsContract.GroupsColumns {
+    field public static final String AUTO_ADD = "auto_add";
+    field public static final String DATA_SET = "data_set";
+    field public static final String DELETED = "deleted";
+    field public static final String FAVORITES = "favorites";
+    field public static final String GROUP_IS_READ_ONLY = "group_is_read_only";
+    field public static final String GROUP_VISIBLE = "group_visible";
+    field public static final String NOTES = "notes";
+    field public static final String RES_PACKAGE = "res_package";
+    field public static final String SHOULD_SYNC = "should_sync";
+    field public static final String SUMMARY_COUNT = "summ_count";
+    field public static final String SUMMARY_WITH_PHONES = "summ_phones";
+    field public static final String SYSTEM_ID = "system_id";
+    field public static final String TITLE = "title";
+    field public static final String TITLE_RES = "title_res";
+  }
+
+  public static final class ContactsContract.Intents {
+    ctor public ContactsContract.Intents();
+    field public static final String ACTION_VOICE_SEND_MESSAGE_TO_CONTACTS = "android.provider.action.VOICE_SEND_MESSAGE_TO_CONTACTS";
+    field public static final String ATTACH_IMAGE = "com.android.contacts.action.ATTACH_IMAGE";
+    field public static final String CONTACTS_DATABASE_CREATED = "android.provider.Contacts.DATABASE_CREATED";
+    field public static final String EXTRA_CREATE_DESCRIPTION = "com.android.contacts.action.CREATE_DESCRIPTION";
+    field public static final String EXTRA_FORCE_CREATE = "com.android.contacts.action.FORCE_CREATE";
+    field public static final String EXTRA_RECIPIENT_CONTACT_CHAT_ID = "android.provider.extra.RECIPIENT_CONTACT_CHAT_ID";
+    field public static final String EXTRA_RECIPIENT_CONTACT_NAME = "android.provider.extra.RECIPIENT_CONTACT_NAME";
+    field public static final String EXTRA_RECIPIENT_CONTACT_URI = "android.provider.extra.RECIPIENT_CONTACT_URI";
+    field public static final String INVITE_CONTACT = "com.android.contacts.action.INVITE_CONTACT";
+    field public static final String METADATA_ACCOUNT_TYPE = "android.provider.account_type";
+    field public static final String METADATA_MIMETYPE = "android.provider.mimetype";
+    field public static final String SEARCH_SUGGESTION_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CLICKED";
+    field public static final String SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED";
+    field public static final String SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED";
+    field public static final String SHOW_OR_CREATE_CONTACT = "com.android.contacts.action.SHOW_OR_CREATE_CONTACT";
+  }
+
+  public static final class ContactsContract.Intents.Insert {
+    ctor public ContactsContract.Intents.Insert();
+    field public static final String ACTION = "android.intent.action.INSERT";
+    field public static final String COMPANY = "company";
+    field public static final String DATA = "data";
+    field public static final String EMAIL = "email";
+    field public static final String EMAIL_ISPRIMARY = "email_isprimary";
+    field public static final String EMAIL_TYPE = "email_type";
+    field public static final String EXTRA_ACCOUNT = "android.provider.extra.ACCOUNT";
+    field public static final String EXTRA_DATA_SET = "android.provider.extra.DATA_SET";
+    field public static final String FULL_MODE = "full_mode";
+    field public static final String IM_HANDLE = "im_handle";
+    field public static final String IM_ISPRIMARY = "im_isprimary";
+    field public static final String IM_PROTOCOL = "im_protocol";
+    field public static final String JOB_TITLE = "job_title";
+    field public static final String NAME = "name";
+    field public static final String NOTES = "notes";
+    field public static final String PHONE = "phone";
+    field public static final String PHONETIC_NAME = "phonetic_name";
+    field public static final String PHONE_ISPRIMARY = "phone_isprimary";
+    field public static final String PHONE_TYPE = "phone_type";
+    field public static final String POSTAL = "postal";
+    field public static final String POSTAL_ISPRIMARY = "postal_isprimary";
+    field public static final String POSTAL_TYPE = "postal_type";
+    field public static final String SECONDARY_EMAIL = "secondary_email";
+    field public static final String SECONDARY_EMAIL_TYPE = "secondary_email_type";
+    field public static final String SECONDARY_PHONE = "secondary_phone";
+    field public static final String SECONDARY_PHONE_TYPE = "secondary_phone_type";
+    field public static final String TERTIARY_EMAIL = "tertiary_email";
+    field public static final String TERTIARY_EMAIL_TYPE = "tertiary_email_type";
+    field public static final String TERTIARY_PHONE = "tertiary_phone";
+    field public static final String TERTIARY_PHONE_TYPE = "tertiary_phone_type";
+  }
+
+  public static final class ContactsContract.PhoneLookup implements android.provider.BaseColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactsColumns android.provider.ContactsContract.PhoneLookupColumns {
+    field public static final android.net.Uri CONTENT_FILTER_URI;
+    field public static final android.net.Uri ENTERPRISE_CONTENT_FILTER_URI;
+    field public static final String QUERY_PARAMETER_SIP_ADDRESS = "sip";
+  }
+
+  protected static interface ContactsContract.PhoneLookupColumns {
+    field public static final String CONTACT_ID = "contact_id";
+    field public static final String DATA_ID = "data_id";
+    field public static final String LABEL = "label";
+    field public static final String NORMALIZED_NUMBER = "normalized_number";
+    field public static final String NUMBER = "number";
+    field public static final String TYPE = "type";
+  }
+
+  public static interface ContactsContract.PhoneticNameStyle {
+    field public static final int JAPANESE = 4; // 0x4
+    field public static final int KOREAN = 5; // 0x5
+    field public static final int PINYIN = 3; // 0x3
+    field public static final int UNDEFINED = 0; // 0x0
+  }
+
+  public static final class ContactsContract.PinnedPositions {
+    ctor public ContactsContract.PinnedPositions();
+    method public static void pin(android.content.ContentResolver, long, int);
+    method public static void undemote(android.content.ContentResolver, long);
+    field public static final int DEMOTED = -1; // 0xffffffff
+    field public static final int UNPINNED = 0; // 0x0
+  }
+
+  @Deprecated public static final class ContactsContract.Presence extends android.provider.ContactsContract.StatusUpdates {
+    ctor @Deprecated public ContactsContract.Presence();
+  }
+
+  protected static interface ContactsContract.PresenceColumns {
+    field public static final String CUSTOM_PROTOCOL = "custom_protocol";
+    field public static final String DATA_ID = "presence_data_id";
+    field public static final String IM_ACCOUNT = "im_account";
+    field public static final String IM_HANDLE = "im_handle";
+    field public static final String PROTOCOL = "protocol";
+  }
+
+  public static final class ContactsContract.Profile implements android.provider.BaseColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.ContactsColumns {
+    field public static final android.net.Uri CONTENT_RAW_CONTACTS_URI;
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final android.net.Uri CONTENT_VCARD_URI;
+    field public static final long MIN_ID = 9223372034707292160L; // 0x7fffffff80000000L
+  }
+
+  public static final class ContactsContract.ProfileSyncState implements android.provider.SyncStateContract.Columns {
+    method public static byte[] get(android.content.ContentProviderClient, android.accounts.Account) throws android.os.RemoteException;
+    method public static android.util.Pair<android.net.Uri,byte[]> getWithUri(android.content.ContentProviderClient, android.accounts.Account) throws android.os.RemoteException;
+    method public static android.content.ContentProviderOperation newSetOperation(android.accounts.Account, byte[]);
+    method public static void set(android.content.ContentProviderClient, android.accounts.Account, byte[]) throws android.os.RemoteException;
+    field public static final String CONTENT_DIRECTORY = "syncstate";
+    field public static final android.net.Uri CONTENT_URI;
+  }
+
+  public static final class ContactsContract.ProviderStatus {
+    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/provider_status";
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String DATABASE_CREATION_TIMESTAMP = "database_creation_timestamp";
+    field public static final String STATUS = "status";
+    field public static final int STATUS_BUSY = 1; // 0x1
+    field public static final int STATUS_EMPTY = 2; // 0x2
+    field public static final int STATUS_NORMAL = 0; // 0x0
+  }
+
+  public static final class ContactsContract.QuickContact {
+    ctor public ContactsContract.QuickContact();
+    method public static void showQuickContact(android.content.Context, android.view.View, android.net.Uri, int, String[]);
+    method public static void showQuickContact(android.content.Context, android.graphics.Rect, android.net.Uri, int, String[]);
+    method public static void showQuickContact(android.content.Context, android.view.View, android.net.Uri, String[], String);
+    method public static void showQuickContact(android.content.Context, android.graphics.Rect, android.net.Uri, String[], String);
+    field public static final String ACTION_QUICK_CONTACT = "android.provider.action.QUICK_CONTACT";
+    field public static final String EXTRA_EXCLUDE_MIMES = "android.provider.extra.EXCLUDE_MIMES";
+    field public static final String EXTRA_MODE = "android.provider.extra.MODE";
+    field public static final String EXTRA_PRIORITIZED_MIMETYPE = "android.provider.extra.PRIORITIZED_MIMETYPE";
+    field public static final int MODE_LARGE = 3; // 0x3
+    field public static final int MODE_MEDIUM = 2; // 0x2
+    field public static final int MODE_SMALL = 1; // 0x1
+  }
+
+  public static final class ContactsContract.RawContacts implements android.provider.BaseColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.RawContactsColumns android.provider.ContactsContract.SyncColumns {
+    method public static android.net.Uri getContactLookupUri(android.content.ContentResolver, android.net.Uri);
+    method @Nullable public static String getLocalAccountName(@NonNull android.content.Context);
+    method @Nullable public static String getLocalAccountType(@NonNull android.content.Context);
+    method public static android.content.EntityIterator newEntityIterator(android.database.Cursor);
+    field public static final int AGGREGATION_MODE_DEFAULT = 0; // 0x0
+    field public static final int AGGREGATION_MODE_DISABLED = 3; // 0x3
+    field @Deprecated public static final int AGGREGATION_MODE_IMMEDIATE = 1; // 0x1
+    field public static final int AGGREGATION_MODE_SUSPENDED = 2; // 0x2
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/raw_contact";
+    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/raw_contact";
+    field public static final android.net.Uri CONTENT_URI;
+  }
+
+  public static final class ContactsContract.RawContacts.Data implements android.provider.BaseColumns android.provider.ContactsContract.DataColumns {
+    field public static final String CONTENT_DIRECTORY = "data";
+  }
+
+  public static final class ContactsContract.RawContacts.DisplayPhoto {
+    field public static final String CONTENT_DIRECTORY = "display_photo";
+  }
+
+  public static final class ContactsContract.RawContacts.Entity implements android.provider.BaseColumns android.provider.ContactsContract.DataColumns {
+    field public static final String CONTENT_DIRECTORY = "entity";
+    field public static final String DATA_ID = "data_id";
+  }
+
+  protected static interface ContactsContract.RawContactsColumns {
+    field public static final String ACCOUNT_TYPE_AND_DATA_SET = "account_type_and_data_set";
+    field public static final String AGGREGATION_MODE = "aggregation_mode";
+    field public static final String BACKUP_ID = "backup_id";
+    field public static final String CONTACT_ID = "contact_id";
+    field public static final String DATA_SET = "data_set";
+    field public static final String DELETED = "deleted";
+    field @Deprecated public static final String METADATA_DIRTY = "metadata_dirty";
+    field public static final String RAW_CONTACT_IS_READ_ONLY = "raw_contact_is_read_only";
+    field public static final String RAW_CONTACT_IS_USER_PROFILE = "raw_contact_is_user_profile";
+  }
+
+  public static final class ContactsContract.RawContactsEntity implements android.provider.BaseColumns android.provider.ContactsContract.DataColumns android.provider.ContactsContract.RawContactsColumns {
+    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/raw_contact_entity";
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String DATA_ID = "data_id";
+    field public static final android.net.Uri PROFILE_CONTENT_URI;
+  }
+
+  public static class ContactsContract.SearchSnippets {
+    ctor public ContactsContract.SearchSnippets();
+    field public static final String DEFERRED_SNIPPETING_KEY = "deferred_snippeting";
+    field public static final String SNIPPET = "snippet";
+  }
+
+  public static final class ContactsContract.Settings implements android.provider.ContactsContract.SettingsColumns {
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/setting";
+    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/setting";
+    field public static final android.net.Uri CONTENT_URI;
+  }
+
+  protected static interface ContactsContract.SettingsColumns {
+    field public static final String ACCOUNT_NAME = "account_name";
+    field public static final String ACCOUNT_TYPE = "account_type";
+    field public static final String ANY_UNSYNCED = "any_unsynced";
+    field public static final String DATA_SET = "data_set";
+    field public static final String SHOULD_SYNC = "should_sync";
+    field public static final String UNGROUPED_COUNT = "summ_count";
+    field public static final String UNGROUPED_VISIBLE = "ungrouped_visible";
+    field public static final String UNGROUPED_WITH_PHONES = "summ_phones";
+  }
+
+  protected static interface ContactsContract.StatusColumns {
+    field public static final int AVAILABLE = 5; // 0x5
+    field public static final int AWAY = 2; // 0x2
+    field public static final int CAPABILITY_HAS_CAMERA = 4; // 0x4
+    field public static final int CAPABILITY_HAS_VIDEO = 2; // 0x2
+    field public static final int CAPABILITY_HAS_VOICE = 1; // 0x1
+    field public static final String CHAT_CAPABILITY = "chat_capability";
+    field public static final int DO_NOT_DISTURB = 4; // 0x4
+    field public static final int IDLE = 3; // 0x3
+    field public static final int INVISIBLE = 1; // 0x1
+    field public static final int OFFLINE = 0; // 0x0
+    field public static final String PRESENCE = "mode";
+    field @Deprecated public static final String PRESENCE_CUSTOM_STATUS = "status";
+    field @Deprecated public static final String PRESENCE_STATUS = "mode";
+    field public static final String STATUS = "status";
+    field public static final String STATUS_ICON = "status_icon";
+    field public static final String STATUS_LABEL = "status_label";
+    field public static final String STATUS_RES_PACKAGE = "status_res_package";
+    field public static final String STATUS_TIMESTAMP = "status_ts";
+  }
+
+  public static class ContactsContract.StatusUpdates implements android.provider.ContactsContract.PresenceColumns android.provider.ContactsContract.StatusColumns {
+    method public static final int getPresenceIconResourceId(int);
+    method public static final int getPresencePrecedence(int);
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/status-update";
+    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/status-update";
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final android.net.Uri PROFILE_CONTENT_URI;
+  }
+
+  protected static interface ContactsContract.SyncColumns extends android.provider.ContactsContract.BaseSyncColumns {
+    field public static final String ACCOUNT_NAME = "account_name";
+    field public static final String ACCOUNT_TYPE = "account_type";
+    field public static final String DIRTY = "dirty";
+    field public static final String SOURCE_ID = "sourceid";
+    field public static final String VERSION = "version";
+  }
+
+  public static final class ContactsContract.SyncState implements android.provider.SyncStateContract.Columns {
+    method public static byte[] get(android.content.ContentProviderClient, android.accounts.Account) throws android.os.RemoteException;
+    method public static android.util.Pair<android.net.Uri,byte[]> getWithUri(android.content.ContentProviderClient, android.accounts.Account) throws android.os.RemoteException;
+    method public static android.content.ContentProviderOperation newSetOperation(android.accounts.Account, byte[]);
+    method public static void set(android.content.ContentProviderClient, android.accounts.Account, byte[]) throws android.os.RemoteException;
+    field public static final String CONTENT_DIRECTORY = "syncstate";
+    field public static final android.net.Uri CONTENT_URI;
+  }
+
+  public final class DocumentsContract {
+    method public static android.net.Uri buildChildDocumentsUri(String, String);
+    method public static android.net.Uri buildChildDocumentsUriUsingTree(android.net.Uri, String);
+    method public static android.net.Uri buildDocumentUri(String, String);
+    method public static android.net.Uri buildDocumentUriUsingTree(android.net.Uri, String);
+    method public static android.net.Uri buildRecentDocumentsUri(String, String);
+    method public static android.net.Uri buildRootUri(String, String);
+    method public static android.net.Uri buildRootsUri(String);
+    method public static android.net.Uri buildSearchDocumentsUri(String, String, String);
+    method public static android.net.Uri buildTreeDocumentUri(String, String);
+    method @Nullable public static android.net.Uri copyDocument(@NonNull android.content.ContentResolver, @NonNull android.net.Uri, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
+    method @Nullable public static android.net.Uri createDocument(@NonNull android.content.ContentResolver, @NonNull android.net.Uri, @NonNull String, @NonNull String) throws java.io.FileNotFoundException;
+    method @Nullable public static android.content.IntentSender createWebLinkIntent(@NonNull android.content.ContentResolver, @NonNull android.net.Uri, @Nullable android.os.Bundle) throws java.io.FileNotFoundException;
+    method public static boolean deleteDocument(@NonNull android.content.ContentResolver, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
+    method public static void ejectRoot(@NonNull android.content.ContentResolver, @NonNull android.net.Uri);
+    method @Nullable public static android.provider.DocumentsContract.Path findDocumentPath(@NonNull android.content.ContentResolver, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
+    method public static String getDocumentId(android.net.Uri);
+    method @Nullable public static android.os.Bundle getDocumentMetadata(@NonNull android.content.ContentResolver, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
+    method @Nullable public static android.graphics.Bitmap getDocumentThumbnail(@NonNull android.content.ContentResolver, @NonNull android.net.Uri, @NonNull android.graphics.Point, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
+    method public static String getRootId(android.net.Uri);
+    method public static String getSearchDocumentsQuery(android.net.Uri);
+    method public static String getTreeDocumentId(android.net.Uri);
+    method public static boolean isChildDocument(@NonNull android.content.ContentResolver, @NonNull android.net.Uri, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
+    method public static boolean isDocumentUri(android.content.Context, @Nullable android.net.Uri);
+    method public static boolean isRootUri(@NonNull android.content.Context, @Nullable android.net.Uri);
+    method public static boolean isRootsUri(@NonNull android.content.Context, @Nullable android.net.Uri);
+    method public static boolean isTreeUri(android.net.Uri);
+    method @Nullable public static android.net.Uri moveDocument(@NonNull android.content.ContentResolver, @NonNull android.net.Uri, @NonNull android.net.Uri, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
+    method public static boolean removeDocument(@NonNull android.content.ContentResolver, @NonNull android.net.Uri, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
+    method @Nullable public static android.net.Uri renameDocument(@NonNull android.content.ContentResolver, @NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
+    field public static final String ACTION_DOCUMENT_SETTINGS = "android.provider.action.DOCUMENT_SETTINGS";
+    field public static final String EXTRA_ERROR = "error";
+    field public static final String EXTRA_EXCLUDE_SELF = "android.provider.extra.EXCLUDE_SELF";
+    field public static final String EXTRA_INFO = "info";
+    field public static final String EXTRA_INITIAL_URI = "android.provider.extra.INITIAL_URI";
+    field public static final String EXTRA_LOADING = "loading";
+    field public static final String EXTRA_ORIENTATION = "android.provider.extra.ORIENTATION";
+    field public static final String EXTRA_PROMPT = "android.provider.extra.PROMPT";
+    field public static final String METADATA_EXIF = "android:documentExif";
+    field public static final String METADATA_TREE_COUNT = "android:metadataTreeCount";
+    field public static final String METADATA_TREE_SIZE = "android:metadataTreeSize";
+    field public static final String METADATA_TYPES = "android:documentMetadataTypes";
+    field public static final String PROVIDER_INTERFACE = "android.content.action.DOCUMENTS_PROVIDER";
+    field public static final String QUERY_ARG_DISPLAY_NAME = "android:query-arg-display-name";
+    field public static final String QUERY_ARG_EXCLUDE_MEDIA = "android:query-arg-exclude-media";
+    field public static final String QUERY_ARG_FILE_SIZE_OVER = "android:query-arg-file-size-over";
+    field public static final String QUERY_ARG_LAST_MODIFIED_AFTER = "android:query-arg-last-modified-after";
+    field public static final String QUERY_ARG_MIME_TYPES = "android:query-arg-mime-types";
+  }
+
+  public static final class DocumentsContract.Document {
+    field public static final String COLUMN_DISPLAY_NAME = "_display_name";
+    field public static final String COLUMN_DOCUMENT_ID = "document_id";
+    field public static final String COLUMN_FLAGS = "flags";
+    field public static final String COLUMN_ICON = "icon";
+    field public static final String COLUMN_LAST_MODIFIED = "last_modified";
+    field public static final String COLUMN_MIME_TYPE = "mime_type";
+    field public static final String COLUMN_SIZE = "_size";
+    field public static final String COLUMN_SUMMARY = "summary";
+    field public static final int FLAG_DIR_BLOCKS_OPEN_DOCUMENT_TREE = 32768; // 0x8000
+    field public static final int FLAG_DIR_PREFERS_GRID = 16; // 0x10
+    field public static final int FLAG_DIR_PREFERS_LAST_MODIFIED = 32; // 0x20
+    field public static final int FLAG_DIR_SUPPORTS_CREATE = 8; // 0x8
+    field public static final int FLAG_PARTIAL = 8192; // 0x2000
+    field public static final int FLAG_SUPPORTS_COPY = 128; // 0x80
+    field public static final int FLAG_SUPPORTS_DELETE = 4; // 0x4
+    field public static final int FLAG_SUPPORTS_METADATA = 16384; // 0x4000
+    field public static final int FLAG_SUPPORTS_MOVE = 256; // 0x100
+    field public static final int FLAG_SUPPORTS_REMOVE = 1024; // 0x400
+    field public static final int FLAG_SUPPORTS_RENAME = 64; // 0x40
+    field public static final int FLAG_SUPPORTS_SETTINGS = 2048; // 0x800
+    field public static final int FLAG_SUPPORTS_THUMBNAIL = 1; // 0x1
+    field public static final int FLAG_SUPPORTS_WRITE = 2; // 0x2
+    field public static final int FLAG_VIRTUAL_DOCUMENT = 512; // 0x200
+    field public static final int FLAG_WEB_LINKABLE = 4096; // 0x1000
+    field public static final String MIME_TYPE_DIR = "vnd.android.document/directory";
+  }
+
+  public static final class DocumentsContract.Path implements android.os.Parcelable {
+    ctor public DocumentsContract.Path(@Nullable String, java.util.List<java.lang.String>);
+    method public int describeContents();
+    method public java.util.List<java.lang.String> getPath();
+    method @Nullable public String getRootId();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.provider.DocumentsContract.Path> CREATOR;
+  }
+
+  public static final class DocumentsContract.Root {
+    field public static final String COLUMN_AVAILABLE_BYTES = "available_bytes";
+    field public static final String COLUMN_CAPACITY_BYTES = "capacity_bytes";
+    field public static final String COLUMN_DOCUMENT_ID = "document_id";
+    field public static final String COLUMN_FLAGS = "flags";
+    field public static final String COLUMN_ICON = "icon";
+    field public static final String COLUMN_MIME_TYPES = "mime_types";
+    field public static final String COLUMN_QUERY_ARGS = "query_args";
+    field public static final String COLUMN_ROOT_ID = "root_id";
+    field public static final String COLUMN_SUMMARY = "summary";
+    field public static final String COLUMN_TITLE = "title";
+    field public static final int FLAG_EMPTY = 64; // 0x40
+    field public static final int FLAG_LOCAL_ONLY = 2; // 0x2
+    field public static final int FLAG_SUPPORTS_CREATE = 1; // 0x1
+    field public static final int FLAG_SUPPORTS_EJECT = 32; // 0x20
+    field public static final int FLAG_SUPPORTS_IS_CHILD = 16; // 0x10
+    field public static final int FLAG_SUPPORTS_RECENTS = 4; // 0x4
+    field public static final int FLAG_SUPPORTS_SEARCH = 8; // 0x8
+    field public static final String MIME_TYPE_ITEM = "vnd.android.document/root";
+  }
+
+  public abstract class DocumentsProvider extends android.content.ContentProvider {
+    ctor public DocumentsProvider();
+    method public String copyDocument(String, String) throws java.io.FileNotFoundException;
+    method public String createDocument(String, String, String) throws java.io.FileNotFoundException;
+    method public android.content.IntentSender createWebLinkIntent(String, @Nullable android.os.Bundle) throws java.io.FileNotFoundException;
+    method public final int delete(android.net.Uri, String, String[]);
+    method public void deleteDocument(String) throws java.io.FileNotFoundException;
+    method public void ejectRoot(String);
+    method public android.provider.DocumentsContract.Path findDocumentPath(@Nullable String, String) throws java.io.FileNotFoundException;
+    method @Nullable public android.os.Bundle getDocumentMetadata(@NonNull String) throws java.io.FileNotFoundException;
+    method public String[] getDocumentStreamTypes(String, String);
+    method public String getDocumentType(String) throws java.io.FileNotFoundException;
+    method public final String getType(android.net.Uri);
+    method public final android.net.Uri insert(android.net.Uri, android.content.ContentValues);
+    method public boolean isChildDocument(String, String);
+    method public String moveDocument(String, String, String) throws java.io.FileNotFoundException;
+    method public final android.content.res.AssetFileDescriptor openAssetFile(android.net.Uri, String) throws java.io.FileNotFoundException;
+    method public final android.content.res.AssetFileDescriptor openAssetFile(android.net.Uri, String, android.os.CancellationSignal) throws java.io.FileNotFoundException;
+    method public abstract android.os.ParcelFileDescriptor openDocument(String, String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
+    method public android.content.res.AssetFileDescriptor openDocumentThumbnail(String, android.graphics.Point, android.os.CancellationSignal) throws java.io.FileNotFoundException;
+    method public final android.os.ParcelFileDescriptor openFile(android.net.Uri, String) throws java.io.FileNotFoundException;
+    method public final android.os.ParcelFileDescriptor openFile(android.net.Uri, String, android.os.CancellationSignal) throws java.io.FileNotFoundException;
+    method public final android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, String, android.os.Bundle) throws java.io.FileNotFoundException;
+    method public final android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, String, android.os.Bundle, android.os.CancellationSignal) throws java.io.FileNotFoundException;
+    method public android.content.res.AssetFileDescriptor openTypedDocument(String, String, android.os.Bundle, android.os.CancellationSignal) throws java.io.FileNotFoundException;
+    method public final android.database.Cursor query(android.net.Uri, String[], String, String[], String);
+    method public final android.database.Cursor query(android.net.Uri, String[], android.os.Bundle, android.os.CancellationSignal);
+    method public abstract android.database.Cursor queryChildDocuments(String, String[], String) throws java.io.FileNotFoundException;
+    method public android.database.Cursor queryChildDocuments(String, @Nullable String[], @Nullable android.os.Bundle) throws java.io.FileNotFoundException;
+    method public abstract android.database.Cursor queryDocument(String, String[]) throws java.io.FileNotFoundException;
+    method public android.database.Cursor queryRecentDocuments(String, String[]) throws java.io.FileNotFoundException;
+    method @Nullable public android.database.Cursor queryRecentDocuments(@NonNull String, @Nullable String[], @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
+    method public abstract android.database.Cursor queryRoots(String[]) throws java.io.FileNotFoundException;
+    method public android.database.Cursor querySearchDocuments(String, String, String[]) throws java.io.FileNotFoundException;
+    method @Nullable public android.database.Cursor querySearchDocuments(@NonNull String, @Nullable String[], @NonNull android.os.Bundle) throws java.io.FileNotFoundException;
+    method public void removeDocument(String, String) throws java.io.FileNotFoundException;
+    method public String renameDocument(String, String) throws java.io.FileNotFoundException;
+    method public final void revokeDocumentPermission(String);
+    method public final int update(android.net.Uri, android.content.ContentValues, String, String[]);
+  }
+
+  public final class FontRequest {
+    ctor public FontRequest(@NonNull String, @NonNull String, @NonNull String);
+    ctor public FontRequest(@NonNull String, @NonNull String, @NonNull String, @NonNull java.util.List<java.util.List<byte[]>>);
+    method public java.util.List<java.util.List<byte[]>> getCertificates();
+    method public String getProviderAuthority();
+    method public String getProviderPackage();
+    method public String getQuery();
+  }
+
+  public class FontsContract {
+    method public static android.graphics.Typeface buildTypeface(@NonNull android.content.Context, @Nullable android.os.CancellationSignal, @NonNull android.provider.FontsContract.FontInfo[]);
+    method @NonNull public static android.provider.FontsContract.FontFamilyResult fetchFonts(@NonNull android.content.Context, @Nullable android.os.CancellationSignal, @NonNull android.provider.FontRequest) throws android.content.pm.PackageManager.NameNotFoundException;
+    method public static void requestFonts(@NonNull android.content.Context, @NonNull android.provider.FontRequest, @NonNull android.os.Handler, @Nullable android.os.CancellationSignal, @NonNull android.provider.FontsContract.FontRequestCallback);
+  }
+
+  public static final class FontsContract.Columns implements android.provider.BaseColumns {
+    field public static final String FILE_ID = "file_id";
+    field public static final String ITALIC = "font_italic";
+    field public static final String RESULT_CODE = "result_code";
+    field public static final int RESULT_CODE_FONT_NOT_FOUND = 1; // 0x1
+    field public static final int RESULT_CODE_FONT_UNAVAILABLE = 2; // 0x2
+    field public static final int RESULT_CODE_MALFORMED_QUERY = 3; // 0x3
+    field public static final int RESULT_CODE_OK = 0; // 0x0
+    field public static final String TTC_INDEX = "font_ttc_index";
+    field public static final String VARIATION_SETTINGS = "font_variation_settings";
+    field public static final String WEIGHT = "font_weight";
+  }
+
+  public static class FontsContract.FontFamilyResult {
+    method @NonNull public android.provider.FontsContract.FontInfo[] getFonts();
+    method public int getStatusCode();
+    field public static final int STATUS_OK = 0; // 0x0
+    field public static final int STATUS_REJECTED = 3; // 0x3
+    field public static final int STATUS_UNEXPECTED_DATA_PROVIDED = 2; // 0x2
+    field public static final int STATUS_WRONG_CERTIFICATES = 1; // 0x1
+  }
+
+  public static class FontsContract.FontInfo {
+    method @Nullable public android.graphics.fonts.FontVariationAxis[] getAxes();
+    method public int getResultCode();
+    method @IntRange(from=0) public int getTtcIndex();
+    method @NonNull public android.net.Uri getUri();
+    method @IntRange(from=1, to=1000) public int getWeight();
+    method public boolean isItalic();
+  }
+
+  public static class FontsContract.FontRequestCallback {
+    ctor public FontsContract.FontRequestCallback();
+    method public void onTypefaceRequestFailed(int);
+    method public void onTypefaceRetrieved(android.graphics.Typeface);
+    field public static final int FAIL_REASON_FONT_LOAD_ERROR = -3; // 0xfffffffd
+    field public static final int FAIL_REASON_FONT_NOT_FOUND = 1; // 0x1
+    field public static final int FAIL_REASON_FONT_UNAVAILABLE = 2; // 0x2
+    field public static final int FAIL_REASON_MALFORMED_QUERY = 3; // 0x3
+    field public static final int FAIL_REASON_PROVIDER_NOT_FOUND = -1; // 0xffffffff
+    field public static final int FAIL_REASON_WRONG_CERTIFICATES = -2; // 0xfffffffe
+  }
+
+  @Deprecated public final class LiveFolders implements android.provider.BaseColumns {
+    field @Deprecated public static final String ACTION_CREATE_LIVE_FOLDER = "android.intent.action.CREATE_LIVE_FOLDER";
+    field @Deprecated public static final String DESCRIPTION = "description";
+    field @Deprecated public static final int DISPLAY_MODE_GRID = 1; // 0x1
+    field @Deprecated public static final int DISPLAY_MODE_LIST = 2; // 0x2
+    field @Deprecated public static final String EXTRA_LIVE_FOLDER_BASE_INTENT = "android.intent.extra.livefolder.BASE_INTENT";
+    field @Deprecated public static final String EXTRA_LIVE_FOLDER_DISPLAY_MODE = "android.intent.extra.livefolder.DISPLAY_MODE";
+    field @Deprecated public static final String EXTRA_LIVE_FOLDER_ICON = "android.intent.extra.livefolder.ICON";
+    field @Deprecated public static final String EXTRA_LIVE_FOLDER_NAME = "android.intent.extra.livefolder.NAME";
+    field @Deprecated public static final String ICON_BITMAP = "icon_bitmap";
+    field @Deprecated public static final String ICON_PACKAGE = "icon_package";
+    field @Deprecated public static final String ICON_RESOURCE = "icon_resource";
+    field @Deprecated public static final String INTENT = "intent";
+    field @Deprecated public static final String NAME = "name";
+  }
+
+  public interface OpenableColumns {
+    field public static final String DISPLAY_NAME = "_display_name";
+    field public static final String SIZE = "_size";
+  }
+
+  public class SearchRecentSuggestions {
+    ctor public SearchRecentSuggestions(android.content.Context, String, int);
+    method public void clearHistory();
+    method public void saveRecentQuery(String, String);
+    method protected void truncateHistory(android.content.ContentResolver, int);
+    field public static final String[] QUERIES_PROJECTION_1LINE;
+    field public static final String[] QUERIES_PROJECTION_2LINE;
+    field public static final int QUERIES_PROJECTION_DATE_INDEX = 1; // 0x1
+    field public static final int QUERIES_PROJECTION_DISPLAY1_INDEX = 3; // 0x3
+    field public static final int QUERIES_PROJECTION_DISPLAY2_INDEX = 4; // 0x4
+    field public static final int QUERIES_PROJECTION_QUERY_INDEX = 2; // 0x2
+  }
+
+  public final class Settings {
+    ctor public Settings();
+    method public static boolean canDrawOverlays(android.content.Context);
+    field public static final String ACTION_ACCESSIBILITY_SETTINGS = "android.settings.ACCESSIBILITY_SETTINGS";
+    field public static final String ACTION_ADD_ACCOUNT = "android.settings.ADD_ACCOUNT_SETTINGS";
+    field public static final String ACTION_AIRPLANE_MODE_SETTINGS = "android.settings.AIRPLANE_MODE_SETTINGS";
+    field public static final String ACTION_APN_SETTINGS = "android.settings.APN_SETTINGS";
+    field public static final String ACTION_APPLICATION_DETAILS_SETTINGS = "android.settings.APPLICATION_DETAILS_SETTINGS";
+    field public static final String ACTION_APPLICATION_DEVELOPMENT_SETTINGS = "android.settings.APPLICATION_DEVELOPMENT_SETTINGS";
+    field public static final String ACTION_APPLICATION_SETTINGS = "android.settings.APPLICATION_SETTINGS";
+    field public static final String ACTION_APP_NOTIFICATION_BUBBLE_SETTINGS = "android.settings.APP_NOTIFICATION_BUBBLE_SETTINGS";
+    field public static final String ACTION_APP_NOTIFICATION_SETTINGS = "android.settings.APP_NOTIFICATION_SETTINGS";
+    field public static final String ACTION_APP_SEARCH_SETTINGS = "android.settings.APP_SEARCH_SETTINGS";
+    field public static final String ACTION_APP_USAGE_SETTINGS = "android.settings.action.APP_USAGE_SETTINGS";
+    field public static final String ACTION_BATTERY_SAVER_SETTINGS = "android.settings.BATTERY_SAVER_SETTINGS";
+    field public static final String ACTION_BIOMETRIC_ENROLL = "android.settings.BIOMETRIC_ENROLL";
+    field public static final String ACTION_BLUETOOTH_SETTINGS = "android.settings.BLUETOOTH_SETTINGS";
+    field public static final String ACTION_CAPTIONING_SETTINGS = "android.settings.CAPTIONING_SETTINGS";
+    field public static final String ACTION_CAST_SETTINGS = "android.settings.CAST_SETTINGS";
+    field public static final String ACTION_CHANNEL_NOTIFICATION_SETTINGS = "android.settings.CHANNEL_NOTIFICATION_SETTINGS";
+    field public static final String ACTION_CONDITION_PROVIDER_SETTINGS = "android.settings.ACTION_CONDITION_PROVIDER_SETTINGS";
+    field public static final String ACTION_DATA_ROAMING_SETTINGS = "android.settings.DATA_ROAMING_SETTINGS";
+    field public static final String ACTION_DATA_USAGE_SETTINGS = "android.settings.DATA_USAGE_SETTINGS";
+    field public static final String ACTION_DATE_SETTINGS = "android.settings.DATE_SETTINGS";
+    field public static final String ACTION_DEVICE_INFO_SETTINGS = "android.settings.DEVICE_INFO_SETTINGS";
+    field public static final String ACTION_DISPLAY_SETTINGS = "android.settings.DISPLAY_SETTINGS";
+    field public static final String ACTION_DREAM_SETTINGS = "android.settings.DREAM_SETTINGS";
+    field @Deprecated public static final String ACTION_FINGERPRINT_ENROLL = "android.settings.FINGERPRINT_ENROLL";
+    field public static final String ACTION_HARD_KEYBOARD_SETTINGS = "android.settings.HARD_KEYBOARD_SETTINGS";
+    field public static final String ACTION_HOME_SETTINGS = "android.settings.HOME_SETTINGS";
+    field public static final String ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS = "android.settings.IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS";
+    field public static final String ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS = "android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS";
+    field public static final String ACTION_INPUT_METHOD_SETTINGS = "android.settings.INPUT_METHOD_SETTINGS";
+    field public static final String ACTION_INPUT_METHOD_SUBTYPE_SETTINGS = "android.settings.INPUT_METHOD_SUBTYPE_SETTINGS";
+    field public static final String ACTION_INTERNAL_STORAGE_SETTINGS = "android.settings.INTERNAL_STORAGE_SETTINGS";
+    field public static final String ACTION_LOCALE_SETTINGS = "android.settings.LOCALE_SETTINGS";
+    field public static final String ACTION_LOCATION_SOURCE_SETTINGS = "android.settings.LOCATION_SOURCE_SETTINGS";
+    field public static final String ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS = "android.settings.MANAGE_ALL_APPLICATIONS_SETTINGS";
+    field public static final String ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION = "android.settings.MANAGE_ALL_FILES_ACCESS_PERMISSION";
+    field public static final String ACTION_MANAGE_APPLICATIONS_SETTINGS = "android.settings.MANAGE_APPLICATIONS_SETTINGS";
+    field public static final String ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION = "android.settings.MANAGE_APP_ALL_FILES_ACCESS_PERMISSION";
+    field public static final String ACTION_MANAGE_DEFAULT_APPS_SETTINGS = "android.settings.MANAGE_DEFAULT_APPS_SETTINGS";
+    field public static final String ACTION_MANAGE_OVERLAY_PERMISSION = "android.settings.action.MANAGE_OVERLAY_PERMISSION";
+    field public static final String ACTION_MANAGE_UNKNOWN_APP_SOURCES = "android.settings.MANAGE_UNKNOWN_APP_SOURCES";
+    field public static final String ACTION_MANAGE_WRITE_SETTINGS = "android.settings.action.MANAGE_WRITE_SETTINGS";
+    field public static final String ACTION_MEMORY_CARD_SETTINGS = "android.settings.MEMORY_CARD_SETTINGS";
+    field public static final String ACTION_NETWORK_OPERATOR_SETTINGS = "android.settings.NETWORK_OPERATOR_SETTINGS";
+    field public static final String ACTION_NFCSHARING_SETTINGS = "android.settings.NFCSHARING_SETTINGS";
+    field public static final String ACTION_NFC_PAYMENT_SETTINGS = "android.settings.NFC_PAYMENT_SETTINGS";
+    field public static final String ACTION_NFC_SETTINGS = "android.settings.NFC_SETTINGS";
+    field public static final String ACTION_NIGHT_DISPLAY_SETTINGS = "android.settings.NIGHT_DISPLAY_SETTINGS";
+    field public static final String ACTION_NOTIFICATION_ASSISTANT_SETTINGS = "android.settings.NOTIFICATION_ASSISTANT_SETTINGS";
+    field public static final String ACTION_NOTIFICATION_LISTENER_DETAIL_SETTINGS = "android.settings.NOTIFICATION_LISTENER_DETAIL_SETTINGS";
+    field public static final String ACTION_NOTIFICATION_LISTENER_SETTINGS = "android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS";
+    field public static final String ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS = "android.settings.NOTIFICATION_POLICY_ACCESS_SETTINGS";
+    field public static final String ACTION_PRINT_SETTINGS = "android.settings.ACTION_PRINT_SETTINGS";
+    field public static final String ACTION_PRIVACY_SETTINGS = "android.settings.PRIVACY_SETTINGS";
+    field public static final String ACTION_PROCESS_WIFI_EASY_CONNECT_URI = "android.settings.PROCESS_WIFI_EASY_CONNECT_URI";
+    field public static final String ACTION_QUICK_ACCESS_WALLET_SETTINGS = "android.settings.QUICK_ACCESS_WALLET_SETTINGS";
+    field public static final String ACTION_QUICK_LAUNCH_SETTINGS = "android.settings.QUICK_LAUNCH_SETTINGS";
+    field public static final String ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS = "android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS";
+    field public static final String ACTION_REQUEST_SET_AUTOFILL_SERVICE = "android.settings.REQUEST_SET_AUTOFILL_SERVICE";
+    field public static final String ACTION_SEARCH_SETTINGS = "android.search.action.SEARCH_SETTINGS";
+    field public static final String ACTION_SECURITY_SETTINGS = "android.settings.SECURITY_SETTINGS";
+    field public static final String ACTION_SETTINGS = "android.settings.SETTINGS";
+    field public static final String ACTION_SHOW_REGULATORY_INFO = "android.settings.SHOW_REGULATORY_INFO";
+    field public static final String ACTION_SHOW_WORK_POLICY_INFO = "android.settings.SHOW_WORK_POLICY_INFO";
+    field public static final String ACTION_SOUND_SETTINGS = "android.settings.SOUND_SETTINGS";
+    field @Deprecated public static final String ACTION_STORAGE_VOLUME_ACCESS_SETTINGS = "android.settings.STORAGE_VOLUME_ACCESS_SETTINGS";
+    field public static final String ACTION_SYNC_SETTINGS = "android.settings.SYNC_SETTINGS";
+    field public static final String ACTION_USAGE_ACCESS_SETTINGS = "android.settings.USAGE_ACCESS_SETTINGS";
+    field public static final String ACTION_USER_DICTIONARY_SETTINGS = "android.settings.USER_DICTIONARY_SETTINGS";
+    field public static final String ACTION_VOICE_CONTROL_AIRPLANE_MODE = "android.settings.VOICE_CONTROL_AIRPLANE_MODE";
+    field public static final String ACTION_VOICE_CONTROL_BATTERY_SAVER_MODE = "android.settings.VOICE_CONTROL_BATTERY_SAVER_MODE";
+    field public static final String ACTION_VOICE_CONTROL_DO_NOT_DISTURB_MODE = "android.settings.VOICE_CONTROL_DO_NOT_DISTURB_MODE";
+    field public static final String ACTION_VOICE_INPUT_SETTINGS = "android.settings.VOICE_INPUT_SETTINGS";
+    field public static final String ACTION_VPN_SETTINGS = "android.settings.VPN_SETTINGS";
+    field public static final String ACTION_VR_LISTENER_SETTINGS = "android.settings.VR_LISTENER_SETTINGS";
+    field public static final String ACTION_WEBVIEW_SETTINGS = "android.settings.WEBVIEW_SETTINGS";
+    field public static final String ACTION_WIFI_ADD_NETWORKS = "android.settings.WIFI_ADD_NETWORKS";
+    field public static final String ACTION_WIFI_IP_SETTINGS = "android.settings.WIFI_IP_SETTINGS";
+    field public static final String ACTION_WIFI_SETTINGS = "android.settings.WIFI_SETTINGS";
+    field public static final String ACTION_WIRELESS_SETTINGS = "android.settings.WIRELESS_SETTINGS";
+    field public static final String ACTION_ZEN_MODE_PRIORITY_SETTINGS = "android.settings.ZEN_MODE_PRIORITY_SETTINGS";
+    field public static final int ADD_WIFI_RESULT_ADD_OR_UPDATE_FAILED = 1; // 0x1
+    field public static final int ADD_WIFI_RESULT_ALREADY_EXISTS = 2; // 0x2
+    field public static final int ADD_WIFI_RESULT_SUCCESS = 0; // 0x0
+    field public static final String AUTHORITY = "settings";
+    field public static final String EXTRA_ACCOUNT_TYPES = "account_types";
+    field public static final String EXTRA_AIRPLANE_MODE_ENABLED = "airplane_mode_enabled";
+    field public static final String EXTRA_APP_PACKAGE = "android.provider.extra.APP_PACKAGE";
+    field public static final String EXTRA_AUTHORITIES = "authorities";
+    field public static final String EXTRA_BATTERY_SAVER_MODE_ENABLED = "android.settings.extra.battery_saver_mode_enabled";
+    field public static final String EXTRA_BIOMETRIC_AUTHENTICATORS_ALLOWED = "android.provider.extra.BIOMETRIC_AUTHENTICATORS_ALLOWED";
+    field public static final String EXTRA_CHANNEL_ID = "android.provider.extra.CHANNEL_ID";
+    field public static final String EXTRA_CONVERSATION_ID = "android.provider.extra.CONVERSATION_ID";
+    field public static final String EXTRA_DO_NOT_DISTURB_MODE_ENABLED = "android.settings.extra.do_not_disturb_mode_enabled";
+    field public static final String EXTRA_DO_NOT_DISTURB_MODE_MINUTES = "android.settings.extra.do_not_disturb_mode_minutes";
+    field public static final String EXTRA_EASY_CONNECT_ATTEMPTED_SSID = "android.provider.extra.EASY_CONNECT_ATTEMPTED_SSID";
+    field public static final String EXTRA_EASY_CONNECT_BAND_LIST = "android.provider.extra.EASY_CONNECT_BAND_LIST";
+    field public static final String EXTRA_EASY_CONNECT_CHANNEL_LIST = "android.provider.extra.EASY_CONNECT_CHANNEL_LIST";
+    field public static final String EXTRA_EASY_CONNECT_ERROR_CODE = "android.provider.extra.EASY_CONNECT_ERROR_CODE";
+    field public static final String EXTRA_INPUT_METHOD_ID = "input_method_id";
+    field public static final String EXTRA_NOTIFICATION_LISTENER_COMPONENT_NAME = "android.provider.extra.NOTIFICATION_LISTENER_COMPONENT_NAME";
+    field public static final String EXTRA_SUB_ID = "android.provider.extra.SUB_ID";
+    field public static final String EXTRA_WIFI_NETWORK_LIST = "android.provider.extra.WIFI_NETWORK_LIST";
+    field public static final String EXTRA_WIFI_NETWORK_RESULT_LIST = "android.provider.extra.WIFI_NETWORK_RESULT_LIST";
+    field public static final String INTENT_CATEGORY_USAGE_ACCESS_CONFIG = "android.intent.category.USAGE_ACCESS_CONFIG";
+    field public static final String METADATA_USAGE_ACCESS_REASON = "android.settings.metadata.USAGE_ACCESS_REASON";
+  }
+
+  public static final class Settings.Global extends android.provider.Settings.NameValueTable {
+    ctor public Settings.Global();
+    method public static float getFloat(android.content.ContentResolver, String, float);
+    method public static float getFloat(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
+    method public static int getInt(android.content.ContentResolver, String, int);
+    method public static int getInt(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
+    method public static long getLong(android.content.ContentResolver, String, long);
+    method public static long getLong(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
+    method public static String getString(android.content.ContentResolver, String);
+    method public static android.net.Uri getUriFor(String);
+    method public static boolean putFloat(android.content.ContentResolver, String, float);
+    method public static boolean putInt(android.content.ContentResolver, String, int);
+    method public static boolean putLong(android.content.ContentResolver, String, long);
+    method public static boolean putString(android.content.ContentResolver, String, String);
+    field public static final String ADB_ENABLED = "adb_enabled";
+    field public static final String AIRPLANE_MODE_ON = "airplane_mode_on";
+    field public static final String AIRPLANE_MODE_RADIOS = "airplane_mode_radios";
+    field public static final String ALWAYS_FINISH_ACTIVITIES = "always_finish_activities";
+    field public static final String ANIMATOR_DURATION_SCALE = "animator_duration_scale";
+    field public static final String APPLY_RAMPING_RINGER = "apply_ramping_ringer";
+    field public static final String AUTO_TIME = "auto_time";
+    field public static final String AUTO_TIME_ZONE = "auto_time_zone";
+    field public static final String BLUETOOTH_ON = "bluetooth_on";
+    field public static final String BOOT_COUNT = "boot_count";
+    field public static final String CONTACT_METADATA_SYNC_ENABLED = "contact_metadata_sync_enabled";
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String DATA_ROAMING = "data_roaming";
+    field public static final String DEBUG_APP = "debug_app";
+    field public static final String DEVELOPMENT_SETTINGS_ENABLED = "development_settings_enabled";
+    field public static final String DEVICE_NAME = "device_name";
+    field public static final String DEVICE_PROVISIONED = "device_provisioned";
+    field public static final String HTTP_PROXY = "http_proxy";
+    field @Deprecated public static final String INSTALL_NON_MARKET_APPS = "install_non_market_apps";
+    field public static final String MODE_RINGER = "mode_ringer";
+    field public static final String NETWORK_PREFERENCE = "network_preference";
+    field public static final String RADIO_BLUETOOTH = "bluetooth";
+    field public static final String RADIO_CELL = "cell";
+    field public static final String RADIO_NFC = "nfc";
+    field public static final String RADIO_WIFI = "wifi";
+    field @Deprecated public static final String SHOW_PROCESSES = "show_processes";
+    field public static final String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
+    field public static final String TRANSITION_ANIMATION_SCALE = "transition_animation_scale";
+    field public static final String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
+    field public static final String USE_GOOGLE_MAIL = "use_google_mail";
+    field public static final String WAIT_FOR_DEBUGGER = "wait_for_debugger";
+    field public static final String WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN = "wifi_device_owner_configs_lockdown";
+    field public static final String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count";
+    field public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = "wifi_mobile_data_transition_wakelock_timeout_ms";
+    field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = "wifi_networks_available_notification_on";
+    field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = "wifi_networks_available_repeat_delay";
+    field @Deprecated public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept";
+    field public static final String WIFI_ON = "wifi_on";
+    field @Deprecated public static final String WIFI_SLEEP_POLICY = "wifi_sleep_policy";
+    field @Deprecated public static final int WIFI_SLEEP_POLICY_DEFAULT = 0; // 0x0
+    field @Deprecated public static final int WIFI_SLEEP_POLICY_NEVER = 2; // 0x2
+    field @Deprecated public static final int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED = 1; // 0x1
+    field public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on";
+    field public static final String WINDOW_ANIMATION_SCALE = "window_animation_scale";
+  }
+
+  public static class Settings.NameValueTable implements android.provider.BaseColumns {
+    ctor public Settings.NameValueTable();
+    method public static android.net.Uri getUriFor(android.net.Uri, String);
+    method protected static boolean putString(android.content.ContentResolver, android.net.Uri, String, String);
+    field public static final String NAME = "name";
+    field public static final String VALUE = "value";
+  }
+
+  public static final class Settings.Panel {
+    field public static final String ACTION_INTERNET_CONNECTIVITY = "android.settings.panel.action.INTERNET_CONNECTIVITY";
+    field public static final String ACTION_NFC = "android.settings.panel.action.NFC";
+    field public static final String ACTION_VOLUME = "android.settings.panel.action.VOLUME";
+    field public static final String ACTION_WIFI = "android.settings.panel.action.WIFI";
+  }
+
+  public static final class Settings.Secure extends android.provider.Settings.NameValueTable {
+    ctor public Settings.Secure();
+    method public static float getFloat(android.content.ContentResolver, String, float);
+    method public static float getFloat(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
+    method public static int getInt(android.content.ContentResolver, String, int);
+    method public static int getInt(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
+    method public static long getLong(android.content.ContentResolver, String, long);
+    method public static long getLong(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
+    method public static String getString(android.content.ContentResolver, String);
+    method public static android.net.Uri getUriFor(String);
+    method @Deprecated public static boolean isLocationProviderEnabled(android.content.ContentResolver, String);
+    method public static boolean putFloat(android.content.ContentResolver, String, float);
+    method public static boolean putInt(android.content.ContentResolver, String, int);
+    method public static boolean putLong(android.content.ContentResolver, String, long);
+    method public static boolean putString(android.content.ContentResolver, String, String);
+    method @Deprecated public static void setLocationProviderEnabled(android.content.ContentResolver, String, boolean);
+    field public static final String ACCESSIBILITY_DISPLAY_INVERSION_ENABLED = "accessibility_display_inversion_enabled";
+    field public static final String ACCESSIBILITY_ENABLED = "accessibility_enabled";
+    field @Deprecated public static final String ACCESSIBILITY_SPEAK_PASSWORD = "speak_password";
+    field @Deprecated public static final String ADB_ENABLED = "adb_enabled";
+    field public static final String ALLOWED_GEOLOCATION_ORIGINS = "allowed_geolocation_origins";
+    field @Deprecated public static final String ALLOW_MOCK_LOCATION = "mock_location";
+    field public static final String ANDROID_ID = "android_id";
+    field @Deprecated public static final String BACKGROUND_DATA = "background_data";
+    field @Deprecated public static final String BLUETOOTH_ON = "bluetooth_on";
+    field public static final android.net.Uri CONTENT_URI;
+    field @Deprecated public static final String DATA_ROAMING = "data_roaming";
+    field public static final String DEFAULT_INPUT_METHOD = "default_input_method";
+    field @Deprecated public static final String DEVELOPMENT_SETTINGS_ENABLED = "development_settings_enabled";
+    field @Deprecated public static final String DEVICE_PROVISIONED = "device_provisioned";
+    field public static final String ENABLED_ACCESSIBILITY_SERVICES = "enabled_accessibility_services";
+    field public static final String ENABLED_INPUT_METHODS = "enabled_input_methods";
+    field @Deprecated public static final String HTTP_PROXY = "http_proxy";
+    field public static final String INPUT_METHOD_SELECTOR_VISIBILITY = "input_method_selector_visibility";
+    field @Deprecated public static final String INSTALL_NON_MARKET_APPS = "install_non_market_apps";
+    field @Deprecated public static final String LOCATION_MODE = "location_mode";
+    field @Deprecated public static final int LOCATION_MODE_BATTERY_SAVING = 2; // 0x2
+    field @Deprecated public static final int LOCATION_MODE_HIGH_ACCURACY = 3; // 0x3
+    field public static final int LOCATION_MODE_OFF = 0; // 0x0
+    field @Deprecated public static final int LOCATION_MODE_SENSORS_ONLY = 1; // 0x1
+    field @Deprecated public static final String LOCATION_PROVIDERS_ALLOWED = "location_providers_allowed";
+    field @Deprecated public static final String LOCK_PATTERN_ENABLED = "lock_pattern_autolock";
+    field @Deprecated public static final String LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED = "lock_pattern_tactile_feedback_enabled";
+    field @Deprecated public static final String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern";
+    field @Deprecated public static final String LOGGING_ID = "logging_id";
+    field @Deprecated public static final String NETWORK_PREFERENCE = "network_preference";
+    field public static final String PARENTAL_CONTROL_ENABLED = "parental_control_enabled";
+    field public static final String PARENTAL_CONTROL_LAST_UPDATE = "parental_control_last_update";
+    field public static final String PARENTAL_CONTROL_REDIRECT_URL = "parental_control_redirect_url";
+    field public static final String RTT_CALLING_MODE = "rtt_calling_mode";
+    field public static final String SECURE_FRP_MODE = "secure_frp_mode";
+    field public static final String SELECTED_INPUT_METHOD_SUBTYPE = "selected_input_method_subtype";
+    field public static final String SETTINGS_CLASSNAME = "settings_classname";
+    field public static final String SKIP_FIRST_USE_HINTS = "skip_first_use_hints";
+    field public static final String TOUCH_EXPLORATION_ENABLED = "touch_exploration_enabled";
+    field @Deprecated public static final String TTS_DEFAULT_COUNTRY = "tts_default_country";
+    field @Deprecated public static final String TTS_DEFAULT_LANG = "tts_default_lang";
+    field public static final String TTS_DEFAULT_PITCH = "tts_default_pitch";
+    field public static final String TTS_DEFAULT_RATE = "tts_default_rate";
+    field public static final String TTS_DEFAULT_SYNTH = "tts_default_synth";
+    field @Deprecated public static final String TTS_DEFAULT_VARIANT = "tts_default_variant";
+    field public static final String TTS_ENABLED_PLUGINS = "tts_enabled_plugins";
+    field @Deprecated public static final String TTS_USE_DEFAULTS = "tts_use_defaults";
+    field @Deprecated public static final String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
+    field @Deprecated public static final String USE_GOOGLE_MAIL = "use_google_mail";
+    field @Deprecated public static final String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count";
+    field @Deprecated public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = "wifi_mobile_data_transition_wakelock_timeout_ms";
+    field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = "wifi_networks_available_notification_on";
+    field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = "wifi_networks_available_repeat_delay";
+    field @Deprecated public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept";
+    field @Deprecated public static final String WIFI_ON = "wifi_on";
+    field @Deprecated public static final String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE = "wifi_watchdog_acceptable_packet_loss_percentage";
+    field @Deprecated public static final String WIFI_WATCHDOG_AP_COUNT = "wifi_watchdog_ap_count";
+    field @Deprecated public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS = "wifi_watchdog_background_check_delay_ms";
+    field @Deprecated public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED = "wifi_watchdog_background_check_enabled";
+    field @Deprecated public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS = "wifi_watchdog_background_check_timeout_ms";
+    field @Deprecated public static final String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT = "wifi_watchdog_initial_ignored_ping_count";
+    field @Deprecated public static final String WIFI_WATCHDOG_MAX_AP_CHECKS = "wifi_watchdog_max_ap_checks";
+    field @Deprecated public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on";
+    field @Deprecated public static final String WIFI_WATCHDOG_PING_COUNT = "wifi_watchdog_ping_count";
+    field @Deprecated public static final String WIFI_WATCHDOG_PING_DELAY_MS = "wifi_watchdog_ping_delay_ms";
+    field @Deprecated public static final String WIFI_WATCHDOG_PING_TIMEOUT_MS = "wifi_watchdog_ping_timeout_ms";
+    field @Deprecated public static final String WIFI_WATCHDOG_WATCH_LIST = "wifi_watchdog_watch_list";
+  }
+
+  public static class Settings.SettingNotFoundException extends android.util.AndroidException {
+    ctor public Settings.SettingNotFoundException(String);
+  }
+
+  public static final class Settings.System extends android.provider.Settings.NameValueTable {
+    ctor public Settings.System();
+    method public static boolean canWrite(android.content.Context);
+    method public static void getConfiguration(android.content.ContentResolver, android.content.res.Configuration);
+    method public static float getFloat(android.content.ContentResolver, String, float);
+    method public static float getFloat(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
+    method public static int getInt(android.content.ContentResolver, String, int);
+    method public static int getInt(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
+    method public static long getLong(android.content.ContentResolver, String, long);
+    method public static long getLong(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
+    method @Deprecated public static boolean getShowGTalkServiceStatus(android.content.ContentResolver);
+    method public static String getString(android.content.ContentResolver, String);
+    method public static android.net.Uri getUriFor(String);
+    method public static boolean putConfiguration(android.content.ContentResolver, android.content.res.Configuration);
+    method public static boolean putFloat(android.content.ContentResolver, String, float);
+    method public static boolean putInt(android.content.ContentResolver, String, int);
+    method public static boolean putLong(android.content.ContentResolver, String, long);
+    method public static boolean putString(android.content.ContentResolver, String, String);
+    method @Deprecated public static void setShowGTalkServiceStatus(android.content.ContentResolver, boolean);
+    field public static final String ACCELEROMETER_ROTATION = "accelerometer_rotation";
+    field @Deprecated public static final String ADB_ENABLED = "adb_enabled";
+    field @Deprecated public static final String AIRPLANE_MODE_ON = "airplane_mode_on";
+    field @Deprecated public static final String AIRPLANE_MODE_RADIOS = "airplane_mode_radios";
+    field public static final String ALARM_ALERT = "alarm_alert";
+    field @Deprecated public static final String ALWAYS_FINISH_ACTIVITIES = "always_finish_activities";
+    field @Deprecated public static final String ANDROID_ID = "android_id";
+    field @Deprecated public static final String ANIMATOR_DURATION_SCALE = "animator_duration_scale";
+    field @Deprecated public static final String AUTO_TIME = "auto_time";
+    field @Deprecated public static final String AUTO_TIME_ZONE = "auto_time_zone";
+    field public static final String BLUETOOTH_DISCOVERABILITY = "bluetooth_discoverability";
+    field public static final String BLUETOOTH_DISCOVERABILITY_TIMEOUT = "bluetooth_discoverability_timeout";
+    field @Deprecated public static final String BLUETOOTH_ON = "bluetooth_on";
+    field public static final android.net.Uri CONTENT_URI;
+    field @Deprecated public static final String DATA_ROAMING = "data_roaming";
+    field public static final String DATE_FORMAT = "date_format";
+    field @Deprecated public static final String DEBUG_APP = "debug_app";
+    field public static final android.net.Uri DEFAULT_ALARM_ALERT_URI;
+    field public static final android.net.Uri DEFAULT_NOTIFICATION_URI;
+    field public static final android.net.Uri DEFAULT_RINGTONE_URI;
+    field @Deprecated public static final String DEVICE_PROVISIONED = "device_provisioned";
+    field @Deprecated public static final String DIM_SCREEN = "dim_screen";
+    field public static final String DTMF_TONE_TYPE_WHEN_DIALING = "dtmf_tone_type";
+    field public static final String DTMF_TONE_WHEN_DIALING = "dtmf_tone";
+    field public static final String END_BUTTON_BEHAVIOR = "end_button_behavior";
+    field public static final String FONT_SCALE = "font_scale";
+    field public static final String HAPTIC_FEEDBACK_ENABLED = "haptic_feedback_enabled";
+    field @Deprecated public static final String HTTP_PROXY = "http_proxy";
+    field @Deprecated public static final String INSTALL_NON_MARKET_APPS = "install_non_market_apps";
+    field @Deprecated public static final String LOCATION_PROVIDERS_ALLOWED = "location_providers_allowed";
+    field @Deprecated public static final String LOCK_PATTERN_ENABLED = "lock_pattern_autolock";
+    field @Deprecated public static final String LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED = "lock_pattern_tactile_feedback_enabled";
+    field @Deprecated public static final String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern";
+    field @Deprecated public static final String LOGGING_ID = "logging_id";
+    field @Deprecated public static final String MODE_RINGER = "mode_ringer";
+    field public static final String MODE_RINGER_STREAMS_AFFECTED = "mode_ringer_streams_affected";
+    field public static final String MUTE_STREAMS_AFFECTED = "mute_streams_affected";
+    field @Deprecated public static final String NETWORK_PREFERENCE = "network_preference";
+    field @Deprecated public static final String NEXT_ALARM_FORMATTED = "next_alarm_formatted";
+    field public static final String NOTIFICATION_SOUND = "notification_sound";
+    field @Deprecated public static final String PARENTAL_CONTROL_ENABLED = "parental_control_enabled";
+    field @Deprecated public static final String PARENTAL_CONTROL_LAST_UPDATE = "parental_control_last_update";
+    field @Deprecated public static final String PARENTAL_CONTROL_REDIRECT_URL = "parental_control_redirect_url";
+    field @Deprecated public static final String RADIO_BLUETOOTH = "bluetooth";
+    field @Deprecated public static final String RADIO_CELL = "cell";
+    field @Deprecated public static final String RADIO_NFC = "nfc";
+    field @Deprecated public static final String RADIO_WIFI = "wifi";
+    field public static final String RINGTONE = "ringtone";
+    field public static final String SCREEN_BRIGHTNESS = "screen_brightness";
+    field public static final String SCREEN_BRIGHTNESS_MODE = "screen_brightness_mode";
+    field public static final int SCREEN_BRIGHTNESS_MODE_AUTOMATIC = 1; // 0x1
+    field public static final int SCREEN_BRIGHTNESS_MODE_MANUAL = 0; // 0x0
+    field public static final String SCREEN_OFF_TIMEOUT = "screen_off_timeout";
+    field @Deprecated public static final String SETTINGS_CLASSNAME = "settings_classname";
+    field public static final String SETUP_WIZARD_HAS_RUN = "setup_wizard_has_run";
+    field public static final String SHOW_GTALK_SERVICE_STATUS = "SHOW_GTALK_SERVICE_STATUS";
+    field @Deprecated public static final String SHOW_PROCESSES = "show_processes";
+    field @Deprecated public static final String SHOW_WEB_SUGGESTIONS = "show_web_suggestions";
+    field public static final String SOUND_EFFECTS_ENABLED = "sound_effects_enabled";
+    field @Deprecated public static final String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
+    field public static final String TEXT_AUTO_CAPS = "auto_caps";
+    field public static final String TEXT_AUTO_PUNCTUATE = "auto_punctuate";
+    field public static final String TEXT_AUTO_REPLACE = "auto_replace";
+    field public static final String TEXT_SHOW_PASSWORD = "show_password";
+    field public static final String TIME_12_24 = "time_12_24";
+    field @Deprecated public static final String TRANSITION_ANIMATION_SCALE = "transition_animation_scale";
+    field @Deprecated public static final String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
+    field public static final String USER_ROTATION = "user_rotation";
+    field @Deprecated public static final String USE_GOOGLE_MAIL = "use_google_mail";
+    field public static final String VIBRATE_ON = "vibrate_on";
+    field public static final String VIBRATE_WHEN_RINGING = "vibrate_when_ringing";
+    field @Deprecated public static final String WAIT_FOR_DEBUGGER = "wait_for_debugger";
+    field @Deprecated public static final String WALLPAPER_ACTIVITY = "wallpaper_activity";
+    field @Deprecated public static final String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count";
+    field @Deprecated public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = "wifi_mobile_data_transition_wakelock_timeout_ms";
+    field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = "wifi_networks_available_notification_on";
+    field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = "wifi_networks_available_repeat_delay";
+    field @Deprecated public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept";
+    field @Deprecated public static final String WIFI_ON = "wifi_on";
+    field @Deprecated public static final String WIFI_SLEEP_POLICY = "wifi_sleep_policy";
+    field @Deprecated public static final int WIFI_SLEEP_POLICY_DEFAULT = 0; // 0x0
+    field @Deprecated public static final int WIFI_SLEEP_POLICY_NEVER = 2; // 0x2
+    field @Deprecated public static final int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED = 1; // 0x1
+    field @Deprecated public static final String WIFI_STATIC_DNS1 = "wifi_static_dns1";
+    field @Deprecated public static final String WIFI_STATIC_DNS2 = "wifi_static_dns2";
+    field @Deprecated public static final String WIFI_STATIC_GATEWAY = "wifi_static_gateway";
+    field @Deprecated public static final String WIFI_STATIC_IP = "wifi_static_ip";
+    field @Deprecated public static final String WIFI_STATIC_NETMASK = "wifi_static_netmask";
+    field @Deprecated public static final String WIFI_USE_STATIC_IP = "wifi_use_static_ip";
+    field @Deprecated public static final String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE = "wifi_watchdog_acceptable_packet_loss_percentage";
+    field @Deprecated public static final String WIFI_WATCHDOG_AP_COUNT = "wifi_watchdog_ap_count";
+    field @Deprecated public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS = "wifi_watchdog_background_check_delay_ms";
+    field @Deprecated public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED = "wifi_watchdog_background_check_enabled";
+    field @Deprecated public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS = "wifi_watchdog_background_check_timeout_ms";
+    field @Deprecated public static final String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT = "wifi_watchdog_initial_ignored_ping_count";
+    field @Deprecated public static final String WIFI_WATCHDOG_MAX_AP_CHECKS = "wifi_watchdog_max_ap_checks";
+    field @Deprecated public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on";
+    field @Deprecated public static final String WIFI_WATCHDOG_PING_COUNT = "wifi_watchdog_ping_count";
+    field @Deprecated public static final String WIFI_WATCHDOG_PING_DELAY_MS = "wifi_watchdog_ping_delay_ms";
+    field @Deprecated public static final String WIFI_WATCHDOG_PING_TIMEOUT_MS = "wifi_watchdog_ping_timeout_ms";
+    field @Deprecated public static final String WINDOW_ANIMATION_SCALE = "window_animation_scale";
+  }
+
+  public class SettingsSlicesContract {
+    field public static final String AUTHORITY = "android.settings.slices";
+    field public static final android.net.Uri BASE_URI;
+    field public static final String KEY_AIRPLANE_MODE = "airplane_mode";
+    field public static final String KEY_BATTERY_SAVER = "battery_saver";
+    field public static final String KEY_BLUETOOTH = "bluetooth";
+    field public static final String KEY_LOCATION = "location";
+    field public static final String KEY_WIFI = "wifi";
+    field public static final String PATH_SETTING_ACTION = "action";
+    field public static final String PATH_SETTING_INTENT = "intent";
+  }
+
+  public class SyncStateContract {
+    ctor public SyncStateContract();
+  }
+
+  public static interface SyncStateContract.Columns extends android.provider.BaseColumns {
+    field public static final String ACCOUNT_NAME = "account_name";
+    field public static final String ACCOUNT_TYPE = "account_type";
+    field public static final String DATA = "data";
+  }
+
+  public static class SyncStateContract.Constants implements android.provider.SyncStateContract.Columns {
+    ctor public SyncStateContract.Constants();
+    field public static final String CONTENT_DIRECTORY = "syncstate";
+  }
+
+  public static final class SyncStateContract.Helpers {
+    ctor public SyncStateContract.Helpers();
+    method public static byte[] get(android.content.ContentProviderClient, android.net.Uri, android.accounts.Account) throws android.os.RemoteException;
+    method public static android.util.Pair<android.net.Uri,byte[]> getWithUri(android.content.ContentProviderClient, android.net.Uri, android.accounts.Account) throws android.os.RemoteException;
+    method public static android.net.Uri insert(android.content.ContentProviderClient, android.net.Uri, android.accounts.Account, byte[]) throws android.os.RemoteException;
+    method public static android.content.ContentProviderOperation newSetOperation(android.net.Uri, android.accounts.Account, byte[]);
+    method public static android.content.ContentProviderOperation newUpdateOperation(android.net.Uri, byte[]);
+    method public static void set(android.content.ContentProviderClient, android.net.Uri, android.accounts.Account, byte[]) throws android.os.RemoteException;
+    method public static void update(android.content.ContentProviderClient, android.net.Uri, byte[]) throws android.os.RemoteException;
+  }
+
+  public final class Telephony {
+  }
+
+  public static interface Telephony.BaseMmsColumns extends android.provider.BaseColumns {
+    field public static final String CONTENT_CLASS = "ct_cls";
+    field public static final String CONTENT_LOCATION = "ct_l";
+    field public static final String CONTENT_TYPE = "ct_t";
+    field public static final String CREATOR = "creator";
+    field public static final String DATE = "date";
+    field public static final String DATE_SENT = "date_sent";
+    field public static final String DELIVERY_REPORT = "d_rpt";
+    field public static final String DELIVERY_TIME = "d_tm";
+    field public static final String EXPIRY = "exp";
+    field public static final String LOCKED = "locked";
+    field public static final String MESSAGE_BOX = "msg_box";
+    field public static final int MESSAGE_BOX_ALL = 0; // 0x0
+    field public static final int MESSAGE_BOX_DRAFTS = 3; // 0x3
+    field public static final int MESSAGE_BOX_FAILED = 5; // 0x5
+    field public static final int MESSAGE_BOX_INBOX = 1; // 0x1
+    field public static final int MESSAGE_BOX_OUTBOX = 4; // 0x4
+    field public static final int MESSAGE_BOX_SENT = 2; // 0x2
+    field public static final String MESSAGE_CLASS = "m_cls";
+    field public static final String MESSAGE_ID = "m_id";
+    field public static final String MESSAGE_SIZE = "m_size";
+    field public static final String MESSAGE_TYPE = "m_type";
+    field public static final String MMS_VERSION = "v";
+    field public static final String PRIORITY = "pri";
+    field public static final String READ = "read";
+    field public static final String READ_REPORT = "rr";
+    field public static final String READ_STATUS = "read_status";
+    field public static final String REPORT_ALLOWED = "rpt_a";
+    field public static final String RESPONSE_STATUS = "resp_st";
+    field public static final String RESPONSE_TEXT = "resp_txt";
+    field public static final String RETRIEVE_STATUS = "retr_st";
+    field public static final String RETRIEVE_TEXT = "retr_txt";
+    field public static final String RETRIEVE_TEXT_CHARSET = "retr_txt_cs";
+    field public static final String SEEN = "seen";
+    field public static final String STATUS = "st";
+    field public static final String SUBJECT = "sub";
+    field public static final String SUBJECT_CHARSET = "sub_cs";
+    field public static final String SUBSCRIPTION_ID = "sub_id";
+    field public static final String TEXT_ONLY = "text_only";
+    field public static final String THREAD_ID = "thread_id";
+    field public static final String TRANSACTION_ID = "tr_id";
+  }
+
+  public static interface Telephony.CanonicalAddressesColumns extends android.provider.BaseColumns {
+    field public static final String ADDRESS = "address";
+  }
+
+  public static final class Telephony.CarrierId implements android.provider.BaseColumns {
+    method @NonNull public static android.net.Uri getSpecificCarrierIdUriForSubscriptionId(int);
+    method public static android.net.Uri getUriForSubscriptionId(int);
+    field public static final String CARRIER_ID = "carrier_id";
+    field public static final String CARRIER_NAME = "carrier_name";
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String SPECIFIC_CARRIER_ID = "specific_carrier_id";
+    field public static final String SPECIFIC_CARRIER_ID_NAME = "specific_carrier_id_name";
+  }
+
+  public static final class Telephony.Carriers implements android.provider.BaseColumns {
+    field public static final String APN = "apn";
+    field public static final String AUTH_TYPE = "authtype";
+    field @Deprecated public static final String BEARER = "bearer";
+    field public static final String CARRIER_ENABLED = "carrier_enabled";
+    field public static final String CARRIER_ID = "carrier_id";
+    field @NonNull public static final android.net.Uri CONTENT_URI;
+    field public static final String CURRENT = "current";
+    field public static final String DEFAULT_SORT_ORDER = "name ASC";
+    field @Deprecated public static final String MCC = "mcc";
+    field public static final String MMSC = "mmsc";
+    field public static final String MMSPORT = "mmsport";
+    field public static final String MMSPROXY = "mmsproxy";
+    field @Deprecated public static final String MNC = "mnc";
+    field @Deprecated public static final String MVNO_MATCH_DATA = "mvno_match_data";
+    field @Deprecated public static final String MVNO_TYPE = "mvno_type";
+    field public static final String NAME = "name";
+    field public static final String NETWORK_TYPE_BITMASK = "network_type_bitmask";
+    field @Deprecated public static final String NUMERIC = "numeric";
+    field public static final String PASSWORD = "password";
+    field public static final String PORT = "port";
+    field public static final String PROTOCOL = "protocol";
+    field public static final String PROXY = "proxy";
+    field public static final String ROAMING_PROTOCOL = "roaming_protocol";
+    field public static final String SERVER = "server";
+    field @NonNull public static final android.net.Uri SIM_APN_URI;
+    field public static final String SUBSCRIPTION_ID = "sub_id";
+    field public static final String TYPE = "type";
+    field public static final String USER = "user";
+  }
+
+  public static final class Telephony.Mms implements android.provider.Telephony.BaseMmsColumns {
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String DEFAULT_SORT_ORDER = "date DESC";
+    field public static final android.net.Uri REPORT_REQUEST_URI;
+    field public static final android.net.Uri REPORT_STATUS_URI;
+  }
+
+  public static final class Telephony.Mms.Addr implements android.provider.BaseColumns {
+    method @NonNull public static android.net.Uri getAddrUriForMessage(@NonNull String);
+    field public static final String ADDRESS = "address";
+    field public static final String CHARSET = "charset";
+    field public static final String CONTACT_ID = "contact_id";
+    field public static final String MSG_ID = "msg_id";
+    field public static final String TYPE = "type";
+  }
+
+  public static final class Telephony.Mms.Draft implements android.provider.Telephony.BaseMmsColumns {
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String DEFAULT_SORT_ORDER = "date DESC";
+  }
+
+  public static final class Telephony.Mms.Inbox implements android.provider.Telephony.BaseMmsColumns {
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String DEFAULT_SORT_ORDER = "date DESC";
+  }
+
+  public static final class Telephony.Mms.Intents {
+    field public static final String CONTENT_CHANGED_ACTION = "android.intent.action.CONTENT_CHANGED";
+    field public static final String DELETED_CONTENTS = "deleted_contents";
+  }
+
+  public static final class Telephony.Mms.Outbox implements android.provider.Telephony.BaseMmsColumns {
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String DEFAULT_SORT_ORDER = "date DESC";
+  }
+
+  public static final class Telephony.Mms.Part implements android.provider.BaseColumns {
+    method @NonNull public static android.net.Uri getPartUriForMessage(@NonNull String);
+    field public static final String CHARSET = "chset";
+    field public static final String CONTENT_DISPOSITION = "cd";
+    field public static final String CONTENT_ID = "cid";
+    field public static final String CONTENT_LOCATION = "cl";
+    field public static final String CONTENT_TYPE = "ct";
+    field @NonNull public static final android.net.Uri CONTENT_URI;
+    field public static final String CT_START = "ctt_s";
+    field public static final String CT_TYPE = "ctt_t";
+    field public static final String FILENAME = "fn";
+    field public static final String MSG_ID = "mid";
+    field public static final String NAME = "name";
+    field public static final String SEQ = "seq";
+    field public static final String TEXT = "text";
+    field public static final String _DATA = "_data";
+  }
+
+  public static final class Telephony.Mms.Rate {
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String SENT_TIME = "sent_time";
+  }
+
+  public static final class Telephony.Mms.Sent implements android.provider.Telephony.BaseMmsColumns {
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String DEFAULT_SORT_ORDER = "date DESC";
+  }
+
+  public static final class Telephony.MmsSms implements android.provider.BaseColumns {
+    field public static final android.net.Uri CONTENT_CONVERSATIONS_URI;
+    field public static final android.net.Uri CONTENT_DRAFT_URI;
+    field public static final android.net.Uri CONTENT_FILTER_BYPHONE_URI;
+    field public static final android.net.Uri CONTENT_LOCKED_URI;
+    field public static final android.net.Uri CONTENT_UNDELIVERED_URI;
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final int ERR_TYPE_GENERIC = 1; // 0x1
+    field public static final int ERR_TYPE_GENERIC_PERMANENT = 10; // 0xa
+    field public static final int ERR_TYPE_MMS_PROTO_PERMANENT = 12; // 0xc
+    field public static final int ERR_TYPE_MMS_PROTO_TRANSIENT = 3; // 0x3
+    field public static final int ERR_TYPE_SMS_PROTO_PERMANENT = 11; // 0xb
+    field public static final int ERR_TYPE_SMS_PROTO_TRANSIENT = 2; // 0x2
+    field public static final int ERR_TYPE_TRANSPORT_FAILURE = 4; // 0x4
+    field public static final int MMS_PROTO = 1; // 0x1
+    field public static final int NO_ERROR = 0; // 0x0
+    field public static final android.net.Uri SEARCH_URI;
+    field public static final int SMS_PROTO = 0; // 0x0
+    field public static final String TYPE_DISCRIMINATOR_COLUMN = "transport_type";
+  }
+
+  public static final class Telephony.MmsSms.PendingMessages implements android.provider.BaseColumns {
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String DUE_TIME = "due_time";
+    field public static final String ERROR_CODE = "err_code";
+    field public static final String ERROR_TYPE = "err_type";
+    field public static final String LAST_TRY = "last_try";
+    field public static final String MSG_ID = "msg_id";
+    field public static final String MSG_TYPE = "msg_type";
+    field public static final String PROTO_TYPE = "proto_type";
+    field public static final String RETRY_INDEX = "retry_index";
+    field public static final String SUBSCRIPTION_ID = "pending_sub_id";
+  }
+
+  public static final class Telephony.ServiceStateTable {
+    method public static android.net.Uri getUriForSubscriptionId(int);
+    method public static android.net.Uri getUriForSubscriptionIdAndField(int, String);
+    field public static final String AUTHORITY = "service-state";
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String IS_MANUAL_NETWORK_SELECTION = "is_manual_network_selection";
+    field public static final String VOICE_OPERATOR_NUMERIC = "voice_operator_numeric";
+    field public static final String VOICE_REG_STATE = "voice_reg_state";
+  }
+
+  public static final class Telephony.Sms implements android.provider.BaseColumns android.provider.Telephony.TextBasedSmsColumns {
+    method public static String getDefaultSmsPackage(android.content.Context);
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String DEFAULT_SORT_ORDER = "date DESC";
+  }
+
+  public static final class Telephony.Sms.Conversations implements android.provider.BaseColumns android.provider.Telephony.TextBasedSmsColumns {
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String DEFAULT_SORT_ORDER = "date DESC";
+    field public static final String MESSAGE_COUNT = "msg_count";
+    field public static final String SNIPPET = "snippet";
+  }
+
+  public static final class Telephony.Sms.Draft implements android.provider.BaseColumns android.provider.Telephony.TextBasedSmsColumns {
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String DEFAULT_SORT_ORDER = "date DESC";
+  }
+
+  public static final class Telephony.Sms.Inbox implements android.provider.BaseColumns android.provider.Telephony.TextBasedSmsColumns {
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String DEFAULT_SORT_ORDER = "date DESC";
+  }
+
+  public static final class Telephony.Sms.Intents {
+    method public static android.telephony.SmsMessage[] getMessagesFromIntent(android.content.Intent);
+    field public static final String ACTION_CHANGE_DEFAULT = "android.provider.Telephony.ACTION_CHANGE_DEFAULT";
+    field public static final String ACTION_DEFAULT_SMS_PACKAGE_CHANGED = "android.provider.action.DEFAULT_SMS_PACKAGE_CHANGED";
+    field public static final String ACTION_EXTERNAL_PROVIDER_CHANGE = "android.provider.action.EXTERNAL_PROVIDER_CHANGE";
+    field public static final String DATA_SMS_RECEIVED_ACTION = "android.intent.action.DATA_SMS_RECEIVED";
+    field public static final String EXTRA_IS_DEFAULT_SMS_APP = "android.provider.extra.IS_DEFAULT_SMS_APP";
+    field public static final String EXTRA_PACKAGE_NAME = "package";
+    field public static final int RESULT_SMS_DATABASE_ERROR = 10; // 0xa
+    field public static final int RESULT_SMS_DISPATCH_FAILURE = 6; // 0x6
+    field public static final int RESULT_SMS_DUPLICATED = 5; // 0x5
+    field public static final int RESULT_SMS_GENERIC_ERROR = 2; // 0x2
+    field public static final int RESULT_SMS_HANDLED = 1; // 0x1
+    field public static final int RESULT_SMS_INVALID_URI = 11; // 0xb
+    field public static final int RESULT_SMS_NULL_MESSAGE = 8; // 0x8
+    field public static final int RESULT_SMS_NULL_PDU = 7; // 0x7
+    field public static final int RESULT_SMS_OUT_OF_MEMORY = 3; // 0x3
+    field public static final int RESULT_SMS_RECEIVED_WHILE_ENCRYPTED = 9; // 0x9
+    field public static final int RESULT_SMS_UNSUPPORTED = 4; // 0x4
+    field @Deprecated public static final String SECRET_CODE_ACTION = "android.provider.Telephony.SECRET_CODE";
+    field public static final String SIM_FULL_ACTION = "android.provider.Telephony.SIM_FULL";
+    field public static final String SMS_CB_RECEIVED_ACTION = "android.provider.Telephony.SMS_CB_RECEIVED";
+    field public static final String SMS_DELIVER_ACTION = "android.provider.Telephony.SMS_DELIVER";
+    field public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
+    field public static final String SMS_REJECTED_ACTION = "android.provider.Telephony.SMS_REJECTED";
+    field public static final String SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED_ACTION = "android.provider.Telephony.SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED";
+    field public static final String WAP_PUSH_DELIVER_ACTION = "android.provider.Telephony.WAP_PUSH_DELIVER";
+    field public static final String WAP_PUSH_RECEIVED_ACTION = "android.provider.Telephony.WAP_PUSH_RECEIVED";
+  }
+
+  public static final class Telephony.Sms.Outbox implements android.provider.BaseColumns android.provider.Telephony.TextBasedSmsColumns {
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String DEFAULT_SORT_ORDER = "date DESC";
+  }
+
+  public static final class Telephony.Sms.Sent implements android.provider.BaseColumns android.provider.Telephony.TextBasedSmsColumns {
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String DEFAULT_SORT_ORDER = "date DESC";
+  }
+
+  public static interface Telephony.TextBasedSmsColumns {
+    field public static final String ADDRESS = "address";
+    field public static final String BODY = "body";
+    field public static final String CREATOR = "creator";
+    field public static final String DATE = "date";
+    field public static final String DATE_SENT = "date_sent";
+    field public static final String ERROR_CODE = "error_code";
+    field public static final String LOCKED = "locked";
+    field public static final int MESSAGE_TYPE_ALL = 0; // 0x0
+    field public static final int MESSAGE_TYPE_DRAFT = 3; // 0x3
+    field public static final int MESSAGE_TYPE_FAILED = 5; // 0x5
+    field public static final int MESSAGE_TYPE_INBOX = 1; // 0x1
+    field public static final int MESSAGE_TYPE_OUTBOX = 4; // 0x4
+    field public static final int MESSAGE_TYPE_QUEUED = 6; // 0x6
+    field public static final int MESSAGE_TYPE_SENT = 2; // 0x2
+    field public static final String PERSON = "person";
+    field public static final String PROTOCOL = "protocol";
+    field public static final String READ = "read";
+    field public static final String REPLY_PATH_PRESENT = "reply_path_present";
+    field public static final String SEEN = "seen";
+    field public static final String SERVICE_CENTER = "service_center";
+    field public static final String STATUS = "status";
+    field public static final int STATUS_COMPLETE = 0; // 0x0
+    field public static final int STATUS_FAILED = 64; // 0x40
+    field public static final int STATUS_NONE = -1; // 0xffffffff
+    field public static final int STATUS_PENDING = 32; // 0x20
+    field public static final String SUBJECT = "subject";
+    field public static final String SUBSCRIPTION_ID = "sub_id";
+    field public static final String THREAD_ID = "thread_id";
+    field public static final String TYPE = "type";
+  }
+
+  public static final class Telephony.Threads implements android.provider.Telephony.ThreadsColumns {
+    method public static long getOrCreateThreadId(android.content.Context, String);
+    method public static long getOrCreateThreadId(android.content.Context, java.util.Set<java.lang.String>);
+    field public static final int BROADCAST_THREAD = 1; // 0x1
+    field public static final int COMMON_THREAD = 0; // 0x0
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final android.net.Uri OBSOLETE_THREADS_URI;
+  }
+
+  public static interface Telephony.ThreadsColumns extends android.provider.BaseColumns {
+    field public static final String ARCHIVED = "archived";
+    field public static final String DATE = "date";
+    field public static final String ERROR = "error";
+    field public static final String HAS_ATTACHMENT = "has_attachment";
+    field public static final String MESSAGE_COUNT = "message_count";
+    field public static final String READ = "read";
+    field public static final String RECIPIENT_IDS = "recipient_ids";
+    field public static final String SNIPPET = "snippet";
+    field public static final String SNIPPET_CHARSET = "snippet_cs";
+    field public static final String TYPE = "type";
+  }
+
+  public class UserDictionary {
+    ctor public UserDictionary();
+    field public static final String AUTHORITY = "user_dictionary";
+    field public static final android.net.Uri CONTENT_URI;
+  }
+
+  public static class UserDictionary.Words implements android.provider.BaseColumns {
+    ctor public UserDictionary.Words();
+    method @Deprecated public static void addWord(android.content.Context, String, int, int);
+    method public static void addWord(android.content.Context, String, int, String, java.util.Locale);
+    field public static final String APP_ID = "appid";
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/vnd.google.userword";
+    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.google.userword";
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String DEFAULT_SORT_ORDER = "frequency DESC";
+    field public static final String FREQUENCY = "frequency";
+    field public static final String LOCALE = "locale";
+    field @Deprecated public static final int LOCALE_TYPE_ALL = 0; // 0x0
+    field @Deprecated public static final int LOCALE_TYPE_CURRENT = 1; // 0x1
+    field public static final String SHORTCUT = "shortcut";
+    field public static final String WORD = "word";
+    field public static final String _ID = "_id";
+  }
+
+  public class VoicemailContract {
+    field public static final String ACTION_FETCH_VOICEMAIL = "android.intent.action.FETCH_VOICEMAIL";
+    field public static final String ACTION_NEW_VOICEMAIL = "android.intent.action.NEW_VOICEMAIL";
+    field public static final String ACTION_SYNC_VOICEMAIL = "android.provider.action.SYNC_VOICEMAIL";
+    field public static final String AUTHORITY = "com.android.voicemail";
+    field public static final String EXTRA_PHONE_ACCOUNT_HANDLE = "android.provider.extra.PHONE_ACCOUNT_HANDLE";
+    field public static final String EXTRA_SELF_CHANGE = "com.android.voicemail.extra.SELF_CHANGE";
+    field public static final String PARAM_KEY_SOURCE_PACKAGE = "source_package";
+  }
+
+  public static final class VoicemailContract.Status implements android.provider.BaseColumns {
+    method public static android.net.Uri buildSourceUri(String);
+    field public static final String CONFIGURATION_STATE = "configuration_state";
+    field public static final int CONFIGURATION_STATE_CAN_BE_CONFIGURED = 2; // 0x2
+    field public static final int CONFIGURATION_STATE_CONFIGURING = 3; // 0x3
+    field public static final int CONFIGURATION_STATE_DISABLED = 5; // 0x5
+    field public static final int CONFIGURATION_STATE_FAILED = 4; // 0x4
+    field public static final int CONFIGURATION_STATE_NOT_CONFIGURED = 1; // 0x1
+    field public static final int CONFIGURATION_STATE_OK = 0; // 0x0
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String DATA_CHANNEL_STATE = "data_channel_state";
+    field public static final int DATA_CHANNEL_STATE_BAD_CONFIGURATION = 3; // 0x3
+    field public static final int DATA_CHANNEL_STATE_COMMUNICATION_ERROR = 4; // 0x4
+    field public static final int DATA_CHANNEL_STATE_NO_CONNECTION = 1; // 0x1
+    field public static final int DATA_CHANNEL_STATE_NO_CONNECTION_CELLULAR_REQUIRED = 2; // 0x2
+    field public static final int DATA_CHANNEL_STATE_OK = 0; // 0x0
+    field public static final int DATA_CHANNEL_STATE_SERVER_CONNECTION_ERROR = 6; // 0x6
+    field public static final int DATA_CHANNEL_STATE_SERVER_ERROR = 5; // 0x5
+    field public static final String DIR_TYPE = "vnd.android.cursor.dir/voicemail.source.status";
+    field public static final String ITEM_TYPE = "vnd.android.cursor.item/voicemail.source.status";
+    field public static final String NOTIFICATION_CHANNEL_STATE = "notification_channel_state";
+    field public static final int NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING = 2; // 0x2
+    field public static final int NOTIFICATION_CHANNEL_STATE_NO_CONNECTION = 1; // 0x1
+    field public static final int NOTIFICATION_CHANNEL_STATE_OK = 0; // 0x0
+    field public static final String PHONE_ACCOUNT_COMPONENT_NAME = "phone_account_component_name";
+    field public static final String PHONE_ACCOUNT_ID = "phone_account_id";
+    field public static final String QUOTA_OCCUPIED = "quota_occupied";
+    field public static final String QUOTA_TOTAL = "quota_total";
+    field public static final int QUOTA_UNAVAILABLE = -1; // 0xffffffff
+    field public static final String SETTINGS_URI = "settings_uri";
+    field public static final String SOURCE_PACKAGE = "source_package";
+    field public static final String SOURCE_TYPE = "source_type";
+    field public static final String VOICEMAIL_ACCESS_URI = "voicemail_access_uri";
+  }
+
+  public static final class VoicemailContract.Voicemails implements android.provider.BaseColumns android.provider.OpenableColumns {
+    method public static android.net.Uri buildSourceUri(String);
+    field public static final String ARCHIVED = "archived";
+    field public static final String BACKED_UP = "backed_up";
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String DATE = "date";
+    field public static final String DELETED = "deleted";
+    field public static final String DIRTY = "dirty";
+    field public static final int DIRTY_RETAIN = -1; // 0xffffffff
+    field public static final String DIR_TYPE = "vnd.android.cursor.dir/voicemails";
+    field public static final String DURATION = "duration";
+    field public static final String HAS_CONTENT = "has_content";
+    field public static final String IS_OMTP_VOICEMAIL = "is_omtp_voicemail";
+    field public static final String IS_READ = "is_read";
+    field public static final String ITEM_TYPE = "vnd.android.cursor.item/voicemail";
+    field public static final String LAST_MODIFIED = "last_modified";
+    field public static final String MIME_TYPE = "mime_type";
+    field public static final String NEW = "new";
+    field public static final String NUMBER = "number";
+    field public static final String PHONE_ACCOUNT_COMPONENT_NAME = "subscription_component_name";
+    field public static final String PHONE_ACCOUNT_ID = "subscription_id";
+    field public static final String RESTORED = "restored";
+    field public static final String SOURCE_DATA = "source_data";
+    field public static final String SOURCE_PACKAGE = "source_package";
+    field public static final String TRANSCRIPTION = "transcription";
+  }
+
+}
+
+package android.renderscript {
+
+  public class Allocation extends android.renderscript.BaseObj {
+    method public void copy1DRangeFrom(int, int, Object);
+    method public void copy1DRangeFrom(int, int, int[]);
+    method public void copy1DRangeFrom(int, int, short[]);
+    method public void copy1DRangeFrom(int, int, byte[]);
+    method public void copy1DRangeFrom(int, int, float[]);
+    method public void copy1DRangeFrom(int, int, android.renderscript.Allocation, int);
+    method public void copy1DRangeFromUnchecked(int, int, Object);
+    method public void copy1DRangeFromUnchecked(int, int, int[]);
+    method public void copy1DRangeFromUnchecked(int, int, short[]);
+    method public void copy1DRangeFromUnchecked(int, int, byte[]);
+    method public void copy1DRangeFromUnchecked(int, int, float[]);
+    method public void copy1DRangeTo(int, int, Object);
+    method public void copy1DRangeTo(int, int, int[]);
+    method public void copy1DRangeTo(int, int, short[]);
+    method public void copy1DRangeTo(int, int, byte[]);
+    method public void copy1DRangeTo(int, int, float[]);
+    method public void copy1DRangeToUnchecked(int, int, Object);
+    method public void copy1DRangeToUnchecked(int, int, int[]);
+    method public void copy1DRangeToUnchecked(int, int, short[]);
+    method public void copy1DRangeToUnchecked(int, int, byte[]);
+    method public void copy1DRangeToUnchecked(int, int, float[]);
+    method public void copy2DRangeFrom(int, int, int, int, Object);
+    method public void copy2DRangeFrom(int, int, int, int, byte[]);
+    method public void copy2DRangeFrom(int, int, int, int, short[]);
+    method public void copy2DRangeFrom(int, int, int, int, int[]);
+    method public void copy2DRangeFrom(int, int, int, int, float[]);
+    method public void copy2DRangeFrom(int, int, int, int, android.renderscript.Allocation, int, int);
+    method public void copy2DRangeFrom(int, int, android.graphics.Bitmap);
+    method public void copy2DRangeTo(int, int, int, int, Object);
+    method public void copy2DRangeTo(int, int, int, int, byte[]);
+    method public void copy2DRangeTo(int, int, int, int, short[]);
+    method public void copy2DRangeTo(int, int, int, int, int[]);
+    method public void copy2DRangeTo(int, int, int, int, float[]);
+    method public void copy3DRangeFrom(int, int, int, int, int, int, Object);
+    method public void copy3DRangeFrom(int, int, int, int, int, int, android.renderscript.Allocation, int, int, int);
+    method public void copy3DRangeTo(int, int, int, int, int, int, Object);
+    method public void copyFrom(android.renderscript.BaseObj[]);
+    method public void copyFrom(Object);
+    method public void copyFrom(int[]);
+    method public void copyFrom(short[]);
+    method public void copyFrom(byte[]);
+    method public void copyFrom(float[]);
+    method public void copyFrom(android.graphics.Bitmap);
+    method public void copyFrom(android.renderscript.Allocation);
+    method public void copyFromUnchecked(Object);
+    method public void copyFromUnchecked(int[]);
+    method public void copyFromUnchecked(short[]);
+    method public void copyFromUnchecked(byte[]);
+    method public void copyFromUnchecked(float[]);
+    method public void copyTo(android.graphics.Bitmap);
+    method public void copyTo(Object);
+    method public void copyTo(byte[]);
+    method public void copyTo(short[]);
+    method public void copyTo(int[]);
+    method public void copyTo(float[]);
+    method public static android.renderscript.Allocation[] createAllocations(android.renderscript.RenderScript, android.renderscript.Type, int, int);
+    method public static android.renderscript.Allocation createCubemapFromBitmap(android.renderscript.RenderScript, android.graphics.Bitmap, android.renderscript.Allocation.MipmapControl, int);
+    method public static android.renderscript.Allocation createCubemapFromBitmap(android.renderscript.RenderScript, android.graphics.Bitmap);
+    method public static android.renderscript.Allocation createCubemapFromCubeFaces(android.renderscript.RenderScript, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.renderscript.Allocation.MipmapControl, int);
+    method public static android.renderscript.Allocation createCubemapFromCubeFaces(android.renderscript.RenderScript, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap);
+    method public static android.renderscript.Allocation createFromBitmap(android.renderscript.RenderScript, android.graphics.Bitmap, android.renderscript.Allocation.MipmapControl, int);
+    method public static android.renderscript.Allocation createFromBitmap(android.renderscript.RenderScript, android.graphics.Bitmap);
+    method public static android.renderscript.Allocation createFromBitmapResource(android.renderscript.RenderScript, android.content.res.Resources, int, android.renderscript.Allocation.MipmapControl, int);
+    method public static android.renderscript.Allocation createFromBitmapResource(android.renderscript.RenderScript, android.content.res.Resources, int);
+    method public static android.renderscript.Allocation createFromString(android.renderscript.RenderScript, String, int);
+    method public static android.renderscript.Allocation createSized(android.renderscript.RenderScript, android.renderscript.Element, int, int);
+    method public static android.renderscript.Allocation createSized(android.renderscript.RenderScript, android.renderscript.Element, int);
+    method public static android.renderscript.Allocation createTyped(android.renderscript.RenderScript, android.renderscript.Type, android.renderscript.Allocation.MipmapControl, int);
+    method public static android.renderscript.Allocation createTyped(android.renderscript.RenderScript, android.renderscript.Type, int);
+    method public static android.renderscript.Allocation createTyped(android.renderscript.RenderScript, android.renderscript.Type);
+    method public void generateMipmaps();
+    method public java.nio.ByteBuffer getByteBuffer();
+    method public int getBytesSize();
+    method public android.renderscript.Element getElement();
+    method public long getStride();
+    method public android.view.Surface getSurface();
+    method public long getTimeStamp();
+    method public android.renderscript.Type getType();
+    method public int getUsage();
+    method public void ioReceive();
+    method public void ioSend();
+    method @Deprecated public void resize(int);
+    method public void setAutoPadding(boolean);
+    method public void setFromFieldPacker(int, android.renderscript.FieldPacker);
+    method public void setFromFieldPacker(int, int, android.renderscript.FieldPacker);
+    method public void setFromFieldPacker(int, int, int, int, android.renderscript.FieldPacker);
+    method public void setOnBufferAvailableListener(android.renderscript.Allocation.OnBufferAvailableListener);
+    method public void setSurface(android.view.Surface);
+    method public void syncAll(int);
+    field public static final int USAGE_GRAPHICS_CONSTANTS = 8; // 0x8
+    field public static final int USAGE_GRAPHICS_RENDER_TARGET = 16; // 0x10
+    field public static final int USAGE_GRAPHICS_TEXTURE = 2; // 0x2
+    field public static final int USAGE_GRAPHICS_VERTEX = 4; // 0x4
+    field public static final int USAGE_IO_INPUT = 32; // 0x20
+    field public static final int USAGE_IO_OUTPUT = 64; // 0x40
+    field public static final int USAGE_SCRIPT = 1; // 0x1
+    field public static final int USAGE_SHARED = 128; // 0x80
+  }
+
+  public enum Allocation.MipmapControl {
+    enum_constant public static final android.renderscript.Allocation.MipmapControl MIPMAP_FULL;
+    enum_constant public static final android.renderscript.Allocation.MipmapControl MIPMAP_NONE;
+    enum_constant public static final android.renderscript.Allocation.MipmapControl MIPMAP_ON_SYNC_TO_TEXTURE;
+  }
+
+  public static interface Allocation.OnBufferAvailableListener {
+    method public void onBufferAvailable(android.renderscript.Allocation);
+  }
+
+  public class AllocationAdapter extends android.renderscript.Allocation {
+    method public static android.renderscript.AllocationAdapter create1D(android.renderscript.RenderScript, android.renderscript.Allocation);
+    method public static android.renderscript.AllocationAdapter create2D(android.renderscript.RenderScript, android.renderscript.Allocation);
+    method public static android.renderscript.AllocationAdapter createTyped(android.renderscript.RenderScript, android.renderscript.Allocation, android.renderscript.Type);
+    method public void resize(int);
+    method public void setFace(android.renderscript.Type.CubemapFace);
+    method public void setLOD(int);
+    method public void setX(int);
+    method public void setY(int);
+    method public void setZ(int);
+  }
+
+  public class BaseObj {
+    method public void destroy();
+    method public String getName();
+    method public void setName(String);
+  }
+
+  public class Byte2 {
+    ctor public Byte2();
+    ctor public Byte2(byte, byte);
+    field public byte x;
+    field public byte y;
+  }
+
+  public class Byte3 {
+    ctor public Byte3();
+    ctor public Byte3(byte, byte, byte);
+    field public byte x;
+    field public byte y;
+    field public byte z;
+  }
+
+  public class Byte4 {
+    ctor public Byte4();
+    ctor public Byte4(byte, byte, byte, byte);
+    field public byte w;
+    field public byte x;
+    field public byte y;
+    field public byte z;
+  }
+
+  public class Double2 {
+    ctor public Double2();
+    ctor public Double2(double, double);
+    field public double x;
+    field public double y;
+  }
+
+  public class Double3 {
+    ctor public Double3();
+    ctor public Double3(double, double, double);
+    field public double x;
+    field public double y;
+    field public double z;
+  }
+
+  public class Double4 {
+    ctor public Double4();
+    ctor public Double4(double, double, double, double);
+    field public double w;
+    field public double x;
+    field public double y;
+    field public double z;
+  }
+
+  public class Element extends android.renderscript.BaseObj {
+    method public static android.renderscript.Element ALLOCATION(android.renderscript.RenderScript);
+    method public static android.renderscript.Element A_8(android.renderscript.RenderScript);
+    method public static android.renderscript.Element BOOLEAN(android.renderscript.RenderScript);
+    method public static android.renderscript.Element ELEMENT(android.renderscript.RenderScript);
+    method public static android.renderscript.Element F16(android.renderscript.RenderScript);
+    method public static android.renderscript.Element F16_2(android.renderscript.RenderScript);
+    method public static android.renderscript.Element F16_3(android.renderscript.RenderScript);
+    method public static android.renderscript.Element F16_4(android.renderscript.RenderScript);
+    method public static android.renderscript.Element F32(android.renderscript.RenderScript);
+    method public static android.renderscript.Element F32_2(android.renderscript.RenderScript);
+    method public static android.renderscript.Element F32_3(android.renderscript.RenderScript);
+    method public static android.renderscript.Element F32_4(android.renderscript.RenderScript);
+    method public static android.renderscript.Element F64(android.renderscript.RenderScript);
+    method public static android.renderscript.Element F64_2(android.renderscript.RenderScript);
+    method public static android.renderscript.Element F64_3(android.renderscript.RenderScript);
+    method public static android.renderscript.Element F64_4(android.renderscript.RenderScript);
+    method public static android.renderscript.Element FONT(android.renderscript.RenderScript);
+    method public static android.renderscript.Element I16(android.renderscript.RenderScript);
+    method public static android.renderscript.Element I16_2(android.renderscript.RenderScript);
+    method public static android.renderscript.Element I16_3(android.renderscript.RenderScript);
+    method public static android.renderscript.Element I16_4(android.renderscript.RenderScript);
+    method public static android.renderscript.Element I32(android.renderscript.RenderScript);
+    method public static android.renderscript.Element I32_2(android.renderscript.RenderScript);
+    method public static android.renderscript.Element I32_3(android.renderscript.RenderScript);
+    method public static android.renderscript.Element I32_4(android.renderscript.RenderScript);
+    method public static android.renderscript.Element I64(android.renderscript.RenderScript);
+    method public static android.renderscript.Element I64_2(android.renderscript.RenderScript);
+    method public static android.renderscript.Element I64_3(android.renderscript.RenderScript);
+    method public static android.renderscript.Element I64_4(android.renderscript.RenderScript);
+    method public static android.renderscript.Element I8(android.renderscript.RenderScript);
+    method public static android.renderscript.Element I8_2(android.renderscript.RenderScript);
+    method public static android.renderscript.Element I8_3(android.renderscript.RenderScript);
+    method public static android.renderscript.Element I8_4(android.renderscript.RenderScript);
+    method @Deprecated public static android.renderscript.Element MATRIX4X4(android.renderscript.RenderScript);
+    method public static android.renderscript.Element MATRIX_2X2(android.renderscript.RenderScript);
+    method public static android.renderscript.Element MATRIX_3X3(android.renderscript.RenderScript);
+    method public static android.renderscript.Element MATRIX_4X4(android.renderscript.RenderScript);
+    method public static android.renderscript.Element MESH(android.renderscript.RenderScript);
+    method public static android.renderscript.Element PROGRAM_FRAGMENT(android.renderscript.RenderScript);
+    method public static android.renderscript.Element PROGRAM_RASTER(android.renderscript.RenderScript);
+    method public static android.renderscript.Element PROGRAM_STORE(android.renderscript.RenderScript);
+    method public static android.renderscript.Element PROGRAM_VERTEX(android.renderscript.RenderScript);
+    method public static android.renderscript.Element RGBA_4444(android.renderscript.RenderScript);
+    method public static android.renderscript.Element RGBA_5551(android.renderscript.RenderScript);
+    method public static android.renderscript.Element RGBA_8888(android.renderscript.RenderScript);
+    method public static android.renderscript.Element RGB_565(android.renderscript.RenderScript);
+    method public static android.renderscript.Element RGB_888(android.renderscript.RenderScript);
+    method public static android.renderscript.Element SAMPLER(android.renderscript.RenderScript);
+    method public static android.renderscript.Element SCRIPT(android.renderscript.RenderScript);
+    method public static android.renderscript.Element TYPE(android.renderscript.RenderScript);
+    method public static android.renderscript.Element U16(android.renderscript.RenderScript);
+    method public static android.renderscript.Element U16_2(android.renderscript.RenderScript);
+    method public static android.renderscript.Element U16_3(android.renderscript.RenderScript);
+    method public static android.renderscript.Element U16_4(android.renderscript.RenderScript);
+    method public static android.renderscript.Element U32(android.renderscript.RenderScript);
+    method public static android.renderscript.Element U32_2(android.renderscript.RenderScript);
+    method public static android.renderscript.Element U32_3(android.renderscript.RenderScript);
+    method public static android.renderscript.Element U32_4(android.renderscript.RenderScript);
+    method public static android.renderscript.Element U64(android.renderscript.RenderScript);
+    method public static android.renderscript.Element U64_2(android.renderscript.RenderScript);
+    method public static android.renderscript.Element U64_3(android.renderscript.RenderScript);
+    method public static android.renderscript.Element U64_4(android.renderscript.RenderScript);
+    method public static android.renderscript.Element U8(android.renderscript.RenderScript);
+    method public static android.renderscript.Element U8_2(android.renderscript.RenderScript);
+    method public static android.renderscript.Element U8_3(android.renderscript.RenderScript);
+    method public static android.renderscript.Element U8_4(android.renderscript.RenderScript);
+    method public static android.renderscript.Element YUV(android.renderscript.RenderScript);
+    method public static android.renderscript.Element createPixel(android.renderscript.RenderScript, android.renderscript.Element.DataType, android.renderscript.Element.DataKind);
+    method public static android.renderscript.Element createVector(android.renderscript.RenderScript, android.renderscript.Element.DataType, int);
+    method public int getBytesSize();
+    method public android.renderscript.Element.DataKind getDataKind();
+    method public android.renderscript.Element.DataType getDataType();
+    method public android.renderscript.Element getSubElement(int);
+    method public int getSubElementArraySize(int);
+    method public int getSubElementCount();
+    method public String getSubElementName(int);
+    method public int getSubElementOffsetBytes(int);
+    method public int getVectorSize();
+    method public boolean isCompatible(android.renderscript.Element);
+    method public boolean isComplex();
+  }
+
+  public static class Element.Builder {
+    ctor public Element.Builder(android.renderscript.RenderScript);
+    method public android.renderscript.Element.Builder add(android.renderscript.Element, String, int);
+    method public android.renderscript.Element.Builder add(android.renderscript.Element, String);
+    method public android.renderscript.Element create();
+  }
+
+  public enum Element.DataKind {
+    enum_constant public static final android.renderscript.Element.DataKind PIXEL_A;
+    enum_constant public static final android.renderscript.Element.DataKind PIXEL_DEPTH;
+    enum_constant public static final android.renderscript.Element.DataKind PIXEL_L;
+    enum_constant public static final android.renderscript.Element.DataKind PIXEL_LA;
+    enum_constant public static final android.renderscript.Element.DataKind PIXEL_RGB;
+    enum_constant public static final android.renderscript.Element.DataKind PIXEL_RGBA;
+    enum_constant public static final android.renderscript.Element.DataKind PIXEL_YUV;
+    enum_constant public static final android.renderscript.Element.DataKind USER;
+  }
+
+  public enum Element.DataType {
+    enum_constant public static final android.renderscript.Element.DataType BOOLEAN;
+    enum_constant public static final android.renderscript.Element.DataType FLOAT_16;
+    enum_constant public static final android.renderscript.Element.DataType FLOAT_32;
+    enum_constant public static final android.renderscript.Element.DataType FLOAT_64;
+    enum_constant public static final android.renderscript.Element.DataType MATRIX_2X2;
+    enum_constant public static final android.renderscript.Element.DataType MATRIX_3X3;
+    enum_constant public static final android.renderscript.Element.DataType MATRIX_4X4;
+    enum_constant public static final android.renderscript.Element.DataType NONE;
+    enum_constant public static final android.renderscript.Element.DataType RS_ALLOCATION;
+    enum_constant public static final android.renderscript.Element.DataType RS_ELEMENT;
+    enum_constant public static final android.renderscript.Element.DataType RS_FONT;
+    enum_constant public static final android.renderscript.Element.DataType RS_MESH;
+    enum_constant public static final android.renderscript.Element.DataType RS_PROGRAM_FRAGMENT;
+    enum_constant public static final android.renderscript.Element.DataType RS_PROGRAM_RASTER;
+    enum_constant public static final android.renderscript.Element.DataType RS_PROGRAM_STORE;
+    enum_constant public static final android.renderscript.Element.DataType RS_PROGRAM_VERTEX;
+    enum_constant public static final android.renderscript.Element.DataType RS_SAMPLER;
+    enum_constant public static final android.renderscript.Element.DataType RS_SCRIPT;
+    enum_constant public static final android.renderscript.Element.DataType RS_TYPE;
+    enum_constant public static final android.renderscript.Element.DataType SIGNED_16;
+    enum_constant public static final android.renderscript.Element.DataType SIGNED_32;
+    enum_constant public static final android.renderscript.Element.DataType SIGNED_64;
+    enum_constant public static final android.renderscript.Element.DataType SIGNED_8;
+    enum_constant public static final android.renderscript.Element.DataType UNSIGNED_16;
+    enum_constant public static final android.renderscript.Element.DataType UNSIGNED_32;
+    enum_constant public static final android.renderscript.Element.DataType UNSIGNED_4_4_4_4;
+    enum_constant public static final android.renderscript.Element.DataType UNSIGNED_5_5_5_1;
+    enum_constant public static final android.renderscript.Element.DataType UNSIGNED_5_6_5;
+    enum_constant public static final android.renderscript.Element.DataType UNSIGNED_64;
+    enum_constant public static final android.renderscript.Element.DataType UNSIGNED_8;
+  }
+
+  public class FieldPacker {
+    ctor public FieldPacker(int);
+    ctor public FieldPacker(byte[]);
+    method public void addBoolean(boolean);
+    method public void addF32(float);
+    method public void addF32(android.renderscript.Float2);
+    method public void addF32(android.renderscript.Float3);
+    method public void addF32(android.renderscript.Float4);
+    method public void addF64(double);
+    method public void addF64(android.renderscript.Double2);
+    method public void addF64(android.renderscript.Double3);
+    method public void addF64(android.renderscript.Double4);
+    method public void addI16(short);
+    method public void addI16(android.renderscript.Short2);
+    method public void addI16(android.renderscript.Short3);
+    method public void addI16(android.renderscript.Short4);
+    method public void addI32(int);
+    method public void addI32(android.renderscript.Int2);
+    method public void addI32(android.renderscript.Int3);
+    method public void addI32(android.renderscript.Int4);
+    method public void addI64(long);
+    method public void addI64(android.renderscript.Long2);
+    method public void addI64(android.renderscript.Long3);
+    method public void addI64(android.renderscript.Long4);
+    method public void addI8(byte);
+    method public void addI8(android.renderscript.Byte2);
+    method public void addI8(android.renderscript.Byte3);
+    method public void addI8(android.renderscript.Byte4);
+    method public void addMatrix(android.renderscript.Matrix4f);
+    method public void addMatrix(android.renderscript.Matrix3f);
+    method public void addMatrix(android.renderscript.Matrix2f);
+    method public void addObj(android.renderscript.BaseObj);
+    method public void addU16(int);
+    method public void addU16(android.renderscript.Int2);
+    method public void addU16(android.renderscript.Int3);
+    method public void addU16(android.renderscript.Int4);
+    method public void addU32(long);
+    method public void addU32(android.renderscript.Long2);
+    method public void addU32(android.renderscript.Long3);
+    method public void addU32(android.renderscript.Long4);
+    method public void addU64(long);
+    method public void addU64(android.renderscript.Long2);
+    method public void addU64(android.renderscript.Long3);
+    method public void addU64(android.renderscript.Long4);
+    method public void addU8(short);
+    method public void addU8(android.renderscript.Short2);
+    method public void addU8(android.renderscript.Short3);
+    method public void addU8(android.renderscript.Short4);
+    method public void align(int);
+    method public final byte[] getData();
+    method public void reset();
+    method public void reset(int);
+    method public void skip(int);
+    method public boolean subBoolean();
+    method public android.renderscript.Byte2 subByte2();
+    method public android.renderscript.Byte3 subByte3();
+    method public android.renderscript.Byte4 subByte4();
+    method public android.renderscript.Double2 subDouble2();
+    method public android.renderscript.Double3 subDouble3();
+    method public android.renderscript.Double4 subDouble4();
+    method public float subF32();
+    method public double subF64();
+    method public android.renderscript.Float2 subFloat2();
+    method public android.renderscript.Float3 subFloat3();
+    method public android.renderscript.Float4 subFloat4();
+    method public short subI16();
+    method public int subI32();
+    method public long subI64();
+    method public byte subI8();
+    method public android.renderscript.Int2 subInt2();
+    method public android.renderscript.Int3 subInt3();
+    method public android.renderscript.Int4 subInt4();
+    method public android.renderscript.Long2 subLong2();
+    method public android.renderscript.Long3 subLong3();
+    method public android.renderscript.Long4 subLong4();
+    method public android.renderscript.Matrix2f subMatrix2f();
+    method public android.renderscript.Matrix3f subMatrix3f();
+    method public android.renderscript.Matrix4f subMatrix4f();
+    method public android.renderscript.Short2 subShort2();
+    method public android.renderscript.Short3 subShort3();
+    method public android.renderscript.Short4 subShort4();
+    method public void subalign(int);
+  }
+
+  public class Float2 {
+    ctor public Float2();
+    ctor public Float2(float, float);
+    field public float x;
+    field public float y;
+  }
+
+  public class Float3 {
+    ctor public Float3();
+    ctor public Float3(float, float, float);
+    field public float x;
+    field public float y;
+    field public float z;
+  }
+
+  public class Float4 {
+    ctor public Float4();
+    ctor public Float4(float, float, float, float);
+    field public float w;
+    field public float x;
+    field public float y;
+    field public float z;
+  }
+
+  public class Int2 {
+    ctor public Int2();
+    ctor public Int2(int, int);
+    field public int x;
+    field public int y;
+  }
+
+  public class Int3 {
+    ctor public Int3();
+    ctor public Int3(int, int, int);
+    field public int x;
+    field public int y;
+    field public int z;
+  }
+
+  public class Int4 {
+    ctor public Int4();
+    ctor public Int4(int, int, int, int);
+    field public int w;
+    field public int x;
+    field public int y;
+    field public int z;
+  }
+
+  public class Long2 {
+    ctor public Long2();
+    ctor public Long2(long, long);
+    field public long x;
+    field public long y;
+  }
+
+  public class Long3 {
+    ctor public Long3();
+    ctor public Long3(long, long, long);
+    field public long x;
+    field public long y;
+    field public long z;
+  }
+
+  public class Long4 {
+    ctor public Long4();
+    ctor public Long4(long, long, long, long);
+    field public long w;
+    field public long x;
+    field public long y;
+    field public long z;
+  }
+
+  public class Matrix2f {
+    ctor public Matrix2f();
+    ctor public Matrix2f(float[]);
+    method public float get(int, int);
+    method public float[] getArray();
+    method public void load(android.renderscript.Matrix2f);
+    method public void loadIdentity();
+    method public void loadMultiply(android.renderscript.Matrix2f, android.renderscript.Matrix2f);
+    method public void loadRotate(float);
+    method public void loadScale(float, float);
+    method public void multiply(android.renderscript.Matrix2f);
+    method public void rotate(float);
+    method public void scale(float, float);
+    method public void set(int, int, float);
+    method public void transpose();
+  }
+
+  public class Matrix3f {
+    ctor public Matrix3f();
+    ctor public Matrix3f(float[]);
+    method public float get(int, int);
+    method public float[] getArray();
+    method public void load(android.renderscript.Matrix3f);
+    method public void loadIdentity();
+    method public void loadMultiply(android.renderscript.Matrix3f, android.renderscript.Matrix3f);
+    method public void loadRotate(float, float, float, float);
+    method public void loadRotate(float);
+    method public void loadScale(float, float);
+    method public void loadScale(float, float, float);
+    method public void loadTranslate(float, float);
+    method public void multiply(android.renderscript.Matrix3f);
+    method public void rotate(float, float, float, float);
+    method public void rotate(float);
+    method public void scale(float, float);
+    method public void scale(float, float, float);
+    method public void set(int, int, float);
+    method public void translate(float, float);
+    method public void transpose();
+  }
+
+  public class Matrix4f {
+    ctor public Matrix4f();
+    ctor public Matrix4f(float[]);
+    method public float get(int, int);
+    method public float[] getArray();
+    method public boolean inverse();
+    method public boolean inverseTranspose();
+    method public void load(android.renderscript.Matrix4f);
+    method public void loadFrustum(float, float, float, float, float, float);
+    method public void loadIdentity();
+    method public void loadMultiply(android.renderscript.Matrix4f, android.renderscript.Matrix4f);
+    method public void loadOrtho(float, float, float, float, float, float);
+    method public void loadOrthoWindow(int, int);
+    method public void loadPerspective(float, float, float, float);
+    method public void loadProjectionNormalized(int, int);
+    method public void loadRotate(float, float, float, float);
+    method public void loadScale(float, float, float);
+    method public void loadTranslate(float, float, float);
+    method public void multiply(android.renderscript.Matrix4f);
+    method public void rotate(float, float, float, float);
+    method public void scale(float, float, float);
+    method public void set(int, int, float);
+    method public void translate(float, float, float);
+    method public void transpose();
+  }
+
+  public class RSDriverException extends android.renderscript.RSRuntimeException {
+    ctor public RSDriverException(String);
+  }
+
+  public class RSIllegalArgumentException extends android.renderscript.RSRuntimeException {
+    ctor public RSIllegalArgumentException(String);
+  }
+
+  public class RSInvalidStateException extends android.renderscript.RSRuntimeException {
+    ctor public RSInvalidStateException(String);
+  }
+
+  public class RSRuntimeException extends java.lang.RuntimeException {
+    ctor public RSRuntimeException(String);
+  }
+
+  public class RenderScript {
+    method public void contextDump();
+    method public static android.renderscript.RenderScript create(android.content.Context);
+    method public static android.renderscript.RenderScript create(android.content.Context, android.renderscript.RenderScript.ContextType);
+    method public static android.renderscript.RenderScript create(android.content.Context, android.renderscript.RenderScript.ContextType, int);
+    method public static android.renderscript.RenderScript createMultiContext(android.content.Context, android.renderscript.RenderScript.ContextType, int, int);
+    method public void destroy();
+    method public void finish();
+    method public final android.content.Context getApplicationContext();
+    method public android.renderscript.RenderScript.RSErrorHandler getErrorHandler();
+    method public android.renderscript.RenderScript.RSMessageHandler getMessageHandler();
+    method public static long getMinorVersion();
+    method public static void releaseAllContexts();
+    method public void sendMessage(int, int[]);
+    method public void setErrorHandler(android.renderscript.RenderScript.RSErrorHandler);
+    method public void setMessageHandler(android.renderscript.RenderScript.RSMessageHandler);
+    method public void setPriority(android.renderscript.RenderScript.Priority);
+    field public static final int CREATE_FLAG_LOW_LATENCY = 2; // 0x2
+    field public static final int CREATE_FLAG_LOW_POWER = 4; // 0x4
+    field public static final int CREATE_FLAG_NONE = 0; // 0x0
+  }
+
+  public enum RenderScript.ContextType {
+    enum_constant public static final android.renderscript.RenderScript.ContextType DEBUG;
+    enum_constant public static final android.renderscript.RenderScript.ContextType NORMAL;
+    enum_constant public static final android.renderscript.RenderScript.ContextType PROFILE;
+  }
+
+  public enum RenderScript.Priority {
+    enum_constant public static final android.renderscript.RenderScript.Priority LOW;
+    enum_constant public static final android.renderscript.RenderScript.Priority NORMAL;
+  }
+
+  public static class RenderScript.RSErrorHandler implements java.lang.Runnable {
+    ctor public RenderScript.RSErrorHandler();
+    method public void run();
+    field protected String mErrorMessage;
+    field protected int mErrorNum;
+  }
+
+  public static class RenderScript.RSMessageHandler implements java.lang.Runnable {
+    ctor public RenderScript.RSMessageHandler();
+    method public void run();
+    field protected int[] mData;
+    field protected int mID;
+    field protected int mLength;
+  }
+
+  public class Sampler extends android.renderscript.BaseObj {
+    method public static android.renderscript.Sampler CLAMP_LINEAR(android.renderscript.RenderScript);
+    method public static android.renderscript.Sampler CLAMP_LINEAR_MIP_LINEAR(android.renderscript.RenderScript);
+    method public static android.renderscript.Sampler CLAMP_NEAREST(android.renderscript.RenderScript);
+    method public static android.renderscript.Sampler MIRRORED_REPEAT_LINEAR(android.renderscript.RenderScript);
+    method public static android.renderscript.Sampler MIRRORED_REPEAT_LINEAR_MIP_LINEAR(android.renderscript.RenderScript);
+    method public static android.renderscript.Sampler MIRRORED_REPEAT_NEAREST(android.renderscript.RenderScript);
+    method public static android.renderscript.Sampler WRAP_LINEAR(android.renderscript.RenderScript);
+    method public static android.renderscript.Sampler WRAP_LINEAR_MIP_LINEAR(android.renderscript.RenderScript);
+    method public static android.renderscript.Sampler WRAP_NEAREST(android.renderscript.RenderScript);
+    method public float getAnisotropy();
+    method public android.renderscript.Sampler.Value getMagnification();
+    method public android.renderscript.Sampler.Value getMinification();
+    method public android.renderscript.Sampler.Value getWrapS();
+    method public android.renderscript.Sampler.Value getWrapT();
+  }
+
+  public static class Sampler.Builder {
+    ctor public Sampler.Builder(android.renderscript.RenderScript);
+    method public android.renderscript.Sampler create();
+    method public void setAnisotropy(float);
+    method public void setMagnification(android.renderscript.Sampler.Value);
+    method public void setMinification(android.renderscript.Sampler.Value);
+    method public void setWrapS(android.renderscript.Sampler.Value);
+    method public void setWrapT(android.renderscript.Sampler.Value);
+  }
+
+  public enum Sampler.Value {
+    enum_constant public static final android.renderscript.Sampler.Value CLAMP;
+    enum_constant public static final android.renderscript.Sampler.Value LINEAR;
+    enum_constant public static final android.renderscript.Sampler.Value LINEAR_MIP_LINEAR;
+    enum_constant public static final android.renderscript.Sampler.Value LINEAR_MIP_NEAREST;
+    enum_constant public static final android.renderscript.Sampler.Value MIRRORED_REPEAT;
+    enum_constant public static final android.renderscript.Sampler.Value NEAREST;
+    enum_constant public static final android.renderscript.Sampler.Value WRAP;
+  }
+
+  public class Script extends android.renderscript.BaseObj {
+    method public void bindAllocation(android.renderscript.Allocation, int);
+    method protected android.renderscript.Script.FieldID createFieldID(int, android.renderscript.Element);
+    method protected android.renderscript.Script.InvokeID createInvokeID(int);
+    method protected android.renderscript.Script.KernelID createKernelID(int, int, android.renderscript.Element, android.renderscript.Element);
+    method protected void forEach(int, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.FieldPacker);
+    method protected void forEach(int, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.FieldPacker, android.renderscript.Script.LaunchOptions);
+    method protected void forEach(int, android.renderscript.Allocation[], android.renderscript.Allocation, android.renderscript.FieldPacker);
+    method protected void forEach(int, android.renderscript.Allocation[], android.renderscript.Allocation, android.renderscript.FieldPacker, android.renderscript.Script.LaunchOptions);
+    method public boolean getVarB(int);
+    method public double getVarD(int);
+    method public float getVarF(int);
+    method public int getVarI(int);
+    method public long getVarJ(int);
+    method public void getVarV(int, android.renderscript.FieldPacker);
+    method protected void invoke(int);
+    method protected void invoke(int, android.renderscript.FieldPacker);
+    method protected void reduce(int, android.renderscript.Allocation[], android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public void setTimeZone(String);
+    method public void setVar(int, float);
+    method public void setVar(int, double);
+    method public void setVar(int, int);
+    method public void setVar(int, long);
+    method public void setVar(int, boolean);
+    method public void setVar(int, android.renderscript.BaseObj);
+    method public void setVar(int, android.renderscript.FieldPacker);
+    method public void setVar(int, android.renderscript.FieldPacker, android.renderscript.Element, int[]);
+  }
+
+  public static class Script.Builder {
+  }
+
+  public static class Script.FieldBase {
+    ctor protected Script.FieldBase();
+    method public android.renderscript.Allocation getAllocation();
+    method public android.renderscript.Element getElement();
+    method public android.renderscript.Type getType();
+    method protected void init(android.renderscript.RenderScript, int);
+    method protected void init(android.renderscript.RenderScript, int, int);
+    method public void updateAllocation();
+    field protected android.renderscript.Allocation mAllocation;
+    field protected android.renderscript.Element mElement;
+  }
+
+  public static final class Script.FieldID extends android.renderscript.BaseObj {
+  }
+
+  public static final class Script.InvokeID extends android.renderscript.BaseObj {
+  }
+
+  public static final class Script.KernelID extends android.renderscript.BaseObj {
+  }
+
+  public static final class Script.LaunchOptions {
+    ctor public Script.LaunchOptions();
+    method public int getXEnd();
+    method public int getXStart();
+    method public int getYEnd();
+    method public int getYStart();
+    method public int getZEnd();
+    method public int getZStart();
+    method public android.renderscript.Script.LaunchOptions setX(int, int);
+    method public android.renderscript.Script.LaunchOptions setY(int, int);
+    method public android.renderscript.Script.LaunchOptions setZ(int, int);
+  }
+
+  public class ScriptC extends android.renderscript.Script {
+    ctor protected ScriptC(int, android.renderscript.RenderScript);
+    ctor protected ScriptC(long, android.renderscript.RenderScript);
+    ctor protected ScriptC(android.renderscript.RenderScript, android.content.res.Resources, int);
+    ctor protected ScriptC(android.renderscript.RenderScript, String, byte[], byte[]);
+  }
+
+  public final class ScriptGroup extends android.renderscript.BaseObj {
+    method public Object[] execute(java.lang.Object...);
+    method @Deprecated public void execute();
+    method @Deprecated public void setInput(android.renderscript.Script.KernelID, android.renderscript.Allocation);
+    method @Deprecated public void setOutput(android.renderscript.Script.KernelID, android.renderscript.Allocation);
+  }
+
+  public static final class ScriptGroup.Binding {
+    ctor public ScriptGroup.Binding(android.renderscript.Script.FieldID, Object);
+  }
+
+  @Deprecated public static final class ScriptGroup.Builder {
+    ctor @Deprecated public ScriptGroup.Builder(android.renderscript.RenderScript);
+    method @Deprecated public android.renderscript.ScriptGroup.Builder addConnection(android.renderscript.Type, android.renderscript.Script.KernelID, android.renderscript.Script.FieldID);
+    method @Deprecated public android.renderscript.ScriptGroup.Builder addConnection(android.renderscript.Type, android.renderscript.Script.KernelID, android.renderscript.Script.KernelID);
+    method @Deprecated public android.renderscript.ScriptGroup.Builder addKernel(android.renderscript.Script.KernelID);
+    method @Deprecated public android.renderscript.ScriptGroup create();
+  }
+
+  public static final class ScriptGroup.Builder2 {
+    ctor public ScriptGroup.Builder2(android.renderscript.RenderScript);
+    method public android.renderscript.ScriptGroup.Input addInput();
+    method public android.renderscript.ScriptGroup.Closure addInvoke(android.renderscript.Script.InvokeID, java.lang.Object...);
+    method public android.renderscript.ScriptGroup.Closure addKernel(android.renderscript.Script.KernelID, android.renderscript.Type, java.lang.Object...);
+    method public android.renderscript.ScriptGroup create(String, android.renderscript.ScriptGroup.Future...);
+  }
+
+  public static final class ScriptGroup.Closure extends android.renderscript.BaseObj {
+    method public android.renderscript.ScriptGroup.Future getGlobal(android.renderscript.Script.FieldID);
+    method public android.renderscript.ScriptGroup.Future getReturn();
+  }
+
+  public static final class ScriptGroup.Future {
+  }
+
+  public static final class ScriptGroup.Input {
+  }
+
+  public abstract class ScriptIntrinsic extends android.renderscript.Script {
+  }
+
+  public final class ScriptIntrinsic3DLUT extends android.renderscript.ScriptIntrinsic {
+    method public static android.renderscript.ScriptIntrinsic3DLUT create(android.renderscript.RenderScript, android.renderscript.Element);
+    method public void forEach(android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void forEach(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public android.renderscript.Script.KernelID getKernelID();
+    method public void setLUT(android.renderscript.Allocation);
+  }
+
+  public final class ScriptIntrinsicBLAS extends android.renderscript.ScriptIntrinsic {
+    method public void BNNM(android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation, int, int);
+    method public void CGBMV(int, int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Float2, android.renderscript.Allocation, int);
+    method public void CGEMM(int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Float2, android.renderscript.Allocation);
+    method public void CGEMV(int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Float2, android.renderscript.Allocation, int);
+    method public void CGERC(android.renderscript.Float2, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
+    method public void CGERU(android.renderscript.Float2, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
+    method public void CHBMV(int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Float2, android.renderscript.Allocation, int);
+    method public void CHEMM(int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Float2, android.renderscript.Allocation);
+    method public void CHEMV(int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Float2, android.renderscript.Allocation, int);
+    method public void CHER(int, float, android.renderscript.Allocation, int, android.renderscript.Allocation);
+    method public void CHER2(int, android.renderscript.Float2, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
+    method public void CHER2K(int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, float, android.renderscript.Allocation);
+    method public void CHERK(int, int, float, android.renderscript.Allocation, float, android.renderscript.Allocation);
+    method public void CHPMV(int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Float2, android.renderscript.Allocation, int);
+    method public void CHPR(int, float, android.renderscript.Allocation, int, android.renderscript.Allocation);
+    method public void CHPR2(int, android.renderscript.Float2, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
+    method public void CSYMM(int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Float2, android.renderscript.Allocation);
+    method public void CSYR2K(int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Float2, android.renderscript.Allocation);
+    method public void CSYRK(int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Float2, android.renderscript.Allocation);
+    method public void CTBMV(int, int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
+    method public void CTBSV(int, int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
+    method public void CTPMV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
+    method public void CTPSV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
+    method public void CTRMM(int, int, int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void CTRMV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
+    method public void CTRSM(int, int, int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void CTRSV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
+    method public void DGBMV(int, int, int, double, android.renderscript.Allocation, android.renderscript.Allocation, int, double, android.renderscript.Allocation, int);
+    method public void DGEMM(int, int, double, android.renderscript.Allocation, android.renderscript.Allocation, double, android.renderscript.Allocation);
+    method public void DGEMV(int, double, android.renderscript.Allocation, android.renderscript.Allocation, int, double, android.renderscript.Allocation, int);
+    method public void DGER(double, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
+    method public void DSBMV(int, int, double, android.renderscript.Allocation, android.renderscript.Allocation, int, double, android.renderscript.Allocation, int);
+    method public void DSPMV(int, double, android.renderscript.Allocation, android.renderscript.Allocation, int, double, android.renderscript.Allocation, int);
+    method public void DSPR(int, double, android.renderscript.Allocation, int, android.renderscript.Allocation);
+    method public void DSPR2(int, double, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
+    method public void DSYMM(int, int, double, android.renderscript.Allocation, android.renderscript.Allocation, double, android.renderscript.Allocation);
+    method public void DSYMV(int, double, android.renderscript.Allocation, android.renderscript.Allocation, int, double, android.renderscript.Allocation, int);
+    method public void DSYR(int, double, android.renderscript.Allocation, int, android.renderscript.Allocation);
+    method public void DSYR2(int, double, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
+    method public void DSYR2K(int, int, double, android.renderscript.Allocation, android.renderscript.Allocation, double, android.renderscript.Allocation);
+    method public void DSYRK(int, int, double, android.renderscript.Allocation, double, android.renderscript.Allocation);
+    method public void DTBMV(int, int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
+    method public void DTBSV(int, int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
+    method public void DTPMV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
+    method public void DTPSV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
+    method public void DTRMM(int, int, int, int, double, android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void DTRMV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
+    method public void DTRSM(int, int, int, int, double, android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void DTRSV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
+    method public void SGBMV(int, int, int, float, android.renderscript.Allocation, android.renderscript.Allocation, int, float, android.renderscript.Allocation, int);
+    method public void SGEMM(int, int, float, android.renderscript.Allocation, android.renderscript.Allocation, float, android.renderscript.Allocation);
+    method public void SGEMV(int, float, android.renderscript.Allocation, android.renderscript.Allocation, int, float, android.renderscript.Allocation, int);
+    method public void SGER(float, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
+    method public void SSBMV(int, int, float, android.renderscript.Allocation, android.renderscript.Allocation, int, float, android.renderscript.Allocation, int);
+    method public void SSPMV(int, float, android.renderscript.Allocation, android.renderscript.Allocation, int, float, android.renderscript.Allocation, int);
+    method public void SSPR(int, float, android.renderscript.Allocation, int, android.renderscript.Allocation);
+    method public void SSPR2(int, float, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
+    method public void SSYMM(int, int, float, android.renderscript.Allocation, android.renderscript.Allocation, float, android.renderscript.Allocation);
+    method public void SSYMV(int, float, android.renderscript.Allocation, android.renderscript.Allocation, int, float, android.renderscript.Allocation, int);
+    method public void SSYR(int, float, android.renderscript.Allocation, int, android.renderscript.Allocation);
+    method public void SSYR2(int, float, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
+    method public void SSYR2K(int, int, float, android.renderscript.Allocation, android.renderscript.Allocation, float, android.renderscript.Allocation);
+    method public void SSYRK(int, int, float, android.renderscript.Allocation, float, android.renderscript.Allocation);
+    method public void STBMV(int, int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
+    method public void STBSV(int, int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
+    method public void STPMV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
+    method public void STPSV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
+    method public void STRMM(int, int, int, int, float, android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void STRMV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
+    method public void STRSM(int, int, int, int, float, android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void STRSV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
+    method public void ZGBMV(int, int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Double2, android.renderscript.Allocation, int);
+    method public void ZGEMM(int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Double2, android.renderscript.Allocation);
+    method public void ZGEMV(int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Double2, android.renderscript.Allocation, int);
+    method public void ZGERC(android.renderscript.Double2, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
+    method public void ZGERU(android.renderscript.Double2, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
+    method public void ZHBMV(int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Double2, android.renderscript.Allocation, int);
+    method public void ZHEMM(int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Double2, android.renderscript.Allocation);
+    method public void ZHEMV(int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Double2, android.renderscript.Allocation, int);
+    method public void ZHER(int, double, android.renderscript.Allocation, int, android.renderscript.Allocation);
+    method public void ZHER2(int, android.renderscript.Double2, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
+    method public void ZHER2K(int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, double, android.renderscript.Allocation);
+    method public void ZHERK(int, int, double, android.renderscript.Allocation, double, android.renderscript.Allocation);
+    method public void ZHPMV(int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Double2, android.renderscript.Allocation, int);
+    method public void ZHPR(int, double, android.renderscript.Allocation, int, android.renderscript.Allocation);
+    method public void ZHPR2(int, android.renderscript.Double2, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
+    method public void ZSYMM(int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Double2, android.renderscript.Allocation);
+    method public void ZSYR2K(int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Double2, android.renderscript.Allocation);
+    method public void ZSYRK(int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Double2, android.renderscript.Allocation);
+    method public void ZTBMV(int, int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
+    method public void ZTBSV(int, int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
+    method public void ZTPMV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
+    method public void ZTPSV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
+    method public void ZTRMM(int, int, int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void ZTRMV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
+    method public void ZTRSM(int, int, int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void ZTRSV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
+    method public static android.renderscript.ScriptIntrinsicBLAS create(android.renderscript.RenderScript);
+    field public static final int CONJ_TRANSPOSE = 113; // 0x71
+    field public static final int LEFT = 141; // 0x8d
+    field public static final int LOWER = 122; // 0x7a
+    field public static final int NON_UNIT = 131; // 0x83
+    field public static final int NO_TRANSPOSE = 111; // 0x6f
+    field public static final int RIGHT = 142; // 0x8e
+    field public static final int TRANSPOSE = 112; // 0x70
+    field public static final int UNIT = 132; // 0x84
+    field public static final int UPPER = 121; // 0x79
+  }
+
+  public class ScriptIntrinsicBlend extends android.renderscript.ScriptIntrinsic {
+    method public static android.renderscript.ScriptIntrinsicBlend create(android.renderscript.RenderScript, android.renderscript.Element);
+    method public void forEachAdd(android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void forEachAdd(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public void forEachClear(android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void forEachClear(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public void forEachDst(android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void forEachDst(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public void forEachDstAtop(android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void forEachDstAtop(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public void forEachDstIn(android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void forEachDstIn(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public void forEachDstOut(android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void forEachDstOut(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public void forEachDstOver(android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void forEachDstOver(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public void forEachMultiply(android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void forEachMultiply(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public void forEachSrc(android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void forEachSrc(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public void forEachSrcAtop(android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void forEachSrcAtop(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public void forEachSrcIn(android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void forEachSrcIn(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public void forEachSrcOut(android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void forEachSrcOut(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public void forEachSrcOver(android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void forEachSrcOver(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public void forEachSubtract(android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void forEachSubtract(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public void forEachXor(android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void forEachXor(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public android.renderscript.Script.KernelID getKernelIDAdd();
+    method public android.renderscript.Script.KernelID getKernelIDClear();
+    method public android.renderscript.Script.KernelID getKernelIDDst();
+    method public android.renderscript.Script.KernelID getKernelIDDstAtop();
+    method public android.renderscript.Script.KernelID getKernelIDDstIn();
+    method public android.renderscript.Script.KernelID getKernelIDDstOut();
+    method public android.renderscript.Script.KernelID getKernelIDDstOver();
+    method public android.renderscript.Script.KernelID getKernelIDMultiply();
+    method public android.renderscript.Script.KernelID getKernelIDSrc();
+    method public android.renderscript.Script.KernelID getKernelIDSrcAtop();
+    method public android.renderscript.Script.KernelID getKernelIDSrcIn();
+    method public android.renderscript.Script.KernelID getKernelIDSrcOut();
+    method public android.renderscript.Script.KernelID getKernelIDSrcOver();
+    method public android.renderscript.Script.KernelID getKernelIDSubtract();
+    method public android.renderscript.Script.KernelID getKernelIDXor();
+  }
+
+  public final class ScriptIntrinsicBlur extends android.renderscript.ScriptIntrinsic {
+    method public static android.renderscript.ScriptIntrinsicBlur create(android.renderscript.RenderScript, android.renderscript.Element);
+    method public void forEach(android.renderscript.Allocation);
+    method public void forEach(android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public android.renderscript.Script.FieldID getFieldID_Input();
+    method public android.renderscript.Script.KernelID getKernelID();
+    method public void setInput(android.renderscript.Allocation);
+    method public void setRadius(float);
+  }
+
+  public final class ScriptIntrinsicColorMatrix extends android.renderscript.ScriptIntrinsic {
+    method @Deprecated public static android.renderscript.ScriptIntrinsicColorMatrix create(android.renderscript.RenderScript, android.renderscript.Element);
+    method public static android.renderscript.ScriptIntrinsicColorMatrix create(android.renderscript.RenderScript);
+    method public void forEach(android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void forEach(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public android.renderscript.Script.KernelID getKernelID();
+    method public void setAdd(android.renderscript.Float4);
+    method public void setAdd(float, float, float, float);
+    method public void setColorMatrix(android.renderscript.Matrix4f);
+    method public void setColorMatrix(android.renderscript.Matrix3f);
+    method public void setGreyscale();
+    method public void setRGBtoYUV();
+    method public void setYUVtoRGB();
+  }
+
+  public final class ScriptIntrinsicConvolve3x3 extends android.renderscript.ScriptIntrinsic {
+    method public static android.renderscript.ScriptIntrinsicConvolve3x3 create(android.renderscript.RenderScript, android.renderscript.Element);
+    method public void forEach(android.renderscript.Allocation);
+    method public void forEach(android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public android.renderscript.Script.FieldID getFieldID_Input();
+    method public android.renderscript.Script.KernelID getKernelID();
+    method public void setCoefficients(float[]);
+    method public void setInput(android.renderscript.Allocation);
+  }
+
+  public final class ScriptIntrinsicConvolve5x5 extends android.renderscript.ScriptIntrinsic {
+    method public static android.renderscript.ScriptIntrinsicConvolve5x5 create(android.renderscript.RenderScript, android.renderscript.Element);
+    method public void forEach(android.renderscript.Allocation);
+    method public void forEach(android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public android.renderscript.Script.FieldID getFieldID_Input();
+    method public android.renderscript.Script.KernelID getKernelID();
+    method public void setCoefficients(float[]);
+    method public void setInput(android.renderscript.Allocation);
+  }
+
+  public final class ScriptIntrinsicHistogram extends android.renderscript.ScriptIntrinsic {
+    method public static android.renderscript.ScriptIntrinsicHistogram create(android.renderscript.RenderScript, android.renderscript.Element);
+    method public void forEach(android.renderscript.Allocation);
+    method public void forEach(android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public void forEach_Dot(android.renderscript.Allocation);
+    method public void forEach_Dot(android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public android.renderscript.Script.FieldID getFieldID_Input();
+    method public android.renderscript.Script.KernelID getKernelID_Separate();
+    method public void setDotCoefficients(float, float, float, float);
+    method public void setOutput(android.renderscript.Allocation);
+  }
+
+  public final class ScriptIntrinsicLUT extends android.renderscript.ScriptIntrinsic {
+    method public static android.renderscript.ScriptIntrinsicLUT create(android.renderscript.RenderScript, android.renderscript.Element);
+    method public void forEach(android.renderscript.Allocation, android.renderscript.Allocation);
+    method public void forEach(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public android.renderscript.Script.KernelID getKernelID();
+    method public void setAlpha(int, int);
+    method public void setBlue(int, int);
+    method public void setGreen(int, int);
+    method public void setRed(int, int);
+  }
+
+  public final class ScriptIntrinsicResize extends android.renderscript.ScriptIntrinsic {
+    method public static android.renderscript.ScriptIntrinsicResize create(android.renderscript.RenderScript);
+    method public void forEach_bicubic(android.renderscript.Allocation);
+    method public void forEach_bicubic(android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
+    method public android.renderscript.Script.FieldID getFieldID_Input();
+    method public android.renderscript.Script.KernelID getKernelID_bicubic();
+    method public void setInput(android.renderscript.Allocation);
+  }
+
+  public final class ScriptIntrinsicYuvToRGB extends android.renderscript.ScriptIntrinsic {
+    method public static android.renderscript.ScriptIntrinsicYuvToRGB create(android.renderscript.RenderScript, android.renderscript.Element);
+    method public void forEach(android.renderscript.Allocation);
+    method public android.renderscript.Script.FieldID getFieldID_Input();
+    method public android.renderscript.Script.KernelID getKernelID();
+    method public void setInput(android.renderscript.Allocation);
+  }
+
+  public class Short2 {
+    ctor public Short2();
+    ctor public Short2(short, short);
+    field public short x;
+    field public short y;
+  }
+
+  public class Short3 {
+    ctor public Short3();
+    ctor public Short3(short, short, short);
+    field public short x;
+    field public short y;
+    field public short z;
+  }
+
+  public class Short4 {
+    ctor public Short4();
+    ctor public Short4(short, short, short, short);
+    field public short w;
+    field public short x;
+    field public short y;
+    field public short z;
+  }
+
+  public class Type extends android.renderscript.BaseObj {
+    method public static android.renderscript.Type createX(android.renderscript.RenderScript, android.renderscript.Element, int);
+    method public static android.renderscript.Type createXY(android.renderscript.RenderScript, android.renderscript.Element, int, int);
+    method public static android.renderscript.Type createXYZ(android.renderscript.RenderScript, android.renderscript.Element, int, int, int);
+    method public int getCount();
+    method public android.renderscript.Element getElement();
+    method public int getX();
+    method public int getY();
+    method public int getYuv();
+    method public int getZ();
+    method public boolean hasFaces();
+    method public boolean hasMipmaps();
+  }
+
+  public static class Type.Builder {
+    ctor public Type.Builder(android.renderscript.RenderScript, android.renderscript.Element);
+    method public android.renderscript.Type create();
+    method public android.renderscript.Type.Builder setFaces(boolean);
+    method public android.renderscript.Type.Builder setMipmaps(boolean);
+    method public android.renderscript.Type.Builder setX(int);
+    method public android.renderscript.Type.Builder setY(int);
+    method public android.renderscript.Type.Builder setYuvFormat(int);
+    method public android.renderscript.Type.Builder setZ(int);
+  }
+
+  public enum Type.CubemapFace {
+    enum_constant public static final android.renderscript.Type.CubemapFace NEGATIVE_X;
+    enum_constant public static final android.renderscript.Type.CubemapFace NEGATIVE_Y;
+    enum_constant public static final android.renderscript.Type.CubemapFace NEGATIVE_Z;
+    enum_constant public static final android.renderscript.Type.CubemapFace POSITIVE_X;
+    enum_constant public static final android.renderscript.Type.CubemapFace POSITIVE_Y;
+    enum_constant public static final android.renderscript.Type.CubemapFace POSITIVE_Z;
+    enum_constant @Deprecated public static final android.renderscript.Type.CubemapFace POSITVE_X;
+    enum_constant @Deprecated public static final android.renderscript.Type.CubemapFace POSITVE_Y;
+    enum_constant @Deprecated public static final android.renderscript.Type.CubemapFace POSITVE_Z;
+  }
+
+}
+
+package android.sax {
+
+  public class Element {
+    method public android.sax.Element getChild(String);
+    method public android.sax.Element getChild(String, String);
+    method public android.sax.Element requireChild(String);
+    method public android.sax.Element requireChild(String, String);
+    method public void setElementListener(android.sax.ElementListener);
+    method public void setEndElementListener(android.sax.EndElementListener);
+    method public void setEndTextElementListener(android.sax.EndTextElementListener);
+    method public void setStartElementListener(android.sax.StartElementListener);
+    method public void setTextElementListener(android.sax.TextElementListener);
+  }
+
+  public interface ElementListener extends android.sax.StartElementListener android.sax.EndElementListener {
+  }
+
+  public interface EndElementListener {
+    method public void end();
+  }
+
+  public interface EndTextElementListener {
+    method public void end(String);
+  }
+
+  public class RootElement extends android.sax.Element {
+    ctor public RootElement(String, String);
+    ctor public RootElement(String);
+    method public org.xml.sax.ContentHandler getContentHandler();
+  }
+
+  public interface StartElementListener {
+    method public void start(org.xml.sax.Attributes);
+  }
+
+  public interface TextElementListener extends android.sax.StartElementListener android.sax.EndTextElementListener {
+  }
+
+}
+
+package android.se.omapi {
+
+  public final class Channel implements java.nio.channels.Channel {
+    method public void close();
+    method @Nullable public byte[] getSelectResponse();
+    method @NonNull public android.se.omapi.Session getSession();
+    method public boolean isBasicChannel();
+    method public boolean isOpen();
+    method public boolean selectNext() throws java.io.IOException;
+    method @NonNull public byte[] transmit(@NonNull byte[]) throws java.io.IOException;
+  }
+
+  public final class Reader {
+    method public void closeSessions();
+    method @NonNull public String getName();
+    method @NonNull public android.se.omapi.SEService getSEService();
+    method public boolean isSecureElementPresent();
+    method @NonNull public android.se.omapi.Session openSession() throws java.io.IOException;
+  }
+
+  public final class SEService {
+    ctor public SEService(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, @NonNull android.se.omapi.SEService.OnConnectedListener);
+    method @NonNull public android.se.omapi.Reader[] getReaders();
+    method @NonNull public android.se.omapi.Reader getUiccReader(int);
+    method @NonNull public String getVersion();
+    method public boolean isConnected();
+    method public void shutdown();
+  }
+
+  public static interface SEService.OnConnectedListener {
+    method public void onConnected();
+  }
+
+  public final class Session {
+    method public void close();
+    method public void closeChannels();
+    method @Nullable public byte[] getATR();
+    method @NonNull public android.se.omapi.Reader getReader();
+    method public boolean isClosed();
+    method @Nullable public android.se.omapi.Channel openBasicChannel(@Nullable byte[], @Nullable byte) throws java.io.IOException;
+    method @Nullable public android.se.omapi.Channel openBasicChannel(@Nullable byte[]) throws java.io.IOException;
+    method @Nullable public android.se.omapi.Channel openLogicalChannel(@Nullable byte[], @Nullable byte) throws java.io.IOException;
+    method @Nullable public android.se.omapi.Channel openLogicalChannel(@Nullable byte[]) throws java.io.IOException;
+  }
+
+}
+
+package android.security {
+
+  public final class AttestedKeyPair {
+    ctor public AttestedKeyPair(@Nullable java.security.KeyPair, @NonNull java.util.List<java.security.cert.Certificate>);
+    method @NonNull public java.util.List<java.security.cert.Certificate> getAttestationRecord();
+    method @Nullable public java.security.KeyPair getKeyPair();
+  }
+
+  public class ConfirmationAlreadyPresentingException extends java.lang.Exception {
+    ctor public ConfirmationAlreadyPresentingException();
+    ctor public ConfirmationAlreadyPresentingException(String);
+  }
+
+  public abstract class ConfirmationCallback {
+    ctor public ConfirmationCallback();
+    method public void onCanceled();
+    method public void onConfirmed(@NonNull byte[]);
+    method public void onDismissed();
+    method public void onError(Throwable);
+  }
+
+  public class ConfirmationNotAvailableException extends java.lang.Exception {
+    ctor public ConfirmationNotAvailableException();
+    ctor public ConfirmationNotAvailableException(String);
+  }
+
+  public class ConfirmationPrompt {
+    method public void cancelPrompt();
+    method public static boolean isSupported(android.content.Context);
+    method public void presentPrompt(@NonNull java.util.concurrent.Executor, @NonNull android.security.ConfirmationCallback) throws android.security.ConfirmationAlreadyPresentingException, android.security.ConfirmationNotAvailableException;
+  }
+
+  public static final class ConfirmationPrompt.Builder {
+    ctor public ConfirmationPrompt.Builder(android.content.Context);
+    method public android.security.ConfirmationPrompt build();
+    method public android.security.ConfirmationPrompt.Builder setExtraData(byte[]);
+    method public android.security.ConfirmationPrompt.Builder setPromptText(CharSequence);
+  }
+
+  public final class FileIntegrityManager {
+    method public boolean isApkVeritySupported();
+    method @RequiresPermission(anyOf={android.Manifest.permission.INSTALL_PACKAGES, android.Manifest.permission.REQUEST_INSTALL_PACKAGES}) public boolean isAppSourceCertificateTrusted(@NonNull java.security.cert.X509Certificate) throws java.security.cert.CertificateEncodingException;
+  }
+
+  public final class KeyChain {
+    ctor public KeyChain();
+    method public static void choosePrivateKeyAlias(@NonNull android.app.Activity, @NonNull android.security.KeyChainAliasCallback, @Nullable String[], @Nullable java.security.Principal[], @Nullable String, int, @Nullable String);
+    method public static void choosePrivateKeyAlias(@NonNull android.app.Activity, @NonNull android.security.KeyChainAliasCallback, @Nullable String[], @Nullable java.security.Principal[], @Nullable android.net.Uri, @Nullable String);
+    method @NonNull public static android.content.Intent createInstallIntent();
+    method @Nullable @WorkerThread public static java.security.cert.X509Certificate[] getCertificateChain(@NonNull android.content.Context, @NonNull String) throws java.lang.InterruptedException, android.security.KeyChainException;
+    method @Nullable @WorkerThread public static java.security.PrivateKey getPrivateKey(@NonNull android.content.Context, @NonNull String) throws java.lang.InterruptedException, android.security.KeyChainException;
+    method @Deprecated public static boolean isBoundKeyAlgorithm(@NonNull String);
+    method public static boolean isKeyAlgorithmSupported(@NonNull String);
+    field public static final String ACTION_KEYCHAIN_CHANGED = "android.security.action.KEYCHAIN_CHANGED";
+    field public static final String ACTION_KEY_ACCESS_CHANGED = "android.security.action.KEY_ACCESS_CHANGED";
+    field @Deprecated public static final String ACTION_STORAGE_CHANGED = "android.security.STORAGE_CHANGED";
+    field public static final String ACTION_TRUST_STORE_CHANGED = "android.security.action.TRUST_STORE_CHANGED";
+    field public static final String EXTRA_CERTIFICATE = "CERT";
+    field public static final String EXTRA_KEY_ACCESSIBLE = "android.security.extra.KEY_ACCESSIBLE";
+    field public static final String EXTRA_KEY_ALIAS = "android.security.extra.KEY_ALIAS";
+    field public static final String EXTRA_NAME = "name";
+    field public static final String EXTRA_PKCS12 = "PKCS12";
+    field public static final String KEY_ALIAS_SELECTION_DENIED = "android:alias-selection-denied";
+  }
+
+  public interface KeyChainAliasCallback {
+    method public void alias(@Nullable String);
+  }
+
+  public class KeyChainException extends java.lang.Exception {
+    ctor public KeyChainException();
+    ctor public KeyChainException(String);
+    ctor public KeyChainException(String, Throwable);
+    ctor public KeyChainException(Throwable);
+  }
+
+  @Deprecated public final class KeyPairGeneratorSpec implements java.security.spec.AlgorithmParameterSpec {
+    method @Deprecated @NonNull public java.security.spec.AlgorithmParameterSpec getAlgorithmParameterSpec();
+    method @Deprecated public android.content.Context getContext();
+    method @Deprecated @NonNull public java.util.Date getEndDate();
+    method @Deprecated public int getKeySize();
+    method @Deprecated @Nullable public String getKeyType();
+    method @Deprecated public String getKeystoreAlias();
+    method @Deprecated @NonNull public java.math.BigInteger getSerialNumber();
+    method @Deprecated @NonNull public java.util.Date getStartDate();
+    method @Deprecated @NonNull public javax.security.auth.x500.X500Principal getSubjectDN();
+    method @Deprecated public boolean isEncryptionRequired();
+  }
+
+  @Deprecated public static final class KeyPairGeneratorSpec.Builder {
+    ctor @Deprecated public KeyPairGeneratorSpec.Builder(@NonNull android.content.Context);
+    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec build();
+    method @Deprecated public android.security.KeyPairGeneratorSpec.Builder setAlgorithmParameterSpec(@NonNull java.security.spec.AlgorithmParameterSpec);
+    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setAlias(@NonNull String);
+    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setEncryptionRequired();
+    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setEndDate(@NonNull java.util.Date);
+    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setKeySize(int);
+    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setKeyType(@NonNull String) throws java.security.NoSuchAlgorithmException;
+    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setSerialNumber(@NonNull java.math.BigInteger);
+    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setStartDate(@NonNull java.util.Date);
+    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setSubject(@NonNull javax.security.auth.x500.X500Principal);
+  }
+
+  @Deprecated public final class KeyStoreParameter implements java.security.KeyStore.ProtectionParameter {
+    method @Deprecated public boolean isEncryptionRequired();
+  }
+
+  @Deprecated public static final class KeyStoreParameter.Builder {
+    ctor @Deprecated public KeyStoreParameter.Builder(@NonNull android.content.Context);
+    method @Deprecated @NonNull public android.security.KeyStoreParameter build();
+    method @Deprecated @NonNull public android.security.KeyStoreParameter.Builder setEncryptionRequired(boolean);
+  }
+
+  public class NetworkSecurityPolicy {
+    method public static android.security.NetworkSecurityPolicy getInstance();
+    method public boolean isCleartextTrafficPermitted();
+    method public boolean isCleartextTrafficPermitted(String);
+  }
+
+}
+
+package android.security.identity {
+
+  public class AccessControlProfile {
+  }
+
+  public static final class AccessControlProfile.Builder {
+    ctor public AccessControlProfile.Builder(@NonNull android.security.identity.AccessControlProfileId);
+    method @NonNull public android.security.identity.AccessControlProfile build();
+    method @NonNull public android.security.identity.AccessControlProfile.Builder setReaderCertificate(@NonNull java.security.cert.X509Certificate);
+    method @NonNull public android.security.identity.AccessControlProfile.Builder setUserAuthenticationRequired(boolean);
+    method @NonNull public android.security.identity.AccessControlProfile.Builder setUserAuthenticationTimeout(long);
+  }
+
+  public class AccessControlProfileId {
+    ctor public AccessControlProfileId(int);
+    method public int getId();
+  }
+
+  public class AlreadyPersonalizedException extends android.security.identity.IdentityCredentialException {
+    ctor public AlreadyPersonalizedException(@NonNull String);
+    ctor public AlreadyPersonalizedException(@NonNull String, @NonNull Throwable);
+  }
+
+  public class CipherSuiteNotSupportedException extends android.security.identity.IdentityCredentialException {
+    ctor public CipherSuiteNotSupportedException(@NonNull String);
+    ctor public CipherSuiteNotSupportedException(@NonNull String, @NonNull Throwable);
+  }
+
+  public class DocTypeNotSupportedException extends android.security.identity.IdentityCredentialException {
+    ctor public DocTypeNotSupportedException(@NonNull String);
+    ctor public DocTypeNotSupportedException(@NonNull String, @NonNull Throwable);
+  }
+
+  public class EphemeralPublicKeyNotFoundException extends android.security.identity.IdentityCredentialException {
+    ctor public EphemeralPublicKeyNotFoundException(@NonNull String);
+    ctor public EphemeralPublicKeyNotFoundException(@NonNull String, @NonNull Throwable);
+  }
+
+  public abstract class IdentityCredential {
+    method @NonNull public abstract java.security.KeyPair createEphemeralKeyPair();
+    method @NonNull public abstract byte[] decryptMessageFromReader(@NonNull byte[]) throws android.security.identity.MessageDecryptionException;
+    method @NonNull public abstract byte[] encryptMessageToReader(@NonNull byte[]);
+    method @NonNull public abstract java.util.Collection<java.security.cert.X509Certificate> getAuthKeysNeedingCertification();
+    method @NonNull public abstract int[] getAuthenticationDataUsageCount();
+    method @NonNull public abstract java.util.Collection<java.security.cert.X509Certificate> getCredentialKeyCertificateChain();
+    method @NonNull public abstract android.security.identity.ResultData getEntries(@Nullable byte[], @NonNull java.util.Map<java.lang.String,java.util.Collection<java.lang.String>>, @Nullable byte[], @Nullable byte[]) throws android.security.identity.EphemeralPublicKeyNotFoundException, android.security.identity.InvalidReaderSignatureException, android.security.identity.InvalidRequestMessageException, android.security.identity.NoAuthenticationKeyAvailableException, android.security.identity.SessionTranscriptMismatchException;
+    method public abstract void setAllowUsingExhaustedKeys(boolean);
+    method public abstract void setAvailableAuthenticationKeys(int, int);
+    method public abstract void setReaderEphemeralPublicKey(@NonNull java.security.PublicKey) throws java.security.InvalidKeyException;
+    method public abstract void storeStaticAuthenticationData(@NonNull java.security.cert.X509Certificate, @NonNull byte[]) throws android.security.identity.UnknownAuthenticationKeyException;
+  }
+
+  public class IdentityCredentialException extends java.lang.Exception {
+    ctor public IdentityCredentialException(@NonNull String);
+    ctor public IdentityCredentialException(@NonNull String, @NonNull Throwable);
+  }
+
+  public abstract class IdentityCredentialStore {
+    method @NonNull public abstract android.security.identity.WritableIdentityCredential createCredential(@NonNull String, @NonNull String) throws android.security.identity.AlreadyPersonalizedException, android.security.identity.DocTypeNotSupportedException;
+    method @Nullable public abstract byte[] deleteCredentialByName(@NonNull String);
+    method @Nullable public abstract android.security.identity.IdentityCredential getCredentialByName(@NonNull String, int) throws android.security.identity.CipherSuiteNotSupportedException;
+    method @Nullable public static android.security.identity.IdentityCredentialStore getDirectAccessInstance(@NonNull android.content.Context);
+    method @Nullable public static android.security.identity.IdentityCredentialStore getInstance(@NonNull android.content.Context);
+    method @NonNull public abstract String[] getSupportedDocTypes();
+    field public static final int CIPHERSUITE_ECDHE_HKDF_ECDSA_WITH_AES_256_GCM_SHA256 = 1; // 0x1
+  }
+
+  public class InvalidReaderSignatureException extends android.security.identity.IdentityCredentialException {
+    ctor public InvalidReaderSignatureException(@NonNull String);
+    ctor public InvalidReaderSignatureException(@NonNull String, @NonNull Throwable);
+  }
+
+  public class InvalidRequestMessageException extends android.security.identity.IdentityCredentialException {
+    ctor public InvalidRequestMessageException(@NonNull String);
+    ctor public InvalidRequestMessageException(@NonNull String, @NonNull Throwable);
+  }
+
+  public class MessageDecryptionException extends android.security.identity.IdentityCredentialException {
+    ctor public MessageDecryptionException(@NonNull String);
+    ctor public MessageDecryptionException(@NonNull String, @NonNull Throwable);
+  }
+
+  public class NoAuthenticationKeyAvailableException extends android.security.identity.IdentityCredentialException {
+    ctor public NoAuthenticationKeyAvailableException(@NonNull String);
+    ctor public NoAuthenticationKeyAvailableException(@NonNull String, @NonNull Throwable);
+  }
+
+  public class PersonalizationData {
+  }
+
+  public static final class PersonalizationData.Builder {
+    ctor public PersonalizationData.Builder();
+    method @NonNull public android.security.identity.PersonalizationData.Builder addAccessControlProfile(@NonNull android.security.identity.AccessControlProfile);
+    method @NonNull public android.security.identity.PersonalizationData build();
+    method @NonNull public android.security.identity.PersonalizationData.Builder putEntry(@NonNull String, @NonNull String, @NonNull java.util.Collection<android.security.identity.AccessControlProfileId>, @NonNull byte[]);
+  }
+
+  public abstract class ResultData {
+    method @NonNull public abstract byte[] getAuthenticatedData();
+    method @Nullable public abstract byte[] getEntry(@NonNull String, @NonNull String);
+    method @Nullable public abstract java.util.Collection<java.lang.String> getEntryNames(@NonNull String);
+    method @Nullable public abstract byte[] getMessageAuthenticationCode();
+    method @NonNull public abstract java.util.Collection<java.lang.String> getNamespaces();
+    method @Nullable public abstract java.util.Collection<java.lang.String> getRetrievedEntryNames(@NonNull String);
+    method @NonNull public abstract byte[] getStaticAuthenticationData();
+    method public abstract int getStatus(@NonNull String, @NonNull String);
+    field public static final int STATUS_NOT_IN_REQUEST_MESSAGE = 3; // 0x3
+    field public static final int STATUS_NOT_REQUESTED = 2; // 0x2
+    field public static final int STATUS_NO_ACCESS_CONTROL_PROFILES = 6; // 0x6
+    field public static final int STATUS_NO_SUCH_ENTRY = 1; // 0x1
+    field public static final int STATUS_OK = 0; // 0x0
+    field public static final int STATUS_READER_AUTHENTICATION_FAILED = 5; // 0x5
+    field public static final int STATUS_USER_AUTHENTICATION_FAILED = 4; // 0x4
+  }
+
+  public class SessionTranscriptMismatchException extends android.security.identity.IdentityCredentialException {
+    ctor public SessionTranscriptMismatchException(@NonNull String);
+    ctor public SessionTranscriptMismatchException(@NonNull String, @NonNull Throwable);
+  }
+
+  public class UnknownAuthenticationKeyException extends android.security.identity.IdentityCredentialException {
+    ctor public UnknownAuthenticationKeyException(@NonNull String);
+    ctor public UnknownAuthenticationKeyException(@NonNull String, @NonNull Throwable);
+  }
+
+  public abstract class WritableIdentityCredential {
+    method @NonNull public abstract java.util.Collection<java.security.cert.X509Certificate> getCredentialKeyCertificateChain(@NonNull byte[]);
+    method @NonNull public abstract byte[] personalize(@NonNull android.security.identity.PersonalizationData);
+  }
+
+}
+
+package android.security.keystore {
+
+  public class BackendBusyException extends java.security.ProviderException {
+    ctor public BackendBusyException();
+    ctor public BackendBusyException(@NonNull String);
+    ctor public BackendBusyException(@NonNull String, @NonNull Throwable);
+  }
+
+  public class KeyExpiredException extends java.security.InvalidKeyException {
+    ctor public KeyExpiredException();
+    ctor public KeyExpiredException(String);
+    ctor public KeyExpiredException(String, Throwable);
+  }
+
+  public final class KeyGenParameterSpec implements java.security.spec.AlgorithmParameterSpec {
+    method @Nullable public java.security.spec.AlgorithmParameterSpec getAlgorithmParameterSpec();
+    method public byte[] getAttestationChallenge();
+    method @NonNull public String[] getBlockModes();
+    method @NonNull public java.util.Date getCertificateNotAfter();
+    method @NonNull public java.util.Date getCertificateNotBefore();
+    method @NonNull public java.math.BigInteger getCertificateSerialNumber();
+    method @NonNull public javax.security.auth.x500.X500Principal getCertificateSubject();
+    method @NonNull public String[] getDigests();
+    method @NonNull public String[] getEncryptionPaddings();
+    method public int getKeySize();
+    method @Nullable public java.util.Date getKeyValidityForConsumptionEnd();
+    method @Nullable public java.util.Date getKeyValidityForOriginationEnd();
+    method @Nullable public java.util.Date getKeyValidityStart();
+    method @NonNull public String getKeystoreAlias();
+    method public int getPurposes();
+    method @NonNull public String[] getSignaturePaddings();
+    method public int getUserAuthenticationType();
+    method public int getUserAuthenticationValidityDurationSeconds();
+    method public boolean isDevicePropertiesAttestationIncluded();
+    method @NonNull public boolean isDigestsSpecified();
+    method public boolean isInvalidatedByBiometricEnrollment();
+    method public boolean isRandomizedEncryptionRequired();
+    method public boolean isStrongBoxBacked();
+    method public boolean isUnlockedDeviceRequired();
+    method public boolean isUserAuthenticationRequired();
+    method public boolean isUserAuthenticationValidWhileOnBody();
+    method public boolean isUserConfirmationRequired();
+    method public boolean isUserPresenceRequired();
+  }
+
+  public static final class KeyGenParameterSpec.Builder {
+    ctor public KeyGenParameterSpec.Builder(@NonNull String, int);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec build();
+    method public android.security.keystore.KeyGenParameterSpec.Builder setAlgorithmParameterSpec(@NonNull java.security.spec.AlgorithmParameterSpec);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setAttestationChallenge(byte[]);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setBlockModes(java.lang.String...);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setCertificateNotAfter(@NonNull java.util.Date);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setCertificateNotBefore(@NonNull java.util.Date);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setCertificateSerialNumber(@NonNull java.math.BigInteger);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setCertificateSubject(@NonNull javax.security.auth.x500.X500Principal);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setDevicePropertiesAttestationIncluded(boolean);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setDigests(java.lang.String...);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setEncryptionPaddings(java.lang.String...);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setInvalidatedByBiometricEnrollment(boolean);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setIsStrongBoxBacked(boolean);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setKeySize(int);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setKeyValidityEnd(java.util.Date);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setKeyValidityForConsumptionEnd(java.util.Date);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setKeyValidityForOriginationEnd(java.util.Date);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setKeyValidityStart(java.util.Date);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setRandomizedEncryptionRequired(boolean);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setSignaturePaddings(java.lang.String...);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUnlockedDeviceRequired(boolean);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserAuthenticationParameters(@IntRange(from=0) int, int);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserAuthenticationRequired(boolean);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserAuthenticationValidWhileOnBody(boolean);
+    method @Deprecated @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserAuthenticationValidityDurationSeconds(@IntRange(from=0xffffffff) int);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserConfirmationRequired(boolean);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserPresenceRequired(boolean);
+  }
+
+  public class KeyInfo implements java.security.spec.KeySpec {
+    method @NonNull public String[] getBlockModes();
+    method @NonNull public String[] getDigests();
+    method @NonNull public String[] getEncryptionPaddings();
+    method public int getKeySize();
+    method @Nullable public java.util.Date getKeyValidityForConsumptionEnd();
+    method @Nullable public java.util.Date getKeyValidityForOriginationEnd();
+    method @Nullable public java.util.Date getKeyValidityStart();
+    method public String getKeystoreAlias();
+    method public int getOrigin();
+    method public int getPurposes();
+    method public int getSecurityLevel();
+    method @NonNull public String[] getSignaturePaddings();
+    method public int getUserAuthenticationType();
+    method public int getUserAuthenticationValidityDurationSeconds();
+    method @Deprecated public boolean isInsideSecureHardware();
+    method public boolean isInvalidatedByBiometricEnrollment();
+    method public boolean isTrustedUserPresenceRequired();
+    method public boolean isUserAuthenticationRequired();
+    method public boolean isUserAuthenticationRequirementEnforcedBySecureHardware();
+    method public boolean isUserAuthenticationValidWhileOnBody();
+    method public boolean isUserConfirmationRequired();
+  }
+
+  public class KeyNotYetValidException extends java.security.InvalidKeyException {
+    ctor public KeyNotYetValidException();
+    ctor public KeyNotYetValidException(String);
+    ctor public KeyNotYetValidException(String, Throwable);
+  }
+
+  public class KeyPermanentlyInvalidatedException extends java.security.InvalidKeyException {
+    ctor public KeyPermanentlyInvalidatedException();
+    ctor public KeyPermanentlyInvalidatedException(String);
+    ctor public KeyPermanentlyInvalidatedException(String, Throwable);
+  }
+
+  public abstract class KeyProperties {
+    field public static final int AUTH_BIOMETRIC_STRONG = 2; // 0x2
+    field public static final int AUTH_DEVICE_CREDENTIAL = 1; // 0x1
+    field public static final String BLOCK_MODE_CBC = "CBC";
+    field public static final String BLOCK_MODE_CTR = "CTR";
+    field public static final String BLOCK_MODE_ECB = "ECB";
+    field public static final String BLOCK_MODE_GCM = "GCM";
+    field public static final String DIGEST_MD5 = "MD5";
+    field public static final String DIGEST_NONE = "NONE";
+    field public static final String DIGEST_SHA1 = "SHA-1";
+    field public static final String DIGEST_SHA224 = "SHA-224";
+    field public static final String DIGEST_SHA256 = "SHA-256";
+    field public static final String DIGEST_SHA384 = "SHA-384";
+    field public static final String DIGEST_SHA512 = "SHA-512";
+    field public static final String ENCRYPTION_PADDING_NONE = "NoPadding";
+    field public static final String ENCRYPTION_PADDING_PKCS7 = "PKCS7Padding";
+    field public static final String ENCRYPTION_PADDING_RSA_OAEP = "OAEPPadding";
+    field public static final String ENCRYPTION_PADDING_RSA_PKCS1 = "PKCS1Padding";
+    field @Deprecated public static final String KEY_ALGORITHM_3DES = "DESede";
+    field public static final String KEY_ALGORITHM_AES = "AES";
+    field public static final String KEY_ALGORITHM_EC = "EC";
+    field public static final String KEY_ALGORITHM_HMAC_SHA1 = "HmacSHA1";
+    field public static final String KEY_ALGORITHM_HMAC_SHA224 = "HmacSHA224";
+    field public static final String KEY_ALGORITHM_HMAC_SHA256 = "HmacSHA256";
+    field public static final String KEY_ALGORITHM_HMAC_SHA384 = "HmacSHA384";
+    field public static final String KEY_ALGORITHM_HMAC_SHA512 = "HmacSHA512";
+    field public static final String KEY_ALGORITHM_RSA = "RSA";
+    field public static final int ORIGIN_GENERATED = 1; // 0x1
+    field public static final int ORIGIN_IMPORTED = 2; // 0x2
+    field public static final int ORIGIN_SECURELY_IMPORTED = 8; // 0x8
+    field public static final int ORIGIN_UNKNOWN = 4; // 0x4
+    field public static final int PURPOSE_DECRYPT = 2; // 0x2
+    field public static final int PURPOSE_ENCRYPT = 1; // 0x1
+    field public static final int PURPOSE_SIGN = 4; // 0x4
+    field public static final int PURPOSE_VERIFY = 8; // 0x8
+    field public static final int PURPOSE_WRAP_KEY = 32; // 0x20
+    field public static final int SECURITY_LEVEL_SOFTWARE = 0; // 0x0
+    field public static final int SECURITY_LEVEL_STRONGBOX = 2; // 0x2
+    field public static final int SECURITY_LEVEL_TRUSTED_ENVIRONMENT = 1; // 0x1
+    field public static final int SECURITY_LEVEL_UNKNOWN = -2; // 0xfffffffe
+    field public static final int SECURITY_LEVEL_UNKNOWN_SECURE = -1; // 0xffffffff
+    field public static final String SIGNATURE_PADDING_RSA_PKCS1 = "PKCS1";
+    field public static final String SIGNATURE_PADDING_RSA_PSS = "PSS";
+  }
+
+  public final class KeyProtection implements java.security.KeyStore.ProtectionParameter {
+    method @NonNull public String[] getBlockModes();
+    method @NonNull public String[] getDigests();
+    method @NonNull public String[] getEncryptionPaddings();
+    method @Nullable public java.util.Date getKeyValidityForConsumptionEnd();
+    method @Nullable public java.util.Date getKeyValidityForOriginationEnd();
+    method @Nullable public java.util.Date getKeyValidityStart();
+    method public int getPurposes();
+    method @NonNull public String[] getSignaturePaddings();
+    method public int getUserAuthenticationType();
+    method public int getUserAuthenticationValidityDurationSeconds();
+    method public boolean isDigestsSpecified();
+    method public boolean isInvalidatedByBiometricEnrollment();
+    method public boolean isRandomizedEncryptionRequired();
+    method public boolean isUnlockedDeviceRequired();
+    method public boolean isUserAuthenticationRequired();
+    method public boolean isUserAuthenticationValidWhileOnBody();
+    method public boolean isUserConfirmationRequired();
+    method public boolean isUserPresenceRequired();
+  }
+
+  public static final class KeyProtection.Builder {
+    ctor public KeyProtection.Builder(int);
+    method @NonNull public android.security.keystore.KeyProtection build();
+    method @NonNull public android.security.keystore.KeyProtection.Builder setBlockModes(java.lang.String...);
+    method @NonNull public android.security.keystore.KeyProtection.Builder setDigests(java.lang.String...);
+    method @NonNull public android.security.keystore.KeyProtection.Builder setEncryptionPaddings(java.lang.String...);
+    method @NonNull public android.security.keystore.KeyProtection.Builder setInvalidatedByBiometricEnrollment(boolean);
+    method @NonNull public android.security.keystore.KeyProtection.Builder setKeyValidityEnd(java.util.Date);
+    method @NonNull public android.security.keystore.KeyProtection.Builder setKeyValidityForConsumptionEnd(java.util.Date);
+    method @NonNull public android.security.keystore.KeyProtection.Builder setKeyValidityForOriginationEnd(java.util.Date);
+    method @NonNull public android.security.keystore.KeyProtection.Builder setKeyValidityStart(java.util.Date);
+    method @NonNull public android.security.keystore.KeyProtection.Builder setRandomizedEncryptionRequired(boolean);
+    method @NonNull public android.security.keystore.KeyProtection.Builder setSignaturePaddings(java.lang.String...);
+    method @NonNull public android.security.keystore.KeyProtection.Builder setUnlockedDeviceRequired(boolean);
+    method @NonNull public android.security.keystore.KeyProtection.Builder setUserAuthenticationParameters(@IntRange(from=0) int, int);
+    method @NonNull public android.security.keystore.KeyProtection.Builder setUserAuthenticationRequired(boolean);
+    method @NonNull public android.security.keystore.KeyProtection.Builder setUserAuthenticationValidWhileOnBody(boolean);
+    method @Deprecated @NonNull public android.security.keystore.KeyProtection.Builder setUserAuthenticationValidityDurationSeconds(@IntRange(from=0xffffffff) int);
+    method @NonNull public android.security.keystore.KeyProtection.Builder setUserConfirmationRequired(boolean);
+    method @NonNull public android.security.keystore.KeyProtection.Builder setUserPresenceRequired(boolean);
+  }
+
+  public class SecureKeyImportUnavailableException extends java.security.ProviderException {
+    ctor public SecureKeyImportUnavailableException();
+    ctor public SecureKeyImportUnavailableException(String);
+    ctor public SecureKeyImportUnavailableException(String, Throwable);
+    ctor public SecureKeyImportUnavailableException(Throwable);
+  }
+
+  public class StrongBoxUnavailableException extends java.security.ProviderException {
+    ctor public StrongBoxUnavailableException();
+    ctor public StrongBoxUnavailableException(String);
+    ctor public StrongBoxUnavailableException(String, Throwable);
+    ctor public StrongBoxUnavailableException(Throwable);
+  }
+
+  public class UserNotAuthenticatedException extends java.security.InvalidKeyException {
+    ctor public UserNotAuthenticatedException();
+    ctor public UserNotAuthenticatedException(String);
+    ctor public UserNotAuthenticatedException(String, Throwable);
+  }
+
+  public class UserPresenceUnavailableException extends java.security.InvalidKeyException {
+    ctor public UserPresenceUnavailableException();
+    ctor public UserPresenceUnavailableException(String);
+    ctor public UserPresenceUnavailableException(String, Throwable);
+  }
+
+  public class WrappedKeyEntry implements java.security.KeyStore.Entry {
+    ctor public WrappedKeyEntry(byte[], String, String, java.security.spec.AlgorithmParameterSpec);
+    method public java.security.spec.AlgorithmParameterSpec getAlgorithmParameterSpec();
+    method public String getTransformation();
+    method public byte[] getWrappedKeyBytes();
+    method public String getWrappingKeyAlias();
+  }
+
+}
+
+package android.service.autofill {
+
+  public abstract class AutofillService extends android.app.Service {
+    ctor public AutofillService();
+    method @Nullable public final android.service.autofill.FillEventHistory getFillEventHistory();
+    method public final android.os.IBinder onBind(android.content.Intent);
+    method public void onConnected();
+    method public void onDisconnected();
+    method public abstract void onFillRequest(@NonNull android.service.autofill.FillRequest, @NonNull android.os.CancellationSignal, @NonNull android.service.autofill.FillCallback);
+    method public abstract void onSaveRequest(@NonNull android.service.autofill.SaveRequest, @NonNull android.service.autofill.SaveCallback);
+    field public static final String SERVICE_INTERFACE = "android.service.autofill.AutofillService";
+    field public static final String SERVICE_META_DATA = "android.autofill";
+  }
+
+  public final class BatchUpdates implements android.os.Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.BatchUpdates> CREATOR;
+  }
+
+  public static class BatchUpdates.Builder {
+    ctor public BatchUpdates.Builder();
+    method public android.service.autofill.BatchUpdates build();
+    method public android.service.autofill.BatchUpdates.Builder transformChild(int, @NonNull android.service.autofill.Transformation);
+    method public android.service.autofill.BatchUpdates.Builder updateTemplate(@NonNull android.widget.RemoteViews);
+  }
+
+  public final class CharSequenceTransformation implements android.os.Parcelable android.service.autofill.Transformation {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.CharSequenceTransformation> CREATOR;
+  }
+
+  public static class CharSequenceTransformation.Builder {
+    ctor public CharSequenceTransformation.Builder(@NonNull android.view.autofill.AutofillId, @NonNull java.util.regex.Pattern, @NonNull String);
+    method public android.service.autofill.CharSequenceTransformation.Builder addField(@NonNull android.view.autofill.AutofillId, @NonNull java.util.regex.Pattern, @NonNull String);
+    method public android.service.autofill.CharSequenceTransformation build();
+  }
+
+  public final class CustomDescription implements android.os.Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.CustomDescription> CREATOR;
+  }
+
+  public static class CustomDescription.Builder {
+    ctor public CustomDescription.Builder(@NonNull android.widget.RemoteViews);
+    method @NonNull public android.service.autofill.CustomDescription.Builder addChild(int, @NonNull android.service.autofill.Transformation);
+    method @NonNull public android.service.autofill.CustomDescription.Builder addOnClickAction(int, @NonNull android.service.autofill.OnClickAction);
+    method @NonNull public android.service.autofill.CustomDescription.Builder batchUpdate(@NonNull android.service.autofill.Validator, @NonNull android.service.autofill.BatchUpdates);
+    method @NonNull public android.service.autofill.CustomDescription build();
+  }
+
+  public final class Dataset implements android.os.Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.Dataset> CREATOR;
+  }
+
+  public static final class Dataset.Builder {
+    ctor public Dataset.Builder(@NonNull android.widget.RemoteViews);
+    ctor public Dataset.Builder();
+    method @NonNull public android.service.autofill.Dataset build();
+    method @NonNull public android.service.autofill.Dataset.Builder setAuthentication(@Nullable android.content.IntentSender);
+    method @NonNull public android.service.autofill.Dataset.Builder setId(@Nullable String);
+    method @NonNull public android.service.autofill.Dataset.Builder setInlinePresentation(@NonNull android.service.autofill.InlinePresentation);
+    method @NonNull public android.service.autofill.Dataset.Builder setValue(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue);
+    method @NonNull public android.service.autofill.Dataset.Builder setValue(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue, @NonNull android.widget.RemoteViews);
+    method @NonNull public android.service.autofill.Dataset.Builder setValue(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue, @Nullable java.util.regex.Pattern);
+    method @NonNull public android.service.autofill.Dataset.Builder setValue(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue, @Nullable java.util.regex.Pattern, @NonNull android.widget.RemoteViews);
+    method @NonNull public android.service.autofill.Dataset.Builder setValue(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue, @NonNull android.widget.RemoteViews, @NonNull android.service.autofill.InlinePresentation);
+    method @NonNull public android.service.autofill.Dataset.Builder setValue(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue, @Nullable java.util.regex.Pattern, @NonNull android.widget.RemoteViews, @NonNull android.service.autofill.InlinePresentation);
+  }
+
+  public final class DateTransformation implements android.os.Parcelable android.service.autofill.Transformation {
+    ctor public DateTransformation(@NonNull android.view.autofill.AutofillId, @NonNull android.icu.text.DateFormat);
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.DateTransformation> CREATOR;
+  }
+
+  public final class DateValueSanitizer implements android.os.Parcelable android.service.autofill.Sanitizer {
+    ctor public DateValueSanitizer(@NonNull android.icu.text.DateFormat);
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.DateValueSanitizer> CREATOR;
+  }
+
+  public final class FieldClassification {
+    method @NonNull public java.util.List<android.service.autofill.FieldClassification.Match> getMatches();
+  }
+
+  public static final class FieldClassification.Match {
+    method @NonNull public String getCategoryId();
+    method public float getScore();
+  }
+
+  public final class FillCallback {
+    method public void onFailure(@Nullable CharSequence);
+    method public void onSuccess(@Nullable android.service.autofill.FillResponse);
+  }
+
+  public final class FillContext implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public android.view.autofill.AutofillId getFocusedId();
+    method public int getRequestId();
+    method @NonNull public android.app.assist.AssistStructure getStructure();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.FillContext> CREATOR;
+  }
+
+  public final class FillEventHistory implements android.os.Parcelable {
+    method public int describeContents();
+    method @Deprecated @Nullable public android.os.Bundle getClientState();
+    method @Nullable public java.util.List<android.service.autofill.FillEventHistory.Event> getEvents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.FillEventHistory> CREATOR;
+  }
+
+  public static final class FillEventHistory.Event {
+    method @NonNull public java.util.Map<android.view.autofill.AutofillId,java.lang.String> getChangedFields();
+    method @Nullable public android.os.Bundle getClientState();
+    method @Nullable public String getDatasetId();
+    method @NonNull public java.util.Map<android.view.autofill.AutofillId,android.service.autofill.FieldClassification> getFieldsClassification();
+    method @NonNull public java.util.Set<java.lang.String> getIgnoredDatasetIds();
+    method @NonNull public java.util.Map<android.view.autofill.AutofillId,java.util.Set<java.lang.String>> getManuallyEnteredField();
+    method @NonNull public java.util.Set<java.lang.String> getSelectedDatasetIds();
+    method public int getType();
+    field public static final int TYPE_AUTHENTICATION_SELECTED = 2; // 0x2
+    field public static final int TYPE_CONTEXT_COMMITTED = 4; // 0x4
+    field public static final int TYPE_DATASETS_SHOWN = 5; // 0x5
+    field public static final int TYPE_DATASET_AUTHENTICATION_SELECTED = 1; // 0x1
+    field public static final int TYPE_DATASET_SELECTED = 0; // 0x0
+    field public static final int TYPE_SAVE_SHOWN = 3; // 0x3
+  }
+
+  public final class FillRequest implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public android.os.Bundle getClientState();
+    method @NonNull public java.util.List<android.service.autofill.FillContext> getFillContexts();
+    method public int getFlags();
+    method public int getId();
+    method @Nullable public android.view.inputmethod.InlineSuggestionsRequest getInlineSuggestionsRequest();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.FillRequest> CREATOR;
+    field public static final int FLAG_COMPATIBILITY_MODE_REQUEST = 2; // 0x2
+    field public static final int FLAG_MANUAL_REQUEST = 1; // 0x1
+  }
+
+  public final class FillResponse implements android.os.Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.FillResponse> CREATOR;
+    field public static final int FLAG_DISABLE_ACTIVITY_ONLY = 2; // 0x2
+    field public static final int FLAG_TRACK_CONTEXT_COMMITED = 1; // 0x1
+  }
+
+  public static final class FillResponse.Builder {
+    ctor public FillResponse.Builder();
+    method @NonNull public android.service.autofill.FillResponse.Builder addDataset(@Nullable android.service.autofill.Dataset);
+    method @NonNull public android.service.autofill.FillResponse build();
+    method @NonNull public android.service.autofill.FillResponse.Builder disableAutofill(long);
+    method @NonNull public android.service.autofill.FillResponse.Builder setAuthentication(@NonNull android.view.autofill.AutofillId[], @Nullable android.content.IntentSender, @Nullable android.widget.RemoteViews);
+    method @NonNull public android.service.autofill.FillResponse.Builder setAuthentication(@NonNull android.view.autofill.AutofillId[], @Nullable android.content.IntentSender, @Nullable android.widget.RemoteViews, @Nullable android.service.autofill.InlinePresentation);
+    method @NonNull public android.service.autofill.FillResponse.Builder setClientState(@Nullable android.os.Bundle);
+    method @NonNull public android.service.autofill.FillResponse.Builder setFieldClassificationIds(@NonNull android.view.autofill.AutofillId...);
+    method @NonNull public android.service.autofill.FillResponse.Builder setFlags(int);
+    method @NonNull public android.service.autofill.FillResponse.Builder setFooter(@NonNull android.widget.RemoteViews);
+    method @NonNull public android.service.autofill.FillResponse.Builder setHeader(@NonNull android.widget.RemoteViews);
+    method @NonNull public android.service.autofill.FillResponse.Builder setIgnoredIds(android.view.autofill.AutofillId...);
+    method @NonNull public android.service.autofill.FillResponse.Builder setPresentationCancelIds(@Nullable int[]);
+    method @NonNull public android.service.autofill.FillResponse.Builder setSaveInfo(@NonNull android.service.autofill.SaveInfo);
+    method @NonNull public android.service.autofill.FillResponse.Builder setUserData(@NonNull android.service.autofill.UserData);
+  }
+
+  public final class ImageTransformation implements android.os.Parcelable android.service.autofill.Transformation {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.ImageTransformation> CREATOR;
+  }
+
+  public static class ImageTransformation.Builder {
+    ctor @Deprecated public ImageTransformation.Builder(@NonNull android.view.autofill.AutofillId, @NonNull java.util.regex.Pattern, @DrawableRes int);
+    ctor public ImageTransformation.Builder(@NonNull android.view.autofill.AutofillId, @NonNull java.util.regex.Pattern, @DrawableRes int, @NonNull CharSequence);
+    method @Deprecated public android.service.autofill.ImageTransformation.Builder addOption(@NonNull java.util.regex.Pattern, @DrawableRes int);
+    method public android.service.autofill.ImageTransformation.Builder addOption(@NonNull java.util.regex.Pattern, @DrawableRes int, @NonNull CharSequence);
+    method public android.service.autofill.ImageTransformation build();
+  }
+
+  public final class InlinePresentation implements android.os.Parcelable {
+    ctor public InlinePresentation(@NonNull android.app.slice.Slice, @NonNull android.widget.inline.InlinePresentationSpec, boolean);
+    method public int describeContents();
+    method @NonNull public android.widget.inline.InlinePresentationSpec getInlinePresentationSpec();
+    method @NonNull public android.app.slice.Slice getSlice();
+    method public boolean isPinned();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.InlinePresentation> CREATOR;
+  }
+
+  public final class LuhnChecksumValidator implements android.os.Parcelable android.service.autofill.Validator {
+    ctor public LuhnChecksumValidator(@NonNull android.view.autofill.AutofillId...);
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.LuhnChecksumValidator> CREATOR;
+  }
+
+  public interface OnClickAction {
+  }
+
+  public final class RegexValidator implements android.os.Parcelable android.service.autofill.Validator {
+    ctor public RegexValidator(@NonNull android.view.autofill.AutofillId, @NonNull java.util.regex.Pattern);
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.RegexValidator> CREATOR;
+  }
+
+  public interface Sanitizer {
+  }
+
+  public final class SaveCallback {
+    method public void onFailure(CharSequence);
+    method public void onSuccess();
+    method public void onSuccess(@NonNull android.content.IntentSender);
+  }
+
+  public final class SaveInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.SaveInfo> CREATOR;
+    field public static final int FLAG_DELAY_SAVE = 4; // 0x4
+    field public static final int FLAG_DONT_SAVE_ON_FINISH = 2; // 0x2
+    field public static final int FLAG_SAVE_ON_ALL_VIEWS_INVISIBLE = 1; // 0x1
+    field public static final int NEGATIVE_BUTTON_STYLE_CANCEL = 0; // 0x0
+    field public static final int NEGATIVE_BUTTON_STYLE_NEVER = 2; // 0x2
+    field public static final int NEGATIVE_BUTTON_STYLE_REJECT = 1; // 0x1
+    field public static final int POSITIVE_BUTTON_STYLE_CONTINUE = 1; // 0x1
+    field public static final int POSITIVE_BUTTON_STYLE_SAVE = 0; // 0x0
+    field public static final int SAVE_DATA_TYPE_ADDRESS = 2; // 0x2
+    field public static final int SAVE_DATA_TYPE_CREDIT_CARD = 4; // 0x4
+    field public static final int SAVE_DATA_TYPE_DEBIT_CARD = 32; // 0x20
+    field public static final int SAVE_DATA_TYPE_EMAIL_ADDRESS = 16; // 0x10
+    field public static final int SAVE_DATA_TYPE_GENERIC = 0; // 0x0
+    field public static final int SAVE_DATA_TYPE_GENERIC_CARD = 128; // 0x80
+    field public static final int SAVE_DATA_TYPE_PASSWORD = 1; // 0x1
+    field public static final int SAVE_DATA_TYPE_PAYMENT_CARD = 64; // 0x40
+    field public static final int SAVE_DATA_TYPE_USERNAME = 8; // 0x8
+  }
+
+  public static final class SaveInfo.Builder {
+    ctor public SaveInfo.Builder(int, @NonNull android.view.autofill.AutofillId[]);
+    ctor public SaveInfo.Builder(int);
+    method @NonNull public android.service.autofill.SaveInfo.Builder addSanitizer(@NonNull android.service.autofill.Sanitizer, @NonNull android.view.autofill.AutofillId...);
+    method public android.service.autofill.SaveInfo build();
+    method @NonNull public android.service.autofill.SaveInfo.Builder setCustomDescription(@NonNull android.service.autofill.CustomDescription);
+    method @NonNull public android.service.autofill.SaveInfo.Builder setDescription(@Nullable CharSequence);
+    method @NonNull public android.service.autofill.SaveInfo.Builder setFlags(int);
+    method @NonNull public android.service.autofill.SaveInfo.Builder setNegativeAction(int, @Nullable android.content.IntentSender);
+    method @NonNull public android.service.autofill.SaveInfo.Builder setOptionalIds(@NonNull android.view.autofill.AutofillId[]);
+    method @NonNull public android.service.autofill.SaveInfo.Builder setPositiveAction(int);
+    method @NonNull public android.service.autofill.SaveInfo.Builder setTriggerId(@NonNull android.view.autofill.AutofillId);
+    method @NonNull public android.service.autofill.SaveInfo.Builder setValidator(@NonNull android.service.autofill.Validator);
+  }
+
+  public final class SaveRequest implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public android.os.Bundle getClientState();
+    method @Nullable public java.util.List<java.lang.String> getDatasetIds();
+    method @NonNull public java.util.List<android.service.autofill.FillContext> getFillContexts();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.SaveRequest> CREATOR;
+  }
+
+  public final class TextValueSanitizer implements android.os.Parcelable android.service.autofill.Sanitizer {
+    ctor public TextValueSanitizer(@NonNull java.util.regex.Pattern, @NonNull String);
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.TextValueSanitizer> CREATOR;
+  }
+
+  public interface Transformation {
+  }
+
+  public final class UserData implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public String getFieldClassificationAlgorithm();
+    method @Nullable public String getFieldClassificationAlgorithmForCategory(@NonNull String);
+    method public String getId();
+    method public static int getMaxCategoryCount();
+    method public static int getMaxFieldClassificationIdsSize();
+    method public static int getMaxUserDataSize();
+    method public static int getMaxValueLength();
+    method public static int getMinValueLength();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.UserData> CREATOR;
+  }
+
+  public static final class UserData.Builder {
+    ctor public UserData.Builder(@NonNull String, @NonNull String, @NonNull String);
+    method @NonNull public android.service.autofill.UserData.Builder add(@NonNull String, @NonNull String);
+    method @NonNull public android.service.autofill.UserData build();
+    method @NonNull public android.service.autofill.UserData.Builder setFieldClassificationAlgorithm(@Nullable String, @Nullable android.os.Bundle);
+    method @NonNull public android.service.autofill.UserData.Builder setFieldClassificationAlgorithmForCategory(@NonNull String, @Nullable String, @Nullable android.os.Bundle);
+  }
+
+  public interface Validator {
+  }
+
+  public final class Validators {
+    method @NonNull public static android.service.autofill.Validator and(@NonNull android.service.autofill.Validator...);
+    method @NonNull public static android.service.autofill.Validator not(@NonNull android.service.autofill.Validator);
+    method @NonNull public static android.service.autofill.Validator or(@NonNull android.service.autofill.Validator...);
+  }
+
+  public final class VisibilitySetterAction implements android.service.autofill.OnClickAction android.os.Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.VisibilitySetterAction> CREATOR;
+  }
+
+  public static final class VisibilitySetterAction.Builder {
+    ctor public VisibilitySetterAction.Builder(@IdRes int, int);
+    method @NonNull public android.service.autofill.VisibilitySetterAction build();
+    method @NonNull public android.service.autofill.VisibilitySetterAction.Builder setVisibility(@IdRes int, int);
+  }
+
+}
+
+package android.service.carrier {
+
+  public class CarrierIdentifier implements android.os.Parcelable {
+    ctor public CarrierIdentifier(String, String, @Nullable String, @Nullable String, @Nullable String, @Nullable String);
+    ctor public CarrierIdentifier(@NonNull String, @NonNull String, @Nullable String, @Nullable String, @Nullable String, @Nullable String, int, int);
+    ctor public CarrierIdentifier(byte[], @Nullable String, @Nullable String);
+    method public int describeContents();
+    method public int getCarrierId();
+    method @Nullable public String getGid1();
+    method @Nullable public String getGid2();
+    method @Nullable public String getImsi();
+    method public String getMcc();
+    method public String getMnc();
+    method public int getSpecificCarrierId();
+    method @Nullable public String getSpn();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.carrier.CarrierIdentifier> CREATOR;
+  }
+
+  public class CarrierMessagingClientService extends android.app.Service {
+    ctor public CarrierMessagingClientService();
+    method @NonNull public final android.os.IBinder onBind(@Nullable android.content.Intent);
+  }
+
+  public abstract class CarrierMessagingService extends android.app.Service {
+    ctor public CarrierMessagingService();
+    method @Nullable public android.os.IBinder onBind(@NonNull android.content.Intent);
+    method public void onDownloadMms(@NonNull android.net.Uri, int, @NonNull android.net.Uri, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<java.lang.Integer>);
+    method @Deprecated public void onFilterSms(@NonNull android.service.carrier.MessagePdu, @NonNull String, int, int, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<java.lang.Boolean>);
+    method public void onReceiveTextSms(@NonNull android.service.carrier.MessagePdu, @NonNull String, int, int, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<java.lang.Integer>);
+    method @Deprecated public void onSendDataSms(@NonNull byte[], int, @NonNull String, int, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendSmsResult>);
+    method public void onSendDataSms(@NonNull byte[], int, @NonNull String, int, int, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendSmsResult>);
+    method public void onSendMms(@NonNull android.net.Uri, int, @Nullable android.net.Uri, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendMmsResult>);
+    method @Deprecated public void onSendMultipartTextSms(@NonNull java.util.List<java.lang.String>, int, @NonNull String, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendMultipartSmsResult>);
+    method public void onSendMultipartTextSms(@NonNull java.util.List<java.lang.String>, int, @NonNull String, int, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendMultipartSmsResult>);
+    method @Deprecated public void onSendTextSms(@NonNull String, int, @NonNull String, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendSmsResult>);
+    method public void onSendTextSms(@NonNull String, int, @NonNull String, int, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendSmsResult>);
+    field public static final int DOWNLOAD_STATUS_ERROR = 2; // 0x2
+    field public static final int DOWNLOAD_STATUS_OK = 0; // 0x0
+    field public static final int DOWNLOAD_STATUS_RETRY_ON_CARRIER_NETWORK = 1; // 0x1
+    field public static final int RECEIVE_OPTIONS_DEFAULT = 0; // 0x0
+    field public static final int RECEIVE_OPTIONS_DROP = 1; // 0x1
+    field public static final int RECEIVE_OPTIONS_SKIP_NOTIFY_WHEN_CREDENTIAL_PROTECTED_STORAGE_UNAVAILABLE = 2; // 0x2
+    field public static final int SEND_FLAG_REQUEST_DELIVERY_STATUS = 1; // 0x1
+    field public static final int SEND_STATUS_ERROR = 2; // 0x2
+    field public static final int SEND_STATUS_OK = 0; // 0x0
+    field public static final int SEND_STATUS_RETRY_ON_CARRIER_NETWORK = 1; // 0x1
+    field public static final String SERVICE_INTERFACE = "android.service.carrier.CarrierMessagingService";
+  }
+
+  public static interface CarrierMessagingService.ResultCallback<T> {
+    method public void onReceiveResult(@NonNull T) throws android.os.RemoteException;
+  }
+
+  public static final class CarrierMessagingService.SendMmsResult {
+    ctor public CarrierMessagingService.SendMmsResult(int, @Nullable byte[]);
+    method @Nullable public byte[] getSendConfPdu();
+    method public int getSendStatus();
+  }
+
+  public static final class CarrierMessagingService.SendMultipartSmsResult {
+    ctor public CarrierMessagingService.SendMultipartSmsResult(int, @Nullable int[]);
+    method @Nullable public int[] getMessageRefs();
+    method public int getSendStatus();
+  }
+
+  public static final class CarrierMessagingService.SendSmsResult {
+    ctor public CarrierMessagingService.SendSmsResult(int, int);
+    method public int getMessageRef();
+    method public int getSendStatus();
+  }
+
+  public abstract class CarrierService extends android.app.Service {
+    ctor public CarrierService();
+    method public final void notifyCarrierNetworkChange(boolean);
+    method @CallSuper public android.os.IBinder onBind(android.content.Intent);
+    method public abstract android.os.PersistableBundle onLoadConfig(android.service.carrier.CarrierIdentifier);
+    field public static final String CARRIER_SERVICE_INTERFACE = "android.service.carrier.CarrierService";
+  }
+
+  public final class MessagePdu implements android.os.Parcelable {
+    ctor public MessagePdu(@NonNull java.util.List<byte[]>);
+    method public int describeContents();
+    method @NonNull public java.util.List<byte[]> getPdus();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.carrier.MessagePdu> CREATOR;
+  }
+
+}
+
+package android.service.chooser {
+
+  @Deprecated public final class ChooserTarget implements android.os.Parcelable {
+    ctor @Deprecated public ChooserTarget(CharSequence, android.graphics.drawable.Icon, float, android.content.ComponentName, @Nullable android.os.Bundle);
+    method @Deprecated public int describeContents();
+    method @Deprecated public android.content.ComponentName getComponentName();
+    method @Deprecated public android.graphics.drawable.Icon getIcon();
+    method @Deprecated public android.os.Bundle getIntentExtras();
+    method @Deprecated public float getScore();
+    method @Deprecated public CharSequence getTitle();
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.service.chooser.ChooserTarget> CREATOR;
+  }
+
+  @Deprecated public abstract class ChooserTargetService extends android.app.Service {
+    ctor @Deprecated public ChooserTargetService();
+    method @Deprecated public android.os.IBinder onBind(android.content.Intent);
+    method @Deprecated public abstract java.util.List<android.service.chooser.ChooserTarget> onGetChooserTargets(android.content.ComponentName, android.content.IntentFilter);
+    field @Deprecated public static final String BIND_PERMISSION = "android.permission.BIND_CHOOSER_TARGET_SERVICE";
+    field @Deprecated public static final String META_DATA_NAME = "android.service.chooser.chooser_target_service";
+    field @Deprecated public static final String SERVICE_INTERFACE = "android.service.chooser.ChooserTargetService";
+  }
+
+}
+
+package android.service.controls {
+
+  public final class Control implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public android.app.PendingIntent getAppIntent();
+    method @NonNull public String getControlId();
+    method @NonNull public android.service.controls.templates.ControlTemplate getControlTemplate();
+    method @Nullable public android.content.res.ColorStateList getCustomColor();
+    method @Nullable public android.graphics.drawable.Icon getCustomIcon();
+    method public int getDeviceType();
+    method public int getStatus();
+    method @NonNull public CharSequence getStatusText();
+    method @Nullable public CharSequence getStructure();
+    method @NonNull public CharSequence getSubtitle();
+    method @NonNull public CharSequence getTitle();
+    method @Nullable public CharSequence getZone();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.controls.Control> CREATOR;
+    field public static final int STATUS_DISABLED = 4; // 0x4
+    field public static final int STATUS_ERROR = 3; // 0x3
+    field public static final int STATUS_NOT_FOUND = 2; // 0x2
+    field public static final int STATUS_OK = 1; // 0x1
+    field public static final int STATUS_UNKNOWN = 0; // 0x0
+  }
+
+  public static final class Control.StatefulBuilder {
+    ctor public Control.StatefulBuilder(@NonNull String, @NonNull android.app.PendingIntent);
+    ctor public Control.StatefulBuilder(@NonNull android.service.controls.Control);
+    method @NonNull public android.service.controls.Control build();
+    method @NonNull public android.service.controls.Control.StatefulBuilder setAppIntent(@NonNull android.app.PendingIntent);
+    method @NonNull public android.service.controls.Control.StatefulBuilder setControlId(@NonNull String);
+    method @NonNull public android.service.controls.Control.StatefulBuilder setControlTemplate(@NonNull android.service.controls.templates.ControlTemplate);
+    method @NonNull public android.service.controls.Control.StatefulBuilder setCustomColor(@Nullable android.content.res.ColorStateList);
+    method @NonNull public android.service.controls.Control.StatefulBuilder setCustomIcon(@Nullable android.graphics.drawable.Icon);
+    method @NonNull public android.service.controls.Control.StatefulBuilder setDeviceType(int);
+    method @NonNull public android.service.controls.Control.StatefulBuilder setStatus(int);
+    method @NonNull public android.service.controls.Control.StatefulBuilder setStatusText(@NonNull CharSequence);
+    method @NonNull public android.service.controls.Control.StatefulBuilder setStructure(@Nullable CharSequence);
+    method @NonNull public android.service.controls.Control.StatefulBuilder setSubtitle(@NonNull CharSequence);
+    method @NonNull public android.service.controls.Control.StatefulBuilder setTitle(@NonNull CharSequence);
+    method @NonNull public android.service.controls.Control.StatefulBuilder setZone(@Nullable CharSequence);
+  }
+
+  public static final class Control.StatelessBuilder {
+    ctor public Control.StatelessBuilder(@NonNull String, @NonNull android.app.PendingIntent);
+    ctor public Control.StatelessBuilder(@NonNull android.service.controls.Control);
+    method @NonNull public android.service.controls.Control build();
+    method @NonNull public android.service.controls.Control.StatelessBuilder setAppIntent(@NonNull android.app.PendingIntent);
+    method @NonNull public android.service.controls.Control.StatelessBuilder setControlId(@NonNull String);
+    method @NonNull public android.service.controls.Control.StatelessBuilder setCustomColor(@Nullable android.content.res.ColorStateList);
+    method @NonNull public android.service.controls.Control.StatelessBuilder setCustomIcon(@Nullable android.graphics.drawable.Icon);
+    method @NonNull public android.service.controls.Control.StatelessBuilder setDeviceType(int);
+    method @NonNull public android.service.controls.Control.StatelessBuilder setStructure(@Nullable CharSequence);
+    method @NonNull public android.service.controls.Control.StatelessBuilder setSubtitle(@NonNull CharSequence);
+    method @NonNull public android.service.controls.Control.StatelessBuilder setTitle(@NonNull CharSequence);
+    method @NonNull public android.service.controls.Control.StatelessBuilder setZone(@Nullable CharSequence);
+  }
+
+  public abstract class ControlsProviderService extends android.app.Service {
+    ctor public ControlsProviderService();
+    method @NonNull public abstract java.util.concurrent.Flow.Publisher<android.service.controls.Control> createPublisherFor(@NonNull java.util.List<java.lang.String>);
+    method @NonNull public abstract java.util.concurrent.Flow.Publisher<android.service.controls.Control> createPublisherForAllAvailable();
+    method @Nullable public java.util.concurrent.Flow.Publisher<android.service.controls.Control> createPublisherForSuggested();
+    method @NonNull public final android.os.IBinder onBind(@NonNull android.content.Intent);
+    method public final boolean onUnbind(@NonNull android.content.Intent);
+    method public abstract void performControlAction(@NonNull String, @NonNull android.service.controls.actions.ControlAction, @NonNull java.util.function.Consumer<java.lang.Integer>);
+    method public static void requestAddControl(@NonNull android.content.Context, @NonNull android.content.ComponentName, @NonNull android.service.controls.Control);
+    field public static final String SERVICE_CONTROLS = "android.service.controls.ControlsProviderService";
+    field @NonNull public static final String TAG = "ControlsProviderService";
+  }
+
+  public class DeviceTypes {
+    method public static boolean validDeviceType(int);
+    field public static final int TYPE_AC_HEATER = 1; // 0x1
+    field public static final int TYPE_AC_UNIT = 2; // 0x2
+    field public static final int TYPE_AIR_FRESHENER = 3; // 0x3
+    field public static final int TYPE_AIR_PURIFIER = 4; // 0x4
+    field public static final int TYPE_AWNING = 33; // 0x21
+    field public static final int TYPE_BLINDS = 34; // 0x22
+    field public static final int TYPE_CAMERA = 50; // 0x32
+    field public static final int TYPE_CLOSET = 35; // 0x23
+    field public static final int TYPE_COFFEE_MAKER = 5; // 0x5
+    field public static final int TYPE_CURTAIN = 36; // 0x24
+    field public static final int TYPE_DEHUMIDIFIER = 6; // 0x6
+    field public static final int TYPE_DISHWASHER = 24; // 0x18
+    field public static final int TYPE_DISPLAY = 7; // 0x7
+    field public static final int TYPE_DOOR = 37; // 0x25
+    field public static final int TYPE_DOORBELL = 51; // 0x33
+    field public static final int TYPE_DRAWER = 38; // 0x26
+    field public static final int TYPE_DRYER = 25; // 0x19
+    field public static final int TYPE_FAN = 8; // 0x8
+    field public static final int TYPE_GARAGE = 39; // 0x27
+    field public static final int TYPE_GATE = 40; // 0x28
+    field public static final int TYPE_GENERIC_ARM_DISARM = -5; // 0xfffffffb
+    field public static final int TYPE_GENERIC_LOCK_UNLOCK = -4; // 0xfffffffc
+    field public static final int TYPE_GENERIC_ON_OFF = -1; // 0xffffffff
+    field public static final int TYPE_GENERIC_OPEN_CLOSE = -3; // 0xfffffffd
+    field public static final int TYPE_GENERIC_START_STOP = -2; // 0xfffffffe
+    field public static final int TYPE_GENERIC_TEMP_SETTING = -6; // 0xfffffffa
+    field public static final int TYPE_GENERIC_VIEWSTREAM = -7; // 0xfffffff9
+    field public static final int TYPE_HEATER = 47; // 0x2f
+    field public static final int TYPE_HOOD = 10; // 0xa
+    field public static final int TYPE_HUMIDIFIER = 11; // 0xb
+    field public static final int TYPE_KETTLE = 12; // 0xc
+    field public static final int TYPE_LIGHT = 13; // 0xd
+    field public static final int TYPE_LOCK = 45; // 0x2d
+    field public static final int TYPE_MICROWAVE = 14; // 0xe
+    field public static final int TYPE_MOP = 26; // 0x1a
+    field public static final int TYPE_MOWER = 27; // 0x1b
+    field public static final int TYPE_MULTICOOKER = 28; // 0x1c
+    field public static final int TYPE_OUTLET = 15; // 0xf
+    field public static final int TYPE_PERGOLA = 41; // 0x29
+    field public static final int TYPE_RADIATOR = 16; // 0x10
+    field public static final int TYPE_REFRIGERATOR = 48; // 0x30
+    field public static final int TYPE_REMOTE_CONTROL = 17; // 0x11
+    field public static final int TYPE_ROUTINE = 52; // 0x34
+    field public static final int TYPE_SECURITY_SYSTEM = 46; // 0x2e
+    field public static final int TYPE_SET_TOP = 18; // 0x12
+    field public static final int TYPE_SHOWER = 29; // 0x1d
+    field public static final int TYPE_SHUTTER = 42; // 0x2a
+    field public static final int TYPE_SPRINKLER = 30; // 0x1e
+    field public static final int TYPE_STANDMIXER = 19; // 0x13
+    field public static final int TYPE_STYLER = 20; // 0x14
+    field public static final int TYPE_SWITCH = 21; // 0x15
+    field public static final int TYPE_THERMOSTAT = 49; // 0x31
+    field public static final int TYPE_TV = 22; // 0x16
+    field public static final int TYPE_UNKNOWN = 0; // 0x0
+    field public static final int TYPE_VACUUM = 32; // 0x20
+    field public static final int TYPE_VALVE = 44; // 0x2c
+    field public static final int TYPE_WASHER = 31; // 0x1f
+    field public static final int TYPE_WATER_HEATER = 23; // 0x17
+    field public static final int TYPE_WINDOW = 43; // 0x2b
+  }
+
+}
+
+package android.service.controls.actions {
+
+  public final class BooleanAction extends android.service.controls.actions.ControlAction {
+    ctor public BooleanAction(@NonNull String, boolean);
+    ctor public BooleanAction(@NonNull String, boolean, @Nullable String);
+    method public int getActionType();
+    method public boolean getNewState();
+  }
+
+  public final class CommandAction extends android.service.controls.actions.ControlAction {
+    ctor public CommandAction(@NonNull String, @Nullable String);
+    ctor public CommandAction(@NonNull String);
+    method public int getActionType();
+  }
+
+  public abstract class ControlAction {
+    method public abstract int getActionType();
+    method @Nullable public String getChallengeValue();
+    method @NonNull public static android.service.controls.actions.ControlAction getErrorAction();
+    method @NonNull public String getTemplateId();
+    method public static final boolean isValidResponse(int);
+    field public static final int RESPONSE_CHALLENGE_ACK = 3; // 0x3
+    field public static final int RESPONSE_CHALLENGE_PASSPHRASE = 5; // 0x5
+    field public static final int RESPONSE_CHALLENGE_PIN = 4; // 0x4
+    field public static final int RESPONSE_FAIL = 2; // 0x2
+    field public static final int RESPONSE_OK = 1; // 0x1
+    field public static final int RESPONSE_UNKNOWN = 0; // 0x0
+    field public static final int TYPE_BOOLEAN = 1; // 0x1
+    field public static final int TYPE_COMMAND = 5; // 0x5
+    field public static final int TYPE_ERROR = -1; // 0xffffffff
+    field public static final int TYPE_FLOAT = 2; // 0x2
+    field public static final int TYPE_MODE = 4; // 0x4
+  }
+
+  public final class FloatAction extends android.service.controls.actions.ControlAction {
+    ctor public FloatAction(@NonNull String, float);
+    ctor public FloatAction(@NonNull String, float, @Nullable String);
+    method public int getActionType();
+    method public float getNewValue();
+  }
+
+  public final class ModeAction extends android.service.controls.actions.ControlAction {
+    ctor public ModeAction(@NonNull String, int, @Nullable String);
+    ctor public ModeAction(@NonNull String, int);
+    method public int getActionType();
+    method public int getNewMode();
+  }
+
+}
+
+package android.service.controls.templates {
+
+  public final class ControlButton implements android.os.Parcelable {
+    ctor public ControlButton(boolean, @NonNull CharSequence);
+    method public int describeContents();
+    method @NonNull public CharSequence getActionDescription();
+    method public boolean isChecked();
+    method @NonNull public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.controls.templates.ControlButton> CREATOR;
+  }
+
+  public abstract class ControlTemplate {
+    method @NonNull public static android.service.controls.templates.ControlTemplate getErrorTemplate();
+    method @NonNull public static android.service.controls.templates.ControlTemplate getNoTemplateObject();
+    method @NonNull public String getTemplateId();
+    method public abstract int getTemplateType();
+    field public static final int TYPE_ERROR = -1; // 0xffffffff
+    field public static final int TYPE_NO_TEMPLATE = 0; // 0x0
+    field public static final int TYPE_RANGE = 2; // 0x2
+    field public static final int TYPE_STATELESS = 8; // 0x8
+    field public static final int TYPE_TEMPERATURE = 7; // 0x7
+    field public static final int TYPE_TOGGLE = 1; // 0x1
+    field public static final int TYPE_TOGGLE_RANGE = 6; // 0x6
+  }
+
+  public final class RangeTemplate extends android.service.controls.templates.ControlTemplate {
+    ctor public RangeTemplate(@NonNull String, float, float, float, float, @Nullable CharSequence);
+    method public float getCurrentValue();
+    method @NonNull public CharSequence getFormatString();
+    method public float getMaxValue();
+    method public float getMinValue();
+    method public float getStepValue();
+    method public int getTemplateType();
+  }
+
+  public final class StatelessTemplate extends android.service.controls.templates.ControlTemplate {
+    ctor public StatelessTemplate(@NonNull String);
+    method public int getTemplateType();
+  }
+
+  public final class TemperatureControlTemplate extends android.service.controls.templates.ControlTemplate {
+    ctor public TemperatureControlTemplate(@NonNull String, @NonNull android.service.controls.templates.ControlTemplate, int, int, int);
+    method public int getCurrentActiveMode();
+    method public int getCurrentMode();
+    method public int getModes();
+    method @NonNull public android.service.controls.templates.ControlTemplate getTemplate();
+    method public int getTemplateType();
+    field public static final int FLAG_MODE_COOL = 8; // 0x8
+    field public static final int FLAG_MODE_ECO = 32; // 0x20
+    field public static final int FLAG_MODE_HEAT = 4; // 0x4
+    field public static final int FLAG_MODE_HEAT_COOL = 16; // 0x10
+    field public static final int FLAG_MODE_OFF = 2; // 0x2
+    field public static final int MODE_COOL = 3; // 0x3
+    field public static final int MODE_ECO = 5; // 0x5
+    field public static final int MODE_HEAT = 2; // 0x2
+    field public static final int MODE_HEAT_COOL = 4; // 0x4
+    field public static final int MODE_OFF = 1; // 0x1
+    field public static final int MODE_UNKNOWN = 0; // 0x0
+  }
+
+  public final class ToggleRangeTemplate extends android.service.controls.templates.ControlTemplate {
+    ctor public ToggleRangeTemplate(@NonNull String, @NonNull android.service.controls.templates.ControlButton, @NonNull android.service.controls.templates.RangeTemplate);
+    ctor public ToggleRangeTemplate(@NonNull String, boolean, @NonNull CharSequence, @NonNull android.service.controls.templates.RangeTemplate);
+    method @NonNull public CharSequence getActionDescription();
+    method @NonNull public android.service.controls.templates.RangeTemplate getRange();
+    method public int getTemplateType();
+    method public boolean isChecked();
+  }
+
+  public final class ToggleTemplate extends android.service.controls.templates.ControlTemplate {
+    ctor public ToggleTemplate(@NonNull String, @NonNull android.service.controls.templates.ControlButton);
+    method @NonNull public CharSequence getContentDescription();
+    method public int getTemplateType();
+    method public boolean isChecked();
+  }
+
+}
+
+package android.service.dreams {
+
+  public class DreamService extends android.app.Service implements android.view.Window.Callback {
+    ctor public DreamService();
+    method public void addContentView(android.view.View, android.view.ViewGroup.LayoutParams);
+    method public boolean dispatchGenericMotionEvent(android.view.MotionEvent);
+    method public boolean dispatchKeyEvent(android.view.KeyEvent);
+    method public boolean dispatchKeyShortcutEvent(android.view.KeyEvent);
+    method public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
+    method public boolean dispatchTouchEvent(android.view.MotionEvent);
+    method public boolean dispatchTrackballEvent(android.view.MotionEvent);
+    method public <T extends android.view.View> T findViewById(@IdRes int);
+    method public final void finish();
+    method public android.view.Window getWindow();
+    method public android.view.WindowManager getWindowManager();
+    method public boolean isFullscreen();
+    method public boolean isInteractive();
+    method public boolean isScreenBright();
+    method public void onActionModeFinished(android.view.ActionMode);
+    method public void onActionModeStarted(android.view.ActionMode);
+    method public void onAttachedToWindow();
+    method public final android.os.IBinder onBind(android.content.Intent);
+    method public void onContentChanged();
+    method public boolean onCreatePanelMenu(int, android.view.Menu);
+    method public android.view.View onCreatePanelView(int);
+    method public void onDetachedFromWindow();
+    method public void onDreamingStarted();
+    method public void onDreamingStopped();
+    method public boolean onMenuItemSelected(int, android.view.MenuItem);
+    method public boolean onMenuOpened(int, android.view.Menu);
+    method public void onPanelClosed(int, android.view.Menu);
+    method public boolean onPreparePanel(int, android.view.View, android.view.Menu);
+    method public boolean onSearchRequested(android.view.SearchEvent);
+    method public boolean onSearchRequested();
+    method public void onWakeUp();
+    method public void onWindowAttributesChanged(android.view.WindowManager.LayoutParams);
+    method public void onWindowFocusChanged(boolean);
+    method public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback);
+    method public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback, int);
+    method @NonNull public final <T extends android.view.View> T requireViewById(@IdRes int);
+    method public void setContentView(@LayoutRes int);
+    method public void setContentView(android.view.View);
+    method public void setContentView(android.view.View, android.view.ViewGroup.LayoutParams);
+    method public void setFullscreen(boolean);
+    method public void setInteractive(boolean);
+    method public void setScreenBright(boolean);
+    method public final void wakeUp();
+    field public static final String DREAM_META_DATA = "android.service.dream";
+    field public static final String SERVICE_INTERFACE = "android.service.dreams.DreamService";
+  }
+
+}
+
+package android.service.media {
+
+  public abstract class CameraPrewarmService extends android.app.Service {
+    ctor public CameraPrewarmService();
+    method public android.os.IBinder onBind(android.content.Intent);
+    method public abstract void onCooldown(boolean);
+    method public abstract void onPrewarm();
+  }
+
+  public abstract class MediaBrowserService extends android.app.Service {
+    ctor public MediaBrowserService();
+    method public void dump(java.io.FileDescriptor, java.io.PrintWriter, String[]);
+    method public final android.os.Bundle getBrowserRootHints();
+    method public final android.media.session.MediaSessionManager.RemoteUserInfo getCurrentBrowserInfo();
+    method @Nullable public android.media.session.MediaSession.Token getSessionToken();
+    method public void notifyChildrenChanged(@NonNull String);
+    method public void notifyChildrenChanged(@NonNull String, @NonNull android.os.Bundle);
+    method public android.os.IBinder onBind(android.content.Intent);
+    method @Nullable public abstract android.service.media.MediaBrowserService.BrowserRoot onGetRoot(@NonNull String, int, @Nullable android.os.Bundle);
+    method public abstract void onLoadChildren(@NonNull String, @NonNull android.service.media.MediaBrowserService.Result<java.util.List<android.media.browse.MediaBrowser.MediaItem>>);
+    method public void onLoadChildren(@NonNull String, @NonNull android.service.media.MediaBrowserService.Result<java.util.List<android.media.browse.MediaBrowser.MediaItem>>, @NonNull android.os.Bundle);
+    method public void onLoadItem(String, android.service.media.MediaBrowserService.Result<android.media.browse.MediaBrowser.MediaItem>);
+    method public void setSessionToken(android.media.session.MediaSession.Token);
+    field public static final String SERVICE_INTERFACE = "android.media.browse.MediaBrowserService";
+  }
+
+  public static final class MediaBrowserService.BrowserRoot {
+    ctor public MediaBrowserService.BrowserRoot(@NonNull String, @Nullable android.os.Bundle);
+    method public android.os.Bundle getExtras();
+    method public String getRootId();
+    field public static final String EXTRA_OFFLINE = "android.service.media.extra.OFFLINE";
+    field public static final String EXTRA_RECENT = "android.service.media.extra.RECENT";
+    field public static final String EXTRA_SUGGESTED = "android.service.media.extra.SUGGESTED";
+  }
+
+  public class MediaBrowserService.Result<T> {
+    method public void detach();
+    method public void sendResult(T);
+  }
+
+}
+
+package android.service.notification {
+
+  public final class Condition implements android.os.Parcelable {
+    ctor public Condition(android.net.Uri, String, int);
+    ctor public Condition(android.net.Uri, String, String, String, int, int, int);
+    ctor public Condition(android.os.Parcel);
+    method public android.service.notification.Condition copy();
+    method public int describeContents();
+    method public static boolean isValidId(android.net.Uri, String);
+    method public static android.net.Uri.Builder newId(android.content.Context);
+    method public static String relevanceToString(int);
+    method public static String stateToString(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.Condition> CREATOR;
+    field public static final int FLAG_RELEVANT_ALWAYS = 2; // 0x2
+    field public static final int FLAG_RELEVANT_NOW = 1; // 0x1
+    field public static final String SCHEME = "condition";
+    field public static final int STATE_ERROR = 3; // 0x3
+    field public static final int STATE_FALSE = 0; // 0x0
+    field public static final int STATE_TRUE = 1; // 0x1
+    field public static final int STATE_UNKNOWN = 2; // 0x2
+    field public final int flags;
+    field public final int icon;
+    field public final android.net.Uri id;
+    field public final String line1;
+    field public final String line2;
+    field public final int state;
+    field public final String summary;
+  }
+
+  @Deprecated public abstract class ConditionProviderService extends android.app.Service {
+    ctor @Deprecated public ConditionProviderService();
+    method @Deprecated public final void notifyCondition(android.service.notification.Condition);
+    method @Deprecated public final void notifyConditions(android.service.notification.Condition...);
+    method @Deprecated public android.os.IBinder onBind(android.content.Intent);
+    method @Deprecated public abstract void onConnected();
+    method @Deprecated public void onRequestConditions(int);
+    method @Deprecated public abstract void onSubscribe(android.net.Uri);
+    method @Deprecated public abstract void onUnsubscribe(android.net.Uri);
+    method @Deprecated public static final void requestRebind(android.content.ComponentName);
+    method @Deprecated public final void requestUnbind();
+    field @Deprecated public static final String EXTRA_RULE_ID = "android.service.notification.extra.RULE_ID";
+    field @Deprecated public static final String META_DATA_CONFIGURATION_ACTIVITY = "android.service.zen.automatic.configurationActivity";
+    field @Deprecated public static final String META_DATA_RULE_INSTANCE_LIMIT = "android.service.zen.automatic.ruleInstanceLimit";
+    field @Deprecated public static final String META_DATA_RULE_TYPE = "android.service.zen.automatic.ruleType";
+    field @Deprecated public static final String SERVICE_INTERFACE = "android.service.notification.ConditionProviderService";
+  }
+
+  public abstract class NotificationListenerService extends android.app.Service {
+    ctor public NotificationListenerService();
+    method public final void cancelAllNotifications();
+    method @Deprecated public final void cancelNotification(String, String, int);
+    method public final void cancelNotification(String);
+    method public final void cancelNotifications(String[]);
+    method public final void clearRequestedListenerHints();
+    method public android.service.notification.StatusBarNotification[] getActiveNotifications();
+    method public android.service.notification.StatusBarNotification[] getActiveNotifications(String[]);
+    method public final int getCurrentInterruptionFilter();
+    method public final int getCurrentListenerHints();
+    method public android.service.notification.NotificationListenerService.RankingMap getCurrentRanking();
+    method public final java.util.List<android.app.NotificationChannelGroup> getNotificationChannelGroups(@NonNull String, @NonNull android.os.UserHandle);
+    method public final java.util.List<android.app.NotificationChannel> getNotificationChannels(@NonNull String, @NonNull android.os.UserHandle);
+    method public final android.service.notification.StatusBarNotification[] getSnoozedNotifications();
+    method public android.os.IBinder onBind(android.content.Intent);
+    method public void onInterruptionFilterChanged(int);
+    method public void onListenerConnected();
+    method public void onListenerDisconnected();
+    method public void onListenerHintsChanged(int);
+    method public void onNotificationChannelGroupModified(String, android.os.UserHandle, android.app.NotificationChannelGroup, int);
+    method public void onNotificationChannelModified(String, android.os.UserHandle, android.app.NotificationChannel, int);
+    method public void onNotificationPosted(android.service.notification.StatusBarNotification);
+    method public void onNotificationPosted(android.service.notification.StatusBarNotification, android.service.notification.NotificationListenerService.RankingMap);
+    method public void onNotificationRankingUpdate(android.service.notification.NotificationListenerService.RankingMap);
+    method public void onNotificationRemoved(android.service.notification.StatusBarNotification);
+    method public void onNotificationRemoved(android.service.notification.StatusBarNotification, android.service.notification.NotificationListenerService.RankingMap);
+    method public void onNotificationRemoved(android.service.notification.StatusBarNotification, android.service.notification.NotificationListenerService.RankingMap, int);
+    method public void onSilentStatusBarIconsVisibilityChanged(boolean);
+    method public final void requestInterruptionFilter(int);
+    method public final void requestListenerHints(int);
+    method public static void requestRebind(android.content.ComponentName);
+    method public final void requestUnbind();
+    method public final void setNotificationsShown(String[]);
+    method public final void snoozeNotification(String, long);
+    method public final void updateNotificationChannel(@NonNull String, @NonNull android.os.UserHandle, @NonNull android.app.NotificationChannel);
+    field public static final int HINT_HOST_DISABLE_CALL_EFFECTS = 4; // 0x4
+    field public static final int HINT_HOST_DISABLE_EFFECTS = 1; // 0x1
+    field public static final int HINT_HOST_DISABLE_NOTIFICATION_EFFECTS = 2; // 0x2
+    field public static final int INTERRUPTION_FILTER_ALARMS = 4; // 0x4
+    field public static final int INTERRUPTION_FILTER_ALL = 1; // 0x1
+    field public static final int INTERRUPTION_FILTER_NONE = 3; // 0x3
+    field public static final int INTERRUPTION_FILTER_PRIORITY = 2; // 0x2
+    field public static final int INTERRUPTION_FILTER_UNKNOWN = 0; // 0x0
+    field public static final int NOTIFICATION_CHANNEL_OR_GROUP_ADDED = 1; // 0x1
+    field public static final int NOTIFICATION_CHANNEL_OR_GROUP_DELETED = 3; // 0x3
+    field public static final int NOTIFICATION_CHANNEL_OR_GROUP_UPDATED = 2; // 0x2
+    field public static final int REASON_APP_CANCEL = 8; // 0x8
+    field public static final int REASON_APP_CANCEL_ALL = 9; // 0x9
+    field public static final int REASON_CANCEL = 2; // 0x2
+    field public static final int REASON_CANCEL_ALL = 3; // 0x3
+    field public static final int REASON_CHANNEL_BANNED = 17; // 0x11
+    field public static final int REASON_CLICK = 1; // 0x1
+    field public static final int REASON_ERROR = 4; // 0x4
+    field public static final int REASON_GROUP_OPTIMIZATION = 13; // 0xd
+    field public static final int REASON_GROUP_SUMMARY_CANCELED = 12; // 0xc
+    field public static final int REASON_LISTENER_CANCEL = 10; // 0xa
+    field public static final int REASON_LISTENER_CANCEL_ALL = 11; // 0xb
+    field public static final int REASON_PACKAGE_BANNED = 7; // 0x7
+    field public static final int REASON_PACKAGE_CHANGED = 5; // 0x5
+    field public static final int REASON_PACKAGE_SUSPENDED = 14; // 0xe
+    field public static final int REASON_PROFILE_TURNED_OFF = 15; // 0xf
+    field public static final int REASON_SNOOZED = 18; // 0x12
+    field public static final int REASON_TIMEOUT = 19; // 0x13
+    field public static final int REASON_UNAUTOBUNDLED = 16; // 0x10
+    field public static final int REASON_USER_STOPPED = 6; // 0x6
+    field public static final String SERVICE_INTERFACE = "android.service.notification.NotificationListenerService";
+    field @Deprecated public static final int SUPPRESSED_EFFECT_SCREEN_OFF = 1; // 0x1
+    field @Deprecated public static final int SUPPRESSED_EFFECT_SCREEN_ON = 2; // 0x2
+  }
+
+  public static class NotificationListenerService.Ranking {
+    ctor public NotificationListenerService.Ranking();
+    method public boolean canBubble();
+    method public boolean canShowBadge();
+    method public android.app.NotificationChannel getChannel();
+    method public int getImportance();
+    method public CharSequence getImportanceExplanation();
+    method public String getKey();
+    method public long getLastAudiblyAlertedMillis();
+    method public String getOverrideGroupKey();
+    method public int getRank();
+    method @NonNull public java.util.List<android.app.Notification.Action> getSmartActions();
+    method @NonNull public java.util.List<java.lang.CharSequence> getSmartReplies();
+    method public int getSuppressedVisualEffects();
+    method public int getUserSentiment();
+    method public boolean isAmbient();
+    method public boolean isSuspended();
+    method public boolean matchesInterruptionFilter();
+    field public static final int USER_SENTIMENT_NEGATIVE = -1; // 0xffffffff
+    field public static final int USER_SENTIMENT_NEUTRAL = 0; // 0x0
+    field public static final int USER_SENTIMENT_POSITIVE = 1; // 0x1
+  }
+
+  public static class NotificationListenerService.RankingMap implements android.os.Parcelable {
+    method public int describeContents();
+    method public String[] getOrderedKeys();
+    method public boolean getRanking(String, android.service.notification.NotificationListenerService.Ranking);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.NotificationListenerService.RankingMap> CREATOR;
+  }
+
+  public class StatusBarNotification implements android.os.Parcelable {
+    ctor @Deprecated public StatusBarNotification(String, String, int, String, int, int, int, android.app.Notification, android.os.UserHandle, long);
+    ctor public StatusBarNotification(android.os.Parcel);
+    method public android.service.notification.StatusBarNotification clone();
+    method public int describeContents();
+    method public String getGroupKey();
+    method public int getId();
+    method public String getKey();
+    method public android.app.Notification getNotification();
+    method @NonNull public String getOpPkg();
+    method public String getOverrideGroupKey();
+    method public String getPackageName();
+    method public long getPostTime();
+    method public String getTag();
+    method public int getUid();
+    method public android.os.UserHandle getUser();
+    method @Deprecated public int getUserId();
+    method public boolean isAppGroup();
+    method public boolean isClearable();
+    method public boolean isGroup();
+    method public boolean isOngoing();
+    method public void setOverrideGroupKey(String);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.StatusBarNotification> CREATOR;
+  }
+
+  public final class ZenPolicy implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getPriorityCallSenders();
+    method public int getPriorityCategoryAlarms();
+    method public int getPriorityCategoryCalls();
+    method public int getPriorityCategoryConversations();
+    method public int getPriorityCategoryEvents();
+    method public int getPriorityCategoryMedia();
+    method public int getPriorityCategoryMessages();
+    method public int getPriorityCategoryReminders();
+    method public int getPriorityCategoryRepeatCallers();
+    method public int getPriorityCategorySystem();
+    method public int getPriorityConversationSenders();
+    method public int getPriorityMessageSenders();
+    method public int getVisualEffectAmbient();
+    method public int getVisualEffectBadge();
+    method public int getVisualEffectFullScreenIntent();
+    method public int getVisualEffectLights();
+    method public int getVisualEffectNotificationList();
+    method public int getVisualEffectPeek();
+    method public int getVisualEffectStatusBar();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int CONVERSATION_SENDERS_ANYONE = 1; // 0x1
+    field public static final int CONVERSATION_SENDERS_IMPORTANT = 2; // 0x2
+    field public static final int CONVERSATION_SENDERS_NONE = 3; // 0x3
+    field public static final int CONVERSATION_SENDERS_UNSET = 0; // 0x0
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.ZenPolicy> CREATOR;
+    field public static final int PEOPLE_TYPE_ANYONE = 1; // 0x1
+    field public static final int PEOPLE_TYPE_CONTACTS = 2; // 0x2
+    field public static final int PEOPLE_TYPE_NONE = 4; // 0x4
+    field public static final int PEOPLE_TYPE_STARRED = 3; // 0x3
+    field public static final int PEOPLE_TYPE_UNSET = 0; // 0x0
+    field public static final int STATE_ALLOW = 1; // 0x1
+    field public static final int STATE_DISALLOW = 2; // 0x2
+    field public static final int STATE_UNSET = 0; // 0x0
+  }
+
+  public static final class ZenPolicy.Builder {
+    ctor public ZenPolicy.Builder();
+    method @NonNull public android.service.notification.ZenPolicy.Builder allowAlarms(boolean);
+    method @NonNull public android.service.notification.ZenPolicy.Builder allowAllSounds();
+    method @NonNull public android.service.notification.ZenPolicy.Builder allowCalls(int);
+    method @NonNull public android.service.notification.ZenPolicy.Builder allowConversations(int);
+    method @NonNull public android.service.notification.ZenPolicy.Builder allowEvents(boolean);
+    method @NonNull public android.service.notification.ZenPolicy.Builder allowMedia(boolean);
+    method @NonNull public android.service.notification.ZenPolicy.Builder allowMessages(int);
+    method @NonNull public android.service.notification.ZenPolicy.Builder allowReminders(boolean);
+    method @NonNull public android.service.notification.ZenPolicy.Builder allowRepeatCallers(boolean);
+    method @NonNull public android.service.notification.ZenPolicy.Builder allowSystem(boolean);
+    method @NonNull public android.service.notification.ZenPolicy build();
+    method @NonNull public android.service.notification.ZenPolicy.Builder disallowAllSounds();
+    method @NonNull public android.service.notification.ZenPolicy.Builder hideAllVisualEffects();
+    method @NonNull public android.service.notification.ZenPolicy.Builder showAllVisualEffects();
+    method @NonNull public android.service.notification.ZenPolicy.Builder showBadges(boolean);
+    method @NonNull public android.service.notification.ZenPolicy.Builder showFullScreenIntent(boolean);
+    method @NonNull public android.service.notification.ZenPolicy.Builder showInAmbientDisplay(boolean);
+    method @NonNull public android.service.notification.ZenPolicy.Builder showInNotificationList(boolean);
+    method @NonNull public android.service.notification.ZenPolicy.Builder showLights(boolean);
+    method @NonNull public android.service.notification.ZenPolicy.Builder showPeeking(boolean);
+    method @NonNull public android.service.notification.ZenPolicy.Builder showStatusBarIcons(boolean);
+  }
+
+}
+
+package android.service.quickaccesswallet {
+
+  public interface GetWalletCardsCallback {
+    method public void onFailure(@NonNull android.service.quickaccesswallet.GetWalletCardsError);
+    method public void onSuccess(@NonNull android.service.quickaccesswallet.GetWalletCardsResponse);
+  }
+
+  public final class GetWalletCardsError implements android.os.Parcelable {
+    ctor public GetWalletCardsError(@Nullable android.graphics.drawable.Icon, @Nullable CharSequence);
+    method public int describeContents();
+    method @Nullable public android.graphics.drawable.Icon getIcon();
+    method @Nullable public CharSequence getMessage();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.quickaccesswallet.GetWalletCardsError> CREATOR;
+  }
+
+  public final class GetWalletCardsRequest implements android.os.Parcelable {
+    ctor public GetWalletCardsRequest(int, int, int, int);
+    method public int describeContents();
+    method public int getCardHeightPx();
+    method public int getCardWidthPx();
+    method public int getIconSizePx();
+    method public int getMaxCards();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.quickaccesswallet.GetWalletCardsRequest> CREATOR;
+  }
+
+  public final class GetWalletCardsResponse implements android.os.Parcelable {
+    ctor public GetWalletCardsResponse(@NonNull java.util.List<android.service.quickaccesswallet.WalletCard>, int);
+    method public int describeContents();
+    method public int getSelectedIndex();
+    method @NonNull public java.util.List<android.service.quickaccesswallet.WalletCard> getWalletCards();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.quickaccesswallet.GetWalletCardsResponse> CREATOR;
+  }
+
+  public abstract class QuickAccessWalletService extends android.app.Service {
+    ctor public QuickAccessWalletService();
+    method @Nullable public android.os.IBinder onBind(@NonNull android.content.Intent);
+    method public abstract void onWalletCardSelected(@NonNull android.service.quickaccesswallet.SelectWalletCardRequest);
+    method public abstract void onWalletCardsRequested(@NonNull android.service.quickaccesswallet.GetWalletCardsRequest, @NonNull android.service.quickaccesswallet.GetWalletCardsCallback);
+    method public abstract void onWalletDismissed();
+    method public final void sendWalletServiceEvent(@NonNull android.service.quickaccesswallet.WalletServiceEvent);
+    field public static final String ACTION_VIEW_WALLET = "android.service.quickaccesswallet.action.VIEW_WALLET";
+    field public static final String ACTION_VIEW_WALLET_SETTINGS = "android.service.quickaccesswallet.action.VIEW_WALLET_SETTINGS";
+    field public static final String SERVICE_INTERFACE = "android.service.quickaccesswallet.QuickAccessWalletService";
+    field public static final String SERVICE_META_DATA = "android.quickaccesswallet";
+  }
+
+  public final class SelectWalletCardRequest implements android.os.Parcelable {
+    ctor public SelectWalletCardRequest(@NonNull String);
+    method public int describeContents();
+    method @NonNull public String getCardId();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.quickaccesswallet.SelectWalletCardRequest> CREATOR;
+  }
+
+  public final class WalletCard implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public android.graphics.drawable.Icon getCardIcon();
+    method @NonNull public String getCardId();
+    method @NonNull public android.graphics.drawable.Icon getCardImage();
+    method @Nullable public CharSequence getCardLabel();
+    method @NonNull public CharSequence getContentDescription();
+    method @NonNull public android.app.PendingIntent getPendingIntent();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.quickaccesswallet.WalletCard> CREATOR;
+  }
+
+  public static final class WalletCard.Builder {
+    ctor public WalletCard.Builder(@NonNull String, @NonNull android.graphics.drawable.Icon, @NonNull CharSequence, @NonNull android.app.PendingIntent);
+    method @NonNull public android.service.quickaccesswallet.WalletCard build();
+    method @NonNull public android.service.quickaccesswallet.WalletCard.Builder setCardIcon(@Nullable android.graphics.drawable.Icon);
+    method @NonNull public android.service.quickaccesswallet.WalletCard.Builder setCardLabel(@Nullable CharSequence);
+  }
+
+  public final class WalletServiceEvent implements android.os.Parcelable {
+    ctor public WalletServiceEvent(int);
+    method public int describeContents();
+    method public int getEventType();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.quickaccesswallet.WalletServiceEvent> CREATOR;
+    field public static final int TYPE_NFC_PAYMENT_STARTED = 1; // 0x1
+  }
+
+}
+
+package android.service.quicksettings {
+
+  public final class Tile implements android.os.Parcelable {
+    method public int describeContents();
+    method public CharSequence getContentDescription();
+    method public android.graphics.drawable.Icon getIcon();
+    method public CharSequence getLabel();
+    method public int getState();
+    method @Nullable public CharSequence getStateDescription();
+    method @Nullable public CharSequence getSubtitle();
+    method public void setContentDescription(CharSequence);
+    method public void setIcon(android.graphics.drawable.Icon);
+    method public void setLabel(CharSequence);
+    method public void setState(int);
+    method public void setStateDescription(@Nullable CharSequence);
+    method public void setSubtitle(@Nullable CharSequence);
+    method public void updateTile();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.quicksettings.Tile> CREATOR;
+    field public static final int STATE_ACTIVE = 2; // 0x2
+    field public static final int STATE_INACTIVE = 1; // 0x1
+    field public static final int STATE_UNAVAILABLE = 0; // 0x0
+  }
+
+  public class TileService extends android.app.Service {
+    ctor public TileService();
+    method public final android.service.quicksettings.Tile getQsTile();
+    method public final boolean isLocked();
+    method public final boolean isSecure();
+    method public android.os.IBinder onBind(android.content.Intent);
+    method public void onClick();
+    method public void onStartListening();
+    method public void onStopListening();
+    method public void onTileAdded();
+    method public void onTileRemoved();
+    method public static final void requestListeningState(android.content.Context, android.content.ComponentName);
+    method public final void showDialog(android.app.Dialog);
+    method public final void startActivityAndCollapse(android.content.Intent);
+    method public final void unlockAndRun(Runnable);
+    field public static final String ACTION_QS_TILE = "android.service.quicksettings.action.QS_TILE";
+    field public static final String ACTION_QS_TILE_PREFERENCES = "android.service.quicksettings.action.QS_TILE_PREFERENCES";
+    field public static final String META_DATA_ACTIVE_TILE = "android.service.quicksettings.ACTIVE_TILE";
+    field public static final String META_DATA_TOGGLEABLE_TILE = "android.service.quicksettings.TOGGLEABLE_TILE";
+  }
+
+}
+
+package android.service.restrictions {
+
+  public abstract class RestrictionsReceiver extends android.content.BroadcastReceiver {
+    ctor public RestrictionsReceiver();
+    method public void onReceive(android.content.Context, android.content.Intent);
+    method public abstract void onRequestPermission(android.content.Context, String, String, String, android.os.PersistableBundle);
+  }
+
+}
+
+package android.service.textservice {
+
+  public abstract class SpellCheckerService extends android.app.Service {
+    ctor public SpellCheckerService();
+    method public abstract android.service.textservice.SpellCheckerService.Session createSession();
+    method public final android.os.IBinder onBind(android.content.Intent);
+    field public static final String SERVICE_INTERFACE = "android.service.textservice.SpellCheckerService";
+  }
+
+  public abstract static class SpellCheckerService.Session {
+    ctor public SpellCheckerService.Session();
+    method public android.os.Bundle getBundle();
+    method public String getLocale();
+    method public void onCancel();
+    method public void onClose();
+    method public abstract void onCreate();
+    method public android.view.textservice.SentenceSuggestionsInfo[] onGetSentenceSuggestionsMultiple(android.view.textservice.TextInfo[], int);
+    method public abstract android.view.textservice.SuggestionsInfo onGetSuggestions(android.view.textservice.TextInfo, int);
+    method public android.view.textservice.SuggestionsInfo[] onGetSuggestionsMultiple(android.view.textservice.TextInfo[], int, boolean);
+  }
+
+}
+
+package android.service.voice {
+
+  public class AlwaysOnHotwordDetector {
+    method public android.content.Intent createEnrollIntent();
+    method public android.content.Intent createReEnrollIntent();
+    method public android.content.Intent createUnEnrollIntent();
+    method public int getParameter(int);
+    method public int getSupportedAudioCapabilities();
+    method public int getSupportedRecognitionModes();
+    method @Nullable public android.service.voice.AlwaysOnHotwordDetector.ModelParamRange queryParameter(int);
+    method public int setParameter(int, int);
+    method public boolean startRecognition(int);
+    method public boolean stopRecognition();
+    field public static final int AUDIO_CAPABILITY_ECHO_CANCELLATION = 1; // 0x1
+    field public static final int AUDIO_CAPABILITY_NOISE_SUPPRESSION = 2; // 0x2
+    field public static final int MODEL_PARAM_THRESHOLD_FACTOR = 0; // 0x0
+    field public static final int RECOGNITION_FLAG_ALLOW_MULTIPLE_TRIGGERS = 2; // 0x2
+    field public static final int RECOGNITION_FLAG_CAPTURE_TRIGGER_AUDIO = 1; // 0x1
+    field public static final int RECOGNITION_FLAG_ENABLE_AUDIO_ECHO_CANCELLATION = 4; // 0x4
+    field public static final int RECOGNITION_FLAG_ENABLE_AUDIO_NOISE_SUPPRESSION = 8; // 0x8
+    field public static final int RECOGNITION_MODE_USER_IDENTIFICATION = 2; // 0x2
+    field public static final int RECOGNITION_MODE_VOICE_TRIGGER = 1; // 0x1
+    field public static final int STATE_HARDWARE_UNAVAILABLE = -2; // 0xfffffffe
+    field public static final int STATE_KEYPHRASE_ENROLLED = 2; // 0x2
+    field public static final int STATE_KEYPHRASE_UNENROLLED = 1; // 0x1
+    field @Deprecated public static final int STATE_KEYPHRASE_UNSUPPORTED = -1; // 0xffffffff
+  }
+
+  public abstract static class AlwaysOnHotwordDetector.Callback {
+    ctor public AlwaysOnHotwordDetector.Callback();
+    method public abstract void onAvailabilityChanged(int);
+    method public abstract void onDetected(@NonNull android.service.voice.AlwaysOnHotwordDetector.EventPayload);
+    method public abstract void onError();
+    method public abstract void onRecognitionPaused();
+    method public abstract void onRecognitionResumed();
+  }
+
+  public static class AlwaysOnHotwordDetector.EventPayload {
+    method @Nullable public android.media.AudioFormat getCaptureAudioFormat();
+    method @Nullable public byte[] getTriggerAudio();
+  }
+
+  public static final class AlwaysOnHotwordDetector.ModelParamRange {
+    method public int getEnd();
+    method public int getStart();
+  }
+
+  public class VoiceInteractionService extends android.app.Service {
+    ctor public VoiceInteractionService();
+    method public final android.service.voice.AlwaysOnHotwordDetector createAlwaysOnHotwordDetector(String, java.util.Locale, android.service.voice.AlwaysOnHotwordDetector.Callback);
+    method public int getDisabledShowContext();
+    method public static boolean isActiveService(android.content.Context, android.content.ComponentName);
+    method public android.os.IBinder onBind(android.content.Intent);
+    method @NonNull public java.util.Set<java.lang.String> onGetSupportedVoiceActions(@NonNull java.util.Set<java.lang.String>);
+    method public void onLaunchVoiceAssistFromKeyguard();
+    method public void onReady();
+    method public void onShutdown();
+    method public void setDisabledShowContext(int);
+    method public final void setUiHints(@NonNull android.os.Bundle);
+    method public void showSession(android.os.Bundle, int);
+    field public static final String SERVICE_INTERFACE = "android.service.voice.VoiceInteractionService";
+    field public static final String SERVICE_META_DATA = "android.voice_interaction";
+  }
+
+  public class VoiceInteractionSession implements android.content.ComponentCallbacks2 android.view.KeyEvent.Callback {
+    ctor public VoiceInteractionSession(android.content.Context);
+    ctor public VoiceInteractionSession(android.content.Context, android.os.Handler);
+    method public void closeSystemDialogs();
+    method public void dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
+    method public void finish();
+    method public android.content.Context getContext();
+    method public int getDisabledShowContext();
+    method public android.view.LayoutInflater getLayoutInflater();
+    method public int getUserDisabledShowContext();
+    method public android.app.Dialog getWindow();
+    method public void hide();
+    method public void onAssistStructureFailure(Throwable);
+    method public void onBackPressed();
+    method public void onCancelRequest(android.service.voice.VoiceInteractionSession.Request);
+    method public void onCloseSystemDialogs();
+    method public void onComputeInsets(android.service.voice.VoiceInteractionSession.Insets);
+    method public void onConfigurationChanged(android.content.res.Configuration);
+    method public void onCreate();
+    method public android.view.View onCreateContentView();
+    method public void onDestroy();
+    method public void onDirectActionsInvalidated(@NonNull android.service.voice.VoiceInteractionSession.ActivityId);
+    method public boolean[] onGetSupportedCommands(String[]);
+    method @Deprecated public void onHandleAssist(@Nullable android.os.Bundle, @Nullable android.app.assist.AssistStructure, @Nullable android.app.assist.AssistContent);
+    method public void onHandleAssist(@NonNull android.service.voice.VoiceInteractionSession.AssistState);
+    method @Deprecated public void onHandleAssistSecondary(@Nullable android.os.Bundle, @Nullable android.app.assist.AssistStructure, @Nullable android.app.assist.AssistContent, int, int);
+    method public void onHandleScreenshot(@Nullable android.graphics.Bitmap);
+    method public void onHide();
+    method public boolean onKeyDown(int, android.view.KeyEvent);
+    method public boolean onKeyLongPress(int, android.view.KeyEvent);
+    method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
+    method public boolean onKeyUp(int, android.view.KeyEvent);
+    method public void onLockscreenShown();
+    method public void onLowMemory();
+    method public void onPrepareShow(android.os.Bundle, int);
+    method public void onRequestAbortVoice(android.service.voice.VoiceInteractionSession.AbortVoiceRequest);
+    method public void onRequestCommand(android.service.voice.VoiceInteractionSession.CommandRequest);
+    method public void onRequestCompleteVoice(android.service.voice.VoiceInteractionSession.CompleteVoiceRequest);
+    method public void onRequestConfirmation(android.service.voice.VoiceInteractionSession.ConfirmationRequest);
+    method public void onRequestPickOption(android.service.voice.VoiceInteractionSession.PickOptionRequest);
+    method public void onShow(android.os.Bundle, int);
+    method public void onTaskFinished(android.content.Intent, int);
+    method public void onTaskStarted(android.content.Intent, int);
+    method public void onTrimMemory(int);
+    method public final void performDirectAction(@NonNull android.app.DirectAction, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.os.Bundle>);
+    method public final void requestDirectActions(@NonNull android.service.voice.VoiceInteractionSession.ActivityId, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.util.List<android.app.DirectAction>>);
+    method public void setContentView(android.view.View);
+    method public void setDisabledShowContext(int);
+    method public void setKeepAwake(boolean);
+    method public void setTheme(int);
+    method public void setUiEnabled(boolean);
+    method public void show(android.os.Bundle, int);
+    method public void startAssistantActivity(android.content.Intent);
+    method public void startVoiceActivity(android.content.Intent);
+    field public static final int SHOW_SOURCE_ACTIVITY = 16; // 0x10
+    field public static final int SHOW_SOURCE_APPLICATION = 8; // 0x8
+    field public static final int SHOW_SOURCE_ASSIST_GESTURE = 4; // 0x4
+    field public static final int SHOW_SOURCE_AUTOMOTIVE_SYSTEM_UI = 128; // 0x80
+    field public static final int SHOW_SOURCE_NOTIFICATION = 64; // 0x40
+    field public static final int SHOW_SOURCE_PUSH_TO_TALK = 32; // 0x20
+    field public static final int SHOW_WITH_ASSIST = 1; // 0x1
+    field public static final int SHOW_WITH_SCREENSHOT = 2; // 0x2
+  }
+
+  public static final class VoiceInteractionSession.AbortVoiceRequest extends android.service.voice.VoiceInteractionSession.Request {
+    method @Deprecated @Nullable public CharSequence getMessage();
+    method @Nullable public android.app.VoiceInteractor.Prompt getVoicePrompt();
+    method public void sendAbortResult(android.os.Bundle);
+  }
+
+  public static class VoiceInteractionSession.ActivityId {
+  }
+
+  public static final class VoiceInteractionSession.AssistState {
+    method @NonNull public android.service.voice.VoiceInteractionSession.ActivityId getActivityId();
+    method @Nullable public android.app.assist.AssistContent getAssistContent();
+    method @Nullable public android.os.Bundle getAssistData();
+    method @Nullable public android.app.assist.AssistStructure getAssistStructure();
+    method @IntRange(from=0) public int getCount();
+    method @IntRange(from=0xffffffff) public int getIndex();
+    method public boolean isFocused();
+  }
+
+  public static final class VoiceInteractionSession.CommandRequest extends android.service.voice.VoiceInteractionSession.Request {
+    method public String getCommand();
+    method public void sendIntermediateResult(android.os.Bundle);
+    method public void sendResult(android.os.Bundle);
+  }
+
+  public static final class VoiceInteractionSession.CompleteVoiceRequest extends android.service.voice.VoiceInteractionSession.Request {
+    method @Deprecated @Nullable public CharSequence getMessage();
+    method @Nullable public android.app.VoiceInteractor.Prompt getVoicePrompt();
+    method public void sendCompleteResult(android.os.Bundle);
+  }
+
+  public static final class VoiceInteractionSession.ConfirmationRequest extends android.service.voice.VoiceInteractionSession.Request {
+    method @Deprecated @Nullable public CharSequence getPrompt();
+    method @Nullable public android.app.VoiceInteractor.Prompt getVoicePrompt();
+    method public void sendConfirmationResult(boolean, android.os.Bundle);
+  }
+
+  public static final class VoiceInteractionSession.Insets {
+    ctor public VoiceInteractionSession.Insets();
+    field public static final int TOUCHABLE_INSETS_CONTENT = 1; // 0x1
+    field public static final int TOUCHABLE_INSETS_FRAME = 0; // 0x0
+    field public static final int TOUCHABLE_INSETS_REGION = 3; // 0x3
+    field public final android.graphics.Rect contentInsets;
+    field public int touchableInsets;
+    field public final android.graphics.Region touchableRegion;
+  }
+
+  public static final class VoiceInteractionSession.PickOptionRequest extends android.service.voice.VoiceInteractionSession.Request {
+    method public android.app.VoiceInteractor.PickOptionRequest.Option[] getOptions();
+    method @Deprecated @Nullable public CharSequence getPrompt();
+    method @Nullable public android.app.VoiceInteractor.Prompt getVoicePrompt();
+    method public void sendIntermediatePickOptionResult(android.app.VoiceInteractor.PickOptionRequest.Option[], android.os.Bundle);
+    method public void sendPickOptionResult(android.app.VoiceInteractor.PickOptionRequest.Option[], android.os.Bundle);
+  }
+
+  public static class VoiceInteractionSession.Request {
+    method public void cancel();
+    method public String getCallingPackage();
+    method public int getCallingUid();
+    method public android.os.Bundle getExtras();
+    method public boolean isActive();
+  }
+
+  public abstract class VoiceInteractionSessionService extends android.app.Service {
+    ctor public VoiceInteractionSessionService();
+    method public android.os.IBinder onBind(android.content.Intent);
+    method public abstract android.service.voice.VoiceInteractionSession onNewSession(android.os.Bundle);
+  }
+
+}
+
+package android.service.vr {
+
+  public abstract class VrListenerService extends android.app.Service {
+    ctor public VrListenerService();
+    method public static final boolean isVrModePackageEnabled(@NonNull android.content.Context, @NonNull android.content.ComponentName);
+    method public android.os.IBinder onBind(android.content.Intent);
+    method public void onCurrentVrActivityChanged(android.content.ComponentName);
+    field public static final String SERVICE_INTERFACE = "android.service.vr.VrListenerService";
+  }
+
+}
+
+package android.service.wallpaper {
+
+  public abstract class WallpaperService extends android.app.Service {
+    ctor public WallpaperService();
+    method public final android.os.IBinder onBind(android.content.Intent);
+    method public abstract android.service.wallpaper.WallpaperService.Engine onCreateEngine();
+    field public static final String SERVICE_INTERFACE = "android.service.wallpaper.WallpaperService";
+    field public static final String SERVICE_META_DATA = "android.service.wallpaper";
+  }
+
+  public class WallpaperService.Engine {
+    ctor public WallpaperService.Engine();
+    method protected void dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
+    method public int getDesiredMinimumHeight();
+    method public int getDesiredMinimumWidth();
+    method @Nullable public android.content.Context getDisplayContext();
+    method public android.view.SurfaceHolder getSurfaceHolder();
+    method public boolean isPreview();
+    method public boolean isVisible();
+    method public void notifyColorsChanged();
+    method public void onApplyWindowInsets(android.view.WindowInsets);
+    method public android.os.Bundle onCommand(String, int, int, int, android.os.Bundle, boolean);
+    method @Nullable public android.app.WallpaperColors onComputeColors();
+    method public void onCreate(android.view.SurfaceHolder);
+    method public void onDesiredSizeChanged(int, int);
+    method public void onDestroy();
+    method public void onOffsetsChanged(float, float, float, float, int, int);
+    method public void onSurfaceChanged(android.view.SurfaceHolder, int, int, int);
+    method public void onSurfaceCreated(android.view.SurfaceHolder);
+    method public void onSurfaceDestroyed(android.view.SurfaceHolder);
+    method public void onSurfaceRedrawNeeded(android.view.SurfaceHolder);
+    method public void onTouchEvent(android.view.MotionEvent);
+    method public void onVisibilityChanged(boolean);
+    method public void onZoomChanged(@FloatRange(from=0.0f, to=1.0f) float);
+    method public void setOffsetNotificationsEnabled(boolean);
+    method public void setTouchEventsEnabled(boolean);
+  }
+
+}
+
+package android.speech {
+
+  public interface RecognitionListener {
+    method public void onBeginningOfSpeech();
+    method public void onBufferReceived(byte[]);
+    method public void onEndOfSpeech();
+    method public void onError(int);
+    method public void onEvent(int, android.os.Bundle);
+    method public void onPartialResults(android.os.Bundle);
+    method public void onReadyForSpeech(android.os.Bundle);
+    method public void onResults(android.os.Bundle);
+    method public void onRmsChanged(float);
+  }
+
+  public abstract class RecognitionService extends android.app.Service {
+    ctor public RecognitionService();
+    method public final android.os.IBinder onBind(android.content.Intent);
+    method protected abstract void onCancel(android.speech.RecognitionService.Callback);
+    method protected abstract void onStartListening(android.content.Intent, android.speech.RecognitionService.Callback);
+    method protected abstract void onStopListening(android.speech.RecognitionService.Callback);
+    field public static final String SERVICE_INTERFACE = "android.speech.RecognitionService";
+    field public static final String SERVICE_META_DATA = "android.speech";
+  }
+
+  public class RecognitionService.Callback {
+    method public void beginningOfSpeech() throws android.os.RemoteException;
+    method public void bufferReceived(byte[]) throws android.os.RemoteException;
+    method public void endOfSpeech() throws android.os.RemoteException;
+    method public void error(int) throws android.os.RemoteException;
+    method public int getCallingUid();
+    method public void partialResults(android.os.Bundle) throws android.os.RemoteException;
+    method public void readyForSpeech(android.os.Bundle) throws android.os.RemoteException;
+    method public void results(android.os.Bundle) throws android.os.RemoteException;
+    method public void rmsChanged(float) throws android.os.RemoteException;
+  }
+
+  public class RecognizerIntent {
+    method public static final android.content.Intent getVoiceDetailsIntent(android.content.Context);
+    field public static final String ACTION_GET_LANGUAGE_DETAILS = "android.speech.action.GET_LANGUAGE_DETAILS";
+    field public static final String ACTION_RECOGNIZE_SPEECH = "android.speech.action.RECOGNIZE_SPEECH";
+    field public static final String ACTION_VOICE_SEARCH_HANDS_FREE = "android.speech.action.VOICE_SEARCH_HANDS_FREE";
+    field public static final String ACTION_WEB_SEARCH = "android.speech.action.WEB_SEARCH";
+    field public static final String DETAILS_META_DATA = "android.speech.DETAILS";
+    field public static final String EXTRA_CALLING_PACKAGE = "calling_package";
+    field public static final String EXTRA_CONFIDENCE_SCORES = "android.speech.extra.CONFIDENCE_SCORES";
+    field public static final String EXTRA_LANGUAGE = "android.speech.extra.LANGUAGE";
+    field public static final String EXTRA_LANGUAGE_MODEL = "android.speech.extra.LANGUAGE_MODEL";
+    field public static final String EXTRA_LANGUAGE_PREFERENCE = "android.speech.extra.LANGUAGE_PREFERENCE";
+    field public static final String EXTRA_MAX_RESULTS = "android.speech.extra.MAX_RESULTS";
+    field public static final String EXTRA_ONLY_RETURN_LANGUAGE_PREFERENCE = "android.speech.extra.ONLY_RETURN_LANGUAGE_PREFERENCE";
+    field public static final String EXTRA_ORIGIN = "android.speech.extra.ORIGIN";
+    field public static final String EXTRA_PARTIAL_RESULTS = "android.speech.extra.PARTIAL_RESULTS";
+    field public static final String EXTRA_PREFER_OFFLINE = "android.speech.extra.PREFER_OFFLINE";
+    field public static final String EXTRA_PROMPT = "android.speech.extra.PROMPT";
+    field public static final String EXTRA_RESULTS = "android.speech.extra.RESULTS";
+    field public static final String EXTRA_RESULTS_PENDINGINTENT = "android.speech.extra.RESULTS_PENDINGINTENT";
+    field public static final String EXTRA_RESULTS_PENDINGINTENT_BUNDLE = "android.speech.extra.RESULTS_PENDINGINTENT_BUNDLE";
+    field public static final String EXTRA_SECURE = "android.speech.extras.EXTRA_SECURE";
+    field public static final String EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS = "android.speech.extras.SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS";
+    field public static final String EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS = "android.speech.extras.SPEECH_INPUT_MINIMUM_LENGTH_MILLIS";
+    field public static final String EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS = "android.speech.extras.SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS";
+    field public static final String EXTRA_SUPPORTED_LANGUAGES = "android.speech.extra.SUPPORTED_LANGUAGES";
+    field public static final String EXTRA_WEB_SEARCH_ONLY = "android.speech.extra.WEB_SEARCH_ONLY";
+    field public static final String LANGUAGE_MODEL_FREE_FORM = "free_form";
+    field public static final String LANGUAGE_MODEL_WEB_SEARCH = "web_search";
+    field public static final int RESULT_AUDIO_ERROR = 5; // 0x5
+    field public static final int RESULT_CLIENT_ERROR = 2; // 0x2
+    field public static final int RESULT_NETWORK_ERROR = 4; // 0x4
+    field public static final int RESULT_NO_MATCH = 1; // 0x1
+    field public static final int RESULT_SERVER_ERROR = 3; // 0x3
+  }
+
+  public class RecognizerResultsIntent {
+    field public static final String ACTION_VOICE_SEARCH_RESULTS = "android.speech.action.VOICE_SEARCH_RESULTS";
+    field public static final String EXTRA_VOICE_SEARCH_RESULT_HTML = "android.speech.extras.VOICE_SEARCH_RESULT_HTML";
+    field public static final String EXTRA_VOICE_SEARCH_RESULT_HTML_BASE_URLS = "android.speech.extras.VOICE_SEARCH_RESULT_HTML_BASE_URLS";
+    field public static final String EXTRA_VOICE_SEARCH_RESULT_HTTP_HEADERS = "android.speech.extras.EXTRA_VOICE_SEARCH_RESULT_HTTP_HEADERS";
+    field public static final String EXTRA_VOICE_SEARCH_RESULT_STRINGS = "android.speech.extras.VOICE_SEARCH_RESULT_STRINGS";
+    field public static final String EXTRA_VOICE_SEARCH_RESULT_URLS = "android.speech.extras.VOICE_SEARCH_RESULT_URLS";
+    field public static final String URI_SCHEME_INLINE = "inline";
+  }
+
+  public class SpeechRecognizer {
+    method public void cancel();
+    method public static android.speech.SpeechRecognizer createSpeechRecognizer(android.content.Context);
+    method public static android.speech.SpeechRecognizer createSpeechRecognizer(android.content.Context, android.content.ComponentName);
+    method public void destroy();
+    method public static boolean isRecognitionAvailable(android.content.Context);
+    method public void setRecognitionListener(android.speech.RecognitionListener);
+    method public void startListening(android.content.Intent);
+    method public void stopListening();
+    field public static final String CONFIDENCE_SCORES = "confidence_scores";
+    field public static final int ERROR_AUDIO = 3; // 0x3
+    field public static final int ERROR_CLIENT = 5; // 0x5
+    field public static final int ERROR_INSUFFICIENT_PERMISSIONS = 9; // 0x9
+    field public static final int ERROR_NETWORK = 2; // 0x2
+    field public static final int ERROR_NETWORK_TIMEOUT = 1; // 0x1
+    field public static final int ERROR_NO_MATCH = 7; // 0x7
+    field public static final int ERROR_RECOGNIZER_BUSY = 8; // 0x8
+    field public static final int ERROR_SERVER = 4; // 0x4
+    field public static final int ERROR_SPEECH_TIMEOUT = 6; // 0x6
+    field public static final String RESULTS_RECOGNITION = "results_recognition";
+  }
+
+}
+
+package android.speech.tts {
+
+  public interface SynthesisCallback {
+    method public int audioAvailable(byte[], int, int);
+    method public int done();
+    method public void error();
+    method public void error(int);
+    method public int getMaxBufferSize();
+    method public boolean hasFinished();
+    method public boolean hasStarted();
+    method public default void rangeStart(int, int, int);
+    method public int start(int, int, @IntRange(from=1, to=2) int);
+  }
+
+  public final class SynthesisRequest {
+    ctor public SynthesisRequest(String, android.os.Bundle);
+    ctor public SynthesisRequest(CharSequence, android.os.Bundle);
+    method public int getCallerUid();
+    method public CharSequence getCharSequenceText();
+    method public String getCountry();
+    method public String getLanguage();
+    method public android.os.Bundle getParams();
+    method public int getPitch();
+    method public int getSpeechRate();
+    method @Deprecated public String getText();
+    method public String getVariant();
+    method public String getVoiceName();
+  }
+
+  public class TextToSpeech {
+    ctor public TextToSpeech(android.content.Context, android.speech.tts.TextToSpeech.OnInitListener);
+    ctor public TextToSpeech(android.content.Context, android.speech.tts.TextToSpeech.OnInitListener, String);
+    method public int addEarcon(String, String, @RawRes int);
+    method @Deprecated public int addEarcon(String, String);
+    method public int addEarcon(String, java.io.File);
+    method public int addSpeech(String, String, @RawRes int);
+    method public int addSpeech(CharSequence, String, @RawRes int);
+    method public int addSpeech(String, String);
+    method public int addSpeech(CharSequence, java.io.File);
+    method @Deprecated public boolean areDefaultsEnforced();
+    method public java.util.Set<java.util.Locale> getAvailableLanguages();
+    method public String getDefaultEngine();
+    method @Deprecated public java.util.Locale getDefaultLanguage();
+    method public android.speech.tts.Voice getDefaultVoice();
+    method public java.util.List<android.speech.tts.TextToSpeech.EngineInfo> getEngines();
+    method @Deprecated public java.util.Set<java.lang.String> getFeatures(java.util.Locale);
+    method @Deprecated public java.util.Locale getLanguage();
+    method public static int getMaxSpeechInputLength();
+    method public android.speech.tts.Voice getVoice();
+    method public java.util.Set<android.speech.tts.Voice> getVoices();
+    method public int isLanguageAvailable(java.util.Locale);
+    method public boolean isSpeaking();
+    method public int playEarcon(String, int, android.os.Bundle, String);
+    method @Deprecated public int playEarcon(String, int, java.util.HashMap<java.lang.String,java.lang.String>);
+    method @Deprecated public int playSilence(long, int, java.util.HashMap<java.lang.String,java.lang.String>);
+    method public int playSilentUtterance(long, int, String);
+    method public int setAudioAttributes(android.media.AudioAttributes);
+    method @Deprecated public int setEngineByPackageName(String);
+    method public int setLanguage(java.util.Locale);
+    method @Deprecated public int setOnUtteranceCompletedListener(android.speech.tts.TextToSpeech.OnUtteranceCompletedListener);
+    method public int setOnUtteranceProgressListener(android.speech.tts.UtteranceProgressListener);
+    method public int setPitch(float);
+    method public int setSpeechRate(float);
+    method public int setVoice(android.speech.tts.Voice);
+    method public void shutdown();
+    method public int speak(CharSequence, int, android.os.Bundle, String);
+    method @Deprecated public int speak(String, int, java.util.HashMap<java.lang.String,java.lang.String>);
+    method public int stop();
+    method public int synthesizeToFile(@NonNull CharSequence, @NonNull android.os.Bundle, @NonNull android.os.ParcelFileDescriptor, @NonNull String);
+    method public int synthesizeToFile(CharSequence, android.os.Bundle, java.io.File, String);
+    method @Deprecated public int synthesizeToFile(String, java.util.HashMap<java.lang.String,java.lang.String>, String);
+    field public static final String ACTION_TTS_QUEUE_PROCESSING_COMPLETED = "android.speech.tts.TTS_QUEUE_PROCESSING_COMPLETED";
+    field public static final int ERROR = -1; // 0xffffffff
+    field public static final int ERROR_INVALID_REQUEST = -8; // 0xfffffff8
+    field public static final int ERROR_NETWORK = -6; // 0xfffffffa
+    field public static final int ERROR_NETWORK_TIMEOUT = -7; // 0xfffffff9
+    field public static final int ERROR_NOT_INSTALLED_YET = -9; // 0xfffffff7
+    field public static final int ERROR_OUTPUT = -5; // 0xfffffffb
+    field public static final int ERROR_SERVICE = -4; // 0xfffffffc
+    field public static final int ERROR_SYNTHESIS = -3; // 0xfffffffd
+    field public static final int LANG_AVAILABLE = 0; // 0x0
+    field public static final int LANG_COUNTRY_AVAILABLE = 1; // 0x1
+    field public static final int LANG_COUNTRY_VAR_AVAILABLE = 2; // 0x2
+    field public static final int LANG_MISSING_DATA = -1; // 0xffffffff
+    field public static final int LANG_NOT_SUPPORTED = -2; // 0xfffffffe
+    field public static final int QUEUE_ADD = 1; // 0x1
+    field public static final int QUEUE_FLUSH = 0; // 0x0
+    field public static final int STOPPED = -2; // 0xfffffffe
+    field public static final int SUCCESS = 0; // 0x0
+  }
+
+  public class TextToSpeech.Engine {
+    ctor public TextToSpeech.Engine();
+    field public static final String ACTION_CHECK_TTS_DATA = "android.speech.tts.engine.CHECK_TTS_DATA";
+    field public static final String ACTION_GET_SAMPLE_TEXT = "android.speech.tts.engine.GET_SAMPLE_TEXT";
+    field public static final String ACTION_INSTALL_TTS_DATA = "android.speech.tts.engine.INSTALL_TTS_DATA";
+    field public static final String ACTION_TTS_DATA_INSTALLED = "android.speech.tts.engine.TTS_DATA_INSTALLED";
+    field @Deprecated public static final int CHECK_VOICE_DATA_BAD_DATA = -1; // 0xffffffff
+    field public static final int CHECK_VOICE_DATA_FAIL = 0; // 0x0
+    field @Deprecated public static final int CHECK_VOICE_DATA_MISSING_DATA = -2; // 0xfffffffe
+    field @Deprecated public static final int CHECK_VOICE_DATA_MISSING_VOLUME = -3; // 0xfffffffd
+    field public static final int CHECK_VOICE_DATA_PASS = 1; // 0x1
+    field public static final int DEFAULT_STREAM = 3; // 0x3
+    field public static final String EXTRA_AVAILABLE_VOICES = "availableVoices";
+    field @Deprecated public static final String EXTRA_CHECK_VOICE_DATA_FOR = "checkVoiceDataFor";
+    field public static final String EXTRA_SAMPLE_TEXT = "sampleText";
+    field @Deprecated public static final String EXTRA_TTS_DATA_INSTALLED = "dataInstalled";
+    field public static final String EXTRA_UNAVAILABLE_VOICES = "unavailableVoices";
+    field @Deprecated public static final String EXTRA_VOICE_DATA_FILES = "dataFiles";
+    field @Deprecated public static final String EXTRA_VOICE_DATA_FILES_INFO = "dataFilesInfo";
+    field @Deprecated public static final String EXTRA_VOICE_DATA_ROOT_DIRECTORY = "dataRoot";
+    field public static final String INTENT_ACTION_TTS_SERVICE = "android.intent.action.TTS_SERVICE";
+    field @Deprecated public static final String KEY_FEATURE_EMBEDDED_SYNTHESIS = "embeddedTts";
+    field public static final String KEY_FEATURE_NETWORK_RETRIES_COUNT = "networkRetriesCount";
+    field @Deprecated public static final String KEY_FEATURE_NETWORK_SYNTHESIS = "networkTts";
+    field public static final String KEY_FEATURE_NETWORK_TIMEOUT_MS = "networkTimeoutMs";
+    field public static final String KEY_FEATURE_NOT_INSTALLED = "notInstalled";
+    field public static final String KEY_PARAM_PAN = "pan";
+    field public static final String KEY_PARAM_SESSION_ID = "sessionId";
+    field public static final String KEY_PARAM_STREAM = "streamType";
+    field public static final String KEY_PARAM_UTTERANCE_ID = "utteranceId";
+    field public static final String KEY_PARAM_VOLUME = "volume";
+    field public static final String SERVICE_META_DATA = "android.speech.tts";
+  }
+
+  public static class TextToSpeech.EngineInfo {
+    ctor public TextToSpeech.EngineInfo();
+    field public int icon;
+    field public String label;
+    field public String name;
+  }
+
+  public static interface TextToSpeech.OnInitListener {
+    method public void onInit(int);
+  }
+
+  @Deprecated public static interface TextToSpeech.OnUtteranceCompletedListener {
+    method @Deprecated public void onUtteranceCompleted(String);
+  }
+
+  public abstract class TextToSpeechService extends android.app.Service {
+    ctor public TextToSpeechService();
+    method public android.os.IBinder onBind(android.content.Intent);
+    method public String onGetDefaultVoiceNameFor(String, String, String);
+    method protected java.util.Set<java.lang.String> onGetFeaturesForLanguage(String, String, String);
+    method protected abstract String[] onGetLanguage();
+    method public java.util.List<android.speech.tts.Voice> onGetVoices();
+    method protected abstract int onIsLanguageAvailable(String, String, String);
+    method public int onIsValidVoiceName(String);
+    method protected abstract int onLoadLanguage(String, String, String);
+    method public int onLoadVoice(String);
+    method protected abstract void onStop();
+    method protected abstract void onSynthesizeText(android.speech.tts.SynthesisRequest, android.speech.tts.SynthesisCallback);
+  }
+
+  public abstract class UtteranceProgressListener {
+    ctor public UtteranceProgressListener();
+    method public void onAudioAvailable(String, byte[]);
+    method public void onBeginSynthesis(String, int, int, int);
+    method public abstract void onDone(String);
+    method @Deprecated public abstract void onError(String);
+    method public void onError(String, int);
+    method public void onRangeStart(String, int, int, int);
+    method public abstract void onStart(String);
+    method public void onStop(String, boolean);
+  }
+
+  public class Voice implements android.os.Parcelable {
+    ctor public Voice(String, java.util.Locale, int, int, boolean, java.util.Set<java.lang.String>);
+    method public int describeContents();
+    method public java.util.Set<java.lang.String> getFeatures();
+    method public int getLatency();
+    method public java.util.Locale getLocale();
+    method public String getName();
+    method public int getQuality();
+    method public boolean isNetworkConnectionRequired();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.speech.tts.Voice> CREATOR;
+    field public static final int LATENCY_HIGH = 400; // 0x190
+    field public static final int LATENCY_LOW = 200; // 0xc8
+    field public static final int LATENCY_NORMAL = 300; // 0x12c
+    field public static final int LATENCY_VERY_HIGH = 500; // 0x1f4
+    field public static final int LATENCY_VERY_LOW = 100; // 0x64
+    field public static final int QUALITY_HIGH = 400; // 0x190
+    field public static final int QUALITY_LOW = 200; // 0xc8
+    field public static final int QUALITY_NORMAL = 300; // 0x12c
+    field public static final int QUALITY_VERY_HIGH = 500; // 0x1f4
+    field public static final int QUALITY_VERY_LOW = 100; // 0x64
+  }
+
+}
+
+package android.system {
+
+  public final class ErrnoException extends java.lang.Exception {
+    ctor public ErrnoException(String, int);
+    ctor public ErrnoException(String, int, Throwable);
+    method @NonNull public java.io.IOException rethrowAsIOException() throws java.io.IOException;
+    method @NonNull public java.net.SocketException rethrowAsSocketException() throws java.net.SocketException;
+    field public final int errno;
+  }
+
+  public class Int64Ref {
+    ctor public Int64Ref(long);
+    field public long value;
+  }
+
+  public final class Os {
+    method public static java.io.FileDescriptor accept(java.io.FileDescriptor, java.net.InetSocketAddress) throws android.system.ErrnoException, java.net.SocketException;
+    method public static boolean access(String, int) throws android.system.ErrnoException;
+    method public static void bind(java.io.FileDescriptor, java.net.InetAddress, int) throws android.system.ErrnoException, java.net.SocketException;
+    method public static void bind(@NonNull java.io.FileDescriptor, @NonNull java.net.SocketAddress) throws android.system.ErrnoException, java.net.SocketException;
+    method public static void chmod(String, int) throws android.system.ErrnoException;
+    method public static void chown(String, int, int) throws android.system.ErrnoException;
+    method public static void close(java.io.FileDescriptor) throws android.system.ErrnoException;
+    method public static void connect(java.io.FileDescriptor, java.net.InetAddress, int) throws android.system.ErrnoException, java.net.SocketException;
+    method public static void connect(@NonNull java.io.FileDescriptor, @NonNull java.net.SocketAddress) throws android.system.ErrnoException, java.net.SocketException;
+    method public static java.io.FileDescriptor dup(java.io.FileDescriptor) throws android.system.ErrnoException;
+    method public static java.io.FileDescriptor dup2(java.io.FileDescriptor, int) throws android.system.ErrnoException;
+    method public static String[] environ();
+    method public static void execv(String, String[]) throws android.system.ErrnoException;
+    method public static void execve(String, String[], String[]) throws android.system.ErrnoException;
+    method public static void fchmod(java.io.FileDescriptor, int) throws android.system.ErrnoException;
+    method public static void fchown(java.io.FileDescriptor, int, int) throws android.system.ErrnoException;
+    method public static int fcntlInt(@NonNull java.io.FileDescriptor, int, int) throws android.system.ErrnoException;
+    method public static void fdatasync(java.io.FileDescriptor) throws android.system.ErrnoException;
+    method public static android.system.StructStat fstat(java.io.FileDescriptor) throws android.system.ErrnoException;
+    method public static android.system.StructStatVfs fstatvfs(java.io.FileDescriptor) throws android.system.ErrnoException;
+    method public static void fsync(java.io.FileDescriptor) throws android.system.ErrnoException;
+    method public static void ftruncate(java.io.FileDescriptor, long) throws android.system.ErrnoException;
+    method public static String gai_strerror(int);
+    method public static int getegid();
+    method public static String getenv(String);
+    method public static int geteuid();
+    method public static int getgid();
+    method public static java.net.SocketAddress getpeername(java.io.FileDescriptor) throws android.system.ErrnoException;
+    method public static int getpid();
+    method public static int getppid();
+    method public static java.net.SocketAddress getsockname(java.io.FileDescriptor) throws android.system.ErrnoException;
+    method @NonNull public static android.system.StructTimeval getsockoptTimeval(@NonNull java.io.FileDescriptor, int, int) throws android.system.ErrnoException;
+    method public static int gettid();
+    method public static int getuid();
+    method public static byte[] getxattr(String, String) throws android.system.ErrnoException;
+    method public static String if_indextoname(int);
+    method public static int if_nametoindex(String);
+    method public static java.net.InetAddress inet_pton(int, String);
+    method public static boolean isatty(java.io.FileDescriptor);
+    method public static void kill(int, int) throws android.system.ErrnoException;
+    method public static void lchown(String, int, int) throws android.system.ErrnoException;
+    method public static void link(String, String) throws android.system.ErrnoException;
+    method public static void listen(java.io.FileDescriptor, int) throws android.system.ErrnoException;
+    method public static String[] listxattr(String) throws android.system.ErrnoException;
+    method public static long lseek(java.io.FileDescriptor, long, int) throws android.system.ErrnoException;
+    method public static android.system.StructStat lstat(String) throws android.system.ErrnoException;
+    method @NonNull public static java.io.FileDescriptor memfd_create(@NonNull String, int) throws android.system.ErrnoException;
+    method public static void mincore(long, long, byte[]) throws android.system.ErrnoException;
+    method public static void mkdir(String, int) throws android.system.ErrnoException;
+    method public static void mkfifo(String, int) throws android.system.ErrnoException;
+    method public static void mlock(long, long) throws android.system.ErrnoException;
+    method public static long mmap(long, long, int, int, java.io.FileDescriptor, long) throws android.system.ErrnoException;
+    method public static void msync(long, long, int) throws android.system.ErrnoException;
+    method public static void munlock(long, long) throws android.system.ErrnoException;
+    method public static void munmap(long, long) throws android.system.ErrnoException;
+    method public static java.io.FileDescriptor open(String, int, int) throws android.system.ErrnoException;
+    method public static java.io.FileDescriptor[] pipe() throws android.system.ErrnoException;
+    method public static int poll(android.system.StructPollfd[], int) throws android.system.ErrnoException;
+    method public static void posix_fallocate(java.io.FileDescriptor, long, long) throws android.system.ErrnoException;
+    method public static int prctl(int, long, long, long, long) throws android.system.ErrnoException;
+    method public static int pread(java.io.FileDescriptor, java.nio.ByteBuffer, long) throws android.system.ErrnoException, java.io.InterruptedIOException;
+    method public static int pread(java.io.FileDescriptor, byte[], int, int, long) throws android.system.ErrnoException, java.io.InterruptedIOException;
+    method public static int pwrite(java.io.FileDescriptor, java.nio.ByteBuffer, long) throws android.system.ErrnoException, java.io.InterruptedIOException;
+    method public static int pwrite(java.io.FileDescriptor, byte[], int, int, long) throws android.system.ErrnoException, java.io.InterruptedIOException;
+    method public static int read(java.io.FileDescriptor, java.nio.ByteBuffer) throws android.system.ErrnoException, java.io.InterruptedIOException;
+    method public static int read(java.io.FileDescriptor, byte[], int, int) throws android.system.ErrnoException, java.io.InterruptedIOException;
+    method public static String readlink(String) throws android.system.ErrnoException;
+    method public static int readv(java.io.FileDescriptor, Object[], int[], int[]) throws android.system.ErrnoException, java.io.InterruptedIOException;
+    method public static int recvfrom(java.io.FileDescriptor, java.nio.ByteBuffer, int, java.net.InetSocketAddress) throws android.system.ErrnoException, java.net.SocketException;
+    method public static int recvfrom(java.io.FileDescriptor, byte[], int, int, int, java.net.InetSocketAddress) throws android.system.ErrnoException, java.net.SocketException;
+    method public static void remove(String) throws android.system.ErrnoException;
+    method public static void removexattr(String, String) throws android.system.ErrnoException;
+    method public static void rename(String, String) throws android.system.ErrnoException;
+    method public static long sendfile(java.io.FileDescriptor, java.io.FileDescriptor, android.system.Int64Ref, long) throws android.system.ErrnoException;
+    method public static int sendto(java.io.FileDescriptor, java.nio.ByteBuffer, int, java.net.InetAddress, int) throws android.system.ErrnoException, java.net.SocketException;
+    method public static int sendto(java.io.FileDescriptor, byte[], int, int, int, java.net.InetAddress, int) throws android.system.ErrnoException, java.net.SocketException;
+    method public static int sendto(@NonNull java.io.FileDescriptor, @NonNull byte[], int, int, int, @Nullable java.net.SocketAddress) throws android.system.ErrnoException, java.net.SocketException;
+    method @Deprecated public static void setegid(int) throws android.system.ErrnoException;
+    method public static void setenv(String, String, boolean) throws android.system.ErrnoException;
+    method @Deprecated public static void seteuid(int) throws android.system.ErrnoException;
+    method @Deprecated public static void setgid(int) throws android.system.ErrnoException;
+    method public static int setsid() throws android.system.ErrnoException;
+    method public static void setsockoptInt(java.io.FileDescriptor, int, int, int) throws android.system.ErrnoException;
+    method public static void setsockoptTimeval(@NonNull java.io.FileDescriptor, int, int, @NonNull android.system.StructTimeval) throws android.system.ErrnoException;
+    method @Deprecated public static void setuid(int) throws android.system.ErrnoException;
+    method public static void setxattr(String, String, byte[], int) throws android.system.ErrnoException;
+    method public static void shutdown(java.io.FileDescriptor, int) throws android.system.ErrnoException;
+    method public static java.io.FileDescriptor socket(int, int, int) throws android.system.ErrnoException;
+    method public static void socketpair(int, int, int, java.io.FileDescriptor, java.io.FileDescriptor) throws android.system.ErrnoException;
+    method public static android.system.StructStat stat(String) throws android.system.ErrnoException;
+    method public static android.system.StructStatVfs statvfs(String) throws android.system.ErrnoException;
+    method public static String strerror(int);
+    method public static String strsignal(int);
+    method public static void symlink(String, String) throws android.system.ErrnoException;
+    method public static long sysconf(int);
+    method public static void tcdrain(java.io.FileDescriptor) throws android.system.ErrnoException;
+    method public static void tcsendbreak(java.io.FileDescriptor, int) throws android.system.ErrnoException;
+    method public static int umask(int);
+    method public static android.system.StructUtsname uname();
+    method public static void unsetenv(String) throws android.system.ErrnoException;
+    method public static int write(java.io.FileDescriptor, java.nio.ByteBuffer) throws android.system.ErrnoException, java.io.InterruptedIOException;
+    method public static int write(java.io.FileDescriptor, byte[], int, int) throws android.system.ErrnoException, java.io.InterruptedIOException;
+    method public static int writev(java.io.FileDescriptor, Object[], int[], int[]) throws android.system.ErrnoException, java.io.InterruptedIOException;
+  }
+
+  public final class OsConstants {
+    method public static boolean S_ISBLK(int);
+    method public static boolean S_ISCHR(int);
+    method public static boolean S_ISDIR(int);
+    method public static boolean S_ISFIFO(int);
+    method public static boolean S_ISLNK(int);
+    method public static boolean S_ISREG(int);
+    method public static boolean S_ISSOCK(int);
+    method public static boolean WCOREDUMP(int);
+    method public static int WEXITSTATUS(int);
+    method public static boolean WIFEXITED(int);
+    method public static boolean WIFSIGNALED(int);
+    method public static boolean WIFSTOPPED(int);
+    method public static int WSTOPSIG(int);
+    method public static int WTERMSIG(int);
+    method public static String errnoName(int);
+    method public static String gaiName(int);
+    field public static final int AF_INET;
+    field public static final int AF_INET6;
+    field public static final int AF_NETLINK;
+    field public static final int AF_PACKET;
+    field public static final int AF_UNIX;
+    field public static final int AF_UNSPEC;
+    field public static final int AI_ADDRCONFIG;
+    field public static final int AI_ALL;
+    field public static final int AI_CANONNAME;
+    field public static final int AI_NUMERICHOST;
+    field public static final int AI_NUMERICSERV;
+    field public static final int AI_PASSIVE;
+    field public static final int AI_V4MAPPED;
+    field public static final int ARPHRD_ETHER;
+    field public static final int CAP_AUDIT_CONTROL;
+    field public static final int CAP_AUDIT_WRITE;
+    field public static final int CAP_BLOCK_SUSPEND;
+    field public static final int CAP_CHOWN;
+    field public static final int CAP_DAC_OVERRIDE;
+    field public static final int CAP_DAC_READ_SEARCH;
+    field public static final int CAP_FOWNER;
+    field public static final int CAP_FSETID;
+    field public static final int CAP_IPC_LOCK;
+    field public static final int CAP_IPC_OWNER;
+    field public static final int CAP_KILL;
+    field public static final int CAP_LAST_CAP;
+    field public static final int CAP_LEASE;
+    field public static final int CAP_LINUX_IMMUTABLE;
+    field public static final int CAP_MAC_ADMIN;
+    field public static final int CAP_MAC_OVERRIDE;
+    field public static final int CAP_MKNOD;
+    field public static final int CAP_NET_ADMIN;
+    field public static final int CAP_NET_BIND_SERVICE;
+    field public static final int CAP_NET_BROADCAST;
+    field public static final int CAP_NET_RAW;
+    field public static final int CAP_SETFCAP;
+    field public static final int CAP_SETGID;
+    field public static final int CAP_SETPCAP;
+    field public static final int CAP_SETUID;
+    field public static final int CAP_SYSLOG;
+    field public static final int CAP_SYS_ADMIN;
+    field public static final int CAP_SYS_BOOT;
+    field public static final int CAP_SYS_CHROOT;
+    field public static final int CAP_SYS_MODULE;
+    field public static final int CAP_SYS_NICE;
+    field public static final int CAP_SYS_PACCT;
+    field public static final int CAP_SYS_PTRACE;
+    field public static final int CAP_SYS_RAWIO;
+    field public static final int CAP_SYS_RESOURCE;
+    field public static final int CAP_SYS_TIME;
+    field public static final int CAP_SYS_TTY_CONFIG;
+    field public static final int CAP_WAKE_ALARM;
+    field public static final int E2BIG;
+    field public static final int EACCES;
+    field public static final int EADDRINUSE;
+    field public static final int EADDRNOTAVAIL;
+    field public static final int EAFNOSUPPORT;
+    field public static final int EAGAIN;
+    field public static final int EAI_AGAIN;
+    field public static final int EAI_BADFLAGS;
+    field public static final int EAI_FAIL;
+    field public static final int EAI_FAMILY;
+    field public static final int EAI_MEMORY;
+    field public static final int EAI_NODATA;
+    field public static final int EAI_NONAME;
+    field public static final int EAI_OVERFLOW;
+    field public static final int EAI_SERVICE;
+    field public static final int EAI_SOCKTYPE;
+    field public static final int EAI_SYSTEM;
+    field public static final int EALREADY;
+    field public static final int EBADF;
+    field public static final int EBADMSG;
+    field public static final int EBUSY;
+    field public static final int ECANCELED;
+    field public static final int ECHILD;
+    field public static final int ECONNABORTED;
+    field public static final int ECONNREFUSED;
+    field public static final int ECONNRESET;
+    field public static final int EDEADLK;
+    field public static final int EDESTADDRREQ;
+    field public static final int EDOM;
+    field public static final int EDQUOT;
+    field public static final int EEXIST;
+    field public static final int EFAULT;
+    field public static final int EFBIG;
+    field public static final int EHOSTUNREACH;
+    field public static final int EIDRM;
+    field public static final int EILSEQ;
+    field public static final int EINPROGRESS;
+    field public static final int EINTR;
+    field public static final int EINVAL;
+    field public static final int EIO;
+    field public static final int EISCONN;
+    field public static final int EISDIR;
+    field public static final int ELOOP;
+    field public static final int EMFILE;
+    field public static final int EMLINK;
+    field public static final int EMSGSIZE;
+    field public static final int EMULTIHOP;
+    field public static final int ENAMETOOLONG;
+    field public static final int ENETDOWN;
+    field public static final int ENETRESET;
+    field public static final int ENETUNREACH;
+    field public static final int ENFILE;
+    field public static final int ENOBUFS;
+    field public static final int ENODATA;
+    field public static final int ENODEV;
+    field public static final int ENOENT;
+    field public static final int ENOEXEC;
+    field public static final int ENOLCK;
+    field public static final int ENOLINK;
+    field public static final int ENOMEM;
+    field public static final int ENOMSG;
+    field public static final int ENOPROTOOPT;
+    field public static final int ENOSPC;
+    field public static final int ENOSR;
+    field public static final int ENOSTR;
+    field public static final int ENOSYS;
+    field public static final int ENOTCONN;
+    field public static final int ENOTDIR;
+    field public static final int ENOTEMPTY;
+    field public static final int ENOTSOCK;
+    field public static final int ENOTSUP;
+    field public static final int ENOTTY;
+    field public static final int ENXIO;
+    field public static final int EOPNOTSUPP;
+    field public static final int EOVERFLOW;
+    field public static final int EPERM;
+    field public static final int EPIPE;
+    field public static final int EPROTO;
+    field public static final int EPROTONOSUPPORT;
+    field public static final int EPROTOTYPE;
+    field public static final int ERANGE;
+    field public static final int EROFS;
+    field public static final int ESPIPE;
+    field public static final int ESRCH;
+    field public static final int ESTALE;
+    field public static final int ETH_P_ALL;
+    field public static final int ETH_P_ARP;
+    field public static final int ETH_P_IP;
+    field public static final int ETH_P_IPV6;
+    field public static final int ETIME;
+    field public static final int ETIMEDOUT;
+    field public static final int ETXTBSY;
+    field public static final int EXDEV;
+    field public static final int EXIT_FAILURE;
+    field public static final int EXIT_SUCCESS;
+    field public static final int FD_CLOEXEC;
+    field public static final int FIONREAD;
+    field public static final int F_DUPFD;
+    field public static final int F_DUPFD_CLOEXEC;
+    field public static final int F_GETFD;
+    field public static final int F_GETFL;
+    field public static final int F_GETLK;
+    field public static final int F_GETLK64;
+    field public static final int F_GETOWN;
+    field public static final int F_OK;
+    field public static final int F_RDLCK;
+    field public static final int F_SETFD;
+    field public static final int F_SETFL;
+    field public static final int F_SETLK;
+    field public static final int F_SETLK64;
+    field public static final int F_SETLKW;
+    field public static final int F_SETLKW64;
+    field public static final int F_SETOWN;
+    field public static final int F_UNLCK;
+    field public static final int F_WRLCK;
+    field public static final int ICMP6_ECHO_REPLY;
+    field public static final int ICMP6_ECHO_REQUEST;
+    field public static final int ICMP_ECHO;
+    field public static final int ICMP_ECHOREPLY;
+    field public static final int IFA_F_DADFAILED;
+    field public static final int IFA_F_DEPRECATED;
+    field public static final int IFA_F_HOMEADDRESS;
+    field public static final int IFA_F_NODAD;
+    field public static final int IFA_F_OPTIMISTIC;
+    field public static final int IFA_F_PERMANENT;
+    field public static final int IFA_F_SECONDARY;
+    field public static final int IFA_F_TEMPORARY;
+    field public static final int IFA_F_TENTATIVE;
+    field public static final int IFF_ALLMULTI;
+    field public static final int IFF_AUTOMEDIA;
+    field public static final int IFF_BROADCAST;
+    field public static final int IFF_DEBUG;
+    field public static final int IFF_DYNAMIC;
+    field public static final int IFF_LOOPBACK;
+    field public static final int IFF_MASTER;
+    field public static final int IFF_MULTICAST;
+    field public static final int IFF_NOARP;
+    field public static final int IFF_NOTRAILERS;
+    field public static final int IFF_POINTOPOINT;
+    field public static final int IFF_PORTSEL;
+    field public static final int IFF_PROMISC;
+    field public static final int IFF_RUNNING;
+    field public static final int IFF_SLAVE;
+    field public static final int IFF_UP;
+    field public static final int IPPROTO_ICMP;
+    field public static final int IPPROTO_ICMPV6;
+    field public static final int IPPROTO_IP;
+    field public static final int IPPROTO_IPV6;
+    field public static final int IPPROTO_RAW;
+    field public static final int IPPROTO_TCP;
+    field public static final int IPPROTO_UDP;
+    field public static final int IPV6_CHECKSUM;
+    field public static final int IPV6_MULTICAST_HOPS;
+    field public static final int IPV6_MULTICAST_IF;
+    field public static final int IPV6_MULTICAST_LOOP;
+    field public static final int IPV6_RECVDSTOPTS;
+    field public static final int IPV6_RECVHOPLIMIT;
+    field public static final int IPV6_RECVHOPOPTS;
+    field public static final int IPV6_RECVPKTINFO;
+    field public static final int IPV6_RECVRTHDR;
+    field public static final int IPV6_RECVTCLASS;
+    field public static final int IPV6_TCLASS;
+    field public static final int IPV6_UNICAST_HOPS;
+    field public static final int IPV6_V6ONLY;
+    field public static final int IP_MULTICAST_IF;
+    field public static final int IP_MULTICAST_LOOP;
+    field public static final int IP_MULTICAST_TTL;
+    field public static final int IP_TOS;
+    field public static final int IP_TTL;
+    field public static final int MAP_ANONYMOUS;
+    field public static final int MAP_FIXED;
+    field public static final int MAP_PRIVATE;
+    field public static final int MAP_SHARED;
+    field public static final int MCAST_BLOCK_SOURCE;
+    field public static final int MCAST_JOIN_GROUP;
+    field public static final int MCAST_JOIN_SOURCE_GROUP;
+    field public static final int MCAST_LEAVE_GROUP;
+    field public static final int MCAST_LEAVE_SOURCE_GROUP;
+    field public static final int MCAST_UNBLOCK_SOURCE;
+    field public static final int MCL_CURRENT;
+    field public static final int MCL_FUTURE;
+    field public static final int MFD_CLOEXEC;
+    field public static final int MSG_CTRUNC;
+    field public static final int MSG_DONTROUTE;
+    field public static final int MSG_EOR;
+    field public static final int MSG_OOB;
+    field public static final int MSG_PEEK;
+    field public static final int MSG_TRUNC;
+    field public static final int MSG_WAITALL;
+    field public static final int MS_ASYNC;
+    field public static final int MS_INVALIDATE;
+    field public static final int MS_SYNC;
+    field public static final int NETLINK_INET_DIAG;
+    field public static final int NETLINK_NETFILTER;
+    field public static final int NETLINK_ROUTE;
+    field public static final int NI_DGRAM;
+    field public static final int NI_NAMEREQD;
+    field public static final int NI_NOFQDN;
+    field public static final int NI_NUMERICHOST;
+    field public static final int NI_NUMERICSERV;
+    field public static final int O_ACCMODE;
+    field public static final int O_APPEND;
+    field public static final int O_CLOEXEC;
+    field public static final int O_CREAT;
+    field public static final int O_DSYNC;
+    field public static final int O_EXCL;
+    field public static final int O_NOCTTY;
+    field public static final int O_NOFOLLOW;
+    field public static final int O_NONBLOCK;
+    field public static final int O_RDONLY;
+    field public static final int O_RDWR;
+    field public static final int O_SYNC;
+    field public static final int O_TRUNC;
+    field public static final int O_WRONLY;
+    field public static final int POLLERR;
+    field public static final int POLLHUP;
+    field public static final int POLLIN;
+    field public static final int POLLNVAL;
+    field public static final int POLLOUT;
+    field public static final int POLLPRI;
+    field public static final int POLLRDBAND;
+    field public static final int POLLRDNORM;
+    field public static final int POLLWRBAND;
+    field public static final int POLLWRNORM;
+    field public static final int PROT_EXEC;
+    field public static final int PROT_NONE;
+    field public static final int PROT_READ;
+    field public static final int PROT_WRITE;
+    field public static final int PR_GET_DUMPABLE;
+    field public static final int PR_SET_DUMPABLE;
+    field public static final int PR_SET_NO_NEW_PRIVS;
+    field public static final int RTMGRP_NEIGH;
+    field public static final int RT_SCOPE_HOST;
+    field public static final int RT_SCOPE_LINK;
+    field public static final int RT_SCOPE_NOWHERE;
+    field public static final int RT_SCOPE_SITE;
+    field public static final int RT_SCOPE_UNIVERSE;
+    field public static final int R_OK;
+    field public static final int SEEK_CUR;
+    field public static final int SEEK_END;
+    field public static final int SEEK_SET;
+    field public static final int SHUT_RD;
+    field public static final int SHUT_RDWR;
+    field public static final int SHUT_WR;
+    field public static final int SIGABRT;
+    field public static final int SIGALRM;
+    field public static final int SIGBUS;
+    field public static final int SIGCHLD;
+    field public static final int SIGCONT;
+    field public static final int SIGFPE;
+    field public static final int SIGHUP;
+    field public static final int SIGILL;
+    field public static final int SIGINT;
+    field public static final int SIGIO;
+    field public static final int SIGKILL;
+    field public static final int SIGPIPE;
+    field public static final int SIGPROF;
+    field public static final int SIGPWR;
+    field public static final int SIGQUIT;
+    field public static final int SIGRTMAX;
+    field public static final int SIGRTMIN;
+    field public static final int SIGSEGV;
+    field public static final int SIGSTKFLT;
+    field public static final int SIGSTOP;
+    field public static final int SIGSYS;
+    field public static final int SIGTERM;
+    field public static final int SIGTRAP;
+    field public static final int SIGTSTP;
+    field public static final int SIGTTIN;
+    field public static final int SIGTTOU;
+    field public static final int SIGURG;
+    field public static final int SIGUSR1;
+    field public static final int SIGUSR2;
+    field public static final int SIGVTALRM;
+    field public static final int SIGWINCH;
+    field public static final int SIGXCPU;
+    field public static final int SIGXFSZ;
+    field public static final int SIOCGIFADDR;
+    field public static final int SIOCGIFBRDADDR;
+    field public static final int SIOCGIFDSTADDR;
+    field public static final int SIOCGIFNETMASK;
+    field public static final int SOCK_CLOEXEC;
+    field public static final int SOCK_DGRAM;
+    field public static final int SOCK_NONBLOCK;
+    field public static final int SOCK_RAW;
+    field public static final int SOCK_SEQPACKET;
+    field public static final int SOCK_STREAM;
+    field public static final int SOL_SOCKET;
+    field public static final int SO_BINDTODEVICE;
+    field public static final int SO_BROADCAST;
+    field public static final int SO_DEBUG;
+    field public static final int SO_DONTROUTE;
+    field public static final int SO_ERROR;
+    field public static final int SO_KEEPALIVE;
+    field public static final int SO_LINGER;
+    field public static final int SO_OOBINLINE;
+    field public static final int SO_PASSCRED;
+    field public static final int SO_PEERCRED;
+    field public static final int SO_RCVBUF;
+    field public static final int SO_RCVLOWAT;
+    field public static final int SO_RCVTIMEO;
+    field public static final int SO_REUSEADDR;
+    field public static final int SO_SNDBUF;
+    field public static final int SO_SNDLOWAT;
+    field public static final int SO_SNDTIMEO;
+    field public static final int SO_TYPE;
+    field public static final int STDERR_FILENO;
+    field public static final int STDIN_FILENO;
+    field public static final int STDOUT_FILENO;
+    field public static final int ST_MANDLOCK;
+    field public static final int ST_NOATIME;
+    field public static final int ST_NODEV;
+    field public static final int ST_NODIRATIME;
+    field public static final int ST_NOEXEC;
+    field public static final int ST_NOSUID;
+    field public static final int ST_RDONLY;
+    field public static final int ST_RELATIME;
+    field public static final int ST_SYNCHRONOUS;
+    field public static final int S_IFBLK;
+    field public static final int S_IFCHR;
+    field public static final int S_IFDIR;
+    field public static final int S_IFIFO;
+    field public static final int S_IFLNK;
+    field public static final int S_IFMT;
+    field public static final int S_IFREG;
+    field public static final int S_IFSOCK;
+    field public static final int S_IRGRP;
+    field public static final int S_IROTH;
+    field public static final int S_IRUSR;
+    field public static final int S_IRWXG;
+    field public static final int S_IRWXO;
+    field public static final int S_IRWXU;
+    field public static final int S_ISGID;
+    field public static final int S_ISUID;
+    field public static final int S_ISVTX;
+    field public static final int S_IWGRP;
+    field public static final int S_IWOTH;
+    field public static final int S_IWUSR;
+    field public static final int S_IXGRP;
+    field public static final int S_IXOTH;
+    field public static final int S_IXUSR;
+    field public static final int TCP_NODELAY;
+    field public static final int TCP_USER_TIMEOUT;
+    field public static final int WCONTINUED;
+    field public static final int WEXITED;
+    field public static final int WNOHANG;
+    field public static final int WNOWAIT;
+    field public static final int WSTOPPED;
+    field public static final int WUNTRACED;
+    field public static final int W_OK;
+    field public static final int X_OK;
+    field public static final int _SC_2_CHAR_TERM;
+    field public static final int _SC_2_C_BIND;
+    field public static final int _SC_2_C_DEV;
+    field public static final int _SC_2_C_VERSION;
+    field public static final int _SC_2_FORT_DEV;
+    field public static final int _SC_2_FORT_RUN;
+    field public static final int _SC_2_LOCALEDEF;
+    field public static final int _SC_2_SW_DEV;
+    field public static final int _SC_2_UPE;
+    field public static final int _SC_2_VERSION;
+    field public static final int _SC_AIO_LISTIO_MAX;
+    field public static final int _SC_AIO_MAX;
+    field public static final int _SC_AIO_PRIO_DELTA_MAX;
+    field public static final int _SC_ARG_MAX;
+    field public static final int _SC_ASYNCHRONOUS_IO;
+    field public static final int _SC_ATEXIT_MAX;
+    field public static final int _SC_AVPHYS_PAGES;
+    field public static final int _SC_BC_BASE_MAX;
+    field public static final int _SC_BC_DIM_MAX;
+    field public static final int _SC_BC_SCALE_MAX;
+    field public static final int _SC_BC_STRING_MAX;
+    field public static final int _SC_CHILD_MAX;
+    field public static final int _SC_CLK_TCK;
+    field public static final int _SC_COLL_WEIGHTS_MAX;
+    field public static final int _SC_DELAYTIMER_MAX;
+    field public static final int _SC_EXPR_NEST_MAX;
+    field public static final int _SC_FSYNC;
+    field public static final int _SC_GETGR_R_SIZE_MAX;
+    field public static final int _SC_GETPW_R_SIZE_MAX;
+    field public static final int _SC_IOV_MAX;
+    field public static final int _SC_JOB_CONTROL;
+    field public static final int _SC_LINE_MAX;
+    field public static final int _SC_LOGIN_NAME_MAX;
+    field public static final int _SC_MAPPED_FILES;
+    field public static final int _SC_MEMLOCK;
+    field public static final int _SC_MEMLOCK_RANGE;
+    field public static final int _SC_MEMORY_PROTECTION;
+    field public static final int _SC_MESSAGE_PASSING;
+    field public static final int _SC_MQ_OPEN_MAX;
+    field public static final int _SC_MQ_PRIO_MAX;
+    field public static final int _SC_NGROUPS_MAX;
+    field public static final int _SC_NPROCESSORS_CONF;
+    field public static final int _SC_NPROCESSORS_ONLN;
+    field public static final int _SC_OPEN_MAX;
+    field public static final int _SC_PAGESIZE;
+    field public static final int _SC_PAGE_SIZE;
+    field public static final int _SC_PASS_MAX;
+    field public static final int _SC_PHYS_PAGES;
+    field public static final int _SC_PRIORITIZED_IO;
+    field public static final int _SC_PRIORITY_SCHEDULING;
+    field public static final int _SC_REALTIME_SIGNALS;
+    field public static final int _SC_RE_DUP_MAX;
+    field public static final int _SC_RTSIG_MAX;
+    field public static final int _SC_SAVED_IDS;
+    field public static final int _SC_SEMAPHORES;
+    field public static final int _SC_SEM_NSEMS_MAX;
+    field public static final int _SC_SEM_VALUE_MAX;
+    field public static final int _SC_SHARED_MEMORY_OBJECTS;
+    field public static final int _SC_SIGQUEUE_MAX;
+    field public static final int _SC_STREAM_MAX;
+    field public static final int _SC_SYNCHRONIZED_IO;
+    field public static final int _SC_THREADS;
+    field public static final int _SC_THREAD_ATTR_STACKADDR;
+    field public static final int _SC_THREAD_ATTR_STACKSIZE;
+    field public static final int _SC_THREAD_DESTRUCTOR_ITERATIONS;
+    field public static final int _SC_THREAD_KEYS_MAX;
+    field public static final int _SC_THREAD_PRIORITY_SCHEDULING;
+    field public static final int _SC_THREAD_PRIO_INHERIT;
+    field public static final int _SC_THREAD_PRIO_PROTECT;
+    field public static final int _SC_THREAD_SAFE_FUNCTIONS;
+    field public static final int _SC_THREAD_STACK_MIN;
+    field public static final int _SC_THREAD_THREADS_MAX;
+    field public static final int _SC_TIMERS;
+    field public static final int _SC_TIMER_MAX;
+    field public static final int _SC_TTY_NAME_MAX;
+    field public static final int _SC_TZNAME_MAX;
+    field public static final int _SC_VERSION;
+    field public static final int _SC_XBS5_ILP32_OFF32;
+    field public static final int _SC_XBS5_ILP32_OFFBIG;
+    field public static final int _SC_XBS5_LP64_OFF64;
+    field public static final int _SC_XBS5_LPBIG_OFFBIG;
+    field public static final int _SC_XOPEN_CRYPT;
+    field public static final int _SC_XOPEN_ENH_I18N;
+    field public static final int _SC_XOPEN_LEGACY;
+    field public static final int _SC_XOPEN_REALTIME;
+    field public static final int _SC_XOPEN_REALTIME_THREADS;
+    field public static final int _SC_XOPEN_SHM;
+    field public static final int _SC_XOPEN_UNIX;
+    field public static final int _SC_XOPEN_VERSION;
+    field public static final int _SC_XOPEN_XCU_VERSION;
+  }
+
+  public final class StructPollfd {
+    ctor public StructPollfd();
+    field public short events;
+    field public java.io.FileDescriptor fd;
+    field public short revents;
+    field public Object userData;
+  }
+
+  public final class StructStat {
+    ctor public StructStat(long, long, int, long, int, int, long, long, long, long, long, long, long);
+    ctor public StructStat(long, long, int, long, int, int, long, long, android.system.StructTimespec, android.system.StructTimespec, android.system.StructTimespec, long, long);
+    field public final android.system.StructTimespec st_atim;
+    field public final long st_atime;
+    field public final long st_blksize;
+    field public final long st_blocks;
+    field public final android.system.StructTimespec st_ctim;
+    field public final long st_ctime;
+    field public final long st_dev;
+    field public final int st_gid;
+    field public final long st_ino;
+    field public final int st_mode;
+    field public final android.system.StructTimespec st_mtim;
+    field public final long st_mtime;
+    field public final long st_nlink;
+    field public final long st_rdev;
+    field public final long st_size;
+    field public final int st_uid;
+  }
+
+  public final class StructStatVfs {
+    ctor public StructStatVfs(long, long, long, long, long, long, long, long, long, long, long);
+    field public final long f_bavail;
+    field public final long f_bfree;
+    field public final long f_blocks;
+    field public final long f_bsize;
+    field public final long f_favail;
+    field public final long f_ffree;
+    field public final long f_files;
+    field public final long f_flag;
+    field public final long f_frsize;
+    field public final long f_fsid;
+    field public final long f_namemax;
+  }
+
+  public final class StructTimespec implements java.lang.Comparable<android.system.StructTimespec> {
+    ctor public StructTimespec(long, long);
+    method public int compareTo(android.system.StructTimespec);
+    field public final long tv_nsec;
+    field public final long tv_sec;
+  }
+
+  public final class StructTimeval {
+    method @NonNull public static android.system.StructTimeval fromMillis(long);
+    method public long toMillis();
+    field public final long tv_sec;
+    field public final long tv_usec;
+  }
+
+  public final class StructUtsname {
+    ctor public StructUtsname(String, String, String, String, String);
+    field public final String machine;
+    field public final String nodename;
+    field public final String release;
+    field public final String sysname;
+    field public final String version;
+  }
+
+}
+
+package android.telecom {
+
+  public final class Call {
+    method public void addConferenceParticipants(@NonNull java.util.List<android.net.Uri>);
+    method public void answer(int);
+    method public void conference(android.telecom.Call);
+    method public void deflect(android.net.Uri);
+    method public void disconnect();
+    method public java.util.List<java.lang.String> getCannedTextResponses();
+    method public java.util.List<android.telecom.Call> getChildren();
+    method public java.util.List<android.telecom.Call> getConferenceableCalls();
+    method public android.telecom.Call.Details getDetails();
+    method @Nullable public android.telecom.Call getGenericConferenceActiveChildCall();
+    method public android.telecom.Call getParent();
+    method public String getRemainingPostDialSequence();
+    method @Nullable public android.telecom.Call.RttCall getRttCall();
+    method public int getState();
+    method public android.telecom.InCallService.VideoCall getVideoCall();
+    method public void handoverTo(android.telecom.PhoneAccountHandle, int, android.os.Bundle);
+    method public void hold();
+    method public boolean isRttActive();
+    method public void mergeConference();
+    method public void phoneAccountSelected(android.telecom.PhoneAccountHandle, boolean);
+    method public void playDtmfTone(char);
+    method public void postDialContinue(boolean);
+    method public void pullExternalCall();
+    method public void putExtras(android.os.Bundle);
+    method public void registerCallback(android.telecom.Call.Callback);
+    method public void registerCallback(android.telecom.Call.Callback, android.os.Handler);
+    method public void reject(boolean, String);
+    method public void reject(int);
+    method public void removeExtras(java.util.List<java.lang.String>);
+    method public void removeExtras(java.lang.String...);
+    method public void respondToRttRequest(int, boolean);
+    method public void sendCallEvent(String, android.os.Bundle);
+    method public void sendRttRequest();
+    method public void splitFromConference();
+    method public void stopDtmfTone();
+    method public void stopRtt();
+    method public void swapConference();
+    method public void unhold();
+    method public void unregisterCallback(android.telecom.Call.Callback);
+    field @Deprecated public static final String AVAILABLE_PHONE_ACCOUNTS = "selectPhoneAccountAccounts";
+    field public static final String EXTRA_LAST_EMERGENCY_CALLBACK_TIME_MILLIS = "android.telecom.extra.LAST_EMERGENCY_CALLBACK_TIME_MILLIS";
+    field public static final String EXTRA_SILENT_RINGING_REQUESTED = "android.telecom.extra.SILENT_RINGING_REQUESTED";
+    field public static final String EXTRA_SUGGESTED_PHONE_ACCOUNTS = "android.telecom.extra.SUGGESTED_PHONE_ACCOUNTS";
+    field public static final int REJECT_REASON_DECLINED = 1; // 0x1
+    field public static final int REJECT_REASON_UNWANTED = 2; // 0x2
+    field public static final int STATE_ACTIVE = 4; // 0x4
+    field public static final int STATE_AUDIO_PROCESSING = 12; // 0xc
+    field public static final int STATE_CONNECTING = 9; // 0x9
+    field public static final int STATE_DIALING = 1; // 0x1
+    field public static final int STATE_DISCONNECTED = 7; // 0x7
+    field public static final int STATE_DISCONNECTING = 10; // 0xa
+    field public static final int STATE_HOLDING = 3; // 0x3
+    field public static final int STATE_NEW = 0; // 0x0
+    field public static final int STATE_PULLING_CALL = 11; // 0xb
+    field public static final int STATE_RINGING = 2; // 0x2
+    field public static final int STATE_SELECT_PHONE_ACCOUNT = 8; // 0x8
+    field public static final int STATE_SIMULATED_RINGING = 13; // 0xd
+  }
+
+  public abstract static class Call.Callback {
+    ctor public Call.Callback();
+    method public void onCallDestroyed(android.telecom.Call);
+    method public void onCannedTextResponsesLoaded(android.telecom.Call, java.util.List<java.lang.String>);
+    method public void onChildrenChanged(android.telecom.Call, java.util.List<android.telecom.Call>);
+    method public void onConferenceableCallsChanged(android.telecom.Call, java.util.List<android.telecom.Call>);
+    method public void onConnectionEvent(android.telecom.Call, String, android.os.Bundle);
+    method public void onDetailsChanged(android.telecom.Call, android.telecom.Call.Details);
+    method public void onHandoverComplete(android.telecom.Call);
+    method public void onHandoverFailed(android.telecom.Call, int);
+    method public void onParentChanged(android.telecom.Call, android.telecom.Call);
+    method public void onPostDialWait(android.telecom.Call, String);
+    method public void onRttInitiationFailure(android.telecom.Call, int);
+    method public void onRttModeChanged(android.telecom.Call, int);
+    method public void onRttRequest(android.telecom.Call, int);
+    method public void onRttStatusChanged(android.telecom.Call, boolean, android.telecom.Call.RttCall);
+    method public void onStateChanged(android.telecom.Call, int);
+    method public void onVideoCallChanged(android.telecom.Call, android.telecom.InCallService.VideoCall);
+    field public static final int HANDOVER_FAILURE_DEST_APP_REJECTED = 1; // 0x1
+    field public static final int HANDOVER_FAILURE_NOT_SUPPORTED = 2; // 0x2
+    field public static final int HANDOVER_FAILURE_ONGOING_EMERGENCY_CALL = 4; // 0x4
+    field public static final int HANDOVER_FAILURE_UNKNOWN = 5; // 0x5
+    field public static final int HANDOVER_FAILURE_USER_REJECTED = 3; // 0x3
+  }
+
+  public static class Call.Details {
+    method public static boolean can(int, int);
+    method public boolean can(int);
+    method public static String capabilitiesToString(int);
+    method public android.telecom.PhoneAccountHandle getAccountHandle();
+    method public int getCallCapabilities();
+    method public int getCallDirection();
+    method public int getCallProperties();
+    method public String getCallerDisplayName();
+    method public int getCallerDisplayNamePresentation();
+    method public int getCallerNumberVerificationStatus();
+    method public final long getConnectTimeMillis();
+    method @Nullable public String getContactDisplayName();
+    method public long getCreationTimeMillis();
+    method public android.telecom.DisconnectCause getDisconnectCause();
+    method public android.os.Bundle getExtras();
+    method public android.telecom.GatewayInfo getGatewayInfo();
+    method public android.net.Uri getHandle();
+    method public int getHandlePresentation();
+    method public android.os.Bundle getIntentExtras();
+    method public android.telecom.StatusHints getStatusHints();
+    method public int getVideoState();
+    method public static boolean hasProperty(int, int);
+    method public boolean hasProperty(int);
+    method public static String propertiesToString(int);
+    field public static final int CAPABILITY_ADD_PARTICIPANT = 33554432; // 0x2000000
+    field public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 4194304; // 0x400000
+    field public static final int CAPABILITY_CAN_PAUSE_VIDEO = 1048576; // 0x100000
+    field public static final int CAPABILITY_CAN_PULL_CALL = 8388608; // 0x800000
+    field public static final int CAPABILITY_DISCONNECT_FROM_CONFERENCE = 8192; // 0x2000
+    field public static final int CAPABILITY_HOLD = 1; // 0x1
+    field public static final int CAPABILITY_MANAGE_CONFERENCE = 128; // 0x80
+    field public static final int CAPABILITY_MERGE_CONFERENCE = 4; // 0x4
+    field public static final int CAPABILITY_MUTE = 64; // 0x40
+    field public static final int CAPABILITY_RESPOND_VIA_TEXT = 32; // 0x20
+    field public static final int CAPABILITY_SEPARATE_FROM_CONFERENCE = 4096; // 0x1000
+    field public static final int CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL = 768; // 0x300
+    field public static final int CAPABILITY_SUPPORTS_VT_LOCAL_RX = 256; // 0x100
+    field public static final int CAPABILITY_SUPPORTS_VT_LOCAL_TX = 512; // 0x200
+    field public static final int CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL = 3072; // 0xc00
+    field public static final int CAPABILITY_SUPPORTS_VT_REMOTE_RX = 1024; // 0x400
+    field public static final int CAPABILITY_SUPPORTS_VT_REMOTE_TX = 2048; // 0x800
+    field public static final int CAPABILITY_SUPPORT_DEFLECT = 16777216; // 0x1000000
+    field public static final int CAPABILITY_SUPPORT_HOLD = 2; // 0x2
+    field public static final int CAPABILITY_SWAP_CONFERENCE = 8; // 0x8
+    field public static final int DIRECTION_INCOMING = 0; // 0x0
+    field public static final int DIRECTION_OUTGOING = 1; // 0x1
+    field public static final int DIRECTION_UNKNOWN = -1; // 0xffffffff
+    field public static final int PROPERTY_ASSISTED_DIALING = 512; // 0x200
+    field public static final int PROPERTY_CONFERENCE = 1; // 0x1
+    field public static final int PROPERTY_EMERGENCY_CALLBACK_MODE = 4; // 0x4
+    field public static final int PROPERTY_ENTERPRISE_CALL = 32; // 0x20
+    field public static final int PROPERTY_GENERIC_CONFERENCE = 2; // 0x2
+    field public static final int PROPERTY_HAS_CDMA_VOICE_PRIVACY = 128; // 0x80
+    field public static final int PROPERTY_HIGH_DEF_AUDIO = 16; // 0x10
+    field public static final int PROPERTY_IS_ADHOC_CONFERENCE = 8192; // 0x2000
+    field public static final int PROPERTY_IS_EXTERNAL_CALL = 64; // 0x40
+    field public static final int PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL = 2048; // 0x800
+    field public static final int PROPERTY_RTT = 1024; // 0x400
+    field public static final int PROPERTY_SELF_MANAGED = 256; // 0x100
+    field public static final int PROPERTY_VOIP_AUDIO_MODE = 4096; // 0x1000
+    field public static final int PROPERTY_WIFI = 8; // 0x8
+  }
+
+  public static final class Call.RttCall {
+    method public int getRttAudioMode();
+    method public String read();
+    method public String readImmediately() throws java.io.IOException;
+    method public void setRttMode(int);
+    method public void write(String) throws java.io.IOException;
+    field public static final int RTT_MODE_FULL = 1; // 0x1
+    field public static final int RTT_MODE_HCO = 2; // 0x2
+    field public static final int RTT_MODE_VCO = 3; // 0x3
+  }
+
+  public final class CallAudioState implements android.os.Parcelable {
+    ctor public CallAudioState(boolean, int, int);
+    method public static String audioRouteToString(int);
+    method public int describeContents();
+    method public android.bluetooth.BluetoothDevice getActiveBluetoothDevice();
+    method public int getRoute();
+    method public java.util.Collection<android.bluetooth.BluetoothDevice> getSupportedBluetoothDevices();
+    method public int getSupportedRouteMask();
+    method public boolean isMuted();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.CallAudioState> CREATOR;
+    field public static final int ROUTE_BLUETOOTH = 2; // 0x2
+    field public static final int ROUTE_EARPIECE = 1; // 0x1
+    field public static final int ROUTE_SPEAKER = 8; // 0x8
+    field public static final int ROUTE_WIRED_HEADSET = 4; // 0x4
+    field public static final int ROUTE_WIRED_OR_EARPIECE = 5; // 0x5
+  }
+
+  public abstract class CallRedirectionService extends android.app.Service {
+    ctor public CallRedirectionService();
+    method public final void cancelCall();
+    method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
+    method public abstract void onPlaceCall(@NonNull android.net.Uri, @NonNull android.telecom.PhoneAccountHandle, boolean);
+    method public final boolean onUnbind(@NonNull android.content.Intent);
+    method public final void placeCallUnmodified();
+    method public final void redirectCall(@NonNull android.net.Uri, @NonNull android.telecom.PhoneAccountHandle, boolean);
+    field public static final String SERVICE_INTERFACE = "android.telecom.CallRedirectionService";
+  }
+
+  public abstract class CallScreeningService extends android.app.Service {
+    ctor public CallScreeningService();
+    method public android.os.IBinder onBind(android.content.Intent);
+    method public abstract void onScreenCall(@NonNull android.telecom.Call.Details);
+    method public final void respondToCall(@NonNull android.telecom.Call.Details, @NonNull android.telecom.CallScreeningService.CallResponse);
+    field public static final String SERVICE_INTERFACE = "android.telecom.CallScreeningService";
+  }
+
+  public static class CallScreeningService.CallResponse {
+    method public boolean getDisallowCall();
+    method public boolean getRejectCall();
+    method public boolean getSilenceCall();
+    method public boolean getSkipCallLog();
+    method public boolean getSkipNotification();
+  }
+
+  public static class CallScreeningService.CallResponse.Builder {
+    ctor public CallScreeningService.CallResponse.Builder();
+    method public android.telecom.CallScreeningService.CallResponse build();
+    method public android.telecom.CallScreeningService.CallResponse.Builder setDisallowCall(boolean);
+    method public android.telecom.CallScreeningService.CallResponse.Builder setRejectCall(boolean);
+    method @NonNull public android.telecom.CallScreeningService.CallResponse.Builder setSilenceCall(boolean);
+    method public android.telecom.CallScreeningService.CallResponse.Builder setSkipCallLog(boolean);
+    method public android.telecom.CallScreeningService.CallResponse.Builder setSkipNotification(boolean);
+  }
+
+  public abstract class Conference extends android.telecom.Conferenceable {
+    ctor public Conference(android.telecom.PhoneAccountHandle);
+    method public final boolean addConnection(android.telecom.Connection);
+    method @NonNull public static android.telecom.Conference createFailedConference(@NonNull android.telecom.DisconnectCause, @NonNull android.telecom.PhoneAccountHandle);
+    method public final void destroy();
+    method public final android.telecom.CallAudioState getCallAudioState();
+    method public final java.util.List<android.telecom.Connection> getConferenceableConnections();
+    method public final int getConnectionCapabilities();
+    method public final int getConnectionProperties();
+    method public final long getConnectionStartElapsedRealtimeMillis();
+    method @IntRange(from=0) public final long getConnectionTime();
+    method public final java.util.List<android.telecom.Connection> getConnections();
+    method public final android.telecom.DisconnectCause getDisconnectCause();
+    method public final android.os.Bundle getExtras();
+    method public final android.telecom.PhoneAccountHandle getPhoneAccountHandle();
+    method public final int getState();
+    method public final android.telecom.StatusHints getStatusHints();
+    method public android.telecom.Connection.VideoProvider getVideoProvider();
+    method public int getVideoState();
+    method public final boolean isRingbackRequested();
+    method public void onAddConferenceParticipants(@NonNull java.util.List<android.net.Uri>);
+    method public void onAnswer(int);
+    method public void onCallAudioStateChanged(android.telecom.CallAudioState);
+    method public void onConnectionAdded(android.telecom.Connection);
+    method public void onDisconnect();
+    method public void onExtrasChanged(android.os.Bundle);
+    method public void onHold();
+    method public void onMerge(android.telecom.Connection);
+    method public void onMerge();
+    method public void onPlayDtmfTone(char);
+    method public void onReject();
+    method public void onSeparate(android.telecom.Connection);
+    method public void onStopDtmfTone();
+    method public void onSwap();
+    method public void onUnhold();
+    method public final void putExtras(@NonNull android.os.Bundle);
+    method public final void removeConnection(android.telecom.Connection);
+    method public final void removeExtras(java.util.List<java.lang.String>);
+    method public final void removeExtras(java.lang.String...);
+    method public void sendConferenceEvent(@NonNull String, @Nullable android.os.Bundle);
+    method public final void setActive();
+    method public final void setConferenceableConnections(java.util.List<android.telecom.Connection>);
+    method public final void setConnectionCapabilities(int);
+    method public final void setConnectionProperties(int);
+    method @Deprecated public final void setConnectionStartElapsedRealTime(long);
+    method public final void setConnectionStartElapsedRealtimeMillis(long);
+    method public final void setConnectionTime(@IntRange(from=0) long);
+    method public final void setDialing();
+    method public final void setDisconnected(android.telecom.DisconnectCause);
+    method public final void setExtras(@Nullable android.os.Bundle);
+    method public final void setOnHold();
+    method public final void setRingbackRequested(boolean);
+    method public final void setRinging();
+    method public final void setStatusHints(android.telecom.StatusHints);
+    method public final void setVideoProvider(android.telecom.Connection, android.telecom.Connection.VideoProvider);
+    method public final void setVideoState(android.telecom.Connection, int);
+    field public static final long CONNECT_TIME_NOT_SPECIFIED = 0L; // 0x0L
+  }
+
+  public abstract class Conferenceable {
+  }
+
+  public abstract class Connection extends android.telecom.Conferenceable {
+    ctor public Connection();
+    method public static String capabilitiesToString(int);
+    method public static android.telecom.Connection createCanceledConnection();
+    method public static android.telecom.Connection createFailedConnection(android.telecom.DisconnectCause);
+    method public final void destroy();
+    method public final android.net.Uri getAddress();
+    method public final int getAddressPresentation();
+    method public final boolean getAudioModeIsVoip();
+    method public final android.telecom.CallAudioState getCallAudioState();
+    method public final String getCallerDisplayName();
+    method public final int getCallerDisplayNamePresentation();
+    method public final int getCallerNumberVerificationStatus();
+    method public final android.telecom.Conference getConference();
+    method public final java.util.List<android.telecom.Conferenceable> getConferenceables();
+    method public final int getConnectionCapabilities();
+    method public final int getConnectionProperties();
+    method public final android.telecom.DisconnectCause getDisconnectCause();
+    method public final android.os.Bundle getExtras();
+    method public final int getState();
+    method public final android.telecom.StatusHints getStatusHints();
+    method public final android.telecom.Connection.VideoProvider getVideoProvider();
+    method public final int getVideoState();
+    method public void handleRttUpgradeResponse(@Nullable android.telecom.Connection.RttTextStream);
+    method public final boolean isRingbackRequested();
+    method public final void notifyConferenceMergeFailed();
+    method public void onAbort();
+    method public void onAddConferenceParticipants(@NonNull java.util.List<android.net.Uri>);
+    method public void onAnswer(int);
+    method public void onAnswer();
+    method public void onCallAudioStateChanged(android.telecom.CallAudioState);
+    method public void onCallEvent(String, android.os.Bundle);
+    method public void onDeflect(android.net.Uri);
+    method public void onDisconnect();
+    method public void onExtrasChanged(android.os.Bundle);
+    method public void onHandoverComplete();
+    method public void onHold();
+    method public void onPlayDtmfTone(char);
+    method public void onPostDialContinue(boolean);
+    method public void onPullExternalCall();
+    method public void onReject();
+    method public void onReject(int);
+    method public void onReject(String);
+    method public void onSeparate();
+    method public void onShowIncomingCallUi();
+    method public void onSilence();
+    method public void onStartRtt(@NonNull android.telecom.Connection.RttTextStream);
+    method public void onStateChanged(int);
+    method public void onStopDtmfTone();
+    method public void onStopRtt();
+    method public void onUnhold();
+    method public static String propertiesToString(int);
+    method public final void putExtras(@NonNull android.os.Bundle);
+    method public final void removeExtras(java.util.List<java.lang.String>);
+    method public final void removeExtras(java.lang.String...);
+    method public void requestBluetoothAudio(@NonNull android.bluetooth.BluetoothDevice);
+    method public void sendConnectionEvent(String, android.os.Bundle);
+    method public final void sendRemoteRttRequest();
+    method public final void sendRttInitiationFailure(int);
+    method public final void sendRttInitiationSuccess();
+    method public final void sendRttSessionRemotelyTerminated();
+    method public final void setActive();
+    method public final void setAddress(android.net.Uri, int);
+    method public final void setAudioModeIsVoip(boolean);
+    method public final void setAudioRoute(int);
+    method public final void setCallerDisplayName(String, int);
+    method public final void setCallerNumberVerificationStatus(int);
+    method public final void setConferenceableConnections(java.util.List<android.telecom.Connection>);
+    method public final void setConferenceables(java.util.List<android.telecom.Conferenceable>);
+    method public final void setConnectionCapabilities(int);
+    method public final void setConnectionProperties(int);
+    method public final void setDialing();
+    method public final void setDisconnected(android.telecom.DisconnectCause);
+    method public final void setExtras(@Nullable android.os.Bundle);
+    method public final void setInitialized();
+    method public final void setInitializing();
+    method public final void setNextPostDialChar(char);
+    method public final void setOnHold();
+    method public final void setPostDialWait(String);
+    method public final void setPulling();
+    method public final void setRingbackRequested(boolean);
+    method public final void setRinging();
+    method public final void setStatusHints(android.telecom.StatusHints);
+    method public final void setVideoProvider(android.telecom.Connection.VideoProvider);
+    method public final void setVideoState(int);
+    method public static String stateToString(int);
+    field public static final int AUDIO_CODEC_AMR = 1; // 0x1
+    field public static final int AUDIO_CODEC_AMR_WB = 2; // 0x2
+    field public static final int AUDIO_CODEC_EVRC = 4; // 0x4
+    field public static final int AUDIO_CODEC_EVRC_B = 5; // 0x5
+    field public static final int AUDIO_CODEC_EVRC_NW = 7; // 0x7
+    field public static final int AUDIO_CODEC_EVRC_WB = 6; // 0x6
+    field public static final int AUDIO_CODEC_EVS_FB = 20; // 0x14
+    field public static final int AUDIO_CODEC_EVS_NB = 17; // 0x11
+    field public static final int AUDIO_CODEC_EVS_SWB = 19; // 0x13
+    field public static final int AUDIO_CODEC_EVS_WB = 18; // 0x12
+    field public static final int AUDIO_CODEC_G711A = 13; // 0xd
+    field public static final int AUDIO_CODEC_G711AB = 15; // 0xf
+    field public static final int AUDIO_CODEC_G711U = 11; // 0xb
+    field public static final int AUDIO_CODEC_G722 = 14; // 0xe
+    field public static final int AUDIO_CODEC_G723 = 12; // 0xc
+    field public static final int AUDIO_CODEC_G729 = 16; // 0x10
+    field public static final int AUDIO_CODEC_GSM_EFR = 8; // 0x8
+    field public static final int AUDIO_CODEC_GSM_FR = 9; // 0x9
+    field public static final int AUDIO_CODEC_GSM_HR = 10; // 0xa
+    field public static final int AUDIO_CODEC_NONE = 0; // 0x0
+    field public static final int AUDIO_CODEC_QCELP13K = 3; // 0x3
+    field public static final int CAPABILITY_ADD_PARTICIPANT = 67108864; // 0x4000000
+    field public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 8388608; // 0x800000
+    field public static final int CAPABILITY_CAN_PAUSE_VIDEO = 1048576; // 0x100000
+    field public static final int CAPABILITY_CAN_PULL_CALL = 16777216; // 0x1000000
+    field public static final int CAPABILITY_CAN_SEND_RESPONSE_VIA_CONNECTION = 4194304; // 0x400000
+    field @Deprecated public static final int CAPABILITY_CAN_UPGRADE_TO_VIDEO = 524288; // 0x80000
+    field public static final int CAPABILITY_DISCONNECT_FROM_CONFERENCE = 8192; // 0x2000
+    field public static final int CAPABILITY_HOLD = 1; // 0x1
+    field public static final int CAPABILITY_MANAGE_CONFERENCE = 128; // 0x80
+    field public static final int CAPABILITY_MERGE_CONFERENCE = 4; // 0x4
+    field public static final int CAPABILITY_MUTE = 64; // 0x40
+    field public static final int CAPABILITY_RESPOND_VIA_TEXT = 32; // 0x20
+    field public static final int CAPABILITY_SEPARATE_FROM_CONFERENCE = 4096; // 0x1000
+    field public static final int CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL = 768; // 0x300
+    field public static final int CAPABILITY_SUPPORTS_VT_LOCAL_RX = 256; // 0x100
+    field public static final int CAPABILITY_SUPPORTS_VT_LOCAL_TX = 512; // 0x200
+    field public static final int CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL = 3072; // 0xc00
+    field public static final int CAPABILITY_SUPPORTS_VT_REMOTE_RX = 1024; // 0x400
+    field public static final int CAPABILITY_SUPPORTS_VT_REMOTE_TX = 2048; // 0x800
+    field public static final int CAPABILITY_SUPPORT_DEFLECT = 33554432; // 0x2000000
+    field public static final int CAPABILITY_SUPPORT_HOLD = 2; // 0x2
+    field public static final int CAPABILITY_SWAP_CONFERENCE = 8; // 0x8
+    field public static final String EVENT_CALL_HOLD_FAILED = "android.telecom.event.CALL_HOLD_FAILED";
+    field public static final String EVENT_CALL_MERGE_FAILED = "android.telecom.event.CALL_MERGE_FAILED";
+    field public static final String EVENT_CALL_PULL_FAILED = "android.telecom.event.CALL_PULL_FAILED";
+    field public static final String EVENT_CALL_REMOTELY_HELD = "android.telecom.event.CALL_REMOTELY_HELD";
+    field public static final String EVENT_CALL_REMOTELY_UNHELD = "android.telecom.event.CALL_REMOTELY_UNHELD";
+    field public static final String EVENT_CALL_SWITCH_FAILED = "android.telecom.event.CALL_SWITCH_FAILED";
+    field public static final String EVENT_MERGE_COMPLETE = "android.telecom.event.MERGE_COMPLETE";
+    field public static final String EVENT_MERGE_START = "android.telecom.event.MERGE_START";
+    field public static final String EVENT_ON_HOLD_TONE_END = "android.telecom.event.ON_HOLD_TONE_END";
+    field public static final String EVENT_ON_HOLD_TONE_START = "android.telecom.event.ON_HOLD_TONE_START";
+    field public static final String EVENT_RTT_AUDIO_INDICATION_CHANGED = "android.telecom.event.RTT_AUDIO_INDICATION_CHANGED";
+    field public static final String EXTRA_ANSWERING_DROPS_FG_CALL = "android.telecom.extra.ANSWERING_DROPS_FG_CALL";
+    field public static final String EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME = "android.telecom.extra.ANSWERING_DROPS_FG_CALL_APP_NAME";
+    field public static final String EXTRA_AUDIO_CODEC = "android.telecom.extra.AUDIO_CODEC";
+    field public static final String EXTRA_AUDIO_CODEC_BANDWIDTH_KHZ = "android.telecom.extra.AUDIO_CODEC_BANDWIDTH_KHZ";
+    field public static final String EXTRA_AUDIO_CODEC_BITRATE_KBPS = "android.telecom.extra.AUDIO_CODEC_BITRATE_KBPS";
+    field public static final String EXTRA_CALL_SUBJECT = "android.telecom.extra.CALL_SUBJECT";
+    field public static final String EXTRA_CHILD_ADDRESS = "android.telecom.extra.CHILD_ADDRESS";
+    field public static final String EXTRA_IS_RTT_AUDIO_PRESENT = "android.telecom.extra.IS_RTT_AUDIO_PRESENT";
+    field public static final String EXTRA_LAST_FORWARDED_NUMBER = "android.telecom.extra.LAST_FORWARDED_NUMBER";
+    field public static final String EXTRA_SIP_INVITE = "android.telecom.extra.SIP_INVITE";
+    field public static final int PROPERTY_ASSISTED_DIALING = 512; // 0x200
+    field public static final int PROPERTY_HAS_CDMA_VOICE_PRIVACY = 32; // 0x20
+    field public static final int PROPERTY_HIGH_DEF_AUDIO = 4; // 0x4
+    field public static final int PROPERTY_IS_ADHOC_CONFERENCE = 4096; // 0x1000
+    field public static final int PROPERTY_IS_EXTERNAL_CALL = 16; // 0x10
+    field public static final int PROPERTY_IS_RTT = 256; // 0x100
+    field public static final int PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL = 1024; // 0x400
+    field public static final int PROPERTY_SELF_MANAGED = 128; // 0x80
+    field public static final int PROPERTY_WIFI = 8; // 0x8
+    field public static final int STATE_ACTIVE = 4; // 0x4
+    field public static final int STATE_DIALING = 3; // 0x3
+    field public static final int STATE_DISCONNECTED = 6; // 0x6
+    field public static final int STATE_HOLDING = 5; // 0x5
+    field public static final int STATE_INITIALIZING = 0; // 0x0
+    field public static final int STATE_NEW = 1; // 0x1
+    field public static final int STATE_PULLING_CALL = 7; // 0x7
+    field public static final int STATE_RINGING = 2; // 0x2
+    field public static final int VERIFICATION_STATUS_FAILED = 2; // 0x2
+    field public static final int VERIFICATION_STATUS_NOT_VERIFIED = 0; // 0x0
+    field public static final int VERIFICATION_STATUS_PASSED = 1; // 0x1
+  }
+
+  public static final class Connection.RttModifyStatus {
+    field public static final int SESSION_MODIFY_REQUEST_FAIL = 2; // 0x2
+    field public static final int SESSION_MODIFY_REQUEST_INVALID = 3; // 0x3
+    field public static final int SESSION_MODIFY_REQUEST_REJECTED_BY_REMOTE = 5; // 0x5
+    field public static final int SESSION_MODIFY_REQUEST_SUCCESS = 1; // 0x1
+    field public static final int SESSION_MODIFY_REQUEST_TIMED_OUT = 4; // 0x4
+  }
+
+  public static final class Connection.RttTextStream {
+    method public String read() throws java.io.IOException;
+    method public String readImmediately() throws java.io.IOException;
+    method public void write(String) throws java.io.IOException;
+  }
+
+  public abstract static class Connection.VideoProvider {
+    ctor public Connection.VideoProvider();
+    method public void changeCameraCapabilities(android.telecom.VideoProfile.CameraCapabilities);
+    method public void changePeerDimensions(int, int);
+    method public void changeVideoQuality(int);
+    method public void handleCallSessionEvent(int);
+    method public abstract void onRequestCameraCapabilities();
+    method public abstract void onRequestConnectionDataUsage();
+    method public abstract void onSendSessionModifyRequest(android.telecom.VideoProfile, android.telecom.VideoProfile);
+    method public abstract void onSendSessionModifyResponse(android.telecom.VideoProfile);
+    method public abstract void onSetCamera(String);
+    method public abstract void onSetDeviceOrientation(int);
+    method public abstract void onSetDisplaySurface(android.view.Surface);
+    method public abstract void onSetPauseImage(android.net.Uri);
+    method public abstract void onSetPreviewSurface(android.view.Surface);
+    method public abstract void onSetZoom(float);
+    method public void receiveSessionModifyRequest(android.telecom.VideoProfile);
+    method public void receiveSessionModifyResponse(int, android.telecom.VideoProfile, android.telecom.VideoProfile);
+    method public void setCallDataUsage(long);
+    field public static final int SESSION_EVENT_CAMERA_FAILURE = 5; // 0x5
+    field public static final int SESSION_EVENT_CAMERA_PERMISSION_ERROR = 7; // 0x7
+    field public static final int SESSION_EVENT_CAMERA_READY = 6; // 0x6
+    field public static final int SESSION_EVENT_RX_PAUSE = 1; // 0x1
+    field public static final int SESSION_EVENT_RX_RESUME = 2; // 0x2
+    field public static final int SESSION_EVENT_TX_START = 3; // 0x3
+    field public static final int SESSION_EVENT_TX_STOP = 4; // 0x4
+    field public static final int SESSION_MODIFY_REQUEST_FAIL = 2; // 0x2
+    field public static final int SESSION_MODIFY_REQUEST_INVALID = 3; // 0x3
+    field public static final int SESSION_MODIFY_REQUEST_REJECTED_BY_REMOTE = 5; // 0x5
+    field public static final int SESSION_MODIFY_REQUEST_SUCCESS = 1; // 0x1
+    field public static final int SESSION_MODIFY_REQUEST_TIMED_OUT = 4; // 0x4
+  }
+
+  public final class ConnectionRequest implements android.os.Parcelable {
+    ctor public ConnectionRequest(android.telecom.PhoneAccountHandle, android.net.Uri, android.os.Bundle);
+    ctor public ConnectionRequest(android.telecom.PhoneAccountHandle, android.net.Uri, android.os.Bundle, int);
+    method public int describeContents();
+    method public android.telecom.PhoneAccountHandle getAccountHandle();
+    method public android.net.Uri getAddress();
+    method public android.os.Bundle getExtras();
+    method @Nullable public java.util.List<android.net.Uri> getParticipants();
+    method public android.telecom.Connection.RttTextStream getRttTextStream();
+    method public int getVideoState();
+    method public boolean isAdhocConferenceCall();
+    method public boolean isRequestingRtt();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.ConnectionRequest> CREATOR;
+  }
+
+  public abstract class ConnectionService extends android.app.Service {
+    ctor public ConnectionService();
+    method public final void addConference(android.telecom.Conference);
+    method public final void addExistingConnection(android.telecom.PhoneAccountHandle, android.telecom.Connection);
+    method public final void conferenceRemoteConnections(android.telecom.RemoteConnection, android.telecom.RemoteConnection);
+    method public final void connectionServiceFocusReleased();
+    method @Nullable public final android.telecom.RemoteConference createRemoteIncomingConference(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest);
+    method public final android.telecom.RemoteConnection createRemoteIncomingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
+    method @Nullable public final android.telecom.RemoteConference createRemoteOutgoingConference(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest);
+    method public final android.telecom.RemoteConnection createRemoteOutgoingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
+    method public final java.util.Collection<android.telecom.Conference> getAllConferences();
+    method public final java.util.Collection<android.telecom.Connection> getAllConnections();
+    method public final android.os.IBinder onBind(android.content.Intent);
+    method public void onConference(android.telecom.Connection, android.telecom.Connection);
+    method public void onConnectionServiceFocusGained();
+    method public void onConnectionServiceFocusLost();
+    method @Nullable public android.telecom.Conference onCreateIncomingConference(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest);
+    method public void onCreateIncomingConferenceFailed(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest);
+    method public android.telecom.Connection onCreateIncomingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
+    method public void onCreateIncomingConnectionFailed(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
+    method public android.telecom.Connection onCreateIncomingHandoverConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
+    method @Nullable public android.telecom.Conference onCreateOutgoingConference(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest);
+    method public void onCreateOutgoingConferenceFailed(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest);
+    method public android.telecom.Connection onCreateOutgoingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
+    method public void onCreateOutgoingConnectionFailed(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
+    method public android.telecom.Connection onCreateOutgoingHandoverConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
+    method public void onHandoverFailed(android.telecom.ConnectionRequest, int);
+    method public void onRemoteConferenceAdded(android.telecom.RemoteConference);
+    method public void onRemoteExistingConnectionAdded(android.telecom.RemoteConnection);
+    field public static final String SERVICE_INTERFACE = "android.telecom.ConnectionService";
+  }
+
+  public final class DisconnectCause implements android.os.Parcelable {
+    ctor public DisconnectCause(int);
+    ctor public DisconnectCause(int, String);
+    ctor public DisconnectCause(int, CharSequence, CharSequence, String);
+    ctor public DisconnectCause(int, CharSequence, CharSequence, String, int);
+    method public int describeContents();
+    method public int getCode();
+    method public CharSequence getDescription();
+    method public CharSequence getLabel();
+    method public String getReason();
+    method public int getTone();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int ANSWERED_ELSEWHERE = 11; // 0xb
+    field public static final int BUSY = 7; // 0x7
+    field public static final int CALL_PULLED = 12; // 0xc
+    field public static final int CANCELED = 4; // 0x4
+    field public static final int CONNECTION_MANAGER_NOT_SUPPORTED = 10; // 0xa
+    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.DisconnectCause> CREATOR;
+    field public static final int ERROR = 1; // 0x1
+    field public static final int LOCAL = 2; // 0x2
+    field public static final int MISSED = 5; // 0x5
+    field public static final int OTHER = 9; // 0x9
+    field public static final String REASON_EMERGENCY_CALL_PLACED = "REASON_EMERGENCY_CALL_PLACED";
+    field public static final String REASON_EMULATING_SINGLE_CALL = "EMULATING_SINGLE_CALL";
+    field public static final String REASON_IMS_ACCESS_BLOCKED = "REASON_IMS_ACCESS_BLOCKED";
+    field public static final String REASON_WIFI_ON_BUT_WFC_OFF = "REASON_WIFI_ON_BUT_WFC_OFF";
+    field public static final int REJECTED = 6; // 0x6
+    field public static final int REMOTE = 3; // 0x3
+    field public static final int RESTRICTED = 8; // 0x8
+    field public static final int UNKNOWN = 0; // 0x0
+  }
+
+  public class GatewayInfo implements android.os.Parcelable {
+    ctor public GatewayInfo(String, android.net.Uri, android.net.Uri);
+    method public int describeContents();
+    method public android.net.Uri getGatewayAddress();
+    method public String getGatewayProviderPackageName();
+    method public android.net.Uri getOriginalAddress();
+    method public boolean isEmpty();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.GatewayInfo> CREATOR;
+  }
+
+  public abstract class InCallService extends android.app.Service {
+    ctor public InCallService();
+    method public final boolean canAddCall();
+    method public final android.telecom.CallAudioState getCallAudioState();
+    method public final java.util.List<android.telecom.Call> getCalls();
+    method public android.os.IBinder onBind(android.content.Intent);
+    method public void onBringToForeground(boolean);
+    method public void onCallAdded(android.telecom.Call);
+    method public void onCallAudioStateChanged(android.telecom.CallAudioState);
+    method public void onCallRemoved(android.telecom.Call);
+    method public void onCanAddCallChanged(boolean);
+    method public void onConnectionEvent(android.telecom.Call, String, android.os.Bundle);
+    method public void onSilenceRinger();
+    method public final void requestBluetoothAudio(@NonNull android.bluetooth.BluetoothDevice);
+    method public final void setAudioRoute(int);
+    method public final void setMuted(boolean);
+    field public static final String SERVICE_INTERFACE = "android.telecom.InCallService";
+  }
+
+  public abstract static class InCallService.VideoCall {
+    ctor public InCallService.VideoCall();
+    method public abstract void registerCallback(android.telecom.InCallService.VideoCall.Callback);
+    method public abstract void registerCallback(android.telecom.InCallService.VideoCall.Callback, android.os.Handler);
+    method public abstract void requestCallDataUsage();
+    method public abstract void requestCameraCapabilities();
+    method public abstract void sendSessionModifyRequest(android.telecom.VideoProfile);
+    method public abstract void sendSessionModifyResponse(android.telecom.VideoProfile);
+    method public abstract void setCamera(String);
+    method public abstract void setDeviceOrientation(int);
+    method public abstract void setDisplaySurface(android.view.Surface);
+    method public abstract void setPauseImage(android.net.Uri);
+    method public abstract void setPreviewSurface(android.view.Surface);
+    method public abstract void setZoom(float);
+    method public abstract void unregisterCallback(android.telecom.InCallService.VideoCall.Callback);
+  }
+
+  public abstract static class InCallService.VideoCall.Callback {
+    ctor public InCallService.VideoCall.Callback();
+    method public abstract void onCallDataUsageChanged(long);
+    method public abstract void onCallSessionEvent(int);
+    method public abstract void onCameraCapabilitiesChanged(android.telecom.VideoProfile.CameraCapabilities);
+    method public abstract void onPeerDimensionsChanged(int, int);
+    method public abstract void onSessionModifyRequestReceived(android.telecom.VideoProfile);
+    method public abstract void onSessionModifyResponseReceived(int, android.telecom.VideoProfile, android.telecom.VideoProfile);
+    method public abstract void onVideoQualityChanged(int);
+  }
+
+  public final class PhoneAccount implements android.os.Parcelable {
+    method public static android.telecom.PhoneAccount.Builder builder(android.telecom.PhoneAccountHandle, CharSequence);
+    method public int describeContents();
+    method public android.telecom.PhoneAccountHandle getAccountHandle();
+    method public android.net.Uri getAddress();
+    method public int getCapabilities();
+    method public android.os.Bundle getExtras();
+    method public int getHighlightColor();
+    method public android.graphics.drawable.Icon getIcon();
+    method public CharSequence getLabel();
+    method public CharSequence getShortDescription();
+    method public android.net.Uri getSubscriptionAddress();
+    method public java.util.List<java.lang.String> getSupportedUriSchemes();
+    method public boolean hasCapabilities(int);
+    method public boolean isEnabled();
+    method public boolean supportsUriScheme(String);
+    method public android.telecom.PhoneAccount.Builder toBuilder();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int CAPABILITY_ADHOC_CONFERENCE_CALLING = 16384; // 0x4000
+    field public static final int CAPABILITY_CALL_PROVIDER = 2; // 0x2
+    field public static final int CAPABILITY_CALL_SUBJECT = 64; // 0x40
+    field public static final int CAPABILITY_CONNECTION_MANAGER = 1; // 0x1
+    field public static final int CAPABILITY_PLACE_EMERGENCY_CALLS = 16; // 0x10
+    field public static final int CAPABILITY_RTT = 4096; // 0x1000
+    field public static final int CAPABILITY_SELF_MANAGED = 2048; // 0x800
+    field public static final int CAPABILITY_SIM_SUBSCRIPTION = 4; // 0x4
+    field public static final int CAPABILITY_SUPPORTS_VIDEO_CALLING = 1024; // 0x400
+    field public static final int CAPABILITY_VIDEO_CALLING = 8; // 0x8
+    field public static final int CAPABILITY_VIDEO_CALLING_RELIES_ON_PRESENCE = 256; // 0x100
+    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.PhoneAccount> CREATOR;
+    field public static final String EXTRA_ALWAYS_USE_VOIP_AUDIO_MODE = "android.telecom.extra.ALWAYS_USE_VOIP_AUDIO_MODE";
+    field public static final String EXTRA_CALL_SUBJECT_CHARACTER_ENCODING = "android.telecom.extra.CALL_SUBJECT_CHARACTER_ENCODING";
+    field public static final String EXTRA_CALL_SUBJECT_MAX_LENGTH = "android.telecom.extra.CALL_SUBJECT_MAX_LENGTH";
+    field public static final String EXTRA_LOG_SELF_MANAGED_CALLS = "android.telecom.extra.LOG_SELF_MANAGED_CALLS";
+    field public static final String EXTRA_SUPPORTS_HANDOVER_FROM = "android.telecom.extra.SUPPORTS_HANDOVER_FROM";
+    field public static final String EXTRA_SUPPORTS_HANDOVER_TO = "android.telecom.extra.SUPPORTS_HANDOVER_TO";
+    field public static final int NO_HIGHLIGHT_COLOR = 0; // 0x0
+    field public static final int NO_RESOURCE_ID = -1; // 0xffffffff
+    field public static final String SCHEME_SIP = "sip";
+    field public static final String SCHEME_TEL = "tel";
+    field public static final String SCHEME_VOICEMAIL = "voicemail";
+  }
+
+  public static class PhoneAccount.Builder {
+    ctor public PhoneAccount.Builder(android.telecom.PhoneAccountHandle, CharSequence);
+    ctor public PhoneAccount.Builder(android.telecom.PhoneAccount);
+    method public android.telecom.PhoneAccount.Builder addSupportedUriScheme(String);
+    method public android.telecom.PhoneAccount build();
+    method public android.telecom.PhoneAccount.Builder setAddress(android.net.Uri);
+    method public android.telecom.PhoneAccount.Builder setCapabilities(int);
+    method public android.telecom.PhoneAccount.Builder setExtras(android.os.Bundle);
+    method public android.telecom.PhoneAccount.Builder setHighlightColor(int);
+    method public android.telecom.PhoneAccount.Builder setIcon(android.graphics.drawable.Icon);
+    method public android.telecom.PhoneAccount.Builder setShortDescription(CharSequence);
+    method public android.telecom.PhoneAccount.Builder setSubscriptionAddress(android.net.Uri);
+    method public android.telecom.PhoneAccount.Builder setSupportedUriSchemes(java.util.List<java.lang.String>);
+  }
+
+  public final class PhoneAccountHandle implements android.os.Parcelable {
+    ctor public PhoneAccountHandle(@NonNull android.content.ComponentName, @NonNull String);
+    ctor public PhoneAccountHandle(@NonNull android.content.ComponentName, @NonNull String, @NonNull android.os.UserHandle);
+    method public int describeContents();
+    method public android.content.ComponentName getComponentName();
+    method public String getId();
+    method public android.os.UserHandle getUserHandle();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.PhoneAccountHandle> CREATOR;
+  }
+
+  public final class PhoneAccountSuggestion implements android.os.Parcelable {
+    ctor public PhoneAccountSuggestion(@NonNull android.telecom.PhoneAccountHandle, int, boolean);
+    method public int describeContents();
+    method @NonNull public android.telecom.PhoneAccountHandle getPhoneAccountHandle();
+    method public int getReason();
+    method public boolean shouldAutoSelect();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.PhoneAccountSuggestion> CREATOR;
+    field public static final int REASON_FREQUENT = 2; // 0x2
+    field public static final int REASON_INTRA_CARRIER = 1; // 0x1
+    field public static final int REASON_NONE = 0; // 0x0
+    field public static final int REASON_OTHER = 4; // 0x4
+    field public static final int REASON_USER_SET = 3; // 0x3
+  }
+
+  public final class RemoteConference {
+    method public void disconnect();
+    method public java.util.List<android.telecom.RemoteConnection> getConferenceableConnections();
+    method public int getConnectionCapabilities();
+    method public int getConnectionProperties();
+    method public java.util.List<android.telecom.RemoteConnection> getConnections();
+    method public android.telecom.DisconnectCause getDisconnectCause();
+    method public android.os.Bundle getExtras();
+    method public int getState();
+    method public void hold();
+    method public void merge();
+    method public void playDtmfTone(char);
+    method public void registerCallback(android.telecom.RemoteConference.Callback);
+    method public void registerCallback(android.telecom.RemoteConference.Callback, android.os.Handler);
+    method public void separate(android.telecom.RemoteConnection);
+    method public void setCallAudioState(android.telecom.CallAudioState);
+    method public void stopDtmfTone();
+    method public void swap();
+    method public void unhold();
+    method public void unregisterCallback(android.telecom.RemoteConference.Callback);
+  }
+
+  public abstract static class RemoteConference.Callback {
+    ctor public RemoteConference.Callback();
+    method public void onConferenceableConnectionsChanged(android.telecom.RemoteConference, java.util.List<android.telecom.RemoteConnection>);
+    method public void onConnectionAdded(android.telecom.RemoteConference, android.telecom.RemoteConnection);
+    method public void onConnectionCapabilitiesChanged(android.telecom.RemoteConference, int);
+    method public void onConnectionPropertiesChanged(android.telecom.RemoteConference, int);
+    method public void onConnectionRemoved(android.telecom.RemoteConference, android.telecom.RemoteConnection);
+    method public void onDestroyed(android.telecom.RemoteConference);
+    method public void onDisconnected(android.telecom.RemoteConference, android.telecom.DisconnectCause);
+    method public void onExtrasChanged(android.telecom.RemoteConference, @Nullable android.os.Bundle);
+    method public void onStateChanged(android.telecom.RemoteConference, int, int);
+  }
+
+  public final class RemoteConnection {
+    method public void abort();
+    method public void addConferenceParticipants(@NonNull java.util.List<android.net.Uri>);
+    method public void answer();
+    method public void disconnect();
+    method public android.net.Uri getAddress();
+    method public int getAddressPresentation();
+    method public CharSequence getCallerDisplayName();
+    method public int getCallerDisplayNamePresentation();
+    method public android.telecom.RemoteConference getConference();
+    method public java.util.List<android.telecom.RemoteConnection> getConferenceableConnections();
+    method public int getConnectionCapabilities();
+    method public int getConnectionProperties();
+    method public android.telecom.DisconnectCause getDisconnectCause();
+    method public android.os.Bundle getExtras();
+    method public int getState();
+    method public android.telecom.StatusHints getStatusHints();
+    method public android.telecom.RemoteConnection.VideoProvider getVideoProvider();
+    method public int getVideoState();
+    method public void hold();
+    method public boolean isRingbackRequested();
+    method public boolean isVoipAudioMode();
+    method public void playDtmfTone(char);
+    method public void postDialContinue(boolean);
+    method public void pullExternalCall();
+    method public void registerCallback(android.telecom.RemoteConnection.Callback);
+    method public void registerCallback(android.telecom.RemoteConnection.Callback, android.os.Handler);
+    method public void reject();
+    method public void setCallAudioState(android.telecom.CallAudioState);
+    method public void stopDtmfTone();
+    method public void unhold();
+    method public void unregisterCallback(android.telecom.RemoteConnection.Callback);
+  }
+
+  public abstract static class RemoteConnection.Callback {
+    ctor public RemoteConnection.Callback();
+    method public void onAddressChanged(android.telecom.RemoteConnection, android.net.Uri, int);
+    method public void onCallerDisplayNameChanged(android.telecom.RemoteConnection, String, int);
+    method public void onConferenceChanged(android.telecom.RemoteConnection, android.telecom.RemoteConference);
+    method public void onConferenceableConnectionsChanged(android.telecom.RemoteConnection, java.util.List<android.telecom.RemoteConnection>);
+    method public void onConnectionCapabilitiesChanged(android.telecom.RemoteConnection, int);
+    method public void onConnectionEvent(android.telecom.RemoteConnection, String, android.os.Bundle);
+    method public void onConnectionPropertiesChanged(android.telecom.RemoteConnection, int);
+    method public void onDestroyed(android.telecom.RemoteConnection);
+    method public void onDisconnected(android.telecom.RemoteConnection, android.telecom.DisconnectCause);
+    method public void onExtrasChanged(android.telecom.RemoteConnection, @Nullable android.os.Bundle);
+    method public void onPostDialChar(android.telecom.RemoteConnection, char);
+    method public void onPostDialWait(android.telecom.RemoteConnection, String);
+    method public void onRingbackRequested(android.telecom.RemoteConnection, boolean);
+    method public void onStateChanged(android.telecom.RemoteConnection, int);
+    method public void onStatusHintsChanged(android.telecom.RemoteConnection, android.telecom.StatusHints);
+    method public void onVideoProviderChanged(android.telecom.RemoteConnection, android.telecom.RemoteConnection.VideoProvider);
+    method public void onVideoStateChanged(android.telecom.RemoteConnection, int);
+    method public void onVoipAudioChanged(android.telecom.RemoteConnection, boolean);
+  }
+
+  public static class RemoteConnection.VideoProvider {
+    method public void registerCallback(android.telecom.RemoteConnection.VideoProvider.Callback);
+    method public void requestCallDataUsage();
+    method public void requestCameraCapabilities();
+    method public void sendSessionModifyRequest(android.telecom.VideoProfile, android.telecom.VideoProfile);
+    method public void sendSessionModifyResponse(android.telecom.VideoProfile);
+    method public void setCamera(String);
+    method public void setDeviceOrientation(int);
+    method public void setDisplaySurface(android.view.Surface);
+    method public void setPauseImage(android.net.Uri);
+    method public void setPreviewSurface(android.view.Surface);
+    method public void setZoom(float);
+    method public void unregisterCallback(android.telecom.RemoteConnection.VideoProvider.Callback);
+  }
+
+  public abstract static class RemoteConnection.VideoProvider.Callback {
+    ctor public RemoteConnection.VideoProvider.Callback();
+    method public void onCallDataUsageChanged(android.telecom.RemoteConnection.VideoProvider, long);
+    method public void onCallSessionEvent(android.telecom.RemoteConnection.VideoProvider, int);
+    method public void onCameraCapabilitiesChanged(android.telecom.RemoteConnection.VideoProvider, android.telecom.VideoProfile.CameraCapabilities);
+    method public void onPeerDimensionsChanged(android.telecom.RemoteConnection.VideoProvider, int, int);
+    method public void onSessionModifyRequestReceived(android.telecom.RemoteConnection.VideoProvider, android.telecom.VideoProfile);
+    method public void onSessionModifyResponseReceived(android.telecom.RemoteConnection.VideoProvider, int, android.telecom.VideoProfile, android.telecom.VideoProfile);
+    method public void onVideoQualityChanged(android.telecom.RemoteConnection.VideoProvider, int);
+  }
+
+  public final class StatusHints implements android.os.Parcelable {
+    ctor public StatusHints(CharSequence, android.graphics.drawable.Icon, android.os.Bundle);
+    method public int describeContents();
+    method public android.os.Bundle getExtras();
+    method public android.graphics.drawable.Icon getIcon();
+    method public CharSequence getLabel();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.StatusHints> CREATOR;
+  }
+
+  public class TelecomManager {
+    method public void acceptHandover(android.net.Uri, int, android.telecom.PhoneAccountHandle);
+    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ANSWER_PHONE_CALLS, android.Manifest.permission.MODIFY_PHONE_STATE}) public void acceptRingingCall();
+    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ANSWER_PHONE_CALLS, android.Manifest.permission.MODIFY_PHONE_STATE}) public void acceptRingingCall(int);
+    method public void addNewIncomingCall(android.telecom.PhoneAccountHandle, android.os.Bundle);
+    method public void addNewIncomingConference(@NonNull android.telecom.PhoneAccountHandle, @NonNull android.os.Bundle);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void cancelMissedCallsNotification();
+    method public android.content.Intent createManageBlockedNumbersIntent();
+    method @Deprecated @RequiresPermission(android.Manifest.permission.ANSWER_PHONE_CALLS) public boolean endCall();
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.net.Uri getAdnUriForPhoneAccount(android.telecom.PhoneAccountHandle);
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<android.telecom.PhoneAccountHandle> getCallCapablePhoneAccounts();
+    method public String getDefaultDialerPackage();
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public android.telecom.PhoneAccountHandle getDefaultOutgoingPhoneAccount(String);
+    method @RequiresPermission(anyOf={android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.READ_SMS, android.Manifest.permission.READ_PHONE_NUMBERS}, conditional=true) public String getLine1Number(android.telecom.PhoneAccountHandle);
+    method public android.telecom.PhoneAccount getPhoneAccount(android.telecom.PhoneAccountHandle);
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<android.telecom.PhoneAccountHandle> getSelfManagedPhoneAccounts();
+    method public android.telecom.PhoneAccountHandle getSimCallManager();
+    method @Nullable public android.telecom.PhoneAccountHandle getSimCallManagerForSubscription(int);
+    method @Nullable public String getSystemDialerPackage();
+    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public android.telecom.PhoneAccountHandle getUserSelectedOutgoingPhoneAccount();
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getVoiceMailNumber(android.telecom.PhoneAccountHandle);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handleMmi(String);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handleMmi(String, android.telecom.PhoneAccountHandle);
+    method public boolean hasCompanionInCallServiceAccess();
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isInCall();
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isInManagedCall();
+    method public boolean isIncomingCallPermitted(android.telecom.PhoneAccountHandle);
+    method public boolean isOutgoingCallPermitted(android.telecom.PhoneAccountHandle);
+    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PHONE_STATE}) public boolean isTtySupported();
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isVoiceMailNumber(android.telecom.PhoneAccountHandle, String);
+    method @RequiresPermission(anyOf={android.Manifest.permission.CALL_PHONE, android.Manifest.permission.MANAGE_OWN_CALLS}) public void placeCall(android.net.Uri, android.os.Bundle);
+    method public void registerPhoneAccount(android.telecom.PhoneAccount);
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public void showInCallScreen(boolean);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void silenceRinger();
+    method @RequiresPermission(android.Manifest.permission.CALL_PHONE) public void startConference(@NonNull java.util.List<android.net.Uri>, @NonNull android.os.Bundle);
+    method public void unregisterPhoneAccount(android.telecom.PhoneAccountHandle);
+    field public static final String ACTION_CHANGE_DEFAULT_DIALER = "android.telecom.action.CHANGE_DEFAULT_DIALER";
+    field public static final String ACTION_CHANGE_PHONE_ACCOUNTS = "android.telecom.action.CHANGE_PHONE_ACCOUNTS";
+    field public static final String ACTION_CONFIGURE_PHONE_ACCOUNT = "android.telecom.action.CONFIGURE_PHONE_ACCOUNT";
+    field public static final String ACTION_DEFAULT_CALL_SCREENING_APP_CHANGED = "android.telecom.action.DEFAULT_CALL_SCREENING_APP_CHANGED";
+    field public static final String ACTION_DEFAULT_DIALER_CHANGED = "android.telecom.action.DEFAULT_DIALER_CHANGED";
+    field @Deprecated public static final String ACTION_INCOMING_CALL = "android.telecom.action.INCOMING_CALL";
+    field public static final String ACTION_PHONE_ACCOUNT_REGISTERED = "android.telecom.action.PHONE_ACCOUNT_REGISTERED";
+    field public static final String ACTION_PHONE_ACCOUNT_UNREGISTERED = "android.telecom.action.PHONE_ACCOUNT_UNREGISTERED";
+    field public static final String ACTION_POST_CALL = "android.telecom.action.POST_CALL";
+    field public static final String ACTION_SHOW_CALL_ACCESSIBILITY_SETTINGS = "android.telecom.action.SHOW_CALL_ACCESSIBILITY_SETTINGS";
+    field public static final String ACTION_SHOW_CALL_SETTINGS = "android.telecom.action.SHOW_CALL_SETTINGS";
+    field public static final String ACTION_SHOW_MISSED_CALLS_NOTIFICATION = "android.telecom.action.SHOW_MISSED_CALLS_NOTIFICATION";
+    field public static final String ACTION_SHOW_RESPOND_VIA_SMS_SETTINGS = "android.telecom.action.SHOW_RESPOND_VIA_SMS_SETTINGS";
+    field public static final char DTMF_CHARACTER_PAUSE = 44; // 0x002c ','
+    field public static final char DTMF_CHARACTER_WAIT = 59; // 0x003b ';'
+    field public static final int DURATION_LONG = 3; // 0x3
+    field public static final int DURATION_MEDIUM = 2; // 0x2
+    field public static final int DURATION_SHORT = 1; // 0x1
+    field public static final int DURATION_VERY_SHORT = 0; // 0x0
+    field public static final String EXTRA_CALL_BACK_NUMBER = "android.telecom.extra.CALL_BACK_NUMBER";
+    field public static final String EXTRA_CALL_DISCONNECT_CAUSE = "android.telecom.extra.CALL_DISCONNECT_CAUSE";
+    field public static final String EXTRA_CALL_DISCONNECT_MESSAGE = "android.telecom.extra.CALL_DISCONNECT_MESSAGE";
+    field public static final String EXTRA_CALL_DURATION = "android.telecom.extra.CALL_DURATION";
+    field public static final String EXTRA_CALL_NETWORK_TYPE = "android.telecom.extra.CALL_NETWORK_TYPE";
+    field public static final String EXTRA_CALL_SUBJECT = "android.telecom.extra.CALL_SUBJECT";
+    field public static final String EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME = "android.telecom.extra.CHANGE_DEFAULT_DIALER_PACKAGE_NAME";
+    field public static final String EXTRA_DEFAULT_CALL_SCREENING_APP_COMPONENT_NAME = "android.telecom.extra.DEFAULT_CALL_SCREENING_APP_COMPONENT_NAME";
+    field public static final String EXTRA_DISCONNECT_CAUSE = "android.telecom.extra.DISCONNECT_CAUSE";
+    field public static final String EXTRA_HANDLE = "android.telecom.extra.HANDLE";
+    field public static final String EXTRA_INCOMING_CALL_ADDRESS = "android.telecom.extra.INCOMING_CALL_ADDRESS";
+    field public static final String EXTRA_INCOMING_CALL_EXTRAS = "android.telecom.extra.INCOMING_CALL_EXTRAS";
+    field public static final String EXTRA_INCOMING_VIDEO_STATE = "android.telecom.extra.INCOMING_VIDEO_STATE";
+    field public static final String EXTRA_IS_DEFAULT_CALL_SCREENING_APP = "android.telecom.extra.IS_DEFAULT_CALL_SCREENING_APP";
+    field public static final String EXTRA_NOTIFICATION_COUNT = "android.telecom.extra.NOTIFICATION_COUNT";
+    field public static final String EXTRA_NOTIFICATION_PHONE_NUMBER = "android.telecom.extra.NOTIFICATION_PHONE_NUMBER";
+    field public static final String EXTRA_OUTGOING_CALL_EXTRAS = "android.telecom.extra.OUTGOING_CALL_EXTRAS";
+    field public static final String EXTRA_PHONE_ACCOUNT_HANDLE = "android.telecom.extra.PHONE_ACCOUNT_HANDLE";
+    field public static final String EXTRA_START_CALL_WITH_RTT = "android.telecom.extra.START_CALL_WITH_RTT";
+    field public static final String EXTRA_START_CALL_WITH_SPEAKERPHONE = "android.telecom.extra.START_CALL_WITH_SPEAKERPHONE";
+    field public static final String EXTRA_START_CALL_WITH_VIDEO_STATE = "android.telecom.extra.START_CALL_WITH_VIDEO_STATE";
+    field public static final String EXTRA_USE_ASSISTED_DIALING = "android.telecom.extra.USE_ASSISTED_DIALING";
+    field public static final String GATEWAY_ORIGINAL_ADDRESS = "android.telecom.extra.GATEWAY_ORIGINAL_ADDRESS";
+    field public static final String GATEWAY_PROVIDER_PACKAGE = "android.telecom.extra.GATEWAY_PROVIDER_PACKAGE";
+    field public static final String METADATA_INCLUDE_EXTERNAL_CALLS = "android.telecom.INCLUDE_EXTERNAL_CALLS";
+    field public static final String METADATA_INCLUDE_SELF_MANAGED_CALLS = "android.telecom.INCLUDE_SELF_MANAGED_CALLS";
+    field public static final String METADATA_IN_CALL_SERVICE_CAR_MODE_UI = "android.telecom.IN_CALL_SERVICE_CAR_MODE_UI";
+    field public static final String METADATA_IN_CALL_SERVICE_RINGING = "android.telecom.IN_CALL_SERVICE_RINGING";
+    field public static final String METADATA_IN_CALL_SERVICE_UI = "android.telecom.IN_CALL_SERVICE_UI";
+    field public static final int PRESENTATION_ALLOWED = 1; // 0x1
+    field public static final int PRESENTATION_PAYPHONE = 4; // 0x4
+    field public static final int PRESENTATION_RESTRICTED = 2; // 0x2
+    field public static final int PRESENTATION_UNKNOWN = 3; // 0x3
+  }
+
+  public class VideoProfile implements android.os.Parcelable {
+    ctor public VideoProfile(int);
+    ctor public VideoProfile(int, int);
+    method public int describeContents();
+    method public int getQuality();
+    method public int getVideoState();
+    method public static boolean isAudioOnly(int);
+    method public static boolean isBidirectional(int);
+    method public static boolean isPaused(int);
+    method public static boolean isReceptionEnabled(int);
+    method public static boolean isTransmissionEnabled(int);
+    method public static boolean isVideo(int);
+    method public static String videoStateToString(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.VideoProfile> CREATOR;
+    field public static final int QUALITY_DEFAULT = 4; // 0x4
+    field public static final int QUALITY_HIGH = 1; // 0x1
+    field public static final int QUALITY_LOW = 3; // 0x3
+    field public static final int QUALITY_MEDIUM = 2; // 0x2
+    field public static final int STATE_AUDIO_ONLY = 0; // 0x0
+    field public static final int STATE_BIDIRECTIONAL = 3; // 0x3
+    field public static final int STATE_PAUSED = 4; // 0x4
+    field public static final int STATE_RX_ENABLED = 2; // 0x2
+    field public static final int STATE_TX_ENABLED = 1; // 0x1
+  }
+
+  public static final class VideoProfile.CameraCapabilities implements android.os.Parcelable {
+    ctor public VideoProfile.CameraCapabilities(@IntRange(from=0) int, @IntRange(from=0) int);
+    ctor public VideoProfile.CameraCapabilities(@IntRange(from=0) int, @IntRange(from=0) int, boolean, @FloatRange(from=1.0f) float);
+    method public int describeContents();
+    method public int getHeight();
+    method public float getMaxZoom();
+    method public int getWidth();
+    method public boolean isZoomSupported();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.VideoProfile.CameraCapabilities> CREATOR;
+  }
+
+}
+
+package android.telephony {
+
+  public final class AccessNetworkConstants {
+    field public static final int TRANSPORT_TYPE_WLAN = 2; // 0x2
+    field public static final int TRANSPORT_TYPE_WWAN = 1; // 0x1
+  }
+
+  public static final class AccessNetworkConstants.AccessNetworkType {
+    field public static final int CDMA2000 = 4; // 0x4
+    field public static final int EUTRAN = 3; // 0x3
+    field public static final int GERAN = 1; // 0x1
+    field public static final int IWLAN = 5; // 0x5
+    field public static final int NGRAN = 6; // 0x6
+    field public static final int UNKNOWN = 0; // 0x0
+    field public static final int UTRAN = 2; // 0x2
+  }
+
+  public static final class AccessNetworkConstants.EutranBand {
+    field public static final int BAND_1 = 1; // 0x1
+    field public static final int BAND_10 = 10; // 0xa
+    field public static final int BAND_11 = 11; // 0xb
+    field public static final int BAND_12 = 12; // 0xc
+    field public static final int BAND_13 = 13; // 0xd
+    field public static final int BAND_14 = 14; // 0xe
+    field public static final int BAND_17 = 17; // 0x11
+    field public static final int BAND_18 = 18; // 0x12
+    field public static final int BAND_19 = 19; // 0x13
+    field public static final int BAND_2 = 2; // 0x2
+    field public static final int BAND_20 = 20; // 0x14
+    field public static final int BAND_21 = 21; // 0x15
+    field public static final int BAND_22 = 22; // 0x16
+    field public static final int BAND_23 = 23; // 0x17
+    field public static final int BAND_24 = 24; // 0x18
+    field public static final int BAND_25 = 25; // 0x19
+    field public static final int BAND_26 = 26; // 0x1a
+    field public static final int BAND_27 = 27; // 0x1b
+    field public static final int BAND_28 = 28; // 0x1c
+    field public static final int BAND_3 = 3; // 0x3
+    field public static final int BAND_30 = 30; // 0x1e
+    field public static final int BAND_31 = 31; // 0x1f
+    field public static final int BAND_33 = 33; // 0x21
+    field public static final int BAND_34 = 34; // 0x22
+    field public static final int BAND_35 = 35; // 0x23
+    field public static final int BAND_36 = 36; // 0x24
+    field public static final int BAND_37 = 37; // 0x25
+    field public static final int BAND_38 = 38; // 0x26
+    field public static final int BAND_39 = 39; // 0x27
+    field public static final int BAND_4 = 4; // 0x4
+    field public static final int BAND_40 = 40; // 0x28
+    field public static final int BAND_41 = 41; // 0x29
+    field public static final int BAND_42 = 42; // 0x2a
+    field public static final int BAND_43 = 43; // 0x2b
+    field public static final int BAND_44 = 44; // 0x2c
+    field public static final int BAND_45 = 45; // 0x2d
+    field public static final int BAND_46 = 46; // 0x2e
+    field public static final int BAND_47 = 47; // 0x2f
+    field public static final int BAND_48 = 48; // 0x30
+    field public static final int BAND_49 = 49; // 0x31
+    field public static final int BAND_5 = 5; // 0x5
+    field public static final int BAND_50 = 50; // 0x32
+    field public static final int BAND_51 = 51; // 0x33
+    field public static final int BAND_52 = 52; // 0x34
+    field public static final int BAND_53 = 53; // 0x35
+    field public static final int BAND_6 = 6; // 0x6
+    field public static final int BAND_65 = 65; // 0x41
+    field public static final int BAND_66 = 66; // 0x42
+    field public static final int BAND_68 = 68; // 0x44
+    field public static final int BAND_7 = 7; // 0x7
+    field public static final int BAND_70 = 70; // 0x46
+    field public static final int BAND_71 = 71; // 0x47
+    field public static final int BAND_72 = 72; // 0x48
+    field public static final int BAND_73 = 73; // 0x49
+    field public static final int BAND_74 = 74; // 0x4a
+    field public static final int BAND_8 = 8; // 0x8
+    field public static final int BAND_85 = 85; // 0x55
+    field public static final int BAND_87 = 87; // 0x57
+    field public static final int BAND_88 = 88; // 0x58
+    field public static final int BAND_9 = 9; // 0x9
+  }
+
+  public static final class AccessNetworkConstants.GeranBand {
+    field public static final int BAND_450 = 3; // 0x3
+    field public static final int BAND_480 = 4; // 0x4
+    field public static final int BAND_710 = 5; // 0x5
+    field public static final int BAND_750 = 6; // 0x6
+    field public static final int BAND_850 = 8; // 0x8
+    field public static final int BAND_DCS1800 = 12; // 0xc
+    field public static final int BAND_E900 = 10; // 0xa
+    field public static final int BAND_ER900 = 14; // 0xe
+    field public static final int BAND_P900 = 9; // 0x9
+    field public static final int BAND_PCS1900 = 13; // 0xd
+    field public static final int BAND_R900 = 11; // 0xb
+    field public static final int BAND_T380 = 1; // 0x1
+    field public static final int BAND_T410 = 2; // 0x2
+    field public static final int BAND_T810 = 7; // 0x7
+  }
+
+  public static final class AccessNetworkConstants.NgranBands {
+    field public static final int BAND_1 = 1; // 0x1
+    field public static final int BAND_12 = 12; // 0xc
+    field public static final int BAND_14 = 14; // 0xe
+    field public static final int BAND_18 = 18; // 0x12
+    field public static final int BAND_2 = 2; // 0x2
+    field public static final int BAND_20 = 20; // 0x14
+    field public static final int BAND_25 = 25; // 0x19
+    field public static final int BAND_257 = 257; // 0x101
+    field public static final int BAND_258 = 258; // 0x102
+    field public static final int BAND_260 = 260; // 0x104
+    field public static final int BAND_261 = 261; // 0x105
+    field public static final int BAND_28 = 28; // 0x1c
+    field public static final int BAND_29 = 29; // 0x1d
+    field public static final int BAND_3 = 3; // 0x3
+    field public static final int BAND_30 = 30; // 0x1e
+    field public static final int BAND_34 = 34; // 0x22
+    field public static final int BAND_38 = 38; // 0x26
+    field public static final int BAND_39 = 39; // 0x27
+    field public static final int BAND_40 = 40; // 0x28
+    field public static final int BAND_41 = 41; // 0x29
+    field public static final int BAND_48 = 48; // 0x30
+    field public static final int BAND_5 = 5; // 0x5
+    field public static final int BAND_50 = 50; // 0x32
+    field public static final int BAND_51 = 51; // 0x33
+    field public static final int BAND_65 = 65; // 0x41
+    field public static final int BAND_66 = 66; // 0x42
+    field public static final int BAND_7 = 7; // 0x7
+    field public static final int BAND_70 = 70; // 0x46
+    field public static final int BAND_71 = 71; // 0x47
+    field public static final int BAND_74 = 74; // 0x4a
+    field public static final int BAND_75 = 75; // 0x4b
+    field public static final int BAND_76 = 76; // 0x4c
+    field public static final int BAND_77 = 77; // 0x4d
+    field public static final int BAND_78 = 78; // 0x4e
+    field public static final int BAND_79 = 79; // 0x4f
+    field public static final int BAND_8 = 8; // 0x8
+    field public static final int BAND_80 = 80; // 0x50
+    field public static final int BAND_81 = 81; // 0x51
+    field public static final int BAND_82 = 82; // 0x52
+    field public static final int BAND_83 = 83; // 0x53
+    field public static final int BAND_84 = 84; // 0x54
+    field public static final int BAND_86 = 86; // 0x56
+    field public static final int BAND_89 = 89; // 0x59
+    field public static final int BAND_90 = 90; // 0x5a
+    field public static final int BAND_91 = 91; // 0x5b
+    field public static final int BAND_92 = 92; // 0x5c
+    field public static final int BAND_93 = 93; // 0x5d
+    field public static final int BAND_94 = 94; // 0x5e
+    field public static final int BAND_95 = 95; // 0x5f
+  }
+
+  public static final class AccessNetworkConstants.UtranBand {
+    field public static final int BAND_1 = 1; // 0x1
+    field public static final int BAND_10 = 10; // 0xa
+    field public static final int BAND_11 = 11; // 0xb
+    field public static final int BAND_12 = 12; // 0xc
+    field public static final int BAND_13 = 13; // 0xd
+    field public static final int BAND_14 = 14; // 0xe
+    field public static final int BAND_19 = 19; // 0x13
+    field public static final int BAND_2 = 2; // 0x2
+    field public static final int BAND_20 = 20; // 0x14
+    field public static final int BAND_21 = 21; // 0x15
+    field public static final int BAND_22 = 22; // 0x16
+    field public static final int BAND_25 = 25; // 0x19
+    field public static final int BAND_26 = 26; // 0x1a
+    field public static final int BAND_3 = 3; // 0x3
+    field public static final int BAND_4 = 4; // 0x4
+    field public static final int BAND_5 = 5; // 0x5
+    field public static final int BAND_6 = 6; // 0x6
+    field public static final int BAND_7 = 7; // 0x7
+    field public static final int BAND_8 = 8; // 0x8
+    field public static final int BAND_9 = 9; // 0x9
+    field public static final int BAND_A = 101; // 0x65
+    field public static final int BAND_B = 102; // 0x66
+    field public static final int BAND_C = 103; // 0x67
+    field public static final int BAND_D = 104; // 0x68
+    field public static final int BAND_E = 105; // 0x69
+    field public static final int BAND_F = 106; // 0x6a
+  }
+
+  public final class AvailableNetworkInfo implements android.os.Parcelable {
+    ctor public AvailableNetworkInfo(int, int, @NonNull java.util.List<java.lang.String>, @NonNull java.util.List<java.lang.Integer>);
+    method public int describeContents();
+    method @NonNull public java.util.List<java.lang.Integer> getBands();
+    method @NonNull public java.util.List<java.lang.String> getMccMncs();
+    method public int getPriority();
+    method public int getSubId();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.AvailableNetworkInfo> CREATOR;
+    field public static final int PRIORITY_HIGH = 1; // 0x1
+    field public static final int PRIORITY_LOW = 3; // 0x3
+    field public static final int PRIORITY_MED = 2; // 0x2
+  }
+
+  public final class BarringInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public android.telephony.BarringInfo.BarringServiceInfo getBarringServiceInfo(int);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field public static final int BARRING_SERVICE_TYPE_CS_FALLBACK = 5; // 0x5
+    field public static final int BARRING_SERVICE_TYPE_CS_SERVICE = 0; // 0x0
+    field public static final int BARRING_SERVICE_TYPE_CS_VOICE = 2; // 0x2
+    field public static final int BARRING_SERVICE_TYPE_EMERGENCY = 8; // 0x8
+    field public static final int BARRING_SERVICE_TYPE_MMTEL_VIDEO = 7; // 0x7
+    field public static final int BARRING_SERVICE_TYPE_MMTEL_VOICE = 6; // 0x6
+    field public static final int BARRING_SERVICE_TYPE_MO_DATA = 4; // 0x4
+    field public static final int BARRING_SERVICE_TYPE_MO_SIGNALLING = 3; // 0x3
+    field public static final int BARRING_SERVICE_TYPE_PS_SERVICE = 1; // 0x1
+    field public static final int BARRING_SERVICE_TYPE_SMS = 9; // 0x9
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.BarringInfo> CREATOR;
+  }
+
+  public static final class BarringInfo.BarringServiceInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getBarringType();
+    method public int getConditionalBarringFactor();
+    method public int getConditionalBarringTimeSeconds();
+    method public boolean isBarred();
+    method public boolean isConditionallyBarred();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field public static final int BARRING_TYPE_CONDITIONAL = 1; // 0x1
+    field public static final int BARRING_TYPE_NONE = 0; // 0x0
+    field public static final int BARRING_TYPE_UNCONDITIONAL = 2; // 0x2
+    field public static final int BARRING_TYPE_UNKNOWN = -1; // 0xffffffff
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.BarringInfo.BarringServiceInfo> CREATOR;
+  }
+
+  public class CarrierConfigManager {
+    method @Nullable public android.os.PersistableBundle getConfig();
+    method @Nullable public android.os.PersistableBundle getConfigByComponentForSubId(@NonNull String, int);
+    method @Nullable public android.os.PersistableBundle getConfigForSubId(int);
+    method public static boolean isConfigForIdentifiedCarrier(android.os.PersistableBundle);
+    method public void notifyConfigChangedForSubId(int);
+    field public static final String ACTION_CARRIER_CONFIG_CHANGED = "android.telephony.action.CARRIER_CONFIG_CHANGED";
+    field public static final int DATA_CYCLE_THRESHOLD_DISABLED = -2; // 0xfffffffe
+    field public static final int DATA_CYCLE_USE_PLATFORM_DEFAULT = -1; // 0xffffffff
+    field public static final String ENABLE_EAP_METHOD_PREFIX_BOOL = "enable_eap_method_prefix_bool";
+    field public static final String EXTRA_SLOT_INDEX = "android.telephony.extra.SLOT_INDEX";
+    field public static final String EXTRA_SUBSCRIPTION_INDEX = "android.telephony.extra.SUBSCRIPTION_INDEX";
+    field public static final String IMSI_KEY_AVAILABILITY_INT = "imsi_key_availability_int";
+    field public static final String KEY_5G_NR_SSRSRP_THRESHOLDS_INT_ARRAY = "5g_nr_ssrsrp_thresholds_int_array";
+    field public static final String KEY_5G_NR_SSRSRQ_THRESHOLDS_INT_ARRAY = "5g_nr_ssrsrq_thresholds_int_array";
+    field public static final String KEY_5G_NR_SSSINR_THRESHOLDS_INT_ARRAY = "5g_nr_sssinr_thresholds_int_array";
+    field public static final String KEY_ADDITIONAL_CALL_SETTING_BOOL = "additional_call_setting_bool";
+    field public static final String KEY_ALLOW_ADDING_APNS_BOOL = "allow_adding_apns_bool";
+    field public static final String KEY_ALLOW_ADD_CALL_DURING_VIDEO_CALL_BOOL = "allow_add_call_during_video_call";
+    field public static final String KEY_ALLOW_EMERGENCY_NUMBERS_IN_CALL_LOG_BOOL = "allow_emergency_numbers_in_call_log_bool";
+    field public static final String KEY_ALLOW_EMERGENCY_VIDEO_CALLS_BOOL = "allow_emergency_video_calls_bool";
+    field public static final String KEY_ALLOW_HOLD_CALL_DURING_EMERGENCY_BOOL = "allow_hold_call_during_emergency_bool";
+    field public static final String KEY_ALLOW_HOLD_VIDEO_CALL_BOOL = "allow_hold_video_call_bool";
+    field public static final String KEY_ALLOW_LOCAL_DTMF_TONES_BOOL = "allow_local_dtmf_tones_bool";
+    field public static final String KEY_ALLOW_MERGE_WIFI_CALLS_WHEN_VOWIFI_OFF_BOOL = "allow_merge_wifi_calls_when_vowifi_off_bool";
+    field public static final String KEY_ALLOW_NON_EMERGENCY_CALLS_IN_ECM_BOOL = "allow_non_emergency_calls_in_ecm_bool";
+    field public static final String KEY_ALLOW_VIDEO_CALLING_FALLBACK_BOOL = "allow_video_calling_fallback_bool";
+    field public static final String KEY_ALWAYS_SHOW_DATA_RAT_ICON_BOOL = "always_show_data_rat_icon_bool";
+    field @Deprecated public static final String KEY_ALWAYS_SHOW_EMERGENCY_ALERT_ONOFF_BOOL = "always_show_emergency_alert_onoff_bool";
+    field public static final String KEY_ALWAYS_SHOW_PRIMARY_SIGNAL_BAR_IN_OPPORTUNISTIC_NETWORK_BOOLEAN = "always_show_primary_signal_bar_in_opportunistic_network_boolean";
+    field public static final String KEY_APN_EXPAND_BOOL = "apn_expand_bool";
+    field public static final String KEY_APN_SETTINGS_DEFAULT_APN_TYPES_STRING_ARRAY = "apn_settings_default_apn_types_string_array";
+    field public static final String KEY_AUTO_RETRY_ENABLED_BOOL = "auto_retry_enabled_bool";
+    field public static final String KEY_CALL_BARRING_DEFAULT_SERVICE_CLASS_INT = "call_barring_default_service_class_int";
+    field public static final String KEY_CALL_BARRING_SUPPORTS_DEACTIVATE_ALL_BOOL = "call_barring_supports_deactivate_all_bool";
+    field public static final String KEY_CALL_BARRING_SUPPORTS_PASSWORD_CHANGE_BOOL = "call_barring_supports_password_change_bool";
+    field public static final String KEY_CALL_BARRING_VISIBILITY_BOOL = "call_barring_visibility_bool";
+    field public static final String KEY_CALL_FORWARDING_BLOCKS_WHILE_ROAMING_STRING_ARRAY = "call_forwarding_blocks_while_roaming_string_array";
+    field public static final String KEY_CALL_REDIRECTION_SERVICE_COMPONENT_NAME_STRING = "call_redirection_service_component_name_string";
+    field public static final String KEY_CARRIER_ALLOW_DEFLECT_IMS_CALL_BOOL = "carrier_allow_deflect_ims_call_bool";
+    field public static final String KEY_CARRIER_ALLOW_TURNOFF_IMS_BOOL = "carrier_allow_turnoff_ims_bool";
+    field public static final String KEY_CARRIER_APP_REQUIRED_DURING_SIM_SETUP_BOOL = "carrier_app_required_during_setup_bool";
+    field public static final String KEY_CARRIER_CALL_SCREENING_APP_STRING = "call_screening_app";
+    field public static final String KEY_CARRIER_CERTIFICATE_STRING_ARRAY = "carrier_certificate_string_array";
+    field public static final String KEY_CARRIER_CONFIG_APPLIED_BOOL = "carrier_config_applied_bool";
+    field public static final String KEY_CARRIER_CONFIG_VERSION_STRING = "carrier_config_version_string";
+    field public static final String KEY_CARRIER_DATA_CALL_PERMANENT_FAILURE_STRINGS = "carrier_data_call_permanent_failure_strings";
+    field public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_DCFAILURE_STRING_ARRAY = "carrier_default_actions_on_dcfailure_string_array";
+    field public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_DEFAULT_NETWORK_AVAILABLE = "carrier_default_actions_on_default_network_available_string_array";
+    field public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY = "carrier_default_actions_on_redirection_string_array";
+    field public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_RESET = "carrier_default_actions_on_reset_string_array";
+    field public static final String KEY_CARRIER_DEFAULT_REDIRECTION_URL_STRING_ARRAY = "carrier_default_redirection_url_string_array";
+    field public static final String KEY_CARRIER_DEFAULT_WFC_IMS_ENABLED_BOOL = "carrier_default_wfc_ims_enabled_bool";
+    field public static final String KEY_CARRIER_DEFAULT_WFC_IMS_MODE_INT = "carrier_default_wfc_ims_mode_int";
+    field public static final String KEY_CARRIER_DEFAULT_WFC_IMS_ROAMING_MODE_INT = "carrier_default_wfc_ims_roaming_mode_int";
+    field @Deprecated public static final String KEY_CARRIER_FORCE_DISABLE_ETWS_CMAS_TEST_BOOL = "carrier_force_disable_etws_cmas_test_bool";
+    field public static final String KEY_CARRIER_IMS_GBA_REQUIRED_BOOL = "carrier_ims_gba_required_bool";
+    field public static final String KEY_CARRIER_INSTANT_LETTERING_AVAILABLE_BOOL = "carrier_instant_lettering_available_bool";
+    field public static final String KEY_CARRIER_INSTANT_LETTERING_ENCODING_STRING = "carrier_instant_lettering_encoding_string";
+    field public static final String KEY_CARRIER_INSTANT_LETTERING_ESCAPED_CHARS_STRING = "carrier_instant_lettering_escaped_chars_string";
+    field public static final String KEY_CARRIER_INSTANT_LETTERING_INVALID_CHARS_STRING = "carrier_instant_lettering_invalid_chars_string";
+    field public static final String KEY_CARRIER_INSTANT_LETTERING_LENGTH_LIMIT_INT = "carrier_instant_lettering_length_limit_int";
+    field public static final String KEY_CARRIER_NAME_OVERRIDE_BOOL = "carrier_name_override_bool";
+    field public static final String KEY_CARRIER_NAME_STRING = "carrier_name_string";
+    field public static final String KEY_CARRIER_RCS_PROVISIONING_REQUIRED_BOOL = "carrier_rcs_provisioning_required_bool";
+    field public static final String KEY_CARRIER_SETTINGS_ACTIVITY_COMPONENT_NAME_STRING = "carrier_settings_activity_component_name_string";
+    field public static final String KEY_CARRIER_SETTINGS_ENABLE_BOOL = "carrier_settings_enable_bool";
+    field public static final String KEY_CARRIER_SUPPORTS_SS_OVER_UT_BOOL = "carrier_supports_ss_over_ut_bool";
+    field public static final String KEY_CARRIER_USE_IMS_FIRST_FOR_EMERGENCY_BOOL = "carrier_use_ims_first_for_emergency_bool";
+    field public static final String KEY_CARRIER_USSD_METHOD_INT = "carrier_ussd_method_int";
+    field public static final String KEY_CARRIER_UT_PROVISIONING_REQUIRED_BOOL = "carrier_ut_provisioning_required_bool";
+    field public static final String KEY_CARRIER_VOLTE_AVAILABLE_BOOL = "carrier_volte_available_bool";
+    field public static final String KEY_CARRIER_VOLTE_OVERRIDE_WFC_PROVISIONING_BOOL = "carrier_volte_override_wfc_provisioning_bool";
+    field public static final String KEY_CARRIER_VOLTE_PROVISIONED_BOOL = "carrier_volte_provisioned_bool";
+    field public static final String KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL = "carrier_volte_provisioning_required_bool";
+    field public static final String KEY_CARRIER_VOLTE_TTY_SUPPORTED_BOOL = "carrier_volte_tty_supported_bool";
+    field public static final String KEY_CARRIER_VT_AVAILABLE_BOOL = "carrier_vt_available_bool";
+    field @Deprecated public static final String KEY_CARRIER_VVM_PACKAGE_NAME_STRING = "carrier_vvm_package_name_string";
+    field public static final String KEY_CARRIER_VVM_PACKAGE_NAME_STRING_ARRAY = "carrier_vvm_package_name_string_array";
+    field public static final String KEY_CARRIER_WFC_IMS_AVAILABLE_BOOL = "carrier_wfc_ims_available_bool";
+    field public static final String KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL = "carrier_wfc_supports_wifi_only_bool";
+    field public static final String KEY_CDMA_3WAYCALL_FLASH_DELAY_INT = "cdma_3waycall_flash_delay_int";
+    field public static final String KEY_CDMA_DTMF_TONE_DELAY_INT = "cdma_dtmf_tone_delay_int";
+    field public static final String KEY_CDMA_NONROAMING_NETWORKS_STRING_ARRAY = "cdma_nonroaming_networks_string_array";
+    field public static final String KEY_CDMA_ROAMING_MODE_INT = "cdma_roaming_mode_int";
+    field public static final String KEY_CDMA_ROAMING_NETWORKS_STRING_ARRAY = "cdma_roaming_networks_string_array";
+    field public static final String KEY_CHECK_PRICING_WITH_CARRIER_FOR_DATA_ROAMING_BOOL = "check_pricing_with_carrier_data_roaming_bool";
+    field public static final String KEY_CI_ACTION_ON_SYS_UPDATE_BOOL = "ci_action_on_sys_update_bool";
+    field public static final String KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_STRING = "ci_action_on_sys_update_extra_string";
+    field public static final String KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_VAL_STRING = "ci_action_on_sys_update_extra_val_string";
+    field public static final String KEY_CI_ACTION_ON_SYS_UPDATE_INTENT_STRING = "ci_action_on_sys_update_intent_string";
+    field public static final String KEY_CONFIG_IMS_MMTEL_PACKAGE_OVERRIDE_STRING = "config_ims_mmtel_package_override_string";
+    field @Deprecated public static final String KEY_CONFIG_IMS_PACKAGE_OVERRIDE_STRING = "config_ims_package_override_string";
+    field public static final String KEY_CONFIG_IMS_RCS_PACKAGE_OVERRIDE_STRING = "config_ims_rcs_package_override_string";
+    field public static final String KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING = "config_plans_package_override_string";
+    field public static final String KEY_CONFIG_TELEPHONY_USE_OWN_NUMBER_FOR_VOICEMAIL_BOOL = "config_telephony_use_own_number_for_voicemail_bool";
+    field public static final String KEY_CONFIG_WIFI_DISABLE_IN_ECBM = "config_wifi_disable_in_ecbm";
+    field public static final String KEY_CSP_ENABLED_BOOL = "csp_enabled_bool";
+    field public static final String KEY_DATA_LIMIT_NOTIFICATION_BOOL = "data_limit_notification_bool";
+    field public static final String KEY_DATA_LIMIT_THRESHOLD_BYTES_LONG = "data_limit_threshold_bytes_long";
+    field public static final String KEY_DATA_RAPID_NOTIFICATION_BOOL = "data_rapid_notification_bool";
+    field public static final String KEY_DATA_SWITCH_VALIDATION_TIMEOUT_LONG = "data_switch_validation_timeout_long";
+    field public static final String KEY_DATA_WARNING_NOTIFICATION_BOOL = "data_warning_notification_bool";
+    field public static final String KEY_DATA_WARNING_THRESHOLD_BYTES_LONG = "data_warning_threshold_bytes_long";
+    field public static final String KEY_DEFAULT_SIM_CALL_MANAGER_STRING = "default_sim_call_manager_string";
+    field public static final String KEY_DEFAULT_VM_NUMBER_ROAMING_AND_IMS_UNREGISTERED_STRING = "default_vm_number_roaming_and_ims_unregistered_string";
+    field public static final String KEY_DEFAULT_VM_NUMBER_STRING = "default_vm_number_string";
+    field public static final String KEY_DIAL_STRING_REPLACE_STRING_ARRAY = "dial_string_replace_string_array";
+    field public static final String KEY_DISABLE_CDMA_ACTIVATION_CODE_BOOL = "disable_cdma_activation_code_bool";
+    field public static final String KEY_DISABLE_CHARGE_INDICATION_BOOL = "disable_charge_indication_bool";
+    field public static final String KEY_DISABLE_SUPPLEMENTARY_SERVICES_IN_AIRPLANE_MODE_BOOL = "disable_supplementary_services_in_airplane_mode_bool";
+    field public static final String KEY_DISCONNECT_CAUSE_PLAY_BUSYTONE_INT_ARRAY = "disconnect_cause_play_busytone_int_array";
+    field public static final String KEY_DISPLAY_HD_AUDIO_PROPERTY_BOOL = "display_hd_audio_property_bool";
+    field public static final String KEY_DROP_VIDEO_CALL_WHEN_ANSWERING_AUDIO_CALL_BOOL = "drop_video_call_when_answering_audio_call_bool";
+    field public static final String KEY_DTMF_TYPE_ENABLED_BOOL = "dtmf_type_enabled_bool";
+    field public static final String KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT = "duration_blocking_disabled_after_emergency_int";
+    field public static final String KEY_EDITABLE_ENHANCED_4G_LTE_BOOL = "editable_enhanced_4g_lte_bool";
+    field public static final String KEY_EDITABLE_VOICEMAIL_NUMBER_BOOL = "editable_voicemail_number_bool";
+    field public static final String KEY_EDITABLE_VOICEMAIL_NUMBER_SETTING_BOOL = "editable_voicemail_number_setting_bool";
+    field public static final String KEY_EDITABLE_WFC_MODE_BOOL = "editable_wfc_mode_bool";
+    field public static final String KEY_EDITABLE_WFC_ROAMING_MODE_BOOL = "editable_wfc_roaming_mode_bool";
+    field public static final String KEY_EMERGENCY_NOTIFICATION_DELAY_INT = "emergency_notification_delay_int";
+    field public static final String KEY_EMERGENCY_NUMBER_PREFIX_STRING_ARRAY = "emergency_number_prefix_string_array";
+    field public static final String KEY_ENABLE_DIALER_KEY_VIBRATION_BOOL = "enable_dialer_key_vibration_bool";
+    field public static final String KEY_ENHANCED_4G_LTE_ON_BY_DEFAULT_BOOL = "enhanced_4g_lte_on_by_default_bool";
+    field public static final String KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT = "enhanced_4g_lte_title_variant_int";
+    field public static final String KEY_FORCE_HOME_NETWORK_BOOL = "force_home_network_bool";
+    field public static final String KEY_GSM_DTMF_TONE_DELAY_INT = "gsm_dtmf_tone_delay_int";
+    field public static final String KEY_GSM_NONROAMING_NETWORKS_STRING_ARRAY = "gsm_nonroaming_networks_string_array";
+    field public static final String KEY_GSM_ROAMING_NETWORKS_STRING_ARRAY = "gsm_roaming_networks_string_array";
+    field public static final String KEY_HAS_IN_CALL_NOISE_SUPPRESSION_BOOL = "has_in_call_noise_suppression_bool";
+    field public static final String KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL = "hide_carrier_network_settings_bool";
+    field public static final String KEY_HIDE_ENHANCED_4G_LTE_BOOL = "hide_enhanced_4g_lte_bool";
+    field public static final String KEY_HIDE_IMS_APN_BOOL = "hide_ims_apn_bool";
+    field public static final String KEY_HIDE_LTE_PLUS_DATA_ICON_BOOL = "hide_lte_plus_data_icon_bool";
+    field public static final String KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL = "hide_preferred_network_type_bool";
+    field public static final String KEY_HIDE_PRESET_APN_DETAILS_BOOL = "hide_preset_apn_details_bool";
+    field public static final String KEY_HIDE_SIM_LOCK_SETTINGS_BOOL = "hide_sim_lock_settings_bool";
+    field public static final String KEY_HIDE_TTY_HCO_VCO_WITH_RTT_BOOL = "hide_tty_hco_vco_with_rtt";
+    field public static final String KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS = "ignore_data_enabled_changed_for_video_calls";
+    field public static final String KEY_IGNORE_RTT_MODE_SETTING_BOOL = "ignore_rtt_mode_setting_bool";
+    field public static final String KEY_IGNORE_SIM_NETWORK_LOCKED_EVENTS_BOOL = "ignore_sim_network_locked_events_bool";
+    field public static final String KEY_IMS_CONFERENCE_SIZE_LIMIT_INT = "ims_conference_size_limit_int";
+    field public static final String KEY_IMS_DTMF_TONE_DELAY_INT = "ims_dtmf_tone_delay_int";
+    field public static final String KEY_IS_IMS_CONFERENCE_SIZE_ENFORCED_BOOL = "is_ims_conference_size_enforced_bool";
+    field public static final String KEY_LTE_ENABLED_BOOL = "lte_enabled_bool";
+    field public static final String KEY_LTE_RSRQ_THRESHOLDS_INT_ARRAY = "lte_rsrq_thresholds_int_array";
+    field public static final String KEY_LTE_RSSNR_THRESHOLDS_INT_ARRAY = "lte_rssnr_thresholds_int_array";
+    field public static final String KEY_MDN_IS_ADDITIONAL_VOICEMAIL_NUMBER_BOOL = "mdn_is_additional_voicemail_number_bool";
+    field public static final String KEY_MMS_ALIAS_ENABLED_BOOL = "aliasEnabled";
+    field public static final String KEY_MMS_ALIAS_MAX_CHARS_INT = "aliasMaxChars";
+    field public static final String KEY_MMS_ALIAS_MIN_CHARS_INT = "aliasMinChars";
+    field public static final String KEY_MMS_ALLOW_ATTACH_AUDIO_BOOL = "allowAttachAudio";
+    field public static final String KEY_MMS_APPEND_TRANSACTION_ID_BOOL = "enabledTransID";
+    field public static final String KEY_MMS_CLOSE_CONNECTION_BOOL = "mmsCloseConnection";
+    field public static final String KEY_MMS_EMAIL_GATEWAY_NUMBER_STRING = "emailGatewayNumber";
+    field public static final String KEY_MMS_GROUP_MMS_ENABLED_BOOL = "enableGroupMms";
+    field public static final String KEY_MMS_HTTP_PARAMS_STRING = "httpParams";
+    field public static final String KEY_MMS_HTTP_SOCKET_TIMEOUT_INT = "httpSocketTimeout";
+    field public static final String KEY_MMS_MAX_IMAGE_HEIGHT_INT = "maxImageHeight";
+    field public static final String KEY_MMS_MAX_IMAGE_WIDTH_INT = "maxImageWidth";
+    field public static final String KEY_MMS_MAX_MESSAGE_SIZE_INT = "maxMessageSize";
+    field public static final String KEY_MMS_MESSAGE_TEXT_MAX_SIZE_INT = "maxMessageTextSize";
+    field public static final String KEY_MMS_MMS_DELIVERY_REPORT_ENABLED_BOOL = "enableMMSDeliveryReports";
+    field public static final String KEY_MMS_MMS_ENABLED_BOOL = "enabledMMS";
+    field public static final String KEY_MMS_MMS_READ_REPORT_ENABLED_BOOL = "enableMMSReadReports";
+    field public static final String KEY_MMS_MULTIPART_SMS_ENABLED_BOOL = "enableMultipartSMS";
+    field public static final String KEY_MMS_NAI_SUFFIX_STRING = "naiSuffix";
+    field public static final String KEY_MMS_NOTIFY_WAP_MMSC_ENABLED_BOOL = "enabledNotifyWapMMSC";
+    field public static final String KEY_MMS_RECIPIENT_LIMIT_INT = "recipientLimit";
+    field public static final String KEY_MMS_SEND_MULTIPART_SMS_AS_SEPARATE_MESSAGES_BOOL = "sendMultipartSmsAsSeparateMessages";
+    field public static final String KEY_MMS_SHOW_CELL_BROADCAST_APP_LINKS_BOOL = "config_cellBroadcastAppLinks";
+    field public static final String KEY_MMS_SMS_DELIVERY_REPORT_ENABLED_BOOL = "enableSMSDeliveryReports";
+    field public static final String KEY_MMS_SMS_TO_MMS_TEXT_LENGTH_THRESHOLD_INT = "smsToMmsTextLengthThreshold";
+    field public static final String KEY_MMS_SMS_TO_MMS_TEXT_THRESHOLD_INT = "smsToMmsTextThreshold";
+    field public static final String KEY_MMS_SUBJECT_MAX_LENGTH_INT = "maxSubjectLength";
+    field public static final String KEY_MMS_SUPPORT_HTTP_CHARSET_HEADER_BOOL = "supportHttpCharsetHeader";
+    field public static final String KEY_MMS_SUPPORT_MMS_CONTENT_DISPOSITION_BOOL = "supportMmsContentDisposition";
+    field public static final String KEY_MMS_UA_PROF_TAG_NAME_STRING = "uaProfTagName";
+    field public static final String KEY_MMS_UA_PROF_URL_STRING = "uaProfUrl";
+    field public static final String KEY_MMS_USER_AGENT_STRING = "userAgent";
+    field public static final String KEY_MONTHLY_DATA_CYCLE_DAY_INT = "monthly_data_cycle_day_int";
+    field public static final String KEY_ONLY_AUTO_SELECT_IN_HOME_NETWORK_BOOL = "only_auto_select_in_home_network";
+    field public static final String KEY_ONLY_SINGLE_DC_ALLOWED_INT_ARRAY = "only_single_dc_allowed_int_array";
+    field public static final String KEY_OPERATOR_SELECTION_EXPAND_BOOL = "operator_selection_expand_bool";
+    field public static final String KEY_OPPORTUNISTIC_NETWORK_BACKOFF_TIME_LONG = "opportunistic_network_backoff_time_long";
+    field public static final String KEY_OPPORTUNISTIC_NETWORK_DATA_SWITCH_EXIT_HYSTERESIS_TIME_LONG = "opportunistic_network_data_switch_exit_hysteresis_time_long";
+    field public static final String KEY_OPPORTUNISTIC_NETWORK_DATA_SWITCH_HYSTERESIS_TIME_LONG = "opportunistic_network_data_switch_hysteresis_time_long";
+    field public static final String KEY_OPPORTUNISTIC_NETWORK_ENTRY_OR_EXIT_HYSTERESIS_TIME_LONG = "opportunistic_network_entry_or_exit_hysteresis_time_long";
+    field public static final String KEY_OPPORTUNISTIC_NETWORK_ENTRY_THRESHOLD_BANDWIDTH_INT = "opportunistic_network_entry_threshold_bandwidth_int";
+    field public static final String KEY_OPPORTUNISTIC_NETWORK_ENTRY_THRESHOLD_RSRP_INT = "opportunistic_network_entry_threshold_rsrp_int";
+    field public static final String KEY_OPPORTUNISTIC_NETWORK_ENTRY_THRESHOLD_RSSNR_INT = "opportunistic_network_entry_threshold_rssnr_int";
+    field public static final String KEY_OPPORTUNISTIC_NETWORK_EXIT_THRESHOLD_RSRP_INT = "opportunistic_network_exit_threshold_rsrp_int";
+    field public static final String KEY_OPPORTUNISTIC_NETWORK_EXIT_THRESHOLD_RSSNR_INT = "opportunistic_network_exit_threshold_rssnr_int";
+    field public static final String KEY_OPPORTUNISTIC_NETWORK_MAX_BACKOFF_TIME_LONG = "opportunistic_network_max_backoff_time_long";
+    field public static final String KEY_OPPORTUNISTIC_NETWORK_PING_PONG_TIME_LONG = "opportunistic_network_ping_pong_time_long";
+    field public static final String KEY_PING_TEST_BEFORE_DATA_SWITCH_BOOL = "ping_test_before_data_switch_bool";
+    field public static final String KEY_PREFER_2G_BOOL = "prefer_2g_bool";
+    field public static final String KEY_PREVENT_CLIR_ACTIVATION_AND_DEACTIVATION_CODE_BOOL = "prevent_clir_activation_and_deactivation_code_bool";
+    field public static final String KEY_RADIO_RESTART_FAILURE_CAUSES_INT_ARRAY = "radio_restart_failure_causes_int_array";
+    field public static final String KEY_RCS_CONFIG_SERVER_URL_STRING = "rcs_config_server_url_string";
+    field public static final String KEY_READ_ONLY_APN_FIELDS_STRING_ARRAY = "read_only_apn_fields_string_array";
+    field public static final String KEY_READ_ONLY_APN_TYPES_STRING_ARRAY = "read_only_apn_types_string_array";
+    field public static final String KEY_REQUIRE_ENTITLEMENT_CHECKS_BOOL = "require_entitlement_checks_bool";
+    field @Deprecated public static final String KEY_RESTART_RADIO_ON_PDP_FAIL_REGULAR_DEACTIVATION_BOOL = "restart_radio_on_pdp_fail_regular_deactivation_bool";
+    field public static final String KEY_RTT_AUTO_UPGRADE_BOOL = "rtt_auto_upgrade_bool";
+    field public static final String KEY_RTT_DOWNGRADE_SUPPORTED_BOOL = "rtt_downgrade_supported_bool";
+    field public static final String KEY_RTT_SUPPORTED_BOOL = "rtt_supported_bool";
+    field public static final String KEY_RTT_SUPPORTED_FOR_VT_BOOL = "rtt_supported_for_vt_bool";
+    field public static final String KEY_RTT_UPGRADE_SUPPORTED_BOOL = "rtt_upgrade_supported_bool";
+    field public static final String KEY_SHOW_4G_FOR_3G_DATA_ICON_BOOL = "show_4g_for_3g_data_icon_bool";
+    field public static final String KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL = "show_4g_for_lte_data_icon_bool";
+    field public static final String KEY_SHOW_APN_SETTING_CDMA_BOOL = "show_apn_setting_cdma_bool";
+    field public static final String KEY_SHOW_BLOCKING_PAY_PHONE_OPTION_BOOL = "show_blocking_pay_phone_option_bool";
+    field public static final String KEY_SHOW_CALL_BLOCKING_DISABLED_NOTIFICATION_ALWAYS_BOOL = "show_call_blocking_disabled_notification_always_bool";
+    field public static final String KEY_SHOW_CDMA_CHOICES_BOOL = "show_cdma_choices_bool";
+    field public static final String KEY_SHOW_FORWARDED_NUMBER_BOOL = "show_forwarded_number_bool";
+    field public static final String KEY_SHOW_ICCID_IN_SIM_STATUS_BOOL = "show_iccid_in_sim_status_bool";
+    field public static final String KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL = "show_ims_registration_status_bool";
+    field public static final String KEY_SHOW_ONSCREEN_DIAL_BUTTON_BOOL = "show_onscreen_dial_button_bool";
+    field public static final String KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL = "show_signal_strength_in_sim_status_bool";
+    field public static final String KEY_SHOW_VIDEO_CALL_CHARGES_ALERT_DIALOG_BOOL = "show_video_call_charges_alert_dialog_bool";
+    field public static final String KEY_SHOW_WFC_LOCATION_PRIVACY_POLICY_BOOL = "show_wfc_location_privacy_policy_bool";
+    field public static final String KEY_SIMPLIFIED_NETWORK_SETTINGS_BOOL = "simplified_network_settings_bool";
+    field public static final String KEY_SIM_NETWORK_UNLOCK_ALLOW_DISMISS_BOOL = "sim_network_unlock_allow_dismiss_bool";
+    field public static final String KEY_SMS_REQUIRES_DESTINATION_NUMBER_CONVERSION_BOOL = "sms_requires_destination_number_conversion_bool";
+    field public static final String KEY_SUPPORT_3GPP_CALL_FORWARDING_WHILE_ROAMING_BOOL = "support_3gpp_call_forwarding_while_roaming_bool";
+    field public static final String KEY_SUPPORT_ADD_CONFERENCE_PARTICIPANTS_BOOL = "support_add_conference_participants_bool";
+    field public static final String KEY_SUPPORT_ADHOC_CONFERENCE_CALLS_BOOL = "support_adhoc_conference_calls_bool";
+    field public static final String KEY_SUPPORT_CLIR_NETWORK_DEFAULT_BOOL = "support_clir_network_default_bool";
+    field public static final String KEY_SUPPORT_CONFERENCE_CALL_BOOL = "support_conference_call_bool";
+    field public static final String KEY_SUPPORT_EMERGENCY_SMS_OVER_IMS_BOOL = "support_emergency_sms_over_ims_bool";
+    field public static final String KEY_SUPPORT_ENHANCED_CALL_BLOCKING_BOOL = "support_enhanced_call_blocking_bool";
+    field public static final String KEY_SUPPORT_IMS_CONFERENCE_EVENT_PACKAGE_BOOL = "support_ims_conference_event_package_bool";
+    field public static final String KEY_SUPPORT_PAUSE_IMS_VIDEO_CALLS_BOOL = "support_pause_ims_video_calls_bool";
+    field public static final String KEY_SUPPORT_SWAP_AFTER_MERGE_BOOL = "support_swap_after_merge_bool";
+    field public static final String KEY_SUPPORT_TDSCDMA_BOOL = "support_tdscdma_bool";
+    field public static final String KEY_SUPPORT_TDSCDMA_ROAMING_NETWORKS_STRING_ARRAY = "support_tdscdma_roaming_networks_string_array";
+    field public static final String KEY_SWITCH_DATA_TO_PRIMARY_IF_PRIMARY_IS_OOS_BOOL = "switch_data_to_primary_if_primary_is_oos_bool";
+    field public static final String KEY_TREAT_DOWNGRADED_VIDEO_CALLS_AS_VIDEO_CALLS_BOOL = "treat_downgraded_video_calls_as_video_calls_bool";
+    field public static final String KEY_TTY_SUPPORTED_BOOL = "tty_supported_bool";
+    field public static final String KEY_UNLOGGABLE_NUMBERS_STRING_ARRAY = "unloggable_numbers_string_array";
+    field public static final String KEY_USE_HFA_FOR_PROVISIONING_BOOL = "use_hfa_for_provisioning_bool";
+    field public static final String KEY_USE_OTASP_FOR_PROVISIONING_BOOL = "use_otasp_for_provisioning_bool";
+    field public static final String KEY_USE_RCS_PRESENCE_BOOL = "use_rcs_presence_bool";
+    field public static final String KEY_USE_RCS_SIP_OPTIONS_BOOL = "use_rcs_sip_options_bool";
+    field public static final String KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL = "use_wfc_home_network_mode_in_roaming_network_bool";
+    field public static final String KEY_VOICEMAIL_NOTIFICATION_PERSISTENT_BOOL = "voicemail_notification_persistent_bool";
+    field public static final String KEY_VOICE_PRIVACY_DISABLE_UI_BOOL = "voice_privacy_disable_ui_bool";
+    field public static final String KEY_VOLTE_REPLACEMENT_RAT_INT = "volte_replacement_rat_int";
+    field public static final String KEY_VVM_CELLULAR_DATA_REQUIRED_BOOL = "vvm_cellular_data_required_bool";
+    field public static final String KEY_VVM_CLIENT_PREFIX_STRING = "vvm_client_prefix_string";
+    field public static final String KEY_VVM_DESTINATION_NUMBER_STRING = "vvm_destination_number_string";
+    field public static final String KEY_VVM_DISABLED_CAPABILITIES_STRING_ARRAY = "vvm_disabled_capabilities_string_array";
+    field public static final String KEY_VVM_LEGACY_MODE_ENABLED_BOOL = "vvm_legacy_mode_enabled_bool";
+    field public static final String KEY_VVM_PORT_NUMBER_INT = "vvm_port_number_int";
+    field public static final String KEY_VVM_PREFETCH_BOOL = "vvm_prefetch_bool";
+    field public static final String KEY_VVM_SSL_ENABLED_BOOL = "vvm_ssl_enabled_bool";
+    field public static final String KEY_VVM_TYPE_STRING = "vvm_type_string";
+    field public static final String KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING = "wfc_emergency_address_carrier_app_string";
+    field public static final String KEY_WORLD_MODE_ENABLED_BOOL = "world_mode_enabled_bool";
+    field public static final String KEY_WORLD_PHONE_BOOL = "world_phone_bool";
+    field public static final int SERVICE_CLASS_NONE = 0; // 0x0
+    field public static final int SERVICE_CLASS_VOICE = 1; // 0x1
+    field public static final int USSD_OVER_CS_ONLY = 2; // 0x2
+    field public static final int USSD_OVER_CS_PREFERRED = 0; // 0x0
+    field public static final int USSD_OVER_IMS_ONLY = 3; // 0x3
+    field public static final int USSD_OVER_IMS_PREFERRED = 1; // 0x1
+  }
+
+  public static final class CarrierConfigManager.Apn {
+    field public static final String KEY_PREFIX = "apn.";
+    field public static final String KEY_SETTINGS_DEFAULT_PROTOCOL_STRING = "apn.settings_default_protocol_string";
+    field public static final String KEY_SETTINGS_DEFAULT_ROAMING_PROTOCOL_STRING = "apn.settings_default_roaming_protocol_string";
+    field public static final String PROTOCOL_IPV4 = "IP";
+    field public static final String PROTOCOL_IPV4V6 = "IPV4V6";
+    field public static final String PROTOCOL_IPV6 = "IPV6";
+  }
+
+  public static final class CarrierConfigManager.Gps {
+    field public static final String KEY_PERSIST_LPP_MODE_BOOL = "gps.persist_lpp_mode_bool";
+    field public static final String KEY_PREFIX = "gps.";
+  }
+
+  public static final class CarrierConfigManager.Ims {
+    field public static final String KEY_IMS_SINGLE_REGISTRATION_REQUIRED_BOOL = "ims.ims_single_registration_required_bool";
+    field public static final String KEY_PREFIX = "ims.";
+    field public static final String KEY_WIFI_OFF_DEFERRING_TIME_MILLIS_INT = "ims.wifi_off_deferring_time_millis_int";
+  }
+
+  public abstract class CellIdentity implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public CharSequence getOperatorAlphaLong();
+    method @Nullable public CharSequence getOperatorAlphaShort();
+    method @CallSuper public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellIdentity> CREATOR;
+  }
+
+  public final class CellIdentityCdma extends android.telephony.CellIdentity {
+    method public int getBasestationId();
+    method public int getLatitude();
+    method public int getLongitude();
+    method public int getNetworkId();
+    method public int getSystemId();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellIdentityCdma> CREATOR;
+  }
+
+  public final class CellIdentityGsm extends android.telephony.CellIdentity {
+    method @NonNull public java.util.Set<java.lang.String> getAdditionalPlmns();
+    method public int getArfcn();
+    method public int getBsic();
+    method public int getCid();
+    method public int getLac();
+    method @Deprecated public int getMcc();
+    method @Nullable public String getMccString();
+    method @Deprecated public int getMnc();
+    method @Nullable public String getMncString();
+    method @Nullable public String getMobileNetworkOperator();
+    method @Deprecated public int getPsc();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellIdentityGsm> CREATOR;
+  }
+
+  public final class CellIdentityLte extends android.telephony.CellIdentity {
+    method @NonNull public java.util.Set<java.lang.String> getAdditionalPlmns();
+    method @NonNull public int[] getBands();
+    method public int getBandwidth();
+    method public int getCi();
+    method @Nullable public android.telephony.ClosedSubscriberGroupInfo getClosedSubscriberGroupInfo();
+    method public int getEarfcn();
+    method @Deprecated public int getMcc();
+    method @Nullable public String getMccString();
+    method @Deprecated public int getMnc();
+    method @Nullable public String getMncString();
+    method @Nullable public String getMobileNetworkOperator();
+    method public int getPci();
+    method public int getTac();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellIdentityLte> CREATOR;
+  }
+
+  public final class CellIdentityNr extends android.telephony.CellIdentity {
+    method @NonNull public java.util.Set<java.lang.String> getAdditionalPlmns();
+    method @NonNull public int[] getBands();
+    method @Nullable public String getMccString();
+    method @Nullable public String getMncString();
+    method public long getNci();
+    method @IntRange(from=0, to=3279165) public int getNrarfcn();
+    method @IntRange(from=0, to=1007) public int getPci();
+    method @IntRange(from=0, to=16777215) public int getTac();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellIdentityNr> CREATOR;
+  }
+
+  public final class CellIdentityTdscdma extends android.telephony.CellIdentity {
+    method @NonNull public java.util.Set<java.lang.String> getAdditionalPlmns();
+    method public int getCid();
+    method @Nullable public android.telephony.ClosedSubscriberGroupInfo getClosedSubscriberGroupInfo();
+    method public int getCpid();
+    method public int getLac();
+    method @Nullable public String getMccString();
+    method @Nullable public String getMncString();
+    method @Nullable public String getMobileNetworkOperator();
+    method public int getUarfcn();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellIdentityTdscdma> CREATOR;
+  }
+
+  public final class CellIdentityWcdma extends android.telephony.CellIdentity {
+    method @NonNull public java.util.Set<java.lang.String> getAdditionalPlmns();
+    method public int getCid();
+    method @Nullable public android.telephony.ClosedSubscriberGroupInfo getClosedSubscriberGroupInfo();
+    method public int getLac();
+    method @Deprecated public int getMcc();
+    method @Nullable public String getMccString();
+    method @Deprecated public int getMnc();
+    method @Nullable public String getMncString();
+    method @Nullable public String getMobileNetworkOperator();
+    method public int getPsc();
+    method public int getUarfcn();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellIdentityWcdma> CREATOR;
+  }
+
+  public abstract class CellInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getCellConnectionStatus();
+    method @NonNull public abstract android.telephony.CellIdentity getCellIdentity();
+    method @NonNull public abstract android.telephony.CellSignalStrength getCellSignalStrength();
+    method @Deprecated public long getTimeStamp();
+    method public long getTimestampMillis();
+    method public boolean isRegistered();
+    field public static final int CONNECTION_NONE = 0; // 0x0
+    field public static final int CONNECTION_PRIMARY_SERVING = 1; // 0x1
+    field public static final int CONNECTION_SECONDARY_SERVING = 2; // 0x2
+    field public static final int CONNECTION_UNKNOWN = 2147483647; // 0x7fffffff
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellInfo> CREATOR;
+    field public static final int UNAVAILABLE = 2147483647; // 0x7fffffff
+    field public static final long UNAVAILABLE_LONG = 9223372036854775807L; // 0x7fffffffffffffffL
+  }
+
+  public final class CellInfoCdma extends android.telephony.CellInfo implements android.os.Parcelable {
+    method @NonNull public android.telephony.CellIdentityCdma getCellIdentity();
+    method @NonNull public android.telephony.CellSignalStrengthCdma getCellSignalStrength();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellInfoCdma> CREATOR;
+  }
+
+  public final class CellInfoGsm extends android.telephony.CellInfo implements android.os.Parcelable {
+    method @NonNull public android.telephony.CellIdentityGsm getCellIdentity();
+    method @NonNull public android.telephony.CellSignalStrengthGsm getCellSignalStrength();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellInfoGsm> CREATOR;
+  }
+
+  public final class CellInfoLte extends android.telephony.CellInfo implements android.os.Parcelable {
+    method @NonNull public android.telephony.CellIdentityLte getCellIdentity();
+    method @NonNull public android.telephony.CellSignalStrengthLte getCellSignalStrength();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellInfoLte> CREATOR;
+  }
+
+  public final class CellInfoNr extends android.telephony.CellInfo {
+    method @NonNull public android.telephony.CellIdentity getCellIdentity();
+    method @NonNull public android.telephony.CellSignalStrength getCellSignalStrength();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellInfoNr> CREATOR;
+  }
+
+  public final class CellInfoTdscdma extends android.telephony.CellInfo implements android.os.Parcelable {
+    method @NonNull public android.telephony.CellIdentityTdscdma getCellIdentity();
+    method @NonNull public android.telephony.CellSignalStrengthTdscdma getCellSignalStrength();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellInfoTdscdma> CREATOR;
+  }
+
+  public final class CellInfoWcdma extends android.telephony.CellInfo implements android.os.Parcelable {
+    method public android.telephony.CellIdentityWcdma getCellIdentity();
+    method public android.telephony.CellSignalStrengthWcdma getCellSignalStrength();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellInfoWcdma> CREATOR;
+  }
+
+  @Deprecated public abstract class CellLocation {
+    ctor @Deprecated public CellLocation();
+    method @Deprecated public static android.telephony.CellLocation getEmpty();
+    method @Deprecated public static void requestLocationUpdate();
+  }
+
+  public abstract class CellSignalStrength {
+    method public abstract boolean equals(Object);
+    method public abstract int getAsuLevel();
+    method public abstract int getDbm();
+    method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public abstract int getLevel();
+    method public abstract int hashCode();
+    field public static final int SIGNAL_STRENGTH_GOOD = 3; // 0x3
+    field public static final int SIGNAL_STRENGTH_GREAT = 4; // 0x4
+    field public static final int SIGNAL_STRENGTH_MODERATE = 2; // 0x2
+    field public static final int SIGNAL_STRENGTH_NONE_OR_UNKNOWN = 0; // 0x0
+    field public static final int SIGNAL_STRENGTH_POOR = 1; // 0x1
+  }
+
+  public final class CellSignalStrengthCdma extends android.telephony.CellSignalStrength implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getAsuLevel();
+    method public int getCdmaDbm();
+    method public int getCdmaEcio();
+    method public int getCdmaLevel();
+    method public int getDbm();
+    method public int getEvdoDbm();
+    method public int getEvdoEcio();
+    method public int getEvdoLevel();
+    method public int getEvdoSnr();
+    method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public int getLevel();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthCdma> CREATOR;
+  }
+
+  public final class CellSignalStrengthGsm extends android.telephony.CellSignalStrength implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getAsuLevel();
+    method public int getBitErrorRate();
+    method public int getDbm();
+    method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public int getLevel();
+    method public int getRssi();
+    method public int getTimingAdvance();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthGsm> CREATOR;
+  }
+
+  public final class CellSignalStrengthLte extends android.telephony.CellSignalStrength implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getAsuLevel();
+    method public int getCqi();
+    method public int getDbm();
+    method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public int getLevel();
+    method public int getRsrp();
+    method public int getRsrq();
+    method public int getRssi();
+    method public int getRssnr();
+    method public int getTimingAdvance();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthLte> CREATOR;
+  }
+
+  public final class CellSignalStrengthNr extends android.telephony.CellSignalStrength implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getAsuLevel();
+    method public int getCsiRsrp();
+    method public int getCsiRsrq();
+    method public int getCsiSinr();
+    method public int getDbm();
+    method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public int getLevel();
+    method public int getSsRsrp();
+    method public int getSsRsrq();
+    method public int getSsSinr();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthNr> CREATOR;
+  }
+
+  public final class CellSignalStrengthTdscdma extends android.telephony.CellSignalStrength implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getAsuLevel();
+    method public int getDbm();
+    method @IntRange(from=0, to=4) public int getLevel();
+    method public int getRscp();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthTdscdma> CREATOR;
+  }
+
+  public final class CellSignalStrengthWcdma extends android.telephony.CellSignalStrength implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getAsuLevel();
+    method public int getDbm();
+    method public int getEcNo();
+    method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public int getLevel();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthWcdma> CREATOR;
+  }
+
+  public final class ClosedSubscriberGroupInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method @IntRange(from=0, to=134217727) public int getCsgIdentity();
+    method public boolean getCsgIndicator();
+    method @NonNull public String getHomeNodebName();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ClosedSubscriberGroupInfo> CREATOR;
+  }
+
+  public final class DataFailCause {
+    field public static final int ACCESS_ATTEMPT_ALREADY_IN_PROGRESS = 2219; // 0x8ab
+    field public static final int ACCESS_BLOCK = 2087; // 0x827
+    field public static final int ACCESS_BLOCK_ALL = 2088; // 0x828
+    field public static final int ACCESS_CLASS_DSAC_REJECTION = 2108; // 0x83c
+    field public static final int ACCESS_CONTROL_LIST_CHECK_FAILURE = 2128; // 0x850
+    field public static final int ACTIVATION_REJECTED_BCM_VIOLATION = 48; // 0x30
+    field public static final int ACTIVATION_REJECT_GGSN = 30; // 0x1e
+    field public static final int ACTIVATION_REJECT_UNSPECIFIED = 31; // 0x1f
+    field public static final int ACTIVE_PDP_CONTEXT_MAX_NUMBER_REACHED = 65; // 0x41
+    field public static final int APN_DISABLED = 2045; // 0x7fd
+    field public static final int APN_DISALLOWED_ON_ROAMING = 2059; // 0x80b
+    field public static final int APN_MISMATCH = 2054; // 0x806
+    field public static final int APN_PARAMETERS_CHANGED = 2060; // 0x80c
+    field public static final int APN_PENDING_HANDOVER = 2041; // 0x7f9
+    field public static final int APN_TYPE_CONFLICT = 112; // 0x70
+    field public static final int AUTH_FAILURE_ON_EMERGENCY_CALL = 122; // 0x7a
+    field public static final int BEARER_HANDLING_NOT_SUPPORTED = 60; // 0x3c
+    field public static final int CALL_DISALLOWED_IN_ROAMING = 2068; // 0x814
+    field public static final int CALL_PREEMPT_BY_EMERGENCY_APN = 127; // 0x7f
+    field public static final int CANNOT_ENCODE_OTA_MESSAGE = 2159; // 0x86f
+    field public static final int CDMA_ALERT_STOP = 2077; // 0x81d
+    field public static final int CDMA_INCOMING_CALL = 2076; // 0x81c
+    field public static final int CDMA_INTERCEPT = 2073; // 0x819
+    field public static final int CDMA_LOCK = 2072; // 0x818
+    field public static final int CDMA_RELEASE_DUE_TO_SO_REJECTION = 2075; // 0x81b
+    field public static final int CDMA_REORDER = 2074; // 0x81a
+    field public static final int CDMA_RETRY_ORDER = 2086; // 0x826
+    field public static final int CHANNEL_ACQUISITION_FAILURE = 2078; // 0x81e
+    field public static final int CLOSE_IN_PROGRESS = 2030; // 0x7ee
+    field public static final int COLLISION_WITH_NETWORK_INITIATED_REQUEST = 56; // 0x38
+    field public static final int COMPANION_IFACE_IN_USE = 118; // 0x76
+    field public static final int CONCURRENT_SERVICES_INCOMPATIBLE = 2083; // 0x823
+    field public static final int CONCURRENT_SERVICES_NOT_ALLOWED = 2091; // 0x82b
+    field public static final int CONCURRENT_SERVICE_NOT_SUPPORTED_BY_BASE_STATION = 2080; // 0x820
+    field public static final int CONDITIONAL_IE_ERROR = 100; // 0x64
+    field public static final int CONGESTION = 2106; // 0x83a
+    field public static final int CONNECTION_RELEASED = 2113; // 0x841
+    field public static final int CS_DOMAIN_NOT_AVAILABLE = 2181; // 0x885
+    field public static final int CS_FALLBACK_CALL_ESTABLISHMENT_NOT_ALLOWED = 2188; // 0x88c
+    field public static final int DATA_PLAN_EXPIRED = 2198; // 0x896
+    field public static final int DATA_ROAMING_SETTINGS_DISABLED = 2064; // 0x810
+    field public static final int DATA_SETTINGS_DISABLED = 2063; // 0x80f
+    field public static final int DBM_OR_SMS_IN_PROGRESS = 2211; // 0x8a3
+    field public static final int DDS_SWITCHED = 2065; // 0x811
+    field public static final int DDS_SWITCH_IN_PROGRESS = 2067; // 0x813
+    field public static final int DRB_RELEASED_BY_RRC = 2112; // 0x840
+    field public static final int DS_EXPLICIT_DEACTIVATION = 2125; // 0x84d
+    field public static final int DUAL_SWITCH = 2227; // 0x8b3
+    field public static final int DUN_CALL_DISALLOWED = 2056; // 0x808
+    field public static final int DUPLICATE_BEARER_ID = 2118; // 0x846
+    field public static final int EHRPD_TO_HRPD_FALLBACK = 2049; // 0x801
+    field public static final int EMBMS_NOT_ENABLED = 2193; // 0x891
+    field public static final int EMBMS_REGULAR_DEACTIVATION = 2195; // 0x893
+    field public static final int EMERGENCY_IFACE_ONLY = 116; // 0x74
+    field public static final int EMERGENCY_MODE = 2221; // 0x8ad
+    field public static final int EMM_ACCESS_BARRED = 115; // 0x73
+    field public static final int EMM_ACCESS_BARRED_INFINITE_RETRY = 121; // 0x79
+    field public static final int EMM_ATTACH_FAILED = 2115; // 0x843
+    field public static final int EMM_ATTACH_STARTED = 2116; // 0x844
+    field public static final int EMM_DETACHED = 2114; // 0x842
+    field public static final int EMM_T3417_EXPIRED = 2130; // 0x852
+    field public static final int EMM_T3417_EXT_EXPIRED = 2131; // 0x853
+    field public static final int EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED = 2178; // 0x882
+    field public static final int EPS_SERVICES_NOT_ALLOWED_IN_PLMN = 2179; // 0x883
+    field public static final int ERROR_UNSPECIFIED = 65535; // 0xffff
+    field public static final int ESM_BAD_OTA_MESSAGE = 2122; // 0x84a
+    field public static final int ESM_BEARER_DEACTIVATED_TO_SYNC_WITH_NETWORK = 2120; // 0x848
+    field public static final int ESM_COLLISION_SCENARIOS = 2119; // 0x847
+    field public static final int ESM_CONTEXT_TRANSFERRED_DUE_TO_IRAT = 2124; // 0x84c
+    field public static final int ESM_DOWNLOAD_SERVER_REJECTED_THE_CALL = 2123; // 0x84b
+    field public static final int ESM_FAILURE = 2182; // 0x886
+    field public static final int ESM_INFO_NOT_RECEIVED = 53; // 0x35
+    field public static final int ESM_LOCAL_CAUSE_NONE = 2126; // 0x84e
+    field public static final int ESM_NW_ACTIVATED_DED_BEARER_WITH_ID_OF_DEF_BEARER = 2121; // 0x849
+    field public static final int ESM_PROCEDURE_TIME_OUT = 2155; // 0x86b
+    field public static final int ESM_UNKNOWN_EPS_BEARER_CONTEXT = 2111; // 0x83f
+    field public static final int EVDO_CONNECTION_DENY_BY_BILLING_OR_AUTHENTICATION_FAILURE = 2201; // 0x899
+    field public static final int EVDO_CONNECTION_DENY_BY_GENERAL_OR_NETWORK_BUSY = 2200; // 0x898
+    field public static final int EVDO_HDR_CHANGED = 2202; // 0x89a
+    field public static final int EVDO_HDR_CONNECTION_SETUP_TIMEOUT = 2206; // 0x89e
+    field public static final int EVDO_HDR_EXITED = 2203; // 0x89b
+    field public static final int EVDO_HDR_NO_SESSION = 2204; // 0x89c
+    field public static final int EVDO_USING_GPS_FIX_INSTEAD_OF_HDR_CALL = 2205; // 0x89d
+    field public static final int FADE = 2217; // 0x8a9
+    field public static final int FAILED_TO_ACQUIRE_COLOCATED_HDR = 2207; // 0x89f
+    field public static final int FEATURE_NOT_SUPP = 40; // 0x28
+    field public static final int FILTER_SEMANTIC_ERROR = 44; // 0x2c
+    field public static final int FILTER_SYTAX_ERROR = 45; // 0x2d
+    field public static final int FORBIDDEN_APN_NAME = 2066; // 0x812
+    field public static final int GPRS_REGISTRATION_FAIL = -2; // 0xfffffffe
+    field public static final int GPRS_SERVICES_AND_NON_GPRS_SERVICES_NOT_ALLOWED = 2097; // 0x831
+    field public static final int GPRS_SERVICES_NOT_ALLOWED = 2098; // 0x832
+    field public static final int GPRS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN = 2103; // 0x837
+    field public static final int HANDOFF_PREFERENCE_CHANGED = 2251; // 0x8cb
+    field public static final int HDR_ACCESS_FAILURE = 2213; // 0x8a5
+    field public static final int HDR_FADE = 2212; // 0x8a4
+    field public static final int HDR_NO_LOCK_GRANTED = 2210; // 0x8a2
+    field public static final int IFACE_AND_POL_FAMILY_MISMATCH = 120; // 0x78
+    field public static final int IFACE_MISMATCH = 117; // 0x75
+    field public static final int ILLEGAL_ME = 2096; // 0x830
+    field public static final int ILLEGAL_MS = 2095; // 0x82f
+    field public static final int IMEI_NOT_ACCEPTED = 2177; // 0x881
+    field public static final int IMPLICITLY_DETACHED = 2100; // 0x834
+    field public static final int IMSI_UNKNOWN_IN_HOME_SUBSCRIBER_SERVER = 2176; // 0x880
+    field public static final int INCOMING_CALL_REJECTED = 2092; // 0x82c
+    field public static final int INSUFFICIENT_RESOURCES = 26; // 0x1a
+    field public static final int INTERFACE_IN_USE = 2058; // 0x80a
+    field public static final int INTERNAL_CALL_PREEMPT_BY_HIGH_PRIO_APN = 114; // 0x72
+    field public static final int INTERNAL_EPC_NONEPC_TRANSITION = 2057; // 0x809
+    field public static final int INVALID_CONNECTION_ID = 2156; // 0x86c
+    field public static final int INVALID_DNS_ADDR = 123; // 0x7b
+    field public static final int INVALID_EMM_STATE = 2190; // 0x88e
+    field public static final int INVALID_MANDATORY_INFO = 96; // 0x60
+    field public static final int INVALID_MODE = 2223; // 0x8af
+    field public static final int INVALID_PCSCF_ADDR = 113; // 0x71
+    field public static final int INVALID_PCSCF_OR_DNS_ADDRESS = 124; // 0x7c
+    field public static final int INVALID_PRIMARY_NSAPI = 2158; // 0x86e
+    field public static final int INVALID_SIM_STATE = 2224; // 0x8b0
+    field public static final int INVALID_TRANSACTION_ID = 81; // 0x51
+    field public static final int IPV6_ADDRESS_TRANSFER_FAILED = 2047; // 0x7ff
+    field public static final int IPV6_PREFIX_UNAVAILABLE = 2250; // 0x8ca
+    field public static final int IP_ADDRESS_MISMATCH = 119; // 0x77
+    field public static final int IP_VERSION_MISMATCH = 2055; // 0x807
+    field public static final int IRAT_HANDOVER_FAILED = 2194; // 0x892
+    field public static final int IS707B_MAX_ACCESS_PROBES = 2089; // 0x829
+    field public static final int LIMITED_TO_IPV4 = 2234; // 0x8ba
+    field public static final int LIMITED_TO_IPV6 = 2235; // 0x8bb
+    field public static final int LLC_SNDCP = 25; // 0x19
+    field public static final int LOCAL_END = 2215; // 0x8a7
+    field public static final int LOCATION_AREA_NOT_ALLOWED = 2102; // 0x836
+    field public static final int LOST_CONNECTION = 65540; // 0x10004
+    field public static final int LOWER_LAYER_REGISTRATION_FAILURE = 2197; // 0x895
+    field public static final int LOW_POWER_MODE_OR_POWERING_DOWN = 2044; // 0x7fc
+    field public static final int LTE_NAS_SERVICE_REQUEST_FAILED = 2117; // 0x845
+    field public static final int LTE_THROTTLING_NOT_REQUIRED = 2127; // 0x84f
+    field public static final int MAC_FAILURE = 2183; // 0x887
+    field public static final int MAXIMIUM_NSAPIS_EXCEEDED = 2157; // 0x86d
+    field public static final int MAXINUM_SIZE_OF_L2_MESSAGE_EXCEEDED = 2166; // 0x876
+    field public static final int MAX_ACCESS_PROBE = 2079; // 0x81f
+    field public static final int MAX_IPV4_CONNECTIONS = 2052; // 0x804
+    field public static final int MAX_IPV6_CONNECTIONS = 2053; // 0x805
+    field public static final int MAX_PPP_INACTIVITY_TIMER_EXPIRED = 2046; // 0x7fe
+    field public static final int MESSAGE_INCORRECT_SEMANTIC = 95; // 0x5f
+    field public static final int MESSAGE_TYPE_UNSUPPORTED = 97; // 0x61
+    field public static final int MIP_CONFIG_FAILURE = 2050; // 0x802
+    field public static final int MIP_FA_ADMIN_PROHIBITED = 2001; // 0x7d1
+    field public static final int MIP_FA_DELIVERY_STYLE_NOT_SUPPORTED = 2012; // 0x7dc
+    field public static final int MIP_FA_ENCAPSULATION_UNAVAILABLE = 2008; // 0x7d8
+    field public static final int MIP_FA_HOME_AGENT_AUTHENTICATION_FAILURE = 2004; // 0x7d4
+    field public static final int MIP_FA_INSUFFICIENT_RESOURCES = 2002; // 0x7d2
+    field public static final int MIP_FA_MALFORMED_REPLY = 2007; // 0x7d7
+    field public static final int MIP_FA_MALFORMED_REQUEST = 2006; // 0x7d6
+    field public static final int MIP_FA_MISSING_CHALLENGE = 2017; // 0x7e1
+    field public static final int MIP_FA_MISSING_HOME_ADDRESS = 2015; // 0x7df
+    field public static final int MIP_FA_MISSING_HOME_AGENT = 2014; // 0x7de
+    field public static final int MIP_FA_MISSING_NAI = 2013; // 0x7dd
+    field public static final int MIP_FA_MOBILE_NODE_AUTHENTICATION_FAILURE = 2003; // 0x7d3
+    field public static final int MIP_FA_REASON_UNSPECIFIED = 2000; // 0x7d0
+    field public static final int MIP_FA_REQUESTED_LIFETIME_TOO_LONG = 2005; // 0x7d5
+    field public static final int MIP_FA_REVERSE_TUNNEL_IS_MANDATORY = 2011; // 0x7db
+    field public static final int MIP_FA_REVERSE_TUNNEL_UNAVAILABLE = 2010; // 0x7da
+    field public static final int MIP_FA_STALE_CHALLENGE = 2018; // 0x7e2
+    field public static final int MIP_FA_UNKNOWN_CHALLENGE = 2016; // 0x7e0
+    field public static final int MIP_FA_VJ_HEADER_COMPRESSION_UNAVAILABLE = 2009; // 0x7d9
+    field public static final int MIP_HA_ADMIN_PROHIBITED = 2020; // 0x7e4
+    field public static final int MIP_HA_ENCAPSULATION_UNAVAILABLE = 2029; // 0x7ed
+    field public static final int MIP_HA_FOREIGN_AGENT_AUTHENTICATION_FAILURE = 2023; // 0x7e7
+    field public static final int MIP_HA_INSUFFICIENT_RESOURCES = 2021; // 0x7e5
+    field public static final int MIP_HA_MALFORMED_REQUEST = 2025; // 0x7e9
+    field public static final int MIP_HA_MOBILE_NODE_AUTHENTICATION_FAILURE = 2022; // 0x7e6
+    field public static final int MIP_HA_REASON_UNSPECIFIED = 2019; // 0x7e3
+    field public static final int MIP_HA_REGISTRATION_ID_MISMATCH = 2024; // 0x7e8
+    field public static final int MIP_HA_REVERSE_TUNNEL_IS_MANDATORY = 2028; // 0x7ec
+    field public static final int MIP_HA_REVERSE_TUNNEL_UNAVAILABLE = 2027; // 0x7eb
+    field public static final int MIP_HA_UNKNOWN_HOME_AGENT_ADDRESS = 2026; // 0x7ea
+    field public static final int MISSING_UNKNOWN_APN = 27; // 0x1b
+    field public static final int MODEM_APP_PREEMPTED = 2032; // 0x7f0
+    field public static final int MODEM_RESTART = 2037; // 0x7f5
+    field public static final int MSC_TEMPORARILY_NOT_REACHABLE = 2180; // 0x884
+    field public static final int MSG_AND_PROTOCOL_STATE_UNCOMPATIBLE = 101; // 0x65
+    field public static final int MSG_TYPE_NONCOMPATIBLE_STATE = 98; // 0x62
+    field public static final int MS_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK = 2099; // 0x833
+    field public static final int MULTIPLE_PDP_CALL_NOT_ALLOWED = 2192; // 0x890
+    field public static final int MULTI_CONN_TO_SAME_PDN_NOT_ALLOWED = 55; // 0x37
+    field public static final int NAS_LAYER_FAILURE = 2191; // 0x88f
+    field public static final int NAS_REQUEST_REJECTED_BY_NETWORK = 2167; // 0x877
+    field public static final int NAS_SIGNALLING = 14; // 0xe
+    field public static final int NETWORK_FAILURE = 38; // 0x26
+    field public static final int NETWORK_INITIATED_DETACH_NO_AUTO_REATTACH = 2154; // 0x86a
+    field public static final int NETWORK_INITIATED_DETACH_WITH_AUTO_REATTACH = 2153; // 0x869
+    field public static final int NETWORK_INITIATED_TERMINATION = 2031; // 0x7ef
+    field public static final int NONE = 0; // 0x0
+    field public static final int NON_IP_NOT_SUPPORTED = 2069; // 0x815
+    field public static final int NORMAL_RELEASE = 2218; // 0x8aa
+    field public static final int NO_CDMA_SERVICE = 2084; // 0x824
+    field public static final int NO_COLLOCATED_HDR = 2225; // 0x8b1
+    field public static final int NO_EPS_BEARER_CONTEXT_ACTIVATED = 2189; // 0x88d
+    field public static final int NO_GPRS_CONTEXT = 2094; // 0x82e
+    field public static final int NO_HYBRID_HDR_SERVICE = 2209; // 0x8a1
+    field public static final int NO_PDP_CONTEXT_ACTIVATED = 2107; // 0x83b
+    field public static final int NO_RESPONSE_FROM_BASE_STATION = 2081; // 0x821
+    field public static final int NO_SERVICE = 2216; // 0x8a8
+    field public static final int NO_SERVICE_ON_GATEWAY = 2093; // 0x82d
+    field public static final int NSAPI_IN_USE = 35; // 0x23
+    field public static final int NULL_APN_DISALLOWED = 2061; // 0x80d
+    field public static final int OEM_DCFAILCAUSE_1 = 4097; // 0x1001
+    field public static final int OEM_DCFAILCAUSE_10 = 4106; // 0x100a
+    field public static final int OEM_DCFAILCAUSE_11 = 4107; // 0x100b
+    field public static final int OEM_DCFAILCAUSE_12 = 4108; // 0x100c
+    field public static final int OEM_DCFAILCAUSE_13 = 4109; // 0x100d
+    field public static final int OEM_DCFAILCAUSE_14 = 4110; // 0x100e
+    field public static final int OEM_DCFAILCAUSE_15 = 4111; // 0x100f
+    field public static final int OEM_DCFAILCAUSE_2 = 4098; // 0x1002
+    field public static final int OEM_DCFAILCAUSE_3 = 4099; // 0x1003
+    field public static final int OEM_DCFAILCAUSE_4 = 4100; // 0x1004
+    field public static final int OEM_DCFAILCAUSE_5 = 4101; // 0x1005
+    field public static final int OEM_DCFAILCAUSE_6 = 4102; // 0x1006
+    field public static final int OEM_DCFAILCAUSE_7 = 4103; // 0x1007
+    field public static final int OEM_DCFAILCAUSE_8 = 4104; // 0x1008
+    field public static final int OEM_DCFAILCAUSE_9 = 4105; // 0x1009
+    field public static final int ONLY_IPV4V6_ALLOWED = 57; // 0x39
+    field public static final int ONLY_IPV4_ALLOWED = 50; // 0x32
+    field public static final int ONLY_IPV6_ALLOWED = 51; // 0x33
+    field public static final int ONLY_NON_IP_ALLOWED = 58; // 0x3a
+    field public static final int ONLY_SINGLE_BEARER_ALLOWED = 52; // 0x34
+    field public static final int OPERATOR_BARRED = 8; // 0x8
+    field public static final int OTASP_COMMIT_IN_PROGRESS = 2208; // 0x8a0
+    field public static final int PDN_CONN_DOES_NOT_EXIST = 54; // 0x36
+    field public static final int PDN_INACTIVITY_TIMER_EXPIRED = 2051; // 0x803
+    field public static final int PDN_IPV4_CALL_DISALLOWED = 2033; // 0x7f1
+    field public static final int PDN_IPV4_CALL_THROTTLED = 2034; // 0x7f2
+    field public static final int PDN_IPV6_CALL_DISALLOWED = 2035; // 0x7f3
+    field public static final int PDN_IPV6_CALL_THROTTLED = 2036; // 0x7f4
+    field public static final int PDN_NON_IP_CALL_DISALLOWED = 2071; // 0x817
+    field public static final int PDN_NON_IP_CALL_THROTTLED = 2070; // 0x816
+    field public static final int PDP_ACTIVATE_MAX_RETRY_FAILED = 2109; // 0x83d
+    field public static final int PDP_DUPLICATE = 2104; // 0x838
+    field public static final int PDP_ESTABLISH_TIMEOUT_EXPIRED = 2161; // 0x871
+    field public static final int PDP_INACTIVE_TIMEOUT_EXPIRED = 2163; // 0x873
+    field public static final int PDP_LOWERLAYER_ERROR = 2164; // 0x874
+    field public static final int PDP_MODIFY_COLLISION = 2165; // 0x875
+    field public static final int PDP_MODIFY_TIMEOUT_EXPIRED = 2162; // 0x872
+    field public static final int PDP_PPP_NOT_SUPPORTED = 2038; // 0x7f6
+    field public static final int PDP_WITHOUT_ACTIVE_TFT = 46; // 0x2e
+    field public static final int PHONE_IN_USE = 2222; // 0x8ae
+    field public static final int PHYSICAL_LINK_CLOSE_IN_PROGRESS = 2040; // 0x7f8
+    field public static final int PLMN_NOT_ALLOWED = 2101; // 0x835
+    field public static final int PPP_AUTH_FAILURE = 2229; // 0x8b5
+    field public static final int PPP_CHAP_FAILURE = 2232; // 0x8b8
+    field public static final int PPP_CLOSE_IN_PROGRESS = 2233; // 0x8b9
+    field public static final int PPP_OPTION_MISMATCH = 2230; // 0x8b6
+    field public static final int PPP_PAP_FAILURE = 2231; // 0x8b7
+    field public static final int PPP_TIMEOUT = 2228; // 0x8b4
+    field public static final int PREF_RADIO_TECH_CHANGED = -4; // 0xfffffffc
+    field public static final int PROFILE_BEARER_INCOMPATIBLE = 2042; // 0x7fa
+    field public static final int PROTOCOL_ERRORS = 111; // 0x6f
+    field public static final int QOS_NOT_ACCEPTED = 37; // 0x25
+    field public static final int RADIO_ACCESS_BEARER_FAILURE = 2110; // 0x83e
+    field public static final int RADIO_ACCESS_BEARER_SETUP_FAILURE = 2160; // 0x870
+    field public static final int RADIO_NOT_AVAILABLE = 65537; // 0x10001
+    field public static final int RADIO_POWER_OFF = -5; // 0xfffffffb
+    field public static final int REDIRECTION_OR_HANDOFF_IN_PROGRESS = 2220; // 0x8ac
+    field public static final int REGISTRATION_FAIL = -1; // 0xffffffff
+    field public static final int REGULAR_DEACTIVATION = 36; // 0x24
+    field public static final int REJECTED_BY_BASE_STATION = 2082; // 0x822
+    field public static final int RRC_CONNECTION_ABORTED_AFTER_HANDOVER = 2173; // 0x87d
+    field public static final int RRC_CONNECTION_ABORTED_AFTER_IRAT_CELL_CHANGE = 2174; // 0x87e
+    field public static final int RRC_CONNECTION_ABORTED_DUE_TO_IRAT_CHANGE = 2171; // 0x87b
+    field public static final int RRC_CONNECTION_ABORTED_DURING_IRAT_CELL_CHANGE = 2175; // 0x87f
+    field public static final int RRC_CONNECTION_ABORT_REQUEST = 2151; // 0x867
+    field public static final int RRC_CONNECTION_ACCESS_BARRED = 2139; // 0x85b
+    field public static final int RRC_CONNECTION_ACCESS_STRATUM_FAILURE = 2137; // 0x859
+    field public static final int RRC_CONNECTION_ANOTHER_PROCEDURE_IN_PROGRESS = 2138; // 0x85a
+    field public static final int RRC_CONNECTION_CELL_NOT_CAMPED = 2144; // 0x860
+    field public static final int RRC_CONNECTION_CELL_RESELECTION = 2140; // 0x85c
+    field public static final int RRC_CONNECTION_CONFIG_FAILURE = 2141; // 0x85d
+    field public static final int RRC_CONNECTION_INVALID_REQUEST = 2168; // 0x878
+    field public static final int RRC_CONNECTION_LINK_FAILURE = 2143; // 0x85f
+    field public static final int RRC_CONNECTION_NORMAL_RELEASE = 2147; // 0x863
+    field public static final int RRC_CONNECTION_OUT_OF_SERVICE_DURING_CELL_REGISTER = 2150; // 0x866
+    field public static final int RRC_CONNECTION_RADIO_LINK_FAILURE = 2148; // 0x864
+    field public static final int RRC_CONNECTION_REESTABLISHMENT_FAILURE = 2149; // 0x865
+    field public static final int RRC_CONNECTION_REJECT_BY_NETWORK = 2146; // 0x862
+    field public static final int RRC_CONNECTION_RELEASED_SECURITY_NOT_ACTIVE = 2172; // 0x87c
+    field public static final int RRC_CONNECTION_RF_UNAVAILABLE = 2170; // 0x87a
+    field public static final int RRC_CONNECTION_SYSTEM_INFORMATION_BLOCK_READ_ERROR = 2152; // 0x868
+    field public static final int RRC_CONNECTION_SYSTEM_INTERVAL_FAILURE = 2145; // 0x861
+    field public static final int RRC_CONNECTION_TIMER_EXPIRED = 2142; // 0x85e
+    field public static final int RRC_CONNECTION_TRACKING_AREA_ID_CHANGED = 2169; // 0x879
+    field public static final int RRC_UPLINK_CONNECTION_RELEASE = 2134; // 0x856
+    field public static final int RRC_UPLINK_DATA_TRANSMISSION_FAILURE = 2132; // 0x854
+    field public static final int RRC_UPLINK_DELIVERY_FAILED_DUE_TO_HANDOVER = 2133; // 0x855
+    field public static final int RRC_UPLINK_ERROR_REQUEST_FROM_NAS = 2136; // 0x858
+    field public static final int RRC_UPLINK_RADIO_LINK_FAILURE = 2135; // 0x857
+    field public static final int RUIM_NOT_PRESENT = 2085; // 0x825
+    field public static final int SECURITY_MODE_REJECTED = 2186; // 0x88a
+    field public static final int SERVICE_NOT_ALLOWED_ON_PLMN = 2129; // 0x851
+    field public static final int SERVICE_OPTION_NOT_SUBSCRIBED = 33; // 0x21
+    field public static final int SERVICE_OPTION_NOT_SUPPORTED = 32; // 0x20
+    field public static final int SERVICE_OPTION_OUT_OF_ORDER = 34; // 0x22
+    field public static final int SIGNAL_LOST = -3; // 0xfffffffd
+    field public static final int SIM_CARD_CHANGED = 2043; // 0x7fb
+    field public static final int SYNCHRONIZATION_FAILURE = 2184; // 0x888
+    field public static final int TEST_LOOPBACK_REGULAR_DEACTIVATION = 2196; // 0x894
+    field public static final int TETHERED_CALL_ACTIVE = -6; // 0xfffffffa
+    field public static final int TFT_SEMANTIC_ERROR = 41; // 0x29
+    field public static final int TFT_SYTAX_ERROR = 42; // 0x2a
+    field public static final int THERMAL_EMERGENCY = 2090; // 0x82a
+    field public static final int THERMAL_MITIGATION = 2062; // 0x80e
+    field public static final int TRAT_SWAP_FAILED = 2048; // 0x800
+    field public static final int UE_INITIATED_DETACH_OR_DISCONNECT = 128; // 0x80
+    field public static final int UE_IS_ENTERING_POWERSAVE_MODE = 2226; // 0x8b2
+    field public static final int UE_RAT_CHANGE = 2105; // 0x839
+    field public static final int UE_SECURITY_CAPABILITIES_MISMATCH = 2185; // 0x889
+    field public static final int UMTS_HANDOVER_TO_IWLAN = 2199; // 0x897
+    field public static final int UMTS_REACTIVATION_REQ = 39; // 0x27
+    field public static final int UNACCEPTABLE_NETWORK_PARAMETER = 65538; // 0x10002
+    field public static final int UNACCEPTABLE_NON_EPS_AUTHENTICATION = 2187; // 0x88b
+    field public static final int UNKNOWN = 65536; // 0x10000
+    field public static final int UNKNOWN_INFO_ELEMENT = 99; // 0x63
+    field public static final int UNKNOWN_PDP_ADDRESS_TYPE = 28; // 0x1c
+    field public static final int UNKNOWN_PDP_CONTEXT = 43; // 0x2b
+    field public static final int UNPREFERRED_RAT = 2039; // 0x7f7
+    field public static final int UNSUPPORTED_1X_PREV = 2214; // 0x8a6
+    field public static final int UNSUPPORTED_APN_IN_CURRENT_PLMN = 66; // 0x42
+    field public static final int UNSUPPORTED_QCI_VALUE = 59; // 0x3b
+    field public static final int USER_AUTHENTICATION = 29; // 0x1d
+    field public static final int VSNCP_ADMINISTRATIVELY_PROHIBITED = 2245; // 0x8c5
+    field public static final int VSNCP_APN_UNAUTHORIZED = 2238; // 0x8be
+    field public static final int VSNCP_GEN_ERROR = 2237; // 0x8bd
+    field public static final int VSNCP_INSUFFICIENT_PARAMETERS = 2243; // 0x8c3
+    field public static final int VSNCP_NO_PDN_GATEWAY_ADDRESS = 2240; // 0x8c0
+    field public static final int VSNCP_PDN_EXISTS_FOR_THIS_APN = 2248; // 0x8c8
+    field public static final int VSNCP_PDN_GATEWAY_REJECT = 2242; // 0x8c2
+    field public static final int VSNCP_PDN_GATEWAY_UNREACHABLE = 2241; // 0x8c1
+    field public static final int VSNCP_PDN_ID_IN_USE = 2246; // 0x8c6
+    field public static final int VSNCP_PDN_LIMIT_EXCEEDED = 2239; // 0x8bf
+    field public static final int VSNCP_RECONNECT_NOT_ALLOWED = 2249; // 0x8c9
+    field public static final int VSNCP_RESOURCE_UNAVAILABLE = 2244; // 0x8c4
+    field public static final int VSNCP_SUBSCRIBER_LIMITATION = 2247; // 0x8c7
+    field public static final int VSNCP_TIMEOUT = 2236; // 0x8bc
+  }
+
+  public final class DisconnectCause {
+    field public static final int ALREADY_DIALING = 72; // 0x48
+    field public static final int ANSWERED_ELSEWHERE = 52; // 0x34
+    field public static final int BUSY = 4; // 0x4
+    field public static final int CALLING_DISABLED = 74; // 0x4a
+    field public static final int CALL_BARRED = 20; // 0x14
+    field public static final int CALL_PULLED = 51; // 0x33
+    field public static final int CANT_CALL_WHILE_RINGING = 73; // 0x49
+    field public static final int CDMA_ACCESS_BLOCKED = 35; // 0x23
+    field public static final int CDMA_ACCESS_FAILURE = 32; // 0x20
+    field public static final int CDMA_ALREADY_ACTIVATED = 49; // 0x31
+    field public static final int CDMA_DROP = 27; // 0x1b
+    field public static final int CDMA_INTERCEPT = 28; // 0x1c
+    field public static final int CDMA_LOCKED_UNTIL_POWER_CYCLE = 26; // 0x1a
+    field public static final int CDMA_NOT_EMERGENCY = 34; // 0x22
+    field public static final int CDMA_PREEMPTED = 33; // 0x21
+    field public static final int CDMA_REORDER = 29; // 0x1d
+    field public static final int CDMA_RETRY_ORDER = 31; // 0x1f
+    field public static final int CDMA_SO_REJECT = 30; // 0x1e
+    field public static final int CONGESTION = 5; // 0x5
+    field public static final int CS_RESTRICTED = 22; // 0x16
+    field public static final int CS_RESTRICTED_EMERGENCY = 24; // 0x18
+    field public static final int CS_RESTRICTED_NORMAL = 23; // 0x17
+    field public static final int DATA_DISABLED = 54; // 0x36
+    field public static final int DATA_LIMIT_REACHED = 55; // 0x37
+    field public static final int DIALED_CALL_FORWARDING_WHILE_ROAMING = 57; // 0x39
+    field public static final int DIALED_MMI = 39; // 0x27
+    field public static final int DIAL_LOW_BATTERY = 62; // 0x3e
+    field public static final int DIAL_MODIFIED_TO_DIAL = 48; // 0x30
+    field public static final int DIAL_MODIFIED_TO_DIAL_VIDEO = 66; // 0x42
+    field public static final int DIAL_MODIFIED_TO_SS = 47; // 0x2f
+    field public static final int DIAL_MODIFIED_TO_USSD = 46; // 0x2e
+    field public static final int DIAL_VIDEO_MODIFIED_TO_DIAL = 69; // 0x45
+    field public static final int DIAL_VIDEO_MODIFIED_TO_DIAL_VIDEO = 70; // 0x46
+    field public static final int DIAL_VIDEO_MODIFIED_TO_SS = 67; // 0x43
+    field public static final int DIAL_VIDEO_MODIFIED_TO_USSD = 68; // 0x44
+    field public static final int EMERGENCY_CALL_OVER_WFC_NOT_AVAILABLE = 78; // 0x4e
+    field public static final int EMERGENCY_PERM_FAILURE = 64; // 0x40
+    field public static final int EMERGENCY_TEMP_FAILURE = 63; // 0x3f
+    field public static final int ERROR_UNSPECIFIED = 36; // 0x24
+    field public static final int FDN_BLOCKED = 21; // 0x15
+    field public static final int ICC_ERROR = 19; // 0x13
+    field public static final int IMEI_NOT_ACCEPTED = 58; // 0x3a
+    field public static final int IMS_ACCESS_BLOCKED = 60; // 0x3c
+    field public static final int IMS_MERGED_SUCCESSFULLY = 45; // 0x2d
+    field public static final int IMS_SIP_ALTERNATE_EMERGENCY_CALL = 71; // 0x47
+    field public static final int INCOMING_AUTO_REJECTED = 81; // 0x51
+    field public static final int INCOMING_MISSED = 1; // 0x1
+    field public static final int INCOMING_REJECTED = 16; // 0x10
+    field public static final int INVALID_CREDENTIALS = 10; // 0xa
+    field public static final int INVALID_NUMBER = 7; // 0x7
+    field public static final int LIMIT_EXCEEDED = 15; // 0xf
+    field public static final int LOCAL = 3; // 0x3
+    field public static final int LOST_SIGNAL = 14; // 0xe
+    field public static final int LOW_BATTERY = 61; // 0x3d
+    field public static final int MAXIMUM_NUMBER_OF_CALLS_REACHED = 53; // 0x35
+    field public static final int MEDIA_TIMEOUT = 77; // 0x4d
+    field public static final int MMI = 6; // 0x6
+    field public static final int NORMAL = 2; // 0x2
+    field public static final int NORMAL_UNSPECIFIED = 65; // 0x41
+    field public static final int NOT_DISCONNECTED = 0; // 0x0
+    field public static final int NOT_VALID = -1; // 0xffffffff
+    field public static final int NO_PHONE_NUMBER_SUPPLIED = 38; // 0x26
+    field public static final int NUMBER_UNREACHABLE = 8; // 0x8
+    field public static final int OTASP_PROVISIONING_IN_PROCESS = 76; // 0x4c
+    field public static final int OUTGOING_CANCELED = 44; // 0x2c
+    field public static final int OUTGOING_EMERGENCY_CALL_PLACED = 80; // 0x50
+    field public static final int OUTGOING_FAILURE = 43; // 0x2b
+    field public static final int OUT_OF_NETWORK = 11; // 0xb
+    field public static final int OUT_OF_SERVICE = 18; // 0x12
+    field public static final int POWER_OFF = 17; // 0x11
+    field public static final int SERVER_ERROR = 12; // 0xc
+    field public static final int SERVER_UNREACHABLE = 9; // 0x9
+    field public static final int TIMED_OUT = 13; // 0xd
+    field public static final int TOO_MANY_ONGOING_CALLS = 75; // 0x4b
+    field public static final int UNOBTAINABLE_NUMBER = 25; // 0x19
+    field public static final int VIDEO_CALL_NOT_ALLOWED_WHILE_TTY_ENABLED = 50; // 0x32
+    field public static final int VOICEMAIL_NUMBER_MISSING = 40; // 0x28
+    field public static final int WFC_SERVICE_NOT_AVAILABLE_IN_THIS_LOCATION = 79; // 0x4f
+    field public static final int WIFI_LOST = 59; // 0x3b
+  }
+
+  public class IccOpenLogicalChannelResponse implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getChannel();
+    method public byte[] getSelectResponse();
+    method public int getStatus();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.IccOpenLogicalChannelResponse> CREATOR;
+    field public static final int INVALID_CHANNEL = -1; // 0xffffffff
+    field public static final int STATUS_MISSING_RESOURCE = 2; // 0x2
+    field public static final int STATUS_NO_ERROR = 1; // 0x1
+    field public static final int STATUS_NO_SUCH_ELEMENT = 3; // 0x3
+    field public static final int STATUS_UNKNOWN_ERROR = 4; // 0x4
+  }
+
+  public class MbmsDownloadSession implements java.lang.AutoCloseable {
+    method public void addProgressListener(@NonNull android.telephony.mbms.DownloadRequest, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.DownloadProgressListener);
+    method public void addServiceAnnouncement(@NonNull byte[]);
+    method public void addStatusListener(@NonNull android.telephony.mbms.DownloadRequest, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.DownloadStatusListener);
+    method public void cancelDownload(@NonNull android.telephony.mbms.DownloadRequest);
+    method public void close();
+    method public static android.telephony.MbmsDownloadSession create(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.MbmsDownloadSessionCallback);
+    method @Nullable public static android.telephony.MbmsDownloadSession create(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, int, @NonNull android.telephony.mbms.MbmsDownloadSessionCallback);
+    method public void download(@NonNull android.telephony.mbms.DownloadRequest);
+    method public static int getMaximumServiceAnnouncementSize();
+    method @Nullable public java.io.File getTempFileRootDirectory();
+    method @NonNull public java.util.List<android.telephony.mbms.DownloadRequest> listPendingDownloads();
+    method public void removeProgressListener(@NonNull android.telephony.mbms.DownloadRequest, @NonNull android.telephony.mbms.DownloadProgressListener);
+    method public void removeStatusListener(@NonNull android.telephony.mbms.DownloadRequest, @NonNull android.telephony.mbms.DownloadStatusListener);
+    method public void requestDownloadState(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo);
+    method public void requestUpdateFileServices(@NonNull java.util.List<java.lang.String>);
+    method public void resetDownloadKnowledge(android.telephony.mbms.DownloadRequest);
+    method public void setTempFileRootDirectory(@NonNull java.io.File);
+    field public static final String DEFAULT_TOP_LEVEL_TEMP_DIRECTORY = "androidMbmsTempFileRoot";
+    field public static final String EXTRA_MBMS_COMPLETED_FILE_URI = "android.telephony.extra.MBMS_COMPLETED_FILE_URI";
+    field public static final String EXTRA_MBMS_DOWNLOAD_REQUEST = "android.telephony.extra.MBMS_DOWNLOAD_REQUEST";
+    field public static final String EXTRA_MBMS_DOWNLOAD_RESULT = "android.telephony.extra.MBMS_DOWNLOAD_RESULT";
+    field public static final String EXTRA_MBMS_FILE_INFO = "android.telephony.extra.MBMS_FILE_INFO";
+    field public static final int RESULT_CANCELLED = 2; // 0x2
+    field public static final int RESULT_DOWNLOAD_FAILURE = 6; // 0x6
+    field public static final int RESULT_EXPIRED = 3; // 0x3
+    field public static final int RESULT_FILE_ROOT_UNREACHABLE = 8; // 0x8
+    field public static final int RESULT_IO_ERROR = 4; // 0x4
+    field public static final int RESULT_OUT_OF_STORAGE = 7; // 0x7
+    field public static final int RESULT_SERVICE_ID_NOT_DEFINED = 5; // 0x5
+    field public static final int RESULT_SUCCESSFUL = 1; // 0x1
+    field public static final int STATUS_ACTIVELY_DOWNLOADING = 1; // 0x1
+    field public static final int STATUS_PENDING_DOWNLOAD = 2; // 0x2
+    field public static final int STATUS_PENDING_DOWNLOAD_WINDOW = 4; // 0x4
+    field public static final int STATUS_PENDING_REPAIR = 3; // 0x3
+    field public static final int STATUS_UNKNOWN = 0; // 0x0
+  }
+
+  public class MbmsGroupCallSession implements java.lang.AutoCloseable {
+    method public void close();
+    method @Nullable public static android.telephony.MbmsGroupCallSession create(@NonNull android.content.Context, int, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.MbmsGroupCallSessionCallback);
+    method @Nullable public static android.telephony.MbmsGroupCallSession create(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.MbmsGroupCallSessionCallback);
+    method @Nullable public android.telephony.mbms.GroupCall startGroupCall(long, @NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.lang.Integer>, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.GroupCallCallback);
+  }
+
+  public class MbmsStreamingSession implements java.lang.AutoCloseable {
+    method public void close();
+    method @Nullable public static android.telephony.MbmsStreamingSession create(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, int, @NonNull android.telephony.mbms.MbmsStreamingSessionCallback);
+    method public static android.telephony.MbmsStreamingSession create(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.MbmsStreamingSessionCallback);
+    method public void requestUpdateStreamingServices(java.util.List<java.lang.String>);
+    method @Nullable public android.telephony.mbms.StreamingService startStreaming(android.telephony.mbms.StreamingServiceInfo, @NonNull java.util.concurrent.Executor, android.telephony.mbms.StreamingServiceCallback);
+  }
+
+  @Deprecated public class NeighboringCellInfo implements android.os.Parcelable {
+    ctor @Deprecated public NeighboringCellInfo();
+    ctor @Deprecated public NeighboringCellInfo(int, int);
+    ctor @Deprecated public NeighboringCellInfo(int, String, int);
+    ctor @Deprecated public NeighboringCellInfo(android.os.Parcel);
+    method @Deprecated public int describeContents();
+    method @Deprecated public int getCid();
+    method @Deprecated public int getLac();
+    method @Deprecated public int getNetworkType();
+    method @Deprecated public int getPsc();
+    method @Deprecated public int getRssi();
+    method @Deprecated public void setCid(int);
+    method @Deprecated public void setRssi(int);
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.telephony.NeighboringCellInfo> CREATOR;
+    field @Deprecated public static final int UNKNOWN_CID = -1; // 0xffffffff
+    field @Deprecated public static final int UNKNOWN_RSSI = 99; // 0x63
+  }
+
+  public final class NetworkRegistrationInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getAccessNetworkTechnology();
+    method @NonNull public java.util.List<java.lang.Integer> getAvailableServices();
+    method @Nullable public android.telephony.CellIdentity getCellIdentity();
+    method public int getDomain();
+    method public int getNrState();
+    method @Nullable public String getRegisteredPlmn();
+    method public int getTransportType();
+    method public boolean isRegistered();
+    method public boolean isRoaming();
+    method public boolean isSearching();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.NetworkRegistrationInfo> CREATOR;
+    field public static final int DOMAIN_CS = 1; // 0x1
+    field public static final int DOMAIN_CS_PS = 3; // 0x3
+    field public static final int DOMAIN_PS = 2; // 0x2
+    field public static final int DOMAIN_UNKNOWN = 0; // 0x0
+    field public static final int NR_STATE_CONNECTED = 3; // 0x3
+    field public static final int NR_STATE_NONE = 0; // 0x0
+    field public static final int NR_STATE_NOT_RESTRICTED = 2; // 0x2
+    field public static final int NR_STATE_RESTRICTED = 1; // 0x1
+    field public static final int SERVICE_TYPE_DATA = 2; // 0x2
+    field public static final int SERVICE_TYPE_EMERGENCY = 5; // 0x5
+    field public static final int SERVICE_TYPE_SMS = 3; // 0x3
+    field public static final int SERVICE_TYPE_UNKNOWN = 0; // 0x0
+    field public static final int SERVICE_TYPE_VIDEO = 4; // 0x4
+    field public static final int SERVICE_TYPE_VOICE = 1; // 0x1
+  }
+
+  public class NetworkScan {
+    method public void stopScan();
+    field public static final int ERROR_INTERRUPTED = 10002; // 0x2712
+    field public static final int ERROR_INVALID_SCAN = 2; // 0x2
+    field public static final int ERROR_INVALID_SCANID = 10001; // 0x2711
+    field public static final int ERROR_MODEM_ERROR = 1; // 0x1
+    field public static final int ERROR_MODEM_UNAVAILABLE = 3; // 0x3
+    field public static final int ERROR_RADIO_INTERFACE_ERROR = 10000; // 0x2710
+    field public static final int ERROR_UNSUPPORTED = 4; // 0x4
+    field public static final int SUCCESS = 0; // 0x0
+  }
+
+  public final class NetworkScanRequest implements android.os.Parcelable {
+    ctor public NetworkScanRequest(int, android.telephony.RadioAccessSpecifier[], int, int, boolean, int, java.util.ArrayList<java.lang.String>);
+    method public int describeContents();
+    method public boolean getIncrementalResults();
+    method public int getIncrementalResultsPeriodicity();
+    method public int getMaxSearchTime();
+    method public java.util.ArrayList<java.lang.String> getPlmns();
+    method public int getScanType();
+    method public int getSearchPeriodicity();
+    method public android.telephony.RadioAccessSpecifier[] getSpecifiers();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.NetworkScanRequest> CREATOR;
+    field public static final int SCAN_TYPE_ONE_SHOT = 0; // 0x0
+    field public static final int SCAN_TYPE_PERIODIC = 1; // 0x1
+  }
+
+  public class PhoneNumberFormattingTextWatcher implements android.text.TextWatcher {
+    ctor public PhoneNumberFormattingTextWatcher();
+    ctor public PhoneNumberFormattingTextWatcher(String);
+    method public void afterTextChanged(android.text.Editable);
+    method public void beforeTextChanged(CharSequence, int, int, int);
+    method public void onTextChanged(CharSequence, int, int, int);
+  }
+
+  public class PhoneNumberUtils {
+    ctor public PhoneNumberUtils();
+    method public static void addTtsSpan(android.text.Spannable, int, int);
+    method @Deprecated public static String calledPartyBCDFragmentToString(byte[], int, int);
+    method public static String calledPartyBCDFragmentToString(byte[], int, int, int);
+    method @Deprecated public static String calledPartyBCDToString(byte[], int, int);
+    method public static String calledPartyBCDToString(byte[], int, int, int);
+    method public static boolean compare(String, String);
+    method public static boolean compare(android.content.Context, String, String);
+    method public static String convertKeypadLettersToDigits(String);
+    method public static android.text.style.TtsSpan createTtsSpan(String);
+    method public static CharSequence createTtsSpannable(CharSequence);
+    method public static String extractNetworkPortion(String);
+    method public static String extractPostDialPortion(String);
+    method @Deprecated public static void formatJapaneseNumber(android.text.Editable);
+    method @Deprecated public static void formatNanpNumber(android.text.Editable);
+    method @Deprecated public static String formatNumber(String);
+    method @Deprecated public static void formatNumber(android.text.Editable, int);
+    method public static String formatNumber(String, String);
+    method public static String formatNumber(String, String, String);
+    method public static String formatNumberToE164(String, String);
+    method public static String formatNumberToRFC3966(String, String);
+    method @Deprecated public static int getFormatTypeForLocale(java.util.Locale);
+    method public static String getNumberFromIntent(android.content.Intent, android.content.Context);
+    method public static String getStrippedReversed(String);
+    method public static final boolean is12Key(char);
+    method public static final boolean isDialable(char);
+    method @Deprecated public static boolean isEmergencyNumber(String);
+    method public static boolean isGlobalPhoneNumber(String);
+    method public static boolean isISODigit(char);
+    method @Deprecated public static boolean isLocalEmergencyNumber(android.content.Context, String);
+    method public static final boolean isNonSeparator(char);
+    method public static final boolean isReallyDialable(char);
+    method public static final boolean isStartsPostDial(char);
+    method public static boolean isVoiceMailNumber(String);
+    method public static boolean isWellFormedSmsAddress(String);
+    method public static byte[] networkPortionToCalledPartyBCD(String);
+    method public static byte[] networkPortionToCalledPartyBCDWithLength(String);
+    method public static String normalizeNumber(String);
+    method @Deprecated public static byte[] numberToCalledPartyBCD(String);
+    method public static byte[] numberToCalledPartyBCD(String, int);
+    method public static String replaceUnicodeDigits(String);
+    method public static String stringFromStringAndTOA(String, int);
+    method public static String stripSeparators(String);
+    method public static String toCallerIDMinMatch(String);
+    method public static int toaFromString(String);
+    field public static final int BCD_EXTENDED_TYPE_CALLED_PARTY = 2; // 0x2
+    field public static final int BCD_EXTENDED_TYPE_EF_ADN = 1; // 0x1
+    field public static final int FORMAT_JAPAN = 2; // 0x2
+    field public static final int FORMAT_NANP = 1; // 0x1
+    field public static final int FORMAT_UNKNOWN = 0; // 0x0
+    field public static final char PAUSE = 44; // 0x002c ','
+    field public static final int TOA_International = 145; // 0x91
+    field public static final int TOA_Unknown = 129; // 0x81
+    field public static final char WAIT = 59; // 0x003b ';'
+    field public static final char WILD = 78; // 0x004e 'N'
+  }
+
+  public class PhoneStateListener {
+    ctor public PhoneStateListener();
+    ctor public PhoneStateListener(@NonNull java.util.concurrent.Executor);
+    method public void onActiveDataSubscriptionIdChanged(int);
+    method public void onBarringInfoChanged(@NonNull android.telephony.BarringInfo);
+    method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onCallDisconnectCauseChanged(int, int);
+    method public void onCallForwardingIndicatorChanged(boolean);
+    method public void onCallStateChanged(int, String);
+    method public void onCellInfoChanged(java.util.List<android.telephony.CellInfo>);
+    method public void onCellLocationChanged(android.telephony.CellLocation);
+    method public void onDataActivity(int);
+    method public void onDataConnectionStateChanged(int);
+    method public void onDataConnectionStateChanged(int, int);
+    method @RequiresPermission("android.permission.READ_PHONE_STATE") public void onDisplayInfoChanged(@NonNull android.telephony.TelephonyDisplayInfo);
+    method public void onEmergencyNumberListChanged(@NonNull java.util.Map<java.lang.Integer,java.util.List<android.telephony.emergency.EmergencyNumber>>);
+    method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onImsCallDisconnectCauseChanged(@NonNull android.telephony.ims.ImsReasonInfo);
+    method public void onMessageWaitingIndicatorChanged(boolean);
+    method @RequiresPermission("android.permission.MODIFY_PHONE_STATE") public void onPreciseDataConnectionStateChanged(@NonNull android.telephony.PreciseDataConnectionState);
+    method public void onRegistrationFailed(@NonNull android.telephony.CellIdentity, @NonNull String, int, int, int);
+    method public void onServiceStateChanged(android.telephony.ServiceState);
+    method @Deprecated public void onSignalStrengthChanged(int);
+    method public void onSignalStrengthsChanged(android.telephony.SignalStrength);
+    method public void onUserMobileDataStateChanged(boolean);
+    field public static final int LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE = 4194304; // 0x400000
+    field @RequiresPermission(android.Manifest.permission.READ_PRECISE_PHONE_STATE) public static final int LISTEN_BARRING_INFO = -2147483648; // 0x80000000
+    field @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public static final int LISTEN_CALL_DISCONNECT_CAUSES = 33554432; // 0x2000000
+    field public static final int LISTEN_CALL_FORWARDING_INDICATOR = 8; // 0x8
+    field public static final int LISTEN_CALL_STATE = 32; // 0x20
+    field public static final int LISTEN_CELL_INFO = 1024; // 0x400
+    field public static final int LISTEN_CELL_LOCATION = 16; // 0x10
+    field public static final int LISTEN_DATA_ACTIVITY = 128; // 0x80
+    field public static final int LISTEN_DATA_CONNECTION_STATE = 64; // 0x40
+    field public static final int LISTEN_DISPLAY_INFO_CHANGED = 1048576; // 0x100000
+    field public static final int LISTEN_EMERGENCY_NUMBER_LIST = 16777216; // 0x1000000
+    field @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public static final int LISTEN_IMS_CALL_DISCONNECT_CAUSES = 134217728; // 0x8000000
+    field public static final int LISTEN_MESSAGE_WAITING_INDICATOR = 4; // 0x4
+    field public static final int LISTEN_NONE = 0; // 0x0
+    field @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public static final int LISTEN_PRECISE_DATA_CONNECTION_STATE = 4096; // 0x1000
+    field @RequiresPermission(android.Manifest.permission.READ_PRECISE_PHONE_STATE) public static final int LISTEN_REGISTRATION_FAILURE = 1073741824; // 0x40000000
+    field public static final int LISTEN_SERVICE_STATE = 1; // 0x1
+    field @Deprecated public static final int LISTEN_SIGNAL_STRENGTH = 2; // 0x2
+    field public static final int LISTEN_SIGNAL_STRENGTHS = 256; // 0x100
+    field public static final int LISTEN_USER_MOBILE_DATA_STATE = 524288; // 0x80000
+  }
+
+  public final class PreciseDataConnectionState implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public android.telephony.data.ApnSetting getApnSetting();
+    method public int getLastCauseCode();
+    method @Nullable public android.net.LinkProperties getLinkProperties();
+    method public int getNetworkType();
+    method public int getState();
+    method public int getTransportType();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.PreciseDataConnectionState> CREATOR;
+  }
+
+  public final class RadioAccessSpecifier implements android.os.Parcelable {
+    ctor public RadioAccessSpecifier(int, int[], int[]);
+    method public int describeContents();
+    method public int[] getBands();
+    method public int[] getChannels();
+    method public int getRadioAccessNetwork();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.RadioAccessSpecifier> CREATOR;
+  }
+
+  public class ServiceState implements android.os.Parcelable {
+    ctor public ServiceState();
+    ctor public ServiceState(android.telephony.ServiceState);
+    ctor @Deprecated public ServiceState(android.os.Parcel);
+    method protected void copyFrom(android.telephony.ServiceState);
+    method public int describeContents();
+    method public int getCdmaNetworkId();
+    method public int getCdmaSystemId();
+    method public int[] getCellBandwidths();
+    method public int getChannelNumber();
+    method public int getDuplexMode();
+    method public boolean getIsManualSelection();
+    method @NonNull public java.util.List<android.telephony.NetworkRegistrationInfo> getNetworkRegistrationInfoList();
+    method public String getOperatorAlphaLong();
+    method public String getOperatorAlphaShort();
+    method public String getOperatorNumeric();
+    method public boolean getRoaming();
+    method public int getState();
+    method public boolean isSearching();
+    method public void setIsManualSelection(boolean);
+    method public void setOperatorName(String, String, String);
+    method public void setRoaming(boolean);
+    method public void setState(int);
+    method public void setStateOff();
+    method public void setStateOutOfService();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ServiceState> CREATOR;
+    field public static final int DUPLEX_MODE_FDD = 1; // 0x1
+    field public static final int DUPLEX_MODE_TDD = 2; // 0x2
+    field public static final int DUPLEX_MODE_UNKNOWN = 0; // 0x0
+    field public static final int STATE_EMERGENCY_ONLY = 2; // 0x2
+    field public static final int STATE_IN_SERVICE = 0; // 0x0
+    field public static final int STATE_OUT_OF_SERVICE = 1; // 0x1
+    field public static final int STATE_POWER_OFF = 3; // 0x3
+    field public static final int UNKNOWN_ID = -1; // 0xffffffff
+  }
+
+  public class SignalStrength implements android.os.Parcelable {
+    ctor public SignalStrength(@NonNull android.telephony.SignalStrength);
+    method public int describeContents();
+    method @Deprecated public int getCdmaDbm();
+    method @Deprecated public int getCdmaEcio();
+    method @NonNull public java.util.List<android.telephony.CellSignalStrength> getCellSignalStrengths();
+    method @NonNull public <T extends android.telephony.CellSignalStrength> java.util.List<T> getCellSignalStrengths(@NonNull Class<T>);
+    method @Deprecated public int getEvdoDbm();
+    method @Deprecated public int getEvdoEcio();
+    method @Deprecated public int getEvdoSnr();
+    method @Deprecated public int getGsmBitErrorRate();
+    method @Deprecated public int getGsmSignalStrength();
+    method public int getLevel();
+    method public long getTimestampMillis();
+    method @Deprecated public boolean isGsm();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SignalStrength> CREATOR;
+    field public static final int INVALID = 2147483647; // 0x7fffffff
+  }
+
+  public final class SmsManager {
+    method public String createAppSpecificSmsToken(android.app.PendingIntent);
+    method @Nullable public String createAppSpecificSmsTokenWithPackageInfo(@Nullable String, @NonNull android.app.PendingIntent);
+    method public java.util.ArrayList<java.lang.String> divideMessage(String);
+    method public void downloadMultimediaMessage(android.content.Context, String, android.net.Uri, android.os.Bundle, android.app.PendingIntent);
+    method @NonNull public android.os.Bundle getCarrierConfigValues();
+    method public static android.telephony.SmsManager getDefault();
+    method public static int getDefaultSmsSubscriptionId();
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getSmsCapacityOnIcc();
+    method public static android.telephony.SmsManager getSmsManagerForSubscriptionId(int);
+    method @RequiresPermission(android.Manifest.permission.SMS_FINANCIAL_TRANSACTIONS) public void getSmsMessagesForFinancialApp(android.os.Bundle, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.SmsManager.FinancialSmsCallback);
+    method @Nullable @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getSmscAddress();
+    method public int getSubscriptionId();
+    method public void injectSmsPdu(byte[], String, android.app.PendingIntent);
+    method public void sendDataMessage(String, String, short, byte[], android.app.PendingIntent, android.app.PendingIntent);
+    method public void sendMultimediaMessage(android.content.Context, android.net.Uri, String, android.os.Bundle, android.app.PendingIntent);
+    method public void sendMultipartTextMessage(String, String, java.util.ArrayList<java.lang.String>, java.util.ArrayList<android.app.PendingIntent>, java.util.ArrayList<android.app.PendingIntent>);
+    method public void sendMultipartTextMessage(@NonNull String, @Nullable String, @NonNull java.util.List<java.lang.String>, @Nullable java.util.List<android.app.PendingIntent>, @Nullable java.util.List<android.app.PendingIntent>, long);
+    method public void sendMultipartTextMessage(@NonNull String, @Nullable String, @NonNull java.util.List<java.lang.String>, @Nullable java.util.List<android.app.PendingIntent>, @Nullable java.util.List<android.app.PendingIntent>, @NonNull String, @Nullable String);
+    method public void sendTextMessage(String, String, String, android.app.PendingIntent, android.app.PendingIntent);
+    method public void sendTextMessage(@NonNull String, @Nullable String, @NonNull String, @Nullable android.app.PendingIntent, @Nullable android.app.PendingIntent, long);
+    method @RequiresPermission(allOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.SEND_SMS}) public void sendTextMessageWithoutPersisting(String, String, String, android.app.PendingIntent, android.app.PendingIntent);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setSmscAddress(@NonNull String);
+    field public static final String EXTRA_MMS_DATA = "android.telephony.extra.MMS_DATA";
+    field public static final String EXTRA_MMS_HTTP_STATUS = "android.telephony.extra.MMS_HTTP_STATUS";
+    field public static final String MMS_CONFIG_ALIAS_ENABLED = "aliasEnabled";
+    field public static final String MMS_CONFIG_ALIAS_MAX_CHARS = "aliasMaxChars";
+    field public static final String MMS_CONFIG_ALIAS_MIN_CHARS = "aliasMinChars";
+    field public static final String MMS_CONFIG_ALLOW_ATTACH_AUDIO = "allowAttachAudio";
+    field public static final String MMS_CONFIG_APPEND_TRANSACTION_ID = "enabledTransID";
+    field public static final String MMS_CONFIG_EMAIL_GATEWAY_NUMBER = "emailGatewayNumber";
+    field public static final String MMS_CONFIG_GROUP_MMS_ENABLED = "enableGroupMms";
+    field public static final String MMS_CONFIG_HTTP_PARAMS = "httpParams";
+    field public static final String MMS_CONFIG_HTTP_SOCKET_TIMEOUT = "httpSocketTimeout";
+    field public static final String MMS_CONFIG_MAX_IMAGE_HEIGHT = "maxImageHeight";
+    field public static final String MMS_CONFIG_MAX_IMAGE_WIDTH = "maxImageWidth";
+    field public static final String MMS_CONFIG_MAX_MESSAGE_SIZE = "maxMessageSize";
+    field public static final String MMS_CONFIG_MESSAGE_TEXT_MAX_SIZE = "maxMessageTextSize";
+    field public static final String MMS_CONFIG_MMS_DELIVERY_REPORT_ENABLED = "enableMMSDeliveryReports";
+    field public static final String MMS_CONFIG_MMS_ENABLED = "enabledMMS";
+    field public static final String MMS_CONFIG_MMS_READ_REPORT_ENABLED = "enableMMSReadReports";
+    field public static final String MMS_CONFIG_MULTIPART_SMS_ENABLED = "enableMultipartSMS";
+    field public static final String MMS_CONFIG_NAI_SUFFIX = "naiSuffix";
+    field public static final String MMS_CONFIG_NOTIFY_WAP_MMSC_ENABLED = "enabledNotifyWapMMSC";
+    field public static final String MMS_CONFIG_RECIPIENT_LIMIT = "recipientLimit";
+    field public static final String MMS_CONFIG_SEND_MULTIPART_SMS_AS_SEPARATE_MESSAGES = "sendMultipartSmsAsSeparateMessages";
+    field public static final String MMS_CONFIG_SHOW_CELL_BROADCAST_APP_LINKS = "config_cellBroadcastAppLinks";
+    field public static final String MMS_CONFIG_SMS_DELIVERY_REPORT_ENABLED = "enableSMSDeliveryReports";
+    field public static final String MMS_CONFIG_SMS_TO_MMS_TEXT_LENGTH_THRESHOLD = "smsToMmsTextLengthThreshold";
+    field public static final String MMS_CONFIG_SMS_TO_MMS_TEXT_THRESHOLD = "smsToMmsTextThreshold";
+    field public static final String MMS_CONFIG_SUBJECT_MAX_LENGTH = "maxSubjectLength";
+    field public static final String MMS_CONFIG_SUPPORT_HTTP_CHARSET_HEADER = "supportHttpCharsetHeader";
+    field public static final String MMS_CONFIG_SUPPORT_MMS_CONTENT_DISPOSITION = "supportMmsContentDisposition";
+    field public static final String MMS_CONFIG_UA_PROF_TAG_NAME = "uaProfTagName";
+    field public static final String MMS_CONFIG_UA_PROF_URL = "uaProfUrl";
+    field public static final String MMS_CONFIG_USER_AGENT = "userAgent";
+    field public static final int MMS_ERROR_CONFIGURATION_ERROR = 7; // 0x7
+    field public static final int MMS_ERROR_HTTP_FAILURE = 4; // 0x4
+    field public static final int MMS_ERROR_INVALID_APN = 2; // 0x2
+    field public static final int MMS_ERROR_IO_ERROR = 5; // 0x5
+    field public static final int MMS_ERROR_NO_DATA_NETWORK = 8; // 0x8
+    field public static final int MMS_ERROR_RETRY = 6; // 0x6
+    field public static final int MMS_ERROR_UNABLE_CONNECT_MMS = 3; // 0x3
+    field public static final int MMS_ERROR_UNSPECIFIED = 1; // 0x1
+    field public static final int RESULT_BLUETOOTH_DISCONNECTED = 27; // 0x1b
+    field public static final int RESULT_CANCELLED = 23; // 0x17
+    field public static final int RESULT_ENCODING_ERROR = 18; // 0x12
+    field public static final int RESULT_ERROR_FDN_CHECK_FAILURE = 6; // 0x6
+    field public static final int RESULT_ERROR_GENERIC_FAILURE = 1; // 0x1
+    field public static final int RESULT_ERROR_LIMIT_EXCEEDED = 5; // 0x5
+    field public static final int RESULT_ERROR_NONE = 0; // 0x0
+    field public static final int RESULT_ERROR_NO_SERVICE = 4; // 0x4
+    field public static final int RESULT_ERROR_NULL_PDU = 3; // 0x3
+    field public static final int RESULT_ERROR_RADIO_OFF = 2; // 0x2
+    field public static final int RESULT_ERROR_SHORT_CODE_NEVER_ALLOWED = 8; // 0x8
+    field public static final int RESULT_ERROR_SHORT_CODE_NOT_ALLOWED = 7; // 0x7
+    field public static final int RESULT_INTERNAL_ERROR = 21; // 0x15
+    field public static final int RESULT_INVALID_ARGUMENTS = 11; // 0xb
+    field public static final int RESULT_INVALID_BLUETOOTH_ADDRESS = 26; // 0x1a
+    field public static final int RESULT_INVALID_SMSC_ADDRESS = 19; // 0x13
+    field public static final int RESULT_INVALID_SMS_FORMAT = 14; // 0xe
+    field public static final int RESULT_INVALID_STATE = 12; // 0xc
+    field public static final int RESULT_MODEM_ERROR = 16; // 0x10
+    field public static final int RESULT_NETWORK_ERROR = 17; // 0x11
+    field public static final int RESULT_NETWORK_REJECT = 10; // 0xa
+    field public static final int RESULT_NO_BLUETOOTH_SERVICE = 25; // 0x19
+    field public static final int RESULT_NO_DEFAULT_SMS_APP = 32; // 0x20
+    field public static final int RESULT_NO_MEMORY = 13; // 0xd
+    field public static final int RESULT_NO_RESOURCES = 22; // 0x16
+    field public static final int RESULT_OPERATION_NOT_ALLOWED = 20; // 0x14
+    field public static final int RESULT_RADIO_NOT_AVAILABLE = 9; // 0x9
+    field public static final int RESULT_RECEIVE_DISPATCH_FAILURE = 500; // 0x1f4
+    field public static final int RESULT_RECEIVE_INJECTED_NULL_PDU = 501; // 0x1f5
+    field public static final int RESULT_RECEIVE_NULL_MESSAGE_FROM_RIL = 503; // 0x1f7
+    field public static final int RESULT_RECEIVE_RUNTIME_EXCEPTION = 502; // 0x1f6
+    field public static final int RESULT_RECEIVE_SQL_EXCEPTION = 505; // 0x1f9
+    field public static final int RESULT_RECEIVE_URI_EXCEPTION = 506; // 0x1fa
+    field public static final int RESULT_RECEIVE_WHILE_ENCRYPTED = 504; // 0x1f8
+    field public static final int RESULT_REMOTE_EXCEPTION = 31; // 0x1f
+    field public static final int RESULT_REQUEST_NOT_SUPPORTED = 24; // 0x18
+    field public static final int RESULT_RIL_ACCESS_BARRED = 122; // 0x7a
+    field public static final int RESULT_RIL_BLOCKED_DUE_TO_CALL = 123; // 0x7b
+    field public static final int RESULT_RIL_CANCELLED = 119; // 0x77
+    field public static final int RESULT_RIL_ENCODING_ERR = 109; // 0x6d
+    field public static final int RESULT_RIL_INTERNAL_ERR = 113; // 0x71
+    field public static final int RESULT_RIL_INVALID_ARGUMENTS = 104; // 0x68
+    field public static final int RESULT_RIL_INVALID_MODEM_STATE = 115; // 0x73
+    field public static final int RESULT_RIL_INVALID_SMSC_ADDRESS = 110; // 0x6e
+    field public static final int RESULT_RIL_INVALID_SMS_FORMAT = 107; // 0x6b
+    field public static final int RESULT_RIL_INVALID_STATE = 103; // 0x67
+    field public static final int RESULT_RIL_MODEM_ERR = 111; // 0x6f
+    field public static final int RESULT_RIL_NETWORK_ERR = 112; // 0x70
+    field public static final int RESULT_RIL_NETWORK_NOT_READY = 116; // 0x74
+    field public static final int RESULT_RIL_NETWORK_REJECT = 102; // 0x66
+    field public static final int RESULT_RIL_NO_MEMORY = 105; // 0x69
+    field public static final int RESULT_RIL_NO_RESOURCES = 118; // 0x76
+    field public static final int RESULT_RIL_OPERATION_NOT_ALLOWED = 117; // 0x75
+    field public static final int RESULT_RIL_RADIO_NOT_AVAILABLE = 100; // 0x64
+    field public static final int RESULT_RIL_REQUEST_NOT_SUPPORTED = 114; // 0x72
+    field public static final int RESULT_RIL_REQUEST_RATE_LIMITED = 106; // 0x6a
+    field public static final int RESULT_RIL_SIMULTANEOUS_SMS_AND_CALL_NOT_ALLOWED = 121; // 0x79
+    field public static final int RESULT_RIL_SIM_ABSENT = 120; // 0x78
+    field public static final int RESULT_RIL_SMS_SEND_FAIL_RETRY = 101; // 0x65
+    field public static final int RESULT_RIL_SYSTEM_ERR = 108; // 0x6c
+    field public static final int RESULT_SMS_BLOCKED_DURING_EMERGENCY = 29; // 0x1d
+    field public static final int RESULT_SMS_SEND_RETRY_FAILED = 30; // 0x1e
+    field public static final int RESULT_SYSTEM_ERROR = 15; // 0xf
+    field public static final int RESULT_UNEXPECTED_EVENT_STOP_SENDING = 28; // 0x1c
+    field public static final int STATUS_ON_ICC_FREE = 0; // 0x0
+    field public static final int STATUS_ON_ICC_READ = 1; // 0x1
+    field public static final int STATUS_ON_ICC_SENT = 5; // 0x5
+    field public static final int STATUS_ON_ICC_UNREAD = 3; // 0x3
+    field public static final int STATUS_ON_ICC_UNSENT = 7; // 0x7
+  }
+
+  public abstract static class SmsManager.FinancialSmsCallback {
+    ctor public SmsManager.FinancialSmsCallback();
+    method public abstract void onFinancialSmsMessages(android.database.CursorWindow);
+  }
+
+  public class SmsMessage {
+    method public static int[] calculateLength(CharSequence, boolean);
+    method public static int[] calculateLength(String, boolean);
+    method @Deprecated public static android.telephony.SmsMessage createFromPdu(byte[]);
+    method public static android.telephony.SmsMessage createFromPdu(byte[], String);
+    method @Nullable public static android.telephony.SmsMessage createSmsSubmitPdu(@NonNull byte[], boolean);
+    method public String getDisplayMessageBody();
+    method public String getDisplayOriginatingAddress();
+    method public String getEmailBody();
+    method public String getEmailFrom();
+    method public int getIndexOnIcc();
+    method @Deprecated public int getIndexOnSim();
+    method public String getMessageBody();
+    method public android.telephony.SmsMessage.MessageClass getMessageClass();
+    method @Nullable public String getOriginatingAddress();
+    method public byte[] getPdu();
+    method public int getProtocolIdentifier();
+    method public String getPseudoSubject();
+    method public String getServiceCenterAddress();
+    method public int getStatus();
+    method public int getStatusOnIcc();
+    method @Deprecated public int getStatusOnSim();
+    method public static android.telephony.SmsMessage.SubmitPdu getSubmitPdu(String, String, String, boolean);
+    method public static android.telephony.SmsMessage.SubmitPdu getSubmitPdu(String, String, short, byte[], boolean);
+    method public static int getTPLayerLengthForPDU(String);
+    method public long getTimestampMillis();
+    method public byte[] getUserData();
+    method public boolean isCphsMwiMessage();
+    method public boolean isEmail();
+    method public boolean isMWIClearMessage();
+    method public boolean isMWISetMessage();
+    method public boolean isMwiDontStore();
+    method public boolean isReplace();
+    method public boolean isReplyPathPresent();
+    method public boolean isStatusReportMessage();
+    field public static final int ENCODING_16BIT = 3; // 0x3
+    field public static final int ENCODING_7BIT = 1; // 0x1
+    field public static final int ENCODING_8BIT = 2; // 0x2
+    field public static final int ENCODING_UNKNOWN = 0; // 0x0
+    field public static final String FORMAT_3GPP = "3gpp";
+    field public static final String FORMAT_3GPP2 = "3gpp2";
+    field public static final int MAX_USER_DATA_BYTES = 140; // 0x8c
+    field public static final int MAX_USER_DATA_BYTES_WITH_HEADER = 134; // 0x86
+    field public static final int MAX_USER_DATA_SEPTETS = 160; // 0xa0
+    field public static final int MAX_USER_DATA_SEPTETS_WITH_HEADER = 153; // 0x99
+  }
+
+  public enum SmsMessage.MessageClass {
+    enum_constant public static final android.telephony.SmsMessage.MessageClass CLASS_0;
+    enum_constant public static final android.telephony.SmsMessage.MessageClass CLASS_1;
+    enum_constant public static final android.telephony.SmsMessage.MessageClass CLASS_2;
+    enum_constant public static final android.telephony.SmsMessage.MessageClass CLASS_3;
+    enum_constant public static final android.telephony.SmsMessage.MessageClass UNKNOWN;
+  }
+
+  public static class SmsMessage.SubmitPdu {
+    field public byte[] encodedMessage;
+    field public byte[] encodedScAddress;
+  }
+
+  public class SubscriptionInfo implements android.os.Parcelable {
+    method public android.graphics.Bitmap createIconBitmap(android.content.Context);
+    method public int describeContents();
+    method public int getCardId();
+    method public int getCarrierId();
+    method public CharSequence getCarrierName();
+    method public String getCountryIso();
+    method public int getDataRoaming();
+    method public CharSequence getDisplayName();
+    method @Nullable public android.os.ParcelUuid getGroupUuid();
+    method public String getIccId();
+    method public int getIconTint();
+    method @Deprecated public int getMcc();
+    method @Nullable public String getMccString();
+    method @Deprecated public int getMnc();
+    method @Nullable public String getMncString();
+    method public String getNumber();
+    method public int getSimSlotIndex();
+    method public int getSubscriptionId();
+    method public int getSubscriptionType();
+    method public boolean isEmbedded();
+    method public boolean isOpportunistic();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SubscriptionInfo> CREATOR;
+  }
+
+  public class SubscriptionManager {
+    method public void addOnOpportunisticSubscriptionsChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.SubscriptionManager.OnOpportunisticSubscriptionsChangedListener);
+    method @Deprecated public void addOnSubscriptionsChangedListener(android.telephony.SubscriptionManager.OnSubscriptionsChangedListener);
+    method public void addOnSubscriptionsChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.SubscriptionManager.OnSubscriptionsChangedListener);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void addSubscriptionsIntoGroup(@NonNull java.util.List<java.lang.Integer>, @NonNull android.os.ParcelUuid);
+    method public boolean canManageSubscription(android.telephony.SubscriptionInfo);
+    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.os.ParcelUuid createSubscriptionGroup(@NonNull java.util.List<java.lang.Integer>);
+    method @Deprecated public static android.telephony.SubscriptionManager from(android.content.Context);
+    method public java.util.List<android.telephony.SubscriptionInfo> getAccessibleSubscriptionInfoList();
+    method public static int getActiveDataSubscriptionId();
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public android.telephony.SubscriptionInfo getActiveSubscriptionInfo(int);
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getActiveSubscriptionInfoCount();
+    method public int getActiveSubscriptionInfoCountMax();
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public android.telephony.SubscriptionInfo getActiveSubscriptionInfoForSimSlotIndex(int);
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<android.telephony.SubscriptionInfo> getActiveSubscriptionInfoList();
+    method @NonNull public java.util.List<android.telephony.SubscriptionInfo> getCompleteActiveSubscriptionInfoList();
+    method public static int getDefaultDataSubscriptionId();
+    method public static int getDefaultSmsSubscriptionId();
+    method public static int getDefaultSubscriptionId();
+    method public static int getDefaultVoiceSubscriptionId();
+    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<android.telephony.SubscriptionInfo> getOpportunisticSubscriptions();
+    method public static int getSlotIndex(int);
+    method @Nullable public int[] getSubscriptionIds(int);
+    method @NonNull public java.util.List<android.telephony.SubscriptionPlan> getSubscriptionPlans(int);
+    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<android.telephony.SubscriptionInfo> getSubscriptionsInGroup(@NonNull android.os.ParcelUuid);
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isActiveSubscriptionId(int);
+    method public boolean isNetworkRoaming(int);
+    method public static boolean isUsableSubscriptionId(int);
+    method public static boolean isValidSubscriptionId(int);
+    method public void removeOnOpportunisticSubscriptionsChangedListener(@NonNull android.telephony.SubscriptionManager.OnOpportunisticSubscriptionsChangedListener);
+    method public void removeOnSubscriptionsChangedListener(android.telephony.SubscriptionManager.OnSubscriptionsChangedListener);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void removeSubscriptionsFromGroup(@NonNull java.util.List<java.lang.Integer>, @NonNull android.os.ParcelUuid);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setOpportunistic(boolean, int);
+    method public void setSubscriptionOverrideCongested(int, boolean, long);
+    method public void setSubscriptionOverrideUnmetered(int, boolean, long);
+    method public void setSubscriptionPlans(int, @NonNull java.util.List<android.telephony.SubscriptionPlan>);
+    method @RequiresPermission("android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS") public void switchToSubscription(int, @NonNull android.app.PendingIntent);
+    field public static final String ACTION_DEFAULT_SMS_SUBSCRIPTION_CHANGED = "android.telephony.action.DEFAULT_SMS_SUBSCRIPTION_CHANGED";
+    field public static final String ACTION_DEFAULT_SUBSCRIPTION_CHANGED = "android.telephony.action.DEFAULT_SUBSCRIPTION_CHANGED";
+    field public static final String ACTION_MANAGE_SUBSCRIPTION_PLANS = "android.telephony.action.MANAGE_SUBSCRIPTION_PLANS";
+    field public static final String ACTION_REFRESH_SUBSCRIPTION_PLANS = "android.telephony.action.REFRESH_SUBSCRIPTION_PLANS";
+    field public static final int DATA_ROAMING_DISABLE = 0; // 0x0
+    field public static final int DATA_ROAMING_ENABLE = 1; // 0x1
+    field public static final int DEFAULT_SUBSCRIPTION_ID = 2147483647; // 0x7fffffff
+    field public static final String EXTRA_SLOT_INDEX = "android.telephony.extra.SLOT_INDEX";
+    field public static final String EXTRA_SUBSCRIPTION_INDEX = "android.telephony.extra.SUBSCRIPTION_INDEX";
+    field public static final int INVALID_SIM_SLOT_INDEX = -1; // 0xffffffff
+    field public static final int INVALID_SUBSCRIPTION_ID = -1; // 0xffffffff
+    field public static final int SUBSCRIPTION_TYPE_LOCAL_SIM = 0; // 0x0
+    field public static final int SUBSCRIPTION_TYPE_REMOTE_SIM = 1; // 0x1
+  }
+
+  public static class SubscriptionManager.OnOpportunisticSubscriptionsChangedListener {
+    ctor public SubscriptionManager.OnOpportunisticSubscriptionsChangedListener();
+    method public void onOpportunisticSubscriptionsChanged();
+  }
+
+  public static class SubscriptionManager.OnSubscriptionsChangedListener {
+    ctor public SubscriptionManager.OnSubscriptionsChangedListener();
+    method public void onSubscriptionsChanged();
+  }
+
+  public final class SubscriptionPlan implements android.os.Parcelable {
+    method public java.util.Iterator<android.util.Range<java.time.ZonedDateTime>> cycleIterator();
+    method public int describeContents();
+    method public int getDataLimitBehavior();
+    method public long getDataLimitBytes();
+    method public long getDataUsageBytes();
+    method public long getDataUsageTime();
+    method @NonNull public int[] getNetworkTypes();
+    method @Nullable public CharSequence getSummary();
+    method @Nullable public CharSequence getTitle();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final long BYTES_UNKNOWN = -1L; // 0xffffffffffffffffL
+    field public static final long BYTES_UNLIMITED = 9223372036854775807L; // 0x7fffffffffffffffL
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SubscriptionPlan> CREATOR;
+    field public static final int LIMIT_BEHAVIOR_BILLED = 1; // 0x1
+    field public static final int LIMIT_BEHAVIOR_DISABLED = 0; // 0x0
+    field public static final int LIMIT_BEHAVIOR_THROTTLED = 2; // 0x2
+    field public static final int LIMIT_BEHAVIOR_UNKNOWN = -1; // 0xffffffff
+    field public static final long TIME_UNKNOWN = -1L; // 0xffffffffffffffffL
+  }
+
+  public static class SubscriptionPlan.Builder {
+    method public android.telephony.SubscriptionPlan build();
+    method public static android.telephony.SubscriptionPlan.Builder createNonrecurring(java.time.ZonedDateTime, java.time.ZonedDateTime);
+    method public static android.telephony.SubscriptionPlan.Builder createRecurring(java.time.ZonedDateTime, java.time.Period);
+    method @NonNull public android.telephony.SubscriptionPlan.Builder resetNetworkTypes();
+    method public android.telephony.SubscriptionPlan.Builder setDataLimit(long, int);
+    method public android.telephony.SubscriptionPlan.Builder setDataUsage(long, long);
+    method @NonNull public android.telephony.SubscriptionPlan.Builder setNetworkTypes(@NonNull int[]);
+    method public android.telephony.SubscriptionPlan.Builder setSummary(@Nullable CharSequence);
+    method public android.telephony.SubscriptionPlan.Builder setTitle(@Nullable CharSequence);
+  }
+
+  public final class TelephonyDisplayInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getNetworkType();
+    method public int getOverrideNetworkType();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.TelephonyDisplayInfo> CREATOR;
+    field public static final int OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO = 2; // 0x2
+    field public static final int OVERRIDE_NETWORK_TYPE_LTE_CA = 1; // 0x1
+    field public static final int OVERRIDE_NETWORK_TYPE_NONE = 0; // 0x0
+    field public static final int OVERRIDE_NETWORK_TYPE_NR_NSA = 3; // 0x3
+    field public static final int OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE = 4; // 0x4
+  }
+
+  public class TelephonyManager {
+    method public boolean canChangeDtmfToneLength();
+    method @Nullable public android.telephony.TelephonyManager createForPhoneAccountHandle(android.telecom.PhoneAccountHandle);
+    method public android.telephony.TelephonyManager createForSubscriptionId(int);
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean doesSwitchMultiSimConfigTriggerReboot();
+    method public int getActiveModemCount();
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public java.util.List<android.telephony.CellInfo> getAllCellInfo();
+    method public int getCallState();
+    method public int getCardIdForDefaultEuicc();
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) @WorkerThread public android.os.PersistableBundle getCarrierConfig();
+    method public int getCarrierIdFromSimMccMnc();
+    method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public android.telephony.CellLocation getCellLocation();
+    method public int getDataActivity();
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getDataNetworkType();
+    method public int getDataState();
+    method @Deprecated @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getDeviceId();
+    method @Deprecated @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getDeviceId(int);
+    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getDeviceSoftwareVersion();
+    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.Map<java.lang.Integer,java.util.List<android.telephony.emergency.EmergencyNumber>> getEmergencyNumberList();
+    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.Map<java.lang.Integer,java.util.List<android.telephony.emergency.EmergencyNumber>> getEmergencyNumberList(int);
+    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<java.lang.String> getEquivalentHomePlmns();
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String[] getForbiddenPlmns();
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getGroupIdLevel1();
+    method public String getIccAuthentication(int, int, String);
+    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getImei();
+    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getImei(int);
+    method @RequiresPermission(anyOf={android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.READ_SMS, android.Manifest.permission.READ_PHONE_NUMBERS}) public String getLine1Number();
+    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRECISE_PHONE_STATE) public String getManualNetworkSelectionPlmn();
+    method @Nullable public String getManufacturerCode();
+    method @Nullable public String getManufacturerCode(int);
+    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getMeid();
+    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getMeid(int);
+    method public String getMmsUAProfUrl();
+    method public String getMmsUserAgent();
+    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getNai();
+    method public String getNetworkCountryIso();
+    method @NonNull public String getNetworkCountryIso(int);
+    method public String getNetworkOperator();
+    method public String getNetworkOperatorName();
+    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public int getNetworkSelectionMode();
+    method public String getNetworkSpecifier();
+    method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getNetworkType();
+    method @Deprecated public int getPhoneCount();
+    method public int getPhoneType();
+    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PHONE_STATE}) public int getPreferredOpportunisticDataSubscription();
+    method @Nullable @RequiresPermission(allOf={android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.ACCESS_COARSE_LOCATION}) public android.telephony.ServiceState getServiceState();
+    method @Nullable public android.telephony.SignalStrength getSignalStrength();
+    method public int getSimCarrierId();
+    method @Nullable public CharSequence getSimCarrierIdName();
+    method public String getSimCountryIso();
+    method public String getSimOperator();
+    method public String getSimOperatorName();
+    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getSimSerialNumber();
+    method public int getSimSpecificCarrierId();
+    method @Nullable public CharSequence getSimSpecificCarrierIdName();
+    method public int getSimState();
+    method public int getSimState(int);
+    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getSubscriberId();
+    method public int getSubscriptionId();
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getSubscriptionId(@NonNull android.telecom.PhoneAccountHandle);
+    method public int getSupportedModemCount();
+    method @Nullable public String getTypeAllocationCode();
+    method @Nullable public String getTypeAllocationCode(int);
+    method @NonNull @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public java.util.List<android.telephony.UiccCardInfo> getUiccCardsInfo();
+    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getVisualVoicemailPackageName();
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getVoiceMailAlphaTag();
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getVoiceMailNumber();
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getVoiceNetworkType();
+    method @Nullable public android.net.Uri getVoicemailRingtoneUri(android.telecom.PhoneAccountHandle);
+    method public boolean hasCarrierPrivileges();
+    method public boolean hasIccCard();
+    method @Deprecated public boolean iccCloseLogicalChannel(int);
+    method @Deprecated public byte[] iccExchangeSimIO(int, int, int, int, int, String);
+    method @Deprecated public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(String);
+    method @Deprecated public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(String, int);
+    method @Deprecated public String iccTransmitApduBasicChannel(int, int, int, int, int, String);
+    method @Deprecated public String iccTransmitApduLogicalChannel(int, int, int, int, int, int, String);
+    method public boolean isConcurrentVoiceAndDataSupported();
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.READ_PHONE_STATE, "android.permission.READ_PRIVILEGED_PHONE_STATE"}) public boolean isDataConnectionAllowed();
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.MODIFY_PHONE_STATE}) public boolean isDataEnabled();
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isDataEnabledForReason(int);
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isDataRoamingEnabled();
+    method public boolean isEmergencyNumber(@NonNull String);
+    method public boolean isHearingAidCompatibilitySupported();
+    method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRECISE_PHONE_STATE, "android.permission.READ_PRIVILEGED_PHONE_STATE"}) public boolean isManualNetworkSelectionAllowed();
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isModemEnabledForSlot(int);
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int isMultiSimSupported();
+    method public boolean isNetworkRoaming();
+    method public boolean isRttSupported();
+    method public boolean isSmsCapable();
+    method @Deprecated public boolean isTtyModeSupported();
+    method public boolean isVoiceCapable();
+    method public boolean isVoicemailVibrationEnabled(android.telecom.PhoneAccountHandle);
+    method public boolean isWorldPhone();
+    method public void listen(android.telephony.PhoneStateListener, int);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public void requestCellInfoUpdate(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.TelephonyManager.CellInfoCallback);
+    method @RequiresPermission(allOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.ACCESS_FINE_LOCATION}) public android.telephony.NetworkScan requestNetworkScan(android.telephony.NetworkScanRequest, java.util.concurrent.Executor, android.telephony.TelephonyScanManager.NetworkScanCallback);
+    method public void sendDialerSpecialCode(String);
+    method @Deprecated public String sendEnvelopeWithStatus(String);
+    method @RequiresPermission(android.Manifest.permission.CALL_PHONE) public void sendUssdRequest(String, android.telephony.TelephonyManager.UssdResponseCallback, android.os.Handler);
+    method public void sendVisualVoicemailSms(String, int, String, android.app.PendingIntent);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataEnabled(boolean);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataEnabledForReason(int, boolean);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int setForbiddenPlmns(@NonNull java.util.List<java.lang.String>);
+    method public boolean setLine1NumberForDisplay(String, String);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setNetworkSelectionModeAutomatic();
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setNetworkSelectionModeManual(String, boolean);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setNetworkSelectionModeManual(@NonNull String, boolean, int);
+    method public boolean setOperatorBrandOverride(String);
+    method public boolean setPreferredNetworkTypeToGlobal();
+    method public void setPreferredOpportunisticDataSubscription(int, boolean, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<java.lang.Integer>);
+    method public void setVisualVoicemailSmsFilterSettings(android.telephony.VisualVoicemailSmsFilterSettings);
+    method public boolean setVoiceMailNumber(String, String);
+    method @Deprecated public void setVoicemailRingtoneUri(android.telecom.PhoneAccountHandle, android.net.Uri);
+    method @Deprecated public void setVoicemailVibrationEnabled(android.telecom.PhoneAccountHandle, boolean);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void switchMultiSimConfig(int);
+    method public void updateAvailableNetworks(@NonNull java.util.List<android.telephony.AvailableNetworkInfo>, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<java.lang.Integer>);
+    field public static final String ACTION_CARRIER_MESSAGING_CLIENT_SERVICE = "android.telephony.action.CARRIER_MESSAGING_CLIENT_SERVICE";
+    field public static final String ACTION_CONFIGURE_VOICEMAIL = "android.telephony.action.CONFIGURE_VOICEMAIL";
+    field public static final String ACTION_MULTI_SIM_CONFIG_CHANGED = "android.telephony.action.MULTI_SIM_CONFIG_CHANGED";
+    field public static final String ACTION_NETWORK_COUNTRY_CHANGED = "android.telephony.action.NETWORK_COUNTRY_CHANGED";
+    field @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public static final String ACTION_PHONE_STATE_CHANGED = "android.intent.action.PHONE_STATE";
+    field public static final String ACTION_RESPOND_VIA_MESSAGE = "android.intent.action.RESPOND_VIA_MESSAGE";
+    field public static final String ACTION_SECRET_CODE = "android.telephony.action.SECRET_CODE";
+    field public static final String ACTION_SHOW_VOICEMAIL_NOTIFICATION = "android.telephony.action.SHOW_VOICEMAIL_NOTIFICATION";
+    field public static final String ACTION_SUBSCRIPTION_CARRIER_IDENTITY_CHANGED = "android.telephony.action.SUBSCRIPTION_CARRIER_IDENTITY_CHANGED";
+    field public static final String ACTION_SUBSCRIPTION_SPECIFIC_CARRIER_IDENTITY_CHANGED = "android.telephony.action.SUBSCRIPTION_SPECIFIC_CARRIER_IDENTITY_CHANGED";
+    field public static final int APPTYPE_CSIM = 4; // 0x4
+    field public static final int APPTYPE_ISIM = 5; // 0x5
+    field public static final int APPTYPE_RUIM = 3; // 0x3
+    field public static final int APPTYPE_SIM = 1; // 0x1
+    field public static final int APPTYPE_USIM = 2; // 0x2
+    field public static final int AUTHTYPE_EAP_AKA = 129; // 0x81
+    field public static final int AUTHTYPE_EAP_SIM = 128; // 0x80
+    field public static final int CALL_STATE_IDLE = 0; // 0x0
+    field public static final int CALL_STATE_OFFHOOK = 2; // 0x2
+    field public static final int CALL_STATE_RINGING = 1; // 0x1
+    field public static final int CDMA_ROAMING_MODE_AFFILIATED = 1; // 0x1
+    field public static final int CDMA_ROAMING_MODE_ANY = 2; // 0x2
+    field public static final int CDMA_ROAMING_MODE_HOME = 0; // 0x0
+    field public static final int CDMA_ROAMING_MODE_RADIO_DEFAULT = -1; // 0xffffffff
+    field public static final int DATA_ACTIVITY_DORMANT = 4; // 0x4
+    field public static final int DATA_ACTIVITY_IN = 1; // 0x1
+    field public static final int DATA_ACTIVITY_INOUT = 3; // 0x3
+    field public static final int DATA_ACTIVITY_NONE = 0; // 0x0
+    field public static final int DATA_ACTIVITY_OUT = 2; // 0x2
+    field public static final int DATA_CONNECTED = 2; // 0x2
+    field public static final int DATA_CONNECTING = 1; // 0x1
+    field public static final int DATA_DISCONNECTED = 0; // 0x0
+    field public static final int DATA_DISCONNECTING = 4; // 0x4
+    field public static final int DATA_ENABLED_REASON_CARRIER = 2; // 0x2
+    field public static final int DATA_ENABLED_REASON_POLICY = 1; // 0x1
+    field public static final int DATA_ENABLED_REASON_THERMAL = 3; // 0x3
+    field public static final int DATA_ENABLED_REASON_USER = 0; // 0x0
+    field public static final int DATA_SUSPENDED = 3; // 0x3
+    field public static final int DATA_UNKNOWN = -1; // 0xffffffff
+    field public static final int ERI_FLASH = 2; // 0x2
+    field public static final int ERI_OFF = 1; // 0x1
+    field public static final int ERI_ON = 0; // 0x0
+    field public static final String EXTRA_ACTIVE_SIM_SUPPORTED_COUNT = "android.telephony.extra.ACTIVE_SIM_SUPPORTED_COUNT";
+    field public static final String EXTRA_CALL_VOICEMAIL_INTENT = "android.telephony.extra.CALL_VOICEMAIL_INTENT";
+    field public static final String EXTRA_CARRIER_ID = "android.telephony.extra.CARRIER_ID";
+    field public static final String EXTRA_CARRIER_NAME = "android.telephony.extra.CARRIER_NAME";
+    field public static final String EXTRA_HIDE_PUBLIC_SETTINGS = "android.telephony.extra.HIDE_PUBLIC_SETTINGS";
+    field @Deprecated public static final String EXTRA_INCOMING_NUMBER = "incoming_number";
+    field public static final String EXTRA_IS_REFRESH = "android.telephony.extra.IS_REFRESH";
+    field public static final String EXTRA_LAUNCH_VOICEMAIL_SETTINGS_INTENT = "android.telephony.extra.LAUNCH_VOICEMAIL_SETTINGS_INTENT";
+    field public static final String EXTRA_NETWORK_COUNTRY = "android.telephony.extra.NETWORK_COUNTRY";
+    field public static final String EXTRA_NOTIFICATION_COUNT = "android.telephony.extra.NOTIFICATION_COUNT";
+    field public static final String EXTRA_PHONE_ACCOUNT_HANDLE = "android.telephony.extra.PHONE_ACCOUNT_HANDLE";
+    field public static final String EXTRA_SPECIFIC_CARRIER_ID = "android.telephony.extra.SPECIFIC_CARRIER_ID";
+    field public static final String EXTRA_SPECIFIC_CARRIER_NAME = "android.telephony.extra.SPECIFIC_CARRIER_NAME";
+    field public static final String EXTRA_STATE = "state";
+    field public static final String EXTRA_STATE_IDLE;
+    field public static final String EXTRA_STATE_OFFHOOK;
+    field public static final String EXTRA_STATE_RINGING;
+    field public static final String EXTRA_SUBSCRIPTION_ID = "android.telephony.extra.SUBSCRIPTION_ID";
+    field public static final String EXTRA_VOICEMAIL_NUMBER = "android.telephony.extra.VOICEMAIL_NUMBER";
+    field public static final String METADATA_HIDE_VOICEMAIL_SETTINGS_MENU = "android.telephony.HIDE_VOICEMAIL_SETTINGS_MENU";
+    field public static final int MULTISIM_ALLOWED = 0; // 0x0
+    field public static final int MULTISIM_NOT_SUPPORTED_BY_CARRIER = 2; // 0x2
+    field public static final int MULTISIM_NOT_SUPPORTED_BY_HARDWARE = 1; // 0x1
+    field public static final int NETWORK_SELECTION_MODE_AUTO = 1; // 0x1
+    field public static final int NETWORK_SELECTION_MODE_MANUAL = 2; // 0x2
+    field public static final int NETWORK_SELECTION_MODE_UNKNOWN = 0; // 0x0
+    field public static final int NETWORK_TYPE_1xRTT = 7; // 0x7
+    field public static final int NETWORK_TYPE_CDMA = 4; // 0x4
+    field public static final int NETWORK_TYPE_EDGE = 2; // 0x2
+    field public static final int NETWORK_TYPE_EHRPD = 14; // 0xe
+    field public static final int NETWORK_TYPE_EVDO_0 = 5; // 0x5
+    field public static final int NETWORK_TYPE_EVDO_A = 6; // 0x6
+    field public static final int NETWORK_TYPE_EVDO_B = 12; // 0xc
+    field public static final int NETWORK_TYPE_GPRS = 1; // 0x1
+    field public static final int NETWORK_TYPE_GSM = 16; // 0x10
+    field public static final int NETWORK_TYPE_HSDPA = 8; // 0x8
+    field public static final int NETWORK_TYPE_HSPA = 10; // 0xa
+    field public static final int NETWORK_TYPE_HSPAP = 15; // 0xf
+    field public static final int NETWORK_TYPE_HSUPA = 9; // 0x9
+    field public static final int NETWORK_TYPE_IDEN = 11; // 0xb
+    field public static final int NETWORK_TYPE_IWLAN = 18; // 0x12
+    field public static final int NETWORK_TYPE_LTE = 13; // 0xd
+    field public static final int NETWORK_TYPE_NR = 20; // 0x14
+    field public static final int NETWORK_TYPE_TD_SCDMA = 17; // 0x11
+    field public static final int NETWORK_TYPE_UMTS = 3; // 0x3
+    field public static final int NETWORK_TYPE_UNKNOWN = 0; // 0x0
+    field public static final int PHONE_TYPE_CDMA = 2; // 0x2
+    field public static final int PHONE_TYPE_GSM = 1; // 0x1
+    field public static final int PHONE_TYPE_NONE = 0; // 0x0
+    field public static final int PHONE_TYPE_SIP = 3; // 0x3
+    field public static final int SET_OPPORTUNISTIC_SUB_INACTIVE_SUBSCRIPTION = 2; // 0x2
+    field public static final int SET_OPPORTUNISTIC_SUB_NO_OPPORTUNISTIC_SUB_AVAILABLE = 3; // 0x3
+    field public static final int SET_OPPORTUNISTIC_SUB_REMOTE_SERVICE_EXCEPTION = 4; // 0x4
+    field public static final int SET_OPPORTUNISTIC_SUB_SUCCESS = 0; // 0x0
+    field public static final int SET_OPPORTUNISTIC_SUB_VALIDATION_FAILED = 1; // 0x1
+    field public static final int SIM_STATE_ABSENT = 1; // 0x1
+    field public static final int SIM_STATE_CARD_IO_ERROR = 8; // 0x8
+    field public static final int SIM_STATE_CARD_RESTRICTED = 9; // 0x9
+    field public static final int SIM_STATE_NETWORK_LOCKED = 4; // 0x4
+    field public static final int SIM_STATE_NOT_READY = 6; // 0x6
+    field public static final int SIM_STATE_PERM_DISABLED = 7; // 0x7
+    field public static final int SIM_STATE_PIN_REQUIRED = 2; // 0x2
+    field public static final int SIM_STATE_PUK_REQUIRED = 3; // 0x3
+    field public static final int SIM_STATE_READY = 5; // 0x5
+    field public static final int SIM_STATE_UNKNOWN = 0; // 0x0
+    field public static final int UNINITIALIZED_CARD_ID = -2; // 0xfffffffe
+    field public static final int UNKNOWN_CARRIER_ID = -1; // 0xffffffff
+    field public static final int UNSUPPORTED_CARD_ID = -1; // 0xffffffff
+    field public static final int UPDATE_AVAILABLE_NETWORKS_ABORTED = 2; // 0x2
+    field public static final int UPDATE_AVAILABLE_NETWORKS_DISABLE_MODEM_FAIL = 5; // 0x5
+    field public static final int UPDATE_AVAILABLE_NETWORKS_ENABLE_MODEM_FAIL = 6; // 0x6
+    field public static final int UPDATE_AVAILABLE_NETWORKS_INVALID_ARGUMENTS = 3; // 0x3
+    field public static final int UPDATE_AVAILABLE_NETWORKS_MULTIPLE_NETWORKS_NOT_SUPPORTED = 7; // 0x7
+    field public static final int UPDATE_AVAILABLE_NETWORKS_NO_CARRIER_PRIVILEGE = 4; // 0x4
+    field public static final int UPDATE_AVAILABLE_NETWORKS_NO_OPPORTUNISTIC_SUB_AVAILABLE = 8; // 0x8
+    field public static final int UPDATE_AVAILABLE_NETWORKS_REMOTE_SERVICE_EXCEPTION = 9; // 0x9
+    field public static final int UPDATE_AVAILABLE_NETWORKS_SERVICE_IS_DISABLED = 10; // 0xa
+    field public static final int UPDATE_AVAILABLE_NETWORKS_SUCCESS = 0; // 0x0
+    field public static final int UPDATE_AVAILABLE_NETWORKS_UNKNOWN_FAILURE = 1; // 0x1
+    field public static final int USSD_ERROR_SERVICE_UNAVAIL = -2; // 0xfffffffe
+    field public static final int USSD_RETURN_FAILURE = -1; // 0xffffffff
+    field public static final String VVM_TYPE_CVVM = "vvm_type_cvvm";
+    field public static final String VVM_TYPE_OMTP = "vvm_type_omtp";
+  }
+
+  public abstract static class TelephonyManager.CellInfoCallback {
+    ctor public TelephonyManager.CellInfoCallback();
+    method public abstract void onCellInfo(@NonNull java.util.List<android.telephony.CellInfo>);
+    method public void onError(int, @Nullable Throwable);
+    field public static final int ERROR_MODEM_ERROR = 2; // 0x2
+    field public static final int ERROR_TIMEOUT = 1; // 0x1
+  }
+
+  public abstract static class TelephonyManager.UssdResponseCallback {
+    ctor public TelephonyManager.UssdResponseCallback();
+    method public void onReceiveUssdResponse(android.telephony.TelephonyManager, String, CharSequence);
+    method public void onReceiveUssdResponseFailed(android.telephony.TelephonyManager, String, int);
+  }
+
+  public final class TelephonyScanManager {
+    ctor public TelephonyScanManager();
+  }
+
+  public abstract static class TelephonyScanManager.NetworkScanCallback {
+    ctor public TelephonyScanManager.NetworkScanCallback();
+    method public void onComplete();
+    method public void onError(int);
+    method public void onResults(java.util.List<android.telephony.CellInfo>);
+  }
+
+  public final class UiccCardInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getCardId();
+    method @Nullable public String getEid();
+    method @Nullable public String getIccId();
+    method public int getSlotIndex();
+    method public boolean isEuicc();
+    method public boolean isRemovable();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.UiccCardInfo> CREATOR;
+  }
+
+  public abstract class VisualVoicemailService extends android.app.Service {
+    ctor public VisualVoicemailService();
+    method public android.os.IBinder onBind(android.content.Intent);
+    method @MainThread public abstract void onCellServiceConnected(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telecom.PhoneAccountHandle);
+    method @MainThread public abstract void onSimRemoved(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telecom.PhoneAccountHandle);
+    method @MainThread public abstract void onSmsReceived(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telephony.VisualVoicemailSms);
+    method @MainThread public abstract void onStopped(android.telephony.VisualVoicemailService.VisualVoicemailTask);
+    field public static final String SERVICE_INTERFACE = "android.telephony.VisualVoicemailService";
+  }
+
+  public static class VisualVoicemailService.VisualVoicemailTask {
+    method public final void finish();
+  }
+
+  public final class VisualVoicemailSms implements android.os.Parcelable {
+    method public int describeContents();
+    method public android.os.Bundle getFields();
+    method public String getMessageBody();
+    method public android.telecom.PhoneAccountHandle getPhoneAccountHandle();
+    method public String getPrefix();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.VisualVoicemailSms> CREATOR;
+  }
+
+  public final class VisualVoicemailSmsFilterSettings implements android.os.Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.VisualVoicemailSmsFilterSettings> CREATOR;
+    field public static final int DESTINATION_PORT_ANY = -1; // 0xffffffff
+    field public static final int DESTINATION_PORT_DATA_SMS = -2; // 0xfffffffe
+    field public final String clientPrefix;
+    field public final int destinationPort;
+    field public final java.util.List<java.lang.String> originatingNumbers;
+  }
+
+  public static class VisualVoicemailSmsFilterSettings.Builder {
+    ctor public VisualVoicemailSmsFilterSettings.Builder();
+    method public android.telephony.VisualVoicemailSmsFilterSettings build();
+    method public android.telephony.VisualVoicemailSmsFilterSettings.Builder setClientPrefix(String);
+    method public android.telephony.VisualVoicemailSmsFilterSettings.Builder setDestinationPort(int);
+    method public android.telephony.VisualVoicemailSmsFilterSettings.Builder setOriginatingNumbers(java.util.List<java.lang.String>);
+  }
+
+}
+
+package android.telephony.cdma {
+
+  @Deprecated public class CdmaCellLocation extends android.telephony.CellLocation {
+    ctor @Deprecated public CdmaCellLocation();
+    ctor @Deprecated public CdmaCellLocation(android.os.Bundle);
+    method @Deprecated public static double convertQuartSecToDecDegrees(int);
+    method @Deprecated public void fillInNotifierBundle(android.os.Bundle);
+    method @Deprecated public int getBaseStationId();
+    method @Deprecated public int getBaseStationLatitude();
+    method @Deprecated public int getBaseStationLongitude();
+    method @Deprecated public int getNetworkId();
+    method @Deprecated public int getSystemId();
+    method @Deprecated public void setCellLocationData(int, int, int);
+    method @Deprecated public void setCellLocationData(int, int, int, int, int);
+    method @Deprecated public void setStateInvalid();
+  }
+
+}
+
+package android.telephony.data {
+
+  public class ApnSetting implements android.os.Parcelable {
+    method public int describeContents();
+    method public String getApnName();
+    method public int getApnTypeBitmask();
+    method public int getAuthType();
+    method public int getCarrierId();
+    method public String getEntryName();
+    method public int getId();
+    method @Deprecated public java.net.InetAddress getMmsProxyAddress();
+    method public String getMmsProxyAddressAsString();
+    method public int getMmsProxyPort();
+    method public android.net.Uri getMmsc();
+    method public int getMvnoType();
+    method public int getNetworkTypeBitmask();
+    method public String getOperatorNumeric();
+    method public String getPassword();
+    method public int getProtocol();
+    method @Deprecated public java.net.InetAddress getProxyAddress();
+    method public String getProxyAddressAsString();
+    method public int getProxyPort();
+    method public int getRoamingProtocol();
+    method public String getUser();
+    method public boolean isEnabled();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field public static final int AUTH_TYPE_CHAP = 2; // 0x2
+    field public static final int AUTH_TYPE_NONE = 0; // 0x0
+    field public static final int AUTH_TYPE_PAP = 1; // 0x1
+    field public static final int AUTH_TYPE_PAP_OR_CHAP = 3; // 0x3
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.ApnSetting> CREATOR;
+    field public static final int MVNO_TYPE_GID = 2; // 0x2
+    field public static final int MVNO_TYPE_ICCID = 3; // 0x3
+    field public static final int MVNO_TYPE_IMSI = 1; // 0x1
+    field public static final int MVNO_TYPE_SPN = 0; // 0x0
+    field public static final int PROTOCOL_IP = 0; // 0x0
+    field public static final int PROTOCOL_IPV4V6 = 2; // 0x2
+    field public static final int PROTOCOL_IPV6 = 1; // 0x1
+    field public static final int PROTOCOL_NON_IP = 4; // 0x4
+    field public static final int PROTOCOL_PPP = 3; // 0x3
+    field public static final int PROTOCOL_UNSTRUCTURED = 5; // 0x5
+    field public static final int TYPE_CBS = 128; // 0x80
+    field public static final int TYPE_DEFAULT = 17; // 0x11
+    field public static final int TYPE_DUN = 8; // 0x8
+    field public static final int TYPE_EMERGENCY = 512; // 0x200
+    field public static final int TYPE_FOTA = 32; // 0x20
+    field public static final int TYPE_HIPRI = 16; // 0x10
+    field public static final int TYPE_IA = 256; // 0x100
+    field public static final int TYPE_IMS = 64; // 0x40
+    field public static final int TYPE_MCX = 1024; // 0x400
+    field public static final int TYPE_MMS = 2; // 0x2
+    field public static final int TYPE_SUPL = 4; // 0x4
+    field public static final int TYPE_XCAP = 2048; // 0x800
+  }
+
+  public static class ApnSetting.Builder {
+    ctor public ApnSetting.Builder();
+    method public android.telephony.data.ApnSetting build();
+    method @NonNull public android.telephony.data.ApnSetting.Builder setApnName(@Nullable String);
+    method @NonNull public android.telephony.data.ApnSetting.Builder setApnTypeBitmask(int);
+    method @NonNull public android.telephony.data.ApnSetting.Builder setAuthType(int);
+    method @NonNull public android.telephony.data.ApnSetting.Builder setCarrierEnabled(boolean);
+    method @NonNull public android.telephony.data.ApnSetting.Builder setCarrierId(int);
+    method @NonNull public android.telephony.data.ApnSetting.Builder setEntryName(@Nullable String);
+    method @Deprecated public android.telephony.data.ApnSetting.Builder setMmsProxyAddress(java.net.InetAddress);
+    method @NonNull public android.telephony.data.ApnSetting.Builder setMmsProxyAddress(@Nullable String);
+    method @NonNull public android.telephony.data.ApnSetting.Builder setMmsProxyPort(int);
+    method @NonNull public android.telephony.data.ApnSetting.Builder setMmsc(@Nullable android.net.Uri);
+    method @NonNull public android.telephony.data.ApnSetting.Builder setMvnoType(int);
+    method @NonNull public android.telephony.data.ApnSetting.Builder setNetworkTypeBitmask(int);
+    method @NonNull public android.telephony.data.ApnSetting.Builder setOperatorNumeric(@Nullable String);
+    method @NonNull public android.telephony.data.ApnSetting.Builder setPassword(@Nullable String);
+    method @NonNull public android.telephony.data.ApnSetting.Builder setProtocol(int);
+    method @Deprecated public android.telephony.data.ApnSetting.Builder setProxyAddress(java.net.InetAddress);
+    method @NonNull public android.telephony.data.ApnSetting.Builder setProxyAddress(@Nullable String);
+    method @NonNull public android.telephony.data.ApnSetting.Builder setProxyPort(int);
+    method @NonNull public android.telephony.data.ApnSetting.Builder setRoamingProtocol(int);
+    method @NonNull public android.telephony.data.ApnSetting.Builder setUser(@Nullable String);
+  }
+
+}
+
+package android.telephony.emergency {
+
+  public final class EmergencyNumber implements java.lang.Comparable<android.telephony.emergency.EmergencyNumber> android.os.Parcelable {
+    method public int compareTo(@NonNull android.telephony.emergency.EmergencyNumber);
+    method public int describeContents();
+    method @NonNull public String getCountryIso();
+    method public int getEmergencyCallRouting();
+    method @NonNull public java.util.List<java.lang.Integer> getEmergencyNumberSources();
+    method @NonNull public java.util.List<java.lang.Integer> getEmergencyServiceCategories();
+    method @NonNull public java.util.List<java.lang.String> getEmergencyUrns();
+    method @NonNull public String getMnc();
+    method @NonNull public String getNumber();
+    method public boolean isFromSources(int);
+    method public boolean isInEmergencyServiceCategories(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.emergency.EmergencyNumber> CREATOR;
+    field public static final int EMERGENCY_CALL_ROUTING_EMERGENCY = 1; // 0x1
+    field public static final int EMERGENCY_CALL_ROUTING_NORMAL = 2; // 0x2
+    field public static final int EMERGENCY_CALL_ROUTING_UNKNOWN = 0; // 0x0
+    field public static final int EMERGENCY_NUMBER_SOURCE_DATABASE = 16; // 0x10
+    field public static final int EMERGENCY_NUMBER_SOURCE_DEFAULT = 8; // 0x8
+    field public static final int EMERGENCY_NUMBER_SOURCE_MODEM_CONFIG = 4; // 0x4
+    field public static final int EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING = 1; // 0x1
+    field public static final int EMERGENCY_NUMBER_SOURCE_SIM = 2; // 0x2
+    field public static final int EMERGENCY_SERVICE_CATEGORY_AIEC = 64; // 0x40
+    field public static final int EMERGENCY_SERVICE_CATEGORY_AMBULANCE = 2; // 0x2
+    field public static final int EMERGENCY_SERVICE_CATEGORY_FIRE_BRIGADE = 4; // 0x4
+    field public static final int EMERGENCY_SERVICE_CATEGORY_MARINE_GUARD = 8; // 0x8
+    field public static final int EMERGENCY_SERVICE_CATEGORY_MIEC = 32; // 0x20
+    field public static final int EMERGENCY_SERVICE_CATEGORY_MOUNTAIN_RESCUE = 16; // 0x10
+    field public static final int EMERGENCY_SERVICE_CATEGORY_POLICE = 1; // 0x1
+    field public static final int EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED = 0; // 0x0
+  }
+
+}
+
+package android.telephony.euicc {
+
+  public final class DownloadableSubscription implements android.os.Parcelable {
+    method public int describeContents();
+    method public static android.telephony.euicc.DownloadableSubscription forActivationCode(String);
+    method @Nullable public String getConfirmationCode();
+    method @Nullable public String getEncodedActivationCode();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.euicc.DownloadableSubscription> CREATOR;
+  }
+
+  public final class EuiccInfo implements android.os.Parcelable {
+    ctor public EuiccInfo(@Nullable String);
+    method public int describeContents();
+    method @Nullable public String getOsVersion();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.euicc.EuiccInfo> CREATOR;
+  }
+
+  public class EuiccManager {
+    method @NonNull public android.telephony.euicc.EuiccManager createForCardId(int);
+    method @RequiresPermission("android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS") public void deleteSubscription(int, android.app.PendingIntent);
+    method @RequiresPermission("android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS") public void downloadSubscription(android.telephony.euicc.DownloadableSubscription, boolean, android.app.PendingIntent);
+    method @Nullable public String getEid();
+    method @Nullable public android.telephony.euicc.EuiccInfo getEuiccInfo();
+    method public boolean isEnabled();
+    method public void startResolutionActivity(android.app.Activity, int, android.content.Intent, android.app.PendingIntent) throws android.content.IntentSender.SendIntentException;
+    method @RequiresPermission("android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS") public void switchToSubscription(int, android.app.PendingIntent);
+    method @RequiresPermission("android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS") public void updateSubscriptionNickname(int, @Nullable String, @NonNull android.app.PendingIntent);
+    field public static final String ACTION_MANAGE_EMBEDDED_SUBSCRIPTIONS = "android.telephony.euicc.action.MANAGE_EMBEDDED_SUBSCRIPTIONS";
+    field public static final String ACTION_NOTIFY_CARRIER_SETUP_INCOMPLETE = "android.telephony.euicc.action.NOTIFY_CARRIER_SETUP_INCOMPLETE";
+    field public static final String ACTION_START_EUICC_ACTIVATION = "android.telephony.euicc.action.START_EUICC_ACTIVATION";
+    field public static final int EMBEDDED_SUBSCRIPTION_RESULT_ERROR = 2; // 0x2
+    field public static final int EMBEDDED_SUBSCRIPTION_RESULT_OK = 0; // 0x0
+    field public static final int EMBEDDED_SUBSCRIPTION_RESULT_RESOLVABLE_ERROR = 1; // 0x1
+    field public static final int ERROR_ADDRESS_MISSING = 10011; // 0x271b
+    field public static final int ERROR_CARRIER_LOCKED = 10000; // 0x2710
+    field public static final int ERROR_CERTIFICATE_ERROR = 10012; // 0x271c
+    field public static final int ERROR_CONNECTION_ERROR = 10014; // 0x271e
+    field public static final int ERROR_DISALLOWED_BY_PPR = 10010; // 0x271a
+    field public static final int ERROR_EUICC_INSUFFICIENT_MEMORY = 10004; // 0x2714
+    field public static final int ERROR_EUICC_MISSING = 10006; // 0x2716
+    field public static final int ERROR_INCOMPATIBLE_CARRIER = 10003; // 0x2713
+    field public static final int ERROR_INSTALL_PROFILE = 10009; // 0x2719
+    field public static final int ERROR_INVALID_ACTIVATION_CODE = 10001; // 0x2711
+    field public static final int ERROR_INVALID_CONFIRMATION_CODE = 10002; // 0x2712
+    field public static final int ERROR_INVALID_RESPONSE = 10015; // 0x271f
+    field public static final int ERROR_NO_PROFILES_AVAILABLE = 10013; // 0x271d
+    field public static final int ERROR_OPERATION_BUSY = 10016; // 0x2720
+    field public static final int ERROR_SIM_MISSING = 10008; // 0x2718
+    field public static final int ERROR_TIME_OUT = 10005; // 0x2715
+    field public static final int ERROR_UNSUPPORTED_VERSION = 10007; // 0x2717
+    field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_DETAILED_CODE";
+    field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_DOWNLOADABLE_SUBSCRIPTION = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_DOWNLOADABLE_SUBSCRIPTION";
+    field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_ERROR_CODE = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_ERROR_CODE";
+    field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_OPERATION_CODE";
+    field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE";
+    field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE";
+    field public static final String EXTRA_USE_QR_SCANNER = "android.telephony.euicc.extra.USE_QR_SCANNER";
+    field public static final String META_DATA_CARRIER_ICON = "android.telephony.euicc.carriericon";
+    field public static final int OPERATION_APDU = 8; // 0x8
+    field public static final int OPERATION_DOWNLOAD = 5; // 0x5
+    field public static final int OPERATION_EUICC_CARD = 3; // 0x3
+    field public static final int OPERATION_EUICC_GSMA = 7; // 0x7
+    field public static final int OPERATION_HTTP = 11; // 0xb
+    field public static final int OPERATION_METADATA = 6; // 0x6
+    field public static final int OPERATION_SIM_SLOT = 2; // 0x2
+    field public static final int OPERATION_SMDX = 9; // 0x9
+    field public static final int OPERATION_SMDX_SUBJECT_REASON_CODE = 10; // 0xa
+    field public static final int OPERATION_SWITCH = 4; // 0x4
+    field public static final int OPERATION_SYSTEM = 1; // 0x1
+  }
+
+}
+
+package android.telephony.gsm {
+
+  @Deprecated public class GsmCellLocation extends android.telephony.CellLocation {
+    ctor @Deprecated public GsmCellLocation();
+    ctor @Deprecated public GsmCellLocation(android.os.Bundle);
+    method @Deprecated public void fillInNotifierBundle(android.os.Bundle);
+    method @Deprecated public int getCid();
+    method @Deprecated public int getLac();
+    method @Deprecated public int getPsc();
+    method @Deprecated public void setLacAndCid(int, int);
+    method @Deprecated public void setStateInvalid();
+  }
+
+  @Deprecated public final class SmsManager {
+    method @Deprecated public java.util.ArrayList<java.lang.String> divideMessage(String);
+    method @Deprecated public static android.telephony.gsm.SmsManager getDefault();
+    method @Deprecated public void sendDataMessage(String, String, short, byte[], android.app.PendingIntent, android.app.PendingIntent);
+    method @Deprecated public void sendMultipartTextMessage(String, String, java.util.ArrayList<java.lang.String>, java.util.ArrayList<android.app.PendingIntent>, java.util.ArrayList<android.app.PendingIntent>);
+    method @Deprecated public void sendTextMessage(String, String, String, android.app.PendingIntent, android.app.PendingIntent);
+    field @Deprecated public static final int RESULT_ERROR_GENERIC_FAILURE = 1; // 0x1
+    field @Deprecated public static final int RESULT_ERROR_NO_SERVICE = 4; // 0x4
+    field @Deprecated public static final int RESULT_ERROR_NULL_PDU = 3; // 0x3
+    field @Deprecated public static final int RESULT_ERROR_RADIO_OFF = 2; // 0x2
+    field @Deprecated public static final int STATUS_ON_SIM_FREE = 0; // 0x0
+    field @Deprecated public static final int STATUS_ON_SIM_READ = 1; // 0x1
+    field @Deprecated public static final int STATUS_ON_SIM_SENT = 5; // 0x5
+    field @Deprecated public static final int STATUS_ON_SIM_UNREAD = 3; // 0x3
+    field @Deprecated public static final int STATUS_ON_SIM_UNSENT = 7; // 0x7
+  }
+
+  @Deprecated public class SmsMessage {
+    ctor @Deprecated public SmsMessage();
+    method @Deprecated public static int[] calculateLength(CharSequence, boolean);
+    method @Deprecated public static int[] calculateLength(String, boolean);
+    method @Deprecated public static android.telephony.gsm.SmsMessage createFromPdu(byte[]);
+    method @Deprecated public String getDisplayMessageBody();
+    method @Deprecated public String getDisplayOriginatingAddress();
+    method @Deprecated public String getEmailBody();
+    method @Deprecated public String getEmailFrom();
+    method @Deprecated public int getIndexOnSim();
+    method @Deprecated public String getMessageBody();
+    method @Deprecated public android.telephony.gsm.SmsMessage.MessageClass getMessageClass();
+    method @Deprecated public String getOriginatingAddress();
+    method @Deprecated public byte[] getPdu();
+    method @Deprecated public int getProtocolIdentifier();
+    method @Deprecated public String getPseudoSubject();
+    method @Deprecated public String getServiceCenterAddress();
+    method @Deprecated public int getStatus();
+    method @Deprecated public int getStatusOnSim();
+    method @Deprecated public static android.telephony.gsm.SmsMessage.SubmitPdu getSubmitPdu(String, String, String, boolean);
+    method @Deprecated public static android.telephony.gsm.SmsMessage.SubmitPdu getSubmitPdu(String, String, short, byte[], boolean);
+    method @Deprecated public static int getTPLayerLengthForPDU(String);
+    method @Deprecated public long getTimestampMillis();
+    method @Deprecated public byte[] getUserData();
+    method @Deprecated public boolean isCphsMwiMessage();
+    method @Deprecated public boolean isEmail();
+    method @Deprecated public boolean isMWIClearMessage();
+    method @Deprecated public boolean isMWISetMessage();
+    method @Deprecated public boolean isMwiDontStore();
+    method @Deprecated public boolean isReplace();
+    method @Deprecated public boolean isReplyPathPresent();
+    method @Deprecated public boolean isStatusReportMessage();
+    field @Deprecated public static final int ENCODING_16BIT = 3; // 0x3
+    field @Deprecated public static final int ENCODING_7BIT = 1; // 0x1
+    field @Deprecated public static final int ENCODING_8BIT = 2; // 0x2
+    field @Deprecated public static final int ENCODING_UNKNOWN = 0; // 0x0
+    field @Deprecated public static final int MAX_USER_DATA_BYTES = 140; // 0x8c
+    field @Deprecated public static final int MAX_USER_DATA_SEPTETS = 160; // 0xa0
+    field @Deprecated public static final int MAX_USER_DATA_SEPTETS_WITH_HEADER = 153; // 0x99
+  }
+
+  @Deprecated public enum SmsMessage.MessageClass {
+    enum_constant @Deprecated public static final android.telephony.gsm.SmsMessage.MessageClass CLASS_0;
+    enum_constant @Deprecated public static final android.telephony.gsm.SmsMessage.MessageClass CLASS_1;
+    enum_constant @Deprecated public static final android.telephony.gsm.SmsMessage.MessageClass CLASS_2;
+    enum_constant @Deprecated public static final android.telephony.gsm.SmsMessage.MessageClass CLASS_3;
+    enum_constant @Deprecated public static final android.telephony.gsm.SmsMessage.MessageClass UNKNOWN;
+  }
+
+  @Deprecated public static class SmsMessage.SubmitPdu {
+    ctor @Deprecated public SmsMessage.SubmitPdu();
+    field @Deprecated public byte[] encodedMessage;
+    field @Deprecated public byte[] encodedScAddress;
+  }
+
+}
+
+package android.telephony.ims {
+
+  public final class ImsException extends java.lang.Exception {
+    method public int getCode();
+    field public static final int CODE_ERROR_INVALID_SUBSCRIPTION = 3; // 0x3
+    field public static final int CODE_ERROR_SERVICE_UNAVAILABLE = 1; // 0x1
+    field public static final int CODE_ERROR_UNSPECIFIED = 0; // 0x0
+    field public static final int CODE_ERROR_UNSUPPORTED_OPERATION = 2; // 0x2
+  }
+
+  public class ImsManager {
+    method @NonNull public android.telephony.ims.ImsMmTelManager getImsMmTelManager(int);
+    method @NonNull public android.telephony.ims.ImsRcsManager getImsRcsManager(int);
+    field public static final String ACTION_WFC_IMS_REGISTRATION_ERROR = "android.telephony.ims.action.WFC_IMS_REGISTRATION_ERROR";
+    field public static final String EXTRA_WFC_REGISTRATION_FAILURE_MESSAGE = "android.telephony.ims.extra.WFC_REGISTRATION_FAILURE_MESSAGE";
+    field public static final String EXTRA_WFC_REGISTRATION_FAILURE_TITLE = "android.telephony.ims.extra.WFC_REGISTRATION_FAILURE_TITLE";
+  }
+
+  public class ImsMmTelManager implements android.telephony.ims.RegistrationManager {
+    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getRegistrationState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
+    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public void getRegistrationTransportType(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
+    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public int getVoWiFiModeSetting();
+    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public boolean isAdvancedCallingSettingEnabled();
+    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public boolean isTtyOverVolteEnabled();
+    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public boolean isVoWiFiRoamingSettingEnabled();
+    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public boolean isVoWiFiSettingEnabled();
+    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public boolean isVtSettingEnabled();
+    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public void registerImsRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.RegistrationManager.RegistrationCallback) throws android.telephony.ims.ImsException;
+    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public void registerMmTelCapabilityCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ImsMmTelManager.CapabilityCallback) throws android.telephony.ims.ImsException;
+    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.RegistrationManager.RegistrationCallback);
+    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public void unregisterMmTelCapabilityCallback(@NonNull android.telephony.ims.ImsMmTelManager.CapabilityCallback);
+    field public static final int WIFI_MODE_CELLULAR_PREFERRED = 1; // 0x1
+    field public static final int WIFI_MODE_WIFI_ONLY = 0; // 0x0
+    field public static final int WIFI_MODE_WIFI_PREFERRED = 2; // 0x2
+  }
+
+  public static class ImsMmTelManager.CapabilityCallback {
+    ctor public ImsMmTelManager.CapabilityCallback();
+    method public void onCapabilitiesStatusChanged(@NonNull android.telephony.ims.feature.MmTelFeature.MmTelCapabilities);
+  }
+
+  public class ImsRcsManager {
+    method @NonNull public android.telephony.ims.RcsUceAdapter getUceAdapter();
+    field public static final String ACTION_SHOW_CAPABILITY_DISCOVERY_OPT_IN = "android.telephony.ims.action.SHOW_CAPABILITY_DISCOVERY_OPT_IN";
+  }
+
+  public final class ImsReasonInfo implements android.os.Parcelable {
+    ctor public ImsReasonInfo(int, int, @Nullable String);
+    method public int describeContents();
+    method public int getCode();
+    method public int getExtraCode();
+    method @Nullable public String getExtraMessage();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field public static final int CODE_ACCESS_CLASS_BLOCKED = 1512; // 0x5e8
+    field public static final int CODE_ANSWERED_ELSEWHERE = 1014; // 0x3f6
+    field public static final int CODE_BLACKLISTED_CALL_ID = 506; // 0x1fa
+    field public static final int CODE_CALL_BARRED = 240; // 0xf0
+    field public static final int CODE_CALL_DROP_IWLAN_TO_LTE_UNAVAILABLE = 1100; // 0x44c
+    field public static final int CODE_CALL_END_CAUSE_CALL_PULL = 1016; // 0x3f8
+    field public static final int CODE_CALL_PULL_OUT_OF_SYNC = 1015; // 0x3f7
+    field public static final int CODE_DATA_DISABLED = 1406; // 0x57e
+    field public static final int CODE_DATA_LIMIT_REACHED = 1405; // 0x57d
+    field public static final int CODE_DIAL_MODIFIED_TO_DIAL = 246; // 0xf6
+    field public static final int CODE_DIAL_MODIFIED_TO_DIAL_VIDEO = 247; // 0xf7
+    field public static final int CODE_DIAL_MODIFIED_TO_SS = 245; // 0xf5
+    field public static final int CODE_DIAL_MODIFIED_TO_USSD = 244; // 0xf4
+    field public static final int CODE_DIAL_VIDEO_MODIFIED_TO_DIAL = 248; // 0xf8
+    field public static final int CODE_DIAL_VIDEO_MODIFIED_TO_DIAL_VIDEO = 249; // 0xf9
+    field public static final int CODE_DIAL_VIDEO_MODIFIED_TO_SS = 250; // 0xfa
+    field public static final int CODE_DIAL_VIDEO_MODIFIED_TO_USSD = 251; // 0xfb
+    field public static final int CODE_ECBM_NOT_SUPPORTED = 901; // 0x385
+    field public static final int CODE_EMERGENCY_PERM_FAILURE = 364; // 0x16c
+    field public static final int CODE_EMERGENCY_TEMP_FAILURE = 363; // 0x16b
+    field public static final int CODE_EPDG_TUNNEL_ESTABLISH_FAILURE = 1400; // 0x578
+    field public static final int CODE_EPDG_TUNNEL_LOST_CONNECTION = 1402; // 0x57a
+    field public static final int CODE_EPDG_TUNNEL_REKEY_FAILURE = 1401; // 0x579
+    field public static final int CODE_FDN_BLOCKED = 241; // 0xf1
+    field public static final int CODE_IKEV2_AUTH_FAILURE = 1408; // 0x580
+    field public static final int CODE_IMEI_NOT_ACCEPTED = 243; // 0xf3
+    field public static final int CODE_IWLAN_DPD_FAILURE = 1300; // 0x514
+    field public static final int CODE_LOCAL_CALL_BUSY = 142; // 0x8e
+    field public static final int CODE_LOCAL_CALL_CS_RETRY_REQUIRED = 146; // 0x92
+    field public static final int CODE_LOCAL_CALL_DECLINE = 143; // 0x8f
+    field public static final int CODE_LOCAL_CALL_EXCEEDED = 141; // 0x8d
+    field public static final int CODE_LOCAL_CALL_RESOURCE_RESERVATION_FAILED = 145; // 0x91
+    field public static final int CODE_LOCAL_CALL_TERMINATED = 148; // 0x94
+    field public static final int CODE_LOCAL_CALL_VCC_ON_PROGRESSING = 144; // 0x90
+    field public static final int CODE_LOCAL_CALL_VOLTE_RETRY_REQUIRED = 147; // 0x93
+    field public static final int CODE_LOCAL_ENDED_BY_CONFERENCE_MERGE = 108; // 0x6c
+    field public static final int CODE_LOCAL_HO_NOT_FEASIBLE = 149; // 0x95
+    field public static final int CODE_LOCAL_ILLEGAL_ARGUMENT = 101; // 0x65
+    field public static final int CODE_LOCAL_ILLEGAL_STATE = 102; // 0x66
+    field public static final int CODE_LOCAL_IMS_SERVICE_DOWN = 106; // 0x6a
+    field public static final int CODE_LOCAL_INTERNAL_ERROR = 103; // 0x67
+    field public static final int CODE_LOCAL_LOW_BATTERY = 112; // 0x70
+    field public static final int CODE_LOCAL_NETWORK_IP_CHANGED = 124; // 0x7c
+    field public static final int CODE_LOCAL_NETWORK_NO_LTE_COVERAGE = 122; // 0x7a
+    field public static final int CODE_LOCAL_NETWORK_NO_SERVICE = 121; // 0x79
+    field public static final int CODE_LOCAL_NETWORK_ROAMING = 123; // 0x7b
+    field public static final int CODE_LOCAL_NOT_REGISTERED = 132; // 0x84
+    field public static final int CODE_LOCAL_NO_PENDING_CALL = 107; // 0x6b
+    field public static final int CODE_LOCAL_POWER_OFF = 111; // 0x6f
+    field public static final int CODE_LOCAL_SERVICE_UNAVAILABLE = 131; // 0x83
+    field public static final int CODE_LOW_BATTERY = 505; // 0x1f9
+    field public static final int CODE_MAXIMUM_NUMBER_OF_CALLS_REACHED = 1403; // 0x57b
+    field public static final int CODE_MEDIA_INIT_FAILED = 401; // 0x191
+    field public static final int CODE_MEDIA_NOT_ACCEPTABLE = 403; // 0x193
+    field public static final int CODE_MEDIA_NO_DATA = 402; // 0x192
+    field public static final int CODE_MEDIA_UNSPECIFIED = 404; // 0x194
+    field public static final int CODE_MULTIENDPOINT_NOT_SUPPORTED = 902; // 0x386
+    field public static final int CODE_NETWORK_DETACH = 1513; // 0x5e9
+    field public static final int CODE_NETWORK_REJECT = 1504; // 0x5e0
+    field public static final int CODE_NETWORK_RESP_TIMEOUT = 1503; // 0x5df
+    field public static final int CODE_NO_CSFB_IN_CS_ROAM = 1516; // 0x5ec
+    field public static final int CODE_NO_VALID_SIM = 1501; // 0x5dd
+    field public static final int CODE_OEM_CAUSE_1 = 61441; // 0xf001
+    field public static final int CODE_OEM_CAUSE_10 = 61450; // 0xf00a
+    field public static final int CODE_OEM_CAUSE_11 = 61451; // 0xf00b
+    field public static final int CODE_OEM_CAUSE_12 = 61452; // 0xf00c
+    field public static final int CODE_OEM_CAUSE_13 = 61453; // 0xf00d
+    field public static final int CODE_OEM_CAUSE_14 = 61454; // 0xf00e
+    field public static final int CODE_OEM_CAUSE_15 = 61455; // 0xf00f
+    field public static final int CODE_OEM_CAUSE_2 = 61442; // 0xf002
+    field public static final int CODE_OEM_CAUSE_3 = 61443; // 0xf003
+    field public static final int CODE_OEM_CAUSE_4 = 61444; // 0xf004
+    field public static final int CODE_OEM_CAUSE_5 = 61445; // 0xf005
+    field public static final int CODE_OEM_CAUSE_6 = 61446; // 0xf006
+    field public static final int CODE_OEM_CAUSE_7 = 61447; // 0xf007
+    field public static final int CODE_OEM_CAUSE_8 = 61448; // 0xf008
+    field public static final int CODE_OEM_CAUSE_9 = 61449; // 0xf009
+    field public static final int CODE_RADIO_ACCESS_FAILURE = 1505; // 0x5e1
+    field public static final int CODE_RADIO_INTERNAL_ERROR = 1502; // 0x5de
+    field public static final int CODE_RADIO_LINK_FAILURE = 1506; // 0x5e2
+    field public static final int CODE_RADIO_LINK_LOST = 1507; // 0x5e3
+    field public static final int CODE_RADIO_OFF = 1500; // 0x5dc
+    field public static final int CODE_RADIO_RELEASE_ABNORMAL = 1511; // 0x5e7
+    field public static final int CODE_RADIO_RELEASE_NORMAL = 1510; // 0x5e6
+    field public static final int CODE_RADIO_SETUP_FAILURE = 1509; // 0x5e5
+    field public static final int CODE_RADIO_UPLINK_FAILURE = 1508; // 0x5e4
+    field public static final int CODE_REGISTRATION_ERROR = 1000; // 0x3e8
+    field public static final int CODE_REJECTED_ELSEWHERE = 1017; // 0x3f9
+    field public static final int CODE_REJECT_1X_COLLISION = 1603; // 0x643
+    field public static final int CODE_REJECT_CALL_ON_OTHER_SUB = 1602; // 0x642
+    field public static final int CODE_REJECT_CALL_TYPE_NOT_ALLOWED = 1605; // 0x645
+    field public static final int CODE_REJECT_CONFERENCE_TTY_NOT_ALLOWED = 1617; // 0x651
+    field public static final int CODE_REJECT_INTERNAL_ERROR = 1612; // 0x64c
+    field public static final int CODE_REJECT_MAX_CALL_LIMIT_REACHED = 1608; // 0x648
+    field public static final int CODE_REJECT_ONGOING_CALL_SETUP = 1607; // 0x647
+    field public static final int CODE_REJECT_ONGOING_CALL_TRANSFER = 1611; // 0x64b
+    field public static final int CODE_REJECT_ONGOING_CALL_UPGRADE = 1616; // 0x650
+    field public static final int CODE_REJECT_ONGOING_CALL_WAITING_DISABLED = 1601; // 0x641
+    field public static final int CODE_REJECT_ONGOING_CONFERENCE_CALL = 1618; // 0x652
+    field public static final int CODE_REJECT_ONGOING_CS_CALL = 1621; // 0x655
+    field public static final int CODE_REJECT_ONGOING_E911_CALL = 1606; // 0x646
+    field public static final int CODE_REJECT_ONGOING_ENCRYPTED_CALL = 1620; // 0x654
+    field public static final int CODE_REJECT_ONGOING_HANDOVER = 1614; // 0x64e
+    field public static final int CODE_REJECT_QOS_FAILURE = 1613; // 0x64d
+    field public static final int CODE_REJECT_SERVICE_NOT_REGISTERED = 1604; // 0x644
+    field public static final int CODE_REJECT_UNKNOWN = 1600; // 0x640
+    field public static final int CODE_REJECT_UNSUPPORTED_SDP_HEADERS = 1610; // 0x64a
+    field public static final int CODE_REJECT_UNSUPPORTED_SIP_HEADERS = 1609; // 0x649
+    field public static final int CODE_REJECT_VT_AVPF_NOT_ALLOWED = 1619; // 0x653
+    field public static final int CODE_REJECT_VT_TTY_NOT_ALLOWED = 1615; // 0x64f
+    field public static final int CODE_REMOTE_CALL_DECLINE = 1404; // 0x57c
+    field public static final int CODE_SESSION_MODIFICATION_FAILED = 1517; // 0x5ed
+    field public static final int CODE_SIP_ALTERNATE_EMERGENCY_CALL = 1514; // 0x5ea
+    field public static final int CODE_SIP_AMBIGUOUS = 376; // 0x178
+    field public static final int CODE_SIP_BAD_ADDRESS = 337; // 0x151
+    field public static final int CODE_SIP_BAD_REQUEST = 331; // 0x14b
+    field public static final int CODE_SIP_BUSY = 338; // 0x152
+    field public static final int CODE_SIP_CALL_OR_TRANS_DOES_NOT_EXIST = 372; // 0x174
+    field public static final int CODE_SIP_CLIENT_ERROR = 342; // 0x156
+    field public static final int CODE_SIP_EXTENSION_REQUIRED = 370; // 0x172
+    field public static final int CODE_SIP_FORBIDDEN = 332; // 0x14c
+    field public static final int CODE_SIP_GLOBAL_ERROR = 362; // 0x16a
+    field public static final int CODE_SIP_INTERVAL_TOO_BRIEF = 371; // 0x173
+    field public static final int CODE_SIP_LOOP_DETECTED = 373; // 0x175
+    field public static final int CODE_SIP_METHOD_NOT_ALLOWED = 366; // 0x16e
+    field public static final int CODE_SIP_NOT_ACCEPTABLE = 340; // 0x154
+    field public static final int CODE_SIP_NOT_FOUND = 333; // 0x14d
+    field public static final int CODE_SIP_NOT_REACHABLE = 341; // 0x155
+    field public static final int CODE_SIP_NOT_SUPPORTED = 334; // 0x14e
+    field public static final int CODE_SIP_PROXY_AUTHENTICATION_REQUIRED = 367; // 0x16f
+    field public static final int CODE_SIP_REDIRECTED = 321; // 0x141
+    field public static final int CODE_SIP_REQUEST_CANCELLED = 339; // 0x153
+    field public static final int CODE_SIP_REQUEST_ENTITY_TOO_LARGE = 368; // 0x170
+    field public static final int CODE_SIP_REQUEST_PENDING = 377; // 0x179
+    field public static final int CODE_SIP_REQUEST_TIMEOUT = 335; // 0x14f
+    field public static final int CODE_SIP_REQUEST_URI_TOO_LARGE = 369; // 0x171
+    field public static final int CODE_SIP_SERVER_ERROR = 354; // 0x162
+    field public static final int CODE_SIP_SERVER_INTERNAL_ERROR = 351; // 0x15f
+    field public static final int CODE_SIP_SERVER_TIMEOUT = 353; // 0x161
+    field public static final int CODE_SIP_SERVICE_UNAVAILABLE = 352; // 0x160
+    field public static final int CODE_SIP_TEMPRARILY_UNAVAILABLE = 336; // 0x150
+    field public static final int CODE_SIP_TOO_MANY_HOPS = 374; // 0x176
+    field public static final int CODE_SIP_TRANSACTION_DOES_NOT_EXIST = 343; // 0x157
+    field public static final int CODE_SIP_UNDECIPHERABLE = 378; // 0x17a
+    field public static final int CODE_SIP_USER_MARKED_UNWANTED = 365; // 0x16d
+    field public static final int CODE_SIP_USER_REJECTED = 361; // 0x169
+    field public static final int CODE_SUPP_SVC_CANCELLED = 1202; // 0x4b2
+    field public static final int CODE_SUPP_SVC_FAILED = 1201; // 0x4b1
+    field public static final int CODE_SUPP_SVC_REINVITE_COLLISION = 1203; // 0x4b3
+    field public static final int CODE_TIMEOUT_1XX_WAITING = 201; // 0xc9
+    field public static final int CODE_TIMEOUT_NO_ANSWER = 202; // 0xca
+    field public static final int CODE_TIMEOUT_NO_ANSWER_CALL_UPDATE = 203; // 0xcb
+    field public static final int CODE_UNSPECIFIED = 0; // 0x0
+    field public static final int CODE_USER_CANCELLED_SESSION_MODIFICATION = 512; // 0x200
+    field public static final int CODE_USER_DECLINE = 504; // 0x1f8
+    field public static final int CODE_USER_IGNORE = 503; // 0x1f7
+    field public static final int CODE_USER_NOANSWER = 502; // 0x1f6
+    field public static final int CODE_USER_REJECTED_SESSION_MODIFICATION = 511; // 0x1ff
+    field public static final int CODE_USER_TERMINATED = 501; // 0x1f5
+    field public static final int CODE_USER_TERMINATED_BY_REMOTE = 510; // 0x1fe
+    field public static final int CODE_UT_CB_PASSWORD_MISMATCH = 821; // 0x335
+    field public static final int CODE_UT_NETWORK_ERROR = 804; // 0x324
+    field public static final int CODE_UT_NOT_SUPPORTED = 801; // 0x321
+    field public static final int CODE_UT_OPERATION_NOT_ALLOWED = 803; // 0x323
+    field public static final int CODE_UT_SERVICE_UNAVAILABLE = 802; // 0x322
+    field public static final int CODE_UT_SS_MODIFIED_TO_DIAL = 822; // 0x336
+    field public static final int CODE_UT_SS_MODIFIED_TO_DIAL_VIDEO = 825; // 0x339
+    field public static final int CODE_UT_SS_MODIFIED_TO_SS = 824; // 0x338
+    field public static final int CODE_UT_SS_MODIFIED_TO_USSD = 823; // 0x337
+    field public static final int CODE_WIFI_LOST = 1407; // 0x57f
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsReasonInfo> CREATOR;
+    field public static final int EXTRA_CODE_CALL_RETRY_BY_SETTINGS = 3; // 0x3
+    field public static final int EXTRA_CODE_CALL_RETRY_NORMAL = 1; // 0x1
+    field public static final int EXTRA_CODE_CALL_RETRY_SILENT_REDIAL = 2; // 0x2
+  }
+
+  public class RcsUceAdapter {
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isUceSettingEnabled() throws android.telephony.ims.ImsException;
+  }
+
+  public interface RegistrationManager {
+    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getRegistrationState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
+    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getRegistrationTransportType(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
+    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void registerImsRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.RegistrationManager.RegistrationCallback) throws android.telephony.ims.ImsException;
+    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.RegistrationManager.RegistrationCallback);
+    field public static final int REGISTRATION_STATE_NOT_REGISTERED = 0; // 0x0
+    field public static final int REGISTRATION_STATE_REGISTERED = 2; // 0x2
+    field public static final int REGISTRATION_STATE_REGISTERING = 1; // 0x1
+  }
+
+  public static class RegistrationManager.RegistrationCallback {
+    ctor public RegistrationManager.RegistrationCallback();
+    method public void onRegistered(int);
+    method public void onRegistering(int);
+    method public void onTechnologyChangeFailed(int, @NonNull android.telephony.ims.ImsReasonInfo);
+    method public void onUnregistered(@NonNull android.telephony.ims.ImsReasonInfo);
+  }
+
+}
+
+package android.telephony.ims.feature {
+
+  public class MmTelFeature {
+  }
+
+  public static class MmTelFeature.MmTelCapabilities {
+    method public final boolean isCapable(int);
+    field public static final int CAPABILITY_TYPE_SMS = 8; // 0x8
+    field public static final int CAPABILITY_TYPE_UT = 4; // 0x4
+    field public static final int CAPABILITY_TYPE_VIDEO = 2; // 0x2
+    field public static final int CAPABILITY_TYPE_VOICE = 1; // 0x1
+  }
+
+}
+
+package android.telephony.mbms {
+
+  public class DownloadProgressListener {
+    ctor public DownloadProgressListener();
+    method public void onProgressUpdated(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo, int, int, int, int);
+  }
+
+  public final class DownloadRequest implements android.os.Parcelable {
+    method public int describeContents();
+    method public android.net.Uri getDestinationUri();
+    method public String getFileServiceId();
+    method public static int getMaxAppIntentSize();
+    method public static int getMaxDestinationUriSize();
+    method public android.net.Uri getSourceUri();
+    method public int getSubscriptionId();
+    method public byte[] toByteArray();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.mbms.DownloadRequest> CREATOR;
+  }
+
+  public static class DownloadRequest.Builder {
+    ctor public DownloadRequest.Builder(@NonNull android.net.Uri, @NonNull android.net.Uri);
+    method public android.telephony.mbms.DownloadRequest build();
+    method public static android.telephony.mbms.DownloadRequest.Builder fromDownloadRequest(android.telephony.mbms.DownloadRequest);
+    method public static android.telephony.mbms.DownloadRequest.Builder fromSerializedRequest(byte[]);
+    method public android.telephony.mbms.DownloadRequest.Builder setAppIntent(android.content.Intent);
+    method public android.telephony.mbms.DownloadRequest.Builder setServiceInfo(android.telephony.mbms.FileServiceInfo);
+    method public android.telephony.mbms.DownloadRequest.Builder setSubscriptionId(int);
+  }
+
+  public class DownloadStatusListener {
+    ctor public DownloadStatusListener();
+    method public void onStatusUpdated(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo, int);
+  }
+
+  public final class FileInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public String getMimeType();
+    method public android.net.Uri getUri();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.mbms.FileInfo> CREATOR;
+  }
+
+  public final class FileServiceInfo extends android.telephony.mbms.ServiceInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public java.util.List<android.telephony.mbms.FileInfo> getFiles();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.mbms.FileServiceInfo> CREATOR;
+  }
+
+  public class GroupCall implements java.lang.AutoCloseable {
+    method public void close();
+    method public long getTmgi();
+    method public void updateGroupCall(@NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.lang.Integer>);
+    field public static final int REASON_BY_USER_REQUEST = 1; // 0x1
+    field public static final int REASON_FREQUENCY_CONFLICT = 3; // 0x3
+    field public static final int REASON_LEFT_MBMS_BROADCAST_AREA = 6; // 0x6
+    field public static final int REASON_NONE = 0; // 0x0
+    field public static final int REASON_NOT_CONNECTED_TO_HOMECARRIER_LTE = 5; // 0x5
+    field public static final int REASON_OUT_OF_MEMORY = 4; // 0x4
+    field public static final int STATE_STALLED = 3; // 0x3
+    field public static final int STATE_STARTED = 2; // 0x2
+    field public static final int STATE_STOPPED = 1; // 0x1
+  }
+
+  public interface GroupCallCallback {
+    method public default void onBroadcastSignalStrengthUpdated(@IntRange(from=0xffffffff, to=4) int);
+    method public default void onError(int, @Nullable String);
+    method public default void onGroupCallStateChanged(int, int);
+    field public static final int SIGNAL_STRENGTH_UNAVAILABLE = -1; // 0xffffffff
+  }
+
+  public class MbmsDownloadReceiver extends android.content.BroadcastReceiver {
+    ctor public MbmsDownloadReceiver();
+    method public void onReceive(android.content.Context, android.content.Intent);
+  }
+
+  public class MbmsDownloadSessionCallback {
+    ctor public MbmsDownloadSessionCallback();
+    method public void onError(int, String);
+    method public void onFileServicesUpdated(java.util.List<android.telephony.mbms.FileServiceInfo>);
+    method public void onMiddlewareReady();
+  }
+
+  public class MbmsErrors {
+    field public static final int ERROR_MIDDLEWARE_LOST = 3; // 0x3
+    field public static final int ERROR_MIDDLEWARE_NOT_BOUND = 2; // 0x2
+    field public static final int ERROR_NO_UNIQUE_MIDDLEWARE = 1; // 0x1
+    field public static final int SUCCESS = 0; // 0x0
+    field public static final int UNKNOWN = -1; // 0xffffffff
+  }
+
+  public static class MbmsErrors.DownloadErrors {
+    field public static final int ERROR_CANNOT_CHANGE_TEMP_FILE_ROOT = 401; // 0x191
+    field public static final int ERROR_MALFORMED_SERVICE_ANNOUNCEMENT = 404; // 0x194
+    field public static final int ERROR_UNKNOWN_DOWNLOAD_REQUEST = 402; // 0x192
+    field public static final int ERROR_UNKNOWN_FILE_INFO = 403; // 0x193
+  }
+
+  public static class MbmsErrors.GeneralErrors {
+    field public static final int ERROR_CARRIER_CHANGE_NOT_ALLOWED = 207; // 0xcf
+    field public static final int ERROR_IN_E911 = 204; // 0xcc
+    field public static final int ERROR_MIDDLEWARE_NOT_YET_READY = 201; // 0xc9
+    field public static final int ERROR_MIDDLEWARE_TEMPORARILY_UNAVAILABLE = 203; // 0xcb
+    field public static final int ERROR_NOT_CONNECTED_TO_HOME_CARRIER_LTE = 205; // 0xcd
+    field public static final int ERROR_OUT_OF_MEMORY = 202; // 0xca
+    field public static final int ERROR_UNABLE_TO_READ_SIM = 206; // 0xce
+  }
+
+  public static class MbmsErrors.GroupCallErrors {
+    field public static final int ERROR_DUPLICATE_START_GROUP_CALL = 502; // 0x1f6
+    field public static final int ERROR_UNABLE_TO_START_SERVICE = 501; // 0x1f5
+  }
+
+  public static class MbmsErrors.InitializationErrors {
+    field public static final int ERROR_APP_PERMISSIONS_NOT_GRANTED = 102; // 0x66
+    field public static final int ERROR_DUPLICATE_INITIALIZE = 101; // 0x65
+    field public static final int ERROR_UNABLE_TO_INITIALIZE = 103; // 0x67
+  }
+
+  public static class MbmsErrors.StreamingErrors {
+    field public static final int ERROR_CONCURRENT_SERVICE_LIMIT_REACHED = 301; // 0x12d
+    field public static final int ERROR_DUPLICATE_START_STREAM = 303; // 0x12f
+    field public static final int ERROR_UNABLE_TO_START_SERVICE = 302; // 0x12e
+  }
+
+  public interface MbmsGroupCallSessionCallback {
+    method public default void onAvailableSaisUpdated(@NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.util.List<java.lang.Integer>>);
+    method public default void onError(int, @Nullable String);
+    method public default void onMiddlewareReady();
+    method public default void onServiceInterfaceAvailable(@NonNull String, int);
+  }
+
+  public class MbmsStreamingSessionCallback {
+    ctor public MbmsStreamingSessionCallback();
+    method public void onError(int, @Nullable String);
+    method public void onMiddlewareReady();
+    method public void onStreamingServicesUpdated(java.util.List<android.telephony.mbms.StreamingServiceInfo>);
+  }
+
+  public class ServiceInfo {
+    method public java.util.List<java.util.Locale> getLocales();
+    method @NonNull public CharSequence getNameForLocale(@NonNull java.util.Locale);
+    method @NonNull public java.util.Set<java.util.Locale> getNamedContentLocales();
+    method public String getServiceClassName();
+    method public String getServiceId();
+    method public java.util.Date getSessionEndTime();
+    method public java.util.Date getSessionStartTime();
+  }
+
+  public class StreamingService implements java.lang.AutoCloseable {
+    method public void close();
+    method public android.telephony.mbms.StreamingServiceInfo getInfo();
+    method @Nullable public android.net.Uri getPlaybackUri();
+    field public static final int BROADCAST_METHOD = 1; // 0x1
+    field public static final int REASON_BY_USER_REQUEST = 1; // 0x1
+    field public static final int REASON_END_OF_SESSION = 2; // 0x2
+    field public static final int REASON_FREQUENCY_CONFLICT = 3; // 0x3
+    field public static final int REASON_LEFT_MBMS_BROADCAST_AREA = 6; // 0x6
+    field public static final int REASON_NONE = 0; // 0x0
+    field public static final int REASON_NOT_CONNECTED_TO_HOMECARRIER_LTE = 5; // 0x5
+    field public static final int REASON_OUT_OF_MEMORY = 4; // 0x4
+    field public static final int STATE_STALLED = 3; // 0x3
+    field public static final int STATE_STARTED = 2; // 0x2
+    field public static final int STATE_STOPPED = 1; // 0x1
+    field public static final int UNICAST_METHOD = 2; // 0x2
+  }
+
+  public class StreamingServiceCallback {
+    ctor public StreamingServiceCallback();
+    method public void onBroadcastSignalStrengthUpdated(int);
+    method public void onError(int, @Nullable String);
+    method public void onMediaDescriptionUpdated();
+    method public void onStreamMethodUpdated(int);
+    method public void onStreamStateUpdated(int, int);
+    field public static final int SIGNAL_STRENGTH_UNAVAILABLE = -1; // 0xffffffff
+  }
+
+  public final class StreamingServiceInfo extends android.telephony.mbms.ServiceInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.mbms.StreamingServiceInfo> CREATOR;
+  }
+
+}
+
+package android.text {
+
+  @Deprecated public class AlteredCharSequence implements java.lang.CharSequence android.text.GetChars {
+    method @Deprecated public char charAt(int);
+    method @Deprecated public void getChars(int, int, char[], int);
+    method @Deprecated public int length();
+    method @Deprecated public static android.text.AlteredCharSequence make(CharSequence, char[], int, int);
+    method @Deprecated public CharSequence subSequence(int, int);
+  }
+
+  @Deprecated public class AndroidCharacter {
+    ctor @Deprecated public AndroidCharacter();
+    method @Deprecated public static void getDirectionalities(char[], byte[], int);
+    method @Deprecated public static int getEastAsianWidth(char);
+    method @Deprecated public static void getEastAsianWidths(char[], int, int, byte[]);
+    method @Deprecated public static char getMirror(char);
+    method @Deprecated public static boolean mirror(char[], int, int);
+    field @Deprecated public static final int EAST_ASIAN_WIDTH_AMBIGUOUS = 1; // 0x1
+    field @Deprecated public static final int EAST_ASIAN_WIDTH_FULL_WIDTH = 3; // 0x3
+    field @Deprecated public static final int EAST_ASIAN_WIDTH_HALF_WIDTH = 2; // 0x2
+    field @Deprecated public static final int EAST_ASIAN_WIDTH_NARROW = 4; // 0x4
+    field @Deprecated public static final int EAST_ASIAN_WIDTH_NEUTRAL = 0; // 0x0
+    field @Deprecated public static final int EAST_ASIAN_WIDTH_WIDE = 5; // 0x5
+  }
+
+  public class Annotation implements android.text.ParcelableSpan {
+    ctor public Annotation(String, String);
+    ctor public Annotation(android.os.Parcel);
+    method public int describeContents();
+    method public String getKey();
+    method public int getSpanTypeId();
+    method public String getValue();
+    method public void writeToParcel(android.os.Parcel, int);
+  }
+
+  public class AutoText {
+    method public static String get(CharSequence, int, int, android.view.View);
+    method public static int getSize(android.view.View);
+  }
+
+  public final class BidiFormatter {
+    method public static android.text.BidiFormatter getInstance();
+    method public static android.text.BidiFormatter getInstance(boolean);
+    method public static android.text.BidiFormatter getInstance(java.util.Locale);
+    method public boolean getStereoReset();
+    method public boolean isRtl(String);
+    method public boolean isRtl(CharSequence);
+    method public boolean isRtlContext();
+    method @Nullable public String unicodeWrap(@Nullable String, android.text.TextDirectionHeuristic, boolean);
+    method @Nullable public CharSequence unicodeWrap(@Nullable CharSequence, android.text.TextDirectionHeuristic, boolean);
+    method public String unicodeWrap(String, android.text.TextDirectionHeuristic);
+    method public CharSequence unicodeWrap(CharSequence, android.text.TextDirectionHeuristic);
+    method public String unicodeWrap(String, boolean);
+    method public CharSequence unicodeWrap(CharSequence, boolean);
+    method public String unicodeWrap(String);
+    method public CharSequence unicodeWrap(CharSequence);
+  }
+
+  public static final class BidiFormatter.Builder {
+    ctor public BidiFormatter.Builder();
+    ctor public BidiFormatter.Builder(boolean);
+    ctor public BidiFormatter.Builder(java.util.Locale);
+    method public android.text.BidiFormatter build();
+    method public android.text.BidiFormatter.Builder setTextDirectionHeuristic(android.text.TextDirectionHeuristic);
+    method public android.text.BidiFormatter.Builder stereoReset(boolean);
+  }
+
+  public class BoringLayout extends android.text.Layout implements android.text.TextUtils.EllipsizeCallback {
+    ctor public BoringLayout(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean);
+    ctor public BoringLayout(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean, android.text.TextUtils.TruncateAt, int);
+    method public void ellipsized(int, int);
+    method public int getBottomPadding();
+    method public int getEllipsisCount(int);
+    method public int getEllipsisStart(int);
+    method public boolean getLineContainsTab(int);
+    method public int getLineCount();
+    method public int getLineDescent(int);
+    method public final android.text.Layout.Directions getLineDirections(int);
+    method public int getLineStart(int);
+    method public int getLineTop(int);
+    method public int getParagraphDirection(int);
+    method public int getTopPadding();
+    method public static android.text.BoringLayout.Metrics isBoring(CharSequence, android.text.TextPaint);
+    method public static android.text.BoringLayout.Metrics isBoring(CharSequence, android.text.TextPaint, android.text.BoringLayout.Metrics);
+    method public static android.text.BoringLayout make(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean);
+    method public static android.text.BoringLayout make(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean, android.text.TextUtils.TruncateAt, int);
+    method public android.text.BoringLayout replaceOrMake(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean);
+    method public android.text.BoringLayout replaceOrMake(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean, android.text.TextUtils.TruncateAt, int);
+  }
+
+  public static class BoringLayout.Metrics extends android.graphics.Paint.FontMetricsInt {
+    ctor public BoringLayout.Metrics();
+    field public int width;
+  }
+
+  @Deprecated public abstract class ClipboardManager {
+    ctor @Deprecated public ClipboardManager();
+    method @Deprecated public abstract CharSequence getText();
+    method @Deprecated public abstract boolean hasText();
+    method @Deprecated public abstract void setText(CharSequence);
+  }
+
+  public class DynamicLayout extends android.text.Layout {
+    ctor @Deprecated public DynamicLayout(@NonNull CharSequence, @NonNull android.text.TextPaint, @IntRange(from=0) int, @NonNull android.text.Layout.Alignment, @FloatRange(from=0.0) float, float, boolean);
+    ctor @Deprecated public DynamicLayout(@NonNull CharSequence, @NonNull CharSequence, @NonNull android.text.TextPaint, @IntRange(from=0) int, @NonNull android.text.Layout.Alignment, @FloatRange(from=0.0) float, float, boolean);
+    ctor @Deprecated public DynamicLayout(@NonNull CharSequence, @NonNull CharSequence, @NonNull android.text.TextPaint, @IntRange(from=0) int, @NonNull android.text.Layout.Alignment, @FloatRange(from=0.0) float, float, boolean, @Nullable android.text.TextUtils.TruncateAt, @IntRange(from=0) int);
+    method public int getBottomPadding();
+    method public int getEllipsisCount(int);
+    method public int getEllipsisStart(int);
+    method public boolean getLineContainsTab(int);
+    method public int getLineCount();
+    method public int getLineDescent(int);
+    method public final android.text.Layout.Directions getLineDirections(int);
+    method public int getLineStart(int);
+    method public int getLineTop(int);
+    method public int getParagraphDirection(int);
+    method public int getTopPadding();
+  }
+
+  public static final class DynamicLayout.Builder {
+    method @NonNull public android.text.DynamicLayout build();
+    method @NonNull public static android.text.DynamicLayout.Builder obtain(@NonNull CharSequence, @NonNull android.text.TextPaint, @IntRange(from=0) int);
+    method @NonNull public android.text.DynamicLayout.Builder setAlignment(@NonNull android.text.Layout.Alignment);
+    method @NonNull public android.text.DynamicLayout.Builder setBreakStrategy(int);
+    method @NonNull public android.text.DynamicLayout.Builder setDisplayText(@NonNull CharSequence);
+    method public android.text.DynamicLayout.Builder setEllipsize(@Nullable android.text.TextUtils.TruncateAt);
+    method @NonNull public android.text.DynamicLayout.Builder setEllipsizedWidth(@IntRange(from=0) int);
+    method @NonNull public android.text.DynamicLayout.Builder setHyphenationFrequency(int);
+    method @NonNull public android.text.DynamicLayout.Builder setIncludePad(boolean);
+    method @NonNull public android.text.DynamicLayout.Builder setJustificationMode(int);
+    method @NonNull public android.text.DynamicLayout.Builder setLineSpacing(float, @FloatRange(from=0.0) float);
+    method @NonNull public android.text.DynamicLayout.Builder setTextDirection(@NonNull android.text.TextDirectionHeuristic);
+    method @NonNull public android.text.DynamicLayout.Builder setUseLineSpacingFromFallbacks(boolean);
+  }
+
+  public interface Editable extends java.lang.CharSequence java.lang.Appendable android.text.GetChars android.text.Spannable {
+    method public android.text.Editable append(CharSequence);
+    method public android.text.Editable append(CharSequence, int, int);
+    method public android.text.Editable append(char);
+    method public void clear();
+    method public void clearSpans();
+    method public android.text.Editable delete(int, int);
+    method public android.text.InputFilter[] getFilters();
+    method public android.text.Editable insert(int, CharSequence, int, int);
+    method public android.text.Editable insert(int, CharSequence);
+    method public android.text.Editable replace(int, int, CharSequence, int, int);
+    method public android.text.Editable replace(int, int, CharSequence);
+    method public void setFilters(android.text.InputFilter[]);
+  }
+
+  public static class Editable.Factory {
+    ctor public Editable.Factory();
+    method public static android.text.Editable.Factory getInstance();
+    method public android.text.Editable newEditable(CharSequence);
+  }
+
+  public interface GetChars extends java.lang.CharSequence {
+    method public void getChars(int, int, char[], int);
+  }
+
+  public class Html {
+    method public static String escapeHtml(CharSequence);
+    method @Deprecated public static android.text.Spanned fromHtml(String);
+    method public static android.text.Spanned fromHtml(String, int);
+    method @Deprecated public static android.text.Spanned fromHtml(String, android.text.Html.ImageGetter, android.text.Html.TagHandler);
+    method public static android.text.Spanned fromHtml(String, int, android.text.Html.ImageGetter, android.text.Html.TagHandler);
+    method @Deprecated public static String toHtml(android.text.Spanned);
+    method public static String toHtml(android.text.Spanned, int);
+    field public static final int FROM_HTML_MODE_COMPACT = 63; // 0x3f
+    field public static final int FROM_HTML_MODE_LEGACY = 0; // 0x0
+    field public static final int FROM_HTML_OPTION_USE_CSS_COLORS = 256; // 0x100
+    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_BLOCKQUOTE = 32; // 0x20
+    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_DIV = 16; // 0x10
+    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_HEADING = 2; // 0x2
+    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_LIST = 8; // 0x8
+    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_LIST_ITEM = 4; // 0x4
+    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_PARAGRAPH = 1; // 0x1
+    field public static final int TO_HTML_PARAGRAPH_LINES_CONSECUTIVE = 0; // 0x0
+    field public static final int TO_HTML_PARAGRAPH_LINES_INDIVIDUAL = 1; // 0x1
+  }
+
+  public static interface Html.ImageGetter {
+    method public android.graphics.drawable.Drawable getDrawable(String);
+  }
+
+  public static interface Html.TagHandler {
+    method public void handleTag(boolean, String, android.text.Editable, org.xml.sax.XMLReader);
+  }
+
+  public interface InputFilter {
+    method public CharSequence filter(CharSequence, int, int, android.text.Spanned, int, int);
+  }
+
+  public static class InputFilter.AllCaps implements android.text.InputFilter {
+    ctor public InputFilter.AllCaps();
+    ctor public InputFilter.AllCaps(@NonNull java.util.Locale);
+    method public CharSequence filter(CharSequence, int, int, android.text.Spanned, int, int);
+  }
+
+  public static class InputFilter.LengthFilter implements android.text.InputFilter {
+    ctor public InputFilter.LengthFilter(int);
+    method public CharSequence filter(CharSequence, int, int, android.text.Spanned, int, int);
+    method public int getMax();
+  }
+
+  public interface InputType {
+    field public static final int TYPE_CLASS_DATETIME = 4; // 0x4
+    field public static final int TYPE_CLASS_NUMBER = 2; // 0x2
+    field public static final int TYPE_CLASS_PHONE = 3; // 0x3
+    field public static final int TYPE_CLASS_TEXT = 1; // 0x1
+    field public static final int TYPE_DATETIME_VARIATION_DATE = 16; // 0x10
+    field public static final int TYPE_DATETIME_VARIATION_NORMAL = 0; // 0x0
+    field public static final int TYPE_DATETIME_VARIATION_TIME = 32; // 0x20
+    field public static final int TYPE_MASK_CLASS = 15; // 0xf
+    field public static final int TYPE_MASK_FLAGS = 16773120; // 0xfff000
+    field public static final int TYPE_MASK_VARIATION = 4080; // 0xff0
+    field public static final int TYPE_NULL = 0; // 0x0
+    field public static final int TYPE_NUMBER_FLAG_DECIMAL = 8192; // 0x2000
+    field public static final int TYPE_NUMBER_FLAG_SIGNED = 4096; // 0x1000
+    field public static final int TYPE_NUMBER_VARIATION_NORMAL = 0; // 0x0
+    field public static final int TYPE_NUMBER_VARIATION_PASSWORD = 16; // 0x10
+    field public static final int TYPE_TEXT_FLAG_AUTO_COMPLETE = 65536; // 0x10000
+    field public static final int TYPE_TEXT_FLAG_AUTO_CORRECT = 32768; // 0x8000
+    field public static final int TYPE_TEXT_FLAG_CAP_CHARACTERS = 4096; // 0x1000
+    field public static final int TYPE_TEXT_FLAG_CAP_SENTENCES = 16384; // 0x4000
+    field public static final int TYPE_TEXT_FLAG_CAP_WORDS = 8192; // 0x2000
+    field public static final int TYPE_TEXT_FLAG_IME_MULTI_LINE = 262144; // 0x40000
+    field public static final int TYPE_TEXT_FLAG_MULTI_LINE = 131072; // 0x20000
+    field public static final int TYPE_TEXT_FLAG_NO_SUGGESTIONS = 524288; // 0x80000
+    field public static final int TYPE_TEXT_VARIATION_EMAIL_ADDRESS = 32; // 0x20
+    field public static final int TYPE_TEXT_VARIATION_EMAIL_SUBJECT = 48; // 0x30
+    field public static final int TYPE_TEXT_VARIATION_FILTER = 176; // 0xb0
+    field public static final int TYPE_TEXT_VARIATION_LONG_MESSAGE = 80; // 0x50
+    field public static final int TYPE_TEXT_VARIATION_NORMAL = 0; // 0x0
+    field public static final int TYPE_TEXT_VARIATION_PASSWORD = 128; // 0x80
+    field public static final int TYPE_TEXT_VARIATION_PERSON_NAME = 96; // 0x60
+    field public static final int TYPE_TEXT_VARIATION_PHONETIC = 192; // 0xc0
+    field public static final int TYPE_TEXT_VARIATION_POSTAL_ADDRESS = 112; // 0x70
+    field public static final int TYPE_TEXT_VARIATION_SHORT_MESSAGE = 64; // 0x40
+    field public static final int TYPE_TEXT_VARIATION_URI = 16; // 0x10
+    field public static final int TYPE_TEXT_VARIATION_VISIBLE_PASSWORD = 144; // 0x90
+    field public static final int TYPE_TEXT_VARIATION_WEB_EDIT_TEXT = 160; // 0xa0
+    field public static final int TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS = 208; // 0xd0
+    field public static final int TYPE_TEXT_VARIATION_WEB_PASSWORD = 224; // 0xe0
+  }
+
+  public abstract class Layout {
+    ctor protected Layout(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float);
+    method public void draw(android.graphics.Canvas);
+    method public void draw(android.graphics.Canvas, android.graphics.Path, android.graphics.Paint, int);
+    method public final android.text.Layout.Alignment getAlignment();
+    method public abstract int getBottomPadding();
+    method public void getCursorPath(int, android.graphics.Path, CharSequence);
+    method public static float getDesiredWidth(CharSequence, android.text.TextPaint);
+    method public static float getDesiredWidth(CharSequence, int, int, android.text.TextPaint);
+    method public abstract int getEllipsisCount(int);
+    method public abstract int getEllipsisStart(int);
+    method public int getEllipsizedWidth();
+    method public int getHeight();
+    method public final int getLineAscent(int);
+    method public final int getLineBaseline(int);
+    method public final int getLineBottom(int);
+    method public int getLineBounds(int, android.graphics.Rect);
+    method public abstract boolean getLineContainsTab(int);
+    method public abstract int getLineCount();
+    method public abstract int getLineDescent(int);
+    method public abstract android.text.Layout.Directions getLineDirections(int);
+    method public final int getLineEnd(int);
+    method public int getLineForOffset(int);
+    method public int getLineForVertical(int);
+    method public float getLineLeft(int);
+    method public float getLineMax(int);
+    method public float getLineRight(int);
+    method public abstract int getLineStart(int);
+    method public abstract int getLineTop(int);
+    method public int getLineVisibleEnd(int);
+    method public float getLineWidth(int);
+    method public int getOffsetForHorizontal(int, float);
+    method public int getOffsetToLeftOf(int);
+    method public int getOffsetToRightOf(int);
+    method public final android.text.TextPaint getPaint();
+    method public final android.text.Layout.Alignment getParagraphAlignment(int);
+    method public abstract int getParagraphDirection(int);
+    method public final int getParagraphLeft(int);
+    method public final int getParagraphRight(int);
+    method public float getPrimaryHorizontal(int);
+    method public float getSecondaryHorizontal(int);
+    method public void getSelectionPath(int, int, android.graphics.Path);
+    method public final float getSpacingAdd();
+    method public final float getSpacingMultiplier();
+    method public final CharSequence getText();
+    method public abstract int getTopPadding();
+    method public final int getWidth();
+    method public final void increaseWidthTo(int);
+    method public boolean isRtlCharAt(int);
+    method protected final boolean isSpanned();
+    field public static final int BREAK_STRATEGY_BALANCED = 2; // 0x2
+    field public static final int BREAK_STRATEGY_HIGH_QUALITY = 1; // 0x1
+    field public static final int BREAK_STRATEGY_SIMPLE = 0; // 0x0
+    field public static final float DEFAULT_LINESPACING_ADDITION = 0.0f;
+    field public static final float DEFAULT_LINESPACING_MULTIPLIER = 1.0f;
+    field public static final int DIR_LEFT_TO_RIGHT = 1; // 0x1
+    field public static final int DIR_RIGHT_TO_LEFT = -1; // 0xffffffff
+    field public static final int HYPHENATION_FREQUENCY_FULL = 2; // 0x2
+    field public static final int HYPHENATION_FREQUENCY_NONE = 0; // 0x0
+    field public static final int HYPHENATION_FREQUENCY_NORMAL = 1; // 0x1
+    field public static final int JUSTIFICATION_MODE_INTER_WORD = 1; // 0x1
+    field public static final int JUSTIFICATION_MODE_NONE = 0; // 0x0
+  }
+
+  public enum Layout.Alignment {
+    enum_constant public static final android.text.Layout.Alignment ALIGN_CENTER;
+    enum_constant public static final android.text.Layout.Alignment ALIGN_NORMAL;
+    enum_constant public static final android.text.Layout.Alignment ALIGN_OPPOSITE;
+  }
+
+  public static class Layout.Directions {
+  }
+
+  @Deprecated public abstract class LoginFilter implements android.text.InputFilter {
+    method @Deprecated public CharSequence filter(CharSequence, int, int, android.text.Spanned, int, int);
+    method @Deprecated public abstract boolean isAllowed(char);
+    method @Deprecated public void onInvalidCharacter(char);
+    method @Deprecated public void onStart();
+    method @Deprecated public void onStop();
+  }
+
+  @Deprecated public static class LoginFilter.PasswordFilterGMail extends android.text.LoginFilter {
+    ctor @Deprecated public LoginFilter.PasswordFilterGMail();
+    ctor @Deprecated public LoginFilter.PasswordFilterGMail(boolean);
+    method @Deprecated public boolean isAllowed(char);
+  }
+
+  @Deprecated public static class LoginFilter.UsernameFilterGMail extends android.text.LoginFilter {
+    ctor @Deprecated public LoginFilter.UsernameFilterGMail();
+    ctor @Deprecated public LoginFilter.UsernameFilterGMail(boolean);
+    method @Deprecated public boolean isAllowed(char);
+  }
+
+  @Deprecated public static class LoginFilter.UsernameFilterGeneric extends android.text.LoginFilter {
+    ctor @Deprecated public LoginFilter.UsernameFilterGeneric();
+    ctor @Deprecated public LoginFilter.UsernameFilterGeneric(boolean);
+    method @Deprecated public boolean isAllowed(char);
+  }
+
+  public interface NoCopySpan {
+  }
+
+  public static class NoCopySpan.Concrete implements android.text.NoCopySpan {
+    ctor public NoCopySpan.Concrete();
+  }
+
+  public interface ParcelableSpan extends android.os.Parcelable {
+    method public int getSpanTypeId();
+  }
+
+  public class PrecomputedText implements android.text.Spannable {
+    method public char charAt(int);
+    method public static android.text.PrecomputedText create(@NonNull CharSequence, @NonNull android.text.PrecomputedText.Params);
+    method public void getBounds(@IntRange(from=0) int, @IntRange(from=0) int, @NonNull android.graphics.Rect);
+    method @IntRange(from=0) public int getParagraphCount();
+    method @IntRange(from=0) public int getParagraphEnd(@IntRange(from=0) int);
+    method @IntRange(from=0) public int getParagraphStart(@IntRange(from=0) int);
+    method @NonNull public android.text.PrecomputedText.Params getParams();
+    method public int getSpanEnd(Object);
+    method public int getSpanFlags(Object);
+    method public int getSpanStart(Object);
+    method public <T> T[] getSpans(int, int, Class<T>);
+    method @FloatRange(from=0) public float getWidth(@IntRange(from=0) int, @IntRange(from=0) int);
+    method public int length();
+    method public int nextSpanTransition(int, int, Class);
+    method public void removeSpan(Object);
+    method public void setSpan(Object, int, int, int);
+    method public CharSequence subSequence(int, int);
+  }
+
+  public static final class PrecomputedText.Params {
+    method public int getBreakStrategy();
+    method public int getHyphenationFrequency();
+    method @NonNull public android.text.TextDirectionHeuristic getTextDirection();
+    method @NonNull public android.text.TextPaint getTextPaint();
+  }
+
+  public static class PrecomputedText.Params.Builder {
+    ctor public PrecomputedText.Params.Builder(@NonNull android.text.TextPaint);
+    ctor public PrecomputedText.Params.Builder(@NonNull android.text.PrecomputedText.Params);
+    method @NonNull public android.text.PrecomputedText.Params build();
+    method public android.text.PrecomputedText.Params.Builder setBreakStrategy(int);
+    method public android.text.PrecomputedText.Params.Builder setHyphenationFrequency(int);
+    method public android.text.PrecomputedText.Params.Builder setTextDirection(@NonNull android.text.TextDirectionHeuristic);
+  }
+
+  public class Selection {
+    method public static boolean extendDown(android.text.Spannable, android.text.Layout);
+    method public static boolean extendLeft(android.text.Spannable, android.text.Layout);
+    method public static boolean extendRight(android.text.Spannable, android.text.Layout);
+    method public static final void extendSelection(android.text.Spannable, int);
+    method public static boolean extendToLeftEdge(android.text.Spannable, android.text.Layout);
+    method public static boolean extendToRightEdge(android.text.Spannable, android.text.Layout);
+    method public static boolean extendUp(android.text.Spannable, android.text.Layout);
+    method public static final int getSelectionEnd(CharSequence);
+    method public static final int getSelectionStart(CharSequence);
+    method public static boolean moveDown(android.text.Spannable, android.text.Layout);
+    method public static boolean moveLeft(android.text.Spannable, android.text.Layout);
+    method public static boolean moveRight(android.text.Spannable, android.text.Layout);
+    method public static boolean moveToLeftEdge(android.text.Spannable, android.text.Layout);
+    method public static boolean moveToRightEdge(android.text.Spannable, android.text.Layout);
+    method public static boolean moveUp(android.text.Spannable, android.text.Layout);
+    method public static final void removeSelection(android.text.Spannable);
+    method public static final void selectAll(android.text.Spannable);
+    method public static void setSelection(android.text.Spannable, int, int);
+    method public static final void setSelection(android.text.Spannable, int);
+    field public static final Object SELECTION_END;
+    field public static final Object SELECTION_START;
+  }
+
+  public interface SpanWatcher extends android.text.NoCopySpan {
+    method public void onSpanAdded(android.text.Spannable, Object, int, int);
+    method public void onSpanChanged(android.text.Spannable, Object, int, int, int, int);
+    method public void onSpanRemoved(android.text.Spannable, Object, int, int);
+  }
+
+  public interface Spannable extends android.text.Spanned {
+    method public void removeSpan(Object);
+    method public void setSpan(Object, int, int, int);
+  }
+
+  public static class Spannable.Factory {
+    ctor public Spannable.Factory();
+    method public static android.text.Spannable.Factory getInstance();
+    method public android.text.Spannable newSpannable(CharSequence);
+  }
+
+  public class SpannableString implements java.lang.CharSequence android.text.GetChars android.text.Spannable {
+    ctor public SpannableString(CharSequence);
+    method public final char charAt(int);
+    method public final void getChars(int, int, char[], int);
+    method public int getSpanEnd(Object);
+    method public int getSpanFlags(Object);
+    method public int getSpanStart(Object);
+    method public <T> T[] getSpans(int, int, Class<T>);
+    method public final int length();
+    method public int nextSpanTransition(int, int, Class);
+    method public void removeSpan(Object);
+    method public void setSpan(Object, int, int, int);
+    method public final CharSequence subSequence(int, int);
+    method public final String toString();
+    method public static android.text.SpannableString valueOf(CharSequence);
+  }
+
+  public class SpannableStringBuilder implements java.lang.Appendable java.lang.CharSequence android.text.Editable android.text.GetChars android.text.Spannable {
+    ctor public SpannableStringBuilder();
+    ctor public SpannableStringBuilder(CharSequence);
+    ctor public SpannableStringBuilder(CharSequence, int, int);
+    method public android.text.SpannableStringBuilder append(CharSequence);
+    method public android.text.SpannableStringBuilder append(CharSequence, Object, int);
+    method public android.text.SpannableStringBuilder append(CharSequence, int, int);
+    method public android.text.SpannableStringBuilder append(char);
+    method public char charAt(int);
+    method public void clear();
+    method public void clearSpans();
+    method public android.text.SpannableStringBuilder delete(int, int);
+    method public void getChars(int, int, char[], int);
+    method public android.text.InputFilter[] getFilters();
+    method public int getSpanEnd(Object);
+    method public int getSpanFlags(Object);
+    method public int getSpanStart(Object);
+    method public <T> T[] getSpans(int, int, @Nullable Class<T>);
+    method @Deprecated public int getTextRunCursor(int, int, int, int, int, android.graphics.Paint);
+    method public int getTextWatcherDepth();
+    method public android.text.SpannableStringBuilder insert(int, CharSequence, int, int);
+    method public android.text.SpannableStringBuilder insert(int, CharSequence);
+    method public int length();
+    method public int nextSpanTransition(int, int, Class);
+    method public void removeSpan(Object);
+    method public android.text.SpannableStringBuilder replace(int, int, CharSequence);
+    method public android.text.SpannableStringBuilder replace(int, int, CharSequence, int, int);
+    method public void setFilters(android.text.InputFilter[]);
+    method public void setSpan(Object, int, int, int);
+    method public CharSequence subSequence(int, int);
+    method public static android.text.SpannableStringBuilder valueOf(CharSequence);
+  }
+
+  public interface Spanned extends java.lang.CharSequence {
+    method public int getSpanEnd(Object);
+    method public int getSpanFlags(Object);
+    method public int getSpanStart(Object);
+    method public <T> T[] getSpans(int, int, Class<T>);
+    method public int nextSpanTransition(int, int, Class);
+    field public static final int SPAN_COMPOSING = 256; // 0x100
+    field public static final int SPAN_EXCLUSIVE_EXCLUSIVE = 33; // 0x21
+    field public static final int SPAN_EXCLUSIVE_INCLUSIVE = 34; // 0x22
+    field public static final int SPAN_INCLUSIVE_EXCLUSIVE = 17; // 0x11
+    field public static final int SPAN_INCLUSIVE_INCLUSIVE = 18; // 0x12
+    field public static final int SPAN_INTERMEDIATE = 512; // 0x200
+    field public static final int SPAN_MARK_MARK = 17; // 0x11
+    field public static final int SPAN_MARK_POINT = 18; // 0x12
+    field public static final int SPAN_PARAGRAPH = 51; // 0x33
+    field public static final int SPAN_POINT_MARK = 33; // 0x21
+    field public static final int SPAN_POINT_MARK_MASK = 51; // 0x33
+    field public static final int SPAN_POINT_POINT = 34; // 0x22
+    field public static final int SPAN_PRIORITY = 16711680; // 0xff0000
+    field public static final int SPAN_PRIORITY_SHIFT = 16; // 0x10
+    field public static final int SPAN_USER = -16777216; // 0xff000000
+    field public static final int SPAN_USER_SHIFT = 24; // 0x18
+  }
+
+  public final class SpannedString implements java.lang.CharSequence android.text.GetChars android.text.Spanned {
+    ctor public SpannedString(CharSequence);
+    method public final char charAt(int);
+    method public final void getChars(int, int, char[], int);
+    method public int getSpanEnd(Object);
+    method public int getSpanFlags(Object);
+    method public int getSpanStart(Object);
+    method public <T> T[] getSpans(int, int, Class<T>);
+    method public final int length();
+    method public int nextSpanTransition(int, int, Class);
+    method public CharSequence subSequence(int, int);
+    method public static android.text.SpannedString valueOf(CharSequence);
+  }
+
+  public class StaticLayout extends android.text.Layout {
+    ctor @Deprecated public StaticLayout(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, boolean);
+    ctor @Deprecated public StaticLayout(CharSequence, int, int, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, boolean);
+    ctor @Deprecated public StaticLayout(CharSequence, int, int, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, boolean, android.text.TextUtils.TruncateAt, int);
+    method public int getBottomPadding();
+    method public int getEllipsisCount(int);
+    method public int getEllipsisStart(int);
+    method public boolean getLineContainsTab(int);
+    method public int getLineCount();
+    method public int getLineDescent(int);
+    method public final android.text.Layout.Directions getLineDirections(int);
+    method public int getLineStart(int);
+    method public int getLineTop(int);
+    method public int getParagraphDirection(int);
+    method public int getTopPadding();
+  }
+
+  public static final class StaticLayout.Builder {
+    method @NonNull public android.text.StaticLayout build();
+    method @NonNull public static android.text.StaticLayout.Builder obtain(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @NonNull android.text.TextPaint, @IntRange(from=0) int);
+    method @NonNull public android.text.StaticLayout.Builder setAlignment(@NonNull android.text.Layout.Alignment);
+    method @NonNull public android.text.StaticLayout.Builder setBreakStrategy(int);
+    method @NonNull public android.text.StaticLayout.Builder setEllipsize(@Nullable android.text.TextUtils.TruncateAt);
+    method @NonNull public android.text.StaticLayout.Builder setEllipsizedWidth(@IntRange(from=0) int);
+    method @NonNull public android.text.StaticLayout.Builder setHyphenationFrequency(int);
+    method @NonNull public android.text.StaticLayout.Builder setIncludePad(boolean);
+    method @NonNull public android.text.StaticLayout.Builder setIndents(@Nullable int[], @Nullable int[]);
+    method @NonNull public android.text.StaticLayout.Builder setJustificationMode(int);
+    method @NonNull public android.text.StaticLayout.Builder setLineSpacing(float, @FloatRange(from=0.0) float);
+    method @NonNull public android.text.StaticLayout.Builder setMaxLines(@IntRange(from=0) int);
+    method public android.text.StaticLayout.Builder setText(CharSequence);
+    method @NonNull public android.text.StaticLayout.Builder setTextDirection(@NonNull android.text.TextDirectionHeuristic);
+    method @NonNull public android.text.StaticLayout.Builder setUseLineSpacingFromFallbacks(boolean);
+  }
+
+  public interface TextDirectionHeuristic {
+    method public boolean isRtl(char[], int, int);
+    method public boolean isRtl(CharSequence, int, int);
+  }
+
+  public class TextDirectionHeuristics {
+    ctor public TextDirectionHeuristics();
+    field public static final android.text.TextDirectionHeuristic ANYRTL_LTR;
+    field public static final android.text.TextDirectionHeuristic FIRSTSTRONG_LTR;
+    field public static final android.text.TextDirectionHeuristic FIRSTSTRONG_RTL;
+    field public static final android.text.TextDirectionHeuristic LOCALE;
+    field public static final android.text.TextDirectionHeuristic LTR;
+    field public static final android.text.TextDirectionHeuristic RTL;
+  }
+
+  public class TextPaint extends android.graphics.Paint {
+    ctor public TextPaint();
+    ctor public TextPaint(int);
+    ctor public TextPaint(android.graphics.Paint);
+    method public void set(android.text.TextPaint);
+    field public int baselineShift;
+    field @ColorInt public int bgColor;
+    field public float density;
+    field public int[] drawableState;
+    field @ColorInt public int linkColor;
+    field @ColorInt public int underlineColor;
+    field @Px public float underlineThickness;
+  }
+
+  public class TextUtils {
+    method @Deprecated public static CharSequence commaEllipsize(CharSequence, android.text.TextPaint, float, String, String);
+    method public static CharSequence concat(java.lang.CharSequence...);
+    method public static void copySpansFrom(android.text.Spanned, int, int, Class, android.text.Spannable, int);
+    method public static void dumpSpans(CharSequence, android.util.Printer, String);
+    method public static CharSequence ellipsize(CharSequence, android.text.TextPaint, float, android.text.TextUtils.TruncateAt);
+    method public static CharSequence ellipsize(CharSequence, android.text.TextPaint, float, android.text.TextUtils.TruncateAt, boolean, @Nullable android.text.TextUtils.EllipsizeCallback);
+    method public static boolean equals(CharSequence, CharSequence);
+    method public static CharSequence expandTemplate(CharSequence, java.lang.CharSequence...);
+    method public static int getCapsMode(CharSequence, int, int);
+    method public static void getChars(CharSequence, int, int, char[], int);
+    method public static int getLayoutDirectionFromLocale(java.util.Locale);
+    method public static int getOffsetAfter(CharSequence, int);
+    method public static int getOffsetBefore(CharSequence, int);
+    method @Deprecated public static CharSequence getReverse(CharSequence, int, int);
+    method public static int getTrimmedLength(CharSequence);
+    method public static String htmlEncode(String);
+    method public static int indexOf(CharSequence, char);
+    method public static int indexOf(CharSequence, char, int);
+    method public static int indexOf(CharSequence, char, int, int);
+    method public static int indexOf(CharSequence, CharSequence);
+    method public static int indexOf(CharSequence, CharSequence, int);
+    method public static int indexOf(CharSequence, CharSequence, int, int);
+    method public static boolean isDigitsOnly(CharSequence);
+    method public static boolean isEmpty(@Nullable CharSequence);
+    method public static boolean isGraphic(CharSequence);
+    method @Deprecated public static boolean isGraphic(char);
+    method public static String join(@NonNull CharSequence, @NonNull Object[]);
+    method public static String join(@NonNull CharSequence, @NonNull Iterable);
+    method public static int lastIndexOf(CharSequence, char);
+    method public static int lastIndexOf(CharSequence, char, int);
+    method public static int lastIndexOf(CharSequence, char, int, int);
+    method public static CharSequence listEllipsize(@Nullable android.content.Context, @Nullable java.util.List<java.lang.CharSequence>, @NonNull String, @NonNull android.text.TextPaint, @FloatRange(from=0.0, fromInclusive=false) float, @PluralsRes int);
+    method @NonNull public static CharSequence makeSafeForPresentation(@NonNull String, @IntRange(from=0) int, @FloatRange(from=0) float, int);
+    method public static boolean regionMatches(CharSequence, int, CharSequence, int, int);
+    method public static CharSequence replace(CharSequence, String[], CharSequence[]);
+    method public static String[] split(String, String);
+    method public static String[] split(String, java.util.regex.Pattern);
+    method public static CharSequence stringOrSpannedString(CharSequence);
+    method public static String substring(CharSequence, int, int);
+    method public static void writeToParcel(@Nullable CharSequence, @NonNull android.os.Parcel, int);
+    field public static final int CAP_MODE_CHARACTERS = 4096; // 0x1000
+    field public static final int CAP_MODE_SENTENCES = 16384; // 0x4000
+    field public static final int CAP_MODE_WORDS = 8192; // 0x2000
+    field public static final android.os.Parcelable.Creator<java.lang.CharSequence> CHAR_SEQUENCE_CREATOR;
+    field public static final int SAFE_STRING_FLAG_FIRST_LINE = 4; // 0x4
+    field public static final int SAFE_STRING_FLAG_SINGLE_LINE = 2; // 0x2
+    field public static final int SAFE_STRING_FLAG_TRIM = 1; // 0x1
+  }
+
+  public static interface TextUtils.EllipsizeCallback {
+    method public void ellipsized(int, int);
+  }
+
+  public static class TextUtils.SimpleStringSplitter implements java.util.Iterator<java.lang.String> android.text.TextUtils.StringSplitter {
+    ctor public TextUtils.SimpleStringSplitter(char);
+    method public boolean hasNext();
+    method public java.util.Iterator<java.lang.String> iterator();
+    method public String next();
+    method public void setString(String);
+  }
+
+  public static interface TextUtils.StringSplitter extends java.lang.Iterable<java.lang.String> {
+    method public void setString(String);
+  }
+
+  public enum TextUtils.TruncateAt {
+    enum_constant public static final android.text.TextUtils.TruncateAt END;
+    enum_constant public static final android.text.TextUtils.TruncateAt MARQUEE;
+    enum_constant public static final android.text.TextUtils.TruncateAt MIDDLE;
+    enum_constant public static final android.text.TextUtils.TruncateAt START;
+  }
+
+  public interface TextWatcher extends android.text.NoCopySpan {
+    method public void afterTextChanged(android.text.Editable);
+    method public void beforeTextChanged(CharSequence, int, int, int);
+    method public void onTextChanged(CharSequence, int, int, int);
+  }
+
+}
+
+package android.text.format {
+
+  public class DateFormat {
+    ctor public DateFormat();
+    method public static CharSequence format(CharSequence, long);
+    method public static CharSequence format(CharSequence, java.util.Date);
+    method public static CharSequence format(CharSequence, java.util.Calendar);
+    method public static String getBestDateTimePattern(java.util.Locale, String);
+    method public static java.text.DateFormat getDateFormat(android.content.Context);
+    method public static char[] getDateFormatOrder(android.content.Context);
+    method public static java.text.DateFormat getLongDateFormat(android.content.Context);
+    method public static java.text.DateFormat getMediumDateFormat(android.content.Context);
+    method public static java.text.DateFormat getTimeFormat(android.content.Context);
+    method public static boolean is24HourFormat(android.content.Context);
+  }
+
+  public class DateUtils {
+    ctor public DateUtils();
+    method public static String formatDateRange(android.content.Context, long, long, int);
+    method public static java.util.Formatter formatDateRange(android.content.Context, java.util.Formatter, long, long, int);
+    method public static java.util.Formatter formatDateRange(android.content.Context, java.util.Formatter, long, long, int, String);
+    method public static String formatDateTime(android.content.Context, long, int);
+    method public static String formatElapsedTime(long);
+    method public static String formatElapsedTime(StringBuilder, long);
+    method public static final CharSequence formatSameDayTime(long, long, int, int);
+    method @Deprecated public static String getAMPMString(int);
+    method @Deprecated public static String getDayOfWeekString(int, int);
+    method @Deprecated public static String getMonthString(int, int);
+    method public static CharSequence getRelativeDateTimeString(android.content.Context, long, long, long, int);
+    method public static CharSequence getRelativeTimeSpanString(long);
+    method public static CharSequence getRelativeTimeSpanString(long, long, long);
+    method public static CharSequence getRelativeTimeSpanString(long, long, long, int);
+    method public static CharSequence getRelativeTimeSpanString(android.content.Context, long, boolean);
+    method public static CharSequence getRelativeTimeSpanString(android.content.Context, long);
+    method public static boolean isToday(long);
+    field @Deprecated public static final String ABBREV_MONTH_FORMAT = "%b";
+    field public static final String ABBREV_WEEKDAY_FORMAT = "%a";
+    field public static final long DAY_IN_MILLIS = 86400000L; // 0x5265c00L
+    field @Deprecated public static final int FORMAT_12HOUR = 64; // 0x40
+    field @Deprecated public static final int FORMAT_24HOUR = 128; // 0x80
+    field public static final int FORMAT_ABBREV_ALL = 524288; // 0x80000
+    field public static final int FORMAT_ABBREV_MONTH = 65536; // 0x10000
+    field public static final int FORMAT_ABBREV_RELATIVE = 262144; // 0x40000
+    field public static final int FORMAT_ABBREV_TIME = 16384; // 0x4000
+    field public static final int FORMAT_ABBREV_WEEKDAY = 32768; // 0x8000
+    field @Deprecated public static final int FORMAT_CAP_AMPM = 256; // 0x100
+    field @Deprecated public static final int FORMAT_CAP_MIDNIGHT = 4096; // 0x1000
+    field @Deprecated public static final int FORMAT_CAP_NOON = 1024; // 0x400
+    field @Deprecated public static final int FORMAT_CAP_NOON_MIDNIGHT = 5120; // 0x1400
+    field public static final int FORMAT_NO_MIDNIGHT = 2048; // 0x800
+    field public static final int FORMAT_NO_MONTH_DAY = 32; // 0x20
+    field public static final int FORMAT_NO_NOON = 512; // 0x200
+    field @Deprecated public static final int FORMAT_NO_NOON_MIDNIGHT = 2560; // 0xa00
+    field public static final int FORMAT_NO_YEAR = 8; // 0x8
+    field public static final int FORMAT_NUMERIC_DATE = 131072; // 0x20000
+    field public static final int FORMAT_SHOW_DATE = 16; // 0x10
+    field public static final int FORMAT_SHOW_TIME = 1; // 0x1
+    field public static final int FORMAT_SHOW_WEEKDAY = 2; // 0x2
+    field public static final int FORMAT_SHOW_YEAR = 4; // 0x4
+    field @Deprecated public static final int FORMAT_UTC = 8192; // 0x2000
+    field public static final long HOUR_IN_MILLIS = 3600000L; // 0x36ee80L
+    field @Deprecated public static final String HOUR_MINUTE_24 = "%H:%M";
+    field @Deprecated public static final int LENGTH_LONG = 10; // 0xa
+    field @Deprecated public static final int LENGTH_MEDIUM = 20; // 0x14
+    field @Deprecated public static final int LENGTH_SHORT = 30; // 0x1e
+    field @Deprecated public static final int LENGTH_SHORTER = 40; // 0x28
+    field @Deprecated public static final int LENGTH_SHORTEST = 50; // 0x32
+    field public static final long MINUTE_IN_MILLIS = 60000L; // 0xea60L
+    field public static final String MONTH_DAY_FORMAT = "%-d";
+    field public static final String MONTH_FORMAT = "%B";
+    field public static final String NUMERIC_MONTH_FORMAT = "%m";
+    field public static final long SECOND_IN_MILLIS = 1000L; // 0x3e8L
+    field public static final String WEEKDAY_FORMAT = "%A";
+    field public static final long WEEK_IN_MILLIS = 604800000L; // 0x240c8400L
+    field public static final String YEAR_FORMAT = "%Y";
+    field public static final String YEAR_FORMAT_TWO_DIGITS = "%g";
+    field @Deprecated public static final long YEAR_IN_MILLIS = 31449600000L; // 0x7528ad000L
+    field @Deprecated public static final int[] sameMonthTable;
+    field @Deprecated public static final int[] sameYearTable;
+  }
+
+  public final class Formatter {
+    ctor public Formatter();
+    method public static String formatFileSize(@Nullable android.content.Context, long);
+    method @Deprecated public static String formatIpAddress(int);
+    method public static String formatShortFileSize(@Nullable android.content.Context, long);
+  }
+
+  @Deprecated public class Time {
+    ctor @Deprecated public Time(String);
+    ctor @Deprecated public Time();
+    ctor @Deprecated public Time(android.text.format.Time);
+    method @Deprecated public boolean after(android.text.format.Time);
+    method @Deprecated public boolean before(android.text.format.Time);
+    method @Deprecated public void clear(String);
+    method @Deprecated public static int compare(android.text.format.Time, android.text.format.Time);
+    method @Deprecated public String format(String);
+    method @Deprecated public String format2445();
+    method @Deprecated public String format3339(boolean);
+    method @Deprecated public int getActualMaximum(int);
+    method @Deprecated public static String getCurrentTimezone();
+    method @Deprecated public static int getJulianDay(long, long);
+    method @Deprecated public static int getJulianMondayFromWeeksSinceEpoch(int);
+    method @Deprecated public int getWeekNumber();
+    method @Deprecated public static int getWeeksSinceEpochFromJulianDay(int, int);
+    method @Deprecated public static boolean isEpoch(android.text.format.Time);
+    method @Deprecated public long normalize(boolean);
+    method @Deprecated public boolean parse(String);
+    method @Deprecated public boolean parse3339(String);
+    method @Deprecated public void set(long);
+    method @Deprecated public void set(android.text.format.Time);
+    method @Deprecated public void set(int, int, int, int, int, int);
+    method @Deprecated public void set(int, int, int);
+    method @Deprecated public long setJulianDay(int);
+    method @Deprecated public void setToNow();
+    method @Deprecated public void switchTimezone(String);
+    method @Deprecated public long toMillis(boolean);
+    field @Deprecated public static final int EPOCH_JULIAN_DAY = 2440588; // 0x253d8c
+    field @Deprecated public static final int FRIDAY = 5; // 0x5
+    field @Deprecated public static final int HOUR = 3; // 0x3
+    field @Deprecated public static final int MINUTE = 2; // 0x2
+    field @Deprecated public static final int MONDAY = 1; // 0x1
+    field @Deprecated public static final int MONDAY_BEFORE_JULIAN_EPOCH = 2440585; // 0x253d89
+    field @Deprecated public static final int MONTH = 5; // 0x5
+    field @Deprecated public static final int MONTH_DAY = 4; // 0x4
+    field @Deprecated public static final int SATURDAY = 6; // 0x6
+    field @Deprecated public static final int SECOND = 1; // 0x1
+    field @Deprecated public static final int SUNDAY = 0; // 0x0
+    field @Deprecated public static final int THURSDAY = 4; // 0x4
+    field @Deprecated public static final String TIMEZONE_UTC = "UTC";
+    field @Deprecated public static final int TUESDAY = 2; // 0x2
+    field @Deprecated public static final int WEDNESDAY = 3; // 0x3
+    field @Deprecated public static final int WEEK_DAY = 7; // 0x7
+    field @Deprecated public static final int WEEK_NUM = 9; // 0x9
+    field @Deprecated public static final int YEAR = 6; // 0x6
+    field @Deprecated public static final int YEAR_DAY = 8; // 0x8
+    field @Deprecated public boolean allDay;
+    field @Deprecated public long gmtoff;
+    field @Deprecated public int hour;
+    field @Deprecated public int isDst;
+    field @Deprecated public int minute;
+    field @Deprecated public int month;
+    field @Deprecated public int monthDay;
+    field @Deprecated public int second;
+    field @Deprecated public String timezone;
+    field @Deprecated public int weekDay;
+    field @Deprecated public int year;
+    field @Deprecated public int yearDay;
+  }
+
+}
+
+package android.text.method {
+
+  public class ArrowKeyMovementMethod extends android.text.method.BaseMovementMethod implements android.text.method.MovementMethod {
+    ctor public ArrowKeyMovementMethod();
+    method public static android.text.method.MovementMethod getInstance();
+  }
+
+  public abstract class BaseKeyListener extends android.text.method.MetaKeyKeyListener implements android.text.method.KeyListener {
+    ctor public BaseKeyListener();
+    method public boolean backspace(android.view.View, android.text.Editable, int, android.view.KeyEvent);
+    method public boolean forwardDelete(android.view.View, android.text.Editable, int, android.view.KeyEvent);
+    method public boolean onKeyOther(android.view.View, android.text.Editable, android.view.KeyEvent);
+  }
+
+  public class BaseMovementMethod implements android.text.method.MovementMethod {
+    ctor public BaseMovementMethod();
+    method protected boolean bottom(android.widget.TextView, android.text.Spannable);
+    method public boolean canSelectArbitrarily();
+    method protected boolean down(android.widget.TextView, android.text.Spannable);
+    method protected boolean end(android.widget.TextView, android.text.Spannable);
+    method protected int getMovementMetaState(android.text.Spannable, android.view.KeyEvent);
+    method protected boolean handleMovementKey(android.widget.TextView, android.text.Spannable, int, int, android.view.KeyEvent);
+    method protected boolean home(android.widget.TextView, android.text.Spannable);
+    method public void initialize(android.widget.TextView, android.text.Spannable);
+    method protected boolean left(android.widget.TextView, android.text.Spannable);
+    method protected boolean lineEnd(android.widget.TextView, android.text.Spannable);
+    method protected boolean lineStart(android.widget.TextView, android.text.Spannable);
+    method public boolean onGenericMotionEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
+    method public boolean onKeyDown(android.widget.TextView, android.text.Spannable, int, android.view.KeyEvent);
+    method public boolean onKeyOther(android.widget.TextView, android.text.Spannable, android.view.KeyEvent);
+    method public boolean onKeyUp(android.widget.TextView, android.text.Spannable, int, android.view.KeyEvent);
+    method public void onTakeFocus(android.widget.TextView, android.text.Spannable, int);
+    method public boolean onTouchEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
+    method public boolean onTrackballEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
+    method protected boolean pageDown(android.widget.TextView, android.text.Spannable);
+    method protected boolean pageUp(android.widget.TextView, android.text.Spannable);
+    method protected boolean right(android.widget.TextView, android.text.Spannable);
+    method protected boolean top(android.widget.TextView, android.text.Spannable);
+    method protected boolean up(android.widget.TextView, android.text.Spannable);
+  }
+
+  public class CharacterPickerDialog extends android.app.Dialog implements android.widget.AdapterView.OnItemClickListener android.view.View.OnClickListener {
+    ctor public CharacterPickerDialog(android.content.Context, android.view.View, android.text.Editable, String, boolean);
+    method public void onClick(android.view.View);
+    method public void onItemClick(android.widget.AdapterView, android.view.View, int, long);
+  }
+
+  public class DateKeyListener extends android.text.method.NumberKeyListener {
+    ctor @Deprecated public DateKeyListener();
+    ctor public DateKeyListener(@Nullable java.util.Locale);
+    method @NonNull protected char[] getAcceptedChars();
+    method public int getInputType();
+    method @Deprecated @NonNull public static android.text.method.DateKeyListener getInstance();
+    method @NonNull public static android.text.method.DateKeyListener getInstance(@Nullable java.util.Locale);
+    field @Deprecated public static final char[] CHARACTERS;
+  }
+
+  public class DateTimeKeyListener extends android.text.method.NumberKeyListener {
+    ctor @Deprecated public DateTimeKeyListener();
+    ctor public DateTimeKeyListener(@Nullable java.util.Locale);
+    method @NonNull protected char[] getAcceptedChars();
+    method public int getInputType();
+    method @Deprecated @NonNull public static android.text.method.DateTimeKeyListener getInstance();
+    method @NonNull public static android.text.method.DateTimeKeyListener getInstance(@Nullable java.util.Locale);
+    field @Deprecated public static final char[] CHARACTERS;
+  }
+
+  public class DialerKeyListener extends android.text.method.NumberKeyListener {
+    ctor public DialerKeyListener();
+    method protected char[] getAcceptedChars();
+    method public int getInputType();
+    method public static android.text.method.DialerKeyListener getInstance();
+    field public static final char[] CHARACTERS;
+  }
+
+  public class DigitsKeyListener extends android.text.method.NumberKeyListener {
+    ctor @Deprecated public DigitsKeyListener();
+    ctor @Deprecated public DigitsKeyListener(boolean, boolean);
+    ctor public DigitsKeyListener(@Nullable java.util.Locale);
+    ctor public DigitsKeyListener(@Nullable java.util.Locale, boolean, boolean);
+    method protected char[] getAcceptedChars();
+    method public int getInputType();
+    method @Deprecated @NonNull public static android.text.method.DigitsKeyListener getInstance();
+    method @Deprecated @NonNull public static android.text.method.DigitsKeyListener getInstance(boolean, boolean);
+    method @NonNull public static android.text.method.DigitsKeyListener getInstance(@Nullable java.util.Locale);
+    method @NonNull public static android.text.method.DigitsKeyListener getInstance(@Nullable java.util.Locale, boolean, boolean);
+    method @NonNull public static android.text.method.DigitsKeyListener getInstance(@NonNull String);
+  }
+
+  public class HideReturnsTransformationMethod extends android.text.method.ReplacementTransformationMethod {
+    ctor public HideReturnsTransformationMethod();
+    method public static android.text.method.HideReturnsTransformationMethod getInstance();
+    method protected char[] getOriginal();
+    method protected char[] getReplacement();
+  }
+
+  public interface KeyListener {
+    method public void clearMetaKeyState(android.view.View, android.text.Editable, int);
+    method public int getInputType();
+    method public boolean onKeyDown(android.view.View, android.text.Editable, int, android.view.KeyEvent);
+    method public boolean onKeyOther(android.view.View, android.text.Editable, android.view.KeyEvent);
+    method public boolean onKeyUp(android.view.View, android.text.Editable, int, android.view.KeyEvent);
+  }
+
+  public class LinkMovementMethod extends android.text.method.ScrollingMovementMethod {
+    ctor public LinkMovementMethod();
+    method public static android.text.method.MovementMethod getInstance();
+  }
+
+  public abstract class MetaKeyKeyListener {
+    ctor public MetaKeyKeyListener();
+    method public static void adjustMetaAfterKeypress(android.text.Spannable);
+    method public static long adjustMetaAfterKeypress(long);
+    method public void clearMetaKeyState(android.view.View, android.text.Editable, int);
+    method public static void clearMetaKeyState(android.text.Editable, int);
+    method public long clearMetaKeyState(long, int);
+    method public static final int getMetaState(CharSequence);
+    method public static final int getMetaState(CharSequence, android.view.KeyEvent);
+    method public static final int getMetaState(CharSequence, int);
+    method public static final int getMetaState(CharSequence, int, android.view.KeyEvent);
+    method public static final int getMetaState(long);
+    method public static final int getMetaState(long, int);
+    method public static long handleKeyDown(long, int, android.view.KeyEvent);
+    method public static long handleKeyUp(long, int, android.view.KeyEvent);
+    method public static boolean isMetaTracker(CharSequence, Object);
+    method public static boolean isSelectingMetaTracker(CharSequence, Object);
+    method public boolean onKeyDown(android.view.View, android.text.Editable, int, android.view.KeyEvent);
+    method public boolean onKeyUp(android.view.View, android.text.Editable, int, android.view.KeyEvent);
+    method protected static void resetLockedMeta(android.text.Spannable);
+    method public static long resetLockedMeta(long);
+    method public static void resetMetaState(android.text.Spannable);
+    field public static final int META_ALT_LOCKED = 512; // 0x200
+    field public static final int META_ALT_ON = 2; // 0x2
+    field public static final int META_CAP_LOCKED = 256; // 0x100
+    field public static final int META_SHIFT_ON = 1; // 0x1
+    field public static final int META_SYM_LOCKED = 1024; // 0x400
+    field public static final int META_SYM_ON = 4; // 0x4
+  }
+
+  public interface MovementMethod {
+    method public boolean canSelectArbitrarily();
+    method public void initialize(android.widget.TextView, android.text.Spannable);
+    method public boolean onGenericMotionEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
+    method public boolean onKeyDown(android.widget.TextView, android.text.Spannable, int, android.view.KeyEvent);
+    method public boolean onKeyOther(android.widget.TextView, android.text.Spannable, android.view.KeyEvent);
+    method public boolean onKeyUp(android.widget.TextView, android.text.Spannable, int, android.view.KeyEvent);
+    method public void onTakeFocus(android.widget.TextView, android.text.Spannable, int);
+    method public boolean onTouchEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
+    method public boolean onTrackballEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
+  }
+
+  public class MultiTapKeyListener extends android.text.method.BaseKeyListener implements android.text.SpanWatcher {
+    ctor public MultiTapKeyListener(android.text.method.TextKeyListener.Capitalize, boolean);
+    method public int getInputType();
+    method public static android.text.method.MultiTapKeyListener getInstance(boolean, android.text.method.TextKeyListener.Capitalize);
+    method public void onSpanAdded(android.text.Spannable, Object, int, int);
+    method public void onSpanChanged(android.text.Spannable, Object, int, int, int, int);
+    method public void onSpanRemoved(android.text.Spannable, Object, int, int);
+  }
+
+  public abstract class NumberKeyListener extends android.text.method.BaseKeyListener implements android.text.InputFilter {
+    ctor public NumberKeyListener();
+    method public CharSequence filter(CharSequence, int, int, android.text.Spanned, int, int);
+    method @NonNull protected abstract char[] getAcceptedChars();
+    method protected int lookup(android.view.KeyEvent, android.text.Spannable);
+    method protected static boolean ok(char[], char);
+  }
+
+  public class PasswordTransformationMethod implements android.text.TextWatcher android.text.method.TransformationMethod {
+    ctor public PasswordTransformationMethod();
+    method public void afterTextChanged(android.text.Editable);
+    method public void beforeTextChanged(CharSequence, int, int, int);
+    method public static android.text.method.PasswordTransformationMethod getInstance();
+    method public CharSequence getTransformation(CharSequence, android.view.View);
+    method public void onFocusChanged(android.view.View, CharSequence, boolean, int, android.graphics.Rect);
+    method public void onTextChanged(CharSequence, int, int, int);
+  }
+
+  public class QwertyKeyListener extends android.text.method.BaseKeyListener {
+    ctor public QwertyKeyListener(android.text.method.TextKeyListener.Capitalize, boolean);
+    method public int getInputType();
+    method public static android.text.method.QwertyKeyListener getInstance(boolean, android.text.method.TextKeyListener.Capitalize);
+    method public static android.text.method.QwertyKeyListener getInstanceForFullKeyboard();
+    method public static void markAsReplaced(android.text.Spannable, int, int, String);
+  }
+
+  public abstract class ReplacementTransformationMethod implements android.text.method.TransformationMethod {
+    ctor public ReplacementTransformationMethod();
+    method protected abstract char[] getOriginal();
+    method protected abstract char[] getReplacement();
+    method public CharSequence getTransformation(CharSequence, android.view.View);
+    method public void onFocusChanged(android.view.View, CharSequence, boolean, int, android.graphics.Rect);
+  }
+
+  public class ScrollingMovementMethod extends android.text.method.BaseMovementMethod implements android.text.method.MovementMethod {
+    ctor public ScrollingMovementMethod();
+    method public static android.text.method.MovementMethod getInstance();
+  }
+
+  public class SingleLineTransformationMethod extends android.text.method.ReplacementTransformationMethod {
+    ctor public SingleLineTransformationMethod();
+    method public static android.text.method.SingleLineTransformationMethod getInstance();
+    method protected char[] getOriginal();
+    method protected char[] getReplacement();
+  }
+
+  public class TextKeyListener extends android.text.method.BaseKeyListener implements android.text.SpanWatcher {
+    ctor public TextKeyListener(android.text.method.TextKeyListener.Capitalize, boolean);
+    method public static void clear(android.text.Editable);
+    method public int getInputType();
+    method public static android.text.method.TextKeyListener getInstance(boolean, android.text.method.TextKeyListener.Capitalize);
+    method public static android.text.method.TextKeyListener getInstance();
+    method public void onSpanAdded(android.text.Spannable, Object, int, int);
+    method public void onSpanChanged(android.text.Spannable, Object, int, int, int, int);
+    method public void onSpanRemoved(android.text.Spannable, Object, int, int);
+    method public void release();
+    method public static boolean shouldCap(android.text.method.TextKeyListener.Capitalize, CharSequence, int);
+  }
+
+  public enum TextKeyListener.Capitalize {
+    enum_constant public static final android.text.method.TextKeyListener.Capitalize CHARACTERS;
+    enum_constant public static final android.text.method.TextKeyListener.Capitalize NONE;
+    enum_constant public static final android.text.method.TextKeyListener.Capitalize SENTENCES;
+    enum_constant public static final android.text.method.TextKeyListener.Capitalize WORDS;
+  }
+
+  public class TimeKeyListener extends android.text.method.NumberKeyListener {
+    ctor @Deprecated public TimeKeyListener();
+    ctor public TimeKeyListener(@Nullable java.util.Locale);
+    method @NonNull protected char[] getAcceptedChars();
+    method public int getInputType();
+    method @Deprecated @NonNull public static android.text.method.TimeKeyListener getInstance();
+    method @NonNull public static android.text.method.TimeKeyListener getInstance(@Nullable java.util.Locale);
+    field @Deprecated public static final char[] CHARACTERS;
+  }
+
+  public class Touch {
+    method public static int getInitialScrollX(android.widget.TextView, android.text.Spannable);
+    method public static int getInitialScrollY(android.widget.TextView, android.text.Spannable);
+    method public static boolean onTouchEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
+    method public static void scrollTo(android.widget.TextView, android.text.Layout, int, int);
+  }
+
+  public interface TransformationMethod {
+    method public CharSequence getTransformation(CharSequence, android.view.View);
+    method public void onFocusChanged(android.view.View, CharSequence, boolean, int, android.graphics.Rect);
+  }
+
+}
+
+package android.text.style {
+
+  public class AbsoluteSizeSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
+    ctor public AbsoluteSizeSpan(int);
+    ctor public AbsoluteSizeSpan(int, boolean);
+    ctor public AbsoluteSizeSpan(@NonNull android.os.Parcel);
+    method public int describeContents();
+    method public boolean getDip();
+    method public int getSize();
+    method public int getSpanTypeId();
+    method public void updateDrawState(@NonNull android.text.TextPaint);
+    method public void updateMeasureState(@NonNull android.text.TextPaint);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+  }
+
+  public interface AlignmentSpan extends android.text.style.ParagraphStyle {
+    method public android.text.Layout.Alignment getAlignment();
+  }
+
+  public static class AlignmentSpan.Standard implements android.text.style.AlignmentSpan android.text.ParcelableSpan {
+    ctor public AlignmentSpan.Standard(@NonNull android.text.Layout.Alignment);
+    ctor public AlignmentSpan.Standard(@NonNull android.os.Parcel);
+    method public int describeContents();
+    method public android.text.Layout.Alignment getAlignment();
+    method public int getSpanTypeId();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+  }
+
+  public class BackgroundColorSpan extends android.text.style.CharacterStyle implements android.text.ParcelableSpan android.text.style.UpdateAppearance {
+    ctor public BackgroundColorSpan(@ColorInt int);
+    ctor public BackgroundColorSpan(@NonNull android.os.Parcel);
+    method public int describeContents();
+    method @ColorInt public int getBackgroundColor();
+    method public int getSpanTypeId();
+    method public void updateDrawState(@NonNull android.text.TextPaint);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+  }
+
+  public class BulletSpan implements android.text.style.LeadingMarginSpan android.text.ParcelableSpan {
+    ctor public BulletSpan();
+    ctor public BulletSpan(int);
+    ctor public BulletSpan(int, @ColorInt int);
+    ctor public BulletSpan(int, @ColorInt int, @IntRange(from=0) int);
+    ctor public BulletSpan(@NonNull android.os.Parcel);
+    method public int describeContents();
+    method public void drawLeadingMargin(@NonNull android.graphics.Canvas, @NonNull android.graphics.Paint, int, int, int, int, int, @NonNull CharSequence, int, int, boolean, @Nullable android.text.Layout);
+    method public int getBulletRadius();
+    method public int getColor();
+    method public int getGapWidth();
+    method public int getLeadingMargin(boolean);
+    method public int getSpanTypeId();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field public static final int STANDARD_GAP_WIDTH = 2; // 0x2
+  }
+
+  public abstract class CharacterStyle {
+    ctor public CharacterStyle();
+    method public android.text.style.CharacterStyle getUnderlying();
+    method public abstract void updateDrawState(android.text.TextPaint);
+    method public static android.text.style.CharacterStyle wrap(android.text.style.CharacterStyle);
+  }
+
+  public abstract class ClickableSpan extends android.text.style.CharacterStyle implements android.text.style.UpdateAppearance {
+    ctor public ClickableSpan();
+    method public abstract void onClick(@NonNull android.view.View);
+    method public void updateDrawState(@NonNull android.text.TextPaint);
+  }
+
+  public class DrawableMarginSpan implements android.text.style.LeadingMarginSpan android.text.style.LineHeightSpan {
+    ctor public DrawableMarginSpan(@NonNull android.graphics.drawable.Drawable);
+    ctor public DrawableMarginSpan(@NonNull android.graphics.drawable.Drawable, int);
+    method public void chooseHeight(@NonNull CharSequence, int, int, int, int, @NonNull android.graphics.Paint.FontMetricsInt);
+    method public void drawLeadingMargin(@NonNull android.graphics.Canvas, @NonNull android.graphics.Paint, int, int, int, int, int, @NonNull CharSequence, int, int, boolean, @NonNull android.text.Layout);
+    method public int getLeadingMargin(boolean);
+  }
+
+  public abstract class DynamicDrawableSpan extends android.text.style.ReplacementSpan {
+    ctor public DynamicDrawableSpan();
+    ctor protected DynamicDrawableSpan(int);
+    method public void draw(@NonNull android.graphics.Canvas, CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, float, int, int, int, @NonNull android.graphics.Paint);
+    method public abstract android.graphics.drawable.Drawable getDrawable();
+    method public int getSize(@NonNull android.graphics.Paint, CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @Nullable android.graphics.Paint.FontMetricsInt);
+    method public int getVerticalAlignment();
+    field public static final int ALIGN_BASELINE = 1; // 0x1
+    field public static final int ALIGN_BOTTOM = 0; // 0x0
+    field public static final int ALIGN_CENTER = 2; // 0x2
+    field protected final int mVerticalAlignment;
+  }
+
+  public class EasyEditSpan implements android.text.ParcelableSpan {
+    ctor public EasyEditSpan();
+    ctor public EasyEditSpan(android.app.PendingIntent);
+    ctor public EasyEditSpan(@NonNull android.os.Parcel);
+    method public int describeContents();
+    method public int getSpanTypeId();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field public static final String EXTRA_TEXT_CHANGED_TYPE = "android.text.style.EXTRA_TEXT_CHANGED_TYPE";
+    field public static final int TEXT_DELETED = 1; // 0x1
+    field public static final int TEXT_MODIFIED = 2; // 0x2
+  }
+
+  public class ForegroundColorSpan extends android.text.style.CharacterStyle implements android.text.ParcelableSpan android.text.style.UpdateAppearance {
+    ctor public ForegroundColorSpan(@ColorInt int);
+    ctor public ForegroundColorSpan(@NonNull android.os.Parcel);
+    method public int describeContents();
+    method @ColorInt public int getForegroundColor();
+    method public int getSpanTypeId();
+    method public void updateDrawState(@NonNull android.text.TextPaint);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+  }
+
+  public class IconMarginSpan implements android.text.style.LeadingMarginSpan android.text.style.LineHeightSpan {
+    ctor public IconMarginSpan(@NonNull android.graphics.Bitmap);
+    ctor public IconMarginSpan(@NonNull android.graphics.Bitmap, @IntRange(from=0) int);
+    method public void chooseHeight(CharSequence, int, int, int, int, android.graphics.Paint.FontMetricsInt);
+    method public void drawLeadingMargin(android.graphics.Canvas, android.graphics.Paint, int, int, int, int, int, CharSequence, int, int, boolean, android.text.Layout);
+    method public int getLeadingMargin(boolean);
+  }
+
+  public class ImageSpan extends android.text.style.DynamicDrawableSpan {
+    ctor @Deprecated public ImageSpan(@NonNull android.graphics.Bitmap);
+    ctor @Deprecated public ImageSpan(@NonNull android.graphics.Bitmap, int);
+    ctor public ImageSpan(@NonNull android.content.Context, @NonNull android.graphics.Bitmap);
+    ctor public ImageSpan(@NonNull android.content.Context, @NonNull android.graphics.Bitmap, int);
+    ctor public ImageSpan(@NonNull android.graphics.drawable.Drawable);
+    ctor public ImageSpan(@NonNull android.graphics.drawable.Drawable, int);
+    ctor public ImageSpan(@NonNull android.graphics.drawable.Drawable, @NonNull String);
+    ctor public ImageSpan(@NonNull android.graphics.drawable.Drawable, @NonNull String, int);
+    ctor public ImageSpan(@NonNull android.content.Context, @NonNull android.net.Uri);
+    ctor public ImageSpan(@NonNull android.content.Context, @NonNull android.net.Uri, int);
+    ctor public ImageSpan(@NonNull android.content.Context, @DrawableRes int);
+    ctor public ImageSpan(@NonNull android.content.Context, @DrawableRes int, int);
+    method public android.graphics.drawable.Drawable getDrawable();
+    method @Nullable public String getSource();
+  }
+
+  public interface LeadingMarginSpan extends android.text.style.ParagraphStyle {
+    method public void drawLeadingMargin(android.graphics.Canvas, android.graphics.Paint, int, int, int, int, int, CharSequence, int, int, boolean, android.text.Layout);
+    method public int getLeadingMargin(boolean);
+  }
+
+  public static interface LeadingMarginSpan.LeadingMarginSpan2 extends android.text.style.LeadingMarginSpan android.text.style.WrapTogetherSpan {
+    method public int getLeadingMarginLineCount();
+  }
+
+  public static class LeadingMarginSpan.Standard implements android.text.style.LeadingMarginSpan android.text.ParcelableSpan {
+    ctor public LeadingMarginSpan.Standard(int, int);
+    ctor public LeadingMarginSpan.Standard(int);
+    ctor public LeadingMarginSpan.Standard(android.os.Parcel);
+    method public int describeContents();
+    method public void drawLeadingMargin(android.graphics.Canvas, android.graphics.Paint, int, int, int, int, int, CharSequence, int, int, boolean, android.text.Layout);
+    method public int getLeadingMargin(boolean);
+    method public int getSpanTypeId();
+    method public void writeToParcel(android.os.Parcel, int);
+  }
+
+  public interface LineBackgroundSpan extends android.text.style.ParagraphStyle {
+    method public void drawBackground(@NonNull android.graphics.Canvas, @NonNull android.graphics.Paint, @Px int, @Px int, @Px int, @Px int, @Px int, @NonNull CharSequence, int, int, int);
+  }
+
+  public static class LineBackgroundSpan.Standard implements android.text.style.LineBackgroundSpan android.text.ParcelableSpan {
+    ctor public LineBackgroundSpan.Standard(@ColorInt int);
+    ctor public LineBackgroundSpan.Standard(@NonNull android.os.Parcel);
+    method public int describeContents();
+    method public void drawBackground(@NonNull android.graphics.Canvas, @NonNull android.graphics.Paint, @Px int, @Px int, @Px int, @Px int, @Px int, @NonNull CharSequence, int, int, int);
+    method @ColorInt public final int getColor();
+    method public int getSpanTypeId();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+  }
+
+  public interface LineHeightSpan extends android.text.style.ParagraphStyle android.text.style.WrapTogetherSpan {
+    method public void chooseHeight(CharSequence, int, int, int, int, android.graphics.Paint.FontMetricsInt);
+  }
+
+  public static class LineHeightSpan.Standard implements android.text.style.LineHeightSpan android.text.ParcelableSpan {
+    ctor public LineHeightSpan.Standard(@IntRange(from=1) @Px int);
+    ctor public LineHeightSpan.Standard(@NonNull android.os.Parcel);
+    method public void chooseHeight(@NonNull CharSequence, int, int, int, int, @NonNull android.graphics.Paint.FontMetricsInt);
+    method public int describeContents();
+    method @Px public int getHeight();
+    method public int getSpanTypeId();
+    method public void writeToParcel(android.os.Parcel, int);
+  }
+
+  public static interface LineHeightSpan.WithDensity extends android.text.style.LineHeightSpan {
+    method public void chooseHeight(CharSequence, int, int, int, int, android.graphics.Paint.FontMetricsInt, android.text.TextPaint);
+  }
+
+  public class LocaleSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
+    ctor public LocaleSpan(@Nullable java.util.Locale);
+    ctor public LocaleSpan(@NonNull android.os.LocaleList);
+    ctor public LocaleSpan(android.os.Parcel);
+    method public int describeContents();
+    method @Nullable public java.util.Locale getLocale();
+    method @NonNull public android.os.LocaleList getLocales();
+    method public int getSpanTypeId();
+    method public void updateDrawState(android.text.TextPaint);
+    method public void updateMeasureState(android.text.TextPaint);
+    method public void writeToParcel(android.os.Parcel, int);
+  }
+
+  public class MaskFilterSpan extends android.text.style.CharacterStyle implements android.text.style.UpdateAppearance {
+    ctor public MaskFilterSpan(android.graphics.MaskFilter);
+    method public android.graphics.MaskFilter getMaskFilter();
+    method public void updateDrawState(android.text.TextPaint);
+  }
+
+  public abstract class MetricAffectingSpan extends android.text.style.CharacterStyle implements android.text.style.UpdateLayout {
+    ctor public MetricAffectingSpan();
+    method public android.text.style.MetricAffectingSpan getUnderlying();
+    method public abstract void updateMeasureState(@NonNull android.text.TextPaint);
+  }
+
+  public interface ParagraphStyle {
+  }
+
+  public class QuoteSpan implements android.text.style.LeadingMarginSpan android.text.ParcelableSpan {
+    ctor public QuoteSpan();
+    ctor public QuoteSpan(@ColorInt int);
+    ctor public QuoteSpan(@ColorInt int, @IntRange(from=0) int, @IntRange(from=0) int);
+    ctor public QuoteSpan(@NonNull android.os.Parcel);
+    method public int describeContents();
+    method public void drawLeadingMargin(@NonNull android.graphics.Canvas, @NonNull android.graphics.Paint, int, int, int, int, int, @NonNull CharSequence, int, int, boolean, @NonNull android.text.Layout);
+    method @ColorInt public int getColor();
+    method public int getGapWidth();
+    method public int getLeadingMargin(boolean);
+    method public int getSpanTypeId();
+    method public int getStripeWidth();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @ColorInt public static final int STANDARD_COLOR = -16776961; // 0xff0000ff
+    field public static final int STANDARD_GAP_WIDTH_PX = 2; // 0x2
+    field public static final int STANDARD_STRIPE_WIDTH_PX = 2; // 0x2
+  }
+
+  public class RelativeSizeSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
+    ctor public RelativeSizeSpan(@FloatRange(from=0) float);
+    ctor public RelativeSizeSpan(@NonNull android.os.Parcel);
+    method public int describeContents();
+    method public float getSizeChange();
+    method public int getSpanTypeId();
+    method public void updateDrawState(@NonNull android.text.TextPaint);
+    method public void updateMeasureState(@NonNull android.text.TextPaint);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+  }
+
+  public abstract class ReplacementSpan extends android.text.style.MetricAffectingSpan {
+    ctor public ReplacementSpan();
+    method public abstract void draw(@NonNull android.graphics.Canvas, CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, float, int, int, int, @NonNull android.graphics.Paint);
+    method @Nullable public CharSequence getContentDescription();
+    method public abstract int getSize(@NonNull android.graphics.Paint, CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @Nullable android.graphics.Paint.FontMetricsInt);
+    method public void setContentDescription(@Nullable CharSequence);
+    method public void updateDrawState(android.text.TextPaint);
+    method public void updateMeasureState(android.text.TextPaint);
+  }
+
+  public class ScaleXSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
+    ctor public ScaleXSpan(@FloatRange(from=0) float);
+    ctor public ScaleXSpan(@NonNull android.os.Parcel);
+    method public int describeContents();
+    method public float getScaleX();
+    method public int getSpanTypeId();
+    method public void updateDrawState(android.text.TextPaint);
+    method public void updateMeasureState(android.text.TextPaint);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+  }
+
+  public class StrikethroughSpan extends android.text.style.CharacterStyle implements android.text.ParcelableSpan android.text.style.UpdateAppearance {
+    ctor public StrikethroughSpan();
+    ctor public StrikethroughSpan(@NonNull android.os.Parcel);
+    method public int describeContents();
+    method public int getSpanTypeId();
+    method public void updateDrawState(@NonNull android.text.TextPaint);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+  }
+
+  public class StyleSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
+    ctor public StyleSpan(int);
+    ctor public StyleSpan(@NonNull android.os.Parcel);
+    method public int describeContents();
+    method public int getSpanTypeId();
+    method public int getStyle();
+    method public void updateDrawState(android.text.TextPaint);
+    method public void updateMeasureState(android.text.TextPaint);
+    method public void writeToParcel(android.os.Parcel, int);
+  }
+
+  public class SubscriptSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
+    ctor public SubscriptSpan();
+    ctor public SubscriptSpan(@NonNull android.os.Parcel);
+    method public int describeContents();
+    method public int getSpanTypeId();
+    method public void updateDrawState(@NonNull android.text.TextPaint);
+    method public void updateMeasureState(@NonNull android.text.TextPaint);
+    method public void writeToParcel(android.os.Parcel, int);
+  }
+
+  public class SuggestionSpan extends android.text.style.CharacterStyle implements android.text.ParcelableSpan {
+    ctor public SuggestionSpan(android.content.Context, String[], int);
+    ctor public SuggestionSpan(java.util.Locale, String[], int);
+    ctor public SuggestionSpan(android.content.Context, java.util.Locale, String[], int, Class<?>);
+    ctor public SuggestionSpan(android.os.Parcel);
+    method public int describeContents();
+    method public int getFlags();
+    method @Deprecated @NonNull public String getLocale();
+    method @Nullable public java.util.Locale getLocaleObject();
+    method public int getSpanTypeId();
+    method public String[] getSuggestions();
+    method @ColorInt public int getUnderlineColor();
+    method public void setFlags(int);
+    method public void updateDrawState(android.text.TextPaint);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated public static final String ACTION_SUGGESTION_PICKED = "android.text.style.SUGGESTION_PICKED";
+    field @NonNull public static final android.os.Parcelable.Creator<android.text.style.SuggestionSpan> CREATOR;
+    field public static final int FLAG_AUTO_CORRECTION = 4; // 0x4
+    field public static final int FLAG_EASY_CORRECT = 1; // 0x1
+    field public static final int FLAG_MISSPELLED = 2; // 0x2
+    field public static final int SUGGESTIONS_MAX_SIZE = 5; // 0x5
+    field @Deprecated public static final String SUGGESTION_SPAN_PICKED_AFTER = "after";
+    field @Deprecated public static final String SUGGESTION_SPAN_PICKED_BEFORE = "before";
+    field @Deprecated public static final String SUGGESTION_SPAN_PICKED_HASHCODE = "hashcode";
+  }
+
+  public class SuperscriptSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
+    ctor public SuperscriptSpan();
+    ctor public SuperscriptSpan(@NonNull android.os.Parcel);
+    method public int describeContents();
+    method public int getSpanTypeId();
+    method public void updateDrawState(@NonNull android.text.TextPaint);
+    method public void updateMeasureState(@NonNull android.text.TextPaint);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+  }
+
+  public interface TabStopSpan extends android.text.style.ParagraphStyle {
+    method public int getTabStop();
+  }
+
+  public static class TabStopSpan.Standard implements android.text.style.TabStopSpan {
+    ctor public TabStopSpan.Standard(@IntRange(from=0) int);
+    method public int getTabStop();
+  }
+
+  public class TextAppearanceSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
+    ctor public TextAppearanceSpan(android.content.Context, int);
+    ctor public TextAppearanceSpan(android.content.Context, int, int);
+    ctor public TextAppearanceSpan(String, int, int, android.content.res.ColorStateList, android.content.res.ColorStateList);
+    ctor public TextAppearanceSpan(android.os.Parcel);
+    method public int describeContents();
+    method public String getFamily();
+    method @Nullable public String getFontFeatureSettings();
+    method @Nullable public String getFontVariationSettings();
+    method public android.content.res.ColorStateList getLinkTextColor();
+    method public int getShadowColor();
+    method public float getShadowDx();
+    method public float getShadowDy();
+    method public float getShadowRadius();
+    method public int getSpanTypeId();
+    method public android.content.res.ColorStateList getTextColor();
+    method public int getTextFontWeight();
+    method @Nullable public android.os.LocaleList getTextLocales();
+    method public int getTextSize();
+    method public int getTextStyle();
+    method @Nullable public android.graphics.Typeface getTypeface();
+    method public boolean isElegantTextHeight();
+    method public void updateDrawState(android.text.TextPaint);
+    method public void updateMeasureState(android.text.TextPaint);
+    method public void writeToParcel(android.os.Parcel, int);
+  }
+
+  public class TtsSpan implements android.text.ParcelableSpan {
+    ctor public TtsSpan(String, android.os.PersistableBundle);
+    ctor public TtsSpan(android.os.Parcel);
+    method public int describeContents();
+    method public android.os.PersistableBundle getArgs();
+    method public int getSpanTypeId();
+    method public String getType();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final String ANIMACY_ANIMATE = "android.animate";
+    field public static final String ANIMACY_INANIMATE = "android.inanimate";
+    field public static final String ARG_ANIMACY = "android.arg.animacy";
+    field public static final String ARG_CASE = "android.arg.case";
+    field public static final String ARG_COUNTRY_CODE = "android.arg.country_code";
+    field public static final String ARG_CURRENCY = "android.arg.money";
+    field public static final String ARG_DAY = "android.arg.day";
+    field public static final String ARG_DENOMINATOR = "android.arg.denominator";
+    field public static final String ARG_DIGITS = "android.arg.digits";
+    field public static final String ARG_DOMAIN = "android.arg.domain";
+    field public static final String ARG_EXTENSION = "android.arg.extension";
+    field public static final String ARG_FRACTIONAL_PART = "android.arg.fractional_part";
+    field public static final String ARG_FRAGMENT_ID = "android.arg.fragment_id";
+    field public static final String ARG_GENDER = "android.arg.gender";
+    field public static final String ARG_HOURS = "android.arg.hours";
+    field public static final String ARG_INTEGER_PART = "android.arg.integer_part";
+    field public static final String ARG_MINUTES = "android.arg.minutes";
+    field public static final String ARG_MONTH = "android.arg.month";
+    field public static final String ARG_MULTIPLICITY = "android.arg.multiplicity";
+    field public static final String ARG_NUMBER = "android.arg.number";
+    field public static final String ARG_NUMBER_PARTS = "android.arg.number_parts";
+    field public static final String ARG_NUMERATOR = "android.arg.numerator";
+    field public static final String ARG_PASSWORD = "android.arg.password";
+    field public static final String ARG_PATH = "android.arg.path";
+    field public static final String ARG_PORT = "android.arg.port";
+    field public static final String ARG_PROTOCOL = "android.arg.protocol";
+    field public static final String ARG_QUANTITY = "android.arg.quantity";
+    field public static final String ARG_QUERY_STRING = "android.arg.query_string";
+    field public static final String ARG_TEXT = "android.arg.text";
+    field public static final String ARG_UNIT = "android.arg.unit";
+    field public static final String ARG_USERNAME = "android.arg.username";
+    field public static final String ARG_VERBATIM = "android.arg.verbatim";
+    field public static final String ARG_WEEKDAY = "android.arg.weekday";
+    field public static final String ARG_YEAR = "android.arg.year";
+    field public static final String CASE_ABLATIVE = "android.ablative";
+    field public static final String CASE_ACCUSATIVE = "android.accusative";
+    field public static final String CASE_DATIVE = "android.dative";
+    field public static final String CASE_GENITIVE = "android.genitive";
+    field public static final String CASE_INSTRUMENTAL = "android.instrumental";
+    field public static final String CASE_LOCATIVE = "android.locative";
+    field public static final String CASE_NOMINATIVE = "android.nominative";
+    field public static final String CASE_VOCATIVE = "android.vocative";
+    field public static final String GENDER_FEMALE = "android.female";
+    field public static final String GENDER_MALE = "android.male";
+    field public static final String GENDER_NEUTRAL = "android.neutral";
+    field public static final int MONTH_APRIL = 3; // 0x3
+    field public static final int MONTH_AUGUST = 7; // 0x7
+    field public static final int MONTH_DECEMBER = 11; // 0xb
+    field public static final int MONTH_FEBRUARY = 1; // 0x1
+    field public static final int MONTH_JANUARY = 0; // 0x0
+    field public static final int MONTH_JULY = 6; // 0x6
+    field public static final int MONTH_JUNE = 5; // 0x5
+    field public static final int MONTH_MARCH = 2; // 0x2
+    field public static final int MONTH_MAY = 4; // 0x4
+    field public static final int MONTH_NOVEMBER = 10; // 0xa
+    field public static final int MONTH_OCTOBER = 9; // 0x9
+    field public static final int MONTH_SEPTEMBER = 8; // 0x8
+    field public static final String MULTIPLICITY_DUAL = "android.dual";
+    field public static final String MULTIPLICITY_PLURAL = "android.plural";
+    field public static final String MULTIPLICITY_SINGLE = "android.single";
+    field public static final String TYPE_CARDINAL = "android.type.cardinal";
+    field public static final String TYPE_DATE = "android.type.date";
+    field public static final String TYPE_DECIMAL = "android.type.decimal";
+    field public static final String TYPE_DIGITS = "android.type.digits";
+    field public static final String TYPE_ELECTRONIC = "android.type.electronic";
+    field public static final String TYPE_FRACTION = "android.type.fraction";
+    field public static final String TYPE_MEASURE = "android.type.measure";
+    field public static final String TYPE_MONEY = "android.type.money";
+    field public static final String TYPE_ORDINAL = "android.type.ordinal";
+    field public static final String TYPE_TELEPHONE = "android.type.telephone";
+    field public static final String TYPE_TEXT = "android.type.text";
+    field public static final String TYPE_TIME = "android.type.time";
+    field public static final String TYPE_VERBATIM = "android.type.verbatim";
+    field public static final int WEEKDAY_FRIDAY = 6; // 0x6
+    field public static final int WEEKDAY_MONDAY = 2; // 0x2
+    field public static final int WEEKDAY_SATURDAY = 7; // 0x7
+    field public static final int WEEKDAY_SUNDAY = 1; // 0x1
+    field public static final int WEEKDAY_THURSDAY = 5; // 0x5
+    field public static final int WEEKDAY_TUESDAY = 3; // 0x3
+    field public static final int WEEKDAY_WEDNESDAY = 4; // 0x4
+  }
+
+  public static class TtsSpan.Builder<C extends android.text.style.TtsSpan.Builder<?>> {
+    ctor public TtsSpan.Builder(String);
+    method public android.text.style.TtsSpan build();
+    method public C setIntArgument(String, int);
+    method public C setLongArgument(String, long);
+    method public C setStringArgument(String, String);
+  }
+
+  public static class TtsSpan.CardinalBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.CardinalBuilder> {
+    ctor public TtsSpan.CardinalBuilder();
+    ctor public TtsSpan.CardinalBuilder(long);
+    ctor public TtsSpan.CardinalBuilder(String);
+    method public android.text.style.TtsSpan.CardinalBuilder setNumber(long);
+    method public android.text.style.TtsSpan.CardinalBuilder setNumber(String);
+  }
+
+  public static class TtsSpan.DateBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.DateBuilder> {
+    ctor public TtsSpan.DateBuilder();
+    ctor public TtsSpan.DateBuilder(Integer, Integer, Integer, Integer);
+    method public android.text.style.TtsSpan.DateBuilder setDay(int);
+    method public android.text.style.TtsSpan.DateBuilder setMonth(int);
+    method public android.text.style.TtsSpan.DateBuilder setWeekday(int);
+    method public android.text.style.TtsSpan.DateBuilder setYear(int);
+  }
+
+  public static class TtsSpan.DecimalBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.DecimalBuilder> {
+    ctor public TtsSpan.DecimalBuilder();
+    ctor public TtsSpan.DecimalBuilder(double, int, int);
+    ctor public TtsSpan.DecimalBuilder(String, String);
+    method public android.text.style.TtsSpan.DecimalBuilder setArgumentsFromDouble(double, int, int);
+    method public android.text.style.TtsSpan.DecimalBuilder setFractionalPart(String);
+    method public android.text.style.TtsSpan.DecimalBuilder setIntegerPart(long);
+    method public android.text.style.TtsSpan.DecimalBuilder setIntegerPart(String);
+  }
+
+  public static class TtsSpan.DigitsBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.DigitsBuilder> {
+    ctor public TtsSpan.DigitsBuilder();
+    ctor public TtsSpan.DigitsBuilder(String);
+    method public android.text.style.TtsSpan.DigitsBuilder setDigits(String);
+  }
+
+  public static class TtsSpan.ElectronicBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.ElectronicBuilder> {
+    ctor public TtsSpan.ElectronicBuilder();
+    method public android.text.style.TtsSpan.ElectronicBuilder setDomain(String);
+    method public android.text.style.TtsSpan.ElectronicBuilder setEmailArguments(String, String);
+    method public android.text.style.TtsSpan.ElectronicBuilder setFragmentId(String);
+    method public android.text.style.TtsSpan.ElectronicBuilder setPassword(String);
+    method public android.text.style.TtsSpan.ElectronicBuilder setPath(String);
+    method public android.text.style.TtsSpan.ElectronicBuilder setPort(int);
+    method public android.text.style.TtsSpan.ElectronicBuilder setProtocol(String);
+    method public android.text.style.TtsSpan.ElectronicBuilder setQueryString(String);
+    method public android.text.style.TtsSpan.ElectronicBuilder setUsername(String);
+  }
+
+  public static class TtsSpan.FractionBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.FractionBuilder> {
+    ctor public TtsSpan.FractionBuilder();
+    ctor public TtsSpan.FractionBuilder(long, long, long);
+    method public android.text.style.TtsSpan.FractionBuilder setDenominator(long);
+    method public android.text.style.TtsSpan.FractionBuilder setDenominator(String);
+    method public android.text.style.TtsSpan.FractionBuilder setIntegerPart(long);
+    method public android.text.style.TtsSpan.FractionBuilder setIntegerPart(String);
+    method public android.text.style.TtsSpan.FractionBuilder setNumerator(long);
+    method public android.text.style.TtsSpan.FractionBuilder setNumerator(String);
+  }
+
+  public static class TtsSpan.MeasureBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.MeasureBuilder> {
+    ctor public TtsSpan.MeasureBuilder();
+    method public android.text.style.TtsSpan.MeasureBuilder setDenominator(long);
+    method public android.text.style.TtsSpan.MeasureBuilder setDenominator(String);
+    method public android.text.style.TtsSpan.MeasureBuilder setFractionalPart(String);
+    method public android.text.style.TtsSpan.MeasureBuilder setIntegerPart(long);
+    method public android.text.style.TtsSpan.MeasureBuilder setIntegerPart(String);
+    method public android.text.style.TtsSpan.MeasureBuilder setNumber(long);
+    method public android.text.style.TtsSpan.MeasureBuilder setNumber(String);
+    method public android.text.style.TtsSpan.MeasureBuilder setNumerator(long);
+    method public android.text.style.TtsSpan.MeasureBuilder setNumerator(String);
+    method public android.text.style.TtsSpan.MeasureBuilder setUnit(String);
+  }
+
+  public static class TtsSpan.MoneyBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.MoneyBuilder> {
+    ctor public TtsSpan.MoneyBuilder();
+    method public android.text.style.TtsSpan.MoneyBuilder setCurrency(String);
+    method public android.text.style.TtsSpan.MoneyBuilder setFractionalPart(String);
+    method public android.text.style.TtsSpan.MoneyBuilder setIntegerPart(long);
+    method public android.text.style.TtsSpan.MoneyBuilder setIntegerPart(String);
+    method public android.text.style.TtsSpan.MoneyBuilder setQuantity(String);
+  }
+
+  public static class TtsSpan.OrdinalBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.OrdinalBuilder> {
+    ctor public TtsSpan.OrdinalBuilder();
+    ctor public TtsSpan.OrdinalBuilder(long);
+    ctor public TtsSpan.OrdinalBuilder(String);
+    method public android.text.style.TtsSpan.OrdinalBuilder setNumber(long);
+    method public android.text.style.TtsSpan.OrdinalBuilder setNumber(String);
+  }
+
+  public static class TtsSpan.SemioticClassBuilder<C extends android.text.style.TtsSpan.SemioticClassBuilder<?>> extends android.text.style.TtsSpan.Builder<C> {
+    ctor public TtsSpan.SemioticClassBuilder(String);
+    method public C setAnimacy(String);
+    method public C setCase(String);
+    method public C setGender(String);
+    method public C setMultiplicity(String);
+  }
+
+  public static class TtsSpan.TelephoneBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.TelephoneBuilder> {
+    ctor public TtsSpan.TelephoneBuilder();
+    ctor public TtsSpan.TelephoneBuilder(String);
+    method public android.text.style.TtsSpan.TelephoneBuilder setCountryCode(String);
+    method public android.text.style.TtsSpan.TelephoneBuilder setExtension(String);
+    method public android.text.style.TtsSpan.TelephoneBuilder setNumberParts(String);
+  }
+
+  public static class TtsSpan.TextBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.TextBuilder> {
+    ctor public TtsSpan.TextBuilder();
+    ctor public TtsSpan.TextBuilder(String);
+    method public android.text.style.TtsSpan.TextBuilder setText(String);
+  }
+
+  public static class TtsSpan.TimeBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.TimeBuilder> {
+    ctor public TtsSpan.TimeBuilder();
+    ctor public TtsSpan.TimeBuilder(int, int);
+    method public android.text.style.TtsSpan.TimeBuilder setHours(int);
+    method public android.text.style.TtsSpan.TimeBuilder setMinutes(int);
+  }
+
+  public static class TtsSpan.VerbatimBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.VerbatimBuilder> {
+    ctor public TtsSpan.VerbatimBuilder();
+    ctor public TtsSpan.VerbatimBuilder(String);
+    method public android.text.style.TtsSpan.VerbatimBuilder setVerbatim(String);
+  }
+
+  public class TypefaceSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
+    ctor public TypefaceSpan(@Nullable String);
+    ctor public TypefaceSpan(@NonNull android.graphics.Typeface);
+    ctor public TypefaceSpan(@NonNull android.os.Parcel);
+    method public int describeContents();
+    method @Nullable public String getFamily();
+    method public int getSpanTypeId();
+    method @Nullable public android.graphics.Typeface getTypeface();
+    method public void updateDrawState(@NonNull android.text.TextPaint);
+    method public void updateMeasureState(@NonNull android.text.TextPaint);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+  }
+
+  public class URLSpan extends android.text.style.ClickableSpan implements android.text.ParcelableSpan {
+    ctor public URLSpan(String);
+    ctor public URLSpan(@NonNull android.os.Parcel);
+    method public int describeContents();
+    method public int getSpanTypeId();
+    method public String getURL();
+    method public void onClick(android.view.View);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+  }
+
+  public class UnderlineSpan extends android.text.style.CharacterStyle implements android.text.ParcelableSpan android.text.style.UpdateAppearance {
+    ctor public UnderlineSpan();
+    ctor public UnderlineSpan(@NonNull android.os.Parcel);
+    method public int describeContents();
+    method public int getSpanTypeId();
+    method public void updateDrawState(@NonNull android.text.TextPaint);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+  }
+
+  public interface UpdateAppearance {
+  }
+
+  public interface UpdateLayout extends android.text.style.UpdateAppearance {
+  }
+
+  public interface WrapTogetherSpan extends android.text.style.ParagraphStyle {
+  }
+
+}
+
+package android.text.util {
+
+  public class Linkify {
+    ctor public Linkify();
+    method public static final boolean addLinks(@NonNull android.text.Spannable, int);
+    method public static final boolean addLinks(@NonNull android.text.Spannable, int, @Nullable java.util.function.Function<java.lang.String,android.text.style.URLSpan>);
+    method public static final boolean addLinks(@NonNull android.widget.TextView, int);
+    method public static final void addLinks(@NonNull android.widget.TextView, @NonNull java.util.regex.Pattern, @Nullable String);
+    method public static final void addLinks(@NonNull android.widget.TextView, @NonNull java.util.regex.Pattern, @Nullable String, @Nullable android.text.util.Linkify.MatchFilter, @Nullable android.text.util.Linkify.TransformFilter);
+    method public static final void addLinks(@NonNull android.widget.TextView, @NonNull java.util.regex.Pattern, @Nullable String, @Nullable String[], @Nullable android.text.util.Linkify.MatchFilter, @Nullable android.text.util.Linkify.TransformFilter);
+    method public static final boolean addLinks(@NonNull android.text.Spannable, @NonNull java.util.regex.Pattern, @Nullable String);
+    method public static final boolean addLinks(@NonNull android.text.Spannable, @NonNull java.util.regex.Pattern, @Nullable String, @Nullable android.text.util.Linkify.MatchFilter, @Nullable android.text.util.Linkify.TransformFilter);
+    method public static final boolean addLinks(@NonNull android.text.Spannable, @NonNull java.util.regex.Pattern, @Nullable String, @Nullable String[], @Nullable android.text.util.Linkify.MatchFilter, @Nullable android.text.util.Linkify.TransformFilter);
+    method public static final boolean addLinks(@NonNull android.text.Spannable, @NonNull java.util.regex.Pattern, @Nullable String, @Nullable String[], @Nullable android.text.util.Linkify.MatchFilter, @Nullable android.text.util.Linkify.TransformFilter, @Nullable java.util.function.Function<java.lang.String,android.text.style.URLSpan>);
+    field public static final int ALL = 15; // 0xf
+    field public static final int EMAIL_ADDRESSES = 2; // 0x2
+    field @Deprecated public static final int MAP_ADDRESSES = 8; // 0x8
+    field public static final int PHONE_NUMBERS = 4; // 0x4
+    field public static final int WEB_URLS = 1; // 0x1
+    field public static final android.text.util.Linkify.MatchFilter sPhoneNumberMatchFilter;
+    field public static final android.text.util.Linkify.TransformFilter sPhoneNumberTransformFilter;
+    field public static final android.text.util.Linkify.MatchFilter sUrlMatchFilter;
+  }
+
+  public static interface Linkify.MatchFilter {
+    method public boolean acceptMatch(CharSequence, int, int);
+  }
+
+  public static interface Linkify.TransformFilter {
+    method public String transformUrl(java.util.regex.Matcher, String);
+  }
+
+  public class Rfc822Token {
+    ctor public Rfc822Token(@Nullable String, @Nullable String, @Nullable String);
+    method @Nullable public String getAddress();
+    method @Nullable public String getComment();
+    method @Nullable public String getName();
+    method public static String quoteComment(String);
+    method public static String quoteName(String);
+    method public static String quoteNameIfNecessary(String);
+    method public void setAddress(@Nullable String);
+    method public void setComment(@Nullable String);
+    method public void setName(@Nullable String);
+  }
+
+  public class Rfc822Tokenizer implements android.widget.MultiAutoCompleteTextView.Tokenizer {
+    ctor public Rfc822Tokenizer();
+    method public int findTokenEnd(CharSequence, int);
+    method public int findTokenStart(CharSequence, int);
+    method public CharSequence terminateToken(CharSequence);
+    method public static void tokenize(CharSequence, java.util.Collection<android.text.util.Rfc822Token>);
+    method public static android.text.util.Rfc822Token[] tokenize(CharSequence);
+  }
+
+}
+
+package android.transition {
+
+  public class ArcMotion extends android.transition.PathMotion {
+    ctor public ArcMotion();
+    ctor public ArcMotion(android.content.Context, android.util.AttributeSet);
+    method public float getMaximumAngle();
+    method public float getMinimumHorizontalAngle();
+    method public float getMinimumVerticalAngle();
+    method public android.graphics.Path getPath(float, float, float, float);
+    method public void setMaximumAngle(float);
+    method public void setMinimumHorizontalAngle(float);
+    method public void setMinimumVerticalAngle(float);
+  }
+
+  public class AutoTransition extends android.transition.TransitionSet {
+    ctor public AutoTransition();
+    ctor public AutoTransition(android.content.Context, android.util.AttributeSet);
+  }
+
+  public class ChangeBounds extends android.transition.Transition {
+    ctor public ChangeBounds();
+    ctor public ChangeBounds(android.content.Context, android.util.AttributeSet);
+    method public void captureEndValues(android.transition.TransitionValues);
+    method public void captureStartValues(android.transition.TransitionValues);
+    method public boolean getResizeClip();
+    method @Deprecated public void setReparent(boolean);
+    method public void setResizeClip(boolean);
+  }
+
+  public class ChangeClipBounds extends android.transition.Transition {
+    ctor public ChangeClipBounds();
+    ctor public ChangeClipBounds(android.content.Context, android.util.AttributeSet);
+    method public void captureEndValues(android.transition.TransitionValues);
+    method public void captureStartValues(android.transition.TransitionValues);
+  }
+
+  public class ChangeImageTransform extends android.transition.Transition {
+    ctor public ChangeImageTransform();
+    ctor public ChangeImageTransform(android.content.Context, android.util.AttributeSet);
+    method public void captureEndValues(android.transition.TransitionValues);
+    method public void captureStartValues(android.transition.TransitionValues);
+  }
+
+  public class ChangeScroll extends android.transition.Transition {
+    ctor public ChangeScroll();
+    ctor public ChangeScroll(android.content.Context, android.util.AttributeSet);
+    method public void captureEndValues(android.transition.TransitionValues);
+    method public void captureStartValues(android.transition.TransitionValues);
+  }
+
+  public class ChangeTransform extends android.transition.Transition {
+    ctor public ChangeTransform();
+    ctor public ChangeTransform(android.content.Context, android.util.AttributeSet);
+    method public void captureEndValues(android.transition.TransitionValues);
+    method public void captureStartValues(android.transition.TransitionValues);
+    method public boolean getReparent();
+    method public boolean getReparentWithOverlay();
+    method public void setReparent(boolean);
+    method public void setReparentWithOverlay(boolean);
+  }
+
+  public class CircularPropagation extends android.transition.VisibilityPropagation {
+    ctor public CircularPropagation();
+    method public long getStartDelay(android.view.ViewGroup, android.transition.Transition, android.transition.TransitionValues, android.transition.TransitionValues);
+    method public void setPropagationSpeed(float);
+  }
+
+  public class Explode extends android.transition.Visibility {
+    ctor public Explode();
+    ctor public Explode(android.content.Context, android.util.AttributeSet);
+  }
+
+  public class Fade extends android.transition.Visibility {
+    ctor public Fade();
+    ctor public Fade(int);
+    ctor public Fade(android.content.Context, android.util.AttributeSet);
+    field public static final int IN = 1; // 0x1
+    field public static final int OUT = 2; // 0x2
+  }
+
+  public abstract class PathMotion {
+    ctor public PathMotion();
+    ctor public PathMotion(android.content.Context, android.util.AttributeSet);
+    method public abstract android.graphics.Path getPath(float, float, float, float);
+  }
+
+  public class PatternPathMotion extends android.transition.PathMotion {
+    ctor public PatternPathMotion();
+    ctor public PatternPathMotion(android.content.Context, android.util.AttributeSet);
+    ctor public PatternPathMotion(android.graphics.Path);
+    method public android.graphics.Path getPath(float, float, float, float);
+    method public android.graphics.Path getPatternPath();
+    method public void setPatternPath(android.graphics.Path);
+  }
+
+  public final class Scene {
+    ctor public Scene(android.view.ViewGroup);
+    ctor public Scene(android.view.ViewGroup, android.view.View);
+    ctor @Deprecated public Scene(android.view.ViewGroup, android.view.ViewGroup);
+    method public void enter();
+    method public void exit();
+    method @Nullable public static android.transition.Scene getCurrentScene(@NonNull android.view.ViewGroup);
+    method public static android.transition.Scene getSceneForLayout(android.view.ViewGroup, int, android.content.Context);
+    method public android.view.ViewGroup getSceneRoot();
+    method public void setEnterAction(Runnable);
+    method public void setExitAction(Runnable);
+  }
+
+  public class SidePropagation extends android.transition.VisibilityPropagation {
+    ctor public SidePropagation();
+    method public long getStartDelay(android.view.ViewGroup, android.transition.Transition, android.transition.TransitionValues, android.transition.TransitionValues);
+    method public void setPropagationSpeed(float);
+    method public void setSide(int);
+  }
+
+  public class Slide extends android.transition.Visibility {
+    ctor public Slide();
+    ctor public Slide(int);
+    ctor public Slide(android.content.Context, android.util.AttributeSet);
+    method public int getSlideEdge();
+    method public void setSlideEdge(int);
+  }
+
+  public abstract class Transition implements java.lang.Cloneable {
+    ctor public Transition();
+    ctor public Transition(android.content.Context, android.util.AttributeSet);
+    method public android.transition.Transition addListener(android.transition.Transition.TransitionListener);
+    method public android.transition.Transition addTarget(int);
+    method public android.transition.Transition addTarget(String);
+    method public android.transition.Transition addTarget(Class);
+    method public android.transition.Transition addTarget(android.view.View);
+    method public boolean canRemoveViews();
+    method public abstract void captureEndValues(android.transition.TransitionValues);
+    method public abstract void captureStartValues(android.transition.TransitionValues);
+    method public android.transition.Transition clone();
+    method public android.animation.Animator createAnimator(android.view.ViewGroup, android.transition.TransitionValues, android.transition.TransitionValues);
+    method public android.transition.Transition excludeChildren(int, boolean);
+    method public android.transition.Transition excludeChildren(android.view.View, boolean);
+    method public android.transition.Transition excludeChildren(Class, boolean);
+    method public android.transition.Transition excludeTarget(int, boolean);
+    method public android.transition.Transition excludeTarget(String, boolean);
+    method public android.transition.Transition excludeTarget(android.view.View, boolean);
+    method public android.transition.Transition excludeTarget(Class, boolean);
+    method public long getDuration();
+    method public android.graphics.Rect getEpicenter();
+    method public android.transition.Transition.EpicenterCallback getEpicenterCallback();
+    method public android.animation.TimeInterpolator getInterpolator();
+    method public String getName();
+    method public android.transition.PathMotion getPathMotion();
+    method public android.transition.TransitionPropagation getPropagation();
+    method public long getStartDelay();
+    method public java.util.List<java.lang.Integer> getTargetIds();
+    method public java.util.List<java.lang.String> getTargetNames();
+    method public java.util.List<java.lang.Class> getTargetTypes();
+    method public java.util.List<android.view.View> getTargets();
+    method public String[] getTransitionProperties();
+    method public android.transition.TransitionValues getTransitionValues(android.view.View, boolean);
+    method public boolean isTransitionRequired(@Nullable android.transition.TransitionValues, @Nullable android.transition.TransitionValues);
+    method public android.transition.Transition removeListener(android.transition.Transition.TransitionListener);
+    method public android.transition.Transition removeTarget(int);
+    method public android.transition.Transition removeTarget(String);
+    method public android.transition.Transition removeTarget(android.view.View);
+    method public android.transition.Transition removeTarget(Class);
+    method public android.transition.Transition setDuration(long);
+    method public void setEpicenterCallback(android.transition.Transition.EpicenterCallback);
+    method public android.transition.Transition setInterpolator(android.animation.TimeInterpolator);
+    method public void setMatchOrder(int...);
+    method public void setPathMotion(android.transition.PathMotion);
+    method public void setPropagation(android.transition.TransitionPropagation);
+    method public android.transition.Transition setStartDelay(long);
+    field public static final int MATCH_ID = 3; // 0x3
+    field public static final int MATCH_INSTANCE = 1; // 0x1
+    field public static final int MATCH_ITEM_ID = 4; // 0x4
+    field public static final int MATCH_NAME = 2; // 0x2
+  }
+
+  public abstract static class Transition.EpicenterCallback {
+    ctor public Transition.EpicenterCallback();
+    method public abstract android.graphics.Rect onGetEpicenter(android.transition.Transition);
+  }
+
+  public static interface Transition.TransitionListener {
+    method public void onTransitionCancel(android.transition.Transition);
+    method public void onTransitionEnd(android.transition.Transition);
+    method public void onTransitionPause(android.transition.Transition);
+    method public void onTransitionResume(android.transition.Transition);
+    method public void onTransitionStart(android.transition.Transition);
+  }
+
+  public class TransitionInflater {
+    method public static android.transition.TransitionInflater from(android.content.Context);
+    method public android.transition.Transition inflateTransition(@TransitionRes int);
+    method public android.transition.TransitionManager inflateTransitionManager(@TransitionRes int, android.view.ViewGroup);
+  }
+
+  public abstract class TransitionListenerAdapter implements android.transition.Transition.TransitionListener {
+    ctor public TransitionListenerAdapter();
+    method public void onTransitionCancel(android.transition.Transition);
+    method public void onTransitionEnd(android.transition.Transition);
+    method public void onTransitionPause(android.transition.Transition);
+    method public void onTransitionResume(android.transition.Transition);
+    method public void onTransitionStart(android.transition.Transition);
+  }
+
+  public class TransitionManager {
+    ctor public TransitionManager();
+    method public static void beginDelayedTransition(android.view.ViewGroup);
+    method public static void beginDelayedTransition(android.view.ViewGroup, android.transition.Transition);
+    method public static void endTransitions(android.view.ViewGroup);
+    method public static void go(android.transition.Scene);
+    method public static void go(android.transition.Scene, android.transition.Transition);
+    method public void setTransition(android.transition.Scene, android.transition.Transition);
+    method public void setTransition(android.transition.Scene, android.transition.Scene, android.transition.Transition);
+    method public void transitionTo(android.transition.Scene);
+  }
+
+  public abstract class TransitionPropagation {
+    ctor public TransitionPropagation();
+    method public abstract void captureValues(android.transition.TransitionValues);
+    method public abstract String[] getPropagationProperties();
+    method public abstract long getStartDelay(android.view.ViewGroup, android.transition.Transition, android.transition.TransitionValues, android.transition.TransitionValues);
+  }
+
+  public class TransitionSet extends android.transition.Transition {
+    ctor public TransitionSet();
+    ctor public TransitionSet(android.content.Context, android.util.AttributeSet);
+    method public android.transition.TransitionSet addListener(android.transition.Transition.TransitionListener);
+    method public android.transition.TransitionSet addTarget(android.view.View);
+    method public android.transition.TransitionSet addTarget(int);
+    method public android.transition.TransitionSet addTarget(String);
+    method public android.transition.TransitionSet addTarget(Class);
+    method public android.transition.TransitionSet addTransition(android.transition.Transition);
+    method public void captureEndValues(android.transition.TransitionValues);
+    method public void captureStartValues(android.transition.TransitionValues);
+    method public android.transition.TransitionSet clone();
+    method public int getOrdering();
+    method public android.transition.Transition getTransitionAt(int);
+    method public int getTransitionCount();
+    method public android.transition.TransitionSet removeListener(android.transition.Transition.TransitionListener);
+    method public android.transition.TransitionSet removeTarget(int);
+    method public android.transition.TransitionSet removeTarget(android.view.View);
+    method public android.transition.TransitionSet removeTarget(Class);
+    method public android.transition.TransitionSet removeTarget(String);
+    method public android.transition.TransitionSet removeTransition(android.transition.Transition);
+    method public android.transition.TransitionSet setDuration(long);
+    method public android.transition.TransitionSet setInterpolator(android.animation.TimeInterpolator);
+    method public android.transition.TransitionSet setOrdering(int);
+    method public android.transition.TransitionSet setStartDelay(long);
+    field public static final int ORDERING_SEQUENTIAL = 1; // 0x1
+    field public static final int ORDERING_TOGETHER = 0; // 0x0
+  }
+
+  public class TransitionValues {
+    ctor @Deprecated public TransitionValues();
+    ctor public TransitionValues(@NonNull android.view.View);
+    field @NonNull public final java.util.Map<java.lang.String,java.lang.Object> values;
+    field @NonNull public android.view.View view;
+  }
+
+  public abstract class Visibility extends android.transition.Transition {
+    ctor public Visibility();
+    ctor public Visibility(android.content.Context, android.util.AttributeSet);
+    method public void captureEndValues(android.transition.TransitionValues);
+    method public void captureStartValues(android.transition.TransitionValues);
+    method public int getMode();
+    method public boolean isVisible(android.transition.TransitionValues);
+    method public android.animation.Animator onAppear(android.view.ViewGroup, android.transition.TransitionValues, int, android.transition.TransitionValues, int);
+    method public android.animation.Animator onAppear(android.view.ViewGroup, android.view.View, android.transition.TransitionValues, android.transition.TransitionValues);
+    method public android.animation.Animator onDisappear(android.view.ViewGroup, android.transition.TransitionValues, int, android.transition.TransitionValues, int);
+    method public android.animation.Animator onDisappear(android.view.ViewGroup, android.view.View, android.transition.TransitionValues, android.transition.TransitionValues);
+    method public void setMode(int);
+    field public static final int MODE_IN = 1; // 0x1
+    field public static final int MODE_OUT = 2; // 0x2
+  }
+
+  public abstract class VisibilityPropagation extends android.transition.TransitionPropagation {
+    ctor public VisibilityPropagation();
+    method public void captureValues(android.transition.TransitionValues);
+    method public String[] getPropagationProperties();
+    method public int getViewVisibility(android.transition.TransitionValues);
+    method public int getViewX(android.transition.TransitionValues);
+    method public int getViewY(android.transition.TransitionValues);
+  }
+
+}
+
+package android.util {
+
+  public class AndroidException extends java.lang.Exception {
+    ctor public AndroidException();
+    ctor public AndroidException(String);
+    ctor public AndroidException(String, Throwable);
+    ctor public AndroidException(Exception);
+  }
+
+  public class AndroidRuntimeException extends java.lang.RuntimeException {
+    ctor public AndroidRuntimeException();
+    ctor public AndroidRuntimeException(String);
+    ctor public AndroidRuntimeException(String, Throwable);
+    ctor public AndroidRuntimeException(Exception);
+  }
+
+  public final class ArrayMap<K, V> implements java.util.Map<K,V> {
+    ctor public ArrayMap();
+    ctor public ArrayMap(int);
+    ctor public ArrayMap(android.util.ArrayMap<K,V>);
+    method public void clear();
+    method public boolean containsAll(java.util.Collection<?>);
+    method public boolean containsKey(Object);
+    method public boolean containsValue(Object);
+    method public void ensureCapacity(int);
+    method public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
+    method public V get(Object);
+    method public int indexOfKey(Object);
+    method public int indexOfValue(Object);
+    method public boolean isEmpty();
+    method public K keyAt(int);
+    method public java.util.Set<K> keySet();
+    method public V put(K, V);
+    method public void putAll(android.util.ArrayMap<? extends K,? extends V>);
+    method public void putAll(java.util.Map<? extends K,? extends V>);
+    method public V remove(Object);
+    method public boolean removeAll(java.util.Collection<?>);
+    method public V removeAt(int);
+    method public boolean retainAll(java.util.Collection<?>);
+    method public V setValueAt(int, V);
+    method public int size();
+    method public V valueAt(int);
+    method public java.util.Collection<V> values();
+  }
+
+  public final class ArraySet<E> implements java.util.Collection<E> java.util.Set<E> {
+    ctor public ArraySet();
+    ctor public ArraySet(int);
+    ctor public ArraySet(android.util.ArraySet<E>);
+    ctor public ArraySet(java.util.Collection<? extends E>);
+    ctor public ArraySet(@Nullable E[]);
+    method public boolean add(E);
+    method public void addAll(android.util.ArraySet<? extends E>);
+    method public boolean addAll(java.util.Collection<? extends E>);
+    method public void clear();
+    method public boolean contains(Object);
+    method public boolean containsAll(java.util.Collection<?>);
+    method public void ensureCapacity(int);
+    method public int indexOf(Object);
+    method public boolean isEmpty();
+    method public java.util.Iterator<E> iterator();
+    method public boolean remove(Object);
+    method public boolean removeAll(android.util.ArraySet<? extends E>);
+    method public boolean removeAll(java.util.Collection<?>);
+    method public E removeAt(int);
+    method public boolean retainAll(java.util.Collection<?>);
+    method public int size();
+    method public Object[] toArray();
+    method public <T> T[] toArray(T[]);
+    method public E valueAt(int);
+  }
+
+  public class AtomicFile {
+    ctor public AtomicFile(java.io.File);
+    method public void delete();
+    method public void failWrite(java.io.FileOutputStream);
+    method public void finishWrite(java.io.FileOutputStream);
+    method public java.io.File getBaseFile();
+    method public java.io.FileInputStream openRead() throws java.io.FileNotFoundException;
+    method public byte[] readFully() throws java.io.IOException;
+    method public java.io.FileOutputStream startWrite() throws java.io.IOException;
+  }
+
+  public interface AttributeSet {
+    method public boolean getAttributeBooleanValue(String, String, boolean);
+    method public boolean getAttributeBooleanValue(int, boolean);
+    method public int getAttributeCount();
+    method public float getAttributeFloatValue(String, String, float);
+    method public float getAttributeFloatValue(int, float);
+    method public int getAttributeIntValue(String, String, int);
+    method public int getAttributeIntValue(int, int);
+    method public int getAttributeListValue(String, String, String[], int);
+    method public int getAttributeListValue(int, String[], int);
+    method public String getAttributeName(int);
+    method public int getAttributeNameResource(int);
+    method public default String getAttributeNamespace(int);
+    method public int getAttributeResourceValue(String, String, int);
+    method public int getAttributeResourceValue(int, int);
+    method public int getAttributeUnsignedIntValue(String, String, int);
+    method public int getAttributeUnsignedIntValue(int, int);
+    method public String getAttributeValue(int);
+    method public String getAttributeValue(String, String);
+    method public String getClassAttribute();
+    method public String getIdAttribute();
+    method public int getIdAttributeResourceValue(int);
+    method public String getPositionDescription();
+    method public int getStyleAttribute();
+  }
+
+  public class Base64 {
+    method public static byte[] decode(String, int);
+    method public static byte[] decode(byte[], int);
+    method public static byte[] decode(byte[], int, int, int);
+    method public static byte[] encode(byte[], int);
+    method public static byte[] encode(byte[], int, int, int);
+    method public static String encodeToString(byte[], int);
+    method public static String encodeToString(byte[], int, int, int);
+    field public static final int CRLF = 4; // 0x4
+    field public static final int DEFAULT = 0; // 0x0
+    field public static final int NO_CLOSE = 16; // 0x10
+    field public static final int NO_PADDING = 1; // 0x1
+    field public static final int NO_WRAP = 2; // 0x2
+    field public static final int URL_SAFE = 8; // 0x8
+  }
+
+  public class Base64DataException extends java.io.IOException {
+    ctor public Base64DataException(String);
+  }
+
+  public class Base64InputStream extends java.io.FilterInputStream {
+    ctor public Base64InputStream(java.io.InputStream, int);
+    method public int available();
+    method public void reset();
+  }
+
+  public class Base64OutputStream extends java.io.FilterOutputStream {
+    ctor public Base64OutputStream(java.io.OutputStream, int);
+  }
+
+  public final class CloseGuard {
+    ctor public CloseGuard();
+    method public void close();
+    method public void open(@NonNull String);
+    method public void warnIfOpen();
+  }
+
+  @Deprecated public final class Config {
+    field @Deprecated public static final boolean DEBUG = false;
+    field @Deprecated public static final boolean LOGD = true;
+    field @Deprecated public static final boolean LOGV = false;
+    field @Deprecated public static final boolean PROFILE = false;
+    field @Deprecated public static final boolean RELEASE = true;
+  }
+
+  public class DebugUtils {
+    method public static boolean isObjectSelected(Object);
+  }
+
+  public class DisplayMetrics {
+    ctor public DisplayMetrics();
+    method public boolean equals(android.util.DisplayMetrics);
+    method public void setTo(android.util.DisplayMetrics);
+    method public void setToDefaults();
+    field public static final int DENSITY_140 = 140; // 0x8c
+    field public static final int DENSITY_180 = 180; // 0xb4
+    field public static final int DENSITY_200 = 200; // 0xc8
+    field public static final int DENSITY_220 = 220; // 0xdc
+    field public static final int DENSITY_260 = 260; // 0x104
+    field public static final int DENSITY_280 = 280; // 0x118
+    field public static final int DENSITY_300 = 300; // 0x12c
+    field public static final int DENSITY_340 = 340; // 0x154
+    field public static final int DENSITY_360 = 360; // 0x168
+    field public static final int DENSITY_400 = 400; // 0x190
+    field public static final int DENSITY_420 = 420; // 0x1a4
+    field public static final int DENSITY_440 = 440; // 0x1b8
+    field public static final int DENSITY_450 = 450; // 0x1c2
+    field public static final int DENSITY_560 = 560; // 0x230
+    field public static final int DENSITY_600 = 600; // 0x258
+    field public static final int DENSITY_DEFAULT = 160; // 0xa0
+    field public static final int DENSITY_DEVICE_STABLE;
+    field public static final int DENSITY_HIGH = 240; // 0xf0
+    field public static final int DENSITY_LOW = 120; // 0x78
+    field public static final int DENSITY_MEDIUM = 160; // 0xa0
+    field public static final int DENSITY_TV = 213; // 0xd5
+    field public static final int DENSITY_XHIGH = 320; // 0x140
+    field public static final int DENSITY_XXHIGH = 480; // 0x1e0
+    field public static final int DENSITY_XXXHIGH = 640; // 0x280
+    field public float density;
+    field public int densityDpi;
+    field public int heightPixels;
+    field public float scaledDensity;
+    field public int widthPixels;
+    field public float xdpi;
+    field public float ydpi;
+  }
+
+  public class EventLog {
+    method public static int getTagCode(String);
+    method public static String getTagName(int);
+    method public static void readEvents(int[], java.util.Collection<android.util.EventLog.Event>) throws java.io.IOException;
+    method public static int writeEvent(int, int);
+    method public static int writeEvent(int, long);
+    method public static int writeEvent(int, float);
+    method public static int writeEvent(int, String);
+    method public static int writeEvent(int, java.lang.Object...);
+  }
+
+  public static final class EventLog.Event {
+    method public Object getData();
+    method public int getProcessId();
+    method public int getTag();
+    method public int getThreadId();
+    method public long getTimeNanos();
+  }
+
+  @Deprecated public class EventLogTags {
+    ctor @Deprecated public EventLogTags() throws java.io.IOException;
+    ctor @Deprecated public EventLogTags(java.io.BufferedReader) throws java.io.IOException;
+    method @Deprecated public android.util.EventLogTags.Description get(String);
+    method @Deprecated public android.util.EventLogTags.Description get(int);
+  }
+
+  @Deprecated public static class EventLogTags.Description {
+    field @Deprecated public final String mName;
+    field @Deprecated public final int mTag;
+  }
+
+  @Deprecated public class FloatMath {
+  }
+
+  public abstract class FloatProperty<T> extends android.util.Property<T,java.lang.Float> {
+    ctor public FloatProperty(String);
+    method public final void set(T, Float);
+    method public abstract void setValue(T, float);
+  }
+
+  public final class Half extends java.lang.Number implements java.lang.Comparable<android.util.Half> {
+    ctor public Half(@HalfFloat short);
+    ctor public Half(float);
+    ctor public Half(double);
+    ctor public Half(@NonNull String) throws java.lang.NumberFormatException;
+    method @HalfFloat public static short abs(@HalfFloat short);
+    method @HalfFloat public static short ceil(@HalfFloat short);
+    method public static int compare(@HalfFloat short, @HalfFloat short);
+    method public int compareTo(@NonNull android.util.Half);
+    method @HalfFloat public static short copySign(@HalfFloat short, @HalfFloat short);
+    method public double doubleValue();
+    method public static boolean equals(@HalfFloat short, @HalfFloat short);
+    method public float floatValue();
+    method @HalfFloat public static short floor(@HalfFloat short);
+    method public static int getExponent(@HalfFloat short);
+    method public static int getSign(@HalfFloat short);
+    method public static int getSignificand(@HalfFloat short);
+    method public static boolean greater(@HalfFloat short, @HalfFloat short);
+    method public static boolean greaterEquals(@HalfFloat short, @HalfFloat short);
+    method public static int halfToIntBits(@HalfFloat short);
+    method public static int halfToRawIntBits(@HalfFloat short);
+    method @HalfFloat public static short halfToShortBits(@HalfFloat short);
+    method @HalfFloat public short halfValue();
+    method public static int hashCode(@HalfFloat short);
+    method @HalfFloat public static short intBitsToHalf(int);
+    method public int intValue();
+    method public static boolean isInfinite(@HalfFloat short);
+    method public boolean isNaN();
+    method public static boolean isNaN(@HalfFloat short);
+    method public static boolean isNormalized(@HalfFloat short);
+    method public static boolean less(@HalfFloat short, @HalfFloat short);
+    method public static boolean lessEquals(@HalfFloat short, @HalfFloat short);
+    method public long longValue();
+    method @HalfFloat public static short max(@HalfFloat short, @HalfFloat short);
+    method @HalfFloat public static short min(@HalfFloat short, @HalfFloat short);
+    method @HalfFloat public static short parseHalf(@NonNull String) throws java.lang.NumberFormatException;
+    method @HalfFloat public static short round(@HalfFloat short);
+    method public static float toFloat(@HalfFloat short);
+    method @HalfFloat public static short toHalf(float);
+    method @NonNull public static String toHexString(@HalfFloat short);
+    method @NonNull public static String toString(@HalfFloat short);
+    method @HalfFloat public static short trunc(@HalfFloat short);
+    method @NonNull public static android.util.Half valueOf(@HalfFloat short);
+    method @NonNull public static android.util.Half valueOf(float);
+    method @NonNull public static android.util.Half valueOf(@NonNull String);
+    field @HalfFloat public static final short EPSILON = 5120; // 0x1400
+    field @HalfFloat public static final short LOWEST_VALUE = -1025; // 0xfffffbff
+    field public static final int MAX_EXPONENT = 15; // 0xf
+    field @HalfFloat public static final short MAX_VALUE = 31743; // 0x7bff
+    field public static final int MIN_EXPONENT = -14; // 0xfffffff2
+    field @HalfFloat public static final short MIN_NORMAL = 1024; // 0x400
+    field @HalfFloat public static final short MIN_VALUE = 1; // 0x1
+    field @HalfFloat public static final short NEGATIVE_INFINITY = -1024; // 0xfffffc00
+    field @HalfFloat public static final short NEGATIVE_ZERO = -32768; // 0xffff8000
+    field @HalfFloat public static final short NaN = 32256; // 0x7e00
+    field @HalfFloat public static final short POSITIVE_INFINITY = 31744; // 0x7c00
+    field @HalfFloat public static final short POSITIVE_ZERO = 0; // 0x0
+    field public static final int SIZE = 16; // 0x10
+  }
+
+  public abstract class IntProperty<T> extends android.util.Property<T,java.lang.Integer> {
+    ctor public IntProperty(String);
+    method public final void set(T, Integer);
+    method public abstract void setValue(T, int);
+  }
+
+  public final class JsonReader implements java.io.Closeable {
+    ctor public JsonReader(java.io.Reader);
+    method public void beginArray() throws java.io.IOException;
+    method public void beginObject() throws java.io.IOException;
+    method public void close() throws java.io.IOException;
+    method public void endArray() throws java.io.IOException;
+    method public void endObject() throws java.io.IOException;
+    method public boolean hasNext() throws java.io.IOException;
+    method public boolean isLenient();
+    method public boolean nextBoolean() throws java.io.IOException;
+    method public double nextDouble() throws java.io.IOException;
+    method public int nextInt() throws java.io.IOException;
+    method public long nextLong() throws java.io.IOException;
+    method public String nextName() throws java.io.IOException;
+    method public void nextNull() throws java.io.IOException;
+    method public String nextString() throws java.io.IOException;
+    method public android.util.JsonToken peek() throws java.io.IOException;
+    method public void setLenient(boolean);
+    method public void skipValue() throws java.io.IOException;
+  }
+
+  public enum JsonToken {
+    enum_constant public static final android.util.JsonToken BEGIN_ARRAY;
+    enum_constant public static final android.util.JsonToken BEGIN_OBJECT;
+    enum_constant public static final android.util.JsonToken BOOLEAN;
+    enum_constant public static final android.util.JsonToken END_ARRAY;
+    enum_constant public static final android.util.JsonToken END_DOCUMENT;
+    enum_constant public static final android.util.JsonToken END_OBJECT;
+    enum_constant public static final android.util.JsonToken NAME;
+    enum_constant public static final android.util.JsonToken NULL;
+    enum_constant public static final android.util.JsonToken NUMBER;
+    enum_constant public static final android.util.JsonToken STRING;
+  }
+
+  public final class JsonWriter implements java.io.Closeable {
+    ctor public JsonWriter(java.io.Writer);
+    method public android.util.JsonWriter beginArray() throws java.io.IOException;
+    method public android.util.JsonWriter beginObject() throws java.io.IOException;
+    method public void close() throws java.io.IOException;
+    method public android.util.JsonWriter endArray() throws java.io.IOException;
+    method public android.util.JsonWriter endObject() throws java.io.IOException;
+    method public void flush() throws java.io.IOException;
+    method public boolean isLenient();
+    method public android.util.JsonWriter name(String) throws java.io.IOException;
+    method public android.util.JsonWriter nullValue() throws java.io.IOException;
+    method public void setIndent(String);
+    method public void setLenient(boolean);
+    method public android.util.JsonWriter value(String) throws java.io.IOException;
+    method public android.util.JsonWriter value(boolean) throws java.io.IOException;
+    method public android.util.JsonWriter value(double) throws java.io.IOException;
+    method public android.util.JsonWriter value(long) throws java.io.IOException;
+    method public android.util.JsonWriter value(Number) throws java.io.IOException;
+  }
+
+  public final class LayoutDirection {
+    field public static final int INHERIT = 2; // 0x2
+    field public static final int LOCALE = 3; // 0x3
+    field public static final int LTR = 0; // 0x0
+    field public static final int RTL = 1; // 0x1
+  }
+
+  public final class Log {
+    method public static int d(@Nullable String, @NonNull String);
+    method public static int d(@Nullable String, @Nullable String, @Nullable Throwable);
+    method public static int e(@Nullable String, @NonNull String);
+    method public static int e(@Nullable String, @Nullable String, @Nullable Throwable);
+    method @NonNull public static String getStackTraceString(@Nullable Throwable);
+    method public static int i(@Nullable String, @NonNull String);
+    method public static int i(@Nullable String, @Nullable String, @Nullable Throwable);
+    method public static boolean isLoggable(@Nullable @Size(max=23, apis="..23") String, int);
+    method public static int println(int, @Nullable String, @NonNull String);
+    method public static int v(@Nullable String, @NonNull String);
+    method public static int v(@Nullable String, @Nullable String, @Nullable Throwable);
+    method public static int w(@Nullable String, @NonNull String);
+    method public static int w(@Nullable String, @Nullable String, @Nullable Throwable);
+    method public static int w(@Nullable String, @Nullable Throwable);
+    method public static int wtf(@Nullable String, @Nullable String);
+    method public static int wtf(@Nullable String, @NonNull Throwable);
+    method public static int wtf(@Nullable String, @Nullable String, @Nullable Throwable);
+    field public static final int ASSERT = 7; // 0x7
+    field public static final int DEBUG = 3; // 0x3
+    field public static final int ERROR = 6; // 0x6
+    field public static final int INFO = 4; // 0x4
+    field public static final int VERBOSE = 2; // 0x2
+    field public static final int WARN = 5; // 0x5
+  }
+
+  public class LogPrinter implements android.util.Printer {
+    ctor public LogPrinter(int, String);
+    method public void println(String);
+  }
+
+  public class LongSparseArray<E> implements java.lang.Cloneable {
+    ctor public LongSparseArray();
+    ctor public LongSparseArray(int);
+    method public void append(long, E);
+    method public void clear();
+    method public android.util.LongSparseArray<E> clone();
+    method public void delete(long);
+    method public E get(long);
+    method public E get(long, E);
+    method public int indexOfKey(long);
+    method public int indexOfValue(E);
+    method public long keyAt(int);
+    method public void put(long, E);
+    method public void remove(long);
+    method public void removeAt(int);
+    method public void setValueAt(int, E);
+    method public int size();
+    method public E valueAt(int);
+  }
+
+  public class LruCache<K, V> {
+    ctor public LruCache(int);
+    method protected V create(K);
+    method public final int createCount();
+    method protected void entryRemoved(boolean, K, V, V);
+    method public final void evictAll();
+    method public final int evictionCount();
+    method public final V get(K);
+    method public final int hitCount();
+    method public final int maxSize();
+    method public final int missCount();
+    method public final V put(K, V);
+    method public final int putCount();
+    method public final V remove(K);
+    method public void resize(int);
+    method public final int size();
+    method protected int sizeOf(K, V);
+    method public final java.util.Map<K,V> snapshot();
+    method public final String toString();
+    method public void trimToSize(int);
+  }
+
+  public final class MalformedJsonException extends java.io.IOException {
+    ctor public MalformedJsonException(String);
+  }
+
+  public class MonthDisplayHelper {
+    ctor public MonthDisplayHelper(int, int, int);
+    ctor public MonthDisplayHelper(int, int);
+    method public int getColumnOf(int);
+    method public int getDayAt(int, int);
+    method public int[] getDigitsForRow(int);
+    method public int getFirstDayOfMonth();
+    method public int getMonth();
+    method public int getNumberOfDaysInMonth();
+    method public int getOffset();
+    method public int getRowOf(int);
+    method public int getWeekStartDay();
+    method public int getYear();
+    method public boolean isWithinCurrentMonth(int, int);
+    method public void nextMonth();
+    method public void previousMonth();
+  }
+
+  @Deprecated public final class MutableBoolean {
+    ctor @Deprecated public MutableBoolean(boolean);
+    field @Deprecated public boolean value;
+  }
+
+  @Deprecated public final class MutableByte {
+    ctor @Deprecated public MutableByte(byte);
+    field @Deprecated public byte value;
+  }
+
+  @Deprecated public final class MutableChar {
+    ctor @Deprecated public MutableChar(char);
+    field @Deprecated public char value;
+  }
+
+  @Deprecated public final class MutableDouble {
+    ctor @Deprecated public MutableDouble(double);
+    field @Deprecated public double value;
+  }
+
+  @Deprecated public final class MutableFloat {
+    ctor @Deprecated public MutableFloat(float);
+    field @Deprecated public float value;
+  }
+
+  @Deprecated public final class MutableInt {
+    ctor @Deprecated public MutableInt(int);
+    field @Deprecated public int value;
+  }
+
+  @Deprecated public final class MutableLong {
+    ctor @Deprecated public MutableLong(long);
+    field @Deprecated public long value;
+  }
+
+  @Deprecated public final class MutableShort {
+    ctor @Deprecated public MutableShort(short);
+    field @Deprecated public short value;
+  }
+
+  public class NoSuchPropertyException extends java.lang.RuntimeException {
+    ctor public NoSuchPropertyException(String);
+  }
+
+  public class Pair<F, S> {
+    ctor public Pair(F, S);
+    method public static <A, B> android.util.Pair<A,B> create(A, B);
+    field public final F first;
+    field public final S second;
+  }
+
+  public class Patterns {
+    method public static final String concatGroups(java.util.regex.Matcher);
+    method public static final String digitsAndPlusOnly(java.util.regex.Matcher);
+    field public static final java.util.regex.Pattern DOMAIN_NAME;
+    field public static final java.util.regex.Pattern EMAIL_ADDRESS;
+    field @Deprecated public static final String GOOD_IRI_CHAR = "a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef";
+    field public static final java.util.regex.Pattern IP_ADDRESS;
+    field public static final java.util.regex.Pattern PHONE;
+    field @Deprecated public static final java.util.regex.Pattern TOP_LEVEL_DOMAIN;
+    field @Deprecated public static final String TOP_LEVEL_DOMAIN_STR = "((aero|arpa|asia|a[cdefgilmnoqrstuwxz])|(biz|b[abdefghijmnorstvwyz])|(cat|com|coop|c[acdfghiklmnoruvxyz])|d[ejkmoz]|(edu|e[cegrstu])|f[ijkmor]|(gov|g[abdefghilmnpqrstuwy])|h[kmnrtu]|(info|int|i[delmnoqrst])|(jobs|j[emop])|k[eghimnprwyz]|l[abcikrstuvy]|(mil|mobi|museum|m[acdeghklmnopqrstuvwxyz])|(name|net|n[acefgilopruz])|(org|om)|(pro|p[aefghklmnrstwy])|qa|r[eosuw]|s[abcdeghijklmnortuvyz]|(tel|travel|t[cdfghjklmnoprtvwz])|u[agksyz]|v[aceginu]|w[fs]|(\u03b4\u03bf\u03ba\u03b9\u03bc\u03ae|\u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0435|\u0440\u0444|\u0441\u0440\u0431|\u05d8\u05e2\u05e1\u05d8|\u0622\u0632\u0645\u0627\u06cc\u0634\u06cc|\u0625\u062e\u062a\u0628\u0627\u0631|\u0627\u0644\u0627\u0631\u062f\u0646|\u0627\u0644\u062c\u0632\u0627\u0626\u0631|\u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629|\u0627\u0644\u0645\u063a\u0631\u0628|\u0627\u0645\u0627\u0631\u0627\u062a|\u0628\u06be\u0627\u0631\u062a|\u062a\u0648\u0646\u0633|\u0633\u0648\u0631\u064a\u0629|\u0641\u0644\u0633\u0637\u064a\u0646|\u0642\u0637\u0631|\u0645\u0635\u0631|\u092a\u0930\u0940\u0915\u094d\u0937\u093e|\u092d\u093e\u0930\u0924|\u09ad\u09be\u09b0\u09a4|\u0a2d\u0a3e\u0a30\u0a24|\u0aad\u0abe\u0ab0\u0aa4|\u0b87\u0ba8\u0bcd\u0ba4\u0bbf\u0baf\u0bbe|\u0b87\u0bb2\u0b99\u0bcd\u0b95\u0bc8|\u0b9a\u0bbf\u0b99\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0bc2\u0bb0\u0bcd|\u0baa\u0bb0\u0bbf\u0b9f\u0bcd\u0b9a\u0bc8|\u0c2d\u0c3e\u0c30\u0c24\u0c4d|\u0dbd\u0d82\u0d9a\u0dcf|\u0e44\u0e17\u0e22|\u30c6\u30b9\u30c8|\u4e2d\u56fd|\u4e2d\u570b|\u53f0\u6e7e|\u53f0\u7063|\u65b0\u52a0\u5761|\u6d4b\u8bd5|\u6e2c\u8a66|\u9999\u6e2f|\ud14c\uc2a4\ud2b8|\ud55c\uad6d|xn\\-\\-0zwm56d|xn\\-\\-11b5bs3a9aj6g|xn\\-\\-3e0b707e|xn\\-\\-45brj9c|xn\\-\\-80akhbyknj4f|xn\\-\\-90a3ac|xn\\-\\-9t4b11yi5a|xn\\-\\-clchc0ea0b2g2a9gcd|xn\\-\\-deba0ad|xn\\-\\-fiqs8s|xn\\-\\-fiqz9s|xn\\-\\-fpcrj9c3d|xn\\-\\-fzc2c9e2c|xn\\-\\-g6w251d|xn\\-\\-gecrj9c|xn\\-\\-h2brj9c|xn\\-\\-hgbk6aj7f53bba|xn\\-\\-hlcj6aya9esc7a|xn\\-\\-j6w193g|xn\\-\\-jxalpdlp|xn\\-\\-kgbechtv|xn\\-\\-kprw13d|xn\\-\\-kpry57d|xn\\-\\-lgbbat1ad8j|xn\\-\\-mgbaam7a8h|xn\\-\\-mgbayh7gpa|xn\\-\\-mgbbh1a71e|xn\\-\\-mgbc0a9azcg|xn\\-\\-mgberp4a5d4ar|xn\\-\\-o3cw4h|xn\\-\\-ogbpf8fl|xn\\-\\-p1ai|xn\\-\\-pgbs0dh|xn\\-\\-s9brj9c|xn\\-\\-wgbh1c|xn\\-\\-wgbl6a|xn\\-\\-xkc2al3hye2a|xn\\-\\-xkc2dl3a5ee0h|xn\\-\\-yfro4i67o|xn\\-\\-ygbi2ammx|xn\\-\\-zckzah|xxx)|y[et]|z[amw])";
+    field @Deprecated public static final String TOP_LEVEL_DOMAIN_STR_FOR_WEB_URL = "(?:(?:aero|arpa|asia|a[cdefgilmnoqrstuwxz])|(?:biz|b[abdefghijmnorstvwyz])|(?:cat|com|coop|c[acdfghiklmnoruvxyz])|d[ejkmoz]|(?:edu|e[cegrstu])|f[ijkmor]|(?:gov|g[abdefghilmnpqrstuwy])|h[kmnrtu]|(?:info|int|i[delmnoqrst])|(?:jobs|j[emop])|k[eghimnprwyz]|l[abcikrstuvy]|(?:mil|mobi|museum|m[acdeghklmnopqrstuvwxyz])|(?:name|net|n[acefgilopruz])|(?:org|om)|(?:pro|p[aefghklmnrstwy])|qa|r[eosuw]|s[abcdeghijklmnortuvyz]|(?:tel|travel|t[cdfghjklmnoprtvwz])|u[agksyz]|v[aceginu]|w[fs]|(?:\u03b4\u03bf\u03ba\u03b9\u03bc\u03ae|\u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0435|\u0440\u0444|\u0441\u0440\u0431|\u05d8\u05e2\u05e1\u05d8|\u0622\u0632\u0645\u0627\u06cc\u0634\u06cc|\u0625\u062e\u062a\u0628\u0627\u0631|\u0627\u0644\u0627\u0631\u062f\u0646|\u0627\u0644\u062c\u0632\u0627\u0626\u0631|\u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629|\u0627\u0644\u0645\u063a\u0631\u0628|\u0627\u0645\u0627\u0631\u0627\u062a|\u0628\u06be\u0627\u0631\u062a|\u062a\u0648\u0646\u0633|\u0633\u0648\u0631\u064a\u0629|\u0641\u0644\u0633\u0637\u064a\u0646|\u0642\u0637\u0631|\u0645\u0635\u0631|\u092a\u0930\u0940\u0915\u094d\u0937\u093e|\u092d\u093e\u0930\u0924|\u09ad\u09be\u09b0\u09a4|\u0a2d\u0a3e\u0a30\u0a24|\u0aad\u0abe\u0ab0\u0aa4|\u0b87\u0ba8\u0bcd\u0ba4\u0bbf\u0baf\u0bbe|\u0b87\u0bb2\u0b99\u0bcd\u0b95\u0bc8|\u0b9a\u0bbf\u0b99\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0bc2\u0bb0\u0bcd|\u0baa\u0bb0\u0bbf\u0b9f\u0bcd\u0b9a\u0bc8|\u0c2d\u0c3e\u0c30\u0c24\u0c4d|\u0dbd\u0d82\u0d9a\u0dcf|\u0e44\u0e17\u0e22|\u30c6\u30b9\u30c8|\u4e2d\u56fd|\u4e2d\u570b|\u53f0\u6e7e|\u53f0\u7063|\u65b0\u52a0\u5761|\u6d4b\u8bd5|\u6e2c\u8a66|\u9999\u6e2f|\ud14c\uc2a4\ud2b8|\ud55c\uad6d|xn\\-\\-0zwm56d|xn\\-\\-11b5bs3a9aj6g|xn\\-\\-3e0b707e|xn\\-\\-45brj9c|xn\\-\\-80akhbyknj4f|xn\\-\\-90a3ac|xn\\-\\-9t4b11yi5a|xn\\-\\-clchc0ea0b2g2a9gcd|xn\\-\\-deba0ad|xn\\-\\-fiqs8s|xn\\-\\-fiqz9s|xn\\-\\-fpcrj9c3d|xn\\-\\-fzc2c9e2c|xn\\-\\-g6w251d|xn\\-\\-gecrj9c|xn\\-\\-h2brj9c|xn\\-\\-hgbk6aj7f53bba|xn\\-\\-hlcj6aya9esc7a|xn\\-\\-j6w193g|xn\\-\\-jxalpdlp|xn\\-\\-kgbechtv|xn\\-\\-kprw13d|xn\\-\\-kpry57d|xn\\-\\-lgbbat1ad8j|xn\\-\\-mgbaam7a8h|xn\\-\\-mgbayh7gpa|xn\\-\\-mgbbh1a71e|xn\\-\\-mgbc0a9azcg|xn\\-\\-mgberp4a5d4ar|xn\\-\\-o3cw4h|xn\\-\\-ogbpf8fl|xn\\-\\-p1ai|xn\\-\\-pgbs0dh|xn\\-\\-s9brj9c|xn\\-\\-wgbh1c|xn\\-\\-wgbl6a|xn\\-\\-xkc2al3hye2a|xn\\-\\-xkc2dl3a5ee0h|xn\\-\\-yfro4i67o|xn\\-\\-ygbi2ammx|xn\\-\\-zckzah|xxx)|y[et]|z[amw]))";
+    field public static final java.util.regex.Pattern WEB_URL;
+  }
+
+  public class PrintStreamPrinter implements android.util.Printer {
+    ctor public PrintStreamPrinter(java.io.PrintStream);
+    method public void println(String);
+  }
+
+  public class PrintWriterPrinter implements android.util.Printer {
+    ctor public PrintWriterPrinter(java.io.PrintWriter);
+    method public void println(String);
+  }
+
+  public interface Printer {
+    method public void println(String);
+  }
+
+  public abstract class Property<T, V> {
+    ctor public Property(Class<V>, String);
+    method public abstract V get(T);
+    method public String getName();
+    method public Class<V> getType();
+    method public boolean isReadOnly();
+    method public static <T, V> android.util.Property<T,V> of(Class<T>, Class<V>, String);
+    method public void set(T, V);
+  }
+
+  public final class Range<T extends java.lang.Comparable<? super T>> {
+    ctor public Range(T, T);
+    method public T clamp(T);
+    method public boolean contains(T);
+    method public boolean contains(android.util.Range<T>);
+    method public static <T extends java.lang.Comparable<? super T>> android.util.Range<T> create(T, T);
+    method public android.util.Range<T> extend(android.util.Range<T>);
+    method public android.util.Range<T> extend(T, T);
+    method public android.util.Range<T> extend(T);
+    method public T getLower();
+    method public T getUpper();
+    method public android.util.Range<T> intersect(android.util.Range<T>);
+    method public android.util.Range<T> intersect(T, T);
+  }
+
+  public final class Rational extends java.lang.Number implements java.lang.Comparable<android.util.Rational> {
+    ctor public Rational(int, int);
+    method public int compareTo(android.util.Rational);
+    method public double doubleValue();
+    method public float floatValue();
+    method public int getDenominator();
+    method public int getNumerator();
+    method public int intValue();
+    method public boolean isFinite();
+    method public boolean isInfinite();
+    method public boolean isNaN();
+    method public boolean isZero();
+    method public long longValue();
+    method public static android.util.Rational parseRational(String) throws java.lang.NumberFormatException;
+    field public static final android.util.Rational NEGATIVE_INFINITY;
+    field public static final android.util.Rational NaN;
+    field public static final android.util.Rational POSITIVE_INFINITY;
+    field public static final android.util.Rational ZERO;
+  }
+
+  public final class Size {
+    ctor public Size(int, int);
+    method public int getHeight();
+    method public int getWidth();
+    method public static android.util.Size parseSize(String) throws java.lang.NumberFormatException;
+  }
+
+  public final class SizeF {
+    ctor public SizeF(float, float);
+    method public float getHeight();
+    method public float getWidth();
+    method public static android.util.SizeF parseSizeF(String) throws java.lang.NumberFormatException;
+  }
+
+  public class SparseArray<E> implements java.lang.Cloneable {
+    ctor public SparseArray();
+    ctor public SparseArray(int);
+    method public void append(int, E);
+    method public void clear();
+    method public android.util.SparseArray<E> clone();
+    method public boolean contains(int);
+    method public void delete(int);
+    method public E get(int);
+    method public E get(int, E);
+    method public int indexOfKey(int);
+    method public int indexOfValue(E);
+    method public int keyAt(int);
+    method public void put(int, E);
+    method public void remove(int);
+    method public void removeAt(int);
+    method public void removeAtRange(int, int);
+    method public void setValueAt(int, E);
+    method public int size();
+    method public E valueAt(int);
+  }
+
+  public class SparseBooleanArray implements java.lang.Cloneable {
+    ctor public SparseBooleanArray();
+    ctor public SparseBooleanArray(int);
+    method public void append(int, boolean);
+    method public void clear();
+    method public android.util.SparseBooleanArray clone();
+    method public void delete(int);
+    method public boolean get(int);
+    method public boolean get(int, boolean);
+    method public int indexOfKey(int);
+    method public int indexOfValue(boolean);
+    method public int keyAt(int);
+    method public void put(int, boolean);
+    method public void removeAt(int);
+    method public void setValueAt(int, boolean);
+    method public int size();
+    method public boolean valueAt(int);
+  }
+
+  public class SparseIntArray implements java.lang.Cloneable {
+    ctor public SparseIntArray();
+    ctor public SparseIntArray(int);
+    method public void append(int, int);
+    method public void clear();
+    method public android.util.SparseIntArray clone();
+    method public void delete(int);
+    method public int get(int);
+    method public int get(int, int);
+    method public int indexOfKey(int);
+    method public int indexOfValue(int);
+    method public int keyAt(int);
+    method public void put(int, int);
+    method public void removeAt(int);
+    method public void setValueAt(int, int);
+    method public int size();
+    method public int valueAt(int);
+  }
+
+  public class SparseLongArray implements java.lang.Cloneable {
+    ctor public SparseLongArray();
+    ctor public SparseLongArray(int);
+    method public void append(int, long);
+    method public void clear();
+    method public android.util.SparseLongArray clone();
+    method public void delete(int);
+    method public long get(int);
+    method public long get(int, long);
+    method public int indexOfKey(int);
+    method public int indexOfValue(long);
+    method public int keyAt(int);
+    method public void put(int, long);
+    method public void removeAt(int);
+    method public int size();
+    method public long valueAt(int);
+  }
+
+  public class StateSet {
+    method public static String dump(int[]);
+    method public static boolean isWildCard(int[]);
+    method public static boolean stateSetMatches(int[], int[]);
+    method public static boolean stateSetMatches(int[], int);
+    method public static int[] trimStateSet(int[], int);
+    field public static final int[] NOTHING;
+    field public static final int[] WILD_CARD;
+  }
+
+  public class StringBuilderPrinter implements android.util.Printer {
+    ctor public StringBuilderPrinter(StringBuilder);
+    method public void println(String);
+  }
+
+  public class TimeFormatException extends java.lang.RuntimeException {
+  }
+
+  public class TimeUtils {
+    method public static java.util.TimeZone getTimeZone(int, boolean, long, String);
+    method public static String getTimeZoneDatabaseVersion();
+    method @Nullable public static java.util.List<java.lang.String> getTimeZoneIdsForCountryCode(@NonNull String);
+    method public static boolean isTimeBetween(@NonNull java.time.LocalTime, @NonNull java.time.LocalTime, @NonNull java.time.LocalTime);
+  }
+
+  @Deprecated public class TimingLogger {
+    ctor @Deprecated public TimingLogger(String, String);
+    method @Deprecated public void addSplit(String);
+    method @Deprecated public void dumpToLog();
+    method @Deprecated public void reset(String, String);
+    method @Deprecated public void reset();
+  }
+
+  public class TypedValue {
+    ctor public TypedValue();
+    method public static float applyDimension(int, float, android.util.DisplayMetrics);
+    method public final CharSequence coerceToString();
+    method public static final String coerceToString(int, int);
+    method public static float complexToDimension(int, android.util.DisplayMetrics);
+    method public static int complexToDimensionPixelOffset(int, android.util.DisplayMetrics);
+    method public static int complexToDimensionPixelSize(int, android.util.DisplayMetrics);
+    method public static float complexToFloat(int);
+    method public static float complexToFraction(int, float, float);
+    method public int getComplexUnit();
+    method public float getDimension(android.util.DisplayMetrics);
+    method public final float getFloat();
+    method public float getFraction(float, float);
+    method public boolean isColorType();
+    method public void setTo(android.util.TypedValue);
+    field public static final int COMPLEX_MANTISSA_MASK = 16777215; // 0xffffff
+    field public static final int COMPLEX_MANTISSA_SHIFT = 8; // 0x8
+    field public static final int COMPLEX_RADIX_0p23 = 3; // 0x3
+    field public static final int COMPLEX_RADIX_16p7 = 1; // 0x1
+    field public static final int COMPLEX_RADIX_23p0 = 0; // 0x0
+    field public static final int COMPLEX_RADIX_8p15 = 2; // 0x2
+    field public static final int COMPLEX_RADIX_MASK = 3; // 0x3
+    field public static final int COMPLEX_RADIX_SHIFT = 4; // 0x4
+    field public static final int COMPLEX_UNIT_DIP = 1; // 0x1
+    field public static final int COMPLEX_UNIT_FRACTION = 0; // 0x0
+    field public static final int COMPLEX_UNIT_FRACTION_PARENT = 1; // 0x1
+    field public static final int COMPLEX_UNIT_IN = 4; // 0x4
+    field public static final int COMPLEX_UNIT_MASK = 15; // 0xf
+    field public static final int COMPLEX_UNIT_MM = 5; // 0x5
+    field public static final int COMPLEX_UNIT_PT = 3; // 0x3
+    field public static final int COMPLEX_UNIT_PX = 0; // 0x0
+    field public static final int COMPLEX_UNIT_SHIFT = 0; // 0x0
+    field public static final int COMPLEX_UNIT_SP = 2; // 0x2
+    field public static final int DATA_NULL_EMPTY = 1; // 0x1
+    field public static final int DATA_NULL_UNDEFINED = 0; // 0x0
+    field public static final int DENSITY_DEFAULT = 0; // 0x0
+    field public static final int DENSITY_NONE = 65535; // 0xffff
+    field public static final int TYPE_ATTRIBUTE = 2; // 0x2
+    field public static final int TYPE_DIMENSION = 5; // 0x5
+    field public static final int TYPE_FIRST_COLOR_INT = 28; // 0x1c
+    field public static final int TYPE_FIRST_INT = 16; // 0x10
+    field public static final int TYPE_FLOAT = 4; // 0x4
+    field public static final int TYPE_FRACTION = 6; // 0x6
+    field public static final int TYPE_INT_BOOLEAN = 18; // 0x12
+    field public static final int TYPE_INT_COLOR_ARGB4 = 30; // 0x1e
+    field public static final int TYPE_INT_COLOR_ARGB8 = 28; // 0x1c
+    field public static final int TYPE_INT_COLOR_RGB4 = 31; // 0x1f
+    field public static final int TYPE_INT_COLOR_RGB8 = 29; // 0x1d
+    field public static final int TYPE_INT_DEC = 16; // 0x10
+    field public static final int TYPE_INT_HEX = 17; // 0x11
+    field public static final int TYPE_LAST_COLOR_INT = 31; // 0x1f
+    field public static final int TYPE_LAST_INT = 31; // 0x1f
+    field public static final int TYPE_NULL = 0; // 0x0
+    field public static final int TYPE_REFERENCE = 1; // 0x1
+    field public static final int TYPE_STRING = 3; // 0x3
+    field public int assetCookie;
+    field public int changingConfigurations;
+    field public int data;
+    field public int density;
+    field @AnyRes public int resourceId;
+    field public int sourceResourceId;
+    field public CharSequence string;
+    field public int type;
+  }
+
+  public class Xml {
+    method public static android.util.AttributeSet asAttributeSet(org.xmlpull.v1.XmlPullParser);
+    method public static android.util.Xml.Encoding findEncodingByName(String) throws java.io.UnsupportedEncodingException;
+    method public static org.xmlpull.v1.XmlPullParser newPullParser();
+    method public static org.xmlpull.v1.XmlSerializer newSerializer();
+    method public static void parse(String, org.xml.sax.ContentHandler) throws org.xml.sax.SAXException;
+    method public static void parse(java.io.Reader, org.xml.sax.ContentHandler) throws java.io.IOException, org.xml.sax.SAXException;
+    method public static void parse(java.io.InputStream, android.util.Xml.Encoding, org.xml.sax.ContentHandler) throws java.io.IOException, org.xml.sax.SAXException;
+    field public static String FEATURE_RELAXED;
+  }
+
+  public enum Xml.Encoding {
+    enum_constant public static final android.util.Xml.Encoding ISO_8859_1;
+    enum_constant public static final android.util.Xml.Encoding US_ASCII;
+    enum_constant public static final android.util.Xml.Encoding UTF_16;
+    enum_constant public static final android.util.Xml.Encoding UTF_8;
+  }
+
+}
+
+package android.util.proto {
+
+  public final class ProtoOutputStream {
+    ctor public ProtoOutputStream();
+    ctor public ProtoOutputStream(int);
+    ctor public ProtoOutputStream(@NonNull java.io.OutputStream);
+    method public static int checkFieldId(long, long);
+    method public void dump(@NonNull String);
+    method public void end(long);
+    method public void flush();
+    method @NonNull public byte[] getBytes();
+    method @Nullable public static String getFieldCountString(long);
+    method @NonNull public static String getFieldIdString(long);
+    method @Nullable public static String getFieldTypeString(long);
+    method public int getRawSize();
+    method @Nullable public static String getWireTypeString(int);
+    method public static long makeFieldId(int, long);
+    method public static long makeToken(int, boolean, int, int, int);
+    method public long start(long);
+    method @NonNull public static String token2String(long);
+    method public void write(long, double);
+    method public void write(long, float);
+    method public void write(long, int);
+    method public void write(long, long);
+    method public void write(long, boolean);
+    method public void write(long, @Nullable String);
+    method public void write(long, @Nullable byte[]);
+    method public void writeTag(int, int);
+    field public static final long FIELD_COUNT_MASK = 16492674416640L; // 0xf0000000000L
+    field public static final long FIELD_COUNT_PACKED = 5497558138880L; // 0x50000000000L
+    field public static final long FIELD_COUNT_REPEATED = 2199023255552L; // 0x20000000000L
+    field public static final int FIELD_COUNT_SHIFT = 40; // 0x28
+    field public static final long FIELD_COUNT_SINGLE = 1099511627776L; // 0x10000000000L
+    field public static final long FIELD_COUNT_UNKNOWN = 0L; // 0x0L
+    field public static final int FIELD_ID_SHIFT = 3; // 0x3
+    field public static final long FIELD_TYPE_BOOL = 34359738368L; // 0x800000000L
+    field public static final long FIELD_TYPE_BYTES = 51539607552L; // 0xc00000000L
+    field public static final long FIELD_TYPE_DOUBLE = 4294967296L; // 0x100000000L
+    field public static final long FIELD_TYPE_ENUM = 60129542144L; // 0xe00000000L
+    field public static final long FIELD_TYPE_FIXED32 = 30064771072L; // 0x700000000L
+    field public static final long FIELD_TYPE_FIXED64 = 25769803776L; // 0x600000000L
+    field public static final long FIELD_TYPE_FLOAT = 8589934592L; // 0x200000000L
+    field public static final long FIELD_TYPE_INT32 = 21474836480L; // 0x500000000L
+    field public static final long FIELD_TYPE_INT64 = 12884901888L; // 0x300000000L
+    field public static final long FIELD_TYPE_MASK = 1095216660480L; // 0xff00000000L
+    field public static final long FIELD_TYPE_MESSAGE = 47244640256L; // 0xb00000000L
+    field public static final long FIELD_TYPE_SFIXED32 = 64424509440L; // 0xf00000000L
+    field public static final long FIELD_TYPE_SFIXED64 = 68719476736L; // 0x1000000000L
+    field public static final int FIELD_TYPE_SHIFT = 32; // 0x20
+    field public static final long FIELD_TYPE_SINT32 = 73014444032L; // 0x1100000000L
+    field public static final long FIELD_TYPE_SINT64 = 77309411328L; // 0x1200000000L
+    field public static final long FIELD_TYPE_STRING = 38654705664L; // 0x900000000L
+    field public static final long FIELD_TYPE_UINT32 = 55834574848L; // 0xd00000000L
+    field public static final long FIELD_TYPE_UINT64 = 17179869184L; // 0x400000000L
+    field public static final int WIRE_TYPE_END_GROUP = 4; // 0x4
+    field public static final int WIRE_TYPE_FIXED32 = 5; // 0x5
+    field public static final int WIRE_TYPE_FIXED64 = 1; // 0x1
+    field public static final int WIRE_TYPE_LENGTH_DELIMITED = 2; // 0x2
+    field public static final int WIRE_TYPE_MASK = 7; // 0x7
+    field public static final int WIRE_TYPE_START_GROUP = 3; // 0x3
+    field public static final int WIRE_TYPE_VARINT = 0; // 0x0
+  }
+
+}
+
+package android.view {
+
+  public abstract class AbsSavedState implements android.os.Parcelable {
+    ctor protected AbsSavedState(android.os.Parcelable);
+    ctor protected AbsSavedState(android.os.Parcel);
+    ctor protected AbsSavedState(android.os.Parcel, ClassLoader);
+    method public int describeContents();
+    method public final android.os.Parcelable getSuperState();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.AbsSavedState> CREATOR;
+    field public static final android.view.AbsSavedState EMPTY_STATE;
+  }
+
+  public abstract class ActionMode {
+    ctor public ActionMode();
+    method public abstract void finish();
+    method public abstract android.view.View getCustomView();
+    method public abstract android.view.Menu getMenu();
+    method public abstract android.view.MenuInflater getMenuInflater();
+    method public abstract CharSequence getSubtitle();
+    method public Object getTag();
+    method public abstract CharSequence getTitle();
+    method public boolean getTitleOptionalHint();
+    method public int getType();
+    method public void hide(long);
+    method public abstract void invalidate();
+    method public void invalidateContentRect();
+    method public boolean isTitleOptional();
+    method public void onWindowFocusChanged(boolean);
+    method public abstract void setCustomView(android.view.View);
+    method public abstract void setSubtitle(CharSequence);
+    method public abstract void setSubtitle(@StringRes int);
+    method public void setTag(Object);
+    method public abstract void setTitle(CharSequence);
+    method public abstract void setTitle(@StringRes int);
+    method public void setTitleOptionalHint(boolean);
+    method public void setType(int);
+    field public static final int DEFAULT_HIDE_DURATION = -1; // 0xffffffff
+    field public static final int TYPE_FLOATING = 1; // 0x1
+    field public static final int TYPE_PRIMARY = 0; // 0x0
+  }
+
+  public static interface ActionMode.Callback {
+    method public boolean onActionItemClicked(android.view.ActionMode, android.view.MenuItem);
+    method public boolean onCreateActionMode(android.view.ActionMode, android.view.Menu);
+    method public void onDestroyActionMode(android.view.ActionMode);
+    method public boolean onPrepareActionMode(android.view.ActionMode, android.view.Menu);
+  }
+
+  public abstract static class ActionMode.Callback2 implements android.view.ActionMode.Callback {
+    ctor public ActionMode.Callback2();
+    method public void onGetContentRect(android.view.ActionMode, android.view.View, android.graphics.Rect);
+  }
+
+  public abstract class ActionProvider {
+    ctor public ActionProvider(android.content.Context);
+    method public boolean hasSubMenu();
+    method public boolean isVisible();
+    method @Deprecated public abstract android.view.View onCreateActionView();
+    method public android.view.View onCreateActionView(android.view.MenuItem);
+    method public boolean onPerformDefaultAction();
+    method public void onPrepareSubMenu(android.view.SubMenu);
+    method public boolean overridesItemVisibility();
+    method public void refreshVisibility();
+    method public void setVisibilityListener(android.view.ActionProvider.VisibilityListener);
+  }
+
+  public static interface ActionProvider.VisibilityListener {
+    method public void onActionProviderVisibilityChanged(boolean);
+  }
+
+  public final class Choreographer {
+    method public static android.view.Choreographer getInstance();
+    method public void postFrameCallback(android.view.Choreographer.FrameCallback);
+    method public void postFrameCallbackDelayed(android.view.Choreographer.FrameCallback, long);
+    method public void removeFrameCallback(android.view.Choreographer.FrameCallback);
+  }
+
+  public static interface Choreographer.FrameCallback {
+    method public void doFrame(long);
+  }
+
+  public interface CollapsibleActionView {
+    method public void onActionViewCollapsed();
+    method public void onActionViewExpanded();
+  }
+
+  public interface ContextMenu extends android.view.Menu {
+    method public void clearHeader();
+    method public android.view.ContextMenu setHeaderIcon(@DrawableRes int);
+    method public android.view.ContextMenu setHeaderIcon(android.graphics.drawable.Drawable);
+    method public android.view.ContextMenu setHeaderTitle(@StringRes int);
+    method public android.view.ContextMenu setHeaderTitle(CharSequence);
+    method public android.view.ContextMenu setHeaderView(android.view.View);
+  }
+
+  public static interface ContextMenu.ContextMenuInfo {
+  }
+
+  public class ContextThemeWrapper extends android.content.ContextWrapper {
+    ctor public ContextThemeWrapper();
+    ctor public ContextThemeWrapper(android.content.Context, @StyleRes int);
+    ctor public ContextThemeWrapper(android.content.Context, android.content.res.Resources.Theme);
+    method public void applyOverrideConfiguration(android.content.res.Configuration);
+    method protected void onApplyThemeResource(android.content.res.Resources.Theme, int, boolean);
+    method public void setTheme(@Nullable android.content.res.Resources.Theme);
+  }
+
+  public final class Display {
+    method public long getAppVsyncOffsetNanos();
+    method public void getCurrentSizeRange(android.graphics.Point, android.graphics.Point);
+    method @Nullable public android.view.DisplayCutout getCutout();
+    method public int getDisplayId();
+    method public int getFlags();
+    method public android.view.Display.HdrCapabilities getHdrCapabilities();
+    method @Deprecated public int getHeight();
+    method @Deprecated public void getMetrics(android.util.DisplayMetrics);
+    method public android.view.Display.Mode getMode();
+    method public String getName();
+    method @Deprecated public int getOrientation();
+    method @Deprecated public int getPixelFormat();
+    method @Nullable public android.graphics.ColorSpace getPreferredWideGamutColorSpace();
+    method public long getPresentationDeadlineNanos();
+    method public void getRealMetrics(android.util.DisplayMetrics);
+    method public void getRealSize(android.graphics.Point);
+    method @Deprecated public void getRectSize(android.graphics.Rect);
+    method public float getRefreshRate();
+    method public int getRotation();
+    method @Deprecated public void getSize(android.graphics.Point);
+    method public int getState();
+    method public android.view.Display.Mode[] getSupportedModes();
+    method @Deprecated public float[] getSupportedRefreshRates();
+    method @Deprecated public int getWidth();
+    method public boolean isHdr();
+    method public boolean isMinimalPostProcessingSupported();
+    method public boolean isValid();
+    method public boolean isWideColorGamut();
+    field public static final int DEFAULT_DISPLAY = 0; // 0x0
+    field public static final int FLAG_PRESENTATION = 8; // 0x8
+    field public static final int FLAG_PRIVATE = 4; // 0x4
+    field public static final int FLAG_ROUND = 16; // 0x10
+    field public static final int FLAG_SECURE = 2; // 0x2
+    field public static final int FLAG_SUPPORTS_PROTECTED_BUFFERS = 1; // 0x1
+    field public static final int INVALID_DISPLAY = -1; // 0xffffffff
+    field public static final int STATE_DOZE = 3; // 0x3
+    field public static final int STATE_DOZE_SUSPEND = 4; // 0x4
+    field public static final int STATE_OFF = 1; // 0x1
+    field public static final int STATE_ON = 2; // 0x2
+    field public static final int STATE_ON_SUSPEND = 6; // 0x6
+    field public static final int STATE_UNKNOWN = 0; // 0x0
+    field public static final int STATE_VR = 5; // 0x5
+  }
+
+  public static final class Display.HdrCapabilities implements android.os.Parcelable {
+    method public int describeContents();
+    method public float getDesiredMaxAverageLuminance();
+    method public float getDesiredMaxLuminance();
+    method public float getDesiredMinLuminance();
+    method public int[] getSupportedHdrTypes();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.Display.HdrCapabilities> CREATOR;
+    field public static final int HDR_TYPE_DOLBY_VISION = 1; // 0x1
+    field public static final int HDR_TYPE_HDR10 = 2; // 0x2
+    field public static final int HDR_TYPE_HDR10_PLUS = 4; // 0x4
+    field public static final int HDR_TYPE_HLG = 3; // 0x3
+    field public static final float INVALID_LUMINANCE = -1.0f;
+  }
+
+  public static final class Display.Mode implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getModeId();
+    method public int getPhysicalHeight();
+    method public int getPhysicalWidth();
+    method public float getRefreshRate();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.Display.Mode> CREATOR;
+  }
+
+  public final class DisplayCutout {
+    ctor public DisplayCutout(@NonNull android.graphics.Insets, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect);
+    ctor public DisplayCutout(@NonNull android.graphics.Insets, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect, @NonNull android.graphics.Insets);
+    ctor @Deprecated public DisplayCutout(@Nullable android.graphics.Rect, @Nullable java.util.List<android.graphics.Rect>);
+    method @NonNull public android.graphics.Rect getBoundingRectBottom();
+    method @NonNull public android.graphics.Rect getBoundingRectLeft();
+    method @NonNull public android.graphics.Rect getBoundingRectRight();
+    method @NonNull public android.graphics.Rect getBoundingRectTop();
+    method @NonNull public java.util.List<android.graphics.Rect> getBoundingRects();
+    method public int getSafeInsetBottom();
+    method public int getSafeInsetLeft();
+    method public int getSafeInsetRight();
+    method public int getSafeInsetTop();
+    method @NonNull public android.graphics.Insets getWaterfallInsets();
+  }
+
+  public final class DragAndDropPermissions implements android.os.Parcelable {
+    method public int describeContents();
+    method public void release();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.DragAndDropPermissions> CREATOR;
+  }
+
+  public class DragEvent implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getAction();
+    method public android.content.ClipData getClipData();
+    method public android.content.ClipDescription getClipDescription();
+    method public Object getLocalState();
+    method public boolean getResult();
+    method public float getX();
+    method public float getY();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int ACTION_DRAG_ENDED = 4; // 0x4
+    field public static final int ACTION_DRAG_ENTERED = 5; // 0x5
+    field public static final int ACTION_DRAG_EXITED = 6; // 0x6
+    field public static final int ACTION_DRAG_LOCATION = 2; // 0x2
+    field public static final int ACTION_DRAG_STARTED = 1; // 0x1
+    field public static final int ACTION_DROP = 3; // 0x3
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.DragEvent> CREATOR;
+  }
+
+  public class FocusFinder {
+    method public android.view.View findNearestTouchable(android.view.ViewGroup, int, int, int, int[]);
+    method public final android.view.View findNextFocus(android.view.ViewGroup, android.view.View, int);
+    method public android.view.View findNextFocusFromRect(android.view.ViewGroup, android.graphics.Rect, int);
+    method public android.view.View findNextKeyboardNavigationCluster(@NonNull android.view.View, @Nullable android.view.View, int);
+    method public static android.view.FocusFinder getInstance();
+  }
+
+  public final class FrameMetrics {
+    ctor public FrameMetrics(android.view.FrameMetrics);
+    method public long getMetric(int);
+    field public static final int ANIMATION_DURATION = 2; // 0x2
+    field public static final int COMMAND_ISSUE_DURATION = 6; // 0x6
+    field public static final int DRAW_DURATION = 4; // 0x4
+    field public static final int FIRST_DRAW_FRAME = 9; // 0x9
+    field public static final int INPUT_HANDLING_DURATION = 1; // 0x1
+    field public static final int INTENDED_VSYNC_TIMESTAMP = 10; // 0xa
+    field public static final int LAYOUT_MEASURE_DURATION = 3; // 0x3
+    field public static final int SWAP_BUFFERS_DURATION = 7; // 0x7
+    field public static final int SYNC_DURATION = 5; // 0x5
+    field public static final int TOTAL_DURATION = 8; // 0x8
+    field public static final int UNKNOWN_DELAY_DURATION = 0; // 0x0
+    field public static final int VSYNC_TIMESTAMP = 11; // 0xb
+  }
+
+  public abstract class FrameStats {
+    ctor public FrameStats();
+    method public final long getEndTimeNano();
+    method public final int getFrameCount();
+    method public final long getFramePresentedTimeNano(int);
+    method public final long getRefreshPeriodNano();
+    method public final long getStartTimeNano();
+    field public static final long UNDEFINED_TIME_NANO = -1L; // 0xffffffffffffffffL
+  }
+
+  public class GestureDetector {
+    ctor @Deprecated public GestureDetector(android.view.GestureDetector.OnGestureListener, android.os.Handler);
+    ctor @Deprecated public GestureDetector(android.view.GestureDetector.OnGestureListener);
+    ctor public GestureDetector(android.content.Context, android.view.GestureDetector.OnGestureListener);
+    ctor public GestureDetector(android.content.Context, android.view.GestureDetector.OnGestureListener, android.os.Handler);
+    ctor public GestureDetector(android.content.Context, android.view.GestureDetector.OnGestureListener, android.os.Handler, boolean);
+    method public boolean isLongpressEnabled();
+    method public boolean onGenericMotionEvent(android.view.MotionEvent);
+    method public boolean onTouchEvent(android.view.MotionEvent);
+    method public void setContextClickListener(android.view.GestureDetector.OnContextClickListener);
+    method public void setIsLongpressEnabled(boolean);
+    method public void setOnDoubleTapListener(android.view.GestureDetector.OnDoubleTapListener);
+  }
+
+  public static interface GestureDetector.OnContextClickListener {
+    method public boolean onContextClick(android.view.MotionEvent);
+  }
+
+  public static interface GestureDetector.OnDoubleTapListener {
+    method public boolean onDoubleTap(android.view.MotionEvent);
+    method public boolean onDoubleTapEvent(android.view.MotionEvent);
+    method public boolean onSingleTapConfirmed(android.view.MotionEvent);
+  }
+
+  public static interface GestureDetector.OnGestureListener {
+    method public boolean onDown(android.view.MotionEvent);
+    method public boolean onFling(android.view.MotionEvent, android.view.MotionEvent, float, float);
+    method public void onLongPress(android.view.MotionEvent);
+    method public boolean onScroll(android.view.MotionEvent, android.view.MotionEvent, float, float);
+    method public void onShowPress(android.view.MotionEvent);
+    method public boolean onSingleTapUp(android.view.MotionEvent);
+  }
+
+  public static class GestureDetector.SimpleOnGestureListener implements android.view.GestureDetector.OnContextClickListener android.view.GestureDetector.OnDoubleTapListener android.view.GestureDetector.OnGestureListener {
+    ctor public GestureDetector.SimpleOnGestureListener();
+    method public boolean onContextClick(android.view.MotionEvent);
+    method public boolean onDoubleTap(android.view.MotionEvent);
+    method public boolean onDoubleTapEvent(android.view.MotionEvent);
+    method public boolean onDown(android.view.MotionEvent);
+    method public boolean onFling(android.view.MotionEvent, android.view.MotionEvent, float, float);
+    method public void onLongPress(android.view.MotionEvent);
+    method public boolean onScroll(android.view.MotionEvent, android.view.MotionEvent, float, float);
+    method public void onShowPress(android.view.MotionEvent);
+    method public boolean onSingleTapConfirmed(android.view.MotionEvent);
+    method public boolean onSingleTapUp(android.view.MotionEvent);
+  }
+
+  public class Gravity {
+    ctor public Gravity();
+    method public static void apply(int, int, int, android.graphics.Rect, android.graphics.Rect);
+    method public static void apply(int, int, int, android.graphics.Rect, android.graphics.Rect, int);
+    method public static void apply(int, int, int, android.graphics.Rect, int, int, android.graphics.Rect);
+    method public static void apply(int, int, int, android.graphics.Rect, int, int, android.graphics.Rect, int);
+    method public static void applyDisplay(int, android.graphics.Rect, android.graphics.Rect);
+    method public static void applyDisplay(int, android.graphics.Rect, android.graphics.Rect, int);
+    method public static int getAbsoluteGravity(int, int);
+    method public static boolean isHorizontal(int);
+    method public static boolean isVertical(int);
+    field public static final int AXIS_CLIP = 8; // 0x8
+    field public static final int AXIS_PULL_AFTER = 4; // 0x4
+    field public static final int AXIS_PULL_BEFORE = 2; // 0x2
+    field public static final int AXIS_SPECIFIED = 1; // 0x1
+    field public static final int AXIS_X_SHIFT = 0; // 0x0
+    field public static final int AXIS_Y_SHIFT = 4; // 0x4
+    field public static final int BOTTOM = 80; // 0x50
+    field public static final int CENTER = 17; // 0x11
+    field public static final int CENTER_HORIZONTAL = 1; // 0x1
+    field public static final int CENTER_VERTICAL = 16; // 0x10
+    field public static final int CLIP_HORIZONTAL = 8; // 0x8
+    field public static final int CLIP_VERTICAL = 128; // 0x80
+    field public static final int DISPLAY_CLIP_HORIZONTAL = 16777216; // 0x1000000
+    field public static final int DISPLAY_CLIP_VERTICAL = 268435456; // 0x10000000
+    field public static final int END = 8388613; // 0x800005
+    field public static final int FILL = 119; // 0x77
+    field public static final int FILL_HORIZONTAL = 7; // 0x7
+    field public static final int FILL_VERTICAL = 112; // 0x70
+    field public static final int HORIZONTAL_GRAVITY_MASK = 7; // 0x7
+    field public static final int LEFT = 3; // 0x3
+    field public static final int NO_GRAVITY = 0; // 0x0
+    field public static final int RELATIVE_HORIZONTAL_GRAVITY_MASK = 8388615; // 0x800007
+    field public static final int RELATIVE_LAYOUT_DIRECTION = 8388608; // 0x800000
+    field public static final int RIGHT = 5; // 0x5
+    field public static final int START = 8388611; // 0x800003
+    field public static final int TOP = 48; // 0x30
+    field public static final int VERTICAL_GRAVITY_MASK = 112; // 0x70
+  }
+
+  public class HapticFeedbackConstants {
+    field public static final int CLOCK_TICK = 4; // 0x4
+    field public static final int CONFIRM = 16; // 0x10
+    field public static final int CONTEXT_CLICK = 6; // 0x6
+    field public static final int FLAG_IGNORE_GLOBAL_SETTING = 2; // 0x2
+    field public static final int FLAG_IGNORE_VIEW_SETTING = 1; // 0x1
+    field public static final int GESTURE_END = 13; // 0xd
+    field public static final int GESTURE_START = 12; // 0xc
+    field public static final int KEYBOARD_PRESS = 3; // 0x3
+    field public static final int KEYBOARD_RELEASE = 7; // 0x7
+    field public static final int KEYBOARD_TAP = 3; // 0x3
+    field public static final int LONG_PRESS = 0; // 0x0
+    field public static final int REJECT = 17; // 0x11
+    field public static final int TEXT_HANDLE_MOVE = 9; // 0x9
+    field public static final int VIRTUAL_KEY = 1; // 0x1
+    field public static final int VIRTUAL_KEY_RELEASE = 8; // 0x8
+  }
+
+  public class InflateException extends java.lang.RuntimeException {
+    ctor public InflateException();
+    ctor public InflateException(String, Throwable);
+    ctor public InflateException(String);
+    ctor public InflateException(Throwable);
+  }
+
+  public final class InputDevice implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getControllerNumber();
+    method public String getDescriptor();
+    method public static android.view.InputDevice getDevice(int);
+    method public static int[] getDeviceIds();
+    method public int getId();
+    method public android.view.KeyCharacterMap getKeyCharacterMap();
+    method public int getKeyboardType();
+    method public android.view.InputDevice.MotionRange getMotionRange(int);
+    method public android.view.InputDevice.MotionRange getMotionRange(int, int);
+    method public java.util.List<android.view.InputDevice.MotionRange> getMotionRanges();
+    method public String getName();
+    method public int getProductId();
+    method public int getSources();
+    method public int getVendorId();
+    method public android.os.Vibrator getVibrator();
+    method public boolean[] hasKeys(int...);
+    method public boolean hasMicrophone();
+    method public boolean isEnabled();
+    method public boolean isExternal();
+    method public boolean isVirtual();
+    method public boolean supportsSource(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.InputDevice> CREATOR;
+    field public static final int KEYBOARD_TYPE_ALPHABETIC = 2; // 0x2
+    field public static final int KEYBOARD_TYPE_NONE = 0; // 0x0
+    field public static final int KEYBOARD_TYPE_NON_ALPHABETIC = 1; // 0x1
+    field @Deprecated public static final int MOTION_RANGE_ORIENTATION = 8; // 0x8
+    field @Deprecated public static final int MOTION_RANGE_PRESSURE = 2; // 0x2
+    field @Deprecated public static final int MOTION_RANGE_SIZE = 3; // 0x3
+    field @Deprecated public static final int MOTION_RANGE_TOOL_MAJOR = 6; // 0x6
+    field @Deprecated public static final int MOTION_RANGE_TOOL_MINOR = 7; // 0x7
+    field @Deprecated public static final int MOTION_RANGE_TOUCH_MAJOR = 4; // 0x4
+    field @Deprecated public static final int MOTION_RANGE_TOUCH_MINOR = 5; // 0x5
+    field @Deprecated public static final int MOTION_RANGE_X = 0; // 0x0
+    field @Deprecated public static final int MOTION_RANGE_Y = 1; // 0x1
+    field public static final int SOURCE_ANY = -256; // 0xffffff00
+    field public static final int SOURCE_BLUETOOTH_STYLUS = 49154; // 0xc002
+    field public static final int SOURCE_CLASS_BUTTON = 1; // 0x1
+    field public static final int SOURCE_CLASS_JOYSTICK = 16; // 0x10
+    field public static final int SOURCE_CLASS_MASK = 255; // 0xff
+    field public static final int SOURCE_CLASS_NONE = 0; // 0x0
+    field public static final int SOURCE_CLASS_POINTER = 2; // 0x2
+    field public static final int SOURCE_CLASS_POSITION = 8; // 0x8
+    field public static final int SOURCE_CLASS_TRACKBALL = 4; // 0x4
+    field public static final int SOURCE_DPAD = 513; // 0x201
+    field public static final int SOURCE_GAMEPAD = 1025; // 0x401
+    field public static final int SOURCE_HDMI = 33554433; // 0x2000001
+    field public static final int SOURCE_JOYSTICK = 16777232; // 0x1000010
+    field public static final int SOURCE_KEYBOARD = 257; // 0x101
+    field public static final int SOURCE_MOUSE = 8194; // 0x2002
+    field public static final int SOURCE_MOUSE_RELATIVE = 131076; // 0x20004
+    field public static final int SOURCE_ROTARY_ENCODER = 4194304; // 0x400000
+    field public static final int SOURCE_STYLUS = 16386; // 0x4002
+    field public static final int SOURCE_TOUCHPAD = 1048584; // 0x100008
+    field public static final int SOURCE_TOUCHSCREEN = 4098; // 0x1002
+    field public static final int SOURCE_TOUCH_NAVIGATION = 2097152; // 0x200000
+    field public static final int SOURCE_TRACKBALL = 65540; // 0x10004
+    field public static final int SOURCE_UNKNOWN = 0; // 0x0
+  }
+
+  public static final class InputDevice.MotionRange {
+    method public int getAxis();
+    method public float getFlat();
+    method public float getFuzz();
+    method public float getMax();
+    method public float getMin();
+    method public float getRange();
+    method public float getResolution();
+    method public int getSource();
+    method public boolean isFromSource(int);
+  }
+
+  public abstract class InputEvent implements android.os.Parcelable {
+    method public int describeContents();
+    method public final android.view.InputDevice getDevice();
+    method public abstract int getDeviceId();
+    method public abstract long getEventTime();
+    method public abstract int getSource();
+    method public boolean isFromSource(int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.InputEvent> CREATOR;
+  }
+
+  public final class InputQueue {
+  }
+
+  public static interface InputQueue.Callback {
+    method public void onInputQueueCreated(android.view.InputQueue);
+    method public void onInputQueueDestroyed(android.view.InputQueue);
+  }
+
+  public class KeyCharacterMap implements android.os.Parcelable {
+    method public int describeContents();
+    method public static boolean deviceHasKey(int);
+    method public static boolean[] deviceHasKeys(int[]);
+    method public int get(int, int);
+    method public static int getDeadChar(int, int);
+    method public char getDisplayLabel(int);
+    method public android.view.KeyEvent[] getEvents(char[]);
+    method @Deprecated public boolean getKeyData(int, android.view.KeyCharacterMap.KeyData);
+    method public int getKeyboardType();
+    method public char getMatch(int, char[]);
+    method public char getMatch(int, char[], int);
+    method public int getModifierBehavior();
+    method public char getNumber(int);
+    method public boolean isPrintingKey(int);
+    method public static android.view.KeyCharacterMap load(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int ALPHA = 3; // 0x3
+    field @Deprecated public static final int BUILT_IN_KEYBOARD = 0; // 0x0
+    field public static final int COMBINING_ACCENT = -2147483648; // 0x80000000
+    field public static final int COMBINING_ACCENT_MASK = 2147483647; // 0x7fffffff
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.KeyCharacterMap> CREATOR;
+    field public static final int FULL = 4; // 0x4
+    field public static final char HEX_INPUT = 61184; // 0xef00 '\uef00'
+    field public static final int MODIFIER_BEHAVIOR_CHORDED = 0; // 0x0
+    field public static final int MODIFIER_BEHAVIOR_CHORDED_OR_TOGGLED = 1; // 0x1
+    field public static final int NUMERIC = 1; // 0x1
+    field public static final char PICKER_DIALOG_INPUT = 61185; // 0xef01 '\uef01'
+    field public static final int PREDICTIVE = 2; // 0x2
+    field public static final int SPECIAL_FUNCTION = 5; // 0x5
+    field public static final int VIRTUAL_KEYBOARD = -1; // 0xffffffff
+  }
+
+  @Deprecated public static class KeyCharacterMap.KeyData {
+    ctor @Deprecated public KeyCharacterMap.KeyData();
+    field @Deprecated public static final int META_LENGTH = 4; // 0x4
+    field @Deprecated public char displayLabel;
+    field @Deprecated public char[] meta;
+    field @Deprecated public char number;
+  }
+
+  public static class KeyCharacterMap.UnavailableException extends android.util.AndroidRuntimeException {
+    ctor public KeyCharacterMap.UnavailableException(String);
+  }
+
+  public class KeyEvent extends android.view.InputEvent implements android.os.Parcelable {
+    ctor public KeyEvent(int, int);
+    ctor public KeyEvent(long, long, int, int, int);
+    ctor public KeyEvent(long, long, int, int, int, int);
+    ctor public KeyEvent(long, long, int, int, int, int, int, int);
+    ctor public KeyEvent(long, long, int, int, int, int, int, int, int);
+    ctor public KeyEvent(long, long, int, int, int, int, int, int, int, int);
+    ctor public KeyEvent(long, String, int, int);
+    ctor public KeyEvent(android.view.KeyEvent);
+    ctor @Deprecated public KeyEvent(android.view.KeyEvent, long, int);
+    method public static android.view.KeyEvent changeAction(android.view.KeyEvent, int);
+    method public static android.view.KeyEvent changeFlags(android.view.KeyEvent, int);
+    method public static android.view.KeyEvent changeTimeRepeat(android.view.KeyEvent, long, int);
+    method public static android.view.KeyEvent changeTimeRepeat(android.view.KeyEvent, long, int, int);
+    method @Deprecated public final boolean dispatch(android.view.KeyEvent.Callback);
+    method public final boolean dispatch(android.view.KeyEvent.Callback, android.view.KeyEvent.DispatcherState, Object);
+    method public final int getAction();
+    method @Deprecated public final String getCharacters();
+    method public static int getDeadChar(int, int);
+    method public final int getDeviceId();
+    method public char getDisplayLabel();
+    method public final long getDownTime();
+    method public final long getEventTime();
+    method public final int getFlags();
+    method public final android.view.KeyCharacterMap getKeyCharacterMap();
+    method public final int getKeyCode();
+    method @Deprecated public boolean getKeyData(android.view.KeyCharacterMap.KeyData);
+    method public char getMatch(char[]);
+    method public char getMatch(char[], int);
+    method public static int getMaxKeyCode();
+    method public final int getMetaState();
+    method public static int getModifierMetaStateMask();
+    method public final int getModifiers();
+    method public char getNumber();
+    method public final int getRepeatCount();
+    method public final int getScanCode();
+    method public final int getSource();
+    method public int getUnicodeChar();
+    method public int getUnicodeChar(int);
+    method public final boolean hasModifiers(int);
+    method public final boolean hasNoModifiers();
+    method public final boolean isAltPressed();
+    method public final boolean isCanceled();
+    method public final boolean isCapsLockOn();
+    method public final boolean isCtrlPressed();
+    method public final boolean isFunctionPressed();
+    method public static final boolean isGamepadButton(int);
+    method public final boolean isLongPress();
+    method public final boolean isMetaPressed();
+    method public static boolean isModifierKey(int);
+    method public final boolean isNumLockOn();
+    method public boolean isPrintingKey();
+    method public final boolean isScrollLockOn();
+    method public final boolean isShiftPressed();
+    method public final boolean isSymPressed();
+    method public final boolean isSystem();
+    method public final boolean isTracking();
+    method public static int keyCodeFromString(@NonNull String);
+    method public static String keyCodeToString(int);
+    method public static boolean metaStateHasModifiers(int, int);
+    method public static boolean metaStateHasNoModifiers(int);
+    method public static int normalizeMetaState(int);
+    method public final void setSource(int);
+    method public final void startTracking();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int ACTION_DOWN = 0; // 0x0
+    field @Deprecated public static final int ACTION_MULTIPLE = 2; // 0x2
+    field public static final int ACTION_UP = 1; // 0x1
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.KeyEvent> CREATOR;
+    field public static final int FLAG_CANCELED = 32; // 0x20
+    field public static final int FLAG_CANCELED_LONG_PRESS = 256; // 0x100
+    field public static final int FLAG_EDITOR_ACTION = 16; // 0x10
+    field public static final int FLAG_FALLBACK = 1024; // 0x400
+    field public static final int FLAG_FROM_SYSTEM = 8; // 0x8
+    field public static final int FLAG_KEEP_TOUCH_MODE = 4; // 0x4
+    field public static final int FLAG_LONG_PRESS = 128; // 0x80
+    field public static final int FLAG_SOFT_KEYBOARD = 2; // 0x2
+    field public static final int FLAG_TRACKING = 512; // 0x200
+    field public static final int FLAG_VIRTUAL_HARD_KEY = 64; // 0x40
+    field @Deprecated public static final int FLAG_WOKE_HERE = 1; // 0x1
+    field public static final int KEYCODE_0 = 7; // 0x7
+    field public static final int KEYCODE_1 = 8; // 0x8
+    field public static final int KEYCODE_11 = 227; // 0xe3
+    field public static final int KEYCODE_12 = 228; // 0xe4
+    field public static final int KEYCODE_2 = 9; // 0x9
+    field public static final int KEYCODE_3 = 10; // 0xa
+    field public static final int KEYCODE_3D_MODE = 206; // 0xce
+    field public static final int KEYCODE_4 = 11; // 0xb
+    field public static final int KEYCODE_5 = 12; // 0xc
+    field public static final int KEYCODE_6 = 13; // 0xd
+    field public static final int KEYCODE_7 = 14; // 0xe
+    field public static final int KEYCODE_8 = 15; // 0xf
+    field public static final int KEYCODE_9 = 16; // 0x10
+    field public static final int KEYCODE_A = 29; // 0x1d
+    field public static final int KEYCODE_ALL_APPS = 284; // 0x11c
+    field public static final int KEYCODE_ALT_LEFT = 57; // 0x39
+    field public static final int KEYCODE_ALT_RIGHT = 58; // 0x3a
+    field public static final int KEYCODE_APOSTROPHE = 75; // 0x4b
+    field public static final int KEYCODE_APP_SWITCH = 187; // 0xbb
+    field public static final int KEYCODE_ASSIST = 219; // 0xdb
+    field public static final int KEYCODE_AT = 77; // 0x4d
+    field public static final int KEYCODE_AVR_INPUT = 182; // 0xb6
+    field public static final int KEYCODE_AVR_POWER = 181; // 0xb5
+    field public static final int KEYCODE_B = 30; // 0x1e
+    field public static final int KEYCODE_BACK = 4; // 0x4
+    field public static final int KEYCODE_BACKSLASH = 73; // 0x49
+    field public static final int KEYCODE_BOOKMARK = 174; // 0xae
+    field public static final int KEYCODE_BREAK = 121; // 0x79
+    field public static final int KEYCODE_BRIGHTNESS_DOWN = 220; // 0xdc
+    field public static final int KEYCODE_BRIGHTNESS_UP = 221; // 0xdd
+    field public static final int KEYCODE_BUTTON_1 = 188; // 0xbc
+    field public static final int KEYCODE_BUTTON_10 = 197; // 0xc5
+    field public static final int KEYCODE_BUTTON_11 = 198; // 0xc6
+    field public static final int KEYCODE_BUTTON_12 = 199; // 0xc7
+    field public static final int KEYCODE_BUTTON_13 = 200; // 0xc8
+    field public static final int KEYCODE_BUTTON_14 = 201; // 0xc9
+    field public static final int KEYCODE_BUTTON_15 = 202; // 0xca
+    field public static final int KEYCODE_BUTTON_16 = 203; // 0xcb
+    field public static final int KEYCODE_BUTTON_2 = 189; // 0xbd
+    field public static final int KEYCODE_BUTTON_3 = 190; // 0xbe
+    field public static final int KEYCODE_BUTTON_4 = 191; // 0xbf
+    field public static final int KEYCODE_BUTTON_5 = 192; // 0xc0
+    field public static final int KEYCODE_BUTTON_6 = 193; // 0xc1
+    field public static final int KEYCODE_BUTTON_7 = 194; // 0xc2
+    field public static final int KEYCODE_BUTTON_8 = 195; // 0xc3
+    field public static final int KEYCODE_BUTTON_9 = 196; // 0xc4
+    field public static final int KEYCODE_BUTTON_A = 96; // 0x60
+    field public static final int KEYCODE_BUTTON_B = 97; // 0x61
+    field public static final int KEYCODE_BUTTON_C = 98; // 0x62
+    field public static final int KEYCODE_BUTTON_L1 = 102; // 0x66
+    field public static final int KEYCODE_BUTTON_L2 = 104; // 0x68
+    field public static final int KEYCODE_BUTTON_MODE = 110; // 0x6e
+    field public static final int KEYCODE_BUTTON_R1 = 103; // 0x67
+    field public static final int KEYCODE_BUTTON_R2 = 105; // 0x69
+    field public static final int KEYCODE_BUTTON_SELECT = 109; // 0x6d
+    field public static final int KEYCODE_BUTTON_START = 108; // 0x6c
+    field public static final int KEYCODE_BUTTON_THUMBL = 106; // 0x6a
+    field public static final int KEYCODE_BUTTON_THUMBR = 107; // 0x6b
+    field public static final int KEYCODE_BUTTON_X = 99; // 0x63
+    field public static final int KEYCODE_BUTTON_Y = 100; // 0x64
+    field public static final int KEYCODE_BUTTON_Z = 101; // 0x65
+    field public static final int KEYCODE_C = 31; // 0x1f
+    field public static final int KEYCODE_CALCULATOR = 210; // 0xd2
+    field public static final int KEYCODE_CALENDAR = 208; // 0xd0
+    field public static final int KEYCODE_CALL = 5; // 0x5
+    field public static final int KEYCODE_CAMERA = 27; // 0x1b
+    field public static final int KEYCODE_CAPS_LOCK = 115; // 0x73
+    field public static final int KEYCODE_CAPTIONS = 175; // 0xaf
+    field public static final int KEYCODE_CHANNEL_DOWN = 167; // 0xa7
+    field public static final int KEYCODE_CHANNEL_UP = 166; // 0xa6
+    field public static final int KEYCODE_CLEAR = 28; // 0x1c
+    field public static final int KEYCODE_COMMA = 55; // 0x37
+    field public static final int KEYCODE_CONTACTS = 207; // 0xcf
+    field public static final int KEYCODE_COPY = 278; // 0x116
+    field public static final int KEYCODE_CTRL_LEFT = 113; // 0x71
+    field public static final int KEYCODE_CTRL_RIGHT = 114; // 0x72
+    field public static final int KEYCODE_CUT = 277; // 0x115
+    field public static final int KEYCODE_D = 32; // 0x20
+    field public static final int KEYCODE_DEL = 67; // 0x43
+    field public static final int KEYCODE_DPAD_CENTER = 23; // 0x17
+    field public static final int KEYCODE_DPAD_DOWN = 20; // 0x14
+    field public static final int KEYCODE_DPAD_DOWN_LEFT = 269; // 0x10d
+    field public static final int KEYCODE_DPAD_DOWN_RIGHT = 271; // 0x10f
+    field public static final int KEYCODE_DPAD_LEFT = 21; // 0x15
+    field public static final int KEYCODE_DPAD_RIGHT = 22; // 0x16
+    field public static final int KEYCODE_DPAD_UP = 19; // 0x13
+    field public static final int KEYCODE_DPAD_UP_LEFT = 268; // 0x10c
+    field public static final int KEYCODE_DPAD_UP_RIGHT = 270; // 0x10e
+    field public static final int KEYCODE_DVR = 173; // 0xad
+    field public static final int KEYCODE_E = 33; // 0x21
+    field public static final int KEYCODE_EISU = 212; // 0xd4
+    field public static final int KEYCODE_ENDCALL = 6; // 0x6
+    field public static final int KEYCODE_ENTER = 66; // 0x42
+    field public static final int KEYCODE_ENVELOPE = 65; // 0x41
+    field public static final int KEYCODE_EQUALS = 70; // 0x46
+    field public static final int KEYCODE_ESCAPE = 111; // 0x6f
+    field public static final int KEYCODE_EXPLORER = 64; // 0x40
+    field public static final int KEYCODE_F = 34; // 0x22
+    field public static final int KEYCODE_F1 = 131; // 0x83
+    field public static final int KEYCODE_F10 = 140; // 0x8c
+    field public static final int KEYCODE_F11 = 141; // 0x8d
+    field public static final int KEYCODE_F12 = 142; // 0x8e
+    field public static final int KEYCODE_F2 = 132; // 0x84
+    field public static final int KEYCODE_F3 = 133; // 0x85
+    field public static final int KEYCODE_F4 = 134; // 0x86
+    field public static final int KEYCODE_F5 = 135; // 0x87
+    field public static final int KEYCODE_F6 = 136; // 0x88
+    field public static final int KEYCODE_F7 = 137; // 0x89
+    field public static final int KEYCODE_F8 = 138; // 0x8a
+    field public static final int KEYCODE_F9 = 139; // 0x8b
+    field public static final int KEYCODE_FOCUS = 80; // 0x50
+    field public static final int KEYCODE_FORWARD = 125; // 0x7d
+    field public static final int KEYCODE_FORWARD_DEL = 112; // 0x70
+    field public static final int KEYCODE_FUNCTION = 119; // 0x77
+    field public static final int KEYCODE_G = 35; // 0x23
+    field public static final int KEYCODE_GRAVE = 68; // 0x44
+    field public static final int KEYCODE_GUIDE = 172; // 0xac
+    field public static final int KEYCODE_H = 36; // 0x24
+    field public static final int KEYCODE_HEADSETHOOK = 79; // 0x4f
+    field public static final int KEYCODE_HELP = 259; // 0x103
+    field public static final int KEYCODE_HENKAN = 214; // 0xd6
+    field public static final int KEYCODE_HOME = 3; // 0x3
+    field public static final int KEYCODE_I = 37; // 0x25
+    field public static final int KEYCODE_INFO = 165; // 0xa5
+    field public static final int KEYCODE_INSERT = 124; // 0x7c
+    field public static final int KEYCODE_J = 38; // 0x26
+    field public static final int KEYCODE_K = 39; // 0x27
+    field public static final int KEYCODE_KANA = 218; // 0xda
+    field public static final int KEYCODE_KATAKANA_HIRAGANA = 215; // 0xd7
+    field public static final int KEYCODE_L = 40; // 0x28
+    field public static final int KEYCODE_LANGUAGE_SWITCH = 204; // 0xcc
+    field public static final int KEYCODE_LAST_CHANNEL = 229; // 0xe5
+    field public static final int KEYCODE_LEFT_BRACKET = 71; // 0x47
+    field public static final int KEYCODE_M = 41; // 0x29
+    field public static final int KEYCODE_MANNER_MODE = 205; // 0xcd
+    field public static final int KEYCODE_MEDIA_AUDIO_TRACK = 222; // 0xde
+    field public static final int KEYCODE_MEDIA_CLOSE = 128; // 0x80
+    field public static final int KEYCODE_MEDIA_EJECT = 129; // 0x81
+    field public static final int KEYCODE_MEDIA_FAST_FORWARD = 90; // 0x5a
+    field public static final int KEYCODE_MEDIA_NEXT = 87; // 0x57
+    field public static final int KEYCODE_MEDIA_PAUSE = 127; // 0x7f
+    field public static final int KEYCODE_MEDIA_PLAY = 126; // 0x7e
+    field public static final int KEYCODE_MEDIA_PLAY_PAUSE = 85; // 0x55
+    field public static final int KEYCODE_MEDIA_PREVIOUS = 88; // 0x58
+    field public static final int KEYCODE_MEDIA_RECORD = 130; // 0x82
+    field public static final int KEYCODE_MEDIA_REWIND = 89; // 0x59
+    field public static final int KEYCODE_MEDIA_SKIP_BACKWARD = 273; // 0x111
+    field public static final int KEYCODE_MEDIA_SKIP_FORWARD = 272; // 0x110
+    field public static final int KEYCODE_MEDIA_STEP_BACKWARD = 275; // 0x113
+    field public static final int KEYCODE_MEDIA_STEP_FORWARD = 274; // 0x112
+    field public static final int KEYCODE_MEDIA_STOP = 86; // 0x56
+    field public static final int KEYCODE_MEDIA_TOP_MENU = 226; // 0xe2
+    field public static final int KEYCODE_MENU = 82; // 0x52
+    field public static final int KEYCODE_META_LEFT = 117; // 0x75
+    field public static final int KEYCODE_META_RIGHT = 118; // 0x76
+    field public static final int KEYCODE_MINUS = 69; // 0x45
+    field public static final int KEYCODE_MOVE_END = 123; // 0x7b
+    field public static final int KEYCODE_MOVE_HOME = 122; // 0x7a
+    field public static final int KEYCODE_MUHENKAN = 213; // 0xd5
+    field public static final int KEYCODE_MUSIC = 209; // 0xd1
+    field public static final int KEYCODE_MUTE = 91; // 0x5b
+    field public static final int KEYCODE_N = 42; // 0x2a
+    field public static final int KEYCODE_NAVIGATE_IN = 262; // 0x106
+    field public static final int KEYCODE_NAVIGATE_NEXT = 261; // 0x105
+    field public static final int KEYCODE_NAVIGATE_OUT = 263; // 0x107
+    field public static final int KEYCODE_NAVIGATE_PREVIOUS = 260; // 0x104
+    field public static final int KEYCODE_NOTIFICATION = 83; // 0x53
+    field public static final int KEYCODE_NUM = 78; // 0x4e
+    field public static final int KEYCODE_NUMPAD_0 = 144; // 0x90
+    field public static final int KEYCODE_NUMPAD_1 = 145; // 0x91
+    field public static final int KEYCODE_NUMPAD_2 = 146; // 0x92
+    field public static final int KEYCODE_NUMPAD_3 = 147; // 0x93
+    field public static final int KEYCODE_NUMPAD_4 = 148; // 0x94
+    field public static final int KEYCODE_NUMPAD_5 = 149; // 0x95
+    field public static final int KEYCODE_NUMPAD_6 = 150; // 0x96
+    field public static final int KEYCODE_NUMPAD_7 = 151; // 0x97
+    field public static final int KEYCODE_NUMPAD_8 = 152; // 0x98
+    field public static final int KEYCODE_NUMPAD_9 = 153; // 0x99
+    field public static final int KEYCODE_NUMPAD_ADD = 157; // 0x9d
+    field public static final int KEYCODE_NUMPAD_COMMA = 159; // 0x9f
+    field public static final int KEYCODE_NUMPAD_DIVIDE = 154; // 0x9a
+    field public static final int KEYCODE_NUMPAD_DOT = 158; // 0x9e
+    field public static final int KEYCODE_NUMPAD_ENTER = 160; // 0xa0
+    field public static final int KEYCODE_NUMPAD_EQUALS = 161; // 0xa1
+    field public static final int KEYCODE_NUMPAD_LEFT_PAREN = 162; // 0xa2
+    field public static final int KEYCODE_NUMPAD_MULTIPLY = 155; // 0x9b
+    field public static final int KEYCODE_NUMPAD_RIGHT_PAREN = 163; // 0xa3
+    field public static final int KEYCODE_NUMPAD_SUBTRACT = 156; // 0x9c
+    field public static final int KEYCODE_NUM_LOCK = 143; // 0x8f
+    field public static final int KEYCODE_O = 43; // 0x2b
+    field public static final int KEYCODE_P = 44; // 0x2c
+    field public static final int KEYCODE_PAGE_DOWN = 93; // 0x5d
+    field public static final int KEYCODE_PAGE_UP = 92; // 0x5c
+    field public static final int KEYCODE_PAIRING = 225; // 0xe1
+    field public static final int KEYCODE_PASTE = 279; // 0x117
+    field public static final int KEYCODE_PERIOD = 56; // 0x38
+    field public static final int KEYCODE_PICTSYMBOLS = 94; // 0x5e
+    field public static final int KEYCODE_PLUS = 81; // 0x51
+    field public static final int KEYCODE_POUND = 18; // 0x12
+    field public static final int KEYCODE_POWER = 26; // 0x1a
+    field public static final int KEYCODE_PROFILE_SWITCH = 288; // 0x120
+    field public static final int KEYCODE_PROG_BLUE = 186; // 0xba
+    field public static final int KEYCODE_PROG_GREEN = 184; // 0xb8
+    field public static final int KEYCODE_PROG_RED = 183; // 0xb7
+    field public static final int KEYCODE_PROG_YELLOW = 185; // 0xb9
+    field public static final int KEYCODE_Q = 45; // 0x2d
+    field public static final int KEYCODE_R = 46; // 0x2e
+    field public static final int KEYCODE_REFRESH = 285; // 0x11d
+    field public static final int KEYCODE_RIGHT_BRACKET = 72; // 0x48
+    field public static final int KEYCODE_RO = 217; // 0xd9
+    field public static final int KEYCODE_S = 47; // 0x2f
+    field public static final int KEYCODE_SCROLL_LOCK = 116; // 0x74
+    field public static final int KEYCODE_SEARCH = 84; // 0x54
+    field public static final int KEYCODE_SEMICOLON = 74; // 0x4a
+    field public static final int KEYCODE_SETTINGS = 176; // 0xb0
+    field public static final int KEYCODE_SHIFT_LEFT = 59; // 0x3b
+    field public static final int KEYCODE_SHIFT_RIGHT = 60; // 0x3c
+    field public static final int KEYCODE_SLASH = 76; // 0x4c
+    field public static final int KEYCODE_SLEEP = 223; // 0xdf
+    field public static final int KEYCODE_SOFT_LEFT = 1; // 0x1
+    field public static final int KEYCODE_SOFT_RIGHT = 2; // 0x2
+    field public static final int KEYCODE_SOFT_SLEEP = 276; // 0x114
+    field public static final int KEYCODE_SPACE = 62; // 0x3e
+    field public static final int KEYCODE_STAR = 17; // 0x11
+    field public static final int KEYCODE_STB_INPUT = 180; // 0xb4
+    field public static final int KEYCODE_STB_POWER = 179; // 0xb3
+    field public static final int KEYCODE_STEM_1 = 265; // 0x109
+    field public static final int KEYCODE_STEM_2 = 266; // 0x10a
+    field public static final int KEYCODE_STEM_3 = 267; // 0x10b
+    field public static final int KEYCODE_STEM_PRIMARY = 264; // 0x108
+    field public static final int KEYCODE_SWITCH_CHARSET = 95; // 0x5f
+    field public static final int KEYCODE_SYM = 63; // 0x3f
+    field public static final int KEYCODE_SYSRQ = 120; // 0x78
+    field public static final int KEYCODE_SYSTEM_NAVIGATION_DOWN = 281; // 0x119
+    field public static final int KEYCODE_SYSTEM_NAVIGATION_LEFT = 282; // 0x11a
+    field public static final int KEYCODE_SYSTEM_NAVIGATION_RIGHT = 283; // 0x11b
+    field public static final int KEYCODE_SYSTEM_NAVIGATION_UP = 280; // 0x118
+    field public static final int KEYCODE_T = 48; // 0x30
+    field public static final int KEYCODE_TAB = 61; // 0x3d
+    field public static final int KEYCODE_THUMBS_DOWN = 287; // 0x11f
+    field public static final int KEYCODE_THUMBS_UP = 286; // 0x11e
+    field public static final int KEYCODE_TV = 170; // 0xaa
+    field public static final int KEYCODE_TV_ANTENNA_CABLE = 242; // 0xf2
+    field public static final int KEYCODE_TV_AUDIO_DESCRIPTION = 252; // 0xfc
+    field public static final int KEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN = 254; // 0xfe
+    field public static final int KEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP = 253; // 0xfd
+    field public static final int KEYCODE_TV_CONTENTS_MENU = 256; // 0x100
+    field public static final int KEYCODE_TV_DATA_SERVICE = 230; // 0xe6
+    field public static final int KEYCODE_TV_INPUT = 178; // 0xb2
+    field public static final int KEYCODE_TV_INPUT_COMPONENT_1 = 249; // 0xf9
+    field public static final int KEYCODE_TV_INPUT_COMPONENT_2 = 250; // 0xfa
+    field public static final int KEYCODE_TV_INPUT_COMPOSITE_1 = 247; // 0xf7
+    field public static final int KEYCODE_TV_INPUT_COMPOSITE_2 = 248; // 0xf8
+    field public static final int KEYCODE_TV_INPUT_HDMI_1 = 243; // 0xf3
+    field public static final int KEYCODE_TV_INPUT_HDMI_2 = 244; // 0xf4
+    field public static final int KEYCODE_TV_INPUT_HDMI_3 = 245; // 0xf5
+    field public static final int KEYCODE_TV_INPUT_HDMI_4 = 246; // 0xf6
+    field public static final int KEYCODE_TV_INPUT_VGA_1 = 251; // 0xfb
+    field public static final int KEYCODE_TV_MEDIA_CONTEXT_MENU = 257; // 0x101
+    field public static final int KEYCODE_TV_NETWORK = 241; // 0xf1
+    field public static final int KEYCODE_TV_NUMBER_ENTRY = 234; // 0xea
+    field public static final int KEYCODE_TV_POWER = 177; // 0xb1
+    field public static final int KEYCODE_TV_RADIO_SERVICE = 232; // 0xe8
+    field public static final int KEYCODE_TV_SATELLITE = 237; // 0xed
+    field public static final int KEYCODE_TV_SATELLITE_BS = 238; // 0xee
+    field public static final int KEYCODE_TV_SATELLITE_CS = 239; // 0xef
+    field public static final int KEYCODE_TV_SATELLITE_SERVICE = 240; // 0xf0
+    field public static final int KEYCODE_TV_TELETEXT = 233; // 0xe9
+    field public static final int KEYCODE_TV_TERRESTRIAL_ANALOG = 235; // 0xeb
+    field public static final int KEYCODE_TV_TERRESTRIAL_DIGITAL = 236; // 0xec
+    field public static final int KEYCODE_TV_TIMER_PROGRAMMING = 258; // 0x102
+    field public static final int KEYCODE_TV_ZOOM_MODE = 255; // 0xff
+    field public static final int KEYCODE_U = 49; // 0x31
+    field public static final int KEYCODE_UNKNOWN = 0; // 0x0
+    field public static final int KEYCODE_V = 50; // 0x32
+    field public static final int KEYCODE_VOICE_ASSIST = 231; // 0xe7
+    field public static final int KEYCODE_VOLUME_DOWN = 25; // 0x19
+    field public static final int KEYCODE_VOLUME_MUTE = 164; // 0xa4
+    field public static final int KEYCODE_VOLUME_UP = 24; // 0x18
+    field public static final int KEYCODE_W = 51; // 0x33
+    field public static final int KEYCODE_WAKEUP = 224; // 0xe0
+    field public static final int KEYCODE_WINDOW = 171; // 0xab
+    field public static final int KEYCODE_X = 52; // 0x34
+    field public static final int KEYCODE_Y = 53; // 0x35
+    field public static final int KEYCODE_YEN = 216; // 0xd8
+    field public static final int KEYCODE_Z = 54; // 0x36
+    field public static final int KEYCODE_ZENKAKU_HANKAKU = 211; // 0xd3
+    field public static final int KEYCODE_ZOOM_IN = 168; // 0xa8
+    field public static final int KEYCODE_ZOOM_OUT = 169; // 0xa9
+    field @Deprecated public static final int MAX_KEYCODE = 84; // 0x54
+    field public static final int META_ALT_LEFT_ON = 16; // 0x10
+    field public static final int META_ALT_MASK = 50; // 0x32
+    field public static final int META_ALT_ON = 2; // 0x2
+    field public static final int META_ALT_RIGHT_ON = 32; // 0x20
+    field public static final int META_CAPS_LOCK_ON = 1048576; // 0x100000
+    field public static final int META_CTRL_LEFT_ON = 8192; // 0x2000
+    field public static final int META_CTRL_MASK = 28672; // 0x7000
+    field public static final int META_CTRL_ON = 4096; // 0x1000
+    field public static final int META_CTRL_RIGHT_ON = 16384; // 0x4000
+    field public static final int META_FUNCTION_ON = 8; // 0x8
+    field public static final int META_META_LEFT_ON = 131072; // 0x20000
+    field public static final int META_META_MASK = 458752; // 0x70000
+    field public static final int META_META_ON = 65536; // 0x10000
+    field public static final int META_META_RIGHT_ON = 262144; // 0x40000
+    field public static final int META_NUM_LOCK_ON = 2097152; // 0x200000
+    field public static final int META_SCROLL_LOCK_ON = 4194304; // 0x400000
+    field public static final int META_SHIFT_LEFT_ON = 64; // 0x40
+    field public static final int META_SHIFT_MASK = 193; // 0xc1
+    field public static final int META_SHIFT_ON = 1; // 0x1
+    field public static final int META_SHIFT_RIGHT_ON = 128; // 0x80
+    field public static final int META_SYM_ON = 4; // 0x4
+  }
+
+  public static interface KeyEvent.Callback {
+    method public boolean onKeyDown(int, android.view.KeyEvent);
+    method public boolean onKeyLongPress(int, android.view.KeyEvent);
+    method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
+    method public boolean onKeyUp(int, android.view.KeyEvent);
+  }
+
+  public static class KeyEvent.DispatcherState {
+    ctor public KeyEvent.DispatcherState();
+    method public void handleUpEvent(android.view.KeyEvent);
+    method public boolean isTracking(android.view.KeyEvent);
+    method public void performedLongPress(android.view.KeyEvent);
+    method public void reset();
+    method public void reset(Object);
+    method public void startTracking(android.view.KeyEvent, Object);
+  }
+
+  public final class KeyboardShortcutGroup implements android.os.Parcelable {
+    ctor public KeyboardShortcutGroup(@Nullable CharSequence, @NonNull java.util.List<android.view.KeyboardShortcutInfo>);
+    ctor public KeyboardShortcutGroup(@Nullable CharSequence);
+    method public void addItem(android.view.KeyboardShortcutInfo);
+    method public int describeContents();
+    method public java.util.List<android.view.KeyboardShortcutInfo> getItems();
+    method public CharSequence getLabel();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.KeyboardShortcutGroup> CREATOR;
+  }
+
+  public final class KeyboardShortcutInfo implements android.os.Parcelable {
+    ctor public KeyboardShortcutInfo(CharSequence, int, int);
+    ctor public KeyboardShortcutInfo(CharSequence, char, int);
+    method public int describeContents();
+    method public char getBaseCharacter();
+    method public int getKeycode();
+    method @Nullable public CharSequence getLabel();
+    method public int getModifiers();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.KeyboardShortcutInfo> CREATOR;
+  }
+
+  public abstract class LayoutInflater {
+    ctor protected LayoutInflater(android.content.Context);
+    ctor protected LayoutInflater(android.view.LayoutInflater, android.content.Context);
+    method public abstract android.view.LayoutInflater cloneInContext(android.content.Context);
+    method public final android.view.View createView(String, String, android.util.AttributeSet) throws java.lang.ClassNotFoundException, android.view.InflateException;
+    method @Nullable public final android.view.View createView(@NonNull android.content.Context, @NonNull String, @Nullable String, @Nullable android.util.AttributeSet) throws java.lang.ClassNotFoundException, android.view.InflateException;
+    method public static android.view.LayoutInflater from(android.content.Context);
+    method public android.content.Context getContext();
+    method public final android.view.LayoutInflater.Factory getFactory();
+    method public final android.view.LayoutInflater.Factory2 getFactory2();
+    method public android.view.LayoutInflater.Filter getFilter();
+    method public android.view.View inflate(@LayoutRes int, @Nullable android.view.ViewGroup);
+    method public android.view.View inflate(org.xmlpull.v1.XmlPullParser, @Nullable android.view.ViewGroup);
+    method public android.view.View inflate(@LayoutRes int, @Nullable android.view.ViewGroup, boolean);
+    method public android.view.View inflate(org.xmlpull.v1.XmlPullParser, @Nullable android.view.ViewGroup, boolean);
+    method protected android.view.View onCreateView(String, android.util.AttributeSet) throws java.lang.ClassNotFoundException;
+    method protected android.view.View onCreateView(android.view.View, String, android.util.AttributeSet) throws java.lang.ClassNotFoundException;
+    method @Nullable public android.view.View onCreateView(@NonNull android.content.Context, @Nullable android.view.View, @NonNull String, @Nullable android.util.AttributeSet) throws java.lang.ClassNotFoundException;
+    method public void setFactory(android.view.LayoutInflater.Factory);
+    method public void setFactory2(android.view.LayoutInflater.Factory2);
+    method public void setFilter(android.view.LayoutInflater.Filter);
+  }
+
+  public static interface LayoutInflater.Factory {
+    method @Nullable public android.view.View onCreateView(@NonNull String, @NonNull android.content.Context, @NonNull android.util.AttributeSet);
+  }
+
+  public static interface LayoutInflater.Factory2 extends android.view.LayoutInflater.Factory {
+    method @Nullable public android.view.View onCreateView(@Nullable android.view.View, @NonNull String, @NonNull android.content.Context, @NonNull android.util.AttributeSet);
+  }
+
+  public static interface LayoutInflater.Filter {
+    method public boolean onLoadClass(Class);
+  }
+
+  public interface Menu {
+    method public android.view.MenuItem add(CharSequence);
+    method public android.view.MenuItem add(@StringRes int);
+    method public android.view.MenuItem add(int, int, int, CharSequence);
+    method public android.view.MenuItem add(int, int, int, @StringRes int);
+    method public int addIntentOptions(int, int, int, android.content.ComponentName, android.content.Intent[], android.content.Intent, int, android.view.MenuItem[]);
+    method public android.view.SubMenu addSubMenu(CharSequence);
+    method public android.view.SubMenu addSubMenu(@StringRes int);
+    method public android.view.SubMenu addSubMenu(int, int, int, CharSequence);
+    method public android.view.SubMenu addSubMenu(int, int, int, @StringRes int);
+    method public void clear();
+    method public void close();
+    method public android.view.MenuItem findItem(int);
+    method public android.view.MenuItem getItem(int);
+    method public boolean hasVisibleItems();
+    method public boolean isShortcutKey(int, android.view.KeyEvent);
+    method public boolean performIdentifierAction(int, int);
+    method public boolean performShortcut(int, android.view.KeyEvent, int);
+    method public void removeGroup(int);
+    method public void removeItem(int);
+    method public void setGroupCheckable(int, boolean, boolean);
+    method public default void setGroupDividerEnabled(boolean);
+    method public void setGroupEnabled(int, boolean);
+    method public void setGroupVisible(int, boolean);
+    method public void setQwertyMode(boolean);
+    method public int size();
+    field public static final int CATEGORY_ALTERNATIVE = 262144; // 0x40000
+    field public static final int CATEGORY_CONTAINER = 65536; // 0x10000
+    field public static final int CATEGORY_SECONDARY = 196608; // 0x30000
+    field public static final int CATEGORY_SYSTEM = 131072; // 0x20000
+    field public static final int FIRST = 1; // 0x1
+    field public static final int FLAG_ALWAYS_PERFORM_CLOSE = 2; // 0x2
+    field public static final int FLAG_APPEND_TO_GROUP = 1; // 0x1
+    field public static final int FLAG_PERFORM_NO_CLOSE = 1; // 0x1
+    field public static final int NONE = 0; // 0x0
+    field public static final int SUPPORTED_MODIFIERS_MASK = 69647; // 0x1100f
+  }
+
+  public class MenuInflater {
+    ctor public MenuInflater(android.content.Context);
+    method public void inflate(@MenuRes int, android.view.Menu);
+  }
+
+  public interface MenuItem {
+    method public boolean collapseActionView();
+    method public boolean expandActionView();
+    method public android.view.ActionProvider getActionProvider();
+    method public android.view.View getActionView();
+    method public default int getAlphabeticModifiers();
+    method public char getAlphabeticShortcut();
+    method public default CharSequence getContentDescription();
+    method public int getGroupId();
+    method public android.graphics.drawable.Drawable getIcon();
+    method @Nullable public default android.graphics.BlendMode getIconTintBlendMode();
+    method @Nullable public default android.content.res.ColorStateList getIconTintList();
+    method @Nullable public default android.graphics.PorterDuff.Mode getIconTintMode();
+    method public android.content.Intent getIntent();
+    method public int getItemId();
+    method public android.view.ContextMenu.ContextMenuInfo getMenuInfo();
+    method public default int getNumericModifiers();
+    method public char getNumericShortcut();
+    method public int getOrder();
+    method public android.view.SubMenu getSubMenu();
+    method public CharSequence getTitle();
+    method public CharSequence getTitleCondensed();
+    method public default CharSequence getTooltipText();
+    method public boolean hasSubMenu();
+    method public boolean isActionViewExpanded();
+    method public boolean isCheckable();
+    method public boolean isChecked();
+    method public boolean isEnabled();
+    method public boolean isVisible();
+    method public android.view.MenuItem setActionProvider(android.view.ActionProvider);
+    method public android.view.MenuItem setActionView(android.view.View);
+    method public android.view.MenuItem setActionView(@LayoutRes int);
+    method public android.view.MenuItem setAlphabeticShortcut(char);
+    method public default android.view.MenuItem setAlphabeticShortcut(char, int);
+    method public android.view.MenuItem setCheckable(boolean);
+    method public android.view.MenuItem setChecked(boolean);
+    method public default android.view.MenuItem setContentDescription(CharSequence);
+    method public android.view.MenuItem setEnabled(boolean);
+    method public android.view.MenuItem setIcon(android.graphics.drawable.Drawable);
+    method public android.view.MenuItem setIcon(@DrawableRes int);
+    method @NonNull public default android.view.MenuItem setIconTintBlendMode(@Nullable android.graphics.BlendMode);
+    method public default android.view.MenuItem setIconTintList(@Nullable android.content.res.ColorStateList);
+    method @NonNull public default android.view.MenuItem setIconTintMode(@Nullable android.graphics.PorterDuff.Mode);
+    method public android.view.MenuItem setIntent(android.content.Intent);
+    method public android.view.MenuItem setNumericShortcut(char);
+    method public default android.view.MenuItem setNumericShortcut(char, int);
+    method public android.view.MenuItem setOnActionExpandListener(android.view.MenuItem.OnActionExpandListener);
+    method public android.view.MenuItem setOnMenuItemClickListener(android.view.MenuItem.OnMenuItemClickListener);
+    method public android.view.MenuItem setShortcut(char, char);
+    method public default android.view.MenuItem setShortcut(char, char, int, int);
+    method public void setShowAsAction(int);
+    method public android.view.MenuItem setShowAsActionFlags(int);
+    method public android.view.MenuItem setTitle(CharSequence);
+    method public android.view.MenuItem setTitle(@StringRes int);
+    method public android.view.MenuItem setTitleCondensed(CharSequence);
+    method public default android.view.MenuItem setTooltipText(CharSequence);
+    method public android.view.MenuItem setVisible(boolean);
+    field public static final int SHOW_AS_ACTION_ALWAYS = 2; // 0x2
+    field public static final int SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW = 8; // 0x8
+    field public static final int SHOW_AS_ACTION_IF_ROOM = 1; // 0x1
+    field public static final int SHOW_AS_ACTION_NEVER = 0; // 0x0
+    field public static final int SHOW_AS_ACTION_WITH_TEXT = 4; // 0x4
+  }
+
+  public static interface MenuItem.OnActionExpandListener {
+    method public boolean onMenuItemActionCollapse(android.view.MenuItem);
+    method public boolean onMenuItemActionExpand(android.view.MenuItem);
+  }
+
+  public static interface MenuItem.OnMenuItemClickListener {
+    method public boolean onMenuItemClick(android.view.MenuItem);
+  }
+
+  public final class MotionEvent extends android.view.InputEvent implements android.os.Parcelable {
+    method public static String actionToString(int);
+    method public void addBatch(long, float, float, float, float, int);
+    method public void addBatch(long, android.view.MotionEvent.PointerCoords[], int);
+    method public static int axisFromString(String);
+    method public static String axisToString(int);
+    method public int findPointerIndex(int);
+    method public int getAction();
+    method public int getActionButton();
+    method public int getActionIndex();
+    method public int getActionMasked();
+    method public float getAxisValue(int);
+    method public float getAxisValue(int, int);
+    method public int getButtonState();
+    method public int getClassification();
+    method public int getDeviceId();
+    method public long getDownTime();
+    method public int getEdgeFlags();
+    method public long getEventTime();
+    method public int getFlags();
+    method public float getHistoricalAxisValue(int, int);
+    method public float getHistoricalAxisValue(int, int, int);
+    method public long getHistoricalEventTime(int);
+    method public float getHistoricalOrientation(int);
+    method public float getHistoricalOrientation(int, int);
+    method public void getHistoricalPointerCoords(int, int, android.view.MotionEvent.PointerCoords);
+    method public float getHistoricalPressure(int);
+    method public float getHistoricalPressure(int, int);
+    method public float getHistoricalSize(int);
+    method public float getHistoricalSize(int, int);
+    method public float getHistoricalToolMajor(int);
+    method public float getHistoricalToolMajor(int, int);
+    method public float getHistoricalToolMinor(int);
+    method public float getHistoricalToolMinor(int, int);
+    method public float getHistoricalTouchMajor(int);
+    method public float getHistoricalTouchMajor(int, int);
+    method public float getHistoricalTouchMinor(int);
+    method public float getHistoricalTouchMinor(int, int);
+    method public float getHistoricalX(int);
+    method public float getHistoricalX(int, int);
+    method public float getHistoricalY(int);
+    method public float getHistoricalY(int, int);
+    method public int getHistorySize();
+    method public int getMetaState();
+    method public float getOrientation();
+    method public float getOrientation(int);
+    method public void getPointerCoords(int, android.view.MotionEvent.PointerCoords);
+    method public int getPointerCount();
+    method public int getPointerId(int);
+    method public void getPointerProperties(int, android.view.MotionEvent.PointerProperties);
+    method public float getPressure();
+    method public float getPressure(int);
+    method public float getRawX();
+    method public float getRawX(int);
+    method public float getRawY();
+    method public float getRawY(int);
+    method public float getSize();
+    method public float getSize(int);
+    method public int getSource();
+    method public float getToolMajor();
+    method public float getToolMajor(int);
+    method public float getToolMinor();
+    method public float getToolMinor(int);
+    method public int getToolType(int);
+    method public float getTouchMajor();
+    method public float getTouchMajor(int);
+    method public float getTouchMinor();
+    method public float getTouchMinor(int);
+    method public float getX();
+    method public float getX(int);
+    method public float getXPrecision();
+    method public float getY();
+    method public float getY(int);
+    method public float getYPrecision();
+    method public boolean isButtonPressed(int);
+    method public static android.view.MotionEvent obtain(long, long, int, int, android.view.MotionEvent.PointerProperties[], android.view.MotionEvent.PointerCoords[], int, int, float, float, int, int, int, int);
+    method @Deprecated public static android.view.MotionEvent obtain(long, long, int, int, int[], android.view.MotionEvent.PointerCoords[], int, float, float, int, int, int, int);
+    method public static android.view.MotionEvent obtain(long, long, int, float, float, float, float, int, float, float, int, int);
+    method @Deprecated public static android.view.MotionEvent obtain(long, long, int, int, float, float, float, float, int, float, float, int, int);
+    method public static android.view.MotionEvent obtain(long, long, int, float, float, int);
+    method public static android.view.MotionEvent obtain(android.view.MotionEvent);
+    method public static android.view.MotionEvent obtainNoHistory(android.view.MotionEvent);
+    method public void offsetLocation(float, float);
+    method public void recycle();
+    method public void setAction(int);
+    method public void setEdgeFlags(int);
+    method public void setLocation(float, float);
+    method public void setSource(int);
+    method public void transform(android.graphics.Matrix);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int ACTION_BUTTON_PRESS = 11; // 0xb
+    field public static final int ACTION_BUTTON_RELEASE = 12; // 0xc
+    field public static final int ACTION_CANCEL = 3; // 0x3
+    field public static final int ACTION_DOWN = 0; // 0x0
+    field public static final int ACTION_HOVER_ENTER = 9; // 0x9
+    field public static final int ACTION_HOVER_EXIT = 10; // 0xa
+    field public static final int ACTION_HOVER_MOVE = 7; // 0x7
+    field public static final int ACTION_MASK = 255; // 0xff
+    field public static final int ACTION_MOVE = 2; // 0x2
+    field public static final int ACTION_OUTSIDE = 4; // 0x4
+    field @Deprecated public static final int ACTION_POINTER_1_DOWN = 5; // 0x5
+    field @Deprecated public static final int ACTION_POINTER_1_UP = 6; // 0x6
+    field @Deprecated public static final int ACTION_POINTER_2_DOWN = 261; // 0x105
+    field @Deprecated public static final int ACTION_POINTER_2_UP = 262; // 0x106
+    field @Deprecated public static final int ACTION_POINTER_3_DOWN = 517; // 0x205
+    field @Deprecated public static final int ACTION_POINTER_3_UP = 518; // 0x206
+    field public static final int ACTION_POINTER_DOWN = 5; // 0x5
+    field @Deprecated public static final int ACTION_POINTER_ID_MASK = 65280; // 0xff00
+    field @Deprecated public static final int ACTION_POINTER_ID_SHIFT = 8; // 0x8
+    field public static final int ACTION_POINTER_INDEX_MASK = 65280; // 0xff00
+    field public static final int ACTION_POINTER_INDEX_SHIFT = 8; // 0x8
+    field public static final int ACTION_POINTER_UP = 6; // 0x6
+    field public static final int ACTION_SCROLL = 8; // 0x8
+    field public static final int ACTION_UP = 1; // 0x1
+    field public static final int AXIS_BRAKE = 23; // 0x17
+    field public static final int AXIS_DISTANCE = 24; // 0x18
+    field public static final int AXIS_GAS = 22; // 0x16
+    field public static final int AXIS_GENERIC_1 = 32; // 0x20
+    field public static final int AXIS_GENERIC_10 = 41; // 0x29
+    field public static final int AXIS_GENERIC_11 = 42; // 0x2a
+    field public static final int AXIS_GENERIC_12 = 43; // 0x2b
+    field public static final int AXIS_GENERIC_13 = 44; // 0x2c
+    field public static final int AXIS_GENERIC_14 = 45; // 0x2d
+    field public static final int AXIS_GENERIC_15 = 46; // 0x2e
+    field public static final int AXIS_GENERIC_16 = 47; // 0x2f
+    field public static final int AXIS_GENERIC_2 = 33; // 0x21
+    field public static final int AXIS_GENERIC_3 = 34; // 0x22
+    field public static final int AXIS_GENERIC_4 = 35; // 0x23
+    field public static final int AXIS_GENERIC_5 = 36; // 0x24
+    field public static final int AXIS_GENERIC_6 = 37; // 0x25
+    field public static final int AXIS_GENERIC_7 = 38; // 0x26
+    field public static final int AXIS_GENERIC_8 = 39; // 0x27
+    field public static final int AXIS_GENERIC_9 = 40; // 0x28
+    field public static final int AXIS_HAT_X = 15; // 0xf
+    field public static final int AXIS_HAT_Y = 16; // 0x10
+    field public static final int AXIS_HSCROLL = 10; // 0xa
+    field public static final int AXIS_LTRIGGER = 17; // 0x11
+    field public static final int AXIS_ORIENTATION = 8; // 0x8
+    field public static final int AXIS_PRESSURE = 2; // 0x2
+    field public static final int AXIS_RELATIVE_X = 27; // 0x1b
+    field public static final int AXIS_RELATIVE_Y = 28; // 0x1c
+    field public static final int AXIS_RTRIGGER = 18; // 0x12
+    field public static final int AXIS_RUDDER = 20; // 0x14
+    field public static final int AXIS_RX = 12; // 0xc
+    field public static final int AXIS_RY = 13; // 0xd
+    field public static final int AXIS_RZ = 14; // 0xe
+    field public static final int AXIS_SCROLL = 26; // 0x1a
+    field public static final int AXIS_SIZE = 3; // 0x3
+    field public static final int AXIS_THROTTLE = 19; // 0x13
+    field public static final int AXIS_TILT = 25; // 0x19
+    field public static final int AXIS_TOOL_MAJOR = 6; // 0x6
+    field public static final int AXIS_TOOL_MINOR = 7; // 0x7
+    field public static final int AXIS_TOUCH_MAJOR = 4; // 0x4
+    field public static final int AXIS_TOUCH_MINOR = 5; // 0x5
+    field public static final int AXIS_VSCROLL = 9; // 0x9
+    field public static final int AXIS_WHEEL = 21; // 0x15
+    field public static final int AXIS_X = 0; // 0x0
+    field public static final int AXIS_Y = 1; // 0x1
+    field public static final int AXIS_Z = 11; // 0xb
+    field public static final int BUTTON_BACK = 8; // 0x8
+    field public static final int BUTTON_FORWARD = 16; // 0x10
+    field public static final int BUTTON_PRIMARY = 1; // 0x1
+    field public static final int BUTTON_SECONDARY = 2; // 0x2
+    field public static final int BUTTON_STYLUS_PRIMARY = 32; // 0x20
+    field public static final int BUTTON_STYLUS_SECONDARY = 64; // 0x40
+    field public static final int BUTTON_TERTIARY = 4; // 0x4
+    field public static final int CLASSIFICATION_AMBIGUOUS_GESTURE = 1; // 0x1
+    field public static final int CLASSIFICATION_DEEP_PRESS = 2; // 0x2
+    field public static final int CLASSIFICATION_NONE = 0; // 0x0
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.MotionEvent> CREATOR;
+    field public static final int EDGE_BOTTOM = 2; // 0x2
+    field public static final int EDGE_LEFT = 4; // 0x4
+    field public static final int EDGE_RIGHT = 8; // 0x8
+    field public static final int EDGE_TOP = 1; // 0x1
+    field public static final int FLAG_WINDOW_IS_OBSCURED = 1; // 0x1
+    field public static final int FLAG_WINDOW_IS_PARTIALLY_OBSCURED = 2; // 0x2
+    field public static final int INVALID_POINTER_ID = -1; // 0xffffffff
+    field public static final int TOOL_TYPE_ERASER = 4; // 0x4
+    field public static final int TOOL_TYPE_FINGER = 1; // 0x1
+    field public static final int TOOL_TYPE_MOUSE = 3; // 0x3
+    field public static final int TOOL_TYPE_STYLUS = 2; // 0x2
+    field public static final int TOOL_TYPE_UNKNOWN = 0; // 0x0
+  }
+
+  public static final class MotionEvent.PointerCoords {
+    ctor public MotionEvent.PointerCoords();
+    ctor public MotionEvent.PointerCoords(android.view.MotionEvent.PointerCoords);
+    method public void clear();
+    method public void copyFrom(android.view.MotionEvent.PointerCoords);
+    method public float getAxisValue(int);
+    method public void setAxisValue(int, float);
+    field public float orientation;
+    field public float pressure;
+    field public float size;
+    field public float toolMajor;
+    field public float toolMinor;
+    field public float touchMajor;
+    field public float touchMinor;
+    field public float x;
+    field public float y;
+  }
+
+  public static final class MotionEvent.PointerProperties {
+    ctor public MotionEvent.PointerProperties();
+    ctor public MotionEvent.PointerProperties(android.view.MotionEvent.PointerProperties);
+    method public void clear();
+    method public void copyFrom(android.view.MotionEvent.PointerProperties);
+    field public int id;
+    field public int toolType;
+  }
+
+  public abstract class OrientationEventListener {
+    ctor public OrientationEventListener(android.content.Context);
+    ctor public OrientationEventListener(android.content.Context, int);
+    method public boolean canDetectOrientation();
+    method public void disable();
+    method public void enable();
+    method public abstract void onOrientationChanged(int);
+    field public static final int ORIENTATION_UNKNOWN = -1; // 0xffffffff
+  }
+
+  @Deprecated public abstract class OrientationListener implements android.hardware.SensorListener {
+    ctor @Deprecated public OrientationListener(android.content.Context);
+    ctor @Deprecated public OrientationListener(android.content.Context, int);
+    method @Deprecated public void disable();
+    method @Deprecated public void enable();
+    method @Deprecated public void onAccuracyChanged(int, int);
+    method @Deprecated public abstract void onOrientationChanged(int);
+    method @Deprecated public void onSensorChanged(int, float[]);
+    field @Deprecated public static final int ORIENTATION_UNKNOWN = -1; // 0xffffffff
+  }
+
+  public final class PixelCopy {
+    method public static void request(@NonNull android.view.SurfaceView, @NonNull android.graphics.Bitmap, @NonNull android.view.PixelCopy.OnPixelCopyFinishedListener, @NonNull android.os.Handler);
+    method public static void request(@NonNull android.view.SurfaceView, @Nullable android.graphics.Rect, @NonNull android.graphics.Bitmap, @NonNull android.view.PixelCopy.OnPixelCopyFinishedListener, @NonNull android.os.Handler);
+    method public static void request(@NonNull android.view.Surface, @NonNull android.graphics.Bitmap, @NonNull android.view.PixelCopy.OnPixelCopyFinishedListener, @NonNull android.os.Handler);
+    method public static void request(@NonNull android.view.Surface, @Nullable android.graphics.Rect, @NonNull android.graphics.Bitmap, @NonNull android.view.PixelCopy.OnPixelCopyFinishedListener, @NonNull android.os.Handler);
+    method public static void request(@NonNull android.view.Window, @NonNull android.graphics.Bitmap, @NonNull android.view.PixelCopy.OnPixelCopyFinishedListener, @NonNull android.os.Handler);
+    method public static void request(@NonNull android.view.Window, @Nullable android.graphics.Rect, @NonNull android.graphics.Bitmap, @NonNull android.view.PixelCopy.OnPixelCopyFinishedListener, @NonNull android.os.Handler);
+    field public static final int ERROR_DESTINATION_INVALID = 5; // 0x5
+    field public static final int ERROR_SOURCE_INVALID = 4; // 0x4
+    field public static final int ERROR_SOURCE_NO_DATA = 3; // 0x3
+    field public static final int ERROR_TIMEOUT = 2; // 0x2
+    field public static final int ERROR_UNKNOWN = 1; // 0x1
+    field public static final int SUCCESS = 0; // 0x0
+  }
+
+  public static interface PixelCopy.OnPixelCopyFinishedListener {
+    method public void onPixelCopyFinished(int);
+  }
+
+  public final class PointerIcon implements android.os.Parcelable {
+    method public static android.view.PointerIcon create(@NonNull android.graphics.Bitmap, float, float);
+    method public int describeContents();
+    method public static android.view.PointerIcon getSystemIcon(@NonNull android.content.Context, int);
+    method public static android.view.PointerIcon load(@NonNull android.content.res.Resources, @XmlRes int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.PointerIcon> CREATOR;
+    field public static final int TYPE_ALIAS = 1010; // 0x3f2
+    field public static final int TYPE_ALL_SCROLL = 1013; // 0x3f5
+    field public static final int TYPE_ARROW = 1000; // 0x3e8
+    field public static final int TYPE_CELL = 1006; // 0x3ee
+    field public static final int TYPE_CONTEXT_MENU = 1001; // 0x3e9
+    field public static final int TYPE_COPY = 1011; // 0x3f3
+    field public static final int TYPE_CROSSHAIR = 1007; // 0x3ef
+    field public static final int TYPE_DEFAULT = 1000; // 0x3e8
+    field public static final int TYPE_GRAB = 1020; // 0x3fc
+    field public static final int TYPE_GRABBING = 1021; // 0x3fd
+    field public static final int TYPE_HAND = 1002; // 0x3ea
+    field public static final int TYPE_HELP = 1003; // 0x3eb
+    field public static final int TYPE_HORIZONTAL_DOUBLE_ARROW = 1014; // 0x3f6
+    field public static final int TYPE_NO_DROP = 1012; // 0x3f4
+    field public static final int TYPE_NULL = 0; // 0x0
+    field public static final int TYPE_TEXT = 1008; // 0x3f0
+    field public static final int TYPE_TOP_LEFT_DIAGONAL_DOUBLE_ARROW = 1017; // 0x3f9
+    field public static final int TYPE_TOP_RIGHT_DIAGONAL_DOUBLE_ARROW = 1016; // 0x3f8
+    field public static final int TYPE_VERTICAL_DOUBLE_ARROW = 1015; // 0x3f7
+    field public static final int TYPE_VERTICAL_TEXT = 1009; // 0x3f1
+    field public static final int TYPE_WAIT = 1004; // 0x3ec
+    field public static final int TYPE_ZOOM_IN = 1018; // 0x3fa
+    field public static final int TYPE_ZOOM_OUT = 1019; // 0x3fb
+  }
+
+  public class ScaleGestureDetector {
+    ctor public ScaleGestureDetector(android.content.Context, android.view.ScaleGestureDetector.OnScaleGestureListener);
+    ctor public ScaleGestureDetector(android.content.Context, android.view.ScaleGestureDetector.OnScaleGestureListener, android.os.Handler);
+    method public float getCurrentSpan();
+    method public float getCurrentSpanX();
+    method public float getCurrentSpanY();
+    method public long getEventTime();
+    method public float getFocusX();
+    method public float getFocusY();
+    method public float getPreviousSpan();
+    method public float getPreviousSpanX();
+    method public float getPreviousSpanY();
+    method public float getScaleFactor();
+    method public long getTimeDelta();
+    method public boolean isInProgress();
+    method public boolean isQuickScaleEnabled();
+    method public boolean isStylusScaleEnabled();
+    method public boolean onTouchEvent(android.view.MotionEvent);
+    method public void setQuickScaleEnabled(boolean);
+    method public void setStylusScaleEnabled(boolean);
+  }
+
+  public static interface ScaleGestureDetector.OnScaleGestureListener {
+    method public boolean onScale(android.view.ScaleGestureDetector);
+    method public boolean onScaleBegin(android.view.ScaleGestureDetector);
+    method public void onScaleEnd(android.view.ScaleGestureDetector);
+  }
+
+  public static class ScaleGestureDetector.SimpleOnScaleGestureListener implements android.view.ScaleGestureDetector.OnScaleGestureListener {
+    ctor public ScaleGestureDetector.SimpleOnScaleGestureListener();
+    method public boolean onScale(android.view.ScaleGestureDetector);
+    method public boolean onScaleBegin(android.view.ScaleGestureDetector);
+    method public void onScaleEnd(android.view.ScaleGestureDetector);
+  }
+
+  public class SearchEvent {
+    ctor public SearchEvent(android.view.InputDevice);
+    method public android.view.InputDevice getInputDevice();
+  }
+
+  public class SoundEffectConstants {
+    method public static int getContantForFocusDirection(int);
+    field public static final int CLICK = 0; // 0x0
+    field public static final int NAVIGATION_DOWN = 4; // 0x4
+    field public static final int NAVIGATION_LEFT = 1; // 0x1
+    field public static final int NAVIGATION_RIGHT = 3; // 0x3
+    field public static final int NAVIGATION_UP = 2; // 0x2
+  }
+
+  public interface SubMenu extends android.view.Menu {
+    method public void clearHeader();
+    method public android.view.MenuItem getItem();
+    method public android.view.SubMenu setHeaderIcon(@DrawableRes int);
+    method public android.view.SubMenu setHeaderIcon(android.graphics.drawable.Drawable);
+    method public android.view.SubMenu setHeaderTitle(@StringRes int);
+    method public android.view.SubMenu setHeaderTitle(CharSequence);
+    method public android.view.SubMenu setHeaderView(android.view.View);
+    method public android.view.SubMenu setIcon(@DrawableRes int);
+    method public android.view.SubMenu setIcon(android.graphics.drawable.Drawable);
+  }
+
+  public class Surface implements android.os.Parcelable {
+    ctor public Surface(@NonNull android.view.SurfaceControl);
+    ctor public Surface(android.graphics.SurfaceTexture);
+    method public int describeContents();
+    method public boolean isValid();
+    method public android.graphics.Canvas lockCanvas(android.graphics.Rect) throws java.lang.IllegalArgumentException, android.view.Surface.OutOfResourcesException;
+    method public android.graphics.Canvas lockHardwareCanvas();
+    method public void readFromParcel(android.os.Parcel);
+    method public void release();
+    method public void setFrameRate(@FloatRange(from=0.0) float, int);
+    method @Deprecated public void unlockCanvas(android.graphics.Canvas);
+    method public void unlockCanvasAndPost(android.graphics.Canvas);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.Surface> CREATOR;
+    field public static final int FRAME_RATE_COMPATIBILITY_DEFAULT = 0; // 0x0
+    field public static final int FRAME_RATE_COMPATIBILITY_FIXED_SOURCE = 1; // 0x1
+    field public static final int ROTATION_0 = 0; // 0x0
+    field public static final int ROTATION_180 = 2; // 0x2
+    field public static final int ROTATION_270 = 3; // 0x3
+    field public static final int ROTATION_90 = 1; // 0x1
+  }
+
+  public static class Surface.OutOfResourcesException extends java.lang.RuntimeException {
+    ctor public Surface.OutOfResourcesException();
+    ctor public Surface.OutOfResourcesException(String);
+  }
+
+  public final class SurfaceControl implements android.os.Parcelable {
+    method public int describeContents();
+    method public boolean isValid();
+    method public void readFromParcel(android.os.Parcel);
+    method public void release();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.SurfaceControl> CREATOR;
+  }
+
+  public static class SurfaceControl.Builder {
+    ctor public SurfaceControl.Builder();
+    method @NonNull public android.view.SurfaceControl build();
+    method @NonNull public android.view.SurfaceControl.Builder setBufferSize(@IntRange(from=0) int, @IntRange(from=0) int);
+    method @NonNull public android.view.SurfaceControl.Builder setFormat(int);
+    method @NonNull public android.view.SurfaceControl.Builder setName(@NonNull String);
+    method @NonNull public android.view.SurfaceControl.Builder setOpaque(boolean);
+    method @NonNull public android.view.SurfaceControl.Builder setParent(@Nullable android.view.SurfaceControl);
+  }
+
+  public static class SurfaceControl.Transaction implements java.io.Closeable android.os.Parcelable {
+    ctor public SurfaceControl.Transaction();
+    method public void apply();
+    method public void close();
+    method public int describeContents();
+    method @NonNull public android.view.SurfaceControl.Transaction merge(@NonNull android.view.SurfaceControl.Transaction);
+    method @NonNull public android.view.SurfaceControl.Transaction reparent(@NonNull android.view.SurfaceControl, @Nullable android.view.SurfaceControl);
+    method @NonNull public android.view.SurfaceControl.Transaction setAlpha(@NonNull android.view.SurfaceControl, @FloatRange(from=0.0, to=1.0) float);
+    method @NonNull public android.view.SurfaceControl.Transaction setBufferSize(@NonNull android.view.SurfaceControl, @IntRange(from=0) int, @IntRange(from=0) int);
+    method @NonNull public android.view.SurfaceControl.Transaction setFrameRate(@NonNull android.view.SurfaceControl, @FloatRange(from=0.0) float, int);
+    method @NonNull public android.view.SurfaceControl.Transaction setGeometry(@NonNull android.view.SurfaceControl, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect, int);
+    method @NonNull public android.view.SurfaceControl.Transaction setLayer(@NonNull android.view.SurfaceControl, @IntRange(from=java.lang.Integer.MIN_VALUE, to=java.lang.Integer.MAX_VALUE) int);
+    method @NonNull public android.view.SurfaceControl.Transaction setVisibility(@NonNull android.view.SurfaceControl, boolean);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.SurfaceControl.Transaction> CREATOR;
+  }
+
+  public class SurfaceControlViewHost {
+    ctor public SurfaceControlViewHost(@NonNull android.content.Context, @NonNull android.view.Display, @Nullable android.os.IBinder);
+    method @Nullable public android.view.SurfaceControlViewHost.SurfacePackage getSurfacePackage();
+    method @Nullable public android.view.View getView();
+    method public void relayout(int, int);
+    method public void release();
+    method public void setView(@NonNull android.view.View, int, int);
+  }
+
+  public static final class SurfaceControlViewHost.SurfacePackage implements android.os.Parcelable {
+    method public int describeContents();
+    method public void release();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.SurfaceControlViewHost.SurfacePackage> CREATOR;
+  }
+
+  public interface SurfaceHolder {
+    method public void addCallback(android.view.SurfaceHolder.Callback);
+    method public android.view.Surface getSurface();
+    method public android.graphics.Rect getSurfaceFrame();
+    method public boolean isCreating();
+    method public android.graphics.Canvas lockCanvas();
+    method public android.graphics.Canvas lockCanvas(android.graphics.Rect);
+    method public default android.graphics.Canvas lockHardwareCanvas();
+    method public void removeCallback(android.view.SurfaceHolder.Callback);
+    method public void setFixedSize(int, int);
+    method public void setFormat(int);
+    method public void setKeepScreenOn(boolean);
+    method public void setSizeFromLayout();
+    method @Deprecated public void setType(int);
+    method public void unlockCanvasAndPost(android.graphics.Canvas);
+    field @Deprecated public static final int SURFACE_TYPE_GPU = 2; // 0x2
+    field @Deprecated public static final int SURFACE_TYPE_HARDWARE = 1; // 0x1
+    field @Deprecated public static final int SURFACE_TYPE_NORMAL = 0; // 0x0
+    field @Deprecated public static final int SURFACE_TYPE_PUSH_BUFFERS = 3; // 0x3
+  }
+
+  public static class SurfaceHolder.BadSurfaceTypeException extends java.lang.RuntimeException {
+    ctor public SurfaceHolder.BadSurfaceTypeException();
+    ctor public SurfaceHolder.BadSurfaceTypeException(String);
+  }
+
+  public static interface SurfaceHolder.Callback {
+    method public void surfaceChanged(@NonNull android.view.SurfaceHolder, int, @IntRange(from=0) int, @IntRange(from=0) int);
+    method public void surfaceCreated(@NonNull android.view.SurfaceHolder);
+    method public void surfaceDestroyed(@NonNull android.view.SurfaceHolder);
+  }
+
+  public static interface SurfaceHolder.Callback2 extends android.view.SurfaceHolder.Callback {
+    method public void surfaceRedrawNeeded(@NonNull android.view.SurfaceHolder);
+    method public default void surfaceRedrawNeededAsync(@NonNull android.view.SurfaceHolder, @NonNull Runnable);
+  }
+
+  public class SurfaceView extends android.view.View {
+    ctor public SurfaceView(android.content.Context);
+    ctor public SurfaceView(android.content.Context, android.util.AttributeSet);
+    ctor public SurfaceView(android.content.Context, android.util.AttributeSet, int);
+    ctor public SurfaceView(android.content.Context, android.util.AttributeSet, int, int);
+    method public boolean gatherTransparentRegion(android.graphics.Region);
+    method public android.view.SurfaceHolder getHolder();
+    method @Nullable public android.os.IBinder getHostToken();
+    method public android.view.SurfaceControl getSurfaceControl();
+    method public void setChildSurfacePackage(@NonNull android.view.SurfaceControlViewHost.SurfacePackage);
+    method public void setSecure(boolean);
+    method public void setZOrderMediaOverlay(boolean);
+    method public void setZOrderOnTop(boolean);
+  }
+
+  public class TextureView extends android.view.View {
+    ctor public TextureView(@NonNull android.content.Context);
+    ctor public TextureView(@NonNull android.content.Context, @Nullable android.util.AttributeSet);
+    ctor public TextureView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, int);
+    ctor public TextureView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, int, int);
+    method public final void draw(android.graphics.Canvas);
+    method @Nullable public android.graphics.Bitmap getBitmap();
+    method @Nullable public android.graphics.Bitmap getBitmap(int, int);
+    method @NonNull public android.graphics.Bitmap getBitmap(@NonNull android.graphics.Bitmap);
+    method @Nullable public android.graphics.SurfaceTexture getSurfaceTexture();
+    method @Nullable public android.view.TextureView.SurfaceTextureListener getSurfaceTextureListener();
+    method @NonNull public android.graphics.Matrix getTransform(@Nullable android.graphics.Matrix);
+    method public boolean isAvailable();
+    method @Nullable public android.graphics.Canvas lockCanvas();
+    method @Nullable public android.graphics.Canvas lockCanvas(@Nullable android.graphics.Rect);
+    method protected final void onDraw(android.graphics.Canvas);
+    method public void setBackgroundDrawable(android.graphics.drawable.Drawable);
+    method public void setOpaque(boolean);
+    method public void setSurfaceTexture(@NonNull android.graphics.SurfaceTexture);
+    method public void setSurfaceTextureListener(@Nullable android.view.TextureView.SurfaceTextureListener);
+    method public void setTransform(@Nullable android.graphics.Matrix);
+    method public void unlockCanvasAndPost(@NonNull android.graphics.Canvas);
+  }
+
+  public static interface TextureView.SurfaceTextureListener {
+    method public void onSurfaceTextureAvailable(@NonNull android.graphics.SurfaceTexture, int, int);
+    method public boolean onSurfaceTextureDestroyed(@NonNull android.graphics.SurfaceTexture);
+    method public void onSurfaceTextureSizeChanged(@NonNull android.graphics.SurfaceTexture, int, int);
+    method public void onSurfaceTextureUpdated(@NonNull android.graphics.SurfaceTexture);
+  }
+
+  public class TouchDelegate {
+    ctor public TouchDelegate(android.graphics.Rect, android.view.View);
+    method @NonNull public android.view.accessibility.AccessibilityNodeInfo.TouchDelegateInfo getTouchDelegateInfo();
+    method public boolean onTouchEvent(@NonNull android.view.MotionEvent);
+    method public boolean onTouchExplorationHoverEvent(@NonNull android.view.MotionEvent);
+    field public static final int ABOVE = 1; // 0x1
+    field public static final int BELOW = 2; // 0x2
+    field public static final int TO_LEFT = 4; // 0x4
+    field public static final int TO_RIGHT = 8; // 0x8
+  }
+
+  public final class VelocityTracker {
+    method public void addMovement(android.view.MotionEvent);
+    method public void clear();
+    method public void computeCurrentVelocity(int);
+    method public void computeCurrentVelocity(int, float);
+    method public float getXVelocity();
+    method public float getXVelocity(int);
+    method public float getYVelocity();
+    method public float getYVelocity(int);
+    method public static android.view.VelocityTracker obtain();
+    method public void recycle();
+  }
+
+  public abstract class VerifiedInputEvent implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getDeviceId();
+    method public int getDisplayId();
+    method public long getEventTimeNanos();
+    method public int getSource();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.VerifiedInputEvent> CREATOR;
+  }
+
+  public final class VerifiedKeyEvent extends android.view.VerifiedInputEvent implements android.os.Parcelable {
+    method public int getAction();
+    method public long getDownTimeNanos();
+    method @Nullable public Boolean getFlag(int);
+    method public int getKeyCode();
+    method public int getMetaState();
+    method public int getRepeatCount();
+    method public int getScanCode();
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.VerifiedKeyEvent> CREATOR;
+  }
+
+  public final class VerifiedMotionEvent extends android.view.VerifiedInputEvent implements android.os.Parcelable {
+    method public int getActionMasked();
+    method public int getButtonState();
+    method public long getDownTimeNanos();
+    method @Nullable public Boolean getFlag(int);
+    method public int getMetaState();
+    method public float getRawX();
+    method public float getRawY();
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.VerifiedMotionEvent> CREATOR;
+  }
+
+  @UiThread public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.view.KeyEvent.Callback {
+    ctor public View(android.content.Context);
+    ctor public View(android.content.Context, @Nullable android.util.AttributeSet);
+    ctor public View(android.content.Context, @Nullable android.util.AttributeSet, int);
+    ctor public View(android.content.Context, @Nullable android.util.AttributeSet, int, int);
+    method public void addChildrenForAccessibility(java.util.ArrayList<android.view.View>);
+    method public void addExtraDataToAccessibilityNodeInfo(@NonNull android.view.accessibility.AccessibilityNodeInfo, @NonNull String, @Nullable android.os.Bundle);
+    method public void addFocusables(java.util.ArrayList<android.view.View>, int);
+    method public void addFocusables(java.util.ArrayList<android.view.View>, int, int);
+    method public void addKeyboardNavigationClusters(@NonNull java.util.Collection<android.view.View>, int);
+    method public void addOnAttachStateChangeListener(android.view.View.OnAttachStateChangeListener);
+    method public void addOnLayoutChangeListener(android.view.View.OnLayoutChangeListener);
+    method public void addOnUnhandledKeyEventListener(android.view.View.OnUnhandledKeyEventListener);
+    method public void addTouchables(java.util.ArrayList<android.view.View>);
+    method public android.view.ViewPropertyAnimator animate();
+    method public void announceForAccessibility(CharSequence);
+    method public void autofill(android.view.autofill.AutofillValue);
+    method public void autofill(@NonNull android.util.SparseArray<android.view.autofill.AutofillValue>);
+    method protected boolean awakenScrollBars();
+    method protected boolean awakenScrollBars(int);
+    method protected boolean awakenScrollBars(int, boolean);
+    method public void bringToFront();
+    method @Deprecated public void buildDrawingCache();
+    method @Deprecated public void buildDrawingCache(boolean);
+    method public void buildLayer();
+    method public boolean callOnClick();
+    method public boolean canResolveLayoutDirection();
+    method public boolean canResolveTextAlignment();
+    method public boolean canResolveTextDirection();
+    method public boolean canScrollHorizontally(int);
+    method public boolean canScrollVertically(int);
+    method public final void cancelDragAndDrop();
+    method public void cancelLongPress();
+    method public final void cancelPendingInputEvents();
+    method public boolean checkInputConnectionProxy(android.view.View);
+    method public void clearAnimation();
+    method public void clearFocus();
+    method public static int combineMeasuredStates(int, int);
+    method protected int computeHorizontalScrollExtent();
+    method protected int computeHorizontalScrollOffset();
+    method protected int computeHorizontalScrollRange();
+    method public void computeScroll();
+    method public android.view.WindowInsets computeSystemWindowInsets(android.view.WindowInsets, android.graphics.Rect);
+    method protected int computeVerticalScrollExtent();
+    method protected int computeVerticalScrollOffset();
+    method protected int computeVerticalScrollRange();
+    method public android.view.accessibility.AccessibilityNodeInfo createAccessibilityNodeInfo();
+    method public void createContextMenu(android.view.ContextMenu);
+    method @Deprecated public void destroyDrawingCache();
+    method public android.view.WindowInsets dispatchApplyWindowInsets(android.view.WindowInsets);
+    method public boolean dispatchCapturedPointerEvent(android.view.MotionEvent);
+    method public void dispatchConfigurationChanged(android.content.res.Configuration);
+    method public void dispatchDisplayHint(int);
+    method public boolean dispatchDragEvent(android.view.DragEvent);
+    method protected void dispatchDraw(android.graphics.Canvas);
+    method public void dispatchDrawableHotspotChanged(float, float);
+    method @CallSuper public void dispatchFinishTemporaryDetach();
+    method protected boolean dispatchGenericFocusedEvent(android.view.MotionEvent);
+    method public boolean dispatchGenericMotionEvent(android.view.MotionEvent);
+    method protected boolean dispatchGenericPointerEvent(android.view.MotionEvent);
+    method protected boolean dispatchHoverEvent(android.view.MotionEvent);
+    method public boolean dispatchKeyEvent(android.view.KeyEvent);
+    method public boolean dispatchKeyEventPreIme(android.view.KeyEvent);
+    method public boolean dispatchKeyShortcutEvent(android.view.KeyEvent);
+    method public boolean dispatchNestedFling(float, float, boolean);
+    method public boolean dispatchNestedPreFling(float, float);
+    method public boolean dispatchNestedPrePerformAccessibilityAction(int, android.os.Bundle);
+    method public boolean dispatchNestedPreScroll(int, int, @Nullable @Size(2) int[], @Nullable @Size(2) int[]);
+    method public boolean dispatchNestedScroll(int, int, int, int, @Nullable @Size(2) int[]);
+    method public void dispatchPointerCaptureChanged(boolean);
+    method public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
+    method public void dispatchProvideAutofillStructure(@NonNull android.view.ViewStructure, int);
+    method public void dispatchProvideStructure(android.view.ViewStructure);
+    method protected void dispatchRestoreInstanceState(android.util.SparseArray<android.os.Parcelable>);
+    method protected void dispatchSaveInstanceState(android.util.SparseArray<android.os.Parcelable>);
+    method protected void dispatchSetActivated(boolean);
+    method protected void dispatchSetPressed(boolean);
+    method protected void dispatchSetSelected(boolean);
+    method @CallSuper public void dispatchStartTemporaryDetach();
+    method @Deprecated public void dispatchSystemUiVisibilityChanged(int);
+    method public boolean dispatchTouchEvent(android.view.MotionEvent);
+    method public boolean dispatchTrackballEvent(android.view.MotionEvent);
+    method public boolean dispatchUnhandledMove(android.view.View, int);
+    method protected void dispatchVisibilityChanged(@NonNull android.view.View, int);
+    method public void dispatchWindowFocusChanged(boolean);
+    method public void dispatchWindowInsetsAnimationEnd(@NonNull android.view.WindowInsetsAnimation);
+    method public void dispatchWindowInsetsAnimationPrepare(@NonNull android.view.WindowInsetsAnimation);
+    method @NonNull public android.view.WindowInsets dispatchWindowInsetsAnimationProgress(@NonNull android.view.WindowInsets, @NonNull java.util.List<android.view.WindowInsetsAnimation>);
+    method @NonNull public android.view.WindowInsetsAnimation.Bounds dispatchWindowInsetsAnimationStart(@NonNull android.view.WindowInsetsAnimation, @NonNull android.view.WindowInsetsAnimation.Bounds);
+    method @Deprecated public void dispatchWindowSystemUiVisiblityChanged(int);
+    method public void dispatchWindowVisibilityChanged(int);
+    method @CallSuper public void draw(android.graphics.Canvas);
+    method @CallSuper public void drawableHotspotChanged(float, float);
+    method @CallSuper protected void drawableStateChanged();
+    method public android.view.View findFocus();
+    method public final <T extends android.view.View> T findViewById(@IdRes int);
+    method public final <T extends android.view.View> T findViewWithTag(Object);
+    method public void findViewsWithText(java.util.ArrayList<android.view.View>, CharSequence, int);
+    method @Deprecated protected boolean fitSystemWindows(android.graphics.Rect);
+    method public android.view.View focusSearch(int);
+    method public void forceHasOverlappingRendering(boolean);
+    method public void forceLayout();
+    method public static int generateViewId();
+    method public CharSequence getAccessibilityClassName();
+    method public android.view.View.AccessibilityDelegate getAccessibilityDelegate();
+    method public int getAccessibilityLiveRegion();
+    method public android.view.accessibility.AccessibilityNodeProvider getAccessibilityNodeProvider();
+    method @Nullable public CharSequence getAccessibilityPaneTitle();
+    method @IdRes public int getAccessibilityTraversalAfter();
+    method @IdRes public int getAccessibilityTraversalBefore();
+    method public float getAlpha();
+    method public android.view.animation.Animation getAnimation();
+    method @Nullable public android.graphics.Matrix getAnimationMatrix();
+    method public android.os.IBinder getApplicationWindowToken();
+    method @NonNull public int[] getAttributeResolutionStack(@AttrRes int);
+    method @NonNull public java.util.Map<java.lang.Integer,java.lang.Integer> getAttributeSourceResourceMap();
+    method @Nullable public String[] getAutofillHints();
+    method public final android.view.autofill.AutofillId getAutofillId();
+    method public int getAutofillType();
+    method @Nullable public android.view.autofill.AutofillValue getAutofillValue();
+    method public android.graphics.drawable.Drawable getBackground();
+    method @Nullable public android.graphics.BlendMode getBackgroundTintBlendMode();
+    method @Nullable public android.content.res.ColorStateList getBackgroundTintList();
+    method @Nullable public android.graphics.PorterDuff.Mode getBackgroundTintMode();
+    method public int getBaseline();
+    method public final int getBottom();
+    method protected float getBottomFadingEdgeStrength();
+    method protected int getBottomPaddingOffset();
+    method public float getCameraDistance();
+    method public android.graphics.Rect getClipBounds();
+    method public boolean getClipBounds(android.graphics.Rect);
+    method public final boolean getClipToOutline();
+    method @Nullable public final android.view.contentcapture.ContentCaptureSession getContentCaptureSession();
+    method public CharSequence getContentDescription();
+    method public final android.content.Context getContext();
+    method protected android.view.ContextMenu.ContextMenuInfo getContextMenuInfo();
+    method public final boolean getDefaultFocusHighlightEnabled();
+    method public static int getDefaultSize(int, int);
+    method public android.view.Display getDisplay();
+    method public final int[] getDrawableState();
+    method @Deprecated public android.graphics.Bitmap getDrawingCache();
+    method @Deprecated public android.graphics.Bitmap getDrawingCache(boolean);
+    method @Deprecated @ColorInt public int getDrawingCacheBackgroundColor();
+    method @Deprecated public int getDrawingCacheQuality();
+    method public void getDrawingRect(android.graphics.Rect);
+    method public long getDrawingTime();
+    method public float getElevation();
+    method @StyleRes public int getExplicitStyle();
+    method public boolean getFilterTouchesWhenObscured();
+    method public boolean getFitsSystemWindows();
+    method public int getFocusable();
+    method public java.util.ArrayList<android.view.View> getFocusables(int);
+    method public void getFocusedRect(android.graphics.Rect);
+    method public android.graphics.drawable.Drawable getForeground();
+    method public int getForegroundGravity();
+    method @Nullable public android.graphics.BlendMode getForegroundTintBlendMode();
+    method @Nullable public android.content.res.ColorStateList getForegroundTintList();
+    method @Nullable public android.graphics.PorterDuff.Mode getForegroundTintMode();
+    method public boolean getGlobalVisibleRect(android.graphics.Rect, android.graphics.Point);
+    method public final boolean getGlobalVisibleRect(android.graphics.Rect);
+    method public android.os.Handler getHandler();
+    method public final boolean getHasOverlappingRendering();
+    method public final int getHeight();
+    method public void getHitRect(android.graphics.Rect);
+    method public int getHorizontalFadingEdgeLength();
+    method protected int getHorizontalScrollbarHeight();
+    method @Nullable public android.graphics.drawable.Drawable getHorizontalScrollbarThumbDrawable();
+    method @Nullable public android.graphics.drawable.Drawable getHorizontalScrollbarTrackDrawable();
+    method @IdRes public int getId();
+    method public int getImportantForAccessibility();
+    method public int getImportantForAutofill();
+    method public int getImportantForContentCapture();
+    method public boolean getKeepScreenOn();
+    method public android.view.KeyEvent.DispatcherState getKeyDispatcherState();
+    method @IdRes public int getLabelFor();
+    method public int getLayerType();
+    method public int getLayoutDirection();
+    method public android.view.ViewGroup.LayoutParams getLayoutParams();
+    method public final int getLeft();
+    method protected float getLeftFadingEdgeStrength();
+    method protected int getLeftPaddingOffset();
+    method public final boolean getLocalVisibleRect(android.graphics.Rect);
+    method public void getLocationInSurface(@NonNull @Size(2) int[]);
+    method public void getLocationInWindow(@Size(2) int[]);
+    method public void getLocationOnScreen(@Size(2) int[]);
+    method public android.graphics.Matrix getMatrix();
+    method public final int getMeasuredHeight();
+    method public final int getMeasuredHeightAndState();
+    method public final int getMeasuredState();
+    method public final int getMeasuredWidth();
+    method public final int getMeasuredWidthAndState();
+    method public int getMinimumHeight();
+    method public int getMinimumWidth();
+    method @IdRes public int getNextClusterForwardId();
+    method @IdRes public int getNextFocusDownId();
+    method @IdRes public int getNextFocusForwardId();
+    method @IdRes public int getNextFocusLeftId();
+    method @IdRes public int getNextFocusRightId();
+    method @IdRes public int getNextFocusUpId();
+    method public android.view.View.OnFocusChangeListener getOnFocusChangeListener();
+    method @ColorInt public int getOutlineAmbientShadowColor();
+    method public android.view.ViewOutlineProvider getOutlineProvider();
+    method @ColorInt public int getOutlineSpotShadowColor();
+    method public int getOverScrollMode();
+    method public android.view.ViewOverlay getOverlay();
+    method public int getPaddingBottom();
+    method public int getPaddingEnd();
+    method public int getPaddingLeft();
+    method public int getPaddingRight();
+    method public int getPaddingStart();
+    method public int getPaddingTop();
+    method public final android.view.ViewParent getParent();
+    method public android.view.ViewParent getParentForAccessibility();
+    method public float getPivotX();
+    method public float getPivotY();
+    method public android.view.PointerIcon getPointerIcon();
+    method public android.content.res.Resources getResources();
+    method public final boolean getRevealOnFocusHint();
+    method public final int getRight();
+    method protected float getRightFadingEdgeStrength();
+    method protected int getRightPaddingOffset();
+    method public android.view.View getRootView();
+    method public android.view.WindowInsets getRootWindowInsets();
+    method public float getRotation();
+    method public float getRotationX();
+    method public float getRotationY();
+    method public float getScaleX();
+    method public float getScaleY();
+    method public int getScrollBarDefaultDelayBeforeFade();
+    method public int getScrollBarFadeDuration();
+    method public int getScrollBarSize();
+    method public int getScrollBarStyle();
+    method public int getScrollIndicators();
+    method public final int getScrollX();
+    method public final int getScrollY();
+    method @ColorInt public int getSolidColor();
+    method @LayoutRes public int getSourceLayoutResId();
+    method @Nullable public final CharSequence getStateDescription();
+    method public android.animation.StateListAnimator getStateListAnimator();
+    method protected int getSuggestedMinimumHeight();
+    method protected int getSuggestedMinimumWidth();
+    method @NonNull public java.util.List<android.graphics.Rect> getSystemGestureExclusionRects();
+    method @Deprecated public int getSystemUiVisibility();
+    method public Object getTag();
+    method public Object getTag(int);
+    method public int getTextAlignment();
+    method public int getTextDirection();
+    method @Nullable public CharSequence getTooltipText();
+    method public final int getTop();
+    method protected float getTopFadingEdgeStrength();
+    method protected int getTopPaddingOffset();
+    method public android.view.TouchDelegate getTouchDelegate();
+    method public java.util.ArrayList<android.view.View> getTouchables();
+    method public float getTransitionAlpha();
+    method public String getTransitionName();
+    method public float getTranslationX();
+    method public float getTranslationY();
+    method public float getTranslationZ();
+    method public long getUniqueDrawingId();
+    method public int getVerticalFadingEdgeLength();
+    method public int getVerticalScrollbarPosition();
+    method @Nullable public android.graphics.drawable.Drawable getVerticalScrollbarThumbDrawable();
+    method @Nullable public android.graphics.drawable.Drawable getVerticalScrollbarTrackDrawable();
+    method public int getVerticalScrollbarWidth();
+    method public android.view.ViewTreeObserver getViewTreeObserver();
+    method public int getVisibility();
+    method public final int getWidth();
+    method protected int getWindowAttachCount();
+    method public android.view.WindowId getWindowId();
+    method @Nullable public android.view.WindowInsetsController getWindowInsetsController();
+    method @Deprecated public int getWindowSystemUiVisibility();
+    method public android.os.IBinder getWindowToken();
+    method public int getWindowVisibility();
+    method public void getWindowVisibleDisplayFrame(android.graphics.Rect);
+    method public float getX();
+    method public float getY();
+    method public float getZ();
+    method public boolean hasExplicitFocusable();
+    method public boolean hasFocus();
+    method public boolean hasFocusable();
+    method public boolean hasNestedScrollingParent();
+    method public boolean hasOnClickListeners();
+    method public boolean hasOnLongClickListeners();
+    method public boolean hasOverlappingRendering();
+    method public boolean hasPointerCapture();
+    method public boolean hasTransientState();
+    method public boolean hasWindowFocus();
+    method public static android.view.View inflate(android.content.Context, @LayoutRes int, android.view.ViewGroup);
+    method @Deprecated public void invalidate(android.graphics.Rect);
+    method @Deprecated public void invalidate(int, int, int, int);
+    method public void invalidate();
+    method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
+    method public void invalidateOutline();
+    method public boolean isAccessibilityFocused();
+    method public boolean isAccessibilityHeading();
+    method public boolean isActivated();
+    method public boolean isAttachedToWindow();
+    method public boolean isClickable();
+    method public boolean isContextClickable();
+    method public boolean isDirty();
+    method @Deprecated public boolean isDrawingCacheEnabled();
+    method public boolean isDuplicateParentStateEnabled();
+    method public boolean isEnabled();
+    method public final boolean isFocusable();
+    method public final boolean isFocusableInTouchMode();
+    method public boolean isFocused();
+    method public final boolean isFocusedByDefault();
+    method public boolean isForceDarkAllowed();
+    method public boolean isHapticFeedbackEnabled();
+    method public boolean isHardwareAccelerated();
+    method public boolean isHorizontalFadingEdgeEnabled();
+    method public boolean isHorizontalScrollBarEnabled();
+    method public boolean isHovered();
+    method public boolean isImportantForAccessibility();
+    method public final boolean isImportantForAutofill();
+    method public final boolean isImportantForContentCapture();
+    method public boolean isInEditMode();
+    method public boolean isInLayout();
+    method public boolean isInTouchMode();
+    method public final boolean isKeyboardNavigationCluster();
+    method public boolean isLaidOut();
+    method public boolean isLayoutDirectionResolved();
+    method public boolean isLayoutRequested();
+    method public boolean isLongClickable();
+    method public boolean isNestedScrollingEnabled();
+    method public boolean isOpaque();
+    method protected boolean isPaddingOffsetRequired();
+    method public boolean isPaddingRelative();
+    method public boolean isPivotSet();
+    method public boolean isPressed();
+    method public boolean isSaveEnabled();
+    method public boolean isSaveFromParentEnabled();
+    method public boolean isScreenReaderFocusable();
+    method public boolean isScrollContainer();
+    method public boolean isScrollbarFadingEnabled();
+    method public boolean isSelected();
+    method public final boolean isShowingLayoutBounds();
+    method public boolean isShown();
+    method public boolean isSoundEffectsEnabled();
+    method public final boolean isTemporarilyDetached();
+    method public boolean isTextAlignmentResolved();
+    method public boolean isTextDirectionResolved();
+    method public boolean isVerticalFadingEdgeEnabled();
+    method public boolean isVerticalScrollBarEnabled();
+    method public boolean isVisibleToUserForAutofill(int);
+    method @CallSuper public void jumpDrawablesToCurrentState();
+    method public android.view.View keyboardNavigationClusterSearch(android.view.View, int);
+    method public void layout(int, int, int, int);
+    method public final void measure(int, int);
+    method protected static int[] mergeDrawableStates(int[], int[]);
+    method public void offsetLeftAndRight(int);
+    method public void offsetTopAndBottom(int);
+    method @CallSuper protected void onAnimationEnd();
+    method @CallSuper protected void onAnimationStart();
+    method public android.view.WindowInsets onApplyWindowInsets(android.view.WindowInsets);
+    method @CallSuper protected void onAttachedToWindow();
+    method public void onCancelPendingInputEvents();
+    method public boolean onCapturedPointerEvent(android.view.MotionEvent);
+    method public boolean onCheckIsTextEditor();
+    method protected void onConfigurationChanged(android.content.res.Configuration);
+    method protected void onCreateContextMenu(android.view.ContextMenu);
+    method protected int[] onCreateDrawableState(int);
+    method public android.view.inputmethod.InputConnection onCreateInputConnection(android.view.inputmethod.EditorInfo);
+    method @CallSuper protected void onDetachedFromWindow();
+    method protected void onDisplayHint(int);
+    method public boolean onDragEvent(android.view.DragEvent);
+    method protected void onDraw(android.graphics.Canvas);
+    method public void onDrawForeground(android.graphics.Canvas);
+    method protected final void onDrawScrollBars(android.graphics.Canvas);
+    method public boolean onFilterTouchEventForSecurity(android.view.MotionEvent);
+    method @CallSuper protected void onFinishInflate();
+    method public void onFinishTemporaryDetach();
+    method @CallSuper protected void onFocusChanged(boolean, int, @Nullable android.graphics.Rect);
+    method public boolean onGenericMotionEvent(android.view.MotionEvent);
+    method public void onHoverChanged(boolean);
+    method public boolean onHoverEvent(android.view.MotionEvent);
+    method @CallSuper public void onInitializeAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
+    method @CallSuper public void onInitializeAccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo);
+    method public boolean onKeyDown(int, android.view.KeyEvent);
+    method public boolean onKeyLongPress(int, android.view.KeyEvent);
+    method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
+    method public boolean onKeyPreIme(int, android.view.KeyEvent);
+    method public boolean onKeyShortcut(int, android.view.KeyEvent);
+    method public boolean onKeyUp(int, android.view.KeyEvent);
+    method protected void onLayout(boolean, int, int, int, int);
+    method protected void onMeasure(int, int);
+    method protected void onOverScrolled(int, int, boolean, boolean);
+    method @CallSuper public void onPointerCaptureChange(boolean);
+    method @CallSuper public void onPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
+    method public void onProvideAutofillStructure(android.view.ViewStructure, int);
+    method public void onProvideAutofillVirtualStructure(android.view.ViewStructure, int);
+    method public void onProvideContentCaptureStructure(@NonNull android.view.ViewStructure, int);
+    method public void onProvideStructure(android.view.ViewStructure);
+    method public void onProvideVirtualStructure(android.view.ViewStructure);
+    method public android.view.PointerIcon onResolvePointerIcon(android.view.MotionEvent, int);
+    method @CallSuper protected void onRestoreInstanceState(android.os.Parcelable);
+    method public void onRtlPropertiesChanged(int);
+    method @CallSuper @Nullable protected android.os.Parcelable onSaveInstanceState();
+    method public void onScreenStateChanged(int);
+    method protected void onScrollChanged(int, int, int, int);
+    method protected boolean onSetAlpha(int);
+    method protected void onSizeChanged(int, int, int, int);
+    method public void onStartTemporaryDetach();
+    method public boolean onTouchEvent(android.view.MotionEvent);
+    method public boolean onTrackballEvent(android.view.MotionEvent);
+    method @CallSuper public void onVisibilityAggregated(boolean);
+    method protected void onVisibilityChanged(@NonNull android.view.View, int);
+    method public void onWindowFocusChanged(boolean);
+    method @Deprecated public void onWindowSystemUiVisibilityChanged(int);
+    method protected void onWindowVisibilityChanged(int);
+    method protected boolean overScrollBy(int, int, int, int, int, int, int, int, boolean);
+    method public boolean performAccessibilityAction(int, android.os.Bundle);
+    method public boolean performClick();
+    method public boolean performContextClick(float, float);
+    method public boolean performContextClick();
+    method public boolean performHapticFeedback(int);
+    method public boolean performHapticFeedback(int, int);
+    method public boolean performLongClick();
+    method public boolean performLongClick(float, float);
+    method public void playSoundEffect(int);
+    method public boolean post(Runnable);
+    method public boolean postDelayed(Runnable, long);
+    method public void postInvalidate();
+    method public void postInvalidate(int, int, int, int);
+    method public void postInvalidateDelayed(long);
+    method public void postInvalidateDelayed(long, int, int, int, int);
+    method public void postInvalidateOnAnimation();
+    method public void postInvalidateOnAnimation(int, int, int, int);
+    method public void postOnAnimation(Runnable);
+    method public void postOnAnimationDelayed(Runnable, long);
+    method public void refreshDrawableState();
+    method public void releasePointerCapture();
+    method public boolean removeCallbacks(Runnable);
+    method public void removeOnAttachStateChangeListener(android.view.View.OnAttachStateChangeListener);
+    method public void removeOnLayoutChangeListener(android.view.View.OnLayoutChangeListener);
+    method public void removeOnUnhandledKeyEventListener(android.view.View.OnUnhandledKeyEventListener);
+    method public void requestApplyInsets();
+    method @Deprecated public void requestFitSystemWindows();
+    method public final boolean requestFocus();
+    method public final boolean requestFocus(int);
+    method public boolean requestFocus(int, android.graphics.Rect);
+    method public final boolean requestFocusFromTouch();
+    method @CallSuper public void requestLayout();
+    method public void requestPointerCapture();
+    method public boolean requestRectangleOnScreen(android.graphics.Rect);
+    method public boolean requestRectangleOnScreen(android.graphics.Rect, boolean);
+    method public final void requestUnbufferedDispatch(android.view.MotionEvent);
+    method public final void requestUnbufferedDispatch(int);
+    method @NonNull public final <T extends android.view.View> T requireViewById(@IdRes int);
+    method public void resetPivot();
+    method public static int resolveSize(int, int);
+    method public static int resolveSizeAndState(int, int, int);
+    method public boolean restoreDefaultFocus();
+    method public void restoreHierarchyState(android.util.SparseArray<android.os.Parcelable>);
+    method public final void saveAttributeDataForStyleable(@NonNull android.content.Context, @NonNull int[], @Nullable android.util.AttributeSet, @NonNull android.content.res.TypedArray, int, int);
+    method public void saveHierarchyState(android.util.SparseArray<android.os.Parcelable>);
+    method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
+    method public void scrollBy(int, int);
+    method public void scrollTo(int, int);
+    method public void sendAccessibilityEvent(int);
+    method public void sendAccessibilityEventUnchecked(android.view.accessibility.AccessibilityEvent);
+    method public void setAccessibilityDelegate(@Nullable android.view.View.AccessibilityDelegate);
+    method public void setAccessibilityHeading(boolean);
+    method public void setAccessibilityLiveRegion(int);
+    method public void setAccessibilityPaneTitle(@Nullable CharSequence);
+    method public void setAccessibilityTraversalAfter(@IdRes int);
+    method public void setAccessibilityTraversalBefore(@IdRes int);
+    method public void setActivated(boolean);
+    method public void setAlpha(@FloatRange(from=0.0, to=1.0) float);
+    method public void setAnimation(android.view.animation.Animation);
+    method public void setAnimationMatrix(@Nullable android.graphics.Matrix);
+    method public void setAutofillHints(@Nullable java.lang.String...);
+    method public void setAutofillId(@Nullable android.view.autofill.AutofillId);
+    method public void setBackground(android.graphics.drawable.Drawable);
+    method public void setBackgroundColor(@ColorInt int);
+    method @Deprecated public void setBackgroundDrawable(android.graphics.drawable.Drawable);
+    method public void setBackgroundResource(@DrawableRes int);
+    method public void setBackgroundTintBlendMode(@Nullable android.graphics.BlendMode);
+    method public void setBackgroundTintList(@Nullable android.content.res.ColorStateList);
+    method public void setBackgroundTintMode(@Nullable android.graphics.PorterDuff.Mode);
+    method public final void setBottom(int);
+    method public void setCameraDistance(float);
+    method public void setClickable(boolean);
+    method public void setClipBounds(android.graphics.Rect);
+    method public void setClipToOutline(boolean);
+    method public void setContentCaptureSession(@Nullable android.view.contentcapture.ContentCaptureSession);
+    method public void setContentDescription(CharSequence);
+    method public void setContextClickable(boolean);
+    method public void setDefaultFocusHighlightEnabled(boolean);
+    method @Deprecated public void setDrawingCacheBackgroundColor(@ColorInt int);
+    method @Deprecated public void setDrawingCacheEnabled(boolean);
+    method @Deprecated public void setDrawingCacheQuality(int);
+    method public void setDuplicateParentStateEnabled(boolean);
+    method public void setElevation(float);
+    method public void setEnabled(boolean);
+    method public void setFadingEdgeLength(int);
+    method public void setFilterTouchesWhenObscured(boolean);
+    method public void setFitsSystemWindows(boolean);
+    method public void setFocusable(boolean);
+    method public void setFocusable(int);
+    method public void setFocusableInTouchMode(boolean);
+    method public void setFocusedByDefault(boolean);
+    method public void setForceDarkAllowed(boolean);
+    method public void setForeground(android.graphics.drawable.Drawable);
+    method public void setForegroundGravity(int);
+    method public void setForegroundTintBlendMode(@Nullable android.graphics.BlendMode);
+    method public void setForegroundTintList(@Nullable android.content.res.ColorStateList);
+    method public void setForegroundTintMode(@Nullable android.graphics.PorterDuff.Mode);
+    method public void setHapticFeedbackEnabled(boolean);
+    method public void setHasTransientState(boolean);
+    method public void setHorizontalFadingEdgeEnabled(boolean);
+    method public void setHorizontalScrollBarEnabled(boolean);
+    method public void setHorizontalScrollbarThumbDrawable(@Nullable android.graphics.drawable.Drawable);
+    method public void setHorizontalScrollbarTrackDrawable(@Nullable android.graphics.drawable.Drawable);
+    method public void setHovered(boolean);
+    method public void setId(@IdRes int);
+    method public void setImportantForAccessibility(int);
+    method public void setImportantForAutofill(int);
+    method public void setImportantForContentCapture(int);
+    method public void setKeepScreenOn(boolean);
+    method public void setKeyboardNavigationCluster(boolean);
+    method public void setLabelFor(@IdRes int);
+    method public void setLayerPaint(@Nullable android.graphics.Paint);
+    method public void setLayerType(int, @Nullable android.graphics.Paint);
+    method public void setLayoutDirection(int);
+    method public void setLayoutParams(android.view.ViewGroup.LayoutParams);
+    method public final void setLeft(int);
+    method public final void setLeftTopRightBottom(int, int, int, int);
+    method public void setLongClickable(boolean);
+    method protected final void setMeasuredDimension(int, int);
+    method public void setMinimumHeight(int);
+    method public void setMinimumWidth(int);
+    method public void setNestedScrollingEnabled(boolean);
+    method public void setNextClusterForwardId(@IdRes int);
+    method public void setNextFocusDownId(@IdRes int);
+    method public void setNextFocusForwardId(@IdRes int);
+    method public void setNextFocusLeftId(@IdRes int);
+    method public void setNextFocusRightId(@IdRes int);
+    method public void setNextFocusUpId(@IdRes int);
+    method public void setOnApplyWindowInsetsListener(android.view.View.OnApplyWindowInsetsListener);
+    method public void setOnCapturedPointerListener(android.view.View.OnCapturedPointerListener);
+    method public void setOnClickListener(@Nullable android.view.View.OnClickListener);
+    method public void setOnContextClickListener(@Nullable android.view.View.OnContextClickListener);
+    method public void setOnCreateContextMenuListener(android.view.View.OnCreateContextMenuListener);
+    method public void setOnDragListener(android.view.View.OnDragListener);
+    method public void setOnFocusChangeListener(android.view.View.OnFocusChangeListener);
+    method public void setOnGenericMotionListener(android.view.View.OnGenericMotionListener);
+    method public void setOnHoverListener(android.view.View.OnHoverListener);
+    method public void setOnKeyListener(android.view.View.OnKeyListener);
+    method public void setOnLongClickListener(@Nullable android.view.View.OnLongClickListener);
+    method public void setOnScrollChangeListener(android.view.View.OnScrollChangeListener);
+    method @Deprecated public void setOnSystemUiVisibilityChangeListener(android.view.View.OnSystemUiVisibilityChangeListener);
+    method public void setOnTouchListener(android.view.View.OnTouchListener);
+    method public void setOutlineAmbientShadowColor(@ColorInt int);
+    method public void setOutlineProvider(android.view.ViewOutlineProvider);
+    method public void setOutlineSpotShadowColor(@ColorInt int);
+    method public void setOverScrollMode(int);
+    method public void setPadding(int, int, int, int);
+    method public void setPaddingRelative(int, int, int, int);
+    method public void setPivotX(float);
+    method public void setPivotY(float);
+    method public void setPointerIcon(android.view.PointerIcon);
+    method public void setPressed(boolean);
+    method public final void setRevealOnFocusHint(boolean);
+    method public final void setRight(int);
+    method public void setRotation(float);
+    method public void setRotationX(float);
+    method public void setRotationY(float);
+    method public void setSaveEnabled(boolean);
+    method public void setSaveFromParentEnabled(boolean);
+    method public void setScaleX(float);
+    method public void setScaleY(float);
+    method public void setScreenReaderFocusable(boolean);
+    method public void setScrollBarDefaultDelayBeforeFade(int);
+    method public void setScrollBarFadeDuration(int);
+    method public void setScrollBarSize(int);
+    method public void setScrollBarStyle(int);
+    method public void setScrollContainer(boolean);
+    method public void setScrollIndicators(int);
+    method public void setScrollIndicators(int, int);
+    method public void setScrollX(int);
+    method public void setScrollY(int);
+    method public void setScrollbarFadingEnabled(boolean);
+    method public void setSelected(boolean);
+    method public void setSoundEffectsEnabled(boolean);
+    method public void setStateDescription(@Nullable CharSequence);
+    method public void setStateListAnimator(android.animation.StateListAnimator);
+    method public void setSystemGestureExclusionRects(@NonNull java.util.List<android.graphics.Rect>);
+    method @Deprecated public void setSystemUiVisibility(int);
+    method public void setTag(Object);
+    method public void setTag(int, Object);
+    method public void setTextAlignment(int);
+    method public void setTextDirection(int);
+    method public void setTooltipText(@Nullable CharSequence);
+    method public final void setTop(int);
+    method public void setTouchDelegate(android.view.TouchDelegate);
+    method public void setTransitionAlpha(float);
+    method public final void setTransitionName(String);
+    method public void setTransitionVisibility(int);
+    method public void setTranslationX(float);
+    method public void setTranslationY(float);
+    method public void setTranslationZ(float);
+    method public void setVerticalFadingEdgeEnabled(boolean);
+    method public void setVerticalScrollBarEnabled(boolean);
+    method public void setVerticalScrollbarPosition(int);
+    method public void setVerticalScrollbarThumbDrawable(@Nullable android.graphics.drawable.Drawable);
+    method public void setVerticalScrollbarTrackDrawable(@Nullable android.graphics.drawable.Drawable);
+    method public void setVisibility(int);
+    method @Deprecated public void setWillNotCacheDrawing(boolean);
+    method public void setWillNotDraw(boolean);
+    method public void setWindowInsetsAnimationCallback(@Nullable android.view.WindowInsetsAnimation.Callback);
+    method public void setX(float);
+    method public void setY(float);
+    method public void setZ(float);
+    method public boolean showContextMenu();
+    method public boolean showContextMenu(float, float);
+    method public android.view.ActionMode startActionMode(android.view.ActionMode.Callback);
+    method public android.view.ActionMode startActionMode(android.view.ActionMode.Callback, int);
+    method public void startAnimation(android.view.animation.Animation);
+    method @Deprecated public final boolean startDrag(android.content.ClipData, android.view.View.DragShadowBuilder, Object, int);
+    method public final boolean startDragAndDrop(android.content.ClipData, android.view.View.DragShadowBuilder, Object, int);
+    method public boolean startNestedScroll(int);
+    method public void stopNestedScroll();
+    method public void transformMatrixToGlobal(@NonNull android.graphics.Matrix);
+    method public void transformMatrixToLocal(@NonNull android.graphics.Matrix);
+    method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
+    method public void unscheduleDrawable(android.graphics.drawable.Drawable);
+    method public final void updateDragShadow(android.view.View.DragShadowBuilder);
+    method @CallSuper protected boolean verifyDrawable(@NonNull android.graphics.drawable.Drawable);
+    method @Deprecated public boolean willNotCacheDrawing();
+    method public boolean willNotDraw();
+    field public static final int ACCESSIBILITY_LIVE_REGION_ASSERTIVE = 2; // 0x2
+    field public static final int ACCESSIBILITY_LIVE_REGION_NONE = 0; // 0x0
+    field public static final int ACCESSIBILITY_LIVE_REGION_POLITE = 1; // 0x1
+    field public static final android.util.Property<android.view.View,java.lang.Float> ALPHA;
+    field public static final int AUTOFILL_FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 1; // 0x1
+    field public static final String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE = "creditCardExpirationDate";
+    field public static final String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DAY = "creditCardExpirationDay";
+    field public static final String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH = "creditCardExpirationMonth";
+    field public static final String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR = "creditCardExpirationYear";
+    field public static final String AUTOFILL_HINT_CREDIT_CARD_NUMBER = "creditCardNumber";
+    field public static final String AUTOFILL_HINT_CREDIT_CARD_SECURITY_CODE = "creditCardSecurityCode";
+    field public static final String AUTOFILL_HINT_EMAIL_ADDRESS = "emailAddress";
+    field public static final String AUTOFILL_HINT_NAME = "name";
+    field public static final String AUTOFILL_HINT_PASSWORD = "password";
+    field public static final String AUTOFILL_HINT_PHONE = "phone";
+    field public static final String AUTOFILL_HINT_POSTAL_ADDRESS = "postalAddress";
+    field public static final String AUTOFILL_HINT_POSTAL_CODE = "postalCode";
+    field public static final String AUTOFILL_HINT_USERNAME = "username";
+    field public static final int AUTOFILL_TYPE_DATE = 4; // 0x4
+    field public static final int AUTOFILL_TYPE_LIST = 3; // 0x3
+    field public static final int AUTOFILL_TYPE_NONE = 0; // 0x0
+    field public static final int AUTOFILL_TYPE_TEXT = 1; // 0x1
+    field public static final int AUTOFILL_TYPE_TOGGLE = 2; // 0x2
+    field public static final int DRAG_FLAG_GLOBAL = 256; // 0x100
+    field public static final int DRAG_FLAG_GLOBAL_PERSISTABLE_URI_PERMISSION = 64; // 0x40
+    field public static final int DRAG_FLAG_GLOBAL_PREFIX_URI_PERMISSION = 128; // 0x80
+    field public static final int DRAG_FLAG_GLOBAL_URI_READ = 1; // 0x1
+    field public static final int DRAG_FLAG_GLOBAL_URI_WRITE = 2; // 0x2
+    field public static final int DRAG_FLAG_OPAQUE = 512; // 0x200
+    field @Deprecated public static final int DRAWING_CACHE_QUALITY_AUTO = 0; // 0x0
+    field @Deprecated public static final int DRAWING_CACHE_QUALITY_HIGH = 1048576; // 0x100000
+    field @Deprecated public static final int DRAWING_CACHE_QUALITY_LOW = 524288; // 0x80000
+    field protected static final int[] EMPTY_STATE_SET;
+    field protected static final int[] ENABLED_FOCUSED_SELECTED_STATE_SET;
+    field protected static final int[] ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
+    field protected static final int[] ENABLED_FOCUSED_STATE_SET;
+    field protected static final int[] ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET;
+    field protected static final int[] ENABLED_SELECTED_STATE_SET;
+    field protected static final int[] ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET;
+    field protected static final int[] ENABLED_STATE_SET;
+    field protected static final int[] ENABLED_WINDOW_FOCUSED_STATE_SET;
+    field public static final int FIND_VIEWS_WITH_CONTENT_DESCRIPTION = 2; // 0x2
+    field public static final int FIND_VIEWS_WITH_TEXT = 1; // 0x1
+    field public static final int FOCUSABLE = 1; // 0x1
+    field public static final int FOCUSABLES_ALL = 0; // 0x0
+    field public static final int FOCUSABLES_TOUCH_MODE = 1; // 0x1
+    field public static final int FOCUSABLE_AUTO = 16; // 0x10
+    field protected static final int[] FOCUSED_SELECTED_STATE_SET;
+    field protected static final int[] FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
+    field protected static final int[] FOCUSED_STATE_SET;
+    field protected static final int[] FOCUSED_WINDOW_FOCUSED_STATE_SET;
+    field public static final int FOCUS_BACKWARD = 1; // 0x1
+    field public static final int FOCUS_DOWN = 130; // 0x82
+    field public static final int FOCUS_FORWARD = 2; // 0x2
+    field public static final int FOCUS_LEFT = 17; // 0x11
+    field public static final int FOCUS_RIGHT = 66; // 0x42
+    field public static final int FOCUS_UP = 33; // 0x21
+    field public static final int GONE = 8; // 0x8
+    field public static final int HAPTIC_FEEDBACK_ENABLED = 268435456; // 0x10000000
+    field public static final int IMPORTANT_FOR_ACCESSIBILITY_AUTO = 0; // 0x0
+    field public static final int IMPORTANT_FOR_ACCESSIBILITY_NO = 2; // 0x2
+    field public static final int IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS = 4; // 0x4
+    field public static final int IMPORTANT_FOR_ACCESSIBILITY_YES = 1; // 0x1
+    field public static final int IMPORTANT_FOR_AUTOFILL_AUTO = 0; // 0x0
+    field public static final int IMPORTANT_FOR_AUTOFILL_NO = 2; // 0x2
+    field public static final int IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS = 8; // 0x8
+    field public static final int IMPORTANT_FOR_AUTOFILL_YES = 1; // 0x1
+    field public static final int IMPORTANT_FOR_AUTOFILL_YES_EXCLUDE_DESCENDANTS = 4; // 0x4
+    field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_AUTO = 0; // 0x0
+    field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_NO = 2; // 0x2
+    field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS = 8; // 0x8
+    field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_YES = 1; // 0x1
+    field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS = 4; // 0x4
+    field public static final int INVISIBLE = 4; // 0x4
+    field public static final int KEEP_SCREEN_ON = 67108864; // 0x4000000
+    field public static final int LAYER_TYPE_HARDWARE = 2; // 0x2
+    field public static final int LAYER_TYPE_NONE = 0; // 0x0
+    field public static final int LAYER_TYPE_SOFTWARE = 1; // 0x1
+    field public static final int LAYOUT_DIRECTION_INHERIT = 2; // 0x2
+    field public static final int LAYOUT_DIRECTION_LOCALE = 3; // 0x3
+    field public static final int LAYOUT_DIRECTION_LTR = 0; // 0x0
+    field public static final int LAYOUT_DIRECTION_RTL = 1; // 0x1
+    field public static final int MEASURED_HEIGHT_STATE_SHIFT = 16; // 0x10
+    field public static final int MEASURED_SIZE_MASK = 16777215; // 0xffffff
+    field public static final int MEASURED_STATE_MASK = -16777216; // 0xff000000
+    field public static final int MEASURED_STATE_TOO_SMALL = 16777216; // 0x1000000
+    field public static final int NOT_FOCUSABLE = 0; // 0x0
+    field public static final int NO_ID = -1; // 0xffffffff
+    field public static final int OVER_SCROLL_ALWAYS = 0; // 0x0
+    field public static final int OVER_SCROLL_IF_CONTENT_SCROLLS = 1; // 0x1
+    field public static final int OVER_SCROLL_NEVER = 2; // 0x2
+    field protected static final int[] PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET;
+    field protected static final int[] PRESSED_ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
+    field protected static final int[] PRESSED_ENABLED_FOCUSED_STATE_SET;
+    field protected static final int[] PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET;
+    field protected static final int[] PRESSED_ENABLED_SELECTED_STATE_SET;
+    field protected static final int[] PRESSED_ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET;
+    field protected static final int[] PRESSED_ENABLED_STATE_SET;
+    field protected static final int[] PRESSED_ENABLED_WINDOW_FOCUSED_STATE_SET;
+    field protected static final int[] PRESSED_FOCUSED_SELECTED_STATE_SET;
+    field protected static final int[] PRESSED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
+    field protected static final int[] PRESSED_FOCUSED_STATE_SET;
+    field protected static final int[] PRESSED_FOCUSED_WINDOW_FOCUSED_STATE_SET;
+    field protected static final int[] PRESSED_SELECTED_STATE_SET;
+    field protected static final int[] PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
+    field protected static final int[] PRESSED_STATE_SET;
+    field protected static final int[] PRESSED_WINDOW_FOCUSED_STATE_SET;
+    field public static final android.util.Property<android.view.View,java.lang.Float> ROTATION;
+    field public static final android.util.Property<android.view.View,java.lang.Float> ROTATION_X;
+    field public static final android.util.Property<android.view.View,java.lang.Float> ROTATION_Y;
+    field public static final android.util.Property<android.view.View,java.lang.Float> SCALE_X;
+    field public static final android.util.Property<android.view.View,java.lang.Float> SCALE_Y;
+    field public static final int SCREEN_STATE_OFF = 0; // 0x0
+    field public static final int SCREEN_STATE_ON = 1; // 0x1
+    field public static final int SCROLLBARS_INSIDE_INSET = 16777216; // 0x1000000
+    field public static final int SCROLLBARS_INSIDE_OVERLAY = 0; // 0x0
+    field public static final int SCROLLBARS_OUTSIDE_INSET = 50331648; // 0x3000000
+    field public static final int SCROLLBARS_OUTSIDE_OVERLAY = 33554432; // 0x2000000
+    field public static final int SCROLLBAR_POSITION_DEFAULT = 0; // 0x0
+    field public static final int SCROLLBAR_POSITION_LEFT = 1; // 0x1
+    field public static final int SCROLLBAR_POSITION_RIGHT = 2; // 0x2
+    field public static final int SCROLL_AXIS_HORIZONTAL = 1; // 0x1
+    field public static final int SCROLL_AXIS_NONE = 0; // 0x0
+    field public static final int SCROLL_AXIS_VERTICAL = 2; // 0x2
+    field public static final int SCROLL_INDICATOR_BOTTOM = 2; // 0x2
+    field public static final int SCROLL_INDICATOR_END = 32; // 0x20
+    field public static final int SCROLL_INDICATOR_LEFT = 4; // 0x4
+    field public static final int SCROLL_INDICATOR_RIGHT = 8; // 0x8
+    field public static final int SCROLL_INDICATOR_START = 16; // 0x10
+    field public static final int SCROLL_INDICATOR_TOP = 1; // 0x1
+    field protected static final int[] SELECTED_STATE_SET;
+    field protected static final int[] SELECTED_WINDOW_FOCUSED_STATE_SET;
+    field public static final int SOUND_EFFECTS_ENABLED = 134217728; // 0x8000000
+    field @Deprecated public static final int STATUS_BAR_HIDDEN = 1; // 0x1
+    field @Deprecated public static final int STATUS_BAR_VISIBLE = 0; // 0x0
+    field @Deprecated public static final int SYSTEM_UI_FLAG_FULLSCREEN = 4; // 0x4
+    field @Deprecated public static final int SYSTEM_UI_FLAG_HIDE_NAVIGATION = 2; // 0x2
+    field @Deprecated public static final int SYSTEM_UI_FLAG_IMMERSIVE = 2048; // 0x800
+    field @Deprecated public static final int SYSTEM_UI_FLAG_IMMERSIVE_STICKY = 4096; // 0x1000
+    field @Deprecated public static final int SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN = 1024; // 0x400
+    field @Deprecated public static final int SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION = 512; // 0x200
+    field @Deprecated public static final int SYSTEM_UI_FLAG_LAYOUT_STABLE = 256; // 0x100
+    field @Deprecated public static final int SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR = 16; // 0x10
+    field @Deprecated public static final int SYSTEM_UI_FLAG_LIGHT_STATUS_BAR = 8192; // 0x2000
+    field @Deprecated public static final int SYSTEM_UI_FLAG_LOW_PROFILE = 1; // 0x1
+    field @Deprecated public static final int SYSTEM_UI_FLAG_VISIBLE = 0; // 0x0
+    field @Deprecated public static final int SYSTEM_UI_LAYOUT_FLAGS = 1536; // 0x600
+    field public static final int TEXT_ALIGNMENT_CENTER = 4; // 0x4
+    field public static final int TEXT_ALIGNMENT_GRAVITY = 1; // 0x1
+    field public static final int TEXT_ALIGNMENT_INHERIT = 0; // 0x0
+    field public static final int TEXT_ALIGNMENT_TEXT_END = 3; // 0x3
+    field public static final int TEXT_ALIGNMENT_TEXT_START = 2; // 0x2
+    field public static final int TEXT_ALIGNMENT_VIEW_END = 6; // 0x6
+    field public static final int TEXT_ALIGNMENT_VIEW_START = 5; // 0x5
+    field public static final int TEXT_DIRECTION_ANY_RTL = 2; // 0x2
+    field public static final int TEXT_DIRECTION_FIRST_STRONG = 1; // 0x1
+    field public static final int TEXT_DIRECTION_FIRST_STRONG_LTR = 6; // 0x6
+    field public static final int TEXT_DIRECTION_FIRST_STRONG_RTL = 7; // 0x7
+    field public static final int TEXT_DIRECTION_INHERIT = 0; // 0x0
+    field public static final int TEXT_DIRECTION_LOCALE = 5; // 0x5
+    field public static final int TEXT_DIRECTION_LTR = 3; // 0x3
+    field public static final int TEXT_DIRECTION_RTL = 4; // 0x4
+    field public static final android.util.Property<android.view.View,java.lang.Float> TRANSLATION_X;
+    field public static final android.util.Property<android.view.View,java.lang.Float> TRANSLATION_Y;
+    field public static final android.util.Property<android.view.View,java.lang.Float> TRANSLATION_Z;
+    field protected static final String VIEW_LOG_TAG = "View";
+    field public static final int VISIBLE = 0; // 0x0
+    field protected static final int[] WINDOW_FOCUSED_STATE_SET;
+    field public static final android.util.Property<android.view.View,java.lang.Float> X;
+    field public static final android.util.Property<android.view.View,java.lang.Float> Y;
+    field public static final android.util.Property<android.view.View,java.lang.Float> Z;
+  }
+
+  public static class View.AccessibilityDelegate {
+    ctor public View.AccessibilityDelegate();
+    method public void addExtraDataToAccessibilityNodeInfo(@NonNull android.view.View, @NonNull android.view.accessibility.AccessibilityNodeInfo, @NonNull String, @Nullable android.os.Bundle);
+    method public boolean dispatchPopulateAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
+    method public android.view.accessibility.AccessibilityNodeProvider getAccessibilityNodeProvider(android.view.View);
+    method public void onInitializeAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
+    method public void onInitializeAccessibilityNodeInfo(android.view.View, android.view.accessibility.AccessibilityNodeInfo);
+    method public void onPopulateAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
+    method public boolean onRequestSendAccessibilityEvent(android.view.ViewGroup, android.view.View, android.view.accessibility.AccessibilityEvent);
+    method public boolean performAccessibilityAction(android.view.View, int, android.os.Bundle);
+    method public void sendAccessibilityEvent(android.view.View, int);
+    method public void sendAccessibilityEventUnchecked(android.view.View, android.view.accessibility.AccessibilityEvent);
+  }
+
+  public static class View.BaseSavedState extends android.view.AbsSavedState {
+    ctor public View.BaseSavedState(android.os.Parcel);
+    ctor public View.BaseSavedState(android.os.Parcel, ClassLoader);
+    ctor public View.BaseSavedState(android.os.Parcelable);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.View.BaseSavedState> CREATOR;
+  }
+
+  public static class View.DragShadowBuilder {
+    ctor public View.DragShadowBuilder(android.view.View);
+    ctor public View.DragShadowBuilder();
+    method public final android.view.View getView();
+    method public void onDrawShadow(android.graphics.Canvas);
+    method public void onProvideShadowMetrics(android.graphics.Point, android.graphics.Point);
+  }
+
+  public static class View.MeasureSpec {
+    ctor public View.MeasureSpec();
+    method public static int getMode(int);
+    method public static int getSize(int);
+    method public static int makeMeasureSpec(@IntRange(from=0, to=0x40000000 - 1) int, int);
+    method public static String toString(int);
+    field public static final int AT_MOST = -2147483648; // 0x80000000
+    field public static final int EXACTLY = 1073741824; // 0x40000000
+    field public static final int UNSPECIFIED = 0; // 0x0
+  }
+
+  public static interface View.OnApplyWindowInsetsListener {
+    method public android.view.WindowInsets onApplyWindowInsets(android.view.View, android.view.WindowInsets);
+  }
+
+  public static interface View.OnAttachStateChangeListener {
+    method public void onViewAttachedToWindow(android.view.View);
+    method public void onViewDetachedFromWindow(android.view.View);
+  }
+
+  public static interface View.OnCapturedPointerListener {
+    method public boolean onCapturedPointer(android.view.View, android.view.MotionEvent);
+  }
+
+  public static interface View.OnClickListener {
+    method public void onClick(android.view.View);
+  }
+
+  public static interface View.OnContextClickListener {
+    method public boolean onContextClick(android.view.View);
+  }
+
+  public static interface View.OnCreateContextMenuListener {
+    method public void onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo);
+  }
+
+  public static interface View.OnDragListener {
+    method public boolean onDrag(android.view.View, android.view.DragEvent);
+  }
+
+  public static interface View.OnFocusChangeListener {
+    method public void onFocusChange(android.view.View, boolean);
+  }
+
+  public static interface View.OnGenericMotionListener {
+    method public boolean onGenericMotion(android.view.View, android.view.MotionEvent);
+  }
+
+  public static interface View.OnHoverListener {
+    method public boolean onHover(android.view.View, android.view.MotionEvent);
+  }
+
+  public static interface View.OnKeyListener {
+    method public boolean onKey(android.view.View, int, android.view.KeyEvent);
+  }
+
+  public static interface View.OnLayoutChangeListener {
+    method public void onLayoutChange(android.view.View, int, int, int, int, int, int, int, int);
+  }
+
+  public static interface View.OnLongClickListener {
+    method public boolean onLongClick(android.view.View);
+  }
+
+  public static interface View.OnScrollChangeListener {
+    method public void onScrollChange(android.view.View, int, int, int, int);
+  }
+
+  @Deprecated public static interface View.OnSystemUiVisibilityChangeListener {
+    method @Deprecated public void onSystemUiVisibilityChange(int);
+  }
+
+  public static interface View.OnTouchListener {
+    method public boolean onTouch(android.view.View, android.view.MotionEvent);
+  }
+
+  public static interface View.OnUnhandledKeyEventListener {
+    method public boolean onUnhandledKeyEvent(android.view.View, android.view.KeyEvent);
+  }
+
+  public final class ViewAnimationUtils {
+    method public static android.animation.Animator createCircularReveal(android.view.View, int, int, float, float);
+  }
+
+  public class ViewConfiguration {
+    ctor @Deprecated public ViewConfiguration();
+    method public static android.view.ViewConfiguration get(android.content.Context);
+    method @Deprecated @FloatRange(from=1.0) public static float getAmbiguousGestureMultiplier();
+    method public static long getDefaultActionModeHideDuration();
+    method public static int getDoubleTapTimeout();
+    method @Deprecated public static int getEdgeSlop();
+    method @Deprecated public static int getFadingEdgeLength();
+    method @Deprecated public static long getGlobalActionKeyTimeout();
+    method public static int getJumpTapTimeout();
+    method public static int getKeyRepeatDelay();
+    method public static int getKeyRepeatTimeout();
+    method public static int getLongPressTimeout();
+    method @Deprecated public static int getMaximumDrawingCacheSize();
+    method @Deprecated public static int getMaximumFlingVelocity();
+    method @Deprecated public static int getMinimumFlingVelocity();
+    method public static int getPressedStateDuration();
+    method @FloatRange(from=1.0) public float getScaledAmbiguousGestureMultiplier();
+    method public int getScaledDoubleTapSlop();
+    method public int getScaledEdgeSlop();
+    method public int getScaledFadingEdgeLength();
+    method public float getScaledHorizontalScrollFactor();
+    method public int getScaledHoverSlop();
+    method public int getScaledMaximumDrawingCacheSize();
+    method public int getScaledMaximumFlingVelocity();
+    method public int getScaledMinimumFlingVelocity();
+    method public int getScaledMinimumScalingSpan();
+    method public int getScaledOverflingDistance();
+    method public int getScaledOverscrollDistance();
+    method public int getScaledPagingTouchSlop();
+    method public int getScaledScrollBarSize();
+    method public int getScaledTouchSlop();
+    method public float getScaledVerticalScrollFactor();
+    method public int getScaledWindowTouchSlop();
+    method public static int getScrollBarFadeDuration();
+    method @Deprecated public static int getScrollBarSize();
+    method public static int getScrollDefaultDelay();
+    method public static float getScrollFriction();
+    method public static int getTapTimeout();
+    method @Deprecated public static int getTouchSlop();
+    method @Deprecated public static int getWindowTouchSlop();
+    method public static long getZoomControlsTimeout();
+    method public boolean hasPermanentMenuKey();
+    method public boolean shouldShowMenuShortcutsWhenKeyboardPresent();
+  }
+
+  public class ViewDebug {
+    ctor public ViewDebug();
+    method public static void dumpCapturedView(String, Object);
+    method @Deprecated public static void startHierarchyTracing(String, android.view.View);
+    method @Deprecated public static void startRecyclerTracing(String, android.view.View);
+    method @Deprecated public static void stopHierarchyTracing();
+    method @Deprecated public static void stopRecyclerTracing();
+    method @Deprecated public static void trace(android.view.View, android.view.ViewDebug.RecyclerTraceType, int...);
+    method @Deprecated public static void trace(android.view.View, android.view.ViewDebug.HierarchyTraceType);
+    field @Deprecated public static final boolean TRACE_HIERARCHY = false;
+    field @Deprecated public static final boolean TRACE_RECYCLER = false;
+  }
+
+  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD}) public static @interface ViewDebug.CapturedViewProperty {
+    method public abstract boolean retrieveReturn() default false;
+  }
+
+  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD}) public static @interface ViewDebug.ExportedProperty {
+    method public abstract String category() default "";
+    method public abstract boolean deepExport() default false;
+    method public abstract android.view.ViewDebug.FlagToString[] flagMapping() default {};
+    method public abstract boolean formatToHexString() default false;
+    method public abstract boolean hasAdjacentMapping() default false;
+    method public abstract android.view.ViewDebug.IntToString[] indexMapping() default {};
+    method public abstract android.view.ViewDebug.IntToString[] mapping() default {};
+    method public abstract String prefix() default "";
+    method public abstract boolean resolveId() default false;
+  }
+
+  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE}) public static @interface ViewDebug.FlagToString {
+    method public abstract int equals();
+    method public abstract int mask();
+    method public abstract String name();
+    method public abstract boolean outputIf() default true;
+  }
+
+  @Deprecated public enum ViewDebug.HierarchyTraceType {
+    enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType BUILD_CACHE;
+    enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType DRAW;
+    enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType INVALIDATE;
+    enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType INVALIDATE_CHILD;
+    enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType INVALIDATE_CHILD_IN_PARENT;
+    enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType ON_LAYOUT;
+    enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType ON_MEASURE;
+    enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType REQUEST_LAYOUT;
+  }
+
+  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE}) public static @interface ViewDebug.IntToString {
+    method public abstract int from();
+    method public abstract String to();
+  }
+
+  @Deprecated public enum ViewDebug.RecyclerTraceType {
+    enum_constant @Deprecated public static final android.view.ViewDebug.RecyclerTraceType BIND_VIEW;
+    enum_constant @Deprecated public static final android.view.ViewDebug.RecyclerTraceType MOVE_FROM_ACTIVE_TO_SCRAP_HEAP;
+    enum_constant @Deprecated public static final android.view.ViewDebug.RecyclerTraceType MOVE_TO_SCRAP_HEAP;
+    enum_constant @Deprecated public static final android.view.ViewDebug.RecyclerTraceType NEW_VIEW;
+    enum_constant @Deprecated public static final android.view.ViewDebug.RecyclerTraceType RECYCLE_FROM_ACTIVE_HEAP;
+    enum_constant @Deprecated public static final android.view.ViewDebug.RecyclerTraceType RECYCLE_FROM_SCRAP_HEAP;
+  }
+
+  @UiThread public abstract class ViewGroup extends android.view.View implements android.view.ViewManager android.view.ViewParent {
+    ctor public ViewGroup(android.content.Context);
+    ctor public ViewGroup(android.content.Context, android.util.AttributeSet);
+    ctor public ViewGroup(android.content.Context, android.util.AttributeSet, int);
+    ctor public ViewGroup(android.content.Context, android.util.AttributeSet, int, int);
+    method public boolean addStatesFromChildren();
+    method public void addView(android.view.View);
+    method public void addView(android.view.View, int);
+    method public void addView(android.view.View, int, int);
+    method public void addView(android.view.View, android.view.ViewGroup.LayoutParams);
+    method public void addView(android.view.View, int, android.view.ViewGroup.LayoutParams);
+    method protected boolean addViewInLayout(android.view.View, int, android.view.ViewGroup.LayoutParams);
+    method protected boolean addViewInLayout(android.view.View, int, android.view.ViewGroup.LayoutParams, boolean);
+    method protected void attachLayoutAnimationParameters(android.view.View, android.view.ViewGroup.LayoutParams, int, int);
+    method protected void attachViewToParent(android.view.View, int, android.view.ViewGroup.LayoutParams);
+    method public void bringChildToFront(android.view.View);
+    method protected boolean canAnimate();
+    method protected boolean checkLayoutParams(android.view.ViewGroup.LayoutParams);
+    method public void childDrawableStateChanged(android.view.View);
+    method public void childHasTransientStateChanged(android.view.View, boolean);
+    method protected void cleanupLayoutState(android.view.View);
+    method public void clearChildFocus(android.view.View);
+    method public void clearDisappearingChildren();
+    method protected void debug(int);
+    method protected void detachAllViewsFromParent();
+    method protected void detachViewFromParent(android.view.View);
+    method protected void detachViewFromParent(int);
+    method protected void detachViewsFromParent(int, int);
+    method protected void dispatchFreezeSelfOnly(android.util.SparseArray<android.os.Parcelable>);
+    method public void dispatchSetActivated(boolean);
+    method public void dispatchSetSelected(boolean);
+    method protected void dispatchThawSelfOnly(android.util.SparseArray<android.os.Parcelable>);
+    method protected boolean drawChild(android.graphics.Canvas, android.view.View, long);
+    method public void endViewTransition(android.view.View);
+    method public android.view.View focusSearch(android.view.View, int);
+    method public void focusableViewAvailable(android.view.View);
+    method public boolean gatherTransparentRegion(android.graphics.Region);
+    method protected android.view.ViewGroup.LayoutParams generateDefaultLayoutParams();
+    method public android.view.ViewGroup.LayoutParams generateLayoutParams(android.util.AttributeSet);
+    method protected android.view.ViewGroup.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams);
+    method public android.view.View getChildAt(int);
+    method public int getChildCount();
+    method protected int getChildDrawingOrder(int, int);
+    method public final int getChildDrawingOrder(int);
+    method public static int getChildMeasureSpec(int, int, int);
+    method protected boolean getChildStaticTransformation(android.view.View, android.view.animation.Transformation);
+    method public boolean getChildVisibleRect(android.view.View, android.graphics.Rect, android.graphics.Point);
+    method public boolean getClipChildren();
+    method public boolean getClipToPadding();
+    method public int getDescendantFocusability();
+    method public android.view.View getFocusedChild();
+    method public android.view.animation.LayoutAnimationController getLayoutAnimation();
+    method public android.view.animation.Animation.AnimationListener getLayoutAnimationListener();
+    method public int getLayoutMode();
+    method public android.animation.LayoutTransition getLayoutTransition();
+    method public int getNestedScrollAxes();
+    method public android.view.ViewGroupOverlay getOverlay();
+    method @Deprecated public int getPersistentDrawingCache();
+    method public boolean getTouchscreenBlocksFocus();
+    method public int indexOfChild(android.view.View);
+    method @Deprecated public final void invalidateChild(android.view.View, android.graphics.Rect);
+    method @Deprecated public android.view.ViewParent invalidateChildInParent(int[], android.graphics.Rect);
+    method @Deprecated public boolean isAlwaysDrawnWithCacheEnabled();
+    method @Deprecated public boolean isAnimationCacheEnabled();
+    method protected boolean isChildrenDrawingOrderEnabled();
+    method @Deprecated protected boolean isChildrenDrawnWithCacheEnabled();
+    method public boolean isLayoutSuppressed();
+    method public boolean isMotionEventSplittingEnabled();
+    method public boolean isTransitionGroup();
+    method public final void layout(int, int, int, int);
+    method protected void measureChild(android.view.View, int, int);
+    method protected void measureChildWithMargins(android.view.View, int, int, int, int);
+    method protected void measureChildren(int, int);
+    method public void notifySubtreeAccessibilityStateChanged(android.view.View, android.view.View, int);
+    method public final void offsetDescendantRectToMyCoords(android.view.View, android.graphics.Rect);
+    method public final void offsetRectIntoDescendantCoords(android.view.View, android.graphics.Rect);
+    method public boolean onInterceptHoverEvent(android.view.MotionEvent);
+    method public boolean onInterceptTouchEvent(android.view.MotionEvent);
+    method protected abstract void onLayout(boolean, int, int, int, int);
+    method public boolean onNestedFling(android.view.View, float, float, boolean);
+    method public boolean onNestedPreFling(android.view.View, float, float);
+    method public boolean onNestedPrePerformAccessibilityAction(android.view.View, int, android.os.Bundle);
+    method public void onNestedPreScroll(android.view.View, int, int, int[]);
+    method public void onNestedScroll(android.view.View, int, int, int, int);
+    method public void onNestedScrollAccepted(android.view.View, android.view.View, int);
+    method protected boolean onRequestFocusInDescendants(int, android.graphics.Rect);
+    method public boolean onRequestSendAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
+    method public boolean onStartNestedScroll(android.view.View, android.view.View, int);
+    method public void onStopNestedScroll(android.view.View);
+    method public void onViewAdded(android.view.View);
+    method public void onViewRemoved(android.view.View);
+    method public void recomputeViewAttributes(android.view.View);
+    method public void removeAllViews();
+    method public void removeAllViewsInLayout();
+    method protected void removeDetachedView(android.view.View, boolean);
+    method public void removeView(android.view.View);
+    method public void removeViewAt(int);
+    method public void removeViewInLayout(android.view.View);
+    method public void removeViews(int, int);
+    method public void removeViewsInLayout(int, int);
+    method public void requestChildFocus(android.view.View, android.view.View);
+    method public boolean requestChildRectangleOnScreen(android.view.View, android.graphics.Rect, boolean);
+    method public void requestDisallowInterceptTouchEvent(boolean);
+    method public boolean requestSendAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
+    method public void requestTransparentRegion(android.view.View);
+    method public void scheduleLayoutAnimation();
+    method public void setAddStatesFromChildren(boolean);
+    method @Deprecated public void setAlwaysDrawnWithCacheEnabled(boolean);
+    method @Deprecated public void setAnimationCacheEnabled(boolean);
+    method @Deprecated protected void setChildrenDrawingCacheEnabled(boolean);
+    method protected void setChildrenDrawingOrderEnabled(boolean);
+    method @Deprecated protected void setChildrenDrawnWithCacheEnabled(boolean);
+    method public void setClipChildren(boolean);
+    method public void setClipToPadding(boolean);
+    method public void setDescendantFocusability(int);
+    method public void setLayoutAnimation(android.view.animation.LayoutAnimationController);
+    method public void setLayoutAnimationListener(android.view.animation.Animation.AnimationListener);
+    method public void setLayoutMode(int);
+    method public void setLayoutTransition(android.animation.LayoutTransition);
+    method public void setMotionEventSplittingEnabled(boolean);
+    method public void setOnHierarchyChangeListener(android.view.ViewGroup.OnHierarchyChangeListener);
+    method @Deprecated public void setPersistentDrawingCache(int);
+    method protected void setStaticTransformationsEnabled(boolean);
+    method public void setTouchscreenBlocksFocus(boolean);
+    method public void setTransitionGroup(boolean);
+    method public boolean shouldDelayChildPressedState();
+    method public boolean showContextMenuForChild(android.view.View);
+    method public boolean showContextMenuForChild(android.view.View, float, float);
+    method public android.view.ActionMode startActionModeForChild(android.view.View, android.view.ActionMode.Callback);
+    method public android.view.ActionMode startActionModeForChild(android.view.View, android.view.ActionMode.Callback, int);
+    method public void startLayoutAnimation();
+    method public void startViewTransition(android.view.View);
+    method public void suppressLayout(boolean);
+    method public void updateViewLayout(android.view.View, android.view.ViewGroup.LayoutParams);
+    field protected static final int CLIP_TO_PADDING_MASK = 34; // 0x22
+    field public static final int FOCUS_AFTER_DESCENDANTS = 262144; // 0x40000
+    field public static final int FOCUS_BEFORE_DESCENDANTS = 131072; // 0x20000
+    field public static final int FOCUS_BLOCK_DESCENDANTS = 393216; // 0x60000
+    field public static final int LAYOUT_MODE_CLIP_BOUNDS = 0; // 0x0
+    field public static final int LAYOUT_MODE_OPTICAL_BOUNDS = 1; // 0x1
+    field @Deprecated public static final int PERSISTENT_ALL_CACHES = 3; // 0x3
+    field @Deprecated public static final int PERSISTENT_ANIMATION_CACHE = 1; // 0x1
+    field @Deprecated public static final int PERSISTENT_NO_CACHE = 0; // 0x0
+    field @Deprecated public static final int PERSISTENT_SCROLLING_CACHE = 2; // 0x2
+  }
+
+  public static class ViewGroup.LayoutParams {
+    ctor public ViewGroup.LayoutParams(android.content.Context, android.util.AttributeSet);
+    ctor public ViewGroup.LayoutParams(int, int);
+    ctor public ViewGroup.LayoutParams(android.view.ViewGroup.LayoutParams);
+    method public void resolveLayoutDirection(int);
+    method protected void setBaseAttributes(android.content.res.TypedArray, int, int);
+    field @Deprecated public static final int FILL_PARENT = -1; // 0xffffffff
+    field public static final int MATCH_PARENT = -1; // 0xffffffff
+    field public static final int WRAP_CONTENT = -2; // 0xfffffffe
+    field public int height;
+    field public android.view.animation.LayoutAnimationController.AnimationParameters layoutAnimationParameters;
+    field public int width;
+  }
+
+  public static class ViewGroup.MarginLayoutParams extends android.view.ViewGroup.LayoutParams {
+    ctor public ViewGroup.MarginLayoutParams(android.content.Context, android.util.AttributeSet);
+    ctor public ViewGroup.MarginLayoutParams(int, int);
+    ctor public ViewGroup.MarginLayoutParams(android.view.ViewGroup.MarginLayoutParams);
+    ctor public ViewGroup.MarginLayoutParams(android.view.ViewGroup.LayoutParams);
+    method public int getLayoutDirection();
+    method public int getMarginEnd();
+    method public int getMarginStart();
+    method public boolean isMarginRelative();
+    method public void setLayoutDirection(int);
+    method public void setMarginEnd(int);
+    method public void setMarginStart(int);
+    method public void setMargins(int, int, int, int);
+    field public int bottomMargin;
+    field public int leftMargin;
+    field public int rightMargin;
+    field public int topMargin;
+  }
+
+  public static interface ViewGroup.OnHierarchyChangeListener {
+    method public void onChildViewAdded(android.view.View, android.view.View);
+    method public void onChildViewRemoved(android.view.View, android.view.View);
+  }
+
+  public class ViewGroupOverlay extends android.view.ViewOverlay {
+    method public void add(@NonNull android.view.View);
+    method public void remove(@NonNull android.view.View);
+  }
+
+  public interface ViewManager {
+    method public void addView(android.view.View, android.view.ViewGroup.LayoutParams);
+    method public void removeView(android.view.View);
+    method public void updateViewLayout(android.view.View, android.view.ViewGroup.LayoutParams);
+  }
+
+  public abstract class ViewOutlineProvider {
+    ctor public ViewOutlineProvider();
+    method public abstract void getOutline(android.view.View, android.graphics.Outline);
+    field public static final android.view.ViewOutlineProvider BACKGROUND;
+    field public static final android.view.ViewOutlineProvider BOUNDS;
+    field public static final android.view.ViewOutlineProvider PADDED_BOUNDS;
+  }
+
+  public class ViewOverlay {
+    method public void add(@NonNull android.graphics.drawable.Drawable);
+    method public void clear();
+    method public void remove(@NonNull android.graphics.drawable.Drawable);
+  }
+
+  public interface ViewParent {
+    method public void bringChildToFront(android.view.View);
+    method public boolean canResolveLayoutDirection();
+    method public boolean canResolveTextAlignment();
+    method public boolean canResolveTextDirection();
+    method public void childDrawableStateChanged(android.view.View);
+    method public void childHasTransientStateChanged(android.view.View, boolean);
+    method public void clearChildFocus(android.view.View);
+    method public void createContextMenu(android.view.ContextMenu);
+    method public android.view.View focusSearch(android.view.View, int);
+    method public void focusableViewAvailable(android.view.View);
+    method public boolean getChildVisibleRect(android.view.View, android.graphics.Rect, android.graphics.Point);
+    method public int getLayoutDirection();
+    method public android.view.ViewParent getParent();
+    method public android.view.ViewParent getParentForAccessibility();
+    method public int getTextAlignment();
+    method public int getTextDirection();
+    method @Deprecated public void invalidateChild(android.view.View, android.graphics.Rect);
+    method @Deprecated public android.view.ViewParent invalidateChildInParent(int[], android.graphics.Rect);
+    method public boolean isLayoutDirectionResolved();
+    method public boolean isLayoutRequested();
+    method public boolean isTextAlignmentResolved();
+    method public boolean isTextDirectionResolved();
+    method public android.view.View keyboardNavigationClusterSearch(android.view.View, int);
+    method public void notifySubtreeAccessibilityStateChanged(android.view.View, @NonNull android.view.View, int);
+    method public default void onDescendantInvalidated(@NonNull android.view.View, @NonNull android.view.View);
+    method public boolean onNestedFling(android.view.View, float, float, boolean);
+    method public boolean onNestedPreFling(android.view.View, float, float);
+    method public boolean onNestedPrePerformAccessibilityAction(android.view.View, int, android.os.Bundle);
+    method public void onNestedPreScroll(android.view.View, int, int, int[]);
+    method public void onNestedScroll(android.view.View, int, int, int, int);
+    method public void onNestedScrollAccepted(android.view.View, android.view.View, int);
+    method public boolean onStartNestedScroll(android.view.View, android.view.View, int);
+    method public void onStopNestedScroll(android.view.View);
+    method public void recomputeViewAttributes(android.view.View);
+    method public void requestChildFocus(android.view.View, android.view.View);
+    method public boolean requestChildRectangleOnScreen(android.view.View, android.graphics.Rect, boolean);
+    method public void requestDisallowInterceptTouchEvent(boolean);
+    method public void requestFitSystemWindows();
+    method public void requestLayout();
+    method public boolean requestSendAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
+    method public void requestTransparentRegion(android.view.View);
+    method public boolean showContextMenuForChild(android.view.View);
+    method public boolean showContextMenuForChild(android.view.View, float, float);
+    method public android.view.ActionMode startActionModeForChild(android.view.View, android.view.ActionMode.Callback);
+    method public android.view.ActionMode startActionModeForChild(android.view.View, android.view.ActionMode.Callback, int);
+  }
+
+  public class ViewPropertyAnimator {
+    method public android.view.ViewPropertyAnimator alpha(float);
+    method public android.view.ViewPropertyAnimator alphaBy(float);
+    method public void cancel();
+    method public long getDuration();
+    method public android.animation.TimeInterpolator getInterpolator();
+    method public long getStartDelay();
+    method public android.view.ViewPropertyAnimator rotation(float);
+    method public android.view.ViewPropertyAnimator rotationBy(float);
+    method public android.view.ViewPropertyAnimator rotationX(float);
+    method public android.view.ViewPropertyAnimator rotationXBy(float);
+    method public android.view.ViewPropertyAnimator rotationY(float);
+    method public android.view.ViewPropertyAnimator rotationYBy(float);
+    method public android.view.ViewPropertyAnimator scaleX(float);
+    method public android.view.ViewPropertyAnimator scaleXBy(float);
+    method public android.view.ViewPropertyAnimator scaleY(float);
+    method public android.view.ViewPropertyAnimator scaleYBy(float);
+    method public android.view.ViewPropertyAnimator setDuration(long);
+    method public android.view.ViewPropertyAnimator setInterpolator(android.animation.TimeInterpolator);
+    method public android.view.ViewPropertyAnimator setListener(android.animation.Animator.AnimatorListener);
+    method public android.view.ViewPropertyAnimator setStartDelay(long);
+    method public android.view.ViewPropertyAnimator setUpdateListener(android.animation.ValueAnimator.AnimatorUpdateListener);
+    method public void start();
+    method public android.view.ViewPropertyAnimator translationX(float);
+    method public android.view.ViewPropertyAnimator translationXBy(float);
+    method public android.view.ViewPropertyAnimator translationY(float);
+    method public android.view.ViewPropertyAnimator translationYBy(float);
+    method public android.view.ViewPropertyAnimator translationZ(float);
+    method public android.view.ViewPropertyAnimator translationZBy(float);
+    method public android.view.ViewPropertyAnimator withEndAction(Runnable);
+    method public android.view.ViewPropertyAnimator withLayer();
+    method public android.view.ViewPropertyAnimator withStartAction(Runnable);
+    method public android.view.ViewPropertyAnimator x(float);
+    method public android.view.ViewPropertyAnimator xBy(float);
+    method public android.view.ViewPropertyAnimator y(float);
+    method public android.view.ViewPropertyAnimator yBy(float);
+    method public android.view.ViewPropertyAnimator z(float);
+    method public android.view.ViewPropertyAnimator zBy(float);
+  }
+
+  public abstract class ViewStructure {
+    ctor public ViewStructure();
+    method public abstract int addChildCount(int);
+    method public abstract void asyncCommit();
+    method public abstract android.view.ViewStructure asyncNewChild(int);
+    method @Nullable public abstract android.view.autofill.AutofillId getAutofillId();
+    method public abstract int getChildCount();
+    method public abstract android.os.Bundle getExtras();
+    method public abstract CharSequence getHint();
+    method public abstract CharSequence getText();
+    method public abstract int getTextSelectionEnd();
+    method public abstract int getTextSelectionStart();
+    method public abstract boolean hasExtras();
+    method public abstract android.view.ViewStructure newChild(int);
+    method public abstract android.view.ViewStructure.HtmlInfo.Builder newHtmlInfoBuilder(@NonNull String);
+    method public abstract void setAccessibilityFocused(boolean);
+    method public abstract void setActivated(boolean);
+    method public abstract void setAlpha(float);
+    method public abstract void setAutofillHints(@Nullable String[]);
+    method public abstract void setAutofillId(@NonNull android.view.autofill.AutofillId);
+    method public abstract void setAutofillId(@NonNull android.view.autofill.AutofillId, int);
+    method public abstract void setAutofillOptions(CharSequence[]);
+    method public abstract void setAutofillType(int);
+    method public abstract void setAutofillValue(android.view.autofill.AutofillValue);
+    method public abstract void setCheckable(boolean);
+    method public abstract void setChecked(boolean);
+    method public abstract void setChildCount(int);
+    method public abstract void setClassName(String);
+    method public abstract void setClickable(boolean);
+    method public abstract void setContentDescription(CharSequence);
+    method public abstract void setContextClickable(boolean);
+    method public abstract void setDataIsSensitive(boolean);
+    method public abstract void setDimens(int, int, int, int, int, int);
+    method public abstract void setElevation(float);
+    method public abstract void setEnabled(boolean);
+    method public abstract void setFocusable(boolean);
+    method public abstract void setFocused(boolean);
+    method public abstract void setHint(CharSequence);
+    method public void setHintIdEntry(@NonNull String);
+    method public abstract void setHtmlInfo(@NonNull android.view.ViewStructure.HtmlInfo);
+    method public abstract void setId(int, String, String, String);
+    method public void setImportantForAutofill(int);
+    method public abstract void setInputType(int);
+    method public abstract void setLocaleList(android.os.LocaleList);
+    method public abstract void setLongClickable(boolean);
+    method public void setMaxTextEms(int);
+    method public void setMaxTextLength(int);
+    method public void setMinTextEms(int);
+    method public abstract void setOpaque(boolean);
+    method public abstract void setSelected(boolean);
+    method public abstract void setText(CharSequence);
+    method public abstract void setText(CharSequence, int, int);
+    method public void setTextIdEntry(@NonNull String);
+    method public abstract void setTextLines(int[], int[]);
+    method public abstract void setTextStyle(float, int, int, int);
+    method public abstract void setTransformation(android.graphics.Matrix);
+    method public abstract void setVisibility(int);
+    method public abstract void setWebDomain(@Nullable String);
+  }
+
+  public abstract static class ViewStructure.HtmlInfo {
+    ctor public ViewStructure.HtmlInfo();
+    method @Nullable public abstract java.util.List<android.util.Pair<java.lang.String,java.lang.String>> getAttributes();
+    method @NonNull public abstract String getTag();
+  }
+
+  public abstract static class ViewStructure.HtmlInfo.Builder {
+    ctor public ViewStructure.HtmlInfo.Builder();
+    method public abstract android.view.ViewStructure.HtmlInfo.Builder addAttribute(@NonNull String, @NonNull String);
+    method public abstract android.view.ViewStructure.HtmlInfo build();
+  }
+
+  @android.widget.RemoteViews.RemoteView public final class ViewStub extends android.view.View {
+    ctor public ViewStub(android.content.Context);
+    ctor public ViewStub(android.content.Context, @LayoutRes int);
+    ctor public ViewStub(android.content.Context, android.util.AttributeSet);
+    ctor public ViewStub(android.content.Context, android.util.AttributeSet, int);
+    ctor public ViewStub(android.content.Context, android.util.AttributeSet, int, int);
+    method @IdRes public int getInflatedId();
+    method public android.view.LayoutInflater getLayoutInflater();
+    method @LayoutRes public int getLayoutResource();
+    method public android.view.View inflate();
+    method public void setInflatedId(@IdRes int);
+    method public void setLayoutInflater(android.view.LayoutInflater);
+    method public void setLayoutResource(@LayoutRes int);
+    method public void setOnInflateListener(android.view.ViewStub.OnInflateListener);
+  }
+
+  public static interface ViewStub.OnInflateListener {
+    method public void onInflate(android.view.ViewStub, android.view.View);
+  }
+
+  public final class ViewTreeObserver {
+    method public void addOnDrawListener(android.view.ViewTreeObserver.OnDrawListener);
+    method public void addOnGlobalFocusChangeListener(android.view.ViewTreeObserver.OnGlobalFocusChangeListener);
+    method public void addOnGlobalLayoutListener(android.view.ViewTreeObserver.OnGlobalLayoutListener);
+    method public void addOnPreDrawListener(android.view.ViewTreeObserver.OnPreDrawListener);
+    method public void addOnScrollChangedListener(android.view.ViewTreeObserver.OnScrollChangedListener);
+    method public void addOnSystemGestureExclusionRectsChangedListener(@NonNull java.util.function.Consumer<java.util.List<android.graphics.Rect>>);
+    method public void addOnTouchModeChangeListener(android.view.ViewTreeObserver.OnTouchModeChangeListener);
+    method public void addOnWindowAttachListener(android.view.ViewTreeObserver.OnWindowAttachListener);
+    method public void addOnWindowFocusChangeListener(android.view.ViewTreeObserver.OnWindowFocusChangeListener);
+    method public void dispatchOnDraw();
+    method public void dispatchOnGlobalLayout();
+    method public boolean dispatchOnPreDraw();
+    method public boolean isAlive();
+    method public void registerFrameCommitCallback(@NonNull Runnable);
+    method @Deprecated public void removeGlobalOnLayoutListener(android.view.ViewTreeObserver.OnGlobalLayoutListener);
+    method public void removeOnDrawListener(android.view.ViewTreeObserver.OnDrawListener);
+    method public void removeOnGlobalFocusChangeListener(android.view.ViewTreeObserver.OnGlobalFocusChangeListener);
+    method public void removeOnGlobalLayoutListener(android.view.ViewTreeObserver.OnGlobalLayoutListener);
+    method public void removeOnPreDrawListener(android.view.ViewTreeObserver.OnPreDrawListener);
+    method public void removeOnScrollChangedListener(android.view.ViewTreeObserver.OnScrollChangedListener);
+    method public void removeOnSystemGestureExclusionRectsChangedListener(@NonNull java.util.function.Consumer<java.util.List<android.graphics.Rect>>);
+    method public void removeOnTouchModeChangeListener(android.view.ViewTreeObserver.OnTouchModeChangeListener);
+    method public void removeOnWindowAttachListener(android.view.ViewTreeObserver.OnWindowAttachListener);
+    method public void removeOnWindowFocusChangeListener(android.view.ViewTreeObserver.OnWindowFocusChangeListener);
+    method public boolean unregisterFrameCommitCallback(@NonNull Runnable);
+  }
+
+  public static interface ViewTreeObserver.OnDrawListener {
+    method public void onDraw();
+  }
+
+  public static interface ViewTreeObserver.OnGlobalFocusChangeListener {
+    method public void onGlobalFocusChanged(android.view.View, android.view.View);
+  }
+
+  public static interface ViewTreeObserver.OnGlobalLayoutListener {
+    method public void onGlobalLayout();
+  }
+
+  public static interface ViewTreeObserver.OnPreDrawListener {
+    method public boolean onPreDraw();
+  }
+
+  public static interface ViewTreeObserver.OnScrollChangedListener {
+    method public void onScrollChanged();
+  }
+
+  public static interface ViewTreeObserver.OnTouchModeChangeListener {
+    method public void onTouchModeChanged(boolean);
+  }
+
+  public static interface ViewTreeObserver.OnWindowAttachListener {
+    method public void onWindowAttached();
+    method public void onWindowDetached();
+  }
+
+  public static interface ViewTreeObserver.OnWindowFocusChangeListener {
+    method public void onWindowFocusChanged(boolean);
+  }
+
+  public abstract class Window {
+    ctor public Window(android.content.Context);
+    method public abstract void addContentView(android.view.View, android.view.ViewGroup.LayoutParams);
+    method public void addFlags(int);
+    method public final void addOnFrameMetricsAvailableListener(@NonNull android.view.Window.OnFrameMetricsAvailableListener, android.os.Handler);
+    method public void clearFlags(int);
+    method public abstract void closeAllPanels();
+    method public abstract void closePanel(int);
+    method public <T extends android.view.View> T findViewById(@IdRes int);
+    method public boolean getAllowEnterTransitionOverlap();
+    method public boolean getAllowReturnTransitionOverlap();
+    method public final android.view.WindowManager.LayoutParams getAttributes();
+    method public final android.view.Window.Callback getCallback();
+    method public int getColorMode();
+    method public final android.view.Window getContainer();
+    method public android.transition.Scene getContentScene();
+    method public final android.content.Context getContext();
+    method @Nullable public abstract android.view.View getCurrentFocus();
+    method @NonNull public abstract android.view.View getDecorView();
+    method public static int getDefaultFeatures(android.content.Context);
+    method public android.transition.Transition getEnterTransition();
+    method public android.transition.Transition getExitTransition();
+    method protected final int getFeatures();
+    method protected final int getForcedWindowFlags();
+    method @Nullable public android.view.WindowInsetsController getInsetsController();
+    method @NonNull public abstract android.view.LayoutInflater getLayoutInflater();
+    method protected final int getLocalFeatures();
+    method public android.media.session.MediaController getMediaController();
+    method @ColorInt public abstract int getNavigationBarColor();
+    method @ColorInt public int getNavigationBarDividerColor();
+    method public android.transition.Transition getReenterTransition();
+    method public android.transition.Transition getReturnTransition();
+    method public android.transition.Transition getSharedElementEnterTransition();
+    method public android.transition.Transition getSharedElementExitTransition();
+    method public android.transition.Transition getSharedElementReenterTransition();
+    method public android.transition.Transition getSharedElementReturnTransition();
+    method public boolean getSharedElementsUseOverlay();
+    method @ColorInt public abstract int getStatusBarColor();
+    method @NonNull public java.util.List<android.graphics.Rect> getSystemGestureExclusionRects();
+    method public long getTransitionBackgroundFadeDuration();
+    method public android.transition.TransitionManager getTransitionManager();
+    method public abstract int getVolumeControlStream();
+    method public android.view.WindowManager getWindowManager();
+    method public final android.content.res.TypedArray getWindowStyle();
+    method public final boolean hasChildren();
+    method public boolean hasFeature(int);
+    method protected final boolean hasSoftInputMode();
+    method public void injectInputEvent(android.view.InputEvent);
+    method public abstract void invalidatePanelMenu(int);
+    method public final boolean isActive();
+    method public abstract boolean isFloating();
+    method public boolean isNavigationBarContrastEnforced();
+    method public abstract boolean isShortcutKey(int, android.view.KeyEvent);
+    method public boolean isStatusBarContrastEnforced();
+    method public boolean isWideColorGamut();
+    method public final void makeActive();
+    method protected abstract void onActive();
+    method public abstract void onConfigurationChanged(android.content.res.Configuration);
+    method public abstract void openPanel(int, android.view.KeyEvent);
+    method public abstract android.view.View peekDecorView();
+    method public abstract boolean performContextMenuIdentifierAction(int, int);
+    method public abstract boolean performPanelIdentifierAction(int, int, int);
+    method public abstract boolean performPanelShortcut(int, int, android.view.KeyEvent, int);
+    method public final void removeOnFrameMetricsAvailableListener(android.view.Window.OnFrameMetricsAvailableListener);
+    method public boolean requestFeature(int);
+    method @NonNull public final <T extends android.view.View> T requireViewById(@IdRes int);
+    method public abstract void restoreHierarchyState(android.os.Bundle);
+    method public abstract android.os.Bundle saveHierarchyState();
+    method public void setAllowEnterTransitionOverlap(boolean);
+    method public void setAllowReturnTransitionOverlap(boolean);
+    method public void setAttributes(android.view.WindowManager.LayoutParams);
+    method public abstract void setBackgroundDrawable(android.graphics.drawable.Drawable);
+    method public void setBackgroundDrawableResource(@DrawableRes int);
+    method public void setCallback(android.view.Window.Callback);
+    method public abstract void setChildDrawable(int, android.graphics.drawable.Drawable);
+    method public abstract void setChildInt(int, int);
+    method public void setClipToOutline(boolean);
+    method public void setColorMode(int);
+    method public void setContainer(android.view.Window);
+    method public abstract void setContentView(@LayoutRes int);
+    method public abstract void setContentView(android.view.View);
+    method public abstract void setContentView(android.view.View, android.view.ViewGroup.LayoutParams);
+    method public abstract void setDecorCaptionShade(int);
+    method public void setDecorFitsSystemWindows(boolean);
+    method protected void setDefaultWindowFormat(int);
+    method public void setDimAmount(float);
+    method public void setElevation(float);
+    method public void setEnterTransition(android.transition.Transition);
+    method public void setExitTransition(android.transition.Transition);
+    method public abstract void setFeatureDrawable(int, android.graphics.drawable.Drawable);
+    method public abstract void setFeatureDrawableAlpha(int, int);
+    method public abstract void setFeatureDrawableResource(int, @DrawableRes int);
+    method public abstract void setFeatureDrawableUri(int, android.net.Uri);
+    method public abstract void setFeatureInt(int, int);
+    method public void setFlags(int, int);
+    method public void setFormat(int);
+    method public void setGravity(int);
+    method public void setIcon(@DrawableRes int);
+    method public void setLayout(int, int);
+    method public void setLocalFocus(boolean, boolean);
+    method public void setLogo(@DrawableRes int);
+    method public void setMediaController(android.media.session.MediaController);
+    method public abstract void setNavigationBarColor(@ColorInt int);
+    method public void setNavigationBarContrastEnforced(boolean);
+    method public void setNavigationBarDividerColor(@ColorInt int);
+    method public void setPreferMinimalPostProcessing(boolean);
+    method public void setReenterTransition(android.transition.Transition);
+    method public abstract void setResizingCaptionDrawable(android.graphics.drawable.Drawable);
+    method public final void setRestrictedCaptionAreaListener(android.view.Window.OnRestrictedCaptionAreaChangedListener);
+    method public void setReturnTransition(android.transition.Transition);
+    method public void setSharedElementEnterTransition(android.transition.Transition);
+    method public void setSharedElementExitTransition(android.transition.Transition);
+    method public void setSharedElementReenterTransition(android.transition.Transition);
+    method public void setSharedElementReturnTransition(android.transition.Transition);
+    method public void setSharedElementsUseOverlay(boolean);
+    method public void setSoftInputMode(int);
+    method public abstract void setStatusBarColor(@ColorInt int);
+    method public void setStatusBarContrastEnforced(boolean);
+    method public void setSustainedPerformanceMode(boolean);
+    method public void setSystemGestureExclusionRects(@NonNull java.util.List<android.graphics.Rect>);
+    method public abstract void setTitle(CharSequence);
+    method @Deprecated public abstract void setTitleColor(@ColorInt int);
+    method public void setTransitionBackgroundFadeDuration(long);
+    method public void setTransitionManager(android.transition.TransitionManager);
+    method public void setType(int);
+    method public void setUiOptions(int);
+    method public void setUiOptions(int, int);
+    method public abstract void setVolumeControlStream(int);
+    method public void setWindowAnimations(@StyleRes int);
+    method public void setWindowManager(android.view.WindowManager, android.os.IBinder, String);
+    method public void setWindowManager(android.view.WindowManager, android.os.IBinder, String, boolean);
+    method public abstract boolean superDispatchGenericMotionEvent(android.view.MotionEvent);
+    method public abstract boolean superDispatchKeyEvent(android.view.KeyEvent);
+    method public abstract boolean superDispatchKeyShortcutEvent(android.view.KeyEvent);
+    method public abstract boolean superDispatchTouchEvent(android.view.MotionEvent);
+    method public abstract boolean superDispatchTrackballEvent(android.view.MotionEvent);
+    method public abstract void takeInputQueue(android.view.InputQueue.Callback);
+    method public abstract void takeKeyEvents(boolean);
+    method public abstract void takeSurface(android.view.SurfaceHolder.Callback2);
+    method public abstract void togglePanel(int, android.view.KeyEvent);
+    field public static final int DECOR_CAPTION_SHADE_AUTO = 0; // 0x0
+    field public static final int DECOR_CAPTION_SHADE_DARK = 2; // 0x2
+    field public static final int DECOR_CAPTION_SHADE_LIGHT = 1; // 0x1
+    field @Deprecated protected static final int DEFAULT_FEATURES = 65; // 0x41
+    field public static final int FEATURE_ACTION_BAR = 8; // 0x8
+    field public static final int FEATURE_ACTION_BAR_OVERLAY = 9; // 0x9
+    field public static final int FEATURE_ACTION_MODE_OVERLAY = 10; // 0xa
+    field public static final int FEATURE_ACTIVITY_TRANSITIONS = 13; // 0xd
+    field public static final int FEATURE_CONTENT_TRANSITIONS = 12; // 0xc
+    field public static final int FEATURE_CONTEXT_MENU = 6; // 0x6
+    field public static final int FEATURE_CUSTOM_TITLE = 7; // 0x7
+    field @Deprecated public static final int FEATURE_INDETERMINATE_PROGRESS = 5; // 0x5
+    field public static final int FEATURE_LEFT_ICON = 3; // 0x3
+    field public static final int FEATURE_NO_TITLE = 1; // 0x1
+    field public static final int FEATURE_OPTIONS_PANEL = 0; // 0x0
+    field @Deprecated public static final int FEATURE_PROGRESS = 2; // 0x2
+    field public static final int FEATURE_RIGHT_ICON = 4; // 0x4
+    field @Deprecated public static final int FEATURE_SWIPE_TO_DISMISS = 11; // 0xb
+    field public static final int ID_ANDROID_CONTENT = 16908290; // 0x1020002
+    field public static final String NAVIGATION_BAR_BACKGROUND_TRANSITION_NAME = "android:navigation:background";
+    field @Deprecated public static final int PROGRESS_END = 10000; // 0x2710
+    field @Deprecated public static final int PROGRESS_INDETERMINATE_OFF = -4; // 0xfffffffc
+    field @Deprecated public static final int PROGRESS_INDETERMINATE_ON = -3; // 0xfffffffd
+    field @Deprecated public static final int PROGRESS_SECONDARY_END = 30000; // 0x7530
+    field @Deprecated public static final int PROGRESS_SECONDARY_START = 20000; // 0x4e20
+    field @Deprecated public static final int PROGRESS_START = 0; // 0x0
+    field @Deprecated public static final int PROGRESS_VISIBILITY_OFF = -2; // 0xfffffffe
+    field @Deprecated public static final int PROGRESS_VISIBILITY_ON = -1; // 0xffffffff
+    field public static final String STATUS_BAR_BACKGROUND_TRANSITION_NAME = "android:status:background";
+  }
+
+  public static interface Window.Callback {
+    method public boolean dispatchGenericMotionEvent(android.view.MotionEvent);
+    method public boolean dispatchKeyEvent(android.view.KeyEvent);
+    method public boolean dispatchKeyShortcutEvent(android.view.KeyEvent);
+    method public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
+    method public boolean dispatchTouchEvent(android.view.MotionEvent);
+    method public boolean dispatchTrackballEvent(android.view.MotionEvent);
+    method public void onActionModeFinished(android.view.ActionMode);
+    method public void onActionModeStarted(android.view.ActionMode);
+    method public void onAttachedToWindow();
+    method public void onContentChanged();
+    method public boolean onCreatePanelMenu(int, @NonNull android.view.Menu);
+    method @Nullable public android.view.View onCreatePanelView(int);
+    method public void onDetachedFromWindow();
+    method public boolean onMenuItemSelected(int, @NonNull android.view.MenuItem);
+    method public boolean onMenuOpened(int, @NonNull android.view.Menu);
+    method public void onPanelClosed(int, @NonNull android.view.Menu);
+    method public default void onPointerCaptureChanged(boolean);
+    method public boolean onPreparePanel(int, @Nullable android.view.View, @NonNull android.view.Menu);
+    method public default void onProvideKeyboardShortcuts(java.util.List<android.view.KeyboardShortcutGroup>, @Nullable android.view.Menu, int);
+    method public boolean onSearchRequested();
+    method public boolean onSearchRequested(android.view.SearchEvent);
+    method public void onWindowAttributesChanged(android.view.WindowManager.LayoutParams);
+    method public void onWindowFocusChanged(boolean);
+    method @Nullable public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback);
+    method @Nullable public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback, int);
+  }
+
+  public static interface Window.OnFrameMetricsAvailableListener {
+    method public void onFrameMetricsAvailable(android.view.Window, android.view.FrameMetrics, int);
+  }
+
+  public static interface Window.OnRestrictedCaptionAreaChangedListener {
+    method public void onRestrictedCaptionAreaChanged(android.graphics.Rect);
+  }
+
+  public final class WindowAnimationFrameStats extends android.view.FrameStats implements android.os.Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.WindowAnimationFrameStats> CREATOR;
+  }
+
+  public final class WindowContentFrameStats extends android.view.FrameStats implements android.os.Parcelable {
+    method public int describeContents();
+    method public long getFramePostedTimeNano(int);
+    method public long getFrameReadyTimeNano(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.WindowContentFrameStats> CREATOR;
+  }
+
+  public class WindowId implements android.os.Parcelable {
+    method public int describeContents();
+    method public boolean isFocused();
+    method public void registerFocusObserver(android.view.WindowId.FocusObserver);
+    method public void unregisterFocusObserver(android.view.WindowId.FocusObserver);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.WindowId> CREATOR;
+  }
+
+  public abstract static class WindowId.FocusObserver {
+    ctor public WindowId.FocusObserver();
+    method public abstract void onFocusGained(android.view.WindowId);
+    method public abstract void onFocusLost(android.view.WindowId);
+  }
+
+  public final class WindowInsets {
+    ctor public WindowInsets(android.view.WindowInsets);
+    method @Deprecated @NonNull public android.view.WindowInsets consumeDisplayCutout();
+    method @Deprecated @NonNull public android.view.WindowInsets consumeStableInsets();
+    method @Deprecated @NonNull public android.view.WindowInsets consumeSystemWindowInsets();
+    method @Nullable public android.view.DisplayCutout getDisplayCutout();
+    method @NonNull public android.graphics.Insets getInsets(int);
+    method @NonNull public android.graphics.Insets getInsetsIgnoringVisibility(int);
+    method @Deprecated @NonNull public android.graphics.Insets getMandatorySystemGestureInsets();
+    method @Deprecated public int getStableInsetBottom();
+    method @Deprecated public int getStableInsetLeft();
+    method @Deprecated public int getStableInsetRight();
+    method @Deprecated public int getStableInsetTop();
+    method @Deprecated @NonNull public android.graphics.Insets getStableInsets();
+    method @Deprecated @NonNull public android.graphics.Insets getSystemGestureInsets();
+    method @Deprecated public int getSystemWindowInsetBottom();
+    method @Deprecated public int getSystemWindowInsetLeft();
+    method @Deprecated public int getSystemWindowInsetRight();
+    method @Deprecated public int getSystemWindowInsetTop();
+    method @Deprecated @NonNull public android.graphics.Insets getSystemWindowInsets();
+    method @Deprecated @NonNull public android.graphics.Insets getTappableElementInsets();
+    method public boolean hasInsets();
+    method @Deprecated public boolean hasStableInsets();
+    method @Deprecated public boolean hasSystemWindowInsets();
+    method @NonNull public android.view.WindowInsets inset(@NonNull android.graphics.Insets);
+    method @NonNull public android.view.WindowInsets inset(@IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int);
+    method public boolean isConsumed();
+    method public boolean isRound();
+    method public boolean isVisible(int);
+    method @Deprecated @NonNull public android.view.WindowInsets replaceSystemWindowInsets(int, int, int, int);
+    method @Deprecated @NonNull public android.view.WindowInsets replaceSystemWindowInsets(android.graphics.Rect);
+    field @NonNull public static final android.view.WindowInsets CONSUMED;
+  }
+
+  public static final class WindowInsets.Builder {
+    ctor public WindowInsets.Builder();
+    ctor public WindowInsets.Builder(@NonNull android.view.WindowInsets);
+    method @NonNull public android.view.WindowInsets build();
+    method @NonNull public android.view.WindowInsets.Builder setDisplayCutout(@Nullable android.view.DisplayCutout);
+    method @NonNull public android.view.WindowInsets.Builder setInsets(int, @NonNull android.graphics.Insets);
+    method @NonNull public android.view.WindowInsets.Builder setInsetsIgnoringVisibility(int, @NonNull android.graphics.Insets) throws java.lang.IllegalArgumentException;
+    method @Deprecated @NonNull public android.view.WindowInsets.Builder setMandatorySystemGestureInsets(@NonNull android.graphics.Insets);
+    method @Deprecated @NonNull public android.view.WindowInsets.Builder setStableInsets(@NonNull android.graphics.Insets);
+    method @Deprecated @NonNull public android.view.WindowInsets.Builder setSystemGestureInsets(@NonNull android.graphics.Insets);
+    method @Deprecated @NonNull public android.view.WindowInsets.Builder setSystemWindowInsets(@NonNull android.graphics.Insets);
+    method @Deprecated @NonNull public android.view.WindowInsets.Builder setTappableElementInsets(@NonNull android.graphics.Insets);
+    method @NonNull public android.view.WindowInsets.Builder setVisible(int, boolean);
+  }
+
+  public static final class WindowInsets.Side {
+    method public static int all();
+    field public static final int BOTTOM = 8; // 0x8
+    field public static final int LEFT = 1; // 0x1
+    field public static final int RIGHT = 4; // 0x4
+    field public static final int TOP = 2; // 0x2
+  }
+
+  public static final class WindowInsets.Type {
+    method public static int captionBar();
+    method public static int displayCutout();
+    method public static int ime();
+    method public static int mandatorySystemGestures();
+    method public static int navigationBars();
+    method public static int statusBars();
+    method public static int systemBars();
+    method public static int systemGestures();
+    method public static int tappableElement();
+  }
+
+  public final class WindowInsetsAnimation {
+    ctor public WindowInsetsAnimation(int, @Nullable android.view.animation.Interpolator, long);
+    method @FloatRange(from=0.0f, to=1.0f) public float getAlpha();
+    method public long getDurationMillis();
+    method @FloatRange(from=0.0f, to=1.0f) public float getFraction();
+    method public float getInterpolatedFraction();
+    method @Nullable public android.view.animation.Interpolator getInterpolator();
+    method public int getTypeMask();
+    method public void setAlpha(@FloatRange(from=0.0f, to=1.0f) float);
+    method public void setFraction(@FloatRange(from=0.0f, to=1.0f) float);
+  }
+
+  public static final class WindowInsetsAnimation.Bounds {
+    ctor public WindowInsetsAnimation.Bounds(@NonNull android.graphics.Insets, @NonNull android.graphics.Insets);
+    method @NonNull public android.graphics.Insets getLowerBound();
+    method @NonNull public android.graphics.Insets getUpperBound();
+    method @NonNull public android.view.WindowInsetsAnimation.Bounds inset(@NonNull android.graphics.Insets);
+  }
+
+  public abstract static class WindowInsetsAnimation.Callback {
+    ctor public WindowInsetsAnimation.Callback(int);
+    method public final int getDispatchMode();
+    method public void onEnd(@NonNull android.view.WindowInsetsAnimation);
+    method public void onPrepare(@NonNull android.view.WindowInsetsAnimation);
+    method @NonNull public abstract android.view.WindowInsets onProgress(@NonNull android.view.WindowInsets, @NonNull java.util.List<android.view.WindowInsetsAnimation>);
+    method @NonNull public android.view.WindowInsetsAnimation.Bounds onStart(@NonNull android.view.WindowInsetsAnimation, @NonNull android.view.WindowInsetsAnimation.Bounds);
+    field public static final int DISPATCH_MODE_CONTINUE_ON_SUBTREE = 1; // 0x1
+    field public static final int DISPATCH_MODE_STOP = 0; // 0x0
+  }
+
+  public interface WindowInsetsAnimationControlListener {
+    method public void onCancelled(@Nullable android.view.WindowInsetsAnimationController);
+    method public void onFinished(@NonNull android.view.WindowInsetsAnimationController);
+    method public void onReady(@NonNull android.view.WindowInsetsAnimationController, int);
+  }
+
+  public interface WindowInsetsAnimationController {
+    method public void finish(boolean);
+    method public float getCurrentAlpha();
+    method @FloatRange(from=0.0f, to=1.0f) public float getCurrentFraction();
+    method @NonNull public android.graphics.Insets getCurrentInsets();
+    method @NonNull public android.graphics.Insets getHiddenStateInsets();
+    method @NonNull public android.graphics.Insets getShownStateInsets();
+    method public int getTypes();
+    method public boolean isCancelled();
+    method public boolean isFinished();
+    method public default boolean isReady();
+    method public void setInsetsAndAlpha(@Nullable android.graphics.Insets, @FloatRange(from=0.0f, to=1.0f) float, @FloatRange(from=0.0f, to=1.0f) float);
+  }
+
+  public interface WindowInsetsController {
+    method public void addOnControllableInsetsChangedListener(@NonNull android.view.WindowInsetsController.OnControllableInsetsChangedListener);
+    method public void controlWindowInsetsAnimation(int, long, @Nullable android.view.animation.Interpolator, @Nullable android.os.CancellationSignal, @NonNull android.view.WindowInsetsAnimationControlListener);
+    method public int getSystemBarsAppearance();
+    method public int getSystemBarsBehavior();
+    method public void hide(int);
+    method public void removeOnControllableInsetsChangedListener(@NonNull android.view.WindowInsetsController.OnControllableInsetsChangedListener);
+    method public void setSystemBarsAppearance(int, int);
+    method public void setSystemBarsBehavior(int);
+    method public void show(int);
+    field public static final int APPEARANCE_LIGHT_NAVIGATION_BARS = 16; // 0x10
+    field public static final int APPEARANCE_LIGHT_STATUS_BARS = 8; // 0x8
+    field public static final int BEHAVIOR_SHOW_BARS_BY_SWIPE = 1; // 0x1
+    field public static final int BEHAVIOR_SHOW_BARS_BY_TOUCH = 0; // 0x0
+    field public static final int BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE = 2; // 0x2
+  }
+
+  public static interface WindowInsetsController.OnControllableInsetsChangedListener {
+    method public void onControllableInsetsChanged(@NonNull android.view.WindowInsetsController, int);
+  }
+
+  public interface WindowManager extends android.view.ViewManager {
+    method @NonNull public default android.view.WindowMetrics getCurrentWindowMetrics();
+    method @Deprecated public android.view.Display getDefaultDisplay();
+    method @NonNull public default android.view.WindowMetrics getMaximumWindowMetrics();
+    method public void removeViewImmediate(android.view.View);
+  }
+
+  public static class WindowManager.BadTokenException extends java.lang.RuntimeException {
+    ctor public WindowManager.BadTokenException();
+    ctor public WindowManager.BadTokenException(String);
+  }
+
+  public static class WindowManager.InvalidDisplayException extends java.lang.RuntimeException {
+    ctor public WindowManager.InvalidDisplayException();
+    ctor public WindowManager.InvalidDisplayException(String);
+  }
+
+  public static class WindowManager.LayoutParams extends android.view.ViewGroup.LayoutParams implements android.os.Parcelable {
+    ctor public WindowManager.LayoutParams();
+    ctor public WindowManager.LayoutParams(int);
+    ctor public WindowManager.LayoutParams(int, int);
+    ctor public WindowManager.LayoutParams(int, int, int);
+    ctor public WindowManager.LayoutParams(int, int, int, int, int);
+    ctor public WindowManager.LayoutParams(int, int, int, int, int, int, int);
+    ctor public WindowManager.LayoutParams(android.os.Parcel);
+    method public final int copyFrom(android.view.WindowManager.LayoutParams);
+    method public String debug(String);
+    method public int describeContents();
+    method public int getColorMode();
+    method public int getFitInsetsSides();
+    method public int getFitInsetsTypes();
+    method public final CharSequence getTitle();
+    method public boolean isFitInsetsIgnoringVisibility();
+    method public static boolean mayUseInputMethod(int);
+    method public void setColorMode(int);
+    method public void setFitInsetsIgnoringVisibility(boolean);
+    method public void setFitInsetsSides(int);
+    method public void setFitInsetsTypes(int);
+    method public final void setTitle(CharSequence);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int ALPHA_CHANGED = 128; // 0x80
+    field public static final int ANIMATION_CHANGED = 16; // 0x10
+    field public static final float BRIGHTNESS_OVERRIDE_FULL = 1.0f;
+    field public static final float BRIGHTNESS_OVERRIDE_NONE = -1.0f;
+    field public static final float BRIGHTNESS_OVERRIDE_OFF = 0.0f;
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.WindowManager.LayoutParams> CREATOR;
+    field public static final int DIM_AMOUNT_CHANGED = 32; // 0x20
+    field public static final int FIRST_APPLICATION_WINDOW = 1; // 0x1
+    field public static final int FIRST_SUB_WINDOW = 1000; // 0x3e8
+    field public static final int FIRST_SYSTEM_WINDOW = 2000; // 0x7d0
+    field public static final int FLAGS_CHANGED = 4; // 0x4
+    field public static final int FLAG_ALLOW_LOCK_WHILE_SCREEN_ON = 1; // 0x1
+    field public static final int FLAG_ALT_FOCUSABLE_IM = 131072; // 0x20000
+    field @Deprecated public static final int FLAG_BLUR_BEHIND = 4; // 0x4
+    field public static final int FLAG_DIM_BEHIND = 2; // 0x2
+    field @Deprecated public static final int FLAG_DISMISS_KEYGUARD = 4194304; // 0x400000
+    field @Deprecated public static final int FLAG_DITHER = 4096; // 0x1000
+    field public static final int FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS = -2147483648; // 0x80000000
+    field @Deprecated public static final int FLAG_FORCE_NOT_FULLSCREEN = 2048; // 0x800
+    field @Deprecated public static final int FLAG_FULLSCREEN = 1024; // 0x400
+    field public static final int FLAG_HARDWARE_ACCELERATED = 16777216; // 0x1000000
+    field public static final int FLAG_IGNORE_CHEEK_PRESSES = 32768; // 0x8000
+    field public static final int FLAG_KEEP_SCREEN_ON = 128; // 0x80
+    field @Deprecated public static final int FLAG_LAYOUT_ATTACHED_IN_DECOR = 1073741824; // 0x40000000
+    field @Deprecated public static final int FLAG_LAYOUT_INSET_DECOR = 65536; // 0x10000
+    field @Deprecated public static final int FLAG_LAYOUT_IN_OVERSCAN = 33554432; // 0x2000000
+    field public static final int FLAG_LAYOUT_IN_SCREEN = 256; // 0x100
+    field public static final int FLAG_LAYOUT_NO_LIMITS = 512; // 0x200
+    field public static final int FLAG_LOCAL_FOCUS_MODE = 268435456; // 0x10000000
+    field public static final int FLAG_NOT_FOCUSABLE = 8; // 0x8
+    field public static final int FLAG_NOT_TOUCHABLE = 16; // 0x10
+    field public static final int FLAG_NOT_TOUCH_MODAL = 32; // 0x20
+    field public static final int FLAG_SCALED = 16384; // 0x4000
+    field public static final int FLAG_SECURE = 8192; // 0x2000
+    field public static final int FLAG_SHOW_WALLPAPER = 1048576; // 0x100000
+    field @Deprecated public static final int FLAG_SHOW_WHEN_LOCKED = 524288; // 0x80000
+    field public static final int FLAG_SPLIT_TOUCH = 8388608; // 0x800000
+    field @Deprecated public static final int FLAG_TOUCHABLE_WHEN_WAKING = 64; // 0x40
+    field @Deprecated public static final int FLAG_TRANSLUCENT_NAVIGATION = 134217728; // 0x8000000
+    field @Deprecated public static final int FLAG_TRANSLUCENT_STATUS = 67108864; // 0x4000000
+    field @Deprecated public static final int FLAG_TURN_SCREEN_ON = 2097152; // 0x200000
+    field public static final int FLAG_WATCH_OUTSIDE_TOUCH = 262144; // 0x40000
+    field public static final int FORMAT_CHANGED = 8; // 0x8
+    field public static final int LAST_APPLICATION_WINDOW = 99; // 0x63
+    field public static final int LAST_SUB_WINDOW = 1999; // 0x7cf
+    field public static final int LAST_SYSTEM_WINDOW = 2999; // 0xbb7
+    field public static final int LAYOUT_CHANGED = 1; // 0x1
+    field public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS = 3; // 0x3
+    field public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT = 0; // 0x0
+    field public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER = 2; // 0x2
+    field public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES = 1; // 0x1
+    field public static final int MEMORY_TYPE_CHANGED = 256; // 0x100
+    field @Deprecated public static final int MEMORY_TYPE_GPU = 2; // 0x2
+    field @Deprecated public static final int MEMORY_TYPE_HARDWARE = 1; // 0x1
+    field @Deprecated public static final int MEMORY_TYPE_NORMAL = 0; // 0x0
+    field @Deprecated public static final int MEMORY_TYPE_PUSH_BUFFERS = 3; // 0x3
+    field public static final int ROTATION_ANIMATION_CHANGED = 4096; // 0x1000
+    field public static final int ROTATION_ANIMATION_CROSSFADE = 1; // 0x1
+    field public static final int ROTATION_ANIMATION_JUMPCUT = 2; // 0x2
+    field public static final int ROTATION_ANIMATION_ROTATE = 0; // 0x0
+    field public static final int ROTATION_ANIMATION_SEAMLESS = 3; // 0x3
+    field public static final int SCREEN_BRIGHTNESS_CHANGED = 2048; // 0x800
+    field public static final int SCREEN_ORIENTATION_CHANGED = 1024; // 0x400
+    field public static final int SOFT_INPUT_ADJUST_NOTHING = 48; // 0x30
+    field public static final int SOFT_INPUT_ADJUST_PAN = 32; // 0x20
+    field @Deprecated public static final int SOFT_INPUT_ADJUST_RESIZE = 16; // 0x10
+    field public static final int SOFT_INPUT_ADJUST_UNSPECIFIED = 0; // 0x0
+    field public static final int SOFT_INPUT_IS_FORWARD_NAVIGATION = 256; // 0x100
+    field public static final int SOFT_INPUT_MASK_ADJUST = 240; // 0xf0
+    field public static final int SOFT_INPUT_MASK_STATE = 15; // 0xf
+    field public static final int SOFT_INPUT_MODE_CHANGED = 512; // 0x200
+    field public static final int SOFT_INPUT_STATE_ALWAYS_HIDDEN = 3; // 0x3
+    field public static final int SOFT_INPUT_STATE_ALWAYS_VISIBLE = 5; // 0x5
+    field public static final int SOFT_INPUT_STATE_HIDDEN = 2; // 0x2
+    field public static final int SOFT_INPUT_STATE_UNCHANGED = 1; // 0x1
+    field public static final int SOFT_INPUT_STATE_UNSPECIFIED = 0; // 0x0
+    field public static final int SOFT_INPUT_STATE_VISIBLE = 4; // 0x4
+    field public static final int TITLE_CHANGED = 64; // 0x40
+    field public static final int TYPE_ACCESSIBILITY_OVERLAY = 2032; // 0x7f0
+    field public static final int TYPE_APPLICATION = 2; // 0x2
+    field public static final int TYPE_APPLICATION_ATTACHED_DIALOG = 1003; // 0x3eb
+    field public static final int TYPE_APPLICATION_MEDIA = 1001; // 0x3e9
+    field public static final int TYPE_APPLICATION_OVERLAY = 2038; // 0x7f6
+    field public static final int TYPE_APPLICATION_PANEL = 1000; // 0x3e8
+    field public static final int TYPE_APPLICATION_STARTING = 3; // 0x3
+    field public static final int TYPE_APPLICATION_SUB_PANEL = 1002; // 0x3ea
+    field public static final int TYPE_BASE_APPLICATION = 1; // 0x1
+    field public static final int TYPE_CHANGED = 2; // 0x2
+    field public static final int TYPE_DRAWN_APPLICATION = 4; // 0x4
+    field public static final int TYPE_INPUT_METHOD = 2011; // 0x7db
+    field public static final int TYPE_INPUT_METHOD_DIALOG = 2012; // 0x7dc
+    field public static final int TYPE_KEYGUARD_DIALOG = 2009; // 0x7d9
+    field @Deprecated public static final int TYPE_PHONE = 2002; // 0x7d2
+    field @Deprecated public static final int TYPE_PRIORITY_PHONE = 2007; // 0x7d7
+    field public static final int TYPE_PRIVATE_PRESENTATION = 2030; // 0x7ee
+    field public static final int TYPE_SEARCH_BAR = 2001; // 0x7d1
+    field public static final int TYPE_STATUS_BAR = 2000; // 0x7d0
+    field @Deprecated public static final int TYPE_STATUS_BAR_PANEL = 2014; // 0x7de
+    field @Deprecated public static final int TYPE_SYSTEM_ALERT = 2003; // 0x7d3
+    field public static final int TYPE_SYSTEM_DIALOG = 2008; // 0x7d8
+    field @Deprecated public static final int TYPE_SYSTEM_ERROR = 2010; // 0x7da
+    field @Deprecated public static final int TYPE_SYSTEM_OVERLAY = 2006; // 0x7d6
+    field @Deprecated public static final int TYPE_TOAST = 2005; // 0x7d5
+    field public static final int TYPE_WALLPAPER = 2013; // 0x7dd
+    field public float alpha;
+    field public float buttonBrightness;
+    field public float dimAmount;
+    field public int flags;
+    field public int format;
+    field public int gravity;
+    field public float horizontalMargin;
+    field public float horizontalWeight;
+    field public int layoutInDisplayCutoutMode;
+    field @Deprecated public int memoryType;
+    field public String packageName;
+    field public boolean preferMinimalPostProcessing;
+    field public int preferredDisplayModeId;
+    field @Deprecated public float preferredRefreshRate;
+    field public int rotationAnimation;
+    field public float screenBrightness;
+    field public int screenOrientation;
+    field public int softInputMode;
+    field @Deprecated public int systemUiVisibility;
+    field public android.os.IBinder token;
+    field public int type;
+    field public float verticalMargin;
+    field public float verticalWeight;
+    field public int windowAnimations;
+    field public int x;
+    field public int y;
+  }
+
+  public final class WindowMetrics {
+    ctor public WindowMetrics(@NonNull android.graphics.Rect, @NonNull android.view.WindowInsets);
+    method @NonNull public android.graphics.Rect getBounds();
+    method @NonNull public android.view.WindowInsets getWindowInsets();
+  }
+
+}
+
+package android.view.accessibility {
+
+  public final class AccessibilityEvent extends android.view.accessibility.AccessibilityRecord implements android.os.Parcelable {
+    ctor public AccessibilityEvent();
+    ctor public AccessibilityEvent(int);
+    ctor public AccessibilityEvent(@NonNull android.view.accessibility.AccessibilityEvent);
+    method public void appendRecord(android.view.accessibility.AccessibilityRecord);
+    method public int describeContents();
+    method public static String eventTypeToString(int);
+    method public int getAction();
+    method public int getContentChangeTypes();
+    method public long getEventTime();
+    method public int getEventType();
+    method public int getMovementGranularity();
+    method public CharSequence getPackageName();
+    method public android.view.accessibility.AccessibilityRecord getRecord(int);
+    method public int getRecordCount();
+    method public int getWindowChanges();
+    method public void initFromParcel(android.os.Parcel);
+    method public static android.view.accessibility.AccessibilityEvent obtain(int);
+    method public static android.view.accessibility.AccessibilityEvent obtain(android.view.accessibility.AccessibilityEvent);
+    method public static android.view.accessibility.AccessibilityEvent obtain();
+    method public void setAction(int);
+    method public void setContentChangeTypes(int);
+    method public void setEventTime(long);
+    method public void setEventType(int);
+    method public void setMovementGranularity(int);
+    method public void setPackageName(CharSequence);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 4; // 0x4
+    field public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 16; // 0x10
+    field public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 32; // 0x20
+    field public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 8; // 0x8
+    field public static final int CONTENT_CHANGE_TYPE_STATE_DESCRIPTION = 64; // 0x40
+    field public static final int CONTENT_CHANGE_TYPE_SUBTREE = 1; // 0x1
+    field public static final int CONTENT_CHANGE_TYPE_TEXT = 2; // 0x2
+    field public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0; // 0x0
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.accessibility.AccessibilityEvent> CREATOR;
+    field public static final int INVALID_POSITION = -1; // 0xffffffff
+    field @Deprecated public static final int MAX_TEXT_LENGTH = 500; // 0x1f4
+    field public static final int TYPES_ALL_MASK = -1; // 0xffffffff
+    field public static final int TYPE_ANNOUNCEMENT = 16384; // 0x4000
+    field public static final int TYPE_ASSIST_READING_CONTEXT = 16777216; // 0x1000000
+    field public static final int TYPE_GESTURE_DETECTION_END = 524288; // 0x80000
+    field public static final int TYPE_GESTURE_DETECTION_START = 262144; // 0x40000
+    field public static final int TYPE_NOTIFICATION_STATE_CHANGED = 64; // 0x40
+    field public static final int TYPE_TOUCH_EXPLORATION_GESTURE_END = 1024; // 0x400
+    field public static final int TYPE_TOUCH_EXPLORATION_GESTURE_START = 512; // 0x200
+    field public static final int TYPE_TOUCH_INTERACTION_END = 2097152; // 0x200000
+    field public static final int TYPE_TOUCH_INTERACTION_START = 1048576; // 0x100000
+    field public static final int TYPE_VIEW_ACCESSIBILITY_FOCUSED = 32768; // 0x8000
+    field public static final int TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED = 65536; // 0x10000
+    field public static final int TYPE_VIEW_CLICKED = 1; // 0x1
+    field public static final int TYPE_VIEW_CONTEXT_CLICKED = 8388608; // 0x800000
+    field public static final int TYPE_VIEW_FOCUSED = 8; // 0x8
+    field public static final int TYPE_VIEW_HOVER_ENTER = 128; // 0x80
+    field public static final int TYPE_VIEW_HOVER_EXIT = 256; // 0x100
+    field public static final int TYPE_VIEW_LONG_CLICKED = 2; // 0x2
+    field public static final int TYPE_VIEW_SCROLLED = 4096; // 0x1000
+    field public static final int TYPE_VIEW_SELECTED = 4; // 0x4
+    field public static final int TYPE_VIEW_TEXT_CHANGED = 16; // 0x10
+    field public static final int TYPE_VIEW_TEXT_SELECTION_CHANGED = 8192; // 0x2000
+    field public static final int TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY = 131072; // 0x20000
+    field public static final int TYPE_WINDOWS_CHANGED = 4194304; // 0x400000
+    field public static final int TYPE_WINDOW_CONTENT_CHANGED = 2048; // 0x800
+    field public static final int TYPE_WINDOW_STATE_CHANGED = 32; // 0x20
+    field public static final int WINDOWS_CHANGE_ACCESSIBILITY_FOCUSED = 128; // 0x80
+    field public static final int WINDOWS_CHANGE_ACTIVE = 32; // 0x20
+    field public static final int WINDOWS_CHANGE_ADDED = 1; // 0x1
+    field public static final int WINDOWS_CHANGE_BOUNDS = 8; // 0x8
+    field public static final int WINDOWS_CHANGE_CHILDREN = 512; // 0x200
+    field public static final int WINDOWS_CHANGE_FOCUSED = 64; // 0x40
+    field public static final int WINDOWS_CHANGE_LAYER = 16; // 0x10
+    field public static final int WINDOWS_CHANGE_PARENT = 256; // 0x100
+    field public static final int WINDOWS_CHANGE_PIP = 1024; // 0x400
+    field public static final int WINDOWS_CHANGE_REMOVED = 2; // 0x2
+    field public static final int WINDOWS_CHANGE_TITLE = 4; // 0x4
+  }
+
+  public interface AccessibilityEventSource {
+    method public void sendAccessibilityEvent(int);
+    method public void sendAccessibilityEventUnchecked(android.view.accessibility.AccessibilityEvent);
+  }
+
+  public final class AccessibilityManager {
+    method public void addAccessibilityRequestPreparer(android.view.accessibility.AccessibilityRequestPreparer);
+    method public boolean addAccessibilityStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener);
+    method public void addAccessibilityStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener, @Nullable android.os.Handler);
+    method public boolean addTouchExplorationStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener);
+    method public void addTouchExplorationStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener, @Nullable android.os.Handler);
+    method @Deprecated public java.util.List<android.content.pm.ServiceInfo> getAccessibilityServiceList();
+    method public java.util.List<android.accessibilityservice.AccessibilityServiceInfo> getEnabledAccessibilityServiceList(int);
+    method public java.util.List<android.accessibilityservice.AccessibilityServiceInfo> getInstalledAccessibilityServiceList();
+    method public int getRecommendedTimeoutMillis(int, int);
+    method public void interrupt();
+    method public static boolean isAccessibilityButtonSupported();
+    method public boolean isEnabled();
+    method public boolean isTouchExplorationEnabled();
+    method public void removeAccessibilityRequestPreparer(android.view.accessibility.AccessibilityRequestPreparer);
+    method public boolean removeAccessibilityStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener);
+    method public boolean removeTouchExplorationStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener);
+    method public void sendAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
+    field public static final int FLAG_CONTENT_CONTROLS = 4; // 0x4
+    field public static final int FLAG_CONTENT_ICONS = 1; // 0x1
+    field public static final int FLAG_CONTENT_TEXT = 2; // 0x2
+  }
+
+  public static interface AccessibilityManager.AccessibilityStateChangeListener {
+    method public void onAccessibilityStateChanged(boolean);
+  }
+
+  public static interface AccessibilityManager.TouchExplorationStateChangeListener {
+    method public void onTouchExplorationStateChanged(boolean);
+  }
+
+  public class AccessibilityNodeInfo implements android.os.Parcelable {
+    ctor public AccessibilityNodeInfo();
+    ctor public AccessibilityNodeInfo(@NonNull android.view.View);
+    ctor public AccessibilityNodeInfo(@NonNull android.view.View, int);
+    ctor public AccessibilityNodeInfo(@NonNull android.view.accessibility.AccessibilityNodeInfo);
+    method public void addAction(android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction);
+    method @Deprecated public void addAction(int);
+    method public void addChild(android.view.View);
+    method public void addChild(android.view.View, int);
+    method public boolean canOpenPopup();
+    method public int describeContents();
+    method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByText(String);
+    method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByViewId(String);
+    method public android.view.accessibility.AccessibilityNodeInfo findFocus(int);
+    method public android.view.accessibility.AccessibilityNodeInfo focusSearch(int);
+    method public java.util.List<android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction> getActionList();
+    method @Deprecated public int getActions();
+    method public java.util.List<java.lang.String> getAvailableExtraData();
+    method @Deprecated public void getBoundsInParent(android.graphics.Rect);
+    method public void getBoundsInScreen(android.graphics.Rect);
+    method public android.view.accessibility.AccessibilityNodeInfo getChild(int);
+    method public int getChildCount();
+    method public CharSequence getClassName();
+    method public android.view.accessibility.AccessibilityNodeInfo.CollectionInfo getCollectionInfo();
+    method public android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo getCollectionItemInfo();
+    method public CharSequence getContentDescription();
+    method public int getDrawingOrder();
+    method public CharSequence getError();
+    method @Nullable public android.view.accessibility.AccessibilityNodeInfo.ExtraRenderingInfo getExtraRenderingInfo();
+    method public android.os.Bundle getExtras();
+    method public CharSequence getHintText();
+    method public int getInputType();
+    method public android.view.accessibility.AccessibilityNodeInfo getLabelFor();
+    method public android.view.accessibility.AccessibilityNodeInfo getLabeledBy();
+    method public int getLiveRegion();
+    method public int getMaxTextLength();
+    method public int getMovementGranularities();
+    method public CharSequence getPackageName();
+    method @Nullable public CharSequence getPaneTitle();
+    method public android.view.accessibility.AccessibilityNodeInfo getParent();
+    method public android.view.accessibility.AccessibilityNodeInfo.RangeInfo getRangeInfo();
+    method @Nullable public CharSequence getStateDescription();
+    method public CharSequence getText();
+    method public int getTextSelectionEnd();
+    method public int getTextSelectionStart();
+    method @Nullable public CharSequence getTooltipText();
+    method @Nullable public android.view.accessibility.AccessibilityNodeInfo.TouchDelegateInfo getTouchDelegateInfo();
+    method public android.view.accessibility.AccessibilityNodeInfo getTraversalAfter();
+    method public android.view.accessibility.AccessibilityNodeInfo getTraversalBefore();
+    method public String getViewIdResourceName();
+    method public android.view.accessibility.AccessibilityWindowInfo getWindow();
+    method public int getWindowId();
+    method public boolean isAccessibilityFocused();
+    method public boolean isCheckable();
+    method public boolean isChecked();
+    method public boolean isClickable();
+    method public boolean isContentInvalid();
+    method public boolean isContextClickable();
+    method public boolean isDismissable();
+    method public boolean isEditable();
+    method public boolean isEnabled();
+    method public boolean isFocusable();
+    method public boolean isFocused();
+    method public boolean isHeading();
+    method public boolean isImportantForAccessibility();
+    method public boolean isLongClickable();
+    method public boolean isMultiLine();
+    method public boolean isPassword();
+    method public boolean isScreenReaderFocusable();
+    method public boolean isScrollable();
+    method public boolean isSelected();
+    method public boolean isShowingHintText();
+    method public boolean isTextEntryKey();
+    method public boolean isVisibleToUser();
+    method public static android.view.accessibility.AccessibilityNodeInfo obtain(android.view.View);
+    method public static android.view.accessibility.AccessibilityNodeInfo obtain(android.view.View, int);
+    method public static android.view.accessibility.AccessibilityNodeInfo obtain();
+    method public static android.view.accessibility.AccessibilityNodeInfo obtain(android.view.accessibility.AccessibilityNodeInfo);
+    method public boolean performAction(int);
+    method public boolean performAction(int, android.os.Bundle);
+    method public void recycle();
+    method public boolean refresh();
+    method public boolean refreshWithExtraData(String, android.os.Bundle);
+    method @Deprecated public void removeAction(int);
+    method public boolean removeAction(android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction);
+    method public boolean removeChild(android.view.View);
+    method public boolean removeChild(android.view.View, int);
+    method public void setAccessibilityFocused(boolean);
+    method public void setAvailableExtraData(java.util.List<java.lang.String>);
+    method @Deprecated public void setBoundsInParent(android.graphics.Rect);
+    method public void setBoundsInScreen(android.graphics.Rect);
+    method public void setCanOpenPopup(boolean);
+    method public void setCheckable(boolean);
+    method public void setChecked(boolean);
+    method public void setClassName(CharSequence);
+    method public void setClickable(boolean);
+    method public void setCollectionInfo(android.view.accessibility.AccessibilityNodeInfo.CollectionInfo);
+    method public void setCollectionItemInfo(android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo);
+    method public void setContentDescription(CharSequence);
+    method public void setContentInvalid(boolean);
+    method public void setContextClickable(boolean);
+    method public void setDismissable(boolean);
+    method public void setDrawingOrder(int);
+    method public void setEditable(boolean);
+    method public void setEnabled(boolean);
+    method public void setError(CharSequence);
+    method public void setFocusable(boolean);
+    method public void setFocused(boolean);
+    method public void setHeading(boolean);
+    method public void setHintText(CharSequence);
+    method public void setImportantForAccessibility(boolean);
+    method public void setInputType(int);
+    method public void setLabelFor(android.view.View);
+    method public void setLabelFor(android.view.View, int);
+    method public void setLabeledBy(android.view.View);
+    method public void setLabeledBy(android.view.View, int);
+    method public void setLiveRegion(int);
+    method public void setLongClickable(boolean);
+    method public void setMaxTextLength(int);
+    method public void setMovementGranularities(int);
+    method public void setMultiLine(boolean);
+    method public void setPackageName(CharSequence);
+    method public void setPaneTitle(@Nullable CharSequence);
+    method public void setParent(android.view.View);
+    method public void setParent(android.view.View, int);
+    method public void setPassword(boolean);
+    method public void setRangeInfo(android.view.accessibility.AccessibilityNodeInfo.RangeInfo);
+    method public void setScreenReaderFocusable(boolean);
+    method public void setScrollable(boolean);
+    method public void setSelected(boolean);
+    method public void setShowingHintText(boolean);
+    method public void setSource(android.view.View);
+    method public void setSource(android.view.View, int);
+    method public void setStateDescription(@Nullable CharSequence);
+    method public void setText(CharSequence);
+    method public void setTextEntryKey(boolean);
+    method public void setTextSelection(int, int);
+    method public void setTooltipText(@Nullable CharSequence);
+    method public void setTouchDelegateInfo(@NonNull android.view.accessibility.AccessibilityNodeInfo.TouchDelegateInfo);
+    method public void setTraversalAfter(android.view.View);
+    method public void setTraversalAfter(android.view.View, int);
+    method public void setTraversalBefore(android.view.View);
+    method public void setTraversalBefore(android.view.View, int);
+    method public void setViewIdResourceName(String);
+    method public void setVisibleToUser(boolean);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int ACTION_ACCESSIBILITY_FOCUS = 64; // 0x40
+    field public static final String ACTION_ARGUMENT_COLUMN_INT = "android.view.accessibility.action.ARGUMENT_COLUMN_INT";
+    field public static final String ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN = "ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN";
+    field public static final String ACTION_ARGUMENT_HTML_ELEMENT_STRING = "ACTION_ARGUMENT_HTML_ELEMENT_STRING";
+    field public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
+    field public static final String ACTION_ARGUMENT_MOVE_WINDOW_X = "ACTION_ARGUMENT_MOVE_WINDOW_X";
+    field public static final String ACTION_ARGUMENT_MOVE_WINDOW_Y = "ACTION_ARGUMENT_MOVE_WINDOW_Y";
+    field public static final String ACTION_ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT = "android.view.accessibility.action.ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT";
+    field public static final String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
+    field public static final String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
+    field public static final String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
+    field public static final String ACTION_ARGUMENT_SELECTION_START_INT = "ACTION_ARGUMENT_SELECTION_START_INT";
+    field public static final String ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE = "ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE";
+    field public static final int ACTION_CLEAR_ACCESSIBILITY_FOCUS = 128; // 0x80
+    field public static final int ACTION_CLEAR_FOCUS = 2; // 0x2
+    field public static final int ACTION_CLEAR_SELECTION = 8; // 0x8
+    field public static final int ACTION_CLICK = 16; // 0x10
+    field public static final int ACTION_COLLAPSE = 524288; // 0x80000
+    field public static final int ACTION_COPY = 16384; // 0x4000
+    field public static final int ACTION_CUT = 65536; // 0x10000
+    field public static final int ACTION_DISMISS = 1048576; // 0x100000
+    field public static final int ACTION_EXPAND = 262144; // 0x40000
+    field public static final int ACTION_FOCUS = 1; // 0x1
+    field public static final int ACTION_LONG_CLICK = 32; // 0x20
+    field public static final int ACTION_NEXT_AT_MOVEMENT_GRANULARITY = 256; // 0x100
+    field public static final int ACTION_NEXT_HTML_ELEMENT = 1024; // 0x400
+    field public static final int ACTION_PASTE = 32768; // 0x8000
+    field public static final int ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY = 512; // 0x200
+    field public static final int ACTION_PREVIOUS_HTML_ELEMENT = 2048; // 0x800
+    field public static final int ACTION_SCROLL_BACKWARD = 8192; // 0x2000
+    field public static final int ACTION_SCROLL_FORWARD = 4096; // 0x1000
+    field public static final int ACTION_SELECT = 4; // 0x4
+    field public static final int ACTION_SET_SELECTION = 131072; // 0x20000
+    field public static final int ACTION_SET_TEXT = 2097152; // 0x200000
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.accessibility.AccessibilityNodeInfo> CREATOR;
+    field public static final String EXTRA_DATA_RENDERING_INFO_KEY = "android.view.accessibility.extra.DATA_RENDERING_INFO_KEY";
+    field public static final String EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_LENGTH = "android.view.accessibility.extra.DATA_TEXT_CHARACTER_LOCATION_ARG_LENGTH";
+    field public static final String EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_START_INDEX = "android.view.accessibility.extra.DATA_TEXT_CHARACTER_LOCATION_ARG_START_INDEX";
+    field public static final String EXTRA_DATA_TEXT_CHARACTER_LOCATION_KEY = "android.view.accessibility.extra.DATA_TEXT_CHARACTER_LOCATION_KEY";
+    field public static final int FOCUS_ACCESSIBILITY = 2; // 0x2
+    field public static final int FOCUS_INPUT = 1; // 0x1
+    field public static final int MOVEMENT_GRANULARITY_CHARACTER = 1; // 0x1
+    field public static final int MOVEMENT_GRANULARITY_LINE = 4; // 0x4
+    field public static final int MOVEMENT_GRANULARITY_PAGE = 16; // 0x10
+    field public static final int MOVEMENT_GRANULARITY_PARAGRAPH = 8; // 0x8
+    field public static final int MOVEMENT_GRANULARITY_WORD = 2; // 0x2
+  }
+
+  public static final class AccessibilityNodeInfo.AccessibilityAction implements android.os.Parcelable {
+    ctor public AccessibilityNodeInfo.AccessibilityAction(int, @Nullable CharSequence);
+    method public int describeContents();
+    method public int getId();
+    method public CharSequence getLabel();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_ACCESSIBILITY_FOCUS;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_CLEAR_ACCESSIBILITY_FOCUS;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_CLEAR_FOCUS;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_CLEAR_SELECTION;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_CLICK;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_COLLAPSE;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_CONTEXT_CLICK;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_COPY;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_CUT;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_DISMISS;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_EXPAND;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_FOCUS;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_HIDE_TOOLTIP;
+    field @NonNull public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_IME_ENTER;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_LONG_CLICK;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_MOVE_WINDOW;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_NEXT_AT_MOVEMENT_GRANULARITY;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_NEXT_HTML_ELEMENT;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PAGE_DOWN;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PAGE_LEFT;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PAGE_RIGHT;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PAGE_UP;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PASTE;
+    field @NonNull public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PRESS_AND_HOLD;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PREVIOUS_HTML_ELEMENT;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SCROLL_BACKWARD;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SCROLL_DOWN;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SCROLL_FORWARD;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SCROLL_LEFT;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SCROLL_RIGHT;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SCROLL_TO_POSITION;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SCROLL_UP;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SELECT;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SET_PROGRESS;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SET_SELECTION;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SET_TEXT;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SHOW_ON_SCREEN;
+    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SHOW_TOOLTIP;
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction> CREATOR;
+  }
+
+  public static final class AccessibilityNodeInfo.CollectionInfo {
+    ctor public AccessibilityNodeInfo.CollectionInfo(int, int, boolean);
+    ctor public AccessibilityNodeInfo.CollectionInfo(int, int, boolean, int);
+    method public int getColumnCount();
+    method public int getRowCount();
+    method public int getSelectionMode();
+    method public boolean isHierarchical();
+    method public static android.view.accessibility.AccessibilityNodeInfo.CollectionInfo obtain(int, int, boolean);
+    method public static android.view.accessibility.AccessibilityNodeInfo.CollectionInfo obtain(int, int, boolean, int);
+    field public static final int SELECTION_MODE_MULTIPLE = 2; // 0x2
+    field public static final int SELECTION_MODE_NONE = 0; // 0x0
+    field public static final int SELECTION_MODE_SINGLE = 1; // 0x1
+  }
+
+  public static final class AccessibilityNodeInfo.CollectionItemInfo {
+    ctor public AccessibilityNodeInfo.CollectionItemInfo(int, int, int, int, boolean);
+    ctor public AccessibilityNodeInfo.CollectionItemInfo(int, int, int, int, boolean, boolean);
+    method public int getColumnIndex();
+    method public int getColumnSpan();
+    method public int getRowIndex();
+    method public int getRowSpan();
+    method @Deprecated public boolean isHeading();
+    method public boolean isSelected();
+    method public static android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo obtain(int, int, int, int, boolean);
+    method public static android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo obtain(int, int, int, int, boolean, boolean);
+  }
+
+  public static final class AccessibilityNodeInfo.ExtraRenderingInfo {
+    method @Nullable public android.util.Size getLayoutSize();
+    method public float getTextSizeInPx();
+    method public int getTextSizeUnit();
+  }
+
+  public static final class AccessibilityNodeInfo.RangeInfo {
+    ctor public AccessibilityNodeInfo.RangeInfo(int, float, float, float);
+    method public float getCurrent();
+    method public float getMax();
+    method public float getMin();
+    method public int getType();
+    method public static android.view.accessibility.AccessibilityNodeInfo.RangeInfo obtain(int, float, float, float);
+    field public static final int RANGE_TYPE_FLOAT = 1; // 0x1
+    field public static final int RANGE_TYPE_INT = 0; // 0x0
+    field public static final int RANGE_TYPE_PERCENT = 2; // 0x2
+  }
+
+  public static final class AccessibilityNodeInfo.TouchDelegateInfo implements android.os.Parcelable {
+    ctor public AccessibilityNodeInfo.TouchDelegateInfo(@NonNull java.util.Map<android.graphics.Region,android.view.View>);
+    method public int describeContents();
+    method @NonNull public android.graphics.Region getRegionAt(int);
+    method public int getRegionCount();
+    method @Nullable public android.view.accessibility.AccessibilityNodeInfo getTargetForRegion(@NonNull android.graphics.Region);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.accessibility.AccessibilityNodeInfo.TouchDelegateInfo> CREATOR;
+  }
+
+  public abstract class AccessibilityNodeProvider {
+    ctor public AccessibilityNodeProvider();
+    method public void addExtraDataToAccessibilityNodeInfo(int, android.view.accessibility.AccessibilityNodeInfo, String, android.os.Bundle);
+    method public android.view.accessibility.AccessibilityNodeInfo createAccessibilityNodeInfo(int);
+    method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByText(String, int);
+    method public android.view.accessibility.AccessibilityNodeInfo findFocus(int);
+    method public boolean performAction(int, int, android.os.Bundle);
+    field public static final int HOST_VIEW_ID = -1; // 0xffffffff
+  }
+
+  public class AccessibilityRecord {
+    ctor public AccessibilityRecord();
+    ctor public AccessibilityRecord(@NonNull android.view.accessibility.AccessibilityRecord);
+    method public int getAddedCount();
+    method public CharSequence getBeforeText();
+    method public CharSequence getClassName();
+    method public CharSequence getContentDescription();
+    method public int getCurrentItemIndex();
+    method public int getFromIndex();
+    method public int getItemCount();
+    method public int getMaxScrollX();
+    method public int getMaxScrollY();
+    method public android.os.Parcelable getParcelableData();
+    method public int getRemovedCount();
+    method public int getScrollDeltaX();
+    method public int getScrollDeltaY();
+    method public int getScrollX();
+    method public int getScrollY();
+    method public android.view.accessibility.AccessibilityNodeInfo getSource();
+    method public java.util.List<java.lang.CharSequence> getText();
+    method public int getToIndex();
+    method public int getWindowId();
+    method public boolean isChecked();
+    method public boolean isEnabled();
+    method public boolean isFullScreen();
+    method public boolean isPassword();
+    method public boolean isScrollable();
+    method public static android.view.accessibility.AccessibilityRecord obtain(android.view.accessibility.AccessibilityRecord);
+    method public static android.view.accessibility.AccessibilityRecord obtain();
+    method public void recycle();
+    method public void setAddedCount(int);
+    method public void setBeforeText(CharSequence);
+    method public void setChecked(boolean);
+    method public void setClassName(CharSequence);
+    method public void setContentDescription(CharSequence);
+    method public void setCurrentItemIndex(int);
+    method public void setEnabled(boolean);
+    method public void setFromIndex(int);
+    method public void setFullScreen(boolean);
+    method public void setItemCount(int);
+    method public void setMaxScrollX(int);
+    method public void setMaxScrollY(int);
+    method public void setParcelableData(android.os.Parcelable);
+    method public void setPassword(boolean);
+    method public void setRemovedCount(int);
+    method public void setScrollDeltaX(int);
+    method public void setScrollDeltaY(int);
+    method public void setScrollX(int);
+    method public void setScrollY(int);
+    method public void setScrollable(boolean);
+    method public void setSource(android.view.View);
+    method public void setSource(@Nullable android.view.View, int);
+    method public void setToIndex(int);
+  }
+
+  public abstract class AccessibilityRequestPreparer {
+    ctor public AccessibilityRequestPreparer(android.view.View, int);
+    method @Nullable public android.view.View getView();
+    method public abstract void onPrepareExtraData(int, String, android.os.Bundle, android.os.Message);
+    field public static final int REQUEST_TYPE_EXTRA_DATA = 1; // 0x1
+  }
+
+  public final class AccessibilityWindowInfo implements android.os.Parcelable {
+    ctor public AccessibilityWindowInfo();
+    ctor public AccessibilityWindowInfo(@NonNull android.view.accessibility.AccessibilityWindowInfo);
+    method public int describeContents();
+    method public android.view.accessibility.AccessibilityNodeInfo getAnchor();
+    method public void getBoundsInScreen(android.graphics.Rect);
+    method public android.view.accessibility.AccessibilityWindowInfo getChild(int);
+    method public int getChildCount();
+    method public int getDisplayId();
+    method public int getId();
+    method public int getLayer();
+    method public android.view.accessibility.AccessibilityWindowInfo getParent();
+    method public void getRegionInScreen(@NonNull android.graphics.Region);
+    method public android.view.accessibility.AccessibilityNodeInfo getRoot();
+    method @Nullable public CharSequence getTitle();
+    method public int getType();
+    method public boolean isAccessibilityFocused();
+    method public boolean isActive();
+    method public boolean isFocused();
+    method public boolean isInPictureInPictureMode();
+    method public static android.view.accessibility.AccessibilityWindowInfo obtain();
+    method public static android.view.accessibility.AccessibilityWindowInfo obtain(android.view.accessibility.AccessibilityWindowInfo);
+    method public void recycle();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.accessibility.AccessibilityWindowInfo> CREATOR;
+    field public static final int TYPE_ACCESSIBILITY_OVERLAY = 4; // 0x4
+    field public static final int TYPE_APPLICATION = 1; // 0x1
+    field public static final int TYPE_INPUT_METHOD = 2; // 0x2
+    field public static final int TYPE_SPLIT_SCREEN_DIVIDER = 5; // 0x5
+    field public static final int TYPE_SYSTEM = 3; // 0x3
+  }
+
+  public class CaptioningManager {
+    method public void addCaptioningChangeListener(@NonNull android.view.accessibility.CaptioningManager.CaptioningChangeListener);
+    method public final float getFontScale();
+    method @Nullable public final java.util.Locale getLocale();
+    method @NonNull public android.view.accessibility.CaptioningManager.CaptionStyle getUserStyle();
+    method public final boolean isEnabled();
+    method public void removeCaptioningChangeListener(@NonNull android.view.accessibility.CaptioningManager.CaptioningChangeListener);
+  }
+
+  public static final class CaptioningManager.CaptionStyle {
+    method @Nullable public android.graphics.Typeface getTypeface();
+    method public boolean hasBackgroundColor();
+    method public boolean hasEdgeColor();
+    method public boolean hasEdgeType();
+    method public boolean hasForegroundColor();
+    method public boolean hasWindowColor();
+    field public static final int EDGE_TYPE_DEPRESSED = 4; // 0x4
+    field public static final int EDGE_TYPE_DROP_SHADOW = 2; // 0x2
+    field public static final int EDGE_TYPE_NONE = 0; // 0x0
+    field public static final int EDGE_TYPE_OUTLINE = 1; // 0x1
+    field public static final int EDGE_TYPE_RAISED = 3; // 0x3
+    field public static final int EDGE_TYPE_UNSPECIFIED = -1; // 0xffffffff
+    field public final int backgroundColor;
+    field public final int edgeColor;
+    field public final int edgeType;
+    field public final int foregroundColor;
+    field public final int windowColor;
+  }
+
+  public abstract static class CaptioningManager.CaptioningChangeListener {
+    ctor public CaptioningManager.CaptioningChangeListener();
+    method public void onEnabledChanged(boolean);
+    method public void onFontScaleChanged(float);
+    method public void onLocaleChanged(@Nullable java.util.Locale);
+    method public void onUserStyleChanged(@NonNull android.view.accessibility.CaptioningManager.CaptionStyle);
+  }
+
+}
+
+package android.view.animation {
+
+  public class AccelerateDecelerateInterpolator extends android.view.animation.BaseInterpolator {
+    ctor public AccelerateDecelerateInterpolator();
+    ctor public AccelerateDecelerateInterpolator(android.content.Context, android.util.AttributeSet);
+    method public float getInterpolation(float);
+  }
+
+  public class AccelerateInterpolator extends android.view.animation.BaseInterpolator {
+    ctor public AccelerateInterpolator();
+    ctor public AccelerateInterpolator(float);
+    ctor public AccelerateInterpolator(android.content.Context, android.util.AttributeSet);
+    method public float getInterpolation(float);
+  }
+
+  public class AlphaAnimation extends android.view.animation.Animation {
+    ctor public AlphaAnimation(android.content.Context, android.util.AttributeSet);
+    ctor public AlphaAnimation(float, float);
+  }
+
+  public abstract class Animation implements java.lang.Cloneable {
+    ctor public Animation();
+    ctor public Animation(android.content.Context, android.util.AttributeSet);
+    method protected void applyTransformation(float, android.view.animation.Transformation);
+    method public void cancel();
+    method protected android.view.animation.Animation clone() throws java.lang.CloneNotSupportedException;
+    method public long computeDurationHint();
+    method protected void ensureInterpolator();
+    method @Deprecated @ColorInt public int getBackgroundColor();
+    method @Deprecated public boolean getDetachWallpaper();
+    method public long getDuration();
+    method public boolean getFillAfter();
+    method public boolean getFillBefore();
+    method public android.view.animation.Interpolator getInterpolator();
+    method public int getRepeatCount();
+    method public int getRepeatMode();
+    method protected float getScaleFactor();
+    method public long getStartOffset();
+    method public long getStartTime();
+    method public boolean getTransformation(long, android.view.animation.Transformation);
+    method public boolean getTransformation(long, android.view.animation.Transformation, float);
+    method public int getZAdjustment();
+    method public boolean hasEnded();
+    method public boolean hasStarted();
+    method public void initialize(int, int, int, int);
+    method public boolean isFillEnabled();
+    method public boolean isInitialized();
+    method public void reset();
+    method protected float resolveSize(int, float, int, int);
+    method public void restrictDuration(long);
+    method public void scaleCurrentDuration(float);
+    method public void setAnimationListener(android.view.animation.Animation.AnimationListener);
+    method @Deprecated public void setBackgroundColor(@ColorInt int);
+    method @Deprecated public void setDetachWallpaper(boolean);
+    method public void setDuration(long);
+    method public void setFillAfter(boolean);
+    method public void setFillBefore(boolean);
+    method public void setFillEnabled(boolean);
+    method public void setInterpolator(android.content.Context, @AnimRes @InterpolatorRes int);
+    method public void setInterpolator(android.view.animation.Interpolator);
+    method public void setRepeatCount(int);
+    method public void setRepeatMode(int);
+    method public void setStartOffset(long);
+    method public void setStartTime(long);
+    method public void setZAdjustment(int);
+    method public void start();
+    method public void startNow();
+    method public boolean willChangeBounds();
+    method public boolean willChangeTransformationMatrix();
+    field public static final int ABSOLUTE = 0; // 0x0
+    field public static final int INFINITE = -1; // 0xffffffff
+    field public static final int RELATIVE_TO_PARENT = 2; // 0x2
+    field public static final int RELATIVE_TO_SELF = 1; // 0x1
+    field public static final int RESTART = 1; // 0x1
+    field public static final int REVERSE = 2; // 0x2
+    field public static final int START_ON_FIRST_FRAME = -1; // 0xffffffff
+    field public static final int ZORDER_BOTTOM = -1; // 0xffffffff
+    field public static final int ZORDER_NORMAL = 0; // 0x0
+    field public static final int ZORDER_TOP = 1; // 0x1
+  }
+
+  public static interface Animation.AnimationListener {
+    method public void onAnimationEnd(android.view.animation.Animation);
+    method public void onAnimationRepeat(android.view.animation.Animation);
+    method public void onAnimationStart(android.view.animation.Animation);
+  }
+
+  protected static class Animation.Description {
+    ctor protected Animation.Description();
+    field public int type;
+    field public float value;
+  }
+
+  public class AnimationSet extends android.view.animation.Animation {
+    ctor public AnimationSet(android.content.Context, android.util.AttributeSet);
+    ctor public AnimationSet(boolean);
+    method public void addAnimation(android.view.animation.Animation);
+    method protected android.view.animation.AnimationSet clone() throws java.lang.CloneNotSupportedException;
+    method public java.util.List<android.view.animation.Animation> getAnimations();
+  }
+
+  public class AnimationUtils {
+    ctor public AnimationUtils();
+    method public static long currentAnimationTimeMillis();
+    method public static android.view.animation.Animation loadAnimation(android.content.Context, @AnimRes int) throws android.content.res.Resources.NotFoundException;
+    method public static android.view.animation.Interpolator loadInterpolator(android.content.Context, @AnimRes @InterpolatorRes int) throws android.content.res.Resources.NotFoundException;
+    method public static android.view.animation.LayoutAnimationController loadLayoutAnimation(android.content.Context, @AnimRes int) throws android.content.res.Resources.NotFoundException;
+    method public static android.view.animation.Animation makeInAnimation(android.content.Context, boolean);
+    method public static android.view.animation.Animation makeInChildBottomAnimation(android.content.Context);
+    method public static android.view.animation.Animation makeOutAnimation(android.content.Context, boolean);
+  }
+
+  public class AnticipateInterpolator extends android.view.animation.BaseInterpolator {
+    ctor public AnticipateInterpolator();
+    ctor public AnticipateInterpolator(float);
+    ctor public AnticipateInterpolator(android.content.Context, android.util.AttributeSet);
+    method public float getInterpolation(float);
+  }
+
+  public class AnticipateOvershootInterpolator extends android.view.animation.BaseInterpolator {
+    ctor public AnticipateOvershootInterpolator();
+    ctor public AnticipateOvershootInterpolator(float);
+    ctor public AnticipateOvershootInterpolator(float, float);
+    ctor public AnticipateOvershootInterpolator(android.content.Context, android.util.AttributeSet);
+    method public float getInterpolation(float);
+  }
+
+  public abstract class BaseInterpolator implements android.view.animation.Interpolator {
+    ctor public BaseInterpolator();
+  }
+
+  public class BounceInterpolator extends android.view.animation.BaseInterpolator {
+    ctor public BounceInterpolator();
+    ctor public BounceInterpolator(android.content.Context, android.util.AttributeSet);
+    method public float getInterpolation(float);
+  }
+
+  public class CycleInterpolator extends android.view.animation.BaseInterpolator {
+    ctor public CycleInterpolator(float);
+    ctor public CycleInterpolator(android.content.Context, android.util.AttributeSet);
+    method public float getInterpolation(float);
+  }
+
+  public class DecelerateInterpolator extends android.view.animation.BaseInterpolator {
+    ctor public DecelerateInterpolator();
+    ctor public DecelerateInterpolator(float);
+    ctor public DecelerateInterpolator(android.content.Context, android.util.AttributeSet);
+    method public float getInterpolation(float);
+  }
+
+  public class GridLayoutAnimationController extends android.view.animation.LayoutAnimationController {
+    ctor public GridLayoutAnimationController(android.content.Context, android.util.AttributeSet);
+    ctor public GridLayoutAnimationController(android.view.animation.Animation);
+    ctor public GridLayoutAnimationController(android.view.animation.Animation, float, float);
+    method public float getColumnDelay();
+    method public int getDirection();
+    method public int getDirectionPriority();
+    method public float getRowDelay();
+    method public void setColumnDelay(float);
+    method public void setDirection(int);
+    method public void setDirectionPriority(int);
+    method public void setRowDelay(float);
+    field public static final int DIRECTION_BOTTOM_TO_TOP = 2; // 0x2
+    field public static final int DIRECTION_HORIZONTAL_MASK = 1; // 0x1
+    field public static final int DIRECTION_LEFT_TO_RIGHT = 0; // 0x0
+    field public static final int DIRECTION_RIGHT_TO_LEFT = 1; // 0x1
+    field public static final int DIRECTION_TOP_TO_BOTTOM = 0; // 0x0
+    field public static final int DIRECTION_VERTICAL_MASK = 2; // 0x2
+    field public static final int PRIORITY_COLUMN = 1; // 0x1
+    field public static final int PRIORITY_NONE = 0; // 0x0
+    field public static final int PRIORITY_ROW = 2; // 0x2
+  }
+
+  public static class GridLayoutAnimationController.AnimationParameters extends android.view.animation.LayoutAnimationController.AnimationParameters {
+    ctor public GridLayoutAnimationController.AnimationParameters();
+    field public int column;
+    field public int columnsCount;
+    field public int row;
+    field public int rowsCount;
+  }
+
+  public interface Interpolator extends android.animation.TimeInterpolator {
+  }
+
+  public class LayoutAnimationController {
+    ctor public LayoutAnimationController(android.content.Context, android.util.AttributeSet);
+    ctor public LayoutAnimationController(android.view.animation.Animation);
+    ctor public LayoutAnimationController(android.view.animation.Animation, float);
+    method public android.view.animation.Animation getAnimation();
+    method public final android.view.animation.Animation getAnimationForView(android.view.View);
+    method public float getDelay();
+    method protected long getDelayForView(android.view.View);
+    method public android.view.animation.Interpolator getInterpolator();
+    method public int getOrder();
+    method protected int getTransformedIndex(android.view.animation.LayoutAnimationController.AnimationParameters);
+    method public boolean isDone();
+    method public void setAnimation(android.content.Context, @AnimRes int);
+    method public void setAnimation(android.view.animation.Animation);
+    method public void setDelay(float);
+    method public void setInterpolator(android.content.Context, @InterpolatorRes int);
+    method public void setInterpolator(android.view.animation.Interpolator);
+    method public void setOrder(int);
+    method public void start();
+    method public boolean willOverlap();
+    field public static final int ORDER_NORMAL = 0; // 0x0
+    field public static final int ORDER_RANDOM = 2; // 0x2
+    field public static final int ORDER_REVERSE = 1; // 0x1
+    field protected android.view.animation.Animation mAnimation;
+    field protected android.view.animation.Interpolator mInterpolator;
+    field protected java.util.Random mRandomizer;
+  }
+
+  public static class LayoutAnimationController.AnimationParameters {
+    ctor public LayoutAnimationController.AnimationParameters();
+    field public int count;
+    field public int index;
+  }
+
+  public class LinearInterpolator extends android.view.animation.BaseInterpolator {
+    ctor public LinearInterpolator();
+    ctor public LinearInterpolator(android.content.Context, android.util.AttributeSet);
+    method public float getInterpolation(float);
+  }
+
+  public class OvershootInterpolator extends android.view.animation.BaseInterpolator {
+    ctor public OvershootInterpolator();
+    ctor public OvershootInterpolator(float);
+    ctor public OvershootInterpolator(android.content.Context, android.util.AttributeSet);
+    method public float getInterpolation(float);
+  }
+
+  public class PathInterpolator extends android.view.animation.BaseInterpolator {
+    ctor public PathInterpolator(android.graphics.Path);
+    ctor public PathInterpolator(float, float);
+    ctor public PathInterpolator(float, float, float, float);
+    ctor public PathInterpolator(android.content.Context, android.util.AttributeSet);
+    method public float getInterpolation(float);
+  }
+
+  public class RotateAnimation extends android.view.animation.Animation {
+    ctor public RotateAnimation(android.content.Context, android.util.AttributeSet);
+    ctor public RotateAnimation(float, float);
+    ctor public RotateAnimation(float, float, float, float);
+    ctor public RotateAnimation(float, float, int, float, int, float);
+  }
+
+  public class ScaleAnimation extends android.view.animation.Animation {
+    ctor public ScaleAnimation(android.content.Context, android.util.AttributeSet);
+    ctor public ScaleAnimation(float, float, float, float);
+    ctor public ScaleAnimation(float, float, float, float, float, float);
+    ctor public ScaleAnimation(float, float, float, float, int, float, int, float);
+  }
+
+  public class Transformation {
+    ctor public Transformation();
+    method public void clear();
+    method public void compose(android.view.animation.Transformation);
+    method public float getAlpha();
+    method public android.graphics.Matrix getMatrix();
+    method public int getTransformationType();
+    method public void set(android.view.animation.Transformation);
+    method public void setAlpha(@FloatRange(from=0.0, to=1.0) float);
+    method public void setTransformationType(int);
+    method public String toShortString();
+    field public static final int TYPE_ALPHA = 1; // 0x1
+    field public static final int TYPE_BOTH = 3; // 0x3
+    field public static final int TYPE_IDENTITY = 0; // 0x0
+    field public static final int TYPE_MATRIX = 2; // 0x2
+    field protected float mAlpha;
+    field protected android.graphics.Matrix mMatrix;
+    field protected int mTransformationType;
+  }
+
+  public class TranslateAnimation extends android.view.animation.Animation {
+    ctor public TranslateAnimation(android.content.Context, android.util.AttributeSet);
+    ctor public TranslateAnimation(float, float, float, float);
+    ctor public TranslateAnimation(int, float, int, float, int, float, int, float);
+  }
+
+}
+
+package android.view.autofill {
+
+  public final class AutofillId implements android.os.Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.autofill.AutofillId> CREATOR;
+  }
+
+  public final class AutofillManager {
+    method public void cancel();
+    method public void commit();
+    method public void disableAutofillServices();
+    method @Nullable public android.content.ComponentName getAutofillServiceComponentName();
+    method @NonNull public java.util.List<java.lang.String> getAvailableFieldClassificationAlgorithms();
+    method @Nullable public String getDefaultFieldClassificationAlgorithm();
+    method @Nullable public android.view.autofill.AutofillId getNextAutofillId();
+    method @Nullable public android.service.autofill.UserData getUserData();
+    method @Nullable public String getUserDataId();
+    method public boolean hasEnabledAutofillServices();
+    method public boolean isAutofillSupported();
+    method public boolean isEnabled();
+    method public boolean isFieldClassificationEnabled();
+    method public void notifyValueChanged(android.view.View);
+    method public void notifyValueChanged(android.view.View, int, android.view.autofill.AutofillValue);
+    method public void notifyViewClicked(@NonNull android.view.View);
+    method public void notifyViewClicked(@NonNull android.view.View, int);
+    method public void notifyViewEntered(@NonNull android.view.View);
+    method public void notifyViewEntered(@NonNull android.view.View, int, @NonNull android.graphics.Rect);
+    method public void notifyViewExited(@NonNull android.view.View);
+    method public void notifyViewExited(@NonNull android.view.View, int);
+    method public void notifyViewVisibilityChanged(@NonNull android.view.View, boolean);
+    method public void notifyViewVisibilityChanged(@NonNull android.view.View, int, boolean);
+    method public void registerCallback(@Nullable android.view.autofill.AutofillManager.AutofillCallback);
+    method public void requestAutofill(@NonNull android.view.View);
+    method public void requestAutofill(@NonNull android.view.View, int, @NonNull android.graphics.Rect);
+    method public void setUserData(@Nullable android.service.autofill.UserData);
+    method public void unregisterCallback(@Nullable android.view.autofill.AutofillManager.AutofillCallback);
+    field public static final String EXTRA_ASSIST_STRUCTURE = "android.view.autofill.extra.ASSIST_STRUCTURE";
+    field public static final String EXTRA_AUTHENTICATION_RESULT = "android.view.autofill.extra.AUTHENTICATION_RESULT";
+    field public static final String EXTRA_CLIENT_STATE = "android.view.autofill.extra.CLIENT_STATE";
+  }
+
+  public abstract static class AutofillManager.AutofillCallback {
+    ctor public AutofillManager.AutofillCallback();
+    method public void onAutofillEvent(@NonNull android.view.View, int);
+    method public void onAutofillEvent(@NonNull android.view.View, int, int);
+    field public static final int EVENT_INPUT_HIDDEN = 2; // 0x2
+    field public static final int EVENT_INPUT_SHOWN = 1; // 0x1
+    field public static final int EVENT_INPUT_UNAVAILABLE = 3; // 0x3
+  }
+
+  public final class AutofillValue implements android.os.Parcelable {
+    method public int describeContents();
+    method public static android.view.autofill.AutofillValue forDate(long);
+    method public static android.view.autofill.AutofillValue forList(int);
+    method public static android.view.autofill.AutofillValue forText(@Nullable CharSequence);
+    method public static android.view.autofill.AutofillValue forToggle(boolean);
+    method public long getDateValue();
+    method public int getListValue();
+    method @NonNull public CharSequence getTextValue();
+    method public boolean getToggleValue();
+    method public boolean isDate();
+    method public boolean isList();
+    method public boolean isText();
+    method public boolean isToggle();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.autofill.AutofillValue> CREATOR;
+  }
+
+}
+
+package android.view.contentcapture {
+
+  public final class ContentCaptureCondition implements android.os.Parcelable {
+    ctor public ContentCaptureCondition(@NonNull android.content.LocusId, int);
+    method public int describeContents();
+    method public int getFlags();
+    method @NonNull public android.content.LocusId getLocusId();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.contentcapture.ContentCaptureCondition> CREATOR;
+    field public static final int FLAG_IS_REGEX = 2; // 0x2
+  }
+
+  public final class ContentCaptureContext implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public static android.view.contentcapture.ContentCaptureContext forLocusId(@NonNull String);
+    method @Nullable public android.os.Bundle getExtras();
+    method @Nullable public android.content.LocusId getLocusId();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.contentcapture.ContentCaptureContext> CREATOR;
+  }
+
+  public static final class ContentCaptureContext.Builder {
+    ctor public ContentCaptureContext.Builder(@NonNull android.content.LocusId);
+    method @NonNull public android.view.contentcapture.ContentCaptureContext build();
+    method @NonNull public android.view.contentcapture.ContentCaptureContext.Builder setExtras(@NonNull android.os.Bundle);
+  }
+
+  public final class ContentCaptureManager {
+    method @Nullable public java.util.Set<android.view.contentcapture.ContentCaptureCondition> getContentCaptureConditions();
+    method @Nullable public android.content.ComponentName getServiceComponentName();
+    method public boolean isContentCaptureEnabled();
+    method public void removeData(@NonNull android.view.contentcapture.DataRemovalRequest);
+    method public void setContentCaptureEnabled(boolean);
+    method public void shareData(@NonNull android.view.contentcapture.DataShareRequest, @NonNull java.util.concurrent.Executor, @NonNull android.view.contentcapture.DataShareWriteAdapter);
+    field public static final int DATA_SHARE_ERROR_CONCURRENT_REQUEST = 2; // 0x2
+    field public static final int DATA_SHARE_ERROR_TIMEOUT_INTERRUPTED = 3; // 0x3
+    field public static final int DATA_SHARE_ERROR_UNKNOWN = 1; // 0x1
+  }
+
+  public abstract class ContentCaptureSession implements java.lang.AutoCloseable {
+    method public void close();
+    method @NonNull public final android.view.contentcapture.ContentCaptureSession createContentCaptureSession(@NonNull android.view.contentcapture.ContentCaptureContext);
+    method public final void destroy();
+    method @Nullable public final android.view.contentcapture.ContentCaptureContext getContentCaptureContext();
+    method @NonNull public final android.view.contentcapture.ContentCaptureSessionId getContentCaptureSessionId();
+    method @NonNull public android.view.autofill.AutofillId newAutofillId(@NonNull android.view.autofill.AutofillId, long);
+    method @NonNull public final android.view.ViewStructure newViewStructure(@NonNull android.view.View);
+    method @NonNull public final android.view.ViewStructure newVirtualViewStructure(@NonNull android.view.autofill.AutofillId, long);
+    method public final void notifySessionPaused();
+    method public final void notifySessionResumed();
+    method public final void notifyViewAppeared(@NonNull android.view.ViewStructure);
+    method public final void notifyViewDisappeared(@NonNull android.view.autofill.AutofillId);
+    method public final void notifyViewInsetsChanged(@NonNull android.graphics.Insets);
+    method public final void notifyViewTextChanged(@NonNull android.view.autofill.AutofillId, @Nullable CharSequence);
+    method public final void notifyViewsDisappeared(@NonNull android.view.autofill.AutofillId, @NonNull long[]);
+    method public final void setContentCaptureContext(@Nullable android.view.contentcapture.ContentCaptureContext);
+  }
+
+  public final class ContentCaptureSessionId implements android.os.Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.contentcapture.ContentCaptureSessionId> CREATOR;
+  }
+
+  public final class DataRemovalRequest implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public java.util.List<android.view.contentcapture.DataRemovalRequest.LocusIdRequest> getLocusIdRequests();
+    method @NonNull public String getPackageName();
+    method public boolean isForEverything();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.contentcapture.DataRemovalRequest> CREATOR;
+    field public static final int FLAG_IS_PREFIX = 1; // 0x1
+  }
+
+  public static final class DataRemovalRequest.Builder {
+    ctor public DataRemovalRequest.Builder();
+    method @NonNull public android.view.contentcapture.DataRemovalRequest.Builder addLocusId(@NonNull android.content.LocusId, int);
+    method @NonNull public android.view.contentcapture.DataRemovalRequest build();
+    method @NonNull public android.view.contentcapture.DataRemovalRequest.Builder forEverything();
+  }
+
+  public final class DataRemovalRequest.LocusIdRequest {
+    method @NonNull public int getFlags();
+    method @NonNull public android.content.LocusId getLocusId();
+  }
+
+  public final class DataShareRequest implements android.os.Parcelable {
+    ctor public DataShareRequest(@Nullable android.content.LocusId, @NonNull String);
+    method public int describeContents();
+    method @Nullable public android.content.LocusId getLocusId();
+    method @NonNull public String getMimeType();
+    method @NonNull public String getPackageName();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.contentcapture.DataShareRequest> CREATOR;
+  }
+
+  public interface DataShareWriteAdapter {
+    method public default void onError(int);
+    method public void onRejected();
+    method public void onWrite(@NonNull android.os.ParcelFileDescriptor);
+  }
+
+}
+
+package android.view.inputmethod {
+
+  public class BaseInputConnection implements android.view.inputmethod.InputConnection {
+    ctor public BaseInputConnection(android.view.View, boolean);
+    method public boolean beginBatchEdit();
+    method public boolean clearMetaKeyStates(int);
+    method @CallSuper public void closeConnection();
+    method public boolean commitCompletion(android.view.inputmethod.CompletionInfo);
+    method public boolean commitContent(android.view.inputmethod.InputContentInfo, int, android.os.Bundle);
+    method public boolean commitCorrection(android.view.inputmethod.CorrectionInfo);
+    method public boolean commitText(CharSequence, int);
+    method public boolean deleteSurroundingText(int, int);
+    method public boolean deleteSurroundingTextInCodePoints(int, int);
+    method public boolean endBatchEdit();
+    method public boolean finishComposingText();
+    method public static int getComposingSpanEnd(android.text.Spannable);
+    method public static int getComposingSpanStart(android.text.Spannable);
+    method public int getCursorCapsMode(int);
+    method public android.text.Editable getEditable();
+    method public android.view.inputmethod.ExtractedText getExtractedText(android.view.inputmethod.ExtractedTextRequest, int);
+    method public android.os.Handler getHandler();
+    method public CharSequence getSelectedText(int);
+    method public CharSequence getTextAfterCursor(int, int);
+    method public CharSequence getTextBeforeCursor(int, int);
+    method public boolean performContextMenuAction(int);
+    method public boolean performEditorAction(int);
+    method public boolean performPrivateCommand(String, android.os.Bundle);
+    method public static final void removeComposingSpans(android.text.Spannable);
+    method public boolean reportFullscreenMode(boolean);
+    method public boolean requestCursorUpdates(int);
+    method public boolean sendKeyEvent(android.view.KeyEvent);
+    method public boolean setComposingRegion(int, int);
+    method public static void setComposingSpans(android.text.Spannable);
+    method public boolean setComposingText(CharSequence, int);
+    method public boolean setSelection(int, int);
+  }
+
+  public final class CompletionInfo implements android.os.Parcelable {
+    ctor public CompletionInfo(long, int, CharSequence);
+    ctor public CompletionInfo(long, int, CharSequence, CharSequence);
+    method public int describeContents();
+    method public long getId();
+    method public CharSequence getLabel();
+    method public int getPosition();
+    method public CharSequence getText();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.CompletionInfo> CREATOR;
+  }
+
+  public final class CorrectionInfo implements android.os.Parcelable {
+    ctor public CorrectionInfo(int, CharSequence, CharSequence);
+    method public int describeContents();
+    method public CharSequence getNewText();
+    method public int getOffset();
+    method public CharSequence getOldText();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.CorrectionInfo> CREATOR;
+  }
+
+  public final class CursorAnchorInfo implements android.os.Parcelable {
+    ctor public CursorAnchorInfo(android.os.Parcel);
+    method public int describeContents();
+    method public android.graphics.RectF getCharacterBounds(int);
+    method public int getCharacterBoundsFlags(int);
+    method public CharSequence getComposingText();
+    method public int getComposingTextStart();
+    method public float getInsertionMarkerBaseline();
+    method public float getInsertionMarkerBottom();
+    method public int getInsertionMarkerFlags();
+    method public float getInsertionMarkerHorizontal();
+    method public float getInsertionMarkerTop();
+    method public android.graphics.Matrix getMatrix();
+    method public int getSelectionEnd();
+    method public int getSelectionStart();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.CursorAnchorInfo> CREATOR;
+    field public static final int FLAG_HAS_INVISIBLE_REGION = 2; // 0x2
+    field public static final int FLAG_HAS_VISIBLE_REGION = 1; // 0x1
+    field public static final int FLAG_IS_RTL = 4; // 0x4
+  }
+
+  public static final class CursorAnchorInfo.Builder {
+    ctor public CursorAnchorInfo.Builder();
+    method public android.view.inputmethod.CursorAnchorInfo.Builder addCharacterBounds(int, float, float, float, float, int);
+    method public android.view.inputmethod.CursorAnchorInfo build();
+    method public void reset();
+    method public android.view.inputmethod.CursorAnchorInfo.Builder setComposingText(int, CharSequence);
+    method public android.view.inputmethod.CursorAnchorInfo.Builder setInsertionMarkerLocation(float, float, float, float, int);
+    method public android.view.inputmethod.CursorAnchorInfo.Builder setMatrix(android.graphics.Matrix);
+    method public android.view.inputmethod.CursorAnchorInfo.Builder setSelectionRange(int, int);
+  }
+
+  public class EditorInfo implements android.text.InputType android.os.Parcelable {
+    ctor public EditorInfo();
+    method public int describeContents();
+    method public void dump(android.util.Printer, String);
+    method @Nullable public CharSequence getInitialSelectedText(int);
+    method @Nullable public CharSequence getInitialTextAfterCursor(int, int);
+    method @Nullable public CharSequence getInitialTextBeforeCursor(int, int);
+    method public final void makeCompatible(int);
+    method public void setInitialSurroundingSubText(@NonNull CharSequence, int);
+    method public void setInitialSurroundingText(@NonNull CharSequence);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.EditorInfo> CREATOR;
+    field public static final int IME_ACTION_DONE = 6; // 0x6
+    field public static final int IME_ACTION_GO = 2; // 0x2
+    field public static final int IME_ACTION_NEXT = 5; // 0x5
+    field public static final int IME_ACTION_NONE = 1; // 0x1
+    field public static final int IME_ACTION_PREVIOUS = 7; // 0x7
+    field public static final int IME_ACTION_SEARCH = 3; // 0x3
+    field public static final int IME_ACTION_SEND = 4; // 0x4
+    field public static final int IME_ACTION_UNSPECIFIED = 0; // 0x0
+    field public static final int IME_FLAG_FORCE_ASCII = -2147483648; // 0x80000000
+    field public static final int IME_FLAG_NAVIGATE_NEXT = 134217728; // 0x8000000
+    field public static final int IME_FLAG_NAVIGATE_PREVIOUS = 67108864; // 0x4000000
+    field public static final int IME_FLAG_NO_ACCESSORY_ACTION = 536870912; // 0x20000000
+    field public static final int IME_FLAG_NO_ENTER_ACTION = 1073741824; // 0x40000000
+    field public static final int IME_FLAG_NO_EXTRACT_UI = 268435456; // 0x10000000
+    field public static final int IME_FLAG_NO_FULLSCREEN = 33554432; // 0x2000000
+    field public static final int IME_FLAG_NO_PERSONALIZED_LEARNING = 16777216; // 0x1000000
+    field public static final int IME_MASK_ACTION = 255; // 0xff
+    field public static final int IME_NULL = 0; // 0x0
+    field public int actionId;
+    field public CharSequence actionLabel;
+    field @Nullable public String[] contentMimeTypes;
+    field public android.os.Bundle extras;
+    field public int fieldId;
+    field public String fieldName;
+    field @Nullable public android.os.LocaleList hintLocales;
+    field public CharSequence hintText;
+    field public int imeOptions;
+    field public int initialCapsMode;
+    field public int initialSelEnd;
+    field public int initialSelStart;
+    field public int inputType;
+    field public CharSequence label;
+    field public String packageName;
+    field public String privateImeOptions;
+  }
+
+  public class ExtractedText implements android.os.Parcelable {
+    ctor public ExtractedText();
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.ExtractedText> CREATOR;
+    field public static final int FLAG_SELECTING = 2; // 0x2
+    field public static final int FLAG_SINGLE_LINE = 1; // 0x1
+    field public int flags;
+    field public CharSequence hint;
+    field public int partialEndOffset;
+    field public int partialStartOffset;
+    field public int selectionEnd;
+    field public int selectionStart;
+    field public int startOffset;
+    field public CharSequence text;
+  }
+
+  public class ExtractedTextRequest implements android.os.Parcelable {
+    ctor public ExtractedTextRequest();
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.ExtractedTextRequest> CREATOR;
+    field public int flags;
+    field public int hintMaxChars;
+    field public int hintMaxLines;
+    field public int token;
+  }
+
+  public final class InlineSuggestion implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public android.view.inputmethod.InlineSuggestionInfo getInfo();
+    method public void inflate(@NonNull android.content.Context, @NonNull android.util.Size, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.widget.inline.InlineContentView>);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InlineSuggestion> CREATOR;
+  }
+
+  public final class InlineSuggestionInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public String[] getAutofillHints();
+    method @NonNull public android.widget.inline.InlinePresentationSpec getInlinePresentationSpec();
+    method @NonNull public String getSource();
+    method @NonNull public String getType();
+    method public boolean isPinned();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InlineSuggestionInfo> CREATOR;
+    field public static final String SOURCE_AUTOFILL = "android:autofill";
+    field public static final String SOURCE_PLATFORM = "android:platform";
+    field public static final String TYPE_ACTION = "android:autofill:action";
+    field public static final String TYPE_SUGGESTION = "android:autofill:suggestion";
+  }
+
+  public final class InlineSuggestionsRequest implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public android.os.Bundle getExtras();
+    method @NonNull public String getHostPackageName();
+    method @NonNull public java.util.List<android.widget.inline.InlinePresentationSpec> getInlinePresentationSpecs();
+    method public int getMaxSuggestionCount();
+    method @NonNull public android.os.LocaleList getSupportedLocales();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InlineSuggestionsRequest> CREATOR;
+    field public static final int SUGGESTION_COUNT_UNLIMITED = 2147483647; // 0x7fffffff
+  }
+
+  public static final class InlineSuggestionsRequest.Builder {
+    ctor public InlineSuggestionsRequest.Builder(@NonNull java.util.List<android.widget.inline.InlinePresentationSpec>);
+    method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder addInlinePresentationSpecs(@NonNull android.widget.inline.InlinePresentationSpec);
+    method @NonNull public android.view.inputmethod.InlineSuggestionsRequest build();
+    method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setExtras(@NonNull android.os.Bundle);
+    method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setInlinePresentationSpecs(@NonNull java.util.List<android.widget.inline.InlinePresentationSpec>);
+    method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setMaxSuggestionCount(int);
+    method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setSupportedLocales(@NonNull android.os.LocaleList);
+  }
+
+  public final class InlineSuggestionsResponse implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public java.util.List<android.view.inputmethod.InlineSuggestion> getInlineSuggestions();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InlineSuggestionsResponse> CREATOR;
+  }
+
+  public final class InputBinding implements android.os.Parcelable {
+    ctor public InputBinding(android.view.inputmethod.InputConnection, android.os.IBinder, int, int);
+    ctor public InputBinding(android.view.inputmethod.InputConnection, android.view.inputmethod.InputBinding);
+    method public int describeContents();
+    method public android.view.inputmethod.InputConnection getConnection();
+    method public android.os.IBinder getConnectionToken();
+    method public int getPid();
+    method public int getUid();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InputBinding> CREATOR;
+  }
+
+  public interface InputConnection {
+    method public boolean beginBatchEdit();
+    method public boolean clearMetaKeyStates(int);
+    method public void closeConnection();
+    method public boolean commitCompletion(android.view.inputmethod.CompletionInfo);
+    method public boolean commitContent(@NonNull android.view.inputmethod.InputContentInfo, int, @Nullable android.os.Bundle);
+    method public boolean commitCorrection(android.view.inputmethod.CorrectionInfo);
+    method public boolean commitText(CharSequence, int);
+    method public boolean deleteSurroundingText(int, int);
+    method public boolean deleteSurroundingTextInCodePoints(int, int);
+    method public boolean endBatchEdit();
+    method public boolean finishComposingText();
+    method public int getCursorCapsMode(int);
+    method public android.view.inputmethod.ExtractedText getExtractedText(android.view.inputmethod.ExtractedTextRequest, int);
+    method public android.os.Handler getHandler();
+    method public CharSequence getSelectedText(int);
+    method public CharSequence getTextAfterCursor(int, int);
+    method public CharSequence getTextBeforeCursor(int, int);
+    method public boolean performContextMenuAction(int);
+    method public boolean performEditorAction(int);
+    method public boolean performPrivateCommand(String, android.os.Bundle);
+    method public boolean reportFullscreenMode(boolean);
+    method public boolean requestCursorUpdates(int);
+    method public boolean sendKeyEvent(android.view.KeyEvent);
+    method public boolean setComposingRegion(int, int);
+    method public boolean setComposingText(CharSequence, int);
+    method public boolean setSelection(int, int);
+    field public static final int CURSOR_UPDATE_IMMEDIATE = 1; // 0x1
+    field public static final int CURSOR_UPDATE_MONITOR = 2; // 0x2
+    field public static final int GET_EXTRACTED_TEXT_MONITOR = 1; // 0x1
+    field public static final int GET_TEXT_WITH_STYLES = 1; // 0x1
+    field public static final int INPUT_CONTENT_GRANT_READ_URI_PERMISSION = 1; // 0x1
+  }
+
+  public class InputConnectionWrapper implements android.view.inputmethod.InputConnection {
+    ctor public InputConnectionWrapper(android.view.inputmethod.InputConnection, boolean);
+    method public boolean beginBatchEdit();
+    method public boolean clearMetaKeyStates(int);
+    method public void closeConnection();
+    method public boolean commitCompletion(android.view.inputmethod.CompletionInfo);
+    method public boolean commitContent(android.view.inputmethod.InputContentInfo, int, android.os.Bundle);
+    method public boolean commitCorrection(android.view.inputmethod.CorrectionInfo);
+    method public boolean commitText(CharSequence, int);
+    method public boolean deleteSurroundingText(int, int);
+    method public boolean deleteSurroundingTextInCodePoints(int, int);
+    method public boolean endBatchEdit();
+    method public boolean finishComposingText();
+    method public int getCursorCapsMode(int);
+    method public android.view.inputmethod.ExtractedText getExtractedText(android.view.inputmethod.ExtractedTextRequest, int);
+    method public android.os.Handler getHandler();
+    method public CharSequence getSelectedText(int);
+    method public CharSequence getTextAfterCursor(int, int);
+    method public CharSequence getTextBeforeCursor(int, int);
+    method public boolean performContextMenuAction(int);
+    method public boolean performEditorAction(int);
+    method public boolean performPrivateCommand(String, android.os.Bundle);
+    method public boolean reportFullscreenMode(boolean);
+    method public boolean requestCursorUpdates(int);
+    method public boolean sendKeyEvent(android.view.KeyEvent);
+    method public boolean setComposingRegion(int, int);
+    method public boolean setComposingText(CharSequence, int);
+    method public boolean setSelection(int, int);
+    method public void setTarget(android.view.inputmethod.InputConnection);
+  }
+
+  public final class InputContentInfo implements android.os.Parcelable {
+    ctor public InputContentInfo(@NonNull android.net.Uri, @NonNull android.content.ClipDescription);
+    ctor public InputContentInfo(@NonNull android.net.Uri, @NonNull android.content.ClipDescription, @Nullable android.net.Uri);
+    method public int describeContents();
+    method @NonNull public android.net.Uri getContentUri();
+    method @NonNull public android.content.ClipDescription getDescription();
+    method @Nullable public android.net.Uri getLinkUri();
+    method public void releasePermission();
+    method public void requestPermission();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InputContentInfo> CREATOR;
+  }
+
+  public interface InputMethod {
+    method @MainThread public void attachToken(android.os.IBinder);
+    method @MainThread public void bindInput(android.view.inputmethod.InputBinding);
+    method @MainThread public void changeInputMethodSubtype(android.view.inputmethod.InputMethodSubtype);
+    method @MainThread public void createSession(android.view.inputmethod.InputMethod.SessionCallback);
+    method @MainThread public void hideSoftInput(int, android.os.ResultReceiver);
+    method @MainThread public void restartInput(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo);
+    method @MainThread public void revokeSession(android.view.inputmethod.InputMethodSession);
+    method @MainThread public void setSessionEnabled(android.view.inputmethod.InputMethodSession, boolean);
+    method @MainThread public void showSoftInput(int, android.os.ResultReceiver);
+    method @MainThread public void startInput(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo);
+    method @MainThread public void unbindInput();
+    field public static final String SERVICE_INTERFACE = "android.view.InputMethod";
+    field public static final String SERVICE_META_DATA = "android.view.im";
+    field public static final int SHOW_EXPLICIT = 1; // 0x1
+    field public static final int SHOW_FORCED = 2; // 0x2
+  }
+
+  public static interface InputMethod.SessionCallback {
+    method public void sessionCreated(android.view.inputmethod.InputMethodSession);
+  }
+
+  public final class InputMethodInfo implements android.os.Parcelable {
+    ctor public InputMethodInfo(android.content.Context, android.content.pm.ResolveInfo) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    ctor public InputMethodInfo(String, String, CharSequence, String);
+    method public int describeContents();
+    method public void dump(android.util.Printer, String);
+    method public android.content.ComponentName getComponent();
+    method public String getId();
+    method public int getIsDefaultResourceId();
+    method public String getPackageName();
+    method public android.content.pm.ServiceInfo getServiceInfo();
+    method public String getServiceName();
+    method public String getSettingsActivity();
+    method public android.view.inputmethod.InputMethodSubtype getSubtypeAt(int);
+    method public int getSubtypeCount();
+    method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
+    method public CharSequence loadLabel(android.content.pm.PackageManager);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InputMethodInfo> CREATOR;
+  }
+
+  public final class InputMethodManager {
+    method public void dispatchKeyEventFromInputMethod(@Nullable android.view.View, @NonNull android.view.KeyEvent);
+    method public void displayCompletions(android.view.View, android.view.inputmethod.CompletionInfo[]);
+    method public android.view.inputmethod.InputMethodSubtype getCurrentInputMethodSubtype();
+    method public java.util.List<android.view.inputmethod.InputMethodInfo> getEnabledInputMethodList();
+    method public java.util.List<android.view.inputmethod.InputMethodSubtype> getEnabledInputMethodSubtypeList(android.view.inputmethod.InputMethodInfo, boolean);
+    method public java.util.List<android.view.inputmethod.InputMethodInfo> getInputMethodList();
+    method public android.view.inputmethod.InputMethodSubtype getLastInputMethodSubtype();
+    method public java.util.Map<android.view.inputmethod.InputMethodInfo,java.util.List<android.view.inputmethod.InputMethodSubtype>> getShortcutInputMethodsAndSubtypes();
+    method @Deprecated public void hideSoftInputFromInputMethod(android.os.IBinder, int);
+    method public boolean hideSoftInputFromWindow(android.os.IBinder, int);
+    method public boolean hideSoftInputFromWindow(android.os.IBinder, int, android.os.ResultReceiver);
+    method @Deprecated public void hideStatusIcon(android.os.IBinder);
+    method public boolean isAcceptingText();
+    method public boolean isActive(android.view.View);
+    method public boolean isActive();
+    method public boolean isFullscreenMode();
+    method @Deprecated public boolean isWatchingCursor(android.view.View);
+    method public void restartInput(android.view.View);
+    method public void sendAppPrivateCommand(android.view.View, String, android.os.Bundle);
+    method @Deprecated public void setAdditionalInputMethodSubtypes(String, android.view.inputmethod.InputMethodSubtype[]);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean setCurrentInputMethodSubtype(android.view.inputmethod.InputMethodSubtype);
+    method @Deprecated public void setInputMethod(android.os.IBinder, String);
+    method @Deprecated public void setInputMethodAndSubtype(@NonNull android.os.IBinder, String, android.view.inputmethod.InputMethodSubtype);
+    method @Deprecated public boolean shouldOfferSwitchingToNextInputMethod(android.os.IBinder);
+    method public void showInputMethodAndSubtypeEnabler(String);
+    method public void showInputMethodPicker();
+    method public boolean showSoftInput(android.view.View, int);
+    method public boolean showSoftInput(android.view.View, int, android.os.ResultReceiver);
+    method @Deprecated public void showSoftInputFromInputMethod(android.os.IBinder, int);
+    method @Deprecated public void showStatusIcon(android.os.IBinder, String, @DrawableRes int);
+    method @Deprecated public boolean switchToLastInputMethod(android.os.IBinder);
+    method @Deprecated public boolean switchToNextInputMethod(android.os.IBinder, boolean);
+    method public void toggleSoftInput(int, int);
+    method public void toggleSoftInputFromWindow(android.os.IBinder, int, int);
+    method @Deprecated public void updateCursor(android.view.View, int, int, int, int);
+    method public void updateCursorAnchorInfo(android.view.View, android.view.inputmethod.CursorAnchorInfo);
+    method public void updateExtractedText(android.view.View, int, android.view.inputmethod.ExtractedText);
+    method public void updateSelection(android.view.View, int, int, int, int);
+    method @Deprecated public void viewClicked(android.view.View);
+    field public static final int HIDE_IMPLICIT_ONLY = 1; // 0x1
+    field public static final int HIDE_NOT_ALWAYS = 2; // 0x2
+    field public static final int RESULT_HIDDEN = 3; // 0x3
+    field public static final int RESULT_SHOWN = 2; // 0x2
+    field public static final int RESULT_UNCHANGED_HIDDEN = 1; // 0x1
+    field public static final int RESULT_UNCHANGED_SHOWN = 0; // 0x0
+    field public static final int SHOW_FORCED = 2; // 0x2
+    field public static final int SHOW_IMPLICIT = 1; // 0x1
+  }
+
+  public interface InputMethodSession {
+    method public void appPrivateCommand(String, android.os.Bundle);
+    method public void dispatchGenericMotionEvent(int, android.view.MotionEvent, android.view.inputmethod.InputMethodSession.EventCallback);
+    method public void dispatchKeyEvent(int, android.view.KeyEvent, android.view.inputmethod.InputMethodSession.EventCallback);
+    method public void dispatchTrackballEvent(int, android.view.MotionEvent, android.view.inputmethod.InputMethodSession.EventCallback);
+    method public void displayCompletions(android.view.inputmethod.CompletionInfo[]);
+    method public void finishInput();
+    method public void toggleSoftInput(int, int);
+    method public void updateCursor(android.graphics.Rect);
+    method public void updateCursorAnchorInfo(android.view.inputmethod.CursorAnchorInfo);
+    method public void updateExtractedText(int, android.view.inputmethod.ExtractedText);
+    method public void updateSelection(int, int, int, int, int, int);
+    method public void viewClicked(boolean);
+  }
+
+  public static interface InputMethodSession.EventCallback {
+    method public void finishedEvent(int, boolean);
+  }
+
+  public final class InputMethodSubtype implements android.os.Parcelable {
+    ctor @Deprecated public InputMethodSubtype(int, int, String, String, String, boolean, boolean);
+    ctor @Deprecated public InputMethodSubtype(int, int, String, String, String, boolean, boolean, int);
+    method public boolean containsExtraValueKey(String);
+    method public int describeContents();
+    method @NonNull public CharSequence getDisplayName(android.content.Context, String, android.content.pm.ApplicationInfo);
+    method public String getExtraValue();
+    method public String getExtraValueOf(String);
+    method public int getIconResId();
+    method @NonNull public String getLanguageTag();
+    method @Deprecated @NonNull public String getLocale();
+    method public String getMode();
+    method public int getNameResId();
+    method public boolean isAsciiCapable();
+    method public boolean isAuxiliary();
+    method public boolean overridesImplicitlyEnabledSubtype();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InputMethodSubtype> CREATOR;
+  }
+
+  public static class InputMethodSubtype.InputMethodSubtypeBuilder {
+    ctor public InputMethodSubtype.InputMethodSubtypeBuilder();
+    method public android.view.inputmethod.InputMethodSubtype build();
+    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setIsAsciiCapable(boolean);
+    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setIsAuxiliary(boolean);
+    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setLanguageTag(String);
+    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setOverridesImplicitlyEnabledSubtype(boolean);
+    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeExtraValue(String);
+    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeIconResId(int);
+    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeId(int);
+    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeLocale(String);
+    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeMode(String);
+    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeNameResId(int);
+  }
+
+}
+
+package android.view.inspector {
+
+  public interface InspectionCompanion<T> {
+    method public void mapProperties(@NonNull android.view.inspector.PropertyMapper);
+    method public void readProperties(@NonNull T, @NonNull android.view.inspector.PropertyReader);
+  }
+
+  public static class InspectionCompanion.UninitializedPropertyMapException extends java.lang.RuntimeException {
+    ctor public InspectionCompanion.UninitializedPropertyMapException();
+  }
+
+  public interface InspectionCompanionProvider {
+    method @Nullable public <T> android.view.inspector.InspectionCompanion<T> provide(@NonNull Class<T>);
+  }
+
+  public final class IntFlagMapping {
+    ctor public IntFlagMapping();
+    method public void add(int, int, @NonNull String);
+    method @NonNull public java.util.Set<java.lang.String> get(int);
+  }
+
+  public interface PropertyMapper {
+    method public int mapBoolean(@NonNull String, @AttrRes int);
+    method public int mapByte(@NonNull String, @AttrRes int);
+    method public int mapChar(@NonNull String, @AttrRes int);
+    method public int mapColor(@NonNull String, @AttrRes int);
+    method public int mapDouble(@NonNull String, @AttrRes int);
+    method public int mapFloat(@NonNull String, @AttrRes int);
+    method public int mapGravity(@NonNull String, @AttrRes int);
+    method public int mapInt(@NonNull String, @AttrRes int);
+    method public int mapIntEnum(@NonNull String, @AttrRes int, @NonNull java.util.function.IntFunction<java.lang.String>);
+    method public int mapIntFlag(@NonNull String, @AttrRes int, @NonNull java.util.function.IntFunction<java.util.Set<java.lang.String>>);
+    method public int mapLong(@NonNull String, @AttrRes int);
+    method public int mapObject(@NonNull String, @AttrRes int);
+    method public int mapResourceId(@NonNull String, @AttrRes int);
+    method public int mapShort(@NonNull String, @AttrRes int);
+  }
+
+  public static class PropertyMapper.PropertyConflictException extends java.lang.RuntimeException {
+    ctor public PropertyMapper.PropertyConflictException(@NonNull String, @NonNull String, @NonNull String);
+  }
+
+  public interface PropertyReader {
+    method public void readBoolean(int, boolean);
+    method public void readByte(int, byte);
+    method public void readChar(int, char);
+    method public void readColor(int, @ColorInt int);
+    method public void readColor(int, @ColorLong long);
+    method public void readColor(int, @Nullable android.graphics.Color);
+    method public void readDouble(int, double);
+    method public void readFloat(int, float);
+    method public void readGravity(int, int);
+    method public void readInt(int, int);
+    method public void readIntEnum(int, int);
+    method public void readIntFlag(int, int);
+    method public void readLong(int, long);
+    method public void readObject(int, @Nullable Object);
+    method public void readResourceId(int, @AnyRes int);
+    method public void readShort(int, short);
+  }
+
+  public static class PropertyReader.PropertyTypeMismatchException extends java.lang.RuntimeException {
+    ctor public PropertyReader.PropertyTypeMismatchException(int, @NonNull String, @NonNull String, @Nullable String);
+    ctor public PropertyReader.PropertyTypeMismatchException(int, @NonNull String, @NonNull String);
+  }
+
+  public class StaticInspectionCompanionProvider implements android.view.inspector.InspectionCompanionProvider {
+    ctor public StaticInspectionCompanionProvider();
+    method @Nullable public <T> android.view.inspector.InspectionCompanion<T> provide(@NonNull Class<T>);
+  }
+
+  public final class WindowInspector {
+    method @NonNull public static java.util.List<android.view.View> getGlobalWindowViews();
+  }
+
+}
+
+package android.view.textclassifier {
+
+  public final class ConversationAction implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public android.app.RemoteAction getAction();
+    method @FloatRange(from=0, to=1) public float getConfidenceScore();
+    method @NonNull public android.os.Bundle getExtras();
+    method @Nullable public CharSequence getTextReply();
+    method @NonNull public String getType();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.ConversationAction> CREATOR;
+    field public static final String TYPE_CALL_PHONE = "call_phone";
+    field public static final String TYPE_CREATE_REMINDER = "create_reminder";
+    field public static final String TYPE_OPEN_URL = "open_url";
+    field public static final String TYPE_SEND_EMAIL = "send_email";
+    field public static final String TYPE_SEND_SMS = "send_sms";
+    field public static final String TYPE_SHARE_LOCATION = "share_location";
+    field public static final String TYPE_TEXT_REPLY = "text_reply";
+    field public static final String TYPE_TRACK_FLIGHT = "track_flight";
+    field public static final String TYPE_VIEW_CALENDAR = "view_calendar";
+    field public static final String TYPE_VIEW_MAP = "view_map";
+  }
+
+  public static final class ConversationAction.Builder {
+    ctor public ConversationAction.Builder(@NonNull String);
+    method @NonNull public android.view.textclassifier.ConversationAction build();
+    method @NonNull public android.view.textclassifier.ConversationAction.Builder setAction(@Nullable android.app.RemoteAction);
+    method @NonNull public android.view.textclassifier.ConversationAction.Builder setConfidenceScore(@FloatRange(from=0, to=1) float);
+    method @NonNull public android.view.textclassifier.ConversationAction.Builder setExtras(@Nullable android.os.Bundle);
+    method @NonNull public android.view.textclassifier.ConversationAction.Builder setTextReply(@Nullable CharSequence);
+  }
+
+  public final class ConversationActions implements android.os.Parcelable {
+    ctor public ConversationActions(@NonNull java.util.List<android.view.textclassifier.ConversationAction>, @Nullable String);
+    method public int describeContents();
+    method @NonNull public java.util.List<android.view.textclassifier.ConversationAction> getConversationActions();
+    method @Nullable public String getId();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.ConversationActions> CREATOR;
+  }
+
+  public static final class ConversationActions.Message implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public android.app.Person getAuthor();
+    method @NonNull public android.os.Bundle getExtras();
+    method @Nullable public java.time.ZonedDateTime getReferenceTime();
+    method @Nullable public CharSequence getText();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.ConversationActions.Message> CREATOR;
+    field @NonNull public static final android.app.Person PERSON_USER_OTHERS;
+    field @NonNull public static final android.app.Person PERSON_USER_SELF;
+  }
+
+  public static final class ConversationActions.Message.Builder {
+    ctor public ConversationActions.Message.Builder(@NonNull android.app.Person);
+    method @NonNull public android.view.textclassifier.ConversationActions.Message build();
+    method @NonNull public android.view.textclassifier.ConversationActions.Message.Builder setExtras(@Nullable android.os.Bundle);
+    method @NonNull public android.view.textclassifier.ConversationActions.Message.Builder setReferenceTime(@Nullable java.time.ZonedDateTime);
+    method @NonNull public android.view.textclassifier.ConversationActions.Message.Builder setText(@Nullable CharSequence);
+  }
+
+  public static final class ConversationActions.Request implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public String getCallingPackageName();
+    method @NonNull public java.util.List<android.view.textclassifier.ConversationActions.Message> getConversation();
+    method @NonNull public android.os.Bundle getExtras();
+    method @NonNull public java.util.List<java.lang.String> getHints();
+    method @IntRange(from=0xffffffff) public int getMaxSuggestions();
+    method @NonNull public android.view.textclassifier.TextClassifier.EntityConfig getTypeConfig();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.ConversationActions.Request> CREATOR;
+    field public static final String HINT_FOR_IN_APP = "in_app";
+    field public static final String HINT_FOR_NOTIFICATION = "notification";
+  }
+
+  public static final class ConversationActions.Request.Builder {
+    ctor public ConversationActions.Request.Builder(@NonNull java.util.List<android.view.textclassifier.ConversationActions.Message>);
+    method @NonNull public android.view.textclassifier.ConversationActions.Request build();
+    method @NonNull public android.view.textclassifier.ConversationActions.Request.Builder setExtras(@Nullable android.os.Bundle);
+    method @NonNull public android.view.textclassifier.ConversationActions.Request.Builder setHints(@Nullable java.util.List<java.lang.String>);
+    method @NonNull public android.view.textclassifier.ConversationActions.Request.Builder setMaxSuggestions(@IntRange(from=0xffffffff) int);
+    method @NonNull public android.view.textclassifier.ConversationActions.Request.Builder setTypeConfig(@Nullable android.view.textclassifier.TextClassifier.EntityConfig);
+  }
+
+  public final class SelectionEvent implements android.os.Parcelable {
+    method @NonNull public static android.view.textclassifier.SelectionEvent createSelectionActionEvent(int, int, int);
+    method @NonNull public static android.view.textclassifier.SelectionEvent createSelectionActionEvent(int, int, int, @NonNull android.view.textclassifier.TextClassification);
+    method @NonNull public static android.view.textclassifier.SelectionEvent createSelectionModifiedEvent(int, int);
+    method @NonNull public static android.view.textclassifier.SelectionEvent createSelectionModifiedEvent(int, int, @NonNull android.view.textclassifier.TextClassification);
+    method @NonNull public static android.view.textclassifier.SelectionEvent createSelectionModifiedEvent(int, int, @NonNull android.view.textclassifier.TextSelection);
+    method @NonNull public static android.view.textclassifier.SelectionEvent createSelectionStartedEvent(int, int);
+    method public int describeContents();
+    method public long getDurationSincePreviousEvent();
+    method public long getDurationSinceSessionStart();
+    method public int getEnd();
+    method @NonNull public String getEntityType();
+    method public int getEventIndex();
+    method public long getEventTime();
+    method public int getEventType();
+    method public int getInvocationMethod();
+    method @NonNull public String getPackageName();
+    method @Nullable public String getResultId();
+    method @Nullable public android.view.textclassifier.TextClassificationSessionId getSessionId();
+    method public int getSmartEnd();
+    method public int getSmartStart();
+    method public int getStart();
+    method @NonNull public String getWidgetType();
+    method @Nullable public String getWidgetVersion();
+    method public static boolean isTerminal(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int ACTION_ABANDON = 107; // 0x6b
+    field public static final int ACTION_COPY = 101; // 0x65
+    field public static final int ACTION_CUT = 103; // 0x67
+    field public static final int ACTION_DRAG = 106; // 0x6a
+    field public static final int ACTION_OTHER = 108; // 0x6c
+    field public static final int ACTION_OVERTYPE = 100; // 0x64
+    field public static final int ACTION_PASTE = 102; // 0x66
+    field public static final int ACTION_RESET = 201; // 0xc9
+    field public static final int ACTION_SELECT_ALL = 200; // 0xc8
+    field public static final int ACTION_SHARE = 104; // 0x68
+    field public static final int ACTION_SMART_SHARE = 105; // 0x69
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.SelectionEvent> CREATOR;
+    field public static final int EVENT_AUTO_SELECTION = 5; // 0x5
+    field public static final int EVENT_SELECTION_MODIFIED = 2; // 0x2
+    field public static final int EVENT_SELECTION_STARTED = 1; // 0x1
+    field public static final int EVENT_SMART_SELECTION_MULTI = 4; // 0x4
+    field public static final int EVENT_SMART_SELECTION_SINGLE = 3; // 0x3
+    field public static final int INVOCATION_LINK = 2; // 0x2
+    field public static final int INVOCATION_MANUAL = 1; // 0x1
+    field public static final int INVOCATION_UNKNOWN = 0; // 0x0
+  }
+
+  public final class TextClassification implements android.os.Parcelable {
+    method public int describeContents();
+    method public java.util.List<android.app.RemoteAction> getActions();
+    method @FloatRange(from=0.0, to=1.0) public float getConfidenceScore(String);
+    method @NonNull public String getEntity(int);
+    method @IntRange(from=0) public int getEntityCount();
+    method @NonNull public android.os.Bundle getExtras();
+    method @Deprecated @Nullable public android.graphics.drawable.Drawable getIcon();
+    method @Nullable public String getId();
+    method @Deprecated @Nullable public android.content.Intent getIntent();
+    method @Deprecated @Nullable public CharSequence getLabel();
+    method @Deprecated @Nullable public android.view.View.OnClickListener getOnClickListener();
+    method @Nullable public String getText();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassification> CREATOR;
+  }
+
+  public static final class TextClassification.Builder {
+    ctor public TextClassification.Builder();
+    method @NonNull public android.view.textclassifier.TextClassification.Builder addAction(@NonNull android.app.RemoteAction);
+    method @NonNull public android.view.textclassifier.TextClassification build();
+    method @NonNull public android.view.textclassifier.TextClassification.Builder setEntityType(@NonNull String, @FloatRange(from=0.0, to=1.0) float);
+    method @NonNull public android.view.textclassifier.TextClassification.Builder setExtras(@Nullable android.os.Bundle);
+    method @Deprecated @NonNull public android.view.textclassifier.TextClassification.Builder setIcon(@Nullable android.graphics.drawable.Drawable);
+    method @NonNull public android.view.textclassifier.TextClassification.Builder setId(@Nullable String);
+    method @Deprecated @NonNull public android.view.textclassifier.TextClassification.Builder setIntent(@Nullable android.content.Intent);
+    method @Deprecated @NonNull public android.view.textclassifier.TextClassification.Builder setLabel(@Nullable String);
+    method @Deprecated @NonNull public android.view.textclassifier.TextClassification.Builder setOnClickListener(@Nullable android.view.View.OnClickListener);
+    method @NonNull public android.view.textclassifier.TextClassification.Builder setText(@Nullable String);
+  }
+
+  public static final class TextClassification.Request implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public String getCallingPackageName();
+    method @Nullable public android.os.LocaleList getDefaultLocales();
+    method @IntRange(from=0) public int getEndIndex();
+    method @NonNull public android.os.Bundle getExtras();
+    method @Nullable public java.time.ZonedDateTime getReferenceTime();
+    method @IntRange(from=0) public int getStartIndex();
+    method @NonNull public CharSequence getText();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassification.Request> CREATOR;
+  }
+
+  public static final class TextClassification.Request.Builder {
+    ctor public TextClassification.Request.Builder(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int);
+    method @NonNull public android.view.textclassifier.TextClassification.Request build();
+    method @NonNull public android.view.textclassifier.TextClassification.Request.Builder setDefaultLocales(@Nullable android.os.LocaleList);
+    method @NonNull public android.view.textclassifier.TextClassification.Request.Builder setExtras(@Nullable android.os.Bundle);
+    method @NonNull public android.view.textclassifier.TextClassification.Request.Builder setReferenceTime(@Nullable java.time.ZonedDateTime);
+  }
+
+  public final class TextClassificationContext implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public String getPackageName();
+    method @NonNull public String getWidgetType();
+    method @Nullable public String getWidgetVersion();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassificationContext> CREATOR;
+  }
+
+  public static final class TextClassificationContext.Builder {
+    ctor public TextClassificationContext.Builder(@NonNull String, @NonNull String);
+    method @NonNull public android.view.textclassifier.TextClassificationContext build();
+    method public android.view.textclassifier.TextClassificationContext.Builder setWidgetVersion(@Nullable String);
+  }
+
+  public final class TextClassificationManager {
+    method @NonNull public android.view.textclassifier.TextClassifier createTextClassificationSession(@NonNull android.view.textclassifier.TextClassificationContext);
+    method @NonNull public android.view.textclassifier.TextClassifier getTextClassifier();
+    method public void setTextClassificationSessionFactory(@Nullable android.view.textclassifier.TextClassificationSessionFactory);
+    method public void setTextClassifier(@Nullable android.view.textclassifier.TextClassifier);
+  }
+
+  public interface TextClassificationSessionFactory {
+    method @NonNull public android.view.textclassifier.TextClassifier createTextClassificationSession(@NonNull android.view.textclassifier.TextClassificationContext);
+  }
+
+  public final class TextClassificationSessionId implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public String getValue();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassificationSessionId> CREATOR;
+  }
+
+  public interface TextClassifier {
+    method @NonNull @WorkerThread public default android.view.textclassifier.TextClassification classifyText(@NonNull android.view.textclassifier.TextClassification.Request);
+    method @NonNull @WorkerThread public default android.view.textclassifier.TextClassification classifyText(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @Nullable android.os.LocaleList);
+    method public default void destroy();
+    method @NonNull @WorkerThread public default android.view.textclassifier.TextLanguage detectLanguage(@NonNull android.view.textclassifier.TextLanguage.Request);
+    method @NonNull @WorkerThread public default android.view.textclassifier.TextLinks generateLinks(@NonNull android.view.textclassifier.TextLinks.Request);
+    method @WorkerThread public default int getMaxGenerateLinksTextLength();
+    method public default boolean isDestroyed();
+    method public default void onSelectionEvent(@NonNull android.view.textclassifier.SelectionEvent);
+    method public default void onTextClassifierEvent(@NonNull android.view.textclassifier.TextClassifierEvent);
+    method @NonNull @WorkerThread public default android.view.textclassifier.ConversationActions suggestConversationActions(@NonNull android.view.textclassifier.ConversationActions.Request);
+    method @NonNull @WorkerThread public default android.view.textclassifier.TextSelection suggestSelection(@NonNull android.view.textclassifier.TextSelection.Request);
+    method @NonNull @WorkerThread public default android.view.textclassifier.TextSelection suggestSelection(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @Nullable android.os.LocaleList);
+    field public static final String EXTRA_FROM_TEXT_CLASSIFIER = "android.view.textclassifier.extra.FROM_TEXT_CLASSIFIER";
+    field public static final String HINT_TEXT_IS_EDITABLE = "android.text_is_editable";
+    field public static final String HINT_TEXT_IS_NOT_EDITABLE = "android.text_is_not_editable";
+    field public static final android.view.textclassifier.TextClassifier NO_OP;
+    field public static final String TYPE_ADDRESS = "address";
+    field public static final String TYPE_DATE = "date";
+    field public static final String TYPE_DATE_TIME = "datetime";
+    field public static final String TYPE_EMAIL = "email";
+    field public static final String TYPE_FLIGHT_NUMBER = "flight";
+    field public static final String TYPE_OTHER = "other";
+    field public static final String TYPE_PHONE = "phone";
+    field public static final String TYPE_UNKNOWN = "";
+    field public static final String TYPE_URL = "url";
+    field public static final String WIDGET_TYPE_CUSTOM_EDITTEXT = "customedit";
+    field public static final String WIDGET_TYPE_CUSTOM_TEXTVIEW = "customview";
+    field public static final String WIDGET_TYPE_CUSTOM_UNSELECTABLE_TEXTVIEW = "nosel-customview";
+    field public static final String WIDGET_TYPE_EDITTEXT = "edittext";
+    field public static final String WIDGET_TYPE_EDIT_WEBVIEW = "edit-webview";
+    field public static final String WIDGET_TYPE_NOTIFICATION = "notification";
+    field public static final String WIDGET_TYPE_TEXTVIEW = "textview";
+    field public static final String WIDGET_TYPE_UNKNOWN = "unknown";
+    field public static final String WIDGET_TYPE_UNSELECTABLE_TEXTVIEW = "nosel-textview";
+    field public static final String WIDGET_TYPE_WEBVIEW = "webview";
+  }
+
+  public static final class TextClassifier.EntityConfig implements android.os.Parcelable {
+    method @Deprecated public static android.view.textclassifier.TextClassifier.EntityConfig create(@Nullable java.util.Collection<java.lang.String>, @Nullable java.util.Collection<java.lang.String>, @Nullable java.util.Collection<java.lang.String>);
+    method @Deprecated public static android.view.textclassifier.TextClassifier.EntityConfig createWithExplicitEntityList(@Nullable java.util.Collection<java.lang.String>);
+    method @Deprecated public static android.view.textclassifier.TextClassifier.EntityConfig createWithHints(@Nullable java.util.Collection<java.lang.String>);
+    method public int describeContents();
+    method public java.util.Collection<java.lang.String> getHints();
+    method public java.util.Collection<java.lang.String> resolveEntityListModifications(@NonNull java.util.Collection<java.lang.String>);
+    method public boolean shouldIncludeTypesFromTextClassifier();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassifier.EntityConfig> CREATOR;
+  }
+
+  public static final class TextClassifier.EntityConfig.Builder {
+    ctor public TextClassifier.EntityConfig.Builder();
+    method @NonNull public android.view.textclassifier.TextClassifier.EntityConfig build();
+    method @NonNull public android.view.textclassifier.TextClassifier.EntityConfig.Builder includeTypesFromTextClassifier(boolean);
+    method @NonNull public android.view.textclassifier.TextClassifier.EntityConfig.Builder setExcludedTypes(@Nullable java.util.Collection<java.lang.String>);
+    method @NonNull public android.view.textclassifier.TextClassifier.EntityConfig.Builder setHints(@Nullable java.util.Collection<java.lang.String>);
+    method @NonNull public android.view.textclassifier.TextClassifier.EntityConfig.Builder setIncludedTypes(@Nullable java.util.Collection<java.lang.String>);
+  }
+
+  public abstract class TextClassifierEvent implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public int[] getActionIndices();
+    method @NonNull public String[] getEntityTypes();
+    method public int getEventCategory();
+    method @Nullable public android.view.textclassifier.TextClassificationContext getEventContext();
+    method public int getEventIndex();
+    method public int getEventType();
+    method @NonNull public android.os.Bundle getExtras();
+    method @Nullable public android.icu.util.ULocale getLocale();
+    method @Nullable public String getModelName();
+    method @Nullable public String getResultId();
+    method @NonNull public float[] getScores();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int CATEGORY_CONVERSATION_ACTIONS = 3; // 0x3
+    field public static final int CATEGORY_LANGUAGE_DETECTION = 4; // 0x4
+    field public static final int CATEGORY_LINKIFY = 2; // 0x2
+    field public static final int CATEGORY_SELECTION = 1; // 0x1
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassifierEvent> CREATOR;
+    field public static final int TYPE_ACTIONS_GENERATED = 20; // 0x14
+    field public static final int TYPE_ACTIONS_SHOWN = 6; // 0x6
+    field public static final int TYPE_AUTO_SELECTION = 5; // 0x5
+    field public static final int TYPE_COPY_ACTION = 9; // 0x9
+    field public static final int TYPE_CUT_ACTION = 11; // 0xb
+    field public static final int TYPE_LINKS_GENERATED = 21; // 0x15
+    field public static final int TYPE_LINK_CLICKED = 7; // 0x7
+    field public static final int TYPE_MANUAL_REPLY = 19; // 0x13
+    field public static final int TYPE_OTHER_ACTION = 16; // 0x10
+    field public static final int TYPE_OVERTYPE = 8; // 0x8
+    field public static final int TYPE_PASTE_ACTION = 10; // 0xa
+    field public static final int TYPE_SELECTION_DESTROYED = 15; // 0xf
+    field public static final int TYPE_SELECTION_DRAG = 14; // 0xe
+    field public static final int TYPE_SELECTION_MODIFIED = 2; // 0x2
+    field public static final int TYPE_SELECTION_RESET = 18; // 0x12
+    field public static final int TYPE_SELECTION_STARTED = 1; // 0x1
+    field public static final int TYPE_SELECT_ALL = 17; // 0x11
+    field public static final int TYPE_SHARE_ACTION = 12; // 0xc
+    field public static final int TYPE_SMART_ACTION = 13; // 0xd
+    field public static final int TYPE_SMART_SELECTION_MULTI = 4; // 0x4
+    field public static final int TYPE_SMART_SELECTION_SINGLE = 3; // 0x3
+  }
+
+  public abstract static class TextClassifierEvent.Builder<T extends android.view.textclassifier.TextClassifierEvent.Builder<T>> {
+    method @NonNull public T setActionIndices(@NonNull int...);
+    method @NonNull public T setEntityTypes(@NonNull java.lang.String...);
+    method @NonNull public T setEventContext(@Nullable android.view.textclassifier.TextClassificationContext);
+    method @NonNull public T setEventIndex(int);
+    method @NonNull public T setExtras(@NonNull android.os.Bundle);
+    method @NonNull public T setLocale(@Nullable android.icu.util.ULocale);
+    method @NonNull public T setModelName(@Nullable String);
+    method @NonNull public T setResultId(@Nullable String);
+    method @NonNull public T setScores(@NonNull float...);
+  }
+
+  public static final class TextClassifierEvent.ConversationActionsEvent extends android.view.textclassifier.TextClassifierEvent implements android.os.Parcelable {
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassifierEvent.ConversationActionsEvent> CREATOR;
+  }
+
+  public static final class TextClassifierEvent.ConversationActionsEvent.Builder extends android.view.textclassifier.TextClassifierEvent.Builder<android.view.textclassifier.TextClassifierEvent.ConversationActionsEvent.Builder> {
+    ctor public TextClassifierEvent.ConversationActionsEvent.Builder(int);
+    method @NonNull public android.view.textclassifier.TextClassifierEvent.ConversationActionsEvent build();
+  }
+
+  public static final class TextClassifierEvent.LanguageDetectionEvent extends android.view.textclassifier.TextClassifierEvent implements android.os.Parcelable {
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassifierEvent.LanguageDetectionEvent> CREATOR;
+  }
+
+  public static final class TextClassifierEvent.LanguageDetectionEvent.Builder extends android.view.textclassifier.TextClassifierEvent.Builder<android.view.textclassifier.TextClassifierEvent.LanguageDetectionEvent.Builder> {
+    ctor public TextClassifierEvent.LanguageDetectionEvent.Builder(int);
+    method @NonNull public android.view.textclassifier.TextClassifierEvent.LanguageDetectionEvent build();
+  }
+
+  public static final class TextClassifierEvent.TextLinkifyEvent extends android.view.textclassifier.TextClassifierEvent implements android.os.Parcelable {
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassifierEvent.TextLinkifyEvent> CREATOR;
+  }
+
+  public static final class TextClassifierEvent.TextLinkifyEvent.Builder extends android.view.textclassifier.TextClassifierEvent.Builder<android.view.textclassifier.TextClassifierEvent.TextLinkifyEvent.Builder> {
+    ctor public TextClassifierEvent.TextLinkifyEvent.Builder(int);
+    method @NonNull public android.view.textclassifier.TextClassifierEvent.TextLinkifyEvent build();
+  }
+
+  public static final class TextClassifierEvent.TextSelectionEvent extends android.view.textclassifier.TextClassifierEvent implements android.os.Parcelable {
+    method public int getRelativeSuggestedWordEndIndex();
+    method public int getRelativeSuggestedWordStartIndex();
+    method public int getRelativeWordEndIndex();
+    method public int getRelativeWordStartIndex();
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassifierEvent.TextSelectionEvent> CREATOR;
+  }
+
+  public static final class TextClassifierEvent.TextSelectionEvent.Builder extends android.view.textclassifier.TextClassifierEvent.Builder<android.view.textclassifier.TextClassifierEvent.TextSelectionEvent.Builder> {
+    ctor public TextClassifierEvent.TextSelectionEvent.Builder(int);
+    method @NonNull public android.view.textclassifier.TextClassifierEvent.TextSelectionEvent build();
+    method @NonNull public android.view.textclassifier.TextClassifierEvent.TextSelectionEvent.Builder setRelativeSuggestedWordEndIndex(int);
+    method @NonNull public android.view.textclassifier.TextClassifierEvent.TextSelectionEvent.Builder setRelativeSuggestedWordStartIndex(int);
+    method @NonNull public android.view.textclassifier.TextClassifierEvent.TextSelectionEvent.Builder setRelativeWordEndIndex(int);
+    method @NonNull public android.view.textclassifier.TextClassifierEvent.TextSelectionEvent.Builder setRelativeWordStartIndex(int);
+  }
+
+  public final class TextLanguage implements android.os.Parcelable {
+    method public int describeContents();
+    method @FloatRange(from=0.0, to=1.0) public float getConfidenceScore(@NonNull android.icu.util.ULocale);
+    method @NonNull public android.os.Bundle getExtras();
+    method @Nullable public String getId();
+    method @NonNull public android.icu.util.ULocale getLocale(int);
+    method @IntRange(from=0) public int getLocaleHypothesisCount();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextLanguage> CREATOR;
+  }
+
+  public static final class TextLanguage.Builder {
+    ctor public TextLanguage.Builder();
+    method @NonNull public android.view.textclassifier.TextLanguage build();
+    method @NonNull public android.view.textclassifier.TextLanguage.Builder putLocale(@NonNull android.icu.util.ULocale, @FloatRange(from=0.0, to=1.0) float);
+    method @NonNull public android.view.textclassifier.TextLanguage.Builder setExtras(@NonNull android.os.Bundle);
+    method @NonNull public android.view.textclassifier.TextLanguage.Builder setId(@Nullable String);
+  }
+
+  public static final class TextLanguage.Request implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public String getCallingPackageName();
+    method @NonNull public android.os.Bundle getExtras();
+    method @NonNull public CharSequence getText();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextLanguage.Request> CREATOR;
+  }
+
+  public static final class TextLanguage.Request.Builder {
+    ctor public TextLanguage.Request.Builder(@NonNull CharSequence);
+    method @NonNull public android.view.textclassifier.TextLanguage.Request build();
+    method @NonNull public android.view.textclassifier.TextLanguage.Request.Builder setExtras(@NonNull android.os.Bundle);
+  }
+
+  public final class TextLinks implements android.os.Parcelable {
+    method public int apply(@NonNull android.text.Spannable, int, @Nullable java.util.function.Function<android.view.textclassifier.TextLinks.TextLink,android.view.textclassifier.TextLinks.TextLinkSpan>);
+    method public int describeContents();
+    method @NonNull public android.os.Bundle getExtras();
+    method @NonNull public java.util.Collection<android.view.textclassifier.TextLinks.TextLink> getLinks();
+    method @NonNull public CharSequence getText();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int APPLY_STRATEGY_IGNORE = 0; // 0x0
+    field public static final int APPLY_STRATEGY_REPLACE = 1; // 0x1
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextLinks> CREATOR;
+    field public static final int STATUS_DIFFERENT_TEXT = 3; // 0x3
+    field public static final int STATUS_LINKS_APPLIED = 0; // 0x0
+    field public static final int STATUS_NO_LINKS_APPLIED = 2; // 0x2
+    field public static final int STATUS_NO_LINKS_FOUND = 1; // 0x1
+    field public static final int STATUS_UNSUPPORTED_CHARACTER = 4; // 0x4
+  }
+
+  public static final class TextLinks.Builder {
+    ctor public TextLinks.Builder(@NonNull String);
+    method @NonNull public android.view.textclassifier.TextLinks.Builder addLink(int, int, @NonNull java.util.Map<java.lang.String,java.lang.Float>);
+    method @NonNull public android.view.textclassifier.TextLinks.Builder addLink(int, int, @NonNull java.util.Map<java.lang.String,java.lang.Float>, @NonNull android.os.Bundle);
+    method @NonNull public android.view.textclassifier.TextLinks build();
+    method @NonNull public android.view.textclassifier.TextLinks.Builder clearTextLinks();
+    method @NonNull public android.view.textclassifier.TextLinks.Builder setExtras(@Nullable android.os.Bundle);
+  }
+
+  public static final class TextLinks.Request implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public String getCallingPackageName();
+    method @Nullable public android.os.LocaleList getDefaultLocales();
+    method @Nullable public android.view.textclassifier.TextClassifier.EntityConfig getEntityConfig();
+    method @NonNull public android.os.Bundle getExtras();
+    method @Nullable public java.time.ZonedDateTime getReferenceTime();
+    method @NonNull public CharSequence getText();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextLinks.Request> CREATOR;
+  }
+
+  public static final class TextLinks.Request.Builder {
+    ctor public TextLinks.Request.Builder(@NonNull CharSequence);
+    method @NonNull public android.view.textclassifier.TextLinks.Request build();
+    method @NonNull public android.view.textclassifier.TextLinks.Request.Builder setDefaultLocales(@Nullable android.os.LocaleList);
+    method @NonNull public android.view.textclassifier.TextLinks.Request.Builder setEntityConfig(@Nullable android.view.textclassifier.TextClassifier.EntityConfig);
+    method public android.view.textclassifier.TextLinks.Request.Builder setExtras(@Nullable android.os.Bundle);
+    method @NonNull public android.view.textclassifier.TextLinks.Request.Builder setReferenceTime(@Nullable java.time.ZonedDateTime);
+  }
+
+  public static final class TextLinks.TextLink implements android.os.Parcelable {
+    method public int describeContents();
+    method @FloatRange(from=0.0, to=1.0) public float getConfidenceScore(String);
+    method public int getEnd();
+    method @NonNull public String getEntity(int);
+    method public int getEntityCount();
+    method @NonNull public android.os.Bundle getExtras();
+    method public int getStart();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextLinks.TextLink> CREATOR;
+  }
+
+  public static class TextLinks.TextLinkSpan extends android.text.style.ClickableSpan {
+    ctor public TextLinks.TextLinkSpan(@NonNull android.view.textclassifier.TextLinks.TextLink);
+    method public final android.view.textclassifier.TextLinks.TextLink getTextLink();
+    method public void onClick(android.view.View);
+  }
+
+  public final class TextSelection implements android.os.Parcelable {
+    method public int describeContents();
+    method @FloatRange(from=0.0, to=1.0) public float getConfidenceScore(String);
+    method @NonNull public String getEntity(int);
+    method @IntRange(from=0) public int getEntityCount();
+    method @NonNull public android.os.Bundle getExtras();
+    method @Nullable public String getId();
+    method public int getSelectionEndIndex();
+    method public int getSelectionStartIndex();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextSelection> CREATOR;
+  }
+
+  public static final class TextSelection.Builder {
+    ctor public TextSelection.Builder(@IntRange(from=0) int, @IntRange(from=0) int);
+    method @NonNull public android.view.textclassifier.TextSelection build();
+    method @NonNull public android.view.textclassifier.TextSelection.Builder setEntityType(@NonNull String, @FloatRange(from=0.0, to=1.0) float);
+    method @NonNull public android.view.textclassifier.TextSelection.Builder setExtras(@Nullable android.os.Bundle);
+    method @NonNull public android.view.textclassifier.TextSelection.Builder setId(@Nullable String);
+  }
+
+  public static final class TextSelection.Request implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public String getCallingPackageName();
+    method @Nullable public android.os.LocaleList getDefaultLocales();
+    method @IntRange(from=0) public int getEndIndex();
+    method @NonNull public android.os.Bundle getExtras();
+    method @IntRange(from=0) public int getStartIndex();
+    method @NonNull public CharSequence getText();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextSelection.Request> CREATOR;
+  }
+
+  public static final class TextSelection.Request.Builder {
+    ctor public TextSelection.Request.Builder(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int);
+    method @NonNull public android.view.textclassifier.TextSelection.Request build();
+    method @NonNull public android.view.textclassifier.TextSelection.Request.Builder setDefaultLocales(@Nullable android.os.LocaleList);
+    method @NonNull public android.view.textclassifier.TextSelection.Request.Builder setExtras(@Nullable android.os.Bundle);
+  }
+
+}
+
+package android.view.textservice {
+
+  public final class SentenceSuggestionsInfo implements android.os.Parcelable {
+    ctor public SentenceSuggestionsInfo(android.view.textservice.SuggestionsInfo[], int[], int[]);
+    ctor public SentenceSuggestionsInfo(android.os.Parcel);
+    method public int describeContents();
+    method public int getLengthAt(int);
+    method public int getOffsetAt(int);
+    method public int getSuggestionsCount();
+    method public android.view.textservice.SuggestionsInfo getSuggestionsInfoAt(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textservice.SentenceSuggestionsInfo> CREATOR;
+  }
+
+  public final class SpellCheckerInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public android.content.ComponentName getComponent();
+    method public String getId();
+    method public String getPackageName();
+    method public android.content.pm.ServiceInfo getServiceInfo();
+    method public String getSettingsActivity();
+    method public android.view.textservice.SpellCheckerSubtype getSubtypeAt(int);
+    method public int getSubtypeCount();
+    method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
+    method public CharSequence loadLabel(android.content.pm.PackageManager);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textservice.SpellCheckerInfo> CREATOR;
+  }
+
+  public class SpellCheckerSession {
+    method public void cancel();
+    method public void close();
+    method public void getSentenceSuggestions(android.view.textservice.TextInfo[], int);
+    method public android.view.textservice.SpellCheckerInfo getSpellChecker();
+    method @Deprecated public void getSuggestions(android.view.textservice.TextInfo, int);
+    method @Deprecated public void getSuggestions(android.view.textservice.TextInfo[], int, boolean);
+    method public boolean isSessionDisconnected();
+    field public static final String SERVICE_META_DATA = "android.view.textservice.scs";
+  }
+
+  public static interface SpellCheckerSession.SpellCheckerSessionListener {
+    method public void onGetSentenceSuggestions(android.view.textservice.SentenceSuggestionsInfo[]);
+    method public void onGetSuggestions(android.view.textservice.SuggestionsInfo[]);
+  }
+
+  public final class SpellCheckerSubtype implements android.os.Parcelable {
+    ctor @Deprecated public SpellCheckerSubtype(int, String, String);
+    method public boolean containsExtraValueKey(String);
+    method public int describeContents();
+    method public CharSequence getDisplayName(android.content.Context, String, android.content.pm.ApplicationInfo);
+    method public String getExtraValue();
+    method public String getExtraValueOf(String);
+    method @NonNull public String getLanguageTag();
+    method @Deprecated @NonNull public String getLocale();
+    method public int getNameResId();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textservice.SpellCheckerSubtype> CREATOR;
+  }
+
+  public final class SuggestionsInfo implements android.os.Parcelable {
+    ctor public SuggestionsInfo(int, String[]);
+    ctor public SuggestionsInfo(int, String[], int, int);
+    ctor public SuggestionsInfo(android.os.Parcel);
+    method public int describeContents();
+    method public int getCookie();
+    method public int getSequence();
+    method public String getSuggestionAt(int);
+    method public int getSuggestionsAttributes();
+    method public int getSuggestionsCount();
+    method public void setCookieAndSequence(int, int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textservice.SuggestionsInfo> CREATOR;
+    field public static final int RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS = 4; // 0x4
+    field public static final int RESULT_ATTR_IN_THE_DICTIONARY = 1; // 0x1
+    field public static final int RESULT_ATTR_LOOKS_LIKE_TYPO = 2; // 0x2
+  }
+
+  public final class TextInfo implements android.os.Parcelable {
+    ctor public TextInfo(String);
+    ctor public TextInfo(String, int, int);
+    ctor public TextInfo(CharSequence, int, int, int, int);
+    ctor public TextInfo(android.os.Parcel);
+    method public int describeContents();
+    method public CharSequence getCharSequence();
+    method public int getCookie();
+    method public int getSequence();
+    method public String getText();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.textservice.TextInfo> CREATOR;
+  }
+
+  public final class TextServicesManager {
+    method public android.view.textservice.SpellCheckerSession newSpellCheckerSession(android.os.Bundle, java.util.Locale, android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener, boolean);
+  }
+
+}
+
+package android.webkit {
+
+  public abstract class ClientCertRequest {
+    ctor public ClientCertRequest();
+    method public abstract void cancel();
+    method public abstract String getHost();
+    method @Nullable public abstract String[] getKeyTypes();
+    method public abstract int getPort();
+    method @Nullable public abstract java.security.Principal[] getPrincipals();
+    method public abstract void ignore();
+    method public abstract void proceed(java.security.PrivateKey, java.security.cert.X509Certificate[]);
+  }
+
+  public class ConsoleMessage {
+    ctor public ConsoleMessage(String, String, int, android.webkit.ConsoleMessage.MessageLevel);
+    method public int lineNumber();
+    method public String message();
+    method public android.webkit.ConsoleMessage.MessageLevel messageLevel();
+    method public String sourceId();
+  }
+
+  public enum ConsoleMessage.MessageLevel {
+    enum_constant public static final android.webkit.ConsoleMessage.MessageLevel DEBUG;
+    enum_constant public static final android.webkit.ConsoleMessage.MessageLevel ERROR;
+    enum_constant public static final android.webkit.ConsoleMessage.MessageLevel LOG;
+    enum_constant public static final android.webkit.ConsoleMessage.MessageLevel TIP;
+    enum_constant public static final android.webkit.ConsoleMessage.MessageLevel WARNING;
+  }
+
+  public abstract class CookieManager {
+    ctor @Deprecated public CookieManager();
+    method public abstract boolean acceptCookie();
+    method public abstract boolean acceptThirdPartyCookies(android.webkit.WebView);
+    method public static boolean allowFileSchemeCookies();
+    method public abstract void flush();
+    method public abstract String getCookie(String);
+    method public static android.webkit.CookieManager getInstance();
+    method public abstract boolean hasCookies();
+    method @Deprecated public abstract void removeAllCookie();
+    method public abstract void removeAllCookies(@Nullable android.webkit.ValueCallback<java.lang.Boolean>);
+    method @Deprecated public abstract void removeExpiredCookie();
+    method @Deprecated public abstract void removeSessionCookie();
+    method public abstract void removeSessionCookies(@Nullable android.webkit.ValueCallback<java.lang.Boolean>);
+    method public abstract void setAcceptCookie(boolean);
+    method @Deprecated public static void setAcceptFileSchemeCookies(boolean);
+    method public abstract void setAcceptThirdPartyCookies(android.webkit.WebView, boolean);
+    method public abstract void setCookie(String, String);
+    method public abstract void setCookie(String, String, @Nullable android.webkit.ValueCallback<java.lang.Boolean>);
+  }
+
+  @Deprecated public final class CookieSyncManager implements java.lang.Runnable {
+    method @Deprecated public static android.webkit.CookieSyncManager createInstance(android.content.Context);
+    method @Deprecated public static android.webkit.CookieSyncManager getInstance();
+    method @Deprecated public void resetSync();
+    method @Deprecated public void run();
+    method @Deprecated public void startSync();
+    method @Deprecated public void stopSync();
+    method @Deprecated public void sync();
+    method @Deprecated protected void syncFromRamToFlash();
+  }
+
+  public class DateSorter {
+    ctor public DateSorter(android.content.Context);
+    method public long getBoundary(int);
+    method public int getIndex(long);
+    method public String getLabel(int);
+    field public static final int DAY_COUNT = 5; // 0x5
+  }
+
+  public interface DownloadListener {
+    method public void onDownloadStart(String, String, String, String, long);
+  }
+
+  public class GeolocationPermissions {
+    method public void allow(String);
+    method public void clear(String);
+    method public void clearAll();
+    method public void getAllowed(String, android.webkit.ValueCallback<java.lang.Boolean>);
+    method public static android.webkit.GeolocationPermissions getInstance();
+    method public void getOrigins(android.webkit.ValueCallback<java.util.Set<java.lang.String>>);
+  }
+
+  public static interface GeolocationPermissions.Callback {
+    method public void invoke(String, boolean, boolean);
+  }
+
+  public class HttpAuthHandler extends android.os.Handler {
+    method public void cancel();
+    method public void proceed(String, String);
+    method public boolean useHttpAuthUsernamePassword();
+  }
+
+  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD}) public @interface JavascriptInterface {
+  }
+
+  public class JsPromptResult extends android.webkit.JsResult {
+    method public void confirm(String);
+  }
+
+  public class JsResult {
+    method public final void cancel();
+    method public final void confirm();
+  }
+
+  public class MimeTypeMap {
+    method @Nullable public String getExtensionFromMimeType(String);
+    method public static String getFileExtensionFromUrl(String);
+    method @Nullable public String getMimeTypeFromExtension(String);
+    method public static android.webkit.MimeTypeMap getSingleton();
+    method public boolean hasExtension(String);
+    method public boolean hasMimeType(String);
+  }
+
+  public abstract class PermissionRequest {
+    ctor public PermissionRequest();
+    method public abstract void deny();
+    method public abstract android.net.Uri getOrigin();
+    method public abstract String[] getResources();
+    method public abstract void grant(String[]);
+    field public static final String RESOURCE_AUDIO_CAPTURE = "android.webkit.resource.AUDIO_CAPTURE";
+    field public static final String RESOURCE_MIDI_SYSEX = "android.webkit.resource.MIDI_SYSEX";
+    field public static final String RESOURCE_PROTECTED_MEDIA_ID = "android.webkit.resource.PROTECTED_MEDIA_ID";
+    field public static final String RESOURCE_VIDEO_CAPTURE = "android.webkit.resource.VIDEO_CAPTURE";
+  }
+
+  public interface PluginStub {
+    method public android.view.View getEmbeddedView(int, android.content.Context);
+    method public android.view.View getFullScreenView(int, android.content.Context);
+  }
+
+  public abstract class RenderProcessGoneDetail {
+    ctor @Deprecated public RenderProcessGoneDetail();
+    method public abstract boolean didCrash();
+    method public abstract int rendererPriorityAtExit();
+  }
+
+  public abstract class SafeBrowsingResponse {
+    ctor @Deprecated public SafeBrowsingResponse();
+    method public abstract void backToSafety(boolean);
+    method public abstract void proceed(boolean);
+    method public abstract void showInterstitial(boolean);
+  }
+
+  public class ServiceWorkerClient {
+    ctor public ServiceWorkerClient();
+    method @Nullable public android.webkit.WebResourceResponse shouldInterceptRequest(android.webkit.WebResourceRequest);
+  }
+
+  public abstract class ServiceWorkerController {
+    ctor @Deprecated public ServiceWorkerController();
+    method @NonNull public static android.webkit.ServiceWorkerController getInstance();
+    method @NonNull public abstract android.webkit.ServiceWorkerWebSettings getServiceWorkerWebSettings();
+    method public abstract void setServiceWorkerClient(@Nullable android.webkit.ServiceWorkerClient);
+  }
+
+  public abstract class ServiceWorkerWebSettings {
+    ctor public ServiceWorkerWebSettings();
+    method public abstract boolean getAllowContentAccess();
+    method public abstract boolean getAllowFileAccess();
+    method public abstract boolean getBlockNetworkLoads();
+    method public abstract int getCacheMode();
+    method public abstract void setAllowContentAccess(boolean);
+    method public abstract void setAllowFileAccess(boolean);
+    method public abstract void setBlockNetworkLoads(boolean);
+    method public abstract void setCacheMode(int);
+  }
+
+  public class SslErrorHandler extends android.os.Handler {
+    method public void cancel();
+    method public void proceed();
+  }
+
+  public class TracingConfig {
+    method @NonNull public java.util.List<java.lang.String> getCustomIncludedCategories();
+    method public int getPredefinedCategories();
+    method public int getTracingMode();
+    field public static final int CATEGORIES_ALL = 1; // 0x1
+    field public static final int CATEGORIES_ANDROID_WEBVIEW = 2; // 0x2
+    field public static final int CATEGORIES_FRAME_VIEWER = 64; // 0x40
+    field public static final int CATEGORIES_INPUT_LATENCY = 8; // 0x8
+    field public static final int CATEGORIES_JAVASCRIPT_AND_RENDERING = 32; // 0x20
+    field public static final int CATEGORIES_NONE = 0; // 0x0
+    field public static final int CATEGORIES_RENDERING = 16; // 0x10
+    field public static final int CATEGORIES_WEB_DEVELOPER = 4; // 0x4
+    field public static final int RECORD_CONTINUOUSLY = 1; // 0x1
+    field public static final int RECORD_UNTIL_FULL = 0; // 0x0
+  }
+
+  public static class TracingConfig.Builder {
+    ctor public TracingConfig.Builder();
+    method public android.webkit.TracingConfig.Builder addCategories(int...);
+    method public android.webkit.TracingConfig.Builder addCategories(java.lang.String...);
+    method public android.webkit.TracingConfig.Builder addCategories(java.util.Collection<java.lang.String>);
+    method public android.webkit.TracingConfig build();
+    method public android.webkit.TracingConfig.Builder setTracingMode(int);
+  }
+
+  public abstract class TracingController {
+    ctor @Deprecated public TracingController();
+    method @NonNull public static android.webkit.TracingController getInstance();
+    method public abstract boolean isTracing();
+    method public abstract void start(@NonNull android.webkit.TracingConfig);
+    method public abstract boolean stop(@Nullable java.io.OutputStream, @NonNull java.util.concurrent.Executor);
+  }
+
+  public final class URLUtil {
+    ctor public URLUtil();
+    method public static String composeSearchUrl(String, String, String);
+    method public static byte[] decode(byte[]) throws java.lang.IllegalArgumentException;
+    method public static String guessFileName(String, @Nullable String, @Nullable String);
+    method public static String guessUrl(String);
+    method public static boolean isAboutUrl(String);
+    method public static boolean isAssetUrl(String);
+    method public static boolean isContentUrl(String);
+    method @Deprecated public static boolean isCookielessProxyUrl(String);
+    method public static boolean isDataUrl(String);
+    method public static boolean isFileUrl(String);
+    method public static boolean isHttpUrl(String);
+    method public static boolean isHttpsUrl(String);
+    method public static boolean isJavaScriptUrl(String);
+    method public static boolean isNetworkUrl(String);
+    method public static boolean isValidUrl(String);
+    method public static String stripAnchor(String);
+  }
+
+  public interface ValueCallback<T> {
+    method public void onReceiveValue(T);
+  }
+
+  public abstract class WebBackForwardList implements java.lang.Cloneable java.io.Serializable {
+    ctor public WebBackForwardList();
+    method protected abstract android.webkit.WebBackForwardList clone();
+    method public abstract int getCurrentIndex();
+    method @Nullable public abstract android.webkit.WebHistoryItem getCurrentItem();
+    method public abstract android.webkit.WebHistoryItem getItemAtIndex(int);
+    method public abstract int getSize();
+  }
+
+  public class WebChromeClient {
+    ctor public WebChromeClient();
+    method @Nullable public android.graphics.Bitmap getDefaultVideoPoster();
+    method @Nullable public android.view.View getVideoLoadingProgressView();
+    method public void getVisitedHistory(android.webkit.ValueCallback<java.lang.String[]>);
+    method public void onCloseWindow(android.webkit.WebView);
+    method @Deprecated public void onConsoleMessage(String, int, String);
+    method public boolean onConsoleMessage(android.webkit.ConsoleMessage);
+    method public boolean onCreateWindow(android.webkit.WebView, boolean, boolean, android.os.Message);
+    method @Deprecated public void onExceededDatabaseQuota(String, String, long, long, long, android.webkit.WebStorage.QuotaUpdater);
+    method public void onGeolocationPermissionsHidePrompt();
+    method public void onGeolocationPermissionsShowPrompt(String, android.webkit.GeolocationPermissions.Callback);
+    method public void onHideCustomView();
+    method public boolean onJsAlert(android.webkit.WebView, String, String, android.webkit.JsResult);
+    method public boolean onJsBeforeUnload(android.webkit.WebView, String, String, android.webkit.JsResult);
+    method public boolean onJsConfirm(android.webkit.WebView, String, String, android.webkit.JsResult);
+    method public boolean onJsPrompt(android.webkit.WebView, String, String, String, android.webkit.JsPromptResult);
+    method @Deprecated public boolean onJsTimeout();
+    method public void onPermissionRequest(android.webkit.PermissionRequest);
+    method public void onPermissionRequestCanceled(android.webkit.PermissionRequest);
+    method public void onProgressChanged(android.webkit.WebView, int);
+    method @Deprecated public void onReachedMaxAppCacheSize(long, long, android.webkit.WebStorage.QuotaUpdater);
+    method public void onReceivedIcon(android.webkit.WebView, android.graphics.Bitmap);
+    method public void onReceivedTitle(android.webkit.WebView, String);
+    method public void onReceivedTouchIconUrl(android.webkit.WebView, String, boolean);
+    method public void onRequestFocus(android.webkit.WebView);
+    method public void onShowCustomView(android.view.View, android.webkit.WebChromeClient.CustomViewCallback);
+    method @Deprecated public void onShowCustomView(android.view.View, int, android.webkit.WebChromeClient.CustomViewCallback);
+    method public boolean onShowFileChooser(android.webkit.WebView, android.webkit.ValueCallback<android.net.Uri[]>, android.webkit.WebChromeClient.FileChooserParams);
+  }
+
+  public static interface WebChromeClient.CustomViewCallback {
+    method public void onCustomViewHidden();
+  }
+
+  public abstract static class WebChromeClient.FileChooserParams {
+    ctor public WebChromeClient.FileChooserParams();
+    method public abstract android.content.Intent createIntent();
+    method public abstract String[] getAcceptTypes();
+    method @Nullable public abstract String getFilenameHint();
+    method public abstract int getMode();
+    method @Nullable public abstract CharSequence getTitle();
+    method public abstract boolean isCaptureEnabled();
+    method @Nullable public static android.net.Uri[] parseResult(int, android.content.Intent);
+    field public static final int MODE_OPEN = 0; // 0x0
+    field public static final int MODE_OPEN_MULTIPLE = 1; // 0x1
+    field public static final int MODE_SAVE = 3; // 0x3
+  }
+
+  public abstract class WebHistoryItem implements java.lang.Cloneable {
+    ctor public WebHistoryItem();
+    method protected abstract android.webkit.WebHistoryItem clone();
+    method @Nullable public abstract android.graphics.Bitmap getFavicon();
+    method public abstract String getOriginalUrl();
+    method public abstract String getTitle();
+    method public abstract String getUrl();
+  }
+
+  @Deprecated public abstract class WebIconDatabase {
+    ctor @Deprecated public WebIconDatabase();
+    method @Deprecated public abstract void close();
+    method @Deprecated public static android.webkit.WebIconDatabase getInstance();
+    method @Deprecated public abstract void open(String);
+    method @Deprecated public abstract void releaseIconForPageUrl(String);
+    method @Deprecated public abstract void removeAllIcons();
+    method @Deprecated public abstract void requestIconForPageUrl(String, android.webkit.WebIconDatabase.IconListener);
+    method @Deprecated public abstract void retainIconForPageUrl(String);
+  }
+
+  @Deprecated public static interface WebIconDatabase.IconListener {
+    method @Deprecated public void onReceivedIcon(String, android.graphics.Bitmap);
+  }
+
+  public class WebMessage {
+    ctor public WebMessage(String);
+    ctor public WebMessage(String, android.webkit.WebMessagePort[]);
+    method public String getData();
+    method @Nullable public android.webkit.WebMessagePort[] getPorts();
+  }
+
+  public abstract class WebMessagePort {
+    method public abstract void close();
+    method public abstract void postMessage(android.webkit.WebMessage);
+    method public abstract void setWebMessageCallback(android.webkit.WebMessagePort.WebMessageCallback);
+    method public abstract void setWebMessageCallback(android.webkit.WebMessagePort.WebMessageCallback, android.os.Handler);
+  }
+
+  public abstract static class WebMessagePort.WebMessageCallback {
+    ctor public WebMessagePort.WebMessageCallback();
+    method public void onMessage(android.webkit.WebMessagePort, android.webkit.WebMessage);
+  }
+
+  public abstract class WebResourceError {
+    method public abstract CharSequence getDescription();
+    method public abstract int getErrorCode();
+  }
+
+  public interface WebResourceRequest {
+    method public String getMethod();
+    method public java.util.Map<java.lang.String,java.lang.String> getRequestHeaders();
+    method public android.net.Uri getUrl();
+    method public boolean hasGesture();
+    method public boolean isForMainFrame();
+    method public boolean isRedirect();
+  }
+
+  public class WebResourceResponse {
+    ctor public WebResourceResponse(String, String, java.io.InputStream);
+    ctor public WebResourceResponse(String, String, int, @NonNull String, java.util.Map<java.lang.String,java.lang.String>, java.io.InputStream);
+    method public java.io.InputStream getData();
+    method public String getEncoding();
+    method public String getMimeType();
+    method public String getReasonPhrase();
+    method public java.util.Map<java.lang.String,java.lang.String> getResponseHeaders();
+    method public int getStatusCode();
+    method public void setData(java.io.InputStream);
+    method public void setEncoding(String);
+    method public void setMimeType(String);
+    method public void setResponseHeaders(java.util.Map<java.lang.String,java.lang.String>);
+    method public void setStatusCodeAndReasonPhrase(int, @NonNull String);
+  }
+
+  public abstract class WebSettings {
+    ctor public WebSettings();
+    method @Deprecated public abstract boolean enableSmoothTransition();
+    method public abstract boolean getAllowContentAccess();
+    method public abstract boolean getAllowFileAccess();
+    method public abstract boolean getAllowFileAccessFromFileURLs();
+    method public abstract boolean getAllowUniversalAccessFromFileURLs();
+    method public abstract boolean getBlockNetworkImage();
+    method public abstract boolean getBlockNetworkLoads();
+    method public abstract boolean getBuiltInZoomControls();
+    method public abstract int getCacheMode();
+    method public abstract String getCursiveFontFamily();
+    method public abstract boolean getDatabaseEnabled();
+    method @Deprecated public abstract String getDatabasePath();
+    method public abstract int getDefaultFixedFontSize();
+    method public abstract int getDefaultFontSize();
+    method public abstract String getDefaultTextEncodingName();
+    method public static String getDefaultUserAgent(android.content.Context);
+    method @Deprecated public abstract android.webkit.WebSettings.ZoomDensity getDefaultZoom();
+    method public abstract int getDisabledActionModeMenuItems();
+    method public abstract boolean getDisplayZoomControls();
+    method public abstract boolean getDomStorageEnabled();
+    method public abstract String getFantasyFontFamily();
+    method public abstract String getFixedFontFamily();
+    method public int getForceDark();
+    method public abstract boolean getJavaScriptCanOpenWindowsAutomatically();
+    method public abstract boolean getJavaScriptEnabled();
+    method public abstract android.webkit.WebSettings.LayoutAlgorithm getLayoutAlgorithm();
+    method @Deprecated public abstract boolean getLightTouchEnabled();
+    method public abstract boolean getLoadWithOverviewMode();
+    method public abstract boolean getLoadsImagesAutomatically();
+    method public abstract boolean getMediaPlaybackRequiresUserGesture();
+    method public abstract int getMinimumFontSize();
+    method public abstract int getMinimumLogicalFontSize();
+    method public abstract int getMixedContentMode();
+    method public abstract boolean getOffscreenPreRaster();
+    method @Deprecated public abstract android.webkit.WebSettings.PluginState getPluginState();
+    method public abstract boolean getSafeBrowsingEnabled();
+    method public abstract String getSansSerifFontFamily();
+    method @Deprecated public abstract boolean getSaveFormData();
+    method @Deprecated public abstract boolean getSavePassword();
+    method public abstract String getSerifFontFamily();
+    method public abstract String getStandardFontFamily();
+    method @Deprecated public android.webkit.WebSettings.TextSize getTextSize();
+    method public abstract int getTextZoom();
+    method public abstract boolean getUseWideViewPort();
+    method public abstract String getUserAgentString();
+    method public abstract void setAllowContentAccess(boolean);
+    method public abstract void setAllowFileAccess(boolean);
+    method @Deprecated public abstract void setAllowFileAccessFromFileURLs(boolean);
+    method @Deprecated public abstract void setAllowUniversalAccessFromFileURLs(boolean);
+    method @Deprecated public abstract void setAppCacheEnabled(boolean);
+    method @Deprecated public abstract void setAppCacheMaxSize(long);
+    method @Deprecated public abstract void setAppCachePath(String);
+    method public abstract void setBlockNetworkImage(boolean);
+    method public abstract void setBlockNetworkLoads(boolean);
+    method public abstract void setBuiltInZoomControls(boolean);
+    method public abstract void setCacheMode(int);
+    method public abstract void setCursiveFontFamily(String);
+    method public abstract void setDatabaseEnabled(boolean);
+    method @Deprecated public abstract void setDatabasePath(String);
+    method public abstract void setDefaultFixedFontSize(int);
+    method public abstract void setDefaultFontSize(int);
+    method public abstract void setDefaultTextEncodingName(String);
+    method @Deprecated public abstract void setDefaultZoom(android.webkit.WebSettings.ZoomDensity);
+    method public abstract void setDisabledActionModeMenuItems(int);
+    method public abstract void setDisplayZoomControls(boolean);
+    method public abstract void setDomStorageEnabled(boolean);
+    method @Deprecated public abstract void setEnableSmoothTransition(boolean);
+    method public abstract void setFantasyFontFamily(String);
+    method public abstract void setFixedFontFamily(String);
+    method public void setForceDark(int);
+    method @Deprecated public abstract void setGeolocationDatabasePath(String);
+    method public abstract void setGeolocationEnabled(boolean);
+    method public abstract void setJavaScriptCanOpenWindowsAutomatically(boolean);
+    method public abstract void setJavaScriptEnabled(boolean);
+    method public abstract void setLayoutAlgorithm(android.webkit.WebSettings.LayoutAlgorithm);
+    method @Deprecated public abstract void setLightTouchEnabled(boolean);
+    method public abstract void setLoadWithOverviewMode(boolean);
+    method public abstract void setLoadsImagesAutomatically(boolean);
+    method public abstract void setMediaPlaybackRequiresUserGesture(boolean);
+    method public abstract void setMinimumFontSize(int);
+    method public abstract void setMinimumLogicalFontSize(int);
+    method public abstract void setMixedContentMode(int);
+    method public abstract void setNeedInitialFocus(boolean);
+    method public abstract void setOffscreenPreRaster(boolean);
+    method @Deprecated public abstract void setPluginState(android.webkit.WebSettings.PluginState);
+    method @Deprecated public abstract void setRenderPriority(android.webkit.WebSettings.RenderPriority);
+    method public abstract void setSafeBrowsingEnabled(boolean);
+    method public abstract void setSansSerifFontFamily(String);
+    method @Deprecated public abstract void setSaveFormData(boolean);
+    method @Deprecated public abstract void setSavePassword(boolean);
+    method public abstract void setSerifFontFamily(String);
+    method public abstract void setStandardFontFamily(String);
+    method public abstract void setSupportMultipleWindows(boolean);
+    method public abstract void setSupportZoom(boolean);
+    method @Deprecated public void setTextSize(android.webkit.WebSettings.TextSize);
+    method public abstract void setTextZoom(int);
+    method public abstract void setUseWideViewPort(boolean);
+    method public abstract void setUserAgentString(@Nullable String);
+    method public abstract boolean supportMultipleWindows();
+    method public abstract boolean supportZoom();
+    field public static final int FORCE_DARK_AUTO = 1; // 0x1
+    field public static final int FORCE_DARK_OFF = 0; // 0x0
+    field public static final int FORCE_DARK_ON = 2; // 0x2
+    field public static final int LOAD_CACHE_ELSE_NETWORK = 1; // 0x1
+    field public static final int LOAD_CACHE_ONLY = 3; // 0x3
+    field public static final int LOAD_DEFAULT = -1; // 0xffffffff
+    field @Deprecated public static final int LOAD_NORMAL = 0; // 0x0
+    field public static final int LOAD_NO_CACHE = 2; // 0x2
+    field public static final int MENU_ITEM_NONE = 0; // 0x0
+    field public static final int MENU_ITEM_PROCESS_TEXT = 4; // 0x4
+    field public static final int MENU_ITEM_SHARE = 1; // 0x1
+    field public static final int MENU_ITEM_WEB_SEARCH = 2; // 0x2
+    field public static final int MIXED_CONTENT_ALWAYS_ALLOW = 0; // 0x0
+    field public static final int MIXED_CONTENT_COMPATIBILITY_MODE = 2; // 0x2
+    field public static final int MIXED_CONTENT_NEVER_ALLOW = 1; // 0x1
+  }
+
+  public enum WebSettings.LayoutAlgorithm {
+    enum_constant @Deprecated public static final android.webkit.WebSettings.LayoutAlgorithm NARROW_COLUMNS;
+    enum_constant public static final android.webkit.WebSettings.LayoutAlgorithm NORMAL;
+    enum_constant @Deprecated public static final android.webkit.WebSettings.LayoutAlgorithm SINGLE_COLUMN;
+    enum_constant public static final android.webkit.WebSettings.LayoutAlgorithm TEXT_AUTOSIZING;
+  }
+
+  public enum WebSettings.PluginState {
+    enum_constant public static final android.webkit.WebSettings.PluginState OFF;
+    enum_constant public static final android.webkit.WebSettings.PluginState ON;
+    enum_constant public static final android.webkit.WebSettings.PluginState ON_DEMAND;
+  }
+
+  public enum WebSettings.RenderPriority {
+    enum_constant public static final android.webkit.WebSettings.RenderPriority HIGH;
+    enum_constant public static final android.webkit.WebSettings.RenderPriority LOW;
+    enum_constant public static final android.webkit.WebSettings.RenderPriority NORMAL;
+  }
+
+  @Deprecated public enum WebSettings.TextSize {
+    enum_constant @Deprecated public static final android.webkit.WebSettings.TextSize LARGER;
+    enum_constant @Deprecated public static final android.webkit.WebSettings.TextSize LARGEST;
+    enum_constant @Deprecated public static final android.webkit.WebSettings.TextSize NORMAL;
+    enum_constant @Deprecated public static final android.webkit.WebSettings.TextSize SMALLER;
+    enum_constant @Deprecated public static final android.webkit.WebSettings.TextSize SMALLEST;
+  }
+
+  public enum WebSettings.ZoomDensity {
+    enum_constant public static final android.webkit.WebSettings.ZoomDensity CLOSE;
+    enum_constant public static final android.webkit.WebSettings.ZoomDensity FAR;
+    enum_constant public static final android.webkit.WebSettings.ZoomDensity MEDIUM;
+  }
+
+  public class WebStorage {
+    method public void deleteAllData();
+    method public void deleteOrigin(String);
+    method public static android.webkit.WebStorage getInstance();
+    method public void getOrigins(android.webkit.ValueCallback<java.util.Map>);
+    method public void getQuotaForOrigin(String, android.webkit.ValueCallback<java.lang.Long>);
+    method public void getUsageForOrigin(String, android.webkit.ValueCallback<java.lang.Long>);
+    method @Deprecated public void setQuotaForOrigin(String, long);
+  }
+
+  public static class WebStorage.Origin {
+    method public String getOrigin();
+    method public long getQuota();
+    method public long getUsage();
+  }
+
+  @Deprecated public static interface WebStorage.QuotaUpdater {
+    method @Deprecated public void updateQuota(long);
+  }
+
+  public class WebView extends android.widget.AbsoluteLayout implements android.view.ViewGroup.OnHierarchyChangeListener android.view.ViewTreeObserver.OnGlobalFocusChangeListener {
+    ctor public WebView(@NonNull android.content.Context);
+    ctor public WebView(@NonNull android.content.Context, @Nullable android.util.AttributeSet);
+    ctor public WebView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, int);
+    ctor public WebView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, int, int);
+    ctor @Deprecated public WebView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, int, boolean);
+    method public void addJavascriptInterface(@NonNull Object, @NonNull String);
+    method public boolean canGoBack();
+    method public boolean canGoBackOrForward(int);
+    method public boolean canGoForward();
+    method @Deprecated public boolean canZoomIn();
+    method @Deprecated public boolean canZoomOut();
+    method @Deprecated public android.graphics.Picture capturePicture();
+    method public void clearCache(boolean);
+    method public static void clearClientCertPreferences(@Nullable Runnable);
+    method public void clearFormData();
+    method public void clearHistory();
+    method public void clearMatches();
+    method public void clearSslPreferences();
+    method @Deprecated public void clearView();
+    method @NonNull public android.webkit.WebBackForwardList copyBackForwardList();
+    method @Deprecated public android.print.PrintDocumentAdapter createPrintDocumentAdapter();
+    method @NonNull public android.print.PrintDocumentAdapter createPrintDocumentAdapter(@NonNull String);
+    method @NonNull public android.webkit.WebMessagePort[] createWebMessageChannel();
+    method public void destroy();
+    method public static void disableWebView();
+    method public void documentHasImages(@NonNull android.os.Message);
+    method public static void enableSlowWholeDocumentDraw();
+    method public void evaluateJavascript(@NonNull String, @Nullable android.webkit.ValueCallback<java.lang.String>);
+    method @Deprecated @Nullable public static String findAddress(String);
+    method @Deprecated public int findAll(String);
+    method public void findAllAsync(@NonNull String);
+    method public void findNext(boolean);
+    method public void flingScroll(int, int);
+    method @Deprecated public void freeMemory();
+    method @Nullable public android.net.http.SslCertificate getCertificate();
+    method public int getContentHeight();
+    method @Nullable public static android.content.pm.PackageInfo getCurrentWebViewPackage();
+    method @Nullable public android.graphics.Bitmap getFavicon();
+    method @NonNull public android.webkit.WebView.HitTestResult getHitTestResult();
+    method @Deprecated @Nullable public String[] getHttpAuthUsernamePassword(String, String);
+    method @Nullable public String getOriginalUrl();
+    method public int getProgress();
+    method public boolean getRendererPriorityWaivedWhenNotVisible();
+    method public int getRendererRequestedPriority();
+    method @NonNull public static android.net.Uri getSafeBrowsingPrivacyPolicyUrl();
+    method @Deprecated public float getScale();
+    method @NonNull public android.webkit.WebSettings getSettings();
+    method @NonNull public android.view.textclassifier.TextClassifier getTextClassifier();
+    method @Nullable public String getTitle();
+    method @Nullable public String getUrl();
+    method @Nullable public android.webkit.WebChromeClient getWebChromeClient();
+    method @NonNull public static ClassLoader getWebViewClassLoader();
+    method @NonNull public android.webkit.WebViewClient getWebViewClient();
+    method @NonNull public android.os.Looper getWebViewLooper();
+    method @Nullable public android.webkit.WebViewRenderProcess getWebViewRenderProcess();
+    method @Nullable public android.webkit.WebViewRenderProcessClient getWebViewRenderProcessClient();
+    method public void goBack();
+    method public void goBackOrForward(int);
+    method public void goForward();
+    method public void invokeZoomPicker();
+    method public boolean isPrivateBrowsingEnabled();
+    method public void loadData(@NonNull String, @Nullable String, @Nullable String);
+    method public void loadDataWithBaseURL(@Nullable String, @NonNull String, @Nullable String, @Nullable String, @Nullable String);
+    method public void loadUrl(@NonNull String, @NonNull java.util.Map<java.lang.String,java.lang.String>);
+    method public void loadUrl(@NonNull String);
+    method @Deprecated public void onChildViewAdded(android.view.View, android.view.View);
+    method @Deprecated public void onChildViewRemoved(android.view.View, android.view.View);
+    method @Deprecated public void onGlobalFocusChanged(android.view.View, android.view.View);
+    method public void onPause();
+    method public void onResume();
+    method @Deprecated public boolean overlayHorizontalScrollbar();
+    method @Deprecated public boolean overlayVerticalScrollbar();
+    method public boolean pageDown(boolean);
+    method public boolean pageUp(boolean);
+    method public void pauseTimers();
+    method public void postUrl(@NonNull String, @NonNull byte[]);
+    method public void postVisualStateCallback(long, @NonNull android.webkit.WebView.VisualStateCallback);
+    method public void postWebMessage(@NonNull android.webkit.WebMessage, @NonNull android.net.Uri);
+    method public void reload();
+    method public void removeJavascriptInterface(@NonNull String);
+    method public void requestFocusNodeHref(@Nullable android.os.Message);
+    method public void requestImageRef(@NonNull android.os.Message);
+    method @Nullable public android.webkit.WebBackForwardList restoreState(@NonNull android.os.Bundle);
+    method public void resumeTimers();
+    method @Deprecated public void savePassword(String, String, String);
+    method @Nullable public android.webkit.WebBackForwardList saveState(@NonNull android.os.Bundle);
+    method public void saveWebArchive(@NonNull String);
+    method public void saveWebArchive(@NonNull String, boolean, @Nullable android.webkit.ValueCallback<java.lang.String>);
+    method @Deprecated public void setCertificate(android.net.http.SslCertificate);
+    method public static void setDataDirectorySuffix(@NonNull String);
+    method public void setDownloadListener(@Nullable android.webkit.DownloadListener);
+    method public void setFindListener(@Nullable android.webkit.WebView.FindListener);
+    method @Deprecated public void setHorizontalScrollbarOverlay(boolean);
+    method @Deprecated public void setHttpAuthUsernamePassword(String, String, String, String);
+    method public void setInitialScale(int);
+    method @Deprecated public void setMapTrackballToArrowKeys(boolean);
+    method public void setNetworkAvailable(boolean);
+    method @Deprecated public void setPictureListener(android.webkit.WebView.PictureListener);
+    method public void setRendererPriorityPolicy(int, boolean);
+    method public static void setSafeBrowsingWhitelist(@NonNull java.util.List<java.lang.String>, @Nullable android.webkit.ValueCallback<java.lang.Boolean>);
+    method public void setTextClassifier(@Nullable android.view.textclassifier.TextClassifier);
+    method @Deprecated public void setVerticalScrollbarOverlay(boolean);
+    method public void setWebChromeClient(@Nullable android.webkit.WebChromeClient);
+    method public static void setWebContentsDebuggingEnabled(boolean);
+    method public void setWebViewClient(@NonNull android.webkit.WebViewClient);
+    method public void setWebViewRenderProcessClient(@NonNull java.util.concurrent.Executor, @NonNull android.webkit.WebViewRenderProcessClient);
+    method public void setWebViewRenderProcessClient(@Nullable android.webkit.WebViewRenderProcessClient);
+    method @Deprecated public boolean shouldDelayChildPressedState();
+    method @Deprecated public boolean showFindDialog(@Nullable String, boolean);
+    method public static void startSafeBrowsing(@NonNull android.content.Context, @Nullable android.webkit.ValueCallback<java.lang.Boolean>);
+    method public void stopLoading();
+    method public void zoomBy(float);
+    method public boolean zoomIn();
+    method public boolean zoomOut();
+    field public static final int RENDERER_PRIORITY_BOUND = 1; // 0x1
+    field public static final int RENDERER_PRIORITY_IMPORTANT = 2; // 0x2
+    field public static final int RENDERER_PRIORITY_WAIVED = 0; // 0x0
+    field public static final String SCHEME_GEO = "geo:0,0?q=";
+    field public static final String SCHEME_MAILTO = "mailto:";
+    field public static final String SCHEME_TEL = "tel:";
+  }
+
+  public static interface WebView.FindListener {
+    method public void onFindResultReceived(int, int, boolean);
+  }
+
+  public static class WebView.HitTestResult {
+    method @Nullable public String getExtra();
+    method public int getType();
+    field @Deprecated public static final int ANCHOR_TYPE = 1; // 0x1
+    field public static final int EDIT_TEXT_TYPE = 9; // 0x9
+    field public static final int EMAIL_TYPE = 4; // 0x4
+    field public static final int GEO_TYPE = 3; // 0x3
+    field @Deprecated public static final int IMAGE_ANCHOR_TYPE = 6; // 0x6
+    field public static final int IMAGE_TYPE = 5; // 0x5
+    field public static final int PHONE_TYPE = 2; // 0x2
+    field public static final int SRC_ANCHOR_TYPE = 7; // 0x7
+    field public static final int SRC_IMAGE_ANCHOR_TYPE = 8; // 0x8
+    field public static final int UNKNOWN_TYPE = 0; // 0x0
+  }
+
+  @Deprecated public static interface WebView.PictureListener {
+    method @Deprecated public void onNewPicture(android.webkit.WebView, @Nullable android.graphics.Picture);
+  }
+
+  public abstract static class WebView.VisualStateCallback {
+    ctor public WebView.VisualStateCallback();
+    method public abstract void onComplete(long);
+  }
+
+  public class WebView.WebViewTransport {
+    ctor public WebView.WebViewTransport();
+    method @Nullable public android.webkit.WebView getWebView();
+    method public void setWebView(@Nullable android.webkit.WebView);
+  }
+
+  public class WebViewClient {
+    ctor public WebViewClient();
+    method public void doUpdateVisitedHistory(android.webkit.WebView, String, boolean);
+    method public void onFormResubmission(android.webkit.WebView, android.os.Message, android.os.Message);
+    method public void onLoadResource(android.webkit.WebView, String);
+    method public void onPageCommitVisible(android.webkit.WebView, String);
+    method public void onPageFinished(android.webkit.WebView, String);
+    method public void onPageStarted(android.webkit.WebView, String, android.graphics.Bitmap);
+    method public void onReceivedClientCertRequest(android.webkit.WebView, android.webkit.ClientCertRequest);
+    method @Deprecated public void onReceivedError(android.webkit.WebView, int, String, String);
+    method public void onReceivedError(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceError);
+    method public void onReceivedHttpAuthRequest(android.webkit.WebView, android.webkit.HttpAuthHandler, String, String);
+    method public void onReceivedHttpError(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceResponse);
+    method public void onReceivedLoginRequest(android.webkit.WebView, String, @Nullable String, String);
+    method public void onReceivedSslError(android.webkit.WebView, android.webkit.SslErrorHandler, android.net.http.SslError);
+    method public boolean onRenderProcessGone(android.webkit.WebView, android.webkit.RenderProcessGoneDetail);
+    method public void onSafeBrowsingHit(android.webkit.WebView, android.webkit.WebResourceRequest, int, android.webkit.SafeBrowsingResponse);
+    method public void onScaleChanged(android.webkit.WebView, float, float);
+    method @Deprecated public void onTooManyRedirects(android.webkit.WebView, android.os.Message, android.os.Message);
+    method public void onUnhandledKeyEvent(android.webkit.WebView, android.view.KeyEvent);
+    method @Deprecated @Nullable public android.webkit.WebResourceResponse shouldInterceptRequest(android.webkit.WebView, String);
+    method @Nullable public android.webkit.WebResourceResponse shouldInterceptRequest(android.webkit.WebView, android.webkit.WebResourceRequest);
+    method public boolean shouldOverrideKeyEvent(android.webkit.WebView, android.view.KeyEvent);
+    method @Deprecated public boolean shouldOverrideUrlLoading(android.webkit.WebView, String);
+    method public boolean shouldOverrideUrlLoading(android.webkit.WebView, android.webkit.WebResourceRequest);
+    field public static final int ERROR_AUTHENTICATION = -4; // 0xfffffffc
+    field public static final int ERROR_BAD_URL = -12; // 0xfffffff4
+    field public static final int ERROR_CONNECT = -6; // 0xfffffffa
+    field public static final int ERROR_FAILED_SSL_HANDSHAKE = -11; // 0xfffffff5
+    field public static final int ERROR_FILE = -13; // 0xfffffff3
+    field public static final int ERROR_FILE_NOT_FOUND = -14; // 0xfffffff2
+    field public static final int ERROR_HOST_LOOKUP = -2; // 0xfffffffe
+    field public static final int ERROR_IO = -7; // 0xfffffff9
+    field public static final int ERROR_PROXY_AUTHENTICATION = -5; // 0xfffffffb
+    field public static final int ERROR_REDIRECT_LOOP = -9; // 0xfffffff7
+    field public static final int ERROR_TIMEOUT = -8; // 0xfffffff8
+    field public static final int ERROR_TOO_MANY_REQUESTS = -15; // 0xfffffff1
+    field public static final int ERROR_UNKNOWN = -1; // 0xffffffff
+    field public static final int ERROR_UNSAFE_RESOURCE = -16; // 0xfffffff0
+    field public static final int ERROR_UNSUPPORTED_AUTH_SCHEME = -3; // 0xfffffffd
+    field public static final int ERROR_UNSUPPORTED_SCHEME = -10; // 0xfffffff6
+    field public static final int SAFE_BROWSING_THREAT_BILLING = 4; // 0x4
+    field public static final int SAFE_BROWSING_THREAT_MALWARE = 1; // 0x1
+    field public static final int SAFE_BROWSING_THREAT_PHISHING = 2; // 0x2
+    field public static final int SAFE_BROWSING_THREAT_UNKNOWN = 0; // 0x0
+    field public static final int SAFE_BROWSING_THREAT_UNWANTED_SOFTWARE = 3; // 0x3
+  }
+
+  public abstract class WebViewDatabase {
+    ctor @Deprecated public WebViewDatabase();
+    method @Deprecated public abstract void clearFormData();
+    method public abstract void clearHttpAuthUsernamePassword();
+    method @Deprecated public abstract void clearUsernamePassword();
+    method @Nullable public abstract String[] getHttpAuthUsernamePassword(String, String);
+    method public static android.webkit.WebViewDatabase getInstance(android.content.Context);
+    method @Deprecated public abstract boolean hasFormData();
+    method public abstract boolean hasHttpAuthUsernamePassword();
+    method @Deprecated public abstract boolean hasUsernamePassword();
+    method public abstract void setHttpAuthUsernamePassword(String, String, String, String);
+  }
+
+  @Deprecated public class WebViewFragment extends android.app.Fragment {
+    ctor @Deprecated public WebViewFragment();
+    method @Deprecated public android.webkit.WebView getWebView();
+  }
+
+  public abstract class WebViewRenderProcess {
+    ctor public WebViewRenderProcess();
+    method public abstract boolean terminate();
+  }
+
+  public abstract class WebViewRenderProcessClient {
+    ctor public WebViewRenderProcessClient();
+    method public abstract void onRenderProcessResponsive(@NonNull android.webkit.WebView, @Nullable android.webkit.WebViewRenderProcess);
+    method public abstract void onRenderProcessUnresponsive(@NonNull android.webkit.WebView, @Nullable android.webkit.WebViewRenderProcess);
+  }
+
+}
+
+package android.widget {
+
+  public abstract class AbsListView extends android.widget.AdapterView<android.widget.ListAdapter> implements android.widget.Filter.FilterListener android.text.TextWatcher android.view.ViewTreeObserver.OnGlobalLayoutListener android.view.ViewTreeObserver.OnTouchModeChangeListener {
+    ctor public AbsListView(android.content.Context);
+    ctor public AbsListView(android.content.Context, android.util.AttributeSet);
+    ctor public AbsListView(android.content.Context, android.util.AttributeSet, int);
+    ctor public AbsListView(android.content.Context, android.util.AttributeSet, int, int);
+    method public void afterTextChanged(android.text.Editable);
+    method public void beforeTextChanged(CharSequence, int, int, int);
+    method public boolean canScrollList(int);
+    method public void clearChoices();
+    method public void clearTextFilter();
+    method public void deferNotifyDataSetChanged();
+    method public void fling(int);
+    method public android.widget.AbsListView.LayoutParams generateLayoutParams(android.util.AttributeSet);
+    method @ColorInt public int getBottomEdgeEffectColor();
+    method @ColorInt public int getCacheColorHint();
+    method public int getCheckedItemCount();
+    method public long[] getCheckedItemIds();
+    method public int getCheckedItemPosition();
+    method public android.util.SparseBooleanArray getCheckedItemPositions();
+    method public int getChoiceMode();
+    method public int getListPaddingBottom();
+    method public int getListPaddingLeft();
+    method public int getListPaddingRight();
+    method public int getListPaddingTop();
+    method public android.view.View getSelectedView();
+    method public android.graphics.drawable.Drawable getSelector();
+    method public CharSequence getTextFilter();
+    method @ColorInt public int getTopEdgeEffectColor();
+    method public int getTranscriptMode();
+    method protected void handleDataChanged();
+    method public boolean hasTextFilter();
+    method public void invalidateViews();
+    method public boolean isDrawSelectorOnTop();
+    method public boolean isFastScrollAlwaysVisible();
+    method public boolean isFastScrollEnabled();
+    method protected boolean isInFilterMode();
+    method public boolean isItemChecked(int);
+    method public boolean isScrollingCacheEnabled();
+    method public boolean isSmoothScrollbarEnabled();
+    method public boolean isStackFromBottom();
+    method public boolean isTextFilterEnabled();
+    method protected void layoutChildren();
+    method public void onFilterComplete(int);
+    method public void onGlobalLayout();
+    method public void onInitializeAccessibilityNodeInfoForItem(android.view.View, int, android.view.accessibility.AccessibilityNodeInfo);
+    method public boolean onRemoteAdapterConnected();
+    method public void onRemoteAdapterDisconnected();
+    method public void onRestoreInstanceState(android.os.Parcelable);
+    method public android.os.Parcelable onSaveInstanceState();
+    method public void onTextChanged(CharSequence, int, int, int);
+    method public void onTouchModeChanged(boolean);
+    method public int pointToPosition(int, int);
+    method public long pointToRowId(int, int);
+    method public void reclaimViews(java.util.List<android.view.View>);
+    method public void scrollListBy(int);
+    method public void setAdapter(android.widget.ListAdapter);
+    method public void setBottomEdgeEffectColor(@ColorInt int);
+    method public void setCacheColorHint(@ColorInt int);
+    method public void setChoiceMode(int);
+    method public void setDrawSelectorOnTop(boolean);
+    method public void setEdgeEffectColor(@ColorInt int);
+    method public void setFastScrollAlwaysVisible(boolean);
+    method public void setFastScrollEnabled(boolean);
+    method public void setFastScrollStyle(int);
+    method public void setFilterText(String);
+    method public void setFriction(float);
+    method public void setItemChecked(int, boolean);
+    method public void setMultiChoiceModeListener(android.widget.AbsListView.MultiChoiceModeListener);
+    method public void setOnScrollListener(android.widget.AbsListView.OnScrollListener);
+    method public void setRecyclerListener(android.widget.AbsListView.RecyclerListener);
+    method public void setRemoteViewsAdapter(android.content.Intent);
+    method public void setScrollIndicators(android.view.View, android.view.View);
+    method public void setScrollingCacheEnabled(boolean);
+    method public void setSelectionFromTop(int, int);
+    method public void setSelector(@DrawableRes int);
+    method public void setSelector(android.graphics.drawable.Drawable);
+    method public void setSmoothScrollbarEnabled(boolean);
+    method public void setStackFromBottom(boolean);
+    method public void setTextFilterEnabled(boolean);
+    method public void setTopEdgeEffectColor(@ColorInt int);
+    method public void setTranscriptMode(int);
+    method public void setVelocityScale(float);
+    method public void smoothScrollBy(int, int);
+    method public void smoothScrollToPosition(int);
+    method public void smoothScrollToPosition(int, int);
+    method public void smoothScrollToPositionFromTop(int, int, int);
+    method public void smoothScrollToPositionFromTop(int, int);
+    method public boolean verifyDrawable(@NonNull android.graphics.drawable.Drawable);
+    field public static final int CHOICE_MODE_MULTIPLE = 2; // 0x2
+    field public static final int CHOICE_MODE_MULTIPLE_MODAL = 3; // 0x3
+    field public static final int CHOICE_MODE_NONE = 0; // 0x0
+    field public static final int CHOICE_MODE_SINGLE = 1; // 0x1
+    field public static final int TRANSCRIPT_MODE_ALWAYS_SCROLL = 2; // 0x2
+    field public static final int TRANSCRIPT_MODE_DISABLED = 0; // 0x0
+    field public static final int TRANSCRIPT_MODE_NORMAL = 1; // 0x1
+  }
+
+  public static class AbsListView.LayoutParams extends android.view.ViewGroup.LayoutParams {
+    ctor public AbsListView.LayoutParams(android.content.Context, android.util.AttributeSet);
+    ctor public AbsListView.LayoutParams(int, int);
+    ctor public AbsListView.LayoutParams(int, int, int);
+    ctor public AbsListView.LayoutParams(android.view.ViewGroup.LayoutParams);
+  }
+
+  public static interface AbsListView.MultiChoiceModeListener extends android.view.ActionMode.Callback {
+    method public void onItemCheckedStateChanged(android.view.ActionMode, int, long, boolean);
+  }
+
+  public static interface AbsListView.OnScrollListener {
+    method public void onScroll(android.widget.AbsListView, int, int, int);
+    method public void onScrollStateChanged(android.widget.AbsListView, int);
+    field public static final int SCROLL_STATE_FLING = 2; // 0x2
+    field public static final int SCROLL_STATE_IDLE = 0; // 0x0
+    field public static final int SCROLL_STATE_TOUCH_SCROLL = 1; // 0x1
+  }
+
+  public static interface AbsListView.RecyclerListener {
+    method public void onMovedToScrapHeap(android.view.View);
+  }
+
+  public static interface AbsListView.SelectionBoundsAdjuster {
+    method public void adjustListItemSelectionBounds(android.graphics.Rect);
+  }
+
+  public abstract class AbsSeekBar extends android.widget.ProgressBar {
+    ctor public AbsSeekBar(android.content.Context);
+    ctor public AbsSeekBar(android.content.Context, android.util.AttributeSet);
+    ctor public AbsSeekBar(android.content.Context, android.util.AttributeSet, int);
+    ctor public AbsSeekBar(android.content.Context, android.util.AttributeSet, int, int);
+    method public int getKeyProgressIncrement();
+    method public boolean getSplitTrack();
+    method public android.graphics.drawable.Drawable getThumb();
+    method public int getThumbOffset();
+    method @Nullable public android.graphics.BlendMode getThumbTintBlendMode();
+    method @Nullable public android.content.res.ColorStateList getThumbTintList();
+    method @Nullable public android.graphics.PorterDuff.Mode getThumbTintMode();
+    method public android.graphics.drawable.Drawable getTickMark();
+    method @Nullable public android.graphics.BlendMode getTickMarkTintBlendMode();
+    method @Nullable public android.content.res.ColorStateList getTickMarkTintList();
+    method @Nullable public android.graphics.PorterDuff.Mode getTickMarkTintMode();
+    method public void setKeyProgressIncrement(int);
+    method public void setSplitTrack(boolean);
+    method public void setThumb(android.graphics.drawable.Drawable);
+    method public void setThumbOffset(int);
+    method public void setThumbTintBlendMode(@Nullable android.graphics.BlendMode);
+    method public void setThumbTintList(@Nullable android.content.res.ColorStateList);
+    method public void setThumbTintMode(@Nullable android.graphics.PorterDuff.Mode);
+    method public void setTickMark(android.graphics.drawable.Drawable);
+    method public void setTickMarkTintBlendMode(@Nullable android.graphics.BlendMode);
+    method public void setTickMarkTintList(@Nullable android.content.res.ColorStateList);
+    method public void setTickMarkTintMode(@Nullable android.graphics.PorterDuff.Mode);
+  }
+
+  public abstract class AbsSpinner extends android.widget.AdapterView<android.widget.SpinnerAdapter> {
+    ctor public AbsSpinner(android.content.Context);
+    ctor public AbsSpinner(android.content.Context, android.util.AttributeSet);
+    ctor public AbsSpinner(android.content.Context, android.util.AttributeSet, int);
+    ctor public AbsSpinner(android.content.Context, android.util.AttributeSet, int, int);
+    method public android.widget.SpinnerAdapter getAdapter();
+    method public android.view.View getSelectedView();
+    method public void onRestoreInstanceState(android.os.Parcelable);
+    method public android.os.Parcelable onSaveInstanceState();
+    method public int pointToPosition(int, int);
+    method public void setAdapter(android.widget.SpinnerAdapter);
+    method public void setSelection(int, boolean);
+    method public void setSelection(int);
+  }
+
+  @Deprecated @android.widget.RemoteViews.RemoteView public class AbsoluteLayout extends android.view.ViewGroup {
+    ctor @Deprecated public AbsoluteLayout(android.content.Context);
+    ctor @Deprecated public AbsoluteLayout(android.content.Context, android.util.AttributeSet);
+    ctor @Deprecated public AbsoluteLayout(android.content.Context, android.util.AttributeSet, int);
+    ctor @Deprecated public AbsoluteLayout(android.content.Context, android.util.AttributeSet, int, int);
+  }
+
+  @Deprecated public static class AbsoluteLayout.LayoutParams extends android.view.ViewGroup.LayoutParams {
+    ctor @Deprecated public AbsoluteLayout.LayoutParams(int, int, int, int);
+    ctor @Deprecated public AbsoluteLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
+    ctor @Deprecated public AbsoluteLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
+    method @Deprecated public String debug(String);
+    field @Deprecated public int x;
+    field @Deprecated public int y;
+  }
+
+  public class ActionMenuView extends android.widget.LinearLayout {
+    ctor public ActionMenuView(android.content.Context);
+    ctor public ActionMenuView(android.content.Context, android.util.AttributeSet);
+    method public void dismissPopupMenus();
+    method protected android.widget.ActionMenuView.LayoutParams generateDefaultLayoutParams();
+    method public android.widget.ActionMenuView.LayoutParams generateLayoutParams(android.util.AttributeSet);
+    method protected android.widget.ActionMenuView.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams);
+    method public android.view.Menu getMenu();
+    method @Nullable public android.graphics.drawable.Drawable getOverflowIcon();
+    method public int getPopupTheme();
+    method public boolean hideOverflowMenu();
+    method public boolean isOverflowMenuShowing();
+    method public void onConfigurationChanged(android.content.res.Configuration);
+    method public void onDetachedFromWindow();
+    method public void setOnMenuItemClickListener(android.widget.ActionMenuView.OnMenuItemClickListener);
+    method public void setOverflowIcon(@Nullable android.graphics.drawable.Drawable);
+    method public void setPopupTheme(@StyleRes int);
+    method public boolean showOverflowMenu();
+  }
+
+  public static class ActionMenuView.LayoutParams extends android.widget.LinearLayout.LayoutParams {
+    ctor public ActionMenuView.LayoutParams(android.content.Context, android.util.AttributeSet);
+    ctor public ActionMenuView.LayoutParams(android.view.ViewGroup.LayoutParams);
+    ctor public ActionMenuView.LayoutParams(android.widget.ActionMenuView.LayoutParams);
+    ctor public ActionMenuView.LayoutParams(int, int);
+  }
+
+  public static interface ActionMenuView.OnMenuItemClickListener {
+    method public boolean onMenuItemClick(android.view.MenuItem);
+  }
+
+  public interface Adapter {
+    method @Nullable public default CharSequence[] getAutofillOptions();
+    method public int getCount();
+    method public Object getItem(int);
+    method public long getItemId(int);
+    method public int getItemViewType(int);
+    method public android.view.View getView(int, android.view.View, android.view.ViewGroup);
+    method public int getViewTypeCount();
+    method public boolean hasStableIds();
+    method public boolean isEmpty();
+    method public void registerDataSetObserver(android.database.DataSetObserver);
+    method public void unregisterDataSetObserver(android.database.DataSetObserver);
+    field public static final int IGNORE_ITEM_VIEW_TYPE = -1; // 0xffffffff
+    field public static final int NO_SELECTION = -2147483648; // 0x80000000
+  }
+
+  public abstract class AdapterView<T extends android.widget.Adapter> extends android.view.ViewGroup {
+    ctor public AdapterView(android.content.Context);
+    ctor public AdapterView(android.content.Context, android.util.AttributeSet);
+    ctor public AdapterView(android.content.Context, android.util.AttributeSet, int);
+    ctor public AdapterView(android.content.Context, android.util.AttributeSet, int, int);
+    method public abstract T getAdapter();
+    method public int getCount();
+    method public android.view.View getEmptyView();
+    method public int getFirstVisiblePosition();
+    method public Object getItemAtPosition(int);
+    method public long getItemIdAtPosition(int);
+    method public int getLastVisiblePosition();
+    method @Nullable public final android.widget.AdapterView.OnItemClickListener getOnItemClickListener();
+    method public final android.widget.AdapterView.OnItemLongClickListener getOnItemLongClickListener();
+    method @Nullable public final android.widget.AdapterView.OnItemSelectedListener getOnItemSelectedListener();
+    method public int getPositionForView(android.view.View);
+    method public Object getSelectedItem();
+    method public long getSelectedItemId();
+    method public int getSelectedItemPosition();
+    method public abstract android.view.View getSelectedView();
+    method public boolean performItemClick(android.view.View, int, long);
+    method public abstract void setAdapter(T);
+    method public void setEmptyView(android.view.View);
+    method public void setOnItemClickListener(@Nullable android.widget.AdapterView.OnItemClickListener);
+    method public void setOnItemLongClickListener(android.widget.AdapterView.OnItemLongClickListener);
+    method public void setOnItemSelectedListener(@Nullable android.widget.AdapterView.OnItemSelectedListener);
+    method public abstract void setSelection(int);
+    field public static final int INVALID_POSITION = -1; // 0xffffffff
+    field public static final long INVALID_ROW_ID = -9223372036854775808L; // 0x8000000000000000L
+    field public static final int ITEM_VIEW_TYPE_HEADER_OR_FOOTER = -2; // 0xfffffffe
+    field public static final int ITEM_VIEW_TYPE_IGNORE = -1; // 0xffffffff
+  }
+
+  public static class AdapterView.AdapterContextMenuInfo implements android.view.ContextMenu.ContextMenuInfo {
+    ctor public AdapterView.AdapterContextMenuInfo(android.view.View, int, long);
+    field public long id;
+    field public int position;
+    field public android.view.View targetView;
+  }
+
+  public static interface AdapterView.OnItemClickListener {
+    method public void onItemClick(android.widget.AdapterView<?>, android.view.View, int, long);
+  }
+
+  public static interface AdapterView.OnItemLongClickListener {
+    method public boolean onItemLongClick(android.widget.AdapterView<?>, android.view.View, int, long);
+  }
+
+  public static interface AdapterView.OnItemSelectedListener {
+    method public void onItemSelected(android.widget.AdapterView<?>, android.view.View, int, long);
+    method public void onNothingSelected(android.widget.AdapterView<?>);
+  }
+
+  public abstract class AdapterViewAnimator extends android.widget.AdapterView<android.widget.Adapter> implements android.widget.Advanceable {
+    ctor public AdapterViewAnimator(android.content.Context);
+    ctor public AdapterViewAnimator(android.content.Context, android.util.AttributeSet);
+    ctor public AdapterViewAnimator(android.content.Context, android.util.AttributeSet, int);
+    ctor public AdapterViewAnimator(android.content.Context, android.util.AttributeSet, int, int);
+    method public void advance();
+    method public void deferNotifyDataSetChanged();
+    method public void fyiWillBeAdvancedByHostKThx();
+    method public android.widget.Adapter getAdapter();
+    method public android.view.View getCurrentView();
+    method public int getDisplayedChild();
+    method public android.animation.ObjectAnimator getInAnimation();
+    method public android.animation.ObjectAnimator getOutAnimation();
+    method public android.view.View getSelectedView();
+    method public boolean onRemoteAdapterConnected();
+    method public void onRemoteAdapterDisconnected();
+    method public void onRestoreInstanceState(android.os.Parcelable);
+    method public android.os.Parcelable onSaveInstanceState();
+    method public void setAdapter(android.widget.Adapter);
+    method public void setAnimateFirstView(boolean);
+    method public void setDisplayedChild(int);
+    method public void setInAnimation(android.animation.ObjectAnimator);
+    method public void setInAnimation(android.content.Context, int);
+    method public void setOutAnimation(android.animation.ObjectAnimator);
+    method public void setOutAnimation(android.content.Context, int);
+    method public void setRemoteViewsAdapter(android.content.Intent);
+    method public void setSelection(int);
+    method public void showNext();
+    method public void showPrevious();
+  }
+
+  @android.widget.RemoteViews.RemoteView public class AdapterViewFlipper extends android.widget.AdapterViewAnimator {
+    ctor public AdapterViewFlipper(android.content.Context);
+    ctor public AdapterViewFlipper(android.content.Context, android.util.AttributeSet);
+    ctor public AdapterViewFlipper(android.content.Context, android.util.AttributeSet, int);
+    ctor public AdapterViewFlipper(android.content.Context, android.util.AttributeSet, int, int);
+    method public int getFlipInterval();
+    method public boolean isAutoStart();
+    method public boolean isFlipping();
+    method public void setAutoStart(boolean);
+    method public void setFlipInterval(int);
+    method public void startFlipping();
+    method public void stopFlipping();
+  }
+
+  public interface Advanceable {
+    method public void advance();
+    method public void fyiWillBeAdvancedByHostKThx();
+  }
+
+  public class AlphabetIndexer extends android.database.DataSetObserver implements android.widget.SectionIndexer {
+    ctor public AlphabetIndexer(android.database.Cursor, int, CharSequence);
+    method protected int compare(String, String);
+    method public int getPositionForSection(int);
+    method public int getSectionForPosition(int);
+    method public Object[] getSections();
+    method public void setCursor(android.database.Cursor);
+    field protected CharSequence mAlphabet;
+    field protected int mColumnIndex;
+    field protected android.database.Cursor mDataCursor;
+  }
+
+  @Deprecated @android.widget.RemoteViews.RemoteView public class AnalogClock extends android.view.View {
+    ctor @Deprecated public AnalogClock(android.content.Context);
+    ctor @Deprecated public AnalogClock(android.content.Context, android.util.AttributeSet);
+    ctor @Deprecated public AnalogClock(android.content.Context, android.util.AttributeSet, int);
+    ctor @Deprecated public AnalogClock(android.content.Context, android.util.AttributeSet, int, int);
+  }
+
+  public class ArrayAdapter<T> extends android.widget.BaseAdapter implements android.widget.Filterable android.widget.ThemedSpinnerAdapter {
+    ctor public ArrayAdapter(@NonNull android.content.Context, @LayoutRes int);
+    ctor public ArrayAdapter(@NonNull android.content.Context, @LayoutRes int, @IdRes int);
+    ctor public ArrayAdapter(@NonNull android.content.Context, @LayoutRes int, @NonNull T[]);
+    ctor public ArrayAdapter(@NonNull android.content.Context, @LayoutRes int, @IdRes int, @NonNull T[]);
+    ctor public ArrayAdapter(@NonNull android.content.Context, @LayoutRes int, @NonNull java.util.List<T>);
+    ctor public ArrayAdapter(@NonNull android.content.Context, @LayoutRes int, @IdRes int, @NonNull java.util.List<T>);
+    method public void add(@Nullable T);
+    method public void addAll(@NonNull java.util.Collection<? extends T>);
+    method public void addAll(T...);
+    method public void clear();
+    method @NonNull public static android.widget.ArrayAdapter<java.lang.CharSequence> createFromResource(@NonNull android.content.Context, @ArrayRes int, @LayoutRes int);
+    method @NonNull public android.content.Context getContext();
+    method public int getCount();
+    method @Nullable public android.content.res.Resources.Theme getDropDownViewTheme();
+    method @NonNull public android.widget.Filter getFilter();
+    method @Nullable public T getItem(int);
+    method public long getItemId(int);
+    method public int getPosition(@Nullable T);
+    method @NonNull public android.view.View getView(int, @Nullable android.view.View, @NonNull android.view.ViewGroup);
+    method public void insert(@Nullable T, int);
+    method public void remove(@Nullable T);
+    method public void setDropDownViewResource(@LayoutRes int);
+    method public void setDropDownViewTheme(@Nullable android.content.res.Resources.Theme);
+    method public void setNotifyOnChange(boolean);
+    method public void sort(@NonNull java.util.Comparator<? super T>);
+  }
+
+  public class AutoCompleteTextView extends android.widget.EditText implements android.widget.Filter.FilterListener {
+    ctor public AutoCompleteTextView(android.content.Context);
+    ctor public AutoCompleteTextView(android.content.Context, android.util.AttributeSet);
+    ctor public AutoCompleteTextView(android.content.Context, android.util.AttributeSet, int);
+    ctor public AutoCompleteTextView(android.content.Context, android.util.AttributeSet, int, int);
+    ctor public AutoCompleteTextView(android.content.Context, android.util.AttributeSet, int, int, android.content.res.Resources.Theme);
+    method public void clearListSelection();
+    method protected CharSequence convertSelectionToString(Object);
+    method public void dismissDropDown();
+    method public boolean enoughToFilter();
+    method public android.widget.ListAdapter getAdapter();
+    method public CharSequence getCompletionHint();
+    method public int getDropDownAnchor();
+    method public android.graphics.drawable.Drawable getDropDownBackground();
+    method public int getDropDownHeight();
+    method public int getDropDownHorizontalOffset();
+    method public int getDropDownVerticalOffset();
+    method public int getDropDownWidth();
+    method protected android.widget.Filter getFilter();
+    method public int getInputMethodMode();
+    method @Deprecated public android.widget.AdapterView.OnItemClickListener getItemClickListener();
+    method @Deprecated public android.widget.AdapterView.OnItemSelectedListener getItemSelectedListener();
+    method public int getListSelection();
+    method public android.widget.AdapterView.OnItemClickListener getOnItemClickListener();
+    method public android.widget.AdapterView.OnItemSelectedListener getOnItemSelectedListener();
+    method public int getThreshold();
+    method public android.widget.AutoCompleteTextView.Validator getValidator();
+    method public boolean isPerformingCompletion();
+    method public boolean isPopupShowing();
+    method public void onFilterComplete(int);
+    method public void performCompletion();
+    method protected void performFiltering(CharSequence, int);
+    method public void performValidation();
+    method public final void refreshAutoCompleteResults();
+    method protected void replaceText(CharSequence);
+    method public <T extends android.widget.ListAdapter & android.widget.Filterable> void setAdapter(T);
+    method public void setCompletionHint(CharSequence);
+    method public void setDropDownAnchor(int);
+    method public void setDropDownBackgroundDrawable(android.graphics.drawable.Drawable);
+    method public void setDropDownBackgroundResource(@DrawableRes int);
+    method public void setDropDownHeight(int);
+    method public void setDropDownHorizontalOffset(int);
+    method public void setDropDownVerticalOffset(int);
+    method public void setDropDownWidth(int);
+    method public void setInputMethodMode(int);
+    method public void setListSelection(int);
+    method public void setOnDismissListener(android.widget.AutoCompleteTextView.OnDismissListener);
+    method public void setOnItemClickListener(android.widget.AdapterView.OnItemClickListener);
+    method public void setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener);
+    method public void setText(CharSequence, boolean);
+    method public void setThreshold(int);
+    method public void setValidator(android.widget.AutoCompleteTextView.Validator);
+    method public void showDropDown();
+  }
+
+  public static interface AutoCompleteTextView.OnDismissListener {
+    method public void onDismiss();
+  }
+
+  public static interface AutoCompleteTextView.Validator {
+    method public CharSequence fixText(CharSequence);
+    method public boolean isValid(CharSequence);
+  }
+
+  public abstract class BaseAdapter implements android.widget.ListAdapter android.widget.SpinnerAdapter {
+    ctor public BaseAdapter();
+    method public boolean areAllItemsEnabled();
+    method public android.view.View getDropDownView(int, android.view.View, android.view.ViewGroup);
+    method public int getItemViewType(int);
+    method public int getViewTypeCount();
+    method public boolean hasStableIds();
+    method public boolean isEmpty();
+    method public boolean isEnabled(int);
+    method public void notifyDataSetChanged();
+    method public void notifyDataSetInvalidated();
+    method public void registerDataSetObserver(android.database.DataSetObserver);
+    method public void setAutofillOptions(@Nullable java.lang.CharSequence...);
+    method public void unregisterDataSetObserver(android.database.DataSetObserver);
+  }
+
+  public abstract class BaseExpandableListAdapter implements android.widget.ExpandableListAdapter android.widget.HeterogeneousExpandableList {
+    ctor public BaseExpandableListAdapter();
+    method public boolean areAllItemsEnabled();
+    method public int getChildType(int, int);
+    method public int getChildTypeCount();
+    method public long getCombinedChildId(long, long);
+    method public long getCombinedGroupId(long);
+    method public int getGroupType(int);
+    method public int getGroupTypeCount();
+    method public boolean isEmpty();
+    method public void notifyDataSetChanged();
+    method public void notifyDataSetInvalidated();
+    method public void onGroupCollapsed(int);
+    method public void onGroupExpanded(int);
+    method public void registerDataSetObserver(android.database.DataSetObserver);
+    method public void unregisterDataSetObserver(android.database.DataSetObserver);
+  }
+
+  @android.widget.RemoteViews.RemoteView public class Button extends android.widget.TextView {
+    ctor public Button(android.content.Context);
+    ctor public Button(android.content.Context, android.util.AttributeSet);
+    ctor public Button(android.content.Context, android.util.AttributeSet, int);
+    ctor public Button(android.content.Context, android.util.AttributeSet, int, int);
+  }
+
+  public class CalendarView extends android.widget.FrameLayout {
+    ctor public CalendarView(@NonNull android.content.Context);
+    ctor public CalendarView(@NonNull android.content.Context, @Nullable android.util.AttributeSet);
+    ctor public CalendarView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, @AttrRes int);
+    ctor public CalendarView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, @AttrRes int, @StyleRes int);
+    method public long getDate();
+    method @StyleRes public int getDateTextAppearance();
+    method public int getFirstDayOfWeek();
+    method @Deprecated @ColorInt public int getFocusedMonthDateColor();
+    method public long getMaxDate();
+    method public long getMinDate();
+    method @Deprecated public android.graphics.drawable.Drawable getSelectedDateVerticalBar();
+    method @Deprecated @ColorInt public int getSelectedWeekBackgroundColor();
+    method @Deprecated public boolean getShowWeekNumber();
+    method @Deprecated public int getShownWeekCount();
+    method @Deprecated @ColorInt public int getUnfocusedMonthDateColor();
+    method @StyleRes public int getWeekDayTextAppearance();
+    method @Deprecated @ColorInt public int getWeekNumberColor();
+    method @Deprecated @ColorInt public int getWeekSeparatorLineColor();
+    method public void setDate(long);
+    method public void setDate(long, boolean, boolean);
+    method public void setDateTextAppearance(@StyleRes int);
+    method public void setFirstDayOfWeek(int);
+    method @Deprecated public void setFocusedMonthDateColor(@ColorInt int);
+    method public void setMaxDate(long);
+    method public void setMinDate(long);
+    method public void setOnDateChangeListener(android.widget.CalendarView.OnDateChangeListener);
+    method @Deprecated public void setSelectedDateVerticalBar(@DrawableRes int);
+    method @Deprecated public void setSelectedDateVerticalBar(android.graphics.drawable.Drawable);
+    method @Deprecated public void setSelectedWeekBackgroundColor(@ColorInt int);
+    method @Deprecated public void setShowWeekNumber(boolean);
+    method @Deprecated public void setShownWeekCount(int);
+    method @Deprecated public void setUnfocusedMonthDateColor(@ColorInt int);
+    method public void setWeekDayTextAppearance(@StyleRes int);
+    method @Deprecated public void setWeekNumberColor(@ColorInt int);
+    method @Deprecated public void setWeekSeparatorLineColor(@ColorInt int);
+  }
+
+  public static interface CalendarView.OnDateChangeListener {
+    method public void onSelectedDayChange(@NonNull android.widget.CalendarView, int, int, int);
+  }
+
+  public class CheckBox extends android.widget.CompoundButton {
+    ctor public CheckBox(android.content.Context);
+    ctor public CheckBox(android.content.Context, android.util.AttributeSet);
+    ctor public CheckBox(android.content.Context, android.util.AttributeSet, int);
+    ctor public CheckBox(android.content.Context, android.util.AttributeSet, int, int);
+  }
+
+  public interface Checkable {
+    method public boolean isChecked();
+    method public void setChecked(boolean);
+    method public void toggle();
+  }
+
+  public class CheckedTextView extends android.widget.TextView implements android.widget.Checkable {
+    ctor public CheckedTextView(android.content.Context);
+    ctor public CheckedTextView(android.content.Context, android.util.AttributeSet);
+    ctor public CheckedTextView(android.content.Context, android.util.AttributeSet, int);
+    ctor public CheckedTextView(android.content.Context, android.util.AttributeSet, int, int);
+    method public android.graphics.drawable.Drawable getCheckMarkDrawable();
+    method @Nullable public android.graphics.BlendMode getCheckMarkTintBlendMode();
+    method @Nullable public android.content.res.ColorStateList getCheckMarkTintList();
+    method @Nullable public android.graphics.PorterDuff.Mode getCheckMarkTintMode();
+    method public boolean isChecked();
+    method public void setCheckMarkDrawable(@DrawableRes int);
+    method public void setCheckMarkDrawable(@Nullable android.graphics.drawable.Drawable);
+    method public void setCheckMarkTintBlendMode(@Nullable android.graphics.BlendMode);
+    method public void setCheckMarkTintList(@Nullable android.content.res.ColorStateList);
+    method public void setCheckMarkTintMode(@Nullable android.graphics.PorterDuff.Mode);
+    method public void setChecked(boolean);
+    method public void toggle();
+  }
+
+  @android.widget.RemoteViews.RemoteView public class Chronometer extends android.widget.TextView {
+    ctor public Chronometer(android.content.Context);
+    ctor public Chronometer(android.content.Context, android.util.AttributeSet);
+    ctor public Chronometer(android.content.Context, android.util.AttributeSet, int);
+    ctor public Chronometer(android.content.Context, android.util.AttributeSet, int, int);
+    method public long getBase();
+    method public String getFormat();
+    method public android.widget.Chronometer.OnChronometerTickListener getOnChronometerTickListener();
+    method public boolean isCountDown();
+    method public boolean isTheFinalCountDown();
+    method public void setBase(long);
+    method public void setCountDown(boolean);
+    method public void setFormat(String);
+    method public void setOnChronometerTickListener(android.widget.Chronometer.OnChronometerTickListener);
+    method public void start();
+    method public void stop();
+  }
+
+  public static interface Chronometer.OnChronometerTickListener {
+    method public void onChronometerTick(android.widget.Chronometer);
+  }
+
+  public abstract class CompoundButton extends android.widget.Button implements android.widget.Checkable {
+    ctor public CompoundButton(android.content.Context);
+    ctor public CompoundButton(android.content.Context, android.util.AttributeSet);
+    ctor public CompoundButton(android.content.Context, android.util.AttributeSet, int);
+    ctor public CompoundButton(android.content.Context, android.util.AttributeSet, int, int);
+    method @Nullable public android.graphics.drawable.Drawable getButtonDrawable();
+    method @Nullable public android.graphics.BlendMode getButtonTintBlendMode();
+    method @Nullable public android.content.res.ColorStateList getButtonTintList();
+    method @Nullable public android.graphics.PorterDuff.Mode getButtonTintMode();
+    method public boolean isChecked();
+    method public void setButtonDrawable(@DrawableRes int);
+    method public void setButtonDrawable(@Nullable android.graphics.drawable.Drawable);
+    method public void setButtonTintBlendMode(@Nullable android.graphics.BlendMode);
+    method public void setButtonTintList(@Nullable android.content.res.ColorStateList);
+    method public void setButtonTintMode(@Nullable android.graphics.PorterDuff.Mode);
+    method public void setChecked(boolean);
+    method public void setOnCheckedChangeListener(@Nullable android.widget.CompoundButton.OnCheckedChangeListener);
+    method public void toggle();
+  }
+
+  public static interface CompoundButton.OnCheckedChangeListener {
+    method public void onCheckedChanged(android.widget.CompoundButton, boolean);
+  }
+
+  public abstract class CursorAdapter extends android.widget.BaseAdapter implements android.widget.Filterable android.widget.ThemedSpinnerAdapter {
+    ctor @Deprecated public CursorAdapter(android.content.Context, android.database.Cursor);
+    ctor public CursorAdapter(android.content.Context, android.database.Cursor, boolean);
+    ctor public CursorAdapter(android.content.Context, android.database.Cursor, int);
+    method public abstract void bindView(android.view.View, android.content.Context, android.database.Cursor);
+    method public void changeCursor(android.database.Cursor);
+    method public CharSequence convertToString(android.database.Cursor);
+    method public int getCount();
+    method public android.database.Cursor getCursor();
+    method public android.content.res.Resources.Theme getDropDownViewTheme();
+    method public android.widget.Filter getFilter();
+    method public android.widget.FilterQueryProvider getFilterQueryProvider();
+    method public Object getItem(int);
+    method public long getItemId(int);
+    method public android.view.View getView(int, android.view.View, android.view.ViewGroup);
+    method @Deprecated protected void init(android.content.Context, android.database.Cursor, boolean);
+    method public android.view.View newDropDownView(android.content.Context, android.database.Cursor, android.view.ViewGroup);
+    method public abstract android.view.View newView(android.content.Context, android.database.Cursor, android.view.ViewGroup);
+    method protected void onContentChanged();
+    method @WorkerThread public android.database.Cursor runQueryOnBackgroundThread(CharSequence);
+    method public void setDropDownViewTheme(android.content.res.Resources.Theme);
+    method public void setFilterQueryProvider(android.widget.FilterQueryProvider);
+    method public android.database.Cursor swapCursor(android.database.Cursor);
+    field @Deprecated public static final int FLAG_AUTO_REQUERY = 1; // 0x1
+    field public static final int FLAG_REGISTER_CONTENT_OBSERVER = 2; // 0x2
+  }
+
+  public abstract class CursorTreeAdapter extends android.widget.BaseExpandableListAdapter implements android.widget.Filterable {
+    ctor public CursorTreeAdapter(android.database.Cursor, android.content.Context);
+    ctor public CursorTreeAdapter(android.database.Cursor, android.content.Context, boolean);
+    method protected abstract void bindChildView(android.view.View, android.content.Context, android.database.Cursor, boolean);
+    method protected abstract void bindGroupView(android.view.View, android.content.Context, android.database.Cursor, boolean);
+    method public void changeCursor(android.database.Cursor);
+    method public String convertToString(android.database.Cursor);
+    method public android.database.Cursor getChild(int, int);
+    method public long getChildId(int, int);
+    method public android.view.View getChildView(int, int, boolean, android.view.View, android.view.ViewGroup);
+    method public int getChildrenCount(int);
+    method protected abstract android.database.Cursor getChildrenCursor(android.database.Cursor);
+    method public android.database.Cursor getCursor();
+    method public android.widget.Filter getFilter();
+    method public android.widget.FilterQueryProvider getFilterQueryProvider();
+    method public android.database.Cursor getGroup(int);
+    method public int getGroupCount();
+    method public long getGroupId(int);
+    method public android.view.View getGroupView(int, boolean, android.view.View, android.view.ViewGroup);
+    method public boolean hasStableIds();
+    method public boolean isChildSelectable(int, int);
+    method protected abstract android.view.View newChildView(android.content.Context, android.database.Cursor, boolean, android.view.ViewGroup);
+    method protected abstract android.view.View newGroupView(android.content.Context, android.database.Cursor, boolean, android.view.ViewGroup);
+    method public void notifyDataSetChanged(boolean);
+    method public android.database.Cursor runQueryOnBackgroundThread(CharSequence);
+    method public void setChildrenCursor(int, android.database.Cursor);
+    method public void setFilterQueryProvider(android.widget.FilterQueryProvider);
+    method public void setGroupCursor(android.database.Cursor);
+  }
+
+  public class DatePicker extends android.widget.FrameLayout {
+    ctor public DatePicker(android.content.Context);
+    ctor public DatePicker(android.content.Context, android.util.AttributeSet);
+    ctor public DatePicker(android.content.Context, android.util.AttributeSet, int);
+    ctor public DatePicker(android.content.Context, android.util.AttributeSet, int, int);
+    method @Deprecated public android.widget.CalendarView getCalendarView();
+    method @Deprecated public boolean getCalendarViewShown();
+    method public int getDayOfMonth();
+    method public int getFirstDayOfWeek();
+    method public long getMaxDate();
+    method public long getMinDate();
+    method public int getMonth();
+    method @Deprecated public boolean getSpinnersShown();
+    method public int getYear();
+    method public void init(int, int, int, android.widget.DatePicker.OnDateChangedListener);
+    method @Deprecated public void setCalendarViewShown(boolean);
+    method public void setFirstDayOfWeek(int);
+    method public void setMaxDate(long);
+    method public void setMinDate(long);
+    method public void setOnDateChangedListener(android.widget.DatePicker.OnDateChangedListener);
+    method @Deprecated public void setSpinnersShown(boolean);
+    method public void updateDate(int, int, int);
+  }
+
+  public static interface DatePicker.OnDateChangedListener {
+    method public void onDateChanged(android.widget.DatePicker, int, int, int);
+  }
+
+  @Deprecated public class DialerFilter extends android.widget.RelativeLayout {
+    ctor @Deprecated public DialerFilter(android.content.Context);
+    ctor @Deprecated public DialerFilter(android.content.Context, android.util.AttributeSet);
+    method @Deprecated public void append(String);
+    method @Deprecated public void clearText();
+    method @Deprecated public CharSequence getDigits();
+    method @Deprecated public CharSequence getFilterText();
+    method @Deprecated public CharSequence getLetters();
+    method @Deprecated public int getMode();
+    method @Deprecated public boolean isQwertyKeyboard();
+    method @Deprecated protected void onModeChange(int, int);
+    method @Deprecated public void removeFilterWatcher(android.text.TextWatcher);
+    method @Deprecated public void setDigitsWatcher(android.text.TextWatcher);
+    method @Deprecated public void setFilterWatcher(android.text.TextWatcher);
+    method @Deprecated public void setLettersWatcher(android.text.TextWatcher);
+    method @Deprecated public void setMode(int);
+    field @Deprecated public static final int DIGITS_AND_LETTERS = 1; // 0x1
+    field @Deprecated public static final int DIGITS_AND_LETTERS_NO_DIGITS = 2; // 0x2
+    field @Deprecated public static final int DIGITS_AND_LETTERS_NO_LETTERS = 3; // 0x3
+    field @Deprecated public static final int DIGITS_ONLY = 4; // 0x4
+    field @Deprecated public static final int LETTERS_ONLY = 5; // 0x5
+  }
+
+  @Deprecated public class DigitalClock extends android.widget.TextView {
+    ctor @Deprecated public DigitalClock(android.content.Context);
+    ctor @Deprecated public DigitalClock(android.content.Context, android.util.AttributeSet);
+  }
+
+  public class EdgeEffect {
+    ctor public EdgeEffect(android.content.Context);
+    method public boolean draw(android.graphics.Canvas);
+    method public void finish();
+    method @Nullable public android.graphics.BlendMode getBlendMode();
+    method @ColorInt public int getColor();
+    method public int getMaxHeight();
+    method public boolean isFinished();
+    method public void onAbsorb(int);
+    method public void onPull(float);
+    method public void onPull(float, float);
+    method public void onRelease();
+    method public void setBlendMode(@Nullable android.graphics.BlendMode);
+    method public void setColor(@ColorInt int);
+    method public void setSize(int, int);
+    field public static final android.graphics.BlendMode DEFAULT_BLEND_MODE;
+  }
+
+  public class EditText extends android.widget.TextView {
+    ctor public EditText(android.content.Context);
+    ctor public EditText(android.content.Context, android.util.AttributeSet);
+    ctor public EditText(android.content.Context, android.util.AttributeSet, int);
+    ctor public EditText(android.content.Context, android.util.AttributeSet, int, int);
+    method public void extendSelection(int);
+    method public android.text.Editable getText();
+    method public void selectAll();
+    method public void setSelection(int, int);
+    method public void setSelection(int);
+  }
+
+  public interface ExpandableListAdapter {
+    method public boolean areAllItemsEnabled();
+    method public Object getChild(int, int);
+    method public long getChildId(int, int);
+    method public android.view.View getChildView(int, int, boolean, android.view.View, android.view.ViewGroup);
+    method public int getChildrenCount(int);
+    method public long getCombinedChildId(long, long);
+    method public long getCombinedGroupId(long);
+    method public Object getGroup(int);
+    method public int getGroupCount();
+    method public long getGroupId(int);
+    method public android.view.View getGroupView(int, boolean, android.view.View, android.view.ViewGroup);
+    method public boolean hasStableIds();
+    method public boolean isChildSelectable(int, int);
+    method public boolean isEmpty();
+    method public void onGroupCollapsed(int);
+    method public void onGroupExpanded(int);
+    method public void registerDataSetObserver(android.database.DataSetObserver);
+    method public void unregisterDataSetObserver(android.database.DataSetObserver);
+  }
+
+  public class ExpandableListView extends android.widget.ListView {
+    ctor public ExpandableListView(android.content.Context);
+    ctor public ExpandableListView(android.content.Context, android.util.AttributeSet);
+    ctor public ExpandableListView(android.content.Context, android.util.AttributeSet, int);
+    ctor public ExpandableListView(android.content.Context, android.util.AttributeSet, int, int);
+    method public boolean collapseGroup(int);
+    method public boolean expandGroup(int);
+    method public boolean expandGroup(int, boolean);
+    method public android.widget.ExpandableListAdapter getExpandableListAdapter();
+    method public long getExpandableListPosition(int);
+    method public int getFlatListPosition(long);
+    method public static int getPackedPositionChild(long);
+    method public static long getPackedPositionForChild(int, int);
+    method public static long getPackedPositionForGroup(int);
+    method public static int getPackedPositionGroup(long);
+    method public static int getPackedPositionType(long);
+    method public long getSelectedId();
+    method public long getSelectedPosition();
+    method public boolean isGroupExpanded(int);
+    method public void setAdapter(android.widget.ExpandableListAdapter);
+    method public void setChildDivider(android.graphics.drawable.Drawable);
+    method public void setChildIndicator(android.graphics.drawable.Drawable);
+    method public void setChildIndicatorBounds(int, int);
+    method public void setChildIndicatorBoundsRelative(int, int);
+    method public void setGroupIndicator(android.graphics.drawable.Drawable);
+    method public void setIndicatorBounds(int, int);
+    method public void setIndicatorBoundsRelative(int, int);
+    method public void setOnChildClickListener(android.widget.ExpandableListView.OnChildClickListener);
+    method public void setOnGroupClickListener(android.widget.ExpandableListView.OnGroupClickListener);
+    method public void setOnGroupCollapseListener(android.widget.ExpandableListView.OnGroupCollapseListener);
+    method public void setOnGroupExpandListener(android.widget.ExpandableListView.OnGroupExpandListener);
+    method public boolean setSelectedChild(int, int, boolean);
+    method public void setSelectedGroup(int);
+    field public static final int CHILD_INDICATOR_INHERIT = -1; // 0xffffffff
+    field public static final int PACKED_POSITION_TYPE_CHILD = 1; // 0x1
+    field public static final int PACKED_POSITION_TYPE_GROUP = 0; // 0x0
+    field public static final int PACKED_POSITION_TYPE_NULL = 2; // 0x2
+    field public static final long PACKED_POSITION_VALUE_NULL = 4294967295L; // 0xffffffffL
+  }
+
+  public static class ExpandableListView.ExpandableListContextMenuInfo implements android.view.ContextMenu.ContextMenuInfo {
+    ctor public ExpandableListView.ExpandableListContextMenuInfo(android.view.View, long, long);
+    field public long id;
+    field public long packedPosition;
+    field public android.view.View targetView;
+  }
+
+  public static interface ExpandableListView.OnChildClickListener {
+    method public boolean onChildClick(android.widget.ExpandableListView, android.view.View, int, int, long);
+  }
+
+  public static interface ExpandableListView.OnGroupClickListener {
+    method public boolean onGroupClick(android.widget.ExpandableListView, android.view.View, int, long);
+  }
+
+  public static interface ExpandableListView.OnGroupCollapseListener {
+    method public void onGroupCollapse(int);
+  }
+
+  public static interface ExpandableListView.OnGroupExpandListener {
+    method public void onGroupExpand(int);
+  }
+
+  public abstract class Filter {
+    ctor public Filter();
+    method public CharSequence convertResultToString(Object);
+    method public final void filter(CharSequence);
+    method public final void filter(CharSequence, android.widget.Filter.FilterListener);
+    method protected abstract android.widget.Filter.FilterResults performFiltering(CharSequence);
+    method protected abstract void publishResults(CharSequence, android.widget.Filter.FilterResults);
+  }
+
+  public static interface Filter.FilterListener {
+    method public void onFilterComplete(int);
+  }
+
+  protected static class Filter.FilterResults {
+    ctor public Filter.FilterResults();
+    field public int count;
+    field public Object values;
+  }
+
+  public interface FilterQueryProvider {
+    method public android.database.Cursor runQuery(CharSequence);
+  }
+
+  public interface Filterable {
+    method public android.widget.Filter getFilter();
+  }
+
+  @android.widget.RemoteViews.RemoteView public class FrameLayout extends android.view.ViewGroup {
+    ctor public FrameLayout(@NonNull android.content.Context);
+    ctor public FrameLayout(@NonNull android.content.Context, @Nullable android.util.AttributeSet);
+    ctor public FrameLayout(@NonNull android.content.Context, @Nullable android.util.AttributeSet, @AttrRes int);
+    ctor public FrameLayout(@NonNull android.content.Context, @Nullable android.util.AttributeSet, @AttrRes int, @StyleRes int);
+    method protected android.widget.FrameLayout.LayoutParams generateDefaultLayoutParams();
+    method public android.widget.FrameLayout.LayoutParams generateLayoutParams(android.util.AttributeSet);
+    method @Deprecated public boolean getConsiderGoneChildrenWhenMeasuring();
+    method public boolean getMeasureAllChildren();
+    method public void setMeasureAllChildren(boolean);
+  }
+
+  public static class FrameLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
+    ctor public FrameLayout.LayoutParams(@NonNull android.content.Context, @Nullable android.util.AttributeSet);
+    ctor public FrameLayout.LayoutParams(int, int);
+    ctor public FrameLayout.LayoutParams(int, int, int);
+    ctor public FrameLayout.LayoutParams(@NonNull android.view.ViewGroup.LayoutParams);
+    ctor public FrameLayout.LayoutParams(@NonNull android.view.ViewGroup.MarginLayoutParams);
+    ctor public FrameLayout.LayoutParams(@NonNull android.widget.FrameLayout.LayoutParams);
+    field public static final int UNSPECIFIED_GRAVITY = -1; // 0xffffffff
+    field public int gravity;
+  }
+
+  @Deprecated public class Gallery extends android.widget.AbsSpinner implements android.view.GestureDetector.OnGestureListener {
+    ctor @Deprecated public Gallery(android.content.Context);
+    ctor @Deprecated public Gallery(android.content.Context, android.util.AttributeSet);
+    ctor @Deprecated public Gallery(android.content.Context, android.util.AttributeSet, int);
+    ctor @Deprecated public Gallery(android.content.Context, android.util.AttributeSet, int, int);
+    method @Deprecated public boolean onDown(android.view.MotionEvent);
+    method @Deprecated public boolean onFling(android.view.MotionEvent, android.view.MotionEvent, float, float);
+    method @Deprecated public void onLongPress(@NonNull android.view.MotionEvent);
+    method @Deprecated public boolean onScroll(android.view.MotionEvent, android.view.MotionEvent, float, float);
+    method @Deprecated public void onShowPress(android.view.MotionEvent);
+    method @Deprecated public boolean onSingleTapUp(android.view.MotionEvent);
+    method @Deprecated public void setAnimationDuration(int);
+    method @Deprecated public void setCallbackDuringFling(boolean);
+    method @Deprecated public void setGravity(int);
+    method @Deprecated public void setSpacing(int);
+    method @Deprecated public void setUnselectedAlpha(float);
+  }
+
+  @Deprecated public static class Gallery.LayoutParams extends android.view.ViewGroup.LayoutParams {
+    ctor @Deprecated public Gallery.LayoutParams(android.content.Context, android.util.AttributeSet);
+    ctor @Deprecated public Gallery.LayoutParams(int, int);
+    ctor @Deprecated public Gallery.LayoutParams(android.view.ViewGroup.LayoutParams);
+  }
+
+  @android.widget.RemoteViews.RemoteView public class GridLayout extends android.view.ViewGroup {
+    ctor public GridLayout(android.content.Context);
+    ctor public GridLayout(android.content.Context, android.util.AttributeSet);
+    ctor public GridLayout(android.content.Context, android.util.AttributeSet, int);
+    ctor public GridLayout(android.content.Context, android.util.AttributeSet, int, int);
+    method protected android.widget.GridLayout.LayoutParams generateDefaultLayoutParams();
+    method public android.widget.GridLayout.LayoutParams generateLayoutParams(android.util.AttributeSet);
+    method protected android.widget.GridLayout.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams);
+    method public int getAlignmentMode();
+    method public int getColumnCount();
+    method public int getOrientation();
+    method public int getRowCount();
+    method public boolean getUseDefaultMargins();
+    method public boolean isColumnOrderPreserved();
+    method public boolean isRowOrderPreserved();
+    method public void setAlignmentMode(int);
+    method public void setColumnCount(int);
+    method public void setColumnOrderPreserved(boolean);
+    method public void setOrientation(int);
+    method public void setRowCount(int);
+    method public void setRowOrderPreserved(boolean);
+    method public void setUseDefaultMargins(boolean);
+    method public static android.widget.GridLayout.Spec spec(int, int, android.widget.GridLayout.Alignment, float);
+    method public static android.widget.GridLayout.Spec spec(int, android.widget.GridLayout.Alignment, float);
+    method public static android.widget.GridLayout.Spec spec(int, int, float);
+    method public static android.widget.GridLayout.Spec spec(int, float);
+    method public static android.widget.GridLayout.Spec spec(int, int, android.widget.GridLayout.Alignment);
+    method public static android.widget.GridLayout.Spec spec(int, android.widget.GridLayout.Alignment);
+    method public static android.widget.GridLayout.Spec spec(int, int);
+    method public static android.widget.GridLayout.Spec spec(int);
+    field public static final int ALIGN_BOUNDS = 0; // 0x0
+    field public static final int ALIGN_MARGINS = 1; // 0x1
+    field public static final android.widget.GridLayout.Alignment BASELINE;
+    field public static final android.widget.GridLayout.Alignment BOTTOM;
+    field public static final android.widget.GridLayout.Alignment CENTER;
+    field public static final android.widget.GridLayout.Alignment END;
+    field public static final android.widget.GridLayout.Alignment FILL;
+    field public static final int HORIZONTAL = 0; // 0x0
+    field public static final android.widget.GridLayout.Alignment LEFT;
+    field public static final android.widget.GridLayout.Alignment RIGHT;
+    field public static final android.widget.GridLayout.Alignment START;
+    field public static final android.widget.GridLayout.Alignment TOP;
+    field public static final int UNDEFINED = -2147483648; // 0x80000000
+    field public static final int VERTICAL = 1; // 0x1
+  }
+
+  public abstract static class GridLayout.Alignment {
+  }
+
+  public static class GridLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
+    ctor public GridLayout.LayoutParams(android.widget.GridLayout.Spec, android.widget.GridLayout.Spec);
+    ctor public GridLayout.LayoutParams();
+    ctor public GridLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
+    ctor public GridLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
+    ctor public GridLayout.LayoutParams(android.widget.GridLayout.LayoutParams);
+    ctor public GridLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
+    method public void setGravity(int);
+    field public android.widget.GridLayout.Spec columnSpec;
+    field public android.widget.GridLayout.Spec rowSpec;
+  }
+
+  public static class GridLayout.Spec {
+  }
+
+  @android.widget.RemoteViews.RemoteView public class GridView extends android.widget.AbsListView {
+    ctor public GridView(android.content.Context);
+    ctor public GridView(android.content.Context, android.util.AttributeSet);
+    ctor public GridView(android.content.Context, android.util.AttributeSet, int);
+    ctor public GridView(android.content.Context, android.util.AttributeSet, int, int);
+    method public android.widget.ListAdapter getAdapter();
+    method public int getColumnWidth();
+    method public int getGravity();
+    method public int getHorizontalSpacing();
+    method public int getNumColumns();
+    method public int getRequestedColumnWidth();
+    method public int getRequestedHorizontalSpacing();
+    method public int getStretchMode();
+    method public int getVerticalSpacing();
+    method public void setColumnWidth(int);
+    method public void setGravity(int);
+    method public void setHorizontalSpacing(int);
+    method public void setNumColumns(int);
+    method public void setSelection(int);
+    method public void setStretchMode(int);
+    method public void setVerticalSpacing(int);
+    method public void smoothScrollByOffset(int);
+    field public static final int AUTO_FIT = -1; // 0xffffffff
+    field public static final int NO_STRETCH = 0; // 0x0
+    field public static final int STRETCH_COLUMN_WIDTH = 2; // 0x2
+    field public static final int STRETCH_SPACING = 1; // 0x1
+    field public static final int STRETCH_SPACING_UNIFORM = 3; // 0x3
+  }
+
+  public class HeaderViewListAdapter implements android.widget.Filterable android.widget.WrapperListAdapter {
+    ctor public HeaderViewListAdapter(java.util.ArrayList<android.widget.ListView.FixedViewInfo>, java.util.ArrayList<android.widget.ListView.FixedViewInfo>, android.widget.ListAdapter);
+    method public boolean areAllItemsEnabled();
+    method public int getCount();
+    method public android.widget.Filter getFilter();
+    method public int getFootersCount();
+    method public int getHeadersCount();
+    method public Object getItem(int);
+    method public long getItemId(int);
+    method public int getItemViewType(int);
+    method public android.view.View getView(int, android.view.View, android.view.ViewGroup);
+    method public int getViewTypeCount();
+    method public android.widget.ListAdapter getWrappedAdapter();
+    method public boolean hasStableIds();
+    method public boolean isEmpty();
+    method public boolean isEnabled(int);
+    method public void registerDataSetObserver(android.database.DataSetObserver);
+    method public boolean removeFooter(android.view.View);
+    method public boolean removeHeader(android.view.View);
+    method public void unregisterDataSetObserver(android.database.DataSetObserver);
+  }
+
+  public interface HeterogeneousExpandableList {
+    method public int getChildType(int, int);
+    method public int getChildTypeCount();
+    method public int getGroupType(int);
+    method public int getGroupTypeCount();
+  }
+
+  public class HorizontalScrollView extends android.widget.FrameLayout {
+    ctor public HorizontalScrollView(android.content.Context);
+    ctor public HorizontalScrollView(android.content.Context, android.util.AttributeSet);
+    ctor public HorizontalScrollView(android.content.Context, android.util.AttributeSet, int);
+    ctor public HorizontalScrollView(android.content.Context, android.util.AttributeSet, int, int);
+    method public boolean arrowScroll(int);
+    method protected int computeScrollDeltaToGetChildRectOnScreen(android.graphics.Rect);
+    method public boolean executeKeyEvent(android.view.KeyEvent);
+    method public void fling(int);
+    method public boolean fullScroll(int);
+    method @ColorInt public int getLeftEdgeEffectColor();
+    method public int getMaxScrollAmount();
+    method @ColorInt public int getRightEdgeEffectColor();
+    method public boolean isFillViewport();
+    method public boolean isSmoothScrollingEnabled();
+    method public boolean pageScroll(int);
+    method public void setEdgeEffectColor(@ColorInt int);
+    method public void setFillViewport(boolean);
+    method public void setLeftEdgeEffectColor(@ColorInt int);
+    method public void setRightEdgeEffectColor(@ColorInt int);
+    method public void setSmoothScrollingEnabled(boolean);
+    method public final void smoothScrollBy(int, int);
+    method public final void smoothScrollTo(int, int);
+  }
+
+  @android.widget.RemoteViews.RemoteView public class ImageButton extends android.widget.ImageView {
+    ctor public ImageButton(android.content.Context);
+    ctor public ImageButton(android.content.Context, android.util.AttributeSet);
+    ctor public ImageButton(android.content.Context, android.util.AttributeSet, int);
+    ctor public ImageButton(android.content.Context, android.util.AttributeSet, int, int);
+  }
+
+  public class ImageSwitcher extends android.widget.ViewSwitcher {
+    ctor public ImageSwitcher(android.content.Context);
+    ctor public ImageSwitcher(android.content.Context, android.util.AttributeSet);
+    method public void setImageDrawable(android.graphics.drawable.Drawable);
+    method public void setImageResource(@DrawableRes int);
+    method public void setImageURI(android.net.Uri);
+  }
+
+  @android.widget.RemoteViews.RemoteView public class ImageView extends android.view.View {
+    ctor public ImageView(android.content.Context);
+    ctor public ImageView(android.content.Context, @Nullable android.util.AttributeSet);
+    ctor public ImageView(android.content.Context, @Nullable android.util.AttributeSet, int);
+    ctor public ImageView(android.content.Context, @Nullable android.util.AttributeSet, int, int);
+    method public void animateTransform(@Nullable android.graphics.Matrix);
+    method public final void clearColorFilter();
+    method public boolean getAdjustViewBounds();
+    method public boolean getBaselineAlignBottom();
+    method public android.graphics.ColorFilter getColorFilter();
+    method public boolean getCropToPadding();
+    method public android.graphics.drawable.Drawable getDrawable();
+    method public int getImageAlpha();
+    method public android.graphics.Matrix getImageMatrix();
+    method @Nullable public android.graphics.BlendMode getImageTintBlendMode();
+    method @Nullable public android.content.res.ColorStateList getImageTintList();
+    method @Nullable public android.graphics.PorterDuff.Mode getImageTintMode();
+    method public int getMaxHeight();
+    method public int getMaxWidth();
+    method public android.widget.ImageView.ScaleType getScaleType();
+    method public int[] onCreateDrawableState(int);
+    method public void setAdjustViewBounds(boolean);
+    method @Deprecated public void setAlpha(int);
+    method public void setBaseline(int);
+    method public void setBaselineAlignBottom(boolean);
+    method public final void setColorFilter(int, android.graphics.PorterDuff.Mode);
+    method public final void setColorFilter(int);
+    method public void setColorFilter(android.graphics.ColorFilter);
+    method public void setCropToPadding(boolean);
+    method protected boolean setFrame(int, int, int, int);
+    method public void setImageAlpha(int);
+    method public void setImageBitmap(android.graphics.Bitmap);
+    method public void setImageDrawable(@Nullable android.graphics.drawable.Drawable);
+    method public void setImageIcon(@Nullable android.graphics.drawable.Icon);
+    method public void setImageLevel(int);
+    method public void setImageMatrix(android.graphics.Matrix);
+    method public void setImageResource(@DrawableRes int);
+    method public void setImageState(int[], boolean);
+    method public void setImageTintBlendMode(@Nullable android.graphics.BlendMode);
+    method public void setImageTintList(@Nullable android.content.res.ColorStateList);
+    method public void setImageTintMode(@Nullable android.graphics.PorterDuff.Mode);
+    method public void setImageURI(@Nullable android.net.Uri);
+    method public void setMaxHeight(int);
+    method public void setMaxWidth(int);
+    method public void setScaleType(android.widget.ImageView.ScaleType);
+  }
+
+  public enum ImageView.ScaleType {
+    enum_constant public static final android.widget.ImageView.ScaleType CENTER;
+    enum_constant public static final android.widget.ImageView.ScaleType CENTER_CROP;
+    enum_constant public static final android.widget.ImageView.ScaleType CENTER_INSIDE;
+    enum_constant public static final android.widget.ImageView.ScaleType FIT_CENTER;
+    enum_constant public static final android.widget.ImageView.ScaleType FIT_END;
+    enum_constant public static final android.widget.ImageView.ScaleType FIT_START;
+    enum_constant public static final android.widget.ImageView.ScaleType FIT_XY;
+    enum_constant public static final android.widget.ImageView.ScaleType MATRIX;
+  }
+
+  @android.widget.RemoteViews.RemoteView public class LinearLayout extends android.view.ViewGroup {
+    ctor public LinearLayout(android.content.Context);
+    ctor public LinearLayout(android.content.Context, @Nullable android.util.AttributeSet);
+    ctor public LinearLayout(android.content.Context, @Nullable android.util.AttributeSet, int);
+    ctor public LinearLayout(android.content.Context, android.util.AttributeSet, int, int);
+    method protected android.widget.LinearLayout.LayoutParams generateDefaultLayoutParams();
+    method public android.widget.LinearLayout.LayoutParams generateLayoutParams(android.util.AttributeSet);
+    method protected android.widget.LinearLayout.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams);
+    method public int getBaselineAlignedChildIndex();
+    method public android.graphics.drawable.Drawable getDividerDrawable();
+    method public int getDividerPadding();
+    method public int getGravity();
+    method public int getOrientation();
+    method public int getShowDividers();
+    method public float getWeightSum();
+    method public boolean isBaselineAligned();
+    method public boolean isMeasureWithLargestChildEnabled();
+    method public void setBaselineAligned(boolean);
+    method public void setBaselineAlignedChildIndex(int);
+    method public void setDividerDrawable(android.graphics.drawable.Drawable);
+    method public void setDividerPadding(int);
+    method public void setGravity(int);
+    method public void setHorizontalGravity(int);
+    method public void setMeasureWithLargestChildEnabled(boolean);
+    method public void setOrientation(int);
+    method public void setShowDividers(int);
+    method public void setVerticalGravity(int);
+    method public void setWeightSum(float);
+    field public static final int HORIZONTAL = 0; // 0x0
+    field public static final int SHOW_DIVIDER_BEGINNING = 1; // 0x1
+    field public static final int SHOW_DIVIDER_END = 4; // 0x4
+    field public static final int SHOW_DIVIDER_MIDDLE = 2; // 0x2
+    field public static final int SHOW_DIVIDER_NONE = 0; // 0x0
+    field public static final int VERTICAL = 1; // 0x1
+  }
+
+  public static class LinearLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
+    ctor public LinearLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
+    ctor public LinearLayout.LayoutParams(int, int);
+    ctor public LinearLayout.LayoutParams(int, int, float);
+    ctor public LinearLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
+    ctor public LinearLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
+    ctor public LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams);
+    method public String debug(String);
+    field public int gravity;
+    field public float weight;
+  }
+
+  public interface ListAdapter extends android.widget.Adapter {
+    method public boolean areAllItemsEnabled();
+    method public boolean isEnabled(int);
+  }
+
+  public class ListPopupWindow {
+    ctor public ListPopupWindow(@NonNull android.content.Context);
+    ctor public ListPopupWindow(@NonNull android.content.Context, @Nullable android.util.AttributeSet);
+    ctor public ListPopupWindow(@NonNull android.content.Context, @Nullable android.util.AttributeSet, @AttrRes int);
+    ctor public ListPopupWindow(@NonNull android.content.Context, @Nullable android.util.AttributeSet, @AttrRes int, @StyleRes int);
+    method public void clearListSelection();
+    method public android.view.View.OnTouchListener createDragToOpenListener(android.view.View);
+    method public void dismiss();
+    method @Nullable public android.view.View getAnchorView();
+    method @StyleRes public int getAnimationStyle();
+    method @Nullable public android.graphics.drawable.Drawable getBackground();
+    method @Nullable public android.graphics.Rect getEpicenterBounds();
+    method public int getHeight();
+    method public int getHorizontalOffset();
+    method public int getInputMethodMode();
+    method @Nullable public android.widget.ListView getListView();
+    method public int getPromptPosition();
+    method @Nullable public Object getSelectedItem();
+    method public long getSelectedItemId();
+    method public int getSelectedItemPosition();
+    method @Nullable public android.view.View getSelectedView();
+    method public int getSoftInputMode();
+    method public int getVerticalOffset();
+    method public int getWidth();
+    method public boolean isInputMethodNotNeeded();
+    method public boolean isModal();
+    method public boolean isShowing();
+    method public boolean onKeyDown(int, @NonNull android.view.KeyEvent);
+    method public boolean onKeyPreIme(int, @NonNull android.view.KeyEvent);
+    method public boolean onKeyUp(int, @NonNull android.view.KeyEvent);
+    method public boolean performItemClick(int);
+    method public void postShow();
+    method public void setAdapter(@Nullable android.widget.ListAdapter);
+    method public void setAnchorView(@Nullable android.view.View);
+    method public void setAnimationStyle(@StyleRes int);
+    method public void setBackgroundDrawable(@Nullable android.graphics.drawable.Drawable);
+    method public void setContentWidth(int);
+    method public void setDropDownGravity(int);
+    method public void setEpicenterBounds(@Nullable android.graphics.Rect);
+    method public void setHeight(int);
+    method public void setHorizontalOffset(int);
+    method public void setInputMethodMode(int);
+    method public void setListSelector(android.graphics.drawable.Drawable);
+    method public void setModal(boolean);
+    method public void setOnDismissListener(@Nullable android.widget.PopupWindow.OnDismissListener);
+    method public void setOnItemClickListener(@Nullable android.widget.AdapterView.OnItemClickListener);
+    method public void setOnItemSelectedListener(@Nullable android.widget.AdapterView.OnItemSelectedListener);
+    method public void setPromptPosition(int);
+    method public void setPromptView(@Nullable android.view.View);
+    method public void setSelection(int);
+    method public void setSoftInputMode(int);
+    method public void setVerticalOffset(int);
+    method public void setWidth(int);
+    method public void setWindowLayoutType(int);
+    method public void show();
+    field public static final int INPUT_METHOD_FROM_FOCUSABLE = 0; // 0x0
+    field public static final int INPUT_METHOD_NEEDED = 1; // 0x1
+    field public static final int INPUT_METHOD_NOT_NEEDED = 2; // 0x2
+    field public static final int MATCH_PARENT = -1; // 0xffffffff
+    field public static final int POSITION_PROMPT_ABOVE = 0; // 0x0
+    field public static final int POSITION_PROMPT_BELOW = 1; // 0x1
+    field public static final int WRAP_CONTENT = -2; // 0xfffffffe
+  }
+
+  @android.widget.RemoteViews.RemoteView public class ListView extends android.widget.AbsListView {
+    ctor public ListView(android.content.Context);
+    ctor public ListView(android.content.Context, android.util.AttributeSet);
+    ctor public ListView(android.content.Context, android.util.AttributeSet, int);
+    ctor public ListView(android.content.Context, android.util.AttributeSet, int, int);
+    method public void addFooterView(android.view.View, Object, boolean);
+    method public void addFooterView(android.view.View);
+    method public void addHeaderView(android.view.View, Object, boolean);
+    method public void addHeaderView(android.view.View);
+    method public boolean areFooterDividersEnabled();
+    method public boolean areHeaderDividersEnabled();
+    method public android.widget.ListAdapter getAdapter();
+    method @Deprecated public long[] getCheckItemIds();
+    method @Nullable public android.graphics.drawable.Drawable getDivider();
+    method public int getDividerHeight();
+    method public int getFooterViewsCount();
+    method public int getHeaderViewsCount();
+    method public boolean getItemsCanFocus();
+    method public int getMaxScrollAmount();
+    method public android.graphics.drawable.Drawable getOverscrollFooter();
+    method public android.graphics.drawable.Drawable getOverscrollHeader();
+    method public boolean removeFooterView(android.view.View);
+    method public boolean removeHeaderView(android.view.View);
+    method public void setDivider(@Nullable android.graphics.drawable.Drawable);
+    method public void setDividerHeight(int);
+    method public void setFooterDividersEnabled(boolean);
+    method public void setHeaderDividersEnabled(boolean);
+    method public void setItemsCanFocus(boolean);
+    method public void setOverscrollFooter(android.graphics.drawable.Drawable);
+    method public void setOverscrollHeader(android.graphics.drawable.Drawable);
+    method public void setSelection(int);
+    method public void setSelectionAfterHeaderView();
+    method public void smoothScrollByOffset(int);
+  }
+
+  public class ListView.FixedViewInfo {
+    ctor public ListView.FixedViewInfo();
+    field public Object data;
+    field public boolean isSelectable;
+    field public android.view.View view;
+  }
+
+  @UiThread public final class Magnifier {
+    ctor @Deprecated public Magnifier(@NonNull android.view.View);
+    method public void dismiss();
+    method @Px public float getCornerRadius();
+    method @Px public int getDefaultHorizontalSourceToMagnifierOffset();
+    method @Px public int getDefaultVerticalSourceToMagnifierOffset();
+    method @Px public float getElevation();
+    method @Px public int getHeight();
+    method @Nullable public android.graphics.drawable.Drawable getOverlay();
+    method @Nullable public android.graphics.Point getPosition();
+    method @Px public int getSourceHeight();
+    method @Nullable public android.graphics.Point getSourcePosition();
+    method @Px public int getSourceWidth();
+    method @Px public int getWidth();
+    method public float getZoom();
+    method public boolean isClippingEnabled();
+    method public void setZoom(@FloatRange(from=0.0f) float);
+    method public void show(@FloatRange(from=0) float, @FloatRange(from=0) float);
+    method public void show(@FloatRange(from=0) float, @FloatRange(from=0) float, float, float);
+    method public void update();
+    field public static final int SOURCE_BOUND_MAX_IN_SURFACE = 0; // 0x0
+    field public static final int SOURCE_BOUND_MAX_VISIBLE = 1; // 0x1
+  }
+
+  public static final class Magnifier.Builder {
+    ctor public Magnifier.Builder(@NonNull android.view.View);
+    method @NonNull public android.widget.Magnifier build();
+    method @NonNull public android.widget.Magnifier.Builder setClippingEnabled(boolean);
+    method @NonNull public android.widget.Magnifier.Builder setCornerRadius(@FloatRange(from=0) @Px float);
+    method @NonNull public android.widget.Magnifier.Builder setDefaultSourceToMagnifierOffset(@Px int, @Px int);
+    method @NonNull public android.widget.Magnifier.Builder setElevation(@FloatRange(from=0) @Px float);
+    method @NonNull public android.widget.Magnifier.Builder setInitialZoom(@FloatRange(from=0.0f) float);
+    method @NonNull public android.widget.Magnifier.Builder setOverlay(@Nullable android.graphics.drawable.Drawable);
+    method @NonNull public android.widget.Magnifier.Builder setSize(@IntRange(from=0) @Px int, @IntRange(from=0) @Px int);
+    method @NonNull public android.widget.Magnifier.Builder setSourceBounds(int, int, int, int);
+  }
+
+  public class MediaController extends android.widget.FrameLayout {
+    ctor public MediaController(android.content.Context, android.util.AttributeSet);
+    ctor public MediaController(android.content.Context, boolean);
+    ctor public MediaController(android.content.Context);
+    method public void hide();
+    method public boolean isShowing();
+    method public void onFinishInflate();
+    method public void setAnchorView(android.view.View);
+    method public void setMediaPlayer(android.widget.MediaController.MediaPlayerControl);
+    method public void setPrevNextListeners(android.view.View.OnClickListener, android.view.View.OnClickListener);
+    method public void show();
+    method public void show(int);
+  }
+
+  public static interface MediaController.MediaPlayerControl {
+    method public boolean canPause();
+    method public boolean canSeekBackward();
+    method public boolean canSeekForward();
+    method public int getAudioSessionId();
+    method public int getBufferPercentage();
+    method public int getCurrentPosition();
+    method public int getDuration();
+    method public boolean isPlaying();
+    method public void pause();
+    method public void seekTo(int);
+    method public void start();
+  }
+
+  public class MultiAutoCompleteTextView extends android.widget.AutoCompleteTextView {
+    ctor public MultiAutoCompleteTextView(android.content.Context);
+    ctor public MultiAutoCompleteTextView(android.content.Context, android.util.AttributeSet);
+    ctor public MultiAutoCompleteTextView(android.content.Context, android.util.AttributeSet, int);
+    ctor public MultiAutoCompleteTextView(android.content.Context, android.util.AttributeSet, int, int);
+    method protected void performFiltering(CharSequence, int, int, int);
+    method public void setTokenizer(android.widget.MultiAutoCompleteTextView.Tokenizer);
+  }
+
+  public static class MultiAutoCompleteTextView.CommaTokenizer implements android.widget.MultiAutoCompleteTextView.Tokenizer {
+    ctor public MultiAutoCompleteTextView.CommaTokenizer();
+    method public int findTokenEnd(CharSequence, int);
+    method public int findTokenStart(CharSequence, int);
+    method public CharSequence terminateToken(CharSequence);
+  }
+
+  public static interface MultiAutoCompleteTextView.Tokenizer {
+    method public int findTokenEnd(CharSequence, int);
+    method public int findTokenStart(CharSequence, int);
+    method public CharSequence terminateToken(CharSequence);
+  }
+
+  public class NumberPicker extends android.widget.LinearLayout {
+    ctor public NumberPicker(android.content.Context);
+    ctor public NumberPicker(android.content.Context, android.util.AttributeSet);
+    ctor public NumberPicker(android.content.Context, android.util.AttributeSet, int);
+    ctor public NumberPicker(android.content.Context, android.util.AttributeSet, int, int);
+    method public String[] getDisplayedValues();
+    method public int getMaxValue();
+    method public int getMinValue();
+    method @Px public int getSelectionDividerHeight();
+    method @ColorInt public int getTextColor();
+    method @FloatRange(from=0.0, fromInclusive=false) public float getTextSize();
+    method public int getValue();
+    method public boolean getWrapSelectorWheel();
+    method public void setDisplayedValues(String[]);
+    method public void setFormatter(android.widget.NumberPicker.Formatter);
+    method public void setMaxValue(int);
+    method public void setMinValue(int);
+    method public void setOnLongPressUpdateInterval(long);
+    method public void setOnScrollListener(android.widget.NumberPicker.OnScrollListener);
+    method public void setOnValueChangedListener(android.widget.NumberPicker.OnValueChangeListener);
+    method public void setSelectionDividerHeight(@IntRange(from=0) @Px int);
+    method public void setTextColor(@ColorInt int);
+    method public void setTextSize(@FloatRange(from=0.0, fromInclusive=false) float);
+    method public void setValue(int);
+    method public void setWrapSelectorWheel(boolean);
+  }
+
+  public static interface NumberPicker.Formatter {
+    method public String format(int);
+  }
+
+  public static interface NumberPicker.OnScrollListener {
+    method public void onScrollStateChange(android.widget.NumberPicker, int);
+    field public static final int SCROLL_STATE_FLING = 2; // 0x2
+    field public static final int SCROLL_STATE_IDLE = 0; // 0x0
+    field public static final int SCROLL_STATE_TOUCH_SCROLL = 1; // 0x1
+  }
+
+  public static interface NumberPicker.OnValueChangeListener {
+    method public void onValueChange(android.widget.NumberPicker, int, int);
+  }
+
+  public class OverScroller {
+    ctor public OverScroller(android.content.Context);
+    ctor public OverScroller(android.content.Context, android.view.animation.Interpolator);
+    ctor @Deprecated public OverScroller(android.content.Context, android.view.animation.Interpolator, float, float);
+    ctor @Deprecated public OverScroller(android.content.Context, android.view.animation.Interpolator, float, float, boolean);
+    method public void abortAnimation();
+    method public boolean computeScrollOffset();
+    method public void fling(int, int, int, int, int, int, int, int);
+    method public void fling(int, int, int, int, int, int, int, int, int, int);
+    method public final void forceFinished(boolean);
+    method public float getCurrVelocity();
+    method public final int getCurrX();
+    method public final int getCurrY();
+    method public final int getFinalX();
+    method public final int getFinalY();
+    method public final int getStartX();
+    method public final int getStartY();
+    method public final boolean isFinished();
+    method public boolean isOverScrolled();
+    method public void notifyHorizontalEdgeReached(int, int, int);
+    method public void notifyVerticalEdgeReached(int, int, int);
+    method public final void setFriction(float);
+    method public boolean springBack(int, int, int, int, int, int);
+    method public void startScroll(int, int, int, int);
+    method public void startScroll(int, int, int, int, int);
+  }
+
+  public class PopupMenu {
+    ctor public PopupMenu(android.content.Context, android.view.View);
+    ctor public PopupMenu(android.content.Context, android.view.View, int);
+    ctor public PopupMenu(android.content.Context, android.view.View, int, int, int);
+    method public void dismiss();
+    method public android.view.View.OnTouchListener getDragToOpenListener();
+    method public int getGravity();
+    method public android.view.Menu getMenu();
+    method public android.view.MenuInflater getMenuInflater();
+    method public void inflate(@MenuRes int);
+    method public void setForceShowIcon(boolean);
+    method public void setGravity(int);
+    method public void setOnDismissListener(android.widget.PopupMenu.OnDismissListener);
+    method public void setOnMenuItemClickListener(android.widget.PopupMenu.OnMenuItemClickListener);
+    method public void show();
+  }
+
+  public static interface PopupMenu.OnDismissListener {
+    method public void onDismiss(android.widget.PopupMenu);
+  }
+
+  public static interface PopupMenu.OnMenuItemClickListener {
+    method public boolean onMenuItemClick(android.view.MenuItem);
+  }
+
+  public class PopupWindow {
+    ctor public PopupWindow(android.content.Context);
+    ctor public PopupWindow(android.content.Context, android.util.AttributeSet);
+    ctor public PopupWindow(android.content.Context, android.util.AttributeSet, int);
+    ctor public PopupWindow(android.content.Context, android.util.AttributeSet, int, int);
+    ctor public PopupWindow();
+    ctor public PopupWindow(android.view.View);
+    ctor public PopupWindow(int, int);
+    ctor public PopupWindow(android.view.View, int, int);
+    ctor public PopupWindow(android.view.View, int, int, boolean);
+    method public void dismiss();
+    method public int getAnimationStyle();
+    method public android.graphics.drawable.Drawable getBackground();
+    method public android.view.View getContentView();
+    method public float getElevation();
+    method @Nullable public android.transition.Transition getEnterTransition();
+    method @Nullable public android.graphics.Rect getEpicenterBounds();
+    method @Nullable public android.transition.Transition getExitTransition();
+    method public int getHeight();
+    method public int getInputMethodMode();
+    method public int getMaxAvailableHeight(@NonNull android.view.View);
+    method public int getMaxAvailableHeight(@NonNull android.view.View, int);
+    method public int getMaxAvailableHeight(@NonNull android.view.View, int, boolean);
+    method public boolean getOverlapAnchor();
+    method public int getSoftInputMode();
+    method public int getWidth();
+    method public int getWindowLayoutType();
+    method public boolean isAboveAnchor();
+    method public boolean isAttachedInDecor();
+    method public boolean isClippedToScreen();
+    method public boolean isClippingEnabled();
+    method public boolean isFocusable();
+    method public boolean isLaidOutInScreen();
+    method public boolean isOutsideTouchable();
+    method public boolean isShowing();
+    method public boolean isSplitTouchEnabled();
+    method public boolean isTouchModal();
+    method public boolean isTouchable();
+    method public void setAnimationStyle(int);
+    method public void setAttachedInDecor(boolean);
+    method public void setBackgroundDrawable(android.graphics.drawable.Drawable);
+    method public void setClippingEnabled(boolean);
+    method public void setContentView(android.view.View);
+    method public void setElevation(float);
+    method public void setEnterTransition(@Nullable android.transition.Transition);
+    method public void setEpicenterBounds(@Nullable android.graphics.Rect);
+    method public void setExitTransition(@Nullable android.transition.Transition);
+    method public void setFocusable(boolean);
+    method public void setHeight(int);
+    method public void setIgnoreCheekPress();
+    method public void setInputMethodMode(int);
+    method public void setIsClippedToScreen(boolean);
+    method public void setIsLaidOutInScreen(boolean);
+    method public void setOnDismissListener(android.widget.PopupWindow.OnDismissListener);
+    method public void setOutsideTouchable(boolean);
+    method public void setOverlapAnchor(boolean);
+    method public void setSoftInputMode(int);
+    method public void setSplitTouchEnabled(boolean);
+    method public void setTouchInterceptor(android.view.View.OnTouchListener);
+    method public void setTouchModal(boolean);
+    method public void setTouchable(boolean);
+    method public void setWidth(int);
+    method @Deprecated public void setWindowLayoutMode(int, int);
+    method public void setWindowLayoutType(int);
+    method public void showAsDropDown(android.view.View);
+    method public void showAsDropDown(android.view.View, int, int);
+    method public void showAsDropDown(android.view.View, int, int, int);
+    method public void showAtLocation(android.view.View, int, int, int);
+    method public void update();
+    method public void update(int, int);
+    method public void update(int, int, int, int);
+    method public void update(int, int, int, int, boolean);
+    method public void update(android.view.View, int, int);
+    method public void update(android.view.View, int, int, int, int);
+    field public static final int INPUT_METHOD_FROM_FOCUSABLE = 0; // 0x0
+    field public static final int INPUT_METHOD_NEEDED = 1; // 0x1
+    field public static final int INPUT_METHOD_NOT_NEEDED = 2; // 0x2
+  }
+
+  public static interface PopupWindow.OnDismissListener {
+    method public void onDismiss();
+  }
+
+  @android.widget.RemoteViews.RemoteView public class ProgressBar extends android.view.View {
+    ctor public ProgressBar(android.content.Context);
+    ctor public ProgressBar(android.content.Context, android.util.AttributeSet);
+    ctor public ProgressBar(android.content.Context, android.util.AttributeSet, int);
+    ctor public ProgressBar(android.content.Context, android.util.AttributeSet, int, int);
+    method @Nullable public android.graphics.drawable.Drawable getCurrentDrawable();
+    method public android.graphics.drawable.Drawable getIndeterminateDrawable();
+    method @Nullable public android.graphics.BlendMode getIndeterminateTintBlendMode();
+    method @Nullable public android.content.res.ColorStateList getIndeterminateTintList();
+    method @Nullable public android.graphics.PorterDuff.Mode getIndeterminateTintMode();
+    method public android.view.animation.Interpolator getInterpolator();
+    method public int getMax();
+    method @Px public int getMaxHeight();
+    method @Px public int getMaxWidth();
+    method public int getMin();
+    method @Px public int getMinHeight();
+    method @Px public int getMinWidth();
+    method public int getProgress();
+    method @Nullable public android.graphics.BlendMode getProgressBackgroundTintBlendMode();
+    method @Nullable public android.content.res.ColorStateList getProgressBackgroundTintList();
+    method @Nullable public android.graphics.PorterDuff.Mode getProgressBackgroundTintMode();
+    method public android.graphics.drawable.Drawable getProgressDrawable();
+    method @Nullable public android.graphics.BlendMode getProgressTintBlendMode();
+    method @Nullable public android.content.res.ColorStateList getProgressTintList();
+    method @Nullable public android.graphics.PorterDuff.Mode getProgressTintMode();
+    method public int getSecondaryProgress();
+    method @Nullable public android.graphics.BlendMode getSecondaryProgressTintBlendMode();
+    method @Nullable public android.content.res.ColorStateList getSecondaryProgressTintList();
+    method @Nullable public android.graphics.PorterDuff.Mode getSecondaryProgressTintMode();
+    method public final void incrementProgressBy(int);
+    method public final void incrementSecondaryProgressBy(int);
+    method public boolean isAnimating();
+    method public boolean isIndeterminate();
+    method public void onRestoreInstanceState(android.os.Parcelable);
+    method public android.os.Parcelable onSaveInstanceState();
+    method public void setIndeterminate(boolean);
+    method public void setIndeterminateDrawable(android.graphics.drawable.Drawable);
+    method public void setIndeterminateDrawableTiled(android.graphics.drawable.Drawable);
+    method public void setIndeterminateTintBlendMode(@Nullable android.graphics.BlendMode);
+    method public void setIndeterminateTintList(@Nullable android.content.res.ColorStateList);
+    method public void setIndeterminateTintMode(@Nullable android.graphics.PorterDuff.Mode);
+    method public void setInterpolator(android.content.Context, @InterpolatorRes int);
+    method public void setInterpolator(android.view.animation.Interpolator);
+    method public void setMax(int);
+    method public void setMaxHeight(@Px int);
+    method public void setMaxWidth(@Px int);
+    method public void setMin(int);
+    method public void setMinHeight(@Px int);
+    method public void setMinWidth(@Px int);
+    method public void setProgress(int);
+    method public void setProgress(int, boolean);
+    method public void setProgressBackgroundTintBlendMode(@Nullable android.graphics.BlendMode);
+    method public void setProgressBackgroundTintList(@Nullable android.content.res.ColorStateList);
+    method public void setProgressBackgroundTintMode(@Nullable android.graphics.PorterDuff.Mode);
+    method public void setProgressDrawable(android.graphics.drawable.Drawable);
+    method public void setProgressDrawableTiled(android.graphics.drawable.Drawable);
+    method public void setProgressTintBlendMode(@Nullable android.graphics.BlendMode);
+    method public void setProgressTintList(@Nullable android.content.res.ColorStateList);
+    method public void setProgressTintMode(@Nullable android.graphics.PorterDuff.Mode);
+    method public void setSecondaryProgress(int);
+    method public void setSecondaryProgressTintBlendMode(@Nullable android.graphics.BlendMode);
+    method public void setSecondaryProgressTintList(@Nullable android.content.res.ColorStateList);
+    method public void setSecondaryProgressTintMode(@Nullable android.graphics.PorterDuff.Mode);
+  }
+
+  public class QuickContactBadge extends android.widget.ImageView implements android.view.View.OnClickListener {
+    ctor public QuickContactBadge(android.content.Context);
+    ctor public QuickContactBadge(android.content.Context, android.util.AttributeSet);
+    ctor public QuickContactBadge(android.content.Context, android.util.AttributeSet, int);
+    ctor public QuickContactBadge(android.content.Context, android.util.AttributeSet, int, int);
+    method public void assignContactFromEmail(String, boolean);
+    method public void assignContactFromEmail(String, boolean, android.os.Bundle);
+    method public void assignContactFromPhone(String, boolean);
+    method public void assignContactFromPhone(String, boolean, android.os.Bundle);
+    method public void assignContactUri(android.net.Uri);
+    method public void onClick(android.view.View);
+    method public void setExcludeMimes(String[]);
+    method public void setImageToDefault();
+    method public void setMode(int);
+    method public void setOverlay(android.graphics.drawable.Drawable);
+    method public void setPrioritizedMimeType(String);
+    field protected String[] mExcludeMimes;
+  }
+
+  public class RadioButton extends android.widget.CompoundButton {
+    ctor public RadioButton(android.content.Context);
+    ctor public RadioButton(android.content.Context, android.util.AttributeSet);
+    ctor public RadioButton(android.content.Context, android.util.AttributeSet, int);
+    ctor public RadioButton(android.content.Context, android.util.AttributeSet, int, int);
+  }
+
+  public class RadioGroup extends android.widget.LinearLayout {
+    ctor public RadioGroup(android.content.Context);
+    ctor public RadioGroup(android.content.Context, android.util.AttributeSet);
+    method public void check(@IdRes int);
+    method public void clearCheck();
+    method public android.widget.RadioGroup.LayoutParams generateLayoutParams(android.util.AttributeSet);
+    method @IdRes public int getCheckedRadioButtonId();
+    method public void setOnCheckedChangeListener(android.widget.RadioGroup.OnCheckedChangeListener);
+  }
+
+  public static class RadioGroup.LayoutParams extends android.widget.LinearLayout.LayoutParams {
+    ctor public RadioGroup.LayoutParams(android.content.Context, android.util.AttributeSet);
+    ctor public RadioGroup.LayoutParams(int, int);
+    ctor public RadioGroup.LayoutParams(int, int, float);
+    ctor public RadioGroup.LayoutParams(android.view.ViewGroup.LayoutParams);
+    ctor public RadioGroup.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
+  }
+
+  public static interface RadioGroup.OnCheckedChangeListener {
+    method public void onCheckedChanged(android.widget.RadioGroup, @IdRes int);
+  }
+
+  public class RatingBar extends android.widget.AbsSeekBar {
+    ctor public RatingBar(android.content.Context, android.util.AttributeSet, int);
+    ctor public RatingBar(android.content.Context, android.util.AttributeSet, int, int);
+    ctor public RatingBar(android.content.Context, android.util.AttributeSet);
+    ctor public RatingBar(android.content.Context);
+    method public int getNumStars();
+    method public android.widget.RatingBar.OnRatingBarChangeListener getOnRatingBarChangeListener();
+    method public float getRating();
+    method public float getStepSize();
+    method public boolean isIndicator();
+    method public void setIsIndicator(boolean);
+    method public void setNumStars(int);
+    method public void setOnRatingBarChangeListener(android.widget.RatingBar.OnRatingBarChangeListener);
+    method public void setRating(float);
+    method public void setStepSize(float);
+  }
+
+  public static interface RatingBar.OnRatingBarChangeListener {
+    method public void onRatingChanged(android.widget.RatingBar, float, boolean);
+  }
+
+  @android.widget.RemoteViews.RemoteView public class RelativeLayout extends android.view.ViewGroup {
+    ctor public RelativeLayout(android.content.Context);
+    ctor public RelativeLayout(android.content.Context, android.util.AttributeSet);
+    ctor public RelativeLayout(android.content.Context, android.util.AttributeSet, int);
+    ctor public RelativeLayout(android.content.Context, android.util.AttributeSet, int, int);
+    method public android.widget.RelativeLayout.LayoutParams generateLayoutParams(android.util.AttributeSet);
+    method public int getGravity();
+    method public int getIgnoreGravity();
+    method public void setGravity(int);
+    method public void setHorizontalGravity(int);
+    method public void setIgnoreGravity(int);
+    method public void setVerticalGravity(int);
+    field public static final int ABOVE = 2; // 0x2
+    field public static final int ALIGN_BASELINE = 4; // 0x4
+    field public static final int ALIGN_BOTTOM = 8; // 0x8
+    field public static final int ALIGN_END = 19; // 0x13
+    field public static final int ALIGN_LEFT = 5; // 0x5
+    field public static final int ALIGN_PARENT_BOTTOM = 12; // 0xc
+    field public static final int ALIGN_PARENT_END = 21; // 0x15
+    field public static final int ALIGN_PARENT_LEFT = 9; // 0x9
+    field public static final int ALIGN_PARENT_RIGHT = 11; // 0xb
+    field public static final int ALIGN_PARENT_START = 20; // 0x14
+    field public static final int ALIGN_PARENT_TOP = 10; // 0xa
+    field public static final int ALIGN_RIGHT = 7; // 0x7
+    field public static final int ALIGN_START = 18; // 0x12
+    field public static final int ALIGN_TOP = 6; // 0x6
+    field public static final int BELOW = 3; // 0x3
+    field public static final int CENTER_HORIZONTAL = 14; // 0xe
+    field public static final int CENTER_IN_PARENT = 13; // 0xd
+    field public static final int CENTER_VERTICAL = 15; // 0xf
+    field public static final int END_OF = 17; // 0x11
+    field public static final int LEFT_OF = 0; // 0x0
+    field public static final int RIGHT_OF = 1; // 0x1
+    field public static final int START_OF = 16; // 0x10
+    field public static final int TRUE = -1; // 0xffffffff
+  }
+
+  public static class RelativeLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
+    ctor public RelativeLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
+    ctor public RelativeLayout.LayoutParams(int, int);
+    ctor public RelativeLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
+    ctor public RelativeLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
+    ctor public RelativeLayout.LayoutParams(android.widget.RelativeLayout.LayoutParams);
+    method public void addRule(int);
+    method public void addRule(int, int);
+    method public String debug(String);
+    method public int getRule(int);
+    method public int[] getRules();
+    method public void removeRule(int);
+    field public boolean alignWithParent;
+  }
+
+  public class RemoteViews implements android.view.LayoutInflater.Filter android.os.Parcelable {
+    ctor public RemoteViews(String, int);
+    ctor public RemoteViews(android.widget.RemoteViews, android.widget.RemoteViews);
+    ctor public RemoteViews(android.widget.RemoteViews);
+    ctor public RemoteViews(android.os.Parcel);
+    method public void addView(int, android.widget.RemoteViews);
+    method public android.view.View apply(android.content.Context, android.view.ViewGroup);
+    method @Deprecated public android.widget.RemoteViews clone();
+    method public int describeContents();
+    method public int getLayoutId();
+    method public String getPackage();
+    method @Deprecated public boolean onLoadClass(Class);
+    method public void reapply(android.content.Context, android.view.View);
+    method public void removeAllViews(int);
+    method public void setAccessibilityTraversalAfter(int, int);
+    method public void setAccessibilityTraversalBefore(int, int);
+    method public void setBitmap(int, String, android.graphics.Bitmap);
+    method public void setBoolean(int, String, boolean);
+    method public void setBundle(int, String, android.os.Bundle);
+    method public void setByte(int, String, byte);
+    method public void setChar(int, String, char);
+    method public void setCharSequence(int, String, CharSequence);
+    method public void setChronometer(int, long, String, boolean);
+    method public void setChronometerCountDown(int, boolean);
+    method public void setContentDescription(int, CharSequence);
+    method public void setDisplayedChild(int, int);
+    method public void setDouble(int, String, double);
+    method public void setEmptyView(int, int);
+    method public void setFloat(int, String, float);
+    method public void setIcon(int, String, android.graphics.drawable.Icon);
+    method public void setImageViewBitmap(int, android.graphics.Bitmap);
+    method public void setImageViewIcon(int, android.graphics.drawable.Icon);
+    method public void setImageViewResource(int, int);
+    method public void setImageViewUri(int, android.net.Uri);
+    method public void setInt(int, String, int);
+    method public void setIntent(int, String, android.content.Intent);
+    method public void setLabelFor(int, int);
+    method public void setLightBackgroundLayoutId(@LayoutRes int);
+    method public void setLong(int, String, long);
+    method public void setOnClickFillInIntent(int, android.content.Intent);
+    method public void setOnClickPendingIntent(int, android.app.PendingIntent);
+    method public void setOnClickResponse(int, @NonNull android.widget.RemoteViews.RemoteResponse);
+    method public void setPendingIntentTemplate(int, android.app.PendingIntent);
+    method public void setProgressBar(int, int, int, boolean);
+    method public void setRelativeScrollPosition(int, int);
+    method @Deprecated public void setRemoteAdapter(int, int, android.content.Intent);
+    method public void setRemoteAdapter(int, android.content.Intent);
+    method public void setScrollPosition(int, int);
+    method public void setShort(int, String, short);
+    method public void setString(int, String, String);
+    method public void setTextColor(int, @ColorInt int);
+    method public void setTextViewCompoundDrawables(int, int, int, int, int);
+    method public void setTextViewCompoundDrawablesRelative(int, int, int, int, int);
+    method public void setTextViewText(int, CharSequence);
+    method public void setTextViewTextSize(int, int, float);
+    method public void setUri(int, String, android.net.Uri);
+    method public void setViewPadding(int, int, int, int, int);
+    method public void setViewVisibility(int, int);
+    method public void showNext(int);
+    method public void showPrevious(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.widget.RemoteViews> CREATOR;
+    field public static final String EXTRA_SHARED_ELEMENT_BOUNDS = "android.widget.extra.SHARED_ELEMENT_BOUNDS";
+  }
+
+  public static class RemoteViews.ActionException extends java.lang.RuntimeException {
+    ctor public RemoteViews.ActionException(Exception);
+    ctor public RemoteViews.ActionException(String);
+  }
+
+  public static class RemoteViews.RemoteResponse {
+    ctor public RemoteViews.RemoteResponse();
+    method @NonNull public android.widget.RemoteViews.RemoteResponse addSharedElement(int, @NonNull String);
+    method @NonNull public static android.widget.RemoteViews.RemoteResponse fromFillInIntent(@NonNull android.content.Intent);
+    method @NonNull public static android.widget.RemoteViews.RemoteResponse fromPendingIntent(@NonNull android.app.PendingIntent);
+  }
+
+  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE}) public static @interface RemoteViews.RemoteView {
+  }
+
+  public abstract class RemoteViewsService extends android.app.Service {
+    ctor public RemoteViewsService();
+    method public android.os.IBinder onBind(android.content.Intent);
+    method public abstract android.widget.RemoteViewsService.RemoteViewsFactory onGetViewFactory(android.content.Intent);
+  }
+
+  public static interface RemoteViewsService.RemoteViewsFactory {
+    method public int getCount();
+    method public long getItemId(int);
+    method public android.widget.RemoteViews getLoadingView();
+    method public android.widget.RemoteViews getViewAt(int);
+    method public int getViewTypeCount();
+    method public boolean hasStableIds();
+    method public void onCreate();
+    method public void onDataSetChanged();
+    method public void onDestroy();
+  }
+
+  public abstract class ResourceCursorAdapter extends android.widget.CursorAdapter {
+    ctor @Deprecated public ResourceCursorAdapter(android.content.Context, int, android.database.Cursor);
+    ctor public ResourceCursorAdapter(android.content.Context, int, android.database.Cursor, boolean);
+    ctor public ResourceCursorAdapter(android.content.Context, int, android.database.Cursor, int);
+    method public android.view.View newView(android.content.Context, android.database.Cursor, android.view.ViewGroup);
+    method public void setDropDownViewResource(int);
+    method public void setViewResource(int);
+  }
+
+  public abstract class ResourceCursorTreeAdapter extends android.widget.CursorTreeAdapter {
+    ctor public ResourceCursorTreeAdapter(android.content.Context, android.database.Cursor, int, int, int, int);
+    ctor public ResourceCursorTreeAdapter(android.content.Context, android.database.Cursor, int, int, int);
+    ctor public ResourceCursorTreeAdapter(android.content.Context, android.database.Cursor, int, int);
+    method public android.view.View newChildView(android.content.Context, android.database.Cursor, boolean, android.view.ViewGroup);
+    method public android.view.View newGroupView(android.content.Context, android.database.Cursor, boolean, android.view.ViewGroup);
+  }
+
+  public class ScrollView extends android.widget.FrameLayout {
+    ctor public ScrollView(android.content.Context);
+    ctor public ScrollView(android.content.Context, android.util.AttributeSet);
+    ctor public ScrollView(android.content.Context, android.util.AttributeSet, int);
+    ctor public ScrollView(android.content.Context, android.util.AttributeSet, int, int);
+    method public boolean arrowScroll(int);
+    method protected int computeScrollDeltaToGetChildRectOnScreen(android.graphics.Rect);
+    method public boolean executeKeyEvent(android.view.KeyEvent);
+    method public void fling(int);
+    method public boolean fullScroll(int);
+    method @ColorInt public int getBottomEdgeEffectColor();
+    method public int getMaxScrollAmount();
+    method @ColorInt public int getTopEdgeEffectColor();
+    method public boolean isFillViewport();
+    method public boolean isSmoothScrollingEnabled();
+    method public boolean pageScroll(int);
+    method public void scrollToDescendant(@NonNull android.view.View);
+    method public void setBottomEdgeEffectColor(@ColorInt int);
+    method public void setEdgeEffectColor(@ColorInt int);
+    method public void setFillViewport(boolean);
+    method public void setSmoothScrollingEnabled(boolean);
+    method public void setTopEdgeEffectColor(@ColorInt int);
+    method public final void smoothScrollBy(int, int);
+    method public final void smoothScrollTo(int, int);
+  }
+
+  public class Scroller {
+    ctor public Scroller(android.content.Context);
+    ctor public Scroller(android.content.Context, android.view.animation.Interpolator);
+    ctor public Scroller(android.content.Context, android.view.animation.Interpolator, boolean);
+    method public void abortAnimation();
+    method public boolean computeScrollOffset();
+    method public void extendDuration(int);
+    method public void fling(int, int, int, int, int, int, int, int);
+    method public final void forceFinished(boolean);
+    method public float getCurrVelocity();
+    method public final int getCurrX();
+    method public final int getCurrY();
+    method public final int getDuration();
+    method public final int getFinalX();
+    method public final int getFinalY();
+    method public final int getStartX();
+    method public final int getStartY();
+    method public final boolean isFinished();
+    method public void setFinalX(int);
+    method public void setFinalY(int);
+    method public final void setFriction(float);
+    method public void startScroll(int, int, int, int);
+    method public void startScroll(int, int, int, int, int);
+    method public int timePassed();
+  }
+
+  public class SearchView extends android.widget.LinearLayout implements android.view.CollapsibleActionView {
+    ctor public SearchView(android.content.Context);
+    ctor public SearchView(android.content.Context, android.util.AttributeSet);
+    ctor public SearchView(android.content.Context, android.util.AttributeSet, int);
+    ctor public SearchView(android.content.Context, android.util.AttributeSet, int, int);
+    method public int getImeOptions();
+    method public int getInputType();
+    method public int getMaxWidth();
+    method public CharSequence getQuery();
+    method @Nullable public CharSequence getQueryHint();
+    method public android.widget.CursorAdapter getSuggestionsAdapter();
+    method @Deprecated public boolean isIconfiedByDefault();
+    method public boolean isIconified();
+    method public boolean isIconifiedByDefault();
+    method public boolean isQueryRefinementEnabled();
+    method public boolean isSubmitButtonEnabled();
+    method public void onActionViewCollapsed();
+    method public void onActionViewExpanded();
+    method public void setIconified(boolean);
+    method public void setIconifiedByDefault(boolean);
+    method public void setImeOptions(int);
+    method public void setInputType(int);
+    method public void setMaxWidth(int);
+    method public void setOnCloseListener(android.widget.SearchView.OnCloseListener);
+    method public void setOnQueryTextFocusChangeListener(android.view.View.OnFocusChangeListener);
+    method public void setOnQueryTextListener(android.widget.SearchView.OnQueryTextListener);
+    method public void setOnSearchClickListener(android.view.View.OnClickListener);
+    method public void setOnSuggestionListener(android.widget.SearchView.OnSuggestionListener);
+    method public void setQuery(CharSequence, boolean);
+    method public void setQueryHint(@Nullable CharSequence);
+    method public void setQueryRefinementEnabled(boolean);
+    method public void setSearchableInfo(android.app.SearchableInfo);
+    method public void setSubmitButtonEnabled(boolean);
+    method public void setSuggestionsAdapter(android.widget.CursorAdapter);
+  }
+
+  public static interface SearchView.OnCloseListener {
+    method public boolean onClose();
+  }
+
+  public static interface SearchView.OnQueryTextListener {
+    method public boolean onQueryTextChange(String);
+    method public boolean onQueryTextSubmit(String);
+  }
+
+  public static interface SearchView.OnSuggestionListener {
+    method public boolean onSuggestionClick(int);
+    method public boolean onSuggestionSelect(int);
+  }
+
+  public interface SectionIndexer {
+    method public int getPositionForSection(int);
+    method public int getSectionForPosition(int);
+    method public Object[] getSections();
+  }
+
+  public class SeekBar extends android.widget.AbsSeekBar {
+    ctor public SeekBar(android.content.Context);
+    ctor public SeekBar(android.content.Context, android.util.AttributeSet);
+    ctor public SeekBar(android.content.Context, android.util.AttributeSet, int);
+    ctor public SeekBar(android.content.Context, android.util.AttributeSet, int, int);
+    method public void setOnSeekBarChangeListener(android.widget.SeekBar.OnSeekBarChangeListener);
+  }
+
+  public static interface SeekBar.OnSeekBarChangeListener {
+    method public void onProgressChanged(android.widget.SeekBar, int, boolean);
+    method public void onStartTrackingTouch(android.widget.SeekBar);
+    method public void onStopTrackingTouch(android.widget.SeekBar);
+  }
+
+  public class ShareActionProvider extends android.view.ActionProvider {
+    ctor public ShareActionProvider(android.content.Context);
+    method public android.view.View onCreateActionView();
+    method public void setOnShareTargetSelectedListener(android.widget.ShareActionProvider.OnShareTargetSelectedListener);
+    method public void setShareHistoryFileName(String);
+    method public void setShareIntent(android.content.Intent);
+    field public static final String DEFAULT_SHARE_HISTORY_FILE_NAME = "share_history.xml";
+  }
+
+  public static interface ShareActionProvider.OnShareTargetSelectedListener {
+    method public boolean onShareTargetSelected(android.widget.ShareActionProvider, android.content.Intent);
+  }
+
+  public class SimpleAdapter extends android.widget.BaseAdapter implements android.widget.Filterable android.widget.ThemedSpinnerAdapter {
+    ctor public SimpleAdapter(android.content.Context, java.util.List<? extends java.util.Map<java.lang.String,?>>, @LayoutRes int, String[], @IdRes int[]);
+    method public int getCount();
+    method public android.content.res.Resources.Theme getDropDownViewTheme();
+    method public android.widget.Filter getFilter();
+    method public Object getItem(int);
+    method public long getItemId(int);
+    method public android.view.View getView(int, android.view.View, android.view.ViewGroup);
+    method public android.widget.SimpleAdapter.ViewBinder getViewBinder();
+    method public void setDropDownViewResource(int);
+    method public void setDropDownViewTheme(android.content.res.Resources.Theme);
+    method public void setViewBinder(android.widget.SimpleAdapter.ViewBinder);
+    method public void setViewImage(android.widget.ImageView, int);
+    method public void setViewImage(android.widget.ImageView, String);
+    method public void setViewText(android.widget.TextView, String);
+  }
+
+  public static interface SimpleAdapter.ViewBinder {
+    method public boolean setViewValue(android.view.View, Object, String);
+  }
+
+  public class SimpleCursorAdapter extends android.widget.ResourceCursorAdapter {
+    ctor @Deprecated public SimpleCursorAdapter(android.content.Context, int, android.database.Cursor, String[], int[]);
+    ctor public SimpleCursorAdapter(android.content.Context, int, android.database.Cursor, String[], int[], int);
+    method public void bindView(android.view.View, android.content.Context, android.database.Cursor);
+    method public void changeCursorAndColumns(android.database.Cursor, String[], int[]);
+    method public android.widget.SimpleCursorAdapter.CursorToStringConverter getCursorToStringConverter();
+    method public int getStringConversionColumn();
+    method public android.widget.SimpleCursorAdapter.ViewBinder getViewBinder();
+    method public void setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter);
+    method public void setStringConversionColumn(int);
+    method public void setViewBinder(android.widget.SimpleCursorAdapter.ViewBinder);
+    method public void setViewImage(android.widget.ImageView, String);
+    method public void setViewText(android.widget.TextView, String);
+  }
+
+  public static interface SimpleCursorAdapter.CursorToStringConverter {
+    method public CharSequence convertToString(android.database.Cursor);
+  }
+
+  public static interface SimpleCursorAdapter.ViewBinder {
+    method public boolean setViewValue(android.view.View, android.database.Cursor, int);
+  }
+
+  public abstract class SimpleCursorTreeAdapter extends android.widget.ResourceCursorTreeAdapter {
+    ctor public SimpleCursorTreeAdapter(android.content.Context, android.database.Cursor, int, int, String[], int[], int, int, String[], int[]);
+    ctor public SimpleCursorTreeAdapter(android.content.Context, android.database.Cursor, int, int, String[], int[], int, String[], int[]);
+    ctor public SimpleCursorTreeAdapter(android.content.Context, android.database.Cursor, int, String[], int[], int, String[], int[]);
+    method protected void bindChildView(android.view.View, android.content.Context, android.database.Cursor, boolean);
+    method protected void bindGroupView(android.view.View, android.content.Context, android.database.Cursor, boolean);
+    method public android.widget.SimpleCursorTreeAdapter.ViewBinder getViewBinder();
+    method public void setViewBinder(android.widget.SimpleCursorTreeAdapter.ViewBinder);
+    method protected void setViewImage(android.widget.ImageView, String);
+    method public void setViewText(android.widget.TextView, String);
+  }
+
+  public static interface SimpleCursorTreeAdapter.ViewBinder {
+    method public boolean setViewValue(android.view.View, android.database.Cursor, int);
+  }
+
+  public class SimpleExpandableListAdapter extends android.widget.BaseExpandableListAdapter {
+    ctor public SimpleExpandableListAdapter(android.content.Context, java.util.List<? extends java.util.Map<java.lang.String,?>>, int, String[], int[], java.util.List<? extends java.util.List<? extends java.util.Map<java.lang.String,?>>>, int, String[], int[]);
+    ctor public SimpleExpandableListAdapter(android.content.Context, java.util.List<? extends java.util.Map<java.lang.String,?>>, int, int, String[], int[], java.util.List<? extends java.util.List<? extends java.util.Map<java.lang.String,?>>>, int, String[], int[]);
+    ctor public SimpleExpandableListAdapter(android.content.Context, java.util.List<? extends java.util.Map<java.lang.String,?>>, int, int, String[], int[], java.util.List<? extends java.util.List<? extends java.util.Map<java.lang.String,?>>>, int, int, String[], int[]);
+    method public Object getChild(int, int);
+    method public long getChildId(int, int);
+    method public android.view.View getChildView(int, int, boolean, android.view.View, android.view.ViewGroup);
+    method public int getChildrenCount(int);
+    method public Object getGroup(int);
+    method public int getGroupCount();
+    method public long getGroupId(int);
+    method public android.view.View getGroupView(int, boolean, android.view.View, android.view.ViewGroup);
+    method public boolean hasStableIds();
+    method public boolean isChildSelectable(int, int);
+    method public android.view.View newChildView(boolean, android.view.ViewGroup);
+    method public android.view.View newGroupView(boolean, android.view.ViewGroup);
+  }
+
+  @Deprecated public class SlidingDrawer extends android.view.ViewGroup {
+    ctor @Deprecated public SlidingDrawer(android.content.Context, android.util.AttributeSet);
+    ctor @Deprecated public SlidingDrawer(android.content.Context, android.util.AttributeSet, int);
+    ctor @Deprecated public SlidingDrawer(android.content.Context, android.util.AttributeSet, int, int);
+    method @Deprecated public void animateClose();
+    method @Deprecated public void animateOpen();
+    method @Deprecated public void animateToggle();
+    method @Deprecated public void close();
+    method @Deprecated public android.view.View getContent();
+    method @Deprecated public android.view.View getHandle();
+    method @Deprecated public boolean isMoving();
+    method @Deprecated public boolean isOpened();
+    method @Deprecated public void lock();
+    method @Deprecated public void open();
+    method @Deprecated public void setOnDrawerCloseListener(android.widget.SlidingDrawer.OnDrawerCloseListener);
+    method @Deprecated public void setOnDrawerOpenListener(android.widget.SlidingDrawer.OnDrawerOpenListener);
+    method @Deprecated public void setOnDrawerScrollListener(android.widget.SlidingDrawer.OnDrawerScrollListener);
+    method @Deprecated public void toggle();
+    method @Deprecated public void unlock();
+    field @Deprecated public static final int ORIENTATION_HORIZONTAL = 0; // 0x0
+    field @Deprecated public static final int ORIENTATION_VERTICAL = 1; // 0x1
+  }
+
+  @Deprecated public static interface SlidingDrawer.OnDrawerCloseListener {
+    method @Deprecated public void onDrawerClosed();
+  }
+
+  @Deprecated public static interface SlidingDrawer.OnDrawerOpenListener {
+    method @Deprecated public void onDrawerOpened();
+  }
+
+  @Deprecated public static interface SlidingDrawer.OnDrawerScrollListener {
+    method @Deprecated public void onScrollEnded();
+    method @Deprecated public void onScrollStarted();
+  }
+
+  public final class Space extends android.view.View {
+    ctor public Space(android.content.Context, android.util.AttributeSet, int, int);
+    ctor public Space(android.content.Context, android.util.AttributeSet, int);
+    ctor public Space(android.content.Context, android.util.AttributeSet);
+    ctor public Space(android.content.Context);
+  }
+
+  public class Spinner extends android.widget.AbsSpinner implements android.content.DialogInterface.OnClickListener {
+    ctor public Spinner(android.content.Context);
+    ctor public Spinner(android.content.Context, int);
+    ctor public Spinner(android.content.Context, android.util.AttributeSet);
+    ctor public Spinner(android.content.Context, android.util.AttributeSet, int);
+    ctor public Spinner(android.content.Context, android.util.AttributeSet, int, int);
+    ctor public Spinner(android.content.Context, android.util.AttributeSet, int, int, int);
+    ctor public Spinner(android.content.Context, android.util.AttributeSet, int, int, int, android.content.res.Resources.Theme);
+    method public int getDropDownHorizontalOffset();
+    method public int getDropDownVerticalOffset();
+    method public int getDropDownWidth();
+    method public int getGravity();
+    method public android.graphics.drawable.Drawable getPopupBackground();
+    method public android.content.Context getPopupContext();
+    method public CharSequence getPrompt();
+    method public void onClick(android.content.DialogInterface, int);
+    method public void setDropDownHorizontalOffset(int);
+    method public void setDropDownVerticalOffset(int);
+    method public void setDropDownWidth(int);
+    method public void setGravity(int);
+    method public void setPopupBackgroundDrawable(android.graphics.drawable.Drawable);
+    method public void setPopupBackgroundResource(@DrawableRes int);
+    method public void setPrompt(CharSequence);
+    method public void setPromptId(int);
+    field public static final int MODE_DIALOG = 0; // 0x0
+    field public static final int MODE_DROPDOWN = 1; // 0x1
+  }
+
+  public interface SpinnerAdapter extends android.widget.Adapter {
+    method public android.view.View getDropDownView(int, android.view.View, android.view.ViewGroup);
+  }
+
+  @android.widget.RemoteViews.RemoteView public class StackView extends android.widget.AdapterViewAnimator {
+    ctor public StackView(android.content.Context);
+    ctor public StackView(android.content.Context, android.util.AttributeSet);
+    ctor public StackView(android.content.Context, android.util.AttributeSet, int);
+    ctor public StackView(android.content.Context, android.util.AttributeSet, int, int);
+  }
+
+  public class Switch extends android.widget.CompoundButton {
+    ctor public Switch(android.content.Context);
+    ctor public Switch(android.content.Context, android.util.AttributeSet);
+    ctor public Switch(android.content.Context, android.util.AttributeSet, int);
+    ctor public Switch(android.content.Context, android.util.AttributeSet, int, int);
+    method public boolean getShowText();
+    method public boolean getSplitTrack();
+    method public int getSwitchMinWidth();
+    method public int getSwitchPadding();
+    method public CharSequence getTextOff();
+    method public CharSequence getTextOn();
+    method public android.graphics.drawable.Drawable getThumbDrawable();
+    method public int getThumbTextPadding();
+    method @Nullable public android.graphics.BlendMode getThumbTintBlendMode();
+    method @Nullable public android.content.res.ColorStateList getThumbTintList();
+    method @Nullable public android.graphics.PorterDuff.Mode getThumbTintMode();
+    method public android.graphics.drawable.Drawable getTrackDrawable();
+    method @Nullable public android.graphics.BlendMode getTrackTintBlendMode();
+    method @Nullable public android.content.res.ColorStateList getTrackTintList();
+    method @Nullable public android.graphics.PorterDuff.Mode getTrackTintMode();
+    method public void onMeasure(int, int);
+    method public void setShowText(boolean);
+    method public void setSplitTrack(boolean);
+    method public void setSwitchMinWidth(int);
+    method public void setSwitchPadding(int);
+    method public void setSwitchTextAppearance(android.content.Context, @StyleRes int);
+    method public void setSwitchTypeface(android.graphics.Typeface, int);
+    method public void setSwitchTypeface(android.graphics.Typeface);
+    method public void setTextOff(CharSequence);
+    method public void setTextOn(CharSequence);
+    method public void setThumbDrawable(android.graphics.drawable.Drawable);
+    method public void setThumbResource(@DrawableRes int);
+    method public void setThumbTextPadding(int);
+    method public void setThumbTintBlendMode(@Nullable android.graphics.BlendMode);
+    method public void setThumbTintList(@Nullable android.content.res.ColorStateList);
+    method public void setThumbTintMode(@Nullable android.graphics.PorterDuff.Mode);
+    method public void setTrackDrawable(android.graphics.drawable.Drawable);
+    method public void setTrackResource(@DrawableRes int);
+    method public void setTrackTintBlendMode(@Nullable android.graphics.BlendMode);
+    method public void setTrackTintList(@Nullable android.content.res.ColorStateList);
+    method public void setTrackTintMode(@Nullable android.graphics.PorterDuff.Mode);
+  }
+
+  @Deprecated public class TabHost extends android.widget.FrameLayout implements android.view.ViewTreeObserver.OnTouchModeChangeListener {
+    ctor @Deprecated public TabHost(android.content.Context);
+    ctor @Deprecated public TabHost(android.content.Context, android.util.AttributeSet);
+    ctor @Deprecated public TabHost(android.content.Context, android.util.AttributeSet, int);
+    ctor @Deprecated public TabHost(android.content.Context, android.util.AttributeSet, int, int);
+    method @Deprecated public void addTab(android.widget.TabHost.TabSpec);
+    method @Deprecated public void clearAllTabs();
+    method @Deprecated @Nullable public int getCurrentTab();
+    method @Deprecated @Nullable public String getCurrentTabTag();
+    method @Deprecated @Nullable public android.view.View getCurrentTabView();
+    method @Deprecated public android.view.View getCurrentView();
+    method @Deprecated public android.widget.FrameLayout getTabContentView();
+    method @Deprecated public android.widget.TabWidget getTabWidget();
+    method @Deprecated @NonNull public android.widget.TabHost.TabSpec newTabSpec(@NonNull String);
+    method @Deprecated public void onTouchModeChanged(boolean);
+    method @Deprecated public void setCurrentTab(int);
+    method @Deprecated public void setCurrentTabByTag(String);
+    method @Deprecated public void setOnTabChangedListener(android.widget.TabHost.OnTabChangeListener);
+    method @Deprecated public void setup();
+    method @Deprecated public void setup(android.app.LocalActivityManager);
+  }
+
+  @Deprecated public static interface TabHost.OnTabChangeListener {
+    method @Deprecated public void onTabChanged(String);
+  }
+
+  @Deprecated public static interface TabHost.TabContentFactory {
+    method @Deprecated public android.view.View createTabContent(String);
+  }
+
+  @Deprecated public class TabHost.TabSpec {
+    method @Deprecated @NonNull public String getTag();
+    method @Deprecated public android.widget.TabHost.TabSpec setContent(int);
+    method @Deprecated public android.widget.TabHost.TabSpec setContent(android.widget.TabHost.TabContentFactory);
+    method @Deprecated public android.widget.TabHost.TabSpec setContent(android.content.Intent);
+    method @Deprecated public android.widget.TabHost.TabSpec setIndicator(CharSequence);
+    method @Deprecated public android.widget.TabHost.TabSpec setIndicator(CharSequence, android.graphics.drawable.Drawable);
+    method @Deprecated public android.widget.TabHost.TabSpec setIndicator(android.view.View);
+  }
+
+  @Deprecated public class TabWidget extends android.widget.LinearLayout implements android.view.View.OnFocusChangeListener {
+    ctor @Deprecated public TabWidget(android.content.Context);
+    ctor @Deprecated public TabWidget(android.content.Context, android.util.AttributeSet);
+    ctor @Deprecated public TabWidget(android.content.Context, android.util.AttributeSet, int);
+    ctor @Deprecated public TabWidget(android.content.Context, android.util.AttributeSet, int, int);
+    method @Deprecated public void dispatchDraw(android.graphics.Canvas);
+    method @Deprecated public void focusCurrentTab(int);
+    method @Deprecated public android.view.View getChildTabViewAt(int);
+    method @Deprecated @Nullable public android.graphics.drawable.Drawable getLeftStripDrawable();
+    method @Deprecated @Nullable public android.graphics.drawable.Drawable getRightStripDrawable();
+    method @Deprecated public int getTabCount();
+    method @Deprecated public boolean isStripEnabled();
+    method @Deprecated public void onFocusChange(android.view.View, boolean);
+    method @Deprecated public void setCurrentTab(int);
+    method @Deprecated public void setDividerDrawable(@DrawableRes int);
+    method @Deprecated public void setLeftStripDrawable(@Nullable android.graphics.drawable.Drawable);
+    method @Deprecated public void setLeftStripDrawable(@DrawableRes int);
+    method @Deprecated public void setRightStripDrawable(@Nullable android.graphics.drawable.Drawable);
+    method @Deprecated public void setRightStripDrawable(@DrawableRes int);
+    method @Deprecated public void setStripEnabled(boolean);
+  }
+
+  public class TableLayout extends android.widget.LinearLayout {
+    ctor public TableLayout(android.content.Context);
+    ctor public TableLayout(android.content.Context, android.util.AttributeSet);
+    method public android.widget.TableLayout.LayoutParams generateLayoutParams(android.util.AttributeSet);
+    method public boolean isColumnCollapsed(int);
+    method public boolean isColumnShrinkable(int);
+    method public boolean isColumnStretchable(int);
+    method public boolean isShrinkAllColumns();
+    method public boolean isStretchAllColumns();
+    method public void setColumnCollapsed(int, boolean);
+    method public void setColumnShrinkable(int, boolean);
+    method public void setColumnStretchable(int, boolean);
+    method public void setShrinkAllColumns(boolean);
+    method public void setStretchAllColumns(boolean);
+  }
+
+  public static class TableLayout.LayoutParams extends android.widget.LinearLayout.LayoutParams {
+    ctor public TableLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
+    ctor public TableLayout.LayoutParams(int, int);
+    ctor public TableLayout.LayoutParams(int, int, float);
+    ctor public TableLayout.LayoutParams();
+    ctor public TableLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
+    ctor public TableLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
+  }
+
+  public class TableRow extends android.widget.LinearLayout {
+    ctor public TableRow(android.content.Context);
+    ctor public TableRow(android.content.Context, android.util.AttributeSet);
+    method public android.widget.TableRow.LayoutParams generateLayoutParams(android.util.AttributeSet);
+    method public android.view.View getVirtualChildAt(int);
+    method public int getVirtualChildCount();
+  }
+
+  public static class TableRow.LayoutParams extends android.widget.LinearLayout.LayoutParams {
+    ctor public TableRow.LayoutParams(android.content.Context, android.util.AttributeSet);
+    ctor public TableRow.LayoutParams(int, int);
+    ctor public TableRow.LayoutParams(int, int, float);
+    ctor public TableRow.LayoutParams();
+    ctor public TableRow.LayoutParams(int);
+    ctor public TableRow.LayoutParams(android.view.ViewGroup.LayoutParams);
+    ctor public TableRow.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
+    field public int column;
+    field public int span;
+  }
+
+  @android.widget.RemoteViews.RemoteView public class TextClock extends android.widget.TextView {
+    ctor public TextClock(android.content.Context);
+    ctor public TextClock(android.content.Context, android.util.AttributeSet);
+    ctor public TextClock(android.content.Context, android.util.AttributeSet, int);
+    ctor public TextClock(android.content.Context, android.util.AttributeSet, int, int);
+    method public CharSequence getFormat12Hour();
+    method public CharSequence getFormat24Hour();
+    method public String getTimeZone();
+    method public boolean is24HourModeEnabled();
+    method public void refreshTime();
+    method public void setFormat12Hour(CharSequence);
+    method public void setFormat24Hour(CharSequence);
+    method public void setTimeZone(String);
+    field @Deprecated public static final CharSequence DEFAULT_FORMAT_12_HOUR;
+    field @Deprecated public static final CharSequence DEFAULT_FORMAT_24_HOUR;
+  }
+
+  public class TextSwitcher extends android.widget.ViewSwitcher {
+    ctor public TextSwitcher(android.content.Context);
+    ctor public TextSwitcher(android.content.Context, android.util.AttributeSet);
+    method public void setCurrentText(CharSequence);
+    method public void setText(CharSequence);
+  }
+
+  @android.widget.RemoteViews.RemoteView public class TextView extends android.view.View implements android.view.ViewTreeObserver.OnPreDrawListener {
+    ctor public TextView(android.content.Context);
+    ctor public TextView(android.content.Context, @Nullable android.util.AttributeSet);
+    ctor public TextView(android.content.Context, @Nullable android.util.AttributeSet, int);
+    ctor public TextView(android.content.Context, @Nullable android.util.AttributeSet, int, int);
+    method public void addTextChangedListener(android.text.TextWatcher);
+    method public final void append(CharSequence);
+    method public void append(CharSequence, int, int);
+    method public void beginBatchEdit();
+    method public boolean bringPointIntoView(int);
+    method public void clearComposingText();
+    method public void debug(int);
+    method public boolean didTouchFocusSelect();
+    method public void endBatchEdit();
+    method public boolean extractText(android.view.inputmethod.ExtractedTextRequest, android.view.inputmethod.ExtractedText);
+    method public final int getAutoLinkMask();
+    method public int getAutoSizeMaxTextSize();
+    method public int getAutoSizeMinTextSize();
+    method public int getAutoSizeStepGranularity();
+    method public int[] getAutoSizeTextAvailableSizes();
+    method public int getAutoSizeTextType();
+    method public int getBreakStrategy();
+    method public int getCompoundDrawablePadding();
+    method @Nullable public android.graphics.BlendMode getCompoundDrawableTintBlendMode();
+    method public android.content.res.ColorStateList getCompoundDrawableTintList();
+    method public android.graphics.PorterDuff.Mode getCompoundDrawableTintMode();
+    method @NonNull public android.graphics.drawable.Drawable[] getCompoundDrawables();
+    method @NonNull public android.graphics.drawable.Drawable[] getCompoundDrawablesRelative();
+    method public int getCompoundPaddingBottom();
+    method public int getCompoundPaddingEnd();
+    method public int getCompoundPaddingLeft();
+    method public int getCompoundPaddingRight();
+    method public int getCompoundPaddingStart();
+    method public int getCompoundPaddingTop();
+    method @ColorInt public final int getCurrentHintTextColor();
+    method @ColorInt public final int getCurrentTextColor();
+    method public android.view.ActionMode.Callback getCustomInsertionActionModeCallback();
+    method public android.view.ActionMode.Callback getCustomSelectionActionModeCallback();
+    method protected boolean getDefaultEditable();
+    method protected android.text.method.MovementMethod getDefaultMovementMethod();
+    method public android.text.Editable getEditableText();
+    method public android.text.TextUtils.TruncateAt getEllipsize();
+    method public CharSequence getError();
+    method public int getExtendedPaddingBottom();
+    method public int getExtendedPaddingTop();
+    method public android.text.InputFilter[] getFilters();
+    method public int getFirstBaselineToTopHeight();
+    method @Nullable public String getFontFeatureSettings();
+    method @Nullable public String getFontVariationSettings();
+    method public boolean getFreezesText();
+    method public int getGravity();
+    method @ColorInt public int getHighlightColor();
+    method public CharSequence getHint();
+    method public final android.content.res.ColorStateList getHintTextColors();
+    method public int getHyphenationFrequency();
+    method public int getImeActionId();
+    method public CharSequence getImeActionLabel();
+    method @Nullable public android.os.LocaleList getImeHintLocales();
+    method public int getImeOptions();
+    method public boolean getIncludeFontPadding();
+    method public android.os.Bundle getInputExtras(boolean);
+    method public int getInputType();
+    method public int getJustificationMode();
+    method public final android.text.method.KeyListener getKeyListener();
+    method public int getLastBaselineToBottomHeight();
+    method public final android.text.Layout getLayout();
+    method public float getLetterSpacing();
+    method public int getLineBounds(int, android.graphics.Rect);
+    method public int getLineCount();
+    method public int getLineHeight();
+    method public float getLineSpacingExtra();
+    method public float getLineSpacingMultiplier();
+    method public final android.content.res.ColorStateList getLinkTextColors();
+    method public final boolean getLinksClickable();
+    method public int getMarqueeRepeatLimit();
+    method public int getMaxEms();
+    method public int getMaxHeight();
+    method public int getMaxLines();
+    method public int getMaxWidth();
+    method public int getMinEms();
+    method public int getMinHeight();
+    method public int getMinLines();
+    method public int getMinWidth();
+    method public final android.text.method.MovementMethod getMovementMethod();
+    method public int getOffsetForPosition(float, float);
+    method public android.text.TextPaint getPaint();
+    method public int getPaintFlags();
+    method public String getPrivateImeOptions();
+    method public int getSelectionEnd();
+    method public int getSelectionStart();
+    method @ColorInt public int getShadowColor();
+    method public float getShadowDx();
+    method public float getShadowDy();
+    method public float getShadowRadius();
+    method public final boolean getShowSoftInputOnFocus();
+    method public CharSequence getText();
+    method @NonNull public android.view.textclassifier.TextClassifier getTextClassifier();
+    method public final android.content.res.ColorStateList getTextColors();
+    method @Nullable public android.graphics.drawable.Drawable getTextCursorDrawable();
+    method @NonNull public android.text.TextDirectionHeuristic getTextDirectionHeuristic();
+    method @NonNull public java.util.Locale getTextLocale();
+    method @NonNull @Size(min=1) public android.os.LocaleList getTextLocales();
+    method @NonNull public android.text.PrecomputedText.Params getTextMetricsParams();
+    method public float getTextScaleX();
+    method @Nullable public android.graphics.drawable.Drawable getTextSelectHandle();
+    method @Nullable public android.graphics.drawable.Drawable getTextSelectHandleLeft();
+    method @Nullable public android.graphics.drawable.Drawable getTextSelectHandleRight();
+    method public float getTextSize();
+    method public int getTextSizeUnit();
+    method public int getTotalPaddingBottom();
+    method public int getTotalPaddingEnd();
+    method public int getTotalPaddingLeft();
+    method public int getTotalPaddingRight();
+    method public int getTotalPaddingStart();
+    method public int getTotalPaddingTop();
+    method public final android.text.method.TransformationMethod getTransformationMethod();
+    method public android.graphics.Typeface getTypeface();
+    method public android.text.style.URLSpan[] getUrls();
+    method public boolean hasSelection();
+    method public boolean isAllCaps();
+    method public boolean isCursorVisible();
+    method public boolean isElegantTextHeight();
+    method public boolean isFallbackLineSpacing();
+    method public final boolean isHorizontallyScrollable();
+    method public boolean isInputMethodTarget();
+    method public boolean isSingleLine();
+    method public boolean isSuggestionsEnabled();
+    method public boolean isTextSelectable();
+    method public int length();
+    method public boolean moveCursorToVisibleOffset();
+    method public void onBeginBatchEdit();
+    method public void onCommitCompletion(android.view.inputmethod.CompletionInfo);
+    method public void onCommitCorrection(android.view.inputmethod.CorrectionInfo);
+    method public void onEditorAction(int);
+    method public void onEndBatchEdit();
+    method public boolean onPreDraw();
+    method public boolean onPrivateIMECommand(String, android.os.Bundle);
+    method public void onRestoreInstanceState(android.os.Parcelable);
+    method public android.os.Parcelable onSaveInstanceState();
+    method @CallSuper protected void onSelectionChanged(int, int);
+    method protected void onTextChanged(CharSequence, int, int, int);
+    method public boolean onTextContextMenuItem(int);
+    method public void removeTextChangedListener(android.text.TextWatcher);
+    method public void setAllCaps(boolean);
+    method public final void setAutoLinkMask(int);
+    method public void setAutoSizeTextTypeUniformWithConfiguration(int, int, int, int);
+    method public void setAutoSizeTextTypeUniformWithPresetSizes(@NonNull int[], int);
+    method public void setAutoSizeTextTypeWithDefaults(int);
+    method public void setBreakStrategy(int);
+    method public void setCompoundDrawablePadding(int);
+    method public void setCompoundDrawableTintBlendMode(@Nullable android.graphics.BlendMode);
+    method public void setCompoundDrawableTintList(@Nullable android.content.res.ColorStateList);
+    method public void setCompoundDrawableTintMode(@Nullable android.graphics.PorterDuff.Mode);
+    method public void setCompoundDrawables(@Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable);
+    method public void setCompoundDrawablesRelative(@Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable);
+    method public void setCompoundDrawablesRelativeWithIntrinsicBounds(@DrawableRes int, @DrawableRes int, @DrawableRes int, @DrawableRes int);
+    method public void setCompoundDrawablesRelativeWithIntrinsicBounds(@Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable);
+    method public void setCompoundDrawablesWithIntrinsicBounds(@DrawableRes int, @DrawableRes int, @DrawableRes int, @DrawableRes int);
+    method public void setCompoundDrawablesWithIntrinsicBounds(@Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable);
+    method public void setCursorVisible(boolean);
+    method public void setCustomInsertionActionModeCallback(android.view.ActionMode.Callback);
+    method public void setCustomSelectionActionModeCallback(android.view.ActionMode.Callback);
+    method public final void setEditableFactory(android.text.Editable.Factory);
+    method public void setElegantTextHeight(boolean);
+    method public void setEllipsize(android.text.TextUtils.TruncateAt);
+    method public void setEms(int);
+    method public void setError(CharSequence);
+    method public void setError(CharSequence, android.graphics.drawable.Drawable);
+    method public void setExtractedText(android.view.inputmethod.ExtractedText);
+    method public void setFallbackLineSpacing(boolean);
+    method public void setFilters(android.text.InputFilter[]);
+    method public void setFirstBaselineToTopHeight(@IntRange(from=0) @Px int);
+    method public void setFontFeatureSettings(@Nullable String);
+    method public boolean setFontVariationSettings(@Nullable String);
+    method protected boolean setFrame(int, int, int, int);
+    method public void setFreezesText(boolean);
+    method public void setGravity(int);
+    method public void setHeight(int);
+    method public void setHighlightColor(@ColorInt int);
+    method public final void setHint(CharSequence);
+    method public final void setHint(@StringRes int);
+    method public final void setHintTextColor(@ColorInt int);
+    method public final void setHintTextColor(android.content.res.ColorStateList);
+    method public void setHorizontallyScrolling(boolean);
+    method public void setHyphenationFrequency(int);
+    method public void setImeActionLabel(CharSequence, int);
+    method public void setImeHintLocales(@Nullable android.os.LocaleList);
+    method public void setImeOptions(int);
+    method public void setIncludeFontPadding(boolean);
+    method public void setInputExtras(@XmlRes int) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method public void setInputType(int);
+    method public void setJustificationMode(int);
+    method public void setKeyListener(android.text.method.KeyListener);
+    method public void setLastBaselineToBottomHeight(@IntRange(from=0) @Px int);
+    method public void setLetterSpacing(float);
+    method public void setLineHeight(@IntRange(from=0) @Px int);
+    method public void setLineSpacing(float, float);
+    method public void setLines(int);
+    method public final void setLinkTextColor(@ColorInt int);
+    method public final void setLinkTextColor(android.content.res.ColorStateList);
+    method public final void setLinksClickable(boolean);
+    method public void setMarqueeRepeatLimit(int);
+    method public void setMaxEms(int);
+    method public void setMaxHeight(int);
+    method public void setMaxLines(int);
+    method public void setMaxWidth(int);
+    method public void setMinEms(int);
+    method public void setMinHeight(int);
+    method public void setMinLines(int);
+    method public void setMinWidth(int);
+    method public final void setMovementMethod(android.text.method.MovementMethod);
+    method public void setOnEditorActionListener(android.widget.TextView.OnEditorActionListener);
+    method public void setPaintFlags(int);
+    method public void setPrivateImeOptions(String);
+    method public void setRawInputType(int);
+    method public void setScroller(android.widget.Scroller);
+    method public void setSelectAllOnFocus(boolean);
+    method public void setShadowLayer(float, float, float, int);
+    method public final void setShowSoftInputOnFocus(boolean);
+    method public void setSingleLine();
+    method public void setSingleLine(boolean);
+    method public final void setSpannableFactory(android.text.Spannable.Factory);
+    method public final void setText(CharSequence);
+    method public void setText(CharSequence, android.widget.TextView.BufferType);
+    method public final void setText(char[], int, int);
+    method public final void setText(@StringRes int);
+    method public final void setText(@StringRes int, android.widget.TextView.BufferType);
+    method public void setTextAppearance(@StyleRes int);
+    method @Deprecated public void setTextAppearance(android.content.Context, @StyleRes int);
+    method public void setTextClassifier(@Nullable android.view.textclassifier.TextClassifier);
+    method public void setTextColor(@ColorInt int);
+    method public void setTextColor(android.content.res.ColorStateList);
+    method public void setTextCursorDrawable(@Nullable android.graphics.drawable.Drawable);
+    method public void setTextCursorDrawable(@DrawableRes int);
+    method public void setTextIsSelectable(boolean);
+    method public final void setTextKeepState(CharSequence);
+    method public final void setTextKeepState(CharSequence, android.widget.TextView.BufferType);
+    method public void setTextLocale(@NonNull java.util.Locale);
+    method public void setTextLocales(@NonNull @Size(min=1) android.os.LocaleList);
+    method public void setTextMetricsParams(@NonNull android.text.PrecomputedText.Params);
+    method public void setTextScaleX(float);
+    method public void setTextSelectHandle(@NonNull android.graphics.drawable.Drawable);
+    method public void setTextSelectHandle(@DrawableRes int);
+    method public void setTextSelectHandleLeft(@NonNull android.graphics.drawable.Drawable);
+    method public void setTextSelectHandleLeft(@DrawableRes int);
+    method public void setTextSelectHandleRight(@NonNull android.graphics.drawable.Drawable);
+    method public void setTextSelectHandleRight(@DrawableRes int);
+    method public void setTextSize(float);
+    method public void setTextSize(int, float);
+    method public final void setTransformationMethod(android.text.method.TransformationMethod);
+    method public void setTypeface(@Nullable android.graphics.Typeface, int);
+    method public void setTypeface(@Nullable android.graphics.Typeface);
+    method public void setWidth(int);
+    field public static final int AUTO_SIZE_TEXT_TYPE_NONE = 0; // 0x0
+    field public static final int AUTO_SIZE_TEXT_TYPE_UNIFORM = 1; // 0x1
+  }
+
+  public enum TextView.BufferType {
+    enum_constant public static final android.widget.TextView.BufferType EDITABLE;
+    enum_constant public static final android.widget.TextView.BufferType NORMAL;
+    enum_constant public static final android.widget.TextView.BufferType SPANNABLE;
+  }
+
+  public static interface TextView.OnEditorActionListener {
+    method public boolean onEditorAction(android.widget.TextView, int, android.view.KeyEvent);
+  }
+
+  public static class TextView.SavedState extends android.view.View.BaseSavedState {
+    field @NonNull public static final android.os.Parcelable.Creator<android.widget.TextView.SavedState> CREATOR;
+  }
+
+  public interface ThemedSpinnerAdapter extends android.widget.SpinnerAdapter {
+    method @Nullable public android.content.res.Resources.Theme getDropDownViewTheme();
+    method public void setDropDownViewTheme(@Nullable android.content.res.Resources.Theme);
+  }
+
+  public class TimePicker extends android.widget.FrameLayout {
+    ctor public TimePicker(android.content.Context);
+    ctor public TimePicker(android.content.Context, android.util.AttributeSet);
+    ctor public TimePicker(android.content.Context, android.util.AttributeSet, int);
+    ctor public TimePicker(android.content.Context, android.util.AttributeSet, int, int);
+    method @Deprecated @NonNull public Integer getCurrentHour();
+    method @Deprecated @NonNull public Integer getCurrentMinute();
+    method public int getHour();
+    method public int getMinute();
+    method public boolean is24HourView();
+    method @Deprecated public void setCurrentHour(@NonNull Integer);
+    method @Deprecated public void setCurrentMinute(@NonNull Integer);
+    method public void setHour(@IntRange(from=0, to=23) int);
+    method public void setIs24HourView(@NonNull Boolean);
+    method public void setMinute(@IntRange(from=0, to=59) int);
+    method public void setOnTimeChangedListener(android.widget.TimePicker.OnTimeChangedListener);
+    method public boolean validateInput();
+  }
+
+  public static interface TimePicker.OnTimeChangedListener {
+    method public void onTimeChanged(android.widget.TimePicker, int, int);
+  }
+
+  public class Toast {
+    ctor public Toast(android.content.Context);
+    method public void addCallback(@NonNull android.widget.Toast.Callback);
+    method public void cancel();
+    method public int getDuration();
+    method public int getGravity();
+    method public float getHorizontalMargin();
+    method public float getVerticalMargin();
+    method @Deprecated @Nullable public android.view.View getView();
+    method public int getXOffset();
+    method public int getYOffset();
+    method public static android.widget.Toast makeText(android.content.Context, CharSequence, int);
+    method public static android.widget.Toast makeText(android.content.Context, @StringRes int, int) throws android.content.res.Resources.NotFoundException;
+    method public void removeCallback(@NonNull android.widget.Toast.Callback);
+    method public void setDuration(int);
+    method public void setGravity(int, int, int);
+    method public void setMargin(float, float);
+    method public void setText(@StringRes int);
+    method public void setText(CharSequence);
+    method @Deprecated public void setView(android.view.View);
+    method public void show();
+    field public static final int LENGTH_LONG = 1; // 0x1
+    field public static final int LENGTH_SHORT = 0; // 0x0
+  }
+
+  public abstract static class Toast.Callback {
+    ctor public Toast.Callback();
+    method public void onToastHidden();
+    method public void onToastShown();
+  }
+
+  public class ToggleButton extends android.widget.CompoundButton {
+    ctor public ToggleButton(android.content.Context, android.util.AttributeSet, int, int);
+    ctor public ToggleButton(android.content.Context, android.util.AttributeSet, int);
+    ctor public ToggleButton(android.content.Context, android.util.AttributeSet);
+    ctor public ToggleButton(android.content.Context);
+    method @FloatRange(from=0.0, to=1.0) public float getDisabledAlpha();
+    method public CharSequence getTextOff();
+    method public CharSequence getTextOn();
+    method public void setBackgroundDrawable(android.graphics.drawable.Drawable);
+    method public void setTextOff(CharSequence);
+    method public void setTextOn(CharSequence);
+  }
+
+  public class Toolbar extends android.view.ViewGroup {
+    ctor public Toolbar(android.content.Context);
+    ctor public Toolbar(android.content.Context, android.util.AttributeSet);
+    ctor public Toolbar(android.content.Context, android.util.AttributeSet, int);
+    ctor public Toolbar(android.content.Context, android.util.AttributeSet, int, int);
+    method public void collapseActionView();
+    method public void dismissPopupMenus();
+    method protected android.widget.Toolbar.LayoutParams generateDefaultLayoutParams();
+    method public android.widget.Toolbar.LayoutParams generateLayoutParams(android.util.AttributeSet);
+    method protected android.widget.Toolbar.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams);
+    method @Nullable public CharSequence getCollapseContentDescription();
+    method @Nullable public android.graphics.drawable.Drawable getCollapseIcon();
+    method public int getContentInsetEnd();
+    method public int getContentInsetEndWithActions();
+    method public int getContentInsetLeft();
+    method public int getContentInsetRight();
+    method public int getContentInsetStart();
+    method public int getContentInsetStartWithNavigation();
+    method public int getCurrentContentInsetEnd();
+    method public int getCurrentContentInsetLeft();
+    method public int getCurrentContentInsetRight();
+    method public int getCurrentContentInsetStart();
+    method public android.graphics.drawable.Drawable getLogo();
+    method public CharSequence getLogoDescription();
+    method public android.view.Menu getMenu();
+    method @Nullable public CharSequence getNavigationContentDescription();
+    method @Nullable public android.graphics.drawable.Drawable getNavigationIcon();
+    method @Nullable public android.graphics.drawable.Drawable getOverflowIcon();
+    method public int getPopupTheme();
+    method public CharSequence getSubtitle();
+    method public CharSequence getTitle();
+    method public int getTitleMarginBottom();
+    method public int getTitleMarginEnd();
+    method public int getTitleMarginStart();
+    method public int getTitleMarginTop();
+    method public boolean hasExpandedActionView();
+    method public boolean hideOverflowMenu();
+    method public void inflateMenu(@MenuRes int);
+    method public boolean isOverflowMenuShowing();
+    method public void setCollapseContentDescription(@StringRes int);
+    method public void setCollapseContentDescription(@Nullable CharSequence);
+    method public void setCollapseIcon(@DrawableRes int);
+    method public void setCollapseIcon(@Nullable android.graphics.drawable.Drawable);
+    method public void setContentInsetEndWithActions(int);
+    method public void setContentInsetStartWithNavigation(int);
+    method public void setContentInsetsAbsolute(int, int);
+    method public void setContentInsetsRelative(int, int);
+    method public void setLogo(@DrawableRes int);
+    method public void setLogo(android.graphics.drawable.Drawable);
+    method public void setLogoDescription(@StringRes int);
+    method public void setLogoDescription(CharSequence);
+    method public void setNavigationContentDescription(@StringRes int);
+    method public void setNavigationContentDescription(@Nullable CharSequence);
+    method public void setNavigationIcon(@DrawableRes int);
+    method public void setNavigationIcon(@Nullable android.graphics.drawable.Drawable);
+    method public void setNavigationOnClickListener(android.view.View.OnClickListener);
+    method public void setOnMenuItemClickListener(android.widget.Toolbar.OnMenuItemClickListener);
+    method public void setOverflowIcon(@Nullable android.graphics.drawable.Drawable);
+    method public void setPopupTheme(@StyleRes int);
+    method public void setSubtitle(@StringRes int);
+    method public void setSubtitle(CharSequence);
+    method public void setSubtitleTextAppearance(android.content.Context, @StyleRes int);
+    method public void setSubtitleTextColor(@ColorInt int);
+    method public void setTitle(@StringRes int);
+    method public void setTitle(CharSequence);
+    method public void setTitleMargin(int, int, int, int);
+    method public void setTitleMarginBottom(int);
+    method public void setTitleMarginEnd(int);
+    method public void setTitleMarginStart(int);
+    method public void setTitleMarginTop(int);
+    method public void setTitleTextAppearance(android.content.Context, @StyleRes int);
+    method public void setTitleTextColor(@ColorInt int);
+    method public boolean showOverflowMenu();
+  }
+
+  public static class Toolbar.LayoutParams extends android.app.ActionBar.LayoutParams {
+    ctor public Toolbar.LayoutParams(@NonNull android.content.Context, android.util.AttributeSet);
+    ctor public Toolbar.LayoutParams(int, int);
+    ctor public Toolbar.LayoutParams(int, int, int);
+    ctor public Toolbar.LayoutParams(int);
+    ctor public Toolbar.LayoutParams(android.widget.Toolbar.LayoutParams);
+    ctor public Toolbar.LayoutParams(android.app.ActionBar.LayoutParams);
+    ctor public Toolbar.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
+    ctor public Toolbar.LayoutParams(android.view.ViewGroup.LayoutParams);
+  }
+
+  public static interface Toolbar.OnMenuItemClickListener {
+    method public boolean onMenuItemClick(android.view.MenuItem);
+  }
+
+  @Deprecated public class TwoLineListItem extends android.widget.RelativeLayout {
+    ctor @Deprecated public TwoLineListItem(android.content.Context);
+    ctor @Deprecated public TwoLineListItem(android.content.Context, android.util.AttributeSet);
+    ctor @Deprecated public TwoLineListItem(android.content.Context, android.util.AttributeSet, int);
+    ctor @Deprecated public TwoLineListItem(android.content.Context, android.util.AttributeSet, int, int);
+    method @Deprecated public android.widget.TextView getText1();
+    method @Deprecated public android.widget.TextView getText2();
+  }
+
+  public class VideoView extends android.view.SurfaceView implements android.widget.MediaController.MediaPlayerControl {
+    ctor public VideoView(android.content.Context);
+    ctor public VideoView(android.content.Context, android.util.AttributeSet);
+    ctor public VideoView(android.content.Context, android.util.AttributeSet, int);
+    ctor public VideoView(android.content.Context, android.util.AttributeSet, int, int);
+    method public void addSubtitleSource(java.io.InputStream, android.media.MediaFormat);
+    method public boolean canPause();
+    method public boolean canSeekBackward();
+    method public boolean canSeekForward();
+    method public int getAudioSessionId();
+    method public int getBufferPercentage();
+    method public int getCurrentPosition();
+    method public int getDuration();
+    method public boolean isPlaying();
+    method public void pause();
+    method public int resolveAdjustedSize(int, int);
+    method public void resume();
+    method public void seekTo(int);
+    method public void setAudioAttributes(@NonNull android.media.AudioAttributes);
+    method public void setAudioFocusRequest(int);
+    method public void setMediaController(android.widget.MediaController);
+    method public void setOnCompletionListener(android.media.MediaPlayer.OnCompletionListener);
+    method public void setOnErrorListener(android.media.MediaPlayer.OnErrorListener);
+    method public void setOnInfoListener(android.media.MediaPlayer.OnInfoListener);
+    method public void setOnPreparedListener(android.media.MediaPlayer.OnPreparedListener);
+    method public void setVideoPath(String);
+    method public void setVideoURI(android.net.Uri);
+    method public void setVideoURI(android.net.Uri, java.util.Map<java.lang.String,java.lang.String>);
+    method public void start();
+    method public void stopPlayback();
+    method public void suspend();
+  }
+
+  public class ViewAnimator extends android.widget.FrameLayout {
+    ctor public ViewAnimator(android.content.Context);
+    ctor public ViewAnimator(android.content.Context, android.util.AttributeSet);
+    method public boolean getAnimateFirstView();
+    method public android.view.View getCurrentView();
+    method public int getDisplayedChild();
+    method public android.view.animation.Animation getInAnimation();
+    method public android.view.animation.Animation getOutAnimation();
+    method public void setAnimateFirstView(boolean);
+    method public void setDisplayedChild(int);
+    method public void setInAnimation(android.view.animation.Animation);
+    method public void setInAnimation(android.content.Context, @AnimRes int);
+    method public void setOutAnimation(android.view.animation.Animation);
+    method public void setOutAnimation(android.content.Context, @AnimRes int);
+    method public void showNext();
+    method public void showPrevious();
+  }
+
+  @android.widget.RemoteViews.RemoteView public class ViewFlipper extends android.widget.ViewAnimator {
+    ctor public ViewFlipper(android.content.Context);
+    ctor public ViewFlipper(android.content.Context, android.util.AttributeSet);
+    method @IntRange(from=0) public int getFlipInterval();
+    method public boolean isAutoStart();
+    method public boolean isFlipping();
+    method public void setAutoStart(boolean);
+    method public void setFlipInterval(@IntRange(from=0) int);
+    method public void startFlipping();
+    method public void stopFlipping();
+  }
+
+  public class ViewSwitcher extends android.widget.ViewAnimator {
+    ctor public ViewSwitcher(android.content.Context);
+    ctor public ViewSwitcher(android.content.Context, android.util.AttributeSet);
+    method public android.view.View getNextView();
+    method public void reset();
+    method public void setFactory(android.widget.ViewSwitcher.ViewFactory);
+  }
+
+  public static interface ViewSwitcher.ViewFactory {
+    method public android.view.View makeView();
+  }
+
+  public interface WrapperListAdapter extends android.widget.ListAdapter {
+    method public android.widget.ListAdapter getWrappedAdapter();
+  }
+
+  @Deprecated public class ZoomButton extends android.widget.ImageButton implements android.view.View.OnLongClickListener {
+    ctor @Deprecated public ZoomButton(android.content.Context);
+    ctor @Deprecated public ZoomButton(android.content.Context, android.util.AttributeSet);
+    ctor @Deprecated public ZoomButton(android.content.Context, android.util.AttributeSet, int);
+    ctor @Deprecated public ZoomButton(android.content.Context, android.util.AttributeSet, int, int);
+    method @Deprecated public boolean onLongClick(android.view.View);
+    method @Deprecated public void setZoomSpeed(long);
+  }
+
+  @Deprecated public class ZoomButtonsController implements android.view.View.OnTouchListener {
+    ctor @Deprecated public ZoomButtonsController(android.view.View);
+    method @Deprecated public android.view.ViewGroup getContainer();
+    method @Deprecated public android.view.View getZoomControls();
+    method @Deprecated public boolean isAutoDismissed();
+    method @Deprecated public boolean isVisible();
+    method public boolean onTouch(android.view.View, android.view.MotionEvent);
+    method @Deprecated public void setAutoDismissed(boolean);
+    method @Deprecated public void setFocusable(boolean);
+    method @Deprecated public void setOnZoomListener(android.widget.ZoomButtonsController.OnZoomListener);
+    method @Deprecated public void setVisible(boolean);
+    method @Deprecated public void setZoomInEnabled(boolean);
+    method @Deprecated public void setZoomOutEnabled(boolean);
+    method @Deprecated public void setZoomSpeed(long);
+  }
+
+  @Deprecated public static interface ZoomButtonsController.OnZoomListener {
+    method @Deprecated public void onVisibilityChanged(boolean);
+    method @Deprecated public void onZoom(boolean);
+  }
+
+  @Deprecated public class ZoomControls extends android.widget.LinearLayout {
+    ctor @Deprecated public ZoomControls(android.content.Context);
+    ctor @Deprecated public ZoomControls(android.content.Context, android.util.AttributeSet);
+    method @Deprecated public void hide();
+    method @Deprecated public void setIsZoomInEnabled(boolean);
+    method @Deprecated public void setIsZoomOutEnabled(boolean);
+    method @Deprecated public void setOnZoomInClickListener(android.view.View.OnClickListener);
+    method @Deprecated public void setOnZoomOutClickListener(android.view.View.OnClickListener);
+    method @Deprecated public void setZoomSpeed(long);
+    method @Deprecated public void show();
+  }
+
+}
+
+package android.widget.inline {
+
+  public class InlineContentView extends android.view.ViewGroup {
+    method @Nullable public android.view.SurfaceControl getSurfaceControl();
+    method public boolean isZOrderedOnTop();
+    method public void onLayout(boolean, int, int, int, int);
+    method public void setSurfaceControlCallback(@Nullable android.widget.inline.InlineContentView.SurfaceControlCallback);
+    method public boolean setZOrderedOnTop(boolean);
+  }
+
+  public static interface InlineContentView.SurfaceControlCallback {
+    method public void onCreated(@NonNull android.view.SurfaceControl);
+    method public void onDestroyed(@NonNull android.view.SurfaceControl);
+  }
+
+  public final class InlinePresentationSpec implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public android.util.Size getMaxSize();
+    method @NonNull public android.util.Size getMinSize();
+    method @NonNull public android.os.Bundle getStyle();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.widget.inline.InlinePresentationSpec> CREATOR;
+  }
+
+  public static final class InlinePresentationSpec.Builder {
+    ctor public InlinePresentationSpec.Builder(@NonNull android.util.Size, @NonNull android.util.Size);
+    method @NonNull public android.widget.inline.InlinePresentationSpec build();
+    method @NonNull public android.widget.inline.InlinePresentationSpec.Builder setStyle(@NonNull android.os.Bundle);
+  }
+
+}
+
+package dalvik.annotation {
+
+  @Deprecated @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.ANNOTATION_TYPE}) public @interface TestTarget {
+    method @Deprecated public abstract String conceptName() default "";
+    method @Deprecated public abstract Class<?>[] methodArgs() default {};
+    method @Deprecated public abstract String methodName() default "";
+  }
+
+  @Deprecated @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE}) public @interface TestTargetClass {
+    method @Deprecated public abstract Class<?> value();
+  }
+
+}
+
+package dalvik.bytecode {
+
+  public final class OpcodeInfo {
+    field public static final int MAXIMUM_PACKED_VALUE;
+    field public static final int MAXIMUM_VALUE;
+  }
+
+  public interface Opcodes {
+    field public static final int OP_ADD_DOUBLE = 171; // 0xab
+    field public static final int OP_ADD_DOUBLE_2ADDR = 203; // 0xcb
+    field public static final int OP_ADD_FLOAT = 166; // 0xa6
+    field public static final int OP_ADD_FLOAT_2ADDR = 198; // 0xc6
+    field public static final int OP_ADD_INT = 144; // 0x90
+    field public static final int OP_ADD_INT_2ADDR = 176; // 0xb0
+    field public static final int OP_ADD_INT_LIT16 = 208; // 0xd0
+    field public static final int OP_ADD_INT_LIT8 = 216; // 0xd8
+    field public static final int OP_ADD_LONG = 155; // 0x9b
+    field public static final int OP_ADD_LONG_2ADDR = 187; // 0xbb
+    field public static final int OP_AGET = 68; // 0x44
+    field public static final int OP_AGET_BOOLEAN = 71; // 0x47
+    field public static final int OP_AGET_BYTE = 72; // 0x48
+    field public static final int OP_AGET_CHAR = 73; // 0x49
+    field public static final int OP_AGET_OBJECT = 70; // 0x46
+    field public static final int OP_AGET_SHORT = 74; // 0x4a
+    field public static final int OP_AGET_WIDE = 69; // 0x45
+    field public static final int OP_AND_INT = 149; // 0x95
+    field public static final int OP_AND_INT_2ADDR = 181; // 0xb5
+    field public static final int OP_AND_INT_LIT16 = 213; // 0xd5
+    field public static final int OP_AND_INT_LIT8 = 221; // 0xdd
+    field public static final int OP_AND_LONG = 160; // 0xa0
+    field public static final int OP_AND_LONG_2ADDR = 192; // 0xc0
+    field public static final int OP_APUT = 75; // 0x4b
+    field public static final int OP_APUT_BOOLEAN = 78; // 0x4e
+    field public static final int OP_APUT_BYTE = 79; // 0x4f
+    field public static final int OP_APUT_CHAR = 80; // 0x50
+    field public static final int OP_APUT_OBJECT = 77; // 0x4d
+    field public static final int OP_APUT_SHORT = 81; // 0x51
+    field public static final int OP_APUT_WIDE = 76; // 0x4c
+    field public static final int OP_ARRAY_LENGTH = 33; // 0x21
+    field @Deprecated public static final int OP_BREAKPOINT = 236; // 0xec
+    field public static final int OP_CHECK_CAST = 31; // 0x1f
+    field public static final int OP_CHECK_CAST_JUMBO = 511; // 0x1ff
+    field public static final int OP_CMPG_DOUBLE = 48; // 0x30
+    field public static final int OP_CMPG_FLOAT = 46; // 0x2e
+    field public static final int OP_CMPL_DOUBLE = 47; // 0x2f
+    field public static final int OP_CMPL_FLOAT = 45; // 0x2d
+    field public static final int OP_CMP_LONG = 49; // 0x31
+    field public static final int OP_CONST = 20; // 0x14
+    field public static final int OP_CONST_16 = 19; // 0x13
+    field public static final int OP_CONST_4 = 18; // 0x12
+    field public static final int OP_CONST_CLASS = 28; // 0x1c
+    field public static final int OP_CONST_CLASS_JUMBO = 255; // 0xff
+    field public static final int OP_CONST_HIGH16 = 21; // 0x15
+    field public static final int OP_CONST_METHOD_HANDLE = 254; // 0xfe
+    field public static final int OP_CONST_METHOD_TYPE = 255; // 0xff
+    field public static final int OP_CONST_STRING = 26; // 0x1a
+    field public static final int OP_CONST_STRING_JUMBO = 27; // 0x1b
+    field public static final int OP_CONST_WIDE = 24; // 0x18
+    field public static final int OP_CONST_WIDE_16 = 22; // 0x16
+    field public static final int OP_CONST_WIDE_32 = 23; // 0x17
+    field public static final int OP_CONST_WIDE_HIGH16 = 25; // 0x19
+    field public static final int OP_DIV_DOUBLE = 174; // 0xae
+    field public static final int OP_DIV_DOUBLE_2ADDR = 206; // 0xce
+    field public static final int OP_DIV_FLOAT = 169; // 0xa9
+    field public static final int OP_DIV_FLOAT_2ADDR = 201; // 0xc9
+    field public static final int OP_DIV_INT = 147; // 0x93
+    field public static final int OP_DIV_INT_2ADDR = 179; // 0xb3
+    field public static final int OP_DIV_INT_LIT16 = 211; // 0xd3
+    field public static final int OP_DIV_INT_LIT8 = 219; // 0xdb
+    field public static final int OP_DIV_LONG = 158; // 0x9e
+    field public static final int OP_DIV_LONG_2ADDR = 190; // 0xbe
+    field public static final int OP_DOUBLE_TO_FLOAT = 140; // 0x8c
+    field public static final int OP_DOUBLE_TO_INT = 138; // 0x8a
+    field public static final int OP_DOUBLE_TO_LONG = 139; // 0x8b
+    field @Deprecated public static final int OP_EXECUTE_INLINE = 238; // 0xee
+    field @Deprecated public static final int OP_EXECUTE_INLINE_RANGE = 239; // 0xef
+    field public static final int OP_FILLED_NEW_ARRAY = 36; // 0x24
+    field public static final int OP_FILLED_NEW_ARRAY_JUMBO = 1535; // 0x5ff
+    field public static final int OP_FILLED_NEW_ARRAY_RANGE = 37; // 0x25
+    field public static final int OP_FILL_ARRAY_DATA = 38; // 0x26
+    field public static final int OP_FLOAT_TO_DOUBLE = 137; // 0x89
+    field public static final int OP_FLOAT_TO_INT = 135; // 0x87
+    field public static final int OP_FLOAT_TO_LONG = 136; // 0x88
+    field public static final int OP_GOTO = 40; // 0x28
+    field public static final int OP_GOTO_16 = 41; // 0x29
+    field public static final int OP_GOTO_32 = 42; // 0x2a
+    field public static final int OP_IF_EQ = 50; // 0x32
+    field public static final int OP_IF_EQZ = 56; // 0x38
+    field public static final int OP_IF_GE = 53; // 0x35
+    field public static final int OP_IF_GEZ = 59; // 0x3b
+    field public static final int OP_IF_GT = 54; // 0x36
+    field public static final int OP_IF_GTZ = 60; // 0x3c
+    field public static final int OP_IF_LE = 55; // 0x37
+    field public static final int OP_IF_LEZ = 61; // 0x3d
+    field public static final int OP_IF_LT = 52; // 0x34
+    field public static final int OP_IF_LTZ = 58; // 0x3a
+    field public static final int OP_IF_NE = 51; // 0x33
+    field public static final int OP_IF_NEZ = 57; // 0x39
+    field public static final int OP_IGET = 82; // 0x52
+    field public static final int OP_IGET_BOOLEAN = 85; // 0x55
+    field public static final int OP_IGET_BOOLEAN_JUMBO = 2559; // 0x9ff
+    field public static final int OP_IGET_BYTE = 86; // 0x56
+    field public static final int OP_IGET_BYTE_JUMBO = 2815; // 0xaff
+    field public static final int OP_IGET_CHAR = 87; // 0x57
+    field public static final int OP_IGET_CHAR_JUMBO = 3071; // 0xbff
+    field public static final int OP_IGET_JUMBO = 1791; // 0x6ff
+    field public static final int OP_IGET_OBJECT = 84; // 0x54
+    field public static final int OP_IGET_OBJECT_JUMBO = 2303; // 0x8ff
+    field @Deprecated public static final int OP_IGET_OBJECT_QUICK = 244; // 0xf4
+    field @Deprecated public static final int OP_IGET_QUICK = 242; // 0xf2
+    field public static final int OP_IGET_SHORT = 88; // 0x58
+    field public static final int OP_IGET_SHORT_JUMBO = 3327; // 0xcff
+    field public static final int OP_IGET_WIDE = 83; // 0x53
+    field public static final int OP_IGET_WIDE_JUMBO = 2047; // 0x7ff
+    field @Deprecated public static final int OP_IGET_WIDE_QUICK = 243; // 0xf3
+    field @Deprecated public static final int OP_IGET_WIDE_VOLATILE = 232; // 0xe8
+    field public static final int OP_INSTANCE_OF = 32; // 0x20
+    field public static final int OP_INSTANCE_OF_JUMBO = 767; // 0x2ff
+    field public static final int OP_INT_TO_BYTE = 141; // 0x8d
+    field public static final int OP_INT_TO_CHAR = 142; // 0x8e
+    field public static final int OP_INT_TO_DOUBLE = 131; // 0x83
+    field public static final int OP_INT_TO_FLOAT = 130; // 0x82
+    field public static final int OP_INT_TO_LONG = 129; // 0x81
+    field public static final int OP_INT_TO_SHORT = 143; // 0x8f
+    field public static final int OP_INVOKE_CUSTOM = 252; // 0xfc
+    field public static final int OP_INVOKE_CUSTOM_RANGE = 253; // 0xfd
+    field public static final int OP_INVOKE_DIRECT = 112; // 0x70
+    field @Deprecated public static final int OP_INVOKE_DIRECT_EMPTY = 240; // 0xf0
+    field public static final int OP_INVOKE_DIRECT_JUMBO = 9471; // 0x24ff
+    field public static final int OP_INVOKE_DIRECT_RANGE = 118; // 0x76
+    field public static final int OP_INVOKE_INTERFACE = 114; // 0x72
+    field public static final int OP_INVOKE_INTERFACE_JUMBO = 9983; // 0x26ff
+    field public static final int OP_INVOKE_INTERFACE_RANGE = 120; // 0x78
+    field public static final int OP_INVOKE_POLYMORPHIC = 250; // 0xfa
+    field public static final int OP_INVOKE_POLYMORPHIC_RANGE = 251; // 0xfb
+    field public static final int OP_INVOKE_STATIC = 113; // 0x71
+    field public static final int OP_INVOKE_STATIC_JUMBO = 9727; // 0x25ff
+    field public static final int OP_INVOKE_STATIC_RANGE = 119; // 0x77
+    field public static final int OP_INVOKE_SUPER = 111; // 0x6f
+    field public static final int OP_INVOKE_SUPER_JUMBO = 9215; // 0x23ff
+    field @Deprecated public static final int OP_INVOKE_SUPER_QUICK = 250; // 0xfa
+    field @Deprecated public static final int OP_INVOKE_SUPER_QUICK_RANGE = 251; // 0xfb
+    field public static final int OP_INVOKE_SUPER_RANGE = 117; // 0x75
+    field public static final int OP_INVOKE_VIRTUAL = 110; // 0x6e
+    field public static final int OP_INVOKE_VIRTUAL_JUMBO = 8959; // 0x22ff
+    field @Deprecated public static final int OP_INVOKE_VIRTUAL_QUICK = 248; // 0xf8
+    field @Deprecated public static final int OP_INVOKE_VIRTUAL_QUICK_RANGE = 249; // 0xf9
+    field public static final int OP_INVOKE_VIRTUAL_RANGE = 116; // 0x74
+    field public static final int OP_IPUT = 89; // 0x59
+    field public static final int OP_IPUT_BOOLEAN = 92; // 0x5c
+    field public static final int OP_IPUT_BOOLEAN_JUMBO = 4351; // 0x10ff
+    field public static final int OP_IPUT_BYTE = 93; // 0x5d
+    field public static final int OP_IPUT_BYTE_JUMBO = 4607; // 0x11ff
+    field public static final int OP_IPUT_CHAR = 94; // 0x5e
+    field public static final int OP_IPUT_CHAR_JUMBO = 4863; // 0x12ff
+    field public static final int OP_IPUT_JUMBO = 3583; // 0xdff
+    field public static final int OP_IPUT_OBJECT = 91; // 0x5b
+    field public static final int OP_IPUT_OBJECT_JUMBO = 4095; // 0xfff
+    field @Deprecated public static final int OP_IPUT_OBJECT_QUICK = 247; // 0xf7
+    field @Deprecated public static final int OP_IPUT_QUICK = 245; // 0xf5
+    field public static final int OP_IPUT_SHORT = 95; // 0x5f
+    field public static final int OP_IPUT_SHORT_JUMBO = 5119; // 0x13ff
+    field public static final int OP_IPUT_WIDE = 90; // 0x5a
+    field public static final int OP_IPUT_WIDE_JUMBO = 3839; // 0xeff
+    field @Deprecated public static final int OP_IPUT_WIDE_QUICK = 246; // 0xf6
+    field @Deprecated public static final int OP_IPUT_WIDE_VOLATILE = 233; // 0xe9
+    field public static final int OP_LONG_TO_DOUBLE = 134; // 0x86
+    field public static final int OP_LONG_TO_FLOAT = 133; // 0x85
+    field public static final int OP_LONG_TO_INT = 132; // 0x84
+    field public static final int OP_MONITOR_ENTER = 29; // 0x1d
+    field public static final int OP_MONITOR_EXIT = 30; // 0x1e
+    field public static final int OP_MOVE = 1; // 0x1
+    field public static final int OP_MOVE_16 = 3; // 0x3
+    field public static final int OP_MOVE_EXCEPTION = 13; // 0xd
+    field public static final int OP_MOVE_FROM16 = 2; // 0x2
+    field public static final int OP_MOVE_OBJECT = 7; // 0x7
+    field public static final int OP_MOVE_OBJECT_16 = 9; // 0x9
+    field public static final int OP_MOVE_OBJECT_FROM16 = 8; // 0x8
+    field public static final int OP_MOVE_RESULT = 10; // 0xa
+    field public static final int OP_MOVE_RESULT_OBJECT = 12; // 0xc
+    field public static final int OP_MOVE_RESULT_WIDE = 11; // 0xb
+    field public static final int OP_MOVE_WIDE = 4; // 0x4
+    field public static final int OP_MOVE_WIDE_16 = 6; // 0x6
+    field public static final int OP_MOVE_WIDE_FROM16 = 5; // 0x5
+    field public static final int OP_MUL_DOUBLE = 173; // 0xad
+    field public static final int OP_MUL_DOUBLE_2ADDR = 205; // 0xcd
+    field public static final int OP_MUL_FLOAT = 168; // 0xa8
+    field public static final int OP_MUL_FLOAT_2ADDR = 200; // 0xc8
+    field public static final int OP_MUL_INT = 146; // 0x92
+    field public static final int OP_MUL_INT_2ADDR = 178; // 0xb2
+    field public static final int OP_MUL_INT_LIT16 = 210; // 0xd2
+    field public static final int OP_MUL_INT_LIT8 = 218; // 0xda
+    field public static final int OP_MUL_LONG = 157; // 0x9d
+    field public static final int OP_MUL_LONG_2ADDR = 189; // 0xbd
+    field public static final int OP_NEG_DOUBLE = 128; // 0x80
+    field public static final int OP_NEG_FLOAT = 127; // 0x7f
+    field public static final int OP_NEG_INT = 123; // 0x7b
+    field public static final int OP_NEG_LONG = 125; // 0x7d
+    field public static final int OP_NEW_ARRAY = 35; // 0x23
+    field public static final int OP_NEW_ARRAY_JUMBO = 1279; // 0x4ff
+    field public static final int OP_NEW_INSTANCE = 34; // 0x22
+    field public static final int OP_NEW_INSTANCE_JUMBO = 1023; // 0x3ff
+    field public static final int OP_NOP = 0; // 0x0
+    field public static final int OP_NOT_INT = 124; // 0x7c
+    field public static final int OP_NOT_LONG = 126; // 0x7e
+    field public static final int OP_OR_INT = 150; // 0x96
+    field public static final int OP_OR_INT_2ADDR = 182; // 0xb6
+    field public static final int OP_OR_INT_LIT16 = 214; // 0xd6
+    field public static final int OP_OR_INT_LIT8 = 222; // 0xde
+    field public static final int OP_OR_LONG = 161; // 0xa1
+    field public static final int OP_OR_LONG_2ADDR = 193; // 0xc1
+    field public static final int OP_PACKED_SWITCH = 43; // 0x2b
+    field public static final int OP_REM_DOUBLE = 175; // 0xaf
+    field public static final int OP_REM_DOUBLE_2ADDR = 207; // 0xcf
+    field public static final int OP_REM_FLOAT = 170; // 0xaa
+    field public static final int OP_REM_FLOAT_2ADDR = 202; // 0xca
+    field public static final int OP_REM_INT = 148; // 0x94
+    field public static final int OP_REM_INT_2ADDR = 180; // 0xb4
+    field public static final int OP_REM_INT_LIT16 = 212; // 0xd4
+    field public static final int OP_REM_INT_LIT8 = 220; // 0xdc
+    field public static final int OP_REM_LONG = 159; // 0x9f
+    field public static final int OP_REM_LONG_2ADDR = 191; // 0xbf
+    field public static final int OP_RETURN = 15; // 0xf
+    field public static final int OP_RETURN_OBJECT = 17; // 0x11
+    field public static final int OP_RETURN_VOID = 14; // 0xe
+    field public static final int OP_RETURN_WIDE = 16; // 0x10
+    field public static final int OP_RSUB_INT = 209; // 0xd1
+    field public static final int OP_RSUB_INT_LIT8 = 217; // 0xd9
+    field public static final int OP_SGET = 96; // 0x60
+    field public static final int OP_SGET_BOOLEAN = 99; // 0x63
+    field public static final int OP_SGET_BOOLEAN_JUMBO = 6143; // 0x17ff
+    field public static final int OP_SGET_BYTE = 100; // 0x64
+    field public static final int OP_SGET_BYTE_JUMBO = 6399; // 0x18ff
+    field public static final int OP_SGET_CHAR = 101; // 0x65
+    field public static final int OP_SGET_CHAR_JUMBO = 6655; // 0x19ff
+    field public static final int OP_SGET_JUMBO = 5375; // 0x14ff
+    field public static final int OP_SGET_OBJECT = 98; // 0x62
+    field public static final int OP_SGET_OBJECT_JUMBO = 5887; // 0x16ff
+    field public static final int OP_SGET_SHORT = 102; // 0x66
+    field public static final int OP_SGET_SHORT_JUMBO = 6911; // 0x1aff
+    field public static final int OP_SGET_WIDE = 97; // 0x61
+    field public static final int OP_SGET_WIDE_JUMBO = 5631; // 0x15ff
+    field @Deprecated public static final int OP_SGET_WIDE_VOLATILE = 234; // 0xea
+    field public static final int OP_SHL_INT = 152; // 0x98
+    field public static final int OP_SHL_INT_2ADDR = 184; // 0xb8
+    field public static final int OP_SHL_INT_LIT8 = 224; // 0xe0
+    field public static final int OP_SHL_LONG = 163; // 0xa3
+    field public static final int OP_SHL_LONG_2ADDR = 195; // 0xc3
+    field public static final int OP_SHR_INT = 153; // 0x99
+    field public static final int OP_SHR_INT_2ADDR = 185; // 0xb9
+    field public static final int OP_SHR_INT_LIT8 = 225; // 0xe1
+    field public static final int OP_SHR_LONG = 164; // 0xa4
+    field public static final int OP_SHR_LONG_2ADDR = 196; // 0xc4
+    field public static final int OP_SPARSE_SWITCH = 44; // 0x2c
+    field public static final int OP_SPUT = 103; // 0x67
+    field public static final int OP_SPUT_BOOLEAN = 106; // 0x6a
+    field public static final int OP_SPUT_BOOLEAN_JUMBO = 7935; // 0x1eff
+    field public static final int OP_SPUT_BYTE = 107; // 0x6b
+    field public static final int OP_SPUT_BYTE_JUMBO = 8191; // 0x1fff
+    field public static final int OP_SPUT_CHAR = 108; // 0x6c
+    field public static final int OP_SPUT_CHAR_JUMBO = 8447; // 0x20ff
+    field public static final int OP_SPUT_JUMBO = 7167; // 0x1bff
+    field public static final int OP_SPUT_OBJECT = 105; // 0x69
+    field public static final int OP_SPUT_OBJECT_JUMBO = 7679; // 0x1dff
+    field public static final int OP_SPUT_SHORT = 109; // 0x6d
+    field public static final int OP_SPUT_SHORT_JUMBO = 8703; // 0x21ff
+    field public static final int OP_SPUT_WIDE = 104; // 0x68
+    field public static final int OP_SPUT_WIDE_JUMBO = 7423; // 0x1cff
+    field @Deprecated public static final int OP_SPUT_WIDE_VOLATILE = 235; // 0xeb
+    field public static final int OP_SUB_DOUBLE = 172; // 0xac
+    field public static final int OP_SUB_DOUBLE_2ADDR = 204; // 0xcc
+    field public static final int OP_SUB_FLOAT = 167; // 0xa7
+    field public static final int OP_SUB_FLOAT_2ADDR = 199; // 0xc7
+    field public static final int OP_SUB_INT = 145; // 0x91
+    field public static final int OP_SUB_INT_2ADDR = 177; // 0xb1
+    field public static final int OP_SUB_LONG = 156; // 0x9c
+    field public static final int OP_SUB_LONG_2ADDR = 188; // 0xbc
+    field public static final int OP_THROW = 39; // 0x27
+    field @Deprecated public static final int OP_THROW_VERIFICATION_ERROR = 237; // 0xed
+    field public static final int OP_USHR_INT = 154; // 0x9a
+    field public static final int OP_USHR_INT_2ADDR = 186; // 0xba
+    field public static final int OP_USHR_INT_LIT8 = 226; // 0xe2
+    field public static final int OP_USHR_LONG = 165; // 0xa5
+    field public static final int OP_USHR_LONG_2ADDR = 197; // 0xc5
+    field public static final int OP_XOR_INT = 151; // 0x97
+    field public static final int OP_XOR_INT_2ADDR = 183; // 0xb7
+    field public static final int OP_XOR_INT_LIT16 = 215; // 0xd7
+    field public static final int OP_XOR_INT_LIT8 = 223; // 0xdf
+    field public static final int OP_XOR_LONG = 162; // 0xa2
+    field public static final int OP_XOR_LONG_2ADDR = 194; // 0xc2
+  }
+
+}
+
+package dalvik.system {
+
+  public class BaseDexClassLoader extends java.lang.ClassLoader {
+    ctor public BaseDexClassLoader(String, java.io.File, String, ClassLoader);
+    method public String findLibrary(String);
+    method protected java.util.Enumeration<java.net.URL> findResources(String);
+  }
+
+  public final class DelegateLastClassLoader extends dalvik.system.PathClassLoader {
+    ctor public DelegateLastClassLoader(String, ClassLoader);
+    ctor public DelegateLastClassLoader(String, String, ClassLoader);
+    ctor public DelegateLastClassLoader(@NonNull String, @Nullable String, @Nullable ClassLoader, boolean);
+  }
+
+  public class DexClassLoader extends dalvik.system.BaseDexClassLoader {
+    ctor public DexClassLoader(String, String, String, ClassLoader);
+  }
+
+  @Deprecated public final class DexFile {
+    ctor @Deprecated public DexFile(java.io.File) throws java.io.IOException;
+    ctor @Deprecated public DexFile(String) throws java.io.IOException;
+    method @Deprecated public void close() throws java.io.IOException;
+    method @Deprecated public java.util.Enumeration<java.lang.String> entries();
+    method @Deprecated public String getName();
+    method @Deprecated public static boolean isDexOptNeeded(String) throws java.io.FileNotFoundException, java.io.IOException;
+    method @Deprecated public Class loadClass(String, ClassLoader);
+    method @Deprecated public static dalvik.system.DexFile loadDex(String, String, int) throws java.io.IOException;
+  }
+
+  public final class InMemoryDexClassLoader extends dalvik.system.BaseDexClassLoader {
+    ctor public InMemoryDexClassLoader(@NonNull java.nio.ByteBuffer[], @Nullable String, @Nullable ClassLoader);
+    ctor public InMemoryDexClassLoader(@NonNull java.nio.ByteBuffer[], @Nullable ClassLoader);
+    ctor public InMemoryDexClassLoader(@NonNull java.nio.ByteBuffer, @Nullable ClassLoader);
+  }
+
+  public class PathClassLoader extends dalvik.system.BaseDexClassLoader {
+    ctor public PathClassLoader(String, ClassLoader);
+    ctor public PathClassLoader(String, String, ClassLoader);
+  }
+
+}
+
+package java.awt.font {
+
+  public final class NumericShaper implements java.io.Serializable {
+    method public static java.awt.font.NumericShaper getContextualShaper(int);
+    method public static java.awt.font.NumericShaper getContextualShaper(java.util.Set<java.awt.font.NumericShaper.Range>);
+    method public static java.awt.font.NumericShaper getContextualShaper(int, int);
+    method public static java.awt.font.NumericShaper getContextualShaper(java.util.Set<java.awt.font.NumericShaper.Range>, java.awt.font.NumericShaper.Range);
+    method public java.util.Set<java.awt.font.NumericShaper.Range> getRangeSet();
+    method public int getRanges();
+    method public static java.awt.font.NumericShaper getShaper(int);
+    method public static java.awt.font.NumericShaper getShaper(java.awt.font.NumericShaper.Range);
+    method public boolean isContextual();
+    method public void shape(char[], int, int);
+    method public void shape(char[], int, int, int);
+    method public void shape(char[], int, int, java.awt.font.NumericShaper.Range);
+    field public static final int ALL_RANGES = 524287; // 0x7ffff
+    field public static final int ARABIC = 2; // 0x2
+    field public static final int BENGALI = 16; // 0x10
+    field public static final int DEVANAGARI = 8; // 0x8
+    field public static final int EASTERN_ARABIC = 4; // 0x4
+    field public static final int ETHIOPIC = 65536; // 0x10000
+    field public static final int EUROPEAN = 1; // 0x1
+    field public static final int GUJARATI = 64; // 0x40
+    field public static final int GURMUKHI = 32; // 0x20
+    field public static final int KANNADA = 1024; // 0x400
+    field public static final int KHMER = 131072; // 0x20000
+    field public static final int LAO = 8192; // 0x2000
+    field public static final int MALAYALAM = 2048; // 0x800
+    field public static final int MONGOLIAN = 262144; // 0x40000
+    field public static final int MYANMAR = 32768; // 0x8000
+    field public static final int ORIYA = 128; // 0x80
+    field public static final int TAMIL = 256; // 0x100
+    field public static final int TELUGU = 512; // 0x200
+    field public static final int THAI = 4096; // 0x1000
+    field public static final int TIBETAN = 16384; // 0x4000
+  }
+
+  public enum NumericShaper.Range {
+    enum_constant public static final java.awt.font.NumericShaper.Range ARABIC;
+    enum_constant public static final java.awt.font.NumericShaper.Range BALINESE;
+    enum_constant public static final java.awt.font.NumericShaper.Range BENGALI;
+    enum_constant public static final java.awt.font.NumericShaper.Range CHAM;
+    enum_constant public static final java.awt.font.NumericShaper.Range DEVANAGARI;
+    enum_constant public static final java.awt.font.NumericShaper.Range EASTERN_ARABIC;
+    enum_constant public static final java.awt.font.NumericShaper.Range ETHIOPIC;
+    enum_constant public static final java.awt.font.NumericShaper.Range EUROPEAN;
+    enum_constant public static final java.awt.font.NumericShaper.Range GUJARATI;
+    enum_constant public static final java.awt.font.NumericShaper.Range GURMUKHI;
+    enum_constant public static final java.awt.font.NumericShaper.Range JAVANESE;
+    enum_constant public static final java.awt.font.NumericShaper.Range KANNADA;
+    enum_constant public static final java.awt.font.NumericShaper.Range KAYAH_LI;
+    enum_constant public static final java.awt.font.NumericShaper.Range KHMER;
+    enum_constant public static final java.awt.font.NumericShaper.Range LAO;
+    enum_constant public static final java.awt.font.NumericShaper.Range LEPCHA;
+    enum_constant public static final java.awt.font.NumericShaper.Range LIMBU;
+    enum_constant public static final java.awt.font.NumericShaper.Range MALAYALAM;
+    enum_constant public static final java.awt.font.NumericShaper.Range MEETEI_MAYEK;
+    enum_constant public static final java.awt.font.NumericShaper.Range MONGOLIAN;
+    enum_constant public static final java.awt.font.NumericShaper.Range MYANMAR;
+    enum_constant public static final java.awt.font.NumericShaper.Range MYANMAR_SHAN;
+    enum_constant public static final java.awt.font.NumericShaper.Range NEW_TAI_LUE;
+    enum_constant public static final java.awt.font.NumericShaper.Range NKO;
+    enum_constant public static final java.awt.font.NumericShaper.Range OL_CHIKI;
+    enum_constant public static final java.awt.font.NumericShaper.Range ORIYA;
+    enum_constant public static final java.awt.font.NumericShaper.Range SAURASHTRA;
+    enum_constant public static final java.awt.font.NumericShaper.Range SUNDANESE;
+    enum_constant public static final java.awt.font.NumericShaper.Range TAI_THAM_HORA;
+    enum_constant public static final java.awt.font.NumericShaper.Range TAI_THAM_THAM;
+    enum_constant public static final java.awt.font.NumericShaper.Range TAMIL;
+    enum_constant public static final java.awt.font.NumericShaper.Range TELUGU;
+    enum_constant public static final java.awt.font.NumericShaper.Range THAI;
+    enum_constant public static final java.awt.font.NumericShaper.Range TIBETAN;
+    enum_constant public static final java.awt.font.NumericShaper.Range VAI;
+  }
+
+  public final class TextAttribute extends java.text.AttributedCharacterIterator.Attribute {
+    ctor protected TextAttribute(String);
+    field public static final java.awt.font.TextAttribute BACKGROUND;
+    field public static final java.awt.font.TextAttribute BIDI_EMBEDDING;
+    field public static final java.awt.font.TextAttribute CHAR_REPLACEMENT;
+    field public static final java.awt.font.TextAttribute FAMILY;
+    field public static final java.awt.font.TextAttribute FONT;
+    field public static final java.awt.font.TextAttribute FOREGROUND;
+    field public static final java.awt.font.TextAttribute INPUT_METHOD_HIGHLIGHT;
+    field public static final java.awt.font.TextAttribute INPUT_METHOD_UNDERLINE;
+    field public static final java.awt.font.TextAttribute JUSTIFICATION;
+    field public static final Float JUSTIFICATION_FULL;
+    field public static final Float JUSTIFICATION_NONE;
+    field public static final java.awt.font.TextAttribute KERNING;
+    field public static final Integer KERNING_ON;
+    field public static final java.awt.font.TextAttribute LIGATURES;
+    field public static final Integer LIGATURES_ON;
+    field public static final java.awt.font.TextAttribute NUMERIC_SHAPING;
+    field public static final java.awt.font.TextAttribute POSTURE;
+    field public static final Float POSTURE_OBLIQUE;
+    field public static final Float POSTURE_REGULAR;
+    field public static final java.awt.font.TextAttribute RUN_DIRECTION;
+    field public static final Boolean RUN_DIRECTION_LTR;
+    field public static final Boolean RUN_DIRECTION_RTL;
+    field public static final java.awt.font.TextAttribute SIZE;
+    field public static final java.awt.font.TextAttribute STRIKETHROUGH;
+    field public static final Boolean STRIKETHROUGH_ON;
+    field public static final java.awt.font.TextAttribute SUPERSCRIPT;
+    field public static final Integer SUPERSCRIPT_SUB;
+    field public static final Integer SUPERSCRIPT_SUPER;
+    field public static final java.awt.font.TextAttribute SWAP_COLORS;
+    field public static final Boolean SWAP_COLORS_ON;
+    field public static final java.awt.font.TextAttribute TRACKING;
+    field public static final Float TRACKING_LOOSE;
+    field public static final Float TRACKING_TIGHT;
+    field public static final java.awt.font.TextAttribute TRANSFORM;
+    field public static final java.awt.font.TextAttribute UNDERLINE;
+    field public static final Integer UNDERLINE_LOW_DASHED;
+    field public static final Integer UNDERLINE_LOW_DOTTED;
+    field public static final Integer UNDERLINE_LOW_GRAY;
+    field public static final Integer UNDERLINE_LOW_ONE_PIXEL;
+    field public static final Integer UNDERLINE_LOW_TWO_PIXEL;
+    field public static final Integer UNDERLINE_ON;
+    field public static final java.awt.font.TextAttribute WEIGHT;
+    field public static final Float WEIGHT_BOLD;
+    field public static final Float WEIGHT_DEMIBOLD;
+    field public static final Float WEIGHT_DEMILIGHT;
+    field public static final Float WEIGHT_EXTRABOLD;
+    field public static final Float WEIGHT_EXTRA_LIGHT;
+    field public static final Float WEIGHT_HEAVY;
+    field public static final Float WEIGHT_LIGHT;
+    field public static final Float WEIGHT_MEDIUM;
+    field public static final Float WEIGHT_REGULAR;
+    field public static final Float WEIGHT_SEMIBOLD;
+    field public static final Float WEIGHT_ULTRABOLD;
+    field public static final java.awt.font.TextAttribute WIDTH;
+    field public static final Float WIDTH_CONDENSED;
+    field public static final Float WIDTH_EXTENDED;
+    field public static final Float WIDTH_REGULAR;
+    field public static final Float WIDTH_SEMI_CONDENSED;
+    field public static final Float WIDTH_SEMI_EXTENDED;
+  }
+
+}
+
+package java.beans {
+
+  public class IndexedPropertyChangeEvent extends java.beans.PropertyChangeEvent {
+    ctor public IndexedPropertyChangeEvent(Object, String, Object, Object, int);
+    method public int getIndex();
+  }
+
+  public class PropertyChangeEvent extends java.util.EventObject {
+    ctor public PropertyChangeEvent(Object, String, Object, Object);
+    method public Object getNewValue();
+    method public Object getOldValue();
+    method public Object getPropagationId();
+    method public String getPropertyName();
+    method public void setPropagationId(Object);
+  }
+
+  public interface PropertyChangeListener extends java.util.EventListener {
+    method public void propertyChange(java.beans.PropertyChangeEvent);
+  }
+
+  public class PropertyChangeListenerProxy extends java.util.EventListenerProxy<java.beans.PropertyChangeListener> implements java.beans.PropertyChangeListener {
+    ctor public PropertyChangeListenerProxy(String, java.beans.PropertyChangeListener);
+    method public String getPropertyName();
+    method public void propertyChange(java.beans.PropertyChangeEvent);
+  }
+
+  public class PropertyChangeSupport implements java.io.Serializable {
+    ctor public PropertyChangeSupport(Object);
+    method public void addPropertyChangeListener(java.beans.PropertyChangeListener);
+    method public void addPropertyChangeListener(String, java.beans.PropertyChangeListener);
+    method public void fireIndexedPropertyChange(String, int, Object, Object);
+    method public void fireIndexedPropertyChange(String, int, int, int);
+    method public void fireIndexedPropertyChange(String, int, boolean, boolean);
+    method public void firePropertyChange(String, Object, Object);
+    method public void firePropertyChange(String, int, int);
+    method public void firePropertyChange(String, boolean, boolean);
+    method public void firePropertyChange(java.beans.PropertyChangeEvent);
+    method public java.beans.PropertyChangeListener[] getPropertyChangeListeners();
+    method public java.beans.PropertyChangeListener[] getPropertyChangeListeners(String);
+    method public boolean hasListeners(String);
+    method public void removePropertyChangeListener(java.beans.PropertyChangeListener);
+    method public void removePropertyChangeListener(String, java.beans.PropertyChangeListener);
+  }
+
+}
+
+package java.io {
+
+  public class BufferedInputStream extends java.io.FilterInputStream {
+    ctor public BufferedInputStream(java.io.InputStream);
+    ctor public BufferedInputStream(java.io.InputStream, int);
+    field protected volatile byte[] buf;
+    field protected int count;
+    field protected int marklimit;
+    field protected int markpos;
+    field protected int pos;
+  }
+
+  public class BufferedOutputStream extends java.io.FilterOutputStream {
+    ctor public BufferedOutputStream(java.io.OutputStream);
+    ctor public BufferedOutputStream(java.io.OutputStream, int);
+    field protected byte[] buf;
+    field protected int count;
+  }
+
+  public class BufferedReader extends java.io.Reader {
+    ctor public BufferedReader(java.io.Reader, int);
+    ctor public BufferedReader(java.io.Reader);
+    method public void close() throws java.io.IOException;
+    method public java.util.stream.Stream<java.lang.String> lines();
+    method public int read(char[], int, int) throws java.io.IOException;
+    method public String readLine() throws java.io.IOException;
+  }
+
+  public class BufferedWriter extends java.io.Writer {
+    ctor public BufferedWriter(java.io.Writer);
+    ctor public BufferedWriter(java.io.Writer, int);
+    method public void close() throws java.io.IOException;
+    method public void flush() throws java.io.IOException;
+    method public void newLine() throws java.io.IOException;
+    method public void write(char[], int, int) throws java.io.IOException;
+  }
+
+  public class ByteArrayInputStream extends java.io.InputStream {
+    ctor public ByteArrayInputStream(byte[]);
+    ctor public ByteArrayInputStream(byte[], int, int);
+    method public int available();
+    method public int read();
+    method public int read(byte[], int, int);
+    method public void reset();
+    method public long skip(long);
+    field protected byte[] buf;
+    field protected int count;
+    field protected int mark;
+    field protected int pos;
+  }
+
+  public class ByteArrayOutputStream extends java.io.OutputStream {
+    ctor public ByteArrayOutputStream();
+    ctor public ByteArrayOutputStream(int);
+    method public void reset();
+    method public int size();
+    method @NonNull public byte[] toByteArray();
+    method @NonNull public String toString(@NonNull String) throws java.io.UnsupportedEncodingException;
+    method @Deprecated @NonNull public String toString(int);
+    method public void write(int);
+    method public void write(@NonNull byte[], int, int);
+    method public void writeTo(@NonNull java.io.OutputStream) throws java.io.IOException;
+    field @NonNull protected byte[] buf;
+    field protected int count;
+  }
+
+  public class CharArrayReader extends java.io.Reader {
+    ctor public CharArrayReader(char[]);
+    ctor public CharArrayReader(char[], int, int);
+    method public void close();
+    method public int read(char[], int, int) throws java.io.IOException;
+    field protected char[] buf;
+    field protected int count;
+    field protected int markedPos;
+    field protected int pos;
+  }
+
+  public class CharArrayWriter extends java.io.Writer {
+    ctor public CharArrayWriter();
+    ctor public CharArrayWriter(int);
+    method public java.io.CharArrayWriter append(CharSequence);
+    method public java.io.CharArrayWriter append(CharSequence, int, int);
+    method public java.io.CharArrayWriter append(char);
+    method public void close();
+    method public void flush();
+    method public void reset();
+    method public int size();
+    method public char[] toCharArray();
+    method public void write(int);
+    method public void write(char[], int, int);
+    method public void write(String, int, int);
+    method public void writeTo(java.io.Writer) throws java.io.IOException;
+    field protected char[] buf;
+    field protected int count;
+  }
+
+  public class CharConversionException extends java.io.IOException {
+    ctor public CharConversionException();
+    ctor public CharConversionException(String);
+  }
+
+  public interface Closeable extends java.lang.AutoCloseable {
+    method public void close() throws java.io.IOException;
+  }
+
+  public final class Console implements java.io.Flushable {
+    method public void flush();
+    method public java.io.Console format(String, java.lang.Object...);
+    method public java.io.Console printf(String, java.lang.Object...);
+    method public String readLine(String, java.lang.Object...);
+    method public String readLine();
+    method public char[] readPassword(String, java.lang.Object...);
+    method public char[] readPassword();
+    method public java.io.Reader reader();
+    method public java.io.PrintWriter writer();
+  }
+
+  public interface DataInput {
+    method public boolean readBoolean() throws java.io.IOException;
+    method public byte readByte() throws java.io.IOException;
+    method public char readChar() throws java.io.IOException;
+    method public double readDouble() throws java.io.IOException;
+    method public float readFloat() throws java.io.IOException;
+    method public void readFully(byte[]) throws java.io.IOException;
+    method public void readFully(byte[], int, int) throws java.io.IOException;
+    method public int readInt() throws java.io.IOException;
+    method public String readLine() throws java.io.IOException;
+    method public long readLong() throws java.io.IOException;
+    method public short readShort() throws java.io.IOException;
+    method public String readUTF() throws java.io.IOException;
+    method public int readUnsignedByte() throws java.io.IOException;
+    method public int readUnsignedShort() throws java.io.IOException;
+    method public int skipBytes(int) throws java.io.IOException;
+  }
+
+  public class DataInputStream extends java.io.FilterInputStream implements java.io.DataInput {
+    ctor public DataInputStream(java.io.InputStream);
+    method public final int read(byte[]) throws java.io.IOException;
+    method public final int read(byte[], int, int) throws java.io.IOException;
+    method public final boolean readBoolean() throws java.io.IOException;
+    method public final byte readByte() throws java.io.IOException;
+    method public final char readChar() throws java.io.IOException;
+    method public final double readDouble() throws java.io.IOException;
+    method public final float readFloat() throws java.io.IOException;
+    method public final void readFully(byte[]) throws java.io.IOException;
+    method public final void readFully(byte[], int, int) throws java.io.IOException;
+    method public final int readInt() throws java.io.IOException;
+    method @Deprecated public final String readLine() throws java.io.IOException;
+    method public final long readLong() throws java.io.IOException;
+    method public final short readShort() throws java.io.IOException;
+    method public final String readUTF() throws java.io.IOException;
+    method public static final String readUTF(java.io.DataInput) throws java.io.IOException;
+    method public final int readUnsignedByte() throws java.io.IOException;
+    method public final int readUnsignedShort() throws java.io.IOException;
+    method public final int skipBytes(int) throws java.io.IOException;
+  }
+
+  public interface DataOutput {
+    method public void write(int) throws java.io.IOException;
+    method public void write(byte[]) throws java.io.IOException;
+    method public void write(byte[], int, int) throws java.io.IOException;
+    method public void writeBoolean(boolean) throws java.io.IOException;
+    method public void writeByte(int) throws java.io.IOException;
+    method public void writeBytes(String) throws java.io.IOException;
+    method public void writeChar(int) throws java.io.IOException;
+    method public void writeChars(String) throws java.io.IOException;
+    method public void writeDouble(double) throws java.io.IOException;
+    method public void writeFloat(float) throws java.io.IOException;
+    method public void writeInt(int) throws java.io.IOException;
+    method public void writeLong(long) throws java.io.IOException;
+    method public void writeShort(int) throws java.io.IOException;
+    method public void writeUTF(String) throws java.io.IOException;
+  }
+
+  public class DataOutputStream extends java.io.FilterOutputStream implements java.io.DataOutput {
+    ctor public DataOutputStream(java.io.OutputStream);
+    method public final int size();
+    method public final void writeBoolean(boolean) throws java.io.IOException;
+    method public final void writeByte(int) throws java.io.IOException;
+    method public final void writeBytes(String) throws java.io.IOException;
+    method public final void writeChar(int) throws java.io.IOException;
+    method public final void writeChars(String) throws java.io.IOException;
+    method public final void writeDouble(double) throws java.io.IOException;
+    method public final void writeFloat(float) throws java.io.IOException;
+    method public final void writeInt(int) throws java.io.IOException;
+    method public final void writeLong(long) throws java.io.IOException;
+    method public final void writeShort(int) throws java.io.IOException;
+    method public final void writeUTF(String) throws java.io.IOException;
+    field protected int written;
+  }
+
+  public class EOFException extends java.io.IOException {
+    ctor public EOFException();
+    ctor public EOFException(String);
+  }
+
+  public interface Externalizable extends java.io.Serializable {
+    method public void readExternal(java.io.ObjectInput) throws java.lang.ClassNotFoundException, java.io.IOException;
+    method public void writeExternal(java.io.ObjectOutput) throws java.io.IOException;
+  }
+
+  public class File implements java.lang.Comparable<java.io.File> java.io.Serializable {
+    ctor public File(@NonNull String);
+    ctor public File(@Nullable String, @NonNull String);
+    ctor public File(@Nullable java.io.File, @NonNull String);
+    ctor public File(@NonNull java.net.URI);
+    method public boolean canExecute();
+    method public boolean canRead();
+    method public boolean canWrite();
+    method public int compareTo(@NonNull java.io.File);
+    method public boolean createNewFile() throws java.io.IOException;
+    method @NonNull public static java.io.File createTempFile(@NonNull String, @Nullable String, @Nullable java.io.File) throws java.io.IOException;
+    method @NonNull public static java.io.File createTempFile(@NonNull String, @Nullable String) throws java.io.IOException;
+    method public boolean delete();
+    method public void deleteOnExit();
+    method public boolean exists();
+    method @NonNull public java.io.File getAbsoluteFile();
+    method @NonNull public String getAbsolutePath();
+    method @NonNull public java.io.File getCanonicalFile() throws java.io.IOException;
+    method @NonNull public String getCanonicalPath() throws java.io.IOException;
+    method public long getFreeSpace();
+    method @NonNull public String getName();
+    method @Nullable public String getParent();
+    method @Nullable public java.io.File getParentFile();
+    method @NonNull public String getPath();
+    method public long getTotalSpace();
+    method public long getUsableSpace();
+    method public boolean isAbsolute();
+    method public boolean isDirectory();
+    method public boolean isFile();
+    method public boolean isHidden();
+    method public long lastModified();
+    method public long length();
+    method @Nullable public String[] list();
+    method @Nullable public String[] list(@Nullable java.io.FilenameFilter);
+    method @Nullable public java.io.File[] listFiles();
+    method @Nullable public java.io.File[] listFiles(@Nullable java.io.FilenameFilter);
+    method @Nullable public java.io.File[] listFiles(@Nullable java.io.FileFilter);
+    method @NonNull public static java.io.File[] listRoots();
+    method public boolean mkdir();
+    method public boolean mkdirs();
+    method public boolean renameTo(@NonNull java.io.File);
+    method public boolean setExecutable(boolean, boolean);
+    method public boolean setExecutable(boolean);
+    method public boolean setLastModified(long);
+    method public boolean setReadOnly();
+    method public boolean setReadable(boolean, boolean);
+    method public boolean setReadable(boolean);
+    method public boolean setWritable(boolean, boolean);
+    method public boolean setWritable(boolean);
+    method @NonNull public java.nio.file.Path toPath();
+    method @NonNull public java.net.URI toURI();
+    method @Deprecated @NonNull public java.net.URL toURL() throws java.net.MalformedURLException;
+    field @NonNull public static final String pathSeparator;
+    field public static final char pathSeparatorChar;
+    field @NonNull public static final String separator;
+    field public static final char separatorChar;
+  }
+
+  public final class FileDescriptor {
+    ctor public FileDescriptor();
+    method public void sync() throws java.io.SyncFailedException;
+    method public boolean valid();
+    field public static final java.io.FileDescriptor err;
+    field public static final java.io.FileDescriptor in;
+    field public static final java.io.FileDescriptor out;
+  }
+
+  @java.lang.FunctionalInterface public interface FileFilter {
+    method public boolean accept(java.io.File);
+  }
+
+  public class FileInputStream extends java.io.InputStream {
+    ctor public FileInputStream(String) throws java.io.FileNotFoundException;
+    ctor public FileInputStream(java.io.File) throws java.io.FileNotFoundException;
+    ctor public FileInputStream(java.io.FileDescriptor);
+    method protected void finalize() throws java.io.IOException;
+    method public java.nio.channels.FileChannel getChannel();
+    method public final java.io.FileDescriptor getFD() throws java.io.IOException;
+    method public int read() throws java.io.IOException;
+  }
+
+  public class FileNotFoundException extends java.io.IOException {
+    ctor public FileNotFoundException();
+    ctor public FileNotFoundException(String);
+  }
+
+  public class FileOutputStream extends java.io.OutputStream {
+    ctor public FileOutputStream(String) throws java.io.FileNotFoundException;
+    ctor public FileOutputStream(String, boolean) throws java.io.FileNotFoundException;
+    ctor public FileOutputStream(java.io.File) throws java.io.FileNotFoundException;
+    ctor public FileOutputStream(java.io.File, boolean) throws java.io.FileNotFoundException;
+    ctor public FileOutputStream(java.io.FileDescriptor);
+    method protected void finalize() throws java.io.IOException;
+    method public java.nio.channels.FileChannel getChannel();
+    method public final java.io.FileDescriptor getFD() throws java.io.IOException;
+    method public void write(int) throws java.io.IOException;
+  }
+
+  public final class FilePermission extends java.security.Permission implements java.io.Serializable {
+    ctor public FilePermission(String, String);
+    method public String getActions();
+    method public boolean implies(java.security.Permission);
+  }
+
+  public class FileReader extends java.io.InputStreamReader {
+    ctor public FileReader(String) throws java.io.FileNotFoundException;
+    ctor public FileReader(java.io.File) throws java.io.FileNotFoundException;
+    ctor public FileReader(java.io.FileDescriptor);
+  }
+
+  public class FileWriter extends java.io.OutputStreamWriter {
+    ctor public FileWriter(String) throws java.io.IOException;
+    ctor public FileWriter(String, boolean) throws java.io.IOException;
+    ctor public FileWriter(java.io.File) throws java.io.IOException;
+    ctor public FileWriter(java.io.File, boolean) throws java.io.IOException;
+    ctor public FileWriter(java.io.FileDescriptor);
+  }
+
+  @java.lang.FunctionalInterface public interface FilenameFilter {
+    method public boolean accept(java.io.File, String);
+  }
+
+  public class FilterInputStream extends java.io.InputStream {
+    ctor protected FilterInputStream(java.io.InputStream);
+    method public int read() throws java.io.IOException;
+    field protected volatile java.io.InputStream in;
+  }
+
+  public class FilterOutputStream extends java.io.OutputStream {
+    ctor public FilterOutputStream(java.io.OutputStream);
+    method public void write(int) throws java.io.IOException;
+    field protected java.io.OutputStream out;
+  }
+
+  public abstract class FilterReader extends java.io.Reader {
+    ctor protected FilterReader(java.io.Reader);
+    method public void close() throws java.io.IOException;
+    method public int read(char[], int, int) throws java.io.IOException;
+    field protected java.io.Reader in;
+  }
+
+  public abstract class FilterWriter extends java.io.Writer {
+    ctor protected FilterWriter(java.io.Writer);
+    method public void close() throws java.io.IOException;
+    method public void flush() throws java.io.IOException;
+    method public void write(char[], int, int) throws java.io.IOException;
+    field protected java.io.Writer out;
+  }
+
+  public interface Flushable {
+    method public void flush() throws java.io.IOException;
+  }
+
+  public class IOError extends java.lang.Error {
+    ctor public IOError(Throwable);
+  }
+
+  public class IOException extends java.lang.Exception {
+    ctor public IOException();
+    ctor public IOException(String);
+    ctor public IOException(String, Throwable);
+    ctor public IOException(Throwable);
+  }
+
+  public abstract class InputStream implements java.io.Closeable {
+    ctor public InputStream();
+    method public int available() throws java.io.IOException;
+    method public void close() throws java.io.IOException;
+    method public void mark(int);
+    method public boolean markSupported();
+    method public abstract int read() throws java.io.IOException;
+    method public int read(byte[]) throws java.io.IOException;
+    method public int read(byte[], int, int) throws java.io.IOException;
+    method public void reset() throws java.io.IOException;
+    method public long skip(long) throws java.io.IOException;
+  }
+
+  public class InputStreamReader extends java.io.Reader {
+    ctor public InputStreamReader(java.io.InputStream);
+    ctor public InputStreamReader(java.io.InputStream, String) throws java.io.UnsupportedEncodingException;
+    ctor public InputStreamReader(java.io.InputStream, java.nio.charset.Charset);
+    ctor public InputStreamReader(java.io.InputStream, java.nio.charset.CharsetDecoder);
+    method public void close() throws java.io.IOException;
+    method public String getEncoding();
+    method public int read(char[], int, int) throws java.io.IOException;
+  }
+
+  public class InterruptedIOException extends java.io.IOException {
+    ctor public InterruptedIOException();
+    ctor public InterruptedIOException(String);
+    field public int bytesTransferred;
+  }
+
+  public class InvalidClassException extends java.io.ObjectStreamException {
+    ctor public InvalidClassException(String);
+    ctor public InvalidClassException(String, String);
+    field public String classname;
+  }
+
+  public class InvalidObjectException extends java.io.ObjectStreamException {
+    ctor public InvalidObjectException(String);
+  }
+
+  @Deprecated public class LineNumberInputStream extends java.io.FilterInputStream {
+    ctor @Deprecated public LineNumberInputStream(java.io.InputStream);
+    method @Deprecated public int getLineNumber();
+    method @Deprecated public void setLineNumber(int);
+  }
+
+  public class LineNumberReader extends java.io.BufferedReader {
+    ctor public LineNumberReader(java.io.Reader);
+    ctor public LineNumberReader(java.io.Reader, int);
+    method public int getLineNumber();
+    method public void setLineNumber(int);
+  }
+
+  public class NotActiveException extends java.io.ObjectStreamException {
+    ctor public NotActiveException(String);
+    ctor public NotActiveException();
+  }
+
+  public class NotSerializableException extends java.io.ObjectStreamException {
+    ctor public NotSerializableException(String);
+    ctor public NotSerializableException();
+  }
+
+  public interface ObjectInput extends java.io.DataInput java.lang.AutoCloseable {
+    method public int available() throws java.io.IOException;
+    method public void close() throws java.io.IOException;
+    method public int read() throws java.io.IOException;
+    method public int read(byte[]) throws java.io.IOException;
+    method public int read(byte[], int, int) throws java.io.IOException;
+    method public Object readObject() throws java.lang.ClassNotFoundException, java.io.IOException;
+    method public long skip(long) throws java.io.IOException;
+  }
+
+  public class ObjectInputStream extends java.io.InputStream implements java.io.ObjectInput java.io.ObjectStreamConstants {
+    ctor public ObjectInputStream(java.io.InputStream) throws java.io.IOException;
+    ctor protected ObjectInputStream() throws java.io.IOException, java.lang.SecurityException;
+    method public void defaultReadObject() throws java.lang.ClassNotFoundException, java.io.IOException;
+    method protected boolean enableResolveObject(boolean) throws java.lang.SecurityException;
+    method public int read() throws java.io.IOException;
+    method public boolean readBoolean() throws java.io.IOException;
+    method public byte readByte() throws java.io.IOException;
+    method public char readChar() throws java.io.IOException;
+    method protected java.io.ObjectStreamClass readClassDescriptor() throws java.lang.ClassNotFoundException, java.io.IOException;
+    method public double readDouble() throws java.io.IOException;
+    method public java.io.ObjectInputStream.GetField readFields() throws java.lang.ClassNotFoundException, java.io.IOException;
+    method public float readFloat() throws java.io.IOException;
+    method public void readFully(byte[]) throws java.io.IOException;
+    method public void readFully(byte[], int, int) throws java.io.IOException;
+    method public int readInt() throws java.io.IOException;
+    method @Deprecated public String readLine() throws java.io.IOException;
+    method public long readLong() throws java.io.IOException;
+    method public final Object readObject() throws java.lang.ClassNotFoundException, java.io.IOException;
+    method protected Object readObjectOverride() throws java.lang.ClassNotFoundException, java.io.IOException;
+    method public short readShort() throws java.io.IOException;
+    method protected void readStreamHeader() throws java.io.IOException, java.io.StreamCorruptedException;
+    method public String readUTF() throws java.io.IOException;
+    method public Object readUnshared() throws java.lang.ClassNotFoundException, java.io.IOException;
+    method public int readUnsignedByte() throws java.io.IOException;
+    method public int readUnsignedShort() throws java.io.IOException;
+    method public void registerValidation(java.io.ObjectInputValidation, int) throws java.io.InvalidObjectException, java.io.NotActiveException;
+    method protected Class<?> resolveClass(java.io.ObjectStreamClass) throws java.lang.ClassNotFoundException, java.io.IOException;
+    method protected Object resolveObject(Object) throws java.io.IOException;
+    method protected Class<?> resolveProxyClass(String[]) throws java.lang.ClassNotFoundException, java.io.IOException;
+    method public int skipBytes(int) throws java.io.IOException;
+  }
+
+  public abstract static class ObjectInputStream.GetField {
+    ctor public ObjectInputStream.GetField();
+    method public abstract boolean defaulted(String) throws java.io.IOException;
+    method public abstract boolean get(String, boolean) throws java.io.IOException;
+    method public abstract byte get(String, byte) throws java.io.IOException;
+    method public abstract char get(String, char) throws java.io.IOException;
+    method public abstract short get(String, short) throws java.io.IOException;
+    method public abstract int get(String, int) throws java.io.IOException;
+    method public abstract long get(String, long) throws java.io.IOException;
+    method public abstract float get(String, float) throws java.io.IOException;
+    method public abstract double get(String, double) throws java.io.IOException;
+    method public abstract Object get(String, Object) throws java.io.IOException;
+    method public abstract java.io.ObjectStreamClass getObjectStreamClass();
+  }
+
+  public interface ObjectInputValidation {
+    method public void validateObject() throws java.io.InvalidObjectException;
+  }
+
+  public interface ObjectOutput extends java.io.DataOutput java.lang.AutoCloseable {
+    method public void close() throws java.io.IOException;
+    method public void flush() throws java.io.IOException;
+    method public void writeObject(Object) throws java.io.IOException;
+  }
+
+  public class ObjectOutputStream extends java.io.OutputStream implements java.io.ObjectOutput java.io.ObjectStreamConstants {
+    ctor public ObjectOutputStream(java.io.OutputStream) throws java.io.IOException;
+    ctor protected ObjectOutputStream() throws java.io.IOException, java.lang.SecurityException;
+    method protected void annotateClass(Class<?>) throws java.io.IOException;
+    method protected void annotateProxyClass(Class<?>) throws java.io.IOException;
+    method public void defaultWriteObject() throws java.io.IOException;
+    method protected void drain() throws java.io.IOException;
+    method protected boolean enableReplaceObject(boolean) throws java.lang.SecurityException;
+    method public java.io.ObjectOutputStream.PutField putFields() throws java.io.IOException;
+    method protected Object replaceObject(Object) throws java.io.IOException;
+    method public void reset() throws java.io.IOException;
+    method public void useProtocolVersion(int) throws java.io.IOException;
+    method public void write(int) throws java.io.IOException;
+    method public void writeBoolean(boolean) throws java.io.IOException;
+    method public void writeByte(int) throws java.io.IOException;
+    method public void writeBytes(String) throws java.io.IOException;
+    method public void writeChar(int) throws java.io.IOException;
+    method public void writeChars(String) throws java.io.IOException;
+    method protected void writeClassDescriptor(java.io.ObjectStreamClass) throws java.io.IOException;
+    method public void writeDouble(double) throws java.io.IOException;
+    method public void writeFields() throws java.io.IOException;
+    method public void writeFloat(float) throws java.io.IOException;
+    method public void writeInt(int) throws java.io.IOException;
+    method public void writeLong(long) throws java.io.IOException;
+    method public final void writeObject(Object) throws java.io.IOException;
+    method protected void writeObjectOverride(Object) throws java.io.IOException;
+    method public void writeShort(int) throws java.io.IOException;
+    method protected void writeStreamHeader() throws java.io.IOException;
+    method public void writeUTF(String) throws java.io.IOException;
+    method public void writeUnshared(Object) throws java.io.IOException;
+  }
+
+  public abstract static class ObjectOutputStream.PutField {
+    ctor public ObjectOutputStream.PutField();
+    method public abstract void put(String, boolean);
+    method public abstract void put(String, byte);
+    method public abstract void put(String, char);
+    method public abstract void put(String, short);
+    method public abstract void put(String, int);
+    method public abstract void put(String, long);
+    method public abstract void put(String, float);
+    method public abstract void put(String, double);
+    method public abstract void put(String, Object);
+    method @Deprecated public abstract void write(java.io.ObjectOutput) throws java.io.IOException;
+  }
+
+  public class ObjectStreamClass implements java.io.Serializable {
+    method public Class<?> forClass();
+    method public java.io.ObjectStreamField getField(String);
+    method public java.io.ObjectStreamField[] getFields();
+    method public String getName();
+    method public long getSerialVersionUID();
+    method public static java.io.ObjectStreamClass lookup(Class<?>);
+    method public static java.io.ObjectStreamClass lookupAny(Class<?>);
+    field public static final java.io.ObjectStreamField[] NO_FIELDS;
+  }
+
+  public interface ObjectStreamConstants {
+    field public static final int PROTOCOL_VERSION_1 = 1; // 0x1
+    field public static final int PROTOCOL_VERSION_2 = 2; // 0x2
+    field public static final byte SC_BLOCK_DATA = 8; // 0x8
+    field public static final byte SC_ENUM = 16; // 0x10
+    field public static final byte SC_EXTERNALIZABLE = 4; // 0x4
+    field public static final byte SC_SERIALIZABLE = 2; // 0x2
+    field public static final byte SC_WRITE_METHOD = 1; // 0x1
+    field public static final short STREAM_MAGIC = -21267; // 0xffffaced
+    field public static final short STREAM_VERSION = 5; // 0x5
+    field public static final java.io.SerializablePermission SUBCLASS_IMPLEMENTATION_PERMISSION;
+    field public static final java.io.SerializablePermission SUBSTITUTION_PERMISSION;
+    field public static final byte TC_ARRAY = 117; // 0x75
+    field public static final byte TC_BASE = 112; // 0x70
+    field public static final byte TC_BLOCKDATA = 119; // 0x77
+    field public static final byte TC_BLOCKDATALONG = 122; // 0x7a
+    field public static final byte TC_CLASS = 118; // 0x76
+    field public static final byte TC_CLASSDESC = 114; // 0x72
+    field public static final byte TC_ENDBLOCKDATA = 120; // 0x78
+    field public static final byte TC_ENUM = 126; // 0x7e
+    field public static final byte TC_EXCEPTION = 123; // 0x7b
+    field public static final byte TC_LONGSTRING = 124; // 0x7c
+    field public static final byte TC_MAX = 126; // 0x7e
+    field public static final byte TC_NULL = 112; // 0x70
+    field public static final byte TC_OBJECT = 115; // 0x73
+    field public static final byte TC_PROXYCLASSDESC = 125; // 0x7d
+    field public static final byte TC_REFERENCE = 113; // 0x71
+    field public static final byte TC_RESET = 121; // 0x79
+    field public static final byte TC_STRING = 116; // 0x74
+    field public static final int baseWireHandle = 8257536; // 0x7e0000
+  }
+
+  public abstract class ObjectStreamException extends java.io.IOException {
+    ctor protected ObjectStreamException(String);
+    ctor protected ObjectStreamException();
+  }
+
+  public class ObjectStreamField implements java.lang.Comparable<java.lang.Object> {
+    ctor public ObjectStreamField(String, Class<?>);
+    ctor public ObjectStreamField(String, Class<?>, boolean);
+    method public int compareTo(Object);
+    method public String getName();
+    method public int getOffset();
+    method public Class<?> getType();
+    method public char getTypeCode();
+    method public String getTypeString();
+    method public boolean isPrimitive();
+    method public boolean isUnshared();
+    method protected void setOffset(int);
+  }
+
+  public class OptionalDataException extends java.io.ObjectStreamException {
+    field public boolean eof;
+    field public int length;
+  }
+
+  public abstract class OutputStream implements java.io.Closeable java.io.Flushable {
+    ctor public OutputStream();
+    method public void close() throws java.io.IOException;
+    method public void flush() throws java.io.IOException;
+    method public abstract void write(int) throws java.io.IOException;
+    method public void write(byte[]) throws java.io.IOException;
+    method public void write(byte[], int, int) throws java.io.IOException;
+  }
+
+  public class OutputStreamWriter extends java.io.Writer {
+    ctor public OutputStreamWriter(java.io.OutputStream, String) throws java.io.UnsupportedEncodingException;
+    ctor public OutputStreamWriter(java.io.OutputStream);
+    ctor public OutputStreamWriter(java.io.OutputStream, java.nio.charset.Charset);
+    ctor public OutputStreamWriter(java.io.OutputStream, java.nio.charset.CharsetEncoder);
+    method public void close() throws java.io.IOException;
+    method public void flush() throws java.io.IOException;
+    method public String getEncoding();
+    method public void write(char[], int, int) throws java.io.IOException;
+  }
+
+  public class PipedInputStream extends java.io.InputStream {
+    ctor public PipedInputStream(java.io.PipedOutputStream) throws java.io.IOException;
+    ctor public PipedInputStream(java.io.PipedOutputStream, int) throws java.io.IOException;
+    ctor public PipedInputStream();
+    ctor public PipedInputStream(int);
+    method public void connect(java.io.PipedOutputStream) throws java.io.IOException;
+    method public int read() throws java.io.IOException;
+    method protected void receive(int) throws java.io.IOException;
+    field protected static final int PIPE_SIZE = 1024; // 0x400
+    field protected byte[] buffer;
+    field protected int in;
+    field protected int out;
+  }
+
+  public class PipedOutputStream extends java.io.OutputStream {
+    ctor public PipedOutputStream(java.io.PipedInputStream) throws java.io.IOException;
+    ctor public PipedOutputStream();
+    method public void connect(java.io.PipedInputStream) throws java.io.IOException;
+    method public void write(int) throws java.io.IOException;
+  }
+
+  public class PipedReader extends java.io.Reader {
+    ctor public PipedReader(java.io.PipedWriter) throws java.io.IOException;
+    ctor public PipedReader(java.io.PipedWriter, int) throws java.io.IOException;
+    ctor public PipedReader();
+    ctor public PipedReader(int);
+    method public void close() throws java.io.IOException;
+    method public void connect(java.io.PipedWriter) throws java.io.IOException;
+    method public int read(char[], int, int) throws java.io.IOException;
+  }
+
+  public class PipedWriter extends java.io.Writer {
+    ctor public PipedWriter(java.io.PipedReader) throws java.io.IOException;
+    ctor public PipedWriter();
+    method public void close() throws java.io.IOException;
+    method public void connect(java.io.PipedReader) throws java.io.IOException;
+    method public void flush() throws java.io.IOException;
+    method public void write(char[], int, int) throws java.io.IOException;
+  }
+
+  public class PrintStream extends java.io.FilterOutputStream implements java.lang.Appendable java.io.Closeable {
+    ctor public PrintStream(java.io.OutputStream);
+    ctor public PrintStream(java.io.OutputStream, boolean);
+    ctor public PrintStream(java.io.OutputStream, boolean, String) throws java.io.UnsupportedEncodingException;
+    ctor public PrintStream(String) throws java.io.FileNotFoundException;
+    ctor public PrintStream(String, String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
+    ctor public PrintStream(java.io.File) throws java.io.FileNotFoundException;
+    ctor public PrintStream(java.io.File, String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
+    method public java.io.PrintStream append(CharSequence);
+    method public java.io.PrintStream append(CharSequence, int, int);
+    method public java.io.PrintStream append(char);
+    method public boolean checkError();
+    method protected void clearError();
+    method public void close();
+    method public void flush();
+    method public java.io.PrintStream format(String, java.lang.Object...);
+    method public java.io.PrintStream format(java.util.Locale, String, java.lang.Object...);
+    method public void print(boolean);
+    method public void print(char);
+    method public void print(int);
+    method public void print(long);
+    method public void print(float);
+    method public void print(double);
+    method public void print(char[]);
+    method public void print(String);
+    method public void print(Object);
+    method public java.io.PrintStream printf(String, java.lang.Object...);
+    method public java.io.PrintStream printf(java.util.Locale, String, java.lang.Object...);
+    method public void println();
+    method public void println(boolean);
+    method public void println(char);
+    method public void println(int);
+    method public void println(long);
+    method public void println(float);
+    method public void println(double);
+    method public void println(char[]);
+    method public void println(String);
+    method public void println(Object);
+    method protected void setError();
+    method public void write(int);
+    method public void write(byte[], int, int);
+  }
+
+  public class PrintWriter extends java.io.Writer {
+    ctor public PrintWriter(@NonNull java.io.Writer);
+    ctor public PrintWriter(@NonNull java.io.Writer, boolean);
+    ctor public PrintWriter(@NonNull java.io.OutputStream);
+    ctor public PrintWriter(@NonNull java.io.OutputStream, boolean);
+    ctor public PrintWriter(@NonNull String) throws java.io.FileNotFoundException;
+    ctor public PrintWriter(@NonNull String, @NonNull String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
+    ctor public PrintWriter(@NonNull java.io.File) throws java.io.FileNotFoundException;
+    ctor public PrintWriter(@NonNull java.io.File, @NonNull String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
+    method @NonNull public java.io.PrintWriter append(@Nullable CharSequence);
+    method @NonNull public java.io.PrintWriter append(@Nullable CharSequence, int, int);
+    method @NonNull public java.io.PrintWriter append(char);
+    method public boolean checkError();
+    method protected void clearError();
+    method public void close();
+    method public void flush();
+    method @NonNull public java.io.PrintWriter format(@NonNull String, @NonNull java.lang.Object...);
+    method @NonNull public java.io.PrintWriter format(@Nullable java.util.Locale, @NonNull String, @NonNull java.lang.Object...);
+    method public void print(boolean);
+    method public void print(char);
+    method public void print(int);
+    method public void print(long);
+    method public void print(float);
+    method public void print(double);
+    method public void print(char[]);
+    method public void print(@Nullable String);
+    method public void print(@Nullable Object);
+    method @NonNull public java.io.PrintWriter printf(@NonNull String, @NonNull java.lang.Object...);
+    method @NonNull public java.io.PrintWriter printf(@Nullable java.util.Locale, @NonNull String, @NonNull java.lang.Object...);
+    method public void println();
+    method public void println(boolean);
+    method public void println(char);
+    method public void println(int);
+    method public void println(long);
+    method public void println(float);
+    method public void println(double);
+    method public void println(char[]);
+    method public void println(@Nullable String);
+    method public void println(@Nullable Object);
+    method protected void setError();
+    method public void write(int);
+    method public void write(char[], int, int);
+    method public void write(char[]);
+    method public void write(@NonNull String, int, int);
+    method public void write(@NonNull String);
+    field protected java.io.Writer out;
+  }
+
+  public class PushbackInputStream extends java.io.FilterInputStream {
+    ctor public PushbackInputStream(java.io.InputStream, int);
+    ctor public PushbackInputStream(java.io.InputStream);
+    method public void unread(int) throws java.io.IOException;
+    method public void unread(byte[], int, int) throws java.io.IOException;
+    method public void unread(byte[]) throws java.io.IOException;
+    field protected byte[] buf;
+    field protected int pos;
+  }
+
+  public class PushbackReader extends java.io.FilterReader {
+    ctor public PushbackReader(java.io.Reader, int);
+    ctor public PushbackReader(java.io.Reader);
+    method public void unread(int) throws java.io.IOException;
+    method public void unread(char[], int, int) throws java.io.IOException;
+    method public void unread(char[]) throws java.io.IOException;
+  }
+
+  public class RandomAccessFile implements java.io.Closeable java.io.DataInput java.io.DataOutput {
+    ctor public RandomAccessFile(String, String) throws java.io.FileNotFoundException;
+    ctor public RandomAccessFile(java.io.File, String) throws java.io.FileNotFoundException;
+    method public void close() throws java.io.IOException;
+    method public final java.nio.channels.FileChannel getChannel();
+    method public final java.io.FileDescriptor getFD() throws java.io.IOException;
+    method public long getFilePointer() throws java.io.IOException;
+    method public long length() throws java.io.IOException;
+    method public int read() throws java.io.IOException;
+    method public int read(byte[], int, int) throws java.io.IOException;
+    method public int read(byte[]) throws java.io.IOException;
+    method public final boolean readBoolean() throws java.io.IOException;
+    method public final byte readByte() throws java.io.IOException;
+    method public final char readChar() throws java.io.IOException;
+    method public final double readDouble() throws java.io.IOException;
+    method public final float readFloat() throws java.io.IOException;
+    method public final void readFully(byte[]) throws java.io.IOException;
+    method public final void readFully(byte[], int, int) throws java.io.IOException;
+    method public final int readInt() throws java.io.IOException;
+    method public final String readLine() throws java.io.IOException;
+    method public final long readLong() throws java.io.IOException;
+    method public final short readShort() throws java.io.IOException;
+    method public final String readUTF() throws java.io.IOException;
+    method public final int readUnsignedByte() throws java.io.IOException;
+    method public final int readUnsignedShort() throws java.io.IOException;
+    method public void seek(long) throws java.io.IOException;
+    method public void setLength(long) throws java.io.IOException;
+    method public int skipBytes(int) throws java.io.IOException;
+    method public void write(int) throws java.io.IOException;
+    method public void write(byte[]) throws java.io.IOException;
+    method public void write(byte[], int, int) throws java.io.IOException;
+    method public final void writeBoolean(boolean) throws java.io.IOException;
+    method public final void writeByte(int) throws java.io.IOException;
+    method public final void writeBytes(String) throws java.io.IOException;
+    method public final void writeChar(int) throws java.io.IOException;
+    method public final void writeChars(String) throws java.io.IOException;
+    method public final void writeDouble(double) throws java.io.IOException;
+    method public final void writeFloat(float) throws java.io.IOException;
+    method public final void writeInt(int) throws java.io.IOException;
+    method public final void writeLong(long) throws java.io.IOException;
+    method public final void writeShort(int) throws java.io.IOException;
+    method public final void writeUTF(String) throws java.io.IOException;
+  }
+
+  public abstract class Reader implements java.io.Closeable java.lang.Readable {
+    ctor protected Reader();
+    ctor protected Reader(Object);
+    method public void mark(int) throws java.io.IOException;
+    method public boolean markSupported();
+    method public int read(java.nio.CharBuffer) throws java.io.IOException;
+    method public int read() throws java.io.IOException;
+    method public int read(char[]) throws java.io.IOException;
+    method public abstract int read(char[], int, int) throws java.io.IOException;
+    method public boolean ready() throws java.io.IOException;
+    method public void reset() throws java.io.IOException;
+    method public long skip(long) throws java.io.IOException;
+    field protected Object lock;
+  }
+
+  public class SequenceInputStream extends java.io.InputStream {
+    ctor public SequenceInputStream(java.util.Enumeration<? extends java.io.InputStream>);
+    ctor public SequenceInputStream(java.io.InputStream, java.io.InputStream);
+    method public int read() throws java.io.IOException;
+  }
+
+  public interface Serializable {
+  }
+
+  public final class SerializablePermission extends java.security.BasicPermission {
+    ctor public SerializablePermission(String);
+    ctor public SerializablePermission(String, String);
+  }
+
+  public class StreamCorruptedException extends java.io.ObjectStreamException {
+    ctor public StreamCorruptedException(String);
+    ctor public StreamCorruptedException();
+  }
+
+  public class StreamTokenizer {
+    ctor @Deprecated public StreamTokenizer(java.io.InputStream);
+    ctor public StreamTokenizer(java.io.Reader);
+    method public void commentChar(int);
+    method public void eolIsSignificant(boolean);
+    method public int lineno();
+    method public void lowerCaseMode(boolean);
+    method public int nextToken() throws java.io.IOException;
+    method public void ordinaryChar(int);
+    method public void ordinaryChars(int, int);
+    method public void parseNumbers();
+    method public void pushBack();
+    method public void quoteChar(int);
+    method public void resetSyntax();
+    method public void slashSlashComments(boolean);
+    method public void slashStarComments(boolean);
+    method public void whitespaceChars(int, int);
+    method public void wordChars(int, int);
+    field public static final int TT_EOF = -1; // 0xffffffff
+    field public static final int TT_EOL = 10; // 0xa
+    field public static final int TT_NUMBER = -2; // 0xfffffffe
+    field public static final int TT_WORD = -3; // 0xfffffffd
+    field public double nval;
+    field public String sval;
+    field public int ttype;
+  }
+
+  @Deprecated public class StringBufferInputStream extends java.io.InputStream {
+    ctor @Deprecated public StringBufferInputStream(String);
+    method @Deprecated public int available();
+    method @Deprecated public int read();
+    method @Deprecated public int read(byte[], int, int);
+    method @Deprecated public void reset();
+    method @Deprecated public long skip(long);
+    field @Deprecated protected String buffer;
+    field @Deprecated protected int count;
+    field @Deprecated protected int pos;
+  }
+
+  public class StringReader extends java.io.Reader {
+    ctor public StringReader(String);
+    method public void close();
+    method public int read(char[], int, int) throws java.io.IOException;
+  }
+
+  public class StringWriter extends java.io.Writer {
+    ctor public StringWriter();
+    ctor public StringWriter(int);
+    method public java.io.StringWriter append(CharSequence);
+    method public java.io.StringWriter append(CharSequence, int, int);
+    method public java.io.StringWriter append(char);
+    method public void close() throws java.io.IOException;
+    method public void flush();
+    method public StringBuffer getBuffer();
+    method public void write(int);
+    method public void write(char[], int, int);
+    method public void write(String);
+    method public void write(String, int, int);
+  }
+
+  public class SyncFailedException extends java.io.IOException {
+    ctor public SyncFailedException(String);
+  }
+
+  public class UTFDataFormatException extends java.io.IOException {
+    ctor public UTFDataFormatException();
+    ctor public UTFDataFormatException(String);
+  }
+
+  public class UncheckedIOException extends java.lang.RuntimeException {
+    ctor public UncheckedIOException(String, java.io.IOException);
+    ctor public UncheckedIOException(java.io.IOException);
+    method public java.io.IOException getCause();
+  }
+
+  public class UnsupportedEncodingException extends java.io.IOException {
+    ctor public UnsupportedEncodingException();
+    ctor public UnsupportedEncodingException(String);
+  }
+
+  public class WriteAbortedException extends java.io.ObjectStreamException {
+    ctor public WriteAbortedException(String, Exception);
+    field public Exception detail;
+  }
+
+  public abstract class Writer implements java.lang.Appendable java.io.Closeable java.io.Flushable {
+    ctor protected Writer();
+    ctor protected Writer(Object);
+    method public java.io.Writer append(CharSequence) throws java.io.IOException;
+    method public java.io.Writer append(CharSequence, int, int) throws java.io.IOException;
+    method public java.io.Writer append(char) throws java.io.IOException;
+    method public void write(int) throws java.io.IOException;
+    method public void write(char[]) throws java.io.IOException;
+    method public abstract void write(char[], int, int) throws java.io.IOException;
+    method public void write(String) throws java.io.IOException;
+    method public void write(String, int, int) throws java.io.IOException;
+    field protected Object lock;
+  }
+
+}
+
+package java.lang {
+
+  public class AbstractMethodError extends java.lang.IncompatibleClassChangeError {
+    ctor public AbstractMethodError();
+    ctor public AbstractMethodError(String);
+  }
+
+  public interface Appendable {
+    method @NonNull public Appendable append(@Nullable CharSequence) throws java.io.IOException;
+    method @NonNull public Appendable append(@Nullable CharSequence, int, int) throws java.io.IOException;
+    method @NonNull public Appendable append(char) throws java.io.IOException;
+  }
+
+  public class ArithmeticException extends java.lang.RuntimeException {
+    ctor public ArithmeticException();
+    ctor public ArithmeticException(String);
+  }
+
+  public class ArrayIndexOutOfBoundsException extends java.lang.IndexOutOfBoundsException {
+    ctor public ArrayIndexOutOfBoundsException();
+    ctor public ArrayIndexOutOfBoundsException(int);
+    ctor public ArrayIndexOutOfBoundsException(String);
+  }
+
+  public class ArrayStoreException extends java.lang.RuntimeException {
+    ctor public ArrayStoreException();
+    ctor public ArrayStoreException(String);
+  }
+
+  public class AssertionError extends java.lang.Error {
+    ctor public AssertionError();
+    ctor public AssertionError(Object);
+    ctor public AssertionError(boolean);
+    ctor public AssertionError(char);
+    ctor public AssertionError(int);
+    ctor public AssertionError(long);
+    ctor public AssertionError(float);
+    ctor public AssertionError(double);
+    ctor public AssertionError(String, Throwable);
+  }
+
+  public interface AutoCloseable {
+    method public void close() throws java.lang.Exception;
+  }
+
+  public final class Boolean implements java.lang.Comparable<java.lang.Boolean> java.io.Serializable {
+    ctor public Boolean(boolean);
+    ctor public Boolean(@Nullable String);
+    method public boolean booleanValue();
+    method public static int compare(boolean, boolean);
+    method public int compareTo(@NonNull Boolean);
+    method public static boolean getBoolean(@NonNull String);
+    method public static int hashCode(boolean);
+    method public static boolean logicalAnd(boolean, boolean);
+    method public static boolean logicalOr(boolean, boolean);
+    method public static boolean logicalXor(boolean, boolean);
+    method public static boolean parseBoolean(@Nullable String);
+    method @NonNull public static String toString(boolean);
+    method @NonNull public static Boolean valueOf(boolean);
+    method @NonNull public static Boolean valueOf(@Nullable String);
+    field public static final Boolean FALSE;
+    field public static final Boolean TRUE;
+    field public static final Class<java.lang.Boolean> TYPE;
+  }
+
+  public class BootstrapMethodError extends java.lang.LinkageError {
+    ctor public BootstrapMethodError();
+    ctor public BootstrapMethodError(String);
+    ctor public BootstrapMethodError(String, Throwable);
+    ctor public BootstrapMethodError(Throwable);
+  }
+
+  public final class Byte extends java.lang.Number implements java.lang.Comparable<java.lang.Byte> {
+    ctor public Byte(byte);
+    ctor public Byte(@NonNull String) throws java.lang.NumberFormatException;
+    method public static int compare(byte, byte);
+    method public int compareTo(@NonNull Byte);
+    method @NonNull public static Byte decode(@NonNull String) throws java.lang.NumberFormatException;
+    method public double doubleValue();
+    method public float floatValue();
+    method public static int hashCode(byte);
+    method public int intValue();
+    method public long longValue();
+    method public static byte parseByte(@NonNull String, int) throws java.lang.NumberFormatException;
+    method public static byte parseByte(@NonNull String) throws java.lang.NumberFormatException;
+    method @NonNull public static String toString(byte);
+    method public static int toUnsignedInt(byte);
+    method public static long toUnsignedLong(byte);
+    method @NonNull public static Byte valueOf(byte);
+    method @NonNull public static Byte valueOf(@NonNull String, int) throws java.lang.NumberFormatException;
+    method @NonNull public static Byte valueOf(@NonNull String) throws java.lang.NumberFormatException;
+    field public static final int BYTES = 1; // 0x1
+    field public static final byte MAX_VALUE = 127; // 0x7f
+    field public static final byte MIN_VALUE = -128; // 0xffffff80
+    field public static final int SIZE = 8; // 0x8
+    field public static final Class<java.lang.Byte> TYPE;
+  }
+
+  public interface CharSequence {
+    method public char charAt(int);
+    method @NonNull public default java.util.stream.IntStream chars();
+    method @NonNull public default java.util.stream.IntStream codePoints();
+    method public int length();
+    method @NonNull public CharSequence subSequence(int, int);
+    method @NonNull public String toString();
+  }
+
+  public final class Character implements java.lang.Comparable<java.lang.Character> java.io.Serializable {
+    ctor public Character(char);
+    method public static int charCount(int);
+    method public char charValue();
+    method public static int codePointAt(@NonNull CharSequence, int);
+    method public static int codePointAt(char[], int);
+    method public static int codePointAt(char[], int, int);
+    method public static int codePointBefore(@NonNull CharSequence, int);
+    method public static int codePointBefore(char[], int);
+    method public static int codePointBefore(char[], int, int);
+    method public static int codePointCount(@NonNull CharSequence, int, int);
+    method public static int codePointCount(char[], int, int);
+    method public static int compare(char, char);
+    method public int compareTo(@NonNull Character);
+    method public static int digit(char, int);
+    method public static int digit(int, int);
+    method public static char forDigit(int, int);
+    method public static byte getDirectionality(char);
+    method public static byte getDirectionality(int);
+    method @Nullable public static String getName(int);
+    method public static int getNumericValue(char);
+    method public static int getNumericValue(int);
+    method public static int getType(char);
+    method public static int getType(int);
+    method public static int hashCode(char);
+    method public static char highSurrogate(int);
+    method public static boolean isAlphabetic(int);
+    method public static boolean isBmpCodePoint(int);
+    method public static boolean isDefined(char);
+    method public static boolean isDefined(int);
+    method public static boolean isDigit(char);
+    method public static boolean isDigit(int);
+    method public static boolean isHighSurrogate(char);
+    method public static boolean isISOControl(char);
+    method public static boolean isISOControl(int);
+    method public static boolean isIdentifierIgnorable(char);
+    method public static boolean isIdentifierIgnorable(int);
+    method public static boolean isIdeographic(int);
+    method public static boolean isJavaIdentifierPart(char);
+    method public static boolean isJavaIdentifierPart(int);
+    method public static boolean isJavaIdentifierStart(char);
+    method public static boolean isJavaIdentifierStart(int);
+    method @Deprecated public static boolean isJavaLetter(char);
+    method @Deprecated public static boolean isJavaLetterOrDigit(char);
+    method public static boolean isLetter(char);
+    method public static boolean isLetter(int);
+    method public static boolean isLetterOrDigit(char);
+    method public static boolean isLetterOrDigit(int);
+    method public static boolean isLowSurrogate(char);
+    method public static boolean isLowerCase(char);
+    method public static boolean isLowerCase(int);
+    method public static boolean isMirrored(char);
+    method public static boolean isMirrored(int);
+    method @Deprecated public static boolean isSpace(char);
+    method public static boolean isSpaceChar(char);
+    method public static boolean isSpaceChar(int);
+    method public static boolean isSupplementaryCodePoint(int);
+    method public static boolean isSurrogate(char);
+    method public static boolean isSurrogatePair(char, char);
+    method public static boolean isTitleCase(char);
+    method public static boolean isTitleCase(int);
+    method public static boolean isUnicodeIdentifierPart(char);
+    method public static boolean isUnicodeIdentifierPart(int);
+    method public static boolean isUnicodeIdentifierStart(char);
+    method public static boolean isUnicodeIdentifierStart(int);
+    method public static boolean isUpperCase(char);
+    method public static boolean isUpperCase(int);
+    method public static boolean isValidCodePoint(int);
+    method public static boolean isWhitespace(char);
+    method public static boolean isWhitespace(int);
+    method public static char lowSurrogate(int);
+    method public static int offsetByCodePoints(@NonNull CharSequence, int, int);
+    method public static int offsetByCodePoints(char[], int, int, int, int);
+    method public static char reverseBytes(char);
+    method public static int toChars(int, char[], int);
+    method public static char[] toChars(int);
+    method public static int toCodePoint(char, char);
+    method public static char toLowerCase(char);
+    method public static int toLowerCase(int);
+    method @NonNull public static String toString(char);
+    method public static char toTitleCase(char);
+    method public static int toTitleCase(int);
+    method public static char toUpperCase(char);
+    method public static int toUpperCase(int);
+    method @NonNull public static Character valueOf(char);
+    field public static final int BYTES = 2; // 0x2
+    field public static final byte COMBINING_SPACING_MARK = 8; // 0x8
+    field public static final byte CONNECTOR_PUNCTUATION = 23; // 0x17
+    field public static final byte CONTROL = 15; // 0xf
+    field public static final byte CURRENCY_SYMBOL = 26; // 0x1a
+    field public static final byte DASH_PUNCTUATION = 20; // 0x14
+    field public static final byte DECIMAL_DIGIT_NUMBER = 9; // 0x9
+    field public static final byte DIRECTIONALITY_ARABIC_NUMBER = 6; // 0x6
+    field public static final byte DIRECTIONALITY_BOUNDARY_NEUTRAL = 9; // 0x9
+    field public static final byte DIRECTIONALITY_COMMON_NUMBER_SEPARATOR = 7; // 0x7
+    field public static final byte DIRECTIONALITY_EUROPEAN_NUMBER = 3; // 0x3
+    field public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR = 4; // 0x4
+    field public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR = 5; // 0x5
+    field public static final byte DIRECTIONALITY_LEFT_TO_RIGHT = 0; // 0x0
+    field public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING = 14; // 0xe
+    field public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE = 15; // 0xf
+    field public static final byte DIRECTIONALITY_NONSPACING_MARK = 8; // 0x8
+    field public static final byte DIRECTIONALITY_OTHER_NEUTRALS = 13; // 0xd
+    field public static final byte DIRECTIONALITY_PARAGRAPH_SEPARATOR = 10; // 0xa
+    field public static final byte DIRECTIONALITY_POP_DIRECTIONAL_FORMAT = 18; // 0x12
+    field public static final byte DIRECTIONALITY_RIGHT_TO_LEFT = 1; // 0x1
+    field public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC = 2; // 0x2
+    field public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING = 16; // 0x10
+    field public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE = 17; // 0x11
+    field public static final byte DIRECTIONALITY_SEGMENT_SEPARATOR = 11; // 0xb
+    field public static final byte DIRECTIONALITY_UNDEFINED = -1; // 0xffffffff
+    field public static final byte DIRECTIONALITY_WHITESPACE = 12; // 0xc
+    field public static final byte ENCLOSING_MARK = 7; // 0x7
+    field public static final byte END_PUNCTUATION = 22; // 0x16
+    field public static final byte FINAL_QUOTE_PUNCTUATION = 30; // 0x1e
+    field public static final byte FORMAT = 16; // 0x10
+    field public static final byte INITIAL_QUOTE_PUNCTUATION = 29; // 0x1d
+    field public static final byte LETTER_NUMBER = 10; // 0xa
+    field public static final byte LINE_SEPARATOR = 13; // 0xd
+    field public static final byte LOWERCASE_LETTER = 2; // 0x2
+    field public static final byte MATH_SYMBOL = 25; // 0x19
+    field public static final int MAX_CODE_POINT = 1114111; // 0x10ffff
+    field public static final char MAX_HIGH_SURROGATE = 56319; // 0xdbff '\udbff'
+    field public static final char MAX_LOW_SURROGATE = 57343; // 0xdfff '\udfff'
+    field public static final int MAX_RADIX = 36; // 0x24
+    field public static final char MAX_SURROGATE = 57343; // 0xdfff '\udfff'
+    field public static final char MAX_VALUE = 65535; // 0xffff '\uffff'
+    field public static final int MIN_CODE_POINT = 0; // 0x0
+    field public static final char MIN_HIGH_SURROGATE = 55296; // 0xd800 '\ud800'
+    field public static final char MIN_LOW_SURROGATE = 56320; // 0xdc00 '\udc00'
+    field public static final int MIN_RADIX = 2; // 0x2
+    field public static final int MIN_SUPPLEMENTARY_CODE_POINT = 65536; // 0x10000
+    field public static final char MIN_SURROGATE = 55296; // 0xd800 '\ud800'
+    field public static final char MIN_VALUE = 0; // 0x0000 '\u0000'
+    field public static final byte MODIFIER_LETTER = 4; // 0x4
+    field public static final byte MODIFIER_SYMBOL = 27; // 0x1b
+    field public static final byte NON_SPACING_MARK = 6; // 0x6
+    field public static final byte OTHER_LETTER = 5; // 0x5
+    field public static final byte OTHER_NUMBER = 11; // 0xb
+    field public static final byte OTHER_PUNCTUATION = 24; // 0x18
+    field public static final byte OTHER_SYMBOL = 28; // 0x1c
+    field public static final byte PARAGRAPH_SEPARATOR = 14; // 0xe
+    field public static final byte PRIVATE_USE = 18; // 0x12
+    field public static final int SIZE = 16; // 0x10
+    field public static final byte SPACE_SEPARATOR = 12; // 0xc
+    field public static final byte START_PUNCTUATION = 21; // 0x15
+    field public static final byte SURROGATE = 19; // 0x13
+    field public static final byte TITLECASE_LETTER = 3; // 0x3
+    field public static final Class<java.lang.Character> TYPE;
+    field public static final byte UNASSIGNED = 0; // 0x0
+    field public static final byte UPPERCASE_LETTER = 1; // 0x1
+  }
+
+  public static class Character.Subset {
+    ctor protected Character.Subset(@NonNull String);
+    method public final boolean equals(@Nullable Object);
+    method public final int hashCode();
+    method @NonNull public final String toString();
+  }
+
+  public static final class Character.UnicodeBlock extends java.lang.Character.Subset {
+    method @NonNull public static java.lang.Character.UnicodeBlock forName(@NonNull String);
+    method @Nullable public static java.lang.Character.UnicodeBlock of(char);
+    method @Nullable public static java.lang.Character.UnicodeBlock of(int);
+    field public static final java.lang.Character.UnicodeBlock AEGEAN_NUMBERS;
+    field public static final java.lang.Character.UnicodeBlock ALCHEMICAL_SYMBOLS;
+    field public static final java.lang.Character.UnicodeBlock ALPHABETIC_PRESENTATION_FORMS;
+    field public static final java.lang.Character.UnicodeBlock ANCIENT_GREEK_MUSICAL_NOTATION;
+    field public static final java.lang.Character.UnicodeBlock ANCIENT_GREEK_NUMBERS;
+    field public static final java.lang.Character.UnicodeBlock ANCIENT_SYMBOLS;
+    field public static final java.lang.Character.UnicodeBlock ARABIC;
+    field public static final java.lang.Character.UnicodeBlock ARABIC_EXTENDED_A;
+    field public static final java.lang.Character.UnicodeBlock ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS;
+    field public static final java.lang.Character.UnicodeBlock ARABIC_PRESENTATION_FORMS_A;
+    field public static final java.lang.Character.UnicodeBlock ARABIC_PRESENTATION_FORMS_B;
+    field public static final java.lang.Character.UnicodeBlock ARABIC_SUPPLEMENT;
+    field public static final java.lang.Character.UnicodeBlock ARMENIAN;
+    field public static final java.lang.Character.UnicodeBlock ARROWS;
+    field public static final java.lang.Character.UnicodeBlock AVESTAN;
+    field public static final java.lang.Character.UnicodeBlock BALINESE;
+    field public static final java.lang.Character.UnicodeBlock BAMUM;
+    field public static final java.lang.Character.UnicodeBlock BAMUM_SUPPLEMENT;
+    field public static final java.lang.Character.UnicodeBlock BASIC_LATIN;
+    field public static final java.lang.Character.UnicodeBlock BATAK;
+    field public static final java.lang.Character.UnicodeBlock BENGALI;
+    field public static final java.lang.Character.UnicodeBlock BLOCK_ELEMENTS;
+    field public static final java.lang.Character.UnicodeBlock BOPOMOFO;
+    field public static final java.lang.Character.UnicodeBlock BOPOMOFO_EXTENDED;
+    field public static final java.lang.Character.UnicodeBlock BOX_DRAWING;
+    field public static final java.lang.Character.UnicodeBlock BRAHMI;
+    field public static final java.lang.Character.UnicodeBlock BRAILLE_PATTERNS;
+    field public static final java.lang.Character.UnicodeBlock BUGINESE;
+    field public static final java.lang.Character.UnicodeBlock BUHID;
+    field public static final java.lang.Character.UnicodeBlock BYZANTINE_MUSICAL_SYMBOLS;
+    field public static final java.lang.Character.UnicodeBlock CARIAN;
+    field public static final java.lang.Character.UnicodeBlock CHAKMA;
+    field public static final java.lang.Character.UnicodeBlock CHAM;
+    field public static final java.lang.Character.UnicodeBlock CHEROKEE;
+    field public static final java.lang.Character.UnicodeBlock CJK_COMPATIBILITY;
+    field public static final java.lang.Character.UnicodeBlock CJK_COMPATIBILITY_FORMS;
+    field public static final java.lang.Character.UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS;
+    field public static final java.lang.Character.UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT;
+    field public static final java.lang.Character.UnicodeBlock CJK_RADICALS_SUPPLEMENT;
+    field public static final java.lang.Character.UnicodeBlock CJK_STROKES;
+    field public static final java.lang.Character.UnicodeBlock CJK_SYMBOLS_AND_PUNCTUATION;
+    field public static final java.lang.Character.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS;
+    field public static final java.lang.Character.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A;
+    field public static final java.lang.Character.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B;
+    field public static final java.lang.Character.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C;
+    field public static final java.lang.Character.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D;
+    field public static final java.lang.Character.UnicodeBlock COMBINING_DIACRITICAL_MARKS;
+    field public static final java.lang.Character.UnicodeBlock COMBINING_DIACRITICAL_MARKS_SUPPLEMENT;
+    field public static final java.lang.Character.UnicodeBlock COMBINING_HALF_MARKS;
+    field public static final java.lang.Character.UnicodeBlock COMBINING_MARKS_FOR_SYMBOLS;
+    field public static final java.lang.Character.UnicodeBlock COMMON_INDIC_NUMBER_FORMS;
+    field public static final java.lang.Character.UnicodeBlock CONTROL_PICTURES;
+    field public static final java.lang.Character.UnicodeBlock COPTIC;
+    field public static final java.lang.Character.UnicodeBlock COUNTING_ROD_NUMERALS;
+    field public static final java.lang.Character.UnicodeBlock CUNEIFORM;
+    field public static final java.lang.Character.UnicodeBlock CUNEIFORM_NUMBERS_AND_PUNCTUATION;
+    field public static final java.lang.Character.UnicodeBlock CURRENCY_SYMBOLS;
+    field public static final java.lang.Character.UnicodeBlock CYPRIOT_SYLLABARY;
+    field public static final java.lang.Character.UnicodeBlock CYRILLIC;
+    field public static final java.lang.Character.UnicodeBlock CYRILLIC_EXTENDED_A;
+    field public static final java.lang.Character.UnicodeBlock CYRILLIC_EXTENDED_B;
+    field public static final java.lang.Character.UnicodeBlock CYRILLIC_SUPPLEMENTARY;
+    field public static final java.lang.Character.UnicodeBlock DESERET;
+    field public static final java.lang.Character.UnicodeBlock DEVANAGARI;
+    field public static final java.lang.Character.UnicodeBlock DEVANAGARI_EXTENDED;
+    field public static final java.lang.Character.UnicodeBlock DINGBATS;
+    field public static final java.lang.Character.UnicodeBlock DOMINO_TILES;
+    field public static final java.lang.Character.UnicodeBlock EGYPTIAN_HIEROGLYPHS;
+    field public static final java.lang.Character.UnicodeBlock EMOTICONS;
+    field public static final java.lang.Character.UnicodeBlock ENCLOSED_ALPHANUMERICS;
+    field public static final java.lang.Character.UnicodeBlock ENCLOSED_ALPHANUMERIC_SUPPLEMENT;
+    field public static final java.lang.Character.UnicodeBlock ENCLOSED_CJK_LETTERS_AND_MONTHS;
+    field public static final java.lang.Character.UnicodeBlock ENCLOSED_IDEOGRAPHIC_SUPPLEMENT;
+    field public static final java.lang.Character.UnicodeBlock ETHIOPIC;
+    field public static final java.lang.Character.UnicodeBlock ETHIOPIC_EXTENDED;
+    field public static final java.lang.Character.UnicodeBlock ETHIOPIC_EXTENDED_A;
+    field public static final java.lang.Character.UnicodeBlock ETHIOPIC_SUPPLEMENT;
+    field public static final java.lang.Character.UnicodeBlock GENERAL_PUNCTUATION;
+    field public static final java.lang.Character.UnicodeBlock GEOMETRIC_SHAPES;
+    field public static final java.lang.Character.UnicodeBlock GEORGIAN;
+    field public static final java.lang.Character.UnicodeBlock GEORGIAN_SUPPLEMENT;
+    field public static final java.lang.Character.UnicodeBlock GLAGOLITIC;
+    field public static final java.lang.Character.UnicodeBlock GOTHIC;
+    field public static final java.lang.Character.UnicodeBlock GREEK;
+    field public static final java.lang.Character.UnicodeBlock GREEK_EXTENDED;
+    field public static final java.lang.Character.UnicodeBlock GUJARATI;
+    field public static final java.lang.Character.UnicodeBlock GURMUKHI;
+    field public static final java.lang.Character.UnicodeBlock HALFWIDTH_AND_FULLWIDTH_FORMS;
+    field public static final java.lang.Character.UnicodeBlock HANGUL_COMPATIBILITY_JAMO;
+    field public static final java.lang.Character.UnicodeBlock HANGUL_JAMO;
+    field public static final java.lang.Character.UnicodeBlock HANGUL_JAMO_EXTENDED_A;
+    field public static final java.lang.Character.UnicodeBlock HANGUL_JAMO_EXTENDED_B;
+    field public static final java.lang.Character.UnicodeBlock HANGUL_SYLLABLES;
+    field public static final java.lang.Character.UnicodeBlock HANUNOO;
+    field public static final java.lang.Character.UnicodeBlock HEBREW;
+    field public static final java.lang.Character.UnicodeBlock HIGH_PRIVATE_USE_SURROGATES;
+    field public static final java.lang.Character.UnicodeBlock HIGH_SURROGATES;
+    field public static final java.lang.Character.UnicodeBlock HIRAGANA;
+    field public static final java.lang.Character.UnicodeBlock IDEOGRAPHIC_DESCRIPTION_CHARACTERS;
+    field public static final java.lang.Character.UnicodeBlock IMPERIAL_ARAMAIC;
+    field public static final java.lang.Character.UnicodeBlock INSCRIPTIONAL_PAHLAVI;
+    field public static final java.lang.Character.UnicodeBlock INSCRIPTIONAL_PARTHIAN;
+    field public static final java.lang.Character.UnicodeBlock IPA_EXTENSIONS;
+    field public static final java.lang.Character.UnicodeBlock JAVANESE;
+    field public static final java.lang.Character.UnicodeBlock KAITHI;
+    field public static final java.lang.Character.UnicodeBlock KANA_SUPPLEMENT;
+    field public static final java.lang.Character.UnicodeBlock KANBUN;
+    field public static final java.lang.Character.UnicodeBlock KANGXI_RADICALS;
+    field public static final java.lang.Character.UnicodeBlock KANNADA;
+    field public static final java.lang.Character.UnicodeBlock KATAKANA;
+    field public static final java.lang.Character.UnicodeBlock KATAKANA_PHONETIC_EXTENSIONS;
+    field public static final java.lang.Character.UnicodeBlock KAYAH_LI;
+    field public static final java.lang.Character.UnicodeBlock KHAROSHTHI;
+    field public static final java.lang.Character.UnicodeBlock KHMER;
+    field public static final java.lang.Character.UnicodeBlock KHMER_SYMBOLS;
+    field public static final java.lang.Character.UnicodeBlock LAO;
+    field public static final java.lang.Character.UnicodeBlock LATIN_1_SUPPLEMENT;
+    field public static final java.lang.Character.UnicodeBlock LATIN_EXTENDED_A;
+    field public static final java.lang.Character.UnicodeBlock LATIN_EXTENDED_ADDITIONAL;
+    field public static final java.lang.Character.UnicodeBlock LATIN_EXTENDED_B;
+    field public static final java.lang.Character.UnicodeBlock LATIN_EXTENDED_C;
+    field public static final java.lang.Character.UnicodeBlock LATIN_EXTENDED_D;
+    field public static final java.lang.Character.UnicodeBlock LEPCHA;
+    field public static final java.lang.Character.UnicodeBlock LETTERLIKE_SYMBOLS;
+    field public static final java.lang.Character.UnicodeBlock LIMBU;
+    field public static final java.lang.Character.UnicodeBlock LINEAR_B_IDEOGRAMS;
+    field public static final java.lang.Character.UnicodeBlock LINEAR_B_SYLLABARY;
+    field public static final java.lang.Character.UnicodeBlock LISU;
+    field public static final java.lang.Character.UnicodeBlock LOW_SURROGATES;
+    field public static final java.lang.Character.UnicodeBlock LYCIAN;
+    field public static final java.lang.Character.UnicodeBlock LYDIAN;
+    field public static final java.lang.Character.UnicodeBlock MAHJONG_TILES;
+    field public static final java.lang.Character.UnicodeBlock MALAYALAM;
+    field public static final java.lang.Character.UnicodeBlock MANDAIC;
+    field public static final java.lang.Character.UnicodeBlock MATHEMATICAL_ALPHANUMERIC_SYMBOLS;
+    field public static final java.lang.Character.UnicodeBlock MATHEMATICAL_OPERATORS;
+    field public static final java.lang.Character.UnicodeBlock MEETEI_MAYEK;
+    field public static final java.lang.Character.UnicodeBlock MEETEI_MAYEK_EXTENSIONS;
+    field public static final java.lang.Character.UnicodeBlock MEROITIC_CURSIVE;
+    field public static final java.lang.Character.UnicodeBlock MEROITIC_HIEROGLYPHS;
+    field public static final java.lang.Character.UnicodeBlock MIAO;
+    field public static final java.lang.Character.UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A;
+    field public static final java.lang.Character.UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B;
+    field public static final java.lang.Character.UnicodeBlock MISCELLANEOUS_SYMBOLS;
+    field public static final java.lang.Character.UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_ARROWS;
+    field public static final java.lang.Character.UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS;
+    field public static final java.lang.Character.UnicodeBlock MISCELLANEOUS_TECHNICAL;
+    field public static final java.lang.Character.UnicodeBlock MODIFIER_TONE_LETTERS;
+    field public static final java.lang.Character.UnicodeBlock MONGOLIAN;
+    field public static final java.lang.Character.UnicodeBlock MUSICAL_SYMBOLS;
+    field public static final java.lang.Character.UnicodeBlock MYANMAR;
+    field public static final java.lang.Character.UnicodeBlock MYANMAR_EXTENDED_A;
+    field public static final java.lang.Character.UnicodeBlock NEW_TAI_LUE;
+    field public static final java.lang.Character.UnicodeBlock NKO;
+    field public static final java.lang.Character.UnicodeBlock NUMBER_FORMS;
+    field public static final java.lang.Character.UnicodeBlock OGHAM;
+    field public static final java.lang.Character.UnicodeBlock OLD_ITALIC;
+    field public static final java.lang.Character.UnicodeBlock OLD_PERSIAN;
+    field public static final java.lang.Character.UnicodeBlock OLD_SOUTH_ARABIAN;
+    field public static final java.lang.Character.UnicodeBlock OLD_TURKIC;
+    field public static final java.lang.Character.UnicodeBlock OL_CHIKI;
+    field public static final java.lang.Character.UnicodeBlock OPTICAL_CHARACTER_RECOGNITION;
+    field public static final java.lang.Character.UnicodeBlock ORIYA;
+    field public static final java.lang.Character.UnicodeBlock OSMANYA;
+    field public static final java.lang.Character.UnicodeBlock PHAGS_PA;
+    field public static final java.lang.Character.UnicodeBlock PHAISTOS_DISC;
+    field public static final java.lang.Character.UnicodeBlock PHOENICIAN;
+    field public static final java.lang.Character.UnicodeBlock PHONETIC_EXTENSIONS;
+    field public static final java.lang.Character.UnicodeBlock PHONETIC_EXTENSIONS_SUPPLEMENT;
+    field public static final java.lang.Character.UnicodeBlock PLAYING_CARDS;
+    field public static final java.lang.Character.UnicodeBlock PRIVATE_USE_AREA;
+    field public static final java.lang.Character.UnicodeBlock REJANG;
+    field public static final java.lang.Character.UnicodeBlock RUMI_NUMERAL_SYMBOLS;
+    field public static final java.lang.Character.UnicodeBlock RUNIC;
+    field public static final java.lang.Character.UnicodeBlock SAMARITAN;
+    field public static final java.lang.Character.UnicodeBlock SAURASHTRA;
+    field public static final java.lang.Character.UnicodeBlock SHARADA;
+    field public static final java.lang.Character.UnicodeBlock SHAVIAN;
+    field public static final java.lang.Character.UnicodeBlock SINHALA;
+    field public static final java.lang.Character.UnicodeBlock SMALL_FORM_VARIANTS;
+    field public static final java.lang.Character.UnicodeBlock SORA_SOMPENG;
+    field public static final java.lang.Character.UnicodeBlock SPACING_MODIFIER_LETTERS;
+    field public static final java.lang.Character.UnicodeBlock SPECIALS;
+    field public static final java.lang.Character.UnicodeBlock SUNDANESE;
+    field public static final java.lang.Character.UnicodeBlock SUNDANESE_SUPPLEMENT;
+    field public static final java.lang.Character.UnicodeBlock SUPERSCRIPTS_AND_SUBSCRIPTS;
+    field public static final java.lang.Character.UnicodeBlock SUPPLEMENTAL_ARROWS_A;
+    field public static final java.lang.Character.UnicodeBlock SUPPLEMENTAL_ARROWS_B;
+    field public static final java.lang.Character.UnicodeBlock SUPPLEMENTAL_MATHEMATICAL_OPERATORS;
+    field public static final java.lang.Character.UnicodeBlock SUPPLEMENTAL_PUNCTUATION;
+    field public static final java.lang.Character.UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_A;
+    field public static final java.lang.Character.UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_B;
+    field @Deprecated public static final java.lang.Character.UnicodeBlock SURROGATES_AREA;
+    field public static final java.lang.Character.UnicodeBlock SYLOTI_NAGRI;
+    field public static final java.lang.Character.UnicodeBlock SYRIAC;
+    field public static final java.lang.Character.UnicodeBlock TAGALOG;
+    field public static final java.lang.Character.UnicodeBlock TAGBANWA;
+    field public static final java.lang.Character.UnicodeBlock TAGS;
+    field public static final java.lang.Character.UnicodeBlock TAI_LE;
+    field public static final java.lang.Character.UnicodeBlock TAI_THAM;
+    field public static final java.lang.Character.UnicodeBlock TAI_VIET;
+    field public static final java.lang.Character.UnicodeBlock TAI_XUAN_JING_SYMBOLS;
+    field public static final java.lang.Character.UnicodeBlock TAKRI;
+    field public static final java.lang.Character.UnicodeBlock TAMIL;
+    field public static final java.lang.Character.UnicodeBlock TELUGU;
+    field public static final java.lang.Character.UnicodeBlock THAANA;
+    field public static final java.lang.Character.UnicodeBlock THAI;
+    field public static final java.lang.Character.UnicodeBlock TIBETAN;
+    field public static final java.lang.Character.UnicodeBlock TIFINAGH;
+    field public static final java.lang.Character.UnicodeBlock TRANSPORT_AND_MAP_SYMBOLS;
+    field public static final java.lang.Character.UnicodeBlock UGARITIC;
+    field public static final java.lang.Character.UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS;
+    field public static final java.lang.Character.UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED;
+    field public static final java.lang.Character.UnicodeBlock VAI;
+    field public static final java.lang.Character.UnicodeBlock VARIATION_SELECTORS;
+    field public static final java.lang.Character.UnicodeBlock VARIATION_SELECTORS_SUPPLEMENT;
+    field public static final java.lang.Character.UnicodeBlock VEDIC_EXTENSIONS;
+    field public static final java.lang.Character.UnicodeBlock VERTICAL_FORMS;
+    field public static final java.lang.Character.UnicodeBlock YIJING_HEXAGRAM_SYMBOLS;
+    field public static final java.lang.Character.UnicodeBlock YI_RADICALS;
+    field public static final java.lang.Character.UnicodeBlock YI_SYLLABLES;
+  }
+
+  public enum Character.UnicodeScript {
+    method @NonNull public static java.lang.Character.UnicodeScript forName(@NonNull String);
+    method @NonNull public static java.lang.Character.UnicodeScript of(int);
+    enum_constant public static final java.lang.Character.UnicodeScript ARABIC;
+    enum_constant public static final java.lang.Character.UnicodeScript ARMENIAN;
+    enum_constant public static final java.lang.Character.UnicodeScript AVESTAN;
+    enum_constant public static final java.lang.Character.UnicodeScript BALINESE;
+    enum_constant public static final java.lang.Character.UnicodeScript BAMUM;
+    enum_constant public static final java.lang.Character.UnicodeScript BATAK;
+    enum_constant public static final java.lang.Character.UnicodeScript BENGALI;
+    enum_constant public static final java.lang.Character.UnicodeScript BOPOMOFO;
+    enum_constant public static final java.lang.Character.UnicodeScript BRAHMI;
+    enum_constant public static final java.lang.Character.UnicodeScript BRAILLE;
+    enum_constant public static final java.lang.Character.UnicodeScript BUGINESE;
+    enum_constant public static final java.lang.Character.UnicodeScript BUHID;
+    enum_constant public static final java.lang.Character.UnicodeScript CANADIAN_ABORIGINAL;
+    enum_constant public static final java.lang.Character.UnicodeScript CARIAN;
+    enum_constant public static final java.lang.Character.UnicodeScript CHAKMA;
+    enum_constant public static final java.lang.Character.UnicodeScript CHAM;
+    enum_constant public static final java.lang.Character.UnicodeScript CHEROKEE;
+    enum_constant public static final java.lang.Character.UnicodeScript COMMON;
+    enum_constant public static final java.lang.Character.UnicodeScript COPTIC;
+    enum_constant public static final java.lang.Character.UnicodeScript CUNEIFORM;
+    enum_constant public static final java.lang.Character.UnicodeScript CYPRIOT;
+    enum_constant public static final java.lang.Character.UnicodeScript CYRILLIC;
+    enum_constant public static final java.lang.Character.UnicodeScript DESERET;
+    enum_constant public static final java.lang.Character.UnicodeScript DEVANAGARI;
+    enum_constant public static final java.lang.Character.UnicodeScript EGYPTIAN_HIEROGLYPHS;
+    enum_constant public static final java.lang.Character.UnicodeScript ETHIOPIC;
+    enum_constant public static final java.lang.Character.UnicodeScript GEORGIAN;
+    enum_constant public static final java.lang.Character.UnicodeScript GLAGOLITIC;
+    enum_constant public static final java.lang.Character.UnicodeScript GOTHIC;
+    enum_constant public static final java.lang.Character.UnicodeScript GREEK;
+    enum_constant public static final java.lang.Character.UnicodeScript GUJARATI;
+    enum_constant public static final java.lang.Character.UnicodeScript GURMUKHI;
+    enum_constant public static final java.lang.Character.UnicodeScript HAN;
+    enum_constant public static final java.lang.Character.UnicodeScript HANGUL;
+    enum_constant public static final java.lang.Character.UnicodeScript HANUNOO;
+    enum_constant public static final java.lang.Character.UnicodeScript HEBREW;
+    enum_constant public static final java.lang.Character.UnicodeScript HIRAGANA;
+    enum_constant public static final java.lang.Character.UnicodeScript IMPERIAL_ARAMAIC;
+    enum_constant public static final java.lang.Character.UnicodeScript INHERITED;
+    enum_constant public static final java.lang.Character.UnicodeScript INSCRIPTIONAL_PAHLAVI;
+    enum_constant public static final java.lang.Character.UnicodeScript INSCRIPTIONAL_PARTHIAN;
+    enum_constant public static final java.lang.Character.UnicodeScript JAVANESE;
+    enum_constant public static final java.lang.Character.UnicodeScript KAITHI;
+    enum_constant public static final java.lang.Character.UnicodeScript KANNADA;
+    enum_constant public static final java.lang.Character.UnicodeScript KATAKANA;
+    enum_constant public static final java.lang.Character.UnicodeScript KAYAH_LI;
+    enum_constant public static final java.lang.Character.UnicodeScript KHAROSHTHI;
+    enum_constant public static final java.lang.Character.UnicodeScript KHMER;
+    enum_constant public static final java.lang.Character.UnicodeScript LAO;
+    enum_constant public static final java.lang.Character.UnicodeScript LATIN;
+    enum_constant public static final java.lang.Character.UnicodeScript LEPCHA;
+    enum_constant public static final java.lang.Character.UnicodeScript LIMBU;
+    enum_constant public static final java.lang.Character.UnicodeScript LINEAR_B;
+    enum_constant public static final java.lang.Character.UnicodeScript LISU;
+    enum_constant public static final java.lang.Character.UnicodeScript LYCIAN;
+    enum_constant public static final java.lang.Character.UnicodeScript LYDIAN;
+    enum_constant public static final java.lang.Character.UnicodeScript MALAYALAM;
+    enum_constant public static final java.lang.Character.UnicodeScript MANDAIC;
+    enum_constant public static final java.lang.Character.UnicodeScript MEETEI_MAYEK;
+    enum_constant public static final java.lang.Character.UnicodeScript MEROITIC_CURSIVE;
+    enum_constant public static final java.lang.Character.UnicodeScript MEROITIC_HIEROGLYPHS;
+    enum_constant public static final java.lang.Character.UnicodeScript MIAO;
+    enum_constant public static final java.lang.Character.UnicodeScript MONGOLIAN;
+    enum_constant public static final java.lang.Character.UnicodeScript MYANMAR;
+    enum_constant public static final java.lang.Character.UnicodeScript NEW_TAI_LUE;
+    enum_constant public static final java.lang.Character.UnicodeScript NKO;
+    enum_constant public static final java.lang.Character.UnicodeScript OGHAM;
+    enum_constant public static final java.lang.Character.UnicodeScript OLD_ITALIC;
+    enum_constant public static final java.lang.Character.UnicodeScript OLD_PERSIAN;
+    enum_constant public static final java.lang.Character.UnicodeScript OLD_SOUTH_ARABIAN;
+    enum_constant public static final java.lang.Character.UnicodeScript OLD_TURKIC;
+    enum_constant public static final java.lang.Character.UnicodeScript OL_CHIKI;
+    enum_constant public static final java.lang.Character.UnicodeScript ORIYA;
+    enum_constant public static final java.lang.Character.UnicodeScript OSMANYA;
+    enum_constant public static final java.lang.Character.UnicodeScript PHAGS_PA;
+    enum_constant public static final java.lang.Character.UnicodeScript PHOENICIAN;
+    enum_constant public static final java.lang.Character.UnicodeScript REJANG;
+    enum_constant public static final java.lang.Character.UnicodeScript RUNIC;
+    enum_constant public static final java.lang.Character.UnicodeScript SAMARITAN;
+    enum_constant public static final java.lang.Character.UnicodeScript SAURASHTRA;
+    enum_constant public static final java.lang.Character.UnicodeScript SHARADA;
+    enum_constant public static final java.lang.Character.UnicodeScript SHAVIAN;
+    enum_constant public static final java.lang.Character.UnicodeScript SINHALA;
+    enum_constant public static final java.lang.Character.UnicodeScript SORA_SOMPENG;
+    enum_constant public static final java.lang.Character.UnicodeScript SUNDANESE;
+    enum_constant public static final java.lang.Character.UnicodeScript SYLOTI_NAGRI;
+    enum_constant public static final java.lang.Character.UnicodeScript SYRIAC;
+    enum_constant public static final java.lang.Character.UnicodeScript TAGALOG;
+    enum_constant public static final java.lang.Character.UnicodeScript TAGBANWA;
+    enum_constant public static final java.lang.Character.UnicodeScript TAI_LE;
+    enum_constant public static final java.lang.Character.UnicodeScript TAI_THAM;
+    enum_constant public static final java.lang.Character.UnicodeScript TAI_VIET;
+    enum_constant public static final java.lang.Character.UnicodeScript TAKRI;
+    enum_constant public static final java.lang.Character.UnicodeScript TAMIL;
+    enum_constant public static final java.lang.Character.UnicodeScript TELUGU;
+    enum_constant public static final java.lang.Character.UnicodeScript THAANA;
+    enum_constant public static final java.lang.Character.UnicodeScript THAI;
+    enum_constant public static final java.lang.Character.UnicodeScript TIBETAN;
+    enum_constant public static final java.lang.Character.UnicodeScript TIFINAGH;
+    enum_constant public static final java.lang.Character.UnicodeScript UGARITIC;
+    enum_constant public static final java.lang.Character.UnicodeScript UNKNOWN;
+    enum_constant public static final java.lang.Character.UnicodeScript VAI;
+    enum_constant public static final java.lang.Character.UnicodeScript YI;
+  }
+
+  public final class Class<T> implements java.lang.reflect.AnnotatedElement java.lang.reflect.GenericDeclaration java.io.Serializable java.lang.reflect.Type {
+    method @NonNull public <U> Class<? extends U> asSubclass(@NonNull Class<U>);
+    method @Nullable public T cast(@Nullable Object);
+    method public boolean desiredAssertionStatus();
+    method @NonNull public static Class<?> forName(@NonNull String) throws java.lang.ClassNotFoundException;
+    method @NonNull public static Class<?> forName(@NonNull String, boolean, @Nullable ClassLoader) throws java.lang.ClassNotFoundException;
+    method @Nullable public <A extends java.lang.annotation.Annotation> A getAnnotation(@NonNull Class<A>);
+    method @NonNull public java.lang.annotation.Annotation[] getAnnotations();
+    method @NonNull public <A extends java.lang.annotation.Annotation> A[] getAnnotationsByType(@NonNull Class<A>);
+    method @Nullable public String getCanonicalName();
+    method @Nullable public ClassLoader getClassLoader();
+    method @NonNull public Class<?>[] getClasses();
+    method @Nullable public Class<?> getComponentType();
+    method @NonNull public java.lang.reflect.Constructor<T> getConstructor(@Nullable Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
+    method @NonNull public java.lang.reflect.Constructor<?>[] getConstructors() throws java.lang.SecurityException;
+    method @Nullable public <A extends java.lang.annotation.Annotation> A getDeclaredAnnotation(@NonNull Class<A>);
+    method @NonNull public java.lang.annotation.Annotation[] getDeclaredAnnotations();
+    method @NonNull public Class<?>[] getDeclaredClasses();
+    method @NonNull public java.lang.reflect.Constructor<T> getDeclaredConstructor(@Nullable Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
+    method @NonNull public java.lang.reflect.Constructor<?>[] getDeclaredConstructors() throws java.lang.SecurityException;
+    method @NonNull public java.lang.reflect.Field getDeclaredField(@NonNull String) throws java.lang.NoSuchFieldException;
+    method @NonNull public java.lang.reflect.Field[] getDeclaredFields();
+    method @NonNull public java.lang.reflect.Method getDeclaredMethod(@NonNull String, @Nullable Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
+    method @NonNull public java.lang.reflect.Method[] getDeclaredMethods() throws java.lang.SecurityException;
+    method @Nullable public Class<?> getDeclaringClass();
+    method @Nullable public Class<?> getEnclosingClass();
+    method @Nullable public java.lang.reflect.Constructor<?> getEnclosingConstructor();
+    method @Nullable public java.lang.reflect.Method getEnclosingMethod();
+    method @Nullable public T[] getEnumConstants();
+    method @NonNull public java.lang.reflect.Field getField(@NonNull String) throws java.lang.NoSuchFieldException;
+    method @NonNull public java.lang.reflect.Field[] getFields() throws java.lang.SecurityException;
+    method @NonNull public java.lang.reflect.Type[] getGenericInterfaces();
+    method @Nullable public java.lang.reflect.Type getGenericSuperclass();
+    method @NonNull public Class<?>[] getInterfaces();
+    method @NonNull public java.lang.reflect.Method getMethod(@NonNull String, @Nullable Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
+    method @NonNull public java.lang.reflect.Method[] getMethods() throws java.lang.SecurityException;
+    method public int getModifiers();
+    method @NonNull public String getName();
+    method @Nullable public Package getPackage();
+    method @Nullable public java.security.ProtectionDomain getProtectionDomain();
+    method @Nullable public java.net.URL getResource(@NonNull String);
+    method @Nullable public java.io.InputStream getResourceAsStream(@NonNull String);
+    method @Nullable public Object[] getSigners();
+    method @NonNull public String getSimpleName();
+    method @Nullable public Class<? super T> getSuperclass();
+    method @NonNull public java.lang.reflect.TypeVariable<java.lang.Class<T>>[] getTypeParameters();
+    method public boolean isAnnotation();
+    method public boolean isAnonymousClass();
+    method public boolean isArray();
+    method public boolean isAssignableFrom(@NonNull Class<?>);
+    method public boolean isEnum();
+    method public boolean isInstance(@Nullable Object);
+    method public boolean isInterface();
+    method public boolean isLocalClass();
+    method public boolean isMemberClass();
+    method public boolean isPrimitive();
+    method public boolean isSynthetic();
+    method @NonNull public T newInstance() throws java.lang.IllegalAccessException, java.lang.InstantiationException;
+    method @NonNull public String toGenericString();
+  }
+
+  public class ClassCastException extends java.lang.RuntimeException {
+    ctor public ClassCastException();
+    ctor public ClassCastException(String);
+  }
+
+  public class ClassCircularityError extends java.lang.LinkageError {
+    ctor public ClassCircularityError();
+    ctor public ClassCircularityError(String);
+  }
+
+  public class ClassFormatError extends java.lang.LinkageError {
+    ctor public ClassFormatError();
+    ctor public ClassFormatError(String);
+  }
+
+  public abstract class ClassLoader {
+    ctor protected ClassLoader(ClassLoader);
+    ctor protected ClassLoader();
+    method public void clearAssertionStatus();
+    method @Deprecated protected final Class<?> defineClass(byte[], int, int) throws java.lang.ClassFormatError;
+    method protected final Class<?> defineClass(String, byte[], int, int) throws java.lang.ClassFormatError;
+    method protected final Class<?> defineClass(String, byte[], int, int, java.security.ProtectionDomain) throws java.lang.ClassFormatError;
+    method protected final Class<?> defineClass(String, java.nio.ByteBuffer, java.security.ProtectionDomain) throws java.lang.ClassFormatError;
+    method protected Package definePackage(String, String, String, String, String, String, String, java.net.URL) throws java.lang.IllegalArgumentException;
+    method protected Class<?> findClass(String) throws java.lang.ClassNotFoundException;
+    method protected String findLibrary(String);
+    method protected final Class<?> findLoadedClass(String);
+    method protected java.net.URL findResource(String);
+    method protected java.util.Enumeration<java.net.URL> findResources(String) throws java.io.IOException;
+    method protected final Class<?> findSystemClass(String) throws java.lang.ClassNotFoundException;
+    method protected Package getPackage(String);
+    method protected Package[] getPackages();
+    method public final ClassLoader getParent();
+    method public java.net.URL getResource(String);
+    method public java.io.InputStream getResourceAsStream(String);
+    method public java.util.Enumeration<java.net.URL> getResources(String) throws java.io.IOException;
+    method public static ClassLoader getSystemClassLoader();
+    method public static java.net.URL getSystemResource(String);
+    method public static java.io.InputStream getSystemResourceAsStream(String);
+    method public static java.util.Enumeration<java.net.URL> getSystemResources(String) throws java.io.IOException;
+    method public Class<?> loadClass(String) throws java.lang.ClassNotFoundException;
+    method protected Class<?> loadClass(String, boolean) throws java.lang.ClassNotFoundException;
+    method protected static boolean registerAsParallelCapable();
+    method protected final void resolveClass(Class<?>);
+    method public void setClassAssertionStatus(String, boolean);
+    method public void setDefaultAssertionStatus(boolean);
+    method public void setPackageAssertionStatus(String, boolean);
+    method protected final void setSigners(Class<?>, Object[]);
+  }
+
+  public class ClassNotFoundException extends java.lang.ReflectiveOperationException {
+    ctor public ClassNotFoundException();
+    ctor public ClassNotFoundException(String);
+    ctor public ClassNotFoundException(String, Throwable);
+    method public Throwable getException();
+  }
+
+  public class CloneNotSupportedException extends java.lang.Exception {
+    ctor public CloneNotSupportedException();
+    ctor public CloneNotSupportedException(String);
+  }
+
+  public interface Cloneable {
+  }
+
+  public interface Comparable<T> {
+    method public int compareTo(T);
+  }
+
+  public final class Compiler {
+    method public static Object command(Object);
+    method public static boolean compileClass(Class<?>);
+    method public static boolean compileClasses(String);
+    method public static void disable();
+    method public static void enable();
+  }
+
+  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PACKAGE, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.TYPE}) public @interface Deprecated {
+  }
+
+  public final class Double extends java.lang.Number implements java.lang.Comparable<java.lang.Double> {
+    ctor public Double(double);
+    ctor public Double(@NonNull String) throws java.lang.NumberFormatException;
+    method public static int compare(double, double);
+    method public int compareTo(@NonNull Double);
+    method public static long doubleToLongBits(double);
+    method public static long doubleToRawLongBits(double);
+    method public double doubleValue();
+    method public float floatValue();
+    method public static int hashCode(double);
+    method public int intValue();
+    method public static boolean isFinite(double);
+    method public static boolean isInfinite(double);
+    method public boolean isInfinite();
+    method public static boolean isNaN(double);
+    method public boolean isNaN();
+    method public static double longBitsToDouble(long);
+    method public long longValue();
+    method public static double max(double, double);
+    method public static double min(double, double);
+    method public static double parseDouble(@NonNull String) throws java.lang.NumberFormatException;
+    method public static double sum(double, double);
+    method @NonNull public static String toHexString(double);
+    method @NonNull public static String toString(double);
+    method @NonNull public static Double valueOf(@NonNull String) throws java.lang.NumberFormatException;
+    method @NonNull public static Double valueOf(double);
+    field public static final int BYTES = 8; // 0x8
+    field public static final int MAX_EXPONENT = 1023; // 0x3ff
+    field public static final double MAX_VALUE = 1.7976931348623157E308;
+    field public static final int MIN_EXPONENT = -1022; // 0xfffffc02
+    field public static final double MIN_NORMAL = 2.2250738585072014E-308;
+    field public static final double MIN_VALUE = 4.9E-324;
+    field public static final double NEGATIVE_INFINITY = (-1.0/0.0);
+    field public static final double NaN = (0.0/0.0);
+    field public static final double POSITIVE_INFINITY = (1.0/0.0);
+    field public static final int SIZE = 64; // 0x40
+    field public static final Class<java.lang.Double> TYPE;
+  }
+
+  public abstract class Enum<E extends java.lang.Enum<E>> implements java.lang.Comparable<E> java.io.Serializable {
+    ctor protected Enum(@NonNull String, int);
+    method @NonNull protected final Object clone() throws java.lang.CloneNotSupportedException;
+    method public final int compareTo(E);
+    method public final boolean equals(@Nullable Object);
+    method protected final void finalize();
+    method @NonNull public final Class<E> getDeclaringClass();
+    method public final int hashCode();
+    method @NonNull public final String name();
+    method public final int ordinal();
+    method @NonNull public static <T extends java.lang.Enum<T>> T valueOf(@NonNull Class<T>, @NonNull String);
+  }
+
+  public class EnumConstantNotPresentException extends java.lang.RuntimeException {
+    ctor public EnumConstantNotPresentException(Class<? extends java.lang.Enum>, String);
+    method public String constantName();
+    method public Class<? extends java.lang.Enum> enumType();
+  }
+
+  public class Error extends java.lang.Throwable {
+    ctor public Error();
+    ctor public Error(String);
+    ctor public Error(String, Throwable);
+    ctor public Error(Throwable);
+    ctor protected Error(String, Throwable, boolean, boolean);
+  }
+
+  public class Exception extends java.lang.Throwable {
+    ctor public Exception();
+    ctor public Exception(String);
+    ctor public Exception(String, Throwable);
+    ctor public Exception(Throwable);
+    ctor protected Exception(String, Throwable, boolean, boolean);
+  }
+
+  public class ExceptionInInitializerError extends java.lang.LinkageError {
+    ctor public ExceptionInInitializerError();
+    ctor public ExceptionInInitializerError(Throwable);
+    ctor public ExceptionInInitializerError(String);
+    method public Throwable getException();
+  }
+
+  public final class Float extends java.lang.Number implements java.lang.Comparable<java.lang.Float> {
+    ctor public Float(float);
+    ctor public Float(double);
+    ctor public Float(@NonNull String) throws java.lang.NumberFormatException;
+    method public static int compare(float, float);
+    method public int compareTo(@NonNull Float);
+    method public double doubleValue();
+    method public static int floatToIntBits(float);
+    method public static int floatToRawIntBits(float);
+    method public float floatValue();
+    method public static int hashCode(float);
+    method public static float intBitsToFloat(int);
+    method public int intValue();
+    method public static boolean isFinite(float);
+    method public static boolean isInfinite(float);
+    method public boolean isInfinite();
+    method public static boolean isNaN(float);
+    method public boolean isNaN();
+    method public long longValue();
+    method public static float max(float, float);
+    method public static float min(float, float);
+    method public static float parseFloat(@NonNull String) throws java.lang.NumberFormatException;
+    method public static float sum(float, float);
+    method @NonNull public static String toHexString(float);
+    method @NonNull public static String toString(float);
+    method @NonNull public static Float valueOf(@NonNull String) throws java.lang.NumberFormatException;
+    method @NonNull public static Float valueOf(float);
+    field public static final int BYTES = 4; // 0x4
+    field public static final int MAX_EXPONENT = 127; // 0x7f
+    field public static final float MAX_VALUE = 3.4028235E38f;
+    field public static final int MIN_EXPONENT = -126; // 0xffffff82
+    field public static final float MIN_NORMAL = 1.17549435E-38f;
+    field public static final float MIN_VALUE = 1.4E-45f;
+    field public static final float NEGATIVE_INFINITY = (-1.0f/0.0f);
+    field public static final float NaN = (0.0f/0.0f);
+    field public static final float POSITIVE_INFINITY = (1.0f/0.0f);
+    field public static final int SIZE = 32; // 0x20
+    field public static final Class<java.lang.Float> TYPE;
+  }
+
+  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.TYPE) public @interface FunctionalInterface {
+  }
+
+  public class IllegalAccessError extends java.lang.IncompatibleClassChangeError {
+    ctor public IllegalAccessError();
+    ctor public IllegalAccessError(String);
+  }
+
+  public class IllegalAccessException extends java.lang.ReflectiveOperationException {
+    ctor public IllegalAccessException();
+    ctor public IllegalAccessException(String);
+  }
+
+  public class IllegalArgumentException extends java.lang.RuntimeException {
+    ctor public IllegalArgumentException();
+    ctor public IllegalArgumentException(String);
+    ctor public IllegalArgumentException(String, Throwable);
+    ctor public IllegalArgumentException(Throwable);
+  }
+
+  public class IllegalMonitorStateException extends java.lang.RuntimeException {
+    ctor public IllegalMonitorStateException();
+    ctor public IllegalMonitorStateException(String);
+  }
+
+  public class IllegalStateException extends java.lang.RuntimeException {
+    ctor public IllegalStateException();
+    ctor public IllegalStateException(String);
+    ctor public IllegalStateException(String, Throwable);
+    ctor public IllegalStateException(Throwable);
+  }
+
+  public class IllegalThreadStateException extends java.lang.IllegalArgumentException {
+    ctor public IllegalThreadStateException();
+    ctor public IllegalThreadStateException(String);
+  }
+
+  public class IncompatibleClassChangeError extends java.lang.LinkageError {
+    ctor public IncompatibleClassChangeError();
+    ctor public IncompatibleClassChangeError(String);
+  }
+
+  public class IndexOutOfBoundsException extends java.lang.RuntimeException {
+    ctor public IndexOutOfBoundsException();
+    ctor public IndexOutOfBoundsException(String);
+  }
+
+  public class InheritableThreadLocal<T> extends java.lang.ThreadLocal<T> {
+    ctor public InheritableThreadLocal();
+    method protected T childValue(T);
+  }
+
+  public class InstantiationError extends java.lang.IncompatibleClassChangeError {
+    ctor public InstantiationError();
+    ctor public InstantiationError(String);
+  }
+
+  public class InstantiationException extends java.lang.ReflectiveOperationException {
+    ctor public InstantiationException();
+    ctor public InstantiationException(String);
+  }
+
+  public final class Integer extends java.lang.Number implements java.lang.Comparable<java.lang.Integer> {
+    ctor public Integer(int);
+    ctor public Integer(@NonNull String) throws java.lang.NumberFormatException;
+    method public static int bitCount(int);
+    method public static int compare(int, int);
+    method public int compareTo(@NonNull Integer);
+    method public static int compareUnsigned(int, int);
+    method @NonNull public static Integer decode(@NonNull String) throws java.lang.NumberFormatException;
+    method public static int divideUnsigned(int, int);
+    method public double doubleValue();
+    method public float floatValue();
+    method @Nullable public static Integer getInteger(@NonNull String);
+    method @Nullable public static Integer getInteger(@NonNull String, int);
+    method @Nullable public static Integer getInteger(@NonNull String, @Nullable Integer);
+    method public static int hashCode(int);
+    method public static int highestOneBit(int);
+    method public int intValue();
+    method public long longValue();
+    method public static int lowestOneBit(int);
+    method public static int max(int, int);
+    method public static int min(int, int);
+    method public static int numberOfLeadingZeros(int);
+    method public static int numberOfTrailingZeros(int);
+    method public static int parseInt(@NonNull String, int) throws java.lang.NumberFormatException;
+    method public static int parseInt(@NonNull String) throws java.lang.NumberFormatException;
+    method public static int parseUnsignedInt(@NonNull String, int) throws java.lang.NumberFormatException;
+    method public static int parseUnsignedInt(@NonNull String) throws java.lang.NumberFormatException;
+    method public static int remainderUnsigned(int, int);
+    method public static int reverse(int);
+    method public static int reverseBytes(int);
+    method public static int rotateLeft(int, int);
+    method public static int rotateRight(int, int);
+    method public static int signum(int);
+    method public static int sum(int, int);
+    method @NonNull public static String toBinaryString(int);
+    method @NonNull public static String toHexString(int);
+    method @NonNull public static String toOctalString(int);
+    method @NonNull public static String toString(int, int);
+    method @NonNull public static String toString(int);
+    method public static long toUnsignedLong(int);
+    method @NonNull public static String toUnsignedString(int, int);
+    method @NonNull public static String toUnsignedString(int);
+    method @NonNull public static Integer valueOf(@NonNull String, int) throws java.lang.NumberFormatException;
+    method @NonNull public static Integer valueOf(@NonNull String) throws java.lang.NumberFormatException;
+    method @NonNull public static Integer valueOf(int);
+    field public static final int BYTES = 4; // 0x4
+    field public static final int MAX_VALUE = 2147483647; // 0x7fffffff
+    field public static final int MIN_VALUE = -2147483648; // 0x80000000
+    field public static final int SIZE = 32; // 0x20
+    field public static final Class<java.lang.Integer> TYPE;
+  }
+
+  public class InternalError extends java.lang.VirtualMachineError {
+    ctor public InternalError();
+    ctor public InternalError(String);
+    ctor public InternalError(String, Throwable);
+    ctor public InternalError(Throwable);
+  }
+
+  public class InterruptedException extends java.lang.Exception {
+    ctor public InterruptedException();
+    ctor public InterruptedException(String);
+  }
+
+  public interface Iterable<T> {
+    method public default void forEach(@NonNull java.util.function.Consumer<? super T>);
+    method @NonNull public java.util.Iterator<T> iterator();
+    method @NonNull public default java.util.Spliterator<T> spliterator();
+  }
+
+  public class LinkageError extends java.lang.Error {
+    ctor public LinkageError();
+    ctor public LinkageError(String);
+    ctor public LinkageError(String, Throwable);
+  }
+
+  public final class Long extends java.lang.Number implements java.lang.Comparable<java.lang.Long> {
+    ctor public Long(long);
+    ctor public Long(@NonNull String) throws java.lang.NumberFormatException;
+    method public static int bitCount(long);
+    method public static int compare(long, long);
+    method public int compareTo(@NonNull Long);
+    method public static int compareUnsigned(long, long);
+    method @NonNull public static Long decode(@NonNull String) throws java.lang.NumberFormatException;
+    method public static long divideUnsigned(long, long);
+    method public double doubleValue();
+    method public float floatValue();
+    method @Nullable public static Long getLong(@NonNull String);
+    method @Nullable public static Long getLong(@NonNull String, long);
+    method @Nullable public static Long getLong(@NonNull String, @Nullable Long);
+    method public static int hashCode(long);
+    method public static long highestOneBit(long);
+    method public int intValue();
+    method public long longValue();
+    method public static long lowestOneBit(long);
+    method public static long max(long, long);
+    method public static long min(long, long);
+    method public static int numberOfLeadingZeros(long);
+    method public static int numberOfTrailingZeros(long);
+    method public static long parseLong(@NonNull String, int) throws java.lang.NumberFormatException;
+    method public static long parseLong(@NonNull String) throws java.lang.NumberFormatException;
+    method public static long parseUnsignedLong(@NonNull String, int) throws java.lang.NumberFormatException;
+    method public static long parseUnsignedLong(@NonNull String) throws java.lang.NumberFormatException;
+    method public static long remainderUnsigned(long, long);
+    method public static long reverse(long);
+    method public static long reverseBytes(long);
+    method public static long rotateLeft(long, int);
+    method public static long rotateRight(long, int);
+    method public static int signum(long);
+    method public static long sum(long, long);
+    method @NonNull public static String toBinaryString(long);
+    method @NonNull public static String toHexString(long);
+    method @NonNull public static String toOctalString(long);
+    method @NonNull public static String toString(long, int);
+    method @NonNull public static String toString(long);
+    method @NonNull public static String toUnsignedString(long, int);
+    method @NonNull public static String toUnsignedString(long);
+    method @NonNull public static Long valueOf(@NonNull String, int) throws java.lang.NumberFormatException;
+    method @NonNull public static Long valueOf(@NonNull String) throws java.lang.NumberFormatException;
+    method @NonNull public static Long valueOf(long);
+    field public static final int BYTES = 8; // 0x8
+    field public static final long MAX_VALUE = 9223372036854775807L; // 0x7fffffffffffffffL
+    field public static final long MIN_VALUE = -9223372036854775808L; // 0x8000000000000000L
+    field public static final int SIZE = 64; // 0x40
+    field public static final Class<java.lang.Long> TYPE;
+  }
+
+  public final class Math {
+    method public static double IEEEremainder(double, double);
+    method public static int abs(int);
+    method public static long abs(long);
+    method public static float abs(float);
+    method public static double abs(double);
+    method public static double acos(double);
+    method public static int addExact(int, int);
+    method public static long addExact(long, long);
+    method public static double asin(double);
+    method public static double atan(double);
+    method public static double atan2(double, double);
+    method public static double cbrt(double);
+    method public static double ceil(double);
+    method public static double copySign(double, double);
+    method public static float copySign(float, float);
+    method public static double cos(double);
+    method public static double cosh(double);
+    method public static int decrementExact(int);
+    method public static long decrementExact(long);
+    method public static double exp(double);
+    method public static double expm1(double);
+    method public static double floor(double);
+    method public static int floorDiv(int, int);
+    method public static long floorDiv(long, long);
+    method public static int floorMod(int, int);
+    method public static long floorMod(long, long);
+    method public static int getExponent(float);
+    method public static int getExponent(double);
+    method public static double hypot(double, double);
+    method public static int incrementExact(int);
+    method public static long incrementExact(long);
+    method public static double log(double);
+    method public static double log10(double);
+    method public static double log1p(double);
+    method public static int max(int, int);
+    method public static long max(long, long);
+    method public static float max(float, float);
+    method public static double max(double, double);
+    method public static int min(int, int);
+    method public static long min(long, long);
+    method public static float min(float, float);
+    method public static double min(double, double);
+    method public static int multiplyExact(int, int);
+    method public static long multiplyExact(long, long);
+    method public static int negateExact(int);
+    method public static long negateExact(long);
+    method public static double nextAfter(double, double);
+    method public static float nextAfter(float, double);
+    method public static double nextDown(double);
+    method public static float nextDown(float);
+    method public static double nextUp(double);
+    method public static float nextUp(float);
+    method public static double pow(double, double);
+    method public static double random();
+    method public static double rint(double);
+    method public static int round(float);
+    method public static long round(double);
+    method public static double scalb(double, int);
+    method public static float scalb(float, int);
+    method public static double signum(double);
+    method public static float signum(float);
+    method public static double sin(double);
+    method public static double sinh(double);
+    method public static double sqrt(double);
+    method public static int subtractExact(int, int);
+    method public static long subtractExact(long, long);
+    method public static double tan(double);
+    method public static double tanh(double);
+    method public static double toDegrees(double);
+    method public static int toIntExact(long);
+    method public static double toRadians(double);
+    method public static double ulp(double);
+    method public static float ulp(float);
+    field public static final double E = 2.718281828459045;
+    field public static final double PI = 3.141592653589793;
+  }
+
+  public class NegativeArraySizeException extends java.lang.RuntimeException {
+    ctor public NegativeArraySizeException();
+    ctor public NegativeArraySizeException(String);
+  }
+
+  public class NoClassDefFoundError extends java.lang.LinkageError {
+    ctor public NoClassDefFoundError();
+    ctor public NoClassDefFoundError(String);
+  }
+
+  public class NoSuchFieldError extends java.lang.IncompatibleClassChangeError {
+    ctor public NoSuchFieldError();
+    ctor public NoSuchFieldError(String);
+  }
+
+  public class NoSuchFieldException extends java.lang.ReflectiveOperationException {
+    ctor public NoSuchFieldException();
+    ctor public NoSuchFieldException(String);
+  }
+
+  public class NoSuchMethodError extends java.lang.IncompatibleClassChangeError {
+    ctor public NoSuchMethodError();
+    ctor public NoSuchMethodError(String);
+  }
+
+  public class NoSuchMethodException extends java.lang.ReflectiveOperationException {
+    ctor public NoSuchMethodException();
+    ctor public NoSuchMethodException(String);
+  }
+
+  public class NullPointerException extends java.lang.RuntimeException {
+    ctor public NullPointerException();
+    ctor public NullPointerException(String);
+  }
+
+  public abstract class Number implements java.io.Serializable {
+    ctor public Number();
+    method public byte byteValue();
+    method public abstract double doubleValue();
+    method public abstract float floatValue();
+    method public abstract int intValue();
+    method public abstract long longValue();
+    method public short shortValue();
+  }
+
+  public class NumberFormatException extends java.lang.IllegalArgumentException {
+    ctor public NumberFormatException();
+    ctor public NumberFormatException(String);
+  }
+
+  public class Object {
+    ctor public Object();
+    method @NonNull protected Object clone() throws java.lang.CloneNotSupportedException;
+    method public boolean equals(@Nullable Object);
+    method protected void finalize() throws java.lang.Throwable;
+    method @NonNull public final Class<?> getClass();
+    method public int hashCode();
+    method public final void notify();
+    method public final void notifyAll();
+    method @NonNull public String toString();
+    method public final void wait(long) throws java.lang.InterruptedException;
+    method public final void wait(long, int) throws java.lang.InterruptedException;
+    method public final void wait() throws java.lang.InterruptedException;
+  }
+
+  public class OutOfMemoryError extends java.lang.VirtualMachineError {
+    ctor public OutOfMemoryError();
+    ctor public OutOfMemoryError(String);
+  }
+
+  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target(java.lang.annotation.ElementType.METHOD) public @interface Override {
+  }
+
+  public class Package implements java.lang.reflect.AnnotatedElement {
+    method public <A extends java.lang.annotation.Annotation> A getAnnotation(Class<A>);
+    method public java.lang.annotation.Annotation[] getAnnotations();
+    method public <A extends java.lang.annotation.Annotation> A[] getAnnotationsByType(Class<A>);
+    method public <A extends java.lang.annotation.Annotation> A getDeclaredAnnotation(Class<A>);
+    method public java.lang.annotation.Annotation[] getDeclaredAnnotations();
+    method public <A extends java.lang.annotation.Annotation> A[] getDeclaredAnnotationsByType(Class<A>);
+    method public String getImplementationTitle();
+    method public String getImplementationVendor();
+    method public String getImplementationVersion();
+    method public String getName();
+    method public static Package getPackage(String);
+    method public static Package[] getPackages();
+    method public String getSpecificationTitle();
+    method public String getSpecificationVendor();
+    method public String getSpecificationVersion();
+    method public boolean isCompatibleWith(String) throws java.lang.NumberFormatException;
+    method public boolean isSealed();
+    method public boolean isSealed(java.net.URL);
+  }
+
+  public abstract class Process {
+    ctor public Process();
+    method public abstract void destroy();
+    method public Process destroyForcibly();
+    method public abstract int exitValue();
+    method public abstract java.io.InputStream getErrorStream();
+    method public abstract java.io.InputStream getInputStream();
+    method public abstract java.io.OutputStream getOutputStream();
+    method public boolean isAlive();
+    method public abstract int waitFor() throws java.lang.InterruptedException;
+    method public boolean waitFor(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+  }
+
+  public final class ProcessBuilder {
+    ctor public ProcessBuilder(java.util.List<java.lang.String>);
+    ctor public ProcessBuilder(java.lang.String...);
+    method public ProcessBuilder command(java.util.List<java.lang.String>);
+    method public ProcessBuilder command(java.lang.String...);
+    method public java.util.List<java.lang.String> command();
+    method public java.io.File directory();
+    method public ProcessBuilder directory(java.io.File);
+    method public java.util.Map<java.lang.String,java.lang.String> environment();
+    method public ProcessBuilder inheritIO();
+    method public ProcessBuilder redirectError(java.lang.ProcessBuilder.Redirect);
+    method public ProcessBuilder redirectError(java.io.File);
+    method public java.lang.ProcessBuilder.Redirect redirectError();
+    method public boolean redirectErrorStream();
+    method public ProcessBuilder redirectErrorStream(boolean);
+    method public ProcessBuilder redirectInput(java.lang.ProcessBuilder.Redirect);
+    method public ProcessBuilder redirectInput(java.io.File);
+    method public java.lang.ProcessBuilder.Redirect redirectInput();
+    method public ProcessBuilder redirectOutput(java.lang.ProcessBuilder.Redirect);
+    method public ProcessBuilder redirectOutput(java.io.File);
+    method public java.lang.ProcessBuilder.Redirect redirectOutput();
+    method public Process start() throws java.io.IOException;
+  }
+
+  public abstract static class ProcessBuilder.Redirect {
+    method public static java.lang.ProcessBuilder.Redirect appendTo(java.io.File);
+    method public java.io.File file();
+    method public static java.lang.ProcessBuilder.Redirect from(java.io.File);
+    method public static java.lang.ProcessBuilder.Redirect to(java.io.File);
+    method public abstract java.lang.ProcessBuilder.Redirect.Type type();
+    field public static final java.lang.ProcessBuilder.Redirect INHERIT;
+    field public static final java.lang.ProcessBuilder.Redirect PIPE;
+  }
+
+  public enum ProcessBuilder.Redirect.Type {
+    enum_constant public static final java.lang.ProcessBuilder.Redirect.Type APPEND;
+    enum_constant public static final java.lang.ProcessBuilder.Redirect.Type INHERIT;
+    enum_constant public static final java.lang.ProcessBuilder.Redirect.Type PIPE;
+    enum_constant public static final java.lang.ProcessBuilder.Redirect.Type READ;
+    enum_constant public static final java.lang.ProcessBuilder.Redirect.Type WRITE;
+  }
+
+  public interface Readable {
+    method public int read(java.nio.CharBuffer) throws java.io.IOException;
+  }
+
+  public class ReflectiveOperationException extends java.lang.Exception {
+    ctor public ReflectiveOperationException();
+    ctor public ReflectiveOperationException(String);
+    ctor public ReflectiveOperationException(String, Throwable);
+    ctor public ReflectiveOperationException(Throwable);
+  }
+
+  @java.lang.FunctionalInterface public interface Runnable {
+    method public void run();
+  }
+
+  public class Runtime {
+    method public void addShutdownHook(Thread);
+    method public int availableProcessors();
+    method public Process exec(String) throws java.io.IOException;
+    method public Process exec(String, String[]) throws java.io.IOException;
+    method public Process exec(String, String[], java.io.File) throws java.io.IOException;
+    method public Process exec(String[]) throws java.io.IOException;
+    method public Process exec(String[], String[]) throws java.io.IOException;
+    method public Process exec(String[], String[], java.io.File) throws java.io.IOException;
+    method public void exit(int);
+    method public long freeMemory();
+    method public void gc();
+    method @Deprecated public java.io.InputStream getLocalizedInputStream(java.io.InputStream);
+    method @Deprecated public java.io.OutputStream getLocalizedOutputStream(java.io.OutputStream);
+    method public static Runtime getRuntime();
+    method public void halt(int);
+    method public void load(String);
+    method public void loadLibrary(String);
+    method public long maxMemory();
+    method public boolean removeShutdownHook(Thread);
+    method public void runFinalization();
+    method @Deprecated public static void runFinalizersOnExit(boolean);
+    method public long totalMemory();
+    method public void traceInstructions(boolean);
+    method public void traceMethodCalls(boolean);
+  }
+
+  public class RuntimeException extends java.lang.Exception {
+    ctor public RuntimeException();
+    ctor public RuntimeException(String);
+    ctor public RuntimeException(String, Throwable);
+    ctor public RuntimeException(Throwable);
+    ctor protected RuntimeException(String, Throwable, boolean, boolean);
+  }
+
+  public final class RuntimePermission extends java.security.BasicPermission {
+    ctor public RuntimePermission(String);
+    ctor public RuntimePermission(String, String);
+  }
+
+  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.METHOD}) public @interface SafeVarargs {
+  }
+
+  public class SecurityException extends java.lang.RuntimeException {
+    ctor public SecurityException();
+    ctor public SecurityException(String);
+    ctor public SecurityException(String, Throwable);
+    ctor public SecurityException(Throwable);
+  }
+
+  public class SecurityManager {
+    ctor public SecurityManager();
+    method public void checkAccept(String, int);
+    method public void checkAccess(Thread);
+    method public void checkAccess(ThreadGroup);
+    method public void checkAwtEventQueueAccess();
+    method public void checkConnect(String, int);
+    method public void checkConnect(String, int, Object);
+    method public void checkCreateClassLoader();
+    method public void checkDelete(String);
+    method public void checkExec(String);
+    method public void checkExit(int);
+    method public void checkLink(String);
+    method public void checkListen(int);
+    method public void checkMemberAccess(Class<?>, int);
+    method public void checkMulticast(java.net.InetAddress);
+    method @Deprecated public void checkMulticast(java.net.InetAddress, byte);
+    method public void checkPackageAccess(String);
+    method public void checkPackageDefinition(String);
+    method public void checkPermission(java.security.Permission);
+    method public void checkPermission(java.security.Permission, Object);
+    method public void checkPrintJobAccess();
+    method public void checkPropertiesAccess();
+    method public void checkPropertyAccess(String);
+    method public void checkRead(java.io.FileDescriptor);
+    method public void checkRead(String);
+    method public void checkRead(String, Object);
+    method public void checkSecurityAccess(String);
+    method public void checkSetFactory();
+    method public void checkSystemClipboardAccess();
+    method public boolean checkTopLevelWindow(Object);
+    method public void checkWrite(java.io.FileDescriptor);
+    method public void checkWrite(String);
+    method @Deprecated protected int classDepth(String);
+    method @Deprecated protected int classLoaderDepth();
+    method @Deprecated protected ClassLoader currentClassLoader();
+    method @Deprecated protected Class<?> currentLoadedClass();
+    method protected Class[] getClassContext();
+    method @Deprecated public boolean getInCheck();
+    method public Object getSecurityContext();
+    method public ThreadGroup getThreadGroup();
+    method @Deprecated protected boolean inClass(String);
+    method @Deprecated protected boolean inClassLoader();
+    field @Deprecated protected boolean inCheck;
+  }
+
+  public final class Short extends java.lang.Number implements java.lang.Comparable<java.lang.Short> {
+    ctor public Short(short);
+    ctor public Short(String) throws java.lang.NumberFormatException;
+    method public static int compare(short, short);
+    method public int compareTo(Short);
+    method public static Short decode(String) throws java.lang.NumberFormatException;
+    method public double doubleValue();
+    method public float floatValue();
+    method public static int hashCode(short);
+    method public int intValue();
+    method public long longValue();
+    method public static short parseShort(String, int) throws java.lang.NumberFormatException;
+    method public static short parseShort(String) throws java.lang.NumberFormatException;
+    method public static short reverseBytes(short);
+    method public static String toString(short);
+    method public static int toUnsignedInt(short);
+    method public static long toUnsignedLong(short);
+    method public static Short valueOf(String, int) throws java.lang.NumberFormatException;
+    method public static Short valueOf(String) throws java.lang.NumberFormatException;
+    method public static Short valueOf(short);
+    field public static final int BYTES = 2; // 0x2
+    field public static final short MAX_VALUE = 32767; // 0x7fff
+    field public static final short MIN_VALUE = -32768; // 0xffff8000
+    field public static final int SIZE = 16; // 0x10
+    field public static final Class<java.lang.Short> TYPE;
+  }
+
+  public class StackOverflowError extends java.lang.VirtualMachineError {
+    ctor public StackOverflowError();
+    ctor public StackOverflowError(String);
+  }
+
+  public final class StackTraceElement implements java.io.Serializable {
+    ctor public StackTraceElement(String, String, String, int);
+    method public String getClassName();
+    method public String getFileName();
+    method public int getLineNumber();
+    method public String getMethodName();
+    method public boolean isNativeMethod();
+  }
+
+  public final class StrictMath {
+    method public static double IEEEremainder(double, double);
+    method public static int abs(int);
+    method public static long abs(long);
+    method public static float abs(float);
+    method public static double abs(double);
+    method public static double acos(double);
+    method public static int addExact(int, int);
+    method public static long addExact(long, long);
+    method public static double asin(double);
+    method public static double atan(double);
+    method public static double atan2(double, double);
+    method public static double cbrt(double);
+    method public static double ceil(double);
+    method public static double copySign(double, double);
+    method public static float copySign(float, float);
+    method public static double cos(double);
+    method public static double cosh(double);
+    method public static double exp(double);
+    method public static double expm1(double);
+    method public static double floor(double);
+    method public static int floorDiv(int, int);
+    method public static long floorDiv(long, long);
+    method public static int floorMod(int, int);
+    method public static long floorMod(long, long);
+    method public static int getExponent(float);
+    method public static int getExponent(double);
+    method public static double hypot(double, double);
+    method public static double log(double);
+    method public static double log10(double);
+    method public static double log1p(double);
+    method public static int max(int, int);
+    method public static long max(long, long);
+    method public static float max(float, float);
+    method public static double max(double, double);
+    method public static int min(int, int);
+    method public static long min(long, long);
+    method public static float min(float, float);
+    method public static double min(double, double);
+    method public static int multiplyExact(int, int);
+    method public static long multiplyExact(long, long);
+    method public static double nextAfter(double, double);
+    method public static float nextAfter(float, double);
+    method public static double nextDown(double);
+    method public static float nextDown(float);
+    method public static double nextUp(double);
+    method public static float nextUp(float);
+    method public static double pow(double, double);
+    method public static double random();
+    method public static double rint(double);
+    method public static int round(float);
+    method public static long round(double);
+    method public static double scalb(double, int);
+    method public static float scalb(float, int);
+    method public static double signum(double);
+    method public static float signum(float);
+    method public static double sin(double);
+    method public static double sinh(double);
+    method public static double sqrt(double);
+    method public static int subtractExact(int, int);
+    method public static long subtractExact(long, long);
+    method public static double tan(double);
+    method public static double tanh(double);
+    method public static double toDegrees(double);
+    method public static int toIntExact(long);
+    method public static double toRadians(double);
+    method public static double ulp(double);
+    method public static float ulp(float);
+    field public static final double E = 2.718281828459045;
+    field public static final double PI = 3.141592653589793;
+  }
+
+  public final class String implements java.lang.CharSequence java.lang.Comparable<java.lang.String> java.io.Serializable {
+    ctor public String();
+    ctor public String(@NonNull String);
+    ctor public String(char[]);
+    ctor public String(char[], int, int);
+    ctor public String(int[], int, int);
+    ctor @Deprecated public String(byte[], int, int, int);
+    ctor @Deprecated public String(byte[], int);
+    ctor public String(byte[], int, int, @NonNull String) throws java.io.UnsupportedEncodingException;
+    ctor public String(byte[], int, int, @NonNull java.nio.charset.Charset);
+    ctor public String(byte[], @NonNull String) throws java.io.UnsupportedEncodingException;
+    ctor public String(byte[], @NonNull java.nio.charset.Charset);
+    ctor public String(byte[], int, int);
+    ctor public String(byte[]);
+    ctor public String(@NonNull StringBuffer);
+    ctor public String(@NonNull StringBuilder);
+    method public char charAt(int);
+    method public int codePointAt(int);
+    method public int codePointBefore(int);
+    method public int codePointCount(int, int);
+    method public int compareTo(@NonNull String);
+    method public int compareToIgnoreCase(@NonNull String);
+    method @NonNull public String concat(@NonNull String);
+    method public boolean contains(@NonNull CharSequence);
+    method public boolean contentEquals(@NonNull StringBuffer);
+    method public boolean contentEquals(@NonNull CharSequence);
+    method @NonNull public static String copyValueOf(char[], int, int);
+    method @NonNull public static String copyValueOf(char[]);
+    method public boolean endsWith(@NonNull String);
+    method public boolean equalsIgnoreCase(@Nullable String);
+    method @NonNull public static String format(@NonNull String, @NonNull java.lang.Object...);
+    method @NonNull public static String format(@NonNull java.util.Locale, @NonNull String, @NonNull java.lang.Object...);
+    method @Deprecated public void getBytes(int, int, byte[], int);
+    method public byte[] getBytes(@NonNull String) throws java.io.UnsupportedEncodingException;
+    method public byte[] getBytes(@NonNull java.nio.charset.Charset);
+    method public byte[] getBytes();
+    method public void getChars(int, int, char[], int);
+    method public int indexOf(int);
+    method public int indexOf(int, int);
+    method public int indexOf(@NonNull String);
+    method public int indexOf(@NonNull String, int);
+    method @NonNull public String intern();
+    method public boolean isEmpty();
+    method @NonNull public static String join(@NonNull CharSequence, @Nullable java.lang.CharSequence...);
+    method @NonNull public static String join(@NonNull CharSequence, @NonNull Iterable<? extends java.lang.CharSequence>);
+    method public int lastIndexOf(int);
+    method public int lastIndexOf(int, int);
+    method public int lastIndexOf(@NonNull String);
+    method public int lastIndexOf(@NonNull String, int);
+    method public int length();
+    method public boolean matches(@NonNull String);
+    method public int offsetByCodePoints(int, int);
+    method public boolean regionMatches(int, @NonNull String, int, int);
+    method public boolean regionMatches(boolean, int, @NonNull String, int, int);
+    method @NonNull public String replace(char, char);
+    method @NonNull public String replace(@NonNull CharSequence, @NonNull CharSequence);
+    method @NonNull public String replaceAll(@NonNull String, @NonNull String);
+    method @NonNull public String replaceFirst(@NonNull String, @NonNull String);
+    method @NonNull public String[] split(@NonNull String, int);
+    method @NonNull public String[] split(@NonNull String);
+    method public boolean startsWith(@NonNull String, int);
+    method public boolean startsWith(@NonNull String);
+    method @NonNull public CharSequence subSequence(int, int);
+    method @NonNull public String substring(int);
+    method @NonNull public String substring(int, int);
+    method public char[] toCharArray();
+    method @NonNull public String toLowerCase(@NonNull java.util.Locale);
+    method @NonNull public String toLowerCase();
+    method @NonNull public String toUpperCase(@NonNull java.util.Locale);
+    method @NonNull public String toUpperCase();
+    method @NonNull public String trim();
+    method @NonNull public static String valueOf(@Nullable Object);
+    method @NonNull public static String valueOf(char[]);
+    method @NonNull public static String valueOf(char[], int, int);
+    method @NonNull public static String valueOf(boolean);
+    method @NonNull public static String valueOf(char);
+    method @NonNull public static String valueOf(int);
+    method @NonNull public static String valueOf(long);
+    method @NonNull public static String valueOf(float);
+    method @NonNull public static String valueOf(double);
+    field public static final java.util.Comparator<java.lang.String> CASE_INSENSITIVE_ORDER;
+  }
+
+  public final class StringBuffer implements java.lang.Appendable java.lang.CharSequence java.io.Serializable {
+    ctor public StringBuffer();
+    ctor public StringBuffer(int);
+    ctor public StringBuffer(@NonNull String);
+    ctor public StringBuffer(@NonNull CharSequence);
+    method @NonNull public StringBuffer append(@Nullable Object);
+    method @NonNull public StringBuffer append(@Nullable String);
+    method @NonNull public StringBuffer append(@Nullable StringBuffer);
+    method @NonNull public StringBuffer append(@Nullable CharSequence);
+    method @NonNull public StringBuffer append(@Nullable CharSequence, int, int);
+    method @NonNull public StringBuffer append(char[]);
+    method @NonNull public StringBuffer append(char[], int, int);
+    method @NonNull public StringBuffer append(boolean);
+    method @NonNull public StringBuffer append(char);
+    method @NonNull public StringBuffer append(int);
+    method @NonNull public StringBuffer append(long);
+    method @NonNull public StringBuffer append(float);
+    method @NonNull public StringBuffer append(double);
+    method @NonNull public StringBuffer appendCodePoint(int);
+    method public int capacity();
+    method public char charAt(int);
+    method public int codePointAt(int);
+    method public int codePointBefore(int);
+    method public int codePointCount(int, int);
+    method @NonNull public StringBuffer delete(int, int);
+    method @NonNull public StringBuffer deleteCharAt(int);
+    method public void ensureCapacity(int);
+    method public void getChars(int, int, char[], int);
+    method public int indexOf(@NonNull String);
+    method public int indexOf(@NonNull String, int);
+    method @NonNull public StringBuffer insert(int, char[], int, int);
+    method @NonNull public StringBuffer insert(int, @Nullable Object);
+    method @NonNull public StringBuffer insert(int, @Nullable String);
+    method @NonNull public StringBuffer insert(int, char[]);
+    method @NonNull public StringBuffer insert(int, @Nullable CharSequence);
+    method @NonNull public StringBuffer insert(int, @Nullable CharSequence, int, int);
+    method @NonNull public StringBuffer insert(int, boolean);
+    method @NonNull public StringBuffer insert(int, char);
+    method @NonNull public StringBuffer insert(int, int);
+    method @NonNull public StringBuffer insert(int, long);
+    method @NonNull public StringBuffer insert(int, float);
+    method @NonNull public StringBuffer insert(int, double);
+    method public int lastIndexOf(@NonNull String);
+    method public int lastIndexOf(@NonNull String, int);
+    method public int length();
+    method public int offsetByCodePoints(int, int);
+    method @NonNull public StringBuffer replace(int, int, @NonNull String);
+    method @NonNull public StringBuffer reverse();
+    method public void setCharAt(int, char);
+    method public void setLength(int);
+    method @NonNull public CharSequence subSequence(int, int);
+    method @NonNull public String substring(int);
+    method @NonNull public String substring(int, int);
+    method public void trimToSize();
+  }
+
+  public final class StringBuilder implements java.lang.Appendable java.lang.CharSequence java.io.Serializable {
+    ctor public StringBuilder();
+    ctor public StringBuilder(int);
+    ctor public StringBuilder(@NonNull String);
+    ctor public StringBuilder(@NonNull CharSequence);
+    method @NonNull public StringBuilder append(@Nullable Object);
+    method @NonNull public StringBuilder append(@Nullable String);
+    method @NonNull public StringBuilder append(@Nullable StringBuffer);
+    method @NonNull public StringBuilder append(@Nullable CharSequence);
+    method @NonNull public StringBuilder append(@Nullable CharSequence, int, int);
+    method @NonNull public StringBuilder append(char[]);
+    method @NonNull public StringBuilder append(char[], int, int);
+    method @NonNull public StringBuilder append(boolean);
+    method @NonNull public StringBuilder append(char);
+    method @NonNull public StringBuilder append(int);
+    method @NonNull public StringBuilder append(long);
+    method @NonNull public StringBuilder append(float);
+    method @NonNull public StringBuilder append(double);
+    method @NonNull public StringBuilder appendCodePoint(int);
+    method public int capacity();
+    method public char charAt(int);
+    method public int codePointAt(int);
+    method public int codePointBefore(int);
+    method public int codePointCount(int, int);
+    method @NonNull public StringBuilder delete(int, int);
+    method @NonNull public StringBuilder deleteCharAt(int);
+    method public void ensureCapacity(int);
+    method public void getChars(int, int, char[], int);
+    method public int indexOf(@NonNull String);
+    method public int indexOf(@NonNull String, int);
+    method @NonNull public StringBuilder insert(int, char[], int, int);
+    method @NonNull public StringBuilder insert(int, @Nullable Object);
+    method @NonNull public StringBuilder insert(int, @Nullable String);
+    method @NonNull public StringBuilder insert(int, char[]);
+    method @NonNull public StringBuilder insert(int, @Nullable CharSequence);
+    method @NonNull public StringBuilder insert(int, @Nullable CharSequence, int, int);
+    method @NonNull public StringBuilder insert(int, boolean);
+    method @NonNull public StringBuilder insert(int, char);
+    method @NonNull public StringBuilder insert(int, int);
+    method @NonNull public StringBuilder insert(int, long);
+    method @NonNull public StringBuilder insert(int, float);
+    method @NonNull public StringBuilder insert(int, double);
+    method public int lastIndexOf(@NonNull String);
+    method public int lastIndexOf(@NonNull String, int);
+    method public int length();
+    method public int offsetByCodePoints(int, int);
+    method @NonNull public StringBuilder replace(int, int, @NonNull String);
+    method @NonNull public StringBuilder reverse();
+    method public void setCharAt(int, char);
+    method public void setLength(int);
+    method @NonNull public CharSequence subSequence(int, int);
+    method @NonNull public String substring(int);
+    method @NonNull public String substring(int, int);
+    method public void trimToSize();
+  }
+
+  public class StringIndexOutOfBoundsException extends java.lang.IndexOutOfBoundsException {
+    ctor public StringIndexOutOfBoundsException();
+    ctor public StringIndexOutOfBoundsException(String);
+    ctor public StringIndexOutOfBoundsException(int);
+  }
+
+  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE, java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.LOCAL_VARIABLE}) public @interface SuppressWarnings {
+    method public abstract String[] value();
+  }
+
+  public final class System {
+    method public static void arraycopy(@NonNull Object, int, @NonNull Object, int, int);
+    method @Nullable public static String clearProperty(@NonNull String);
+    method @Nullable public static java.io.Console console();
+    method public static long currentTimeMillis();
+    method public static void exit(int);
+    method public static void gc();
+    method @NonNull public static java.util.Properties getProperties();
+    method @Nullable public static String getProperty(@NonNull String);
+    method @Nullable public static String getProperty(@NonNull String, @Nullable String);
+    method @Nullable public static SecurityManager getSecurityManager();
+    method @Nullable public static String getenv(@NonNull String);
+    method @NonNull public static java.util.Map<java.lang.String,java.lang.String> getenv();
+    method public static int identityHashCode(@Nullable Object);
+    method @Nullable public static java.nio.channels.Channel inheritedChannel() throws java.io.IOException;
+    method @NonNull public static String lineSeparator();
+    method public static void load(@NonNull String);
+    method public static void loadLibrary(@NonNull String);
+    method @NonNull public static String mapLibraryName(@NonNull String);
+    method public static long nanoTime();
+    method public static void runFinalization();
+    method @Deprecated public static void runFinalizersOnExit(boolean);
+    method public static void setErr(@Nullable java.io.PrintStream);
+    method public static void setIn(@Nullable java.io.InputStream);
+    method public static void setOut(@Nullable java.io.PrintStream);
+    method public static void setProperties(@Nullable java.util.Properties);
+    method @Nullable public static String setProperty(@NonNull String, @Nullable String);
+    method public static void setSecurityManager(@Nullable SecurityManager);
+    field public static final java.io.PrintStream err;
+    field public static final java.io.InputStream in;
+    field public static final java.io.PrintStream out;
+  }
+
+  public class Thread implements java.lang.Runnable {
+    ctor public Thread();
+    ctor public Thread(@Nullable Runnable);
+    ctor public Thread(@Nullable ThreadGroup, @Nullable Runnable);
+    ctor public Thread(@NonNull String);
+    ctor public Thread(@Nullable ThreadGroup, @NonNull String);
+    ctor public Thread(@Nullable Runnable, @NonNull String);
+    ctor public Thread(@Nullable ThreadGroup, @Nullable Runnable, @NonNull String);
+    ctor public Thread(@Nullable ThreadGroup, @Nullable Runnable, @NonNull String, long);
+    method public static int activeCount();
+    method public final void checkAccess();
+    method @Deprecated public int countStackFrames();
+    method @NonNull public static Thread currentThread();
+    method @Deprecated public void destroy();
+    method public static void dumpStack();
+    method public static int enumerate(Thread[]);
+    method @NonNull public static java.util.Map<java.lang.Thread,java.lang.StackTraceElement[]> getAllStackTraces();
+    method @Nullable public ClassLoader getContextClassLoader();
+    method @Nullable public static java.lang.Thread.UncaughtExceptionHandler getDefaultUncaughtExceptionHandler();
+    method public long getId();
+    method @NonNull public final String getName();
+    method public final int getPriority();
+    method @NonNull public StackTraceElement[] getStackTrace();
+    method @NonNull public java.lang.Thread.State getState();
+    method @Nullable public final ThreadGroup getThreadGroup();
+    method @Nullable public java.lang.Thread.UncaughtExceptionHandler getUncaughtExceptionHandler();
+    method public static boolean holdsLock(@NonNull Object);
+    method public void interrupt();
+    method public static boolean interrupted();
+    method public final boolean isAlive();
+    method public final boolean isDaemon();
+    method public boolean isInterrupted();
+    method public final void join(long) throws java.lang.InterruptedException;
+    method public final void join(long, int) throws java.lang.InterruptedException;
+    method public final void join() throws java.lang.InterruptedException;
+    method @Deprecated public final void resume();
+    method public void run();
+    method public void setContextClassLoader(@Nullable ClassLoader);
+    method public final void setDaemon(boolean);
+    method public static void setDefaultUncaughtExceptionHandler(@Nullable java.lang.Thread.UncaughtExceptionHandler);
+    method public final void setName(@NonNull String);
+    method public final void setPriority(int);
+    method public void setUncaughtExceptionHandler(@Nullable java.lang.Thread.UncaughtExceptionHandler);
+    method public static void sleep(long) throws java.lang.InterruptedException;
+    method public static void sleep(long, int) throws java.lang.InterruptedException;
+    method public void start();
+    method @Deprecated public final void stop();
+    method @Deprecated public final void stop(@Nullable Throwable);
+    method @Deprecated public final void suspend();
+    method public static void yield();
+    field public static final int MAX_PRIORITY = 10; // 0xa
+    field public static final int MIN_PRIORITY = 1; // 0x1
+    field public static final int NORM_PRIORITY = 5; // 0x5
+  }
+
+  public enum Thread.State {
+    enum_constant public static final java.lang.Thread.State BLOCKED;
+    enum_constant public static final java.lang.Thread.State NEW;
+    enum_constant public static final java.lang.Thread.State RUNNABLE;
+    enum_constant public static final java.lang.Thread.State TERMINATED;
+    enum_constant public static final java.lang.Thread.State TIMED_WAITING;
+    enum_constant public static final java.lang.Thread.State WAITING;
+  }
+
+  @java.lang.FunctionalInterface public static interface Thread.UncaughtExceptionHandler {
+    method public void uncaughtException(@NonNull Thread, @NonNull Throwable);
+  }
+
+  public class ThreadDeath extends java.lang.Error {
+    ctor public ThreadDeath();
+  }
+
+  public class ThreadGroup implements java.lang.Thread.UncaughtExceptionHandler {
+    ctor public ThreadGroup(String);
+    ctor public ThreadGroup(ThreadGroup, String);
+    method public int activeCount();
+    method public int activeGroupCount();
+    method @Deprecated public boolean allowThreadSuspension(boolean);
+    method public final void checkAccess();
+    method public final void destroy();
+    method public int enumerate(Thread[]);
+    method public int enumerate(Thread[], boolean);
+    method public int enumerate(ThreadGroup[]);
+    method public int enumerate(ThreadGroup[], boolean);
+    method public final int getMaxPriority();
+    method public final String getName();
+    method public final ThreadGroup getParent();
+    method public final void interrupt();
+    method public final boolean isDaemon();
+    method public boolean isDestroyed();
+    method public void list();
+    method public final boolean parentOf(ThreadGroup);
+    method @Deprecated public final void resume();
+    method public final void setDaemon(boolean);
+    method public final void setMaxPriority(int);
+    method @Deprecated public final void stop();
+    method @Deprecated public final void suspend();
+    method public void uncaughtException(Thread, Throwable);
+  }
+
+  public class ThreadLocal<T> {
+    ctor public ThreadLocal();
+    method @Nullable public T get();
+    method @Nullable protected T initialValue();
+    method public void remove();
+    method public void set(T);
+    method @NonNull public static <S> ThreadLocal<S> withInitial(@NonNull java.util.function.Supplier<? extends S>);
+  }
+
+  public class Throwable implements java.io.Serializable {
+    ctor public Throwable();
+    ctor public Throwable(@Nullable String);
+    ctor public Throwable(@Nullable String, @Nullable Throwable);
+    ctor public Throwable(@Nullable Throwable);
+    ctor protected Throwable(@Nullable String, @Nullable Throwable, boolean, boolean);
+    method public final void addSuppressed(@NonNull Throwable);
+    method @NonNull public Throwable fillInStackTrace();
+    method @Nullable public Throwable getCause();
+    method @Nullable public String getLocalizedMessage();
+    method @Nullable public String getMessage();
+    method @NonNull public StackTraceElement[] getStackTrace();
+    method @NonNull public final Throwable[] getSuppressed();
+    method @NonNull public Throwable initCause(@Nullable Throwable);
+    method public void printStackTrace();
+    method public void printStackTrace(@NonNull java.io.PrintStream);
+    method public void printStackTrace(@NonNull java.io.PrintWriter);
+    method public void setStackTrace(@NonNull StackTraceElement[]);
+  }
+
+  public class TypeNotPresentException extends java.lang.RuntimeException {
+    ctor public TypeNotPresentException(String, Throwable);
+    method public String typeName();
+  }
+
+  public class UnknownError extends java.lang.VirtualMachineError {
+    ctor public UnknownError();
+    ctor public UnknownError(String);
+  }
+
+  public class UnsatisfiedLinkError extends java.lang.LinkageError {
+    ctor public UnsatisfiedLinkError();
+    ctor public UnsatisfiedLinkError(String);
+  }
+
+  public class UnsupportedClassVersionError extends java.lang.ClassFormatError {
+    ctor public UnsupportedClassVersionError();
+    ctor public UnsupportedClassVersionError(String);
+  }
+
+  public class UnsupportedOperationException extends java.lang.RuntimeException {
+    ctor public UnsupportedOperationException();
+    ctor public UnsupportedOperationException(String);
+    ctor public UnsupportedOperationException(String, Throwable);
+    ctor public UnsupportedOperationException(Throwable);
+  }
+
+  public class VerifyError extends java.lang.LinkageError {
+    ctor public VerifyError();
+    ctor public VerifyError(String);
+  }
+
+  public abstract class VirtualMachineError extends java.lang.Error {
+    ctor public VirtualMachineError();
+    ctor public VirtualMachineError(String);
+    ctor public VirtualMachineError(String, Throwable);
+    ctor public VirtualMachineError(Throwable);
+  }
+
+  public final class Void {
+    field public static final Class<java.lang.Void> TYPE;
+  }
+
+}
+
+package java.lang.annotation {
+
+  public interface Annotation {
+    method public Class<? extends java.lang.annotation.Annotation> annotationType();
+    method public boolean equals(Object);
+    method public int hashCode();
+    method public String toString();
+  }
+
+  public class AnnotationFormatError extends java.lang.Error {
+    ctor public AnnotationFormatError(String);
+    ctor public AnnotationFormatError(String, Throwable);
+    ctor public AnnotationFormatError(Throwable);
+  }
+
+  public class AnnotationTypeMismatchException extends java.lang.RuntimeException {
+    ctor public AnnotationTypeMismatchException(java.lang.reflect.Method, String);
+    method public java.lang.reflect.Method element();
+    method public String foundType();
+  }
+
+  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.ANNOTATION_TYPE) public @interface Documented {
+  }
+
+  public enum ElementType {
+    enum_constant public static final java.lang.annotation.ElementType ANNOTATION_TYPE;
+    enum_constant public static final java.lang.annotation.ElementType CONSTRUCTOR;
+    enum_constant public static final java.lang.annotation.ElementType FIELD;
+    enum_constant public static final java.lang.annotation.ElementType LOCAL_VARIABLE;
+    enum_constant public static final java.lang.annotation.ElementType METHOD;
+    enum_constant public static final java.lang.annotation.ElementType PACKAGE;
+    enum_constant public static final java.lang.annotation.ElementType PARAMETER;
+    enum_constant public static final java.lang.annotation.ElementType TYPE;
+    enum_constant public static final java.lang.annotation.ElementType TYPE_PARAMETER;
+    enum_constant public static final java.lang.annotation.ElementType TYPE_USE;
+  }
+
+  public class IncompleteAnnotationException extends java.lang.RuntimeException {
+    ctor public IncompleteAnnotationException(Class<? extends java.lang.annotation.Annotation>, String);
+    method public Class<? extends java.lang.annotation.Annotation> annotationType();
+    method public String elementName();
+  }
+
+  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.ANNOTATION_TYPE) public @interface Inherited {
+  }
+
+  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target(java.lang.annotation.ElementType.FIELD) public @interface Native {
+  }
+
+  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.ANNOTATION_TYPE) public @interface Repeatable {
+    method public abstract Class<? extends java.lang.annotation.Annotation> value();
+  }
+
+  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.ANNOTATION_TYPE) public @interface Retention {
+    method public abstract java.lang.annotation.RetentionPolicy value();
+  }
+
+  public enum RetentionPolicy {
+    enum_constant public static final java.lang.annotation.RetentionPolicy CLASS;
+    enum_constant public static final java.lang.annotation.RetentionPolicy RUNTIME;
+    enum_constant public static final java.lang.annotation.RetentionPolicy SOURCE;
+  }
+
+  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.ANNOTATION_TYPE) public @interface Target {
+    method public abstract java.lang.annotation.ElementType[] value();
+  }
+
+}
+
+package java.lang.invoke {
+
+  public abstract class CallSite {
+    method public abstract java.lang.invoke.MethodHandle dynamicInvoker();
+    method public abstract java.lang.invoke.MethodHandle getTarget();
+    method public abstract void setTarget(java.lang.invoke.MethodHandle);
+    method public java.lang.invoke.MethodType type();
+  }
+
+  public class ConstantCallSite extends java.lang.invoke.CallSite {
+    ctor public ConstantCallSite(java.lang.invoke.MethodHandle);
+    ctor protected ConstantCallSite(java.lang.invoke.MethodType, java.lang.invoke.MethodHandle) throws java.lang.Throwable;
+    method public final java.lang.invoke.MethodHandle dynamicInvoker();
+    method public final java.lang.invoke.MethodHandle getTarget();
+    method public final void setTarget(java.lang.invoke.MethodHandle);
+  }
+
+  public class LambdaConversionException extends java.lang.Exception {
+    ctor public LambdaConversionException();
+    ctor public LambdaConversionException(String);
+    ctor public LambdaConversionException(String, Throwable);
+    ctor public LambdaConversionException(Throwable);
+    ctor public LambdaConversionException(String, Throwable, boolean, boolean);
+  }
+
+  public abstract class MethodHandle {
+    method public java.lang.invoke.MethodHandle asCollector(Class<?>, int);
+    method public java.lang.invoke.MethodHandle asFixedArity();
+    method public java.lang.invoke.MethodHandle asSpreader(Class<?>, int);
+    method public java.lang.invoke.MethodHandle asType(java.lang.invoke.MethodType);
+    method public java.lang.invoke.MethodHandle asVarargsCollector(Class<?>);
+    method public java.lang.invoke.MethodHandle bindTo(Object);
+    method public final Object invoke(java.lang.Object...) throws java.lang.Throwable;
+    method public final Object invokeExact(java.lang.Object...) throws java.lang.Throwable;
+    method public Object invokeWithArguments(java.lang.Object...) throws java.lang.Throwable;
+    method public Object invokeWithArguments(java.util.List<?>) throws java.lang.Throwable;
+    method public boolean isVarargsCollector();
+    method public java.lang.invoke.MethodType type();
+  }
+
+  public interface MethodHandleInfo {
+    method public Class<?> getDeclaringClass();
+    method public java.lang.invoke.MethodType getMethodType();
+    method public int getModifiers();
+    method public String getName();
+    method public int getReferenceKind();
+    method public default boolean isVarArgs();
+    method @Deprecated public static boolean refKindIsField(int);
+    method @Deprecated public static boolean refKindIsValid(int);
+    method @Deprecated public static String refKindName(int);
+    method public static String referenceKindToString(int);
+    method public <T extends java.lang.reflect.Member> T reflectAs(Class<T>, java.lang.invoke.MethodHandles.Lookup);
+    method public static String toString(int, Class<?>, String, java.lang.invoke.MethodType);
+    field public static final int REF_getField = 1; // 0x1
+    field public static final int REF_getStatic = 2; // 0x2
+    field public static final int REF_invokeInterface = 9; // 0x9
+    field public static final int REF_invokeSpecial = 7; // 0x7
+    field public static final int REF_invokeStatic = 6; // 0x6
+    field public static final int REF_invokeVirtual = 5; // 0x5
+    field public static final int REF_newInvokeSpecial = 8; // 0x8
+    field public static final int REF_putField = 3; // 0x3
+    field public static final int REF_putStatic = 4; // 0x4
+  }
+
+  public class MethodHandles {
+    method public static java.lang.invoke.MethodHandle arrayElementGetter(Class<?>) throws java.lang.IllegalArgumentException;
+    method public static java.lang.invoke.MethodHandle arrayElementSetter(Class<?>) throws java.lang.IllegalArgumentException;
+    method public static java.lang.invoke.MethodHandle catchException(java.lang.invoke.MethodHandle, Class<? extends java.lang.Throwable>, java.lang.invoke.MethodHandle);
+    method public static java.lang.invoke.MethodHandle collectArguments(java.lang.invoke.MethodHandle, int, java.lang.invoke.MethodHandle);
+    method public static java.lang.invoke.MethodHandle constant(Class<?>, Object);
+    method public static java.lang.invoke.MethodHandle dropArguments(java.lang.invoke.MethodHandle, int, java.util.List<java.lang.Class<?>>);
+    method public static java.lang.invoke.MethodHandle dropArguments(java.lang.invoke.MethodHandle, int, Class<?>...);
+    method public static java.lang.invoke.MethodHandle exactInvoker(java.lang.invoke.MethodType);
+    method public static java.lang.invoke.MethodHandle explicitCastArguments(java.lang.invoke.MethodHandle, java.lang.invoke.MethodType);
+    method public static java.lang.invoke.MethodHandle filterArguments(java.lang.invoke.MethodHandle, int, java.lang.invoke.MethodHandle...);
+    method public static java.lang.invoke.MethodHandle filterReturnValue(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
+    method public static java.lang.invoke.MethodHandle foldArguments(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
+    method public static java.lang.invoke.MethodHandle guardWithTest(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
+    method public static java.lang.invoke.MethodHandle identity(Class<?>);
+    method public static java.lang.invoke.MethodHandle insertArguments(java.lang.invoke.MethodHandle, int, java.lang.Object...);
+    method public static java.lang.invoke.MethodHandle invoker(java.lang.invoke.MethodType);
+    method public static java.lang.invoke.MethodHandles.Lookup lookup();
+    method public static java.lang.invoke.MethodHandle permuteArguments(java.lang.invoke.MethodHandle, java.lang.invoke.MethodType, int...);
+    method public static java.lang.invoke.MethodHandles.Lookup publicLookup();
+    method public static <T extends java.lang.reflect.Member> T reflectAs(Class<T>, java.lang.invoke.MethodHandle);
+    method public static java.lang.invoke.MethodHandle spreadInvoker(java.lang.invoke.MethodType, int);
+    method public static java.lang.invoke.MethodHandle throwException(Class<?>, Class<? extends java.lang.Throwable>);
+  }
+
+  public static final class MethodHandles.Lookup {
+    method public java.lang.invoke.MethodHandle bind(Object, String, java.lang.invoke.MethodType) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
+    method public java.lang.invoke.MethodHandle findConstructor(Class<?>, java.lang.invoke.MethodType) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
+    method public java.lang.invoke.MethodHandle findGetter(Class<?>, String, Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchFieldException;
+    method public java.lang.invoke.MethodHandle findSetter(Class<?>, String, Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchFieldException;
+    method public java.lang.invoke.MethodHandle findSpecial(Class<?>, String, java.lang.invoke.MethodType, Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
+    method public java.lang.invoke.MethodHandle findStatic(Class<?>, String, java.lang.invoke.MethodType) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
+    method public java.lang.invoke.MethodHandle findStaticGetter(Class<?>, String, Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchFieldException;
+    method public java.lang.invoke.MethodHandle findStaticSetter(Class<?>, String, Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchFieldException;
+    method public java.lang.invoke.MethodHandle findVirtual(Class<?>, String, java.lang.invoke.MethodType) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
+    method public java.lang.invoke.MethodHandles.Lookup in(Class<?>);
+    method public Class<?> lookupClass();
+    method public int lookupModes();
+    method public java.lang.invoke.MethodHandleInfo revealDirect(java.lang.invoke.MethodHandle);
+    method public java.lang.invoke.MethodHandle unreflect(java.lang.reflect.Method) throws java.lang.IllegalAccessException;
+    method public java.lang.invoke.MethodHandle unreflectConstructor(java.lang.reflect.Constructor<?>) throws java.lang.IllegalAccessException;
+    method public java.lang.invoke.MethodHandle unreflectGetter(java.lang.reflect.Field) throws java.lang.IllegalAccessException;
+    method public java.lang.invoke.MethodHandle unreflectSetter(java.lang.reflect.Field) throws java.lang.IllegalAccessException;
+    method public java.lang.invoke.MethodHandle unreflectSpecial(java.lang.reflect.Method, Class<?>) throws java.lang.IllegalAccessException;
+    field public static final int PACKAGE = 8; // 0x8
+    field public static final int PRIVATE = 2; // 0x2
+    field public static final int PROTECTED = 4; // 0x4
+    field public static final int PUBLIC = 1; // 0x1
+  }
+
+  public final class MethodType implements java.io.Serializable {
+    method public java.lang.invoke.MethodType appendParameterTypes(Class<?>...);
+    method public java.lang.invoke.MethodType appendParameterTypes(java.util.List<java.lang.Class<?>>);
+    method public java.lang.invoke.MethodType changeParameterType(int, Class<?>);
+    method public java.lang.invoke.MethodType changeReturnType(Class<?>);
+    method public java.lang.invoke.MethodType dropParameterTypes(int, int);
+    method public java.lang.invoke.MethodType erase();
+    method public static java.lang.invoke.MethodType fromMethodDescriptorString(String, ClassLoader) throws java.lang.IllegalArgumentException, java.lang.TypeNotPresentException;
+    method public java.lang.invoke.MethodType generic();
+    method public static java.lang.invoke.MethodType genericMethodType(int, boolean);
+    method public static java.lang.invoke.MethodType genericMethodType(int);
+    method public boolean hasPrimitives();
+    method public boolean hasWrappers();
+    method public java.lang.invoke.MethodType insertParameterTypes(int, Class<?>...);
+    method public java.lang.invoke.MethodType insertParameterTypes(int, java.util.List<java.lang.Class<?>>);
+    method public static java.lang.invoke.MethodType methodType(Class<?>, Class<?>[]);
+    method public static java.lang.invoke.MethodType methodType(Class<?>, java.util.List<java.lang.Class<?>>);
+    method public static java.lang.invoke.MethodType methodType(Class<?>, Class<?>, Class<?>...);
+    method public static java.lang.invoke.MethodType methodType(Class<?>);
+    method public static java.lang.invoke.MethodType methodType(Class<?>, Class<?>);
+    method public static java.lang.invoke.MethodType methodType(Class<?>, java.lang.invoke.MethodType);
+    method public Class<?>[] parameterArray();
+    method public int parameterCount();
+    method public java.util.List<java.lang.Class<?>> parameterList();
+    method public Class<?> parameterType(int);
+    method public Class<?> returnType();
+    method public String toMethodDescriptorString();
+    method public java.lang.invoke.MethodType unwrap();
+    method public java.lang.invoke.MethodType wrap();
+  }
+
+  public class MutableCallSite extends java.lang.invoke.CallSite {
+    ctor public MutableCallSite(java.lang.invoke.MethodType);
+    ctor public MutableCallSite(java.lang.invoke.MethodHandle);
+    method public final java.lang.invoke.MethodHandle dynamicInvoker();
+    method public final java.lang.invoke.MethodHandle getTarget();
+    method public void setTarget(java.lang.invoke.MethodHandle);
+  }
+
+  public class VolatileCallSite extends java.lang.invoke.CallSite {
+    ctor public VolatileCallSite(java.lang.invoke.MethodType);
+    ctor public VolatileCallSite(java.lang.invoke.MethodHandle);
+    method public final java.lang.invoke.MethodHandle dynamicInvoker();
+    method public final java.lang.invoke.MethodHandle getTarget();
+    method public void setTarget(java.lang.invoke.MethodHandle);
+  }
+
+  public class WrongMethodTypeException extends java.lang.RuntimeException {
+    ctor public WrongMethodTypeException();
+    ctor public WrongMethodTypeException(String);
+  }
+
+}
+
+package java.lang.ref {
+
+  public class PhantomReference<T> extends java.lang.ref.Reference<T> {
+    ctor public PhantomReference(T, java.lang.ref.ReferenceQueue<? super T>);
+  }
+
+  public abstract class Reference<T> {
+    method public void clear();
+    method public boolean enqueue();
+    method public T get();
+    method public boolean isEnqueued();
+    method public static void reachabilityFence(Object);
+  }
+
+  public class ReferenceQueue<T> {
+    ctor public ReferenceQueue();
+    method public java.lang.ref.Reference<? extends T> poll();
+    method public java.lang.ref.Reference<? extends T> remove(long) throws java.lang.IllegalArgumentException, java.lang.InterruptedException;
+    method public java.lang.ref.Reference<? extends T> remove() throws java.lang.InterruptedException;
+  }
+
+  public class SoftReference<T> extends java.lang.ref.Reference<T> {
+    ctor public SoftReference(T);
+    ctor public SoftReference(T, java.lang.ref.ReferenceQueue<? super T>);
+  }
+
+  public class WeakReference<T> extends java.lang.ref.Reference<T> {
+    ctor public WeakReference(T);
+    ctor public WeakReference(T, java.lang.ref.ReferenceQueue<? super T>);
+  }
+
+}
+
+package java.lang.reflect {
+
+  public class AccessibleObject implements java.lang.reflect.AnnotatedElement {
+    ctor protected AccessibleObject();
+    method @Nullable public <T extends java.lang.annotation.Annotation> T getAnnotation(@NonNull Class<T>);
+    method @NonNull public java.lang.annotation.Annotation[] getAnnotations();
+    method @NonNull public java.lang.annotation.Annotation[] getDeclaredAnnotations();
+    method public boolean isAccessible();
+    method public static void setAccessible(java.lang.reflect.AccessibleObject[], boolean) throws java.lang.SecurityException;
+    method public void setAccessible(boolean) throws java.lang.SecurityException;
+  }
+
+  public interface AnnotatedElement {
+    method @Nullable public <T extends java.lang.annotation.Annotation> T getAnnotation(@NonNull Class<T>);
+    method @NonNull public java.lang.annotation.Annotation[] getAnnotations();
+    method public default <T extends java.lang.annotation.Annotation> T[] getAnnotationsByType(@NonNull Class<T>);
+    method @Nullable public default <T extends java.lang.annotation.Annotation> T getDeclaredAnnotation(@NonNull Class<T>);
+    method @NonNull public java.lang.annotation.Annotation[] getDeclaredAnnotations();
+    method public default <T extends java.lang.annotation.Annotation> T[] getDeclaredAnnotationsByType(@NonNull Class<T>);
+    method public default boolean isAnnotationPresent(@NonNull Class<? extends java.lang.annotation.Annotation>);
+  }
+
+  public final class Array {
+    method @Nullable public static Object get(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+    method public static boolean getBoolean(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+    method public static byte getByte(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+    method public static char getChar(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+    method public static double getDouble(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+    method public static float getFloat(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+    method public static int getInt(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+    method public static int getLength(@NonNull Object);
+    method public static long getLong(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+    method public static short getShort(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+    method @NonNull public static Object newInstance(@NonNull Class<?>, int) throws java.lang.NegativeArraySizeException;
+    method @NonNull public static Object newInstance(@NonNull Class<?>, int...) throws java.lang.IllegalArgumentException, java.lang.NegativeArraySizeException;
+    method public static void set(@NonNull Object, int, @Nullable Object) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+    method public static void setBoolean(@NonNull Object, int, boolean);
+    method public static void setByte(@NonNull Object, int, byte) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+    method public static void setChar(@NonNull Object, int, char) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+    method public static void setDouble(@NonNull Object, int, double) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+    method public static void setFloat(@NonNull Object, int, float) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+    method public static void setInt(@NonNull Object, int, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+    method public static void setLong(@NonNull Object, int, long) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+    method public static void setShort(@NonNull Object, int, short) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
+  }
+
+  public final class Constructor<T> extends java.lang.reflect.Executable {
+    method @NonNull public Class<T> getDeclaringClass();
+    method public Class<?>[] getExceptionTypes();
+    method public int getModifiers();
+    method @NonNull public String getName();
+    method public java.lang.annotation.Annotation[][] getParameterAnnotations();
+    method @NonNull public Class<?>[] getParameterTypes();
+    method public java.lang.reflect.TypeVariable<java.lang.reflect.Constructor<T>>[] getTypeParameters();
+    method @NonNull public T newInstance(java.lang.Object...) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException, java.lang.InstantiationException, java.lang.reflect.InvocationTargetException;
+    method @NonNull public String toGenericString();
+  }
+
+  public abstract class Executable extends java.lang.reflect.AccessibleObject implements java.lang.reflect.GenericDeclaration java.lang.reflect.Member {
+    method @NonNull public abstract Class<?>[] getExceptionTypes();
+    method @NonNull public java.lang.reflect.Type[] getGenericExceptionTypes();
+    method @NonNull public java.lang.reflect.Type[] getGenericParameterTypes();
+    method @NonNull public abstract java.lang.annotation.Annotation[][] getParameterAnnotations();
+    method public int getParameterCount();
+    method @NonNull public abstract Class<?>[] getParameterTypes();
+    method @NonNull public java.lang.reflect.Parameter[] getParameters();
+    method public final boolean isAnnotationPresent(@NonNull Class<? extends java.lang.annotation.Annotation>);
+    method public boolean isSynthetic();
+    method public boolean isVarArgs();
+    method @NonNull public abstract String toGenericString();
+  }
+
+  public final class Field extends java.lang.reflect.AccessibleObject implements java.lang.reflect.Member {
+    method @Nullable public Object get(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+    method public boolean getBoolean(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+    method public byte getByte(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+    method public char getChar(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+    method @NonNull public Class<?> getDeclaringClass();
+    method public double getDouble(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+    method public float getFloat(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+    method @NonNull public java.lang.reflect.Type getGenericType();
+    method public int getInt(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+    method public long getLong(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+    method public int getModifiers();
+    method @NonNull public String getName();
+    method public short getShort(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+    method @NonNull public Class<?> getType();
+    method public boolean isEnumConstant();
+    method public boolean isSynthetic();
+    method public void set(@Nullable Object, @Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+    method public void setBoolean(@Nullable Object, boolean) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+    method public void setByte(@Nullable Object, byte) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+    method public void setChar(@Nullable Object, char) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+    method public void setDouble(@Nullable Object, double) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+    method public void setFloat(@Nullable Object, float) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+    method public void setInt(@Nullable Object, int) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+    method public void setLong(@Nullable Object, long) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+    method public void setShort(@Nullable Object, short) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
+    method @NonNull public String toGenericString();
+  }
+
+  public interface GenericArrayType extends java.lang.reflect.Type {
+    method @NonNull public java.lang.reflect.Type getGenericComponentType();
+  }
+
+  public interface GenericDeclaration extends java.lang.reflect.AnnotatedElement {
+    method @NonNull public java.lang.reflect.TypeVariable<?>[] getTypeParameters();
+  }
+
+  public class GenericSignatureFormatError extends java.lang.ClassFormatError {
+    ctor public GenericSignatureFormatError();
+    ctor public GenericSignatureFormatError(String);
+  }
+
+  public interface InvocationHandler {
+    method public Object invoke(Object, java.lang.reflect.Method, Object[]) throws java.lang.Throwable;
+  }
+
+  public class InvocationTargetException extends java.lang.ReflectiveOperationException {
+    ctor protected InvocationTargetException();
+    ctor public InvocationTargetException(Throwable);
+    ctor public InvocationTargetException(Throwable, String);
+    method public Throwable getTargetException();
+  }
+
+  public class MalformedParameterizedTypeException extends java.lang.RuntimeException {
+    ctor public MalformedParameterizedTypeException();
+  }
+
+  public class MalformedParametersException extends java.lang.RuntimeException {
+    ctor public MalformedParametersException();
+    ctor public MalformedParametersException(String);
+  }
+
+  public interface Member {
+    method @NonNull public Class<?> getDeclaringClass();
+    method public int getModifiers();
+    method @NonNull public String getName();
+    method public boolean isSynthetic();
+    field public static final int DECLARED = 1; // 0x1
+    field public static final int PUBLIC = 0; // 0x0
+  }
+
+  public final class Method extends java.lang.reflect.Executable {
+    method @NonNull public Class<?> getDeclaringClass();
+    method @Nullable public Object getDefaultValue();
+    method @NonNull public Class<?>[] getExceptionTypes();
+    method @NonNull public java.lang.reflect.Type getGenericReturnType();
+    method public int getModifiers();
+    method @NonNull public String getName();
+    method @NonNull public java.lang.annotation.Annotation[][] getParameterAnnotations();
+    method @NonNull public Class<?>[] getParameterTypes();
+    method @NonNull public Class<?> getReturnType();
+    method @NonNull public java.lang.reflect.TypeVariable<java.lang.reflect.Method>[] getTypeParameters();
+    method @Nullable public Object invoke(@Nullable Object, @Nullable java.lang.Object...) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException, java.lang.reflect.InvocationTargetException;
+    method public boolean isBridge();
+    method public boolean isDefault();
+    method @NonNull public String toGenericString();
+  }
+
+  public class Modifier {
+    ctor public Modifier();
+    method public static int classModifiers();
+    method public static int constructorModifiers();
+    method public static int fieldModifiers();
+    method public static int interfaceModifiers();
+    method public static boolean isAbstract(int);
+    method public static boolean isFinal(int);
+    method public static boolean isInterface(int);
+    method public static boolean isNative(int);
+    method public static boolean isPrivate(int);
+    method public static boolean isProtected(int);
+    method public static boolean isPublic(int);
+    method public static boolean isStatic(int);
+    method public static boolean isStrict(int);
+    method public static boolean isSynchronized(int);
+    method public static boolean isTransient(int);
+    method public static boolean isVolatile(int);
+    method public static int methodModifiers();
+    method public static int parameterModifiers();
+    method public static String toString(int);
+    field public static final int ABSTRACT = 1024; // 0x400
+    field public static final int FINAL = 16; // 0x10
+    field public static final int INTERFACE = 512; // 0x200
+    field public static final int NATIVE = 256; // 0x100
+    field public static final int PRIVATE = 2; // 0x2
+    field public static final int PROTECTED = 4; // 0x4
+    field public static final int PUBLIC = 1; // 0x1
+    field public static final int STATIC = 8; // 0x8
+    field public static final int STRICT = 2048; // 0x800
+    field public static final int SYNCHRONIZED = 32; // 0x20
+    field public static final int TRANSIENT = 128; // 0x80
+    field public static final int VOLATILE = 64; // 0x40
+  }
+
+  public final class Parameter implements java.lang.reflect.AnnotatedElement {
+    method @Nullable public <T extends java.lang.annotation.Annotation> T getAnnotation(@NonNull Class<T>);
+    method @NonNull public java.lang.annotation.Annotation[] getAnnotations();
+    method @NonNull public java.lang.annotation.Annotation[] getDeclaredAnnotations();
+    method @NonNull public java.lang.reflect.Executable getDeclaringExecutable();
+    method public int getModifiers();
+    method @NonNull public String getName();
+    method @NonNull public java.lang.reflect.Type getParameterizedType();
+    method @NonNull public Class<?> getType();
+    method public boolean isImplicit();
+    method public boolean isNamePresent();
+    method public boolean isSynthetic();
+    method public boolean isVarArgs();
+  }
+
+  public interface ParameterizedType extends java.lang.reflect.Type {
+    method @NonNull public java.lang.reflect.Type[] getActualTypeArguments();
+    method @Nullable public java.lang.reflect.Type getOwnerType();
+    method @NonNull public java.lang.reflect.Type getRawType();
+  }
+
+  public class Proxy implements java.io.Serializable {
+    ctor protected Proxy(@NonNull java.lang.reflect.InvocationHandler);
+    method @NonNull public static java.lang.reflect.InvocationHandler getInvocationHandler(@NonNull Object) throws java.lang.IllegalArgumentException;
+    method @NonNull public static Class<?> getProxyClass(@Nullable ClassLoader, @NonNull Class<?>...) throws java.lang.IllegalArgumentException;
+    method public static boolean isProxyClass(@NonNull Class<?>);
+    method @NonNull public static Object newProxyInstance(@Nullable ClassLoader, @NonNull Class<?>[], @NonNull java.lang.reflect.InvocationHandler) throws java.lang.IllegalArgumentException;
+    field protected java.lang.reflect.InvocationHandler h;
+  }
+
+  public final class ReflectPermission extends java.security.BasicPermission {
+    ctor public ReflectPermission(String);
+    ctor public ReflectPermission(String, String);
+  }
+
+  public interface Type {
+    method @NonNull public default String getTypeName();
+  }
+
+  public interface TypeVariable<D extends java.lang.reflect.GenericDeclaration> extends java.lang.reflect.Type {
+    method @NonNull public java.lang.reflect.Type[] getBounds();
+    method @NonNull public D getGenericDeclaration();
+    method @NonNull public String getName();
+  }
+
+  public class UndeclaredThrowableException extends java.lang.RuntimeException {
+    ctor public UndeclaredThrowableException(Throwable);
+    ctor public UndeclaredThrowableException(Throwable, String);
+    method public Throwable getUndeclaredThrowable();
+  }
+
+  public interface WildcardType extends java.lang.reflect.Type {
+    method @NonNull public java.lang.reflect.Type[] getLowerBounds();
+    method @NonNull public java.lang.reflect.Type[] getUpperBounds();
+  }
+
+}
+
+package java.math {
+
+  public class BigDecimal extends java.lang.Number implements java.lang.Comparable<java.math.BigDecimal> {
+    ctor public BigDecimal(char[], int, int);
+    ctor public BigDecimal(char[], int, int, java.math.MathContext);
+    ctor public BigDecimal(char[]);
+    ctor public BigDecimal(char[], java.math.MathContext);
+    ctor public BigDecimal(String);
+    ctor public BigDecimal(String, java.math.MathContext);
+    ctor public BigDecimal(double);
+    ctor public BigDecimal(double, java.math.MathContext);
+    ctor public BigDecimal(java.math.BigInteger);
+    ctor public BigDecimal(java.math.BigInteger, java.math.MathContext);
+    ctor public BigDecimal(java.math.BigInteger, int);
+    ctor public BigDecimal(java.math.BigInteger, int, java.math.MathContext);
+    ctor public BigDecimal(int);
+    ctor public BigDecimal(int, java.math.MathContext);
+    ctor public BigDecimal(long);
+    ctor public BigDecimal(long, java.math.MathContext);
+    method public java.math.BigDecimal abs();
+    method public java.math.BigDecimal abs(java.math.MathContext);
+    method public java.math.BigDecimal add(java.math.BigDecimal);
+    method public java.math.BigDecimal add(java.math.BigDecimal, java.math.MathContext);
+    method public byte byteValueExact();
+    method public int compareTo(java.math.BigDecimal);
+    method public java.math.BigDecimal divide(java.math.BigDecimal, int, int);
+    method public java.math.BigDecimal divide(java.math.BigDecimal, int, java.math.RoundingMode);
+    method public java.math.BigDecimal divide(java.math.BigDecimal, int);
+    method public java.math.BigDecimal divide(java.math.BigDecimal, java.math.RoundingMode);
+    method public java.math.BigDecimal divide(java.math.BigDecimal);
+    method public java.math.BigDecimal divide(java.math.BigDecimal, java.math.MathContext);
+    method public java.math.BigDecimal[] divideAndRemainder(java.math.BigDecimal);
+    method public java.math.BigDecimal[] divideAndRemainder(java.math.BigDecimal, java.math.MathContext);
+    method public java.math.BigDecimal divideToIntegralValue(java.math.BigDecimal);
+    method public java.math.BigDecimal divideToIntegralValue(java.math.BigDecimal, java.math.MathContext);
+    method public double doubleValue();
+    method public float floatValue();
+    method public int intValue();
+    method public int intValueExact();
+    method public long longValue();
+    method public long longValueExact();
+    method public java.math.BigDecimal max(java.math.BigDecimal);
+    method public java.math.BigDecimal min(java.math.BigDecimal);
+    method public java.math.BigDecimal movePointLeft(int);
+    method public java.math.BigDecimal movePointRight(int);
+    method public java.math.BigDecimal multiply(java.math.BigDecimal);
+    method public java.math.BigDecimal multiply(java.math.BigDecimal, java.math.MathContext);
+    method public java.math.BigDecimal negate();
+    method public java.math.BigDecimal negate(java.math.MathContext);
+    method public java.math.BigDecimal plus();
+    method public java.math.BigDecimal plus(java.math.MathContext);
+    method public java.math.BigDecimal pow(int);
+    method public java.math.BigDecimal pow(int, java.math.MathContext);
+    method public int precision();
+    method public java.math.BigDecimal remainder(java.math.BigDecimal);
+    method public java.math.BigDecimal remainder(java.math.BigDecimal, java.math.MathContext);
+    method public java.math.BigDecimal round(java.math.MathContext);
+    method public int scale();
+    method public java.math.BigDecimal scaleByPowerOfTen(int);
+    method public java.math.BigDecimal setScale(int, java.math.RoundingMode);
+    method public java.math.BigDecimal setScale(int, int);
+    method public java.math.BigDecimal setScale(int);
+    method public short shortValueExact();
+    method public int signum();
+    method public java.math.BigDecimal stripTrailingZeros();
+    method public java.math.BigDecimal subtract(java.math.BigDecimal);
+    method public java.math.BigDecimal subtract(java.math.BigDecimal, java.math.MathContext);
+    method public java.math.BigInteger toBigInteger();
+    method public java.math.BigInteger toBigIntegerExact();
+    method public String toEngineeringString();
+    method public String toPlainString();
+    method public java.math.BigDecimal ulp();
+    method public java.math.BigInteger unscaledValue();
+    method public static java.math.BigDecimal valueOf(long, int);
+    method public static java.math.BigDecimal valueOf(long);
+    method public static java.math.BigDecimal valueOf(double);
+    field public static final java.math.BigDecimal ONE;
+    field public static final int ROUND_CEILING = 2; // 0x2
+    field public static final int ROUND_DOWN = 1; // 0x1
+    field public static final int ROUND_FLOOR = 3; // 0x3
+    field public static final int ROUND_HALF_DOWN = 5; // 0x5
+    field public static final int ROUND_HALF_EVEN = 6; // 0x6
+    field public static final int ROUND_HALF_UP = 4; // 0x4
+    field public static final int ROUND_UNNECESSARY = 7; // 0x7
+    field public static final int ROUND_UP = 0; // 0x0
+    field public static final java.math.BigDecimal TEN;
+    field public static final java.math.BigDecimal ZERO;
+  }
+
+  public class BigInteger extends java.lang.Number implements java.lang.Comparable<java.math.BigInteger> {
+    ctor public BigInteger(byte[]);
+    ctor public BigInteger(int, byte[]);
+    ctor public BigInteger(@NonNull String, int);
+    ctor public BigInteger(@NonNull String);
+    ctor public BigInteger(int, @NonNull java.util.Random);
+    ctor public BigInteger(int, int, @NonNull java.util.Random);
+    method @NonNull public java.math.BigInteger abs();
+    method @NonNull public java.math.BigInteger add(@NonNull java.math.BigInteger);
+    method @NonNull public java.math.BigInteger and(@NonNull java.math.BigInteger);
+    method @NonNull public java.math.BigInteger andNot(@NonNull java.math.BigInteger);
+    method public int bitCount();
+    method public int bitLength();
+    method public byte byteValueExact();
+    method @NonNull public java.math.BigInteger clearBit(int);
+    method public int compareTo(@NonNull java.math.BigInteger);
+    method @NonNull public java.math.BigInteger divide(@NonNull java.math.BigInteger);
+    method @NonNull public java.math.BigInteger[] divideAndRemainder(@NonNull java.math.BigInteger);
+    method public double doubleValue();
+    method @NonNull public java.math.BigInteger flipBit(int);
+    method public float floatValue();
+    method @NonNull public java.math.BigInteger gcd(@NonNull java.math.BigInteger);
+    method public int getLowestSetBit();
+    method public int intValue();
+    method public int intValueExact();
+    method public boolean isProbablePrime(int);
+    method public long longValue();
+    method public long longValueExact();
+    method @NonNull public java.math.BigInteger max(@NonNull java.math.BigInteger);
+    method @NonNull public java.math.BigInteger min(@NonNull java.math.BigInteger);
+    method @NonNull public java.math.BigInteger mod(@NonNull java.math.BigInteger);
+    method @NonNull public java.math.BigInteger modInverse(@NonNull java.math.BigInteger);
+    method @NonNull public java.math.BigInteger modPow(@NonNull java.math.BigInteger, @NonNull java.math.BigInteger);
+    method @NonNull public java.math.BigInteger multiply(@NonNull java.math.BigInteger);
+    method @NonNull public java.math.BigInteger negate();
+    method @NonNull public java.math.BigInteger nextProbablePrime();
+    method @NonNull public java.math.BigInteger not();
+    method @NonNull public java.math.BigInteger or(@NonNull java.math.BigInteger);
+    method @NonNull public java.math.BigInteger pow(int);
+    method @NonNull public static java.math.BigInteger probablePrime(int, @NonNull java.util.Random);
+    method @NonNull public java.math.BigInteger remainder(@NonNull java.math.BigInteger);
+    method @NonNull public java.math.BigInteger setBit(int);
+    method @NonNull public java.math.BigInteger shiftLeft(int);
+    method @NonNull public java.math.BigInteger shiftRight(int);
+    method public short shortValueExact();
+    method public int signum();
+    method @NonNull public java.math.BigInteger subtract(@NonNull java.math.BigInteger);
+    method public boolean testBit(int);
+    method public byte[] toByteArray();
+    method @NonNull public String toString(int);
+    method @NonNull public static java.math.BigInteger valueOf(long);
+    method @NonNull public java.math.BigInteger xor(@NonNull java.math.BigInteger);
+    field @NonNull public static final java.math.BigInteger ONE;
+    field @NonNull public static final java.math.BigInteger TEN;
+    field @NonNull public static final java.math.BigInteger ZERO;
+  }
+
+  public final class MathContext implements java.io.Serializable {
+    ctor public MathContext(int);
+    ctor public MathContext(int, java.math.RoundingMode);
+    ctor public MathContext(String);
+    method public int getPrecision();
+    method public java.math.RoundingMode getRoundingMode();
+    field public static final java.math.MathContext DECIMAL128;
+    field public static final java.math.MathContext DECIMAL32;
+    field public static final java.math.MathContext DECIMAL64;
+    field public static final java.math.MathContext UNLIMITED;
+  }
+
+  public enum RoundingMode {
+    method public static java.math.RoundingMode valueOf(int);
+    enum_constant public static final java.math.RoundingMode CEILING;
+    enum_constant public static final java.math.RoundingMode DOWN;
+    enum_constant public static final java.math.RoundingMode FLOOR;
+    enum_constant public static final java.math.RoundingMode HALF_DOWN;
+    enum_constant public static final java.math.RoundingMode HALF_EVEN;
+    enum_constant public static final java.math.RoundingMode HALF_UP;
+    enum_constant public static final java.math.RoundingMode UNNECESSARY;
+    enum_constant public static final java.math.RoundingMode UP;
+  }
+
+}
+
+package java.net {
+
+  public abstract class Authenticator {
+    ctor public Authenticator();
+    method protected java.net.PasswordAuthentication getPasswordAuthentication();
+    method protected final String getRequestingHost();
+    method protected final int getRequestingPort();
+    method protected final String getRequestingPrompt();
+    method protected final String getRequestingProtocol();
+    method protected final String getRequestingScheme();
+    method protected final java.net.InetAddress getRequestingSite();
+    method protected java.net.URL getRequestingURL();
+    method protected java.net.Authenticator.RequestorType getRequestorType();
+    method public static java.net.PasswordAuthentication requestPasswordAuthentication(java.net.InetAddress, int, String, String, String);
+    method public static java.net.PasswordAuthentication requestPasswordAuthentication(String, java.net.InetAddress, int, String, String, String);
+    method public static java.net.PasswordAuthentication requestPasswordAuthentication(String, java.net.InetAddress, int, String, String, String, java.net.URL, java.net.Authenticator.RequestorType);
+    method public static void setDefault(java.net.Authenticator);
+  }
+
+  public enum Authenticator.RequestorType {
+    enum_constant public static final java.net.Authenticator.RequestorType PROXY;
+    enum_constant public static final java.net.Authenticator.RequestorType SERVER;
+  }
+
+  public class BindException extends java.net.SocketException {
+    ctor public BindException(String);
+    ctor public BindException();
+  }
+
+  public abstract class CacheRequest {
+    ctor public CacheRequest();
+    method public abstract void abort();
+    method public abstract java.io.OutputStream getBody() throws java.io.IOException;
+  }
+
+  public abstract class CacheResponse {
+    ctor public CacheResponse();
+    method public abstract java.io.InputStream getBody() throws java.io.IOException;
+    method public abstract java.util.Map<java.lang.String,java.util.List<java.lang.String>> getHeaders() throws java.io.IOException;
+  }
+
+  public class ConnectException extends java.net.SocketException {
+    ctor public ConnectException(String);
+    ctor public ConnectException();
+  }
+
+  public abstract class ContentHandler {
+    ctor public ContentHandler();
+    method public abstract Object getContent(java.net.URLConnection) throws java.io.IOException;
+    method public Object getContent(java.net.URLConnection, Class[]) throws java.io.IOException;
+  }
+
+  public interface ContentHandlerFactory {
+    method public java.net.ContentHandler createContentHandler(String);
+  }
+
+  public abstract class CookieHandler {
+    ctor public CookieHandler();
+    method public abstract java.util.Map<java.lang.String,java.util.List<java.lang.String>> get(java.net.URI, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
+    method public static java.net.CookieHandler getDefault();
+    method public abstract void put(java.net.URI, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
+    method public static void setDefault(java.net.CookieHandler);
+  }
+
+  public class CookieManager extends java.net.CookieHandler {
+    ctor public CookieManager();
+    ctor public CookieManager(java.net.CookieStore, java.net.CookiePolicy);
+    method public java.util.Map<java.lang.String,java.util.List<java.lang.String>> get(java.net.URI, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
+    method public java.net.CookieStore getCookieStore();
+    method public void put(java.net.URI, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
+    method public void setCookiePolicy(java.net.CookiePolicy);
+  }
+
+  public interface CookiePolicy {
+    method public boolean shouldAccept(java.net.URI, java.net.HttpCookie);
+    field public static final java.net.CookiePolicy ACCEPT_ALL;
+    field public static final java.net.CookiePolicy ACCEPT_NONE;
+    field public static final java.net.CookiePolicy ACCEPT_ORIGINAL_SERVER;
+  }
+
+  public interface CookieStore {
+    method public void add(java.net.URI, java.net.HttpCookie);
+    method public java.util.List<java.net.HttpCookie> get(java.net.URI);
+    method public java.util.List<java.net.HttpCookie> getCookies();
+    method public java.util.List<java.net.URI> getURIs();
+    method public boolean remove(java.net.URI, java.net.HttpCookie);
+    method public boolean removeAll();
+  }
+
+  public final class DatagramPacket {
+    ctor public DatagramPacket(byte[], int, int);
+    ctor public DatagramPacket(byte[], int);
+    ctor public DatagramPacket(byte[], int, int, java.net.InetAddress, int);
+    ctor public DatagramPacket(byte[], int, int, java.net.SocketAddress);
+    ctor public DatagramPacket(byte[], int, java.net.InetAddress, int);
+    ctor public DatagramPacket(byte[], int, java.net.SocketAddress);
+    method public java.net.InetAddress getAddress();
+    method public byte[] getData();
+    method public int getLength();
+    method public int getOffset();
+    method public int getPort();
+    method public java.net.SocketAddress getSocketAddress();
+    method public void setAddress(java.net.InetAddress);
+    method public void setData(byte[], int, int);
+    method public void setData(byte[]);
+    method public void setLength(int);
+    method public void setPort(int);
+    method public void setSocketAddress(java.net.SocketAddress);
+  }
+
+  public class DatagramSocket implements java.io.Closeable {
+    ctor public DatagramSocket() throws java.net.SocketException;
+    ctor protected DatagramSocket(java.net.DatagramSocketImpl);
+    ctor public DatagramSocket(java.net.SocketAddress) throws java.net.SocketException;
+    ctor public DatagramSocket(int) throws java.net.SocketException;
+    ctor public DatagramSocket(int, java.net.InetAddress) throws java.net.SocketException;
+    method public void bind(java.net.SocketAddress) throws java.net.SocketException;
+    method public void close();
+    method public void connect(java.net.InetAddress, int);
+    method public void connect(java.net.SocketAddress) throws java.net.SocketException;
+    method public void disconnect();
+    method public boolean getBroadcast() throws java.net.SocketException;
+    method public java.nio.channels.DatagramChannel getChannel();
+    method public java.net.InetAddress getInetAddress();
+    method public java.net.InetAddress getLocalAddress();
+    method public int getLocalPort();
+    method public java.net.SocketAddress getLocalSocketAddress();
+    method public int getPort();
+    method public int getReceiveBufferSize() throws java.net.SocketException;
+    method public java.net.SocketAddress getRemoteSocketAddress();
+    method public boolean getReuseAddress() throws java.net.SocketException;
+    method public int getSendBufferSize() throws java.net.SocketException;
+    method public int getSoTimeout() throws java.net.SocketException;
+    method public int getTrafficClass() throws java.net.SocketException;
+    method public boolean isBound();
+    method public boolean isClosed();
+    method public boolean isConnected();
+    method public void receive(java.net.DatagramPacket) throws java.io.IOException;
+    method public void send(java.net.DatagramPacket) throws java.io.IOException;
+    method public void setBroadcast(boolean) throws java.net.SocketException;
+    method public static void setDatagramSocketImplFactory(java.net.DatagramSocketImplFactory) throws java.io.IOException;
+    method public void setReceiveBufferSize(int) throws java.net.SocketException;
+    method public void setReuseAddress(boolean) throws java.net.SocketException;
+    method public void setSendBufferSize(int) throws java.net.SocketException;
+    method public void setSoTimeout(int) throws java.net.SocketException;
+    method public void setTrafficClass(int) throws java.net.SocketException;
+  }
+
+  public abstract class DatagramSocketImpl implements java.net.SocketOptions {
+    ctor public DatagramSocketImpl();
+    method protected abstract void bind(int, java.net.InetAddress) throws java.net.SocketException;
+    method protected abstract void close();
+    method protected void connect(java.net.InetAddress, int) throws java.net.SocketException;
+    method protected abstract void create() throws java.net.SocketException;
+    method protected void disconnect();
+    method protected java.io.FileDescriptor getFileDescriptor();
+    method protected int getLocalPort();
+    method @Deprecated protected abstract byte getTTL() throws java.io.IOException;
+    method protected abstract int getTimeToLive() throws java.io.IOException;
+    method protected abstract void join(java.net.InetAddress) throws java.io.IOException;
+    method protected abstract void joinGroup(java.net.SocketAddress, java.net.NetworkInterface) throws java.io.IOException;
+    method protected abstract void leave(java.net.InetAddress) throws java.io.IOException;
+    method protected abstract void leaveGroup(java.net.SocketAddress, java.net.NetworkInterface) throws java.io.IOException;
+    method protected abstract int peek(java.net.InetAddress) throws java.io.IOException;
+    method protected abstract int peekData(java.net.DatagramPacket) throws java.io.IOException;
+    method protected abstract void receive(java.net.DatagramPacket) throws java.io.IOException;
+    method protected abstract void send(java.net.DatagramPacket) throws java.io.IOException;
+    method @Deprecated protected abstract void setTTL(byte) throws java.io.IOException;
+    method protected abstract void setTimeToLive(int) throws java.io.IOException;
+    field protected java.io.FileDescriptor fd;
+    field protected int localPort;
+  }
+
+  public interface DatagramSocketImplFactory {
+    method public java.net.DatagramSocketImpl createDatagramSocketImpl();
+  }
+
+  public interface FileNameMap {
+    method public String getContentTypeFor(String);
+  }
+
+  public final class HttpCookie implements java.lang.Cloneable {
+    ctor public HttpCookie(String, String);
+    method public Object clone();
+    method public static boolean domainMatches(String, String);
+    method public String getComment();
+    method public String getCommentURL();
+    method public boolean getDiscard();
+    method public String getDomain();
+    method public long getMaxAge();
+    method public String getName();
+    method public String getPath();
+    method public String getPortlist();
+    method public boolean getSecure();
+    method public String getValue();
+    method public int getVersion();
+    method public boolean hasExpired();
+    method public boolean isHttpOnly();
+    method public static java.util.List<java.net.HttpCookie> parse(String);
+    method public void setComment(String);
+    method public void setCommentURL(String);
+    method public void setDiscard(boolean);
+    method public void setDomain(String);
+    method public void setHttpOnly(boolean);
+    method public void setMaxAge(long);
+    method public void setPath(String);
+    method public void setPortlist(String);
+    method public void setSecure(boolean);
+    method public void setValue(String);
+    method public void setVersion(int);
+  }
+
+  public class HttpRetryException extends java.io.IOException {
+    ctor public HttpRetryException(String, int);
+    ctor public HttpRetryException(String, int, String);
+    method public String getLocation();
+    method public String getReason();
+    method public int responseCode();
+  }
+
+  public abstract class HttpURLConnection extends java.net.URLConnection {
+    ctor protected HttpURLConnection(java.net.URL);
+    method public abstract void disconnect();
+    method public java.io.InputStream getErrorStream();
+    method public static boolean getFollowRedirects();
+    method public boolean getInstanceFollowRedirects();
+    method public String getRequestMethod();
+    method public int getResponseCode() throws java.io.IOException;
+    method public String getResponseMessage() throws java.io.IOException;
+    method public void setChunkedStreamingMode(int);
+    method public void setFixedLengthStreamingMode(int);
+    method public void setFixedLengthStreamingMode(long);
+    method public static void setFollowRedirects(boolean);
+    method public void setInstanceFollowRedirects(boolean);
+    method public void setRequestMethod(String) throws java.net.ProtocolException;
+    method public abstract boolean usingProxy();
+    field public static final int HTTP_ACCEPTED = 202; // 0xca
+    field public static final int HTTP_BAD_GATEWAY = 502; // 0x1f6
+    field public static final int HTTP_BAD_METHOD = 405; // 0x195
+    field public static final int HTTP_BAD_REQUEST = 400; // 0x190
+    field public static final int HTTP_CLIENT_TIMEOUT = 408; // 0x198
+    field public static final int HTTP_CONFLICT = 409; // 0x199
+    field public static final int HTTP_CREATED = 201; // 0xc9
+    field public static final int HTTP_ENTITY_TOO_LARGE = 413; // 0x19d
+    field public static final int HTTP_FORBIDDEN = 403; // 0x193
+    field public static final int HTTP_GATEWAY_TIMEOUT = 504; // 0x1f8
+    field public static final int HTTP_GONE = 410; // 0x19a
+    field public static final int HTTP_INTERNAL_ERROR = 500; // 0x1f4
+    field public static final int HTTP_LENGTH_REQUIRED = 411; // 0x19b
+    field public static final int HTTP_MOVED_PERM = 301; // 0x12d
+    field public static final int HTTP_MOVED_TEMP = 302; // 0x12e
+    field public static final int HTTP_MULT_CHOICE = 300; // 0x12c
+    field public static final int HTTP_NOT_ACCEPTABLE = 406; // 0x196
+    field public static final int HTTP_NOT_AUTHORITATIVE = 203; // 0xcb
+    field public static final int HTTP_NOT_FOUND = 404; // 0x194
+    field public static final int HTTP_NOT_IMPLEMENTED = 501; // 0x1f5
+    field public static final int HTTP_NOT_MODIFIED = 304; // 0x130
+    field public static final int HTTP_NO_CONTENT = 204; // 0xcc
+    field public static final int HTTP_OK = 200; // 0xc8
+    field public static final int HTTP_PARTIAL = 206; // 0xce
+    field public static final int HTTP_PAYMENT_REQUIRED = 402; // 0x192
+    field public static final int HTTP_PRECON_FAILED = 412; // 0x19c
+    field public static final int HTTP_PROXY_AUTH = 407; // 0x197
+    field public static final int HTTP_REQ_TOO_LONG = 414; // 0x19e
+    field public static final int HTTP_RESET = 205; // 0xcd
+    field public static final int HTTP_SEE_OTHER = 303; // 0x12f
+    field @Deprecated public static final int HTTP_SERVER_ERROR = 500; // 0x1f4
+    field public static final int HTTP_UNAUTHORIZED = 401; // 0x191
+    field public static final int HTTP_UNAVAILABLE = 503; // 0x1f7
+    field public static final int HTTP_UNSUPPORTED_TYPE = 415; // 0x19f
+    field public static final int HTTP_USE_PROXY = 305; // 0x131
+    field public static final int HTTP_VERSION = 505; // 0x1f9
+    field protected int chunkLength;
+    field protected int fixedContentLength;
+    field protected long fixedContentLengthLong;
+    field protected boolean instanceFollowRedirects;
+    field protected String method;
+    field protected int responseCode;
+    field protected String responseMessage;
+  }
+
+  public final class IDN {
+    method public static String toASCII(String, int);
+    method public static String toASCII(String);
+    method public static String toUnicode(String, int);
+    method public static String toUnicode(String);
+    field public static final int ALLOW_UNASSIGNED = 1; // 0x1
+    field public static final int USE_STD3_ASCII_RULES = 2; // 0x2
+  }
+
+  public final class Inet4Address extends java.net.InetAddress {
+  }
+
+  public final class Inet6Address extends java.net.InetAddress {
+    method public static java.net.Inet6Address getByAddress(String, byte[], java.net.NetworkInterface) throws java.net.UnknownHostException;
+    method public static java.net.Inet6Address getByAddress(String, byte[], int) throws java.net.UnknownHostException;
+    method public int getScopeId();
+    method public java.net.NetworkInterface getScopedInterface();
+    method public boolean isIPv4CompatibleAddress();
+  }
+
+  public class InetAddress implements java.io.Serializable {
+    method public byte[] getAddress();
+    method public static java.net.InetAddress[] getAllByName(String) throws java.net.UnknownHostException;
+    method public static java.net.InetAddress getByAddress(String, byte[]) throws java.net.UnknownHostException;
+    method public static java.net.InetAddress getByAddress(byte[]) throws java.net.UnknownHostException;
+    method public static java.net.InetAddress getByName(String) throws java.net.UnknownHostException;
+    method public String getCanonicalHostName();
+    method public String getHostAddress();
+    method public String getHostName();
+    method public static java.net.InetAddress getLocalHost() throws java.net.UnknownHostException;
+    method public static java.net.InetAddress getLoopbackAddress();
+    method public boolean isAnyLocalAddress();
+    method public boolean isLinkLocalAddress();
+    method public boolean isLoopbackAddress();
+    method public boolean isMCGlobal();
+    method public boolean isMCLinkLocal();
+    method public boolean isMCNodeLocal();
+    method public boolean isMCOrgLocal();
+    method public boolean isMCSiteLocal();
+    method public boolean isMulticastAddress();
+    method public boolean isReachable(int) throws java.io.IOException;
+    method public boolean isReachable(java.net.NetworkInterface, int, int) throws java.io.IOException;
+    method public boolean isSiteLocalAddress();
+  }
+
+  public class InetSocketAddress extends java.net.SocketAddress {
+    ctor public InetSocketAddress(int);
+    ctor public InetSocketAddress(java.net.InetAddress, int);
+    ctor public InetSocketAddress(String, int);
+    method public static java.net.InetSocketAddress createUnresolved(String, int);
+    method public final boolean equals(Object);
+    method public final java.net.InetAddress getAddress();
+    method public final String getHostName();
+    method public final String getHostString();
+    method public final int getPort();
+    method public final int hashCode();
+    method public final boolean isUnresolved();
+  }
+
+  public class InterfaceAddress {
+    method public java.net.InetAddress getAddress();
+    method public java.net.InetAddress getBroadcast();
+    method public short getNetworkPrefixLength();
+  }
+
+  public abstract class JarURLConnection extends java.net.URLConnection {
+    ctor protected JarURLConnection(java.net.URL) throws java.net.MalformedURLException;
+    method public java.util.jar.Attributes getAttributes() throws java.io.IOException;
+    method public java.security.cert.Certificate[] getCertificates() throws java.io.IOException;
+    method public String getEntryName();
+    method public java.util.jar.JarEntry getJarEntry() throws java.io.IOException;
+    method public abstract java.util.jar.JarFile getJarFile() throws java.io.IOException;
+    method public java.net.URL getJarFileURL();
+    method public java.util.jar.Attributes getMainAttributes() throws java.io.IOException;
+    method public java.util.jar.Manifest getManifest() throws java.io.IOException;
+    field protected java.net.URLConnection jarFileURLConnection;
+  }
+
+  public class MalformedURLException extends java.io.IOException {
+    ctor public MalformedURLException();
+    ctor public MalformedURLException(String);
+  }
+
+  public class MulticastSocket extends java.net.DatagramSocket {
+    ctor public MulticastSocket() throws java.io.IOException;
+    ctor public MulticastSocket(int) throws java.io.IOException;
+    ctor public MulticastSocket(java.net.SocketAddress) throws java.io.IOException;
+    method public java.net.InetAddress getInterface() throws java.net.SocketException;
+    method public boolean getLoopbackMode() throws java.net.SocketException;
+    method public java.net.NetworkInterface getNetworkInterface() throws java.net.SocketException;
+    method @Deprecated public byte getTTL() throws java.io.IOException;
+    method public int getTimeToLive() throws java.io.IOException;
+    method public void joinGroup(java.net.InetAddress) throws java.io.IOException;
+    method public void joinGroup(java.net.SocketAddress, java.net.NetworkInterface) throws java.io.IOException;
+    method public void leaveGroup(java.net.InetAddress) throws java.io.IOException;
+    method public void leaveGroup(java.net.SocketAddress, java.net.NetworkInterface) throws java.io.IOException;
+    method @Deprecated public void send(java.net.DatagramPacket, byte) throws java.io.IOException;
+    method public void setInterface(java.net.InetAddress) throws java.net.SocketException;
+    method public void setLoopbackMode(boolean) throws java.net.SocketException;
+    method public void setNetworkInterface(java.net.NetworkInterface) throws java.net.SocketException;
+    method @Deprecated public void setTTL(byte) throws java.io.IOException;
+    method public void setTimeToLive(int) throws java.io.IOException;
+  }
+
+  public final class NetPermission extends java.security.BasicPermission {
+    ctor public NetPermission(String);
+    ctor public NetPermission(String, String);
+  }
+
+  public final class NetworkInterface {
+    method public static java.net.NetworkInterface getByIndex(int) throws java.net.SocketException;
+    method public static java.net.NetworkInterface getByInetAddress(java.net.InetAddress) throws java.net.SocketException;
+    method public static java.net.NetworkInterface getByName(String) throws java.net.SocketException;
+    method public String getDisplayName();
+    method public byte[] getHardwareAddress() throws java.net.SocketException;
+    method public int getIndex();
+    method public java.util.Enumeration<java.net.InetAddress> getInetAddresses();
+    method public java.util.List<java.net.InterfaceAddress> getInterfaceAddresses();
+    method public int getMTU() throws java.net.SocketException;
+    method public String getName();
+    method public static java.util.Enumeration<java.net.NetworkInterface> getNetworkInterfaces() throws java.net.SocketException;
+    method public java.net.NetworkInterface getParent();
+    method public java.util.Enumeration<java.net.NetworkInterface> getSubInterfaces();
+    method public boolean isLoopback() throws java.net.SocketException;
+    method public boolean isPointToPoint() throws java.net.SocketException;
+    method public boolean isUp() throws java.net.SocketException;
+    method public boolean isVirtual();
+    method public boolean supportsMulticast() throws java.net.SocketException;
+  }
+
+  public class NoRouteToHostException extends java.net.SocketException {
+    ctor public NoRouteToHostException(String);
+    ctor public NoRouteToHostException();
+  }
+
+  public final class PasswordAuthentication {
+    ctor public PasswordAuthentication(String, char[]);
+    method public char[] getPassword();
+    method public String getUserName();
+  }
+
+  public class PortUnreachableException extends java.net.SocketException {
+    ctor public PortUnreachableException(String);
+    ctor public PortUnreachableException();
+  }
+
+  public class ProtocolException extends java.io.IOException {
+    ctor public ProtocolException(String);
+    ctor public ProtocolException();
+  }
+
+  public interface ProtocolFamily {
+    method public String name();
+  }
+
+  public class Proxy {
+    ctor public Proxy(java.net.Proxy.Type, java.net.SocketAddress);
+    method public java.net.SocketAddress address();
+    method public final boolean equals(Object);
+    method public final int hashCode();
+    method public java.net.Proxy.Type type();
+    field public static final java.net.Proxy NO_PROXY;
+  }
+
+  public enum Proxy.Type {
+    enum_constant public static final java.net.Proxy.Type DIRECT;
+    enum_constant public static final java.net.Proxy.Type HTTP;
+    enum_constant public static final java.net.Proxy.Type SOCKS;
+  }
+
+  public abstract class ProxySelector {
+    ctor public ProxySelector();
+    method public abstract void connectFailed(java.net.URI, java.net.SocketAddress, java.io.IOException);
+    method public static java.net.ProxySelector getDefault();
+    method public abstract java.util.List<java.net.Proxy> select(java.net.URI);
+    method public static void setDefault(java.net.ProxySelector);
+  }
+
+  public abstract class ResponseCache {
+    ctor public ResponseCache();
+    method public abstract java.net.CacheResponse get(java.net.URI, String, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
+    method public static java.net.ResponseCache getDefault();
+    method public abstract java.net.CacheRequest put(java.net.URI, java.net.URLConnection) throws java.io.IOException;
+    method public static void setDefault(java.net.ResponseCache);
+  }
+
+  public abstract class SecureCacheResponse extends java.net.CacheResponse {
+    ctor public SecureCacheResponse();
+    method public abstract String getCipherSuite();
+    method public abstract java.util.List<java.security.cert.Certificate> getLocalCertificateChain();
+    method public abstract java.security.Principal getLocalPrincipal();
+    method public abstract java.security.Principal getPeerPrincipal() throws javax.net.ssl.SSLPeerUnverifiedException;
+    method public abstract java.util.List<java.security.cert.Certificate> getServerCertificateChain() throws javax.net.ssl.SSLPeerUnverifiedException;
+  }
+
+  public class ServerSocket implements java.io.Closeable {
+    ctor public ServerSocket() throws java.io.IOException;
+    ctor public ServerSocket(int) throws java.io.IOException;
+    ctor public ServerSocket(int, int) throws java.io.IOException;
+    ctor public ServerSocket(int, int, java.net.InetAddress) throws java.io.IOException;
+    method public java.net.Socket accept() throws java.io.IOException;
+    method public void bind(java.net.SocketAddress) throws java.io.IOException;
+    method public void bind(java.net.SocketAddress, int) throws java.io.IOException;
+    method public void close() throws java.io.IOException;
+    method public java.nio.channels.ServerSocketChannel getChannel();
+    method public java.net.InetAddress getInetAddress();
+    method public int getLocalPort();
+    method public java.net.SocketAddress getLocalSocketAddress();
+    method public int getReceiveBufferSize() throws java.net.SocketException;
+    method public boolean getReuseAddress() throws java.net.SocketException;
+    method public int getSoTimeout() throws java.io.IOException;
+    method protected final void implAccept(java.net.Socket) throws java.io.IOException;
+    method public boolean isBound();
+    method public boolean isClosed();
+    method public void setPerformancePreferences(int, int, int);
+    method public void setReceiveBufferSize(int) throws java.net.SocketException;
+    method public void setReuseAddress(boolean) throws java.net.SocketException;
+    method public void setSoTimeout(int) throws java.net.SocketException;
+    method public static void setSocketFactory(java.net.SocketImplFactory) throws java.io.IOException;
+  }
+
+  public class Socket implements java.io.Closeable {
+    ctor public Socket();
+    ctor public Socket(java.net.Proxy);
+    ctor protected Socket(java.net.SocketImpl) throws java.net.SocketException;
+    ctor public Socket(String, int) throws java.io.IOException, java.net.UnknownHostException;
+    ctor public Socket(java.net.InetAddress, int) throws java.io.IOException;
+    ctor public Socket(String, int, java.net.InetAddress, int) throws java.io.IOException;
+    ctor public Socket(java.net.InetAddress, int, java.net.InetAddress, int) throws java.io.IOException;
+    ctor @Deprecated public Socket(String, int, boolean) throws java.io.IOException;
+    ctor @Deprecated public Socket(java.net.InetAddress, int, boolean) throws java.io.IOException;
+    method public void bind(java.net.SocketAddress) throws java.io.IOException;
+    method public void close() throws java.io.IOException;
+    method public void connect(java.net.SocketAddress) throws java.io.IOException;
+    method public void connect(java.net.SocketAddress, int) throws java.io.IOException;
+    method public java.nio.channels.SocketChannel getChannel();
+    method public java.net.InetAddress getInetAddress();
+    method public java.io.InputStream getInputStream() throws java.io.IOException;
+    method public boolean getKeepAlive() throws java.net.SocketException;
+    method public java.net.InetAddress getLocalAddress();
+    method public int getLocalPort();
+    method public java.net.SocketAddress getLocalSocketAddress();
+    method public boolean getOOBInline() throws java.net.SocketException;
+    method public java.io.OutputStream getOutputStream() throws java.io.IOException;
+    method public int getPort();
+    method public int getReceiveBufferSize() throws java.net.SocketException;
+    method public java.net.SocketAddress getRemoteSocketAddress();
+    method public boolean getReuseAddress() throws java.net.SocketException;
+    method public int getSendBufferSize() throws java.net.SocketException;
+    method public int getSoLinger() throws java.net.SocketException;
+    method public int getSoTimeout() throws java.net.SocketException;
+    method public boolean getTcpNoDelay() throws java.net.SocketException;
+    method public int getTrafficClass() throws java.net.SocketException;
+    method public boolean isBound();
+    method public boolean isClosed();
+    method public boolean isConnected();
+    method public boolean isInputShutdown();
+    method public boolean isOutputShutdown();
+    method public void sendUrgentData(int) throws java.io.IOException;
+    method public void setKeepAlive(boolean) throws java.net.SocketException;
+    method public void setOOBInline(boolean) throws java.net.SocketException;
+    method public void setPerformancePreferences(int, int, int);
+    method public void setReceiveBufferSize(int) throws java.net.SocketException;
+    method public void setReuseAddress(boolean) throws java.net.SocketException;
+    method public void setSendBufferSize(int) throws java.net.SocketException;
+    method public void setSoLinger(boolean, int) throws java.net.SocketException;
+    method public void setSoTimeout(int) throws java.net.SocketException;
+    method public static void setSocketImplFactory(java.net.SocketImplFactory) throws java.io.IOException;
+    method public void setTcpNoDelay(boolean) throws java.net.SocketException;
+    method public void setTrafficClass(int) throws java.net.SocketException;
+    method public void shutdownInput() throws java.io.IOException;
+    method public void shutdownOutput() throws java.io.IOException;
+  }
+
+  public abstract class SocketAddress implements java.io.Serializable {
+    ctor public SocketAddress();
+  }
+
+  public class SocketException extends java.io.IOException {
+    ctor public SocketException(String);
+    ctor public SocketException();
+  }
+
+  public abstract class SocketImpl implements java.net.SocketOptions {
+    ctor public SocketImpl();
+    method protected abstract void accept(java.net.SocketImpl) throws java.io.IOException;
+    method protected abstract int available() throws java.io.IOException;
+    method protected abstract void bind(java.net.InetAddress, int) throws java.io.IOException;
+    method protected abstract void close() throws java.io.IOException;
+    method protected abstract void connect(String, int) throws java.io.IOException;
+    method protected abstract void connect(java.net.InetAddress, int) throws java.io.IOException;
+    method protected abstract void connect(java.net.SocketAddress, int) throws java.io.IOException;
+    method protected abstract void create(boolean) throws java.io.IOException;
+    method protected java.io.FileDescriptor getFileDescriptor();
+    method protected java.net.InetAddress getInetAddress();
+    method protected abstract java.io.InputStream getInputStream() throws java.io.IOException;
+    method protected int getLocalPort();
+    method protected abstract java.io.OutputStream getOutputStream() throws java.io.IOException;
+    method protected int getPort();
+    method protected abstract void listen(int) throws java.io.IOException;
+    method protected abstract void sendUrgentData(int) throws java.io.IOException;
+    method protected void setPerformancePreferences(int, int, int);
+    method protected void shutdownInput() throws java.io.IOException;
+    method protected void shutdownOutput() throws java.io.IOException;
+    method protected boolean supportsUrgentData();
+    field protected java.net.InetAddress address;
+    field protected java.io.FileDescriptor fd;
+    field protected int localport;
+    field protected int port;
+  }
+
+  public interface SocketImplFactory {
+    method public java.net.SocketImpl createSocketImpl();
+  }
+
+  public interface SocketOption<T> {
+    method public String name();
+    method public Class<T> type();
+  }
+
+  public interface SocketOptions {
+    method public Object getOption(int) throws java.net.SocketException;
+    method public void setOption(int, Object) throws java.net.SocketException;
+    field public static final int IP_MULTICAST_IF = 16; // 0x10
+    field public static final int IP_MULTICAST_IF2 = 31; // 0x1f
+    field public static final int IP_MULTICAST_LOOP = 18; // 0x12
+    field public static final int IP_TOS = 3; // 0x3
+    field public static final int SO_BINDADDR = 15; // 0xf
+    field public static final int SO_BROADCAST = 32; // 0x20
+    field public static final int SO_KEEPALIVE = 8; // 0x8
+    field public static final int SO_LINGER = 128; // 0x80
+    field public static final int SO_OOBINLINE = 4099; // 0x1003
+    field public static final int SO_RCVBUF = 4098; // 0x1002
+    field public static final int SO_REUSEADDR = 4; // 0x4
+    field public static final int SO_SNDBUF = 4097; // 0x1001
+    field public static final int SO_TIMEOUT = 4102; // 0x1006
+    field public static final int TCP_NODELAY = 1; // 0x1
+  }
+
+  public final class SocketPermission extends java.security.Permission implements java.io.Serializable {
+    ctor public SocketPermission(String, String);
+    method public String getActions();
+    method public boolean implies(java.security.Permission);
+  }
+
+  public class SocketTimeoutException extends java.io.InterruptedIOException {
+    ctor public SocketTimeoutException(String);
+    ctor public SocketTimeoutException();
+  }
+
+  public enum StandardProtocolFamily implements java.net.ProtocolFamily {
+    enum_constant public static final java.net.StandardProtocolFamily INET;
+    enum_constant public static final java.net.StandardProtocolFamily INET6;
+  }
+
+  public final class StandardSocketOptions {
+    field public static final java.net.SocketOption<java.net.NetworkInterface> IP_MULTICAST_IF;
+    field public static final java.net.SocketOption<java.lang.Boolean> IP_MULTICAST_LOOP;
+    field public static final java.net.SocketOption<java.lang.Integer> IP_MULTICAST_TTL;
+    field public static final java.net.SocketOption<java.lang.Integer> IP_TOS;
+    field public static final java.net.SocketOption<java.lang.Boolean> SO_BROADCAST;
+    field public static final java.net.SocketOption<java.lang.Boolean> SO_KEEPALIVE;
+    field public static final java.net.SocketOption<java.lang.Integer> SO_LINGER;
+    field public static final java.net.SocketOption<java.lang.Integer> SO_RCVBUF;
+    field public static final java.net.SocketOption<java.lang.Boolean> SO_REUSEADDR;
+    field public static final java.net.SocketOption<java.lang.Integer> SO_SNDBUF;
+    field public static final java.net.SocketOption<java.lang.Boolean> TCP_NODELAY;
+  }
+
+  public final class URI implements java.lang.Comparable<java.net.URI> java.io.Serializable {
+    ctor public URI(String) throws java.net.URISyntaxException;
+    ctor public URI(String, String, String, int, String, String, String) throws java.net.URISyntaxException;
+    ctor public URI(String, String, String, String, String) throws java.net.URISyntaxException;
+    ctor public URI(String, String, String, String) throws java.net.URISyntaxException;
+    ctor public URI(String, String, String) throws java.net.URISyntaxException;
+    method public int compareTo(java.net.URI);
+    method public static java.net.URI create(String);
+    method public String getAuthority();
+    method public String getFragment();
+    method public String getHost();
+    method public String getPath();
+    method public int getPort();
+    method public String getQuery();
+    method public String getRawAuthority();
+    method public String getRawFragment();
+    method public String getRawPath();
+    method public String getRawQuery();
+    method public String getRawSchemeSpecificPart();
+    method public String getRawUserInfo();
+    method public String getScheme();
+    method public String getSchemeSpecificPart();
+    method public String getUserInfo();
+    method public boolean isAbsolute();
+    method public boolean isOpaque();
+    method public java.net.URI normalize();
+    method public java.net.URI parseServerAuthority() throws java.net.URISyntaxException;
+    method public java.net.URI relativize(java.net.URI);
+    method public java.net.URI resolve(java.net.URI);
+    method public java.net.URI resolve(String);
+    method public String toASCIIString();
+    method public java.net.URL toURL() throws java.net.MalformedURLException;
+  }
+
+  public class URISyntaxException extends java.lang.Exception {
+    ctor public URISyntaxException(String, String, int);
+    ctor public URISyntaxException(String, String);
+    method public int getIndex();
+    method public String getInput();
+    method public String getReason();
+  }
+
+  public final class URL implements java.io.Serializable {
+    ctor public URL(String, String, int, String) throws java.net.MalformedURLException;
+    ctor public URL(String, String, String) throws java.net.MalformedURLException;
+    ctor public URL(String, String, int, String, java.net.URLStreamHandler) throws java.net.MalformedURLException;
+    ctor public URL(String) throws java.net.MalformedURLException;
+    ctor public URL(java.net.URL, String) throws java.net.MalformedURLException;
+    ctor public URL(java.net.URL, String, java.net.URLStreamHandler) throws java.net.MalformedURLException;
+    method public String getAuthority();
+    method public Object getContent() throws java.io.IOException;
+    method public Object getContent(Class[]) throws java.io.IOException;
+    method public int getDefaultPort();
+    method public String getFile();
+    method public String getHost();
+    method public String getPath();
+    method public int getPort();
+    method public String getProtocol();
+    method public String getQuery();
+    method public String getRef();
+    method public String getUserInfo();
+    method public java.net.URLConnection openConnection() throws java.io.IOException;
+    method public java.net.URLConnection openConnection(java.net.Proxy) throws java.io.IOException;
+    method public java.io.InputStream openStream() throws java.io.IOException;
+    method public boolean sameFile(java.net.URL);
+    method public static void setURLStreamHandlerFactory(java.net.URLStreamHandlerFactory);
+    method public String toExternalForm();
+    method public java.net.URI toURI() throws java.net.URISyntaxException;
+  }
+
+  public class URLClassLoader extends java.security.SecureClassLoader implements java.io.Closeable {
+    ctor public URLClassLoader(java.net.URL[], ClassLoader);
+    ctor public URLClassLoader(java.net.URL[]);
+    ctor public URLClassLoader(java.net.URL[], ClassLoader, java.net.URLStreamHandlerFactory);
+    method protected void addURL(java.net.URL);
+    method public void close() throws java.io.IOException;
+    method protected Package definePackage(String, java.util.jar.Manifest, java.net.URL) throws java.lang.IllegalArgumentException;
+    method public java.net.URL findResource(String);
+    method public java.util.Enumeration<java.net.URL> findResources(String) throws java.io.IOException;
+    method public java.net.URL[] getURLs();
+    method public static java.net.URLClassLoader newInstance(java.net.URL[], ClassLoader);
+    method public static java.net.URLClassLoader newInstance(java.net.URL[]);
+  }
+
+  public abstract class URLConnection {
+    ctor protected URLConnection(java.net.URL);
+    method public void addRequestProperty(String, String);
+    method public abstract void connect() throws java.io.IOException;
+    method public boolean getAllowUserInteraction();
+    method public int getConnectTimeout();
+    method public Object getContent() throws java.io.IOException;
+    method public Object getContent(Class[]) throws java.io.IOException;
+    method public String getContentEncoding();
+    method public int getContentLength();
+    method public long getContentLengthLong();
+    method public String getContentType();
+    method public long getDate();
+    method public static boolean getDefaultAllowUserInteraction();
+    method @Deprecated public static String getDefaultRequestProperty(String);
+    method public boolean getDefaultUseCaches();
+    method public boolean getDoInput();
+    method public boolean getDoOutput();
+    method public long getExpiration();
+    method public static java.net.FileNameMap getFileNameMap();
+    method public String getHeaderField(String);
+    method public String getHeaderField(int);
+    method public long getHeaderFieldDate(String, long);
+    method public int getHeaderFieldInt(String, int);
+    method public String getHeaderFieldKey(int);
+    method public long getHeaderFieldLong(String, long);
+    method public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getHeaderFields();
+    method public long getIfModifiedSince();
+    method public java.io.InputStream getInputStream() throws java.io.IOException;
+    method public long getLastModified();
+    method public java.io.OutputStream getOutputStream() throws java.io.IOException;
+    method public java.security.Permission getPermission() throws java.io.IOException;
+    method public int getReadTimeout();
+    method public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getRequestProperties();
+    method public String getRequestProperty(String);
+    method public java.net.URL getURL();
+    method public boolean getUseCaches();
+    method public static String guessContentTypeFromName(String);
+    method public static String guessContentTypeFromStream(java.io.InputStream) throws java.io.IOException;
+    method public void setAllowUserInteraction(boolean);
+    method public void setConnectTimeout(int);
+    method public static void setContentHandlerFactory(java.net.ContentHandlerFactory);
+    method public static void setDefaultAllowUserInteraction(boolean);
+    method @Deprecated public static void setDefaultRequestProperty(String, String);
+    method public void setDefaultUseCaches(boolean);
+    method public void setDoInput(boolean);
+    method public void setDoOutput(boolean);
+    method public static void setFileNameMap(java.net.FileNameMap);
+    method public void setIfModifiedSince(long);
+    method public void setReadTimeout(int);
+    method public void setRequestProperty(String, String);
+    method public void setUseCaches(boolean);
+    field protected boolean allowUserInteraction;
+    field protected boolean connected;
+    field protected boolean doInput;
+    field protected boolean doOutput;
+    field protected long ifModifiedSince;
+    field protected java.net.URL url;
+    field protected boolean useCaches;
+  }
+
+  public class URLDecoder {
+    ctor public URLDecoder();
+    method @Deprecated public static String decode(String);
+    method public static String decode(String, String) throws java.io.UnsupportedEncodingException;
+  }
+
+  public class URLEncoder {
+    method @Deprecated public static String encode(String);
+    method public static String encode(String, String) throws java.io.UnsupportedEncodingException;
+  }
+
+  public abstract class URLStreamHandler {
+    ctor public URLStreamHandler();
+    method protected boolean equals(java.net.URL, java.net.URL);
+    method protected int getDefaultPort();
+    method protected java.net.InetAddress getHostAddress(java.net.URL);
+    method protected int hashCode(java.net.URL);
+    method protected boolean hostsEqual(java.net.URL, java.net.URL);
+    method protected abstract java.net.URLConnection openConnection(java.net.URL) throws java.io.IOException;
+    method protected java.net.URLConnection openConnection(java.net.URL, java.net.Proxy) throws java.io.IOException;
+    method protected void parseURL(java.net.URL, String, int, int);
+    method protected boolean sameFile(java.net.URL, java.net.URL);
+    method protected void setURL(java.net.URL, String, String, int, String, String, String, String, String);
+    method @Deprecated protected void setURL(java.net.URL, String, String, int, String, String);
+    method protected String toExternalForm(java.net.URL);
+  }
+
+  public interface URLStreamHandlerFactory {
+    method public java.net.URLStreamHandler createURLStreamHandler(String);
+  }
+
+  public class UnknownHostException extends java.io.IOException {
+    ctor public UnknownHostException(String);
+    ctor public UnknownHostException();
+  }
+
+  public class UnknownServiceException extends java.io.IOException {
+    ctor public UnknownServiceException();
+    ctor public UnknownServiceException(String);
+  }
+
+}
+
+package java.nio {
+
+  public abstract class Buffer {
+    method public abstract Object array();
+    method public abstract int arrayOffset();
+    method public final int capacity();
+    method public java.nio.Buffer clear();
+    method public java.nio.Buffer flip();
+    method public abstract boolean hasArray();
+    method public final boolean hasRemaining();
+    method public abstract boolean isDirect();
+    method public abstract boolean isReadOnly();
+    method public final int limit();
+    method public java.nio.Buffer limit(int);
+    method public java.nio.Buffer mark();
+    method public final int position();
+    method public java.nio.Buffer position(int);
+    method public final int remaining();
+    method public java.nio.Buffer reset();
+    method public java.nio.Buffer rewind();
+  }
+
+  public class BufferOverflowException extends java.lang.RuntimeException {
+    ctor public BufferOverflowException();
+  }
+
+  public class BufferUnderflowException extends java.lang.RuntimeException {
+    ctor public BufferUnderflowException();
+  }
+
+  public abstract class ByteBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.ByteBuffer> {
+    method @NonNull public static java.nio.ByteBuffer allocate(int);
+    method @NonNull public static java.nio.ByteBuffer allocateDirect(int);
+    method @NonNull public final byte[] array();
+    method public final int arrayOffset();
+    method @NonNull public abstract java.nio.CharBuffer asCharBuffer();
+    method @NonNull public abstract java.nio.DoubleBuffer asDoubleBuffer();
+    method @NonNull public abstract java.nio.FloatBuffer asFloatBuffer();
+    method @NonNull public abstract java.nio.IntBuffer asIntBuffer();
+    method @NonNull public abstract java.nio.LongBuffer asLongBuffer();
+    method @NonNull public abstract java.nio.ByteBuffer asReadOnlyBuffer();
+    method @NonNull public abstract java.nio.ShortBuffer asShortBuffer();
+    method @NonNull public abstract java.nio.ByteBuffer compact();
+    method public int compareTo(@NonNull java.nio.ByteBuffer);
+    method @NonNull public abstract java.nio.ByteBuffer duplicate();
+    method public abstract byte get();
+    method public abstract byte get(int);
+    method @NonNull public java.nio.ByteBuffer get(@NonNull byte[], int, int);
+    method @NonNull public java.nio.ByteBuffer get(@NonNull byte[]);
+    method public abstract char getChar();
+    method public abstract char getChar(int);
+    method public abstract double getDouble();
+    method public abstract double getDouble(int);
+    method public abstract float getFloat();
+    method public abstract float getFloat(int);
+    method public abstract int getInt();
+    method public abstract int getInt(int);
+    method public abstract long getLong();
+    method public abstract long getLong(int);
+    method public abstract short getShort();
+    method public abstract short getShort(int);
+    method public final boolean hasArray();
+    method @NonNull public final java.nio.ByteOrder order();
+    method @NonNull public final java.nio.ByteBuffer order(@NonNull java.nio.ByteOrder);
+    method @NonNull public abstract java.nio.ByteBuffer put(byte);
+    method @NonNull public abstract java.nio.ByteBuffer put(int, byte);
+    method @NonNull public java.nio.ByteBuffer put(@NonNull java.nio.ByteBuffer);
+    method @NonNull public java.nio.ByteBuffer put(@NonNull byte[], int, int);
+    method @NonNull public final java.nio.ByteBuffer put(@NonNull byte[]);
+    method @NonNull public abstract java.nio.ByteBuffer putChar(char);
+    method @NonNull public abstract java.nio.ByteBuffer putChar(int, char);
+    method @NonNull public abstract java.nio.ByteBuffer putDouble(double);
+    method @NonNull public abstract java.nio.ByteBuffer putDouble(int, double);
+    method @NonNull public abstract java.nio.ByteBuffer putFloat(float);
+    method @NonNull public abstract java.nio.ByteBuffer putFloat(int, float);
+    method @NonNull public abstract java.nio.ByteBuffer putInt(int);
+    method @NonNull public abstract java.nio.ByteBuffer putInt(int, int);
+    method @NonNull public abstract java.nio.ByteBuffer putLong(long);
+    method @NonNull public abstract java.nio.ByteBuffer putLong(int, long);
+    method @NonNull public abstract java.nio.ByteBuffer putShort(short);
+    method @NonNull public abstract java.nio.ByteBuffer putShort(int, short);
+    method @NonNull public abstract java.nio.ByteBuffer slice();
+    method @NonNull public static java.nio.ByteBuffer wrap(@NonNull byte[], int, int);
+    method @NonNull public static java.nio.ByteBuffer wrap(@NonNull byte[]);
+  }
+
+  public final class ByteOrder {
+    method public static java.nio.ByteOrder nativeOrder();
+    field public static final java.nio.ByteOrder BIG_ENDIAN;
+    field public static final java.nio.ByteOrder LITTLE_ENDIAN;
+  }
+
+  public abstract class CharBuffer extends java.nio.Buffer implements java.lang.Appendable java.lang.CharSequence java.lang.Comparable<java.nio.CharBuffer> java.lang.Readable {
+    method public static java.nio.CharBuffer allocate(int);
+    method public java.nio.CharBuffer append(CharSequence);
+    method public java.nio.CharBuffer append(CharSequence, int, int);
+    method public java.nio.CharBuffer append(char);
+    method public final char[] array();
+    method public final int arrayOffset();
+    method public abstract java.nio.CharBuffer asReadOnlyBuffer();
+    method public final char charAt(int);
+    method public abstract java.nio.CharBuffer compact();
+    method public int compareTo(java.nio.CharBuffer);
+    method public abstract java.nio.CharBuffer duplicate();
+    method public abstract char get();
+    method public abstract char get(int);
+    method public java.nio.CharBuffer get(char[], int, int);
+    method public java.nio.CharBuffer get(char[]);
+    method public final boolean hasArray();
+    method public final int length();
+    method public abstract java.nio.ByteOrder order();
+    method public abstract java.nio.CharBuffer put(char);
+    method public abstract java.nio.CharBuffer put(int, char);
+    method public java.nio.CharBuffer put(java.nio.CharBuffer);
+    method public java.nio.CharBuffer put(char[], int, int);
+    method public final java.nio.CharBuffer put(char[]);
+    method public java.nio.CharBuffer put(String, int, int);
+    method public final java.nio.CharBuffer put(String);
+    method public int read(java.nio.CharBuffer) throws java.io.IOException;
+    method public abstract java.nio.CharBuffer slice();
+    method public abstract java.nio.CharBuffer subSequence(int, int);
+    method public static java.nio.CharBuffer wrap(char[], int, int);
+    method public static java.nio.CharBuffer wrap(char[]);
+    method public static java.nio.CharBuffer wrap(CharSequence, int, int);
+    method public static java.nio.CharBuffer wrap(CharSequence);
+  }
+
+  public abstract class DoubleBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.DoubleBuffer> {
+    method public static java.nio.DoubleBuffer allocate(int);
+    method public final double[] array();
+    method public final int arrayOffset();
+    method public abstract java.nio.DoubleBuffer asReadOnlyBuffer();
+    method public abstract java.nio.DoubleBuffer compact();
+    method public int compareTo(java.nio.DoubleBuffer);
+    method public abstract java.nio.DoubleBuffer duplicate();
+    method public abstract double get();
+    method public abstract double get(int);
+    method public java.nio.DoubleBuffer get(double[], int, int);
+    method public java.nio.DoubleBuffer get(double[]);
+    method public final boolean hasArray();
+    method public abstract java.nio.ByteOrder order();
+    method public abstract java.nio.DoubleBuffer put(double);
+    method public abstract java.nio.DoubleBuffer put(int, double);
+    method public java.nio.DoubleBuffer put(java.nio.DoubleBuffer);
+    method public java.nio.DoubleBuffer put(double[], int, int);
+    method public final java.nio.DoubleBuffer put(double[]);
+    method public abstract java.nio.DoubleBuffer slice();
+    method public static java.nio.DoubleBuffer wrap(double[], int, int);
+    method public static java.nio.DoubleBuffer wrap(double[]);
+  }
+
+  public abstract class FloatBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.FloatBuffer> {
+    method public static java.nio.FloatBuffer allocate(int);
+    method public final float[] array();
+    method public final int arrayOffset();
+    method public abstract java.nio.FloatBuffer asReadOnlyBuffer();
+    method public abstract java.nio.FloatBuffer compact();
+    method public int compareTo(java.nio.FloatBuffer);
+    method public abstract java.nio.FloatBuffer duplicate();
+    method public abstract float get();
+    method public abstract float get(int);
+    method public java.nio.FloatBuffer get(float[], int, int);
+    method public java.nio.FloatBuffer get(float[]);
+    method public final boolean hasArray();
+    method public abstract java.nio.ByteOrder order();
+    method public abstract java.nio.FloatBuffer put(float);
+    method public abstract java.nio.FloatBuffer put(int, float);
+    method public java.nio.FloatBuffer put(java.nio.FloatBuffer);
+    method public java.nio.FloatBuffer put(float[], int, int);
+    method public final java.nio.FloatBuffer put(float[]);
+    method public abstract java.nio.FloatBuffer slice();
+    method public static java.nio.FloatBuffer wrap(float[], int, int);
+    method public static java.nio.FloatBuffer wrap(float[]);
+  }
+
+  public abstract class IntBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.IntBuffer> {
+    method public static java.nio.IntBuffer allocate(int);
+    method public final int[] array();
+    method public final int arrayOffset();
+    method public abstract java.nio.IntBuffer asReadOnlyBuffer();
+    method public abstract java.nio.IntBuffer compact();
+    method public int compareTo(java.nio.IntBuffer);
+    method public abstract java.nio.IntBuffer duplicate();
+    method public abstract int get();
+    method public abstract int get(int);
+    method public java.nio.IntBuffer get(int[], int, int);
+    method public java.nio.IntBuffer get(int[]);
+    method public final boolean hasArray();
+    method public abstract java.nio.ByteOrder order();
+    method public abstract java.nio.IntBuffer put(int);
+    method public abstract java.nio.IntBuffer put(int, int);
+    method public java.nio.IntBuffer put(java.nio.IntBuffer);
+    method public java.nio.IntBuffer put(int[], int, int);
+    method public final java.nio.IntBuffer put(int[]);
+    method public abstract java.nio.IntBuffer slice();
+    method public static java.nio.IntBuffer wrap(int[], int, int);
+    method public static java.nio.IntBuffer wrap(int[]);
+  }
+
+  public class InvalidMarkException extends java.lang.IllegalStateException {
+    ctor public InvalidMarkException();
+  }
+
+  public abstract class LongBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.LongBuffer> {
+    method public static java.nio.LongBuffer allocate(int);
+    method public final long[] array();
+    method public final int arrayOffset();
+    method public abstract java.nio.LongBuffer asReadOnlyBuffer();
+    method public abstract java.nio.LongBuffer compact();
+    method public int compareTo(java.nio.LongBuffer);
+    method public abstract java.nio.LongBuffer duplicate();
+    method public abstract long get();
+    method public abstract long get(int);
+    method public java.nio.LongBuffer get(long[], int, int);
+    method public java.nio.LongBuffer get(long[]);
+    method public final boolean hasArray();
+    method public abstract java.nio.ByteOrder order();
+    method public abstract java.nio.LongBuffer put(long);
+    method public abstract java.nio.LongBuffer put(int, long);
+    method public java.nio.LongBuffer put(java.nio.LongBuffer);
+    method public java.nio.LongBuffer put(long[], int, int);
+    method public final java.nio.LongBuffer put(long[]);
+    method public abstract java.nio.LongBuffer slice();
+    method public static java.nio.LongBuffer wrap(long[], int, int);
+    method public static java.nio.LongBuffer wrap(long[]);
+  }
+
+  public abstract class MappedByteBuffer extends java.nio.ByteBuffer {
+    method public final java.nio.MappedByteBuffer force();
+    method public final boolean isLoaded();
+    method public final java.nio.MappedByteBuffer load();
+  }
+
+  public class ReadOnlyBufferException extends java.lang.UnsupportedOperationException {
+    ctor public ReadOnlyBufferException();
+  }
+
+  public abstract class ShortBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.ShortBuffer> {
+    method public static java.nio.ShortBuffer allocate(int);
+    method public final short[] array();
+    method public final int arrayOffset();
+    method public abstract java.nio.ShortBuffer asReadOnlyBuffer();
+    method public abstract java.nio.ShortBuffer compact();
+    method public int compareTo(java.nio.ShortBuffer);
+    method public abstract java.nio.ShortBuffer duplicate();
+    method public abstract short get();
+    method public abstract short get(int);
+    method public java.nio.ShortBuffer get(short[], int, int);
+    method public java.nio.ShortBuffer get(short[]);
+    method public final boolean hasArray();
+    method public abstract java.nio.ByteOrder order();
+    method public abstract java.nio.ShortBuffer put(short);
+    method public abstract java.nio.ShortBuffer put(int, short);
+    method public java.nio.ShortBuffer put(java.nio.ShortBuffer);
+    method public java.nio.ShortBuffer put(short[], int, int);
+    method public final java.nio.ShortBuffer put(short[]);
+    method public abstract java.nio.ShortBuffer slice();
+    method public static java.nio.ShortBuffer wrap(short[], int, int);
+    method public static java.nio.ShortBuffer wrap(short[]);
+  }
+
+}
+
+package java.nio.channels {
+
+  public class AcceptPendingException extends java.lang.IllegalStateException {
+    ctor public AcceptPendingException();
+  }
+
+  public class AlreadyBoundException extends java.lang.IllegalStateException {
+    ctor public AlreadyBoundException();
+  }
+
+  public class AlreadyConnectedException extends java.lang.IllegalStateException {
+    ctor public AlreadyConnectedException();
+  }
+
+  public interface AsynchronousByteChannel extends java.nio.channels.AsynchronousChannel {
+    method public <A> void read(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
+    method public java.util.concurrent.Future<java.lang.Integer> read(java.nio.ByteBuffer);
+    method public <A> void write(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
+    method public java.util.concurrent.Future<java.lang.Integer> write(java.nio.ByteBuffer);
+  }
+
+  public interface AsynchronousChannel extends java.nio.channels.Channel {
+  }
+
+  public abstract class AsynchronousChannelGroup {
+    ctor protected AsynchronousChannelGroup(java.nio.channels.spi.AsynchronousChannelProvider);
+    method public abstract boolean awaitTermination(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public abstract boolean isShutdown();
+    method public abstract boolean isTerminated();
+    method public final java.nio.channels.spi.AsynchronousChannelProvider provider();
+    method public abstract void shutdown();
+    method public abstract void shutdownNow() throws java.io.IOException;
+    method public static java.nio.channels.AsynchronousChannelGroup withCachedThreadPool(java.util.concurrent.ExecutorService, int) throws java.io.IOException;
+    method public static java.nio.channels.AsynchronousChannelGroup withFixedThreadPool(int, java.util.concurrent.ThreadFactory) throws java.io.IOException;
+    method public static java.nio.channels.AsynchronousChannelGroup withThreadPool(java.util.concurrent.ExecutorService) throws java.io.IOException;
+  }
+
+  public class AsynchronousCloseException extends java.nio.channels.ClosedChannelException {
+    ctor public AsynchronousCloseException();
+  }
+
+  public abstract class AsynchronousFileChannel implements java.nio.channels.AsynchronousChannel {
+    ctor protected AsynchronousFileChannel();
+    method public abstract void force(boolean) throws java.io.IOException;
+    method public abstract <A> void lock(long, long, boolean, A, java.nio.channels.CompletionHandler<java.nio.channels.FileLock,? super A>);
+    method public final <A> void lock(A, java.nio.channels.CompletionHandler<java.nio.channels.FileLock,? super A>);
+    method public abstract java.util.concurrent.Future<java.nio.channels.FileLock> lock(long, long, boolean);
+    method public final java.util.concurrent.Future<java.nio.channels.FileLock> lock();
+    method public static java.nio.channels.AsynchronousFileChannel open(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.util.concurrent.ExecutorService, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
+    method public static java.nio.channels.AsynchronousFileChannel open(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
+    method public abstract <A> void read(java.nio.ByteBuffer, long, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
+    method public abstract java.util.concurrent.Future<java.lang.Integer> read(java.nio.ByteBuffer, long);
+    method public abstract long size() throws java.io.IOException;
+    method public abstract java.nio.channels.AsynchronousFileChannel truncate(long) throws java.io.IOException;
+    method public abstract java.nio.channels.FileLock tryLock(long, long, boolean) throws java.io.IOException;
+    method public final java.nio.channels.FileLock tryLock() throws java.io.IOException;
+    method public abstract <A> void write(java.nio.ByteBuffer, long, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
+    method public abstract java.util.concurrent.Future<java.lang.Integer> write(java.nio.ByteBuffer, long);
+  }
+
+  public abstract class AsynchronousServerSocketChannel implements java.nio.channels.AsynchronousChannel java.nio.channels.NetworkChannel {
+    ctor protected AsynchronousServerSocketChannel(java.nio.channels.spi.AsynchronousChannelProvider);
+    method public abstract <A> void accept(A, java.nio.channels.CompletionHandler<java.nio.channels.AsynchronousSocketChannel,? super A>);
+    method public abstract java.util.concurrent.Future<java.nio.channels.AsynchronousSocketChannel> accept();
+    method public final java.nio.channels.AsynchronousServerSocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
+    method public abstract java.nio.channels.AsynchronousServerSocketChannel bind(java.net.SocketAddress, int) throws java.io.IOException;
+    method public static java.nio.channels.AsynchronousServerSocketChannel open(java.nio.channels.AsynchronousChannelGroup) throws java.io.IOException;
+    method public static java.nio.channels.AsynchronousServerSocketChannel open() throws java.io.IOException;
+    method public final java.nio.channels.spi.AsynchronousChannelProvider provider();
+    method public abstract <T> java.nio.channels.AsynchronousServerSocketChannel setOption(java.net.SocketOption<T>, T) throws java.io.IOException;
+  }
+
+  public abstract class AsynchronousSocketChannel implements java.nio.channels.AsynchronousByteChannel java.nio.channels.NetworkChannel {
+    ctor protected AsynchronousSocketChannel(java.nio.channels.spi.AsynchronousChannelProvider);
+    method public abstract java.nio.channels.AsynchronousSocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
+    method public abstract <A> void connect(java.net.SocketAddress, A, java.nio.channels.CompletionHandler<java.lang.Void,? super A>);
+    method public abstract java.util.concurrent.Future<java.lang.Void> connect(java.net.SocketAddress);
+    method public abstract java.net.SocketAddress getRemoteAddress() throws java.io.IOException;
+    method public static java.nio.channels.AsynchronousSocketChannel open(java.nio.channels.AsynchronousChannelGroup) throws java.io.IOException;
+    method public static java.nio.channels.AsynchronousSocketChannel open() throws java.io.IOException;
+    method public final java.nio.channels.spi.AsynchronousChannelProvider provider();
+    method public abstract <A> void read(java.nio.ByteBuffer, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
+    method public final <A> void read(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
+    method public abstract <A> void read(java.nio.ByteBuffer[], int, int, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Long,? super A>);
+    method public abstract <T> java.nio.channels.AsynchronousSocketChannel setOption(java.net.SocketOption<T>, T) throws java.io.IOException;
+    method public abstract java.nio.channels.AsynchronousSocketChannel shutdownInput() throws java.io.IOException;
+    method public abstract java.nio.channels.AsynchronousSocketChannel shutdownOutput() throws java.io.IOException;
+    method public abstract <A> void write(java.nio.ByteBuffer, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
+    method public final <A> void write(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
+    method public abstract <A> void write(java.nio.ByteBuffer[], int, int, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Long,? super A>);
+  }
+
+  public interface ByteChannel extends java.nio.channels.ReadableByteChannel java.nio.channels.WritableByteChannel {
+  }
+
+  public class CancelledKeyException extends java.lang.IllegalStateException {
+    ctor public CancelledKeyException();
+  }
+
+  public interface Channel extends java.io.Closeable {
+    method public boolean isOpen();
+  }
+
+  public final class Channels {
+    method public static java.nio.channels.ReadableByteChannel newChannel(java.io.InputStream);
+    method public static java.nio.channels.WritableByteChannel newChannel(java.io.OutputStream);
+    method public static java.io.InputStream newInputStream(java.nio.channels.ReadableByteChannel);
+    method public static java.io.InputStream newInputStream(java.nio.channels.AsynchronousByteChannel);
+    method public static java.io.OutputStream newOutputStream(java.nio.channels.WritableByteChannel);
+    method public static java.io.OutputStream newOutputStream(java.nio.channels.AsynchronousByteChannel);
+    method public static java.io.Reader newReader(java.nio.channels.ReadableByteChannel, java.nio.charset.CharsetDecoder, int);
+    method public static java.io.Reader newReader(java.nio.channels.ReadableByteChannel, String);
+    method public static java.io.Writer newWriter(java.nio.channels.WritableByteChannel, java.nio.charset.CharsetEncoder, int);
+    method public static java.io.Writer newWriter(java.nio.channels.WritableByteChannel, String);
+  }
+
+  public class ClosedByInterruptException extends java.nio.channels.AsynchronousCloseException {
+    ctor public ClosedByInterruptException();
+  }
+
+  public class ClosedChannelException extends java.io.IOException {
+    ctor public ClosedChannelException();
+  }
+
+  public class ClosedSelectorException extends java.lang.IllegalStateException {
+    ctor public ClosedSelectorException();
+  }
+
+  public interface CompletionHandler<V, A> {
+    method public void completed(V, A);
+    method public void failed(Throwable, A);
+  }
+
+  public class ConnectionPendingException extends java.lang.IllegalStateException {
+    ctor public ConnectionPendingException();
+  }
+
+  public abstract class DatagramChannel extends java.nio.channels.spi.AbstractSelectableChannel implements java.nio.channels.ByteChannel java.nio.channels.GatheringByteChannel java.nio.channels.MulticastChannel java.nio.channels.ScatteringByteChannel {
+    ctor protected DatagramChannel(java.nio.channels.spi.SelectorProvider);
+    method public abstract java.nio.channels.DatagramChannel bind(java.net.SocketAddress) throws java.io.IOException;
+    method public abstract java.nio.channels.DatagramChannel connect(java.net.SocketAddress) throws java.io.IOException;
+    method public abstract java.nio.channels.DatagramChannel disconnect() throws java.io.IOException;
+    method public abstract java.net.SocketAddress getRemoteAddress() throws java.io.IOException;
+    method public abstract boolean isConnected();
+    method public static java.nio.channels.DatagramChannel open() throws java.io.IOException;
+    method public static java.nio.channels.DatagramChannel open(java.net.ProtocolFamily) throws java.io.IOException;
+    method public final long read(java.nio.ByteBuffer[]) throws java.io.IOException;
+    method public abstract java.net.SocketAddress receive(java.nio.ByteBuffer) throws java.io.IOException;
+    method public abstract int send(java.nio.ByteBuffer, java.net.SocketAddress) throws java.io.IOException;
+    method public abstract <T> java.nio.channels.DatagramChannel setOption(java.net.SocketOption<T>, T) throws java.io.IOException;
+    method public abstract java.net.DatagramSocket socket();
+    method public final int validOps();
+    method public final long write(java.nio.ByteBuffer[]) throws java.io.IOException;
+  }
+
+  public abstract class FileChannel extends java.nio.channels.spi.AbstractInterruptibleChannel implements java.nio.channels.GatheringByteChannel java.nio.channels.ScatteringByteChannel java.nio.channels.SeekableByteChannel {
+    ctor protected FileChannel();
+    method public abstract void force(boolean) throws java.io.IOException;
+    method public abstract java.nio.channels.FileLock lock(long, long, boolean) throws java.io.IOException;
+    method public final java.nio.channels.FileLock lock() throws java.io.IOException;
+    method public abstract java.nio.MappedByteBuffer map(java.nio.channels.FileChannel.MapMode, long, long) throws java.io.IOException;
+    method public static java.nio.channels.FileChannel open(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
+    method public static java.nio.channels.FileChannel open(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
+    method public abstract java.nio.channels.FileChannel position(long) throws java.io.IOException;
+    method public final long read(java.nio.ByteBuffer[]) throws java.io.IOException;
+    method public abstract int read(java.nio.ByteBuffer, long) throws java.io.IOException;
+    method public abstract long transferFrom(java.nio.channels.ReadableByteChannel, long, long) throws java.io.IOException;
+    method public abstract long transferTo(long, long, java.nio.channels.WritableByteChannel) throws java.io.IOException;
+    method public abstract java.nio.channels.FileChannel truncate(long) throws java.io.IOException;
+    method public abstract java.nio.channels.FileLock tryLock(long, long, boolean) throws java.io.IOException;
+    method public final java.nio.channels.FileLock tryLock() throws java.io.IOException;
+    method public final long write(java.nio.ByteBuffer[]) throws java.io.IOException;
+    method public abstract int write(java.nio.ByteBuffer, long) throws java.io.IOException;
+  }
+
+  public static class FileChannel.MapMode {
+    field public static final java.nio.channels.FileChannel.MapMode PRIVATE;
+    field public static final java.nio.channels.FileChannel.MapMode READ_ONLY;
+    field public static final java.nio.channels.FileChannel.MapMode READ_WRITE;
+  }
+
+  public abstract class FileLock implements java.lang.AutoCloseable {
+    ctor protected FileLock(java.nio.channels.FileChannel, long, long, boolean);
+    ctor protected FileLock(java.nio.channels.AsynchronousFileChannel, long, long, boolean);
+    method public java.nio.channels.Channel acquiredBy();
+    method public final java.nio.channels.FileChannel channel();
+    method public final void close() throws java.io.IOException;
+    method public final boolean isShared();
+    method public abstract boolean isValid();
+    method public final boolean overlaps(long, long);
+    method public final long position();
+    method public abstract void release() throws java.io.IOException;
+    method public final long size();
+    method public final String toString();
+  }
+
+  public class FileLockInterruptionException extends java.io.IOException {
+    ctor public FileLockInterruptionException();
+  }
+
+  public interface GatheringByteChannel extends java.nio.channels.WritableByteChannel {
+    method public long write(java.nio.ByteBuffer[], int, int) throws java.io.IOException;
+    method public long write(java.nio.ByteBuffer[]) throws java.io.IOException;
+  }
+
+  public class IllegalBlockingModeException extends java.lang.IllegalStateException {
+    ctor public IllegalBlockingModeException();
+  }
+
+  public class IllegalChannelGroupException extends java.lang.IllegalArgumentException {
+    ctor public IllegalChannelGroupException();
+  }
+
+  public class IllegalSelectorException extends java.lang.IllegalArgumentException {
+    ctor public IllegalSelectorException();
+  }
+
+  public class InterruptedByTimeoutException extends java.io.IOException {
+    ctor public InterruptedByTimeoutException();
+  }
+
+  public interface InterruptibleChannel extends java.nio.channels.Channel {
+  }
+
+  public abstract class MembershipKey {
+    ctor protected MembershipKey();
+    method public abstract java.nio.channels.MembershipKey block(java.net.InetAddress) throws java.io.IOException;
+    method public abstract java.nio.channels.MulticastChannel channel();
+    method public abstract void drop();
+    method public abstract java.net.InetAddress group();
+    method public abstract boolean isValid();
+    method public abstract java.net.NetworkInterface networkInterface();
+    method public abstract java.net.InetAddress sourceAddress();
+    method public abstract java.nio.channels.MembershipKey unblock(java.net.InetAddress);
+  }
+
+  public interface MulticastChannel extends java.nio.channels.NetworkChannel {
+    method public java.nio.channels.MembershipKey join(java.net.InetAddress, java.net.NetworkInterface) throws java.io.IOException;
+    method public java.nio.channels.MembershipKey join(java.net.InetAddress, java.net.NetworkInterface, java.net.InetAddress) throws java.io.IOException;
+  }
+
+  public interface NetworkChannel extends java.nio.channels.Channel {
+    method public java.nio.channels.NetworkChannel bind(java.net.SocketAddress) throws java.io.IOException;
+    method public java.net.SocketAddress getLocalAddress() throws java.io.IOException;
+    method public <T> T getOption(java.net.SocketOption<T>) throws java.io.IOException;
+    method public <T> java.nio.channels.NetworkChannel setOption(java.net.SocketOption<T>, T) throws java.io.IOException;
+    method public java.util.Set<java.net.SocketOption<?>> supportedOptions();
+  }
+
+  public class NoConnectionPendingException extends java.lang.IllegalStateException {
+    ctor public NoConnectionPendingException();
+  }
+
+  public class NonReadableChannelException extends java.lang.IllegalStateException {
+    ctor public NonReadableChannelException();
+  }
+
+  public class NonWritableChannelException extends java.lang.IllegalStateException {
+    ctor public NonWritableChannelException();
+  }
+
+  public class NotYetBoundException extends java.lang.IllegalStateException {
+    ctor public NotYetBoundException();
+  }
+
+  public class NotYetConnectedException extends java.lang.IllegalStateException {
+    ctor public NotYetConnectedException();
+  }
+
+  public class OverlappingFileLockException extends java.lang.IllegalStateException {
+    ctor public OverlappingFileLockException();
+  }
+
+  public abstract class Pipe {
+    ctor protected Pipe();
+    method public static java.nio.channels.Pipe open() throws java.io.IOException;
+    method public abstract java.nio.channels.Pipe.SinkChannel sink();
+    method public abstract java.nio.channels.Pipe.SourceChannel source();
+  }
+
+  public abstract static class Pipe.SinkChannel extends java.nio.channels.spi.AbstractSelectableChannel implements java.nio.channels.GatheringByteChannel java.nio.channels.WritableByteChannel {
+    ctor protected Pipe.SinkChannel(java.nio.channels.spi.SelectorProvider);
+    method public final int validOps();
+  }
+
+  public abstract static class Pipe.SourceChannel extends java.nio.channels.spi.AbstractSelectableChannel implements java.nio.channels.ReadableByteChannel java.nio.channels.ScatteringByteChannel {
+    ctor protected Pipe.SourceChannel(java.nio.channels.spi.SelectorProvider);
+    method public final int validOps();
+  }
+
+  public class ReadPendingException extends java.lang.IllegalStateException {
+    ctor public ReadPendingException();
+  }
+
+  public interface ReadableByteChannel extends java.nio.channels.Channel {
+    method public int read(java.nio.ByteBuffer) throws java.io.IOException;
+  }
+
+  public interface ScatteringByteChannel extends java.nio.channels.ReadableByteChannel {
+    method public long read(java.nio.ByteBuffer[], int, int) throws java.io.IOException;
+    method public long read(java.nio.ByteBuffer[]) throws java.io.IOException;
+  }
+
+  public interface SeekableByteChannel extends java.nio.channels.ByteChannel {
+    method public long position() throws java.io.IOException;
+    method public java.nio.channels.SeekableByteChannel position(long) throws java.io.IOException;
+    method public long size() throws java.io.IOException;
+    method public java.nio.channels.SeekableByteChannel truncate(long) throws java.io.IOException;
+  }
+
+  public abstract class SelectableChannel extends java.nio.channels.spi.AbstractInterruptibleChannel implements java.nio.channels.Channel {
+    ctor protected SelectableChannel();
+    method public abstract Object blockingLock();
+    method public abstract java.nio.channels.SelectableChannel configureBlocking(boolean) throws java.io.IOException;
+    method public abstract boolean isBlocking();
+    method public abstract boolean isRegistered();
+    method public abstract java.nio.channels.SelectionKey keyFor(java.nio.channels.Selector);
+    method public abstract java.nio.channels.spi.SelectorProvider provider();
+    method public abstract java.nio.channels.SelectionKey register(java.nio.channels.Selector, int, Object) throws java.nio.channels.ClosedChannelException;
+    method public final java.nio.channels.SelectionKey register(java.nio.channels.Selector, int) throws java.nio.channels.ClosedChannelException;
+    method public abstract int validOps();
+  }
+
+  public abstract class SelectionKey {
+    ctor protected SelectionKey();
+    method public final Object attach(Object);
+    method public final Object attachment();
+    method public abstract void cancel();
+    method public abstract java.nio.channels.SelectableChannel channel();
+    method public abstract int interestOps();
+    method public abstract java.nio.channels.SelectionKey interestOps(int);
+    method public final boolean isAcceptable();
+    method public final boolean isConnectable();
+    method public final boolean isReadable();
+    method public abstract boolean isValid();
+    method public final boolean isWritable();
+    method public abstract int readyOps();
+    method public abstract java.nio.channels.Selector selector();
+    field public static final int OP_ACCEPT = 16; // 0x10
+    field public static final int OP_CONNECT = 8; // 0x8
+    field public static final int OP_READ = 1; // 0x1
+    field public static final int OP_WRITE = 4; // 0x4
+  }
+
+  public abstract class Selector implements java.io.Closeable {
+    ctor protected Selector();
+    method public abstract boolean isOpen();
+    method public abstract java.util.Set<java.nio.channels.SelectionKey> keys();
+    method public static java.nio.channels.Selector open() throws java.io.IOException;
+    method public abstract java.nio.channels.spi.SelectorProvider provider();
+    method public abstract int select(long) throws java.io.IOException;
+    method public abstract int select() throws java.io.IOException;
+    method public abstract int selectNow() throws java.io.IOException;
+    method public abstract java.util.Set<java.nio.channels.SelectionKey> selectedKeys();
+    method public abstract java.nio.channels.Selector wakeup();
+  }
+
+  public abstract class ServerSocketChannel extends java.nio.channels.spi.AbstractSelectableChannel implements java.nio.channels.NetworkChannel {
+    ctor protected ServerSocketChannel(java.nio.channels.spi.SelectorProvider);
+    method public abstract java.nio.channels.SocketChannel accept() throws java.io.IOException;
+    method public final java.nio.channels.ServerSocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
+    method public abstract java.nio.channels.ServerSocketChannel bind(java.net.SocketAddress, int) throws java.io.IOException;
+    method public static java.nio.channels.ServerSocketChannel open() throws java.io.IOException;
+    method public abstract <T> java.nio.channels.ServerSocketChannel setOption(java.net.SocketOption<T>, T) throws java.io.IOException;
+    method public abstract java.net.ServerSocket socket();
+    method public final int validOps();
+  }
+
+  public class ShutdownChannelGroupException extends java.lang.IllegalStateException {
+    ctor public ShutdownChannelGroupException();
+  }
+
+  public abstract class SocketChannel extends java.nio.channels.spi.AbstractSelectableChannel implements java.nio.channels.ByteChannel java.nio.channels.GatheringByteChannel java.nio.channels.NetworkChannel java.nio.channels.ScatteringByteChannel {
+    ctor protected SocketChannel(java.nio.channels.spi.SelectorProvider);
+    method public abstract java.nio.channels.SocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
+    method public abstract boolean connect(java.net.SocketAddress) throws java.io.IOException;
+    method public abstract boolean finishConnect() throws java.io.IOException;
+    method public abstract java.net.SocketAddress getRemoteAddress() throws java.io.IOException;
+    method public abstract boolean isConnected();
+    method public abstract boolean isConnectionPending();
+    method public static java.nio.channels.SocketChannel open() throws java.io.IOException;
+    method public static java.nio.channels.SocketChannel open(java.net.SocketAddress) throws java.io.IOException;
+    method public final long read(java.nio.ByteBuffer[]) throws java.io.IOException;
+    method public abstract <T> java.nio.channels.SocketChannel setOption(java.net.SocketOption<T>, T) throws java.io.IOException;
+    method public abstract java.nio.channels.SocketChannel shutdownInput() throws java.io.IOException;
+    method public abstract java.nio.channels.SocketChannel shutdownOutput() throws java.io.IOException;
+    method public abstract java.net.Socket socket();
+    method public final int validOps();
+    method public final long write(java.nio.ByteBuffer[]) throws java.io.IOException;
+  }
+
+  public class UnresolvedAddressException extends java.lang.IllegalArgumentException {
+    ctor public UnresolvedAddressException();
+  }
+
+  public class UnsupportedAddressTypeException extends java.lang.IllegalArgumentException {
+    ctor public UnsupportedAddressTypeException();
+  }
+
+  public interface WritableByteChannel extends java.nio.channels.Channel {
+    method public int write(java.nio.ByteBuffer) throws java.io.IOException;
+  }
+
+  public class WritePendingException extends java.lang.IllegalStateException {
+    ctor public WritePendingException();
+  }
+
+}
+
+package java.nio.channels.spi {
+
+  public abstract class AbstractInterruptibleChannel implements java.nio.channels.Channel java.nio.channels.InterruptibleChannel {
+    ctor protected AbstractInterruptibleChannel();
+    method protected final void begin();
+    method public final void close() throws java.io.IOException;
+    method protected final void end(boolean) throws java.nio.channels.AsynchronousCloseException;
+    method protected abstract void implCloseChannel() throws java.io.IOException;
+    method public final boolean isOpen();
+  }
+
+  public abstract class AbstractSelectableChannel extends java.nio.channels.SelectableChannel {
+    ctor protected AbstractSelectableChannel(java.nio.channels.spi.SelectorProvider);
+    method public final Object blockingLock();
+    method public final java.nio.channels.SelectableChannel configureBlocking(boolean) throws java.io.IOException;
+    method protected final void implCloseChannel() throws java.io.IOException;
+    method protected abstract void implCloseSelectableChannel() throws java.io.IOException;
+    method protected abstract void implConfigureBlocking(boolean) throws java.io.IOException;
+    method public final boolean isBlocking();
+    method public final boolean isRegistered();
+    method public final java.nio.channels.SelectionKey keyFor(java.nio.channels.Selector);
+    method public final java.nio.channels.spi.SelectorProvider provider();
+    method public final java.nio.channels.SelectionKey register(java.nio.channels.Selector, int, Object) throws java.nio.channels.ClosedChannelException;
+  }
+
+  public abstract class AbstractSelectionKey extends java.nio.channels.SelectionKey {
+    ctor protected AbstractSelectionKey();
+    method public final void cancel();
+    method public final boolean isValid();
+  }
+
+  public abstract class AbstractSelector extends java.nio.channels.Selector {
+    ctor protected AbstractSelector(java.nio.channels.spi.SelectorProvider);
+    method protected final void begin();
+    method protected final java.util.Set<java.nio.channels.SelectionKey> cancelledKeys();
+    method public final void close() throws java.io.IOException;
+    method protected final void deregister(java.nio.channels.spi.AbstractSelectionKey);
+    method protected final void end();
+    method protected abstract void implCloseSelector() throws java.io.IOException;
+    method public final boolean isOpen();
+    method public final java.nio.channels.spi.SelectorProvider provider();
+    method protected abstract java.nio.channels.SelectionKey register(java.nio.channels.spi.AbstractSelectableChannel, int, Object);
+  }
+
+  public abstract class AsynchronousChannelProvider {
+    ctor protected AsynchronousChannelProvider();
+    method public abstract java.nio.channels.AsynchronousChannelGroup openAsynchronousChannelGroup(int, java.util.concurrent.ThreadFactory) throws java.io.IOException;
+    method public abstract java.nio.channels.AsynchronousChannelGroup openAsynchronousChannelGroup(java.util.concurrent.ExecutorService, int) throws java.io.IOException;
+    method public abstract java.nio.channels.AsynchronousServerSocketChannel openAsynchronousServerSocketChannel(java.nio.channels.AsynchronousChannelGroup) throws java.io.IOException;
+    method public abstract java.nio.channels.AsynchronousSocketChannel openAsynchronousSocketChannel(java.nio.channels.AsynchronousChannelGroup) throws java.io.IOException;
+    method public static java.nio.channels.spi.AsynchronousChannelProvider provider();
+  }
+
+  public abstract class SelectorProvider {
+    ctor protected SelectorProvider();
+    method public java.nio.channels.Channel inheritedChannel() throws java.io.IOException;
+    method public abstract java.nio.channels.DatagramChannel openDatagramChannel() throws java.io.IOException;
+    method public abstract java.nio.channels.DatagramChannel openDatagramChannel(java.net.ProtocolFamily) throws java.io.IOException;
+    method public abstract java.nio.channels.Pipe openPipe() throws java.io.IOException;
+    method public abstract java.nio.channels.spi.AbstractSelector openSelector() throws java.io.IOException;
+    method public abstract java.nio.channels.ServerSocketChannel openServerSocketChannel() throws java.io.IOException;
+    method public abstract java.nio.channels.SocketChannel openSocketChannel() throws java.io.IOException;
+    method public static java.nio.channels.spi.SelectorProvider provider();
+  }
+
+}
+
+package java.nio.charset {
+
+  public class CharacterCodingException extends java.io.IOException {
+    ctor public CharacterCodingException();
+  }
+
+  public abstract class Charset implements java.lang.Comparable<java.nio.charset.Charset> {
+    ctor protected Charset(String, String[]);
+    method public final java.util.Set<java.lang.String> aliases();
+    method public static java.util.SortedMap<java.lang.String,java.nio.charset.Charset> availableCharsets();
+    method public boolean canEncode();
+    method public final int compareTo(java.nio.charset.Charset);
+    method public abstract boolean contains(java.nio.charset.Charset);
+    method public final java.nio.CharBuffer decode(java.nio.ByteBuffer);
+    method public static java.nio.charset.Charset defaultCharset();
+    method public String displayName();
+    method public String displayName(java.util.Locale);
+    method public final java.nio.ByteBuffer encode(java.nio.CharBuffer);
+    method public final java.nio.ByteBuffer encode(String);
+    method public final boolean equals(Object);
+    method public static java.nio.charset.Charset forName(String);
+    method public final int hashCode();
+    method public final boolean isRegistered();
+    method public static boolean isSupported(String);
+    method public final String name();
+    method public abstract java.nio.charset.CharsetDecoder newDecoder();
+    method public abstract java.nio.charset.CharsetEncoder newEncoder();
+    method public final String toString();
+  }
+
+  public abstract class CharsetDecoder {
+    ctor protected CharsetDecoder(java.nio.charset.Charset, float, float);
+    method public final float averageCharsPerByte();
+    method public final java.nio.charset.Charset charset();
+    method public final java.nio.charset.CoderResult decode(java.nio.ByteBuffer, java.nio.CharBuffer, boolean);
+    method public final java.nio.CharBuffer decode(java.nio.ByteBuffer) throws java.nio.charset.CharacterCodingException;
+    method protected abstract java.nio.charset.CoderResult decodeLoop(java.nio.ByteBuffer, java.nio.CharBuffer);
+    method public java.nio.charset.Charset detectedCharset();
+    method public final java.nio.charset.CoderResult flush(java.nio.CharBuffer);
+    method protected java.nio.charset.CoderResult implFlush(java.nio.CharBuffer);
+    method protected void implOnMalformedInput(java.nio.charset.CodingErrorAction);
+    method protected void implOnUnmappableCharacter(java.nio.charset.CodingErrorAction);
+    method protected void implReplaceWith(String);
+    method protected void implReset();
+    method public boolean isAutoDetecting();
+    method public boolean isCharsetDetected();
+    method public java.nio.charset.CodingErrorAction malformedInputAction();
+    method public final float maxCharsPerByte();
+    method public final java.nio.charset.CharsetDecoder onMalformedInput(java.nio.charset.CodingErrorAction);
+    method public final java.nio.charset.CharsetDecoder onUnmappableCharacter(java.nio.charset.CodingErrorAction);
+    method public final java.nio.charset.CharsetDecoder replaceWith(String);
+    method public final String replacement();
+    method public final java.nio.charset.CharsetDecoder reset();
+    method public java.nio.charset.CodingErrorAction unmappableCharacterAction();
+  }
+
+  public abstract class CharsetEncoder {
+    ctor protected CharsetEncoder(java.nio.charset.Charset, float, float, byte[]);
+    ctor protected CharsetEncoder(java.nio.charset.Charset, float, float);
+    method public final float averageBytesPerChar();
+    method public boolean canEncode(char);
+    method public boolean canEncode(CharSequence);
+    method public final java.nio.charset.Charset charset();
+    method public final java.nio.charset.CoderResult encode(java.nio.CharBuffer, java.nio.ByteBuffer, boolean);
+    method public final java.nio.ByteBuffer encode(java.nio.CharBuffer) throws java.nio.charset.CharacterCodingException;
+    method protected abstract java.nio.charset.CoderResult encodeLoop(java.nio.CharBuffer, java.nio.ByteBuffer);
+    method public final java.nio.charset.CoderResult flush(java.nio.ByteBuffer);
+    method protected java.nio.charset.CoderResult implFlush(java.nio.ByteBuffer);
+    method protected void implOnMalformedInput(java.nio.charset.CodingErrorAction);
+    method protected void implOnUnmappableCharacter(java.nio.charset.CodingErrorAction);
+    method protected void implReplaceWith(byte[]);
+    method protected void implReset();
+    method public boolean isLegalReplacement(byte[]);
+    method public java.nio.charset.CodingErrorAction malformedInputAction();
+    method public final float maxBytesPerChar();
+    method public final java.nio.charset.CharsetEncoder onMalformedInput(java.nio.charset.CodingErrorAction);
+    method public final java.nio.charset.CharsetEncoder onUnmappableCharacter(java.nio.charset.CodingErrorAction);
+    method public final java.nio.charset.CharsetEncoder replaceWith(byte[]);
+    method public final byte[] replacement();
+    method public final java.nio.charset.CharsetEncoder reset();
+    method public java.nio.charset.CodingErrorAction unmappableCharacterAction();
+  }
+
+  public class CoderMalfunctionError extends java.lang.Error {
+    ctor public CoderMalfunctionError(Exception);
+  }
+
+  public class CoderResult {
+    method public boolean isError();
+    method public boolean isMalformed();
+    method public boolean isOverflow();
+    method public boolean isUnderflow();
+    method public boolean isUnmappable();
+    method public int length();
+    method public static java.nio.charset.CoderResult malformedForLength(int);
+    method public void throwException() throws java.nio.charset.CharacterCodingException;
+    method public static java.nio.charset.CoderResult unmappableForLength(int);
+    field public static final java.nio.charset.CoderResult OVERFLOW;
+    field public static final java.nio.charset.CoderResult UNDERFLOW;
+  }
+
+  public class CodingErrorAction {
+    field public static final java.nio.charset.CodingErrorAction IGNORE;
+    field public static final java.nio.charset.CodingErrorAction REPLACE;
+    field public static final java.nio.charset.CodingErrorAction REPORT;
+  }
+
+  public class IllegalCharsetNameException extends java.lang.IllegalArgumentException {
+    ctor public IllegalCharsetNameException(String);
+    method public String getCharsetName();
+  }
+
+  public class MalformedInputException extends java.nio.charset.CharacterCodingException {
+    ctor public MalformedInputException(int);
+    method public int getInputLength();
+  }
+
+  public final class StandardCharsets {
+    field public static final java.nio.charset.Charset ISO_8859_1;
+    field public static final java.nio.charset.Charset US_ASCII;
+    field public static final java.nio.charset.Charset UTF_16;
+    field public static final java.nio.charset.Charset UTF_16BE;
+    field public static final java.nio.charset.Charset UTF_16LE;
+    field public static final java.nio.charset.Charset UTF_8;
+  }
+
+  public class UnmappableCharacterException extends java.nio.charset.CharacterCodingException {
+    ctor public UnmappableCharacterException(int);
+    method public int getInputLength();
+  }
+
+  public class UnsupportedCharsetException extends java.lang.IllegalArgumentException {
+    ctor public UnsupportedCharsetException(String);
+    method public String getCharsetName();
+  }
+
+}
+
+package java.nio.charset.spi {
+
+  public abstract class CharsetProvider {
+    ctor protected CharsetProvider();
+    method public abstract java.nio.charset.Charset charsetForName(String);
+    method public abstract java.util.Iterator<java.nio.charset.Charset> charsets();
+  }
+
+}
+
+package java.nio.file {
+
+  public class AccessDeniedException extends java.nio.file.FileSystemException {
+    ctor public AccessDeniedException(String);
+    ctor public AccessDeniedException(String, String, String);
+  }
+
+  public enum AccessMode {
+    enum_constant public static final java.nio.file.AccessMode EXECUTE;
+    enum_constant public static final java.nio.file.AccessMode READ;
+    enum_constant public static final java.nio.file.AccessMode WRITE;
+  }
+
+  public class AtomicMoveNotSupportedException extends java.nio.file.FileSystemException {
+    ctor public AtomicMoveNotSupportedException(String, String, String);
+  }
+
+  public class ClosedDirectoryStreamException extends java.lang.IllegalStateException {
+    ctor public ClosedDirectoryStreamException();
+  }
+
+  public class ClosedFileSystemException extends java.lang.IllegalStateException {
+    ctor public ClosedFileSystemException();
+  }
+
+  public class ClosedWatchServiceException extends java.lang.IllegalStateException {
+    ctor public ClosedWatchServiceException();
+  }
+
+  public interface CopyOption {
+  }
+
+  public final class DirectoryIteratorException extends java.util.ConcurrentModificationException {
+    ctor public DirectoryIteratorException(java.io.IOException);
+    method public java.io.IOException getCause();
+  }
+
+  public class DirectoryNotEmptyException extends java.nio.file.FileSystemException {
+    ctor public DirectoryNotEmptyException(String);
+  }
+
+  public interface DirectoryStream<T> extends java.io.Closeable java.lang.Iterable<T> {
+  }
+
+  @java.lang.FunctionalInterface public static interface DirectoryStream.Filter<T> {
+    method public boolean accept(T) throws java.io.IOException;
+  }
+
+  public class FileAlreadyExistsException extends java.nio.file.FileSystemException {
+    ctor public FileAlreadyExistsException(String);
+    ctor public FileAlreadyExistsException(String, String, String);
+  }
+
+  public abstract class FileStore {
+    ctor protected FileStore();
+    method public abstract Object getAttribute(String) throws java.io.IOException;
+    method public abstract <V extends java.nio.file.attribute.FileStoreAttributeView> V getFileStoreAttributeView(Class<V>);
+    method public abstract long getTotalSpace() throws java.io.IOException;
+    method public abstract long getUnallocatedSpace() throws java.io.IOException;
+    method public abstract long getUsableSpace() throws java.io.IOException;
+    method public abstract boolean isReadOnly();
+    method public abstract String name();
+    method public abstract boolean supportsFileAttributeView(Class<? extends java.nio.file.attribute.FileAttributeView>);
+    method public abstract boolean supportsFileAttributeView(String);
+    method public abstract String type();
+  }
+
+  public abstract class FileSystem implements java.io.Closeable {
+    ctor protected FileSystem();
+    method public abstract Iterable<java.nio.file.FileStore> getFileStores();
+    method public abstract java.nio.file.Path getPath(String, java.lang.String...);
+    method public abstract java.nio.file.PathMatcher getPathMatcher(String);
+    method public abstract Iterable<java.nio.file.Path> getRootDirectories();
+    method public abstract String getSeparator();
+    method public abstract java.nio.file.attribute.UserPrincipalLookupService getUserPrincipalLookupService();
+    method public abstract boolean isOpen();
+    method public abstract boolean isReadOnly();
+    method public abstract java.nio.file.WatchService newWatchService() throws java.io.IOException;
+    method public abstract java.nio.file.spi.FileSystemProvider provider();
+    method public abstract java.util.Set<java.lang.String> supportedFileAttributeViews();
+  }
+
+  public class FileSystemAlreadyExistsException extends java.lang.RuntimeException {
+    ctor public FileSystemAlreadyExistsException();
+    ctor public FileSystemAlreadyExistsException(String);
+  }
+
+  public class FileSystemException extends java.io.IOException {
+    ctor public FileSystemException(String);
+    ctor public FileSystemException(String, String, String);
+    method public String getFile();
+    method public String getOtherFile();
+    method public String getReason();
+  }
+
+  public class FileSystemLoopException extends java.nio.file.FileSystemException {
+    ctor public FileSystemLoopException(String);
+  }
+
+  public class FileSystemNotFoundException extends java.lang.RuntimeException {
+    ctor public FileSystemNotFoundException();
+    ctor public FileSystemNotFoundException(String);
+  }
+
+  public final class FileSystems {
+    method public static java.nio.file.FileSystem getDefault();
+    method public static java.nio.file.FileSystem getFileSystem(java.net.URI);
+    method public static java.nio.file.FileSystem newFileSystem(java.net.URI, java.util.Map<java.lang.String,?>) throws java.io.IOException;
+    method public static java.nio.file.FileSystem newFileSystem(java.net.URI, java.util.Map<java.lang.String,?>, ClassLoader) throws java.io.IOException;
+    method public static java.nio.file.FileSystem newFileSystem(java.nio.file.Path, ClassLoader) throws java.io.IOException;
+  }
+
+  public enum FileVisitOption {
+    enum_constant public static final java.nio.file.FileVisitOption FOLLOW_LINKS;
+  }
+
+  public enum FileVisitResult {
+    enum_constant public static final java.nio.file.FileVisitResult CONTINUE;
+    enum_constant public static final java.nio.file.FileVisitResult SKIP_SIBLINGS;
+    enum_constant public static final java.nio.file.FileVisitResult SKIP_SUBTREE;
+    enum_constant public static final java.nio.file.FileVisitResult TERMINATE;
+  }
+
+  public interface FileVisitor<T> {
+    method public java.nio.file.FileVisitResult postVisitDirectory(T, java.io.IOException) throws java.io.IOException;
+    method public java.nio.file.FileVisitResult preVisitDirectory(T, java.nio.file.attribute.BasicFileAttributes) throws java.io.IOException;
+    method public java.nio.file.FileVisitResult visitFile(T, java.nio.file.attribute.BasicFileAttributes) throws java.io.IOException;
+    method public java.nio.file.FileVisitResult visitFileFailed(T, java.io.IOException) throws java.io.IOException;
+  }
+
+  public final class Files {
+    method public static java.nio.file.Path copy(java.nio.file.Path, java.nio.file.Path, java.nio.file.CopyOption...) throws java.io.IOException;
+    method public static long copy(java.io.InputStream, java.nio.file.Path, java.nio.file.CopyOption...) throws java.io.IOException;
+    method public static long copy(java.nio.file.Path, java.io.OutputStream) throws java.io.IOException;
+    method public static java.nio.file.Path createDirectories(java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
+    method public static java.nio.file.Path createDirectory(java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
+    method public static java.nio.file.Path createFile(java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
+    method public static java.nio.file.Path createLink(java.nio.file.Path, java.nio.file.Path) throws java.io.IOException;
+    method public static java.nio.file.Path createSymbolicLink(java.nio.file.Path, java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
+    method public static java.nio.file.Path createTempDirectory(java.nio.file.Path, String, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
+    method public static java.nio.file.Path createTempDirectory(String, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
+    method public static java.nio.file.Path createTempFile(java.nio.file.Path, String, String, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
+    method public static java.nio.file.Path createTempFile(String, String, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
+    method public static void delete(java.nio.file.Path) throws java.io.IOException;
+    method public static boolean deleteIfExists(java.nio.file.Path) throws java.io.IOException;
+    method public static boolean exists(java.nio.file.Path, java.nio.file.LinkOption...);
+    method public static java.util.stream.Stream<java.nio.file.Path> find(java.nio.file.Path, int, java.util.function.BiPredicate<java.nio.file.Path,java.nio.file.attribute.BasicFileAttributes>, java.nio.file.FileVisitOption...) throws java.io.IOException;
+    method public static Object getAttribute(java.nio.file.Path, String, java.nio.file.LinkOption...) throws java.io.IOException;
+    method public static <V extends java.nio.file.attribute.FileAttributeView> V getFileAttributeView(java.nio.file.Path, Class<V>, java.nio.file.LinkOption...);
+    method public static java.nio.file.FileStore getFileStore(java.nio.file.Path) throws java.io.IOException;
+    method public static java.nio.file.attribute.FileTime getLastModifiedTime(java.nio.file.Path, java.nio.file.LinkOption...) throws java.io.IOException;
+    method public static java.nio.file.attribute.UserPrincipal getOwner(java.nio.file.Path, java.nio.file.LinkOption...) throws java.io.IOException;
+    method public static java.util.Set<java.nio.file.attribute.PosixFilePermission> getPosixFilePermissions(java.nio.file.Path, java.nio.file.LinkOption...) throws java.io.IOException;
+    method public static boolean isDirectory(java.nio.file.Path, java.nio.file.LinkOption...);
+    method public static boolean isExecutable(java.nio.file.Path);
+    method public static boolean isHidden(java.nio.file.Path) throws java.io.IOException;
+    method public static boolean isReadable(java.nio.file.Path);
+    method public static boolean isRegularFile(java.nio.file.Path, java.nio.file.LinkOption...);
+    method public static boolean isSameFile(java.nio.file.Path, java.nio.file.Path) throws java.io.IOException;
+    method public static boolean isSymbolicLink(java.nio.file.Path);
+    method public static boolean isWritable(java.nio.file.Path);
+    method public static java.util.stream.Stream<java.lang.String> lines(java.nio.file.Path, java.nio.charset.Charset) throws java.io.IOException;
+    method public static java.util.stream.Stream<java.lang.String> lines(java.nio.file.Path) throws java.io.IOException;
+    method public static java.util.stream.Stream<java.nio.file.Path> list(java.nio.file.Path) throws java.io.IOException;
+    method public static java.nio.file.Path move(java.nio.file.Path, java.nio.file.Path, java.nio.file.CopyOption...) throws java.io.IOException;
+    method public static java.io.BufferedReader newBufferedReader(java.nio.file.Path, java.nio.charset.Charset) throws java.io.IOException;
+    method public static java.io.BufferedReader newBufferedReader(java.nio.file.Path) throws java.io.IOException;
+    method public static java.io.BufferedWriter newBufferedWriter(java.nio.file.Path, java.nio.charset.Charset, java.nio.file.OpenOption...) throws java.io.IOException;
+    method public static java.io.BufferedWriter newBufferedWriter(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
+    method public static java.nio.channels.SeekableByteChannel newByteChannel(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
+    method public static java.nio.channels.SeekableByteChannel newByteChannel(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
+    method public static java.nio.file.DirectoryStream<java.nio.file.Path> newDirectoryStream(java.nio.file.Path) throws java.io.IOException;
+    method public static java.nio.file.DirectoryStream<java.nio.file.Path> newDirectoryStream(java.nio.file.Path, String) throws java.io.IOException;
+    method public static java.nio.file.DirectoryStream<java.nio.file.Path> newDirectoryStream(java.nio.file.Path, java.nio.file.DirectoryStream.Filter<? super java.nio.file.Path>) throws java.io.IOException;
+    method public static java.io.InputStream newInputStream(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
+    method public static java.io.OutputStream newOutputStream(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
+    method public static boolean notExists(java.nio.file.Path, java.nio.file.LinkOption...);
+    method public static String probeContentType(java.nio.file.Path) throws java.io.IOException;
+    method public static byte[] readAllBytes(java.nio.file.Path) throws java.io.IOException;
+    method public static java.util.List<java.lang.String> readAllLines(java.nio.file.Path, java.nio.charset.Charset) throws java.io.IOException;
+    method public static java.util.List<java.lang.String> readAllLines(java.nio.file.Path) throws java.io.IOException;
+    method public static <A extends java.nio.file.attribute.BasicFileAttributes> A readAttributes(java.nio.file.Path, Class<A>, java.nio.file.LinkOption...) throws java.io.IOException;
+    method public static java.util.Map<java.lang.String,java.lang.Object> readAttributes(java.nio.file.Path, String, java.nio.file.LinkOption...) throws java.io.IOException;
+    method public static java.nio.file.Path readSymbolicLink(java.nio.file.Path) throws java.io.IOException;
+    method public static java.nio.file.Path setAttribute(java.nio.file.Path, String, Object, java.nio.file.LinkOption...) throws java.io.IOException;
+    method public static java.nio.file.Path setLastModifiedTime(java.nio.file.Path, java.nio.file.attribute.FileTime) throws java.io.IOException;
+    method public static java.nio.file.Path setOwner(java.nio.file.Path, java.nio.file.attribute.UserPrincipal) throws java.io.IOException;
+    method public static java.nio.file.Path setPosixFilePermissions(java.nio.file.Path, java.util.Set<java.nio.file.attribute.PosixFilePermission>) throws java.io.IOException;
+    method public static long size(java.nio.file.Path) throws java.io.IOException;
+    method public static java.util.stream.Stream<java.nio.file.Path> walk(java.nio.file.Path, int, java.nio.file.FileVisitOption...) throws java.io.IOException;
+    method public static java.util.stream.Stream<java.nio.file.Path> walk(java.nio.file.Path, java.nio.file.FileVisitOption...) throws java.io.IOException;
+    method public static java.nio.file.Path walkFileTree(java.nio.file.Path, java.util.Set<java.nio.file.FileVisitOption>, int, java.nio.file.FileVisitor<? super java.nio.file.Path>) throws java.io.IOException;
+    method public static java.nio.file.Path walkFileTree(java.nio.file.Path, java.nio.file.FileVisitor<? super java.nio.file.Path>) throws java.io.IOException;
+    method public static java.nio.file.Path write(java.nio.file.Path, byte[], java.nio.file.OpenOption...) throws java.io.IOException;
+    method public static java.nio.file.Path write(java.nio.file.Path, Iterable<? extends java.lang.CharSequence>, java.nio.charset.Charset, java.nio.file.OpenOption...) throws java.io.IOException;
+    method public static java.nio.file.Path write(java.nio.file.Path, Iterable<? extends java.lang.CharSequence>, java.nio.file.OpenOption...) throws java.io.IOException;
+  }
+
+  public class InvalidPathException extends java.lang.IllegalArgumentException {
+    ctor public InvalidPathException(String, String, int);
+    ctor public InvalidPathException(String, String);
+    method public int getIndex();
+    method public String getInput();
+    method public String getReason();
+  }
+
+  public enum LinkOption implements java.nio.file.CopyOption java.nio.file.OpenOption {
+    enum_constant public static final java.nio.file.LinkOption NOFOLLOW_LINKS;
+  }
+
+  public final class LinkPermission extends java.security.BasicPermission {
+    ctor public LinkPermission(String);
+    ctor public LinkPermission(String, String);
+  }
+
+  public class NoSuchFileException extends java.nio.file.FileSystemException {
+    ctor public NoSuchFileException(String);
+    ctor public NoSuchFileException(String, String, String);
+  }
+
+  public class NotDirectoryException extends java.nio.file.FileSystemException {
+    ctor public NotDirectoryException(String);
+  }
+
+  public class NotLinkException extends java.nio.file.FileSystemException {
+    ctor public NotLinkException(String);
+    ctor public NotLinkException(String, String, String);
+  }
+
+  public interface OpenOption {
+  }
+
+  public interface Path extends java.lang.Comparable<java.nio.file.Path> java.lang.Iterable<java.nio.file.Path> java.nio.file.Watchable {
+    method public int compareTo(java.nio.file.Path);
+    method public boolean endsWith(java.nio.file.Path);
+    method public boolean endsWith(String);
+    method public boolean equals(Object);
+    method public java.nio.file.Path getFileName();
+    method public java.nio.file.FileSystem getFileSystem();
+    method public java.nio.file.Path getName(int);
+    method public int getNameCount();
+    method public java.nio.file.Path getParent();
+    method public java.nio.file.Path getRoot();
+    method public int hashCode();
+    method public boolean isAbsolute();
+    method public java.util.Iterator<java.nio.file.Path> iterator();
+    method public java.nio.file.Path normalize();
+    method public java.nio.file.Path relativize(java.nio.file.Path);
+    method public java.nio.file.Path resolve(java.nio.file.Path);
+    method public java.nio.file.Path resolve(String);
+    method public java.nio.file.Path resolveSibling(java.nio.file.Path);
+    method public java.nio.file.Path resolveSibling(String);
+    method public boolean startsWith(java.nio.file.Path);
+    method public boolean startsWith(String);
+    method public java.nio.file.Path subpath(int, int);
+    method public java.nio.file.Path toAbsolutePath();
+    method public java.io.File toFile();
+    method public java.nio.file.Path toRealPath(java.nio.file.LinkOption...) throws java.io.IOException;
+    method public String toString();
+    method public java.net.URI toUri();
+  }
+
+  @java.lang.FunctionalInterface public interface PathMatcher {
+    method public boolean matches(java.nio.file.Path);
+  }
+
+  public final class Paths {
+    method public static java.nio.file.Path get(String, java.lang.String...);
+    method public static java.nio.file.Path get(java.net.URI);
+  }
+
+  public class ProviderMismatchException extends java.lang.IllegalArgumentException {
+    ctor public ProviderMismatchException();
+    ctor public ProviderMismatchException(String);
+  }
+
+  public class ProviderNotFoundException extends java.lang.RuntimeException {
+    ctor public ProviderNotFoundException();
+    ctor public ProviderNotFoundException(String);
+  }
+
+  public class ReadOnlyFileSystemException extends java.lang.UnsupportedOperationException {
+    ctor public ReadOnlyFileSystemException();
+  }
+
+  public interface SecureDirectoryStream<T> extends java.nio.file.DirectoryStream<T> {
+    method public void deleteDirectory(T) throws java.io.IOException;
+    method public void deleteFile(T) throws java.io.IOException;
+    method public <V extends java.nio.file.attribute.FileAttributeView> V getFileAttributeView(Class<V>);
+    method public <V extends java.nio.file.attribute.FileAttributeView> V getFileAttributeView(T, Class<V>, java.nio.file.LinkOption...);
+    method public void move(T, java.nio.file.SecureDirectoryStream<T>, T) throws java.io.IOException;
+    method public java.nio.channels.SeekableByteChannel newByteChannel(T, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
+    method public java.nio.file.SecureDirectoryStream<T> newDirectoryStream(T, java.nio.file.LinkOption...) throws java.io.IOException;
+  }
+
+  public class SimpleFileVisitor<T> implements java.nio.file.FileVisitor<T> {
+    ctor protected SimpleFileVisitor();
+    method public java.nio.file.FileVisitResult postVisitDirectory(T, java.io.IOException) throws java.io.IOException;
+    method public java.nio.file.FileVisitResult preVisitDirectory(T, java.nio.file.attribute.BasicFileAttributes) throws java.io.IOException;
+    method public java.nio.file.FileVisitResult visitFile(T, java.nio.file.attribute.BasicFileAttributes) throws java.io.IOException;
+    method public java.nio.file.FileVisitResult visitFileFailed(T, java.io.IOException) throws java.io.IOException;
+  }
+
+  public enum StandardCopyOption implements java.nio.file.CopyOption {
+    enum_constant public static final java.nio.file.StandardCopyOption ATOMIC_MOVE;
+    enum_constant public static final java.nio.file.StandardCopyOption COPY_ATTRIBUTES;
+    enum_constant public static final java.nio.file.StandardCopyOption REPLACE_EXISTING;
+  }
+
+  public enum StandardOpenOption implements java.nio.file.OpenOption {
+    enum_constant public static final java.nio.file.StandardOpenOption APPEND;
+    enum_constant public static final java.nio.file.StandardOpenOption CREATE;
+    enum_constant public static final java.nio.file.StandardOpenOption CREATE_NEW;
+    enum_constant public static final java.nio.file.StandardOpenOption DELETE_ON_CLOSE;
+    enum_constant public static final java.nio.file.StandardOpenOption DSYNC;
+    enum_constant public static final java.nio.file.StandardOpenOption READ;
+    enum_constant public static final java.nio.file.StandardOpenOption SPARSE;
+    enum_constant public static final java.nio.file.StandardOpenOption SYNC;
+    enum_constant public static final java.nio.file.StandardOpenOption TRUNCATE_EXISTING;
+    enum_constant public static final java.nio.file.StandardOpenOption WRITE;
+  }
+
+  public final class StandardWatchEventKinds {
+    field public static final java.nio.file.WatchEvent.Kind<java.nio.file.Path> ENTRY_CREATE;
+    field public static final java.nio.file.WatchEvent.Kind<java.nio.file.Path> ENTRY_DELETE;
+    field public static final java.nio.file.WatchEvent.Kind<java.nio.file.Path> ENTRY_MODIFY;
+    field public static final java.nio.file.WatchEvent.Kind<java.lang.Object> OVERFLOW;
+  }
+
+  public interface WatchEvent<T> {
+    method public T context();
+    method public int count();
+    method public java.nio.file.WatchEvent.Kind<T> kind();
+  }
+
+  public static interface WatchEvent.Kind<T> {
+    method public String name();
+    method public Class<T> type();
+  }
+
+  public static interface WatchEvent.Modifier {
+    method public String name();
+  }
+
+  public interface WatchKey {
+    method public void cancel();
+    method public boolean isValid();
+    method public java.util.List<java.nio.file.WatchEvent<?>> pollEvents();
+    method public boolean reset();
+    method public java.nio.file.Watchable watchable();
+  }
+
+  public interface WatchService extends java.io.Closeable {
+    method public java.nio.file.WatchKey poll();
+    method public java.nio.file.WatchKey poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public java.nio.file.WatchKey take() throws java.lang.InterruptedException;
+  }
+
+  public interface Watchable {
+    method public java.nio.file.WatchKey register(java.nio.file.WatchService, java.nio.file.WatchEvent.Kind<?>[], java.nio.file.WatchEvent.Modifier...) throws java.io.IOException;
+    method public java.nio.file.WatchKey register(java.nio.file.WatchService, java.nio.file.WatchEvent.Kind<?>...) throws java.io.IOException;
+  }
+
+}
+
+package java.nio.file.attribute {
+
+  public final class AclEntry {
+    method public java.util.Set<java.nio.file.attribute.AclEntryFlag> flags();
+    method public static java.nio.file.attribute.AclEntry.Builder newBuilder();
+    method public static java.nio.file.attribute.AclEntry.Builder newBuilder(java.nio.file.attribute.AclEntry);
+    method public java.util.Set<java.nio.file.attribute.AclEntryPermission> permissions();
+    method public java.nio.file.attribute.UserPrincipal principal();
+    method public java.nio.file.attribute.AclEntryType type();
+  }
+
+  public static final class AclEntry.Builder {
+    method public java.nio.file.attribute.AclEntry build();
+    method public java.nio.file.attribute.AclEntry.Builder setFlags(java.util.Set<java.nio.file.attribute.AclEntryFlag>);
+    method public java.nio.file.attribute.AclEntry.Builder setFlags(java.nio.file.attribute.AclEntryFlag...);
+    method public java.nio.file.attribute.AclEntry.Builder setPermissions(java.util.Set<java.nio.file.attribute.AclEntryPermission>);
+    method public java.nio.file.attribute.AclEntry.Builder setPermissions(java.nio.file.attribute.AclEntryPermission...);
+    method public java.nio.file.attribute.AclEntry.Builder setPrincipal(java.nio.file.attribute.UserPrincipal);
+    method public java.nio.file.attribute.AclEntry.Builder setType(java.nio.file.attribute.AclEntryType);
+  }
+
+  public enum AclEntryFlag {
+    enum_constant public static final java.nio.file.attribute.AclEntryFlag DIRECTORY_INHERIT;
+    enum_constant public static final java.nio.file.attribute.AclEntryFlag FILE_INHERIT;
+    enum_constant public static final java.nio.file.attribute.AclEntryFlag INHERIT_ONLY;
+    enum_constant public static final java.nio.file.attribute.AclEntryFlag NO_PROPAGATE_INHERIT;
+  }
+
+  public enum AclEntryPermission {
+    enum_constant public static final java.nio.file.attribute.AclEntryPermission APPEND_DATA;
+    enum_constant public static final java.nio.file.attribute.AclEntryPermission DELETE;
+    enum_constant public static final java.nio.file.attribute.AclEntryPermission DELETE_CHILD;
+    enum_constant public static final java.nio.file.attribute.AclEntryPermission EXECUTE;
+    enum_constant public static final java.nio.file.attribute.AclEntryPermission READ_ACL;
+    enum_constant public static final java.nio.file.attribute.AclEntryPermission READ_ATTRIBUTES;
+    enum_constant public static final java.nio.file.attribute.AclEntryPermission READ_DATA;
+    enum_constant public static final java.nio.file.attribute.AclEntryPermission READ_NAMED_ATTRS;
+    enum_constant public static final java.nio.file.attribute.AclEntryPermission SYNCHRONIZE;
+    enum_constant public static final java.nio.file.attribute.AclEntryPermission WRITE_ACL;
+    enum_constant public static final java.nio.file.attribute.AclEntryPermission WRITE_ATTRIBUTES;
+    enum_constant public static final java.nio.file.attribute.AclEntryPermission WRITE_DATA;
+    enum_constant public static final java.nio.file.attribute.AclEntryPermission WRITE_NAMED_ATTRS;
+    enum_constant public static final java.nio.file.attribute.AclEntryPermission WRITE_OWNER;
+    field public static final java.nio.file.attribute.AclEntryPermission ADD_FILE;
+    field public static final java.nio.file.attribute.AclEntryPermission ADD_SUBDIRECTORY;
+    field public static final java.nio.file.attribute.AclEntryPermission LIST_DIRECTORY;
+  }
+
+  public enum AclEntryType {
+    enum_constant public static final java.nio.file.attribute.AclEntryType ALARM;
+    enum_constant public static final java.nio.file.attribute.AclEntryType ALLOW;
+    enum_constant public static final java.nio.file.attribute.AclEntryType AUDIT;
+    enum_constant public static final java.nio.file.attribute.AclEntryType DENY;
+  }
+
+  public interface AclFileAttributeView extends java.nio.file.attribute.FileOwnerAttributeView {
+    method public java.util.List<java.nio.file.attribute.AclEntry> getAcl() throws java.io.IOException;
+    method public void setAcl(java.util.List<java.nio.file.attribute.AclEntry>) throws java.io.IOException;
+  }
+
+  public interface AttributeView {
+    method public String name();
+  }
+
+  public interface BasicFileAttributeView extends java.nio.file.attribute.FileAttributeView {
+    method public java.nio.file.attribute.BasicFileAttributes readAttributes() throws java.io.IOException;
+    method public void setTimes(java.nio.file.attribute.FileTime, java.nio.file.attribute.FileTime, java.nio.file.attribute.FileTime) throws java.io.IOException;
+  }
+
+  public interface BasicFileAttributes {
+    method public java.nio.file.attribute.FileTime creationTime();
+    method public Object fileKey();
+    method public boolean isDirectory();
+    method public boolean isOther();
+    method public boolean isRegularFile();
+    method public boolean isSymbolicLink();
+    method public java.nio.file.attribute.FileTime lastAccessTime();
+    method public java.nio.file.attribute.FileTime lastModifiedTime();
+    method public long size();
+  }
+
+  public interface DosFileAttributeView extends java.nio.file.attribute.BasicFileAttributeView {
+    method public java.nio.file.attribute.DosFileAttributes readAttributes() throws java.io.IOException;
+    method public void setArchive(boolean) throws java.io.IOException;
+    method public void setHidden(boolean) throws java.io.IOException;
+    method public void setReadOnly(boolean) throws java.io.IOException;
+    method public void setSystem(boolean) throws java.io.IOException;
+  }
+
+  public interface DosFileAttributes extends java.nio.file.attribute.BasicFileAttributes {
+    method public boolean isArchive();
+    method public boolean isHidden();
+    method public boolean isReadOnly();
+    method public boolean isSystem();
+  }
+
+  public interface FileAttribute<T> {
+    method public String name();
+    method public T value();
+  }
+
+  public interface FileAttributeView extends java.nio.file.attribute.AttributeView {
+  }
+
+  public interface FileOwnerAttributeView extends java.nio.file.attribute.FileAttributeView {
+    method public java.nio.file.attribute.UserPrincipal getOwner() throws java.io.IOException;
+    method public void setOwner(java.nio.file.attribute.UserPrincipal) throws java.io.IOException;
+  }
+
+  public interface FileStoreAttributeView extends java.nio.file.attribute.AttributeView {
+  }
+
+  public final class FileTime implements java.lang.Comparable<java.nio.file.attribute.FileTime> {
+    method public int compareTo(java.nio.file.attribute.FileTime);
+    method public static java.nio.file.attribute.FileTime from(long, java.util.concurrent.TimeUnit);
+    method public static java.nio.file.attribute.FileTime from(java.time.Instant);
+    method public static java.nio.file.attribute.FileTime fromMillis(long);
+    method public long to(java.util.concurrent.TimeUnit);
+    method public java.time.Instant toInstant();
+    method public long toMillis();
+  }
+
+  public interface GroupPrincipal extends java.nio.file.attribute.UserPrincipal {
+  }
+
+  public interface PosixFileAttributeView extends java.nio.file.attribute.BasicFileAttributeView java.nio.file.attribute.FileOwnerAttributeView {
+    method public java.nio.file.attribute.PosixFileAttributes readAttributes() throws java.io.IOException;
+    method public void setGroup(java.nio.file.attribute.GroupPrincipal) throws java.io.IOException;
+    method public void setPermissions(java.util.Set<java.nio.file.attribute.PosixFilePermission>) throws java.io.IOException;
+  }
+
+  public interface PosixFileAttributes extends java.nio.file.attribute.BasicFileAttributes {
+    method public java.nio.file.attribute.GroupPrincipal group();
+    method public java.nio.file.attribute.UserPrincipal owner();
+    method public java.util.Set<java.nio.file.attribute.PosixFilePermission> permissions();
+  }
+
+  public enum PosixFilePermission {
+    enum_constant public static final java.nio.file.attribute.PosixFilePermission GROUP_EXECUTE;
+    enum_constant public static final java.nio.file.attribute.PosixFilePermission GROUP_READ;
+    enum_constant public static final java.nio.file.attribute.PosixFilePermission GROUP_WRITE;
+    enum_constant public static final java.nio.file.attribute.PosixFilePermission OTHERS_EXECUTE;
+    enum_constant public static final java.nio.file.attribute.PosixFilePermission OTHERS_READ;
+    enum_constant public static final java.nio.file.attribute.PosixFilePermission OTHERS_WRITE;
+    enum_constant public static final java.nio.file.attribute.PosixFilePermission OWNER_EXECUTE;
+    enum_constant public static final java.nio.file.attribute.PosixFilePermission OWNER_READ;
+    enum_constant public static final java.nio.file.attribute.PosixFilePermission OWNER_WRITE;
+  }
+
+  public final class PosixFilePermissions {
+    method public static java.nio.file.attribute.FileAttribute<java.util.Set<java.nio.file.attribute.PosixFilePermission>> asFileAttribute(java.util.Set<java.nio.file.attribute.PosixFilePermission>);
+    method public static java.util.Set<java.nio.file.attribute.PosixFilePermission> fromString(String);
+    method public static String toString(java.util.Set<java.nio.file.attribute.PosixFilePermission>);
+  }
+
+  public interface UserDefinedFileAttributeView extends java.nio.file.attribute.FileAttributeView {
+    method public void delete(String) throws java.io.IOException;
+    method public java.util.List<java.lang.String> list() throws java.io.IOException;
+    method public int read(String, java.nio.ByteBuffer) throws java.io.IOException;
+    method public int size(String) throws java.io.IOException;
+    method public int write(String, java.nio.ByteBuffer) throws java.io.IOException;
+  }
+
+  public interface UserPrincipal extends java.security.Principal {
+  }
+
+  public abstract class UserPrincipalLookupService {
+    ctor protected UserPrincipalLookupService();
+    method public abstract java.nio.file.attribute.GroupPrincipal lookupPrincipalByGroupName(String) throws java.io.IOException;
+    method public abstract java.nio.file.attribute.UserPrincipal lookupPrincipalByName(String) throws java.io.IOException;
+  }
+
+  public class UserPrincipalNotFoundException extends java.io.IOException {
+    ctor public UserPrincipalNotFoundException(String);
+    method public String getName();
+  }
+
+}
+
+package java.nio.file.spi {
+
+  public abstract class FileSystemProvider {
+    ctor protected FileSystemProvider();
+    method public abstract void checkAccess(java.nio.file.Path, java.nio.file.AccessMode...) throws java.io.IOException;
+    method public abstract void copy(java.nio.file.Path, java.nio.file.Path, java.nio.file.CopyOption...) throws java.io.IOException;
+    method public abstract void createDirectory(java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
+    method public void createLink(java.nio.file.Path, java.nio.file.Path) throws java.io.IOException;
+    method public void createSymbolicLink(java.nio.file.Path, java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
+    method public abstract void delete(java.nio.file.Path) throws java.io.IOException;
+    method public boolean deleteIfExists(java.nio.file.Path) throws java.io.IOException;
+    method public abstract <V extends java.nio.file.attribute.FileAttributeView> V getFileAttributeView(java.nio.file.Path, Class<V>, java.nio.file.LinkOption...);
+    method public abstract java.nio.file.FileStore getFileStore(java.nio.file.Path) throws java.io.IOException;
+    method public abstract java.nio.file.FileSystem getFileSystem(java.net.URI);
+    method public abstract java.nio.file.Path getPath(java.net.URI);
+    method public abstract String getScheme();
+    method public static java.util.List<java.nio.file.spi.FileSystemProvider> installedProviders();
+    method public abstract boolean isHidden(java.nio.file.Path) throws java.io.IOException;
+    method public abstract boolean isSameFile(java.nio.file.Path, java.nio.file.Path) throws java.io.IOException;
+    method public abstract void move(java.nio.file.Path, java.nio.file.Path, java.nio.file.CopyOption...) throws java.io.IOException;
+    method public java.nio.channels.AsynchronousFileChannel newAsynchronousFileChannel(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.util.concurrent.ExecutorService, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
+    method public abstract java.nio.channels.SeekableByteChannel newByteChannel(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
+    method public abstract java.nio.file.DirectoryStream<java.nio.file.Path> newDirectoryStream(java.nio.file.Path, java.nio.file.DirectoryStream.Filter<? super java.nio.file.Path>) throws java.io.IOException;
+    method public java.nio.channels.FileChannel newFileChannel(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
+    method public abstract java.nio.file.FileSystem newFileSystem(java.net.URI, java.util.Map<java.lang.String,?>) throws java.io.IOException;
+    method public java.nio.file.FileSystem newFileSystem(java.nio.file.Path, java.util.Map<java.lang.String,?>) throws java.io.IOException;
+    method public java.io.InputStream newInputStream(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
+    method public java.io.OutputStream newOutputStream(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
+    method public abstract <A extends java.nio.file.attribute.BasicFileAttributes> A readAttributes(java.nio.file.Path, Class<A>, java.nio.file.LinkOption...) throws java.io.IOException;
+    method public abstract java.util.Map<java.lang.String,java.lang.Object> readAttributes(java.nio.file.Path, String, java.nio.file.LinkOption...) throws java.io.IOException;
+    method public java.nio.file.Path readSymbolicLink(java.nio.file.Path) throws java.io.IOException;
+    method public abstract void setAttribute(java.nio.file.Path, String, Object, java.nio.file.LinkOption...) throws java.io.IOException;
+  }
+
+  public abstract class FileTypeDetector {
+    ctor protected FileTypeDetector();
+    method public abstract String probeContentType(java.nio.file.Path) throws java.io.IOException;
+  }
+
+}
+
+package java.security {
+
+  public final class AccessControlContext {
+    ctor public AccessControlContext(java.security.ProtectionDomain[]);
+    ctor public AccessControlContext(java.security.AccessControlContext, java.security.DomainCombiner);
+    method public void checkPermission(java.security.Permission) throws java.security.AccessControlException;
+    method public java.security.DomainCombiner getDomainCombiner();
+  }
+
+  public class AccessControlException extends java.lang.SecurityException {
+    ctor public AccessControlException(String);
+    ctor public AccessControlException(String, java.security.Permission);
+    method public java.security.Permission getPermission();
+  }
+
+  public final class AccessController {
+    method public static void checkPermission(java.security.Permission) throws java.security.AccessControlException;
+    method public static <T> T doPrivileged(java.security.PrivilegedAction<T>);
+    method public static <T> T doPrivileged(java.security.PrivilegedAction<T>, java.security.AccessControlContext);
+    method public static <T> T doPrivileged(java.security.PrivilegedExceptionAction<T>) throws java.security.PrivilegedActionException;
+    method public static <T> T doPrivileged(java.security.PrivilegedExceptionAction<T>, java.security.AccessControlContext) throws java.security.PrivilegedActionException;
+    method public static <T> T doPrivilegedWithCombiner(java.security.PrivilegedAction<T>);
+    method public static <T> T doPrivilegedWithCombiner(java.security.PrivilegedExceptionAction<T>) throws java.security.PrivilegedActionException;
+    method public static java.security.AccessControlContext getContext();
+  }
+
+  public interface AlgorithmConstraints {
+    method public boolean permits(java.util.Set<java.security.CryptoPrimitive>, String, java.security.AlgorithmParameters);
+    method public boolean permits(java.util.Set<java.security.CryptoPrimitive>, java.security.Key);
+    method public boolean permits(java.util.Set<java.security.CryptoPrimitive>, String, java.security.Key, java.security.AlgorithmParameters);
+  }
+
+  public class AlgorithmParameterGenerator {
+    ctor protected AlgorithmParameterGenerator(java.security.AlgorithmParameterGeneratorSpi, java.security.Provider, String);
+    method public final java.security.AlgorithmParameters generateParameters();
+    method public final String getAlgorithm();
+    method public static java.security.AlgorithmParameterGenerator getInstance(String) throws java.security.NoSuchAlgorithmException;
+    method public static java.security.AlgorithmParameterGenerator getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+    method public static java.security.AlgorithmParameterGenerator getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+    method public final java.security.Provider getProvider();
+    method public final void init(int);
+    method public final void init(int, java.security.SecureRandom);
+    method public final void init(java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException;
+    method public final void init(java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException;
+  }
+
+  public abstract class AlgorithmParameterGeneratorSpi {
+    ctor public AlgorithmParameterGeneratorSpi();
+    method protected abstract java.security.AlgorithmParameters engineGenerateParameters();
+    method protected abstract void engineInit(int, java.security.SecureRandom);
+    method protected abstract void engineInit(java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException;
+  }
+
+  public class AlgorithmParameters {
+    ctor protected AlgorithmParameters(java.security.AlgorithmParametersSpi, java.security.Provider, String);
+    method public final String getAlgorithm();
+    method public final byte[] getEncoded() throws java.io.IOException;
+    method public final byte[] getEncoded(String) throws java.io.IOException;
+    method public static java.security.AlgorithmParameters getInstance(String) throws java.security.NoSuchAlgorithmException;
+    method public static java.security.AlgorithmParameters getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+    method public static java.security.AlgorithmParameters getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+    method public final <T extends java.security.spec.AlgorithmParameterSpec> T getParameterSpec(Class<T>) throws java.security.spec.InvalidParameterSpecException;
+    method public final java.security.Provider getProvider();
+    method public final void init(java.security.spec.AlgorithmParameterSpec) throws java.security.spec.InvalidParameterSpecException;
+    method public final void init(byte[]) throws java.io.IOException;
+    method public final void init(byte[], String) throws java.io.IOException;
+    method public final String toString();
+  }
+
+  public abstract class AlgorithmParametersSpi {
+    ctor public AlgorithmParametersSpi();
+    method protected abstract byte[] engineGetEncoded() throws java.io.IOException;
+    method protected abstract byte[] engineGetEncoded(String) throws java.io.IOException;
+    method protected abstract <T extends java.security.spec.AlgorithmParameterSpec> T engineGetParameterSpec(Class<T>) throws java.security.spec.InvalidParameterSpecException;
+    method protected abstract void engineInit(java.security.spec.AlgorithmParameterSpec) throws java.security.spec.InvalidParameterSpecException;
+    method protected abstract void engineInit(byte[]) throws java.io.IOException;
+    method protected abstract void engineInit(byte[], String) throws java.io.IOException;
+    method protected abstract String engineToString();
+  }
+
+  public final class AllPermission extends java.security.Permission {
+    ctor public AllPermission();
+    ctor public AllPermission(String, String);
+    method public String getActions();
+    method public boolean implies(java.security.Permission);
+  }
+
+  public abstract class AuthProvider extends java.security.Provider {
+    ctor protected AuthProvider(String, double, String);
+    method public abstract void login(javax.security.auth.Subject, javax.security.auth.callback.CallbackHandler) throws javax.security.auth.login.LoginException;
+    method public abstract void logout() throws javax.security.auth.login.LoginException;
+    method public abstract void setCallbackHandler(javax.security.auth.callback.CallbackHandler);
+  }
+
+  public abstract class BasicPermission extends java.security.Permission implements java.io.Serializable {
+    ctor public BasicPermission(String);
+    ctor public BasicPermission(String, String);
+    method public String getActions();
+    method public boolean implies(java.security.Permission);
+  }
+
+  @Deprecated public interface Certificate {
+    method @Deprecated public void decode(java.io.InputStream) throws java.io.IOException, java.security.KeyException;
+    method @Deprecated public void encode(java.io.OutputStream) throws java.io.IOException, java.security.KeyException;
+    method @Deprecated public String getFormat();
+    method @Deprecated public java.security.Principal getGuarantor();
+    method @Deprecated public java.security.Principal getPrincipal();
+    method @Deprecated public java.security.PublicKey getPublicKey();
+    method @Deprecated public String toString(boolean);
+  }
+
+  public final class CodeSigner implements java.io.Serializable {
+    ctor public CodeSigner(java.security.cert.CertPath, java.security.Timestamp);
+    method public java.security.cert.CertPath getSignerCertPath();
+    method public java.security.Timestamp getTimestamp();
+  }
+
+  public class CodeSource implements java.io.Serializable {
+    ctor public CodeSource(java.net.URL, java.security.cert.Certificate[]);
+    ctor public CodeSource(java.net.URL, java.security.CodeSigner[]);
+    method public final java.security.cert.Certificate[] getCertificates();
+    method public final java.security.CodeSigner[] getCodeSigners();
+    method public final java.net.URL getLocation();
+    method public boolean implies(java.security.CodeSource);
+  }
+
+  public enum CryptoPrimitive {
+    enum_constant public static final java.security.CryptoPrimitive BLOCK_CIPHER;
+    enum_constant public static final java.security.CryptoPrimitive KEY_AGREEMENT;
+    enum_constant public static final java.security.CryptoPrimitive KEY_ENCAPSULATION;
+    enum_constant public static final java.security.CryptoPrimitive KEY_WRAP;
+    enum_constant public static final java.security.CryptoPrimitive MAC;
+    enum_constant public static final java.security.CryptoPrimitive MESSAGE_DIGEST;
+    enum_constant public static final java.security.CryptoPrimitive PUBLIC_KEY_ENCRYPTION;
+    enum_constant public static final java.security.CryptoPrimitive SECURE_RANDOM;
+    enum_constant public static final java.security.CryptoPrimitive SIGNATURE;
+    enum_constant public static final java.security.CryptoPrimitive STREAM_CIPHER;
+  }
+
+  public class DigestException extends java.security.GeneralSecurityException {
+    ctor public DigestException();
+    ctor public DigestException(String);
+    ctor public DigestException(String, Throwable);
+    ctor public DigestException(Throwable);
+  }
+
+  public class DigestInputStream extends java.io.FilterInputStream {
+    ctor public DigestInputStream(java.io.InputStream, java.security.MessageDigest);
+    method public java.security.MessageDigest getMessageDigest();
+    method public void on(boolean);
+    method public void setMessageDigest(java.security.MessageDigest);
+    field protected java.security.MessageDigest digest;
+  }
+
+  public class DigestOutputStream extends java.io.FilterOutputStream {
+    ctor public DigestOutputStream(java.io.OutputStream, java.security.MessageDigest);
+    method public java.security.MessageDigest getMessageDigest();
+    method public void on(boolean);
+    method public void setMessageDigest(java.security.MessageDigest);
+    field protected java.security.MessageDigest digest;
+  }
+
+  public interface DomainCombiner {
+    method public java.security.ProtectionDomain[] combine(java.security.ProtectionDomain[], java.security.ProtectionDomain[]);
+  }
+
+  public final class DomainLoadStoreParameter implements java.security.KeyStore.LoadStoreParameter {
+    ctor public DomainLoadStoreParameter(java.net.URI, java.util.Map<java.lang.String,java.security.KeyStore.ProtectionParameter>);
+    method public java.net.URI getConfiguration();
+    method public java.security.KeyStore.ProtectionParameter getProtectionParameter();
+    method public java.util.Map<java.lang.String,java.security.KeyStore.ProtectionParameter> getProtectionParams();
+  }
+
+  public class GeneralSecurityException extends java.lang.Exception {
+    ctor public GeneralSecurityException();
+    ctor public GeneralSecurityException(String);
+    ctor public GeneralSecurityException(String, Throwable);
+    ctor public GeneralSecurityException(Throwable);
+  }
+
+  public interface Guard {
+    method public void checkGuard(Object) throws java.lang.SecurityException;
+  }
+
+  public class GuardedObject implements java.io.Serializable {
+    ctor public GuardedObject(Object, java.security.Guard);
+    method public Object getObject() throws java.lang.SecurityException;
+  }
+
+  @Deprecated public abstract class Identity implements java.security.Principal java.io.Serializable {
+    ctor @Deprecated protected Identity();
+    ctor @Deprecated public Identity(String, java.security.IdentityScope) throws java.security.KeyManagementException;
+    ctor @Deprecated public Identity(String);
+    method @Deprecated public void addCertificate(java.security.Certificate) throws java.security.KeyManagementException;
+    method @Deprecated public java.security.Certificate[] certificates();
+    method @Deprecated public final boolean equals(Object);
+    method @Deprecated public String getInfo();
+    method @Deprecated public final String getName();
+    method @Deprecated public java.security.PublicKey getPublicKey();
+    method @Deprecated public final java.security.IdentityScope getScope();
+    method @Deprecated protected boolean identityEquals(java.security.Identity);
+    method @Deprecated public void removeCertificate(java.security.Certificate) throws java.security.KeyManagementException;
+    method @Deprecated public void setInfo(String);
+    method @Deprecated public void setPublicKey(java.security.PublicKey) throws java.security.KeyManagementException;
+    method @Deprecated public String toString(boolean);
+  }
+
+  @Deprecated public abstract class IdentityScope extends java.security.Identity {
+    ctor @Deprecated protected IdentityScope();
+    ctor @Deprecated public IdentityScope(String);
+    ctor @Deprecated public IdentityScope(String, java.security.IdentityScope) throws java.security.KeyManagementException;
+    method @Deprecated public abstract void addIdentity(java.security.Identity) throws java.security.KeyManagementException;
+    method @Deprecated public abstract java.security.Identity getIdentity(String);
+    method @Deprecated public java.security.Identity getIdentity(java.security.Principal);
+    method @Deprecated public abstract java.security.Identity getIdentity(java.security.PublicKey);
+    method @Deprecated public static java.security.IdentityScope getSystemScope();
+    method @Deprecated public abstract java.util.Enumeration<java.security.Identity> identities();
+    method @Deprecated public abstract void removeIdentity(java.security.Identity) throws java.security.KeyManagementException;
+    method @Deprecated protected static void setSystemScope(java.security.IdentityScope);
+    method @Deprecated public abstract int size();
+  }
+
+  public class InvalidAlgorithmParameterException extends java.security.GeneralSecurityException {
+    ctor public InvalidAlgorithmParameterException();
+    ctor public InvalidAlgorithmParameterException(String);
+    ctor public InvalidAlgorithmParameterException(String, Throwable);
+    ctor public InvalidAlgorithmParameterException(Throwable);
+  }
+
+  public class InvalidKeyException extends java.security.KeyException {
+    ctor public InvalidKeyException();
+    ctor public InvalidKeyException(String);
+    ctor public InvalidKeyException(String, Throwable);
+    ctor public InvalidKeyException(Throwable);
+  }
+
+  public class InvalidParameterException extends java.lang.IllegalArgumentException {
+    ctor public InvalidParameterException();
+    ctor public InvalidParameterException(String);
+  }
+
+  public interface Key extends java.io.Serializable {
+    method public String getAlgorithm();
+    method public byte[] getEncoded();
+    method public String getFormat();
+    field public static final long serialVersionUID = 6603384152749567654L; // 0x5ba3eee69414eea6L
+  }
+
+  public class KeyException extends java.security.GeneralSecurityException {
+    ctor public KeyException();
+    ctor public KeyException(String);
+    ctor public KeyException(String, Throwable);
+    ctor public KeyException(Throwable);
+  }
+
+  public class KeyFactory {
+    ctor protected KeyFactory(java.security.KeyFactorySpi, java.security.Provider, String);
+    method public final java.security.PrivateKey generatePrivate(java.security.spec.KeySpec) throws java.security.spec.InvalidKeySpecException;
+    method public final java.security.PublicKey generatePublic(java.security.spec.KeySpec) throws java.security.spec.InvalidKeySpecException;
+    method public final String getAlgorithm();
+    method public static java.security.KeyFactory getInstance(String) throws java.security.NoSuchAlgorithmException;
+    method public static java.security.KeyFactory getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+    method public static java.security.KeyFactory getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+    method public final <T extends java.security.spec.KeySpec> T getKeySpec(java.security.Key, Class<T>) throws java.security.spec.InvalidKeySpecException;
+    method public final java.security.Provider getProvider();
+    method public final java.security.Key translateKey(java.security.Key) throws java.security.InvalidKeyException;
+  }
+
+  public abstract class KeyFactorySpi {
+    ctor public KeyFactorySpi();
+    method protected abstract java.security.PrivateKey engineGeneratePrivate(java.security.spec.KeySpec) throws java.security.spec.InvalidKeySpecException;
+    method protected abstract java.security.PublicKey engineGeneratePublic(java.security.spec.KeySpec) throws java.security.spec.InvalidKeySpecException;
+    method protected abstract <T extends java.security.spec.KeySpec> T engineGetKeySpec(java.security.Key, Class<T>) throws java.security.spec.InvalidKeySpecException;
+    method protected abstract java.security.Key engineTranslateKey(java.security.Key) throws java.security.InvalidKeyException;
+  }
+
+  public class KeyManagementException extends java.security.KeyException {
+    ctor public KeyManagementException();
+    ctor public KeyManagementException(String);
+    ctor public KeyManagementException(String, Throwable);
+    ctor public KeyManagementException(Throwable);
+  }
+
+  public final class KeyPair implements java.io.Serializable {
+    ctor public KeyPair(java.security.PublicKey, java.security.PrivateKey);
+    method public java.security.PrivateKey getPrivate();
+    method public java.security.PublicKey getPublic();
+  }
+
+  public abstract class KeyPairGenerator extends java.security.KeyPairGeneratorSpi {
+    ctor protected KeyPairGenerator(String);
+    method public final java.security.KeyPair genKeyPair();
+    method public java.security.KeyPair generateKeyPair();
+    method public String getAlgorithm();
+    method public static java.security.KeyPairGenerator getInstance(String) throws java.security.NoSuchAlgorithmException;
+    method public static java.security.KeyPairGenerator getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+    method public static java.security.KeyPairGenerator getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+    method public final java.security.Provider getProvider();
+    method public void initialize(int);
+    method public void initialize(int, java.security.SecureRandom);
+    method public void initialize(java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException;
+  }
+
+  public abstract class KeyPairGeneratorSpi {
+    ctor public KeyPairGeneratorSpi();
+    method public abstract java.security.KeyPair generateKeyPair();
+    method public abstract void initialize(int, java.security.SecureRandom);
+    method public void initialize(java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException;
+  }
+
+  public class KeyRep implements java.io.Serializable {
+    ctor public KeyRep(java.security.KeyRep.Type, String, String, byte[]);
+    method protected Object readResolve() throws java.io.ObjectStreamException;
+  }
+
+  public enum KeyRep.Type {
+    enum_constant public static final java.security.KeyRep.Type PRIVATE;
+    enum_constant public static final java.security.KeyRep.Type PUBLIC;
+    enum_constant public static final java.security.KeyRep.Type SECRET;
+  }
+
+  public class KeyStore {
+    ctor protected KeyStore(java.security.KeyStoreSpi, java.security.Provider, String);
+    method public final java.util.Enumeration<java.lang.String> aliases() throws java.security.KeyStoreException;
+    method public final boolean containsAlias(String) throws java.security.KeyStoreException;
+    method public final void deleteEntry(String) throws java.security.KeyStoreException;
+    method public final boolean entryInstanceOf(String, Class<? extends java.security.KeyStore.Entry>) throws java.security.KeyStoreException;
+    method public final java.security.cert.Certificate getCertificate(String) throws java.security.KeyStoreException;
+    method public final String getCertificateAlias(java.security.cert.Certificate) throws java.security.KeyStoreException;
+    method public final java.security.cert.Certificate[] getCertificateChain(String) throws java.security.KeyStoreException;
+    method public final java.util.Date getCreationDate(String) throws java.security.KeyStoreException;
+    method public static final String getDefaultType();
+    method public final java.security.KeyStore.Entry getEntry(String, java.security.KeyStore.ProtectionParameter) throws java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableEntryException;
+    method public static java.security.KeyStore getInstance(String) throws java.security.KeyStoreException;
+    method public static java.security.KeyStore getInstance(String, String) throws java.security.KeyStoreException, java.security.NoSuchProviderException;
+    method public static java.security.KeyStore getInstance(String, java.security.Provider) throws java.security.KeyStoreException;
+    method public final java.security.Key getKey(String, char[]) throws java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
+    method public final java.security.Provider getProvider();
+    method public final String getType();
+    method public final boolean isCertificateEntry(String) throws java.security.KeyStoreException;
+    method public final boolean isKeyEntry(String) throws java.security.KeyStoreException;
+    method public final void load(java.io.InputStream, char[]) throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException;
+    method public final void load(java.security.KeyStore.LoadStoreParameter) throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException;
+    method public final void setCertificateEntry(String, java.security.cert.Certificate) throws java.security.KeyStoreException;
+    method public final void setEntry(String, java.security.KeyStore.Entry, java.security.KeyStore.ProtectionParameter) throws java.security.KeyStoreException;
+    method public final void setKeyEntry(String, java.security.Key, char[], java.security.cert.Certificate[]) throws java.security.KeyStoreException;
+    method public final void setKeyEntry(String, byte[], java.security.cert.Certificate[]) throws java.security.KeyStoreException;
+    method public final int size() throws java.security.KeyStoreException;
+    method public final void store(java.io.OutputStream, char[]) throws java.security.cert.CertificateException, java.io.IOException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException;
+    method public final void store(java.security.KeyStore.LoadStoreParameter) throws java.security.cert.CertificateException, java.io.IOException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException;
+  }
+
+  public abstract static class KeyStore.Builder {
+    ctor protected KeyStore.Builder();
+    method public abstract java.security.KeyStore getKeyStore() throws java.security.KeyStoreException;
+    method public abstract java.security.KeyStore.ProtectionParameter getProtectionParameter(String) throws java.security.KeyStoreException;
+    method public static java.security.KeyStore.Builder newInstance(java.security.KeyStore, java.security.KeyStore.ProtectionParameter);
+    method public static java.security.KeyStore.Builder newInstance(String, java.security.Provider, java.io.File, java.security.KeyStore.ProtectionParameter);
+    method public static java.security.KeyStore.Builder newInstance(String, java.security.Provider, java.security.KeyStore.ProtectionParameter);
+  }
+
+  public static class KeyStore.CallbackHandlerProtection implements java.security.KeyStore.ProtectionParameter {
+    ctor public KeyStore.CallbackHandlerProtection(javax.security.auth.callback.CallbackHandler);
+    method public javax.security.auth.callback.CallbackHandler getCallbackHandler();
+  }
+
+  public static interface KeyStore.Entry {
+    method public default java.util.Set<java.security.KeyStore.Entry.Attribute> getAttributes();
+  }
+
+  public static interface KeyStore.Entry.Attribute {
+    method public String getName();
+    method public String getValue();
+  }
+
+  public static interface KeyStore.LoadStoreParameter {
+    method public java.security.KeyStore.ProtectionParameter getProtectionParameter();
+  }
+
+  public static class KeyStore.PasswordProtection implements javax.security.auth.Destroyable java.security.KeyStore.ProtectionParameter {
+    ctor public KeyStore.PasswordProtection(char[]);
+    ctor public KeyStore.PasswordProtection(char[], String, java.security.spec.AlgorithmParameterSpec);
+    method public char[] getPassword();
+    method public String getProtectionAlgorithm();
+    method public java.security.spec.AlgorithmParameterSpec getProtectionParameters();
+  }
+
+  public static final class KeyStore.PrivateKeyEntry implements java.security.KeyStore.Entry {
+    ctor public KeyStore.PrivateKeyEntry(java.security.PrivateKey, java.security.cert.Certificate[]);
+    ctor public KeyStore.PrivateKeyEntry(java.security.PrivateKey, java.security.cert.Certificate[], java.util.Set<java.security.KeyStore.Entry.Attribute>);
+    method public java.security.cert.Certificate getCertificate();
+    method public java.security.cert.Certificate[] getCertificateChain();
+    method public java.security.PrivateKey getPrivateKey();
+  }
+
+  public static interface KeyStore.ProtectionParameter {
+  }
+
+  public static final class KeyStore.SecretKeyEntry implements java.security.KeyStore.Entry {
+    ctor public KeyStore.SecretKeyEntry(javax.crypto.SecretKey);
+    ctor public KeyStore.SecretKeyEntry(javax.crypto.SecretKey, java.util.Set<java.security.KeyStore.Entry.Attribute>);
+    method public javax.crypto.SecretKey getSecretKey();
+  }
+
+  public static final class KeyStore.TrustedCertificateEntry implements java.security.KeyStore.Entry {
+    ctor public KeyStore.TrustedCertificateEntry(java.security.cert.Certificate);
+    ctor public KeyStore.TrustedCertificateEntry(java.security.cert.Certificate, java.util.Set<java.security.KeyStore.Entry.Attribute>);
+    method public java.security.cert.Certificate getTrustedCertificate();
+  }
+
+  public class KeyStoreException extends java.security.GeneralSecurityException {
+    ctor public KeyStoreException();
+    ctor public KeyStoreException(String);
+    ctor public KeyStoreException(String, Throwable);
+    ctor public KeyStoreException(Throwable);
+  }
+
+  public abstract class KeyStoreSpi {
+    ctor public KeyStoreSpi();
+    method public abstract java.util.Enumeration<java.lang.String> engineAliases();
+    method public abstract boolean engineContainsAlias(String);
+    method public abstract void engineDeleteEntry(String) throws java.security.KeyStoreException;
+    method public boolean engineEntryInstanceOf(String, Class<? extends java.security.KeyStore.Entry>);
+    method public abstract java.security.cert.Certificate engineGetCertificate(String);
+    method public abstract String engineGetCertificateAlias(java.security.cert.Certificate);
+    method public abstract java.security.cert.Certificate[] engineGetCertificateChain(String);
+    method public abstract java.util.Date engineGetCreationDate(String);
+    method public java.security.KeyStore.Entry engineGetEntry(String, java.security.KeyStore.ProtectionParameter) throws java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableEntryException;
+    method public abstract java.security.Key engineGetKey(String, char[]) throws java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
+    method public abstract boolean engineIsCertificateEntry(String);
+    method public abstract boolean engineIsKeyEntry(String);
+    method public abstract void engineLoad(java.io.InputStream, char[]) throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException;
+    method public void engineLoad(java.security.KeyStore.LoadStoreParameter) throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException;
+    method public abstract void engineSetCertificateEntry(String, java.security.cert.Certificate) throws java.security.KeyStoreException;
+    method public void engineSetEntry(String, java.security.KeyStore.Entry, java.security.KeyStore.ProtectionParameter) throws java.security.KeyStoreException;
+    method public abstract void engineSetKeyEntry(String, java.security.Key, char[], java.security.cert.Certificate[]) throws java.security.KeyStoreException;
+    method public abstract void engineSetKeyEntry(String, byte[], java.security.cert.Certificate[]) throws java.security.KeyStoreException;
+    method public abstract int engineSize();
+    method public abstract void engineStore(java.io.OutputStream, char[]) throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException;
+    method public void engineStore(java.security.KeyStore.LoadStoreParameter) throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException;
+  }
+
+  public abstract class MessageDigest extends java.security.MessageDigestSpi {
+    ctor protected MessageDigest(@NonNull String);
+    method @NonNull public byte[] digest();
+    method public int digest(@NonNull byte[], int, int) throws java.security.DigestException;
+    method @NonNull public byte[] digest(@NonNull byte[]);
+    method @NonNull public final String getAlgorithm();
+    method public final int getDigestLength();
+    method @NonNull public static java.security.MessageDigest getInstance(@NonNull String) throws java.security.NoSuchAlgorithmException;
+    method @NonNull public static java.security.MessageDigest getInstance(@NonNull String, @NonNull String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+    method @NonNull public static java.security.MessageDigest getInstance(@NonNull String, @NonNull java.security.Provider) throws java.security.NoSuchAlgorithmException;
+    method @NonNull public final java.security.Provider getProvider();
+    method public static boolean isEqual(@Nullable byte[], @Nullable byte[]);
+    method public void reset();
+    method public void update(byte);
+    method public void update(@NonNull byte[], int, int);
+    method public void update(@NonNull byte[]);
+    method public final void update(@NonNull java.nio.ByteBuffer);
+  }
+
+  public abstract class MessageDigestSpi {
+    ctor public MessageDigestSpi();
+    method public Object clone() throws java.lang.CloneNotSupportedException;
+    method protected abstract byte[] engineDigest();
+    method protected int engineDigest(byte[], int, int) throws java.security.DigestException;
+    method protected int engineGetDigestLength();
+    method protected abstract void engineReset();
+    method protected abstract void engineUpdate(byte);
+    method protected abstract void engineUpdate(byte[], int, int);
+    method protected void engineUpdate(java.nio.ByteBuffer);
+  }
+
+  public class NoSuchAlgorithmException extends java.security.GeneralSecurityException {
+    ctor public NoSuchAlgorithmException();
+    ctor public NoSuchAlgorithmException(String);
+    ctor public NoSuchAlgorithmException(String, Throwable);
+    ctor public NoSuchAlgorithmException(Throwable);
+  }
+
+  public class NoSuchProviderException extends java.security.GeneralSecurityException {
+    ctor public NoSuchProviderException();
+    ctor public NoSuchProviderException(String);
+  }
+
+  public final class PKCS12Attribute implements java.security.KeyStore.Entry.Attribute {
+    ctor public PKCS12Attribute(String, String);
+    ctor public PKCS12Attribute(byte[]);
+    method public byte[] getEncoded();
+    method public String getName();
+    method public String getValue();
+  }
+
+  public abstract class Permission implements java.security.Guard java.io.Serializable {
+    ctor public Permission(String);
+    method public void checkGuard(Object) throws java.lang.SecurityException;
+    method public abstract String getActions();
+    method public final String getName();
+    method public abstract boolean implies(java.security.Permission);
+    method public java.security.PermissionCollection newPermissionCollection();
+  }
+
+  public abstract class PermissionCollection implements java.io.Serializable {
+    ctor public PermissionCollection();
+    method public abstract void add(java.security.Permission);
+    method public abstract java.util.Enumeration<java.security.Permission> elements();
+    method public abstract boolean implies(java.security.Permission);
+    method public boolean isReadOnly();
+    method public void setReadOnly();
+  }
+
+  public final class Permissions extends java.security.PermissionCollection implements java.io.Serializable {
+    ctor public Permissions();
+    method public void add(java.security.Permission);
+    method public java.util.Enumeration<java.security.Permission> elements();
+    method public boolean implies(java.security.Permission);
+  }
+
+  public abstract class Policy {
+    ctor public Policy();
+    method public static java.security.Policy getInstance(String, java.security.Policy.Parameters) throws java.security.NoSuchAlgorithmException;
+    method public static java.security.Policy getInstance(String, java.security.Policy.Parameters, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+    method public static java.security.Policy getInstance(String, java.security.Policy.Parameters, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+    method public java.security.Policy.Parameters getParameters();
+    method public java.security.PermissionCollection getPermissions(java.security.CodeSource);
+    method public java.security.PermissionCollection getPermissions(java.security.ProtectionDomain);
+    method public static java.security.Policy getPolicy();
+    method public java.security.Provider getProvider();
+    method public String getType();
+    method public boolean implies(java.security.ProtectionDomain, java.security.Permission);
+    method public void refresh();
+    method public static void setPolicy(java.security.Policy);
+    field public static final java.security.PermissionCollection UNSUPPORTED_EMPTY_COLLECTION;
+  }
+
+  public static interface Policy.Parameters {
+  }
+
+  public abstract class PolicySpi {
+    ctor public PolicySpi();
+    method protected java.security.PermissionCollection engineGetPermissions(java.security.CodeSource);
+    method protected java.security.PermissionCollection engineGetPermissions(java.security.ProtectionDomain);
+    method protected abstract boolean engineImplies(java.security.ProtectionDomain, java.security.Permission);
+    method protected void engineRefresh();
+  }
+
+  public interface Principal {
+    method public boolean equals(Object);
+    method public String getName();
+    method public int hashCode();
+    method public default boolean implies(javax.security.auth.Subject);
+    method public String toString();
+  }
+
+  public interface PrivateKey extends java.security.Key javax.security.auth.Destroyable {
+    field public static final long serialVersionUID = 6034044314589513430L; // 0x53bd3b559a12c6d6L
+  }
+
+  public interface PrivilegedAction<T> {
+    method public T run();
+  }
+
+  public class PrivilegedActionException extends java.lang.Exception {
+    ctor public PrivilegedActionException(Exception);
+    method public Exception getException();
+  }
+
+  public interface PrivilegedExceptionAction<T> {
+    method public T run() throws java.lang.Exception;
+  }
+
+  public class ProtectionDomain {
+    ctor public ProtectionDomain(java.security.CodeSource, java.security.PermissionCollection);
+    ctor public ProtectionDomain(java.security.CodeSource, java.security.PermissionCollection, ClassLoader, java.security.Principal[]);
+    method public final ClassLoader getClassLoader();
+    method public final java.security.CodeSource getCodeSource();
+    method public final java.security.PermissionCollection getPermissions();
+    method public final java.security.Principal[] getPrincipals();
+    method public boolean implies(java.security.Permission);
+  }
+
+  public abstract class Provider extends java.util.Properties {
+    ctor protected Provider(String, double, String);
+    method public Object compute(Object, java.util.function.BiFunction<? super java.lang.Object,? super java.lang.Object,?>);
+    method public Object computeIfAbsent(Object, java.util.function.Function<? super java.lang.Object,?>);
+    method public Object computeIfPresent(Object, java.util.function.BiFunction<? super java.lang.Object,? super java.lang.Object,?>);
+    method public java.util.Enumeration<java.lang.Object> elements();
+    method public java.util.Set<java.util.Map.Entry<java.lang.Object,java.lang.Object>> entrySet();
+    method public void forEach(java.util.function.BiConsumer<? super java.lang.Object,? super java.lang.Object>);
+    method public Object get(Object);
+    method public String getInfo();
+    method public String getName();
+    method public Object getOrDefault(Object, Object);
+    method public java.security.Provider.Service getService(String, String);
+    method public java.util.Set<java.security.Provider.Service> getServices();
+    method public double getVersion();
+    method public java.util.Set<java.lang.Object> keySet();
+    method public java.util.Enumeration<java.lang.Object> keys();
+    method public Object merge(Object, Object, java.util.function.BiFunction<? super java.lang.Object,? super java.lang.Object,?>);
+    method public Object put(Object, Object);
+    method public void putAll(java.util.Map<?,?>);
+    method public Object putIfAbsent(Object, Object);
+    method protected void putService(java.security.Provider.Service);
+    method public Object remove(Object);
+    method protected void removeService(java.security.Provider.Service);
+    method public boolean replace(Object, Object, Object);
+    method public Object replace(Object, Object);
+    method public void replaceAll(java.util.function.BiFunction<? super java.lang.Object,? super java.lang.Object,?>);
+    method public java.util.Collection<java.lang.Object> values();
+  }
+
+  public static class Provider.Service {
+    ctor public Provider.Service(java.security.Provider, String, String, String, java.util.List<java.lang.String>, java.util.Map<java.lang.String,java.lang.String>);
+    method public final String getAlgorithm();
+    method public final String getAttribute(String);
+    method public final String getClassName();
+    method public final java.security.Provider getProvider();
+    method public final String getType();
+    method public Object newInstance(Object) throws java.security.NoSuchAlgorithmException;
+    method public boolean supportsParameter(Object);
+  }
+
+  public class ProviderException extends java.lang.RuntimeException {
+    ctor public ProviderException();
+    ctor public ProviderException(String);
+    ctor public ProviderException(String, Throwable);
+    ctor public ProviderException(Throwable);
+  }
+
+  public interface PublicKey extends java.security.Key {
+    field public static final long serialVersionUID = 7187392471159151072L; // 0x63bebf5f40c219e0L
+  }
+
+  public class SecureClassLoader extends java.lang.ClassLoader {
+    ctor protected SecureClassLoader(ClassLoader);
+    ctor protected SecureClassLoader();
+    method protected final Class<?> defineClass(String, byte[], int, int, java.security.CodeSource);
+    method protected final Class<?> defineClass(String, java.nio.ByteBuffer, java.security.CodeSource);
+    method protected java.security.PermissionCollection getPermissions(java.security.CodeSource);
+  }
+
+  public class SecureRandom extends java.util.Random {
+    ctor public SecureRandom();
+    ctor public SecureRandom(byte[]);
+    ctor protected SecureRandom(java.security.SecureRandomSpi, java.security.Provider);
+    method public byte[] generateSeed(int);
+    method public String getAlgorithm();
+    method public static java.security.SecureRandom getInstance(String) throws java.security.NoSuchAlgorithmException;
+    method public static java.security.SecureRandom getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+    method public static java.security.SecureRandom getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+    method public static java.security.SecureRandom getInstanceStrong() throws java.security.NoSuchAlgorithmException;
+    method public final java.security.Provider getProvider();
+    method public static byte[] getSeed(int);
+    method protected final int next(int);
+    method public void setSeed(byte[]);
+  }
+
+  public abstract class SecureRandomSpi implements java.io.Serializable {
+    ctor public SecureRandomSpi();
+    method protected abstract byte[] engineGenerateSeed(int);
+    method protected abstract void engineNextBytes(byte[]);
+    method protected abstract void engineSetSeed(byte[]);
+  }
+
+  public final class Security {
+    method public static int addProvider(java.security.Provider);
+    method @Deprecated public static String getAlgorithmProperty(String, String);
+    method public static java.util.Set<java.lang.String> getAlgorithms(String);
+    method public static String getProperty(String);
+    method public static java.security.Provider getProvider(String);
+    method public static java.security.Provider[] getProviders();
+    method public static java.security.Provider[] getProviders(String);
+    method public static java.security.Provider[] getProviders(java.util.Map<java.lang.String,java.lang.String>);
+    method public static int insertProviderAt(java.security.Provider, int);
+    method public static void removeProvider(String);
+    method public static void setProperty(String, String);
+  }
+
+  public final class SecurityPermission extends java.security.BasicPermission {
+    ctor public SecurityPermission(String);
+    ctor public SecurityPermission(String, String);
+  }
+
+  public abstract class Signature extends java.security.SignatureSpi {
+    ctor protected Signature(String);
+    method public final String getAlgorithm();
+    method public static java.security.Signature getInstance(String) throws java.security.NoSuchAlgorithmException;
+    method public static java.security.Signature getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+    method public static java.security.Signature getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+    method @Deprecated public final Object getParameter(String) throws java.security.InvalidParameterException;
+    method public final java.security.AlgorithmParameters getParameters();
+    method public final java.security.Provider getProvider();
+    method public final void initSign(java.security.PrivateKey) throws java.security.InvalidKeyException;
+    method public final void initSign(java.security.PrivateKey, java.security.SecureRandom) throws java.security.InvalidKeyException;
+    method public final void initVerify(java.security.PublicKey) throws java.security.InvalidKeyException;
+    method public final void initVerify(java.security.cert.Certificate) throws java.security.InvalidKeyException;
+    method @Deprecated public final void setParameter(String, Object) throws java.security.InvalidParameterException;
+    method public final void setParameter(java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException;
+    method public final byte[] sign() throws java.security.SignatureException;
+    method public final int sign(byte[], int, int) throws java.security.SignatureException;
+    method public final void update(byte) throws java.security.SignatureException;
+    method public final void update(byte[]) throws java.security.SignatureException;
+    method public final void update(byte[], int, int) throws java.security.SignatureException;
+    method public final void update(java.nio.ByteBuffer) throws java.security.SignatureException;
+    method public final boolean verify(byte[]) throws java.security.SignatureException;
+    method public final boolean verify(byte[], int, int) throws java.security.SignatureException;
+    field protected static final int SIGN = 2; // 0x2
+    field protected static final int UNINITIALIZED = 0; // 0x0
+    field protected static final int VERIFY = 3; // 0x3
+    field protected int state;
+  }
+
+  public class SignatureException extends java.security.GeneralSecurityException {
+    ctor public SignatureException();
+    ctor public SignatureException(String);
+    ctor public SignatureException(String, Throwable);
+    ctor public SignatureException(Throwable);
+  }
+
+  public abstract class SignatureSpi {
+    ctor public SignatureSpi();
+    method public Object clone() throws java.lang.CloneNotSupportedException;
+    method @Deprecated protected abstract Object engineGetParameter(String) throws java.security.InvalidParameterException;
+    method protected java.security.AlgorithmParameters engineGetParameters();
+    method protected abstract void engineInitSign(java.security.PrivateKey) throws java.security.InvalidKeyException;
+    method protected void engineInitSign(java.security.PrivateKey, java.security.SecureRandom) throws java.security.InvalidKeyException;
+    method protected abstract void engineInitVerify(java.security.PublicKey) throws java.security.InvalidKeyException;
+    method @Deprecated protected abstract void engineSetParameter(String, Object) throws java.security.InvalidParameterException;
+    method protected void engineSetParameter(java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException;
+    method protected abstract byte[] engineSign() throws java.security.SignatureException;
+    method protected int engineSign(byte[], int, int) throws java.security.SignatureException;
+    method protected abstract void engineUpdate(byte) throws java.security.SignatureException;
+    method protected abstract void engineUpdate(byte[], int, int) throws java.security.SignatureException;
+    method protected void engineUpdate(java.nio.ByteBuffer);
+    method protected abstract boolean engineVerify(byte[]) throws java.security.SignatureException;
+    method protected boolean engineVerify(byte[], int, int) throws java.security.SignatureException;
+    field protected java.security.SecureRandom appRandom;
+  }
+
+  public final class SignedObject implements java.io.Serializable {
+    ctor public SignedObject(java.io.Serializable, java.security.PrivateKey, java.security.Signature) throws java.io.IOException, java.security.InvalidKeyException, java.security.SignatureException;
+    method public String getAlgorithm();
+    method public Object getObject() throws java.lang.ClassNotFoundException, java.io.IOException;
+    method public byte[] getSignature();
+    method public boolean verify(java.security.PublicKey, java.security.Signature) throws java.security.InvalidKeyException, java.security.SignatureException;
+  }
+
+  @Deprecated public abstract class Signer extends java.security.Identity {
+    ctor @Deprecated protected Signer();
+    ctor @Deprecated public Signer(String);
+    ctor @Deprecated public Signer(String, java.security.IdentityScope) throws java.security.KeyManagementException;
+    method @Deprecated public java.security.PrivateKey getPrivateKey();
+    method @Deprecated public final void setKeyPair(java.security.KeyPair) throws java.security.InvalidParameterException, java.security.KeyException;
+  }
+
+  public final class Timestamp implements java.io.Serializable {
+    ctor public Timestamp(java.util.Date, java.security.cert.CertPath);
+    method public java.security.cert.CertPath getSignerCertPath();
+    method public java.util.Date getTimestamp();
+  }
+
+  public class UnrecoverableEntryException extends java.security.GeneralSecurityException {
+    ctor public UnrecoverableEntryException();
+    ctor public UnrecoverableEntryException(String);
+  }
+
+  public class UnrecoverableKeyException extends java.security.UnrecoverableEntryException {
+    ctor public UnrecoverableKeyException();
+    ctor public UnrecoverableKeyException(String);
+  }
+
+  public final class UnresolvedPermission extends java.security.Permission implements java.io.Serializable {
+    ctor public UnresolvedPermission(String, String, String, java.security.cert.Certificate[]);
+    method public String getActions();
+    method public String getUnresolvedActions();
+    method public java.security.cert.Certificate[] getUnresolvedCerts();
+    method public String getUnresolvedName();
+    method public String getUnresolvedType();
+    method public boolean implies(java.security.Permission);
+  }
+
+}
+
+package java.security.acl {
+
+  public interface Acl extends java.security.acl.Owner {
+    method public boolean addEntry(java.security.Principal, java.security.acl.AclEntry) throws java.security.acl.NotOwnerException;
+    method public boolean checkPermission(java.security.Principal, java.security.acl.Permission);
+    method public java.util.Enumeration<java.security.acl.AclEntry> entries();
+    method public String getName();
+    method public java.util.Enumeration<java.security.acl.Permission> getPermissions(java.security.Principal);
+    method public boolean removeEntry(java.security.Principal, java.security.acl.AclEntry) throws java.security.acl.NotOwnerException;
+    method public void setName(java.security.Principal, String) throws java.security.acl.NotOwnerException;
+    method public String toString();
+  }
+
+  public interface AclEntry extends java.lang.Cloneable {
+    method public boolean addPermission(java.security.acl.Permission);
+    method public boolean checkPermission(java.security.acl.Permission);
+    method public Object clone();
+    method public java.security.Principal getPrincipal();
+    method public boolean isNegative();
+    method public java.util.Enumeration<java.security.acl.Permission> permissions();
+    method public boolean removePermission(java.security.acl.Permission);
+    method public void setNegativePermissions();
+    method public boolean setPrincipal(java.security.Principal);
+    method public String toString();
+  }
+
+  public class AclNotFoundException extends java.lang.Exception {
+    ctor public AclNotFoundException();
+  }
+
+  public interface Group extends java.security.Principal {
+    method public boolean addMember(java.security.Principal);
+    method public boolean isMember(java.security.Principal);
+    method public java.util.Enumeration<? extends java.security.Principal> members();
+    method public boolean removeMember(java.security.Principal);
+  }
+
+  public class LastOwnerException extends java.lang.Exception {
+    ctor public LastOwnerException();
+  }
+
+  public class NotOwnerException extends java.lang.Exception {
+    ctor public NotOwnerException();
+  }
+
+  public interface Owner {
+    method public boolean addOwner(java.security.Principal, java.security.Principal) throws java.security.acl.NotOwnerException;
+    method public boolean deleteOwner(java.security.Principal, java.security.Principal) throws java.security.acl.LastOwnerException, java.security.acl.NotOwnerException;
+    method public boolean isOwner(java.security.Principal);
+  }
+
+  public interface Permission {
+  }
+
+}
+
+package java.security.cert {
+
+  public abstract class CRL {
+    ctor protected CRL(String);
+    method public final String getType();
+    method public abstract boolean isRevoked(java.security.cert.Certificate);
+    method public abstract String toString();
+  }
+
+  public class CRLException extends java.security.GeneralSecurityException {
+    ctor public CRLException();
+    ctor public CRLException(String);
+    ctor public CRLException(String, Throwable);
+    ctor public CRLException(Throwable);
+  }
+
+  public enum CRLReason {
+    enum_constant public static final java.security.cert.CRLReason AA_COMPROMISE;
+    enum_constant public static final java.security.cert.CRLReason AFFILIATION_CHANGED;
+    enum_constant public static final java.security.cert.CRLReason CA_COMPROMISE;
+    enum_constant public static final java.security.cert.CRLReason CERTIFICATE_HOLD;
+    enum_constant public static final java.security.cert.CRLReason CESSATION_OF_OPERATION;
+    enum_constant public static final java.security.cert.CRLReason KEY_COMPROMISE;
+    enum_constant public static final java.security.cert.CRLReason PRIVILEGE_WITHDRAWN;
+    enum_constant public static final java.security.cert.CRLReason REMOVE_FROM_CRL;
+    enum_constant public static final java.security.cert.CRLReason SUPERSEDED;
+    enum_constant public static final java.security.cert.CRLReason UNSPECIFIED;
+    enum_constant public static final java.security.cert.CRLReason UNUSED;
+  }
+
+  public interface CRLSelector extends java.lang.Cloneable {
+    method public Object clone();
+    method public boolean match(java.security.cert.CRL);
+  }
+
+  public abstract class CertPath implements java.io.Serializable {
+    ctor protected CertPath(String);
+    method public abstract java.util.List<? extends java.security.cert.Certificate> getCertificates();
+    method public abstract byte[] getEncoded() throws java.security.cert.CertificateEncodingException;
+    method public abstract byte[] getEncoded(String) throws java.security.cert.CertificateEncodingException;
+    method public abstract java.util.Iterator<java.lang.String> getEncodings();
+    method public String getType();
+    method protected Object writeReplace() throws java.io.ObjectStreamException;
+  }
+
+  protected static class CertPath.CertPathRep implements java.io.Serializable {
+    ctor protected CertPath.CertPathRep(String, byte[]);
+    method protected Object readResolve() throws java.io.ObjectStreamException;
+  }
+
+  public class CertPathBuilder {
+    ctor protected CertPathBuilder(java.security.cert.CertPathBuilderSpi, java.security.Provider, String);
+    method public final java.security.cert.CertPathBuilderResult build(java.security.cert.CertPathParameters) throws java.security.cert.CertPathBuilderException, java.security.InvalidAlgorithmParameterException;
+    method public final String getAlgorithm();
+    method public static final String getDefaultType();
+    method public static java.security.cert.CertPathBuilder getInstance(String) throws java.security.NoSuchAlgorithmException;
+    method public static java.security.cert.CertPathBuilder getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+    method public static java.security.cert.CertPathBuilder getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+    method public final java.security.Provider getProvider();
+    method public final java.security.cert.CertPathChecker getRevocationChecker();
+  }
+
+  public class CertPathBuilderException extends java.security.GeneralSecurityException {
+    ctor public CertPathBuilderException();
+    ctor public CertPathBuilderException(String);
+    ctor public CertPathBuilderException(Throwable);
+    ctor public CertPathBuilderException(String, Throwable);
+  }
+
+  public interface CertPathBuilderResult extends java.lang.Cloneable {
+    method public Object clone();
+    method public java.security.cert.CertPath getCertPath();
+  }
+
+  public abstract class CertPathBuilderSpi {
+    ctor public CertPathBuilderSpi();
+    method public abstract java.security.cert.CertPathBuilderResult engineBuild(java.security.cert.CertPathParameters) throws java.security.cert.CertPathBuilderException, java.security.InvalidAlgorithmParameterException;
+    method public java.security.cert.CertPathChecker engineGetRevocationChecker();
+  }
+
+  public interface CertPathChecker {
+    method public void check(java.security.cert.Certificate) throws java.security.cert.CertPathValidatorException;
+    method public void init(boolean) throws java.security.cert.CertPathValidatorException;
+    method public boolean isForwardCheckingSupported();
+  }
+
+  public interface CertPathParameters extends java.lang.Cloneable {
+    method public Object clone();
+  }
+
+  public class CertPathValidator {
+    ctor protected CertPathValidator(java.security.cert.CertPathValidatorSpi, java.security.Provider, String);
+    method public final String getAlgorithm();
+    method public static final String getDefaultType();
+    method public static java.security.cert.CertPathValidator getInstance(String) throws java.security.NoSuchAlgorithmException;
+    method public static java.security.cert.CertPathValidator getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+    method public static java.security.cert.CertPathValidator getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+    method public final java.security.Provider getProvider();
+    method public final java.security.cert.CertPathChecker getRevocationChecker();
+    method public final java.security.cert.CertPathValidatorResult validate(java.security.cert.CertPath, java.security.cert.CertPathParameters) throws java.security.cert.CertPathValidatorException, java.security.InvalidAlgorithmParameterException;
+  }
+
+  public class CertPathValidatorException extends java.security.GeneralSecurityException {
+    ctor public CertPathValidatorException();
+    ctor public CertPathValidatorException(String);
+    ctor public CertPathValidatorException(Throwable);
+    ctor public CertPathValidatorException(String, Throwable);
+    ctor public CertPathValidatorException(String, Throwable, java.security.cert.CertPath, int);
+    ctor public CertPathValidatorException(String, Throwable, java.security.cert.CertPath, int, java.security.cert.CertPathValidatorException.Reason);
+    method public java.security.cert.CertPath getCertPath();
+    method public int getIndex();
+    method public java.security.cert.CertPathValidatorException.Reason getReason();
+  }
+
+  public enum CertPathValidatorException.BasicReason implements java.security.cert.CertPathValidatorException.Reason {
+    enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason ALGORITHM_CONSTRAINED;
+    enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason EXPIRED;
+    enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason INVALID_SIGNATURE;
+    enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason NOT_YET_VALID;
+    enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason REVOKED;
+    enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason UNDETERMINED_REVOCATION_STATUS;
+    enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason UNSPECIFIED;
+  }
+
+  public static interface CertPathValidatorException.Reason extends java.io.Serializable {
+  }
+
+  public interface CertPathValidatorResult extends java.lang.Cloneable {
+    method public Object clone();
+  }
+
+  public abstract class CertPathValidatorSpi {
+    ctor public CertPathValidatorSpi();
+    method public java.security.cert.CertPathChecker engineGetRevocationChecker();
+    method public abstract java.security.cert.CertPathValidatorResult engineValidate(java.security.cert.CertPath, java.security.cert.CertPathParameters) throws java.security.cert.CertPathValidatorException, java.security.InvalidAlgorithmParameterException;
+  }
+
+  public interface CertSelector extends java.lang.Cloneable {
+    method public Object clone();
+    method public boolean match(java.security.cert.Certificate);
+  }
+
+  public class CertStore {
+    ctor protected CertStore(java.security.cert.CertStoreSpi, java.security.Provider, String, java.security.cert.CertStoreParameters);
+    method public final java.util.Collection<? extends java.security.cert.CRL> getCRLs(java.security.cert.CRLSelector) throws java.security.cert.CertStoreException;
+    method public final java.security.cert.CertStoreParameters getCertStoreParameters();
+    method public final java.util.Collection<? extends java.security.cert.Certificate> getCertificates(java.security.cert.CertSelector) throws java.security.cert.CertStoreException;
+    method public static final String getDefaultType();
+    method public static java.security.cert.CertStore getInstance(String, java.security.cert.CertStoreParameters) throws java.security.InvalidAlgorithmParameterException, java.security.NoSuchAlgorithmException;
+    method public static java.security.cert.CertStore getInstance(String, java.security.cert.CertStoreParameters, String) throws java.security.InvalidAlgorithmParameterException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+    method public static java.security.cert.CertStore getInstance(String, java.security.cert.CertStoreParameters, java.security.Provider) throws java.security.InvalidAlgorithmParameterException, java.security.NoSuchAlgorithmException;
+    method public final java.security.Provider getProvider();
+    method public final String getType();
+  }
+
+  public class CertStoreException extends java.security.GeneralSecurityException {
+    ctor public CertStoreException();
+    ctor public CertStoreException(String);
+    ctor public CertStoreException(Throwable);
+    ctor public CertStoreException(String, Throwable);
+  }
+
+  public interface CertStoreParameters extends java.lang.Cloneable {
+    method public Object clone();
+  }
+
+  public abstract class CertStoreSpi {
+    ctor public CertStoreSpi(java.security.cert.CertStoreParameters) throws java.security.InvalidAlgorithmParameterException;
+    method public abstract java.util.Collection<? extends java.security.cert.CRL> engineGetCRLs(java.security.cert.CRLSelector) throws java.security.cert.CertStoreException;
+    method public abstract java.util.Collection<? extends java.security.cert.Certificate> engineGetCertificates(java.security.cert.CertSelector) throws java.security.cert.CertStoreException;
+  }
+
+  public abstract class Certificate implements java.io.Serializable {
+    ctor protected Certificate(String);
+    method public abstract byte[] getEncoded() throws java.security.cert.CertificateEncodingException;
+    method public abstract java.security.PublicKey getPublicKey();
+    method public final String getType();
+    method public abstract String toString();
+    method public abstract void verify(java.security.PublicKey) throws java.security.cert.CertificateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
+    method public abstract void verify(java.security.PublicKey, String) throws java.security.cert.CertificateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
+    method public void verify(java.security.PublicKey, java.security.Provider) throws java.security.cert.CertificateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.SignatureException;
+    method protected Object writeReplace() throws java.io.ObjectStreamException;
+  }
+
+  protected static class Certificate.CertificateRep implements java.io.Serializable {
+    ctor protected Certificate.CertificateRep(String, byte[]);
+    method protected Object readResolve() throws java.io.ObjectStreamException;
+  }
+
+  public class CertificateEncodingException extends java.security.cert.CertificateException {
+    ctor public CertificateEncodingException();
+    ctor public CertificateEncodingException(String);
+    ctor public CertificateEncodingException(String, Throwable);
+    ctor public CertificateEncodingException(Throwable);
+  }
+
+  public class CertificateException extends java.security.GeneralSecurityException {
+    ctor public CertificateException();
+    ctor public CertificateException(String);
+    ctor public CertificateException(String, Throwable);
+    ctor public CertificateException(Throwable);
+  }
+
+  public class CertificateExpiredException extends java.security.cert.CertificateException {
+    ctor public CertificateExpiredException();
+    ctor public CertificateExpiredException(String);
+  }
+
+  public class CertificateFactory {
+    ctor protected CertificateFactory(java.security.cert.CertificateFactorySpi, java.security.Provider, String);
+    method public final java.security.cert.CRL generateCRL(java.io.InputStream) throws java.security.cert.CRLException;
+    method public final java.util.Collection<? extends java.security.cert.CRL> generateCRLs(java.io.InputStream) throws java.security.cert.CRLException;
+    method public final java.security.cert.CertPath generateCertPath(java.io.InputStream) throws java.security.cert.CertificateException;
+    method public final java.security.cert.CertPath generateCertPath(java.io.InputStream, String) throws java.security.cert.CertificateException;
+    method public final java.security.cert.CertPath generateCertPath(java.util.List<? extends java.security.cert.Certificate>) throws java.security.cert.CertificateException;
+    method public final java.security.cert.Certificate generateCertificate(java.io.InputStream) throws java.security.cert.CertificateException;
+    method public final java.util.Collection<? extends java.security.cert.Certificate> generateCertificates(java.io.InputStream) throws java.security.cert.CertificateException;
+    method public final java.util.Iterator<java.lang.String> getCertPathEncodings();
+    method public static final java.security.cert.CertificateFactory getInstance(String) throws java.security.cert.CertificateException;
+    method public static final java.security.cert.CertificateFactory getInstance(String, String) throws java.security.cert.CertificateException, java.security.NoSuchProviderException;
+    method public static final java.security.cert.CertificateFactory getInstance(String, java.security.Provider) throws java.security.cert.CertificateException;
+    method public final java.security.Provider getProvider();
+    method public final String getType();
+  }
+
+  public abstract class CertificateFactorySpi {
+    ctor public CertificateFactorySpi();
+    method public abstract java.security.cert.CRL engineGenerateCRL(java.io.InputStream) throws java.security.cert.CRLException;
+    method public abstract java.util.Collection<? extends java.security.cert.CRL> engineGenerateCRLs(java.io.InputStream) throws java.security.cert.CRLException;
+    method public java.security.cert.CertPath engineGenerateCertPath(java.io.InputStream) throws java.security.cert.CertificateException;
+    method public java.security.cert.CertPath engineGenerateCertPath(java.io.InputStream, String) throws java.security.cert.CertificateException;
+    method public java.security.cert.CertPath engineGenerateCertPath(java.util.List<? extends java.security.cert.Certificate>) throws java.security.cert.CertificateException;
+    method public abstract java.security.cert.Certificate engineGenerateCertificate(java.io.InputStream) throws java.security.cert.CertificateException;
+    method public abstract java.util.Collection<? extends java.security.cert.Certificate> engineGenerateCertificates(java.io.InputStream) throws java.security.cert.CertificateException;
+    method public java.util.Iterator<java.lang.String> engineGetCertPathEncodings();
+  }
+
+  public class CertificateNotYetValidException extends java.security.cert.CertificateException {
+    ctor public CertificateNotYetValidException();
+    ctor public CertificateNotYetValidException(String);
+  }
+
+  public class CertificateParsingException extends java.security.cert.CertificateException {
+    ctor public CertificateParsingException();
+    ctor public CertificateParsingException(String);
+    ctor public CertificateParsingException(String, Throwable);
+    ctor public CertificateParsingException(Throwable);
+  }
+
+  public class CertificateRevokedException extends java.security.cert.CertificateException {
+    ctor public CertificateRevokedException(java.util.Date, java.security.cert.CRLReason, javax.security.auth.x500.X500Principal, java.util.Map<java.lang.String,java.security.cert.Extension>);
+    method public javax.security.auth.x500.X500Principal getAuthorityName();
+    method public java.util.Map<java.lang.String,java.security.cert.Extension> getExtensions();
+    method public java.util.Date getInvalidityDate();
+    method public java.util.Date getRevocationDate();
+    method public java.security.cert.CRLReason getRevocationReason();
+  }
+
+  public class CollectionCertStoreParameters implements java.security.cert.CertStoreParameters {
+    ctor public CollectionCertStoreParameters(java.util.Collection<?>);
+    ctor public CollectionCertStoreParameters();
+    method public Object clone();
+    method public java.util.Collection<?> getCollection();
+  }
+
+  public interface Extension {
+    method public void encode(java.io.OutputStream) throws java.io.IOException;
+    method public String getId();
+    method public byte[] getValue();
+    method public boolean isCritical();
+  }
+
+  public class LDAPCertStoreParameters implements java.security.cert.CertStoreParameters {
+    ctor public LDAPCertStoreParameters(String, int);
+    ctor public LDAPCertStoreParameters(String);
+    ctor public LDAPCertStoreParameters();
+    method public Object clone();
+    method public int getPort();
+    method public String getServerName();
+  }
+
+  public class PKIXBuilderParameters extends java.security.cert.PKIXParameters {
+    ctor public PKIXBuilderParameters(java.util.Set<java.security.cert.TrustAnchor>, java.security.cert.CertSelector) throws java.security.InvalidAlgorithmParameterException;
+    ctor public PKIXBuilderParameters(java.security.KeyStore, java.security.cert.CertSelector) throws java.security.InvalidAlgorithmParameterException, java.security.KeyStoreException;
+    method public int getMaxPathLength();
+    method public void setMaxPathLength(int);
+  }
+
+  public class PKIXCertPathBuilderResult extends java.security.cert.PKIXCertPathValidatorResult implements java.security.cert.CertPathBuilderResult {
+    ctor public PKIXCertPathBuilderResult(java.security.cert.CertPath, java.security.cert.TrustAnchor, java.security.cert.PolicyNode, java.security.PublicKey);
+    method public java.security.cert.CertPath getCertPath();
+  }
+
+  public abstract class PKIXCertPathChecker implements java.security.cert.CertPathChecker java.lang.Cloneable {
+    ctor protected PKIXCertPathChecker();
+    method public abstract void check(java.security.cert.Certificate, java.util.Collection<java.lang.String>) throws java.security.cert.CertPathValidatorException;
+    method public void check(java.security.cert.Certificate) throws java.security.cert.CertPathValidatorException;
+    method public Object clone();
+    method public abstract java.util.Set<java.lang.String> getSupportedExtensions();
+  }
+
+  public class PKIXCertPathValidatorResult implements java.security.cert.CertPathValidatorResult {
+    ctor public PKIXCertPathValidatorResult(java.security.cert.TrustAnchor, java.security.cert.PolicyNode, java.security.PublicKey);
+    method public Object clone();
+    method public java.security.cert.PolicyNode getPolicyTree();
+    method public java.security.PublicKey getPublicKey();
+    method public java.security.cert.TrustAnchor getTrustAnchor();
+  }
+
+  public class PKIXParameters implements java.security.cert.CertPathParameters {
+    ctor public PKIXParameters(java.util.Set<java.security.cert.TrustAnchor>) throws java.security.InvalidAlgorithmParameterException;
+    ctor public PKIXParameters(java.security.KeyStore) throws java.security.InvalidAlgorithmParameterException, java.security.KeyStoreException;
+    method public void addCertPathChecker(java.security.cert.PKIXCertPathChecker);
+    method public void addCertStore(java.security.cert.CertStore);
+    method public Object clone();
+    method public java.util.List<java.security.cert.PKIXCertPathChecker> getCertPathCheckers();
+    method public java.util.List<java.security.cert.CertStore> getCertStores();
+    method public java.util.Date getDate();
+    method public java.util.Set<java.lang.String> getInitialPolicies();
+    method public boolean getPolicyQualifiersRejected();
+    method public String getSigProvider();
+    method public java.security.cert.CertSelector getTargetCertConstraints();
+    method public java.util.Set<java.security.cert.TrustAnchor> getTrustAnchors();
+    method public boolean isAnyPolicyInhibited();
+    method public boolean isExplicitPolicyRequired();
+    method public boolean isPolicyMappingInhibited();
+    method public boolean isRevocationEnabled();
+    method public void setAnyPolicyInhibited(boolean);
+    method public void setCertPathCheckers(java.util.List<java.security.cert.PKIXCertPathChecker>);
+    method public void setCertStores(java.util.List<java.security.cert.CertStore>);
+    method public void setDate(java.util.Date);
+    method public void setExplicitPolicyRequired(boolean);
+    method public void setInitialPolicies(java.util.Set<java.lang.String>);
+    method public void setPolicyMappingInhibited(boolean);
+    method public void setPolicyQualifiersRejected(boolean);
+    method public void setRevocationEnabled(boolean);
+    method public void setSigProvider(String);
+    method public void setTargetCertConstraints(java.security.cert.CertSelector);
+    method public void setTrustAnchors(java.util.Set<java.security.cert.TrustAnchor>) throws java.security.InvalidAlgorithmParameterException;
+  }
+
+  public enum PKIXReason implements java.security.cert.CertPathValidatorException.Reason {
+    enum_constant public static final java.security.cert.PKIXReason INVALID_KEY_USAGE;
+    enum_constant public static final java.security.cert.PKIXReason INVALID_NAME;
+    enum_constant public static final java.security.cert.PKIXReason INVALID_POLICY;
+    enum_constant public static final java.security.cert.PKIXReason NAME_CHAINING;
+    enum_constant public static final java.security.cert.PKIXReason NOT_CA_CERT;
+    enum_constant public static final java.security.cert.PKIXReason NO_TRUST_ANCHOR;
+    enum_constant public static final java.security.cert.PKIXReason PATH_TOO_LONG;
+    enum_constant public static final java.security.cert.PKIXReason UNRECOGNIZED_CRIT_EXT;
+  }
+
+  public abstract class PKIXRevocationChecker extends java.security.cert.PKIXCertPathChecker {
+    ctor protected PKIXRevocationChecker();
+    method public java.security.cert.PKIXRevocationChecker clone();
+    method public java.util.List<java.security.cert.Extension> getOcspExtensions();
+    method public java.net.URI getOcspResponder();
+    method public java.security.cert.X509Certificate getOcspResponderCert();
+    method public java.util.Map<java.security.cert.X509Certificate,byte[]> getOcspResponses();
+    method public java.util.Set<java.security.cert.PKIXRevocationChecker.Option> getOptions();
+    method public abstract java.util.List<java.security.cert.CertPathValidatorException> getSoftFailExceptions();
+    method public void setOcspExtensions(java.util.List<java.security.cert.Extension>);
+    method public void setOcspResponder(java.net.URI);
+    method public void setOcspResponderCert(java.security.cert.X509Certificate);
+    method public void setOcspResponses(java.util.Map<java.security.cert.X509Certificate,byte[]>);
+    method public void setOptions(java.util.Set<java.security.cert.PKIXRevocationChecker.Option>);
+  }
+
+  public enum PKIXRevocationChecker.Option {
+    enum_constant public static final java.security.cert.PKIXRevocationChecker.Option NO_FALLBACK;
+    enum_constant public static final java.security.cert.PKIXRevocationChecker.Option ONLY_END_ENTITY;
+    enum_constant public static final java.security.cert.PKIXRevocationChecker.Option PREFER_CRLS;
+    enum_constant public static final java.security.cert.PKIXRevocationChecker.Option SOFT_FAIL;
+  }
+
+  public interface PolicyNode {
+    method public java.util.Iterator<? extends java.security.cert.PolicyNode> getChildren();
+    method public int getDepth();
+    method public java.util.Set<java.lang.String> getExpectedPolicies();
+    method public java.security.cert.PolicyNode getParent();
+    method public java.util.Set<? extends java.security.cert.PolicyQualifierInfo> getPolicyQualifiers();
+    method public String getValidPolicy();
+    method public boolean isCritical();
+  }
+
+  public class PolicyQualifierInfo {
+    ctor public PolicyQualifierInfo(byte[]) throws java.io.IOException;
+    method public final byte[] getEncoded();
+    method public final byte[] getPolicyQualifier();
+    method public final String getPolicyQualifierId();
+  }
+
+  public class TrustAnchor {
+    ctor public TrustAnchor(java.security.cert.X509Certificate, byte[]);
+    ctor public TrustAnchor(javax.security.auth.x500.X500Principal, java.security.PublicKey, byte[]);
+    ctor public TrustAnchor(String, java.security.PublicKey, byte[]);
+    method public final javax.security.auth.x500.X500Principal getCA();
+    method public final String getCAName();
+    method public final java.security.PublicKey getCAPublicKey();
+    method public final byte[] getNameConstraints();
+    method public final java.security.cert.X509Certificate getTrustedCert();
+  }
+
+  public abstract class X509CRL extends java.security.cert.CRL implements java.security.cert.X509Extension {
+    ctor protected X509CRL();
+    method public abstract byte[] getEncoded() throws java.security.cert.CRLException;
+    method public abstract java.security.Principal getIssuerDN();
+    method public javax.security.auth.x500.X500Principal getIssuerX500Principal();
+    method public abstract java.util.Date getNextUpdate();
+    method public abstract java.security.cert.X509CRLEntry getRevokedCertificate(java.math.BigInteger);
+    method public java.security.cert.X509CRLEntry getRevokedCertificate(java.security.cert.X509Certificate);
+    method public abstract java.util.Set<? extends java.security.cert.X509CRLEntry> getRevokedCertificates();
+    method public abstract String getSigAlgName();
+    method public abstract String getSigAlgOID();
+    method public abstract byte[] getSigAlgParams();
+    method public abstract byte[] getSignature();
+    method public abstract byte[] getTBSCertList() throws java.security.cert.CRLException;
+    method public abstract java.util.Date getThisUpdate();
+    method public abstract int getVersion();
+    method public abstract void verify(java.security.PublicKey) throws java.security.cert.CRLException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
+    method public abstract void verify(java.security.PublicKey, String) throws java.security.cert.CRLException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
+    method public void verify(java.security.PublicKey, java.security.Provider) throws java.security.cert.CRLException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.SignatureException;
+  }
+
+  public abstract class X509CRLEntry implements java.security.cert.X509Extension {
+    ctor public X509CRLEntry();
+    method public javax.security.auth.x500.X500Principal getCertificateIssuer();
+    method public abstract byte[] getEncoded() throws java.security.cert.CRLException;
+    method public abstract java.util.Date getRevocationDate();
+    method public java.security.cert.CRLReason getRevocationReason();
+    method public abstract java.math.BigInteger getSerialNumber();
+    method public abstract boolean hasExtensions();
+    method public abstract String toString();
+  }
+
+  public class X509CRLSelector implements java.security.cert.CRLSelector {
+    ctor public X509CRLSelector();
+    method public void addIssuer(javax.security.auth.x500.X500Principal);
+    method public void addIssuerName(String) throws java.io.IOException;
+    method public void addIssuerName(byte[]) throws java.io.IOException;
+    method public Object clone();
+    method public java.security.cert.X509Certificate getCertificateChecking();
+    method public java.util.Date getDateAndTime();
+    method public java.util.Collection<java.lang.Object> getIssuerNames();
+    method public java.util.Collection<javax.security.auth.x500.X500Principal> getIssuers();
+    method public java.math.BigInteger getMaxCRL();
+    method public java.math.BigInteger getMinCRL();
+    method public boolean match(java.security.cert.CRL);
+    method public void setCertificateChecking(java.security.cert.X509Certificate);
+    method public void setDateAndTime(java.util.Date);
+    method public void setIssuerNames(java.util.Collection<?>) throws java.io.IOException;
+    method public void setIssuers(java.util.Collection<javax.security.auth.x500.X500Principal>);
+    method public void setMaxCRLNumber(java.math.BigInteger);
+    method public void setMinCRLNumber(java.math.BigInteger);
+  }
+
+  public class X509CertSelector implements java.security.cert.CertSelector {
+    ctor public X509CertSelector();
+    method public void addPathToName(int, String) throws java.io.IOException;
+    method public void addPathToName(int, byte[]) throws java.io.IOException;
+    method public void addSubjectAlternativeName(int, String) throws java.io.IOException;
+    method public void addSubjectAlternativeName(int, byte[]) throws java.io.IOException;
+    method public Object clone();
+    method public byte[] getAuthorityKeyIdentifier();
+    method public int getBasicConstraints();
+    method public java.security.cert.X509Certificate getCertificate();
+    method public java.util.Date getCertificateValid();
+    method public java.util.Set<java.lang.String> getExtendedKeyUsage();
+    method public javax.security.auth.x500.X500Principal getIssuer();
+    method public byte[] getIssuerAsBytes() throws java.io.IOException;
+    method public String getIssuerAsString();
+    method public boolean[] getKeyUsage();
+    method public boolean getMatchAllSubjectAltNames();
+    method public byte[] getNameConstraints();
+    method public java.util.Collection<java.util.List<?>> getPathToNames();
+    method public java.util.Set<java.lang.String> getPolicy();
+    method public java.util.Date getPrivateKeyValid();
+    method public java.math.BigInteger getSerialNumber();
+    method public javax.security.auth.x500.X500Principal getSubject();
+    method public java.util.Collection<java.util.List<?>> getSubjectAlternativeNames();
+    method public byte[] getSubjectAsBytes() throws java.io.IOException;
+    method public String getSubjectAsString();
+    method public byte[] getSubjectKeyIdentifier();
+    method public java.security.PublicKey getSubjectPublicKey();
+    method public String getSubjectPublicKeyAlgID();
+    method public boolean match(java.security.cert.Certificate);
+    method public void setAuthorityKeyIdentifier(byte[]);
+    method public void setBasicConstraints(int);
+    method public void setCertificate(java.security.cert.X509Certificate);
+    method public void setCertificateValid(java.util.Date);
+    method public void setExtendedKeyUsage(java.util.Set<java.lang.String>) throws java.io.IOException;
+    method public void setIssuer(javax.security.auth.x500.X500Principal);
+    method public void setIssuer(String) throws java.io.IOException;
+    method public void setIssuer(byte[]) throws java.io.IOException;
+    method public void setKeyUsage(boolean[]);
+    method public void setMatchAllSubjectAltNames(boolean);
+    method public void setNameConstraints(byte[]) throws java.io.IOException;
+    method public void setPathToNames(java.util.Collection<java.util.List<?>>) throws java.io.IOException;
+    method public void setPolicy(java.util.Set<java.lang.String>) throws java.io.IOException;
+    method public void setPrivateKeyValid(java.util.Date);
+    method public void setSerialNumber(java.math.BigInteger);
+    method public void setSubject(javax.security.auth.x500.X500Principal);
+    method public void setSubject(String) throws java.io.IOException;
+    method public void setSubject(byte[]) throws java.io.IOException;
+    method public void setSubjectAlternativeNames(java.util.Collection<java.util.List<?>>) throws java.io.IOException;
+    method public void setSubjectKeyIdentifier(byte[]);
+    method public void setSubjectPublicKey(java.security.PublicKey);
+    method public void setSubjectPublicKey(byte[]) throws java.io.IOException;
+    method public void setSubjectPublicKeyAlgID(String) throws java.io.IOException;
+  }
+
+  public abstract class X509Certificate extends java.security.cert.Certificate implements java.security.cert.X509Extension {
+    ctor protected X509Certificate();
+    method public abstract void checkValidity() throws java.security.cert.CertificateExpiredException, java.security.cert.CertificateNotYetValidException;
+    method public abstract void checkValidity(java.util.Date) throws java.security.cert.CertificateExpiredException, java.security.cert.CertificateNotYetValidException;
+    method public abstract int getBasicConstraints();
+    method public java.util.List<java.lang.String> getExtendedKeyUsage() throws java.security.cert.CertificateParsingException;
+    method public java.util.Collection<java.util.List<?>> getIssuerAlternativeNames() throws java.security.cert.CertificateParsingException;
+    method public abstract java.security.Principal getIssuerDN();
+    method public abstract boolean[] getIssuerUniqueID();
+    method public javax.security.auth.x500.X500Principal getIssuerX500Principal();
+    method public abstract boolean[] getKeyUsage();
+    method public abstract java.util.Date getNotAfter();
+    method public abstract java.util.Date getNotBefore();
+    method public abstract java.math.BigInteger getSerialNumber();
+    method public abstract String getSigAlgName();
+    method public abstract String getSigAlgOID();
+    method public abstract byte[] getSigAlgParams();
+    method public abstract byte[] getSignature();
+    method public java.util.Collection<java.util.List<?>> getSubjectAlternativeNames() throws java.security.cert.CertificateParsingException;
+    method public abstract java.security.Principal getSubjectDN();
+    method public abstract boolean[] getSubjectUniqueID();
+    method public javax.security.auth.x500.X500Principal getSubjectX500Principal();
+    method public abstract byte[] getTBSCertificate() throws java.security.cert.CertificateEncodingException;
+    method public abstract int getVersion();
+  }
+
+  public interface X509Extension {
+    method public java.util.Set<java.lang.String> getCriticalExtensionOIDs();
+    method public byte[] getExtensionValue(String);
+    method public java.util.Set<java.lang.String> getNonCriticalExtensionOIDs();
+    method public boolean hasUnsupportedCriticalExtension();
+  }
+
+}
+
+package java.security.interfaces {
+
+  public interface DSAKey {
+    method public java.security.interfaces.DSAParams getParams();
+  }
+
+  public interface DSAKeyPairGenerator {
+    method public void initialize(java.security.interfaces.DSAParams, java.security.SecureRandom) throws java.security.InvalidParameterException;
+    method public void initialize(int, boolean, java.security.SecureRandom) throws java.security.InvalidParameterException;
+  }
+
+  public interface DSAParams {
+    method public java.math.BigInteger getG();
+    method public java.math.BigInteger getP();
+    method public java.math.BigInteger getQ();
+  }
+
+  public interface DSAPrivateKey extends java.security.interfaces.DSAKey java.security.PrivateKey {
+    method public java.math.BigInteger getX();
+    field public static final long serialVersionUID = 7776497482533790279L; // 0x6bebab423b256247L
+  }
+
+  public interface DSAPublicKey extends java.security.interfaces.DSAKey java.security.PublicKey {
+    method public java.math.BigInteger getY();
+    field public static final long serialVersionUID = 1234526332779022332L; // 0x1121eb28ab28c7fcL
+  }
+
+  public interface ECKey {
+    method public java.security.spec.ECParameterSpec getParams();
+  }
+
+  public interface ECPrivateKey extends java.security.PrivateKey java.security.interfaces.ECKey {
+    method public java.math.BigInteger getS();
+    field public static final long serialVersionUID = -7896394956925609184L; // 0x926a5e9fa2435b20L
+  }
+
+  public interface ECPublicKey extends java.security.PublicKey java.security.interfaces.ECKey {
+    method public java.security.spec.ECPoint getW();
+    field public static final long serialVersionUID = -3314988629879632826L; // 0xd1fecb679990cc46L
+  }
+
+  public interface RSAKey {
+    method public java.math.BigInteger getModulus();
+  }
+
+  public interface RSAMultiPrimePrivateCrtKey extends java.security.interfaces.RSAPrivateKey {
+    method public java.math.BigInteger getCrtCoefficient();
+    method public java.security.spec.RSAOtherPrimeInfo[] getOtherPrimeInfo();
+    method public java.math.BigInteger getPrimeExponentP();
+    method public java.math.BigInteger getPrimeExponentQ();
+    method public java.math.BigInteger getPrimeP();
+    method public java.math.BigInteger getPrimeQ();
+    method public java.math.BigInteger getPublicExponent();
+    field public static final long serialVersionUID = 618058533534628008L; // 0x893c8f62dbaf8a8L
+  }
+
+  public interface RSAPrivateCrtKey extends java.security.interfaces.RSAPrivateKey {
+    method public java.math.BigInteger getCrtCoefficient();
+    method public java.math.BigInteger getPrimeExponentP();
+    method public java.math.BigInteger getPrimeExponentQ();
+    method public java.math.BigInteger getPrimeP();
+    method public java.math.BigInteger getPrimeQ();
+    method public java.math.BigInteger getPublicExponent();
+    field public static final long serialVersionUID = -5682214253527700368L; // 0xb124b83df8d1ec70L
+  }
+
+  public interface RSAPrivateKey extends java.security.PrivateKey java.security.interfaces.RSAKey {
+    method public java.math.BigInteger getPrivateExponent();
+    field public static final long serialVersionUID = 5187144804936595022L; // 0x47fc70b7a8c2364eL
+  }
+
+  public interface RSAPublicKey extends java.security.PublicKey java.security.interfaces.RSAKey {
+    method public java.math.BigInteger getPublicExponent();
+    field public static final long serialVersionUID = -8727434096241101194L; // 0x86e1ecedeceab676L
+  }
+
+}
+
+package java.security.spec {
+
+  public interface AlgorithmParameterSpec {
+  }
+
+  public class DSAParameterSpec implements java.security.spec.AlgorithmParameterSpec java.security.interfaces.DSAParams {
+    ctor public DSAParameterSpec(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
+    method public java.math.BigInteger getG();
+    method public java.math.BigInteger getP();
+    method public java.math.BigInteger getQ();
+  }
+
+  public class DSAPrivateKeySpec implements java.security.spec.KeySpec {
+    ctor public DSAPrivateKeySpec(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
+    method public java.math.BigInteger getG();
+    method public java.math.BigInteger getP();
+    method public java.math.BigInteger getQ();
+    method public java.math.BigInteger getX();
+  }
+
+  public class DSAPublicKeySpec implements java.security.spec.KeySpec {
+    ctor public DSAPublicKeySpec(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
+    method public java.math.BigInteger getG();
+    method public java.math.BigInteger getP();
+    method public java.math.BigInteger getQ();
+    method public java.math.BigInteger getY();
+  }
+
+  public interface ECField {
+    method public int getFieldSize();
+  }
+
+  public class ECFieldF2m implements java.security.spec.ECField {
+    ctor public ECFieldF2m(int);
+    ctor public ECFieldF2m(int, java.math.BigInteger);
+    ctor public ECFieldF2m(int, int[]);
+    method public int getFieldSize();
+    method public int getM();
+    method public int[] getMidTermsOfReductionPolynomial();
+    method public java.math.BigInteger getReductionPolynomial();
+  }
+
+  public class ECFieldFp implements java.security.spec.ECField {
+    ctor public ECFieldFp(java.math.BigInteger);
+    method public int getFieldSize();
+    method public java.math.BigInteger getP();
+  }
+
+  public class ECGenParameterSpec implements java.security.spec.AlgorithmParameterSpec {
+    ctor public ECGenParameterSpec(String);
+    method public String getName();
+  }
+
+  public class ECParameterSpec implements java.security.spec.AlgorithmParameterSpec {
+    ctor public ECParameterSpec(java.security.spec.EllipticCurve, java.security.spec.ECPoint, java.math.BigInteger, int);
+    method public int getCofactor();
+    method public java.security.spec.EllipticCurve getCurve();
+    method public java.security.spec.ECPoint getGenerator();
+    method public java.math.BigInteger getOrder();
+  }
+
+  public class ECPoint {
+    ctor public ECPoint(java.math.BigInteger, java.math.BigInteger);
+    method public java.math.BigInteger getAffineX();
+    method public java.math.BigInteger getAffineY();
+    field public static final java.security.spec.ECPoint POINT_INFINITY;
+  }
+
+  public class ECPrivateKeySpec implements java.security.spec.KeySpec {
+    ctor public ECPrivateKeySpec(java.math.BigInteger, java.security.spec.ECParameterSpec);
+    method public java.security.spec.ECParameterSpec getParams();
+    method public java.math.BigInteger getS();
+  }
+
+  public class ECPublicKeySpec implements java.security.spec.KeySpec {
+    ctor public ECPublicKeySpec(java.security.spec.ECPoint, java.security.spec.ECParameterSpec);
+    method public java.security.spec.ECParameterSpec getParams();
+    method public java.security.spec.ECPoint getW();
+  }
+
+  public class EllipticCurve {
+    ctor public EllipticCurve(java.security.spec.ECField, java.math.BigInteger, java.math.BigInteger);
+    ctor public EllipticCurve(java.security.spec.ECField, java.math.BigInteger, java.math.BigInteger, byte[]);
+    method public java.math.BigInteger getA();
+    method public java.math.BigInteger getB();
+    method public java.security.spec.ECField getField();
+    method public byte[] getSeed();
+  }
+
+  public abstract class EncodedKeySpec implements java.security.spec.KeySpec {
+    ctor public EncodedKeySpec(byte[]);
+    method public byte[] getEncoded();
+    method public abstract String getFormat();
+  }
+
+  public class InvalidKeySpecException extends java.security.GeneralSecurityException {
+    ctor public InvalidKeySpecException();
+    ctor public InvalidKeySpecException(String);
+    ctor public InvalidKeySpecException(String, Throwable);
+    ctor public InvalidKeySpecException(Throwable);
+  }
+
+  public class InvalidParameterSpecException extends java.security.GeneralSecurityException {
+    ctor public InvalidParameterSpecException();
+    ctor public InvalidParameterSpecException(String);
+  }
+
+  public interface KeySpec {
+  }
+
+  public class MGF1ParameterSpec implements java.security.spec.AlgorithmParameterSpec {
+    ctor public MGF1ParameterSpec(String);
+    method public String getDigestAlgorithm();
+    field public static final java.security.spec.MGF1ParameterSpec SHA1;
+    field public static final java.security.spec.MGF1ParameterSpec SHA224;
+    field public static final java.security.spec.MGF1ParameterSpec SHA256;
+    field public static final java.security.spec.MGF1ParameterSpec SHA384;
+    field public static final java.security.spec.MGF1ParameterSpec SHA512;
+  }
+
+  public class PKCS8EncodedKeySpec extends java.security.spec.EncodedKeySpec {
+    ctor public PKCS8EncodedKeySpec(byte[]);
+    method public final String getFormat();
+  }
+
+  public class PSSParameterSpec implements java.security.spec.AlgorithmParameterSpec {
+    ctor public PSSParameterSpec(String, String, java.security.spec.AlgorithmParameterSpec, int, int);
+    ctor public PSSParameterSpec(int);
+    method public String getDigestAlgorithm();
+    method public String getMGFAlgorithm();
+    method public java.security.spec.AlgorithmParameterSpec getMGFParameters();
+    method public int getSaltLength();
+    method public int getTrailerField();
+    field public static final java.security.spec.PSSParameterSpec DEFAULT;
+  }
+
+  public class RSAKeyGenParameterSpec implements java.security.spec.AlgorithmParameterSpec {
+    ctor public RSAKeyGenParameterSpec(int, java.math.BigInteger);
+    method public int getKeysize();
+    method public java.math.BigInteger getPublicExponent();
+    field public static final java.math.BigInteger F0;
+    field public static final java.math.BigInteger F4;
+  }
+
+  public class RSAMultiPrimePrivateCrtKeySpec extends java.security.spec.RSAPrivateKeySpec {
+    ctor public RSAMultiPrimePrivateCrtKeySpec(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.security.spec.RSAOtherPrimeInfo[]);
+    method public java.math.BigInteger getCrtCoefficient();
+    method public java.security.spec.RSAOtherPrimeInfo[] getOtherPrimeInfo();
+    method public java.math.BigInteger getPrimeExponentP();
+    method public java.math.BigInteger getPrimeExponentQ();
+    method public java.math.BigInteger getPrimeP();
+    method public java.math.BigInteger getPrimeQ();
+    method public java.math.BigInteger getPublicExponent();
+  }
+
+  public class RSAOtherPrimeInfo {
+    ctor public RSAOtherPrimeInfo(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
+    method public final java.math.BigInteger getCrtCoefficient();
+    method public final java.math.BigInteger getExponent();
+    method public final java.math.BigInteger getPrime();
+  }
+
+  public class RSAPrivateCrtKeySpec extends java.security.spec.RSAPrivateKeySpec {
+    ctor public RSAPrivateCrtKeySpec(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
+    method public java.math.BigInteger getCrtCoefficient();
+    method public java.math.BigInteger getPrimeExponentP();
+    method public java.math.BigInteger getPrimeExponentQ();
+    method public java.math.BigInteger getPrimeP();
+    method public java.math.BigInteger getPrimeQ();
+    method public java.math.BigInteger getPublicExponent();
+  }
+
+  public class RSAPrivateKeySpec implements java.security.spec.KeySpec {
+    ctor public RSAPrivateKeySpec(java.math.BigInteger, java.math.BigInteger);
+    method public java.math.BigInteger getModulus();
+    method public java.math.BigInteger getPrivateExponent();
+  }
+
+  public class RSAPublicKeySpec implements java.security.spec.KeySpec {
+    ctor public RSAPublicKeySpec(java.math.BigInteger, java.math.BigInteger);
+    method public java.math.BigInteger getModulus();
+    method public java.math.BigInteger getPublicExponent();
+  }
+
+  public class X509EncodedKeySpec extends java.security.spec.EncodedKeySpec {
+    ctor public X509EncodedKeySpec(byte[]);
+    method public final String getFormat();
+  }
+
+}
+
+package java.sql {
+
+  public interface Array {
+    method public void free() throws java.sql.SQLException;
+    method public Object getArray() throws java.sql.SQLException;
+    method public Object getArray(java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
+    method public Object getArray(long, int) throws java.sql.SQLException;
+    method public Object getArray(long, int, java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
+    method public int getBaseType() throws java.sql.SQLException;
+    method public String getBaseTypeName() throws java.sql.SQLException;
+    method public java.sql.ResultSet getResultSet() throws java.sql.SQLException;
+    method public java.sql.ResultSet getResultSet(java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
+    method public java.sql.ResultSet getResultSet(long, int) throws java.sql.SQLException;
+    method public java.sql.ResultSet getResultSet(long, int, java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
+  }
+
+  public class BatchUpdateException extends java.sql.SQLException {
+    ctor public BatchUpdateException(String, String, int, int[]);
+    ctor public BatchUpdateException(String, String, int[]);
+    ctor public BatchUpdateException(String, int[]);
+    ctor public BatchUpdateException(int[]);
+    ctor public BatchUpdateException();
+    ctor public BatchUpdateException(Throwable);
+    ctor public BatchUpdateException(int[], Throwable);
+    ctor public BatchUpdateException(String, int[], Throwable);
+    ctor public BatchUpdateException(String, String, int[], Throwable);
+    ctor public BatchUpdateException(String, String, int, int[], Throwable);
+    method public int[] getUpdateCounts();
+  }
+
+  public interface Blob {
+    method public void free() throws java.sql.SQLException;
+    method public java.io.InputStream getBinaryStream() throws java.sql.SQLException;
+    method public java.io.InputStream getBinaryStream(long, long) throws java.sql.SQLException;
+    method public byte[] getBytes(long, int) throws java.sql.SQLException;
+    method public long length() throws java.sql.SQLException;
+    method public long position(byte[], long) throws java.sql.SQLException;
+    method public long position(java.sql.Blob, long) throws java.sql.SQLException;
+    method public java.io.OutputStream setBinaryStream(long) throws java.sql.SQLException;
+    method public int setBytes(long, byte[]) throws java.sql.SQLException;
+    method public int setBytes(long, byte[], int, int) throws java.sql.SQLException;
+    method public void truncate(long) throws java.sql.SQLException;
+  }
+
+  public interface CallableStatement extends java.sql.PreparedStatement {
+    method public java.sql.Array getArray(int) throws java.sql.SQLException;
+    method public java.sql.Array getArray(String) throws java.sql.SQLException;
+    method @Deprecated public java.math.BigDecimal getBigDecimal(int, int) throws java.sql.SQLException;
+    method public java.math.BigDecimal getBigDecimal(int) throws java.sql.SQLException;
+    method public java.math.BigDecimal getBigDecimal(String) throws java.sql.SQLException;
+    method public java.sql.Blob getBlob(int) throws java.sql.SQLException;
+    method public java.sql.Blob getBlob(String) throws java.sql.SQLException;
+    method public boolean getBoolean(int) throws java.sql.SQLException;
+    method public boolean getBoolean(String) throws java.sql.SQLException;
+    method public byte getByte(int) throws java.sql.SQLException;
+    method public byte getByte(String) throws java.sql.SQLException;
+    method public byte[] getBytes(int) throws java.sql.SQLException;
+    method public byte[] getBytes(String) throws java.sql.SQLException;
+    method public java.io.Reader getCharacterStream(int) throws java.sql.SQLException;
+    method public java.io.Reader getCharacterStream(String) throws java.sql.SQLException;
+    method public java.sql.Clob getClob(int) throws java.sql.SQLException;
+    method public java.sql.Clob getClob(String) throws java.sql.SQLException;
+    method public java.sql.Date getDate(int) throws java.sql.SQLException;
+    method public java.sql.Date getDate(int, java.util.Calendar) throws java.sql.SQLException;
+    method public java.sql.Date getDate(String) throws java.sql.SQLException;
+    method public java.sql.Date getDate(String, java.util.Calendar) throws java.sql.SQLException;
+    method public double getDouble(int) throws java.sql.SQLException;
+    method public double getDouble(String) throws java.sql.SQLException;
+    method public float getFloat(int) throws java.sql.SQLException;
+    method public float getFloat(String) throws java.sql.SQLException;
+    method public int getInt(int) throws java.sql.SQLException;
+    method public int getInt(String) throws java.sql.SQLException;
+    method public long getLong(int) throws java.sql.SQLException;
+    method public long getLong(String) throws java.sql.SQLException;
+    method public java.io.Reader getNCharacterStream(int) throws java.sql.SQLException;
+    method public java.io.Reader getNCharacterStream(String) throws java.sql.SQLException;
+    method public java.sql.NClob getNClob(int) throws java.sql.SQLException;
+    method public java.sql.NClob getNClob(String) throws java.sql.SQLException;
+    method public String getNString(int) throws java.sql.SQLException;
+    method public String getNString(String) throws java.sql.SQLException;
+    method public Object getObject(int) throws java.sql.SQLException;
+    method public Object getObject(int, java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
+    method public Object getObject(String) throws java.sql.SQLException;
+    method public Object getObject(String, java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
+    method public java.sql.Ref getRef(int) throws java.sql.SQLException;
+    method public java.sql.Ref getRef(String) throws java.sql.SQLException;
+    method public java.sql.RowId getRowId(int) throws java.sql.SQLException;
+    method public java.sql.RowId getRowId(String) throws java.sql.SQLException;
+    method public java.sql.SQLXML getSQLXML(int) throws java.sql.SQLException;
+    method public java.sql.SQLXML getSQLXML(String) throws java.sql.SQLException;
+    method public short getShort(int) throws java.sql.SQLException;
+    method public short getShort(String) throws java.sql.SQLException;
+    method public String getString(int) throws java.sql.SQLException;
+    method public String getString(String) throws java.sql.SQLException;
+    method public java.sql.Time getTime(int) throws java.sql.SQLException;
+    method public java.sql.Time getTime(int, java.util.Calendar) throws java.sql.SQLException;
+    method public java.sql.Time getTime(String) throws java.sql.SQLException;
+    method public java.sql.Time getTime(String, java.util.Calendar) throws java.sql.SQLException;
+    method public java.sql.Timestamp getTimestamp(int) throws java.sql.SQLException;
+    method public java.sql.Timestamp getTimestamp(int, java.util.Calendar) throws java.sql.SQLException;
+    method public java.sql.Timestamp getTimestamp(String) throws java.sql.SQLException;
+    method public java.sql.Timestamp getTimestamp(String, java.util.Calendar) throws java.sql.SQLException;
+    method public java.net.URL getURL(int) throws java.sql.SQLException;
+    method public java.net.URL getURL(String) throws java.sql.SQLException;
+    method public void registerOutParameter(int, int) throws java.sql.SQLException;
+    method public void registerOutParameter(int, int, int) throws java.sql.SQLException;
+    method public void registerOutParameter(int, int, String) throws java.sql.SQLException;
+    method public void registerOutParameter(String, int) throws java.sql.SQLException;
+    method public void registerOutParameter(String, int, int) throws java.sql.SQLException;
+    method public void registerOutParameter(String, int, String) throws java.sql.SQLException;
+    method public void setAsciiStream(String, java.io.InputStream, int) throws java.sql.SQLException;
+    method public void setAsciiStream(String, java.io.InputStream, long) throws java.sql.SQLException;
+    method public void setAsciiStream(String, java.io.InputStream) throws java.sql.SQLException;
+    method public void setBigDecimal(String, java.math.BigDecimal) throws java.sql.SQLException;
+    method public void setBinaryStream(String, java.io.InputStream, int) throws java.sql.SQLException;
+    method public void setBinaryStream(String, java.io.InputStream, long) throws java.sql.SQLException;
+    method public void setBinaryStream(String, java.io.InputStream) throws java.sql.SQLException;
+    method public void setBlob(String, java.io.InputStream, long) throws java.sql.SQLException;
+    method public void setBlob(String, java.sql.Blob) throws java.sql.SQLException;
+    method public void setBlob(String, java.io.InputStream) throws java.sql.SQLException;
+    method public void setBoolean(String, boolean) throws java.sql.SQLException;
+    method public void setByte(String, byte) throws java.sql.SQLException;
+    method public void setBytes(String, byte[]) throws java.sql.SQLException;
+    method public void setCharacterStream(String, java.io.Reader, int) throws java.sql.SQLException;
+    method public void setCharacterStream(String, java.io.Reader, long) throws java.sql.SQLException;
+    method public void setCharacterStream(String, java.io.Reader) throws java.sql.SQLException;
+    method public void setClob(String, java.io.Reader, long) throws java.sql.SQLException;
+    method public void setClob(String, java.sql.Clob) throws java.sql.SQLException;
+    method public void setClob(String, java.io.Reader) throws java.sql.SQLException;
+    method public void setDate(String, java.sql.Date) throws java.sql.SQLException;
+    method public void setDate(String, java.sql.Date, java.util.Calendar) throws java.sql.SQLException;
+    method public void setDouble(String, double) throws java.sql.SQLException;
+    method public void setFloat(String, float) throws java.sql.SQLException;
+    method public void setInt(String, int) throws java.sql.SQLException;
+    method public void setLong(String, long) throws java.sql.SQLException;
+    method public void setNCharacterStream(String, java.io.Reader, long) throws java.sql.SQLException;
+    method public void setNCharacterStream(String, java.io.Reader) throws java.sql.SQLException;
+    method public void setNClob(String, java.sql.NClob) throws java.sql.SQLException;
+    method public void setNClob(String, java.io.Reader, long) throws java.sql.SQLException;
+    method public void setNClob(String, java.io.Reader) throws java.sql.SQLException;
+    method public void setNString(String, String) throws java.sql.SQLException;
+    method public void setNull(String, int) throws java.sql.SQLException;
+    method public void setNull(String, int, String) throws java.sql.SQLException;
+    method public void setObject(String, Object, int, int) throws java.sql.SQLException;
+    method public void setObject(String, Object, int) throws java.sql.SQLException;
+    method public void setObject(String, Object) throws java.sql.SQLException;
+    method public void setRowId(String, java.sql.RowId) throws java.sql.SQLException;
+    method public void setSQLXML(String, java.sql.SQLXML) throws java.sql.SQLException;
+    method public void setShort(String, short) throws java.sql.SQLException;
+    method public void setString(String, String) throws java.sql.SQLException;
+    method public void setTime(String, java.sql.Time) throws java.sql.SQLException;
+    method public void setTime(String, java.sql.Time, java.util.Calendar) throws java.sql.SQLException;
+    method public void setTimestamp(String, java.sql.Timestamp) throws java.sql.SQLException;
+    method public void setTimestamp(String, java.sql.Timestamp, java.util.Calendar) throws java.sql.SQLException;
+    method public void setURL(String, java.net.URL) throws java.sql.SQLException;
+    method public boolean wasNull() throws java.sql.SQLException;
+  }
+
+  public enum ClientInfoStatus {
+    enum_constant public static final java.sql.ClientInfoStatus REASON_UNKNOWN;
+    enum_constant public static final java.sql.ClientInfoStatus REASON_UNKNOWN_PROPERTY;
+    enum_constant public static final java.sql.ClientInfoStatus REASON_VALUE_INVALID;
+    enum_constant public static final java.sql.ClientInfoStatus REASON_VALUE_TRUNCATED;
+  }
+
+  public interface Clob {
+    method public void free() throws java.sql.SQLException;
+    method public java.io.InputStream getAsciiStream() throws java.sql.SQLException;
+    method public java.io.Reader getCharacterStream() throws java.sql.SQLException;
+    method public java.io.Reader getCharacterStream(long, long) throws java.sql.SQLException;
+    method public String getSubString(long, int) throws java.sql.SQLException;
+    method public long length() throws java.sql.SQLException;
+    method public long position(String, long) throws java.sql.SQLException;
+    method public long position(java.sql.Clob, long) throws java.sql.SQLException;
+    method public java.io.OutputStream setAsciiStream(long) throws java.sql.SQLException;
+    method public java.io.Writer setCharacterStream(long) throws java.sql.SQLException;
+    method public int setString(long, String) throws java.sql.SQLException;
+    method public int setString(long, String, int, int) throws java.sql.SQLException;
+    method public void truncate(long) throws java.sql.SQLException;
+  }
+
+  public interface Connection extends java.sql.Wrapper java.lang.AutoCloseable {
+    method public void clearWarnings() throws java.sql.SQLException;
+    method public void close() throws java.sql.SQLException;
+    method public void commit() throws java.sql.SQLException;
+    method public java.sql.Array createArrayOf(String, Object[]) throws java.sql.SQLException;
+    method public java.sql.Blob createBlob() throws java.sql.SQLException;
+    method public java.sql.Clob createClob() throws java.sql.SQLException;
+    method public java.sql.NClob createNClob() throws java.sql.SQLException;
+    method public java.sql.SQLXML createSQLXML() throws java.sql.SQLException;
+    method public java.sql.Statement createStatement() throws java.sql.SQLException;
+    method public java.sql.Statement createStatement(int, int) throws java.sql.SQLException;
+    method public java.sql.Statement createStatement(int, int, int) throws java.sql.SQLException;
+    method public java.sql.Struct createStruct(String, Object[]) throws java.sql.SQLException;
+    method public boolean getAutoCommit() throws java.sql.SQLException;
+    method public String getCatalog() throws java.sql.SQLException;
+    method public String getClientInfo(String) throws java.sql.SQLException;
+    method public java.util.Properties getClientInfo() throws java.sql.SQLException;
+    method public int getHoldability() throws java.sql.SQLException;
+    method public java.sql.DatabaseMetaData getMetaData() throws java.sql.SQLException;
+    method public int getTransactionIsolation() throws java.sql.SQLException;
+    method public java.util.Map<java.lang.String,java.lang.Class<?>> getTypeMap() throws java.sql.SQLException;
+    method public java.sql.SQLWarning getWarnings() throws java.sql.SQLException;
+    method public boolean isClosed() throws java.sql.SQLException;
+    method public boolean isReadOnly() throws java.sql.SQLException;
+    method public boolean isValid(int) throws java.sql.SQLException;
+    method public String nativeSQL(String) throws java.sql.SQLException;
+    method public java.sql.CallableStatement prepareCall(String) throws java.sql.SQLException;
+    method public java.sql.CallableStatement prepareCall(String, int, int) throws java.sql.SQLException;
+    method public java.sql.CallableStatement prepareCall(String, int, int, int) throws java.sql.SQLException;
+    method public java.sql.PreparedStatement prepareStatement(String) throws java.sql.SQLException;
+    method public java.sql.PreparedStatement prepareStatement(String, int, int) throws java.sql.SQLException;
+    method public java.sql.PreparedStatement prepareStatement(String, int, int, int) throws java.sql.SQLException;
+    method public java.sql.PreparedStatement prepareStatement(String, int) throws java.sql.SQLException;
+    method public java.sql.PreparedStatement prepareStatement(String, int[]) throws java.sql.SQLException;
+    method public java.sql.PreparedStatement prepareStatement(String, String[]) throws java.sql.SQLException;
+    method public void releaseSavepoint(java.sql.Savepoint) throws java.sql.SQLException;
+    method public void rollback() throws java.sql.SQLException;
+    method public void rollback(java.sql.Savepoint) throws java.sql.SQLException;
+    method public void setAutoCommit(boolean) throws java.sql.SQLException;
+    method public void setCatalog(String) throws java.sql.SQLException;
+    method public void setClientInfo(String, String) throws java.sql.SQLClientInfoException;
+    method public void setClientInfo(java.util.Properties) throws java.sql.SQLClientInfoException;
+    method public void setHoldability(int) throws java.sql.SQLException;
+    method public void setReadOnly(boolean) throws java.sql.SQLException;
+    method public java.sql.Savepoint setSavepoint() throws java.sql.SQLException;
+    method public java.sql.Savepoint setSavepoint(String) throws java.sql.SQLException;
+    method public void setTransactionIsolation(int) throws java.sql.SQLException;
+    method public void setTypeMap(java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
+    field public static final int TRANSACTION_NONE = 0; // 0x0
+    field public static final int TRANSACTION_READ_COMMITTED = 2; // 0x2
+    field public static final int TRANSACTION_READ_UNCOMMITTED = 1; // 0x1
+    field public static final int TRANSACTION_REPEATABLE_READ = 4; // 0x4
+    field public static final int TRANSACTION_SERIALIZABLE = 8; // 0x8
+  }
+
+  public class DataTruncation extends java.sql.SQLWarning {
+    ctor public DataTruncation(int, boolean, boolean, int, int);
+    ctor public DataTruncation(int, boolean, boolean, int, int, Throwable);
+    method public int getDataSize();
+    method public int getIndex();
+    method public boolean getParameter();
+    method public boolean getRead();
+    method public int getTransferSize();
+  }
+
+  public interface DatabaseMetaData extends java.sql.Wrapper {
+    method public boolean allProceduresAreCallable() throws java.sql.SQLException;
+    method public boolean allTablesAreSelectable() throws java.sql.SQLException;
+    method public boolean autoCommitFailureClosesAllResultSets() throws java.sql.SQLException;
+    method public boolean dataDefinitionCausesTransactionCommit() throws java.sql.SQLException;
+    method public boolean dataDefinitionIgnoredInTransactions() throws java.sql.SQLException;
+    method public boolean deletesAreDetected(int) throws java.sql.SQLException;
+    method public boolean doesMaxRowSizeIncludeBlobs() throws java.sql.SQLException;
+    method public java.sql.ResultSet getAttributes(String, String, String, String) throws java.sql.SQLException;
+    method public java.sql.ResultSet getBestRowIdentifier(String, String, String, int, boolean) throws java.sql.SQLException;
+    method public String getCatalogSeparator() throws java.sql.SQLException;
+    method public String getCatalogTerm() throws java.sql.SQLException;
+    method public java.sql.ResultSet getCatalogs() throws java.sql.SQLException;
+    method public java.sql.ResultSet getClientInfoProperties() throws java.sql.SQLException;
+    method public java.sql.ResultSet getColumnPrivileges(String, String, String, String) throws java.sql.SQLException;
+    method public java.sql.ResultSet getColumns(String, String, String, String) throws java.sql.SQLException;
+    method public java.sql.Connection getConnection() throws java.sql.SQLException;
+    method public java.sql.ResultSet getCrossReference(String, String, String, String, String, String) throws java.sql.SQLException;
+    method public int getDatabaseMajorVersion() throws java.sql.SQLException;
+    method public int getDatabaseMinorVersion() throws java.sql.SQLException;
+    method public String getDatabaseProductName() throws java.sql.SQLException;
+    method public String getDatabaseProductVersion() throws java.sql.SQLException;
+    method public int getDefaultTransactionIsolation() throws java.sql.SQLException;
+    method public int getDriverMajorVersion();
+    method public int getDriverMinorVersion();
+    method public String getDriverName() throws java.sql.SQLException;
+    method public String getDriverVersion() throws java.sql.SQLException;
+    method public java.sql.ResultSet getExportedKeys(String, String, String) throws java.sql.SQLException;
+    method public String getExtraNameCharacters() throws java.sql.SQLException;
+    method public java.sql.ResultSet getFunctionColumns(String, String, String, String) throws java.sql.SQLException;
+    method public java.sql.ResultSet getFunctions(String, String, String) throws java.sql.SQLException;
+    method public String getIdentifierQuoteString() throws java.sql.SQLException;
+    method public java.sql.ResultSet getImportedKeys(String, String, String) throws java.sql.SQLException;
+    method public java.sql.ResultSet getIndexInfo(String, String, String, boolean, boolean) throws java.sql.SQLException;
+    method public int getJDBCMajorVersion() throws java.sql.SQLException;
+    method public int getJDBCMinorVersion() throws java.sql.SQLException;
+    method public int getMaxBinaryLiteralLength() throws java.sql.SQLException;
+    method public int getMaxCatalogNameLength() throws java.sql.SQLException;
+    method public int getMaxCharLiteralLength() throws java.sql.SQLException;
+    method public int getMaxColumnNameLength() throws java.sql.SQLException;
+    method public int getMaxColumnsInGroupBy() throws java.sql.SQLException;
+    method public int getMaxColumnsInIndex() throws java.sql.SQLException;
+    method public int getMaxColumnsInOrderBy() throws java.sql.SQLException;
+    method public int getMaxColumnsInSelect() throws java.sql.SQLException;
+    method public int getMaxColumnsInTable() throws java.sql.SQLException;
+    method public int getMaxConnections() throws java.sql.SQLException;
+    method public int getMaxCursorNameLength() throws java.sql.SQLException;
+    method public int getMaxIndexLength() throws java.sql.SQLException;
+    method public int getMaxProcedureNameLength() throws java.sql.SQLException;
+    method public int getMaxRowSize() throws java.sql.SQLException;
+    method public int getMaxSchemaNameLength() throws java.sql.SQLException;
+    method public int getMaxStatementLength() throws java.sql.SQLException;
+    method public int getMaxStatements() throws java.sql.SQLException;
+    method public int getMaxTableNameLength() throws java.sql.SQLException;
+    method public int getMaxTablesInSelect() throws java.sql.SQLException;
+    method public int getMaxUserNameLength() throws java.sql.SQLException;
+    method public String getNumericFunctions() throws java.sql.SQLException;
+    method public java.sql.ResultSet getPrimaryKeys(String, String, String) throws java.sql.SQLException;
+    method public java.sql.ResultSet getProcedureColumns(String, String, String, String) throws java.sql.SQLException;
+    method public String getProcedureTerm() throws java.sql.SQLException;
+    method public java.sql.ResultSet getProcedures(String, String, String) throws java.sql.SQLException;
+    method public int getResultSetHoldability() throws java.sql.SQLException;
+    method public java.sql.RowIdLifetime getRowIdLifetime() throws java.sql.SQLException;
+    method public String getSQLKeywords() throws java.sql.SQLException;
+    method public int getSQLStateType() throws java.sql.SQLException;
+    method public String getSchemaTerm() throws java.sql.SQLException;
+    method public java.sql.ResultSet getSchemas() throws java.sql.SQLException;
+    method public java.sql.ResultSet getSchemas(String, String) throws java.sql.SQLException;
+    method public String getSearchStringEscape() throws java.sql.SQLException;
+    method public String getStringFunctions() throws java.sql.SQLException;
+    method public java.sql.ResultSet getSuperTables(String, String, String) throws java.sql.SQLException;
+    method public java.sql.ResultSet getSuperTypes(String, String, String) throws java.sql.SQLException;
+    method public String getSystemFunctions() throws java.sql.SQLException;
+    method public java.sql.ResultSet getTablePrivileges(String, String, String) throws java.sql.SQLException;
+    method public java.sql.ResultSet getTableTypes() throws java.sql.SQLException;
+    method public java.sql.ResultSet getTables(String, String, String, String[]) throws java.sql.SQLException;
+    method public String getTimeDateFunctions() throws java.sql.SQLException;
+    method public java.sql.ResultSet getTypeInfo() throws java.sql.SQLException;
+    method public java.sql.ResultSet getUDTs(String, String, String, int[]) throws java.sql.SQLException;
+    method public String getURL() throws java.sql.SQLException;
+    method public String getUserName() throws java.sql.SQLException;
+    method public java.sql.ResultSet getVersionColumns(String, String, String) throws java.sql.SQLException;
+    method public boolean insertsAreDetected(int) throws java.sql.SQLException;
+    method public boolean isCatalogAtStart() throws java.sql.SQLException;
+    method public boolean isReadOnly() throws java.sql.SQLException;
+    method public boolean locatorsUpdateCopy() throws java.sql.SQLException;
+    method public boolean nullPlusNonNullIsNull() throws java.sql.SQLException;
+    method public boolean nullsAreSortedAtEnd() throws java.sql.SQLException;
+    method public boolean nullsAreSortedAtStart() throws java.sql.SQLException;
+    method public boolean nullsAreSortedHigh() throws java.sql.SQLException;
+    method public boolean nullsAreSortedLow() throws java.sql.SQLException;
+    method public boolean othersDeletesAreVisible(int) throws java.sql.SQLException;
+    method public boolean othersInsertsAreVisible(int) throws java.sql.SQLException;
+    method public boolean othersUpdatesAreVisible(int) throws java.sql.SQLException;
+    method public boolean ownDeletesAreVisible(int) throws java.sql.SQLException;
+    method public boolean ownInsertsAreVisible(int) throws java.sql.SQLException;
+    method public boolean ownUpdatesAreVisible(int) throws java.sql.SQLException;
+    method public boolean storesLowerCaseIdentifiers() throws java.sql.SQLException;
+    method public boolean storesLowerCaseQuotedIdentifiers() throws java.sql.SQLException;
+    method public boolean storesMixedCaseIdentifiers() throws java.sql.SQLException;
+    method public boolean storesMixedCaseQuotedIdentifiers() throws java.sql.SQLException;
+    method public boolean storesUpperCaseIdentifiers() throws java.sql.SQLException;
+    method public boolean storesUpperCaseQuotedIdentifiers() throws java.sql.SQLException;
+    method public boolean supportsANSI92EntryLevelSQL() throws java.sql.SQLException;
+    method public boolean supportsANSI92FullSQL() throws java.sql.SQLException;
+    method public boolean supportsANSI92IntermediateSQL() throws java.sql.SQLException;
+    method public boolean supportsAlterTableWithAddColumn() throws java.sql.SQLException;
+    method public boolean supportsAlterTableWithDropColumn() throws java.sql.SQLException;
+    method public boolean supportsBatchUpdates() throws java.sql.SQLException;
+    method public boolean supportsCatalogsInDataManipulation() throws java.sql.SQLException;
+    method public boolean supportsCatalogsInIndexDefinitions() throws java.sql.SQLException;
+    method public boolean supportsCatalogsInPrivilegeDefinitions() throws java.sql.SQLException;
+    method public boolean supportsCatalogsInProcedureCalls() throws java.sql.SQLException;
+    method public boolean supportsCatalogsInTableDefinitions() throws java.sql.SQLException;
+    method public boolean supportsColumnAliasing() throws java.sql.SQLException;
+    method public boolean supportsConvert() throws java.sql.SQLException;
+    method public boolean supportsConvert(int, int) throws java.sql.SQLException;
+    method public boolean supportsCoreSQLGrammar() throws java.sql.SQLException;
+    method public boolean supportsCorrelatedSubqueries() throws java.sql.SQLException;
+    method public boolean supportsDataDefinitionAndDataManipulationTransactions() throws java.sql.SQLException;
+    method public boolean supportsDataManipulationTransactionsOnly() throws java.sql.SQLException;
+    method public boolean supportsDifferentTableCorrelationNames() throws java.sql.SQLException;
+    method public boolean supportsExpressionsInOrderBy() throws java.sql.SQLException;
+    method public boolean supportsExtendedSQLGrammar() throws java.sql.SQLException;
+    method public boolean supportsFullOuterJoins() throws java.sql.SQLException;
+    method public boolean supportsGetGeneratedKeys() throws java.sql.SQLException;
+    method public boolean supportsGroupBy() throws java.sql.SQLException;
+    method public boolean supportsGroupByBeyondSelect() throws java.sql.SQLException;
+    method public boolean supportsGroupByUnrelated() throws java.sql.SQLException;
+    method public boolean supportsIntegrityEnhancementFacility() throws java.sql.SQLException;
+    method public boolean supportsLikeEscapeClause() throws java.sql.SQLException;
+    method public boolean supportsLimitedOuterJoins() throws java.sql.SQLException;
+    method public boolean supportsMinimumSQLGrammar() throws java.sql.SQLException;
+    method public boolean supportsMixedCaseIdentifiers() throws java.sql.SQLException;
+    method public boolean supportsMixedCaseQuotedIdentifiers() throws java.sql.SQLException;
+    method public boolean supportsMultipleOpenResults() throws java.sql.SQLException;
+    method public boolean supportsMultipleResultSets() throws java.sql.SQLException;
+    method public boolean supportsMultipleTransactions() throws java.sql.SQLException;
+    method public boolean supportsNamedParameters() throws java.sql.SQLException;
+    method public boolean supportsNonNullableColumns() throws java.sql.SQLException;
+    method public boolean supportsOpenCursorsAcrossCommit() throws java.sql.SQLException;
+    method public boolean supportsOpenCursorsAcrossRollback() throws java.sql.SQLException;
+    method public boolean supportsOpenStatementsAcrossCommit() throws java.sql.SQLException;
+    method public boolean supportsOpenStatementsAcrossRollback() throws java.sql.SQLException;
+    method public boolean supportsOrderByUnrelated() throws java.sql.SQLException;
+    method public boolean supportsOuterJoins() throws java.sql.SQLException;
+    method public boolean supportsPositionedDelete() throws java.sql.SQLException;
+    method public boolean supportsPositionedUpdate() throws java.sql.SQLException;
+    method public boolean supportsResultSetConcurrency(int, int) throws java.sql.SQLException;
+    method public boolean supportsResultSetHoldability(int) throws java.sql.SQLException;
+    method public boolean supportsResultSetType(int) throws java.sql.SQLException;
+    method public boolean supportsSavepoints() throws java.sql.SQLException;
+    method public boolean supportsSchemasInDataManipulation() throws java.sql.SQLException;
+    method public boolean supportsSchemasInIndexDefinitions() throws java.sql.SQLException;
+    method public boolean supportsSchemasInPrivilegeDefinitions() throws java.sql.SQLException;
+    method public boolean supportsSchemasInProcedureCalls() throws java.sql.SQLException;
+    method public boolean supportsSchemasInTableDefinitions() throws java.sql.SQLException;
+    method public boolean supportsSelectForUpdate() throws java.sql.SQLException;
+    method public boolean supportsStatementPooling() throws java.sql.SQLException;
+    method public boolean supportsStoredFunctionsUsingCallSyntax() throws java.sql.SQLException;
+    method public boolean supportsStoredProcedures() throws java.sql.SQLException;
+    method public boolean supportsSubqueriesInComparisons() throws java.sql.SQLException;
+    method public boolean supportsSubqueriesInExists() throws java.sql.SQLException;
+    method public boolean supportsSubqueriesInIns() throws java.sql.SQLException;
+    method public boolean supportsSubqueriesInQuantifieds() throws java.sql.SQLException;
+    method public boolean supportsTableCorrelationNames() throws java.sql.SQLException;
+    method public boolean supportsTransactionIsolationLevel(int) throws java.sql.SQLException;
+    method public boolean supportsTransactions() throws java.sql.SQLException;
+    method public boolean supportsUnion() throws java.sql.SQLException;
+    method public boolean supportsUnionAll() throws java.sql.SQLException;
+    method public boolean updatesAreDetected(int) throws java.sql.SQLException;
+    method public boolean usesLocalFilePerTable() throws java.sql.SQLException;
+    method public boolean usesLocalFiles() throws java.sql.SQLException;
+    field public static final short attributeNoNulls = 0; // 0x0
+    field public static final short attributeNullable = 1; // 0x1
+    field public static final short attributeNullableUnknown = 2; // 0x2
+    field public static final int bestRowNotPseudo = 1; // 0x1
+    field public static final int bestRowPseudo = 2; // 0x2
+    field public static final int bestRowSession = 2; // 0x2
+    field public static final int bestRowTemporary = 0; // 0x0
+    field public static final int bestRowTransaction = 1; // 0x1
+    field public static final int bestRowUnknown = 0; // 0x0
+    field public static final int columnNoNulls = 0; // 0x0
+    field public static final int columnNullable = 1; // 0x1
+    field public static final int columnNullableUnknown = 2; // 0x2
+    field public static final int functionColumnIn = 1; // 0x1
+    field public static final int functionColumnInOut = 2; // 0x2
+    field public static final int functionColumnOut = 3; // 0x3
+    field public static final int functionColumnResult = 5; // 0x5
+    field public static final int functionColumnUnknown = 0; // 0x0
+    field public static final int functionNoNulls = 0; // 0x0
+    field public static final int functionNoTable = 1; // 0x1
+    field public static final int functionNullable = 1; // 0x1
+    field public static final int functionNullableUnknown = 2; // 0x2
+    field public static final int functionResultUnknown = 0; // 0x0
+    field public static final int functionReturn = 4; // 0x4
+    field public static final int functionReturnsTable = 2; // 0x2
+    field public static final int importedKeyCascade = 0; // 0x0
+    field public static final int importedKeyInitiallyDeferred = 5; // 0x5
+    field public static final int importedKeyInitiallyImmediate = 6; // 0x6
+    field public static final int importedKeyNoAction = 3; // 0x3
+    field public static final int importedKeyNotDeferrable = 7; // 0x7
+    field public static final int importedKeyRestrict = 1; // 0x1
+    field public static final int importedKeySetDefault = 4; // 0x4
+    field public static final int importedKeySetNull = 2; // 0x2
+    field public static final int procedureColumnIn = 1; // 0x1
+    field public static final int procedureColumnInOut = 2; // 0x2
+    field public static final int procedureColumnOut = 4; // 0x4
+    field public static final int procedureColumnResult = 3; // 0x3
+    field public static final int procedureColumnReturn = 5; // 0x5
+    field public static final int procedureColumnUnknown = 0; // 0x0
+    field public static final int procedureNoNulls = 0; // 0x0
+    field public static final int procedureNoResult = 1; // 0x1
+    field public static final int procedureNullable = 1; // 0x1
+    field public static final int procedureNullableUnknown = 2; // 0x2
+    field public static final int procedureResultUnknown = 0; // 0x0
+    field public static final int procedureReturnsResult = 2; // 0x2
+    field public static final int sqlStateSQL = 2; // 0x2
+    field public static final int sqlStateSQL99 = 2; // 0x2
+    field public static final int sqlStateXOpen = 1; // 0x1
+    field public static final short tableIndexClustered = 1; // 0x1
+    field public static final short tableIndexHashed = 2; // 0x2
+    field public static final short tableIndexOther = 3; // 0x3
+    field public static final short tableIndexStatistic = 0; // 0x0
+    field public static final int typeNoNulls = 0; // 0x0
+    field public static final int typeNullable = 1; // 0x1
+    field public static final int typeNullableUnknown = 2; // 0x2
+    field public static final int typePredBasic = 2; // 0x2
+    field public static final int typePredChar = 1; // 0x1
+    field public static final int typePredNone = 0; // 0x0
+    field public static final int typeSearchable = 3; // 0x3
+    field public static final int versionColumnNotPseudo = 1; // 0x1
+    field public static final int versionColumnPseudo = 2; // 0x2
+    field public static final int versionColumnUnknown = 0; // 0x0
+  }
+
+  public class Date extends java.util.Date {
+    ctor @Deprecated public Date(int, int, int);
+    ctor public Date(long);
+    method public static java.sql.Date valueOf(String);
+  }
+
+  public interface Driver {
+    method public boolean acceptsURL(String) throws java.sql.SQLException;
+    method public java.sql.Connection connect(String, java.util.Properties) throws java.sql.SQLException;
+    method public int getMajorVersion();
+    method public int getMinorVersion();
+    method public java.sql.DriverPropertyInfo[] getPropertyInfo(String, java.util.Properties) throws java.sql.SQLException;
+    method public boolean jdbcCompliant();
+  }
+
+  public class DriverManager {
+    method public static void deregisterDriver(java.sql.Driver) throws java.sql.SQLException;
+    method public static java.sql.Connection getConnection(String, java.util.Properties) throws java.sql.SQLException;
+    method public static java.sql.Connection getConnection(String, String, String) throws java.sql.SQLException;
+    method public static java.sql.Connection getConnection(String) throws java.sql.SQLException;
+    method public static java.sql.Driver getDriver(String) throws java.sql.SQLException;
+    method public static java.util.Enumeration<java.sql.Driver> getDrivers();
+    method @Deprecated public static java.io.PrintStream getLogStream();
+    method public static java.io.PrintWriter getLogWriter();
+    method public static int getLoginTimeout();
+    method public static void println(String);
+    method public static void registerDriver(java.sql.Driver) throws java.sql.SQLException;
+    method @Deprecated public static void setLogStream(java.io.PrintStream);
+    method public static void setLogWriter(java.io.PrintWriter);
+    method public static void setLoginTimeout(int);
+  }
+
+  public class DriverPropertyInfo {
+    ctor public DriverPropertyInfo(String, String);
+    field public String[] choices;
+    field public String description;
+    field public String name;
+    field public boolean required;
+    field public String value;
+  }
+
+  public interface NClob extends java.sql.Clob {
+  }
+
+  public interface ParameterMetaData extends java.sql.Wrapper {
+    method public String getParameterClassName(int) throws java.sql.SQLException;
+    method public int getParameterCount() throws java.sql.SQLException;
+    method public int getParameterMode(int) throws java.sql.SQLException;
+    method public int getParameterType(int) throws java.sql.SQLException;
+    method public String getParameterTypeName(int) throws java.sql.SQLException;
+    method public int getPrecision(int) throws java.sql.SQLException;
+    method public int getScale(int) throws java.sql.SQLException;
+    method public int isNullable(int) throws java.sql.SQLException;
+    method public boolean isSigned(int) throws java.sql.SQLException;
+    field public static final int parameterModeIn = 1; // 0x1
+    field public static final int parameterModeInOut = 2; // 0x2
+    field public static final int parameterModeOut = 4; // 0x4
+    field public static final int parameterModeUnknown = 0; // 0x0
+    field public static final int parameterNoNulls = 0; // 0x0
+    field public static final int parameterNullable = 1; // 0x1
+    field public static final int parameterNullableUnknown = 2; // 0x2
+  }
+
+  public interface PreparedStatement extends java.sql.Statement {
+    method public void addBatch() throws java.sql.SQLException;
+    method public void clearParameters() throws java.sql.SQLException;
+    method public boolean execute() throws java.sql.SQLException;
+    method public java.sql.ResultSet executeQuery() throws java.sql.SQLException;
+    method public int executeUpdate() throws java.sql.SQLException;
+    method public java.sql.ResultSetMetaData getMetaData() throws java.sql.SQLException;
+    method public java.sql.ParameterMetaData getParameterMetaData() throws java.sql.SQLException;
+    method public void setArray(int, java.sql.Array) throws java.sql.SQLException;
+    method public void setAsciiStream(int, java.io.InputStream, int) throws java.sql.SQLException;
+    method public void setAsciiStream(int, java.io.InputStream, long) throws java.sql.SQLException;
+    method public void setAsciiStream(int, java.io.InputStream) throws java.sql.SQLException;
+    method public void setBigDecimal(int, java.math.BigDecimal) throws java.sql.SQLException;
+    method public void setBinaryStream(int, java.io.InputStream, int) throws java.sql.SQLException;
+    method public void setBinaryStream(int, java.io.InputStream, long) throws java.sql.SQLException;
+    method public void setBinaryStream(int, java.io.InputStream) throws java.sql.SQLException;
+    method public void setBlob(int, java.sql.Blob) throws java.sql.SQLException;
+    method public void setBlob(int, java.io.InputStream, long) throws java.sql.SQLException;
+    method public void setBlob(int, java.io.InputStream) throws java.sql.SQLException;
+    method public void setBoolean(int, boolean) throws java.sql.SQLException;
+    method public void setByte(int, byte) throws java.sql.SQLException;
+    method public void setBytes(int, byte[]) throws java.sql.SQLException;
+    method public void setCharacterStream(int, java.io.Reader, int) throws java.sql.SQLException;
+    method public void setCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
+    method public void setCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
+    method public void setClob(int, java.sql.Clob) throws java.sql.SQLException;
+    method public void setClob(int, java.io.Reader, long) throws java.sql.SQLException;
+    method public void setClob(int, java.io.Reader) throws java.sql.SQLException;
+    method public void setDate(int, java.sql.Date) throws java.sql.SQLException;
+    method public void setDate(int, java.sql.Date, java.util.Calendar) throws java.sql.SQLException;
+    method public void setDouble(int, double) throws java.sql.SQLException;
+    method public void setFloat(int, float) throws java.sql.SQLException;
+    method public void setInt(int, int) throws java.sql.SQLException;
+    method public void setLong(int, long) throws java.sql.SQLException;
+    method public void setNCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
+    method public void setNCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
+    method public void setNClob(int, java.sql.NClob) throws java.sql.SQLException;
+    method public void setNClob(int, java.io.Reader, long) throws java.sql.SQLException;
+    method public void setNClob(int, java.io.Reader) throws java.sql.SQLException;
+    method public void setNString(int, String) throws java.sql.SQLException;
+    method public void setNull(int, int) throws java.sql.SQLException;
+    method public void setNull(int, int, String) throws java.sql.SQLException;
+    method public void setObject(int, Object, int) throws java.sql.SQLException;
+    method public void setObject(int, Object) throws java.sql.SQLException;
+    method public void setObject(int, Object, int, int) throws java.sql.SQLException;
+    method public void setRef(int, java.sql.Ref) throws java.sql.SQLException;
+    method public void setRowId(int, java.sql.RowId) throws java.sql.SQLException;
+    method public void setSQLXML(int, java.sql.SQLXML) throws java.sql.SQLException;
+    method public void setShort(int, short) throws java.sql.SQLException;
+    method public void setString(int, String) throws java.sql.SQLException;
+    method public void setTime(int, java.sql.Time) throws java.sql.SQLException;
+    method public void setTime(int, java.sql.Time, java.util.Calendar) throws java.sql.SQLException;
+    method public void setTimestamp(int, java.sql.Timestamp) throws java.sql.SQLException;
+    method public void setTimestamp(int, java.sql.Timestamp, java.util.Calendar) throws java.sql.SQLException;
+    method public void setURL(int, java.net.URL) throws java.sql.SQLException;
+    method @Deprecated public void setUnicodeStream(int, java.io.InputStream, int) throws java.sql.SQLException;
+  }
+
+  public interface Ref {
+    method public String getBaseTypeName() throws java.sql.SQLException;
+    method public Object getObject(java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
+    method public Object getObject() throws java.sql.SQLException;
+    method public void setObject(Object) throws java.sql.SQLException;
+  }
+
+  public interface ResultSet extends java.sql.Wrapper java.lang.AutoCloseable {
+    method public boolean absolute(int) throws java.sql.SQLException;
+    method public void afterLast() throws java.sql.SQLException;
+    method public void beforeFirst() throws java.sql.SQLException;
+    method public void cancelRowUpdates() throws java.sql.SQLException;
+    method public void clearWarnings() throws java.sql.SQLException;
+    method public void close() throws java.sql.SQLException;
+    method public void deleteRow() throws java.sql.SQLException;
+    method public int findColumn(String) throws java.sql.SQLException;
+    method public boolean first() throws java.sql.SQLException;
+    method public java.sql.Array getArray(int) throws java.sql.SQLException;
+    method public java.sql.Array getArray(String) throws java.sql.SQLException;
+    method public java.io.InputStream getAsciiStream(int) throws java.sql.SQLException;
+    method public java.io.InputStream getAsciiStream(String) throws java.sql.SQLException;
+    method @Deprecated public java.math.BigDecimal getBigDecimal(int, int) throws java.sql.SQLException;
+    method @Deprecated public java.math.BigDecimal getBigDecimal(String, int) throws java.sql.SQLException;
+    method public java.math.BigDecimal getBigDecimal(int) throws java.sql.SQLException;
+    method public java.math.BigDecimal getBigDecimal(String) throws java.sql.SQLException;
+    method public java.io.InputStream getBinaryStream(int) throws java.sql.SQLException;
+    method public java.io.InputStream getBinaryStream(String) throws java.sql.SQLException;
+    method public java.sql.Blob getBlob(int) throws java.sql.SQLException;
+    method public java.sql.Blob getBlob(String) throws java.sql.SQLException;
+    method public boolean getBoolean(int) throws java.sql.SQLException;
+    method public boolean getBoolean(String) throws java.sql.SQLException;
+    method public byte getByte(int) throws java.sql.SQLException;
+    method public byte getByte(String) throws java.sql.SQLException;
+    method public byte[] getBytes(int) throws java.sql.SQLException;
+    method public byte[] getBytes(String) throws java.sql.SQLException;
+    method public java.io.Reader getCharacterStream(int) throws java.sql.SQLException;
+    method public java.io.Reader getCharacterStream(String) throws java.sql.SQLException;
+    method public java.sql.Clob getClob(int) throws java.sql.SQLException;
+    method public java.sql.Clob getClob(String) throws java.sql.SQLException;
+    method public int getConcurrency() throws java.sql.SQLException;
+    method public String getCursorName() throws java.sql.SQLException;
+    method public java.sql.Date getDate(int) throws java.sql.SQLException;
+    method public java.sql.Date getDate(String) throws java.sql.SQLException;
+    method public java.sql.Date getDate(int, java.util.Calendar) throws java.sql.SQLException;
+    method public java.sql.Date getDate(String, java.util.Calendar) throws java.sql.SQLException;
+    method public double getDouble(int) throws java.sql.SQLException;
+    method public double getDouble(String) throws java.sql.SQLException;
+    method public int getFetchDirection() throws java.sql.SQLException;
+    method public int getFetchSize() throws java.sql.SQLException;
+    method public float getFloat(int) throws java.sql.SQLException;
+    method public float getFloat(String) throws java.sql.SQLException;
+    method public int getHoldability() throws java.sql.SQLException;
+    method public int getInt(int) throws java.sql.SQLException;
+    method public int getInt(String) throws java.sql.SQLException;
+    method public long getLong(int) throws java.sql.SQLException;
+    method public long getLong(String) throws java.sql.SQLException;
+    method public java.sql.ResultSetMetaData getMetaData() throws java.sql.SQLException;
+    method public java.io.Reader getNCharacterStream(int) throws java.sql.SQLException;
+    method public java.io.Reader getNCharacterStream(String) throws java.sql.SQLException;
+    method public java.sql.NClob getNClob(int) throws java.sql.SQLException;
+    method public java.sql.NClob getNClob(String) throws java.sql.SQLException;
+    method public String getNString(int) throws java.sql.SQLException;
+    method public String getNString(String) throws java.sql.SQLException;
+    method public Object getObject(int) throws java.sql.SQLException;
+    method public Object getObject(String) throws java.sql.SQLException;
+    method public Object getObject(int, java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
+    method public Object getObject(String, java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
+    method public java.sql.Ref getRef(int) throws java.sql.SQLException;
+    method public java.sql.Ref getRef(String) throws java.sql.SQLException;
+    method public int getRow() throws java.sql.SQLException;
+    method public java.sql.RowId getRowId(int) throws java.sql.SQLException;
+    method public java.sql.RowId getRowId(String) throws java.sql.SQLException;
+    method public java.sql.SQLXML getSQLXML(int) throws java.sql.SQLException;
+    method public java.sql.SQLXML getSQLXML(String) throws java.sql.SQLException;
+    method public short getShort(int) throws java.sql.SQLException;
+    method public short getShort(String) throws java.sql.SQLException;
+    method public java.sql.Statement getStatement() throws java.sql.SQLException;
+    method public String getString(int) throws java.sql.SQLException;
+    method public String getString(String) throws java.sql.SQLException;
+    method public java.sql.Time getTime(int) throws java.sql.SQLException;
+    method public java.sql.Time getTime(String) throws java.sql.SQLException;
+    method public java.sql.Time getTime(int, java.util.Calendar) throws java.sql.SQLException;
+    method public java.sql.Time getTime(String, java.util.Calendar) throws java.sql.SQLException;
+    method public java.sql.Timestamp getTimestamp(int) throws java.sql.SQLException;
+    method public java.sql.Timestamp getTimestamp(String) throws java.sql.SQLException;
+    method public java.sql.Timestamp getTimestamp(int, java.util.Calendar) throws java.sql.SQLException;
+    method public java.sql.Timestamp getTimestamp(String, java.util.Calendar) throws java.sql.SQLException;
+    method public int getType() throws java.sql.SQLException;
+    method public java.net.URL getURL(int) throws java.sql.SQLException;
+    method public java.net.URL getURL(String) throws java.sql.SQLException;
+    method @Deprecated public java.io.InputStream getUnicodeStream(int) throws java.sql.SQLException;
+    method @Deprecated public java.io.InputStream getUnicodeStream(String) throws java.sql.SQLException;
+    method public java.sql.SQLWarning getWarnings() throws java.sql.SQLException;
+    method public void insertRow() throws java.sql.SQLException;
+    method public boolean isAfterLast() throws java.sql.SQLException;
+    method public boolean isBeforeFirst() throws java.sql.SQLException;
+    method public boolean isClosed() throws java.sql.SQLException;
+    method public boolean isFirst() throws java.sql.SQLException;
+    method public boolean isLast() throws java.sql.SQLException;
+    method public boolean last() throws java.sql.SQLException;
+    method public void moveToCurrentRow() throws java.sql.SQLException;
+    method public void moveToInsertRow() throws java.sql.SQLException;
+    method public boolean next() throws java.sql.SQLException;
+    method public boolean previous() throws java.sql.SQLException;
+    method public void refreshRow() throws java.sql.SQLException;
+    method public boolean relative(int) throws java.sql.SQLException;
+    method public boolean rowDeleted() throws java.sql.SQLException;
+    method public boolean rowInserted() throws java.sql.SQLException;
+    method public boolean rowUpdated() throws java.sql.SQLException;
+    method public void setFetchDirection(int) throws java.sql.SQLException;
+    method public void setFetchSize(int) throws java.sql.SQLException;
+    method public void updateArray(int, java.sql.Array) throws java.sql.SQLException;
+    method public void updateArray(String, java.sql.Array) throws java.sql.SQLException;
+    method public void updateAsciiStream(int, java.io.InputStream, int) throws java.sql.SQLException;
+    method public void updateAsciiStream(String, java.io.InputStream, int) throws java.sql.SQLException;
+    method public void updateAsciiStream(int, java.io.InputStream, long) throws java.sql.SQLException;
+    method public void updateAsciiStream(String, java.io.InputStream, long) throws java.sql.SQLException;
+    method public void updateAsciiStream(int, java.io.InputStream) throws java.sql.SQLException;
+    method public void updateAsciiStream(String, java.io.InputStream) throws java.sql.SQLException;
+    method public void updateBigDecimal(int, java.math.BigDecimal) throws java.sql.SQLException;
+    method public void updateBigDecimal(String, java.math.BigDecimal) throws java.sql.SQLException;
+    method public void updateBinaryStream(int, java.io.InputStream, int) throws java.sql.SQLException;
+    method public void updateBinaryStream(String, java.io.InputStream, int) throws java.sql.SQLException;
+    method public void updateBinaryStream(int, java.io.InputStream, long) throws java.sql.SQLException;
+    method public void updateBinaryStream(String, java.io.InputStream, long) throws java.sql.SQLException;
+    method public void updateBinaryStream(int, java.io.InputStream) throws java.sql.SQLException;
+    method public void updateBinaryStream(String, java.io.InputStream) throws java.sql.SQLException;
+    method public void updateBlob(int, java.sql.Blob) throws java.sql.SQLException;
+    method public void updateBlob(String, java.sql.Blob) throws java.sql.SQLException;
+    method public void updateBlob(int, java.io.InputStream, long) throws java.sql.SQLException;
+    method public void updateBlob(String, java.io.InputStream, long) throws java.sql.SQLException;
+    method public void updateBlob(int, java.io.InputStream) throws java.sql.SQLException;
+    method public void updateBlob(String, java.io.InputStream) throws java.sql.SQLException;
+    method public void updateBoolean(int, boolean) throws java.sql.SQLException;
+    method public void updateBoolean(String, boolean) throws java.sql.SQLException;
+    method public void updateByte(int, byte) throws java.sql.SQLException;
+    method public void updateByte(String, byte) throws java.sql.SQLException;
+    method public void updateBytes(int, byte[]) throws java.sql.SQLException;
+    method public void updateBytes(String, byte[]) throws java.sql.SQLException;
+    method public void updateCharacterStream(int, java.io.Reader, int) throws java.sql.SQLException;
+    method public void updateCharacterStream(String, java.io.Reader, int) throws java.sql.SQLException;
+    method public void updateCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
+    method public void updateCharacterStream(String, java.io.Reader, long) throws java.sql.SQLException;
+    method public void updateCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
+    method public void updateCharacterStream(String, java.io.Reader) throws java.sql.SQLException;
+    method public void updateClob(int, java.sql.Clob) throws java.sql.SQLException;
+    method public void updateClob(String, java.sql.Clob) throws java.sql.SQLException;
+    method public void updateClob(int, java.io.Reader, long) throws java.sql.SQLException;
+    method public void updateClob(String, java.io.Reader, long) throws java.sql.SQLException;
+    method public void updateClob(int, java.io.Reader) throws java.sql.SQLException;
+    method public void updateClob(String, java.io.Reader) throws java.sql.SQLException;
+    method public void updateDate(int, java.sql.Date) throws java.sql.SQLException;
+    method public void updateDate(String, java.sql.Date) throws java.sql.SQLException;
+    method public void updateDouble(int, double) throws java.sql.SQLException;
+    method public void updateDouble(String, double) throws java.sql.SQLException;
+    method public void updateFloat(int, float) throws java.sql.SQLException;
+    method public void updateFloat(String, float) throws java.sql.SQLException;
+    method public void updateInt(int, int) throws java.sql.SQLException;
+    method public void updateInt(String, int) throws java.sql.SQLException;
+    method public void updateLong(int, long) throws java.sql.SQLException;
+    method public void updateLong(String, long) throws java.sql.SQLException;
+    method public void updateNCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
+    method public void updateNCharacterStream(String, java.io.Reader, long) throws java.sql.SQLException;
+    method public void updateNCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
+    method public void updateNCharacterStream(String, java.io.Reader) throws java.sql.SQLException;
+    method public void updateNClob(int, java.sql.NClob) throws java.sql.SQLException;
+    method public void updateNClob(String, java.sql.NClob) throws java.sql.SQLException;
+    method public void updateNClob(int, java.io.Reader, long) throws java.sql.SQLException;
+    method public void updateNClob(String, java.io.Reader, long) throws java.sql.SQLException;
+    method public void updateNClob(int, java.io.Reader) throws java.sql.SQLException;
+    method public void updateNClob(String, java.io.Reader) throws java.sql.SQLException;
+    method public void updateNString(int, String) throws java.sql.SQLException;
+    method public void updateNString(String, String) throws java.sql.SQLException;
+    method public void updateNull(int) throws java.sql.SQLException;
+    method public void updateNull(String) throws java.sql.SQLException;
+    method public void updateObject(int, Object, int) throws java.sql.SQLException;
+    method public void updateObject(int, Object) throws java.sql.SQLException;
+    method public void updateObject(String, Object, int) throws java.sql.SQLException;
+    method public void updateObject(String, Object) throws java.sql.SQLException;
+    method public void updateRef(int, java.sql.Ref) throws java.sql.SQLException;
+    method public void updateRef(String, java.sql.Ref) throws java.sql.SQLException;
+    method public void updateRow() throws java.sql.SQLException;
+    method public void updateRowId(int, java.sql.RowId) throws java.sql.SQLException;
+    method public void updateRowId(String, java.sql.RowId) throws java.sql.SQLException;
+    method public void updateSQLXML(int, java.sql.SQLXML) throws java.sql.SQLException;
+    method public void updateSQLXML(String, java.sql.SQLXML) throws java.sql.SQLException;
+    method public void updateShort(int, short) throws java.sql.SQLException;
+    method public void updateShort(String, short) throws java.sql.SQLException;
+    method public void updateString(int, String) throws java.sql.SQLException;
+    method public void updateString(String, String) throws java.sql.SQLException;
+    method public void updateTime(int, java.sql.Time) throws java.sql.SQLException;
+    method public void updateTime(String, java.sql.Time) throws java.sql.SQLException;
+    method public void updateTimestamp(int, java.sql.Timestamp) throws java.sql.SQLException;
+    method public void updateTimestamp(String, java.sql.Timestamp) throws java.sql.SQLException;
+    method public boolean wasNull() throws java.sql.SQLException;
+    field public static final int CLOSE_CURSORS_AT_COMMIT = 2; // 0x2
+    field public static final int CONCUR_READ_ONLY = 1007; // 0x3ef
+    field public static final int CONCUR_UPDATABLE = 1008; // 0x3f0
+    field public static final int FETCH_FORWARD = 1000; // 0x3e8
+    field public static final int FETCH_REVERSE = 1001; // 0x3e9
+    field public static final int FETCH_UNKNOWN = 1002; // 0x3ea
+    field public static final int HOLD_CURSORS_OVER_COMMIT = 1; // 0x1
+    field public static final int TYPE_FORWARD_ONLY = 1003; // 0x3eb
+    field public static final int TYPE_SCROLL_INSENSITIVE = 1004; // 0x3ec
+    field public static final int TYPE_SCROLL_SENSITIVE = 1005; // 0x3ed
+  }
+
+  public interface ResultSetMetaData extends java.sql.Wrapper {
+    method public String getCatalogName(int) throws java.sql.SQLException;
+    method public String getColumnClassName(int) throws java.sql.SQLException;
+    method public int getColumnCount() throws java.sql.SQLException;
+    method public int getColumnDisplaySize(int) throws java.sql.SQLException;
+    method public String getColumnLabel(int) throws java.sql.SQLException;
+    method public String getColumnName(int) throws java.sql.SQLException;
+    method public int getColumnType(int) throws java.sql.SQLException;
+    method public String getColumnTypeName(int) throws java.sql.SQLException;
+    method public int getPrecision(int) throws java.sql.SQLException;
+    method public int getScale(int) throws java.sql.SQLException;
+    method public String getSchemaName(int) throws java.sql.SQLException;
+    method public String getTableName(int) throws java.sql.SQLException;
+    method public boolean isAutoIncrement(int) throws java.sql.SQLException;
+    method public boolean isCaseSensitive(int) throws java.sql.SQLException;
+    method public boolean isCurrency(int) throws java.sql.SQLException;
+    method public boolean isDefinitelyWritable(int) throws java.sql.SQLException;
+    method public int isNullable(int) throws java.sql.SQLException;
+    method public boolean isReadOnly(int) throws java.sql.SQLException;
+    method public boolean isSearchable(int) throws java.sql.SQLException;
+    method public boolean isSigned(int) throws java.sql.SQLException;
+    method public boolean isWritable(int) throws java.sql.SQLException;
+    field public static final int columnNoNulls = 0; // 0x0
+    field public static final int columnNullable = 1; // 0x1
+    field public static final int columnNullableUnknown = 2; // 0x2
+  }
+
+  public interface RowId {
+    method public boolean equals(Object);
+    method public byte[] getBytes();
+    method public int hashCode();
+    method public String toString();
+  }
+
+  public enum RowIdLifetime {
+    enum_constant public static final java.sql.RowIdLifetime ROWID_UNSUPPORTED;
+    enum_constant public static final java.sql.RowIdLifetime ROWID_VALID_FOREVER;
+    enum_constant public static final java.sql.RowIdLifetime ROWID_VALID_OTHER;
+    enum_constant public static final java.sql.RowIdLifetime ROWID_VALID_SESSION;
+    enum_constant public static final java.sql.RowIdLifetime ROWID_VALID_TRANSACTION;
+  }
+
+  public class SQLClientInfoException extends java.sql.SQLException {
+    ctor public SQLClientInfoException();
+    ctor public SQLClientInfoException(java.util.Map<java.lang.String,java.sql.ClientInfoStatus>);
+    ctor public SQLClientInfoException(java.util.Map<java.lang.String,java.sql.ClientInfoStatus>, Throwable);
+    ctor public SQLClientInfoException(String, java.util.Map<java.lang.String,java.sql.ClientInfoStatus>);
+    ctor public SQLClientInfoException(String, java.util.Map<java.lang.String,java.sql.ClientInfoStatus>, Throwable);
+    ctor public SQLClientInfoException(String, String, java.util.Map<java.lang.String,java.sql.ClientInfoStatus>);
+    ctor public SQLClientInfoException(String, String, java.util.Map<java.lang.String,java.sql.ClientInfoStatus>, Throwable);
+    ctor public SQLClientInfoException(String, String, int, java.util.Map<java.lang.String,java.sql.ClientInfoStatus>);
+    ctor public SQLClientInfoException(String, String, int, java.util.Map<java.lang.String,java.sql.ClientInfoStatus>, Throwable);
+    method public java.util.Map<java.lang.String,java.sql.ClientInfoStatus> getFailedProperties();
+  }
+
+  public interface SQLData {
+    method public String getSQLTypeName() throws java.sql.SQLException;
+    method public void readSQL(java.sql.SQLInput, String) throws java.sql.SQLException;
+    method public void writeSQL(java.sql.SQLOutput) throws java.sql.SQLException;
+  }
+
+  public class SQLDataException extends java.sql.SQLNonTransientException {
+    ctor public SQLDataException();
+    ctor public SQLDataException(String);
+    ctor public SQLDataException(String, String);
+    ctor public SQLDataException(String, String, int);
+    ctor public SQLDataException(Throwable);
+    ctor public SQLDataException(String, Throwable);
+    ctor public SQLDataException(String, String, Throwable);
+    ctor public SQLDataException(String, String, int, Throwable);
+  }
+
+  public class SQLException extends java.lang.Exception implements java.lang.Iterable<java.lang.Throwable> {
+    ctor public SQLException(String, String, int);
+    ctor public SQLException(String, String);
+    ctor public SQLException(String);
+    ctor public SQLException();
+    ctor public SQLException(Throwable);
+    ctor public SQLException(String, Throwable);
+    ctor public SQLException(String, String, Throwable);
+    ctor public SQLException(String, String, int, Throwable);
+    method public int getErrorCode();
+    method public java.sql.SQLException getNextException();
+    method public String getSQLState();
+    method public java.util.Iterator<java.lang.Throwable> iterator();
+    method public void setNextException(java.sql.SQLException);
+  }
+
+  public class SQLFeatureNotSupportedException extends java.sql.SQLNonTransientException {
+    ctor public SQLFeatureNotSupportedException();
+    ctor public SQLFeatureNotSupportedException(String);
+    ctor public SQLFeatureNotSupportedException(String, String);
+    ctor public SQLFeatureNotSupportedException(String, String, int);
+    ctor public SQLFeatureNotSupportedException(Throwable);
+    ctor public SQLFeatureNotSupportedException(String, Throwable);
+    ctor public SQLFeatureNotSupportedException(String, String, Throwable);
+    ctor public SQLFeatureNotSupportedException(String, String, int, Throwable);
+  }
+
+  public interface SQLInput {
+    method public java.sql.Array readArray() throws java.sql.SQLException;
+    method public java.io.InputStream readAsciiStream() throws java.sql.SQLException;
+    method public java.math.BigDecimal readBigDecimal() throws java.sql.SQLException;
+    method public java.io.InputStream readBinaryStream() throws java.sql.SQLException;
+    method public java.sql.Blob readBlob() throws java.sql.SQLException;
+    method public boolean readBoolean() throws java.sql.SQLException;
+    method public byte readByte() throws java.sql.SQLException;
+    method public byte[] readBytes() throws java.sql.SQLException;
+    method public java.io.Reader readCharacterStream() throws java.sql.SQLException;
+    method public java.sql.Clob readClob() throws java.sql.SQLException;
+    method public java.sql.Date readDate() throws java.sql.SQLException;
+    method public double readDouble() throws java.sql.SQLException;
+    method public float readFloat() throws java.sql.SQLException;
+    method public int readInt() throws java.sql.SQLException;
+    method public long readLong() throws java.sql.SQLException;
+    method public java.sql.NClob readNClob() throws java.sql.SQLException;
+    method public String readNString() throws java.sql.SQLException;
+    method public Object readObject() throws java.sql.SQLException;
+    method public java.sql.Ref readRef() throws java.sql.SQLException;
+    method public java.sql.RowId readRowId() throws java.sql.SQLException;
+    method public java.sql.SQLXML readSQLXML() throws java.sql.SQLException;
+    method public short readShort() throws java.sql.SQLException;
+    method public String readString() throws java.sql.SQLException;
+    method public java.sql.Time readTime() throws java.sql.SQLException;
+    method public java.sql.Timestamp readTimestamp() throws java.sql.SQLException;
+    method public java.net.URL readURL() throws java.sql.SQLException;
+    method public boolean wasNull() throws java.sql.SQLException;
+  }
+
+  public class SQLIntegrityConstraintViolationException extends java.sql.SQLNonTransientException {
+    ctor public SQLIntegrityConstraintViolationException();
+    ctor public SQLIntegrityConstraintViolationException(String);
+    ctor public SQLIntegrityConstraintViolationException(String, String);
+    ctor public SQLIntegrityConstraintViolationException(String, String, int);
+    ctor public SQLIntegrityConstraintViolationException(Throwable);
+    ctor public SQLIntegrityConstraintViolationException(String, Throwable);
+    ctor public SQLIntegrityConstraintViolationException(String, String, Throwable);
+    ctor public SQLIntegrityConstraintViolationException(String, String, int, Throwable);
+  }
+
+  public class SQLInvalidAuthorizationSpecException extends java.sql.SQLNonTransientException {
+    ctor public SQLInvalidAuthorizationSpecException();
+    ctor public SQLInvalidAuthorizationSpecException(String);
+    ctor public SQLInvalidAuthorizationSpecException(String, String);
+    ctor public SQLInvalidAuthorizationSpecException(String, String, int);
+    ctor public SQLInvalidAuthorizationSpecException(Throwable);
+    ctor public SQLInvalidAuthorizationSpecException(String, Throwable);
+    ctor public SQLInvalidAuthorizationSpecException(String, String, Throwable);
+    ctor public SQLInvalidAuthorizationSpecException(String, String, int, Throwable);
+  }
+
+  public class SQLNonTransientConnectionException extends java.sql.SQLNonTransientException {
+    ctor public SQLNonTransientConnectionException();
+    ctor public SQLNonTransientConnectionException(String);
+    ctor public SQLNonTransientConnectionException(String, String);
+    ctor public SQLNonTransientConnectionException(String, String, int);
+    ctor public SQLNonTransientConnectionException(Throwable);
+    ctor public SQLNonTransientConnectionException(String, Throwable);
+    ctor public SQLNonTransientConnectionException(String, String, Throwable);
+    ctor public SQLNonTransientConnectionException(String, String, int, Throwable);
+  }
+
+  public class SQLNonTransientException extends java.sql.SQLException {
+    ctor public SQLNonTransientException();
+    ctor public SQLNonTransientException(String);
+    ctor public SQLNonTransientException(String, String);
+    ctor public SQLNonTransientException(String, String, int);
+    ctor public SQLNonTransientException(Throwable);
+    ctor public SQLNonTransientException(String, Throwable);
+    ctor public SQLNonTransientException(String, String, Throwable);
+    ctor public SQLNonTransientException(String, String, int, Throwable);
+  }
+
+  public interface SQLOutput {
+    method public void writeArray(java.sql.Array) throws java.sql.SQLException;
+    method public void writeAsciiStream(java.io.InputStream) throws java.sql.SQLException;
+    method public void writeBigDecimal(java.math.BigDecimal) throws java.sql.SQLException;
+    method public void writeBinaryStream(java.io.InputStream) throws java.sql.SQLException;
+    method public void writeBlob(java.sql.Blob) throws java.sql.SQLException;
+    method public void writeBoolean(boolean) throws java.sql.SQLException;
+    method public void writeByte(byte) throws java.sql.SQLException;
+    method public void writeBytes(byte[]) throws java.sql.SQLException;
+    method public void writeCharacterStream(java.io.Reader) throws java.sql.SQLException;
+    method public void writeClob(java.sql.Clob) throws java.sql.SQLException;
+    method public void writeDate(java.sql.Date) throws java.sql.SQLException;
+    method public void writeDouble(double) throws java.sql.SQLException;
+    method public void writeFloat(float) throws java.sql.SQLException;
+    method public void writeInt(int) throws java.sql.SQLException;
+    method public void writeLong(long) throws java.sql.SQLException;
+    method public void writeNClob(java.sql.NClob) throws java.sql.SQLException;
+    method public void writeNString(String) throws java.sql.SQLException;
+    method public void writeObject(java.sql.SQLData) throws java.sql.SQLException;
+    method public void writeRef(java.sql.Ref) throws java.sql.SQLException;
+    method public void writeRowId(java.sql.RowId) throws java.sql.SQLException;
+    method public void writeSQLXML(java.sql.SQLXML) throws java.sql.SQLException;
+    method public void writeShort(short) throws java.sql.SQLException;
+    method public void writeString(String) throws java.sql.SQLException;
+    method public void writeStruct(java.sql.Struct) throws java.sql.SQLException;
+    method public void writeTime(java.sql.Time) throws java.sql.SQLException;
+    method public void writeTimestamp(java.sql.Timestamp) throws java.sql.SQLException;
+    method public void writeURL(java.net.URL) throws java.sql.SQLException;
+  }
+
+  public final class SQLPermission extends java.security.BasicPermission {
+    ctor public SQLPermission(String);
+    ctor public SQLPermission(String, String);
+  }
+
+  public class SQLRecoverableException extends java.sql.SQLException {
+    ctor public SQLRecoverableException();
+    ctor public SQLRecoverableException(String);
+    ctor public SQLRecoverableException(String, String);
+    ctor public SQLRecoverableException(String, String, int);
+    ctor public SQLRecoverableException(Throwable);
+    ctor public SQLRecoverableException(String, Throwable);
+    ctor public SQLRecoverableException(String, String, Throwable);
+    ctor public SQLRecoverableException(String, String, int, Throwable);
+  }
+
+  public class SQLSyntaxErrorException extends java.sql.SQLNonTransientException {
+    ctor public SQLSyntaxErrorException();
+    ctor public SQLSyntaxErrorException(String);
+    ctor public SQLSyntaxErrorException(String, String);
+    ctor public SQLSyntaxErrorException(String, String, int);
+    ctor public SQLSyntaxErrorException(Throwable);
+    ctor public SQLSyntaxErrorException(String, Throwable);
+    ctor public SQLSyntaxErrorException(String, String, Throwable);
+    ctor public SQLSyntaxErrorException(String, String, int, Throwable);
+  }
+
+  public class SQLTimeoutException extends java.sql.SQLTransientException {
+    ctor public SQLTimeoutException();
+    ctor public SQLTimeoutException(String);
+    ctor public SQLTimeoutException(String, String);
+    ctor public SQLTimeoutException(String, String, int);
+    ctor public SQLTimeoutException(Throwable);
+    ctor public SQLTimeoutException(String, Throwable);
+    ctor public SQLTimeoutException(String, String, Throwable);
+    ctor public SQLTimeoutException(String, String, int, Throwable);
+  }
+
+  public class SQLTransactionRollbackException extends java.sql.SQLTransientException {
+    ctor public SQLTransactionRollbackException();
+    ctor public SQLTransactionRollbackException(String);
+    ctor public SQLTransactionRollbackException(String, String);
+    ctor public SQLTransactionRollbackException(String, String, int);
+    ctor public SQLTransactionRollbackException(Throwable);
+    ctor public SQLTransactionRollbackException(String, Throwable);
+    ctor public SQLTransactionRollbackException(String, String, Throwable);
+    ctor public SQLTransactionRollbackException(String, String, int, Throwable);
+  }
+
+  public class SQLTransientConnectionException extends java.sql.SQLTransientException {
+    ctor public SQLTransientConnectionException();
+    ctor public SQLTransientConnectionException(String);
+    ctor public SQLTransientConnectionException(String, String);
+    ctor public SQLTransientConnectionException(String, String, int);
+    ctor public SQLTransientConnectionException(Throwable);
+    ctor public SQLTransientConnectionException(String, Throwable);
+    ctor public SQLTransientConnectionException(String, String, Throwable);
+    ctor public SQLTransientConnectionException(String, String, int, Throwable);
+  }
+
+  public class SQLTransientException extends java.sql.SQLException {
+    ctor public SQLTransientException();
+    ctor public SQLTransientException(String);
+    ctor public SQLTransientException(String, String);
+    ctor public SQLTransientException(String, String, int);
+    ctor public SQLTransientException(Throwable);
+    ctor public SQLTransientException(String, Throwable);
+    ctor public SQLTransientException(String, String, Throwable);
+    ctor public SQLTransientException(String, String, int, Throwable);
+  }
+
+  public class SQLWarning extends java.sql.SQLException {
+    ctor public SQLWarning(String, String, int);
+    ctor public SQLWarning(String, String);
+    ctor public SQLWarning(String);
+    ctor public SQLWarning();
+    ctor public SQLWarning(Throwable);
+    ctor public SQLWarning(String, Throwable);
+    ctor public SQLWarning(String, String, Throwable);
+    ctor public SQLWarning(String, String, int, Throwable);
+    method public java.sql.SQLWarning getNextWarning();
+    method public void setNextWarning(java.sql.SQLWarning);
+  }
+
+  public interface SQLXML {
+    method public void free() throws java.sql.SQLException;
+    method public java.io.InputStream getBinaryStream() throws java.sql.SQLException;
+    method public java.io.Reader getCharacterStream() throws java.sql.SQLException;
+    method public <T extends javax.xml.transform.Source> T getSource(Class<T>) throws java.sql.SQLException;
+    method public String getString() throws java.sql.SQLException;
+    method public java.io.OutputStream setBinaryStream() throws java.sql.SQLException;
+    method public java.io.Writer setCharacterStream() throws java.sql.SQLException;
+    method public <T extends javax.xml.transform.Result> T setResult(Class<T>) throws java.sql.SQLException;
+    method public void setString(String) throws java.sql.SQLException;
+  }
+
+  public interface Savepoint {
+    method public int getSavepointId() throws java.sql.SQLException;
+    method public String getSavepointName() throws java.sql.SQLException;
+  }
+
+  public interface Statement extends java.sql.Wrapper java.lang.AutoCloseable {
+    method public void addBatch(String) throws java.sql.SQLException;
+    method public void cancel() throws java.sql.SQLException;
+    method public void clearBatch() throws java.sql.SQLException;
+    method public void clearWarnings() throws java.sql.SQLException;
+    method public void close() throws java.sql.SQLException;
+    method public boolean execute(String) throws java.sql.SQLException;
+    method public boolean execute(String, int) throws java.sql.SQLException;
+    method public boolean execute(String, int[]) throws java.sql.SQLException;
+    method public boolean execute(String, String[]) throws java.sql.SQLException;
+    method public int[] executeBatch() throws java.sql.SQLException;
+    method public java.sql.ResultSet executeQuery(String) throws java.sql.SQLException;
+    method public int executeUpdate(String) throws java.sql.SQLException;
+    method public int executeUpdate(String, int) throws java.sql.SQLException;
+    method public int executeUpdate(String, int[]) throws java.sql.SQLException;
+    method public int executeUpdate(String, String[]) throws java.sql.SQLException;
+    method public java.sql.Connection getConnection() throws java.sql.SQLException;
+    method public int getFetchDirection() throws java.sql.SQLException;
+    method public int getFetchSize() throws java.sql.SQLException;
+    method public java.sql.ResultSet getGeneratedKeys() throws java.sql.SQLException;
+    method public int getMaxFieldSize() throws java.sql.SQLException;
+    method public int getMaxRows() throws java.sql.SQLException;
+    method public boolean getMoreResults() throws java.sql.SQLException;
+    method public boolean getMoreResults(int) throws java.sql.SQLException;
+    method public int getQueryTimeout() throws java.sql.SQLException;
+    method public java.sql.ResultSet getResultSet() throws java.sql.SQLException;
+    method public int getResultSetConcurrency() throws java.sql.SQLException;
+    method public int getResultSetHoldability() throws java.sql.SQLException;
+    method public int getResultSetType() throws java.sql.SQLException;
+    method public int getUpdateCount() throws java.sql.SQLException;
+    method public java.sql.SQLWarning getWarnings() throws java.sql.SQLException;
+    method public boolean isClosed() throws java.sql.SQLException;
+    method public boolean isPoolable() throws java.sql.SQLException;
+    method public void setCursorName(String) throws java.sql.SQLException;
+    method public void setEscapeProcessing(boolean) throws java.sql.SQLException;
+    method public void setFetchDirection(int) throws java.sql.SQLException;
+    method public void setFetchSize(int) throws java.sql.SQLException;
+    method public void setMaxFieldSize(int) throws java.sql.SQLException;
+    method public void setMaxRows(int) throws java.sql.SQLException;
+    method public void setPoolable(boolean) throws java.sql.SQLException;
+    method public void setQueryTimeout(int) throws java.sql.SQLException;
+    field public static final int CLOSE_ALL_RESULTS = 3; // 0x3
+    field public static final int CLOSE_CURRENT_RESULT = 1; // 0x1
+    field public static final int EXECUTE_FAILED = -3; // 0xfffffffd
+    field public static final int KEEP_CURRENT_RESULT = 2; // 0x2
+    field public static final int NO_GENERATED_KEYS = 2; // 0x2
+    field public static final int RETURN_GENERATED_KEYS = 1; // 0x1
+    field public static final int SUCCESS_NO_INFO = -2; // 0xfffffffe
+  }
+
+  public interface Struct {
+    method public Object[] getAttributes() throws java.sql.SQLException;
+    method public Object[] getAttributes(java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
+    method public String getSQLTypeName() throws java.sql.SQLException;
+  }
+
+  public class Time extends java.util.Date {
+    ctor @Deprecated public Time(int, int, int);
+    ctor public Time(long);
+    method public static java.sql.Time valueOf(String);
+  }
+
+  public class Timestamp extends java.util.Date {
+    ctor @Deprecated public Timestamp(int, int, int, int, int, int, int);
+    ctor public Timestamp(long);
+    method public boolean after(java.sql.Timestamp);
+    method public boolean before(java.sql.Timestamp);
+    method public int compareTo(java.sql.Timestamp);
+    method public boolean equals(java.sql.Timestamp);
+    method public int getNanos();
+    method public void setNanos(int);
+    method public static java.sql.Timestamp valueOf(String);
+  }
+
+  public class Types {
+    field public static final int ARRAY = 2003; // 0x7d3
+    field public static final int BIGINT = -5; // 0xfffffffb
+    field public static final int BINARY = -2; // 0xfffffffe
+    field public static final int BIT = -7; // 0xfffffff9
+    field public static final int BLOB = 2004; // 0x7d4
+    field public static final int BOOLEAN = 16; // 0x10
+    field public static final int CHAR = 1; // 0x1
+    field public static final int CLOB = 2005; // 0x7d5
+    field public static final int DATALINK = 70; // 0x46
+    field public static final int DATE = 91; // 0x5b
+    field public static final int DECIMAL = 3; // 0x3
+    field public static final int DISTINCT = 2001; // 0x7d1
+    field public static final int DOUBLE = 8; // 0x8
+    field public static final int FLOAT = 6; // 0x6
+    field public static final int INTEGER = 4; // 0x4
+    field public static final int JAVA_OBJECT = 2000; // 0x7d0
+    field public static final int LONGNVARCHAR = -16; // 0xfffffff0
+    field public static final int LONGVARBINARY = -4; // 0xfffffffc
+    field public static final int LONGVARCHAR = -1; // 0xffffffff
+    field public static final int NCHAR = -15; // 0xfffffff1
+    field public static final int NCLOB = 2011; // 0x7db
+    field public static final int NULL = 0; // 0x0
+    field public static final int NUMERIC = 2; // 0x2
+    field public static final int NVARCHAR = -9; // 0xfffffff7
+    field public static final int OTHER = 1111; // 0x457
+    field public static final int REAL = 7; // 0x7
+    field public static final int REF = 2006; // 0x7d6
+    field public static final int ROWID = -8; // 0xfffffff8
+    field public static final int SMALLINT = 5; // 0x5
+    field public static final int SQLXML = 2009; // 0x7d9
+    field public static final int STRUCT = 2002; // 0x7d2
+    field public static final int TIME = 92; // 0x5c
+    field public static final int TIMESTAMP = 93; // 0x5d
+    field public static final int TINYINT = -6; // 0xfffffffa
+    field public static final int VARBINARY = -3; // 0xfffffffd
+    field public static final int VARCHAR = 12; // 0xc
+  }
+
+  public interface Wrapper {
+    method public boolean isWrapperFor(Class<?>) throws java.sql.SQLException;
+    method public <T> T unwrap(Class<T>) throws java.sql.SQLException;
+  }
+
+}
+
+package java.text {
+
+  public class Annotation {
+    ctor public Annotation(Object);
+    method public Object getValue();
+  }
+
+  public interface AttributedCharacterIterator extends java.text.CharacterIterator {
+    method public java.util.Set<java.text.AttributedCharacterIterator.Attribute> getAllAttributeKeys();
+    method public Object getAttribute(java.text.AttributedCharacterIterator.Attribute);
+    method public java.util.Map<java.text.AttributedCharacterIterator.Attribute,java.lang.Object> getAttributes();
+    method public int getRunLimit();
+    method public int getRunLimit(java.text.AttributedCharacterIterator.Attribute);
+    method public int getRunLimit(java.util.Set<? extends java.text.AttributedCharacterIterator.Attribute>);
+    method public int getRunStart();
+    method public int getRunStart(java.text.AttributedCharacterIterator.Attribute);
+    method public int getRunStart(java.util.Set<? extends java.text.AttributedCharacterIterator.Attribute>);
+  }
+
+  public static class AttributedCharacterIterator.Attribute implements java.io.Serializable {
+    ctor protected AttributedCharacterIterator.Attribute(String);
+    method public final boolean equals(Object);
+    method protected String getName();
+    method public final int hashCode();
+    method protected Object readResolve() throws java.io.InvalidObjectException;
+    field public static final java.text.AttributedCharacterIterator.Attribute INPUT_METHOD_SEGMENT;
+    field public static final java.text.AttributedCharacterIterator.Attribute LANGUAGE;
+    field public static final java.text.AttributedCharacterIterator.Attribute READING;
+  }
+
+  public class AttributedString {
+    ctor public AttributedString(String);
+    ctor public AttributedString(String, java.util.Map<? extends java.text.AttributedCharacterIterator.Attribute,?>);
+    ctor public AttributedString(java.text.AttributedCharacterIterator);
+    ctor public AttributedString(java.text.AttributedCharacterIterator, int, int);
+    ctor public AttributedString(java.text.AttributedCharacterIterator, int, int, java.text.AttributedCharacterIterator.Attribute[]);
+    method public void addAttribute(java.text.AttributedCharacterIterator.Attribute, Object);
+    method public void addAttribute(java.text.AttributedCharacterIterator.Attribute, Object, int, int);
+    method public void addAttributes(java.util.Map<? extends java.text.AttributedCharacterIterator.Attribute,?>, int, int);
+    method public java.text.AttributedCharacterIterator getIterator();
+    method public java.text.AttributedCharacterIterator getIterator(java.text.AttributedCharacterIterator.Attribute[]);
+    method public java.text.AttributedCharacterIterator getIterator(java.text.AttributedCharacterIterator.Attribute[], int, int);
+  }
+
+  public final class Bidi {
+    ctor public Bidi(String, int);
+    ctor public Bidi(java.text.AttributedCharacterIterator);
+    ctor public Bidi(char[], int, byte[], int, int, int);
+    method public boolean baseIsLeftToRight();
+    method public java.text.Bidi createLineBidi(int, int);
+    method public int getBaseLevel();
+    method public int getLength();
+    method public int getLevelAt(int);
+    method public int getRunCount();
+    method public int getRunLevel(int);
+    method public int getRunLimit(int);
+    method public int getRunStart(int);
+    method public boolean isLeftToRight();
+    method public boolean isMixed();
+    method public boolean isRightToLeft();
+    method public static void reorderVisually(byte[], int, Object[], int, int);
+    method public static boolean requiresBidi(char[], int, int);
+    field public static final int DIRECTION_DEFAULT_LEFT_TO_RIGHT = -2; // 0xfffffffe
+    field public static final int DIRECTION_DEFAULT_RIGHT_TO_LEFT = -1; // 0xffffffff
+    field public static final int DIRECTION_LEFT_TO_RIGHT = 0; // 0x0
+    field public static final int DIRECTION_RIGHT_TO_LEFT = 1; // 0x1
+  }
+
+  public abstract class BreakIterator implements java.lang.Cloneable {
+    ctor protected BreakIterator();
+    method public Object clone();
+    method public abstract int current();
+    method public abstract int first();
+    method public abstract int following(int);
+    method public static java.util.Locale[] getAvailableLocales();
+    method public static java.text.BreakIterator getCharacterInstance();
+    method public static java.text.BreakIterator getCharacterInstance(java.util.Locale);
+    method public static java.text.BreakIterator getLineInstance();
+    method public static java.text.BreakIterator getLineInstance(java.util.Locale);
+    method public static java.text.BreakIterator getSentenceInstance();
+    method public static java.text.BreakIterator getSentenceInstance(java.util.Locale);
+    method public abstract java.text.CharacterIterator getText();
+    method public static java.text.BreakIterator getWordInstance();
+    method public static java.text.BreakIterator getWordInstance(java.util.Locale);
+    method public boolean isBoundary(int);
+    method public abstract int last();
+    method public abstract int next(int);
+    method public abstract int next();
+    method public int preceding(int);
+    method public abstract int previous();
+    method public void setText(String);
+    method public abstract void setText(java.text.CharacterIterator);
+    field public static final int DONE = -1; // 0xffffffff
+  }
+
+  public interface CharacterIterator extends java.lang.Cloneable {
+    method public Object clone();
+    method public char current();
+    method public char first();
+    method public int getBeginIndex();
+    method public int getEndIndex();
+    method public int getIndex();
+    method public char last();
+    method public char next();
+    method public char previous();
+    method public char setIndex(int);
+    field public static final char DONE = 65535; // 0xffff '\uffff'
+  }
+
+  public class ChoiceFormat extends java.text.NumberFormat {
+    ctor public ChoiceFormat(String);
+    ctor public ChoiceFormat(double[], String[]);
+    method public void applyPattern(String);
+    method public StringBuffer format(long, StringBuffer, java.text.FieldPosition);
+    method public StringBuffer format(double, StringBuffer, java.text.FieldPosition);
+    method public Object[] getFormats();
+    method public double[] getLimits();
+    method public static final double nextDouble(double);
+    method public static double nextDouble(double, boolean);
+    method public Number parse(String, java.text.ParsePosition);
+    method public static final double previousDouble(double);
+    method public void setChoices(double[], String[]);
+    method public String toPattern();
+  }
+
+  public final class CollationElementIterator {
+    method public int getMaxExpansion(int);
+    method public int getOffset();
+    method public int next();
+    method public int previous();
+    method public static int primaryOrder(int);
+    method public void reset();
+    method public static short secondaryOrder(int);
+    method public void setOffset(int);
+    method public void setText(String);
+    method public void setText(java.text.CharacterIterator);
+    method public static short tertiaryOrder(int);
+    field public static final int NULLORDER = -1; // 0xffffffff
+  }
+
+  public abstract class CollationKey implements java.lang.Comparable<java.text.CollationKey> {
+    ctor protected CollationKey(String);
+    method public abstract int compareTo(java.text.CollationKey);
+    method public String getSourceString();
+    method public abstract byte[] toByteArray();
+  }
+
+  public abstract class Collator implements java.lang.Cloneable java.util.Comparator<java.lang.Object> {
+    ctor protected Collator();
+    method public Object clone();
+    method public abstract int compare(String, String);
+    method public int compare(Object, Object);
+    method public boolean equals(String, String);
+    method public static java.util.Locale[] getAvailableLocales();
+    method public abstract java.text.CollationKey getCollationKey(String);
+    method public int getDecomposition();
+    method public static java.text.Collator getInstance();
+    method public static java.text.Collator getInstance(java.util.Locale);
+    method public int getStrength();
+    method public abstract int hashCode();
+    method public void setDecomposition(int);
+    method public void setStrength(int);
+    field public static final int CANONICAL_DECOMPOSITION = 1; // 0x1
+    field public static final int FULL_DECOMPOSITION = 2; // 0x2
+    field public static final int IDENTICAL = 3; // 0x3
+    field public static final int NO_DECOMPOSITION = 0; // 0x0
+    field public static final int PRIMARY = 0; // 0x0
+    field public static final int SECONDARY = 1; // 0x1
+    field public static final int TERTIARY = 2; // 0x2
+  }
+
+  public abstract class DateFormat extends java.text.Format {
+    ctor protected DateFormat();
+    method @NonNull public final StringBuffer format(@NonNull Object, @NonNull StringBuffer, @NonNull java.text.FieldPosition);
+    method @NonNull public abstract StringBuffer format(@NonNull java.util.Date, @NonNull StringBuffer, @NonNull java.text.FieldPosition);
+    method @NonNull public final String format(@NonNull java.util.Date);
+    method @NonNull public static java.util.Locale[] getAvailableLocales();
+    method @NonNull public java.util.Calendar getCalendar();
+    method @NonNull public static final java.text.DateFormat getDateInstance();
+    method @NonNull public static final java.text.DateFormat getDateInstance(int);
+    method @NonNull public static final java.text.DateFormat getDateInstance(int, @NonNull java.util.Locale);
+    method @NonNull public static final java.text.DateFormat getDateTimeInstance();
+    method @NonNull public static final java.text.DateFormat getDateTimeInstance(int, int);
+    method @NonNull public static final java.text.DateFormat getDateTimeInstance(int, int, @NonNull java.util.Locale);
+    method @NonNull public static final java.text.DateFormat getInstance();
+    method @NonNull public java.text.NumberFormat getNumberFormat();
+    method @NonNull public static final java.text.DateFormat getTimeInstance();
+    method @NonNull public static final java.text.DateFormat getTimeInstance(int);
+    method @NonNull public static final java.text.DateFormat getTimeInstance(int, @NonNull java.util.Locale);
+    method @NonNull public java.util.TimeZone getTimeZone();
+    method public boolean isLenient();
+    method @Nullable public java.util.Date parse(@NonNull String) throws java.text.ParseException;
+    method @Nullable public abstract java.util.Date parse(@NonNull String, @NonNull java.text.ParsePosition);
+    method @Nullable public Object parseObject(@NonNull String, @NonNull java.text.ParsePosition);
+    method public void setCalendar(@NonNull java.util.Calendar);
+    method public void setLenient(boolean);
+    method public void setNumberFormat(@NonNull java.text.NumberFormat);
+    method public void setTimeZone(@NonNull java.util.TimeZone);
+    field public static final int AM_PM_FIELD = 14; // 0xe
+    field public static final int DATE_FIELD = 3; // 0x3
+    field public static final int DAY_OF_WEEK_FIELD = 9; // 0x9
+    field public static final int DAY_OF_WEEK_IN_MONTH_FIELD = 11; // 0xb
+    field public static final int DAY_OF_YEAR_FIELD = 10; // 0xa
+    field public static final int DEFAULT = 2; // 0x2
+    field public static final int ERA_FIELD = 0; // 0x0
+    field public static final int FULL = 0; // 0x0
+    field public static final int HOUR0_FIELD = 16; // 0x10
+    field public static final int HOUR1_FIELD = 15; // 0xf
+    field public static final int HOUR_OF_DAY0_FIELD = 5; // 0x5
+    field public static final int HOUR_OF_DAY1_FIELD = 4; // 0x4
+    field public static final int LONG = 1; // 0x1
+    field public static final int MEDIUM = 2; // 0x2
+    field public static final int MILLISECOND_FIELD = 8; // 0x8
+    field public static final int MINUTE_FIELD = 6; // 0x6
+    field public static final int MONTH_FIELD = 2; // 0x2
+    field public static final int SECOND_FIELD = 7; // 0x7
+    field public static final int SHORT = 3; // 0x3
+    field public static final int TIMEZONE_FIELD = 17; // 0x11
+    field public static final int WEEK_OF_MONTH_FIELD = 13; // 0xd
+    field public static final int WEEK_OF_YEAR_FIELD = 12; // 0xc
+    field public static final int YEAR_FIELD = 1; // 0x1
+    field @NonNull protected java.util.Calendar calendar;
+    field @NonNull protected java.text.NumberFormat numberFormat;
+  }
+
+  public static class DateFormat.Field extends java.text.Format.Field {
+    ctor protected DateFormat.Field(@NonNull String, int);
+    method public int getCalendarField();
+    method @NonNull public static java.text.DateFormat.Field ofCalendarField(int);
+    field @NonNull public static final java.text.DateFormat.Field AM_PM;
+    field @NonNull public static final java.text.DateFormat.Field DAY_OF_MONTH;
+    field @NonNull public static final java.text.DateFormat.Field DAY_OF_WEEK;
+    field @NonNull public static final java.text.DateFormat.Field DAY_OF_WEEK_IN_MONTH;
+    field @NonNull public static final java.text.DateFormat.Field DAY_OF_YEAR;
+    field @NonNull public static final java.text.DateFormat.Field ERA;
+    field @NonNull public static final java.text.DateFormat.Field HOUR0;
+    field @NonNull public static final java.text.DateFormat.Field HOUR1;
+    field @NonNull public static final java.text.DateFormat.Field HOUR_OF_DAY0;
+    field @NonNull public static final java.text.DateFormat.Field HOUR_OF_DAY1;
+    field @NonNull public static final java.text.DateFormat.Field MILLISECOND;
+    field @NonNull public static final java.text.DateFormat.Field MINUTE;
+    field @NonNull public static final java.text.DateFormat.Field MONTH;
+    field @NonNull public static final java.text.DateFormat.Field SECOND;
+    field @NonNull public static final java.text.DateFormat.Field TIME_ZONE;
+    field @NonNull public static final java.text.DateFormat.Field WEEK_OF_MONTH;
+    field @NonNull public static final java.text.DateFormat.Field WEEK_OF_YEAR;
+    field @NonNull public static final java.text.DateFormat.Field YEAR;
+  }
+
+  public class DateFormatSymbols implements java.lang.Cloneable java.io.Serializable {
+    ctor public DateFormatSymbols();
+    ctor public DateFormatSymbols(java.util.Locale);
+    method public Object clone();
+    method public String[] getAmPmStrings();
+    method public static java.util.Locale[] getAvailableLocales();
+    method public String[] getEras();
+    method public static final java.text.DateFormatSymbols getInstance();
+    method public static final java.text.DateFormatSymbols getInstance(java.util.Locale);
+    method public String getLocalPatternChars();
+    method public String[] getMonths();
+    method public String[] getShortMonths();
+    method public String[] getShortWeekdays();
+    method public String[] getWeekdays();
+    method public String[][] getZoneStrings();
+    method public void setAmPmStrings(String[]);
+    method public void setEras(String[]);
+    method public void setLocalPatternChars(String);
+    method public void setMonths(String[]);
+    method public void setShortMonths(String[]);
+    method public void setShortWeekdays(String[]);
+    method public void setWeekdays(String[]);
+    method public void setZoneStrings(String[][]);
+  }
+
+  public class DecimalFormat extends java.text.NumberFormat {
+    ctor public DecimalFormat();
+    ctor public DecimalFormat(String);
+    ctor public DecimalFormat(String, java.text.DecimalFormatSymbols);
+    method public void applyLocalizedPattern(String);
+    method public void applyPattern(String);
+    method public final StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
+    method public StringBuffer format(double, StringBuffer, java.text.FieldPosition);
+    method public StringBuffer format(long, StringBuffer, java.text.FieldPosition);
+    method public java.text.DecimalFormatSymbols getDecimalFormatSymbols();
+    method public int getGroupingSize();
+    method public int getMultiplier();
+    method public String getNegativePrefix();
+    method public String getNegativeSuffix();
+    method public String getPositivePrefix();
+    method public String getPositiveSuffix();
+    method public boolean isDecimalSeparatorAlwaysShown();
+    method public boolean isParseBigDecimal();
+    method public Number parse(String, java.text.ParsePosition);
+    method public void setDecimalFormatSymbols(java.text.DecimalFormatSymbols);
+    method public void setDecimalSeparatorAlwaysShown(boolean);
+    method public void setGroupingSize(int);
+    method public void setMultiplier(int);
+    method public void setNegativePrefix(String);
+    method public void setNegativeSuffix(String);
+    method public void setParseBigDecimal(boolean);
+    method public void setPositivePrefix(String);
+    method public void setPositiveSuffix(String);
+    method public String toLocalizedPattern();
+    method public String toPattern();
+  }
+
+  public class DecimalFormatSymbols implements java.lang.Cloneable java.io.Serializable {
+    ctor public DecimalFormatSymbols();
+    ctor public DecimalFormatSymbols(java.util.Locale);
+    method public Object clone();
+    method public static java.util.Locale[] getAvailableLocales();
+    method public java.util.Currency getCurrency();
+    method public String getCurrencySymbol();
+    method public char getDecimalSeparator();
+    method public char getDigit();
+    method public String getExponentSeparator();
+    method public char getGroupingSeparator();
+    method public String getInfinity();
+    method public static final java.text.DecimalFormatSymbols getInstance();
+    method public static final java.text.DecimalFormatSymbols getInstance(java.util.Locale);
+    method public String getInternationalCurrencySymbol();
+    method public char getMinusSign();
+    method public char getMonetaryDecimalSeparator();
+    method public String getNaN();
+    method public char getPatternSeparator();
+    method public char getPerMill();
+    method public char getPercent();
+    method public char getZeroDigit();
+    method public void setCurrency(java.util.Currency);
+    method public void setCurrencySymbol(String);
+    method public void setDecimalSeparator(char);
+    method public void setDigit(char);
+    method public void setExponentSeparator(String);
+    method public void setGroupingSeparator(char);
+    method public void setInfinity(String);
+    method public void setInternationalCurrencySymbol(String);
+    method public void setMinusSign(char);
+    method public void setMonetaryDecimalSeparator(char);
+    method public void setNaN(String);
+    method public void setPatternSeparator(char);
+    method public void setPerMill(char);
+    method public void setPercent(char);
+    method public void setZeroDigit(char);
+  }
+
+  public class FieldPosition {
+    ctor public FieldPosition(int);
+    ctor public FieldPosition(java.text.Format.Field);
+    ctor public FieldPosition(java.text.Format.Field, int);
+    method public int getBeginIndex();
+    method public int getEndIndex();
+    method public int getField();
+    method public java.text.Format.Field getFieldAttribute();
+    method public void setBeginIndex(int);
+    method public void setEndIndex(int);
+  }
+
+  public abstract class Format implements java.lang.Cloneable java.io.Serializable {
+    ctor protected Format();
+    method public Object clone();
+    method public final String format(Object);
+    method public abstract StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
+    method public java.text.AttributedCharacterIterator formatToCharacterIterator(Object);
+    method public abstract Object parseObject(String, java.text.ParsePosition);
+    method public Object parseObject(String) throws java.text.ParseException;
+  }
+
+  public static class Format.Field extends java.text.AttributedCharacterIterator.Attribute {
+    ctor protected Format.Field(String);
+  }
+
+  public class MessageFormat extends java.text.Format {
+    ctor public MessageFormat(String);
+    ctor public MessageFormat(String, java.util.Locale);
+    method public void applyPattern(String);
+    method public final StringBuffer format(Object[], StringBuffer, java.text.FieldPosition);
+    method public static String format(String, java.lang.Object...);
+    method public final StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
+    method public java.text.Format[] getFormats();
+    method public java.text.Format[] getFormatsByArgumentIndex();
+    method public java.util.Locale getLocale();
+    method public Object[] parse(String, java.text.ParsePosition);
+    method public Object[] parse(String) throws java.text.ParseException;
+    method public Object parseObject(String, java.text.ParsePosition);
+    method public void setFormat(int, java.text.Format);
+    method public void setFormatByArgumentIndex(int, java.text.Format);
+    method public void setFormats(java.text.Format[]);
+    method public void setFormatsByArgumentIndex(java.text.Format[]);
+    method public void setLocale(java.util.Locale);
+    method public String toPattern();
+  }
+
+  public static class MessageFormat.Field extends java.text.Format.Field {
+    ctor protected MessageFormat.Field(String);
+    field public static final java.text.MessageFormat.Field ARGUMENT;
+  }
+
+  public final class Normalizer {
+    method public static boolean isNormalized(CharSequence, java.text.Normalizer.Form);
+    method public static String normalize(CharSequence, java.text.Normalizer.Form);
+  }
+
+  public enum Normalizer.Form {
+    enum_constant public static final java.text.Normalizer.Form NFC;
+    enum_constant public static final java.text.Normalizer.Form NFD;
+    enum_constant public static final java.text.Normalizer.Form NFKC;
+    enum_constant public static final java.text.Normalizer.Form NFKD;
+  }
+
+  public abstract class NumberFormat extends java.text.Format {
+    ctor protected NumberFormat();
+    method @NonNull public StringBuffer format(@NonNull Object, @NonNull StringBuffer, @NonNull java.text.FieldPosition);
+    method @NonNull public final String format(double);
+    method @NonNull public final String format(long);
+    method @NonNull public abstract StringBuffer format(double, @NonNull StringBuffer, @NonNull java.text.FieldPosition);
+    method @NonNull public abstract StringBuffer format(long, @NonNull StringBuffer, @NonNull java.text.FieldPosition);
+    method @NonNull public static java.util.Locale[] getAvailableLocales();
+    method @Nullable public java.util.Currency getCurrency();
+    method @NonNull public static final java.text.NumberFormat getCurrencyInstance();
+    method @NonNull public static java.text.NumberFormat getCurrencyInstance(@NonNull java.util.Locale);
+    method @NonNull public static final java.text.NumberFormat getInstance();
+    method @NonNull public static java.text.NumberFormat getInstance(@NonNull java.util.Locale);
+    method @NonNull public static final java.text.NumberFormat getIntegerInstance();
+    method @NonNull public static java.text.NumberFormat getIntegerInstance(@NonNull java.util.Locale);
+    method public int getMaximumFractionDigits();
+    method public int getMaximumIntegerDigits();
+    method public int getMinimumFractionDigits();
+    method public int getMinimumIntegerDigits();
+    method @NonNull public static final java.text.NumberFormat getNumberInstance();
+    method @NonNull public static java.text.NumberFormat getNumberInstance(@NonNull java.util.Locale);
+    method @NonNull public static final java.text.NumberFormat getPercentInstance();
+    method @NonNull public static java.text.NumberFormat getPercentInstance(@NonNull java.util.Locale);
+    method @NonNull public java.math.RoundingMode getRoundingMode();
+    method public boolean isGroupingUsed();
+    method public boolean isParseIntegerOnly();
+    method @Nullable public abstract Number parse(@NonNull String, @NonNull java.text.ParsePosition);
+    method @Nullable public Number parse(@NonNull String) throws java.text.ParseException;
+    method @Nullable public final Object parseObject(@NonNull String, @NonNull java.text.ParsePosition);
+    method public void setCurrency(@NonNull java.util.Currency);
+    method public void setGroupingUsed(boolean);
+    method public void setMaximumFractionDigits(int);
+    method public void setMaximumIntegerDigits(int);
+    method public void setMinimumFractionDigits(int);
+    method public void setMinimumIntegerDigits(int);
+    method public void setParseIntegerOnly(boolean);
+    method public void setRoundingMode(@Nullable java.math.RoundingMode);
+    field public static final int FRACTION_FIELD = 1; // 0x1
+    field public static final int INTEGER_FIELD = 0; // 0x0
+  }
+
+  public static class NumberFormat.Field extends java.text.Format.Field {
+    ctor protected NumberFormat.Field(@NonNull String);
+    field @NonNull public static final java.text.NumberFormat.Field CURRENCY;
+    field @NonNull public static final java.text.NumberFormat.Field DECIMAL_SEPARATOR;
+    field @NonNull public static final java.text.NumberFormat.Field EXPONENT;
+    field @NonNull public static final java.text.NumberFormat.Field EXPONENT_SIGN;
+    field @NonNull public static final java.text.NumberFormat.Field EXPONENT_SYMBOL;
+    field @NonNull public static final java.text.NumberFormat.Field FRACTION;
+    field @NonNull public static final java.text.NumberFormat.Field GROUPING_SEPARATOR;
+    field @NonNull public static final java.text.NumberFormat.Field INTEGER;
+    field @NonNull public static final java.text.NumberFormat.Field PERCENT;
+    field @NonNull public static final java.text.NumberFormat.Field PERMILLE;
+    field @NonNull public static final java.text.NumberFormat.Field SIGN;
+  }
+
+  public class ParseException extends java.lang.Exception {
+    ctor public ParseException(String, int);
+    method public int getErrorOffset();
+  }
+
+  public class ParsePosition {
+    ctor public ParsePosition(int);
+    method public int getErrorIndex();
+    method public int getIndex();
+    method public void setErrorIndex(int);
+    method public void setIndex(int);
+  }
+
+  public class RuleBasedCollator extends java.text.Collator {
+    ctor public RuleBasedCollator(String) throws java.text.ParseException;
+    method public int compare(String, String);
+    method public java.text.CollationElementIterator getCollationElementIterator(String);
+    method public java.text.CollationElementIterator getCollationElementIterator(java.text.CharacterIterator);
+    method public java.text.CollationKey getCollationKey(String);
+    method public String getRules();
+  }
+
+  public class SimpleDateFormat extends java.text.DateFormat {
+    ctor public SimpleDateFormat();
+    ctor public SimpleDateFormat(String);
+    ctor public SimpleDateFormat(String, java.util.Locale);
+    ctor public SimpleDateFormat(String, java.text.DateFormatSymbols);
+    method public void applyLocalizedPattern(String);
+    method public void applyPattern(String);
+    method public StringBuffer format(java.util.Date, StringBuffer, java.text.FieldPosition);
+    method public java.util.Date get2DigitYearStart();
+    method public java.text.DateFormatSymbols getDateFormatSymbols();
+    method public java.util.Date parse(String, java.text.ParsePosition);
+    method public void set2DigitYearStart(java.util.Date);
+    method public void setDateFormatSymbols(java.text.DateFormatSymbols);
+    method public String toLocalizedPattern();
+    method public String toPattern();
+  }
+
+  public final class StringCharacterIterator implements java.text.CharacterIterator {
+    ctor public StringCharacterIterator(String);
+    ctor public StringCharacterIterator(String, int);
+    ctor public StringCharacterIterator(String, int, int, int);
+    method public Object clone();
+    method public char current();
+    method public char first();
+    method public int getBeginIndex();
+    method public int getEndIndex();
+    method public int getIndex();
+    method public char last();
+    method public char next();
+    method public char previous();
+    method public char setIndex(int);
+    method public void setText(String);
+  }
+
+}
+
+package java.time {
+
+  public abstract class Clock {
+    ctor protected Clock();
+    method public static java.time.Clock fixed(java.time.Instant, java.time.ZoneId);
+    method public abstract java.time.ZoneId getZone();
+    method public abstract java.time.Instant instant();
+    method public long millis();
+    method public static java.time.Clock offset(java.time.Clock, java.time.Duration);
+    method public static java.time.Clock system(java.time.ZoneId);
+    method public static java.time.Clock systemDefaultZone();
+    method public static java.time.Clock systemUTC();
+    method public static java.time.Clock tick(java.time.Clock, java.time.Duration);
+    method public static java.time.Clock tickMinutes(java.time.ZoneId);
+    method public static java.time.Clock tickSeconds(java.time.ZoneId);
+    method public abstract java.time.Clock withZone(java.time.ZoneId);
+  }
+
+  public class DateTimeException extends java.lang.RuntimeException {
+    ctor public DateTimeException(String);
+    ctor public DateTimeException(String, Throwable);
+  }
+
+  public enum DayOfWeek implements java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
+    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
+    method public static java.time.DayOfWeek from(java.time.temporal.TemporalAccessor);
+    method public String getDisplayName(java.time.format.TextStyle, java.util.Locale);
+    method public long getLong(java.time.temporal.TemporalField);
+    method public int getValue();
+    method public boolean isSupported(java.time.temporal.TemporalField);
+    method public java.time.DayOfWeek minus(long);
+    method public static java.time.DayOfWeek of(int);
+    method public java.time.DayOfWeek plus(long);
+    enum_constant public static final java.time.DayOfWeek FRIDAY;
+    enum_constant public static final java.time.DayOfWeek MONDAY;
+    enum_constant public static final java.time.DayOfWeek SATURDAY;
+    enum_constant public static final java.time.DayOfWeek SUNDAY;
+    enum_constant public static final java.time.DayOfWeek THURSDAY;
+    enum_constant public static final java.time.DayOfWeek TUESDAY;
+    enum_constant public static final java.time.DayOfWeek WEDNESDAY;
+  }
+
+  public final class Duration implements java.lang.Comparable<java.time.Duration> java.io.Serializable java.time.temporal.TemporalAmount {
+    method public java.time.Duration abs();
+    method public java.time.temporal.Temporal addTo(java.time.temporal.Temporal);
+    method public static java.time.Duration between(java.time.temporal.Temporal, java.time.temporal.Temporal);
+    method public int compareTo(java.time.Duration);
+    method public java.time.Duration dividedBy(long);
+    method public static java.time.Duration from(java.time.temporal.TemporalAmount);
+    method public long get(java.time.temporal.TemporalUnit);
+    method public int getNano();
+    method public long getSeconds();
+    method public java.util.List<java.time.temporal.TemporalUnit> getUnits();
+    method public boolean isNegative();
+    method public boolean isZero();
+    method public java.time.Duration minus(java.time.Duration);
+    method public java.time.Duration minus(long, java.time.temporal.TemporalUnit);
+    method public java.time.Duration minusDays(long);
+    method public java.time.Duration minusHours(long);
+    method public java.time.Duration minusMillis(long);
+    method public java.time.Duration minusMinutes(long);
+    method public java.time.Duration minusNanos(long);
+    method public java.time.Duration minusSeconds(long);
+    method public java.time.Duration multipliedBy(long);
+    method public java.time.Duration negated();
+    method public static java.time.Duration of(long, java.time.temporal.TemporalUnit);
+    method public static java.time.Duration ofDays(long);
+    method public static java.time.Duration ofHours(long);
+    method public static java.time.Duration ofMillis(long);
+    method public static java.time.Duration ofMinutes(long);
+    method public static java.time.Duration ofNanos(long);
+    method public static java.time.Duration ofSeconds(long);
+    method public static java.time.Duration ofSeconds(long, long);
+    method public static java.time.Duration parse(CharSequence);
+    method public java.time.Duration plus(java.time.Duration);
+    method public java.time.Duration plus(long, java.time.temporal.TemporalUnit);
+    method public java.time.Duration plusDays(long);
+    method public java.time.Duration plusHours(long);
+    method public java.time.Duration plusMillis(long);
+    method public java.time.Duration plusMinutes(long);
+    method public java.time.Duration plusNanos(long);
+    method public java.time.Duration plusSeconds(long);
+    method public java.time.temporal.Temporal subtractFrom(java.time.temporal.Temporal);
+    method public long toDays();
+    method public long toHours();
+    method public long toMillis();
+    method public long toMinutes();
+    method public long toNanos();
+    method public java.time.Duration withNanos(int);
+    method public java.time.Duration withSeconds(long);
+    field public static final java.time.Duration ZERO;
+  }
+
+  public final class Instant implements java.lang.Comparable<java.time.Instant> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
+    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
+    method public java.time.OffsetDateTime atOffset(java.time.ZoneOffset);
+    method public java.time.ZonedDateTime atZone(java.time.ZoneId);
+    method public int compareTo(java.time.Instant);
+    method public static java.time.Instant from(java.time.temporal.TemporalAccessor);
+    method public long getEpochSecond();
+    method public long getLong(java.time.temporal.TemporalField);
+    method public int getNano();
+    method public boolean isAfter(java.time.Instant);
+    method public boolean isBefore(java.time.Instant);
+    method public boolean isSupported(java.time.temporal.TemporalField);
+    method public boolean isSupported(java.time.temporal.TemporalUnit);
+    method public java.time.Instant minus(java.time.temporal.TemporalAmount);
+    method public java.time.Instant minus(long, java.time.temporal.TemporalUnit);
+    method public java.time.Instant minusMillis(long);
+    method public java.time.Instant minusNanos(long);
+    method public java.time.Instant minusSeconds(long);
+    method public static java.time.Instant now();
+    method public static java.time.Instant now(java.time.Clock);
+    method public static java.time.Instant ofEpochMilli(long);
+    method public static java.time.Instant ofEpochSecond(long);
+    method public static java.time.Instant ofEpochSecond(long, long);
+    method public static java.time.Instant parse(CharSequence);
+    method public java.time.Instant plus(java.time.temporal.TemporalAmount);
+    method public java.time.Instant plus(long, java.time.temporal.TemporalUnit);
+    method public java.time.Instant plusMillis(long);
+    method public java.time.Instant plusNanos(long);
+    method public java.time.Instant plusSeconds(long);
+    method public long toEpochMilli();
+    method public java.time.Instant truncatedTo(java.time.temporal.TemporalUnit);
+    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
+    method public java.time.Instant with(java.time.temporal.TemporalAdjuster);
+    method public java.time.Instant with(java.time.temporal.TemporalField, long);
+    field public static final java.time.Instant EPOCH;
+    field public static final java.time.Instant MAX;
+    field public static final java.time.Instant MIN;
+  }
+
+  public final class LocalDate implements java.time.chrono.ChronoLocalDate java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
+    method public java.time.LocalDateTime atStartOfDay();
+    method public java.time.ZonedDateTime atStartOfDay(java.time.ZoneId);
+    method public java.time.LocalDateTime atTime(java.time.LocalTime);
+    method public java.time.LocalDateTime atTime(int, int);
+    method public java.time.LocalDateTime atTime(int, int, int);
+    method public java.time.LocalDateTime atTime(int, int, int, int);
+    method public java.time.OffsetDateTime atTime(java.time.OffsetTime);
+    method public static java.time.LocalDate from(java.time.temporal.TemporalAccessor);
+    method public java.time.chrono.IsoChronology getChronology();
+    method public int getDayOfMonth();
+    method public java.time.DayOfWeek getDayOfWeek();
+    method public int getDayOfYear();
+    method public long getLong(java.time.temporal.TemporalField);
+    method public java.time.Month getMonth();
+    method public int getMonthValue();
+    method public int getYear();
+    method public int lengthOfMonth();
+    method public java.time.LocalDate minus(java.time.temporal.TemporalAmount);
+    method public java.time.LocalDate minus(long, java.time.temporal.TemporalUnit);
+    method public java.time.LocalDate minusDays(long);
+    method public java.time.LocalDate minusMonths(long);
+    method public java.time.LocalDate minusWeeks(long);
+    method public java.time.LocalDate minusYears(long);
+    method public static java.time.LocalDate now();
+    method public static java.time.LocalDate now(java.time.ZoneId);
+    method public static java.time.LocalDate now(java.time.Clock);
+    method public static java.time.LocalDate of(int, java.time.Month, int);
+    method public static java.time.LocalDate of(int, int, int);
+    method public static java.time.LocalDate ofEpochDay(long);
+    method public static java.time.LocalDate ofYearDay(int, int);
+    method public static java.time.LocalDate parse(CharSequence);
+    method public static java.time.LocalDate parse(CharSequence, java.time.format.DateTimeFormatter);
+    method public java.time.LocalDate plus(java.time.temporal.TemporalAmount);
+    method public java.time.LocalDate plus(long, java.time.temporal.TemporalUnit);
+    method public java.time.LocalDate plusDays(long);
+    method public java.time.LocalDate plusMonths(long);
+    method public java.time.LocalDate plusWeeks(long);
+    method public java.time.LocalDate plusYears(long);
+    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
+    method public java.time.Period until(java.time.chrono.ChronoLocalDate);
+    method public java.time.LocalDate with(java.time.temporal.TemporalAdjuster);
+    method public java.time.LocalDate with(java.time.temporal.TemporalField, long);
+    method public java.time.LocalDate withDayOfMonth(int);
+    method public java.time.LocalDate withDayOfYear(int);
+    method public java.time.LocalDate withMonth(int);
+    method public java.time.LocalDate withYear(int);
+    field public static final java.time.LocalDate MAX;
+    field public static final java.time.LocalDate MIN;
+  }
+
+  public final class LocalDateTime implements java.time.chrono.ChronoLocalDateTime<java.time.LocalDate> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
+    method public java.time.OffsetDateTime atOffset(java.time.ZoneOffset);
+    method public java.time.ZonedDateTime atZone(java.time.ZoneId);
+    method public static java.time.LocalDateTime from(java.time.temporal.TemporalAccessor);
+    method public int getDayOfMonth();
+    method public java.time.DayOfWeek getDayOfWeek();
+    method public int getDayOfYear();
+    method public int getHour();
+    method public long getLong(java.time.temporal.TemporalField);
+    method public int getMinute();
+    method public java.time.Month getMonth();
+    method public int getMonthValue();
+    method public int getNano();
+    method public int getSecond();
+    method public int getYear();
+    method public boolean isSupported(java.time.temporal.TemporalField);
+    method public java.time.LocalDateTime minus(java.time.temporal.TemporalAmount);
+    method public java.time.LocalDateTime minus(long, java.time.temporal.TemporalUnit);
+    method public java.time.LocalDateTime minusDays(long);
+    method public java.time.LocalDateTime minusHours(long);
+    method public java.time.LocalDateTime minusMinutes(long);
+    method public java.time.LocalDateTime minusMonths(long);
+    method public java.time.LocalDateTime minusNanos(long);
+    method public java.time.LocalDateTime minusSeconds(long);
+    method public java.time.LocalDateTime minusWeeks(long);
+    method public java.time.LocalDateTime minusYears(long);
+    method public static java.time.LocalDateTime now();
+    method public static java.time.LocalDateTime now(java.time.ZoneId);
+    method public static java.time.LocalDateTime now(java.time.Clock);
+    method public static java.time.LocalDateTime of(int, java.time.Month, int, int, int);
+    method public static java.time.LocalDateTime of(int, java.time.Month, int, int, int, int);
+    method public static java.time.LocalDateTime of(int, java.time.Month, int, int, int, int, int);
+    method public static java.time.LocalDateTime of(int, int, int, int, int);
+    method public static java.time.LocalDateTime of(int, int, int, int, int, int);
+    method public static java.time.LocalDateTime of(int, int, int, int, int, int, int);
+    method public static java.time.LocalDateTime of(java.time.LocalDate, java.time.LocalTime);
+    method public static java.time.LocalDateTime ofEpochSecond(long, int, java.time.ZoneOffset);
+    method public static java.time.LocalDateTime ofInstant(java.time.Instant, java.time.ZoneId);
+    method public static java.time.LocalDateTime parse(CharSequence);
+    method public static java.time.LocalDateTime parse(CharSequence, java.time.format.DateTimeFormatter);
+    method public java.time.LocalDateTime plus(java.time.temporal.TemporalAmount);
+    method public java.time.LocalDateTime plus(long, java.time.temporal.TemporalUnit);
+    method public java.time.LocalDateTime plusDays(long);
+    method public java.time.LocalDateTime plusHours(long);
+    method public java.time.LocalDateTime plusMinutes(long);
+    method public java.time.LocalDateTime plusMonths(long);
+    method public java.time.LocalDateTime plusNanos(long);
+    method public java.time.LocalDateTime plusSeconds(long);
+    method public java.time.LocalDateTime plusWeeks(long);
+    method public java.time.LocalDateTime plusYears(long);
+    method public java.time.LocalDate toLocalDate();
+    method public java.time.LocalTime toLocalTime();
+    method public java.time.LocalDateTime truncatedTo(java.time.temporal.TemporalUnit);
+    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
+    method public java.time.LocalDateTime with(java.time.temporal.TemporalAdjuster);
+    method public java.time.LocalDateTime with(java.time.temporal.TemporalField, long);
+    method public java.time.LocalDateTime withDayOfMonth(int);
+    method public java.time.LocalDateTime withDayOfYear(int);
+    method public java.time.LocalDateTime withHour(int);
+    method public java.time.LocalDateTime withMinute(int);
+    method public java.time.LocalDateTime withMonth(int);
+    method public java.time.LocalDateTime withNano(int);
+    method public java.time.LocalDateTime withSecond(int);
+    method public java.time.LocalDateTime withYear(int);
+    field public static final java.time.LocalDateTime MAX;
+    field public static final java.time.LocalDateTime MIN;
+  }
+
+  public final class LocalTime implements java.lang.Comparable<java.time.LocalTime> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
+    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
+    method public java.time.LocalDateTime atDate(java.time.LocalDate);
+    method public java.time.OffsetTime atOffset(java.time.ZoneOffset);
+    method public int compareTo(java.time.LocalTime);
+    method public String format(java.time.format.DateTimeFormatter);
+    method public static java.time.LocalTime from(java.time.temporal.TemporalAccessor);
+    method public int getHour();
+    method public long getLong(java.time.temporal.TemporalField);
+    method public int getMinute();
+    method public int getNano();
+    method public int getSecond();
+    method public boolean isAfter(java.time.LocalTime);
+    method public boolean isBefore(java.time.LocalTime);
+    method public boolean isSupported(java.time.temporal.TemporalField);
+    method public boolean isSupported(java.time.temporal.TemporalUnit);
+    method public java.time.LocalTime minus(java.time.temporal.TemporalAmount);
+    method public java.time.LocalTime minus(long, java.time.temporal.TemporalUnit);
+    method public java.time.LocalTime minusHours(long);
+    method public java.time.LocalTime minusMinutes(long);
+    method public java.time.LocalTime minusNanos(long);
+    method public java.time.LocalTime minusSeconds(long);
+    method public static java.time.LocalTime now();
+    method public static java.time.LocalTime now(java.time.ZoneId);
+    method public static java.time.LocalTime now(java.time.Clock);
+    method public static java.time.LocalTime of(int, int);
+    method public static java.time.LocalTime of(int, int, int);
+    method public static java.time.LocalTime of(int, int, int, int);
+    method public static java.time.LocalTime ofNanoOfDay(long);
+    method public static java.time.LocalTime ofSecondOfDay(long);
+    method public static java.time.LocalTime parse(CharSequence);
+    method public static java.time.LocalTime parse(CharSequence, java.time.format.DateTimeFormatter);
+    method public java.time.LocalTime plus(java.time.temporal.TemporalAmount);
+    method public java.time.LocalTime plus(long, java.time.temporal.TemporalUnit);
+    method public java.time.LocalTime plusHours(long);
+    method public java.time.LocalTime plusMinutes(long);
+    method public java.time.LocalTime plusNanos(long);
+    method public java.time.LocalTime plusSeconds(long);
+    method public long toNanoOfDay();
+    method public int toSecondOfDay();
+    method public java.time.LocalTime truncatedTo(java.time.temporal.TemporalUnit);
+    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
+    method public java.time.LocalTime with(java.time.temporal.TemporalAdjuster);
+    method public java.time.LocalTime with(java.time.temporal.TemporalField, long);
+    method public java.time.LocalTime withHour(int);
+    method public java.time.LocalTime withMinute(int);
+    method public java.time.LocalTime withNano(int);
+    method public java.time.LocalTime withSecond(int);
+    field public static final java.time.LocalTime MAX;
+    field public static final java.time.LocalTime MIDNIGHT;
+    field public static final java.time.LocalTime MIN;
+    field public static final java.time.LocalTime NOON;
+  }
+
+  public enum Month implements java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
+    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
+    method public int firstDayOfYear(boolean);
+    method public java.time.Month firstMonthOfQuarter();
+    method public static java.time.Month from(java.time.temporal.TemporalAccessor);
+    method public String getDisplayName(java.time.format.TextStyle, java.util.Locale);
+    method public long getLong(java.time.temporal.TemporalField);
+    method public int getValue();
+    method public boolean isSupported(java.time.temporal.TemporalField);
+    method public int length(boolean);
+    method public int maxLength();
+    method public int minLength();
+    method public java.time.Month minus(long);
+    method public static java.time.Month of(int);
+    method public java.time.Month plus(long);
+    enum_constant public static final java.time.Month APRIL;
+    enum_constant public static final java.time.Month AUGUST;
+    enum_constant public static final java.time.Month DECEMBER;
+    enum_constant public static final java.time.Month FEBRUARY;
+    enum_constant public static final java.time.Month JANUARY;
+    enum_constant public static final java.time.Month JULY;
+    enum_constant public static final java.time.Month JUNE;
+    enum_constant public static final java.time.Month MARCH;
+    enum_constant public static final java.time.Month MAY;
+    enum_constant public static final java.time.Month NOVEMBER;
+    enum_constant public static final java.time.Month OCTOBER;
+    enum_constant public static final java.time.Month SEPTEMBER;
+  }
+
+  public final class MonthDay implements java.lang.Comparable<java.time.MonthDay> java.io.Serializable java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
+    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
+    method public java.time.LocalDate atYear(int);
+    method public int compareTo(java.time.MonthDay);
+    method public String format(java.time.format.DateTimeFormatter);
+    method public static java.time.MonthDay from(java.time.temporal.TemporalAccessor);
+    method public int getDayOfMonth();
+    method public long getLong(java.time.temporal.TemporalField);
+    method public java.time.Month getMonth();
+    method public int getMonthValue();
+    method public boolean isAfter(java.time.MonthDay);
+    method public boolean isBefore(java.time.MonthDay);
+    method public boolean isSupported(java.time.temporal.TemporalField);
+    method public boolean isValidYear(int);
+    method public static java.time.MonthDay now();
+    method public static java.time.MonthDay now(java.time.ZoneId);
+    method public static java.time.MonthDay now(java.time.Clock);
+    method public static java.time.MonthDay of(java.time.Month, int);
+    method public static java.time.MonthDay of(int, int);
+    method public static java.time.MonthDay parse(CharSequence);
+    method public static java.time.MonthDay parse(CharSequence, java.time.format.DateTimeFormatter);
+    method public java.time.MonthDay with(java.time.Month);
+    method public java.time.MonthDay withDayOfMonth(int);
+    method public java.time.MonthDay withMonth(int);
+  }
+
+  public final class OffsetDateTime implements java.lang.Comparable<java.time.OffsetDateTime> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
+    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
+    method public java.time.ZonedDateTime atZoneSameInstant(java.time.ZoneId);
+    method public java.time.ZonedDateTime atZoneSimilarLocal(java.time.ZoneId);
+    method public int compareTo(java.time.OffsetDateTime);
+    method public String format(java.time.format.DateTimeFormatter);
+    method public static java.time.OffsetDateTime from(java.time.temporal.TemporalAccessor);
+    method public int getDayOfMonth();
+    method public java.time.DayOfWeek getDayOfWeek();
+    method public int getDayOfYear();
+    method public int getHour();
+    method public long getLong(java.time.temporal.TemporalField);
+    method public int getMinute();
+    method public java.time.Month getMonth();
+    method public int getMonthValue();
+    method public int getNano();
+    method public java.time.ZoneOffset getOffset();
+    method public int getSecond();
+    method public int getYear();
+    method public boolean isAfter(java.time.OffsetDateTime);
+    method public boolean isBefore(java.time.OffsetDateTime);
+    method public boolean isEqual(java.time.OffsetDateTime);
+    method public boolean isSupported(java.time.temporal.TemporalField);
+    method public boolean isSupported(java.time.temporal.TemporalUnit);
+    method public java.time.OffsetDateTime minus(java.time.temporal.TemporalAmount);
+    method public java.time.OffsetDateTime minus(long, java.time.temporal.TemporalUnit);
+    method public java.time.OffsetDateTime minusDays(long);
+    method public java.time.OffsetDateTime minusHours(long);
+    method public java.time.OffsetDateTime minusMinutes(long);
+    method public java.time.OffsetDateTime minusMonths(long);
+    method public java.time.OffsetDateTime minusNanos(long);
+    method public java.time.OffsetDateTime minusSeconds(long);
+    method public java.time.OffsetDateTime minusWeeks(long);
+    method public java.time.OffsetDateTime minusYears(long);
+    method public static java.time.OffsetDateTime now();
+    method public static java.time.OffsetDateTime now(java.time.ZoneId);
+    method public static java.time.OffsetDateTime now(java.time.Clock);
+    method public static java.time.OffsetDateTime of(java.time.LocalDate, java.time.LocalTime, java.time.ZoneOffset);
+    method public static java.time.OffsetDateTime of(java.time.LocalDateTime, java.time.ZoneOffset);
+    method public static java.time.OffsetDateTime of(int, int, int, int, int, int, int, java.time.ZoneOffset);
+    method public static java.time.OffsetDateTime ofInstant(java.time.Instant, java.time.ZoneId);
+    method public static java.time.OffsetDateTime parse(CharSequence);
+    method public static java.time.OffsetDateTime parse(CharSequence, java.time.format.DateTimeFormatter);
+    method public java.time.OffsetDateTime plus(java.time.temporal.TemporalAmount);
+    method public java.time.OffsetDateTime plus(long, java.time.temporal.TemporalUnit);
+    method public java.time.OffsetDateTime plusDays(long);
+    method public java.time.OffsetDateTime plusHours(long);
+    method public java.time.OffsetDateTime plusMinutes(long);
+    method public java.time.OffsetDateTime plusMonths(long);
+    method public java.time.OffsetDateTime plusNanos(long);
+    method public java.time.OffsetDateTime plusSeconds(long);
+    method public java.time.OffsetDateTime plusWeeks(long);
+    method public java.time.OffsetDateTime plusYears(long);
+    method public static java.util.Comparator<java.time.OffsetDateTime> timeLineOrder();
+    method public long toEpochSecond();
+    method public java.time.Instant toInstant();
+    method public java.time.LocalDate toLocalDate();
+    method public java.time.LocalDateTime toLocalDateTime();
+    method public java.time.LocalTime toLocalTime();
+    method public java.time.OffsetTime toOffsetTime();
+    method public java.time.ZonedDateTime toZonedDateTime();
+    method public java.time.OffsetDateTime truncatedTo(java.time.temporal.TemporalUnit);
+    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
+    method public java.time.OffsetDateTime with(java.time.temporal.TemporalAdjuster);
+    method public java.time.OffsetDateTime with(java.time.temporal.TemporalField, long);
+    method public java.time.OffsetDateTime withDayOfMonth(int);
+    method public java.time.OffsetDateTime withDayOfYear(int);
+    method public java.time.OffsetDateTime withHour(int);
+    method public java.time.OffsetDateTime withMinute(int);
+    method public java.time.OffsetDateTime withMonth(int);
+    method public java.time.OffsetDateTime withNano(int);
+    method public java.time.OffsetDateTime withOffsetSameInstant(java.time.ZoneOffset);
+    method public java.time.OffsetDateTime withOffsetSameLocal(java.time.ZoneOffset);
+    method public java.time.OffsetDateTime withSecond(int);
+    method public java.time.OffsetDateTime withYear(int);
+    field public static final java.time.OffsetDateTime MAX;
+    field public static final java.time.OffsetDateTime MIN;
+  }
+
+  public final class OffsetTime implements java.lang.Comparable<java.time.OffsetTime> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
+    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
+    method public java.time.OffsetDateTime atDate(java.time.LocalDate);
+    method public int compareTo(java.time.OffsetTime);
+    method public String format(java.time.format.DateTimeFormatter);
+    method public static java.time.OffsetTime from(java.time.temporal.TemporalAccessor);
+    method public int getHour();
+    method public long getLong(java.time.temporal.TemporalField);
+    method public int getMinute();
+    method public int getNano();
+    method public java.time.ZoneOffset getOffset();
+    method public int getSecond();
+    method public boolean isAfter(java.time.OffsetTime);
+    method public boolean isBefore(java.time.OffsetTime);
+    method public boolean isEqual(java.time.OffsetTime);
+    method public boolean isSupported(java.time.temporal.TemporalField);
+    method public boolean isSupported(java.time.temporal.TemporalUnit);
+    method public java.time.OffsetTime minus(java.time.temporal.TemporalAmount);
+    method public java.time.OffsetTime minus(long, java.time.temporal.TemporalUnit);
+    method public java.time.OffsetTime minusHours(long);
+    method public java.time.OffsetTime minusMinutes(long);
+    method public java.time.OffsetTime minusNanos(long);
+    method public java.time.OffsetTime minusSeconds(long);
+    method public static java.time.OffsetTime now();
+    method public static java.time.OffsetTime now(java.time.ZoneId);
+    method public static java.time.OffsetTime now(java.time.Clock);
+    method public static java.time.OffsetTime of(java.time.LocalTime, java.time.ZoneOffset);
+    method public static java.time.OffsetTime of(int, int, int, int, java.time.ZoneOffset);
+    method public static java.time.OffsetTime ofInstant(java.time.Instant, java.time.ZoneId);
+    method public static java.time.OffsetTime parse(CharSequence);
+    method public static java.time.OffsetTime parse(CharSequence, java.time.format.DateTimeFormatter);
+    method public java.time.OffsetTime plus(java.time.temporal.TemporalAmount);
+    method public java.time.OffsetTime plus(long, java.time.temporal.TemporalUnit);
+    method public java.time.OffsetTime plusHours(long);
+    method public java.time.OffsetTime plusMinutes(long);
+    method public java.time.OffsetTime plusNanos(long);
+    method public java.time.OffsetTime plusSeconds(long);
+    method public java.time.LocalTime toLocalTime();
+    method public java.time.OffsetTime truncatedTo(java.time.temporal.TemporalUnit);
+    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
+    method public java.time.OffsetTime with(java.time.temporal.TemporalAdjuster);
+    method public java.time.OffsetTime with(java.time.temporal.TemporalField, long);
+    method public java.time.OffsetTime withHour(int);
+    method public java.time.OffsetTime withMinute(int);
+    method public java.time.OffsetTime withNano(int);
+    method public java.time.OffsetTime withOffsetSameInstant(java.time.ZoneOffset);
+    method public java.time.OffsetTime withOffsetSameLocal(java.time.ZoneOffset);
+    method public java.time.OffsetTime withSecond(int);
+    field public static final java.time.OffsetTime MAX;
+    field public static final java.time.OffsetTime MIN;
+  }
+
+  public final class Period implements java.time.chrono.ChronoPeriod java.io.Serializable {
+    method public java.time.temporal.Temporal addTo(java.time.temporal.Temporal);
+    method public static java.time.Period between(java.time.LocalDate, java.time.LocalDate);
+    method public static java.time.Period from(java.time.temporal.TemporalAmount);
+    method public long get(java.time.temporal.TemporalUnit);
+    method public java.time.chrono.IsoChronology getChronology();
+    method public int getDays();
+    method public int getMonths();
+    method public java.util.List<java.time.temporal.TemporalUnit> getUnits();
+    method public int getYears();
+    method public java.time.Period minus(java.time.temporal.TemporalAmount);
+    method public java.time.Period minusDays(long);
+    method public java.time.Period minusMonths(long);
+    method public java.time.Period minusYears(long);
+    method public java.time.Period multipliedBy(int);
+    method public java.time.Period negated();
+    method public java.time.Period normalized();
+    method public static java.time.Period of(int, int, int);
+    method public static java.time.Period ofDays(int);
+    method public static java.time.Period ofMonths(int);
+    method public static java.time.Period ofWeeks(int);
+    method public static java.time.Period ofYears(int);
+    method public static java.time.Period parse(CharSequence);
+    method public java.time.Period plus(java.time.temporal.TemporalAmount);
+    method public java.time.Period plusDays(long);
+    method public java.time.Period plusMonths(long);
+    method public java.time.Period plusYears(long);
+    method public java.time.temporal.Temporal subtractFrom(java.time.temporal.Temporal);
+    method public long toTotalMonths();
+    method public java.time.Period withDays(int);
+    method public java.time.Period withMonths(int);
+    method public java.time.Period withYears(int);
+    field public static final java.time.Period ZERO;
+  }
+
+  public final class Year implements java.lang.Comparable<java.time.Year> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
+    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
+    method public java.time.LocalDate atDay(int);
+    method public java.time.YearMonth atMonth(java.time.Month);
+    method public java.time.YearMonth atMonth(int);
+    method public java.time.LocalDate atMonthDay(java.time.MonthDay);
+    method public int compareTo(java.time.Year);
+    method public String format(java.time.format.DateTimeFormatter);
+    method public static java.time.Year from(java.time.temporal.TemporalAccessor);
+    method public long getLong(java.time.temporal.TemporalField);
+    method public int getValue();
+    method public boolean isAfter(java.time.Year);
+    method public boolean isBefore(java.time.Year);
+    method public static boolean isLeap(long);
+    method public boolean isLeap();
+    method public boolean isSupported(java.time.temporal.TemporalField);
+    method public boolean isSupported(java.time.temporal.TemporalUnit);
+    method public boolean isValidMonthDay(java.time.MonthDay);
+    method public int length();
+    method public java.time.Year minus(java.time.temporal.TemporalAmount);
+    method public java.time.Year minus(long, java.time.temporal.TemporalUnit);
+    method public java.time.Year minusYears(long);
+    method public static java.time.Year now();
+    method public static java.time.Year now(java.time.ZoneId);
+    method public static java.time.Year now(java.time.Clock);
+    method public static java.time.Year of(int);
+    method public static java.time.Year parse(CharSequence);
+    method public static java.time.Year parse(CharSequence, java.time.format.DateTimeFormatter);
+    method public java.time.Year plus(java.time.temporal.TemporalAmount);
+    method public java.time.Year plus(long, java.time.temporal.TemporalUnit);
+    method public java.time.Year plusYears(long);
+    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
+    method public java.time.Year with(java.time.temporal.TemporalAdjuster);
+    method public java.time.Year with(java.time.temporal.TemporalField, long);
+    field public static final int MAX_VALUE = 999999999; // 0x3b9ac9ff
+    field public static final int MIN_VALUE = -999999999; // 0xc4653601
+  }
+
+  public final class YearMonth implements java.lang.Comparable<java.time.YearMonth> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
+    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
+    method public java.time.LocalDate atDay(int);
+    method public java.time.LocalDate atEndOfMonth();
+    method public int compareTo(java.time.YearMonth);
+    method public String format(java.time.format.DateTimeFormatter);
+    method public static java.time.YearMonth from(java.time.temporal.TemporalAccessor);
+    method public long getLong(java.time.temporal.TemporalField);
+    method public java.time.Month getMonth();
+    method public int getMonthValue();
+    method public int getYear();
+    method public boolean isAfter(java.time.YearMonth);
+    method public boolean isBefore(java.time.YearMonth);
+    method public boolean isLeapYear();
+    method public boolean isSupported(java.time.temporal.TemporalField);
+    method public boolean isSupported(java.time.temporal.TemporalUnit);
+    method public boolean isValidDay(int);
+    method public int lengthOfMonth();
+    method public int lengthOfYear();
+    method public java.time.YearMonth minus(java.time.temporal.TemporalAmount);
+    method public java.time.YearMonth minus(long, java.time.temporal.TemporalUnit);
+    method public java.time.YearMonth minusMonths(long);
+    method public java.time.YearMonth minusYears(long);
+    method public static java.time.YearMonth now();
+    method public static java.time.YearMonth now(java.time.ZoneId);
+    method public static java.time.YearMonth now(java.time.Clock);
+    method public static java.time.YearMonth of(int, java.time.Month);
+    method public static java.time.YearMonth of(int, int);
+    method public static java.time.YearMonth parse(CharSequence);
+    method public static java.time.YearMonth parse(CharSequence, java.time.format.DateTimeFormatter);
+    method public java.time.YearMonth plus(java.time.temporal.TemporalAmount);
+    method public java.time.YearMonth plus(long, java.time.temporal.TemporalUnit);
+    method public java.time.YearMonth plusMonths(long);
+    method public java.time.YearMonth plusYears(long);
+    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
+    method public java.time.YearMonth with(java.time.temporal.TemporalAdjuster);
+    method public java.time.YearMonth with(java.time.temporal.TemporalField, long);
+    method public java.time.YearMonth withMonth(int);
+    method public java.time.YearMonth withYear(int);
+  }
+
+  public abstract class ZoneId implements java.io.Serializable {
+    method public static java.time.ZoneId from(java.time.temporal.TemporalAccessor);
+    method public static java.util.Set<java.lang.String> getAvailableZoneIds();
+    method public String getDisplayName(java.time.format.TextStyle, java.util.Locale);
+    method public abstract String getId();
+    method public abstract java.time.zone.ZoneRules getRules();
+    method public java.time.ZoneId normalized();
+    method public static java.time.ZoneId of(String, java.util.Map<java.lang.String,java.lang.String>);
+    method public static java.time.ZoneId of(String);
+    method public static java.time.ZoneId ofOffset(String, java.time.ZoneOffset);
+    method public static java.time.ZoneId systemDefault();
+    field public static final java.util.Map<java.lang.String,java.lang.String> SHORT_IDS;
+  }
+
+  public final class ZoneOffset extends java.time.ZoneId implements java.lang.Comparable<java.time.ZoneOffset> java.io.Serializable java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
+    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
+    method public int compareTo(java.time.ZoneOffset);
+    method public static java.time.ZoneOffset from(java.time.temporal.TemporalAccessor);
+    method public String getId();
+    method public long getLong(java.time.temporal.TemporalField);
+    method public java.time.zone.ZoneRules getRules();
+    method public int getTotalSeconds();
+    method public boolean isSupported(java.time.temporal.TemporalField);
+    method public static java.time.ZoneOffset of(String);
+    method public static java.time.ZoneOffset ofHours(int);
+    method public static java.time.ZoneOffset ofHoursMinutes(int, int);
+    method public static java.time.ZoneOffset ofHoursMinutesSeconds(int, int, int);
+    method public static java.time.ZoneOffset ofTotalSeconds(int);
+    field public static final java.time.ZoneOffset MAX;
+    field public static final java.time.ZoneOffset MIN;
+    field public static final java.time.ZoneOffset UTC;
+  }
+
+  public final class ZonedDateTime implements java.time.chrono.ChronoZonedDateTime<java.time.LocalDate> java.io.Serializable java.time.temporal.Temporal {
+    method public static java.time.ZonedDateTime from(java.time.temporal.TemporalAccessor);
+    method public int getDayOfMonth();
+    method public java.time.DayOfWeek getDayOfWeek();
+    method public int getDayOfYear();
+    method public int getHour();
+    method public int getMinute();
+    method public java.time.Month getMonth();
+    method public int getMonthValue();
+    method public int getNano();
+    method public java.time.ZoneOffset getOffset();
+    method public int getSecond();
+    method public int getYear();
+    method public java.time.ZoneId getZone();
+    method public boolean isSupported(java.time.temporal.TemporalField);
+    method public java.time.ZonedDateTime minus(java.time.temporal.TemporalAmount);
+    method public java.time.ZonedDateTime minus(long, java.time.temporal.TemporalUnit);
+    method public java.time.ZonedDateTime minusDays(long);
+    method public java.time.ZonedDateTime minusHours(long);
+    method public java.time.ZonedDateTime minusMinutes(long);
+    method public java.time.ZonedDateTime minusMonths(long);
+    method public java.time.ZonedDateTime minusNanos(long);
+    method public java.time.ZonedDateTime minusSeconds(long);
+    method public java.time.ZonedDateTime minusWeeks(long);
+    method public java.time.ZonedDateTime minusYears(long);
+    method public static java.time.ZonedDateTime now();
+    method public static java.time.ZonedDateTime now(java.time.ZoneId);
+    method public static java.time.ZonedDateTime now(java.time.Clock);
+    method public static java.time.ZonedDateTime of(java.time.LocalDate, java.time.LocalTime, java.time.ZoneId);
+    method public static java.time.ZonedDateTime of(java.time.LocalDateTime, java.time.ZoneId);
+    method public static java.time.ZonedDateTime of(int, int, int, int, int, int, int, java.time.ZoneId);
+    method public static java.time.ZonedDateTime ofInstant(java.time.Instant, java.time.ZoneId);
+    method public static java.time.ZonedDateTime ofInstant(java.time.LocalDateTime, java.time.ZoneOffset, java.time.ZoneId);
+    method public static java.time.ZonedDateTime ofLocal(java.time.LocalDateTime, java.time.ZoneId, java.time.ZoneOffset);
+    method public static java.time.ZonedDateTime ofStrict(java.time.LocalDateTime, java.time.ZoneOffset, java.time.ZoneId);
+    method public static java.time.ZonedDateTime parse(CharSequence);
+    method public static java.time.ZonedDateTime parse(CharSequence, java.time.format.DateTimeFormatter);
+    method public java.time.ZonedDateTime plus(java.time.temporal.TemporalAmount);
+    method public java.time.ZonedDateTime plus(long, java.time.temporal.TemporalUnit);
+    method public java.time.ZonedDateTime plusDays(long);
+    method public java.time.ZonedDateTime plusHours(long);
+    method public java.time.ZonedDateTime plusMinutes(long);
+    method public java.time.ZonedDateTime plusMonths(long);
+    method public java.time.ZonedDateTime plusNanos(long);
+    method public java.time.ZonedDateTime plusSeconds(long);
+    method public java.time.ZonedDateTime plusWeeks(long);
+    method public java.time.ZonedDateTime plusYears(long);
+    method public java.time.LocalDate toLocalDate();
+    method public java.time.LocalDateTime toLocalDateTime();
+    method public java.time.OffsetDateTime toOffsetDateTime();
+    method public java.time.ZonedDateTime truncatedTo(java.time.temporal.TemporalUnit);
+    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
+    method public java.time.ZonedDateTime with(java.time.temporal.TemporalAdjuster);
+    method public java.time.ZonedDateTime with(java.time.temporal.TemporalField, long);
+    method public java.time.ZonedDateTime withDayOfMonth(int);
+    method public java.time.ZonedDateTime withDayOfYear(int);
+    method public java.time.ZonedDateTime withEarlierOffsetAtOverlap();
+    method public java.time.ZonedDateTime withFixedOffsetZone();
+    method public java.time.ZonedDateTime withHour(int);
+    method public java.time.ZonedDateTime withLaterOffsetAtOverlap();
+    method public java.time.ZonedDateTime withMinute(int);
+    method public java.time.ZonedDateTime withMonth(int);
+    method public java.time.ZonedDateTime withNano(int);
+    method public java.time.ZonedDateTime withSecond(int);
+    method public java.time.ZonedDateTime withYear(int);
+    method public java.time.ZonedDateTime withZoneSameInstant(java.time.ZoneId);
+    method public java.time.ZonedDateTime withZoneSameLocal(java.time.ZoneId);
+  }
+
+}
+
+package java.time.chrono {
+
+  public abstract class AbstractChronology implements java.time.chrono.Chronology {
+    ctor protected AbstractChronology();
+    method public int compareTo(java.time.chrono.Chronology);
+    method public java.time.chrono.ChronoLocalDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
+  }
+
+  public interface ChronoLocalDate extends java.time.temporal.Temporal java.lang.Comparable<java.time.chrono.ChronoLocalDate> java.time.temporal.TemporalAdjuster {
+    method public default java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
+    method public default java.time.chrono.ChronoLocalDateTime<?> atTime(java.time.LocalTime);
+    method public default int compareTo(java.time.chrono.ChronoLocalDate);
+    method public boolean equals(Object);
+    method public default String format(java.time.format.DateTimeFormatter);
+    method public static java.time.chrono.ChronoLocalDate from(java.time.temporal.TemporalAccessor);
+    method public java.time.chrono.Chronology getChronology();
+    method public default java.time.chrono.Era getEra();
+    method public int hashCode();
+    method public default boolean isAfter(java.time.chrono.ChronoLocalDate);
+    method public default boolean isBefore(java.time.chrono.ChronoLocalDate);
+    method public default boolean isEqual(java.time.chrono.ChronoLocalDate);
+    method public default boolean isLeapYear();
+    method public default boolean isSupported(java.time.temporal.TemporalField);
+    method public default boolean isSupported(java.time.temporal.TemporalUnit);
+    method public int lengthOfMonth();
+    method public default int lengthOfYear();
+    method public default java.time.chrono.ChronoLocalDate minus(java.time.temporal.TemporalAmount);
+    method public default java.time.chrono.ChronoLocalDate minus(long, java.time.temporal.TemporalUnit);
+    method public default java.time.chrono.ChronoLocalDate plus(java.time.temporal.TemporalAmount);
+    method public default java.time.chrono.ChronoLocalDate plus(long, java.time.temporal.TemporalUnit);
+    method public static java.util.Comparator<java.time.chrono.ChronoLocalDate> timeLineOrder();
+    method public default long toEpochDay();
+    method public String toString();
+    method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate);
+    method public default java.time.chrono.ChronoLocalDate with(java.time.temporal.TemporalAdjuster);
+    method public default java.time.chrono.ChronoLocalDate with(java.time.temporal.TemporalField, long);
+  }
+
+  public interface ChronoLocalDateTime<D extends java.time.chrono.ChronoLocalDate> extends java.time.temporal.Temporal java.lang.Comparable<java.time.chrono.ChronoLocalDateTime<?>> java.time.temporal.TemporalAdjuster {
+    method public default java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
+    method public java.time.chrono.ChronoZonedDateTime<D> atZone(java.time.ZoneId);
+    method public default int compareTo(java.time.chrono.ChronoLocalDateTime<?>);
+    method public boolean equals(Object);
+    method public default String format(java.time.format.DateTimeFormatter);
+    method public static java.time.chrono.ChronoLocalDateTime<?> from(java.time.temporal.TemporalAccessor);
+    method public default java.time.chrono.Chronology getChronology();
+    method public int hashCode();
+    method public default boolean isAfter(java.time.chrono.ChronoLocalDateTime<?>);
+    method public default boolean isBefore(java.time.chrono.ChronoLocalDateTime<?>);
+    method public default boolean isEqual(java.time.chrono.ChronoLocalDateTime<?>);
+    method public default boolean isSupported(java.time.temporal.TemporalUnit);
+    method public default java.time.chrono.ChronoLocalDateTime<D> minus(java.time.temporal.TemporalAmount);
+    method public default java.time.chrono.ChronoLocalDateTime<D> minus(long, java.time.temporal.TemporalUnit);
+    method public default java.time.chrono.ChronoLocalDateTime<D> plus(java.time.temporal.TemporalAmount);
+    method public java.time.chrono.ChronoLocalDateTime<D> plus(long, java.time.temporal.TemporalUnit);
+    method public static java.util.Comparator<java.time.chrono.ChronoLocalDateTime<?>> timeLineOrder();
+    method public default long toEpochSecond(java.time.ZoneOffset);
+    method public default java.time.Instant toInstant(java.time.ZoneOffset);
+    method public D toLocalDate();
+    method public java.time.LocalTime toLocalTime();
+    method public String toString();
+    method public default java.time.chrono.ChronoLocalDateTime<D> with(java.time.temporal.TemporalAdjuster);
+    method public java.time.chrono.ChronoLocalDateTime<D> with(java.time.temporal.TemporalField, long);
+  }
+
+  public interface ChronoPeriod extends java.time.temporal.TemporalAmount {
+    method public static java.time.chrono.ChronoPeriod between(java.time.chrono.ChronoLocalDate, java.time.chrono.ChronoLocalDate);
+    method public boolean equals(Object);
+    method public java.time.chrono.Chronology getChronology();
+    method public int hashCode();
+    method public default boolean isNegative();
+    method public default boolean isZero();
+    method public java.time.chrono.ChronoPeriod minus(java.time.temporal.TemporalAmount);
+    method public java.time.chrono.ChronoPeriod multipliedBy(int);
+    method public default java.time.chrono.ChronoPeriod negated();
+    method public java.time.chrono.ChronoPeriod normalized();
+    method public java.time.chrono.ChronoPeriod plus(java.time.temporal.TemporalAmount);
+    method public String toString();
+  }
+
+  public interface ChronoZonedDateTime<D extends java.time.chrono.ChronoLocalDate> extends java.time.temporal.Temporal java.lang.Comparable<java.time.chrono.ChronoZonedDateTime<?>> {
+    method public default int compareTo(java.time.chrono.ChronoZonedDateTime<?>);
+    method public boolean equals(Object);
+    method public default String format(java.time.format.DateTimeFormatter);
+    method public static java.time.chrono.ChronoZonedDateTime<?> from(java.time.temporal.TemporalAccessor);
+    method public default java.time.chrono.Chronology getChronology();
+    method public default long getLong(java.time.temporal.TemporalField);
+    method public java.time.ZoneOffset getOffset();
+    method public java.time.ZoneId getZone();
+    method public int hashCode();
+    method public default boolean isAfter(java.time.chrono.ChronoZonedDateTime<?>);
+    method public default boolean isBefore(java.time.chrono.ChronoZonedDateTime<?>);
+    method public default boolean isEqual(java.time.chrono.ChronoZonedDateTime<?>);
+    method public default boolean isSupported(java.time.temporal.TemporalUnit);
+    method public default java.time.chrono.ChronoZonedDateTime<D> minus(java.time.temporal.TemporalAmount);
+    method public default java.time.chrono.ChronoZonedDateTime<D> minus(long, java.time.temporal.TemporalUnit);
+    method public default java.time.chrono.ChronoZonedDateTime<D> plus(java.time.temporal.TemporalAmount);
+    method public java.time.chrono.ChronoZonedDateTime<D> plus(long, java.time.temporal.TemporalUnit);
+    method public static java.util.Comparator<java.time.chrono.ChronoZonedDateTime<?>> timeLineOrder();
+    method public default long toEpochSecond();
+    method public default java.time.Instant toInstant();
+    method public default D toLocalDate();
+    method public java.time.chrono.ChronoLocalDateTime<D> toLocalDateTime();
+    method public default java.time.LocalTime toLocalTime();
+    method public String toString();
+    method public default java.time.chrono.ChronoZonedDateTime<D> with(java.time.temporal.TemporalAdjuster);
+    method public java.time.chrono.ChronoZonedDateTime<D> with(java.time.temporal.TemporalField, long);
+    method public java.time.chrono.ChronoZonedDateTime<D> withEarlierOffsetAtOverlap();
+    method public java.time.chrono.ChronoZonedDateTime<D> withLaterOffsetAtOverlap();
+    method public java.time.chrono.ChronoZonedDateTime<D> withZoneSameInstant(java.time.ZoneId);
+    method public java.time.chrono.ChronoZonedDateTime<D> withZoneSameLocal(java.time.ZoneId);
+  }
+
+  public interface Chronology extends java.lang.Comparable<java.time.chrono.Chronology> {
+    method public int compareTo(java.time.chrono.Chronology);
+    method public default java.time.chrono.ChronoLocalDate date(java.time.chrono.Era, int, int, int);
+    method public java.time.chrono.ChronoLocalDate date(int, int, int);
+    method public java.time.chrono.ChronoLocalDate date(java.time.temporal.TemporalAccessor);
+    method public java.time.chrono.ChronoLocalDate dateEpochDay(long);
+    method public default java.time.chrono.ChronoLocalDate dateNow();
+    method public default java.time.chrono.ChronoLocalDate dateNow(java.time.ZoneId);
+    method public default java.time.chrono.ChronoLocalDate dateNow(java.time.Clock);
+    method public default java.time.chrono.ChronoLocalDate dateYearDay(java.time.chrono.Era, int, int);
+    method public java.time.chrono.ChronoLocalDate dateYearDay(int, int);
+    method public boolean equals(Object);
+    method public java.time.chrono.Era eraOf(int);
+    method public java.util.List<java.time.chrono.Era> eras();
+    method public static java.time.chrono.Chronology from(java.time.temporal.TemporalAccessor);
+    method public static java.util.Set<java.time.chrono.Chronology> getAvailableChronologies();
+    method public String getCalendarType();
+    method public default String getDisplayName(java.time.format.TextStyle, java.util.Locale);
+    method public String getId();
+    method public int hashCode();
+    method public boolean isLeapYear(long);
+    method public default java.time.chrono.ChronoLocalDateTime<? extends java.time.chrono.ChronoLocalDate> localDateTime(java.time.temporal.TemporalAccessor);
+    method public static java.time.chrono.Chronology of(String);
+    method public static java.time.chrono.Chronology ofLocale(java.util.Locale);
+    method public default java.time.chrono.ChronoPeriod period(int, int, int);
+    method public int prolepticYear(java.time.chrono.Era, int);
+    method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
+    method public java.time.chrono.ChronoLocalDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
+    method public String toString();
+    method public default java.time.chrono.ChronoZonedDateTime<? extends java.time.chrono.ChronoLocalDate> zonedDateTime(java.time.temporal.TemporalAccessor);
+    method public default java.time.chrono.ChronoZonedDateTime<? extends java.time.chrono.ChronoLocalDate> zonedDateTime(java.time.Instant, java.time.ZoneId);
+  }
+
+  public interface Era extends java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
+    method public default java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
+    method public default String getDisplayName(java.time.format.TextStyle, java.util.Locale);
+    method public default long getLong(java.time.temporal.TemporalField);
+    method public int getValue();
+    method public default boolean isSupported(java.time.temporal.TemporalField);
+  }
+
+  public final class HijrahChronology extends java.time.chrono.AbstractChronology implements java.io.Serializable {
+    method public java.time.chrono.HijrahDate date(java.time.chrono.Era, int, int, int);
+    method public java.time.chrono.HijrahDate date(int, int, int);
+    method public java.time.chrono.HijrahDate date(java.time.temporal.TemporalAccessor);
+    method public java.time.chrono.HijrahDate dateEpochDay(long);
+    method public java.time.chrono.HijrahDate dateNow();
+    method public java.time.chrono.HijrahDate dateNow(java.time.ZoneId);
+    method public java.time.chrono.HijrahDate dateNow(java.time.Clock);
+    method public java.time.chrono.HijrahDate dateYearDay(java.time.chrono.Era, int, int);
+    method public java.time.chrono.HijrahDate dateYearDay(int, int);
+    method public java.time.chrono.HijrahEra eraOf(int);
+    method public java.util.List<java.time.chrono.Era> eras();
+    method public String getCalendarType();
+    method public String getId();
+    method public boolean isLeapYear(long);
+    method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.HijrahDate> localDateTime(java.time.temporal.TemporalAccessor);
+    method public int prolepticYear(java.time.chrono.Era, int);
+    method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
+    method public java.time.chrono.HijrahDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
+    method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.HijrahDate> zonedDateTime(java.time.temporal.TemporalAccessor);
+    method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.HijrahDate> zonedDateTime(java.time.Instant, java.time.ZoneId);
+    field public static final java.time.chrono.HijrahChronology INSTANCE;
+  }
+
+  public final class HijrahDate implements java.time.chrono.ChronoLocalDate java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
+    method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.HijrahDate> atTime(java.time.LocalTime);
+    method public static java.time.chrono.HijrahDate from(java.time.temporal.TemporalAccessor);
+    method public java.time.chrono.HijrahChronology getChronology();
+    method public java.time.chrono.HijrahEra getEra();
+    method public long getLong(java.time.temporal.TemporalField);
+    method public int lengthOfMonth();
+    method public java.time.chrono.HijrahDate minus(java.time.temporal.TemporalAmount);
+    method public java.time.chrono.HijrahDate minus(long, java.time.temporal.TemporalUnit);
+    method public static java.time.chrono.HijrahDate now();
+    method public static java.time.chrono.HijrahDate now(java.time.ZoneId);
+    method public static java.time.chrono.HijrahDate now(java.time.Clock);
+    method public static java.time.chrono.HijrahDate of(int, int, int);
+    method public java.time.chrono.HijrahDate plus(java.time.temporal.TemporalAmount);
+    method public java.time.chrono.HijrahDate plus(long, java.time.temporal.TemporalUnit);
+    method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate);
+    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
+    method public java.time.chrono.HijrahDate with(java.time.temporal.TemporalField, long);
+    method public java.time.chrono.HijrahDate with(java.time.temporal.TemporalAdjuster);
+    method public java.time.chrono.HijrahDate withVariant(java.time.chrono.HijrahChronology);
+  }
+
+  public enum HijrahEra implements java.time.chrono.Era {
+    method public int getValue();
+    method public static java.time.chrono.HijrahEra of(int);
+    enum_constant public static final java.time.chrono.HijrahEra AH;
+  }
+
+  public final class IsoChronology extends java.time.chrono.AbstractChronology implements java.io.Serializable {
+    method public java.time.LocalDate date(java.time.chrono.Era, int, int, int);
+    method public java.time.LocalDate date(int, int, int);
+    method public java.time.LocalDate date(java.time.temporal.TemporalAccessor);
+    method public java.time.LocalDate dateEpochDay(long);
+    method public java.time.LocalDate dateNow();
+    method public java.time.LocalDate dateNow(java.time.ZoneId);
+    method public java.time.LocalDate dateNow(java.time.Clock);
+    method public java.time.LocalDate dateYearDay(java.time.chrono.Era, int, int);
+    method public java.time.LocalDate dateYearDay(int, int);
+    method public java.time.chrono.IsoEra eraOf(int);
+    method public java.util.List<java.time.chrono.Era> eras();
+    method public String getCalendarType();
+    method public String getId();
+    method public boolean isLeapYear(long);
+    method public java.time.LocalDateTime localDateTime(java.time.temporal.TemporalAccessor);
+    method public java.time.Period period(int, int, int);
+    method public int prolepticYear(java.time.chrono.Era, int);
+    method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
+    method public java.time.LocalDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
+    method public java.time.ZonedDateTime zonedDateTime(java.time.temporal.TemporalAccessor);
+    method public java.time.ZonedDateTime zonedDateTime(java.time.Instant, java.time.ZoneId);
+    field public static final java.time.chrono.IsoChronology INSTANCE;
+  }
+
+  public enum IsoEra implements java.time.chrono.Era {
+    method public int getValue();
+    method public static java.time.chrono.IsoEra of(int);
+    enum_constant public static final java.time.chrono.IsoEra BCE;
+    enum_constant public static final java.time.chrono.IsoEra CE;
+  }
+
+  public final class JapaneseChronology extends java.time.chrono.AbstractChronology implements java.io.Serializable {
+    method public java.time.chrono.JapaneseDate date(java.time.chrono.Era, int, int, int);
+    method public java.time.chrono.JapaneseDate date(int, int, int);
+    method public java.time.chrono.JapaneseDate date(java.time.temporal.TemporalAccessor);
+    method public java.time.chrono.JapaneseDate dateEpochDay(long);
+    method public java.time.chrono.JapaneseDate dateNow();
+    method public java.time.chrono.JapaneseDate dateNow(java.time.ZoneId);
+    method public java.time.chrono.JapaneseDate dateNow(java.time.Clock);
+    method public java.time.chrono.JapaneseDate dateYearDay(java.time.chrono.Era, int, int);
+    method public java.time.chrono.JapaneseDate dateYearDay(int, int);
+    method public java.time.chrono.JapaneseEra eraOf(int);
+    method public java.util.List<java.time.chrono.Era> eras();
+    method public String getCalendarType();
+    method public String getId();
+    method public boolean isLeapYear(long);
+    method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.JapaneseDate> localDateTime(java.time.temporal.TemporalAccessor);
+    method public int prolepticYear(java.time.chrono.Era, int);
+    method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
+    method public java.time.chrono.JapaneseDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
+    method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.JapaneseDate> zonedDateTime(java.time.temporal.TemporalAccessor);
+    method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.JapaneseDate> zonedDateTime(java.time.Instant, java.time.ZoneId);
+    field public static final java.time.chrono.JapaneseChronology INSTANCE;
+  }
+
+  public final class JapaneseDate implements java.time.chrono.ChronoLocalDate java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
+    method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.JapaneseDate> atTime(java.time.LocalTime);
+    method public static java.time.chrono.JapaneseDate from(java.time.temporal.TemporalAccessor);
+    method public java.time.chrono.JapaneseChronology getChronology();
+    method public java.time.chrono.JapaneseEra getEra();
+    method public long getLong(java.time.temporal.TemporalField);
+    method public int lengthOfMonth();
+    method public java.time.chrono.JapaneseDate minus(java.time.temporal.TemporalAmount);
+    method public java.time.chrono.JapaneseDate minus(long, java.time.temporal.TemporalUnit);
+    method public static java.time.chrono.JapaneseDate now();
+    method public static java.time.chrono.JapaneseDate now(java.time.ZoneId);
+    method public static java.time.chrono.JapaneseDate now(java.time.Clock);
+    method public static java.time.chrono.JapaneseDate of(java.time.chrono.JapaneseEra, int, int, int);
+    method public static java.time.chrono.JapaneseDate of(int, int, int);
+    method public java.time.chrono.JapaneseDate plus(java.time.temporal.TemporalAmount);
+    method public java.time.chrono.JapaneseDate plus(long, java.time.temporal.TemporalUnit);
+    method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate);
+    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
+    method public java.time.chrono.JapaneseDate with(java.time.temporal.TemporalField, long);
+    method public java.time.chrono.JapaneseDate with(java.time.temporal.TemporalAdjuster);
+  }
+
+  public final class JapaneseEra implements java.time.chrono.Era java.io.Serializable {
+    method public int getValue();
+    method public static java.time.chrono.JapaneseEra of(int);
+    method public static java.time.chrono.JapaneseEra valueOf(String);
+    method public static java.time.chrono.JapaneseEra[] values();
+    field public static final java.time.chrono.JapaneseEra HEISEI;
+    field public static final java.time.chrono.JapaneseEra MEIJI;
+    field public static final java.time.chrono.JapaneseEra REIWA;
+    field public static final java.time.chrono.JapaneseEra SHOWA;
+    field public static final java.time.chrono.JapaneseEra TAISHO;
+  }
+
+  public final class MinguoChronology extends java.time.chrono.AbstractChronology implements java.io.Serializable {
+    method public java.time.chrono.MinguoDate date(java.time.chrono.Era, int, int, int);
+    method public java.time.chrono.MinguoDate date(int, int, int);
+    method public java.time.chrono.MinguoDate date(java.time.temporal.TemporalAccessor);
+    method public java.time.chrono.MinguoDate dateEpochDay(long);
+    method public java.time.chrono.MinguoDate dateNow();
+    method public java.time.chrono.MinguoDate dateNow(java.time.ZoneId);
+    method public java.time.chrono.MinguoDate dateNow(java.time.Clock);
+    method public java.time.chrono.MinguoDate dateYearDay(java.time.chrono.Era, int, int);
+    method public java.time.chrono.MinguoDate dateYearDay(int, int);
+    method public java.time.chrono.MinguoEra eraOf(int);
+    method public java.util.List<java.time.chrono.Era> eras();
+    method public String getCalendarType();
+    method public String getId();
+    method public boolean isLeapYear(long);
+    method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.MinguoDate> localDateTime(java.time.temporal.TemporalAccessor);
+    method public int prolepticYear(java.time.chrono.Era, int);
+    method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
+    method public java.time.chrono.MinguoDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
+    method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.MinguoDate> zonedDateTime(java.time.temporal.TemporalAccessor);
+    method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.MinguoDate> zonedDateTime(java.time.Instant, java.time.ZoneId);
+    field public static final java.time.chrono.MinguoChronology INSTANCE;
+  }
+
+  public final class MinguoDate implements java.time.chrono.ChronoLocalDate java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
+    method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.MinguoDate> atTime(java.time.LocalTime);
+    method public static java.time.chrono.MinguoDate from(java.time.temporal.TemporalAccessor);
+    method public java.time.chrono.MinguoChronology getChronology();
+    method public java.time.chrono.MinguoEra getEra();
+    method public long getLong(java.time.temporal.TemporalField);
+    method public int lengthOfMonth();
+    method public java.time.chrono.MinguoDate minus(java.time.temporal.TemporalAmount);
+    method public java.time.chrono.MinguoDate minus(long, java.time.temporal.TemporalUnit);
+    method public static java.time.chrono.MinguoDate now();
+    method public static java.time.chrono.MinguoDate now(java.time.ZoneId);
+    method public static java.time.chrono.MinguoDate now(java.time.Clock);
+    method public static java.time.chrono.MinguoDate of(int, int, int);
+    method public java.time.chrono.MinguoDate plus(java.time.temporal.TemporalAmount);
+    method public java.time.chrono.MinguoDate plus(long, java.time.temporal.TemporalUnit);
+    method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate);
+    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
+    method public java.time.chrono.MinguoDate with(java.time.temporal.TemporalField, long);
+    method public java.time.chrono.MinguoDate with(java.time.temporal.TemporalAdjuster);
+  }
+
+  public enum MinguoEra implements java.time.chrono.Era {
+    method public int getValue();
+    method public static java.time.chrono.MinguoEra of(int);
+    enum_constant public static final java.time.chrono.MinguoEra BEFORE_ROC;
+    enum_constant public static final java.time.chrono.MinguoEra ROC;
+  }
+
+  public final class ThaiBuddhistChronology extends java.time.chrono.AbstractChronology implements java.io.Serializable {
+    method public java.time.chrono.ThaiBuddhistDate date(java.time.chrono.Era, int, int, int);
+    method public java.time.chrono.ThaiBuddhistDate date(int, int, int);
+    method public java.time.chrono.ThaiBuddhistDate date(java.time.temporal.TemporalAccessor);
+    method public java.time.chrono.ThaiBuddhistDate dateEpochDay(long);
+    method public java.time.chrono.ThaiBuddhistDate dateNow();
+    method public java.time.chrono.ThaiBuddhistDate dateNow(java.time.ZoneId);
+    method public java.time.chrono.ThaiBuddhistDate dateNow(java.time.Clock);
+    method public java.time.chrono.ThaiBuddhistDate dateYearDay(java.time.chrono.Era, int, int);
+    method public java.time.chrono.ThaiBuddhistDate dateYearDay(int, int);
+    method public java.time.chrono.ThaiBuddhistEra eraOf(int);
+    method public java.util.List<java.time.chrono.Era> eras();
+    method public String getCalendarType();
+    method public String getId();
+    method public boolean isLeapYear(long);
+    method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.ThaiBuddhistDate> localDateTime(java.time.temporal.TemporalAccessor);
+    method public int prolepticYear(java.time.chrono.Era, int);
+    method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
+    method public java.time.chrono.ThaiBuddhistDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
+    method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.ThaiBuddhistDate> zonedDateTime(java.time.temporal.TemporalAccessor);
+    method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.ThaiBuddhistDate> zonedDateTime(java.time.Instant, java.time.ZoneId);
+    field public static final java.time.chrono.ThaiBuddhistChronology INSTANCE;
+  }
+
+  public final class ThaiBuddhistDate implements java.time.chrono.ChronoLocalDate java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
+    method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.ThaiBuddhistDate> atTime(java.time.LocalTime);
+    method public static java.time.chrono.ThaiBuddhistDate from(java.time.temporal.TemporalAccessor);
+    method public java.time.chrono.ThaiBuddhistChronology getChronology();
+    method public java.time.chrono.ThaiBuddhistEra getEra();
+    method public long getLong(java.time.temporal.TemporalField);
+    method public int lengthOfMonth();
+    method public java.time.chrono.ThaiBuddhistDate minus(java.time.temporal.TemporalAmount);
+    method public java.time.chrono.ThaiBuddhistDate minus(long, java.time.temporal.TemporalUnit);
+    method public static java.time.chrono.ThaiBuddhistDate now();
+    method public static java.time.chrono.ThaiBuddhistDate now(java.time.ZoneId);
+    method public static java.time.chrono.ThaiBuddhistDate now(java.time.Clock);
+    method public static java.time.chrono.ThaiBuddhistDate of(int, int, int);
+    method public java.time.chrono.ThaiBuddhistDate plus(java.time.temporal.TemporalAmount);
+    method public java.time.chrono.ThaiBuddhistDate plus(long, java.time.temporal.TemporalUnit);
+    method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate);
+    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
+    method public java.time.chrono.ThaiBuddhistDate with(java.time.temporal.TemporalField, long);
+    method public java.time.chrono.ThaiBuddhistDate with(java.time.temporal.TemporalAdjuster);
+  }
+
+  public enum ThaiBuddhistEra implements java.time.chrono.Era {
+    method public int getValue();
+    method public static java.time.chrono.ThaiBuddhistEra of(int);
+    enum_constant public static final java.time.chrono.ThaiBuddhistEra BE;
+    enum_constant public static final java.time.chrono.ThaiBuddhistEra BEFORE_BE;
+  }
+
+}
+
+package java.time.format {
+
+  public final class DateTimeFormatter {
+    method public String format(java.time.temporal.TemporalAccessor);
+    method public void formatTo(java.time.temporal.TemporalAccessor, Appendable);
+    method public java.time.chrono.Chronology getChronology();
+    method public java.time.format.DecimalStyle getDecimalStyle();
+    method public java.util.Locale getLocale();
+    method public java.util.Set<java.time.temporal.TemporalField> getResolverFields();
+    method public java.time.format.ResolverStyle getResolverStyle();
+    method public java.time.ZoneId getZone();
+    method public static java.time.format.DateTimeFormatter ofLocalizedDate(java.time.format.FormatStyle);
+    method public static java.time.format.DateTimeFormatter ofLocalizedDateTime(java.time.format.FormatStyle);
+    method public static java.time.format.DateTimeFormatter ofLocalizedDateTime(java.time.format.FormatStyle, java.time.format.FormatStyle);
+    method public static java.time.format.DateTimeFormatter ofLocalizedTime(java.time.format.FormatStyle);
+    method public static java.time.format.DateTimeFormatter ofPattern(String);
+    method public static java.time.format.DateTimeFormatter ofPattern(String, java.util.Locale);
+    method public java.time.temporal.TemporalAccessor parse(CharSequence);
+    method public java.time.temporal.TemporalAccessor parse(CharSequence, java.text.ParsePosition);
+    method public <T> T parse(CharSequence, java.time.temporal.TemporalQuery<T>);
+    method public java.time.temporal.TemporalAccessor parseBest(CharSequence, java.time.temporal.TemporalQuery<?>...);
+    method public java.time.temporal.TemporalAccessor parseUnresolved(CharSequence, java.text.ParsePosition);
+    method public static java.time.temporal.TemporalQuery<java.time.Period> parsedExcessDays();
+    method public static java.time.temporal.TemporalQuery<java.lang.Boolean> parsedLeapSecond();
+    method public java.text.Format toFormat();
+    method public java.text.Format toFormat(java.time.temporal.TemporalQuery<?>);
+    method public java.time.format.DateTimeFormatter withChronology(java.time.chrono.Chronology);
+    method public java.time.format.DateTimeFormatter withDecimalStyle(java.time.format.DecimalStyle);
+    method public java.time.format.DateTimeFormatter withLocale(java.util.Locale);
+    method public java.time.format.DateTimeFormatter withResolverFields(java.time.temporal.TemporalField...);
+    method public java.time.format.DateTimeFormatter withResolverFields(java.util.Set<java.time.temporal.TemporalField>);
+    method public java.time.format.DateTimeFormatter withResolverStyle(java.time.format.ResolverStyle);
+    method public java.time.format.DateTimeFormatter withZone(java.time.ZoneId);
+    field public static final java.time.format.DateTimeFormatter BASIC_ISO_DATE;
+    field public static final java.time.format.DateTimeFormatter ISO_DATE;
+    field public static final java.time.format.DateTimeFormatter ISO_DATE_TIME;
+    field public static final java.time.format.DateTimeFormatter ISO_INSTANT;
+    field public static final java.time.format.DateTimeFormatter ISO_LOCAL_DATE;
+    field public static final java.time.format.DateTimeFormatter ISO_LOCAL_DATE_TIME;
+    field public static final java.time.format.DateTimeFormatter ISO_LOCAL_TIME;
+    field public static final java.time.format.DateTimeFormatter ISO_OFFSET_DATE;
+    field public static final java.time.format.DateTimeFormatter ISO_OFFSET_DATE_TIME;
+    field public static final java.time.format.DateTimeFormatter ISO_OFFSET_TIME;
+    field public static final java.time.format.DateTimeFormatter ISO_ORDINAL_DATE;
+    field public static final java.time.format.DateTimeFormatter ISO_TIME;
+    field public static final java.time.format.DateTimeFormatter ISO_WEEK_DATE;
+    field public static final java.time.format.DateTimeFormatter ISO_ZONED_DATE_TIME;
+    field public static final java.time.format.DateTimeFormatter RFC_1123_DATE_TIME;
+  }
+
+  public final class DateTimeFormatterBuilder {
+    ctor public DateTimeFormatterBuilder();
+    method public java.time.format.DateTimeFormatterBuilder append(java.time.format.DateTimeFormatter);
+    method public java.time.format.DateTimeFormatterBuilder appendChronologyId();
+    method public java.time.format.DateTimeFormatterBuilder appendChronologyText(java.time.format.TextStyle);
+    method public java.time.format.DateTimeFormatterBuilder appendFraction(java.time.temporal.TemporalField, int, int, boolean);
+    method public java.time.format.DateTimeFormatterBuilder appendInstant();
+    method public java.time.format.DateTimeFormatterBuilder appendInstant(int);
+    method public java.time.format.DateTimeFormatterBuilder appendLiteral(char);
+    method public java.time.format.DateTimeFormatterBuilder appendLiteral(String);
+    method public java.time.format.DateTimeFormatterBuilder appendLocalized(java.time.format.FormatStyle, java.time.format.FormatStyle);
+    method public java.time.format.DateTimeFormatterBuilder appendLocalizedOffset(java.time.format.TextStyle);
+    method public java.time.format.DateTimeFormatterBuilder appendOffset(String, String);
+    method public java.time.format.DateTimeFormatterBuilder appendOffsetId();
+    method public java.time.format.DateTimeFormatterBuilder appendOptional(java.time.format.DateTimeFormatter);
+    method public java.time.format.DateTimeFormatterBuilder appendPattern(String);
+    method public java.time.format.DateTimeFormatterBuilder appendText(java.time.temporal.TemporalField);
+    method public java.time.format.DateTimeFormatterBuilder appendText(java.time.temporal.TemporalField, java.time.format.TextStyle);
+    method public java.time.format.DateTimeFormatterBuilder appendText(java.time.temporal.TemporalField, java.util.Map<java.lang.Long,java.lang.String>);
+    method public java.time.format.DateTimeFormatterBuilder appendValue(java.time.temporal.TemporalField);
+    method public java.time.format.DateTimeFormatterBuilder appendValue(java.time.temporal.TemporalField, int);
+    method public java.time.format.DateTimeFormatterBuilder appendValue(java.time.temporal.TemporalField, int, int, java.time.format.SignStyle);
+    method public java.time.format.DateTimeFormatterBuilder appendValueReduced(java.time.temporal.TemporalField, int, int, int);
+    method public java.time.format.DateTimeFormatterBuilder appendValueReduced(java.time.temporal.TemporalField, int, int, java.time.chrono.ChronoLocalDate);
+    method public java.time.format.DateTimeFormatterBuilder appendZoneId();
+    method public java.time.format.DateTimeFormatterBuilder appendZoneOrOffsetId();
+    method public java.time.format.DateTimeFormatterBuilder appendZoneRegionId();
+    method public java.time.format.DateTimeFormatterBuilder appendZoneText(java.time.format.TextStyle);
+    method public java.time.format.DateTimeFormatterBuilder appendZoneText(java.time.format.TextStyle, java.util.Set<java.time.ZoneId>);
+    method public static String getLocalizedDateTimePattern(java.time.format.FormatStyle, java.time.format.FormatStyle, java.time.chrono.Chronology, java.util.Locale);
+    method public java.time.format.DateTimeFormatterBuilder optionalEnd();
+    method public java.time.format.DateTimeFormatterBuilder optionalStart();
+    method public java.time.format.DateTimeFormatterBuilder padNext(int);
+    method public java.time.format.DateTimeFormatterBuilder padNext(int, char);
+    method public java.time.format.DateTimeFormatterBuilder parseCaseInsensitive();
+    method public java.time.format.DateTimeFormatterBuilder parseCaseSensitive();
+    method public java.time.format.DateTimeFormatterBuilder parseDefaulting(java.time.temporal.TemporalField, long);
+    method public java.time.format.DateTimeFormatterBuilder parseLenient();
+    method public java.time.format.DateTimeFormatterBuilder parseStrict();
+    method public java.time.format.DateTimeFormatter toFormatter();
+    method public java.time.format.DateTimeFormatter toFormatter(java.util.Locale);
+  }
+
+  public class DateTimeParseException extends java.time.DateTimeException {
+    ctor public DateTimeParseException(String, CharSequence, int);
+    ctor public DateTimeParseException(String, CharSequence, int, Throwable);
+    method public int getErrorIndex();
+    method public String getParsedString();
+  }
+
+  public final class DecimalStyle {
+    method public static java.util.Set<java.util.Locale> getAvailableLocales();
+    method public char getDecimalSeparator();
+    method public char getNegativeSign();
+    method public char getPositiveSign();
+    method public char getZeroDigit();
+    method public static java.time.format.DecimalStyle of(java.util.Locale);
+    method public static java.time.format.DecimalStyle ofDefaultLocale();
+    method public java.time.format.DecimalStyle withDecimalSeparator(char);
+    method public java.time.format.DecimalStyle withNegativeSign(char);
+    method public java.time.format.DecimalStyle withPositiveSign(char);
+    method public java.time.format.DecimalStyle withZeroDigit(char);
+    field public static final java.time.format.DecimalStyle STANDARD;
+  }
+
+  public enum FormatStyle {
+    enum_constant public static final java.time.format.FormatStyle FULL;
+    enum_constant public static final java.time.format.FormatStyle LONG;
+    enum_constant public static final java.time.format.FormatStyle MEDIUM;
+    enum_constant public static final java.time.format.FormatStyle SHORT;
+  }
+
+  public enum ResolverStyle {
+    enum_constant public static final java.time.format.ResolverStyle LENIENT;
+    enum_constant public static final java.time.format.ResolverStyle SMART;
+    enum_constant public static final java.time.format.ResolverStyle STRICT;
+  }
+
+  public enum SignStyle {
+    enum_constant public static final java.time.format.SignStyle ALWAYS;
+    enum_constant public static final java.time.format.SignStyle EXCEEDS_PAD;
+    enum_constant public static final java.time.format.SignStyle NEVER;
+    enum_constant public static final java.time.format.SignStyle NORMAL;
+    enum_constant public static final java.time.format.SignStyle NOT_NEGATIVE;
+  }
+
+  public enum TextStyle {
+    method public java.time.format.TextStyle asNormal();
+    method public java.time.format.TextStyle asStandalone();
+    method public boolean isStandalone();
+    enum_constant public static final java.time.format.TextStyle FULL;
+    enum_constant public static final java.time.format.TextStyle FULL_STANDALONE;
+    enum_constant public static final java.time.format.TextStyle NARROW;
+    enum_constant public static final java.time.format.TextStyle NARROW_STANDALONE;
+    enum_constant public static final java.time.format.TextStyle SHORT;
+    enum_constant public static final java.time.format.TextStyle SHORT_STANDALONE;
+  }
+
+}
+
+package java.time.temporal {
+
+  public enum ChronoField implements java.time.temporal.TemporalField {
+    method public <R extends java.time.temporal.Temporal> R adjustInto(R, long);
+    method public int checkValidIntValue(long);
+    method public long checkValidValue(long);
+    method public java.time.temporal.TemporalUnit getBaseUnit();
+    method public long getFrom(java.time.temporal.TemporalAccessor);
+    method public java.time.temporal.TemporalUnit getRangeUnit();
+    method public boolean isDateBased();
+    method public boolean isSupportedBy(java.time.temporal.TemporalAccessor);
+    method public boolean isTimeBased();
+    method public java.time.temporal.ValueRange range();
+    method public java.time.temporal.ValueRange rangeRefinedBy(java.time.temporal.TemporalAccessor);
+    enum_constant public static final java.time.temporal.ChronoField ALIGNED_DAY_OF_WEEK_IN_MONTH;
+    enum_constant public static final java.time.temporal.ChronoField ALIGNED_DAY_OF_WEEK_IN_YEAR;
+    enum_constant public static final java.time.temporal.ChronoField ALIGNED_WEEK_OF_MONTH;
+    enum_constant public static final java.time.temporal.ChronoField ALIGNED_WEEK_OF_YEAR;
+    enum_constant public static final java.time.temporal.ChronoField AMPM_OF_DAY;
+    enum_constant public static final java.time.temporal.ChronoField CLOCK_HOUR_OF_AMPM;
+    enum_constant public static final java.time.temporal.ChronoField CLOCK_HOUR_OF_DAY;
+    enum_constant public static final java.time.temporal.ChronoField DAY_OF_MONTH;
+    enum_constant public static final java.time.temporal.ChronoField DAY_OF_WEEK;
+    enum_constant public static final java.time.temporal.ChronoField DAY_OF_YEAR;
+    enum_constant public static final java.time.temporal.ChronoField EPOCH_DAY;
+    enum_constant public static final java.time.temporal.ChronoField ERA;
+    enum_constant public static final java.time.temporal.ChronoField HOUR_OF_AMPM;
+    enum_constant public static final java.time.temporal.ChronoField HOUR_OF_DAY;
+    enum_constant public static final java.time.temporal.ChronoField INSTANT_SECONDS;
+    enum_constant public static final java.time.temporal.ChronoField MICRO_OF_DAY;
+    enum_constant public static final java.time.temporal.ChronoField MICRO_OF_SECOND;
+    enum_constant public static final java.time.temporal.ChronoField MILLI_OF_DAY;
+    enum_constant public static final java.time.temporal.ChronoField MILLI_OF_SECOND;
+    enum_constant public static final java.time.temporal.ChronoField MINUTE_OF_DAY;
+    enum_constant public static final java.time.temporal.ChronoField MINUTE_OF_HOUR;
+    enum_constant public static final java.time.temporal.ChronoField MONTH_OF_YEAR;
+    enum_constant public static final java.time.temporal.ChronoField NANO_OF_DAY;
+    enum_constant public static final java.time.temporal.ChronoField NANO_OF_SECOND;
+    enum_constant public static final java.time.temporal.ChronoField OFFSET_SECONDS;
+    enum_constant public static final java.time.temporal.ChronoField PROLEPTIC_MONTH;
+    enum_constant public static final java.time.temporal.ChronoField SECOND_OF_DAY;
+    enum_constant public static final java.time.temporal.ChronoField SECOND_OF_MINUTE;
+    enum_constant public static final java.time.temporal.ChronoField YEAR;
+    enum_constant public static final java.time.temporal.ChronoField YEAR_OF_ERA;
+  }
+
+  public enum ChronoUnit implements java.time.temporal.TemporalUnit {
+    method public <R extends java.time.temporal.Temporal> R addTo(R, long);
+    method public long between(java.time.temporal.Temporal, java.time.temporal.Temporal);
+    method public java.time.Duration getDuration();
+    method public boolean isDateBased();
+    method public boolean isDurationEstimated();
+    method public boolean isTimeBased();
+    enum_constant public static final java.time.temporal.ChronoUnit CENTURIES;
+    enum_constant public static final java.time.temporal.ChronoUnit DAYS;
+    enum_constant public static final java.time.temporal.ChronoUnit DECADES;
+    enum_constant public static final java.time.temporal.ChronoUnit ERAS;
+    enum_constant public static final java.time.temporal.ChronoUnit FOREVER;
+    enum_constant public static final java.time.temporal.ChronoUnit HALF_DAYS;
+    enum_constant public static final java.time.temporal.ChronoUnit HOURS;
+    enum_constant public static final java.time.temporal.ChronoUnit MICROS;
+    enum_constant public static final java.time.temporal.ChronoUnit MILLENNIA;
+    enum_constant public static final java.time.temporal.ChronoUnit MILLIS;
+    enum_constant public static final java.time.temporal.ChronoUnit MINUTES;
+    enum_constant public static final java.time.temporal.ChronoUnit MONTHS;
+    enum_constant public static final java.time.temporal.ChronoUnit NANOS;
+    enum_constant public static final java.time.temporal.ChronoUnit SECONDS;
+    enum_constant public static final java.time.temporal.ChronoUnit WEEKS;
+    enum_constant public static final java.time.temporal.ChronoUnit YEARS;
+  }
+
+  public final class IsoFields {
+    field public static final java.time.temporal.TemporalField DAY_OF_QUARTER;
+    field public static final java.time.temporal.TemporalField QUARTER_OF_YEAR;
+    field public static final java.time.temporal.TemporalUnit QUARTER_YEARS;
+    field public static final java.time.temporal.TemporalField WEEK_BASED_YEAR;
+    field public static final java.time.temporal.TemporalUnit WEEK_BASED_YEARS;
+    field public static final java.time.temporal.TemporalField WEEK_OF_WEEK_BASED_YEAR;
+  }
+
+  public final class JulianFields {
+    field public static final java.time.temporal.TemporalField JULIAN_DAY;
+    field public static final java.time.temporal.TemporalField MODIFIED_JULIAN_DAY;
+    field public static final java.time.temporal.TemporalField RATA_DIE;
+  }
+
+  public interface Temporal extends java.time.temporal.TemporalAccessor {
+    method public boolean isSupported(java.time.temporal.TemporalUnit);
+    method public default java.time.temporal.Temporal minus(java.time.temporal.TemporalAmount);
+    method public default java.time.temporal.Temporal minus(long, java.time.temporal.TemporalUnit);
+    method public default java.time.temporal.Temporal plus(java.time.temporal.TemporalAmount);
+    method public java.time.temporal.Temporal plus(long, java.time.temporal.TemporalUnit);
+    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
+    method public default java.time.temporal.Temporal with(java.time.temporal.TemporalAdjuster);
+    method public java.time.temporal.Temporal with(java.time.temporal.TemporalField, long);
+  }
+
+  public interface TemporalAccessor {
+    method public default int get(java.time.temporal.TemporalField);
+    method public long getLong(java.time.temporal.TemporalField);
+    method public boolean isSupported(java.time.temporal.TemporalField);
+    method public default <R> R query(java.time.temporal.TemporalQuery<R>);
+    method public default java.time.temporal.ValueRange range(java.time.temporal.TemporalField);
+  }
+
+  @java.lang.FunctionalInterface public interface TemporalAdjuster {
+    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
+  }
+
+  public final class TemporalAdjusters {
+    method public static java.time.temporal.TemporalAdjuster dayOfWeekInMonth(int, java.time.DayOfWeek);
+    method public static java.time.temporal.TemporalAdjuster firstDayOfMonth();
+    method public static java.time.temporal.TemporalAdjuster firstDayOfNextMonth();
+    method public static java.time.temporal.TemporalAdjuster firstDayOfNextYear();
+    method public static java.time.temporal.TemporalAdjuster firstDayOfYear();
+    method public static java.time.temporal.TemporalAdjuster firstInMonth(java.time.DayOfWeek);
+    method public static java.time.temporal.TemporalAdjuster lastDayOfMonth();
+    method public static java.time.temporal.TemporalAdjuster lastDayOfYear();
+    method public static java.time.temporal.TemporalAdjuster lastInMonth(java.time.DayOfWeek);
+    method public static java.time.temporal.TemporalAdjuster next(java.time.DayOfWeek);
+    method public static java.time.temporal.TemporalAdjuster nextOrSame(java.time.DayOfWeek);
+    method public static java.time.temporal.TemporalAdjuster ofDateAdjuster(java.util.function.UnaryOperator<java.time.LocalDate>);
+    method public static java.time.temporal.TemporalAdjuster previous(java.time.DayOfWeek);
+    method public static java.time.temporal.TemporalAdjuster previousOrSame(java.time.DayOfWeek);
+  }
+
+  public interface TemporalAmount {
+    method public java.time.temporal.Temporal addTo(java.time.temporal.Temporal);
+    method public long get(java.time.temporal.TemporalUnit);
+    method public java.util.List<java.time.temporal.TemporalUnit> getUnits();
+    method public java.time.temporal.Temporal subtractFrom(java.time.temporal.Temporal);
+  }
+
+  public interface TemporalField {
+    method public <R extends java.time.temporal.Temporal> R adjustInto(R, long);
+    method public java.time.temporal.TemporalUnit getBaseUnit();
+    method public default String getDisplayName(java.util.Locale);
+    method public long getFrom(java.time.temporal.TemporalAccessor);
+    method public java.time.temporal.TemporalUnit getRangeUnit();
+    method public boolean isDateBased();
+    method public boolean isSupportedBy(java.time.temporal.TemporalAccessor);
+    method public boolean isTimeBased();
+    method public java.time.temporal.ValueRange range();
+    method public java.time.temporal.ValueRange rangeRefinedBy(java.time.temporal.TemporalAccessor);
+    method public default java.time.temporal.TemporalAccessor resolve(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.temporal.TemporalAccessor, java.time.format.ResolverStyle);
+    method public String toString();
+  }
+
+  public final class TemporalQueries {
+    method public static java.time.temporal.TemporalQuery<java.time.chrono.Chronology> chronology();
+    method public static java.time.temporal.TemporalQuery<java.time.LocalDate> localDate();
+    method public static java.time.temporal.TemporalQuery<java.time.LocalTime> localTime();
+    method public static java.time.temporal.TemporalQuery<java.time.ZoneOffset> offset();
+    method public static java.time.temporal.TemporalQuery<java.time.temporal.TemporalUnit> precision();
+    method public static java.time.temporal.TemporalQuery<java.time.ZoneId> zone();
+    method public static java.time.temporal.TemporalQuery<java.time.ZoneId> zoneId();
+  }
+
+  @java.lang.FunctionalInterface public interface TemporalQuery<R> {
+    method public R queryFrom(java.time.temporal.TemporalAccessor);
+  }
+
+  public interface TemporalUnit {
+    method public <R extends java.time.temporal.Temporal> R addTo(R, long);
+    method public long between(java.time.temporal.Temporal, java.time.temporal.Temporal);
+    method public java.time.Duration getDuration();
+    method public boolean isDateBased();
+    method public boolean isDurationEstimated();
+    method public default boolean isSupportedBy(java.time.temporal.Temporal);
+    method public boolean isTimeBased();
+    method public String toString();
+  }
+
+  public class UnsupportedTemporalTypeException extends java.time.DateTimeException {
+    ctor public UnsupportedTemporalTypeException(String);
+    ctor public UnsupportedTemporalTypeException(String, Throwable);
+  }
+
+  public final class ValueRange implements java.io.Serializable {
+    method public int checkValidIntValue(long, java.time.temporal.TemporalField);
+    method public long checkValidValue(long, java.time.temporal.TemporalField);
+    method public long getLargestMinimum();
+    method public long getMaximum();
+    method public long getMinimum();
+    method public long getSmallestMaximum();
+    method public boolean isFixed();
+    method public boolean isIntValue();
+    method public boolean isValidIntValue(long);
+    method public boolean isValidValue(long);
+    method public static java.time.temporal.ValueRange of(long, long);
+    method public static java.time.temporal.ValueRange of(long, long, long);
+    method public static java.time.temporal.ValueRange of(long, long, long, long);
+  }
+
+  public final class WeekFields implements java.io.Serializable {
+    method public java.time.temporal.TemporalField dayOfWeek();
+    method public java.time.DayOfWeek getFirstDayOfWeek();
+    method public int getMinimalDaysInFirstWeek();
+    method public static java.time.temporal.WeekFields of(java.util.Locale);
+    method public static java.time.temporal.WeekFields of(java.time.DayOfWeek, int);
+    method public java.time.temporal.TemporalField weekBasedYear();
+    method public java.time.temporal.TemporalField weekOfMonth();
+    method public java.time.temporal.TemporalField weekOfWeekBasedYear();
+    method public java.time.temporal.TemporalField weekOfYear();
+    field public static final java.time.temporal.WeekFields ISO;
+    field public static final java.time.temporal.WeekFields SUNDAY_START;
+    field public static final java.time.temporal.TemporalUnit WEEK_BASED_YEARS;
+  }
+
+}
+
+package java.time.zone {
+
+  public final class ZoneOffsetTransition implements java.lang.Comparable<java.time.zone.ZoneOffsetTransition> java.io.Serializable {
+    method public int compareTo(java.time.zone.ZoneOffsetTransition);
+    method public java.time.LocalDateTime getDateTimeAfter();
+    method public java.time.LocalDateTime getDateTimeBefore();
+    method public java.time.Duration getDuration();
+    method public java.time.Instant getInstant();
+    method public java.time.ZoneOffset getOffsetAfter();
+    method public java.time.ZoneOffset getOffsetBefore();
+    method public boolean isGap();
+    method public boolean isOverlap();
+    method public boolean isValidOffset(java.time.ZoneOffset);
+    method public static java.time.zone.ZoneOffsetTransition of(java.time.LocalDateTime, java.time.ZoneOffset, java.time.ZoneOffset);
+    method public long toEpochSecond();
+  }
+
+  public final class ZoneOffsetTransitionRule implements java.io.Serializable {
+    method public java.time.zone.ZoneOffsetTransition createTransition(int);
+    method public int getDayOfMonthIndicator();
+    method public java.time.DayOfWeek getDayOfWeek();
+    method public java.time.LocalTime getLocalTime();
+    method public java.time.Month getMonth();
+    method public java.time.ZoneOffset getOffsetAfter();
+    method public java.time.ZoneOffset getOffsetBefore();
+    method public java.time.ZoneOffset getStandardOffset();
+    method public java.time.zone.ZoneOffsetTransitionRule.TimeDefinition getTimeDefinition();
+    method public boolean isMidnightEndOfDay();
+    method public static java.time.zone.ZoneOffsetTransitionRule of(java.time.Month, int, java.time.DayOfWeek, java.time.LocalTime, boolean, java.time.zone.ZoneOffsetTransitionRule.TimeDefinition, java.time.ZoneOffset, java.time.ZoneOffset, java.time.ZoneOffset);
+  }
+
+  public enum ZoneOffsetTransitionRule.TimeDefinition {
+    method public java.time.LocalDateTime createDateTime(java.time.LocalDateTime, java.time.ZoneOffset, java.time.ZoneOffset);
+    enum_constant public static final java.time.zone.ZoneOffsetTransitionRule.TimeDefinition STANDARD;
+    enum_constant public static final java.time.zone.ZoneOffsetTransitionRule.TimeDefinition UTC;
+    enum_constant public static final java.time.zone.ZoneOffsetTransitionRule.TimeDefinition WALL;
+  }
+
+  public final class ZoneRules implements java.io.Serializable {
+    method public java.time.Duration getDaylightSavings(java.time.Instant);
+    method public java.time.ZoneOffset getOffset(java.time.Instant);
+    method public java.time.ZoneOffset getOffset(java.time.LocalDateTime);
+    method public java.time.ZoneOffset getStandardOffset(java.time.Instant);
+    method public java.time.zone.ZoneOffsetTransition getTransition(java.time.LocalDateTime);
+    method public java.util.List<java.time.zone.ZoneOffsetTransitionRule> getTransitionRules();
+    method public java.util.List<java.time.zone.ZoneOffsetTransition> getTransitions();
+    method public java.util.List<java.time.ZoneOffset> getValidOffsets(java.time.LocalDateTime);
+    method public boolean isDaylightSavings(java.time.Instant);
+    method public boolean isFixedOffset();
+    method public boolean isValidOffset(java.time.LocalDateTime, java.time.ZoneOffset);
+    method public java.time.zone.ZoneOffsetTransition nextTransition(java.time.Instant);
+    method public static java.time.zone.ZoneRules of(java.time.ZoneOffset, java.time.ZoneOffset, java.util.List<java.time.zone.ZoneOffsetTransition>, java.util.List<java.time.zone.ZoneOffsetTransition>, java.util.List<java.time.zone.ZoneOffsetTransitionRule>);
+    method public static java.time.zone.ZoneRules of(java.time.ZoneOffset);
+    method public java.time.zone.ZoneOffsetTransition previousTransition(java.time.Instant);
+  }
+
+  public class ZoneRulesException extends java.time.DateTimeException {
+    ctor public ZoneRulesException(String);
+    ctor public ZoneRulesException(String, Throwable);
+  }
+
+}
+
+package java.util {
+
+  public abstract class AbstractCollection<E> implements java.util.Collection<E> {
+    ctor protected AbstractCollection();
+    method public boolean add(E);
+    method public boolean addAll(@NonNull java.util.Collection<? extends E>);
+    method public void clear();
+    method public boolean contains(@Nullable Object);
+    method public boolean containsAll(@NonNull java.util.Collection<?>);
+    method public boolean isEmpty();
+    method public boolean remove(@Nullable Object);
+    method public boolean removeAll(@NonNull java.util.Collection<?>);
+    method public boolean retainAll(@NonNull java.util.Collection<?>);
+    method @NonNull public Object[] toArray();
+    method @NonNull public <T> T[] toArray(@NonNull T[]);
+  }
+
+  public abstract class AbstractList<E> extends java.util.AbstractCollection<E> implements java.util.List<E> {
+    ctor protected AbstractList();
+    method public void add(int, E);
+    method public boolean addAll(int, @NonNull java.util.Collection<? extends E>);
+    method public int indexOf(@Nullable Object);
+    method @NonNull public java.util.Iterator<E> iterator();
+    method public int lastIndexOf(@Nullable Object);
+    method @NonNull public java.util.ListIterator<E> listIterator();
+    method @NonNull public java.util.ListIterator<E> listIterator(int);
+    method public E remove(int);
+    method protected void removeRange(int, int);
+    method public E set(int, E);
+    method @NonNull public java.util.List<E> subList(int, int);
+    field protected transient int modCount;
+  }
+
+  public abstract class AbstractMap<K, V> implements java.util.Map<K,V> {
+    ctor protected AbstractMap();
+    method public void clear();
+    method public boolean containsKey(@Nullable Object);
+    method public boolean containsValue(@Nullable Object);
+    method @Nullable public V get(@Nullable Object);
+    method public boolean isEmpty();
+    method @NonNull public java.util.Set<K> keySet();
+    method @Nullable public V put(K, V);
+    method public void putAll(@NonNull java.util.Map<? extends K,? extends V>);
+    method @Nullable public V remove(@Nullable Object);
+    method public int size();
+    method @NonNull public java.util.Collection<V> values();
+  }
+
+  public static class AbstractMap.SimpleEntry<K, V> implements java.util.Map.Entry<K,V> java.io.Serializable {
+    ctor public AbstractMap.SimpleEntry(K, V);
+    ctor public AbstractMap.SimpleEntry(@NonNull java.util.Map.Entry<? extends K,? extends V>);
+    method public K getKey();
+    method public V getValue();
+    method public V setValue(V);
+  }
+
+  public static class AbstractMap.SimpleImmutableEntry<K, V> implements java.util.Map.Entry<K,V> java.io.Serializable {
+    ctor public AbstractMap.SimpleImmutableEntry(K, V);
+    ctor public AbstractMap.SimpleImmutableEntry(@NonNull java.util.Map.Entry<? extends K,? extends V>);
+    method public K getKey();
+    method public V getValue();
+    method public V setValue(V);
+  }
+
+  public abstract class AbstractQueue<E> extends java.util.AbstractCollection<E> implements java.util.Queue<E> {
+    ctor protected AbstractQueue();
+    method public E element();
+    method public E remove();
+  }
+
+  public abstract class AbstractSequentialList<E> extends java.util.AbstractList<E> {
+    ctor protected AbstractSequentialList();
+    method public E get(int);
+  }
+
+  public abstract class AbstractSet<E> extends java.util.AbstractCollection<E> implements java.util.Set<E> {
+    ctor protected AbstractSet();
+  }
+
+  public class ArrayDeque<E> extends java.util.AbstractCollection<E> implements java.lang.Cloneable java.util.Deque<E> java.io.Serializable {
+    ctor public ArrayDeque();
+    ctor public ArrayDeque(int);
+    ctor public ArrayDeque(@NonNull java.util.Collection<? extends E>);
+    method public void addFirst(E);
+    method public void addLast(E);
+    method @NonNull public java.util.ArrayDeque<E> clone();
+    method @NonNull public java.util.Iterator<E> descendingIterator();
+    method public E element();
+    method public E getFirst();
+    method public E getLast();
+    method @NonNull public java.util.Iterator<E> iterator();
+    method public boolean offer(E);
+    method public boolean offerFirst(E);
+    method public boolean offerLast(E);
+    method @Nullable public E peek();
+    method @Nullable public E peekFirst();
+    method @Nullable public E peekLast();
+    method @Nullable public E poll();
+    method @Nullable public E pollFirst();
+    method @Nullable public E pollLast();
+    method public E pop();
+    method public void push(E);
+    method public E remove();
+    method public E removeFirst();
+    method public boolean removeFirstOccurrence(@Nullable Object);
+    method public E removeLast();
+    method public boolean removeLastOccurrence(@Nullable Object);
+    method public int size();
+  }
+
+  public class ArrayList<E> extends java.util.AbstractList<E> implements java.lang.Cloneable java.util.List<E> java.util.RandomAccess java.io.Serializable {
+    ctor public ArrayList(int);
+    ctor public ArrayList();
+    ctor public ArrayList(@NonNull java.util.Collection<? extends E>);
+    method @NonNull public Object clone();
+    method public void ensureCapacity(int);
+    method public void forEach(@NonNull java.util.function.Consumer<? super E>);
+    method public E get(int);
+    method public int size();
+    method public void trimToSize();
+  }
+
+  public class Arrays {
+    method @NonNull @java.lang.SafeVarargs public static <T> java.util.List<T> asList(@NonNull T...);
+    method public static int binarySearch(@NonNull long[], long);
+    method public static int binarySearch(@NonNull long[], int, int, long);
+    method public static int binarySearch(@NonNull int[], int);
+    method public static int binarySearch(@NonNull int[], int, int, int);
+    method public static int binarySearch(@NonNull short[], short);
+    method public static int binarySearch(@NonNull short[], int, int, short);
+    method public static int binarySearch(@NonNull char[], char);
+    method public static int binarySearch(@NonNull char[], int, int, char);
+    method public static int binarySearch(@NonNull byte[], byte);
+    method public static int binarySearch(@NonNull byte[], int, int, byte);
+    method public static int binarySearch(@NonNull double[], double);
+    method public static int binarySearch(@NonNull double[], int, int, double);
+    method public static int binarySearch(@NonNull float[], float);
+    method public static int binarySearch(@NonNull float[], int, int, float);
+    method public static int binarySearch(@NonNull Object[], @NonNull Object);
+    method public static int binarySearch(@NonNull Object[], int, int, @NonNull Object);
+    method public static <T> int binarySearch(@NonNull T[], T, @Nullable java.util.Comparator<? super T>);
+    method public static <T> int binarySearch(@NonNull T[], int, int, T, @Nullable java.util.Comparator<? super T>);
+    method @NonNull public static <T> T[] copyOf(@NonNull T[], int);
+    method @NonNull public static <T, U> T[] copyOf(@NonNull U[], int, @NonNull Class<? extends T[]>);
+    method @NonNull public static byte[] copyOf(@NonNull byte[], int);
+    method @NonNull public static short[] copyOf(@NonNull short[], int);
+    method @NonNull public static int[] copyOf(@NonNull int[], int);
+    method @NonNull public static long[] copyOf(@NonNull long[], int);
+    method @NonNull public static char[] copyOf(@NonNull char[], int);
+    method @NonNull public static float[] copyOf(@NonNull float[], int);
+    method @NonNull public static double[] copyOf(@NonNull double[], int);
+    method @NonNull public static boolean[] copyOf(@NonNull boolean[], int);
+    method @NonNull public static <T> T[] copyOfRange(@NonNull T[], int, int);
+    method @NonNull public static <T, U> T[] copyOfRange(@NonNull U[], int, int, @NonNull Class<? extends T[]>);
+    method @NonNull public static byte[] copyOfRange(@NonNull byte[], int, int);
+    method @NonNull public static short[] copyOfRange(@NonNull short[], int, int);
+    method @NonNull public static int[] copyOfRange(@NonNull int[], int, int);
+    method @NonNull public static long[] copyOfRange(@NonNull long[], int, int);
+    method @NonNull public static char[] copyOfRange(@NonNull char[], int, int);
+    method @NonNull public static float[] copyOfRange(@NonNull float[], int, int);
+    method @NonNull public static double[] copyOfRange(@NonNull double[], int, int);
+    method @NonNull public static boolean[] copyOfRange(@NonNull boolean[], int, int);
+    method public static boolean deepEquals(@Nullable Object[], @Nullable Object[]);
+    method public static int deepHashCode(@Nullable Object[]);
+    method @NonNull public static String deepToString(@Nullable Object[]);
+    method public static boolean equals(@Nullable long[], @Nullable long[]);
+    method public static boolean equals(@Nullable int[], @Nullable int[]);
+    method public static boolean equals(@Nullable short[], @Nullable short[]);
+    method public static boolean equals(@Nullable char[], @Nullable char[]);
+    method public static boolean equals(@Nullable byte[], @Nullable byte[]);
+    method public static boolean equals(@Nullable boolean[], @Nullable boolean[]);
+    method public static boolean equals(@Nullable double[], @Nullable double[]);
+    method public static boolean equals(@Nullable float[], @Nullable float[]);
+    method public static boolean equals(@Nullable Object[], @Nullable Object[]);
+    method public static void fill(@NonNull long[], long);
+    method public static void fill(@NonNull long[], int, int, long);
+    method public static void fill(@NonNull int[], int);
+    method public static void fill(@NonNull int[], int, int, int);
+    method public static void fill(@NonNull short[], short);
+    method public static void fill(@NonNull short[], int, int, short);
+    method public static void fill(@NonNull char[], char);
+    method public static void fill(@NonNull char[], int, int, char);
+    method public static void fill(@NonNull byte[], byte);
+    method public static void fill(@NonNull byte[], int, int, byte);
+    method public static void fill(@NonNull boolean[], boolean);
+    method public static void fill(@NonNull boolean[], int, int, boolean);
+    method public static void fill(@NonNull double[], double);
+    method public static void fill(@NonNull double[], int, int, double);
+    method public static void fill(@NonNull float[], float);
+    method public static void fill(@NonNull float[], int, int, float);
+    method public static void fill(@NonNull Object[], @Nullable Object);
+    method public static void fill(@NonNull Object[], int, int, @Nullable Object);
+    method public static int hashCode(@Nullable long[]);
+    method public static int hashCode(@Nullable int[]);
+    method public static int hashCode(@Nullable short[]);
+    method public static int hashCode(@Nullable char[]);
+    method public static int hashCode(@Nullable byte[]);
+    method public static int hashCode(@Nullable boolean[]);
+    method public static int hashCode(@Nullable float[]);
+    method public static int hashCode(@Nullable double[]);
+    method public static int hashCode(@Nullable Object[]);
+    method public static <T> void parallelPrefix(@NonNull T[], @NonNull java.util.function.BinaryOperator<T>);
+    method public static <T> void parallelPrefix(@NonNull T[], int, int, @NonNull java.util.function.BinaryOperator<T>);
+    method public static void parallelPrefix(@NonNull long[], @NonNull java.util.function.LongBinaryOperator);
+    method public static void parallelPrefix(@NonNull long[], int, int, @NonNull java.util.function.LongBinaryOperator);
+    method public static void parallelPrefix(@NonNull double[], @NonNull java.util.function.DoubleBinaryOperator);
+    method public static void parallelPrefix(@NonNull double[], int, int, @NonNull java.util.function.DoubleBinaryOperator);
+    method public static void parallelPrefix(@NonNull int[], @NonNull java.util.function.IntBinaryOperator);
+    method public static void parallelPrefix(@NonNull int[], int, int, @NonNull java.util.function.IntBinaryOperator);
+    method public static <T> void parallelSetAll(@NonNull T[], @NonNull java.util.function.IntFunction<? extends T>);
+    method public static void parallelSetAll(@NonNull int[], @NonNull java.util.function.IntUnaryOperator);
+    method public static void parallelSetAll(@NonNull long[], @NonNull java.util.function.IntToLongFunction);
+    method public static void parallelSetAll(@NonNull double[], @NonNull java.util.function.IntToDoubleFunction);
+    method public static void parallelSort(@NonNull byte[]);
+    method public static void parallelSort(@NonNull byte[], int, int);
+    method public static void parallelSort(@NonNull char[]);
+    method public static void parallelSort(@NonNull char[], int, int);
+    method public static void parallelSort(@NonNull short[]);
+    method public static void parallelSort(@NonNull short[], int, int);
+    method public static void parallelSort(@NonNull int[]);
+    method public static void parallelSort(@NonNull int[], int, int);
+    method public static void parallelSort(@NonNull long[]);
+    method public static void parallelSort(@NonNull long[], int, int);
+    method public static void parallelSort(@NonNull float[]);
+    method public static void parallelSort(@NonNull float[], int, int);
+    method public static void parallelSort(@NonNull double[]);
+    method public static void parallelSort(@NonNull double[], int, int);
+    method public static <T extends java.lang.Comparable<? super T>> void parallelSort(@NonNull T[]);
+    method public static <T extends java.lang.Comparable<? super T>> void parallelSort(@NonNull T[], int, int);
+    method public static <T> void parallelSort(@NonNull T[], @Nullable java.util.Comparator<? super T>);
+    method public static <T> void parallelSort(@NonNull T[], int, int, @Nullable java.util.Comparator<? super T>);
+    method public static <T> void setAll(@NonNull T[], @NonNull java.util.function.IntFunction<? extends T>);
+    method public static void setAll(@NonNull int[], @NonNull java.util.function.IntUnaryOperator);
+    method public static void setAll(@NonNull long[], @NonNull java.util.function.IntToLongFunction);
+    method public static void setAll(@NonNull double[], @NonNull java.util.function.IntToDoubleFunction);
+    method public static void sort(@NonNull int[]);
+    method public static void sort(@NonNull int[], int, int);
+    method public static void sort(@NonNull long[]);
+    method public static void sort(@NonNull long[], int, int);
+    method public static void sort(@NonNull short[]);
+    method public static void sort(@NonNull short[], int, int);
+    method public static void sort(@NonNull char[]);
+    method public static void sort(@NonNull char[], int, int);
+    method public static void sort(@NonNull byte[]);
+    method public static void sort(@NonNull byte[], int, int);
+    method public static void sort(@NonNull float[]);
+    method public static void sort(@NonNull float[], int, int);
+    method public static void sort(@NonNull double[]);
+    method public static void sort(@NonNull double[], int, int);
+    method public static void sort(@NonNull Object[]);
+    method public static void sort(@NonNull Object[], int, int);
+    method public static <T> void sort(@NonNull T[], @Nullable java.util.Comparator<? super T>);
+    method public static <T> void sort(@NonNull T[], int, int, @Nullable java.util.Comparator<? super T>);
+    method @NonNull public static <T> java.util.Spliterator<T> spliterator(@NonNull T[]);
+    method @NonNull public static <T> java.util.Spliterator<T> spliterator(@NonNull T[], int, int);
+    method @NonNull public static java.util.Spliterator.OfInt spliterator(@NonNull int[]);
+    method @NonNull public static java.util.Spliterator.OfInt spliterator(@NonNull int[], int, int);
+    method @NonNull public static java.util.Spliterator.OfLong spliterator(@NonNull long[]);
+    method @NonNull public static java.util.Spliterator.OfLong spliterator(@NonNull long[], int, int);
+    method @NonNull public static java.util.Spliterator.OfDouble spliterator(@NonNull double[]);
+    method @NonNull public static java.util.Spliterator.OfDouble spliterator(@NonNull double[], int, int);
+    method @NonNull public static <T> java.util.stream.Stream<T> stream(@NonNull T[]);
+    method @NonNull public static <T> java.util.stream.Stream<T> stream(@NonNull T[], int, int);
+    method @NonNull public static java.util.stream.IntStream stream(@NonNull int[]);
+    method @NonNull public static java.util.stream.IntStream stream(@NonNull int[], int, int);
+    method @NonNull public static java.util.stream.LongStream stream(@NonNull long[]);
+    method @NonNull public static java.util.stream.LongStream stream(@NonNull long[], int, int);
+    method @NonNull public static java.util.stream.DoubleStream stream(@NonNull double[]);
+    method @NonNull public static java.util.stream.DoubleStream stream(@NonNull double[], int, int);
+    method @NonNull public static String toString(@Nullable long[]);
+    method @NonNull public static String toString(@Nullable int[]);
+    method @NonNull public static String toString(@Nullable short[]);
+    method @NonNull public static String toString(@Nullable char[]);
+    method @NonNull public static String toString(@Nullable byte[]);
+    method @NonNull public static String toString(@Nullable boolean[]);
+    method @NonNull public static String toString(@Nullable float[]);
+    method @NonNull public static String toString(@Nullable double[]);
+    method @NonNull public static String toString(@Nullable Object[]);
+  }
+
+  public class Base64 {
+    method public static java.util.Base64.Decoder getDecoder();
+    method public static java.util.Base64.Encoder getEncoder();
+    method public static java.util.Base64.Decoder getMimeDecoder();
+    method public static java.util.Base64.Encoder getMimeEncoder();
+    method public static java.util.Base64.Encoder getMimeEncoder(int, byte[]);
+    method public static java.util.Base64.Decoder getUrlDecoder();
+    method public static java.util.Base64.Encoder getUrlEncoder();
+  }
+
+  public static class Base64.Decoder {
+    method public byte[] decode(byte[]);
+    method public byte[] decode(String);
+    method public int decode(byte[], byte[]);
+    method public java.nio.ByteBuffer decode(java.nio.ByteBuffer);
+    method public java.io.InputStream wrap(java.io.InputStream);
+  }
+
+  public static class Base64.Encoder {
+    method public byte[] encode(byte[]);
+    method public int encode(byte[], byte[]);
+    method public java.nio.ByteBuffer encode(java.nio.ByteBuffer);
+    method public String encodeToString(byte[]);
+    method public java.util.Base64.Encoder withoutPadding();
+    method public java.io.OutputStream wrap(java.io.OutputStream);
+  }
+
+  public class BitSet implements java.lang.Cloneable java.io.Serializable {
+    ctor public BitSet();
+    ctor public BitSet(int);
+    method public void and(java.util.BitSet);
+    method public void andNot(java.util.BitSet);
+    method public int cardinality();
+    method public void clear(int);
+    method public void clear(int, int);
+    method public void clear();
+    method public Object clone();
+    method public void flip(int);
+    method public void flip(int, int);
+    method public boolean get(int);
+    method public java.util.BitSet get(int, int);
+    method public boolean intersects(java.util.BitSet);
+    method public boolean isEmpty();
+    method public int length();
+    method public int nextClearBit(int);
+    method public int nextSetBit(int);
+    method public void or(java.util.BitSet);
+    method public int previousClearBit(int);
+    method public int previousSetBit(int);
+    method public void set(int);
+    method public void set(int, boolean);
+    method public void set(int, int);
+    method public void set(int, int, boolean);
+    method public int size();
+    method public java.util.stream.IntStream stream();
+    method public byte[] toByteArray();
+    method public long[] toLongArray();
+    method public static java.util.BitSet valueOf(long[]);
+    method public static java.util.BitSet valueOf(java.nio.LongBuffer);
+    method public static java.util.BitSet valueOf(byte[]);
+    method public static java.util.BitSet valueOf(java.nio.ByteBuffer);
+    method public void xor(java.util.BitSet);
+  }
+
+  public abstract class Calendar implements java.lang.Cloneable java.lang.Comparable<java.util.Calendar> java.io.Serializable {
+    ctor protected Calendar();
+    ctor protected Calendar(@NonNull java.util.TimeZone, @NonNull java.util.Locale);
+    method public abstract void add(int, int);
+    method public boolean after(@Nullable Object);
+    method public boolean before(@Nullable Object);
+    method public final void clear();
+    method public final void clear(int);
+    method @NonNull public Object clone();
+    method public int compareTo(@NonNull java.util.Calendar);
+    method protected void complete();
+    method protected abstract void computeFields();
+    method protected abstract void computeTime();
+    method public int get(int);
+    method public int getActualMaximum(int);
+    method public int getActualMinimum(int);
+    method @NonNull public static java.util.Set<java.lang.String> getAvailableCalendarTypes();
+    method @NonNull public static java.util.Locale[] getAvailableLocales();
+    method @NonNull public String getCalendarType();
+    method @Nullable public String getDisplayName(int, int, @NonNull java.util.Locale);
+    method @Nullable public java.util.Map<java.lang.String,java.lang.Integer> getDisplayNames(int, int, @NonNull java.util.Locale);
+    method public int getFirstDayOfWeek();
+    method public abstract int getGreatestMinimum(int);
+    method @NonNull public static java.util.Calendar getInstance();
+    method @NonNull public static java.util.Calendar getInstance(@NonNull java.util.TimeZone);
+    method @NonNull public static java.util.Calendar getInstance(@NonNull java.util.Locale);
+    method @NonNull public static java.util.Calendar getInstance(@NonNull java.util.TimeZone, @NonNull java.util.Locale);
+    method public abstract int getLeastMaximum(int);
+    method public abstract int getMaximum(int);
+    method public int getMinimalDaysInFirstWeek();
+    method public abstract int getMinimum(int);
+    method @NonNull public final java.util.Date getTime();
+    method public long getTimeInMillis();
+    method @NonNull public java.util.TimeZone getTimeZone();
+    method public int getWeekYear();
+    method public int getWeeksInWeekYear();
+    method protected final int internalGet(int);
+    method public boolean isLenient();
+    method public final boolean isSet(int);
+    method public boolean isWeekDateSupported();
+    method public abstract void roll(int, boolean);
+    method public void roll(int, int);
+    method public void set(int, int);
+    method public final void set(int, int, int);
+    method public final void set(int, int, int, int, int);
+    method public final void set(int, int, int, int, int, int);
+    method public void setFirstDayOfWeek(int);
+    method public void setLenient(boolean);
+    method public void setMinimalDaysInFirstWeek(int);
+    method public final void setTime(@NonNull java.util.Date);
+    method public void setTimeInMillis(long);
+    method public void setTimeZone(@NonNull java.util.TimeZone);
+    method public void setWeekDate(int, int, int);
+    method @NonNull public final java.time.Instant toInstant();
+    field public static final int ALL_STYLES = 0; // 0x0
+    field public static final int AM = 0; // 0x0
+    field public static final int AM_PM = 9; // 0x9
+    field public static final int APRIL = 3; // 0x3
+    field public static final int AUGUST = 7; // 0x7
+    field public static final int DATE = 5; // 0x5
+    field public static final int DAY_OF_MONTH = 5; // 0x5
+    field public static final int DAY_OF_WEEK = 7; // 0x7
+    field public static final int DAY_OF_WEEK_IN_MONTH = 8; // 0x8
+    field public static final int DAY_OF_YEAR = 6; // 0x6
+    field public static final int DECEMBER = 11; // 0xb
+    field public static final int DST_OFFSET = 16; // 0x10
+    field public static final int ERA = 0; // 0x0
+    field public static final int FEBRUARY = 1; // 0x1
+    field public static final int FIELD_COUNT = 17; // 0x11
+    field public static final int FRIDAY = 6; // 0x6
+    field public static final int HOUR = 10; // 0xa
+    field public static final int HOUR_OF_DAY = 11; // 0xb
+    field public static final int JANUARY = 0; // 0x0
+    field public static final int JULY = 6; // 0x6
+    field public static final int JUNE = 5; // 0x5
+    field public static final int LONG = 2; // 0x2
+    field public static final int LONG_FORMAT = 2; // 0x2
+    field public static final int LONG_STANDALONE = 32770; // 0x8002
+    field public static final int MARCH = 2; // 0x2
+    field public static final int MAY = 4; // 0x4
+    field public static final int MILLISECOND = 14; // 0xe
+    field public static final int MINUTE = 12; // 0xc
+    field public static final int MONDAY = 2; // 0x2
+    field public static final int MONTH = 2; // 0x2
+    field public static final int NARROW_FORMAT = 4; // 0x4
+    field public static final int NARROW_STANDALONE = 32772; // 0x8004
+    field public static final int NOVEMBER = 10; // 0xa
+    field public static final int OCTOBER = 9; // 0x9
+    field public static final int PM = 1; // 0x1
+    field public static final int SATURDAY = 7; // 0x7
+    field public static final int SECOND = 13; // 0xd
+    field public static final int SEPTEMBER = 8; // 0x8
+    field public static final int SHORT = 1; // 0x1
+    field public static final int SHORT_FORMAT = 1; // 0x1
+    field public static final int SHORT_STANDALONE = 32769; // 0x8001
+    field public static final int SUNDAY = 1; // 0x1
+    field public static final int THURSDAY = 5; // 0x5
+    field public static final int TUESDAY = 3; // 0x3
+    field public static final int UNDECIMBER = 12; // 0xc
+    field public static final int WEDNESDAY = 4; // 0x4
+    field public static final int WEEK_OF_MONTH = 4; // 0x4
+    field public static final int WEEK_OF_YEAR = 3; // 0x3
+    field public static final int YEAR = 1; // 0x1
+    field public static final int ZONE_OFFSET = 15; // 0xf
+    field protected boolean areFieldsSet;
+    field @NonNull protected int[] fields;
+    field @NonNull protected boolean[] isSet;
+    field protected boolean isTimeSet;
+    field protected long time;
+  }
+
+  public static class Calendar.Builder {
+    ctor public Calendar.Builder();
+    method @NonNull public java.util.Calendar build();
+    method @NonNull public java.util.Calendar.Builder set(int, int);
+    method @NonNull public java.util.Calendar.Builder setCalendarType(@NonNull String);
+    method @NonNull public java.util.Calendar.Builder setDate(int, int, int);
+    method @NonNull public java.util.Calendar.Builder setFields(@NonNull int...);
+    method @NonNull public java.util.Calendar.Builder setInstant(long);
+    method @NonNull public java.util.Calendar.Builder setInstant(@NonNull java.util.Date);
+    method @NonNull public java.util.Calendar.Builder setLenient(boolean);
+    method @NonNull public java.util.Calendar.Builder setLocale(@NonNull java.util.Locale);
+    method @NonNull public java.util.Calendar.Builder setTimeOfDay(int, int, int);
+    method @NonNull public java.util.Calendar.Builder setTimeOfDay(int, int, int, int);
+    method @NonNull public java.util.Calendar.Builder setTimeZone(@NonNull java.util.TimeZone);
+    method @NonNull public java.util.Calendar.Builder setWeekDate(int, int, int);
+    method @NonNull public java.util.Calendar.Builder setWeekDefinition(int, int);
+  }
+
+  public interface Collection<E> extends java.lang.Iterable<E> {
+    method public boolean add(E);
+    method public boolean addAll(@NonNull java.util.Collection<? extends E>);
+    method public void clear();
+    method public boolean contains(@Nullable Object);
+    method public boolean containsAll(@NonNull java.util.Collection<?>);
+    method public boolean equals(@Nullable Object);
+    method public int hashCode();
+    method public boolean isEmpty();
+    method @NonNull public java.util.Iterator<E> iterator();
+    method @NonNull public default java.util.stream.Stream<E> parallelStream();
+    method public boolean remove(@Nullable Object);
+    method public boolean removeAll(@NonNull java.util.Collection<?>);
+    method public default boolean removeIf(@NonNull java.util.function.Predicate<? super E>);
+    method public boolean retainAll(@NonNull java.util.Collection<?>);
+    method public int size();
+    method @NonNull public default java.util.Spliterator<E> spliterator();
+    method @NonNull public default java.util.stream.Stream<E> stream();
+    method @NonNull public Object[] toArray();
+    method @NonNull public <T> T[] toArray(@NonNull T[]);
+  }
+
+  public class Collections {
+    method @java.lang.SafeVarargs public static <T> boolean addAll(@NonNull java.util.Collection<? super T>, @NonNull T...);
+    method @NonNull public static <T> java.util.Queue<T> asLifoQueue(@NonNull java.util.Deque<T>);
+    method public static <T> int binarySearch(@NonNull java.util.List<? extends java.lang.Comparable<? super T>>, @NonNull T);
+    method public static <T> int binarySearch(@NonNull java.util.List<? extends T>, T, @Nullable java.util.Comparator<? super T>);
+    method @NonNull public static <E> java.util.Collection<E> checkedCollection(@NonNull java.util.Collection<E>, @NonNull Class<E>);
+    method @NonNull public static <E> java.util.List<E> checkedList(@NonNull java.util.List<E>, @NonNull Class<E>);
+    method @NonNull public static <K, V> java.util.Map<K,V> checkedMap(@NonNull java.util.Map<K,V>, @NonNull Class<K>, @NonNull Class<V>);
+    method @NonNull public static <K, V> java.util.NavigableMap<K,V> checkedNavigableMap(@NonNull java.util.NavigableMap<K,V>, @NonNull Class<K>, @NonNull Class<V>);
+    method @NonNull public static <E> java.util.NavigableSet<E> checkedNavigableSet(@NonNull java.util.NavigableSet<E>, @NonNull Class<E>);
+    method @NonNull public static <E> java.util.Queue<E> checkedQueue(@NonNull java.util.Queue<E>, @NonNull Class<E>);
+    method @NonNull public static <E> java.util.Set<E> checkedSet(@NonNull java.util.Set<E>, @NonNull Class<E>);
+    method @NonNull public static <K, V> java.util.SortedMap<K,V> checkedSortedMap(@NonNull java.util.SortedMap<K,V>, @NonNull Class<K>, @NonNull Class<V>);
+    method @NonNull public static <E> java.util.SortedSet<E> checkedSortedSet(@NonNull java.util.SortedSet<E>, @NonNull Class<E>);
+    method public static <T> void copy(@NonNull java.util.List<? super T>, @NonNull java.util.List<? extends T>);
+    method public static boolean disjoint(@NonNull java.util.Collection<?>, @NonNull java.util.Collection<?>);
+    method @NonNull public static <T> java.util.Enumeration<T> emptyEnumeration();
+    method @NonNull public static <T> java.util.Iterator<T> emptyIterator();
+    method @NonNull public static final <T> java.util.List<T> emptyList();
+    method @NonNull public static <T> java.util.ListIterator<T> emptyListIterator();
+    method @NonNull public static final <K, V> java.util.Map<K,V> emptyMap();
+    method @NonNull public static final <K, V> java.util.NavigableMap<K,V> emptyNavigableMap();
+    method @NonNull public static <E> java.util.NavigableSet<E> emptyNavigableSet();
+    method @NonNull public static final <T> java.util.Set<T> emptySet();
+    method @NonNull public static final <K, V> java.util.SortedMap<K,V> emptySortedMap();
+    method @NonNull public static <E> java.util.SortedSet<E> emptySortedSet();
+    method @NonNull public static <T> java.util.Enumeration<T> enumeration(@NonNull java.util.Collection<T>);
+    method public static <T> void fill(@NonNull java.util.List<? super T>, T);
+    method public static int frequency(@NonNull java.util.Collection<?>, @Nullable Object);
+    method public static int indexOfSubList(@NonNull java.util.List<?>, @NonNull java.util.List<?>);
+    method public static int lastIndexOfSubList(@NonNull java.util.List<?>, @NonNull java.util.List<?>);
+    method @NonNull public static <T> java.util.ArrayList<T> list(@NonNull java.util.Enumeration<T>);
+    method @NonNull public static <T extends java.lang.Object & java.lang.Comparable<? super T>> T max(@NonNull java.util.Collection<? extends T>);
+    method public static <T> T max(@NonNull java.util.Collection<? extends T>, @Nullable java.util.Comparator<? super T>);
+    method @NonNull public static <T extends java.lang.Object & java.lang.Comparable<? super T>> T min(@NonNull java.util.Collection<? extends T>);
+    method public static <T> T min(@NonNull java.util.Collection<? extends T>, @Nullable java.util.Comparator<? super T>);
+    method @NonNull public static <T> java.util.List<T> nCopies(int, T);
+    method @NonNull public static <E> java.util.Set<E> newSetFromMap(@NonNull java.util.Map<E,java.lang.Boolean>);
+    method public static <T> boolean replaceAll(@NonNull java.util.List<T>, T, T);
+    method public static void reverse(@NonNull java.util.List<?>);
+    method @NonNull public static <T> java.util.Comparator<T> reverseOrder();
+    method @NonNull public static <T> java.util.Comparator<T> reverseOrder(@Nullable java.util.Comparator<T>);
+    method public static void rotate(@NonNull java.util.List<?>, int);
+    method public static void shuffle(@NonNull java.util.List<?>);
+    method public static void shuffle(@NonNull java.util.List<?>, @NonNull java.util.Random);
+    method @NonNull public static <T> java.util.Set<T> singleton(T);
+    method @NonNull public static <T> java.util.List<T> singletonList(T);
+    method @NonNull public static <K, V> java.util.Map<K,V> singletonMap(K, V);
+    method public static <T extends java.lang.Comparable<? super T>> void sort(@NonNull java.util.List<T>);
+    method public static <T> void sort(@NonNull java.util.List<T>, @Nullable java.util.Comparator<? super T>);
+    method public static void swap(@NonNull java.util.List<?>, int, int);
+    method @NonNull public static <T> java.util.Collection<T> synchronizedCollection(@NonNull java.util.Collection<T>);
+    method @NonNull public static <T> java.util.List<T> synchronizedList(@NonNull java.util.List<T>);
+    method @NonNull public static <K, V> java.util.Map<K,V> synchronizedMap(@NonNull java.util.Map<K,V>);
+    method @NonNull public static <K, V> java.util.NavigableMap<K,V> synchronizedNavigableMap(@NonNull java.util.NavigableMap<K,V>);
+    method @NonNull public static <T> java.util.NavigableSet<T> synchronizedNavigableSet(@NonNull java.util.NavigableSet<T>);
+    method @NonNull public static <T> java.util.Set<T> synchronizedSet(@NonNull java.util.Set<T>);
+    method @NonNull public static <K, V> java.util.SortedMap<K,V> synchronizedSortedMap(@NonNull java.util.SortedMap<K,V>);
+    method @NonNull public static <T> java.util.SortedSet<T> synchronizedSortedSet(@NonNull java.util.SortedSet<T>);
+    method @NonNull public static <T> java.util.Collection<T> unmodifiableCollection(@NonNull java.util.Collection<? extends T>);
+    method @NonNull public static <T> java.util.List<T> unmodifiableList(@NonNull java.util.List<? extends T>);
+    method @NonNull public static <K, V> java.util.Map<K,V> unmodifiableMap(@NonNull java.util.Map<? extends K,? extends V>);
+    method @NonNull public static <K, V> java.util.NavigableMap<K,V> unmodifiableNavigableMap(@NonNull java.util.NavigableMap<K,? extends V>);
+    method @NonNull public static <T> java.util.NavigableSet<T> unmodifiableNavigableSet(@NonNull java.util.NavigableSet<T>);
+    method @NonNull public static <T> java.util.Set<T> unmodifiableSet(@NonNull java.util.Set<? extends T>);
+    method @NonNull public static <K, V> java.util.SortedMap<K,V> unmodifiableSortedMap(@NonNull java.util.SortedMap<K,? extends V>);
+    method @NonNull public static <T> java.util.SortedSet<T> unmodifiableSortedSet(@NonNull java.util.SortedSet<T>);
+    field @NonNull public static final java.util.List EMPTY_LIST;
+    field @NonNull public static final java.util.Map EMPTY_MAP;
+    field @NonNull public static final java.util.Set EMPTY_SET;
+  }
+
+  @java.lang.FunctionalInterface public interface Comparator<T> {
+    method public int compare(T, T);
+    method public static <T, U> java.util.Comparator<T> comparing(java.util.function.Function<? super T,? extends U>, java.util.Comparator<? super U>);
+    method public static <T, U extends java.lang.Comparable<? super U>> java.util.Comparator<T> comparing(java.util.function.Function<? super T,? extends U>);
+    method public static <T> java.util.Comparator<T> comparingDouble(java.util.function.ToDoubleFunction<? super T>);
+    method public static <T> java.util.Comparator<T> comparingInt(java.util.function.ToIntFunction<? super T>);
+    method public static <T> java.util.Comparator<T> comparingLong(java.util.function.ToLongFunction<? super T>);
+    method public boolean equals(Object);
+    method public static <T extends java.lang.Comparable<? super T>> java.util.Comparator<T> naturalOrder();
+    method public static <T> java.util.Comparator<T> nullsFirst(java.util.Comparator<? super T>);
+    method public static <T> java.util.Comparator<T> nullsLast(java.util.Comparator<? super T>);
+    method public static <T extends java.lang.Comparable<? super T>> java.util.Comparator<T> reverseOrder();
+    method public default java.util.Comparator<T> reversed();
+    method public default java.util.Comparator<T> thenComparing(java.util.Comparator<? super T>);
+    method public default <U> java.util.Comparator<T> thenComparing(java.util.function.Function<? super T,? extends U>, java.util.Comparator<? super U>);
+    method public default <U extends java.lang.Comparable<? super U>> java.util.Comparator<T> thenComparing(java.util.function.Function<? super T,? extends U>);
+    method public default java.util.Comparator<T> thenComparingDouble(java.util.function.ToDoubleFunction<? super T>);
+    method public default java.util.Comparator<T> thenComparingInt(java.util.function.ToIntFunction<? super T>);
+    method public default java.util.Comparator<T> thenComparingLong(java.util.function.ToLongFunction<? super T>);
+  }
+
+  public class ConcurrentModificationException extends java.lang.RuntimeException {
+    ctor public ConcurrentModificationException();
+    ctor public ConcurrentModificationException(String);
+    ctor public ConcurrentModificationException(Throwable);
+    ctor public ConcurrentModificationException(String, Throwable);
+  }
+
+  public final class Currency implements java.io.Serializable {
+    method public static java.util.Set<java.util.Currency> getAvailableCurrencies();
+    method public String getCurrencyCode();
+    method public int getDefaultFractionDigits();
+    method public String getDisplayName();
+    method public String getDisplayName(java.util.Locale);
+    method public static java.util.Currency getInstance(String);
+    method public static java.util.Currency getInstance(java.util.Locale);
+    method public int getNumericCode();
+    method public String getSymbol();
+    method public String getSymbol(java.util.Locale);
+  }
+
+  public class Date implements java.lang.Cloneable java.lang.Comparable<java.util.Date> java.io.Serializable {
+    ctor public Date();
+    ctor public Date(long);
+    ctor @Deprecated public Date(int, int, int);
+    ctor @Deprecated public Date(int, int, int, int, int);
+    ctor @Deprecated public Date(int, int, int, int, int, int);
+    ctor @Deprecated public Date(String);
+    method @Deprecated public static long UTC(int, int, int, int, int, int);
+    method public boolean after(java.util.Date);
+    method public boolean before(java.util.Date);
+    method public Object clone();
+    method public int compareTo(java.util.Date);
+    method public static java.util.Date from(java.time.Instant);
+    method @Deprecated public int getDate();
+    method @Deprecated public int getDay();
+    method @Deprecated public int getHours();
+    method @Deprecated public int getMinutes();
+    method @Deprecated public int getMonth();
+    method @Deprecated public int getSeconds();
+    method public long getTime();
+    method @Deprecated public int getTimezoneOffset();
+    method @Deprecated public int getYear();
+    method @Deprecated public static long parse(String);
+    method @Deprecated public void setDate(int);
+    method @Deprecated public void setHours(int);
+    method @Deprecated public void setMinutes(int);
+    method @Deprecated public void setMonth(int);
+    method @Deprecated public void setSeconds(int);
+    method public void setTime(long);
+    method @Deprecated public void setYear(int);
+    method @Deprecated public String toGMTString();
+    method public java.time.Instant toInstant();
+    method @Deprecated public String toLocaleString();
+  }
+
+  public interface Deque<E> extends java.util.Queue<E> {
+    method public void addFirst(E);
+    method public void addLast(E);
+    method @NonNull public java.util.Iterator<E> descendingIterator();
+    method public E getFirst();
+    method public E getLast();
+    method public boolean offerFirst(E);
+    method public boolean offerLast(E);
+    method @Nullable public E peekFirst();
+    method @Nullable public E peekLast();
+    method @Nullable public E pollFirst();
+    method @Nullable public E pollLast();
+    method public E pop();
+    method public void push(E);
+    method public E removeFirst();
+    method public boolean removeFirstOccurrence(@Nullable Object);
+    method public E removeLast();
+    method public boolean removeLastOccurrence(@Nullable Object);
+  }
+
+  public abstract class Dictionary<K, V> {
+    ctor public Dictionary();
+    method public abstract java.util.Enumeration<V> elements();
+    method public abstract V get(Object);
+    method public abstract boolean isEmpty();
+    method public abstract java.util.Enumeration<K> keys();
+    method public abstract V put(K, V);
+    method public abstract V remove(Object);
+    method public abstract int size();
+  }
+
+  public class DoubleSummaryStatistics implements java.util.function.DoubleConsumer {
+    ctor public DoubleSummaryStatistics();
+    method public void accept(double);
+    method public void combine(java.util.DoubleSummaryStatistics);
+    method public final double getAverage();
+    method public final long getCount();
+    method public final double getMax();
+    method public final double getMin();
+    method public final double getSum();
+  }
+
+  public class DuplicateFormatFlagsException extends java.util.IllegalFormatException {
+    ctor public DuplicateFormatFlagsException(String);
+    method public String getFlags();
+  }
+
+  public class EmptyStackException extends java.lang.RuntimeException {
+    ctor public EmptyStackException();
+  }
+
+  public class EnumMap<K extends java.lang.Enum<K>, V> extends java.util.AbstractMap<K,V> implements java.lang.Cloneable java.io.Serializable {
+    ctor public EnumMap(Class<K>);
+    ctor public EnumMap(java.util.EnumMap<K,? extends V>);
+    ctor public EnumMap(java.util.Map<K,? extends V>);
+    method public java.util.EnumMap<K,V> clone();
+    method public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
+  }
+
+  public abstract class EnumSet<E extends java.lang.Enum<E>> extends java.util.AbstractSet<E> implements java.lang.Cloneable java.io.Serializable {
+    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> allOf(Class<E>);
+    method public java.util.EnumSet<E> clone();
+    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> complementOf(java.util.EnumSet<E>);
+    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> copyOf(java.util.EnumSet<E>);
+    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> copyOf(java.util.Collection<E>);
+    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> noneOf(Class<E>);
+    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E);
+    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E, E);
+    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E, E, E);
+    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E, E, E, E);
+    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E, E, E, E, E);
+    method @java.lang.SafeVarargs public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E, E...);
+    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> range(E, E);
+  }
+
+  public interface Enumeration<E> {
+    method public boolean hasMoreElements();
+    method public E nextElement();
+  }
+
+  public interface EventListener {
+  }
+
+  public abstract class EventListenerProxy<T extends java.util.EventListener> implements java.util.EventListener {
+    ctor public EventListenerProxy(T);
+    method public T getListener();
+  }
+
+  public class EventObject implements java.io.Serializable {
+    ctor public EventObject(Object);
+    method public Object getSource();
+    field protected transient Object source;
+  }
+
+  public class FormatFlagsConversionMismatchException extends java.util.IllegalFormatException {
+    ctor public FormatFlagsConversionMismatchException(String, char);
+    method public char getConversion();
+    method public String getFlags();
+  }
+
+  public interface Formattable {
+    method public void formatTo(java.util.Formatter, int, int, int);
+  }
+
+  public class FormattableFlags {
+    field public static final int ALTERNATE = 4; // 0x4
+    field public static final int LEFT_JUSTIFY = 1; // 0x1
+    field public static final int UPPERCASE = 2; // 0x2
+  }
+
+  public final class Formatter implements java.io.Closeable java.io.Flushable {
+    ctor public Formatter();
+    ctor public Formatter(Appendable);
+    ctor public Formatter(java.util.Locale);
+    ctor public Formatter(Appendable, java.util.Locale);
+    ctor public Formatter(String) throws java.io.FileNotFoundException;
+    ctor public Formatter(String, String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
+    ctor public Formatter(String, String, java.util.Locale) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
+    ctor public Formatter(java.io.File) throws java.io.FileNotFoundException;
+    ctor public Formatter(java.io.File, String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
+    ctor public Formatter(java.io.File, String, java.util.Locale) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
+    ctor public Formatter(java.io.PrintStream);
+    ctor public Formatter(java.io.OutputStream);
+    ctor public Formatter(java.io.OutputStream, String) throws java.io.UnsupportedEncodingException;
+    ctor public Formatter(java.io.OutputStream, String, java.util.Locale) throws java.io.UnsupportedEncodingException;
+    method public void close();
+    method public void flush();
+    method public java.util.Formatter format(String, java.lang.Object...);
+    method public java.util.Formatter format(java.util.Locale, String, java.lang.Object...);
+    method public java.io.IOException ioException();
+    method public java.util.Locale locale();
+    method public Appendable out();
+  }
+
+  public enum Formatter.BigDecimalLayoutForm {
+    enum_constant public static final java.util.Formatter.BigDecimalLayoutForm DECIMAL_FLOAT;
+    enum_constant public static final java.util.Formatter.BigDecimalLayoutForm SCIENTIFIC;
+  }
+
+  public class FormatterClosedException extends java.lang.IllegalStateException {
+    ctor public FormatterClosedException();
+  }
+
+  public class GregorianCalendar extends java.util.Calendar {
+    ctor public GregorianCalendar();
+    ctor public GregorianCalendar(java.util.TimeZone);
+    ctor public GregorianCalendar(java.util.Locale);
+    ctor public GregorianCalendar(java.util.TimeZone, java.util.Locale);
+    ctor public GregorianCalendar(int, int, int);
+    ctor public GregorianCalendar(int, int, int, int, int);
+    ctor public GregorianCalendar(int, int, int, int, int, int);
+    method public void add(int, int);
+    method protected void computeFields();
+    method protected void computeTime();
+    method public static java.util.GregorianCalendar from(java.time.ZonedDateTime);
+    method public int getGreatestMinimum(int);
+    method public final java.util.Date getGregorianChange();
+    method public int getLeastMaximum(int);
+    method public int getMaximum(int);
+    method public int getMinimum(int);
+    method public boolean isLeapYear(int);
+    method public final boolean isWeekDateSupported();
+    method public void roll(int, boolean);
+    method public void setGregorianChange(java.util.Date);
+    method public java.time.ZonedDateTime toZonedDateTime();
+    field public static final int AD = 1; // 0x1
+    field public static final int BC = 0; // 0x0
+  }
+
+  public class HashMap<K, V> extends java.util.AbstractMap<K,V> implements java.lang.Cloneable java.util.Map<K,V> java.io.Serializable {
+    ctor public HashMap(int, float);
+    ctor public HashMap(int);
+    ctor public HashMap();
+    ctor public HashMap(@NonNull java.util.Map<? extends K,? extends V>);
+    method @NonNull public Object clone();
+    method @NonNull public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
+  }
+
+  public class HashSet<E> extends java.util.AbstractSet<E> implements java.lang.Cloneable java.io.Serializable java.util.Set<E> {
+    ctor public HashSet();
+    ctor public HashSet(@NonNull java.util.Collection<? extends E>);
+    ctor public HashSet(int, float);
+    ctor public HashSet(int);
+    method @NonNull public Object clone();
+    method @NonNull public java.util.Iterator<E> iterator();
+    method public int size();
+  }
+
+  public class Hashtable<K, V> extends java.util.Dictionary<K,V> implements java.lang.Cloneable java.util.Map<K,V> java.io.Serializable {
+    ctor public Hashtable(int, float);
+    ctor public Hashtable(int);
+    ctor public Hashtable();
+    ctor public Hashtable(java.util.Map<? extends K,? extends V>);
+    method public void clear();
+    method public Object clone();
+    method public boolean contains(Object);
+    method public boolean containsKey(Object);
+    method public boolean containsValue(Object);
+    method public java.util.Enumeration<V> elements();
+    method public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
+    method public V get(Object);
+    method public boolean isEmpty();
+    method public java.util.Set<K> keySet();
+    method public java.util.Enumeration<K> keys();
+    method public V put(K, V);
+    method public void putAll(java.util.Map<? extends K,? extends V>);
+    method protected void rehash();
+    method public V remove(Object);
+    method public int size();
+    method public java.util.Collection<V> values();
+  }
+
+  public class IdentityHashMap<K, V> extends java.util.AbstractMap<K,V> implements java.lang.Cloneable java.util.Map<K,V> java.io.Serializable {
+    ctor public IdentityHashMap();
+    ctor public IdentityHashMap(int);
+    ctor public IdentityHashMap(java.util.Map<? extends K,? extends V>);
+    method public Object clone();
+    method public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
+  }
+
+  public class IllegalFormatCodePointException extends java.util.IllegalFormatException {
+    ctor public IllegalFormatCodePointException(int);
+    method public int getCodePoint();
+  }
+
+  public class IllegalFormatConversionException extends java.util.IllegalFormatException {
+    ctor public IllegalFormatConversionException(char, Class<?>);
+    method public Class<?> getArgumentClass();
+    method public char getConversion();
+  }
+
+  public class IllegalFormatException extends java.lang.IllegalArgumentException {
+  }
+
+  public class IllegalFormatFlagsException extends java.util.IllegalFormatException {
+    ctor public IllegalFormatFlagsException(String);
+    method public String getFlags();
+  }
+
+  public class IllegalFormatPrecisionException extends java.util.IllegalFormatException {
+    ctor public IllegalFormatPrecisionException(int);
+    method public int getPrecision();
+  }
+
+  public class IllegalFormatWidthException extends java.util.IllegalFormatException {
+    ctor public IllegalFormatWidthException(int);
+    method public int getWidth();
+  }
+
+  public class IllformedLocaleException extends java.lang.RuntimeException {
+    ctor public IllformedLocaleException();
+    ctor public IllformedLocaleException(String);
+    ctor public IllformedLocaleException(String, int);
+    method public int getErrorIndex();
+  }
+
+  public class InputMismatchException extends java.util.NoSuchElementException {
+    ctor public InputMismatchException();
+    ctor public InputMismatchException(String);
+  }
+
+  public class IntSummaryStatistics implements java.util.function.IntConsumer {
+    ctor public IntSummaryStatistics();
+    method public void accept(int);
+    method public void combine(java.util.IntSummaryStatistics);
+    method public final double getAverage();
+    method public final long getCount();
+    method public final int getMax();
+    method public final int getMin();
+    method public final long getSum();
+  }
+
+  public class InvalidPropertiesFormatException extends java.io.IOException {
+    ctor public InvalidPropertiesFormatException(Throwable);
+    ctor public InvalidPropertiesFormatException(String);
+  }
+
+  public interface Iterator<E> {
+    method public default void forEachRemaining(@NonNull java.util.function.Consumer<? super E>);
+    method public boolean hasNext();
+    method public E next();
+    method public default void remove();
+  }
+
+  public class LinkedHashMap<K, V> extends java.util.HashMap<K,V> implements java.util.Map<K,V> {
+    ctor public LinkedHashMap(int, float);
+    ctor public LinkedHashMap(int);
+    ctor public LinkedHashMap();
+    ctor public LinkedHashMap(java.util.Map<? extends K,? extends V>);
+    ctor public LinkedHashMap(int, float, boolean);
+    method protected boolean removeEldestEntry(java.util.Map.Entry<K,V>);
+  }
+
+  public class LinkedHashSet<E> extends java.util.HashSet<E> implements java.lang.Cloneable java.io.Serializable java.util.Set<E> {
+    ctor public LinkedHashSet(int, float);
+    ctor public LinkedHashSet(int);
+    ctor public LinkedHashSet();
+    ctor public LinkedHashSet(java.util.Collection<? extends E>);
+  }
+
+  public class LinkedList<E> extends java.util.AbstractSequentialList<E> implements java.lang.Cloneable java.util.Deque<E> java.util.List<E> java.io.Serializable {
+    ctor public LinkedList();
+    ctor public LinkedList(@NonNull java.util.Collection<? extends E>);
+    method public void addFirst(E);
+    method public void addLast(E);
+    method @NonNull public Object clone();
+    method @NonNull public java.util.Iterator<E> descendingIterator();
+    method public E element();
+    method public E getFirst();
+    method public E getLast();
+    method public boolean offer(E);
+    method public boolean offerFirst(E);
+    method public boolean offerLast(E);
+    method @Nullable public E peek();
+    method @Nullable public E peekFirst();
+    method @Nullable public E peekLast();
+    method @Nullable public E poll();
+    method @Nullable public E pollFirst();
+    method @Nullable public E pollLast();
+    method public E pop();
+    method public void push(E);
+    method public E remove();
+    method public E removeFirst();
+    method public boolean removeFirstOccurrence(@Nullable Object);
+    method public E removeLast();
+    method public boolean removeLastOccurrence(@Nullable Object);
+    method public int size();
+  }
+
+  public interface List<E> extends java.util.Collection<E> {
+    method public void add(int, E);
+    method public boolean addAll(int, @NonNull java.util.Collection<? extends E>);
+    method public E get(int);
+    method public int indexOf(@Nullable Object);
+    method public int lastIndexOf(@Nullable Object);
+    method @NonNull public java.util.ListIterator<E> listIterator();
+    method @NonNull public java.util.ListIterator<E> listIterator(int);
+    method @NonNull public static <E> java.util.List<E> of();
+    method @NonNull public static <E> java.util.List<E> of(@NonNull E);
+    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E);
+    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E, @NonNull E);
+    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E);
+    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
+    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
+    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
+    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
+    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
+    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
+    method @NonNull @java.lang.SafeVarargs public static <E> java.util.List<E> of(@NonNull E...);
+    method public E remove(int);
+    method public default void replaceAll(@NonNull java.util.function.UnaryOperator<E>);
+    method public E set(int, E);
+    method public default void sort(@Nullable java.util.Comparator<? super E>);
+    method @NonNull public java.util.List<E> subList(int, int);
+  }
+
+  public interface ListIterator<E> extends java.util.Iterator<E> {
+    method public void add(E);
+    method public boolean hasPrevious();
+    method public int nextIndex();
+    method public E previous();
+    method public int previousIndex();
+    method public void remove();
+    method public void set(E);
+  }
+
+  public abstract class ListResourceBundle extends java.util.ResourceBundle {
+    ctor public ListResourceBundle();
+    method protected abstract Object[][] getContents();
+    method public java.util.Enumeration<java.lang.String> getKeys();
+    method public final Object handleGetObject(String);
+  }
+
+  public final class Locale implements java.lang.Cloneable java.io.Serializable {
+    ctor public Locale(@NonNull String, @NonNull String, @NonNull String);
+    ctor public Locale(@NonNull String, @NonNull String);
+    ctor public Locale(@NonNull String);
+    method @NonNull public Object clone();
+    method @NonNull public static java.util.List<java.util.Locale> filter(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Collection<java.util.Locale>, @NonNull java.util.Locale.FilteringMode);
+    method @NonNull public static java.util.List<java.util.Locale> filter(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Collection<java.util.Locale>);
+    method @NonNull public static java.util.List<java.lang.String> filterTags(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Collection<java.lang.String>, @NonNull java.util.Locale.FilteringMode);
+    method @NonNull public static java.util.List<java.lang.String> filterTags(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Collection<java.lang.String>);
+    method @NonNull public static java.util.Locale forLanguageTag(@NonNull String);
+    method @NonNull public static java.util.Locale[] getAvailableLocales();
+    method @NonNull public String getCountry();
+    method @NonNull public static java.util.Locale getDefault();
+    method @NonNull public static java.util.Locale getDefault(@NonNull java.util.Locale.Category);
+    method @NonNull public String getDisplayCountry();
+    method @NonNull public String getDisplayCountry(@NonNull java.util.Locale);
+    method @NonNull public String getDisplayLanguage();
+    method @NonNull public String getDisplayLanguage(@NonNull java.util.Locale);
+    method @NonNull public String getDisplayName();
+    method @NonNull public String getDisplayName(@NonNull java.util.Locale);
+    method @NonNull public String getDisplayScript();
+    method @NonNull public String getDisplayScript(@NonNull java.util.Locale);
+    method @NonNull public String getDisplayVariant();
+    method @NonNull public String getDisplayVariant(@NonNull java.util.Locale);
+    method @Nullable public String getExtension(char);
+    method @NonNull public java.util.Set<java.lang.Character> getExtensionKeys();
+    method @NonNull public String getISO3Country() throws java.util.MissingResourceException;
+    method @NonNull public String getISO3Language() throws java.util.MissingResourceException;
+    method @NonNull public static String[] getISOCountries();
+    method @NonNull public static String[] getISOLanguages();
+    method @NonNull public String getLanguage();
+    method @NonNull public String getScript();
+    method @NonNull public java.util.Set<java.lang.String> getUnicodeLocaleAttributes();
+    method @NonNull public java.util.Set<java.lang.String> getUnicodeLocaleKeys();
+    method @Nullable public String getUnicodeLocaleType(@NonNull String);
+    method @NonNull public String getVariant();
+    method public boolean hasExtensions();
+    method @Nullable public static java.util.Locale lookup(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Collection<java.util.Locale>);
+    method @Nullable public static String lookupTag(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Collection<java.lang.String>);
+    method public static void setDefault(@NonNull java.util.Locale);
+    method public static void setDefault(@NonNull java.util.Locale.Category, @NonNull java.util.Locale);
+    method @NonNull public java.util.Locale stripExtensions();
+    method @NonNull public String toLanguageTag();
+    field @NonNull public static final java.util.Locale CANADA;
+    field @NonNull public static final java.util.Locale CANADA_FRENCH;
+    field @NonNull public static final java.util.Locale CHINA;
+    field @NonNull public static final java.util.Locale CHINESE;
+    field @NonNull public static final java.util.Locale ENGLISH;
+    field @NonNull public static final java.util.Locale FRANCE;
+    field @NonNull public static final java.util.Locale FRENCH;
+    field @NonNull public static final java.util.Locale GERMAN;
+    field @NonNull public static final java.util.Locale GERMANY;
+    field @NonNull public static final java.util.Locale ITALIAN;
+    field @NonNull public static final java.util.Locale ITALY;
+    field @NonNull public static final java.util.Locale JAPAN;
+    field @NonNull public static final java.util.Locale JAPANESE;
+    field @NonNull public static final java.util.Locale KOREA;
+    field @NonNull public static final java.util.Locale KOREAN;
+    field @NonNull public static final java.util.Locale PRC;
+    field public static final char PRIVATE_USE_EXTENSION = 120; // 0x0078 'x'
+    field @NonNull public static final java.util.Locale ROOT;
+    field @NonNull public static final java.util.Locale SIMPLIFIED_CHINESE;
+    field @NonNull public static final java.util.Locale TAIWAN;
+    field @NonNull public static final java.util.Locale TRADITIONAL_CHINESE;
+    field @NonNull public static final java.util.Locale UK;
+    field public static final char UNICODE_LOCALE_EXTENSION = 117; // 0x0075 'u'
+    field @NonNull public static final java.util.Locale US;
+  }
+
+  public static final class Locale.Builder {
+    ctor public Locale.Builder();
+    method @NonNull public java.util.Locale.Builder addUnicodeLocaleAttribute(@NonNull String);
+    method @NonNull public java.util.Locale build();
+    method @NonNull public java.util.Locale.Builder clear();
+    method @NonNull public java.util.Locale.Builder clearExtensions();
+    method @NonNull public java.util.Locale.Builder removeUnicodeLocaleAttribute(@NonNull String);
+    method @NonNull public java.util.Locale.Builder setExtension(char, @Nullable String);
+    method @NonNull public java.util.Locale.Builder setLanguage(@Nullable String);
+    method @NonNull public java.util.Locale.Builder setLanguageTag(@NonNull String);
+    method @NonNull public java.util.Locale.Builder setLocale(@NonNull java.util.Locale);
+    method @NonNull public java.util.Locale.Builder setRegion(@Nullable String);
+    method @NonNull public java.util.Locale.Builder setScript(@Nullable String);
+    method @NonNull public java.util.Locale.Builder setUnicodeLocaleKeyword(@NonNull String, @Nullable String);
+    method @NonNull public java.util.Locale.Builder setVariant(@Nullable String);
+  }
+
+  public enum Locale.Category {
+    enum_constant public static final java.util.Locale.Category DISPLAY;
+    enum_constant public static final java.util.Locale.Category FORMAT;
+  }
+
+  public enum Locale.FilteringMode {
+    enum_constant public static final java.util.Locale.FilteringMode AUTOSELECT_FILTERING;
+    enum_constant public static final java.util.Locale.FilteringMode EXTENDED_FILTERING;
+    enum_constant public static final java.util.Locale.FilteringMode IGNORE_EXTENDED_RANGES;
+    enum_constant public static final java.util.Locale.FilteringMode MAP_EXTENDED_RANGES;
+    enum_constant public static final java.util.Locale.FilteringMode REJECT_EXTENDED_RANGES;
+  }
+
+  public static final class Locale.LanguageRange {
+    ctor public Locale.LanguageRange(@NonNull String);
+    ctor public Locale.LanguageRange(@NonNull String, double);
+    method @NonNull public String getRange();
+    method public double getWeight();
+    method @NonNull public static java.util.List<java.util.Locale.LanguageRange> mapEquivalents(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>);
+    method @NonNull public static java.util.List<java.util.Locale.LanguageRange> parse(@NonNull String);
+    method @NonNull public static java.util.List<java.util.Locale.LanguageRange> parse(@NonNull String, @NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>);
+    field public static final double MAX_WEIGHT = 1.0;
+    field public static final double MIN_WEIGHT = 0.0;
+  }
+
+  public class LongSummaryStatistics implements java.util.function.IntConsumer java.util.function.LongConsumer {
+    ctor public LongSummaryStatistics();
+    method public void accept(int);
+    method public void accept(long);
+    method public void combine(java.util.LongSummaryStatistics);
+    method public final double getAverage();
+    method public final long getCount();
+    method public final long getMax();
+    method public final long getMin();
+    method public final long getSum();
+  }
+
+  public interface Map<K, V> {
+    method public void clear();
+    method @Nullable public default V compute(K, @NonNull java.util.function.BiFunction<? super K,? super V,? extends V>);
+    method @Nullable public default V computeIfAbsent(K, @NonNull java.util.function.Function<? super K,? extends V>);
+    method @Nullable public default V computeIfPresent(K, @NonNull java.util.function.BiFunction<? super K,? super V,? extends V>);
+    method public boolean containsKey(@Nullable Object);
+    method public boolean containsValue(@Nullable Object);
+    method @NonNull public static <K, V> java.util.Map.Entry<K,V> entry(@NonNull K, @NonNull V);
+    method @NonNull public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
+    method public boolean equals(@Nullable Object);
+    method public default void forEach(@NonNull java.util.function.BiConsumer<? super K,? super V>);
+    method @Nullable public V get(@Nullable Object);
+    method @Nullable public default V getOrDefault(@Nullable Object, @Nullable V);
+    method public int hashCode();
+    method public boolean isEmpty();
+    method @NonNull public java.util.Set<K> keySet();
+    method @Nullable public default V merge(K, @NonNull V, @NonNull java.util.function.BiFunction<? super V,? super V,? extends V>);
+    method @NonNull public static <K, V> java.util.Map<K,V> of();
+    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V);
+    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V);
+    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V);
+    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V);
+    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V);
+    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V);
+    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V);
+    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V);
+    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V);
+    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V);
+    method @NonNull @java.lang.SafeVarargs public static <K, V> java.util.Map<K,V> ofEntries(@NonNull java.util.Map.Entry<? extends K,? extends V>...);
+    method @Nullable public V put(K, V);
+    method public void putAll(@NonNull java.util.Map<? extends K,? extends V>);
+    method @Nullable public default V putIfAbsent(K, V);
+    method @Nullable public V remove(@Nullable Object);
+    method public default boolean remove(@Nullable Object, @Nullable Object);
+    method public default boolean replace(K, @Nullable V, V);
+    method @Nullable public default V replace(K, V);
+    method public default void replaceAll(@NonNull java.util.function.BiFunction<? super K,? super V,? extends V>);
+    method public int size();
+    method @NonNull public java.util.Collection<V> values();
+  }
+
+  public static interface Map.Entry<K, V> {
+    method @NonNull public static <K extends java.lang.Comparable<? super K>, V> java.util.Comparator<java.util.Map.Entry<K,V>> comparingByKey();
+    method @NonNull public static <K, V> java.util.Comparator<java.util.Map.Entry<K,V>> comparingByKey(@NonNull java.util.Comparator<? super K>);
+    method @NonNull public static <K, V extends java.lang.Comparable<? super V>> java.util.Comparator<java.util.Map.Entry<K,V>> comparingByValue();
+    method @NonNull public static <K, V> java.util.Comparator<java.util.Map.Entry<K,V>> comparingByValue(@NonNull java.util.Comparator<? super V>);
+    method public boolean equals(@Nullable Object);
+    method public K getKey();
+    method public V getValue();
+    method public int hashCode();
+    method public V setValue(V);
+  }
+
+  public class MissingFormatArgumentException extends java.util.IllegalFormatException {
+    ctor public MissingFormatArgumentException(String);
+    method public String getFormatSpecifier();
+  }
+
+  public class MissingFormatWidthException extends java.util.IllegalFormatException {
+    ctor public MissingFormatWidthException(String);
+    method public String getFormatSpecifier();
+  }
+
+  public class MissingResourceException extends java.lang.RuntimeException {
+    ctor public MissingResourceException(String, String, String);
+    method public String getClassName();
+    method public String getKey();
+  }
+
+  public interface NavigableMap<K, V> extends java.util.SortedMap<K,V> {
+    method @Nullable public java.util.Map.Entry<K,V> ceilingEntry(K);
+    method @Nullable public K ceilingKey(K);
+    method @NonNull public java.util.NavigableSet<K> descendingKeySet();
+    method @NonNull public java.util.NavigableMap<K,V> descendingMap();
+    method @Nullable public java.util.Map.Entry<K,V> firstEntry();
+    method @Nullable public java.util.Map.Entry<K,V> floorEntry(K);
+    method @Nullable public K floorKey(K);
+    method @NonNull public java.util.NavigableMap<K,V> headMap(K, boolean);
+    method @Nullable public java.util.Map.Entry<K,V> higherEntry(K);
+    method @Nullable public K higherKey(K);
+    method @Nullable public java.util.Map.Entry<K,V> lastEntry();
+    method @Nullable public java.util.Map.Entry<K,V> lowerEntry(K);
+    method @Nullable public K lowerKey(K);
+    method @NonNull public java.util.NavigableSet<K> navigableKeySet();
+    method @Nullable public java.util.Map.Entry<K,V> pollFirstEntry();
+    method @Nullable public java.util.Map.Entry<K,V> pollLastEntry();
+    method @NonNull public java.util.NavigableMap<K,V> subMap(K, boolean, K, boolean);
+    method @NonNull public java.util.NavigableMap<K,V> tailMap(K, boolean);
+  }
+
+  public interface NavigableSet<E> extends java.util.SortedSet<E> {
+    method public E ceiling(E);
+    method public java.util.Iterator<E> descendingIterator();
+    method public java.util.NavigableSet<E> descendingSet();
+    method public E floor(E);
+    method public java.util.NavigableSet<E> headSet(E, boolean);
+    method public E higher(E);
+    method public E lower(E);
+    method public E pollFirst();
+    method public E pollLast();
+    method public java.util.NavigableSet<E> subSet(E, boolean, E, boolean);
+    method public java.util.NavigableSet<E> tailSet(E, boolean);
+  }
+
+  public class NoSuchElementException extends java.lang.RuntimeException {
+    ctor public NoSuchElementException();
+    ctor public NoSuchElementException(String);
+  }
+
+  public final class Objects {
+    method public static int checkFromIndexSize(int, int, int);
+    method public static int checkFromToIndex(int, int, int);
+    method public static int checkIndex(int, int);
+    method public static <T> int compare(T, T, @NonNull java.util.Comparator<? super T>);
+    method public static boolean deepEquals(@Nullable Object, @Nullable Object);
+    method public static boolean equals(@Nullable Object, @Nullable Object);
+    method public static int hash(@Nullable java.lang.Object...);
+    method public static int hashCode(@Nullable Object);
+    method public static boolean isNull(@Nullable Object);
+    method public static boolean nonNull(@Nullable Object);
+    method @NonNull public static <T> T requireNonNull(@Nullable T);
+    method @NonNull public static <T> T requireNonNull(@Nullable T, @NonNull String);
+    method @NonNull public static <T> T requireNonNull(@Nullable T, @NonNull java.util.function.Supplier<java.lang.String>);
+    method @NonNull public static <T> T requireNonNullElse(@Nullable T, @NonNull T);
+    method @NonNull public static <T> T requireNonNullElseGet(@Nullable T, @NonNull java.util.function.Supplier<? extends T>);
+    method @NonNull public static String toString(@Nullable Object);
+    method @NonNull public static String toString(@Nullable Object, @NonNull String);
+  }
+
+  public class Observable {
+    ctor public Observable();
+    method public void addObserver(java.util.Observer);
+    method protected void clearChanged();
+    method public int countObservers();
+    method public void deleteObserver(java.util.Observer);
+    method public void deleteObservers();
+    method public boolean hasChanged();
+    method public void notifyObservers();
+    method public void notifyObservers(Object);
+    method protected void setChanged();
+  }
+
+  public interface Observer {
+    method public void update(java.util.Observable, Object);
+  }
+
+  public final class Optional<T> {
+    method public static <T> java.util.Optional<T> empty();
+    method public java.util.Optional<T> filter(java.util.function.Predicate<? super T>);
+    method public <U> java.util.Optional<U> flatMap(java.util.function.Function<? super T,java.util.Optional<U>>);
+    method public T get();
+    method public void ifPresent(java.util.function.Consumer<? super T>);
+    method public boolean isPresent();
+    method public <U> java.util.Optional<U> map(java.util.function.Function<? super T,? extends U>);
+    method public static <T> java.util.Optional<T> of(T);
+    method public static <T> java.util.Optional<T> ofNullable(T);
+    method public T orElse(T);
+    method public T orElseGet(java.util.function.Supplier<? extends T>);
+    method public <X extends java.lang.Throwable> T orElseThrow(java.util.function.Supplier<? extends X>) throws X;
+  }
+
+  public final class OptionalDouble {
+    method public static java.util.OptionalDouble empty();
+    method public double getAsDouble();
+    method public void ifPresent(java.util.function.DoubleConsumer);
+    method public boolean isPresent();
+    method public static java.util.OptionalDouble of(double);
+    method public double orElse(double);
+    method public double orElseGet(java.util.function.DoubleSupplier);
+    method public <X extends java.lang.Throwable> double orElseThrow(java.util.function.Supplier<X>) throws X;
+  }
+
+  public final class OptionalInt {
+    method public static java.util.OptionalInt empty();
+    method public int getAsInt();
+    method public void ifPresent(java.util.function.IntConsumer);
+    method public boolean isPresent();
+    method public static java.util.OptionalInt of(int);
+    method public int orElse(int);
+    method public int orElseGet(java.util.function.IntSupplier);
+    method public <X extends java.lang.Throwable> int orElseThrow(java.util.function.Supplier<X>) throws X;
+  }
+
+  public final class OptionalLong {
+    method public static java.util.OptionalLong empty();
+    method public long getAsLong();
+    method public void ifPresent(java.util.function.LongConsumer);
+    method public boolean isPresent();
+    method public static java.util.OptionalLong of(long);
+    method public long orElse(long);
+    method public long orElseGet(java.util.function.LongSupplier);
+    method public <X extends java.lang.Throwable> long orElseThrow(java.util.function.Supplier<X>) throws X;
+  }
+
+  public interface PrimitiveIterator<T, T_CONS> extends java.util.Iterator<T> {
+    method public void forEachRemaining(T_CONS);
+  }
+
+  public static interface PrimitiveIterator.OfDouble extends java.util.PrimitiveIterator<java.lang.Double,java.util.function.DoubleConsumer> {
+    method public default void forEachRemaining(java.util.function.DoubleConsumer);
+    method public default void forEachRemaining(java.util.function.Consumer<? super java.lang.Double>);
+    method public default Double next();
+    method public double nextDouble();
+  }
+
+  public static interface PrimitiveIterator.OfInt extends java.util.PrimitiveIterator<java.lang.Integer,java.util.function.IntConsumer> {
+    method public default void forEachRemaining(java.util.function.IntConsumer);
+    method public default void forEachRemaining(java.util.function.Consumer<? super java.lang.Integer>);
+    method public default Integer next();
+    method public int nextInt();
+  }
+
+  public static interface PrimitiveIterator.OfLong extends java.util.PrimitiveIterator<java.lang.Long,java.util.function.LongConsumer> {
+    method public default void forEachRemaining(java.util.function.LongConsumer);
+    method public default void forEachRemaining(java.util.function.Consumer<? super java.lang.Long>);
+    method public default Long next();
+    method public long nextLong();
+  }
+
+  public class PriorityQueue<E> extends java.util.AbstractQueue<E> implements java.io.Serializable {
+    ctor public PriorityQueue();
+    ctor public PriorityQueue(int);
+    ctor public PriorityQueue(java.util.Comparator<? super E>);
+    ctor public PriorityQueue(int, java.util.Comparator<? super E>);
+    ctor public PriorityQueue(java.util.Collection<? extends E>);
+    ctor public PriorityQueue(java.util.PriorityQueue<? extends E>);
+    ctor public PriorityQueue(java.util.SortedSet<? extends E>);
+    method public java.util.Comparator<? super E> comparator();
+    method public java.util.Iterator<E> iterator();
+    method public boolean offer(E);
+    method public E peek();
+    method public E poll();
+    method public int size();
+    method public final java.util.Spliterator<E> spliterator();
+  }
+
+  public class Properties extends java.util.Hashtable<java.lang.Object,java.lang.Object> {
+    ctor public Properties();
+    ctor public Properties(java.util.Properties);
+    method public String getProperty(String);
+    method public String getProperty(String, String);
+    method public void list(java.io.PrintStream);
+    method public void list(java.io.PrintWriter);
+    method public void load(java.io.Reader) throws java.io.IOException;
+    method public void load(java.io.InputStream) throws java.io.IOException;
+    method public void loadFromXML(java.io.InputStream) throws java.io.IOException, java.util.InvalidPropertiesFormatException;
+    method public java.util.Enumeration<?> propertyNames();
+    method @Deprecated public void save(java.io.OutputStream, String);
+    method public Object setProperty(String, String);
+    method public void store(java.io.Writer, String) throws java.io.IOException;
+    method public void store(java.io.OutputStream, String) throws java.io.IOException;
+    method public void storeToXML(java.io.OutputStream, String) throws java.io.IOException;
+    method public void storeToXML(java.io.OutputStream, String, String) throws java.io.IOException;
+    method public java.util.Set<java.lang.String> stringPropertyNames();
+    field protected java.util.Properties defaults;
+  }
+
+  public final class PropertyPermission extends java.security.BasicPermission {
+    ctor public PropertyPermission(String, String);
+  }
+
+  public class PropertyResourceBundle extends java.util.ResourceBundle {
+    ctor public PropertyResourceBundle(java.io.InputStream) throws java.io.IOException;
+    ctor public PropertyResourceBundle(java.io.Reader) throws java.io.IOException;
+    method public java.util.Enumeration<java.lang.String> getKeys();
+    method public Object handleGetObject(String);
+  }
+
+  public interface Queue<E> extends java.util.Collection<E> {
+    method public E element();
+    method public boolean offer(E);
+    method @Nullable public E peek();
+    method @Nullable public E poll();
+    method public E remove();
+  }
+
+  public class Random implements java.io.Serializable {
+    ctor public Random();
+    ctor public Random(long);
+    method public java.util.stream.DoubleStream doubles(long);
+    method public java.util.stream.DoubleStream doubles();
+    method public java.util.stream.DoubleStream doubles(long, double, double);
+    method public java.util.stream.DoubleStream doubles(double, double);
+    method public java.util.stream.IntStream ints(long);
+    method public java.util.stream.IntStream ints();
+    method public java.util.stream.IntStream ints(long, int, int);
+    method public java.util.stream.IntStream ints(int, int);
+    method public java.util.stream.LongStream longs(long);
+    method public java.util.stream.LongStream longs();
+    method public java.util.stream.LongStream longs(long, long, long);
+    method public java.util.stream.LongStream longs(long, long);
+    method protected int next(int);
+    method public boolean nextBoolean();
+    method public void nextBytes(byte[]);
+    method public double nextDouble();
+    method public float nextFloat();
+    method public double nextGaussian();
+    method public int nextInt();
+    method public int nextInt(int);
+    method public long nextLong();
+    method public void setSeed(long);
+  }
+
+  public interface RandomAccess {
+  }
+
+  public abstract class ResourceBundle {
+    ctor public ResourceBundle();
+    method public static final void clearCache();
+    method public static final void clearCache(ClassLoader);
+    method public boolean containsKey(String);
+    method public String getBaseBundleName();
+    method public static final java.util.ResourceBundle getBundle(String);
+    method public static final java.util.ResourceBundle getBundle(String, java.util.ResourceBundle.Control);
+    method public static final java.util.ResourceBundle getBundle(String, java.util.Locale);
+    method public static final java.util.ResourceBundle getBundle(String, java.util.Locale, java.util.ResourceBundle.Control);
+    method public static java.util.ResourceBundle getBundle(String, java.util.Locale, ClassLoader);
+    method public static java.util.ResourceBundle getBundle(String, java.util.Locale, ClassLoader, java.util.ResourceBundle.Control);
+    method public abstract java.util.Enumeration<java.lang.String> getKeys();
+    method public java.util.Locale getLocale();
+    method public final Object getObject(String);
+    method public final String getString(String);
+    method public final String[] getStringArray(String);
+    method protected abstract Object handleGetObject(String);
+    method protected java.util.Set<java.lang.String> handleKeySet();
+    method public java.util.Set<java.lang.String> keySet();
+    method protected void setParent(java.util.ResourceBundle);
+    field protected java.util.ResourceBundle parent;
+  }
+
+  public static class ResourceBundle.Control {
+    ctor protected ResourceBundle.Control();
+    method public java.util.List<java.util.Locale> getCandidateLocales(String, java.util.Locale);
+    method public static final java.util.ResourceBundle.Control getControl(java.util.List<java.lang.String>);
+    method public java.util.Locale getFallbackLocale(String, java.util.Locale);
+    method public java.util.List<java.lang.String> getFormats(String);
+    method public static final java.util.ResourceBundle.Control getNoFallbackControl(java.util.List<java.lang.String>);
+    method public long getTimeToLive(String, java.util.Locale);
+    method public boolean needsReload(String, java.util.Locale, String, ClassLoader, java.util.ResourceBundle, long);
+    method public java.util.ResourceBundle newBundle(String, java.util.Locale, String, ClassLoader, boolean) throws java.io.IOException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+    method public String toBundleName(String, java.util.Locale);
+    method public final String toResourceName(String, String);
+    field public static final java.util.List<java.lang.String> FORMAT_CLASS;
+    field public static final java.util.List<java.lang.String> FORMAT_DEFAULT;
+    field public static final java.util.List<java.lang.String> FORMAT_PROPERTIES;
+    field public static final long TTL_DONT_CACHE = -1L; // 0xffffffffffffffffL
+    field public static final long TTL_NO_EXPIRATION_CONTROL = -2L; // 0xfffffffffffffffeL
+  }
+
+  public final class Scanner implements java.io.Closeable java.util.Iterator<java.lang.String> {
+    ctor public Scanner(Readable);
+    ctor public Scanner(java.io.InputStream);
+    ctor public Scanner(java.io.InputStream, String);
+    ctor public Scanner(java.io.File) throws java.io.FileNotFoundException;
+    ctor public Scanner(java.io.File, String) throws java.io.FileNotFoundException;
+    ctor public Scanner(java.nio.file.Path) throws java.io.IOException;
+    ctor public Scanner(java.nio.file.Path, String) throws java.io.IOException;
+    ctor public Scanner(String);
+    ctor public Scanner(java.nio.channels.ReadableByteChannel);
+    ctor public Scanner(java.nio.channels.ReadableByteChannel, String);
+    method public void close();
+    method public java.util.regex.Pattern delimiter();
+    method public String findInLine(String);
+    method public String findInLine(java.util.regex.Pattern);
+    method public String findWithinHorizon(String, int);
+    method public String findWithinHorizon(java.util.regex.Pattern, int);
+    method public boolean hasNext();
+    method public boolean hasNext(String);
+    method public boolean hasNext(java.util.regex.Pattern);
+    method public boolean hasNextBigDecimal();
+    method public boolean hasNextBigInteger();
+    method public boolean hasNextBigInteger(int);
+    method public boolean hasNextBoolean();
+    method public boolean hasNextByte();
+    method public boolean hasNextByte(int);
+    method public boolean hasNextDouble();
+    method public boolean hasNextFloat();
+    method public boolean hasNextInt();
+    method public boolean hasNextInt(int);
+    method public boolean hasNextLine();
+    method public boolean hasNextLong();
+    method public boolean hasNextLong(int);
+    method public boolean hasNextShort();
+    method public boolean hasNextShort(int);
+    method public java.io.IOException ioException();
+    method public java.util.Locale locale();
+    method public java.util.regex.MatchResult match();
+    method public String next();
+    method public String next(String);
+    method public String next(java.util.regex.Pattern);
+    method public java.math.BigDecimal nextBigDecimal();
+    method public java.math.BigInteger nextBigInteger();
+    method public java.math.BigInteger nextBigInteger(int);
+    method public boolean nextBoolean();
+    method public byte nextByte();
+    method public byte nextByte(int);
+    method public double nextDouble();
+    method public float nextFloat();
+    method public int nextInt();
+    method public int nextInt(int);
+    method public String nextLine();
+    method public long nextLong();
+    method public long nextLong(int);
+    method public short nextShort();
+    method public short nextShort(int);
+    method public int radix();
+    method public java.util.Scanner reset();
+    method public java.util.Scanner skip(java.util.regex.Pattern);
+    method public java.util.Scanner skip(String);
+    method public java.util.Scanner useDelimiter(java.util.regex.Pattern);
+    method public java.util.Scanner useDelimiter(String);
+    method public java.util.Scanner useLocale(java.util.Locale);
+    method public java.util.Scanner useRadix(int);
+  }
+
+  public class ServiceConfigurationError extends java.lang.Error {
+    ctor public ServiceConfigurationError(String);
+    ctor public ServiceConfigurationError(String, Throwable);
+  }
+
+  public final class ServiceLoader<S> implements java.lang.Iterable<S> {
+    method public java.util.Iterator<S> iterator();
+    method public static <S> java.util.ServiceLoader<S> load(Class<S>, ClassLoader);
+    method public static <S> java.util.ServiceLoader<S> load(Class<S>);
+    method public static <S> java.util.ServiceLoader<S> loadInstalled(Class<S>);
+    method public void reload();
+  }
+
+  public interface Set<E> extends java.util.Collection<E> {
+    method @NonNull public static <E> java.util.Set<E> of();
+    method @NonNull public static <E> java.util.Set<E> of(@NonNull E);
+    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E);
+    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E, @NonNull E);
+    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E);
+    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
+    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
+    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
+    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
+    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
+    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
+    method @NonNull @java.lang.SafeVarargs public static <E> java.util.Set<E> of(@NonNull E...);
+  }
+
+  public class SimpleTimeZone extends java.util.TimeZone {
+    ctor public SimpleTimeZone(int, String);
+    ctor public SimpleTimeZone(int, String, int, int, int, int, int, int, int, int);
+    ctor public SimpleTimeZone(int, String, int, int, int, int, int, int, int, int, int);
+    ctor public SimpleTimeZone(int, String, int, int, int, int, int, int, int, int, int, int, int);
+    method public int getOffset(int, int, int, int, int, int);
+    method public int getRawOffset();
+    method public boolean inDaylightTime(java.util.Date);
+    method public void setDSTSavings(int);
+    method public void setEndRule(int, int, int, int);
+    method public void setEndRule(int, int, int);
+    method public void setEndRule(int, int, int, int, boolean);
+    method public void setRawOffset(int);
+    method public void setStartRule(int, int, int, int);
+    method public void setStartRule(int, int, int);
+    method public void setStartRule(int, int, int, int, boolean);
+    method public void setStartYear(int);
+    method public boolean useDaylightTime();
+    field public static final int STANDARD_TIME = 1; // 0x1
+    field public static final int UTC_TIME = 2; // 0x2
+    field public static final int WALL_TIME = 0; // 0x0
+  }
+
+  public interface SortedMap<K, V> extends java.util.Map<K,V> {
+    method @Nullable public java.util.Comparator<? super K> comparator();
+    method public K firstKey();
+    method @NonNull public java.util.SortedMap<K,V> headMap(K);
+    method public K lastKey();
+    method @NonNull public java.util.SortedMap<K,V> subMap(K, K);
+    method @NonNull public java.util.SortedMap<K,V> tailMap(K);
+  }
+
+  public interface SortedSet<E> extends java.util.Set<E> {
+    method public java.util.Comparator<? super E> comparator();
+    method public E first();
+    method public java.util.SortedSet<E> headSet(E);
+    method public E last();
+    method public java.util.SortedSet<E> subSet(E, E);
+    method public java.util.SortedSet<E> tailSet(E);
+  }
+
+  public interface Spliterator<T> {
+    method public int characteristics();
+    method public long estimateSize();
+    method public default void forEachRemaining(java.util.function.Consumer<? super T>);
+    method public default java.util.Comparator<? super T> getComparator();
+    method public default long getExactSizeIfKnown();
+    method public default boolean hasCharacteristics(int);
+    method public boolean tryAdvance(java.util.function.Consumer<? super T>);
+    method public java.util.Spliterator<T> trySplit();
+    field public static final int CONCURRENT = 4096; // 0x1000
+    field public static final int DISTINCT = 1; // 0x1
+    field public static final int IMMUTABLE = 1024; // 0x400
+    field public static final int NONNULL = 256; // 0x100
+    field public static final int ORDERED = 16; // 0x10
+    field public static final int SIZED = 64; // 0x40
+    field public static final int SORTED = 4; // 0x4
+    field public static final int SUBSIZED = 16384; // 0x4000
+  }
+
+  public static interface Spliterator.OfDouble extends java.util.Spliterator.OfPrimitive<java.lang.Double,java.util.function.DoubleConsumer,java.util.Spliterator.OfDouble> {
+    method public default void forEachRemaining(java.util.function.DoubleConsumer);
+    method public default void forEachRemaining(java.util.function.Consumer<? super java.lang.Double>);
+    method public boolean tryAdvance(java.util.function.DoubleConsumer);
+    method public default boolean tryAdvance(java.util.function.Consumer<? super java.lang.Double>);
+    method public java.util.Spliterator.OfDouble trySplit();
+  }
+
+  public static interface Spliterator.OfInt extends java.util.Spliterator.OfPrimitive<java.lang.Integer,java.util.function.IntConsumer,java.util.Spliterator.OfInt> {
+    method public default void forEachRemaining(java.util.function.IntConsumer);
+    method public default void forEachRemaining(java.util.function.Consumer<? super java.lang.Integer>);
+    method public boolean tryAdvance(java.util.function.IntConsumer);
+    method public default boolean tryAdvance(java.util.function.Consumer<? super java.lang.Integer>);
+    method public java.util.Spliterator.OfInt trySplit();
+  }
+
+  public static interface Spliterator.OfLong extends java.util.Spliterator.OfPrimitive<java.lang.Long,java.util.function.LongConsumer,java.util.Spliterator.OfLong> {
+    method public default void forEachRemaining(java.util.function.LongConsumer);
+    method public default void forEachRemaining(java.util.function.Consumer<? super java.lang.Long>);
+    method public boolean tryAdvance(java.util.function.LongConsumer);
+    method public default boolean tryAdvance(java.util.function.Consumer<? super java.lang.Long>);
+    method public java.util.Spliterator.OfLong trySplit();
+  }
+
+  public static interface Spliterator.OfPrimitive<T, T_CONS, T_SPLITR extends java.util.Spliterator.OfPrimitive<T, T_CONS, T_SPLITR>> extends java.util.Spliterator<T> {
+    method public default void forEachRemaining(T_CONS);
+    method public boolean tryAdvance(T_CONS);
+    method public T_SPLITR trySplit();
+  }
+
+  public final class Spliterators {
+    method public static java.util.Spliterator.OfDouble emptyDoubleSpliterator();
+    method public static java.util.Spliterator.OfInt emptyIntSpliterator();
+    method public static java.util.Spliterator.OfLong emptyLongSpliterator();
+    method public static <T> java.util.Spliterator<T> emptySpliterator();
+    method public static <T> java.util.Iterator<T> iterator(java.util.Spliterator<? extends T>);
+    method public static java.util.PrimitiveIterator.OfInt iterator(java.util.Spliterator.OfInt);
+    method public static java.util.PrimitiveIterator.OfLong iterator(java.util.Spliterator.OfLong);
+    method public static java.util.PrimitiveIterator.OfDouble iterator(java.util.Spliterator.OfDouble);
+    method public static <T> java.util.Spliterator<T> spliterator(Object[], int);
+    method public static <T> java.util.Spliterator<T> spliterator(Object[], int, int, int);
+    method public static java.util.Spliterator.OfInt spliterator(int[], int);
+    method public static java.util.Spliterator.OfInt spliterator(int[], int, int, int);
+    method public static java.util.Spliterator.OfLong spliterator(long[], int);
+    method public static java.util.Spliterator.OfLong spliterator(long[], int, int, int);
+    method public static java.util.Spliterator.OfDouble spliterator(double[], int);
+    method public static java.util.Spliterator.OfDouble spliterator(double[], int, int, int);
+    method public static <T> java.util.Spliterator<T> spliterator(java.util.Collection<? extends T>, int);
+    method public static <T> java.util.Spliterator<T> spliterator(java.util.Iterator<? extends T>, long, int);
+    method public static java.util.Spliterator.OfInt spliterator(java.util.PrimitiveIterator.OfInt, long, int);
+    method public static java.util.Spliterator.OfLong spliterator(java.util.PrimitiveIterator.OfLong, long, int);
+    method public static java.util.Spliterator.OfDouble spliterator(java.util.PrimitiveIterator.OfDouble, long, int);
+    method public static <T> java.util.Spliterator<T> spliteratorUnknownSize(java.util.Iterator<? extends T>, int);
+    method public static java.util.Spliterator.OfInt spliteratorUnknownSize(java.util.PrimitiveIterator.OfInt, int);
+    method public static java.util.Spliterator.OfLong spliteratorUnknownSize(java.util.PrimitiveIterator.OfLong, int);
+    method public static java.util.Spliterator.OfDouble spliteratorUnknownSize(java.util.PrimitiveIterator.OfDouble, int);
+  }
+
+  public abstract static class Spliterators.AbstractDoubleSpliterator implements java.util.Spliterator.OfDouble {
+    ctor protected Spliterators.AbstractDoubleSpliterator(long, int);
+    method public int characteristics();
+    method public long estimateSize();
+    method public java.util.Spliterator.OfDouble trySplit();
+  }
+
+  public abstract static class Spliterators.AbstractIntSpliterator implements java.util.Spliterator.OfInt {
+    ctor protected Spliterators.AbstractIntSpliterator(long, int);
+    method public int characteristics();
+    method public long estimateSize();
+    method public java.util.Spliterator.OfInt trySplit();
+  }
+
+  public abstract static class Spliterators.AbstractLongSpliterator implements java.util.Spliterator.OfLong {
+    ctor protected Spliterators.AbstractLongSpliterator(long, int);
+    method public int characteristics();
+    method public long estimateSize();
+    method public java.util.Spliterator.OfLong trySplit();
+  }
+
+  public abstract static class Spliterators.AbstractSpliterator<T> implements java.util.Spliterator<T> {
+    ctor protected Spliterators.AbstractSpliterator(long, int);
+    method public int characteristics();
+    method public long estimateSize();
+    method public java.util.Spliterator<T> trySplit();
+  }
+
+  public final class SplittableRandom {
+    ctor public SplittableRandom(long);
+    ctor public SplittableRandom();
+    method public java.util.stream.DoubleStream doubles(long);
+    method public java.util.stream.DoubleStream doubles();
+    method public java.util.stream.DoubleStream doubles(long, double, double);
+    method public java.util.stream.DoubleStream doubles(double, double);
+    method public java.util.stream.IntStream ints(long);
+    method public java.util.stream.IntStream ints();
+    method public java.util.stream.IntStream ints(long, int, int);
+    method public java.util.stream.IntStream ints(int, int);
+    method public java.util.stream.LongStream longs(long);
+    method public java.util.stream.LongStream longs();
+    method public java.util.stream.LongStream longs(long, long, long);
+    method public java.util.stream.LongStream longs(long, long);
+    method public boolean nextBoolean();
+    method public double nextDouble();
+    method public double nextDouble(double);
+    method public double nextDouble(double, double);
+    method public int nextInt();
+    method public int nextInt(int);
+    method public int nextInt(int, int);
+    method public long nextLong();
+    method public long nextLong(long);
+    method public long nextLong(long, long);
+    method public java.util.SplittableRandom split();
+  }
+
+  public class Stack<E> extends java.util.Vector<E> {
+    ctor public Stack();
+    method public boolean empty();
+    method public E peek();
+    method public E pop();
+    method public E push(E);
+    method public int search(Object);
+  }
+
+  public final class StringJoiner {
+    ctor public StringJoiner(CharSequence);
+    ctor public StringJoiner(CharSequence, CharSequence, CharSequence);
+    method public java.util.StringJoiner add(CharSequence);
+    method public int length();
+    method public java.util.StringJoiner merge(java.util.StringJoiner);
+    method public java.util.StringJoiner setEmptyValue(CharSequence);
+  }
+
+  public class StringTokenizer implements java.util.Enumeration<java.lang.Object> {
+    ctor public StringTokenizer(String, String, boolean);
+    ctor public StringTokenizer(String, String);
+    ctor public StringTokenizer(String);
+    method public int countTokens();
+    method public boolean hasMoreElements();
+    method public boolean hasMoreTokens();
+    method public Object nextElement();
+    method public String nextToken();
+    method public String nextToken(String);
+  }
+
+  public abstract class TimeZone implements java.lang.Cloneable java.io.Serializable {
+    ctor public TimeZone();
+    method public Object clone();
+    method public static String[] getAvailableIDs(int);
+    method public static String[] getAvailableIDs();
+    method public int getDSTSavings();
+    method public static java.util.TimeZone getDefault();
+    method public final String getDisplayName();
+    method public final String getDisplayName(java.util.Locale);
+    method public final String getDisplayName(boolean, int);
+    method public String getDisplayName(boolean, int, java.util.Locale);
+    method public String getID();
+    method public abstract int getOffset(int, int, int, int, int, int);
+    method public int getOffset(long);
+    method public abstract int getRawOffset();
+    method public static java.util.TimeZone getTimeZone(String);
+    method public static java.util.TimeZone getTimeZone(java.time.ZoneId);
+    method public boolean hasSameRules(java.util.TimeZone);
+    method public abstract boolean inDaylightTime(java.util.Date);
+    method public boolean observesDaylightTime();
+    method public static void setDefault(java.util.TimeZone);
+    method public void setID(String);
+    method public abstract void setRawOffset(int);
+    method public java.time.ZoneId toZoneId();
+    method public abstract boolean useDaylightTime();
+    field public static final int LONG = 1; // 0x1
+    field public static final int SHORT = 0; // 0x0
+  }
+
+  public class Timer {
+    ctor public Timer();
+    ctor public Timer(boolean);
+    ctor public Timer(String);
+    ctor public Timer(String, boolean);
+    method public void cancel();
+    method public int purge();
+    method public void schedule(java.util.TimerTask, long);
+    method public void schedule(java.util.TimerTask, java.util.Date);
+    method public void schedule(java.util.TimerTask, long, long);
+    method public void schedule(java.util.TimerTask, java.util.Date, long);
+    method public void scheduleAtFixedRate(java.util.TimerTask, long, long);
+    method public void scheduleAtFixedRate(java.util.TimerTask, java.util.Date, long);
+  }
+
+  public abstract class TimerTask implements java.lang.Runnable {
+    ctor protected TimerTask();
+    method public boolean cancel();
+    method public long scheduledExecutionTime();
+  }
+
+  public class TooManyListenersException extends java.lang.Exception {
+    ctor public TooManyListenersException();
+    ctor public TooManyListenersException(String);
+  }
+
+  public class TreeMap<K, V> extends java.util.AbstractMap<K,V> implements java.lang.Cloneable java.util.NavigableMap<K,V> java.io.Serializable {
+    ctor public TreeMap();
+    ctor public TreeMap(@Nullable java.util.Comparator<? super K>);
+    ctor public TreeMap(@NonNull java.util.Map<? extends K,? extends V>);
+    ctor public TreeMap(@NonNull java.util.SortedMap<K,? extends V>);
+    method @Nullable public java.util.Map.Entry<K,V> ceilingEntry(K);
+    method @Nullable public K ceilingKey(K);
+    method @NonNull public Object clone();
+    method @Nullable public java.util.Comparator<? super K> comparator();
+    method @NonNull public java.util.NavigableSet<K> descendingKeySet();
+    method @NonNull public java.util.NavigableMap<K,V> descendingMap();
+    method @NonNull public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
+    method @Nullable public java.util.Map.Entry<K,V> firstEntry();
+    method public K firstKey();
+    method @Nullable public java.util.Map.Entry<K,V> floorEntry(K);
+    method @Nullable public K floorKey(K);
+    method @NonNull public java.util.NavigableMap<K,V> headMap(K, boolean);
+    method @NonNull public java.util.SortedMap<K,V> headMap(K);
+    method @Nullable public java.util.Map.Entry<K,V> higherEntry(K);
+    method @Nullable public K higherKey(K);
+    method @Nullable public java.util.Map.Entry<K,V> lastEntry();
+    method public K lastKey();
+    method @Nullable public java.util.Map.Entry<K,V> lowerEntry(K);
+    method @Nullable public K lowerKey(K);
+    method @NonNull public java.util.NavigableSet<K> navigableKeySet();
+    method @Nullable public java.util.Map.Entry<K,V> pollFirstEntry();
+    method @Nullable public java.util.Map.Entry<K,V> pollLastEntry();
+    method @NonNull public java.util.NavigableMap<K,V> subMap(K, boolean, K, boolean);
+    method @NonNull public java.util.SortedMap<K,V> subMap(K, K);
+    method @NonNull public java.util.NavigableMap<K,V> tailMap(K, boolean);
+    method @NonNull public java.util.SortedMap<K,V> tailMap(K);
+  }
+
+  public class TreeSet<E> extends java.util.AbstractSet<E> implements java.lang.Cloneable java.util.NavigableSet<E> java.io.Serializable {
+    ctor public TreeSet();
+    ctor public TreeSet(java.util.Comparator<? super E>);
+    ctor public TreeSet(java.util.Collection<? extends E>);
+    ctor public TreeSet(java.util.SortedSet<E>);
+    method public E ceiling(E);
+    method public Object clone();
+    method public java.util.Comparator<? super E> comparator();
+    method public java.util.Iterator<E> descendingIterator();
+    method public java.util.NavigableSet<E> descendingSet();
+    method public E first();
+    method public E floor(E);
+    method public java.util.NavigableSet<E> headSet(E, boolean);
+    method public java.util.SortedSet<E> headSet(E);
+    method public E higher(E);
+    method public java.util.Iterator<E> iterator();
+    method public E last();
+    method public E lower(E);
+    method public E pollFirst();
+    method public E pollLast();
+    method public int size();
+    method public java.util.NavigableSet<E> subSet(E, boolean, E, boolean);
+    method public java.util.SortedSet<E> subSet(E, E);
+    method public java.util.NavigableSet<E> tailSet(E, boolean);
+    method public java.util.SortedSet<E> tailSet(E);
+  }
+
+  public final class UUID implements java.lang.Comparable<java.util.UUID> java.io.Serializable {
+    ctor public UUID(long, long);
+    method public int clockSequence();
+    method public int compareTo(java.util.UUID);
+    method public static java.util.UUID fromString(String);
+    method public long getLeastSignificantBits();
+    method public long getMostSignificantBits();
+    method public static java.util.UUID nameUUIDFromBytes(byte[]);
+    method public long node();
+    method public static java.util.UUID randomUUID();
+    method public long timestamp();
+    method public int variant();
+    method public int version();
+  }
+
+  public class UnknownFormatConversionException extends java.util.IllegalFormatException {
+    ctor public UnknownFormatConversionException(String);
+    method public String getConversion();
+  }
+
+  public class UnknownFormatFlagsException extends java.util.IllegalFormatException {
+    ctor public UnknownFormatFlagsException(String);
+    method public String getFlags();
+  }
+
+  public class Vector<E> extends java.util.AbstractList<E> implements java.lang.Cloneable java.util.List<E> java.util.RandomAccess java.io.Serializable {
+    ctor public Vector(int, int);
+    ctor public Vector(int);
+    ctor public Vector();
+    ctor public Vector(@NonNull java.util.Collection<? extends E>);
+    method public void addElement(E);
+    method public int capacity();
+    method @NonNull public Object clone();
+    method public void copyInto(@NonNull Object[]);
+    method public E elementAt(int);
+    method @NonNull public java.util.Enumeration<E> elements();
+    method public void ensureCapacity(int);
+    method public E firstElement();
+    method public void forEach(@NonNull java.util.function.Consumer<? super E>);
+    method public E get(int);
+    method public int indexOf(@Nullable Object, int);
+    method public void insertElementAt(E, int);
+    method public E lastElement();
+    method public int lastIndexOf(@Nullable Object, int);
+    method public void removeAllElements();
+    method public boolean removeElement(@Nullable Object);
+    method public void removeElementAt(int);
+    method public void setElementAt(E, int);
+    method public void setSize(int);
+    method public int size();
+    method public void trimToSize();
+    field protected int capacityIncrement;
+    field protected int elementCount;
+    field @NonNull protected Object[] elementData;
+  }
+
+  public class WeakHashMap<K, V> extends java.util.AbstractMap<K,V> implements java.util.Map<K,V> {
+    ctor public WeakHashMap(int, float);
+    ctor public WeakHashMap(int);
+    ctor public WeakHashMap();
+    ctor public WeakHashMap(@NonNull java.util.Map<? extends K,? extends V>);
+    method @NonNull public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
+  }
+
+}
+
+package java.util.concurrent {
+
+  public abstract class AbstractExecutorService implements java.util.concurrent.ExecutorService {
+    ctor public AbstractExecutorService();
+    method public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>>) throws java.lang.InterruptedException;
+    method public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>>, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>>) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
+    method public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>>, long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
+    method protected <T> java.util.concurrent.RunnableFuture<T> newTaskFor(Runnable, T);
+    method protected <T> java.util.concurrent.RunnableFuture<T> newTaskFor(java.util.concurrent.Callable<T>);
+    method public java.util.concurrent.Future<?> submit(Runnable);
+    method public <T> java.util.concurrent.Future<T> submit(Runnable, T);
+    method public <T> java.util.concurrent.Future<T> submit(java.util.concurrent.Callable<T>);
+  }
+
+  public class ArrayBlockingQueue<E> extends java.util.AbstractQueue<E> implements java.util.concurrent.BlockingQueue<E> java.io.Serializable {
+    ctor public ArrayBlockingQueue(int);
+    ctor public ArrayBlockingQueue(int, boolean);
+    ctor public ArrayBlockingQueue(int, boolean, java.util.Collection<? extends E>);
+    method public int drainTo(java.util.Collection<? super E>);
+    method public int drainTo(java.util.Collection<? super E>, int);
+    method public java.util.Iterator<E> iterator();
+    method public boolean offer(E);
+    method public boolean offer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public E peek();
+    method public E poll();
+    method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public void put(E) throws java.lang.InterruptedException;
+    method public int remainingCapacity();
+    method public int size();
+    method public E take() throws java.lang.InterruptedException;
+  }
+
+  public interface BlockingDeque<E> extends java.util.concurrent.BlockingQueue<E> java.util.Deque<E> {
+    method public boolean offerFirst(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public boolean offerLast(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public E pollFirst(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public E pollLast(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public void putFirst(E) throws java.lang.InterruptedException;
+    method public void putLast(E) throws java.lang.InterruptedException;
+    method public E takeFirst() throws java.lang.InterruptedException;
+    method public E takeLast() throws java.lang.InterruptedException;
+  }
+
+  public interface BlockingQueue<E> extends java.util.Queue<E> {
+    method public int drainTo(java.util.Collection<? super E>);
+    method public int drainTo(java.util.Collection<? super E>, int);
+    method public boolean offer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public void put(E) throws java.lang.InterruptedException;
+    method public int remainingCapacity();
+    method public E take() throws java.lang.InterruptedException;
+  }
+
+  public class BrokenBarrierException extends java.lang.Exception {
+    ctor public BrokenBarrierException();
+    ctor public BrokenBarrierException(String);
+  }
+
+  @java.lang.FunctionalInterface public interface Callable<V> {
+    method public V call() throws java.lang.Exception;
+  }
+
+  public class CancellationException extends java.lang.IllegalStateException {
+    ctor public CancellationException();
+    ctor public CancellationException(String);
+  }
+
+  public class CompletableFuture<T> implements java.util.concurrent.CompletionStage<T> java.util.concurrent.Future<T> {
+    ctor public CompletableFuture();
+    method public java.util.concurrent.CompletableFuture<java.lang.Void> acceptEither(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>);
+    method public java.util.concurrent.CompletableFuture<java.lang.Void> acceptEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>);
+    method public java.util.concurrent.CompletableFuture<java.lang.Void> acceptEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>, java.util.concurrent.Executor);
+    method public static java.util.concurrent.CompletableFuture<java.lang.Void> allOf(java.util.concurrent.CompletableFuture<?>...);
+    method public static java.util.concurrent.CompletableFuture<java.lang.Object> anyOf(java.util.concurrent.CompletableFuture<?>...);
+    method public <U> java.util.concurrent.CompletableFuture<U> applyToEither(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T,U>);
+    method public <U> java.util.concurrent.CompletableFuture<U> applyToEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T,U>);
+    method public <U> java.util.concurrent.CompletableFuture<U> applyToEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T,U>, java.util.concurrent.Executor);
+    method public boolean cancel(boolean);
+    method public boolean complete(T);
+    method public boolean completeExceptionally(Throwable);
+    method public static <U> java.util.concurrent.CompletableFuture<U> completedFuture(U);
+    method public java.util.concurrent.CompletableFuture<T> exceptionally(java.util.function.Function<java.lang.Throwable,? extends T>);
+    method public T get() throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
+    method public T get(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
+    method public T getNow(T);
+    method public int getNumberOfDependents();
+    method public <U> java.util.concurrent.CompletableFuture<U> handle(java.util.function.BiFunction<? super T,java.lang.Throwable,? extends U>);
+    method public <U> java.util.concurrent.CompletableFuture<U> handleAsync(java.util.function.BiFunction<? super T,java.lang.Throwable,? extends U>);
+    method public <U> java.util.concurrent.CompletableFuture<U> handleAsync(java.util.function.BiFunction<? super T,java.lang.Throwable,? extends U>, java.util.concurrent.Executor);
+    method public boolean isCancelled();
+    method public boolean isCompletedExceptionally();
+    method public boolean isDone();
+    method public T join();
+    method public void obtrudeException(Throwable);
+    method public void obtrudeValue(T);
+    method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterBoth(java.util.concurrent.CompletionStage<?>, Runnable);
+    method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterBothAsync(java.util.concurrent.CompletionStage<?>, Runnable);
+    method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterBothAsync(java.util.concurrent.CompletionStage<?>, Runnable, java.util.concurrent.Executor);
+    method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterEither(java.util.concurrent.CompletionStage<?>, Runnable);
+    method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterEitherAsync(java.util.concurrent.CompletionStage<?>, Runnable);
+    method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterEitherAsync(java.util.concurrent.CompletionStage<?>, Runnable, java.util.concurrent.Executor);
+    method public static java.util.concurrent.CompletableFuture<java.lang.Void> runAsync(Runnable);
+    method public static java.util.concurrent.CompletableFuture<java.lang.Void> runAsync(Runnable, java.util.concurrent.Executor);
+    method public static <U> java.util.concurrent.CompletableFuture<U> supplyAsync(java.util.function.Supplier<U>);
+    method public static <U> java.util.concurrent.CompletableFuture<U> supplyAsync(java.util.function.Supplier<U>, java.util.concurrent.Executor);
+    method public java.util.concurrent.CompletableFuture<java.lang.Void> thenAccept(java.util.function.Consumer<? super T>);
+    method public java.util.concurrent.CompletableFuture<java.lang.Void> thenAcceptAsync(java.util.function.Consumer<? super T>);
+    method public java.util.concurrent.CompletableFuture<java.lang.Void> thenAcceptAsync(java.util.function.Consumer<? super T>, java.util.concurrent.Executor);
+    method public <U> java.util.concurrent.CompletableFuture<java.lang.Void> thenAcceptBoth(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T,? super U>);
+    method public <U> java.util.concurrent.CompletableFuture<java.lang.Void> thenAcceptBothAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T,? super U>);
+    method public <U> java.util.concurrent.CompletableFuture<java.lang.Void> thenAcceptBothAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T,? super U>, java.util.concurrent.Executor);
+    method public <U> java.util.concurrent.CompletableFuture<U> thenApply(java.util.function.Function<? super T,? extends U>);
+    method public <U> java.util.concurrent.CompletableFuture<U> thenApplyAsync(java.util.function.Function<? super T,? extends U>);
+    method public <U> java.util.concurrent.CompletableFuture<U> thenApplyAsync(java.util.function.Function<? super T,? extends U>, java.util.concurrent.Executor);
+    method public <U, V> java.util.concurrent.CompletableFuture<V> thenCombine(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T,? super U,? extends V>);
+    method public <U, V> java.util.concurrent.CompletableFuture<V> thenCombineAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T,? super U,? extends V>);
+    method public <U, V> java.util.concurrent.CompletableFuture<V> thenCombineAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T,? super U,? extends V>, java.util.concurrent.Executor);
+    method public <U> java.util.concurrent.CompletableFuture<U> thenCompose(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<U>>);
+    method public <U> java.util.concurrent.CompletableFuture<U> thenComposeAsync(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<U>>);
+    method public <U> java.util.concurrent.CompletableFuture<U> thenComposeAsync(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<U>>, java.util.concurrent.Executor);
+    method public java.util.concurrent.CompletableFuture<java.lang.Void> thenRun(Runnable);
+    method public java.util.concurrent.CompletableFuture<java.lang.Void> thenRunAsync(Runnable);
+    method public java.util.concurrent.CompletableFuture<java.lang.Void> thenRunAsync(Runnable, java.util.concurrent.Executor);
+    method public java.util.concurrent.CompletableFuture<T> toCompletableFuture();
+    method public java.util.concurrent.CompletableFuture<T> whenComplete(java.util.function.BiConsumer<? super T,? super java.lang.Throwable>);
+    method public java.util.concurrent.CompletableFuture<T> whenCompleteAsync(java.util.function.BiConsumer<? super T,? super java.lang.Throwable>);
+    method public java.util.concurrent.CompletableFuture<T> whenCompleteAsync(java.util.function.BiConsumer<? super T,? super java.lang.Throwable>, java.util.concurrent.Executor);
+  }
+
+  public static interface CompletableFuture.AsynchronousCompletionTask {
+  }
+
+  public class CompletionException extends java.lang.RuntimeException {
+    ctor protected CompletionException();
+    ctor protected CompletionException(String);
+    ctor public CompletionException(String, Throwable);
+    ctor public CompletionException(Throwable);
+  }
+
+  public interface CompletionService<V> {
+    method public java.util.concurrent.Future<V> poll();
+    method public java.util.concurrent.Future<V> poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public java.util.concurrent.Future<V> submit(java.util.concurrent.Callable<V>);
+    method public java.util.concurrent.Future<V> submit(Runnable, V);
+    method public java.util.concurrent.Future<V> take() throws java.lang.InterruptedException;
+  }
+
+  public interface CompletionStage<T> {
+    method public java.util.concurrent.CompletionStage<java.lang.Void> acceptEither(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>);
+    method public java.util.concurrent.CompletionStage<java.lang.Void> acceptEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>);
+    method public java.util.concurrent.CompletionStage<java.lang.Void> acceptEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>, java.util.concurrent.Executor);
+    method public <U> java.util.concurrent.CompletionStage<U> applyToEither(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T,U>);
+    method public <U> java.util.concurrent.CompletionStage<U> applyToEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T,U>);
+    method public <U> java.util.concurrent.CompletionStage<U> applyToEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T,U>, java.util.concurrent.Executor);
+    method public java.util.concurrent.CompletionStage<T> exceptionally(java.util.function.Function<java.lang.Throwable,? extends T>);
+    method public <U> java.util.concurrent.CompletionStage<U> handle(java.util.function.BiFunction<? super T,java.lang.Throwable,? extends U>);
+    method public <U> java.util.concurrent.CompletionStage<U> handleAsync(java.util.function.BiFunction<? super T,java.lang.Throwable,? extends U>);
+    method public <U> java.util.concurrent.CompletionStage<U> handleAsync(java.util.function.BiFunction<? super T,java.lang.Throwable,? extends U>, java.util.concurrent.Executor);
+    method public java.util.concurrent.CompletionStage<java.lang.Void> runAfterBoth(java.util.concurrent.CompletionStage<?>, Runnable);
+    method public java.util.concurrent.CompletionStage<java.lang.Void> runAfterBothAsync(java.util.concurrent.CompletionStage<?>, Runnable);
+    method public java.util.concurrent.CompletionStage<java.lang.Void> runAfterBothAsync(java.util.concurrent.CompletionStage<?>, Runnable, java.util.concurrent.Executor);
+    method public java.util.concurrent.CompletionStage<java.lang.Void> runAfterEither(java.util.concurrent.CompletionStage<?>, Runnable);
+    method public java.util.concurrent.CompletionStage<java.lang.Void> runAfterEitherAsync(java.util.concurrent.CompletionStage<?>, Runnable);
+    method public java.util.concurrent.CompletionStage<java.lang.Void> runAfterEitherAsync(java.util.concurrent.CompletionStage<?>, Runnable, java.util.concurrent.Executor);
+    method public java.util.concurrent.CompletionStage<java.lang.Void> thenAccept(java.util.function.Consumer<? super T>);
+    method public java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptAsync(java.util.function.Consumer<? super T>);
+    method public java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptAsync(java.util.function.Consumer<? super T>, java.util.concurrent.Executor);
+    method public <U> java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptBoth(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T,? super U>);
+    method public <U> java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptBothAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T,? super U>);
+    method public <U> java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptBothAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T,? super U>, java.util.concurrent.Executor);
+    method public <U> java.util.concurrent.CompletionStage<U> thenApply(java.util.function.Function<? super T,? extends U>);
+    method public <U> java.util.concurrent.CompletionStage<U> thenApplyAsync(java.util.function.Function<? super T,? extends U>);
+    method public <U> java.util.concurrent.CompletionStage<U> thenApplyAsync(java.util.function.Function<? super T,? extends U>, java.util.concurrent.Executor);
+    method public <U, V> java.util.concurrent.CompletionStage<V> thenCombine(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T,? super U,? extends V>);
+    method public <U, V> java.util.concurrent.CompletionStage<V> thenCombineAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T,? super U,? extends V>);
+    method public <U, V> java.util.concurrent.CompletionStage<V> thenCombineAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T,? super U,? extends V>, java.util.concurrent.Executor);
+    method public <U> java.util.concurrent.CompletionStage<U> thenCompose(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<U>>);
+    method public <U> java.util.concurrent.CompletionStage<U> thenComposeAsync(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<U>>);
+    method public <U> java.util.concurrent.CompletionStage<U> thenComposeAsync(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<U>>, java.util.concurrent.Executor);
+    method public java.util.concurrent.CompletionStage<java.lang.Void> thenRun(Runnable);
+    method public java.util.concurrent.CompletionStage<java.lang.Void> thenRunAsync(Runnable);
+    method public java.util.concurrent.CompletionStage<java.lang.Void> thenRunAsync(Runnable, java.util.concurrent.Executor);
+    method public java.util.concurrent.CompletableFuture<T> toCompletableFuture();
+    method public java.util.concurrent.CompletionStage<T> whenComplete(java.util.function.BiConsumer<? super T,? super java.lang.Throwable>);
+    method public java.util.concurrent.CompletionStage<T> whenCompleteAsync(java.util.function.BiConsumer<? super T,? super java.lang.Throwable>);
+    method public java.util.concurrent.CompletionStage<T> whenCompleteAsync(java.util.function.BiConsumer<? super T,? super java.lang.Throwable>, java.util.concurrent.Executor);
+  }
+
+  public class ConcurrentHashMap<K, V> extends java.util.AbstractMap<K,V> implements java.util.concurrent.ConcurrentMap<K,V> java.io.Serializable {
+    ctor public ConcurrentHashMap();
+    ctor public ConcurrentHashMap(int);
+    ctor public ConcurrentHashMap(@NonNull java.util.Map<? extends K,? extends V>);
+    ctor public ConcurrentHashMap(int, float);
+    ctor public ConcurrentHashMap(int, float, int);
+    method public boolean contains(@NonNull Object);
+    method @NonNull public java.util.Enumeration<V> elements();
+    method @NonNull public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
+    method public void forEach(long, @NonNull java.util.function.BiConsumer<? super K,? super V>);
+    method public <U> void forEach(long, @NonNull java.util.function.BiFunction<? super K,? super V,? extends U>, @NonNull java.util.function.Consumer<? super U>);
+    method public void forEachEntry(long, @NonNull java.util.function.Consumer<? super java.util.Map.Entry<K,V>>);
+    method public <U> void forEachEntry(long, @NonNull java.util.function.Function<java.util.Map.Entry<K,V>,? extends U>, @NonNull java.util.function.Consumer<? super U>);
+    method public void forEachKey(long, @NonNull java.util.function.Consumer<? super K>);
+    method public <U> void forEachKey(long, @NonNull java.util.function.Function<? super K,? extends U>, @NonNull java.util.function.Consumer<? super U>);
+    method public void forEachValue(long, @NonNull java.util.function.Consumer<? super V>);
+    method public <U> void forEachValue(long, @NonNull java.util.function.Function<? super V,? extends U>, @NonNull java.util.function.Consumer<? super U>);
+    method @NonNull public java.util.concurrent.ConcurrentHashMap.KeySetView<K,V> keySet(@NonNull V);
+    method @NonNull public java.util.Enumeration<K> keys();
+    method public long mappingCount();
+    method @NonNull public static <K> java.util.concurrent.ConcurrentHashMap.KeySetView<K,java.lang.Boolean> newKeySet();
+    method @NonNull public static <K> java.util.concurrent.ConcurrentHashMap.KeySetView<K,java.lang.Boolean> newKeySet(int);
+    method @Nullable public <U> U reduce(long, @NonNull java.util.function.BiFunction<? super K,? super V,? extends U>, @NonNull java.util.function.BiFunction<? super U,? super U,? extends U>);
+    method @Nullable public java.util.Map.Entry<K,V> reduceEntries(long, @NonNull java.util.function.BiFunction<java.util.Map.Entry<K,V>,java.util.Map.Entry<K,V>,? extends java.util.Map.Entry<K,V>>);
+    method @Nullable public <U> U reduceEntries(long, @NonNull java.util.function.Function<java.util.Map.Entry<K,V>,? extends U>, @NonNull java.util.function.BiFunction<? super U,? super U,? extends U>);
+    method public double reduceEntriesToDouble(long, @NonNull java.util.function.ToDoubleFunction<java.util.Map.Entry<K,V>>, double, @NonNull java.util.function.DoubleBinaryOperator);
+    method public int reduceEntriesToInt(long, @NonNull java.util.function.ToIntFunction<java.util.Map.Entry<K,V>>, int, @NonNull java.util.function.IntBinaryOperator);
+    method public long reduceEntriesToLong(long, @NonNull java.util.function.ToLongFunction<java.util.Map.Entry<K,V>>, long, @NonNull java.util.function.LongBinaryOperator);
+    method @Nullable public K reduceKeys(long, @NonNull java.util.function.BiFunction<? super K,? super K,? extends K>);
+    method @Nullable public <U> U reduceKeys(long, @NonNull java.util.function.Function<? super K,? extends U>, @NonNull java.util.function.BiFunction<? super U,? super U,? extends U>);
+    method public double reduceKeysToDouble(long, @NonNull java.util.function.ToDoubleFunction<? super K>, double, @NonNull java.util.function.DoubleBinaryOperator);
+    method public int reduceKeysToInt(long, @NonNull java.util.function.ToIntFunction<? super K>, int, @NonNull java.util.function.IntBinaryOperator);
+    method public long reduceKeysToLong(long, @NonNull java.util.function.ToLongFunction<? super K>, long, @NonNull java.util.function.LongBinaryOperator);
+    method public double reduceToDouble(long, @NonNull java.util.function.ToDoubleBiFunction<? super K,? super V>, double, @NonNull java.util.function.DoubleBinaryOperator);
+    method public int reduceToInt(long, @NonNull java.util.function.ToIntBiFunction<? super K,? super V>, int, @NonNull java.util.function.IntBinaryOperator);
+    method public long reduceToLong(long, @NonNull java.util.function.ToLongBiFunction<? super K,? super V>, long, @NonNull java.util.function.LongBinaryOperator);
+    method @Nullable public V reduceValues(long, @NonNull java.util.function.BiFunction<? super V,? super V,? extends V>);
+    method @Nullable public <U> U reduceValues(long, @NonNull java.util.function.Function<? super V,? extends U>, @NonNull java.util.function.BiFunction<? super U,? super U,? extends U>);
+    method public double reduceValuesToDouble(long, @NonNull java.util.function.ToDoubleFunction<? super V>, double, @NonNull java.util.function.DoubleBinaryOperator);
+    method public int reduceValuesToInt(long, @NonNull java.util.function.ToIntFunction<? super V>, int, @NonNull java.util.function.IntBinaryOperator);
+    method public long reduceValuesToLong(long, @NonNull java.util.function.ToLongFunction<? super V>, long, @NonNull java.util.function.LongBinaryOperator);
+    method @Nullable public <U> U search(long, @NonNull java.util.function.BiFunction<? super K,? super V,? extends U>);
+    method @Nullable public <U> U searchEntries(long, @NonNull java.util.function.Function<java.util.Map.Entry<K,V>,? extends U>);
+    method @Nullable public <U> U searchKeys(long, @NonNull java.util.function.Function<? super K,? extends U>);
+    method @Nullable public <U> U searchValues(long, @NonNull java.util.function.Function<? super V,? extends U>);
+  }
+
+  public static class ConcurrentHashMap.KeySetView<K, V> implements java.util.Collection<K> java.io.Serializable java.util.Set<K> {
+    method public boolean add(@NonNull K);
+    method public boolean addAll(@NonNull java.util.Collection<? extends K>);
+    method public final void clear();
+    method public boolean contains(@NonNull Object);
+    method public final boolean containsAll(@NonNull java.util.Collection<?>);
+    method public void forEach(@NonNull java.util.function.Consumer<? super K>);
+    method @NonNull public java.util.concurrent.ConcurrentHashMap<K,V> getMap();
+    method @Nullable public V getMappedValue();
+    method public final boolean isEmpty();
+    method @NonNull public java.util.Iterator<K> iterator();
+    method public boolean remove(@NonNull Object);
+    method public final boolean removeAll(@NonNull java.util.Collection<?>);
+    method public final boolean retainAll(@NonNull java.util.Collection<?>);
+    method public final int size();
+    method @NonNull public java.util.Spliterator<K> spliterator();
+    method @NonNull public final Object[] toArray();
+    method @NonNull public final <T> T[] toArray(@NonNull T[]);
+    method @NonNull public final String toString();
+  }
+
+  public class ConcurrentLinkedDeque<E> extends java.util.AbstractCollection<E> implements java.util.Deque<E> java.io.Serializable {
+    ctor public ConcurrentLinkedDeque();
+    ctor public ConcurrentLinkedDeque(java.util.Collection<? extends E>);
+    method public void addFirst(E);
+    method public void addLast(E);
+    method public java.util.Iterator<E> descendingIterator();
+    method public E element();
+    method public E getFirst();
+    method public E getLast();
+    method public java.util.Iterator<E> iterator();
+    method public boolean offer(E);
+    method public boolean offerFirst(E);
+    method public boolean offerLast(E);
+    method public E peek();
+    method public E peekFirst();
+    method public E peekLast();
+    method public E poll();
+    method public E pollFirst();
+    method public E pollLast();
+    method public E pop();
+    method public void push(E);
+    method public E remove();
+    method public E removeFirst();
+    method public boolean removeFirstOccurrence(Object);
+    method public E removeLast();
+    method public boolean removeLastOccurrence(Object);
+    method public int size();
+  }
+
+  public class ConcurrentLinkedQueue<E> extends java.util.AbstractQueue<E> implements java.util.Queue<E> java.io.Serializable {
+    ctor public ConcurrentLinkedQueue();
+    ctor public ConcurrentLinkedQueue(java.util.Collection<? extends E>);
+    method public java.util.Iterator<E> iterator();
+    method public boolean offer(E);
+    method public E peek();
+    method public E poll();
+    method public int size();
+  }
+
+  public interface ConcurrentMap<K, V> extends java.util.Map<K,V> {
+    method public V putIfAbsent(K, V);
+    method public boolean remove(Object, Object);
+    method public boolean replace(K, V, V);
+    method public V replace(K, V);
+  }
+
+  public interface ConcurrentNavigableMap<K, V> extends java.util.concurrent.ConcurrentMap<K,V> java.util.NavigableMap<K,V> {
+    method public java.util.concurrent.ConcurrentNavigableMap<K,V> descendingMap();
+    method public java.util.concurrent.ConcurrentNavigableMap<K,V> headMap(K, boolean);
+    method public java.util.concurrent.ConcurrentNavigableMap<K,V> headMap(K);
+    method public java.util.NavigableSet<K> keySet();
+    method public java.util.concurrent.ConcurrentNavigableMap<K,V> subMap(K, boolean, K, boolean);
+    method public java.util.concurrent.ConcurrentNavigableMap<K,V> subMap(K, K);
+    method public java.util.concurrent.ConcurrentNavigableMap<K,V> tailMap(K, boolean);
+    method public java.util.concurrent.ConcurrentNavigableMap<K,V> tailMap(K);
+  }
+
+  public class ConcurrentSkipListMap<K, V> extends java.util.AbstractMap<K,V> implements java.lang.Cloneable java.util.concurrent.ConcurrentNavigableMap<K,V> java.io.Serializable {
+    ctor public ConcurrentSkipListMap();
+    ctor public ConcurrentSkipListMap(java.util.Comparator<? super K>);
+    ctor public ConcurrentSkipListMap(java.util.Map<? extends K,? extends V>);
+    ctor public ConcurrentSkipListMap(java.util.SortedMap<K,? extends V>);
+    method public java.util.Map.Entry<K,V> ceilingEntry(K);
+    method public K ceilingKey(K);
+    method public java.util.concurrent.ConcurrentSkipListMap<K,V> clone();
+    method public java.util.Comparator<? super K> comparator();
+    method public java.util.NavigableSet<K> descendingKeySet();
+    method public java.util.concurrent.ConcurrentNavigableMap<K,V> descendingMap();
+    method public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
+    method public java.util.Map.Entry<K,V> firstEntry();
+    method public K firstKey();
+    method public java.util.Map.Entry<K,V> floorEntry(K);
+    method public K floorKey(K);
+    method public java.util.concurrent.ConcurrentNavigableMap<K,V> headMap(K, boolean);
+    method public java.util.concurrent.ConcurrentNavigableMap<K,V> headMap(K);
+    method public java.util.Map.Entry<K,V> higherEntry(K);
+    method public K higherKey(K);
+    method public java.util.NavigableSet<K> keySet();
+    method public java.util.Map.Entry<K,V> lastEntry();
+    method public K lastKey();
+    method public java.util.Map.Entry<K,V> lowerEntry(K);
+    method public K lowerKey(K);
+    method public java.util.NavigableSet<K> navigableKeySet();
+    method public java.util.Map.Entry<K,V> pollFirstEntry();
+    method public java.util.Map.Entry<K,V> pollLastEntry();
+    method public java.util.concurrent.ConcurrentNavigableMap<K,V> subMap(K, boolean, K, boolean);
+    method public java.util.concurrent.ConcurrentNavigableMap<K,V> subMap(K, K);
+    method public java.util.concurrent.ConcurrentNavigableMap<K,V> tailMap(K, boolean);
+    method public java.util.concurrent.ConcurrentNavigableMap<K,V> tailMap(K);
+  }
+
+  public class ConcurrentSkipListSet<E> extends java.util.AbstractSet<E> implements java.lang.Cloneable java.util.NavigableSet<E> java.io.Serializable {
+    ctor public ConcurrentSkipListSet();
+    ctor public ConcurrentSkipListSet(java.util.Comparator<? super E>);
+    ctor public ConcurrentSkipListSet(java.util.Collection<? extends E>);
+    ctor public ConcurrentSkipListSet(java.util.SortedSet<E>);
+    method public E ceiling(E);
+    method public java.util.concurrent.ConcurrentSkipListSet<E> clone();
+    method public java.util.Comparator<? super E> comparator();
+    method public java.util.Iterator<E> descendingIterator();
+    method public java.util.NavigableSet<E> descendingSet();
+    method public E first();
+    method public E floor(E);
+    method public java.util.NavigableSet<E> headSet(E, boolean);
+    method public java.util.NavigableSet<E> headSet(E);
+    method public E higher(E);
+    method public java.util.Iterator<E> iterator();
+    method public E last();
+    method public E lower(E);
+    method public E pollFirst();
+    method public E pollLast();
+    method public int size();
+    method public java.util.NavigableSet<E> subSet(E, boolean, E, boolean);
+    method public java.util.NavigableSet<E> subSet(E, E);
+    method public java.util.NavigableSet<E> tailSet(E, boolean);
+    method public java.util.NavigableSet<E> tailSet(E);
+  }
+
+  public class CopyOnWriteArrayList<E> implements java.lang.Cloneable java.util.List<E> java.util.RandomAccess java.io.Serializable {
+    ctor public CopyOnWriteArrayList();
+    ctor public CopyOnWriteArrayList(@NonNull java.util.Collection<? extends E>);
+    ctor public CopyOnWriteArrayList(@NonNull E[]);
+    method public boolean add(E);
+    method public void add(int, E);
+    method public boolean addAll(@NonNull java.util.Collection<? extends E>);
+    method public boolean addAll(int, @NonNull java.util.Collection<? extends E>);
+    method public int addAllAbsent(@NonNull java.util.Collection<? extends E>);
+    method public boolean addIfAbsent(E);
+    method public void clear();
+    method @NonNull public Object clone();
+    method public boolean contains(@Nullable Object);
+    method public boolean containsAll(@NonNull java.util.Collection<?>);
+    method public void forEach(@NonNull java.util.function.Consumer<? super E>);
+    method public E get(int);
+    method public int indexOf(@Nullable Object);
+    method public int indexOf(@Nullable E, int);
+    method public boolean isEmpty();
+    method @NonNull public java.util.Iterator<E> iterator();
+    method public int lastIndexOf(@Nullable Object);
+    method public int lastIndexOf(@Nullable E, int);
+    method @NonNull public java.util.ListIterator<E> listIterator();
+    method @NonNull public java.util.ListIterator<E> listIterator(int);
+    method public E remove(int);
+    method public boolean remove(@Nullable Object);
+    method public boolean removeAll(@NonNull java.util.Collection<?>);
+    method public boolean retainAll(@NonNull java.util.Collection<?>);
+    method public E set(int, E);
+    method public int size();
+    method @NonNull public java.util.List<E> subList(int, int);
+    method @NonNull public Object[] toArray();
+    method @NonNull public <T> T[] toArray(@NonNull T[]);
+  }
+
+  public class CopyOnWriteArraySet<E> extends java.util.AbstractSet<E> implements java.io.Serializable {
+    ctor public CopyOnWriteArraySet();
+    ctor public CopyOnWriteArraySet(java.util.Collection<? extends E>);
+    method public void forEach(java.util.function.Consumer<? super E>);
+    method public java.util.Iterator<E> iterator();
+    method public int size();
+  }
+
+  public class CountDownLatch {
+    ctor public CountDownLatch(int);
+    method public void await() throws java.lang.InterruptedException;
+    method public boolean await(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public void countDown();
+    method public long getCount();
+  }
+
+  public abstract class CountedCompleter<T> extends java.util.concurrent.ForkJoinTask<T> {
+    ctor protected CountedCompleter(java.util.concurrent.CountedCompleter<?>, int);
+    ctor protected CountedCompleter(java.util.concurrent.CountedCompleter<?>);
+    ctor protected CountedCompleter();
+    method public final void addToPendingCount(int);
+    method public final boolean compareAndSetPendingCount(int, int);
+    method public void complete(T);
+    method public abstract void compute();
+    method public final int decrementPendingCountUnlessZero();
+    method protected final boolean exec();
+    method public final java.util.concurrent.CountedCompleter<?> firstComplete();
+    method public final java.util.concurrent.CountedCompleter<?> getCompleter();
+    method public final int getPendingCount();
+    method public T getRawResult();
+    method public final java.util.concurrent.CountedCompleter<?> getRoot();
+    method public final void helpComplete(int);
+    method public final java.util.concurrent.CountedCompleter<?> nextComplete();
+    method public void onCompletion(java.util.concurrent.CountedCompleter<?>);
+    method public boolean onExceptionalCompletion(Throwable, java.util.concurrent.CountedCompleter<?>);
+    method public final void propagateCompletion();
+    method public final void quietlyCompleteRoot();
+    method public final void setPendingCount(int);
+    method protected void setRawResult(T);
+    method public final void tryComplete();
+  }
+
+  public class CyclicBarrier {
+    ctor public CyclicBarrier(int, Runnable);
+    ctor public CyclicBarrier(int);
+    method public int await() throws java.util.concurrent.BrokenBarrierException, java.lang.InterruptedException;
+    method public int await(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.BrokenBarrierException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
+    method public int getNumberWaiting();
+    method public int getParties();
+    method public boolean isBroken();
+    method public void reset();
+  }
+
+  public class DelayQueue<E extends java.util.concurrent.Delayed> extends java.util.AbstractQueue<E> implements java.util.concurrent.BlockingQueue<E> {
+    ctor public DelayQueue();
+    ctor public DelayQueue(java.util.Collection<? extends E>);
+    method public int drainTo(java.util.Collection<? super E>);
+    method public int drainTo(java.util.Collection<? super E>, int);
+    method public java.util.Iterator<E> iterator();
+    method public boolean offer(E);
+    method public boolean offer(E, long, java.util.concurrent.TimeUnit);
+    method public E peek();
+    method public E poll();
+    method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public void put(E);
+    method public int remainingCapacity();
+    method public int size();
+    method public E take() throws java.lang.InterruptedException;
+  }
+
+  public interface Delayed extends java.lang.Comparable<java.util.concurrent.Delayed> {
+    method public long getDelay(java.util.concurrent.TimeUnit);
+  }
+
+  public class Exchanger<V> {
+    ctor public Exchanger();
+    method public V exchange(V) throws java.lang.InterruptedException;
+    method public V exchange(V, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException, java.util.concurrent.TimeoutException;
+  }
+
+  public class ExecutionException extends java.lang.Exception {
+    ctor protected ExecutionException();
+    ctor protected ExecutionException(String);
+    ctor public ExecutionException(String, Throwable);
+    ctor public ExecutionException(Throwable);
+  }
+
+  public interface Executor {
+    method public void execute(Runnable);
+  }
+
+  public class ExecutorCompletionService<V> implements java.util.concurrent.CompletionService<V> {
+    ctor public ExecutorCompletionService(java.util.concurrent.Executor);
+    ctor public ExecutorCompletionService(java.util.concurrent.Executor, java.util.concurrent.BlockingQueue<java.util.concurrent.Future<V>>);
+    method public java.util.concurrent.Future<V> poll();
+    method public java.util.concurrent.Future<V> poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public java.util.concurrent.Future<V> submit(java.util.concurrent.Callable<V>);
+    method public java.util.concurrent.Future<V> submit(Runnable, V);
+    method public java.util.concurrent.Future<V> take() throws java.lang.InterruptedException;
+  }
+
+  public interface ExecutorService extends java.util.concurrent.Executor {
+    method public boolean awaitTermination(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>>) throws java.lang.InterruptedException;
+    method public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>>, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>>) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
+    method public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>>, long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
+    method public boolean isShutdown();
+    method public boolean isTerminated();
+    method public void shutdown();
+    method public java.util.List<java.lang.Runnable> shutdownNow();
+    method public <T> java.util.concurrent.Future<T> submit(java.util.concurrent.Callable<T>);
+    method public <T> java.util.concurrent.Future<T> submit(Runnable, T);
+    method public java.util.concurrent.Future<?> submit(Runnable);
+  }
+
+  public class Executors {
+    method public static <T> java.util.concurrent.Callable<T> callable(Runnable, T);
+    method public static java.util.concurrent.Callable<java.lang.Object> callable(Runnable);
+    method public static java.util.concurrent.Callable<java.lang.Object> callable(java.security.PrivilegedAction<?>);
+    method public static java.util.concurrent.Callable<java.lang.Object> callable(java.security.PrivilegedExceptionAction<?>);
+    method public static java.util.concurrent.ThreadFactory defaultThreadFactory();
+    method public static java.util.concurrent.ExecutorService newCachedThreadPool();
+    method public static java.util.concurrent.ExecutorService newCachedThreadPool(java.util.concurrent.ThreadFactory);
+    method public static java.util.concurrent.ExecutorService newFixedThreadPool(int);
+    method public static java.util.concurrent.ExecutorService newFixedThreadPool(int, java.util.concurrent.ThreadFactory);
+    method public static java.util.concurrent.ScheduledExecutorService newScheduledThreadPool(int);
+    method public static java.util.concurrent.ScheduledExecutorService newScheduledThreadPool(int, java.util.concurrent.ThreadFactory);
+    method public static java.util.concurrent.ExecutorService newSingleThreadExecutor();
+    method public static java.util.concurrent.ExecutorService newSingleThreadExecutor(java.util.concurrent.ThreadFactory);
+    method public static java.util.concurrent.ScheduledExecutorService newSingleThreadScheduledExecutor();
+    method public static java.util.concurrent.ScheduledExecutorService newSingleThreadScheduledExecutor(java.util.concurrent.ThreadFactory);
+    method public static java.util.concurrent.ExecutorService newWorkStealingPool(int);
+    method public static java.util.concurrent.ExecutorService newWorkStealingPool();
+    method public static <T> java.util.concurrent.Callable<T> privilegedCallable(java.util.concurrent.Callable<T>);
+    method public static <T> java.util.concurrent.Callable<T> privilegedCallableUsingCurrentClassLoader(java.util.concurrent.Callable<T>);
+    method public static java.util.concurrent.ThreadFactory privilegedThreadFactory();
+    method public static java.util.concurrent.ExecutorService unconfigurableExecutorService(java.util.concurrent.ExecutorService);
+    method public static java.util.concurrent.ScheduledExecutorService unconfigurableScheduledExecutorService(java.util.concurrent.ScheduledExecutorService);
+  }
+
+  public final class Flow {
+    method public static int defaultBufferSize();
+  }
+
+  public static interface Flow.Processor<T, R> extends java.util.concurrent.Flow.Subscriber<T> java.util.concurrent.Flow.Publisher<R> {
+  }
+
+  @java.lang.FunctionalInterface public static interface Flow.Publisher<T> {
+    method public void subscribe(java.util.concurrent.Flow.Subscriber<? super T>);
+  }
+
+  public static interface Flow.Subscriber<T> {
+    method public void onComplete();
+    method public void onError(Throwable);
+    method public void onNext(T);
+    method public void onSubscribe(java.util.concurrent.Flow.Subscription);
+  }
+
+  public static interface Flow.Subscription {
+    method public void cancel();
+    method public void request(long);
+  }
+
+  public class ForkJoinPool extends java.util.concurrent.AbstractExecutorService {
+    ctor public ForkJoinPool();
+    ctor public ForkJoinPool(int);
+    ctor public ForkJoinPool(int, java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory, java.lang.Thread.UncaughtExceptionHandler, boolean);
+    method public boolean awaitQuiescence(long, java.util.concurrent.TimeUnit);
+    method public boolean awaitTermination(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public static java.util.concurrent.ForkJoinPool commonPool();
+    method protected int drainTasksTo(java.util.Collection<? super java.util.concurrent.ForkJoinTask<?>>);
+    method public void execute(java.util.concurrent.ForkJoinTask<?>);
+    method public void execute(Runnable);
+    method public int getActiveThreadCount();
+    method public boolean getAsyncMode();
+    method public static int getCommonPoolParallelism();
+    method public java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory getFactory();
+    method public int getParallelism();
+    method public int getPoolSize();
+    method public int getQueuedSubmissionCount();
+    method public long getQueuedTaskCount();
+    method public int getRunningThreadCount();
+    method public long getStealCount();
+    method public java.lang.Thread.UncaughtExceptionHandler getUncaughtExceptionHandler();
+    method public boolean hasQueuedSubmissions();
+    method public <T> T invoke(java.util.concurrent.ForkJoinTask<T>);
+    method public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>>);
+    method public boolean isQuiescent();
+    method public boolean isShutdown();
+    method public boolean isTerminated();
+    method public boolean isTerminating();
+    method public static void managedBlock(java.util.concurrent.ForkJoinPool.ManagedBlocker) throws java.lang.InterruptedException;
+    method protected java.util.concurrent.ForkJoinTask<?> pollSubmission();
+    method public void shutdown();
+    method public java.util.List<java.lang.Runnable> shutdownNow();
+    method public <T> java.util.concurrent.ForkJoinTask<T> submit(java.util.concurrent.ForkJoinTask<T>);
+    method public <T> java.util.concurrent.ForkJoinTask<T> submit(java.util.concurrent.Callable<T>);
+    method public <T> java.util.concurrent.ForkJoinTask<T> submit(Runnable, T);
+    method public java.util.concurrent.ForkJoinTask<?> submit(Runnable);
+    field public static final java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory defaultForkJoinWorkerThreadFactory;
+  }
+
+  public static interface ForkJoinPool.ForkJoinWorkerThreadFactory {
+    method public java.util.concurrent.ForkJoinWorkerThread newThread(java.util.concurrent.ForkJoinPool);
+  }
+
+  public static interface ForkJoinPool.ManagedBlocker {
+    method public boolean block() throws java.lang.InterruptedException;
+    method public boolean isReleasable();
+  }
+
+  public abstract class ForkJoinTask<V> implements java.util.concurrent.Future<V> java.io.Serializable {
+    ctor public ForkJoinTask();
+    method public static java.util.concurrent.ForkJoinTask<?> adapt(Runnable);
+    method public static <T> java.util.concurrent.ForkJoinTask<T> adapt(Runnable, T);
+    method public static <T> java.util.concurrent.ForkJoinTask<T> adapt(java.util.concurrent.Callable<? extends T>);
+    method public boolean cancel(boolean);
+    method public final boolean compareAndSetForkJoinTaskTag(short, short);
+    method public void complete(V);
+    method public void completeExceptionally(Throwable);
+    method protected abstract boolean exec();
+    method public final java.util.concurrent.ForkJoinTask<V> fork();
+    method public final V get() throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
+    method public final V get(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
+    method public final Throwable getException();
+    method public final short getForkJoinTaskTag();
+    method public static java.util.concurrent.ForkJoinPool getPool();
+    method public static int getQueuedTaskCount();
+    method public abstract V getRawResult();
+    method public static int getSurplusQueuedTaskCount();
+    method public static void helpQuiesce();
+    method public static boolean inForkJoinPool();
+    method public final V invoke();
+    method public static void invokeAll(java.util.concurrent.ForkJoinTask<?>, java.util.concurrent.ForkJoinTask<?>);
+    method public static void invokeAll(java.util.concurrent.ForkJoinTask<?>...);
+    method public static <T extends java.util.concurrent.ForkJoinTask<?>> java.util.Collection<T> invokeAll(java.util.Collection<T>);
+    method public final boolean isCancelled();
+    method public final boolean isCompletedAbnormally();
+    method public final boolean isCompletedNormally();
+    method public final boolean isDone();
+    method public final V join();
+    method protected static java.util.concurrent.ForkJoinTask<?> peekNextLocalTask();
+    method protected static java.util.concurrent.ForkJoinTask<?> pollNextLocalTask();
+    method protected static java.util.concurrent.ForkJoinTask<?> pollTask();
+    method public final void quietlyComplete();
+    method public final void quietlyInvoke();
+    method public final void quietlyJoin();
+    method public void reinitialize();
+    method public final short setForkJoinTaskTag(short);
+    method protected abstract void setRawResult(V);
+    method public boolean tryUnfork();
+  }
+
+  public class ForkJoinWorkerThread extends java.lang.Thread {
+    ctor protected ForkJoinWorkerThread(java.util.concurrent.ForkJoinPool);
+    method public java.util.concurrent.ForkJoinPool getPool();
+    method public int getPoolIndex();
+    method protected void onStart();
+    method protected void onTermination(Throwable);
+  }
+
+  public interface Future<V> {
+    method public boolean cancel(boolean);
+    method public V get() throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
+    method public V get(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
+    method public boolean isCancelled();
+    method public boolean isDone();
+  }
+
+  public class FutureTask<V> implements java.util.concurrent.RunnableFuture<V> {
+    ctor public FutureTask(java.util.concurrent.Callable<V>);
+    ctor public FutureTask(Runnable, V);
+    method public boolean cancel(boolean);
+    method protected void done();
+    method public V get() throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
+    method public V get(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
+    method public boolean isCancelled();
+    method public boolean isDone();
+    method public void run();
+    method protected boolean runAndReset();
+    method protected void set(V);
+    method protected void setException(Throwable);
+  }
+
+  public class LinkedBlockingDeque<E> extends java.util.AbstractQueue<E> implements java.util.concurrent.BlockingDeque<E> java.io.Serializable {
+    ctor public LinkedBlockingDeque();
+    ctor public LinkedBlockingDeque(int);
+    ctor public LinkedBlockingDeque(java.util.Collection<? extends E>);
+    method public void addFirst(E);
+    method public void addLast(E);
+    method public java.util.Iterator<E> descendingIterator();
+    method public int drainTo(java.util.Collection<? super E>);
+    method public int drainTo(java.util.Collection<? super E>, int);
+    method public E getFirst();
+    method public E getLast();
+    method public java.util.Iterator<E> iterator();
+    method public boolean offer(E);
+    method public boolean offer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public boolean offerFirst(E);
+    method public boolean offerFirst(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public boolean offerLast(E);
+    method public boolean offerLast(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public E peek();
+    method public E peekFirst();
+    method public E peekLast();
+    method public E poll();
+    method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public E pollFirst();
+    method public E pollFirst(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public E pollLast();
+    method public E pollLast(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public E pop();
+    method public void push(E);
+    method public void put(E) throws java.lang.InterruptedException;
+    method public void putFirst(E) throws java.lang.InterruptedException;
+    method public void putLast(E) throws java.lang.InterruptedException;
+    method public int remainingCapacity();
+    method public E removeFirst();
+    method public boolean removeFirstOccurrence(Object);
+    method public E removeLast();
+    method public boolean removeLastOccurrence(Object);
+    method public int size();
+    method public E take() throws java.lang.InterruptedException;
+    method public E takeFirst() throws java.lang.InterruptedException;
+    method public E takeLast() throws java.lang.InterruptedException;
+  }
+
+  public class LinkedBlockingQueue<E> extends java.util.AbstractQueue<E> implements java.util.concurrent.BlockingQueue<E> java.io.Serializable {
+    ctor public LinkedBlockingQueue();
+    ctor public LinkedBlockingQueue(int);
+    ctor public LinkedBlockingQueue(java.util.Collection<? extends E>);
+    method public int drainTo(java.util.Collection<? super E>);
+    method public int drainTo(java.util.Collection<? super E>, int);
+    method public java.util.Iterator<E> iterator();
+    method public boolean offer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public boolean offer(E);
+    method public E peek();
+    method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public E poll();
+    method public void put(E) throws java.lang.InterruptedException;
+    method public int remainingCapacity();
+    method public int size();
+    method public E take() throws java.lang.InterruptedException;
+  }
+
+  public class LinkedTransferQueue<E> extends java.util.AbstractQueue<E> implements java.io.Serializable java.util.concurrent.TransferQueue<E> {
+    ctor public LinkedTransferQueue();
+    ctor public LinkedTransferQueue(java.util.Collection<? extends E>);
+    method public int drainTo(java.util.Collection<? super E>);
+    method public int drainTo(java.util.Collection<? super E>, int);
+    method public int getWaitingConsumerCount();
+    method public boolean hasWaitingConsumer();
+    method public java.util.Iterator<E> iterator();
+    method public boolean offer(E, long, java.util.concurrent.TimeUnit);
+    method public boolean offer(E);
+    method public E peek();
+    method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public E poll();
+    method public void put(E);
+    method public int remainingCapacity();
+    method public int size();
+    method public E take() throws java.lang.InterruptedException;
+    method public void transfer(E) throws java.lang.InterruptedException;
+    method public boolean tryTransfer(E);
+    method public boolean tryTransfer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+  }
+
+  public class Phaser {
+    ctor public Phaser();
+    ctor public Phaser(int);
+    ctor public Phaser(java.util.concurrent.Phaser);
+    ctor public Phaser(java.util.concurrent.Phaser, int);
+    method public int arrive();
+    method public int arriveAndAwaitAdvance();
+    method public int arriveAndDeregister();
+    method public int awaitAdvance(int);
+    method public int awaitAdvanceInterruptibly(int) throws java.lang.InterruptedException;
+    method public int awaitAdvanceInterruptibly(int, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException, java.util.concurrent.TimeoutException;
+    method public int bulkRegister(int);
+    method public void forceTermination();
+    method public int getArrivedParties();
+    method public java.util.concurrent.Phaser getParent();
+    method public final int getPhase();
+    method public int getRegisteredParties();
+    method public java.util.concurrent.Phaser getRoot();
+    method public int getUnarrivedParties();
+    method public boolean isTerminated();
+    method protected boolean onAdvance(int, int);
+    method public int register();
+  }
+
+  public class PriorityBlockingQueue<E> extends java.util.AbstractQueue<E> implements java.util.concurrent.BlockingQueue<E> java.io.Serializable {
+    ctor public PriorityBlockingQueue();
+    ctor public PriorityBlockingQueue(int);
+    ctor public PriorityBlockingQueue(int, java.util.Comparator<? super E>);
+    ctor public PriorityBlockingQueue(java.util.Collection<? extends E>);
+    method public java.util.Comparator<? super E> comparator();
+    method public int drainTo(java.util.Collection<? super E>);
+    method public int drainTo(java.util.Collection<? super E>, int);
+    method public java.util.Iterator<E> iterator();
+    method public boolean offer(E);
+    method public boolean offer(E, long, java.util.concurrent.TimeUnit);
+    method public E peek();
+    method public E poll();
+    method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public void put(E);
+    method public int remainingCapacity();
+    method public int size();
+    method public E take() throws java.lang.InterruptedException;
+  }
+
+  public abstract class RecursiveAction extends java.util.concurrent.ForkJoinTask<java.lang.Void> {
+    ctor public RecursiveAction();
+    method protected abstract void compute();
+    method protected final boolean exec();
+    method public final Void getRawResult();
+    method protected final void setRawResult(Void);
+  }
+
+  public abstract class RecursiveTask<V> extends java.util.concurrent.ForkJoinTask<V> {
+    ctor public RecursiveTask();
+    method protected abstract V compute();
+    method protected final boolean exec();
+    method public final V getRawResult();
+    method protected final void setRawResult(V);
+  }
+
+  public class RejectedExecutionException extends java.lang.RuntimeException {
+    ctor public RejectedExecutionException();
+    ctor public RejectedExecutionException(String);
+    ctor public RejectedExecutionException(String, Throwable);
+    ctor public RejectedExecutionException(Throwable);
+  }
+
+  public interface RejectedExecutionHandler {
+    method public void rejectedExecution(Runnable, java.util.concurrent.ThreadPoolExecutor);
+  }
+
+  public interface RunnableFuture<V> extends java.lang.Runnable java.util.concurrent.Future<V> {
+  }
+
+  public interface RunnableScheduledFuture<V> extends java.util.concurrent.RunnableFuture<V> java.util.concurrent.ScheduledFuture<V> {
+    method public boolean isPeriodic();
+  }
+
+  public interface ScheduledExecutorService extends java.util.concurrent.ExecutorService {
+    method public java.util.concurrent.ScheduledFuture<?> schedule(Runnable, long, java.util.concurrent.TimeUnit);
+    method public <V> java.util.concurrent.ScheduledFuture<V> schedule(java.util.concurrent.Callable<V>, long, java.util.concurrent.TimeUnit);
+    method public java.util.concurrent.ScheduledFuture<?> scheduleAtFixedRate(Runnable, long, long, java.util.concurrent.TimeUnit);
+    method public java.util.concurrent.ScheduledFuture<?> scheduleWithFixedDelay(Runnable, long, long, java.util.concurrent.TimeUnit);
+  }
+
+  public interface ScheduledFuture<V> extends java.util.concurrent.Delayed java.util.concurrent.Future<V> {
+  }
+
+  public class ScheduledThreadPoolExecutor extends java.util.concurrent.ThreadPoolExecutor implements java.util.concurrent.ScheduledExecutorService {
+    ctor public ScheduledThreadPoolExecutor(int);
+    ctor public ScheduledThreadPoolExecutor(int, java.util.concurrent.ThreadFactory);
+    ctor public ScheduledThreadPoolExecutor(int, java.util.concurrent.RejectedExecutionHandler);
+    ctor public ScheduledThreadPoolExecutor(int, java.util.concurrent.ThreadFactory, java.util.concurrent.RejectedExecutionHandler);
+    method protected <V> java.util.concurrent.RunnableScheduledFuture<V> decorateTask(Runnable, java.util.concurrent.RunnableScheduledFuture<V>);
+    method protected <V> java.util.concurrent.RunnableScheduledFuture<V> decorateTask(java.util.concurrent.Callable<V>, java.util.concurrent.RunnableScheduledFuture<V>);
+    method public boolean getContinueExistingPeriodicTasksAfterShutdownPolicy();
+    method public boolean getExecuteExistingDelayedTasksAfterShutdownPolicy();
+    method public boolean getRemoveOnCancelPolicy();
+    method public java.util.concurrent.ScheduledFuture<?> schedule(Runnable, long, java.util.concurrent.TimeUnit);
+    method public <V> java.util.concurrent.ScheduledFuture<V> schedule(java.util.concurrent.Callable<V>, long, java.util.concurrent.TimeUnit);
+    method public java.util.concurrent.ScheduledFuture<?> scheduleAtFixedRate(Runnable, long, long, java.util.concurrent.TimeUnit);
+    method public java.util.concurrent.ScheduledFuture<?> scheduleWithFixedDelay(Runnable, long, long, java.util.concurrent.TimeUnit);
+    method public void setContinueExistingPeriodicTasksAfterShutdownPolicy(boolean);
+    method public void setExecuteExistingDelayedTasksAfterShutdownPolicy(boolean);
+    method public void setRemoveOnCancelPolicy(boolean);
+  }
+
+  public class Semaphore implements java.io.Serializable {
+    ctor public Semaphore(int);
+    ctor public Semaphore(int, boolean);
+    method public void acquire() throws java.lang.InterruptedException;
+    method public void acquire(int) throws java.lang.InterruptedException;
+    method public void acquireUninterruptibly();
+    method public void acquireUninterruptibly(int);
+    method public int availablePermits();
+    method public int drainPermits();
+    method public final int getQueueLength();
+    method protected java.util.Collection<java.lang.Thread> getQueuedThreads();
+    method public final boolean hasQueuedThreads();
+    method public boolean isFair();
+    method protected void reducePermits(int);
+    method public void release();
+    method public void release(int);
+    method public boolean tryAcquire();
+    method public boolean tryAcquire(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public boolean tryAcquire(int);
+    method public boolean tryAcquire(int, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+  }
+
+  public class SynchronousQueue<E> extends java.util.AbstractQueue<E> implements java.util.concurrent.BlockingQueue<E> java.io.Serializable {
+    ctor public SynchronousQueue();
+    ctor public SynchronousQueue(boolean);
+    method public int drainTo(java.util.Collection<? super E>);
+    method public int drainTo(java.util.Collection<? super E>, int);
+    method public java.util.Iterator<E> iterator();
+    method public boolean offer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public boolean offer(E);
+    method public E peek();
+    method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public E poll();
+    method public void put(E) throws java.lang.InterruptedException;
+    method public int remainingCapacity();
+    method public int size();
+    method public E take() throws java.lang.InterruptedException;
+  }
+
+  public interface ThreadFactory {
+    method public Thread newThread(Runnable);
+  }
+
+  public class ThreadLocalRandom extends java.util.Random {
+    method public static java.util.concurrent.ThreadLocalRandom current();
+    method public double nextDouble(double);
+    method public double nextDouble(double, double);
+    method public int nextInt(int, int);
+    method public long nextLong(long);
+    method public long nextLong(long, long);
+  }
+
+  public class ThreadPoolExecutor extends java.util.concurrent.AbstractExecutorService {
+    ctor public ThreadPoolExecutor(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue<java.lang.Runnable>);
+    ctor public ThreadPoolExecutor(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue<java.lang.Runnable>, java.util.concurrent.ThreadFactory);
+    ctor public ThreadPoolExecutor(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue<java.lang.Runnable>, java.util.concurrent.RejectedExecutionHandler);
+    ctor public ThreadPoolExecutor(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue<java.lang.Runnable>, java.util.concurrent.ThreadFactory, java.util.concurrent.RejectedExecutionHandler);
+    method protected void afterExecute(Runnable, Throwable);
+    method public void allowCoreThreadTimeOut(boolean);
+    method public boolean allowsCoreThreadTimeOut();
+    method public boolean awaitTermination(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method protected void beforeExecute(Thread, Runnable);
+    method public void execute(Runnable);
+    method protected void finalize();
+    method public int getActiveCount();
+    method public long getCompletedTaskCount();
+    method public int getCorePoolSize();
+    method public long getKeepAliveTime(java.util.concurrent.TimeUnit);
+    method public int getLargestPoolSize();
+    method public int getMaximumPoolSize();
+    method public int getPoolSize();
+    method public java.util.concurrent.BlockingQueue<java.lang.Runnable> getQueue();
+    method public java.util.concurrent.RejectedExecutionHandler getRejectedExecutionHandler();
+    method public long getTaskCount();
+    method public java.util.concurrent.ThreadFactory getThreadFactory();
+    method public boolean isShutdown();
+    method public boolean isTerminated();
+    method public boolean isTerminating();
+    method public int prestartAllCoreThreads();
+    method public boolean prestartCoreThread();
+    method public void purge();
+    method public boolean remove(Runnable);
+    method public void setCorePoolSize(int);
+    method public void setKeepAliveTime(long, java.util.concurrent.TimeUnit);
+    method public void setMaximumPoolSize(int);
+    method public void setRejectedExecutionHandler(java.util.concurrent.RejectedExecutionHandler);
+    method public void setThreadFactory(java.util.concurrent.ThreadFactory);
+    method public void shutdown();
+    method public java.util.List<java.lang.Runnable> shutdownNow();
+    method protected void terminated();
+  }
+
+  public static class ThreadPoolExecutor.AbortPolicy implements java.util.concurrent.RejectedExecutionHandler {
+    ctor public ThreadPoolExecutor.AbortPolicy();
+    method public void rejectedExecution(Runnable, java.util.concurrent.ThreadPoolExecutor);
+  }
+
+  public static class ThreadPoolExecutor.CallerRunsPolicy implements java.util.concurrent.RejectedExecutionHandler {
+    ctor public ThreadPoolExecutor.CallerRunsPolicy();
+    method public void rejectedExecution(Runnable, java.util.concurrent.ThreadPoolExecutor);
+  }
+
+  public static class ThreadPoolExecutor.DiscardOldestPolicy implements java.util.concurrent.RejectedExecutionHandler {
+    ctor public ThreadPoolExecutor.DiscardOldestPolicy();
+    method public void rejectedExecution(Runnable, java.util.concurrent.ThreadPoolExecutor);
+  }
+
+  public static class ThreadPoolExecutor.DiscardPolicy implements java.util.concurrent.RejectedExecutionHandler {
+    ctor public ThreadPoolExecutor.DiscardPolicy();
+    method public void rejectedExecution(Runnable, java.util.concurrent.ThreadPoolExecutor);
+  }
+
+  public enum TimeUnit {
+    method public long convert(long, java.util.concurrent.TimeUnit);
+    method public void sleep(long) throws java.lang.InterruptedException;
+    method public void timedJoin(Thread, long) throws java.lang.InterruptedException;
+    method public void timedWait(Object, long) throws java.lang.InterruptedException;
+    method public long toDays(long);
+    method public long toHours(long);
+    method public long toMicros(long);
+    method public long toMillis(long);
+    method public long toMinutes(long);
+    method public long toNanos(long);
+    method public long toSeconds(long);
+    enum_constant public static final java.util.concurrent.TimeUnit DAYS;
+    enum_constant public static final java.util.concurrent.TimeUnit HOURS;
+    enum_constant public static final java.util.concurrent.TimeUnit MICROSECONDS;
+    enum_constant public static final java.util.concurrent.TimeUnit MILLISECONDS;
+    enum_constant public static final java.util.concurrent.TimeUnit MINUTES;
+    enum_constant public static final java.util.concurrent.TimeUnit NANOSECONDS;
+    enum_constant public static final java.util.concurrent.TimeUnit SECONDS;
+  }
+
+  public class TimeoutException extends java.lang.Exception {
+    ctor public TimeoutException();
+    ctor public TimeoutException(String);
+  }
+
+  public interface TransferQueue<E> extends java.util.concurrent.BlockingQueue<E> {
+    method public int getWaitingConsumerCount();
+    method public boolean hasWaitingConsumer();
+    method public void transfer(E) throws java.lang.InterruptedException;
+    method public boolean tryTransfer(E);
+    method public boolean tryTransfer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+  }
+
+}
+
+package java.util.concurrent.atomic {
+
+  public class AtomicBoolean implements java.io.Serializable {
+    ctor public AtomicBoolean(boolean);
+    ctor public AtomicBoolean();
+    method public final boolean compareAndSet(boolean, boolean);
+    method public final boolean get();
+    method public final boolean getAndSet(boolean);
+    method public final void lazySet(boolean);
+    method public final void set(boolean);
+    method public boolean weakCompareAndSet(boolean, boolean);
+  }
+
+  public class AtomicInteger extends java.lang.Number implements java.io.Serializable {
+    ctor public AtomicInteger(int);
+    ctor public AtomicInteger();
+    method public final int accumulateAndGet(int, java.util.function.IntBinaryOperator);
+    method public final int addAndGet(int);
+    method public final boolean compareAndSet(int, int);
+    method public final int decrementAndGet();
+    method public double doubleValue();
+    method public float floatValue();
+    method public final int get();
+    method public final int getAndAccumulate(int, java.util.function.IntBinaryOperator);
+    method public final int getAndAdd(int);
+    method public final int getAndDecrement();
+    method public final int getAndIncrement();
+    method public final int getAndSet(int);
+    method public final int getAndUpdate(java.util.function.IntUnaryOperator);
+    method public final int incrementAndGet();
+    method public int intValue();
+    method public final void lazySet(int);
+    method public long longValue();
+    method public final void set(int);
+    method public final int updateAndGet(java.util.function.IntUnaryOperator);
+    method public final boolean weakCompareAndSet(int, int);
+  }
+
+  public class AtomicIntegerArray implements java.io.Serializable {
+    ctor public AtomicIntegerArray(int);
+    ctor public AtomicIntegerArray(int[]);
+    method public final int accumulateAndGet(int, int, java.util.function.IntBinaryOperator);
+    method public final int addAndGet(int, int);
+    method public final boolean compareAndSet(int, int, int);
+    method public final int decrementAndGet(int);
+    method public final int get(int);
+    method public final int getAndAccumulate(int, int, java.util.function.IntBinaryOperator);
+    method public final int getAndAdd(int, int);
+    method public final int getAndDecrement(int);
+    method public final int getAndIncrement(int);
+    method public final int getAndSet(int, int);
+    method public final int getAndUpdate(int, java.util.function.IntUnaryOperator);
+    method public final int incrementAndGet(int);
+    method public final void lazySet(int, int);
+    method public final int length();
+    method public final void set(int, int);
+    method public final int updateAndGet(int, java.util.function.IntUnaryOperator);
+    method public final boolean weakCompareAndSet(int, int, int);
+  }
+
+  public abstract class AtomicIntegerFieldUpdater<T> {
+    ctor protected AtomicIntegerFieldUpdater();
+    method public final int accumulateAndGet(T, int, java.util.function.IntBinaryOperator);
+    method public int addAndGet(T, int);
+    method public abstract boolean compareAndSet(T, int, int);
+    method public int decrementAndGet(T);
+    method public abstract int get(T);
+    method public final int getAndAccumulate(T, int, java.util.function.IntBinaryOperator);
+    method public int getAndAdd(T, int);
+    method public int getAndDecrement(T);
+    method public int getAndIncrement(T);
+    method public int getAndSet(T, int);
+    method public final int getAndUpdate(T, java.util.function.IntUnaryOperator);
+    method public int incrementAndGet(T);
+    method public abstract void lazySet(T, int);
+    method public static <U> java.util.concurrent.atomic.AtomicIntegerFieldUpdater<U> newUpdater(Class<U>, String);
+    method public abstract void set(T, int);
+    method public final int updateAndGet(T, java.util.function.IntUnaryOperator);
+    method public abstract boolean weakCompareAndSet(T, int, int);
+  }
+
+  public class AtomicLong extends java.lang.Number implements java.io.Serializable {
+    ctor public AtomicLong(long);
+    ctor public AtomicLong();
+    method public final long accumulateAndGet(long, java.util.function.LongBinaryOperator);
+    method public final long addAndGet(long);
+    method public final boolean compareAndSet(long, long);
+    method public final long decrementAndGet();
+    method public double doubleValue();
+    method public float floatValue();
+    method public final long get();
+    method public final long getAndAccumulate(long, java.util.function.LongBinaryOperator);
+    method public final long getAndAdd(long);
+    method public final long getAndDecrement();
+    method public final long getAndIncrement();
+    method public final long getAndSet(long);
+    method public final long getAndUpdate(java.util.function.LongUnaryOperator);
+    method public final long incrementAndGet();
+    method public int intValue();
+    method public final void lazySet(long);
+    method public long longValue();
+    method public final void set(long);
+    method public final long updateAndGet(java.util.function.LongUnaryOperator);
+    method public final boolean weakCompareAndSet(long, long);
+  }
+
+  public class AtomicLongArray implements java.io.Serializable {
+    ctor public AtomicLongArray(int);
+    ctor public AtomicLongArray(long[]);
+    method public final long accumulateAndGet(int, long, java.util.function.LongBinaryOperator);
+    method public long addAndGet(int, long);
+    method public final boolean compareAndSet(int, long, long);
+    method public final long decrementAndGet(int);
+    method public final long get(int);
+    method public final long getAndAccumulate(int, long, java.util.function.LongBinaryOperator);
+    method public final long getAndAdd(int, long);
+    method public final long getAndDecrement(int);
+    method public final long getAndIncrement(int);
+    method public final long getAndSet(int, long);
+    method public final long getAndUpdate(int, java.util.function.LongUnaryOperator);
+    method public final long incrementAndGet(int);
+    method public final void lazySet(int, long);
+    method public final int length();
+    method public final void set(int, long);
+    method public final long updateAndGet(int, java.util.function.LongUnaryOperator);
+    method public final boolean weakCompareAndSet(int, long, long);
+  }
+
+  public abstract class AtomicLongFieldUpdater<T> {
+    ctor protected AtomicLongFieldUpdater();
+    method public final long accumulateAndGet(T, long, java.util.function.LongBinaryOperator);
+    method public long addAndGet(T, long);
+    method public abstract boolean compareAndSet(T, long, long);
+    method public long decrementAndGet(T);
+    method public abstract long get(T);
+    method public final long getAndAccumulate(T, long, java.util.function.LongBinaryOperator);
+    method public long getAndAdd(T, long);
+    method public long getAndDecrement(T);
+    method public long getAndIncrement(T);
+    method public long getAndSet(T, long);
+    method public final long getAndUpdate(T, java.util.function.LongUnaryOperator);
+    method public long incrementAndGet(T);
+    method public abstract void lazySet(T, long);
+    method public static <U> java.util.concurrent.atomic.AtomicLongFieldUpdater<U> newUpdater(Class<U>, String);
+    method public abstract void set(T, long);
+    method public final long updateAndGet(T, java.util.function.LongUnaryOperator);
+    method public abstract boolean weakCompareAndSet(T, long, long);
+  }
+
+  public class AtomicMarkableReference<V> {
+    ctor public AtomicMarkableReference(V, boolean);
+    method public boolean attemptMark(V, boolean);
+    method public boolean compareAndSet(V, V, boolean, boolean);
+    method public V get(boolean[]);
+    method public V getReference();
+    method public boolean isMarked();
+    method public void set(V, boolean);
+    method public boolean weakCompareAndSet(V, V, boolean, boolean);
+  }
+
+  public class AtomicReference<V> implements java.io.Serializable {
+    ctor public AtomicReference(V);
+    ctor public AtomicReference();
+    method public final V accumulateAndGet(V, java.util.function.BinaryOperator<V>);
+    method public final boolean compareAndSet(V, V);
+    method public final V get();
+    method public final V getAndAccumulate(V, java.util.function.BinaryOperator<V>);
+    method public final V getAndSet(V);
+    method public final V getAndUpdate(java.util.function.UnaryOperator<V>);
+    method public final void lazySet(V);
+    method public final void set(V);
+    method public final V updateAndGet(java.util.function.UnaryOperator<V>);
+    method public final boolean weakCompareAndSet(V, V);
+  }
+
+  public class AtomicReferenceArray<E> implements java.io.Serializable {
+    ctor public AtomicReferenceArray(int);
+    ctor public AtomicReferenceArray(E[]);
+    method public final E accumulateAndGet(int, E, java.util.function.BinaryOperator<E>);
+    method public final boolean compareAndSet(int, E, E);
+    method public final E get(int);
+    method public final E getAndAccumulate(int, E, java.util.function.BinaryOperator<E>);
+    method public final E getAndSet(int, E);
+    method public final E getAndUpdate(int, java.util.function.UnaryOperator<E>);
+    method public final void lazySet(int, E);
+    method public final int length();
+    method public final void set(int, E);
+    method public final E updateAndGet(int, java.util.function.UnaryOperator<E>);
+    method public final boolean weakCompareAndSet(int, E, E);
+  }
+
+  public abstract class AtomicReferenceFieldUpdater<T, V> {
+    ctor protected AtomicReferenceFieldUpdater();
+    method public final V accumulateAndGet(T, V, java.util.function.BinaryOperator<V>);
+    method public abstract boolean compareAndSet(T, V, V);
+    method public abstract V get(T);
+    method public final V getAndAccumulate(T, V, java.util.function.BinaryOperator<V>);
+    method public V getAndSet(T, V);
+    method public final V getAndUpdate(T, java.util.function.UnaryOperator<V>);
+    method public abstract void lazySet(T, V);
+    method public static <U, W> java.util.concurrent.atomic.AtomicReferenceFieldUpdater<U,W> newUpdater(Class<U>, Class<W>, String);
+    method public abstract void set(T, V);
+    method public final V updateAndGet(T, java.util.function.UnaryOperator<V>);
+    method public abstract boolean weakCompareAndSet(T, V, V);
+  }
+
+  public class AtomicStampedReference<V> {
+    ctor public AtomicStampedReference(V, int);
+    method public boolean attemptStamp(V, int);
+    method public boolean compareAndSet(V, V, int, int);
+    method public V get(int[]);
+    method public V getReference();
+    method public int getStamp();
+    method public void set(V, int);
+    method public boolean weakCompareAndSet(V, V, int, int);
+  }
+
+  public class DoubleAccumulator extends java.lang.Number implements java.io.Serializable {
+    ctor public DoubleAccumulator(java.util.function.DoubleBinaryOperator, double);
+    method public void accumulate(double);
+    method public double doubleValue();
+    method public float floatValue();
+    method public double get();
+    method public double getThenReset();
+    method public int intValue();
+    method public long longValue();
+    method public void reset();
+  }
+
+  public class DoubleAdder extends java.lang.Number implements java.io.Serializable {
+    ctor public DoubleAdder();
+    method public void add(double);
+    method public double doubleValue();
+    method public float floatValue();
+    method public int intValue();
+    method public long longValue();
+    method public void reset();
+    method public double sum();
+    method public double sumThenReset();
+  }
+
+  public class LongAccumulator extends java.lang.Number implements java.io.Serializable {
+    ctor public LongAccumulator(java.util.function.LongBinaryOperator, long);
+    method public void accumulate(long);
+    method public double doubleValue();
+    method public float floatValue();
+    method public long get();
+    method public long getThenReset();
+    method public int intValue();
+    method public long longValue();
+    method public void reset();
+  }
+
+  public class LongAdder extends java.lang.Number implements java.io.Serializable {
+    ctor public LongAdder();
+    method public void add(long);
+    method public void decrement();
+    method public double doubleValue();
+    method public float floatValue();
+    method public void increment();
+    method public int intValue();
+    method public long longValue();
+    method public void reset();
+    method public long sum();
+    method public long sumThenReset();
+  }
+
+}
+
+package java.util.concurrent.locks {
+
+  public abstract class AbstractOwnableSynchronizer implements java.io.Serializable {
+    ctor protected AbstractOwnableSynchronizer();
+    method protected final Thread getExclusiveOwnerThread();
+    method protected final void setExclusiveOwnerThread(Thread);
+  }
+
+  public abstract class AbstractQueuedLongSynchronizer extends java.util.concurrent.locks.AbstractOwnableSynchronizer implements java.io.Serializable {
+    ctor protected AbstractQueuedLongSynchronizer();
+    method public final void acquire(long);
+    method public final void acquireInterruptibly(long) throws java.lang.InterruptedException;
+    method public final void acquireShared(long);
+    method public final void acquireSharedInterruptibly(long) throws java.lang.InterruptedException;
+    method protected final boolean compareAndSetState(long, long);
+    method public final java.util.Collection<java.lang.Thread> getExclusiveQueuedThreads();
+    method public final Thread getFirstQueuedThread();
+    method public final int getQueueLength();
+    method public final java.util.Collection<java.lang.Thread> getQueuedThreads();
+    method public final java.util.Collection<java.lang.Thread> getSharedQueuedThreads();
+    method protected final long getState();
+    method public final int getWaitQueueLength(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.ConditionObject);
+    method public final java.util.Collection<java.lang.Thread> getWaitingThreads(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.ConditionObject);
+    method public final boolean hasContended();
+    method public final boolean hasQueuedPredecessors();
+    method public final boolean hasQueuedThreads();
+    method public final boolean hasWaiters(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.ConditionObject);
+    method protected boolean isHeldExclusively();
+    method public final boolean isQueued(Thread);
+    method public final boolean owns(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.ConditionObject);
+    method public final boolean release(long);
+    method public final boolean releaseShared(long);
+    method protected final void setState(long);
+    method protected boolean tryAcquire(long);
+    method public final boolean tryAcquireNanos(long, long) throws java.lang.InterruptedException;
+    method protected long tryAcquireShared(long);
+    method public final boolean tryAcquireSharedNanos(long, long) throws java.lang.InterruptedException;
+    method protected boolean tryRelease(long);
+    method protected boolean tryReleaseShared(long);
+  }
+
+  public class AbstractQueuedLongSynchronizer.ConditionObject implements java.util.concurrent.locks.Condition java.io.Serializable {
+    ctor public AbstractQueuedLongSynchronizer.ConditionObject();
+    method public final void await() throws java.lang.InterruptedException;
+    method public final boolean await(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public final long awaitNanos(long) throws java.lang.InterruptedException;
+    method public final void awaitUninterruptibly();
+    method public final boolean awaitUntil(java.util.Date) throws java.lang.InterruptedException;
+    method protected final int getWaitQueueLength();
+    method protected final java.util.Collection<java.lang.Thread> getWaitingThreads();
+    method protected final boolean hasWaiters();
+    method public final void signal();
+    method public final void signalAll();
+  }
+
+  public abstract class AbstractQueuedSynchronizer extends java.util.concurrent.locks.AbstractOwnableSynchronizer implements java.io.Serializable {
+    ctor protected AbstractQueuedSynchronizer();
+    method public final void acquire(int);
+    method public final void acquireInterruptibly(int) throws java.lang.InterruptedException;
+    method public final void acquireShared(int);
+    method public final void acquireSharedInterruptibly(int) throws java.lang.InterruptedException;
+    method protected final boolean compareAndSetState(int, int);
+    method public final java.util.Collection<java.lang.Thread> getExclusiveQueuedThreads();
+    method public final Thread getFirstQueuedThread();
+    method public final int getQueueLength();
+    method public final java.util.Collection<java.lang.Thread> getQueuedThreads();
+    method public final java.util.Collection<java.lang.Thread> getSharedQueuedThreads();
+    method protected final int getState();
+    method public final int getWaitQueueLength(java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject);
+    method public final java.util.Collection<java.lang.Thread> getWaitingThreads(java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject);
+    method public final boolean hasContended();
+    method public final boolean hasQueuedPredecessors();
+    method public final boolean hasQueuedThreads();
+    method public final boolean hasWaiters(java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject);
+    method protected boolean isHeldExclusively();
+    method public final boolean isQueued(Thread);
+    method public final boolean owns(java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject);
+    method public final boolean release(int);
+    method public final boolean releaseShared(int);
+    method protected final void setState(int);
+    method protected boolean tryAcquire(int);
+    method public final boolean tryAcquireNanos(int, long) throws java.lang.InterruptedException;
+    method protected int tryAcquireShared(int);
+    method public final boolean tryAcquireSharedNanos(int, long) throws java.lang.InterruptedException;
+    method protected boolean tryRelease(int);
+    method protected boolean tryReleaseShared(int);
+  }
+
+  public class AbstractQueuedSynchronizer.ConditionObject implements java.util.concurrent.locks.Condition java.io.Serializable {
+    ctor public AbstractQueuedSynchronizer.ConditionObject();
+    method public final void await() throws java.lang.InterruptedException;
+    method public final boolean await(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public final long awaitNanos(long) throws java.lang.InterruptedException;
+    method public final void awaitUninterruptibly();
+    method public final boolean awaitUntil(java.util.Date) throws java.lang.InterruptedException;
+    method protected final int getWaitQueueLength();
+    method protected final java.util.Collection<java.lang.Thread> getWaitingThreads();
+    method protected final boolean hasWaiters();
+    method public final void signal();
+    method public final void signalAll();
+  }
+
+  public interface Condition {
+    method public void await() throws java.lang.InterruptedException;
+    method public boolean await(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public long awaitNanos(long) throws java.lang.InterruptedException;
+    method public void awaitUninterruptibly();
+    method public boolean awaitUntil(java.util.Date) throws java.lang.InterruptedException;
+    method public void signal();
+    method public void signalAll();
+  }
+
+  public interface Lock {
+    method public void lock();
+    method public void lockInterruptibly() throws java.lang.InterruptedException;
+    method public java.util.concurrent.locks.Condition newCondition();
+    method public boolean tryLock();
+    method public boolean tryLock(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public void unlock();
+  }
+
+  public class LockSupport {
+    method public static Object getBlocker(Thread);
+    method public static void park(Object);
+    method public static void park();
+    method public static void parkNanos(Object, long);
+    method public static void parkNanos(long);
+    method public static void parkUntil(Object, long);
+    method public static void parkUntil(long);
+    method public static void unpark(Thread);
+  }
+
+  public interface ReadWriteLock {
+    method public java.util.concurrent.locks.Lock readLock();
+    method public java.util.concurrent.locks.Lock writeLock();
+  }
+
+  public class ReentrantLock implements java.util.concurrent.locks.Lock java.io.Serializable {
+    ctor public ReentrantLock();
+    ctor public ReentrantLock(boolean);
+    method public int getHoldCount();
+    method protected Thread getOwner();
+    method public final int getQueueLength();
+    method protected java.util.Collection<java.lang.Thread> getQueuedThreads();
+    method public int getWaitQueueLength(java.util.concurrent.locks.Condition);
+    method protected java.util.Collection<java.lang.Thread> getWaitingThreads(java.util.concurrent.locks.Condition);
+    method public final boolean hasQueuedThread(Thread);
+    method public final boolean hasQueuedThreads();
+    method public boolean hasWaiters(java.util.concurrent.locks.Condition);
+    method public final boolean isFair();
+    method public boolean isHeldByCurrentThread();
+    method public boolean isLocked();
+    method public void lock();
+    method public void lockInterruptibly() throws java.lang.InterruptedException;
+    method public java.util.concurrent.locks.Condition newCondition();
+    method public boolean tryLock();
+    method public boolean tryLock(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public void unlock();
+  }
+
+  public class ReentrantReadWriteLock implements java.util.concurrent.locks.ReadWriteLock java.io.Serializable {
+    ctor public ReentrantReadWriteLock();
+    ctor public ReentrantReadWriteLock(boolean);
+    method protected Thread getOwner();
+    method public final int getQueueLength();
+    method protected java.util.Collection<java.lang.Thread> getQueuedReaderThreads();
+    method protected java.util.Collection<java.lang.Thread> getQueuedThreads();
+    method protected java.util.Collection<java.lang.Thread> getQueuedWriterThreads();
+    method public int getReadHoldCount();
+    method public int getReadLockCount();
+    method public int getWaitQueueLength(java.util.concurrent.locks.Condition);
+    method protected java.util.Collection<java.lang.Thread> getWaitingThreads(java.util.concurrent.locks.Condition);
+    method public int getWriteHoldCount();
+    method public final boolean hasQueuedThread(Thread);
+    method public final boolean hasQueuedThreads();
+    method public boolean hasWaiters(java.util.concurrent.locks.Condition);
+    method public final boolean isFair();
+    method public boolean isWriteLocked();
+    method public boolean isWriteLockedByCurrentThread();
+    method public java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock readLock();
+    method public java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock writeLock();
+  }
+
+  public static class ReentrantReadWriteLock.ReadLock implements java.util.concurrent.locks.Lock java.io.Serializable {
+    ctor protected ReentrantReadWriteLock.ReadLock(java.util.concurrent.locks.ReentrantReadWriteLock);
+    method public void lock();
+    method public void lockInterruptibly() throws java.lang.InterruptedException;
+    method public java.util.concurrent.locks.Condition newCondition();
+    method public boolean tryLock();
+    method public boolean tryLock(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public void unlock();
+  }
+
+  public static class ReentrantReadWriteLock.WriteLock implements java.util.concurrent.locks.Lock java.io.Serializable {
+    ctor protected ReentrantReadWriteLock.WriteLock(java.util.concurrent.locks.ReentrantReadWriteLock);
+    method public int getHoldCount();
+    method public boolean isHeldByCurrentThread();
+    method public void lock();
+    method public void lockInterruptibly() throws java.lang.InterruptedException;
+    method public java.util.concurrent.locks.Condition newCondition();
+    method public boolean tryLock();
+    method public boolean tryLock(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public void unlock();
+  }
+
+  public class StampedLock implements java.io.Serializable {
+    ctor public StampedLock();
+    method public java.util.concurrent.locks.Lock asReadLock();
+    method public java.util.concurrent.locks.ReadWriteLock asReadWriteLock();
+    method public java.util.concurrent.locks.Lock asWriteLock();
+    method public int getReadLockCount();
+    method public boolean isReadLocked();
+    method public boolean isWriteLocked();
+    method public long readLock();
+    method public long readLockInterruptibly() throws java.lang.InterruptedException;
+    method public long tryConvertToOptimisticRead(long);
+    method public long tryConvertToReadLock(long);
+    method public long tryConvertToWriteLock(long);
+    method public long tryOptimisticRead();
+    method public long tryReadLock();
+    method public long tryReadLock(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public boolean tryUnlockRead();
+    method public boolean tryUnlockWrite();
+    method public long tryWriteLock();
+    method public long tryWriteLock(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
+    method public void unlock(long);
+    method public void unlockRead(long);
+    method public void unlockWrite(long);
+    method public boolean validate(long);
+    method public long writeLock();
+    method public long writeLockInterruptibly() throws java.lang.InterruptedException;
+  }
+
+}
+
+package java.util.function {
+
+  @java.lang.FunctionalInterface public interface BiConsumer<T, U> {
+    method public void accept(T, U);
+    method public default java.util.function.BiConsumer<T,U> andThen(java.util.function.BiConsumer<? super T,? super U>);
+  }
+
+  @java.lang.FunctionalInterface public interface BiFunction<T, U, R> {
+    method public default <V> java.util.function.BiFunction<T,U,V> andThen(java.util.function.Function<? super R,? extends V>);
+    method public R apply(T, U);
+  }
+
+  @java.lang.FunctionalInterface public interface BiPredicate<T, U> {
+    method public default java.util.function.BiPredicate<T,U> and(java.util.function.BiPredicate<? super T,? super U>);
+    method public default java.util.function.BiPredicate<T,U> negate();
+    method public default java.util.function.BiPredicate<T,U> or(java.util.function.BiPredicate<? super T,? super U>);
+    method public boolean test(T, U);
+  }
+
+  @java.lang.FunctionalInterface public interface BinaryOperator<T> extends java.util.function.BiFunction<T,T,T> {
+    method public static <T> java.util.function.BinaryOperator<T> maxBy(java.util.Comparator<? super T>);
+    method public static <T> java.util.function.BinaryOperator<T> minBy(java.util.Comparator<? super T>);
+  }
+
+  @java.lang.FunctionalInterface public interface BooleanSupplier {
+    method public boolean getAsBoolean();
+  }
+
+  @java.lang.FunctionalInterface public interface Consumer<T> {
+    method public void accept(T);
+    method public default java.util.function.Consumer<T> andThen(java.util.function.Consumer<? super T>);
+  }
+
+  @java.lang.FunctionalInterface public interface DoubleBinaryOperator {
+    method public double applyAsDouble(double, double);
+  }
+
+  @java.lang.FunctionalInterface public interface DoubleConsumer {
+    method public void accept(double);
+    method public default java.util.function.DoubleConsumer andThen(java.util.function.DoubleConsumer);
+  }
+
+  @java.lang.FunctionalInterface public interface DoubleFunction<R> {
+    method public R apply(double);
+  }
+
+  @java.lang.FunctionalInterface public interface DoublePredicate {
+    method public default java.util.function.DoublePredicate and(java.util.function.DoublePredicate);
+    method public default java.util.function.DoublePredicate negate();
+    method public default java.util.function.DoublePredicate or(java.util.function.DoublePredicate);
+    method public boolean test(double);
+  }
+
+  @java.lang.FunctionalInterface public interface DoubleSupplier {
+    method public double getAsDouble();
+  }
+
+  @java.lang.FunctionalInterface public interface DoubleToIntFunction {
+    method public int applyAsInt(double);
+  }
+
+  @java.lang.FunctionalInterface public interface DoubleToLongFunction {
+    method public long applyAsLong(double);
+  }
+
+  @java.lang.FunctionalInterface public interface DoubleUnaryOperator {
+    method public default java.util.function.DoubleUnaryOperator andThen(java.util.function.DoubleUnaryOperator);
+    method public double applyAsDouble(double);
+    method public default java.util.function.DoubleUnaryOperator compose(java.util.function.DoubleUnaryOperator);
+    method public static java.util.function.DoubleUnaryOperator identity();
+  }
+
+  @java.lang.FunctionalInterface public interface Function<T, R> {
+    method public default <V> java.util.function.Function<T,V> andThen(java.util.function.Function<? super R,? extends V>);
+    method public R apply(T);
+    method public default <V> java.util.function.Function<V,R> compose(java.util.function.Function<? super V,? extends T>);
+    method public static <T> java.util.function.Function<T,T> identity();
+  }
+
+  @java.lang.FunctionalInterface public interface IntBinaryOperator {
+    method public int applyAsInt(int, int);
+  }
+
+  @java.lang.FunctionalInterface public interface IntConsumer {
+    method public void accept(int);
+    method public default java.util.function.IntConsumer andThen(java.util.function.IntConsumer);
+  }
+
+  @java.lang.FunctionalInterface public interface IntFunction<R> {
+    method public R apply(int);
+  }
+
+  @java.lang.FunctionalInterface public interface IntPredicate {
+    method public default java.util.function.IntPredicate and(java.util.function.IntPredicate);
+    method public default java.util.function.IntPredicate negate();
+    method public default java.util.function.IntPredicate or(java.util.function.IntPredicate);
+    method public boolean test(int);
+  }
+
+  @java.lang.FunctionalInterface public interface IntSupplier {
+    method public int getAsInt();
+  }
+
+  @java.lang.FunctionalInterface public interface IntToDoubleFunction {
+    method public double applyAsDouble(int);
+  }
+
+  @java.lang.FunctionalInterface public interface IntToLongFunction {
+    method public long applyAsLong(int);
+  }
+
+  @java.lang.FunctionalInterface public interface IntUnaryOperator {
+    method public default java.util.function.IntUnaryOperator andThen(java.util.function.IntUnaryOperator);
+    method public int applyAsInt(int);
+    method public default java.util.function.IntUnaryOperator compose(java.util.function.IntUnaryOperator);
+    method public static java.util.function.IntUnaryOperator identity();
+  }
+
+  @java.lang.FunctionalInterface public interface LongBinaryOperator {
+    method public long applyAsLong(long, long);
+  }
+
+  @java.lang.FunctionalInterface public interface LongConsumer {
+    method public void accept(long);
+    method public default java.util.function.LongConsumer andThen(java.util.function.LongConsumer);
+  }
+
+  @java.lang.FunctionalInterface public interface LongFunction<R> {
+    method public R apply(long);
+  }
+
+  @java.lang.FunctionalInterface public interface LongPredicate {
+    method public default java.util.function.LongPredicate and(java.util.function.LongPredicate);
+    method public default java.util.function.LongPredicate negate();
+    method public default java.util.function.LongPredicate or(java.util.function.LongPredicate);
+    method public boolean test(long);
+  }
+
+  @java.lang.FunctionalInterface public interface LongSupplier {
+    method public long getAsLong();
+  }
+
+  @java.lang.FunctionalInterface public interface LongToDoubleFunction {
+    method public double applyAsDouble(long);
+  }
+
+  @java.lang.FunctionalInterface public interface LongToIntFunction {
+    method public int applyAsInt(long);
+  }
+
+  @java.lang.FunctionalInterface public interface LongUnaryOperator {
+    method public default java.util.function.LongUnaryOperator andThen(java.util.function.LongUnaryOperator);
+    method public long applyAsLong(long);
+    method public default java.util.function.LongUnaryOperator compose(java.util.function.LongUnaryOperator);
+    method public static java.util.function.LongUnaryOperator identity();
+  }
+
+  @java.lang.FunctionalInterface public interface ObjDoubleConsumer<T> {
+    method public void accept(T, double);
+  }
+
+  @java.lang.FunctionalInterface public interface ObjIntConsumer<T> {
+    method public void accept(T, int);
+  }
+
+  @java.lang.FunctionalInterface public interface ObjLongConsumer<T> {
+    method public void accept(T, long);
+  }
+
+  @java.lang.FunctionalInterface public interface Predicate<T> {
+    method public default java.util.function.Predicate<T> and(java.util.function.Predicate<? super T>);
+    method public static <T> java.util.function.Predicate<T> isEqual(Object);
+    method public default java.util.function.Predicate<T> negate();
+    method public default java.util.function.Predicate<T> or(java.util.function.Predicate<? super T>);
+    method public boolean test(T);
+  }
+
+  @java.lang.FunctionalInterface public interface Supplier<T> {
+    method public T get();
+  }
+
+  @java.lang.FunctionalInterface public interface ToDoubleBiFunction<T, U> {
+    method public double applyAsDouble(T, U);
+  }
+
+  @java.lang.FunctionalInterface public interface ToDoubleFunction<T> {
+    method public double applyAsDouble(T);
+  }
+
+  @java.lang.FunctionalInterface public interface ToIntBiFunction<T, U> {
+    method public int applyAsInt(T, U);
+  }
+
+  @java.lang.FunctionalInterface public interface ToIntFunction<T> {
+    method public int applyAsInt(T);
+  }
+
+  @java.lang.FunctionalInterface public interface ToLongBiFunction<T, U> {
+    method public long applyAsLong(T, U);
+  }
+
+  @java.lang.FunctionalInterface public interface ToLongFunction<T> {
+    method public long applyAsLong(T);
+  }
+
+  @java.lang.FunctionalInterface public interface UnaryOperator<T> extends java.util.function.Function<T,T> {
+    method public static <T> java.util.function.UnaryOperator<T> identity();
+  }
+
+}
+
+package java.util.jar {
+
+  public class Attributes implements java.lang.Cloneable java.util.Map<java.lang.Object,java.lang.Object> {
+    ctor public Attributes();
+    ctor public Attributes(int);
+    ctor public Attributes(java.util.jar.Attributes);
+    method public void clear();
+    method public Object clone();
+    method public boolean containsKey(Object);
+    method public boolean containsValue(Object);
+    method public java.util.Set<java.util.Map.Entry<java.lang.Object,java.lang.Object>> entrySet();
+    method public Object get(Object);
+    method public String getValue(String);
+    method public String getValue(java.util.jar.Attributes.Name);
+    method public boolean isEmpty();
+    method public java.util.Set<java.lang.Object> keySet();
+    method public Object put(Object, Object);
+    method public void putAll(java.util.Map<?,?>);
+    method public String putValue(String, String);
+    method public Object remove(Object);
+    method public int size();
+    method public java.util.Collection<java.lang.Object> values();
+    field protected java.util.Map<java.lang.Object,java.lang.Object> map;
+  }
+
+  public static class Attributes.Name {
+    ctor public Attributes.Name(String);
+    field public static final java.util.jar.Attributes.Name CLASS_PATH;
+    field public static final java.util.jar.Attributes.Name CONTENT_TYPE;
+    field @Deprecated public static final java.util.jar.Attributes.Name EXTENSION_INSTALLATION;
+    field public static final java.util.jar.Attributes.Name EXTENSION_LIST;
+    field public static final java.util.jar.Attributes.Name EXTENSION_NAME;
+    field public static final java.util.jar.Attributes.Name IMPLEMENTATION_TITLE;
+    field @Deprecated public static final java.util.jar.Attributes.Name IMPLEMENTATION_URL;
+    field public static final java.util.jar.Attributes.Name IMPLEMENTATION_VENDOR;
+    field @Deprecated public static final java.util.jar.Attributes.Name IMPLEMENTATION_VENDOR_ID;
+    field public static final java.util.jar.Attributes.Name IMPLEMENTATION_VERSION;
+    field public static final java.util.jar.Attributes.Name MAIN_CLASS;
+    field public static final java.util.jar.Attributes.Name MANIFEST_VERSION;
+    field public static final java.util.jar.Attributes.Name SEALED;
+    field public static final java.util.jar.Attributes.Name SIGNATURE_VERSION;
+    field public static final java.util.jar.Attributes.Name SPECIFICATION_TITLE;
+    field public static final java.util.jar.Attributes.Name SPECIFICATION_VENDOR;
+    field public static final java.util.jar.Attributes.Name SPECIFICATION_VERSION;
+  }
+
+  public class JarEntry extends java.util.zip.ZipEntry {
+    ctor public JarEntry(String);
+    ctor public JarEntry(java.util.zip.ZipEntry);
+    ctor public JarEntry(java.util.jar.JarEntry);
+    method public java.util.jar.Attributes getAttributes() throws java.io.IOException;
+    method public java.security.cert.Certificate[] getCertificates();
+    method public java.security.CodeSigner[] getCodeSigners();
+    field public static final int CENATT = 36; // 0x24
+    field public static final int CENATX = 38; // 0x26
+    field public static final int CENCOM = 32; // 0x20
+    field public static final int CENCRC = 16; // 0x10
+    field public static final int CENDSK = 34; // 0x22
+    field public static final int CENEXT = 30; // 0x1e
+    field public static final int CENFLG = 8; // 0x8
+    field public static final int CENHDR = 46; // 0x2e
+    field public static final int CENHOW = 10; // 0xa
+    field public static final int CENLEN = 24; // 0x18
+    field public static final int CENNAM = 28; // 0x1c
+    field public static final int CENOFF = 42; // 0x2a
+    field public static final long CENSIG = 33639248L; // 0x2014b50L
+    field public static final int CENSIZ = 20; // 0x14
+    field public static final int CENTIM = 12; // 0xc
+    field public static final int CENVEM = 4; // 0x4
+    field public static final int CENVER = 6; // 0x6
+    field public static final int ENDCOM = 20; // 0x14
+    field public static final int ENDHDR = 22; // 0x16
+    field public static final int ENDOFF = 16; // 0x10
+    field public static final long ENDSIG = 101010256L; // 0x6054b50L
+    field public static final int ENDSIZ = 12; // 0xc
+    field public static final int ENDSUB = 8; // 0x8
+    field public static final int ENDTOT = 10; // 0xa
+    field public static final int EXTCRC = 4; // 0x4
+    field public static final int EXTHDR = 16; // 0x10
+    field public static final int EXTLEN = 12; // 0xc
+    field public static final long EXTSIG = 134695760L; // 0x8074b50L
+    field public static final int EXTSIZ = 8; // 0x8
+    field public static final int LOCCRC = 14; // 0xe
+    field public static final int LOCEXT = 28; // 0x1c
+    field public static final int LOCFLG = 6; // 0x6
+    field public static final int LOCHDR = 30; // 0x1e
+    field public static final int LOCHOW = 8; // 0x8
+    field public static final int LOCLEN = 22; // 0x16
+    field public static final int LOCNAM = 26; // 0x1a
+    field public static final long LOCSIG = 67324752L; // 0x4034b50L
+    field public static final int LOCSIZ = 18; // 0x12
+    field public static final int LOCTIM = 10; // 0xa
+    field public static final int LOCVER = 4; // 0x4
+  }
+
+  public class JarException extends java.util.zip.ZipException {
+    ctor public JarException();
+    ctor public JarException(String);
+  }
+
+  public class JarFile extends java.util.zip.ZipFile {
+    ctor public JarFile(String) throws java.io.IOException;
+    ctor public JarFile(String, boolean) throws java.io.IOException;
+    ctor public JarFile(java.io.File) throws java.io.IOException;
+    ctor public JarFile(java.io.File, boolean) throws java.io.IOException;
+    ctor public JarFile(java.io.File, boolean, int) throws java.io.IOException;
+    method public java.util.Enumeration<java.util.jar.JarEntry> entries();
+    method public java.util.jar.JarEntry getJarEntry(String);
+    method public java.util.jar.Manifest getManifest() throws java.io.IOException;
+    method public java.util.stream.Stream<java.util.jar.JarEntry> stream();
+    field public static final int CENATT = 36; // 0x24
+    field public static final int CENATX = 38; // 0x26
+    field public static final int CENCOM = 32; // 0x20
+    field public static final int CENCRC = 16; // 0x10
+    field public static final int CENDSK = 34; // 0x22
+    field public static final int CENEXT = 30; // 0x1e
+    field public static final int CENFLG = 8; // 0x8
+    field public static final int CENHDR = 46; // 0x2e
+    field public static final int CENHOW = 10; // 0xa
+    field public static final int CENLEN = 24; // 0x18
+    field public static final int CENNAM = 28; // 0x1c
+    field public static final int CENOFF = 42; // 0x2a
+    field public static final long CENSIG = 33639248L; // 0x2014b50L
+    field public static final int CENSIZ = 20; // 0x14
+    field public static final int CENTIM = 12; // 0xc
+    field public static final int CENVEM = 4; // 0x4
+    field public static final int CENVER = 6; // 0x6
+    field public static final int ENDCOM = 20; // 0x14
+    field public static final int ENDHDR = 22; // 0x16
+    field public static final int ENDOFF = 16; // 0x10
+    field public static final long ENDSIG = 101010256L; // 0x6054b50L
+    field public static final int ENDSIZ = 12; // 0xc
+    field public static final int ENDSUB = 8; // 0x8
+    field public static final int ENDTOT = 10; // 0xa
+    field public static final int EXTCRC = 4; // 0x4
+    field public static final int EXTHDR = 16; // 0x10
+    field public static final int EXTLEN = 12; // 0xc
+    field public static final long EXTSIG = 134695760L; // 0x8074b50L
+    field public static final int EXTSIZ = 8; // 0x8
+    field public static final int LOCCRC = 14; // 0xe
+    field public static final int LOCEXT = 28; // 0x1c
+    field public static final int LOCFLG = 6; // 0x6
+    field public static final int LOCHDR = 30; // 0x1e
+    field public static final int LOCHOW = 8; // 0x8
+    field public static final int LOCLEN = 22; // 0x16
+    field public static final int LOCNAM = 26; // 0x1a
+    field public static final long LOCSIG = 67324752L; // 0x4034b50L
+    field public static final int LOCSIZ = 18; // 0x12
+    field public static final int LOCTIM = 10; // 0xa
+    field public static final int LOCVER = 4; // 0x4
+    field public static final String MANIFEST_NAME = "META-INF/MANIFEST.MF";
+  }
+
+  public class JarInputStream extends java.util.zip.ZipInputStream {
+    ctor public JarInputStream(java.io.InputStream) throws java.io.IOException;
+    ctor public JarInputStream(java.io.InputStream, boolean) throws java.io.IOException;
+    method public java.util.jar.Manifest getManifest();
+    method public java.util.jar.JarEntry getNextJarEntry() throws java.io.IOException;
+    field public static final int CENATT = 36; // 0x24
+    field public static final int CENATX = 38; // 0x26
+    field public static final int CENCOM = 32; // 0x20
+    field public static final int CENCRC = 16; // 0x10
+    field public static final int CENDSK = 34; // 0x22
+    field public static final int CENEXT = 30; // 0x1e
+    field public static final int CENFLG = 8; // 0x8
+    field public static final int CENHDR = 46; // 0x2e
+    field public static final int CENHOW = 10; // 0xa
+    field public static final int CENLEN = 24; // 0x18
+    field public static final int CENNAM = 28; // 0x1c
+    field public static final int CENOFF = 42; // 0x2a
+    field public static final long CENSIG = 33639248L; // 0x2014b50L
+    field public static final int CENSIZ = 20; // 0x14
+    field public static final int CENTIM = 12; // 0xc
+    field public static final int CENVEM = 4; // 0x4
+    field public static final int CENVER = 6; // 0x6
+    field public static final int ENDCOM = 20; // 0x14
+    field public static final int ENDHDR = 22; // 0x16
+    field public static final int ENDOFF = 16; // 0x10
+    field public static final long ENDSIG = 101010256L; // 0x6054b50L
+    field public static final int ENDSIZ = 12; // 0xc
+    field public static final int ENDSUB = 8; // 0x8
+    field public static final int ENDTOT = 10; // 0xa
+    field public static final int EXTCRC = 4; // 0x4
+    field public static final int EXTHDR = 16; // 0x10
+    field public static final int EXTLEN = 12; // 0xc
+    field public static final long EXTSIG = 134695760L; // 0x8074b50L
+    field public static final int EXTSIZ = 8; // 0x8
+    field public static final int LOCCRC = 14; // 0xe
+    field public static final int LOCEXT = 28; // 0x1c
+    field public static final int LOCFLG = 6; // 0x6
+    field public static final int LOCHDR = 30; // 0x1e
+    field public static final int LOCHOW = 8; // 0x8
+    field public static final int LOCLEN = 22; // 0x16
+    field public static final int LOCNAM = 26; // 0x1a
+    field public static final long LOCSIG = 67324752L; // 0x4034b50L
+    field public static final int LOCSIZ = 18; // 0x12
+    field public static final int LOCTIM = 10; // 0xa
+    field public static final int LOCVER = 4; // 0x4
+  }
+
+  public class JarOutputStream extends java.util.zip.ZipOutputStream {
+    ctor public JarOutputStream(java.io.OutputStream, java.util.jar.Manifest) throws java.io.IOException;
+    ctor public JarOutputStream(java.io.OutputStream) throws java.io.IOException;
+    field public static final int CENATT = 36; // 0x24
+    field public static final int CENATX = 38; // 0x26
+    field public static final int CENCOM = 32; // 0x20
+    field public static final int CENCRC = 16; // 0x10
+    field public static final int CENDSK = 34; // 0x22
+    field public static final int CENEXT = 30; // 0x1e
+    field public static final int CENFLG = 8; // 0x8
+    field public static final int CENHDR = 46; // 0x2e
+    field public static final int CENHOW = 10; // 0xa
+    field public static final int CENLEN = 24; // 0x18
+    field public static final int CENNAM = 28; // 0x1c
+    field public static final int CENOFF = 42; // 0x2a
+    field public static final long CENSIG = 33639248L; // 0x2014b50L
+    field public static final int CENSIZ = 20; // 0x14
+    field public static final int CENTIM = 12; // 0xc
+    field public static final int CENVEM = 4; // 0x4
+    field public static final int CENVER = 6; // 0x6
+    field public static final int ENDCOM = 20; // 0x14
+    field public static final int ENDHDR = 22; // 0x16
+    field public static final int ENDOFF = 16; // 0x10
+    field public static final long ENDSIG = 101010256L; // 0x6054b50L
+    field public static final int ENDSIZ = 12; // 0xc
+    field public static final int ENDSUB = 8; // 0x8
+    field public static final int ENDTOT = 10; // 0xa
+    field public static final int EXTCRC = 4; // 0x4
+    field public static final int EXTHDR = 16; // 0x10
+    field public static final int EXTLEN = 12; // 0xc
+    field public static final long EXTSIG = 134695760L; // 0x8074b50L
+    field public static final int EXTSIZ = 8; // 0x8
+    field public static final int LOCCRC = 14; // 0xe
+    field public static final int LOCEXT = 28; // 0x1c
+    field public static final int LOCFLG = 6; // 0x6
+    field public static final int LOCHDR = 30; // 0x1e
+    field public static final int LOCHOW = 8; // 0x8
+    field public static final int LOCLEN = 22; // 0x16
+    field public static final int LOCNAM = 26; // 0x1a
+    field public static final long LOCSIG = 67324752L; // 0x4034b50L
+    field public static final int LOCSIZ = 18; // 0x12
+    field public static final int LOCTIM = 10; // 0xa
+    field public static final int LOCVER = 4; // 0x4
+  }
+
+  public class Manifest implements java.lang.Cloneable {
+    ctor public Manifest();
+    ctor public Manifest(java.io.InputStream) throws java.io.IOException;
+    ctor public Manifest(java.util.jar.Manifest);
+    method public void clear();
+    method public Object clone();
+    method public java.util.jar.Attributes getAttributes(String);
+    method public java.util.Map<java.lang.String,java.util.jar.Attributes> getEntries();
+    method public java.util.jar.Attributes getMainAttributes();
+    method public void read(java.io.InputStream) throws java.io.IOException;
+    method public void write(java.io.OutputStream) throws java.io.IOException;
+  }
+
+  public abstract class Pack200 {
+    method public static java.util.jar.Pack200.Packer newPacker();
+    method public static java.util.jar.Pack200.Unpacker newUnpacker();
+  }
+
+  public static interface Pack200.Packer {
+    method @Deprecated public default void addPropertyChangeListener(java.beans.PropertyChangeListener);
+    method public void pack(java.util.jar.JarFile, java.io.OutputStream) throws java.io.IOException;
+    method public void pack(java.util.jar.JarInputStream, java.io.OutputStream) throws java.io.IOException;
+    method public java.util.SortedMap<java.lang.String,java.lang.String> properties();
+    method @Deprecated public default void removePropertyChangeListener(java.beans.PropertyChangeListener);
+    field public static final String CLASS_ATTRIBUTE_PFX = "pack.class.attribute.";
+    field public static final String CODE_ATTRIBUTE_PFX = "pack.code.attribute.";
+    field public static final String DEFLATE_HINT = "pack.deflate.hint";
+    field public static final String EFFORT = "pack.effort";
+    field public static final String ERROR = "error";
+    field public static final String FALSE = "false";
+    field public static final String FIELD_ATTRIBUTE_PFX = "pack.field.attribute.";
+    field public static final String KEEP = "keep";
+    field public static final String KEEP_FILE_ORDER = "pack.keep.file.order";
+    field public static final String LATEST = "latest";
+    field public static final String METHOD_ATTRIBUTE_PFX = "pack.method.attribute.";
+    field public static final String MODIFICATION_TIME = "pack.modification.time";
+    field public static final String PASS = "pass";
+    field public static final String PASS_FILE_PFX = "pack.pass.file.";
+    field public static final String PROGRESS = "pack.progress";
+    field public static final String SEGMENT_LIMIT = "pack.segment.limit";
+    field public static final String STRIP = "strip";
+    field public static final String TRUE = "true";
+    field public static final String UNKNOWN_ATTRIBUTE = "pack.unknown.attribute";
+  }
+
+  public static interface Pack200.Unpacker {
+    method @Deprecated public default void addPropertyChangeListener(java.beans.PropertyChangeListener);
+    method public java.util.SortedMap<java.lang.String,java.lang.String> properties();
+    method @Deprecated public default void removePropertyChangeListener(java.beans.PropertyChangeListener);
+    method public void unpack(java.io.InputStream, java.util.jar.JarOutputStream) throws java.io.IOException;
+    method public void unpack(java.io.File, java.util.jar.JarOutputStream) throws java.io.IOException;
+    field public static final String DEFLATE_HINT = "unpack.deflate.hint";
+    field public static final String FALSE = "false";
+    field public static final String KEEP = "keep";
+    field public static final String PROGRESS = "unpack.progress";
+    field public static final String TRUE = "true";
+  }
+
+}
+
+package java.util.logging {
+
+  public class ConsoleHandler extends java.util.logging.StreamHandler {
+    ctor public ConsoleHandler();
+    method public void close();
+  }
+
+  public class ErrorManager {
+    ctor public ErrorManager();
+    method public void error(String, Exception, int);
+    field public static final int CLOSE_FAILURE = 3; // 0x3
+    field public static final int FLUSH_FAILURE = 2; // 0x2
+    field public static final int FORMAT_FAILURE = 5; // 0x5
+    field public static final int GENERIC_FAILURE = 0; // 0x0
+    field public static final int OPEN_FAILURE = 4; // 0x4
+    field public static final int WRITE_FAILURE = 1; // 0x1
+  }
+
+  public class FileHandler extends java.util.logging.StreamHandler {
+    ctor public FileHandler() throws java.io.IOException, java.lang.SecurityException;
+    ctor public FileHandler(String) throws java.io.IOException, java.lang.SecurityException;
+    ctor public FileHandler(String, boolean) throws java.io.IOException, java.lang.SecurityException;
+    ctor public FileHandler(String, int, int) throws java.io.IOException, java.lang.SecurityException;
+    ctor public FileHandler(String, int, int, boolean) throws java.io.IOException, java.lang.SecurityException;
+  }
+
+  @java.lang.FunctionalInterface public interface Filter {
+    method public boolean isLoggable(java.util.logging.LogRecord);
+  }
+
+  public abstract class Formatter {
+    ctor protected Formatter();
+    method public abstract String format(java.util.logging.LogRecord);
+    method public String formatMessage(java.util.logging.LogRecord);
+    method public String getHead(java.util.logging.Handler);
+    method public String getTail(java.util.logging.Handler);
+  }
+
+  public abstract class Handler {
+    ctor protected Handler();
+    method public abstract void close() throws java.lang.SecurityException;
+    method public abstract void flush();
+    method public String getEncoding();
+    method public java.util.logging.ErrorManager getErrorManager();
+    method public java.util.logging.Filter getFilter();
+    method public java.util.logging.Formatter getFormatter();
+    method public java.util.logging.Level getLevel();
+    method public boolean isLoggable(java.util.logging.LogRecord);
+    method public abstract void publish(java.util.logging.LogRecord);
+    method protected void reportError(String, Exception, int);
+    method public void setEncoding(String) throws java.lang.SecurityException, java.io.UnsupportedEncodingException;
+    method public void setErrorManager(java.util.logging.ErrorManager);
+    method public void setFilter(java.util.logging.Filter) throws java.lang.SecurityException;
+    method public void setFormatter(java.util.logging.Formatter) throws java.lang.SecurityException;
+    method public void setLevel(java.util.logging.Level) throws java.lang.SecurityException;
+  }
+
+  public class Level implements java.io.Serializable {
+    ctor protected Level(@NonNull String, int);
+    ctor protected Level(@NonNull String, int, @Nullable String);
+    method @NonNull public String getLocalizedName();
+    method @NonNull public String getName();
+    method @Nullable public String getResourceBundleName();
+    method public final int intValue();
+    method @NonNull public static java.util.logging.Level parse(@NonNull String) throws java.lang.IllegalArgumentException;
+    method @NonNull public final String toString();
+    field @NonNull public static final java.util.logging.Level ALL;
+    field @NonNull public static final java.util.logging.Level CONFIG;
+    field @NonNull public static final java.util.logging.Level FINE;
+    field @NonNull public static final java.util.logging.Level FINER;
+    field @NonNull public static final java.util.logging.Level FINEST;
+    field @NonNull public static final java.util.logging.Level INFO;
+    field @NonNull public static final java.util.logging.Level OFF;
+    field @NonNull public static final java.util.logging.Level SEVERE;
+    field @NonNull public static final java.util.logging.Level WARNING;
+  }
+
+  public class LogManager {
+    ctor protected LogManager();
+    method public boolean addLogger(java.util.logging.Logger);
+    method @Deprecated public void addPropertyChangeListener(java.beans.PropertyChangeListener) throws java.lang.SecurityException;
+    method public void checkAccess() throws java.lang.SecurityException;
+    method public static java.util.logging.LogManager getLogManager();
+    method public java.util.logging.Logger getLogger(String);
+    method public java.util.Enumeration<java.lang.String> getLoggerNames();
+    method public static java.util.logging.LoggingMXBean getLoggingMXBean();
+    method public String getProperty(String);
+    method public void readConfiguration() throws java.io.IOException, java.lang.SecurityException;
+    method public void readConfiguration(java.io.InputStream) throws java.io.IOException, java.lang.SecurityException;
+    method @Deprecated public void removePropertyChangeListener(java.beans.PropertyChangeListener) throws java.lang.SecurityException;
+    method public void reset() throws java.lang.SecurityException;
+    field public static final String LOGGING_MXBEAN_NAME = "java.util.logging:type=Logging";
+  }
+
+  public class LogRecord implements java.io.Serializable {
+    ctor public LogRecord(java.util.logging.Level, String);
+    method public java.util.logging.Level getLevel();
+    method public String getLoggerName();
+    method public String getMessage();
+    method public long getMillis();
+    method public Object[] getParameters();
+    method public java.util.ResourceBundle getResourceBundle();
+    method public String getResourceBundleName();
+    method public long getSequenceNumber();
+    method public String getSourceClassName();
+    method public String getSourceMethodName();
+    method public int getThreadID();
+    method public Throwable getThrown();
+    method public void setLevel(java.util.logging.Level);
+    method public void setLoggerName(String);
+    method public void setMessage(String);
+    method public void setMillis(long);
+    method public void setParameters(Object[]);
+    method public void setResourceBundle(java.util.ResourceBundle);
+    method public void setResourceBundleName(String);
+    method public void setSequenceNumber(long);
+    method public void setSourceClassName(String);
+    method public void setSourceMethodName(String);
+    method public void setThreadID(int);
+    method public void setThrown(Throwable);
+  }
+
+  public class Logger {
+    ctor protected Logger(@Nullable String, @Nullable String);
+    method public void addHandler(@NonNull java.util.logging.Handler) throws java.lang.SecurityException;
+    method public void config(@Nullable String);
+    method public void config(@NonNull java.util.function.Supplier<java.lang.String>);
+    method public void entering(@Nullable String, @Nullable String);
+    method public void entering(@Nullable String, @Nullable String, @Nullable Object);
+    method public void entering(@Nullable String, @Nullable String, @Nullable Object[]);
+    method public void exiting(@Nullable String, @Nullable String);
+    method public void exiting(@Nullable String, @Nullable String, @Nullable Object);
+    method public void fine(@Nullable String);
+    method public void fine(@NonNull java.util.function.Supplier<java.lang.String>);
+    method public void finer(@Nullable String);
+    method public void finer(@NonNull java.util.function.Supplier<java.lang.String>);
+    method public void finest(@Nullable String);
+    method public void finest(@NonNull java.util.function.Supplier<java.lang.String>);
+    method @NonNull public static java.util.logging.Logger getAnonymousLogger();
+    method @NonNull public static java.util.logging.Logger getAnonymousLogger(@Nullable String);
+    method @Nullable public java.util.logging.Filter getFilter();
+    method @NonNull public static final java.util.logging.Logger getGlobal();
+    method @NonNull public java.util.logging.Handler[] getHandlers();
+    method @Nullable public java.util.logging.Level getLevel();
+    method @NonNull public static java.util.logging.Logger getLogger(@NonNull String);
+    method @NonNull public static java.util.logging.Logger getLogger(@NonNull String, @Nullable String);
+    method @Nullable public String getName();
+    method @Nullable public java.util.logging.Logger getParent();
+    method @Nullable public java.util.ResourceBundle getResourceBundle();
+    method @Nullable public String getResourceBundleName();
+    method public boolean getUseParentHandlers();
+    method public void info(@Nullable String);
+    method public void info(@NonNull java.util.function.Supplier<java.lang.String>);
+    method public boolean isLoggable(@NonNull java.util.logging.Level);
+    method public void log(@NonNull java.util.logging.LogRecord);
+    method public void log(@NonNull java.util.logging.Level, @Nullable String);
+    method public void log(@NonNull java.util.logging.Level, @NonNull java.util.function.Supplier<java.lang.String>);
+    method public void log(@NonNull java.util.logging.Level, @Nullable String, @Nullable Object);
+    method public void log(@NonNull java.util.logging.Level, @Nullable String, @Nullable Object[]);
+    method public void log(@NonNull java.util.logging.Level, @Nullable String, @Nullable Throwable);
+    method public void log(@NonNull java.util.logging.Level, @Nullable Throwable, @NonNull java.util.function.Supplier<java.lang.String>);
+    method public void logp(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String);
+    method public void logp(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @NonNull java.util.function.Supplier<java.lang.String>);
+    method public void logp(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable Object);
+    method public void logp(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable Object[]);
+    method public void logp(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable Throwable);
+    method public void logp(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable Throwable, @NonNull java.util.function.Supplier<java.lang.String>);
+    method @Deprecated public void logrb(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable String);
+    method @Deprecated public void logrb(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable String, @Nullable Object);
+    method @Deprecated public void logrb(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable String, @Nullable Object[]);
+    method public void logrb(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable java.util.ResourceBundle, @Nullable String, @Nullable java.lang.Object...);
+    method @Deprecated public void logrb(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable String, @Nullable Throwable);
+    method public void logrb(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable java.util.ResourceBundle, @Nullable String, @Nullable Throwable);
+    method public void removeHandler(@Nullable java.util.logging.Handler) throws java.lang.SecurityException;
+    method public void setFilter(@Nullable java.util.logging.Filter) throws java.lang.SecurityException;
+    method public void setLevel(@Nullable java.util.logging.Level) throws java.lang.SecurityException;
+    method public void setParent(@NonNull java.util.logging.Logger);
+    method public void setResourceBundle(@NonNull java.util.ResourceBundle);
+    method public void setUseParentHandlers(boolean);
+    method public void severe(@Nullable String);
+    method public void severe(@NonNull java.util.function.Supplier<java.lang.String>);
+    method public void throwing(@Nullable String, @Nullable String, @Nullable Throwable);
+    method public void warning(@Nullable String);
+    method public void warning(@NonNull java.util.function.Supplier<java.lang.String>);
+    field @NonNull public static final String GLOBAL_LOGGER_NAME = "global";
+    field @Deprecated @NonNull public static final java.util.logging.Logger global;
+  }
+
+  public interface LoggingMXBean {
+    method public String getLoggerLevel(String);
+    method public java.util.List<java.lang.String> getLoggerNames();
+    method public String getParentLoggerName(String);
+    method public void setLoggerLevel(String, String);
+  }
+
+  public final class LoggingPermission extends java.security.BasicPermission {
+    ctor public LoggingPermission(String, String) throws java.lang.IllegalArgumentException;
+  }
+
+  public class MemoryHandler extends java.util.logging.Handler {
+    ctor public MemoryHandler();
+    ctor public MemoryHandler(java.util.logging.Handler, int, java.util.logging.Level);
+    method public void close() throws java.lang.SecurityException;
+    method public void flush();
+    method public java.util.logging.Level getPushLevel();
+    method public void publish(java.util.logging.LogRecord);
+    method public void push();
+    method public void setPushLevel(java.util.logging.Level) throws java.lang.SecurityException;
+  }
+
+  public class SimpleFormatter extends java.util.logging.Formatter {
+    ctor public SimpleFormatter();
+    method public String format(java.util.logging.LogRecord);
+  }
+
+  public class SocketHandler extends java.util.logging.StreamHandler {
+    ctor public SocketHandler() throws java.io.IOException;
+    ctor public SocketHandler(String, int) throws java.io.IOException;
+  }
+
+  public class StreamHandler extends java.util.logging.Handler {
+    ctor public StreamHandler();
+    ctor public StreamHandler(java.io.OutputStream, java.util.logging.Formatter);
+    method public void close() throws java.lang.SecurityException;
+    method public void flush();
+    method public void publish(java.util.logging.LogRecord);
+    method protected void setOutputStream(java.io.OutputStream) throws java.lang.SecurityException;
+  }
+
+  public class XMLFormatter extends java.util.logging.Formatter {
+    ctor public XMLFormatter();
+    method public String format(java.util.logging.LogRecord);
+  }
+
+}
+
+package java.util.prefs {
+
+  public abstract class AbstractPreferences extends java.util.prefs.Preferences {
+    ctor protected AbstractPreferences(java.util.prefs.AbstractPreferences, String);
+    method public String absolutePath();
+    method public void addNodeChangeListener(java.util.prefs.NodeChangeListener);
+    method public void addPreferenceChangeListener(java.util.prefs.PreferenceChangeListener);
+    method protected final java.util.prefs.AbstractPreferences[] cachedChildren();
+    method protected abstract java.util.prefs.AbstractPreferences childSpi(String);
+    method public String[] childrenNames() throws java.util.prefs.BackingStoreException;
+    method protected abstract String[] childrenNamesSpi() throws java.util.prefs.BackingStoreException;
+    method public void clear() throws java.util.prefs.BackingStoreException;
+    method public void exportNode(java.io.OutputStream) throws java.util.prefs.BackingStoreException, java.io.IOException;
+    method public void exportSubtree(java.io.OutputStream) throws java.util.prefs.BackingStoreException, java.io.IOException;
+    method public void flush() throws java.util.prefs.BackingStoreException;
+    method protected abstract void flushSpi() throws java.util.prefs.BackingStoreException;
+    method public String get(String, String);
+    method public boolean getBoolean(String, boolean);
+    method public byte[] getByteArray(String, byte[]);
+    method protected java.util.prefs.AbstractPreferences getChild(String) throws java.util.prefs.BackingStoreException;
+    method public double getDouble(String, double);
+    method public float getFloat(String, float);
+    method public int getInt(String, int);
+    method public long getLong(String, long);
+    method protected abstract String getSpi(String);
+    method protected boolean isRemoved();
+    method public boolean isUserNode();
+    method public String[] keys() throws java.util.prefs.BackingStoreException;
+    method protected abstract String[] keysSpi() throws java.util.prefs.BackingStoreException;
+    method public String name();
+    method public java.util.prefs.Preferences node(String);
+    method public boolean nodeExists(String) throws java.util.prefs.BackingStoreException;
+    method public java.util.prefs.Preferences parent();
+    method public void put(String, String);
+    method public void putBoolean(String, boolean);
+    method public void putByteArray(String, byte[]);
+    method public void putDouble(String, double);
+    method public void putFloat(String, float);
+    method public void putInt(String, int);
+    method public void putLong(String, long);
+    method protected abstract void putSpi(String, String);
+    method public void remove(String);
+    method public void removeNode() throws java.util.prefs.BackingStoreException;
+    method public void removeNodeChangeListener(java.util.prefs.NodeChangeListener);
+    method protected abstract void removeNodeSpi() throws java.util.prefs.BackingStoreException;
+    method public void removePreferenceChangeListener(java.util.prefs.PreferenceChangeListener);
+    method protected abstract void removeSpi(String);
+    method public void sync() throws java.util.prefs.BackingStoreException;
+    method protected abstract void syncSpi() throws java.util.prefs.BackingStoreException;
+    field protected final Object lock;
+    field protected boolean newNode;
+  }
+
+  public class BackingStoreException extends java.lang.Exception {
+    ctor public BackingStoreException(String);
+    ctor public BackingStoreException(Throwable);
+  }
+
+  public class InvalidPreferencesFormatException extends java.lang.Exception {
+    ctor public InvalidPreferencesFormatException(Throwable);
+    ctor public InvalidPreferencesFormatException(String);
+    ctor public InvalidPreferencesFormatException(String, Throwable);
+  }
+
+  public class NodeChangeEvent extends java.util.EventObject {
+    ctor public NodeChangeEvent(java.util.prefs.Preferences, java.util.prefs.Preferences);
+    method public java.util.prefs.Preferences getChild();
+    method public java.util.prefs.Preferences getParent();
+  }
+
+  public interface NodeChangeListener extends java.util.EventListener {
+    method public void childAdded(java.util.prefs.NodeChangeEvent);
+    method public void childRemoved(java.util.prefs.NodeChangeEvent);
+  }
+
+  public class PreferenceChangeEvent extends java.util.EventObject {
+    ctor public PreferenceChangeEvent(java.util.prefs.Preferences, String, String);
+    method public String getKey();
+    method public String getNewValue();
+    method public java.util.prefs.Preferences getNode();
+  }
+
+  @java.lang.FunctionalInterface public interface PreferenceChangeListener extends java.util.EventListener {
+    method public void preferenceChange(java.util.prefs.PreferenceChangeEvent);
+  }
+
+  public abstract class Preferences {
+    ctor protected Preferences();
+    method public abstract String absolutePath();
+    method public abstract void addNodeChangeListener(java.util.prefs.NodeChangeListener);
+    method public abstract void addPreferenceChangeListener(java.util.prefs.PreferenceChangeListener);
+    method public abstract String[] childrenNames() throws java.util.prefs.BackingStoreException;
+    method public abstract void clear() throws java.util.prefs.BackingStoreException;
+    method public abstract void exportNode(java.io.OutputStream) throws java.util.prefs.BackingStoreException, java.io.IOException;
+    method public abstract void exportSubtree(java.io.OutputStream) throws java.util.prefs.BackingStoreException, java.io.IOException;
+    method public abstract void flush() throws java.util.prefs.BackingStoreException;
+    method public abstract String get(String, String);
+    method public abstract boolean getBoolean(String, boolean);
+    method public abstract byte[] getByteArray(String, byte[]);
+    method public abstract double getDouble(String, double);
+    method public abstract float getFloat(String, float);
+    method public abstract int getInt(String, int);
+    method public abstract long getLong(String, long);
+    method public static void importPreferences(java.io.InputStream) throws java.io.IOException, java.util.prefs.InvalidPreferencesFormatException;
+    method public abstract boolean isUserNode();
+    method public abstract String[] keys() throws java.util.prefs.BackingStoreException;
+    method public abstract String name();
+    method public abstract java.util.prefs.Preferences node(String);
+    method public abstract boolean nodeExists(String) throws java.util.prefs.BackingStoreException;
+    method public abstract java.util.prefs.Preferences parent();
+    method public abstract void put(String, String);
+    method public abstract void putBoolean(String, boolean);
+    method public abstract void putByteArray(String, byte[]);
+    method public abstract void putDouble(String, double);
+    method public abstract void putFloat(String, float);
+    method public abstract void putInt(String, int);
+    method public abstract void putLong(String, long);
+    method public abstract void remove(String);
+    method public abstract void removeNode() throws java.util.prefs.BackingStoreException;
+    method public abstract void removeNodeChangeListener(java.util.prefs.NodeChangeListener);
+    method public abstract void removePreferenceChangeListener(java.util.prefs.PreferenceChangeListener);
+    method public abstract void sync() throws java.util.prefs.BackingStoreException;
+    method public static java.util.prefs.Preferences systemNodeForPackage(Class<?>);
+    method public static java.util.prefs.Preferences systemRoot();
+    method public abstract String toString();
+    method public static java.util.prefs.Preferences userNodeForPackage(Class<?>);
+    method public static java.util.prefs.Preferences userRoot();
+    field public static final int MAX_KEY_LENGTH = 80; // 0x50
+    field public static final int MAX_NAME_LENGTH = 80; // 0x50
+    field public static final int MAX_VALUE_LENGTH = 8192; // 0x2000
+  }
+
+  public interface PreferencesFactory {
+    method public java.util.prefs.Preferences systemRoot();
+    method public java.util.prefs.Preferences userRoot();
+  }
+
+}
+
+package java.util.regex {
+
+  public interface MatchResult {
+    method public int end();
+    method public int end(int);
+    method public String group();
+    method public String group(int);
+    method public int groupCount();
+    method public int start();
+    method public int start(int);
+  }
+
+  public final class Matcher implements java.util.regex.MatchResult {
+    method @NonNull public java.util.regex.Matcher appendReplacement(@NonNull StringBuffer, @NonNull String);
+    method @NonNull public StringBuffer appendTail(@NonNull StringBuffer);
+    method public int end();
+    method public int end(int);
+    method public int end(@NonNull String);
+    method public boolean find();
+    method public boolean find(int);
+    method @NonNull public String group();
+    method @Nullable public String group(int);
+    method @Nullable public String group(@NonNull String);
+    method public int groupCount();
+    method public boolean hasAnchoringBounds();
+    method public boolean hasTransparentBounds();
+    method public boolean hitEnd();
+    method public boolean lookingAt();
+    method public boolean matches();
+    method @NonNull public java.util.regex.Pattern pattern();
+    method @NonNull public static String quoteReplacement(@NonNull String);
+    method @NonNull public java.util.regex.Matcher region(int, int);
+    method public int regionEnd();
+    method public int regionStart();
+    method @NonNull public String replaceAll(@NonNull String);
+    method @NonNull public String replaceFirst(@NonNull String);
+    method public boolean requireEnd();
+    method @NonNull public java.util.regex.Matcher reset();
+    method @NonNull public java.util.regex.Matcher reset(@NonNull CharSequence);
+    method public int start();
+    method public int start(int);
+    method public int start(@NonNull String);
+    method @NonNull public java.util.regex.MatchResult toMatchResult();
+    method @NonNull public java.util.regex.Matcher useAnchoringBounds(boolean);
+    method @NonNull public java.util.regex.Matcher usePattern(@NonNull java.util.regex.Pattern);
+    method @NonNull public java.util.regex.Matcher useTransparentBounds(boolean);
+  }
+
+  public final class Pattern implements java.io.Serializable {
+    method @NonNull public java.util.function.Predicate<java.lang.String> asPredicate();
+    method @NonNull public static java.util.regex.Pattern compile(@NonNull String);
+    method @NonNull public static java.util.regex.Pattern compile(@NonNull String, int);
+    method public int flags();
+    method @NonNull public java.util.regex.Matcher matcher(@NonNull CharSequence);
+    method public static boolean matches(@NonNull String, @NonNull CharSequence);
+    method @NonNull public String pattern();
+    method @NonNull public static String quote(@NonNull String);
+    method @NonNull public String[] split(@NonNull CharSequence, int);
+    method @NonNull public String[] split(@NonNull CharSequence);
+    method @NonNull public java.util.stream.Stream<java.lang.String> splitAsStream(@NonNull CharSequence);
+    field public static final int CANON_EQ = 128; // 0x80
+    field public static final int CASE_INSENSITIVE = 2; // 0x2
+    field public static final int COMMENTS = 4; // 0x4
+    field public static final int DOTALL = 32; // 0x20
+    field public static final int LITERAL = 16; // 0x10
+    field public static final int MULTILINE = 8; // 0x8
+    field public static final int UNICODE_CASE = 64; // 0x40
+    field public static final int UNICODE_CHARACTER_CLASS = 256; // 0x100
+    field public static final int UNIX_LINES = 1; // 0x1
+  }
+
+  public class PatternSyntaxException extends java.lang.IllegalArgumentException {
+    ctor public PatternSyntaxException(String, String, int);
+    method public String getDescription();
+    method public int getIndex();
+    method public String getPattern();
+  }
+
+}
+
+package java.util.stream {
+
+  public interface BaseStream<T, S extends java.util.stream.BaseStream<T, S>> extends java.lang.AutoCloseable {
+    method public void close();
+    method public boolean isParallel();
+    method public java.util.Iterator<T> iterator();
+    method public S onClose(Runnable);
+    method public S parallel();
+    method public S sequential();
+    method public java.util.Spliterator<T> spliterator();
+    method public S unordered();
+  }
+
+  public interface Collector<T, A, R> {
+    method public java.util.function.BiConsumer<A,T> accumulator();
+    method public java.util.Set<java.util.stream.Collector.Characteristics> characteristics();
+    method public java.util.function.BinaryOperator<A> combiner();
+    method public java.util.function.Function<A,R> finisher();
+    method public static <T, R> java.util.stream.Collector<T,R,R> of(java.util.function.Supplier<R>, java.util.function.BiConsumer<R,T>, java.util.function.BinaryOperator<R>, java.util.stream.Collector.Characteristics...);
+    method public static <T, A, R> java.util.stream.Collector<T,A,R> of(java.util.function.Supplier<A>, java.util.function.BiConsumer<A,T>, java.util.function.BinaryOperator<A>, java.util.function.Function<A,R>, java.util.stream.Collector.Characteristics...);
+    method public java.util.function.Supplier<A> supplier();
+  }
+
+  public enum Collector.Characteristics {
+    enum_constant public static final java.util.stream.Collector.Characteristics CONCURRENT;
+    enum_constant public static final java.util.stream.Collector.Characteristics IDENTITY_FINISH;
+    enum_constant public static final java.util.stream.Collector.Characteristics UNORDERED;
+  }
+
+  public final class Collectors {
+    method public static <T> java.util.stream.Collector<T,?,java.lang.Double> averagingDouble(java.util.function.ToDoubleFunction<? super T>);
+    method public static <T> java.util.stream.Collector<T,?,java.lang.Double> averagingInt(java.util.function.ToIntFunction<? super T>);
+    method public static <T> java.util.stream.Collector<T,?,java.lang.Double> averagingLong(java.util.function.ToLongFunction<? super T>);
+    method public static <T, A, R, RR> java.util.stream.Collector<T,A,RR> collectingAndThen(java.util.stream.Collector<T,A,R>, java.util.function.Function<R,RR>);
+    method public static <T> java.util.stream.Collector<T,?,java.lang.Long> counting();
+    method public static <T, K> java.util.stream.Collector<T,?,java.util.Map<K,java.util.List<T>>> groupingBy(java.util.function.Function<? super T,? extends K>);
+    method public static <T, K, A, D> java.util.stream.Collector<T,?,java.util.Map<K,D>> groupingBy(java.util.function.Function<? super T,? extends K>, java.util.stream.Collector<? super T,A,D>);
+    method public static <T, K, D, A, M extends java.util.Map<K, D>> java.util.stream.Collector<T,?,M> groupingBy(java.util.function.Function<? super T,? extends K>, java.util.function.Supplier<M>, java.util.stream.Collector<? super T,A,D>);
+    method public static <T, K> java.util.stream.Collector<T,?,java.util.concurrent.ConcurrentMap<K,java.util.List<T>>> groupingByConcurrent(java.util.function.Function<? super T,? extends K>);
+    method public static <T, K, A, D> java.util.stream.Collector<T,?,java.util.concurrent.ConcurrentMap<K,D>> groupingByConcurrent(java.util.function.Function<? super T,? extends K>, java.util.stream.Collector<? super T,A,D>);
+    method public static <T, K, A, D, M extends java.util.concurrent.ConcurrentMap<K, D>> java.util.stream.Collector<T,?,M> groupingByConcurrent(java.util.function.Function<? super T,? extends K>, java.util.function.Supplier<M>, java.util.stream.Collector<? super T,A,D>);
+    method public static java.util.stream.Collector<java.lang.CharSequence,?,java.lang.String> joining();
+    method public static java.util.stream.Collector<java.lang.CharSequence,?,java.lang.String> joining(CharSequence);
+    method public static java.util.stream.Collector<java.lang.CharSequence,?,java.lang.String> joining(CharSequence, CharSequence, CharSequence);
+    method public static <T, U, A, R> java.util.stream.Collector<T,?,R> mapping(java.util.function.Function<? super T,? extends U>, java.util.stream.Collector<? super U,A,R>);
+    method public static <T> java.util.stream.Collector<T,?,java.util.Optional<T>> maxBy(java.util.Comparator<? super T>);
+    method public static <T> java.util.stream.Collector<T,?,java.util.Optional<T>> minBy(java.util.Comparator<? super T>);
+    method public static <T> java.util.stream.Collector<T,?,java.util.Map<java.lang.Boolean,java.util.List<T>>> partitioningBy(java.util.function.Predicate<? super T>);
+    method public static <T, D, A> java.util.stream.Collector<T,?,java.util.Map<java.lang.Boolean,D>> partitioningBy(java.util.function.Predicate<? super T>, java.util.stream.Collector<? super T,A,D>);
+    method public static <T> java.util.stream.Collector<T,?,T> reducing(T, java.util.function.BinaryOperator<T>);
+    method public static <T> java.util.stream.Collector<T,?,java.util.Optional<T>> reducing(java.util.function.BinaryOperator<T>);
+    method public static <T, U> java.util.stream.Collector<T,?,U> reducing(U, java.util.function.Function<? super T,? extends U>, java.util.function.BinaryOperator<U>);
+    method public static <T> java.util.stream.Collector<T,?,java.util.DoubleSummaryStatistics> summarizingDouble(java.util.function.ToDoubleFunction<? super T>);
+    method public static <T> java.util.stream.Collector<T,?,java.util.IntSummaryStatistics> summarizingInt(java.util.function.ToIntFunction<? super T>);
+    method public static <T> java.util.stream.Collector<T,?,java.util.LongSummaryStatistics> summarizingLong(java.util.function.ToLongFunction<? super T>);
+    method public static <T> java.util.stream.Collector<T,?,java.lang.Double> summingDouble(java.util.function.ToDoubleFunction<? super T>);
+    method public static <T> java.util.stream.Collector<T,?,java.lang.Integer> summingInt(java.util.function.ToIntFunction<? super T>);
+    method public static <T> java.util.stream.Collector<T,?,java.lang.Long> summingLong(java.util.function.ToLongFunction<? super T>);
+    method public static <T, C extends java.util.Collection<T>> java.util.stream.Collector<T,?,C> toCollection(java.util.function.Supplier<C>);
+    method public static <T, K, U> java.util.stream.Collector<T,?,java.util.concurrent.ConcurrentMap<K,U>> toConcurrentMap(java.util.function.Function<? super T,? extends K>, java.util.function.Function<? super T,? extends U>);
+    method public static <T, K, U> java.util.stream.Collector<T,?,java.util.concurrent.ConcurrentMap<K,U>> toConcurrentMap(java.util.function.Function<? super T,? extends K>, java.util.function.Function<? super T,? extends U>, java.util.function.BinaryOperator<U>);
+    method public static <T, K, U, M extends java.util.concurrent.ConcurrentMap<K, U>> java.util.stream.Collector<T,?,M> toConcurrentMap(java.util.function.Function<? super T,? extends K>, java.util.function.Function<? super T,? extends U>, java.util.function.BinaryOperator<U>, java.util.function.Supplier<M>);
+    method public static <T> java.util.stream.Collector<T,?,java.util.List<T>> toList();
+    method public static <T, K, U> java.util.stream.Collector<T,?,java.util.Map<K,U>> toMap(java.util.function.Function<? super T,? extends K>, java.util.function.Function<? super T,? extends U>);
+    method public static <T, K, U> java.util.stream.Collector<T,?,java.util.Map<K,U>> toMap(java.util.function.Function<? super T,? extends K>, java.util.function.Function<? super T,? extends U>, java.util.function.BinaryOperator<U>);
+    method public static <T, K, U, M extends java.util.Map<K, U>> java.util.stream.Collector<T,?,M> toMap(java.util.function.Function<? super T,? extends K>, java.util.function.Function<? super T,? extends U>, java.util.function.BinaryOperator<U>, java.util.function.Supplier<M>);
+    method public static <T> java.util.stream.Collector<T,?,java.util.Set<T>> toSet();
+  }
+
+  public interface DoubleStream extends java.util.stream.BaseStream<java.lang.Double,java.util.stream.DoubleStream> {
+    method public boolean allMatch(java.util.function.DoublePredicate);
+    method public boolean anyMatch(java.util.function.DoublePredicate);
+    method public java.util.OptionalDouble average();
+    method public java.util.stream.Stream<java.lang.Double> boxed();
+    method public static java.util.stream.DoubleStream.Builder builder();
+    method public <R> R collect(java.util.function.Supplier<R>, java.util.function.ObjDoubleConsumer<R>, java.util.function.BiConsumer<R,R>);
+    method public static java.util.stream.DoubleStream concat(java.util.stream.DoubleStream, java.util.stream.DoubleStream);
+    method public long count();
+    method public java.util.stream.DoubleStream distinct();
+    method public static java.util.stream.DoubleStream empty();
+    method public java.util.stream.DoubleStream filter(java.util.function.DoublePredicate);
+    method public java.util.OptionalDouble findAny();
+    method public java.util.OptionalDouble findFirst();
+    method public java.util.stream.DoubleStream flatMap(java.util.function.DoubleFunction<? extends java.util.stream.DoubleStream>);
+    method public void forEach(java.util.function.DoubleConsumer);
+    method public void forEachOrdered(java.util.function.DoubleConsumer);
+    method public static java.util.stream.DoubleStream generate(java.util.function.DoubleSupplier);
+    method public static java.util.stream.DoubleStream iterate(double, java.util.function.DoubleUnaryOperator);
+    method public java.util.PrimitiveIterator.OfDouble iterator();
+    method public java.util.stream.DoubleStream limit(long);
+    method public java.util.stream.DoubleStream map(java.util.function.DoubleUnaryOperator);
+    method public java.util.stream.IntStream mapToInt(java.util.function.DoubleToIntFunction);
+    method public java.util.stream.LongStream mapToLong(java.util.function.DoubleToLongFunction);
+    method public <U> java.util.stream.Stream<U> mapToObj(java.util.function.DoubleFunction<? extends U>);
+    method public java.util.OptionalDouble max();
+    method public java.util.OptionalDouble min();
+    method public boolean noneMatch(java.util.function.DoublePredicate);
+    method public static java.util.stream.DoubleStream of(double);
+    method public static java.util.stream.DoubleStream of(double...);
+    method public java.util.stream.DoubleStream parallel();
+    method public java.util.stream.DoubleStream peek(java.util.function.DoubleConsumer);
+    method public double reduce(double, java.util.function.DoubleBinaryOperator);
+    method public java.util.OptionalDouble reduce(java.util.function.DoubleBinaryOperator);
+    method public java.util.stream.DoubleStream sequential();
+    method public java.util.stream.DoubleStream skip(long);
+    method public java.util.stream.DoubleStream sorted();
+    method public java.util.Spliterator.OfDouble spliterator();
+    method public double sum();
+    method public java.util.DoubleSummaryStatistics summaryStatistics();
+    method public double[] toArray();
+  }
+
+  public static interface DoubleStream.Builder extends java.util.function.DoubleConsumer {
+    method public default java.util.stream.DoubleStream.Builder add(double);
+    method public java.util.stream.DoubleStream build();
+  }
+
+  public interface IntStream extends java.util.stream.BaseStream<java.lang.Integer,java.util.stream.IntStream> {
+    method public boolean allMatch(java.util.function.IntPredicate);
+    method public boolean anyMatch(java.util.function.IntPredicate);
+    method public java.util.stream.DoubleStream asDoubleStream();
+    method public java.util.stream.LongStream asLongStream();
+    method public java.util.OptionalDouble average();
+    method public java.util.stream.Stream<java.lang.Integer> boxed();
+    method public static java.util.stream.IntStream.Builder builder();
+    method public <R> R collect(java.util.function.Supplier<R>, java.util.function.ObjIntConsumer<R>, java.util.function.BiConsumer<R,R>);
+    method public static java.util.stream.IntStream concat(java.util.stream.IntStream, java.util.stream.IntStream);
+    method public long count();
+    method public java.util.stream.IntStream distinct();
+    method public static java.util.stream.IntStream empty();
+    method public java.util.stream.IntStream filter(java.util.function.IntPredicate);
+    method public java.util.OptionalInt findAny();
+    method public java.util.OptionalInt findFirst();
+    method public java.util.stream.IntStream flatMap(java.util.function.IntFunction<? extends java.util.stream.IntStream>);
+    method public void forEach(java.util.function.IntConsumer);
+    method public void forEachOrdered(java.util.function.IntConsumer);
+    method public static java.util.stream.IntStream generate(java.util.function.IntSupplier);
+    method public static java.util.stream.IntStream iterate(int, java.util.function.IntUnaryOperator);
+    method public java.util.PrimitiveIterator.OfInt iterator();
+    method public java.util.stream.IntStream limit(long);
+    method public java.util.stream.IntStream map(java.util.function.IntUnaryOperator);
+    method public java.util.stream.DoubleStream mapToDouble(java.util.function.IntToDoubleFunction);
+    method public java.util.stream.LongStream mapToLong(java.util.function.IntToLongFunction);
+    method public <U> java.util.stream.Stream<U> mapToObj(java.util.function.IntFunction<? extends U>);
+    method public java.util.OptionalInt max();
+    method public java.util.OptionalInt min();
+    method public boolean noneMatch(java.util.function.IntPredicate);
+    method public static java.util.stream.IntStream of(int);
+    method public static java.util.stream.IntStream of(int...);
+    method public java.util.stream.IntStream parallel();
+    method public java.util.stream.IntStream peek(java.util.function.IntConsumer);
+    method public static java.util.stream.IntStream range(int, int);
+    method public static java.util.stream.IntStream rangeClosed(int, int);
+    method public int reduce(int, java.util.function.IntBinaryOperator);
+    method public java.util.OptionalInt reduce(java.util.function.IntBinaryOperator);
+    method public java.util.stream.IntStream sequential();
+    method public java.util.stream.IntStream skip(long);
+    method public java.util.stream.IntStream sorted();
+    method public java.util.Spliterator.OfInt spliterator();
+    method public int sum();
+    method public java.util.IntSummaryStatistics summaryStatistics();
+    method public int[] toArray();
+  }
+
+  public static interface IntStream.Builder extends java.util.function.IntConsumer {
+    method public default java.util.stream.IntStream.Builder add(int);
+    method public java.util.stream.IntStream build();
+  }
+
+  public interface LongStream extends java.util.stream.BaseStream<java.lang.Long,java.util.stream.LongStream> {
+    method public boolean allMatch(java.util.function.LongPredicate);
+    method public boolean anyMatch(java.util.function.LongPredicate);
+    method public java.util.stream.DoubleStream asDoubleStream();
+    method public java.util.OptionalDouble average();
+    method public java.util.stream.Stream<java.lang.Long> boxed();
+    method public static java.util.stream.LongStream.Builder builder();
+    method public <R> R collect(java.util.function.Supplier<R>, java.util.function.ObjLongConsumer<R>, java.util.function.BiConsumer<R,R>);
+    method public static java.util.stream.LongStream concat(java.util.stream.LongStream, java.util.stream.LongStream);
+    method public long count();
+    method public java.util.stream.LongStream distinct();
+    method public static java.util.stream.LongStream empty();
+    method public java.util.stream.LongStream filter(java.util.function.LongPredicate);
+    method public java.util.OptionalLong findAny();
+    method public java.util.OptionalLong findFirst();
+    method public java.util.stream.LongStream flatMap(java.util.function.LongFunction<? extends java.util.stream.LongStream>);
+    method public void forEach(java.util.function.LongConsumer);
+    method public void forEachOrdered(java.util.function.LongConsumer);
+    method public static java.util.stream.LongStream generate(java.util.function.LongSupplier);
+    method public static java.util.stream.LongStream iterate(long, java.util.function.LongUnaryOperator);
+    method public java.util.PrimitiveIterator.OfLong iterator();
+    method public java.util.stream.LongStream limit(long);
+    method public java.util.stream.LongStream map(java.util.function.LongUnaryOperator);
+    method public java.util.stream.DoubleStream mapToDouble(java.util.function.LongToDoubleFunction);
+    method public java.util.stream.IntStream mapToInt(java.util.function.LongToIntFunction);
+    method public <U> java.util.stream.Stream<U> mapToObj(java.util.function.LongFunction<? extends U>);
+    method public java.util.OptionalLong max();
+    method public java.util.OptionalLong min();
+    method public boolean noneMatch(java.util.function.LongPredicate);
+    method public static java.util.stream.LongStream of(long);
+    method public static java.util.stream.LongStream of(long...);
+    method public java.util.stream.LongStream parallel();
+    method public java.util.stream.LongStream peek(java.util.function.LongConsumer);
+    method public static java.util.stream.LongStream range(long, long);
+    method public static java.util.stream.LongStream rangeClosed(long, long);
+    method public long reduce(long, java.util.function.LongBinaryOperator);
+    method public java.util.OptionalLong reduce(java.util.function.LongBinaryOperator);
+    method public java.util.stream.LongStream sequential();
+    method public java.util.stream.LongStream skip(long);
+    method public java.util.stream.LongStream sorted();
+    method public java.util.Spliterator.OfLong spliterator();
+    method public long sum();
+    method public java.util.LongSummaryStatistics summaryStatistics();
+    method public long[] toArray();
+  }
+
+  public static interface LongStream.Builder extends java.util.function.LongConsumer {
+    method public default java.util.stream.LongStream.Builder add(long);
+    method public java.util.stream.LongStream build();
+  }
+
+  public interface Stream<T> extends java.util.stream.BaseStream<T,java.util.stream.Stream<T>> {
+    method public boolean allMatch(java.util.function.Predicate<? super T>);
+    method public boolean anyMatch(java.util.function.Predicate<? super T>);
+    method public static <T> java.util.stream.Stream.Builder<T> builder();
+    method public <R> R collect(java.util.function.Supplier<R>, java.util.function.BiConsumer<R,? super T>, java.util.function.BiConsumer<R,R>);
+    method public <R, A> R collect(java.util.stream.Collector<? super T,A,R>);
+    method public static <T> java.util.stream.Stream<T> concat(java.util.stream.Stream<? extends T>, java.util.stream.Stream<? extends T>);
+    method public long count();
+    method public java.util.stream.Stream<T> distinct();
+    method public static <T> java.util.stream.Stream<T> empty();
+    method public java.util.stream.Stream<T> filter(java.util.function.Predicate<? super T>);
+    method public java.util.Optional<T> findAny();
+    method public java.util.Optional<T> findFirst();
+    method public <R> java.util.stream.Stream<R> flatMap(java.util.function.Function<? super T,? extends java.util.stream.Stream<? extends R>>);
+    method public java.util.stream.DoubleStream flatMapToDouble(java.util.function.Function<? super T,? extends java.util.stream.DoubleStream>);
+    method public java.util.stream.IntStream flatMapToInt(java.util.function.Function<? super T,? extends java.util.stream.IntStream>);
+    method public java.util.stream.LongStream flatMapToLong(java.util.function.Function<? super T,? extends java.util.stream.LongStream>);
+    method public void forEach(java.util.function.Consumer<? super T>);
+    method public void forEachOrdered(java.util.function.Consumer<? super T>);
+    method public static <T> java.util.stream.Stream<T> generate(java.util.function.Supplier<T>);
+    method public static <T> java.util.stream.Stream<T> iterate(T, java.util.function.UnaryOperator<T>);
+    method public java.util.stream.Stream<T> limit(long);
+    method public <R> java.util.stream.Stream<R> map(java.util.function.Function<? super T,? extends R>);
+    method public java.util.stream.DoubleStream mapToDouble(java.util.function.ToDoubleFunction<? super T>);
+    method public java.util.stream.IntStream mapToInt(java.util.function.ToIntFunction<? super T>);
+    method public java.util.stream.LongStream mapToLong(java.util.function.ToLongFunction<? super T>);
+    method public java.util.Optional<T> max(java.util.Comparator<? super T>);
+    method public java.util.Optional<T> min(java.util.Comparator<? super T>);
+    method public boolean noneMatch(java.util.function.Predicate<? super T>);
+    method public static <T> java.util.stream.Stream<T> of(T);
+    method @java.lang.SafeVarargs public static <T> java.util.stream.Stream<T> of(T...);
+    method public java.util.stream.Stream<T> peek(java.util.function.Consumer<? super T>);
+    method public T reduce(T, java.util.function.BinaryOperator<T>);
+    method public java.util.Optional<T> reduce(java.util.function.BinaryOperator<T>);
+    method public <U> U reduce(U, java.util.function.BiFunction<U,? super T,U>, java.util.function.BinaryOperator<U>);
+    method public java.util.stream.Stream<T> skip(long);
+    method public java.util.stream.Stream<T> sorted();
+    method public java.util.stream.Stream<T> sorted(java.util.Comparator<? super T>);
+    method public Object[] toArray();
+    method public <A> A[] toArray(java.util.function.IntFunction<A[]>);
+  }
+
+  public static interface Stream.Builder<T> extends java.util.function.Consumer<T> {
+    method public default java.util.stream.Stream.Builder<T> add(T);
+    method public java.util.stream.Stream<T> build();
+  }
+
+  public final class StreamSupport {
+    method public static java.util.stream.DoubleStream doubleStream(java.util.Spliterator.OfDouble, boolean);
+    method public static java.util.stream.DoubleStream doubleStream(java.util.function.Supplier<? extends java.util.Spliterator.OfDouble>, int, boolean);
+    method public static java.util.stream.IntStream intStream(java.util.Spliterator.OfInt, boolean);
+    method public static java.util.stream.IntStream intStream(java.util.function.Supplier<? extends java.util.Spliterator.OfInt>, int, boolean);
+    method public static java.util.stream.LongStream longStream(java.util.Spliterator.OfLong, boolean);
+    method public static java.util.stream.LongStream longStream(java.util.function.Supplier<? extends java.util.Spliterator.OfLong>, int, boolean);
+    method public static <T> java.util.stream.Stream<T> stream(java.util.Spliterator<T>, boolean);
+    method public static <T> java.util.stream.Stream<T> stream(java.util.function.Supplier<? extends java.util.Spliterator<T>>, int, boolean);
+  }
+
+}
+
+package java.util.zip {
+
+  public class Adler32 implements java.util.zip.Checksum {
+    ctor public Adler32();
+    method public long getValue();
+    method public void reset();
+    method public void update(int);
+    method public void update(byte[], int, int);
+    method public void update(byte[]);
+    method public void update(java.nio.ByteBuffer);
+  }
+
+  public class CRC32 implements java.util.zip.Checksum {
+    ctor public CRC32();
+    method public long getValue();
+    method public void reset();
+    method public void update(int);
+    method public void update(byte[], int, int);
+    method public void update(byte[]);
+    method public void update(java.nio.ByteBuffer);
+  }
+
+  public class CheckedInputStream extends java.io.FilterInputStream {
+    ctor public CheckedInputStream(java.io.InputStream, java.util.zip.Checksum);
+    method public java.util.zip.Checksum getChecksum();
+  }
+
+  public class CheckedOutputStream extends java.io.FilterOutputStream {
+    ctor public CheckedOutputStream(java.io.OutputStream, java.util.zip.Checksum);
+    method public java.util.zip.Checksum getChecksum();
+  }
+
+  public interface Checksum {
+    method public long getValue();
+    method public void reset();
+    method public void update(int);
+    method public void update(byte[], int, int);
+  }
+
+  public class DataFormatException extends java.lang.Exception {
+    ctor public DataFormatException();
+    ctor public DataFormatException(String);
+  }
+
+  public class Deflater {
+    ctor public Deflater(int, boolean);
+    ctor public Deflater(int);
+    ctor public Deflater();
+    method public int deflate(byte[], int, int);
+    method public int deflate(byte[]);
+    method public int deflate(byte[], int, int, int);
+    method public void end();
+    method protected void finalize();
+    method public void finish();
+    method public boolean finished();
+    method public int getAdler();
+    method public long getBytesRead();
+    method public long getBytesWritten();
+    method public int getTotalIn();
+    method public int getTotalOut();
+    method public boolean needsInput();
+    method public void reset();
+    method public void setDictionary(byte[], int, int);
+    method public void setDictionary(byte[]);
+    method public void setInput(byte[], int, int);
+    method public void setInput(byte[]);
+    method public void setLevel(int);
+    method public void setStrategy(int);
+    field public static final int BEST_COMPRESSION = 9; // 0x9
+    field public static final int BEST_SPEED = 1; // 0x1
+    field public static final int DEFAULT_COMPRESSION = -1; // 0xffffffff
+    field public static final int DEFAULT_STRATEGY = 0; // 0x0
+    field public static final int DEFLATED = 8; // 0x8
+    field public static final int FILTERED = 1; // 0x1
+    field public static final int FULL_FLUSH = 3; // 0x3
+    field public static final int HUFFMAN_ONLY = 2; // 0x2
+    field public static final int NO_COMPRESSION = 0; // 0x0
+    field public static final int NO_FLUSH = 0; // 0x0
+    field public static final int SYNC_FLUSH = 2; // 0x2
+  }
+
+  public class DeflaterInputStream extends java.io.FilterInputStream {
+    ctor public DeflaterInputStream(java.io.InputStream);
+    ctor public DeflaterInputStream(java.io.InputStream, java.util.zip.Deflater);
+    ctor public DeflaterInputStream(java.io.InputStream, java.util.zip.Deflater, int);
+    field protected final byte[] buf;
+    field protected final java.util.zip.Deflater def;
+  }
+
+  public class DeflaterOutputStream extends java.io.FilterOutputStream {
+    ctor public DeflaterOutputStream(java.io.OutputStream, java.util.zip.Deflater, int, boolean);
+    ctor public DeflaterOutputStream(java.io.OutputStream, java.util.zip.Deflater, int);
+    ctor public DeflaterOutputStream(java.io.OutputStream, java.util.zip.Deflater, boolean);
+    ctor public DeflaterOutputStream(java.io.OutputStream, java.util.zip.Deflater);
+    ctor public DeflaterOutputStream(java.io.OutputStream, boolean);
+    ctor public DeflaterOutputStream(java.io.OutputStream);
+    method protected void deflate() throws java.io.IOException;
+    method public void finish() throws java.io.IOException;
+    field protected byte[] buf;
+    field protected java.util.zip.Deflater def;
+  }
+
+  public class GZIPInputStream extends java.util.zip.InflaterInputStream {
+    ctor public GZIPInputStream(java.io.InputStream, int) throws java.io.IOException;
+    ctor public GZIPInputStream(java.io.InputStream) throws java.io.IOException;
+    field public static final int GZIP_MAGIC = 35615; // 0x8b1f
+    field protected java.util.zip.CRC32 crc;
+    field protected boolean eos;
+  }
+
+  public class GZIPOutputStream extends java.util.zip.DeflaterOutputStream {
+    ctor public GZIPOutputStream(java.io.OutputStream, int) throws java.io.IOException;
+    ctor public GZIPOutputStream(java.io.OutputStream, int, boolean) throws java.io.IOException;
+    ctor public GZIPOutputStream(java.io.OutputStream) throws java.io.IOException;
+    ctor public GZIPOutputStream(java.io.OutputStream, boolean) throws java.io.IOException;
+    field protected java.util.zip.CRC32 crc;
+  }
+
+  public class Inflater {
+    ctor public Inflater(boolean);
+    ctor public Inflater();
+    method public void end();
+    method protected void finalize();
+    method public boolean finished();
+    method public int getAdler();
+    method public long getBytesRead();
+    method public long getBytesWritten();
+    method public int getRemaining();
+    method public int getTotalIn();
+    method public int getTotalOut();
+    method public int inflate(byte[], int, int) throws java.util.zip.DataFormatException;
+    method public int inflate(byte[]) throws java.util.zip.DataFormatException;
+    method public boolean needsDictionary();
+    method public boolean needsInput();
+    method public void reset();
+    method public void setDictionary(byte[], int, int);
+    method public void setDictionary(byte[]);
+    method public void setInput(byte[], int, int);
+    method public void setInput(byte[]);
+  }
+
+  public class InflaterInputStream extends java.io.FilterInputStream {
+    ctor public InflaterInputStream(java.io.InputStream, java.util.zip.Inflater, int);
+    ctor public InflaterInputStream(java.io.InputStream, java.util.zip.Inflater);
+    ctor public InflaterInputStream(java.io.InputStream);
+    method protected void fill() throws java.io.IOException;
+    field protected byte[] buf;
+    field @Deprecated protected boolean closed;
+    field protected java.util.zip.Inflater inf;
+    field protected int len;
+  }
+
+  public class InflaterOutputStream extends java.io.FilterOutputStream {
+    ctor public InflaterOutputStream(java.io.OutputStream);
+    ctor public InflaterOutputStream(java.io.OutputStream, java.util.zip.Inflater);
+    ctor public InflaterOutputStream(java.io.OutputStream, java.util.zip.Inflater, int);
+    method public void finish() throws java.io.IOException;
+    field protected final byte[] buf;
+    field protected final java.util.zip.Inflater inf;
+  }
+
+  public class ZipEntry implements java.lang.Cloneable {
+    ctor public ZipEntry(String);
+    ctor public ZipEntry(java.util.zip.ZipEntry);
+    method public Object clone();
+    method public String getComment();
+    method public long getCompressedSize();
+    method public long getCrc();
+    method public java.nio.file.attribute.FileTime getCreationTime();
+    method public byte[] getExtra();
+    method public java.nio.file.attribute.FileTime getLastAccessTime();
+    method public java.nio.file.attribute.FileTime getLastModifiedTime();
+    method public int getMethod();
+    method public String getName();
+    method public long getSize();
+    method public long getTime();
+    method public boolean isDirectory();
+    method public void setComment(String);
+    method public void setCompressedSize(long);
+    method public void setCrc(long);
+    method public java.util.zip.ZipEntry setCreationTime(java.nio.file.attribute.FileTime);
+    method public void setExtra(byte[]);
+    method public java.util.zip.ZipEntry setLastAccessTime(java.nio.file.attribute.FileTime);
+    method public java.util.zip.ZipEntry setLastModifiedTime(java.nio.file.attribute.FileTime);
+    method public void setMethod(int);
+    method public void setSize(long);
+    method public void setTime(long);
+    field public static final int CENATT = 36; // 0x24
+    field public static final int CENATX = 38; // 0x26
+    field public static final int CENCOM = 32; // 0x20
+    field public static final int CENCRC = 16; // 0x10
+    field public static final int CENDSK = 34; // 0x22
+    field public static final int CENEXT = 30; // 0x1e
+    field public static final int CENFLG = 8; // 0x8
+    field public static final int CENHDR = 46; // 0x2e
+    field public static final int CENHOW = 10; // 0xa
+    field public static final int CENLEN = 24; // 0x18
+    field public static final int CENNAM = 28; // 0x1c
+    field public static final int CENOFF = 42; // 0x2a
+    field public static final long CENSIG = 33639248L; // 0x2014b50L
+    field public static final int CENSIZ = 20; // 0x14
+    field public static final int CENTIM = 12; // 0xc
+    field public static final int CENVEM = 4; // 0x4
+    field public static final int CENVER = 6; // 0x6
+    field public static final int DEFLATED = 8; // 0x8
+    field public static final int ENDCOM = 20; // 0x14
+    field public static final int ENDHDR = 22; // 0x16
+    field public static final int ENDOFF = 16; // 0x10
+    field public static final long ENDSIG = 101010256L; // 0x6054b50L
+    field public static final int ENDSIZ = 12; // 0xc
+    field public static final int ENDSUB = 8; // 0x8
+    field public static final int ENDTOT = 10; // 0xa
+    field public static final int EXTCRC = 4; // 0x4
+    field public static final int EXTHDR = 16; // 0x10
+    field public static final int EXTLEN = 12; // 0xc
+    field public static final long EXTSIG = 134695760L; // 0x8074b50L
+    field public static final int EXTSIZ = 8; // 0x8
+    field public static final int LOCCRC = 14; // 0xe
+    field public static final int LOCEXT = 28; // 0x1c
+    field public static final int LOCFLG = 6; // 0x6
+    field public static final int LOCHDR = 30; // 0x1e
+    field public static final int LOCHOW = 8; // 0x8
+    field public static final int LOCLEN = 22; // 0x16
+    field public static final int LOCNAM = 26; // 0x1a
+    field public static final long LOCSIG = 67324752L; // 0x4034b50L
+    field public static final int LOCSIZ = 18; // 0x12
+    field public static final int LOCTIM = 10; // 0xa
+    field public static final int LOCVER = 4; // 0x4
+    field public static final int STORED = 0; // 0x0
+  }
+
+  public class ZipError extends java.lang.InternalError {
+    ctor public ZipError(String);
+  }
+
+  public class ZipException extends java.io.IOException {
+    ctor public ZipException();
+    ctor public ZipException(String);
+  }
+
+  public class ZipFile implements java.io.Closeable {
+    ctor public ZipFile(String) throws java.io.IOException;
+    ctor public ZipFile(java.io.File, int) throws java.io.IOException;
+    ctor public ZipFile(java.io.File) throws java.io.IOException, java.util.zip.ZipException;
+    ctor public ZipFile(java.io.File, int, java.nio.charset.Charset) throws java.io.IOException;
+    ctor public ZipFile(String, java.nio.charset.Charset) throws java.io.IOException;
+    ctor public ZipFile(java.io.File, java.nio.charset.Charset) throws java.io.IOException;
+    method public void close() throws java.io.IOException;
+    method public java.util.Enumeration<? extends java.util.zip.ZipEntry> entries();
+    method protected void finalize() throws java.io.IOException;
+    method public String getComment();
+    method public java.util.zip.ZipEntry getEntry(String);
+    method public java.io.InputStream getInputStream(java.util.zip.ZipEntry) throws java.io.IOException;
+    method public String getName();
+    method public int size();
+    method public java.util.stream.Stream<? extends java.util.zip.ZipEntry> stream();
+    field public static final int CENATT = 36; // 0x24
+    field public static final int CENATX = 38; // 0x26
+    field public static final int CENCOM = 32; // 0x20
+    field public static final int CENCRC = 16; // 0x10
+    field public static final int CENDSK = 34; // 0x22
+    field public static final int CENEXT = 30; // 0x1e
+    field public static final int CENFLG = 8; // 0x8
+    field public static final int CENHDR = 46; // 0x2e
+    field public static final int CENHOW = 10; // 0xa
+    field public static final int CENLEN = 24; // 0x18
+    field public static final int CENNAM = 28; // 0x1c
+    field public static final int CENOFF = 42; // 0x2a
+    field public static final long CENSIG = 33639248L; // 0x2014b50L
+    field public static final int CENSIZ = 20; // 0x14
+    field public static final int CENTIM = 12; // 0xc
+    field public static final int CENVEM = 4; // 0x4
+    field public static final int CENVER = 6; // 0x6
+    field public static final int ENDCOM = 20; // 0x14
+    field public static final int ENDHDR = 22; // 0x16
+    field public static final int ENDOFF = 16; // 0x10
+    field public static final long ENDSIG = 101010256L; // 0x6054b50L
+    field public static final int ENDSIZ = 12; // 0xc
+    field public static final int ENDSUB = 8; // 0x8
+    field public static final int ENDTOT = 10; // 0xa
+    field public static final int EXTCRC = 4; // 0x4
+    field public static final int EXTHDR = 16; // 0x10
+    field public static final int EXTLEN = 12; // 0xc
+    field public static final long EXTSIG = 134695760L; // 0x8074b50L
+    field public static final int EXTSIZ = 8; // 0x8
+    field public static final int LOCCRC = 14; // 0xe
+    field public static final int LOCEXT = 28; // 0x1c
+    field public static final int LOCFLG = 6; // 0x6
+    field public static final int LOCHDR = 30; // 0x1e
+    field public static final int LOCHOW = 8; // 0x8
+    field public static final int LOCLEN = 22; // 0x16
+    field public static final int LOCNAM = 26; // 0x1a
+    field public static final long LOCSIG = 67324752L; // 0x4034b50L
+    field public static final int LOCSIZ = 18; // 0x12
+    field public static final int LOCTIM = 10; // 0xa
+    field public static final int LOCVER = 4; // 0x4
+    field public static final int OPEN_DELETE = 4; // 0x4
+    field public static final int OPEN_READ = 1; // 0x1
+  }
+
+  public class ZipInputStream extends java.util.zip.InflaterInputStream {
+    ctor public ZipInputStream(java.io.InputStream);
+    ctor public ZipInputStream(java.io.InputStream, java.nio.charset.Charset);
+    method public void closeEntry() throws java.io.IOException;
+    method protected java.util.zip.ZipEntry createZipEntry(String);
+    method public java.util.zip.ZipEntry getNextEntry() throws java.io.IOException;
+    field public static final int CENATT = 36; // 0x24
+    field public static final int CENATX = 38; // 0x26
+    field public static final int CENCOM = 32; // 0x20
+    field public static final int CENCRC = 16; // 0x10
+    field public static final int CENDSK = 34; // 0x22
+    field public static final int CENEXT = 30; // 0x1e
+    field public static final int CENFLG = 8; // 0x8
+    field public static final int CENHDR = 46; // 0x2e
+    field public static final int CENHOW = 10; // 0xa
+    field public static final int CENLEN = 24; // 0x18
+    field public static final int CENNAM = 28; // 0x1c
+    field public static final int CENOFF = 42; // 0x2a
+    field public static final long CENSIG = 33639248L; // 0x2014b50L
+    field public static final int CENSIZ = 20; // 0x14
+    field public static final int CENTIM = 12; // 0xc
+    field public static final int CENVEM = 4; // 0x4
+    field public static final int CENVER = 6; // 0x6
+    field public static final int ENDCOM = 20; // 0x14
+    field public static final int ENDHDR = 22; // 0x16
+    field public static final int ENDOFF = 16; // 0x10
+    field public static final long ENDSIG = 101010256L; // 0x6054b50L
+    field public static final int ENDSIZ = 12; // 0xc
+    field public static final int ENDSUB = 8; // 0x8
+    field public static final int ENDTOT = 10; // 0xa
+    field public static final int EXTCRC = 4; // 0x4
+    field public static final int EXTHDR = 16; // 0x10
+    field public static final int EXTLEN = 12; // 0xc
+    field public static final long EXTSIG = 134695760L; // 0x8074b50L
+    field public static final int EXTSIZ = 8; // 0x8
+    field public static final int LOCCRC = 14; // 0xe
+    field public static final int LOCEXT = 28; // 0x1c
+    field public static final int LOCFLG = 6; // 0x6
+    field public static final int LOCHDR = 30; // 0x1e
+    field public static final int LOCHOW = 8; // 0x8
+    field public static final int LOCLEN = 22; // 0x16
+    field public static final int LOCNAM = 26; // 0x1a
+    field public static final long LOCSIG = 67324752L; // 0x4034b50L
+    field public static final int LOCSIZ = 18; // 0x12
+    field public static final int LOCTIM = 10; // 0xa
+    field public static final int LOCVER = 4; // 0x4
+  }
+
+  public class ZipOutputStream extends java.util.zip.DeflaterOutputStream {
+    ctor public ZipOutputStream(java.io.OutputStream);
+    ctor public ZipOutputStream(java.io.OutputStream, java.nio.charset.Charset);
+    method public void closeEntry() throws java.io.IOException;
+    method public void putNextEntry(java.util.zip.ZipEntry) throws java.io.IOException;
+    method public void setComment(String);
+    method public void setLevel(int);
+    method public void setMethod(int);
+    field public static final int CENATT = 36; // 0x24
+    field public static final int CENATX = 38; // 0x26
+    field public static final int CENCOM = 32; // 0x20
+    field public static final int CENCRC = 16; // 0x10
+    field public static final int CENDSK = 34; // 0x22
+    field public static final int CENEXT = 30; // 0x1e
+    field public static final int CENFLG = 8; // 0x8
+    field public static final int CENHDR = 46; // 0x2e
+    field public static final int CENHOW = 10; // 0xa
+    field public static final int CENLEN = 24; // 0x18
+    field public static final int CENNAM = 28; // 0x1c
+    field public static final int CENOFF = 42; // 0x2a
+    field public static final long CENSIG = 33639248L; // 0x2014b50L
+    field public static final int CENSIZ = 20; // 0x14
+    field public static final int CENTIM = 12; // 0xc
+    field public static final int CENVEM = 4; // 0x4
+    field public static final int CENVER = 6; // 0x6
+    field public static final int DEFLATED = 8; // 0x8
+    field public static final int ENDCOM = 20; // 0x14
+    field public static final int ENDHDR = 22; // 0x16
+    field public static final int ENDOFF = 16; // 0x10
+    field public static final long ENDSIG = 101010256L; // 0x6054b50L
+    field public static final int ENDSIZ = 12; // 0xc
+    field public static final int ENDSUB = 8; // 0x8
+    field public static final int ENDTOT = 10; // 0xa
+    field public static final int EXTCRC = 4; // 0x4
+    field public static final int EXTHDR = 16; // 0x10
+    field public static final int EXTLEN = 12; // 0xc
+    field public static final long EXTSIG = 134695760L; // 0x8074b50L
+    field public static final int EXTSIZ = 8; // 0x8
+    field public static final int LOCCRC = 14; // 0xe
+    field public static final int LOCEXT = 28; // 0x1c
+    field public static final int LOCFLG = 6; // 0x6
+    field public static final int LOCHDR = 30; // 0x1e
+    field public static final int LOCHOW = 8; // 0x8
+    field public static final int LOCLEN = 22; // 0x16
+    field public static final int LOCNAM = 26; // 0x1a
+    field public static final long LOCSIG = 67324752L; // 0x4034b50L
+    field public static final int LOCSIZ = 18; // 0x12
+    field public static final int LOCTIM = 10; // 0xa
+    field public static final int LOCVER = 4; // 0x4
+    field public static final int STORED = 0; // 0x0
+  }
+
+}
+
+package javax.crypto {
+
+  public class AEADBadTagException extends javax.crypto.BadPaddingException {
+    ctor public AEADBadTagException();
+    ctor public AEADBadTagException(String);
+  }
+
+  public class BadPaddingException extends java.security.GeneralSecurityException {
+    ctor public BadPaddingException();
+    ctor public BadPaddingException(String);
+  }
+
+  public class Cipher {
+    ctor protected Cipher(javax.crypto.CipherSpi, java.security.Provider, String);
+    method public final byte[] doFinal() throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException;
+    method public final int doFinal(byte[], int) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException;
+    method public final byte[] doFinal(byte[]) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException;
+    method public final byte[] doFinal(byte[], int, int) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException;
+    method public final int doFinal(byte[], int, int, byte[]) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException;
+    method public final int doFinal(byte[], int, int, byte[], int) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException;
+    method public final int doFinal(java.nio.ByteBuffer, java.nio.ByteBuffer) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException;
+    method public final String getAlgorithm();
+    method public final int getBlockSize();
+    method public final javax.crypto.ExemptionMechanism getExemptionMechanism();
+    method public final byte[] getIV();
+    method public static final javax.crypto.Cipher getInstance(String) throws java.security.NoSuchAlgorithmException, javax.crypto.NoSuchPaddingException;
+    method public static final javax.crypto.Cipher getInstance(String, String) throws java.security.NoSuchAlgorithmException, javax.crypto.NoSuchPaddingException, java.security.NoSuchProviderException;
+    method public static final javax.crypto.Cipher getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException, javax.crypto.NoSuchPaddingException;
+    method public static final int getMaxAllowedKeyLength(String) throws java.security.NoSuchAlgorithmException;
+    method public static final java.security.spec.AlgorithmParameterSpec getMaxAllowedParameterSpec(String) throws java.security.NoSuchAlgorithmException;
+    method public final int getOutputSize(int);
+    method public final java.security.AlgorithmParameters getParameters();
+    method public final java.security.Provider getProvider();
+    method public final void init(int, java.security.Key) throws java.security.InvalidKeyException;
+    method public final void init(int, java.security.Key, java.security.SecureRandom) throws java.security.InvalidKeyException;
+    method public final void init(int, java.security.Key, java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
+    method public final void init(int, java.security.Key, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
+    method public final void init(int, java.security.Key, java.security.AlgorithmParameters) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
+    method public final void init(int, java.security.Key, java.security.AlgorithmParameters, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
+    method public final void init(int, java.security.cert.Certificate) throws java.security.InvalidKeyException;
+    method public final void init(int, java.security.cert.Certificate, java.security.SecureRandom) throws java.security.InvalidKeyException;
+    method public final java.security.Key unwrap(byte[], String, int) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
+    method public final byte[] update(byte[]);
+    method public final byte[] update(byte[], int, int);
+    method public final int update(byte[], int, int, byte[]) throws javax.crypto.ShortBufferException;
+    method public final int update(byte[], int, int, byte[], int) throws javax.crypto.ShortBufferException;
+    method public final int update(java.nio.ByteBuffer, java.nio.ByteBuffer) throws javax.crypto.ShortBufferException;
+    method public final void updateAAD(byte[]);
+    method public final void updateAAD(byte[], int, int);
+    method public final void updateAAD(java.nio.ByteBuffer);
+    method public final byte[] wrap(java.security.Key) throws javax.crypto.IllegalBlockSizeException, java.security.InvalidKeyException;
+    field public static final int DECRYPT_MODE = 2; // 0x2
+    field public static final int ENCRYPT_MODE = 1; // 0x1
+    field public static final int PRIVATE_KEY = 2; // 0x2
+    field public static final int PUBLIC_KEY = 1; // 0x1
+    field public static final int SECRET_KEY = 3; // 0x3
+    field public static final int UNWRAP_MODE = 4; // 0x4
+    field public static final int WRAP_MODE = 3; // 0x3
+  }
+
+  public class CipherInputStream extends java.io.FilterInputStream {
+    ctor public CipherInputStream(java.io.InputStream, javax.crypto.Cipher);
+    ctor protected CipherInputStream(java.io.InputStream);
+  }
+
+  public class CipherOutputStream extends java.io.FilterOutputStream {
+    ctor public CipherOutputStream(java.io.OutputStream, javax.crypto.Cipher);
+    ctor protected CipherOutputStream(java.io.OutputStream);
+  }
+
+  public abstract class CipherSpi {
+    ctor public CipherSpi();
+    method protected abstract byte[] engineDoFinal(byte[], int, int) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException;
+    method protected abstract int engineDoFinal(byte[], int, int, byte[], int) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException;
+    method protected int engineDoFinal(java.nio.ByteBuffer, java.nio.ByteBuffer) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException;
+    method protected abstract int engineGetBlockSize();
+    method protected abstract byte[] engineGetIV();
+    method protected int engineGetKeySize(java.security.Key) throws java.security.InvalidKeyException;
+    method protected abstract int engineGetOutputSize(int);
+    method protected abstract java.security.AlgorithmParameters engineGetParameters();
+    method protected abstract void engineInit(int, java.security.Key, java.security.SecureRandom) throws java.security.InvalidKeyException;
+    method protected abstract void engineInit(int, java.security.Key, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
+    method protected abstract void engineInit(int, java.security.Key, java.security.AlgorithmParameters, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
+    method protected abstract void engineSetMode(String) throws java.security.NoSuchAlgorithmException;
+    method protected abstract void engineSetPadding(String) throws javax.crypto.NoSuchPaddingException;
+    method protected java.security.Key engineUnwrap(byte[], String, int) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
+    method protected abstract byte[] engineUpdate(byte[], int, int);
+    method protected abstract int engineUpdate(byte[], int, int, byte[], int) throws javax.crypto.ShortBufferException;
+    method protected int engineUpdate(java.nio.ByteBuffer, java.nio.ByteBuffer) throws javax.crypto.ShortBufferException;
+    method protected void engineUpdateAAD(byte[], int, int);
+    method protected void engineUpdateAAD(java.nio.ByteBuffer);
+    method protected byte[] engineWrap(java.security.Key) throws javax.crypto.IllegalBlockSizeException, java.security.InvalidKeyException;
+  }
+
+  public class EncryptedPrivateKeyInfo {
+    ctor public EncryptedPrivateKeyInfo(byte[]) throws java.io.IOException;
+    ctor public EncryptedPrivateKeyInfo(String, byte[]) throws java.security.NoSuchAlgorithmException;
+    ctor public EncryptedPrivateKeyInfo(java.security.AlgorithmParameters, byte[]) throws java.security.NoSuchAlgorithmException;
+    method public String getAlgName();
+    method public java.security.AlgorithmParameters getAlgParameters();
+    method public byte[] getEncoded() throws java.io.IOException;
+    method public byte[] getEncryptedData();
+    method public java.security.spec.PKCS8EncodedKeySpec getKeySpec(javax.crypto.Cipher) throws java.security.spec.InvalidKeySpecException;
+    method public java.security.spec.PKCS8EncodedKeySpec getKeySpec(java.security.Key) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
+    method public java.security.spec.PKCS8EncodedKeySpec getKeySpec(java.security.Key, String) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+    method public java.security.spec.PKCS8EncodedKeySpec getKeySpec(java.security.Key, java.security.Provider) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
+  }
+
+  public class ExemptionMechanism {
+    ctor protected ExemptionMechanism(javax.crypto.ExemptionMechanismSpi, java.security.Provider, String);
+    method public final byte[] genExemptionBlob() throws javax.crypto.ExemptionMechanismException, java.lang.IllegalStateException;
+    method public final int genExemptionBlob(byte[]) throws javax.crypto.ExemptionMechanismException, java.lang.IllegalStateException, javax.crypto.ShortBufferException;
+    method public final int genExemptionBlob(byte[], int) throws javax.crypto.ExemptionMechanismException, java.lang.IllegalStateException, javax.crypto.ShortBufferException;
+    method public static final javax.crypto.ExemptionMechanism getInstance(String) throws java.security.NoSuchAlgorithmException;
+    method public static final javax.crypto.ExemptionMechanism getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+    method public static final javax.crypto.ExemptionMechanism getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+    method public final String getName();
+    method public final int getOutputSize(int) throws java.lang.IllegalStateException;
+    method public final java.security.Provider getProvider();
+    method public final void init(java.security.Key) throws javax.crypto.ExemptionMechanismException, java.security.InvalidKeyException;
+    method public final void init(java.security.Key, java.security.spec.AlgorithmParameterSpec) throws javax.crypto.ExemptionMechanismException, java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
+    method public final void init(java.security.Key, java.security.AlgorithmParameters) throws javax.crypto.ExemptionMechanismException, java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
+    method public final boolean isCryptoAllowed(java.security.Key) throws javax.crypto.ExemptionMechanismException;
+  }
+
+  public class ExemptionMechanismException extends java.security.GeneralSecurityException {
+    ctor public ExemptionMechanismException();
+    ctor public ExemptionMechanismException(String);
+  }
+
+  public abstract class ExemptionMechanismSpi {
+    ctor public ExemptionMechanismSpi();
+    method protected abstract byte[] engineGenExemptionBlob() throws javax.crypto.ExemptionMechanismException;
+    method protected abstract int engineGenExemptionBlob(byte[], int) throws javax.crypto.ExemptionMechanismException, javax.crypto.ShortBufferException;
+    method protected abstract int engineGetOutputSize(int);
+    method protected abstract void engineInit(java.security.Key) throws javax.crypto.ExemptionMechanismException, java.security.InvalidKeyException;
+    method protected abstract void engineInit(java.security.Key, java.security.spec.AlgorithmParameterSpec) throws javax.crypto.ExemptionMechanismException, java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
+    method protected abstract void engineInit(java.security.Key, java.security.AlgorithmParameters) throws javax.crypto.ExemptionMechanismException, java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
+  }
+
+  public class IllegalBlockSizeException extends java.security.GeneralSecurityException {
+    ctor public IllegalBlockSizeException();
+    ctor public IllegalBlockSizeException(String);
+  }
+
+  public class KeyAgreement {
+    ctor protected KeyAgreement(javax.crypto.KeyAgreementSpi, java.security.Provider, String);
+    method public final java.security.Key doPhase(java.security.Key, boolean) throws java.lang.IllegalStateException, java.security.InvalidKeyException;
+    method public final byte[] generateSecret() throws java.lang.IllegalStateException;
+    method public final int generateSecret(byte[], int) throws java.lang.IllegalStateException, javax.crypto.ShortBufferException;
+    method public final javax.crypto.SecretKey generateSecret(String) throws java.lang.IllegalStateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
+    method public final String getAlgorithm();
+    method public static final javax.crypto.KeyAgreement getInstance(String) throws java.security.NoSuchAlgorithmException;
+    method public static final javax.crypto.KeyAgreement getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+    method public static final javax.crypto.KeyAgreement getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+    method public final java.security.Provider getProvider();
+    method public final void init(java.security.Key) throws java.security.InvalidKeyException;
+    method public final void init(java.security.Key, java.security.SecureRandom) throws java.security.InvalidKeyException;
+    method public final void init(java.security.Key, java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
+    method public final void init(java.security.Key, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
+  }
+
+  public abstract class KeyAgreementSpi {
+    ctor public KeyAgreementSpi();
+    method protected abstract java.security.Key engineDoPhase(java.security.Key, boolean) throws java.lang.IllegalStateException, java.security.InvalidKeyException;
+    method protected abstract byte[] engineGenerateSecret() throws java.lang.IllegalStateException;
+    method protected abstract int engineGenerateSecret(byte[], int) throws java.lang.IllegalStateException, javax.crypto.ShortBufferException;
+    method protected abstract javax.crypto.SecretKey engineGenerateSecret(String) throws java.lang.IllegalStateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
+    method protected abstract void engineInit(java.security.Key, java.security.SecureRandom) throws java.security.InvalidKeyException;
+    method protected abstract void engineInit(java.security.Key, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
+  }
+
+  public class KeyGenerator {
+    ctor protected KeyGenerator(javax.crypto.KeyGeneratorSpi, java.security.Provider, String);
+    method public final javax.crypto.SecretKey generateKey();
+    method public final String getAlgorithm();
+    method public static final javax.crypto.KeyGenerator getInstance(String) throws java.security.NoSuchAlgorithmException;
+    method public static final javax.crypto.KeyGenerator getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+    method public static final javax.crypto.KeyGenerator getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+    method public final java.security.Provider getProvider();
+    method public final void init(java.security.SecureRandom);
+    method public final void init(java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException;
+    method public final void init(java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException;
+    method public final void init(int);
+    method public final void init(int, java.security.SecureRandom);
+  }
+
+  public abstract class KeyGeneratorSpi {
+    ctor public KeyGeneratorSpi();
+    method protected abstract javax.crypto.SecretKey engineGenerateKey();
+    method protected abstract void engineInit(java.security.SecureRandom);
+    method protected abstract void engineInit(java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException;
+    method protected abstract void engineInit(int, java.security.SecureRandom);
+  }
+
+  public class Mac implements java.lang.Cloneable {
+    ctor protected Mac(javax.crypto.MacSpi, java.security.Provider, String);
+    method public final Object clone() throws java.lang.CloneNotSupportedException;
+    method public final byte[] doFinal() throws java.lang.IllegalStateException;
+    method public final void doFinal(byte[], int) throws java.lang.IllegalStateException, javax.crypto.ShortBufferException;
+    method public final byte[] doFinal(byte[]) throws java.lang.IllegalStateException;
+    method public final String getAlgorithm();
+    method public static final javax.crypto.Mac getInstance(String) throws java.security.NoSuchAlgorithmException;
+    method public static final javax.crypto.Mac getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+    method public static final javax.crypto.Mac getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+    method public final int getMacLength();
+    method public final java.security.Provider getProvider();
+    method public final void init(java.security.Key) throws java.security.InvalidKeyException;
+    method public final void init(java.security.Key, java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
+    method public final void reset();
+    method public final void update(byte) throws java.lang.IllegalStateException;
+    method public final void update(byte[]) throws java.lang.IllegalStateException;
+    method public final void update(byte[], int, int) throws java.lang.IllegalStateException;
+    method public final void update(java.nio.ByteBuffer);
+  }
+
+  public abstract class MacSpi {
+    ctor public MacSpi();
+    method public Object clone() throws java.lang.CloneNotSupportedException;
+    method protected abstract byte[] engineDoFinal();
+    method protected abstract int engineGetMacLength();
+    method protected abstract void engineInit(java.security.Key, java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
+    method protected abstract void engineReset();
+    method protected abstract void engineUpdate(byte);
+    method protected abstract void engineUpdate(byte[], int, int);
+    method protected void engineUpdate(java.nio.ByteBuffer);
+  }
+
+  public class NoSuchPaddingException extends java.security.GeneralSecurityException {
+    ctor public NoSuchPaddingException();
+    ctor public NoSuchPaddingException(String);
+  }
+
+  public class NullCipher extends javax.crypto.Cipher {
+    ctor public NullCipher();
+  }
+
+  public class SealedObject implements java.io.Serializable {
+    ctor public SealedObject(java.io.Serializable, javax.crypto.Cipher) throws java.io.IOException, javax.crypto.IllegalBlockSizeException;
+    ctor protected SealedObject(javax.crypto.SealedObject);
+    method public final String getAlgorithm();
+    method public final Object getObject(java.security.Key) throws java.lang.ClassNotFoundException, java.io.IOException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
+    method public final Object getObject(javax.crypto.Cipher) throws javax.crypto.BadPaddingException, java.lang.ClassNotFoundException, java.io.IOException, javax.crypto.IllegalBlockSizeException;
+    method public final Object getObject(java.security.Key, String) throws java.lang.ClassNotFoundException, java.io.IOException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+    field protected byte[] encodedParams;
+  }
+
+  public interface SecretKey extends java.security.Key javax.security.auth.Destroyable {
+    field public static final long serialVersionUID = -4795878709595146952L; // 0xbd719db928b8f538L
+  }
+
+  public class SecretKeyFactory {
+    ctor protected SecretKeyFactory(javax.crypto.SecretKeyFactorySpi, java.security.Provider, String);
+    method public final javax.crypto.SecretKey generateSecret(java.security.spec.KeySpec) throws java.security.spec.InvalidKeySpecException;
+    method public final String getAlgorithm();
+    method public static final javax.crypto.SecretKeyFactory getInstance(String) throws java.security.NoSuchAlgorithmException;
+    method public static final javax.crypto.SecretKeyFactory getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+    method public static final javax.crypto.SecretKeyFactory getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+    method public final java.security.spec.KeySpec getKeySpec(javax.crypto.SecretKey, Class<?>) throws java.security.spec.InvalidKeySpecException;
+    method public final java.security.Provider getProvider();
+    method public final javax.crypto.SecretKey translateKey(javax.crypto.SecretKey) throws java.security.InvalidKeyException;
+  }
+
+  public abstract class SecretKeyFactorySpi {
+    ctor public SecretKeyFactorySpi();
+    method protected abstract javax.crypto.SecretKey engineGenerateSecret(java.security.spec.KeySpec) throws java.security.spec.InvalidKeySpecException;
+    method protected abstract java.security.spec.KeySpec engineGetKeySpec(javax.crypto.SecretKey, Class<?>) throws java.security.spec.InvalidKeySpecException;
+    method protected abstract javax.crypto.SecretKey engineTranslateKey(javax.crypto.SecretKey) throws java.security.InvalidKeyException;
+  }
+
+  public class ShortBufferException extends java.security.GeneralSecurityException {
+    ctor public ShortBufferException();
+    ctor public ShortBufferException(String);
+  }
+
+}
+
+package javax.crypto.interfaces {
+
+  public interface DHKey {
+    method public javax.crypto.spec.DHParameterSpec getParams();
+  }
+
+  public interface DHPrivateKey extends javax.crypto.interfaces.DHKey java.security.PrivateKey {
+    method public java.math.BigInteger getX();
+    field public static final long serialVersionUID = 2211791113380396553L; // 0x1eb1dc4c8e677e09L
+  }
+
+  public interface DHPublicKey extends javax.crypto.interfaces.DHKey java.security.PublicKey {
+    method public java.math.BigInteger getY();
+    field public static final long serialVersionUID = -6628103563352519193L; // 0xa4043eed23df4de7L
+  }
+
+  public interface PBEKey extends javax.crypto.SecretKey {
+    method public int getIterationCount();
+    method public char[] getPassword();
+    method public byte[] getSalt();
+    field public static final long serialVersionUID = -1430015993304333921L; // 0xec279007d7f7c19fL
+  }
+
+}
+
+package javax.crypto.spec {
+
+  public class DESKeySpec implements java.security.spec.KeySpec {
+    ctor public DESKeySpec(byte[]) throws java.security.InvalidKeyException;
+    ctor public DESKeySpec(byte[], int) throws java.security.InvalidKeyException;
+    method public byte[] getKey();
+    method public static boolean isParityAdjusted(byte[], int) throws java.security.InvalidKeyException;
+    method public static boolean isWeak(byte[], int) throws java.security.InvalidKeyException;
+    field public static final int DES_KEY_LEN = 8; // 0x8
+  }
+
+  public class DESedeKeySpec implements java.security.spec.KeySpec {
+    ctor public DESedeKeySpec(byte[]) throws java.security.InvalidKeyException;
+    ctor public DESedeKeySpec(byte[], int) throws java.security.InvalidKeyException;
+    method public byte[] getKey();
+    method public static boolean isParityAdjusted(byte[], int) throws java.security.InvalidKeyException;
+    field public static final int DES_EDE_KEY_LEN = 24; // 0x18
+  }
+
+  public class DHGenParameterSpec implements java.security.spec.AlgorithmParameterSpec {
+    ctor public DHGenParameterSpec(int, int);
+    method public int getExponentSize();
+    method public int getPrimeSize();
+  }
+
+  public class DHParameterSpec implements java.security.spec.AlgorithmParameterSpec {
+    ctor public DHParameterSpec(java.math.BigInteger, java.math.BigInteger);
+    ctor public DHParameterSpec(java.math.BigInteger, java.math.BigInteger, int);
+    method public java.math.BigInteger getG();
+    method public int getL();
+    method public java.math.BigInteger getP();
+  }
+
+  public class DHPrivateKeySpec implements java.security.spec.KeySpec {
+    ctor public DHPrivateKeySpec(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
+    method public java.math.BigInteger getG();
+    method public java.math.BigInteger getP();
+    method public java.math.BigInteger getX();
+  }
+
+  public class DHPublicKeySpec implements java.security.spec.KeySpec {
+    ctor public DHPublicKeySpec(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
+    method public java.math.BigInteger getG();
+    method public java.math.BigInteger getP();
+    method public java.math.BigInteger getY();
+  }
+
+  public class GCMParameterSpec implements java.security.spec.AlgorithmParameterSpec {
+    ctor public GCMParameterSpec(int, byte[]);
+    ctor public GCMParameterSpec(int, byte[], int, int);
+    method public byte[] getIV();
+    method public int getTLen();
+  }
+
+  public class IvParameterSpec implements java.security.spec.AlgorithmParameterSpec {
+    ctor public IvParameterSpec(byte[]);
+    ctor public IvParameterSpec(byte[], int, int);
+    method public byte[] getIV();
+  }
+
+  public class OAEPParameterSpec implements java.security.spec.AlgorithmParameterSpec {
+    ctor public OAEPParameterSpec(String, String, java.security.spec.AlgorithmParameterSpec, javax.crypto.spec.PSource);
+    method public String getDigestAlgorithm();
+    method public String getMGFAlgorithm();
+    method public java.security.spec.AlgorithmParameterSpec getMGFParameters();
+    method public javax.crypto.spec.PSource getPSource();
+    field public static final javax.crypto.spec.OAEPParameterSpec DEFAULT;
+  }
+
+  public class PBEKeySpec implements java.security.spec.KeySpec {
+    ctor public PBEKeySpec(char[]);
+    ctor public PBEKeySpec(char[], byte[], int, int);
+    ctor public PBEKeySpec(char[], byte[], int);
+    method public final void clearPassword();
+    method public final int getIterationCount();
+    method public final int getKeyLength();
+    method public final char[] getPassword();
+    method public final byte[] getSalt();
+  }
+
+  public class PBEParameterSpec implements java.security.spec.AlgorithmParameterSpec {
+    ctor public PBEParameterSpec(byte[], int);
+    ctor public PBEParameterSpec(byte[], int, java.security.spec.AlgorithmParameterSpec);
+    method public int getIterationCount();
+    method public java.security.spec.AlgorithmParameterSpec getParameterSpec();
+    method public byte[] getSalt();
+  }
+
+  public class PSource {
+    ctor protected PSource(String);
+    method public String getAlgorithm();
+  }
+
+  public static final class PSource.PSpecified extends javax.crypto.spec.PSource {
+    ctor public PSource.PSpecified(byte[]);
+    method public byte[] getValue();
+    field public static final javax.crypto.spec.PSource.PSpecified DEFAULT;
+  }
+
+  public class RC2ParameterSpec implements java.security.spec.AlgorithmParameterSpec {
+    ctor public RC2ParameterSpec(int);
+    ctor public RC2ParameterSpec(int, byte[]);
+    ctor public RC2ParameterSpec(int, byte[], int);
+    method public int getEffectiveKeyBits();
+    method public byte[] getIV();
+  }
+
+  public class RC5ParameterSpec implements java.security.spec.AlgorithmParameterSpec {
+    ctor public RC5ParameterSpec(int, int, int);
+    ctor public RC5ParameterSpec(int, int, int, byte[]);
+    ctor public RC5ParameterSpec(int, int, int, byte[], int);
+    method public byte[] getIV();
+    method public int getRounds();
+    method public int getVersion();
+    method public int getWordSize();
+  }
+
+  public class SecretKeySpec implements java.security.spec.KeySpec javax.crypto.SecretKey {
+    ctor public SecretKeySpec(byte[], String);
+    ctor public SecretKeySpec(byte[], int, int, String);
+    method public String getAlgorithm();
+    method public byte[] getEncoded();
+    method public String getFormat();
+  }
+
+}
+
+package javax.microedition.khronos.egl {
+
+  public interface EGL {
+  }
+
+  public interface EGL10 extends javax.microedition.khronos.egl.EGL {
+    method public boolean eglChooseConfig(javax.microedition.khronos.egl.EGLDisplay, int[], javax.microedition.khronos.egl.EGLConfig[], int, int[]);
+    method public boolean eglCopyBuffers(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface, Object);
+    method public javax.microedition.khronos.egl.EGLContext eglCreateContext(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, javax.microedition.khronos.egl.EGLContext, int[]);
+    method public javax.microedition.khronos.egl.EGLSurface eglCreatePbufferSurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, int[]);
+    method @Deprecated public javax.microedition.khronos.egl.EGLSurface eglCreatePixmapSurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, Object, int[]);
+    method public javax.microedition.khronos.egl.EGLSurface eglCreateWindowSurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, Object, int[]);
+    method public boolean eglDestroyContext(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLContext);
+    method public boolean eglDestroySurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface);
+    method public boolean eglGetConfigAttrib(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, int, int[]);
+    method public boolean eglGetConfigs(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig[], int, int[]);
+    method public javax.microedition.khronos.egl.EGLContext eglGetCurrentContext();
+    method public javax.microedition.khronos.egl.EGLDisplay eglGetCurrentDisplay();
+    method public javax.microedition.khronos.egl.EGLSurface eglGetCurrentSurface(int);
+    method public javax.microedition.khronos.egl.EGLDisplay eglGetDisplay(Object);
+    method public int eglGetError();
+    method public boolean eglInitialize(javax.microedition.khronos.egl.EGLDisplay, int[]);
+    method public boolean eglMakeCurrent(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface, javax.microedition.khronos.egl.EGLSurface, javax.microedition.khronos.egl.EGLContext);
+    method public boolean eglQueryContext(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLContext, int, int[]);
+    method public String eglQueryString(javax.microedition.khronos.egl.EGLDisplay, int);
+    method public boolean eglQuerySurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface, int, int[]);
+    method public boolean eglSwapBuffers(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface);
+    method public boolean eglTerminate(javax.microedition.khronos.egl.EGLDisplay);
+    method public boolean eglWaitGL();
+    method public boolean eglWaitNative(int, Object);
+    field public static final int EGL_ALPHA_FORMAT = 12424; // 0x3088
+    field public static final int EGL_ALPHA_MASK_SIZE = 12350; // 0x303e
+    field public static final int EGL_ALPHA_SIZE = 12321; // 0x3021
+    field public static final int EGL_BAD_ACCESS = 12290; // 0x3002
+    field public static final int EGL_BAD_ALLOC = 12291; // 0x3003
+    field public static final int EGL_BAD_ATTRIBUTE = 12292; // 0x3004
+    field public static final int EGL_BAD_CONFIG = 12293; // 0x3005
+    field public static final int EGL_BAD_CONTEXT = 12294; // 0x3006
+    field public static final int EGL_BAD_CURRENT_SURFACE = 12295; // 0x3007
+    field public static final int EGL_BAD_DISPLAY = 12296; // 0x3008
+    field public static final int EGL_BAD_MATCH = 12297; // 0x3009
+    field public static final int EGL_BAD_NATIVE_PIXMAP = 12298; // 0x300a
+    field public static final int EGL_BAD_NATIVE_WINDOW = 12299; // 0x300b
+    field public static final int EGL_BAD_PARAMETER = 12300; // 0x300c
+    field public static final int EGL_BAD_SURFACE = 12301; // 0x300d
+    field public static final int EGL_BLUE_SIZE = 12322; // 0x3022
+    field public static final int EGL_BUFFER_SIZE = 12320; // 0x3020
+    field public static final int EGL_COLORSPACE = 12423; // 0x3087
+    field public static final int EGL_COLOR_BUFFER_TYPE = 12351; // 0x303f
+    field public static final int EGL_CONFIG_CAVEAT = 12327; // 0x3027
+    field public static final int EGL_CONFIG_ID = 12328; // 0x3028
+    field public static final int EGL_CORE_NATIVE_ENGINE = 12379; // 0x305b
+    field public static final Object EGL_DEFAULT_DISPLAY;
+    field public static final int EGL_DEPTH_SIZE = 12325; // 0x3025
+    field public static final int EGL_DONT_CARE = -1; // 0xffffffff
+    field public static final int EGL_DRAW = 12377; // 0x3059
+    field public static final int EGL_EXTENSIONS = 12373; // 0x3055
+    field public static final int EGL_GREEN_SIZE = 12323; // 0x3023
+    field public static final int EGL_HEIGHT = 12374; // 0x3056
+    field public static final int EGL_HORIZONTAL_RESOLUTION = 12432; // 0x3090
+    field public static final int EGL_LARGEST_PBUFFER = 12376; // 0x3058
+    field public static final int EGL_LEVEL = 12329; // 0x3029
+    field public static final int EGL_LUMINANCE_BUFFER = 12431; // 0x308f
+    field public static final int EGL_LUMINANCE_SIZE = 12349; // 0x303d
+    field public static final int EGL_MAX_PBUFFER_HEIGHT = 12330; // 0x302a
+    field public static final int EGL_MAX_PBUFFER_PIXELS = 12331; // 0x302b
+    field public static final int EGL_MAX_PBUFFER_WIDTH = 12332; // 0x302c
+    field public static final int EGL_NATIVE_RENDERABLE = 12333; // 0x302d
+    field public static final int EGL_NATIVE_VISUAL_ID = 12334; // 0x302e
+    field public static final int EGL_NATIVE_VISUAL_TYPE = 12335; // 0x302f
+    field public static final int EGL_NONE = 12344; // 0x3038
+    field public static final int EGL_NON_CONFORMANT_CONFIG = 12369; // 0x3051
+    field public static final int EGL_NOT_INITIALIZED = 12289; // 0x3001
+    field public static final javax.microedition.khronos.egl.EGLContext EGL_NO_CONTEXT;
+    field public static final javax.microedition.khronos.egl.EGLDisplay EGL_NO_DISPLAY;
+    field public static final javax.microedition.khronos.egl.EGLSurface EGL_NO_SURFACE;
+    field public static final int EGL_PBUFFER_BIT = 1; // 0x1
+    field public static final int EGL_PIXEL_ASPECT_RATIO = 12434; // 0x3092
+    field public static final int EGL_PIXMAP_BIT = 2; // 0x2
+    field public static final int EGL_READ = 12378; // 0x305a
+    field public static final int EGL_RED_SIZE = 12324; // 0x3024
+    field public static final int EGL_RENDERABLE_TYPE = 12352; // 0x3040
+    field public static final int EGL_RENDER_BUFFER = 12422; // 0x3086
+    field public static final int EGL_RGB_BUFFER = 12430; // 0x308e
+    field public static final int EGL_SAMPLES = 12337; // 0x3031
+    field public static final int EGL_SAMPLE_BUFFERS = 12338; // 0x3032
+    field public static final int EGL_SINGLE_BUFFER = 12421; // 0x3085
+    field public static final int EGL_SLOW_CONFIG = 12368; // 0x3050
+    field public static final int EGL_STENCIL_SIZE = 12326; // 0x3026
+    field public static final int EGL_SUCCESS = 12288; // 0x3000
+    field public static final int EGL_SURFACE_TYPE = 12339; // 0x3033
+    field public static final int EGL_TRANSPARENT_BLUE_VALUE = 12341; // 0x3035
+    field public static final int EGL_TRANSPARENT_GREEN_VALUE = 12342; // 0x3036
+    field public static final int EGL_TRANSPARENT_RED_VALUE = 12343; // 0x3037
+    field public static final int EGL_TRANSPARENT_RGB = 12370; // 0x3052
+    field public static final int EGL_TRANSPARENT_TYPE = 12340; // 0x3034
+    field public static final int EGL_VENDOR = 12371; // 0x3053
+    field public static final int EGL_VERSION = 12372; // 0x3054
+    field public static final int EGL_VERTICAL_RESOLUTION = 12433; // 0x3091
+    field public static final int EGL_WIDTH = 12375; // 0x3057
+    field public static final int EGL_WINDOW_BIT = 4; // 0x4
+  }
+
+  public interface EGL11 extends javax.microedition.khronos.egl.EGL10 {
+    field public static final int EGL_CONTEXT_LOST = 12302; // 0x300e
+  }
+
+  public abstract class EGLConfig {
+    ctor public EGLConfig();
+  }
+
+  public abstract class EGLContext {
+    ctor public EGLContext();
+    method public static javax.microedition.khronos.egl.EGL getEGL();
+    method public abstract javax.microedition.khronos.opengles.GL getGL();
+  }
+
+  public abstract class EGLDisplay {
+    ctor public EGLDisplay();
+  }
+
+  public abstract class EGLSurface {
+    ctor public EGLSurface();
+  }
+
+}
+
+package javax.microedition.khronos.opengles {
+
+  public interface GL {
+  }
+
+  public interface GL10 extends javax.microedition.khronos.opengles.GL {
+    method public void glActiveTexture(int);
+    method public void glAlphaFunc(int, float);
+    method public void glAlphaFuncx(int, int);
+    method public void glBindTexture(int, int);
+    method public void glBlendFunc(int, int);
+    method public void glClear(int);
+    method public void glClearColor(float, float, float, float);
+    method public void glClearColorx(int, int, int, int);
+    method public void glClearDepthf(float);
+    method public void glClearDepthx(int);
+    method public void glClearStencil(int);
+    method public void glClientActiveTexture(int);
+    method public void glColor4f(float, float, float, float);
+    method public void glColor4x(int, int, int, int);
+    method public void glColorMask(boolean, boolean, boolean, boolean);
+    method public void glColorPointer(int, int, int, java.nio.Buffer);
+    method public void glCompressedTexImage2D(int, int, int, int, int, int, int, java.nio.Buffer);
+    method public void glCompressedTexSubImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
+    method public void glCopyTexImage2D(int, int, int, int, int, int, int, int);
+    method public void glCopyTexSubImage2D(int, int, int, int, int, int, int, int);
+    method public void glCullFace(int);
+    method public void glDeleteTextures(int, int[], int);
+    method public void glDeleteTextures(int, java.nio.IntBuffer);
+    method public void glDepthFunc(int);
+    method public void glDepthMask(boolean);
+    method public void glDepthRangef(float, float);
+    method public void glDepthRangex(int, int);
+    method public void glDisable(int);
+    method public void glDisableClientState(int);
+    method public void glDrawArrays(int, int, int);
+    method public void glDrawElements(int, int, int, java.nio.Buffer);
+    method public void glEnable(int);
+    method public void glEnableClientState(int);
+    method public void glFinish();
+    method public void glFlush();
+    method public void glFogf(int, float);
+    method public void glFogfv(int, float[], int);
+    method public void glFogfv(int, java.nio.FloatBuffer);
+    method public void glFogx(int, int);
+    method public void glFogxv(int, int[], int);
+    method public void glFogxv(int, java.nio.IntBuffer);
+    method public void glFrontFace(int);
+    method public void glFrustumf(float, float, float, float, float, float);
+    method public void glFrustumx(int, int, int, int, int, int);
+    method public void glGenTextures(int, int[], int);
+    method public void glGenTextures(int, java.nio.IntBuffer);
+    method public int glGetError();
+    method public void glGetIntegerv(int, int[], int);
+    method public void glGetIntegerv(int, java.nio.IntBuffer);
+    method public String glGetString(int);
+    method public void glHint(int, int);
+    method public void glLightModelf(int, float);
+    method public void glLightModelfv(int, float[], int);
+    method public void glLightModelfv(int, java.nio.FloatBuffer);
+    method public void glLightModelx(int, int);
+    method public void glLightModelxv(int, int[], int);
+    method public void glLightModelxv(int, java.nio.IntBuffer);
+    method public void glLightf(int, int, float);
+    method public void glLightfv(int, int, float[], int);
+    method public void glLightfv(int, int, java.nio.FloatBuffer);
+    method public void glLightx(int, int, int);
+    method public void glLightxv(int, int, int[], int);
+    method public void glLightxv(int, int, java.nio.IntBuffer);
+    method public void glLineWidth(float);
+    method public void glLineWidthx(int);
+    method public void glLoadIdentity();
+    method public void glLoadMatrixf(float[], int);
+    method public void glLoadMatrixf(java.nio.FloatBuffer);
+    method public void glLoadMatrixx(int[], int);
+    method public void glLoadMatrixx(java.nio.IntBuffer);
+    method public void glLogicOp(int);
+    method public void glMaterialf(int, int, float);
+    method public void glMaterialfv(int, int, float[], int);
+    method public void glMaterialfv(int, int, java.nio.FloatBuffer);
+    method public void glMaterialx(int, int, int);
+    method public void glMaterialxv(int, int, int[], int);
+    method public void glMaterialxv(int, int, java.nio.IntBuffer);
+    method public void glMatrixMode(int);
+    method public void glMultMatrixf(float[], int);
+    method public void glMultMatrixf(java.nio.FloatBuffer);
+    method public void glMultMatrixx(int[], int);
+    method public void glMultMatrixx(java.nio.IntBuffer);
+    method public void glMultiTexCoord4f(int, float, float, float, float);
+    method public void glMultiTexCoord4x(int, int, int, int, int);
+    method public void glNormal3f(float, float, float);
+    method public void glNormal3x(int, int, int);
+    method public void glNormalPointer(int, int, java.nio.Buffer);
+    method public void glOrthof(float, float, float, float, float, float);
+    method public void glOrthox(int, int, int, int, int, int);
+    method public void glPixelStorei(int, int);
+    method public void glPointSize(float);
+    method public void glPointSizex(int);
+    method public void glPolygonOffset(float, float);
+    method public void glPolygonOffsetx(int, int);
+    method public void glPopMatrix();
+    method public void glPushMatrix();
+    method public void glReadPixels(int, int, int, int, int, int, java.nio.Buffer);
+    method public void glRotatef(float, float, float, float);
+    method public void glRotatex(int, int, int, int);
+    method public void glSampleCoverage(float, boolean);
+    method public void glSampleCoveragex(int, boolean);
+    method public void glScalef(float, float, float);
+    method public void glScalex(int, int, int);
+    method public void glScissor(int, int, int, int);
+    method public void glShadeModel(int);
+    method public void glStencilFunc(int, int, int);
+    method public void glStencilMask(int);
+    method public void glStencilOp(int, int, int);
+    method public void glTexCoordPointer(int, int, int, java.nio.Buffer);
+    method public void glTexEnvf(int, int, float);
+    method public void glTexEnvfv(int, int, float[], int);
+    method public void glTexEnvfv(int, int, java.nio.FloatBuffer);
+    method public void glTexEnvx(int, int, int);
+    method public void glTexEnvxv(int, int, int[], int);
+    method public void glTexEnvxv(int, int, java.nio.IntBuffer);
+    method public void glTexImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
+    method public void glTexParameterf(int, int, float);
+    method public void glTexParameterx(int, int, int);
+    method public void glTexSubImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
+    method public void glTranslatef(float, float, float);
+    method public void glTranslatex(int, int, int);
+    method public void glVertexPointer(int, int, int, java.nio.Buffer);
+    method public void glViewport(int, int, int, int);
+    field public static final int GL_ADD = 260; // 0x104
+    field public static final int GL_ALIASED_LINE_WIDTH_RANGE = 33902; // 0x846e
+    field public static final int GL_ALIASED_POINT_SIZE_RANGE = 33901; // 0x846d
+    field public static final int GL_ALPHA = 6406; // 0x1906
+    field public static final int GL_ALPHA_BITS = 3413; // 0xd55
+    field public static final int GL_ALPHA_TEST = 3008; // 0xbc0
+    field public static final int GL_ALWAYS = 519; // 0x207
+    field public static final int GL_AMBIENT = 4608; // 0x1200
+    field public static final int GL_AMBIENT_AND_DIFFUSE = 5634; // 0x1602
+    field public static final int GL_AND = 5377; // 0x1501
+    field public static final int GL_AND_INVERTED = 5380; // 0x1504
+    field public static final int GL_AND_REVERSE = 5378; // 0x1502
+    field public static final int GL_BACK = 1029; // 0x405
+    field public static final int GL_BLEND = 3042; // 0xbe2
+    field public static final int GL_BLUE_BITS = 3412; // 0xd54
+    field public static final int GL_BYTE = 5120; // 0x1400
+    field public static final int GL_CCW = 2305; // 0x901
+    field public static final int GL_CLAMP_TO_EDGE = 33071; // 0x812f
+    field public static final int GL_CLEAR = 5376; // 0x1500
+    field public static final int GL_COLOR_ARRAY = 32886; // 0x8076
+    field public static final int GL_COLOR_BUFFER_BIT = 16384; // 0x4000
+    field public static final int GL_COLOR_LOGIC_OP = 3058; // 0xbf2
+    field public static final int GL_COLOR_MATERIAL = 2903; // 0xb57
+    field public static final int GL_COMPRESSED_TEXTURE_FORMATS = 34467; // 0x86a3
+    field public static final int GL_CONSTANT_ATTENUATION = 4615; // 0x1207
+    field public static final int GL_COPY = 5379; // 0x1503
+    field public static final int GL_COPY_INVERTED = 5388; // 0x150c
+    field public static final int GL_CULL_FACE = 2884; // 0xb44
+    field public static final int GL_CW = 2304; // 0x900
+    field public static final int GL_DECAL = 8449; // 0x2101
+    field public static final int GL_DECR = 7683; // 0x1e03
+    field public static final int GL_DEPTH_BITS = 3414; // 0xd56
+    field public static final int GL_DEPTH_BUFFER_BIT = 256; // 0x100
+    field public static final int GL_DEPTH_TEST = 2929; // 0xb71
+    field public static final int GL_DIFFUSE = 4609; // 0x1201
+    field public static final int GL_DITHER = 3024; // 0xbd0
+    field public static final int GL_DONT_CARE = 4352; // 0x1100
+    field public static final int GL_DST_ALPHA = 772; // 0x304
+    field public static final int GL_DST_COLOR = 774; // 0x306
+    field public static final int GL_EMISSION = 5632; // 0x1600
+    field public static final int GL_EQUAL = 514; // 0x202
+    field public static final int GL_EQUIV = 5385; // 0x1509
+    field public static final int GL_EXP = 2048; // 0x800
+    field public static final int GL_EXP2 = 2049; // 0x801
+    field public static final int GL_EXTENSIONS = 7939; // 0x1f03
+    field public static final int GL_FALSE = 0; // 0x0
+    field public static final int GL_FASTEST = 4353; // 0x1101
+    field public static final int GL_FIXED = 5132; // 0x140c
+    field public static final int GL_FLAT = 7424; // 0x1d00
+    field public static final int GL_FLOAT = 5126; // 0x1406
+    field public static final int GL_FOG = 2912; // 0xb60
+    field public static final int GL_FOG_COLOR = 2918; // 0xb66
+    field public static final int GL_FOG_DENSITY = 2914; // 0xb62
+    field public static final int GL_FOG_END = 2916; // 0xb64
+    field public static final int GL_FOG_HINT = 3156; // 0xc54
+    field public static final int GL_FOG_MODE = 2917; // 0xb65
+    field public static final int GL_FOG_START = 2915; // 0xb63
+    field public static final int GL_FRONT = 1028; // 0x404
+    field public static final int GL_FRONT_AND_BACK = 1032; // 0x408
+    field public static final int GL_GEQUAL = 518; // 0x206
+    field public static final int GL_GREATER = 516; // 0x204
+    field public static final int GL_GREEN_BITS = 3411; // 0xd53
+    field public static final int GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES = 35739; // 0x8b9b
+    field public static final int GL_IMPLEMENTATION_COLOR_READ_TYPE_OES = 35738; // 0x8b9a
+    field public static final int GL_INCR = 7682; // 0x1e02
+    field public static final int GL_INVALID_ENUM = 1280; // 0x500
+    field public static final int GL_INVALID_OPERATION = 1282; // 0x502
+    field public static final int GL_INVALID_VALUE = 1281; // 0x501
+    field public static final int GL_INVERT = 5386; // 0x150a
+    field public static final int GL_KEEP = 7680; // 0x1e00
+    field public static final int GL_LEQUAL = 515; // 0x203
+    field public static final int GL_LESS = 513; // 0x201
+    field public static final int GL_LIGHT0 = 16384; // 0x4000
+    field public static final int GL_LIGHT1 = 16385; // 0x4001
+    field public static final int GL_LIGHT2 = 16386; // 0x4002
+    field public static final int GL_LIGHT3 = 16387; // 0x4003
+    field public static final int GL_LIGHT4 = 16388; // 0x4004
+    field public static final int GL_LIGHT5 = 16389; // 0x4005
+    field public static final int GL_LIGHT6 = 16390; // 0x4006
+    field public static final int GL_LIGHT7 = 16391; // 0x4007
+    field public static final int GL_LIGHTING = 2896; // 0xb50
+    field public static final int GL_LIGHT_MODEL_AMBIENT = 2899; // 0xb53
+    field public static final int GL_LIGHT_MODEL_TWO_SIDE = 2898; // 0xb52
+    field public static final int GL_LINEAR = 9729; // 0x2601
+    field public static final int GL_LINEAR_ATTENUATION = 4616; // 0x1208
+    field public static final int GL_LINEAR_MIPMAP_LINEAR = 9987; // 0x2703
+    field public static final int GL_LINEAR_MIPMAP_NEAREST = 9985; // 0x2701
+    field public static final int GL_LINES = 1; // 0x1
+    field public static final int GL_LINE_LOOP = 2; // 0x2
+    field public static final int GL_LINE_SMOOTH = 2848; // 0xb20
+    field public static final int GL_LINE_SMOOTH_HINT = 3154; // 0xc52
+    field public static final int GL_LINE_STRIP = 3; // 0x3
+    field public static final int GL_LUMINANCE = 6409; // 0x1909
+    field public static final int GL_LUMINANCE_ALPHA = 6410; // 0x190a
+    field public static final int GL_MAX_ELEMENTS_INDICES = 33001; // 0x80e9
+    field public static final int GL_MAX_ELEMENTS_VERTICES = 33000; // 0x80e8
+    field public static final int GL_MAX_LIGHTS = 3377; // 0xd31
+    field public static final int GL_MAX_MODELVIEW_STACK_DEPTH = 3382; // 0xd36
+    field public static final int GL_MAX_PROJECTION_STACK_DEPTH = 3384; // 0xd38
+    field public static final int GL_MAX_TEXTURE_SIZE = 3379; // 0xd33
+    field public static final int GL_MAX_TEXTURE_STACK_DEPTH = 3385; // 0xd39
+    field public static final int GL_MAX_TEXTURE_UNITS = 34018; // 0x84e2
+    field public static final int GL_MAX_VIEWPORT_DIMS = 3386; // 0xd3a
+    field public static final int GL_MODELVIEW = 5888; // 0x1700
+    field public static final int GL_MODULATE = 8448; // 0x2100
+    field public static final int GL_MULTISAMPLE = 32925; // 0x809d
+    field public static final int GL_NAND = 5390; // 0x150e
+    field public static final int GL_NEAREST = 9728; // 0x2600
+    field public static final int GL_NEAREST_MIPMAP_LINEAR = 9986; // 0x2702
+    field public static final int GL_NEAREST_MIPMAP_NEAREST = 9984; // 0x2700
+    field public static final int GL_NEVER = 512; // 0x200
+    field public static final int GL_NICEST = 4354; // 0x1102
+    field public static final int GL_NOOP = 5381; // 0x1505
+    field public static final int GL_NOR = 5384; // 0x1508
+    field public static final int GL_NORMALIZE = 2977; // 0xba1
+    field public static final int GL_NORMAL_ARRAY = 32885; // 0x8075
+    field public static final int GL_NOTEQUAL = 517; // 0x205
+    field public static final int GL_NO_ERROR = 0; // 0x0
+    field public static final int GL_NUM_COMPRESSED_TEXTURE_FORMATS = 34466; // 0x86a2
+    field public static final int GL_ONE = 1; // 0x1
+    field public static final int GL_ONE_MINUS_DST_ALPHA = 773; // 0x305
+    field public static final int GL_ONE_MINUS_DST_COLOR = 775; // 0x307
+    field public static final int GL_ONE_MINUS_SRC_ALPHA = 771; // 0x303
+    field public static final int GL_ONE_MINUS_SRC_COLOR = 769; // 0x301
+    field public static final int GL_OR = 5383; // 0x1507
+    field public static final int GL_OR_INVERTED = 5389; // 0x150d
+    field public static final int GL_OR_REVERSE = 5387; // 0x150b
+    field public static final int GL_OUT_OF_MEMORY = 1285; // 0x505
+    field public static final int GL_PACK_ALIGNMENT = 3333; // 0xd05
+    field public static final int GL_PALETTE4_R5_G6_B5_OES = 35730; // 0x8b92
+    field public static final int GL_PALETTE4_RGB5_A1_OES = 35732; // 0x8b94
+    field public static final int GL_PALETTE4_RGB8_OES = 35728; // 0x8b90
+    field public static final int GL_PALETTE4_RGBA4_OES = 35731; // 0x8b93
+    field public static final int GL_PALETTE4_RGBA8_OES = 35729; // 0x8b91
+    field public static final int GL_PALETTE8_R5_G6_B5_OES = 35735; // 0x8b97
+    field public static final int GL_PALETTE8_RGB5_A1_OES = 35737; // 0x8b99
+    field public static final int GL_PALETTE8_RGB8_OES = 35733; // 0x8b95
+    field public static final int GL_PALETTE8_RGBA4_OES = 35736; // 0x8b98
+    field public static final int GL_PALETTE8_RGBA8_OES = 35734; // 0x8b96
+    field public static final int GL_PERSPECTIVE_CORRECTION_HINT = 3152; // 0xc50
+    field public static final int GL_POINTS = 0; // 0x0
+    field public static final int GL_POINT_FADE_THRESHOLD_SIZE = 33064; // 0x8128
+    field public static final int GL_POINT_SIZE = 2833; // 0xb11
+    field public static final int GL_POINT_SMOOTH = 2832; // 0xb10
+    field public static final int GL_POINT_SMOOTH_HINT = 3153; // 0xc51
+    field public static final int GL_POLYGON_OFFSET_FILL = 32823; // 0x8037
+    field public static final int GL_POLYGON_SMOOTH_HINT = 3155; // 0xc53
+    field public static final int GL_POSITION = 4611; // 0x1203
+    field public static final int GL_PROJECTION = 5889; // 0x1701
+    field public static final int GL_QUADRATIC_ATTENUATION = 4617; // 0x1209
+    field public static final int GL_RED_BITS = 3410; // 0xd52
+    field public static final int GL_RENDERER = 7937; // 0x1f01
+    field public static final int GL_REPEAT = 10497; // 0x2901
+    field public static final int GL_REPLACE = 7681; // 0x1e01
+    field public static final int GL_RESCALE_NORMAL = 32826; // 0x803a
+    field public static final int GL_RGB = 6407; // 0x1907
+    field public static final int GL_RGBA = 6408; // 0x1908
+    field public static final int GL_SAMPLE_ALPHA_TO_COVERAGE = 32926; // 0x809e
+    field public static final int GL_SAMPLE_ALPHA_TO_ONE = 32927; // 0x809f
+    field public static final int GL_SAMPLE_COVERAGE = 32928; // 0x80a0
+    field public static final int GL_SCISSOR_TEST = 3089; // 0xc11
+    field public static final int GL_SET = 5391; // 0x150f
+    field public static final int GL_SHININESS = 5633; // 0x1601
+    field public static final int GL_SHORT = 5122; // 0x1402
+    field public static final int GL_SMOOTH = 7425; // 0x1d01
+    field public static final int GL_SMOOTH_LINE_WIDTH_RANGE = 2850; // 0xb22
+    field public static final int GL_SMOOTH_POINT_SIZE_RANGE = 2834; // 0xb12
+    field public static final int GL_SPECULAR = 4610; // 0x1202
+    field public static final int GL_SPOT_CUTOFF = 4614; // 0x1206
+    field public static final int GL_SPOT_DIRECTION = 4612; // 0x1204
+    field public static final int GL_SPOT_EXPONENT = 4613; // 0x1205
+    field public static final int GL_SRC_ALPHA = 770; // 0x302
+    field public static final int GL_SRC_ALPHA_SATURATE = 776; // 0x308
+    field public static final int GL_SRC_COLOR = 768; // 0x300
+    field public static final int GL_STACK_OVERFLOW = 1283; // 0x503
+    field public static final int GL_STACK_UNDERFLOW = 1284; // 0x504
+    field public static final int GL_STENCIL_BITS = 3415; // 0xd57
+    field public static final int GL_STENCIL_BUFFER_BIT = 1024; // 0x400
+    field public static final int GL_STENCIL_TEST = 2960; // 0xb90
+    field public static final int GL_SUBPIXEL_BITS = 3408; // 0xd50
+    field public static final int GL_TEXTURE = 5890; // 0x1702
+    field public static final int GL_TEXTURE0 = 33984; // 0x84c0
+    field public static final int GL_TEXTURE1 = 33985; // 0x84c1
+    field public static final int GL_TEXTURE10 = 33994; // 0x84ca
+    field public static final int GL_TEXTURE11 = 33995; // 0x84cb
+    field public static final int GL_TEXTURE12 = 33996; // 0x84cc
+    field public static final int GL_TEXTURE13 = 33997; // 0x84cd
+    field public static final int GL_TEXTURE14 = 33998; // 0x84ce
+    field public static final int GL_TEXTURE15 = 33999; // 0x84cf
+    field public static final int GL_TEXTURE16 = 34000; // 0x84d0
+    field public static final int GL_TEXTURE17 = 34001; // 0x84d1
+    field public static final int GL_TEXTURE18 = 34002; // 0x84d2
+    field public static final int GL_TEXTURE19 = 34003; // 0x84d3
+    field public static final int GL_TEXTURE2 = 33986; // 0x84c2
+    field public static final int GL_TEXTURE20 = 34004; // 0x84d4
+    field public static final int GL_TEXTURE21 = 34005; // 0x84d5
+    field public static final int GL_TEXTURE22 = 34006; // 0x84d6
+    field public static final int GL_TEXTURE23 = 34007; // 0x84d7
+    field public static final int GL_TEXTURE24 = 34008; // 0x84d8
+    field public static final int GL_TEXTURE25 = 34009; // 0x84d9
+    field public static final int GL_TEXTURE26 = 34010; // 0x84da
+    field public static final int GL_TEXTURE27 = 34011; // 0x84db
+    field public static final int GL_TEXTURE28 = 34012; // 0x84dc
+    field public static final int GL_TEXTURE29 = 34013; // 0x84dd
+    field public static final int GL_TEXTURE3 = 33987; // 0x84c3
+    field public static final int GL_TEXTURE30 = 34014; // 0x84de
+    field public static final int GL_TEXTURE31 = 34015; // 0x84df
+    field public static final int GL_TEXTURE4 = 33988; // 0x84c4
+    field public static final int GL_TEXTURE5 = 33989; // 0x84c5
+    field public static final int GL_TEXTURE6 = 33990; // 0x84c6
+    field public static final int GL_TEXTURE7 = 33991; // 0x84c7
+    field public static final int GL_TEXTURE8 = 33992; // 0x84c8
+    field public static final int GL_TEXTURE9 = 33993; // 0x84c9
+    field public static final int GL_TEXTURE_2D = 3553; // 0xde1
+    field public static final int GL_TEXTURE_COORD_ARRAY = 32888; // 0x8078
+    field public static final int GL_TEXTURE_ENV = 8960; // 0x2300
+    field public static final int GL_TEXTURE_ENV_COLOR = 8705; // 0x2201
+    field public static final int GL_TEXTURE_ENV_MODE = 8704; // 0x2200
+    field public static final int GL_TEXTURE_MAG_FILTER = 10240; // 0x2800
+    field public static final int GL_TEXTURE_MIN_FILTER = 10241; // 0x2801
+    field public static final int GL_TEXTURE_WRAP_S = 10242; // 0x2802
+    field public static final int GL_TEXTURE_WRAP_T = 10243; // 0x2803
+    field public static final int GL_TRIANGLES = 4; // 0x4
+    field public static final int GL_TRIANGLE_FAN = 6; // 0x6
+    field public static final int GL_TRIANGLE_STRIP = 5; // 0x5
+    field public static final int GL_TRUE = 1; // 0x1
+    field public static final int GL_UNPACK_ALIGNMENT = 3317; // 0xcf5
+    field public static final int GL_UNSIGNED_BYTE = 5121; // 0x1401
+    field public static final int GL_UNSIGNED_SHORT = 5123; // 0x1403
+    field public static final int GL_UNSIGNED_SHORT_4_4_4_4 = 32819; // 0x8033
+    field public static final int GL_UNSIGNED_SHORT_5_5_5_1 = 32820; // 0x8034
+    field public static final int GL_UNSIGNED_SHORT_5_6_5 = 33635; // 0x8363
+    field public static final int GL_VENDOR = 7936; // 0x1f00
+    field public static final int GL_VERSION = 7938; // 0x1f02
+    field public static final int GL_VERTEX_ARRAY = 32884; // 0x8074
+    field public static final int GL_XOR = 5382; // 0x1506
+    field public static final int GL_ZERO = 0; // 0x0
+  }
+
+  public interface GL10Ext extends javax.microedition.khronos.opengles.GL {
+    method public int glQueryMatrixxOES(int[], int, int[], int);
+    method public int glQueryMatrixxOES(java.nio.IntBuffer, java.nio.IntBuffer);
+  }
+
+  public interface GL11 extends javax.microedition.khronos.opengles.GL10 {
+    method public void glBindBuffer(int, int);
+    method public void glBufferData(int, int, java.nio.Buffer, int);
+    method public void glBufferSubData(int, int, int, java.nio.Buffer);
+    method public void glClipPlanef(int, float[], int);
+    method public void glClipPlanef(int, java.nio.FloatBuffer);
+    method public void glClipPlanex(int, int[], int);
+    method public void glClipPlanex(int, java.nio.IntBuffer);
+    method public void glColor4ub(byte, byte, byte, byte);
+    method public void glColorPointer(int, int, int, int);
+    method public void glDeleteBuffers(int, int[], int);
+    method public void glDeleteBuffers(int, java.nio.IntBuffer);
+    method public void glDrawElements(int, int, int, int);
+    method public void glGenBuffers(int, int[], int);
+    method public void glGenBuffers(int, java.nio.IntBuffer);
+    method public void glGetBooleanv(int, boolean[], int);
+    method public void glGetBooleanv(int, java.nio.IntBuffer);
+    method public void glGetBufferParameteriv(int, int, int[], int);
+    method public void glGetBufferParameteriv(int, int, java.nio.IntBuffer);
+    method public void glGetClipPlanef(int, float[], int);
+    method public void glGetClipPlanef(int, java.nio.FloatBuffer);
+    method public void glGetClipPlanex(int, int[], int);
+    method public void glGetClipPlanex(int, java.nio.IntBuffer);
+    method public void glGetFixedv(int, int[], int);
+    method public void glGetFixedv(int, java.nio.IntBuffer);
+    method public void glGetFloatv(int, float[], int);
+    method public void glGetFloatv(int, java.nio.FloatBuffer);
+    method public void glGetLightfv(int, int, float[], int);
+    method public void glGetLightfv(int, int, java.nio.FloatBuffer);
+    method public void glGetLightxv(int, int, int[], int);
+    method public void glGetLightxv(int, int, java.nio.IntBuffer);
+    method public void glGetMaterialfv(int, int, float[], int);
+    method public void glGetMaterialfv(int, int, java.nio.FloatBuffer);
+    method public void glGetMaterialxv(int, int, int[], int);
+    method public void glGetMaterialxv(int, int, java.nio.IntBuffer);
+    method public void glGetPointerv(int, java.nio.Buffer[]);
+    method public void glGetTexEnviv(int, int, int[], int);
+    method public void glGetTexEnviv(int, int, java.nio.IntBuffer);
+    method public void glGetTexEnvxv(int, int, int[], int);
+    method public void glGetTexEnvxv(int, int, java.nio.IntBuffer);
+    method public void glGetTexParameterfv(int, int, float[], int);
+    method public void glGetTexParameterfv(int, int, java.nio.FloatBuffer);
+    method public void glGetTexParameteriv(int, int, int[], int);
+    method public void glGetTexParameteriv(int, int, java.nio.IntBuffer);
+    method public void glGetTexParameterxv(int, int, int[], int);
+    method public void glGetTexParameterxv(int, int, java.nio.IntBuffer);
+    method public boolean glIsBuffer(int);
+    method public boolean glIsEnabled(int);
+    method public boolean glIsTexture(int);
+    method public void glNormalPointer(int, int, int);
+    method public void glPointParameterf(int, float);
+    method public void glPointParameterfv(int, float[], int);
+    method public void glPointParameterfv(int, java.nio.FloatBuffer);
+    method public void glPointParameterx(int, int);
+    method public void glPointParameterxv(int, int[], int);
+    method public void glPointParameterxv(int, java.nio.IntBuffer);
+    method public void glPointSizePointerOES(int, int, java.nio.Buffer);
+    method public void glTexCoordPointer(int, int, int, int);
+    method public void glTexEnvi(int, int, int);
+    method public void glTexEnviv(int, int, int[], int);
+    method public void glTexEnviv(int, int, java.nio.IntBuffer);
+    method public void glTexParameterfv(int, int, float[], int);
+    method public void glTexParameterfv(int, int, java.nio.FloatBuffer);
+    method public void glTexParameteri(int, int, int);
+    method public void glTexParameteriv(int, int, int[], int);
+    method public void glTexParameteriv(int, int, java.nio.IntBuffer);
+    method public void glTexParameterxv(int, int, int[], int);
+    method public void glTexParameterxv(int, int, java.nio.IntBuffer);
+    method public void glVertexPointer(int, int, int, int);
+    field public static final int GL_ACTIVE_TEXTURE = 34016; // 0x84e0
+    field public static final int GL_ADD_SIGNED = 34164; // 0x8574
+    field public static final int GL_ALPHA_SCALE = 3356; // 0xd1c
+    field public static final int GL_ALPHA_TEST_FUNC = 3009; // 0xbc1
+    field public static final int GL_ALPHA_TEST_REF = 3010; // 0xbc2
+    field public static final int GL_ARRAY_BUFFER = 34962; // 0x8892
+    field public static final int GL_ARRAY_BUFFER_BINDING = 34964; // 0x8894
+    field public static final int GL_BLEND_DST = 3040; // 0xbe0
+    field public static final int GL_BLEND_SRC = 3041; // 0xbe1
+    field public static final int GL_BUFFER_ACCESS = 35003; // 0x88bb
+    field public static final int GL_BUFFER_SIZE = 34660; // 0x8764
+    field public static final int GL_BUFFER_USAGE = 34661; // 0x8765
+    field public static final int GL_CLIENT_ACTIVE_TEXTURE = 34017; // 0x84e1
+    field public static final int GL_CLIP_PLANE0 = 12288; // 0x3000
+    field public static final int GL_CLIP_PLANE1 = 12289; // 0x3001
+    field public static final int GL_CLIP_PLANE2 = 12290; // 0x3002
+    field public static final int GL_CLIP_PLANE3 = 12291; // 0x3003
+    field public static final int GL_CLIP_PLANE4 = 12292; // 0x3004
+    field public static final int GL_CLIP_PLANE5 = 12293; // 0x3005
+    field public static final int GL_COLOR_ARRAY_BUFFER_BINDING = 34968; // 0x8898
+    field public static final int GL_COLOR_ARRAY_POINTER = 32912; // 0x8090
+    field public static final int GL_COLOR_ARRAY_SIZE = 32897; // 0x8081
+    field public static final int GL_COLOR_ARRAY_STRIDE = 32899; // 0x8083
+    field public static final int GL_COLOR_ARRAY_TYPE = 32898; // 0x8082
+    field public static final int GL_COLOR_CLEAR_VALUE = 3106; // 0xc22
+    field public static final int GL_COLOR_WRITEMASK = 3107; // 0xc23
+    field public static final int GL_COMBINE = 34160; // 0x8570
+    field public static final int GL_COMBINE_ALPHA = 34162; // 0x8572
+    field public static final int GL_COMBINE_RGB = 34161; // 0x8571
+    field public static final int GL_CONSTANT = 34166; // 0x8576
+    field public static final int GL_COORD_REPLACE_OES = 34914; // 0x8862
+    field public static final int GL_CULL_FACE_MODE = 2885; // 0xb45
+    field public static final int GL_CURRENT_COLOR = 2816; // 0xb00
+    field public static final int GL_CURRENT_NORMAL = 2818; // 0xb02
+    field public static final int GL_CURRENT_TEXTURE_COORDS = 2819; // 0xb03
+    field public static final int GL_DEPTH_CLEAR_VALUE = 2931; // 0xb73
+    field public static final int GL_DEPTH_FUNC = 2932; // 0xb74
+    field public static final int GL_DEPTH_RANGE = 2928; // 0xb70
+    field public static final int GL_DEPTH_WRITEMASK = 2930; // 0xb72
+    field public static final int GL_DOT3_RGB = 34478; // 0x86ae
+    field public static final int GL_DOT3_RGBA = 34479; // 0x86af
+    field public static final int GL_DYNAMIC_DRAW = 35048; // 0x88e8
+    field public static final int GL_ELEMENT_ARRAY_BUFFER = 34963; // 0x8893
+    field public static final int GL_ELEMENT_ARRAY_BUFFER_BINDING = 34965; // 0x8895
+    field public static final int GL_FRONT_FACE = 2886; // 0xb46
+    field public static final int GL_GENERATE_MIPMAP = 33169; // 0x8191
+    field public static final int GL_GENERATE_MIPMAP_HINT = 33170; // 0x8192
+    field public static final int GL_INTERPOLATE = 34165; // 0x8575
+    field public static final int GL_LINE_WIDTH = 2849; // 0xb21
+    field public static final int GL_LOGIC_OP_MODE = 3056; // 0xbf0
+    field public static final int GL_MATRIX_MODE = 2976; // 0xba0
+    field public static final int GL_MAX_CLIP_PLANES = 3378; // 0xd32
+    field public static final int GL_MODELVIEW_MATRIX = 2982; // 0xba6
+    field public static final int GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES = 35213; // 0x898d
+    field public static final int GL_MODELVIEW_STACK_DEPTH = 2979; // 0xba3
+    field public static final int GL_NORMAL_ARRAY_BUFFER_BINDING = 34967; // 0x8897
+    field public static final int GL_NORMAL_ARRAY_POINTER = 32911; // 0x808f
+    field public static final int GL_NORMAL_ARRAY_STRIDE = 32895; // 0x807f
+    field public static final int GL_NORMAL_ARRAY_TYPE = 32894; // 0x807e
+    field public static final int GL_OPERAND0_ALPHA = 34200; // 0x8598
+    field public static final int GL_OPERAND0_RGB = 34192; // 0x8590
+    field public static final int GL_OPERAND1_ALPHA = 34201; // 0x8599
+    field public static final int GL_OPERAND1_RGB = 34193; // 0x8591
+    field public static final int GL_OPERAND2_ALPHA = 34202; // 0x859a
+    field public static final int GL_OPERAND2_RGB = 34194; // 0x8592
+    field public static final int GL_POINT_DISTANCE_ATTENUATION = 33065; // 0x8129
+    field public static final int GL_POINT_FADE_THRESHOLD_SIZE = 33064; // 0x8128
+    field public static final int GL_POINT_SIZE = 2833; // 0xb11
+    field public static final int GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES = 35743; // 0x8b9f
+    field public static final int GL_POINT_SIZE_ARRAY_OES = 35740; // 0x8b9c
+    field public static final int GL_POINT_SIZE_ARRAY_POINTER_OES = 35212; // 0x898c
+    field public static final int GL_POINT_SIZE_ARRAY_STRIDE_OES = 35211; // 0x898b
+    field public static final int GL_POINT_SIZE_ARRAY_TYPE_OES = 35210; // 0x898a
+    field public static final int GL_POINT_SIZE_MAX = 33063; // 0x8127
+    field public static final int GL_POINT_SIZE_MIN = 33062; // 0x8126
+    field public static final int GL_POINT_SPRITE_OES = 34913; // 0x8861
+    field public static final int GL_POLYGON_OFFSET_FACTOR = 32824; // 0x8038
+    field public static final int GL_POLYGON_OFFSET_UNITS = 10752; // 0x2a00
+    field public static final int GL_PREVIOUS = 34168; // 0x8578
+    field public static final int GL_PRIMARY_COLOR = 34167; // 0x8577
+    field public static final int GL_PROJECTION_MATRIX = 2983; // 0xba7
+    field public static final int GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES = 35214; // 0x898e
+    field public static final int GL_PROJECTION_STACK_DEPTH = 2980; // 0xba4
+    field public static final int GL_RGB_SCALE = 34163; // 0x8573
+    field public static final int GL_SAMPLES = 32937; // 0x80a9
+    field public static final int GL_SAMPLE_BUFFERS = 32936; // 0x80a8
+    field public static final int GL_SAMPLE_COVERAGE_INVERT = 32939; // 0x80ab
+    field public static final int GL_SAMPLE_COVERAGE_VALUE = 32938; // 0x80aa
+    field public static final int GL_SCISSOR_BOX = 3088; // 0xc10
+    field public static final int GL_SHADE_MODEL = 2900; // 0xb54
+    field public static final int GL_SRC0_ALPHA = 34184; // 0x8588
+    field public static final int GL_SRC0_RGB = 34176; // 0x8580
+    field public static final int GL_SRC1_ALPHA = 34185; // 0x8589
+    field public static final int GL_SRC1_RGB = 34177; // 0x8581
+    field public static final int GL_SRC2_ALPHA = 34186; // 0x858a
+    field public static final int GL_SRC2_RGB = 34178; // 0x8582
+    field public static final int GL_STATIC_DRAW = 35044; // 0x88e4
+    field public static final int GL_STENCIL_CLEAR_VALUE = 2961; // 0xb91
+    field public static final int GL_STENCIL_FAIL = 2964; // 0xb94
+    field public static final int GL_STENCIL_FUNC = 2962; // 0xb92
+    field public static final int GL_STENCIL_PASS_DEPTH_FAIL = 2965; // 0xb95
+    field public static final int GL_STENCIL_PASS_DEPTH_PASS = 2966; // 0xb96
+    field public static final int GL_STENCIL_REF = 2967; // 0xb97
+    field public static final int GL_STENCIL_VALUE_MASK = 2963; // 0xb93
+    field public static final int GL_STENCIL_WRITEMASK = 2968; // 0xb98
+    field public static final int GL_SUBTRACT = 34023; // 0x84e7
+    field public static final int GL_TEXTURE_BINDING_2D = 32873; // 0x8069
+    field public static final int GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING = 34970; // 0x889a
+    field public static final int GL_TEXTURE_COORD_ARRAY_POINTER = 32914; // 0x8092
+    field public static final int GL_TEXTURE_COORD_ARRAY_SIZE = 32904; // 0x8088
+    field public static final int GL_TEXTURE_COORD_ARRAY_STRIDE = 32906; // 0x808a
+    field public static final int GL_TEXTURE_COORD_ARRAY_TYPE = 32905; // 0x8089
+    field public static final int GL_TEXTURE_MATRIX = 2984; // 0xba8
+    field public static final int GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES = 35215; // 0x898f
+    field public static final int GL_TEXTURE_STACK_DEPTH = 2981; // 0xba5
+    field public static final int GL_VERTEX_ARRAY_BUFFER_BINDING = 34966; // 0x8896
+    field public static final int GL_VERTEX_ARRAY_POINTER = 32910; // 0x808e
+    field public static final int GL_VERTEX_ARRAY_SIZE = 32890; // 0x807a
+    field public static final int GL_VERTEX_ARRAY_STRIDE = 32892; // 0x807c
+    field public static final int GL_VERTEX_ARRAY_TYPE = 32891; // 0x807b
+    field public static final int GL_VIEWPORT = 2978; // 0xba2
+    field public static final int GL_WRITE_ONLY = 35001; // 0x88b9
+  }
+
+  public interface GL11Ext extends javax.microedition.khronos.opengles.GL {
+    method public void glCurrentPaletteMatrixOES(int);
+    method public void glDrawTexfOES(float, float, float, float, float);
+    method public void glDrawTexfvOES(float[], int);
+    method public void glDrawTexfvOES(java.nio.FloatBuffer);
+    method public void glDrawTexiOES(int, int, int, int, int);
+    method public void glDrawTexivOES(int[], int);
+    method public void glDrawTexivOES(java.nio.IntBuffer);
+    method public void glDrawTexsOES(short, short, short, short, short);
+    method public void glDrawTexsvOES(short[], int);
+    method public void glDrawTexsvOES(java.nio.ShortBuffer);
+    method public void glDrawTexxOES(int, int, int, int, int);
+    method public void glDrawTexxvOES(int[], int);
+    method public void glDrawTexxvOES(java.nio.IntBuffer);
+    method public void glEnable(int);
+    method public void glEnableClientState(int);
+    method public void glLoadPaletteFromModelViewMatrixOES();
+    method public void glMatrixIndexPointerOES(int, int, int, java.nio.Buffer);
+    method public void glMatrixIndexPointerOES(int, int, int, int);
+    method public void glTexParameterfv(int, int, float[], int);
+    method public void glWeightPointerOES(int, int, int, java.nio.Buffer);
+    method public void glWeightPointerOES(int, int, int, int);
+    field public static final int GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES = 35742; // 0x8b9e
+    field public static final int GL_MATRIX_INDEX_ARRAY_OES = 34884; // 0x8844
+    field public static final int GL_MATRIX_INDEX_ARRAY_POINTER_OES = 34889; // 0x8849
+    field public static final int GL_MATRIX_INDEX_ARRAY_SIZE_OES = 34886; // 0x8846
+    field public static final int GL_MATRIX_INDEX_ARRAY_STRIDE_OES = 34888; // 0x8848
+    field public static final int GL_MATRIX_INDEX_ARRAY_TYPE_OES = 34887; // 0x8847
+    field public static final int GL_MATRIX_PALETTE_OES = 34880; // 0x8840
+    field public static final int GL_MAX_PALETTE_MATRICES_OES = 34882; // 0x8842
+    field public static final int GL_MAX_VERTEX_UNITS_OES = 34468; // 0x86a4
+    field public static final int GL_TEXTURE_CROP_RECT_OES = 35741; // 0x8b9d
+    field public static final int GL_WEIGHT_ARRAY_BUFFER_BINDING_OES = 34974; // 0x889e
+    field public static final int GL_WEIGHT_ARRAY_OES = 34477; // 0x86ad
+    field public static final int GL_WEIGHT_ARRAY_POINTER_OES = 34476; // 0x86ac
+    field public static final int GL_WEIGHT_ARRAY_SIZE_OES = 34475; // 0x86ab
+    field public static final int GL_WEIGHT_ARRAY_STRIDE_OES = 34474; // 0x86aa
+    field public static final int GL_WEIGHT_ARRAY_TYPE_OES = 34473; // 0x86a9
+  }
+
+  public interface GL11ExtensionPack extends javax.microedition.khronos.opengles.GL {
+    method public void glBindFramebufferOES(int, int);
+    method public void glBindRenderbufferOES(int, int);
+    method public void glBindTexture(int, int);
+    method public void glBlendEquation(int);
+    method public void glBlendEquationSeparate(int, int);
+    method public void glBlendFuncSeparate(int, int, int, int);
+    method public int glCheckFramebufferStatusOES(int);
+    method public void glCompressedTexImage2D(int, int, int, int, int, int, int, java.nio.Buffer);
+    method public void glCopyTexImage2D(int, int, int, int, int, int, int, int);
+    method public void glDeleteFramebuffersOES(int, int[], int);
+    method public void glDeleteFramebuffersOES(int, java.nio.IntBuffer);
+    method public void glDeleteRenderbuffersOES(int, int[], int);
+    method public void glDeleteRenderbuffersOES(int, java.nio.IntBuffer);
+    method public void glEnable(int);
+    method public void glFramebufferRenderbufferOES(int, int, int, int);
+    method public void glFramebufferTexture2DOES(int, int, int, int, int);
+    method public void glGenFramebuffersOES(int, int[], int);
+    method public void glGenFramebuffersOES(int, java.nio.IntBuffer);
+    method public void glGenRenderbuffersOES(int, int[], int);
+    method public void glGenRenderbuffersOES(int, java.nio.IntBuffer);
+    method public void glGenerateMipmapOES(int);
+    method public void glGetFramebufferAttachmentParameterivOES(int, int, int, int[], int);
+    method public void glGetFramebufferAttachmentParameterivOES(int, int, int, java.nio.IntBuffer);
+    method public void glGetIntegerv(int, int[], int);
+    method public void glGetIntegerv(int, java.nio.IntBuffer);
+    method public void glGetRenderbufferParameterivOES(int, int, int[], int);
+    method public void glGetRenderbufferParameterivOES(int, int, java.nio.IntBuffer);
+    method public void glGetTexGenfv(int, int, float[], int);
+    method public void glGetTexGenfv(int, int, java.nio.FloatBuffer);
+    method public void glGetTexGeniv(int, int, int[], int);
+    method public void glGetTexGeniv(int, int, java.nio.IntBuffer);
+    method public void glGetTexGenxv(int, int, int[], int);
+    method public void glGetTexGenxv(int, int, java.nio.IntBuffer);
+    method public boolean glIsFramebufferOES(int);
+    method public boolean glIsRenderbufferOES(int);
+    method public void glRenderbufferStorageOES(int, int, int, int);
+    method public void glStencilOp(int, int, int);
+    method public void glTexEnvf(int, int, float);
+    method public void glTexEnvfv(int, int, float[], int);
+    method public void glTexEnvfv(int, int, java.nio.FloatBuffer);
+    method public void glTexEnvx(int, int, int);
+    method public void glTexEnvxv(int, int, int[], int);
+    method public void glTexEnvxv(int, int, java.nio.IntBuffer);
+    method public void glTexGenf(int, int, float);
+    method public void glTexGenfv(int, int, float[], int);
+    method public void glTexGenfv(int, int, java.nio.FloatBuffer);
+    method public void glTexGeni(int, int, int);
+    method public void glTexGeniv(int, int, int[], int);
+    method public void glTexGeniv(int, int, java.nio.IntBuffer);
+    method public void glTexGenx(int, int, int);
+    method public void glTexGenxv(int, int, int[], int);
+    method public void glTexGenxv(int, int, java.nio.IntBuffer);
+    method public void glTexParameterf(int, int, float);
+    field public static final int GL_BLEND_DST_ALPHA = 32970; // 0x80ca
+    field public static final int GL_BLEND_DST_RGB = 32968; // 0x80c8
+    field public static final int GL_BLEND_EQUATION = 32777; // 0x8009
+    field public static final int GL_BLEND_EQUATION_ALPHA = 34877; // 0x883d
+    field public static final int GL_BLEND_EQUATION_RGB = 32777; // 0x8009
+    field public static final int GL_BLEND_SRC_ALPHA = 32971; // 0x80cb
+    field public static final int GL_BLEND_SRC_RGB = 32969; // 0x80c9
+    field public static final int GL_COLOR_ATTACHMENT0_OES = 36064; // 0x8ce0
+    field public static final int GL_COLOR_ATTACHMENT10_OES = 36074; // 0x8cea
+    field public static final int GL_COLOR_ATTACHMENT11_OES = 36075; // 0x8ceb
+    field public static final int GL_COLOR_ATTACHMENT12_OES = 36076; // 0x8cec
+    field public static final int GL_COLOR_ATTACHMENT13_OES = 36077; // 0x8ced
+    field public static final int GL_COLOR_ATTACHMENT14_OES = 36078; // 0x8cee
+    field public static final int GL_COLOR_ATTACHMENT15_OES = 36079; // 0x8cef
+    field public static final int GL_COLOR_ATTACHMENT1_OES = 36065; // 0x8ce1
+    field public static final int GL_COLOR_ATTACHMENT2_OES = 36066; // 0x8ce2
+    field public static final int GL_COLOR_ATTACHMENT3_OES = 36067; // 0x8ce3
+    field public static final int GL_COLOR_ATTACHMENT4_OES = 36068; // 0x8ce4
+    field public static final int GL_COLOR_ATTACHMENT5_OES = 36069; // 0x8ce5
+    field public static final int GL_COLOR_ATTACHMENT6_OES = 36070; // 0x8ce6
+    field public static final int GL_COLOR_ATTACHMENT7_OES = 36071; // 0x8ce7
+    field public static final int GL_COLOR_ATTACHMENT8_OES = 36072; // 0x8ce8
+    field public static final int GL_COLOR_ATTACHMENT9_OES = 36073; // 0x8ce9
+    field public static final int GL_DECR_WRAP = 34056; // 0x8508
+    field public static final int GL_DEPTH_ATTACHMENT_OES = 36096; // 0x8d00
+    field public static final int GL_DEPTH_COMPONENT = 6402; // 0x1902
+    field public static final int GL_DEPTH_COMPONENT16 = 33189; // 0x81a5
+    field public static final int GL_DEPTH_COMPONENT24 = 33190; // 0x81a6
+    field public static final int GL_DEPTH_COMPONENT32 = 33191; // 0x81a7
+    field public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES = 36049; // 0x8cd1
+    field public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES = 36048; // 0x8cd0
+    field public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES = 36051; // 0x8cd3
+    field public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES = 36050; // 0x8cd2
+    field public static final int GL_FRAMEBUFFER_BINDING_OES = 36006; // 0x8ca6
+    field public static final int GL_FRAMEBUFFER_COMPLETE_OES = 36053; // 0x8cd5
+    field public static final int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES = 36054; // 0x8cd6
+    field public static final int GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES = 36057; // 0x8cd9
+    field public static final int GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES = 36059; // 0x8cdb
+    field public static final int GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES = 36058; // 0x8cda
+    field public static final int GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES = 36055; // 0x8cd7
+    field public static final int GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES = 36060; // 0x8cdc
+    field public static final int GL_FRAMEBUFFER_OES = 36160; // 0x8d40
+    field public static final int GL_FRAMEBUFFER_UNSUPPORTED_OES = 36061; // 0x8cdd
+    field public static final int GL_FUNC_ADD = 32774; // 0x8006
+    field public static final int GL_FUNC_REVERSE_SUBTRACT = 32779; // 0x800b
+    field public static final int GL_FUNC_SUBTRACT = 32778; // 0x800a
+    field public static final int GL_INCR_WRAP = 34055; // 0x8507
+    field public static final int GL_INVALID_FRAMEBUFFER_OPERATION_OES = 1286; // 0x506
+    field public static final int GL_MAX_COLOR_ATTACHMENTS_OES = 36063; // 0x8cdf
+    field public static final int GL_MAX_CUBE_MAP_TEXTURE_SIZE = 34076; // 0x851c
+    field public static final int GL_MAX_RENDERBUFFER_SIZE_OES = 34024; // 0x84e8
+    field public static final int GL_MIRRORED_REPEAT = 33648; // 0x8370
+    field public static final int GL_NORMAL_MAP = 34065; // 0x8511
+    field public static final int GL_REFLECTION_MAP = 34066; // 0x8512
+    field public static final int GL_RENDERBUFFER_ALPHA_SIZE_OES = 36179; // 0x8d53
+    field public static final int GL_RENDERBUFFER_BINDING_OES = 36007; // 0x8ca7
+    field public static final int GL_RENDERBUFFER_BLUE_SIZE_OES = 36178; // 0x8d52
+    field public static final int GL_RENDERBUFFER_DEPTH_SIZE_OES = 36180; // 0x8d54
+    field public static final int GL_RENDERBUFFER_GREEN_SIZE_OES = 36177; // 0x8d51
+    field public static final int GL_RENDERBUFFER_HEIGHT_OES = 36163; // 0x8d43
+    field public static final int GL_RENDERBUFFER_INTERNAL_FORMAT_OES = 36164; // 0x8d44
+    field public static final int GL_RENDERBUFFER_OES = 36161; // 0x8d41
+    field public static final int GL_RENDERBUFFER_RED_SIZE_OES = 36176; // 0x8d50
+    field public static final int GL_RENDERBUFFER_STENCIL_SIZE_OES = 36181; // 0x8d55
+    field public static final int GL_RENDERBUFFER_WIDTH_OES = 36162; // 0x8d42
+    field public static final int GL_RGB565_OES = 36194; // 0x8d62
+    field public static final int GL_RGB5_A1 = 32855; // 0x8057
+    field public static final int GL_RGB8 = 32849; // 0x8051
+    field public static final int GL_RGBA4 = 32854; // 0x8056
+    field public static final int GL_RGBA8 = 32856; // 0x8058
+    field public static final int GL_STENCIL_ATTACHMENT_OES = 36128; // 0x8d20
+    field public static final int GL_STENCIL_INDEX = 6401; // 0x1901
+    field public static final int GL_STENCIL_INDEX1_OES = 36166; // 0x8d46
+    field public static final int GL_STENCIL_INDEX4_OES = 36167; // 0x8d47
+    field public static final int GL_STENCIL_INDEX8_OES = 36168; // 0x8d48
+    field public static final int GL_STR = -1; // 0xffffffff
+    field public static final int GL_TEXTURE_BINDING_CUBE_MAP = 34068; // 0x8514
+    field public static final int GL_TEXTURE_CUBE_MAP = 34067; // 0x8513
+    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 34070; // 0x8516
+    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072; // 0x8518
+    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074; // 0x851a
+    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_X = 34069; // 0x8515
+    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 34071; // 0x8517
+    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 34073; // 0x8519
+    field public static final int GL_TEXTURE_GEN_MODE = 9472; // 0x2500
+    field public static final int GL_TEXTURE_GEN_STR = 36192; // 0x8d60
+  }
+
+}
+
+package javax.net {
+
+  public abstract class ServerSocketFactory {
+    ctor protected ServerSocketFactory();
+    method public java.net.ServerSocket createServerSocket() throws java.io.IOException;
+    method public abstract java.net.ServerSocket createServerSocket(int) throws java.io.IOException;
+    method public abstract java.net.ServerSocket createServerSocket(int, int) throws java.io.IOException;
+    method public abstract java.net.ServerSocket createServerSocket(int, int, java.net.InetAddress) throws java.io.IOException;
+    method public static javax.net.ServerSocketFactory getDefault();
+  }
+
+  public abstract class SocketFactory {
+    ctor protected SocketFactory();
+    method public java.net.Socket createSocket() throws java.io.IOException;
+    method public abstract java.net.Socket createSocket(String, int) throws java.io.IOException, java.net.UnknownHostException;
+    method public abstract java.net.Socket createSocket(String, int, java.net.InetAddress, int) throws java.io.IOException, java.net.UnknownHostException;
+    method public abstract java.net.Socket createSocket(java.net.InetAddress, int) throws java.io.IOException;
+    method public abstract java.net.Socket createSocket(java.net.InetAddress, int, java.net.InetAddress, int) throws java.io.IOException;
+    method public static javax.net.SocketFactory getDefault();
+  }
+
+}
+
+package javax.net.ssl {
+
+  public class CertPathTrustManagerParameters implements javax.net.ssl.ManagerFactoryParameters {
+    ctor public CertPathTrustManagerParameters(java.security.cert.CertPathParameters);
+    method public java.security.cert.CertPathParameters getParameters();
+  }
+
+  public abstract class ExtendedSSLSession implements javax.net.ssl.SSLSession {
+    ctor public ExtendedSSLSession();
+    method public abstract String[] getLocalSupportedSignatureAlgorithms();
+    method public abstract String[] getPeerSupportedSignatureAlgorithms();
+    method public java.util.List<javax.net.ssl.SNIServerName> getRequestedServerNames();
+  }
+
+  public class HandshakeCompletedEvent extends java.util.EventObject {
+    ctor public HandshakeCompletedEvent(javax.net.ssl.SSLSocket, javax.net.ssl.SSLSession);
+    method public String getCipherSuite();
+    method public java.security.cert.Certificate[] getLocalCertificates();
+    method public java.security.Principal getLocalPrincipal();
+    method public javax.security.cert.X509Certificate[] getPeerCertificateChain() throws javax.net.ssl.SSLPeerUnverifiedException;
+    method public java.security.cert.Certificate[] getPeerCertificates() throws javax.net.ssl.SSLPeerUnverifiedException;
+    method public java.security.Principal getPeerPrincipal() throws javax.net.ssl.SSLPeerUnverifiedException;
+    method public javax.net.ssl.SSLSession getSession();
+    method public javax.net.ssl.SSLSocket getSocket();
+  }
+
+  public interface HandshakeCompletedListener extends java.util.EventListener {
+    method public void handshakeCompleted(javax.net.ssl.HandshakeCompletedEvent);
+  }
+
+  public interface HostnameVerifier {
+    method public boolean verify(String, javax.net.ssl.SSLSession);
+  }
+
+  public abstract class HttpsURLConnection extends java.net.HttpURLConnection {
+    ctor protected HttpsURLConnection(java.net.URL);
+    method public abstract String getCipherSuite();
+    method public static javax.net.ssl.HostnameVerifier getDefaultHostnameVerifier();
+    method public static javax.net.ssl.SSLSocketFactory getDefaultSSLSocketFactory();
+    method public javax.net.ssl.HostnameVerifier getHostnameVerifier();
+    method public abstract java.security.cert.Certificate[] getLocalCertificates();
+    method public java.security.Principal getLocalPrincipal();
+    method public java.security.Principal getPeerPrincipal() throws javax.net.ssl.SSLPeerUnverifiedException;
+    method public javax.net.ssl.SSLSocketFactory getSSLSocketFactory();
+    method public abstract java.security.cert.Certificate[] getServerCertificates() throws javax.net.ssl.SSLPeerUnverifiedException;
+    method public static void setDefaultHostnameVerifier(javax.net.ssl.HostnameVerifier);
+    method public static void setDefaultSSLSocketFactory(javax.net.ssl.SSLSocketFactory);
+    method public void setHostnameVerifier(javax.net.ssl.HostnameVerifier);
+    method public void setSSLSocketFactory(javax.net.ssl.SSLSocketFactory);
+    field protected javax.net.ssl.HostnameVerifier hostnameVerifier;
+  }
+
+  public interface KeyManager {
+  }
+
+  public class KeyManagerFactory {
+    ctor protected KeyManagerFactory(javax.net.ssl.KeyManagerFactorySpi, java.security.Provider, String);
+    method public final String getAlgorithm();
+    method public static final String getDefaultAlgorithm();
+    method public static final javax.net.ssl.KeyManagerFactory getInstance(String) throws java.security.NoSuchAlgorithmException;
+    method public static final javax.net.ssl.KeyManagerFactory getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+    method public static final javax.net.ssl.KeyManagerFactory getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+    method public final javax.net.ssl.KeyManager[] getKeyManagers();
+    method public final java.security.Provider getProvider();
+    method public final void init(java.security.KeyStore, char[]) throws java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
+    method public final void init(javax.net.ssl.ManagerFactoryParameters) throws java.security.InvalidAlgorithmParameterException;
+  }
+
+  public abstract class KeyManagerFactorySpi {
+    ctor public KeyManagerFactorySpi();
+    method protected abstract javax.net.ssl.KeyManager[] engineGetKeyManagers();
+    method protected abstract void engineInit(java.security.KeyStore, char[]) throws java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
+    method protected abstract void engineInit(javax.net.ssl.ManagerFactoryParameters) throws java.security.InvalidAlgorithmParameterException;
+  }
+
+  public class KeyStoreBuilderParameters implements javax.net.ssl.ManagerFactoryParameters {
+    ctor public KeyStoreBuilderParameters(java.security.KeyStore.Builder);
+    ctor public KeyStoreBuilderParameters(java.util.List<java.security.KeyStore.Builder>);
+    method public java.util.List<java.security.KeyStore.Builder> getParameters();
+  }
+
+  public interface ManagerFactoryParameters {
+  }
+
+  public final class SNIHostName extends javax.net.ssl.SNIServerName {
+    ctor public SNIHostName(String);
+    ctor public SNIHostName(byte[]);
+    method public static javax.net.ssl.SNIMatcher createSNIMatcher(String);
+    method public String getAsciiName();
+  }
+
+  public abstract class SNIMatcher {
+    ctor protected SNIMatcher(int);
+    method public final int getType();
+    method public abstract boolean matches(javax.net.ssl.SNIServerName);
+  }
+
+  public abstract class SNIServerName {
+    ctor protected SNIServerName(int, byte[]);
+    method public final byte[] getEncoded();
+    method public final int getType();
+  }
+
+  public class SSLContext {
+    ctor protected SSLContext(javax.net.ssl.SSLContextSpi, java.security.Provider, String);
+    method public final javax.net.ssl.SSLEngine createSSLEngine();
+    method public final javax.net.ssl.SSLEngine createSSLEngine(String, int);
+    method public final javax.net.ssl.SSLSessionContext getClientSessionContext();
+    method public static javax.net.ssl.SSLContext getDefault() throws java.security.NoSuchAlgorithmException;
+    method public final javax.net.ssl.SSLParameters getDefaultSSLParameters();
+    method public static javax.net.ssl.SSLContext getInstance(String) throws java.security.NoSuchAlgorithmException;
+    method public static javax.net.ssl.SSLContext getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+    method public static javax.net.ssl.SSLContext getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+    method public final String getProtocol();
+    method public final java.security.Provider getProvider();
+    method public final javax.net.ssl.SSLSessionContext getServerSessionContext();
+    method public final javax.net.ssl.SSLServerSocketFactory getServerSocketFactory();
+    method public final javax.net.ssl.SSLSocketFactory getSocketFactory();
+    method public final javax.net.ssl.SSLParameters getSupportedSSLParameters();
+    method public final void init(javax.net.ssl.KeyManager[], javax.net.ssl.TrustManager[], java.security.SecureRandom) throws java.security.KeyManagementException;
+    method public static void setDefault(javax.net.ssl.SSLContext);
+  }
+
+  public abstract class SSLContextSpi {
+    ctor public SSLContextSpi();
+    method protected abstract javax.net.ssl.SSLEngine engineCreateSSLEngine();
+    method protected abstract javax.net.ssl.SSLEngine engineCreateSSLEngine(String, int);
+    method protected abstract javax.net.ssl.SSLSessionContext engineGetClientSessionContext();
+    method protected javax.net.ssl.SSLParameters engineGetDefaultSSLParameters();
+    method protected abstract javax.net.ssl.SSLSessionContext engineGetServerSessionContext();
+    method protected abstract javax.net.ssl.SSLServerSocketFactory engineGetServerSocketFactory();
+    method protected abstract javax.net.ssl.SSLSocketFactory engineGetSocketFactory();
+    method protected javax.net.ssl.SSLParameters engineGetSupportedSSLParameters();
+    method protected abstract void engineInit(javax.net.ssl.KeyManager[], javax.net.ssl.TrustManager[], java.security.SecureRandom) throws java.security.KeyManagementException;
+  }
+
+  public abstract class SSLEngine {
+    ctor protected SSLEngine();
+    ctor protected SSLEngine(String, int);
+    method public abstract void beginHandshake() throws javax.net.ssl.SSLException;
+    method public abstract void closeInbound() throws javax.net.ssl.SSLException;
+    method public abstract void closeOutbound();
+    method public String getApplicationProtocol();
+    method public abstract Runnable getDelegatedTask();
+    method public abstract boolean getEnableSessionCreation();
+    method public abstract String[] getEnabledCipherSuites();
+    method public abstract String[] getEnabledProtocols();
+    method public String getHandshakeApplicationProtocol();
+    method public java.util.function.BiFunction<javax.net.ssl.SSLEngine,java.util.List<java.lang.String>,java.lang.String> getHandshakeApplicationProtocolSelector();
+    method public javax.net.ssl.SSLSession getHandshakeSession();
+    method public abstract javax.net.ssl.SSLEngineResult.HandshakeStatus getHandshakeStatus();
+    method public abstract boolean getNeedClientAuth();
+    method public String getPeerHost();
+    method public int getPeerPort();
+    method public javax.net.ssl.SSLParameters getSSLParameters();
+    method public abstract javax.net.ssl.SSLSession getSession();
+    method public abstract String[] getSupportedCipherSuites();
+    method public abstract String[] getSupportedProtocols();
+    method public abstract boolean getUseClientMode();
+    method public abstract boolean getWantClientAuth();
+    method public abstract boolean isInboundDone();
+    method public abstract boolean isOutboundDone();
+    method public abstract void setEnableSessionCreation(boolean);
+    method public abstract void setEnabledCipherSuites(String[]);
+    method public abstract void setEnabledProtocols(String[]);
+    method public void setHandshakeApplicationProtocolSelector(java.util.function.BiFunction<javax.net.ssl.SSLEngine,java.util.List<java.lang.String>,java.lang.String>);
+    method public abstract void setNeedClientAuth(boolean);
+    method public void setSSLParameters(javax.net.ssl.SSLParameters);
+    method public abstract void setUseClientMode(boolean);
+    method public abstract void setWantClientAuth(boolean);
+    method public javax.net.ssl.SSLEngineResult unwrap(java.nio.ByteBuffer, java.nio.ByteBuffer) throws javax.net.ssl.SSLException;
+    method public javax.net.ssl.SSLEngineResult unwrap(java.nio.ByteBuffer, java.nio.ByteBuffer[]) throws javax.net.ssl.SSLException;
+    method public abstract javax.net.ssl.SSLEngineResult unwrap(java.nio.ByteBuffer, java.nio.ByteBuffer[], int, int) throws javax.net.ssl.SSLException;
+    method public javax.net.ssl.SSLEngineResult wrap(java.nio.ByteBuffer, java.nio.ByteBuffer) throws javax.net.ssl.SSLException;
+    method public javax.net.ssl.SSLEngineResult wrap(java.nio.ByteBuffer[], java.nio.ByteBuffer) throws javax.net.ssl.SSLException;
+    method public abstract javax.net.ssl.SSLEngineResult wrap(java.nio.ByteBuffer[], int, int, java.nio.ByteBuffer) throws javax.net.ssl.SSLException;
+  }
+
+  public class SSLEngineResult {
+    ctor public SSLEngineResult(javax.net.ssl.SSLEngineResult.Status, javax.net.ssl.SSLEngineResult.HandshakeStatus, int, int);
+    method public final int bytesConsumed();
+    method public final int bytesProduced();
+    method public final javax.net.ssl.SSLEngineResult.HandshakeStatus getHandshakeStatus();
+    method public final javax.net.ssl.SSLEngineResult.Status getStatus();
+  }
+
+  public enum SSLEngineResult.HandshakeStatus {
+    enum_constant public static final javax.net.ssl.SSLEngineResult.HandshakeStatus FINISHED;
+    enum_constant public static final javax.net.ssl.SSLEngineResult.HandshakeStatus NEED_TASK;
+    enum_constant public static final javax.net.ssl.SSLEngineResult.HandshakeStatus NEED_UNWRAP;
+    enum_constant public static final javax.net.ssl.SSLEngineResult.HandshakeStatus NEED_WRAP;
+    enum_constant public static final javax.net.ssl.SSLEngineResult.HandshakeStatus NOT_HANDSHAKING;
+  }
+
+  public enum SSLEngineResult.Status {
+    enum_constant public static final javax.net.ssl.SSLEngineResult.Status BUFFER_OVERFLOW;
+    enum_constant public static final javax.net.ssl.SSLEngineResult.Status BUFFER_UNDERFLOW;
+    enum_constant public static final javax.net.ssl.SSLEngineResult.Status CLOSED;
+    enum_constant public static final javax.net.ssl.SSLEngineResult.Status OK;
+  }
+
+  public class SSLException extends java.io.IOException {
+    ctor public SSLException(String);
+    ctor public SSLException(String, Throwable);
+    ctor public SSLException(Throwable);
+  }
+
+  public class SSLHandshakeException extends javax.net.ssl.SSLException {
+    ctor public SSLHandshakeException(String);
+  }
+
+  public class SSLKeyException extends javax.net.ssl.SSLException {
+    ctor public SSLKeyException(String);
+  }
+
+  public class SSLParameters {
+    ctor public SSLParameters();
+    ctor public SSLParameters(String[]);
+    ctor public SSLParameters(String[], String[]);
+    method public java.security.AlgorithmConstraints getAlgorithmConstraints();
+    method public String[] getApplicationProtocols();
+    method public String[] getCipherSuites();
+    method public String getEndpointIdentificationAlgorithm();
+    method public boolean getNeedClientAuth();
+    method public String[] getProtocols();
+    method public final java.util.Collection<javax.net.ssl.SNIMatcher> getSNIMatchers();
+    method public final java.util.List<javax.net.ssl.SNIServerName> getServerNames();
+    method public final boolean getUseCipherSuitesOrder();
+    method public boolean getWantClientAuth();
+    method public void setAlgorithmConstraints(java.security.AlgorithmConstraints);
+    method public void setApplicationProtocols(String[]);
+    method public void setCipherSuites(String[]);
+    method public void setEndpointIdentificationAlgorithm(String);
+    method public void setNeedClientAuth(boolean);
+    method public void setProtocols(String[]);
+    method public final void setSNIMatchers(java.util.Collection<javax.net.ssl.SNIMatcher>);
+    method public final void setServerNames(java.util.List<javax.net.ssl.SNIServerName>);
+    method public final void setUseCipherSuitesOrder(boolean);
+    method public void setWantClientAuth(boolean);
+  }
+
+  public class SSLPeerUnverifiedException extends javax.net.ssl.SSLException {
+    ctor public SSLPeerUnverifiedException(String);
+  }
+
+  public final class SSLPermission extends java.security.BasicPermission {
+    ctor public SSLPermission(String);
+    ctor public SSLPermission(String, String);
+  }
+
+  public class SSLProtocolException extends javax.net.ssl.SSLException {
+    ctor public SSLProtocolException(String);
+  }
+
+  public abstract class SSLServerSocket extends java.net.ServerSocket {
+    ctor protected SSLServerSocket() throws java.io.IOException;
+    ctor protected SSLServerSocket(int) throws java.io.IOException;
+    ctor protected SSLServerSocket(int, int) throws java.io.IOException;
+    ctor protected SSLServerSocket(int, int, java.net.InetAddress) throws java.io.IOException;
+    method public abstract boolean getEnableSessionCreation();
+    method public abstract String[] getEnabledCipherSuites();
+    method public abstract String[] getEnabledProtocols();
+    method public abstract boolean getNeedClientAuth();
+    method public javax.net.ssl.SSLParameters getSSLParameters();
+    method public abstract String[] getSupportedCipherSuites();
+    method public abstract String[] getSupportedProtocols();
+    method public abstract boolean getUseClientMode();
+    method public abstract boolean getWantClientAuth();
+    method public abstract void setEnableSessionCreation(boolean);
+    method public abstract void setEnabledCipherSuites(String[]);
+    method public abstract void setEnabledProtocols(String[]);
+    method public abstract void setNeedClientAuth(boolean);
+    method public void setSSLParameters(javax.net.ssl.SSLParameters);
+    method public abstract void setUseClientMode(boolean);
+    method public abstract void setWantClientAuth(boolean);
+  }
+
+  public abstract class SSLServerSocketFactory extends javax.net.ServerSocketFactory {
+    ctor protected SSLServerSocketFactory();
+    method public static javax.net.ServerSocketFactory getDefault();
+    method public abstract String[] getDefaultCipherSuites();
+    method public abstract String[] getSupportedCipherSuites();
+  }
+
+  public interface SSLSession {
+    method public int getApplicationBufferSize();
+    method public String getCipherSuite();
+    method public long getCreationTime();
+    method public byte[] getId();
+    method public long getLastAccessedTime();
+    method public java.security.cert.Certificate[] getLocalCertificates();
+    method public java.security.Principal getLocalPrincipal();
+    method public int getPacketBufferSize();
+    method public javax.security.cert.X509Certificate[] getPeerCertificateChain() throws javax.net.ssl.SSLPeerUnverifiedException;
+    method public java.security.cert.Certificate[] getPeerCertificates() throws javax.net.ssl.SSLPeerUnverifiedException;
+    method public String getPeerHost();
+    method public int getPeerPort();
+    method public java.security.Principal getPeerPrincipal() throws javax.net.ssl.SSLPeerUnverifiedException;
+    method public String getProtocol();
+    method public javax.net.ssl.SSLSessionContext getSessionContext();
+    method public Object getValue(String);
+    method public String[] getValueNames();
+    method public void invalidate();
+    method public boolean isValid();
+    method public void putValue(String, Object);
+    method public void removeValue(String);
+  }
+
+  public class SSLSessionBindingEvent extends java.util.EventObject {
+    ctor public SSLSessionBindingEvent(javax.net.ssl.SSLSession, String);
+    method public String getName();
+    method public javax.net.ssl.SSLSession getSession();
+  }
+
+  public interface SSLSessionBindingListener extends java.util.EventListener {
+    method public void valueBound(javax.net.ssl.SSLSessionBindingEvent);
+    method public void valueUnbound(javax.net.ssl.SSLSessionBindingEvent);
+  }
+
+  public interface SSLSessionContext {
+    method public java.util.Enumeration<byte[]> getIds();
+    method public javax.net.ssl.SSLSession getSession(byte[]);
+    method public int getSessionCacheSize();
+    method public int getSessionTimeout();
+    method public void setSessionCacheSize(int) throws java.lang.IllegalArgumentException;
+    method public void setSessionTimeout(int) throws java.lang.IllegalArgumentException;
+  }
+
+  public abstract class SSLSocket extends java.net.Socket {
+    ctor protected SSLSocket();
+    ctor protected SSLSocket(String, int) throws java.io.IOException, java.net.UnknownHostException;
+    ctor protected SSLSocket(java.net.InetAddress, int) throws java.io.IOException;
+    ctor protected SSLSocket(String, int, java.net.InetAddress, int) throws java.io.IOException, java.net.UnknownHostException;
+    ctor protected SSLSocket(java.net.InetAddress, int, java.net.InetAddress, int) throws java.io.IOException;
+    method public abstract void addHandshakeCompletedListener(javax.net.ssl.HandshakeCompletedListener);
+    method public String getApplicationProtocol();
+    method public abstract boolean getEnableSessionCreation();
+    method public abstract String[] getEnabledCipherSuites();
+    method public abstract String[] getEnabledProtocols();
+    method public String getHandshakeApplicationProtocol();
+    method public java.util.function.BiFunction<javax.net.ssl.SSLSocket,java.util.List<java.lang.String>,java.lang.String> getHandshakeApplicationProtocolSelector();
+    method public javax.net.ssl.SSLSession getHandshakeSession();
+    method public abstract boolean getNeedClientAuth();
+    method public javax.net.ssl.SSLParameters getSSLParameters();
+    method public abstract javax.net.ssl.SSLSession getSession();
+    method public abstract String[] getSupportedCipherSuites();
+    method public abstract String[] getSupportedProtocols();
+    method public abstract boolean getUseClientMode();
+    method public abstract boolean getWantClientAuth();
+    method public abstract void removeHandshakeCompletedListener(javax.net.ssl.HandshakeCompletedListener);
+    method public abstract void setEnableSessionCreation(boolean);
+    method public abstract void setEnabledCipherSuites(String[]);
+    method public abstract void setEnabledProtocols(String[]);
+    method public void setHandshakeApplicationProtocolSelector(java.util.function.BiFunction<javax.net.ssl.SSLSocket,java.util.List<java.lang.String>,java.lang.String>);
+    method public abstract void setNeedClientAuth(boolean);
+    method public void setSSLParameters(javax.net.ssl.SSLParameters);
+    method public abstract void setUseClientMode(boolean);
+    method public abstract void setWantClientAuth(boolean);
+    method public abstract void startHandshake() throws java.io.IOException;
+  }
+
+  public abstract class SSLSocketFactory extends javax.net.SocketFactory {
+    ctor public SSLSocketFactory();
+    method public abstract java.net.Socket createSocket(java.net.Socket, String, int, boolean) throws java.io.IOException;
+    method public static javax.net.SocketFactory getDefault();
+    method public abstract String[] getDefaultCipherSuites();
+    method public abstract String[] getSupportedCipherSuites();
+  }
+
+  public final class StandardConstants {
+    field public static final int SNI_HOST_NAME = 0; // 0x0
+  }
+
+  public interface TrustManager {
+  }
+
+  public class TrustManagerFactory {
+    ctor protected TrustManagerFactory(javax.net.ssl.TrustManagerFactorySpi, java.security.Provider, String);
+    method public final String getAlgorithm();
+    method public static final String getDefaultAlgorithm();
+    method public static final javax.net.ssl.TrustManagerFactory getInstance(String) throws java.security.NoSuchAlgorithmException;
+    method public static final javax.net.ssl.TrustManagerFactory getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
+    method public static final javax.net.ssl.TrustManagerFactory getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
+    method public final java.security.Provider getProvider();
+    method public final javax.net.ssl.TrustManager[] getTrustManagers();
+    method public final void init(java.security.KeyStore) throws java.security.KeyStoreException;
+    method public final void init(javax.net.ssl.ManagerFactoryParameters) throws java.security.InvalidAlgorithmParameterException;
+  }
+
+  public abstract class TrustManagerFactorySpi {
+    ctor public TrustManagerFactorySpi();
+    method protected abstract javax.net.ssl.TrustManager[] engineGetTrustManagers();
+    method protected abstract void engineInit(java.security.KeyStore) throws java.security.KeyStoreException;
+    method protected abstract void engineInit(javax.net.ssl.ManagerFactoryParameters) throws java.security.InvalidAlgorithmParameterException;
+  }
+
+  public abstract class X509ExtendedKeyManager implements javax.net.ssl.X509KeyManager {
+    ctor protected X509ExtendedKeyManager();
+    method public String chooseEngineClientAlias(String[], java.security.Principal[], javax.net.ssl.SSLEngine);
+    method public String chooseEngineServerAlias(String, java.security.Principal[], javax.net.ssl.SSLEngine);
+  }
+
+  public abstract class X509ExtendedTrustManager implements javax.net.ssl.X509TrustManager {
+    ctor public X509ExtendedTrustManager();
+    method public abstract void checkClientTrusted(java.security.cert.X509Certificate[], String, java.net.Socket) throws java.security.cert.CertificateException;
+    method public abstract void checkClientTrusted(java.security.cert.X509Certificate[], String, javax.net.ssl.SSLEngine) throws java.security.cert.CertificateException;
+    method public abstract void checkServerTrusted(java.security.cert.X509Certificate[], String, java.net.Socket) throws java.security.cert.CertificateException;
+    method public abstract void checkServerTrusted(java.security.cert.X509Certificate[], String, javax.net.ssl.SSLEngine) throws java.security.cert.CertificateException;
+  }
+
+  public interface X509KeyManager extends javax.net.ssl.KeyManager {
+    method public String chooseClientAlias(String[], java.security.Principal[], java.net.Socket);
+    method public String chooseServerAlias(String, java.security.Principal[], java.net.Socket);
+    method public java.security.cert.X509Certificate[] getCertificateChain(String);
+    method public String[] getClientAliases(String, java.security.Principal[]);
+    method public java.security.PrivateKey getPrivateKey(String);
+    method public String[] getServerAliases(String, java.security.Principal[]);
+  }
+
+  public interface X509TrustManager extends javax.net.ssl.TrustManager {
+    method public void checkClientTrusted(java.security.cert.X509Certificate[], String) throws java.security.cert.CertificateException;
+    method public void checkServerTrusted(java.security.cert.X509Certificate[], String) throws java.security.cert.CertificateException;
+    method public java.security.cert.X509Certificate[] getAcceptedIssuers();
+  }
+
+}
+
+package javax.security.auth {
+
+  public final class AuthPermission extends java.security.BasicPermission {
+    ctor public AuthPermission(String);
+    ctor public AuthPermission(String, String);
+  }
+
+  public class DestroyFailedException extends java.lang.Exception {
+    ctor public DestroyFailedException();
+    ctor public DestroyFailedException(String);
+  }
+
+  public interface Destroyable {
+    method public default void destroy() throws javax.security.auth.DestroyFailedException;
+    method public default boolean isDestroyed();
+  }
+
+  public final class PrivateCredentialPermission extends java.security.Permission {
+    ctor public PrivateCredentialPermission(String, String);
+    method public String getActions();
+    method public String getCredentialClass();
+    method public String[][] getPrincipals();
+    method public boolean implies(java.security.Permission);
+  }
+
+  public final class Subject implements java.io.Serializable {
+    ctor public Subject();
+    ctor public Subject(boolean, java.util.Set<? extends java.security.Principal>, java.util.Set<?>, java.util.Set<?>);
+    method public static <T> T doAs(javax.security.auth.Subject, java.security.PrivilegedAction<T>);
+    method public static <T> T doAs(javax.security.auth.Subject, java.security.PrivilegedExceptionAction<T>) throws java.security.PrivilegedActionException;
+    method public static <T> T doAsPrivileged(javax.security.auth.Subject, java.security.PrivilegedAction<T>, java.security.AccessControlContext);
+    method public static <T> T doAsPrivileged(javax.security.auth.Subject, java.security.PrivilegedExceptionAction<T>, java.security.AccessControlContext) throws java.security.PrivilegedActionException;
+    method public java.util.Set<java.security.Principal> getPrincipals();
+    method public <T extends java.security.Principal> java.util.Set<T> getPrincipals(Class<T>);
+    method public java.util.Set<java.lang.Object> getPrivateCredentials();
+    method public <T> java.util.Set<T> getPrivateCredentials(Class<T>);
+    method public java.util.Set<java.lang.Object> getPublicCredentials();
+    method public <T> java.util.Set<T> getPublicCredentials(Class<T>);
+    method public static javax.security.auth.Subject getSubject(java.security.AccessControlContext);
+    method public boolean isReadOnly();
+    method public void setReadOnly();
+  }
+
+  public class SubjectDomainCombiner implements java.security.DomainCombiner {
+    ctor public SubjectDomainCombiner(javax.security.auth.Subject);
+    method public java.security.ProtectionDomain[] combine(java.security.ProtectionDomain[], java.security.ProtectionDomain[]);
+    method public javax.security.auth.Subject getSubject();
+  }
+
+}
+
+package javax.security.auth.callback {
+
+  public interface Callback {
+  }
+
+  public interface CallbackHandler {
+    method public void handle(javax.security.auth.callback.Callback[]) throws java.io.IOException, javax.security.auth.callback.UnsupportedCallbackException;
+  }
+
+  public class PasswordCallback implements javax.security.auth.callback.Callback java.io.Serializable {
+    ctor public PasswordCallback(String, boolean);
+    method public void clearPassword();
+    method public char[] getPassword();
+    method public String getPrompt();
+    method public boolean isEchoOn();
+    method public void setPassword(char[]);
+  }
+
+  public class UnsupportedCallbackException extends java.lang.Exception {
+    ctor public UnsupportedCallbackException(javax.security.auth.callback.Callback);
+    ctor public UnsupportedCallbackException(javax.security.auth.callback.Callback, String);
+    method public javax.security.auth.callback.Callback getCallback();
+  }
+
+}
+
+package javax.security.auth.login {
+
+  public class LoginException extends java.security.GeneralSecurityException {
+    ctor public LoginException();
+    ctor public LoginException(String);
+  }
+
+}
+
+package javax.security.auth.x500 {
+
+  public final class X500Principal implements java.security.Principal java.io.Serializable {
+    ctor public X500Principal(String);
+    ctor public X500Principal(String, java.util.Map<java.lang.String,java.lang.String>);
+    ctor public X500Principal(byte[]);
+    ctor public X500Principal(java.io.InputStream);
+    method public byte[] getEncoded();
+    method public String getName();
+    method public String getName(String);
+    method public String getName(String, java.util.Map<java.lang.String,java.lang.String>);
+    field public static final String CANONICAL = "CANONICAL";
+    field public static final String RFC1779 = "RFC1779";
+    field public static final String RFC2253 = "RFC2253";
+  }
+
+}
+
+package javax.security.cert {
+
+  public abstract class Certificate {
+    ctor public Certificate();
+    method public abstract byte[] getEncoded() throws javax.security.cert.CertificateEncodingException;
+    method public abstract java.security.PublicKey getPublicKey();
+    method public abstract String toString();
+    method public abstract void verify(java.security.PublicKey) throws javax.security.cert.CertificateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
+    method public abstract void verify(java.security.PublicKey, String) throws javax.security.cert.CertificateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
+  }
+
+  public class CertificateEncodingException extends javax.security.cert.CertificateException {
+    ctor public CertificateEncodingException();
+    ctor public CertificateEncodingException(String);
+  }
+
+  public class CertificateException extends java.lang.Exception {
+    ctor public CertificateException();
+    ctor public CertificateException(String);
+  }
+
+  public class CertificateExpiredException extends javax.security.cert.CertificateException {
+    ctor public CertificateExpiredException();
+    ctor public CertificateExpiredException(String);
+  }
+
+  public class CertificateNotYetValidException extends javax.security.cert.CertificateException {
+    ctor public CertificateNotYetValidException();
+    ctor public CertificateNotYetValidException(String);
+  }
+
+  public class CertificateParsingException extends javax.security.cert.CertificateException {
+    ctor public CertificateParsingException();
+    ctor public CertificateParsingException(String);
+  }
+
+  public abstract class X509Certificate extends javax.security.cert.Certificate {
+    ctor public X509Certificate();
+    method public abstract void checkValidity() throws javax.security.cert.CertificateExpiredException, javax.security.cert.CertificateNotYetValidException;
+    method public abstract void checkValidity(java.util.Date) throws javax.security.cert.CertificateExpiredException, javax.security.cert.CertificateNotYetValidException;
+    method public static final javax.security.cert.X509Certificate getInstance(java.io.InputStream) throws javax.security.cert.CertificateException;
+    method public static final javax.security.cert.X509Certificate getInstance(byte[]) throws javax.security.cert.CertificateException;
+    method public abstract java.security.Principal getIssuerDN();
+    method public abstract java.util.Date getNotAfter();
+    method public abstract java.util.Date getNotBefore();
+    method public abstract java.math.BigInteger getSerialNumber();
+    method public abstract String getSigAlgName();
+    method public abstract String getSigAlgOID();
+    method public abstract byte[] getSigAlgParams();
+    method public abstract java.security.Principal getSubjectDN();
+    method public abstract int getVersion();
+  }
+
+}
+
+package javax.sql {
+
+  public interface CommonDataSource {
+    method public java.io.PrintWriter getLogWriter() throws java.sql.SQLException;
+    method public int getLoginTimeout() throws java.sql.SQLException;
+    method public java.util.logging.Logger getParentLogger() throws java.sql.SQLFeatureNotSupportedException;
+    method public void setLogWriter(java.io.PrintWriter) throws java.sql.SQLException;
+    method public void setLoginTimeout(int) throws java.sql.SQLException;
+  }
+
+  public class ConnectionEvent extends java.util.EventObject {
+    ctor public ConnectionEvent(javax.sql.PooledConnection);
+    ctor public ConnectionEvent(javax.sql.PooledConnection, java.sql.SQLException);
+    method public java.sql.SQLException getSQLException();
+  }
+
+  public interface ConnectionEventListener extends java.util.EventListener {
+    method public void connectionClosed(javax.sql.ConnectionEvent);
+    method public void connectionErrorOccurred(javax.sql.ConnectionEvent);
+  }
+
+  public interface ConnectionPoolDataSource extends javax.sql.CommonDataSource {
+    method public javax.sql.PooledConnection getPooledConnection() throws java.sql.SQLException;
+    method public javax.sql.PooledConnection getPooledConnection(String, String) throws java.sql.SQLException;
+  }
+
+  public interface DataSource extends javax.sql.CommonDataSource java.sql.Wrapper {
+    method public java.sql.Connection getConnection() throws java.sql.SQLException;
+    method public java.sql.Connection getConnection(String, String) throws java.sql.SQLException;
+  }
+
+  public interface PooledConnection {
+    method public void addConnectionEventListener(javax.sql.ConnectionEventListener);
+    method public void addStatementEventListener(javax.sql.StatementEventListener);
+    method public void close() throws java.sql.SQLException;
+    method public java.sql.Connection getConnection() throws java.sql.SQLException;
+    method public void removeConnectionEventListener(javax.sql.ConnectionEventListener);
+    method public void removeStatementEventListener(javax.sql.StatementEventListener);
+  }
+
+  public interface RowSet extends java.sql.ResultSet {
+    method public void addRowSetListener(javax.sql.RowSetListener);
+    method public void clearParameters() throws java.sql.SQLException;
+    method public void execute() throws java.sql.SQLException;
+    method public String getCommand();
+    method public String getDataSourceName();
+    method public boolean getEscapeProcessing() throws java.sql.SQLException;
+    method public int getMaxFieldSize() throws java.sql.SQLException;
+    method public int getMaxRows() throws java.sql.SQLException;
+    method public String getPassword();
+    method public int getQueryTimeout() throws java.sql.SQLException;
+    method public int getTransactionIsolation();
+    method public java.util.Map<java.lang.String,java.lang.Class<?>> getTypeMap() throws java.sql.SQLException;
+    method public String getUrl() throws java.sql.SQLException;
+    method public String getUsername();
+    method public boolean isReadOnly();
+    method public void removeRowSetListener(javax.sql.RowSetListener);
+    method public void setArray(int, java.sql.Array) throws java.sql.SQLException;
+    method public void setAsciiStream(int, java.io.InputStream, int) throws java.sql.SQLException;
+    method public void setAsciiStream(String, java.io.InputStream, int) throws java.sql.SQLException;
+    method public void setAsciiStream(int, java.io.InputStream) throws java.sql.SQLException;
+    method public void setAsciiStream(String, java.io.InputStream) throws java.sql.SQLException;
+    method public void setBigDecimal(int, java.math.BigDecimal) throws java.sql.SQLException;
+    method public void setBigDecimal(String, java.math.BigDecimal) throws java.sql.SQLException;
+    method public void setBinaryStream(int, java.io.InputStream, int) throws java.sql.SQLException;
+    method public void setBinaryStream(String, java.io.InputStream, int) throws java.sql.SQLException;
+    method public void setBinaryStream(int, java.io.InputStream) throws java.sql.SQLException;
+    method public void setBinaryStream(String, java.io.InputStream) throws java.sql.SQLException;
+    method public void setBlob(int, java.sql.Blob) throws java.sql.SQLException;
+    method public void setBlob(int, java.io.InputStream, long) throws java.sql.SQLException;
+    method public void setBlob(int, java.io.InputStream) throws java.sql.SQLException;
+    method public void setBlob(String, java.io.InputStream, long) throws java.sql.SQLException;
+    method public void setBlob(String, java.sql.Blob) throws java.sql.SQLException;
+    method public void setBlob(String, java.io.InputStream) throws java.sql.SQLException;
+    method public void setBoolean(int, boolean) throws java.sql.SQLException;
+    method public void setBoolean(String, boolean) throws java.sql.SQLException;
+    method public void setByte(int, byte) throws java.sql.SQLException;
+    method public void setByte(String, byte) throws java.sql.SQLException;
+    method public void setBytes(int, byte[]) throws java.sql.SQLException;
+    method public void setBytes(String, byte[]) throws java.sql.SQLException;
+    method public void setCharacterStream(int, java.io.Reader, int) throws java.sql.SQLException;
+    method public void setCharacterStream(String, java.io.Reader, int) throws java.sql.SQLException;
+    method public void setCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
+    method public void setCharacterStream(String, java.io.Reader) throws java.sql.SQLException;
+    method public void setClob(int, java.sql.Clob) throws java.sql.SQLException;
+    method public void setClob(int, java.io.Reader, long) throws java.sql.SQLException;
+    method public void setClob(int, java.io.Reader) throws java.sql.SQLException;
+    method public void setClob(String, java.io.Reader, long) throws java.sql.SQLException;
+    method public void setClob(String, java.sql.Clob) throws java.sql.SQLException;
+    method public void setClob(String, java.io.Reader) throws java.sql.SQLException;
+    method public void setCommand(String) throws java.sql.SQLException;
+    method public void setConcurrency(int) throws java.sql.SQLException;
+    method public void setDataSourceName(String) throws java.sql.SQLException;
+    method public void setDate(int, java.sql.Date) throws java.sql.SQLException;
+    method public void setDate(int, java.sql.Date, java.util.Calendar) throws java.sql.SQLException;
+    method public void setDate(String, java.sql.Date) throws java.sql.SQLException;
+    method public void setDate(String, java.sql.Date, java.util.Calendar) throws java.sql.SQLException;
+    method public void setDouble(int, double) throws java.sql.SQLException;
+    method public void setDouble(String, double) throws java.sql.SQLException;
+    method public void setEscapeProcessing(boolean) throws java.sql.SQLException;
+    method public void setFloat(int, float) throws java.sql.SQLException;
+    method public void setFloat(String, float) throws java.sql.SQLException;
+    method public void setInt(int, int) throws java.sql.SQLException;
+    method public void setInt(String, int) throws java.sql.SQLException;
+    method public void setLong(int, long) throws java.sql.SQLException;
+    method public void setLong(String, long) throws java.sql.SQLException;
+    method public void setMaxFieldSize(int) throws java.sql.SQLException;
+    method public void setMaxRows(int) throws java.sql.SQLException;
+    method public void setNCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
+    method public void setNCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
+    method public void setNCharacterStream(String, java.io.Reader, long) throws java.sql.SQLException;
+    method public void setNCharacterStream(String, java.io.Reader) throws java.sql.SQLException;
+    method public void setNClob(String, java.sql.NClob) throws java.sql.SQLException;
+    method public void setNClob(String, java.io.Reader, long) throws java.sql.SQLException;
+    method public void setNClob(String, java.io.Reader) throws java.sql.SQLException;
+    method public void setNClob(int, java.io.Reader, long) throws java.sql.SQLException;
+    method public void setNClob(int, java.sql.NClob) throws java.sql.SQLException;
+    method public void setNClob(int, java.io.Reader) throws java.sql.SQLException;
+    method public void setNString(int, String) throws java.sql.SQLException;
+    method public void setNString(String, String) throws java.sql.SQLException;
+    method public void setNull(int, int) throws java.sql.SQLException;
+    method public void setNull(String, int) throws java.sql.SQLException;
+    method public void setNull(int, int, String) throws java.sql.SQLException;
+    method public void setNull(String, int, String) throws java.sql.SQLException;
+    method public void setObject(int, Object, int, int) throws java.sql.SQLException;
+    method public void setObject(String, Object, int, int) throws java.sql.SQLException;
+    method public void setObject(int, Object, int) throws java.sql.SQLException;
+    method public void setObject(String, Object, int) throws java.sql.SQLException;
+    method public void setObject(String, Object) throws java.sql.SQLException;
+    method public void setObject(int, Object) throws java.sql.SQLException;
+    method public void setPassword(String) throws java.sql.SQLException;
+    method public void setQueryTimeout(int) throws java.sql.SQLException;
+    method public void setReadOnly(boolean) throws java.sql.SQLException;
+    method public void setRef(int, java.sql.Ref) throws java.sql.SQLException;
+    method public void setRowId(int, java.sql.RowId) throws java.sql.SQLException;
+    method public void setRowId(String, java.sql.RowId) throws java.sql.SQLException;
+    method public void setSQLXML(int, java.sql.SQLXML) throws java.sql.SQLException;
+    method public void setSQLXML(String, java.sql.SQLXML) throws java.sql.SQLException;
+    method public void setShort(int, short) throws java.sql.SQLException;
+    method public void setShort(String, short) throws java.sql.SQLException;
+    method public void setString(int, String) throws java.sql.SQLException;
+    method public void setString(String, String) throws java.sql.SQLException;
+    method public void setTime(int, java.sql.Time) throws java.sql.SQLException;
+    method public void setTime(int, java.sql.Time, java.util.Calendar) throws java.sql.SQLException;
+    method public void setTime(String, java.sql.Time) throws java.sql.SQLException;
+    method public void setTime(String, java.sql.Time, java.util.Calendar) throws java.sql.SQLException;
+    method public void setTimestamp(int, java.sql.Timestamp) throws java.sql.SQLException;
+    method public void setTimestamp(String, java.sql.Timestamp) throws java.sql.SQLException;
+    method public void setTimestamp(int, java.sql.Timestamp, java.util.Calendar) throws java.sql.SQLException;
+    method public void setTimestamp(String, java.sql.Timestamp, java.util.Calendar) throws java.sql.SQLException;
+    method public void setTransactionIsolation(int) throws java.sql.SQLException;
+    method public void setType(int) throws java.sql.SQLException;
+    method public void setTypeMap(java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
+    method public void setURL(int, java.net.URL) throws java.sql.SQLException;
+    method public void setUrl(String) throws java.sql.SQLException;
+    method public void setUsername(String) throws java.sql.SQLException;
+  }
+
+  public class RowSetEvent extends java.util.EventObject {
+    ctor public RowSetEvent(javax.sql.RowSet);
+  }
+
+  public interface RowSetInternal {
+    method public java.sql.Connection getConnection() throws java.sql.SQLException;
+    method public java.sql.ResultSet getOriginal() throws java.sql.SQLException;
+    method public java.sql.ResultSet getOriginalRow() throws java.sql.SQLException;
+    method public Object[] getParams() throws java.sql.SQLException;
+    method public void setMetaData(javax.sql.RowSetMetaData) throws java.sql.SQLException;
+  }
+
+  public interface RowSetListener extends java.util.EventListener {
+    method public void cursorMoved(javax.sql.RowSetEvent);
+    method public void rowChanged(javax.sql.RowSetEvent);
+    method public void rowSetChanged(javax.sql.RowSetEvent);
+  }
+
+  public interface RowSetMetaData extends java.sql.ResultSetMetaData {
+    method public void setAutoIncrement(int, boolean) throws java.sql.SQLException;
+    method public void setCaseSensitive(int, boolean) throws java.sql.SQLException;
+    method public void setCatalogName(int, String) throws java.sql.SQLException;
+    method public void setColumnCount(int) throws java.sql.SQLException;
+    method public void setColumnDisplaySize(int, int) throws java.sql.SQLException;
+    method public void setColumnLabel(int, String) throws java.sql.SQLException;
+    method public void setColumnName(int, String) throws java.sql.SQLException;
+    method public void setColumnType(int, int) throws java.sql.SQLException;
+    method public void setColumnTypeName(int, String) throws java.sql.SQLException;
+    method public void setCurrency(int, boolean) throws java.sql.SQLException;
+    method public void setNullable(int, int) throws java.sql.SQLException;
+    method public void setPrecision(int, int) throws java.sql.SQLException;
+    method public void setScale(int, int) throws java.sql.SQLException;
+    method public void setSchemaName(int, String) throws java.sql.SQLException;
+    method public void setSearchable(int, boolean) throws java.sql.SQLException;
+    method public void setSigned(int, boolean) throws java.sql.SQLException;
+    method public void setTableName(int, String) throws java.sql.SQLException;
+  }
+
+  public interface RowSetReader {
+    method public void readData(javax.sql.RowSetInternal) throws java.sql.SQLException;
+  }
+
+  public interface RowSetWriter {
+    method public boolean writeData(javax.sql.RowSetInternal) throws java.sql.SQLException;
+  }
+
+  public class StatementEvent extends java.util.EventObject {
+    ctor public StatementEvent(javax.sql.PooledConnection, java.sql.PreparedStatement);
+    ctor public StatementEvent(javax.sql.PooledConnection, java.sql.PreparedStatement, java.sql.SQLException);
+    method public java.sql.SQLException getSQLException();
+    method public java.sql.PreparedStatement getStatement();
+  }
+
+  public interface StatementEventListener extends java.util.EventListener {
+    method public void statementClosed(javax.sql.StatementEvent);
+    method public void statementErrorOccurred(javax.sql.StatementEvent);
+  }
+
+}
+
+package javax.xml {
+
+  public final class XMLConstants {
+    field public static final String DEFAULT_NS_PREFIX = "";
+    field public static final String FEATURE_SECURE_PROCESSING = "http://javax.xml.XMLConstants/feature/secure-processing";
+    field public static final String NULL_NS_URI = "";
+    field public static final String RELAXNG_NS_URI = "http://relaxng.org/ns/structure/1.0";
+    field public static final String W3C_XML_SCHEMA_INSTANCE_NS_URI = "http://www.w3.org/2001/XMLSchema-instance";
+    field public static final String W3C_XML_SCHEMA_NS_URI = "http://www.w3.org/2001/XMLSchema";
+    field public static final String W3C_XPATH_DATATYPE_NS_URI = "http://www.w3.org/2003/11/xpath-datatypes";
+    field public static final String XMLNS_ATTRIBUTE = "xmlns";
+    field public static final String XMLNS_ATTRIBUTE_NS_URI = "http://www.w3.org/2000/xmlns/";
+    field public static final String XML_DTD_NS_URI = "http://www.w3.org/TR/REC-xml";
+    field public static final String XML_NS_PREFIX = "xml";
+    field public static final String XML_NS_URI = "http://www.w3.org/XML/1998/namespace";
+  }
+
+}
+
+package javax.xml.datatype {
+
+  public class DatatypeConfigurationException extends java.lang.Exception {
+    ctor public DatatypeConfigurationException();
+    ctor public DatatypeConfigurationException(String);
+    ctor public DatatypeConfigurationException(String, Throwable);
+    ctor public DatatypeConfigurationException(Throwable);
+  }
+
+  public final class DatatypeConstants {
+    field public static final int APRIL = 4; // 0x4
+    field public static final int AUGUST = 8; // 0x8
+    field public static final javax.xml.namespace.QName DATE;
+    field public static final javax.xml.namespace.QName DATETIME;
+    field public static final javax.xml.datatype.DatatypeConstants.Field DAYS;
+    field public static final int DECEMBER = 12; // 0xc
+    field public static final javax.xml.namespace.QName DURATION;
+    field public static final javax.xml.namespace.QName DURATION_DAYTIME;
+    field public static final javax.xml.namespace.QName DURATION_YEARMONTH;
+    field public static final int EQUAL = 0; // 0x0
+    field public static final int FEBRUARY = 2; // 0x2
+    field public static final int FIELD_UNDEFINED = -2147483648; // 0x80000000
+    field public static final javax.xml.namespace.QName GDAY;
+    field public static final javax.xml.namespace.QName GMONTH;
+    field public static final javax.xml.namespace.QName GMONTHDAY;
+    field public static final int GREATER = 1; // 0x1
+    field public static final javax.xml.namespace.QName GYEAR;
+    field public static final javax.xml.namespace.QName GYEARMONTH;
+    field public static final javax.xml.datatype.DatatypeConstants.Field HOURS;
+    field public static final int INDETERMINATE = 2; // 0x2
+    field public static final int JANUARY = 1; // 0x1
+    field public static final int JULY = 7; // 0x7
+    field public static final int JUNE = 6; // 0x6
+    field public static final int LESSER = -1; // 0xffffffff
+    field public static final int MARCH = 3; // 0x3
+    field public static final int MAX_TIMEZONE_OFFSET = -840; // 0xfffffcb8
+    field public static final int MAY = 5; // 0x5
+    field public static final javax.xml.datatype.DatatypeConstants.Field MINUTES;
+    field public static final int MIN_TIMEZONE_OFFSET = 840; // 0x348
+    field public static final javax.xml.datatype.DatatypeConstants.Field MONTHS;
+    field public static final int NOVEMBER = 11; // 0xb
+    field public static final int OCTOBER = 10; // 0xa
+    field public static final javax.xml.datatype.DatatypeConstants.Field SECONDS;
+    field public static final int SEPTEMBER = 9; // 0x9
+    field public static final javax.xml.namespace.QName TIME;
+    field public static final javax.xml.datatype.DatatypeConstants.Field YEARS;
+  }
+
+  public static final class DatatypeConstants.Field {
+    method public int getId();
+  }
+
+  public abstract class DatatypeFactory {
+    ctor protected DatatypeFactory();
+    method public abstract javax.xml.datatype.Duration newDuration(String);
+    method public abstract javax.xml.datatype.Duration newDuration(long);
+    method public abstract javax.xml.datatype.Duration newDuration(boolean, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigDecimal);
+    method public javax.xml.datatype.Duration newDuration(boolean, int, int, int, int, int, int);
+    method public javax.xml.datatype.Duration newDurationDayTime(String);
+    method public javax.xml.datatype.Duration newDurationDayTime(long);
+    method public javax.xml.datatype.Duration newDurationDayTime(boolean, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
+    method public javax.xml.datatype.Duration newDurationDayTime(boolean, int, int, int, int);
+    method public javax.xml.datatype.Duration newDurationYearMonth(String);
+    method public javax.xml.datatype.Duration newDurationYearMonth(long);
+    method public javax.xml.datatype.Duration newDurationYearMonth(boolean, java.math.BigInteger, java.math.BigInteger);
+    method public javax.xml.datatype.Duration newDurationYearMonth(boolean, int, int);
+    method public static javax.xml.datatype.DatatypeFactory newInstance() throws javax.xml.datatype.DatatypeConfigurationException;
+    method public static javax.xml.datatype.DatatypeFactory newInstance(String, ClassLoader) throws javax.xml.datatype.DatatypeConfigurationException;
+    method public abstract javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendar();
+    method public abstract javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendar(String);
+    method public abstract javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendar(java.util.GregorianCalendar);
+    method public abstract javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendar(java.math.BigInteger, int, int, int, int, int, java.math.BigDecimal, int);
+    method public javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendar(int, int, int, int, int, int, int, int);
+    method public javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendarDate(int, int, int, int);
+    method public javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendarTime(int, int, int, int);
+    method public javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendarTime(int, int, int, java.math.BigDecimal, int);
+    method public javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendarTime(int, int, int, int, int);
+    field public static final String DATATYPEFACTORY_IMPLEMENTATION_CLASS;
+    field public static final String DATATYPEFACTORY_PROPERTY = "javax.xml.datatype.DatatypeFactory";
+  }
+
+  public abstract class Duration {
+    ctor public Duration();
+    method public abstract javax.xml.datatype.Duration add(javax.xml.datatype.Duration);
+    method public abstract void addTo(java.util.Calendar);
+    method public void addTo(java.util.Date);
+    method public abstract int compare(javax.xml.datatype.Duration);
+    method public int getDays();
+    method public abstract Number getField(javax.xml.datatype.DatatypeConstants.Field);
+    method public int getHours();
+    method public int getMinutes();
+    method public int getMonths();
+    method public int getSeconds();
+    method public abstract int getSign();
+    method public long getTimeInMillis(java.util.Calendar);
+    method public long getTimeInMillis(java.util.Date);
+    method public javax.xml.namespace.QName getXMLSchemaType();
+    method public int getYears();
+    method public abstract int hashCode();
+    method public boolean isLongerThan(javax.xml.datatype.Duration);
+    method public abstract boolean isSet(javax.xml.datatype.DatatypeConstants.Field);
+    method public boolean isShorterThan(javax.xml.datatype.Duration);
+    method public javax.xml.datatype.Duration multiply(int);
+    method public abstract javax.xml.datatype.Duration multiply(java.math.BigDecimal);
+    method public abstract javax.xml.datatype.Duration negate();
+    method public abstract javax.xml.datatype.Duration normalizeWith(java.util.Calendar);
+    method public javax.xml.datatype.Duration subtract(javax.xml.datatype.Duration);
+  }
+
+  public abstract class XMLGregorianCalendar implements java.lang.Cloneable {
+    ctor public XMLGregorianCalendar();
+    method public abstract void add(javax.xml.datatype.Duration);
+    method public abstract void clear();
+    method public abstract Object clone();
+    method public abstract int compare(javax.xml.datatype.XMLGregorianCalendar);
+    method public abstract int getDay();
+    method public abstract java.math.BigInteger getEon();
+    method public abstract java.math.BigInteger getEonAndYear();
+    method public abstract java.math.BigDecimal getFractionalSecond();
+    method public abstract int getHour();
+    method public int getMillisecond();
+    method public abstract int getMinute();
+    method public abstract int getMonth();
+    method public abstract int getSecond();
+    method public abstract java.util.TimeZone getTimeZone(int);
+    method public abstract int getTimezone();
+    method public abstract javax.xml.namespace.QName getXMLSchemaType();
+    method public abstract int getYear();
+    method public abstract boolean isValid();
+    method public abstract javax.xml.datatype.XMLGregorianCalendar normalize();
+    method public abstract void reset();
+    method public abstract void setDay(int);
+    method public abstract void setFractionalSecond(java.math.BigDecimal);
+    method public abstract void setHour(int);
+    method public abstract void setMillisecond(int);
+    method public abstract void setMinute(int);
+    method public abstract void setMonth(int);
+    method public abstract void setSecond(int);
+    method public void setTime(int, int, int);
+    method public void setTime(int, int, int, java.math.BigDecimal);
+    method public void setTime(int, int, int, int);
+    method public abstract void setTimezone(int);
+    method public abstract void setYear(java.math.BigInteger);
+    method public abstract void setYear(int);
+    method public abstract java.util.GregorianCalendar toGregorianCalendar();
+    method public abstract java.util.GregorianCalendar toGregorianCalendar(java.util.TimeZone, java.util.Locale, javax.xml.datatype.XMLGregorianCalendar);
+    method public abstract String toXMLFormat();
+  }
+
+}
+
+package javax.xml.namespace {
+
+  public interface NamespaceContext {
+    method public String getNamespaceURI(String);
+    method public String getPrefix(String);
+    method public java.util.Iterator getPrefixes(String);
+  }
+
+  public class QName implements java.io.Serializable {
+    ctor public QName(String, String);
+    ctor public QName(String, String, String);
+    ctor public QName(String);
+    method public final boolean equals(Object);
+    method public String getLocalPart();
+    method public String getNamespaceURI();
+    method public String getPrefix();
+    method public final int hashCode();
+    method public static javax.xml.namespace.QName valueOf(String);
+  }
+
+}
+
+package javax.xml.parsers {
+
+  public abstract class DocumentBuilder {
+    ctor protected DocumentBuilder();
+    method public abstract org.w3c.dom.DOMImplementation getDOMImplementation();
+    method public javax.xml.validation.Schema getSchema();
+    method public abstract boolean isNamespaceAware();
+    method public abstract boolean isValidating();
+    method public boolean isXIncludeAware();
+    method public abstract org.w3c.dom.Document newDocument();
+    method public org.w3c.dom.Document parse(java.io.InputStream) throws java.io.IOException, org.xml.sax.SAXException;
+    method public org.w3c.dom.Document parse(java.io.InputStream, String) throws java.io.IOException, org.xml.sax.SAXException;
+    method public org.w3c.dom.Document parse(String) throws java.io.IOException, org.xml.sax.SAXException;
+    method public org.w3c.dom.Document parse(java.io.File) throws java.io.IOException, org.xml.sax.SAXException;
+    method public abstract org.w3c.dom.Document parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void reset();
+    method public abstract void setEntityResolver(org.xml.sax.EntityResolver);
+    method public abstract void setErrorHandler(org.xml.sax.ErrorHandler);
+  }
+
+  public abstract class DocumentBuilderFactory {
+    ctor protected DocumentBuilderFactory();
+    method public abstract Object getAttribute(String) throws java.lang.IllegalArgumentException;
+    method public abstract boolean getFeature(String) throws javax.xml.parsers.ParserConfigurationException;
+    method public javax.xml.validation.Schema getSchema();
+    method public boolean isCoalescing();
+    method public boolean isExpandEntityReferences();
+    method public boolean isIgnoringComments();
+    method public boolean isIgnoringElementContentWhitespace();
+    method public boolean isNamespaceAware();
+    method public boolean isValidating();
+    method public boolean isXIncludeAware();
+    method public abstract javax.xml.parsers.DocumentBuilder newDocumentBuilder() throws javax.xml.parsers.ParserConfigurationException;
+    method public static javax.xml.parsers.DocumentBuilderFactory newInstance();
+    method public static javax.xml.parsers.DocumentBuilderFactory newInstance(String, ClassLoader);
+    method public abstract void setAttribute(String, Object) throws java.lang.IllegalArgumentException;
+    method public void setCoalescing(boolean);
+    method public void setExpandEntityReferences(boolean);
+    method public abstract void setFeature(String, boolean) throws javax.xml.parsers.ParserConfigurationException;
+    method public void setIgnoringComments(boolean);
+    method public void setIgnoringElementContentWhitespace(boolean);
+    method public void setNamespaceAware(boolean);
+    method public void setSchema(javax.xml.validation.Schema);
+    method public void setValidating(boolean);
+    method public void setXIncludeAware(boolean);
+  }
+
+  public class FactoryConfigurationError extends java.lang.Error {
+    ctor public FactoryConfigurationError();
+    ctor public FactoryConfigurationError(String);
+    ctor public FactoryConfigurationError(Exception);
+    ctor public FactoryConfigurationError(Exception, String);
+    method public Exception getException();
+  }
+
+  public class ParserConfigurationException extends java.lang.Exception {
+    ctor public ParserConfigurationException();
+    ctor public ParserConfigurationException(String);
+  }
+
+  public abstract class SAXParser {
+    ctor protected SAXParser();
+    method public abstract org.xml.sax.Parser getParser() throws org.xml.sax.SAXException;
+    method public abstract Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public javax.xml.validation.Schema getSchema();
+    method public abstract org.xml.sax.XMLReader getXMLReader() throws org.xml.sax.SAXException;
+    method public abstract boolean isNamespaceAware();
+    method public abstract boolean isValidating();
+    method public boolean isXIncludeAware();
+    method public void parse(java.io.InputStream, org.xml.sax.HandlerBase) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void parse(java.io.InputStream, org.xml.sax.HandlerBase, String) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void parse(java.io.InputStream, org.xml.sax.helpers.DefaultHandler) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void parse(java.io.InputStream, org.xml.sax.helpers.DefaultHandler, String) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void parse(String, org.xml.sax.HandlerBase) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void parse(String, org.xml.sax.helpers.DefaultHandler) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void parse(java.io.File, org.xml.sax.HandlerBase) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void parse(java.io.File, org.xml.sax.helpers.DefaultHandler) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void parse(org.xml.sax.InputSource, org.xml.sax.HandlerBase) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void parse(org.xml.sax.InputSource, org.xml.sax.helpers.DefaultHandler) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void reset();
+    method public abstract void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+  }
+
+  public abstract class SAXParserFactory {
+    ctor protected SAXParserFactory();
+    method public abstract boolean getFeature(String) throws javax.xml.parsers.ParserConfigurationException, org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public javax.xml.validation.Schema getSchema();
+    method public boolean isNamespaceAware();
+    method public boolean isValidating();
+    method public boolean isXIncludeAware();
+    method public static javax.xml.parsers.SAXParserFactory newInstance();
+    method public static javax.xml.parsers.SAXParserFactory newInstance(String, ClassLoader);
+    method public abstract javax.xml.parsers.SAXParser newSAXParser() throws javax.xml.parsers.ParserConfigurationException, org.xml.sax.SAXException;
+    method public abstract void setFeature(String, boolean) throws javax.xml.parsers.ParserConfigurationException, org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public void setNamespaceAware(boolean);
+    method public void setSchema(javax.xml.validation.Schema);
+    method public void setValidating(boolean);
+    method public void setXIncludeAware(boolean);
+  }
+
+}
+
+package javax.xml.transform {
+
+  public interface ErrorListener {
+    method public void error(javax.xml.transform.TransformerException) throws javax.xml.transform.TransformerException;
+    method public void fatalError(javax.xml.transform.TransformerException) throws javax.xml.transform.TransformerException;
+    method public void warning(javax.xml.transform.TransformerException) throws javax.xml.transform.TransformerException;
+  }
+
+  public class OutputKeys {
+    field public static final String CDATA_SECTION_ELEMENTS = "cdata-section-elements";
+    field public static final String DOCTYPE_PUBLIC = "doctype-public";
+    field public static final String DOCTYPE_SYSTEM = "doctype-system";
+    field public static final String ENCODING = "encoding";
+    field public static final String INDENT = "indent";
+    field public static final String MEDIA_TYPE = "media-type";
+    field public static final String METHOD = "method";
+    field public static final String OMIT_XML_DECLARATION = "omit-xml-declaration";
+    field public static final String STANDALONE = "standalone";
+    field public static final String VERSION = "version";
+  }
+
+  public interface Result {
+    method public String getSystemId();
+    method public void setSystemId(String);
+    field public static final String PI_DISABLE_OUTPUT_ESCAPING = "javax.xml.transform.disable-output-escaping";
+    field public static final String PI_ENABLE_OUTPUT_ESCAPING = "javax.xml.transform.enable-output-escaping";
+  }
+
+  public interface Source {
+    method public String getSystemId();
+    method public void setSystemId(String);
+  }
+
+  public interface SourceLocator {
+    method public int getColumnNumber();
+    method public int getLineNumber();
+    method public String getPublicId();
+    method public String getSystemId();
+  }
+
+  public interface Templates {
+    method public java.util.Properties getOutputProperties();
+    method public javax.xml.transform.Transformer newTransformer() throws javax.xml.transform.TransformerConfigurationException;
+  }
+
+  public abstract class Transformer {
+    ctor protected Transformer();
+    method public abstract void clearParameters();
+    method public abstract javax.xml.transform.ErrorListener getErrorListener();
+    method public abstract java.util.Properties getOutputProperties();
+    method public abstract String getOutputProperty(String) throws java.lang.IllegalArgumentException;
+    method public abstract Object getParameter(String);
+    method public abstract javax.xml.transform.URIResolver getURIResolver();
+    method public void reset();
+    method public abstract void setErrorListener(javax.xml.transform.ErrorListener) throws java.lang.IllegalArgumentException;
+    method public abstract void setOutputProperties(java.util.Properties);
+    method public abstract void setOutputProperty(String, String) throws java.lang.IllegalArgumentException;
+    method public abstract void setParameter(String, Object);
+    method public abstract void setURIResolver(javax.xml.transform.URIResolver);
+    method public abstract void transform(javax.xml.transform.Source, javax.xml.transform.Result) throws javax.xml.transform.TransformerException;
+  }
+
+  public class TransformerConfigurationException extends javax.xml.transform.TransformerException {
+    ctor public TransformerConfigurationException();
+    ctor public TransformerConfigurationException(String);
+    ctor public TransformerConfigurationException(Throwable);
+    ctor public TransformerConfigurationException(String, Throwable);
+    ctor public TransformerConfigurationException(String, javax.xml.transform.SourceLocator);
+    ctor public TransformerConfigurationException(String, javax.xml.transform.SourceLocator, Throwable);
+  }
+
+  public class TransformerException extends java.lang.Exception {
+    ctor public TransformerException(String);
+    ctor public TransformerException(Throwable);
+    ctor public TransformerException(String, Throwable);
+    ctor public TransformerException(String, javax.xml.transform.SourceLocator);
+    ctor public TransformerException(String, javax.xml.transform.SourceLocator, Throwable);
+    method public Throwable getException();
+    method public String getLocationAsString();
+    method public javax.xml.transform.SourceLocator getLocator();
+    method public String getMessageAndLocation();
+    method public void setLocator(javax.xml.transform.SourceLocator);
+  }
+
+  public abstract class TransformerFactory {
+    ctor protected TransformerFactory();
+    method public abstract javax.xml.transform.Source getAssociatedStylesheet(javax.xml.transform.Source, String, String, String) throws javax.xml.transform.TransformerConfigurationException;
+    method public abstract Object getAttribute(String);
+    method public abstract javax.xml.transform.ErrorListener getErrorListener();
+    method public abstract boolean getFeature(String);
+    method public abstract javax.xml.transform.URIResolver getURIResolver();
+    method public static javax.xml.transform.TransformerFactory newInstance() throws javax.xml.transform.TransformerFactoryConfigurationError;
+    method public static javax.xml.transform.TransformerFactory newInstance(String, ClassLoader) throws javax.xml.transform.TransformerFactoryConfigurationError;
+    method public abstract javax.xml.transform.Templates newTemplates(javax.xml.transform.Source) throws javax.xml.transform.TransformerConfigurationException;
+    method public abstract javax.xml.transform.Transformer newTransformer(javax.xml.transform.Source) throws javax.xml.transform.TransformerConfigurationException;
+    method public abstract javax.xml.transform.Transformer newTransformer() throws javax.xml.transform.TransformerConfigurationException;
+    method public abstract void setAttribute(String, Object);
+    method public abstract void setErrorListener(javax.xml.transform.ErrorListener);
+    method public abstract void setFeature(String, boolean) throws javax.xml.transform.TransformerConfigurationException;
+    method public abstract void setURIResolver(javax.xml.transform.URIResolver);
+  }
+
+  public class TransformerFactoryConfigurationError extends java.lang.Error {
+    ctor public TransformerFactoryConfigurationError();
+    ctor public TransformerFactoryConfigurationError(String);
+    ctor public TransformerFactoryConfigurationError(Exception);
+    ctor public TransformerFactoryConfigurationError(Exception, String);
+    method public Exception getException();
+  }
+
+  public interface URIResolver {
+    method public javax.xml.transform.Source resolve(String, String) throws javax.xml.transform.TransformerException;
+  }
+
+}
+
+package javax.xml.transform.dom {
+
+  public interface DOMLocator extends javax.xml.transform.SourceLocator {
+    method public org.w3c.dom.Node getOriginatingNode();
+  }
+
+  public class DOMResult implements javax.xml.transform.Result {
+    ctor public DOMResult();
+    ctor public DOMResult(org.w3c.dom.Node);
+    ctor public DOMResult(org.w3c.dom.Node, String);
+    ctor public DOMResult(org.w3c.dom.Node, org.w3c.dom.Node);
+    ctor public DOMResult(org.w3c.dom.Node, org.w3c.dom.Node, String);
+    method public org.w3c.dom.Node getNextSibling();
+    method public org.w3c.dom.Node getNode();
+    method public String getSystemId();
+    method public void setNextSibling(org.w3c.dom.Node);
+    method public void setNode(org.w3c.dom.Node);
+    method public void setSystemId(String);
+    field public static final String FEATURE = "http://javax.xml.transform.dom.DOMResult/feature";
+  }
+
+  public class DOMSource implements javax.xml.transform.Source {
+    ctor public DOMSource();
+    ctor public DOMSource(org.w3c.dom.Node);
+    ctor public DOMSource(org.w3c.dom.Node, String);
+    method public org.w3c.dom.Node getNode();
+    method public String getSystemId();
+    method public void setNode(org.w3c.dom.Node);
+    method public void setSystemId(String);
+    field public static final String FEATURE = "http://javax.xml.transform.dom.DOMSource/feature";
+  }
+
+}
+
+package javax.xml.transform.sax {
+
+  public class SAXResult implements javax.xml.transform.Result {
+    ctor public SAXResult();
+    ctor public SAXResult(org.xml.sax.ContentHandler);
+    method public org.xml.sax.ContentHandler getHandler();
+    method public org.xml.sax.ext.LexicalHandler getLexicalHandler();
+    method public String getSystemId();
+    method public void setHandler(org.xml.sax.ContentHandler);
+    method public void setLexicalHandler(org.xml.sax.ext.LexicalHandler);
+    method public void setSystemId(String);
+    field public static final String FEATURE = "http://javax.xml.transform.sax.SAXResult/feature";
+  }
+
+  public class SAXSource implements javax.xml.transform.Source {
+    ctor public SAXSource();
+    ctor public SAXSource(org.xml.sax.XMLReader, org.xml.sax.InputSource);
+    ctor public SAXSource(org.xml.sax.InputSource);
+    method public org.xml.sax.InputSource getInputSource();
+    method public String getSystemId();
+    method public org.xml.sax.XMLReader getXMLReader();
+    method public void setInputSource(org.xml.sax.InputSource);
+    method public void setSystemId(String);
+    method public void setXMLReader(org.xml.sax.XMLReader);
+    method public static org.xml.sax.InputSource sourceToInputSource(javax.xml.transform.Source);
+    field public static final String FEATURE = "http://javax.xml.transform.sax.SAXSource/feature";
+  }
+
+  public abstract class SAXTransformerFactory extends javax.xml.transform.TransformerFactory {
+    ctor protected SAXTransformerFactory();
+    method public abstract javax.xml.transform.sax.TemplatesHandler newTemplatesHandler() throws javax.xml.transform.TransformerConfigurationException;
+    method public abstract javax.xml.transform.sax.TransformerHandler newTransformerHandler(javax.xml.transform.Source) throws javax.xml.transform.TransformerConfigurationException;
+    method public abstract javax.xml.transform.sax.TransformerHandler newTransformerHandler(javax.xml.transform.Templates) throws javax.xml.transform.TransformerConfigurationException;
+    method public abstract javax.xml.transform.sax.TransformerHandler newTransformerHandler() throws javax.xml.transform.TransformerConfigurationException;
+    method public abstract org.xml.sax.XMLFilter newXMLFilter(javax.xml.transform.Source) throws javax.xml.transform.TransformerConfigurationException;
+    method public abstract org.xml.sax.XMLFilter newXMLFilter(javax.xml.transform.Templates) throws javax.xml.transform.TransformerConfigurationException;
+    field public static final String FEATURE = "http://javax.xml.transform.sax.SAXTransformerFactory/feature";
+    field public static final String FEATURE_XMLFILTER = "http://javax.xml.transform.sax.SAXTransformerFactory/feature/xmlfilter";
+  }
+
+  public interface TemplatesHandler extends org.xml.sax.ContentHandler {
+    method public String getSystemId();
+    method public javax.xml.transform.Templates getTemplates();
+    method public void setSystemId(String);
+  }
+
+  public interface TransformerHandler extends org.xml.sax.ContentHandler org.xml.sax.DTDHandler org.xml.sax.ext.LexicalHandler {
+    method public String getSystemId();
+    method public javax.xml.transform.Transformer getTransformer();
+    method public void setResult(javax.xml.transform.Result) throws java.lang.IllegalArgumentException;
+    method public void setSystemId(String);
+  }
+
+}
+
+package javax.xml.transform.stream {
+
+  public class StreamResult implements javax.xml.transform.Result {
+    ctor public StreamResult();
+    ctor public StreamResult(java.io.OutputStream);
+    ctor public StreamResult(java.io.Writer);
+    ctor public StreamResult(String);
+    ctor public StreamResult(java.io.File);
+    method public java.io.OutputStream getOutputStream();
+    method public String getSystemId();
+    method public java.io.Writer getWriter();
+    method public void setOutputStream(java.io.OutputStream);
+    method public void setSystemId(String);
+    method public void setSystemId(java.io.File);
+    method public void setWriter(java.io.Writer);
+    field public static final String FEATURE = "http://javax.xml.transform.stream.StreamResult/feature";
+  }
+
+  public class StreamSource implements javax.xml.transform.Source {
+    ctor public StreamSource();
+    ctor public StreamSource(java.io.InputStream);
+    ctor public StreamSource(java.io.InputStream, String);
+    ctor public StreamSource(java.io.Reader);
+    ctor public StreamSource(java.io.Reader, String);
+    ctor public StreamSource(String);
+    ctor public StreamSource(java.io.File);
+    method public java.io.InputStream getInputStream();
+    method public String getPublicId();
+    method public java.io.Reader getReader();
+    method public String getSystemId();
+    method public void setInputStream(java.io.InputStream);
+    method public void setPublicId(String);
+    method public void setReader(java.io.Reader);
+    method public void setSystemId(String);
+    method public void setSystemId(java.io.File);
+    field public static final String FEATURE = "http://javax.xml.transform.stream.StreamSource/feature";
+  }
+
+}
+
+package javax.xml.validation {
+
+  public abstract class Schema {
+    ctor protected Schema();
+    method public abstract javax.xml.validation.Validator newValidator();
+    method public abstract javax.xml.validation.ValidatorHandler newValidatorHandler();
+  }
+
+  public abstract class SchemaFactory {
+    ctor protected SchemaFactory();
+    method public abstract org.xml.sax.ErrorHandler getErrorHandler();
+    method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public abstract org.w3c.dom.ls.LSResourceResolver getResourceResolver();
+    method public abstract boolean isSchemaLanguageSupported(String);
+    method public static javax.xml.validation.SchemaFactory newInstance(String);
+    method public static javax.xml.validation.SchemaFactory newInstance(String, String, ClassLoader);
+    method public javax.xml.validation.Schema newSchema(javax.xml.transform.Source) throws org.xml.sax.SAXException;
+    method public javax.xml.validation.Schema newSchema(java.io.File) throws org.xml.sax.SAXException;
+    method public javax.xml.validation.Schema newSchema(java.net.URL) throws org.xml.sax.SAXException;
+    method public abstract javax.xml.validation.Schema newSchema(javax.xml.transform.Source[]) throws org.xml.sax.SAXException;
+    method public abstract javax.xml.validation.Schema newSchema() throws org.xml.sax.SAXException;
+    method public abstract void setErrorHandler(org.xml.sax.ErrorHandler);
+    method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public abstract void setResourceResolver(org.w3c.dom.ls.LSResourceResolver);
+  }
+
+  public abstract class SchemaFactoryLoader {
+    ctor protected SchemaFactoryLoader();
+    method public abstract javax.xml.validation.SchemaFactory newFactory(String);
+  }
+
+  public abstract class TypeInfoProvider {
+    ctor protected TypeInfoProvider();
+    method public abstract org.w3c.dom.TypeInfo getAttributeTypeInfo(int);
+    method public abstract org.w3c.dom.TypeInfo getElementTypeInfo();
+    method public abstract boolean isIdAttribute(int);
+    method public abstract boolean isSpecified(int);
+  }
+
+  public abstract class Validator {
+    ctor protected Validator();
+    method public abstract org.xml.sax.ErrorHandler getErrorHandler();
+    method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public abstract org.w3c.dom.ls.LSResourceResolver getResourceResolver();
+    method public abstract void reset();
+    method public abstract void setErrorHandler(org.xml.sax.ErrorHandler);
+    method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public abstract void setResourceResolver(org.w3c.dom.ls.LSResourceResolver);
+    method public void validate(javax.xml.transform.Source) throws java.io.IOException, org.xml.sax.SAXException;
+    method public abstract void validate(javax.xml.transform.Source, javax.xml.transform.Result) throws java.io.IOException, org.xml.sax.SAXException;
+  }
+
+  public abstract class ValidatorHandler implements org.xml.sax.ContentHandler {
+    ctor protected ValidatorHandler();
+    method public abstract org.xml.sax.ContentHandler getContentHandler();
+    method public abstract org.xml.sax.ErrorHandler getErrorHandler();
+    method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public abstract org.w3c.dom.ls.LSResourceResolver getResourceResolver();
+    method public abstract javax.xml.validation.TypeInfoProvider getTypeInfoProvider();
+    method public abstract void setContentHandler(org.xml.sax.ContentHandler);
+    method public abstract void setErrorHandler(org.xml.sax.ErrorHandler);
+    method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public abstract void setResourceResolver(org.w3c.dom.ls.LSResourceResolver);
+  }
+
+}
+
+package javax.xml.xpath {
+
+  public interface XPath {
+    method public javax.xml.xpath.XPathExpression compile(String) throws javax.xml.xpath.XPathExpressionException;
+    method public Object evaluate(String, Object, javax.xml.namespace.QName) throws javax.xml.xpath.XPathExpressionException;
+    method public String evaluate(String, Object) throws javax.xml.xpath.XPathExpressionException;
+    method public Object evaluate(String, org.xml.sax.InputSource, javax.xml.namespace.QName) throws javax.xml.xpath.XPathExpressionException;
+    method public String evaluate(String, org.xml.sax.InputSource) throws javax.xml.xpath.XPathExpressionException;
+    method public javax.xml.namespace.NamespaceContext getNamespaceContext();
+    method public javax.xml.xpath.XPathFunctionResolver getXPathFunctionResolver();
+    method public javax.xml.xpath.XPathVariableResolver getXPathVariableResolver();
+    method public void reset();
+    method public void setNamespaceContext(javax.xml.namespace.NamespaceContext);
+    method public void setXPathFunctionResolver(javax.xml.xpath.XPathFunctionResolver);
+    method public void setXPathVariableResolver(javax.xml.xpath.XPathVariableResolver);
+  }
+
+  public class XPathConstants {
+    field public static final javax.xml.namespace.QName BOOLEAN;
+    field public static final String DOM_OBJECT_MODEL = "http://java.sun.com/jaxp/xpath/dom";
+    field public static final javax.xml.namespace.QName NODE;
+    field public static final javax.xml.namespace.QName NODESET;
+    field public static final javax.xml.namespace.QName NUMBER;
+    field public static final javax.xml.namespace.QName STRING;
+  }
+
+  public class XPathException extends java.lang.Exception {
+    ctor public XPathException(String);
+    ctor public XPathException(Throwable);
+  }
+
+  public interface XPathExpression {
+    method public Object evaluate(Object, javax.xml.namespace.QName) throws javax.xml.xpath.XPathExpressionException;
+    method public String evaluate(Object) throws javax.xml.xpath.XPathExpressionException;
+    method public Object evaluate(org.xml.sax.InputSource, javax.xml.namespace.QName) throws javax.xml.xpath.XPathExpressionException;
+    method public String evaluate(org.xml.sax.InputSource) throws javax.xml.xpath.XPathExpressionException;
+  }
+
+  public class XPathExpressionException extends javax.xml.xpath.XPathException {
+    ctor public XPathExpressionException(String);
+    ctor public XPathExpressionException(Throwable);
+  }
+
+  public abstract class XPathFactory {
+    ctor protected XPathFactory();
+    method public abstract boolean getFeature(String) throws javax.xml.xpath.XPathFactoryConfigurationException;
+    method public abstract boolean isObjectModelSupported(String);
+    method public static final javax.xml.xpath.XPathFactory newInstance();
+    method public static final javax.xml.xpath.XPathFactory newInstance(String) throws javax.xml.xpath.XPathFactoryConfigurationException;
+    method public static javax.xml.xpath.XPathFactory newInstance(String, String, ClassLoader) throws javax.xml.xpath.XPathFactoryConfigurationException;
+    method public abstract javax.xml.xpath.XPath newXPath();
+    method public abstract void setFeature(String, boolean) throws javax.xml.xpath.XPathFactoryConfigurationException;
+    method public abstract void setXPathFunctionResolver(javax.xml.xpath.XPathFunctionResolver);
+    method public abstract void setXPathVariableResolver(javax.xml.xpath.XPathVariableResolver);
+    field public static final String DEFAULT_OBJECT_MODEL_URI = "http://java.sun.com/jaxp/xpath/dom";
+    field public static final String DEFAULT_PROPERTY_NAME = "javax.xml.xpath.XPathFactory";
+  }
+
+  public class XPathFactoryConfigurationException extends javax.xml.xpath.XPathException {
+    ctor public XPathFactoryConfigurationException(String);
+    ctor public XPathFactoryConfigurationException(Throwable);
+  }
+
+  public interface XPathFunction {
+    method public Object evaluate(java.util.List) throws javax.xml.xpath.XPathFunctionException;
+  }
+
+  public class XPathFunctionException extends javax.xml.xpath.XPathExpressionException {
+    ctor public XPathFunctionException(String);
+    ctor public XPathFunctionException(Throwable);
+  }
+
+  public interface XPathFunctionResolver {
+    method public javax.xml.xpath.XPathFunction resolveFunction(javax.xml.namespace.QName, int);
+  }
+
+  public interface XPathVariableResolver {
+    method public Object resolveVariable(javax.xml.namespace.QName);
+  }
+
+}
+
+package org.apache.http.conn {
+
+  @Deprecated public class ConnectTimeoutException extends java.io.InterruptedIOException {
+    ctor @Deprecated public ConnectTimeoutException();
+    ctor @Deprecated public ConnectTimeoutException(String);
+  }
+
+}
+
+package org.apache.http.conn.scheme {
+
+  @Deprecated public interface HostNameResolver {
+    method @Deprecated public java.net.InetAddress resolve(String) throws java.io.IOException;
+  }
+
+  @Deprecated public interface LayeredSocketFactory extends org.apache.http.conn.scheme.SocketFactory {
+    method @Deprecated public java.net.Socket createSocket(java.net.Socket, String, int, boolean) throws java.io.IOException, java.net.UnknownHostException;
+  }
+
+  @Deprecated public interface SocketFactory {
+    method @Deprecated public java.net.Socket connectSocket(java.net.Socket, String, int, java.net.InetAddress, int, org.apache.http.params.HttpParams) throws org.apache.http.conn.ConnectTimeoutException, java.io.IOException, java.net.UnknownHostException;
+    method @Deprecated public java.net.Socket createSocket() throws java.io.IOException;
+    method @Deprecated public boolean isSecure(java.net.Socket) throws java.lang.IllegalArgumentException;
+  }
+
+}
+
+package org.apache.http.conn.ssl {
+
+  @Deprecated public abstract class AbstractVerifier implements org.apache.http.conn.ssl.X509HostnameVerifier {
+    ctor @Deprecated public AbstractVerifier();
+    method @Deprecated public static boolean acceptableCountryWildcard(String);
+    method @Deprecated public static int countDots(String);
+    method @Deprecated public static String[] getCNs(java.security.cert.X509Certificate);
+    method @Deprecated public static String[] getDNSSubjectAlts(java.security.cert.X509Certificate);
+    method @Deprecated public final void verify(String, javax.net.ssl.SSLSocket) throws java.io.IOException;
+    method @Deprecated public final boolean verify(String, javax.net.ssl.SSLSession);
+    method @Deprecated public final void verify(String, java.security.cert.X509Certificate) throws javax.net.ssl.SSLException;
+    method @Deprecated public final void verify(String, String[], String[], boolean) throws javax.net.ssl.SSLException;
+  }
+
+  @Deprecated public class AllowAllHostnameVerifier extends org.apache.http.conn.ssl.AbstractVerifier {
+    ctor @Deprecated public AllowAllHostnameVerifier();
+    method @Deprecated public final String toString();
+    method @Deprecated public final void verify(String, String[], String[]);
+  }
+
+  @Deprecated public class BrowserCompatHostnameVerifier extends org.apache.http.conn.ssl.AbstractVerifier {
+    ctor @Deprecated public BrowserCompatHostnameVerifier();
+    method @Deprecated public final String toString();
+    method @Deprecated public final void verify(String, String[], String[]) throws javax.net.ssl.SSLException;
+  }
+
+  @Deprecated public class SSLSocketFactory implements org.apache.http.conn.scheme.LayeredSocketFactory {
+    ctor @Deprecated public SSLSocketFactory(String, java.security.KeyStore, String, java.security.KeyStore, java.security.SecureRandom, org.apache.http.conn.scheme.HostNameResolver) throws java.security.KeyManagementException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
+    ctor @Deprecated public SSLSocketFactory(java.security.KeyStore, String, java.security.KeyStore) throws java.security.KeyManagementException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
+    ctor @Deprecated public SSLSocketFactory(java.security.KeyStore, String) throws java.security.KeyManagementException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
+    ctor @Deprecated public SSLSocketFactory(java.security.KeyStore) throws java.security.KeyManagementException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
+    method @Deprecated public java.net.Socket connectSocket(java.net.Socket, String, int, java.net.InetAddress, int, org.apache.http.params.HttpParams) throws java.io.IOException;
+    method @Deprecated public java.net.Socket createSocket() throws java.io.IOException;
+    method @Deprecated public java.net.Socket createSocket(java.net.Socket, String, int, boolean) throws java.io.IOException, java.net.UnknownHostException;
+    method @Deprecated public org.apache.http.conn.ssl.X509HostnameVerifier getHostnameVerifier();
+    method @Deprecated public static org.apache.http.conn.ssl.SSLSocketFactory getSocketFactory();
+    method @Deprecated public boolean isSecure(java.net.Socket) throws java.lang.IllegalArgumentException;
+    method @Deprecated public void setHostnameVerifier(org.apache.http.conn.ssl.X509HostnameVerifier);
+    field @Deprecated public static final org.apache.http.conn.ssl.X509HostnameVerifier ALLOW_ALL_HOSTNAME_VERIFIER;
+    field @Deprecated public static final org.apache.http.conn.ssl.X509HostnameVerifier BROWSER_COMPATIBLE_HOSTNAME_VERIFIER;
+    field @Deprecated public static final String SSL = "SSL";
+    field @Deprecated public static final String SSLV2 = "SSLv2";
+    field @Deprecated public static final org.apache.http.conn.ssl.X509HostnameVerifier STRICT_HOSTNAME_VERIFIER;
+    field @Deprecated public static final String TLS = "TLS";
+  }
+
+  @Deprecated public class StrictHostnameVerifier extends org.apache.http.conn.ssl.AbstractVerifier {
+    ctor @Deprecated public StrictHostnameVerifier();
+    method @Deprecated public final String toString();
+    method @Deprecated public final void verify(String, String[], String[]) throws javax.net.ssl.SSLException;
+  }
+
+  @Deprecated public interface X509HostnameVerifier extends javax.net.ssl.HostnameVerifier {
+    method @Deprecated public void verify(String, javax.net.ssl.SSLSocket) throws java.io.IOException;
+    method @Deprecated public void verify(String, java.security.cert.X509Certificate) throws javax.net.ssl.SSLException;
+    method @Deprecated public void verify(String, String[], String[]) throws javax.net.ssl.SSLException;
+  }
+
+}
+
+package org.apache.http.params {
+
+  @Deprecated public interface CoreConnectionPNames {
+    field @Deprecated public static final String CONNECTION_TIMEOUT = "http.connection.timeout";
+    field @Deprecated public static final String MAX_HEADER_COUNT = "http.connection.max-header-count";
+    field @Deprecated public static final String MAX_LINE_LENGTH = "http.connection.max-line-length";
+    field @Deprecated public static final String SOCKET_BUFFER_SIZE = "http.socket.buffer-size";
+    field @Deprecated public static final String SO_LINGER = "http.socket.linger";
+    field @Deprecated public static final String SO_TIMEOUT = "http.socket.timeout";
+    field @Deprecated public static final String STALE_CONNECTION_CHECK = "http.connection.stalecheck";
+    field @Deprecated public static final String TCP_NODELAY = "http.tcp.nodelay";
+  }
+
+  @Deprecated public final class HttpConnectionParams implements org.apache.http.params.CoreConnectionPNames {
+    method @Deprecated public static int getConnectionTimeout(org.apache.http.params.HttpParams);
+    method @Deprecated public static int getLinger(org.apache.http.params.HttpParams);
+    method @Deprecated public static int getSoTimeout(org.apache.http.params.HttpParams);
+    method @Deprecated public static int getSocketBufferSize(org.apache.http.params.HttpParams);
+    method @Deprecated public static boolean getTcpNoDelay(org.apache.http.params.HttpParams);
+    method @Deprecated public static boolean isStaleCheckingEnabled(org.apache.http.params.HttpParams);
+    method @Deprecated public static void setConnectionTimeout(org.apache.http.params.HttpParams, int);
+    method @Deprecated public static void setLinger(org.apache.http.params.HttpParams, int);
+    method @Deprecated public static void setSoTimeout(org.apache.http.params.HttpParams, int);
+    method @Deprecated public static void setSocketBufferSize(org.apache.http.params.HttpParams, int);
+    method @Deprecated public static void setStaleCheckingEnabled(org.apache.http.params.HttpParams, boolean);
+    method @Deprecated public static void setTcpNoDelay(org.apache.http.params.HttpParams, boolean);
+  }
+
+  @Deprecated public interface HttpParams {
+    method @Deprecated public org.apache.http.params.HttpParams copy();
+    method @Deprecated public boolean getBooleanParameter(String, boolean);
+    method @Deprecated public double getDoubleParameter(String, double);
+    method @Deprecated public int getIntParameter(String, int);
+    method @Deprecated public long getLongParameter(String, long);
+    method @Deprecated public Object getParameter(String);
+    method @Deprecated public boolean isParameterFalse(String);
+    method @Deprecated public boolean isParameterTrue(String);
+    method @Deprecated public boolean removeParameter(String);
+    method @Deprecated public org.apache.http.params.HttpParams setBooleanParameter(String, boolean);
+    method @Deprecated public org.apache.http.params.HttpParams setDoubleParameter(String, double);
+    method @Deprecated public org.apache.http.params.HttpParams setIntParameter(String, int);
+    method @Deprecated public org.apache.http.params.HttpParams setLongParameter(String, long);
+    method @Deprecated public org.apache.http.params.HttpParams setParameter(String, Object);
+  }
+
+}
+
+package org.json {
+
+  public class JSONArray {
+    ctor public JSONArray();
+    ctor public JSONArray(java.util.Collection);
+    ctor public JSONArray(org.json.JSONTokener) throws org.json.JSONException;
+    ctor public JSONArray(String) throws org.json.JSONException;
+    ctor public JSONArray(Object) throws org.json.JSONException;
+    method public Object get(int) throws org.json.JSONException;
+    method public boolean getBoolean(int) throws org.json.JSONException;
+    method public double getDouble(int) throws org.json.JSONException;
+    method public int getInt(int) throws org.json.JSONException;
+    method public org.json.JSONArray getJSONArray(int) throws org.json.JSONException;
+    method public org.json.JSONObject getJSONObject(int) throws org.json.JSONException;
+    method public long getLong(int) throws org.json.JSONException;
+    method public String getString(int) throws org.json.JSONException;
+    method public boolean isNull(int);
+    method public String join(String) throws org.json.JSONException;
+    method public int length();
+    method public Object opt(int);
+    method public boolean optBoolean(int);
+    method public boolean optBoolean(int, boolean);
+    method public double optDouble(int);
+    method public double optDouble(int, double);
+    method public int optInt(int);
+    method public int optInt(int, int);
+    method public org.json.JSONArray optJSONArray(int);
+    method public org.json.JSONObject optJSONObject(int);
+    method public long optLong(int);
+    method public long optLong(int, long);
+    method public String optString(int);
+    method public String optString(int, String);
+    method public org.json.JSONArray put(boolean);
+    method public org.json.JSONArray put(double) throws org.json.JSONException;
+    method public org.json.JSONArray put(int);
+    method public org.json.JSONArray put(long);
+    method public org.json.JSONArray put(Object);
+    method public org.json.JSONArray put(int, boolean) throws org.json.JSONException;
+    method public org.json.JSONArray put(int, double) throws org.json.JSONException;
+    method public org.json.JSONArray put(int, int) throws org.json.JSONException;
+    method public org.json.JSONArray put(int, long) throws org.json.JSONException;
+    method public org.json.JSONArray put(int, Object) throws org.json.JSONException;
+    method public Object remove(int);
+    method public org.json.JSONObject toJSONObject(org.json.JSONArray) throws org.json.JSONException;
+    method public String toString(int) throws org.json.JSONException;
+  }
+
+  public class JSONException extends java.lang.Exception {
+    ctor public JSONException(String);
+    ctor public JSONException(String, Throwable);
+    ctor public JSONException(Throwable);
+  }
+
+  public class JSONObject {
+    ctor public JSONObject();
+    ctor public JSONObject(@NonNull java.util.Map);
+    ctor public JSONObject(@NonNull org.json.JSONTokener) throws org.json.JSONException;
+    ctor public JSONObject(@NonNull String) throws org.json.JSONException;
+    ctor public JSONObject(@NonNull org.json.JSONObject, @NonNull String[]) throws org.json.JSONException;
+    method @NonNull public org.json.JSONObject accumulate(@NonNull String, @Nullable Object) throws org.json.JSONException;
+    method @NonNull public Object get(@NonNull String) throws org.json.JSONException;
+    method public boolean getBoolean(@NonNull String) throws org.json.JSONException;
+    method public double getDouble(@NonNull String) throws org.json.JSONException;
+    method public int getInt(@NonNull String) throws org.json.JSONException;
+    method @NonNull public org.json.JSONArray getJSONArray(@NonNull String) throws org.json.JSONException;
+    method @NonNull public org.json.JSONObject getJSONObject(@NonNull String) throws org.json.JSONException;
+    method public long getLong(@NonNull String) throws org.json.JSONException;
+    method @NonNull public String getString(@NonNull String) throws org.json.JSONException;
+    method public boolean has(@Nullable String);
+    method public boolean isNull(@Nullable String);
+    method @NonNull public java.util.Iterator<java.lang.String> keys();
+    method public int length();
+    method @Nullable public org.json.JSONArray names();
+    method @NonNull public static String numberToString(@NonNull Number) throws org.json.JSONException;
+    method @Nullable public Object opt(@Nullable String);
+    method public boolean optBoolean(@Nullable String);
+    method public boolean optBoolean(@Nullable String, boolean);
+    method public double optDouble(@Nullable String);
+    method public double optDouble(@Nullable String, double);
+    method public int optInt(@Nullable String);
+    method public int optInt(@Nullable String, int);
+    method @Nullable public org.json.JSONArray optJSONArray(@Nullable String);
+    method @Nullable public org.json.JSONObject optJSONObject(@Nullable String);
+    method public long optLong(@Nullable String);
+    method public long optLong(@Nullable String, long);
+    method @NonNull public String optString(@Nullable String);
+    method @NonNull public String optString(@Nullable String, @NonNull String);
+    method @NonNull public org.json.JSONObject put(@NonNull String, boolean) throws org.json.JSONException;
+    method @NonNull public org.json.JSONObject put(@NonNull String, double) throws org.json.JSONException;
+    method @NonNull public org.json.JSONObject put(@NonNull String, int) throws org.json.JSONException;
+    method @NonNull public org.json.JSONObject put(@NonNull String, long) throws org.json.JSONException;
+    method @NonNull public org.json.JSONObject put(@NonNull String, @Nullable Object) throws org.json.JSONException;
+    method @NonNull public org.json.JSONObject putOpt(@Nullable String, @Nullable Object) throws org.json.JSONException;
+    method @NonNull public static String quote(@Nullable String);
+    method @Nullable public Object remove(@Nullable String);
+    method @Nullable public org.json.JSONArray toJSONArray(@Nullable org.json.JSONArray) throws org.json.JSONException;
+    method @NonNull public String toString(int) throws org.json.JSONException;
+    method @Nullable public static Object wrap(@Nullable Object);
+    field @NonNull public static final Object NULL;
+  }
+
+  public class JSONStringer {
+    ctor public JSONStringer();
+    method public org.json.JSONStringer array() throws org.json.JSONException;
+    method public org.json.JSONStringer endArray() throws org.json.JSONException;
+    method public org.json.JSONStringer endObject() throws org.json.JSONException;
+    method public org.json.JSONStringer key(String) throws org.json.JSONException;
+    method public org.json.JSONStringer object() throws org.json.JSONException;
+    method public org.json.JSONStringer value(Object) throws org.json.JSONException;
+    method public org.json.JSONStringer value(boolean) throws org.json.JSONException;
+    method public org.json.JSONStringer value(double) throws org.json.JSONException;
+    method public org.json.JSONStringer value(long) throws org.json.JSONException;
+  }
+
+  public class JSONTokener {
+    ctor public JSONTokener(String);
+    method public void back();
+    method public static int dehexchar(char);
+    method public boolean more();
+    method public char next();
+    method public char next(char) throws org.json.JSONException;
+    method public String next(int) throws org.json.JSONException;
+    method public char nextClean() throws org.json.JSONException;
+    method public String nextString(char) throws org.json.JSONException;
+    method public String nextTo(String);
+    method public String nextTo(char);
+    method public Object nextValue() throws org.json.JSONException;
+    method public void skipPast(String);
+    method public char skipTo(char);
+    method public org.json.JSONException syntaxError(String);
+  }
+
+}
+
+package org.w3c.dom {
+
+  public interface Attr extends org.w3c.dom.Node {
+    method public String getName();
+    method public org.w3c.dom.Element getOwnerElement();
+    method public org.w3c.dom.TypeInfo getSchemaTypeInfo();
+    method public boolean getSpecified();
+    method public String getValue();
+    method public boolean isId();
+    method public void setValue(String) throws org.w3c.dom.DOMException;
+  }
+
+  public interface CDATASection extends org.w3c.dom.Text {
+  }
+
+  public interface CharacterData extends org.w3c.dom.Node {
+    method public void appendData(String) throws org.w3c.dom.DOMException;
+    method public void deleteData(int, int) throws org.w3c.dom.DOMException;
+    method public String getData() throws org.w3c.dom.DOMException;
+    method public int getLength();
+    method public void insertData(int, String) throws org.w3c.dom.DOMException;
+    method public void replaceData(int, int, String) throws org.w3c.dom.DOMException;
+    method public void setData(String) throws org.w3c.dom.DOMException;
+    method public String substringData(int, int) throws org.w3c.dom.DOMException;
+  }
+
+  public interface Comment extends org.w3c.dom.CharacterData {
+  }
+
+  public interface DOMConfiguration {
+    method public boolean canSetParameter(String, Object);
+    method public Object getParameter(String) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.DOMStringList getParameterNames();
+    method public void setParameter(String, Object) throws org.w3c.dom.DOMException;
+  }
+
+  public interface DOMError {
+    method public org.w3c.dom.DOMLocator getLocation();
+    method public String getMessage();
+    method public Object getRelatedData();
+    method public Object getRelatedException();
+    method public short getSeverity();
+    method public String getType();
+    field public static final short SEVERITY_ERROR = 2; // 0x2
+    field public static final short SEVERITY_FATAL_ERROR = 3; // 0x3
+    field public static final short SEVERITY_WARNING = 1; // 0x1
+  }
+
+  public interface DOMErrorHandler {
+    method public boolean handleError(org.w3c.dom.DOMError);
+  }
+
+  public class DOMException extends java.lang.RuntimeException {
+    ctor public DOMException(short, String);
+    field public static final short DOMSTRING_SIZE_ERR = 2; // 0x2
+    field public static final short HIERARCHY_REQUEST_ERR = 3; // 0x3
+    field public static final short INDEX_SIZE_ERR = 1; // 0x1
+    field public static final short INUSE_ATTRIBUTE_ERR = 10; // 0xa
+    field public static final short INVALID_ACCESS_ERR = 15; // 0xf
+    field public static final short INVALID_CHARACTER_ERR = 5; // 0x5
+    field public static final short INVALID_MODIFICATION_ERR = 13; // 0xd
+    field public static final short INVALID_STATE_ERR = 11; // 0xb
+    field public static final short NAMESPACE_ERR = 14; // 0xe
+    field public static final short NOT_FOUND_ERR = 8; // 0x8
+    field public static final short NOT_SUPPORTED_ERR = 9; // 0x9
+    field public static final short NO_DATA_ALLOWED_ERR = 6; // 0x6
+    field public static final short NO_MODIFICATION_ALLOWED_ERR = 7; // 0x7
+    field public static final short SYNTAX_ERR = 12; // 0xc
+    field public static final short TYPE_MISMATCH_ERR = 17; // 0x11
+    field public static final short VALIDATION_ERR = 16; // 0x10
+    field public static final short WRONG_DOCUMENT_ERR = 4; // 0x4
+    field public short code;
+  }
+
+  public interface DOMImplementation {
+    method public org.w3c.dom.Document createDocument(String, String, org.w3c.dom.DocumentType) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.DocumentType createDocumentType(String, String, String) throws org.w3c.dom.DOMException;
+    method public Object getFeature(String, String);
+    method public boolean hasFeature(String, String);
+  }
+
+  public interface DOMImplementationList {
+    method public int getLength();
+    method public org.w3c.dom.DOMImplementation item(int);
+  }
+
+  public interface DOMImplementationSource {
+    method public org.w3c.dom.DOMImplementation getDOMImplementation(String);
+    method public org.w3c.dom.DOMImplementationList getDOMImplementationList(String);
+  }
+
+  public interface DOMLocator {
+    method public int getByteOffset();
+    method public int getColumnNumber();
+    method public int getLineNumber();
+    method public org.w3c.dom.Node getRelatedNode();
+    method public String getUri();
+    method public int getUtf16Offset();
+  }
+
+  public interface DOMStringList {
+    method public boolean contains(String);
+    method public int getLength();
+    method public String item(int);
+  }
+
+  public interface Document extends org.w3c.dom.Node {
+    method public org.w3c.dom.Node adoptNode(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.Attr createAttribute(String) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.Attr createAttributeNS(String, String) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.CDATASection createCDATASection(String) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.Comment createComment(String);
+    method public org.w3c.dom.DocumentFragment createDocumentFragment();
+    method public org.w3c.dom.Element createElement(String) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.Element createElementNS(String, String) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.EntityReference createEntityReference(String) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.ProcessingInstruction createProcessingInstruction(String, String) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.Text createTextNode(String);
+    method public org.w3c.dom.DocumentType getDoctype();
+    method public org.w3c.dom.Element getDocumentElement();
+    method public String getDocumentURI();
+    method public org.w3c.dom.DOMConfiguration getDomConfig();
+    method public org.w3c.dom.Element getElementById(String);
+    method public org.w3c.dom.NodeList getElementsByTagName(String);
+    method public org.w3c.dom.NodeList getElementsByTagNameNS(String, String);
+    method public org.w3c.dom.DOMImplementation getImplementation();
+    method public String getInputEncoding();
+    method public boolean getStrictErrorChecking();
+    method public String getXmlEncoding();
+    method public boolean getXmlStandalone();
+    method public String getXmlVersion();
+    method public org.w3c.dom.Node importNode(org.w3c.dom.Node, boolean) throws org.w3c.dom.DOMException;
+    method public void normalizeDocument();
+    method public org.w3c.dom.Node renameNode(org.w3c.dom.Node, String, String) throws org.w3c.dom.DOMException;
+    method public void setDocumentURI(String);
+    method public void setStrictErrorChecking(boolean);
+    method public void setXmlStandalone(boolean) throws org.w3c.dom.DOMException;
+    method public void setXmlVersion(String) throws org.w3c.dom.DOMException;
+  }
+
+  public interface DocumentFragment extends org.w3c.dom.Node {
+  }
+
+  public interface DocumentType extends org.w3c.dom.Node {
+    method public org.w3c.dom.NamedNodeMap getEntities();
+    method public String getInternalSubset();
+    method public String getName();
+    method public org.w3c.dom.NamedNodeMap getNotations();
+    method public String getPublicId();
+    method public String getSystemId();
+  }
+
+  public interface Element extends org.w3c.dom.Node {
+    method public String getAttribute(String);
+    method public String getAttributeNS(String, String) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.Attr getAttributeNode(String);
+    method public org.w3c.dom.Attr getAttributeNodeNS(String, String) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.NodeList getElementsByTagName(String);
+    method public org.w3c.dom.NodeList getElementsByTagNameNS(String, String) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.TypeInfo getSchemaTypeInfo();
+    method public String getTagName();
+    method public boolean hasAttribute(String);
+    method public boolean hasAttributeNS(String, String) throws org.w3c.dom.DOMException;
+    method public void removeAttribute(String) throws org.w3c.dom.DOMException;
+    method public void removeAttributeNS(String, String) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.Attr removeAttributeNode(org.w3c.dom.Attr) throws org.w3c.dom.DOMException;
+    method public void setAttribute(String, String) throws org.w3c.dom.DOMException;
+    method public void setAttributeNS(String, String, String) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.Attr setAttributeNode(org.w3c.dom.Attr) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.Attr setAttributeNodeNS(org.w3c.dom.Attr) throws org.w3c.dom.DOMException;
+    method public void setIdAttribute(String, boolean) throws org.w3c.dom.DOMException;
+    method public void setIdAttributeNS(String, String, boolean) throws org.w3c.dom.DOMException;
+    method public void setIdAttributeNode(org.w3c.dom.Attr, boolean) throws org.w3c.dom.DOMException;
+  }
+
+  public interface Entity extends org.w3c.dom.Node {
+    method public String getInputEncoding();
+    method public String getNotationName();
+    method public String getPublicId();
+    method public String getSystemId();
+    method public String getXmlEncoding();
+    method public String getXmlVersion();
+  }
+
+  public interface EntityReference extends org.w3c.dom.Node {
+  }
+
+  public interface NameList {
+    method public boolean contains(String);
+    method public boolean containsNS(String, String);
+    method public int getLength();
+    method public String getName(int);
+    method public String getNamespaceURI(int);
+  }
+
+  public interface NamedNodeMap {
+    method public int getLength();
+    method public org.w3c.dom.Node getNamedItem(String);
+    method public org.w3c.dom.Node getNamedItemNS(String, String) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.Node item(int);
+    method public org.w3c.dom.Node removeNamedItem(String) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.Node removeNamedItemNS(String, String) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.Node setNamedItem(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.Node setNamedItemNS(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
+  }
+
+  public interface Node {
+    method public org.w3c.dom.Node appendChild(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.Node cloneNode(boolean);
+    method public short compareDocumentPosition(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.NamedNodeMap getAttributes();
+    method public String getBaseURI();
+    method public org.w3c.dom.NodeList getChildNodes();
+    method public Object getFeature(String, String);
+    method public org.w3c.dom.Node getFirstChild();
+    method public org.w3c.dom.Node getLastChild();
+    method public String getLocalName();
+    method public String getNamespaceURI();
+    method public org.w3c.dom.Node getNextSibling();
+    method public String getNodeName();
+    method public short getNodeType();
+    method public String getNodeValue() throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.Document getOwnerDocument();
+    method public org.w3c.dom.Node getParentNode();
+    method public String getPrefix();
+    method public org.w3c.dom.Node getPreviousSibling();
+    method public String getTextContent() throws org.w3c.dom.DOMException;
+    method public Object getUserData(String);
+    method public boolean hasAttributes();
+    method public boolean hasChildNodes();
+    method public org.w3c.dom.Node insertBefore(org.w3c.dom.Node, org.w3c.dom.Node) throws org.w3c.dom.DOMException;
+    method public boolean isDefaultNamespace(String);
+    method public boolean isEqualNode(org.w3c.dom.Node);
+    method public boolean isSameNode(org.w3c.dom.Node);
+    method public boolean isSupported(String, String);
+    method public String lookupNamespaceURI(String);
+    method public String lookupPrefix(String);
+    method public void normalize();
+    method public org.w3c.dom.Node removeChild(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.Node replaceChild(org.w3c.dom.Node, org.w3c.dom.Node) throws org.w3c.dom.DOMException;
+    method public void setNodeValue(String) throws org.w3c.dom.DOMException;
+    method public void setPrefix(String) throws org.w3c.dom.DOMException;
+    method public void setTextContent(String) throws org.w3c.dom.DOMException;
+    method public Object setUserData(String, Object, org.w3c.dom.UserDataHandler);
+    field public static final short ATTRIBUTE_NODE = 2; // 0x2
+    field public static final short CDATA_SECTION_NODE = 4; // 0x4
+    field public static final short COMMENT_NODE = 8; // 0x8
+    field public static final short DOCUMENT_FRAGMENT_NODE = 11; // 0xb
+    field public static final short DOCUMENT_NODE = 9; // 0x9
+    field public static final short DOCUMENT_POSITION_CONTAINED_BY = 16; // 0x10
+    field public static final short DOCUMENT_POSITION_CONTAINS = 8; // 0x8
+    field public static final short DOCUMENT_POSITION_DISCONNECTED = 1; // 0x1
+    field public static final short DOCUMENT_POSITION_FOLLOWING = 4; // 0x4
+    field public static final short DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 32; // 0x20
+    field public static final short DOCUMENT_POSITION_PRECEDING = 2; // 0x2
+    field public static final short DOCUMENT_TYPE_NODE = 10; // 0xa
+    field public static final short ELEMENT_NODE = 1; // 0x1
+    field public static final short ENTITY_NODE = 6; // 0x6
+    field public static final short ENTITY_REFERENCE_NODE = 5; // 0x5
+    field public static final short NOTATION_NODE = 12; // 0xc
+    field public static final short PROCESSING_INSTRUCTION_NODE = 7; // 0x7
+    field public static final short TEXT_NODE = 3; // 0x3
+  }
+
+  public interface NodeList {
+    method public int getLength();
+    method public org.w3c.dom.Node item(int);
+  }
+
+  public interface Notation extends org.w3c.dom.Node {
+    method public String getPublicId();
+    method public String getSystemId();
+  }
+
+  public interface ProcessingInstruction extends org.w3c.dom.Node {
+    method public String getData();
+    method public String getTarget();
+    method public void setData(String) throws org.w3c.dom.DOMException;
+  }
+
+  public interface Text extends org.w3c.dom.CharacterData {
+    method public String getWholeText();
+    method public boolean isElementContentWhitespace();
+    method public org.w3c.dom.Text replaceWholeText(String) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.Text splitText(int) throws org.w3c.dom.DOMException;
+  }
+
+  public interface TypeInfo {
+    method public String getTypeName();
+    method public String getTypeNamespace();
+    method public boolean isDerivedFrom(String, String, int);
+    field public static final int DERIVATION_EXTENSION = 2; // 0x2
+    field public static final int DERIVATION_LIST = 8; // 0x8
+    field public static final int DERIVATION_RESTRICTION = 1; // 0x1
+    field public static final int DERIVATION_UNION = 4; // 0x4
+  }
+
+  public interface UserDataHandler {
+    method public void handle(short, String, Object, org.w3c.dom.Node, org.w3c.dom.Node);
+    field public static final short NODE_ADOPTED = 5; // 0x5
+    field public static final short NODE_CLONED = 1; // 0x1
+    field public static final short NODE_DELETED = 3; // 0x3
+    field public static final short NODE_IMPORTED = 2; // 0x2
+    field public static final short NODE_RENAMED = 4; // 0x4
+  }
+
+}
+
+package org.w3c.dom.ls {
+
+  public interface DOMImplementationLS {
+    method public org.w3c.dom.ls.LSInput createLSInput();
+    method public org.w3c.dom.ls.LSOutput createLSOutput();
+    method public org.w3c.dom.ls.LSParser createLSParser(short, String) throws org.w3c.dom.DOMException;
+    method public org.w3c.dom.ls.LSSerializer createLSSerializer();
+    field public static final short MODE_ASYNCHRONOUS = 2; // 0x2
+    field public static final short MODE_SYNCHRONOUS = 1; // 0x1
+  }
+
+  public class LSException extends java.lang.RuntimeException {
+    ctor public LSException(short, String);
+    field public static final short PARSE_ERR = 81; // 0x51
+    field public static final short SERIALIZE_ERR = 82; // 0x52
+    field public short code;
+  }
+
+  public interface LSInput {
+    method public String getBaseURI();
+    method public java.io.InputStream getByteStream();
+    method public boolean getCertifiedText();
+    method public java.io.Reader getCharacterStream();
+    method public String getEncoding();
+    method public String getPublicId();
+    method public String getStringData();
+    method public String getSystemId();
+    method public void setBaseURI(String);
+    method public void setByteStream(java.io.InputStream);
+    method public void setCertifiedText(boolean);
+    method public void setCharacterStream(java.io.Reader);
+    method public void setEncoding(String);
+    method public void setPublicId(String);
+    method public void setStringData(String);
+    method public void setSystemId(String);
+  }
+
+  public interface LSOutput {
+    method public java.io.OutputStream getByteStream();
+    method public java.io.Writer getCharacterStream();
+    method public String getEncoding();
+    method public String getSystemId();
+    method public void setByteStream(java.io.OutputStream);
+    method public void setCharacterStream(java.io.Writer);
+    method public void setEncoding(String);
+    method public void setSystemId(String);
+  }
+
+  public interface LSParser {
+    method public void abort();
+    method public boolean getAsync();
+    method public boolean getBusy();
+    method public org.w3c.dom.DOMConfiguration getDomConfig();
+    method public org.w3c.dom.ls.LSParserFilter getFilter();
+    method public org.w3c.dom.Document parse(org.w3c.dom.ls.LSInput) throws org.w3c.dom.DOMException, org.w3c.dom.ls.LSException;
+    method public org.w3c.dom.Document parseURI(String) throws org.w3c.dom.DOMException, org.w3c.dom.ls.LSException;
+    method public org.w3c.dom.Node parseWithContext(org.w3c.dom.ls.LSInput, org.w3c.dom.Node, short) throws org.w3c.dom.DOMException, org.w3c.dom.ls.LSException;
+    method public void setFilter(org.w3c.dom.ls.LSParserFilter);
+    field public static final short ACTION_APPEND_AS_CHILDREN = 1; // 0x1
+    field public static final short ACTION_INSERT_AFTER = 4; // 0x4
+    field public static final short ACTION_INSERT_BEFORE = 3; // 0x3
+    field public static final short ACTION_REPLACE = 5; // 0x5
+    field public static final short ACTION_REPLACE_CHILDREN = 2; // 0x2
+  }
+
+  public interface LSParserFilter {
+    method public short acceptNode(org.w3c.dom.Node);
+    method public int getWhatToShow();
+    method public short startElement(org.w3c.dom.Element);
+    field public static final short FILTER_ACCEPT = 1; // 0x1
+    field public static final short FILTER_INTERRUPT = 4; // 0x4
+    field public static final short FILTER_REJECT = 2; // 0x2
+    field public static final short FILTER_SKIP = 3; // 0x3
+  }
+
+  public interface LSResourceResolver {
+    method public org.w3c.dom.ls.LSInput resolveResource(String, String, String, String, String);
+  }
+
+  public interface LSSerializer {
+    method public org.w3c.dom.DOMConfiguration getDomConfig();
+    method public String getNewLine();
+    method public void setNewLine(String);
+    method public boolean write(org.w3c.dom.Node, org.w3c.dom.ls.LSOutput) throws org.w3c.dom.ls.LSException;
+    method public String writeToString(org.w3c.dom.Node) throws org.w3c.dom.DOMException, org.w3c.dom.ls.LSException;
+    method public boolean writeToURI(org.w3c.dom.Node, String) throws org.w3c.dom.ls.LSException;
+  }
+
+}
+
+package org.xml.sax {
+
+  @Deprecated public interface AttributeList {
+    method @Deprecated public int getLength();
+    method @Deprecated public String getName(int);
+    method @Deprecated public String getType(int);
+    method @Deprecated public String getType(String);
+    method @Deprecated public String getValue(int);
+    method @Deprecated public String getValue(String);
+  }
+
+  public interface Attributes {
+    method public int getIndex(String, String);
+    method public int getIndex(String);
+    method public int getLength();
+    method public String getLocalName(int);
+    method public String getQName(int);
+    method public String getType(int);
+    method public String getType(String, String);
+    method public String getType(String);
+    method public String getURI(int);
+    method public String getValue(int);
+    method public String getValue(String, String);
+    method public String getValue(String);
+  }
+
+  public interface ContentHandler {
+    method public void characters(char[], int, int) throws org.xml.sax.SAXException;
+    method public void endDocument() throws org.xml.sax.SAXException;
+    method public void endElement(String, String, String) throws org.xml.sax.SAXException;
+    method public void endPrefixMapping(String) throws org.xml.sax.SAXException;
+    method public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
+    method public void processingInstruction(String, String) throws org.xml.sax.SAXException;
+    method public void setDocumentLocator(org.xml.sax.Locator);
+    method public void skippedEntity(String) throws org.xml.sax.SAXException;
+    method public void startDocument() throws org.xml.sax.SAXException;
+    method public void startElement(String, String, String, org.xml.sax.Attributes) throws org.xml.sax.SAXException;
+    method public void startPrefixMapping(String, String) throws org.xml.sax.SAXException;
+  }
+
+  public interface DTDHandler {
+    method public void notationDecl(String, String, String) throws org.xml.sax.SAXException;
+    method public void unparsedEntityDecl(String, String, String, String) throws org.xml.sax.SAXException;
+  }
+
+  @Deprecated public interface DocumentHandler {
+    method @Deprecated public void characters(char[], int, int) throws org.xml.sax.SAXException;
+    method @Deprecated public void endDocument() throws org.xml.sax.SAXException;
+    method @Deprecated public void endElement(String) throws org.xml.sax.SAXException;
+    method @Deprecated public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
+    method @Deprecated public void processingInstruction(String, String) throws org.xml.sax.SAXException;
+    method @Deprecated public void setDocumentLocator(org.xml.sax.Locator);
+    method @Deprecated public void startDocument() throws org.xml.sax.SAXException;
+    method @Deprecated public void startElement(String, org.xml.sax.AttributeList) throws org.xml.sax.SAXException;
+  }
+
+  public interface EntityResolver {
+    method public org.xml.sax.InputSource resolveEntity(String, String) throws java.io.IOException, org.xml.sax.SAXException;
+  }
+
+  public interface ErrorHandler {
+    method public void error(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
+    method public void fatalError(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
+    method public void warning(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
+  }
+
+  @Deprecated public class HandlerBase implements org.xml.sax.DTDHandler org.xml.sax.DocumentHandler org.xml.sax.EntityResolver org.xml.sax.ErrorHandler {
+    ctor @Deprecated public HandlerBase();
+    method @Deprecated public void characters(char[], int, int) throws org.xml.sax.SAXException;
+    method @Deprecated public void endDocument() throws org.xml.sax.SAXException;
+    method @Deprecated public void endElement(String) throws org.xml.sax.SAXException;
+    method @Deprecated public void error(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
+    method @Deprecated public void fatalError(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
+    method @Deprecated public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
+    method @Deprecated public void notationDecl(String, String, String);
+    method @Deprecated public void processingInstruction(String, String) throws org.xml.sax.SAXException;
+    method @Deprecated public org.xml.sax.InputSource resolveEntity(String, String) throws org.xml.sax.SAXException;
+    method @Deprecated public void setDocumentLocator(org.xml.sax.Locator);
+    method @Deprecated public void startDocument() throws org.xml.sax.SAXException;
+    method @Deprecated public void startElement(String, org.xml.sax.AttributeList) throws org.xml.sax.SAXException;
+    method @Deprecated public void unparsedEntityDecl(String, String, String, String);
+    method @Deprecated public void warning(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
+  }
+
+  public class InputSource {
+    ctor public InputSource();
+    ctor public InputSource(String);
+    ctor public InputSource(java.io.InputStream);
+    ctor public InputSource(java.io.Reader);
+    method public java.io.InputStream getByteStream();
+    method public java.io.Reader getCharacterStream();
+    method public String getEncoding();
+    method public String getPublicId();
+    method public String getSystemId();
+    method public void setByteStream(java.io.InputStream);
+    method public void setCharacterStream(java.io.Reader);
+    method public void setEncoding(String);
+    method public void setPublicId(String);
+    method public void setSystemId(String);
+  }
+
+  public interface Locator {
+    method public int getColumnNumber();
+    method public int getLineNumber();
+    method public String getPublicId();
+    method public String getSystemId();
+  }
+
+  @Deprecated public interface Parser {
+    method @Deprecated public void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
+    method @Deprecated public void parse(String) throws java.io.IOException, org.xml.sax.SAXException;
+    method @Deprecated public void setDTDHandler(org.xml.sax.DTDHandler);
+    method @Deprecated public void setDocumentHandler(org.xml.sax.DocumentHandler);
+    method @Deprecated public void setEntityResolver(org.xml.sax.EntityResolver);
+    method @Deprecated public void setErrorHandler(org.xml.sax.ErrorHandler);
+    method @Deprecated public void setLocale(java.util.Locale) throws org.xml.sax.SAXException;
+  }
+
+  public class SAXException extends java.lang.Exception {
+    ctor public SAXException();
+    ctor public SAXException(String);
+    ctor public SAXException(Exception);
+    ctor public SAXException(String, Exception);
+    method public Exception getException();
+  }
+
+  public class SAXNotRecognizedException extends org.xml.sax.SAXException {
+    ctor public SAXNotRecognizedException();
+    ctor public SAXNotRecognizedException(String);
+  }
+
+  public class SAXNotSupportedException extends org.xml.sax.SAXException {
+    ctor public SAXNotSupportedException();
+    ctor public SAXNotSupportedException(String);
+  }
+
+  public class SAXParseException extends org.xml.sax.SAXException {
+    ctor public SAXParseException(String, org.xml.sax.Locator);
+    ctor public SAXParseException(String, org.xml.sax.Locator, Exception);
+    ctor public SAXParseException(String, String, String, int, int);
+    ctor public SAXParseException(String, String, String, int, int, Exception);
+    method public int getColumnNumber();
+    method public int getLineNumber();
+    method public String getPublicId();
+    method public String getSystemId();
+  }
+
+  public interface XMLFilter extends org.xml.sax.XMLReader {
+    method public org.xml.sax.XMLReader getParent();
+    method public void setParent(org.xml.sax.XMLReader);
+  }
+
+  public interface XMLReader {
+    method public org.xml.sax.ContentHandler getContentHandler();
+    method public org.xml.sax.DTDHandler getDTDHandler();
+    method public org.xml.sax.EntityResolver getEntityResolver();
+    method public org.xml.sax.ErrorHandler getErrorHandler();
+    method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void parse(String) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void setContentHandler(org.xml.sax.ContentHandler);
+    method public void setDTDHandler(org.xml.sax.DTDHandler);
+    method public void setEntityResolver(org.xml.sax.EntityResolver);
+    method public void setErrorHandler(org.xml.sax.ErrorHandler);
+    method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+  }
+
+}
+
+package org.xml.sax.ext {
+
+  public interface Attributes2 extends org.xml.sax.Attributes {
+    method public boolean isDeclared(int);
+    method public boolean isDeclared(String);
+    method public boolean isDeclared(String, String);
+    method public boolean isSpecified(int);
+    method public boolean isSpecified(String, String);
+    method public boolean isSpecified(String);
+  }
+
+  public class Attributes2Impl extends org.xml.sax.helpers.AttributesImpl implements org.xml.sax.ext.Attributes2 {
+    ctor public Attributes2Impl();
+    ctor public Attributes2Impl(org.xml.sax.Attributes);
+    method public boolean isDeclared(int);
+    method public boolean isDeclared(String, String);
+    method public boolean isDeclared(String);
+    method public boolean isSpecified(int);
+    method public boolean isSpecified(String, String);
+    method public boolean isSpecified(String);
+    method public void setDeclared(int, boolean);
+    method public void setSpecified(int, boolean);
+  }
+
+  public interface DeclHandler {
+    method public void attributeDecl(String, String, String, String, String) throws org.xml.sax.SAXException;
+    method public void elementDecl(String, String) throws org.xml.sax.SAXException;
+    method public void externalEntityDecl(String, String, String) throws org.xml.sax.SAXException;
+    method public void internalEntityDecl(String, String) throws org.xml.sax.SAXException;
+  }
+
+  public class DefaultHandler2 extends org.xml.sax.helpers.DefaultHandler implements org.xml.sax.ext.DeclHandler org.xml.sax.ext.EntityResolver2 org.xml.sax.ext.LexicalHandler {
+    ctor public DefaultHandler2();
+    method public void attributeDecl(String, String, String, String, String) throws org.xml.sax.SAXException;
+    method public void comment(char[], int, int) throws org.xml.sax.SAXException;
+    method public void elementDecl(String, String) throws org.xml.sax.SAXException;
+    method public void endCDATA() throws org.xml.sax.SAXException;
+    method public void endDTD() throws org.xml.sax.SAXException;
+    method public void endEntity(String) throws org.xml.sax.SAXException;
+    method public void externalEntityDecl(String, String, String) throws org.xml.sax.SAXException;
+    method public org.xml.sax.InputSource getExternalSubset(String, String) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void internalEntityDecl(String, String) throws org.xml.sax.SAXException;
+    method public org.xml.sax.InputSource resolveEntity(String, String, String, String) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void startCDATA() throws org.xml.sax.SAXException;
+    method public void startDTD(String, String, String) throws org.xml.sax.SAXException;
+    method public void startEntity(String) throws org.xml.sax.SAXException;
+  }
+
+  public interface EntityResolver2 extends org.xml.sax.EntityResolver {
+    method public org.xml.sax.InputSource getExternalSubset(String, String) throws java.io.IOException, org.xml.sax.SAXException;
+    method public org.xml.sax.InputSource resolveEntity(String, String, String, String) throws java.io.IOException, org.xml.sax.SAXException;
+  }
+
+  public interface LexicalHandler {
+    method public void comment(char[], int, int) throws org.xml.sax.SAXException;
+    method public void endCDATA() throws org.xml.sax.SAXException;
+    method public void endDTD() throws org.xml.sax.SAXException;
+    method public void endEntity(String) throws org.xml.sax.SAXException;
+    method public void startCDATA() throws org.xml.sax.SAXException;
+    method public void startDTD(String, String, String) throws org.xml.sax.SAXException;
+    method public void startEntity(String) throws org.xml.sax.SAXException;
+  }
+
+  public interface Locator2 extends org.xml.sax.Locator {
+    method public String getEncoding();
+    method public String getXMLVersion();
+  }
+
+  public class Locator2Impl extends org.xml.sax.helpers.LocatorImpl implements org.xml.sax.ext.Locator2 {
+    ctor public Locator2Impl();
+    ctor public Locator2Impl(org.xml.sax.Locator);
+    method public String getEncoding();
+    method public String getXMLVersion();
+    method public void setEncoding(String);
+    method public void setXMLVersion(String);
+  }
+
+}
+
+package org.xml.sax.helpers {
+
+  @Deprecated public class AttributeListImpl implements org.xml.sax.AttributeList {
+    ctor @Deprecated public AttributeListImpl();
+    ctor @Deprecated public AttributeListImpl(org.xml.sax.AttributeList);
+    method @Deprecated public void addAttribute(String, String, String);
+    method @Deprecated public void clear();
+    method @Deprecated public int getLength();
+    method @Deprecated public String getName(int);
+    method @Deprecated public String getType(int);
+    method @Deprecated public String getType(String);
+    method @Deprecated public String getValue(int);
+    method @Deprecated public String getValue(String);
+    method @Deprecated public void removeAttribute(String);
+    method @Deprecated public void setAttributeList(org.xml.sax.AttributeList);
+  }
+
+  public class AttributesImpl implements org.xml.sax.Attributes {
+    ctor public AttributesImpl();
+    ctor public AttributesImpl(org.xml.sax.Attributes);
+    method public void addAttribute(String, String, String, String, String);
+    method public void clear();
+    method public int getIndex(String, String);
+    method public int getIndex(String);
+    method public int getLength();
+    method public String getLocalName(int);
+    method public String getQName(int);
+    method public String getType(int);
+    method public String getType(String, String);
+    method public String getType(String);
+    method public String getURI(int);
+    method public String getValue(int);
+    method public String getValue(String, String);
+    method public String getValue(String);
+    method public void removeAttribute(int);
+    method public void setAttribute(int, String, String, String, String, String);
+    method public void setAttributes(org.xml.sax.Attributes);
+    method public void setLocalName(int, String);
+    method public void setQName(int, String);
+    method public void setType(int, String);
+    method public void setURI(int, String);
+    method public void setValue(int, String);
+  }
+
+  public class DefaultHandler implements org.xml.sax.ContentHandler org.xml.sax.DTDHandler org.xml.sax.EntityResolver org.xml.sax.ErrorHandler {
+    ctor public DefaultHandler();
+    method public void characters(char[], int, int) throws org.xml.sax.SAXException;
+    method public void endDocument() throws org.xml.sax.SAXException;
+    method public void endElement(String, String, String) throws org.xml.sax.SAXException;
+    method public void endPrefixMapping(String) throws org.xml.sax.SAXException;
+    method public void error(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
+    method public void fatalError(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
+    method public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
+    method public void notationDecl(String, String, String) throws org.xml.sax.SAXException;
+    method public void processingInstruction(String, String) throws org.xml.sax.SAXException;
+    method public org.xml.sax.InputSource resolveEntity(String, String) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void setDocumentLocator(org.xml.sax.Locator);
+    method public void skippedEntity(String) throws org.xml.sax.SAXException;
+    method public void startDocument() throws org.xml.sax.SAXException;
+    method public void startElement(String, String, String, org.xml.sax.Attributes) throws org.xml.sax.SAXException;
+    method public void startPrefixMapping(String, String) throws org.xml.sax.SAXException;
+    method public void unparsedEntityDecl(String, String, String, String) throws org.xml.sax.SAXException;
+    method public void warning(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
+  }
+
+  public class LocatorImpl implements org.xml.sax.Locator {
+    ctor public LocatorImpl();
+    ctor public LocatorImpl(org.xml.sax.Locator);
+    method public int getColumnNumber();
+    method public int getLineNumber();
+    method public String getPublicId();
+    method public String getSystemId();
+    method public void setColumnNumber(int);
+    method public void setLineNumber(int);
+    method public void setPublicId(String);
+    method public void setSystemId(String);
+  }
+
+  public class NamespaceSupport {
+    ctor public NamespaceSupport();
+    method public boolean declarePrefix(String, String);
+    method public java.util.Enumeration getDeclaredPrefixes();
+    method public String getPrefix(String);
+    method public java.util.Enumeration getPrefixes();
+    method public java.util.Enumeration getPrefixes(String);
+    method public String getURI(String);
+    method public boolean isNamespaceDeclUris();
+    method public void popContext();
+    method public String[] processName(String, String[], boolean);
+    method public void pushContext();
+    method public void reset();
+    method public void setNamespaceDeclUris(boolean);
+    field public static final String NSDECL = "http://www.w3.org/xmlns/2000/";
+    field public static final String XMLNS = "http://www.w3.org/XML/1998/namespace";
+  }
+
+  public class ParserAdapter implements org.xml.sax.DocumentHandler org.xml.sax.XMLReader {
+    ctor public ParserAdapter() throws org.xml.sax.SAXException;
+    ctor public ParserAdapter(org.xml.sax.Parser);
+    method public void characters(char[], int, int) throws org.xml.sax.SAXException;
+    method public void endDocument() throws org.xml.sax.SAXException;
+    method public void endElement(String) throws org.xml.sax.SAXException;
+    method public org.xml.sax.ContentHandler getContentHandler();
+    method public org.xml.sax.DTDHandler getDTDHandler();
+    method public org.xml.sax.EntityResolver getEntityResolver();
+    method public org.xml.sax.ErrorHandler getErrorHandler();
+    method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
+    method public void parse(String) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void processingInstruction(String, String) throws org.xml.sax.SAXException;
+    method public void setContentHandler(org.xml.sax.ContentHandler);
+    method public void setDTDHandler(org.xml.sax.DTDHandler);
+    method public void setDocumentLocator(org.xml.sax.Locator);
+    method public void setEntityResolver(org.xml.sax.EntityResolver);
+    method public void setErrorHandler(org.xml.sax.ErrorHandler);
+    method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public void startDocument() throws org.xml.sax.SAXException;
+    method public void startElement(String, org.xml.sax.AttributeList) throws org.xml.sax.SAXException;
+  }
+
+  @Deprecated public class ParserFactory {
+    method @Deprecated public static org.xml.sax.Parser makeParser() throws java.lang.ClassCastException, java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException, java.lang.NullPointerException;
+    method @Deprecated public static org.xml.sax.Parser makeParser(String) throws java.lang.ClassCastException, java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+  }
+
+  public class XMLFilterImpl implements org.xml.sax.ContentHandler org.xml.sax.DTDHandler org.xml.sax.EntityResolver org.xml.sax.ErrorHandler org.xml.sax.XMLFilter {
+    ctor public XMLFilterImpl();
+    ctor public XMLFilterImpl(org.xml.sax.XMLReader);
+    method public void characters(char[], int, int) throws org.xml.sax.SAXException;
+    method public void endDocument() throws org.xml.sax.SAXException;
+    method public void endElement(String, String, String) throws org.xml.sax.SAXException;
+    method public void endPrefixMapping(String) throws org.xml.sax.SAXException;
+    method public void error(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
+    method public void fatalError(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
+    method public org.xml.sax.ContentHandler getContentHandler();
+    method public org.xml.sax.DTDHandler getDTDHandler();
+    method public org.xml.sax.EntityResolver getEntityResolver();
+    method public org.xml.sax.ErrorHandler getErrorHandler();
+    method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public org.xml.sax.XMLReader getParent();
+    method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
+    method public void notationDecl(String, String, String) throws org.xml.sax.SAXException;
+    method public void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void parse(String) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void processingInstruction(String, String) throws org.xml.sax.SAXException;
+    method public org.xml.sax.InputSource resolveEntity(String, String) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void setContentHandler(org.xml.sax.ContentHandler);
+    method public void setDTDHandler(org.xml.sax.DTDHandler);
+    method public void setDocumentLocator(org.xml.sax.Locator);
+    method public void setEntityResolver(org.xml.sax.EntityResolver);
+    method public void setErrorHandler(org.xml.sax.ErrorHandler);
+    method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public void setParent(org.xml.sax.XMLReader);
+    method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public void skippedEntity(String) throws org.xml.sax.SAXException;
+    method public void startDocument() throws org.xml.sax.SAXException;
+    method public void startElement(String, String, String, org.xml.sax.Attributes) throws org.xml.sax.SAXException;
+    method public void startPrefixMapping(String, String) throws org.xml.sax.SAXException;
+    method public void unparsedEntityDecl(String, String, String, String) throws org.xml.sax.SAXException;
+    method public void warning(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
+  }
+
+  public class XMLReaderAdapter implements org.xml.sax.ContentHandler org.xml.sax.Parser {
+    ctor public XMLReaderAdapter() throws org.xml.sax.SAXException;
+    ctor public XMLReaderAdapter(org.xml.sax.XMLReader);
+    method public void characters(char[], int, int) throws org.xml.sax.SAXException;
+    method public void endDocument() throws org.xml.sax.SAXException;
+    method public void endElement(String, String, String) throws org.xml.sax.SAXException;
+    method public void endPrefixMapping(String);
+    method public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
+    method public void parse(String) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void processingInstruction(String, String) throws org.xml.sax.SAXException;
+    method public void setDTDHandler(org.xml.sax.DTDHandler);
+    method public void setDocumentHandler(org.xml.sax.DocumentHandler);
+    method public void setDocumentLocator(org.xml.sax.Locator);
+    method public void setEntityResolver(org.xml.sax.EntityResolver);
+    method public void setErrorHandler(org.xml.sax.ErrorHandler);
+    method public void setLocale(java.util.Locale) throws org.xml.sax.SAXException;
+    method public void skippedEntity(String) throws org.xml.sax.SAXException;
+    method public void startDocument() throws org.xml.sax.SAXException;
+    method public void startElement(String, String, String, org.xml.sax.Attributes) throws org.xml.sax.SAXException;
+    method public void startPrefixMapping(String, String);
+  }
+
+  public final class XMLReaderFactory {
+    method public static org.xml.sax.XMLReader createXMLReader() throws org.xml.sax.SAXException;
+    method public static org.xml.sax.XMLReader createXMLReader(String) throws org.xml.sax.SAXException;
+  }
+
+}
+
+package org.xmlpull.v1 {
+
+  public interface XmlPullParser {
+    method public void defineEntityReplacementText(String, String) throws org.xmlpull.v1.XmlPullParserException;
+    method public int getAttributeCount();
+    method public String getAttributeName(int);
+    method public String getAttributeNamespace(int);
+    method public String getAttributePrefix(int);
+    method public String getAttributeType(int);
+    method public String getAttributeValue(int);
+    method public String getAttributeValue(String, String);
+    method public int getColumnNumber();
+    method public int getDepth();
+    method public int getEventType() throws org.xmlpull.v1.XmlPullParserException;
+    method public boolean getFeature(String);
+    method public String getInputEncoding();
+    method public int getLineNumber();
+    method public String getName();
+    method public String getNamespace(String);
+    method public String getNamespace();
+    method public int getNamespaceCount(int) throws org.xmlpull.v1.XmlPullParserException;
+    method public String getNamespacePrefix(int) throws org.xmlpull.v1.XmlPullParserException;
+    method public String getNamespaceUri(int) throws org.xmlpull.v1.XmlPullParserException;
+    method public String getPositionDescription();
+    method public String getPrefix();
+    method public Object getProperty(String);
+    method public String getText();
+    method public char[] getTextCharacters(int[]);
+    method public boolean isAttributeDefault(int);
+    method public boolean isEmptyElementTag() throws org.xmlpull.v1.XmlPullParserException;
+    method public boolean isWhitespace() throws org.xmlpull.v1.XmlPullParserException;
+    method public int next() throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method public int nextTag() throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method public String nextText() throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method public int nextToken() throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method public void require(int, String, String) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method public void setFeature(String, boolean) throws org.xmlpull.v1.XmlPullParserException;
+    method public void setInput(java.io.Reader) throws org.xmlpull.v1.XmlPullParserException;
+    method public void setInput(java.io.InputStream, String) throws org.xmlpull.v1.XmlPullParserException;
+    method public void setProperty(String, Object) throws org.xmlpull.v1.XmlPullParserException;
+    field public static final int CDSECT = 5; // 0x5
+    field public static final int COMMENT = 9; // 0x9
+    field public static final int DOCDECL = 10; // 0xa
+    field public static final int END_DOCUMENT = 1; // 0x1
+    field public static final int END_TAG = 3; // 0x3
+    field public static final int ENTITY_REF = 6; // 0x6
+    field public static final String FEATURE_PROCESS_DOCDECL = "http://xmlpull.org/v1/doc/features.html#process-docdecl";
+    field public static final String FEATURE_PROCESS_NAMESPACES = "http://xmlpull.org/v1/doc/features.html#process-namespaces";
+    field public static final String FEATURE_REPORT_NAMESPACE_ATTRIBUTES = "http://xmlpull.org/v1/doc/features.html#report-namespace-prefixes";
+    field public static final String FEATURE_VALIDATION = "http://xmlpull.org/v1/doc/features.html#validation";
+    field public static final int IGNORABLE_WHITESPACE = 7; // 0x7
+    field public static final String NO_NAMESPACE = "";
+    field public static final int PROCESSING_INSTRUCTION = 8; // 0x8
+    field public static final int START_DOCUMENT = 0; // 0x0
+    field public static final int START_TAG = 2; // 0x2
+    field public static final int TEXT = 4; // 0x4
+    field public static final String[] TYPES;
+  }
+
+  public class XmlPullParserException extends java.lang.Exception {
+    ctor public XmlPullParserException(String);
+    ctor public XmlPullParserException(String, org.xmlpull.v1.XmlPullParser, Throwable);
+    method public int getColumnNumber();
+    method public Throwable getDetail();
+    method public int getLineNumber();
+    field protected int column;
+    field protected Throwable detail;
+    field protected int row;
+  }
+
+  public class XmlPullParserFactory {
+    ctor protected XmlPullParserFactory();
+    method public boolean getFeature(String);
+    method public boolean isNamespaceAware();
+    method public boolean isValidating();
+    method public static org.xmlpull.v1.XmlPullParserFactory newInstance() throws org.xmlpull.v1.XmlPullParserException;
+    method public static org.xmlpull.v1.XmlPullParserFactory newInstance(String, Class) throws org.xmlpull.v1.XmlPullParserException;
+    method public org.xmlpull.v1.XmlPullParser newPullParser() throws org.xmlpull.v1.XmlPullParserException;
+    method public org.xmlpull.v1.XmlSerializer newSerializer() throws org.xmlpull.v1.XmlPullParserException;
+    method public void setFeature(String, boolean) throws org.xmlpull.v1.XmlPullParserException;
+    method public void setNamespaceAware(boolean);
+    method public void setValidating(boolean);
+    field public static final String PROPERTY_NAME = "org.xmlpull.v1.XmlPullParserFactory";
+    field protected String classNamesLocation;
+    field protected java.util.HashMap<java.lang.String,java.lang.Boolean> features;
+    field protected java.util.ArrayList parserClasses;
+    field protected java.util.ArrayList serializerClasses;
+  }
+
+  public interface XmlSerializer {
+    method public org.xmlpull.v1.XmlSerializer attribute(String, String, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public void cdsect(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public void comment(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public void docdecl(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public void endDocument() throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public org.xmlpull.v1.XmlSerializer endTag(String, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public void entityRef(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public void flush() throws java.io.IOException;
+    method public int getDepth();
+    method public boolean getFeature(String);
+    method public String getName();
+    method public String getNamespace();
+    method public String getPrefix(String, boolean) throws java.lang.IllegalArgumentException;
+    method public Object getProperty(String);
+    method public void ignorableWhitespace(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public void processingInstruction(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public void setFeature(String, boolean) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public void setOutput(java.io.OutputStream, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public void setOutput(java.io.Writer) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public void setPrefix(String, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public void setProperty(String, Object) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public void startDocument(String, Boolean) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public org.xmlpull.v1.XmlSerializer startTag(String, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public org.xmlpull.v1.XmlSerializer text(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public org.xmlpull.v1.XmlSerializer text(char[], int, int) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+  }
+
+}
+
+package org.xmlpull.v1.sax2 {
+
+  public class Driver implements org.xml.sax.Attributes org.xml.sax.Locator org.xml.sax.XMLReader {
+    ctor public Driver() throws org.xmlpull.v1.XmlPullParserException;
+    ctor public Driver(org.xmlpull.v1.XmlPullParser) throws org.xmlpull.v1.XmlPullParserException;
+    method public int getColumnNumber();
+    method public org.xml.sax.ContentHandler getContentHandler();
+    method public org.xml.sax.DTDHandler getDTDHandler();
+    method public org.xml.sax.EntityResolver getEntityResolver();
+    method public org.xml.sax.ErrorHandler getErrorHandler();
+    method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public int getIndex(String, String);
+    method public int getIndex(String);
+    method public int getLength();
+    method public int getLineNumber();
+    method public String getLocalName(int);
+    method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public String getPublicId();
+    method public String getQName(int);
+    method public String getSystemId();
+    method public String getType(int);
+    method public String getType(String, String);
+    method public String getType(String);
+    method public String getURI(int);
+    method public String getValue(int);
+    method public String getValue(String, String);
+    method public String getValue(String);
+    method public void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void parse(String) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void parseSubTree(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xml.sax.SAXException;
+    method public void setContentHandler(org.xml.sax.ContentHandler);
+    method public void setDTDHandler(org.xml.sax.DTDHandler);
+    method public void setEntityResolver(org.xml.sax.EntityResolver);
+    method public void setErrorHandler(org.xml.sax.ErrorHandler);
+    method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
+    method protected void startElement(String, String, String) throws org.xml.sax.SAXException;
+    field protected static final String APACHE_DYNAMIC_VALIDATION_FEATURE = "http://apache.org/xml/features/validation/dynamic";
+    field protected static final String APACHE_SCHEMA_VALIDATION_FEATURE = "http://apache.org/xml/features/validation/schema";
+    field protected static final String DECLARATION_HANDLER_PROPERTY = "http://xml.org/sax/properties/declaration-handler";
+    field protected static final String LEXICAL_HANDLER_PROPERTY = "http://xml.org/sax/properties/lexical-handler";
+    field protected static final String NAMESPACES_FEATURE = "http://xml.org/sax/features/namespaces";
+    field protected static final String NAMESPACE_PREFIXES_FEATURE = "http://xml.org/sax/features/namespace-prefixes";
+    field protected static final String VALIDATION_FEATURE = "http://xml.org/sax/features/validation";
+    field protected org.xml.sax.ContentHandler contentHandler;
+    field protected org.xml.sax.ErrorHandler errorHandler;
+    field protected org.xmlpull.v1.XmlPullParser pp;
+    field protected String systemId;
+  }
+
+}
+
diff --git a/core/api/module-lib-current.txt b/core/api/module-lib-current.txt
new file mode 100644
index 0000000..ee8abf1
--- /dev/null
+++ b/core/api/module-lib-current.txt
@@ -0,0 +1,57 @@
+// Signature format: 2.0
+package android.app {
+
+  public class BroadcastOptions {
+    method public int getMaxManifestReceiverApiLevel();
+    method public void setMaxManifestReceiverApiLevel(int);
+  }
+
+}
+
+package android.os {
+
+  public class Binder implements android.os.IBinder {
+    method public final void markVintfStability();
+  }
+
+  public interface Parcelable {
+    method public default int getStability();
+  }
+
+  public class StatsServiceManager {
+    method @NonNull public android.os.StatsServiceManager.ServiceRegisterer getStatsCompanionServiceRegisterer();
+    method @NonNull public android.os.StatsServiceManager.ServiceRegisterer getStatsManagerServiceRegisterer();
+    method @NonNull public android.os.StatsServiceManager.ServiceRegisterer getStatsdServiceRegisterer();
+  }
+
+  public static class StatsServiceManager.ServiceNotFoundException extends java.lang.Exception {
+    ctor public StatsServiceManager.ServiceNotFoundException(@NonNull String);
+  }
+
+  public static final class StatsServiceManager.ServiceRegisterer {
+    method @Nullable public android.os.IBinder get();
+    method @Nullable public android.os.IBinder getOrThrow() throws android.os.StatsServiceManager.ServiceNotFoundException;
+  }
+
+}
+
+package android.telephony {
+
+  public abstract class CellSignalStrength {
+    method public static int getNumSignalStrengthLevels();
+  }
+
+  public class TelephonyManager {
+    method @NonNull public static int[] getAllNetworkTypes();
+  }
+
+}
+
+package android.util {
+
+  public final class Log {
+    method public static int logToRadioBuffer(int, @Nullable String, @Nullable String);
+  }
+
+}
+
diff --git a/api/module-lib-removed.txt b/core/api/module-lib-removed.txt
similarity index 100%
rename from api/module-lib-removed.txt
rename to core/api/module-lib-removed.txt
diff --git a/non-updatable-api/removed.txt b/core/api/removed.txt
similarity index 100%
rename from non-updatable-api/removed.txt
rename to core/api/removed.txt
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
new file mode 100644
index 0000000..3d69cbd
--- /dev/null
+++ b/core/api/system-current.txt
@@ -0,0 +1,12280 @@
+// Signature format: 2.0
+package android {
+
+  public static final class Manifest.permission {
+    field public static final String ACCESS_AMBIENT_LIGHT_STATS = "android.permission.ACCESS_AMBIENT_LIGHT_STATS";
+    field public static final String ACCESS_BROADCAST_RADIO = "android.permission.ACCESS_BROADCAST_RADIO";
+    field public static final String ACCESS_CACHE_FILESYSTEM = "android.permission.ACCESS_CACHE_FILESYSTEM";
+    field public static final String ACCESS_CONTEXT_HUB = "android.permission.ACCESS_CONTEXT_HUB";
+    field public static final String ACCESS_DRM_CERTIFICATES = "android.permission.ACCESS_DRM_CERTIFICATES";
+    field @Deprecated public static final String ACCESS_FM_RADIO = "android.permission.ACCESS_FM_RADIO";
+    field public static final String ACCESS_INSTANT_APPS = "android.permission.ACCESS_INSTANT_APPS";
+    field public static final String ACCESS_LOCUS_ID_USAGE_STATS = "android.permission.ACCESS_LOCUS_ID_USAGE_STATS";
+    field public static final String ACCESS_MOCK_LOCATION = "android.permission.ACCESS_MOCK_LOCATION";
+    field public static final String ACCESS_MTP = "android.permission.ACCESS_MTP";
+    field public static final String ACCESS_NETWORK_CONDITIONS = "android.permission.ACCESS_NETWORK_CONDITIONS";
+    field public static final String ACCESS_NOTIFICATIONS = "android.permission.ACCESS_NOTIFICATIONS";
+    field public static final String ACCESS_SHARED_LIBRARIES = "android.permission.ACCESS_SHARED_LIBRARIES";
+    field public static final String ACCESS_SHORTCUTS = "android.permission.ACCESS_SHORTCUTS";
+    field public static final String ACCESS_SURFACE_FLINGER = "android.permission.ACCESS_SURFACE_FLINGER";
+    field public static final String ACCESS_TV_DESCRAMBLER = "android.permission.ACCESS_TV_DESCRAMBLER";
+    field public static final String ACCESS_TV_TUNER = "android.permission.ACCESS_TV_TUNER";
+    field public static final String ACCESS_VIBRATOR_STATE = "android.permission.ACCESS_VIBRATOR_STATE";
+    field public static final String ACTIVITY_EMBEDDING = "android.permission.ACTIVITY_EMBEDDING";
+    field public static final String ADJUST_RUNTIME_PERMISSIONS_POLICY = "android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY";
+    field public static final String ALLOCATE_AGGRESSIVE = "android.permission.ALLOCATE_AGGRESSIVE";
+    field public static final String ALLOW_ANY_CODEC_FOR_PLAYBACK = "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK";
+    field public static final String AMBIENT_WALLPAPER = "android.permission.AMBIENT_WALLPAPER";
+    field public static final String APPROVE_INCIDENT_REPORTS = "android.permission.APPROVE_INCIDENT_REPORTS";
+    field public static final String BACKUP = "android.permission.BACKUP";
+    field public static final String BIND_ATTENTION_SERVICE = "android.permission.BIND_ATTENTION_SERVICE";
+    field public static final String BIND_AUGMENTED_AUTOFILL_SERVICE = "android.permission.BIND_AUGMENTED_AUTOFILL_SERVICE";
+    field public static final String BIND_CELL_BROADCAST_SERVICE = "android.permission.BIND_CELL_BROADCAST_SERVICE";
+    field @Deprecated public static final String BIND_CONNECTION_SERVICE = "android.permission.BIND_CONNECTION_SERVICE";
+    field public static final String BIND_CONTENT_CAPTURE_SERVICE = "android.permission.BIND_CONTENT_CAPTURE_SERVICE";
+    field public static final String BIND_CONTENT_SUGGESTIONS_SERVICE = "android.permission.BIND_CONTENT_SUGGESTIONS_SERVICE";
+    field public static final String BIND_DIRECTORY_SEARCH = "android.permission.BIND_DIRECTORY_SEARCH";
+    field public static final String BIND_EUICC_SERVICE = "android.permission.BIND_EUICC_SERVICE";
+    field public static final String BIND_EXTERNAL_STORAGE_SERVICE = "android.permission.BIND_EXTERNAL_STORAGE_SERVICE";
+    field public static final String BIND_IMS_SERVICE = "android.permission.BIND_IMS_SERVICE";
+    field public static final String BIND_KEYGUARD_APPWIDGET = "android.permission.BIND_KEYGUARD_APPWIDGET";
+    field public static final String BIND_NETWORK_RECOMMENDATION_SERVICE = "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE";
+    field public static final String BIND_NOTIFICATION_ASSISTANT_SERVICE = "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE";
+    field public static final String BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE = "android.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE";
+    field public static final String BIND_PRINT_RECOMMENDATION_SERVICE = "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE";
+    field public static final String BIND_RESOLVER_RANKER_SERVICE = "android.permission.BIND_RESOLVER_RANKER_SERVICE";
+    field public static final String BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE = "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE";
+    field public static final String BIND_SETTINGS_SUGGESTIONS_SERVICE = "android.permission.BIND_SETTINGS_SUGGESTIONS_SERVICE";
+    field public static final String BIND_SOUND_TRIGGER_DETECTION_SERVICE = "android.permission.BIND_SOUND_TRIGGER_DETECTION_SERVICE";
+    field public static final String BIND_TELEPHONY_DATA_SERVICE = "android.permission.BIND_TELEPHONY_DATA_SERVICE";
+    field public static final String BIND_TELEPHONY_NETWORK_SERVICE = "android.permission.BIND_TELEPHONY_NETWORK_SERVICE";
+    field public static final String BIND_TEXTCLASSIFIER_SERVICE = "android.permission.BIND_TEXTCLASSIFIER_SERVICE";
+    field public static final String BIND_TRUST_AGENT = "android.permission.BIND_TRUST_AGENT";
+    field public static final String BIND_TV_REMOTE_SERVICE = "android.permission.BIND_TV_REMOTE_SERVICE";
+    field public static final String BRICK = "android.permission.BRICK";
+    field public static final String BRIGHTNESS_SLIDER_USAGE = "android.permission.BRIGHTNESS_SLIDER_USAGE";
+    field @Deprecated public static final String BROADCAST_NETWORK_PRIVILEGED = "android.permission.BROADCAST_NETWORK_PRIVILEGED";
+    field public static final String CAMERA_DISABLE_TRANSMIT_LED = "android.permission.CAMERA_DISABLE_TRANSMIT_LED";
+    field public static final String CAPTURE_AUDIO_HOTWORD = "android.permission.CAPTURE_AUDIO_HOTWORD";
+    field public static final String CAPTURE_MEDIA_OUTPUT = "android.permission.CAPTURE_MEDIA_OUTPUT";
+    field public static final String CAPTURE_TV_INPUT = "android.permission.CAPTURE_TV_INPUT";
+    field public static final String CAPTURE_VOICE_COMMUNICATION_OUTPUT = "android.permission.CAPTURE_VOICE_COMMUNICATION_OUTPUT";
+    field public static final String CHANGE_APP_IDLE_STATE = "android.permission.CHANGE_APP_IDLE_STATE";
+    field public static final String CHANGE_DEVICE_IDLE_TEMP_WHITELIST = "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST";
+    field public static final String CLEAR_APP_USER_DATA = "android.permission.CLEAR_APP_USER_DATA";
+    field public static final String COMPANION_APPROVE_WIFI_CONNECTIONS = "android.permission.COMPANION_APPROVE_WIFI_CONNECTIONS";
+    field public static final String CONFIGURE_DISPLAY_BRIGHTNESS = "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS";
+    field public static final String CONFIGURE_WIFI_DISPLAY = "android.permission.CONFIGURE_WIFI_DISPLAY";
+    field @Deprecated public static final String CONNECTIVITY_INTERNAL = "android.permission.CONNECTIVITY_INTERNAL";
+    field public static final String CONNECTIVITY_USE_RESTRICTED_NETWORKS = "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS";
+    field public static final String CONTROL_DEVICE_LIGHTS = "android.permission.CONTROL_DEVICE_LIGHTS";
+    field public static final String CONTROL_DISPLAY_COLOR_TRANSFORMS = "android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS";
+    field public static final String CONTROL_DISPLAY_SATURATION = "android.permission.CONTROL_DISPLAY_SATURATION";
+    field public static final String CONTROL_INCALL_EXPERIENCE = "android.permission.CONTROL_INCALL_EXPERIENCE";
+    field public static final String CONTROL_KEYGUARD_SECURE_NOTIFICATIONS = "android.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS";
+    field public static final String CONTROL_VPN = "android.permission.CONTROL_VPN";
+    field public static final String CREATE_USERS = "android.permission.CREATE_USERS";
+    field public static final String CRYPT_KEEPER = "android.permission.CRYPT_KEEPER";
+    field public static final String DEVICE_POWER = "android.permission.DEVICE_POWER";
+    field public static final String DISPATCH_PROVISIONING_MESSAGE = "android.permission.DISPATCH_PROVISIONING_MESSAGE";
+    field public static final String ENTER_CAR_MODE_PRIORITIZED = "android.permission.ENTER_CAR_MODE_PRIORITIZED";
+    field public static final String EXEMPT_FROM_AUDIO_RECORD_RESTRICTIONS = "android.permission.EXEMPT_FROM_AUDIO_RECORD_RESTRICTIONS";
+    field public static final String FORCE_BACK = "android.permission.FORCE_BACK";
+    field public static final String FORCE_STOP_PACKAGES = "android.permission.FORCE_STOP_PACKAGES";
+    field public static final String GET_APP_OPS_STATS = "android.permission.GET_APP_OPS_STATS";
+    field public static final String GET_PROCESS_STATE_AND_OOM_SCORE = "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE";
+    field public static final String GET_RUNTIME_PERMISSIONS = "android.permission.GET_RUNTIME_PERMISSIONS";
+    field public static final String GET_TOP_ACTIVITY_INFO = "android.permission.GET_TOP_ACTIVITY_INFO";
+    field @Deprecated public static final String GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS = "android.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS";
+    field public static final String GRANT_RUNTIME_PERMISSIONS = "android.permission.GRANT_RUNTIME_PERMISSIONS";
+    field public static final String GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS = "android.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS";
+    field public static final String HANDLE_CAR_MODE_CHANGES = "android.permission.HANDLE_CAR_MODE_CHANGES";
+    field public static final String HARDWARE_TEST = "android.permission.HARDWARE_TEST";
+    field public static final String HDMI_CEC = "android.permission.HDMI_CEC";
+    field public static final String HIDE_NON_SYSTEM_OVERLAY_WINDOWS = "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS";
+    field public static final String INJECT_EVENTS = "android.permission.INJECT_EVENTS";
+    field public static final String INSTALL_DYNAMIC_SYSTEM = "android.permission.INSTALL_DYNAMIC_SYSTEM";
+    field public static final String INSTALL_GRANT_RUNTIME_PERMISSIONS = "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS";
+    field public static final String INSTALL_PACKAGE_UPDATES = "android.permission.INSTALL_PACKAGE_UPDATES";
+    field public static final String INSTALL_SELF_UPDATES = "android.permission.INSTALL_SELF_UPDATES";
+    field public static final String INTENT_FILTER_VERIFICATION_AGENT = "android.permission.INTENT_FILTER_VERIFICATION_AGENT";
+    field public static final String INTERACT_ACROSS_USERS = "android.permission.INTERACT_ACROSS_USERS";
+    field public static final String INTERACT_ACROSS_USERS_FULL = "android.permission.INTERACT_ACROSS_USERS_FULL";
+    field public static final String INTERNAL_SYSTEM_WINDOW = "android.permission.INTERNAL_SYSTEM_WINDOW";
+    field public static final String INVOKE_CARRIER_SETUP = "android.permission.INVOKE_CARRIER_SETUP";
+    field public static final String KILL_UID = "android.permission.KILL_UID";
+    field public static final String LOCAL_MAC_ADDRESS = "android.permission.LOCAL_MAC_ADDRESS";
+    field public static final String LOCK_DEVICE = "android.permission.LOCK_DEVICE";
+    field public static final String LOOP_RADIO = "android.permission.LOOP_RADIO";
+    field public static final String MANAGE_ACCESSIBILITY = "android.permission.MANAGE_ACCESSIBILITY";
+    field public static final String MANAGE_ACTIVITY_STACKS = "android.permission.MANAGE_ACTIVITY_STACKS";
+    field public static final String MANAGE_APP_OPS_RESTRICTIONS = "android.permission.MANAGE_APP_OPS_RESTRICTIONS";
+    field public static final String MANAGE_APP_PREDICTIONS = "android.permission.MANAGE_APP_PREDICTIONS";
+    field public static final String MANAGE_APP_TOKENS = "android.permission.MANAGE_APP_TOKENS";
+    field public static final String MANAGE_AUTO_FILL = "android.permission.MANAGE_AUTO_FILL";
+    field public static final String MANAGE_CARRIER_OEM_UNLOCK_STATE = "android.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE";
+    field public static final String MANAGE_CA_CERTIFICATES = "android.permission.MANAGE_CA_CERTIFICATES";
+    field public static final String MANAGE_CONTENT_CAPTURE = "android.permission.MANAGE_CONTENT_CAPTURE";
+    field public static final String MANAGE_CONTENT_SUGGESTIONS = "android.permission.MANAGE_CONTENT_SUGGESTIONS";
+    field public static final String MANAGE_DEBUGGING = "android.permission.MANAGE_DEBUGGING";
+    field public static final String MANAGE_FACTORY_RESET_PROTECTION = "android.permission.MANAGE_FACTORY_RESET_PROTECTION";
+    field public static final String MANAGE_IPSEC_TUNNELS = "android.permission.MANAGE_IPSEC_TUNNELS";
+    field public static final String MANAGE_ONE_TIME_PERMISSION_SESSIONS = "android.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS";
+    field public static final String MANAGE_ROLE_HOLDERS = "android.permission.MANAGE_ROLE_HOLDERS";
+    field public static final String MANAGE_ROLLBACKS = "android.permission.MANAGE_ROLLBACKS";
+    field public static final String MANAGE_SENSOR_PRIVACY = "android.permission.MANAGE_SENSOR_PRIVACY";
+    field public static final String MANAGE_SOUND_TRIGGER = "android.permission.MANAGE_SOUND_TRIGGER";
+    field public static final String MANAGE_SUBSCRIPTION_PLANS = "android.permission.MANAGE_SUBSCRIPTION_PLANS";
+    field public static final String MANAGE_USB = "android.permission.MANAGE_USB";
+    field public static final String MANAGE_USERS = "android.permission.MANAGE_USERS";
+    field public static final String MANAGE_USER_OEM_UNLOCK_STATE = "android.permission.MANAGE_USER_OEM_UNLOCK_STATE";
+    field public static final String MODIFY_APPWIDGET_BIND_PERMISSIONS = "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS";
+    field public static final String MODIFY_AUDIO_ROUTING = "android.permission.MODIFY_AUDIO_ROUTING";
+    field public static final String MODIFY_CELL_BROADCASTS = "android.permission.MODIFY_CELL_BROADCASTS";
+    field public static final String MODIFY_DAY_NIGHT_MODE = "android.permission.MODIFY_DAY_NIGHT_MODE";
+    field @Deprecated public static final String MODIFY_NETWORK_ACCOUNTING = "android.permission.MODIFY_NETWORK_ACCOUNTING";
+    field public static final String MODIFY_PARENTAL_CONTROLS = "android.permission.MODIFY_PARENTAL_CONTROLS";
+    field public static final String MODIFY_QUIET_MODE = "android.permission.MODIFY_QUIET_MODE";
+    field public static final String MODIFY_SETTINGS_OVERRIDEABLE_BY_RESTORE = "android.permission.MODIFY_SETTINGS_OVERRIDEABLE_BY_RESTORE";
+    field public static final String MOVE_PACKAGE = "android.permission.MOVE_PACKAGE";
+    field public static final String NETWORK_AIRPLANE_MODE = "android.permission.NETWORK_AIRPLANE_MODE";
+    field public static final String NETWORK_CARRIER_PROVISIONING = "android.permission.NETWORK_CARRIER_PROVISIONING";
+    field public static final String NETWORK_FACTORY = "android.permission.NETWORK_FACTORY";
+    field public static final String NETWORK_MANAGED_PROVISIONING = "android.permission.NETWORK_MANAGED_PROVISIONING";
+    field public static final String NETWORK_SCAN = "android.permission.NETWORK_SCAN";
+    field public static final String NETWORK_SETTINGS = "android.permission.NETWORK_SETTINGS";
+    field public static final String NETWORK_SETUP_WIZARD = "android.permission.NETWORK_SETUP_WIZARD";
+    field public static final String NETWORK_SIGNAL_STRENGTH_WAKEUP = "android.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP";
+    field public static final String NETWORK_STACK = "android.permission.NETWORK_STACK";
+    field public static final String NETWORK_STATS_PROVIDER = "android.permission.NETWORK_STATS_PROVIDER";
+    field public static final String NOTIFICATION_DURING_SETUP = "android.permission.NOTIFICATION_DURING_SETUP";
+    field public static final String NOTIFY_TV_INPUTS = "android.permission.NOTIFY_TV_INPUTS";
+    field public static final String OBSERVE_APP_USAGE = "android.permission.OBSERVE_APP_USAGE";
+    field public static final String OBSERVE_NETWORK_POLICY = "android.permission.OBSERVE_NETWORK_POLICY";
+    field public static final String OBSERVE_ROLE_HOLDERS = "android.permission.OBSERVE_ROLE_HOLDERS";
+    field public static final String OPEN_ACCESSIBILITY_DETAILS_SETTINGS = "android.permission.OPEN_ACCESSIBILITY_DETAILS_SETTINGS";
+    field public static final String OVERRIDE_WIFI_CONFIG = "android.permission.OVERRIDE_WIFI_CONFIG";
+    field public static final String PACKAGE_VERIFICATION_AGENT = "android.permission.PACKAGE_VERIFICATION_AGENT";
+    field public static final String PACKET_KEEPALIVE_OFFLOAD = "android.permission.PACKET_KEEPALIVE_OFFLOAD";
+    field public static final String PEERS_MAC_ADDRESS = "android.permission.PEERS_MAC_ADDRESS";
+    field public static final String PERFORM_CDMA_PROVISIONING = "android.permission.PERFORM_CDMA_PROVISIONING";
+    field public static final String PERFORM_SIM_ACTIVATION = "android.permission.PERFORM_SIM_ACTIVATION";
+    field public static final String POWER_SAVER = "android.permission.POWER_SAVER";
+    field public static final String PROVIDE_RESOLVER_RANKER_SERVICE = "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE";
+    field public static final String PROVIDE_TRUST_AGENT = "android.permission.PROVIDE_TRUST_AGENT";
+    field public static final String QUERY_TIME_ZONE_RULES = "android.permission.QUERY_TIME_ZONE_RULES";
+    field public static final String RADIO_SCAN_WITHOUT_LOCATION = "android.permission.RADIO_SCAN_WITHOUT_LOCATION";
+    field public static final String READ_ACTIVE_EMERGENCY_SESSION = "android.permission.READ_ACTIVE_EMERGENCY_SESSION";
+    field public static final String READ_CARRIER_APP_INFO = "android.permission.READ_CARRIER_APP_INFO";
+    field public static final String READ_CELL_BROADCASTS = "android.permission.READ_CELL_BROADCASTS";
+    field public static final String READ_CONTENT_RATING_SYSTEMS = "android.permission.READ_CONTENT_RATING_SYSTEMS";
+    field public static final String READ_DEVICE_CONFIG = "android.permission.READ_DEVICE_CONFIG";
+    field public static final String READ_DREAM_STATE = "android.permission.READ_DREAM_STATE";
+    field public static final String READ_INSTALL_SESSIONS = "android.permission.READ_INSTALL_SESSIONS";
+    field public static final String READ_NETWORK_USAGE_HISTORY = "android.permission.READ_NETWORK_USAGE_HISTORY";
+    field public static final String READ_OEM_UNLOCK_STATE = "android.permission.READ_OEM_UNLOCK_STATE";
+    field public static final String READ_PRINT_SERVICES = "android.permission.READ_PRINT_SERVICES";
+    field public static final String READ_PRINT_SERVICE_RECOMMENDATIONS = "android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS";
+    field public static final String READ_PRIVILEGED_PHONE_STATE = "android.permission.READ_PRIVILEGED_PHONE_STATE";
+    field public static final String READ_RUNTIME_PROFILES = "android.permission.READ_RUNTIME_PROFILES";
+    field public static final String READ_SEARCH_INDEXABLES = "android.permission.READ_SEARCH_INDEXABLES";
+    field public static final String READ_SYSTEM_UPDATE_INFO = "android.permission.READ_SYSTEM_UPDATE_INFO";
+    field public static final String READ_WALLPAPER_INTERNAL = "android.permission.READ_WALLPAPER_INTERNAL";
+    field public static final String READ_WIFI_CREDENTIAL = "android.permission.READ_WIFI_CREDENTIAL";
+    field public static final String REAL_GET_TASKS = "android.permission.REAL_GET_TASKS";
+    field public static final String RECEIVE_DATA_ACTIVITY_CHANGE = "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE";
+    field public static final String RECEIVE_DEVICE_CUSTOMIZATION_READY = "android.permission.RECEIVE_DEVICE_CUSTOMIZATION_READY";
+    field public static final String RECEIVE_EMERGENCY_BROADCAST = "android.permission.RECEIVE_EMERGENCY_BROADCAST";
+    field public static final String RECEIVE_WIFI_CREDENTIAL_CHANGE = "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE";
+    field public static final String RECOVERY = "android.permission.RECOVERY";
+    field public static final String RECOVER_KEYSTORE = "android.permission.RECOVER_KEYSTORE";
+    field public static final String REGISTER_CALL_PROVIDER = "android.permission.REGISTER_CALL_PROVIDER";
+    field public static final String REGISTER_CONNECTION_MANAGER = "android.permission.REGISTER_CONNECTION_MANAGER";
+    field public static final String REGISTER_SIM_SUBSCRIPTION = "android.permission.REGISTER_SIM_SUBSCRIPTION";
+    field public static final String REGISTER_STATS_PULL_ATOM = "android.permission.REGISTER_STATS_PULL_ATOM";
+    field public static final String REMOTE_DISPLAY_PROVIDER = "android.permission.REMOTE_DISPLAY_PROVIDER";
+    field public static final String REMOVE_DRM_CERTIFICATES = "android.permission.REMOVE_DRM_CERTIFICATES";
+    field public static final String REMOVE_TASKS = "android.permission.REMOVE_TASKS";
+    field public static final String REQUEST_NETWORK_SCORES = "android.permission.REQUEST_NETWORK_SCORES";
+    field public static final String REQUEST_NOTIFICATION_ASSISTANT_SERVICE = "android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE";
+    field public static final String RESET_PASSWORD = "android.permission.RESET_PASSWORD";
+    field public static final String RESTORE_RUNTIME_PERMISSIONS = "android.permission.RESTORE_RUNTIME_PERMISSIONS";
+    field public static final String RESTRICTED_VR_ACCESS = "android.permission.RESTRICTED_VR_ACCESS";
+    field public static final String RETRIEVE_WINDOW_CONTENT = "android.permission.RETRIEVE_WINDOW_CONTENT";
+    field public static final String REVIEW_ACCESSIBILITY_SERVICES = "android.permission.REVIEW_ACCESSIBILITY_SERVICES";
+    field public static final String REVOKE_RUNTIME_PERMISSIONS = "android.permission.REVOKE_RUNTIME_PERMISSIONS";
+    field public static final String SCORE_NETWORKS = "android.permission.SCORE_NETWORKS";
+    field public static final String SECURE_ELEMENT_PRIVILEGED_OPERATION = "android.permission.SECURE_ELEMENT_PRIVILEGED_OPERATION";
+    field public static final String SEND_DEVICE_CUSTOMIZATION_READY = "android.permission.SEND_DEVICE_CUSTOMIZATION_READY";
+    field public static final String SEND_SHOW_SUSPENDED_APP_DETAILS = "android.permission.SEND_SHOW_SUSPENDED_APP_DETAILS";
+    field public static final String SEND_SMS_NO_CONFIRMATION = "android.permission.SEND_SMS_NO_CONFIRMATION";
+    field public static final String SERIAL_PORT = "android.permission.SERIAL_PORT";
+    field public static final String SET_ACTIVITY_WATCHER = "android.permission.SET_ACTIVITY_WATCHER";
+    field public static final String SET_HARMFUL_APP_WARNINGS = "android.permission.SET_HARMFUL_APP_WARNINGS";
+    field public static final String SET_MEDIA_KEY_LISTENER = "android.permission.SET_MEDIA_KEY_LISTENER";
+    field public static final String SET_ORIENTATION = "android.permission.SET_ORIENTATION";
+    field public static final String SET_POINTER_SPEED = "android.permission.SET_POINTER_SPEED";
+    field public static final String SET_SCREEN_COMPATIBILITY = "android.permission.SET_SCREEN_COMPATIBILITY";
+    field public static final String SET_VOLUME_KEY_LONG_PRESS_LISTENER = "android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER";
+    field public static final String SET_WALLPAPER_COMPONENT = "android.permission.SET_WALLPAPER_COMPONENT";
+    field public static final String SHOW_KEYGUARD_MESSAGE = "android.permission.SHOW_KEYGUARD_MESSAGE";
+    field public static final String SHUTDOWN = "android.permission.SHUTDOWN";
+    field public static final String STOP_APP_SWITCHES = "android.permission.STOP_APP_SWITCHES";
+    field public static final String SUBSTITUTE_NOTIFICATION_APP_NAME = "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME";
+    field public static final String SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON = "android.permission.SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON";
+    field public static final String SUSPEND_APPS = "android.permission.SUSPEND_APPS";
+    field public static final String SYSTEM_CAMERA = "android.permission.SYSTEM_CAMERA";
+    field public static final String TETHER_PRIVILEGED = "android.permission.TETHER_PRIVILEGED";
+    field public static final String TV_INPUT_HARDWARE = "android.permission.TV_INPUT_HARDWARE";
+    field public static final String TV_VIRTUAL_REMOTE_CONTROLLER = "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER";
+    field public static final String UNLIMITED_SHORTCUTS_API_CALLS = "android.permission.UNLIMITED_SHORTCUTS_API_CALLS";
+    field public static final String UPDATE_APP_OPS_STATS = "android.permission.UPDATE_APP_OPS_STATS";
+    field public static final String UPDATE_LOCK = "android.permission.UPDATE_LOCK";
+    field public static final String UPDATE_TIME_ZONE_RULES = "android.permission.UPDATE_TIME_ZONE_RULES";
+    field public static final String UPGRADE_RUNTIME_PERMISSIONS = "android.permission.UPGRADE_RUNTIME_PERMISSIONS";
+    field public static final String USER_ACTIVITY = "android.permission.USER_ACTIVITY";
+    field public static final String USE_RESERVED_DISK = "android.permission.USE_RESERVED_DISK";
+    field public static final String WHITELIST_AUTO_REVOKE_PERMISSIONS = "android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS";
+    field public static final String WHITELIST_RESTRICTED_PERMISSIONS = "android.permission.WHITELIST_RESTRICTED_PERMISSIONS";
+    field public static final String WIFI_SET_DEVICE_MOBILITY_STATE = "android.permission.WIFI_SET_DEVICE_MOBILITY_STATE";
+    field public static final String WIFI_UPDATE_USABILITY_STATS_SCORE = "android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE";
+    field public static final String WRITE_DEVICE_CONFIG = "android.permission.WRITE_DEVICE_CONFIG";
+    field public static final String WRITE_DREAM_STATE = "android.permission.WRITE_DREAM_STATE";
+    field public static final String WRITE_EMBEDDED_SUBSCRIPTIONS = "android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS";
+    field @Deprecated public static final String WRITE_MEDIA_STORAGE = "android.permission.WRITE_MEDIA_STORAGE";
+    field public static final String WRITE_OBB = "android.permission.WRITE_OBB";
+  }
+
+  public static final class Manifest.permission_group {
+    field public static final String UNDEFINED = "android.permission-group.UNDEFINED";
+  }
+
+  public static final class R.array {
+    field public static final int config_keySystemUuidMapping = 17235973; // 0x1070005
+  }
+
+  public static final class R.attr {
+    field public static final int allowClearUserDataOnFailedRestore = 16844288; // 0x1010600
+    field public static final int isVrOnly = 16844152; // 0x1010578
+    field public static final int minExtensionVersion = 16844305; // 0x1010611
+    field public static final int requiredSystemPropertyName = 16844133; // 0x1010565
+    field public static final int requiredSystemPropertyValue = 16844134; // 0x1010566
+    field public static final int sdkVersion = 16844304; // 0x1010610
+    field public static final int supportsAmbientMode = 16844173; // 0x101058d
+    field public static final int userRestriction = 16844164; // 0x1010584
+  }
+
+  public static final class R.bool {
+    field public static final int config_sendPackageName = 17891328; // 0x1110000
+    field public static final int config_showDefaultAssistant = 17891329; // 0x1110001
+    field public static final int config_showDefaultEmergency = 17891330; // 0x1110002
+    field public static final int config_showDefaultHome = 17891331; // 0x1110003
+  }
+
+  public static final class R.color {
+    field public static final int system_notification_accent_color = 17170460; // 0x106001c
+  }
+
+  public static final class R.dimen {
+    field public static final int config_restrictedIconSize = 17104903; // 0x1050007
+  }
+
+  public static final class R.drawable {
+    field public static final int ic_info = 17301684; // 0x10800b4
+  }
+
+  public static final class R.raw {
+    field public static final int loaderror = 17825792; // 0x1100000
+    field public static final int nodomain = 17825793; // 0x1100001
+  }
+
+  public static final class R.string {
+    field public static final int config_defaultAssistant = 17039393; // 0x1040021
+    field public static final int config_defaultBrowser = 17039394; // 0x1040022
+    field public static final int config_defaultCallRedirection = 17039397; // 0x1040025
+    field public static final int config_defaultCallScreening = 17039398; // 0x1040026
+    field public static final int config_defaultDialer = 17039395; // 0x1040023
+    field public static final int config_defaultSms = 17039396; // 0x1040024
+    field public static final int config_feedbackIntentExtraKey = 17039391; // 0x104001f
+    field public static final int config_feedbackIntentNameKey = 17039392; // 0x1040020
+    field public static final int config_helpIntentExtraKey = 17039389; // 0x104001d
+    field public static final int config_helpIntentNameKey = 17039390; // 0x104001e
+    field public static final int config_helpPackageNameKey = 17039387; // 0x104001b
+    field public static final int config_helpPackageNameValue = 17039388; // 0x104001c
+    field public static final int config_systemGallery = 17039399; // 0x1040027
+  }
+
+  public static final class R.style {
+    field public static final int Theme_DeviceDefault_DocumentsUI = 16974562; // 0x10302e2
+    field public static final int Theme_Leanback_FormWizard = 16974544; // 0x10302d0
+  }
+
+}
+
+package android.accounts {
+
+  public class AccountManager {
+    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public android.accounts.AccountManagerFuture<android.os.Bundle> finishSessionAsUser(android.os.Bundle, android.app.Activity, android.os.UserHandle, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+  }
+
+}
+
+package android.app {
+
+  public class Activity extends android.view.ContextThemeWrapper implements android.content.ComponentCallbacks2 android.view.KeyEvent.Callback android.view.LayoutInflater.Factory2 android.view.View.OnCreateContextMenuListener android.view.Window.Callback {
+    method public void convertFromTranslucent();
+    method public boolean convertToTranslucent(android.app.Activity.TranslucentConversionListener, android.app.ActivityOptions);
+    method @Deprecated public boolean isBackgroundVisibleBehind();
+    method @Deprecated public void onBackgroundVisibleBehindChanged(boolean);
+  }
+
+  public static interface Activity.TranslucentConversionListener {
+    method public void onTranslucentConversionComplete(boolean);
+  }
+
+  public class ActivityManager {
+    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public void addOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener, int);
+    method @RequiresPermission(android.Manifest.permission.FORCE_STOP_PACKAGES) public void forceStopPackage(String);
+    method @RequiresPermission(anyOf={"android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL"}) public static int getCurrentUser();
+    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int getPackageImportance(String);
+    method @NonNull public java.util.Collection<java.util.Locale> getSupportedLocales();
+    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int getUidImportance(int);
+    method @RequiresPermission(android.Manifest.permission.FORCE_STOP_PACKAGES) public void killProcessesWhenImperceptible(@NonNull int[], @NonNull String);
+    method @RequiresPermission(android.Manifest.permission.KILL_UID) public void killUid(int, String);
+    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public void removeOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener);
+    method public void setDeviceLocales(@NonNull android.os.LocaleList);
+    method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public static void setPersistentVrThread(int);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean switchUser(@NonNull android.os.UserHandle);
+  }
+
+  public static interface ActivityManager.OnUidImportanceListener {
+    method public void onUidImportance(int, int);
+  }
+
+  public class AlarmManager {
+    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void set(int, long, long, long, android.app.PendingIntent, android.os.WorkSource);
+    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void set(int, long, long, long, android.app.AlarmManager.OnAlarmListener, android.os.Handler, android.os.WorkSource);
+  }
+
+  public class AppOpsManager {
+    method @Nullable @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public android.app.RuntimeAppOpAccessMessage collectRuntimeAppOpAccessMessage();
+    method @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public void getHistoricalOps(@NonNull android.app.AppOpsManager.HistoricalOpsRequest, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.AppOpsManager.HistoricalOps>);
+    method public static String[] getOpStrs();
+    method @NonNull @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public java.util.List<android.app.AppOpsManager.PackageOps> getOpsForPackage(int, @NonNull String, @Nullable java.lang.String...);
+    method @NonNull @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public java.util.List<android.app.AppOpsManager.PackageOps> getPackagesForOps(@Nullable String[]);
+    method public static int opToDefaultMode(@NonNull String);
+    method @Nullable public static String opToPermission(@NonNull String);
+    method @RequiresPermission("android.permission.MANAGE_APP_OPS_MODES") public void setMode(@NonNull String, int, @Nullable String, int);
+    method @RequiresPermission("android.permission.MANAGE_APP_OPS_MODES") public void setUidMode(@NonNull String, int, int);
+    field public static final String OPSTR_ACCEPT_HANDOVER = "android:accept_handover";
+    field public static final String OPSTR_ACCESS_ACCESSIBILITY = "android:access_accessibility";
+    field public static final String OPSTR_ACCESS_NOTIFICATIONS = "android:access_notifications";
+    field public static final String OPSTR_ACTIVATE_PLATFORM_VPN = "android:activate_platform_vpn";
+    field public static final String OPSTR_ACTIVATE_VPN = "android:activate_vpn";
+    field public static final String OPSTR_ASSIST_SCREENSHOT = "android:assist_screenshot";
+    field public static final String OPSTR_ASSIST_STRUCTURE = "android:assist_structure";
+    field public static final String OPSTR_AUDIO_ACCESSIBILITY_VOLUME = "android:audio_accessibility_volume";
+    field public static final String OPSTR_AUDIO_ALARM_VOLUME = "android:audio_alarm_volume";
+    field public static final String OPSTR_AUDIO_BLUETOOTH_VOLUME = "android:audio_bluetooth_volume";
+    field public static final String OPSTR_AUDIO_MASTER_VOLUME = "android:audio_master_volume";
+    field public static final String OPSTR_AUDIO_MEDIA_VOLUME = "android:audio_media_volume";
+    field public static final String OPSTR_AUDIO_NOTIFICATION_VOLUME = "android:audio_notification_volume";
+    field public static final String OPSTR_AUDIO_RING_VOLUME = "android:audio_ring_volume";
+    field public static final String OPSTR_AUDIO_VOICE_VOLUME = "android:audio_voice_volume";
+    field public static final String OPSTR_AUTO_REVOKE_MANAGED_BY_INSTALLER = "android:auto_revoke_managed_by_installer";
+    field public static final String OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED = "android:auto_revoke_permissions_if_unused";
+    field public static final String OPSTR_BIND_ACCESSIBILITY_SERVICE = "android:bind_accessibility_service";
+    field public static final String OPSTR_CHANGE_WIFI_STATE = "android:change_wifi_state";
+    field public static final String OPSTR_GET_ACCOUNTS = "android:get_accounts";
+    field public static final String OPSTR_GPS = "android:gps";
+    field public static final String OPSTR_INSTANT_APP_START_FOREGROUND = "android:instant_app_start_foreground";
+    field public static final String OPSTR_INTERACT_ACROSS_PROFILES = "android:interact_across_profiles";
+    field public static final String OPSTR_LEGACY_STORAGE = "android:legacy_storage";
+    field public static final String OPSTR_LOADER_USAGE_STATS = "android:loader_usage_stats";
+    field public static final String OPSTR_MANAGE_EXTERNAL_STORAGE = "android:manage_external_storage";
+    field public static final String OPSTR_MANAGE_IPSEC_TUNNELS = "android:manage_ipsec_tunnels";
+    field public static final String OPSTR_MANAGE_ONGOING_CALLS = "android:manage_ongoing_calls";
+    field public static final String OPSTR_MUTE_MICROPHONE = "android:mute_microphone";
+    field public static final String OPSTR_NEIGHBORING_CELLS = "android:neighboring_cells";
+    field public static final String OPSTR_PLAY_AUDIO = "android:play_audio";
+    field public static final String OPSTR_POST_NOTIFICATION = "android:post_notification";
+    field public static final String OPSTR_PROJECT_MEDIA = "android:project_media";
+    field public static final String OPSTR_READ_CLIPBOARD = "android:read_clipboard";
+    field public static final String OPSTR_READ_ICC_SMS = "android:read_icc_sms";
+    field public static final String OPSTR_READ_MEDIA_AUDIO = "android:read_media_audio";
+    field public static final String OPSTR_READ_MEDIA_IMAGES = "android:read_media_images";
+    field public static final String OPSTR_READ_MEDIA_VIDEO = "android:read_media_video";
+    field public static final String OPSTR_RECEIVE_EMERGENCY_BROADCAST = "android:receive_emergency_broadcast";
+    field public static final String OPSTR_REQUEST_DELETE_PACKAGES = "android:request_delete_packages";
+    field public static final String OPSTR_REQUEST_INSTALL_PACKAGES = "android:request_install_packages";
+    field public static final String OPSTR_RUN_ANY_IN_BACKGROUND = "android:run_any_in_background";
+    field public static final String OPSTR_RUN_IN_BACKGROUND = "android:run_in_background";
+    field public static final String OPSTR_START_FOREGROUND = "android:start_foreground";
+    field public static final String OPSTR_TAKE_AUDIO_FOCUS = "android:take_audio_focus";
+    field public static final String OPSTR_TAKE_MEDIA_BUTTONS = "android:take_media_buttons";
+    field public static final String OPSTR_TOAST_WINDOW = "android:toast_window";
+    field public static final String OPSTR_TURN_SCREEN_ON = "android:turn_screen_on";
+    field public static final String OPSTR_VIBRATE = "android:vibrate";
+    field public static final String OPSTR_WAKE_LOCK = "android:wake_lock";
+    field public static final String OPSTR_WIFI_SCAN = "android:wifi_scan";
+    field public static final String OPSTR_WRITE_CLIPBOARD = "android:write_clipboard";
+    field public static final String OPSTR_WRITE_ICC_SMS = "android:write_icc_sms";
+    field public static final String OPSTR_WRITE_MEDIA_AUDIO = "android:write_media_audio";
+    field public static final String OPSTR_WRITE_MEDIA_IMAGES = "android:write_media_images";
+    field public static final String OPSTR_WRITE_MEDIA_VIDEO = "android:write_media_video";
+    field public static final String OPSTR_WRITE_SMS = "android:write_sms";
+    field public static final String OPSTR_WRITE_WALLPAPER = "android:write_wallpaper";
+    field public static final int OP_FLAGS_ALL = 31; // 0x1f
+    field public static final int OP_FLAGS_ALL_TRUSTED = 13; // 0xd
+    field public static final int OP_FLAG_SELF = 1; // 0x1
+    field public static final int OP_FLAG_TRUSTED_PROXIED = 8; // 0x8
+    field public static final int OP_FLAG_TRUSTED_PROXY = 2; // 0x2
+    field public static final int OP_FLAG_UNTRUSTED_PROXIED = 16; // 0x10
+    field public static final int OP_FLAG_UNTRUSTED_PROXY = 4; // 0x4
+    field public static final int UID_STATE_BACKGROUND = 600; // 0x258
+    field public static final int UID_STATE_CACHED = 700; // 0x2bc
+    field public static final int UID_STATE_FOREGROUND = 500; // 0x1f4
+    field public static final int UID_STATE_FOREGROUND_SERVICE = 400; // 0x190
+    field @Deprecated public static final int UID_STATE_FOREGROUND_SERVICE_LOCATION = 300; // 0x12c
+    field public static final int UID_STATE_PERSISTENT = 100; // 0x64
+    field public static final int UID_STATE_TOP = 200; // 0xc8
+  }
+
+  public static final class AppOpsManager.AttributedHistoricalOps implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public android.app.AppOpsManager.HistoricalOp getOp(@NonNull String);
+    method @NonNull public android.app.AppOpsManager.HistoricalOp getOpAt(@IntRange(from=0) int);
+    method @IntRange(from=0) public int getOpCount();
+    method @Nullable public String getTag();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.AttributedHistoricalOps> CREATOR;
+  }
+
+  public static final class AppOpsManager.AttributedOpEntry implements android.os.Parcelable {
+    method public int describeContents();
+    method public long getLastAccessBackgroundTime(int);
+    method public long getLastAccessForegroundTime(int);
+    method public long getLastAccessTime(int);
+    method public long getLastAccessTime(int, int, int);
+    method public long getLastBackgroundDuration(int);
+    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastBackgroundProxyInfo(int);
+    method public long getLastDuration(int);
+    method public long getLastDuration(int, int, int);
+    method public long getLastForegroundDuration(int);
+    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastForegroundProxyInfo(int);
+    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastProxyInfo(int);
+    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastProxyInfo(int, int, int);
+    method public long getLastRejectBackgroundTime(int);
+    method public long getLastRejectForegroundTime(int);
+    method public long getLastRejectTime(int);
+    method public long getLastRejectTime(int, int, int);
+    method public boolean isRunning();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.AttributedOpEntry> CREATOR;
+  }
+
+  public static final class AppOpsManager.HistoricalOp implements android.os.Parcelable {
+    method public int describeContents();
+    method public long getAccessCount(int, int, int);
+    method public long getAccessDuration(int, int, int);
+    method public long getBackgroundAccessCount(int);
+    method public long getBackgroundAccessDuration(int);
+    method public long getBackgroundRejectCount(int);
+    method public long getForegroundAccessCount(int);
+    method public long getForegroundAccessDuration(int);
+    method public long getForegroundRejectCount(int);
+    method @NonNull public String getOpName();
+    method public long getRejectCount(int, int, int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.HistoricalOp> CREATOR;
+  }
+
+  public static final class AppOpsManager.HistoricalOps implements android.os.Parcelable {
+    method public int describeContents();
+    method public long getBeginTimeMillis();
+    method public long getEndTimeMillis();
+    method @IntRange(from=0) public int getUidCount();
+    method @Nullable public android.app.AppOpsManager.HistoricalUidOps getUidOps(int);
+    method @NonNull public android.app.AppOpsManager.HistoricalUidOps getUidOpsAt(@IntRange(from=0) int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.HistoricalOps> CREATOR;
+  }
+
+  public static final class AppOpsManager.HistoricalOpsRequest {
+  }
+
+  public static final class AppOpsManager.HistoricalOpsRequest.Builder {
+    ctor public AppOpsManager.HistoricalOpsRequest.Builder(long, long);
+    method @NonNull public android.app.AppOpsManager.HistoricalOpsRequest build();
+    method @NonNull public android.app.AppOpsManager.HistoricalOpsRequest.Builder setAttributionTag(@Nullable String);
+    method @NonNull public android.app.AppOpsManager.HistoricalOpsRequest.Builder setFlags(int);
+    method @NonNull public android.app.AppOpsManager.HistoricalOpsRequest.Builder setOpNames(@Nullable java.util.List<java.lang.String>);
+    method @NonNull public android.app.AppOpsManager.HistoricalOpsRequest.Builder setPackageName(@Nullable String);
+    method @NonNull public android.app.AppOpsManager.HistoricalOpsRequest.Builder setUid(int);
+  }
+
+  public static final class AppOpsManager.HistoricalPackageOps implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public android.app.AppOpsManager.AttributedHistoricalOps getAttributedOps(@NonNull String);
+    method @NonNull public android.app.AppOpsManager.AttributedHistoricalOps getAttributedOpsAt(@IntRange(from=0) int);
+    method @IntRange(from=0) public int getAttributedOpsCount();
+    method @Nullable public android.app.AppOpsManager.HistoricalOp getOp(@NonNull String);
+    method @NonNull public android.app.AppOpsManager.HistoricalOp getOpAt(@IntRange(from=0) int);
+    method @IntRange(from=0) public int getOpCount();
+    method @NonNull public String getPackageName();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.HistoricalPackageOps> CREATOR;
+  }
+
+  public static final class AppOpsManager.HistoricalUidOps implements android.os.Parcelable {
+    method public int describeContents();
+    method @IntRange(from=0) public int getPackageCount();
+    method @Nullable public android.app.AppOpsManager.HistoricalPackageOps getPackageOps(@NonNull String);
+    method @NonNull public android.app.AppOpsManager.HistoricalPackageOps getPackageOpsAt(@IntRange(from=0) int);
+    method public int getUid();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.HistoricalUidOps> CREATOR;
+  }
+
+  public static final class AppOpsManager.OpEntry implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public java.util.Map<java.lang.String,android.app.AppOpsManager.AttributedOpEntry> getAttributedOpEntries();
+    method @Deprecated public long getDuration();
+    method public long getLastAccessBackgroundTime(int);
+    method public long getLastAccessForegroundTime(int);
+    method public long getLastAccessTime(int);
+    method public long getLastAccessTime(int, int, int);
+    method public long getLastBackgroundDuration(int);
+    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastBackgroundProxyInfo(int);
+    method public long getLastDuration(int);
+    method public long getLastDuration(int, int, int);
+    method public long getLastForegroundDuration(int);
+    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastForegroundProxyInfo(int);
+    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastProxyInfo(int);
+    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastProxyInfo(int, int, int);
+    method public long getLastRejectBackgroundTime(int);
+    method public long getLastRejectForegroundTime(int);
+    method public long getLastRejectTime(int);
+    method public long getLastRejectTime(int, int, int);
+    method public int getMode();
+    method @NonNull public String getOpStr();
+    method @Deprecated @Nullable public String getProxyPackageName();
+    method @Deprecated @Nullable public String getProxyPackageName(int, int);
+    method @Deprecated public int getProxyUid();
+    method @Deprecated public int getProxyUid(int, int);
+    method public boolean isRunning();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.OpEntry> CREATOR;
+  }
+
+  public static final class AppOpsManager.OpEventProxyInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public String getAttributionTag();
+    method @Nullable public String getPackageName();
+    method @IntRange(from=0) public int getUid();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.OpEventProxyInfo> CREATOR;
+  }
+
+  public static final class AppOpsManager.PackageOps implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public java.util.List<android.app.AppOpsManager.OpEntry> getOps();
+    method @NonNull public String getPackageName();
+    method public int getUid();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.PackageOps> CREATOR;
+  }
+
+  public class BroadcastOptions {
+    method public static android.app.BroadcastOptions makeBasic();
+    method @RequiresPermission("android.permission.START_ACTIVITIES_FROM_BACKGROUND") public void setBackgroundActivityStartsAllowed(boolean);
+    method public void setDontSendToRestrictedApps(boolean);
+    method @RequiresPermission(android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST) public void setTemporaryAppWhitelistDuration(long);
+    method public android.os.Bundle toBundle();
+  }
+
+  public class DownloadManager {
+    method @RequiresPermission(android.Manifest.permission.WRITE_MEDIA_STORAGE) public void onMediaStoreDownloadsDeleted(@NonNull android.util.LongSparseArray<java.lang.String>);
+    field public static final String ACTION_DOWNLOAD_COMPLETED = "android.intent.action.DOWNLOAD_COMPLETED";
+  }
+
+  public abstract class InstantAppResolverService extends android.app.Service {
+    ctor public InstantAppResolverService();
+    method public final void attachBaseContext(android.content.Context);
+    method public final android.os.IBinder onBind(android.content.Intent);
+    method @Deprecated public void onGetInstantAppIntentFilter(@Nullable int[], @NonNull String, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback);
+    method @Deprecated public void onGetInstantAppIntentFilter(@NonNull android.content.Intent, @Nullable int[], @NonNull String, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback);
+    method @Deprecated public void onGetInstantAppIntentFilter(@NonNull android.content.Intent, @Nullable int[], @NonNull android.os.UserHandle, @NonNull String, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback);
+    method @MainThread public void onGetInstantAppIntentFilter(@NonNull android.content.pm.InstantAppRequestInfo, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback);
+    method @Deprecated public void onGetInstantAppResolveInfo(@Nullable int[], @NonNull String, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback);
+    method @Deprecated public void onGetInstantAppResolveInfo(@NonNull android.content.Intent, @Nullable int[], @NonNull String, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback);
+    method @Deprecated public void onGetInstantAppResolveInfo(@NonNull android.content.Intent, @Nullable int[], @NonNull android.os.UserHandle, @NonNull String, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback);
+    method @MainThread public void onGetInstantAppResolveInfo(@NonNull android.content.pm.InstantAppRequestInfo, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback);
+  }
+
+  public static final class InstantAppResolverService.InstantAppResolutionCallback {
+    method public void onInstantAppResolveInfo(java.util.List<android.content.pm.InstantAppResolveInfo>);
+  }
+
+  public class KeyguardManager {
+    method public android.content.Intent createConfirmFactoryResetCredentialIntent(CharSequence, CharSequence, CharSequence);
+    method @RequiresPermission("android.permission.SET_INITIAL_LOCK") public int getMinLockLength(boolean, int);
+    method @RequiresPermission(android.Manifest.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS) public boolean getPrivateNotificationsAllowed();
+    method @RequiresPermission("android.permission.SET_INITIAL_LOCK") public boolean isValidLockPasswordComplexity(int, @NonNull byte[], int);
+    method @RequiresPermission(android.Manifest.permission.SHOW_KEYGUARD_MESSAGE) public void requestDismissKeyguard(@NonNull android.app.Activity, @Nullable CharSequence, @Nullable android.app.KeyguardManager.KeyguardDismissCallback);
+    method @RequiresPermission("android.permission.SET_INITIAL_LOCK") public boolean setLock(int, @NonNull byte[], int);
+    method @RequiresPermission(android.Manifest.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS) public void setPrivateNotificationsAllowed(boolean);
+  }
+
+  public class Notification implements android.os.Parcelable {
+    field public static final String CATEGORY_CAR_EMERGENCY = "car_emergency";
+    field public static final String CATEGORY_CAR_INFORMATION = "car_information";
+    field public static final String CATEGORY_CAR_WARNING = "car_warning";
+    field @RequiresPermission(android.Manifest.permission.NOTIFICATION_DURING_SETUP) public static final String EXTRA_ALLOW_DURING_SETUP = "android.allowDuringSetup";
+    field @RequiresPermission(android.Manifest.permission.SUBSTITUTE_NOTIFICATION_APP_NAME) public static final String EXTRA_SUBSTITUTE_APP_NAME = "android.substName";
+    field public static final int FLAG_AUTOGROUP_SUMMARY = 1024; // 0x400
+  }
+
+  public static final class Notification.TvExtender implements android.app.Notification.Extender {
+    ctor public Notification.TvExtender();
+    ctor public Notification.TvExtender(android.app.Notification);
+    method public android.app.Notification.Builder extend(android.app.Notification.Builder);
+    method public String getChannelId();
+    method public android.app.PendingIntent getContentIntent();
+    method public android.app.PendingIntent getDeleteIntent();
+    method public boolean getSuppressShowOverApps();
+    method public boolean isAvailableOnTv();
+    method public android.app.Notification.TvExtender setChannel(String);
+    method public android.app.Notification.TvExtender setChannelId(String);
+    method public android.app.Notification.TvExtender setContentIntent(android.app.PendingIntent);
+    method public android.app.Notification.TvExtender setDeleteIntent(android.app.PendingIntent);
+    method public android.app.Notification.TvExtender setSuppressShowOverApps(boolean);
+  }
+
+  public final class NotificationChannel implements android.os.Parcelable {
+    method public int getUserLockedFields();
+    method public boolean isDeleted();
+    method public void populateFromXml(org.xmlpull.v1.XmlPullParser);
+    method public void setBlockable(boolean);
+    method public org.json.JSONObject toJson() throws org.json.JSONException;
+    method public void writeXml(org.xmlpull.v1.XmlSerializer) throws java.io.IOException;
+    field public static final int USER_LOCKED_SOUND = 32; // 0x20
+  }
+
+  public final class NotificationChannelGroup implements android.os.Parcelable {
+    method public org.json.JSONObject toJson() throws org.json.JSONException;
+  }
+
+  public class NotificationManager {
+    method @NonNull public java.util.List<java.lang.String> getAllowedAssistantAdjustments();
+    method @Nullable public android.content.ComponentName getAllowedNotificationAssistant();
+    method public boolean isNotificationAssistantAccessGranted(@NonNull android.content.ComponentName);
+    method public void setNotificationAssistantAccessGranted(@Nullable android.content.ComponentName, boolean);
+  }
+
+  public final class RuntimeAppOpAccessMessage implements android.os.Parcelable {
+    ctor public RuntimeAppOpAccessMessage(@IntRange(from=0L) int, @IntRange(from=0L) int, @NonNull String, @Nullable String, @NonNull String, int);
+    method public int describeContents();
+    method @Nullable public String getAttributionTag();
+    method @NonNull public String getMessage();
+    method @NonNull public String getOp();
+    method @NonNull public String getPackageName();
+    method public int getSamplingStrategy();
+    method @IntRange(from=0L) public int getUid();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.RuntimeAppOpAccessMessage> CREATOR;
+  }
+
+  public class SearchManager implements android.content.DialogInterface.OnCancelListener android.content.DialogInterface.OnDismissListener {
+    method public void launchAssist(@Nullable android.os.Bundle);
+  }
+
+  public class StatusBarManager {
+    method @NonNull @RequiresPermission(android.Manifest.permission.STATUS_BAR) public android.app.StatusBarManager.DisableInfo getDisableInfo();
+    method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void setDisabledForSetup(boolean);
+  }
+
+  public static final class StatusBarManager.DisableInfo {
+    method public boolean areAllComponentsEnabled();
+    method public boolean isNavigateToHomeDisabled();
+    method public boolean isNotificationPeekingDisabled();
+    method public boolean isRecentsDisabled();
+    method public boolean isSearchDisabled();
+    method public boolean isStatusBarExpansionDisabled();
+  }
+
+  public final class SystemServiceRegistry {
+    method public static <TServiceClass> void registerContextAwareService(@NonNull String, @NonNull Class<TServiceClass>, @NonNull android.app.SystemServiceRegistry.ContextAwareServiceProducerWithBinder<TServiceClass>);
+    method public static <TServiceClass> void registerContextAwareService(@NonNull String, @NonNull Class<TServiceClass>, @NonNull android.app.SystemServiceRegistry.ContextAwareServiceProducerWithoutBinder<TServiceClass>);
+    method public static <TServiceClass> void registerStaticService(@NonNull String, @NonNull Class<TServiceClass>, @NonNull android.app.SystemServiceRegistry.StaticServiceProducerWithBinder<TServiceClass>);
+    method public static <TServiceClass> void registerStaticService(@NonNull String, @NonNull Class<TServiceClass>, @NonNull android.app.SystemServiceRegistry.StaticServiceProducerWithoutBinder<TServiceClass>);
+  }
+
+  public static interface SystemServiceRegistry.ContextAwareServiceProducerWithBinder<TServiceClass> {
+    method @NonNull public TServiceClass createService(@NonNull android.content.Context, @NonNull android.os.IBinder);
+  }
+
+  public static interface SystemServiceRegistry.ContextAwareServiceProducerWithoutBinder<TServiceClass> {
+    method @NonNull public TServiceClass createService(@NonNull android.content.Context);
+  }
+
+  public static interface SystemServiceRegistry.StaticServiceProducerWithBinder<TServiceClass> {
+    method @NonNull public TServiceClass createService(@NonNull android.os.IBinder);
+  }
+
+  public static interface SystemServiceRegistry.StaticServiceProducerWithoutBinder<TServiceClass> {
+    method @NonNull public TServiceClass createService();
+  }
+
+  public class UiModeManager {
+    method @RequiresPermission(android.Manifest.permission.ENTER_CAR_MODE_PRIORITIZED) public void enableCarMode(@IntRange(from=0) int, int);
+    field public static final String ACTION_ENTER_CAR_MODE_PRIORITIZED = "android.app.action.ENTER_CAR_MODE_PRIORITIZED";
+    field public static final String ACTION_EXIT_CAR_MODE_PRIORITIZED = "android.app.action.EXIT_CAR_MODE_PRIORITIZED";
+    field public static final int DEFAULT_PRIORITY = 0; // 0x0
+    field public static final String EXTRA_CALLING_PACKAGE = "android.app.extra.CALLING_PACKAGE";
+    field public static final String EXTRA_PRIORITY = "android.app.extra.PRIORITY";
+  }
+
+  public final class Vr2dDisplayProperties implements android.os.Parcelable {
+    ctor public Vr2dDisplayProperties(int, int, int);
+    method public int describeContents();
+    method public void dump(@NonNull java.io.PrintWriter, @NonNull String);
+    method public int getAddedFlags();
+    method public int getDpi();
+    method public int getHeight();
+    method public int getRemovedFlags();
+    method public int getWidth();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.Vr2dDisplayProperties> CREATOR;
+    field public static final int FLAG_VIRTUAL_DISPLAY_ENABLED = 1; // 0x1
+  }
+
+  public static final class Vr2dDisplayProperties.Builder {
+    ctor public Vr2dDisplayProperties.Builder();
+    method @NonNull public android.app.Vr2dDisplayProperties.Builder addFlags(int);
+    method @NonNull public android.app.Vr2dDisplayProperties build();
+    method @NonNull public android.app.Vr2dDisplayProperties.Builder removeFlags(int);
+    method @NonNull public android.app.Vr2dDisplayProperties.Builder setDimensions(int, int, int);
+    method @NonNull public android.app.Vr2dDisplayProperties.Builder setEnabled(boolean);
+  }
+
+  public class VrManager {
+    method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public int getVr2dDisplayId();
+    method @RequiresPermission(anyOf={android.Manifest.permission.RESTRICTED_VR_ACCESS, "android.permission.ACCESS_VR_STATE"}) public boolean isPersistentVrModeEnabled();
+    method @RequiresPermission(anyOf={android.Manifest.permission.RESTRICTED_VR_ACCESS, "android.permission.ACCESS_VR_STATE"}) public boolean isVrModeEnabled();
+    method @RequiresPermission(anyOf={android.Manifest.permission.RESTRICTED_VR_ACCESS, "android.permission.ACCESS_VR_STATE"}) public void registerVrStateCallback(@NonNull java.util.concurrent.Executor, @NonNull android.app.VrStateCallback);
+    method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public void setAndBindVrCompositor(android.content.ComponentName);
+    method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public void setPersistentVrModeEnabled(boolean);
+    method @RequiresPermission("android.permission.ACCESS_VR_MANAGER") public void setStandbyEnabled(boolean);
+    method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public void setVr2dDisplayProperties(@NonNull android.app.Vr2dDisplayProperties);
+    method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public void setVrInputMethod(@Nullable android.content.ComponentName);
+    method @RequiresPermission(anyOf={android.Manifest.permission.RESTRICTED_VR_ACCESS, "android.permission.ACCESS_VR_STATE"}) public void unregisterVrStateCallback(@NonNull android.app.VrStateCallback);
+  }
+
+  public abstract class VrStateCallback {
+    ctor public VrStateCallback();
+    method public void onPersistentVrStateChanged(boolean);
+    method public void onVrStateChanged(boolean);
+  }
+
+  public final class WallpaperColors implements android.os.Parcelable {
+    ctor public WallpaperColors(@NonNull android.graphics.Color, @Nullable android.graphics.Color, @Nullable android.graphics.Color, int);
+    method public int getColorHints();
+    field public static final int HINT_SUPPORTS_DARK_TEXT = 1; // 0x1
+    field public static final int HINT_SUPPORTS_DARK_THEME = 2; // 0x2
+  }
+
+  public final class WallpaperInfo implements android.os.Parcelable {
+    method public boolean supportsAmbientMode();
+  }
+
+  public class WallpaperManager {
+    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public void clearWallpaper(int, int);
+    method public void setDisplayOffset(android.os.IBinder, int, int);
+    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER_COMPONENT) public boolean setWallpaperComponent(android.content.ComponentName);
+  }
+
+}
+
+package android.app.admin {
+
+  public class DevicePolicyKeyguardService extends android.app.Service {
+    ctor public DevicePolicyKeyguardService();
+    method @Nullable public void dismiss();
+    method @Nullable public final android.os.IBinder onBind(@Nullable android.content.Intent);
+    method @Nullable public android.view.SurfaceControlViewHost.SurfacePackage onCreateKeyguardSurface(@NonNull android.os.IBinder);
+  }
+
+  public class DevicePolicyManager {
+    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public boolean getBluetoothContactSharingDisabled(@NonNull android.os.UserHandle);
+    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public String getDeviceOwner();
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public android.content.ComponentName getDeviceOwnerComponentOnAnyUser();
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public String getDeviceOwnerNameOnAnyUser();
+    method @Nullable public CharSequence getDeviceOwnerOrganizationName();
+    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public android.os.UserHandle getDeviceOwnerUser();
+    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public java.util.List<java.lang.String> getPermittedAccessibilityServices(int);
+    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public java.util.List<java.lang.String> getPermittedInputMethodsForCurrentUser();
+    method @Nullable public android.content.ComponentName getProfileOwner() throws java.lang.IllegalArgumentException;
+    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public String getProfileOwnerNameAsUser(int) throws java.lang.IllegalArgumentException;
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public int getUserProvisioningState();
+    method public boolean isDeviceManaged();
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isDeviceProvisioned();
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isDeviceProvisioningConfigApplied();
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isManagedKiosk();
+    method public boolean isSecondaryLockscreenEnabled(@NonNull android.os.UserHandle);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isUnattendedManagedKiosk();
+    method @RequiresPermission("android.permission.NOTIFY_PENDING_SYSTEM_UPDATE") public void notifyPendingSystemUpdate(long);
+    method @RequiresPermission("android.permission.NOTIFY_PENDING_SYSTEM_UPDATE") public void notifyPendingSystemUpdate(long, boolean);
+    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public boolean packageHasActiveAdmins(String);
+    method @Deprecated @RequiresPermission("android.permission.MANAGE_DEVICE_ADMINS") public boolean setActiveProfileOwner(@NonNull android.content.ComponentName, String) throws java.lang.IllegalArgumentException;
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public void setDeviceProvisioningConfigApplied();
+    method @Deprecated @RequiresPermission(value=android.Manifest.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS, conditional=true) public void setProfileOwnerCanAccessDeviceIds(@NonNull android.content.ComponentName);
+    method public void setSecondaryLockscreenEnabled(@NonNull android.content.ComponentName, boolean);
+    field public static final String ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_ALLOWED = "android.account.DEVICE_OR_PROFILE_OWNER_ALLOWED";
+    field public static final String ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_DISALLOWED = "android.account.DEVICE_OR_PROFILE_OWNER_DISALLOWED";
+    field public static final String ACTION_BIND_SECONDARY_LOCKSCREEN_SERVICE = "android.app.action.BIND_SECONDARY_LOCKSCREEN_SERVICE";
+    field public static final String ACTION_PROVISION_FINALIZATION = "android.app.action.PROVISION_FINALIZATION";
+    field public static final String ACTION_PROVISION_FINANCED_DEVICE = "android.app.action.PROVISION_FINANCED_DEVICE";
+    field public static final String ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE = "android.app.action.PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE";
+    field @RequiresPermission(android.Manifest.permission.MANAGE_FACTORY_RESET_PROTECTION) public static final String ACTION_RESET_PROTECTION_POLICY_CHANGED = "android.app.action.RESET_PROTECTION_POLICY_CHANGED";
+    field public static final String ACTION_SET_PROFILE_OWNER = "android.app.action.SET_PROFILE_OWNER";
+    field public static final String ACTION_STATE_USER_SETUP_COMPLETE = "android.app.action.STATE_USER_SETUP_COMPLETE";
+    field public static final String EXTRA_PROFILE_OWNER_NAME = "android.app.extra.PROFILE_OWNER_NAME";
+    field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_ICON_URI = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_ICON_URI";
+    field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_LABEL = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_LABEL";
+    field public static final String EXTRA_PROVISIONING_ORGANIZATION_NAME = "android.app.extra.PROVISIONING_ORGANIZATION_NAME";
+    field public static final String EXTRA_PROVISIONING_SUPPORT_URL = "android.app.extra.PROVISIONING_SUPPORT_URL";
+    field public static final String EXTRA_PROVISIONING_TRIGGER = "android.app.extra.PROVISIONING_TRIGGER";
+    field public static final String EXTRA_RESTRICTION = "android.app.extra.RESTRICTION";
+    field public static final int PROVISIONING_TRIGGER_CLOUD_ENROLLMENT = 1; // 0x1
+    field public static final int PROVISIONING_TRIGGER_PERSISTENT_DEVICE_OWNER = 3; // 0x3
+    field public static final int PROVISIONING_TRIGGER_QR_CODE = 2; // 0x2
+    field public static final int PROVISIONING_TRIGGER_UNSPECIFIED = 0; // 0x0
+    field public static final int STATE_USER_PROFILE_COMPLETE = 4; // 0x4
+    field public static final int STATE_USER_SETUP_COMPLETE = 2; // 0x2
+    field public static final int STATE_USER_SETUP_FINALIZED = 3; // 0x3
+    field public static final int STATE_USER_SETUP_INCOMPLETE = 1; // 0x1
+    field public static final int STATE_USER_UNMANAGED = 0; // 0x0
+  }
+
+  public final class SystemUpdatePolicy implements android.os.Parcelable {
+    method public android.app.admin.SystemUpdatePolicy.InstallationOption getInstallationOptionAt(long);
+    field public static final int TYPE_PAUSE = 4; // 0x4
+  }
+
+  public static class SystemUpdatePolicy.InstallationOption {
+    method public long getEffectiveTime();
+    method public int getType();
+  }
+
+}
+
+package android.app.assist {
+
+  public static class AssistStructure.ViewNode {
+    ctor public AssistStructure.ViewNode();
+  }
+
+}
+
+package android.app.backup {
+
+  public class BackupDataInput {
+    ctor public BackupDataInput(java.io.FileDescriptor);
+  }
+
+  public class BackupDataOutput {
+    ctor public BackupDataOutput(java.io.FileDescriptor);
+    ctor public BackupDataOutput(java.io.FileDescriptor, long);
+  }
+
+  public class BackupManager {
+    method @RequiresPermission(android.Manifest.permission.BACKUP) public void backupNow();
+    method @RequiresPermission(android.Manifest.permission.BACKUP) public android.app.backup.RestoreSession beginRestoreSession();
+    method @RequiresPermission(android.Manifest.permission.BACKUP) public void cancelBackups();
+    method @RequiresPermission(android.Manifest.permission.BACKUP) public void excludeKeysFromRestore(@NonNull String, @NonNull java.util.List<java.lang.String>);
+    method @RequiresPermission(android.Manifest.permission.BACKUP) public long getAvailableRestoreToken(String);
+    method @RequiresPermission(android.Manifest.permission.BACKUP) public android.content.Intent getConfigurationIntent(String);
+    method @RequiresPermission(android.Manifest.permission.BACKUP) public String getCurrentTransport();
+    method @Nullable @RequiresPermission(android.Manifest.permission.BACKUP) public android.content.ComponentName getCurrentTransportComponent();
+    method @RequiresPermission(android.Manifest.permission.BACKUP) public android.content.Intent getDataManagementIntent(String);
+    method @Nullable @RequiresPermission(android.Manifest.permission.BACKUP) public CharSequence getDataManagementIntentLabel(@NonNull String);
+    method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.BACKUP) public String getDataManagementLabel(@NonNull String);
+    method @RequiresPermission(android.Manifest.permission.BACKUP) public String getDestinationString(String);
+    method @RequiresPermission(android.Manifest.permission.BACKUP) public boolean isAppEligibleForBackup(String);
+    method @RequiresPermission(android.Manifest.permission.BACKUP) public boolean isBackupEnabled();
+    method @RequiresPermission(android.Manifest.permission.BACKUP) public boolean isBackupServiceActive(android.os.UserHandle);
+    method @RequiresPermission(android.Manifest.permission.BACKUP) public String[] listAllTransports();
+    method @RequiresPermission(android.Manifest.permission.BACKUP) public int requestBackup(String[], android.app.backup.BackupObserver);
+    method @RequiresPermission(android.Manifest.permission.BACKUP) public int requestBackup(String[], android.app.backup.BackupObserver, android.app.backup.BackupManagerMonitor, int);
+    method @Deprecated public int requestRestore(android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.BACKUP) public String selectBackupTransport(String);
+    method @RequiresPermission(android.Manifest.permission.BACKUP) public void selectBackupTransport(android.content.ComponentName, android.app.backup.SelectBackupTransportCallback);
+    method @RequiresPermission(android.Manifest.permission.BACKUP) public void setAncestralSerialNumber(long);
+    method @RequiresPermission(android.Manifest.permission.BACKUP) public void setAutoRestore(boolean);
+    method @RequiresPermission(android.Manifest.permission.BACKUP) public void setBackupEnabled(boolean);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.BACKUP) public void updateTransportAttributes(@NonNull android.content.ComponentName, @NonNull String, @Nullable android.content.Intent, @NonNull String, @Nullable android.content.Intent, @Nullable String);
+    method @RequiresPermission(android.Manifest.permission.BACKUP) public void updateTransportAttributes(@NonNull android.content.ComponentName, @NonNull String, @Nullable android.content.Intent, @NonNull String, @Nullable android.content.Intent, @Nullable CharSequence);
+    field public static final int ERROR_AGENT_FAILURE = -1003; // 0xfffffc15
+    field public static final int ERROR_BACKUP_CANCELLED = -2003; // 0xfffff82d
+    field public static final int ERROR_BACKUP_NOT_ALLOWED = -2001; // 0xfffff82f
+    field public static final int ERROR_PACKAGE_NOT_FOUND = -2002; // 0xfffff82e
+    field public static final int ERROR_TRANSPORT_ABORTED = -1000; // 0xfffffc18
+    field public static final int ERROR_TRANSPORT_INVALID = -2; // 0xfffffffe
+    field public static final int ERROR_TRANSPORT_PACKAGE_REJECTED = -1002; // 0xfffffc16
+    field public static final int ERROR_TRANSPORT_QUOTA_EXCEEDED = -1005; // 0xfffffc13
+    field public static final int ERROR_TRANSPORT_UNAVAILABLE = -1; // 0xffffffff
+    field public static final int FLAG_NON_INCREMENTAL_BACKUP = 1; // 0x1
+    field public static final String PACKAGE_MANAGER_SENTINEL = "@pm@";
+    field public static final int SUCCESS = 0; // 0x0
+  }
+
+  public class BackupManagerMonitor {
+    ctor public BackupManagerMonitor();
+    method public void onEvent(android.os.Bundle);
+    field public static final String EXTRA_LOG_CANCEL_ALL = "android.app.backup.extra.LOG_CANCEL_ALL";
+    field public static final String EXTRA_LOG_EVENT_CATEGORY = "android.app.backup.extra.LOG_EVENT_CATEGORY";
+    field public static final String EXTRA_LOG_EVENT_ID = "android.app.backup.extra.LOG_EVENT_ID";
+    field public static final String EXTRA_LOG_EVENT_PACKAGE_LONG_VERSION = "android.app.backup.extra.LOG_EVENT_PACKAGE_FULL_VERSION";
+    field public static final String EXTRA_LOG_EVENT_PACKAGE_NAME = "android.app.backup.extra.LOG_EVENT_PACKAGE_NAME";
+    field @Deprecated public static final String EXTRA_LOG_EVENT_PACKAGE_VERSION = "android.app.backup.extra.LOG_EVENT_PACKAGE_VERSION";
+    field public static final String EXTRA_LOG_EXCEPTION_FULL_BACKUP = "android.app.backup.extra.LOG_EXCEPTION_FULL_BACKUP";
+    field public static final String EXTRA_LOG_ILLEGAL_KEY = "android.app.backup.extra.LOG_ILLEGAL_KEY";
+    field public static final String EXTRA_LOG_MANIFEST_PACKAGE_NAME = "android.app.backup.extra.LOG_MANIFEST_PACKAGE_NAME";
+    field public static final String EXTRA_LOG_OLD_VERSION = "android.app.backup.extra.LOG_OLD_VERSION";
+    field public static final String EXTRA_LOG_POLICY_ALLOW_APKS = "android.app.backup.extra.LOG_POLICY_ALLOW_APKS";
+    field public static final String EXTRA_LOG_PREFLIGHT_ERROR = "android.app.backup.extra.LOG_PREFLIGHT_ERROR";
+    field public static final String EXTRA_LOG_RESTORE_ANYWAY = "android.app.backup.extra.LOG_RESTORE_ANYWAY";
+    field public static final String EXTRA_LOG_RESTORE_VERSION = "android.app.backup.extra.LOG_RESTORE_VERSION";
+    field public static final String EXTRA_LOG_WIDGET_PACKAGE_NAME = "android.app.backup.extra.LOG_WIDGET_PACKAGE_NAME";
+    field public static final int LOG_EVENT_CATEGORY_AGENT = 2; // 0x2
+    field public static final int LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY = 3; // 0x3
+    field public static final int LOG_EVENT_CATEGORY_TRANSPORT = 1; // 0x1
+    field public static final int LOG_EVENT_ID_APK_NOT_INSTALLED = 40; // 0x28
+    field public static final int LOG_EVENT_ID_APP_HAS_NO_AGENT = 28; // 0x1c
+    field public static final int LOG_EVENT_ID_BACKUP_DISABLED = 13; // 0xd
+    field public static final int LOG_EVENT_ID_CANNOT_RESTORE_WITHOUT_APK = 41; // 0x29
+    field public static final int LOG_EVENT_ID_CANT_FIND_AGENT = 30; // 0x1e
+    field public static final int LOG_EVENT_ID_CORRUPT_MANIFEST = 46; // 0x2e
+    field public static final int LOG_EVENT_ID_DEVICE_NOT_PROVISIONED = 14; // 0xe
+    field public static final int LOG_EVENT_ID_ERROR_PREFLIGHT = 16; // 0x10
+    field public static final int LOG_EVENT_ID_EXCEPTION_FULL_BACKUP = 19; // 0x13
+    field public static final int LOG_EVENT_ID_EXPECTED_DIFFERENT_PACKAGE = 43; // 0x2b
+    field public static final int LOG_EVENT_ID_FULL_BACKUP_CANCEL = 4; // 0x4
+    field public static final int LOG_EVENT_ID_FULL_RESTORE_ALLOW_BACKUP_FALSE = 39; // 0x27
+    field public static final int LOG_EVENT_ID_FULL_RESTORE_SIGNATURE_MISMATCH = 37; // 0x25
+    field public static final int LOG_EVENT_ID_FULL_RESTORE_TIMEOUT = 45; // 0x2d
+    field public static final int LOG_EVENT_ID_ILLEGAL_KEY = 5; // 0x5
+    field public static final int LOG_EVENT_ID_KEY_VALUE_BACKUP_CANCEL = 21; // 0x15
+    field public static final int LOG_EVENT_ID_KEY_VALUE_RESTORE_TIMEOUT = 31; // 0x1f
+    field public static final int LOG_EVENT_ID_LOST_TRANSPORT = 25; // 0x19
+    field public static final int LOG_EVENT_ID_MISSING_SIGNATURE = 42; // 0x2a
+    field public static final int LOG_EVENT_ID_NO_DATA_TO_SEND = 7; // 0x7
+    field public static final int LOG_EVENT_ID_NO_PACKAGES = 49; // 0x31
+    field public static final int LOG_EVENT_ID_NO_PM_METADATA_RECEIVED = 23; // 0x17
+    field public static final int LOG_EVENT_ID_NO_RESTORE_METADATA_AVAILABLE = 22; // 0x16
+    field public static final int LOG_EVENT_ID_PACKAGE_INELIGIBLE = 9; // 0x9
+    field public static final int LOG_EVENT_ID_PACKAGE_KEY_VALUE_PARTICIPANT = 10; // 0xa
+    field public static final int LOG_EVENT_ID_PACKAGE_NOT_FOUND = 12; // 0xc
+    field public static final int LOG_EVENT_ID_PACKAGE_NOT_PRESENT = 26; // 0x1a
+    field public static final int LOG_EVENT_ID_PACKAGE_STOPPED = 11; // 0xb
+    field public static final int LOG_EVENT_ID_PACKAGE_TRANSPORT_NOT_PRESENT = 15; // 0xf
+    field public static final int LOG_EVENT_ID_PM_AGENT_HAS_NO_METADATA = 24; // 0x18
+    field public static final int LOG_EVENT_ID_QUOTA_HIT_PREFLIGHT = 18; // 0x12
+    field public static final int LOG_EVENT_ID_RESTORE_ANY_VERSION = 34; // 0x22
+    field public static final int LOG_EVENT_ID_RESTORE_VERSION_HIGHER = 27; // 0x1b
+    field public static final int LOG_EVENT_ID_SIGNATURE_MISMATCH = 29; // 0x1d
+    field public static final int LOG_EVENT_ID_SYSTEM_APP_NO_AGENT = 38; // 0x26
+    field public static final int LOG_EVENT_ID_TRANSPORT_IS_NULL = 50; // 0x32
+    field public static final int LOG_EVENT_ID_TRANSPORT_NON_INCREMENTAL_BACKUP_REQUIRED = 51; // 0x33
+    field public static final int LOG_EVENT_ID_UNKNOWN_VERSION = 44; // 0x2c
+    field public static final int LOG_EVENT_ID_VERSIONS_MATCH = 35; // 0x23
+    field public static final int LOG_EVENT_ID_VERSION_OF_BACKUP_OLDER = 36; // 0x24
+    field public static final int LOG_EVENT_ID_WIDGET_METADATA_MISMATCH = 47; // 0x2f
+    field public static final int LOG_EVENT_ID_WIDGET_UNKNOWN_VERSION = 48; // 0x30
+  }
+
+  public abstract class BackupObserver {
+    ctor public BackupObserver();
+    method public void backupFinished(int);
+    method public void onResult(String, int);
+    method public void onUpdate(String, android.app.backup.BackupProgress);
+  }
+
+  public class BackupProgress implements android.os.Parcelable {
+    ctor public BackupProgress(long, long);
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.backup.BackupProgress> CREATOR;
+    field public final long bytesExpected;
+    field public final long bytesTransferred;
+  }
+
+  public class BackupTransport {
+    ctor public BackupTransport();
+    method public int abortFullRestore();
+    method public void cancelFullBackup();
+    method public int checkFullBackupSize(long);
+    method public int clearBackupData(android.content.pm.PackageInfo);
+    method public android.content.Intent configurationIntent();
+    method public String currentDestinationString();
+    method public android.content.Intent dataManagementIntent();
+    method @Nullable public CharSequence dataManagementIntentLabel();
+    method @Deprecated @Nullable public String dataManagementLabel();
+    method public int finishBackup();
+    method public void finishRestore();
+    method public android.app.backup.RestoreSet[] getAvailableRestoreSets();
+    method public long getBackupQuota(String, boolean);
+    method public android.os.IBinder getBinder();
+    method public long getCurrentRestoreSet();
+    method public int getNextFullRestoreDataChunk(android.os.ParcelFileDescriptor);
+    method public int getRestoreData(android.os.ParcelFileDescriptor);
+    method public int getTransportFlags();
+    method public int initializeDevice();
+    method public boolean isAppEligibleForBackup(android.content.pm.PackageInfo, boolean);
+    method public String name();
+    method public android.app.backup.RestoreDescription nextRestorePackage();
+    method public int performBackup(android.content.pm.PackageInfo, android.os.ParcelFileDescriptor, int);
+    method public int performBackup(android.content.pm.PackageInfo, android.os.ParcelFileDescriptor);
+    method public int performFullBackup(android.content.pm.PackageInfo, android.os.ParcelFileDescriptor, int);
+    method public int performFullBackup(android.content.pm.PackageInfo, android.os.ParcelFileDescriptor);
+    method public long requestBackupTime();
+    method public long requestFullBackupTime();
+    method public int sendBackupData(int);
+    method public int startRestore(long, android.content.pm.PackageInfo[]);
+    method public String transportDirName();
+    field public static final int AGENT_ERROR = -1003; // 0xfffffc15
+    field public static final int AGENT_UNKNOWN = -1004; // 0xfffffc14
+    field public static final String EXTRA_TRANSPORT_REGISTRATION = "android.app.backup.extra.TRANSPORT_REGISTRATION";
+    field public static final int FLAG_DATA_NOT_CHANGED = 8; // 0x8
+    field public static final int FLAG_INCREMENTAL = 2; // 0x2
+    field public static final int FLAG_NON_INCREMENTAL = 4; // 0x4
+    field public static final int FLAG_USER_INITIATED = 1; // 0x1
+    field public static final int NO_MORE_DATA = -1; // 0xffffffff
+    field public static final int TRANSPORT_ERROR = -1000; // 0xfffffc18
+    field public static final int TRANSPORT_NON_INCREMENTAL_BACKUP_REQUIRED = -1006; // 0xfffffc12
+    field public static final int TRANSPORT_NOT_INITIALIZED = -1001; // 0xfffffc17
+    field public static final int TRANSPORT_OK = 0; // 0x0
+    field public static final int TRANSPORT_PACKAGE_REJECTED = -1002; // 0xfffffc16
+    field public static final int TRANSPORT_QUOTA_EXCEEDED = -1005; // 0xfffffc13
+  }
+
+  public class RestoreDescription implements android.os.Parcelable {
+    ctor public RestoreDescription(String, int);
+    method public int describeContents();
+    method public int getDataType();
+    method public String getPackageName();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.backup.RestoreDescription> CREATOR;
+    field public static final android.app.backup.RestoreDescription NO_MORE_PACKAGES;
+    field public static final int TYPE_FULL_STREAM = 2; // 0x2
+    field public static final int TYPE_KEY_VALUE = 1; // 0x1
+  }
+
+  public abstract class RestoreObserver {
+    method public void restoreSetsAvailable(android.app.backup.RestoreSet[]);
+  }
+
+  public class RestoreSession {
+    method public void endRestoreSession();
+    method public int getAvailableRestoreSets(android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor);
+    method public int getAvailableRestoreSets(android.app.backup.RestoreObserver);
+    method public int restoreAll(long, android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor);
+    method public int restoreAll(long, android.app.backup.RestoreObserver);
+    method public int restorePackage(String, android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor);
+    method public int restorePackage(String, android.app.backup.RestoreObserver);
+    method public int restorePackages(long, @Nullable android.app.backup.RestoreObserver, @NonNull java.util.Set<java.lang.String>, @Nullable android.app.backup.BackupManagerMonitor);
+    method public int restorePackages(long, @Nullable android.app.backup.RestoreObserver, @NonNull java.util.Set<java.lang.String>);
+  }
+
+  public class RestoreSet implements android.os.Parcelable {
+    ctor public RestoreSet();
+    ctor public RestoreSet(String, String, long);
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.backup.RestoreSet> CREATOR;
+    field public String device;
+    field public String name;
+    field public long token;
+  }
+
+  public abstract class SelectBackupTransportCallback {
+    ctor public SelectBackupTransportCallback();
+    method public void onFailure(int);
+    method public void onSuccess(String);
+  }
+
+}
+
+package android.app.compat {
+
+  public final class CompatChanges {
+    method public static boolean isChangeEnabled(long);
+    method @RequiresPermission(allOf={"android.permission.READ_COMPAT_CHANGE_CONFIG", "android.permission.LOG_COMPAT_CHANGE"}) public static boolean isChangeEnabled(long, @NonNull String, @NonNull android.os.UserHandle);
+    method @RequiresPermission(allOf={"android.permission.READ_COMPAT_CHANGE_CONFIG", "android.permission.LOG_COMPAT_CHANGE"}) public static boolean isChangeEnabled(long, int);
+  }
+
+}
+
+package android.app.contentsuggestions {
+
+  public final class ClassificationsRequest implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public android.os.Bundle getExtras();
+    method @NonNull public java.util.List<android.app.contentsuggestions.ContentSelection> getSelections();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.contentsuggestions.ClassificationsRequest> CREATOR;
+  }
+
+  public static final class ClassificationsRequest.Builder {
+    ctor public ClassificationsRequest.Builder(@NonNull java.util.List<android.app.contentsuggestions.ContentSelection>);
+    method @NonNull public android.app.contentsuggestions.ClassificationsRequest build();
+    method @NonNull public android.app.contentsuggestions.ClassificationsRequest.Builder setExtras(@NonNull android.os.Bundle);
+  }
+
+  public final class ContentClassification implements android.os.Parcelable {
+    ctor public ContentClassification(@NonNull String, @NonNull android.os.Bundle);
+    method public int describeContents();
+    method @NonNull public android.os.Bundle getExtras();
+    method @NonNull public String getId();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.contentsuggestions.ContentClassification> CREATOR;
+  }
+
+  public final class ContentSelection implements android.os.Parcelable {
+    ctor public ContentSelection(@NonNull String, @NonNull android.os.Bundle);
+    method public int describeContents();
+    method @NonNull public android.os.Bundle getExtras();
+    method @NonNull public String getId();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.contentsuggestions.ContentSelection> CREATOR;
+  }
+
+  public final class ContentSuggestionsManager {
+    method public void classifyContentSelections(@NonNull android.app.contentsuggestions.ClassificationsRequest, @NonNull java.util.concurrent.Executor, @NonNull android.app.contentsuggestions.ContentSuggestionsManager.ClassificationsCallback);
+    method public boolean isEnabled();
+    method public void notifyInteraction(@NonNull String, @NonNull android.os.Bundle);
+    method public void provideContextImage(@NonNull android.graphics.Bitmap, @NonNull android.os.Bundle);
+    method public void provideContextImage(int, @NonNull android.os.Bundle);
+    method public void suggestContentSelections(@NonNull android.app.contentsuggestions.SelectionsRequest, @NonNull java.util.concurrent.Executor, @NonNull android.app.contentsuggestions.ContentSuggestionsManager.SelectionsCallback);
+  }
+
+  public static interface ContentSuggestionsManager.ClassificationsCallback {
+    method public void onContentClassificationsAvailable(int, @NonNull java.util.List<android.app.contentsuggestions.ContentClassification>);
+  }
+
+  public static interface ContentSuggestionsManager.SelectionsCallback {
+    method public void onContentSelectionsAvailable(int, @NonNull java.util.List<android.app.contentsuggestions.ContentSelection>);
+  }
+
+  public final class SelectionsRequest implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public android.os.Bundle getExtras();
+    method @Nullable public android.graphics.Point getInterestPoint();
+    method public int getTaskId();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.contentsuggestions.SelectionsRequest> CREATOR;
+  }
+
+  public static final class SelectionsRequest.Builder {
+    ctor public SelectionsRequest.Builder(int);
+    method @NonNull public android.app.contentsuggestions.SelectionsRequest build();
+    method @NonNull public android.app.contentsuggestions.SelectionsRequest.Builder setExtras(@NonNull android.os.Bundle);
+    method @NonNull public android.app.contentsuggestions.SelectionsRequest.Builder setInterestPoint(@NonNull android.graphics.Point);
+  }
+
+}
+
+package android.app.job {
+
+  public abstract class JobScheduler {
+    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public abstract int scheduleAsPackage(@NonNull android.app.job.JobInfo, @NonNull String, int, String);
+  }
+
+  public class JobSchedulerFrameworkInitializer {
+    method public static void registerServiceWrappers();
+  }
+
+}
+
+package android.app.prediction {
+
+  public final class AppPredictionContext implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public android.os.Bundle getExtras();
+    method @NonNull public String getPackageName();
+    method @IntRange(from=0) public int getPredictedTargetCount();
+    method @NonNull public String getUiSurface();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.prediction.AppPredictionContext> CREATOR;
+  }
+
+  public static final class AppPredictionContext.Builder {
+    ctor public AppPredictionContext.Builder(@NonNull android.content.Context);
+    method @NonNull public android.app.prediction.AppPredictionContext build();
+    method @NonNull public android.app.prediction.AppPredictionContext.Builder setExtras(@Nullable android.os.Bundle);
+    method @NonNull public android.app.prediction.AppPredictionContext.Builder setPredictedTargetCount(@IntRange(from=0) int);
+    method @NonNull public android.app.prediction.AppPredictionContext.Builder setUiSurface(@NonNull String);
+  }
+
+  public final class AppPredictionManager {
+    method @NonNull public android.app.prediction.AppPredictor createAppPredictionSession(@NonNull android.app.prediction.AppPredictionContext);
+  }
+
+  public final class AppPredictionSessionId implements android.os.Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.prediction.AppPredictionSessionId> CREATOR;
+  }
+
+  public final class AppPredictor {
+    method public void destroy();
+    method public void notifyAppTargetEvent(@NonNull android.app.prediction.AppTargetEvent);
+    method public void notifyLaunchLocationShown(@NonNull String, @NonNull java.util.List<android.app.prediction.AppTargetId>);
+    method public void registerPredictionUpdates(@NonNull java.util.concurrent.Executor, @NonNull android.app.prediction.AppPredictor.Callback);
+    method public void requestPredictionUpdate();
+    method @Nullable public void sortTargets(@NonNull java.util.List<android.app.prediction.AppTarget>, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.util.List<android.app.prediction.AppTarget>>);
+    method public void unregisterPredictionUpdates(@NonNull android.app.prediction.AppPredictor.Callback);
+  }
+
+  public static interface AppPredictor.Callback {
+    method public void onTargetsAvailable(@NonNull java.util.List<android.app.prediction.AppTarget>);
+  }
+
+  public final class AppTarget implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public String getClassName();
+    method @NonNull public android.app.prediction.AppTargetId getId();
+    method @NonNull public String getPackageName();
+    method @IntRange(from=0) public int getRank();
+    method @Nullable public android.content.pm.ShortcutInfo getShortcutInfo();
+    method @NonNull public android.os.UserHandle getUser();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.prediction.AppTarget> CREATOR;
+  }
+
+  public static final class AppTarget.Builder {
+    ctor public AppTarget.Builder(@NonNull android.app.prediction.AppTargetId, @NonNull String, @NonNull android.os.UserHandle);
+    ctor public AppTarget.Builder(@NonNull android.app.prediction.AppTargetId, @NonNull android.content.pm.ShortcutInfo);
+    method @NonNull public android.app.prediction.AppTarget build();
+    method @NonNull public android.app.prediction.AppTarget.Builder setClassName(@NonNull String);
+    method @NonNull public android.app.prediction.AppTarget.Builder setRank(@IntRange(from=0) int);
+  }
+
+  public final class AppTargetEvent implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getAction();
+    method @Nullable public String getLaunchLocation();
+    method @Nullable public android.app.prediction.AppTarget getTarget();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int ACTION_DISMISS = 2; // 0x2
+    field public static final int ACTION_LAUNCH = 1; // 0x1
+    field public static final int ACTION_PIN = 3; // 0x3
+    field public static final int ACTION_UNPIN = 4; // 0x4
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.prediction.AppTargetEvent> CREATOR;
+  }
+
+  public static final class AppTargetEvent.Builder {
+    ctor public AppTargetEvent.Builder(@Nullable android.app.prediction.AppTarget, int);
+    method @NonNull public android.app.prediction.AppTargetEvent build();
+    method @NonNull public android.app.prediction.AppTargetEvent.Builder setLaunchLocation(@Nullable String);
+  }
+
+  public final class AppTargetId implements android.os.Parcelable {
+    ctor public AppTargetId(@NonNull String);
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.prediction.AppTargetId> CREATOR;
+  }
+
+}
+
+package android.app.role {
+
+  public interface OnRoleHoldersChangedListener {
+    method public void onRoleHoldersChanged(@NonNull String, @NonNull android.os.UserHandle);
+  }
+
+  public abstract class RoleControllerService extends android.app.Service {
+    ctor public RoleControllerService();
+    method @WorkerThread public abstract boolean onAddRoleHolder(@NonNull String, @NonNull String, int);
+    method @Nullable public final android.os.IBinder onBind(@Nullable android.content.Intent);
+    method @WorkerThread public abstract boolean onClearRoleHolders(@NonNull String, int);
+    method @WorkerThread public abstract boolean onGrantDefaultRoles();
+    method @Deprecated public abstract boolean onIsApplicationQualifiedForRole(@NonNull String, @NonNull String);
+    method public boolean onIsApplicationVisibleForRole(@NonNull String, @NonNull String);
+    method public abstract boolean onIsRoleVisible(@NonNull String);
+    method @WorkerThread public abstract boolean onRemoveRoleHolder(@NonNull String, @NonNull String, int);
+    field public static final String SERVICE_INTERFACE = "android.app.role.RoleControllerService";
+  }
+
+  public final class RoleManager {
+    method @RequiresPermission(android.Manifest.permission.OBSERVE_ROLE_HOLDERS) public void addOnRoleHoldersChangedListenerAsUser(@NonNull java.util.concurrent.Executor, @NonNull android.app.role.OnRoleHoldersChangedListener, @NonNull android.os.UserHandle);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void addRoleHolderAsUser(@NonNull String, @NonNull String, int, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
+    method @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public boolean addRoleHolderFromController(@NonNull String, @NonNull String);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void clearRoleHoldersAsUser(@NonNull String, int, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
+    method @NonNull @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public java.util.List<java.lang.String> getHeldRolesFromController(@NonNull String);
+    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public java.util.List<java.lang.String> getRoleHolders(@NonNull String);
+    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public java.util.List<java.lang.String> getRoleHoldersAsUser(@NonNull String, @NonNull android.os.UserHandle);
+    method @RequiresPermission(android.Manifest.permission.OBSERVE_ROLE_HOLDERS) public void removeOnRoleHoldersChangedListenerAsUser(@NonNull android.app.role.OnRoleHoldersChangedListener, @NonNull android.os.UserHandle);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void removeRoleHolderAsUser(@NonNull String, @NonNull String, int, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
+    method @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public boolean removeRoleHolderFromController(@NonNull String, @NonNull String);
+    method @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public void setRoleNamesFromController(@NonNull java.util.List<java.lang.String>);
+    field public static final int MANAGE_HOLDERS_FLAG_DONT_KILL_APP = 1; // 0x1
+  }
+
+}
+
+package android.app.usage {
+
+  public final class CacheQuotaHint implements android.os.Parcelable {
+    ctor public CacheQuotaHint(android.app.usage.CacheQuotaHint.Builder);
+    method public int describeContents();
+    method public long getQuota();
+    method public int getUid();
+    method public android.app.usage.UsageStats getUsageStats();
+    method public String getVolumeUuid();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.usage.CacheQuotaHint> CREATOR;
+    field public static final long QUOTA_NOT_SET = -1L; // 0xffffffffffffffffL
+  }
+
+  public static final class CacheQuotaHint.Builder {
+    ctor public CacheQuotaHint.Builder();
+    ctor public CacheQuotaHint.Builder(android.app.usage.CacheQuotaHint);
+    method @NonNull public android.app.usage.CacheQuotaHint build();
+    method @NonNull public android.app.usage.CacheQuotaHint.Builder setQuota(long);
+    method @NonNull public android.app.usage.CacheQuotaHint.Builder setUid(int);
+    method @NonNull public android.app.usage.CacheQuotaHint.Builder setUsageStats(@Nullable android.app.usage.UsageStats);
+    method @NonNull public android.app.usage.CacheQuotaHint.Builder setVolumeUuid(@Nullable String);
+  }
+
+  public abstract class CacheQuotaService extends android.app.Service {
+    ctor public CacheQuotaService();
+    method public android.os.IBinder onBind(android.content.Intent);
+    method public abstract java.util.List<android.app.usage.CacheQuotaHint> onComputeCacheQuotaHints(java.util.List<android.app.usage.CacheQuotaHint>);
+    field public static final String SERVICE_INTERFACE = "android.app.usage.CacheQuotaService";
+  }
+
+  public class NetworkStatsManager {
+    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STATS_PROVIDER, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void registerNetworkStatsProvider(@NonNull String, @NonNull android.net.netstats.provider.NetworkStatsProvider);
+    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STATS_PROVIDER, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void unregisterNetworkStatsProvider(@NonNull android.net.netstats.provider.NetworkStatsProvider);
+  }
+
+  public static final class UsageEvents.Event {
+    method public int getInstanceId();
+    method @Nullable public String getNotificationChannelId();
+    method @Nullable public String getTaskRootClassName();
+    method @Nullable public String getTaskRootPackageName();
+    method public boolean isInstantApp();
+    field public static final int NOTIFICATION_INTERRUPTION = 12; // 0xc
+    field public static final int NOTIFICATION_SEEN = 10; // 0xa
+    field public static final int SLICE_PINNED = 14; // 0xe
+    field public static final int SLICE_PINNED_PRIV = 13; // 0xd
+    field public static final int SYSTEM_INTERACTION = 6; // 0x6
+  }
+
+  public final class UsageStats implements android.os.Parcelable {
+    method public int getAppLaunchCount();
+  }
+
+  public final class UsageStatsManager {
+    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int getAppStandbyBucket(String);
+    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public java.util.Map<java.lang.String,java.lang.Integer> getAppStandbyBuckets();
+    method public int getUsageSource();
+    method @RequiresPermission(android.Manifest.permission.BIND_CARRIER_SERVICES) public void onCarrierPrivilegedAppsChanged();
+    method @RequiresPermission(allOf={android.Manifest.permission.SUSPEND_APPS, android.Manifest.permission.OBSERVE_APP_USAGE}) public void registerAppUsageLimitObserver(int, @NonNull String[], @NonNull java.time.Duration, @NonNull java.time.Duration, @Nullable android.app.PendingIntent);
+    method @RequiresPermission(android.Manifest.permission.OBSERVE_APP_USAGE) public void registerAppUsageObserver(int, @NonNull String[], long, @NonNull java.util.concurrent.TimeUnit, @NonNull android.app.PendingIntent);
+    method @RequiresPermission(android.Manifest.permission.OBSERVE_APP_USAGE) public void registerUsageSessionObserver(int, @NonNull String[], @NonNull java.time.Duration, @NonNull java.time.Duration, @NonNull android.app.PendingIntent, @Nullable android.app.PendingIntent);
+    method public void reportUsageStart(@NonNull android.app.Activity, @NonNull String);
+    method public void reportUsageStart(@NonNull android.app.Activity, @NonNull String, long);
+    method public void reportUsageStop(@NonNull android.app.Activity, @NonNull String);
+    method @RequiresPermission(android.Manifest.permission.CHANGE_APP_IDLE_STATE) public void setAppStandbyBucket(String, int);
+    method @RequiresPermission(android.Manifest.permission.CHANGE_APP_IDLE_STATE) public void setAppStandbyBuckets(java.util.Map<java.lang.String,java.lang.Integer>);
+    method @RequiresPermission(allOf={android.Manifest.permission.SUSPEND_APPS, android.Manifest.permission.OBSERVE_APP_USAGE}) public void unregisterAppUsageLimitObserver(int);
+    method @RequiresPermission(android.Manifest.permission.OBSERVE_APP_USAGE) public void unregisterAppUsageObserver(int);
+    method @RequiresPermission(android.Manifest.permission.OBSERVE_APP_USAGE) public void unregisterUsageSessionObserver(int);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST) public void whitelistAppTemporarily(String, long, android.os.UserHandle);
+    field public static final String EXTRA_OBSERVER_ID = "android.app.usage.extra.OBSERVER_ID";
+    field public static final String EXTRA_TIME_LIMIT = "android.app.usage.extra.TIME_LIMIT";
+    field public static final String EXTRA_TIME_USED = "android.app.usage.extra.TIME_USED";
+    field public static final int STANDBY_BUCKET_EXEMPTED = 5; // 0x5
+    field public static final int STANDBY_BUCKET_NEVER = 50; // 0x32
+    field public static final int USAGE_SOURCE_CURRENT_ACTIVITY = 2; // 0x2
+    field public static final int USAGE_SOURCE_TASK_ROOT_ACTIVITY = 1; // 0x1
+  }
+
+}
+
+package android.bluetooth {
+
+  public final class BluetoothA2dp implements android.bluetooth.BluetoothProfile {
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
+    field public static final int OPTIONAL_CODECS_NOT_SUPPORTED = 0; // 0x0
+    field public static final int OPTIONAL_CODECS_PREF_DISABLED = 0; // 0x0
+    field public static final int OPTIONAL_CODECS_PREF_ENABLED = 1; // 0x1
+    field public static final int OPTIONAL_CODECS_PREF_UNKNOWN = -1; // 0xffffffff
+    field public static final int OPTIONAL_CODECS_SUPPORTED = 1; // 0x1
+    field public static final int OPTIONAL_CODECS_SUPPORT_UNKNOWN = -1; // 0xffffffff
+  }
+
+  public final class BluetoothA2dpSink implements android.bluetooth.BluetoothProfile {
+    method public void finalize();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean isAudioPlaying(@NonNull android.bluetooth.BluetoothDevice);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
+    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.a2dp-sink.profile.action.CONNECTION_STATE_CHANGED";
+  }
+
+  public final class BluetoothAdapter {
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean addOnMetadataChangedListener(@NonNull android.bluetooth.BluetoothDevice, @NonNull java.util.concurrent.Executor, @NonNull android.bluetooth.BluetoothAdapter.OnMetadataChangedListener);
+    method public boolean disableBLE();
+    method public boolean enableBLE();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean enableNoAutoConnect();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public long getDiscoveryEndMillis();
+    method public boolean isBleScanAlwaysAvailable();
+    method public boolean isLeEnabled();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean removeActiveDevice(int);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean removeOnMetadataChangedListener(@NonNull android.bluetooth.BluetoothDevice, @NonNull android.bluetooth.BluetoothAdapter.OnMetadataChangedListener);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setActiveDevice(@NonNull android.bluetooth.BluetoothDevice, int);
+    field public static final String ACTION_BLE_STATE_CHANGED = "android.bluetooth.adapter.action.BLE_STATE_CHANGED";
+    field public static final String ACTION_REQUEST_BLE_SCAN_ALWAYS_AVAILABLE = "android.bluetooth.adapter.action.REQUEST_BLE_SCAN_ALWAYS_AVAILABLE";
+    field public static final int ACTIVE_DEVICE_ALL = 2; // 0x2
+    field public static final int ACTIVE_DEVICE_AUDIO = 0; // 0x0
+    field public static final int ACTIVE_DEVICE_PHONE_CALL = 1; // 0x1
+  }
+
+  public static interface BluetoothAdapter.OnMetadataChangedListener {
+    method public void onMetadataChanged(@NonNull android.bluetooth.BluetoothDevice, int, @Nullable byte[]);
+  }
+
+  public final class BluetoothDevice implements android.os.Parcelable {
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean cancelBondProcess();
+    method @Nullable @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public byte[] getMetadata(int);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getSimAccessPermission();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isConnected();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isEncrypted();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean isInSilenceMode();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean removeBond();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setMessageAccessPermission(int);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setMetadata(int, @NonNull byte[]);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setPhonebookAccessPermission(int);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setSilenceMode(boolean);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setSimAccessPermission(int);
+    field public static final int ACCESS_ALLOWED = 1; // 0x1
+    field public static final int ACCESS_REJECTED = 2; // 0x2
+    field public static final int ACCESS_UNKNOWN = 0; // 0x0
+    field public static final String ACTION_SILENCE_MODE_CHANGED = "android.bluetooth.device.action.SILENCE_MODE_CHANGED";
+    field public static final int METADATA_COMPANION_APP = 4; // 0x4
+    field public static final int METADATA_ENHANCED_SETTINGS_UI_URI = 16; // 0x10
+    field public static final int METADATA_HARDWARE_VERSION = 3; // 0x3
+    field public static final int METADATA_IS_UNTETHERED_HEADSET = 6; // 0x6
+    field public static final int METADATA_MAIN_ICON = 5; // 0x5
+    field public static final int METADATA_MANUFACTURER_NAME = 0; // 0x0
+    field public static final int METADATA_MAX_LENGTH = 2048; // 0x800
+    field public static final int METADATA_MODEL_NAME = 1; // 0x1
+    field public static final int METADATA_SOFTWARE_VERSION = 2; // 0x2
+    field public static final int METADATA_UNTETHERED_CASE_BATTERY = 12; // 0xc
+    field public static final int METADATA_UNTETHERED_CASE_CHARGING = 15; // 0xf
+    field public static final int METADATA_UNTETHERED_CASE_ICON = 9; // 0x9
+    field public static final int METADATA_UNTETHERED_LEFT_BATTERY = 10; // 0xa
+    field public static final int METADATA_UNTETHERED_LEFT_CHARGING = 13; // 0xd
+    field public static final int METADATA_UNTETHERED_LEFT_ICON = 7; // 0x7
+    field public static final int METADATA_UNTETHERED_RIGHT_BATTERY = 11; // 0xb
+    field public static final int METADATA_UNTETHERED_RIGHT_CHARGING = 14; // 0xe
+    field public static final int METADATA_UNTETHERED_RIGHT_ICON = 8; // 0x8
+  }
+
+  public final class BluetoothHeadset implements android.bluetooth.BluetoothProfile {
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean connect(android.bluetooth.BluetoothDevice);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean disconnect(android.bluetooth.BluetoothDevice);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean setPriority(android.bluetooth.BluetoothDevice, int);
+  }
+
+  public final class BluetoothHearingAid implements android.bluetooth.BluetoothProfile {
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public long getHiSyncId(@NonNull android.bluetooth.BluetoothDevice);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
+  }
+
+  public final class BluetoothHidDevice implements android.bluetooth.BluetoothProfile {
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
+  }
+
+  public final class BluetoothHidHost implements android.bluetooth.BluetoothProfile {
+    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionState(@NonNull android.bluetooth.BluetoothDevice);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
+    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.input.profile.action.CONNECTION_STATE_CHANGED";
+  }
+
+  public final class BluetoothMap implements java.lang.AutoCloseable android.bluetooth.BluetoothProfile {
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public void close();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) protected void finalize();
+    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
+    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.map.profile.action.CONNECTION_STATE_CHANGED";
+  }
+
+  public final class BluetoothPan implements android.bluetooth.BluetoothProfile {
+    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionState(@NonNull android.bluetooth.BluetoothDevice);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean isTetheringOn();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public void setBluetoothTethering(boolean);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
+    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.pan.profile.action.CONNECTION_STATE_CHANGED";
+    field public static final String ACTION_TETHERING_STATE_CHANGED = "android.bluetooth.action.TETHERING_STATE_CHANGED";
+    field public static final String EXTRA_LOCAL_ROLE = "android.bluetooth.pan.extra.LOCAL_ROLE";
+    field public static final String EXTRA_TETHERING_STATE = "android.bluetooth.extra.TETHERING_STATE";
+    field public static final int LOCAL_NAP_ROLE = 1; // 0x1
+    field public static final int LOCAL_PANU_ROLE = 2; // 0x2
+    field public static final int PAN_ROLE_NONE = 0; // 0x0
+    field public static final int REMOTE_NAP_ROLE = 1; // 0x1
+    field public static final int REMOTE_PANU_ROLE = 2; // 0x2
+    field public static final int TETHERING_STATE_OFF = 1; // 0x1
+    field public static final int TETHERING_STATE_ON = 2; // 0x2
+  }
+
+  public class BluetoothPbap implements android.bluetooth.BluetoothProfile {
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionState(@NonNull android.bluetooth.BluetoothDevice);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
+    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.pbap.profile.action.CONNECTION_STATE_CHANGED";
+  }
+
+  public interface BluetoothProfile {
+    field public static final int A2DP_SINK = 11; // 0xb
+    field public static final int AVRCP_CONTROLLER = 12; // 0xc
+    field public static final int CONNECTION_POLICY_ALLOWED = 100; // 0x64
+    field public static final int CONNECTION_POLICY_FORBIDDEN = 0; // 0x0
+    field public static final int CONNECTION_POLICY_UNKNOWN = -1; // 0xffffffff
+    field public static final int HEADSET_CLIENT = 16; // 0x10
+    field public static final int PAN = 5; // 0x5
+    field public static final int PBAP_CLIENT = 17; // 0x11
+    field @Deprecated public static final int PRIORITY_OFF = 0; // 0x0
+    field @Deprecated public static final int PRIORITY_ON = 100; // 0x64
+  }
+
+  public final class BluetoothUuid {
+    method public static boolean containsAnyUuid(@Nullable android.os.ParcelUuid[], @Nullable android.os.ParcelUuid[]);
+    method @NonNull public static android.os.ParcelUuid parseUuidFrom(@Nullable byte[]);
+    field @NonNull public static final android.os.ParcelUuid A2DP_SINK;
+    field @NonNull public static final android.os.ParcelUuid A2DP_SOURCE;
+    field @NonNull public static final android.os.ParcelUuid ADV_AUDIO_DIST;
+    field @NonNull public static final android.os.ParcelUuid AVRCP_CONTROLLER;
+    field @NonNull public static final android.os.ParcelUuid AVRCP_TARGET;
+    field @NonNull public static final android.os.ParcelUuid BASE_UUID;
+    field @NonNull public static final android.os.ParcelUuid BNEP;
+    field @NonNull public static final android.os.ParcelUuid HEARING_AID;
+    field @NonNull public static final android.os.ParcelUuid HFP;
+    field @NonNull public static final android.os.ParcelUuid HFP_AG;
+    field @NonNull public static final android.os.ParcelUuid HID;
+    field @NonNull public static final android.os.ParcelUuid HOGP;
+    field @NonNull public static final android.os.ParcelUuid HSP;
+    field @NonNull public static final android.os.ParcelUuid HSP_AG;
+    field @NonNull public static final android.os.ParcelUuid MAP;
+    field @NonNull public static final android.os.ParcelUuid MAS;
+    field @NonNull public static final android.os.ParcelUuid MNS;
+    field @NonNull public static final android.os.ParcelUuid NAP;
+    field @NonNull public static final android.os.ParcelUuid OBEX_OBJECT_PUSH;
+    field @NonNull public static final android.os.ParcelUuid PANU;
+    field @NonNull public static final android.os.ParcelUuid PBAP_PCE;
+    field @NonNull public static final android.os.ParcelUuid PBAP_PSE;
+    field @NonNull public static final android.os.ParcelUuid SAP;
+    field public static final int UUID_BYTES_128_BIT = 16; // 0x10
+    field public static final int UUID_BYTES_16_BIT = 2; // 0x2
+    field public static final int UUID_BYTES_32_BIT = 4; // 0x4
+  }
+
+}
+
+package android.bluetooth.le {
+
+  public final class BluetoothLeScanner {
+    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_ADMIN, android.Manifest.permission.UPDATE_DEVICE_STATS}) public void startScanFromSource(android.os.WorkSource, android.bluetooth.le.ScanCallback);
+    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_ADMIN, android.Manifest.permission.UPDATE_DEVICE_STATS}) public void startScanFromSource(java.util.List<android.bluetooth.le.ScanFilter>, android.bluetooth.le.ScanSettings, android.os.WorkSource, android.bluetooth.le.ScanCallback);
+    method public void startTruncatedScan(java.util.List<android.bluetooth.le.TruncatedFilter>, android.bluetooth.le.ScanSettings, android.bluetooth.le.ScanCallback);
+  }
+
+  public final class ResultStorageDescriptor implements android.os.Parcelable {
+    ctor public ResultStorageDescriptor(int, int, int);
+    method public int describeContents();
+    method public int getLength();
+    method public int getOffset();
+    method public int getType();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.ResultStorageDescriptor> CREATOR;
+  }
+
+  public final class ScanSettings implements android.os.Parcelable {
+    field public static final int SCAN_RESULT_TYPE_ABBREVIATED = 1; // 0x1
+    field public static final int SCAN_RESULT_TYPE_FULL = 0; // 0x0
+  }
+
+  public static final class ScanSettings.Builder {
+    method public android.bluetooth.le.ScanSettings.Builder setScanResultType(int);
+  }
+
+  public final class TruncatedFilter {
+    ctor public TruncatedFilter(android.bluetooth.le.ScanFilter, java.util.List<android.bluetooth.le.ResultStorageDescriptor>);
+    method public android.bluetooth.le.ScanFilter getFilter();
+    method public java.util.List<android.bluetooth.le.ResultStorageDescriptor> getStorageDescriptors();
+  }
+
+}
+
+package android.companion {
+
+  public final class CompanionDeviceManager {
+    method @RequiresPermission("android.permission.MANAGE_COMPANION_DEVICES") public boolean isDeviceAssociatedForWifiConnection(@NonNull String, @NonNull android.net.MacAddress, @NonNull android.os.UserHandle);
+  }
+
+}
+
+package android.content {
+
+  public class ApexEnvironment {
+    method @NonNull public static android.content.ApexEnvironment getApexEnvironment(@NonNull String);
+    method @NonNull public java.io.File getCredentialProtectedDataDirForUser(@NonNull android.os.UserHandle);
+    method @NonNull public java.io.File getDeviceProtectedDataDir();
+    method @NonNull public java.io.File getDeviceProtectedDataDirForUser(@NonNull android.os.UserHandle);
+  }
+
+  public abstract class BroadcastReceiver {
+    method @NonNull public final android.os.UserHandle getSendingUser();
+  }
+
+  public abstract class ContentProvider implements android.content.ComponentCallbacks2 {
+    method public int checkUriPermission(@NonNull android.net.Uri, int, int);
+  }
+
+  public class ContentProviderClient implements java.lang.AutoCloseable {
+    method @RequiresPermission(android.Manifest.permission.REMOVE_TASKS) public void setDetectNotResponding(long);
+  }
+
+  public abstract class ContentResolver {
+    method public int checkUriPermission(@NonNull android.net.Uri, int, int);
+    method @NonNull public static android.net.Uri decodeFromFile(@NonNull java.io.File);
+    method @NonNull public static java.io.File encodeToFile(@NonNull android.net.Uri);
+    method @Nullable @RequiresPermission("android.permission.CACHE_CONTENT") public android.os.Bundle getCache(@NonNull android.net.Uri);
+    method @RequiresPermission("android.permission.CACHE_CONTENT") public void putCache(@NonNull android.net.Uri, @Nullable android.os.Bundle);
+  }
+
+  public abstract class Context {
+    method @NonNull public android.content.Context createContextAsUser(@NonNull android.os.UserHandle, int);
+    method public abstract android.content.Context createCredentialProtectedStorageContext();
+    method @NonNull public android.content.Context createPackageContextAsUser(@NonNull String, int, @NonNull android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @Nullable public abstract java.io.File getPreloadsFileCache();
+    method public abstract boolean isCredentialProtectedStorage();
+    method @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public android.content.Intent registerReceiverForAllUsers(@Nullable android.content.BroadcastReceiver, @NonNull android.content.IntentFilter, @Nullable String, @Nullable android.os.Handler);
+    method public abstract void sendBroadcast(android.content.Intent, @Nullable String, @Nullable android.os.Bundle);
+    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public abstract void sendBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle, @Nullable String, @Nullable android.os.Bundle);
+    method public abstract void sendOrderedBroadcast(@NonNull android.content.Intent, @Nullable String, @Nullable android.os.Bundle, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
+    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public void startActivityAsUser(@NonNull @RequiresPermission android.content.Intent, @NonNull android.os.UserHandle);
+    field public static final String APP_INTEGRITY_SERVICE = "app_integrity";
+    field public static final String APP_PREDICTION_SERVICE = "app_prediction";
+    field public static final String BACKUP_SERVICE = "backup";
+    field public static final String BATTERY_STATS_SERVICE = "batterystats";
+    field public static final String BUGREPORT_SERVICE = "bugreport";
+    field public static final String CONTENT_SUGGESTIONS_SERVICE = "content_suggestions";
+    field public static final String CONTEXTHUB_SERVICE = "contexthub";
+    field public static final String ETHERNET_SERVICE = "ethernet";
+    field public static final String EUICC_CARD_SERVICE = "euicc_card";
+    field public static final String HDMI_CONTROL_SERVICE = "hdmi_control";
+    field public static final String NETD_SERVICE = "netd";
+    field public static final String NETWORK_SCORE_SERVICE = "network_score";
+    field public static final String OEM_LOCK_SERVICE = "oem_lock";
+    field public static final String PERMISSION_SERVICE = "permission";
+    field public static final String PERSISTENT_DATA_BLOCK_SERVICE = "persistent_data_block";
+    field public static final String ROLLBACK_SERVICE = "rollback";
+    field public static final String SECURE_ELEMENT_SERVICE = "secure_element";
+    field public static final String STATS_MANAGER = "stats";
+    field public static final String STATUS_BAR_SERVICE = "statusbar";
+    field public static final String SYSTEM_CONFIG_SERVICE = "system_config";
+    field public static final String SYSTEM_UPDATE_SERVICE = "system_update";
+    field public static final String TETHERING_SERVICE = "tethering";
+    field public static final String VR_SERVICE = "vrmanager";
+    field public static final String WIFI_NL80211_SERVICE = "wifinl80211";
+    field @Deprecated public static final String WIFI_RTT_SERVICE = "rttmanager";
+    field public static final String WIFI_SCANNING_SERVICE = "wifiscanner";
+  }
+
+  public class ContextWrapper extends android.content.Context {
+    method public android.content.Context createCredentialProtectedStorageContext();
+    method public java.io.File getPreloadsFileCache();
+    method public boolean isCredentialProtectedStorage();
+    method public void sendBroadcast(android.content.Intent, String, android.os.Bundle);
+    method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, String, android.os.Bundle);
+    method public void sendOrderedBroadcast(android.content.Intent, String, android.os.Bundle, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
+  }
+
+  public class Intent implements java.lang.Cloneable android.os.Parcelable {
+    field public static final String ACTION_BATTERY_LEVEL_CHANGED = "android.intent.action.BATTERY_LEVEL_CHANGED";
+    field public static final String ACTION_CALL_EMERGENCY = "android.intent.action.CALL_EMERGENCY";
+    field public static final String ACTION_CALL_PRIVILEGED = "android.intent.action.CALL_PRIVILEGED";
+    field public static final String ACTION_DEVICE_CUSTOMIZATION_READY = "android.intent.action.DEVICE_CUSTOMIZATION_READY";
+    field public static final String ACTION_DIAL_EMERGENCY = "android.intent.action.DIAL_EMERGENCY";
+    field public static final String ACTION_FACTORY_RESET = "android.intent.action.FACTORY_RESET";
+    field public static final String ACTION_GLOBAL_BUTTON = "android.intent.action.GLOBAL_BUTTON";
+    field public static final String ACTION_INCIDENT_REPORT_READY = "android.intent.action.INCIDENT_REPORT_READY";
+    field public static final String ACTION_INSTALL_INSTANT_APP_PACKAGE = "android.intent.action.INSTALL_INSTANT_APP_PACKAGE";
+    field public static final String ACTION_INSTANT_APP_RESOLVER_SETTINGS = "android.intent.action.INSTANT_APP_RESOLVER_SETTINGS";
+    field public static final String ACTION_INTENT_FILTER_NEEDS_VERIFICATION = "android.intent.action.INTENT_FILTER_NEEDS_VERIFICATION";
+    field public static final String ACTION_LOAD_DATA = "android.intent.action.LOAD_DATA";
+    field @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS) public static final String ACTION_MANAGE_APP_PERMISSION = "android.intent.action.MANAGE_APP_PERMISSION";
+    field public static final String ACTION_MANAGE_APP_PERMISSIONS = "android.intent.action.MANAGE_APP_PERMISSIONS";
+    field @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public static final String ACTION_MANAGE_DEFAULT_APP = "android.intent.action.MANAGE_DEFAULT_APP";
+    field public static final String ACTION_MANAGE_PERMISSIONS = "android.intent.action.MANAGE_PERMISSIONS";
+    field public static final String ACTION_MANAGE_PERMISSION_APPS = "android.intent.action.MANAGE_PERMISSION_APPS";
+    field @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public static final String ACTION_MANAGE_SPECIAL_APP_ACCESSES = "android.intent.action.MANAGE_SPECIAL_APP_ACCESSES";
+    field public static final String ACTION_MASTER_CLEAR_NOTIFICATION = "android.intent.action.MASTER_CLEAR_NOTIFICATION";
+    field public static final String ACTION_PACKAGE_NEEDS_INTEGRITY_VERIFICATION = "android.intent.action.PACKAGE_NEEDS_INTEGRITY_VERIFICATION";
+    field public static final String ACTION_PACKAGE_UNSUSPENDED_MANUALLY = "android.intent.action.PACKAGE_UNSUSPENDED_MANUALLY";
+    field public static final String ACTION_PENDING_INCIDENT_REPORTS_CHANGED = "android.intent.action.PENDING_INCIDENT_REPORTS_CHANGED";
+    field public static final String ACTION_PRE_BOOT_COMPLETED = "android.intent.action.PRE_BOOT_COMPLETED";
+    field public static final String ACTION_QUERY_PACKAGE_RESTART = "android.intent.action.QUERY_PACKAGE_RESTART";
+    field public static final String ACTION_RESOLVE_INSTANT_APP_PACKAGE = "android.intent.action.RESOLVE_INSTANT_APP_PACKAGE";
+    field @RequiresPermission(android.Manifest.permission.REVIEW_ACCESSIBILITY_SERVICES) public static final String ACTION_REVIEW_ACCESSIBILITY_SERVICES = "android.intent.action.REVIEW_ACCESSIBILITY_SERVICES";
+    field @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS) public static final String ACTION_REVIEW_ONGOING_PERMISSION_USAGE = "android.intent.action.REVIEW_ONGOING_PERMISSION_USAGE";
+    field public static final String ACTION_REVIEW_PERMISSIONS = "android.intent.action.REVIEW_PERMISSIONS";
+    field @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS) public static final String ACTION_REVIEW_PERMISSION_USAGE = "android.intent.action.REVIEW_PERMISSION_USAGE";
+    field public static final String ACTION_ROLLBACK_COMMITTED = "android.intent.action.ROLLBACK_COMMITTED";
+    field public static final String ACTION_SHOW_SUSPENDED_APP_DETAILS = "android.intent.action.SHOW_SUSPENDED_APP_DETAILS";
+    field @Deprecated public static final String ACTION_SIM_STATE_CHANGED = "android.intent.action.SIM_STATE_CHANGED";
+    field public static final String ACTION_SPLIT_CONFIGURATION_CHANGED = "android.intent.action.SPLIT_CONFIGURATION_CHANGED";
+    field public static final String ACTION_UPGRADE_SETUP = "android.intent.action.UPGRADE_SETUP";
+    field public static final String ACTION_USER_ADDED = "android.intent.action.USER_ADDED";
+    field public static final String ACTION_USER_REMOVED = "android.intent.action.USER_REMOVED";
+    field public static final String ACTION_VOICE_ASSIST = "android.intent.action.VOICE_ASSIST";
+    field public static final String CATEGORY_LEANBACK_SETTINGS = "android.intent.category.LEANBACK_SETTINGS";
+    field public static final String EXTRA_CALLING_PACKAGE = "android.intent.extra.CALLING_PACKAGE";
+    field public static final String EXTRA_FORCE_FACTORY_RESET = "android.intent.extra.FORCE_FACTORY_RESET";
+    field public static final String EXTRA_INSTANT_APP_ACTION = "android.intent.extra.INSTANT_APP_ACTION";
+    field public static final String EXTRA_INSTANT_APP_BUNDLES = "android.intent.extra.INSTANT_APP_BUNDLES";
+    field public static final String EXTRA_INSTANT_APP_EXTRAS = "android.intent.extra.INSTANT_APP_EXTRAS";
+    field public static final String EXTRA_INSTANT_APP_FAILURE = "android.intent.extra.INSTANT_APP_FAILURE";
+    field public static final String EXTRA_INSTANT_APP_HOSTNAME = "android.intent.extra.INSTANT_APP_HOSTNAME";
+    field public static final String EXTRA_INSTANT_APP_SUCCESS = "android.intent.extra.INSTANT_APP_SUCCESS";
+    field public static final String EXTRA_INSTANT_APP_TOKEN = "android.intent.extra.INSTANT_APP_TOKEN";
+    field public static final String EXTRA_LONG_VERSION_CODE = "android.intent.extra.LONG_VERSION_CODE";
+    field public static final String EXTRA_ORIGINATING_UID = "android.intent.extra.ORIGINATING_UID";
+    field public static final String EXTRA_PACKAGES = "android.intent.extra.PACKAGES";
+    field public static final String EXTRA_PERMISSION_GROUP_NAME = "android.intent.extra.PERMISSION_GROUP_NAME";
+    field public static final String EXTRA_PERMISSION_NAME = "android.intent.extra.PERMISSION_NAME";
+    field public static final String EXTRA_REASON = "android.intent.extra.REASON";
+    field public static final String EXTRA_REMOTE_CALLBACK = "android.intent.extra.REMOTE_CALLBACK";
+    field public static final String EXTRA_RESULT_NEEDED = "android.intent.extra.RESULT_NEEDED";
+    field public static final String EXTRA_ROLE_NAME = "android.intent.extra.ROLE_NAME";
+    field public static final String EXTRA_UNKNOWN_INSTANT_APP = "android.intent.extra.UNKNOWN_INSTANT_APP";
+    field public static final String EXTRA_VERIFICATION_BUNDLE = "android.intent.extra.VERIFICATION_BUNDLE";
+    field public static final int FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT = 67108864; // 0x4000000
+    field public static final String METADATA_SETUP_VERSION = "android.SETUP_VERSION";
+  }
+
+  public class IntentFilter implements android.os.Parcelable {
+    method public final int getOrder();
+    method public final void setOrder(int);
+  }
+
+}
+
+package android.content.integrity {
+
+  public class AppIntegrityManager {
+    method @NonNull public String getCurrentRuleSetProvider();
+    method @NonNull public String getCurrentRuleSetVersion();
+    method public void updateRuleSet(@NonNull android.content.integrity.RuleSet, @NonNull android.content.IntentSender);
+    field public static final String EXTRA_STATUS = "android.content.integrity.extra.STATUS";
+    field public static final int STATUS_FAILURE = 1; // 0x1
+    field public static final int STATUS_SUCCESS = 0; // 0x0
+  }
+
+  public abstract class IntegrityFormula {
+    method @NonNull public static android.content.integrity.IntegrityFormula all(@NonNull android.content.integrity.IntegrityFormula...);
+    method @NonNull public static android.content.integrity.IntegrityFormula any(@NonNull android.content.integrity.IntegrityFormula...);
+    method @NonNull public static android.content.integrity.IntegrityFormula not(@NonNull android.content.integrity.IntegrityFormula);
+  }
+
+  public static final class IntegrityFormula.Application {
+    method @NonNull public static android.content.integrity.IntegrityFormula certificatesContain(@NonNull String);
+    method @NonNull public static android.content.integrity.IntegrityFormula isPreInstalled();
+    method @NonNull public static android.content.integrity.IntegrityFormula packageNameEquals(@NonNull String);
+    method @NonNull public static android.content.integrity.IntegrityFormula versionCodeEquals(@NonNull long);
+    method @NonNull public static android.content.integrity.IntegrityFormula versionCodeGreaterThan(@NonNull long);
+    method @NonNull public static android.content.integrity.IntegrityFormula versionCodeGreaterThanOrEqualTo(@NonNull long);
+  }
+
+  public static final class IntegrityFormula.Installer {
+    method @NonNull public static android.content.integrity.IntegrityFormula certificatesContain(@NonNull String);
+    method @NonNull public static android.content.integrity.IntegrityFormula notAllowedByManifest();
+    method @NonNull public static android.content.integrity.IntegrityFormula packageNameEquals(@NonNull String);
+  }
+
+  public static final class IntegrityFormula.SourceStamp {
+    method @NonNull public static android.content.integrity.IntegrityFormula notTrusted();
+    method @NonNull public static android.content.integrity.IntegrityFormula stampCertificateHashEquals(@NonNull String);
+  }
+
+  public final class Rule implements android.os.Parcelable {
+    ctor public Rule(@NonNull android.content.integrity.IntegrityFormula, int);
+    method public int describeContents();
+    method public int getEffect();
+    method @NonNull public android.content.integrity.IntegrityFormula getFormula();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.integrity.Rule> CREATOR;
+    field public static final int DENY = 0; // 0x0
+    field public static final int FORCE_ALLOW = 1; // 0x1
+  }
+
+  public class RuleSet {
+    method @NonNull public java.util.List<android.content.integrity.Rule> getRules();
+    method @NonNull public String getVersion();
+  }
+
+  public static class RuleSet.Builder {
+    ctor public RuleSet.Builder();
+    method @NonNull public android.content.integrity.RuleSet.Builder addRules(@NonNull java.util.List<android.content.integrity.Rule>);
+    method @NonNull public android.content.integrity.RuleSet build();
+    method @NonNull public android.content.integrity.RuleSet.Builder setVersion(@NonNull String);
+  }
+
+}
+
+package android.content.om {
+
+  public final class OverlayInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public String getCategory();
+    method @NonNull public String getPackageName();
+    method @Nullable public String getTargetOverlayableName();
+    method @NonNull public String getTargetPackageName();
+    method public int getUserId();
+    method public boolean isEnabled();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.om.OverlayInfo> CREATOR;
+  }
+
+  public class OverlayManager {
+    method @Nullable public android.content.om.OverlayInfo getOverlayInfo(@NonNull String, @NonNull android.os.UserHandle);
+    method @NonNull @RequiresPermission(anyOf={"android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL"}) public java.util.List<android.content.om.OverlayInfo> getOverlayInfosForTarget(@NonNull String, @NonNull android.os.UserHandle);
+    method @RequiresPermission(anyOf={"android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL"}) public void setEnabled(@NonNull String, boolean, @NonNull android.os.UserHandle) throws java.lang.IllegalStateException, java.lang.SecurityException;
+    method @RequiresPermission(anyOf={"android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL"}) public void setEnabledExclusiveInCategory(@NonNull String, @NonNull android.os.UserHandle) throws java.lang.IllegalStateException, java.lang.SecurityException;
+  }
+
+}
+
+package android.content.pm {
+
+  public class ApplicationInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
+    method public boolean isEncryptionAware();
+    method public boolean isInstantApp();
+    field public String credentialProtectedDataDir;
+    field public int targetSandboxVersion;
+  }
+
+  public class CrossProfileApps {
+    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_PROFILES) public void startActivity(@NonNull android.content.ComponentName, @NonNull android.os.UserHandle);
+  }
+
+  public class DataLoaderParams {
+    method @NonNull public static final android.content.pm.DataLoaderParams forIncremental(@NonNull android.content.ComponentName, @NonNull String);
+    method @NonNull public static final android.content.pm.DataLoaderParams forStreaming(@NonNull android.content.ComponentName, @NonNull String);
+    method @NonNull public final String getArguments();
+    method @NonNull public final android.content.ComponentName getComponentName();
+    method @NonNull public final int getType();
+  }
+
+  public final class InstallationFile {
+    method public long getLengthBytes();
+    method public int getLocation();
+    method @Nullable public byte[] getMetadata();
+    method @NonNull public String getName();
+    method @Nullable public byte[] getSignature();
+  }
+
+  public final class InstantAppInfo implements android.os.Parcelable {
+    ctor public InstantAppInfo(android.content.pm.ApplicationInfo, String[], String[]);
+    ctor public InstantAppInfo(String, CharSequence, String[], String[]);
+    method public int describeContents();
+    method @Nullable public android.content.pm.ApplicationInfo getApplicationInfo();
+    method @Nullable public String[] getGrantedPermissions();
+    method @NonNull public String getPackageName();
+    method @Nullable public String[] getRequestedPermissions();
+    method @NonNull public android.graphics.drawable.Drawable loadIcon(@NonNull android.content.pm.PackageManager);
+    method @NonNull public CharSequence loadLabel(@NonNull android.content.pm.PackageManager);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstantAppInfo> CREATOR;
+  }
+
+  public final class InstantAppIntentFilter implements android.os.Parcelable {
+    ctor public InstantAppIntentFilter(@Nullable String, @NonNull java.util.List<android.content.IntentFilter>);
+    method public int describeContents();
+    method public java.util.List<android.content.IntentFilter> getFilters();
+    method public String getSplitName();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstantAppIntentFilter> CREATOR;
+  }
+
+  public final class InstantAppRequestInfo implements android.os.Parcelable {
+    ctor public InstantAppRequestInfo(@NonNull android.content.Intent, @Nullable int[], @NonNull android.os.UserHandle, boolean, @NonNull String);
+    method public int describeContents();
+    method @Nullable public int[] getHostDigestPrefix();
+    method @NonNull public android.content.Intent getIntent();
+    method @NonNull public String getToken();
+    method @NonNull public android.os.UserHandle getUserHandle();
+    method public boolean isRequesterInstantApp();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstantAppRequestInfo> CREATOR;
+  }
+
+  public final class InstantAppResolveInfo implements android.os.Parcelable {
+    ctor public InstantAppResolveInfo(@NonNull android.content.pm.InstantAppResolveInfo.InstantAppDigest, @Nullable String, @Nullable java.util.List<android.content.pm.InstantAppIntentFilter>, int);
+    ctor public InstantAppResolveInfo(@NonNull android.content.pm.InstantAppResolveInfo.InstantAppDigest, @Nullable String, @Nullable java.util.List<android.content.pm.InstantAppIntentFilter>, long, @Nullable android.os.Bundle);
+    ctor public InstantAppResolveInfo(@NonNull String, @Nullable String, @Nullable java.util.List<android.content.pm.InstantAppIntentFilter>);
+    ctor public InstantAppResolveInfo(@Nullable android.os.Bundle);
+    method public int describeContents();
+    method public byte[] getDigestBytes();
+    method public int getDigestPrefix();
+    method @Nullable public android.os.Bundle getExtras();
+    method public java.util.List<android.content.pm.InstantAppIntentFilter> getIntentFilters();
+    method public long getLongVersionCode();
+    method public String getPackageName();
+    method @Deprecated public int getVersionCode();
+    method public boolean shouldLetInstallerDecide();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstantAppResolveInfo> CREATOR;
+  }
+
+  public static final class InstantAppResolveInfo.InstantAppDigest implements android.os.Parcelable {
+    ctor public InstantAppResolveInfo.InstantAppDigest(@NonNull String);
+    method public int describeContents();
+    method public byte[][] getDigestBytes();
+    method public int[] getDigestPrefix();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstantAppResolveInfo.InstantAppDigest> CREATOR;
+    field public static final android.content.pm.InstantAppResolveInfo.InstantAppDigest UNDEFINED;
+  }
+
+  public final class IntentFilterVerificationInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public java.util.Set<java.lang.String> getDomains();
+    method public String getPackageName();
+    method public int getStatus();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.IntentFilterVerificationInfo> CREATOR;
+  }
+
+  public class LauncherApps {
+    method @Nullable public android.content.pm.LauncherApps.AppUsageLimit getAppUsageLimit(@NonNull String, @NonNull android.os.UserHandle);
+  }
+
+  public static final class LauncherApps.AppUsageLimit implements android.os.Parcelable {
+    method public int describeContents();
+    method public long getTotalUsageLimit();
+    method public long getUsageRemaining();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.LauncherApps.AppUsageLimit> CREATOR;
+  }
+
+  public class PackageInstaller {
+    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setPermissionsResult(int, boolean);
+    field public static final int DATA_LOADER_TYPE_INCREMENTAL = 2; // 0x2
+    field public static final int DATA_LOADER_TYPE_NONE = 0; // 0x0
+    field public static final int DATA_LOADER_TYPE_STREAMING = 1; // 0x1
+    field public static final String EXTRA_DATA_LOADER_TYPE = "android.content.pm.extra.DATA_LOADER_TYPE";
+    field public static final int LOCATION_DATA_APP = 0; // 0x0
+    field public static final int LOCATION_MEDIA_DATA = 2; // 0x2
+    field public static final int LOCATION_MEDIA_OBB = 1; // 0x1
+  }
+
+  public static class PackageInstaller.Session implements java.io.Closeable {
+    method @RequiresPermission("com.android.permission.USE_INSTALLER_V2") public void addFile(int, @NonNull String, long, @NonNull byte[], @Nullable byte[]);
+    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void commitTransferred(@NonNull android.content.IntentSender);
+    method @Nullable @RequiresPermission("com.android.permission.USE_INSTALLER_V2") public android.content.pm.DataLoaderParams getDataLoaderParams();
+    method @RequiresPermission("com.android.permission.USE_INSTALLER_V2") public void removeFile(int, @NonNull String);
+  }
+
+  public static class PackageInstaller.SessionInfo implements android.os.Parcelable {
+    method public boolean getAllocateAggressive();
+    method @Deprecated public boolean getAllowDowngrade();
+    method public int getAutoRevokePermissionsMode();
+    method public boolean getDontKillApp();
+    method public boolean getEnableRollback();
+    method @Nullable public String[] getGrantedRuntimePermissions();
+    method public boolean getInstallAsFullApp(boolean);
+    method public boolean getInstallAsInstantApp(boolean);
+    method public boolean getInstallAsVirtualPreload();
+    method public boolean getRequestDowngrade();
+    method public int getRollbackDataPolicy();
+    method @NonNull public java.util.Set<java.lang.String> getWhitelistedRestrictedPermissions();
+  }
+
+  public static class PackageInstaller.SessionParams implements android.os.Parcelable {
+    method @RequiresPermission(android.Manifest.permission.ALLOCATE_AGGRESSIVE) public void setAllocateAggressive(boolean);
+    method @Deprecated public void setAllowDowngrade(boolean);
+    method @RequiresPermission(allOf={android.Manifest.permission.INSTALL_PACKAGES, "com.android.permission.USE_INSTALLER_V2"}) public void setDataLoaderParams(@NonNull android.content.pm.DataLoaderParams);
+    method public void setDontKillApp(boolean);
+    method public void setEnableRollback(boolean);
+    method public void setEnableRollback(boolean, int);
+    method @RequiresPermission(android.Manifest.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS) public void setGrantedRuntimePermissions(String[]);
+    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setInstallAsApex();
+    method public void setInstallAsInstantApp(boolean);
+    method public void setInstallAsVirtualPreload();
+    method public void setRequestDowngrade(boolean);
+    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setStaged();
+  }
+
+  public class PackageItemInfo {
+    method public static void forceSafeLabels();
+    method @Deprecated @NonNull public CharSequence loadSafeLabel(@NonNull android.content.pm.PackageManager);
+    method @NonNull public CharSequence loadSafeLabel(@NonNull android.content.pm.PackageManager, @FloatRange(from=0) float, int);
+  }
+
+  public abstract class PackageManager {
+    method @RequiresPermission("android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS") public abstract void addOnPermissionsChangeListener(@NonNull android.content.pm.PackageManager.OnPermissionsChangedListener);
+    method public abstract boolean arePermissionsIndividuallyControlled();
+    method @NonNull public abstract java.util.List<android.content.IntentFilter> getAllIntentFilters(@NonNull String);
+    method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public android.content.pm.ApplicationInfo getApplicationInfoAsUser(@NonNull String, int, @NonNull android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @NonNull public android.content.pm.dex.ArtManager getArtManager();
+    method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_SHARED_LIBRARIES) public java.util.List<android.content.pm.SharedLibraryInfo> getDeclaredSharedLibraries(@NonNull String, int);
+    method @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public abstract String getDefaultBrowserPackageNameAsUser(int);
+    method @Nullable @RequiresPermission(android.Manifest.permission.SET_HARMFUL_APP_WARNINGS) public CharSequence getHarmfulAppWarning(@NonNull String);
+    method @Nullable public String getIncidentReportApproverPackageName();
+    method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackagesAsUser(int, int);
+    method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_INSTANT_APPS) public abstract android.graphics.drawable.Drawable getInstantAppIcon(String);
+    method @Nullable public abstract android.content.ComponentName getInstantAppInstallerComponent();
+    method @Nullable public abstract android.content.ComponentName getInstantAppResolverSettingsComponent();
+    method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_INSTANT_APPS) public abstract java.util.List<android.content.pm.InstantAppInfo> getInstantApps();
+    method @NonNull public abstract java.util.List<android.content.pm.IntentFilterVerificationInfo> getIntentFilterVerifications(@NonNull String);
+    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public abstract int getIntentVerificationStatusAsUser(@NonNull String, int);
+    method @android.content.pm.PackageManager.PermissionFlags @RequiresPermission(anyOf={android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS, android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS, android.Manifest.permission.GET_RUNTIME_PERMISSIONS}) public abstract int getPermissionFlags(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
+    method @NonNull @RequiresPermission(android.Manifest.permission.SUSPEND_APPS) public String[] getUnsuspendablePackages(@NonNull String[]);
+    method @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS) public abstract void grantRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
+    method @Deprecated public abstract int installExistingPackage(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @Deprecated public abstract int installExistingPackage(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public java.util.List<android.content.pm.ResolveInfo> queryBroadcastReceiversAsUser(@NonNull android.content.Intent, int, android.os.UserHandle);
+    method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public java.util.List<android.content.pm.ResolveInfo> queryIntentActivitiesAsUser(@NonNull android.content.Intent, int, @NonNull android.os.UserHandle);
+    method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public java.util.List<android.content.pm.ResolveInfo> queryIntentContentProvidersAsUser(@NonNull android.content.Intent, int, @NonNull android.os.UserHandle);
+    method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public java.util.List<android.content.pm.ResolveInfo> queryIntentServicesAsUser(@NonNull android.content.Intent, int, @NonNull android.os.UserHandle);
+    method public abstract void registerDexModule(@NonNull String, @Nullable android.content.pm.PackageManager.DexModuleRegisterCallback);
+    method @RequiresPermission("android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS") public abstract void removeOnPermissionsChangeListener(@NonNull android.content.pm.PackageManager.OnPermissionsChangedListener);
+    method public void replacePreferredActivity(@NonNull android.content.IntentFilter, int, @NonNull java.util.List<android.content.ComponentName>, @NonNull android.content.ComponentName);
+    method @RequiresPermission(android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS) public abstract void revokeRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
+    method @RequiresPermission(android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS) public void revokeRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle, @NonNull String);
+    method public void sendDeviceCustomizationReadyBroadcast();
+    method @RequiresPermission(allOf={android.Manifest.permission.SET_PREFERRED_APPLICATIONS, android.Manifest.permission.INTERACT_ACROSS_USERS_FULL}) public abstract boolean setDefaultBrowserPackageNameAsUser(@Nullable String, int);
+    method @NonNull @RequiresPermission(android.Manifest.permission.SUSPEND_APPS) public String[] setDistractingPackageRestrictions(@NonNull String[], int);
+    method @RequiresPermission(android.Manifest.permission.SET_HARMFUL_APP_WARNINGS) public void setHarmfulAppWarning(@NonNull String, @Nullable CharSequence);
+    method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.SUSPEND_APPS) public String[] setPackagesSuspended(@Nullable String[], boolean, @Nullable android.os.PersistableBundle, @Nullable android.os.PersistableBundle, @Nullable String);
+    method @Nullable @RequiresPermission(android.Manifest.permission.SUSPEND_APPS) public String[] setPackagesSuspended(@Nullable String[], boolean, @Nullable android.os.PersistableBundle, @Nullable android.os.PersistableBundle, @Nullable android.content.pm.SuspendDialogInfo);
+    method @RequiresPermission(value=android.Manifest.permission.CHANGE_COMPONENT_ENABLED_STATE, conditional=true) public void setSyntheticAppDetailsActivityEnabled(@NonNull String, boolean);
+    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public abstract void setUpdateAvailable(@NonNull String, boolean);
+    method @RequiresPermission(android.Manifest.permission.SET_PREFERRED_APPLICATIONS) public abstract boolean updateIntentVerificationStatusAsUser(@NonNull String, int, int);
+    method @RequiresPermission(anyOf={android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS, android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS}) public abstract void updatePermissionFlags(@NonNull String, @NonNull String, @android.content.pm.PackageManager.PermissionFlags int, @android.content.pm.PackageManager.PermissionFlags int, @NonNull android.os.UserHandle);
+    method @RequiresPermission(android.Manifest.permission.INTENT_FILTER_VERIFICATION_AGENT) public abstract void verifyIntentFilter(int, int, @NonNull java.util.List<java.lang.String>);
+    field public static final String ACTION_REQUEST_PERMISSIONS = "android.content.pm.action.REQUEST_PERMISSIONS";
+    field public static final String EXTRA_REQUEST_PERMISSIONS_NAMES = "android.content.pm.extra.REQUEST_PERMISSIONS_NAMES";
+    field public static final String EXTRA_REQUEST_PERMISSIONS_RESULTS = "android.content.pm.extra.REQUEST_PERMISSIONS_RESULTS";
+    field public static final String FEATURE_BROADCAST_RADIO = "android.hardware.broadcastradio";
+    field public static final String FEATURE_CONTEXT_HUB = "android.hardware.context_hub";
+    field public static final String FEATURE_INCREMENTAL_DELIVERY = "android.software.incremental_delivery";
+    field public static final String FEATURE_REBOOT_ESCROW = "android.hardware.reboot_escrow";
+    field public static final String FEATURE_TELEPHONY_CARRIERLOCK = "android.hardware.telephony.carrierlock";
+    field public static final int FLAGS_PERMISSION_RESERVED_PERMISSION_CONTROLLER = -268435456; // 0xf0000000
+    field public static final int FLAG_PERMISSION_APPLY_RESTRICTION = 16384; // 0x4000
+    field public static final int FLAG_PERMISSION_AUTO_REVOKED = 131072; // 0x20000
+    field public static final int FLAG_PERMISSION_GRANTED_BY_DEFAULT = 32; // 0x20
+    field public static final int FLAG_PERMISSION_GRANTED_BY_ROLE = 32768; // 0x8000
+    field public static final int FLAG_PERMISSION_ONE_TIME = 65536; // 0x10000
+    field public static final int FLAG_PERMISSION_POLICY_FIXED = 4; // 0x4
+    field public static final int FLAG_PERMISSION_RESTRICTION_INSTALLER_EXEMPT = 2048; // 0x800
+    field public static final int FLAG_PERMISSION_RESTRICTION_SYSTEM_EXEMPT = 4096; // 0x1000
+    field public static final int FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT = 8192; // 0x2000
+    field public static final int FLAG_PERMISSION_REVIEW_REQUIRED = 64; // 0x40
+    field public static final int FLAG_PERMISSION_REVOKED_COMPAT = 8; // 0x8
+    field @Deprecated public static final int FLAG_PERMISSION_REVOKE_ON_UPGRADE = 8; // 0x8
+    field public static final int FLAG_PERMISSION_SYSTEM_FIXED = 16; // 0x10
+    field public static final int FLAG_PERMISSION_USER_FIXED = 2; // 0x2
+    field public static final int FLAG_PERMISSION_USER_SENSITIVE_WHEN_DENIED = 512; // 0x200
+    field public static final int FLAG_PERMISSION_USER_SENSITIVE_WHEN_GRANTED = 256; // 0x100
+    field public static final int FLAG_PERMISSION_USER_SET = 1; // 0x1
+    field public static final int INSTALL_FAILED_ALREADY_EXISTS = -1; // 0xffffffff
+    field public static final int INSTALL_FAILED_CONFLICTING_PROVIDER = -13; // 0xfffffff3
+    field public static final int INSTALL_FAILED_CONTAINER_ERROR = -18; // 0xffffffee
+    field public static final int INSTALL_FAILED_CPU_ABI_INCOMPATIBLE = -16; // 0xfffffff0
+    field public static final int INSTALL_FAILED_DEXOPT = -11; // 0xfffffff5
+    field public static final int INSTALL_FAILED_DUPLICATE_PACKAGE = -5; // 0xfffffffb
+    field public static final int INSTALL_FAILED_INSUFFICIENT_STORAGE = -4; // 0xfffffffc
+    field public static final int INSTALL_FAILED_INTERNAL_ERROR = -110; // 0xffffff92
+    field public static final int INSTALL_FAILED_INVALID_APK = -2; // 0xfffffffe
+    field public static final int INSTALL_FAILED_INVALID_INSTALL_LOCATION = -19; // 0xffffffed
+    field public static final int INSTALL_FAILED_INVALID_URI = -3; // 0xfffffffd
+    field public static final int INSTALL_FAILED_MEDIA_UNAVAILABLE = -20; // 0xffffffec
+    field public static final int INSTALL_FAILED_MISSING_FEATURE = -17; // 0xffffffef
+    field public static final int INSTALL_FAILED_MISSING_SHARED_LIBRARY = -9; // 0xfffffff7
+    field public static final int INSTALL_FAILED_NEWER_SDK = -14; // 0xfffffff2
+    field public static final int INSTALL_FAILED_NO_SHARED_USER = -6; // 0xfffffffa
+    field public static final int INSTALL_FAILED_OLDER_SDK = -12; // 0xfffffff4
+    field public static final int INSTALL_FAILED_PACKAGE_CHANGED = -23; // 0xffffffe9
+    field public static final int INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE = -26; // 0xffffffe6
+    field public static final int INSTALL_FAILED_REPLACE_COULDNT_DELETE = -10; // 0xfffffff6
+    field public static final int INSTALL_FAILED_SANDBOX_VERSION_DOWNGRADE = -27; // 0xffffffe5
+    field public static final int INSTALL_FAILED_SHARED_USER_INCOMPATIBLE = -8; // 0xfffffff8
+    field public static final int INSTALL_FAILED_TEST_ONLY = -15; // 0xfffffff1
+    field public static final int INSTALL_FAILED_UPDATE_INCOMPATIBLE = -7; // 0xfffffff9
+    field public static final int INSTALL_FAILED_VERIFICATION_FAILURE = -22; // 0xffffffea
+    field public static final int INSTALL_FAILED_VERIFICATION_TIMEOUT = -21; // 0xffffffeb
+    field public static final int INSTALL_PARSE_FAILED_BAD_MANIFEST = -101; // 0xffffff9b
+    field public static final int INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME = -106; // 0xffffff96
+    field public static final int INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID = -107; // 0xffffff95
+    field public static final int INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING = -105; // 0xffffff97
+    field public static final int INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES = -104; // 0xffffff98
+    field public static final int INSTALL_PARSE_FAILED_MANIFEST_EMPTY = -109; // 0xffffff93
+    field public static final int INSTALL_PARSE_FAILED_MANIFEST_MALFORMED = -108; // 0xffffff94
+    field public static final int INSTALL_PARSE_FAILED_NOT_APK = -100; // 0xffffff9c
+    field public static final int INSTALL_PARSE_FAILED_NO_CERTIFICATES = -103; // 0xffffff99
+    field public static final int INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION = -102; // 0xffffff9a
+    field public static final int INSTALL_SUCCEEDED = 1; // 0x1
+    field public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS = 2; // 0x2
+    field public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK = 4; // 0x4
+    field public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK = 1; // 0x1
+    field public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER = 3; // 0x3
+    field public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED = 0; // 0x0
+    field public static final int INTENT_FILTER_VERIFICATION_FAILURE = -1; // 0xffffffff
+    field public static final int INTENT_FILTER_VERIFICATION_SUCCESS = 1; // 0x1
+    field @Deprecated public static final int MASK_PERMISSION_FLAGS = 255; // 0xff
+    field public static final int MATCH_ANY_USER = 4194304; // 0x400000
+    field public static final int MATCH_FACTORY_ONLY = 2097152; // 0x200000
+    field public static final int MATCH_INSTANT = 8388608; // 0x800000
+    field public static final int MODULE_APEX_NAME = 1; // 0x1
+    field public static final int RESTRICTION_HIDE_FROM_SUGGESTIONS = 1; // 0x1
+    field public static final int RESTRICTION_HIDE_NOTIFICATIONS = 2; // 0x2
+    field public static final int RESTRICTION_NONE = 0; // 0x0
+  }
+
+  public abstract static class PackageManager.DexModuleRegisterCallback {
+    ctor public PackageManager.DexModuleRegisterCallback();
+    method public abstract void onDexModuleRegistered(String, boolean, String);
+  }
+
+  public static interface PackageManager.OnPermissionsChangedListener {
+    method public void onPermissionsChanged(int);
+  }
+
+  @IntDef(prefix={"FLAG_PERMISSION_"}, value={android.content.pm.PackageManager.FLAG_PERMISSION_USER_SET, android.content.pm.PackageManager.FLAG_PERMISSION_USER_FIXED, android.content.pm.PackageManager.FLAG_PERMISSION_POLICY_FIXED, android.content.pm.PackageManager.FLAG_PERMISSION_REVOKE_ON_UPGRADE, android.content.pm.PackageManager.FLAG_PERMISSION_SYSTEM_FIXED, android.content.pm.PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT, android.content.pm.PackageManager.FLAG_PERMISSION_USER_SENSITIVE_WHEN_GRANTED, android.content.pm.PackageManager.FLAG_PERMISSION_USER_SENSITIVE_WHEN_DENIED, android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT, android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_SYSTEM_EXEMPT, android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_INSTALLER_EXEMPT, android.content.pm.PackageManager.FLAG_PERMISSION_APPLY_RESTRICTION, android.content.pm.PackageManager.FLAG_PERMISSION_GRANTED_BY_ROLE, android.content.pm.PackageManager.FLAG_PERMISSION_REVOKED_COMPAT, android.content.pm.PackageManager.FLAG_PERMISSION_ONE_TIME, android.content.pm.PackageManager.FLAG_PERMISSION_AUTO_REVOKED}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface PackageManager.PermissionFlags {
+  }
+
+  public class PermissionGroupInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
+    field @StringRes public final int backgroundRequestDetailResourceId;
+    field @StringRes public final int backgroundRequestResourceId;
+    field @StringRes public final int requestDetailResourceId;
+    field @StringRes public int requestRes;
+  }
+
+  public class PermissionInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
+    field public static final int FLAG_REMOVED = 2; // 0x2
+    field public static final int PROTECTION_FLAG_APP_PREDICTOR = 2097152; // 0x200000
+    field public static final int PROTECTION_FLAG_COMPANION = 8388608; // 0x800000
+    field public static final int PROTECTION_FLAG_CONFIGURATOR = 524288; // 0x80000
+    field public static final int PROTECTION_FLAG_DOCUMENTER = 262144; // 0x40000
+    field public static final int PROTECTION_FLAG_INCIDENT_REPORT_APPROVER = 1048576; // 0x100000
+    field public static final int PROTECTION_FLAG_OEM = 16384; // 0x4000
+    field public static final int PROTECTION_FLAG_RETAIL_DEMO = 16777216; // 0x1000000
+    field public static final int PROTECTION_FLAG_SYSTEM_TEXT_CLASSIFIER = 65536; // 0x10000
+    field public static final int PROTECTION_FLAG_WELLBEING = 131072; // 0x20000
+    field @Nullable public final String backgroundPermission;
+    field @StringRes public int requestRes;
+  }
+
+  public class ResolveInfo implements android.os.Parcelable {
+    field public boolean handleAllWebDataURI;
+  }
+
+  public final class ShortcutInfo implements android.os.Parcelable {
+    method @Nullable public android.app.Person[] getPersons();
+  }
+
+  public class ShortcutManager {
+    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_APP_PREDICTIONS) public java.util.List<android.content.pm.ShortcutManager.ShareShortcutInfo> getShareTargets(@NonNull android.content.IntentFilter);
+    method public boolean hasShareTargets(@NonNull String);
+  }
+
+  public static final class ShortcutManager.ShareShortcutInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public android.content.pm.ShortcutInfo getShortcutInfo();
+    method @NonNull public android.content.ComponentName getTargetComponent();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ShortcutManager.ShareShortcutInfo> CREATOR;
+  }
+
+  public final class SuspendDialogInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int BUTTON_ACTION_MORE_DETAILS = 0; // 0x0
+    field public static final int BUTTON_ACTION_UNSUSPEND = 1; // 0x1
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.SuspendDialogInfo> CREATOR;
+  }
+
+  public static final class SuspendDialogInfo.Builder {
+    ctor public SuspendDialogInfo.Builder();
+    method @NonNull public android.content.pm.SuspendDialogInfo build();
+    method @NonNull public android.content.pm.SuspendDialogInfo.Builder setIcon(@DrawableRes int);
+    method @NonNull public android.content.pm.SuspendDialogInfo.Builder setMessage(@NonNull String);
+    method @NonNull public android.content.pm.SuspendDialogInfo.Builder setMessage(@StringRes int);
+    method @NonNull public android.content.pm.SuspendDialogInfo.Builder setNeutralButtonAction(int);
+    method @NonNull public android.content.pm.SuspendDialogInfo.Builder setNeutralButtonText(@StringRes int);
+    method @NonNull public android.content.pm.SuspendDialogInfo.Builder setTitle(@StringRes int);
+  }
+
+}
+
+package android.content.pm.dex {
+
+  public class ArtManager {
+    method @RequiresPermission(allOf={android.Manifest.permission.READ_RUNTIME_PROFILES, android.Manifest.permission.PACKAGE_USAGE_STATS}) public boolean isRuntimeProfilingEnabled(int);
+    method @RequiresPermission(allOf={android.Manifest.permission.READ_RUNTIME_PROFILES, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void snapshotRuntimeProfile(int, @Nullable String, @Nullable String, @NonNull java.util.concurrent.Executor, @NonNull android.content.pm.dex.ArtManager.SnapshotRuntimeProfileCallback);
+    field public static final int PROFILE_APPS = 0; // 0x0
+    field public static final int PROFILE_BOOT_IMAGE = 1; // 0x1
+    field public static final int SNAPSHOT_FAILED_CODE_PATH_NOT_FOUND = 1; // 0x1
+    field public static final int SNAPSHOT_FAILED_INTERNAL_ERROR = 2; // 0x2
+    field public static final int SNAPSHOT_FAILED_PACKAGE_NOT_FOUND = 0; // 0x0
+  }
+
+  public abstract static class ArtManager.SnapshotRuntimeProfileCallback {
+    ctor public ArtManager.SnapshotRuntimeProfileCallback();
+    method public abstract void onError(int);
+    method public abstract void onSuccess(android.os.ParcelFileDescriptor);
+  }
+
+}
+
+package android.content.pm.permission {
+
+  @Deprecated public final class RuntimePermissionPresentationInfo implements android.os.Parcelable {
+    ctor @Deprecated public RuntimePermissionPresentationInfo(CharSequence, boolean, boolean);
+    method @Deprecated public int describeContents();
+    method @Deprecated @NonNull public CharSequence getLabel();
+    method @Deprecated public boolean isGranted();
+    method @Deprecated public boolean isStandard();
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.content.pm.permission.RuntimePermissionPresentationInfo> CREATOR;
+  }
+
+}
+
+package android.content.rollback {
+
+  public final class PackageRollbackInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public String getPackageName();
+    method @NonNull public android.content.pm.VersionedPackage getVersionRolledBackFrom();
+    method @NonNull public android.content.pm.VersionedPackage getVersionRolledBackTo();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.rollback.PackageRollbackInfo> CREATOR;
+  }
+
+  public final class RollbackInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public java.util.List<android.content.pm.VersionedPackage> getCausePackages();
+    method public int getCommittedSessionId();
+    method @NonNull public java.util.List<android.content.rollback.PackageRollbackInfo> getPackages();
+    method public int getRollbackId();
+    method public boolean isStaged();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.rollback.RollbackInfo> CREATOR;
+  }
+
+  public final class RollbackManager {
+    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_ROLLBACKS, "android.permission.TEST_MANAGE_ROLLBACKS"}) public void commitRollback(int, @NonNull java.util.List<android.content.pm.VersionedPackage>, @NonNull android.content.IntentSender);
+    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_ROLLBACKS, "android.permission.TEST_MANAGE_ROLLBACKS"}) public java.util.List<android.content.rollback.RollbackInfo> getAvailableRollbacks();
+    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_ROLLBACKS, "android.permission.TEST_MANAGE_ROLLBACKS"}) public java.util.List<android.content.rollback.RollbackInfo> getRecentlyCommittedRollbacks();
+    field public static final String EXTRA_STATUS = "android.content.rollback.extra.STATUS";
+    field public static final String EXTRA_STATUS_MESSAGE = "android.content.rollback.extra.STATUS_MESSAGE";
+    field public static final int STATUS_FAILURE = 1; // 0x1
+    field public static final int STATUS_FAILURE_INSTALL = 3; // 0x3
+    field public static final int STATUS_FAILURE_ROLLBACK_UNAVAILABLE = 2; // 0x2
+    field public static final int STATUS_SUCCESS = 0; // 0x0
+  }
+
+}
+
+package android.debug {
+
+  public class AdbManager {
+    method @RequiresPermission(android.Manifest.permission.MANAGE_DEBUGGING) public boolean isAdbWifiQrSupported();
+    method @RequiresPermission(android.Manifest.permission.MANAGE_DEBUGGING) public boolean isAdbWifiSupported();
+  }
+
+}
+
+package android.hardware {
+
+  public final class Sensor {
+    method public java.util.UUID getUuid();
+    method public boolean isDataInjectionSupported();
+    field public static final String STRING_TYPE_DYNAMIC_SENSOR_META = "android.sensor.dynamic_sensor_meta";
+    field public static final String STRING_TYPE_WRIST_TILT_GESTURE = "android.sensor.wrist_tilt_gesture";
+    field public static final int TYPE_DYNAMIC_SENSOR_META = 32; // 0x20
+    field public static final int TYPE_WRIST_TILT_GESTURE = 26; // 0x1a
+  }
+
+  public abstract class SensorManager {
+    method public boolean initDataInjection(boolean);
+    method public boolean injectSensorData(android.hardware.Sensor, float[], int, long);
+  }
+
+}
+
+package android.hardware.biometrics {
+
+  public static interface BiometricManager.Authenticators {
+    field @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static final int BIOMETRIC_CONVENIENCE = 4095; // 0xfff
+    field @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static final int EMPTY_SET = 0; // 0x0
+  }
+
+}
+
+package android.hardware.camera2 {
+
+  public abstract class CameraDevice implements java.lang.AutoCloseable {
+    method @Deprecated public abstract void createCustomCaptureSession(android.hardware.camera2.params.InputConfiguration, @NonNull java.util.List<android.hardware.camera2.params.OutputConfiguration>, int, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
+    field public static final int SESSION_OPERATION_MODE_CONSTRAINED_HIGH_SPEED = 1; // 0x1
+    field public static final int SESSION_OPERATION_MODE_NORMAL = 0; // 0x0
+    field public static final int SESSION_OPERATION_MODE_VENDOR_START = 32768; // 0x8000
+  }
+
+}
+
+package android.hardware.camera2.params {
+
+  public final class OutputConfiguration implements android.os.Parcelable {
+    ctor public OutputConfiguration(@NonNull android.view.Surface, int);
+    ctor public OutputConfiguration(int, @NonNull android.view.Surface, int);
+    method public int getRotation();
+    field public static final int ROTATION_0 = 0; // 0x0
+    field public static final int ROTATION_180 = 2; // 0x2
+    field public static final int ROTATION_270 = 3; // 0x3
+    field public static final int ROTATION_90 = 1; // 0x1
+  }
+
+}
+
+package android.hardware.display {
+
+  public final class AmbientBrightnessDayStats implements android.os.Parcelable {
+    method public int describeContents();
+    method public float[] getBucketBoundaries();
+    method public java.time.LocalDate getLocalDate();
+    method public float[] getStats();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.display.AmbientBrightnessDayStats> CREATOR;
+  }
+
+  public final class BrightnessChangeEvent implements android.os.Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.display.BrightnessChangeEvent> CREATOR;
+    field public final float batteryLevel;
+    field public final float brightness;
+    field public final long colorSampleDuration;
+    field public final int colorTemperature;
+    field @Nullable public final long[] colorValueBuckets;
+    field public final boolean isDefaultBrightnessConfig;
+    field public final boolean isUserSetBrightness;
+    field public final float lastBrightness;
+    field public final long[] luxTimestamps;
+    field public final float[] luxValues;
+    field public final boolean nightMode;
+    field public final String packageName;
+    field public final float powerBrightnessFactor;
+    field public final long timeStamp;
+  }
+
+  public final class BrightnessConfiguration implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public android.hardware.display.BrightnessCorrection getCorrectionByCategory(int);
+    method @Nullable public android.hardware.display.BrightnessCorrection getCorrectionByPackageName(@NonNull String);
+    method public android.util.Pair<float[],float[]> getCurve();
+    method public float getShortTermModelLowerLuxMultiplier();
+    method public long getShortTermModelTimeoutMillis();
+    method public float getShortTermModelUpperLuxMultiplier();
+    method public boolean shouldCollectColorSamples();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.display.BrightnessConfiguration> CREATOR;
+    field public static final long SHORT_TERM_TIMEOUT_UNSET = -1L; // 0xffffffffffffffffL
+  }
+
+  public static class BrightnessConfiguration.Builder {
+    ctor public BrightnessConfiguration.Builder(float[], float[]);
+    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder addCorrectionByCategory(int, @NonNull android.hardware.display.BrightnessCorrection);
+    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder addCorrectionByPackageName(@NonNull String, @NonNull android.hardware.display.BrightnessCorrection);
+    method @NonNull public android.hardware.display.BrightnessConfiguration build();
+    method public int getMaxCorrectionsByCategory();
+    method public int getMaxCorrectionsByPackageName();
+    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder setDescription(@Nullable String);
+    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder setShortTermModelLowerLuxMultiplier(@FloatRange(from=0.0f) float);
+    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder setShortTermModelTimeoutMillis(long);
+    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder setShortTermModelUpperLuxMultiplier(@FloatRange(from=0.0f) float);
+    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder setShouldCollectColorSamples(boolean);
+  }
+
+  public final class BrightnessCorrection implements android.os.Parcelable {
+    method @FloatRange(from=0.0) public float apply(@FloatRange(from=0.0) float);
+    method @NonNull public static android.hardware.display.BrightnessCorrection createScaleAndTranslateLog(float, float);
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.display.BrightnessCorrection> CREATOR;
+  }
+
+  public final class ColorDisplayManager {
+    method @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public int getNightDisplayAutoMode();
+    method @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public int getTransformCapabilities();
+    method @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public boolean setAppSaturationLevel(@NonNull String, @IntRange(from=0, to=100) int);
+    method @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public boolean setNightDisplayAutoMode(int);
+    method @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public boolean setNightDisplayCustomEndTime(@NonNull java.time.LocalTime);
+    method @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public boolean setNightDisplayCustomStartTime(@NonNull java.time.LocalTime);
+    method @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public boolean setSaturationLevel(@IntRange(from=0, to=100) int);
+    field public static final int AUTO_MODE_CUSTOM_TIME = 1; // 0x1
+    field public static final int AUTO_MODE_DISABLED = 0; // 0x0
+    field public static final int AUTO_MODE_TWILIGHT = 2; // 0x2
+    field public static final int CAPABILITY_HARDWARE_ACCELERATION_GLOBAL = 2; // 0x2
+    field public static final int CAPABILITY_HARDWARE_ACCELERATION_PER_APP = 4; // 0x4
+    field public static final int CAPABILITY_NONE = 0; // 0x0
+    field public static final int CAPABILITY_PROTECTED_CONTENT = 1; // 0x1
+  }
+
+  public final class DisplayManager {
+    method @RequiresPermission(android.Manifest.permission.ACCESS_AMBIENT_LIGHT_STATS) public java.util.List<android.hardware.display.AmbientBrightnessDayStats> getAmbientBrightnessStats();
+    method @RequiresPermission(android.Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS) public android.hardware.display.BrightnessConfiguration getBrightnessConfiguration();
+    method @RequiresPermission(android.Manifest.permission.BRIGHTNESS_SLIDER_USAGE) public java.util.List<android.hardware.display.BrightnessChangeEvent> getBrightnessEvents();
+    method @Nullable @RequiresPermission(android.Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS) public android.hardware.display.BrightnessConfiguration getDefaultBrightnessConfiguration();
+    method public android.util.Pair<float[],float[]> getMinimumBrightnessCurve();
+    method public android.graphics.Point getStableDisplaySize();
+    method @RequiresPermission(android.Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS) public void setBrightnessConfiguration(android.hardware.display.BrightnessConfiguration);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_SATURATION) public void setSaturationLevel(float);
+  }
+
+}
+
+package android.hardware.hdmi {
+
+  public abstract class HdmiClient {
+    method public android.hardware.hdmi.HdmiDeviceInfo getActiveSource();
+    method public void sendKeyEvent(int, boolean);
+    method public void sendVendorCommand(int, byte[], boolean);
+    method public void setVendorCommandListener(@NonNull android.hardware.hdmi.HdmiControlManager.VendorCommandListener);
+  }
+
+  public final class HdmiControlManager {
+    method @RequiresPermission(android.Manifest.permission.HDMI_CEC) public void addHotplugEventListener(android.hardware.hdmi.HdmiControlManager.HotplugEventListener);
+    method @Nullable public android.hardware.hdmi.HdmiClient getClient(int);
+    method @NonNull public java.util.List<android.hardware.hdmi.HdmiDeviceInfo> getConnectedDevices();
+    method public int getPhysicalAddress();
+    method @Nullable public android.hardware.hdmi.HdmiPlaybackClient getPlaybackClient();
+    method @Nullable public android.hardware.hdmi.HdmiSwitchClient getSwitchClient();
+    method @Nullable public android.hardware.hdmi.HdmiTvClient getTvClient();
+    method public boolean isDeviceConnected(@NonNull android.hardware.hdmi.HdmiDeviceInfo);
+    method public void powerOffDevice(@NonNull android.hardware.hdmi.HdmiDeviceInfo);
+    method @RequiresPermission(android.Manifest.permission.HDMI_CEC) public void removeHotplugEventListener(android.hardware.hdmi.HdmiControlManager.HotplugEventListener);
+    method public void setActiveSource(@NonNull android.hardware.hdmi.HdmiDeviceInfo);
+    method @RequiresPermission(android.Manifest.permission.HDMI_CEC) public void setStandbyMode(boolean);
+    field public static final String ACTION_OSD_MESSAGE = "android.hardware.hdmi.action.OSD_MESSAGE";
+    field public static final int AVR_VOLUME_MUTED = 101; // 0x65
+    field public static final int CLEAR_TIMER_STATUS_CEC_DISABLE = 162; // 0xa2
+    field public static final int CLEAR_TIMER_STATUS_CHECK_RECORDER_CONNECTION = 160; // 0xa0
+    field public static final int CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE = 161; // 0xa1
+    field public static final int CLEAR_TIMER_STATUS_TIMER_CLEARED = 128; // 0x80
+    field public static final int CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_NO_INFO_AVAILABLE = 2; // 0x2
+    field public static final int CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_NO_MATCHING = 1; // 0x1
+    field public static final int CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_RECORDING = 0; // 0x0
+    field public static final int CONTROL_STATE_CHANGED_REASON_SETTING = 1; // 0x1
+    field public static final int CONTROL_STATE_CHANGED_REASON_STANDBY = 3; // 0x3
+    field public static final int CONTROL_STATE_CHANGED_REASON_START = 0; // 0x0
+    field public static final int CONTROL_STATE_CHANGED_REASON_WAKEUP = 2; // 0x2
+    field public static final int DEVICE_EVENT_ADD_DEVICE = 1; // 0x1
+    field public static final int DEVICE_EVENT_REMOVE_DEVICE = 2; // 0x2
+    field public static final int DEVICE_EVENT_UPDATE_DEVICE = 3; // 0x3
+    field public static final String EXTRA_MESSAGE_EXTRA_PARAM1 = "android.hardware.hdmi.extra.MESSAGE_EXTRA_PARAM1";
+    field public static final String EXTRA_MESSAGE_ID = "android.hardware.hdmi.extra.MESSAGE_ID";
+    field public static final int ONE_TOUCH_RECORD_ALREADY_RECORDING = 18; // 0x12
+    field public static final int ONE_TOUCH_RECORD_CEC_DISABLED = 51; // 0x33
+    field public static final int ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION = 49; // 0x31
+    field public static final int ONE_TOUCH_RECORD_DISALLOW_TO_COPY = 13; // 0xd
+    field public static final int ONE_TOUCH_RECORD_DISALLOW_TO_FUTHER_COPIES = 14; // 0xe
+    field public static final int ONE_TOUCH_RECORD_FAIL_TO_RECORD_DISPLAYED_SCREEN = 50; // 0x32
+    field public static final int ONE_TOUCH_RECORD_INVALID_EXTERNAL_PHYSICAL_ADDRESS = 10; // 0xa
+    field public static final int ONE_TOUCH_RECORD_INVALID_EXTERNAL_PLUG_NUMBER = 9; // 0x9
+    field public static final int ONE_TOUCH_RECORD_MEDIA_PROBLEM = 21; // 0x15
+    field public static final int ONE_TOUCH_RECORD_MEDIA_PROTECTED = 19; // 0x13
+    field public static final int ONE_TOUCH_RECORD_NOT_ENOUGH_SPACE = 22; // 0x16
+    field public static final int ONE_TOUCH_RECORD_NO_MEDIA = 16; // 0x10
+    field public static final int ONE_TOUCH_RECORD_NO_OR_INSUFFICIENT_CA_ENTITLEMENTS = 12; // 0xc
+    field public static final int ONE_TOUCH_RECORD_NO_SOURCE_SIGNAL = 20; // 0x14
+    field public static final int ONE_TOUCH_RECORD_OTHER_REASON = 31; // 0x1f
+    field public static final int ONE_TOUCH_RECORD_PARENT_LOCK_ON = 23; // 0x17
+    field public static final int ONE_TOUCH_RECORD_PLAYING = 17; // 0x11
+    field public static final int ONE_TOUCH_RECORD_PREVIOUS_RECORDING_IN_PROGRESS = 48; // 0x30
+    field public static final int ONE_TOUCH_RECORD_RECORDING_ALREADY_TERMINATED = 27; // 0x1b
+    field public static final int ONE_TOUCH_RECORD_RECORDING_ANALOGUE_SERVICE = 3; // 0x3
+    field public static final int ONE_TOUCH_RECORD_RECORDING_CURRENTLY_SELECTED_SOURCE = 1; // 0x1
+    field public static final int ONE_TOUCH_RECORD_RECORDING_DIGITAL_SERVICE = 2; // 0x2
+    field public static final int ONE_TOUCH_RECORD_RECORDING_EXTERNAL_INPUT = 4; // 0x4
+    field public static final int ONE_TOUCH_RECORD_RECORDING_TERMINATED_NORMALLY = 26; // 0x1a
+    field public static final int ONE_TOUCH_RECORD_UNABLE_ANALOGUE_SERVICE = 6; // 0x6
+    field public static final int ONE_TOUCH_RECORD_UNABLE_DIGITAL_SERVICE = 5; // 0x5
+    field public static final int ONE_TOUCH_RECORD_UNABLE_SELECTED_SERVICE = 7; // 0x7
+    field public static final int ONE_TOUCH_RECORD_UNSUPPORTED_CA = 11; // 0xb
+    field public static final int OSD_MESSAGE_ARC_CONNECTED_INVALID_PORT = 1; // 0x1
+    field public static final int OSD_MESSAGE_AVR_VOLUME_CHANGED = 2; // 0x2
+    field public static final int POWER_STATUS_ON = 0; // 0x0
+    field public static final int POWER_STATUS_STANDBY = 1; // 0x1
+    field public static final int POWER_STATUS_TRANSIENT_TO_ON = 2; // 0x2
+    field public static final int POWER_STATUS_TRANSIENT_TO_STANDBY = 3; // 0x3
+    field public static final int POWER_STATUS_UNKNOWN = -1; // 0xffffffff
+    field @Deprecated public static final int RESULT_ALREADY_IN_PROGRESS = 4; // 0x4
+    field public static final int RESULT_COMMUNICATION_FAILED = 7; // 0x7
+    field public static final int RESULT_EXCEPTION = 5; // 0x5
+    field public static final int RESULT_INCORRECT_MODE = 6; // 0x6
+    field public static final int RESULT_SOURCE_NOT_AVAILABLE = 2; // 0x2
+    field public static final int RESULT_SUCCESS = 0; // 0x0
+    field public static final int RESULT_TARGET_NOT_AVAILABLE = 3; // 0x3
+    field public static final int RESULT_TIMEOUT = 1; // 0x1
+    field public static final int TIMER_RECORDING_RESULT_EXTRA_CEC_DISABLED = 3; // 0x3
+    field public static final int TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION = 1; // 0x1
+    field public static final int TIMER_RECORDING_RESULT_EXTRA_FAIL_TO_RECORD_SELECTED_SOURCE = 2; // 0x2
+    field public static final int TIMER_RECORDING_RESULT_EXTRA_NO_ERROR = 0; // 0x0
+    field public static final int TIMER_RECORDING_TYPE_ANALOGUE = 2; // 0x2
+    field public static final int TIMER_RECORDING_TYPE_DIGITAL = 1; // 0x1
+    field public static final int TIMER_RECORDING_TYPE_EXTERNAL = 3; // 0x3
+    field public static final int TIMER_STATUS_MEDIA_INFO_NOT_PRESENT = 2; // 0x2
+    field public static final int TIMER_STATUS_MEDIA_INFO_PRESENT_NOT_PROTECTED = 0; // 0x0
+    field public static final int TIMER_STATUS_MEDIA_INFO_PRESENT_PROTECTED = 1; // 0x1
+    field public static final int TIMER_STATUS_NOT_PROGRAMMED_CA_NOT_SUPPORTED = 6; // 0x6
+    field public static final int TIMER_STATUS_NOT_PROGRAMMED_CLOCK_FAILURE = 10; // 0xa
+    field public static final int TIMER_STATUS_NOT_PROGRAMMED_DATE_OUT_OF_RANGE = 2; // 0x2
+    field public static final int TIMER_STATUS_NOT_PROGRAMMED_DUPLICATED = 14; // 0xe
+    field public static final int TIMER_STATUS_NOT_PROGRAMMED_INVALID_EXTERNAL_PHYSICAL_NUMBER = 5; // 0x5
+    field public static final int TIMER_STATUS_NOT_PROGRAMMED_INVALID_EXTERNAL_PLUG_NUMBER = 4; // 0x4
+    field public static final int TIMER_STATUS_NOT_PROGRAMMED_INVALID_SEQUENCE = 3; // 0x3
+    field public static final int TIMER_STATUS_NOT_PROGRAMMED_NO_CA_ENTITLEMENTS = 7; // 0x7
+    field public static final int TIMER_STATUS_NOT_PROGRAMMED_NO_FREE_TIME = 1; // 0x1
+    field public static final int TIMER_STATUS_NOT_PROGRAMMED_PARENTAL_LOCK_ON = 9; // 0x9
+    field public static final int TIMER_STATUS_NOT_PROGRAMMED_UNSUPPORTED_RESOLUTION = 8; // 0x8
+    field public static final int TIMER_STATUS_PROGRAMMED_INFO_ENOUGH_SPACE = 8; // 0x8
+    field public static final int TIMER_STATUS_PROGRAMMED_INFO_MIGHT_NOT_ENOUGH_SPACE = 11; // 0xb
+    field public static final int TIMER_STATUS_PROGRAMMED_INFO_NOT_ENOUGH_SPACE = 9; // 0x9
+    field public static final int TIMER_STATUS_PROGRAMMED_INFO_NO_MEDIA_INFO = 10; // 0xa
+  }
+
+  @IntDef({android.hardware.hdmi.HdmiControlManager.RESULT_SUCCESS, android.hardware.hdmi.HdmiControlManager.RESULT_TIMEOUT, android.hardware.hdmi.HdmiControlManager.RESULT_SOURCE_NOT_AVAILABLE, android.hardware.hdmi.HdmiControlManager.RESULT_TARGET_NOT_AVAILABLE, android.hardware.hdmi.HdmiControlManager.RESULT_ALREADY_IN_PROGRESS, android.hardware.hdmi.HdmiControlManager.RESULT_EXCEPTION, android.hardware.hdmi.HdmiControlManager.RESULT_INCORRECT_MODE, android.hardware.hdmi.HdmiControlManager.RESULT_COMMUNICATION_FAILED}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public static @interface HdmiControlManager.ControlCallbackResult {
+  }
+
+  public static interface HdmiControlManager.HotplugEventListener {
+    method public void onReceived(android.hardware.hdmi.HdmiHotplugEvent);
+  }
+
+  public static interface HdmiControlManager.VendorCommandListener {
+    method public void onControlStateChanged(boolean, int);
+    method public void onReceived(int, int, byte[], boolean);
+  }
+
+  public class HdmiDeviceInfo implements android.os.Parcelable {
+    ctor public HdmiDeviceInfo();
+    method public int describeContents();
+    method public int getAdopterId();
+    method public int getDeviceId();
+    method public int getDevicePowerStatus();
+    method public int getDeviceType();
+    method public String getDisplayName();
+    method public int getId();
+    method public int getLogicalAddress();
+    method public int getPhysicalAddress();
+    method public int getPortId();
+    method public int getVendorId();
+    method public static int idForCecDevice(int);
+    method public static int idForHardware(int);
+    method public static int idForMhlDevice(int);
+    method public boolean isCecDevice();
+    method public boolean isInactivated();
+    method public boolean isMhlDevice();
+    method public boolean isSourceType();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int ADDR_INTERNAL = 0; // 0x0
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.hdmi.HdmiDeviceInfo> CREATOR;
+    field public static final int DEVICE_AUDIO_SYSTEM = 5; // 0x5
+    field public static final int DEVICE_INACTIVE = -1; // 0xffffffff
+    field public static final int DEVICE_PLAYBACK = 4; // 0x4
+    field public static final int DEVICE_RECORDER = 1; // 0x1
+    field public static final int DEVICE_RESERVED = 2; // 0x2
+    field public static final int DEVICE_TUNER = 3; // 0x3
+    field public static final int DEVICE_TV = 0; // 0x0
+    field public static final int ID_INVALID = 65535; // 0xffff
+    field public static final android.hardware.hdmi.HdmiDeviceInfo INACTIVE_DEVICE;
+    field public static final int PATH_INTERNAL = 0; // 0x0
+    field public static final int PATH_INVALID = 65535; // 0xffff
+    field public static final int PORT_INVALID = -1; // 0xffffffff
+  }
+
+  public final class HdmiHotplugEvent implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getPort();
+    method public boolean isConnected();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.hdmi.HdmiHotplugEvent> CREATOR;
+  }
+
+  public final class HdmiPlaybackClient extends android.hardware.hdmi.HdmiClient {
+    method public int getDeviceType();
+    method public void oneTouchPlay(android.hardware.hdmi.HdmiPlaybackClient.OneTouchPlayCallback);
+    method public void queryDisplayStatus(android.hardware.hdmi.HdmiPlaybackClient.DisplayStatusCallback);
+    method public void sendStandby();
+  }
+
+  public static interface HdmiPlaybackClient.DisplayStatusCallback {
+    method public void onComplete(int);
+  }
+
+  public static interface HdmiPlaybackClient.OneTouchPlayCallback {
+    method public void onComplete(int);
+  }
+
+  public final class HdmiPortInfo implements android.os.Parcelable {
+    ctor public HdmiPortInfo(int, int, int, boolean, boolean, boolean);
+    method public int describeContents();
+    method public int getAddress();
+    method public int getId();
+    method public int getType();
+    method public boolean isArcSupported();
+    method public boolean isCecSupported();
+    method public boolean isMhlSupported();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.hdmi.HdmiPortInfo> CREATOR;
+    field public static final int PORT_INPUT = 0; // 0x0
+    field public static final int PORT_OUTPUT = 1; // 0x1
+  }
+
+  public abstract class HdmiRecordListener {
+    ctor public HdmiRecordListener();
+    method public void onClearTimerRecordingResult(int, int);
+    method public void onOneTouchRecordResult(int, int);
+    method public abstract android.hardware.hdmi.HdmiRecordSources.RecordSource onOneTouchRecordSourceRequested(int);
+    method public void onTimerRecordingResult(int, android.hardware.hdmi.HdmiRecordListener.TimerStatusData);
+  }
+
+  public static class HdmiRecordListener.TimerStatusData {
+    method public int getDurationHour();
+    method public int getDurationMinute();
+    method public int getExtraError();
+    method public int getMediaInfo();
+    method public int getNotProgammedError();
+    method public int getProgrammedInfo();
+    method public boolean isOverlapped();
+    method public boolean isProgrammed();
+  }
+
+  public final class HdmiRecordSources {
+    method public static boolean checkRecordSource(byte[]);
+    method public static android.hardware.hdmi.HdmiRecordSources.OwnSource ofOwnSource();
+  }
+
+  public static final class HdmiRecordSources.AnalogueServiceSource extends android.hardware.hdmi.HdmiRecordSources.RecordSource {
+  }
+
+  public static final class HdmiRecordSources.DigitalServiceSource extends android.hardware.hdmi.HdmiRecordSources.RecordSource {
+  }
+
+  public static final class HdmiRecordSources.ExternalPhysicalAddress extends android.hardware.hdmi.HdmiRecordSources.RecordSource {
+  }
+
+  public static final class HdmiRecordSources.ExternalPlugData extends android.hardware.hdmi.HdmiRecordSources.RecordSource {
+  }
+
+  public static final class HdmiRecordSources.OwnSource extends android.hardware.hdmi.HdmiRecordSources.RecordSource {
+  }
+
+  public abstract static class HdmiRecordSources.RecordSource {
+  }
+
+  public class HdmiSwitchClient extends android.hardware.hdmi.HdmiClient {
+    method public int getDeviceType();
+    method @NonNull public java.util.List<android.hardware.hdmi.HdmiPortInfo> getPortInfo();
+    method public void selectPort(int, @NonNull android.hardware.hdmi.HdmiSwitchClient.OnSelectListener);
+    method public void selectPort(int, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.hdmi.HdmiSwitchClient.OnSelectListener);
+  }
+
+  public static interface HdmiSwitchClient.OnSelectListener {
+    method public void onSelect(@android.hardware.hdmi.HdmiControlManager.ControlCallbackResult int);
+  }
+
+  public class HdmiTimerRecordSources {
+    method public static boolean checkTimerRecordSource(int, byte[]);
+    method public static android.hardware.hdmi.HdmiTimerRecordSources.Duration durationOf(int, int);
+    method public static android.hardware.hdmi.HdmiTimerRecordSources.TimerRecordSource ofAnalogueSource(android.hardware.hdmi.HdmiTimerRecordSources.TimerInfo, android.hardware.hdmi.HdmiRecordSources.AnalogueServiceSource);
+    method public static android.hardware.hdmi.HdmiTimerRecordSources.TimerRecordSource ofDigitalSource(android.hardware.hdmi.HdmiTimerRecordSources.TimerInfo, android.hardware.hdmi.HdmiRecordSources.DigitalServiceSource);
+    method public static android.hardware.hdmi.HdmiTimerRecordSources.TimerRecordSource ofExternalPhysicalAddress(android.hardware.hdmi.HdmiTimerRecordSources.TimerInfo, android.hardware.hdmi.HdmiRecordSources.ExternalPhysicalAddress);
+    method public static android.hardware.hdmi.HdmiTimerRecordSources.TimerRecordSource ofExternalPlug(android.hardware.hdmi.HdmiTimerRecordSources.TimerInfo, android.hardware.hdmi.HdmiRecordSources.ExternalPlugData);
+    method public static android.hardware.hdmi.HdmiTimerRecordSources.Time timeOf(int, int);
+    method public static android.hardware.hdmi.HdmiTimerRecordSources.TimerInfo timerInfoOf(int, int, android.hardware.hdmi.HdmiTimerRecordSources.Time, android.hardware.hdmi.HdmiTimerRecordSources.Duration, int);
+    field public static final int RECORDING_SEQUENCE_REPEAT_FRIDAY = 32; // 0x20
+    field public static final int RECORDING_SEQUENCE_REPEAT_MONDAY = 2; // 0x2
+    field public static final int RECORDING_SEQUENCE_REPEAT_ONCE_ONLY = 0; // 0x0
+    field public static final int RECORDING_SEQUENCE_REPEAT_SATUREDAY = 64; // 0x40
+    field public static final int RECORDING_SEQUENCE_REPEAT_SUNDAY = 1; // 0x1
+    field public static final int RECORDING_SEQUENCE_REPEAT_THURSDAY = 16; // 0x10
+    field public static final int RECORDING_SEQUENCE_REPEAT_TUESDAY = 4; // 0x4
+    field public static final int RECORDING_SEQUENCE_REPEAT_WEDNESDAY = 8; // 0x8
+  }
+
+  public static final class HdmiTimerRecordSources.Duration {
+  }
+
+  public static final class HdmiTimerRecordSources.Time {
+  }
+
+  public static final class HdmiTimerRecordSources.TimerInfo {
+  }
+
+  public static final class HdmiTimerRecordSources.TimerRecordSource {
+  }
+
+  public final class HdmiTvClient extends android.hardware.hdmi.HdmiClient {
+    method public void clearTimerRecording(int, int, android.hardware.hdmi.HdmiTimerRecordSources.TimerRecordSource);
+    method public void deviceSelect(int, @NonNull android.hardware.hdmi.HdmiTvClient.SelectCallback);
+    method public java.util.List<android.hardware.hdmi.HdmiDeviceInfo> getDeviceList();
+    method public int getDeviceType();
+    method public void portSelect(int, @NonNull android.hardware.hdmi.HdmiTvClient.SelectCallback);
+    method public void sendMhlVendorCommand(int, int, int, byte[]);
+    method public void sendStandby(int);
+    method public void setHdmiMhlVendorCommandListener(android.hardware.hdmi.HdmiTvClient.HdmiMhlVendorCommandListener);
+    method public void setInputChangeListener(android.hardware.hdmi.HdmiTvClient.InputChangeListener);
+    method public void setRecordListener(@NonNull android.hardware.hdmi.HdmiRecordListener);
+    method public void setSystemAudioMode(boolean, android.hardware.hdmi.HdmiTvClient.SelectCallback);
+    method public void setSystemAudioMute(boolean);
+    method public void setSystemAudioVolume(int, int, int);
+    method public void startOneTouchRecord(int, @NonNull android.hardware.hdmi.HdmiRecordSources.RecordSource);
+    method public void startTimerRecording(int, int, android.hardware.hdmi.HdmiTimerRecordSources.TimerRecordSource);
+    method public void stopOneTouchRecord(int);
+    field public static final int VENDOR_DATA_SIZE = 16; // 0x10
+  }
+
+  public static interface HdmiTvClient.HdmiMhlVendorCommandListener {
+    method public void onReceived(int, int, int, byte[]);
+  }
+
+  public static interface HdmiTvClient.InputChangeListener {
+    method public void onChanged(android.hardware.hdmi.HdmiDeviceInfo);
+  }
+
+  public static interface HdmiTvClient.SelectCallback {
+    method public void onComplete(int);
+  }
+
+}
+
+package android.hardware.lights {
+
+  public final class Light implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getId();
+    method public int getOrdinal();
+    method public int getType();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.lights.Light> CREATOR;
+  }
+
+  public final class LightState implements android.os.Parcelable {
+    ctor public LightState(@ColorInt int);
+    method public int describeContents();
+    method @ColorInt public int getColor();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.lights.LightState> CREATOR;
+  }
+
+  public final class LightsManager {
+    method @NonNull @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public java.util.List<android.hardware.lights.Light> getLights();
+    method @NonNull @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public android.hardware.lights.LightsManager.LightsSession openSession();
+    field public static final int LIGHT_TYPE_MICROPHONE = 8; // 0x8
+  }
+
+  public final class LightsManager.LightsSession implements java.lang.AutoCloseable {
+    method @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public void close();
+    method @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public void requestLights(@NonNull android.hardware.lights.LightsRequest);
+  }
+
+  public final class LightsRequest {
+  }
+
+  public static final class LightsRequest.Builder {
+    ctor public LightsRequest.Builder();
+    method @NonNull public android.hardware.lights.LightsRequest build();
+    method @NonNull public android.hardware.lights.LightsRequest.Builder clearLight(@NonNull android.hardware.lights.Light);
+    method @NonNull public android.hardware.lights.LightsRequest.Builder setLight(@NonNull android.hardware.lights.Light, @NonNull android.hardware.lights.LightState);
+  }
+
+}
+
+package android.hardware.location {
+
+  public class ContextHubClient implements java.io.Closeable {
+    method public void close();
+    method @NonNull public android.hardware.location.ContextHubInfo getAttachedHub();
+    method @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public int sendMessageToNanoApp(@NonNull android.hardware.location.NanoAppMessage);
+  }
+
+  public class ContextHubClientCallback {
+    ctor public ContextHubClientCallback();
+    method public void onHubReset(android.hardware.location.ContextHubClient);
+    method public void onMessageFromNanoApp(android.hardware.location.ContextHubClient, android.hardware.location.NanoAppMessage);
+    method public void onNanoAppAborted(android.hardware.location.ContextHubClient, long, int);
+    method public void onNanoAppDisabled(android.hardware.location.ContextHubClient, long);
+    method public void onNanoAppEnabled(android.hardware.location.ContextHubClient, long);
+    method public void onNanoAppLoaded(android.hardware.location.ContextHubClient, long);
+    method public void onNanoAppUnloaded(android.hardware.location.ContextHubClient, long);
+  }
+
+  public class ContextHubInfo implements android.os.Parcelable {
+    ctor public ContextHubInfo();
+    method public int describeContents();
+    method public byte getChreApiMajorVersion();
+    method public byte getChreApiMinorVersion();
+    method public short getChrePatchVersion();
+    method public long getChrePlatformId();
+    method public int getId();
+    method public int getMaxPacketLengthBytes();
+    method public android.hardware.location.MemoryRegion[] getMemoryRegions();
+    method public String getName();
+    method public float getPeakMips();
+    method public float getPeakPowerDrawMw();
+    method public int getPlatformVersion();
+    method public float getSleepPowerDrawMw();
+    method public int getStaticSwVersion();
+    method public float getStoppedPowerDrawMw();
+    method public int[] getSupportedSensors();
+    method public String getToolchain();
+    method public int getToolchainVersion();
+    method public String getVendor();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.ContextHubInfo> CREATOR;
+  }
+
+  public class ContextHubIntentEvent {
+    method @NonNull public static android.hardware.location.ContextHubIntentEvent fromIntent(@NonNull android.content.Intent);
+    method @NonNull public android.hardware.location.ContextHubInfo getContextHubInfo();
+    method public int getEventType();
+    method public int getNanoAppAbortCode();
+    method public long getNanoAppId();
+    method @NonNull public android.hardware.location.NanoAppMessage getNanoAppMessage();
+  }
+
+  public final class ContextHubManager {
+    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubClient createClient(@NonNull android.hardware.location.ContextHubInfo, @NonNull android.hardware.location.ContextHubClientCallback, @NonNull java.util.concurrent.Executor);
+    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubClient createClient(@NonNull android.hardware.location.ContextHubInfo, @NonNull android.hardware.location.ContextHubClientCallback);
+    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubClient createClient(@NonNull android.hardware.location.ContextHubInfo, @NonNull android.app.PendingIntent, long);
+    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubTransaction<java.lang.Void> disableNanoApp(@NonNull android.hardware.location.ContextHubInfo, long);
+    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubTransaction<java.lang.Void> enableNanoApp(@NonNull android.hardware.location.ContextHubInfo, long);
+    method @Deprecated @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public int[] findNanoAppOnHub(int, @NonNull android.hardware.location.NanoAppFilter);
+    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public int[] getContextHubHandles();
+    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubInfo getContextHubInfo(int);
+    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public java.util.List<android.hardware.location.ContextHubInfo> getContextHubs();
+    method @Deprecated @Nullable @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.NanoAppInstanceInfo getNanoAppInstanceInfo(int);
+    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public int loadNanoApp(int, @NonNull android.hardware.location.NanoApp);
+    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubTransaction<java.lang.Void> loadNanoApp(@NonNull android.hardware.location.ContextHubInfo, @NonNull android.hardware.location.NanoAppBinary);
+    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubTransaction<java.util.List<android.hardware.location.NanoAppState>> queryNanoApps(@NonNull android.hardware.location.ContextHubInfo);
+    method @Deprecated public int registerCallback(@NonNull android.hardware.location.ContextHubManager.Callback);
+    method @Deprecated public int registerCallback(android.hardware.location.ContextHubManager.Callback, android.os.Handler);
+    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public int sendMessage(int, int, @NonNull android.hardware.location.ContextHubMessage);
+    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public int unloadNanoApp(int);
+    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubTransaction<java.lang.Void> unloadNanoApp(@NonNull android.hardware.location.ContextHubInfo, long);
+    method @Deprecated public int unregisterCallback(@NonNull android.hardware.location.ContextHubManager.Callback);
+    field public static final int EVENT_HUB_RESET = 6; // 0x6
+    field public static final int EVENT_NANOAPP_ABORTED = 4; // 0x4
+    field public static final int EVENT_NANOAPP_DISABLED = 3; // 0x3
+    field public static final int EVENT_NANOAPP_ENABLED = 2; // 0x2
+    field public static final int EVENT_NANOAPP_LOADED = 0; // 0x0
+    field public static final int EVENT_NANOAPP_MESSAGE = 5; // 0x5
+    field public static final int EVENT_NANOAPP_UNLOADED = 1; // 0x1
+    field public static final String EXTRA_CONTEXT_HUB_INFO = "android.hardware.location.extra.CONTEXT_HUB_INFO";
+    field public static final String EXTRA_EVENT_TYPE = "android.hardware.location.extra.EVENT_TYPE";
+    field public static final String EXTRA_MESSAGE = "android.hardware.location.extra.MESSAGE";
+    field public static final String EXTRA_NANOAPP_ABORT_CODE = "android.hardware.location.extra.NANOAPP_ABORT_CODE";
+    field public static final String EXTRA_NANOAPP_ID = "android.hardware.location.extra.NANOAPP_ID";
+  }
+
+  @Deprecated public abstract static class ContextHubManager.Callback {
+    ctor @Deprecated protected ContextHubManager.Callback();
+    method @Deprecated public abstract void onMessageReceipt(int, int, @NonNull android.hardware.location.ContextHubMessage);
+  }
+
+  @Deprecated public class ContextHubMessage implements android.os.Parcelable {
+    ctor @Deprecated public ContextHubMessage(int, int, byte[]);
+    method @Deprecated public int describeContents();
+    method @Deprecated public byte[] getData();
+    method @Deprecated public int getMsgType();
+    method @Deprecated public int getVersion();
+    method @Deprecated public void setMsgData(byte[]);
+    method @Deprecated public void setMsgType(int);
+    method @Deprecated public void setVersion(int);
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.ContextHubMessage> CREATOR;
+  }
+
+  public class ContextHubTransaction<T> {
+    method public int getType();
+    method public void setOnCompleteListener(@NonNull android.hardware.location.ContextHubTransaction.OnCompleteListener<T>, @NonNull java.util.concurrent.Executor);
+    method public void setOnCompleteListener(@NonNull android.hardware.location.ContextHubTransaction.OnCompleteListener<T>);
+    method public static String typeToString(int, boolean);
+    method public android.hardware.location.ContextHubTransaction.Response<T> waitForResponse(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException, java.util.concurrent.TimeoutException;
+    field public static final int RESULT_FAILED_AT_HUB = 5; // 0x5
+    field public static final int RESULT_FAILED_BAD_PARAMS = 2; // 0x2
+    field public static final int RESULT_FAILED_BUSY = 4; // 0x4
+    field public static final int RESULT_FAILED_HAL_UNAVAILABLE = 8; // 0x8
+    field public static final int RESULT_FAILED_SERVICE_INTERNAL_FAILURE = 7; // 0x7
+    field public static final int RESULT_FAILED_TIMEOUT = 6; // 0x6
+    field public static final int RESULT_FAILED_UNINITIALIZED = 3; // 0x3
+    field public static final int RESULT_FAILED_UNKNOWN = 1; // 0x1
+    field public static final int RESULT_SUCCESS = 0; // 0x0
+    field public static final int TYPE_DISABLE_NANOAPP = 3; // 0x3
+    field public static final int TYPE_ENABLE_NANOAPP = 2; // 0x2
+    field public static final int TYPE_LOAD_NANOAPP = 0; // 0x0
+    field public static final int TYPE_QUERY_NANOAPPS = 4; // 0x4
+    field public static final int TYPE_UNLOAD_NANOAPP = 1; // 0x1
+  }
+
+  @java.lang.FunctionalInterface public static interface ContextHubTransaction.OnCompleteListener<L> {
+    method public void onComplete(android.hardware.location.ContextHubTransaction<L>, android.hardware.location.ContextHubTransaction.Response<L>);
+  }
+
+  public static class ContextHubTransaction.Response<R> {
+    method public R getContents();
+    method public int getResult();
+  }
+
+  public final class GeofenceHardware {
+    method public boolean addGeofence(int, int, android.hardware.location.GeofenceHardwareRequest, android.hardware.location.GeofenceHardwareCallback);
+    method public int[] getMonitoringTypes();
+    method public int getStatusOfMonitoringType(int);
+    method public boolean pauseGeofence(int, int);
+    method public boolean registerForMonitorStateChangeCallback(int, android.hardware.location.GeofenceHardwareMonitorCallback);
+    method public boolean removeGeofence(int, int);
+    method public boolean resumeGeofence(int, int, int);
+    method public boolean unregisterForMonitorStateChangeCallback(int, android.hardware.location.GeofenceHardwareMonitorCallback);
+    field public static final int GEOFENCE_ENTERED = 1; // 0x1
+    field public static final int GEOFENCE_ERROR_ID_EXISTS = 2; // 0x2
+    field public static final int GEOFENCE_ERROR_ID_UNKNOWN = 3; // 0x3
+    field public static final int GEOFENCE_ERROR_INSUFFICIENT_MEMORY = 6; // 0x6
+    field public static final int GEOFENCE_ERROR_INVALID_TRANSITION = 4; // 0x4
+    field public static final int GEOFENCE_ERROR_TOO_MANY_GEOFENCES = 1; // 0x1
+    field public static final int GEOFENCE_EXITED = 2; // 0x2
+    field public static final int GEOFENCE_FAILURE = 5; // 0x5
+    field public static final int GEOFENCE_SUCCESS = 0; // 0x0
+    field public static final int GEOFENCE_UNCERTAIN = 4; // 0x4
+    field public static final int MONITORING_TYPE_FUSED_HARDWARE = 1; // 0x1
+    field public static final int MONITORING_TYPE_GPS_HARDWARE = 0; // 0x0
+    field public static final int MONITOR_CURRENTLY_AVAILABLE = 0; // 0x0
+    field public static final int MONITOR_CURRENTLY_UNAVAILABLE = 1; // 0x1
+    field public static final int MONITOR_UNSUPPORTED = 2; // 0x2
+    field public static final int SOURCE_TECHNOLOGY_BLUETOOTH = 16; // 0x10
+    field public static final int SOURCE_TECHNOLOGY_CELL = 8; // 0x8
+    field public static final int SOURCE_TECHNOLOGY_GNSS = 1; // 0x1
+    field public static final int SOURCE_TECHNOLOGY_SENSORS = 4; // 0x4
+    field public static final int SOURCE_TECHNOLOGY_WIFI = 2; // 0x2
+  }
+
+  public abstract class GeofenceHardwareCallback {
+    ctor public GeofenceHardwareCallback();
+    method public void onGeofenceAdd(int, int);
+    method public void onGeofencePause(int, int);
+    method public void onGeofenceRemove(int, int);
+    method public void onGeofenceResume(int, int);
+    method public void onGeofenceTransition(int, int, android.location.Location, long, int);
+  }
+
+  public abstract class GeofenceHardwareMonitorCallback {
+    ctor public GeofenceHardwareMonitorCallback();
+    method @Deprecated public void onMonitoringSystemChange(int, boolean, android.location.Location);
+    method public void onMonitoringSystemChange(android.hardware.location.GeofenceHardwareMonitorEvent);
+  }
+
+  public class GeofenceHardwareMonitorEvent implements android.os.Parcelable {
+    ctor public GeofenceHardwareMonitorEvent(int, int, int, android.location.Location);
+    method public int describeContents();
+    method public android.location.Location getLocation();
+    method public int getMonitoringStatus();
+    method public int getMonitoringType();
+    method public int getSourceTechnologies();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.GeofenceHardwareMonitorEvent> CREATOR;
+  }
+
+  public final class GeofenceHardwareRequest {
+    ctor public GeofenceHardwareRequest();
+    method public static android.hardware.location.GeofenceHardwareRequest createCircularGeofence(double, double, double);
+    method public int getLastTransition();
+    method public double getLatitude();
+    method public double getLongitude();
+    method public int getMonitorTransitions();
+    method public int getNotificationResponsiveness();
+    method public double getRadius();
+    method public int getSourceTechnologies();
+    method public int getUnknownTimer();
+    method public void setLastTransition(int);
+    method public void setMonitorTransitions(int);
+    method public void setNotificationResponsiveness(int);
+    method public void setSourceTechnologies(int);
+    method public void setUnknownTimer(int);
+  }
+
+  public class MemoryRegion implements android.os.Parcelable {
+    ctor public MemoryRegion(android.os.Parcel);
+    method public int describeContents();
+    method public int getCapacityBytes();
+    method public int getFreeCapacityBytes();
+    method public boolean isExecutable();
+    method public boolean isReadable();
+    method public boolean isWritable();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.MemoryRegion> CREATOR;
+  }
+
+  @Deprecated public class NanoApp implements android.os.Parcelable {
+    ctor @Deprecated public NanoApp();
+    ctor @Deprecated public NanoApp(int, byte[]);
+    ctor @Deprecated public NanoApp(long, byte[]);
+    method @Deprecated public int describeContents();
+    method @Deprecated public byte[] getAppBinary();
+    method @Deprecated public long getAppId();
+    method @Deprecated public int getAppVersion();
+    method @Deprecated public String getName();
+    method @Deprecated public int getNeededExecMemBytes();
+    method @Deprecated public int getNeededReadMemBytes();
+    method @Deprecated public int[] getNeededSensors();
+    method @Deprecated public int getNeededWriteMemBytes();
+    method @Deprecated public int[] getOutputEvents();
+    method @Deprecated public String getPublisher();
+    method @Deprecated public void setAppBinary(byte[]);
+    method @Deprecated public void setAppId(long);
+    method @Deprecated public void setAppVersion(int);
+    method @Deprecated public void setName(String);
+    method @Deprecated public void setNeededExecMemBytes(int);
+    method @Deprecated public void setNeededReadMemBytes(int);
+    method @Deprecated public void setNeededSensors(int[]);
+    method @Deprecated public void setNeededWriteMemBytes(int);
+    method @Deprecated public void setOutputEvents(int[]);
+    method @Deprecated public void setPublisher(String);
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.NanoApp> CREATOR;
+  }
+
+  public final class NanoAppBinary implements android.os.Parcelable {
+    ctor public NanoAppBinary(byte[]);
+    method public int describeContents();
+    method public byte[] getBinary();
+    method public byte[] getBinaryNoHeader();
+    method public int getFlags();
+    method public int getHeaderVersion();
+    method public long getHwHubType();
+    method public long getNanoAppId();
+    method public int getNanoAppVersion();
+    method public byte getTargetChreApiMajorVersion();
+    method public byte getTargetChreApiMinorVersion();
+    method public boolean hasValidHeader();
+    method public boolean isEncrypted();
+    method public boolean isSigned();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.NanoAppBinary> CREATOR;
+  }
+
+  @Deprecated public class NanoAppFilter implements android.os.Parcelable {
+    ctor @Deprecated public NanoAppFilter(long, int, int, long);
+    method @Deprecated public int describeContents();
+    method @Deprecated public boolean testMatch(android.hardware.location.NanoAppInstanceInfo);
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated public static final int APP_ANY = -1; // 0xffffffff
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.NanoAppFilter> CREATOR;
+    field @Deprecated public static final int FLAGS_VERSION_ANY = -1; // 0xffffffff
+    field @Deprecated public static final int FLAGS_VERSION_GREAT_THAN = 2; // 0x2
+    field @Deprecated public static final int FLAGS_VERSION_LESS_THAN = 4; // 0x4
+    field @Deprecated public static final int FLAGS_VERSION_STRICTLY_EQUAL = 8; // 0x8
+    field @Deprecated public static final int HUB_ANY = -1; // 0xffffffff
+    field @Deprecated public static final int VENDOR_ANY = -1; // 0xffffffff
+  }
+
+  @Deprecated public class NanoAppInstanceInfo implements android.os.Parcelable {
+    ctor @Deprecated public NanoAppInstanceInfo();
+    method @Deprecated public int describeContents();
+    method @Deprecated public long getAppId();
+    method @Deprecated public int getAppVersion();
+    method @Deprecated public int getContexthubId();
+    method @Deprecated public int getHandle();
+    method @Deprecated public String getName();
+    method @Deprecated public int getNeededExecMemBytes();
+    method @Deprecated public int getNeededReadMemBytes();
+    method @Deprecated @NonNull public int[] getNeededSensors();
+    method @Deprecated public int getNeededWriteMemBytes();
+    method @Deprecated @NonNull public int[] getOutputEvents();
+    method @Deprecated public String getPublisher();
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.NanoAppInstanceInfo> CREATOR;
+  }
+
+  public final class NanoAppMessage implements android.os.Parcelable {
+    method public static android.hardware.location.NanoAppMessage createMessageFromNanoApp(long, int, byte[], boolean);
+    method public static android.hardware.location.NanoAppMessage createMessageToNanoApp(long, int, byte[]);
+    method public int describeContents();
+    method public byte[] getMessageBody();
+    method public int getMessageType();
+    method public long getNanoAppId();
+    method public boolean isBroadcastMessage();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.NanoAppMessage> CREATOR;
+  }
+
+  public final class NanoAppState implements android.os.Parcelable {
+    ctor public NanoAppState(long, int, boolean);
+    method public int describeContents();
+    method public long getNanoAppId();
+    method public long getNanoAppVersion();
+    method public boolean isEnabled();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.NanoAppState> CREATOR;
+  }
+
+}
+
+package android.hardware.radio {
+
+  public final class Announcement implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public android.hardware.radio.ProgramSelector getSelector();
+    method public int getType();
+    method @NonNull public java.util.Map<java.lang.String,java.lang.String> getVendorInfo();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.Announcement> CREATOR;
+    field public static final int TYPE_EMERGENCY = 1; // 0x1
+    field public static final int TYPE_EVENT = 6; // 0x6
+    field public static final int TYPE_MISC = 8; // 0x8
+    field public static final int TYPE_NEWS = 5; // 0x5
+    field public static final int TYPE_SPORT = 7; // 0x7
+    field public static final int TYPE_TRAFFIC = 3; // 0x3
+    field public static final int TYPE_WARNING = 2; // 0x2
+    field public static final int TYPE_WEATHER = 4; // 0x4
+  }
+
+  public static interface Announcement.OnListUpdatedListener {
+    method public void onListUpdated(java.util.Collection<android.hardware.radio.Announcement>);
+  }
+
+  public final class ProgramList implements java.lang.AutoCloseable {
+    method public void addOnCompleteListener(@NonNull java.util.concurrent.Executor, @NonNull android.hardware.radio.ProgramList.OnCompleteListener);
+    method public void addOnCompleteListener(@NonNull android.hardware.radio.ProgramList.OnCompleteListener);
+    method public void close();
+    method @Nullable public android.hardware.radio.RadioManager.ProgramInfo get(@NonNull android.hardware.radio.ProgramSelector.Identifier);
+    method public void registerListCallback(@NonNull java.util.concurrent.Executor, @NonNull android.hardware.radio.ProgramList.ListCallback);
+    method public void registerListCallback(@NonNull android.hardware.radio.ProgramList.ListCallback);
+    method public void removeOnCompleteListener(@NonNull android.hardware.radio.ProgramList.OnCompleteListener);
+    method @NonNull public java.util.List<android.hardware.radio.RadioManager.ProgramInfo> toList();
+    method public void unregisterListCallback(@NonNull android.hardware.radio.ProgramList.ListCallback);
+  }
+
+  public static final class ProgramList.Filter implements android.os.Parcelable {
+    ctor public ProgramList.Filter(@NonNull java.util.Set<java.lang.Integer>, @NonNull java.util.Set<android.hardware.radio.ProgramSelector.Identifier>, boolean, boolean);
+    method public boolean areCategoriesIncluded();
+    method public boolean areModificationsExcluded();
+    method public int describeContents();
+    method @NonNull public java.util.Set<java.lang.Integer> getIdentifierTypes();
+    method @NonNull public java.util.Set<android.hardware.radio.ProgramSelector.Identifier> getIdentifiers();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.ProgramList.Filter> CREATOR;
+  }
+
+  public abstract static class ProgramList.ListCallback {
+    ctor public ProgramList.ListCallback();
+    method public void onItemChanged(@NonNull android.hardware.radio.ProgramSelector.Identifier);
+    method public void onItemRemoved(@NonNull android.hardware.radio.ProgramSelector.Identifier);
+  }
+
+  public static interface ProgramList.OnCompleteListener {
+    method public void onComplete();
+  }
+
+  public final class ProgramSelector implements android.os.Parcelable {
+    ctor public ProgramSelector(@android.hardware.radio.ProgramSelector.ProgramType int, @NonNull android.hardware.radio.ProgramSelector.Identifier, @Nullable android.hardware.radio.ProgramSelector.Identifier[], @Nullable long[]);
+    method @NonNull public static android.hardware.radio.ProgramSelector createAmFmSelector(@android.hardware.radio.RadioManager.Band int, int);
+    method @NonNull public static android.hardware.radio.ProgramSelector createAmFmSelector(@android.hardware.radio.RadioManager.Band int, int, int);
+    method public int describeContents();
+    method @NonNull public android.hardware.radio.ProgramSelector.Identifier[] getAllIds(@android.hardware.radio.ProgramSelector.IdentifierType int);
+    method public long getFirstId(@android.hardware.radio.ProgramSelector.IdentifierType int);
+    method @NonNull public android.hardware.radio.ProgramSelector.Identifier getPrimaryId();
+    method @Deprecated @android.hardware.radio.ProgramSelector.ProgramType public int getProgramType();
+    method @NonNull public android.hardware.radio.ProgramSelector.Identifier[] getSecondaryIds();
+    method @Deprecated @NonNull public long[] getVendorIds();
+    method @NonNull public android.hardware.radio.ProgramSelector withSecondaryPreferred(@NonNull android.hardware.radio.ProgramSelector.Identifier);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.ProgramSelector> CREATOR;
+    field public static final int IDENTIFIER_TYPE_AMFM_FREQUENCY = 1; // 0x1
+    field public static final int IDENTIFIER_TYPE_DAB_ENSEMBLE = 6; // 0x6
+    field public static final int IDENTIFIER_TYPE_DAB_FREQUENCY = 8; // 0x8
+    field public static final int IDENTIFIER_TYPE_DAB_SCID = 7; // 0x7
+    field public static final int IDENTIFIER_TYPE_DAB_SIDECC = 5; // 0x5
+    field public static final int IDENTIFIER_TYPE_DAB_SID_EXT = 5; // 0x5
+    field public static final int IDENTIFIER_TYPE_DRMO_FREQUENCY = 10; // 0xa
+    field @Deprecated public static final int IDENTIFIER_TYPE_DRMO_MODULATION = 11; // 0xb
+    field public static final int IDENTIFIER_TYPE_DRMO_SERVICE_ID = 9; // 0x9
+    field public static final int IDENTIFIER_TYPE_HD_STATION_ID_EXT = 3; // 0x3
+    field public static final int IDENTIFIER_TYPE_HD_STATION_NAME = 10004; // 0x2714
+    field @Deprecated public static final int IDENTIFIER_TYPE_HD_SUBCHANNEL = 4; // 0x4
+    field public static final int IDENTIFIER_TYPE_INVALID = 0; // 0x0
+    field public static final int IDENTIFIER_TYPE_RDS_PI = 2; // 0x2
+    field public static final int IDENTIFIER_TYPE_SXM_CHANNEL = 13; // 0xd
+    field public static final int IDENTIFIER_TYPE_SXM_SERVICE_ID = 12; // 0xc
+    field public static final int IDENTIFIER_TYPE_VENDOR_END = 1999; // 0x7cf
+    field @Deprecated public static final int IDENTIFIER_TYPE_VENDOR_PRIMARY_END = 1999; // 0x7cf
+    field @Deprecated public static final int IDENTIFIER_TYPE_VENDOR_PRIMARY_START = 1000; // 0x3e8
+    field public static final int IDENTIFIER_TYPE_VENDOR_START = 1000; // 0x3e8
+    field @Deprecated public static final int PROGRAM_TYPE_AM = 1; // 0x1
+    field @Deprecated public static final int PROGRAM_TYPE_AM_HD = 3; // 0x3
+    field @Deprecated public static final int PROGRAM_TYPE_DAB = 5; // 0x5
+    field @Deprecated public static final int PROGRAM_TYPE_DRMO = 6; // 0x6
+    field @Deprecated public static final int PROGRAM_TYPE_FM = 2; // 0x2
+    field @Deprecated public static final int PROGRAM_TYPE_FM_HD = 4; // 0x4
+    field @Deprecated public static final int PROGRAM_TYPE_INVALID = 0; // 0x0
+    field @Deprecated public static final int PROGRAM_TYPE_SXM = 7; // 0x7
+    field @Deprecated public static final int PROGRAM_TYPE_VENDOR_END = 1999; // 0x7cf
+    field @Deprecated public static final int PROGRAM_TYPE_VENDOR_START = 1000; // 0x3e8
+  }
+
+  public static final class ProgramSelector.Identifier implements android.os.Parcelable {
+    ctor public ProgramSelector.Identifier(@android.hardware.radio.ProgramSelector.IdentifierType int, long);
+    method public int describeContents();
+    method @android.hardware.radio.ProgramSelector.IdentifierType public int getType();
+    method public long getValue();
+    method public boolean isCategoryType();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.ProgramSelector.Identifier> CREATOR;
+  }
+
+  @IntDef(prefix={"IDENTIFIER_TYPE_"}, value={android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_INVALID, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_AMFM_FREQUENCY, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_RDS_PI, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_HD_STATION_ID_EXT, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_HD_SUBCHANNEL, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_HD_STATION_NAME, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DAB_SID_EXT, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DAB_SIDECC, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DAB_ENSEMBLE, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DAB_SCID, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DAB_FREQUENCY, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DRMO_SERVICE_ID, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DRMO_FREQUENCY, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DRMO_MODULATION, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_SXM_SERVICE_ID, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_SXM_CHANNEL}) @IntRange(from=android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_VENDOR_START, to=android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_VENDOR_END) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ProgramSelector.IdentifierType {
+  }
+
+  @Deprecated @IntDef(prefix={"PROGRAM_TYPE_"}, value={android.hardware.radio.ProgramSelector.PROGRAM_TYPE_INVALID, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_AM, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_FM, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_AM_HD, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_FM_HD, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_DAB, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_DRMO, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_SXM}) @IntRange(from=android.hardware.radio.ProgramSelector.PROGRAM_TYPE_VENDOR_START, to=android.hardware.radio.ProgramSelector.PROGRAM_TYPE_VENDOR_END) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ProgramSelector.ProgramType {
+  }
+
+  public class RadioManager {
+    method @RequiresPermission(android.Manifest.permission.ACCESS_BROADCAST_RADIO) public void addAnnouncementListener(@NonNull java.util.Set<java.lang.Integer>, @NonNull android.hardware.radio.Announcement.OnListUpdatedListener);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_BROADCAST_RADIO) public void addAnnouncementListener(@NonNull java.util.concurrent.Executor, @NonNull java.util.Set<java.lang.Integer>, @NonNull android.hardware.radio.Announcement.OnListUpdatedListener);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_BROADCAST_RADIO) public int listModules(java.util.List<android.hardware.radio.RadioManager.ModuleProperties>);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_BROADCAST_RADIO) public android.hardware.radio.RadioTuner openTuner(int, android.hardware.radio.RadioManager.BandConfig, boolean, android.hardware.radio.RadioTuner.Callback, android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_BROADCAST_RADIO) public void removeAnnouncementListener(@NonNull android.hardware.radio.Announcement.OnListUpdatedListener);
+    field public static final int BAND_AM = 0; // 0x0
+    field public static final int BAND_AM_HD = 3; // 0x3
+    field public static final int BAND_FM = 1; // 0x1
+    field public static final int BAND_FM_HD = 2; // 0x2
+    field public static final int BAND_INVALID = -1; // 0xffffffff
+    field public static final int CLASS_AM_FM = 0; // 0x0
+    field public static final int CLASS_DT = 2; // 0x2
+    field public static final int CLASS_SAT = 1; // 0x1
+    field public static final int CONFIG_DAB_DAB_LINKING = 6; // 0x6
+    field public static final int CONFIG_DAB_DAB_SOFT_LINKING = 8; // 0x8
+    field public static final int CONFIG_DAB_FM_LINKING = 7; // 0x7
+    field public static final int CONFIG_DAB_FM_SOFT_LINKING = 9; // 0x9
+    field public static final int CONFIG_FORCE_ANALOG = 2; // 0x2
+    field public static final int CONFIG_FORCE_DIGITAL = 3; // 0x3
+    field public static final int CONFIG_FORCE_MONO = 1; // 0x1
+    field public static final int CONFIG_RDS_AF = 4; // 0x4
+    field public static final int CONFIG_RDS_REG = 5; // 0x5
+    field public static final int REGION_ITU_1 = 0; // 0x0
+    field public static final int REGION_ITU_2 = 1; // 0x1
+    field public static final int REGION_JAPAN = 3; // 0x3
+    field public static final int REGION_KOREA = 4; // 0x4
+    field public static final int REGION_OIRT = 2; // 0x2
+    field public static final int STATUS_BAD_VALUE = -22; // 0xffffffea
+    field public static final int STATUS_DEAD_OBJECT = -32; // 0xffffffe0
+    field public static final int STATUS_ERROR = -2147483648; // 0x80000000
+    field public static final int STATUS_INVALID_OPERATION = -38; // 0xffffffda
+    field public static final int STATUS_NO_INIT = -19; // 0xffffffed
+    field public static final int STATUS_OK = 0; // 0x0
+    field public static final int STATUS_PERMISSION_DENIED = -1; // 0xffffffff
+    field public static final int STATUS_TIMED_OUT = -110; // 0xffffff92
+  }
+
+  public static class RadioManager.AmBandConfig extends android.hardware.radio.RadioManager.BandConfig {
+    method public boolean getStereo();
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.AmBandConfig> CREATOR;
+  }
+
+  public static class RadioManager.AmBandConfig.Builder {
+    ctor public RadioManager.AmBandConfig.Builder(android.hardware.radio.RadioManager.AmBandDescriptor);
+    ctor public RadioManager.AmBandConfig.Builder(android.hardware.radio.RadioManager.AmBandConfig);
+    method public android.hardware.radio.RadioManager.AmBandConfig build();
+    method public android.hardware.radio.RadioManager.AmBandConfig.Builder setStereo(boolean);
+  }
+
+  public static class RadioManager.AmBandDescriptor extends android.hardware.radio.RadioManager.BandDescriptor {
+    method public boolean isStereoSupported();
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.AmBandDescriptor> CREATOR;
+  }
+
+  @IntDef(prefix={"BAND_"}, value={android.hardware.radio.RadioManager.BAND_INVALID, android.hardware.radio.RadioManager.BAND_AM, android.hardware.radio.RadioManager.BAND_FM, android.hardware.radio.RadioManager.BAND_AM_HD, android.hardware.radio.RadioManager.BAND_FM_HD}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface RadioManager.Band {
+  }
+
+  public static class RadioManager.BandConfig implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getLowerLimit();
+    method public int getRegion();
+    method public int getSpacing();
+    method public int getType();
+    method public int getUpperLimit();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.BandConfig> CREATOR;
+  }
+
+  public static class RadioManager.BandDescriptor implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getLowerLimit();
+    method public int getRegion();
+    method public int getSpacing();
+    method public int getType();
+    method public int getUpperLimit();
+    method public boolean isAmBand();
+    method public boolean isFmBand();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.BandDescriptor> CREATOR;
+  }
+
+  public static class RadioManager.FmBandConfig extends android.hardware.radio.RadioManager.BandConfig {
+    method public boolean getAf();
+    method public boolean getEa();
+    method public boolean getRds();
+    method public boolean getStereo();
+    method public boolean getTa();
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.FmBandConfig> CREATOR;
+  }
+
+  public static class RadioManager.FmBandConfig.Builder {
+    ctor public RadioManager.FmBandConfig.Builder(android.hardware.radio.RadioManager.FmBandDescriptor);
+    ctor public RadioManager.FmBandConfig.Builder(android.hardware.radio.RadioManager.FmBandConfig);
+    method public android.hardware.radio.RadioManager.FmBandConfig build();
+    method public android.hardware.radio.RadioManager.FmBandConfig.Builder setAf(boolean);
+    method public android.hardware.radio.RadioManager.FmBandConfig.Builder setEa(boolean);
+    method public android.hardware.radio.RadioManager.FmBandConfig.Builder setRds(boolean);
+    method public android.hardware.radio.RadioManager.FmBandConfig.Builder setStereo(boolean);
+    method public android.hardware.radio.RadioManager.FmBandConfig.Builder setTa(boolean);
+  }
+
+  public static class RadioManager.FmBandDescriptor extends android.hardware.radio.RadioManager.BandDescriptor {
+    method public boolean isAfSupported();
+    method public boolean isEaSupported();
+    method public boolean isRdsSupported();
+    method public boolean isStereoSupported();
+    method public boolean isTaSupported();
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.FmBandDescriptor> CREATOR;
+  }
+
+  public static class RadioManager.ModuleProperties implements android.os.Parcelable {
+    method public int describeContents();
+    method public android.hardware.radio.RadioManager.BandDescriptor[] getBands();
+    method public int getClassId();
+    method @Nullable public java.util.Map<java.lang.String,java.lang.Integer> getDabFrequencyTable();
+    method public int getId();
+    method public String getImplementor();
+    method public int getNumAudioSources();
+    method public int getNumTuners();
+    method public String getProduct();
+    method public String getSerial();
+    method @NonNull public String getServiceName();
+    method @NonNull public java.util.Map<java.lang.String,java.lang.String> getVendorInfo();
+    method public String getVersion();
+    method public boolean isBackgroundScanningSupported();
+    method public boolean isCaptureSupported();
+    method public boolean isInitializationRequired();
+    method public boolean isProgramIdentifierSupported(@android.hardware.radio.ProgramSelector.IdentifierType int);
+    method public boolean isProgramTypeSupported(@android.hardware.radio.ProgramSelector.ProgramType int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.ModuleProperties> CREATOR;
+  }
+
+  public static class RadioManager.ProgramInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method @Deprecated public int getChannel();
+    method @Nullable public android.hardware.radio.ProgramSelector.Identifier getLogicallyTunedTo();
+    method public android.hardware.radio.RadioMetadata getMetadata();
+    method @Nullable public android.hardware.radio.ProgramSelector.Identifier getPhysicallyTunedTo();
+    method @Nullable public java.util.Collection<android.hardware.radio.ProgramSelector.Identifier> getRelatedContent();
+    method @NonNull public android.hardware.radio.ProgramSelector getSelector();
+    method public int getSignalStrength();
+    method @Deprecated public int getSubChannel();
+    method @NonNull public java.util.Map<java.lang.String,java.lang.String> getVendorInfo();
+    method @Deprecated public boolean isDigital();
+    method public boolean isLive();
+    method public boolean isMuted();
+    method public boolean isStereo();
+    method public boolean isTrafficAnnouncementActive();
+    method public boolean isTrafficProgram();
+    method public boolean isTuned();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.ProgramInfo> CREATOR;
+  }
+
+  public final class RadioMetadata implements android.os.Parcelable {
+    method public boolean containsKey(String);
+    method public int describeContents();
+    method @Deprecated public android.graphics.Bitmap getBitmap(String);
+    method public android.hardware.radio.RadioMetadata.Clock getClock(String);
+    method public int getInt(String);
+    method public String getString(String);
+    method public java.util.Set<java.lang.String> keySet();
+    method public int size();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioMetadata> CREATOR;
+    field public static final String METADATA_KEY_ALBUM = "android.hardware.radio.metadata.ALBUM";
+    field public static final String METADATA_KEY_ART = "android.hardware.radio.metadata.ART";
+    field public static final String METADATA_KEY_ARTIST = "android.hardware.radio.metadata.ARTIST";
+    field public static final String METADATA_KEY_CLOCK = "android.hardware.radio.metadata.CLOCK";
+    field public static final String METADATA_KEY_DAB_COMPONENT_NAME = "android.hardware.radio.metadata.DAB_COMPONENT_NAME";
+    field public static final String METADATA_KEY_DAB_COMPONENT_NAME_SHORT = "android.hardware.radio.metadata.DAB_COMPONENT_NAME_SHORT";
+    field public static final String METADATA_KEY_DAB_ENSEMBLE_NAME = "android.hardware.radio.metadata.DAB_ENSEMBLE_NAME";
+    field public static final String METADATA_KEY_DAB_ENSEMBLE_NAME_SHORT = "android.hardware.radio.metadata.DAB_ENSEMBLE_NAME_SHORT";
+    field public static final String METADATA_KEY_DAB_SERVICE_NAME = "android.hardware.radio.metadata.DAB_SERVICE_NAME";
+    field public static final String METADATA_KEY_DAB_SERVICE_NAME_SHORT = "android.hardware.radio.metadata.DAB_SERVICE_NAME_SHORT";
+    field public static final String METADATA_KEY_GENRE = "android.hardware.radio.metadata.GENRE";
+    field public static final String METADATA_KEY_ICON = "android.hardware.radio.metadata.ICON";
+    field public static final String METADATA_KEY_PROGRAM_NAME = "android.hardware.radio.metadata.PROGRAM_NAME";
+    field public static final String METADATA_KEY_RBDS_PTY = "android.hardware.radio.metadata.RBDS_PTY";
+    field public static final String METADATA_KEY_RDS_PI = "android.hardware.radio.metadata.RDS_PI";
+    field public static final String METADATA_KEY_RDS_PS = "android.hardware.radio.metadata.RDS_PS";
+    field public static final String METADATA_KEY_RDS_PTY = "android.hardware.radio.metadata.RDS_PTY";
+    field public static final String METADATA_KEY_RDS_RT = "android.hardware.radio.metadata.RDS_RT";
+    field public static final String METADATA_KEY_TITLE = "android.hardware.radio.metadata.TITLE";
+  }
+
+  public static final class RadioMetadata.Builder {
+    ctor public RadioMetadata.Builder();
+    ctor public RadioMetadata.Builder(android.hardware.radio.RadioMetadata);
+    method public android.hardware.radio.RadioMetadata build();
+    method public android.hardware.radio.RadioMetadata.Builder putBitmap(String, android.graphics.Bitmap);
+    method public android.hardware.radio.RadioMetadata.Builder putClock(String, long, int);
+    method public android.hardware.radio.RadioMetadata.Builder putInt(String, int);
+    method public android.hardware.radio.RadioMetadata.Builder putString(String, String);
+  }
+
+  public static final class RadioMetadata.Clock implements android.os.Parcelable {
+    ctor public RadioMetadata.Clock(long, int);
+    method public int describeContents();
+    method public int getTimezoneOffsetMinutes();
+    method public long getUtcEpochSeconds();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioMetadata.Clock> CREATOR;
+  }
+
+  public abstract class RadioTuner {
+    ctor public RadioTuner();
+    method public abstract int cancel();
+    method public abstract void cancelAnnouncement();
+    method public abstract void close();
+    method @Deprecated public abstract int getConfiguration(android.hardware.radio.RadioManager.BandConfig[]);
+    method @Nullable public android.hardware.radio.ProgramList getDynamicProgramList(@Nullable android.hardware.radio.ProgramList.Filter);
+    method public abstract boolean getMute();
+    method @NonNull public java.util.Map<java.lang.String,java.lang.String> getParameters(@NonNull java.util.List<java.lang.String>);
+    method @Deprecated public abstract int getProgramInformation(android.hardware.radio.RadioManager.ProgramInfo[]);
+    method @Deprecated @NonNull public abstract java.util.List<android.hardware.radio.RadioManager.ProgramInfo> getProgramList(@Nullable java.util.Map<java.lang.String,java.lang.String>);
+    method public abstract boolean hasControl();
+    method @Deprecated public abstract boolean isAnalogForced();
+    method @Deprecated public abstract boolean isAntennaConnected();
+    method public boolean isConfigFlagSet(int);
+    method public boolean isConfigFlagSupported(int);
+    method public abstract int scan(int, boolean);
+    method @Deprecated public abstract void setAnalogForced(boolean);
+    method public void setConfigFlag(int, boolean);
+    method @Deprecated public abstract int setConfiguration(android.hardware.radio.RadioManager.BandConfig);
+    method public abstract int setMute(boolean);
+    method @NonNull public java.util.Map<java.lang.String,java.lang.String> setParameters(@NonNull java.util.Map<java.lang.String,java.lang.String>);
+    method public abstract boolean startBackgroundScan();
+    method public abstract int step(int, boolean);
+    method @Deprecated public abstract int tune(int, int);
+    method public abstract void tune(@NonNull android.hardware.radio.ProgramSelector);
+    field public static final int DIRECTION_DOWN = 1; // 0x1
+    field public static final int DIRECTION_UP = 0; // 0x0
+    field @Deprecated public static final int ERROR_BACKGROUND_SCAN_FAILED = 6; // 0x6
+    field @Deprecated public static final int ERROR_BACKGROUND_SCAN_UNAVAILABLE = 5; // 0x5
+    field @Deprecated public static final int ERROR_CANCELLED = 2; // 0x2
+    field @Deprecated public static final int ERROR_CONFIG = 4; // 0x4
+    field @Deprecated public static final int ERROR_HARDWARE_FAILURE = 0; // 0x0
+    field @Deprecated public static final int ERROR_SCAN_TIMEOUT = 3; // 0x3
+    field @Deprecated public static final int ERROR_SERVER_DIED = 1; // 0x1
+  }
+
+  public abstract static class RadioTuner.Callback {
+    ctor public RadioTuner.Callback();
+    method public void onAntennaState(boolean);
+    method public void onBackgroundScanAvailabilityChange(boolean);
+    method public void onBackgroundScanComplete();
+    method @Deprecated public void onConfigurationChanged(android.hardware.radio.RadioManager.BandConfig);
+    method public void onControlChanged(boolean);
+    method public void onEmergencyAnnouncement(boolean);
+    method @Deprecated public void onError(int);
+    method @Deprecated public void onMetadataChanged(android.hardware.radio.RadioMetadata);
+    method public void onParametersUpdated(@NonNull java.util.Map<java.lang.String,java.lang.String>);
+    method public void onProgramInfoChanged(android.hardware.radio.RadioManager.ProgramInfo);
+    method public void onProgramListChanged();
+    method public void onTrafficAnnouncement(boolean);
+    method public void onTuneFailed(int, @Nullable android.hardware.radio.ProgramSelector);
+  }
+
+}
+
+package android.hardware.soundtrigger {
+
+  public class SoundTrigger {
+    field public static final int RECOGNITION_MODE_GENERIC = 8; // 0x8
+    field public static final int RECOGNITION_MODE_USER_AUTHENTICATION = 4; // 0x4
+    field public static final int RECOGNITION_MODE_USER_IDENTIFICATION = 2; // 0x2
+    field public static final int RECOGNITION_MODE_VOICE_TRIGGER = 1; // 0x1
+    field public static final int STATUS_OK = 0; // 0x0
+  }
+
+  public static final class SoundTrigger.Keyphrase implements android.os.Parcelable {
+    ctor public SoundTrigger.Keyphrase(int, int, @NonNull java.util.Locale, @NonNull String, @Nullable int[]);
+    method public int getId();
+    method @NonNull public java.util.Locale getLocale();
+    method public int getRecognitionModes();
+    method @NonNull public String getText();
+    method @NonNull public int[] getUsers();
+    method @NonNull public static android.hardware.soundtrigger.SoundTrigger.Keyphrase readFromParcel(@NonNull android.os.Parcel);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.soundtrigger.SoundTrigger.Keyphrase> CREATOR;
+  }
+
+  public static final class SoundTrigger.KeyphraseSoundModel extends android.hardware.soundtrigger.SoundTrigger.SoundModel implements android.os.Parcelable {
+    ctor public SoundTrigger.KeyphraseSoundModel(@NonNull java.util.UUID, @NonNull java.util.UUID, @Nullable byte[], @Nullable android.hardware.soundtrigger.SoundTrigger.Keyphrase[], int);
+    ctor public SoundTrigger.KeyphraseSoundModel(@NonNull java.util.UUID, @NonNull java.util.UUID, @Nullable byte[], @Nullable android.hardware.soundtrigger.SoundTrigger.Keyphrase[]);
+    method @NonNull public android.hardware.soundtrigger.SoundTrigger.Keyphrase[] getKeyphrases();
+    method @NonNull public static android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel readFromParcel(@NonNull android.os.Parcel);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel> CREATOR;
+  }
+
+  public static final class SoundTrigger.ModelParamRange implements android.os.Parcelable {
+    method public int getEnd();
+    method public int getStart();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.soundtrigger.SoundTrigger.ModelParamRange> CREATOR;
+  }
+
+  public static final class SoundTrigger.ModuleProperties implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getAudioCapabilities();
+    method @NonNull public String getDescription();
+    method public int getId();
+    method @NonNull public String getImplementor();
+    method public int getMaxBufferMillis();
+    method public int getMaxKeyphrases();
+    method public int getMaxSoundModels();
+    method public int getMaxUsers();
+    method public int getPowerConsumptionMw();
+    method public int getRecognitionModes();
+    method @NonNull public String getSupportedModelArch();
+    method @NonNull public java.util.UUID getUuid();
+    method public int getVersion();
+    method public boolean isCaptureTransitionSupported();
+    method public boolean isConcurrentCaptureSupported();
+    method public boolean isTriggerReturnedInEvent();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int AUDIO_CAPABILITY_ECHO_CANCELLATION = 1; // 0x1
+    field public static final int AUDIO_CAPABILITY_NOISE_SUPPRESSION = 2; // 0x2
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.soundtrigger.SoundTrigger.ModuleProperties> CREATOR;
+  }
+
+  public static class SoundTrigger.RecognitionEvent {
+    method @Nullable public android.media.AudioFormat getCaptureFormat();
+    method public int getCaptureSession();
+    method public byte[] getData();
+    method public boolean isCaptureAvailable();
+  }
+
+  public static class SoundTrigger.SoundModel {
+    method @NonNull public byte[] getData();
+    method public int getType();
+    method @NonNull public java.util.UUID getUuid();
+    method @NonNull public java.util.UUID getVendorUuid();
+    method public int getVersion();
+    field public static final int TYPE_GENERIC_SOUND = 1; // 0x1
+    field public static final int TYPE_KEYPHRASE = 0; // 0x0
+  }
+
+}
+
+package android.hardware.usb {
+
+  public class UsbDeviceConnection {
+    method public boolean resetDevice();
+  }
+
+  public class UsbManager {
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USB) public long getCurrentFunctions();
+    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_USB) public java.util.List<android.hardware.usb.UsbPort> getPorts();
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USB) public void grantPermission(android.hardware.usb.UsbDevice, String);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USB) public void resetUsbGadget();
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USB) public void setCurrentFunctions(long);
+    field @RequiresPermission(android.Manifest.permission.MANAGE_USB) public static final String ACTION_USB_PORT_CHANGED = "android.hardware.usb.action.USB_PORT_CHANGED";
+    field public static final String ACTION_USB_STATE = "android.hardware.usb.action.USB_STATE";
+    field public static final long FUNCTION_ACCESSORY = 2L; // 0x2L
+    field public static final long FUNCTION_ADB = 1L; // 0x1L
+    field public static final long FUNCTION_AUDIO_SOURCE = 64L; // 0x40L
+    field public static final long FUNCTION_MIDI = 8L; // 0x8L
+    field public static final long FUNCTION_MTP = 4L; // 0x4L
+    field public static final long FUNCTION_NCM = 1024L; // 0x400L
+    field public static final long FUNCTION_NONE = 0L; // 0x0L
+    field public static final long FUNCTION_PTP = 16L; // 0x10L
+    field public static final long FUNCTION_RNDIS = 32L; // 0x20L
+    field public static final String USB_CONFIGURED = "configured";
+    field public static final String USB_CONNECTED = "connected";
+    field public static final String USB_FUNCTION_NCM = "ncm";
+    field public static final String USB_FUNCTION_RNDIS = "rndis";
+  }
+
+  public final class UsbPort {
+    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USB) public android.hardware.usb.UsbPortStatus getStatus();
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USB) public void setRoles(int, int);
+  }
+
+  public final class UsbPortStatus implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getCurrentDataRole();
+    method public int getCurrentMode();
+    method public int getCurrentPowerRole();
+    method public int getSupportedRoleCombinations();
+    method public boolean isConnected();
+    method public boolean isRoleCombinationSupported(int, int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.usb.UsbPortStatus> CREATOR;
+    field public static final int DATA_ROLE_DEVICE = 2; // 0x2
+    field public static final int DATA_ROLE_HOST = 1; // 0x1
+    field public static final int DATA_ROLE_NONE = 0; // 0x0
+    field public static final int MODE_AUDIO_ACCESSORY = 4; // 0x4
+    field public static final int MODE_DEBUG_ACCESSORY = 8; // 0x8
+    field public static final int MODE_DFP = 2; // 0x2
+    field public static final int MODE_NONE = 0; // 0x0
+    field public static final int MODE_UFP = 1; // 0x1
+    field public static final int POWER_ROLE_NONE = 0; // 0x0
+    field public static final int POWER_ROLE_SINK = 2; // 0x2
+    field public static final int POWER_ROLE_SOURCE = 1; // 0x1
+  }
+
+}
+
+package android.location {
+
+  public abstract class BatchedLocationCallback {
+    ctor public BatchedLocationCallback();
+    method public void onLocationBatch(java.util.List<android.location.Location>);
+  }
+
+  public final class GnssCapabilities {
+    method public boolean hasGeofencing();
+    method public boolean hasLowPowerMode();
+    method public boolean hasMeasurementCorrections();
+    method public boolean hasMeasurementCorrectionsExcessPathLength();
+    method public boolean hasMeasurementCorrectionsLosSats();
+    method public boolean hasMeasurementCorrectionsReflectingPane();
+    method public boolean hasMeasurements();
+    method public boolean hasNavMessages();
+    method public boolean hasSatelliteBlacklist();
+  }
+
+  public final class GnssMeasurementCorrections implements android.os.Parcelable {
+    method public int describeContents();
+    method @FloatRange(from=-1000.0F, to=10000.0f) public double getAltitudeMeters();
+    method @FloatRange(from=0.0f, to=360.0f) public float getEnvironmentBearingDegrees();
+    method @FloatRange(from=0.0f, to=180.0f) public float getEnvironmentBearingUncertaintyDegrees();
+    method @FloatRange(from=0.0f) public double getHorizontalPositionUncertaintyMeters();
+    method @FloatRange(from=-90.0F, to=90.0f) public double getLatitudeDegrees();
+    method @FloatRange(from=-180.0F, to=180.0f) public double getLongitudeDegrees();
+    method @NonNull public java.util.List<android.location.GnssSingleSatCorrection> getSingleSatelliteCorrectionList();
+    method @IntRange(from=0) public long getToaGpsNanosecondsOfWeek();
+    method @FloatRange(from=0.0f) public double getVerticalPositionUncertaintyMeters();
+    method public boolean hasEnvironmentBearing();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field public static final android.os.Parcelable.Creator<android.location.GnssMeasurementCorrections> CREATOR;
+  }
+
+  public static final class GnssMeasurementCorrections.Builder {
+    ctor public GnssMeasurementCorrections.Builder();
+    method @NonNull public android.location.GnssMeasurementCorrections build();
+    method @NonNull public android.location.GnssMeasurementCorrections.Builder setAltitudeMeters(@FloatRange(from=-1000.0F, to=10000.0f) double);
+    method @NonNull public android.location.GnssMeasurementCorrections.Builder setEnvironmentBearingDegrees(@FloatRange(from=0.0f, to=360.0f) float);
+    method @NonNull public android.location.GnssMeasurementCorrections.Builder setEnvironmentBearingUncertaintyDegrees(@FloatRange(from=0.0f, to=180.0f) float);
+    method @NonNull public android.location.GnssMeasurementCorrections.Builder setHorizontalPositionUncertaintyMeters(@FloatRange(from=0.0f) double);
+    method @NonNull public android.location.GnssMeasurementCorrections.Builder setLatitudeDegrees(@FloatRange(from=-90.0F, to=90.0f) double);
+    method @NonNull public android.location.GnssMeasurementCorrections.Builder setLongitudeDegrees(@FloatRange(from=-180.0F, to=180.0f) double);
+    method @NonNull public android.location.GnssMeasurementCorrections.Builder setSingleSatelliteCorrectionList(@NonNull java.util.List<android.location.GnssSingleSatCorrection>);
+    method @NonNull public android.location.GnssMeasurementCorrections.Builder setToaGpsNanosecondsOfWeek(@IntRange(from=0) long);
+    method @NonNull public android.location.GnssMeasurementCorrections.Builder setVerticalPositionUncertaintyMeters(@FloatRange(from=0.0f) double);
+  }
+
+  public final class GnssReflectingPlane implements android.os.Parcelable {
+    method public int describeContents();
+    method @FloatRange(from=-1000.0F, to=10000.0f) public double getAltitudeMeters();
+    method @FloatRange(from=0.0f, to=360.0f) public double getAzimuthDegrees();
+    method @FloatRange(from=-90.0F, to=90.0f) public double getLatitudeDegrees();
+    method @FloatRange(from=-180.0F, to=180.0f) public double getLongitudeDegrees();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field public static final android.os.Parcelable.Creator<android.location.GnssReflectingPlane> CREATOR;
+  }
+
+  public static final class GnssReflectingPlane.Builder {
+    ctor public GnssReflectingPlane.Builder();
+    method @NonNull public android.location.GnssReflectingPlane build();
+    method @NonNull public android.location.GnssReflectingPlane.Builder setAltitudeMeters(@FloatRange(from=-1000.0F, to=10000.0f) double);
+    method @NonNull public android.location.GnssReflectingPlane.Builder setAzimuthDegrees(@FloatRange(from=0.0f, to=360.0f) double);
+    method @NonNull public android.location.GnssReflectingPlane.Builder setLatitudeDegrees(@FloatRange(from=-90.0F, to=90.0f) double);
+    method @NonNull public android.location.GnssReflectingPlane.Builder setLongitudeDegrees(@FloatRange(from=-180.0F, to=180.0f) double);
+  }
+
+  public final class GnssRequest implements android.os.Parcelable {
+    method public int describeContents();
+    method public boolean isFullTracking();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssRequest> CREATOR;
+  }
+
+  public static final class GnssRequest.Builder {
+    ctor public GnssRequest.Builder();
+    ctor public GnssRequest.Builder(@NonNull android.location.GnssRequest);
+    method @NonNull public android.location.GnssRequest build();
+    method @NonNull public android.location.GnssRequest.Builder setFullTracking(boolean);
+  }
+
+  public final class GnssSingleSatCorrection implements android.os.Parcelable {
+    method public int describeContents();
+    method @FloatRange(from=0.0f, fromInclusive=false) public float getCarrierFrequencyHz();
+    method public int getConstellationType();
+    method @FloatRange(from=0.0f) public float getExcessPathLengthMeters();
+    method @FloatRange(from=0.0f) public float getExcessPathLengthUncertaintyMeters();
+    method @FloatRange(from=0.0f, to=1.0f) public float getProbabilityLineOfSight();
+    method @Nullable public android.location.GnssReflectingPlane getReflectingPlane();
+    method @IntRange(from=0) public int getSatelliteId();
+    method public boolean hasExcessPathLength();
+    method public boolean hasExcessPathLengthUncertainty();
+    method public boolean hasReflectingPlane();
+    method public boolean hasValidSatelliteLineOfSight();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field public static final android.os.Parcelable.Creator<android.location.GnssSingleSatCorrection> CREATOR;
+  }
+
+  public static final class GnssSingleSatCorrection.Builder {
+    ctor public GnssSingleSatCorrection.Builder();
+    method @NonNull public android.location.GnssSingleSatCorrection build();
+    method @NonNull public android.location.GnssSingleSatCorrection.Builder setCarrierFrequencyHz(@FloatRange(from=0.0f, fromInclusive=false) float);
+    method @NonNull public android.location.GnssSingleSatCorrection.Builder setConstellationType(int);
+    method @NonNull public android.location.GnssSingleSatCorrection.Builder setExcessPathLengthMeters(@FloatRange(from=0.0f) float);
+    method @NonNull public android.location.GnssSingleSatCorrection.Builder setExcessPathLengthUncertaintyMeters(@FloatRange(from=0.0f) float);
+    method @NonNull public android.location.GnssSingleSatCorrection.Builder setProbabilityLineOfSight(@FloatRange(from=0.0f, to=1.0f) float);
+    method @NonNull public android.location.GnssSingleSatCorrection.Builder setReflectingPlane(@Nullable android.location.GnssReflectingPlane);
+    method @NonNull public android.location.GnssSingleSatCorrection.Builder setSatelliteId(@IntRange(from=0) int);
+  }
+
+  @Deprecated public class GpsClock implements android.os.Parcelable {
+    method @Deprecated public int describeContents();
+    method @Deprecated public double getBiasInNs();
+    method @Deprecated public double getBiasUncertaintyInNs();
+    method @Deprecated public double getDriftInNsPerSec();
+    method @Deprecated public double getDriftUncertaintyInNsPerSec();
+    method @Deprecated public long getFullBiasInNs();
+    method @Deprecated public short getLeapSecond();
+    method @Deprecated public long getTimeInNs();
+    method @Deprecated public double getTimeUncertaintyInNs();
+    method @Deprecated public byte getType();
+    method @Deprecated public boolean hasBiasInNs();
+    method @Deprecated public boolean hasBiasUncertaintyInNs();
+    method @Deprecated public boolean hasDriftInNsPerSec();
+    method @Deprecated public boolean hasDriftUncertaintyInNsPerSec();
+    method @Deprecated public boolean hasFullBiasInNs();
+    method @Deprecated public boolean hasLeapSecond();
+    method @Deprecated public boolean hasTimeUncertaintyInNs();
+    method @Deprecated public void reset();
+    method @Deprecated public void resetBiasInNs();
+    method @Deprecated public void resetBiasUncertaintyInNs();
+    method @Deprecated public void resetDriftInNsPerSec();
+    method @Deprecated public void resetDriftUncertaintyInNsPerSec();
+    method @Deprecated public void resetFullBiasInNs();
+    method @Deprecated public void resetLeapSecond();
+    method @Deprecated public void resetTimeUncertaintyInNs();
+    method @Deprecated public void set(android.location.GpsClock);
+    method @Deprecated public void setBiasInNs(double);
+    method @Deprecated public void setBiasUncertaintyInNs(double);
+    method @Deprecated public void setDriftInNsPerSec(double);
+    method @Deprecated public void setDriftUncertaintyInNsPerSec(double);
+    method @Deprecated public void setFullBiasInNs(long);
+    method @Deprecated public void setLeapSecond(short);
+    method @Deprecated public void setTimeInNs(long);
+    method @Deprecated public void setTimeUncertaintyInNs(double);
+    method @Deprecated public void setType(byte);
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.location.GpsClock> CREATOR;
+    field @Deprecated public static final byte TYPE_GPS_TIME = 2; // 0x2
+    field @Deprecated public static final byte TYPE_LOCAL_HW_TIME = 1; // 0x1
+    field @Deprecated public static final byte TYPE_UNKNOWN = 0; // 0x0
+  }
+
+  @Deprecated public class GpsMeasurement implements android.os.Parcelable {
+    method @Deprecated public int describeContents();
+    method @Deprecated public double getAccumulatedDeltaRangeInMeters();
+    method @Deprecated public short getAccumulatedDeltaRangeState();
+    method @Deprecated public double getAccumulatedDeltaRangeUncertaintyInMeters();
+    method @Deprecated public double getAzimuthInDeg();
+    method @Deprecated public double getAzimuthUncertaintyInDeg();
+    method @Deprecated public int getBitNumber();
+    method @Deprecated public long getCarrierCycles();
+    method @Deprecated public float getCarrierFrequencyInHz();
+    method @Deprecated public double getCarrierPhase();
+    method @Deprecated public double getCarrierPhaseUncertainty();
+    method @Deprecated public double getCn0InDbHz();
+    method @Deprecated public double getCodePhaseInChips();
+    method @Deprecated public double getCodePhaseUncertaintyInChips();
+    method @Deprecated public double getDopplerShiftInHz();
+    method @Deprecated public double getDopplerShiftUncertaintyInHz();
+    method @Deprecated public double getElevationInDeg();
+    method @Deprecated public double getElevationUncertaintyInDeg();
+    method @Deprecated public byte getLossOfLock();
+    method @Deprecated public byte getMultipathIndicator();
+    method @Deprecated public byte getPrn();
+    method @Deprecated public double getPseudorangeInMeters();
+    method @Deprecated public double getPseudorangeRateInMetersPerSec();
+    method @Deprecated public double getPseudorangeRateUncertaintyInMetersPerSec();
+    method @Deprecated public double getPseudorangeUncertaintyInMeters();
+    method @Deprecated public long getReceivedGpsTowInNs();
+    method @Deprecated public long getReceivedGpsTowUncertaintyInNs();
+    method @Deprecated public double getSnrInDb();
+    method @Deprecated public short getState();
+    method @Deprecated public short getTimeFromLastBitInMs();
+    method @Deprecated public double getTimeOffsetInNs();
+    method @Deprecated public boolean hasAzimuthInDeg();
+    method @Deprecated public boolean hasAzimuthUncertaintyInDeg();
+    method @Deprecated public boolean hasBitNumber();
+    method @Deprecated public boolean hasCarrierCycles();
+    method @Deprecated public boolean hasCarrierFrequencyInHz();
+    method @Deprecated public boolean hasCarrierPhase();
+    method @Deprecated public boolean hasCarrierPhaseUncertainty();
+    method @Deprecated public boolean hasCodePhaseInChips();
+    method @Deprecated public boolean hasCodePhaseUncertaintyInChips();
+    method @Deprecated public boolean hasDopplerShiftInHz();
+    method @Deprecated public boolean hasDopplerShiftUncertaintyInHz();
+    method @Deprecated public boolean hasElevationInDeg();
+    method @Deprecated public boolean hasElevationUncertaintyInDeg();
+    method @Deprecated public boolean hasPseudorangeInMeters();
+    method @Deprecated public boolean hasPseudorangeUncertaintyInMeters();
+    method @Deprecated public boolean hasSnrInDb();
+    method @Deprecated public boolean hasTimeFromLastBitInMs();
+    method @Deprecated public boolean isPseudorangeRateCorrected();
+    method @Deprecated public boolean isUsedInFix();
+    method @Deprecated public void reset();
+    method @Deprecated public void resetAzimuthInDeg();
+    method @Deprecated public void resetAzimuthUncertaintyInDeg();
+    method @Deprecated public void resetBitNumber();
+    method @Deprecated public void resetCarrierCycles();
+    method @Deprecated public void resetCarrierFrequencyInHz();
+    method @Deprecated public void resetCarrierPhase();
+    method @Deprecated public void resetCarrierPhaseUncertainty();
+    method @Deprecated public void resetCodePhaseInChips();
+    method @Deprecated public void resetCodePhaseUncertaintyInChips();
+    method @Deprecated public void resetDopplerShiftInHz();
+    method @Deprecated public void resetDopplerShiftUncertaintyInHz();
+    method @Deprecated public void resetElevationInDeg();
+    method @Deprecated public void resetElevationUncertaintyInDeg();
+    method @Deprecated public void resetPseudorangeInMeters();
+    method @Deprecated public void resetPseudorangeUncertaintyInMeters();
+    method @Deprecated public void resetSnrInDb();
+    method @Deprecated public void resetTimeFromLastBitInMs();
+    method @Deprecated public void set(android.location.GpsMeasurement);
+    method @Deprecated public void setAccumulatedDeltaRangeInMeters(double);
+    method @Deprecated public void setAccumulatedDeltaRangeState(short);
+    method @Deprecated public void setAccumulatedDeltaRangeUncertaintyInMeters(double);
+    method @Deprecated public void setAzimuthInDeg(double);
+    method @Deprecated public void setAzimuthUncertaintyInDeg(double);
+    method @Deprecated public void setBitNumber(int);
+    method @Deprecated public void setCarrierCycles(long);
+    method @Deprecated public void setCarrierFrequencyInHz(float);
+    method @Deprecated public void setCarrierPhase(double);
+    method @Deprecated public void setCarrierPhaseUncertainty(double);
+    method @Deprecated public void setCn0InDbHz(double);
+    method @Deprecated public void setCodePhaseInChips(double);
+    method @Deprecated public void setCodePhaseUncertaintyInChips(double);
+    method @Deprecated public void setDopplerShiftInHz(double);
+    method @Deprecated public void setDopplerShiftUncertaintyInHz(double);
+    method @Deprecated public void setElevationInDeg(double);
+    method @Deprecated public void setElevationUncertaintyInDeg(double);
+    method @Deprecated public void setLossOfLock(byte);
+    method @Deprecated public void setMultipathIndicator(byte);
+    method @Deprecated public void setPrn(byte);
+    method @Deprecated public void setPseudorangeInMeters(double);
+    method @Deprecated public void setPseudorangeRateInMetersPerSec(double);
+    method @Deprecated public void setPseudorangeRateUncertaintyInMetersPerSec(double);
+    method @Deprecated public void setPseudorangeUncertaintyInMeters(double);
+    method @Deprecated public void setReceivedGpsTowInNs(long);
+    method @Deprecated public void setReceivedGpsTowUncertaintyInNs(long);
+    method @Deprecated public void setSnrInDb(double);
+    method @Deprecated public void setState(short);
+    method @Deprecated public void setTimeFromLastBitInMs(short);
+    method @Deprecated public void setTimeOffsetInNs(double);
+    method @Deprecated public void setUsedInFix(boolean);
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated public static final short ADR_STATE_CYCLE_SLIP = 4; // 0x4
+    field @Deprecated public static final short ADR_STATE_RESET = 2; // 0x2
+    field @Deprecated public static final short ADR_STATE_UNKNOWN = 0; // 0x0
+    field @Deprecated public static final short ADR_STATE_VALID = 1; // 0x1
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.location.GpsMeasurement> CREATOR;
+    field @Deprecated public static final byte LOSS_OF_LOCK_CYCLE_SLIP = 2; // 0x2
+    field @Deprecated public static final byte LOSS_OF_LOCK_OK = 1; // 0x1
+    field @Deprecated public static final byte LOSS_OF_LOCK_UNKNOWN = 0; // 0x0
+    field @Deprecated public static final byte MULTIPATH_INDICATOR_DETECTED = 1; // 0x1
+    field @Deprecated public static final byte MULTIPATH_INDICATOR_NOT_USED = 2; // 0x2
+    field @Deprecated public static final byte MULTIPATH_INDICATOR_UNKNOWN = 0; // 0x0
+    field @Deprecated public static final short STATE_BIT_SYNC = 2; // 0x2
+    field @Deprecated public static final short STATE_CODE_LOCK = 1; // 0x1
+    field @Deprecated public static final short STATE_MSEC_AMBIGUOUS = 16; // 0x10
+    field @Deprecated public static final short STATE_SUBFRAME_SYNC = 4; // 0x4
+    field @Deprecated public static final short STATE_TOW_DECODED = 8; // 0x8
+    field @Deprecated public static final short STATE_UNKNOWN = 0; // 0x0
+  }
+
+  @Deprecated public class GpsMeasurementsEvent implements android.os.Parcelable {
+    ctor @Deprecated public GpsMeasurementsEvent(android.location.GpsClock, android.location.GpsMeasurement[]);
+    method @Deprecated public int describeContents();
+    method @Deprecated @NonNull public android.location.GpsClock getClock();
+    method @Deprecated @NonNull public java.util.Collection<android.location.GpsMeasurement> getMeasurements();
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.location.GpsMeasurementsEvent> CREATOR;
+    field @Deprecated public static final int STATUS_GPS_LOCATION_DISABLED = 2; // 0x2
+    field @Deprecated public static final int STATUS_NOT_SUPPORTED = 0; // 0x0
+    field @Deprecated public static final int STATUS_READY = 1; // 0x1
+  }
+
+  @Deprecated public static interface GpsMeasurementsEvent.Listener {
+    method @Deprecated public void onGpsMeasurementsReceived(android.location.GpsMeasurementsEvent);
+    method @Deprecated public void onStatusChanged(int);
+  }
+
+  @Deprecated public class GpsNavigationMessage implements android.os.Parcelable {
+    method @Deprecated public int describeContents();
+    method @Deprecated @NonNull public byte[] getData();
+    method @Deprecated public short getMessageId();
+    method @Deprecated public byte getPrn();
+    method @Deprecated public short getStatus();
+    method @Deprecated public short getSubmessageId();
+    method @Deprecated public byte getType();
+    method @Deprecated public void reset();
+    method @Deprecated public void set(android.location.GpsNavigationMessage);
+    method @Deprecated public void setData(byte[]);
+    method @Deprecated public void setMessageId(short);
+    method @Deprecated public void setPrn(byte);
+    method @Deprecated public void setStatus(short);
+    method @Deprecated public void setSubmessageId(short);
+    method @Deprecated public void setType(byte);
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.location.GpsNavigationMessage> CREATOR;
+    field @Deprecated public static final short STATUS_PARITY_PASSED = 1; // 0x1
+    field @Deprecated public static final short STATUS_PARITY_REBUILT = 2; // 0x2
+    field @Deprecated public static final short STATUS_UNKNOWN = 0; // 0x0
+    field @Deprecated public static final byte TYPE_CNAV2 = 4; // 0x4
+    field @Deprecated public static final byte TYPE_L1CA = 1; // 0x1
+    field @Deprecated public static final byte TYPE_L2CNAV = 2; // 0x2
+    field @Deprecated public static final byte TYPE_L5CNAV = 3; // 0x3
+    field @Deprecated public static final byte TYPE_UNKNOWN = 0; // 0x0
+  }
+
+  @Deprecated public class GpsNavigationMessageEvent implements android.os.Parcelable {
+    ctor @Deprecated public GpsNavigationMessageEvent(android.location.GpsNavigationMessage);
+    method @Deprecated public int describeContents();
+    method @Deprecated @NonNull public android.location.GpsNavigationMessage getNavigationMessage();
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.location.GpsNavigationMessageEvent> CREATOR;
+    field @Deprecated public static int STATUS_GPS_LOCATION_DISABLED;
+    field @Deprecated public static int STATUS_NOT_SUPPORTED;
+    field @Deprecated public static int STATUS_READY;
+  }
+
+  @Deprecated public static interface GpsNavigationMessageEvent.Listener {
+    method @Deprecated public void onGpsNavigationMessageReceived(android.location.GpsNavigationMessageEvent);
+    method @Deprecated public void onStatusChanged(int);
+  }
+
+  public class Location implements android.os.Parcelable {
+    method public boolean isComplete();
+    method public void makeComplete();
+    method public void setIsFromMockProvider(boolean);
+    field @Deprecated public static final String EXTRA_NO_GPS_LOCATION = "noGPSLocation";
+  }
+
+  public class LocationManager {
+    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void flushGnssBatch();
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void getCurrentLocation(@NonNull android.location.LocationRequest, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.location.Location>);
+    method @Nullable public String getExtraLocationControllerPackage();
+    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public int getGnssBatchSize();
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public void injectGnssMeasurementCorrections(@NonNull android.location.GnssMeasurementCorrections);
+    method public boolean isExtraLocationControllerPackageEnabled();
+    method public boolean isLocationEnabledForUser(@NonNull android.os.UserHandle);
+    method public boolean isProviderEnabledForUser(@NonNull String, @NonNull android.os.UserHandle);
+    method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public boolean isProviderPackage(@NonNull String);
+    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean registerGnssBatchedLocationCallback(long, boolean, @NonNull android.location.BatchedLocationCallback, @Nullable android.os.Handler);
+    method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.LOCATION_HARDWARE}) public boolean registerGnssMeasurementsCallback(@NonNull android.location.GnssRequest, @NonNull java.util.concurrent.Executor, @NonNull android.location.GnssMeasurementsEvent.Callback);
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@Nullable android.location.LocationRequest, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@Nullable android.location.LocationRequest, @NonNull java.util.concurrent.Executor, @NonNull android.location.LocationListener);
+    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@Nullable android.location.LocationRequest, @NonNull android.app.PendingIntent);
+    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void setExtraLocationControllerPackage(@Nullable String);
+    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void setExtraLocationControllerPackageEnabled(boolean);
+    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void setLocationEnabledForUser(boolean, @NonNull android.os.UserHandle);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean setProviderEnabledForUser(@NonNull String, boolean, @NonNull android.os.UserHandle);
+    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean unregisterGnssBatchedLocationCallback(@NonNull android.location.BatchedLocationCallback);
+  }
+
+  public final class LocationRequest implements android.os.Parcelable {
+    method @NonNull public static android.location.LocationRequest create();
+    method @NonNull public static android.location.LocationRequest createFromDeprecatedCriteria(@NonNull android.location.Criteria, long, float, boolean);
+    method @NonNull public static android.location.LocationRequest createFromDeprecatedProvider(@NonNull String, long, float, boolean);
+    method public int describeContents();
+    method @Deprecated public long getExpireAt();
+    method public long getExpireIn();
+    method public long getFastestInterval();
+    method public boolean getHideFromAppOps();
+    method public long getInterval();
+    method public int getNumUpdates();
+    method @NonNull public String getProvider();
+    method public int getQuality();
+    method public float getSmallestDisplacement();
+    method @Nullable public android.os.WorkSource getWorkSource();
+    method public boolean isLocationSettingsIgnored();
+    method public boolean isLowPowerMode();
+    method @Deprecated @NonNull public android.location.LocationRequest setExpireAt(long);
+    method @NonNull public android.location.LocationRequest setExpireIn(long);
+    method @NonNull public android.location.LocationRequest setFastestInterval(long);
+    method public void setHideFromAppOps(boolean);
+    method @NonNull public android.location.LocationRequest setInterval(long);
+    method @NonNull @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public android.location.LocationRequest setLocationSettingsIgnored(boolean);
+    method @NonNull public android.location.LocationRequest setLowPowerMode(boolean);
+    method @NonNull public android.location.LocationRequest setNumUpdates(int);
+    method @NonNull public android.location.LocationRequest setProvider(@NonNull String);
+    method @NonNull public android.location.LocationRequest setQuality(int);
+    method @NonNull public android.location.LocationRequest setSmallestDisplacement(float);
+    method public void setWorkSource(@Nullable android.os.WorkSource);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int ACCURACY_BLOCK = 102; // 0x66
+    field public static final int ACCURACY_CITY = 104; // 0x68
+    field public static final int ACCURACY_FINE = 100; // 0x64
+    field @NonNull public static final android.os.Parcelable.Creator<android.location.LocationRequest> CREATOR;
+    field public static final int POWER_HIGH = 203; // 0xcb
+    field public static final int POWER_LOW = 201; // 0xc9
+    field public static final int POWER_NONE = 200; // 0xc8
+  }
+
+}
+
+package android.media {
+
+  public final class AudioAttributes implements android.os.Parcelable {
+    method public int getAllFlags();
+    method public android.os.Bundle getBundle();
+    method public int getCapturePreset();
+    method public int getSystemUsage();
+    method public static boolean isSystemUsage(int);
+    field public static final int FLAG_BEACON = 8; // 0x8
+    field public static final int FLAG_BYPASS_INTERRUPTION_POLICY = 64; // 0x40
+    field public static final int FLAG_BYPASS_MUTE = 128; // 0x80
+    field public static final int FLAG_HW_HOTWORD = 32; // 0x20
+    field @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static final int USAGE_ANNOUNCEMENT = 1003; // 0x3eb
+    field @RequiresPermission(allOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.MODIFY_AUDIO_ROUTING}) public static final int USAGE_CALL_ASSISTANT = 17; // 0x11
+    field @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static final int USAGE_EMERGENCY = 1000; // 0x3e8
+    field @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static final int USAGE_SAFETY = 1001; // 0x3e9
+    field @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static final int USAGE_VEHICLE_STATUS = 1002; // 0x3ea
+  }
+
+  public static class AudioAttributes.Builder {
+    method public android.media.AudioAttributes.Builder addBundle(@NonNull android.os.Bundle);
+    method public android.media.AudioAttributes.Builder setCapturePreset(int);
+    method public android.media.AudioAttributes.Builder setInternalCapturePreset(int);
+    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public android.media.AudioAttributes.Builder setSystemUsage(int);
+  }
+
+  public final class AudioDeviceAttributes implements android.os.Parcelable {
+    ctor public AudioDeviceAttributes(@NonNull android.media.AudioDeviceInfo);
+    ctor public AudioDeviceAttributes(int, int, @NonNull String);
+    method public int describeContents();
+    method @NonNull public String getAddress();
+    method public int getRole();
+    method public int getType();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.AudioDeviceAttributes> CREATOR;
+    field public static final int ROLE_INPUT = 1; // 0x1
+    field public static final int ROLE_OUTPUT = 2; // 0x2
+  }
+
+  public final class AudioDeviceInfo {
+    field public static final int TYPE_REMOTE_SUBMIX = 25; // 0x19
+  }
+
+  public final class AudioFocusInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public android.media.AudioAttributes getAttributes();
+    method @NonNull public String getClientId();
+    method public int getClientUid();
+    method public int getFlags();
+    method public int getGainRequest();
+    method public int getLossReceived();
+    method @NonNull public String getPackageName();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.AudioFocusInfo> CREATOR;
+  }
+
+  public final class AudioFocusRequest {
+    method public boolean locksFocus();
+  }
+
+  public static final class AudioFocusRequest.Builder {
+    method @NonNull public android.media.AudioFocusRequest.Builder setLocksFocus(boolean);
+  }
+
+  public class AudioManager {
+    method @Deprecated public int abandonAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, android.media.AudioAttributes);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void addOnPreferredDeviceForStrategyChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.OnPreferredDeviceForStrategyChangedListener) throws java.lang.SecurityException;
+    method public void clearAudioServerStateCallback();
+    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int dispatchAudioFocusChange(@NonNull android.media.AudioFocusInfo, int, @NonNull android.media.audiopolicy.AudioPolicy);
+    method @IntRange(from=0) public long getAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo);
+    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static java.util.List<android.media.audiopolicy.AudioProductStrategy> getAudioProductStrategies();
+    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static java.util.List<android.media.audiopolicy.AudioVolumeGroup> getAudioVolumeGroups();
+    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public java.util.List<android.media.AudioDeviceAttributes> getDevicesForAttributes(@NonNull android.media.AudioAttributes);
+    method @IntRange(from=0) public long getMaxAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo);
+    method @IntRange(from=0) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getMaxVolumeIndexForAttributes(@NonNull android.media.AudioAttributes);
+    method @IntRange(from=0) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getMinVolumeIndexForAttributes(@NonNull android.media.AudioAttributes);
+    method @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public android.media.AudioDeviceAttributes getPreferredDeviceForStrategy(@NonNull android.media.audiopolicy.AudioProductStrategy);
+    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int[] getSupportedSystemUsages();
+    method @IntRange(from=0) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getVolumeIndexForAttributes(@NonNull android.media.AudioAttributes);
+    method public boolean isAudioServerRunning();
+    method public boolean isHdmiSystemAudioSupported();
+    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int registerAudioPolicy(@NonNull android.media.audiopolicy.AudioPolicy);
+    method public void registerVolumeGroupCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.VolumeGroupCallback);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void removeOnPreferredDeviceForStrategyChangedListener(@NonNull android.media.AudioManager.OnPreferredDeviceForStrategyChangedListener);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean removePreferredDeviceForStrategy(@NonNull android.media.audiopolicy.AudioProductStrategy);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, @NonNull android.media.AudioAttributes, int, int) throws java.lang.IllegalArgumentException;
+    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.MODIFY_AUDIO_ROUTING}) public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, @NonNull android.media.AudioAttributes, int, int, android.media.audiopolicy.AudioPolicy) throws java.lang.IllegalArgumentException;
+    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int requestAudioFocus(@NonNull android.media.AudioFocusRequest, @Nullable android.media.audiopolicy.AudioPolicy);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean setAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo, @IntRange(from=0) long);
+    method public void setAudioServerStateCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.AudioServerStateCallback);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setFocusRequestResult(@NonNull android.media.AudioFocusInfo, int, @NonNull android.media.audiopolicy.AudioPolicy);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean setPreferredDeviceForStrategy(@NonNull android.media.audiopolicy.AudioProductStrategy, @NonNull android.media.AudioDeviceAttributes);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setSupportedSystemUsages(@NonNull int[]);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setVolumeIndexForAttributes(@NonNull android.media.AudioAttributes, int, int);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void unregisterAudioPolicy(@NonNull android.media.audiopolicy.AudioPolicy);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void unregisterAudioPolicyAsync(@NonNull android.media.audiopolicy.AudioPolicy);
+    method public void unregisterVolumeGroupCallback(@NonNull android.media.AudioManager.VolumeGroupCallback);
+    field public static final int AUDIOFOCUS_FLAG_DELAY_OK = 1; // 0x1
+    field public static final int AUDIOFOCUS_FLAG_LOCK = 4; // 0x4
+    field public static final int AUDIOFOCUS_FLAG_PAUSES_ON_DUCKABLE_LOSS = 2; // 0x2
+    field @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static final int STREAM_ASSISTANT = 11; // 0xb
+    field public static final int SUCCESS = 0; // 0x0
+  }
+
+  public abstract static class AudioManager.AudioServerStateCallback {
+    ctor public AudioManager.AudioServerStateCallback();
+    method public void onAudioServerDown();
+    method public void onAudioServerUp();
+  }
+
+  public static interface AudioManager.OnPreferredDeviceForStrategyChangedListener {
+    method public void onPreferredDeviceForStrategyChanged(@NonNull android.media.audiopolicy.AudioProductStrategy, @Nullable android.media.AudioDeviceAttributes);
+  }
+
+  public abstract static class AudioManager.VolumeGroupCallback {
+    ctor public AudioManager.VolumeGroupCallback();
+    method public void onAudioVolumeGroupChanged(int, int);
+  }
+
+  public final class AudioPlaybackConfiguration implements android.os.Parcelable {
+    method public int getClientPid();
+    method public int getClientUid();
+    method public int getPlayerInterfaceId();
+    method public android.media.PlayerProxy getPlayerProxy();
+    method public int getPlayerState();
+    method public int getPlayerType();
+    method public boolean isActive();
+    field public static final int PLAYER_STATE_IDLE = 1; // 0x1
+    field public static final int PLAYER_STATE_PAUSED = 3; // 0x3
+    field public static final int PLAYER_STATE_RELEASED = 0; // 0x0
+    field public static final int PLAYER_STATE_STARTED = 2; // 0x2
+    field public static final int PLAYER_STATE_STOPPED = 4; // 0x4
+    field public static final int PLAYER_STATE_UNKNOWN = -1; // 0xffffffff
+    field public static final int PLAYER_TYPE_JAM_AUDIOTRACK = 1; // 0x1
+    field public static final int PLAYER_TYPE_JAM_MEDIAPLAYER = 2; // 0x2
+    field public static final int PLAYER_TYPE_JAM_SOUNDPOOL = 3; // 0x3
+    field public static final int PLAYER_TYPE_SLES_AUDIOPLAYER_BUFFERQUEUE = 11; // 0xb
+    field public static final int PLAYER_TYPE_SLES_AUDIOPLAYER_URI_FD = 12; // 0xc
+    field public static final int PLAYER_TYPE_UNKNOWN = -1; // 0xffffffff
+  }
+
+  public class AudioRecord implements android.media.AudioRecordingMonitor android.media.AudioRouting android.media.MicrophoneDirection {
+    ctor public AudioRecord(android.media.AudioAttributes, android.media.AudioFormat, int, int) throws java.lang.IllegalArgumentException;
+  }
+
+  public static class AudioRecord.Builder {
+    method public android.media.AudioRecord.Builder setAudioAttributes(@NonNull android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
+    method public android.media.AudioRecord.Builder setSessionId(int) throws java.lang.IllegalArgumentException;
+  }
+
+  public final class AudioRecordingConfiguration implements android.os.Parcelable {
+    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getClientUid();
+  }
+
+  public class AudioTrack implements android.media.AudioRouting android.media.VolumeAutomation {
+    field @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static final int ENCAPSULATION_MODE_HANDLE = 2; // 0x2
+  }
+
+  public static class AudioTrack.Builder {
+    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public android.media.AudioTrack.Builder setTunerConfiguration(@NonNull android.media.AudioTrack.TunerConfiguration);
+  }
+
+  public static class AudioTrack.TunerConfiguration {
+    ctor @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public AudioTrack.TunerConfiguration(@IntRange(from=1) int, @IntRange(from=1) int);
+    method @IntRange(from=1) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getContentId();
+    method @IntRange(from=1) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getSyncId();
+  }
+
+  public class HwAudioSource {
+    method public boolean isPlaying();
+    method public void start();
+    method public void stop();
+  }
+
+  public static final class HwAudioSource.Builder {
+    ctor public HwAudioSource.Builder();
+    method @NonNull public android.media.HwAudioSource build();
+    method @NonNull public android.media.HwAudioSource.Builder setAudioAttributes(@NonNull android.media.AudioAttributes);
+    method @NonNull public android.media.HwAudioSource.Builder setAudioDeviceInfo(@NonNull android.media.AudioDeviceInfo);
+  }
+
+  public final class MediaRecorder.AudioSource {
+    field @RequiresPermission(android.Manifest.permission.CAPTURE_AUDIO_OUTPUT) public static final int ECHO_REFERENCE = 1997; // 0x7cd
+    field @RequiresPermission(android.Manifest.permission.CAPTURE_AUDIO_HOTWORD) public static final int HOTWORD = 1999; // 0x7cf
+    field @RequiresPermission(android.Manifest.permission.CAPTURE_AUDIO_OUTPUT) public static final int RADIO_TUNER = 1998; // 0x7ce
+  }
+
+  public class PlayerProxy {
+    method public void pause();
+    method public void setPan(float);
+    method public void setStartDelayMs(int);
+    method public void setVolume(float);
+    method public void start();
+    method public void stop();
+  }
+
+  public class RingtoneManager {
+    method @RequiresPermission(android.Manifest.permission.WRITE_SETTINGS) public static void ensureDefaultRingtones(@NonNull android.content.Context);
+  }
+
+}
+
+package android.media.audiofx {
+
+  public class AudioEffect {
+    ctor @RequiresPermission("android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS") public AudioEffect(@NonNull java.util.UUID, @NonNull android.media.AudioDeviceAttributes);
+    method @RequiresPermission("android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS") public static boolean isEffectSupportedForDevice(@NonNull java.util.UUID, @NonNull android.media.AudioDeviceAttributes);
+  }
+
+}
+
+package android.media.audiopolicy {
+
+  public class AudioMix {
+    method public int getMixState();
+    field public static final int MIX_STATE_DISABLED = -1; // 0xffffffff
+    field public static final int MIX_STATE_IDLE = 0; // 0x0
+    field public static final int MIX_STATE_MIXING = 1; // 0x1
+    field public static final int ROUTE_FLAG_LOOP_BACK = 2; // 0x2
+    field public static final int ROUTE_FLAG_RENDER = 1; // 0x1
+  }
+
+  public static class AudioMix.Builder {
+    ctor public AudioMix.Builder(android.media.audiopolicy.AudioMixingRule) throws java.lang.IllegalArgumentException;
+    method public android.media.audiopolicy.AudioMix build() throws java.lang.IllegalArgumentException;
+    method public android.media.audiopolicy.AudioMix.Builder setDevice(@NonNull android.media.AudioDeviceInfo) throws java.lang.IllegalArgumentException;
+    method public android.media.audiopolicy.AudioMix.Builder setFormat(android.media.AudioFormat) throws java.lang.IllegalArgumentException;
+    method public android.media.audiopolicy.AudioMix.Builder setRouteFlags(int) throws java.lang.IllegalArgumentException;
+  }
+
+  public class AudioMixingRule {
+    field public static final int RULE_MATCH_ATTRIBUTE_CAPTURE_PRESET = 2; // 0x2
+    field public static final int RULE_MATCH_ATTRIBUTE_USAGE = 1; // 0x1
+    field public static final int RULE_MATCH_UID = 4; // 0x4
+    field public static final int RULE_MATCH_USERID = 8; // 0x8
+  }
+
+  public static class AudioMixingRule.Builder {
+    ctor public AudioMixingRule.Builder();
+    method public android.media.audiopolicy.AudioMixingRule.Builder addMixRule(int, Object) throws java.lang.IllegalArgumentException;
+    method public android.media.audiopolicy.AudioMixingRule.Builder addRule(android.media.AudioAttributes, int) throws java.lang.IllegalArgumentException;
+    method @NonNull public android.media.audiopolicy.AudioMixingRule.Builder allowPrivilegedPlaybackCapture(boolean);
+    method public android.media.audiopolicy.AudioMixingRule build();
+    method public android.media.audiopolicy.AudioMixingRule.Builder excludeMixRule(int, Object) throws java.lang.IllegalArgumentException;
+    method public android.media.audiopolicy.AudioMixingRule.Builder excludeRule(android.media.AudioAttributes, int) throws java.lang.IllegalArgumentException;
+  }
+
+  public class AudioPolicy {
+    method public int attachMixes(@NonNull java.util.List<android.media.audiopolicy.AudioMix>);
+    method public android.media.AudioRecord createAudioRecordSink(android.media.audiopolicy.AudioMix) throws java.lang.IllegalArgumentException;
+    method public android.media.AudioTrack createAudioTrackSource(android.media.audiopolicy.AudioMix) throws java.lang.IllegalArgumentException;
+    method public int detachMixes(@NonNull java.util.List<android.media.audiopolicy.AudioMix>);
+    method public int getFocusDuckingBehavior();
+    method public int getStatus();
+    method public boolean removeUidDeviceAffinity(int);
+    method public boolean removeUserIdDeviceAffinity(int);
+    method public int setFocusDuckingBehavior(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
+    method public void setRegistration(String);
+    method public boolean setUidDeviceAffinity(int, @NonNull java.util.List<android.media.AudioDeviceInfo>);
+    method public boolean setUserIdDeviceAffinity(int, @NonNull java.util.List<android.media.AudioDeviceInfo>);
+    method public String toLogFriendlyString();
+    field public static final int FOCUS_POLICY_DUCKING_DEFAULT = 0; // 0x0
+    field public static final int FOCUS_POLICY_DUCKING_IN_APP = 0; // 0x0
+    field public static final int FOCUS_POLICY_DUCKING_IN_POLICY = 1; // 0x1
+    field public static final int POLICY_STATUS_REGISTERED = 2; // 0x2
+    field public static final int POLICY_STATUS_UNREGISTERED = 1; // 0x1
+  }
+
+  public abstract static class AudioPolicy.AudioPolicyFocusListener {
+    ctor public AudioPolicy.AudioPolicyFocusListener();
+    method public void onAudioFocusAbandon(android.media.AudioFocusInfo);
+    method public void onAudioFocusGrant(android.media.AudioFocusInfo, int);
+    method public void onAudioFocusLoss(android.media.AudioFocusInfo, boolean);
+    method public void onAudioFocusRequest(android.media.AudioFocusInfo, int);
+  }
+
+  public abstract static class AudioPolicy.AudioPolicyStatusListener {
+    ctor public AudioPolicy.AudioPolicyStatusListener();
+    method public void onMixStateUpdate(android.media.audiopolicy.AudioMix);
+    method public void onStatusChange();
+  }
+
+  public abstract static class AudioPolicy.AudioPolicyVolumeCallback {
+    ctor public AudioPolicy.AudioPolicyVolumeCallback();
+    method public void onVolumeAdjustment(int);
+  }
+
+  public static class AudioPolicy.Builder {
+    ctor public AudioPolicy.Builder(android.content.Context);
+    method @NonNull public android.media.audiopolicy.AudioPolicy.Builder addMix(@NonNull android.media.audiopolicy.AudioMix) throws java.lang.IllegalArgumentException;
+    method @NonNull public android.media.audiopolicy.AudioPolicy build();
+    method public void setAudioPolicyFocusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyFocusListener);
+    method public void setAudioPolicyStatusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyStatusListener);
+    method @NonNull public android.media.audiopolicy.AudioPolicy.Builder setAudioPolicyVolumeCallback(@NonNull android.media.audiopolicy.AudioPolicy.AudioPolicyVolumeCallback);
+    method @NonNull public android.media.audiopolicy.AudioPolicy.Builder setIsAudioFocusPolicy(boolean);
+    method @NonNull public android.media.audiopolicy.AudioPolicy.Builder setLooper(@NonNull android.os.Looper) throws java.lang.IllegalArgumentException;
+  }
+
+  public final class AudioProductStrategy implements android.os.Parcelable {
+    method @NonNull public static android.media.audiopolicy.AudioProductStrategy createInvalidAudioProductStrategy(int);
+    method public int describeContents();
+    method @NonNull public android.media.AudioAttributes getAudioAttributes();
+    method public int getId();
+    method public boolean supportsAudioAttributes(@NonNull android.media.AudioAttributes);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.audiopolicy.AudioProductStrategy> CREATOR;
+  }
+
+  public final class AudioVolumeGroup implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public java.util.List<android.media.AudioAttributes> getAudioAttributes();
+    method public int getId();
+    method @NonNull public int[] getLegacyStreamTypes();
+    method @NonNull public String name();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field public static final android.os.Parcelable.Creator<android.media.audiopolicy.AudioVolumeGroup> CREATOR;
+    field public static final int DEFAULT_VOLUME_GROUP = -1; // 0xffffffff
+  }
+
+}
+
+package android.media.session {
+
+  public final class MediaSessionManager {
+    method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void addOnMediaKeyEventDispatchedListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.session.MediaSessionManager.OnMediaKeyEventDispatchedListener);
+    method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void addOnMediaKeyEventSessionChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.session.MediaSessionManager.OnMediaKeyEventSessionChangedListener);
+    method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void removeOnMediaKeyEventDispatchedListener(@NonNull android.media.session.MediaSessionManager.OnMediaKeyEventDispatchedListener);
+    method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void removeOnMediaKeyEventSessionChangedListener(@NonNull android.media.session.MediaSessionManager.OnMediaKeyEventSessionChangedListener);
+    method @RequiresPermission(android.Manifest.permission.SET_MEDIA_KEY_LISTENER) public void setOnMediaKeyListener(android.media.session.MediaSessionManager.OnMediaKeyListener, @Nullable android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER) public void setOnVolumeKeyLongPressListener(android.media.session.MediaSessionManager.OnVolumeKeyLongPressListener, @Nullable android.os.Handler);
+  }
+
+  public static interface MediaSessionManager.OnMediaKeyEventDispatchedListener {
+    method public void onMediaKeyEventDispatched(@NonNull android.view.KeyEvent, @NonNull String, @Nullable android.media.session.MediaSession.Token);
+  }
+
+  public static interface MediaSessionManager.OnMediaKeyEventSessionChangedListener {
+    method public void onMediaKeyEventSessionChanged(@NonNull String, @Nullable android.media.session.MediaSession.Token);
+  }
+
+  public static interface MediaSessionManager.OnMediaKeyListener {
+    method public boolean onMediaKey(android.view.KeyEvent);
+  }
+
+  public static interface MediaSessionManager.OnVolumeKeyLongPressListener {
+    method public void onVolumeKeyLongPress(android.view.KeyEvent);
+  }
+
+}
+
+package android.media.soundtrigger {
+
+  public abstract class SoundTriggerDetectionService extends android.app.Service {
+    ctor public SoundTriggerDetectionService();
+    method @MainThread public void onConnected(@NonNull java.util.UUID, @Nullable android.os.Bundle);
+    method @MainThread public void onDisconnected(@NonNull java.util.UUID, @Nullable android.os.Bundle);
+    method @MainThread public void onError(@NonNull java.util.UUID, @Nullable android.os.Bundle, int, int);
+    method @MainThread public void onGenericRecognitionEvent(@NonNull java.util.UUID, @Nullable android.os.Bundle, int, @NonNull android.hardware.soundtrigger.SoundTrigger.RecognitionEvent);
+    method @MainThread public abstract void onStopOperation(@NonNull java.util.UUID, @Nullable android.os.Bundle, int);
+    method public final void operationFinished(@Nullable java.util.UUID, int);
+  }
+
+  public final class SoundTriggerDetector {
+    method @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public boolean startRecognition(int);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public boolean stopRecognition();
+    field public static final int RECOGNITION_FLAG_ALLOW_MULTIPLE_TRIGGERS = 2; // 0x2
+    field public static final int RECOGNITION_FLAG_CAPTURE_TRIGGER_AUDIO = 1; // 0x1
+    field public static final int RECOGNITION_FLAG_ENABLE_AUDIO_ECHO_CANCELLATION = 4; // 0x4
+    field public static final int RECOGNITION_FLAG_ENABLE_AUDIO_NOISE_SUPPRESSION = 8; // 0x8
+  }
+
+  public abstract static class SoundTriggerDetector.Callback {
+    ctor public SoundTriggerDetector.Callback();
+    method public abstract void onAvailabilityChanged(int);
+    method public abstract void onDetected(@NonNull android.media.soundtrigger.SoundTriggerDetector.EventPayload);
+    method public abstract void onError();
+    method public abstract void onRecognitionPaused();
+    method public abstract void onRecognitionResumed();
+  }
+
+  public static class SoundTriggerDetector.EventPayload {
+    method @Nullable public android.media.AudioFormat getCaptureAudioFormat();
+    method @Nullable public byte[] getTriggerAudio();
+  }
+
+  public final class SoundTriggerManager {
+    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public android.media.soundtrigger.SoundTriggerDetector createSoundTriggerDetector(java.util.UUID, @NonNull android.media.soundtrigger.SoundTriggerDetector.Callback, @Nullable android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public void deleteModel(java.util.UUID);
+    method public int getDetectionServiceOperationsTimeout();
+    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public android.media.soundtrigger.SoundTriggerManager.Model getModel(java.util.UUID);
+    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public android.hardware.soundtrigger.SoundTrigger.ModuleProperties getModuleProperties();
+    method @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public int getParameter(@NonNull java.util.UUID, int);
+    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public android.hardware.soundtrigger.SoundTrigger.ModelParamRange queryParameter(@Nullable java.util.UUID, int);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public int setParameter(@Nullable java.util.UUID, int, int);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public void updateModel(android.media.soundtrigger.SoundTriggerManager.Model);
+  }
+
+  public static class SoundTriggerManager.Model {
+    method @NonNull public static android.media.soundtrigger.SoundTriggerManager.Model create(@NonNull java.util.UUID, @NonNull java.util.UUID, @Nullable byte[], int);
+    method @NonNull public static android.media.soundtrigger.SoundTriggerManager.Model create(@NonNull java.util.UUID, @NonNull java.util.UUID, @Nullable byte[]);
+    method @Nullable public byte[] getModelData();
+    method @NonNull public java.util.UUID getModelUuid();
+    method @NonNull public java.util.UUID getVendorUuid();
+    method public int getVersion();
+  }
+
+}
+
+package android.media.tv {
+
+  public final class DvbDeviceInfo implements android.os.Parcelable {
+    ctor public DvbDeviceInfo(int, int);
+    method public int describeContents();
+    method @IntRange(from=0) public int getAdapterId();
+    method @IntRange(from=0) public int getDeviceId();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.DvbDeviceInfo> CREATOR;
+  }
+
+  public final class TvContentRatingSystemInfo implements android.os.Parcelable {
+    method public static android.media.tv.TvContentRatingSystemInfo createTvContentRatingSystemInfo(int, android.content.pm.ApplicationInfo);
+    method public int describeContents();
+    method public android.net.Uri getXmlUri();
+    method public boolean isSystemDefined();
+    method public void writeToParcel(android.os.Parcel, int);
+  }
+
+  public final class TvContract {
+    method public static android.net.Uri buildChannelsUriForInput(@Nullable String, boolean);
+    method public static android.net.Uri buildChannelsUriForInput(@Nullable String, @Nullable String, boolean);
+    field public static final String ACTION_CHANNEL_BROWSABLE_REQUESTED = "android.media.tv.action.CHANNEL_BROWSABLE_REQUESTED";
+    field public static final String EXTRA_BLOCKED_PACKAGES = "android.media.tv.extra.BLOCKED_PACKAGES";
+    field public static final String EXTRA_COLUMN_NAME = "android.media.tv.extra.COLUMN_NAME";
+    field public static final String EXTRA_DATA_TYPE = "android.media.tv.extra.DATA_TYPE";
+    field public static final String EXTRA_DEFAULT_VALUE = "android.media.tv.extra.DEFAULT_VALUE";
+    field public static final String EXTRA_EXISTING_COLUMN_NAMES = "android.media.tv.extra.EXISTING_COLUMN_NAMES";
+    field public static final String EXTRA_PACKAGE_NAME = "android.media.tv.extra.PACKAGE_NAME";
+    field public static final String EXTRA_RESULT_CODE = "android.media.tv.extra.RESULT_CODE";
+    field public static final String METHOD_ADD_COLUMN = "add_column";
+    field public static final String METHOD_BLOCK_PACKAGE = "block_package";
+    field public static final String METHOD_GET_BLOCKED_PACKAGES = "get_blocked_packages";
+    field public static final String METHOD_GET_COLUMNS = "get_columns";
+    field public static final String METHOD_UNBLOCK_PACKAGE = "unblock_package";
+    field public static final int RESULT_ERROR_INVALID_ARGUMENT = 2; // 0x2
+    field public static final int RESULT_ERROR_IO = 1; // 0x1
+    field public static final int RESULT_OK = 0; // 0x0
+  }
+
+  public static final class TvContract.WatchedPrograms implements android.media.tv.TvContract.BaseTvColumns {
+    field public static final String COLUMN_CHANNEL_ID = "channel_id";
+    field public static final String COLUMN_DESCRIPTION = "description";
+    field public static final String COLUMN_END_TIME_UTC_MILLIS = "end_time_utc_millis";
+    field public static final String COLUMN_INTERNAL_SESSION_TOKEN = "session_token";
+    field public static final String COLUMN_INTERNAL_TUNE_PARAMS = "tune_params";
+    field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
+    field public static final String COLUMN_TITLE = "title";
+    field public static final String COLUMN_WATCH_END_TIME_UTC_MILLIS = "watch_end_time_utc_millis";
+    field public static final String COLUMN_WATCH_START_TIME_UTC_MILLIS = "watch_start_time_utc_millis";
+    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/watched_program";
+    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/watched_program";
+    field public static final android.net.Uri CONTENT_URI;
+  }
+
+  public final class TvInputHardwareInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public String getAudioAddress();
+    method public int getAudioType();
+    method public int getCableConnectionStatus();
+    method public int getDeviceId();
+    method public int getHdmiPortId();
+    method public int getType();
+    method public void readFromParcel(android.os.Parcel);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int CABLE_CONNECTION_STATUS_CONNECTED = 1; // 0x1
+    field public static final int CABLE_CONNECTION_STATUS_DISCONNECTED = 2; // 0x2
+    field public static final int CABLE_CONNECTION_STATUS_UNKNOWN = 0; // 0x0
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.TvInputHardwareInfo> CREATOR;
+    field public static final int TV_INPUT_TYPE_COMPONENT = 6; // 0x6
+    field public static final int TV_INPUT_TYPE_COMPOSITE = 3; // 0x3
+    field public static final int TV_INPUT_TYPE_DISPLAY_PORT = 10; // 0xa
+    field public static final int TV_INPUT_TYPE_DVI = 8; // 0x8
+    field public static final int TV_INPUT_TYPE_HDMI = 9; // 0x9
+    field public static final int TV_INPUT_TYPE_OTHER_HARDWARE = 1; // 0x1
+    field public static final int TV_INPUT_TYPE_SCART = 5; // 0x5
+    field public static final int TV_INPUT_TYPE_SVIDEO = 4; // 0x4
+    field public static final int TV_INPUT_TYPE_TUNER = 2; // 0x2
+    field public static final int TV_INPUT_TYPE_VGA = 7; // 0x7
+  }
+
+  public static final class TvInputHardwareInfo.Builder {
+    ctor public TvInputHardwareInfo.Builder();
+    method public android.media.tv.TvInputHardwareInfo.Builder audioAddress(String);
+    method public android.media.tv.TvInputHardwareInfo.Builder audioType(int);
+    method public android.media.tv.TvInputHardwareInfo build();
+    method public android.media.tv.TvInputHardwareInfo.Builder cableConnectionStatus(int);
+    method public android.media.tv.TvInputHardwareInfo.Builder deviceId(int);
+    method public android.media.tv.TvInputHardwareInfo.Builder hdmiPortId(int);
+    method public android.media.tv.TvInputHardwareInfo.Builder type(int);
+  }
+
+  public final class TvInputInfo implements android.os.Parcelable {
+    method @Deprecated public static android.media.tv.TvInputInfo createTvInputInfo(android.content.Context, android.content.pm.ResolveInfo, android.hardware.hdmi.HdmiDeviceInfo, String, String, android.net.Uri) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method @Deprecated public static android.media.tv.TvInputInfo createTvInputInfo(android.content.Context, android.content.pm.ResolveInfo, android.hardware.hdmi.HdmiDeviceInfo, String, int, android.graphics.drawable.Icon) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method @Deprecated public static android.media.tv.TvInputInfo createTvInputInfo(android.content.Context, android.content.pm.ResolveInfo, android.media.tv.TvInputHardwareInfo, String, android.net.Uri) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method @Deprecated public static android.media.tv.TvInputInfo createTvInputInfo(android.content.Context, android.content.pm.ResolveInfo, android.media.tv.TvInputHardwareInfo, int, android.graphics.drawable.Icon) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method public android.hardware.hdmi.HdmiDeviceInfo getHdmiDeviceInfo();
+    method public boolean isConnectedToHdmiSwitch();
+    method public boolean isHardwareInput();
+    method public android.graphics.drawable.Drawable loadIcon(@NonNull android.content.Context, int);
+  }
+
+  public static final class TvInputInfo.Builder {
+    method public android.media.tv.TvInputInfo.Builder setHdmiDeviceInfo(android.hardware.hdmi.HdmiDeviceInfo);
+    method public android.media.tv.TvInputInfo.Builder setIcon(android.graphics.drawable.Icon);
+    method public android.media.tv.TvInputInfo.Builder setIcon(android.graphics.drawable.Icon, int);
+    method public android.media.tv.TvInputInfo.Builder setLabel(CharSequence);
+    method public android.media.tv.TvInputInfo.Builder setLabel(@StringRes int);
+    method public android.media.tv.TvInputInfo.Builder setParentId(String);
+    method public android.media.tv.TvInputInfo.Builder setTvInputHardwareInfo(android.media.tv.TvInputHardwareInfo);
+  }
+
+  public static final class TvInputInfo.TvInputSettings {
+    method public static java.util.Map<java.lang.String,java.lang.String> getCustomLabels(android.content.Context, int);
+    method public static java.util.Set<java.lang.String> getHiddenTvInputIds(android.content.Context, int);
+    method public static void putCustomLabels(android.content.Context, java.util.Map<java.lang.String,java.lang.String>, int);
+    method public static void putHiddenTvInputs(android.content.Context, java.util.Set<java.lang.String>, int);
+  }
+
+  public final class TvInputManager {
+    method @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public android.media.tv.TvInputManager.Hardware acquireTvInputHardware(int, @NonNull android.media.tv.TvInputInfo, @NonNull android.media.tv.TvInputManager.HardwareCallback);
+    method @Nullable @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public android.media.tv.TvInputManager.Hardware acquireTvInputHardware(int, @NonNull android.media.tv.TvInputInfo, @Nullable String, int, @NonNull java.util.concurrent.Executor, @NonNull android.media.tv.TvInputManager.HardwareCallback);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void addBlockedRating(@NonNull android.media.tv.TvContentRating);
+    method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public boolean captureFrame(String, android.view.Surface, android.media.tv.TvStreamConfig);
+    method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public java.util.List<android.media.tv.TvStreamConfig> getAvailableTvStreamConfigList(String);
+    method @NonNull @RequiresPermission("android.permission.DVB_DEVICE") public java.util.List<android.media.tv.DvbDeviceInfo> getDvbDeviceList();
+    method @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public java.util.List<android.media.tv.TvInputHardwareInfo> getHardwareList();
+    method @RequiresPermission(android.Manifest.permission.READ_CONTENT_RATING_SYSTEMS) public java.util.List<android.media.tv.TvContentRatingSystemInfo> getTvContentRatingSystemList();
+    method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public boolean isSingleSessionActive();
+    method @RequiresPermission(android.Manifest.permission.NOTIFY_TV_INPUTS) public void notifyPreviewProgramAddedToWatchNext(String, long, long);
+    method @RequiresPermission(android.Manifest.permission.NOTIFY_TV_INPUTS) public void notifyPreviewProgramBrowsableDisabled(String, long);
+    method @RequiresPermission(android.Manifest.permission.NOTIFY_TV_INPUTS) public void notifyWatchNextProgramBrowsableDisabled(String, long);
+    method @Nullable @RequiresPermission("android.permission.DVB_DEVICE") public android.os.ParcelFileDescriptor openDvbDevice(@NonNull android.media.tv.DvbDeviceInfo, int);
+    method @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public void releaseTvInputHardware(int, android.media.tv.TvInputManager.Hardware);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void removeBlockedRating(@NonNull android.media.tv.TvContentRating);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void setParentalControlsEnabled(boolean);
+  }
+
+  public static final class TvInputManager.Hardware {
+    method public void overrideAudioSink(int, String, int, int, int);
+    method public void setStreamVolume(float);
+    method public boolean setSurface(android.view.Surface, android.media.tv.TvStreamConfig);
+  }
+
+  public abstract static class TvInputManager.HardwareCallback {
+    ctor public TvInputManager.HardwareCallback();
+    method public abstract void onReleased();
+    method public abstract void onStreamConfigChanged(android.media.tv.TvStreamConfig[]);
+  }
+
+  public abstract class TvInputService extends android.app.Service {
+    method @Nullable public android.media.tv.TvInputInfo onHardwareAdded(android.media.tv.TvInputHardwareInfo);
+    method @Nullable public String onHardwareRemoved(android.media.tv.TvInputHardwareInfo);
+    method @Nullable public android.media.tv.TvInputInfo onHdmiDeviceAdded(android.hardware.hdmi.HdmiDeviceInfo);
+    method @Nullable public String onHdmiDeviceRemoved(android.hardware.hdmi.HdmiDeviceInfo);
+    method public void onHdmiDeviceUpdated(@NonNull android.hardware.hdmi.HdmiDeviceInfo);
+  }
+
+  public abstract static class TvInputService.RecordingSession {
+    method public void notifySessionEvent(@NonNull String, android.os.Bundle);
+  }
+
+  public abstract static class TvInputService.Session implements android.view.KeyEvent.Callback {
+    method public void notifySessionEvent(@NonNull String, android.os.Bundle);
+    method public void onSetMain(boolean);
+  }
+
+  public abstract static class TvRecordingClient.RecordingCallback {
+    method public void onEvent(String, String, android.os.Bundle);
+  }
+
+  public class TvStreamConfig implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getGeneration();
+    method public int getMaxHeight();
+    method public int getMaxWidth();
+    method public int getStreamId();
+    method public int getType();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.TvStreamConfig> CREATOR;
+    field public static final int STREAM_TYPE_BUFFER_PRODUCER = 2; // 0x2
+    field public static final int STREAM_TYPE_INDEPENDENT_VIDEO_SOURCE = 1; // 0x1
+  }
+
+  public static final class TvStreamConfig.Builder {
+    ctor public TvStreamConfig.Builder();
+    method public android.media.tv.TvStreamConfig build();
+    method public android.media.tv.TvStreamConfig.Builder generation(int);
+    method public android.media.tv.TvStreamConfig.Builder maxHeight(int);
+    method public android.media.tv.TvStreamConfig.Builder maxWidth(int);
+    method public android.media.tv.TvStreamConfig.Builder streamId(int);
+    method public android.media.tv.TvStreamConfig.Builder type(int);
+  }
+
+  public class TvView extends android.view.ViewGroup {
+    method @RequiresPermission("android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE") public void setMain();
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void unblockContent(android.media.tv.TvContentRating);
+  }
+
+  public abstract static class TvView.TvInputCallback {
+    method public void onEvent(String, String, android.os.Bundle);
+  }
+
+}
+
+package android.media.tv.tuner {
+
+  public class DemuxCapabilities {
+    method public int getAudioFilterCount();
+    method public int getDemuxCount();
+    method public int getFilterCapabilities();
+    method @NonNull @Size(5) public int[] getLinkCapabilities();
+    method public int getPcrFilterCount();
+    method public int getPesFilterCount();
+    method public int getPlaybackCount();
+    method public int getRecordCount();
+    method public int getSectionFilterCount();
+    method public long getSectionFilterLength();
+    method public int getTsFilterCount();
+    method public int getVideoFilterCount();
+    method public boolean isTimeFilterSupported();
+  }
+
+  public class Descrambler implements java.lang.AutoCloseable {
+    method public int addPid(int, int, @Nullable android.media.tv.tuner.filter.Filter);
+    method public void close();
+    method public int removePid(int, int, @Nullable android.media.tv.tuner.filter.Filter);
+    method public int setKeyToken(@NonNull byte[]);
+    field public static final int PID_TYPE_MMTP = 2; // 0x2
+    field public static final int PID_TYPE_T = 1; // 0x1
+  }
+
+  public class Lnb implements java.lang.AutoCloseable {
+    method public void close();
+    method public int sendDiseqcMessage(@NonNull byte[]);
+    method public int setSatellitePosition(int);
+    method public int setTone(int);
+    method public int setVoltage(int);
+    field public static final int EVENT_TYPE_DISEQC_RX_OVERFLOW = 0; // 0x0
+    field public static final int EVENT_TYPE_DISEQC_RX_PARITY_ERROR = 2; // 0x2
+    field public static final int EVENT_TYPE_DISEQC_RX_TIMEOUT = 1; // 0x1
+    field public static final int EVENT_TYPE_LNB_OVERLOAD = 3; // 0x3
+    field public static final int POSITION_A = 1; // 0x1
+    field public static final int POSITION_B = 2; // 0x2
+    field public static final int POSITION_UNDEFINED = 0; // 0x0
+    field public static final int TONE_CONTINUOUS = 1; // 0x1
+    field public static final int TONE_NONE = 0; // 0x0
+    field public static final int VOLTAGE_11V = 2; // 0x2
+    field public static final int VOLTAGE_12V = 3; // 0x3
+    field public static final int VOLTAGE_13V = 4; // 0x4
+    field public static final int VOLTAGE_14V = 5; // 0x5
+    field public static final int VOLTAGE_15V = 6; // 0x6
+    field public static final int VOLTAGE_18V = 7; // 0x7
+    field public static final int VOLTAGE_19V = 8; // 0x8
+    field public static final int VOLTAGE_5V = 1; // 0x1
+    field public static final int VOLTAGE_NONE = 0; // 0x0
+  }
+
+  public interface LnbCallback {
+    method public void onDiseqcMessage(@NonNull byte[]);
+    method public void onEvent(int);
+  }
+
+  public class Tuner implements java.lang.AutoCloseable {
+    ctor @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public Tuner(@NonNull android.content.Context, @Nullable String, int);
+    method public int cancelScanning();
+    method public int cancelTuning();
+    method public void clearOnTuneEventListener();
+    method public void clearResourceLostListener();
+    method public void close();
+    method public int connectCiCam(int);
+    method public int disconnectCiCam();
+    method public int getAvSyncHwId(@NonNull android.media.tv.tuner.filter.Filter);
+    method public long getAvSyncTime(int);
+    method @Nullable public android.media.tv.tuner.DemuxCapabilities getDemuxCapabilities();
+    method @Nullable public android.media.tv.tuner.frontend.FrontendInfo getFrontendInfo();
+    method @Nullable public android.media.tv.tuner.frontend.FrontendStatus getFrontendStatus(@NonNull int[]);
+    method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_DESCRAMBLER) public android.media.tv.tuner.Descrambler openDescrambler();
+    method @Nullable public android.media.tv.tuner.dvr.DvrPlayback openDvrPlayback(long, @NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.dvr.OnPlaybackStatusChangedListener);
+    method @Nullable public android.media.tv.tuner.dvr.DvrRecorder openDvrRecorder(long, @NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.dvr.OnRecordStatusChangedListener);
+    method @Nullable public android.media.tv.tuner.filter.Filter openFilter(int, int, long, @Nullable java.util.concurrent.Executor, @Nullable android.media.tv.tuner.filter.FilterCallback);
+    method @Nullable public android.media.tv.tuner.Lnb openLnb(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.LnbCallback);
+    method @Nullable public android.media.tv.tuner.Lnb openLnbByName(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.LnbCallback);
+    method @Nullable public android.media.tv.tuner.filter.TimeFilter openTimeFilter();
+    method public int scan(@NonNull android.media.tv.tuner.frontend.FrontendSettings, int, @NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.frontend.ScanCallback);
+    method public int setLnaEnabled(boolean);
+    method public void setOnTuneEventListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.frontend.OnTuneEventListener);
+    method public void setResourceLostListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.Tuner.OnResourceLostListener);
+    method public void shareFrontendFromTuner(@NonNull android.media.tv.tuner.Tuner);
+    method public int tune(@NonNull android.media.tv.tuner.frontend.FrontendSettings);
+    method public void updateResourcePriority(int, int);
+    field public static final int INVALID_AV_SYNC_ID = -1; // 0xffffffff
+    field public static final int INVALID_FILTER_ID = -1; // 0xffffffff
+    field public static final int INVALID_STREAM_ID = 65535; // 0xffff
+    field public static final long INVALID_TIMESTAMP = -1L; // 0xffffffffffffffffL
+    field public static final int INVALID_TS_PID = 65535; // 0xffff
+    field public static final int RESULT_INVALID_ARGUMENT = 4; // 0x4
+    field public static final int RESULT_INVALID_STATE = 3; // 0x3
+    field public static final int RESULT_NOT_INITIALIZED = 2; // 0x2
+    field public static final int RESULT_OUT_OF_MEMORY = 5; // 0x5
+    field public static final int RESULT_SUCCESS = 0; // 0x0
+    field public static final int RESULT_UNAVAILABLE = 1; // 0x1
+    field public static final int RESULT_UNKNOWN_ERROR = 6; // 0x6
+    field public static final int SCAN_TYPE_AUTO = 1; // 0x1
+    field public static final int SCAN_TYPE_BLIND = 2; // 0x2
+    field public static final int SCAN_TYPE_UNDEFINED = 0; // 0x0
+  }
+
+  public static interface Tuner.OnResourceLostListener {
+    method public void onResourceLost(@NonNull android.media.tv.tuner.Tuner);
+  }
+
+}
+
+package android.media.tv.tuner.dvr {
+
+  public class DvrPlayback implements java.lang.AutoCloseable {
+    method public int attachFilter(@NonNull android.media.tv.tuner.filter.Filter);
+    method public void close();
+    method public int configure(@NonNull android.media.tv.tuner.dvr.DvrSettings);
+    method public int detachFilter(@NonNull android.media.tv.tuner.filter.Filter);
+    method public int flush();
+    method public long read(long);
+    method public long read(@NonNull byte[], long, long);
+    method public void setFileDescriptor(@NonNull android.os.ParcelFileDescriptor);
+    method public int start();
+    method public int stop();
+    field public static final int PLAYBACK_STATUS_ALMOST_EMPTY = 2; // 0x2
+    field public static final int PLAYBACK_STATUS_ALMOST_FULL = 4; // 0x4
+    field public static final int PLAYBACK_STATUS_EMPTY = 1; // 0x1
+    field public static final int PLAYBACK_STATUS_FULL = 8; // 0x8
+  }
+
+  public class DvrRecorder implements java.lang.AutoCloseable {
+    method public int attachFilter(@NonNull android.media.tv.tuner.filter.Filter);
+    method public void close();
+    method public int configure(@NonNull android.media.tv.tuner.dvr.DvrSettings);
+    method public int detachFilter(@NonNull android.media.tv.tuner.filter.Filter);
+    method public int flush();
+    method public void setFileDescriptor(@NonNull android.os.ParcelFileDescriptor);
+    method public int start();
+    method public int stop();
+    method public long write(long);
+    method public long write(@NonNull byte[], long, long);
+  }
+
+  public class DvrSettings {
+    method @NonNull public static android.media.tv.tuner.dvr.DvrSettings.Builder builder();
+    method public int getDataFormat();
+    method public long getHighThreshold();
+    method public long getLowThreshold();
+    method public long getPacketSize();
+    method public int getStatusMask();
+    field public static final int DATA_FORMAT_ES = 2; // 0x2
+    field public static final int DATA_FORMAT_PES = 1; // 0x1
+    field public static final int DATA_FORMAT_SHV_TLV = 3; // 0x3
+    field public static final int DATA_FORMAT_TS = 0; // 0x0
+  }
+
+  public static final class DvrSettings.Builder {
+    ctor public DvrSettings.Builder();
+    method @NonNull public android.media.tv.tuner.dvr.DvrSettings build();
+    method @NonNull public android.media.tv.tuner.dvr.DvrSettings.Builder setDataFormat(int);
+    method @NonNull public android.media.tv.tuner.dvr.DvrSettings.Builder setHighThreshold(long);
+    method @NonNull public android.media.tv.tuner.dvr.DvrSettings.Builder setLowThreshold(long);
+    method @NonNull public android.media.tv.tuner.dvr.DvrSettings.Builder setPacketSize(long);
+    method @NonNull public android.media.tv.tuner.dvr.DvrSettings.Builder setStatusMask(int);
+  }
+
+  public interface OnPlaybackStatusChangedListener {
+    method public void onPlaybackStatusChanged(int);
+  }
+
+  public interface OnRecordStatusChangedListener {
+    method public void onRecordStatusChanged(int);
+  }
+
+}
+
+package android.media.tv.tuner.filter {
+
+  public final class AlpFilterConfiguration extends android.media.tv.tuner.filter.FilterConfiguration {
+    method @NonNull public static android.media.tv.tuner.filter.AlpFilterConfiguration.Builder builder();
+    method public int getLengthType();
+    method public int getPacketType();
+    method public int getType();
+    field public static final int LENGTH_TYPE_UNDEFINED = 0; // 0x0
+    field public static final int LENGTH_TYPE_WITHOUT_ADDITIONAL_HEADER = 1; // 0x1
+    field public static final int LENGTH_TYPE_WITH_ADDITIONAL_HEADER = 2; // 0x2
+    field public static final int PACKET_TYPE_COMPRESSED = 2; // 0x2
+    field public static final int PACKET_TYPE_EXTENSION = 6; // 0x6
+    field public static final int PACKET_TYPE_IPV4 = 0; // 0x0
+    field public static final int PACKET_TYPE_MPEG2_TS = 7; // 0x7
+    field public static final int PACKET_TYPE_SIGNALING = 4; // 0x4
+  }
+
+  public static final class AlpFilterConfiguration.Builder {
+    method @NonNull public android.media.tv.tuner.filter.AlpFilterConfiguration build();
+    method @NonNull public android.media.tv.tuner.filter.AlpFilterConfiguration.Builder setLengthType(int);
+    method @NonNull public android.media.tv.tuner.filter.AlpFilterConfiguration.Builder setPacketType(int);
+    method @NonNull public android.media.tv.tuner.filter.AlpFilterConfiguration.Builder setSettings(@Nullable android.media.tv.tuner.filter.Settings);
+  }
+
+  public class AudioDescriptor {
+    method public byte getAdFade();
+    method public byte getAdGainCenter();
+    method public byte getAdGainFront();
+    method public byte getAdGainSurround();
+    method public byte getAdPan();
+    method public char getAdVersionTextTag();
+  }
+
+  public class AvSettings extends android.media.tv.tuner.filter.Settings {
+    method @NonNull public static android.media.tv.tuner.filter.AvSettings.Builder builder(int, boolean);
+    method public boolean isPassthrough();
+  }
+
+  public static class AvSettings.Builder {
+    method @NonNull public android.media.tv.tuner.filter.AvSettings build();
+    method @NonNull public android.media.tv.tuner.filter.AvSettings.Builder setPassthrough(boolean);
+  }
+
+  public class DownloadEvent extends android.media.tv.tuner.filter.FilterEvent {
+    method public int getDataLength();
+    method public int getItemFragmentIndex();
+    method public int getItemId();
+    method public int getLastItemFragmentIndex();
+    method public int getMpuSequenceNumber();
+  }
+
+  public class DownloadSettings extends android.media.tv.tuner.filter.Settings {
+    method @NonNull public static android.media.tv.tuner.filter.DownloadSettings.Builder builder(int);
+    method public int getDownloadId();
+  }
+
+  public static class DownloadSettings.Builder {
+    method @NonNull public android.media.tv.tuner.filter.DownloadSettings build();
+    method @NonNull public android.media.tv.tuner.filter.DownloadSettings.Builder setDownloadId(int);
+  }
+
+  public class Filter implements java.lang.AutoCloseable {
+    method public void close();
+    method public int configure(@NonNull android.media.tv.tuner.filter.FilterConfiguration);
+    method public int flush();
+    method public int getId();
+    method public int read(@NonNull byte[], long, long);
+    method public int setDataSource(@Nullable android.media.tv.tuner.filter.Filter);
+    method public int start();
+    method public int stop();
+    field public static final int STATUS_DATA_READY = 1; // 0x1
+    field public static final int STATUS_HIGH_WATER = 4; // 0x4
+    field public static final int STATUS_LOW_WATER = 2; // 0x2
+    field public static final int STATUS_OVERFLOW = 8; // 0x8
+    field public static final int SUBTYPE_AUDIO = 3; // 0x3
+    field public static final int SUBTYPE_DOWNLOAD = 5; // 0x5
+    field public static final int SUBTYPE_IP = 13; // 0xd
+    field public static final int SUBTYPE_IP_PAYLOAD = 12; // 0xc
+    field public static final int SUBTYPE_MMTP = 10; // 0xa
+    field public static final int SUBTYPE_NTP = 11; // 0xb
+    field public static final int SUBTYPE_PAYLOAD_THROUGH = 14; // 0xe
+    field public static final int SUBTYPE_PCR = 8; // 0x8
+    field public static final int SUBTYPE_PES = 2; // 0x2
+    field public static final int SUBTYPE_PTP = 16; // 0x10
+    field public static final int SUBTYPE_RECORD = 6; // 0x6
+    field public static final int SUBTYPE_SECTION = 1; // 0x1
+    field public static final int SUBTYPE_TEMI = 9; // 0x9
+    field public static final int SUBTYPE_TLV = 15; // 0xf
+    field public static final int SUBTYPE_TS = 7; // 0x7
+    field public static final int SUBTYPE_UNDEFINED = 0; // 0x0
+    field public static final int SUBTYPE_VIDEO = 4; // 0x4
+    field public static final int TYPE_ALP = 16; // 0x10
+    field public static final int TYPE_IP = 4; // 0x4
+    field public static final int TYPE_MMTP = 2; // 0x2
+    field public static final int TYPE_TLV = 8; // 0x8
+    field public static final int TYPE_TS = 1; // 0x1
+    field public static final int TYPE_UNDEFINED = 0; // 0x0
+  }
+
+  public interface FilterCallback {
+    method public void onFilterEvent(@NonNull android.media.tv.tuner.filter.Filter, @NonNull android.media.tv.tuner.filter.FilterEvent[]);
+    method public void onFilterStatusChanged(@NonNull android.media.tv.tuner.filter.Filter, int);
+  }
+
+  public abstract class FilterConfiguration {
+    method @Nullable public android.media.tv.tuner.filter.Settings getSettings();
+    method public abstract int getType();
+  }
+
+  public abstract class FilterEvent {
+    ctor public FilterEvent();
+  }
+
+  public final class IpFilterConfiguration extends android.media.tv.tuner.filter.FilterConfiguration {
+    method @NonNull public static android.media.tv.tuner.filter.IpFilterConfiguration.Builder builder();
+    method @NonNull @Size(min=4, max=16) public byte[] getDstIpAddress();
+    method public int getDstPort();
+    method @NonNull @Size(min=4, max=16) public byte[] getSrcIpAddress();
+    method public int getSrcPort();
+    method public int getType();
+    method public boolean isPassthrough();
+  }
+
+  public static final class IpFilterConfiguration.Builder {
+    method @NonNull public android.media.tv.tuner.filter.IpFilterConfiguration build();
+    method @NonNull public android.media.tv.tuner.filter.IpFilterConfiguration.Builder setDstIpAddress(@NonNull byte[]);
+    method @NonNull public android.media.tv.tuner.filter.IpFilterConfiguration.Builder setDstPort(int);
+    method @NonNull public android.media.tv.tuner.filter.IpFilterConfiguration.Builder setPassthrough(boolean);
+    method @NonNull public android.media.tv.tuner.filter.IpFilterConfiguration.Builder setSettings(@Nullable android.media.tv.tuner.filter.Settings);
+    method @NonNull public android.media.tv.tuner.filter.IpFilterConfiguration.Builder setSrcIpAddress(@NonNull byte[]);
+    method @NonNull public android.media.tv.tuner.filter.IpFilterConfiguration.Builder setSrcPort(int);
+  }
+
+  public class IpPayloadEvent extends android.media.tv.tuner.filter.FilterEvent {
+    method public int getDataLength();
+  }
+
+  public class MediaEvent extends android.media.tv.tuner.filter.FilterEvent {
+    method public long getAudioHandle();
+    method public long getAvDataId();
+    method public long getDataLength();
+    method @Nullable public android.media.tv.tuner.filter.AudioDescriptor getExtraMetaData();
+    method @Nullable public android.media.MediaCodec.LinearBlock getLinearBlock();
+    method public int getMpuSequenceNumber();
+    method public long getOffset();
+    method public long getPts();
+    method public int getStreamId();
+    method public boolean isPrivateData();
+    method public boolean isPtsPresent();
+    method public boolean isSecureMemory();
+  }
+
+  public final class MmtpFilterConfiguration extends android.media.tv.tuner.filter.FilterConfiguration {
+    method @NonNull public static android.media.tv.tuner.filter.MmtpFilterConfiguration.Builder builder();
+    method public int getMmtpPacketId();
+    method public int getType();
+  }
+
+  public static final class MmtpFilterConfiguration.Builder {
+    method @NonNull public android.media.tv.tuner.filter.MmtpFilterConfiguration build();
+    method @NonNull public android.media.tv.tuner.filter.MmtpFilterConfiguration.Builder setMmtpPacketId(int);
+    method @NonNull public android.media.tv.tuner.filter.MmtpFilterConfiguration.Builder setSettings(@Nullable android.media.tv.tuner.filter.Settings);
+  }
+
+  public class MmtpRecordEvent extends android.media.tv.tuner.filter.FilterEvent {
+    method public long getDataLength();
+    method public int getScHevcIndexMask();
+  }
+
+  public class PesEvent extends android.media.tv.tuner.filter.FilterEvent {
+    method public int getDataLength();
+    method public int getMpuSequenceNumber();
+    method public int getStreamId();
+  }
+
+  public class PesSettings extends android.media.tv.tuner.filter.Settings {
+    method @NonNull public static android.media.tv.tuner.filter.PesSettings.Builder builder(int);
+    method public int getStreamId();
+    method public boolean isRaw();
+  }
+
+  public static class PesSettings.Builder {
+    method @NonNull public android.media.tv.tuner.filter.PesSettings build();
+    method @NonNull public android.media.tv.tuner.filter.PesSettings.Builder setRaw(boolean);
+    method @NonNull public android.media.tv.tuner.filter.PesSettings.Builder setStreamId(int);
+  }
+
+  public class RecordSettings extends android.media.tv.tuner.filter.Settings {
+    method @NonNull public static android.media.tv.tuner.filter.RecordSettings.Builder builder(int);
+    method public int getScIndexMask();
+    method public int getScIndexType();
+    method public int getTsIndexMask();
+    field public static final int INDEX_TYPE_NONE = 0; // 0x0
+    field public static final int INDEX_TYPE_SC = 1; // 0x1
+    field public static final int INDEX_TYPE_SC_HEVC = 2; // 0x2
+    field public static final int SC_HEVC_INDEX_AUD = 2; // 0x2
+    field public static final int SC_HEVC_INDEX_SLICE_BLA_N_LP = 16; // 0x10
+    field public static final int SC_HEVC_INDEX_SLICE_BLA_W_RADL = 8; // 0x8
+    field public static final int SC_HEVC_INDEX_SLICE_CE_BLA_W_LP = 4; // 0x4
+    field public static final int SC_HEVC_INDEX_SLICE_IDR_N_LP = 64; // 0x40
+    field public static final int SC_HEVC_INDEX_SLICE_IDR_W_RADL = 32; // 0x20
+    field public static final int SC_HEVC_INDEX_SLICE_TRAIL_CRA = 128; // 0x80
+    field public static final int SC_HEVC_INDEX_SPS = 1; // 0x1
+    field public static final int SC_INDEX_B_FRAME = 4; // 0x4
+    field public static final int SC_INDEX_I_FRAME = 1; // 0x1
+    field public static final int SC_INDEX_P_FRAME = 2; // 0x2
+    field public static final int SC_INDEX_SEQUENCE = 8; // 0x8
+    field public static final int TS_INDEX_ADAPTATION_EXTENSION_FLAG = 4096; // 0x1000
+    field public static final int TS_INDEX_CHANGE_TO_EVEN_SCRAMBLED = 8; // 0x8
+    field public static final int TS_INDEX_CHANGE_TO_NOT_SCRAMBLED = 4; // 0x4
+    field public static final int TS_INDEX_CHANGE_TO_ODD_SCRAMBLED = 16; // 0x10
+    field public static final int TS_INDEX_DISCONTINUITY_INDICATOR = 32; // 0x20
+    field public static final int TS_INDEX_FIRST_PACKET = 1; // 0x1
+    field public static final int TS_INDEX_OPCR_FLAG = 512; // 0x200
+    field public static final int TS_INDEX_PAYLOAD_UNIT_START_INDICATOR = 2; // 0x2
+    field public static final int TS_INDEX_PCR_FLAG = 256; // 0x100
+    field public static final int TS_INDEX_PRIORITY_INDICATOR = 128; // 0x80
+    field public static final int TS_INDEX_PRIVATE_DATA = 2048; // 0x800
+    field public static final int TS_INDEX_RANDOM_ACCESS_INDICATOR = 64; // 0x40
+    field public static final int TS_INDEX_SPLICING_POINT_FLAG = 1024; // 0x400
+  }
+
+  public static class RecordSettings.Builder {
+    method @NonNull public android.media.tv.tuner.filter.RecordSettings build();
+    method @NonNull public android.media.tv.tuner.filter.RecordSettings.Builder setScIndexMask(int);
+    method @NonNull public android.media.tv.tuner.filter.RecordSettings.Builder setScIndexType(int);
+    method @NonNull public android.media.tv.tuner.filter.RecordSettings.Builder setTsIndexMask(int);
+  }
+
+  public class SectionEvent extends android.media.tv.tuner.filter.FilterEvent {
+    method public int getDataLength();
+    method public int getSectionNumber();
+    method public int getTableId();
+    method public int getVersion();
+  }
+
+  public abstract class SectionSettings extends android.media.tv.tuner.filter.Settings {
+    method public boolean isCrcEnabled();
+    method public boolean isRaw();
+    method public boolean isRepeat();
+  }
+
+  public abstract static class SectionSettings.Builder<T extends android.media.tv.tuner.filter.SectionSettings.Builder<T>> {
+    method @NonNull public T setCrcEnabled(boolean);
+    method @NonNull public T setRaw(boolean);
+    method @NonNull public T setRepeat(boolean);
+  }
+
+  public class SectionSettingsWithSectionBits extends android.media.tv.tuner.filter.SectionSettings {
+    method @NonNull public static android.media.tv.tuner.filter.SectionSettingsWithSectionBits.Builder builder(int);
+    method @NonNull public byte[] getFilterBytes();
+    method @NonNull public byte[] getMask();
+    method @NonNull public byte[] getMode();
+  }
+
+  public static class SectionSettingsWithSectionBits.Builder extends android.media.tv.tuner.filter.SectionSettings.Builder<android.media.tv.tuner.filter.SectionSettingsWithSectionBits.Builder> {
+    method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithSectionBits build();
+    method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithSectionBits.Builder setFilter(@NonNull byte[]);
+    method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithSectionBits.Builder setMask(@NonNull byte[]);
+    method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithSectionBits.Builder setMode(@NonNull byte[]);
+  }
+
+  public class SectionSettingsWithTableInfo extends android.media.tv.tuner.filter.SectionSettings {
+    method @NonNull public static android.media.tv.tuner.filter.SectionSettingsWithTableInfo.Builder builder(int);
+    method public int getTableId();
+    method public int getVersion();
+  }
+
+  public static class SectionSettingsWithTableInfo.Builder extends android.media.tv.tuner.filter.SectionSettings.Builder<android.media.tv.tuner.filter.SectionSettingsWithTableInfo.Builder> {
+    method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithTableInfo build();
+    method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithTableInfo.Builder setTableId(int);
+    method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithTableInfo.Builder setVersion(int);
+  }
+
+  public abstract class Settings {
+    method public int getType();
+  }
+
+  public class TemiEvent extends android.media.tv.tuner.filter.FilterEvent {
+    method @NonNull public byte[] getDescriptorData();
+    method public byte getDescriptorTag();
+    method public long getPts();
+  }
+
+  public class TimeFilter implements java.lang.AutoCloseable {
+    method public int clearTimestamp();
+    method public void close();
+    method public long getSourceTime();
+    method public long getTimeStamp();
+    method public int setCurrentTimestamp(long);
+  }
+
+  public final class TlvFilterConfiguration extends android.media.tv.tuner.filter.FilterConfiguration {
+    method @NonNull public static android.media.tv.tuner.filter.TlvFilterConfiguration.Builder builder();
+    method public int getPacketType();
+    method public int getType();
+    method public boolean isCompressedIpPacket();
+    method public boolean isPassthrough();
+    field public static final int PACKET_TYPE_COMPRESSED = 3; // 0x3
+    field public static final int PACKET_TYPE_IPV4 = 1; // 0x1
+    field public static final int PACKET_TYPE_IPV6 = 2; // 0x2
+    field public static final int PACKET_TYPE_NULL = 255; // 0xff
+    field public static final int PACKET_TYPE_SIGNALING = 254; // 0xfe
+  }
+
+  public static final class TlvFilterConfiguration.Builder {
+    method @NonNull public android.media.tv.tuner.filter.TlvFilterConfiguration build();
+    method @NonNull public android.media.tv.tuner.filter.TlvFilterConfiguration.Builder setCompressedIpPacket(boolean);
+    method @NonNull public android.media.tv.tuner.filter.TlvFilterConfiguration.Builder setPacketType(int);
+    method @NonNull public android.media.tv.tuner.filter.TlvFilterConfiguration.Builder setPassthrough(boolean);
+    method @NonNull public android.media.tv.tuner.filter.TlvFilterConfiguration.Builder setSettings(@Nullable android.media.tv.tuner.filter.Settings);
+  }
+
+  public final class TsFilterConfiguration extends android.media.tv.tuner.filter.FilterConfiguration {
+    method @NonNull public static android.media.tv.tuner.filter.TsFilterConfiguration.Builder builder();
+    method public int getTpid();
+    method public int getType();
+  }
+
+  public static final class TsFilterConfiguration.Builder {
+    method @NonNull public android.media.tv.tuner.filter.TsFilterConfiguration build();
+    method @NonNull public android.media.tv.tuner.filter.TsFilterConfiguration.Builder setSettings(@Nullable android.media.tv.tuner.filter.Settings);
+    method @NonNull public android.media.tv.tuner.filter.TsFilterConfiguration.Builder setTpid(int);
+  }
+
+  public class TsRecordEvent extends android.media.tv.tuner.filter.FilterEvent {
+    method public long getDataLength();
+    method public int getPacketId();
+    method public int getScIndexMask();
+    method public int getTsIndexMask();
+  }
+
+}
+
+package android.media.tv.tuner.frontend {
+
+  public class AnalogFrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
+    method public int getSifStandardCapability();
+    method public int getSignalTypeCapability();
+  }
+
+  public class AnalogFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
+    method @NonNull public static android.media.tv.tuner.frontend.AnalogFrontendSettings.Builder builder();
+    method public int getSifStandard();
+    method public int getSignalType();
+    method public int getType();
+    field public static final int SIF_AUTO = 1; // 0x1
+    field public static final int SIF_BG = 2; // 0x2
+    field public static final int SIF_BG_A2 = 4; // 0x4
+    field public static final int SIF_BG_NICAM = 8; // 0x8
+    field public static final int SIF_DK = 32; // 0x20
+    field public static final int SIF_DK1_A2 = 64; // 0x40
+    field public static final int SIF_DK2_A2 = 128; // 0x80
+    field public static final int SIF_DK3_A2 = 256; // 0x100
+    field public static final int SIF_DK_NICAM = 512; // 0x200
+    field public static final int SIF_I = 16; // 0x10
+    field public static final int SIF_I_NICAM = 32768; // 0x8000
+    field public static final int SIF_L = 1024; // 0x400
+    field public static final int SIF_L_NICAM = 65536; // 0x10000
+    field public static final int SIF_L_PRIME = 131072; // 0x20000
+    field public static final int SIF_M = 2048; // 0x800
+    field public static final int SIF_M_A2 = 8192; // 0x2000
+    field public static final int SIF_M_BTSC = 4096; // 0x1000
+    field public static final int SIF_M_EIAJ = 16384; // 0x4000
+    field public static final int SIF_UNDEFINED = 0; // 0x0
+    field public static final int SIGNAL_TYPE_AUTO = 1; // 0x1
+    field public static final int SIGNAL_TYPE_NTSC = 32; // 0x20
+    field public static final int SIGNAL_TYPE_NTSC_443 = 64; // 0x40
+    field public static final int SIGNAL_TYPE_PAL = 2; // 0x2
+    field public static final int SIGNAL_TYPE_PAL_60 = 16; // 0x10
+    field public static final int SIGNAL_TYPE_PAL_M = 4; // 0x4
+    field public static final int SIGNAL_TYPE_PAL_N = 8; // 0x8
+    field public static final int SIGNAL_TYPE_SECAM = 128; // 0x80
+    field public static final int SIGNAL_TYPE_UNDEFINED = 0; // 0x0
+  }
+
+  public static class AnalogFrontendSettings.Builder {
+    method @NonNull public android.media.tv.tuner.frontend.AnalogFrontendSettings build();
+    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.AnalogFrontendSettings.Builder setFrequency(int);
+    method @NonNull public android.media.tv.tuner.frontend.AnalogFrontendSettings.Builder setSifStandard(int);
+    method @NonNull public android.media.tv.tuner.frontend.AnalogFrontendSettings.Builder setSignalType(int);
+  }
+
+  public class Atsc3FrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
+    method public int getBandwidthCapability();
+    method public int getDemodOutputFormatCapability();
+    method public int getFecCapability();
+    method public int getModulationCapability();
+    method public int getPlpCodeRateCapability();
+    method public int getTimeInterleaveModeCapability();
+  }
+
+  public class Atsc3FrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
+    method @NonNull public static android.media.tv.tuner.frontend.Atsc3FrontendSettings.Builder builder();
+    method public int getBandwidth();
+    method public int getDemodOutputFormat();
+    method @NonNull public android.media.tv.tuner.frontend.Atsc3PlpSettings[] getPlpSettings();
+    method public int getType();
+    field public static final int BANDWIDTH_AUTO = 1; // 0x1
+    field public static final int BANDWIDTH_BANDWIDTH_6MHZ = 2; // 0x2
+    field public static final int BANDWIDTH_BANDWIDTH_7MHZ = 4; // 0x4
+    field public static final int BANDWIDTH_BANDWIDTH_8MHZ = 8; // 0x8
+    field public static final int BANDWIDTH_UNDEFINED = 0; // 0x0
+    field public static final int CODERATE_10_15 = 512; // 0x200
+    field public static final int CODERATE_11_15 = 1024; // 0x400
+    field public static final int CODERATE_12_15 = 2048; // 0x800
+    field public static final int CODERATE_13_15 = 4096; // 0x1000
+    field public static final int CODERATE_2_15 = 2; // 0x2
+    field public static final int CODERATE_3_15 = 4; // 0x4
+    field public static final int CODERATE_4_15 = 8; // 0x8
+    field public static final int CODERATE_5_15 = 16; // 0x10
+    field public static final int CODERATE_6_15 = 32; // 0x20
+    field public static final int CODERATE_7_15 = 64; // 0x40
+    field public static final int CODERATE_8_15 = 128; // 0x80
+    field public static final int CODERATE_9_15 = 256; // 0x100
+    field public static final int CODERATE_AUTO = 1; // 0x1
+    field public static final int CODERATE_UNDEFINED = 0; // 0x0
+    field public static final int DEMOD_OUTPUT_FORMAT_ATSC3_LINKLAYER_PACKET = 1; // 0x1
+    field public static final int DEMOD_OUTPUT_FORMAT_BASEBAND_PACKET = 2; // 0x2
+    field public static final int DEMOD_OUTPUT_FORMAT_UNDEFINED = 0; // 0x0
+    field public static final int FEC_AUTO = 1; // 0x1
+    field public static final int FEC_BCH_LDPC_16K = 2; // 0x2
+    field public static final int FEC_BCH_LDPC_64K = 4; // 0x4
+    field public static final int FEC_CRC_LDPC_16K = 8; // 0x8
+    field public static final int FEC_CRC_LDPC_64K = 16; // 0x10
+    field public static final int FEC_LDPC_16K = 32; // 0x20
+    field public static final int FEC_LDPC_64K = 64; // 0x40
+    field public static final int FEC_UNDEFINED = 0; // 0x0
+    field public static final int MODULATION_AUTO = 1; // 0x1
+    field public static final int MODULATION_MOD_1024QAM = 32; // 0x20
+    field public static final int MODULATION_MOD_16QAM = 4; // 0x4
+    field public static final int MODULATION_MOD_256QAM = 16; // 0x10
+    field public static final int MODULATION_MOD_4096QAM = 64; // 0x40
+    field public static final int MODULATION_MOD_64QAM = 8; // 0x8
+    field public static final int MODULATION_MOD_QPSK = 2; // 0x2
+    field public static final int MODULATION_UNDEFINED = 0; // 0x0
+    field public static final int TIME_INTERLEAVE_MODE_AUTO = 1; // 0x1
+    field public static final int TIME_INTERLEAVE_MODE_CTI = 2; // 0x2
+    field public static final int TIME_INTERLEAVE_MODE_HTI = 4; // 0x4
+    field public static final int TIME_INTERLEAVE_MODE_UNDEFINED = 0; // 0x0
+  }
+
+  public static class Atsc3FrontendSettings.Builder {
+    method @NonNull public android.media.tv.tuner.frontend.Atsc3FrontendSettings build();
+    method @NonNull public android.media.tv.tuner.frontend.Atsc3FrontendSettings.Builder setBandwidth(int);
+    method @NonNull public android.media.tv.tuner.frontend.Atsc3FrontendSettings.Builder setDemodOutputFormat(int);
+    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.Atsc3FrontendSettings.Builder setFrequency(int);
+    method @NonNull public android.media.tv.tuner.frontend.Atsc3FrontendSettings.Builder setPlpSettings(@NonNull android.media.tv.tuner.frontend.Atsc3PlpSettings[]);
+  }
+
+  public class Atsc3PlpInfo {
+    method public boolean getLlsFlag();
+    method public int getPlpId();
+  }
+
+  public class Atsc3PlpSettings {
+    method @NonNull public static android.media.tv.tuner.frontend.Atsc3PlpSettings.Builder builder();
+    method public int getCodeRate();
+    method public int getFec();
+    method public int getInterleaveMode();
+    method public int getModulation();
+    method public int getPlpId();
+  }
+
+  public static class Atsc3PlpSettings.Builder {
+    method @NonNull public android.media.tv.tuner.frontend.Atsc3PlpSettings build();
+    method @NonNull public android.media.tv.tuner.frontend.Atsc3PlpSettings.Builder setCodeRate(int);
+    method @NonNull public android.media.tv.tuner.frontend.Atsc3PlpSettings.Builder setFec(int);
+    method @NonNull public android.media.tv.tuner.frontend.Atsc3PlpSettings.Builder setInterleaveMode(int);
+    method @NonNull public android.media.tv.tuner.frontend.Atsc3PlpSettings.Builder setModulation(int);
+    method @NonNull public android.media.tv.tuner.frontend.Atsc3PlpSettings.Builder setPlpId(int);
+  }
+
+  public class AtscFrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
+    method public int getModulationCapability();
+  }
+
+  public class AtscFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
+    method @NonNull public static android.media.tv.tuner.frontend.AtscFrontendSettings.Builder builder();
+    method public int getModulation();
+    method public int getType();
+    field public static final int MODULATION_AUTO = 1; // 0x1
+    field public static final int MODULATION_MOD_16VSB = 8; // 0x8
+    field public static final int MODULATION_MOD_8VSB = 4; // 0x4
+    field public static final int MODULATION_UNDEFINED = 0; // 0x0
+  }
+
+  public static class AtscFrontendSettings.Builder {
+    method @NonNull public android.media.tv.tuner.frontend.AtscFrontendSettings build();
+    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.AtscFrontendSettings.Builder setFrequency(int);
+    method @NonNull public android.media.tv.tuner.frontend.AtscFrontendSettings.Builder setModulation(int);
+  }
+
+  public class DvbcFrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
+    method public int getAnnexCapability();
+    method public int getFecCapability();
+    method public int getModulationCapability();
+  }
+
+  public class DvbcFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
+    method @NonNull public static android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder builder();
+    method public int getAnnex();
+    method public long getInnerFec();
+    method public int getModulation();
+    method public int getOuterFec();
+    method public int getSpectralInversion();
+    method public int getSymbolRate();
+    method public int getType();
+    field public static final int ANNEX_A = 1; // 0x1
+    field public static final int ANNEX_B = 2; // 0x2
+    field public static final int ANNEX_C = 4; // 0x4
+    field public static final int ANNEX_UNDEFINED = 0; // 0x0
+    field public static final int MODULATION_AUTO = 1; // 0x1
+    field public static final int MODULATION_MOD_128QAM = 16; // 0x10
+    field public static final int MODULATION_MOD_16QAM = 2; // 0x2
+    field public static final int MODULATION_MOD_256QAM = 32; // 0x20
+    field public static final int MODULATION_MOD_32QAM = 4; // 0x4
+    field public static final int MODULATION_MOD_64QAM = 8; // 0x8
+    field public static final int MODULATION_UNDEFINED = 0; // 0x0
+    field public static final int OUTER_FEC_OUTER_FEC_NONE = 1; // 0x1
+    field public static final int OUTER_FEC_OUTER_FEC_RS = 2; // 0x2
+    field public static final int OUTER_FEC_UNDEFINED = 0; // 0x0
+    field public static final int SPECTRAL_INVERSION_INVERTED = 2; // 0x2
+    field public static final int SPECTRAL_INVERSION_NORMAL = 1; // 0x1
+    field public static final int SPECTRAL_INVERSION_UNDEFINED = 0; // 0x0
+  }
+
+  public static class DvbcFrontendSettings.Builder {
+    method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings build();
+    method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setAnnex(int);
+    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setFrequency(int);
+    method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setInnerFec(long);
+    method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setModulation(int);
+    method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setOuterFec(int);
+    method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setSpectralInversion(int);
+    method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setSymbolRate(int);
+  }
+
+  public class DvbsCodeRate {
+    method @NonNull public static android.media.tv.tuner.frontend.DvbsCodeRate.Builder builder();
+    method public int getBitsPer1000Symbol();
+    method public long getInnerFec();
+    method public boolean isLinear();
+    method public boolean isShortFrameEnabled();
+  }
+
+  public static class DvbsCodeRate.Builder {
+    method @NonNull public android.media.tv.tuner.frontend.DvbsCodeRate build();
+    method @NonNull public android.media.tv.tuner.frontend.DvbsCodeRate.Builder setBitsPer1000Symbol(int);
+    method @NonNull public android.media.tv.tuner.frontend.DvbsCodeRate.Builder setInnerFec(long);
+    method @NonNull public android.media.tv.tuner.frontend.DvbsCodeRate.Builder setLinear(boolean);
+    method @NonNull public android.media.tv.tuner.frontend.DvbsCodeRate.Builder setShortFrameEnabled(boolean);
+  }
+
+  public class DvbsFrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
+    method public long getInnerFecCapability();
+    method public int getModulationCapability();
+    method public int getStandardCapability();
+  }
+
+  public class DvbsFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
+    method @NonNull public static android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder builder();
+    method @Nullable public android.media.tv.tuner.frontend.DvbsCodeRate getCodeRate();
+    method public int getInputStreamId();
+    method public int getModulation();
+    method public int getPilot();
+    method public int getRolloff();
+    method public int getStandard();
+    method public int getSymbolRate();
+    method public int getType();
+    method public int getVcmMode();
+    field public static final int MODULATION_AUTO = 1; // 0x1
+    field public static final int MODULATION_MOD_128APSK = 2048; // 0x800
+    field public static final int MODULATION_MOD_16APSK = 256; // 0x100
+    field public static final int MODULATION_MOD_16PSK = 16; // 0x10
+    field public static final int MODULATION_MOD_16QAM = 8; // 0x8
+    field public static final int MODULATION_MOD_256APSK = 4096; // 0x1000
+    field public static final int MODULATION_MOD_32APSK = 512; // 0x200
+    field public static final int MODULATION_MOD_32PSK = 32; // 0x20
+    field public static final int MODULATION_MOD_64APSK = 1024; // 0x400
+    field public static final int MODULATION_MOD_8APSK = 128; // 0x80
+    field public static final int MODULATION_MOD_8PSK = 4; // 0x4
+    field public static final int MODULATION_MOD_ACM = 64; // 0x40
+    field public static final int MODULATION_MOD_QPSK = 2; // 0x2
+    field public static final int MODULATION_MOD_RESERVED = 8192; // 0x2000
+    field public static final int MODULATION_UNDEFINED = 0; // 0x0
+    field public static final int PILOT_AUTO = 3; // 0x3
+    field public static final int PILOT_OFF = 2; // 0x2
+    field public static final int PILOT_ON = 1; // 0x1
+    field public static final int PILOT_UNDEFINED = 0; // 0x0
+    field public static final int ROLLOFF_0_10 = 5; // 0x5
+    field public static final int ROLLOFF_0_15 = 4; // 0x4
+    field public static final int ROLLOFF_0_20 = 3; // 0x3
+    field public static final int ROLLOFF_0_25 = 2; // 0x2
+    field public static final int ROLLOFF_0_35 = 1; // 0x1
+    field public static final int ROLLOFF_0_5 = 6; // 0x6
+    field public static final int ROLLOFF_UNDEFINED = 0; // 0x0
+    field public static final int STANDARD_AUTO = 1; // 0x1
+    field public static final int STANDARD_S = 2; // 0x2
+    field public static final int STANDARD_S2 = 4; // 0x4
+    field public static final int STANDARD_S2X = 8; // 0x8
+    field public static final int VCM_MODE_AUTO = 1; // 0x1
+    field public static final int VCM_MODE_MANUAL = 2; // 0x2
+    field public static final int VCM_MODE_UNDEFINED = 0; // 0x0
+  }
+
+  public static class DvbsFrontendSettings.Builder {
+    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings build();
+    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setCodeRate(@Nullable android.media.tv.tuner.frontend.DvbsCodeRate);
+    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setFrequency(int);
+    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setInputStreamId(int);
+    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setModulation(int);
+    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setPilot(int);
+    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setRolloff(int);
+    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setStandard(int);
+    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setSymbolRate(int);
+    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setVcmMode(int);
+  }
+
+  public class DvbtFrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
+    method public int getBandwidthCapability();
+    method public int getCodeRateCapability();
+    method public int getConstellationCapability();
+    method public int getGuardIntervalCapability();
+    method public int getHierarchyCapability();
+    method public int getTransmissionModeCapability();
+    method public boolean isMisoSupported();
+    method public boolean isT2Supported();
+  }
+
+  public class DvbtFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
+    method @NonNull public static android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder builder();
+    method public int getBandwidth();
+    method public int getConstellation();
+    method public int getGuardInterval();
+    method public int getHierarchy();
+    method public int getHighPriorityCodeRate();
+    method public int getLowPriorityCodeRate();
+    method public int getPlpGroupId();
+    method public int getPlpId();
+    method public int getPlpMode();
+    method public int getStandard();
+    method public int getTransmissionMode();
+    method public int getType();
+    method public boolean isHighPriority();
+    method public boolean isMiso();
+    field public static final int BANDWIDTH_10MHZ = 64; // 0x40
+    field public static final int BANDWIDTH_1_7MHZ = 32; // 0x20
+    field public static final int BANDWIDTH_5MHZ = 16; // 0x10
+    field public static final int BANDWIDTH_6MHZ = 8; // 0x8
+    field public static final int BANDWIDTH_7MHZ = 4; // 0x4
+    field public static final int BANDWIDTH_8MHZ = 2; // 0x2
+    field public static final int BANDWIDTH_AUTO = 1; // 0x1
+    field public static final int BANDWIDTH_UNDEFINED = 0; // 0x0
+    field public static final int CODERATE_1_2 = 2; // 0x2
+    field public static final int CODERATE_2_3 = 4; // 0x4
+    field public static final int CODERATE_3_4 = 8; // 0x8
+    field public static final int CODERATE_3_5 = 64; // 0x40
+    field public static final int CODERATE_4_5 = 128; // 0x80
+    field public static final int CODERATE_5_6 = 16; // 0x10
+    field public static final int CODERATE_6_7 = 256; // 0x100
+    field public static final int CODERATE_7_8 = 32; // 0x20
+    field public static final int CODERATE_8_9 = 512; // 0x200
+    field public static final int CODERATE_AUTO = 1; // 0x1
+    field public static final int CODERATE_UNDEFINED = 0; // 0x0
+    field public static final int CONSTELLATION_16QAM = 4; // 0x4
+    field public static final int CONSTELLATION_256QAM = 16; // 0x10
+    field public static final int CONSTELLATION_64QAM = 8; // 0x8
+    field public static final int CONSTELLATION_AUTO = 1; // 0x1
+    field public static final int CONSTELLATION_QPSK = 2; // 0x2
+    field public static final int CONSTELLATION_UNDEFINED = 0; // 0x0
+    field public static final int GUARD_INTERVAL_19_128 = 64; // 0x40
+    field public static final int GUARD_INTERVAL_19_256 = 128; // 0x80
+    field public static final int GUARD_INTERVAL_1_128 = 32; // 0x20
+    field public static final int GUARD_INTERVAL_1_16 = 4; // 0x4
+    field public static final int GUARD_INTERVAL_1_32 = 2; // 0x2
+    field public static final int GUARD_INTERVAL_1_4 = 16; // 0x10
+    field public static final int GUARD_INTERVAL_1_8 = 8; // 0x8
+    field public static final int GUARD_INTERVAL_AUTO = 1; // 0x1
+    field public static final int GUARD_INTERVAL_UNDEFINED = 0; // 0x0
+    field public static final int HIERARCHY_1_INDEPTH = 64; // 0x40
+    field public static final int HIERARCHY_1_NATIVE = 4; // 0x4
+    field public static final int HIERARCHY_2_INDEPTH = 128; // 0x80
+    field public static final int HIERARCHY_2_NATIVE = 8; // 0x8
+    field public static final int HIERARCHY_4_INDEPTH = 256; // 0x100
+    field public static final int HIERARCHY_4_NATIVE = 16; // 0x10
+    field public static final int HIERARCHY_AUTO = 1; // 0x1
+    field public static final int HIERARCHY_NON_INDEPTH = 32; // 0x20
+    field public static final int HIERARCHY_NON_NATIVE = 2; // 0x2
+    field public static final int HIERARCHY_UNDEFINED = 0; // 0x0
+    field public static final int PLP_MODE_AUTO = 1; // 0x1
+    field public static final int PLP_MODE_MANUAL = 2; // 0x2
+    field public static final int PLP_MODE_UNDEFINED = 0; // 0x0
+    field public static final int STANDARD_AUTO = 1; // 0x1
+    field public static final int STANDARD_T = 2; // 0x2
+    field public static final int STANDARD_T2 = 4; // 0x4
+    field public static final int TRANSMISSION_MODE_16K = 32; // 0x20
+    field public static final int TRANSMISSION_MODE_1K = 16; // 0x10
+    field public static final int TRANSMISSION_MODE_2K = 2; // 0x2
+    field public static final int TRANSMISSION_MODE_32K = 64; // 0x40
+    field public static final int TRANSMISSION_MODE_4K = 8; // 0x8
+    field public static final int TRANSMISSION_MODE_8K = 4; // 0x4
+    field public static final int TRANSMISSION_MODE_AUTO = 1; // 0x1
+    field public static final int TRANSMISSION_MODE_UNDEFINED = 0; // 0x0
+  }
+
+  public static class DvbtFrontendSettings.Builder {
+    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings build();
+    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setBandwidth(int);
+    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setConstellation(int);
+    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setFrequency(int);
+    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setGuardInterval(int);
+    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setHierarchy(int);
+    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setHighPriority(boolean);
+    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setHighPriorityCodeRate(int);
+    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setLowPriorityCodeRate(int);
+    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setMiso(boolean);
+    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setPlpGroupId(int);
+    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setPlpId(int);
+    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setPlpMode(int);
+    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setStandard(int);
+    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setTransmissionMode(int);
+  }
+
+  public abstract class FrontendCapabilities {
+    ctor public FrontendCapabilities();
+  }
+
+  public class FrontendInfo {
+    method public int getAcquireRange();
+    method public int getExclusiveGroupId();
+    method @NonNull public android.util.Range<java.lang.Integer> getFrequencyRange();
+    method @NonNull public android.media.tv.tuner.frontend.FrontendCapabilities getFrontendCapabilities();
+    method public int getId();
+    method @NonNull public int[] getStatusCapabilities();
+    method @NonNull public android.util.Range<java.lang.Integer> getSymbolRateRange();
+    method public int getType();
+  }
+
+  public abstract class FrontendSettings {
+    method public int getFrequency();
+    method public abstract int getType();
+    field public static final long FEC_11_15 = 4194304L; // 0x400000L
+    field public static final long FEC_11_20 = 8388608L; // 0x800000L
+    field public static final long FEC_11_45 = 16777216L; // 0x1000000L
+    field public static final long FEC_13_18 = 33554432L; // 0x2000000L
+    field public static final long FEC_13_45 = 67108864L; // 0x4000000L
+    field public static final long FEC_14_45 = 134217728L; // 0x8000000L
+    field public static final long FEC_1_2 = 2L; // 0x2L
+    field public static final long FEC_1_3 = 4L; // 0x4L
+    field public static final long FEC_1_4 = 8L; // 0x8L
+    field public static final long FEC_1_5 = 16L; // 0x10L
+    field public static final long FEC_23_36 = 268435456L; // 0x10000000L
+    field public static final long FEC_25_36 = 536870912L; // 0x20000000L
+    field public static final long FEC_26_45 = 1073741824L; // 0x40000000L
+    field public static final long FEC_28_45 = -2147483648L; // 0xffffffff80000000L
+    field public static final long FEC_29_45 = 1L; // 0x1L
+    field public static final long FEC_2_3 = 32L; // 0x20L
+    field public static final long FEC_2_5 = 64L; // 0x40L
+    field public static final long FEC_2_9 = 128L; // 0x80L
+    field public static final long FEC_31_45 = 2L; // 0x2L
+    field public static final long FEC_32_45 = 4L; // 0x4L
+    field public static final long FEC_3_4 = 256L; // 0x100L
+    field public static final long FEC_3_5 = 512L; // 0x200L
+    field public static final long FEC_4_15 = 2048L; // 0x800L
+    field public static final long FEC_4_5 = 1024L; // 0x400L
+    field public static final long FEC_5_6 = 4096L; // 0x1000L
+    field public static final long FEC_5_9 = 8192L; // 0x2000L
+    field public static final long FEC_6_7 = 16384L; // 0x4000L
+    field public static final long FEC_77_90 = 8L; // 0x8L
+    field public static final long FEC_7_15 = 131072L; // 0x20000L
+    field public static final long FEC_7_8 = 32768L; // 0x8000L
+    field public static final long FEC_7_9 = 65536L; // 0x10000L
+    field public static final long FEC_8_15 = 524288L; // 0x80000L
+    field public static final long FEC_8_9 = 262144L; // 0x40000L
+    field public static final long FEC_9_10 = 1048576L; // 0x100000L
+    field public static final long FEC_9_20 = 2097152L; // 0x200000L
+    field public static final long FEC_AUTO = 1L; // 0x1L
+    field public static final long FEC_UNDEFINED = 0L; // 0x0L
+    field public static final int TYPE_ANALOG = 1; // 0x1
+    field public static final int TYPE_ATSC = 2; // 0x2
+    field public static final int TYPE_ATSC3 = 3; // 0x3
+    field public static final int TYPE_DVBC = 4; // 0x4
+    field public static final int TYPE_DVBS = 5; // 0x5
+    field public static final int TYPE_DVBT = 6; // 0x6
+    field public static final int TYPE_ISDBS = 7; // 0x7
+    field public static final int TYPE_ISDBS3 = 8; // 0x8
+    field public static final int TYPE_ISDBT = 9; // 0x9
+    field public static final int TYPE_UNDEFINED = 0; // 0x0
+  }
+
+  public class FrontendStatus {
+    method public int getAgc();
+    method @NonNull public android.media.tv.tuner.frontend.FrontendStatus.Atsc3PlpTuningInfo[] getAtsc3PlpTuningInfo();
+    method public int getBer();
+    method public int getFreqOffset();
+    method public int getHierarchy();
+    method public long getInnerFec();
+    method @NonNull public boolean[] getLayerErrors();
+    method public int getLnbVoltage();
+    method public int getMer();
+    method public int getModulation();
+    method public int getPer();
+    method public int getPerBer();
+    method public int getPlpId();
+    method public int getSignalQuality();
+    method public int getSignalStrength();
+    method public int getSnr();
+    method public int getSpectralInversion();
+    method public int getSymbolRate();
+    method public boolean isDemodLocked();
+    method public boolean isEwbs();
+    method public boolean isLnaOn();
+    method public boolean isRfLocked();
+    field public static final int FRONTEND_STATUS_TYPE_AGC = 14; // 0xe
+    field public static final int FRONTEND_STATUS_TYPE_ATSC3_PLP_INFO = 21; // 0x15
+    field public static final int FRONTEND_STATUS_TYPE_BER = 2; // 0x2
+    field public static final int FRONTEND_STATUS_TYPE_DEMOD_LOCK = 0; // 0x0
+    field public static final int FRONTEND_STATUS_TYPE_EWBS = 13; // 0xd
+    field public static final int FRONTEND_STATUS_TYPE_FEC = 8; // 0x8
+    field public static final int FRONTEND_STATUS_TYPE_FREQ_OFFSET = 18; // 0x12
+    field public static final int FRONTEND_STATUS_TYPE_HIERARCHY = 19; // 0x13
+    field public static final int FRONTEND_STATUS_TYPE_LAYER_ERROR = 16; // 0x10
+    field public static final int FRONTEND_STATUS_TYPE_LNA = 15; // 0xf
+    field public static final int FRONTEND_STATUS_TYPE_LNB_VOLTAGE = 11; // 0xb
+    field public static final int FRONTEND_STATUS_TYPE_MER = 17; // 0x11
+    field public static final int FRONTEND_STATUS_TYPE_MODULATION = 9; // 0x9
+    field public static final int FRONTEND_STATUS_TYPE_PER = 3; // 0x3
+    field public static final int FRONTEND_STATUS_TYPE_PLP_ID = 12; // 0xc
+    field public static final int FRONTEND_STATUS_TYPE_PRE_BER = 4; // 0x4
+    field public static final int FRONTEND_STATUS_TYPE_RF_LOCK = 20; // 0x14
+    field public static final int FRONTEND_STATUS_TYPE_SIGNAL_QUALITY = 5; // 0x5
+    field public static final int FRONTEND_STATUS_TYPE_SIGNAL_STRENGTH = 6; // 0x6
+    field public static final int FRONTEND_STATUS_TYPE_SNR = 1; // 0x1
+    field public static final int FRONTEND_STATUS_TYPE_SPECTRAL = 10; // 0xa
+    field public static final int FRONTEND_STATUS_TYPE_SYMBOL_RATE = 7; // 0x7
+  }
+
+  public static class FrontendStatus.Atsc3PlpTuningInfo {
+    method public int getPlpId();
+    method public int getUec();
+    method public boolean isLocked();
+  }
+
+  public class Isdbs3FrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
+    method public int getCodeRateCapability();
+    method public int getModulationCapability();
+  }
+
+  public class Isdbs3FrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
+    method @NonNull public static android.media.tv.tuner.frontend.Isdbs3FrontendSettings.Builder builder();
+    method public int getCodeRate();
+    method public int getModulation();
+    method public int getRolloff();
+    method public int getStreamId();
+    method public int getStreamIdType();
+    method public int getSymbolRate();
+    method public int getType();
+    field public static final int CODERATE_1_2 = 8; // 0x8
+    field public static final int CODERATE_1_3 = 2; // 0x2
+    field public static final int CODERATE_2_3 = 32; // 0x20
+    field public static final int CODERATE_2_5 = 4; // 0x4
+    field public static final int CODERATE_3_4 = 64; // 0x40
+    field public static final int CODERATE_3_5 = 16; // 0x10
+    field public static final int CODERATE_4_5 = 256; // 0x100
+    field public static final int CODERATE_5_6 = 512; // 0x200
+    field public static final int CODERATE_7_8 = 1024; // 0x400
+    field public static final int CODERATE_7_9 = 128; // 0x80
+    field public static final int CODERATE_9_10 = 2048; // 0x800
+    field public static final int CODERATE_AUTO = 1; // 0x1
+    field public static final int CODERATE_UNDEFINED = 0; // 0x0
+    field public static final int MODULATION_AUTO = 1; // 0x1
+    field public static final int MODULATION_MOD_16APSK = 16; // 0x10
+    field public static final int MODULATION_MOD_32APSK = 32; // 0x20
+    field public static final int MODULATION_MOD_8PSK = 8; // 0x8
+    field public static final int MODULATION_MOD_BPSK = 2; // 0x2
+    field public static final int MODULATION_MOD_QPSK = 4; // 0x4
+    field public static final int MODULATION_UNDEFINED = 0; // 0x0
+    field public static final int ROLLOFF_0_03 = 1; // 0x1
+    field public static final int ROLLOFF_UNDEFINED = 0; // 0x0
+  }
+
+  public static class Isdbs3FrontendSettings.Builder {
+    method @NonNull public android.media.tv.tuner.frontend.Isdbs3FrontendSettings build();
+    method @NonNull public android.media.tv.tuner.frontend.Isdbs3FrontendSettings.Builder setCodeRate(int);
+    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.Isdbs3FrontendSettings.Builder setFrequency(int);
+    method @NonNull public android.media.tv.tuner.frontend.Isdbs3FrontendSettings.Builder setModulation(int);
+    method @NonNull public android.media.tv.tuner.frontend.Isdbs3FrontendSettings.Builder setRolloff(int);
+    method @NonNull public android.media.tv.tuner.frontend.Isdbs3FrontendSettings.Builder setStreamId(int);
+    method @NonNull public android.media.tv.tuner.frontend.Isdbs3FrontendSettings.Builder setStreamIdType(int);
+    method @NonNull public android.media.tv.tuner.frontend.Isdbs3FrontendSettings.Builder setSymbolRate(int);
+  }
+
+  public class IsdbsFrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
+    method public int getCodeRateCapability();
+    method public int getModulationCapability();
+  }
+
+  public class IsdbsFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
+    method @NonNull public static android.media.tv.tuner.frontend.IsdbsFrontendSettings.Builder builder();
+    method public int getCodeRate();
+    method public int getModulation();
+    method public int getRolloff();
+    method public int getStreamId();
+    method public int getStreamIdType();
+    method public int getSymbolRate();
+    method public int getType();
+    field public static final int CODERATE_1_2 = 2; // 0x2
+    field public static final int CODERATE_2_3 = 4; // 0x4
+    field public static final int CODERATE_3_4 = 8; // 0x8
+    field public static final int CODERATE_5_6 = 16; // 0x10
+    field public static final int CODERATE_7_8 = 32; // 0x20
+    field public static final int CODERATE_AUTO = 1; // 0x1
+    field public static final int CODERATE_UNDEFINED = 0; // 0x0
+    field public static final int MODULATION_AUTO = 1; // 0x1
+    field public static final int MODULATION_MOD_BPSK = 2; // 0x2
+    field public static final int MODULATION_MOD_QPSK = 4; // 0x4
+    field public static final int MODULATION_MOD_TC8PSK = 8; // 0x8
+    field public static final int MODULATION_UNDEFINED = 0; // 0x0
+    field public static final int ROLLOFF_0_35 = 1; // 0x1
+    field public static final int ROLLOFF_UNDEFINED = 0; // 0x0
+    field public static final int STREAM_ID_TYPE_ID = 0; // 0x0
+    field public static final int STREAM_ID_TYPE_RELATIVE_NUMBER = 1; // 0x1
+  }
+
+  public static class IsdbsFrontendSettings.Builder {
+    method @NonNull public android.media.tv.tuner.frontend.IsdbsFrontendSettings build();
+    method @NonNull public android.media.tv.tuner.frontend.IsdbsFrontendSettings.Builder setCodeRate(int);
+    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.IsdbsFrontendSettings.Builder setFrequency(int);
+    method @NonNull public android.media.tv.tuner.frontend.IsdbsFrontendSettings.Builder setModulation(int);
+    method @NonNull public android.media.tv.tuner.frontend.IsdbsFrontendSettings.Builder setRolloff(int);
+    method @NonNull public android.media.tv.tuner.frontend.IsdbsFrontendSettings.Builder setStreamId(int);
+    method @NonNull public android.media.tv.tuner.frontend.IsdbsFrontendSettings.Builder setStreamIdType(int);
+    method @NonNull public android.media.tv.tuner.frontend.IsdbsFrontendSettings.Builder setSymbolRate(int);
+  }
+
+  public class IsdbtFrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
+    method public int getBandwidthCapability();
+    method public int getCodeRateCapability();
+    method public int getGuardIntervalCapability();
+    method public int getModeCapability();
+    method public int getModulationCapability();
+  }
+
+  public class IsdbtFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
+    method @NonNull public static android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder builder();
+    method public int getBandwidth();
+    method public int getCodeRate();
+    method public int getGuardInterval();
+    method public int getMode();
+    method public int getModulation();
+    method public int getServiceAreaId();
+    method public int getType();
+    field public static final int BANDWIDTH_6MHZ = 8; // 0x8
+    field public static final int BANDWIDTH_7MHZ = 4; // 0x4
+    field public static final int BANDWIDTH_8MHZ = 2; // 0x2
+    field public static final int BANDWIDTH_AUTO = 1; // 0x1
+    field public static final int BANDWIDTH_UNDEFINED = 0; // 0x0
+    field public static final int MODE_1 = 2; // 0x2
+    field public static final int MODE_2 = 4; // 0x4
+    field public static final int MODE_3 = 8; // 0x8
+    field public static final int MODE_AUTO = 1; // 0x1
+    field public static final int MODE_UNDEFINED = 0; // 0x0
+    field public static final int MODULATION_AUTO = 1; // 0x1
+    field public static final int MODULATION_MOD_16QAM = 8; // 0x8
+    field public static final int MODULATION_MOD_64QAM = 16; // 0x10
+    field public static final int MODULATION_MOD_DQPSK = 2; // 0x2
+    field public static final int MODULATION_MOD_QPSK = 4; // 0x4
+    field public static final int MODULATION_UNDEFINED = 0; // 0x0
+  }
+
+  public static class IsdbtFrontendSettings.Builder {
+    method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings build();
+    method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setBandwidth(int);
+    method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setCodeRate(int);
+    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setFrequency(int);
+    method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setGuardInterval(int);
+    method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setMode(int);
+    method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setModulation(int);
+    method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setServiceAreaId(int);
+  }
+
+  public interface OnTuneEventListener {
+    method public void onTuneEvent(int);
+    field public static final int SIGNAL_LOCKED = 0; // 0x0
+    field public static final int SIGNAL_LOST_LOCK = 2; // 0x2
+    field public static final int SIGNAL_NO_SIGNAL = 1; // 0x1
+  }
+
+  public interface ScanCallback {
+    method public void onAnalogSifStandardReported(int);
+    method public void onAtsc3PlpInfosReported(@NonNull android.media.tv.tuner.frontend.Atsc3PlpInfo[]);
+    method public void onDvbsStandardReported(int);
+    method public void onDvbtStandardReported(int);
+    method public void onFrequenciesReported(@NonNull int[]);
+    method public void onGroupIdsReported(@NonNull int[]);
+    method public void onHierarchyReported(int);
+    method public void onInputStreamIdsReported(@NonNull int[]);
+    method public void onLocked();
+    method public void onPlpIdsReported(@NonNull int[]);
+    method public void onProgress(@IntRange(from=0, to=100) int);
+    method public void onScanStopped();
+    method public void onSignalTypeReported(int);
+    method public void onSymbolRatesReported(@NonNull int[]);
+  }
+
+}
+
+package android.media.voice {
+
+  public final class KeyphraseModelManager {
+    method @RequiresPermission("android.permission.MANAGE_VOICE_KEYPHRASES") public void deleteKeyphraseSoundModel(int, @NonNull java.util.Locale);
+    method @Nullable @RequiresPermission("android.permission.MANAGE_VOICE_KEYPHRASES") public android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel getKeyphraseSoundModel(int, @NonNull java.util.Locale);
+    method @RequiresPermission("android.permission.MANAGE_VOICE_KEYPHRASES") public void updateKeyphraseSoundModel(@NonNull android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel);
+  }
+
+}
+
+package android.metrics {
+
+  public class LogMaker {
+    ctor public LogMaker(int);
+    ctor public LogMaker(Object[]);
+    method public android.metrics.LogMaker addTaggedData(int, Object);
+    method public android.metrics.LogMaker clearCategory();
+    method public android.metrics.LogMaker clearPackageName();
+    method public android.metrics.LogMaker clearSubtype();
+    method public android.metrics.LogMaker clearTaggedData(int);
+    method public android.metrics.LogMaker clearType();
+    method public void deserialize(Object[]);
+    method public int getCategory();
+    method public long getCounterBucket();
+    method public String getCounterName();
+    method public int getCounterValue();
+    method public String getPackageName();
+    method public int getProcessId();
+    method public int getSubtype();
+    method public Object getTaggedData(int);
+    method public long getTimestamp();
+    method public int getType();
+    method public int getUid();
+    method public boolean isLongCounterBucket();
+    method public boolean isSubsetOf(android.metrics.LogMaker);
+    method public boolean isValidValue(Object);
+    method public Object[] serialize();
+    method public android.metrics.LogMaker setCategory(int);
+    method public android.metrics.LogMaker setPackageName(String);
+    method public android.metrics.LogMaker setSubtype(int);
+    method public android.metrics.LogMaker setType(int);
+  }
+
+  public class MetricsReader {
+    ctor public MetricsReader();
+    method public void checkpoint();
+    method public boolean hasNext();
+    method public android.metrics.LogMaker next();
+    method public void read(long);
+    method public void reset();
+  }
+
+}
+
+package android.net {
+
+  public class CaptivePortal implements android.os.Parcelable {
+    method public void logEvent(int, @NonNull String);
+    method @RequiresPermission(android.Manifest.permission.NETWORK_STACK) public void reevaluateNetwork();
+    method public void useNetwork();
+    field public static final int APP_REQUEST_REEVALUATION_REQUIRED = 100; // 0x64
+    field public static final int APP_RETURN_DISMISSED = 0; // 0x0
+    field public static final int APP_RETURN_UNWANTED = 1; // 0x1
+    field public static final int APP_RETURN_WANTED_AS_IS = 2; // 0x2
+  }
+
+  public final class CaptivePortalData implements android.os.Parcelable {
+    method public int describeContents();
+    method public long getByteLimit();
+    method public long getExpiryTimeMillis();
+    method public long getRefreshTimeMillis();
+    method @Nullable public android.net.Uri getUserPortalUrl();
+    method @Nullable public android.net.Uri getVenueInfoUrl();
+    method public boolean isCaptive();
+    method public boolean isSessionExtendable();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.CaptivePortalData> CREATOR;
+  }
+
+  public static class CaptivePortalData.Builder {
+    ctor public CaptivePortalData.Builder();
+    ctor public CaptivePortalData.Builder(@Nullable android.net.CaptivePortalData);
+    method @NonNull public android.net.CaptivePortalData build();
+    method @NonNull public android.net.CaptivePortalData.Builder setBytesRemaining(long);
+    method @NonNull public android.net.CaptivePortalData.Builder setCaptive(boolean);
+    method @NonNull public android.net.CaptivePortalData.Builder setExpiryTime(long);
+    method @NonNull public android.net.CaptivePortalData.Builder setRefreshTime(long);
+    method @NonNull public android.net.CaptivePortalData.Builder setSessionExtendable(boolean);
+    method @NonNull public android.net.CaptivePortalData.Builder setUserPortalUrl(@Nullable android.net.Uri);
+    method @NonNull public android.net.CaptivePortalData.Builder setVenueInfoUrl(@Nullable android.net.Uri);
+  }
+
+  public class ConnectivityManager {
+    method @NonNull @RequiresPermission(android.Manifest.permission.PACKET_KEEPALIVE_OFFLOAD) public android.net.SocketKeepalive createNattKeepalive(@NonNull android.net.Network, @NonNull android.os.ParcelFileDescriptor, @NonNull java.net.InetAddress, @NonNull java.net.InetAddress, @NonNull java.util.concurrent.Executor, @NonNull android.net.SocketKeepalive.Callback);
+    method @NonNull @RequiresPermission(android.Manifest.permission.PACKET_KEEPALIVE_OFFLOAD) public android.net.SocketKeepalive createSocketKeepalive(@NonNull android.net.Network, @NonNull java.net.Socket, @NonNull java.util.concurrent.Executor, @NonNull android.net.SocketKeepalive.Callback);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public String getCaptivePortalServerUrl();
+    method @Deprecated @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void getLatestTetheringEntitlementResult(int, boolean, @NonNull java.util.concurrent.Executor, @NonNull android.net.ConnectivityManager.OnTetheringEntitlementResultListener);
+    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public boolean isTetheringSupported();
+    method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_FACTORY}) public int registerNetworkProvider(@NonNull android.net.NetworkProvider);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void registerTetheringEventCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.ConnectivityManager.OnTetheringEventCallback);
+    method @RequiresPermission(android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK) public void requestNetwork(@NonNull android.net.NetworkRequest, int, int, @NonNull android.os.Handler, @NonNull android.net.ConnectivityManager.NetworkCallback);
+    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_AIRPLANE_MODE, android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK}) public void setAirplaneMode(boolean);
+    method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK}) public boolean shouldAvoidBadWifi();
+    method @RequiresPermission(android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK) public void startCaptivePortalApp(@NonNull android.net.Network, @NonNull android.os.Bundle);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void startTethering(int, boolean, android.net.ConnectivityManager.OnStartTetheringCallback);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void startTethering(int, boolean, android.net.ConnectivityManager.OnStartTetheringCallback, android.os.Handler);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void stopTethering(int);
+    method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_FACTORY}) public void unregisterNetworkProvider(@NonNull android.net.NetworkProvider);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void unregisterTetheringEventCallback(@NonNull android.net.ConnectivityManager.OnTetheringEventCallback);
+    field public static final String EXTRA_CAPTIVE_PORTAL_PROBE_SPEC = "android.net.extra.CAPTIVE_PORTAL_PROBE_SPEC";
+    field public static final String EXTRA_CAPTIVE_PORTAL_USER_AGENT = "android.net.extra.CAPTIVE_PORTAL_USER_AGENT";
+    field public static final int TETHERING_BLUETOOTH = 2; // 0x2
+    field public static final int TETHERING_USB = 1; // 0x1
+    field public static final int TETHERING_WIFI = 0; // 0x0
+    field @Deprecated public static final int TETHER_ERROR_ENTITLEMENT_UNKONWN = 13; // 0xd
+    field @Deprecated public static final int TETHER_ERROR_NO_ERROR = 0; // 0x0
+    field @Deprecated public static final int TETHER_ERROR_PROVISION_FAILED = 11; // 0xb
+    field public static final int TYPE_NONE = -1; // 0xffffffff
+    field @Deprecated public static final int TYPE_WIFI_P2P = 13; // 0xd
+  }
+
+  @Deprecated public abstract static class ConnectivityManager.OnStartTetheringCallback {
+    ctor @Deprecated public ConnectivityManager.OnStartTetheringCallback();
+    method @Deprecated public void onTetheringFailed();
+    method @Deprecated public void onTetheringStarted();
+  }
+
+  @Deprecated public static interface ConnectivityManager.OnTetheringEntitlementResultListener {
+    method @Deprecated public void onTetheringEntitlementResult(int);
+  }
+
+  @Deprecated public abstract static class ConnectivityManager.OnTetheringEventCallback {
+    ctor @Deprecated public ConnectivityManager.OnTetheringEventCallback();
+    method @Deprecated public void onUpstreamChanged(@Nullable android.net.Network);
+  }
+
+  public class EthernetManager {
+    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public android.net.EthernetManager.TetheredInterfaceRequest requestTetheredInterface(@NonNull java.util.concurrent.Executor, @NonNull android.net.EthernetManager.TetheredInterfaceCallback);
+  }
+
+  public static interface EthernetManager.TetheredInterfaceCallback {
+    method public void onAvailable(@NonNull String);
+    method public void onUnavailable();
+  }
+
+  public static class EthernetManager.TetheredInterfaceRequest {
+    method public void release();
+  }
+
+  public final class InvalidPacketException extends java.lang.Exception {
+    ctor public InvalidPacketException(int);
+    method public int getError();
+    field public static final int ERROR_INVALID_IP_ADDRESS = -21; // 0xffffffeb
+    field public static final int ERROR_INVALID_LENGTH = -23; // 0xffffffe9
+    field public static final int ERROR_INVALID_PORT = -22; // 0xffffffea
+  }
+
+  public final class IpConfiguration implements android.os.Parcelable {
+    ctor public IpConfiguration();
+    ctor public IpConfiguration(@NonNull android.net.IpConfiguration);
+    method public int describeContents();
+    method @Nullable public android.net.ProxyInfo getHttpProxy();
+    method @NonNull public android.net.IpConfiguration.IpAssignment getIpAssignment();
+    method @NonNull public android.net.IpConfiguration.ProxySettings getProxySettings();
+    method @Nullable public android.net.StaticIpConfiguration getStaticIpConfiguration();
+    method public void setHttpProxy(@Nullable android.net.ProxyInfo);
+    method public void setIpAssignment(@NonNull android.net.IpConfiguration.IpAssignment);
+    method public void setProxySettings(@NonNull android.net.IpConfiguration.ProxySettings);
+    method public void setStaticIpConfiguration(@Nullable android.net.StaticIpConfiguration);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.IpConfiguration> CREATOR;
+  }
+
+  public enum IpConfiguration.IpAssignment {
+    enum_constant public static final android.net.IpConfiguration.IpAssignment DHCP;
+    enum_constant public static final android.net.IpConfiguration.IpAssignment STATIC;
+    enum_constant public static final android.net.IpConfiguration.IpAssignment UNASSIGNED;
+  }
+
+  public enum IpConfiguration.ProxySettings {
+    enum_constant public static final android.net.IpConfiguration.ProxySettings NONE;
+    enum_constant public static final android.net.IpConfiguration.ProxySettings PAC;
+    enum_constant public static final android.net.IpConfiguration.ProxySettings STATIC;
+    enum_constant public static final android.net.IpConfiguration.ProxySettings UNASSIGNED;
+  }
+
+  public final class IpPrefix implements android.os.Parcelable {
+    ctor public IpPrefix(@NonNull java.net.InetAddress, @IntRange(from=0, to=128) int);
+    ctor public IpPrefix(@NonNull String);
+  }
+
+  public final class IpSecManager {
+    method @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public void applyTunnelModeTransform(@NonNull android.net.IpSecManager.IpSecTunnelInterface, int, @NonNull android.net.IpSecTransform) throws java.io.IOException;
+    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public android.net.IpSecManager.IpSecTunnelInterface createIpSecTunnelInterface(@NonNull java.net.InetAddress, @NonNull java.net.InetAddress, @NonNull android.net.Network) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException;
+  }
+
+  public static final class IpSecManager.IpSecTunnelInterface implements java.lang.AutoCloseable {
+    method @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public void addAddress(@NonNull java.net.InetAddress, int) throws java.io.IOException;
+    method public void close();
+    method @NonNull public String getInterfaceName();
+    method @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public void removeAddress(@NonNull java.net.InetAddress, int) throws java.io.IOException;
+  }
+
+  public static class IpSecTransform.Builder {
+    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public android.net.IpSecTransform buildTunnelModeTransform(@NonNull java.net.InetAddress, @NonNull android.net.IpSecManager.SecurityParameterIndex) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException, android.net.IpSecManager.SpiUnavailableException;
+  }
+
+  public class KeepalivePacketData {
+    ctor protected KeepalivePacketData(@NonNull java.net.InetAddress, @IntRange(from=0, to=65535) int, @NonNull java.net.InetAddress, @IntRange(from=0, to=65535) int, @NonNull byte[]) throws android.net.InvalidPacketException;
+    method @NonNull public java.net.InetAddress getDstAddress();
+    method public int getDstPort();
+    method @NonNull public byte[] getPacket();
+    method @NonNull public java.net.InetAddress getSrcAddress();
+    method public int getSrcPort();
+  }
+
+  public class LinkAddress implements android.os.Parcelable {
+    ctor public LinkAddress(@NonNull java.net.InetAddress, @IntRange(from=0, to=128) int, int, int);
+    ctor public LinkAddress(@NonNull java.net.InetAddress, @IntRange(from=0, to=128) int, int, int, long, long);
+    ctor public LinkAddress(@NonNull java.net.InetAddress, @IntRange(from=0, to=128) int);
+    ctor public LinkAddress(@NonNull String);
+    ctor public LinkAddress(@NonNull String, int, int);
+    method public long getDeprecationTime();
+    method public long getExpirationTime();
+    method public boolean isGlobalPreferred();
+    method public boolean isIpv4();
+    method public boolean isIpv6();
+    method public boolean isSameAddressAs(@Nullable android.net.LinkAddress);
+    field public static final long LIFETIME_PERMANENT = 9223372036854775807L; // 0x7fffffffffffffffL
+    field public static final long LIFETIME_UNKNOWN = -1L; // 0xffffffffffffffffL
+  }
+
+  public final class LinkProperties implements android.os.Parcelable {
+    ctor public LinkProperties(@Nullable android.net.LinkProperties);
+    ctor public LinkProperties(@Nullable android.net.LinkProperties, boolean);
+    method public boolean addDnsServer(@NonNull java.net.InetAddress);
+    method public boolean addLinkAddress(@NonNull android.net.LinkAddress);
+    method public boolean addPcscfServer(@NonNull java.net.InetAddress);
+    method @NonNull public java.util.List<java.net.InetAddress> getAddresses();
+    method @NonNull public java.util.List<java.lang.String> getAllInterfaceNames();
+    method @NonNull public java.util.List<android.net.LinkAddress> getAllLinkAddresses();
+    method @NonNull public java.util.List<android.net.RouteInfo> getAllRoutes();
+    method @Nullable public android.net.Uri getCaptivePortalApiUrl();
+    method @Nullable public android.net.CaptivePortalData getCaptivePortalData();
+    method @NonNull public java.util.List<java.net.InetAddress> getPcscfServers();
+    method @Nullable public String getTcpBufferSizes();
+    method @NonNull public java.util.List<java.net.InetAddress> getValidatedPrivateDnsServers();
+    method public boolean hasGlobalIpv6Address();
+    method public boolean hasIpv4Address();
+    method public boolean hasIpv4DefaultRoute();
+    method public boolean hasIpv4DnsServer();
+    method public boolean hasIpv6DefaultRoute();
+    method public boolean hasIpv6DnsServer();
+    method public boolean isIpv4Provisioned();
+    method public boolean isIpv6Provisioned();
+    method public boolean isProvisioned();
+    method public boolean isReachable(@NonNull java.net.InetAddress);
+    method public boolean removeDnsServer(@NonNull java.net.InetAddress);
+    method public boolean removeLinkAddress(@NonNull android.net.LinkAddress);
+    method public boolean removeRoute(@NonNull android.net.RouteInfo);
+    method public void setCaptivePortalApiUrl(@Nullable android.net.Uri);
+    method public void setCaptivePortalData(@Nullable android.net.CaptivePortalData);
+    method public void setPcscfServers(@NonNull java.util.Collection<java.net.InetAddress>);
+    method public void setPrivateDnsServerName(@Nullable String);
+    method public void setTcpBufferSizes(@Nullable String);
+    method public void setUsePrivateDns(boolean);
+    method public void setValidatedPrivateDnsServers(@NonNull java.util.Collection<java.net.InetAddress>);
+  }
+
+  public final class MatchAllNetworkSpecifier extends android.net.NetworkSpecifier implements android.os.Parcelable {
+    ctor public MatchAllNetworkSpecifier();
+    method public int describeContents();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.MatchAllNetworkSpecifier> CREATOR;
+  }
+
+  public final class NattKeepalivePacketData extends android.net.KeepalivePacketData implements android.os.Parcelable {
+    ctor public NattKeepalivePacketData(@NonNull java.net.InetAddress, int, @NonNull java.net.InetAddress, int, @NonNull byte[]) throws android.net.InvalidPacketException;
+    method public int describeContents();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.NattKeepalivePacketData> CREATOR;
+  }
+
+  public class Network implements android.os.Parcelable {
+    ctor public Network(@NonNull android.net.Network);
+    method public int getNetId();
+    method @NonNull public android.net.Network getPrivateDnsBypassingCopy();
+  }
+
+  public abstract class NetworkAgent {
+    ctor public NetworkAgent(@NonNull android.content.Context, @NonNull android.os.Looper, @NonNull String, @NonNull android.net.NetworkCapabilities, @NonNull android.net.LinkProperties, int, @NonNull android.net.NetworkAgentConfig, @Nullable android.net.NetworkProvider);
+    method @Nullable public android.net.Network getNetwork();
+    method public void markConnected();
+    method public void onAddKeepalivePacketFilter(int, @NonNull android.net.KeepalivePacketData);
+    method public void onAutomaticReconnectDisabled();
+    method public void onNetworkUnwanted();
+    method public void onRemoveKeepalivePacketFilter(int);
+    method public void onSaveAcceptUnvalidated(boolean);
+    method public void onSignalStrengthThresholdsUpdated(@NonNull int[]);
+    method public void onStartSocketKeepalive(int, @NonNull java.time.Duration, @NonNull android.net.KeepalivePacketData);
+    method public void onStopSocketKeepalive(int);
+    method public void onValidationStatus(int, @Nullable android.net.Uri);
+    method @NonNull public android.net.Network register();
+    method public final void sendLinkProperties(@NonNull android.net.LinkProperties);
+    method public final void sendNetworkCapabilities(@NonNull android.net.NetworkCapabilities);
+    method public final void sendNetworkScore(@IntRange(from=0, to=99) int);
+    method public final void sendSocketKeepaliveEvent(int, int);
+    method public final void setUnderlyingNetworks(@Nullable java.util.List<android.net.Network>);
+    method public void unregister();
+    field public static final int VALIDATION_STATUS_NOT_VALID = 2; // 0x2
+    field public static final int VALIDATION_STATUS_VALID = 1; // 0x1
+  }
+
+  public final class NetworkAgentConfig implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getLegacyType();
+    method @NonNull public String getLegacyTypeName();
+    method public boolean isExplicitlySelected();
+    method public boolean isPartialConnectivityAcceptable();
+    method public boolean isUnvalidatedConnectivityAcceptable();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkAgentConfig> CREATOR;
+  }
+
+  public static final class NetworkAgentConfig.Builder {
+    ctor public NetworkAgentConfig.Builder();
+    method @NonNull public android.net.NetworkAgentConfig build();
+    method @NonNull public android.net.NetworkAgentConfig.Builder setExplicitlySelected(boolean);
+    method @NonNull public android.net.NetworkAgentConfig.Builder setLegacyType(int);
+    method @NonNull public android.net.NetworkAgentConfig.Builder setLegacyTypeName(@NonNull String);
+    method @NonNull public android.net.NetworkAgentConfig.Builder setPartialConnectivityAcceptable(boolean);
+    method @NonNull public android.net.NetworkAgentConfig.Builder setUnvalidatedConnectivityAcceptable(boolean);
+  }
+
+  public final class NetworkCapabilities implements android.os.Parcelable {
+    method @NonNull public int[] getAdministratorUids();
+    method @Nullable public String getSsid();
+    method @NonNull public int[] getTransportTypes();
+    method public boolean satisfiedByNetworkCapabilities(@Nullable android.net.NetworkCapabilities);
+    field public static final int NET_CAPABILITY_OEM_PAID = 22; // 0x16
+    field public static final int NET_CAPABILITY_OEM_PRIVATE = 26; // 0x1a
+    field public static final int NET_CAPABILITY_PARTIAL_CONNECTIVITY = 24; // 0x18
+  }
+
+  public static final class NetworkCapabilities.Builder {
+    ctor public NetworkCapabilities.Builder();
+    ctor public NetworkCapabilities.Builder(@NonNull android.net.NetworkCapabilities);
+    method @NonNull public android.net.NetworkCapabilities.Builder addCapability(int);
+    method @NonNull public android.net.NetworkCapabilities.Builder addTransportType(int);
+    method @NonNull public android.net.NetworkCapabilities build();
+    method @NonNull public android.net.NetworkCapabilities.Builder removeCapability(int);
+    method @NonNull public android.net.NetworkCapabilities.Builder removeTransportType(int);
+    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public android.net.NetworkCapabilities.Builder setAdministratorUids(@NonNull int[]);
+    method @NonNull public android.net.NetworkCapabilities.Builder setLinkDownstreamBandwidthKbps(int);
+    method @NonNull public android.net.NetworkCapabilities.Builder setLinkUpstreamBandwidthKbps(int);
+    method @NonNull public android.net.NetworkCapabilities.Builder setNetworkSpecifier(@Nullable android.net.NetworkSpecifier);
+    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public android.net.NetworkCapabilities.Builder setOwnerUid(int);
+    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public android.net.NetworkCapabilities.Builder setRequestorPackageName(@Nullable String);
+    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public android.net.NetworkCapabilities.Builder setRequestorUid(int);
+    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP) public android.net.NetworkCapabilities.Builder setSignalStrength(int);
+    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public android.net.NetworkCapabilities.Builder setSsid(@Nullable String);
+    method @NonNull public android.net.NetworkCapabilities.Builder setTransportInfo(@Nullable android.net.TransportInfo);
+  }
+
+  public class NetworkKey implements android.os.Parcelable {
+    ctor public NetworkKey(android.net.WifiKey);
+    method @Nullable public static android.net.NetworkKey createFromScanResult(@NonNull android.net.wifi.ScanResult);
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkKey> CREATOR;
+    field public static final int TYPE_WIFI = 1; // 0x1
+    field public final int type;
+    field public final android.net.WifiKey wifiKey;
+  }
+
+  public class NetworkProvider {
+    ctor public NetworkProvider(@NonNull android.content.Context, @NonNull android.os.Looper, @NonNull String);
+    method @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public void declareNetworkRequestUnfulfillable(@NonNull android.net.NetworkRequest);
+    method public int getProviderId();
+    method public void onNetworkRequestWithdrawn(@NonNull android.net.NetworkRequest);
+    method public void onNetworkRequested(@NonNull android.net.NetworkRequest, @IntRange(from=0, to=99) int, int);
+    field public static final int ID_NONE = -1; // 0xffffffff
+  }
+
+  public abstract class NetworkRecommendationProvider {
+    ctor public NetworkRecommendationProvider(android.content.Context, java.util.concurrent.Executor);
+    method public final android.os.IBinder getBinder();
+    method public abstract void onRequestScores(android.net.NetworkKey[]);
+  }
+
+  public class NetworkRequest implements android.os.Parcelable {
+    method @Nullable public String getRequestorPackageName();
+    method public int getRequestorUid();
+  }
+
+  public static class NetworkRequest.Builder {
+    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP) public android.net.NetworkRequest.Builder setSignalStrength(int);
+  }
+
+  public class NetworkScoreManager {
+    method @RequiresPermission(anyOf={android.Manifest.permission.SCORE_NETWORKS, android.Manifest.permission.REQUEST_NETWORK_SCORES}) public boolean clearScores() throws java.lang.SecurityException;
+    method @RequiresPermission(anyOf={android.Manifest.permission.SCORE_NETWORKS, android.Manifest.permission.REQUEST_NETWORK_SCORES}) public void disableScoring() throws java.lang.SecurityException;
+    method @RequiresPermission(anyOf={android.Manifest.permission.SCORE_NETWORKS, android.Manifest.permission.REQUEST_NETWORK_SCORES}) public String getActiveScorerPackage();
+    method @RequiresPermission(android.Manifest.permission.REQUEST_NETWORK_SCORES) public void registerNetworkScoreCallback(int, int, @NonNull java.util.concurrent.Executor, @NonNull android.net.NetworkScoreManager.NetworkScoreCallback) throws java.lang.SecurityException;
+    method @RequiresPermission(android.Manifest.permission.REQUEST_NETWORK_SCORES) public boolean requestScores(@NonNull java.util.Collection<android.net.NetworkKey>) throws java.lang.SecurityException;
+    method @RequiresPermission(anyOf={android.Manifest.permission.SCORE_NETWORKS, android.Manifest.permission.REQUEST_NETWORK_SCORES}) public boolean setActiveScorer(String) throws java.lang.SecurityException;
+    method @RequiresPermission(android.Manifest.permission.SCORE_NETWORKS) public boolean updateScores(@NonNull android.net.ScoredNetwork[]) throws java.lang.SecurityException;
+    field @Deprecated public static final String ACTION_CHANGE_ACTIVE = "android.net.scoring.CHANGE_ACTIVE";
+    field public static final String ACTION_CUSTOM_ENABLE = "android.net.scoring.CUSTOM_ENABLE";
+    field public static final String ACTION_RECOMMEND_NETWORKS = "android.net.action.RECOMMEND_NETWORKS";
+    field public static final String ACTION_SCORER_CHANGED = "android.net.scoring.SCORER_CHANGED";
+    field @Deprecated public static final String ACTION_SCORE_NETWORKS = "android.net.scoring.SCORE_NETWORKS";
+    field @Deprecated public static final String EXTRA_NETWORKS_TO_SCORE = "networksToScore";
+    field public static final String EXTRA_NEW_SCORER = "newScorer";
+    field @Deprecated public static final String EXTRA_PACKAGE_NAME = "packageName";
+    field public static final int SCORE_FILTER_CURRENT_NETWORK = 1; // 0x1
+    field public static final int SCORE_FILTER_NONE = 0; // 0x0
+    field public static final int SCORE_FILTER_SCAN_RESULTS = 2; // 0x2
+  }
+
+  public abstract static class NetworkScoreManager.NetworkScoreCallback {
+    ctor public NetworkScoreManager.NetworkScoreCallback();
+    method public abstract void onScoresInvalidated();
+    method public abstract void onScoresUpdated(@NonNull java.util.Collection<android.net.ScoredNetwork>);
+  }
+
+  public abstract class NetworkSpecifier {
+    method public boolean canBeSatisfiedBy(@Nullable android.net.NetworkSpecifier);
+    method @Nullable public android.net.NetworkSpecifier redact();
+  }
+
+  public class NetworkStack {
+    method @Nullable public static android.os.IBinder getService();
+    field public static final String PERMISSION_MAINLINE_NETWORK_STACK = "android.permission.MAINLINE_NETWORK_STACK";
+  }
+
+  public final class NetworkStats implements android.os.Parcelable {
+    ctor public NetworkStats(long, int);
+    method @NonNull public android.net.NetworkStats add(@NonNull android.net.NetworkStats);
+    method @NonNull public android.net.NetworkStats addEntry(@NonNull android.net.NetworkStats.Entry);
+    method public int describeContents();
+    method @NonNull public android.net.NetworkStats subtract(@NonNull android.net.NetworkStats);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkStats> CREATOR;
+    field public static final int DEFAULT_NETWORK_NO = 0; // 0x0
+    field public static final int DEFAULT_NETWORK_YES = 1; // 0x1
+    field public static final String IFACE_VT = "vt_data0";
+    field public static final int METERED_NO = 0; // 0x0
+    field public static final int METERED_YES = 1; // 0x1
+    field public static final int ROAMING_NO = 0; // 0x0
+    field public static final int ROAMING_YES = 1; // 0x1
+    field public static final int SET_DEFAULT = 0; // 0x0
+    field public static final int SET_FOREGROUND = 1; // 0x1
+    field public static final int TAG_NONE = 0; // 0x0
+    field public static final int UID_ALL = -1; // 0xffffffff
+    field public static final int UID_TETHERING = -5; // 0xfffffffb
+  }
+
+  public static class NetworkStats.Entry {
+    ctor public NetworkStats.Entry(@Nullable String, int, int, int, int, int, int, long, long, long, long, long);
+  }
+
+  public final class RouteInfo implements android.os.Parcelable {
+    ctor public RouteInfo(@Nullable android.net.IpPrefix, @Nullable java.net.InetAddress, @Nullable String, int);
+    ctor public RouteInfo(@Nullable android.net.IpPrefix, @Nullable java.net.InetAddress, @Nullable String, int, int);
+    method public int getMtu();
+    method public int getType();
+    field public static final int RTN_THROW = 9; // 0x9
+    field public static final int RTN_UNICAST = 1; // 0x1
+    field public static final int RTN_UNREACHABLE = 7; // 0x7
+  }
+
+  public class RssiCurve implements android.os.Parcelable {
+    ctor public RssiCurve(int, int, byte[]);
+    ctor public RssiCurve(int, int, byte[], int);
+    method public int describeContents();
+    method public byte lookupScore(int);
+    method public byte lookupScore(int, boolean);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.RssiCurve> CREATOR;
+    field public final int activeNetworkRssiBoost;
+    field public final int bucketWidth;
+    field public final byte[] rssiBuckets;
+    field public final int start;
+  }
+
+  public class ScoredNetwork implements android.os.Parcelable {
+    ctor public ScoredNetwork(android.net.NetworkKey, android.net.RssiCurve);
+    ctor public ScoredNetwork(android.net.NetworkKey, android.net.RssiCurve, boolean);
+    ctor public ScoredNetwork(android.net.NetworkKey, android.net.RssiCurve, boolean, @Nullable android.os.Bundle);
+    method public int calculateBadge(int);
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final String ATTRIBUTES_KEY_BADGING_CURVE = "android.net.attributes.key.BADGING_CURVE";
+    field public static final String ATTRIBUTES_KEY_HAS_CAPTIVE_PORTAL = "android.net.attributes.key.HAS_CAPTIVE_PORTAL";
+    field public static final String ATTRIBUTES_KEY_RANKING_SCORE_OFFSET = "android.net.attributes.key.RANKING_SCORE_OFFSET";
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.ScoredNetwork> CREATOR;
+    field @Nullable public final android.os.Bundle attributes;
+    field public final boolean meteredHint;
+    field public final android.net.NetworkKey networkKey;
+    field public final android.net.RssiCurve rssiCurve;
+  }
+
+  public abstract class SocketKeepalive implements java.lang.AutoCloseable {
+    field public static final int SUCCESS = 0; // 0x0
+  }
+
+  public final class StaticIpConfiguration implements android.os.Parcelable {
+    ctor public StaticIpConfiguration();
+    ctor public StaticIpConfiguration(@Nullable android.net.StaticIpConfiguration);
+    method public void addDnsServer(@NonNull java.net.InetAddress);
+    method public void clear();
+    method public int describeContents();
+    method @NonNull public java.util.List<java.net.InetAddress> getDnsServers();
+    method @Nullable public String getDomains();
+    method @Nullable public java.net.InetAddress getGateway();
+    method @Nullable public android.net.LinkAddress getIpAddress();
+    method @NonNull public java.util.List<android.net.RouteInfo> getRoutes(@Nullable String);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.StaticIpConfiguration> CREATOR;
+  }
+
+  public static final class StaticIpConfiguration.Builder {
+    ctor public StaticIpConfiguration.Builder();
+    method @NonNull public android.net.StaticIpConfiguration build();
+    method @NonNull public android.net.StaticIpConfiguration.Builder setDnsServers(@NonNull Iterable<java.net.InetAddress>);
+    method @NonNull public android.net.StaticIpConfiguration.Builder setDomains(@Nullable String);
+    method @NonNull public android.net.StaticIpConfiguration.Builder setGateway(@Nullable java.net.InetAddress);
+    method @NonNull public android.net.StaticIpConfiguration.Builder setIpAddress(@Nullable android.net.LinkAddress);
+  }
+
+  public class TrafficStats {
+    method public static void setThreadStatsTagApp();
+    method public static void setThreadStatsTagBackup();
+    method public static void setThreadStatsTagRestore();
+    field public static final int TAG_NETWORK_STACK_IMPERSONATION_RANGE_END = -113; // 0xffffff8f
+    field public static final int TAG_NETWORK_STACK_IMPERSONATION_RANGE_START = -128; // 0xffffff80
+    field public static final int TAG_NETWORK_STACK_RANGE_END = -257; // 0xfffffeff
+    field public static final int TAG_NETWORK_STACK_RANGE_START = -768; // 0xfffffd00
+    field public static final int TAG_SYSTEM_IMPERSONATION_RANGE_END = -241; // 0xffffff0f
+    field public static final int TAG_SYSTEM_IMPERSONATION_RANGE_START = -256; // 0xffffff00
+  }
+
+  public abstract class Uri implements java.lang.Comparable<android.net.Uri> android.os.Parcelable {
+    method @NonNull public String toSafeString();
+  }
+
+  public class VpnService extends android.app.Service {
+    method @RequiresPermission(android.Manifest.permission.CONTROL_VPN) public static void prepareAndAuthorize(android.content.Context);
+  }
+
+  public class WebAddress {
+    ctor public WebAddress(String) throws android.net.ParseException;
+  }
+
+  public class WifiKey implements android.os.Parcelable {
+    ctor public WifiKey(String, String);
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.WifiKey> CREATOR;
+    field public final String bssid;
+    field public final String ssid;
+  }
+
+}
+
+package android.net.apf {
+
+  public final class ApfCapabilities implements android.os.Parcelable {
+    ctor public ApfCapabilities(int, int, int);
+    method public int describeContents();
+    method public static boolean getApfDrop8023Frames();
+    method @NonNull public static int[] getApfEtherTypeBlackList();
+    method public boolean hasDataAccess();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final android.os.Parcelable.Creator<android.net.apf.ApfCapabilities> CREATOR;
+    field public final int apfPacketFormat;
+    field public final int apfVersionSupported;
+    field public final int maximumApfProgramSize;
+  }
+
+}
+
+package android.net.metrics {
+
+  public final class ApfProgramEvent implements android.net.metrics.IpConnectivityLog.Event {
+  }
+
+  public static final class ApfProgramEvent.Builder {
+    ctor public ApfProgramEvent.Builder();
+    method @NonNull public android.net.metrics.ApfProgramEvent build();
+    method @NonNull public android.net.metrics.ApfProgramEvent.Builder setActualLifetime(long);
+    method @NonNull public android.net.metrics.ApfProgramEvent.Builder setCurrentRas(int);
+    method @NonNull public android.net.metrics.ApfProgramEvent.Builder setFilteredRas(int);
+    method @NonNull public android.net.metrics.ApfProgramEvent.Builder setFlags(boolean, boolean);
+    method @NonNull public android.net.metrics.ApfProgramEvent.Builder setLifetime(long);
+    method @NonNull public android.net.metrics.ApfProgramEvent.Builder setProgramLength(int);
+  }
+
+  public final class ApfStats implements android.net.metrics.IpConnectivityLog.Event {
+  }
+
+  public static final class ApfStats.Builder {
+    ctor public ApfStats.Builder();
+    method @NonNull public android.net.metrics.ApfStats build();
+    method @NonNull public android.net.metrics.ApfStats.Builder setDroppedRas(int);
+    method @NonNull public android.net.metrics.ApfStats.Builder setDurationMs(long);
+    method @NonNull public android.net.metrics.ApfStats.Builder setMatchingRas(int);
+    method @NonNull public android.net.metrics.ApfStats.Builder setMaxProgramSize(int);
+    method @NonNull public android.net.metrics.ApfStats.Builder setParseErrors(int);
+    method @NonNull public android.net.metrics.ApfStats.Builder setProgramUpdates(int);
+    method @NonNull public android.net.metrics.ApfStats.Builder setProgramUpdatesAll(int);
+    method @NonNull public android.net.metrics.ApfStats.Builder setProgramUpdatesAllowingMulticast(int);
+    method @NonNull public android.net.metrics.ApfStats.Builder setReceivedRas(int);
+    method @NonNull public android.net.metrics.ApfStats.Builder setZeroLifetimeRas(int);
+  }
+
+  public final class DhcpClientEvent implements android.net.metrics.IpConnectivityLog.Event {
+  }
+
+  public static final class DhcpClientEvent.Builder {
+    ctor public DhcpClientEvent.Builder();
+    method @NonNull public android.net.metrics.DhcpClientEvent build();
+    method @NonNull public android.net.metrics.DhcpClientEvent.Builder setDurationMs(int);
+    method @NonNull public android.net.metrics.DhcpClientEvent.Builder setMsg(String);
+  }
+
+  public final class DhcpErrorEvent implements android.net.metrics.IpConnectivityLog.Event {
+    ctor public DhcpErrorEvent(int);
+    method public static int errorCodeWithOption(int, int);
+    field public static final int BOOTP_TOO_SHORT = 67174400; // 0x4010000
+    field public static final int BUFFER_UNDERFLOW = 83951616; // 0x5010000
+    field public static final int DHCP_BAD_MAGIC_COOKIE = 67239936; // 0x4020000
+    field public static final int DHCP_ERROR = 4; // 0x4
+    field public static final int DHCP_INVALID_OPTION_LENGTH = 67305472; // 0x4030000
+    field public static final int DHCP_NO_COOKIE = 67502080; // 0x4060000
+    field public static final int DHCP_NO_MSG_TYPE = 67371008; // 0x4040000
+    field public static final int DHCP_UNKNOWN_MSG_TYPE = 67436544; // 0x4050000
+    field public static final int L2_ERROR = 1; // 0x1
+    field public static final int L2_TOO_SHORT = 16842752; // 0x1010000
+    field public static final int L2_WRONG_ETH_TYPE = 16908288; // 0x1020000
+    field public static final int L3_ERROR = 2; // 0x2
+    field public static final int L3_INVALID_IP = 33751040; // 0x2030000
+    field public static final int L3_NOT_IPV4 = 33685504; // 0x2020000
+    field public static final int L3_TOO_SHORT = 33619968; // 0x2010000
+    field public static final int L4_ERROR = 3; // 0x3
+    field public static final int L4_NOT_UDP = 50397184; // 0x3010000
+    field public static final int L4_WRONG_PORT = 50462720; // 0x3020000
+    field public static final int MISC_ERROR = 5; // 0x5
+    field public static final int PARSING_ERROR = 84082688; // 0x5030000
+    field public static final int RECEIVE_ERROR = 84017152; // 0x5020000
+  }
+
+  public class IpConnectivityLog {
+    ctor public IpConnectivityLog();
+    method public boolean log(long, @NonNull android.net.metrics.IpConnectivityLog.Event);
+    method public boolean log(@NonNull String, @NonNull android.net.metrics.IpConnectivityLog.Event);
+    method public boolean log(@NonNull android.net.Network, @NonNull int[], @NonNull android.net.metrics.IpConnectivityLog.Event);
+    method public boolean log(int, @NonNull int[], @NonNull android.net.metrics.IpConnectivityLog.Event);
+    method public boolean log(@NonNull android.net.metrics.IpConnectivityLog.Event);
+  }
+
+  public static interface IpConnectivityLog.Event extends android.os.Parcelable {
+  }
+
+  public final class IpManagerEvent implements android.net.metrics.IpConnectivityLog.Event {
+    ctor public IpManagerEvent(int, long);
+    field public static final int COMPLETE_LIFECYCLE = 3; // 0x3
+    field public static final int ERROR_INTERFACE_NOT_FOUND = 8; // 0x8
+    field public static final int ERROR_INVALID_PROVISIONING = 7; // 0x7
+    field public static final int ERROR_STARTING_IPREACHABILITYMONITOR = 6; // 0x6
+    field public static final int ERROR_STARTING_IPV4 = 4; // 0x4
+    field public static final int ERROR_STARTING_IPV6 = 5; // 0x5
+    field public static final int PROVISIONING_FAIL = 2; // 0x2
+    field public static final int PROVISIONING_OK = 1; // 0x1
+  }
+
+  public final class IpReachabilityEvent implements android.net.metrics.IpConnectivityLog.Event {
+    ctor public IpReachabilityEvent(int);
+    field public static final int NUD_FAILED = 512; // 0x200
+    field public static final int NUD_FAILED_ORGANIC = 1024; // 0x400
+    field public static final int PROBE = 256; // 0x100
+    field public static final int PROVISIONING_LOST = 768; // 0x300
+    field public static final int PROVISIONING_LOST_ORGANIC = 1280; // 0x500
+  }
+
+  public final class NetworkEvent implements android.net.metrics.IpConnectivityLog.Event {
+    ctor public NetworkEvent(int, long);
+    ctor public NetworkEvent(int);
+    field public static final int NETWORK_CAPTIVE_PORTAL_FOUND = 4; // 0x4
+    field public static final int NETWORK_CONNECTED = 1; // 0x1
+    field public static final int NETWORK_CONSECUTIVE_DNS_TIMEOUT_FOUND = 12; // 0xc
+    field public static final int NETWORK_DISCONNECTED = 7; // 0x7
+    field public static final int NETWORK_FIRST_VALIDATION_PORTAL_FOUND = 10; // 0xa
+    field public static final int NETWORK_FIRST_VALIDATION_SUCCESS = 8; // 0x8
+    field public static final int NETWORK_LINGER = 5; // 0x5
+    field public static final int NETWORK_PARTIAL_CONNECTIVITY = 13; // 0xd
+    field public static final int NETWORK_REVALIDATION_PORTAL_FOUND = 11; // 0xb
+    field public static final int NETWORK_REVALIDATION_SUCCESS = 9; // 0x9
+    field public static final int NETWORK_UNLINGER = 6; // 0x6
+    field public static final int NETWORK_VALIDATED = 2; // 0x2
+    field public static final int NETWORK_VALIDATION_FAILED = 3; // 0x3
+  }
+
+  public final class RaEvent implements android.net.metrics.IpConnectivityLog.Event {
+  }
+
+  public static final class RaEvent.Builder {
+    ctor public RaEvent.Builder();
+    method @NonNull public android.net.metrics.RaEvent build();
+    method @NonNull public android.net.metrics.RaEvent.Builder updateDnsslLifetime(long);
+    method @NonNull public android.net.metrics.RaEvent.Builder updatePrefixPreferredLifetime(long);
+    method @NonNull public android.net.metrics.RaEvent.Builder updatePrefixValidLifetime(long);
+    method @NonNull public android.net.metrics.RaEvent.Builder updateRdnssLifetime(long);
+    method @NonNull public android.net.metrics.RaEvent.Builder updateRouteInfoLifetime(long);
+    method @NonNull public android.net.metrics.RaEvent.Builder updateRouterLifetime(long);
+  }
+
+  public final class ValidationProbeEvent implements android.net.metrics.IpConnectivityLog.Event {
+    method @NonNull public static String getProbeName(int);
+    field public static final int DNS_FAILURE = 0; // 0x0
+    field public static final int DNS_SUCCESS = 1; // 0x1
+    field public static final int PROBE_DNS = 0; // 0x0
+    field public static final int PROBE_FALLBACK = 4; // 0x4
+    field public static final int PROBE_HTTP = 1; // 0x1
+    field public static final int PROBE_HTTPS = 2; // 0x2
+    field public static final int PROBE_PAC = 3; // 0x3
+    field public static final int PROBE_PRIVDNS = 5; // 0x5
+  }
+
+  public static final class ValidationProbeEvent.Builder {
+    ctor public ValidationProbeEvent.Builder();
+    method @NonNull public android.net.metrics.ValidationProbeEvent build();
+    method @NonNull public android.net.metrics.ValidationProbeEvent.Builder setDurationMs(long);
+    method @NonNull public android.net.metrics.ValidationProbeEvent.Builder setProbeType(int, boolean);
+    method @NonNull public android.net.metrics.ValidationProbeEvent.Builder setReturnCode(int);
+  }
+
+}
+
+package android.net.netstats.provider {
+
+  public abstract class NetworkStatsProvider {
+    ctor public NetworkStatsProvider();
+    method public void notifyAlertReached();
+    method public void notifyLimitReached();
+    method public void notifyStatsUpdated(int, @NonNull android.net.NetworkStats, @NonNull android.net.NetworkStats);
+    method public abstract void onRequestStatsUpdate(int);
+    method public abstract void onSetAlert(long);
+    method public abstract void onSetLimit(@NonNull String, long);
+    field public static final int QUOTA_UNLIMITED = -1; // 0xffffffff
+  }
+
+}
+
+package android.net.sip {
+
+  public class SipAudioCall {
+    method @Nullable public android.net.rtp.AudioGroup getAudioGroup();
+    method public void setAudioGroup(@NonNull android.net.rtp.AudioGroup);
+  }
+
+  public class SipManager {
+    method @NonNull public java.util.List<android.net.sip.SipProfile> getProfiles() throws android.net.sip.SipException;
+    field public static final String ACTION_SIP_CALL_OPTION_CHANGED = "android.net.sip.action.SIP_CALL_OPTION_CHANGED";
+    field public static final String ACTION_SIP_INCOMING_CALL = "android.net.sip.action.SIP_INCOMING_CALL";
+    field public static final String ACTION_SIP_REMOVE_PROFILE = "android.net.sip.action.SIP_REMOVE_PROFILE";
+    field public static final String ACTION_SIP_SERVICE_UP = "android.net.sip.action.SIP_SERVICE_UP";
+    field public static final String ACTION_START_SIP = "android.net.sip.action.START_SIP";
+  }
+
+  public class SipProfile implements java.lang.Cloneable android.os.Parcelable java.io.Serializable {
+    method public int getCallingUid();
+  }
+
+}
+
+package android.net.util {
+
+  public final class SocketUtils {
+    method public static void bindSocketToInterface(@NonNull java.io.FileDescriptor, @NonNull String) throws android.system.ErrnoException;
+    method public static void closeSocket(@Nullable java.io.FileDescriptor) throws java.io.IOException;
+    method @NonNull public static java.net.SocketAddress makeNetlinkSocketAddress(int, int);
+    method @NonNull public static java.net.SocketAddress makePacketSocketAddress(int, int);
+    method @Deprecated @NonNull public static java.net.SocketAddress makePacketSocketAddress(int, @NonNull byte[]);
+    method @NonNull public static java.net.SocketAddress makePacketSocketAddress(int, int, @NonNull byte[]);
+  }
+
+}
+
+package android.net.wifi {
+
+  public final class WifiMigration {
+    method @Nullable public static java.io.InputStream convertAndRetrieveSharedConfigStoreFile(int);
+    method @Nullable public static java.io.InputStream convertAndRetrieveUserConfigStoreFile(int, @NonNull android.os.UserHandle);
+    method @NonNull public static android.net.wifi.WifiMigration.SettingsMigrationData loadFromSettings(@NonNull android.content.Context);
+    method public static void removeSharedConfigStoreFile(int);
+    method public static void removeUserConfigStoreFile(int, @NonNull android.os.UserHandle);
+    field public static final int STORE_FILE_SHARED_GENERAL = 0; // 0x0
+    field public static final int STORE_FILE_SHARED_SOFTAP = 1; // 0x1
+    field public static final int STORE_FILE_USER_GENERAL = 2; // 0x2
+    field public static final int STORE_FILE_USER_NETWORK_SUGGESTIONS = 3; // 0x3
+  }
+
+  public static final class WifiMigration.SettingsMigrationData implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public String getP2pDeviceName();
+    method public boolean isP2pFactoryResetPending();
+    method public boolean isScanAlwaysAvailable();
+    method public boolean isScanThrottleEnabled();
+    method public boolean isSoftApTimeoutEnabled();
+    method public boolean isVerboseLoggingEnabled();
+    method public boolean isWakeUpEnabled();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.WifiMigration.SettingsMigrationData> CREATOR;
+  }
+
+  public static final class WifiMigration.SettingsMigrationData.Builder {
+    ctor public WifiMigration.SettingsMigrationData.Builder();
+    method @NonNull public android.net.wifi.WifiMigration.SettingsMigrationData build();
+    method @NonNull public android.net.wifi.WifiMigration.SettingsMigrationData.Builder setP2pDeviceName(@Nullable String);
+    method @NonNull public android.net.wifi.WifiMigration.SettingsMigrationData.Builder setP2pFactoryResetPending(boolean);
+    method @NonNull public android.net.wifi.WifiMigration.SettingsMigrationData.Builder setScanAlwaysAvailable(boolean);
+    method @NonNull public android.net.wifi.WifiMigration.SettingsMigrationData.Builder setScanThrottleEnabled(boolean);
+    method @NonNull public android.net.wifi.WifiMigration.SettingsMigrationData.Builder setSoftApTimeoutEnabled(boolean);
+    method @NonNull public android.net.wifi.WifiMigration.SettingsMigrationData.Builder setVerboseLoggingEnabled(boolean);
+    method @NonNull public android.net.wifi.WifiMigration.SettingsMigrationData.Builder setWakeUpEnabled(boolean);
+  }
+
+}
+
+package android.net.wifi.nl80211 {
+
+  public final class DeviceWiphyCapabilities implements android.os.Parcelable {
+    ctor public DeviceWiphyCapabilities();
+    method public int describeContents();
+    method public int getMaxNumberRxSpatialStreams();
+    method public int getMaxNumberTxSpatialStreams();
+    method public boolean isChannelWidthSupported(int);
+    method public boolean isWifiStandardSupported(int);
+    method public void setWifiStandardSupport(int, boolean);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.nl80211.DeviceWiphyCapabilities> CREATOR;
+  }
+
+  public final class NativeScanResult implements android.os.Parcelable {
+    ctor public NativeScanResult();
+    method public int describeContents();
+    method @Nullable public android.net.MacAddress getBssid();
+    method public int getCapabilities();
+    method public int getFrequencyMhz();
+    method @NonNull public byte[] getInformationElements();
+    method @NonNull public java.util.List<android.net.wifi.nl80211.RadioChainInfo> getRadioChainInfos();
+    method public int getSignalMbm();
+    method @NonNull public byte[] getSsid();
+    method public long getTsf();
+    method public boolean isAssociated();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field public static final int BSS_CAPABILITY_APSD = 2048; // 0x800
+    field public static final int BSS_CAPABILITY_CF_POLLABLE = 4; // 0x4
+    field public static final int BSS_CAPABILITY_CF_POLL_REQUEST = 8; // 0x8
+    field public static final int BSS_CAPABILITY_CHANNEL_AGILITY = 128; // 0x80
+    field public static final int BSS_CAPABILITY_DELAYED_BLOCK_ACK = 16384; // 0x4000
+    field public static final int BSS_CAPABILITY_DSSS_OFDM = 8192; // 0x2000
+    field public static final int BSS_CAPABILITY_ESS = 1; // 0x1
+    field public static final int BSS_CAPABILITY_IBSS = 2; // 0x2
+    field public static final int BSS_CAPABILITY_IMMEDIATE_BLOCK_ACK = 32768; // 0x8000
+    field public static final int BSS_CAPABILITY_PBCC = 64; // 0x40
+    field public static final int BSS_CAPABILITY_PRIVACY = 16; // 0x10
+    field public static final int BSS_CAPABILITY_QOS = 512; // 0x200
+    field public static final int BSS_CAPABILITY_RADIO_MANAGEMENT = 4096; // 0x1000
+    field public static final int BSS_CAPABILITY_SHORT_PREAMBLE = 32; // 0x20
+    field public static final int BSS_CAPABILITY_SHORT_SLOT_TIME = 1024; // 0x400
+    field public static final int BSS_CAPABILITY_SPECTRUM_MANAGEMENT = 256; // 0x100
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.nl80211.NativeScanResult> CREATOR;
+  }
+
+  public final class NativeWifiClient implements android.os.Parcelable {
+    ctor public NativeWifiClient(@Nullable android.net.MacAddress);
+    method public int describeContents();
+    method @Nullable public android.net.MacAddress getMacAddress();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.nl80211.NativeWifiClient> CREATOR;
+  }
+
+  public final class PnoNetwork implements android.os.Parcelable {
+    ctor public PnoNetwork();
+    method public int describeContents();
+    method @NonNull public int[] getFrequenciesMhz();
+    method @NonNull public byte[] getSsid();
+    method public boolean isHidden();
+    method public void setFrequenciesMhz(@NonNull int[]);
+    method public void setHidden(boolean);
+    method public void setSsid(@NonNull byte[]);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.nl80211.PnoNetwork> CREATOR;
+  }
+
+  public final class PnoSettings implements android.os.Parcelable {
+    ctor public PnoSettings();
+    method public int describeContents();
+    method public long getIntervalMillis();
+    method public int getMin2gRssiDbm();
+    method public int getMin5gRssiDbm();
+    method public int getMin6gRssiDbm();
+    method @NonNull public java.util.List<android.net.wifi.nl80211.PnoNetwork> getPnoNetworks();
+    method public void setIntervalMillis(long);
+    method public void setMin2gRssiDbm(int);
+    method public void setMin5gRssiDbm(int);
+    method public void setMin6gRssiDbm(int);
+    method public void setPnoNetworks(@NonNull java.util.List<android.net.wifi.nl80211.PnoNetwork>);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.nl80211.PnoSettings> CREATOR;
+  }
+
+  public final class RadioChainInfo implements android.os.Parcelable {
+    ctor public RadioChainInfo(int, int);
+    method public int describeContents();
+    method public int getChainId();
+    method public int getLevelDbm();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.nl80211.RadioChainInfo> CREATOR;
+  }
+
+  public class WifiNl80211Manager {
+    method public void abortScan(@NonNull String);
+    method public void enableVerboseLogging(boolean);
+    method @NonNull public int[] getChannelsMhzForBand(int);
+    method @Nullable public android.net.wifi.nl80211.DeviceWiphyCapabilities getDeviceWiphyCapabilities(@NonNull String);
+    method @NonNull public java.util.List<android.net.wifi.nl80211.NativeScanResult> getScanResults(@NonNull String, int);
+    method @Nullable public android.net.wifi.nl80211.WifiNl80211Manager.TxPacketCounters getTxPacketCounters(@NonNull String);
+    method @Nullable public static android.net.wifi.nl80211.WifiNl80211Manager.OemSecurityType parseOemSecurityTypeElement(int, int, @NonNull byte[]);
+    method public boolean registerApCallback(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.nl80211.WifiNl80211Manager.SoftApCallback);
+    method public void sendMgmtFrame(@NonNull String, @NonNull byte[], int, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.nl80211.WifiNl80211Manager.SendMgmtFrameCallback);
+    method public void setOnServiceDeadCallback(@NonNull Runnable);
+    method public boolean setupInterfaceForClientMode(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.nl80211.WifiNl80211Manager.ScanEventCallback, @NonNull android.net.wifi.nl80211.WifiNl80211Manager.ScanEventCallback);
+    method public boolean setupInterfaceForSoftApMode(@NonNull String);
+    method @Nullable public android.net.wifi.nl80211.WifiNl80211Manager.SignalPollResult signalPoll(@NonNull String);
+    method public boolean startPnoScan(@NonNull String, @NonNull android.net.wifi.nl80211.PnoSettings, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.nl80211.WifiNl80211Manager.PnoScanRequestCallback);
+    method public boolean startScan(@NonNull String, int, @Nullable java.util.Set<java.lang.Integer>, @Nullable java.util.List<byte[]>);
+    method public boolean stopPnoScan(@NonNull String);
+    method public boolean tearDownClientInterface(@NonNull String);
+    method public boolean tearDownInterfaces();
+    method public boolean tearDownSoftApInterface(@NonNull String);
+    field public static final int SCAN_TYPE_PNO_SCAN = 1; // 0x1
+    field public static final int SCAN_TYPE_SINGLE_SCAN = 0; // 0x0
+    field public static final int SEND_MGMT_FRAME_ERROR_ALREADY_STARTED = 5; // 0x5
+    field public static final int SEND_MGMT_FRAME_ERROR_MCS_UNSUPPORTED = 2; // 0x2
+    field public static final int SEND_MGMT_FRAME_ERROR_NO_ACK = 3; // 0x3
+    field public static final int SEND_MGMT_FRAME_ERROR_TIMEOUT = 4; // 0x4
+    field public static final int SEND_MGMT_FRAME_ERROR_UNKNOWN = 1; // 0x1
+  }
+
+  public static class WifiNl80211Manager.OemSecurityType {
+    ctor public WifiNl80211Manager.OemSecurityType(int, @NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.lang.Integer>, int);
+    field public final int groupCipher;
+    field @NonNull public final java.util.List<java.lang.Integer> keyManagement;
+    field @NonNull public final java.util.List<java.lang.Integer> pairwiseCipher;
+    field public final int protocol;
+  }
+
+  public static interface WifiNl80211Manager.PnoScanRequestCallback {
+    method public void onPnoRequestFailed();
+    method public void onPnoRequestSucceeded();
+  }
+
+  public static interface WifiNl80211Manager.ScanEventCallback {
+    method public void onScanFailed();
+    method public void onScanResultReady();
+  }
+
+  public static interface WifiNl80211Manager.SendMgmtFrameCallback {
+    method public void onAck(int);
+    method public void onFailure(int);
+  }
+
+  public static class WifiNl80211Manager.SignalPollResult {
+    field public final int associationFrequencyMHz;
+    field public final int currentRssiDbm;
+    field public final int rxBitrateMbps;
+    field public final int txBitrateMbps;
+  }
+
+  public static interface WifiNl80211Manager.SoftApCallback {
+    method public void onConnectedClientsChanged(@NonNull android.net.wifi.nl80211.NativeWifiClient, boolean);
+    method public void onFailure();
+    method public void onSoftApChannelSwitched(int, int);
+  }
+
+  public static class WifiNl80211Manager.TxPacketCounters {
+    field public final int txPacketFailed;
+    field public final int txPacketSucceeded;
+  }
+
+}
+
+package android.nfc {
+
+  public final class NfcAdapter {
+    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean addNfcUnlockHandler(android.nfc.NfcAdapter.NfcUnlockHandler, String[]);
+    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean disable();
+    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean disable(boolean);
+    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean disableNdefPush();
+    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean enable();
+    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean enableNdefPush();
+    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean enableSecureNfc(boolean);
+    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean removeNfcUnlockHandler(android.nfc.NfcAdapter.NfcUnlockHandler);
+    method public void setNdefPushMessage(android.nfc.NdefMessage, android.app.Activity, int);
+    field public static final int FLAG_NDEF_PUSH_NO_CONFIRM = 1; // 0x1
+  }
+
+  public static interface NfcAdapter.NfcUnlockHandler {
+    method public boolean onUnlockAttempted(android.nfc.Tag);
+  }
+
+}
+
+package android.os {
+
+  public class BatteryManager {
+    method @RequiresPermission(android.Manifest.permission.POWER_SAVER) public boolean setChargingStateUpdateDelayMillis(int);
+    field public static final String EXTRA_EVENTS = "android.os.extra.EVENTS";
+    field public static final String EXTRA_EVENT_TIMESTAMP = "android.os.extra.EVENT_TIMESTAMP";
+  }
+
+  public final class BatterySaverPolicyConfig implements android.os.Parcelable {
+    method public int describeContents();
+    method public float getAdjustBrightnessFactor();
+    method public boolean getAdvertiseIsEnabled();
+    method public boolean getDeferFullBackup();
+    method public boolean getDeferKeyValueBackup();
+    method @NonNull public java.util.Map<java.lang.String,java.lang.String> getDeviceSpecificSettings();
+    method public boolean getDisableAnimation();
+    method public boolean getDisableAod();
+    method public boolean getDisableLaunchBoost();
+    method public boolean getDisableOptionalSensors();
+    method public boolean getDisableSoundTrigger();
+    method public boolean getDisableVibration();
+    method public boolean getEnableAdjustBrightness();
+    method public boolean getEnableDataSaver();
+    method public boolean getEnableFirewall();
+    method public boolean getEnableNightMode();
+    method public boolean getEnableQuickDoze();
+    method public boolean getForceAllAppsStandby();
+    method public boolean getForceBackgroundCheck();
+    method public int getLocationMode();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.BatterySaverPolicyConfig> CREATOR;
+  }
+
+  public static final class BatterySaverPolicyConfig.Builder {
+    ctor public BatterySaverPolicyConfig.Builder();
+    method @NonNull public android.os.BatterySaverPolicyConfig.Builder addDeviceSpecificSetting(@NonNull String, @NonNull String);
+    method @NonNull public android.os.BatterySaverPolicyConfig build();
+    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setAdjustBrightnessFactor(float);
+    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setAdvertiseIsEnabled(boolean);
+    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setDeferFullBackup(boolean);
+    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setDeferKeyValueBackup(boolean);
+    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setDisableAnimation(boolean);
+    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setDisableAod(boolean);
+    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setDisableLaunchBoost(boolean);
+    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setDisableOptionalSensors(boolean);
+    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setDisableSoundTrigger(boolean);
+    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setDisableVibration(boolean);
+    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setEnableAdjustBrightness(boolean);
+    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setEnableDataSaver(boolean);
+    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setEnableFirewall(boolean);
+    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setEnableNightMode(boolean);
+    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setEnableQuickDoze(boolean);
+    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setForceAllAppsStandby(boolean);
+    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setForceBackgroundCheck(boolean);
+    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setLocationMode(int);
+  }
+
+  public final class BatteryStatsManager {
+    method @NonNull @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public android.os.connectivity.CellularBatteryStats getCellularBatteryStats();
+    method @NonNull @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public android.os.connectivity.WifiBatteryStats getWifiBatteryStats();
+    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportFullWifiLockAcquiredFromSource(@NonNull android.os.WorkSource);
+    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportFullWifiLockReleasedFromSource(@NonNull android.os.WorkSource);
+    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiBatchedScanStartedFromSource(@NonNull android.os.WorkSource, @IntRange(from=0) int);
+    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiBatchedScanStoppedFromSource(@NonNull android.os.WorkSource);
+    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiMulticastDisabled(@NonNull android.os.WorkSource);
+    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiMulticastEnabled(@NonNull android.os.WorkSource);
+    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiOff();
+    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiOn();
+    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiRssiChanged(@IntRange(from=0xffffff81, to=0) int);
+    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiScanStartedFromSource(@NonNull android.os.WorkSource);
+    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiScanStoppedFromSource(@NonNull android.os.WorkSource);
+    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiState(int, @Nullable String);
+    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiSupplicantStateChanged(int, boolean);
+    field public static final int WIFI_STATE_OFF = 0; // 0x0
+    field public static final int WIFI_STATE_OFF_SCANNING = 1; // 0x1
+    field public static final int WIFI_STATE_ON_CONNECTED_P2P = 5; // 0x5
+    field public static final int WIFI_STATE_ON_CONNECTED_STA = 4; // 0x4
+    field public static final int WIFI_STATE_ON_CONNECTED_STA_P2P = 6; // 0x6
+    field public static final int WIFI_STATE_ON_DISCONNECTED = 3; // 0x3
+    field public static final int WIFI_STATE_ON_NO_NETWORKS = 2; // 0x2
+    field public static final int WIFI_STATE_SOFT_AP = 7; // 0x7
+    field public static final int WIFI_SUPPL_STATE_ASSOCIATED = 7; // 0x7
+    field public static final int WIFI_SUPPL_STATE_ASSOCIATING = 6; // 0x6
+    field public static final int WIFI_SUPPL_STATE_AUTHENTICATING = 5; // 0x5
+    field public static final int WIFI_SUPPL_STATE_COMPLETED = 10; // 0xa
+    field public static final int WIFI_SUPPL_STATE_DISCONNECTED = 1; // 0x1
+    field public static final int WIFI_SUPPL_STATE_DORMANT = 11; // 0xb
+    field public static final int WIFI_SUPPL_STATE_FOUR_WAY_HANDSHAKE = 8; // 0x8
+    field public static final int WIFI_SUPPL_STATE_GROUP_HANDSHAKE = 9; // 0x9
+    field public static final int WIFI_SUPPL_STATE_INACTIVE = 3; // 0x3
+    field public static final int WIFI_SUPPL_STATE_INTERFACE_DISABLED = 2; // 0x2
+    field public static final int WIFI_SUPPL_STATE_INVALID = 0; // 0x0
+    field public static final int WIFI_SUPPL_STATE_SCANNING = 4; // 0x4
+    field public static final int WIFI_SUPPL_STATE_UNINITIALIZED = 12; // 0xc
+  }
+
+  public class Binder implements android.os.IBinder {
+    method public int handleShellCommand(@NonNull android.os.ParcelFileDescriptor, @NonNull android.os.ParcelFileDescriptor, @NonNull android.os.ParcelFileDescriptor, @NonNull String[]);
+    method public static void setProxyTransactListener(@Nullable android.os.Binder.ProxyTransactListener);
+  }
+
+  public static interface Binder.ProxyTransactListener {
+    method public void onTransactEnded(@Nullable Object);
+    method @Nullable public Object onTransactStarted(@NonNull android.os.IBinder, int);
+  }
+
+  public final class BugreportManager {
+    method @RequiresPermission(android.Manifest.permission.DUMP) public void cancelBugreport();
+    method @RequiresPermission(android.Manifest.permission.DUMP) public void requestBugreport(@NonNull android.os.BugreportParams, @Nullable CharSequence, @Nullable CharSequence);
+    method @RequiresPermission(android.Manifest.permission.DUMP) public void startBugreport(@NonNull android.os.ParcelFileDescriptor, @Nullable android.os.ParcelFileDescriptor, @NonNull android.os.BugreportParams, @NonNull java.util.concurrent.Executor, @NonNull android.os.BugreportManager.BugreportCallback);
+  }
+
+  public abstract static class BugreportManager.BugreportCallback {
+    ctor public BugreportManager.BugreportCallback();
+    method public void onError(int);
+    method public void onFinished();
+    method public void onProgress(@FloatRange(from=0.0f, to=100.0f) float);
+    field public static final int BUGREPORT_ERROR_ANOTHER_REPORT_IN_PROGRESS = 5; // 0x5
+    field public static final int BUGREPORT_ERROR_INVALID_INPUT = 1; // 0x1
+    field public static final int BUGREPORT_ERROR_RUNTIME = 2; // 0x2
+    field public static final int BUGREPORT_ERROR_USER_CONSENT_TIMED_OUT = 4; // 0x4
+    field public static final int BUGREPORT_ERROR_USER_DENIED_CONSENT = 3; // 0x3
+  }
+
+  public final class BugreportParams {
+    ctor public BugreportParams(int);
+    method public int getMode();
+    field public static final int BUGREPORT_MODE_FULL = 0; // 0x0
+    field public static final int BUGREPORT_MODE_INTERACTIVE = 1; // 0x1
+    field public static final int BUGREPORT_MODE_REMOTE = 2; // 0x2
+    field public static final int BUGREPORT_MODE_TELEPHONY = 4; // 0x4
+    field public static final int BUGREPORT_MODE_WEAR = 3; // 0x3
+    field public static final int BUGREPORT_MODE_WIFI = 5; // 0x5
+  }
+
+  public static class Build.VERSION {
+    field @NonNull public static final String PREVIEW_SDK_FINGERPRINT;
+  }
+
+  public final class ConfigUpdate {
+    field public static final String ACTION_UPDATE_CARRIER_ID_DB = "android.os.action.UPDATE_CARRIER_ID_DB";
+    field public static final String ACTION_UPDATE_CARRIER_PROVISIONING_URLS = "android.intent.action.UPDATE_CARRIER_PROVISIONING_URLS";
+    field public static final String ACTION_UPDATE_CONVERSATION_ACTIONS = "android.intent.action.UPDATE_CONVERSATION_ACTIONS";
+    field public static final String ACTION_UPDATE_CT_LOGS = "android.intent.action.UPDATE_CT_LOGS";
+    field public static final String ACTION_UPDATE_EMERGENCY_NUMBER_DB = "android.os.action.UPDATE_EMERGENCY_NUMBER_DB";
+    field public static final String ACTION_UPDATE_INTENT_FIREWALL = "android.intent.action.UPDATE_INTENT_FIREWALL";
+    field public static final String ACTION_UPDATE_LANG_ID = "android.intent.action.UPDATE_LANG_ID";
+    field public static final String ACTION_UPDATE_NETWORK_WATCHLIST = "android.intent.action.UPDATE_NETWORK_WATCHLIST";
+    field public static final String ACTION_UPDATE_PINS = "android.intent.action.UPDATE_PINS";
+    field public static final String ACTION_UPDATE_SMART_SELECTION = "android.intent.action.UPDATE_SMART_SELECTION";
+    field public static final String ACTION_UPDATE_SMS_SHORT_CODES = "android.intent.action.UPDATE_SMS_SHORT_CODES";
+    field public static final String EXTRA_REQUIRED_HASH = "android.os.extra.REQUIRED_HASH";
+    field public static final String EXTRA_VERSION = "android.os.extra.VERSION";
+  }
+
+  public class Environment {
+    method @NonNull public static java.util.Collection<java.io.File> getInternalMediaDirectories();
+    method @NonNull public static java.io.File getOdmDirectory();
+    method @NonNull public static java.io.File getOemDirectory();
+    method @NonNull public static java.io.File getProductDirectory();
+    method @Deprecated @NonNull public static java.io.File getProductServicesDirectory();
+    method @NonNull public static java.io.File getSystemExtDirectory();
+    method @NonNull public static java.io.File getVendorDirectory();
+  }
+
+  public class HidlMemory implements java.io.Closeable {
+    ctor public HidlMemory(@NonNull String, @IntRange(from=0) long, @Nullable android.os.NativeHandle);
+    method public void close() throws java.io.IOException;
+    method @NonNull public android.os.HidlMemory dup() throws java.io.IOException;
+    method protected void finalize();
+    method @Nullable public android.os.NativeHandle getHandle();
+    method @NonNull public String getName();
+    method public long getSize();
+    method @Nullable public android.os.NativeHandle releaseHandle();
+  }
+
+  public class HidlSupport {
+    method public static boolean deepEquals(Object, Object);
+    method public static int deepHashCode(Object);
+    method public static int getPidIfSharable();
+    method public static boolean interfacesEqual(android.os.IHwInterface, Object);
+  }
+
+  public abstract class HwBinder implements android.os.IHwBinder {
+    ctor public HwBinder();
+    method public static final void configureRpcThreadpool(long, boolean);
+    method public static void enableInstrumentation();
+    method public static final android.os.IHwBinder getService(String, String) throws java.util.NoSuchElementException, android.os.RemoteException;
+    method public static final android.os.IHwBinder getService(String, String, boolean) throws java.util.NoSuchElementException, android.os.RemoteException;
+    method public static final void joinRpcThreadpool();
+    method public abstract void onTransact(int, android.os.HwParcel, android.os.HwParcel, int) throws android.os.RemoteException;
+    method public final void registerService(String) throws android.os.RemoteException;
+    method public final void transact(int, android.os.HwParcel, android.os.HwParcel, int) throws android.os.RemoteException;
+  }
+
+  public class HwBlob {
+    ctor public HwBlob(int);
+    method public final void copyToBoolArray(long, boolean[], int);
+    method public final void copyToDoubleArray(long, double[], int);
+    method public final void copyToFloatArray(long, float[], int);
+    method public final void copyToInt16Array(long, short[], int);
+    method public final void copyToInt32Array(long, int[], int);
+    method public final void copyToInt64Array(long, long[], int);
+    method public final void copyToInt8Array(long, byte[], int);
+    method public final boolean getBool(long);
+    method public final double getDouble(long);
+    method public final long getFieldHandle(long);
+    method public final float getFloat(long);
+    method public final short getInt16(long);
+    method public final int getInt32(long);
+    method public final long getInt64(long);
+    method public final byte getInt8(long);
+    method public final String getString(long);
+    method public final long handle();
+    method public final void putBlob(long, android.os.HwBlob);
+    method public final void putBool(long, boolean);
+    method public final void putBoolArray(long, boolean[]);
+    method public final void putDouble(long, double);
+    method public final void putDoubleArray(long, double[]);
+    method public final void putFloat(long, float);
+    method public final void putFloatArray(long, float[]);
+    method public final void putHidlMemory(long, @NonNull android.os.HidlMemory);
+    method public final void putInt16(long, short);
+    method public final void putInt16Array(long, short[]);
+    method public final void putInt32(long, int);
+    method public final void putInt32Array(long, int[]);
+    method public final void putInt64(long, long);
+    method public final void putInt64Array(long, long[]);
+    method public final void putInt8(long, byte);
+    method public final void putInt8Array(long, byte[]);
+    method public final void putNativeHandle(long, @Nullable android.os.NativeHandle);
+    method public final void putString(long, String);
+    method public static Boolean[] wrapArray(@NonNull boolean[]);
+    method public static Long[] wrapArray(@NonNull long[]);
+    method public static Byte[] wrapArray(@NonNull byte[]);
+    method public static Short[] wrapArray(@NonNull short[]);
+    method public static Integer[] wrapArray(@NonNull int[]);
+    method public static Float[] wrapArray(@NonNull float[]);
+    method public static Double[] wrapArray(@NonNull double[]);
+  }
+
+  public class HwParcel {
+    ctor public HwParcel();
+    method public final void enforceInterface(String);
+    method public final boolean readBool();
+    method public final java.util.ArrayList<java.lang.Boolean> readBoolVector();
+    method public final android.os.HwBlob readBuffer(long);
+    method public final double readDouble();
+    method public final java.util.ArrayList<java.lang.Double> readDoubleVector();
+    method public final android.os.HwBlob readEmbeddedBuffer(long, long, long, boolean);
+    method @NonNull @Nullable public final android.os.HidlMemory readEmbeddedHidlMemory(long, long, long);
+    method @Nullable public final android.os.NativeHandle readEmbeddedNativeHandle(long, long);
+    method public final float readFloat();
+    method public final java.util.ArrayList<java.lang.Float> readFloatVector();
+    method @NonNull public final android.os.HidlMemory readHidlMemory();
+    method public final short readInt16();
+    method public final java.util.ArrayList<java.lang.Short> readInt16Vector();
+    method public final int readInt32();
+    method public final java.util.ArrayList<java.lang.Integer> readInt32Vector();
+    method public final long readInt64();
+    method public final java.util.ArrayList<java.lang.Long> readInt64Vector();
+    method public final byte readInt8();
+    method public final java.util.ArrayList<java.lang.Byte> readInt8Vector();
+    method @Nullable public final android.os.NativeHandle readNativeHandle();
+    method @NonNull public final java.util.ArrayList<android.os.NativeHandle> readNativeHandleVector();
+    method public final String readString();
+    method public final java.util.ArrayList<java.lang.String> readStringVector();
+    method public final android.os.IHwBinder readStrongBinder();
+    method public final void release();
+    method public final void releaseTemporaryStorage();
+    method public final void send();
+    method public final void verifySuccess();
+    method public final void writeBool(boolean);
+    method public final void writeBoolVector(java.util.ArrayList<java.lang.Boolean>);
+    method public final void writeBuffer(android.os.HwBlob);
+    method public final void writeDouble(double);
+    method public final void writeDoubleVector(java.util.ArrayList<java.lang.Double>);
+    method public final void writeFloat(float);
+    method public final void writeFloatVector(java.util.ArrayList<java.lang.Float>);
+    method public final void writeHidlMemory(@NonNull android.os.HidlMemory);
+    method public final void writeInt16(short);
+    method public final void writeInt16Vector(java.util.ArrayList<java.lang.Short>);
+    method public final void writeInt32(int);
+    method public final void writeInt32Vector(java.util.ArrayList<java.lang.Integer>);
+    method public final void writeInt64(long);
+    method public final void writeInt64Vector(java.util.ArrayList<java.lang.Long>);
+    method public final void writeInt8(byte);
+    method public final void writeInt8Vector(java.util.ArrayList<java.lang.Byte>);
+    method public final void writeInterfaceToken(String);
+    method public final void writeNativeHandle(@Nullable android.os.NativeHandle);
+    method public final void writeNativeHandleVector(@NonNull java.util.ArrayList<android.os.NativeHandle>);
+    method public final void writeStatus(int);
+    method public final void writeString(String);
+    method public final void writeStringVector(java.util.ArrayList<java.lang.String>);
+    method public final void writeStrongBinder(android.os.IHwBinder);
+    field public static final int STATUS_SUCCESS = 0; // 0x0
+  }
+
+  public interface IHwBinder {
+    method public boolean linkToDeath(android.os.IHwBinder.DeathRecipient, long);
+    method public android.os.IHwInterface queryLocalInterface(String);
+    method public void transact(int, android.os.HwParcel, android.os.HwParcel, int) throws android.os.RemoteException;
+    method public boolean unlinkToDeath(android.os.IHwBinder.DeathRecipient);
+  }
+
+  public static interface IHwBinder.DeathRecipient {
+    method public void serviceDied(long);
+  }
+
+  public interface IHwInterface {
+    method public android.os.IHwBinder asBinder();
+  }
+
+  public class IncidentManager {
+    method @RequiresPermission(android.Manifest.permission.APPROVE_INCIDENT_REPORTS) public void approveReport(android.net.Uri);
+    method @RequiresPermission("android.permission.REQUEST_INCIDENT_REPORT_APPROVAL") public void cancelAuthorization(android.os.IncidentManager.AuthListener);
+    method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void deleteIncidentReports(android.net.Uri);
+    method @RequiresPermission(android.Manifest.permission.APPROVE_INCIDENT_REPORTS) public void denyReport(android.net.Uri);
+    method @Nullable @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public android.os.IncidentManager.IncidentReport getIncidentReport(android.net.Uri);
+    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public java.util.List<android.net.Uri> getIncidentReportList(String);
+    method @RequiresPermission(android.Manifest.permission.APPROVE_INCIDENT_REPORTS) public java.util.List<android.os.IncidentManager.PendingReport> getPendingReports();
+    method public void registerSection(int, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.os.IncidentManager.DumpCallback);
+    method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void reportIncident(android.os.IncidentReportArgs);
+    method @RequiresPermission("android.permission.REQUEST_INCIDENT_REPORT_APPROVAL") public void requestAuthorization(int, String, int, android.os.IncidentManager.AuthListener);
+    method public void unregisterSection(int);
+    field public static final int FLAG_CONFIRMATION_DIALOG = 1; // 0x1
+    field public static final int PRIVACY_POLICY_AUTO = 200; // 0xc8
+    field public static final int PRIVACY_POLICY_EXPLICIT = 100; // 0x64
+    field public static final int PRIVACY_POLICY_LOCAL = 0; // 0x0
+  }
+
+  public static class IncidentManager.AuthListener {
+    ctor public IncidentManager.AuthListener();
+    method public void onReportApproved();
+    method public void onReportDenied();
+  }
+
+  public static class IncidentManager.DumpCallback {
+    ctor public IncidentManager.DumpCallback();
+    method public void onDumpSection(int, @NonNull java.io.OutputStream);
+  }
+
+  public static class IncidentManager.IncidentReport implements java.io.Closeable android.os.Parcelable {
+    ctor public IncidentManager.IncidentReport(android.os.Parcel);
+    method public void close();
+    method public int describeContents();
+    method public java.io.InputStream getInputStream() throws java.io.IOException;
+    method public long getPrivacyPolicy();
+    method public long getTimestamp();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.IncidentManager.IncidentReport> CREATOR;
+  }
+
+  public static class IncidentManager.PendingReport {
+    ctor public IncidentManager.PendingReport(@NonNull android.net.Uri);
+    method public int getFlags();
+    method @NonNull public String getRequestingPackage();
+    method public long getTimestamp();
+    method @NonNull public android.net.Uri getUri();
+  }
+
+  public final class IncidentReportArgs implements android.os.Parcelable {
+    ctor public IncidentReportArgs();
+    ctor public IncidentReportArgs(android.os.Parcel);
+    method public void addHeader(byte[]);
+    method public void addSection(int);
+    method public boolean containsSection(int);
+    method public int describeContents();
+    method public boolean isAll();
+    method public void readFromParcel(android.os.Parcel);
+    method public int sectionCount();
+    method public void setAll(boolean);
+    method public void setPrivacyPolicy(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.IncidentReportArgs> CREATOR;
+  }
+
+  public final class NativeHandle implements java.io.Closeable {
+    ctor public NativeHandle();
+    ctor public NativeHandle(@NonNull java.io.FileDescriptor, boolean);
+    ctor public NativeHandle(@NonNull java.io.FileDescriptor[], @NonNull int[], boolean);
+    method public void close() throws java.io.IOException;
+    method @NonNull public android.os.NativeHandle dup() throws java.io.IOException;
+    method @NonNull public java.io.FileDescriptor getFileDescriptor();
+    method @NonNull public java.io.FileDescriptor[] getFileDescriptors();
+    method @NonNull public int[] getInts();
+    method public boolean hasSingleFileDescriptor();
+  }
+
+  public interface Parcelable {
+    field public static final int PARCELABLE_STABILITY_LOCAL = 0; // 0x0
+    field public static final int PARCELABLE_STABILITY_VINTF = 1; // 0x1
+  }
+
+  public final class ParcelableHolder implements android.os.Parcelable {
+    ctor public ParcelableHolder(int);
+    method public int describeContents();
+    method @Nullable public <T extends android.os.Parcelable> T getParcelable(@NonNull Class<T>);
+    method public int getStability();
+    method public void readFromParcel(@NonNull android.os.Parcel);
+    method public boolean setParcelable(@Nullable android.os.Parcelable);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.ParcelableHolder> CREATOR;
+  }
+
+  public final class PowerManager {
+    method @RequiresPermission(allOf={android.Manifest.permission.READ_DREAM_STATE, android.Manifest.permission.WRITE_DREAM_STATE}) public void dream(long);
+    method @RequiresPermission(android.Manifest.permission.DEVICE_POWER) public boolean forceSuspend();
+    method @RequiresPermission(android.Manifest.permission.POWER_SAVER) public int getPowerSaveModeTrigger();
+    method @RequiresPermission(android.Manifest.permission.READ_DREAM_STATE) public boolean isAmbientDisplayAvailable();
+    method @RequiresPermission(android.Manifest.permission.READ_DREAM_STATE) public boolean isAmbientDisplaySuppressed();
+    method @RequiresPermission(android.Manifest.permission.READ_DREAM_STATE) public boolean isAmbientDisplaySuppressedForToken(@NonNull String);
+    method @RequiresPermission(anyOf={android.Manifest.permission.DEVICE_POWER, android.Manifest.permission.POWER_SAVER}) public boolean setAdaptivePowerSaveEnabled(boolean);
+    method @RequiresPermission(anyOf={android.Manifest.permission.DEVICE_POWER, android.Manifest.permission.POWER_SAVER}) public boolean setAdaptivePowerSavePolicy(@NonNull android.os.BatterySaverPolicyConfig);
+    method @RequiresPermission(android.Manifest.permission.POWER_SAVER) public boolean setDynamicPowerSaveHint(boolean, int);
+    method @RequiresPermission(anyOf={android.Manifest.permission.DEVICE_POWER, android.Manifest.permission.POWER_SAVER}) public boolean setPowerSaveModeEnabled(boolean);
+    method @RequiresPermission(android.Manifest.permission.WRITE_DREAM_STATE) public void suppressAmbientDisplay(@NonNull String, boolean);
+    method @RequiresPermission(anyOf={android.Manifest.permission.DEVICE_POWER, android.Manifest.permission.USER_ACTIVITY}) public void userActivity(long, int, int);
+    field public static final int POWER_SAVE_MODE_TRIGGER_DYNAMIC = 1; // 0x1
+    field public static final int POWER_SAVE_MODE_TRIGGER_PERCENTAGE = 0; // 0x0
+    field public static final String REBOOT_USERSPACE = "userspace";
+    field public static final int USER_ACTIVITY_EVENT_ACCESSIBILITY = 3; // 0x3
+    field public static final int USER_ACTIVITY_EVENT_BUTTON = 1; // 0x1
+    field public static final int USER_ACTIVITY_EVENT_OTHER = 0; // 0x0
+    field public static final int USER_ACTIVITY_EVENT_TOUCH = 2; // 0x2
+    field public static final int USER_ACTIVITY_FLAG_INDIRECT = 2; // 0x2
+    field public static final int USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS = 1; // 0x1
+  }
+
+  public class PowerWhitelistManager {
+    method @RequiresPermission(android.Manifest.permission.DEVICE_POWER) public void addToWhitelist(@NonNull String);
+    method @RequiresPermission(android.Manifest.permission.DEVICE_POWER) public void addToWhitelist(@NonNull java.util.List<java.lang.String>);
+    method @RequiresPermission(android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST) public void whitelistAppTemporarily(@NonNull String, long);
+    method @RequiresPermission(android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST) public long whitelistAppTemporarilyForEvent(@NonNull String, int, @NonNull String);
+    field public static final int EVENT_MMS = 2; // 0x2
+    field public static final int EVENT_SMS = 1; // 0x1
+    field public static final int EVENT_UNSPECIFIED = 0; // 0x0
+  }
+
+  public class RecoverySystem {
+    method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void cancelScheduledUpdate(android.content.Context) throws java.io.IOException;
+    method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void clearPrepareForUnattendedUpdate(@NonNull android.content.Context) throws java.io.IOException;
+    method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void installPackage(android.content.Context, java.io.File, boolean) throws java.io.IOException;
+    method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void prepareForUnattendedUpdate(@NonNull android.content.Context, @NonNull String, @Nullable android.content.IntentSender) throws java.io.IOException;
+    method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void processPackage(android.content.Context, java.io.File, android.os.RecoverySystem.ProgressListener, android.os.Handler) throws java.io.IOException;
+    method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void processPackage(android.content.Context, java.io.File, android.os.RecoverySystem.ProgressListener) throws java.io.IOException;
+    method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void rebootAndApply(@NonNull android.content.Context, @NonNull String, @NonNull String) throws java.io.IOException;
+    method @RequiresPermission(allOf={android.Manifest.permission.RECOVERY, android.Manifest.permission.REBOOT}) public static void rebootWipeAb(android.content.Context, java.io.File, String) throws java.io.IOException;
+    method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void scheduleUpdateOnBoot(android.content.Context, java.io.File) throws java.io.IOException;
+    method public static boolean verifyPackageCompatibility(java.io.File) throws java.io.IOException;
+  }
+
+  public final class RemoteCallback implements android.os.Parcelable {
+    ctor public RemoteCallback(android.os.RemoteCallback.OnResultListener);
+    ctor public RemoteCallback(@NonNull android.os.RemoteCallback.OnResultListener, @Nullable android.os.Handler);
+    method public int describeContents();
+    method public void sendResult(@Nullable android.os.Bundle);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.RemoteCallback> CREATOR;
+  }
+
+  public static interface RemoteCallback.OnResultListener {
+    method public void onResult(@Nullable android.os.Bundle);
+  }
+
+  public class ServiceSpecificException extends java.lang.RuntimeException {
+    ctor public ServiceSpecificException(int, @Nullable String);
+    ctor public ServiceSpecificException(int);
+    field public final int errorCode;
+  }
+
+  public class SystemConfigManager {
+    method @NonNull @RequiresPermission(android.Manifest.permission.READ_CARRIER_APP_INFO) public java.util.Set<java.lang.String> getDisabledUntilUsedPreinstalledCarrierApps();
+    method @NonNull @RequiresPermission(android.Manifest.permission.READ_CARRIER_APP_INFO) public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getDisabledUntilUsedPreinstalledCarrierAssociatedApps();
+  }
+
+  public class SystemProperties {
+    method @NonNull public static String get(@NonNull String);
+    method @NonNull public static String get(@NonNull String, @Nullable String);
+    method public static boolean getBoolean(@NonNull String, boolean);
+    method public static int getInt(@NonNull String, int);
+    method public static long getLong(@NonNull String, long);
+  }
+
+  public class SystemUpdateManager {
+    method @RequiresPermission(anyOf={android.Manifest.permission.READ_SYSTEM_UPDATE_INFO, android.Manifest.permission.RECOVERY}) public android.os.Bundle retrieveSystemUpdateInfo();
+    method @RequiresPermission(android.Manifest.permission.RECOVERY) public void updateSystemUpdateInfo(android.os.PersistableBundle);
+    field public static final String KEY_IS_SECURITY_UPDATE = "is_security_update";
+    field public static final String KEY_STATUS = "status";
+    field public static final String KEY_TARGET_BUILD_FINGERPRINT = "target_build_fingerprint";
+    field public static final String KEY_TARGET_SECURITY_PATCH_LEVEL = "target_security_patch_level";
+    field public static final String KEY_TITLE = "title";
+    field public static final int STATUS_IDLE = 1; // 0x1
+    field public static final int STATUS_IN_PROGRESS = 3; // 0x3
+    field public static final int STATUS_UNKNOWN = 0; // 0x0
+    field public static final int STATUS_WAITING_DOWNLOAD = 2; // 0x2
+    field public static final int STATUS_WAITING_INSTALL = 4; // 0x4
+    field public static final int STATUS_WAITING_REBOOT = 5; // 0x5
+  }
+
+  public class UpdateEngine {
+    ctor public UpdateEngine();
+    method @NonNull @WorkerThread public android.os.UpdateEngine.AllocateSpaceResult allocateSpace(@NonNull String, @NonNull String[]);
+    method public void applyPayload(String, long, long, String[]);
+    method public void applyPayload(@NonNull android.content.res.AssetFileDescriptor, @NonNull String[]);
+    method public boolean bind(android.os.UpdateEngineCallback, android.os.Handler);
+    method public boolean bind(android.os.UpdateEngineCallback);
+    method public void cancel();
+    method @WorkerThread public int cleanupAppliedPayload();
+    method public void resetStatus();
+    method public void resume();
+    method public void suspend();
+    method public boolean unbind();
+    method public boolean verifyPayloadMetadata(String);
+  }
+
+  public static final class UpdateEngine.AllocateSpaceResult {
+    method public int getErrorCode();
+    method public long getFreeSpaceRequired();
+  }
+
+  public static final class UpdateEngine.ErrorCodeConstants {
+    ctor public UpdateEngine.ErrorCodeConstants();
+    field public static final int DEVICE_CORRUPTED = 61; // 0x3d
+    field public static final int DOWNLOAD_PAYLOAD_VERIFICATION_ERROR = 12; // 0xc
+    field public static final int DOWNLOAD_TRANSFER_ERROR = 9; // 0x9
+    field public static final int ERROR = 1; // 0x1
+    field public static final int FILESYSTEM_COPIER_ERROR = 4; // 0x4
+    field public static final int INSTALL_DEVICE_OPEN_ERROR = 7; // 0x7
+    field public static final int KERNEL_DEVICE_OPEN_ERROR = 8; // 0x8
+    field public static final int NOT_ENOUGH_SPACE = 60; // 0x3c
+    field public static final int PAYLOAD_HASH_MISMATCH_ERROR = 10; // 0xa
+    field public static final int PAYLOAD_MISMATCHED_TYPE_ERROR = 6; // 0x6
+    field public static final int PAYLOAD_SIZE_MISMATCH_ERROR = 11; // 0xb
+    field public static final int PAYLOAD_TIMESTAMP_ERROR = 51; // 0x33
+    field public static final int POST_INSTALL_RUNNER_ERROR = 5; // 0x5
+    field public static final int SUCCESS = 0; // 0x0
+    field public static final int UPDATED_BUT_NOT_ACTIVE = 52; // 0x34
+  }
+
+  public static final class UpdateEngine.UpdateStatusConstants {
+    ctor public UpdateEngine.UpdateStatusConstants();
+    field public static final int ATTEMPTING_ROLLBACK = 8; // 0x8
+    field public static final int CHECKING_FOR_UPDATE = 1; // 0x1
+    field public static final int DISABLED = 9; // 0x9
+    field public static final int DOWNLOADING = 3; // 0x3
+    field public static final int FINALIZING = 5; // 0x5
+    field public static final int IDLE = 0; // 0x0
+    field public static final int REPORTING_ERROR_EVENT = 7; // 0x7
+    field public static final int UPDATED_NEED_REBOOT = 6; // 0x6
+    field public static final int UPDATE_AVAILABLE = 2; // 0x2
+    field public static final int VERIFYING = 4; // 0x4
+  }
+
+  public abstract class UpdateEngineCallback {
+    ctor public UpdateEngineCallback();
+    method public abstract void onPayloadApplicationComplete(int);
+    method public abstract void onStatusUpdate(int, float);
+  }
+
+  public final class UserHandle implements android.os.Parcelable {
+    method @NonNull public static String formatUid(int);
+    method public static int getAppId(int);
+    method public int getIdentifier();
+    method @Deprecated public boolean isOwner();
+    method public boolean isSystem();
+    method public static int myUserId();
+    method public static android.os.UserHandle of(int);
+    field @NonNull public static final android.os.UserHandle ALL;
+    field @NonNull public static final android.os.UserHandle CURRENT;
+    field @NonNull public static final android.os.UserHandle SYSTEM;
+  }
+
+  public class UserManager {
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public void clearSeedAccountData();
+    method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}) public android.os.UserHandle createProfile(@NonNull String, @NonNull String, @NonNull java.util.Set<java.lang.String>) throws android.os.UserManager.UserOperationException;
+    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}, conditional=true) public java.util.List<android.os.UserHandle> getAllProfiles();
+    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}, conditional=true) public java.util.List<android.os.UserHandle> getEnabledProfiles();
+    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public android.os.UserHandle getProfileParent(@NonNull android.os.UserHandle);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public String getSeedAccountName();
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public android.os.PersistableBundle getSeedAccountOptions();
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public String getSeedAccountType();
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public long[] getSerialNumbersOfUsers(boolean);
+    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public java.util.List<android.os.UserHandle> getUserHandles(boolean);
+    method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.GET_ACCOUNTS_PRIVILEGED}) public android.graphics.Bitmap getUserIcon();
+    method @Deprecated @android.os.UserManager.UserRestrictionSource @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public int getUserRestrictionSource(String, android.os.UserHandle);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public java.util.List<android.os.UserManager.EnforcingUser> getUserRestrictionSources(String, android.os.UserHandle);
+    method @RequiresPermission(allOf={android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS}, conditional=true) public int getUserSwitchability();
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean hasRestrictedProfiles();
+    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS}, conditional=true) public boolean hasUserRestrictionForUser(@NonNull String, @NonNull android.os.UserHandle);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isAdminUser();
+    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}) public boolean isGuestUser();
+    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS}, conditional=true) public boolean isManagedProfile(int);
+    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}) public boolean isPrimaryUser();
+    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS}, conditional=true) public boolean isProfile();
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isRestrictedProfile();
+    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}) public boolean isRestrictedProfile(@NonNull android.os.UserHandle);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isSameProfileGroup(@NonNull android.os.UserHandle, @NonNull android.os.UserHandle);
+    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.GET_ACCOUNTS_PRIVILEGED}) public boolean isUserNameSet();
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isUserOfType(@NonNull String);
+    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS}, conditional=true) public boolean isUserUnlockingOrUnlocked(@NonNull android.os.UserHandle);
+    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}) public boolean removeUser(@NonNull android.os.UserHandle);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public void setUserIcon(@NonNull android.graphics.Bitmap) throws android.os.UserManager.UserOperationException;
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public void setUserName(@Nullable String);
+    field public static final String ACTION_USER_RESTRICTIONS_CHANGED = "android.os.action.USER_RESTRICTIONS_CHANGED";
+    field @Deprecated public static final String DISALLOW_OEM_UNLOCK = "no_oem_unlock";
+    field public static final String DISALLOW_RUN_IN_BACKGROUND = "no_run_in_background";
+    field public static final int RESTRICTION_NOT_SET = 0; // 0x0
+    field public static final int RESTRICTION_SOURCE_DEVICE_OWNER = 2; // 0x2
+    field public static final int RESTRICTION_SOURCE_PROFILE_OWNER = 4; // 0x4
+    field public static final int RESTRICTION_SOURCE_SYSTEM = 1; // 0x1
+    field public static final int SWITCHABILITY_STATUS_OK = 0; // 0x0
+    field public static final int SWITCHABILITY_STATUS_SYSTEM_USER_LOCKED = 4; // 0x4
+    field public static final int SWITCHABILITY_STATUS_USER_IN_CALL = 1; // 0x1
+    field public static final int SWITCHABILITY_STATUS_USER_SWITCH_DISALLOWED = 2; // 0x2
+    field public static final String USER_TYPE_FULL_SECONDARY = "android.os.usertype.full.SECONDARY";
+    field public static final String USER_TYPE_FULL_SYSTEM = "android.os.usertype.full.SYSTEM";
+    field public static final String USER_TYPE_PROFILE_MANAGED = "android.os.usertype.profile.MANAGED";
+    field public static final String USER_TYPE_SYSTEM_HEADLESS = "android.os.usertype.system.HEADLESS";
+  }
+
+  public static final class UserManager.EnforcingUser implements android.os.Parcelable {
+    method public int describeContents();
+    method public android.os.UserHandle getUserHandle();
+    method @android.os.UserManager.UserRestrictionSource public int getUserRestrictionSource();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.UserManager.EnforcingUser> CREATOR;
+  }
+
+  @IntDef(flag=true, prefix={"RESTRICTION_"}, value={android.os.UserManager.RESTRICTION_NOT_SET, android.os.UserManager.RESTRICTION_SOURCE_SYSTEM, android.os.UserManager.RESTRICTION_SOURCE_DEVICE_OWNER, android.os.UserManager.RESTRICTION_SOURCE_PROFILE_OWNER}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface UserManager.UserRestrictionSource {
+  }
+
+  public abstract class Vibrator {
+    method @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE) public void addVibratorStateListener(@NonNull android.os.Vibrator.OnVibratorStateChangedListener);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE) public void addVibratorStateListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.Vibrator.OnVibratorStateChangedListener);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE) public boolean isVibrating();
+    method @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE) public void removeVibratorStateListener(@NonNull android.os.Vibrator.OnVibratorStateChangedListener);
+  }
+
+  public static interface Vibrator.OnVibratorStateChangedListener {
+    method public void onVibratorStateChanged(boolean);
+  }
+
+  public class WorkSource implements android.os.Parcelable {
+    ctor public WorkSource(int);
+    ctor public WorkSource(int, @NonNull String);
+    method public android.os.WorkSource.WorkChain createWorkChain();
+    method @Nullable public String getPackageName(int);
+    method public int getUid(int);
+    method @Nullable public java.util.List<android.os.WorkSource.WorkChain> getWorkChains();
+    method public boolean isEmpty();
+    method public int size();
+    method @NonNull public android.os.WorkSource withoutNames();
+  }
+
+  public static final class WorkSource.WorkChain implements android.os.Parcelable {
+    ctor public WorkSource.WorkChain();
+    method public android.os.WorkSource.WorkChain addNode(int, @Nullable String);
+    method public int describeContents();
+    method public String getAttributionTag();
+    method public int getAttributionUid();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.WorkSource.WorkChain> CREATOR;
+  }
+
+}
+
+package android.os.connectivity {
+
+  public final class CellularBatteryStats implements android.os.Parcelable {
+    method public int describeContents();
+    method public long getEnergyConsumedMaMillis();
+    method public long getIdleTimeMillis();
+    method public long getKernelActiveTimeMillis();
+    method public long getLoggingDurationMillis();
+    method public long getMonitoredRailChargeConsumedMaMillis();
+    method public long getNumBytesRx();
+    method public long getNumBytesTx();
+    method public long getNumPacketsRx();
+    method public long getNumPacketsTx();
+    method public long getRxTimeMillis();
+    method public long getSleepTimeMillis();
+    method @NonNull public long getTimeInRatMicros(int);
+    method @NonNull public long getTimeInRxSignalStrengthLevelMicros(@IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) int);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.connectivity.CellularBatteryStats> CREATOR;
+  }
+
+  public final class WifiActivityEnergyInfo implements android.os.Parcelable {
+    ctor public WifiActivityEnergyInfo(long, int, @IntRange(from=0) long, @IntRange(from=0) long, @IntRange(from=0) long, @IntRange(from=0) long);
+    method public int describeContents();
+    method @IntRange(from=0) public long getControllerEnergyUsedMicroJoules();
+    method @IntRange(from=0) public long getControllerIdleDurationMillis();
+    method @IntRange(from=0) public long getControllerRxDurationMillis();
+    method @IntRange(from=0) public long getControllerScanDurationMillis();
+    method @IntRange(from=0) public long getControllerTxDurationMillis();
+    method public int getStackState();
+    method public long getTimeSinceBootMillis();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.connectivity.WifiActivityEnergyInfo> CREATOR;
+    field public static final int STACK_STATE_INVALID = 0; // 0x0
+    field public static final int STACK_STATE_STATE_ACTIVE = 1; // 0x1
+    field public static final int STACK_STATE_STATE_IDLE = 3; // 0x3
+    field public static final int STACK_STATE_STATE_SCANNING = 2; // 0x2
+  }
+
+  public final class WifiBatteryStats implements android.os.Parcelable {
+    method public int describeContents();
+    method public long getAppScanRequestCount();
+    method public long getEnergyConsumedMaMillis();
+    method public long getIdleTimeMillis();
+    method public long getKernelActiveTimeMillis();
+    method public long getLoggingDurationMillis();
+    method public long getMonitoredRailChargeConsumedMaMillis();
+    method public long getNumBytesRx();
+    method public long getNumBytesTx();
+    method public long getNumPacketsRx();
+    method public long getNumPacketsTx();
+    method public long getRxTimeMillis();
+    method public long getScanTimeMillis();
+    method public long getSleepTimeMillis();
+    method public long getTxTimeMillis();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.connectivity.WifiBatteryStats> CREATOR;
+  }
+
+}
+
+package android.os.image {
+
+  public class DynamicSystemClient {
+    ctor public DynamicSystemClient(@NonNull android.content.Context);
+    method @RequiresPermission(android.Manifest.permission.INSTALL_DYNAMIC_SYSTEM) public void bind();
+    method public void setOnStatusChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.image.DynamicSystemClient.OnStatusChangedListener);
+    method public void setOnStatusChangedListener(@NonNull android.os.image.DynamicSystemClient.OnStatusChangedListener);
+    method @RequiresPermission(android.Manifest.permission.INSTALL_DYNAMIC_SYSTEM) public void start(@NonNull android.net.Uri, long);
+    method @RequiresPermission(android.Manifest.permission.INSTALL_DYNAMIC_SYSTEM) public void start(@NonNull android.net.Uri, long, long);
+    method @RequiresPermission(android.Manifest.permission.INSTALL_DYNAMIC_SYSTEM) public void unbind();
+    field public static final int CAUSE_ERROR_EXCEPTION = 6; // 0x6
+    field public static final int CAUSE_ERROR_INVALID_URL = 4; // 0x4
+    field public static final int CAUSE_ERROR_IO = 3; // 0x3
+    field public static final int CAUSE_ERROR_IPC = 5; // 0x5
+    field public static final int CAUSE_INSTALL_CANCELLED = 2; // 0x2
+    field public static final int CAUSE_INSTALL_COMPLETED = 1; // 0x1
+    field public static final int CAUSE_NOT_SPECIFIED = 0; // 0x0
+    field public static final int STATUS_IN_PROGRESS = 2; // 0x2
+    field public static final int STATUS_IN_USE = 4; // 0x4
+    field public static final int STATUS_NOT_STARTED = 1; // 0x1
+    field public static final int STATUS_READY = 3; // 0x3
+    field public static final int STATUS_UNKNOWN = 0; // 0x0
+  }
+
+  public static interface DynamicSystemClient.OnStatusChangedListener {
+    method public void onStatusChanged(int, int, long, @Nullable Throwable);
+  }
+
+}
+
+package android.os.storage {
+
+  public class StorageManager {
+    method @WorkerThread public void allocateBytes(@NonNull java.util.UUID, long, @RequiresPermission int) throws java.io.IOException;
+    method @WorkerThread public void allocateBytes(java.io.FileDescriptor, long, @RequiresPermission int) throws java.io.IOException;
+    method @WorkerThread public long getAllocatableBytes(@NonNull java.util.UUID, @RequiresPermission int) throws java.io.IOException;
+    method public static boolean hasIsolatedStorage();
+    method public void updateExternalStorageFileQuotaType(@NonNull java.io.File, int) throws java.io.IOException;
+    field @RequiresPermission(android.Manifest.permission.ALLOCATE_AGGRESSIVE) public static final int FLAG_ALLOCATE_AGGRESSIVE = 1; // 0x1
+    field public static final int QUOTA_TYPE_MEDIA_AUDIO = 2; // 0x2
+    field public static final int QUOTA_TYPE_MEDIA_IMAGE = 1; // 0x1
+    field public static final int QUOTA_TYPE_MEDIA_NONE = 0; // 0x0
+    field public static final int QUOTA_TYPE_MEDIA_VIDEO = 3; // 0x3
+  }
+
+  public final class StorageVolume implements android.os.Parcelable {
+    method @NonNull public String getId();
+  }
+
+}
+
+package android.permission {
+
+  public final class PermissionControllerManager {
+    method @RequiresPermission(anyOf={android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS, android.Manifest.permission.RESTORE_RUNTIME_PERMISSIONS}) public void applyStagedRuntimePermissionBackup(@NonNull String, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
+    method @RequiresPermission(android.Manifest.permission.GET_RUNTIME_PERMISSIONS) public void getRuntimePermissionBackup(@NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<byte[]>);
+    method @RequiresPermission(android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS) public void revokeRuntimePermissions(@NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>, boolean, int, @NonNull java.util.concurrent.Executor, @NonNull android.permission.PermissionControllerManager.OnRevokeRuntimePermissionsCallback);
+    method @RequiresPermission(anyOf={android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS, android.Manifest.permission.RESTORE_RUNTIME_PERMISSIONS}) public void stageAndApplyRuntimePermissionsBackup(@NonNull byte[], @NonNull android.os.UserHandle);
+    field public static final int COUNT_ONLY_WHEN_GRANTED = 1; // 0x1
+    field public static final int COUNT_WHEN_SYSTEM = 2; // 0x2
+    field public static final int REASON_INSTALLER_POLICY_VIOLATION = 2; // 0x2
+    field public static final int REASON_MALWARE = 1; // 0x1
+  }
+
+  public abstract static class PermissionControllerManager.OnRevokeRuntimePermissionsCallback {
+    ctor public PermissionControllerManager.OnRevokeRuntimePermissionsCallback();
+    method public abstract void onRevokeRuntimePermissions(@NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>);
+  }
+
+  public abstract class PermissionControllerService extends android.app.Service {
+    ctor public PermissionControllerService();
+    method @BinderThread public void onApplyStagedRuntimePermissionBackup(@NonNull String, @NonNull android.os.UserHandle, @NonNull java.util.function.Consumer<java.lang.Boolean>);
+    method @NonNull public final android.os.IBinder onBind(android.content.Intent);
+    method @BinderThread public abstract void onCountPermissionApps(@NonNull java.util.List<java.lang.String>, int, @NonNull java.util.function.IntConsumer);
+    method @BinderThread public abstract void onGetAppPermissions(@NonNull String, @NonNull java.util.function.Consumer<java.util.List<android.permission.RuntimePermissionPresentationInfo>>);
+    method @BinderThread public abstract void onGetPermissionUsages(boolean, long, @NonNull java.util.function.Consumer<java.util.List<android.permission.RuntimePermissionUsageInfo>>);
+    method @BinderThread public abstract void onGetRuntimePermissionsBackup(@NonNull android.os.UserHandle, @NonNull java.io.OutputStream, @NonNull Runnable);
+    method @BinderThread public abstract void onGrantOrUpgradeDefaultRuntimePermissions(@NonNull Runnable);
+    method @BinderThread public void onOneTimePermissionSessionTimeout(@NonNull String);
+    method @Deprecated @BinderThread public void onRestoreDelayedRuntimePermissionsBackup(@NonNull String, @NonNull android.os.UserHandle, @NonNull java.util.function.Consumer<java.lang.Boolean>);
+    method @Deprecated @BinderThread public void onRestoreRuntimePermissionsBackup(@NonNull android.os.UserHandle, @NonNull java.io.InputStream, @NonNull Runnable);
+    method @BinderThread public abstract void onRevokeRuntimePermission(@NonNull String, @NonNull String, @NonNull Runnable);
+    method @BinderThread public abstract void onRevokeRuntimePermissions(@NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>, boolean, int, @NonNull String, @NonNull java.util.function.Consumer<java.util.Map<java.lang.String,java.util.List<java.lang.String>>>);
+    method @BinderThread public abstract void onSetRuntimePermissionGrantStateByDeviceAdmin(@NonNull String, @NonNull String, @NonNull String, int, @NonNull java.util.function.Consumer<java.lang.Boolean>);
+    method @BinderThread public void onStageAndApplyRuntimePermissionsBackup(@NonNull android.os.UserHandle, @NonNull java.io.InputStream, @NonNull Runnable);
+    method @BinderThread public void onUpdateUserSensitivePermissionFlags(int, @NonNull java.util.concurrent.Executor, @NonNull Runnable);
+    method @BinderThread public void onUpdateUserSensitivePermissionFlags(int, @NonNull Runnable);
+    field public static final String SERVICE_INTERFACE = "android.permission.PermissionControllerService";
+  }
+
+  public final class PermissionManager {
+    method public int checkDeviceIdentifierAccess(@Nullable String, @Nullable String, @Nullable String, int, int);
+    method @NonNull @RequiresPermission(android.Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY) public java.util.Set<java.lang.String> getAutoRevokeExemptionGrantedPackages();
+    method @NonNull @RequiresPermission(android.Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY) public java.util.Set<java.lang.String> getAutoRevokeExemptionRequestedPackages();
+    method @IntRange(from=0) @RequiresPermission(anyOf={android.Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY, android.Manifest.permission.UPGRADE_RUNTIME_PERMISSIONS}) public int getRuntimePermissionsVersion();
+    method @NonNull public java.util.List<android.permission.PermissionManager.SplitPermissionInfo> getSplitPermissions();
+    method @RequiresPermission(anyOf={android.Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY, android.Manifest.permission.UPGRADE_RUNTIME_PERMISSIONS}) public void setRuntimePermissionsVersion(@IntRange(from=0) int);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS) public void startOneTimePermissionSession(@NonNull String, long, int, int);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS) public void stopOneTimePermissionSession(@NonNull String);
+  }
+
+  public static final class PermissionManager.SplitPermissionInfo {
+    method @NonNull public java.util.List<java.lang.String> getNewPermissions();
+    method @NonNull public String getSplitPermission();
+    method public int getTargetSdk();
+  }
+
+  public final class RuntimePermissionPresentationInfo implements android.os.Parcelable {
+    ctor public RuntimePermissionPresentationInfo(@NonNull CharSequence, boolean, boolean);
+    method public int describeContents();
+    method @NonNull public CharSequence getLabel();
+    method public boolean isGranted();
+    method public boolean isStandard();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.permission.RuntimePermissionPresentationInfo> CREATOR;
+  }
+
+  public final class RuntimePermissionUsageInfo implements android.os.Parcelable {
+    ctor public RuntimePermissionUsageInfo(@NonNull String, int);
+    method public int describeContents();
+    method public int getAppAccessCount();
+    method @NonNull public String getName();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.permission.RuntimePermissionUsageInfo> CREATOR;
+  }
+
+}
+
+package android.permissionpresenterservice {
+
+  @Deprecated public abstract class RuntimePermissionPresenterService extends android.app.Service {
+    ctor @Deprecated public RuntimePermissionPresenterService();
+    method @Deprecated public final void attachBaseContext(android.content.Context);
+    method @Deprecated public final android.os.IBinder onBind(android.content.Intent);
+    method @Deprecated public abstract java.util.List<android.content.pm.permission.RuntimePermissionPresentationInfo> onGetAppPermissions(@NonNull String);
+    field @Deprecated public static final String SERVICE_INTERFACE = "android.permissionpresenterservice.RuntimePermissionPresenterService";
+  }
+
+}
+
+package android.preference {
+
+  @Deprecated public class PreferenceManager {
+    method @Deprecated public boolean isStorageCredentialProtected();
+    method @Deprecated public void setStorageCredentialProtected();
+  }
+
+}
+
+package android.print {
+
+  public final class PrintManager {
+    method @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICE_RECOMMENDATIONS) public void addPrintServiceRecommendationsChangeListener(@NonNull android.print.PrintManager.PrintServiceRecommendationsChangeListener, @Nullable android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICES) public void addPrintServicesChangeListener(@NonNull android.print.PrintManager.PrintServicesChangeListener, @Nullable android.os.Handler);
+    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICE_RECOMMENDATIONS) public java.util.List<android.printservice.recommendation.RecommendationInfo> getPrintServiceRecommendations();
+    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICES) public java.util.List<android.printservice.PrintServiceInfo> getPrintServices(int);
+    method @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICE_RECOMMENDATIONS) public void removePrintServiceRecommendationsChangeListener(@NonNull android.print.PrintManager.PrintServiceRecommendationsChangeListener);
+    method @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICES) public void removePrintServicesChangeListener(@NonNull android.print.PrintManager.PrintServicesChangeListener);
+    field public static final int ENABLED_SERVICES = 1; // 0x1
+  }
+
+  public static interface PrintManager.PrintServiceRecommendationsChangeListener {
+    method public void onPrintServiceRecommendationsChanged();
+  }
+
+  public static interface PrintManager.PrintServicesChangeListener {
+    method public void onPrintServicesChanged();
+  }
+
+}
+
+package android.printservice {
+
+  public final class PrintServiceInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public android.content.ComponentName getComponentName();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.printservice.PrintServiceInfo> CREATOR;
+  }
+
+}
+
+package android.printservice.recommendation {
+
+  public final class RecommendationInfo implements android.os.Parcelable {
+    ctor public RecommendationInfo(@NonNull CharSequence, @NonNull CharSequence, @NonNull java.util.List<java.net.InetAddress>, boolean);
+    ctor @Deprecated public RecommendationInfo(@NonNull CharSequence, @NonNull CharSequence, @IntRange(from=0) int, boolean);
+    method public int describeContents();
+    method @NonNull public java.util.List<java.net.InetAddress> getDiscoveredPrinters();
+    method public CharSequence getName();
+    method public int getNumDiscoveredPrinters();
+    method public CharSequence getPackageName();
+    method public boolean recommendsMultiVendorService();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.printservice.recommendation.RecommendationInfo> CREATOR;
+  }
+
+  public abstract class RecommendationService extends android.app.Service {
+    ctor public RecommendationService();
+    method public final android.os.IBinder onBind(android.content.Intent);
+    method public abstract void onConnected();
+    method public abstract void onDisconnected();
+    method public final void updateRecommendations(@Nullable java.util.List<android.printservice.recommendation.RecommendationInfo>);
+    field public static final String SERVICE_INTERFACE = "android.printservice.recommendation.RecommendationService";
+  }
+
+}
+
+package android.provider {
+
+  @Deprecated public static final class ContactsContract.MetadataSync implements android.provider.BaseColumns android.provider.ContactsContract.MetadataSyncColumns {
+    field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_metadata";
+    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact_metadata";
+    field @Deprecated public static final android.net.Uri CONTENT_URI;
+    field @Deprecated public static final String METADATA_AUTHORITY = "com.android.contacts.metadata";
+    field @Deprecated public static final android.net.Uri METADATA_AUTHORITY_URI;
+  }
+
+  @Deprecated protected static interface ContactsContract.MetadataSyncColumns {
+    field @Deprecated public static final String ACCOUNT_NAME = "account_name";
+    field @Deprecated public static final String ACCOUNT_TYPE = "account_type";
+    field @Deprecated public static final String DATA = "data";
+    field @Deprecated public static final String DATA_SET = "data_set";
+    field @Deprecated public static final String DELETED = "deleted";
+    field @Deprecated public static final String RAW_CONTACT_BACKUP_ID = "raw_contact_backup_id";
+  }
+
+  @Deprecated public static final class ContactsContract.MetadataSyncState implements android.provider.BaseColumns android.provider.ContactsContract.MetadataSyncStateColumns {
+    field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_metadata_sync_state";
+    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact_metadata_sync_state";
+    field @Deprecated public static final android.net.Uri CONTENT_URI;
+  }
+
+  @Deprecated protected static interface ContactsContract.MetadataSyncStateColumns {
+    field @Deprecated public static final String ACCOUNT_NAME = "account_name";
+    field @Deprecated public static final String ACCOUNT_TYPE = "account_type";
+    field @Deprecated public static final String DATA_SET = "data_set";
+    field @Deprecated public static final String STATE = "state";
+  }
+
+  public final class DeviceConfig {
+    method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static void addOnPropertiesChangedListener(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.provider.DeviceConfig.OnPropertiesChangedListener);
+    method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static boolean getBoolean(@NonNull String, @NonNull String, boolean);
+    method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static float getFloat(@NonNull String, @NonNull String, float);
+    method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static int getInt(@NonNull String, @NonNull String, int);
+    method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static long getLong(@NonNull String, @NonNull String, long);
+    method @NonNull @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static android.provider.DeviceConfig.Properties getProperties(@NonNull String, @NonNull java.lang.String...);
+    method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static String getProperty(@NonNull String, @NonNull String);
+    method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static String getString(@NonNull String, @NonNull String, @Nullable String);
+    method public static void removeOnPropertiesChangedListener(@NonNull android.provider.DeviceConfig.OnPropertiesChangedListener);
+    method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static void resetToDefaults(int, @Nullable String);
+    method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static boolean setProperties(@NonNull android.provider.DeviceConfig.Properties) throws android.provider.DeviceConfig.BadConfigException;
+    method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static boolean setProperty(@NonNull String, @NonNull String, @Nullable String, boolean);
+    field public static final String NAMESPACE_ACTIVITY_MANAGER = "activity_manager";
+    field public static final String NAMESPACE_ACTIVITY_MANAGER_NATIVE_BOOT = "activity_manager_native_boot";
+    field public static final String NAMESPACE_APP_COMPAT = "app_compat";
+    field public static final String NAMESPACE_ATTENTION_MANAGER_SERVICE = "attention_manager_service";
+    field public static final String NAMESPACE_AUTOFILL = "autofill";
+    field public static final String NAMESPACE_BIOMETRICS = "biometrics";
+    field public static final String NAMESPACE_BLOBSTORE = "blobstore";
+    field public static final String NAMESPACE_BLUETOOTH = "bluetooth";
+    field public static final String NAMESPACE_CONNECTIVITY = "connectivity";
+    field public static final String NAMESPACE_CONTENT_CAPTURE = "content_capture";
+    field @Deprecated public static final String NAMESPACE_DEX_BOOT = "dex_boot";
+    field public static final String NAMESPACE_DISPLAY_MANAGER = "display_manager";
+    field public static final String NAMESPACE_GAME_DRIVER = "game_driver";
+    field public static final String NAMESPACE_INPUT_NATIVE_BOOT = "input_native_boot";
+    field public static final String NAMESPACE_INTELLIGENCE_ATTENTION = "intelligence_attention";
+    field public static final String NAMESPACE_MEDIA_NATIVE = "media_native";
+    field public static final String NAMESPACE_NETD_NATIVE = "netd_native";
+    field public static final String NAMESPACE_PACKAGE_MANAGER_SERVICE = "package_manager_service";
+    field public static final String NAMESPACE_PERMISSIONS = "permissions";
+    field public static final String NAMESPACE_PRIVACY = "privacy";
+    field public static final String NAMESPACE_PROFCOLLECT_NATIVE_BOOT = "profcollect_native_boot";
+    field public static final String NAMESPACE_ROLLBACK = "rollback";
+    field public static final String NAMESPACE_ROLLBACK_BOOT = "rollback_boot";
+    field public static final String NAMESPACE_RUNTIME = "runtime";
+    field public static final String NAMESPACE_RUNTIME_NATIVE = "runtime_native";
+    field public static final String NAMESPACE_RUNTIME_NATIVE_BOOT = "runtime_native_boot";
+    field public static final String NAMESPACE_SCHEDULER = "scheduler";
+    field @Deprecated public static final String NAMESPACE_STORAGE = "storage";
+    field public static final String NAMESPACE_STORAGE_NATIVE_BOOT = "storage_native_boot";
+    field public static final String NAMESPACE_SYSTEMUI = "systemui";
+    field public static final String NAMESPACE_TELEPHONY = "telephony";
+    field public static final String NAMESPACE_TEXTCLASSIFIER = "textclassifier";
+    field public static final String NAMESPACE_WINDOW_MANAGER_NATIVE_BOOT = "window_manager_native_boot";
+  }
+
+  public static class DeviceConfig.BadConfigException extends java.lang.Exception {
+    ctor public DeviceConfig.BadConfigException();
+  }
+
+  public static interface DeviceConfig.OnPropertiesChangedListener {
+    method public void onPropertiesChanged(@NonNull android.provider.DeviceConfig.Properties);
+  }
+
+  public static class DeviceConfig.Properties {
+    method public boolean getBoolean(@NonNull String, boolean);
+    method public float getFloat(@NonNull String, float);
+    method public int getInt(@NonNull String, int);
+    method @NonNull public java.util.Set<java.lang.String> getKeyset();
+    method public long getLong(@NonNull String, long);
+    method @NonNull public String getNamespace();
+    method @Nullable public String getString(@NonNull String, @Nullable String);
+  }
+
+  public static final class DeviceConfig.Properties.Builder {
+    ctor public DeviceConfig.Properties.Builder(@NonNull String);
+    method @NonNull public android.provider.DeviceConfig.Properties build();
+    method @NonNull public android.provider.DeviceConfig.Properties.Builder setBoolean(@NonNull String, boolean);
+    method @NonNull public android.provider.DeviceConfig.Properties.Builder setFloat(@NonNull String, float);
+    method @NonNull public android.provider.DeviceConfig.Properties.Builder setInt(@NonNull String, int);
+    method @NonNull public android.provider.DeviceConfig.Properties.Builder setLong(@NonNull String, long);
+    method @NonNull public android.provider.DeviceConfig.Properties.Builder setString(@NonNull String, @Nullable String);
+  }
+
+  public final class DocumentsContract {
+    method @NonNull public static android.net.Uri buildDocumentUriAsUser(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
+    method public static boolean isManageMode(@NonNull android.net.Uri);
+    method @NonNull public static android.net.Uri setManageMode(@NonNull android.net.Uri);
+    field public static final String ACTION_DOCUMENT_ROOT_SETTINGS = "android.provider.action.DOCUMENT_ROOT_SETTINGS";
+    field public static final String ACTION_MANAGE_DOCUMENT = "android.provider.action.MANAGE_DOCUMENT";
+    field public static final String EXTRA_SHOW_ADVANCED = "android.provider.extra.SHOW_ADVANCED";
+  }
+
+  public static final class DocumentsContract.Root {
+    field public static final int FLAG_ADVANCED = 65536; // 0x10000
+    field public static final int FLAG_HAS_SETTINGS = 131072; // 0x20000
+    field public static final int FLAG_REMOVABLE_SD = 262144; // 0x40000
+    field public static final int FLAG_REMOVABLE_USB = 524288; // 0x80000
+  }
+
+  public abstract class SearchIndexableData {
+    ctor public SearchIndexableData();
+    ctor public SearchIndexableData(android.content.Context);
+    field public String className;
+    field public android.content.Context context;
+    field public boolean enabled;
+    field public int iconResId;
+    field public String intentAction;
+    field public String intentTargetClass;
+    field public String intentTargetPackage;
+    field public String key;
+    field public java.util.Locale locale;
+    field public String packageName;
+    field public int rank;
+    field public int userId;
+  }
+
+  public class SearchIndexableResource extends android.provider.SearchIndexableData {
+    ctor public SearchIndexableResource(int, int, String, int);
+    ctor public SearchIndexableResource(android.content.Context);
+    field public int xmlResId;
+  }
+
+  public class SearchIndexablesContract {
+    ctor public SearchIndexablesContract();
+    field public static final int COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE = 0; // 0x0
+    field public static final int COLUMN_INDEX_RAW_CLASS_NAME = 7; // 0x7
+    field public static final int COLUMN_INDEX_RAW_ENTRIES = 4; // 0x4
+    field public static final int COLUMN_INDEX_RAW_ICON_RESID = 8; // 0x8
+    field public static final int COLUMN_INDEX_RAW_INTENT_ACTION = 9; // 0x9
+    field public static final int COLUMN_INDEX_RAW_INTENT_TARGET_CLASS = 11; // 0xb
+    field public static final int COLUMN_INDEX_RAW_INTENT_TARGET_PACKAGE = 10; // 0xa
+    field public static final int COLUMN_INDEX_RAW_KEY = 12; // 0xc
+    field public static final int COLUMN_INDEX_RAW_KEYWORDS = 5; // 0x5
+    field public static final int COLUMN_INDEX_RAW_RANK = 0; // 0x0
+    field public static final int COLUMN_INDEX_RAW_SCREEN_TITLE = 6; // 0x6
+    field public static final int COLUMN_INDEX_RAW_SUMMARY_OFF = 3; // 0x3
+    field public static final int COLUMN_INDEX_RAW_SUMMARY_ON = 2; // 0x2
+    field public static final int COLUMN_INDEX_RAW_TITLE = 1; // 0x1
+    field public static final int COLUMN_INDEX_RAW_USER_ID = 13; // 0xd
+    field public static final int COLUMN_INDEX_XML_RES_CLASS_NAME = 2; // 0x2
+    field public static final int COLUMN_INDEX_XML_RES_ICON_RESID = 3; // 0x3
+    field public static final int COLUMN_INDEX_XML_RES_INTENT_ACTION = 4; // 0x4
+    field public static final int COLUMN_INDEX_XML_RES_INTENT_TARGET_CLASS = 6; // 0x6
+    field public static final int COLUMN_INDEX_XML_RES_INTENT_TARGET_PACKAGE = 5; // 0x5
+    field public static final int COLUMN_INDEX_XML_RES_RANK = 0; // 0x0
+    field public static final int COLUMN_INDEX_XML_RES_RESID = 1; // 0x1
+    field public static final String DYNAMIC_INDEXABLES_RAW = "dynamic_indexables_raw";
+    field public static final String DYNAMIC_INDEXABLES_RAW_PATH = "settings/dynamic_indexables_raw";
+    field public static final String INDEXABLES_RAW = "indexables_raw";
+    field public static final String[] INDEXABLES_RAW_COLUMNS;
+    field public static final String INDEXABLES_RAW_PATH = "settings/indexables_raw";
+    field public static final String INDEXABLES_XML_RES = "indexables_xml_res";
+    field public static final String[] INDEXABLES_XML_RES_COLUMNS;
+    field public static final String INDEXABLES_XML_RES_PATH = "settings/indexables_xml_res";
+    field public static final String NON_INDEXABLES_KEYS = "non_indexables_key";
+    field public static final String[] NON_INDEXABLES_KEYS_COLUMNS;
+    field public static final String NON_INDEXABLES_KEYS_PATH = "settings/non_indexables_key";
+    field public static final String PROVIDER_INTERFACE = "android.content.action.SEARCH_INDEXABLES_PROVIDER";
+    field public static final String SLICE_URI_PAIRS = "slice_uri_pairs";
+    field @NonNull public static final String[] SLICE_URI_PAIRS_COLUMNS;
+    field public static final String SLICE_URI_PAIRS_PATH = "settings/slice_uri_pairs";
+  }
+
+  public static class SearchIndexablesContract.BaseColumns {
+    field public static final String COLUMN_CLASS_NAME = "className";
+    field public static final String COLUMN_ICON_RESID = "iconResId";
+    field public static final String COLUMN_INTENT_ACTION = "intentAction";
+    field public static final String COLUMN_INTENT_TARGET_CLASS = "intentTargetClass";
+    field public static final String COLUMN_INTENT_TARGET_PACKAGE = "intentTargetPackage";
+    field public static final String COLUMN_RANK = "rank";
+  }
+
+  public static final class SearchIndexablesContract.NonIndexableKey extends android.provider.SearchIndexablesContract.BaseColumns {
+    field public static final String COLUMN_KEY_VALUE = "key";
+    field public static final String MIME_TYPE = "vnd.android.cursor.dir/non_indexables_key";
+  }
+
+  public static final class SearchIndexablesContract.RawData extends android.provider.SearchIndexablesContract.BaseColumns {
+    field public static final String COLUMN_ENTRIES = "entries";
+    field public static final String COLUMN_KEY = "key";
+    field public static final String COLUMN_KEYWORDS = "keywords";
+    field public static final String COLUMN_SCREEN_TITLE = "screenTitle";
+    field public static final String COLUMN_SUMMARY_OFF = "summaryOff";
+    field public static final String COLUMN_SUMMARY_ON = "summaryOn";
+    field public static final String COLUMN_TITLE = "title";
+    field public static final String COLUMN_USER_ID = "user_id";
+    field public static final String MIME_TYPE = "vnd.android.cursor.dir/indexables_raw";
+  }
+
+  public static final class SearchIndexablesContract.SliceUriPairColumns {
+    field public static final String KEY = "key";
+    field public static final String SLICE_URI = "slice_uri";
+  }
+
+  public static final class SearchIndexablesContract.XmlResource extends android.provider.SearchIndexablesContract.BaseColumns {
+    field public static final String COLUMN_XML_RESID = "xmlResId";
+    field public static final String MIME_TYPE = "vnd.android.cursor.dir/indexables_xml_res";
+  }
+
+  public abstract class SearchIndexablesProvider extends android.content.ContentProvider {
+    ctor public SearchIndexablesProvider();
+    method public final int delete(android.net.Uri, String, String[]);
+    method public String getType(android.net.Uri);
+    method public final android.net.Uri insert(android.net.Uri, android.content.ContentValues);
+    method public android.database.Cursor query(android.net.Uri, String[], String, String[], String);
+    method @Nullable public android.database.Cursor queryDynamicRawData(@Nullable String[]);
+    method public abstract android.database.Cursor queryNonIndexableKeys(String[]);
+    method public abstract android.database.Cursor queryRawData(String[]);
+    method @Nullable public android.database.Cursor querySliceUriPairs();
+    method public abstract android.database.Cursor queryXmlResources(String[]);
+    method public final int update(android.net.Uri, android.content.ContentValues, String, String[]);
+  }
+
+  public final class Settings {
+    method public static boolean checkAndNoteWriteSettingsOperation(@NonNull android.content.Context, int, @NonNull String, boolean);
+    field public static final String ACTION_ACCESSIBILITY_DETAILS_SETTINGS = "android.settings.ACCESSIBILITY_DETAILS_SETTINGS";
+    field public static final String ACTION_BUGREPORT_HANDLER_SETTINGS = "android.settings.BUGREPORT_HANDLER_SETTINGS";
+    field public static final String ACTION_ENTERPRISE_PRIVACY_SETTINGS = "android.settings.ENTERPRISE_PRIVACY_SETTINGS";
+    field public static final String ACTION_LOCATION_CONTROLLER_EXTRA_PACKAGE_SETTINGS = "android.settings.LOCATION_CONTROLLER_EXTRA_PACKAGE_SETTINGS";
+    field public static final String ACTION_MANAGE_APP_OVERLAY_PERMISSION = "android.settings.MANAGE_APP_OVERLAY_PERMISSION";
+    field public static final String ACTION_MANAGE_DOMAIN_URLS = "android.settings.MANAGE_DOMAIN_URLS";
+    field public static final String ACTION_MANAGE_MORE_DEFAULT_APPS_SETTINGS = "android.settings.MANAGE_MORE_DEFAULT_APPS_SETTINGS";
+    field public static final String ACTION_NOTIFICATION_POLICY_ACCESS_DETAIL_SETTINGS = "android.settings.NOTIFICATION_POLICY_ACCESS_DETAIL_SETTINGS";
+    field public static final String ACTION_REQUEST_ENABLE_CONTENT_CAPTURE = "android.settings.REQUEST_ENABLE_CONTENT_CAPTURE";
+    field public static final String ACTION_SHOW_ADMIN_SUPPORT_DETAILS = "android.settings.SHOW_ADMIN_SUPPORT_DETAILS";
+    field public static final String ACTION_TETHER_PROVISIONING_UI = "android.settings.TETHER_PROVISIONING_UI";
+    field public static final String ACTION_TETHER_SETTINGS = "android.settings.TETHER_SETTINGS";
+  }
+
+  public static final class Settings.Global extends android.provider.Settings.NameValueTable {
+    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static boolean putString(@NonNull android.content.ContentResolver, @NonNull String, @Nullable String, @Nullable String, boolean);
+    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static void resetToDefaults(@NonNull android.content.ContentResolver, @Nullable String);
+    field public static final String AIRPLANE_MODE_TOGGLEABLE_RADIOS = "airplane_mode_toggleable_radios";
+    field public static final String APP_STANDBY_ENABLED = "app_standby_enabled";
+    field public static final String AUTOFILL_COMPAT_MODE_ALLOWED_PACKAGES = "autofill_compat_mode_allowed_packages";
+    field public static final String CARRIER_APP_NAMES = "carrier_app_names";
+    field public static final String CARRIER_APP_WHITELIST = "carrier_app_whitelist";
+    field public static final String DEFAULT_SM_DP_PLUS = "default_sm_dp_plus";
+    field public static final String DEVICE_DEMO_MODE = "device_demo_mode";
+    field public static final String DEVICE_PROVISIONING_MOBILE_DATA_ENABLED = "device_provisioning_mobile_data";
+    field public static final String EUICC_PROVISIONED = "euicc_provisioned";
+    field public static final String EUICC_SUPPORTED_COUNTRIES = "euicc_supported_countries";
+    field public static final String EUICC_UNSUPPORTED_COUNTRIES = "euicc_unsupported_countries";
+    field public static final String INSTALL_CARRIER_APP_NOTIFICATION_PERSISTENT = "install_carrier_app_notification_persistent";
+    field public static final String INSTALL_CARRIER_APP_NOTIFICATION_SLEEP_MILLIS = "install_carrier_app_notification_sleep_millis";
+    field public static final String OTA_DISABLE_AUTOMATIC_UPDATE = "ota_disable_automatic_update";
+    field public static final String REQUIRE_PASSWORD_TO_DECRYPT = "require_password_to_decrypt";
+    field public static final String TETHER_OFFLOAD_DISABLED = "tether_offload_disabled";
+    field public static final String TETHER_SUPPORTED = "tether_supported";
+    field public static final String THEATER_MODE_ON = "theater_mode_on";
+    field public static final String WEBVIEW_MULTIPROCESS = "webview_multiprocess";
+    field public static final String WIFI_BADGING_THRESHOLDS = "wifi_badging_thresholds";
+    field @Deprecated public static final String WIFI_WAKEUP_ENABLED = "wifi_wakeup_enabled";
+  }
+
+  public static final class Settings.Secure extends android.provider.Settings.NameValueTable {
+    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static boolean putString(@NonNull android.content.ContentResolver, @NonNull String, @Nullable String, @Nullable String, boolean);
+    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static void resetToDefaults(@NonNull android.content.ContentResolver, @Nullable String);
+    field @Deprecated public static final String ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED = "accessibility_display_magnification_navbar_enabled";
+    field public static final String ASSIST_GESTURE_SETUP_COMPLETE = "assist_gesture_setup_complete";
+    field public static final String AUTOFILL_FEATURE_FIELD_CLASSIFICATION = "autofill_field_classification";
+    field public static final String AUTOFILL_USER_DATA_MAX_CATEGORY_COUNT = "autofill_user_data_max_category_count";
+    field public static final String AUTOFILL_USER_DATA_MAX_FIELD_CLASSIFICATION_IDS_SIZE = "autofill_user_data_max_field_classification_size";
+    field public static final String AUTOFILL_USER_DATA_MAX_USER_DATA_SIZE = "autofill_user_data_max_user_data_size";
+    field public static final String AUTOFILL_USER_DATA_MAX_VALUE_LENGTH = "autofill_user_data_max_value_length";
+    field public static final String AUTOFILL_USER_DATA_MIN_VALUE_LENGTH = "autofill_user_data_min_value_length";
+    field public static final String AUTO_REVOKE_DISABLED = "auto_revoke_disabled";
+    field public static final String COMPLETED_CATEGORY_PREFIX = "suggested.completed_category.";
+    field public static final String DOZE_ALWAYS_ON = "doze_always_on";
+    field public static final String HUSH_GESTURE_USED = "hush_gesture_used";
+    field public static final String INSTANT_APPS_ENABLED = "instant_apps_enabled";
+    field public static final String LAST_SETUP_SHOWN = "last_setup_shown";
+    field public static final String LOCATION_ACCESS_CHECK_DELAY_MILLIS = "location_access_check_delay_millis";
+    field public static final String LOCATION_ACCESS_CHECK_INTERVAL_MILLIS = "location_access_check_interval_millis";
+    field public static final int LOCATION_MODE_ON = 3; // 0x3
+    field @Deprecated public static final String LOCATION_PERMISSIONS_UPGRADE_TO_Q_MODE = "location_permissions_upgrade_to_q_mode";
+    field public static final String LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS = "lock_screen_allow_private_notifications";
+    field public static final String LOCK_SCREEN_SHOW_NOTIFICATIONS = "lock_screen_show_notifications";
+    field public static final String ODI_CAPTIONS_ENABLED = "odi_captions_enabled";
+    field public static final String THEME_CUSTOMIZATION_OVERLAY_PACKAGES = "theme_customization_overlay_packages";
+    field public static final String USER_SETUP_COMPLETE = "user_setup_complete";
+    field public static final int USER_SETUP_PERSONALIZATION_COMPLETE = 10; // 0xa
+    field public static final int USER_SETUP_PERSONALIZATION_NOT_STARTED = 0; // 0x0
+    field public static final int USER_SETUP_PERSONALIZATION_PAUSED = 2; // 0x2
+    field public static final int USER_SETUP_PERSONALIZATION_STARTED = 1; // 0x1
+    field public static final String USER_SETUP_PERSONALIZATION_STATE = "user_setup_personalization_state";
+    field public static final String VOLUME_HUSH_GESTURE = "volume_hush_gesture";
+    field public static final int VOLUME_HUSH_MUTE = 2; // 0x2
+    field public static final int VOLUME_HUSH_OFF = 0; // 0x0
+    field public static final int VOLUME_HUSH_VIBRATE = 1; // 0x1
+  }
+
+  public static final class Settings.System extends android.provider.Settings.NameValueTable {
+    method @RequiresPermission(android.Manifest.permission.MODIFY_SETTINGS_OVERRIDEABLE_BY_RESTORE) public static boolean putString(@NonNull android.content.ContentResolver, @NonNull String, @Nullable String, boolean);
+  }
+
+  public static final class Telephony.Carriers implements android.provider.BaseColumns {
+    field public static final String APN_SET_ID = "apn_set_id";
+    field public static final int CARRIER_EDITED = 4; // 0x4
+    field public static final String EDITED_STATUS = "edited";
+    field public static final int MATCH_ALL_APN_SET_ID = -1; // 0xffffffff
+    field public static final String MAX_CONNECTIONS = "max_conns";
+    field public static final String MODEM_PERSIST = "modem_cognitive";
+    field public static final String MTU = "mtu";
+    field public static final int NO_APN_SET_ID = 0; // 0x0
+    field public static final String TIME_LIMIT_FOR_MAX_CONNECTIONS = "max_conns_time";
+    field public static final int UNEDITED = 0; // 0x0
+    field public static final int USER_DELETED = 2; // 0x2
+    field public static final String USER_EDITABLE = "user_editable";
+    field public static final int USER_EDITED = 1; // 0x1
+    field public static final String USER_VISIBLE = "user_visible";
+    field public static final String WAIT_TIME_RETRY = "wait_time";
+  }
+
+  public static final class Telephony.CellBroadcasts implements android.provider.BaseColumns {
+    field @NonNull public static final String AUTHORITY_LEGACY = "cellbroadcast-legacy";
+    field @NonNull public static final android.net.Uri AUTHORITY_LEGACY_URI;
+    field @NonNull public static final String CALL_METHOD_GET_PREFERENCE = "get_preference";
+    field public static final String CID = "cid";
+    field public static final String CMAS_CATEGORY = "cmas_category";
+    field public static final String CMAS_CERTAINTY = "cmas_certainty";
+    field public static final String CMAS_MESSAGE_CLASS = "cmas_message_class";
+    field public static final String CMAS_RESPONSE_TYPE = "cmas_response_type";
+    field public static final String CMAS_SEVERITY = "cmas_severity";
+    field public static final String CMAS_URGENCY = "cmas_urgency";
+    field @NonNull public static final android.net.Uri CONTENT_URI;
+    field public static final String DATA_CODING_SCHEME = "dcs";
+    field public static final String DEFAULT_SORT_ORDER = "date DESC";
+    field public static final String DELIVERY_TIME = "date";
+    field public static final String ETWS_WARNING_TYPE = "etws_warning_type";
+    field public static final String GEOGRAPHICAL_SCOPE = "geo_scope";
+    field public static final String GEOMETRIES = "geometries";
+    field public static final String LAC = "lac";
+    field public static final String LANGUAGE_CODE = "language";
+    field public static final String LOCATION_CHECK_TIME = "location_check_time";
+    field public static final String MAXIMUM_WAIT_TIME = "maximum_wait_time";
+    field public static final String MESSAGE_BODY = "body";
+    field public static final String MESSAGE_BROADCASTED = "message_broadcasted";
+    field public static final String MESSAGE_DISPLAYED = "message_displayed";
+    field public static final String MESSAGE_FORMAT = "format";
+    field @NonNull @RequiresPermission(android.Manifest.permission.READ_CELL_BROADCASTS) public static final android.net.Uri MESSAGE_HISTORY_URI;
+    field public static final String MESSAGE_PRIORITY = "priority";
+    field public static final String MESSAGE_READ = "read";
+    field public static final String PLMN = "plmn";
+    field public static final String RECEIVED_TIME = "received_time";
+    field public static final String SERIAL_NUMBER = "serial_number";
+    field public static final String SERVICE_CATEGORY = "service_category";
+    field public static final String SLOT_INDEX = "slot_index";
+    field public static final String SUBSCRIPTION_ID = "sub_id";
+  }
+
+  public static final class Telephony.CellBroadcasts.Preference {
+    field @NonNull public static final String ENABLE_ALERT_VIBRATION_PREF = "enable_alert_vibrate";
+    field @NonNull public static final String ENABLE_AREA_UPDATE_INFO_PREF = "enable_area_update_info_alerts";
+    field @NonNull public static final String ENABLE_CMAS_AMBER_PREF = "enable_cmas_amber_alerts";
+    field @NonNull public static final String ENABLE_CMAS_EXTREME_THREAT_PREF = "enable_cmas_extreme_threat_alerts";
+    field @NonNull public static final String ENABLE_CMAS_IN_SECOND_LANGUAGE_PREF = "receive_cmas_in_second_language";
+    field @NonNull public static final String ENABLE_CMAS_PRESIDENTIAL_PREF = "enable_cmas_presidential_alerts";
+    field @NonNull public static final String ENABLE_CMAS_SEVERE_THREAT_PREF = "enable_cmas_severe_threat_alerts";
+    field @NonNull public static final String ENABLE_EMERGENCY_PERF = "enable_emergency_alerts";
+    field @NonNull public static final String ENABLE_PUBLIC_SAFETY_PREF = "enable_public_safety_messages";
+    field @NonNull public static final String ENABLE_STATE_LOCAL_TEST_PREF = "enable_state_local_test_alerts";
+    field @NonNull public static final String ENABLE_TEST_ALERT_PREF = "enable_test_alerts";
+  }
+
+  public static final class Telephony.Sms.Intents {
+    field public static final String ACTION_SMS_EMERGENCY_CB_RECEIVED = "android.provider.action.SMS_EMERGENCY_CB_RECEIVED";
+  }
+
+  public final class TimeZoneRulesDataContract {
+    field public static final String AUTHORITY = "com.android.timezone";
+  }
+
+  public static final class TimeZoneRulesDataContract.Operation {
+    field public static final String COLUMN_DISTRO_MAJOR_VERSION = "distro_major_version";
+    field public static final String COLUMN_DISTRO_MINOR_VERSION = "distro_minor_version";
+    field public static final String COLUMN_REVISION = "revision";
+    field public static final String COLUMN_RULES_VERSION = "rules_version";
+    field public static final String COLUMN_TYPE = "type";
+    field public static final android.net.Uri CONTENT_URI;
+    field public static final String TYPE_INSTALL = "INSTALL";
+    field public static final String TYPE_NO_OP = "NOOP";
+    field public static final String TYPE_UNINSTALL = "UNINSTALL";
+  }
+
+}
+
+package android.se.omapi {
+
+  public final class Reader {
+    method @RequiresPermission(android.Manifest.permission.SECURE_ELEMENT_PRIVILEGED_OPERATION) public boolean reset();
+  }
+
+}
+
+package android.security.keystore {
+
+  public class AndroidKeyStoreProvider extends java.security.Provider {
+    method @NonNull public static java.security.KeyStore getKeyStoreForUid(int) throws java.security.KeyStoreException, java.security.NoSuchProviderException;
+  }
+
+  public abstract class AttestationUtils {
+    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static java.security.cert.X509Certificate[] attestDeviceIds(android.content.Context, @NonNull int[], @NonNull byte[]) throws android.security.keystore.DeviceIdAttestationException;
+    field public static final int ID_TYPE_IMEI = 2; // 0x2
+    field public static final int ID_TYPE_MEID = 3; // 0x3
+    field public static final int ID_TYPE_SERIAL = 1; // 0x1
+    field public static final int USE_INDIVIDUAL_ATTESTATION = 4; // 0x4
+  }
+
+  public class DeviceIdAttestationException extends java.lang.Exception {
+    ctor public DeviceIdAttestationException(@Nullable String);
+    ctor public DeviceIdAttestationException(@Nullable String, @Nullable Throwable);
+  }
+
+  public final class KeyGenParameterSpec implements java.security.spec.AlgorithmParameterSpec {
+    method public int getNamespace();
+  }
+
+  public static final class KeyGenParameterSpec.Builder {
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setNamespace(int);
+    method @Deprecated @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUid(int);
+  }
+
+}
+
+package android.security.keystore.recovery {
+
+  public class DecryptionFailedException extends java.security.GeneralSecurityException {
+    ctor public DecryptionFailedException(String);
+  }
+
+  public class InternalRecoveryServiceException extends java.security.GeneralSecurityException {
+    ctor public InternalRecoveryServiceException(String);
+    ctor public InternalRecoveryServiceException(String, Throwable);
+  }
+
+  public final class KeyChainProtectionParams implements android.os.Parcelable {
+    method public void clearSecret();
+    method public int describeContents();
+    method @NonNull public android.security.keystore.recovery.KeyDerivationParams getKeyDerivationParams();
+    method public int getLockScreenUiFormat();
+    method @NonNull public byte[] getSecret();
+    method public int getUserSecretType();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.security.keystore.recovery.KeyChainProtectionParams> CREATOR;
+    field public static final int TYPE_LOCKSCREEN = 100; // 0x64
+    field public static final int UI_FORMAT_PASSWORD = 2; // 0x2
+    field public static final int UI_FORMAT_PATTERN = 3; // 0x3
+    field public static final int UI_FORMAT_PIN = 1; // 0x1
+  }
+
+  public static class KeyChainProtectionParams.Builder {
+    ctor public KeyChainProtectionParams.Builder();
+    method @NonNull public android.security.keystore.recovery.KeyChainProtectionParams build();
+    method @NonNull public android.security.keystore.recovery.KeyChainProtectionParams.Builder setKeyDerivationParams(@NonNull android.security.keystore.recovery.KeyDerivationParams);
+    method @NonNull public android.security.keystore.recovery.KeyChainProtectionParams.Builder setLockScreenUiFormat(int);
+    method @NonNull public android.security.keystore.recovery.KeyChainProtectionParams.Builder setSecret(@NonNull byte[]);
+    method @NonNull public android.security.keystore.recovery.KeyChainProtectionParams.Builder setUserSecretType(int);
+  }
+
+  public final class KeyChainSnapshot implements android.os.Parcelable {
+    method public int describeContents();
+    method public long getCounterId();
+    method @NonNull public byte[] getEncryptedRecoveryKeyBlob();
+    method @NonNull public java.util.List<android.security.keystore.recovery.KeyChainProtectionParams> getKeyChainProtectionParams();
+    method public int getMaxAttempts();
+    method @NonNull public byte[] getServerParams();
+    method public int getSnapshotVersion();
+    method @NonNull public java.security.cert.CertPath getTrustedHardwareCertPath();
+    method @NonNull public java.util.List<android.security.keystore.recovery.WrappedApplicationKey> getWrappedApplicationKeys();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.security.keystore.recovery.KeyChainSnapshot> CREATOR;
+  }
+
+  public final class KeyDerivationParams implements android.os.Parcelable {
+    method @NonNull public static android.security.keystore.recovery.KeyDerivationParams createScryptParams(@NonNull byte[], int);
+    method @NonNull public static android.security.keystore.recovery.KeyDerivationParams createSha256Params(@NonNull byte[]);
+    method public int describeContents();
+    method public int getAlgorithm();
+    method public int getMemoryDifficulty();
+    method @NonNull public byte[] getSalt();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int ALGORITHM_SCRYPT = 2; // 0x2
+    field public static final int ALGORITHM_SHA256 = 1; // 0x1
+    field @NonNull public static final android.os.Parcelable.Creator<android.security.keystore.recovery.KeyDerivationParams> CREATOR;
+  }
+
+  public class LockScreenRequiredException extends java.security.GeneralSecurityException {
+    ctor public LockScreenRequiredException(String);
+  }
+
+  public class RecoveryController {
+    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public android.security.keystore.recovery.RecoverySession createRecoverySession();
+    method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.security.Key generateKey(@NonNull String) throws android.security.keystore.recovery.InternalRecoveryServiceException, android.security.keystore.recovery.LockScreenRequiredException;
+    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.security.Key generateKey(@NonNull String, @Nullable byte[]) throws android.security.keystore.recovery.InternalRecoveryServiceException, android.security.keystore.recovery.LockScreenRequiredException;
+    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.util.List<java.lang.String> getAliases() throws android.security.keystore.recovery.InternalRecoveryServiceException;
+    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public static android.security.keystore.recovery.RecoveryController getInstance(@NonNull android.content.Context);
+    method @Nullable @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.security.Key getKey(@NonNull String) throws android.security.keystore.recovery.InternalRecoveryServiceException, java.security.UnrecoverableKeyException;
+    method @Nullable @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public android.security.keystore.recovery.KeyChainSnapshot getKeyChainSnapshot() throws android.security.keystore.recovery.InternalRecoveryServiceException;
+    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public int[] getRecoverySecretTypes() throws android.security.keystore.recovery.InternalRecoveryServiceException;
+    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public int getRecoveryStatus(@NonNull String) throws android.security.keystore.recovery.InternalRecoveryServiceException;
+    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.util.Map<java.lang.String,java.security.cert.X509Certificate> getRootCertificates();
+    method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.security.Key importKey(@NonNull String, @NonNull byte[]) throws android.security.keystore.recovery.InternalRecoveryServiceException, android.security.keystore.recovery.LockScreenRequiredException;
+    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.security.Key importKey(@NonNull String, @NonNull byte[], @Nullable byte[]) throws android.security.keystore.recovery.InternalRecoveryServiceException, android.security.keystore.recovery.LockScreenRequiredException;
+    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void initRecoveryService(@NonNull String, @NonNull byte[], @NonNull byte[]) throws java.security.cert.CertificateException, android.security.keystore.recovery.InternalRecoveryServiceException;
+    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public static boolean isRecoverableKeyStoreEnabled(@NonNull android.content.Context);
+    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void removeKey(@NonNull String) throws android.security.keystore.recovery.InternalRecoveryServiceException;
+    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void setRecoverySecretTypes(@NonNull int[]) throws android.security.keystore.recovery.InternalRecoveryServiceException;
+    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void setRecoveryStatus(@NonNull String, int) throws android.security.keystore.recovery.InternalRecoveryServiceException;
+    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void setServerParams(@NonNull byte[]) throws android.security.keystore.recovery.InternalRecoveryServiceException;
+    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void setSnapshotCreatedPendingIntent(@Nullable android.app.PendingIntent) throws android.security.keystore.recovery.InternalRecoveryServiceException;
+    field public static final int RECOVERY_STATUS_PERMANENT_FAILURE = 3; // 0x3
+    field public static final int RECOVERY_STATUS_SYNCED = 0; // 0x0
+    field public static final int RECOVERY_STATUS_SYNC_IN_PROGRESS = 1; // 0x1
+  }
+
+  public class RecoverySession implements java.lang.AutoCloseable {
+    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void close();
+    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.util.Map<java.lang.String,java.security.Key> recoverKeyChainSnapshot(@NonNull byte[], @NonNull java.util.List<android.security.keystore.recovery.WrappedApplicationKey>) throws android.security.keystore.recovery.DecryptionFailedException, android.security.keystore.recovery.InternalRecoveryServiceException, android.security.keystore.recovery.SessionExpiredException;
+    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public byte[] start(@NonNull String, @NonNull java.security.cert.CertPath, @NonNull byte[], @NonNull byte[], @NonNull java.util.List<android.security.keystore.recovery.KeyChainProtectionParams>) throws java.security.cert.CertificateException, android.security.keystore.recovery.InternalRecoveryServiceException;
+  }
+
+  public class SessionExpiredException extends java.security.GeneralSecurityException {
+    ctor public SessionExpiredException(String);
+  }
+
+  public final class WrappedApplicationKey implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public String getAlias();
+    method @NonNull public byte[] getEncryptedKeyMaterial();
+    method @Nullable public byte[] getMetadata();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.security.keystore.recovery.WrappedApplicationKey> CREATOR;
+  }
+
+  public static class WrappedApplicationKey.Builder {
+    ctor public WrappedApplicationKey.Builder();
+    method @NonNull public android.security.keystore.recovery.WrappedApplicationKey build();
+    method @NonNull public android.security.keystore.recovery.WrappedApplicationKey.Builder setAlias(@NonNull String);
+    method @NonNull public android.security.keystore.recovery.WrappedApplicationKey.Builder setEncryptedKeyMaterial(@NonNull byte[]);
+    method @NonNull public android.security.keystore.recovery.WrappedApplicationKey.Builder setMetadata(@Nullable byte[]);
+  }
+
+}
+
+package android.service.appprediction {
+
+  public abstract class AppPredictionService extends android.app.Service {
+    ctor public AppPredictionService();
+    method @MainThread public abstract void onAppTargetEvent(@NonNull android.app.prediction.AppPredictionSessionId, @NonNull android.app.prediction.AppTargetEvent);
+    method @NonNull public final android.os.IBinder onBind(@NonNull android.content.Intent);
+    method public void onCreatePredictionSession(@NonNull android.app.prediction.AppPredictionContext, @NonNull android.app.prediction.AppPredictionSessionId);
+    method @MainThread public void onDestroyPredictionSession(@NonNull android.app.prediction.AppPredictionSessionId);
+    method @MainThread public abstract void onLaunchLocationShown(@NonNull android.app.prediction.AppPredictionSessionId, @NonNull String, @NonNull java.util.List<android.app.prediction.AppTargetId>);
+    method @MainThread public abstract void onRequestPredictionUpdate(@NonNull android.app.prediction.AppPredictionSessionId);
+    method @MainThread public abstract void onSortAppTargets(@NonNull android.app.prediction.AppPredictionSessionId, @NonNull java.util.List<android.app.prediction.AppTarget>, @NonNull android.os.CancellationSignal, @NonNull java.util.function.Consumer<java.util.List<android.app.prediction.AppTarget>>);
+    method @MainThread public void onStartPredictionUpdates();
+    method @MainThread public void onStopPredictionUpdates();
+    method public final void updatePredictions(@NonNull android.app.prediction.AppPredictionSessionId, @NonNull java.util.List<android.app.prediction.AppTarget>);
+  }
+
+}
+
+package android.service.attention {
+
+  public abstract class AttentionService extends android.app.Service {
+    ctor public AttentionService();
+    method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
+    method public abstract void onCancelAttentionCheck(@NonNull android.service.attention.AttentionService.AttentionCallback);
+    method public abstract void onCheckAttention(@NonNull android.service.attention.AttentionService.AttentionCallback);
+    field public static final int ATTENTION_FAILURE_CAMERA_PERMISSION_ABSENT = 6; // 0x6
+    field public static final int ATTENTION_FAILURE_CANCELLED = 3; // 0x3
+    field public static final int ATTENTION_FAILURE_PREEMPTED = 4; // 0x4
+    field public static final int ATTENTION_FAILURE_TIMED_OUT = 5; // 0x5
+    field public static final int ATTENTION_FAILURE_UNKNOWN = 2; // 0x2
+    field public static final int ATTENTION_SUCCESS_ABSENT = 0; // 0x0
+    field public static final int ATTENTION_SUCCESS_PRESENT = 1; // 0x1
+    field public static final String SERVICE_INTERFACE = "android.service.attention.AttentionService";
+  }
+
+  public static final class AttentionService.AttentionCallback {
+    method public void onFailure(int);
+    method public void onSuccess(int, long);
+  }
+
+}
+
+package android.service.autofill {
+
+  public abstract class AutofillFieldClassificationService extends android.app.Service {
+    ctor public AutofillFieldClassificationService();
+    method public android.os.IBinder onBind(android.content.Intent);
+    method @Nullable public float[][] onCalculateScores(@NonNull java.util.List<android.view.autofill.AutofillValue>, @NonNull java.util.List<java.lang.String>, @NonNull java.util.List<java.lang.String>, @Nullable String, @Nullable android.os.Bundle, @Nullable java.util.Map, @Nullable java.util.Map);
+    method @Deprecated @Nullable public float[][] onGetScores(@Nullable String, @Nullable android.os.Bundle, @NonNull java.util.List<android.view.autofill.AutofillValue>, @NonNull java.util.List<java.lang.String>);
+    field public static final String REQUIRED_ALGORITHM_CREDIT_CARD = "CREDIT_CARD";
+    field public static final String REQUIRED_ALGORITHM_EDIT_DISTANCE = "EDIT_DISTANCE";
+    field public static final String REQUIRED_ALGORITHM_EXACT_MATCH = "EXACT_MATCH";
+    field public static final String SERVICE_INTERFACE = "android.service.autofill.AutofillFieldClassificationService";
+    field public static final String SERVICE_META_DATA_KEY_AVAILABLE_ALGORITHMS = "android.autofill.field_classification.available_algorithms";
+    field public static final String SERVICE_META_DATA_KEY_DEFAULT_ALGORITHM = "android.autofill.field_classification.default_algorithm";
+  }
+
+  public static final class Dataset.Builder {
+    ctor public Dataset.Builder(@NonNull android.service.autofill.InlinePresentation);
+    method @NonNull public android.service.autofill.Dataset.Builder setFieldInlinePresentation(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue, @Nullable java.util.regex.Pattern, @NonNull android.service.autofill.InlinePresentation);
+  }
+
+  public abstract class InlineSuggestionRenderService extends android.app.Service {
+    ctor public InlineSuggestionRenderService();
+    method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
+    method @NonNull public android.os.Bundle onGetInlineSuggestionsRendererInfo();
+    method @Nullable public android.view.View onRenderSuggestion(@NonNull android.service.autofill.InlinePresentation, int, int);
+    method public final void startIntentSender(@NonNull android.content.IntentSender);
+    field public static final String SERVICE_INTERFACE = "android.service.autofill.InlineSuggestionRenderService";
+  }
+
+}
+
+package android.service.autofill.augmented {
+
+  public abstract class AugmentedAutofillService extends android.app.Service {
+    ctor public AugmentedAutofillService();
+    method protected final void dump(java.io.FileDescriptor, java.io.PrintWriter, String[]);
+    method protected void dump(@NonNull java.io.PrintWriter, @NonNull String[]);
+    method @Nullable public final android.service.autofill.FillEventHistory getFillEventHistory();
+    method public void onConnected();
+    method public void onDisconnected();
+    method public void onFillRequest(@NonNull android.service.autofill.augmented.FillRequest, @NonNull android.os.CancellationSignal, @NonNull android.service.autofill.augmented.FillController, @NonNull android.service.autofill.augmented.FillCallback);
+    method public final boolean requestAutofill(@NonNull android.content.ComponentName, @NonNull android.view.autofill.AutofillId);
+    field public static final String SERVICE_INTERFACE = "android.service.autofill.augmented.AugmentedAutofillService";
+  }
+
+  public final class FillCallback {
+    method public void onSuccess(@Nullable android.service.autofill.augmented.FillResponse);
+  }
+
+  public final class FillController {
+    method public void autofill(@NonNull java.util.List<android.util.Pair<android.view.autofill.AutofillId,android.view.autofill.AutofillValue>>);
+  }
+
+  public final class FillRequest {
+    method @NonNull public android.content.ComponentName getActivityComponent();
+    method @NonNull public android.view.autofill.AutofillId getFocusedId();
+    method @NonNull public android.view.autofill.AutofillValue getFocusedValue();
+    method @Nullable public android.view.inputmethod.InlineSuggestionsRequest getInlineSuggestionsRequest();
+    method @Nullable public android.service.autofill.augmented.PresentationParams getPresentationParams();
+    method public int getTaskId();
+  }
+
+  public final class FillResponse {
+  }
+
+  public static final class FillResponse.Builder {
+    ctor public FillResponse.Builder();
+    method @NonNull public android.service.autofill.augmented.FillResponse build();
+    method @NonNull public android.service.autofill.augmented.FillResponse.Builder setClientState(@NonNull android.os.Bundle);
+    method @NonNull public android.service.autofill.augmented.FillResponse.Builder setFillWindow(@NonNull android.service.autofill.augmented.FillWindow);
+    method @NonNull public android.service.autofill.augmented.FillResponse.Builder setInlineSuggestions(@NonNull java.util.List<android.service.autofill.Dataset>);
+  }
+
+  public final class FillWindow implements java.lang.AutoCloseable {
+    ctor public FillWindow();
+    method public void destroy();
+    method public boolean update(@NonNull android.service.autofill.augmented.PresentationParams.Area, @NonNull android.view.View, long);
+  }
+
+  public abstract class PresentationParams {
+    method @Nullable public android.service.autofill.augmented.PresentationParams.Area getSuggestionArea();
+  }
+
+  public abstract static class PresentationParams.Area {
+    method @NonNull public android.graphics.Rect getBounds();
+  }
+
+}
+
+package android.service.carrier {
+
+  public abstract class ApnService extends android.app.Service {
+    ctor public ApnService();
+    method @NonNull public android.os.IBinder onBind(@Nullable android.content.Intent);
+    method @NonNull @WorkerThread public abstract java.util.List<android.content.ContentValues> onRestoreApns(int);
+  }
+
+}
+
+package android.service.contentcapture {
+
+  public final class ActivityEvent implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public android.content.ComponentName getComponentName();
+    method public int getEventType();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.contentcapture.ActivityEvent> CREATOR;
+    field public static final int TYPE_ACTIVITY_DESTROYED = 24; // 0x18
+    field public static final int TYPE_ACTIVITY_PAUSED = 2; // 0x2
+    field public static final int TYPE_ACTIVITY_RESUMED = 1; // 0x1
+    field public static final int TYPE_ACTIVITY_STOPPED = 23; // 0x17
+  }
+
+  public abstract class ContentCaptureService extends android.app.Service {
+    ctor public ContentCaptureService();
+    method public final void disableSelf();
+    method public void onActivityEvent(@NonNull android.service.contentcapture.ActivityEvent);
+    method public void onActivitySnapshot(@NonNull android.view.contentcapture.ContentCaptureSessionId, @NonNull android.service.contentcapture.SnapshotData);
+    method public void onConnected();
+    method public void onContentCaptureEvent(@NonNull android.view.contentcapture.ContentCaptureSessionId, @NonNull android.view.contentcapture.ContentCaptureEvent);
+    method public void onCreateContentCaptureSession(@NonNull android.view.contentcapture.ContentCaptureContext, @NonNull android.view.contentcapture.ContentCaptureSessionId);
+    method public void onDataRemovalRequest(@NonNull android.view.contentcapture.DataRemovalRequest);
+    method public void onDataShareRequest(@NonNull android.view.contentcapture.DataShareRequest, @NonNull android.service.contentcapture.DataShareCallback);
+    method public void onDestroyContentCaptureSession(@NonNull android.view.contentcapture.ContentCaptureSessionId);
+    method public void onDisconnected();
+    method public final void setContentCaptureConditions(@NonNull String, @Nullable java.util.Set<android.view.contentcapture.ContentCaptureCondition>);
+    method public final void setContentCaptureWhitelist(@Nullable java.util.Set<java.lang.String>, @Nullable java.util.Set<android.content.ComponentName>);
+    field public static final String SERVICE_INTERFACE = "android.service.contentcapture.ContentCaptureService";
+    field public static final String SERVICE_META_DATA = "android.content_capture";
+  }
+
+  public interface DataShareCallback {
+    method public void onAccept(@NonNull java.util.concurrent.Executor, @NonNull android.service.contentcapture.DataShareReadAdapter);
+    method public void onReject();
+  }
+
+  public interface DataShareReadAdapter {
+    method public void onError(int);
+    method public void onStart(@NonNull android.os.ParcelFileDescriptor);
+  }
+
+  public final class SnapshotData implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public android.app.assist.AssistContent getAssistContent();
+    method @NonNull public android.os.Bundle getAssistData();
+    method @NonNull public android.app.assist.AssistStructure getAssistStructure();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.contentcapture.SnapshotData> CREATOR;
+  }
+
+}
+
+package android.service.contentsuggestions {
+
+  public abstract class ContentSuggestionsService extends android.app.Service {
+    ctor public ContentSuggestionsService();
+    method public abstract void onClassifyContentSelections(@NonNull android.app.contentsuggestions.ClassificationsRequest, @NonNull android.app.contentsuggestions.ContentSuggestionsManager.ClassificationsCallback);
+    method public abstract void onNotifyInteraction(@NonNull String, @NonNull android.os.Bundle);
+    method public abstract void onProcessContextImage(int, @Nullable android.graphics.Bitmap, @NonNull android.os.Bundle);
+    method public abstract void onSuggestContentSelections(@NonNull android.app.contentsuggestions.SelectionsRequest, @NonNull android.app.contentsuggestions.ContentSuggestionsManager.SelectionsCallback);
+    field public static final String SERVICE_INTERFACE = "android.service.contentsuggestions.ContentSuggestionsService";
+  }
+
+}
+
+package android.service.dataloader {
+
+  public abstract class DataLoaderService extends android.app.Service {
+    ctor public DataLoaderService();
+    method @Nullable public android.service.dataloader.DataLoaderService.DataLoader onCreateDataLoader(@NonNull android.content.pm.DataLoaderParams);
+  }
+
+  public static interface DataLoaderService.DataLoader {
+    method public boolean onCreate(@NonNull android.content.pm.DataLoaderParams, @NonNull android.service.dataloader.DataLoaderService.FileSystemConnector);
+    method public boolean onPrepareImage(@NonNull java.util.Collection<android.content.pm.InstallationFile>, @NonNull java.util.Collection<java.lang.String>);
+  }
+
+  public static final class DataLoaderService.FileSystemConnector {
+    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void writeData(@NonNull String, long, long, @NonNull android.os.ParcelFileDescriptor) throws java.io.IOException;
+  }
+
+}
+
+package android.service.euicc {
+
+  public final class DownloadSubscriptionResult implements android.os.Parcelable {
+    ctor public DownloadSubscriptionResult(int, int, int);
+    method public int describeContents();
+    method public int getCardId();
+    method public int getResolvableErrors();
+    method public int getResult();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.euicc.DownloadSubscriptionResult> CREATOR;
+  }
+
+  public final class EuiccProfileInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public android.service.carrier.CarrierIdentifier getCarrierIdentifier();
+    method public String getIccid();
+    method @Nullable public String getNickname();
+    method @android.service.euicc.EuiccProfileInfo.PolicyRule public int getPolicyRules();
+    method @android.service.euicc.EuiccProfileInfo.ProfileClass public int getProfileClass();
+    method public String getProfileName();
+    method public String getServiceProviderName();
+    method @android.service.euicc.EuiccProfileInfo.ProfileState public int getState();
+    method @Nullable public java.util.List<android.telephony.UiccAccessRule> getUiccAccessRules();
+    method public boolean hasPolicyRule(@android.service.euicc.EuiccProfileInfo.PolicyRule int);
+    method public boolean hasPolicyRules();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.euicc.EuiccProfileInfo> CREATOR;
+    field public static final int POLICY_RULE_DELETE_AFTER_DISABLING = 4; // 0x4
+    field public static final int POLICY_RULE_DO_NOT_DELETE = 2; // 0x2
+    field public static final int POLICY_RULE_DO_NOT_DISABLE = 1; // 0x1
+    field public static final int PROFILE_CLASS_OPERATIONAL = 2; // 0x2
+    field public static final int PROFILE_CLASS_PROVISIONING = 1; // 0x1
+    field public static final int PROFILE_CLASS_TESTING = 0; // 0x0
+    field public static final int PROFILE_STATE_DISABLED = 0; // 0x0
+    field public static final int PROFILE_STATE_ENABLED = 1; // 0x1
+  }
+
+  public static final class EuiccProfileInfo.Builder {
+    ctor public EuiccProfileInfo.Builder(String);
+    ctor public EuiccProfileInfo.Builder(android.service.euicc.EuiccProfileInfo);
+    method public android.service.euicc.EuiccProfileInfo build();
+    method public android.service.euicc.EuiccProfileInfo.Builder setCarrierIdentifier(android.service.carrier.CarrierIdentifier);
+    method public android.service.euicc.EuiccProfileInfo.Builder setIccid(String);
+    method public android.service.euicc.EuiccProfileInfo.Builder setNickname(String);
+    method public android.service.euicc.EuiccProfileInfo.Builder setPolicyRules(@android.service.euicc.EuiccProfileInfo.PolicyRule int);
+    method public android.service.euicc.EuiccProfileInfo.Builder setProfileClass(@android.service.euicc.EuiccProfileInfo.ProfileClass int);
+    method public android.service.euicc.EuiccProfileInfo.Builder setProfileName(String);
+    method public android.service.euicc.EuiccProfileInfo.Builder setServiceProviderName(String);
+    method public android.service.euicc.EuiccProfileInfo.Builder setState(@android.service.euicc.EuiccProfileInfo.ProfileState int);
+    method public android.service.euicc.EuiccProfileInfo.Builder setUiccAccessRule(@Nullable java.util.List<android.telephony.UiccAccessRule>);
+  }
+
+  @IntDef(flag=true, prefix={"POLICY_RULE_"}, value={android.service.euicc.EuiccProfileInfo.POLICY_RULE_DO_NOT_DISABLE, android.service.euicc.EuiccProfileInfo.POLICY_RULE_DO_NOT_DELETE, android.service.euicc.EuiccProfileInfo.POLICY_RULE_DELETE_AFTER_DISABLING}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccProfileInfo.PolicyRule {
+  }
+
+  @IntDef(prefix={"PROFILE_CLASS_"}, value={android.service.euicc.EuiccProfileInfo.PROFILE_CLASS_TESTING, android.service.euicc.EuiccProfileInfo.PROFILE_CLASS_PROVISIONING, android.service.euicc.EuiccProfileInfo.PROFILE_CLASS_OPERATIONAL, 0xffffffff}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccProfileInfo.ProfileClass {
+  }
+
+  @IntDef(prefix={"PROFILE_STATE_"}, value={android.service.euicc.EuiccProfileInfo.PROFILE_STATE_DISABLED, android.service.euicc.EuiccProfileInfo.PROFILE_STATE_ENABLED, 0xffffffff}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccProfileInfo.ProfileState {
+  }
+
+  public abstract class EuiccService extends android.app.Service {
+    ctor public EuiccService();
+    method public void dump(@NonNull java.io.PrintWriter);
+    method public int encodeSmdxSubjectAndReasonCode(@Nullable String, @Nullable String);
+    method @CallSuper public android.os.IBinder onBind(android.content.Intent);
+    method public abstract int onDeleteSubscription(int, String);
+    method public android.service.euicc.DownloadSubscriptionResult onDownloadSubscription(int, @NonNull android.telephony.euicc.DownloadableSubscription, boolean, boolean, @Nullable android.os.Bundle);
+    method @Deprecated public int onDownloadSubscription(int, @NonNull android.telephony.euicc.DownloadableSubscription, boolean, boolean);
+    method @Deprecated public abstract int onEraseSubscriptions(int);
+    method public int onEraseSubscriptions(int, @android.telephony.euicc.EuiccCardManager.ResetOption int);
+    method public abstract android.service.euicc.GetDefaultDownloadableSubscriptionListResult onGetDefaultDownloadableSubscriptionList(int, boolean);
+    method public abstract android.service.euicc.GetDownloadableSubscriptionMetadataResult onGetDownloadableSubscriptionMetadata(int, android.telephony.euicc.DownloadableSubscription, boolean);
+    method public abstract String onGetEid(int);
+    method @NonNull public abstract android.telephony.euicc.EuiccInfo onGetEuiccInfo(int);
+    method @NonNull public abstract android.service.euicc.GetEuiccProfileInfoListResult onGetEuiccProfileInfoList(int);
+    method @android.telephony.euicc.EuiccManager.OtaStatus public abstract int onGetOtaStatus(int);
+    method public abstract int onRetainSubscriptionsForFactoryReset(int);
+    method public abstract void onStartOtaIfNecessary(int, android.service.euicc.EuiccService.OtaStatusChangedCallback);
+    method public abstract int onSwitchToSubscription(int, @Nullable String, boolean);
+    method public abstract int onUpdateSubscriptionNickname(int, String, String);
+    field public static final String ACTION_BIND_CARRIER_PROVISIONING_SERVICE = "android.service.euicc.action.BIND_CARRIER_PROVISIONING_SERVICE";
+    field public static final String ACTION_DELETE_SUBSCRIPTION_PRIVILEGED = "android.service.euicc.action.DELETE_SUBSCRIPTION_PRIVILEGED";
+    field public static final String ACTION_MANAGE_EMBEDDED_SUBSCRIPTIONS = "android.service.euicc.action.MANAGE_EMBEDDED_SUBSCRIPTIONS";
+    field public static final String ACTION_PROVISION_EMBEDDED_SUBSCRIPTION = "android.service.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION";
+    field public static final String ACTION_RENAME_SUBSCRIPTION_PRIVILEGED = "android.service.euicc.action.RENAME_SUBSCRIPTION_PRIVILEGED";
+    field @Deprecated public static final String ACTION_RESOLVE_CONFIRMATION_CODE = "android.service.euicc.action.RESOLVE_CONFIRMATION_CODE";
+    field public static final String ACTION_RESOLVE_DEACTIVATE_SIM = "android.service.euicc.action.RESOLVE_DEACTIVATE_SIM";
+    field public static final String ACTION_RESOLVE_NO_PRIVILEGES = "android.service.euicc.action.RESOLVE_NO_PRIVILEGES";
+    field public static final String ACTION_RESOLVE_RESOLVABLE_ERRORS = "android.service.euicc.action.RESOLVE_RESOLVABLE_ERRORS";
+    field public static final String ACTION_START_CARRIER_ACTIVATION = "android.service.euicc.action.START_CARRIER_ACTIVATION";
+    field public static final String ACTION_START_EUICC_ACTIVATION = "android.service.euicc.action.START_EUICC_ACTIVATION";
+    field public static final String ACTION_TOGGLE_SUBSCRIPTION_PRIVILEGED = "android.service.euicc.action.TOGGLE_SUBSCRIPTION_PRIVILEGED";
+    field public static final String CATEGORY_EUICC_UI = "android.service.euicc.category.EUICC_UI";
+    field public static final String EUICC_SERVICE_INTERFACE = "android.service.euicc.EuiccService";
+    field public static final String EXTRA_RESOLUTION_ALLOW_POLICY_RULES = "android.service.euicc.extra.RESOLUTION_ALLOW_POLICY_RULES";
+    field public static final String EXTRA_RESOLUTION_CALLING_PACKAGE = "android.service.euicc.extra.RESOLUTION_CALLING_PACKAGE";
+    field public static final String EXTRA_RESOLUTION_CARD_ID = "android.service.euicc.extra.RESOLUTION_CARD_ID";
+    field public static final String EXTRA_RESOLUTION_CONFIRMATION_CODE = "android.service.euicc.extra.RESOLUTION_CONFIRMATION_CODE";
+    field public static final String EXTRA_RESOLUTION_CONFIRMATION_CODE_RETRIED = "android.service.euicc.extra.RESOLUTION_CONFIRMATION_CODE_RETRIED";
+    field public static final String EXTRA_RESOLUTION_CONSENT = "android.service.euicc.extra.RESOLUTION_CONSENT";
+    field public static final String EXTRA_RESOLVABLE_ERRORS = "android.service.euicc.extra.RESOLVABLE_ERRORS";
+    field public static final int RESOLVABLE_ERROR_CONFIRMATION_CODE = 1; // 0x1
+    field public static final int RESOLVABLE_ERROR_POLICY_RULES = 2; // 0x2
+    field public static final int RESULT_FIRST_USER = 1; // 0x1
+    field public static final int RESULT_MUST_DEACTIVATE_SIM = -1; // 0xffffffff
+    field @Deprecated public static final int RESULT_NEED_CONFIRMATION_CODE = -2; // 0xfffffffe
+    field public static final int RESULT_OK = 0; // 0x0
+    field public static final int RESULT_RESOLVABLE_ERRORS = -2; // 0xfffffffe
+  }
+
+  public abstract static class EuiccService.OtaStatusChangedCallback {
+    ctor public EuiccService.OtaStatusChangedCallback();
+    method public abstract void onOtaStatusChanged(int);
+  }
+
+  public final class GetDefaultDownloadableSubscriptionListResult implements android.os.Parcelable {
+    ctor public GetDefaultDownloadableSubscriptionListResult(int, @Nullable android.telephony.euicc.DownloadableSubscription[]);
+    method public int describeContents();
+    method @Nullable public java.util.List<android.telephony.euicc.DownloadableSubscription> getDownloadableSubscriptions();
+    method public int getResult();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.euicc.GetDefaultDownloadableSubscriptionListResult> CREATOR;
+  }
+
+  public final class GetDownloadableSubscriptionMetadataResult implements android.os.Parcelable {
+    ctor public GetDownloadableSubscriptionMetadataResult(int, @Nullable android.telephony.euicc.DownloadableSubscription);
+    method public int describeContents();
+    method @Nullable public android.telephony.euicc.DownloadableSubscription getDownloadableSubscription();
+    method public int getResult();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.euicc.GetDownloadableSubscriptionMetadataResult> CREATOR;
+  }
+
+  public final class GetEuiccProfileInfoListResult implements android.os.Parcelable {
+    ctor public GetEuiccProfileInfoListResult(int, @Nullable android.service.euicc.EuiccProfileInfo[], boolean);
+    method public int describeContents();
+    method public boolean getIsRemovable();
+    method @Nullable public java.util.List<android.service.euicc.EuiccProfileInfo> getProfiles();
+    method public int getResult();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.euicc.GetEuiccProfileInfoListResult> CREATOR;
+  }
+
+}
+
+package android.service.notification {
+
+  public final class Adjustment implements android.os.Parcelable {
+    ctor public Adjustment(String, String, android.os.Bundle, CharSequence, int);
+    ctor public Adjustment(@NonNull String, @NonNull String, @NonNull android.os.Bundle, @NonNull CharSequence, @NonNull android.os.UserHandle);
+    ctor protected Adjustment(android.os.Parcel);
+    method public int describeContents();
+    method @NonNull public CharSequence getExplanation();
+    method @NonNull public String getKey();
+    method @NonNull public String getPackage();
+    method @NonNull public android.os.Bundle getSignals();
+    method public int getUser();
+    method @NonNull public android.os.UserHandle getUserHandle();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.Adjustment> CREATOR;
+    field public static final String KEY_CONTEXTUAL_ACTIONS = "key_contextual_actions";
+    field public static final String KEY_IMPORTANCE = "key_importance";
+    field public static final String KEY_NOT_CONVERSATION = "key_not_conversation";
+    field public static final String KEY_PEOPLE = "key_people";
+    field public static final String KEY_RANKING_SCORE = "key_ranking_score";
+    field public static final String KEY_SNOOZE_CRITERIA = "key_snooze_criteria";
+    field public static final String KEY_TEXT_REPLIES = "key_text_replies";
+    field public static final String KEY_USER_SENTIMENT = "key_user_sentiment";
+  }
+
+  public abstract class NotificationAssistantService extends android.service.notification.NotificationListenerService {
+    ctor public NotificationAssistantService();
+    method public final void adjustNotification(@NonNull android.service.notification.Adjustment);
+    method public final void adjustNotifications(@NonNull java.util.List<android.service.notification.Adjustment>);
+    method public void onActionInvoked(@NonNull String, @NonNull android.app.Notification.Action, int);
+    method public void onAllowedAdjustmentsChanged();
+    method @NonNull public final android.os.IBinder onBind(@Nullable android.content.Intent);
+    method public void onNotificationDirectReplied(@NonNull String);
+    method @Nullable public abstract android.service.notification.Adjustment onNotificationEnqueued(@NonNull android.service.notification.StatusBarNotification);
+    method @Nullable public android.service.notification.Adjustment onNotificationEnqueued(@NonNull android.service.notification.StatusBarNotification, @NonNull android.app.NotificationChannel);
+    method public void onNotificationExpansionChanged(@NonNull String, boolean, boolean);
+    method public abstract void onNotificationSnoozedUntilContext(@NonNull android.service.notification.StatusBarNotification, @NonNull String);
+    method public void onNotificationVisibilityChanged(@NonNull String, boolean);
+    method public void onNotificationsSeen(@NonNull java.util.List<java.lang.String>);
+    method public void onPanelHidden();
+    method public void onPanelRevealed(int);
+    method public void onSuggestedReplySent(@NonNull String, @NonNull CharSequence, int);
+    method public final void unsnoozeNotification(@NonNull String);
+    field public static final String SERVICE_INTERFACE = "android.service.notification.NotificationAssistantService";
+    field public static final int SOURCE_FROM_APP = 0; // 0x0
+    field public static final int SOURCE_FROM_ASSISTANT = 1; // 0x1
+  }
+
+  public abstract class NotificationListenerService extends android.app.Service {
+    method public void onNotificationRemoved(@NonNull android.service.notification.StatusBarNotification, @NonNull android.service.notification.NotificationListenerService.RankingMap, @NonNull android.service.notification.NotificationStats, int);
+  }
+
+  public final class NotificationStats implements android.os.Parcelable {
+    ctor public NotificationStats();
+    ctor protected NotificationStats(android.os.Parcel);
+    method public int describeContents();
+    method public int getDismissalSentiment();
+    method public int getDismissalSurface();
+    method public boolean hasDirectReplied();
+    method public boolean hasExpanded();
+    method public boolean hasInteracted();
+    method public boolean hasSeen();
+    method public boolean hasSnoozed();
+    method public boolean hasViewedSettings();
+    method public void setDirectReplied();
+    method public void setDismissalSentiment(int);
+    method public void setDismissalSurface(int);
+    method public void setExpanded();
+    method public void setSeen();
+    method public void setSnoozed();
+    method public void setViewedSettings();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.NotificationStats> CREATOR;
+    field public static final int DISMISSAL_AOD = 2; // 0x2
+    field public static final int DISMISSAL_NOT_DISMISSED = -1; // 0xffffffff
+    field public static final int DISMISSAL_OTHER = 0; // 0x0
+    field public static final int DISMISSAL_PEEK = 1; // 0x1
+    field public static final int DISMISSAL_SHADE = 3; // 0x3
+    field public static final int DISMISS_SENTIMENT_NEGATIVE = 0; // 0x0
+    field public static final int DISMISS_SENTIMENT_NEUTRAL = 1; // 0x1
+    field public static final int DISMISS_SENTIMENT_POSITIVE = 2; // 0x2
+    field public static final int DISMISS_SENTIMENT_UNKNOWN = -1000; // 0xfffffc18
+  }
+
+  public final class SnoozeCriterion implements android.os.Parcelable {
+    ctor public SnoozeCriterion(String, CharSequence, CharSequence);
+    ctor protected SnoozeCriterion(android.os.Parcel);
+    method public int describeContents();
+    method public CharSequence getConfirmation();
+    method public CharSequence getExplanation();
+    method public String getId();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.SnoozeCriterion> CREATOR;
+  }
+
+}
+
+package android.service.oemlock {
+
+  public class OemLockManager {
+    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE) public String getLockName();
+    method @RequiresPermission(android.Manifest.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE) public boolean isOemUnlockAllowedByCarrier();
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USER_OEM_UNLOCK_STATE) public boolean isOemUnlockAllowedByUser();
+    method @RequiresPermission(android.Manifest.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE) public void setOemUnlockAllowedByCarrier(boolean, @Nullable byte[]);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_USER_OEM_UNLOCK_STATE) public void setOemUnlockAllowedByUser(boolean);
+  }
+
+}
+
+package android.service.persistentdata {
+
+  public class PersistentDataBlockManager {
+    method @RequiresPermission("android.permission.ACCESS_PDB_STATE") public int getDataBlockSize();
+    method @android.service.persistentdata.PersistentDataBlockManager.FlashLockState @RequiresPermission(anyOf={android.Manifest.permission.READ_OEM_UNLOCK_STATE, "android.permission.OEM_UNLOCK_STATE"}) public int getFlashLockState();
+    method public long getMaximumDataBlockSize();
+    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_OEM_UNLOCK_STATE, "android.permission.OEM_UNLOCK_STATE"}) public boolean getOemUnlockEnabled();
+    method public byte[] read();
+    method @Deprecated @RequiresPermission("android.permission.OEM_UNLOCK_STATE") public void setOemUnlockEnabled(boolean);
+    method @RequiresPermission("android.permission.OEM_UNLOCK_STATE") public void wipe();
+    method public int write(byte[]);
+    field public static final int FLASH_LOCK_LOCKED = 1; // 0x1
+    field public static final int FLASH_LOCK_UNKNOWN = -1; // 0xffffffff
+    field public static final int FLASH_LOCK_UNLOCKED = 0; // 0x0
+  }
+
+  @IntDef(prefix={"FLASH_LOCK_"}, value={android.service.persistentdata.PersistentDataBlockManager.FLASH_LOCK_UNKNOWN, android.service.persistentdata.PersistentDataBlockManager.FLASH_LOCK_LOCKED, android.service.persistentdata.PersistentDataBlockManager.FLASH_LOCK_UNLOCKED}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface PersistentDataBlockManager.FlashLockState {
+  }
+
+}
+
+package android.service.quicksettings {
+
+  public class TileService extends android.app.Service {
+    method public final void setStatusIcon(android.graphics.drawable.Icon, String);
+  }
+
+}
+
+package android.service.resolver {
+
+  public abstract class ResolverRankerService extends android.app.Service {
+    ctor public ResolverRankerService();
+    method public android.os.IBinder onBind(android.content.Intent);
+    method public void onPredictSharingProbabilities(java.util.List<android.service.resolver.ResolverTarget>);
+    method public void onTrainRankingModel(java.util.List<android.service.resolver.ResolverTarget>, int);
+    field public static final String BIND_PERMISSION = "android.permission.BIND_RESOLVER_RANKER_SERVICE";
+    field public static final String HOLD_PERMISSION = "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE";
+    field public static final String SERVICE_INTERFACE = "android.service.resolver.ResolverRankerService";
+  }
+
+  public final class ResolverTarget implements android.os.Parcelable {
+    ctor public ResolverTarget();
+    method public int describeContents();
+    method public float getChooserScore();
+    method public float getLaunchScore();
+    method public float getRecencyScore();
+    method public float getSelectProbability();
+    method public float getTimeSpentScore();
+    method public void setChooserScore(float);
+    method public void setLaunchScore(float);
+    method public void setRecencyScore(float);
+    method public void setSelectProbability(float);
+    method public void setTimeSpentScore(float);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.resolver.ResolverTarget> CREATOR;
+  }
+
+}
+
+package android.service.settings.suggestions {
+
+  public final class Suggestion implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getFlags();
+    method public android.graphics.drawable.Icon getIcon();
+    method public String getId();
+    method public android.app.PendingIntent getPendingIntent();
+    method public CharSequence getSummary();
+    method public CharSequence getTitle();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.settings.suggestions.Suggestion> CREATOR;
+    field public static final int FLAG_HAS_BUTTON = 1; // 0x1
+  }
+
+  public static class Suggestion.Builder {
+    ctor public Suggestion.Builder(String);
+    method public android.service.settings.suggestions.Suggestion build();
+    method public android.service.settings.suggestions.Suggestion.Builder setFlags(int);
+    method public android.service.settings.suggestions.Suggestion.Builder setIcon(android.graphics.drawable.Icon);
+    method public android.service.settings.suggestions.Suggestion.Builder setPendingIntent(android.app.PendingIntent);
+    method public android.service.settings.suggestions.Suggestion.Builder setSummary(CharSequence);
+    method public android.service.settings.suggestions.Suggestion.Builder setTitle(CharSequence);
+  }
+
+  public abstract class SuggestionService extends android.app.Service {
+    ctor public SuggestionService();
+    method public android.os.IBinder onBind(android.content.Intent);
+    method public abstract java.util.List<android.service.settings.suggestions.Suggestion> onGetSuggestions();
+    method public abstract void onSuggestionDismissed(android.service.settings.suggestions.Suggestion);
+    method public abstract void onSuggestionLaunched(android.service.settings.suggestions.Suggestion);
+  }
+
+}
+
+package android.service.storage {
+
+  public abstract class ExternalStorageService extends android.app.Service {
+    ctor public ExternalStorageService();
+    method @NonNull public final android.os.IBinder onBind(@NonNull android.content.Intent);
+    method public abstract void onEndSession(@NonNull String) throws java.io.IOException;
+    method public abstract void onStartSession(@NonNull String, int, @NonNull android.os.ParcelFileDescriptor, @NonNull java.io.File, @NonNull java.io.File) throws java.io.IOException;
+    method public abstract void onVolumeStateChanged(@NonNull android.os.storage.StorageVolume) throws java.io.IOException;
+    field public static final int FLAG_SESSION_ATTRIBUTE_INDEXABLE = 2; // 0x2
+    field public static final int FLAG_SESSION_TYPE_FUSE = 1; // 0x1
+    field public static final String SERVICE_INTERFACE = "android.service.storage.ExternalStorageService";
+  }
+
+}
+
+package android.service.textclassifier {
+
+  public abstract class TextClassifierService extends android.app.Service {
+    ctor public TextClassifierService();
+    method @NonNull public static android.view.textclassifier.TextClassifier getDefaultTextClassifierImplementation(@NonNull android.content.Context);
+    method @Deprecated public final android.view.textclassifier.TextClassifier getLocalTextClassifier();
+    method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
+    method @MainThread public abstract void onClassifyText(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextClassification.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextClassification>);
+    method public void onConnected();
+    method @MainThread public void onCreateTextClassificationSession(@NonNull android.view.textclassifier.TextClassificationContext, @NonNull android.view.textclassifier.TextClassificationSessionId);
+    method @MainThread public void onDestroyTextClassificationSession(@NonNull android.view.textclassifier.TextClassificationSessionId);
+    method @MainThread public void onDetectLanguage(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextLanguage.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextLanguage>);
+    method public void onDisconnected();
+    method @MainThread public abstract void onGenerateLinks(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextLinks.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextLinks>);
+    method @Deprecated @MainThread public void onSelectionEvent(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.SelectionEvent);
+    method @MainThread public void onSuggestConversationActions(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.ConversationActions.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.ConversationActions>);
+    method @MainThread public abstract void onSuggestSelection(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextSelection.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextSelection>);
+    method @MainThread public void onTextClassifierEvent(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextClassifierEvent);
+    field public static final String SERVICE_INTERFACE = "android.service.textclassifier.TextClassifierService";
+  }
+
+  public static interface TextClassifierService.Callback<T> {
+    method public void onFailure(@NonNull CharSequence);
+    method public void onSuccess(T);
+  }
+
+}
+
+package android.service.trust {
+
+  public class TrustAgentService extends android.app.Service {
+    ctor public TrustAgentService();
+    method public final void addEscrowToken(byte[], android.os.UserHandle);
+    method @Deprecated public final void grantTrust(CharSequence, long, boolean);
+    method public final void grantTrust(CharSequence, long, int);
+    method public final void isEscrowTokenActive(long, android.os.UserHandle);
+    method public final android.os.IBinder onBind(android.content.Intent);
+    method public boolean onConfigure(java.util.List<android.os.PersistableBundle>);
+    method public void onDeviceLocked();
+    method public void onDeviceUnlockLockout(long);
+    method public void onDeviceUnlocked();
+    method public void onEscrowTokenAdded(byte[], long, android.os.UserHandle);
+    method public void onEscrowTokenRemoved(long, boolean);
+    method public void onEscrowTokenStateReceived(long, int);
+    method public void onTrustTimeout();
+    method public void onUnlockAttempt(boolean);
+    method public final void removeEscrowToken(long, android.os.UserHandle);
+    method public final void revokeTrust();
+    method public final void setManagingTrust(boolean);
+    method public final void showKeyguardErrorMessage(@NonNull CharSequence);
+    method public final void unlockUserWithToken(long, byte[], android.os.UserHandle);
+    field public static final int FLAG_GRANT_TRUST_DISMISS_KEYGUARD = 2; // 0x2
+    field public static final int FLAG_GRANT_TRUST_INITIATED_BY_USER = 1; // 0x1
+    field public static final String SERVICE_INTERFACE = "android.service.trust.TrustAgentService";
+    field public static final int TOKEN_STATE_ACTIVE = 1; // 0x1
+    field public static final int TOKEN_STATE_INACTIVE = 0; // 0x0
+    field public static final String TRUST_AGENT_META_DATA = "android.service.trust.trustagent";
+  }
+
+}
+
+package android.service.voice {
+
+  public class VoiceInteractionService extends android.app.Service {
+    method @NonNull @RequiresPermission("android.permission.MANAGE_VOICE_KEYPHRASES") public final android.media.voice.KeyphraseModelManager createKeyphraseModelManager();
+  }
+
+}
+
+package android.service.wallpaper {
+
+  public class WallpaperService.Engine {
+    method public boolean isInAmbientMode();
+    method public void onAmbientModeChanged(boolean, long);
+  }
+
+}
+
+package android.service.watchdog {
+
+  public abstract class ExplicitHealthCheckService extends android.app.Service {
+    ctor public ExplicitHealthCheckService();
+    method public final void notifyHealthCheckPassed(@NonNull String);
+    method @NonNull public final android.os.IBinder onBind(@NonNull android.content.Intent);
+    method public abstract void onCancelHealthCheck(@NonNull String);
+    method @NonNull public abstract java.util.List<java.lang.String> onGetRequestedPackages();
+    method @NonNull public abstract java.util.List<android.service.watchdog.ExplicitHealthCheckService.PackageConfig> onGetSupportedPackages();
+    method public abstract void onRequestHealthCheck(@NonNull String);
+    field public static final String BIND_PERMISSION = "android.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE";
+    field public static final String SERVICE_INTERFACE = "android.service.watchdog.ExplicitHealthCheckService";
+  }
+
+  public static final class ExplicitHealthCheckService.PackageConfig implements android.os.Parcelable {
+    ctor public ExplicitHealthCheckService.PackageConfig(@NonNull String, long);
+    method public int describeContents();
+    method public long getHealthCheckTimeoutMillis();
+    method @NonNull public String getPackageName();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.watchdog.ExplicitHealthCheckService.PackageConfig> CREATOR;
+  }
+
+}
+
+package android.telecom {
+
+  @Deprecated public class AudioState implements android.os.Parcelable {
+    ctor @Deprecated public AudioState(boolean, int, int);
+    ctor @Deprecated public AudioState(android.telecom.AudioState);
+    ctor @Deprecated public AudioState(android.telecom.CallAudioState);
+    method @Deprecated public static String audioRouteToString(int);
+    method @Deprecated public int describeContents();
+    method @Deprecated public int getRoute();
+    method @Deprecated public int getSupportedRouteMask();
+    method @Deprecated public boolean isMuted();
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.telecom.AudioState> CREATOR;
+    field @Deprecated public static final int ROUTE_BLUETOOTH = 2; // 0x2
+    field @Deprecated public static final int ROUTE_EARPIECE = 1; // 0x1
+    field @Deprecated public static final int ROUTE_SPEAKER = 8; // 0x8
+    field @Deprecated public static final int ROUTE_WIRED_HEADSET = 4; // 0x4
+    field @Deprecated public static final int ROUTE_WIRED_OR_EARPIECE = 5; // 0x5
+  }
+
+  public final class Call {
+    method @Deprecated public void addListener(android.telecom.Call.Listener);
+    method public void enterBackgroundAudioProcessing();
+    method public void exitBackgroundAudioProcessing(boolean);
+    method @Deprecated public void removeListener(android.telecom.Call.Listener);
+    field @Deprecated public static final int STATE_PRE_DIAL_WAIT = 8; // 0x8
+  }
+
+  @Deprecated public abstract static class Call.Listener extends android.telecom.Call.Callback {
+    ctor @Deprecated public Call.Listener();
+  }
+
+  public static class CallScreeningService.CallResponse.Builder {
+    method @NonNull @RequiresPermission(android.Manifest.permission.CAPTURE_AUDIO_OUTPUT) public android.telecom.CallScreeningService.CallResponse.Builder setShouldScreenCallViaAudioProcessing(boolean);
+  }
+
+  public abstract class Conference extends android.telecom.Conferenceable {
+    method @Deprecated public final android.telecom.AudioState getAudioState();
+    method @Deprecated public final long getConnectTimeMillis();
+    method public android.telecom.Connection getPrimaryConnection();
+    method @NonNull public final String getTelecomCallId();
+    method @Deprecated public void onAudioStateChanged(android.telecom.AudioState);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public final void setAddress(@NonNull android.net.Uri, int);
+    method public final void setCallerDisplayName(@NonNull String, int);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setConferenceState(boolean);
+    method @Deprecated public final void setConnectTimeMillis(long);
+  }
+
+  public abstract class Connection extends android.telecom.Conferenceable {
+    method @Deprecated public final android.telecom.AudioState getAudioState();
+    method @IntRange(from=0) public final long getConnectTimeMillis();
+    method public final long getConnectionStartElapsedRealtimeMillis();
+    method @Nullable public android.telecom.PhoneAccountHandle getPhoneAccountHandle();
+    method @Nullable public final String getTelecomCallId();
+    method @Deprecated public void onAudioStateChanged(android.telecom.AudioState);
+    method public final void resetConnectionTime();
+    method public void setCallDirection(int);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public final void setConnectTimeMillis(@IntRange(from=0) long);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public final void setConnectionStartElapsedRealtimeMillis(long);
+    method public void setPhoneAccountHandle(@NonNull android.telecom.PhoneAccountHandle);
+    method public void setTelecomCallId(@NonNull String);
+    field public static final int CAPABILITY_CONFERENCE_HAS_NO_CHILDREN = 2097152; // 0x200000
+    field public static final int CAPABILITY_SPEED_UP_MT_AUDIO = 262144; // 0x40000
+    field public static final String EXTRA_DISABLE_ADD_CALL = "android.telecom.extra.DISABLE_ADD_CALL";
+    field public static final int PROPERTY_EMERGENCY_CALLBACK_MODE = 1; // 0x1
+    field public static final int PROPERTY_GENERIC_CONFERENCE = 2; // 0x2
+    field public static final int PROPERTY_IS_DOWNGRADED_CONFERENCE = 64; // 0x40
+    field public static final int PROPERTY_REMOTELY_HOSTED = 2048; // 0x800
+  }
+
+  public final class ConnectionRequest implements android.os.Parcelable {
+    method @Nullable public String getTelecomCallId();
+  }
+
+  public abstract class ConnectionService extends android.app.Service {
+    method public final void addExistingConnection(@NonNull android.telecom.PhoneAccountHandle, @NonNull android.telecom.Connection, @NonNull android.telecom.Conference);
+  }
+
+  public abstract class InCallService extends android.app.Service {
+    method @Deprecated public android.telecom.Phone getPhone();
+    method @Deprecated public void onPhoneCreated(android.telecom.Phone);
+    method @Deprecated public void onPhoneDestroyed(android.telecom.Phone);
+  }
+
+  public class ParcelableCallAnalytics implements android.os.Parcelable {
+    ctor public ParcelableCallAnalytics(long, long, int, boolean, boolean, int, int, boolean, String, boolean, java.util.List<android.telecom.ParcelableCallAnalytics.AnalyticsEvent>, java.util.List<android.telecom.ParcelableCallAnalytics.EventTiming>);
+    ctor public ParcelableCallAnalytics(android.os.Parcel);
+    method public java.util.List<android.telecom.ParcelableCallAnalytics.AnalyticsEvent> analyticsEvents();
+    method public int describeContents();
+    method public long getCallDurationMillis();
+    method public int getCallTechnologies();
+    method public int getCallTerminationCode();
+    method public int getCallType();
+    method public String getConnectionService();
+    method public java.util.List<android.telecom.ParcelableCallAnalytics.EventTiming> getEventTimings();
+    method public long getStartTimeMillis();
+    method public boolean isAdditionalCall();
+    method public boolean isCreatedFromExistingConnection();
+    method public boolean isEmergencyCall();
+    method public boolean isInterrupted();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int CALLTYPE_INCOMING = 1; // 0x1
+    field public static final int CALLTYPE_OUTGOING = 2; // 0x2
+    field public static final int CALLTYPE_UNKNOWN = 0; // 0x0
+    field public static final int CDMA_PHONE = 1; // 0x1
+    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.ParcelableCallAnalytics> CREATOR;
+    field public static final int GSM_PHONE = 2; // 0x2
+    field public static final int IMS_PHONE = 4; // 0x4
+    field public static final long MILLIS_IN_1_SECOND = 1000L; // 0x3e8L
+    field public static final long MILLIS_IN_5_MINUTES = 300000L; // 0x493e0L
+    field public static final int SIP_PHONE = 8; // 0x8
+    field public static final int STILL_CONNECTED = -1; // 0xffffffff
+    field public static final int THIRD_PARTY_PHONE = 16; // 0x10
+  }
+
+  public static final class ParcelableCallAnalytics.AnalyticsEvent implements android.os.Parcelable {
+    ctor public ParcelableCallAnalytics.AnalyticsEvent(int, long);
+    method public int describeContents();
+    method public int getEventName();
+    method public long getTimeSinceLastEvent();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int AUDIO_ROUTE_BT = 204; // 0xcc
+    field public static final int AUDIO_ROUTE_EARPIECE = 205; // 0xcd
+    field public static final int AUDIO_ROUTE_HEADSET = 206; // 0xce
+    field public static final int AUDIO_ROUTE_SPEAKER = 207; // 0xcf
+    field public static final int BIND_CS = 5; // 0x5
+    field public static final int BLOCK_CHECK_FINISHED = 105; // 0x69
+    field public static final int BLOCK_CHECK_INITIATED = 104; // 0x68
+    field public static final int CONFERENCE_WITH = 300; // 0x12c
+    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.ParcelableCallAnalytics.AnalyticsEvent> CREATOR;
+    field public static final int CS_BOUND = 6; // 0x6
+    field public static final int DIRECT_TO_VM_FINISHED = 103; // 0x67
+    field public static final int DIRECT_TO_VM_INITIATED = 102; // 0x66
+    field public static final int FILTERING_COMPLETED = 107; // 0x6b
+    field public static final int FILTERING_INITIATED = 106; // 0x6a
+    field public static final int FILTERING_TIMED_OUT = 108; // 0x6c
+    field public static final int MUTE = 202; // 0xca
+    field public static final int REMOTELY_HELD = 402; // 0x192
+    field public static final int REMOTELY_UNHELD = 403; // 0x193
+    field public static final int REQUEST_ACCEPT = 7; // 0x7
+    field public static final int REQUEST_HOLD = 400; // 0x190
+    field public static final int REQUEST_PULL = 500; // 0x1f4
+    field public static final int REQUEST_REJECT = 8; // 0x8
+    field public static final int REQUEST_UNHOLD = 401; // 0x191
+    field public static final int SCREENING_COMPLETED = 101; // 0x65
+    field public static final int SCREENING_SENT = 100; // 0x64
+    field public static final int SET_ACTIVE = 1; // 0x1
+    field public static final int SET_DIALING = 4; // 0x4
+    field public static final int SET_DISCONNECTED = 2; // 0x2
+    field public static final int SET_HOLD = 404; // 0x194
+    field public static final int SET_PARENT = 302; // 0x12e
+    field public static final int SET_SELECT_PHONE_ACCOUNT = 0; // 0x0
+    field public static final int SILENCE = 201; // 0xc9
+    field public static final int SKIP_RINGING = 200; // 0xc8
+    field public static final int SPLIT_CONFERENCE = 301; // 0x12d
+    field public static final int START_CONNECTION = 3; // 0x3
+    field public static final int SWAP = 405; // 0x195
+    field public static final int UNMUTE = 203; // 0xcb
+  }
+
+  public static final class ParcelableCallAnalytics.EventTiming implements android.os.Parcelable {
+    ctor public ParcelableCallAnalytics.EventTiming(int, long);
+    method public int describeContents();
+    method public int getName();
+    method public long getTime();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int ACCEPT_TIMING = 0; // 0x0
+    field public static final int BIND_CS_TIMING = 6; // 0x6
+    field public static final int BLOCK_CHECK_FINISHED_TIMING = 9; // 0x9
+    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.ParcelableCallAnalytics.EventTiming> CREATOR;
+    field public static final int DIRECT_TO_VM_FINISHED_TIMING = 8; // 0x8
+    field public static final int DISCONNECT_TIMING = 2; // 0x2
+    field public static final int FILTERING_COMPLETED_TIMING = 10; // 0xa
+    field public static final int FILTERING_TIMED_OUT_TIMING = 11; // 0xb
+    field public static final int HOLD_TIMING = 3; // 0x3
+    field public static final int INVALID = 999999; // 0xf423f
+    field public static final int OUTGOING_TIME_TO_DIALING_TIMING = 5; // 0x5
+    field public static final int REJECT_TIMING = 1; // 0x1
+    field public static final int SCREENING_COMPLETED_TIMING = 7; // 0x7
+    field public static final int UNHOLD_TIMING = 4; // 0x4
+  }
+
+  @Deprecated public final class Phone {
+    method @Deprecated public void addListener(android.telecom.Phone.Listener);
+    method @Deprecated public boolean canAddCall();
+    method @Deprecated public android.telecom.AudioState getAudioState();
+    method @Deprecated public android.telecom.CallAudioState getCallAudioState();
+    method @Deprecated public java.util.List<android.telecom.Call> getCalls();
+    method @Deprecated public void removeListener(android.telecom.Phone.Listener);
+    method @Deprecated public void requestBluetoothAudio(String);
+    method @Deprecated public void setAudioRoute(int);
+    method @Deprecated public void setMuted(boolean);
+  }
+
+  @Deprecated public abstract static class Phone.Listener {
+    ctor @Deprecated public Phone.Listener();
+    method @Deprecated public void onAudioStateChanged(android.telecom.Phone, android.telecom.AudioState);
+    method @Deprecated public void onBringToForeground(android.telecom.Phone, boolean);
+    method @Deprecated public void onCallAdded(android.telecom.Phone, android.telecom.Call);
+    method @Deprecated public void onCallAudioStateChanged(android.telecom.Phone, android.telecom.CallAudioState);
+    method @Deprecated public void onCallRemoved(android.telecom.Phone, android.telecom.Call);
+    method @Deprecated public void onCanAddCallChanged(android.telecom.Phone, boolean);
+    method @Deprecated public void onSilenceRinger(android.telecom.Phone);
+  }
+
+  public final class PhoneAccount implements android.os.Parcelable {
+    field public static final int CAPABILITY_EMERGENCY_CALLS_ONLY = 128; // 0x80
+    field public static final int CAPABILITY_EMERGENCY_PREFERRED = 8192; // 0x2000
+    field public static final int CAPABILITY_EMERGENCY_VIDEO_CALLING = 512; // 0x200
+    field public static final int CAPABILITY_MULTI_USER = 32; // 0x20
+    field public static final String EXTRA_PLAY_CALL_RECORDING_TONE = "android.telecom.extra.PLAY_CALL_RECORDING_TONE";
+    field public static final String EXTRA_SORT_ORDER = "android.telecom.extra.SORT_ORDER";
+  }
+
+  public static class PhoneAccount.Builder {
+    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.telecom.PhoneAccount.Builder setGroupId(@NonNull String);
+  }
+
+  public class PhoneAccountSuggestionService extends android.app.Service {
+    ctor public PhoneAccountSuggestionService();
+    method public void onAccountSuggestionRequest(@NonNull String);
+    method public android.os.IBinder onBind(android.content.Intent);
+    method public final void suggestPhoneAccounts(@NonNull String, @NonNull java.util.List<android.telecom.PhoneAccountSuggestion>);
+    field public static final String SERVICE_INTERFACE = "android.telecom.PhoneAccountSuggestionService";
+  }
+
+  public final class RemoteConference {
+    method @Deprecated public void setAudioState(android.telecom.AudioState);
+  }
+
+  public final class RemoteConnection {
+    method @Deprecated public void setAudioState(android.telecom.AudioState);
+  }
+
+  public final class StatusHints implements android.os.Parcelable {
+    ctor @Deprecated public StatusHints(android.content.ComponentName, CharSequence, int, android.os.Bundle);
+    method @Deprecated public android.graphics.drawable.Drawable getIcon(android.content.Context);
+    method @Deprecated public int getIconResId();
+    method @Deprecated public android.content.ComponentName getPackageName();
+  }
+
+  public final class TelecomAnalytics implements android.os.Parcelable {
+    ctor public TelecomAnalytics(java.util.List<android.telecom.TelecomAnalytics.SessionTiming>, java.util.List<android.telecom.ParcelableCallAnalytics>);
+    method public int describeContents();
+    method public java.util.List<android.telecom.ParcelableCallAnalytics> getCallAnalytics();
+    method public java.util.List<android.telecom.TelecomAnalytics.SessionTiming> getSessionTimings();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.TelecomAnalytics> CREATOR;
+  }
+
+  public static final class TelecomAnalytics.SessionTiming implements android.os.Parcelable {
+    ctor public TelecomAnalytics.SessionTiming(int, long);
+    method public int describeContents();
+    method public Integer getKey();
+    method public long getTime();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.TelecomAnalytics.SessionTiming> CREATOR;
+    field public static final int CSW_ADD_CONFERENCE_CALL = 108; // 0x6c
+    field public static final int CSW_HANDLE_CREATE_CONNECTION_COMPLETE = 100; // 0x64
+    field public static final int CSW_REMOVE_CALL = 106; // 0x6a
+    field public static final int CSW_SET_ACTIVE = 101; // 0x65
+    field public static final int CSW_SET_DIALING = 103; // 0x67
+    field public static final int CSW_SET_DISCONNECTED = 104; // 0x68
+    field public static final int CSW_SET_IS_CONFERENCED = 107; // 0x6b
+    field public static final int CSW_SET_ON_HOLD = 105; // 0x69
+    field public static final int CSW_SET_RINGING = 102; // 0x66
+    field public static final int ICA_ANSWER_CALL = 1; // 0x1
+    field public static final int ICA_CONFERENCE = 8; // 0x8
+    field public static final int ICA_DISCONNECT_CALL = 3; // 0x3
+    field public static final int ICA_HOLD_CALL = 4; // 0x4
+    field public static final int ICA_MUTE = 6; // 0x6
+    field public static final int ICA_REJECT_CALL = 2; // 0x2
+    field public static final int ICA_SET_AUDIO_ROUTE = 7; // 0x7
+    field public static final int ICA_UNHOLD_CALL = 5; // 0x5
+  }
+
+  public class TelecomManager {
+    method public void addNewUnknownCall(android.telecom.PhoneAccountHandle, android.os.Bundle);
+    method @Deprecated public void clearAccounts();
+    method public void clearPhoneAccounts();
+    method @NonNull public android.content.Intent createLaunchEmergencyDialerIntent(@Nullable String);
+    method @RequiresPermission(android.Manifest.permission.DUMP) public android.telecom.TelecomAnalytics dumpAnalytics();
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void enablePhoneAccount(android.telecom.PhoneAccountHandle, boolean);
+    method public java.util.List<android.telecom.PhoneAccountHandle> getAllPhoneAccountHandles();
+    method public java.util.List<android.telecom.PhoneAccount> getAllPhoneAccounts();
+    method public int getAllPhoneAccountsCount();
+    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.List<android.telecom.PhoneAccountHandle> getCallCapablePhoneAccounts(boolean);
+    method public int getCallState();
+    method public android.telecom.PhoneAccountHandle getConnectionManager();
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getCurrentTtyMode();
+    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getDefaultDialerPackage(@NonNull android.os.UserHandle);
+    method @Deprecated public android.content.ComponentName getDefaultPhoneApp();
+    method public java.util.List<android.telecom.PhoneAccountHandle> getPhoneAccountsForPackage();
+    method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public java.util.List<android.telecom.PhoneAccountHandle> getPhoneAccountsSupportingScheme(String);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean isInEmergencyCall();
+    method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isRinging();
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setUserSelectedOutgoingPhoneAccount(@Nullable android.telecom.PhoneAccountHandle);
+    field public static final String ACTION_CURRENT_TTY_MODE_CHANGED = "android.telecom.action.CURRENT_TTY_MODE_CHANGED";
+    field public static final String ACTION_TTY_PREFERRED_MODE_CHANGED = "android.telecom.action.TTY_PREFERRED_MODE_CHANGED";
+    field public static final int CALL_SOURCE_EMERGENCY_DIALPAD = 1; // 0x1
+    field public static final int CALL_SOURCE_EMERGENCY_SHORTCUT = 2; // 0x2
+    field public static final int CALL_SOURCE_UNSPECIFIED = 0; // 0x0
+    field public static final String EXTRA_CALL_BACK_INTENT = "android.telecom.extra.CALL_BACK_INTENT";
+    field public static final String EXTRA_CALL_SOURCE = "android.telecom.extra.CALL_SOURCE";
+    field public static final String EXTRA_CALL_TECHNOLOGY_TYPE = "android.telecom.extra.CALL_TECHNOLOGY_TYPE";
+    field public static final String EXTRA_CLEAR_MISSED_CALLS_INTENT = "android.telecom.extra.CLEAR_MISSED_CALLS_INTENT";
+    field public static final String EXTRA_CONNECTION_SERVICE = "android.telecom.extra.CONNECTION_SERVICE";
+    field public static final String EXTRA_CURRENT_TTY_MODE = "android.telecom.extra.CURRENT_TTY_MODE";
+    field public static final String EXTRA_IS_USER_INTENT_EMERGENCY_CALL = "android.telecom.extra.IS_USER_INTENT_EMERGENCY_CALL";
+    field public static final String EXTRA_TTY_PREFERRED_MODE = "android.telecom.extra.TTY_PREFERRED_MODE";
+    field public static final String EXTRA_UNKNOWN_CALL_HANDLE = "android.telecom.extra.UNKNOWN_CALL_HANDLE";
+    field public static final int TTY_MODE_FULL = 1; // 0x1
+    field public static final int TTY_MODE_HCO = 2; // 0x2
+    field public static final int TTY_MODE_OFF = 0; // 0x0
+    field public static final int TTY_MODE_VCO = 3; // 0x3
+  }
+
+}
+
+package android.telephony {
+
+  public final class AccessNetworkConstants {
+    field public static final int TRANSPORT_TYPE_INVALID = -1; // 0xffffffff
+  }
+
+  public static final class AccessNetworkConstants.NgranBands {
+    method public static int getFrequencyRangeGroup(int);
+    field public static final int FREQUENCY_RANGE_GROUP_1 = 1; // 0x1
+    field public static final int FREQUENCY_RANGE_GROUP_2 = 2; // 0x2
+    field public static final int FREQUENCY_RANGE_GROUP_UNKNOWN = 0; // 0x0
+  }
+
+  public final class BarringInfo implements android.os.Parcelable {
+    ctor public BarringInfo();
+    method @NonNull public android.telephony.BarringInfo createLocationInfoSanitizedCopy();
+  }
+
+  public final class CallAttributes implements android.os.Parcelable {
+    ctor public CallAttributes(@NonNull android.telephony.PreciseCallState, int, @NonNull android.telephony.CallQuality);
+    method public int describeContents();
+    method @NonNull public android.telephony.CallQuality getCallQuality();
+    method public int getNetworkType();
+    method @NonNull public android.telephony.PreciseCallState getPreciseCallState();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CallAttributes> CREATOR;
+  }
+
+  public final class CallForwardingInfo implements android.os.Parcelable {
+    ctor public CallForwardingInfo(boolean, int, @Nullable String, int);
+    method public int describeContents();
+    method @Nullable public String getNumber();
+    method public int getReason();
+    method public int getTimeoutSeconds();
+    method public boolean isEnabled();
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CallForwardingInfo> CREATOR;
+    field public static final int REASON_ALL = 4; // 0x4
+    field public static final int REASON_ALL_CONDITIONAL = 5; // 0x5
+    field public static final int REASON_BUSY = 1; // 0x1
+    field public static final int REASON_NOT_REACHABLE = 3; // 0x3
+    field public static final int REASON_NO_REPLY = 2; // 0x2
+    field public static final int REASON_UNCONDITIONAL = 0; // 0x0
+  }
+
+  public final class CallQuality implements android.os.Parcelable {
+    ctor public CallQuality(int, int, int, int, int, int, int, int, int, int, int);
+    ctor public CallQuality(int, int, int, int, int, int, int, int, int, int, int, boolean, boolean, boolean);
+    method public int describeContents();
+    method public int getAverageRelativeJitter();
+    method public int getAverageRoundTripTime();
+    method public int getCallDuration();
+    method public int getCodecType();
+    method public int getDownlinkCallQualityLevel();
+    method public int getMaxRelativeJitter();
+    method public int getNumRtpPacketsNotReceived();
+    method public int getNumRtpPacketsReceived();
+    method public int getNumRtpPacketsTransmitted();
+    method public int getNumRtpPacketsTransmittedLost();
+    method public int getUplinkCallQualityLevel();
+    method public boolean isIncomingSilenceDetectedAtCallSetup();
+    method public boolean isOutgoingSilenceDetectedAtCallSetup();
+    method public boolean isRtpInactivityDetected();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int CALL_QUALITY_BAD = 4; // 0x4
+    field public static final int CALL_QUALITY_EXCELLENT = 0; // 0x0
+    field public static final int CALL_QUALITY_FAIR = 2; // 0x2
+    field public static final int CALL_QUALITY_GOOD = 1; // 0x1
+    field public static final int CALL_QUALITY_NOT_AVAILABLE = 5; // 0x5
+    field public static final int CALL_QUALITY_POOR = 3; // 0x3
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CallQuality> CREATOR;
+  }
+
+  public final class CarrierBandwidth implements android.os.Parcelable {
+    ctor public CarrierBandwidth(int, int, int, int);
+    method public int describeContents();
+    method public int getPrimaryDownlinkCapacityKbps();
+    method public int getPrimaryUplinkCapacityKbps();
+    method public int getSecondaryDownlinkCapacityKbps();
+    method public int getSecondaryUplinkCapacityKbps();
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CarrierBandwidth> CREATOR;
+    field public static final int INVALID = -1; // 0xffffffff
+  }
+
+  public class CarrierConfigManager {
+    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getDefaultCarrierServicePackageName();
+    method @NonNull public static android.os.PersistableBundle getDefaultConfig();
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void overrideConfig(int, @Nullable android.os.PersistableBundle);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void updateConfigForPhoneId(int, String);
+    field public static final String KEY_CARRIER_SETUP_APP_STRING = "carrier_setup_app_string";
+    field public static final String KEY_SUPPORT_CDMA_1X_VOICE_CALLS_BOOL = "support_cdma_1x_voice_calls_bool";
+  }
+
+  public static final class CarrierConfigManager.Wifi {
+    field public static final String KEY_HOTSPOT_MAX_CLIENT_COUNT = "wifi.hotspot_maximum_client_count";
+    field public static final String KEY_PREFIX = "wifi.";
+  }
+
+  public final class CarrierRestrictionRules implements android.os.Parcelable {
+    method @NonNull public java.util.List<java.lang.Boolean> areCarrierIdentifiersAllowed(@NonNull java.util.List<android.service.carrier.CarrierIdentifier>);
+    method public int describeContents();
+    method @NonNull public java.util.List<android.service.carrier.CarrierIdentifier> getAllowedCarriers();
+    method public int getDefaultCarrierRestriction();
+    method @NonNull public java.util.List<android.service.carrier.CarrierIdentifier> getExcludedCarriers();
+    method public int getMultiSimPolicy();
+    method public boolean isAllCarriersAllowed();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int CARRIER_RESTRICTION_DEFAULT_ALLOWED = 1; // 0x1
+    field public static final int CARRIER_RESTRICTION_DEFAULT_NOT_ALLOWED = 0; // 0x0
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CarrierRestrictionRules> CREATOR;
+    field public static final int MULTISIM_POLICY_NONE = 0; // 0x0
+    field public static final int MULTISIM_POLICY_ONE_VALID_SIM_MUST_BE_PRESENT = 1; // 0x1
+  }
+
+  public static final class CarrierRestrictionRules.Builder {
+    ctor public CarrierRestrictionRules.Builder();
+    method @NonNull public android.telephony.CarrierRestrictionRules build();
+    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setAllCarriersAllowed();
+    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setAllowedCarriers(@NonNull java.util.List<android.service.carrier.CarrierIdentifier>);
+    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setDefaultCarrierRestriction(int);
+    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setExcludedCarriers(@NonNull java.util.List<android.service.carrier.CarrierIdentifier>);
+    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setMultiSimPolicy(int);
+  }
+
+  public class CbGeoUtils {
+  }
+
+  public static class CbGeoUtils.Circle implements android.telephony.CbGeoUtils.Geometry {
+    ctor public CbGeoUtils.Circle(@NonNull android.telephony.CbGeoUtils.LatLng, double);
+    method public boolean contains(@NonNull android.telephony.CbGeoUtils.LatLng);
+    method @NonNull public android.telephony.CbGeoUtils.LatLng getCenter();
+    method public double getRadius();
+  }
+
+  public static interface CbGeoUtils.Geometry {
+    method public boolean contains(@NonNull android.telephony.CbGeoUtils.LatLng);
+  }
+
+  public static class CbGeoUtils.LatLng {
+    ctor public CbGeoUtils.LatLng(double, double);
+    method public double distance(@NonNull android.telephony.CbGeoUtils.LatLng);
+    method @NonNull public android.telephony.CbGeoUtils.LatLng subtract(@NonNull android.telephony.CbGeoUtils.LatLng);
+    field public final double lat;
+    field public final double lng;
+  }
+
+  public static class CbGeoUtils.Polygon implements android.telephony.CbGeoUtils.Geometry {
+    ctor public CbGeoUtils.Polygon(@NonNull java.util.List<android.telephony.CbGeoUtils.LatLng>);
+    method public boolean contains(@NonNull android.telephony.CbGeoUtils.LatLng);
+    method @NonNull public java.util.List<android.telephony.CbGeoUtils.LatLng> getVertices();
+  }
+
+  public class CellBroadcastIntents {
+    method public static void sendSmsCbReceivedBroadcast(@NonNull android.content.Context, @Nullable android.os.UserHandle, @NonNull android.telephony.SmsCbMessage, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, int);
+    field public static final String ACTION_AREA_INFO_UPDATED = "android.telephony.action.AREA_INFO_UPDATED";
+  }
+
+  public abstract class CellBroadcastService extends android.app.Service {
+    ctor public CellBroadcastService();
+    method @NonNull @WorkerThread public abstract CharSequence getCellBroadcastAreaInfo(int);
+    method @CallSuper public android.os.IBinder onBind(@Nullable android.content.Intent);
+    method public abstract void onCdmaCellBroadcastSms(int, @NonNull byte[], int);
+    method public abstract void onCdmaScpMessage(int, @NonNull java.util.List<android.telephony.cdma.CdmaSmsCbProgramData>, @NonNull String, @NonNull java.util.function.Consumer<android.os.Bundle>);
+    method public abstract void onGsmCellBroadcastSms(int, @NonNull byte[]);
+    field public static final String CELL_BROADCAST_SERVICE_INTERFACE = "android.telephony.CellBroadcastService";
+  }
+
+  public abstract class CellIdentity implements android.os.Parcelable {
+    method @NonNull public abstract android.telephony.CellLocation asCellLocation();
+    method @NonNull public abstract android.telephony.CellIdentity sanitizeLocationInfo();
+  }
+
+  public final class CellIdentityCdma extends android.telephony.CellIdentity {
+    method @NonNull public android.telephony.cdma.CdmaCellLocation asCellLocation();
+    method @NonNull public android.telephony.CellIdentityCdma sanitizeLocationInfo();
+  }
+
+  public final class CellIdentityGsm extends android.telephony.CellIdentity {
+    method @NonNull public android.telephony.gsm.GsmCellLocation asCellLocation();
+    method @NonNull public android.telephony.CellIdentityGsm sanitizeLocationInfo();
+  }
+
+  public final class CellIdentityLte extends android.telephony.CellIdentity {
+    method @NonNull public android.telephony.gsm.GsmCellLocation asCellLocation();
+    method @NonNull public android.telephony.CellIdentityLte sanitizeLocationInfo();
+  }
+
+  public final class CellIdentityNr extends android.telephony.CellIdentity {
+    method @NonNull public android.telephony.CellLocation asCellLocation();
+    method @NonNull public android.telephony.CellIdentityNr sanitizeLocationInfo();
+  }
+
+  public final class CellIdentityTdscdma extends android.telephony.CellIdentity {
+    method @NonNull public android.telephony.gsm.GsmCellLocation asCellLocation();
+    method @NonNull public android.telephony.CellIdentityTdscdma sanitizeLocationInfo();
+  }
+
+  public final class CellIdentityWcdma extends android.telephony.CellIdentity {
+    method @NonNull public android.telephony.gsm.GsmCellLocation asCellLocation();
+    method @NonNull public android.telephony.CellIdentityWcdma sanitizeLocationInfo();
+  }
+
+  public final class DataFailCause {
+    field @Deprecated public static final int VSNCP_APN_UNATHORIZED = 2238; // 0x8be
+  }
+
+  public final class DataSpecificRegistrationInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public android.telephony.LteVopsSupportInfo getLteVopsSupportInfo();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.DataSpecificRegistrationInfo> CREATOR;
+  }
+
+  public final class ImsiEncryptionInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public String getKeyIdentifier();
+    method @Nullable public java.security.PublicKey getPublicKey();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ImsiEncryptionInfo> CREATOR;
+  }
+
+  public final class LteVopsSupportInfo implements android.os.Parcelable {
+    ctor public LteVopsSupportInfo(int, int);
+    method public int describeContents();
+    method public int getEmcBearerSupport();
+    method public int getVopsSupport();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.LteVopsSupportInfo> CREATOR;
+    field public static final int LTE_STATUS_NOT_AVAILABLE = 1; // 0x1
+    field public static final int LTE_STATUS_NOT_SUPPORTED = 3; // 0x3
+    field public static final int LTE_STATUS_SUPPORTED = 2; // 0x2
+  }
+
+  public class MbmsDownloadSession implements java.lang.AutoCloseable {
+    field public static final String MBMS_DOWNLOAD_SERVICE_ACTION = "android.telephony.action.EmbmsDownload";
+  }
+
+  public class MbmsGroupCallSession implements java.lang.AutoCloseable {
+    field public static final String MBMS_GROUP_CALL_SERVICE_ACTION = "android.telephony.action.EmbmsGroupCall";
+  }
+
+  public class MbmsStreamingSession implements java.lang.AutoCloseable {
+    field public static final String MBMS_STREAMING_SERVICE_ACTION = "android.telephony.action.EmbmsStreaming";
+  }
+
+  public final class NetworkRegistrationInfo implements android.os.Parcelable {
+    method @Nullable public android.telephony.DataSpecificRegistrationInfo getDataSpecificInfo();
+    method public int getRegistrationState();
+    method public int getRejectCause();
+    method public int getRoamingType();
+    method public boolean isEmergencyEnabled();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int REGISTRATION_STATE_DENIED = 3; // 0x3
+    field public static final int REGISTRATION_STATE_HOME = 1; // 0x1
+    field public static final int REGISTRATION_STATE_NOT_REGISTERED_OR_SEARCHING = 0; // 0x0
+    field public static final int REGISTRATION_STATE_NOT_REGISTERED_SEARCHING = 2; // 0x2
+    field public static final int REGISTRATION_STATE_ROAMING = 5; // 0x5
+    field public static final int REGISTRATION_STATE_UNKNOWN = 4; // 0x4
+  }
+
+  public static final class NetworkRegistrationInfo.Builder {
+    ctor public NetworkRegistrationInfo.Builder();
+    method @NonNull public android.telephony.NetworkRegistrationInfo build();
+    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setAccessNetworkTechnology(int);
+    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setAvailableServices(@NonNull java.util.List<java.lang.Integer>);
+    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setCellIdentity(@Nullable android.telephony.CellIdentity);
+    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setDomain(int);
+    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setEmergencyOnly(boolean);
+    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setRegisteredPlmn(@Nullable String);
+    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setRegistrationState(int);
+    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setRejectCause(int);
+    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setTransportType(int);
+  }
+
+  public abstract class NetworkService extends android.app.Service {
+    ctor public NetworkService();
+    method public android.os.IBinder onBind(android.content.Intent);
+    method @Nullable public abstract android.telephony.NetworkService.NetworkServiceProvider onCreateNetworkServiceProvider(int);
+    field public static final String SERVICE_INTERFACE = "android.telephony.NetworkService";
+  }
+
+  public abstract class NetworkService.NetworkServiceProvider implements java.lang.AutoCloseable {
+    ctor public NetworkService.NetworkServiceProvider(int);
+    method public abstract void close();
+    method public final int getSlotIndex();
+    method public final void notifyNetworkRegistrationInfoChanged();
+    method public void requestNetworkRegistrationInfo(int, @NonNull android.telephony.NetworkServiceCallback);
+  }
+
+  public class NetworkServiceCallback {
+    method public void onRequestNetworkRegistrationInfoComplete(int, @Nullable android.telephony.NetworkRegistrationInfo);
+    field public static final int RESULT_ERROR_BUSY = 3; // 0x3
+    field public static final int RESULT_ERROR_FAILED = 5; // 0x5
+    field public static final int RESULT_ERROR_ILLEGAL_STATE = 4; // 0x4
+    field public static final int RESULT_ERROR_INVALID_ARG = 2; // 0x2
+    field public static final int RESULT_ERROR_UNSUPPORTED = 1; // 0x1
+    field public static final int RESULT_SUCCESS = 0; // 0x0
+  }
+
+  public interface NumberVerificationCallback {
+    method public default void onCallReceived(@NonNull String);
+    method public default void onVerificationFailed(int);
+    field public static final int REASON_CONCURRENT_REQUESTS = 4; // 0x4
+    field public static final int REASON_IN_ECBM = 5; // 0x5
+    field public static final int REASON_IN_EMERGENCY_CALL = 6; // 0x6
+    field public static final int REASON_NETWORK_NOT_AVAILABLE = 2; // 0x2
+    field public static final int REASON_TIMED_OUT = 1; // 0x1
+    field public static final int REASON_TOO_MANY_CALLS = 3; // 0x3
+    field public static final int REASON_UNSPECIFIED = 0; // 0x0
+  }
+
+  public final class PhoneNumberRange implements android.os.Parcelable {
+    ctor public PhoneNumberRange(@NonNull String, @NonNull String, @NonNull String, @NonNull String);
+    method public int describeContents();
+    method public boolean matches(@NonNull String);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.PhoneNumberRange> CREATOR;
+  }
+
+  public class PhoneNumberUtils {
+    method @NonNull public static String getUsernameFromUriNumber(@NonNull String);
+    method public static boolean isUriNumber(@Nullable String);
+    method public static boolean isVoiceMailNumber(@NonNull android.content.Context, int, @Nullable String);
+  }
+
+  public class PhoneStateListener {
+    method public void onCallAttributesChanged(@NonNull android.telephony.CallAttributes);
+    method @Deprecated public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber);
+    method public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber, int);
+    method @Deprecated public void onOutgoingEmergencySms(@NonNull android.telephony.emergency.EmergencyNumber);
+    method public void onOutgoingEmergencySms(@NonNull android.telephony.emergency.EmergencyNumber, int);
+    method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onPreciseCallStateChanged(@NonNull android.telephony.PreciseCallState);
+    method public void onRadioPowerStateChanged(int);
+    method public void onSrvccStateChanged(int);
+    method public void onVoiceActivationStateChanged(int);
+    field @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public static final int LISTEN_CALL_ATTRIBUTES_CHANGED = 67108864; // 0x4000000
+    field @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION) public static final int LISTEN_OUTGOING_EMERGENCY_CALL = 268435456; // 0x10000000
+    field @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION) public static final int LISTEN_OUTGOING_EMERGENCY_SMS = 536870912; // 0x20000000
+    field @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public static final int LISTEN_PRECISE_CALL_STATE = 2048; // 0x800
+    field @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static final int LISTEN_RADIO_POWER_STATE_CHANGED = 8388608; // 0x800000
+    field @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static final int LISTEN_SRVCC_STATE_CHANGED = 16384; // 0x4000
+    field @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static final int LISTEN_VOICE_ACTIVATION_STATE = 131072; // 0x20000
+  }
+
+  public final class PinResult implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getAttemptsRemaining();
+    method public int getResult();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.PinResult> CREATOR;
+    field public static final int PIN_RESULT_TYPE_ABORTED = 3; // 0x3
+    field public static final int PIN_RESULT_TYPE_FAILURE = 2; // 0x2
+    field public static final int PIN_RESULT_TYPE_INCORRECT = 1; // 0x1
+    field public static final int PIN_RESULT_TYPE_SUCCESS = 0; // 0x0
+  }
+
+  public final class PreciseCallState implements android.os.Parcelable {
+    ctor public PreciseCallState(int, int, int, int, int);
+    method public int describeContents();
+    method public int getBackgroundCallState();
+    method public int getForegroundCallState();
+    method public int getRingingCallState();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.PreciseCallState> CREATOR;
+    field public static final int PRECISE_CALL_STATE_ACTIVE = 1; // 0x1
+    field public static final int PRECISE_CALL_STATE_ALERTING = 4; // 0x4
+    field public static final int PRECISE_CALL_STATE_DIALING = 3; // 0x3
+    field public static final int PRECISE_CALL_STATE_DISCONNECTED = 7; // 0x7
+    field public static final int PRECISE_CALL_STATE_DISCONNECTING = 8; // 0x8
+    field public static final int PRECISE_CALL_STATE_HOLDING = 2; // 0x2
+    field public static final int PRECISE_CALL_STATE_IDLE = 0; // 0x0
+    field public static final int PRECISE_CALL_STATE_INCOMING = 5; // 0x5
+    field public static final int PRECISE_CALL_STATE_NOT_VALID = -1; // 0xffffffff
+    field public static final int PRECISE_CALL_STATE_WAITING = 6; // 0x6
+  }
+
+  public final class PreciseDataConnectionState implements android.os.Parcelable {
+    method @Deprecated @NonNull public String getDataConnectionApn();
+    method @Deprecated public int getDataConnectionApnTypeBitMask();
+    method @Deprecated public int getDataConnectionFailCause();
+    method @Deprecated public int getDataConnectionState();
+    method public int getId();
+  }
+
+  public final class PreciseDisconnectCause {
+    field public static final int ACCESS_CLASS_BLOCKED = 260; // 0x104
+    field public static final int ACCESS_INFORMATION_DISCARDED = 43; // 0x2b
+    field public static final int ACM_LIMIT_EXCEEDED = 68; // 0x44
+    field public static final int BEARER_CAPABILITY_NOT_AUTHORIZED = 57; // 0x39
+    field public static final int BEARER_NOT_AVAIL = 58; // 0x3a
+    field public static final int BEARER_SERVICE_NOT_IMPLEMENTED = 65; // 0x41
+    field public static final int BUSY = 17; // 0x11
+    field public static final int CALL_BARRED = 240; // 0xf0
+    field public static final int CALL_REJECTED = 21; // 0x15
+    field public static final int CDMA_ACCESS_BLOCKED = 1009; // 0x3f1
+    field public static final int CDMA_ACCESS_FAILURE = 1006; // 0x3ee
+    field public static final int CDMA_DROP = 1001; // 0x3e9
+    field public static final int CDMA_INTERCEPT = 1002; // 0x3ea
+    field public static final int CDMA_LOCKED_UNTIL_POWER_CYCLE = 1000; // 0x3e8
+    field public static final int CDMA_NOT_EMERGENCY = 1008; // 0x3f0
+    field public static final int CDMA_PREEMPTED = 1007; // 0x3ef
+    field public static final int CDMA_REORDER = 1003; // 0x3eb
+    field public static final int CDMA_RETRY_ORDER = 1005; // 0x3ed
+    field public static final int CDMA_SO_REJECT = 1004; // 0x3ec
+    field public static final int CHANNEL_NOT_AVAIL = 44; // 0x2c
+    field public static final int CHANNEL_UNACCEPTABLE = 6; // 0x6
+    field public static final int CONDITIONAL_IE_ERROR = 100; // 0x64
+    field public static final int DESTINATION_OUT_OF_ORDER = 27; // 0x1b
+    field public static final int ERROR_UNSPECIFIED = 65535; // 0xffff
+    field public static final int FACILITY_REJECTED = 29; // 0x1d
+    field public static final int FDN_BLOCKED = 241; // 0xf1
+    field public static final int IMEI_NOT_ACCEPTED = 243; // 0xf3
+    field public static final int IMSI_UNKNOWN_IN_VLR = 242; // 0xf2
+    field public static final int INCOMING_CALLS_BARRED_WITHIN_CUG = 55; // 0x37
+    field public static final int INCOMPATIBLE_DESTINATION = 88; // 0x58
+    field public static final int INFORMATION_ELEMENT_NON_EXISTENT = 99; // 0x63
+    field public static final int INTERWORKING_UNSPECIFIED = 127; // 0x7f
+    field public static final int INVALID_MANDATORY_INFORMATION = 96; // 0x60
+    field public static final int INVALID_NUMBER_FORMAT = 28; // 0x1c
+    field public static final int INVALID_TRANSACTION_IDENTIFIER = 81; // 0x51
+    field public static final int MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 101; // 0x65
+    field public static final int MESSAGE_TYPE_NON_IMPLEMENTED = 97; // 0x61
+    field public static final int MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 98; // 0x62
+    field public static final int NETWORK_DETACH = 261; // 0x105
+    field public static final int NETWORK_OUT_OF_ORDER = 38; // 0x26
+    field public static final int NETWORK_REJECT = 252; // 0xfc
+    field public static final int NETWORK_RESP_TIMEOUT = 251; // 0xfb
+    field public static final int NORMAL = 16; // 0x10
+    field public static final int NORMAL_UNSPECIFIED = 31; // 0x1f
+    field public static final int NOT_VALID = -1; // 0xffffffff
+    field public static final int NO_ANSWER_FROM_USER = 19; // 0x13
+    field public static final int NO_CIRCUIT_AVAIL = 34; // 0x22
+    field public static final int NO_DISCONNECT_CAUSE_AVAILABLE = 0; // 0x0
+    field public static final int NO_ROUTE_TO_DESTINATION = 3; // 0x3
+    field public static final int NO_USER_RESPONDING = 18; // 0x12
+    field public static final int NO_VALID_SIM = 249; // 0xf9
+    field public static final int NUMBER_CHANGED = 22; // 0x16
+    field public static final int OEM_CAUSE_1 = 61441; // 0xf001
+    field public static final int OEM_CAUSE_10 = 61450; // 0xf00a
+    field public static final int OEM_CAUSE_11 = 61451; // 0xf00b
+    field public static final int OEM_CAUSE_12 = 61452; // 0xf00c
+    field public static final int OEM_CAUSE_13 = 61453; // 0xf00d
+    field public static final int OEM_CAUSE_14 = 61454; // 0xf00e
+    field public static final int OEM_CAUSE_15 = 61455; // 0xf00f
+    field public static final int OEM_CAUSE_2 = 61442; // 0xf002
+    field public static final int OEM_CAUSE_3 = 61443; // 0xf003
+    field public static final int OEM_CAUSE_4 = 61444; // 0xf004
+    field public static final int OEM_CAUSE_5 = 61445; // 0xf005
+    field public static final int OEM_CAUSE_6 = 61446; // 0xf006
+    field public static final int OEM_CAUSE_7 = 61447; // 0xf007
+    field public static final int OEM_CAUSE_8 = 61448; // 0xf008
+    field public static final int OEM_CAUSE_9 = 61449; // 0xf009
+    field public static final int ONLY_DIGITAL_INFORMATION_BEARER_AVAILABLE = 70; // 0x46
+    field public static final int OPERATOR_DETERMINED_BARRING = 8; // 0x8
+    field public static final int OUT_OF_SRV = 248; // 0xf8
+    field public static final int PREEMPTION = 25; // 0x19
+    field public static final int PROTOCOL_ERROR_UNSPECIFIED = 111; // 0x6f
+    field public static final int QOS_NOT_AVAIL = 49; // 0x31
+    field public static final int RADIO_ACCESS_FAILURE = 253; // 0xfd
+    field public static final int RADIO_INTERNAL_ERROR = 250; // 0xfa
+    field public static final int RADIO_LINK_FAILURE = 254; // 0xfe
+    field public static final int RADIO_LINK_LOST = 255; // 0xff
+    field public static final int RADIO_OFF = 247; // 0xf7
+    field public static final int RADIO_RELEASE_ABNORMAL = 259; // 0x103
+    field public static final int RADIO_RELEASE_NORMAL = 258; // 0x102
+    field public static final int RADIO_SETUP_FAILURE = 257; // 0x101
+    field public static final int RADIO_UPLINK_FAILURE = 256; // 0x100
+    field public static final int RECOVERY_ON_TIMER_EXPIRED = 102; // 0x66
+    field public static final int REQUESTED_FACILITY_NOT_IMPLEMENTED = 69; // 0x45
+    field public static final int REQUESTED_FACILITY_NOT_SUBSCRIBED = 50; // 0x32
+    field public static final int RESOURCES_UNAVAILABLE_OR_UNSPECIFIED = 47; // 0x2f
+    field public static final int SEMANTICALLY_INCORRECT_MESSAGE = 95; // 0x5f
+    field public static final int SERVICE_OPTION_NOT_AVAILABLE = 63; // 0x3f
+    field public static final int SERVICE_OR_OPTION_NOT_IMPLEMENTED = 79; // 0x4f
+    field public static final int STATUS_ENQUIRY = 30; // 0x1e
+    field public static final int SWITCHING_CONGESTION = 42; // 0x2a
+    field public static final int TEMPORARY_FAILURE = 41; // 0x29
+    field public static final int UNOBTAINABLE_NUMBER = 1; // 0x1
+    field public static final int USER_NOT_MEMBER_OF_CUG = 87; // 0x57
+  }
+
+  public class ServiceState implements android.os.Parcelable {
+    method @Nullable public android.telephony.NetworkRegistrationInfo getNetworkRegistrationInfo(int, int);
+    method @NonNull public java.util.List<android.telephony.NetworkRegistrationInfo> getNetworkRegistrationInfoListForDomain(int);
+    method @NonNull public java.util.List<android.telephony.NetworkRegistrationInfo> getNetworkRegistrationInfoListForTransportType(int);
+    field public static final int ROAMING_TYPE_DOMESTIC = 2; // 0x2
+    field public static final int ROAMING_TYPE_INTERNATIONAL = 3; // 0x3
+    field public static final int ROAMING_TYPE_NOT_ROAMING = 0; // 0x0
+    field public static final int ROAMING_TYPE_UNKNOWN = 1; // 0x1
+  }
+
+  public final class SmsCbCmasInfo implements android.os.Parcelable {
+    ctor public SmsCbCmasInfo(int, int, int, int, int, int);
+    method public int describeContents();
+    method public int getCategory();
+    method public int getCertainty();
+    method public int getMessageClass();
+    method public int getResponseType();
+    method public int getSeverity();
+    method public int getUrgency();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int CMAS_CATEGORY_CBRNE = 10; // 0xa
+    field public static final int CMAS_CATEGORY_ENV = 7; // 0x7
+    field public static final int CMAS_CATEGORY_FIRE = 5; // 0x5
+    field public static final int CMAS_CATEGORY_GEO = 0; // 0x0
+    field public static final int CMAS_CATEGORY_HEALTH = 6; // 0x6
+    field public static final int CMAS_CATEGORY_INFRA = 9; // 0x9
+    field public static final int CMAS_CATEGORY_MET = 1; // 0x1
+    field public static final int CMAS_CATEGORY_OTHER = 11; // 0xb
+    field public static final int CMAS_CATEGORY_RESCUE = 4; // 0x4
+    field public static final int CMAS_CATEGORY_SAFETY = 2; // 0x2
+    field public static final int CMAS_CATEGORY_SECURITY = 3; // 0x3
+    field public static final int CMAS_CATEGORY_TRANSPORT = 8; // 0x8
+    field public static final int CMAS_CATEGORY_UNKNOWN = -1; // 0xffffffff
+    field public static final int CMAS_CERTAINTY_LIKELY = 1; // 0x1
+    field public static final int CMAS_CERTAINTY_OBSERVED = 0; // 0x0
+    field public static final int CMAS_CERTAINTY_UNKNOWN = -1; // 0xffffffff
+    field public static final int CMAS_CLASS_CHILD_ABDUCTION_EMERGENCY = 3; // 0x3
+    field public static final int CMAS_CLASS_CMAS_EXERCISE = 5; // 0x5
+    field public static final int CMAS_CLASS_EXTREME_THREAT = 1; // 0x1
+    field public static final int CMAS_CLASS_OPERATOR_DEFINED_USE = 6; // 0x6
+    field public static final int CMAS_CLASS_PRESIDENTIAL_LEVEL_ALERT = 0; // 0x0
+    field public static final int CMAS_CLASS_REQUIRED_MONTHLY_TEST = 4; // 0x4
+    field public static final int CMAS_CLASS_SEVERE_THREAT = 2; // 0x2
+    field public static final int CMAS_CLASS_UNKNOWN = -1; // 0xffffffff
+    field public static final int CMAS_RESPONSE_TYPE_ASSESS = 6; // 0x6
+    field public static final int CMAS_RESPONSE_TYPE_AVOID = 5; // 0x5
+    field public static final int CMAS_RESPONSE_TYPE_EVACUATE = 1; // 0x1
+    field public static final int CMAS_RESPONSE_TYPE_EXECUTE = 3; // 0x3
+    field public static final int CMAS_RESPONSE_TYPE_MONITOR = 4; // 0x4
+    field public static final int CMAS_RESPONSE_TYPE_NONE = 7; // 0x7
+    field public static final int CMAS_RESPONSE_TYPE_PREPARE = 2; // 0x2
+    field public static final int CMAS_RESPONSE_TYPE_SHELTER = 0; // 0x0
+    field public static final int CMAS_RESPONSE_TYPE_UNKNOWN = -1; // 0xffffffff
+    field public static final int CMAS_SEVERITY_EXTREME = 0; // 0x0
+    field public static final int CMAS_SEVERITY_SEVERE = 1; // 0x1
+    field public static final int CMAS_SEVERITY_UNKNOWN = -1; // 0xffffffff
+    field public static final int CMAS_URGENCY_EXPECTED = 1; // 0x1
+    field public static final int CMAS_URGENCY_IMMEDIATE = 0; // 0x0
+    field public static final int CMAS_URGENCY_UNKNOWN = -1; // 0xffffffff
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SmsCbCmasInfo> CREATOR;
+  }
+
+  public final class SmsCbEtwsInfo implements android.os.Parcelable {
+    ctor public SmsCbEtwsInfo(int, boolean, boolean, boolean, @Nullable byte[]);
+    method public int describeContents();
+    method @Nullable public byte[] getPrimaryNotificationSignature();
+    method public long getPrimaryNotificationTimestamp();
+    method public int getWarningType();
+    method public boolean isEmergencyUserAlert();
+    method public boolean isPopupAlert();
+    method public boolean isPrimary();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SmsCbEtwsInfo> CREATOR;
+    field public static final int ETWS_WARNING_TYPE_EARTHQUAKE = 0; // 0x0
+    field public static final int ETWS_WARNING_TYPE_EARTHQUAKE_AND_TSUNAMI = 2; // 0x2
+    field public static final int ETWS_WARNING_TYPE_OTHER_EMERGENCY = 4; // 0x4
+    field public static final int ETWS_WARNING_TYPE_TEST_MESSAGE = 3; // 0x3
+    field public static final int ETWS_WARNING_TYPE_TSUNAMI = 1; // 0x1
+    field public static final int ETWS_WARNING_TYPE_UNKNOWN = -1; // 0xffffffff
+  }
+
+  public final class SmsCbLocation implements android.os.Parcelable {
+    ctor public SmsCbLocation(@NonNull String, int, int);
+    method public int describeContents();
+    method public int getCid();
+    method public int getLac();
+    method @NonNull public String getPlmn();
+    method public boolean isInLocationArea(@NonNull android.telephony.SmsCbLocation);
+    method public boolean isInLocationArea(@Nullable String, int, int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SmsCbLocation> CREATOR;
+  }
+
+  public final class SmsCbMessage implements android.os.Parcelable {
+    ctor public SmsCbMessage(int, int, int, @NonNull android.telephony.SmsCbLocation, int, @Nullable String, int, @Nullable String, int, @Nullable android.telephony.SmsCbEtwsInfo, @Nullable android.telephony.SmsCbCmasInfo, int, @Nullable java.util.List<android.telephony.CbGeoUtils.Geometry>, long, int, int);
+    method @NonNull public static android.telephony.SmsCbMessage createFromCursor(@NonNull android.database.Cursor);
+    method public int describeContents();
+    method @Nullable public android.telephony.SmsCbCmasInfo getCmasWarningInfo();
+    method @NonNull public android.content.ContentValues getContentValues();
+    method public int getDataCodingScheme();
+    method @Nullable public android.telephony.SmsCbEtwsInfo getEtwsWarningInfo();
+    method public int getGeographicalScope();
+    method @NonNull public java.util.List<android.telephony.CbGeoUtils.Geometry> getGeometries();
+    method @Nullable public String getLanguageCode();
+    method @NonNull public android.telephony.SmsCbLocation getLocation();
+    method public int getMaximumWaitingDuration();
+    method @Nullable public String getMessageBody();
+    method public int getMessageFormat();
+    method public int getMessagePriority();
+    method public long getReceivedTime();
+    method public int getSerialNumber();
+    method public int getServiceCategory();
+    method public int getSlotIndex();
+    method public int getSubscriptionId();
+    method public boolean isCmasMessage();
+    method public boolean isEmergencyMessage();
+    method public boolean isEtwsMessage();
+    method public boolean needGeoFencingCheck();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SmsCbMessage> CREATOR;
+    field public static final int GEOGRAPHICAL_SCOPE_CELL_WIDE = 3; // 0x3
+    field public static final int GEOGRAPHICAL_SCOPE_CELL_WIDE_IMMEDIATE = 0; // 0x0
+    field public static final int GEOGRAPHICAL_SCOPE_LOCATION_AREA_WIDE = 2; // 0x2
+    field public static final int GEOGRAPHICAL_SCOPE_PLMN_WIDE = 1; // 0x1
+    field public static final int MAXIMUM_WAIT_TIME_NOT_SET = 255; // 0xff
+    field public static final int MESSAGE_FORMAT_3GPP = 1; // 0x1
+    field public static final int MESSAGE_FORMAT_3GPP2 = 2; // 0x2
+    field public static final int MESSAGE_PRIORITY_EMERGENCY = 3; // 0x3
+    field public static final int MESSAGE_PRIORITY_INTERACTIVE = 1; // 0x1
+    field public static final int MESSAGE_PRIORITY_NORMAL = 0; // 0x0
+    field public static final int MESSAGE_PRIORITY_URGENT = 2; // 0x2
+  }
+
+  public final class SmsManager {
+    method public boolean disableCellBroadcastRange(int, int, int);
+    method public boolean enableCellBroadcastRange(int, int, int);
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getPremiumSmsConsent(@NonNull String);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void sendMultipartTextMessageWithoutPersisting(String, String, java.util.List<java.lang.String>, java.util.List<android.app.PendingIntent>, java.util.List<android.app.PendingIntent>);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setPremiumSmsConsent(@NonNull String, int);
+    field public static final int PREMIUM_SMS_CONSENT_ALWAYS_ALLOW = 3; // 0x3
+    field public static final int PREMIUM_SMS_CONSENT_ASK_USER = 1; // 0x1
+    field public static final int PREMIUM_SMS_CONSENT_NEVER_ALLOW = 2; // 0x2
+    field public static final int PREMIUM_SMS_CONSENT_UNKNOWN = 0; // 0x0
+  }
+
+  public class SmsMessage {
+    method @Nullable public static android.telephony.SmsMessage createFromNativeSmsSubmitPdu(@NonNull byte[], boolean);
+    method @Nullable public static android.telephony.SmsMessage.SubmitPdu getSmsPdu(int, int, @Nullable String, @NonNull String, @NonNull String, long);
+    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public static byte[] getSubmitPduEncodedMessage(boolean, @NonNull String, @NonNull String, int, @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0, to=255) int, @IntRange(from=1, to=255) int, @IntRange(from=1, to=255) int);
+  }
+
+  public class SubscriptionInfo implements android.os.Parcelable {
+    method public boolean areUiccApplicationsEnabled();
+    method @Nullable public java.util.List<android.telephony.UiccAccessRule> getAccessRules();
+    method public int getProfileClass();
+    method public boolean isGroupDisabled();
+  }
+
+  public class SubscriptionManager {
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean canDisablePhysicalSubscription();
+    method public boolean canManageSubscription(@NonNull android.telephony.SubscriptionInfo, @NonNull String);
+    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int[] getActiveSubscriptionIdList();
+    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.SubscriptionInfo getActiveSubscriptionInfoForIcc(@NonNull String);
+    method public java.util.List<android.telephony.SubscriptionInfo> getAvailableSubscriptionInfoList();
+    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int[] getCompleteActiveSubscriptionIdList();
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getEnabledSubscriptionId(int);
+    method @NonNull public static android.content.res.Resources getResourcesForSubId(@NonNull android.content.Context, int);
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isSubscriptionEnabled(int);
+    method public void requestEmbeddedSubscriptionInfoListRefresh();
+    method public void requestEmbeddedSubscriptionInfoListRefresh(int);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultDataSubId(int);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultSmsSubId(int);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultVoiceSubscriptionId(int);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setPreferredDataSubscriptionId(int, boolean, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<java.lang.Integer>);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setSubscriptionEnabled(int, boolean);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setUiccApplicationsEnabled(int, boolean);
+    field @RequiresPermission(android.Manifest.permission.MANAGE_SUBSCRIPTION_PLANS) public static final String ACTION_SUBSCRIPTION_PLANS_CHANGED = "android.telephony.action.SUBSCRIPTION_PLANS_CHANGED";
+    field @NonNull public static final android.net.Uri ADVANCED_CALLING_ENABLED_CONTENT_URI;
+    field @Deprecated public static final int PROFILE_CLASS_DEFAULT = -1; // 0xffffffff
+    field public static final int PROFILE_CLASS_OPERATIONAL = 2; // 0x2
+    field public static final int PROFILE_CLASS_PROVISIONING = 1; // 0x1
+    field public static final int PROFILE_CLASS_TESTING = 0; // 0x0
+    field public static final int PROFILE_CLASS_UNSET = -1; // 0xffffffff
+    field @NonNull public static final android.net.Uri VT_ENABLED_CONTENT_URI;
+    field @NonNull public static final android.net.Uri WFC_ENABLED_CONTENT_URI;
+    field @NonNull public static final android.net.Uri WFC_MODE_CONTENT_URI;
+    field @NonNull public static final android.net.Uri WFC_ROAMING_ENABLED_CONTENT_URI;
+    field @NonNull public static final android.net.Uri WFC_ROAMING_MODE_CONTENT_URI;
+  }
+
+  public static class SubscriptionPlan.Builder {
+    method @Deprecated public static android.telephony.SubscriptionPlan.Builder createRecurringDaily(java.time.ZonedDateTime);
+    method @Deprecated public static android.telephony.SubscriptionPlan.Builder createRecurringMonthly(java.time.ZonedDateTime);
+    method @Deprecated public static android.telephony.SubscriptionPlan.Builder createRecurringWeekly(java.time.ZonedDateTime);
+  }
+
+  public final class TelephonyHistogram implements android.os.Parcelable {
+    ctor public TelephonyHistogram(int, int, int);
+    ctor public TelephonyHistogram(android.telephony.TelephonyHistogram);
+    ctor public TelephonyHistogram(android.os.Parcel);
+    method public void addTimeTaken(int);
+    method public int describeContents();
+    method public int getAverageTime();
+    method public int getBucketCount();
+    method public int[] getBucketCounters();
+    method public int[] getBucketEndPoints();
+    method public int getCategory();
+    method public int getId();
+    method public int getMaxTime();
+    method public int getMinTime();
+    method public int getSampleCount();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.TelephonyHistogram> CREATOR;
+    field public static final int TELEPHONY_CATEGORY_RIL = 1; // 0x1
+  }
+
+  public class TelephonyManager {
+    method @Deprecated @RequiresPermission(android.Manifest.permission.CALL_PHONE) public void call(String, String);
+    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.telephony.PinResult changeIccLockPin(@NonNull String, @NonNull String);
+    method public int checkCarrierPrivilegesForPackage(String);
+    method public int checkCarrierPrivilegesForPackageAnyPhone(String);
+    method public void dial(String);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean disableDataConnectivity();
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean enableDataConnectivity();
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean enableModemForSlot(int, boolean);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void enableVideoCalling(boolean);
+    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getAidForAppType(int);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.List<android.service.carrier.CarrierIdentifier> getAllowedCarriers(int);
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public long getAllowedNetworkTypes();
+    method @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public android.content.ComponentName getAndUpdateDefaultRespondViaMessageApplication();
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getCallForwarding(int, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.TelephonyManager.CallForwardingInfoCallback);
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getCallWaitingStatus(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
+    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.CarrierBandwidth getCarrierBandwidth();
+    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.ImsiEncryptionInfo getCarrierInfoForImsiEncryption(int);
+    method public java.util.List<java.lang.String> getCarrierPackageNamesForIntent(android.content.Intent);
+    method public java.util.List<java.lang.String> getCarrierPackageNamesForIntentAndPhone(android.content.Intent, int);
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getCarrierPrivilegeStatus(int);
+    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.List<java.lang.String> getCarrierPrivilegedPackagesForAllActiveSubscriptions();
+    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.CarrierRestrictionRules getCarrierRestrictionRules();
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getCdmaEnhancedRoamingIndicatorDisplayNumber();
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String getCdmaMdn();
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String getCdmaMdn(int);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String getCdmaMin();
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String getCdmaMin(int);
+    method public String getCdmaPrlVersion();
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getCdmaRoamingMode();
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getCdmaSubscriptionMode();
+    method public int getCurrentPhoneType();
+    method public int getCurrentPhoneType(int);
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getDataActivationState();
+    method @Deprecated public boolean getDataEnabled();
+    method @Deprecated public boolean getDataEnabled(int);
+    method @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public android.content.ComponentName getDefaultRespondViaMessageApplication();
+    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getDeviceSoftwareVersion(int);
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean getEmergencyCallbackMode();
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getEmergencyNumberDbVersion();
+    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getIsimDomain();
+    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getIsimIst();
+    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.Map<java.lang.Integer,java.lang.Integer> getLogicalToPhysicalSlotMapping();
+    method public int getMaxNumberOfSimultaneouslyActiveSims();
+    method public static long getMaxNumberVerificationTimeoutMillis();
+    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String[] getMergedImsisFromGroup();
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public long getPreferredNetworkTypeBitmask();
+    method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public int getRadioPowerState();
+    method public int getSimApplicationState();
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getSimApplicationState(int);
+    method public int getSimCardState();
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getSimCardState(int);
+    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.Locale getSimLocale();
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public long getSupportedRadioAccessFamily();
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public java.util.List<android.telephony.TelephonyHistogram> getTelephonyHistograms();
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.UiccSlotInfo[] getUiccSlotsInfo();
+    method @Nullable public android.os.Bundle getVisualVoicemailSettings();
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getVoiceActivationState();
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handlePinMmi(String);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handlePinMmiForSubscriber(int, String);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean iccCloseLogicalChannelBySlot(int, int);
+    method @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannelBySlot(int, @Nullable String, int);
+    method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String iccTransmitApduBasicChannelBySlot(int, int, int, int, int, int, @Nullable String);
+    method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String iccTransmitApduLogicalChannelBySlot(int, int, int, int, int, int, int, @Nullable String);
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isAnyRadioPoweredOn();
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isApnMetered(int);
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isApplicationOnUicc(int);
+    method public boolean isDataConnectivityPossible();
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isDataEnabledForApn(int);
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isEmergencyAssistanceEnabled();
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public boolean isIccLockEnabled();
+    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isIdle();
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isLteCdmaEvdoGsmWcdmaEnabled();
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isMobileDataPolicyEnabled(int);
+    method public boolean isNrDualConnectivityEnabled();
+    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isOffhook();
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isOpportunisticNetworkEnabled();
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isPotentialEmergencyNumber(@NonNull String);
+    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isRadioOn();
+    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isRinging();
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean isTetheringApnRequired();
+    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isVideoCallingEnabled();
+    method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isVisualVoicemailEnabled(android.telecom.PhoneAccountHandle);
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean matchesCurrentSimOperator(@NonNull String, int, @Nullable String);
+    method public boolean needsOtaServiceProvisioning();
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void notifyOtaEmergencyNumberDbInstalled();
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean rebootRadio();
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void reportDefaultNetworkStatus(boolean);
+    method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.MODIFY_PHONE_STATE}) public void requestCellInfoUpdate(@NonNull android.os.WorkSource, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.TelephonyManager.CellInfoCallback);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void requestNumberVerification(@NonNull android.telephony.PhoneNumberRange, long, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.NumberVerificationCallback);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void resetAllCarrierActions();
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void resetCarrierKeysForImsiEncryption();
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public void resetIms(int);
+    method @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION) public void resetOtaEmergencyNumberDbFilePath();
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean resetRadioConfig();
+    method @RequiresPermission(android.Manifest.permission.CONNECTIVITY_INTERNAL) public void resetSettings();
+    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int setAllowedCarriers(int, java.util.List<android.service.carrier.CarrierIdentifier>);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setAllowedNetworkTypes(long);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCallForwarding(@NonNull android.telephony.CallForwardingInfo, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<java.lang.Integer>);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCallWaitingEnabled(boolean, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<java.lang.Integer>);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCarrierDataEnabled(boolean);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int setCarrierRestrictionRules(@NonNull android.telephony.CarrierRestrictionRules);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCdmaRoamingMode(int);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCdmaSubscriptionMode(int);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataActivationState(int);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataEnabled(int, boolean);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataRoamingEnabled(boolean);
+    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.telephony.PinResult setIccLockEnabled(boolean, @NonNull String);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setMobileDataPolicyEnabledStatus(int, boolean);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setMultiSimCarrierRestriction(boolean);
+    method public int setNrDualConnectivityState(int);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setOpportunisticNetworkState(boolean);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setPreferredNetworkTypeBitmask(long);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setRadio(boolean);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setRadioEnabled(boolean);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setRadioPower(boolean);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSimPowerState(int);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSimPowerStateForSlot(int, int);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSystemSelectionChannels(@NonNull java.util.List<android.telephony.RadioAccessSpecifier>, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSystemSelectionChannels(@NonNull java.util.List<android.telephony.RadioAccessSpecifier>);
+    method @Deprecated public void setVisualVoicemailEnabled(android.telecom.PhoneAccountHandle, boolean);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoiceActivationState(int);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void shutdownAllRadios();
+    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.telephony.PinResult supplyIccLockPin(@NonNull String);
+    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.telephony.PinResult supplyIccLockPuk(@NonNull String, @NonNull String);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean supplyPin(String);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int[] supplyPinReportResult(String);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean supplyPuk(String, String);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int[] supplyPukReportResult(String, String);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean switchSlots(int[]);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void toggleRadioOnOff();
+    method @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION) public void updateOtaEmergencyNumberDbFilePath(@NonNull android.os.ParcelFileDescriptor);
+    method public void updateServiceLocation();
+    field @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static final String ACTION_ANOMALY_REPORTED = "android.telephony.action.ANOMALY_REPORTED";
+    field public static final String ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED = "android.intent.action.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED";
+    field public static final String ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED = "android.intent.action.ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED";
+    field public static final String ACTION_EMERGENCY_ASSISTANCE = "android.telephony.action.EMERGENCY_ASSISTANCE";
+    field public static final String ACTION_EMERGENCY_CALLBACK_MODE_CHANGED = "android.intent.action.EMERGENCY_CALLBACK_MODE_CHANGED";
+    field public static final String ACTION_EMERGENCY_CALL_STATE_CHANGED = "android.intent.action.EMERGENCY_CALL_STATE_CHANGED";
+    field public static final String ACTION_REQUEST_OMADM_CONFIGURATION_UPDATE = "com.android.omadm.service.CONFIGURATION_UPDATE";
+    field public static final String ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS = "android.telephony.action.SHOW_NOTICE_ECM_BLOCK_OTHERS";
+    field public static final String ACTION_SIM_APPLICATION_STATE_CHANGED = "android.telephony.action.SIM_APPLICATION_STATE_CHANGED";
+    field public static final String ACTION_SIM_CARD_STATE_CHANGED = "android.telephony.action.SIM_CARD_STATE_CHANGED";
+    field public static final String ACTION_SIM_SLOT_STATUS_CHANGED = "android.telephony.action.SIM_SLOT_STATUS_CHANGED";
+    field public static final int CALL_WAITING_STATUS_DISABLED = 2; // 0x2
+    field public static final int CALL_WAITING_STATUS_ENABLED = 1; // 0x1
+    field public static final int CALL_WAITING_STATUS_NOT_SUPPORTED = 4; // 0x4
+    field public static final int CALL_WAITING_STATUS_UNKNOWN_ERROR = 3; // 0x3
+    field public static final int CARRIER_PRIVILEGE_STATUS_ERROR_LOADING_RULES = -2; // 0xfffffffe
+    field public static final int CARRIER_PRIVILEGE_STATUS_HAS_ACCESS = 1; // 0x1
+    field public static final int CARRIER_PRIVILEGE_STATUS_NO_ACCESS = 0; // 0x0
+    field public static final int CARRIER_PRIVILEGE_STATUS_RULES_NOT_LOADED = -1; // 0xffffffff
+    field public static final int CDMA_SUBSCRIPTION_NV = 1; // 0x1
+    field public static final int CDMA_SUBSCRIPTION_RUIM_SIM = 0; // 0x0
+    field public static final int CDMA_SUBSCRIPTION_UNKNOWN = -1; // 0xffffffff
+    field public static final int ENABLE_NR_DUAL_CONNECTIVITY_INVALID_STATE = 4; // 0x4
+    field public static final int ENABLE_NR_DUAL_CONNECTIVITY_NOT_SUPPORTED = 1; // 0x1
+    field public static final int ENABLE_NR_DUAL_CONNECTIVITY_RADIO_ERROR = 3; // 0x3
+    field public static final int ENABLE_NR_DUAL_CONNECTIVITY_RADIO_NOT_AVAILABLE = 2; // 0x2
+    field public static final int ENABLE_NR_DUAL_CONNECTIVITY_SUCCESS = 0; // 0x0
+    field public static final String EXTRA_ANOMALY_DESCRIPTION = "android.telephony.extra.ANOMALY_DESCRIPTION";
+    field public static final String EXTRA_ANOMALY_ID = "android.telephony.extra.ANOMALY_ID";
+    field public static final String EXTRA_PHONE_IN_ECM_STATE = "android.telephony.extra.PHONE_IN_ECM_STATE";
+    field public static final String EXTRA_PHONE_IN_EMERGENCY_CALL = "android.telephony.extra.PHONE_IN_EMERGENCY_CALL";
+    field public static final String EXTRA_SIM_STATE = "android.telephony.extra.SIM_STATE";
+    field public static final String EXTRA_VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL = "android.telephony.extra.VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL";
+    field public static final String EXTRA_VOICEMAIL_SCRAMBLED_PIN_STRING = "android.telephony.extra.VOICEMAIL_SCRAMBLED_PIN_STRING";
+    field public static final int INVALID_EMERGENCY_NUMBER_DB_VERSION = -1; // 0xffffffff
+    field public static final int KEY_TYPE_EPDG = 1; // 0x1
+    field public static final int KEY_TYPE_WLAN = 2; // 0x2
+    field public static final int MOBILE_DATA_POLICY_DATA_ON_NON_DEFAULT_DURING_VOICE_CALL = 1; // 0x1
+    field public static final int MOBILE_DATA_POLICY_MMS_ALWAYS_ALLOWED = 2; // 0x2
+    field public static final long NETWORK_TYPE_BITMASK_1xRTT = 64L; // 0x40L
+    field public static final long NETWORK_TYPE_BITMASK_CDMA = 8L; // 0x8L
+    field public static final long NETWORK_TYPE_BITMASK_EDGE = 2L; // 0x2L
+    field public static final long NETWORK_TYPE_BITMASK_EHRPD = 8192L; // 0x2000L
+    field public static final long NETWORK_TYPE_BITMASK_EVDO_0 = 16L; // 0x10L
+    field public static final long NETWORK_TYPE_BITMASK_EVDO_A = 32L; // 0x20L
+    field public static final long NETWORK_TYPE_BITMASK_EVDO_B = 2048L; // 0x800L
+    field public static final long NETWORK_TYPE_BITMASK_GPRS = 1L; // 0x1L
+    field public static final long NETWORK_TYPE_BITMASK_GSM = 32768L; // 0x8000L
+    field public static final long NETWORK_TYPE_BITMASK_HSDPA = 128L; // 0x80L
+    field public static final long NETWORK_TYPE_BITMASK_HSPA = 512L; // 0x200L
+    field public static final long NETWORK_TYPE_BITMASK_HSPAP = 16384L; // 0x4000L
+    field public static final long NETWORK_TYPE_BITMASK_HSUPA = 256L; // 0x100L
+    field public static final long NETWORK_TYPE_BITMASK_IWLAN = 131072L; // 0x20000L
+    field public static final long NETWORK_TYPE_BITMASK_LTE = 4096L; // 0x1000L
+    field public static final long NETWORK_TYPE_BITMASK_LTE_CA = 262144L; // 0x40000L
+    field public static final long NETWORK_TYPE_BITMASK_NR = 524288L; // 0x80000L
+    field public static final long NETWORK_TYPE_BITMASK_TD_SCDMA = 65536L; // 0x10000L
+    field public static final long NETWORK_TYPE_BITMASK_UMTS = 4L; // 0x4L
+    field public static final long NETWORK_TYPE_BITMASK_UNKNOWN = 0L; // 0x0L
+    field public static final int NR_DUAL_CONNECTIVITY_DISABLE = 2; // 0x2
+    field public static final int NR_DUAL_CONNECTIVITY_DISABLE_IMMEDIATE = 3; // 0x3
+    field public static final int NR_DUAL_CONNECTIVITY_ENABLE = 1; // 0x1
+    field public static final int RADIO_POWER_OFF = 0; // 0x0
+    field public static final int RADIO_POWER_ON = 1; // 0x1
+    field public static final int RADIO_POWER_UNAVAILABLE = 2; // 0x2
+    field public static final int SET_CARRIER_RESTRICTION_ERROR = 2; // 0x2
+    field public static final int SET_CARRIER_RESTRICTION_NOT_SUPPORTED = 1; // 0x1
+    field public static final int SET_CARRIER_RESTRICTION_SUCCESS = 0; // 0x0
+    field public static final int SIM_ACTIVATION_STATE_ACTIVATED = 2; // 0x2
+    field public static final int SIM_ACTIVATION_STATE_ACTIVATING = 1; // 0x1
+    field public static final int SIM_ACTIVATION_STATE_DEACTIVATED = 3; // 0x3
+    field public static final int SIM_ACTIVATION_STATE_RESTRICTED = 4; // 0x4
+    field public static final int SIM_ACTIVATION_STATE_UNKNOWN = 0; // 0x0
+    field public static final int SIM_STATE_LOADED = 10; // 0xa
+    field public static final int SIM_STATE_PRESENT = 11; // 0xb
+    field public static final int SRVCC_STATE_HANDOVER_CANCELED = 3; // 0x3
+    field public static final int SRVCC_STATE_HANDOVER_COMPLETED = 1; // 0x1
+    field public static final int SRVCC_STATE_HANDOVER_FAILED = 2; // 0x2
+    field public static final int SRVCC_STATE_HANDOVER_NONE = -1; // 0xffffffff
+    field public static final int SRVCC_STATE_HANDOVER_STARTED = 0; // 0x0
+  }
+
+  public static interface TelephonyManager.CallForwardingInfoCallback {
+    method public void onCallForwardingInfoAvailable(@NonNull android.telephony.CallForwardingInfo);
+    method public void onError(int);
+    field public static final int RESULT_ERROR_FDN_CHECK_FAILURE = 2; // 0x2
+    field public static final int RESULT_ERROR_NOT_SUPPORTED = 3; // 0x3
+    field public static final int RESULT_ERROR_UNKNOWN = 1; // 0x1
+    field public static final int RESULT_SUCCESS = 0; // 0x0
+  }
+
+  public final class UiccAccessRule implements android.os.Parcelable {
+    ctor public UiccAccessRule(byte[], @Nullable String, long);
+    method public int describeContents();
+    method public int getCarrierPrivilegeStatus(android.content.pm.PackageInfo);
+    method public int getCarrierPrivilegeStatus(android.content.pm.Signature, String);
+    method public String getCertificateHexString();
+    method @Nullable public String getPackageName();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.UiccAccessRule> CREATOR;
+  }
+
+  public class UiccSlotInfo implements android.os.Parcelable {
+    ctor @Deprecated public UiccSlotInfo(boolean, boolean, String, int, int, boolean);
+    method public int describeContents();
+    method public String getCardId();
+    method public int getCardStateInfo();
+    method public boolean getIsActive();
+    method public boolean getIsEuicc();
+    method public boolean getIsExtendedApduSupported();
+    method public int getLogicalSlotIdx();
+    method public boolean isRemovable();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int CARD_STATE_INFO_ABSENT = 1; // 0x1
+    field public static final int CARD_STATE_INFO_ERROR = 3; // 0x3
+    field public static final int CARD_STATE_INFO_PRESENT = 2; // 0x2
+    field public static final int CARD_STATE_INFO_RESTRICTED = 4; // 0x4
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.UiccSlotInfo> CREATOR;
+  }
+
+  public abstract class VisualVoicemailService extends android.app.Service {
+    method public static final void sendVisualVoicemailSms(android.content.Context, android.telecom.PhoneAccountHandle, String, short, String, android.app.PendingIntent);
+    method public static final void setSmsFilterSettings(android.content.Context, android.telecom.PhoneAccountHandle, android.telephony.VisualVoicemailSmsFilterSettings);
+  }
+
+}
+
+package android.telephony.cdma {
+
+  public final class CdmaSmsCbProgramData implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getCategory();
+    method public int getOperation();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int CATEGORY_CMAS_CHILD_ABDUCTION_EMERGENCY = 4099; // 0x1003
+    field public static final int CATEGORY_CMAS_EXTREME_THREAT = 4097; // 0x1001
+    field public static final int CATEGORY_CMAS_LAST_RESERVED_VALUE = 4351; // 0x10ff
+    field public static final int CATEGORY_CMAS_PRESIDENTIAL_LEVEL_ALERT = 4096; // 0x1000
+    field public static final int CATEGORY_CMAS_SEVERE_THREAT = 4098; // 0x1002
+    field public static final int CATEGORY_CMAS_TEST_MESSAGE = 4100; // 0x1004
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.cdma.CdmaSmsCbProgramData> CREATOR;
+    field public static final int OPERATION_ADD_CATEGORY = 1; // 0x1
+    field public static final int OPERATION_CLEAR_CATEGORIES = 2; // 0x2
+    field public static final int OPERATION_DELETE_CATEGORY = 0; // 0x0
+  }
+
+}
+
+package android.telephony.data {
+
+  public final class DataCallResponse implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public java.util.List<android.net.LinkAddress> getAddresses();
+    method public int getCause();
+    method @NonNull public java.util.List<java.net.InetAddress> getDnsAddresses();
+    method @NonNull public java.util.List<java.net.InetAddress> getGatewayAddresses();
+    method public int getHandoverFailureMode();
+    method public int getId();
+    method @NonNull public String getInterfaceName();
+    method public int getLinkStatus();
+    method @Deprecated public int getMtu();
+    method public int getMtuV4();
+    method public int getMtuV6();
+    method @NonNull public java.util.List<java.net.InetAddress> getPcscfAddresses();
+    method public int getPduSessionId();
+    method public int getProtocolType();
+    method public long getRetryIntervalMillis();
+    method @Deprecated public int getSuggestedRetryTime();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.DataCallResponse> CREATOR;
+    field public static final int HANDOVER_FAILURE_MODE_DO_FALLBACK = 1; // 0x1
+    field public static final int HANDOVER_FAILURE_MODE_LEGACY = 0; // 0x0
+    field public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_HANDOVER = 2; // 0x2
+    field public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_SETUP_NORMAL = 3; // 0x3
+    field public static final int HANDOVER_FAILURE_MODE_UNKNOWN = -1; // 0xffffffff
+    field public static final int LINK_STATUS_ACTIVE = 2; // 0x2
+    field public static final int LINK_STATUS_DORMANT = 1; // 0x1
+    field public static final int LINK_STATUS_INACTIVE = 0; // 0x0
+    field public static final int LINK_STATUS_UNKNOWN = -1; // 0xffffffff
+    field public static final int PDU_SESSION_ID_NOT_SET = 0; // 0x0
+    field public static final int RETRY_INTERVAL_UNDEFINED = -1; // 0xffffffff
+  }
+
+  public static final class DataCallResponse.Builder {
+    ctor public DataCallResponse.Builder();
+    method @NonNull public android.telephony.data.DataCallResponse build();
+    method @NonNull public android.telephony.data.DataCallResponse.Builder setAddresses(@NonNull java.util.List<android.net.LinkAddress>);
+    method @NonNull public android.telephony.data.DataCallResponse.Builder setCause(int);
+    method @NonNull public android.telephony.data.DataCallResponse.Builder setDnsAddresses(@NonNull java.util.List<java.net.InetAddress>);
+    method @NonNull public android.telephony.data.DataCallResponse.Builder setGatewayAddresses(@NonNull java.util.List<java.net.InetAddress>);
+    method @NonNull public android.telephony.data.DataCallResponse.Builder setHandoverFailureMode(int);
+    method @NonNull public android.telephony.data.DataCallResponse.Builder setId(int);
+    method @NonNull public android.telephony.data.DataCallResponse.Builder setInterfaceName(@NonNull String);
+    method @NonNull public android.telephony.data.DataCallResponse.Builder setLinkStatus(int);
+    method @Deprecated @NonNull public android.telephony.data.DataCallResponse.Builder setMtu(int);
+    method @NonNull public android.telephony.data.DataCallResponse.Builder setMtuV4(int);
+    method @NonNull public android.telephony.data.DataCallResponse.Builder setMtuV6(int);
+    method @NonNull public android.telephony.data.DataCallResponse.Builder setPcscfAddresses(@NonNull java.util.List<java.net.InetAddress>);
+    method @NonNull public android.telephony.data.DataCallResponse.Builder setPduSessionId(int);
+    method @NonNull public android.telephony.data.DataCallResponse.Builder setProtocolType(int);
+    method @NonNull public android.telephony.data.DataCallResponse.Builder setRetryIntervalMillis(long);
+    method @Deprecated @NonNull public android.telephony.data.DataCallResponse.Builder setSuggestedRetryTime(int);
+  }
+
+  public final class DataProfile implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public String getApn();
+    method public int getAuthType();
+    method public int getBearerBitmask();
+    method @Deprecated public int getMtu();
+    method public int getMtuV4();
+    method public int getMtuV6();
+    method @Nullable public String getPassword();
+    method public int getProfileId();
+    method public int getProtocolType();
+    method public int getRoamingProtocolType();
+    method public int getSupportedApnTypesBitmask();
+    method public int getType();
+    method @Nullable public String getUserName();
+    method public boolean isEnabled();
+    method public boolean isPersistent();
+    method public boolean isPreferred();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.DataProfile> CREATOR;
+    field public static final int TYPE_3GPP = 1; // 0x1
+    field public static final int TYPE_3GPP2 = 2; // 0x2
+    field public static final int TYPE_COMMON = 0; // 0x0
+  }
+
+  public static final class DataProfile.Builder {
+    ctor public DataProfile.Builder();
+    method @NonNull public android.telephony.data.DataProfile build();
+    method @NonNull public android.telephony.data.DataProfile.Builder enable(boolean);
+    method @NonNull public android.telephony.data.DataProfile.Builder setApn(@NonNull String);
+    method @NonNull public android.telephony.data.DataProfile.Builder setAuthType(int);
+    method @NonNull public android.telephony.data.DataProfile.Builder setBearerBitmask(int);
+    method @Deprecated @NonNull public android.telephony.data.DataProfile.Builder setMtu(int);
+    method @NonNull public android.telephony.data.DataProfile.Builder setMtuV4(int);
+    method @NonNull public android.telephony.data.DataProfile.Builder setMtuV6(int);
+    method @NonNull public android.telephony.data.DataProfile.Builder setPassword(@NonNull String);
+    method @NonNull public android.telephony.data.DataProfile.Builder setPersistent(boolean);
+    method @NonNull public android.telephony.data.DataProfile.Builder setPreferred(boolean);
+    method @NonNull public android.telephony.data.DataProfile.Builder setProfileId(int);
+    method @NonNull public android.telephony.data.DataProfile.Builder setProtocolType(int);
+    method @NonNull public android.telephony.data.DataProfile.Builder setRoamingProtocolType(int);
+    method @NonNull public android.telephony.data.DataProfile.Builder setSupportedApnTypesBitmask(int);
+    method @NonNull public android.telephony.data.DataProfile.Builder setType(int);
+    method @NonNull public android.telephony.data.DataProfile.Builder setUserName(@NonNull String);
+  }
+
+  public abstract class DataService extends android.app.Service {
+    ctor public DataService();
+    method public android.os.IBinder onBind(android.content.Intent);
+    method @Nullable public abstract android.telephony.data.DataService.DataServiceProvider onCreateDataServiceProvider(int);
+    field public static final int REQUEST_REASON_HANDOVER = 3; // 0x3
+    field public static final int REQUEST_REASON_NORMAL = 1; // 0x1
+    field public static final int REQUEST_REASON_SHUTDOWN = 2; // 0x2
+    field public static final int REQUEST_REASON_UNKNOWN = 0; // 0x0
+    field public static final String SERVICE_INTERFACE = "android.telephony.data.DataService";
+  }
+
+  public abstract class DataService.DataServiceProvider implements java.lang.AutoCloseable {
+    ctor public DataService.DataServiceProvider(int);
+    method public void cancelHandover(int, @NonNull android.telephony.data.DataServiceCallback);
+    method public abstract void close();
+    method public void deactivateDataCall(int, int, @Nullable android.telephony.data.DataServiceCallback);
+    method public final int getSlotIndex();
+    method public final void notifyDataCallListChanged(java.util.List<android.telephony.data.DataCallResponse>);
+    method public void requestDataCallList(@NonNull android.telephony.data.DataServiceCallback);
+    method public void setDataProfile(@NonNull java.util.List<android.telephony.data.DataProfile>, boolean, @NonNull android.telephony.data.DataServiceCallback);
+    method public void setInitialAttachApn(@NonNull android.telephony.data.DataProfile, boolean, @NonNull android.telephony.data.DataServiceCallback);
+    method public void setupDataCall(int, @NonNull android.telephony.data.DataProfile, boolean, boolean, int, @Nullable android.net.LinkProperties, @NonNull android.telephony.data.DataServiceCallback);
+    method public void setupDataCall(int, @NonNull android.telephony.data.DataProfile, boolean, boolean, int, @Nullable android.net.LinkProperties, @IntRange(from=0, to=15) int, @NonNull android.telephony.data.DataServiceCallback);
+    method public void startHandover(int, @NonNull android.telephony.data.DataServiceCallback);
+  }
+
+  public class DataServiceCallback {
+    method public void onDataCallListChanged(@NonNull java.util.List<android.telephony.data.DataCallResponse>);
+    method public void onDeactivateDataCallComplete(int);
+    method public void onHandoverCancelled(int);
+    method public void onHandoverStarted(int);
+    method public void onRequestDataCallListComplete(int, @NonNull java.util.List<android.telephony.data.DataCallResponse>);
+    method public void onSetDataProfileComplete(int);
+    method public void onSetInitialAttachApnComplete(int);
+    method public void onSetupDataCallComplete(int, @Nullable android.telephony.data.DataCallResponse);
+    field public static final int RESULT_ERROR_BUSY = 3; // 0x3
+    field public static final int RESULT_ERROR_ILLEGAL_STATE = 4; // 0x4
+    field public static final int RESULT_ERROR_INVALID_ARG = 2; // 0x2
+    field public static final int RESULT_ERROR_UNSUPPORTED = 1; // 0x1
+    field public static final int RESULT_SUCCESS = 0; // 0x0
+  }
+
+  public abstract class QualifiedNetworksService extends android.app.Service {
+    ctor public QualifiedNetworksService();
+    method @NonNull public abstract android.telephony.data.QualifiedNetworksService.NetworkAvailabilityProvider onCreateNetworkAvailabilityProvider(int);
+    field public static final String QUALIFIED_NETWORKS_SERVICE_INTERFACE = "android.telephony.data.QualifiedNetworksService";
+  }
+
+  public abstract class QualifiedNetworksService.NetworkAvailabilityProvider implements java.lang.AutoCloseable {
+    ctor public QualifiedNetworksService.NetworkAvailabilityProvider(int);
+    method public abstract void close();
+    method public final int getSlotIndex();
+    method public final void updateQualifiedNetworkTypes(int, @NonNull java.util.List<java.lang.Integer>);
+  }
+
+}
+
+package android.telephony.euicc {
+
+  public final class DownloadableSubscription implements android.os.Parcelable {
+    method public java.util.List<android.telephony.UiccAccessRule> getAccessRules();
+    method @Nullable public String getCarrierName();
+  }
+
+  public static final class DownloadableSubscription.Builder {
+    ctor public DownloadableSubscription.Builder();
+    ctor public DownloadableSubscription.Builder(android.telephony.euicc.DownloadableSubscription);
+    method public android.telephony.euicc.DownloadableSubscription build();
+    method public android.telephony.euicc.DownloadableSubscription.Builder setAccessRules(java.util.List<android.telephony.UiccAccessRule>);
+    method public android.telephony.euicc.DownloadableSubscription.Builder setCarrierName(String);
+    method public android.telephony.euicc.DownloadableSubscription.Builder setConfirmationCode(String);
+    method public android.telephony.euicc.DownloadableSubscription.Builder setEncodedActivationCode(String);
+  }
+
+  public class EuiccCardManager {
+    method public void authenticateServer(String, String, byte[], byte[], byte[], byte[], java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
+    method public void cancelSession(String, byte[], @android.telephony.euicc.EuiccCardManager.CancelReason int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
+    method public void deleteProfile(String, String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
+    method public void disableProfile(String, String, boolean, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
+    method public void listNotifications(String, @android.telephony.euicc.EuiccNotification.Event int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.telephony.euicc.EuiccNotification[]>);
+    method public void loadBoundProfilePackage(String, byte[], java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
+    method public void prepareDownload(String, @Nullable byte[], byte[], byte[], byte[], java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
+    method public void removeNotificationFromList(String, int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
+    method public void requestAllProfiles(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.service.euicc.EuiccProfileInfo[]>);
+    method public void requestDefaultSmdpAddress(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.String>);
+    method public void requestEuiccChallenge(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
+    method public void requestEuiccInfo1(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
+    method public void requestEuiccInfo2(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
+    method public void requestProfile(String, String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.service.euicc.EuiccProfileInfo>);
+    method public void requestRulesAuthTable(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.telephony.euicc.EuiccRulesAuthTable>);
+    method public void requestSmdsAddress(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.String>);
+    method public void resetMemory(String, @android.telephony.euicc.EuiccCardManager.ResetOption int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
+    method public void retrieveNotification(String, int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.telephony.euicc.EuiccNotification>);
+    method public void retrieveNotificationList(String, @android.telephony.euicc.EuiccNotification.Event int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.telephony.euicc.EuiccNotification[]>);
+    method public void setDefaultSmdpAddress(String, String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
+    method public void setNickname(String, String, String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
+    method public void switchToProfile(String, String, boolean, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.service.euicc.EuiccProfileInfo>);
+    field public static final int CANCEL_REASON_END_USER_REJECTED = 0; // 0x0
+    field public static final int CANCEL_REASON_POSTPONED = 1; // 0x1
+    field public static final int CANCEL_REASON_PPR_NOT_ALLOWED = 3; // 0x3
+    field public static final int CANCEL_REASON_TIMEOUT = 2; // 0x2
+    field public static final int RESET_OPTION_DELETE_FIELD_LOADED_TEST_PROFILES = 2; // 0x2
+    field public static final int RESET_OPTION_DELETE_OPERATIONAL_PROFILES = 1; // 0x1
+    field public static final int RESET_OPTION_RESET_DEFAULT_SMDP_ADDRESS = 4; // 0x4
+    field public static final int RESULT_CALLER_NOT_ALLOWED = -3; // 0xfffffffd
+    field public static final int RESULT_EUICC_NOT_FOUND = -2; // 0xfffffffe
+    field public static final int RESULT_OK = 0; // 0x0
+    field public static final int RESULT_UNKNOWN_ERROR = -1; // 0xffffffff
+  }
+
+  @IntDef(prefix={"CANCEL_REASON_"}, value={android.telephony.euicc.EuiccCardManager.CANCEL_REASON_END_USER_REJECTED, android.telephony.euicc.EuiccCardManager.CANCEL_REASON_POSTPONED, android.telephony.euicc.EuiccCardManager.CANCEL_REASON_TIMEOUT, android.telephony.euicc.EuiccCardManager.CANCEL_REASON_PPR_NOT_ALLOWED}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccCardManager.CancelReason {
+  }
+
+  @IntDef(flag=true, prefix={"RESET_OPTION_"}, value={android.telephony.euicc.EuiccCardManager.RESET_OPTION_DELETE_OPERATIONAL_PROFILES, android.telephony.euicc.EuiccCardManager.RESET_OPTION_DELETE_FIELD_LOADED_TEST_PROFILES, android.telephony.euicc.EuiccCardManager.RESET_OPTION_RESET_DEFAULT_SMDP_ADDRESS}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccCardManager.ResetOption {
+  }
+
+  public static interface EuiccCardManager.ResultCallback<T> {
+    method public void onComplete(int, T);
+  }
+
+  public class EuiccManager {
+    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void continueOperation(android.content.Intent, android.os.Bundle);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void eraseSubscriptions(@NonNull android.app.PendingIntent);
+    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void eraseSubscriptions(@android.telephony.euicc.EuiccCardManager.ResetOption int, @NonNull android.app.PendingIntent);
+    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void getDefaultDownloadableSubscriptionList(android.app.PendingIntent);
+    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void getDownloadableSubscriptionMetadata(android.telephony.euicc.DownloadableSubscription, android.app.PendingIntent);
+    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public int getOtaStatus();
+    method @NonNull @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public java.util.List<java.lang.String> getSupportedCountries();
+    method @NonNull @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public java.util.List<java.lang.String> getUnsupportedCountries();
+    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public boolean isSupportedCountry(@NonNull String);
+    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void setSupportedCountries(@NonNull java.util.List<java.lang.String>);
+    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void setUnsupportedCountries(@NonNull java.util.List<java.lang.String>);
+    field public static final String ACTION_DELETE_SUBSCRIPTION_PRIVILEGED = "android.telephony.euicc.action.DELETE_SUBSCRIPTION_PRIVILEGED";
+    field @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public static final String ACTION_OTA_STATUS_CHANGED = "android.telephony.euicc.action.OTA_STATUS_CHANGED";
+    field public static final String ACTION_PROVISION_EMBEDDED_SUBSCRIPTION = "android.telephony.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION";
+    field public static final String ACTION_RENAME_SUBSCRIPTION_PRIVILEGED = "android.telephony.euicc.action.RENAME_SUBSCRIPTION_PRIVILEGED";
+    field public static final String ACTION_TOGGLE_SUBSCRIPTION_PRIVILEGED = "android.telephony.euicc.action.TOGGLE_SUBSCRIPTION_PRIVILEGED";
+    field public static final int EUICC_ACTIVATION_TYPE_ACCOUNT_REQUIRED = 4; // 0x4
+    field public static final int EUICC_ACTIVATION_TYPE_BACKUP = 2; // 0x2
+    field public static final int EUICC_ACTIVATION_TYPE_DEFAULT = 1; // 0x1
+    field public static final int EUICC_ACTIVATION_TYPE_TRANSFER = 3; // 0x3
+    field public static final int EUICC_OTA_FAILED = 2; // 0x2
+    field public static final int EUICC_OTA_IN_PROGRESS = 1; // 0x1
+    field public static final int EUICC_OTA_NOT_NEEDED = 4; // 0x4
+    field public static final int EUICC_OTA_STATUS_UNAVAILABLE = 5; // 0x5
+    field public static final int EUICC_OTA_SUCCEEDED = 3; // 0x3
+    field public static final String EXTRA_ACTIVATION_TYPE = "android.telephony.euicc.extra.ACTIVATION_TYPE";
+    field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_DOWNLOADABLE_SUBSCRIPTIONS = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_DOWNLOADABLE_SUBSCRIPTIONS";
+    field public static final String EXTRA_ENABLE_SUBSCRIPTION = "android.telephony.euicc.extra.ENABLE_SUBSCRIPTION";
+    field public static final String EXTRA_FORCE_PROVISION = "android.telephony.euicc.extra.FORCE_PROVISION";
+    field public static final String EXTRA_FROM_SUBSCRIPTION_ID = "android.telephony.euicc.extra.FROM_SUBSCRIPTION_ID";
+    field public static final String EXTRA_PHYSICAL_SLOT_ID = "android.telephony.euicc.extra.PHYSICAL_SLOT_ID";
+    field public static final String EXTRA_SUBSCRIPTION_ID = "android.telephony.euicc.extra.SUBSCRIPTION_ID";
+    field public static final String EXTRA_SUBSCRIPTION_NICKNAME = "android.telephony.euicc.extra.SUBSCRIPTION_NICKNAME";
+  }
+
+  @IntDef(prefix={"EUICC_OTA_"}, value={android.telephony.euicc.EuiccManager.EUICC_OTA_IN_PROGRESS, android.telephony.euicc.EuiccManager.EUICC_OTA_FAILED, android.telephony.euicc.EuiccManager.EUICC_OTA_SUCCEEDED, android.telephony.euicc.EuiccManager.EUICC_OTA_NOT_NEEDED, android.telephony.euicc.EuiccManager.EUICC_OTA_STATUS_UNAVAILABLE}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccManager.OtaStatus {
+  }
+
+  public final class EuiccNotification implements android.os.Parcelable {
+    ctor public EuiccNotification(int, String, @android.telephony.euicc.EuiccNotification.Event int, @Nullable byte[]);
+    method public int describeContents();
+    method @Nullable public byte[] getData();
+    method @android.telephony.euicc.EuiccNotification.Event public int getEvent();
+    method public int getSeq();
+    method public String getTargetAddr();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @android.telephony.euicc.EuiccNotification.Event public static final int ALL_EVENTS = 15; // 0xf
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.euicc.EuiccNotification> CREATOR;
+    field public static final int EVENT_DELETE = 8; // 0x8
+    field public static final int EVENT_DISABLE = 4; // 0x4
+    field public static final int EVENT_ENABLE = 2; // 0x2
+    field public static final int EVENT_INSTALL = 1; // 0x1
+  }
+
+  @IntDef(flag=true, prefix={"EVENT_"}, value={android.telephony.euicc.EuiccNotification.EVENT_INSTALL, android.telephony.euicc.EuiccNotification.EVENT_ENABLE, android.telephony.euicc.EuiccNotification.EVENT_DISABLE, android.telephony.euicc.EuiccNotification.EVENT_DELETE}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccNotification.Event {
+  }
+
+  public final class EuiccRulesAuthTable implements android.os.Parcelable {
+    method public int describeContents();
+    method public int findIndex(@android.service.euicc.EuiccProfileInfo.PolicyRule int, android.service.carrier.CarrierIdentifier);
+    method public boolean hasPolicyRuleFlag(int, @android.telephony.euicc.EuiccRulesAuthTable.PolicyRuleFlag int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.euicc.EuiccRulesAuthTable> CREATOR;
+    field public static final int POLICY_RULE_FLAG_CONSENT_REQUIRED = 1; // 0x1
+  }
+
+  public static final class EuiccRulesAuthTable.Builder {
+    ctor public EuiccRulesAuthTable.Builder(int);
+    method public android.telephony.euicc.EuiccRulesAuthTable.Builder add(int, java.util.List<android.service.carrier.CarrierIdentifier>, int);
+    method public android.telephony.euicc.EuiccRulesAuthTable build();
+  }
+
+  @IntDef(flag=true, prefix={"POLICY_RULE_FLAG_"}, value={android.telephony.euicc.EuiccRulesAuthTable.POLICY_RULE_FLAG_CONSENT_REQUIRED}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccRulesAuthTable.PolicyRuleFlag {
+  }
+
+}
+
+package android.telephony.ims {
+
+  public final class AudioCodecAttributes implements android.os.Parcelable {
+    ctor public AudioCodecAttributes(float, @NonNull android.util.Range<java.lang.Float>, float, @NonNull android.util.Range<java.lang.Float>);
+    method public int describeContents();
+    method public float getBandwidthKhz();
+    method @NonNull public android.util.Range<java.lang.Float> getBandwidthRangeKhz();
+    method public float getBitrateKbps();
+    method @NonNull public android.util.Range<java.lang.Float> getBitrateRangeKbps();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.AudioCodecAttributes> CREATOR;
+  }
+
+  public interface DelegateMessageCallback {
+    method public void onMessageReceived(@NonNull android.telephony.ims.SipMessage);
+    method public void onMessageSendFailure(@NonNull String, int);
+    method public void onMessageSent(@NonNull String);
+  }
+
+  public final class DelegateRegistrationState implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public java.util.Set<android.telephony.ims.FeatureTagState> getDeregisteredFeatureTags();
+    method @NonNull public java.util.Set<android.telephony.ims.FeatureTagState> getDeregisteringFeatureTags();
+    method @NonNull public java.util.Set<java.lang.String> getRegisteredFeatureTags();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.DelegateRegistrationState> CREATOR;
+    field public static final int DEREGISTERED_REASON_NOT_PROVISIONED = 1; // 0x1
+    field public static final int DEREGISTERED_REASON_NOT_REGISTERED = 2; // 0x2
+    field public static final int DEREGISTERED_REASON_UNKNOWN = 0; // 0x0
+    field public static final int DEREGISTERING_REASON_DESTROY_PENDING = 6; // 0x6
+    field public static final int DEREGISTERING_REASON_FEATURE_TAGS_CHANGING = 5; // 0x5
+    field public static final int DEREGISTERING_REASON_PDN_CHANGE = 3; // 0x3
+    field public static final int DEREGISTERING_REASON_PROVISIONING_CHANGE = 4; // 0x4
+  }
+
+  public static final class DelegateRegistrationState.Builder {
+    ctor public DelegateRegistrationState.Builder();
+    method @NonNull public android.telephony.ims.DelegateRegistrationState.Builder addDeregisteredFeatureTag(@NonNull String, int);
+    method @NonNull public android.telephony.ims.DelegateRegistrationState.Builder addDeregisteringFeatureTag(@NonNull String, int);
+    method @NonNull public android.telephony.ims.DelegateRegistrationState.Builder addRegisteredFeatureTag(@NonNull String);
+    method @NonNull public android.telephony.ims.DelegateRegistrationState.Builder addRegisteredFeatureTags(@NonNull java.util.Set<java.lang.String>);
+    method @NonNull public android.telephony.ims.DelegateRegistrationState build();
+  }
+
+  public final class DelegateRequest implements android.os.Parcelable {
+    ctor public DelegateRequest(@NonNull java.util.Set<java.lang.String>);
+    method public int describeContents();
+    method @NonNull public java.util.Set<java.lang.String> getFeatureTags();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.DelegateRequest> CREATOR;
+  }
+
+  public interface DelegateStateCallback {
+    method public void onCreated(@NonNull android.telephony.ims.stub.SipDelegate, @Nullable java.util.Set<android.telephony.ims.FeatureTagState>);
+    method public void onDestroyed(int);
+    method public void onFeatureTagRegistrationChanged(@NonNull android.telephony.ims.DelegateRegistrationState);
+    method public void onImsConfigurationChanged(@NonNull android.telephony.ims.SipDelegateImsConfiguration);
+  }
+
+  public final class FeatureTagState implements android.os.Parcelable {
+    ctor public FeatureTagState(@NonNull String, int);
+    method public int describeContents();
+    method @NonNull public String getFeatureTag();
+    method public int getState();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.FeatureTagState> CREATOR;
+  }
+
+  public final class ImsCallForwardInfo implements android.os.Parcelable {
+    ctor public ImsCallForwardInfo(int, int, int, int, @NonNull String, int);
+    method public int describeContents();
+    method public int getCondition();
+    method public String getNumber();
+    method public int getServiceClass();
+    method public int getStatus();
+    method public int getTimeSeconds();
+    method public int getToA();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int CDIV_CF_REASON_ALL = 4; // 0x4
+    field public static final int CDIV_CF_REASON_ALL_CONDITIONAL = 5; // 0x5
+    field public static final int CDIV_CF_REASON_BUSY = 1; // 0x1
+    field public static final int CDIV_CF_REASON_NOT_LOGGED_IN = 6; // 0x6
+    field public static final int CDIV_CF_REASON_NOT_REACHABLE = 3; // 0x3
+    field public static final int CDIV_CF_REASON_NO_REPLY = 2; // 0x2
+    field public static final int CDIV_CF_REASON_UNCONDITIONAL = 0; // 0x0
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsCallForwardInfo> CREATOR;
+    field public static final int STATUS_ACTIVE = 1; // 0x1
+    field public static final int STATUS_NOT_ACTIVE = 0; // 0x0
+    field public static final int TYPE_OF_ADDRESS_INTERNATIONAL = 145; // 0x91
+    field public static final int TYPE_OF_ADDRESS_UNKNOWN = 129; // 0x81
+  }
+
+  public final class ImsCallProfile implements android.os.Parcelable {
+    ctor public ImsCallProfile();
+    ctor public ImsCallProfile(int, int);
+    ctor public ImsCallProfile(int, int, android.os.Bundle, android.telephony.ims.ImsStreamMediaProfile);
+    method public int describeContents();
+    method @NonNull public java.util.Set<android.telephony.ims.RtpHeaderExtensionType> getAcceptedRtpHeaderExtensionTypes();
+    method public String getCallExtra(String);
+    method public String getCallExtra(String, String);
+    method public boolean getCallExtraBoolean(String);
+    method public boolean getCallExtraBoolean(String, boolean);
+    method public int getCallExtraInt(String);
+    method public int getCallExtraInt(String, int);
+    method public android.os.Bundle getCallExtras();
+    method public int getCallType();
+    method public static int getCallTypeFromVideoState(int);
+    method public int getCallerNumberVerificationStatus();
+    method public int getEmergencyCallRouting();
+    method public int getEmergencyServiceCategories();
+    method @NonNull public java.util.List<java.lang.String> getEmergencyUrns();
+    method public android.telephony.ims.ImsStreamMediaProfile getMediaProfile();
+    method @NonNull public android.os.Bundle getProprietaryCallExtras();
+    method public int getRestrictCause();
+    method public int getServiceType();
+    method public static int getVideoStateFromCallType(int);
+    method public static int getVideoStateFromImsCallProfile(android.telephony.ims.ImsCallProfile);
+    method public boolean hasKnownUserIntentEmergency();
+    method public boolean isEmergencyCallTesting();
+    method public boolean isVideoCall();
+    method public boolean isVideoPaused();
+    method public static int presentationToOir(int);
+    method public void setAcceptedRtpHeaderExtensionTypes(@NonNull java.util.Set<android.telephony.ims.RtpHeaderExtensionType>);
+    method public void setCallExtra(String, String);
+    method public void setCallExtraBoolean(String, boolean);
+    method public void setCallExtraInt(String, int);
+    method public void setCallRestrictCause(int);
+    method public void setCallerNumberVerificationStatus(int);
+    method public void setEmergencyCallRouting(int);
+    method public void setEmergencyCallTesting(boolean);
+    method public void setEmergencyServiceCategories(int);
+    method public void setEmergencyUrns(@NonNull java.util.List<java.lang.String>);
+    method public void setHasKnownUserIntentEmergency(boolean);
+    method public void updateCallExtras(android.telephony.ims.ImsCallProfile);
+    method public void updateCallType(android.telephony.ims.ImsCallProfile);
+    method public void updateMediaProfile(android.telephony.ims.ImsCallProfile);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int CALL_RESTRICT_CAUSE_DISABLED = 2; // 0x2
+    field public static final int CALL_RESTRICT_CAUSE_HD = 3; // 0x3
+    field public static final int CALL_RESTRICT_CAUSE_NONE = 0; // 0x0
+    field public static final int CALL_RESTRICT_CAUSE_RAT = 1; // 0x1
+    field public static final int CALL_TYPE_VIDEO_N_VOICE = 3; // 0x3
+    field public static final int CALL_TYPE_VOICE = 2; // 0x2
+    field public static final int CALL_TYPE_VOICE_N_VIDEO = 1; // 0x1
+    field public static final int CALL_TYPE_VS = 8; // 0x8
+    field public static final int CALL_TYPE_VS_RX = 10; // 0xa
+    field public static final int CALL_TYPE_VS_TX = 9; // 0x9
+    field public static final int CALL_TYPE_VT = 4; // 0x4
+    field public static final int CALL_TYPE_VT_NODIR = 7; // 0x7
+    field public static final int CALL_TYPE_VT_RX = 6; // 0x6
+    field public static final int CALL_TYPE_VT_TX = 5; // 0x5
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsCallProfile> CREATOR;
+    field public static final int DIALSTRING_NORMAL = 0; // 0x0
+    field public static final int DIALSTRING_SS_CONF = 1; // 0x1
+    field public static final int DIALSTRING_USSD = 2; // 0x2
+    field public static final String EXTRA_ADDITIONAL_CALL_INFO = "AdditionalCallInfo";
+    field public static final String EXTRA_ADDITIONAL_SIP_INVITE_FIELDS = "android.telephony.ims.extra.ADDITIONAL_SIP_INVITE_FIELDS";
+    field public static final String EXTRA_CALL_DISCONNECT_CAUSE = "android.telephony.ims.extra.CALL_DISCONNECT_CAUSE";
+    field public static final String EXTRA_CALL_NETWORK_TYPE = "android.telephony.ims.extra.CALL_NETWORK_TYPE";
+    field @Deprecated public static final String EXTRA_CALL_RAT_TYPE = "CallRadioTech";
+    field public static final String EXTRA_CHILD_NUMBER = "ChildNum";
+    field public static final String EXTRA_CNA = "cna";
+    field public static final String EXTRA_CNAP = "cnap";
+    field public static final String EXTRA_CODEC = "Codec";
+    field public static final String EXTRA_DIALSTRING = "dialstring";
+    field public static final String EXTRA_DISPLAY_TEXT = "DisplayText";
+    field public static final String EXTRA_EMERGENCY_CALL = "e_call";
+    field public static final String EXTRA_FORWARDED_NUMBER = "android.telephony.ims.extra.FORWARDED_NUMBER";
+    field public static final String EXTRA_IS_CALL_PULL = "CallPull";
+    field public static final String EXTRA_OI = "oi";
+    field public static final String EXTRA_OIR = "oir";
+    field public static final String EXTRA_REMOTE_URI = "remote_uri";
+    field public static final String EXTRA_USSD = "ussd";
+    field public static final int OIR_DEFAULT = 0; // 0x0
+    field public static final int OIR_PRESENTATION_NOT_RESTRICTED = 2; // 0x2
+    field public static final int OIR_PRESENTATION_PAYPHONE = 4; // 0x4
+    field public static final int OIR_PRESENTATION_RESTRICTED = 1; // 0x1
+    field public static final int OIR_PRESENTATION_UNKNOWN = 3; // 0x3
+    field public static final int SERVICE_TYPE_EMERGENCY = 2; // 0x2
+    field public static final int SERVICE_TYPE_NONE = 0; // 0x0
+    field public static final int SERVICE_TYPE_NORMAL = 1; // 0x1
+    field public static final int VERIFICATION_STATUS_FAILED = 2; // 0x2
+    field public static final int VERIFICATION_STATUS_NOT_VERIFIED = 0; // 0x0
+    field public static final int VERIFICATION_STATUS_PASSED = 1; // 0x1
+  }
+
+  public class ImsCallSessionListener {
+    method public void callQualityChanged(@NonNull android.telephony.CallQuality);
+    method public void callSessionConferenceExtendFailed(android.telephony.ims.ImsReasonInfo);
+    method public void callSessionConferenceExtendReceived(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile);
+    method public void callSessionConferenceExtended(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile);
+    method public void callSessionConferenceStateUpdated(android.telephony.ims.ImsConferenceState);
+    method public void callSessionDtmfReceived(char);
+    method @Deprecated public void callSessionHandover(int, int, android.telephony.ims.ImsReasonInfo);
+    method @Deprecated public void callSessionHandoverFailed(int, int, android.telephony.ims.ImsReasonInfo);
+    method public void callSessionHeld(android.telephony.ims.ImsCallProfile);
+    method public void callSessionHoldFailed(android.telephony.ims.ImsReasonInfo);
+    method public void callSessionHoldReceived(android.telephony.ims.ImsCallProfile);
+    method public void callSessionInitiated(android.telephony.ims.ImsCallProfile);
+    method public void callSessionInitiatedFailed(android.telephony.ims.ImsReasonInfo);
+    method public void callSessionInviteParticipantsRequestDelivered();
+    method public void callSessionInviteParticipantsRequestFailed(android.telephony.ims.ImsReasonInfo);
+    method @Deprecated public void callSessionMayHandover(int, int);
+    method public void callSessionMergeComplete(android.telephony.ims.stub.ImsCallSessionImplBase);
+    method public void callSessionMergeFailed(android.telephony.ims.ImsReasonInfo);
+    method public void callSessionMergeStarted(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile);
+    method public void callSessionMultipartyStateChanged(boolean);
+    method public void callSessionProgressing(android.telephony.ims.ImsStreamMediaProfile);
+    method public void callSessionRemoveParticipantsRequestDelivered();
+    method public void callSessionRemoveParticipantsRequestFailed(android.telephony.ims.ImsReasonInfo);
+    method public void callSessionResumeFailed(android.telephony.ims.ImsReasonInfo);
+    method public void callSessionResumeReceived(android.telephony.ims.ImsCallProfile);
+    method public void callSessionResumed(android.telephony.ims.ImsCallProfile);
+    method public void callSessionRtpHeaderExtensionsReceived(@NonNull java.util.Set<android.telephony.ims.RtpHeaderExtension>);
+    method public void callSessionRttAudioIndicatorChanged(@NonNull android.telephony.ims.ImsStreamMediaProfile);
+    method public void callSessionRttMessageReceived(String);
+    method public void callSessionRttModifyRequestReceived(android.telephony.ims.ImsCallProfile);
+    method public void callSessionRttModifyResponseReceived(int);
+    method public void callSessionSuppServiceReceived(android.telephony.ims.ImsSuppServiceNotification);
+    method public void callSessionTerminated(android.telephony.ims.ImsReasonInfo);
+    method public void callSessionTtyModeReceived(int);
+    method public void callSessionUpdateFailed(android.telephony.ims.ImsReasonInfo);
+    method public void callSessionUpdateReceived(android.telephony.ims.ImsCallProfile);
+    method public void callSessionUpdated(android.telephony.ims.ImsCallProfile);
+    method public void callSessionUssdMessageReceived(int, String);
+    method public void onHandover(int, int, @Nullable android.telephony.ims.ImsReasonInfo);
+    method public void onHandoverFailed(int, int, @NonNull android.telephony.ims.ImsReasonInfo);
+    method public void onMayHandover(int, int);
+  }
+
+  public final class ImsConferenceState implements android.os.Parcelable {
+    method public int describeContents();
+    method public static int getConnectionStateForStatus(String);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsConferenceState> CREATOR;
+    field public static final String DISPLAY_TEXT = "display-text";
+    field public static final String ENDPOINT = "endpoint";
+    field public static final String SIP_STATUS_CODE = "sipstatuscode";
+    field public static final String STATUS = "status";
+    field public static final String STATUS_ALERTING = "alerting";
+    field public static final String STATUS_CONNECTED = "connected";
+    field public static final String STATUS_CONNECT_FAIL = "connect-fail";
+    field public static final String STATUS_DIALING_IN = "dialing-in";
+    field public static final String STATUS_DIALING_OUT = "dialing-out";
+    field public static final String STATUS_DISCONNECTED = "disconnected";
+    field public static final String STATUS_DISCONNECTING = "disconnecting";
+    field public static final String STATUS_MUTED_VIA_FOCUS = "muted-via-focus";
+    field public static final String STATUS_ON_HOLD = "on-hold";
+    field public static final String STATUS_PENDING = "pending";
+    field public static final String STATUS_SEND_ONLY = "sendonly";
+    field public static final String STATUS_SEND_RECV = "sendrecv";
+    field public static final String USER = "user";
+    field public final java.util.HashMap<java.lang.String,android.os.Bundle> mParticipants;
+  }
+
+  public final class ImsException extends java.lang.Exception {
+    ctor public ImsException(@Nullable String);
+    ctor public ImsException(@Nullable String, int);
+    ctor public ImsException(@Nullable String, int, @Nullable Throwable);
+  }
+
+  public final class ImsExternalCallState implements android.os.Parcelable {
+    ctor public ImsExternalCallState(@NonNull String, @NonNull android.net.Uri, @Nullable android.net.Uri, boolean, int, int, boolean);
+    method public int describeContents();
+    method @NonNull public android.net.Uri getAddress();
+    method public int getCallId();
+    method public int getCallState();
+    method public int getCallType();
+    method @Nullable public android.net.Uri getLocalAddress();
+    method public boolean isCallHeld();
+    method public boolean isCallPullable();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int CALL_STATE_CONFIRMED = 1; // 0x1
+    field public static final int CALL_STATE_TERMINATED = 2; // 0x2
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsExternalCallState> CREATOR;
+  }
+
+  public class ImsManager {
+    method @NonNull public android.telephony.ims.SipDelegateManager getSipDelegateManager(int);
+  }
+
+  public class ImsMmTelManager implements android.telephony.ims.RegistrationManager {
+    method @Deprecated @NonNull @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public static android.telephony.ims.ImsMmTelManager createForSubscriptionId(int);
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getFeatureState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>) throws android.telephony.ims.ImsException;
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getRegistrationState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getVoWiFiRoamingModeSetting();
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isAvailable(int, int);
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isCapable(int, int);
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void isSupported(int, int, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>) throws android.telephony.ims.ImsException;
+    method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void registerImsRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ImsMmTelManager.RegistrationCallback) throws android.telephony.ims.ImsException;
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setAdvancedCallingSettingEnabled(boolean);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setRttCapabilitySetting(boolean);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiModeSetting(int);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiNonPersistent(boolean, int);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiRoamingModeSetting(int);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiRoamingSettingEnabled(boolean);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiSettingEnabled(boolean);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVtSettingEnabled(boolean);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.ImsMmTelManager.RegistrationCallback);
+  }
+
+  @Deprecated public static class ImsMmTelManager.RegistrationCallback extends android.telephony.ims.RegistrationManager.RegistrationCallback {
+    ctor @Deprecated public ImsMmTelManager.RegistrationCallback();
+  }
+
+  public final class ImsReasonInfo implements android.os.Parcelable {
+    field public static final String EXTRA_MSG_SERVICE_NOT_AUTHORIZED = "Forbidden. Not Authorized for Service";
+  }
+
+  public class ImsService extends android.app.Service {
+    ctor public ImsService();
+    method public android.telephony.ims.feature.MmTelFeature createMmTelFeature(int);
+    method public android.telephony.ims.feature.RcsFeature createRcsFeature(int);
+    method public void disableIms(int);
+    method public void enableIms(int);
+    method public android.telephony.ims.stub.ImsConfigImplBase getConfig(int);
+    method public long getImsServiceCapabilities();
+    method public android.telephony.ims.stub.ImsRegistrationImplBase getRegistration(int);
+    method @Nullable public android.telephony.ims.stub.SipTransportImplBase getSipTransport(int);
+    method public final void onUpdateSupportedImsFeatures(android.telephony.ims.stub.ImsFeatureConfiguration) throws android.os.RemoteException;
+    method public android.telephony.ims.stub.ImsFeatureConfiguration querySupportedImsFeatures();
+    method public void readyForFeatureCreation();
+    field public static final long CAPABILITY_SIP_DELEGATE_CREATION = 2L; // 0x2L
+  }
+
+  public final class ImsSsData implements android.os.Parcelable {
+    ctor public ImsSsData(int, int, int, int, int);
+    method public int describeContents();
+    method @Nullable public java.util.List<android.telephony.ims.ImsCallForwardInfo> getCallForwardInfo();
+    method public int getRequestType();
+    method public int getResult();
+    method public int getServiceClass();
+    method public int getServiceType();
+    method @NonNull public java.util.List<android.telephony.ims.ImsSsInfo> getSuppServiceInfo();
+    method public int getTeleserviceType();
+    method public boolean isTypeBarring();
+    method public boolean isTypeCf();
+    method public boolean isTypeClip();
+    method public boolean isTypeClir();
+    method public boolean isTypeColp();
+    method public boolean isTypeColr();
+    method public boolean isTypeCw();
+    method public boolean isTypeIcb();
+    method public boolean isTypeInterrogation();
+    method public boolean isTypeUnConditional();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsSsData> CREATOR;
+    field public static final int RESULT_SUCCESS = 0; // 0x0
+    field public static final int SERVICE_CLASS_DATA = 2; // 0x2
+    field public static final int SERVICE_CLASS_DATA_CIRCUIT_ASYNC = 32; // 0x20
+    field public static final int SERVICE_CLASS_DATA_CIRCUIT_SYNC = 16; // 0x10
+    field public static final int SERVICE_CLASS_DATA_PACKET_ACCESS = 64; // 0x40
+    field public static final int SERVICE_CLASS_DATA_PAD = 128; // 0x80
+    field public static final int SERVICE_CLASS_FAX = 4; // 0x4
+    field public static final int SERVICE_CLASS_NONE = 0; // 0x0
+    field public static final int SERVICE_CLASS_SMS = 8; // 0x8
+    field public static final int SERVICE_CLASS_VOICE = 1; // 0x1
+    field public static final int SS_ACTIVATION = 0; // 0x0
+    field public static final int SS_ALL_BARRING = 18; // 0x12
+    field public static final int SS_ALL_DATA_TELESERVICES = 3; // 0x3
+    field public static final int SS_ALL_TELESERVICES_EXCEPT_SMS = 5; // 0x5
+    field public static final int SS_ALL_TELESEVICES = 1; // 0x1
+    field public static final int SS_ALL_TELE_AND_BEARER_SERVICES = 0; // 0x0
+    field public static final int SS_BAIC = 16; // 0x10
+    field public static final int SS_BAIC_ROAMING = 17; // 0x11
+    field public static final int SS_BAOC = 13; // 0xd
+    field public static final int SS_BAOIC = 14; // 0xe
+    field public static final int SS_BAOIC_EXC_HOME = 15; // 0xf
+    field public static final int SS_CFU = 0; // 0x0
+    field public static final int SS_CFUT = 6; // 0x6
+    field public static final int SS_CF_ALL = 4; // 0x4
+    field public static final int SS_CF_ALL_CONDITIONAL = 5; // 0x5
+    field public static final int SS_CF_BUSY = 1; // 0x1
+    field public static final int SS_CF_NOT_REACHABLE = 3; // 0x3
+    field public static final int SS_CF_NO_REPLY = 2; // 0x2
+    field public static final int SS_CLIP = 7; // 0x7
+    field public static final int SS_CLIR = 8; // 0x8
+    field public static final int SS_CNAP = 11; // 0xb
+    field public static final int SS_COLP = 9; // 0x9
+    field public static final int SS_COLR = 10; // 0xa
+    field public static final int SS_DEACTIVATION = 1; // 0x1
+    field public static final int SS_ERASURE = 4; // 0x4
+    field public static final int SS_INCOMING_BARRING = 20; // 0x14
+    field public static final int SS_INCOMING_BARRING_ANONYMOUS = 22; // 0x16
+    field public static final int SS_INCOMING_BARRING_DN = 21; // 0x15
+    field public static final int SS_INTERROGATION = 2; // 0x2
+    field public static final int SS_OUTGOING_BARRING = 19; // 0x13
+    field public static final int SS_REGISTRATION = 3; // 0x3
+    field public static final int SS_SMS_SERVICES = 4; // 0x4
+    field public static final int SS_TELEPHONY = 2; // 0x2
+    field public static final int SS_WAIT = 12; // 0xc
+  }
+
+  public static final class ImsSsData.Builder {
+    ctor public ImsSsData.Builder(int, int, int, int, int);
+    method @NonNull public android.telephony.ims.ImsSsData build();
+    method @NonNull public android.telephony.ims.ImsSsData.Builder setCallForwardingInfo(@NonNull java.util.List<android.telephony.ims.ImsCallForwardInfo>);
+    method @NonNull public android.telephony.ims.ImsSsData.Builder setSuppServiceInfo(@NonNull java.util.List<android.telephony.ims.ImsSsInfo>);
+  }
+
+  public final class ImsSsInfo implements android.os.Parcelable {
+    ctor @Deprecated public ImsSsInfo(int, @Nullable String);
+    method public int describeContents();
+    method public int getClirInterrogationStatus();
+    method public int getClirOutgoingState();
+    method @Deprecated public String getIcbNum();
+    method @Nullable public String getIncomingCommunicationBarringNumber();
+    method public int getProvisionStatus();
+    method public int getStatus();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int CLIR_OUTGOING_DEFAULT = 0; // 0x0
+    field public static final int CLIR_OUTGOING_INVOCATION = 1; // 0x1
+    field public static final int CLIR_OUTGOING_SUPPRESSION = 2; // 0x2
+    field public static final int CLIR_STATUS_NOT_PROVISIONED = 0; // 0x0
+    field public static final int CLIR_STATUS_PROVISIONED_PERMANENT = 1; // 0x1
+    field public static final int CLIR_STATUS_TEMPORARILY_ALLOWED = 4; // 0x4
+    field public static final int CLIR_STATUS_TEMPORARILY_RESTRICTED = 3; // 0x3
+    field public static final int CLIR_STATUS_UNKNOWN = 2; // 0x2
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsSsInfo> CREATOR;
+    field public static final int DISABLED = 0; // 0x0
+    field public static final int ENABLED = 1; // 0x1
+    field public static final int NOT_REGISTERED = -1; // 0xffffffff
+    field public static final int SERVICE_NOT_PROVISIONED = 0; // 0x0
+    field public static final int SERVICE_PROVISIONED = 1; // 0x1
+    field public static final int SERVICE_PROVISIONING_UNKNOWN = -1; // 0xffffffff
+  }
+
+  public static final class ImsSsInfo.Builder {
+    ctor public ImsSsInfo.Builder(int);
+    method @NonNull public android.telephony.ims.ImsSsInfo build();
+    method @NonNull public android.telephony.ims.ImsSsInfo.Builder setClirInterrogationStatus(int);
+    method @NonNull public android.telephony.ims.ImsSsInfo.Builder setClirOutgoingState(int);
+    method @NonNull public android.telephony.ims.ImsSsInfo.Builder setIncomingCommunicationBarringNumber(@NonNull String);
+    method @NonNull public android.telephony.ims.ImsSsInfo.Builder setProvisionStatus(int);
+  }
+
+  public final class ImsStreamMediaProfile implements android.os.Parcelable {
+    ctor public ImsStreamMediaProfile(int, int, int, int, int);
+    method public void copyFrom(android.telephony.ims.ImsStreamMediaProfile);
+    method public int describeContents();
+    method @Nullable public android.telephony.ims.AudioCodecAttributes getAudioCodecAttributes();
+    method public int getAudioDirection();
+    method public int getAudioQuality();
+    method public int getRttMode();
+    method public int getVideoDirection();
+    method public int getVideoQuality();
+    method public boolean isReceivingRttAudio();
+    method public boolean isRttCall();
+    method public void setAudioCodecAttributes(@NonNull android.telephony.ims.AudioCodecAttributes);
+    method public void setReceivingRttAudio(boolean);
+    method public void setRttMode(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int AUDIO_QUALITY_AMR = 1; // 0x1
+    field public static final int AUDIO_QUALITY_AMR_WB = 2; // 0x2
+    field public static final int AUDIO_QUALITY_EVRC = 4; // 0x4
+    field public static final int AUDIO_QUALITY_EVRC_B = 5; // 0x5
+    field public static final int AUDIO_QUALITY_EVRC_NW = 7; // 0x7
+    field public static final int AUDIO_QUALITY_EVRC_WB = 6; // 0x6
+    field public static final int AUDIO_QUALITY_EVS_FB = 20; // 0x14
+    field public static final int AUDIO_QUALITY_EVS_NB = 17; // 0x11
+    field public static final int AUDIO_QUALITY_EVS_SWB = 19; // 0x13
+    field public static final int AUDIO_QUALITY_EVS_WB = 18; // 0x12
+    field public static final int AUDIO_QUALITY_G711A = 13; // 0xd
+    field public static final int AUDIO_QUALITY_G711AB = 15; // 0xf
+    field public static final int AUDIO_QUALITY_G711U = 11; // 0xb
+    field public static final int AUDIO_QUALITY_G722 = 14; // 0xe
+    field public static final int AUDIO_QUALITY_G723 = 12; // 0xc
+    field public static final int AUDIO_QUALITY_G729 = 16; // 0x10
+    field public static final int AUDIO_QUALITY_GSM_EFR = 8; // 0x8
+    field public static final int AUDIO_QUALITY_GSM_FR = 9; // 0x9
+    field public static final int AUDIO_QUALITY_GSM_HR = 10; // 0xa
+    field public static final int AUDIO_QUALITY_NONE = 0; // 0x0
+    field public static final int AUDIO_QUALITY_QCELP13K = 3; // 0x3
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsStreamMediaProfile> CREATOR;
+    field public static final int DIRECTION_INACTIVE = 0; // 0x0
+    field public static final int DIRECTION_INVALID = -1; // 0xffffffff
+    field public static final int DIRECTION_RECEIVE = 1; // 0x1
+    field public static final int DIRECTION_SEND = 2; // 0x2
+    field public static final int DIRECTION_SEND_RECEIVE = 3; // 0x3
+    field public static final int RTT_MODE_DISABLED = 0; // 0x0
+    field public static final int RTT_MODE_FULL = 1; // 0x1
+    field public static final int VIDEO_QUALITY_NONE = 0; // 0x0
+    field public static final int VIDEO_QUALITY_QCIF = 1; // 0x1
+    field public static final int VIDEO_QUALITY_QVGA_LANDSCAPE = 2; // 0x2
+    field public static final int VIDEO_QUALITY_QVGA_PORTRAIT = 4; // 0x4
+    field public static final int VIDEO_QUALITY_VGA_LANDSCAPE = 8; // 0x8
+    field public static final int VIDEO_QUALITY_VGA_PORTRAIT = 16; // 0x10
+  }
+
+  public final class ImsSuppServiceNotification implements android.os.Parcelable {
+    ctor public ImsSuppServiceNotification(int, int, int, int, String, String[]);
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsSuppServiceNotification> CREATOR;
+    field public final int code;
+    field public final String[] history;
+    field public final int index;
+    field public final int notificationType;
+    field public final String number;
+    field public final int type;
+  }
+
+  public class ImsUtListener {
+    method public void onLineIdentificationSupplementaryServiceResponse(int, @NonNull android.telephony.ims.ImsSsInfo);
+    method public void onSupplementaryServiceIndication(android.telephony.ims.ImsSsData);
+    method public void onUtConfigurationCallBarringQueried(int, android.telephony.ims.ImsSsInfo[]);
+    method public void onUtConfigurationCallForwardQueried(int, android.telephony.ims.ImsCallForwardInfo[]);
+    method public void onUtConfigurationCallWaitingQueried(int, android.telephony.ims.ImsSsInfo[]);
+    method @Deprecated public void onUtConfigurationQueried(int, android.os.Bundle);
+    method public void onUtConfigurationQueryFailed(int, android.telephony.ims.ImsReasonInfo);
+    method public void onUtConfigurationUpdateFailed(int, android.telephony.ims.ImsReasonInfo);
+    method public void onUtConfigurationUpdated(int);
+    field @Deprecated public static final String BUNDLE_KEY_CLIR = "queryClir";
+    field @Deprecated public static final String BUNDLE_KEY_SSINFO = "imsSsInfo";
+  }
+
+  public abstract class ImsVideoCallProvider {
+    ctor public ImsVideoCallProvider();
+    method public void changeCallDataUsage(long);
+    method public void changeCameraCapabilities(android.telecom.VideoProfile.CameraCapabilities);
+    method public void changePeerDimensions(int, int);
+    method public void changeVideoQuality(int);
+    method public void handleCallSessionEvent(int);
+    method public abstract void onRequestCallDataUsage();
+    method public abstract void onRequestCameraCapabilities();
+    method public abstract void onSendSessionModifyRequest(android.telecom.VideoProfile, android.telecom.VideoProfile);
+    method public abstract void onSendSessionModifyResponse(android.telecom.VideoProfile);
+    method public abstract void onSetCamera(String);
+    method public void onSetCamera(String, int);
+    method public abstract void onSetDeviceOrientation(int);
+    method public abstract void onSetDisplaySurface(android.view.Surface);
+    method public abstract void onSetPauseImage(android.net.Uri);
+    method public abstract void onSetPreviewSurface(android.view.Surface);
+    method public abstract void onSetZoom(float);
+    method public void receiveSessionModifyRequest(android.telecom.VideoProfile);
+    method public void receiveSessionModifyResponse(int, android.telecom.VideoProfile, android.telecom.VideoProfile);
+  }
+
+  public class ProvisioningManager {
+    method @NonNull public static android.telephony.ims.ProvisioningManager createForSubscriptionId(int);
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public int getProvisioningIntValue(int);
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public boolean getProvisioningStatusForCapability(int, int);
+    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public String getProvisioningStringValue(int);
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public boolean getRcsProvisioningStatusForCapability(int);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void notifyRcsAutoConfigurationReceived(@NonNull byte[], boolean);
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void registerProvisioningChangedCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ProvisioningManager.Callback) throws android.telephony.ims.ImsException;
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public int setProvisioningIntValue(int, int);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public void setProvisioningStatusForCapability(int, int, boolean);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public int setProvisioningStringValue(int, @NonNull String);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public void setRcsProvisioningStatusForCapability(int, boolean);
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void unregisterProvisioningChangedCallback(@NonNull android.telephony.ims.ProvisioningManager.Callback);
+    field public static final int KEY_VOICE_OVER_WIFI_ENTITLEMENT_ID = 67; // 0x43
+    field public static final int KEY_VOICE_OVER_WIFI_MODE_OVERRIDE = 27; // 0x1b
+    field public static final int KEY_VOICE_OVER_WIFI_ROAMING_ENABLED_OVERRIDE = 26; // 0x1a
+    field public static final int PROVISIONING_VALUE_DISABLED = 0; // 0x0
+    field public static final int PROVISIONING_VALUE_ENABLED = 1; // 0x1
+    field public static final String STRING_QUERY_RESULT_ERROR_GENERIC = "STRING_QUERY_RESULT_ERROR_GENERIC";
+    field public static final String STRING_QUERY_RESULT_ERROR_NOT_READY = "STRING_QUERY_RESULT_ERROR_NOT_READY";
+  }
+
+  public static class ProvisioningManager.Callback {
+    ctor public ProvisioningManager.Callback();
+    method public void onProvisioningIntChanged(int, int);
+    method public void onProvisioningStringChanged(int, @NonNull String);
+  }
+
+  public class RcsUceAdapter {
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setUceSettingEnabled(boolean) throws android.telephony.ims.ImsException;
+  }
+
+  public final class RtpHeaderExtension implements android.os.Parcelable {
+    ctor public RtpHeaderExtension(@IntRange(from=1, to=14) int, @NonNull byte[]);
+    method public int describeContents();
+    method @NonNull public byte[] getExtensionData();
+    method @IntRange(from=1, to=14) public int getLocalIdentifier();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.RtpHeaderExtension> CREATOR;
+  }
+
+  public final class RtpHeaderExtensionType implements android.os.Parcelable {
+    ctor public RtpHeaderExtensionType(@IntRange(from=1, to=14) int, @NonNull android.net.Uri);
+    method public int describeContents();
+    method @IntRange(from=1, to=14) public int getLocalIdentifier();
+    method @NonNull public android.net.Uri getUri();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.RtpHeaderExtensionType> CREATOR;
+  }
+
+  public interface SipDelegateConnection {
+    method public void notifyMessageReceiveError(@NonNull String, int);
+    method public void notifyMessageReceived(@NonNull String);
+    method public void sendMessage(@NonNull android.telephony.ims.SipMessage, long);
+  }
+
+  public final class SipDelegateImsConfiguration implements android.os.Parcelable {
+    method public boolean containsKey(@NonNull String);
+    method @NonNull public android.os.PersistableBundle copyBundle();
+    method public int describeContents();
+    method public boolean getBoolean(@NonNull String, boolean);
+    method public int getInt(@NonNull String, int);
+    method @Nullable public String getString(@NonNull String);
+    method public long getVersion();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.SipDelegateImsConfiguration> CREATOR;
+    field public static final String IPTYPE_IPV4 = "IPV4";
+    field public static final String IPTYPE_IPV6 = "IPV6";
+    field public static final String KEY_SIP_CONFIG_AUTHENTICATION_HEADER_STRING = "sip_config_auhentication_header_string";
+    field public static final String KEY_SIP_CONFIG_AUTHENTICATION_NONCE_STRING = "sip_config_authentication_nonce_string";
+    field public static final String KEY_SIP_CONFIG_HOME_DOMAIN_STRING = "sip_config_home_domain_string";
+    field public static final String KEY_SIP_CONFIG_IMEI_STRING = "sip_config_imei_string";
+    field public static final String KEY_SIP_CONFIG_IPTYPE_STRING = "sip_config_iptype_string";
+    field public static final String KEY_SIP_CONFIG_IS_COMPACT_FORM_ENABLED_BOOL = "sip_config_is_compact_form_enabled_bool";
+    field public static final String KEY_SIP_CONFIG_IS_GRUU_ENABLED_BOOL = "sip_config_is_gruu_enabled_bool";
+    field public static final String KEY_SIP_CONFIG_IS_IPSEC_ENABLED_BOOL = "sip_config_is_ipsec_enabled_bool";
+    field public static final String KEY_SIP_CONFIG_IS_KEEPALIVE_ENABLED_BOOL = "sip_config_is_keepalive_enabled_bool";
+    field public static final String KEY_SIP_CONFIG_IS_NAT_ENABLED_BOOL = "sip_config_is_nat_enabled_bool";
+    field public static final String KEY_SIP_CONFIG_MAX_PAYLOAD_SIZE_ON_UDP_INT = "sip_config_udp_max_payload_size_int";
+    field public static final String KEY_SIP_CONFIG_PATH_HEADER_STRING = "sip_config_path_header_string";
+    field public static final String KEY_SIP_CONFIG_P_ACCESS_NETWORK_INFO_HEADER_STRING = "sip_config_p_access_network_info_header_string";
+    field public static final String KEY_SIP_CONFIG_P_ASSOCIATED_URI_HEADER_STRING = "sip_config_p_associated_uri_header_string";
+    field public static final String KEY_SIP_CONFIG_P_LAST_ACCESS_NETWORK_INFO_HEADER_STRING = "sip_config_p_last_access_network_info_header_string";
+    field public static final String KEY_SIP_CONFIG_SECURITY_VERIFY_HEADER_STRING = "sip_config_security_verify_header_string";
+    field public static final String KEY_SIP_CONFIG_SERVER_DEFAULT_IPADDRESS_STRING = "sip_config_server_default_ipaddress_string";
+    field public static final String KEY_SIP_CONFIG_SERVER_DEFAULT_PORT_INT = "sip_config_server_default_port_int";
+    field public static final String KEY_SIP_CONFIG_SERVER_IPSEC_CLIENT_PORT_INT = "sip_config_server_ipsec_client_port_int";
+    field public static final String KEY_SIP_CONFIG_SERVER_IPSEC_OLD_CLIENT_PORT_INT = "sip_config_server_ipsec_old_client_port_int";
+    field public static final String KEY_SIP_CONFIG_SERVER_IPSEC_SERVER_PORT_INT = "sip_config_server_ipsec_server_port_int";
+    field public static final String KEY_SIP_CONFIG_SERVICE_ROUTE_HEADER_STRING = "sip_config_service_route_header_string";
+    field public static final String KEY_SIP_CONFIG_TRANSPORT_TYPE_STRING = "sip_config_protocol_type_string";
+    field public static final String KEY_SIP_CONFIG_UE_DEFAULT_IPADDRESS_STRING = "sip_config_ue_default_ipaddress_string";
+    field public static final String KEY_SIP_CONFIG_UE_DEFAULT_PORT_INT = "sip_config_ue_default_port_int";
+    field public static final String KEY_SIP_CONFIG_UE_IPSEC_CLIENT_PORT_INT = "sip_config_ue_ipsec_client_port_int";
+    field public static final String KEY_SIP_CONFIG_UE_IPSEC_OLD_CLIENT_PORT_INT = "sip_config_ue_ipsec_old_client_port_int";
+    field public static final String KEY_SIP_CONFIG_UE_IPSEC_SERVER_PORT_INT = "sip_config_ue_ipsec_server_port_int";
+    field public static final String KEY_SIP_CONFIG_UE_PRIVATE_USER_ID_STRING = "sip_config_ue_private_user_id_string";
+    field public static final String KEY_SIP_CONFIG_UE_PUBLIC_GRUU_STRING = "sip_config_ue_public_gruu_string";
+    field public static final String KEY_SIP_CONFIG_UE_PUBLIC_IPADDRESS_WITH_NAT_STRING = "sip_config_ue_public_ipaddress_with_nat_string";
+    field public static final String KEY_SIP_CONFIG_UE_PUBLIC_PORT_WITH_NAT_INT = "sip_config_ue_public_port_with_nat_int";
+    field public static final String KEY_SIP_CONFIG_UE_PUBLIC_USER_ID_STRING = "sip_config_ue_public_user_id_string";
+    field public static final String KEY_SIP_CONFIG_URI_USER_PART_STRING = "sip_config_uri_user_part_string";
+    field public static final String SIP_TRANSPORT_TCP = "TCP";
+    field public static final String SIP_TRANSPORT_UDP = "UDP";
+  }
+
+  public static final class SipDelegateImsConfiguration.Builder {
+    ctor public SipDelegateImsConfiguration.Builder(int);
+    ctor public SipDelegateImsConfiguration.Builder(@NonNull android.telephony.ims.SipDelegateImsConfiguration);
+    method @NonNull public android.telephony.ims.SipDelegateImsConfiguration.Builder addBoolean(@NonNull String, boolean);
+    method @NonNull public android.telephony.ims.SipDelegateImsConfiguration.Builder addInt(@NonNull String, int);
+    method @NonNull public android.telephony.ims.SipDelegateImsConfiguration.Builder addString(@NonNull String, @NonNull String);
+    method @NonNull public android.telephony.ims.SipDelegateImsConfiguration build();
+  }
+
+  public class SipDelegateManager {
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void createSipDelegate(@NonNull android.telephony.ims.DelegateRequest, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.stub.DelegateConnectionStateCallback, @NonNull android.telephony.ims.stub.DelegateConnectionMessageCallback) throws android.telephony.ims.ImsException;
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void destroySipDelegate(@NonNull android.telephony.ims.SipDelegateConnection, int);
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isSupported() throws android.telephony.ims.ImsException;
+    field public static final int DENIED_REASON_INVALID = 4; // 0x4
+    field public static final int DENIED_REASON_IN_USE_BY_ANOTHER_DELEGATE = 1; // 0x1
+    field public static final int DENIED_REASON_NOT_ALLOWED = 2; // 0x2
+    field public static final int DENIED_REASON_SINGLE_REGISTRATION_NOT_ALLOWED = 3; // 0x3
+    field public static final int DENIED_REASON_UNKNOWN = 0; // 0x0
+    field public static final int MESSAGE_FAILURE_REASON_DELEGATE_CLOSED = 2; // 0x2
+    field public static final int MESSAGE_FAILURE_REASON_DELEGATE_DEAD = 1; // 0x1
+    field public static final int MESSAGE_FAILURE_REASON_INTERNAL_DELEGATE_STATE_TRANSITION = 11; // 0xb
+    field public static final int MESSAGE_FAILURE_REASON_INVALID_BODY_CONTENT = 5; // 0x5
+    field public static final int MESSAGE_FAILURE_REASON_INVALID_FEATURE_TAG = 6; // 0x6
+    field public static final int MESSAGE_FAILURE_REASON_INVALID_HEADER_FIELDS = 4; // 0x4
+    field public static final int MESSAGE_FAILURE_REASON_INVALID_START_LINE = 3; // 0x3
+    field public static final int MESSAGE_FAILURE_REASON_NETWORK_NOT_AVAILABLE = 8; // 0x8
+    field public static final int MESSAGE_FAILURE_REASON_NOT_REGISTERED = 9; // 0x9
+    field public static final int MESSAGE_FAILURE_REASON_STALE_IMS_CONFIGURATION = 10; // 0xa
+    field public static final int MESSAGE_FAILURE_REASON_TAG_NOT_ENABLED_FOR_DELEGATE = 7; // 0x7
+    field public static final int MESSAGE_FAILURE_REASON_UNKNOWN = 0; // 0x0
+    field public static final int SIP_DELEGATE_DESTROY_REASON_REQUESTED_BY_APP = 2; // 0x2
+    field public static final int SIP_DELEGATE_DESTROY_REASON_SERVICE_DEAD = 1; // 0x1
+    field public static final int SIP_DELEGATE_DESTROY_REASON_SUBSCRIPTION_TORN_DOWN = 4; // 0x4
+    field public static final int SIP_DELEGATE_DESTROY_REASON_UNKNOWN = 0; // 0x0
+    field public static final int SIP_DELEGATE_DESTROY_REASON_USER_DISABLED_RCS = 3; // 0x3
+  }
+
+  public final class SipMessage implements android.os.Parcelable {
+    ctor public SipMessage(@NonNull String, @NonNull String, @NonNull byte[]);
+    method public int describeContents();
+    method @NonNull public byte[] getContent();
+    method @NonNull public String getHeaderSection();
+    method @NonNull public String getStartLine();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.SipMessage> CREATOR;
+  }
+
+}
+
+package android.telephony.ims.feature {
+
+  public final class CapabilityChangeRequest implements android.os.Parcelable {
+    method public void addCapabilitiesToDisableForTech(int, int);
+    method public void addCapabilitiesToEnableForTech(int, int);
+    method public int describeContents();
+    method public java.util.List<android.telephony.ims.feature.CapabilityChangeRequest.CapabilityPair> getCapabilitiesToDisable();
+    method public java.util.List<android.telephony.ims.feature.CapabilityChangeRequest.CapabilityPair> getCapabilitiesToEnable();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.feature.CapabilityChangeRequest> CREATOR;
+  }
+
+  public static class CapabilityChangeRequest.CapabilityPair {
+    ctor public CapabilityChangeRequest.CapabilityPair(int, int);
+    method public int getCapability();
+    method public int getRadioTech();
+  }
+
+  public abstract class ImsFeature {
+    ctor public ImsFeature();
+    method public abstract void changeEnabledCapabilities(android.telephony.ims.feature.CapabilityChangeRequest, android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy);
+    method public int getFeatureState();
+    method public final int getSlotIndex();
+    method public abstract void onFeatureReady();
+    method public abstract void onFeatureRemoved();
+    method public final void setFeatureState(int);
+    field public static final int CAPABILITY_ERROR_GENERIC = -1; // 0xffffffff
+    field public static final int CAPABILITY_SUCCESS = 0; // 0x0
+    field public static final int FEATURE_EMERGENCY_MMTEL = 0; // 0x0
+    field public static final int FEATURE_MMTEL = 1; // 0x1
+    field public static final int FEATURE_RCS = 2; // 0x2
+    field public static final int STATE_INITIALIZING = 1; // 0x1
+    field public static final int STATE_READY = 2; // 0x2
+    field public static final int STATE_UNAVAILABLE = 0; // 0x0
+  }
+
+  @Deprecated public static class ImsFeature.Capabilities {
+    field @Deprecated protected int mCapabilities;
+  }
+
+  protected static class ImsFeature.CapabilityCallbackProxy {
+    method public void onChangeCapabilityConfigurationError(int, int, int);
+  }
+
+  public class MmTelFeature extends android.telephony.ims.feature.ImsFeature {
+    ctor public MmTelFeature();
+    method public void changeEnabledCapabilities(@NonNull android.telephony.ims.feature.CapabilityChangeRequest, @NonNull android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy);
+    method public void changeOfferedRtpHeaderExtensionTypes(@NonNull java.util.Set<android.telephony.ims.RtpHeaderExtensionType>);
+    method @Nullable public android.telephony.ims.ImsCallProfile createCallProfile(int, int);
+    method @Nullable public android.telephony.ims.stub.ImsCallSessionImplBase createCallSession(@NonNull android.telephony.ims.ImsCallProfile);
+    method @NonNull public android.telephony.ims.stub.ImsEcbmImplBase getEcbm();
+    method @NonNull public android.telephony.ims.stub.ImsMultiEndpointImplBase getMultiEndpoint();
+    method @NonNull public android.telephony.ims.stub.ImsSmsImplBase getSmsImplementation();
+    method @NonNull public android.telephony.ims.stub.ImsUtImplBase getUt();
+    method public final void notifyCapabilitiesStatusChanged(@NonNull android.telephony.ims.feature.MmTelFeature.MmTelCapabilities);
+    method public final void notifyIncomingCall(@NonNull android.telephony.ims.stub.ImsCallSessionImplBase, @NonNull android.os.Bundle);
+    method public final void notifyRejectedCall(@NonNull android.telephony.ims.ImsCallProfile, @NonNull android.telephony.ims.ImsReasonInfo);
+    method public final void notifyVoiceMessageCountUpdate(int);
+    method public void onFeatureReady();
+    method public void onFeatureRemoved();
+    method public boolean queryCapabilityConfiguration(int, int);
+    method @NonNull public final android.telephony.ims.feature.MmTelFeature.MmTelCapabilities queryCapabilityStatus();
+    method public void setUiTtyMode(int, @Nullable android.os.Message);
+    method public int shouldProcessCall(@NonNull String[]);
+    field public static final String EXTRA_IS_UNKNOWN_CALL = "android.telephony.ims.feature.extra.IS_UNKNOWN_CALL";
+    field public static final String EXTRA_IS_USSD = "android.telephony.ims.feature.extra.IS_USSD";
+    field public static final int PROCESS_CALL_CSFB = 1; // 0x1
+    field public static final int PROCESS_CALL_IMS = 0; // 0x0
+  }
+
+  public static class MmTelFeature.MmTelCapabilities extends android.telephony.ims.feature.ImsFeature.Capabilities {
+    ctor public MmTelFeature.MmTelCapabilities();
+    ctor @Deprecated public MmTelFeature.MmTelCapabilities(android.telephony.ims.feature.ImsFeature.Capabilities);
+    ctor public MmTelFeature.MmTelCapabilities(int);
+    method public final void addCapabilities(int);
+    method public final void removeCapabilities(int);
+  }
+
+  public class RcsFeature extends android.telephony.ims.feature.ImsFeature {
+    ctor public RcsFeature();
+    method public void changeEnabledCapabilities(@NonNull android.telephony.ims.feature.CapabilityChangeRequest, @NonNull android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy);
+    method public void onFeatureReady();
+    method public void onFeatureRemoved();
+  }
+
+}
+
+package android.telephony.ims.stub {
+
+  public interface DelegateConnectionMessageCallback {
+    method public void onMessageReceived(@NonNull android.telephony.ims.SipMessage);
+    method public void onMessageSendFailure(@NonNull String, int);
+    method public void onMessageSent(@NonNull String);
+  }
+
+  public interface DelegateConnectionStateCallback {
+    method public void onCreated(@NonNull android.telephony.ims.SipDelegateConnection);
+    method public void onDestroyed(int);
+    method public void onFeatureTagStatusChanged(@NonNull android.telephony.ims.DelegateRegistrationState, @NonNull java.util.Set<android.telephony.ims.FeatureTagState>);
+    method public void onImsConfigurationChanged(@NonNull android.telephony.ims.SipDelegateImsConfiguration);
+  }
+
+  public class ImsCallSessionImplBase implements java.lang.AutoCloseable {
+    ctor public ImsCallSessionImplBase();
+    method public void accept(int, android.telephony.ims.ImsStreamMediaProfile);
+    method public void close();
+    method public void deflect(String);
+    method public void extendToConference(String[]);
+    method public String getCallId();
+    method public android.telephony.ims.ImsCallProfile getCallProfile();
+    method public android.telephony.ims.ImsVideoCallProvider getImsVideoCallProvider();
+    method public android.telephony.ims.ImsCallProfile getLocalCallProfile();
+    method public String getProperty(String);
+    method public android.telephony.ims.ImsCallProfile getRemoteCallProfile();
+    method public int getState();
+    method public void hold(android.telephony.ims.ImsStreamMediaProfile);
+    method public void inviteParticipants(String[]);
+    method public boolean isInCall();
+    method public boolean isMultiparty();
+    method public void merge();
+    method public void reject(int);
+    method public void removeParticipants(String[]);
+    method public void resume(android.telephony.ims.ImsStreamMediaProfile);
+    method public void sendDtmf(char, android.os.Message);
+    method public void sendRtpHeaderExtensions(@NonNull java.util.Set<android.telephony.ims.RtpHeaderExtension>);
+    method public void sendRttMessage(String);
+    method public void sendRttModifyRequest(android.telephony.ims.ImsCallProfile);
+    method public void sendRttModifyResponse(boolean);
+    method public void sendUssd(String);
+    method public void setListener(android.telephony.ims.ImsCallSessionListener);
+    method public void setMute(boolean);
+    method public void start(String, android.telephony.ims.ImsCallProfile);
+    method public void startConference(String[], android.telephony.ims.ImsCallProfile);
+    method public void startDtmf(char);
+    method public void stopDtmf();
+    method public void terminate(int);
+    method public void update(int, android.telephony.ims.ImsStreamMediaProfile);
+    field public static final int USSD_MODE_NOTIFY = 0; // 0x0
+    field public static final int USSD_MODE_REQUEST = 1; // 0x1
+  }
+
+  public static class ImsCallSessionImplBase.State {
+    method public static String toString(int);
+    field public static final int ESTABLISHED = 4; // 0x4
+    field public static final int ESTABLISHING = 3; // 0x3
+    field public static final int IDLE = 0; // 0x0
+    field public static final int INITIATED = 1; // 0x1
+    field public static final int INVALID = -1; // 0xffffffff
+    field public static final int NEGOTIATING = 2; // 0x2
+    field public static final int REESTABLISHING = 6; // 0x6
+    field public static final int RENEGOTIATING = 5; // 0x5
+    field public static final int TERMINATED = 8; // 0x8
+    field public static final int TERMINATING = 7; // 0x7
+  }
+
+  public class ImsConfigImplBase {
+    ctor public ImsConfigImplBase();
+    method public int getConfigInt(int);
+    method public String getConfigString(int);
+    method public final void notifyProvisionedValueChanged(int, int);
+    method public final void notifyProvisionedValueChanged(int, String);
+    method public void notifyRcsAutoConfigurationReceived(@NonNull byte[], boolean);
+    method public int setConfig(int, int);
+    method public int setConfig(int, String);
+    field public static final int CONFIG_RESULT_FAILED = 1; // 0x1
+    field public static final int CONFIG_RESULT_SUCCESS = 0; // 0x0
+    field public static final int CONFIG_RESULT_UNKNOWN = -1; // 0xffffffff
+  }
+
+  public class ImsEcbmImplBase {
+    ctor public ImsEcbmImplBase();
+    method public final void enteredEcbm();
+    method public void exitEmergencyCallbackMode();
+    method public final void exitedEcbm();
+  }
+
+  public final class ImsFeatureConfiguration implements android.os.Parcelable {
+    method public int describeContents();
+    method public java.util.Set<android.telephony.ims.stub.ImsFeatureConfiguration.FeatureSlotPair> getServiceFeatures();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.stub.ImsFeatureConfiguration> CREATOR;
+  }
+
+  public static class ImsFeatureConfiguration.Builder {
+    ctor public ImsFeatureConfiguration.Builder();
+    method public android.telephony.ims.stub.ImsFeatureConfiguration.Builder addFeature(int, int);
+    method public android.telephony.ims.stub.ImsFeatureConfiguration build();
+  }
+
+  public static final class ImsFeatureConfiguration.FeatureSlotPair {
+    ctor public ImsFeatureConfiguration.FeatureSlotPair(int, int);
+    field public final int featureType;
+    field public final int slotId;
+  }
+
+  public class ImsMultiEndpointImplBase {
+    ctor public ImsMultiEndpointImplBase();
+    method public final void onImsExternalCallStateUpdate(java.util.List<android.telephony.ims.ImsExternalCallState>);
+    method public void requestImsExternalCallStateInfo();
+  }
+
+  public class ImsRegistrationImplBase {
+    ctor public ImsRegistrationImplBase();
+    method public final void onDeregistered(android.telephony.ims.ImsReasonInfo);
+    method public final void onRegistered(int);
+    method public final void onRegistering(int);
+    method public final void onSubscriberAssociatedUriChanged(android.net.Uri[]);
+    method public final void onTechnologyChangeFailed(int, android.telephony.ims.ImsReasonInfo);
+    field public static final int REGISTRATION_TECH_IWLAN = 1; // 0x1
+    field public static final int REGISTRATION_TECH_LTE = 0; // 0x0
+    field public static final int REGISTRATION_TECH_NONE = -1; // 0xffffffff
+  }
+
+  public class ImsSmsImplBase {
+    ctor public ImsSmsImplBase();
+    method public void acknowledgeSms(int, @IntRange(from=0, to=65535) int, int);
+    method public void acknowledgeSmsReport(int, @IntRange(from=0, to=65535) int, int);
+    method public String getSmsFormat();
+    method public void onReady();
+    method @Deprecated public final void onSendSmsResult(int, @IntRange(from=0, to=65535) int, int, int) throws java.lang.RuntimeException;
+    method public final void onSendSmsResultError(int, @IntRange(from=0, to=65535) int, int, int, int) throws java.lang.RuntimeException;
+    method public final void onSendSmsResultSuccess(int, @IntRange(from=0, to=65535) int) throws java.lang.RuntimeException;
+    method public final void onSmsReceived(int, String, byte[]) throws java.lang.RuntimeException;
+    method @Deprecated public final void onSmsStatusReportReceived(int, @IntRange(from=0, to=65535) int, String, byte[]) throws java.lang.RuntimeException;
+    method public final void onSmsStatusReportReceived(int, String, byte[]) throws java.lang.RuntimeException;
+    method public void sendSms(int, @IntRange(from=0, to=65535) int, String, String, boolean, byte[]);
+    field public static final int DELIVER_STATUS_ERROR_GENERIC = 2; // 0x2
+    field public static final int DELIVER_STATUS_ERROR_NO_MEMORY = 3; // 0x3
+    field public static final int DELIVER_STATUS_ERROR_REQUEST_NOT_SUPPORTED = 4; // 0x4
+    field public static final int DELIVER_STATUS_OK = 1; // 0x1
+    field public static final int RESULT_NO_NETWORK_ERROR = -1; // 0xffffffff
+    field public static final int SEND_STATUS_ERROR = 2; // 0x2
+    field public static final int SEND_STATUS_ERROR_FALLBACK = 4; // 0x4
+    field public static final int SEND_STATUS_ERROR_RETRY = 3; // 0x3
+    field public static final int SEND_STATUS_OK = 1; // 0x1
+    field public static final int STATUS_REPORT_STATUS_ERROR = 2; // 0x2
+    field public static final int STATUS_REPORT_STATUS_OK = 1; // 0x1
+  }
+
+  public class ImsUtImplBase {
+    ctor public ImsUtImplBase();
+    method public void close();
+    method public int queryCallBarring(int);
+    method public int queryCallBarringForServiceClass(int, int);
+    method public int queryCallForward(int, String);
+    method public int queryCallWaiting();
+    method public int queryClip();
+    method public int queryClir();
+    method public int queryColp();
+    method public int queryColr();
+    method public void setListener(android.telephony.ims.ImsUtListener);
+    method public int transact(android.os.Bundle);
+    method public int updateCallBarring(int, int, String[]);
+    method public int updateCallBarringForServiceClass(int, int, String[], int);
+    method public int updateCallForward(int, int, String, int, int);
+    method public int updateCallWaiting(boolean, int);
+    method public int updateClip(boolean);
+    method public int updateClir(int);
+    method public int updateColp(boolean);
+    method public int updateColr(int);
+  }
+
+  public interface SipDelegate {
+    method public void closeDialog(@NonNull String);
+    method public void notifyMessageReceiveError(@NonNull String, int);
+    method public void notifyMessageReceived(@NonNull String);
+    method public void sendMessage(@NonNull android.telephony.ims.SipMessage, long);
+  }
+
+  public class SipTransportImplBase {
+    ctor public SipTransportImplBase(@NonNull java.util.concurrent.Executor);
+    method public void createSipDelegate(int, @NonNull android.telephony.ims.DelegateRequest, @NonNull android.telephony.ims.DelegateStateCallback, @NonNull android.telephony.ims.DelegateMessageCallback);
+    method public void destroySipDelegate(@NonNull android.telephony.ims.stub.SipDelegate, int);
+  }
+
+}
+
+package android.telephony.mbms {
+
+  public static class DownloadRequest.Builder {
+    method public android.telephony.mbms.DownloadRequest.Builder setServiceId(String);
+  }
+
+  public final class FileInfo implements android.os.Parcelable {
+    ctor public FileInfo(android.net.Uri, String);
+  }
+
+  public final class FileServiceInfo extends android.telephony.mbms.ServiceInfo implements android.os.Parcelable {
+    ctor public FileServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date, java.util.List<android.telephony.mbms.FileInfo>);
+  }
+
+  public class MbmsDownloadReceiver extends android.content.BroadcastReceiver {
+    field public static final int RESULT_APP_NOTIFICATION_ERROR = 6; // 0x6
+    field public static final int RESULT_BAD_TEMP_FILE_ROOT = 3; // 0x3
+    field public static final int RESULT_DOWNLOAD_FINALIZATION_ERROR = 4; // 0x4
+    field public static final int RESULT_INVALID_ACTION = 1; // 0x1
+    field public static final int RESULT_MALFORMED_INTENT = 2; // 0x2
+    field public static final int RESULT_OK = 0; // 0x0
+    field public static final int RESULT_TEMP_FILE_GENERATION_ERROR = 5; // 0x5
+  }
+
+  public final class StreamingServiceInfo extends android.telephony.mbms.ServiceInfo implements android.os.Parcelable {
+    ctor public StreamingServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date);
+  }
+
+  public final class UriPathPair implements android.os.Parcelable {
+    method public int describeContents();
+    method public android.net.Uri getContentUri();
+    method public android.net.Uri getFilePathUri();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.mbms.UriPathPair> CREATOR;
+  }
+
+}
+
+package android.telephony.mbms.vendor {
+
+  public class MbmsDownloadServiceBase extends android.os.Binder implements android.os.IInterface {
+    ctor public MbmsDownloadServiceBase();
+    method public int addProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener) throws android.os.RemoteException;
+    method public int addServiceAnnouncement(int, @NonNull byte[]);
+    method public int addStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener) throws android.os.RemoteException;
+    method public android.os.IBinder asBinder();
+    method public int cancelDownload(android.telephony.mbms.DownloadRequest) throws android.os.RemoteException;
+    method public void dispose(int) throws android.os.RemoteException;
+    method public int download(android.telephony.mbms.DownloadRequest) throws android.os.RemoteException;
+    method public int initialize(int, android.telephony.mbms.MbmsDownloadSessionCallback) throws android.os.RemoteException;
+    method @NonNull public java.util.List<android.telephony.mbms.DownloadRequest> listPendingDownloads(int) throws android.os.RemoteException;
+    method public void onAppCallbackDied(int, int);
+    method public boolean onTransact(int, android.os.Parcel, android.os.Parcel, int) throws android.os.RemoteException;
+    method public int removeProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener) throws android.os.RemoteException;
+    method public int removeStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener) throws android.os.RemoteException;
+    method public int requestDownloadState(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo) throws android.os.RemoteException;
+    method public int requestUpdateFileServices(int, java.util.List<java.lang.String>) throws android.os.RemoteException;
+    method public int resetDownloadKnowledge(android.telephony.mbms.DownloadRequest) throws android.os.RemoteException;
+    method public int setTempFileRootDirectory(int, String) throws android.os.RemoteException;
+  }
+
+  public class MbmsGroupCallServiceBase extends android.app.Service {
+    ctor public MbmsGroupCallServiceBase();
+    method public void dispose(int) throws android.os.RemoteException;
+    method public int initialize(@NonNull android.telephony.mbms.MbmsGroupCallSessionCallback, int) throws android.os.RemoteException;
+    method public void onAppCallbackDied(int, int);
+    method public android.os.IBinder onBind(android.content.Intent);
+    method public int startGroupCall(int, long, @NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.lang.Integer>, @NonNull android.telephony.mbms.GroupCallCallback);
+    method public void stopGroupCall(int, long);
+    method public void updateGroupCall(int, long, @NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.lang.Integer>);
+  }
+
+  public class MbmsStreamingServiceBase extends android.os.Binder implements android.os.IInterface {
+    ctor public MbmsStreamingServiceBase();
+    method public android.os.IBinder asBinder();
+    method public void dispose(int) throws android.os.RemoteException;
+    method @Nullable public android.net.Uri getPlaybackUri(int, String) throws android.os.RemoteException;
+    method public int initialize(android.telephony.mbms.MbmsStreamingSessionCallback, int) throws android.os.RemoteException;
+    method public void onAppCallbackDied(int, int);
+    method public boolean onTransact(int, android.os.Parcel, android.os.Parcel, int) throws android.os.RemoteException;
+    method public int requestUpdateStreamingServices(int, java.util.List<java.lang.String>) throws android.os.RemoteException;
+    method public int startStreaming(int, String, android.telephony.mbms.StreamingServiceCallback) throws android.os.RemoteException;
+    method public void stopStreaming(int, String) throws android.os.RemoteException;
+  }
+
+  public class VendorUtils {
+    ctor public VendorUtils();
+    method public static android.content.ComponentName getAppReceiverFromPackageName(android.content.Context, String);
+    field public static final String ACTION_CLEANUP = "android.telephony.mbms.action.CLEANUP";
+    field public static final String ACTION_DOWNLOAD_RESULT_INTERNAL = "android.telephony.mbms.action.DOWNLOAD_RESULT_INTERNAL";
+    field public static final String ACTION_FILE_DESCRIPTOR_REQUEST = "android.telephony.mbms.action.FILE_DESCRIPTOR_REQUEST";
+    field public static final String EXTRA_FD_COUNT = "android.telephony.mbms.extra.FD_COUNT";
+    field public static final String EXTRA_FINAL_URI = "android.telephony.mbms.extra.FINAL_URI";
+    field public static final String EXTRA_FREE_URI_LIST = "android.telephony.mbms.extra.FREE_URI_LIST";
+    field public static final String EXTRA_PAUSED_LIST = "android.telephony.mbms.extra.PAUSED_LIST";
+    field public static final String EXTRA_PAUSED_URI_LIST = "android.telephony.mbms.extra.PAUSED_URI_LIST";
+    field public static final String EXTRA_SERVICE_ID = "android.telephony.mbms.extra.SERVICE_ID";
+    field public static final String EXTRA_TEMP_FILES_IN_USE = "android.telephony.mbms.extra.TEMP_FILES_IN_USE";
+    field public static final String EXTRA_TEMP_FILE_ROOT = "android.telephony.mbms.extra.TEMP_FILE_ROOT";
+    field public static final String EXTRA_TEMP_LIST = "android.telephony.mbms.extra.TEMP_LIST";
+  }
+
+}
+
+package android.util {
+
+  public class EventLog {
+    method public static void readEventsOnWrapping(int[], long, java.util.Collection<android.util.EventLog.Event>) throws java.io.IOException;
+  }
+
+  public static final class EventLog.Event {
+    method public int getUid();
+  }
+
+}
+
+package android.view {
+
+  public abstract class Window {
+    method public void addSystemFlags(@android.view.WindowManager.LayoutParams.SystemFlags int);
+  }
+
+  public interface WindowManager extends android.view.ViewManager {
+    method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public android.graphics.Region getCurrentImeTouchRegion();
+  }
+
+  public static class WindowManager.LayoutParams extends android.view.ViewGroup.LayoutParams implements android.os.Parcelable {
+    method public final long getUserActivityTimeout();
+    method public final void setUserActivityTimeout(long);
+    field @RequiresPermission(android.Manifest.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS) public static final int SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS = 524288; // 0x80000
+    field @RequiresPermission(android.Manifest.permission.INTERNAL_SYSTEM_WINDOW) public static final int SYSTEM_FLAG_SHOW_FOR_ALL_USERS = 16; // 0x10
+  }
+
+  @IntDef(flag=true, prefix={"SYSTEM_FLAG_"}, value={android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS, android.view.WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface WindowManager.LayoutParams.SystemFlags {
+  }
+
+}
+
+package android.view.accessibility {
+
+  public final class AccessibilityManager {
+    method public int getAccessibilityWindowId(@Nullable android.os.IBinder);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACCESSIBILITY) public void performAccessibilityShortcut();
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACCESSIBILITY) public void registerSystemAction(@NonNull android.app.RemoteAction, int);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACCESSIBILITY) public void unregisterSystemAction(int);
+  }
+
+}
+
+package android.view.autofill {
+
+  public final class AutofillManager {
+    method public void setAugmentedAutofillWhitelist(@Nullable java.util.Set<java.lang.String>, @Nullable java.util.Set<android.content.ComponentName>);
+  }
+
+}
+
+package android.view.contentcapture {
+
+  public final class ContentCaptureContext implements android.os.Parcelable {
+    method @Nullable public android.content.ComponentName getActivityComponent();
+    method public int getDisplayId();
+    method public int getFlags();
+    method @Nullable public android.view.contentcapture.ContentCaptureSessionId getParentSessionId();
+    method public int getTaskId();
+    field public static final int FLAG_DISABLED_BY_APP = 1; // 0x1
+    field public static final int FLAG_DISABLED_BY_FLAG_SECURE = 2; // 0x2
+    field public static final int FLAG_RECONNECTED = 4; // 0x4
+  }
+
+  public final class ContentCaptureEvent implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public android.view.contentcapture.ContentCaptureContext getContentCaptureContext();
+    method public long getEventTime();
+    method @Nullable public android.view.autofill.AutofillId getId();
+    method @Nullable public java.util.List<android.view.autofill.AutofillId> getIds();
+    method @Nullable public android.graphics.Insets getInsets();
+    method @Nullable public CharSequence getText();
+    method public int getType();
+    method @Nullable public android.view.contentcapture.ViewNode getViewNode();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.contentcapture.ContentCaptureEvent> CREATOR;
+    field public static final int TYPE_CONTEXT_UPDATED = 6; // 0x6
+    field public static final int TYPE_SESSION_PAUSED = 8; // 0x8
+    field public static final int TYPE_SESSION_RESUMED = 7; // 0x7
+    field public static final int TYPE_VIEW_APPEARED = 1; // 0x1
+    field public static final int TYPE_VIEW_DISAPPEARED = 2; // 0x2
+    field public static final int TYPE_VIEW_INSETS_CHANGED = 9; // 0x9
+    field public static final int TYPE_VIEW_TEXT_CHANGED = 3; // 0x3
+    field public static final int TYPE_VIEW_TREE_APPEARED = 5; // 0x5
+    field public static final int TYPE_VIEW_TREE_APPEARING = 4; // 0x4
+  }
+
+  public final class ContentCaptureManager {
+    method public boolean isContentCaptureFeatureEnabled();
+    field public static final int NO_SESSION_ID = 0; // 0x0
+  }
+
+  public final class ViewNode extends android.app.assist.AssistStructure.ViewNode {
+    method @Nullable public android.view.autofill.AutofillId getParentAutofillId();
+  }
+
+}
+
+package android.webkit {
+
+  public abstract class CookieManager {
+    method protected abstract boolean allowFileSchemeCookiesImpl();
+    method public abstract String getCookie(String, boolean);
+    method public String getCookie(android.net.WebAddress);
+    method public abstract boolean hasCookies(boolean);
+    method protected abstract void setAcceptFileSchemeCookiesImpl(boolean);
+  }
+
+  public class FindActionModeCallback implements android.view.ActionMode.Callback android.text.TextWatcher android.view.View.OnClickListener android.webkit.WebView.FindListener {
+    ctor public FindActionModeCallback(android.content.Context);
+    method public void afterTextChanged(android.text.Editable);
+    method public void beforeTextChanged(CharSequence, int, int, int);
+    method public void findAll();
+    method public void finish();
+    method public int getActionModeGlobalBottom();
+    method public boolean onActionItemClicked(android.view.ActionMode, android.view.MenuItem);
+    method public void onClick(android.view.View);
+    method public boolean onCreateActionMode(android.view.ActionMode, android.view.Menu);
+    method public void onDestroyActionMode(android.view.ActionMode);
+    method public void onFindResultReceived(int, int, boolean);
+    method public boolean onPrepareActionMode(android.view.ActionMode, android.view.Menu);
+    method public void onTextChanged(CharSequence, int, int, int);
+    method public void setText(String);
+    method public void setWebView(@NonNull android.webkit.WebView);
+    method public void showSoftInput();
+    method public void updateMatchCount(int, int, boolean);
+  }
+
+  public static class FindActionModeCallback.NoAction implements android.view.ActionMode.Callback {
+    ctor public FindActionModeCallback.NoAction();
+    method public boolean onActionItemClicked(android.view.ActionMode, android.view.MenuItem);
+    method public boolean onCreateActionMode(android.view.ActionMode, android.view.Menu);
+    method public void onDestroyActionMode(android.view.ActionMode);
+    method public boolean onPrepareActionMode(android.view.ActionMode, android.view.Menu);
+  }
+
+  public class GeolocationPermissions {
+    ctor public GeolocationPermissions();
+  }
+
+  public class HttpAuthHandler extends android.os.Handler {
+    ctor public HttpAuthHandler();
+  }
+
+  public class JsDialogHelper {
+    ctor public JsDialogHelper(android.webkit.JsPromptResult, int, String, String, String);
+    ctor public JsDialogHelper(android.webkit.JsPromptResult, android.os.Message);
+    method public boolean invokeCallback(android.webkit.WebChromeClient, android.webkit.WebView);
+    method public void showDialog(android.content.Context);
+    field public static final int ALERT = 1; // 0x1
+    field public static final int CONFIRM = 2; // 0x2
+    field public static final int PROMPT = 3; // 0x3
+    field public static final int UNLOAD = 4; // 0x4
+  }
+
+  public class JsPromptResult extends android.webkit.JsResult {
+    ctor public JsPromptResult(android.webkit.JsResult.ResultReceiver);
+    method public String getStringResult();
+  }
+
+  public class JsResult {
+    ctor public JsResult(android.webkit.JsResult.ResultReceiver);
+    method public final boolean getResult();
+  }
+
+  public static interface JsResult.ResultReceiver {
+    method public void onJsResultComplete(android.webkit.JsResult);
+  }
+
+  public interface PacProcessor {
+    method @Nullable public String findProxyForUrl(@NonNull String);
+    method @NonNull public static android.webkit.PacProcessor getInstance();
+    method public boolean setProxyScript(@NonNull String);
+  }
+
+  public class SslErrorHandler extends android.os.Handler {
+    ctor public SslErrorHandler();
+  }
+
+  @Deprecated public abstract class TokenBindingService {
+    ctor @Deprecated public TokenBindingService();
+  }
+
+  public class WebChromeClient {
+    method @Deprecated public void openFileChooser(android.webkit.ValueCallback<android.net.Uri>, String, String);
+  }
+
+  public abstract class WebHistoryItem implements java.lang.Cloneable {
+    method @Deprecated public abstract int getId();
+  }
+
+  @Deprecated public abstract class WebIconDatabase {
+    method @Deprecated public abstract void bulkRequestIconForPageUrl(android.content.ContentResolver, String, android.webkit.WebIconDatabase.IconListener);
+  }
+
+  public abstract class WebMessagePort {
+    ctor public WebMessagePort();
+  }
+
+  public abstract class WebResourceError {
+    ctor public WebResourceError();
+  }
+
+  public class WebResourceResponse {
+    ctor public WebResourceResponse(boolean, String, String, int, String, java.util.Map<java.lang.String,java.lang.String>, java.io.InputStream);
+  }
+
+  public abstract class WebSettings {
+    method public abstract boolean getAcceptThirdPartyCookies();
+    method @Deprecated public abstract boolean getNavDump();
+    method @Deprecated public abstract boolean getPluginsEnabled();
+    method @Deprecated public abstract boolean getUseWebViewBackgroundForOverscrollBackground();
+    method @Deprecated public abstract int getUserAgent();
+    method public abstract boolean getVideoOverlayForEmbeddedEncryptedVideoEnabled();
+    method public abstract void setAcceptThirdPartyCookies(boolean);
+    method @Deprecated public abstract void setNavDump(boolean);
+    method @Deprecated public abstract void setPluginsEnabled(boolean);
+    method @Deprecated public abstract void setUseWebViewBackgroundForOverscrollBackground(boolean);
+    method @Deprecated public abstract void setUserAgent(int);
+    method public abstract void setVideoOverlayForEmbeddedEncryptedVideoEnabled(boolean);
+  }
+
+  public class WebStorage {
+    ctor public WebStorage();
+  }
+
+  public static class WebStorage.Origin {
+    ctor protected WebStorage.Origin(String, long, long);
+  }
+
+  public class WebView extends android.widget.AbsoluteLayout implements android.view.ViewGroup.OnHierarchyChangeListener android.view.ViewTreeObserver.OnGlobalFocusChangeListener {
+    method public android.webkit.WebViewProvider getWebViewProvider();
+  }
+
+  public static class WebView.HitTestResult {
+    ctor public WebView.HitTestResult();
+    method public void setExtra(String);
+    method public void setType(int);
+  }
+
+  public class WebView.PrivateAccess {
+    ctor public WebView.PrivateAccess();
+    method public void awakenScrollBars(int);
+    method public void awakenScrollBars(int, boolean);
+    method public float getHorizontalScrollFactor();
+    method public int getHorizontalScrollbarHeight();
+    method public float getVerticalScrollFactor();
+    method public void onScrollChanged(int, int, int, int);
+    method public void overScrollBy(int, int, int, int, int, int, int, int, boolean);
+    method public void setMeasuredDimension(int, int);
+    method public void setScrollXRaw(int);
+    method public void setScrollYRaw(int);
+    method public void super_computeScroll();
+    method public boolean super_dispatchKeyEvent(android.view.KeyEvent);
+    method public int super_getScrollBarStyle();
+    method public void super_onDrawVerticalScrollBar(android.graphics.Canvas, android.graphics.drawable.Drawable, int, int, int, int);
+    method public boolean super_onGenericMotionEvent(android.view.MotionEvent);
+    method public boolean super_onHoverEvent(android.view.MotionEvent);
+    method public boolean super_performAccessibilityAction(int, android.os.Bundle);
+    method public boolean super_performLongClick();
+    method public boolean super_requestFocus(int, android.graphics.Rect);
+    method public void super_scrollTo(int, int);
+    method public boolean super_setFrame(int, int, int, int);
+    method public void super_setLayoutParams(android.view.ViewGroup.LayoutParams);
+    method public void super_startActivityForResult(android.content.Intent, int);
+  }
+
+  public final class WebViewDelegate {
+    method public void addWebViewAssetPath(android.content.Context);
+    method @Deprecated public void callDrawGlFunction(android.graphics.Canvas, long);
+    method @Deprecated public void callDrawGlFunction(@NonNull android.graphics.Canvas, long, @Nullable Runnable);
+    method @Deprecated public boolean canInvokeDrawGlFunctor(android.view.View);
+    method @Deprecated public void detachDrawGlFunctor(android.view.View, long);
+    method public void drawWebViewFunctor(@NonNull android.graphics.Canvas, int);
+    method public android.app.Application getApplication();
+    method public String getDataDirectorySuffix();
+    method public String getErrorString(android.content.Context, int);
+    method public int getPackageId(android.content.res.Resources, String);
+    method @Deprecated public void invokeDrawGlFunctor(android.view.View, long, boolean);
+    method public boolean isMultiProcessEnabled();
+    method public boolean isTraceTagEnabled();
+    method public void setOnTraceEnabledChangeListener(android.webkit.WebViewDelegate.OnTraceEnabledChangeListener);
+  }
+
+  public static interface WebViewDelegate.OnTraceEnabledChangeListener {
+    method public void onTraceEnabledChange(boolean);
+  }
+
+  public final class WebViewFactory {
+    ctor public WebViewFactory();
+    method public static android.content.pm.PackageInfo getLoadedPackageInfo();
+    method public static int loadWebViewNativeLibraryFromPackage(String, ClassLoader);
+    method public static void prepareWebViewInZygote();
+    field public static final int LIBLOAD_ADDRESS_SPACE_NOT_RESERVED = 2; // 0x2
+    field public static final int LIBLOAD_FAILED_JNI_CALL = 7; // 0x7
+    field public static final int LIBLOAD_FAILED_LISTING_WEBVIEW_PACKAGES = 4; // 0x4
+    field public static final int LIBLOAD_FAILED_TO_FIND_NAMESPACE = 10; // 0xa
+    field public static final int LIBLOAD_FAILED_TO_LOAD_LIBRARY = 6; // 0x6
+    field public static final int LIBLOAD_FAILED_TO_OPEN_RELRO_FILE = 5; // 0x5
+    field public static final int LIBLOAD_FAILED_WAITING_FOR_RELRO = 3; // 0x3
+    field public static final int LIBLOAD_FAILED_WAITING_FOR_WEBVIEW_REASON_UNKNOWN = 8; // 0x8
+    field public static final int LIBLOAD_SUCCESS = 0; // 0x0
+    field public static final int LIBLOAD_WRONG_PACKAGE_NAME = 1; // 0x1
+  }
+
+  public interface WebViewFactoryProvider {
+    method public android.webkit.WebViewProvider createWebView(android.webkit.WebView, android.webkit.WebView.PrivateAccess);
+    method public android.webkit.CookieManager getCookieManager();
+    method public android.webkit.GeolocationPermissions getGeolocationPermissions();
+    method @NonNull public default android.webkit.PacProcessor getPacProcessor();
+    method public android.webkit.ServiceWorkerController getServiceWorkerController();
+    method public android.webkit.WebViewFactoryProvider.Statics getStatics();
+    method @Deprecated public android.webkit.TokenBindingService getTokenBindingService();
+    method public android.webkit.TracingController getTracingController();
+    method public android.webkit.WebIconDatabase getWebIconDatabase();
+    method public android.webkit.WebStorage getWebStorage();
+    method public ClassLoader getWebViewClassLoader();
+    method public android.webkit.WebViewDatabase getWebViewDatabase(android.content.Context);
+  }
+
+  public static interface WebViewFactoryProvider.Statics {
+    method public void clearClientCertPreferences(Runnable);
+    method public void enableSlowWholeDocumentDraw();
+    method public String findAddress(String);
+    method public void freeMemoryForTests();
+    method public String getDefaultUserAgent(android.content.Context);
+    method @NonNull public android.net.Uri getSafeBrowsingPrivacyPolicyUrl();
+    method public void initSafeBrowsing(android.content.Context, android.webkit.ValueCallback<java.lang.Boolean>);
+    method public android.net.Uri[] parseFileChooserResult(int, android.content.Intent);
+    method public void setSafeBrowsingWhitelist(java.util.List<java.lang.String>, android.webkit.ValueCallback<java.lang.Boolean>);
+    method public void setWebContentsDebuggingEnabled(boolean);
+  }
+
+  public interface WebViewProvider {
+    method public void addJavascriptInterface(Object, String);
+    method public boolean canGoBack();
+    method public boolean canGoBackOrForward(int);
+    method public boolean canGoForward();
+    method public boolean canZoomIn();
+    method public boolean canZoomOut();
+    method public android.graphics.Picture capturePicture();
+    method public void clearCache(boolean);
+    method public void clearFormData();
+    method public void clearHistory();
+    method public void clearMatches();
+    method public void clearSslPreferences();
+    method public void clearView();
+    method public android.webkit.WebBackForwardList copyBackForwardList();
+    method public android.print.PrintDocumentAdapter createPrintDocumentAdapter(String);
+    method public android.webkit.WebMessagePort[] createWebMessageChannel();
+    method public void destroy();
+    method public void documentHasImages(android.os.Message);
+    method public void dumpViewHierarchyWithProperties(java.io.BufferedWriter, int);
+    method public void evaluateJavaScript(String, android.webkit.ValueCallback<java.lang.String>);
+    method public int findAll(String);
+    method public void findAllAsync(String);
+    method public android.view.View findHierarchyView(String, int);
+    method public void findNext(boolean);
+    method public void flingScroll(int, int);
+    method public void freeMemory();
+    method public android.net.http.SslCertificate getCertificate();
+    method public int getContentHeight();
+    method public int getContentWidth();
+    method public android.graphics.Bitmap getFavicon();
+    method public android.webkit.WebView.HitTestResult getHitTestResult();
+    method public String[] getHttpAuthUsernamePassword(String, String);
+    method public String getOriginalUrl();
+    method public int getProgress();
+    method public boolean getRendererPriorityWaivedWhenNotVisible();
+    method public int getRendererRequestedPriority();
+    method public float getScale();
+    method public android.webkit.WebViewProvider.ScrollDelegate getScrollDelegate();
+    method public android.webkit.WebSettings getSettings();
+    method @NonNull public default android.view.textclassifier.TextClassifier getTextClassifier();
+    method public String getTitle();
+    method public String getTouchIconUrl();
+    method public String getUrl();
+    method public android.webkit.WebViewProvider.ViewDelegate getViewDelegate();
+    method public int getVisibleTitleHeight();
+    method public android.webkit.WebChromeClient getWebChromeClient();
+    method public android.webkit.WebViewClient getWebViewClient();
+    method @Nullable public android.webkit.WebViewRenderProcess getWebViewRenderProcess();
+    method @Nullable public android.webkit.WebViewRenderProcessClient getWebViewRenderProcessClient();
+    method public android.view.View getZoomControls();
+    method public void goBack();
+    method public void goBackOrForward(int);
+    method public void goForward();
+    method public void init(java.util.Map<java.lang.String,java.lang.Object>, boolean);
+    method public void insertVisualStateCallback(long, android.webkit.WebView.VisualStateCallback);
+    method public void invokeZoomPicker();
+    method public boolean isPaused();
+    method public boolean isPrivateBrowsingEnabled();
+    method public void loadData(String, String, String);
+    method public void loadDataWithBaseURL(String, String, String, String, String);
+    method public void loadUrl(String, java.util.Map<java.lang.String,java.lang.String>);
+    method public void loadUrl(String);
+    method public void notifyFindDialogDismissed();
+    method public void onPause();
+    method public void onResume();
+    method public boolean overlayHorizontalScrollbar();
+    method public boolean overlayVerticalScrollbar();
+    method public boolean pageDown(boolean);
+    method public boolean pageUp(boolean);
+    method public void pauseTimers();
+    method public void postMessageToMainFrame(android.webkit.WebMessage, android.net.Uri);
+    method public void postUrl(String, byte[]);
+    method public void reload();
+    method public void removeJavascriptInterface(String);
+    method public void requestFocusNodeHref(android.os.Message);
+    method public void requestImageRef(android.os.Message);
+    method public boolean restorePicture(android.os.Bundle, java.io.File);
+    method public android.webkit.WebBackForwardList restoreState(android.os.Bundle);
+    method public void resumeTimers();
+    method public void savePassword(String, String, String);
+    method public boolean savePicture(android.os.Bundle, java.io.File);
+    method public android.webkit.WebBackForwardList saveState(android.os.Bundle);
+    method public void saveWebArchive(String);
+    method public void saveWebArchive(String, boolean, android.webkit.ValueCallback<java.lang.String>);
+    method public void setCertificate(android.net.http.SslCertificate);
+    method public void setDownloadListener(android.webkit.DownloadListener);
+    method public void setFindListener(android.webkit.WebView.FindListener);
+    method public void setHorizontalScrollbarOverlay(boolean);
+    method public void setHttpAuthUsernamePassword(String, String, String, String);
+    method public void setInitialScale(int);
+    method public void setMapTrackballToArrowKeys(boolean);
+    method public void setNetworkAvailable(boolean);
+    method public void setPictureListener(android.webkit.WebView.PictureListener);
+    method public void setRendererPriorityPolicy(int, boolean);
+    method public default void setTextClassifier(@Nullable android.view.textclassifier.TextClassifier);
+    method public void setVerticalScrollbarOverlay(boolean);
+    method public void setWebChromeClient(android.webkit.WebChromeClient);
+    method public void setWebViewClient(android.webkit.WebViewClient);
+    method public void setWebViewRenderProcessClient(@Nullable java.util.concurrent.Executor, @Nullable android.webkit.WebViewRenderProcessClient);
+    method public boolean showFindDialog(String, boolean);
+    method public void stopLoading();
+    method public boolean zoomBy(float);
+    method public boolean zoomIn();
+    method public boolean zoomOut();
+  }
+
+  public static interface WebViewProvider.ScrollDelegate {
+    method public int computeHorizontalScrollOffset();
+    method public int computeHorizontalScrollRange();
+    method public void computeScroll();
+    method public int computeVerticalScrollExtent();
+    method public int computeVerticalScrollOffset();
+    method public int computeVerticalScrollRange();
+  }
+
+  public static interface WebViewProvider.ViewDelegate {
+    method public default void autofill(android.util.SparseArray<android.view.autofill.AutofillValue>);
+    method public boolean dispatchKeyEvent(android.view.KeyEvent);
+    method public android.view.View findFocus(android.view.View);
+    method public android.view.accessibility.AccessibilityNodeProvider getAccessibilityNodeProvider();
+    method public android.os.Handler getHandler(android.os.Handler);
+    method public default boolean isVisibleToUserForAutofill(int);
+    method public void onActivityResult(int, int, android.content.Intent);
+    method public void onAttachedToWindow();
+    method public default boolean onCheckIsTextEditor();
+    method public void onConfigurationChanged(android.content.res.Configuration);
+    method public android.view.inputmethod.InputConnection onCreateInputConnection(android.view.inputmethod.EditorInfo);
+    method public void onDetachedFromWindow();
+    method public boolean onDragEvent(android.view.DragEvent);
+    method public void onDraw(android.graphics.Canvas);
+    method public void onDrawVerticalScrollBar(android.graphics.Canvas, android.graphics.drawable.Drawable, int, int, int, int);
+    method public void onFinishTemporaryDetach();
+    method public void onFocusChanged(boolean, int, android.graphics.Rect);
+    method public boolean onGenericMotionEvent(android.view.MotionEvent);
+    method public boolean onHoverEvent(android.view.MotionEvent);
+    method public void onInitializeAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
+    method public void onInitializeAccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo);
+    method public boolean onKeyDown(int, android.view.KeyEvent);
+    method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
+    method public boolean onKeyUp(int, android.view.KeyEvent);
+    method public void onMeasure(int, int);
+    method public default void onMovedToDisplay(int, android.content.res.Configuration);
+    method public void onOverScrolled(int, int, boolean, boolean);
+    method public default void onProvideAutofillVirtualStructure(android.view.ViewStructure, int);
+    method public default void onProvideContentCaptureStructure(@NonNull android.view.ViewStructure, int);
+    method public void onProvideVirtualStructure(android.view.ViewStructure);
+    method public void onScrollChanged(int, int, int, int);
+    method public void onSizeChanged(int, int, int, int);
+    method public void onStartTemporaryDetach();
+    method public boolean onTouchEvent(android.view.MotionEvent);
+    method public boolean onTrackballEvent(android.view.MotionEvent);
+    method public void onVisibilityChanged(android.view.View, int);
+    method public void onWindowFocusChanged(boolean);
+    method public void onWindowVisibilityChanged(int);
+    method public boolean performAccessibilityAction(int, android.os.Bundle);
+    method public boolean performLongClick();
+    method public void preDispatchDraw(android.graphics.Canvas);
+    method public boolean requestChildRectangleOnScreen(android.view.View, android.graphics.Rect, boolean);
+    method public boolean requestFocus(int, android.graphics.Rect);
+    method public void setBackgroundColor(int);
+    method public boolean setFrame(int, int, int, int);
+    method public void setLayerType(int, android.graphics.Paint);
+    method public void setLayoutParams(android.view.ViewGroup.LayoutParams);
+    method public void setOverScrollMode(int);
+    method public void setScrollBarStyle(int);
+    method public boolean shouldDelayChildPressedState();
+  }
+
+  public final class WebViewProviderInfo implements android.os.Parcelable {
+    ctor public WebViewProviderInfo(String, String, boolean, boolean, String[]);
+    method public int describeContents();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.webkit.WebViewProviderInfo> CREATOR;
+    field public final boolean availableByDefault;
+    field public final String description;
+    field public final boolean isFallback;
+    field public final String packageName;
+    field public final android.content.pm.Signature[] signatures;
+  }
+
+  public final class WebViewUpdateService {
+    method public static android.webkit.WebViewProviderInfo[] getAllWebViewPackages();
+    method public static String getCurrentWebViewPackageName();
+    method public static android.webkit.WebViewProviderInfo[] getValidWebViewPackages();
+  }
+
+}
+
diff --git a/non-updatable-api/system-lint-baseline.txt b/core/api/system-lint-baseline.txt
similarity index 100%
rename from non-updatable-api/system-lint-baseline.txt
rename to core/api/system-lint-baseline.txt
diff --git a/core/api/system-removed.txt b/core/api/system-removed.txt
new file mode 100644
index 0000000..0c02c43
--- /dev/null
+++ b/core/api/system-removed.txt
@@ -0,0 +1,183 @@
+// Signature format: 2.0
+package android {
+
+  public static final class Manifest.permission {
+    field public static final String MANAGE_DEVICE_ADMINS = "android.permission.MANAGE_DEVICE_ADMINS";
+  }
+
+}
+
+package android.app {
+
+  public class AppOpsManager {
+    method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public java.util.List<android.app.AppOpsManager.PackageOps> getOpsForPackage(int, @NonNull String, @Nullable int[]);
+    method @Deprecated public void setNotedAppOpsCollector(@Nullable android.app.AppOpsManager.AppOpsCollector);
+  }
+
+  @Deprecated public abstract static class AppOpsManager.AppOpsCollector extends android.app.AppOpsManager.OnOpNotedCallback {
+    ctor public AppOpsManager.AppOpsCollector();
+    method @NonNull public java.util.concurrent.Executor getAsyncNotedExecutor();
+  }
+
+  public class Notification implements android.os.Parcelable {
+    method public static Class<? extends android.app.Notification.Style> getNotificationStyleClass(String);
+  }
+
+  public static final class Notification.TvExtender implements android.app.Notification.Extender {
+    method @Deprecated public String getChannel();
+  }
+
+}
+
+package android.app.backup {
+
+  public class RestoreSession {
+    method @Deprecated public int restoreSome(long, android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor, String[]);
+    method @Deprecated public int restoreSome(long, android.app.backup.RestoreObserver, String[]);
+  }
+
+}
+
+package android.app.prediction {
+
+  public static final class AppTarget.Builder {
+    ctor @Deprecated public AppTarget.Builder(@NonNull android.app.prediction.AppTargetId);
+    method @Deprecated @NonNull public android.app.prediction.AppTarget.Builder setTarget(@NonNull String, @NonNull android.os.UserHandle);
+    method @Deprecated @NonNull public android.app.prediction.AppTarget.Builder setTarget(@NonNull android.content.pm.ShortcutInfo);
+  }
+
+}
+
+package android.content {
+
+  public class Intent implements java.lang.Cloneable android.os.Parcelable {
+    field @Deprecated public static final String ACTION_DEVICE_INITIALIZATION_WIZARD = "android.intent.action.DEVICE_INITIALIZATION_WIZARD";
+    field @Deprecated public static final String ACTION_MASTER_CLEAR = "android.intent.action.MASTER_CLEAR";
+    field @Deprecated public static final String ACTION_SERVICE_STATE = "android.intent.action.SERVICE_STATE";
+    field @Deprecated public static final String EXTRA_CDMA_DEFAULT_ROAMING_INDICATOR = "cdmaDefaultRoamingIndicator";
+    field @Deprecated public static final String EXTRA_CDMA_ROAMING_INDICATOR = "cdmaRoamingIndicator";
+    field @Deprecated public static final String EXTRA_CSS_INDICATOR = "cssIndicator";
+    field @Deprecated public static final String EXTRA_DATA_OPERATOR_ALPHA_LONG = "data-operator-alpha-long";
+    field @Deprecated public static final String EXTRA_DATA_OPERATOR_ALPHA_SHORT = "data-operator-alpha-short";
+    field @Deprecated public static final String EXTRA_DATA_OPERATOR_NUMERIC = "data-operator-numeric";
+    field @Deprecated public static final String EXTRA_DATA_RADIO_TECH = "dataRadioTechnology";
+    field @Deprecated public static final String EXTRA_DATA_REG_STATE = "dataRegState";
+    field @Deprecated public static final String EXTRA_DATA_ROAMING_TYPE = "dataRoamingType";
+    field @Deprecated public static final String EXTRA_EMERGENCY_ONLY = "emergencyOnly";
+    field @Deprecated public static final String EXTRA_IS_DATA_ROAMING_FROM_REGISTRATION = "isDataRoamingFromRegistration";
+    field @Deprecated public static final String EXTRA_IS_USING_CARRIER_AGGREGATION = "isUsingCarrierAggregation";
+    field @Deprecated public static final String EXTRA_LTE_EARFCN_RSRP_BOOST = "LteEarfcnRsrpBoost";
+    field @Deprecated public static final String EXTRA_MANUAL = "manual";
+    field @Deprecated public static final String EXTRA_NETWORK_ID = "networkId";
+    field @Deprecated public static final String EXTRA_OPERATOR_ALPHA_LONG = "operator-alpha-long";
+    field @Deprecated public static final String EXTRA_OPERATOR_ALPHA_SHORT = "operator-alpha-short";
+    field @Deprecated public static final String EXTRA_OPERATOR_NUMERIC = "operator-numeric";
+    field @Deprecated public static final String EXTRA_SYSTEM_ID = "systemId";
+    field @Deprecated public static final String EXTRA_VOICE_RADIO_TECH = "radioTechnology";
+    field @Deprecated public static final String EXTRA_VOICE_REG_STATE = "voiceRegState";
+    field @Deprecated public static final String EXTRA_VOICE_ROAMING_TYPE = "voiceRoamingType";
+  }
+
+}
+
+package android.content.pm {
+
+  public class PackageItemInfo {
+    field @Deprecated public static final int SAFE_LABEL_FLAG_FIRST_LINE = 4; // 0x4
+    field @Deprecated public static final int SAFE_LABEL_FLAG_SINGLE_LINE = 2; // 0x2
+    field @Deprecated public static final int SAFE_LABEL_FLAG_TRIM = 1; // 0x1
+  }
+
+}
+
+package android.hardware.hdmi {
+
+  public final class HdmiControlManager {
+    method @Deprecated public java.util.List<android.hardware.hdmi.HdmiDeviceInfo> getConnectedDevicesList();
+    method @Deprecated public boolean isRemoteDeviceConnected(@NonNull android.hardware.hdmi.HdmiDeviceInfo);
+    method @Deprecated public void powerOffRemoteDevice(@NonNull android.hardware.hdmi.HdmiDeviceInfo);
+    method @Deprecated public void powerOnRemoteDevice(android.hardware.hdmi.HdmiDeviceInfo);
+    method @Deprecated public void requestRemoteDeviceToBecomeActiveSource(@NonNull android.hardware.hdmi.HdmiDeviceInfo);
+  }
+
+}
+
+package android.location {
+
+  public class LocationManager {
+    method @Deprecated public boolean addGpsMeasurementListener(android.location.GpsMeasurementsEvent.Listener);
+    method @Deprecated public boolean addGpsNavigationMessageListener(android.location.GpsNavigationMessageEvent.Listener);
+    method @Deprecated public void removeGpsMeasurementListener(android.location.GpsMeasurementsEvent.Listener);
+    method @Deprecated public void removeGpsNavigationMessageListener(android.location.GpsNavigationMessageEvent.Listener);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void setLocationControllerExtraPackage(String);
+    method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void setLocationControllerExtraPackageEnabled(boolean);
+  }
+
+}
+
+package android.media.tv {
+
+  public final class TvInputManager {
+    method @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public android.media.tv.TvInputManager.Hardware acquireTvInputHardware(int, android.media.tv.TvInputManager.HardwareCallback, android.media.tv.TvInputInfo);
+  }
+
+  public static final class TvInputManager.Hardware {
+    method public boolean dispatchKeyEventToHdmi(android.view.KeyEvent);
+  }
+
+}
+
+package android.os {
+
+  public class Build {
+    field public static final boolean PERMISSIONS_REVIEW_REQUIRED = true;
+  }
+
+}
+
+package android.service.notification {
+
+  public abstract class NotificationListenerService extends android.app.Service {
+    method public android.service.notification.StatusBarNotification[] getActiveNotifications(int);
+    method public android.service.notification.StatusBarNotification[] getActiveNotifications(String[], int);
+    method public void registerAsSystemService(android.content.Context, android.content.ComponentName, int) throws android.os.RemoteException;
+    method public final void setOnNotificationPostedTrim(int);
+    method public final void snoozeNotification(String, String);
+    method public void unregisterAsSystemService() throws android.os.RemoteException;
+    field public static final int TRIM_FULL = 0; // 0x0
+    field public static final int TRIM_LIGHT = 1; // 0x1
+  }
+
+  public static class NotificationListenerService.Ranking {
+    method public java.util.List<java.lang.String> getAdditionalPeople();
+    method public java.util.List<android.service.notification.SnoozeCriterion> getSnoozeCriteria();
+  }
+
+}
+
+package android.telecom {
+
+  public class TelecomManager {
+    method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.WRITE_SECURE_SETTINGS}) public boolean setDefaultDialer(@Nullable String);
+  }
+
+}
+
+package android.telephony {
+
+  public class TelephonyManager {
+    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void answerRingingCall();
+    method @Deprecated @RequiresPermission(android.Manifest.permission.CALL_PHONE) public boolean endCall();
+    method @Deprecated public void silenceRinger();
+  }
+
+}
+
+package android.telephony.data {
+
+  public final class DataCallResponse implements android.os.Parcelable {
+    ctor public DataCallResponse(int, int, int, int, int, @Nullable String, @Nullable java.util.List<android.net.LinkAddress>, @Nullable java.util.List<java.net.InetAddress>, @Nullable java.util.List<java.net.InetAddress>, @Nullable java.util.List<java.net.InetAddress>, int);
+  }
+
+}
+
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
new file mode 100644
index 0000000..fc27d06
--- /dev/null
+++ b/core/api/test-current.txt
@@ -0,0 +1,2306 @@
+// Signature format: 2.0
+package android {
+
+  public static final class Manifest.permission {
+    field public static final String ACCESS_NOTIFICATIONS = "android.permission.ACCESS_NOTIFICATIONS";
+    field public static final String ACTIVITY_EMBEDDING = "android.permission.ACTIVITY_EMBEDDING";
+    field public static final String APPROVE_INCIDENT_REPORTS = "android.permission.APPROVE_INCIDENT_REPORTS";
+    field public static final String BIND_CELL_BROADCAST_SERVICE = "android.permission.BIND_CELL_BROADCAST_SERVICE";
+    field public static final String BRIGHTNESS_SLIDER_USAGE = "android.permission.BRIGHTNESS_SLIDER_USAGE";
+    field public static final String CHANGE_APP_IDLE_STATE = "android.permission.CHANGE_APP_IDLE_STATE";
+    field public static final String CLEAR_APP_USER_DATA = "android.permission.CLEAR_APP_USER_DATA";
+    field public static final String CONFIGURE_DISPLAY_BRIGHTNESS = "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS";
+    field public static final String CONTROL_DEVICE_LIGHTS = "android.permission.CONTROL_DEVICE_LIGHTS";
+    field public static final String FORCE_STOP_PACKAGES = "android.permission.FORCE_STOP_PACKAGES";
+    field public static final String MANAGE_ACTIVITY_STACKS = "android.permission.MANAGE_ACTIVITY_STACKS";
+    field public static final String MANAGE_CRATES = "android.permission.MANAGE_CRATES";
+    field public static final String MANAGE_ROLLBACKS = "android.permission.MANAGE_ROLLBACKS";
+    field public static final String NETWORK_SETTINGS = "android.permission.NETWORK_SETTINGS";
+    field public static final String NETWORK_STACK = "android.permission.NETWORK_STACK";
+    field public static final String OVERRIDE_DISPLAY_MODE_REQUESTS = "android.permission.OVERRIDE_DISPLAY_MODE_REQUESTS";
+    field public static final String READ_CELL_BROADCASTS = "android.permission.READ_CELL_BROADCASTS";
+    field public static final String READ_PRIVILEGED_PHONE_STATE = "android.permission.READ_PRIVILEGED_PHONE_STATE";
+    field public static final String REMOVE_TASKS = "android.permission.REMOVE_TASKS";
+    field public static final String SUSPEND_APPS = "android.permission.SUSPEND_APPS";
+    field public static final String TEST_MANAGE_ROLLBACKS = "android.permission.TEST_MANAGE_ROLLBACKS";
+    field public static final String UPGRADE_RUNTIME_PERMISSIONS = "android.permission.UPGRADE_RUNTIME_PERMISSIONS";
+    field public static final String WRITE_DEVICE_CONFIG = "android.permission.WRITE_DEVICE_CONFIG";
+    field @Deprecated public static final String WRITE_MEDIA_STORAGE = "android.permission.WRITE_MEDIA_STORAGE";
+    field public static final String WRITE_OBB = "android.permission.WRITE_OBB";
+  }
+
+  public static final class Manifest.permission_group {
+    field public static final String UNDEFINED = "android.permission-group.UNDEFINED";
+  }
+
+  public static final class R.bool {
+    field public static final int config_assistantOnTopOfDream = 17891333; // 0x1110005
+    field public static final int config_perDisplayFocusEnabled = 17891332; // 0x1110004
+  }
+
+  public static final class R.string {
+    field public static final int config_defaultAssistant = 17039393; // 0x1040021
+    field public static final int config_defaultDialer = 17039395; // 0x1040023
+    field public static final int config_systemGallery = 17039399; // 0x1040027
+  }
+
+}
+
+package android.accessibilityservice {
+
+  public final class AccessibilityGestureEvent implements android.os.Parcelable {
+    ctor public AccessibilityGestureEvent(int, int);
+  }
+
+  public abstract class AccessibilityService extends android.app.Service {
+    field public static final int ACCESSIBILITY_TAKE_SCREENSHOT_REQUEST_INTERVAL_TIMES_MS = 1000; // 0x3e8
+  }
+
+}
+
+package android.animation {
+
+  public class ValueAnimator extends android.animation.Animator {
+    method public static float getDurationScale();
+    method public static void setDurationScale(float);
+  }
+
+}
+
+package android.app {
+
+  public class Activity extends android.view.ContextThemeWrapper implements android.content.ComponentCallbacks2 android.view.KeyEvent.Callback android.view.LayoutInflater.Factory2 android.view.View.OnCreateContextMenuListener android.view.Window.Callback {
+    method public void onMovedToDisplay(int, android.content.res.Configuration);
+  }
+
+  public class ActivityManager {
+    method public void alwaysShowUnsupportedCompileSdkWarning(android.content.ComponentName);
+    method public long getTotalRam();
+    method public static boolean isHighEndGfx();
+    method public static void resumeAppSwitches() throws android.os.RemoteException;
+    method @RequiresPermission(android.Manifest.permission.CHANGE_CONFIGURATION) public void scheduleApplicationInfoChanged(java.util.List<java.lang.String>, int);
+    field public static final int PROCESS_CAPABILITY_ALL = 7; // 0x7
+    field public static final int PROCESS_CAPABILITY_ALL_EXPLICIT = 1; // 0x1
+    field public static final int PROCESS_CAPABILITY_ALL_IMPLICIT = 6; // 0x6
+    field public static final int PROCESS_CAPABILITY_FOREGROUND_CAMERA = 2; // 0x2
+    field public static final int PROCESS_CAPABILITY_FOREGROUND_LOCATION = 1; // 0x1
+    field public static final int PROCESS_CAPABILITY_FOREGROUND_MICROPHONE = 4; // 0x4
+    field public static final int PROCESS_CAPABILITY_NONE = 0; // 0x0
+  }
+
+  public static class ActivityManager.RunningAppProcessInfo implements android.os.Parcelable {
+    field public static final int IMPORTANCE_CANT_SAVE_STATE_PRE_26 = 170; // 0xaa
+  }
+
+  public static class ActivityManager.TaskDescription implements android.os.Parcelable {
+    method public String getIconFilename();
+    method public int getIconResource();
+    method @Nullable public String getIconResourcePackage();
+  }
+
+  public class ActivityOptions {
+    method @NonNull public static android.app.ActivityOptions makeCustomAnimation(@NonNull android.content.Context, int, int, @Nullable android.os.Handler, @Nullable android.app.ActivityOptions.OnAnimationStartedListener, @Nullable android.app.ActivityOptions.OnAnimationFinishedListener);
+    method public static void setExitTransitionTimeout(long);
+    method public void setLaunchActivityType(int);
+    method public void setLaunchTaskId(int);
+    method public void setLaunchWindowingMode(int);
+    method public void setTaskAlwaysOnTop(boolean);
+    method public void setTaskOverlay(boolean, boolean);
+  }
+
+  public static interface ActivityOptions.OnAnimationFinishedListener {
+    method public void onAnimationFinished();
+  }
+
+  public static interface ActivityOptions.OnAnimationStartedListener {
+    method public void onAnimationStarted();
+  }
+
+  public class ActivityTaskManager {
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void clearLaunchParamsForPackages(java.util.List<java.lang.String>);
+    method public static boolean currentUiModeSupportsErrorDialogs(@NonNull android.content.Context);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public String listAllStacks();
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void moveTaskToStack(int, int, boolean);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public boolean moveTopActivityToPinnedStack(int, android.graphics.Rect);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void removeStacksInWindowingModes(int[]) throws java.lang.SecurityException;
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void removeStacksWithActivityTypes(int[]) throws java.lang.SecurityException;
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void requestPictureInPictureMode(@NonNull android.os.IBinder);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void resizeDockedStack(android.graphics.Rect, android.graphics.Rect);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void resizeTask(int, android.graphics.Rect);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void setDisplayToSingleTaskInstance(int);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public boolean setTaskWindowingMode(int, int, boolean) throws java.lang.SecurityException;
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public boolean setTaskWindowingModeSplitScreenPrimary(int, int, boolean, boolean, android.graphics.Rect, boolean) throws java.lang.SecurityException;
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void startSystemLockTaskMode(int);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void stopSystemLockTaskMode();
+    method public static boolean supportsMultiWindow(android.content.Context);
+    method public static boolean supportsSplitScreenMultiWindow(android.content.Context);
+    field public static final int INVALID_STACK_ID = -1; // 0xffffffff
+    field public static final int SPLIT_SCREEN_CREATE_MODE_BOTTOM_OR_RIGHT = 1; // 0x1
+    field public static final int SPLIT_SCREEN_CREATE_MODE_TOP_OR_LEFT = 0; // 0x0
+  }
+
+  public class ActivityView extends android.view.ViewGroup {
+    ctor public ActivityView(android.content.Context);
+    ctor public ActivityView(android.content.Context, android.util.AttributeSet);
+    ctor public ActivityView(android.content.Context, android.util.AttributeSet, int);
+    ctor public ActivityView(android.content.Context, android.util.AttributeSet, int, boolean);
+    ctor public ActivityView(@NonNull android.content.Context, @NonNull android.util.AttributeSet, int, boolean, boolean);
+    method public int getVirtualDisplayId();
+    method public void onLayout(boolean, int, int, int, int);
+    method public void onLocationChanged();
+    method public void performBackPress();
+    method public void release();
+    method public void setCallback(android.app.ActivityView.StateCallback);
+    method public void setForwardedInsets(android.graphics.Insets);
+    method public void startActivity(@NonNull android.content.Intent);
+    method public void startActivity(@NonNull android.content.Intent, android.os.UserHandle);
+    method public void startActivity(@NonNull android.app.PendingIntent);
+    method public void startActivity(@NonNull android.app.PendingIntent, @Nullable android.content.Intent, @NonNull android.app.ActivityOptions);
+  }
+
+  public abstract static class ActivityView.StateCallback {
+    ctor public ActivityView.StateCallback();
+    method public abstract void onActivityViewDestroyed(android.app.ActivityView);
+    method public abstract void onActivityViewReady(android.app.ActivityView);
+    method public void onTaskCreated(int, android.content.ComponentName);
+    method public void onTaskMovedToFront(int);
+    method public void onTaskRemovalStarted(int);
+  }
+
+  public class AppDetailsActivity extends android.app.Activity {
+    ctor public AppDetailsActivity();
+  }
+
+  public class AppOpsManager {
+    method @RequiresPermission("android.permission.MANAGE_APPOPS") public void addHistoricalOps(@NonNull android.app.AppOpsManager.HistoricalOps);
+    method @RequiresPermission("android.permission.MANAGE_APPOPS") public void clearHistory();
+    method @RequiresPermission("android.permission.MANAGE_APPOPS") public void getHistoricalOpsFromDiskRaw(@NonNull android.app.AppOpsManager.HistoricalOpsRequest, @Nullable java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.AppOpsManager.HistoricalOps>);
+    method public static int getNumOps();
+    method public boolean isOperationActive(int, int, String);
+    method @RequiresPermission("android.permission.MANAGE_APPOPS") public void offsetHistory(long);
+    method public static String opToPermission(int);
+    method public static int permissionToOpCode(String);
+    method @RequiresPermission("android.permission.MANAGE_APPOPS") public void rebootHistory(long);
+    method @RequiresPermission("android.permission.MANAGE_APPOPS") public void reloadNonHistoricalState();
+    method @RequiresPermission("android.permission.MANAGE_APPOPS") public void resetHistoryParameters();
+    method @RequiresPermission("android.permission.MANAGE_APPOPS") public void setHistoryParameters(int, long, int);
+    method @RequiresPermission("android.permission.MANAGE_APP_OPS_MODES") public void setMode(int, int, String, int);
+    method public static int strOpToOp(@NonNull String);
+    field public static final int HISTORICAL_MODE_DISABLED = 0; // 0x0
+    field public static final int HISTORICAL_MODE_ENABLED_ACTIVE = 1; // 0x1
+    field public static final int HISTORICAL_MODE_ENABLED_PASSIVE = 2; // 0x2
+    field public static final String KEY_BG_STATE_SETTLE_TIME = "bg_state_settle_time";
+    field public static final String KEY_FG_SERVICE_STATE_SETTLE_TIME = "fg_service_state_settle_time";
+    field public static final String KEY_TOP_STATE_SETTLE_TIME = "top_state_settle_time";
+    field public static final String OPSTR_MANAGE_ONGOING_CALLS = "android:manage_ongoing_calls";
+    field public static final int OP_COARSE_LOCATION = 0; // 0x0
+    field public static final int OP_RECORD_AUDIO = 27; // 0x1b
+    field public static final int OP_START_FOREGROUND = 76; // 0x4c
+    field public static final int OP_SYSTEM_ALERT_WINDOW = 24; // 0x18
+  }
+
+  public static final class AppOpsManager.HistoricalOps implements android.os.Parcelable {
+    ctor public AppOpsManager.HistoricalOps(long, long);
+    method public void increaseAccessCount(int, int, @NonNull String, @Nullable String, int, int, long);
+    method public void increaseAccessDuration(int, int, @NonNull String, @Nullable String, int, int, long);
+    method public void increaseRejectCount(int, int, @NonNull String, @Nullable String, int, int, long);
+    method public void offsetBeginAndEndTime(long);
+  }
+
+  public class DownloadManager {
+    field public static final String COLUMN_MEDIASTORE_URI = "mediastore_uri";
+  }
+
+  public class DreamManager {
+    method @RequiresPermission(android.Manifest.permission.READ_DREAM_STATE) public boolean isDreaming();
+    method @RequiresPermission(android.Manifest.permission.WRITE_DREAM_STATE) public void setActiveDream(@NonNull android.content.ComponentName);
+    method @RequiresPermission(android.Manifest.permission.WRITE_DREAM_STATE) public void startDream(@NonNull android.content.ComponentName);
+    method @RequiresPermission(android.Manifest.permission.WRITE_DREAM_STATE) public void stopDream();
+  }
+
+  public final class NotificationChannel implements android.os.Parcelable {
+    method public int getOriginalImportance();
+    method public boolean isBlockable();
+    method public boolean isImportanceLockedByCriticalDeviceFunction();
+    method public boolean isImportanceLockedByOEM();
+    method public void lockFields(int);
+    method public void setDeleted(boolean);
+    method public void setFgServiceShown(boolean);
+    method public void setImportanceLockedByCriticalDeviceFunction(boolean);
+    method public void setImportanceLockedByOEM(boolean);
+    method public void setImportantConversation(boolean);
+    method public void setOriginalImportance(int);
+  }
+
+  public final class NotificationChannelGroup implements android.os.Parcelable {
+    method public int getUserLockedFields();
+    method public void lockFields(int);
+    method public void setBlocked(boolean);
+  }
+
+  public class NotificationManager {
+    method public void allowAssistantAdjustment(String);
+    method public void disallowAssistantAdjustment(String);
+    method public android.content.ComponentName getEffectsSuppressor();
+    method public boolean matchesCallFilter(android.os.Bundle);
+  }
+
+  public final class PictureInPictureParams implements android.os.Parcelable {
+    method public java.util.List<android.app.RemoteAction> getActions();
+    method public float getAspectRatio();
+    method public android.graphics.Rect getSourceRectHint();
+  }
+
+  public class StatusBarManager {
+    method public void collapsePanels();
+    method public void expandNotificationsPanel();
+    method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void setDisabledForSimNetworkLock(boolean);
+  }
+
+  public class TaskInfo {
+    method @NonNull public android.content.res.Configuration getConfiguration();
+    method @NonNull public android.window.WindowContainerToken getToken();
+  }
+
+  public class TimePickerDialog extends android.app.AlertDialog implements android.content.DialogInterface.OnClickListener android.widget.TimePicker.OnTimeChangedListener {
+    method public android.widget.TimePicker getTimePicker();
+  }
+
+  public final class UiAutomation {
+    method public void destroy();
+    method public android.os.ParcelFileDescriptor[] executeShellCommandRw(String);
+    method @Deprecated public boolean grantRuntimePermission(String, String, android.os.UserHandle);
+    method @Deprecated public boolean revokeRuntimePermission(String, String, android.os.UserHandle);
+    method public void syncInputTransactions();
+  }
+
+  public class UiModeManager {
+    method public boolean isNightModeLocked();
+    method public boolean isUiModeLocked();
+  }
+
+  public class WallpaperManager {
+    method @Nullable public android.graphics.Bitmap getBitmap();
+    method public boolean shouldEnableWideColorGamut();
+    method @RequiresPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) public boolean wallpaperSupportsWcg(int);
+  }
+
+  public class WindowConfiguration implements java.lang.Comparable<android.app.WindowConfiguration> android.os.Parcelable {
+    ctor public WindowConfiguration();
+    method public int compareTo(android.app.WindowConfiguration);
+    method public int describeContents();
+    method public int getActivityType();
+    method public android.graphics.Rect getAppBounds();
+    method public android.graphics.Rect getBounds();
+    method public int getRotation();
+    method public int getWindowingMode();
+    method public void setActivityType(int);
+    method public void setAppBounds(android.graphics.Rect);
+    method public void setBounds(android.graphics.Rect);
+    method public void setRotation(int);
+    method public void setTo(android.app.WindowConfiguration);
+    method public void setWindowingMode(int);
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final int ACTIVITY_TYPE_ASSISTANT = 4; // 0x4
+    field public static final int ACTIVITY_TYPE_DREAM = 5; // 0x5
+    field public static final int ACTIVITY_TYPE_HOME = 2; // 0x2
+    field public static final int ACTIVITY_TYPE_RECENTS = 3; // 0x3
+    field public static final int ACTIVITY_TYPE_STANDARD = 1; // 0x1
+    field public static final int ACTIVITY_TYPE_UNDEFINED = 0; // 0x0
+    field public static final int ROTATION_UNDEFINED = -1; // 0xffffffff
+    field public static final int WINDOWING_MODE_FREEFORM = 5; // 0x5
+    field public static final int WINDOWING_MODE_FULLSCREEN = 1; // 0x1
+    field public static final int WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY = 4; // 0x4
+    field public static final int WINDOWING_MODE_MULTI_WINDOW = 6; // 0x6
+    field public static final int WINDOWING_MODE_PINNED = 2; // 0x2
+    field public static final int WINDOWING_MODE_SPLIT_SCREEN_PRIMARY = 3; // 0x3
+    field public static final int WINDOWING_MODE_SPLIT_SCREEN_SECONDARY = 4; // 0x4
+    field public static final int WINDOWING_MODE_UNDEFINED = 0; // 0x0
+  }
+
+}
+
+package android.app.admin {
+
+  public class DevicePolicyManager {
+    method public long getLastBugReportRequestTime();
+    method public long getLastNetworkLogRetrievalTime();
+    method public long getLastSecurityLogRetrievalTime();
+    method public java.util.List<java.lang.String> getOwnerInstalledCaCerts(@NonNull android.os.UserHandle);
+    method public boolean isCurrentInputMethodSetByOwner();
+    method public boolean isFactoryResetProtectionPolicySupported();
+    field public static final String ACTION_DATA_SHARING_RESTRICTION_APPLIED = "android.app.action.DATA_SHARING_RESTRICTION_APPLIED";
+  }
+
+  public static final class SecurityLog.SecurityEvent implements android.os.Parcelable {
+    ctor public SecurityLog.SecurityEvent(long, byte[]);
+  }
+
+}
+
+package android.app.blob {
+
+  public class BlobStoreManager {
+    method @Nullable public android.app.blob.LeaseInfo getLeaseInfo(@NonNull android.app.blob.BlobHandle) throws java.io.IOException;
+    method public void waitForIdle(long) throws java.lang.InterruptedException, java.util.concurrent.TimeoutException;
+  }
+
+  public final class LeaseInfo implements android.os.Parcelable {
+    ctor public LeaseInfo(@NonNull String, long, @IdRes int, @Nullable CharSequence);
+    method public int describeContents();
+    method @Nullable public CharSequence getDescription();
+    method @IdRes public int getDescriptionResId();
+    method public long getExpiryTimeMillis();
+    method @NonNull public String getPackageName();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.blob.LeaseInfo> CREATOR;
+  }
+
+}
+
+package android.app.prediction {
+
+  public final class AppPredictor {
+    method public android.app.prediction.AppPredictionSessionId getSessionId();
+  }
+
+}
+
+package android.app.role {
+
+  public class RoleControllerManager {
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void isApplicationVisibleForRole(@NonNull String, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void isRoleVisible(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
+  }
+
+}
+
+package android.app.usage {
+
+  public class NetworkStatsManager {
+    method public void setPollForce(boolean);
+  }
+
+  public class StorageStatsManager {
+    method public boolean isQuotaSupported(@NonNull java.util.UUID);
+    method public boolean isReservedSupported(@NonNull java.util.UUID);
+    method @NonNull @WorkerThread public java.util.Collection<android.os.storage.CrateInfo> queryCratesForPackage(@NonNull java.util.UUID, @NonNull String, @NonNull android.os.UserHandle) throws java.io.IOException, android.content.pm.PackageManager.NameNotFoundException;
+    method @NonNull @WorkerThread public java.util.Collection<android.os.storage.CrateInfo> queryCratesForUid(@NonNull java.util.UUID, int) throws java.io.IOException, android.content.pm.PackageManager.NameNotFoundException;
+    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_CRATES) @WorkerThread public java.util.Collection<android.os.storage.CrateInfo> queryCratesForUser(@NonNull java.util.UUID, @NonNull android.os.UserHandle) throws java.io.IOException, android.content.pm.PackageManager.NameNotFoundException;
+  }
+
+  public final class UsageStatsManager {
+    method public void forceUsageSourceSettingRead();
+  }
+
+}
+
+package android.bluetooth {
+
+  public final class BluetoothClass implements android.os.Parcelable {
+    method public int getClassOfDevice();
+  }
+
+}
+
+package android.content {
+
+  public final class AutofillOptions implements android.os.Parcelable {
+    ctor public AutofillOptions(int, boolean);
+    method public int describeContents();
+    method public static android.content.AutofillOptions forWhitelistingItself();
+    method public boolean isAugmentedAutofillEnabled(@NonNull android.content.Context);
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.AutofillOptions> CREATOR;
+    field public long appDisabledExpiration;
+    field public boolean augmentedAutofillEnabled;
+    field public final boolean compatModeEnabled;
+    field @Nullable public android.util.ArrayMap<java.lang.String,java.lang.Long> disabledActivities;
+    field public final int loggingLevel;
+    field @Nullable public android.util.ArraySet<android.content.ComponentName> whitelistedActivitiesForAugmentedAutofill;
+  }
+
+  public final class ContentCaptureOptions implements android.os.Parcelable {
+    ctor public ContentCaptureOptions(int);
+    ctor public ContentCaptureOptions(int, int, int, int, int, @Nullable android.util.ArraySet<android.content.ComponentName>);
+    method public int describeContents();
+    method public static android.content.ContentCaptureOptions forWhitelistingItself();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.ContentCaptureOptions> CREATOR;
+    field public final int idleFlushingFrequencyMs;
+    field public final boolean lite;
+    field public final int logHistorySize;
+    field public final int loggingLevel;
+    field public final int maxBufferSize;
+    field public final int textChangeFlushingFrequencyMs;
+    field @Nullable public final android.util.ArraySet<android.content.ComponentName> whitelistedComponents;
+  }
+
+  public abstract class ContentProvider implements android.content.ComponentCallbacks2 {
+    method @NonNull public static android.os.UserHandle getUserHandleFromUri(@NonNull android.net.Uri);
+  }
+
+  public abstract class ContentResolver {
+    method public static String[] getSyncAdapterPackagesForAuthorityAsUser(String, int);
+  }
+
+  public abstract class Context {
+    method @NonNull public java.io.File getCrateDir(@NonNull String);
+    method public abstract int getDisplayId();
+    method public android.os.UserHandle getUser();
+    method public int getUserId();
+    method public void setAutofillOptions(@Nullable android.content.AutofillOptions);
+    method public void setContentCaptureOptions(@Nullable android.content.ContentCaptureOptions);
+    field public static final String CONTENT_CAPTURE_MANAGER_SERVICE = "content_capture";
+    field public static final String DEVICE_IDLE_CONTROLLER = "deviceidle";
+    field public static final String DREAM_SERVICE = "dream";
+    field public static final String POWER_WHITELIST_MANAGER = "power_whitelist";
+    field public static final String TEST_NETWORK_SERVICE = "test_network";
+  }
+
+  public class ContextWrapper extends android.content.Context {
+    method public int getDisplayId();
+  }
+
+}
+
+package android.content.integrity {
+
+  public class AppIntegrityManager {
+    method @NonNull public android.content.integrity.RuleSet getCurrentRuleSet();
+    method @NonNull public java.util.List<java.lang.String> getWhitelistedRuleProviders();
+  }
+
+}
+
+package android.content.pm {
+
+  public class ActivityInfo extends android.content.pm.ComponentInfo implements android.os.Parcelable {
+    method public static boolean isTranslucentOrFloating(android.content.res.TypedArray);
+    field public static final int RESIZE_MODE_RESIZEABLE = 2; // 0x2
+  }
+
+  public class ApplicationInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
+    method public boolean isPrivilegedApp();
+    method public boolean isSystemApp();
+    field public static final int PRIVATE_FLAG_PRIVILEGED = 8; // 0x8
+    field public int privateFlags;
+  }
+
+  public class LauncherApps {
+    ctor public LauncherApps(android.content.Context);
+  }
+
+  public static class PackageInstaller.SessionParams implements android.os.Parcelable {
+    method public void setInstallerPackageName(@Nullable String);
+  }
+
+  public abstract class PackageManager {
+    method @Nullable public String getContentCaptureServicePackageName();
+    method @Nullable public String getDefaultTextClassifierPackageName();
+    method public abstract int getInstallReason(@NonNull String, @NonNull android.os.UserHandle);
+    method @NonNull public abstract java.util.List<android.content.pm.ApplicationInfo> getInstalledApplicationsAsUser(int, int);
+    method @Nullable public abstract String[] getNamesForUids(int[]);
+    method @NonNull public abstract String getPermissionControllerPackageName();
+    method @NonNull public abstract String getServicesSystemSharedLibraryPackageName();
+    method @NonNull public abstract String getSharedSystemSharedLibraryPackageName();
+    method @Nullable public String getSystemTextClassifierPackageName();
+    method @Nullable public String getWellbeingPackageName();
+    field public static final String FEATURE_ADOPTABLE_STORAGE = "android.software.adoptable_storage";
+    field public static final String FEATURE_FILE_BASED_ENCRYPTION = "android.software.file_based_encryption";
+    field public static final int FLAG_PERMISSION_REVOKE_WHEN_REQUESTED = 128; // 0x80
+    field public static final int MATCH_KNOWN_PACKAGES = 4202496; // 0x402000
+    field public static final String SYSTEM_SHARED_LIBRARY_SERVICES = "android.ext.services";
+    field public static final String SYSTEM_SHARED_LIBRARY_SHARED = "android.ext.shared";
+  }
+
+  public class PermissionInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
+    field public static final int PROTECTION_FLAG_VENDOR_PRIVILEGED = 32768; // 0x8000
+  }
+
+  public final class ProviderInfoList implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public static android.content.pm.ProviderInfoList fromList(@NonNull java.util.List<android.content.pm.ProviderInfo>);
+    method @NonNull public java.util.List<android.content.pm.ProviderInfo> getList();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ProviderInfoList> CREATOR;
+  }
+
+  public final class ShortcutInfo implements android.os.Parcelable {
+    method public boolean isVisibleToPublisher();
+  }
+
+  public class ShortcutManager {
+    ctor public ShortcutManager(android.content.Context);
+  }
+
+}
+
+package android.content.res {
+
+  public final class AssetManager implements java.lang.AutoCloseable {
+    method @NonNull public String[] getApkPaths();
+    method @Nullable public String getLastResourceResolution();
+    method @Nullable public String getOverlayablesToString(String);
+    method public void setResourceResolutionLoggingEnabled(boolean);
+  }
+
+  public final class Configuration implements java.lang.Comparable<android.content.res.Configuration> android.os.Parcelable {
+    field public int assetsSeq;
+    field public final android.app.WindowConfiguration windowConfiguration;
+  }
+
+}
+
+package android.content.rollback {
+
+  public final class RollbackManager {
+    method @RequiresPermission(android.Manifest.permission.TEST_MANAGE_ROLLBACKS) public void blockRollbackManager(long);
+    method @RequiresPermission(android.Manifest.permission.TEST_MANAGE_ROLLBACKS) public void expireRollbackForPackage(@NonNull String);
+    method @RequiresPermission(android.Manifest.permission.TEST_MANAGE_ROLLBACKS) public void reloadPersistedData();
+    field public static final String PROPERTY_ROLLBACK_LIFETIME_MILLIS = "rollback_lifetime_in_millis";
+  }
+
+}
+
+package android.database.sqlite {
+
+  public class SQLiteCompatibilityWalFlags {
+    method public static void reset();
+  }
+
+  public final class SQLiteDebug {
+    method public static void dump(android.util.Printer, String[]);
+    method public static android.database.sqlite.SQLiteDebug.PagerStats getDatabaseInfo();
+  }
+
+  public static class SQLiteDebug.DbStats {
+    ctor public SQLiteDebug.DbStats(String, long, long, int, int, int, int);
+    field public String cache;
+    field public String dbName;
+    field public long dbSize;
+    field public int lookaside;
+    field public long pageSize;
+  }
+
+  public static class SQLiteDebug.PagerStats {
+    ctor public SQLiteDebug.PagerStats();
+    field public java.util.ArrayList<android.database.sqlite.SQLiteDebug.DbStats> dbStats;
+    field public int largestMemAlloc;
+    field public int memoryUsed;
+    field public int pageCacheOverflow;
+  }
+
+  public final class SQLiteDirectCursorDriver implements android.database.sqlite.SQLiteCursorDriver {
+    ctor public SQLiteDirectCursorDriver(android.database.sqlite.SQLiteDatabase, String, String, android.os.CancellationSignal);
+    method public void cursorClosed();
+    method public void cursorDeactivated();
+    method public void cursorRequeried(android.database.Cursor);
+    method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase.CursorFactory, String[]);
+    method public void setBindArguments(String[]);
+  }
+
+  public final class SQLiteGlobal {
+    method public static String getDefaultJournalMode();
+    method public static int getDefaultPageSize();
+    method public static String getDefaultSyncMode();
+    method public static int getIdleConnectionTimeout();
+    method public static int getJournalSizeLimit();
+    method public static int getWALAutoCheckpoint();
+    method public static int getWALConnectionPoolSize();
+    method public static String getWALSyncMode();
+    method public static int releaseMemory();
+  }
+
+}
+
+package android.graphics {
+
+  public final class ImageDecoder implements java.lang.AutoCloseable {
+    method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(android.content.res.Resources, java.io.InputStream, int);
+  }
+
+}
+
+package android.graphics.drawable {
+
+  public class AdaptiveIconDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
+    method public android.graphics.Region getSafeZone();
+    field public static final float MASK_SIZE = 100.0f;
+  }
+
+  public class ColorDrawable extends android.graphics.drawable.Drawable {
+    method public android.graphics.Xfermode getXfermode();
+  }
+
+  public abstract class Drawable {
+    method public boolean hasFocusStateSpecified();
+  }
+
+  public class ShapeDrawable extends android.graphics.drawable.Drawable {
+    method public void setXfermode(@Nullable android.graphics.Xfermode);
+  }
+
+}
+
+package android.hardware.camera2 {
+
+  public final class CameraManager {
+    method public String[] getCameraIdListNoLazy() throws android.hardware.camera2.CameraAccessException;
+  }
+
+}
+
+package android.hardware.display {
+
+  public class AmbientDisplayConfiguration {
+    ctor public AmbientDisplayConfiguration(android.content.Context);
+    method public boolean alwaysOnAvailable();
+    method public boolean alwaysOnAvailableForUser(int);
+    method public boolean alwaysOnEnabled(int);
+  }
+
+  public final class DisplayManager {
+    method public boolean isMinimalPostProcessingRequested(int);
+  }
+
+}
+
+package android.hardware.hdmi {
+
+  public final class HdmiControlServiceWrapper {
+    ctor public HdmiControlServiceWrapper();
+    method @NonNull public android.hardware.hdmi.HdmiControlManager createHdmiControlManager();
+    method @BinderThread public void setDeviceTypes(@NonNull int[]);
+    method @BinderThread public void setPortInfo(@NonNull java.util.List<android.hardware.hdmi.HdmiPortInfo>);
+    field public static final int DEVICE_PURE_CEC_SWITCH = 6; // 0x6
+  }
+
+}
+
+package android.hardware.lights {
+
+  public final class LightsManager {
+    method @NonNull @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public android.hardware.lights.LightState getLightState(@NonNull android.hardware.lights.Light);
+  }
+
+}
+
+package android.hardware.soundtrigger {
+
+  public class KeyphraseEnrollmentInfo {
+    ctor public KeyphraseEnrollmentInfo(@NonNull android.content.pm.PackageManager);
+    method @Nullable public android.hardware.soundtrigger.KeyphraseMetadata getKeyphraseMetadata(@NonNull String, @NonNull java.util.Locale);
+    method @Nullable public android.content.Intent getManageKeyphraseIntent(int, @NonNull String, @NonNull java.util.Locale);
+    method @NonNull public String getParseError();
+    method @NonNull public java.util.Collection<android.hardware.soundtrigger.KeyphraseMetadata> listKeyphraseMetadata();
+    field public static final int MANAGE_ACTION_ENROLL = 0; // 0x0
+    field public static final int MANAGE_ACTION_RE_ENROLL = 1; // 0x1
+    field public static final int MANAGE_ACTION_UN_ENROLL = 2; // 0x2
+  }
+
+  public final class KeyphraseMetadata implements android.os.Parcelable {
+    ctor public KeyphraseMetadata(int, @NonNull String, @NonNull java.util.Set<java.util.Locale>, int);
+    method public int describeContents();
+    method public int getId();
+    method @NonNull public String getKeyphrase();
+    method public int getRecognitionModeFlags();
+    method @NonNull public java.util.Set<java.util.Locale> getSupportedLocales();
+    method public boolean supportsLocale(@Nullable java.util.Locale);
+    method public boolean supportsPhrase(@Nullable String);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.soundtrigger.KeyphraseMetadata> CREATOR;
+  }
+
+  public static final class SoundTrigger.ModelParamRange implements android.os.Parcelable {
+    ctor public SoundTrigger.ModelParamRange(int, int);
+  }
+
+  public static final class SoundTrigger.ModuleProperties implements android.os.Parcelable {
+    ctor public SoundTrigger.ModuleProperties(int, @NonNull String, @NonNull String, @NonNull String, int, @NonNull String, int, int, int, int, boolean, int, boolean, int, boolean, int);
+  }
+
+  public static class SoundTrigger.RecognitionEvent {
+    ctor public SoundTrigger.RecognitionEvent(int, int, boolean, int, int, int, boolean, @NonNull android.media.AudioFormat, @Nullable byte[]);
+  }
+
+}
+
+package android.location {
+
+  public final class GnssClock implements android.os.Parcelable {
+    ctor public GnssClock();
+    method public void reset();
+    method public void resetBiasNanos();
+    method public void resetBiasUncertaintyNanos();
+    method public void resetDriftNanosPerSecond();
+    method public void resetDriftUncertaintyNanosPerSecond();
+    method public void resetElapsedRealtimeNanos();
+    method public void resetElapsedRealtimeUncertaintyNanos();
+    method public void resetFullBiasNanos();
+    method public void resetLeapSecond();
+    method public void resetReferenceCarrierFrequencyHzForIsb();
+    method public void resetReferenceCodeTypeForIsb();
+    method public void resetReferenceConstellationTypeForIsb();
+    method public void resetTimeUncertaintyNanos();
+    method public void set(android.location.GnssClock);
+    method public void setBiasNanos(double);
+    method public void setBiasUncertaintyNanos(@FloatRange(from=0.0f) double);
+    method public void setDriftNanosPerSecond(double);
+    method public void setDriftUncertaintyNanosPerSecond(@FloatRange(from=0.0f) double);
+    method public void setElapsedRealtimeNanos(long);
+    method public void setElapsedRealtimeUncertaintyNanos(@FloatRange(from=0.0f) double);
+    method public void setFullBiasNanos(long);
+    method public void setHardwareClockDiscontinuityCount(int);
+    method public void setLeapSecond(int);
+    method public void setReferenceCarrierFrequencyHzForIsb(@FloatRange(from=0.0) double);
+    method public void setReferenceCodeTypeForIsb(@NonNull String);
+    method public void setReferenceConstellationTypeForIsb(int);
+    method public void setTimeNanos(long);
+    method public void setTimeUncertaintyNanos(@FloatRange(from=0.0f) double);
+  }
+
+  public final class GnssMeasurement implements android.os.Parcelable {
+    ctor public GnssMeasurement();
+    method public void reset();
+    method public void resetAutomaticGainControlLevel();
+    method public void resetBasebandCn0DbHz();
+    method @Deprecated public void resetCarrierCycles();
+    method public void resetCarrierFrequencyHz();
+    method @Deprecated public void resetCarrierPhase();
+    method @Deprecated public void resetCarrierPhaseUncertainty();
+    method public void resetCodeType();
+    method public void resetFullInterSignalBiasNanos();
+    method public void resetFullInterSignalBiasUncertaintyNanos();
+    method public void resetSatelliteInterSignalBiasNanos();
+    method public void resetSatelliteInterSignalBiasUncertaintyNanos();
+    method public void resetSnrInDb();
+    method public void set(android.location.GnssMeasurement);
+    method public void setAccumulatedDeltaRangeMeters(double);
+    method public void setAccumulatedDeltaRangeState(int);
+    method public void setAccumulatedDeltaRangeUncertaintyMeters(double);
+    method public void setAutomaticGainControlLevelInDb(double);
+    method public void setBasebandCn0DbHz(double);
+    method @Deprecated public void setCarrierCycles(long);
+    method public void setCarrierFrequencyHz(float);
+    method @Deprecated public void setCarrierPhase(double);
+    method @Deprecated public void setCarrierPhaseUncertainty(double);
+    method public void setCn0DbHz(double);
+    method public void setCodeType(@NonNull String);
+    method public void setConstellationType(int);
+    method public void setFullInterSignalBiasNanos(double);
+    method public void setFullInterSignalBiasUncertaintyNanos(@FloatRange(from=0.0) double);
+    method public void setMultipathIndicator(int);
+    method public void setPseudorangeRateMetersPerSecond(double);
+    method public void setPseudorangeRateUncertaintyMetersPerSecond(double);
+    method public void setReceivedSvTimeNanos(long);
+    method public void setReceivedSvTimeUncertaintyNanos(long);
+    method public void setSatelliteInterSignalBiasNanos(double);
+    method public void setSatelliteInterSignalBiasUncertaintyNanos(@FloatRange(from=0.0) double);
+    method public void setSnrInDb(double);
+    method public void setState(int);
+    method public void setSvid(int);
+    method public void setTimeOffsetNanos(double);
+    field public static final int ADR_STATE_ALL = 31; // 0x1f
+  }
+
+  public final class GnssMeasurementsEvent implements android.os.Parcelable {
+    ctor public GnssMeasurementsEvent(android.location.GnssClock, android.location.GnssMeasurement[]);
+  }
+
+  public final class GnssNavigationMessage implements android.os.Parcelable {
+    ctor public GnssNavigationMessage();
+    method public void reset();
+    method public void set(android.location.GnssNavigationMessage);
+    method public void setData(byte[]);
+    method public void setMessageId(int);
+    method public void setStatus(int);
+    method public void setSubmessageId(int);
+    method public void setSvid(int);
+    method public void setType(int);
+  }
+
+  public class LocationManager {
+    method @NonNull public String[] getBackgroundThrottlingWhitelist();
+    method @NonNull public String[] getIgnoreSettingsWhitelist();
+    method @Nullable @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public java.util.List<java.lang.String> getProviderPackages(@NonNull String);
+    method @NonNull public java.util.List<android.location.LocationRequest> getTestProviderCurrentRequests(String);
+    field public static final String FUSED_PROVIDER = "fused";
+  }
+
+}
+
+package android.media {
+
+  public final class AudioFocusRequest {
+    method @Nullable public android.media.AudioManager.OnAudioFocusChangeListener getOnAudioFocusChangeListener();
+  }
+
+  public final class AudioFormat implements android.os.Parcelable {
+    method public static int channelCountFromInChannelMask(int);
+    method public static int channelCountFromOutChannelMask(int);
+    method public static int getBytesPerSample(int);
+    method public static boolean isEncodingLinearPcm(int);
+  }
+
+  public class AudioManager {
+    method public boolean hasRegisteredDynamicPolicy();
+  }
+
+  public static final class AudioRecord.MetricsConstants {
+    field public static final String ATTRIBUTES = "android.media.audiorecord.attributes";
+    field public static final String CHANNEL_MASK = "android.media.audiorecord.channelMask";
+    field public static final String DURATION_MS = "android.media.audiorecord.durationMs";
+    field public static final String FRAME_COUNT = "android.media.audiorecord.frameCount";
+    field public static final String PORT_ID = "android.media.audiorecord.portId";
+    field public static final String START_COUNT = "android.media.audiorecord.startCount";
+  }
+
+  public final class AudioRecordingConfiguration implements android.os.Parcelable {
+    ctor public AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]);
+    ctor public AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String);
+  }
+
+  public class AudioSystem {
+    method public static float getMasterBalance();
+    method public static final int getNumStreamTypes();
+    method public static int setMasterBalance(float);
+    field public static final int STREAM_DEFAULT = -1; // 0xffffffff
+  }
+
+  public static final class AudioTrack.MetricsConstants {
+    field public static final String ATTRIBUTES = "android.media.audiotrack.attributes";
+    field public static final String CHANNEL_MASK = "android.media.audiotrack.channelMask";
+    field public static final String ENCODING = "android.media.audiotrack.encoding";
+    field public static final String FRAME_COUNT = "android.media.audiotrack.frameCount";
+    field public static final String PORT_ID = "android.media.audiotrack.portId";
+    field public static final String SAMPLE_RATE = "android.media.audiotrack.sampleRate";
+  }
+
+  public abstract class Image implements java.lang.AutoCloseable {
+    ctor protected Image();
+  }
+
+  public abstract static class Image.Plane {
+    ctor protected Image.Plane();
+  }
+
+  public final class MediaCas implements java.lang.AutoCloseable {
+    method public void forceResourceLost();
+  }
+
+  public static final class MediaCodecInfo.VideoCapabilities.PerformancePoint {
+    ctor public MediaCodecInfo.VideoCapabilities.PerformancePoint(int, int, int, int, @NonNull android.util.Size);
+    ctor public MediaCodecInfo.VideoCapabilities.PerformancePoint(@NonNull android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint, @NonNull android.util.Size);
+    method public int getMaxFrameRate();
+    method public long getMaxMacroBlockRate();
+    method public int getMaxMacroBlocks();
+  }
+
+  public final class MediaRoute2Info implements android.os.Parcelable {
+    method @NonNull public String getOriginalId();
+  }
+
+  public class MediaRouter2.RoutingController {
+    method @NonNull public String getOriginalId();
+  }
+
+  public final class PlaybackParams implements android.os.Parcelable {
+    method public int getAudioStretchMode();
+    method public android.media.PlaybackParams setAudioStretchMode(int);
+  }
+
+  public static final class VolumeShaper.Configuration.Builder {
+    method @NonNull public android.media.VolumeShaper.Configuration.Builder setOptionFlags(int);
+  }
+
+}
+
+package android.media.audiofx {
+
+  public class AudioEffect {
+    method public static int byteArrayToInt(byte[]);
+    method public static short byteArrayToShort(byte[]);
+    method public int getParameter(byte[], byte[]) throws java.lang.IllegalStateException;
+    method public int getParameter(int, byte[]) throws java.lang.IllegalStateException;
+    method public int getParameter(int, int[]) throws java.lang.IllegalStateException;
+    method public int getParameter(int, short[]) throws java.lang.IllegalStateException;
+    method public int getParameter(int[], short[]) throws java.lang.IllegalStateException;
+    method public static byte[] intToByteArray(int);
+    method public static boolean isEffectTypeAvailable(java.util.UUID);
+    method public static boolean isError(int);
+    method public int setParameter(byte[], byte[]) throws java.lang.IllegalStateException;
+    method public int setParameter(int, int) throws java.lang.IllegalStateException;
+    method public int setParameter(int, short) throws java.lang.IllegalStateException;
+    method public int setParameter(int, byte[]) throws java.lang.IllegalStateException;
+    method public int setParameter(int[], int[]) throws java.lang.IllegalStateException;
+    method public int setParameter(int[], byte[]) throws java.lang.IllegalStateException;
+    method public void setParameterListener(android.media.audiofx.AudioEffect.OnParameterChangeListener);
+    method public static byte[] shortToByteArray(short);
+    field public static final java.util.UUID EFFECT_TYPE_NULL;
+  }
+
+  public static class AudioEffect.Descriptor {
+    ctor public AudioEffect.Descriptor(android.os.Parcel);
+    method public void writeToParcel(android.os.Parcel);
+  }
+
+  public static interface AudioEffect.OnParameterChangeListener {
+    method public void onParameterChange(android.media.audiofx.AudioEffect, int, byte[], byte[]);
+  }
+
+}
+
+package android.media.audiopolicy {
+
+  public static class AudioPolicy.Builder {
+    method @NonNull public android.media.audiopolicy.AudioPolicy.Builder setIsTestFocusPolicy(boolean);
+  }
+
+}
+
+package android.media.tv {
+
+  public final class TvInputManager {
+    method public void addHardwareDevice(int);
+    method public void removeHardwareDevice(int);
+  }
+
+}
+
+package android.net {
+
+  public class ConnectivityManager {
+    method @RequiresPermission(anyOf={"android.permission.MANAGE_TEST_NETWORKS", android.Manifest.permission.NETWORK_STACK}) public void simulateDataStall(int, long, @NonNull android.net.Network, @NonNull android.os.PersistableBundle);
+  }
+
+  public class EthernetManager {
+    method public void setIncludeTestInterfaces(boolean);
+  }
+
+  public final class IpSecManager {
+    field public static final int INVALID_SECURITY_PARAMETER_INDEX = 0; // 0x0
+  }
+
+  public final class NetworkCapabilities implements android.os.Parcelable {
+    method public int[] getCapabilities();
+    field public static final int TRANSPORT_TEST = 7; // 0x7
+  }
+
+  public class NetworkStack {
+    method public static void setServiceForTest(@Nullable android.os.IBinder);
+  }
+
+  public final class TestNetworkInterface implements android.os.Parcelable {
+    ctor public TestNetworkInterface(android.os.ParcelFileDescriptor, String);
+    method public int describeContents();
+    method public android.os.ParcelFileDescriptor getFileDescriptor();
+    method public String getInterfaceName();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final android.os.Parcelable.Creator<android.net.TestNetworkInterface> CREATOR;
+  }
+
+  public class TestNetworkManager {
+    method public android.net.TestNetworkInterface createTapInterface();
+    method public android.net.TestNetworkInterface createTunInterface(@NonNull android.net.LinkAddress[]);
+    method public void setupTestNetwork(@NonNull String, @NonNull android.os.IBinder);
+    method public void teardownTestNetwork(@NonNull android.net.Network);
+  }
+
+  public class TrafficStats {
+    method public static long getLoopbackRxBytes();
+    method public static long getLoopbackRxPackets();
+    method public static long getLoopbackTxBytes();
+    method public static long getLoopbackTxPackets();
+  }
+
+}
+
+package android.os {
+
+  public class Build {
+    method public static boolean is64BitAbi(String);
+    field public static final boolean IS_EMULATOR;
+  }
+
+  public static class Build.VERSION {
+    field public static final String[] ACTIVE_CODENAMES;
+    field public static final int FIRST_SDK_INT;
+    field public static final int RESOURCES_SDK_INT;
+  }
+
+  public class DeviceIdleManager {
+    method @NonNull public String[] getSystemPowerWhitelist();
+    method @NonNull public String[] getSystemPowerWhitelistExceptIdle();
+  }
+
+  public class Environment {
+    method public static java.io.File buildPath(java.io.File, java.lang.String...);
+  }
+
+  public final class FileUtils {
+    method public static boolean contains(java.io.File, java.io.File);
+    method @NonNull public static byte[] digest(@NonNull java.io.File, @NonNull String) throws java.io.IOException, java.security.NoSuchAlgorithmException;
+    method @NonNull public static byte[] digest(@NonNull java.io.InputStream, @NonNull String) throws java.io.IOException, java.security.NoSuchAlgorithmException;
+  }
+
+  public final class MessageQueue {
+    method public int postSyncBarrier();
+    method public void removeSyncBarrier(int);
+  }
+
+  public final class Parcel {
+    method public boolean allowSquashing();
+    method public int readExceptionCode();
+    method public void restoreAllowSquashing(boolean);
+  }
+
+  public class ParcelFileDescriptor implements java.io.Closeable android.os.Parcelable {
+    method public static java.io.File getFile(java.io.FileDescriptor) throws java.io.IOException;
+  }
+
+  public class Process {
+    method public static final int getThreadScheduler(int) throws java.lang.IllegalArgumentException;
+    field public static final int FIRST_APP_ZYGOTE_ISOLATED_UID = 90000; // 0x15f90
+    field public static final int FIRST_ISOLATED_UID = 99000; // 0x182b8
+    field public static final int LAST_APP_ZYGOTE_ISOLATED_UID = 98999; // 0x182b7
+    field public static final int LAST_ISOLATED_UID = 99999; // 0x1869f
+    field public static final int NUM_UIDS_PER_APP_ZYGOTE = 100; // 0x64
+  }
+
+  public final class StrictMode {
+    method public static void conditionallyCheckInstanceCounts();
+    method public static void setViolationLogger(android.os.StrictMode.ViolationLogger);
+  }
+
+  public static final class StrictMode.ThreadPolicy.Builder {
+    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectExplicitGc();
+  }
+
+  public static final class StrictMode.ViolationInfo implements android.os.Parcelable {
+    ctor public StrictMode.ViolationInfo(android.os.Parcel);
+    ctor public StrictMode.ViolationInfo(android.os.Parcel, boolean);
+    method public int describeContents();
+    method public void dump(android.util.Printer, String);
+    method public String getStackTrace();
+    method public Class<? extends android.os.strictmode.Violation> getViolationClass();
+    method public String getViolationDetails();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.StrictMode.ViolationInfo> CREATOR;
+    field public String broadcastIntentAction;
+    field public int durationMillis;
+    field public int numAnimationsRunning;
+    field public long numInstances;
+    field public String[] tags;
+    field public int violationNumThisLoop;
+    field public long violationUptimeMillis;
+  }
+
+  public static interface StrictMode.ViolationLogger {
+    method public void log(android.os.StrictMode.ViolationInfo);
+  }
+
+  public static final class StrictMode.VmPolicy.Builder {
+    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectIncorrectContextUse();
+    method @NonNull public android.os.StrictMode.VmPolicy.Builder permitIncorrectContextUse();
+  }
+
+  public final class UserHandle implements android.os.Parcelable {
+    method public static int getUid(int, int);
+    method public static int getUserId(int);
+    method public static boolean isApp(int);
+    field public static final int MIN_SECONDARY_USER_ID = 10; // 0xa
+    field public static final int USER_ALL = -1; // 0xffffffff
+    field public static final int USER_NULL = -10000; // 0xffffd8f0
+    field public static final int USER_SYSTEM = 0; // 0x0
+  }
+
+  public class UserManager {
+    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}) public boolean hasBaseUserRestriction(@NonNull String, @NonNull android.os.UserHandle);
+    method public static boolean isSplitSystemUser();
+  }
+
+  public final class VibrationAttributes implements android.os.Parcelable {
+    method @Deprecated @NonNull public android.media.AudioAttributes getAudioAttributes();
+  }
+
+  public static final class VibrationAttributes.Builder {
+    ctor public VibrationAttributes.Builder(@NonNull android.media.AudioAttributes, @Nullable android.os.VibrationEffect);
+  }
+
+  public abstract class VibrationEffect implements android.os.Parcelable {
+    method public static android.os.VibrationEffect get(int);
+    method public static android.os.VibrationEffect get(int, boolean);
+    method @Nullable public static android.os.VibrationEffect get(android.net.Uri, android.content.Context);
+    method public abstract long getDuration();
+    method protected static int scale(int, float, int);
+    field public static final int EFFECT_POP = 4; // 0x4
+    field public static final int EFFECT_STRENGTH_LIGHT = 0; // 0x0
+    field public static final int EFFECT_STRENGTH_MEDIUM = 1; // 0x1
+    field public static final int EFFECT_STRENGTH_STRONG = 2; // 0x2
+    field public static final int EFFECT_TEXTURE_TICK = 21; // 0x15
+    field public static final int EFFECT_THUD = 3; // 0x3
+    field public static final int[] RINGTONES;
+  }
+
+  public static class VibrationEffect.OneShot extends android.os.VibrationEffect implements android.os.Parcelable {
+    ctor public VibrationEffect.OneShot(android.os.Parcel);
+    ctor public VibrationEffect.OneShot(long, int);
+    method public int getAmplitude();
+    method public long getDuration();
+    method public android.os.VibrationEffect.OneShot scale(float, int);
+    method public void validate();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.VibrationEffect.OneShot> CREATOR;
+  }
+
+  public static class VibrationEffect.Prebaked extends android.os.VibrationEffect implements android.os.Parcelable {
+    ctor public VibrationEffect.Prebaked(android.os.Parcel);
+    ctor public VibrationEffect.Prebaked(int, boolean);
+    method public long getDuration();
+    method public int getEffectStrength();
+    method public int getId();
+    method public void setEffectStrength(int);
+    method public boolean shouldFallback();
+    method public void validate();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.VibrationEffect.Prebaked> CREATOR;
+  }
+
+  public static class VibrationEffect.Waveform extends android.os.VibrationEffect implements android.os.Parcelable {
+    ctor public VibrationEffect.Waveform(android.os.Parcel);
+    ctor public VibrationEffect.Waveform(long[], int[], int);
+    method public int[] getAmplitudes();
+    method public long getDuration();
+    method public int getRepeatIndex();
+    method public long[] getTimings();
+    method public android.os.VibrationEffect.Waveform scale(float, int);
+    method public void validate();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.VibrationEffect.Waveform> CREATOR;
+  }
+
+  public class VintfObject {
+    method public static String[] getHalNamesAndVersions();
+    method public static String getSepolicyVersion();
+    method public static Long getTargetFrameworkCompatibilityMatrixVersion();
+    method public static java.util.Map<java.lang.String,java.lang.String[]> getVndkSnapshots();
+    method public static String[] report();
+  }
+
+  public class VintfRuntimeInfo {
+    method public static String getCpuInfo();
+    method public static String getHardwareId();
+    method public static String getKernelVersion();
+    method public static String getNodeName();
+    method public static String getOsName();
+    method public static String getOsRelease();
+    method public static String getOsVersion();
+  }
+
+  public class WorkSource implements android.os.Parcelable {
+    method public boolean add(int);
+    method public boolean add(int, String);
+    method @Deprecated public android.os.WorkSource addReturningNewbs(android.os.WorkSource);
+    method @Deprecated public android.os.WorkSource[] setReturningDiffs(android.os.WorkSource);
+  }
+
+}
+
+package android.os.health {
+
+  public class HealthKeys {
+    ctor public HealthKeys();
+    field public static final int BASE_PACKAGE = 40000; // 0x9c40
+    field public static final int BASE_PID = 20000; // 0x4e20
+    field public static final int BASE_PROCESS = 30000; // 0x7530
+    field public static final int BASE_SERVICE = 50000; // 0xc350
+    field public static final int BASE_UID = 10000; // 0x2710
+    field public static final int TYPE_COUNT = 5; // 0x5
+    field public static final int TYPE_MEASUREMENT = 1; // 0x1
+    field public static final int TYPE_MEASUREMENTS = 4; // 0x4
+    field public static final int TYPE_STATS = 2; // 0x2
+    field public static final int TYPE_TIMER = 0; // 0x0
+    field public static final int TYPE_TIMERS = 3; // 0x3
+    field public static final int UNKNOWN_KEY = 0; // 0x0
+  }
+
+  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD}) public static @interface HealthKeys.Constant {
+    method public abstract int type();
+  }
+
+  public static class HealthKeys.Constants {
+    ctor public HealthKeys.Constants(Class);
+    method public String getDataType();
+    method public int getIndex(int, int);
+    method public int[] getKeys(int);
+    method public int getSize(int);
+  }
+
+  public class HealthStats {
+    ctor public HealthStats(android.os.Parcel);
+  }
+
+  public class HealthStatsParceler implements android.os.Parcelable {
+    ctor public HealthStatsParceler(android.os.health.HealthStatsWriter);
+    ctor public HealthStatsParceler(android.os.Parcel);
+    method public int describeContents();
+    method public android.os.health.HealthStats getHealthStats();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.health.HealthStatsParceler> CREATOR;
+  }
+
+  public class HealthStatsWriter {
+    ctor public HealthStatsWriter(android.os.health.HealthKeys.Constants);
+    method public void addMeasurement(int, long);
+    method public void addMeasurements(int, String, long);
+    method public void addStats(int, String, android.os.health.HealthStatsWriter);
+    method public void addTimer(int, int, long);
+    method public void addTimers(int, String, android.os.health.TimerStat);
+    method public void flattenToParcel(android.os.Parcel);
+  }
+
+}
+
+package android.os.storage {
+
+  public final class CrateInfo implements android.os.Parcelable {
+    ctor public CrateInfo(@NonNull CharSequence, long);
+    ctor public CrateInfo(@NonNull CharSequence);
+    method @Nullable public static android.os.storage.CrateInfo copyFrom(int, @Nullable String, @Nullable String);
+    method public int describeContents();
+    method public long getExpirationMillis();
+    method @NonNull public CharSequence getLabel();
+    method public void writeToParcel(@Nullable android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.os.storage.CrateInfo> CREATOR;
+  }
+
+  public final class StorageVolume implements android.os.Parcelable {
+    method public String getPath();
+  }
+
+}
+
+package android.os.strictmode {
+
+  public final class ExplicitGcViolation extends android.os.strictmode.Violation {
+  }
+
+}
+
+package android.permission {
+
+  public final class PermissionControllerManager {
+    method @RequiresPermission(android.Manifest.permission.GET_RUNTIME_PERMISSIONS) public void countPermissionApps(@NonNull java.util.List<java.lang.String>, int, @NonNull android.permission.PermissionControllerManager.OnCountPermissionAppsResultCallback, @Nullable android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.GET_RUNTIME_PERMISSIONS) public void getAppPermissions(@NonNull String, @NonNull android.permission.PermissionControllerManager.OnGetAppPermissionResultCallback, @Nullable android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS) public void revokeRuntimePermission(@NonNull String, @NonNull String);
+  }
+
+  public static interface PermissionControllerManager.OnCountPermissionAppsResultCallback {
+    method public void onCountPermissionApps(int);
+  }
+
+  public static interface PermissionControllerManager.OnGetAppPermissionResultCallback {
+    method public void onGetAppPermissions(@NonNull java.util.List<android.permission.RuntimePermissionPresentationInfo>);
+  }
+
+}
+
+package android.print {
+
+  public final class PrintJobInfo implements android.os.Parcelable {
+    method public float getProgress();
+    method @Nullable public CharSequence getStatus(@NonNull android.content.pm.PackageManager);
+  }
+
+  public final class PrinterInfo implements android.os.Parcelable {
+    method @Nullable public android.graphics.drawable.Drawable loadIcon(@NonNull android.content.Context);
+  }
+
+}
+
+package android.provider {
+
+  public interface AndroidDeviceConfig {
+    field public static final String KEY_SYSTEM_GESTURES_EXCLUDED_BY_PRE_Q_STICKY_IMMERSIVE = "system_gestures_excluded_by_pre_q_sticky_immersive";
+    field public static final String KEY_SYSTEM_GESTURE_EXCLUSION_LIMIT_DP = "system_gesture_exclusion_limit_dp";
+  }
+
+  public static final class CalendarContract.Calendars implements android.provider.BaseColumns android.provider.CalendarContract.CalendarColumns android.provider.CalendarContract.SyncColumns {
+    field public static final String[] SYNC_WRITABLE_COLUMNS;
+  }
+
+  public static final class CalendarContract.Events implements android.provider.BaseColumns android.provider.CalendarContract.CalendarColumns android.provider.CalendarContract.EventsColumns android.provider.CalendarContract.SyncColumns {
+    field public static final String[] SYNC_WRITABLE_COLUMNS;
+  }
+
+  public final class ContactsContract {
+    field public static final String HIDDEN_COLUMN_PREFIX = "x_";
+  }
+
+  public static final class ContactsContract.CommonDataKinds.Phone implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
+    field public static final android.net.Uri ENTERPRISE_CONTENT_URI;
+  }
+
+  public static final class ContactsContract.PinnedPositions {
+    field public static final String UNDEMOTE_METHOD = "undemote";
+  }
+
+  public static final class ContactsContract.RawContactsEntity implements android.provider.BaseColumns android.provider.ContactsContract.DataColumns android.provider.ContactsContract.RawContactsColumns {
+    field public static final android.net.Uri CORP_CONTENT_URI;
+  }
+
+  public final class DeviceConfig {
+    field public static final String NAMESPACE_ANDROID = "android";
+  }
+
+  public final class Settings {
+    field public static final int RESET_MODE_PACKAGE_DEFAULTS = 1; // 0x1
+  }
+
+  public static final class Settings.Global extends android.provider.Settings.NameValueTable {
+    field public static final String APP_OPS_CONSTANTS = "app_ops_constants";
+    field public static final String AUTOMATIC_POWER_SAVE_MODE = "automatic_power_save_mode";
+    field public static final String BATTERY_SAVER_CONSTANTS = "battery_saver_constants";
+    field public static final String DYNAMIC_POWER_SAVINGS_DISABLE_THRESHOLD = "dynamic_power_savings_disable_threshold";
+    field public static final String DYNAMIC_POWER_SAVINGS_ENABLED = "dynamic_power_savings_enabled";
+    field public static final String HIDDEN_API_BLACKLIST_EXEMPTIONS = "hidden_api_blacklist_exemptions";
+    field public static final String HIDDEN_API_POLICY = "hidden_api_policy";
+    field public static final String HIDE_ERROR_DIALOGS = "hide_error_dialogs";
+    field public static final String LOCATION_GLOBAL_KILL_SWITCH = "location_global_kill_switch";
+    field public static final String LOCATION_IGNORE_SETTINGS_PACKAGE_WHITELIST = "location_ignore_settings_package_whitelist";
+    field public static final String LOW_POWER_MODE = "low_power";
+    field public static final String LOW_POWER_MODE_STICKY = "low_power_sticky";
+    field public static final String NOTIFICATION_BUBBLES = "notification_bubbles";
+    field public static final String OVERLAY_DISPLAY_DEVICES = "overlay_display_devices";
+    field public static final String USE_OPEN_WIFI_PACKAGE = "use_open_wifi_package";
+  }
+
+  public static final class Settings.Secure extends android.provider.Settings.NameValueTable {
+    field public static final String ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED = "accessibility_display_magnification_enabled";
+    field public static final String ACCESSIBILITY_SHORTCUT_TARGET_SERVICE = "accessibility_shortcut_target_service";
+    field public static final String AUTOFILL_SERVICE = "autofill_service";
+    field public static final String CONTENT_CAPTURE_ENABLED = "content_capture_enabled";
+    field public static final String DISABLED_PRINT_SERVICES = "disabled_print_services";
+    field @Deprecated public static final String ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES = "enabled_notification_policy_access_packages";
+    field public static final String ENABLED_VR_LISTENERS = "enabled_vr_listeners";
+    field public static final String IMMERSIVE_MODE_CONFIRMATIONS = "immersive_mode_confirmations";
+    field public static final String NFC_PAYMENT_DEFAULT_COMPONENT = "nfc_payment_default_component";
+    field public static final String NOTIFICATION_BADGING = "notification_badging";
+    field public static final String POWER_MENU_LOCKED_SHOW_CONTENT = "power_menu_locked_show_content";
+    field public static final String SHOW_IME_WITH_HARD_KEYBOARD = "show_ime_with_hard_keyboard";
+    field @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static final String SYNC_PARENT_SOUNDS = "sync_parent_sounds";
+    field public static final String VOICE_INTERACTION_SERVICE = "voice_interaction_service";
+  }
+
+  public static final class Telephony.Sms.Intents {
+    field public static final String SMS_CARRIER_PROVISION_ACTION = "android.provider.Telephony.SMS_CARRIER_PROVISION";
+  }
+
+  public static final class VoicemailContract.Voicemails implements android.provider.BaseColumns android.provider.OpenableColumns {
+    field public static final String _DATA = "_data";
+  }
+
+}
+
+package android.security {
+
+  public class KeyStoreException extends java.lang.Exception {
+    ctor public KeyStoreException(int, String);
+    method public int getErrorCode();
+  }
+
+}
+
+package android.security.keystore {
+
+  public static final class KeyGenParameterSpec.Builder {
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUniqueIdIncluded(boolean);
+  }
+
+  public final class KeyProtection implements java.security.KeyStore.ProtectionParameter {
+    method public long getBoundToSpecificSecureUserId();
+  }
+
+  public static final class KeyProtection.Builder {
+    method public android.security.keystore.KeyProtection.Builder setBoundToSpecificSecureUserId(long);
+  }
+
+}
+
+package android.service.autofill {
+
+  public final class CharSequenceTransformation extends android.service.autofill.InternalTransformation implements android.os.Parcelable android.service.autofill.Transformation {
+    method public void apply(@NonNull android.service.autofill.ValueFinder, @NonNull android.widget.RemoteViews, int) throws java.lang.Exception;
+  }
+
+  public final class CompositeUserData implements android.os.Parcelable {
+    ctor public CompositeUserData(@Nullable android.service.autofill.UserData, @NonNull android.service.autofill.UserData);
+    method public int describeContents();
+    method public String[] getCategoryIds();
+    method public android.os.Bundle getDefaultFieldClassificationArgs();
+    method @Nullable public String getFieldClassificationAlgorithm();
+    method @Nullable public String getFieldClassificationAlgorithmForCategory(@NonNull String);
+    method public android.util.ArrayMap<java.lang.String,java.lang.String> getFieldClassificationAlgorithms();
+    method public android.util.ArrayMap<java.lang.String,android.os.Bundle> getFieldClassificationArgs();
+    method public String[] getValues();
+    method public void writeToParcel(android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.CompositeUserData> CREATOR;
+  }
+
+  public final class CustomDescription implements android.os.Parcelable {
+    method @Nullable public android.util.SparseArray<android.service.autofill.InternalOnClickAction> getActions();
+  }
+
+  public final class DateTransformation extends android.service.autofill.InternalTransformation implements android.os.Parcelable android.service.autofill.Transformation {
+    method public void apply(@NonNull android.service.autofill.ValueFinder, @NonNull android.widget.RemoteViews, int) throws java.lang.Exception;
+  }
+
+  public final class DateValueSanitizer extends android.service.autofill.InternalSanitizer implements android.os.Parcelable android.service.autofill.Sanitizer {
+    method @Nullable public android.view.autofill.AutofillValue sanitize(@NonNull android.view.autofill.AutofillValue);
+  }
+
+  public final class FillResponse implements android.os.Parcelable {
+    method public int getFlags();
+  }
+
+  public final class ImageTransformation extends android.service.autofill.InternalTransformation implements android.os.Parcelable android.service.autofill.Transformation {
+    method public void apply(@NonNull android.service.autofill.ValueFinder, @NonNull android.widget.RemoteViews, int) throws java.lang.Exception;
+  }
+
+  public abstract class InternalOnClickAction implements android.service.autofill.OnClickAction android.os.Parcelable {
+    ctor public InternalOnClickAction();
+    method public abstract void onClick(@NonNull android.view.ViewGroup);
+  }
+
+  public abstract class InternalSanitizer implements android.os.Parcelable android.service.autofill.Sanitizer {
+    ctor public InternalSanitizer();
+    method @Nullable public abstract android.view.autofill.AutofillValue sanitize(@NonNull android.view.autofill.AutofillValue);
+  }
+
+  public abstract class InternalTransformation implements android.os.Parcelable android.service.autofill.Transformation {
+    ctor public InternalTransformation();
+    method public static boolean batchApply(@NonNull android.service.autofill.ValueFinder, @NonNull android.widget.RemoteViews, @NonNull java.util.ArrayList<android.util.Pair<java.lang.Integer,android.service.autofill.InternalTransformation>>);
+  }
+
+  public abstract class InternalValidator implements android.os.Parcelable android.service.autofill.Validator {
+    ctor public InternalValidator();
+    method public abstract boolean isValid(@NonNull android.service.autofill.ValueFinder);
+  }
+
+  public final class LuhnChecksumValidator extends android.service.autofill.InternalValidator implements android.os.Parcelable android.service.autofill.Validator {
+    method public boolean isValid(@NonNull android.service.autofill.ValueFinder);
+  }
+
+  public final class RegexValidator extends android.service.autofill.InternalValidator implements android.os.Parcelable android.service.autofill.Validator {
+    method public boolean isValid(@NonNull android.service.autofill.ValueFinder);
+  }
+
+  public final class TextValueSanitizer extends android.service.autofill.InternalSanitizer implements android.os.Parcelable android.service.autofill.Sanitizer {
+    method @Nullable public android.view.autofill.AutofillValue sanitize(@NonNull android.view.autofill.AutofillValue);
+  }
+
+  public final class UserData implements android.os.Parcelable {
+    method public android.util.ArrayMap<java.lang.String,java.lang.String> getFieldClassificationAlgorithms();
+  }
+
+  public interface ValueFinder {
+    method @Nullable public default String findByAutofillId(@NonNull android.view.autofill.AutofillId);
+    method @Nullable public android.view.autofill.AutofillValue findRawValueByAutofillId(@NonNull android.view.autofill.AutofillId);
+  }
+
+  public final class VisibilitySetterAction extends android.service.autofill.InternalOnClickAction implements android.service.autofill.OnClickAction android.os.Parcelable {
+    method public void onClick(@NonNull android.view.ViewGroup);
+  }
+
+}
+
+package android.service.autofill.augmented {
+
+  public final class FillRequest {
+    method @NonNull public android.content.ComponentName getActivityComponent();
+    method @NonNull public android.view.autofill.AutofillId getFocusedId();
+    method @NonNull public android.view.autofill.AutofillValue getFocusedValue();
+    method @Nullable public android.view.inputmethod.InlineSuggestionsRequest getInlineSuggestionsRequest();
+    method @Nullable public android.service.autofill.augmented.PresentationParams getPresentationParams();
+    method public int getTaskId();
+  }
+
+}
+
+package android.service.notification {
+
+  @Deprecated public abstract class ConditionProviderService extends android.app.Service {
+    method @Deprecated public boolean isBound();
+  }
+
+}
+
+package android.service.quickaccesswallet {
+
+  public interface QuickAccessWalletClient extends java.io.Closeable {
+    method public void addWalletServiceEventListener(@NonNull android.service.quickaccesswallet.QuickAccessWalletClient.WalletServiceEventListener);
+    method public void addWalletServiceEventListener(@NonNull java.util.concurrent.Executor, @NonNull android.service.quickaccesswallet.QuickAccessWalletClient.WalletServiceEventListener);
+    method @NonNull public static android.service.quickaccesswallet.QuickAccessWalletClient create(@NonNull android.content.Context);
+    method @Nullable public android.content.Intent createWalletIntent();
+    method @Nullable public android.content.Intent createWalletSettingsIntent();
+    method public void disconnect();
+    method public void getWalletCards(@NonNull android.service.quickaccesswallet.GetWalletCardsRequest, @NonNull android.service.quickaccesswallet.QuickAccessWalletClient.OnWalletCardsRetrievedCallback);
+    method public void getWalletCards(@NonNull java.util.concurrent.Executor, @NonNull android.service.quickaccesswallet.GetWalletCardsRequest, @NonNull android.service.quickaccesswallet.QuickAccessWalletClient.OnWalletCardsRetrievedCallback);
+    method public boolean isWalletFeatureAvailable();
+    method public boolean isWalletFeatureAvailableWhenDeviceLocked();
+    method public boolean isWalletServiceAvailable();
+    method public void notifyWalletDismissed();
+    method public void removeWalletServiceEventListener(@NonNull android.service.quickaccesswallet.QuickAccessWalletClient.WalletServiceEventListener);
+    method public void selectWalletCard(@NonNull android.service.quickaccesswallet.SelectWalletCardRequest);
+  }
+
+  public static interface QuickAccessWalletClient.OnWalletCardsRetrievedCallback {
+    method public void onWalletCardRetrievalError(@NonNull android.service.quickaccesswallet.GetWalletCardsError);
+    method public void onWalletCardsRetrieved(@NonNull android.service.quickaccesswallet.GetWalletCardsResponse);
+  }
+
+  public static interface QuickAccessWalletClient.WalletServiceEventListener {
+    method public void onWalletServiceEvent(@NonNull android.service.quickaccesswallet.WalletServiceEvent);
+  }
+
+}
+
+package android.service.quicksettings {
+
+  public class TileService extends android.app.Service {
+    method public static boolean isQuickSettingsSupported();
+  }
+
+}
+
+package android.service.watchdog {
+
+  public abstract class ExplicitHealthCheckService extends android.app.Service {
+    method public void setCallback(@Nullable android.os.RemoteCallback);
+  }
+
+}
+
+package android.telecom {
+
+  public static class Call.Details {
+    method public String getTelecomCallId();
+  }
+
+  public final class CallAudioState implements android.os.Parcelable {
+    ctor public CallAudioState(boolean, int, int, @Nullable android.bluetooth.BluetoothDevice, @NonNull java.util.Collection<android.bluetooth.BluetoothDevice>);
+  }
+
+  public static final class ConnectionRequest.Builder {
+    ctor public ConnectionRequest.Builder();
+    method @NonNull public android.telecom.ConnectionRequest build();
+    method @NonNull public android.telecom.ConnectionRequest.Builder setAccountHandle(@NonNull android.telecom.PhoneAccountHandle);
+    method @NonNull public android.telecom.ConnectionRequest.Builder setAddress(@NonNull android.net.Uri);
+    method @NonNull public android.telecom.ConnectionRequest.Builder setExtras(@NonNull android.os.Bundle);
+    method @NonNull public android.telecom.ConnectionRequest.Builder setIsAdhocConferenceCall(boolean);
+    method @NonNull public android.telecom.ConnectionRequest.Builder setParticipants(@Nullable java.util.List<android.net.Uri>);
+    method @NonNull public android.telecom.ConnectionRequest.Builder setRttPipeFromInCall(@NonNull android.os.ParcelFileDescriptor);
+    method @NonNull public android.telecom.ConnectionRequest.Builder setRttPipeToInCall(@NonNull android.os.ParcelFileDescriptor);
+    method @NonNull public android.telecom.ConnectionRequest.Builder setShouldShowIncomingCallUi(boolean);
+    method @NonNull public android.telecom.ConnectionRequest.Builder setTelecomCallId(@NonNull String);
+    method @NonNull public android.telecom.ConnectionRequest.Builder setVideoState(int);
+  }
+
+}
+
+package android.telephony {
+
+  public final class BarringInfo implements android.os.Parcelable {
+    ctor public BarringInfo(@Nullable android.telephony.CellIdentity, @NonNull android.util.SparseArray<android.telephony.BarringInfo.BarringServiceInfo>);
+  }
+
+  public static final class BarringInfo.BarringServiceInfo implements android.os.Parcelable {
+    ctor public BarringInfo.BarringServiceInfo(int, boolean, int, int);
+  }
+
+  public class MbmsDownloadSession implements java.lang.AutoCloseable {
+    field public static final String MBMS_DOWNLOAD_SERVICE_OVERRIDE_METADATA = "mbms-download-service-override";
+  }
+
+  public class MbmsGroupCallSession implements java.lang.AutoCloseable {
+    field public static final String MBMS_GROUP_CALL_SERVICE_OVERRIDE_METADATA = "mbms-group-call-service-override";
+  }
+
+  public class MbmsStreamingSession implements java.lang.AutoCloseable {
+    field public static final String MBMS_STREAMING_SERVICE_OVERRIDE_METADATA = "mbms-streaming-service-override";
+  }
+
+  public class PhoneNumberUtils {
+    method public static int getMinMatchForTest();
+    method public static void setMinMatchForTest(int);
+  }
+
+  public class PhoneStateListener {
+    method public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber, int);
+    method @Deprecated public void onOutgoingEmergencySms(@NonNull android.telephony.emergency.EmergencyNumber);
+    method public void onOutgoingEmergencySms(@NonNull android.telephony.emergency.EmergencyNumber, int);
+  }
+
+  public final class PreciseDataConnectionState implements android.os.Parcelable {
+    ctor @Deprecated public PreciseDataConnectionState(int, int, int, @NonNull String, @Nullable android.net.LinkProperties, int);
+  }
+
+  public class ServiceState implements android.os.Parcelable {
+    method public void addNetworkRegistrationInfo(android.telephony.NetworkRegistrationInfo);
+    method public int getDataNetworkType();
+    method public void setCdmaSystemAndNetworkId(int, int);
+    method public void setCellBandwidths(int[]);
+    method public void setChannelNumber(int);
+    method public void setDataRoamingType(int);
+    method public void setRilDataRadioTechnology(int);
+    method public void setRilVoiceRadioTechnology(int);
+    method public void setVoiceRoamingType(int);
+  }
+
+  public final class SmsManager {
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int checkSmsShortCodeDestination(String, String);
+    field public static final int SMS_CATEGORY_FREE_SHORT_CODE = 1; // 0x1
+    field public static final int SMS_CATEGORY_NOT_SHORT_CODE = 0; // 0x0
+    field public static final int SMS_CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE = 3; // 0x3
+    field public static final int SMS_CATEGORY_PREMIUM_SHORT_CODE = 4; // 0x4
+    field public static final int SMS_CATEGORY_STANDARD_SHORT_CODE = 2; // 0x2
+  }
+
+  public class TelephonyManager {
+    method public int addDevicePolicyOverrideApn(@NonNull android.content.Context, @NonNull android.telephony.data.ApnSetting);
+    method public int getCarrierIdListVersion();
+    method @NonNull public java.util.List<android.telephony.data.ApnSetting> getDevicePolicyOverrideApns(@NonNull android.content.Context);
+    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getLine1AlphaTag();
+    method public android.util.Pair<java.lang.Integer,java.lang.Integer> getRadioHalVersion();
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public long getSupportedRadioAccessFamily();
+    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isMobileDataPolicyEnabled(int);
+    method public boolean modifyDevicePolicyOverrideApn(@NonNull android.content.Context, int, @NonNull android.telephony.data.ApnSetting);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void refreshUiccProfile();
+    method @Deprecated public void setCarrierTestOverride(String, String, String, String, String, String, String);
+    method public void setCarrierTestOverride(String, String, String, String, String, String, String, String, String);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setMobileDataPolicyEnabledStatus(int, boolean);
+    field public static final int MOBILE_DATA_POLICY_DATA_ON_NON_DEFAULT_DURING_VOICE_CALL = 1; // 0x1
+    field public static final int MOBILE_DATA_POLICY_MMS_ALWAYS_ALLOWED = 2; // 0x2
+    field public static final int UNKNOWN_CARRIER_ID_LIST_VERSION = -1; // 0xffffffff
+  }
+
+}
+
+package android.telephony.emergency {
+
+  public final class EmergencyNumber implements java.lang.Comparable<android.telephony.emergency.EmergencyNumber> android.os.Parcelable {
+    field public static final int EMERGENCY_NUMBER_SOURCE_TEST = 32; // 0x20
+  }
+
+}
+
+package android.telephony.ims {
+
+  public final class ImsCallProfile implements android.os.Parcelable {
+    field public static final String EXTRA_OEM_EXTRAS = "android.telephony.ims.extra.OEM_EXTRAS";
+  }
+
+}
+
+package android.telephony.ims.feature {
+
+  @Deprecated public static class ImsFeature.Capabilities {
+    field @Deprecated protected int mCapabilities;
+  }
+
+}
+
+package android.text {
+
+  public static final class Selection.MemoryTextWatcher implements android.text.TextWatcher {
+    ctor public Selection.MemoryTextWatcher();
+    method public void afterTextChanged(android.text.Editable);
+    method public void beforeTextChanged(CharSequence, int, int, int);
+    method public void onTextChanged(CharSequence, int, int, int);
+  }
+
+}
+
+package android.transition {
+
+  public class TransitionManager {
+    method public android.transition.Transition getTransition(android.transition.Scene);
+  }
+
+}
+
+package android.util {
+
+  public final class ArraySet<E> implements java.util.Collection<E> java.util.Set<E> {
+    method public E valueAtUnchecked(int);
+  }
+
+  public class FeatureFlagUtils {
+    ctor public FeatureFlagUtils();
+    method public static java.util.Map<java.lang.String,java.lang.String> getAllFeatureFlags();
+    method public static boolean isEnabled(android.content.Context, String);
+    method public static void setEnabled(android.content.Context, String, boolean);
+    field public static final String DYNAMIC_SYSTEM = "settings_dynamic_system";
+    field public static final String FFLAG_OVERRIDE_PREFIX = "sys.fflag.override.";
+    field public static final String FFLAG_PREFIX = "sys.fflag.";
+    field public static final String HEARING_AID_SETTINGS = "settings_bluetooth_hearing_aid";
+    field public static final String PERSIST_PREFIX = "persist.sys.fflag.override.";
+    field public static final String SCREENRECORD_LONG_PRESS = "settings_screenrecord_long_press";
+    field public static final String SEAMLESS_TRANSFER = "settings_seamless_transfer";
+    field public static final String SETTINGS_FUSE_FLAG = "settings_fuse";
+    field public static final String SETTINGS_WIFITRACKER2 = "settings_wifitracker2";
+  }
+
+  public class SparseArrayMap<T> {
+    ctor public SparseArrayMap();
+    method public void add(int, @NonNull String, @Nullable T);
+    method public void clear();
+    method public boolean contains(int, @NonNull String);
+    method public void delete(int);
+    method @Nullable public T delete(int, @NonNull String);
+    method public void forEach(@NonNull java.util.function.Consumer<T>);
+    method @Nullable public T get(int, @NonNull String);
+    method @Nullable public T getOrDefault(int, @NonNull String, T);
+    method public int indexOfKey(int);
+    method public int indexOfKey(int, @NonNull String);
+    method public int keyAt(int);
+    method @NonNull public String keyAt(int, int);
+    method public int numElementsForKey(int);
+    method public int numMaps();
+    method @Nullable public T valueAt(int, int);
+  }
+
+  public class TimeUtils {
+    method public static String formatDuration(long);
+  }
+
+}
+
+package android.util.proto {
+
+  public final class EncodedBuffer {
+    ctor public EncodedBuffer();
+    ctor public EncodedBuffer(int);
+    method public void dumpBuffers(String);
+    method public static void dumpByteString(String, String, byte[]);
+    method public void editRawFixed32(int, int);
+    method public byte[] getBytes(int);
+    method public int getChunkCount();
+    method public String getDebugString();
+    method public int getRawFixed32At(int);
+    method public static int getRawVarint32Size(int);
+    method public static int getRawVarint64Size(long);
+    method public static int getRawZigZag32Size(int);
+    method public static int getRawZigZag64Size(long);
+    method public int getReadPos();
+    method public int getReadableSize();
+    method public int getSize();
+    method public int getWriteBufIndex();
+    method public int getWriteIndex();
+    method public int getWritePos();
+    method public byte readRawByte();
+    method public int readRawFixed32();
+    method public long readRawUnsigned();
+    method public void rewindRead();
+    method public void rewindWriteTo(int);
+    method public void skipRead(int);
+    method public void startEditing();
+    method public void writeFromThisBuffer(int, int);
+    method public void writeRawBuffer(byte[]);
+    method public void writeRawBuffer(byte[], int, int);
+    method public void writeRawByte(byte);
+    method public void writeRawFixed32(int);
+    method public void writeRawFixed64(long);
+    method public void writeRawVarint32(int);
+    method public void writeRawVarint64(long);
+    method public void writeRawZigZag32(int);
+    method public void writeRawZigZag64(long);
+  }
+
+  public class ProtoParseException extends java.lang.RuntimeException {
+    ctor public ProtoParseException(String);
+  }
+
+  public class WireTypeMismatchException extends android.util.proto.ProtoParseException {
+    ctor public WireTypeMismatchException(String);
+  }
+
+}
+
+package android.view {
+
+  public abstract class ActionMode {
+    method public boolean isUiFocusable();
+  }
+
+  public final class Choreographer {
+    method public static long getFrameDelay();
+    method public void postCallback(int, Runnable, Object);
+    method public void postCallbackDelayed(int, Runnable, Object, long);
+    method public void removeCallbacks(int, Runnable, Object);
+    method public static void setFrameDelay(long);
+    field public static final int CALLBACK_ANIMATION = 1; // 0x1
+  }
+
+  public final class Display {
+    method @NonNull public android.graphics.ColorSpace[] getSupportedWideColorGamut();
+    method public int getType();
+    method public boolean hasAccess(int);
+    field public static final int FLAG_TRUSTED = 128; // 0x80
+    field public static final int TYPE_EXTERNAL = 2; // 0x2
+    field public static final int TYPE_INTERNAL = 1; // 0x1
+    field public static final int TYPE_OVERLAY = 4; // 0x4
+    field public static final int TYPE_UNKNOWN = 0; // 0x0
+    field public static final int TYPE_VIRTUAL = 5; // 0x5
+    field public static final int TYPE_WIFI = 3; // 0x3
+  }
+
+  public class FocusFinder {
+    method public static void sort(android.view.View[], int, int, android.view.ViewGroup, boolean);
+  }
+
+  public final class InputDevice implements android.os.Parcelable {
+    method @RequiresPermission("android.permission.DISABLE_INPUT_DEVICE") public void disable();
+    method @RequiresPermission("android.permission.DISABLE_INPUT_DEVICE") public void enable();
+  }
+
+  public class KeyEvent extends android.view.InputEvent implements android.os.Parcelable {
+    method public static String actionToString(int);
+    method public final void setDisplayId(int);
+    field public static final int LAST_KEYCODE = 288; // 0x120
+  }
+
+  public final class KeyboardShortcutGroup implements android.os.Parcelable {
+    ctor public KeyboardShortcutGroup(@Nullable CharSequence, @NonNull java.util.List<android.view.KeyboardShortcutInfo>, boolean);
+    ctor public KeyboardShortcutGroup(@Nullable CharSequence, boolean);
+    method public boolean isSystemGroup();
+  }
+
+  public abstract class LayoutInflater {
+    method public void setPrecompiledLayoutsEnabledForTesting(boolean);
+  }
+
+  public final class MotionEvent extends android.view.InputEvent implements android.os.Parcelable {
+    method public void setActionButton(int);
+    method public void setButtonState(int);
+    method public void setDisplayId(int);
+  }
+
+  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD}) public @interface RemotableViewMethod {
+    method public abstract String asyncImpl() default "";
+  }
+
+  public final class SurfaceControl implements android.os.Parcelable {
+    ctor public SurfaceControl(@NonNull android.view.SurfaceControl, @NonNull String);
+    method public static long acquireFrameRateFlexibilityToken();
+    method public boolean isSameSurface(@NonNull android.view.SurfaceControl);
+    method public static void releaseFrameRateFlexibilityToken(long);
+  }
+
+  public class SurfaceControlViewHost {
+    method public void relayout(android.view.WindowManager.LayoutParams);
+    method public void setView(@NonNull android.view.View, @NonNull android.view.WindowManager.LayoutParams);
+  }
+
+  @UiThread public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.view.KeyEvent.Callback {
+    method public android.view.View getTooltipView();
+    method public boolean isAutofilled();
+    method public static boolean isDefaultFocusHighlightEnabled();
+    method public boolean isDefaultFocusHighlightNeeded(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable);
+    method protected void resetResolvedDrawables();
+    method public void resetResolvedLayoutDirection();
+    method public void resetResolvedPadding();
+    method public void resetResolvedTextAlignment();
+    method public void resetResolvedTextDirection();
+    method public void resetRtlProperties();
+    method public boolean restoreFocusInCluster(int);
+    method public boolean restoreFocusNotInCluster();
+    method public void setAutofilled(boolean, boolean);
+    method public final void setFocusedInCluster();
+    method public void setIsRootNamespace(boolean);
+    method public final void setShowingLayoutBounds(boolean);
+  }
+
+  public class ViewConfiguration {
+    method public long getDeviceGlobalActionKeyTimeout();
+    method public static int getHoverTooltipHideShortTimeout();
+    method public static int getHoverTooltipHideTimeout();
+    method public static int getHoverTooltipShowTimeout();
+    method public static int getLongPressTooltipHideTimeout();
+  }
+
+  public class ViewDebug {
+    method @Deprecated @Nullable public static AutoCloseable startRenderingCommandsCapture(android.view.View, java.util.concurrent.Executor, java.util.function.Function<android.graphics.Picture,java.lang.Boolean>);
+    method @Nullable public static AutoCloseable startRenderingCommandsCapture(android.view.View, java.util.concurrent.Executor, java.util.concurrent.Callable<java.io.OutputStream>);
+  }
+
+  public abstract class Window {
+    method @Nullable public android.view.View getNavigationBarBackgroundView();
+    method @Nullable public android.view.View getStatusBarBackgroundView();
+  }
+
+  public interface WindowManager extends android.view.ViewManager {
+    method public default void setShouldShowIme(int, boolean);
+    method public default void setShouldShowSystemDecors(int, boolean);
+    method public default void setShouldShowWithInsecureKeyguard(int, boolean);
+    method public default boolean shouldShowIme(int);
+    method public default boolean shouldShowSystemDecors(int);
+  }
+
+  public static class WindowManager.LayoutParams extends android.view.ViewGroup.LayoutParams implements android.os.Parcelable {
+    field public static final int ACCESSIBILITY_TITLE_CHANGED = 33554432; // 0x2000000
+    field public static final int PRIVATE_FLAG_NO_MOVE_ANIMATION = 64; // 0x40
+    field public CharSequence accessibilityTitle;
+    field public int privateFlags;
+  }
+
+}
+
+package android.view.accessibility {
+
+  public final class AccessibilityManager {
+    method public void addAccessibilityServicesStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener, @Nullable android.os.Handler);
+    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_ACCESSIBILITY) public java.util.List<java.lang.String> getAccessibilityShortcutTargets(int);
+    method public void removeAccessibilityServicesStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener);
+  }
+
+  public static interface AccessibilityManager.AccessibilityServicesStateChangeListener {
+    method public void onAccessibilityServicesStateChanged(android.view.accessibility.AccessibilityManager);
+  }
+
+  public class AccessibilityNodeInfo implements android.os.Parcelable {
+    method public void addChild(@NonNull android.os.IBinder);
+    method public long getSourceNodeId();
+    method public void setLeashedParent(@Nullable android.os.IBinder, int);
+    method public static void setNumInstancesInUseCounter(java.util.concurrent.atomic.AtomicInteger);
+    method public void writeToParcelNoRecycle(android.os.Parcel, int);
+  }
+
+  public static final class AccessibilityNodeInfo.TouchDelegateInfo implements android.os.Parcelable {
+    method public long getAccessibilityIdForRegion(@NonNull android.graphics.Region);
+  }
+
+  public final class AccessibilityWindowInfo implements android.os.Parcelable {
+    method public static void setNumInstancesInUseCounter(java.util.concurrent.atomic.AtomicInteger);
+  }
+
+}
+
+package android.view.animation {
+
+  public class AnimationUtils {
+    method public static void lockAnimationClock(long);
+    method public static void unlockAnimationClock();
+  }
+
+}
+
+package android.view.autofill {
+
+  public final class AutofillId implements android.os.Parcelable {
+    ctor public AutofillId(int);
+    ctor public AutofillId(@NonNull android.view.autofill.AutofillId, int);
+    ctor public AutofillId(int, int);
+    ctor public AutofillId(@NonNull android.view.autofill.AutofillId, long, int);
+    method public boolean equalsIgnoreSession(@Nullable android.view.autofill.AutofillId);
+    method @NonNull public static android.view.autofill.AutofillId withoutSession(@NonNull android.view.autofill.AutofillId);
+  }
+
+  public final class AutofillManager {
+    field public static final String DEVICE_CONFIG_AUTOFILL_SMART_SUGGESTION_SUPPORTED_MODES = "smart_suggestion_supported_modes";
+    field public static final int FLAG_SMART_SUGGESTION_OFF = 0; // 0x0
+    field public static final int FLAG_SMART_SUGGESTION_SYSTEM = 1; // 0x1
+    field public static final int MAX_TEMP_AUGMENTED_SERVICE_DURATION_MS = 120000; // 0x1d4c0
+  }
+
+}
+
+package android.view.contentcapture {
+
+  public final class ContentCaptureManager {
+    field public static final String DEVICE_CONFIG_PROPERTY_IDLE_FLUSH_FREQUENCY = "idle_flush_frequency";
+    field public static final String DEVICE_CONFIG_PROPERTY_LOGGING_LEVEL = "logging_level";
+    field public static final String DEVICE_CONFIG_PROPERTY_LOG_HISTORY_SIZE = "log_history_size";
+    field public static final String DEVICE_CONFIG_PROPERTY_MAX_BUFFER_SIZE = "max_buffer_size";
+    field public static final String DEVICE_CONFIG_PROPERTY_SERVICE_EXPLICITLY_ENABLED = "service_explicitly_enabled";
+    field public static final String DEVICE_CONFIG_PROPERTY_TEXT_CHANGE_FLUSH_FREQUENCY = "text_change_flush_frequency";
+    field public static final int LOGGING_LEVEL_DEBUG = 1; // 0x1
+    field public static final int LOGGING_LEVEL_OFF = 0; // 0x0
+    field public static final int LOGGING_LEVEL_VERBOSE = 2; // 0x2
+  }
+
+  public final class ViewNode extends android.app.assist.AssistStructure.ViewNode {
+    method @Nullable public static android.view.contentcapture.ViewNode readFromParcel(@NonNull android.os.Parcel);
+    method public static void writeToParcel(@NonNull android.os.Parcel, @Nullable android.view.contentcapture.ViewNode, int);
+  }
+
+  public static final class ViewNode.ViewStructureImpl extends android.view.ViewStructure {
+    ctor public ViewNode.ViewStructureImpl(@NonNull android.view.View);
+    ctor public ViewNode.ViewStructureImpl(@NonNull android.view.autofill.AutofillId, long, int);
+    method public int addChildCount(int);
+    method public void asyncCommit();
+    method public android.view.ViewStructure asyncNewChild(int);
+    method public android.view.autofill.AutofillId getAutofillId();
+    method public int getChildCount();
+    method public android.os.Bundle getExtras();
+    method public CharSequence getHint();
+    method public android.view.contentcapture.ViewNode getNode();
+    method public android.graphics.Rect getTempRect();
+    method public CharSequence getText();
+    method public int getTextSelectionEnd();
+    method public int getTextSelectionStart();
+    method public boolean hasExtras();
+    method public android.view.ViewStructure newChild(int);
+    method public android.view.ViewStructure.HtmlInfo.Builder newHtmlInfoBuilder(String);
+    method public void setAccessibilityFocused(boolean);
+    method public void setActivated(boolean);
+    method public void setAlpha(float);
+    method public void setAssistBlocked(boolean);
+    method public void setAutofillHints(String[]);
+    method public void setAutofillId(android.view.autofill.AutofillId);
+    method public void setAutofillId(android.view.autofill.AutofillId, int);
+    method public void setAutofillOptions(CharSequence[]);
+    method public void setAutofillType(int);
+    method public void setAutofillValue(android.view.autofill.AutofillValue);
+    method public void setCheckable(boolean);
+    method public void setChecked(boolean);
+    method public void setChildCount(int);
+    method public void setClassName(String);
+    method public void setClickable(boolean);
+    method public void setContentDescription(CharSequence);
+    method public void setContextClickable(boolean);
+    method public void setDataIsSensitive(boolean);
+    method public void setDimens(int, int, int, int, int, int);
+    method public void setElevation(float);
+    method public void setEnabled(boolean);
+    method public void setFocusable(boolean);
+    method public void setFocused(boolean);
+    method public void setHint(CharSequence);
+    method public void setHtmlInfo(android.view.ViewStructure.HtmlInfo);
+    method public void setId(int, String, String, String);
+    method public void setInputType(int);
+    method public void setLocaleList(android.os.LocaleList);
+    method public void setLongClickable(boolean);
+    method public void setOpaque(boolean);
+    method public void setSelected(boolean);
+    method public void setText(CharSequence);
+    method public void setText(CharSequence, int, int);
+    method public void setTextLines(int[], int[]);
+    method public void setTextStyle(float, int, int, int);
+    method public void setTransformation(android.graphics.Matrix);
+    method public void setVisibility(int);
+    method public void setWebDomain(String);
+  }
+
+}
+
+package android.view.inputmethod {
+
+  public final class InlineSuggestion implements android.os.Parcelable {
+    method @NonNull public static android.view.inputmethod.InlineSuggestion newInlineSuggestion(@NonNull android.view.inputmethod.InlineSuggestionInfo);
+  }
+
+  public final class InlineSuggestionInfo implements android.os.Parcelable {
+    method @NonNull public static android.view.inputmethod.InlineSuggestionInfo newInlineSuggestionInfo(@NonNull android.widget.inline.InlinePresentationSpec, @NonNull String, @Nullable String[], @NonNull String, boolean);
+  }
+
+  public final class InlineSuggestionsResponse implements android.os.Parcelable {
+    method @NonNull public static android.view.inputmethod.InlineSuggestionsResponse newInlineSuggestionsResponse(@NonNull java.util.List<android.view.inputmethod.InlineSuggestion>);
+  }
+
+  public final class InputMethodManager {
+    method public int getDisplayId();
+    method public boolean isInputMethodPickerShown();
+  }
+
+}
+
+package android.view.inspector {
+
+  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.FIELD}) public @interface InspectableProperty {
+    method public abstract int attributeId() default android.content.res.Resources.ID_NULL;
+    method public abstract android.view.inspector.InspectableProperty.EnumEntry[] enumMapping() default {};
+    method public abstract android.view.inspector.InspectableProperty.FlagEntry[] flagMapping() default {};
+    method public abstract boolean hasAttributeId() default true;
+    method public abstract String name() default "";
+    method public abstract android.view.inspector.InspectableProperty.ValueType valueType() default android.view.inspector.InspectableProperty.ValueType.INFERRED;
+  }
+
+  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE}) public static @interface InspectableProperty.EnumEntry {
+    method public abstract String name();
+    method public abstract int value();
+  }
+
+  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE}) public static @interface InspectableProperty.FlagEntry {
+    method public abstract int mask() default 0;
+    method public abstract String name();
+    method public abstract int target();
+  }
+
+  public enum InspectableProperty.ValueType {
+    enum_constant public static final android.view.inspector.InspectableProperty.ValueType COLOR;
+    enum_constant public static final android.view.inspector.InspectableProperty.ValueType GRAVITY;
+    enum_constant public static final android.view.inspector.InspectableProperty.ValueType INFERRED;
+    enum_constant public static final android.view.inspector.InspectableProperty.ValueType INT_ENUM;
+    enum_constant public static final android.view.inspector.InspectableProperty.ValueType INT_FLAG;
+    enum_constant public static final android.view.inspector.InspectableProperty.ValueType NONE;
+    enum_constant public static final android.view.inspector.InspectableProperty.ValueType RESOURCE_ID;
+  }
+
+}
+
+package android.widget {
+
+  public abstract class AbsListView extends android.widget.AdapterView<android.widget.ListAdapter> implements android.widget.Filter.FilterListener android.text.TextWatcher android.view.ViewTreeObserver.OnGlobalLayoutListener android.view.ViewTreeObserver.OnTouchModeChangeListener {
+    method public final boolean shouldDrawSelector();
+  }
+
+  public class CalendarView extends android.widget.FrameLayout {
+    method public boolean getBoundsForDate(long, android.graphics.Rect);
+  }
+
+  public class DatePicker extends android.widget.FrameLayout {
+    method @android.view.inspector.InspectableProperty(name="datePickerMode", enumMapping={@android.view.inspector.InspectableProperty.EnumEntry(value=android.widget.DatePicker.MODE_SPINNER, name="spinner"), @android.view.inspector.InspectableProperty.EnumEntry(value=android.widget.DatePicker.MODE_CALENDAR, name="calendar")}) public int getMode();
+    field public static final int MODE_CALENDAR = 2; // 0x2
+    field public static final int MODE_SPINNER = 1; // 0x1
+  }
+
+  @UiThread public final class Magnifier {
+    method @Nullable public android.graphics.Bitmap getContent();
+    method public static android.graphics.PointF getMagnifierDefaultSize();
+    method @Nullable public android.graphics.Bitmap getOriginalContent();
+    method public void setOnOperationCompleteCallback(android.widget.Magnifier.Callback);
+  }
+
+  public static interface Magnifier.Callback {
+    method public void onOperationComplete();
+  }
+
+  public class NumberPicker extends android.widget.LinearLayout {
+    method public CharSequence getDisplayedValueForCurrentSelection();
+  }
+
+  public class PopupMenu {
+    method public android.widget.ListView getMenuListView();
+  }
+
+  public class Spinner extends android.widget.AbsSpinner implements android.content.DialogInterface.OnClickListener {
+    method public boolean isPopupShowing();
+  }
+
+  @android.widget.RemoteViews.RemoteView public class TextClock extends android.widget.TextView {
+    method public void disableClockTick();
+  }
+
+  public class TimePicker extends android.widget.FrameLayout {
+    method public android.view.View getAmView();
+    method public android.view.View getHourView();
+    method public android.view.View getMinuteView();
+    method @android.view.inspector.InspectableProperty(name="timePickerMode", enumMapping={@android.view.inspector.InspectableProperty.EnumEntry(name="clock", value=android.widget.TimePicker.MODE_CLOCK), @android.view.inspector.InspectableProperty.EnumEntry(name="spinner", value=android.widget.TimePicker.MODE_SPINNER)}) public int getMode();
+    method public android.view.View getPmView();
+    field public static final int MODE_CLOCK = 2; // 0x2
+    field public static final int MODE_SPINNER = 1; // 0x1
+  }
+
+  public class Toolbar extends android.view.ViewGroup {
+    method @Nullable public android.view.View getNavigationView();
+  }
+
+}
+
+package android.widget.inline {
+
+  public class InlineContentView extends android.view.ViewGroup {
+    method public void setChildSurfacePackageUpdater(@Nullable android.widget.inline.InlineContentView.SurfacePackageUpdater);
+  }
+
+  public static interface InlineContentView.SurfacePackageUpdater {
+    method public void getSurfacePackage(@NonNull java.util.function.Consumer<android.view.SurfaceControlViewHost.SurfacePackage>);
+    method public void onSurfacePackageReleased();
+  }
+
+}
+
+package android.window {
+
+  public final class DisplayAreaInfo implements android.os.Parcelable {
+    ctor public DisplayAreaInfo(@NonNull android.window.WindowContainerToken, int, int);
+    method public int describeContents();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.window.DisplayAreaInfo> CREATOR;
+    field @NonNull public final android.content.res.Configuration configuration;
+    field public final int displayId;
+    field public final int featureId;
+    field @NonNull public final android.window.WindowContainerToken token;
+  }
+
+  public class DisplayAreaOrganizer extends android.window.WindowOrganizer {
+    ctor public DisplayAreaOrganizer();
+    method public void onDisplayAreaAppeared(@NonNull android.window.DisplayAreaInfo, @NonNull android.view.SurfaceControl);
+    method public void onDisplayAreaVanished(@NonNull android.window.DisplayAreaInfo);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void registerOrganizer(int);
+    field public static final int FEATURE_DEFAULT_TASK_CONTAINER = 1; // 0x1
+    field public static final int FEATURE_ROOT = 0; // 0x0
+    field public static final int FEATURE_SYSTEM_FIRST = 0; // 0x0
+    field public static final int FEATURE_SYSTEM_LAST = 10000; // 0x2710
+    field public static final int FEATURE_UNDEFINED = -1; // 0xffffffff
+    field public static final int FEATURE_VENDOR_FIRST = 10001; // 0x2711
+    field public static final int FEATURE_WINDOW_TOKENS = 2; // 0x2
+  }
+
+  public class TaskOrganizer extends android.window.WindowOrganizer {
+    ctor public TaskOrganizer();
+    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public static android.app.ActivityManager.RunningTaskInfo createRootTask(int, int);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public static boolean deleteRootTask(@NonNull android.window.WindowContainerToken);
+    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public static java.util.List<android.app.ActivityManager.RunningTaskInfo> getChildTasks(@NonNull android.window.WindowContainerToken, @NonNull int[]);
+    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public static android.window.WindowContainerToken getImeTarget(int);
+    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public static java.util.List<android.app.ActivityManager.RunningTaskInfo> getRootTasks(int, @NonNull int[]);
+    method @BinderThread public void onBackPressedOnTaskRoot(@NonNull android.app.ActivityManager.RunningTaskInfo);
+    method @BinderThread public void onTaskAppeared(@NonNull android.app.ActivityManager.RunningTaskInfo, @NonNull android.view.SurfaceControl);
+    method @BinderThread public void onTaskInfoChanged(@NonNull android.app.ActivityManager.RunningTaskInfo);
+    method @BinderThread public void onTaskVanished(@NonNull android.app.ActivityManager.RunningTaskInfo);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public final void registerOrganizer(int);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void setInterceptBackPressedOnTaskRoot(boolean);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public static void setLaunchRoot(int, @NonNull android.window.WindowContainerToken);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public final void unregisterOrganizer();
+  }
+
+  public final class WindowContainerToken implements android.os.Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.window.WindowContainerToken> CREATOR;
+  }
+
+  public final class WindowContainerTransaction implements android.os.Parcelable {
+    ctor public WindowContainerTransaction();
+    method public int describeContents();
+    method @NonNull public android.window.WindowContainerTransaction reorder(@NonNull android.window.WindowContainerToken, boolean);
+    method @NonNull public android.window.WindowContainerTransaction reparent(@NonNull android.window.WindowContainerToken, @Nullable android.window.WindowContainerToken, boolean);
+    method @NonNull public android.window.WindowContainerTransaction scheduleFinishEnterPip(@NonNull android.window.WindowContainerToken, @NonNull android.graphics.Rect);
+    method @NonNull public android.window.WindowContainerTransaction setActivityWindowingMode(@NonNull android.window.WindowContainerToken, int);
+    method @NonNull public android.window.WindowContainerTransaction setAppBounds(@NonNull android.window.WindowContainerToken, @NonNull android.graphics.Rect);
+    method @NonNull public android.window.WindowContainerTransaction setBounds(@NonNull android.window.WindowContainerToken, @NonNull android.graphics.Rect);
+    method @NonNull public android.window.WindowContainerTransaction setBoundsChangeTransaction(@NonNull android.window.WindowContainerToken, @NonNull android.view.SurfaceControl.Transaction);
+    method @NonNull public android.window.WindowContainerTransaction setFocusable(@NonNull android.window.WindowContainerToken, boolean);
+    method @NonNull public android.window.WindowContainerTransaction setHidden(@NonNull android.window.WindowContainerToken, boolean);
+    method @NonNull public android.window.WindowContainerTransaction setScreenSizeDp(@NonNull android.window.WindowContainerToken, int, int);
+    method @NonNull public android.window.WindowContainerTransaction setSmallestScreenWidthDp(@NonNull android.window.WindowContainerToken, int);
+    method @NonNull public android.window.WindowContainerTransaction setWindowingMode(@NonNull android.window.WindowContainerToken, int);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.window.WindowContainerTransaction> CREATOR;
+  }
+
+  public abstract class WindowContainerTransactionCallback {
+    ctor public WindowContainerTransactionCallback();
+    method public abstract void onTransactionReady(int, @NonNull android.view.SurfaceControl.Transaction);
+  }
+
+  public class WindowOrganizer {
+    ctor public WindowOrganizer();
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public int applySyncTransaction(@NonNull android.window.WindowContainerTransaction, @NonNull android.window.WindowContainerTransactionCallback);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public static void applyTransaction(@NonNull android.window.WindowContainerTransaction);
+  }
+
+}
+
diff --git a/core/api/test-lint-baseline.txt b/core/api/test-lint-baseline.txt
new file mode 100644
index 0000000..f5ab40a
--- /dev/null
+++ b/core/api/test-lint-baseline.txt
@@ -0,0 +1,3013 @@
+// Baseline format: 1.0
+AcronymName: android.app.NotificationChannel#isImportanceLockedByOEM():
+    
+AcronymName: android.app.NotificationChannel#setImportanceLockedByOEM(boolean):
+    
+
+
+ActionValue: android.location.Location#EXTRA_NO_GPS_LOCATION:
+    
+ActionValue: android.net.TetheringManager#ACTION_TETHER_STATE_CHANGED:
+    
+ActionValue: android.net.TetheringManager#EXTRA_ACTIVE_TETHER:
+    
+ActionValue: android.net.TetheringManager#EXTRA_AVAILABLE_TETHER:
+    
+ActionValue: android.net.TetheringManager#EXTRA_ERRORED_TETHER:
+    
+ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_ADDITIONAL_CALL_INFO:
+    
+ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_CALL_RAT_TYPE:
+    
+ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_CHILD_NUMBER:
+    
+ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_CNA:
+    
+ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_CNAP:
+    
+ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_CODEC:
+    
+ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_DIALSTRING:
+    
+ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_DISPLAY_TEXT:
+    
+ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_EMERGENCY_CALL:
+    
+ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_IS_CALL_PULL:
+    
+ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_OI:
+    
+ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_OIR:
+    
+ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_REMOTE_URI:
+    
+ActionValue: android.telephony.ims.ImsCallProfile#EXTRA_USSD:
+    
+ActionValue: android.telephony.ims.ImsReasonInfo#EXTRA_MSG_SERVICE_NOT_AUTHORIZED:
+    
+ActionValue: android.telephony.mbms.vendor.VendorUtils#ACTION_CLEANUP:
+    
+ActionValue: android.telephony.mbms.vendor.VendorUtils#ACTION_DOWNLOAD_RESULT_INTERNAL:
+    
+ActionValue: android.telephony.mbms.vendor.VendorUtils#ACTION_FILE_DESCRIPTOR_REQUEST:
+    
+ActionValue: android.telephony.mbms.vendor.VendorUtils#EXTRA_FD_COUNT:
+    
+ActionValue: android.telephony.mbms.vendor.VendorUtils#EXTRA_FINAL_URI:
+    
+ActionValue: android.telephony.mbms.vendor.VendorUtils#EXTRA_FREE_URI_LIST:
+    
+ActionValue: android.telephony.mbms.vendor.VendorUtils#EXTRA_PAUSED_LIST:
+    
+ActionValue: android.telephony.mbms.vendor.VendorUtils#EXTRA_PAUSED_URI_LIST:
+    
+ActionValue: android.telephony.mbms.vendor.VendorUtils#EXTRA_SERVICE_ID:
+    
+ActionValue: android.telephony.mbms.vendor.VendorUtils#EXTRA_TEMP_FILES_IN_USE:
+    
+ActionValue: android.telephony.mbms.vendor.VendorUtils#EXTRA_TEMP_FILE_ROOT:
+    
+ActionValue: android.telephony.mbms.vendor.VendorUtils#EXTRA_TEMP_LIST:
+    
+
+
+ArrayReturn: android.app.UiAutomation#executeShellCommandRw(String):
+    
+ArrayReturn: android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel#KeyphraseSoundModel(java.util.UUID, java.util.UUID, byte[], android.hardware.soundtrigger.SoundTrigger.Keyphrase[]) parameter #3:
+    Method parameter should be Collection<Keyphrase> (or subclass) instead of raw array; was `android.hardware.soundtrigger.SoundTrigger.Keyphrase[]`
+ArrayReturn: android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel#KeyphraseSoundModel(java.util.UUID, java.util.UUID, byte[], android.hardware.soundtrigger.SoundTrigger.Keyphrase[], int) parameter #3:
+    Method parameter should be Collection<Keyphrase> (or subclass) instead of raw array; was `android.hardware.soundtrigger.SoundTrigger.Keyphrase[]`
+ArrayReturn: android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel#getKeyphrases():
+    Method should return Collection<Keyphrase> (or subclass) instead of raw array; was `android.hardware.soundtrigger.SoundTrigger.Keyphrase[]`
+ArrayReturn: android.location.GnssMeasurementsEvent#GnssMeasurementsEvent(android.location.GnssClock, android.location.GnssMeasurement[]) parameter #1:
+    
+ArrayReturn: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]) parameter #10:
+    
+ArrayReturn: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]) parameter #11:
+    
+ArrayReturn: android.metrics.LogMaker#LogMaker(Object[]) parameter #0:
+    
+ArrayReturn: android.metrics.LogMaker#deserialize(Object[]) parameter #0:
+    
+ArrayReturn: android.metrics.LogMaker#serialize():
+    
+ArrayReturn: android.net.TestNetworkManager#createTunInterface(android.net.LinkAddress[]) parameter #0:
+    
+ArrayReturn: android.os.HwBlob#wrapArray(boolean[]):
+    
+ArrayReturn: android.os.HwBlob#wrapArray(byte[]):
+    
+ArrayReturn: android.os.HwBlob#wrapArray(double[]):
+    
+ArrayReturn: android.os.HwBlob#wrapArray(float[]):
+    
+ArrayReturn: android.os.HwBlob#wrapArray(int[]):
+    
+ArrayReturn: android.os.HwBlob#wrapArray(long[]):
+    
+ArrayReturn: android.os.HwBlob#wrapArray(short[]):
+    
+ArrayReturn: android.os.NativeHandle#NativeHandle(java.io.FileDescriptor[], int[], boolean) parameter #0:
+    
+ArrayReturn: android.os.NativeHandle#getFileDescriptors():
+    
+ArrayReturn: android.security.keystore.AttestationUtils#attestDeviceIds(android.content.Context, int[], byte[]):
+    
+ArrayReturn: android.telephony.ims.ImsUtListener#onUtConfigurationCallBarringQueried(int, android.telephony.ims.ImsSsInfo[]) parameter #1:
+    
+ArrayReturn: android.telephony.ims.ImsUtListener#onUtConfigurationCallForwardQueried(int, android.telephony.ims.ImsCallForwardInfo[]) parameter #1:
+    
+ArrayReturn: android.telephony.ims.ImsUtListener#onUtConfigurationCallWaitingQueried(int, android.telephony.ims.ImsSsInfo[]) parameter #1:
+    
+ArrayReturn: android.telephony.ims.stub.ImsRegistrationImplBase#onSubscriberAssociatedUriChanged(android.net.Uri[]) parameter #0:
+    
+ArrayReturn: android.view.Display#getSupportedWideColorGamut():
+    Method should return Collection<ColorSpace> (or subclass) instead of raw array; was `android.graphics.ColorSpace[]`
+ArrayReturn: android.view.FocusFinder#sort(android.view.View[], int, int, android.view.ViewGroup, boolean) parameter #0:
+    
+ArrayReturn: android.view.contentcapture.ViewNode#getAutofillOptions():
+    
+ArrayReturn: android.view.contentcapture.ViewNode.ViewStructureImpl#setAutofillOptions(CharSequence[]) parameter #0:
+    
+ArrayReturn: android.view.inspector.InspectableProperty#enumMapping():
+    
+ArrayReturn: android.view.inspector.InspectableProperty#flagMapping():
+    
+
+
+AutoBoxing: android.os.HwBlob#wrapArray(byte[]):
+    
+AutoBoxing: android.os.HwBlob#wrapArray(double[]):
+    
+AutoBoxing: android.os.HwBlob#wrapArray(float[]):
+    
+AutoBoxing: android.os.HwBlob#wrapArray(int[]):
+    
+AutoBoxing: android.os.HwBlob#wrapArray(long[]):
+    
+AutoBoxing: android.os.HwBlob#wrapArray(short[]):
+    
+AutoBoxing: android.os.VintfObject#getTargetFrameworkCompatibilityMatrixVersion():
+    
+
+
+BannedThrow: android.app.ActivityTaskManager#removeStacksInWindowingModes(int[]):
+    
+BannedThrow: android.app.ActivityTaskManager#removeStacksWithActivityTypes(int[]):
+    
+BannedThrow: android.app.ActivityTaskManager#setTaskWindowingMode(int, int, boolean):
+    
+BannedThrow: android.app.ActivityTaskManager#setTaskWindowingModeSplitScreenPrimary(int, int, boolean, boolean, android.graphics.Rect, boolean):
+    
+BannedThrow: android.media.audiofx.AudioEffect#getParameter(byte[], byte[]):
+    
+BannedThrow: android.media.audiofx.AudioEffect#getParameter(int, byte[]):
+    
+BannedThrow: android.media.audiofx.AudioEffect#getParameter(int, int[]):
+    
+BannedThrow: android.media.audiofx.AudioEffect#getParameter(int, short[]):
+    
+BannedThrow: android.media.audiofx.AudioEffect#getParameter(int[], short[]):
+    
+BannedThrow: android.media.audiofx.AudioEffect#setParameter(byte[], byte[]):
+    
+BannedThrow: android.media.audiofx.AudioEffect#setParameter(int, byte[]):
+    
+BannedThrow: android.media.audiofx.AudioEffect#setParameter(int, int):
+    
+BannedThrow: android.media.audiofx.AudioEffect#setParameter(int, short):
+    
+BannedThrow: android.media.audiofx.AudioEffect#setParameter(int[], byte[]):
+    
+BannedThrow: android.media.audiofx.AudioEffect#setParameter(int[], int[]):
+    
+BannedThrow: android.media.audiopolicy.AudioMix.Builder#Builder(android.media.audiopolicy.AudioMixingRule):
+    
+BannedThrow: android.media.audiopolicy.AudioMix.Builder#build():
+    
+BannedThrow: android.media.audiopolicy.AudioMix.Builder#setDevice(android.media.AudioDeviceInfo):
+    
+BannedThrow: android.media.audiopolicy.AudioMix.Builder#setFormat(android.media.AudioFormat):
+    
+BannedThrow: android.media.audiopolicy.AudioMix.Builder#setRouteFlags(int):
+    
+BannedThrow: android.media.audiopolicy.AudioMixingRule.Builder#addMixRule(int, Object):
+    
+BannedThrow: android.media.audiopolicy.AudioMixingRule.Builder#addRule(android.media.AudioAttributes, int):
+    
+BannedThrow: android.media.audiopolicy.AudioMixingRule.Builder#excludeMixRule(int, Object):
+    
+BannedThrow: android.media.audiopolicy.AudioMixingRule.Builder#excludeRule(android.media.AudioAttributes, int):
+    
+BannedThrow: android.media.audiopolicy.AudioPolicy#createAudioRecordSink(android.media.audiopolicy.AudioMix):
+    
+BannedThrow: android.media.audiopolicy.AudioPolicy#createAudioTrackSource(android.media.audiopolicy.AudioMix):
+    
+BannedThrow: android.media.audiopolicy.AudioPolicy#setFocusDuckingBehavior(int):
+    
+BannedThrow: android.media.audiopolicy.AudioPolicy.Builder#addMix(android.media.audiopolicy.AudioMix):
+    
+BannedThrow: android.media.audiopolicy.AudioPolicy.Builder#setLooper(android.os.Looper):
+    
+BannedThrow: android.os.HwBinder#getService(String, String):
+    
+BannedThrow: android.os.HwBinder#getService(String, String, boolean):
+    
+BannedThrow: android.os.Process#getThreadScheduler(int):
+    
+
+
+BuilderSetStyle: android.media.audiopolicy.AudioMixingRule.Builder#allowPrivilegedPlaybackCapture(boolean):
+    Builder methods names should use setFoo() / addFoo() / clearFoo() style: method android.media.audiopolicy.AudioMixingRule.Builder.allowPrivilegedPlaybackCapture(boolean)
+BuilderSetStyle: android.media.audiopolicy.AudioMixingRule.Builder#excludeMixRule(int, Object):
+    Builder methods names should use setFoo() / addFoo() / clearFoo() style: method android.media.audiopolicy.AudioMixingRule.Builder.excludeMixRule(int,Object)
+BuilderSetStyle: android.media.audiopolicy.AudioMixingRule.Builder#excludeRule(android.media.AudioAttributes, int):
+    Builder methods names should use setFoo() / addFoo() / clearFoo() style: method android.media.audiopolicy.AudioMixingRule.Builder.excludeRule(android.media.AudioAttributes,int)
+BuilderSetStyle: android.net.NetworkCapabilities.Builder#removeCapability(int):
+    Builder methods names should use setFoo() / addFoo() / clearFoo() style: method android.net.NetworkCapabilities.Builder.removeCapability(int)
+BuilderSetStyle: android.net.NetworkCapabilities.Builder#removeTransportType(int):
+    Builder methods names should use setFoo() / addFoo() / clearFoo() style: method android.net.NetworkCapabilities.Builder.removeTransportType(int)
+BuilderSetStyle: android.net.metrics.RaEvent.Builder#updateDnsslLifetime(long):
+    Builder methods names should use setFoo() / addFoo() / clearFoo() style: method android.net.metrics.RaEvent.Builder.updateDnsslLifetime(long)
+BuilderSetStyle: android.net.metrics.RaEvent.Builder#updatePrefixPreferredLifetime(long):
+    Builder methods names should use setFoo() / addFoo() / clearFoo() style: method android.net.metrics.RaEvent.Builder.updatePrefixPreferredLifetime(long)
+BuilderSetStyle: android.net.metrics.RaEvent.Builder#updatePrefixValidLifetime(long):
+    Builder methods names should use setFoo() / addFoo() / clearFoo() style: method android.net.metrics.RaEvent.Builder.updatePrefixValidLifetime(long)
+BuilderSetStyle: android.net.metrics.RaEvent.Builder#updateRdnssLifetime(long):
+    Builder methods names should use setFoo() / addFoo() / clearFoo() style: method android.net.metrics.RaEvent.Builder.updateRdnssLifetime(long)
+BuilderSetStyle: android.net.metrics.RaEvent.Builder#updateRouteInfoLifetime(long):
+    Builder methods names should use setFoo() / addFoo() / clearFoo() style: method android.net.metrics.RaEvent.Builder.updateRouteInfoLifetime(long)
+BuilderSetStyle: android.net.metrics.RaEvent.Builder#updateRouterLifetime(long):
+    Builder methods names should use setFoo() / addFoo() / clearFoo() style: method android.net.metrics.RaEvent.Builder.updateRouterLifetime(long)
+BuilderSetStyle: android.os.StrictMode.ThreadPolicy.Builder#detectExplicitGc():
+    Builder methods names should use setFoo() / addFoo() / clearFoo() style: method android.os.StrictMode.ThreadPolicy.Builder.detectExplicitGc()
+BuilderSetStyle: android.os.StrictMode.VmPolicy.Builder#detectIncorrectContextUse():
+    Builder methods names should use setFoo() / addFoo() / clearFoo() style: method android.os.StrictMode.VmPolicy.Builder.detectIncorrectContextUse()
+BuilderSetStyle: android.os.StrictMode.VmPolicy.Builder#permitIncorrectContextUse():
+    Builder methods names should use setFoo() / addFoo() / clearFoo() style: method android.os.StrictMode.VmPolicy.Builder.permitIncorrectContextUse()
+
+
+CallbackInterface: android.app.prediction.AppPredictor.Callback:
+    
+CallbackInterface: android.permission.PermissionControllerManager.OnGetAppPermissionResultCallback:
+    
+CallbackInterface: android.widget.Magnifier.Callback:
+    
+
+
+CallbackMethodName: android.os.RemoteCallback:
+    
+
+
+ConcreteCollection: android.content.AutofillOptions#disabledActivities:
+    
+ConcreteCollection: android.content.AutofillOptions#whitelistedActivitiesForAugmentedAutofill:
+    
+ConcreteCollection: android.content.ContentCaptureOptions#ContentCaptureOptions(int, int, int, int, int, android.util.ArraySet<android.content.ComponentName>) parameter #5:
+    
+ConcreteCollection: android.content.ContentCaptureOptions#whitelistedComponents:
+    
+ConcreteCollection: android.database.sqlite.SQLiteDebug.PagerStats#dbStats:
+    
+ConcreteCollection: android.os.HwParcel#readBoolVector():
+    
+ConcreteCollection: android.os.HwParcel#readDoubleVector():
+    
+ConcreteCollection: android.os.HwParcel#readFloatVector():
+    
+ConcreteCollection: android.os.HwParcel#readInt16Vector():
+    
+ConcreteCollection: android.os.HwParcel#readInt32Vector():
+    
+ConcreteCollection: android.os.HwParcel#readInt64Vector():
+    
+ConcreteCollection: android.os.HwParcel#readInt8Vector():
+    
+ConcreteCollection: android.os.HwParcel#readNativeHandleVector():
+    
+ConcreteCollection: android.os.HwParcel#readStringVector():
+    
+ConcreteCollection: android.os.HwParcel#writeBoolVector(java.util.ArrayList<java.lang.Boolean>) parameter #0:
+    
+ConcreteCollection: android.os.HwParcel#writeDoubleVector(java.util.ArrayList<java.lang.Double>) parameter #0:
+    
+ConcreteCollection: android.os.HwParcel#writeFloatVector(java.util.ArrayList<java.lang.Float>) parameter #0:
+    
+ConcreteCollection: android.os.HwParcel#writeInt16Vector(java.util.ArrayList<java.lang.Short>) parameter #0:
+    
+ConcreteCollection: android.os.HwParcel#writeInt32Vector(java.util.ArrayList<java.lang.Integer>) parameter #0:
+    
+ConcreteCollection: android.os.HwParcel#writeInt64Vector(java.util.ArrayList<java.lang.Long>) parameter #0:
+    
+ConcreteCollection: android.os.HwParcel#writeInt8Vector(java.util.ArrayList<java.lang.Byte>) parameter #0:
+    
+ConcreteCollection: android.os.HwParcel#writeNativeHandleVector(java.util.ArrayList<android.os.NativeHandle>) parameter #0:
+    
+ConcreteCollection: android.os.HwParcel#writeStringVector(java.util.ArrayList<java.lang.String>) parameter #0:
+    
+ConcreteCollection: android.service.autofill.CompositeUserData#getFieldClassificationAlgorithms():
+    
+ConcreteCollection: android.service.autofill.CompositeUserData#getFieldClassificationArgs():
+    
+ConcreteCollection: android.service.autofill.InternalTransformation#batchApply(android.service.autofill.ValueFinder, android.widget.RemoteViews, java.util.ArrayList<android.util.Pair<java.lang.Integer,android.service.autofill.InternalTransformation>>) parameter #2:
+    
+ConcreteCollection: android.service.autofill.UserData#getFieldClassificationAlgorithms():
+    
+ConcreteCollection: android.telephony.ims.ImsConferenceState#mParticipants:
+    
+
+
+ContextFirst: android.os.VibrationEffect#get(android.net.Uri, android.content.Context) parameter #1:
+    
+
+
+ContextNameSuffix: android.telephony.mbms.vendor.MbmsGroupCallServiceBase:
+    
+
+
+EndsWithImpl: android.view.contentcapture.ViewNode.ViewStructureImpl:
+    
+
+
+Enum: android.view.inspector.InspectableProperty.ValueType:
+    
+
+
+EqualsAndHashCode: android.app.prediction.AppPredictionContext#equals(Object):
+    
+EqualsAndHashCode: android.app.prediction.AppTarget#equals(Object):
+    
+EqualsAndHashCode: android.app.prediction.AppTargetEvent#equals(Object):
+    
+EqualsAndHashCode: android.net.apf.ApfCapabilities#equals(Object):
+    
+EqualsAndHashCode: android.net.metrics.ApfProgramEvent#equals(Object):
+    
+EqualsAndHashCode: android.net.metrics.ApfStats#equals(Object):
+    
+EqualsAndHashCode: android.net.metrics.DhcpClientEvent#equals(Object):
+    
+EqualsAndHashCode: android.net.metrics.IpManagerEvent#equals(Object):
+    
+EqualsAndHashCode: android.net.metrics.IpReachabilityEvent#equals(Object):
+    
+EqualsAndHashCode: android.net.metrics.NetworkEvent#equals(Object):
+    
+EqualsAndHashCode: android.net.metrics.RaEvent#equals(Object):
+    
+EqualsAndHashCode: android.net.metrics.ValidationProbeEvent#equals(Object):
+    
+EqualsAndHashCode: android.os.IncidentManager.PendingReport#equals(Object):
+    
+EqualsAndHashCode: android.os.StrictMode.ViolationInfo#hashCode():
+    
+
+
+ExecutorRegistration: android.content.pm.PackageManager#addOnPermissionsChangeListener(android.content.pm.PackageManager.OnPermissionsChangedListener):
+    
+ExecutorRegistration: android.hardware.camera2.CameraDevice#createCustomCaptureSession(android.hardware.camera2.params.InputConfiguration, java.util.List<android.hardware.camera2.params.OutputConfiguration>, int, android.hardware.camera2.CameraCaptureSession.StateCallback, android.os.Handler):
+    
+ExecutorRegistration: android.media.audiofx.AudioEffect#setParameterListener(android.media.audiofx.AudioEffect.OnParameterChangeListener):
+    
+ExecutorRegistration: android.media.audiopolicy.AudioPolicy.Builder#setAudioPolicyFocusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyFocusListener):
+    
+ExecutorRegistration: android.media.audiopolicy.AudioPolicy.Builder#setAudioPolicyStatusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyStatusListener):
+    
+ExecutorRegistration: android.media.audiopolicy.AudioPolicy.Builder#setAudioPolicyVolumeCallback(android.media.audiopolicy.AudioPolicy.AudioPolicyVolumeCallback):
+    
+ExecutorRegistration: android.os.IncidentManager#cancelAuthorization(android.os.IncidentManager.AuthListener):
+    
+ExecutorRegistration: android.os.IncidentManager#requestAuthorization(int, String, int, android.os.IncidentManager.AuthListener):
+    
+ExecutorRegistration: android.os.RemoteCallback#RemoteCallback(android.os.RemoteCallback.OnResultListener, android.os.Handler):
+    
+ExecutorRegistration: android.permission.PermissionControllerManager#countPermissionApps(java.util.List<java.lang.String>, int, android.permission.PermissionControllerManager.OnCountPermissionAppsResultCallback, android.os.Handler):
+    Registration methods should have overload that accepts delivery Executor: `countPermissionApps`
+ExecutorRegistration: android.permission.PermissionControllerManager#getAppPermissions(String, android.permission.PermissionControllerManager.OnGetAppPermissionResultCallback, android.os.Handler):
+    
+ExecutorRegistration: android.service.watchdog.ExplicitHealthCheckService#setCallback(android.os.RemoteCallback):
+    Registration methods should have overload that accepts delivery Executor: `setCallback`
+ExecutorRegistration: android.telephony.ims.stub.ImsCallSessionImplBase#setListener(android.telephony.ims.ImsCallSessionListener):
+    
+ExecutorRegistration: android.telephony.ims.stub.ImsUtImplBase#setListener(android.telephony.ims.ImsUtListener):
+    
+ExecutorRegistration: android.telephony.mbms.vendor.MbmsDownloadServiceBase#addProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener):
+    
+ExecutorRegistration: android.telephony.mbms.vendor.MbmsDownloadServiceBase#addStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener):
+    
+ExecutorRegistration: android.telephony.mbms.vendor.MbmsDownloadServiceBase#initialize(int, android.telephony.mbms.MbmsDownloadSessionCallback):
+    
+ExecutorRegistration: android.telephony.mbms.vendor.MbmsGroupCallServiceBase#initialize(android.telephony.mbms.MbmsGroupCallSessionCallback, int):
+    
+ExecutorRegistration: android.telephony.mbms.vendor.MbmsGroupCallServiceBase#startGroupCall(int, long, java.util.List<java.lang.Integer>, java.util.List<java.lang.Integer>, android.telephony.mbms.GroupCallCallback):
+    
+ExecutorRegistration: android.telephony.mbms.vendor.MbmsStreamingServiceBase#initialize(android.telephony.mbms.MbmsStreamingSessionCallback, int):
+    
+ExecutorRegistration: android.telephony.mbms.vendor.MbmsStreamingServiceBase#startStreaming(int, String, android.telephony.mbms.StreamingServiceCallback):
+    
+ExecutorRegistration: android.window.WindowOrganizer#applySyncTransaction(android.window.WindowContainerTransaction, android.window.WindowContainerTransactionCallback):
+    Registration methods should have overload that accepts delivery Executor: `applySyncTransaction`
+
+
+ForbiddenSuperClass: android.app.AppDetailsActivity:
+    
+
+
+GenericException: android.app.ActivityView#finalize():
+    
+GenericException: android.app.prediction.AppPredictor#finalize():
+    
+GenericException: android.service.autofill.CharSequenceTransformation#apply(android.service.autofill.ValueFinder, android.widget.RemoteViews, int):
+    
+GenericException: android.service.autofill.DateTransformation#apply(android.service.autofill.ValueFinder, android.widget.RemoteViews, int):
+    
+GenericException: android.service.autofill.ImageTransformation#apply(android.service.autofill.ValueFinder, android.widget.RemoteViews, int):
+    
+GenericException: android.service.autofill.augmented.FillWindow#finalize():
+    
+
+
+GetterOnBuilder: android.hardware.display.BrightnessConfiguration.Builder#getMaxCorrectionsByCategory():
+    Getter should be on the built object, not the builder: method android.hardware.display.BrightnessConfiguration.Builder.getMaxCorrectionsByCategory()
+GetterOnBuilder: android.hardware.display.BrightnessConfiguration.Builder#getMaxCorrectionsByPackageName():
+    Getter should be on the built object, not the builder: method android.hardware.display.BrightnessConfiguration.Builder.getMaxCorrectionsByPackageName()
+
+
+GetterSetterNames: android.app.NotificationChannel#isBlockableSystem():
+    
+GetterSetterNames: android.app.NotificationChannel#isImportanceLockedByCriticalDeviceFunction():
+    
+GetterSetterNames: android.app.NotificationChannel#isImportanceLockedByOEM():
+    
+GetterSetterNames: android.location.GnssClock#setBiasNanos(double):
+    
+GetterSetterNames: android.location.GnssClock#setBiasUncertaintyNanos(double):
+    
+GetterSetterNames: android.location.GnssClock#setDriftNanosPerSecond(double):
+    
+GetterSetterNames: android.location.GnssClock#setDriftUncertaintyNanosPerSecond(double):
+    
+GetterSetterNames: android.location.GnssClock#setElapsedRealtimeNanos(long):
+    
+GetterSetterNames: android.location.GnssClock#setElapsedRealtimeUncertaintyNanos(double):
+    
+GetterSetterNames: android.location.GnssClock#setFullBiasNanos(long):
+    
+GetterSetterNames: android.location.GnssClock#setLeapSecond(int):
+    
+GetterSetterNames: android.location.GnssClock#setReferenceCarrierFrequencyHzForIsb(double):
+    
+GetterSetterNames: android.location.GnssClock#setReferenceCodeTypeForIsb(String):
+    
+GetterSetterNames: android.location.GnssClock#setReferenceConstellationTypeForIsb(int):
+    
+GetterSetterNames: android.location.GnssClock#setTimeUncertaintyNanos(double):
+    
+GetterSetterNames: android.location.GnssMeasurement#setBasebandCn0DbHz(double):
+    
+GetterSetterNames: android.location.GnssMeasurement#setCarrierFrequencyHz(float):
+    
+GetterSetterNames: android.location.GnssMeasurement#setCodeType(String):
+    
+GetterSetterNames: android.location.GnssMeasurement#setFullInterSignalBiasNanos(double):
+    
+GetterSetterNames: android.location.GnssMeasurement#setFullInterSignalBiasUncertaintyNanos(double):
+    
+GetterSetterNames: android.location.GnssMeasurement#setSatelliteInterSignalBiasNanos(double):
+    
+GetterSetterNames: android.location.GnssMeasurement#setSatelliteInterSignalBiasUncertaintyNanos(double):
+    
+GetterSetterNames: android.location.GnssMeasurement#setSnrInDb(double):
+    
+GetterSetterNames: android.location.LocationRequest#isLocationSettingsIgnored():
+    
+GetterSetterNames: android.location.LocationRequest#isLowPowerMode():
+    
+GetterSetterNames: android.os.IncidentReportArgs#isAll():
+    
+GetterSetterNames: android.service.notification.NotificationStats#setDirectReplied():
+    
+GetterSetterNames: android.service.notification.NotificationStats#setExpanded():
+    
+GetterSetterNames: android.service.notification.NotificationStats#setSeen():
+    
+GetterSetterNames: android.service.notification.NotificationStats#setSnoozed():
+    
+GetterSetterNames: android.service.notification.NotificationStats#setViewedSettings():
+    
+GetterSetterNames: android.view.View#isAutofilled():
+    
+GetterSetterNames: android.view.View#isDefaultFocusHighlightEnabled():
+    
+
+
+IllegalStateException: android.media.audiopolicy.AudioMix.Builder#build():
+    
+
+
+IntentBuilderName: android.app.backup.BackupManager#getConfigurationIntent(String):
+    
+IntentBuilderName: android.app.backup.BackupManager#getDataManagementIntent(String):
+    
+IntentBuilderName: android.hardware.soundtrigger.KeyphraseEnrollmentInfo#getManageKeyphraseIntent(int, String, java.util.Locale):
+    Methods creating an Intent should be named `create<Foo>Intent()`, was `getManageKeyphraseIntent`
+
+
+IntentName: android.provider.Settings.Secure#VOICE_INTERACTION_SERVICE:
+    
+IntentName: android.provider.Telephony.Sms.Intents#SMS_CARRIER_PROVISION_ACTION:
+    
+IntentName: android.service.notification.Adjustment#KEY_CONTEXTUAL_ACTIONS:
+    
+
+
+InterfaceConstant: android.service.autofill.AutofillFieldClassificationService#SERVICE_INTERFACE:
+    
+InterfaceConstant: android.service.autofill.augmented.AugmentedAutofillService#SERVICE_INTERFACE:
+    
+InterfaceConstant: android.service.contentcapture.ContentCaptureService#SERVICE_INTERFACE:
+    
+InterfaceConstant: android.service.notification.NotificationAssistantService#SERVICE_INTERFACE:
+    
+InterfaceConstant: android.telecom.PhoneAccountSuggestionService#SERVICE_INTERFACE:
+    
+
+
+InternalField: android.telephony.ims.ImsConferenceState#mParticipants:
+    
+
+
+KotlinOperator: android.os.WorkSource#get(int):
+    
+KotlinOperator: android.util.SparseArrayMap#get(int, String):
+    
+
+
+ListenerInterface: android.media.audiopolicy.AudioPolicy.AudioPolicyFocusListener:
+    
+ListenerInterface: android.media.audiopolicy.AudioPolicy.AudioPolicyStatusListener:
+    
+ListenerInterface: android.os.IncidentManager.AuthListener:
+    
+ListenerInterface: android.telephony.ims.ImsCallSessionListener:
+    
+ListenerInterface: android.telephony.ims.ImsUtListener:
+    
+
+
+ListenerLast: android.hardware.camera2.CameraDevice#createCustomCaptureSession(android.hardware.camera2.params.InputConfiguration, java.util.List<android.hardware.camera2.params.OutputConfiguration>, int, android.hardware.camera2.CameraCaptureSession.StateCallback, android.os.Handler) parameter #4:
+    
+ListenerLast: android.location.LocationManager#requestLocationUpdates(android.location.LocationRequest, android.location.LocationListener, android.os.Looper) parameter #2:
+    
+ListenerLast: android.permission.PermissionControllerManager#countPermissionApps(java.util.List<java.lang.String>, int, android.permission.PermissionControllerManager.OnCountPermissionAppsResultCallback, android.os.Handler) parameter #3:
+    Listeners should always be at end of argument list (method `countPermissionApps`)
+ListenerLast: android.permission.PermissionControllerManager#getAppPermissions(String, android.permission.PermissionControllerManager.OnGetAppPermissionResultCallback, android.os.Handler) parameter #2:
+    
+ListenerLast: android.telephony.mbms.vendor.MbmsGroupCallServiceBase#initialize(android.telephony.mbms.MbmsGroupCallSessionCallback, int) parameter #1:
+    
+ListenerLast: android.telephony.mbms.vendor.MbmsStreamingServiceBase#initialize(android.telephony.mbms.MbmsStreamingSessionCallback, int) parameter #1:
+    
+
+
+ManagerConstructor: android.content.pm.ShortcutManager#ShortcutManager(android.content.Context):
+    
+
+
+ManagerLookup: android.telephony.ims.ImsMmTelManager#createForSubscriptionId(int):
+    
+ManagerLookup: android.telephony.ims.ProvisioningManager#createForSubscriptionId(int):
+    
+
+
+MethodNameTense: android.telephony.ims.feature.CapabilityChangeRequest#getCapabilitiesToEnable():
+    
+
+
+MethodNameUnits: android.telephony.ims.ImsCallForwardInfo#getTimeSeconds():
+    
+
+
+MinMaxConstant: android.os.UserHandle#MIN_SECONDARY_USER_ID:
+    
+MinMaxConstant: android.view.autofill.AutofillManager#MAX_TEMP_AUGMENTED_SERVICE_DURATION_MS:
+    
+
+
+MissingGetterMatchingBuilder: android.app.AppOpsManager.HistoricalOpsRequest.Builder#setAttributionTag(String):
+    android.app.AppOpsManager.HistoricalOpsRequest does not declare a `getAttributionTag()` method matching method android.app.AppOpsManager.HistoricalOpsRequest.Builder.setAttributionTag(String)
+MissingGetterMatchingBuilder: android.app.AppOpsManager.HistoricalOpsRequest.Builder#setFlags(int):
+    android.app.AppOpsManager.HistoricalOpsRequest does not declare a `getFlags()` method matching method android.app.AppOpsManager.HistoricalOpsRequest.Builder.setFlags(int)
+MissingGetterMatchingBuilder: android.app.AppOpsManager.HistoricalOpsRequest.Builder#setOpNames(java.util.List<java.lang.String>):
+    android.app.AppOpsManager.HistoricalOpsRequest does not declare a `getOpNames()` method matching method android.app.AppOpsManager.HistoricalOpsRequest.Builder.setOpNames(java.util.List<java.lang.String>)
+MissingGetterMatchingBuilder: android.app.AppOpsManager.HistoricalOpsRequest.Builder#setPackageName(String):
+    android.app.AppOpsManager.HistoricalOpsRequest does not declare a `getPackageName()` method matching method android.app.AppOpsManager.HistoricalOpsRequest.Builder.setPackageName(String)
+MissingGetterMatchingBuilder: android.app.AppOpsManager.HistoricalOpsRequest.Builder#setUid(int):
+    android.app.AppOpsManager.HistoricalOpsRequest does not declare a `getUid()` method matching method android.app.AppOpsManager.HistoricalOpsRequest.Builder.setUid(int)
+MissingGetterMatchingBuilder: android.content.integrity.RuleSet.Builder#addRules(java.util.List<android.content.integrity.Rule>):
+    android.content.integrity.RuleSet does not declare a `getRuless()` method matching method android.content.integrity.RuleSet.Builder.addRules(java.util.List<android.content.integrity.Rule>)
+MissingGetterMatchingBuilder: android.hardware.display.BrightnessConfiguration.Builder#addCorrectionByCategory(int, android.hardware.display.BrightnessCorrection):
+    android.hardware.display.BrightnessConfiguration does not declare a `getCorrectionByCategorys()` method matching method android.hardware.display.BrightnessConfiguration.Builder.addCorrectionByCategory(int,android.hardware.display.BrightnessCorrection)
+MissingGetterMatchingBuilder: android.hardware.display.BrightnessConfiguration.Builder#addCorrectionByPackageName(String, android.hardware.display.BrightnessCorrection):
+    android.hardware.display.BrightnessConfiguration does not declare a `getCorrectionByPackageNames()` method matching method android.hardware.display.BrightnessConfiguration.Builder.addCorrectionByPackageName(String,android.hardware.display.BrightnessCorrection)
+MissingGetterMatchingBuilder: android.hardware.display.BrightnessConfiguration.Builder#setDescription(String):
+    android.hardware.display.BrightnessConfiguration does not declare a `getDescription()` method matching method android.hardware.display.BrightnessConfiguration.Builder.setDescription(String)
+MissingGetterMatchingBuilder: android.hardware.lights.LightsRequest.Builder#setLight(android.hardware.lights.Light, android.hardware.lights.LightState):
+    android.hardware.lights.LightsRequest does not declare a `getLight()` method matching method android.hardware.lights.LightsRequest.Builder.setLight(android.hardware.lights.Light,android.hardware.lights.LightState)
+MissingGetterMatchingBuilder: android.media.VolumeShaper.Configuration.Builder#setOptionFlags(int):
+    android.media.VolumeShaper.Configuration does not declare a `getOptionFlags()` method matching method android.media.VolumeShaper.Configuration.Builder.setOptionFlags(int)
+MissingGetterMatchingBuilder: android.media.audiopolicy.AudioMix.Builder#setDevice(android.media.AudioDeviceInfo):
+    android.media.audiopolicy.AudioMix does not declare a `getDevice()` method matching method android.media.audiopolicy.AudioMix.Builder.setDevice(android.media.AudioDeviceInfo)
+MissingGetterMatchingBuilder: android.media.audiopolicy.AudioMix.Builder#setFormat(android.media.AudioFormat):
+    android.media.audiopolicy.AudioMix does not declare a `getFormat()` method matching method android.media.audiopolicy.AudioMix.Builder.setFormat(android.media.AudioFormat)
+MissingGetterMatchingBuilder: android.media.audiopolicy.AudioMix.Builder#setRouteFlags(int):
+    android.media.audiopolicy.AudioMix does not declare a `getRouteFlags()` method matching method android.media.audiopolicy.AudioMix.Builder.setRouteFlags(int)
+MissingGetterMatchingBuilder: android.media.audiopolicy.AudioMixingRule.Builder#addMixRule(int, Object):
+    android.media.audiopolicy.AudioMixingRule does not declare a `getMixRules()` method matching method android.media.audiopolicy.AudioMixingRule.Builder.addMixRule(int,Object)
+MissingGetterMatchingBuilder: android.media.audiopolicy.AudioMixingRule.Builder#addRule(android.media.AudioAttributes, int):
+    android.media.audiopolicy.AudioMixingRule does not declare a `getRules()` method matching method android.media.audiopolicy.AudioMixingRule.Builder.addRule(android.media.AudioAttributes,int)
+MissingGetterMatchingBuilder: android.media.audiopolicy.AudioPolicy.Builder#addMix(android.media.audiopolicy.AudioMix):
+    android.media.audiopolicy.AudioPolicy does not declare a `getMixs()` method matching method android.media.audiopolicy.AudioPolicy.Builder.addMix(android.media.audiopolicy.AudioMix)
+MissingGetterMatchingBuilder: android.media.audiopolicy.AudioPolicy.Builder#setAudioPolicyFocusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyFocusListener):
+    android.media.audiopolicy.AudioPolicy does not declare a `getAudioPolicyFocusListener()` method matching method android.media.audiopolicy.AudioPolicy.Builder.setAudioPolicyFocusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyFocusListener)
+MissingGetterMatchingBuilder: android.media.audiopolicy.AudioPolicy.Builder#setAudioPolicyStatusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyStatusListener):
+    android.media.audiopolicy.AudioPolicy does not declare a `getAudioPolicyStatusListener()` method matching method android.media.audiopolicy.AudioPolicy.Builder.setAudioPolicyStatusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyStatusListener)
+MissingGetterMatchingBuilder: android.media.audiopolicy.AudioPolicy.Builder#setAudioPolicyVolumeCallback(android.media.audiopolicy.AudioPolicy.AudioPolicyVolumeCallback):
+    android.media.audiopolicy.AudioPolicy does not declare a `getAudioPolicyVolumeCallback()` method matching method android.media.audiopolicy.AudioPolicy.Builder.setAudioPolicyVolumeCallback(android.media.audiopolicy.AudioPolicy.AudioPolicyVolumeCallback)
+MissingGetterMatchingBuilder: android.media.audiopolicy.AudioPolicy.Builder#setIsAudioFocusPolicy(boolean):
+    android.media.audiopolicy.AudioPolicy does not declare a `isIsAudioFocusPolicy()` method matching method android.media.audiopolicy.AudioPolicy.Builder.setIsAudioFocusPolicy(boolean)
+MissingGetterMatchingBuilder: android.media.audiopolicy.AudioPolicy.Builder#setIsTestFocusPolicy(boolean):
+    android.media.audiopolicy.AudioPolicy does not declare a `isIsTestFocusPolicy()` method matching method android.media.audiopolicy.AudioPolicy.Builder.setIsTestFocusPolicy(boolean)
+MissingGetterMatchingBuilder: android.media.audiopolicy.AudioPolicy.Builder#setLooper(android.os.Looper):
+    android.media.audiopolicy.AudioPolicy does not declare a `getLooper()` method matching method android.media.audiopolicy.AudioPolicy.Builder.setLooper(android.os.Looper)
+MissingGetterMatchingBuilder: android.net.CaptivePortalData.Builder#setBytesRemaining(long):
+    android.net.CaptivePortalData does not declare a `getBytesRemaining()` method matching method android.net.CaptivePortalData.Builder.setBytesRemaining(long)
+MissingGetterMatchingBuilder: android.net.CaptivePortalData.Builder#setExpiryTime(long):
+    android.net.CaptivePortalData does not declare a `getExpiryTime()` method matching method android.net.CaptivePortalData.Builder.setExpiryTime(long)
+MissingGetterMatchingBuilder: android.net.CaptivePortalData.Builder#setRefreshTime(long):
+    android.net.CaptivePortalData does not declare a `getRefreshTime()` method matching method android.net.CaptivePortalData.Builder.setRefreshTime(long)
+MissingGetterMatchingBuilder: android.net.NetworkCapabilities.Builder#addCapability(int):
+    android.net.NetworkCapabilities does not declare a `getCapabilitys()` method matching method android.net.NetworkCapabilities.Builder.addCapability(int)
+MissingGetterMatchingBuilder: android.net.NetworkCapabilities.Builder#setRequestorPackageName(String):
+    android.net.NetworkCapabilities does not declare a `getRequestorPackageName()` method matching method android.net.NetworkCapabilities.Builder.setRequestorPackageName(String)
+MissingGetterMatchingBuilder: android.net.NetworkCapabilities.Builder#setRequestorUid(int):
+    android.net.NetworkCapabilities does not declare a `getRequestorUid()` method matching method android.net.NetworkCapabilities.Builder.setRequestorUid(int)
+MissingGetterMatchingBuilder: android.net.TetheringManager.TetheringRequest.Builder#setShouldShowEntitlementUi(boolean):
+    android.net.TetheringManager.TetheringRequest does not declare a `shouldShowEntitlementUi()` method matching method android.net.TetheringManager.TetheringRequest.Builder.setShouldShowEntitlementUi(boolean)
+MissingGetterMatchingBuilder: android.net.TetheringManager.TetheringRequest.Builder#setStaticIpv4Addresses(android.net.LinkAddress, android.net.LinkAddress):
+    android.net.TetheringManager.TetheringRequest does not declare a `getStaticIpv4Addresses()` method matching method android.net.TetheringManager.TetheringRequest.Builder.setStaticIpv4Addresses(android.net.LinkAddress,android.net.LinkAddress)
+MissingGetterMatchingBuilder: android.net.metrics.ApfProgramEvent.Builder#setActualLifetime(long):
+    android.net.metrics.ApfProgramEvent does not declare a `getActualLifetime()` method matching method android.net.metrics.ApfProgramEvent.Builder.setActualLifetime(long)
+MissingGetterMatchingBuilder: android.net.metrics.ApfProgramEvent.Builder#setCurrentRas(int):
+    android.net.metrics.ApfProgramEvent does not declare a `getCurrentRas()` method matching method android.net.metrics.ApfProgramEvent.Builder.setCurrentRas(int)
+MissingGetterMatchingBuilder: android.net.metrics.ApfProgramEvent.Builder#setFilteredRas(int):
+    android.net.metrics.ApfProgramEvent does not declare a `getFilteredRas()` method matching method android.net.metrics.ApfProgramEvent.Builder.setFilteredRas(int)
+MissingGetterMatchingBuilder: android.net.metrics.ApfProgramEvent.Builder#setFlags(boolean, boolean):
+    android.net.metrics.ApfProgramEvent does not declare a `isFlags()` method matching method android.net.metrics.ApfProgramEvent.Builder.setFlags(boolean,boolean)
+MissingGetterMatchingBuilder: android.net.metrics.ApfProgramEvent.Builder#setLifetime(long):
+    android.net.metrics.ApfProgramEvent does not declare a `getLifetime()` method matching method android.net.metrics.ApfProgramEvent.Builder.setLifetime(long)
+MissingGetterMatchingBuilder: android.net.metrics.ApfProgramEvent.Builder#setProgramLength(int):
+    android.net.metrics.ApfProgramEvent does not declare a `getProgramLength()` method matching method android.net.metrics.ApfProgramEvent.Builder.setProgramLength(int)
+MissingGetterMatchingBuilder: android.net.metrics.ApfStats.Builder#setDroppedRas(int):
+    android.net.metrics.ApfStats does not declare a `getDroppedRas()` method matching method android.net.metrics.ApfStats.Builder.setDroppedRas(int)
+MissingGetterMatchingBuilder: android.net.metrics.ApfStats.Builder#setDurationMs(long):
+    android.net.metrics.ApfStats does not declare a `getDurationMs()` method matching method android.net.metrics.ApfStats.Builder.setDurationMs(long)
+MissingGetterMatchingBuilder: android.net.metrics.ApfStats.Builder#setMatchingRas(int):
+    android.net.metrics.ApfStats does not declare a `getMatchingRas()` method matching method android.net.metrics.ApfStats.Builder.setMatchingRas(int)
+MissingGetterMatchingBuilder: android.net.metrics.ApfStats.Builder#setMaxProgramSize(int):
+    android.net.metrics.ApfStats does not declare a `getMaxProgramSize()` method matching method android.net.metrics.ApfStats.Builder.setMaxProgramSize(int)
+MissingGetterMatchingBuilder: android.net.metrics.ApfStats.Builder#setParseErrors(int):
+    android.net.metrics.ApfStats does not declare a `getParseErrors()` method matching method android.net.metrics.ApfStats.Builder.setParseErrors(int)
+MissingGetterMatchingBuilder: android.net.metrics.ApfStats.Builder#setProgramUpdates(int):
+    android.net.metrics.ApfStats does not declare a `getProgramUpdates()` method matching method android.net.metrics.ApfStats.Builder.setProgramUpdates(int)
+MissingGetterMatchingBuilder: android.net.metrics.ApfStats.Builder#setProgramUpdatesAll(int):
+    android.net.metrics.ApfStats does not declare a `getProgramUpdatesAll()` method matching method android.net.metrics.ApfStats.Builder.setProgramUpdatesAll(int)
+MissingGetterMatchingBuilder: android.net.metrics.ApfStats.Builder#setProgramUpdatesAllowingMulticast(int):
+    android.net.metrics.ApfStats does not declare a `getProgramUpdatesAllowingMulticast()` method matching method android.net.metrics.ApfStats.Builder.setProgramUpdatesAllowingMulticast(int)
+MissingGetterMatchingBuilder: android.net.metrics.ApfStats.Builder#setReceivedRas(int):
+    android.net.metrics.ApfStats does not declare a `getReceivedRas()` method matching method android.net.metrics.ApfStats.Builder.setReceivedRas(int)
+MissingGetterMatchingBuilder: android.net.metrics.ApfStats.Builder#setZeroLifetimeRas(int):
+    android.net.metrics.ApfStats does not declare a `getZeroLifetimeRas()` method matching method android.net.metrics.ApfStats.Builder.setZeroLifetimeRas(int)
+MissingGetterMatchingBuilder: android.net.metrics.DhcpClientEvent.Builder#setDurationMs(int):
+    android.net.metrics.DhcpClientEvent does not declare a `getDurationMs()` method matching method android.net.metrics.DhcpClientEvent.Builder.setDurationMs(int)
+MissingGetterMatchingBuilder: android.net.metrics.DhcpClientEvent.Builder#setMsg(String):
+    android.net.metrics.DhcpClientEvent does not declare a `getMsg()` method matching method android.net.metrics.DhcpClientEvent.Builder.setMsg(String)
+MissingGetterMatchingBuilder: android.net.metrics.ValidationProbeEvent.Builder#setDurationMs(long):
+    android.net.metrics.ValidationProbeEvent does not declare a `getDurationMs()` method matching method android.net.metrics.ValidationProbeEvent.Builder.setDurationMs(long)
+MissingGetterMatchingBuilder: android.net.metrics.ValidationProbeEvent.Builder#setProbeType(int, boolean):
+    android.net.metrics.ValidationProbeEvent does not declare a `getProbeType()` method matching method android.net.metrics.ValidationProbeEvent.Builder.setProbeType(int,boolean)
+MissingGetterMatchingBuilder: android.net.metrics.ValidationProbeEvent.Builder#setReturnCode(int):
+    android.net.metrics.ValidationProbeEvent does not declare a `getReturnCode()` method matching method android.net.metrics.ValidationProbeEvent.Builder.setReturnCode(int)
+MissingGetterMatchingBuilder: android.security.keystore.KeyGenParameterSpec.Builder#setUniqueIdIncluded(boolean):
+    android.security.keystore.KeyGenParameterSpec does not declare a `isUniqueIdIncluded()` method matching method android.security.keystore.KeyGenParameterSpec.Builder.setUniqueIdIncluded(boolean)
+MissingGetterMatchingBuilder: android.service.autofill.Dataset.Builder#setFieldInlinePresentation(android.view.autofill.AutofillId, android.view.autofill.AutofillValue, java.util.regex.Pattern, android.service.autofill.InlinePresentation):
+    android.service.autofill.Dataset does not declare a `getFieldInlinePresentation()` method matching method android.service.autofill.Dataset.Builder.setFieldInlinePresentation(android.view.autofill.AutofillId,android.view.autofill.AutofillValue,java.util.regex.Pattern,android.service.autofill.InlinePresentation)
+MissingGetterMatchingBuilder: android.service.autofill.augmented.FillResponse.Builder#setClientState(android.os.Bundle):
+    android.service.autofill.augmented.FillResponse does not declare a `getClientState()` method matching method android.service.autofill.augmented.FillResponse.Builder.setClientState(android.os.Bundle)
+MissingGetterMatchingBuilder: android.service.autofill.augmented.FillResponse.Builder#setFillWindow(android.service.autofill.augmented.FillWindow):
+    android.service.autofill.augmented.FillResponse does not declare a `getFillWindow()` method matching method android.service.autofill.augmented.FillResponse.Builder.setFillWindow(android.service.autofill.augmented.FillWindow)
+MissingGetterMatchingBuilder: android.service.autofill.augmented.FillResponse.Builder#setInlineSuggestions(java.util.List<android.service.autofill.Dataset>):
+    android.service.autofill.augmented.FillResponse does not declare a `getInlineSuggestions()` method matching method android.service.autofill.augmented.FillResponse.Builder.setInlineSuggestions(java.util.List<android.service.autofill.Dataset>)
+MissingGetterMatchingBuilder: android.telecom.CallScreeningService.CallResponse.Builder#setShouldScreenCallViaAudioProcessing(boolean):
+    android.telecom.CallScreeningService.CallResponse does not declare a `shouldScreenCallViaAudioProcessing()` method matching method android.telecom.CallScreeningService.CallResponse.Builder.setShouldScreenCallViaAudioProcessing(boolean)
+MissingGetterMatchingBuilder: android.telecom.ConnectionRequest.Builder#setIsAdhocConferenceCall(boolean):
+    android.telecom.ConnectionRequest does not declare a `isIsAdhocConferenceCall()` method matching method android.telecom.ConnectionRequest.Builder.setIsAdhocConferenceCall(boolean)
+MissingGetterMatchingBuilder: android.telecom.ConnectionRequest.Builder#setRttPipeFromInCall(android.os.ParcelFileDescriptor):
+    android.telecom.ConnectionRequest does not declare a `getRttPipeFromInCall()` method matching method android.telecom.ConnectionRequest.Builder.setRttPipeFromInCall(android.os.ParcelFileDescriptor)
+MissingGetterMatchingBuilder: android.telecom.ConnectionRequest.Builder#setRttPipeToInCall(android.os.ParcelFileDescriptor):
+    android.telecom.ConnectionRequest does not declare a `getRttPipeToInCall()` method matching method android.telecom.ConnectionRequest.Builder.setRttPipeToInCall(android.os.ParcelFileDescriptor)
+MissingGetterMatchingBuilder: android.telecom.ConnectionRequest.Builder#setShouldShowIncomingCallUi(boolean):
+    android.telecom.ConnectionRequest does not declare a `shouldShowIncomingCallUi()` method matching method android.telecom.ConnectionRequest.Builder.setShouldShowIncomingCallUi(boolean)
+MissingGetterMatchingBuilder: android.telecom.PhoneAccount.Builder#setGroupId(String):
+    android.telecom.PhoneAccount does not declare a `getGroupId()` method matching method android.telecom.PhoneAccount.Builder.setGroupId(String)
+MissingGetterMatchingBuilder: android.telephony.NetworkRegistrationInfo.Builder#setEmergencyOnly(boolean):
+    android.telephony.NetworkRegistrationInfo does not declare a `isEmergencyOnly()` method matching method android.telephony.NetworkRegistrationInfo.Builder.setEmergencyOnly(boolean)
+MissingGetterMatchingBuilder: android.telephony.ims.ImsSsData.Builder#setCallForwardingInfo(java.util.List<android.telephony.ims.ImsCallForwardInfo>):
+    android.telephony.ims.ImsSsData does not declare a `getCallForwardingInfo()` method matching method android.telephony.ims.ImsSsData.Builder.setCallForwardingInfo(java.util.List<android.telephony.ims.ImsCallForwardInfo>)
+MissingGetterMatchingBuilder: android.telephony.ims.stub.ImsFeatureConfiguration.Builder#addFeature(int, int):
+    android.telephony.ims.stub.ImsFeatureConfiguration does not declare a `getFeatures()` method matching method android.telephony.ims.stub.ImsFeatureConfiguration.Builder.addFeature(int,int)
+MissingGetterMatchingBuilder: android.telephony.mbms.DownloadRequest.Builder#setServiceId(String):
+    android.telephony.mbms.DownloadRequest does not declare a `getServiceId()` method matching method android.telephony.mbms.DownloadRequest.Builder.setServiceId(String)
+
+
+MissingNullability: android.app.Activity#onMovedToDisplay(int, android.content.res.Configuration) parameter #1:
+    
+MissingNullability: android.app.ActivityManager#addOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener, int) parameter #0:
+    
+MissingNullability: android.app.ActivityManager#alwaysShowUnsupportedCompileSdkWarning(android.content.ComponentName) parameter #0:
+    
+MissingNullability: android.app.ActivityManager#forceStopPackage(String) parameter #0:
+    
+MissingNullability: android.app.ActivityManager#getPackageImportance(String) parameter #0:
+    
+MissingNullability: android.app.ActivityManager#removeOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener) parameter #0:
+    
+MissingNullability: android.app.ActivityManager#scheduleApplicationInfoChanged(java.util.List<java.lang.String>, int) parameter #0:
+    
+MissingNullability: android.app.ActivityManager.TaskDescription#getIconFilename():
+    
+MissingNullability: android.app.ActivityTaskManager#clearLaunchParamsForPackages(java.util.List<java.lang.String>) parameter #0:
+    
+MissingNullability: android.app.ActivityTaskManager#listAllStacks():
+    
+MissingNullability: android.app.ActivityTaskManager#moveTopActivityToPinnedStack(int, android.graphics.Rect) parameter #1:
+    
+MissingNullability: android.app.ActivityTaskManager#removeStacksInWindowingModes(int[]) parameter #0:
+    
+MissingNullability: android.app.ActivityTaskManager#removeStacksWithActivityTypes(int[]) parameter #0:
+    
+MissingNullability: android.app.ActivityTaskManager#resizeDockedStack(android.graphics.Rect, android.graphics.Rect) parameter #0:
+    
+MissingNullability: android.app.ActivityTaskManager#resizeDockedStack(android.graphics.Rect, android.graphics.Rect) parameter #1:
+    
+MissingNullability: android.app.ActivityTaskManager#resizePinnedStack(int, android.graphics.Rect, boolean) parameter #1:
+    
+MissingNullability: android.app.ActivityTaskManager#resizeTask(int, android.graphics.Rect) parameter #1:
+    
+MissingNullability: android.app.ActivityTaskManager#setTaskWindowingModeSplitScreenPrimary(int, int, boolean, boolean, android.graphics.Rect, boolean) parameter #4:
+    
+MissingNullability: android.app.ActivityTaskManager#supportsMultiWindow(android.content.Context) parameter #0:
+    
+MissingNullability: android.app.ActivityTaskManager#supportsSplitScreenMultiWindow(android.content.Context) parameter #0:
+    
+MissingNullability: android.app.ActivityView#ActivityView(android.content.Context) parameter #0:
+    
+MissingNullability: android.app.ActivityView#ActivityView(android.content.Context, android.util.AttributeSet) parameter #0:
+    
+MissingNullability: android.app.ActivityView#ActivityView(android.content.Context, android.util.AttributeSet) parameter #1:
+    
+MissingNullability: android.app.ActivityView#ActivityView(android.content.Context, android.util.AttributeSet, int) parameter #0:
+    
+MissingNullability: android.app.ActivityView#ActivityView(android.content.Context, android.util.AttributeSet, int) parameter #1:
+    
+MissingNullability: android.app.ActivityView#ActivityView(android.content.Context, android.util.AttributeSet, int, boolean) parameter #0:
+    
+MissingNullability: android.app.ActivityView#ActivityView(android.content.Context, android.util.AttributeSet, int, boolean) parameter #1:
+    
+MissingNullability: android.app.ActivityView#gatherTransparentRegion(android.graphics.Region) parameter #0:
+    
+MissingNullability: android.app.ActivityView#onVisibilityChanged(android.view.View, int) parameter #0:
+    
+MissingNullability: android.app.ActivityView#setCallback(android.app.ActivityView.StateCallback) parameter #0:
+    
+MissingNullability: android.app.ActivityView#setForwardedInsets(android.graphics.Insets) parameter #0:
+    
+MissingNullability: android.app.ActivityView#startActivity(android.content.Intent, android.os.UserHandle) parameter #1:
+    
+MissingNullability: android.app.ActivityView.StateCallback#onActivityViewDestroyed(android.app.ActivityView) parameter #0:
+    
+MissingNullability: android.app.ActivityView.StateCallback#onActivityViewReady(android.app.ActivityView) parameter #0:
+    
+MissingNullability: android.app.ActivityView.StateCallback#onTaskCreated(int, android.content.ComponentName) parameter #1:
+    
+MissingNullability: android.app.AppDetailsActivity#onCreate(android.os.Bundle) parameter #0:
+    
+MissingNullability: android.app.AppOpsManager#getOpStrs():
+    
+MissingNullability: android.app.AppOpsManager#isOperationActive(int, int, String) parameter #2:
+    
+MissingNullability: android.app.AppOpsManager#opToPermission(int):
+    
+MissingNullability: android.app.AppOpsManager#permissionToOpCode(String) parameter #0:
+    
+MissingNullability: android.app.AppOpsManager#setMode(String, int, String, int) parameter #0:
+    
+MissingNullability: android.app.AppOpsManager#setMode(String, int, String, int) parameter #2:
+    
+MissingNullability: android.app.AppOpsManager#setMode(int, int, String, int) parameter #2:
+    
+MissingNullability: android.app.AppOpsManager#setUidMode(String, int, int) parameter #0:
+    
+MissingNullability: android.app.AppOpsManager.HistoricalOp#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.app.AppOpsManager.HistoricalOps#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.app.AppOpsManager.HistoricalUidOps#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.app.AppOpsManager.OpEntry#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.app.NotificationManager#allowAssistantAdjustment(String) parameter #0:
+    
+MissingNullability: android.app.NotificationManager#disallowAssistantAdjustment(String) parameter #0:
+    
+MissingNullability: android.app.NotificationManager#getEffectsSuppressor():
+    
+MissingNullability: android.app.NotificationManager#matchesCallFilter(android.os.Bundle) parameter #0:
+    
+MissingNullability: android.app.PictureInPictureParams#getActions():
+    
+MissingNullability: android.app.PictureInPictureParams#getSourceRectHint():
+    
+MissingNullability: android.app.TimePickerDialog#getTimePicker():
+    
+MissingNullability: android.app.UiAutomation#executeShellCommandRw(String):
+    
+MissingNullability: android.app.UiAutomation#executeShellCommandRw(String) parameter #0:
+    
+MissingNullability: android.app.UiAutomation#grantRuntimePermission(String, String, android.os.UserHandle) parameter #0:
+    
+MissingNullability: android.app.UiAutomation#grantRuntimePermission(String, String, android.os.UserHandle) parameter #1:
+    
+MissingNullability: android.app.UiAutomation#grantRuntimePermission(String, String, android.os.UserHandle) parameter #2:
+    
+MissingNullability: android.app.UiAutomation#revokeRuntimePermission(String, String, android.os.UserHandle) parameter #0:
+    
+MissingNullability: android.app.UiAutomation#revokeRuntimePermission(String, String, android.os.UserHandle) parameter #1:
+    
+MissingNullability: android.app.UiAutomation#revokeRuntimePermission(String, String, android.os.UserHandle) parameter #2:
+    
+MissingNullability: android.app.WallpaperManager#setWallpaperComponent(android.content.ComponentName) parameter #0:
+    
+MissingNullability: android.app.WindowConfiguration#compareTo(android.app.WindowConfiguration) parameter #0:
+    
+MissingNullability: android.app.WindowConfiguration#getAppBounds():
+    
+MissingNullability: android.app.WindowConfiguration#getBounds():
+    
+MissingNullability: android.app.WindowConfiguration#setAppBounds(android.graphics.Rect) parameter #0:
+    
+MissingNullability: android.app.WindowConfiguration#setBounds(android.graphics.Rect) parameter #0:
+    
+MissingNullability: android.app.WindowConfiguration#setTo(android.app.WindowConfiguration) parameter #0:
+    
+MissingNullability: android.app.WindowConfiguration#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.app.admin.DevicePolicyManager#getOwnerInstalledCaCerts(android.os.UserHandle):
+    
+MissingNullability: android.app.admin.SecurityLog.SecurityEvent#SecurityEvent(long, byte[]) parameter #1:
+    
+MissingNullability: android.app.backup.BackupManager#getConfigurationIntent(String):
+    
+MissingNullability: android.app.backup.BackupManager#getConfigurationIntent(String) parameter #0:
+    
+MissingNullability: android.app.backup.BackupManager#getDataManagementIntent(String):
+    
+MissingNullability: android.app.backup.BackupManager#getDataManagementIntent(String) parameter #0:
+    
+MissingNullability: android.app.backup.BackupManager#getDestinationString(String):
+    
+MissingNullability: android.app.backup.BackupManager#getDestinationString(String) parameter #0:
+    
+MissingNullability: android.app.prediction.AppPredictionSessionId#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.app.prediction.AppPredictor#getSessionId():
+    
+MissingNullability: android.app.prediction.AppTarget#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.app.prediction.AppTargetEvent#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.app.prediction.AppTargetId#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.content.AutofillOptions#forWhitelistingItself():
+    
+MissingNullability: android.content.AutofillOptions#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.content.ContentCaptureOptions#forWhitelistingItself():
+    
+MissingNullability: android.content.ContentCaptureOptions#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.content.ContentResolver#getSyncAdapterPackagesForAuthorityAsUser(String, int):
+    
+MissingNullability: android.content.ContentResolver#getSyncAdapterPackagesForAuthorityAsUser(String, int) parameter #0:
+    
+MissingNullability: android.content.Context#getDisplay():
+    
+MissingNullability: android.content.Context#getUser():
+    
+MissingNullability: android.content.ContextWrapper#getDisplay():
+    
+MissingNullability: android.content.ContextWrapper#setContentCaptureOptions(android.content.ContentCaptureOptions) parameter #0:
+    
+MissingNullability: android.content.pm.ActivityInfo#isTranslucentOrFloating(android.content.res.TypedArray) parameter #0:
+    
+MissingNullability: android.content.pm.LauncherApps#LauncherApps(android.content.Context) parameter #0:
+    
+MissingNullability: android.content.pm.PackageInstaller.SessionParams#setGrantedRuntimePermissions(String[]) parameter #0:
+    
+MissingNullability: android.content.pm.PackageManager#getNamesForUids(int[]) parameter #0:
+    
+MissingNullability: android.content.pm.ShortcutManager#ShortcutManager(android.content.Context) parameter #0:
+    
+MissingNullability: android.content.res.AssetManager#getOverlayablesToString(String) parameter #0:
+    
+MissingNullability: android.content.res.Configuration#windowConfiguration:
+    
+MissingNullability: android.content.rollback.PackageRollbackInfo#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.content.rollback.RollbackInfo#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.database.sqlite.SQLiteDebug#dump(android.util.Printer, String[]) parameter #0:
+    
+MissingNullability: android.database.sqlite.SQLiteDebug#dump(android.util.Printer, String[]) parameter #1:
+    
+MissingNullability: android.database.sqlite.SQLiteDebug#getDatabaseInfo():
+    
+MissingNullability: android.database.sqlite.SQLiteDebug.DbStats#DbStats(String, long, long, int, int, int, int) parameter #0:
+    
+MissingNullability: android.database.sqlite.SQLiteDebug.DbStats#cache:
+    
+MissingNullability: android.database.sqlite.SQLiteDebug.DbStats#dbName:
+    
+MissingNullability: android.database.sqlite.SQLiteDebug.PagerStats#dbStats:
+    
+MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#SQLiteDirectCursorDriver(android.database.sqlite.SQLiteDatabase, String, String, android.os.CancellationSignal) parameter #0:
+    
+MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#SQLiteDirectCursorDriver(android.database.sqlite.SQLiteDatabase, String, String, android.os.CancellationSignal) parameter #1:
+    
+MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#SQLiteDirectCursorDriver(android.database.sqlite.SQLiteDatabase, String, String, android.os.CancellationSignal) parameter #2:
+    
+MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#SQLiteDirectCursorDriver(android.database.sqlite.SQLiteDatabase, String, String, android.os.CancellationSignal) parameter #3:
+    
+MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#cursorRequeried(android.database.Cursor) parameter #0:
+    
+MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#query(android.database.sqlite.SQLiteDatabase.CursorFactory, String[]):
+    
+MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#query(android.database.sqlite.SQLiteDatabase.CursorFactory, String[]) parameter #0:
+    
+MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#query(android.database.sqlite.SQLiteDatabase.CursorFactory, String[]) parameter #1:
+    
+MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#setBindArguments(String[]) parameter #0:
+    
+MissingNullability: android.database.sqlite.SQLiteGlobal#getDefaultJournalMode():
+    
+MissingNullability: android.database.sqlite.SQLiteGlobal#getDefaultSyncMode():
+    
+MissingNullability: android.database.sqlite.SQLiteGlobal#getWALSyncMode():
+    
+MissingNullability: android.graphics.ImageDecoder#createSource(android.content.res.Resources, java.io.InputStream, int) parameter #0:
+    
+MissingNullability: android.graphics.ImageDecoder#createSource(android.content.res.Resources, java.io.InputStream, int) parameter #1:
+    
+MissingNullability: android.graphics.drawable.AdaptiveIconDrawable#getSafeZone():
+    
+MissingNullability: android.graphics.drawable.ColorDrawable#getXfermode():
+    
+MissingNullability: android.hardware.camera2.CameraDevice#createCustomCaptureSession(android.hardware.camera2.params.InputConfiguration, java.util.List<android.hardware.camera2.params.OutputConfiguration>, int, android.hardware.camera2.CameraCaptureSession.StateCallback, android.os.Handler) parameter #0:
+    
+MissingNullability: android.hardware.camera2.CameraManager#getCameraIdListNoLazy():
+    
+MissingNullability: android.hardware.display.AmbientBrightnessDayStats#getBucketBoundaries():
+    
+MissingNullability: android.hardware.display.AmbientBrightnessDayStats#getLocalDate():
+    
+MissingNullability: android.hardware.display.AmbientBrightnessDayStats#getStats():
+    
+MissingNullability: android.hardware.display.AmbientBrightnessDayStats#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.hardware.display.AmbientDisplayConfiguration#AmbientDisplayConfiguration(android.content.Context) parameter #0:
+    
+MissingNullability: android.hardware.display.BrightnessChangeEvent#luxTimestamps:
+    
+MissingNullability: android.hardware.display.BrightnessChangeEvent#luxValues:
+    
+MissingNullability: android.hardware.display.BrightnessChangeEvent#packageName:
+    
+MissingNullability: android.hardware.display.BrightnessChangeEvent#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.hardware.display.BrightnessConfiguration#getCurve():
+    
+MissingNullability: android.hardware.display.BrightnessConfiguration#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.hardware.display.BrightnessConfiguration.Builder#Builder(float[], float[]) parameter #0:
+    
+MissingNullability: android.hardware.display.BrightnessConfiguration.Builder#Builder(float[], float[]) parameter #1:
+    
+MissingNullability: android.hardware.display.BrightnessCorrection#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.hardware.display.DisplayManager#getAmbientBrightnessStats():
+    
+MissingNullability: android.hardware.display.DisplayManager#getBrightnessConfiguration():
+    
+MissingNullability: android.hardware.display.DisplayManager#getBrightnessEvents():
+    
+MissingNullability: android.hardware.display.DisplayManager#getStableDisplaySize():
+    
+MissingNullability: android.hardware.display.DisplayManager#setBrightnessConfiguration(android.hardware.display.BrightnessConfiguration) parameter #0:
+    
+MissingNullability: android.location.GnssClock#set(android.location.GnssClock) parameter #0:
+    
+MissingNullability: android.location.GnssMeasurement#set(android.location.GnssMeasurement) parameter #0:
+    
+MissingNullability: android.location.GnssMeasurementsEvent#GnssMeasurementsEvent(android.location.GnssClock, android.location.GnssMeasurement[]) parameter #0:
+    
+MissingNullability: android.location.GnssMeasurementsEvent#GnssMeasurementsEvent(android.location.GnssClock, android.location.GnssMeasurement[]) parameter #1:
+    
+MissingNullability: android.location.GnssNavigationMessage#set(android.location.GnssNavigationMessage) parameter #0:
+    
+MissingNullability: android.location.GnssNavigationMessage#setData(byte[]) parameter #0:
+    
+MissingNullability: android.location.LocationManager#getTestProviderCurrentRequests(String) parameter #0:
+    
+MissingNullability: android.location.LocationRequest#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.media.AudioFocusInfo#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String) parameter #3:
+    
+MissingNullability: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String) parameter #4:
+    
+MissingNullability: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String) parameter #6:
+    
+MissingNullability: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]) parameter #10:
+    
+MissingNullability: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]) parameter #11:
+    
+MissingNullability: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]) parameter #3:
+    
+MissingNullability: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]) parameter #4:
+    
+MissingNullability: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]) parameter #6:
+    
+MissingNullability: android.media.PlaybackParams#setAudioStretchMode(int):
+    
+MissingNullability: android.media.audiofx.AudioEffect#EFFECT_TYPE_NULL:
+    
+MissingNullability: android.media.audiofx.AudioEffect#byteArrayToInt(byte[]) parameter #0:
+    
+MissingNullability: android.media.audiofx.AudioEffect#byteArrayToShort(byte[]) parameter #0:
+    
+MissingNullability: android.media.audiofx.AudioEffect#getParameter(byte[], byte[]) parameter #0:
+    
+MissingNullability: android.media.audiofx.AudioEffect#getParameter(byte[], byte[]) parameter #1:
+    
+MissingNullability: android.media.audiofx.AudioEffect#getParameter(int, byte[]) parameter #1:
+    
+MissingNullability: android.media.audiofx.AudioEffect#getParameter(int, int[]) parameter #1:
+    
+MissingNullability: android.media.audiofx.AudioEffect#getParameter(int, short[]) parameter #1:
+    
+MissingNullability: android.media.audiofx.AudioEffect#getParameter(int[], short[]) parameter #0:
+    
+MissingNullability: android.media.audiofx.AudioEffect#getParameter(int[], short[]) parameter #1:
+    
+MissingNullability: android.media.audiofx.AudioEffect#intToByteArray(int):
+    
+MissingNullability: android.media.audiofx.AudioEffect#isEffectTypeAvailable(java.util.UUID) parameter #0:
+    
+MissingNullability: android.media.audiofx.AudioEffect#setParameter(byte[], byte[]) parameter #0:
+    
+MissingNullability: android.media.audiofx.AudioEffect#setParameter(byte[], byte[]) parameter #1:
+    
+MissingNullability: android.media.audiofx.AudioEffect#setParameter(int, byte[]) parameter #1:
+    
+MissingNullability: android.media.audiofx.AudioEffect#setParameter(int[], byte[]) parameter #0:
+    
+MissingNullability: android.media.audiofx.AudioEffect#setParameter(int[], byte[]) parameter #1:
+    
+MissingNullability: android.media.audiofx.AudioEffect#setParameter(int[], int[]) parameter #0:
+    
+MissingNullability: android.media.audiofx.AudioEffect#setParameter(int[], int[]) parameter #1:
+    
+MissingNullability: android.media.audiofx.AudioEffect#setParameterListener(android.media.audiofx.AudioEffect.OnParameterChangeListener) parameter #0:
+    
+MissingNullability: android.media.audiofx.AudioEffect#shortToByteArray(short):
+    
+MissingNullability: android.media.audiofx.AudioEffect.Descriptor#Descriptor(android.os.Parcel) parameter #0:
+    
+MissingNullability: android.media.audiofx.AudioEffect.Descriptor#writeToParcel(android.os.Parcel) parameter #0:
+    
+MissingNullability: android.media.audiofx.AudioEffect.OnParameterChangeListener#onParameterChange(android.media.audiofx.AudioEffect, int, byte[], byte[]) parameter #0:
+    
+MissingNullability: android.media.audiofx.AudioEffect.OnParameterChangeListener#onParameterChange(android.media.audiofx.AudioEffect, int, byte[], byte[]) parameter #2:
+    
+MissingNullability: android.media.audiofx.AudioEffect.OnParameterChangeListener#onParameterChange(android.media.audiofx.AudioEffect, int, byte[], byte[]) parameter #3:
+    
+MissingNullability: android.media.audiopolicy.AudioMix.Builder#Builder(android.media.audiopolicy.AudioMixingRule) parameter #0:
+    
+MissingNullability: android.media.audiopolicy.AudioMix.Builder#build():
+    
+MissingNullability: android.media.audiopolicy.AudioMix.Builder#setDevice(android.media.AudioDeviceInfo):
+    
+MissingNullability: android.media.audiopolicy.AudioMix.Builder#setFormat(android.media.AudioFormat):
+    
+MissingNullability: android.media.audiopolicy.AudioMix.Builder#setFormat(android.media.AudioFormat) parameter #0:
+    
+MissingNullability: android.media.audiopolicy.AudioMix.Builder#setRouteFlags(int):
+    
+MissingNullability: android.media.audiopolicy.AudioMixingRule.Builder#addMixRule(int, Object):
+    
+MissingNullability: android.media.audiopolicy.AudioMixingRule.Builder#addMixRule(int, Object) parameter #1:
+    
+MissingNullability: android.media.audiopolicy.AudioMixingRule.Builder#addRule(android.media.AudioAttributes, int):
+    
+MissingNullability: android.media.audiopolicy.AudioMixingRule.Builder#addRule(android.media.AudioAttributes, int) parameter #0:
+    
+MissingNullability: android.media.audiopolicy.AudioMixingRule.Builder#build():
+    
+MissingNullability: android.media.audiopolicy.AudioMixingRule.Builder#excludeMixRule(int, Object):
+    
+MissingNullability: android.media.audiopolicy.AudioMixingRule.Builder#excludeMixRule(int, Object) parameter #1:
+    
+MissingNullability: android.media.audiopolicy.AudioMixingRule.Builder#excludeRule(android.media.AudioAttributes, int):
+    
+MissingNullability: android.media.audiopolicy.AudioMixingRule.Builder#excludeRule(android.media.AudioAttributes, int) parameter #0:
+    
+MissingNullability: android.media.audiopolicy.AudioPolicy#createAudioRecordSink(android.media.audiopolicy.AudioMix):
+    
+MissingNullability: android.media.audiopolicy.AudioPolicy#createAudioRecordSink(android.media.audiopolicy.AudioMix) parameter #0:
+    
+MissingNullability: android.media.audiopolicy.AudioPolicy#createAudioTrackSource(android.media.audiopolicy.AudioMix):
+    
+MissingNullability: android.media.audiopolicy.AudioPolicy#createAudioTrackSource(android.media.audiopolicy.AudioMix) parameter #0:
+    
+MissingNullability: android.media.audiopolicy.AudioPolicy#setRegistration(String) parameter #0:
+    
+MissingNullability: android.media.audiopolicy.AudioPolicy#toLogFriendlyString():
+    
+MissingNullability: android.media.audiopolicy.AudioPolicy.AudioPolicyFocusListener#onAudioFocusAbandon(android.media.AudioFocusInfo) parameter #0:
+    
+MissingNullability: android.media.audiopolicy.AudioPolicy.AudioPolicyFocusListener#onAudioFocusGrant(android.media.AudioFocusInfo, int) parameter #0:
+    
+MissingNullability: android.media.audiopolicy.AudioPolicy.AudioPolicyFocusListener#onAudioFocusLoss(android.media.AudioFocusInfo, boolean) parameter #0:
+    
+MissingNullability: android.media.audiopolicy.AudioPolicy.AudioPolicyFocusListener#onAudioFocusRequest(android.media.AudioFocusInfo, int) parameter #0:
+    
+MissingNullability: android.media.audiopolicy.AudioPolicy.AudioPolicyStatusListener#onMixStateUpdate(android.media.audiopolicy.AudioMix) parameter #0:
+    
+MissingNullability: android.media.audiopolicy.AudioPolicy.Builder#Builder(android.content.Context) parameter #0:
+    
+MissingNullability: android.media.audiopolicy.AudioPolicy.Builder#setAudioPolicyFocusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyFocusListener) parameter #0:
+    
+MissingNullability: android.media.audiopolicy.AudioPolicy.Builder#setAudioPolicyStatusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyStatusListener) parameter #0:
+    
+MissingNullability: android.metrics.LogMaker#LogMaker(Object[]) parameter #0:
+    
+MissingNullability: android.metrics.LogMaker#addTaggedData(int, Object):
+    
+MissingNullability: android.metrics.LogMaker#addTaggedData(int, Object) parameter #1:
+    
+MissingNullability: android.metrics.LogMaker#clearCategory():
+    
+MissingNullability: android.metrics.LogMaker#clearPackageName():
+    
+MissingNullability: android.metrics.LogMaker#clearSubtype():
+    
+MissingNullability: android.metrics.LogMaker#clearTaggedData(int):
+    
+MissingNullability: android.metrics.LogMaker#clearType():
+    
+MissingNullability: android.metrics.LogMaker#deserialize(Object[]) parameter #0:
+    
+MissingNullability: android.metrics.LogMaker#getCounterName():
+    
+MissingNullability: android.metrics.LogMaker#getPackageName():
+    
+MissingNullability: android.metrics.LogMaker#getTaggedData(int):
+    
+MissingNullability: android.metrics.LogMaker#isSubsetOf(android.metrics.LogMaker) parameter #0:
+    
+MissingNullability: android.metrics.LogMaker#isValidValue(Object) parameter #0:
+    
+MissingNullability: android.metrics.LogMaker#serialize():
+    
+MissingNullability: android.metrics.LogMaker#setCategory(int):
+    
+MissingNullability: android.metrics.LogMaker#setPackageName(String):
+    
+MissingNullability: android.metrics.LogMaker#setPackageName(String) parameter #0:
+    
+MissingNullability: android.metrics.LogMaker#setSubtype(int):
+    
+MissingNullability: android.metrics.LogMaker#setType(int):
+    
+MissingNullability: android.metrics.MetricsReader#next():
+    
+MissingNullability: android.net.NetworkCapabilities#getCapabilities():
+    
+MissingNullability: android.net.StaticIpConfiguration#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.net.TestNetworkInterface#CREATOR:
+    
+MissingNullability: android.net.TestNetworkInterface#TestNetworkInterface(android.os.ParcelFileDescriptor, String) parameter #0:
+    
+MissingNullability: android.net.TestNetworkInterface#TestNetworkInterface(android.os.ParcelFileDescriptor, String) parameter #1:
+    
+MissingNullability: android.net.TestNetworkInterface#getFileDescriptor():
+    
+MissingNullability: android.net.TestNetworkInterface#getInterfaceName():
+    
+MissingNullability: android.net.TestNetworkInterface#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.net.TestNetworkManager#createTapInterface():
+    
+MissingNullability: android.net.TestNetworkManager#createTunInterface(android.net.LinkAddress[]):
+    
+MissingNullability: android.net.apf.ApfCapabilities#CREATOR:
+    
+MissingNullability: android.net.apf.ApfCapabilities#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.net.metrics.DhcpClientEvent.Builder#setMsg(String) parameter #0:
+    
+MissingNullability: android.os.Build#is64BitAbi(String) parameter #0:
+    
+MissingNullability: android.os.Build.VERSION#ACTIVE_CODENAMES:
+    
+MissingNullability: android.os.Environment#buildPath(java.io.File, java.lang.String...):
+    
+MissingNullability: android.os.Environment#buildPath(java.io.File, java.lang.String...) parameter #0:
+    
+MissingNullability: android.os.Environment#buildPath(java.io.File, java.lang.String...) parameter #1:
+    
+MissingNullability: android.os.FileUtils#contains(java.io.File, java.io.File) parameter #0:
+    
+MissingNullability: android.os.FileUtils#contains(java.io.File, java.io.File) parameter #1:
+    
+MissingNullability: android.os.HwBinder#getService(String, String):
+    
+MissingNullability: android.os.HwBinder#getService(String, String) parameter #0:
+    
+MissingNullability: android.os.HwBinder#getService(String, String) parameter #1:
+    
+MissingNullability: android.os.HwBinder#getService(String, String, boolean):
+    
+MissingNullability: android.os.HwBinder#getService(String, String, boolean) parameter #0:
+    
+MissingNullability: android.os.HwBinder#getService(String, String, boolean) parameter #1:
+    
+MissingNullability: android.os.HwBinder#onTransact(int, android.os.HwParcel, android.os.HwParcel, int) parameter #1:
+    
+MissingNullability: android.os.HwBinder#onTransact(int, android.os.HwParcel, android.os.HwParcel, int) parameter #2:
+    
+MissingNullability: android.os.HwBinder#registerService(String) parameter #0:
+    
+MissingNullability: android.os.HwBinder#transact(int, android.os.HwParcel, android.os.HwParcel, int) parameter #1:
+    
+MissingNullability: android.os.HwBinder#transact(int, android.os.HwParcel, android.os.HwParcel, int) parameter #2:
+    
+MissingNullability: android.os.HwBlob#copyToBoolArray(long, boolean[], int) parameter #1:
+    
+MissingNullability: android.os.HwBlob#copyToDoubleArray(long, double[], int) parameter #1:
+    
+MissingNullability: android.os.HwBlob#copyToFloatArray(long, float[], int) parameter #1:
+    
+MissingNullability: android.os.HwBlob#copyToInt16Array(long, short[], int) parameter #1:
+    
+MissingNullability: android.os.HwBlob#copyToInt32Array(long, int[], int) parameter #1:
+    
+MissingNullability: android.os.HwBlob#copyToInt64Array(long, long[], int) parameter #1:
+    
+MissingNullability: android.os.HwBlob#copyToInt8Array(long, byte[], int) parameter #1:
+    
+MissingNullability: android.os.HwBlob#getString(long):
+    
+MissingNullability: android.os.HwBlob#putBlob(long, android.os.HwBlob) parameter #1:
+    
+MissingNullability: android.os.HwBlob#putBoolArray(long, boolean[]) parameter #1:
+    
+MissingNullability: android.os.HwBlob#putDoubleArray(long, double[]) parameter #1:
+    
+MissingNullability: android.os.HwBlob#putFloatArray(long, float[]) parameter #1:
+    
+MissingNullability: android.os.HwBlob#putInt16Array(long, short[]) parameter #1:
+    
+MissingNullability: android.os.HwBlob#putInt32Array(long, int[]) parameter #1:
+    
+MissingNullability: android.os.HwBlob#putInt64Array(long, long[]) parameter #1:
+    
+MissingNullability: android.os.HwBlob#putInt8Array(long, byte[]) parameter #1:
+    
+MissingNullability: android.os.HwBlob#putString(long, String) parameter #1:
+    
+MissingNullability: android.os.HwBlob#wrapArray(boolean[]):
+    
+MissingNullability: android.os.HwBlob#wrapArray(byte[]):
+    
+MissingNullability: android.os.HwBlob#wrapArray(double[]):
+    
+MissingNullability: android.os.HwBlob#wrapArray(float[]):
+    
+MissingNullability: android.os.HwBlob#wrapArray(int[]):
+    
+MissingNullability: android.os.HwBlob#wrapArray(long[]):
+    
+MissingNullability: android.os.HwBlob#wrapArray(short[]):
+    
+MissingNullability: android.os.HwParcel#enforceInterface(String) parameter #0:
+    
+MissingNullability: android.os.HwParcel#readBoolVector():
+    
+MissingNullability: android.os.HwParcel#readBuffer(long):
+    
+MissingNullability: android.os.HwParcel#readDoubleVector():
+    
+MissingNullability: android.os.HwParcel#readEmbeddedBuffer(long, long, long, boolean):
+    
+MissingNullability: android.os.HwParcel#readFloatVector():
+    
+MissingNullability: android.os.HwParcel#readInt16Vector():
+    
+MissingNullability: android.os.HwParcel#readInt32Vector():
+    
+MissingNullability: android.os.HwParcel#readInt64Vector():
+    
+MissingNullability: android.os.HwParcel#readInt8Vector():
+    
+MissingNullability: android.os.HwParcel#readString():
+    
+MissingNullability: android.os.HwParcel#readStringVector():
+    
+MissingNullability: android.os.HwParcel#readStrongBinder():
+    
+MissingNullability: android.os.HwParcel#writeBoolVector(java.util.ArrayList<java.lang.Boolean>) parameter #0:
+    
+MissingNullability: android.os.HwParcel#writeBuffer(android.os.HwBlob) parameter #0:
+    
+MissingNullability: android.os.HwParcel#writeDoubleVector(java.util.ArrayList<java.lang.Double>) parameter #0:
+    
+MissingNullability: android.os.HwParcel#writeFloatVector(java.util.ArrayList<java.lang.Float>) parameter #0:
+    
+MissingNullability: android.os.HwParcel#writeInt16Vector(java.util.ArrayList<java.lang.Short>) parameter #0:
+    
+MissingNullability: android.os.HwParcel#writeInt32Vector(java.util.ArrayList<java.lang.Integer>) parameter #0:
+    
+MissingNullability: android.os.HwParcel#writeInt64Vector(java.util.ArrayList<java.lang.Long>) parameter #0:
+    
+MissingNullability: android.os.HwParcel#writeInt8Vector(java.util.ArrayList<java.lang.Byte>) parameter #0:
+    
+MissingNullability: android.os.HwParcel#writeInterfaceToken(String) parameter #0:
+    
+MissingNullability: android.os.HwParcel#writeString(String) parameter #0:
+    
+MissingNullability: android.os.HwParcel#writeStringVector(java.util.ArrayList<java.lang.String>) parameter #0:
+    
+MissingNullability: android.os.HwParcel#writeStrongBinder(android.os.IHwBinder) parameter #0:
+    
+MissingNullability: android.os.IHwBinder#linkToDeath(android.os.IHwBinder.DeathRecipient, long) parameter #0:
+    
+MissingNullability: android.os.IHwBinder#queryLocalInterface(String):
+    
+MissingNullability: android.os.IHwBinder#queryLocalInterface(String) parameter #0:
+    
+MissingNullability: android.os.IHwBinder#transact(int, android.os.HwParcel, android.os.HwParcel, int) parameter #1:
+    
+MissingNullability: android.os.IHwBinder#transact(int, android.os.HwParcel, android.os.HwParcel, int) parameter #2:
+    
+MissingNullability: android.os.IHwBinder#unlinkToDeath(android.os.IHwBinder.DeathRecipient) parameter #0:
+    
+MissingNullability: android.os.IHwInterface#asBinder():
+    
+MissingNullability: android.os.IncidentManager#approveReport(android.net.Uri) parameter #0:
+    
+MissingNullability: android.os.IncidentManager#cancelAuthorization(android.os.IncidentManager.AuthListener) parameter #0:
+    
+MissingNullability: android.os.IncidentManager#deleteIncidentReports(android.net.Uri) parameter #0:
+    
+MissingNullability: android.os.IncidentManager#denyReport(android.net.Uri) parameter #0:
+    
+MissingNullability: android.os.IncidentManager#getIncidentReport(android.net.Uri) parameter #0:
+    
+MissingNullability: android.os.IncidentManager#getIncidentReportList(String) parameter #0:
+    
+MissingNullability: android.os.IncidentManager#getPendingReports():
+    
+MissingNullability: android.os.IncidentManager#reportIncident(android.os.IncidentReportArgs) parameter #0:
+    
+MissingNullability: android.os.IncidentManager#requestAuthorization(int, String, int, android.os.IncidentManager.AuthListener) parameter #1:
+    
+MissingNullability: android.os.IncidentManager#requestAuthorization(int, String, int, android.os.IncidentManager.AuthListener) parameter #3:
+    
+MissingNullability: android.os.IncidentManager.IncidentReport#IncidentReport(android.os.Parcel) parameter #0:
+    
+MissingNullability: android.os.IncidentManager.IncidentReport#getInputStream():
+    
+MissingNullability: android.os.IncidentManager.IncidentReport#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.os.IncidentReportArgs#IncidentReportArgs(android.os.Parcel) parameter #0:
+    
+MissingNullability: android.os.IncidentReportArgs#addHeader(byte[]) parameter #0:
+    
+MissingNullability: android.os.IncidentReportArgs#readFromParcel(android.os.Parcel) parameter #0:
+    
+MissingNullability: android.os.IncidentReportArgs#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.os.ParcelFileDescriptor#getFile(java.io.FileDescriptor):
+    
+MissingNullability: android.os.ParcelFileDescriptor#getFile(java.io.FileDescriptor) parameter #0:
+    
+MissingNullability: android.os.RemoteCallback#RemoteCallback(android.os.RemoteCallback.OnResultListener) parameter #0:
+    
+MissingNullability: android.os.RemoteCallback#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.os.StrictMode#setViolationLogger(android.os.StrictMode.ViolationLogger) parameter #0:
+    
+MissingNullability: android.os.StrictMode.ViolationInfo#ViolationInfo(android.os.Parcel) parameter #0:
+    
+MissingNullability: android.os.StrictMode.ViolationInfo#ViolationInfo(android.os.Parcel, boolean) parameter #0:
+    
+MissingNullability: android.os.StrictMode.ViolationInfo#broadcastIntentAction:
+    
+MissingNullability: android.os.StrictMode.ViolationInfo#dump(android.util.Printer, String) parameter #0:
+    
+MissingNullability: android.os.StrictMode.ViolationInfo#dump(android.util.Printer, String) parameter #1:
+    
+MissingNullability: android.os.StrictMode.ViolationInfo#getStackTrace():
+    
+MissingNullability: android.os.StrictMode.ViolationInfo#getViolationClass():
+    
+MissingNullability: android.os.StrictMode.ViolationInfo#getViolationDetails():
+    
+MissingNullability: android.os.StrictMode.ViolationInfo#tags:
+    
+MissingNullability: android.os.StrictMode.ViolationInfo#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.os.StrictMode.ViolationLogger#log(android.os.StrictMode.ViolationInfo) parameter #0:
+    
+MissingNullability: android.os.UserHandle#of(int):
+    
+MissingNullability: android.os.VibrationEffect#RINGTONES:
+    
+MissingNullability: android.os.VibrationEffect#get(android.net.Uri, android.content.Context) parameter #0:
+    
+MissingNullability: android.os.VibrationEffect#get(android.net.Uri, android.content.Context) parameter #1:
+    
+MissingNullability: android.os.VibrationEffect#get(int):
+    
+MissingNullability: android.os.VibrationEffect#get(int, boolean):
+    
+MissingNullability: android.os.VibrationEffect.OneShot#OneShot(android.os.Parcel) parameter #0:
+    
+MissingNullability: android.os.VibrationEffect.OneShot#scale(float, int):
+    
+MissingNullability: android.os.VibrationEffect.OneShot#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.os.VibrationEffect.Prebaked#Prebaked(android.os.Parcel) parameter #0:
+    
+MissingNullability: android.os.VibrationEffect.Prebaked#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.os.VibrationEffect.Waveform#Waveform(android.os.Parcel) parameter #0:
+    
+MissingNullability: android.os.VibrationEffect.Waveform#Waveform(long[], int[], int) parameter #0:
+    
+MissingNullability: android.os.VibrationEffect.Waveform#Waveform(long[], int[], int) parameter #1:
+    
+MissingNullability: android.os.VibrationEffect.Waveform#getAmplitudes():
+    
+MissingNullability: android.os.VibrationEffect.Waveform#getTimings():
+    
+MissingNullability: android.os.VibrationEffect.Waveform#scale(float, int):
+    
+MissingNullability: android.os.VibrationEffect.Waveform#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.os.VintfObject#getHalNamesAndVersions():
+    
+MissingNullability: android.os.VintfObject#getSepolicyVersion():
+    
+MissingNullability: android.os.VintfObject#getTargetFrameworkCompatibilityMatrixVersion():
+    
+MissingNullability: android.os.VintfObject#getVndkSnapshots():
+    
+MissingNullability: android.os.VintfObject#report():
+    
+MissingNullability: android.os.VintfRuntimeInfo#getCpuInfo():
+    
+MissingNullability: android.os.VintfRuntimeInfo#getHardwareId():
+    
+MissingNullability: android.os.VintfRuntimeInfo#getKernelVersion():
+    
+MissingNullability: android.os.VintfRuntimeInfo#getNodeName():
+    
+MissingNullability: android.os.VintfRuntimeInfo#getOsName():
+    
+MissingNullability: android.os.VintfRuntimeInfo#getOsRelease():
+    
+MissingNullability: android.os.VintfRuntimeInfo#getOsVersion():
+    
+MissingNullability: android.os.WorkSource#add(int, String) parameter #1:
+    
+MissingNullability: android.os.WorkSource#addReturningNewbs(android.os.WorkSource) parameter #0:
+    
+MissingNullability: android.os.WorkSource#getName(int):
+    
+MissingNullability: android.os.WorkSource#setReturningDiffs(android.os.WorkSource) parameter #0:
+    
+MissingNullability: android.os.health.HealthKeys.Constants#Constants(Class) parameter #0:
+    
+MissingNullability: android.os.health.HealthKeys.Constants#getDataType():
+    
+MissingNullability: android.os.health.HealthKeys.Constants#getKeys(int):
+    
+MissingNullability: android.os.health.HealthStats#HealthStats(android.os.Parcel) parameter #0:
+    
+MissingNullability: android.os.health.HealthStatsParceler#HealthStatsParceler(android.os.Parcel) parameter #0:
+    
+MissingNullability: android.os.health.HealthStatsParceler#HealthStatsParceler(android.os.health.HealthStatsWriter) parameter #0:
+    
+MissingNullability: android.os.health.HealthStatsParceler#getHealthStats():
+    
+MissingNullability: android.os.health.HealthStatsParceler#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.os.health.HealthStatsWriter#HealthStatsWriter(android.os.health.HealthKeys.Constants) parameter #0:
+    
+MissingNullability: android.os.health.HealthStatsWriter#addMeasurements(int, String, long) parameter #1:
+    
+MissingNullability: android.os.health.HealthStatsWriter#addStats(int, String, android.os.health.HealthStatsWriter) parameter #1:
+    
+MissingNullability: android.os.health.HealthStatsWriter#addStats(int, String, android.os.health.HealthStatsWriter) parameter #2:
+    
+MissingNullability: android.os.health.HealthStatsWriter#addTimers(int, String, android.os.health.TimerStat) parameter #1:
+    
+MissingNullability: android.os.health.HealthStatsWriter#addTimers(int, String, android.os.health.TimerStat) parameter #2:
+    
+MissingNullability: android.os.health.HealthStatsWriter#flattenToParcel(android.os.Parcel) parameter #0:
+    
+MissingNullability: android.os.storage.StorageVolume#getPath():
+    
+MissingNullability: android.permission.RuntimePermissionPresentationInfo#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.provider.CalendarContract.Calendars#SYNC_WRITABLE_COLUMNS:
+    
+MissingNullability: android.provider.CalendarContract.Events#SYNC_WRITABLE_COLUMNS:
+    
+MissingNullability: android.provider.ContactsContract.CommonDataKinds.Phone#ENTERPRISE_CONTENT_URI:
+    
+MissingNullability: android.provider.ContactsContract.RawContactsEntity#CORP_CONTENT_URI:
+    
+MissingNullability: android.provider.DeviceConfig#getProperty(String, String):
+    
+MissingNullability: android.provider.DeviceConfig#getString(String, String, String):
+    
+MissingNullability: android.provider.MediaStore#deleteContributedMedia(android.content.Context, String, android.os.UserHandle) parameter #0:
+    
+MissingNullability: android.provider.MediaStore#deleteContributedMedia(android.content.Context, String, android.os.UserHandle) parameter #1:
+    
+MissingNullability: android.provider.MediaStore#deleteContributedMedia(android.content.Context, String, android.os.UserHandle) parameter #2:
+    
+MissingNullability: android.provider.MediaStore#getContributedMediaSize(android.content.Context, String, android.os.UserHandle) parameter #0:
+    
+MissingNullability: android.provider.MediaStore#getContributedMediaSize(android.content.Context, String, android.os.UserHandle) parameter #1:
+    
+MissingNullability: android.provider.MediaStore#getContributedMediaSize(android.content.Context, String, android.os.UserHandle) parameter #2:
+    
+MissingNullability: android.provider.MediaStore#scanFile(android.content.Context, java.io.File):
+    
+MissingNullability: android.provider.MediaStore#scanFile(android.content.Context, java.io.File) parameter #0:
+    
+MissingNullability: android.provider.MediaStore#scanFile(android.content.Context, java.io.File) parameter #1:
+    
+MissingNullability: android.provider.MediaStore#scanFileFromShell(android.content.Context, java.io.File):
+    
+MissingNullability: android.provider.MediaStore#scanFileFromShell(android.content.Context, java.io.File) parameter #0:
+    
+MissingNullability: android.provider.MediaStore#scanFileFromShell(android.content.Context, java.io.File) parameter #1:
+    
+MissingNullability: android.provider.MediaStore#scanVolume(android.content.Context, java.io.File) parameter #0:
+    
+MissingNullability: android.provider.MediaStore#scanVolume(android.content.Context, java.io.File) parameter #1:
+    
+MissingNullability: android.provider.MediaStore#waitForIdle(android.content.Context) parameter #0:
+    
+MissingNullability: android.security.KeyStoreException#KeyStoreException(int, String) parameter #1:
+    
+MissingNullability: android.security.keystore.AttestationUtils#attestDeviceIds(android.content.Context, int[], byte[]) parameter #0:
+    
+MissingNullability: android.security.keystore.KeyProtection.Builder#setBoundToSpecificSecureUserId(long):
+    
+MissingNullability: android.service.autofill.AutofillFieldClassificationService#onBind(android.content.Intent):
+    
+MissingNullability: android.service.autofill.AutofillFieldClassificationService#onBind(android.content.Intent) parameter #0:
+    
+MissingNullability: android.service.autofill.CompositeUserData#getCategoryIds():
+    
+MissingNullability: android.service.autofill.CompositeUserData#getDefaultFieldClassificationArgs():
+    
+MissingNullability: android.service.autofill.CompositeUserData#getFieldClassificationAlgorithms():
+    
+MissingNullability: android.service.autofill.CompositeUserData#getFieldClassificationArgs():
+    
+MissingNullability: android.service.autofill.CompositeUserData#getValues():
+    
+MissingNullability: android.service.autofill.CompositeUserData#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.service.autofill.UserData#getFieldClassificationAlgorithms():
+    
+MissingNullability: android.service.autofill.augmented.AugmentedAutofillService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #0:
+    
+MissingNullability: android.service.autofill.augmented.AugmentedAutofillService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #1:
+    
+MissingNullability: android.service.autofill.augmented.AugmentedAutofillService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #2:
+    
+MissingNullability: android.service.autofill.augmented.AugmentedAutofillService#onUnbind(android.content.Intent) parameter #0:
+    
+MissingNullability: android.service.contentcapture.ContentCaptureService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #0:
+    
+MissingNullability: android.service.contentcapture.ContentCaptureService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #1:
+    
+MissingNullability: android.service.contentcapture.ContentCaptureService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #2:
+    
+MissingNullability: android.service.notification.Adjustment#Adjustment(String, String, android.os.Bundle, CharSequence, int) parameter #0:
+    
+MissingNullability: android.service.notification.Adjustment#Adjustment(String, String, android.os.Bundle, CharSequence, int) parameter #1:
+    
+MissingNullability: android.service.notification.Adjustment#Adjustment(String, String, android.os.Bundle, CharSequence, int) parameter #2:
+    
+MissingNullability: android.service.notification.Adjustment#Adjustment(String, String, android.os.Bundle, CharSequence, int) parameter #3:
+    
+MissingNullability: android.service.notification.Adjustment#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.service.notification.NotificationAssistantService#attachBaseContext(android.content.Context) parameter #0:
+    
+MissingNullability: android.service.notification.NotificationStats#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.service.notification.SnoozeCriterion#SnoozeCriterion(String, CharSequence, CharSequence) parameter #0:
+    
+MissingNullability: android.service.notification.SnoozeCriterion#SnoozeCriterion(String, CharSequence, CharSequence) parameter #1:
+    
+MissingNullability: android.service.notification.SnoozeCriterion#SnoozeCriterion(String, CharSequence, CharSequence) parameter #2:
+    
+MissingNullability: android.service.notification.SnoozeCriterion#SnoozeCriterion(android.os.Parcel) parameter #0:
+    
+MissingNullability: android.service.notification.SnoozeCriterion#getConfirmation():
+    
+MissingNullability: android.service.notification.SnoozeCriterion#getExplanation():
+    
+MissingNullability: android.service.notification.SnoozeCriterion#getId():
+    
+MissingNullability: android.service.notification.SnoozeCriterion#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.telecom.Call.Details#getTelecomCallId():
+    
+MissingNullability: android.telecom.CallScreeningService.CallResponse.Builder#setShouldScreenCallFurther(boolean):
+    
+MissingNullability: android.telecom.Conference#getPrimaryConnection():
+    
+MissingNullability: android.telecom.PhoneAccountSuggestionService#onBind(android.content.Intent):
+    
+MissingNullability: android.telecom.PhoneAccountSuggestionService#onBind(android.content.Intent) parameter #0:
+    
+MissingNullability: android.telephony.CallQuality#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.telephony.DataSpecificRegistrationInfo#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.telephony.LteVopsSupportInfo#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.telephony.NetworkRegistrationInfo#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.telephony.ServiceState#addNetworkRegistrationInfo(android.telephony.NetworkRegistrationInfo) parameter #0:
+    
+MissingNullability: android.telephony.ServiceState#setCellBandwidths(int[]) parameter #0:
+    
+MissingNullability: android.telephony.SmsManager#checkSmsShortCodeDestination(String, String) parameter #0:
+    
+MissingNullability: android.telephony.SmsManager#checkSmsShortCodeDestination(String, String) parameter #1:
+    
+MissingNullability: android.telephony.TelephonyManager#checkCarrierPrivilegesForPackage(String) parameter #0:
+    
+MissingNullability: android.telephony.TelephonyManager#getCarrierPackageNamesForIntent(android.content.Intent):
+    
+MissingNullability: android.telephony.TelephonyManager#getCarrierPackageNamesForIntent(android.content.Intent) parameter #0:
+    
+MissingNullability: android.telephony.TelephonyManager#getLine1AlphaTag():
+    
+MissingNullability: android.telephony.TelephonyManager#getRadioHalVersion():
+    
+MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String) parameter #0:
+    
+MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String) parameter #1:
+    
+MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String) parameter #2:
+    
+MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String) parameter #3:
+    
+MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String) parameter #4:
+    
+MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String) parameter #5:
+    
+MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String) parameter #6:
+    
+MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #0:
+    
+MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #1:
+    
+MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #2:
+    
+MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #3:
+    
+MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #4:
+    
+MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #5:
+    
+MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #6:
+    
+MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #7:
+    
+MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #8:
+    
+MissingNullability: android.telephony.ims.ImsCallForwardInfo#getNumber():
+    
+MissingNullability: android.telephony.ims.ImsCallForwardInfo#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallProfile#ImsCallProfile(int, int, android.os.Bundle, android.telephony.ims.ImsStreamMediaProfile) parameter #2:
+    
+MissingNullability: android.telephony.ims.ImsCallProfile#ImsCallProfile(int, int, android.os.Bundle, android.telephony.ims.ImsStreamMediaProfile) parameter #3:
+    
+MissingNullability: android.telephony.ims.ImsCallProfile#getCallExtra(String):
+    
+MissingNullability: android.telephony.ims.ImsCallProfile#getCallExtra(String) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallProfile#getCallExtra(String, String):
+    
+MissingNullability: android.telephony.ims.ImsCallProfile#getCallExtra(String, String) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallProfile#getCallExtra(String, String) parameter #1:
+    
+MissingNullability: android.telephony.ims.ImsCallProfile#getCallExtraBoolean(String) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallProfile#getCallExtraBoolean(String, boolean) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallProfile#getCallExtraInt(String) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallProfile#getCallExtraInt(String, int) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallProfile#getCallExtras():
+    
+MissingNullability: android.telephony.ims.ImsCallProfile#getMediaProfile():
+    
+MissingNullability: android.telephony.ims.ImsCallProfile#getVideoStateFromImsCallProfile(android.telephony.ims.ImsCallProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallProfile#setCallExtra(String, String) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallProfile#setCallExtra(String, String) parameter #1:
+    
+MissingNullability: android.telephony.ims.ImsCallProfile#setCallExtraBoolean(String, boolean) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallProfile#setCallExtraInt(String, int) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallProfile#updateCallExtras(android.telephony.ims.ImsCallProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallProfile#updateCallType(android.telephony.ims.ImsCallProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallProfile#updateMediaProfile(android.telephony.ims.ImsCallProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallProfile#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionConferenceExtendFailed(android.telephony.ims.ImsReasonInfo) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionConferenceExtendReceived(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionConferenceExtendReceived(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile) parameter #1:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionConferenceExtended(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionConferenceExtended(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile) parameter #1:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionConferenceStateUpdated(android.telephony.ims.ImsConferenceState) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionHandover(int, int, android.telephony.ims.ImsReasonInfo) parameter #2:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionHandoverFailed(int, int, android.telephony.ims.ImsReasonInfo) parameter #2:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionHeld(android.telephony.ims.ImsCallProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionHoldFailed(android.telephony.ims.ImsReasonInfo) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionHoldReceived(android.telephony.ims.ImsCallProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionInitiated(android.telephony.ims.ImsCallProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionInitiatedFailed(android.telephony.ims.ImsReasonInfo) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionInviteParticipantsRequestFailed(android.telephony.ims.ImsReasonInfo) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionMergeComplete(android.telephony.ims.stub.ImsCallSessionImplBase) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionMergeFailed(android.telephony.ims.ImsReasonInfo) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionMergeStarted(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionMergeStarted(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile) parameter #1:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionProgressing(android.telephony.ims.ImsStreamMediaProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionRemoveParticipantsRequestFailed(android.telephony.ims.ImsReasonInfo) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionResumeFailed(android.telephony.ims.ImsReasonInfo) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionResumeReceived(android.telephony.ims.ImsCallProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionResumed(android.telephony.ims.ImsCallProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionRttMessageReceived(String) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionRttModifyRequestReceived(android.telephony.ims.ImsCallProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionSuppServiceReceived(android.telephony.ims.ImsSuppServiceNotification) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionTerminated(android.telephony.ims.ImsReasonInfo) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionUpdateFailed(android.telephony.ims.ImsReasonInfo) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionUpdateReceived(android.telephony.ims.ImsCallProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionUpdated(android.telephony.ims.ImsCallProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsCallSessionListener#callSessionUssdMessageReceived(int, String) parameter #1:
+    
+MissingNullability: android.telephony.ims.ImsConferenceState#getConnectionStateForStatus(String) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsConferenceState#mParticipants:
+    
+MissingNullability: android.telephony.ims.ImsConferenceState#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsExternalCallState#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsReasonInfo#ImsReasonInfo(int, int, String) parameter #2:
+    
+MissingNullability: android.telephony.ims.ImsReasonInfo#getExtraMessage():
+    
+MissingNullability: android.telephony.ims.ImsReasonInfo#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsService#createMmTelFeature(int):
+    
+MissingNullability: android.telephony.ims.ImsService#createRcsFeature(int):
+    
+MissingNullability: android.telephony.ims.ImsService#getConfig(int):
+    
+MissingNullability: android.telephony.ims.ImsService#getRegistration(int):
+    
+MissingNullability: android.telephony.ims.ImsService#onUpdateSupportedImsFeatures(android.telephony.ims.stub.ImsFeatureConfiguration) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsService#querySupportedImsFeatures():
+    
+MissingNullability: android.telephony.ims.ImsSsData#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsSsInfo#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsStreamMediaProfile#copyFrom(android.telephony.ims.ImsStreamMediaProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsStreamMediaProfile#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsSuppServiceNotification#ImsSuppServiceNotification(int, int, int, int, String, String[]) parameter #4:
+    
+MissingNullability: android.telephony.ims.ImsSuppServiceNotification#ImsSuppServiceNotification(int, int, int, int, String, String[]) parameter #5:
+    
+MissingNullability: android.telephony.ims.ImsSuppServiceNotification#history:
+    
+MissingNullability: android.telephony.ims.ImsSuppServiceNotification#number:
+    
+MissingNullability: android.telephony.ims.ImsSuppServiceNotification#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsUtListener#onSupplementaryServiceIndication(android.telephony.ims.ImsSsData) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsUtListener#onUtConfigurationCallBarringQueried(int, android.telephony.ims.ImsSsInfo[]) parameter #1:
+    
+MissingNullability: android.telephony.ims.ImsUtListener#onUtConfigurationCallForwardQueried(int, android.telephony.ims.ImsCallForwardInfo[]) parameter #1:
+    
+MissingNullability: android.telephony.ims.ImsUtListener#onUtConfigurationCallWaitingQueried(int, android.telephony.ims.ImsSsInfo[]) parameter #1:
+    
+MissingNullability: android.telephony.ims.ImsUtListener#onUtConfigurationQueried(int, android.os.Bundle) parameter #1:
+    
+MissingNullability: android.telephony.ims.ImsUtListener#onUtConfigurationQueryFailed(int, android.telephony.ims.ImsReasonInfo) parameter #1:
+    
+MissingNullability: android.telephony.ims.ImsUtListener#onUtConfigurationUpdateFailed(int, android.telephony.ims.ImsReasonInfo) parameter #1:
+    
+MissingNullability: android.telephony.ims.ImsVideoCallProvider#changeCameraCapabilities(android.telecom.VideoProfile.CameraCapabilities) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsVideoCallProvider#onSendSessionModifyRequest(android.telecom.VideoProfile, android.telecom.VideoProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsVideoCallProvider#onSendSessionModifyRequest(android.telecom.VideoProfile, android.telecom.VideoProfile) parameter #1:
+    
+MissingNullability: android.telephony.ims.ImsVideoCallProvider#onSendSessionModifyResponse(android.telecom.VideoProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsVideoCallProvider#onSetCamera(String) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsVideoCallProvider#onSetCamera(String, int) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsVideoCallProvider#onSetDisplaySurface(android.view.Surface) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsVideoCallProvider#onSetPauseImage(android.net.Uri) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsVideoCallProvider#onSetPreviewSurface(android.view.Surface) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsVideoCallProvider#receiveSessionModifyRequest(android.telecom.VideoProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.ImsVideoCallProvider#receiveSessionModifyResponse(int, android.telecom.VideoProfile, android.telecom.VideoProfile) parameter #1:
+    
+MissingNullability: android.telephony.ims.ImsVideoCallProvider#receiveSessionModifyResponse(int, android.telecom.VideoProfile, android.telecom.VideoProfile) parameter #2:
+    
+MissingNullability: android.telephony.ims.feature.CapabilityChangeRequest#getCapabilitiesToDisable():
+    
+MissingNullability: android.telephony.ims.feature.CapabilityChangeRequest#getCapabilitiesToEnable():
+    
+MissingNullability: android.telephony.ims.feature.CapabilityChangeRequest#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.telephony.ims.feature.ImsFeature#changeEnabledCapabilities(android.telephony.ims.feature.CapabilityChangeRequest, android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy) parameter #0:
+    
+MissingNullability: android.telephony.ims.feature.ImsFeature#changeEnabledCapabilities(android.telephony.ims.feature.CapabilityChangeRequest, android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy) parameter #1:
+    
+MissingNullability: android.telephony.ims.feature.MmTelFeature#queryCapabilityStatus():
+    
+MissingNullability: android.telephony.ims.feature.MmTelFeature.MmTelCapabilities#MmTelCapabilities(android.telephony.ims.feature.ImsFeature.Capabilities) parameter #0:
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#accept(int, android.telephony.ims.ImsStreamMediaProfile) parameter #1:
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#deflect(String) parameter #0:
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#extendToConference(String[]) parameter #0:
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#getCallId():
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#getCallProfile():
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#getImsVideoCallProvider():
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#getLocalCallProfile():
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#getProperty(String):
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#getProperty(String) parameter #0:
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#getRemoteCallProfile():
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#hold(android.telephony.ims.ImsStreamMediaProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#inviteParticipants(String[]) parameter #0:
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#removeParticipants(String[]) parameter #0:
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#resume(android.telephony.ims.ImsStreamMediaProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#sendDtmf(char, android.os.Message) parameter #1:
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#sendRttMessage(String) parameter #0:
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#sendRttModifyRequest(android.telephony.ims.ImsCallProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#sendUssd(String) parameter #0:
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#setListener(android.telephony.ims.ImsCallSessionListener) parameter #0:
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#start(String, android.telephony.ims.ImsCallProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#start(String, android.telephony.ims.ImsCallProfile) parameter #1:
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#startConference(String[], android.telephony.ims.ImsCallProfile) parameter #0:
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#startConference(String[], android.telephony.ims.ImsCallProfile) parameter #1:
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase#update(int, android.telephony.ims.ImsStreamMediaProfile) parameter #1:
+    
+MissingNullability: android.telephony.ims.stub.ImsCallSessionImplBase.State#toString(int):
+    
+MissingNullability: android.telephony.ims.stub.ImsConfigImplBase#getConfigString(int):
+    
+MissingNullability: android.telephony.ims.stub.ImsConfigImplBase#notifyProvisionedValueChanged(int, String) parameter #1:
+    
+MissingNullability: android.telephony.ims.stub.ImsConfigImplBase#setConfig(int, String) parameter #1:
+    
+MissingNullability: android.telephony.ims.stub.ImsFeatureConfiguration#getServiceFeatures():
+    
+MissingNullability: android.telephony.ims.stub.ImsFeatureConfiguration#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.telephony.ims.stub.ImsFeatureConfiguration.Builder#addFeature(int, int):
+    
+MissingNullability: android.telephony.ims.stub.ImsFeatureConfiguration.Builder#build():
+    
+MissingNullability: android.telephony.ims.stub.ImsMultiEndpointImplBase#onImsExternalCallStateUpdate(java.util.List<android.telephony.ims.ImsExternalCallState>) parameter #0:
+    
+MissingNullability: android.telephony.ims.stub.ImsRegistrationImplBase#onDeregistered(android.telephony.ims.ImsReasonInfo) parameter #0:
+    
+MissingNullability: android.telephony.ims.stub.ImsRegistrationImplBase#onSubscriberAssociatedUriChanged(android.net.Uri[]) parameter #0:
+    
+MissingNullability: android.telephony.ims.stub.ImsRegistrationImplBase#onTechnologyChangeFailed(int, android.telephony.ims.ImsReasonInfo) parameter #1:
+    
+MissingNullability: android.telephony.ims.stub.ImsSmsImplBase#getSmsFormat():
+    
+MissingNullability: android.telephony.ims.stub.ImsSmsImplBase#onSmsReceived(int, String, byte[]) parameter #1:
+    
+MissingNullability: android.telephony.ims.stub.ImsSmsImplBase#onSmsReceived(int, String, byte[]) parameter #2:
+    
+MissingNullability: android.telephony.ims.stub.ImsSmsImplBase#onSmsStatusReportReceived(int, String, byte[]) parameter #1:
+    
+MissingNullability: android.telephony.ims.stub.ImsSmsImplBase#onSmsStatusReportReceived(int, String, byte[]) parameter #2:
+    
+MissingNullability: android.telephony.ims.stub.ImsSmsImplBase#onSmsStatusReportReceived(int, int, String, byte[]) parameter #2:
+    
+MissingNullability: android.telephony.ims.stub.ImsSmsImplBase#onSmsStatusReportReceived(int, int, String, byte[]) parameter #3:
+    
+MissingNullability: android.telephony.ims.stub.ImsSmsImplBase#sendSms(int, int, String, String, boolean, byte[]) parameter #2:
+    
+MissingNullability: android.telephony.ims.stub.ImsSmsImplBase#sendSms(int, int, String, String, boolean, byte[]) parameter #3:
+    
+MissingNullability: android.telephony.ims.stub.ImsSmsImplBase#sendSms(int, int, String, String, boolean, byte[]) parameter #5:
+    
+MissingNullability: android.telephony.ims.stub.ImsUtImplBase#queryCallForward(int, String) parameter #1:
+    
+MissingNullability: android.telephony.ims.stub.ImsUtImplBase#setListener(android.telephony.ims.ImsUtListener) parameter #0:
+    
+MissingNullability: android.telephony.ims.stub.ImsUtImplBase#transact(android.os.Bundle) parameter #0:
+    
+MissingNullability: android.telephony.ims.stub.ImsUtImplBase#updateCallBarring(int, int, String[]) parameter #2:
+    
+MissingNullability: android.telephony.ims.stub.ImsUtImplBase#updateCallBarringForServiceClass(int, int, String[], int) parameter #2:
+    
+MissingNullability: android.telephony.ims.stub.ImsUtImplBase#updateCallForward(int, int, String, int, int) parameter #2:
+    
+MissingNullability: android.telephony.mbms.DownloadRequest.Builder#setServiceId(String):
+    
+MissingNullability: android.telephony.mbms.DownloadRequest.Builder#setServiceId(String) parameter #0:
+    
+MissingNullability: android.telephony.mbms.FileInfo#FileInfo(android.net.Uri, String) parameter #0:
+    
+MissingNullability: android.telephony.mbms.FileInfo#FileInfo(android.net.Uri, String) parameter #1:
+    
+MissingNullability: android.telephony.mbms.FileServiceInfo#FileServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date, java.util.List<android.telephony.mbms.FileInfo>) parameter #0:
+    
+MissingNullability: android.telephony.mbms.FileServiceInfo#FileServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date, java.util.List<android.telephony.mbms.FileInfo>) parameter #1:
+    
+MissingNullability: android.telephony.mbms.FileServiceInfo#FileServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date, java.util.List<android.telephony.mbms.FileInfo>) parameter #2:
+    
+MissingNullability: android.telephony.mbms.FileServiceInfo#FileServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date, java.util.List<android.telephony.mbms.FileInfo>) parameter #3:
+    
+MissingNullability: android.telephony.mbms.FileServiceInfo#FileServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date, java.util.List<android.telephony.mbms.FileInfo>) parameter #4:
+    
+MissingNullability: android.telephony.mbms.FileServiceInfo#FileServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date, java.util.List<android.telephony.mbms.FileInfo>) parameter #5:
+    
+MissingNullability: android.telephony.mbms.FileServiceInfo#FileServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date, java.util.List<android.telephony.mbms.FileInfo>) parameter #6:
+    
+MissingNullability: android.telephony.mbms.StreamingServiceInfo#StreamingServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date) parameter #0:
+    
+MissingNullability: android.telephony.mbms.StreamingServiceInfo#StreamingServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date) parameter #1:
+    
+MissingNullability: android.telephony.mbms.StreamingServiceInfo#StreamingServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date) parameter #2:
+    
+MissingNullability: android.telephony.mbms.StreamingServiceInfo#StreamingServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date) parameter #3:
+    
+MissingNullability: android.telephony.mbms.StreamingServiceInfo#StreamingServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date) parameter #4:
+    
+MissingNullability: android.telephony.mbms.StreamingServiceInfo#StreamingServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date) parameter #5:
+    
+MissingNullability: android.telephony.mbms.UriPathPair#getContentUri():
+    
+MissingNullability: android.telephony.mbms.UriPathPair#getFilePathUri():
+    
+MissingNullability: android.telephony.mbms.UriPathPair#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#addProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener) parameter #0:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#addProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener) parameter #1:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#addStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener) parameter #0:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#addStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener) parameter #1:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#asBinder():
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#cancelDownload(android.telephony.mbms.DownloadRequest) parameter #0:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#download(android.telephony.mbms.DownloadRequest) parameter #0:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#initialize(int, android.telephony.mbms.MbmsDownloadSessionCallback) parameter #1:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#onTransact(int, android.os.Parcel, android.os.Parcel, int) parameter #1:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#onTransact(int, android.os.Parcel, android.os.Parcel, int) parameter #2:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#removeProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener) parameter #0:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#removeProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener) parameter #1:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#removeStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener) parameter #0:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#removeStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener) parameter #1:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#requestDownloadState(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo) parameter #0:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#requestDownloadState(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo) parameter #1:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#requestUpdateFileServices(int, java.util.List<java.lang.String>) parameter #1:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#resetDownloadKnowledge(android.telephony.mbms.DownloadRequest) parameter #0:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsDownloadServiceBase#setTempFileRootDirectory(int, String) parameter #1:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsGroupCallServiceBase#onBind(android.content.Intent):
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsGroupCallServiceBase#onBind(android.content.Intent) parameter #0:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsStreamingServiceBase#asBinder():
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsStreamingServiceBase#getPlaybackUri(int, String) parameter #1:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsStreamingServiceBase#initialize(android.telephony.mbms.MbmsStreamingSessionCallback, int) parameter #0:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsStreamingServiceBase#onTransact(int, android.os.Parcel, android.os.Parcel, int) parameter #1:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsStreamingServiceBase#onTransact(int, android.os.Parcel, android.os.Parcel, int) parameter #2:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsStreamingServiceBase#requestUpdateStreamingServices(int, java.util.List<java.lang.String>) parameter #1:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsStreamingServiceBase#startStreaming(int, String, android.telephony.mbms.StreamingServiceCallback) parameter #1:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsStreamingServiceBase#startStreaming(int, String, android.telephony.mbms.StreamingServiceCallback) parameter #2:
+    
+MissingNullability: android.telephony.mbms.vendor.MbmsStreamingServiceBase#stopStreaming(int, String) parameter #1:
+    
+MissingNullability: android.telephony.mbms.vendor.VendorUtils#getAppReceiverFromPackageName(android.content.Context, String):
+    
+MissingNullability: android.telephony.mbms.vendor.VendorUtils#getAppReceiverFromPackageName(android.content.Context, String) parameter #0:
+    
+MissingNullability: android.telephony.mbms.vendor.VendorUtils#getAppReceiverFromPackageName(android.content.Context, String) parameter #1:
+    
+MissingNullability: android.text.Selection.MemoryTextWatcher#afterTextChanged(android.text.Editable) parameter #0:
+    
+MissingNullability: android.text.Selection.MemoryTextWatcher#beforeTextChanged(CharSequence, int, int, int) parameter #0:
+    
+MissingNullability: android.text.Selection.MemoryTextWatcher#onTextChanged(CharSequence, int, int, int) parameter #0:
+    
+MissingNullability: android.transition.TransitionManager#getTransition(android.transition.Scene):
+    
+MissingNullability: android.transition.TransitionManager#getTransition(android.transition.Scene) parameter #0:
+    
+MissingNullability: android.util.FeatureFlagUtils#getAllFeatureFlags():
+    
+MissingNullability: android.util.FeatureFlagUtils#isEnabled(android.content.Context, String) parameter #0:
+    
+MissingNullability: android.util.FeatureFlagUtils#isEnabled(android.content.Context, String) parameter #1:
+    
+MissingNullability: android.util.FeatureFlagUtils#setEnabled(android.content.Context, String, boolean) parameter #0:
+    
+MissingNullability: android.util.FeatureFlagUtils#setEnabled(android.content.Context, String, boolean) parameter #1:
+    
+MissingNullability: android.util.TimeUtils#formatDuration(long):
+    
+MissingNullability: android.util.proto.EncodedBuffer#dumpBuffers(String) parameter #0:
+    
+MissingNullability: android.util.proto.EncodedBuffer#dumpByteString(String, String, byte[]) parameter #0:
+    
+MissingNullability: android.util.proto.EncodedBuffer#dumpByteString(String, String, byte[]) parameter #1:
+    
+MissingNullability: android.util.proto.EncodedBuffer#dumpByteString(String, String, byte[]) parameter #2:
+    
+MissingNullability: android.util.proto.EncodedBuffer#getBytes(int):
+    
+MissingNullability: android.util.proto.EncodedBuffer#getDebugString():
+    
+MissingNullability: android.util.proto.EncodedBuffer#writeRawBuffer(byte[]) parameter #0:
+    
+MissingNullability: android.util.proto.EncodedBuffer#writeRawBuffer(byte[], int, int) parameter #0:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#ProtoOutputStream(java.io.FileDescriptor) parameter #0:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#ProtoOutputStream(java.io.OutputStream) parameter #0:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#dump(String) parameter #0:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#getBytes():
+    
+MissingNullability: android.util.proto.ProtoOutputStream#write(long, String) parameter #1:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#write(long, byte[]) parameter #1:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#writeBytes(long, byte[]) parameter #1:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#writeObject(long, byte[]) parameter #1:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#writePackedBool(long, boolean[]) parameter #1:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#writePackedDouble(long, double[]) parameter #1:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#writePackedEnum(long, int[]) parameter #1:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#writePackedFixed32(long, int[]) parameter #1:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#writePackedFixed64(long, long[]) parameter #1:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#writePackedFloat(long, float[]) parameter #1:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#writePackedInt32(long, int[]) parameter #1:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#writePackedInt64(long, long[]) parameter #1:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#writePackedSFixed32(long, int[]) parameter #1:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#writePackedSFixed64(long, long[]) parameter #1:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#writePackedSInt32(long, int[]) parameter #1:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#writePackedSInt64(long, long[]) parameter #1:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#writePackedUInt32(long, int[]) parameter #1:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#writePackedUInt64(long, long[]) parameter #1:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#writeRepeatedBytes(long, byte[]) parameter #1:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#writeRepeatedObject(long, byte[]) parameter #1:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#writeRepeatedString(long, String) parameter #1:
+    
+MissingNullability: android.util.proto.ProtoOutputStream#writeString(long, String) parameter #1:
+    
+MissingNullability: android.util.proto.ProtoParseException#ProtoParseException(String) parameter #0:
+    
+MissingNullability: android.util.proto.ProtoStream#FIELD_TYPE_NAMES:
+    
+MissingNullability: android.util.proto.ProtoStream#getFieldCountString(long):
+    
+MissingNullability: android.util.proto.ProtoStream#getFieldIdString(long):
+    
+MissingNullability: android.util.proto.ProtoStream#getFieldTypeString(long):
+    
+MissingNullability: android.util.proto.ProtoStream#getWireTypeString(int):
+    
+MissingNullability: android.util.proto.ProtoStream#token2String(long):
+    
+MissingNullability: android.util.proto.WireTypeMismatchException#WireTypeMismatchException(String) parameter #0:
+    
+MissingNullability: android.view.Choreographer#postCallback(int, Runnable, Object) parameter #1:
+    
+MissingNullability: android.view.Choreographer#postCallback(int, Runnable, Object) parameter #2:
+    
+MissingNullability: android.view.Choreographer#postCallbackDelayed(int, Runnable, Object, long) parameter #1:
+    
+MissingNullability: android.view.Choreographer#postCallbackDelayed(int, Runnable, Object, long) parameter #2:
+    
+MissingNullability: android.view.Choreographer#removeCallbacks(int, Runnable, Object) parameter #1:
+    
+MissingNullability: android.view.Choreographer#removeCallbacks(int, Runnable, Object) parameter #2:
+    
+MissingNullability: android.view.FocusFinder#sort(android.view.View[], int, int, android.view.ViewGroup, boolean) parameter #0:
+    
+MissingNullability: android.view.FocusFinder#sort(android.view.View[], int, int, android.view.ViewGroup, boolean) parameter #3:
+    
+MissingNullability: android.view.KeyEvent#actionToString(int):
+    
+MissingNullability: android.view.SurfaceControlViewHost#SurfaceControlViewHost(android.content.Context, android.view.Display, android.view.SurfaceControl) parameter #0:
+    
+MissingNullability: android.view.SurfaceControlViewHost#SurfaceControlViewHost(android.content.Context, android.view.Display, android.view.SurfaceControl) parameter #1:
+    
+MissingNullability: android.view.SurfaceControlViewHost#SurfaceControlViewHost(android.content.Context, android.view.Display, android.view.SurfaceControl) parameter #2:
+    
+MissingNullability: android.view.SurfaceControlViewHost#addView(android.view.View, android.view.WindowManager.LayoutParams) parameter #0:
+    
+MissingNullability: android.view.SurfaceControlViewHost#addView(android.view.View, android.view.WindowManager.LayoutParams) parameter #1:
+    
+MissingNullability: android.view.SurfaceControlViewHost#relayout(android.view.WindowManager.LayoutParams) parameter #0:
+    
+MissingNullability: android.view.View#getTooltipView():
+    
+MissingNullability: android.view.View#isDefaultFocusHighlightNeeded(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable) parameter #0:
+    
+MissingNullability: android.view.View#isDefaultFocusHighlightNeeded(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable) parameter #1:
+    
+MissingNullability: android.view.ViewDebug#startRenderingCommandsCapture(android.view.View, java.util.concurrent.Executor, java.util.concurrent.Callable<java.io.OutputStream>) parameter #0:
+    
+MissingNullability: android.view.ViewDebug#startRenderingCommandsCapture(android.view.View, java.util.concurrent.Executor, java.util.concurrent.Callable<java.io.OutputStream>) parameter #1:
+    
+MissingNullability: android.view.ViewDebug#startRenderingCommandsCapture(android.view.View, java.util.concurrent.Executor, java.util.concurrent.Callable<java.io.OutputStream>) parameter #2:
+    
+MissingNullability: android.view.ViewDebug#startRenderingCommandsCapture(android.view.View, java.util.concurrent.Executor, java.util.function.Function<android.graphics.Picture,java.lang.Boolean>) parameter #0:
+    
+MissingNullability: android.view.ViewDebug#startRenderingCommandsCapture(android.view.View, java.util.concurrent.Executor, java.util.function.Function<android.graphics.Picture,java.lang.Boolean>) parameter #1:
+    
+MissingNullability: android.view.ViewDebug#startRenderingCommandsCapture(android.view.View, java.util.concurrent.Executor, java.util.function.Function<android.graphics.Picture,java.lang.Boolean>) parameter #2:
+    
+MissingNullability: android.view.WindowManager.LayoutParams#accessibilityTitle:
+    
+MissingNullability: android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener#onAccessibilityServicesStateChanged(android.view.accessibility.AccessibilityManager) parameter #0:
+    
+MissingNullability: android.view.accessibility.AccessibilityNodeInfo#setNumInstancesInUseCounter(java.util.concurrent.atomic.AtomicInteger) parameter #0:
+    
+MissingNullability: android.view.accessibility.AccessibilityNodeInfo#writeToParcelNoRecycle(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.view.accessibility.AccessibilityWindowInfo#setNumInstancesInUseCounter(java.util.concurrent.atomic.AtomicInteger) parameter #0:
+    
+MissingNullability: android.view.contentcapture.ContentCaptureEvent#writeToParcel(android.os.Parcel, int) parameter #0:
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#asyncNewChild(int):
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#getAutofillId():
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#getExtras():
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#getHint():
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#getNode():
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#getTempRect():
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#getText():
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#newChild(int):
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#newHtmlInfoBuilder(String):
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#newHtmlInfoBuilder(String) parameter #0:
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setAutofillHints(String[]) parameter #0:
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setAutofillId(android.view.autofill.AutofillId) parameter #0:
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setAutofillId(android.view.autofill.AutofillId, int) parameter #0:
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setAutofillOptions(CharSequence[]) parameter #0:
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setAutofillValue(android.view.autofill.AutofillValue) parameter #0:
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setClassName(String) parameter #0:
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setContentDescription(CharSequence) parameter #0:
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setHint(CharSequence) parameter #0:
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setHintIdEntry(String) parameter #0:
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setHtmlInfo(android.view.ViewStructure.HtmlInfo) parameter #0:
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setId(int, String, String, String) parameter #1:
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setId(int, String, String, String) parameter #2:
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setId(int, String, String, String) parameter #3:
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setLocaleList(android.os.LocaleList) parameter #0:
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setText(CharSequence) parameter #0:
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setText(CharSequence, int, int) parameter #0:
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setTextLines(int[], int[]) parameter #0:
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setTextLines(int[], int[]) parameter #1:
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setTransformation(android.graphics.Matrix) parameter #0:
+    
+MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setWebDomain(String) parameter #0:
+    
+MissingNullability: android.widget.CalendarView#getBoundsForDate(long, android.graphics.Rect) parameter #1:
+    
+MissingNullability: android.widget.ImageView#isDefaultFocusHighlightNeeded(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable) parameter #0:
+    
+MissingNullability: android.widget.ImageView#isDefaultFocusHighlightNeeded(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable) parameter #1:
+    
+MissingNullability: android.widget.Magnifier#getMagnifierDefaultSize():
+    
+MissingNullability: android.widget.Magnifier#setOnOperationCompleteCallback(android.widget.Magnifier.Callback) parameter #0:
+    
+MissingNullability: android.widget.NumberPicker#getDisplayedValueForCurrentSelection():
+    
+MissingNullability: android.widget.PopupMenu#getMenuListView():
+    
+MissingNullability: android.widget.TimePicker#getAmView():
+    
+MissingNullability: android.widget.TimePicker#getHourView():
+    
+MissingNullability: android.widget.TimePicker#getMinuteView():
+    
+MissingNullability: android.widget.TimePicker#getPmView():
+    
+
+
+MutableBareField: android.content.AutofillOptions#appDisabledExpiration:
+    
+MutableBareField: android.content.AutofillOptions#augmentedAutofillEnabled:
+    
+MutableBareField: android.content.AutofillOptions#disabledActivities:
+    
+MutableBareField: android.content.AutofillOptions#whitelistedActivitiesForAugmentedAutofill:
+    
+MutableBareField: android.database.sqlite.SQLiteDebug.DbStats#cache:
+    
+MutableBareField: android.database.sqlite.SQLiteDebug.DbStats#dbName:
+    
+MutableBareField: android.database.sqlite.SQLiteDebug.DbStats#dbSize:
+    
+MutableBareField: android.database.sqlite.SQLiteDebug.DbStats#lookaside:
+    
+MutableBareField: android.database.sqlite.SQLiteDebug.DbStats#pageSize:
+    
+MutableBareField: android.database.sqlite.SQLiteDebug.PagerStats#dbStats:
+    
+MutableBareField: android.database.sqlite.SQLiteDebug.PagerStats#largestMemAlloc:
+    
+MutableBareField: android.database.sqlite.SQLiteDebug.PagerStats#memoryUsed:
+    
+MutableBareField: android.database.sqlite.SQLiteDebug.PagerStats#pageCacheOverflow:
+    
+MutableBareField: android.os.StrictMode.ViolationInfo#broadcastIntentAction:
+    
+MutableBareField: android.os.StrictMode.ViolationInfo#durationMillis:
+    
+MutableBareField: android.os.StrictMode.ViolationInfo#numAnimationsRunning:
+    
+MutableBareField: android.os.StrictMode.ViolationInfo#numInstances:
+    
+MutableBareField: android.os.StrictMode.ViolationInfo#tags:
+    
+MutableBareField: android.os.StrictMode.ViolationInfo#violationNumThisLoop:
+    
+MutableBareField: android.os.StrictMode.ViolationInfo#violationUptimeMillis:
+    
+
+
+NoByteOrShort: android.media.audiofx.AudioEffect#byteArrayToShort(byte[]):
+    
+NoByteOrShort: android.media.audiofx.AudioEffect#setParameter(int, short) parameter #1:
+    
+NoByteOrShort: android.media.audiofx.AudioEffect#shortToByteArray(short) parameter #0:
+    
+NoByteOrShort: android.os.HwBlob#getInt16(long):
+    
+NoByteOrShort: android.os.HwBlob#getInt8(long):
+    
+NoByteOrShort: android.os.HwBlob#putInt16(long, short) parameter #1:
+    
+NoByteOrShort: android.os.HwBlob#putInt8(long, byte) parameter #1:
+    
+NoByteOrShort: android.os.HwParcel#readInt16():
+    
+NoByteOrShort: android.os.HwParcel#readInt8():
+    
+NoByteOrShort: android.os.HwParcel#writeInt16(short) parameter #0:
+    
+NoByteOrShort: android.os.HwParcel#writeInt8(byte) parameter #0:
+    
+NoByteOrShort: android.util.proto.EncodedBuffer#readRawByte():
+    
+NoByteOrShort: android.util.proto.EncodedBuffer#writeRawByte(byte) parameter #0:
+    
+
+
+NoClone: android.net.util.SocketUtils#bindSocketToInterface(java.io.FileDescriptor, String) parameter #0:
+    
+NoClone: android.net.util.SocketUtils#closeSocket(java.io.FileDescriptor) parameter #0:
+    
+NoClone: android.os.NativeHandle#NativeHandle(java.io.FileDescriptor, boolean) parameter #0:
+    
+NoClone: android.os.NativeHandle#getFileDescriptor():
+    
+NoClone: android.os.ParcelFileDescriptor#getFile(java.io.FileDescriptor) parameter #0:
+    
+NoClone: android.service.autofill.augmented.AugmentedAutofillService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #0:
+    
+NoClone: android.service.contentcapture.ContentCaptureService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #0:
+    
+NoClone: android.util.proto.ProtoOutputStream#ProtoOutputStream(java.io.FileDescriptor) parameter #0:
+    
+
+
+NoSettingsProvider: android.provider.Settings.Global#APP_OPS_CONSTANTS:
+    
+NoSettingsProvider: android.provider.Settings.Global#AUTOFILL_COMPAT_MODE_ALLOWED_PACKAGES:
+    
+NoSettingsProvider: android.provider.Settings.Global#AUTOMATIC_POWER_SAVE_MODE:
+    
+NoSettingsProvider: android.provider.Settings.Global#BATTERY_SAVER_CONSTANTS:
+    
+NoSettingsProvider: android.provider.Settings.Global#DYNAMIC_POWER_SAVINGS_DISABLE_THRESHOLD:
+    
+NoSettingsProvider: android.provider.Settings.Global#DYNAMIC_POWER_SAVINGS_ENABLED:
+    
+NoSettingsProvider: android.provider.Settings.Global#HIDDEN_API_BLACKLIST_EXEMPTIONS:
+    
+NoSettingsProvider: android.provider.Settings.Global#HIDDEN_API_POLICY:
+    
+NoSettingsProvider: android.provider.Settings.Global#HIDE_ERROR_DIALOGS:
+    
+NoSettingsProvider: android.provider.Settings.Global#LOCATION_GLOBAL_KILL_SWITCH:
+    
+NoSettingsProvider: android.provider.Settings.Global#LOCATION_IGNORE_SETTINGS_PACKAGE_WHITELIST:
+    
+NoSettingsProvider: android.provider.Settings.Global#LOW_POWER_MODE:
+    
+NoSettingsProvider: android.provider.Settings.Global#LOW_POWER_MODE_STICKY:
+    
+NoSettingsProvider: android.provider.Settings.Global#NOTIFICATION_BUBBLES:
+    
+NoSettingsProvider: android.provider.Settings.Global#OVERLAY_DISPLAY_DEVICES:
+    
+NoSettingsProvider: android.provider.Settings.Global#TETHER_OFFLOAD_DISABLED:
+    
+NoSettingsProvider: android.provider.Settings.Global#USE_OPEN_WIFI_PACKAGE:
+    
+NoSettingsProvider: android.provider.Settings.Secure#ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED:
+    
+NoSettingsProvider: android.provider.Settings.Secure#ACCESSIBILITY_SHORTCUT_TARGET_SERVICE:
+    
+NoSettingsProvider: android.provider.Settings.Secure#AUTOFILL_FEATURE_FIELD_CLASSIFICATION:
+    
+NoSettingsProvider: android.provider.Settings.Secure#AUTOFILL_SERVICE:
+    
+NoSettingsProvider: android.provider.Settings.Secure#AUTOFILL_USER_DATA_MAX_CATEGORY_COUNT:
+    
+NoSettingsProvider: android.provider.Settings.Secure#AUTOFILL_USER_DATA_MAX_FIELD_CLASSIFICATION_IDS_SIZE:
+    
+NoSettingsProvider: android.provider.Settings.Secure#AUTOFILL_USER_DATA_MAX_USER_DATA_SIZE:
+    
+NoSettingsProvider: android.provider.Settings.Secure#AUTOFILL_USER_DATA_MAX_VALUE_LENGTH:
+    
+NoSettingsProvider: android.provider.Settings.Secure#AUTOFILL_USER_DATA_MIN_VALUE_LENGTH:
+    
+NoSettingsProvider: android.provider.Settings.Secure#CONTENT_CAPTURE_ENABLED:
+    
+NoSettingsProvider: android.provider.Settings.Secure#DISABLED_PRINT_SERVICES:
+    
+NoSettingsProvider: android.provider.Settings.Secure#DOZE_ALWAYS_ON:
+    
+NoSettingsProvider: android.provider.Settings.Secure#ENABLED_VR_LISTENERS:
+    
+NoSettingsProvider: android.provider.Settings.Secure#IMMERSIVE_MODE_CONFIRMATIONS:
+    
+NoSettingsProvider: android.provider.Settings.Secure#LOCATION_ACCESS_CHECK_DELAY_MILLIS:
+    
+NoSettingsProvider: android.provider.Settings.Secure#LOCATION_ACCESS_CHECK_INTERVAL_MILLIS:
+    
+NoSettingsProvider: android.provider.Settings.Secure#LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS:
+    
+NoSettingsProvider: android.provider.Settings.Secure#LOCK_SCREEN_SHOW_NOTIFICATIONS:
+    
+NoSettingsProvider: android.provider.Settings.Secure#NFC_PAYMENT_DEFAULT_COMPONENT:
+    
+NoSettingsProvider: android.provider.Settings.Secure#NOTIFICATION_BADGING:
+    
+NoSettingsProvider: android.provider.Settings.Secure#POWER_MENU_LOCKED_SHOW_CONTENT:
+    
+NoSettingsProvider: android.provider.Settings.Secure#SYNC_PARENT_SOUNDS:
+    
+NoSettingsProvider: android.provider.Settings.Secure#USER_SETUP_COMPLETE:
+    
+NoSettingsProvider: android.provider.Settings.Secure#VOICE_INTERACTION_SERVICE:
+    
+
+
+NotCloseable: android.app.ActivityView:
+    
+NotCloseable: android.app.prediction.AppPredictor:
+    
+NotCloseable: android.net.EthernetManager.TetheredInterfaceRequest:
+    Classes that release resources (release()) should implement AutoClosable and CloseGuard: class android.net.EthernetManager.TetheredInterfaceRequest
+NotCloseable: android.os.HwParcel:
+    
+NotCloseable: android.telephony.ims.stub.ImsUtImplBase:
+    
+
+
+OnNameExpected: android.service.autofill.augmented.AugmentedAutofillService#dump(java.io.PrintWriter, String[]):
+    
+OnNameExpected: android.service.contentcapture.ContentCaptureService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]):
+    
+OnNameExpected: android.service.notification.ConditionProviderService#isBound():
+    
+OnNameExpected: android.service.notification.NotificationAssistantService#attachBaseContext(android.content.Context):
+    
+OnNameExpected: android.service.quicksettings.TileService#isQuickSettingsSupported():
+    
+OnNameExpected: android.service.watchdog.ExplicitHealthCheckService#setCallback(android.os.RemoteCallback):
+    If implemented by developer, should follow the on<Something> style; otherwise consider marking final
+OnNameExpected: android.telephony.ims.ImsService#createMmTelFeature(int):
+    
+OnNameExpected: android.telephony.ims.ImsService#createRcsFeature(int):
+    
+OnNameExpected: android.telephony.ims.ImsService#disableIms(int):
+    
+OnNameExpected: android.telephony.ims.ImsService#enableIms(int):
+    
+OnNameExpected: android.telephony.ims.ImsService#getConfig(int):
+    
+OnNameExpected: android.telephony.ims.ImsService#getRegistration(int):
+    
+OnNameExpected: android.telephony.ims.ImsService#querySupportedImsFeatures():
+    
+OnNameExpected: android.telephony.ims.ImsService#readyForFeatureCreation():
+    
+OnNameExpected: android.telephony.mbms.vendor.MbmsGroupCallServiceBase#dispose(int):
+    
+OnNameExpected: android.telephony.mbms.vendor.MbmsGroupCallServiceBase#initialize(android.telephony.mbms.MbmsGroupCallSessionCallback, int):
+    
+OnNameExpected: android.telephony.mbms.vendor.MbmsGroupCallServiceBase#startGroupCall(int, long, java.util.List<java.lang.Integer>, java.util.List<java.lang.Integer>, android.telephony.mbms.GroupCallCallback):
+    
+OnNameExpected: android.telephony.mbms.vendor.MbmsGroupCallServiceBase#stopGroupCall(int, long):
+    
+OnNameExpected: android.telephony.mbms.vendor.MbmsGroupCallServiceBase#updateGroupCall(int, long, java.util.List<java.lang.Integer>, java.util.List<java.lang.Integer>):
+    
+
+
+OptionalBuilderConstructorArgument: android.app.prediction.AppTargetEvent.Builder#Builder(android.app.prediction.AppTarget, int) parameter #0:
+    Builder constructor arguments must be mandatory (i.e. not @Nullable): parameter target in android.app.prediction.AppTargetEvent.Builder(android.app.prediction.AppTarget target, int actionType)
+OptionalBuilderConstructorArgument: android.net.CaptivePortalData.Builder#Builder(android.net.CaptivePortalData) parameter #0:
+    Builder constructor arguments must be mandatory (i.e. not @Nullable): parameter data in android.net.CaptivePortalData.Builder(android.net.CaptivePortalData data)
+OptionalBuilderConstructorArgument: android.os.VibrationAttributes.Builder#Builder(android.media.AudioAttributes, android.os.VibrationEffect) parameter #1:
+    Builder constructor arguments must be mandatory (i.e. not @Nullable): parameter effect in android.os.VibrationAttributes.Builder(android.media.AudioAttributes audio, android.os.VibrationEffect effect)
+
+
+PackageLayering: android.util.FeatureFlagUtils:
+    
+
+
+ParcelConstructor: android.os.IncidentManager.IncidentReport#IncidentReport(android.os.Parcel):
+    
+ParcelConstructor: android.os.IncidentReportArgs#IncidentReportArgs(android.os.Parcel):
+    
+ParcelConstructor: android.os.StrictMode.ViolationInfo#ViolationInfo(android.os.Parcel):
+    
+ParcelConstructor: android.os.VibrationEffect.OneShot#OneShot(android.os.Parcel):
+    
+ParcelConstructor: android.os.VibrationEffect.Prebaked#Prebaked(android.os.Parcel):
+    
+ParcelConstructor: android.os.VibrationEffect.Waveform#Waveform(android.os.Parcel):
+    
+ParcelConstructor: android.os.health.HealthStatsParceler#HealthStatsParceler(android.os.Parcel):
+    
+ParcelConstructor: android.service.notification.SnoozeCriterion#SnoozeCriterion(android.os.Parcel):
+    
+
+
+ParcelCreator: android.app.WindowConfiguration:
+    
+ParcelCreator: android.net.metrics.ApfProgramEvent:
+    
+ParcelCreator: android.net.metrics.ApfStats:
+    
+ParcelCreator: android.net.metrics.DhcpClientEvent:
+    
+ParcelCreator: android.net.metrics.DhcpErrorEvent:
+    
+ParcelCreator: android.net.metrics.IpConnectivityLog.Event:
+    
+ParcelCreator: android.net.metrics.IpManagerEvent:
+    
+ParcelCreator: android.net.metrics.IpReachabilityEvent:
+    
+ParcelCreator: android.net.metrics.NetworkEvent:
+    
+ParcelCreator: android.net.metrics.RaEvent:
+    
+ParcelCreator: android.net.metrics.ValidationProbeEvent:
+    
+ParcelCreator: android.os.VibrationEffect.OneShot:
+    
+ParcelCreator: android.os.VibrationEffect.Prebaked:
+    
+ParcelCreator: android.os.VibrationEffect.Waveform:
+    
+ParcelCreator: android.service.autofill.InternalOnClickAction:
+    
+ParcelCreator: android.service.autofill.InternalSanitizer:
+    
+ParcelCreator: android.service.autofill.InternalTransformation:
+    
+ParcelCreator: android.service.autofill.InternalValidator:
+    
+
+
+ParcelNotFinal: android.app.WindowConfiguration:
+    
+ParcelNotFinal: android.net.metrics.IpConnectivityLog.Event:
+    
+ParcelNotFinal: android.os.IncidentManager.IncidentReport:
+    
+ParcelNotFinal: android.os.VibrationEffect.OneShot:
+    
+ParcelNotFinal: android.os.VibrationEffect.Prebaked:
+    
+ParcelNotFinal: android.os.VibrationEffect.Waveform:
+    
+ParcelNotFinal: android.os.health.HealthStatsParceler:
+    
+ParcelNotFinal: android.service.autofill.InternalOnClickAction:
+    
+ParcelNotFinal: android.service.autofill.InternalSanitizer:
+    
+ParcelNotFinal: android.service.autofill.InternalTransformation:
+    
+ParcelNotFinal: android.service.autofill.InternalValidator:
+    
+
+
+ProtectedMember: android.app.ActivityView#onVisibilityChanged(android.view.View, int):
+    
+ProtectedMember: android.app.AppDetailsActivity#onCreate(android.os.Bundle):
+    
+ProtectedMember: android.os.VibrationEffect#scale(int, float, int):
+    
+ProtectedMember: android.service.autofill.augmented.AugmentedAutofillService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]):
+    
+ProtectedMember: android.service.autofill.augmented.AugmentedAutofillService#dump(java.io.PrintWriter, String[]):
+    
+ProtectedMember: android.service.contentcapture.ContentCaptureService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]):
+    
+ProtectedMember: android.service.notification.NotificationAssistantService#attachBaseContext(android.content.Context):
+    
+ProtectedMember: android.util.proto.ProtoStream#FIELD_TYPE_NAMES:
+    
+ProtectedMember: android.view.View#resetResolvedDrawables():
+    
+ProtectedMember: android.view.ViewGroup#resetResolvedDrawables():
+    
+
+
+RawAidl: android.telephony.mbms.vendor.MbmsDownloadServiceBase:
+    
+RawAidl: android.telephony.mbms.vendor.MbmsStreamingServiceBase:
+    
+
+
+RethrowRemoteException: android.app.ActivityManager#resumeAppSwitches():
+    
+RethrowRemoteException: android.os.HwBinder#getService(String, String):
+    
+RethrowRemoteException: android.os.HwBinder#getService(String, String, boolean):
+    
+RethrowRemoteException: android.os.HwBinder#onTransact(int, android.os.HwParcel, android.os.HwParcel, int):
+    
+RethrowRemoteException: android.os.HwBinder#registerService(String):
+    
+RethrowRemoteException: android.os.HwBinder#transact(int, android.os.HwParcel, android.os.HwParcel, int):
+    
+RethrowRemoteException: android.os.IHwBinder#transact(int, android.os.HwParcel, android.os.HwParcel, int):
+    
+RethrowRemoteException: android.telephony.ims.ImsService#onUpdateSupportedImsFeatures(android.telephony.ims.stub.ImsFeatureConfiguration):
+    
+RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#addProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener):
+    
+RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#addStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener):
+    
+RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#cancelDownload(android.telephony.mbms.DownloadRequest):
+    
+RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#dispose(int):
+    
+RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#download(android.telephony.mbms.DownloadRequest):
+    
+RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#initialize(int, android.telephony.mbms.MbmsDownloadSessionCallback):
+    
+RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#listPendingDownloads(int):
+    
+RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#onTransact(int, android.os.Parcel, android.os.Parcel, int):
+    
+RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#removeProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener):
+    
+RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#removeStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener):
+    
+RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#requestDownloadState(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo):
+    
+RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#requestUpdateFileServices(int, java.util.List<java.lang.String>):
+    
+RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#resetDownloadKnowledge(android.telephony.mbms.DownloadRequest):
+    
+RethrowRemoteException: android.telephony.mbms.vendor.MbmsDownloadServiceBase#setTempFileRootDirectory(int, String):
+    
+RethrowRemoteException: android.telephony.mbms.vendor.MbmsGroupCallServiceBase#dispose(int):
+    
+RethrowRemoteException: android.telephony.mbms.vendor.MbmsGroupCallServiceBase#initialize(android.telephony.mbms.MbmsGroupCallSessionCallback, int):
+    
+RethrowRemoteException: android.telephony.mbms.vendor.MbmsStreamingServiceBase#dispose(int):
+    
+RethrowRemoteException: android.telephony.mbms.vendor.MbmsStreamingServiceBase#getPlaybackUri(int, String):
+    
+RethrowRemoteException: android.telephony.mbms.vendor.MbmsStreamingServiceBase#initialize(android.telephony.mbms.MbmsStreamingSessionCallback, int):
+    
+RethrowRemoteException: android.telephony.mbms.vendor.MbmsStreamingServiceBase#onTransact(int, android.os.Parcel, android.os.Parcel, int):
+    
+RethrowRemoteException: android.telephony.mbms.vendor.MbmsStreamingServiceBase#requestUpdateStreamingServices(int, java.util.List<java.lang.String>):
+    
+RethrowRemoteException: android.telephony.mbms.vendor.MbmsStreamingServiceBase#startStreaming(int, String, android.telephony.mbms.StreamingServiceCallback):
+    
+RethrowRemoteException: android.telephony.mbms.vendor.MbmsStreamingServiceBase#stopStreaming(int, String):
+    
+
+
+SamShouldBeLast: android.app.ActivityManager#addOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener, int):
+    
+SamShouldBeLast: android.app.role.RoleManager#addOnRoleHoldersChangedListenerAsUser(java.util.concurrent.Executor, android.app.role.OnRoleHoldersChangedListener, android.os.UserHandle):
+    
+SamShouldBeLast: android.app.role.RoleManager#removeOnRoleHoldersChangedListenerAsUser(android.app.role.OnRoleHoldersChangedListener, android.os.UserHandle):
+    
+SamShouldBeLast: android.database.sqlite.SQLiteDebug#dump(android.util.Printer, String[]):
+    
+SamShouldBeLast: android.database.sqlite.SQLiteDirectCursorDriver#query(android.database.sqlite.SQLiteDatabase.CursorFactory, String[]):
+    
+SamShouldBeLast: android.location.LocationManager#requestLocationUpdates(android.location.LocationRequest, android.location.LocationListener, android.os.Looper):
+    
+SamShouldBeLast: android.location.LocationManager#requestLocationUpdates(android.location.LocationRequest, java.util.concurrent.Executor, android.location.LocationListener):
+    
+SamShouldBeLast: android.os.BugreportManager#startBugreport(android.os.ParcelFileDescriptor, android.os.ParcelFileDescriptor, android.os.BugreportParams, java.util.concurrent.Executor, android.os.BugreportManager.BugreportCallback):
+    
+SamShouldBeLast: android.os.IHwBinder#linkToDeath(android.os.IHwBinder.DeathRecipient, long):
+    
+SamShouldBeLast: android.os.StrictMode.ViolationInfo#dump(android.util.Printer, String):
+    
+SamShouldBeLast: android.permission.PermissionControllerManager#countPermissionApps(java.util.List<java.lang.String>, int, android.permission.PermissionControllerManager.OnCountPermissionAppsResultCallback, android.os.Handler):
+    SAM-compatible parameters (such as parameter 3, "callback", in android.permission.PermissionControllerManager.countPermissionApps) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions
+SamShouldBeLast: android.permission.PermissionControllerManager#getAppPermissions(String, android.permission.PermissionControllerManager.OnGetAppPermissionResultCallback, android.os.Handler):
+    
+SamShouldBeLast: android.permission.PermissionControllerManager#revokeRuntimePermissions(java.util.Map<java.lang.String,java.util.List<java.lang.String>>, boolean, int, java.util.concurrent.Executor, android.permission.PermissionControllerManager.OnRevokeRuntimePermissionsCallback):
+    
+SamShouldBeLast: android.service.autofill.CharSequenceTransformation#apply(android.service.autofill.ValueFinder, android.widget.RemoteViews, int):
+    
+SamShouldBeLast: android.service.autofill.DateTransformation#apply(android.service.autofill.ValueFinder, android.widget.RemoteViews, int):
+    
+SamShouldBeLast: android.service.autofill.ImageTransformation#apply(android.service.autofill.ValueFinder, android.widget.RemoteViews, int):
+    
+SamShouldBeLast: android.service.autofill.InternalTransformation#batchApply(android.service.autofill.ValueFinder, android.widget.RemoteViews, java.util.ArrayList<android.util.Pair<java.lang.Integer,android.service.autofill.InternalTransformation>>):
+    
+SamShouldBeLast: android.telephony.ims.ImsMmTelManager#getFeatureState(java.util.function.Consumer<java.lang.Integer>, java.util.concurrent.Executor):
+    
+SamShouldBeLast: android.view.Choreographer#postCallback(int, Runnable, Object):
+    
+SamShouldBeLast: android.view.Choreographer#postCallbackDelayed(int, Runnable, Object, long):
+    
+SamShouldBeLast: android.view.Choreographer#removeCallbacks(int, Runnable, Object):
+    
+SamShouldBeLast: android.view.ViewDebug#startRenderingCommandsCapture(android.view.View, java.util.concurrent.Executor, java.util.function.Function<android.graphics.Picture,java.lang.Boolean>):
+    
+SamShouldBeLast: android.view.accessibility.AccessibilityManager#addAccessibilityServicesStateChangeListener(android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener, android.os.Handler):
+    
+
+
+ServiceName: android.Manifest.permission#BIND_CELL_BROADCAST_SERVICE:
+    
+ServiceName: android.app.AppOpsManager#OPSTR_BIND_ACCESSIBILITY_SERVICE:
+    
+ServiceName: android.provider.Settings.Secure#ACCESSIBILITY_SHORTCUT_TARGET_SERVICE:
+    
+ServiceName: android.provider.Settings.Secure#AUTOFILL_SERVICE:
+    
+ServiceName: android.provider.Settings.Secure#VOICE_INTERACTION_SERVICE:
+    
+
+
+SetterReturnsThis: android.media.audiopolicy.AudioPolicy.Builder#setAudioPolicyFocusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyFocusListener):
+    
+SetterReturnsThis: android.media.audiopolicy.AudioPolicy.Builder#setAudioPolicyStatusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyStatusListener):
+    
+
+
+StaticFinalBuilder: android.content.integrity.RuleSet.Builder:
+    Builder must be final: android.content.integrity.RuleSet.Builder
+StaticFinalBuilder: android.hardware.display.BrightnessConfiguration.Builder:
+    Builder must be final: android.hardware.display.BrightnessConfiguration.Builder
+StaticFinalBuilder: android.media.audiopolicy.AudioMix.Builder:
+    Builder must be final: android.media.audiopolicy.AudioMix.Builder
+StaticFinalBuilder: android.media.audiopolicy.AudioMixingRule.Builder:
+    Builder must be final: android.media.audiopolicy.AudioMixingRule.Builder
+StaticFinalBuilder: android.media.audiopolicy.AudioPolicy.Builder:
+    Builder must be final: android.media.audiopolicy.AudioPolicy.Builder
+StaticFinalBuilder: android.net.CaptivePortalData.Builder:
+    Builder must be final: android.net.CaptivePortalData.Builder
+StaticFinalBuilder: android.net.TetheringManager.TetheringRequest.Builder:
+    Builder must be final: android.net.TetheringManager.TetheringRequest.Builder
+StaticFinalBuilder: android.telephony.ims.stub.ImsFeatureConfiguration.Builder:
+    Builder must be final: android.telephony.ims.stub.ImsFeatureConfiguration.Builder
+
+
+StaticUtils: android.os.health.HealthKeys:
+    
+StaticUtils: android.service.autofill.InternalTransformation:
+    
+StaticUtils: android.telephony.mbms.vendor.VendorUtils:
+    
+StaticUtils: android.util.FeatureFlagUtils:
+    
+StaticUtils: android.util.proto.ProtoStream:
+    
+
+
+StreamFiles: android.os.Environment#buildPath(java.io.File, java.lang.String...):
+    
+StreamFiles: android.os.FileUtils#contains(java.io.File, java.io.File):
+    
+StreamFiles: android.provider.MediaStore#scanFile(android.content.Context, java.io.File):
+    
+StreamFiles: android.provider.MediaStore#scanFileFromShell(android.content.Context, java.io.File):
+    
+StreamFiles: android.provider.MediaStore#scanVolume(android.content.Context, java.io.File):
+    
+
+
+UseIcu: android.hardware.soundtrigger.KeyphraseEnrollmentInfo#getKeyphraseMetadata(String, java.util.Locale) parameter #1:
+    Type `java.util.Locale` should be replaced with richer ICU type `android.icu.util.ULocale`
+UseIcu: android.hardware.soundtrigger.KeyphraseEnrollmentInfo#getManageKeyphraseIntent(int, String, java.util.Locale) parameter #2:
+    Type `java.util.Locale` should be replaced with richer ICU type `android.icu.util.ULocale`
+UseIcu: android.hardware.soundtrigger.KeyphraseMetadata#supportsLocale(java.util.Locale) parameter #0:
+    Type `java.util.Locale` should be replaced with richer ICU type `android.icu.util.ULocale`
+UseIcu: android.hardware.soundtrigger.SoundTrigger.Keyphrase#Keyphrase(int, int, java.util.Locale, String, int[]) parameter #2:
+    Type `java.util.Locale` should be replaced with richer ICU type `android.icu.util.ULocale`
+UseIcu: android.hardware.soundtrigger.SoundTrigger.Keyphrase#getLocale():
+    Type `java.util.Locale` should be replaced with richer ICU type `android.icu.util.ULocale`
+
+
+UseParcelFileDescriptor: android.util.proto.ProtoOutputStream#ProtoOutputStream(java.io.FileDescriptor) parameter #0:
+    
+
+
+UserHandle: android.app.ActivityManager#switchUser(android.os.UserHandle):
+    
+UserHandle: android.app.admin.DevicePolicyManager#getOwnerInstalledCaCerts(android.os.UserHandle):
+    
+UserHandle: android.app.role.RoleManager#addOnRoleHoldersChangedListenerAsUser(java.util.concurrent.Executor, android.app.role.OnRoleHoldersChangedListener, android.os.UserHandle):
+    
+UserHandle: android.app.role.RoleManager#addRoleHolderAsUser(String, String, int, android.os.UserHandle, java.util.concurrent.Executor, java.util.function.Consumer<java.lang.Boolean>):
+    
+UserHandle: android.app.role.RoleManager#clearRoleHoldersAsUser(String, int, android.os.UserHandle, java.util.concurrent.Executor, java.util.function.Consumer<java.lang.Boolean>):
+    
+UserHandle: android.app.role.RoleManager#getRoleHoldersAsUser(String, android.os.UserHandle):
+    
+UserHandle: android.app.role.RoleManager#removeOnRoleHoldersChangedListenerAsUser(android.app.role.OnRoleHoldersChangedListener, android.os.UserHandle):
+    
+UserHandle: android.app.role.RoleManager#removeRoleHolderAsUser(String, String, int, android.os.UserHandle, java.util.concurrent.Executor, java.util.function.Consumer<java.lang.Boolean>):
+    
+UserHandle: android.app.usage.StorageStatsManager#queryCratesForPackage(java.util.UUID, String, android.os.UserHandle):
+    
+UserHandle: android.app.usage.StorageStatsManager#queryCratesForUser(java.util.UUID, android.os.UserHandle):
+    
+UserHandle: android.companion.CompanionDeviceManager#isDeviceAssociated(String, android.net.MacAddress, android.os.UserHandle):
+    
+UserHandle: android.companion.CompanionDeviceManager#isDeviceAssociatedForWifiConnection(String, android.net.MacAddress, android.os.UserHandle):
+    When a method overload is needed to target a specific UserHandle, callers should be directed to use Context.createPackageContextAsUser() and re-obtain the relevant Manager, and no new API should be added
+UserHandle: android.content.pm.PackageManager#getInstallReason(String, android.os.UserHandle):
+    
+UserHandle: android.content.pm.PackageManager#getPermissionFlags(String, String, android.os.UserHandle):
+    
+UserHandle: android.content.pm.PackageManager#grantRuntimePermission(String, String, android.os.UserHandle):
+    
+UserHandle: android.content.pm.PackageManager#revokeRuntimePermission(String, String, android.os.UserHandle):
+    
+UserHandle: android.content.pm.PackageManager#revokeRuntimePermission(String, String, android.os.UserHandle, String):
+    When a method overload is needed to target a specific UserHandle, callers should be directed to use Context.createPackageContextAsUser() and re-obtain the relevant Manager, and no new API should be added
+UserHandle: android.content.pm.PackageManager#updatePermissionFlags(String, String, int, int, android.os.UserHandle):
+    
+UserHandle: android.location.LocationManager#setLocationEnabledForUser(boolean, android.os.UserHandle):
+    
+UserHandle: android.permission.PermissionControllerManager#applyStagedRuntimePermissionBackup(String, android.os.UserHandle, java.util.concurrent.Executor, java.util.function.Consumer<java.lang.Boolean>):
+    
+UserHandle: android.permission.PermissionControllerManager#getRuntimePermissionBackup(android.os.UserHandle, java.util.concurrent.Executor, java.util.function.Consumer<byte[]>):
+    
+UserHandle: android.permission.PermissionControllerManager#stageAndApplyRuntimePermissionsBackup(byte[], android.os.UserHandle):
+    
+UserHandle: android.telecom.TelecomManager#getDefaultDialerPackage(android.os.UserHandle):
+    When a method overload is needed to target a specific UserHandle, callers should be directed to use Context.createPackageContextAsUser() and re-obtain the relevant Manager, and no new API should be added
+
+
+UserHandleName: android.app.ActivityView#startActivity(android.content.Intent, android.os.UserHandle):
+    
+UserHandleName: android.content.AutofillOptions:
+    
+UserHandleName: android.content.ContentCaptureOptions:
+    
+UserHandleName: android.os.IncidentReportArgs:
+    
+UserHandleName: android.provider.MediaStore#deleteContributedMedia(android.content.Context, String, android.os.UserHandle):
+    
+UserHandleName: android.provider.MediaStore#getContributedMediaSize(android.content.Context, String, android.os.UserHandle):
+    
+
+
+VisiblySynchronized: PsiClassObjectAccessExpression:
+    
+VisiblySynchronized: PsiThisExpression:
+    
+VisiblySynchronized: android.app.ActivityManager#addOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener, int):
+    
+VisiblySynchronized: android.app.ActivityManager#removeOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener):
+    
+VisiblySynchronized: android.content.ContentProviderClient#setDetectNotResponding(long):
+    
+VisiblySynchronized: android.content.res.AssetManager#getApkPaths():
+    
+VisiblySynchronized: android.content.res.AssetManager#getLastResourceResolution():
+    
+VisiblySynchronized: android.content.res.AssetManager#getOverlayablesToString(String):
+    
+VisiblySynchronized: android.content.res.AssetManager#setResourceResolutionLoggingEnabled(boolean):
+    
+VisiblySynchronized: android.os.MessageQueue#removeSyncBarrier(int):
+    
diff --git a/api/module-lib-removed.txt b/core/api/test-removed.txt
similarity index 100%
copy from api/module-lib-removed.txt
copy to core/api/test-removed.txt
diff --git a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
index ca22bf4..38d3781 100644
--- a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
+++ b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
@@ -861,7 +861,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setCapabilities(int capabilities) {
         mCapabilities = capabilities;
     }
diff --git a/core/java/android/accounts/Account.java b/core/java/android/accounts/Account.java
index 9a18880..ac372a0 100644
--- a/core/java/android/accounts/Account.java
+++ b/core/java/android/accounts/Account.java
@@ -20,6 +20,7 @@
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.RemoteException;
@@ -38,7 +39,7 @@
  * suitable for use as the key of a {@link java.util.Map}
  */
 public class Account implements Parcelable {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final String TAG = "Account";
 
     @GuardedBy("sAccessedAccounts")
@@ -47,7 +48,7 @@
     public final String name;
     public final String type;
     private String mSafeName;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final @Nullable String accessId;
 
     public boolean equals(Object o) {
diff --git a/core/java/android/accounts/AccountManager.java b/core/java/android/accounts/AccountManager.java
index f2702a8..8bbef5d3 100644
--- a/core/java/android/accounts/AccountManager.java
+++ b/core/java/android/accounts/AccountManager.java
@@ -418,7 +418,7 @@
     /**
      * @hide used for testing only
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public AccountManager(Context context, IAccountManager service, Handler handler) {
         mContext = context;
         mService = service;
@@ -712,7 +712,7 @@
 
     /** @hide Same as {@link #getAccountsByType(String)} but for a specific user. */
     @NonNull
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Account[] getAccountsByTypeAsUser(String type, UserHandle userHandle) {
         try {
             return mService.getAccountsAsUser(type, userHandle.getIdentifier(),
@@ -2003,7 +2003,7 @@
      * Same as {@link #confirmCredentials(Account, Bundle, Activity, AccountManagerCallback, Handler)}
      * but for the specified user.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public AccountManagerFuture<Bundle> confirmCredentialsAsUser(final Account account,
             final Bundle options,
             final Activity activity,
diff --git a/core/java/android/animation/Animator.java b/core/java/android/animation/Animator.java
index 3cdd691..eb525d3 100644
--- a/core/java/android/animation/Animator.java
+++ b/core/java/android/animation/Animator.java
@@ -20,6 +20,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.pm.ActivityInfo.Config;
 import android.content.res.ConstantState;
+import android.os.Build;
 
 import java.util.ArrayList;
 
@@ -461,7 +462,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void reverse() {
         throw new IllegalStateException("Reverse is not supported");
     }
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index 8ddca15..4c16072 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -756,7 +756,7 @@
      */
     public static final int FINISH_TASK_WITH_ACTIVITY = 2;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     static final String FRAGMENTS_TAG = "android:fragments";
     private static final String LAST_AUTOFILL_ID = "android:lastAutofillId";
 
@@ -2939,7 +2939,7 @@
      * @see View#onMovedToDisplay(int, Configuration)
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @TestApi
     public void onMovedToDisplay(int displayId, Configuration config) {
     }
@@ -3209,7 +3209,7 @@
      * @deprecated Use {@link CursorLoader} instead.
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final Cursor managedQuery(Uri uri, String[] projection, String selection,
             String sortOrder) {
         Cursor c = getContentResolver().query(uri, projection, selection, null, sortOrder);
@@ -5195,8 +5195,8 @@
      * result callbacks including {@link #onRequestPermissionsResult(int, String[], int[])}.
      * </p>
      * <p>
-     * The <a href="https://github.com/googlesamples/android-RuntimePermissions">
-     * RuntimePermissions</a> sample app demonstrates how to use this method to
+     * The <a href="https://github.com/android/permissions-samples">
+     * RuntimePermissions</a> sample apps demonstrate how to use this method to
      * request permissions at run time.
      * </p>
      *
@@ -6026,7 +6026,7 @@
      * @hide
      */
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void startActivityForResult(
             String who, Intent intent, int requestCode, @Nullable Bundle options) {
         Uri referrer = onProvideReferrer();
@@ -6358,7 +6358,7 @@
      * Finishes the current activity and specifies whether to remove the task associated with this
      * activity.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void finish(int finishTask) {
         if (mParent == null) {
             int resultCode;
@@ -7888,7 +7888,7 @@
         mParent = parent;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     final void attach(Context context, ActivityThread aThread,
             Instrumentation instr, IBinder token, int ident,
             Application application, Intent intent, ActivityInfo info,
@@ -7984,7 +7984,7 @@
         performCreate(icicle, null);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     final void performCreate(Bundle icicle, PersistableBundle persistentState) {
         dispatchActivityPreCreated(icicle);
         mCanEnterPictureInPicture = true;
@@ -8299,7 +8299,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     void dispatchActivityResult(String who, int requestCode, int resultCode, Intent data,
             String reason) {
         if (false) Log.v(
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index 0e811a4..f3dfe09 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -507,18 +507,18 @@
     public static final int PROCESS_STATE_BOUND_TOP = 3;
 
     /** @hide Process is hosting a foreground service. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int PROCESS_STATE_FOREGROUND_SERVICE = 4;
 
     /** @hide Process is hosting a foreground service due to a system binding. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int PROCESS_STATE_BOUND_FOREGROUND_SERVICE = 5;
 
     /** @hide Process is important to the user, and something they are aware of. */
     public static final int PROCESS_STATE_IMPORTANT_FOREGROUND = 6;
 
     /** @hide Process is important to the user, but not something they are aware of. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int PROCESS_STATE_IMPORTANT_BACKGROUND = 7;
 
     /** @hide Process is in the background transient so we will try to keep running. */
@@ -530,14 +530,14 @@
     /** @hide Process is in the background running a service.  Unlike oom_adj, this level
      * is used for both the normal running in background state and the executing
      * operations state. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int PROCESS_STATE_SERVICE = 10;
 
     /** @hide Process is in the background running a receiver.   Note that from the
      * perspective of oom_adj, receivers run at a higher foreground level, but for our
      * prioritization here that is not necessary and putting them below services means
      * many fewer changes in some process states as they receive broadcasts. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int PROCESS_STATE_RECEIVER = 11;
 
     /** @hide Same as {@link #PROCESS_STATE_TOP} but while device is sleeping. */
@@ -548,14 +548,14 @@
     public static final int PROCESS_STATE_HEAVY_WEIGHT = 13;
 
     /** @hide Process is in the background but hosts the home activity. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int PROCESS_STATE_HOME = 14;
 
     /** @hide Process is in the background but hosts the last shown activity. */
     public static final int PROCESS_STATE_LAST_ACTIVITY = 15;
 
     /** @hide Process is being cached for later use and contains activities. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int PROCESS_STATE_CACHED_ACTIVITY = 16;
 
     /** @hide Process is being cached for later use and is a client of another cached
@@ -2193,7 +2193,7 @@
         /**
          * @return The size of the task at the point this snapshot was taken.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public Point getTaskSize() {
             return mTaskSize;
         }
@@ -2735,13 +2735,13 @@
         public boolean lowMemory;
 
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public long hiddenAppThreshold;
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public long secondaryServerThreshold;
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public long visibleAppThreshold;
         /** @hide */
         @UnsupportedAppUsage
@@ -3186,7 +3186,7 @@
          * persistent system app.
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final int FLAG_PERSISTENT = 1<<1;
 
         /**
@@ -3194,7 +3194,7 @@
          * persistent system app.
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final int FLAG_HAS_ACTIVITIES = 1<<2;
 
         /**
@@ -3298,7 +3298,7 @@
          *
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         @TestApi
         public static final int IMPORTANCE_CANT_SAVE_STATE_PRE_26 = 170;
 
@@ -3358,7 +3358,7 @@
          * will be passed to a client, use {@link #procStateToImportanceForClient}.
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static @Importance int procStateToImportance(int procState) {
             if (procState == PROCESS_STATE_NONEXISTENT) {
                 return IMPORTANCE_GONE;
@@ -3757,7 +3757,7 @@
      * running its code, {@link RunningAppProcessInfo#IMPORTANCE_GONE} is returned.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     @RequiresPermission(Manifest.permission.PACKAGE_USAGE_STATS)
     public @RunningAppProcessInfo.Importance int getPackageImportance(String packageName) {
         try {
@@ -3777,7 +3777,7 @@
      * running its code, {@link RunningAppProcessInfo#IMPORTANCE_GONE} is returned.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     @RequiresPermission(Manifest.permission.PACKAGE_USAGE_STATS)
     public @RunningAppProcessInfo.Importance int getUidImportance(int uid) {
         try {
@@ -3794,7 +3794,7 @@
      * {@link #addOnUidImportanceListener}.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public interface OnUidImportanceListener {
         /**
          * The importance if a given uid has changed.  Will be one of the importance
@@ -3825,7 +3825,7 @@
      * {@link android.Manifest.permission#PACKAGE_USAGE_STATS}.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     @RequiresPermission(Manifest.permission.PACKAGE_USAGE_STATS)
     public void addOnUidImportanceListener(OnUidImportanceListener listener,
             @RunningAppProcessInfo.Importance int importanceCutpoint) {
@@ -3854,7 +3854,7 @@
      * @throws IllegalArgumentException If the listener is not registered.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     @RequiresPermission(Manifest.permission.PACKAGE_USAGE_STATS)
     public void removeOnUidImportanceListener(OnUidImportanceListener listener) {
         synchronized (this) {
@@ -3996,7 +3996,7 @@
      * @see #forceStopPackageAsUser(String, int)
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     @RequiresPermission(Manifest.permission.FORCE_STOP_PACKAGES)
     public void forceStopPackage(String packageName) {
         forceStopPackageAsUser(packageName, mContext.getUserId());
@@ -4317,7 +4317,7 @@
      * @param userid the user's id. Zero indicates the default user.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean switchUser(int userid) {
         try {
             return getService().switchUser(userid);
@@ -4335,7 +4335,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(android.Manifest.permission.MANAGE_USERS)
     public boolean switchUser(@NonNull UserHandle user) {
         if (user == null) {
@@ -4768,7 +4767,7 @@
      *
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     @RequiresPermission(Manifest.permission.FORCE_STOP_PACKAGES)
     public void killProcessesWhenImperceptible(@NonNull int[] pids, @NonNull String reason) {
         try {
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 7afe8b79..5428730 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -184,6 +184,7 @@
 import com.android.org.conscrypt.TrustedCertificateStore;
 import com.android.server.am.MemInfoDumpProto;
 
+import dalvik.system.AppSpecializationHooks;
 import dalvik.system.CloseGuard;
 import dalvik.system.VMDebug;
 import dalvik.system.VMRuntime;
@@ -345,7 +346,7 @@
     @UnsupportedAppUsage
     AppBindData mBoundApplication;
     Profiler mProfiler;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     int mCurDefaultDisplayDpi;
     @UnsupportedAppUsage
     boolean mDensityCompatMode;
@@ -812,7 +813,7 @@
         boolean trackAllocation;
         @UnsupportedAppUsage
         boolean restrictedBackupMode;
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         boolean persistent;
         Configuration config;
         @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
@@ -2283,7 +2284,7 @@
         return null;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final LoadedApk getPackageInfo(ApplicationInfo ai, CompatibilityInfo compatInfo,
             int flags) {
         boolean includeCode = (flags&Context.CONTEXT_INCLUDE_CODE) != 0;
@@ -3031,7 +3032,7 @@
         proto.end(asToken);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void registerOnActivityPausedListener(Activity activity,
             OnActivityPausedListener listener) {
         synchronized (mOnPauseListeners) {
@@ -3044,7 +3045,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void unregisterOnActivityPausedListener(Activity activity,
             OnActivityPausedListener listener) {
         synchronized (mOnPauseListeners) {
@@ -6384,6 +6385,9 @@
         Process.setStartTimes(SystemClock.elapsedRealtime(), SystemClock.uptimeMillis());
 
         AppCompatCallbacks.install(data.disabledCompatChanges);
+        // Let libcore handle any compat changes after installing the list of compat changes.
+        AppSpecializationHooks.handleCompatChangesBeforeBindingApplication();
+
         mBoundApplication = data;
         mConfiguration = new Configuration(data.config);
         mCompatConfiguration = new Configuration(data.config);
diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java
index 2aee696..c4f13fe 100644
--- a/core/java/android/app/AppOpsManager.java
+++ b/core/java/android/app/AppOpsManager.java
@@ -447,7 +447,6 @@
      * state the more important the UID is for the user.
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final int UID_STATE_PERSISTENT = 100;
 
@@ -456,7 +455,6 @@
      * state the more important the UID is for the user.
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final int UID_STATE_TOP = 200;
 
@@ -468,7 +466,6 @@
      * @hide
      * @deprecated
      */
-    @TestApi
     @SystemApi
     @Deprecated
     public static final int UID_STATE_FOREGROUND_SERVICE_LOCATION = 300;
@@ -478,7 +475,6 @@
      * state the more important the UID is for the user.
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final int UID_STATE_FOREGROUND_SERVICE = 400;
 
@@ -487,7 +483,6 @@
      * state the more important the UID is for the user.
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final int UID_STATE_FOREGROUND = 500;
 
@@ -503,7 +498,6 @@
      * state the more important the UID is for the user.
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final int UID_STATE_BACKGROUND = 600;
 
@@ -512,7 +506,6 @@
      * state the more important the UID is for the user.
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final int UID_STATE_CACHED = 700;
 
@@ -590,7 +583,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final int OP_FLAG_SELF = 0x1;
 
@@ -601,7 +593,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final int OP_FLAG_TRUSTED_PROXY = 0x2;
 
@@ -612,7 +603,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final int OP_FLAG_UNTRUSTED_PROXY = 0x4;
 
@@ -623,7 +613,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final int OP_FLAG_TRUSTED_PROXIED = 0x8;
 
@@ -634,7 +623,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final int OP_FLAG_UNTRUSTED_PROXIED = 0x10;
 
@@ -646,7 +634,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final int OP_FLAGS_ALL =
             OP_FLAG_SELF
@@ -791,7 +778,7 @@
     //  - add the op to the appropriate template in AppOpsState.OpsTemplate (settings app)
 
     /** @hide No operation specified. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int OP_NONE = AppProtoEnums.APP_OP_NONE;
     /** @hide Access to coarse location information. */
     @UnsupportedAppUsage
@@ -859,6 +846,8 @@
     @UnsupportedAppUsage
     public static final int OP_SEND_SMS = AppProtoEnums.APP_OP_SEND_SMS;
     /** @hide */
+    public static final int OP_MANAGE_ONGOING_CALLS = AppProtoEnums.APP_OP_MANAGE_ONGOING_CALLS;
+    /** @hide */
     @UnsupportedAppUsage
     public static final int OP_READ_ICC_SMS = AppProtoEnums.APP_OP_READ_ICC_SMS;
     /** @hide */
@@ -1124,9 +1113,30 @@
     /** @hide */
     public static final int OP_NO_ISOLATED_STORAGE = AppProtoEnums.APP_OP_NO_ISOLATED_STORAGE;
 
+    /**
+     * Reserved key for 100
+     *
+     * @hide
+     */
+    public static final int OP_RESERVED_100 = 100;
+
+    /**
+     * Reserved key for 101
+     *
+     * @hide
+     */
+    public static final int OP_RESERVED_101 = 101;
+
+    /**
+     * Reserved key for 102
+     *
+     * @hide
+     */
+    public static final int OP_RESERVED_102 = 102;
+
     /** @hide */
-    @UnsupportedAppUsage
-    public static final int _NUM_OP = 100;
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
+    public static final int _NUM_OP = 104;
 
     /** Access to coarse location information. */
     public static final String OPSTR_COARSE_LOCATION = "android:coarse_location";
@@ -1143,7 +1153,7 @@
     public static final String OPSTR_GET_USAGE_STATS
             = "android:get_usage_stats";
     /** Activate a VPN connection without user intervention. @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_ACTIVATE_VPN
             = "android:activate_vpn";
     /** Allows an application to read the user's contacts data. */
@@ -1225,7 +1235,7 @@
     public static final String OPSTR_WRITE_SETTINGS
             = "android:write_settings";
     /** @hide Get device accounts. */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_GET_ACCOUNTS
             = "android:get_accounts";
     public static final String OPSTR_READ_PHONE_NUMBERS
@@ -1234,7 +1244,7 @@
     public static final String OPSTR_PICTURE_IN_PICTURE
             = "android:picture_in_picture";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_INSTANT_APP_START_FOREGROUND
             = "android:instant_app_start_foreground";
     /** Answer incoming phone calls */
@@ -1244,129 +1254,129 @@
      * Accept call handover
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_ACCEPT_HANDOVER
             = "android:accept_handover";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_GPS = "android:gps";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_VIBRATE = "android:vibrate";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_WIFI_SCAN = "android:wifi_scan";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_POST_NOTIFICATION = "android:post_notification";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_NEIGHBORING_CELLS = "android:neighboring_cells";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_WRITE_SMS = "android:write_sms";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_RECEIVE_EMERGENCY_BROADCAST =
             "android:receive_emergency_broadcast";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_READ_ICC_SMS = "android:read_icc_sms";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_WRITE_ICC_SMS = "android:write_icc_sms";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_ACCESS_NOTIFICATIONS = "android:access_notifications";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_PLAY_AUDIO = "android:play_audio";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_READ_CLIPBOARD = "android:read_clipboard";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_WRITE_CLIPBOARD = "android:write_clipboard";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_TAKE_MEDIA_BUTTONS = "android:take_media_buttons";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_TAKE_AUDIO_FOCUS = "android:take_audio_focus";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_AUDIO_MASTER_VOLUME = "android:audio_master_volume";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_AUDIO_VOICE_VOLUME = "android:audio_voice_volume";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_AUDIO_RING_VOLUME = "android:audio_ring_volume";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_AUDIO_MEDIA_VOLUME = "android:audio_media_volume";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_AUDIO_ALARM_VOLUME = "android:audio_alarm_volume";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_AUDIO_NOTIFICATION_VOLUME =
             "android:audio_notification_volume";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_AUDIO_BLUETOOTH_VOLUME = "android:audio_bluetooth_volume";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_WAKE_LOCK = "android:wake_lock";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_MUTE_MICROPHONE = "android:mute_microphone";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_TOAST_WINDOW = "android:toast_window";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_PROJECT_MEDIA = "android:project_media";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_WRITE_WALLPAPER = "android:write_wallpaper";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_ASSIST_STRUCTURE = "android:assist_structure";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_ASSIST_SCREENSHOT = "android:assist_screenshot";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_TURN_SCREEN_ON = "android:turn_screen_on";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_RUN_IN_BACKGROUND = "android:run_in_background";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_AUDIO_ACCESSIBILITY_VOLUME =
             "android:audio_accessibility_volume";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_REQUEST_INSTALL_PACKAGES = "android:request_install_packages";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_RUN_ANY_IN_BACKGROUND = "android:run_any_in_background";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_CHANGE_WIFI_STATE = "android:change_wifi_state";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_REQUEST_DELETE_PACKAGES = "android:request_delete_packages";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_BIND_ACCESSIBILITY_SERVICE =
             "android:bind_accessibility_service";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_MANAGE_IPSEC_TUNNELS = "android:manage_ipsec_tunnels";
     /** @hide */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_START_FOREGROUND = "android:start_foreground";
     /** @hide */
     public static final String OPSTR_BLUETOOTH_SCAN = "android:bluetooth_scan";
@@ -1382,25 +1392,25 @@
             "android:sms_financial_transactions";
 
     /** @hide Read media of audio type. */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_READ_MEDIA_AUDIO = "android:read_media_audio";
     /** @hide Write media of audio type. */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_WRITE_MEDIA_AUDIO = "android:write_media_audio";
     /** @hide Read media of video type. */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_READ_MEDIA_VIDEO = "android:read_media_video";
     /** @hide Write media of video type. */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_WRITE_MEDIA_VIDEO = "android:write_media_video";
     /** @hide Read media of image type. */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_READ_MEDIA_IMAGES = "android:read_media_images";
     /** @hide Write media of image type. */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_WRITE_MEDIA_IMAGES = "android:write_media_images";
     /** @hide Has a legacy (non-isolated) view of storage. */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String OPSTR_LEGACY_STORAGE = "android:legacy_storage";
     /** @hide Read location metadata from media */
     public static final String OPSTR_ACCESS_MEDIA_LOCATION = "android:access_media_location";
@@ -1414,7 +1424,6 @@
     public static final String OPSTR_QUERY_ALL_PACKAGES = "android:query_all_packages";
     /** @hide Access all external storage */
     @SystemApi
-    @TestApi
     public static final String OPSTR_MANAGE_EXTERNAL_STORAGE =
             "android:manage_external_storage";
 
@@ -1432,18 +1441,49 @@
     @SystemApi
     public static final String OPSTR_INTERACT_ACROSS_PROFILES = "android:interact_across_profiles";
     /** @hide Start Platform VPN without user intervention */
+    @SystemApi
     public static final String OPSTR_ACTIVATE_PLATFORM_VPN = "android:activate_platform_vpn";
     /** @hide */
     @SystemApi
     public static final String OPSTR_LOADER_USAGE_STATS = "android:loader_usage_stats";
 
     /**
+     * Grants an app access to the {@link android.telecom.InCallService} API to see
+     * information about ongoing calls and to enable control of calls.
+     * @hide
+     */
+    @SystemApi
+    @TestApi
+    public static final String OPSTR_MANAGE_ONGOING_CALLS = "android:manage_ongoing_calls";
+
+    /**
      * AppOp granted to apps that we are started via {@code am instrument -e --no-isolated-storage}
      *
      * @hide
      */
     public static final String OPSTR_NO_ISOLATED_STORAGE = "android:no_isolated_storage";
 
+    /**
+     * Reserved for 100
+     *
+     * @hide
+     */
+    public static final String OPSTR_RESERVED_100 = "android:opstr_reserved_100";
+
+    /**
+     * Reserved for 101
+     *
+     * @hide
+     */
+    public static final String OPSTR_RESERVED_101 = "android:opstr_reserved_101";
+
+    /**
+     * Reserved for 102
+     *
+     * @hide
+     */
+    public static final String OPSTR_RESERVED_102 = "android:opstr_reserved_102";
+
     /** {@link #sAppOpsToNote} not initialized yet for this op */
     private static final byte SHOULD_COLLECT_NOTE_OP_NOT_INITIALIZED = 0;
     /** Should not collect noting of this app-op in {@link #sAppOpsToNote} */
@@ -1522,6 +1562,7 @@
             OP_MANAGE_EXTERNAL_STORAGE,
             OP_INTERACT_ACROSS_PROFILES,
             OP_LOADER_USAGE_STATS,
+            OP_MANAGE_ONGOING_CALLS,
     };
 
     /**
@@ -1633,6 +1674,10 @@
             OP_AUTO_REVOKE_PERMISSIONS_IF_UNUSED, //AUTO_REVOKE_PERMISSIONS_IF_UNUSED
             OP_AUTO_REVOKE_MANAGED_BY_INSTALLER, //OP_AUTO_REVOKE_MANAGED_BY_INSTALLER
             OP_NO_ISOLATED_STORAGE,             // NO_ISOLATED_STORAGE
+            OP_RESERVED_100,                    // OP_RESERVED_100
+            OP_RESERVED_101,                    // OP_RESERVED_101
+            OP_RESERVED_102,                    // OP_RESERVED_102
+            OP_MANAGE_ONGOING_CALLS,            // MANAGE_ONGOING_CALLS
     };
 
     /**
@@ -1739,6 +1784,10 @@
             OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED,
             OPSTR_AUTO_REVOKE_MANAGED_BY_INSTALLER,
             OPSTR_NO_ISOLATED_STORAGE,
+            OPSTR_RESERVED_100,
+            OPSTR_RESERVED_101,
+            OPSTR_RESERVED_102,
+            OPSTR_MANAGE_ONGOING_CALLS,
     };
 
     /**
@@ -1846,6 +1895,10 @@
             "AUTO_REVOKE_PERMISSIONS_IF_UNUSED",
             "AUTO_REVOKE_MANAGED_BY_INSTALLER",
             "NO_ISOLATED_STORAGE",
+            "RESERVED_100",
+            "RESERVED_101",
+            "RESERVED_102",
+            "MANAGE_ONGOING_CALLS",
     };
 
     /**
@@ -1954,6 +2007,10 @@
             null, // no permission for OP_AUTO_REVOKE_PERMISSIONS_IF_UNUSED
             null, // no permission for OP_AUTO_REVOKE_MANAGED_BY_INSTALLER
             null, // no permission for OP_NO_ISOLATED_STORAGE
+            null, // OP_RESERVED_100
+            null, // OP_RESERVED_101
+            null, // OP_RESERVED_102
+            Manifest.permission.MANAGE_ONGOING_CALLS,
     };
 
     /**
@@ -2062,6 +2119,10 @@
             null, // AUTO_REVOKE_PERMISSIONS_IF_UNUSED
             null, // AUTO_REVOKE_MANAGED_BY_INSTALLER
             null, // NO_ISOLATED_STORAGE
+            null, // OP_RESERVED_100
+            null, // OP_RESERVED_101
+            null, // OP_RESERVED_102
+            null, // MANAGE_ONGOING_CALLS
     };
 
     /**
@@ -2169,6 +2230,10 @@
             null, // AUTO_REVOKE_PERMISSIONS_IF_UNUSED
             null, // AUTO_REVOKE_MANAGED_BY_INSTALLER
             null, // NO_ISOLATED_STORAGE
+            null, // OP_RESERVED_100
+            null, // OP_RESERVED_101
+            null, // OP_RESERVED_102
+            null, // MANAGE_ONGOING_CALLS
     };
 
     /**
@@ -2275,6 +2340,10 @@
             AppOpsManager.MODE_DEFAULT, // OP_AUTO_REVOKE_PERMISSIONS_IF_UNUSED
             AppOpsManager.MODE_ALLOWED, // OP_AUTO_REVOKE_MANAGED_BY_INSTALLER
             AppOpsManager.MODE_ERRORED, // OP_NO_ISOLATED_STORAGE
+            AppOpsManager.MODE_ERRORED, // OP_RESERVED_100
+            AppOpsManager.MODE_ERRORED, // OP_RESERVED_101
+            AppOpsManager.MODE_ERRORED, // OP_RESERVED_102
+            AppOpsManager.MODE_DEFAULT, // MANAGE_ONGOING_CALLS
     };
 
     /**
@@ -2385,6 +2454,10 @@
             false, // AUTO_REVOKE_PERMISSIONS_IF_UNUSED
             false, // AUTO_REVOKE_MANAGED_BY_INSTALLER
             true, // NO_ISOLATED_STORAGE
+            false, // OP_RESERVED_100
+            false, // OP_RESERVED_101
+            false, // OP_RESERVED_102
+            true, // MANAGE_ONGOING_CALLS
     };
 
     /**
@@ -2496,7 +2569,7 @@
      * Retrieve a non-localized name for the operation, for debugging output.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static String opToName(int op) {
         if (op == OP_NONE) return "NONE";
         return op < sOpNames.length ? sOpNames[op] : ("Unknown(" + op + ")");
@@ -2527,7 +2600,7 @@
      * Retrieve the permission associated with an operation, or null if there is not one.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @TestApi
     public static String opToPermission(int op) {
         return sOpPerms[op];
@@ -2593,7 +2666,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public static int opToDefaultMode(@NonNull String appOp) {
         return opToDefaultMode(strOpToOp(appOp));
@@ -2683,7 +2755,6 @@
      * Class holding all of the operation information associated with an app.
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final class PackageOps implements Parcelable {
         private final String mPackageName;
@@ -2762,7 +2833,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     // @DataClass(genHiddenConstructor = true, genHiddenCopyConstructor = true)
     // genHiddenCopyConstructor does not work for @hide @SystemApi classes
@@ -3130,7 +3200,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     @Immutable
     // @DataClass(genHiddenConstructor = true) codegen verifier is broken
@@ -3704,7 +3773,6 @@
      *
      * @hide
      */
-    @TestApi
     @Immutable
     @SystemApi
     // @DataClass(genHiddenConstructor = true) codegen verifier is broken
@@ -4382,7 +4450,6 @@
      * @hide
      */
     @Immutable
-    @TestApi
     @SystemApi
     public static final class HistoricalOpsRequest {
         private final int mUid;
@@ -4413,7 +4480,6 @@
          *
          * @hide
          */
-        @TestApi
         @SystemApi
         public static final class Builder {
             private int mUid = Process.INVALID_UID;
@@ -4551,7 +4617,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final class HistoricalOps implements Parcelable {
         private long mBeginTimeMillis;
@@ -4988,7 +5053,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final class HistoricalUidOps implements Parcelable {
         private final int mUid;
@@ -5242,7 +5306,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final class HistoricalPackageOps implements Parcelable {
         private final @NonNull String mPackageName;
@@ -5573,7 +5636,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     /* codegen verifier cannot deal with nested class parameters
     @DataClass(genHiddenConstructor = true,
@@ -5884,7 +5946,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final class HistoricalOp implements Parcelable {
         private final int mOp;
@@ -6521,7 +6582,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS)
     public @NonNull List<AppOpsManager.PackageOps> getOpsForPackage(int uid,
@@ -6556,7 +6616,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS)
     public void getHistoricalOps(@NonNull HistoricalOpsRequest request,
@@ -6665,7 +6724,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(android.Manifest.permission.MANAGE_APP_OPS_MODES)
     public void setUidMode(@NonNull String appOp, int uid, @Mode int mode) {
         try {
@@ -6719,7 +6777,6 @@
      * be changed.
      * @hide
      */
-    @TestApi
     @SystemApi
     @RequiresPermission(android.Manifest.permission.MANAGE_APP_OPS_MODES)
     public void setMode(@NonNull String op, int uid, @Nullable String packageName,
@@ -6756,7 +6813,7 @@
 
     /** @hide */
     @RequiresPermission(android.Manifest.permission.MANAGE_APP_OPS_MODES)
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void resetAllModes() {
         try {
             mService.resetAllModes(mContext.getUserId(), null);
@@ -8661,7 +8718,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(Manifest.permission.GET_APP_OPS_STATS)
     public @Nullable RuntimeAppOpAccessMessage collectRuntimeAppOpAccessMessage() {
         try {
@@ -8676,7 +8732,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static String[] getOpStrs() {
         return Arrays.copyOf(sOpToString, sOpToString.length);
     }
diff --git a/core/java/android/app/Application.java b/core/java/android/app/Application.java
index 941467f..146d648 100644
--- a/core/java/android/app/Application.java
+++ b/core/java/android/app/Application.java
@@ -26,6 +26,7 @@
 import android.content.ContextWrapper;
 import android.content.Intent;
 import android.content.res.Configuration;
+import android.os.Build;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.autofill.AutofillManager;
@@ -352,7 +353,7 @@
         mLoadedApk = ContextImpl.getImpl(context).mPackageInfo;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         /* package */ void dispatchActivityPreCreated(@NonNull Activity activity,
             @Nullable Bundle savedInstanceState) {
         Object[] callbacks = collectActivityLifecycleCallbacks();
@@ -376,7 +377,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         /* package */ void dispatchActivityPostCreated(@NonNull Activity activity,
             @Nullable Bundle savedInstanceState) {
         Object[] callbacks = collectActivityLifecycleCallbacks();
@@ -388,7 +389,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         /* package */ void dispatchActivityPreStarted(@NonNull Activity activity) {
         Object[] callbacks = collectActivityLifecycleCallbacks();
         if (callbacks != null) {
@@ -408,7 +409,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         /* package */ void dispatchActivityPostStarted(@NonNull Activity activity) {
         Object[] callbacks = collectActivityLifecycleCallbacks();
         if (callbacks != null) {
@@ -418,7 +419,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         /* package */ void dispatchActivityPreResumed(@NonNull Activity activity) {
         Object[] callbacks = collectActivityLifecycleCallbacks();
         if (callbacks != null) {
@@ -438,7 +439,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         /* package */ void dispatchActivityPostResumed(@NonNull Activity activity) {
         Object[] callbacks = collectActivityLifecycleCallbacks();
         if (callbacks != null) {
@@ -448,7 +449,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         /* package */ void dispatchActivityPrePaused(@NonNull Activity activity) {
         Object[] callbacks = collectActivityLifecycleCallbacks();
         if (callbacks != null) {
@@ -468,7 +469,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         /* package */ void dispatchActivityPostPaused(@NonNull Activity activity) {
         Object[] callbacks = collectActivityLifecycleCallbacks();
         if (callbacks != null) {
@@ -478,7 +479,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         /* package */ void dispatchActivityPreStopped(@NonNull Activity activity) {
         Object[] callbacks = collectActivityLifecycleCallbacks();
         if (callbacks != null) {
@@ -498,7 +499,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         /* package */ void dispatchActivityPostStopped(@NonNull Activity activity) {
         Object[] callbacks = collectActivityLifecycleCallbacks();
         if (callbacks != null) {
@@ -508,7 +509,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         /* package */ void dispatchActivityPreSaveInstanceState(@NonNull Activity activity,
             @NonNull Bundle outState) {
         Object[] callbacks = collectActivityLifecycleCallbacks();
@@ -532,7 +533,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         /* package */ void dispatchActivityPostSaveInstanceState(@NonNull Activity activity,
             @NonNull Bundle outState) {
         Object[] callbacks = collectActivityLifecycleCallbacks();
@@ -544,7 +545,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         /* package */ void dispatchActivityPreDestroyed(@NonNull Activity activity) {
         Object[] callbacks = collectActivityLifecycleCallbacks();
         if (callbacks != null) {
@@ -564,7 +565,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         /* package */ void dispatchActivityPostDestroyed(@NonNull Activity activity) {
         Object[] callbacks = collectActivityLifecycleCallbacks();
         if (callbacks != null) {
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java
index c9031b7..425073c 100644
--- a/core/java/android/app/ApplicationPackageManager.java
+++ b/core/java/android/app/ApplicationPackageManager.java
@@ -1158,7 +1158,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @Override
     public boolean setInstantAppCookie(@NonNull byte[] cookie) {
         try {
@@ -2276,7 +2276,7 @@
     }
 
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public @Nullable VolumeInfo getPackageCurrentVolume(ApplicationInfo app) {
         final StorageManager storage = mContext.getSystemService(StorageManager.class);
         return getPackageCurrentVolume(app, storage);
diff --git a/core/java/android/app/BroadcastOptions.java b/core/java/android/app/BroadcastOptions.java
index 3789a44..03dca30 100644
--- a/core/java/android/app/BroadcastOptions.java
+++ b/core/java/android/app/BroadcastOptions.java
@@ -127,6 +127,7 @@
      * them.  This only applies to receivers declared in the app's AndroidManifest.xml.
      * @hide
      */
+    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
     public void setMaxManifestReceiverApiLevel(int apiLevel) {
         mMaxManifestReceiverApiLevel = apiLevel;
     }
@@ -135,6 +136,7 @@
      * Return {@link #setMaxManifestReceiverApiLevel}.
      * @hide
      */
+    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
     public int getMaxManifestReceiverApiLevel() {
         return mMaxManifestReceiverApiLevel;
     }
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java
index 505b498..4f065fd 100644
--- a/core/java/android/app/ContextImpl.java
+++ b/core/java/android/app/ContextImpl.java
@@ -2661,7 +2661,7 @@
         return context;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     static ContextImpl createActivityContext(ActivityThread mainThread,
             LoadedApk packageInfo, ActivityInfo activityInfo, IBinder activityToken, int displayId,
             Configuration overrideConfiguration) {
diff --git a/core/java/android/app/DialogFragment.java b/core/java/android/app/DialogFragment.java
index e4c84d7..9fea3f7 100644
--- a/core/java/android/app/DialogFragment.java
+++ b/core/java/android/app/DialogFragment.java
@@ -19,6 +19,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.DialogInterface;
+import android.os.Build;
 import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -183,11 +184,11 @@
     int mTheme = 0;
     boolean mCancelable = true;
     boolean mShowsDialog = true;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     int mBackStackId = -1;
 
     Dialog mDialog;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     boolean mViewDestroyed;
     @UnsupportedAppUsage
     boolean mDismissed;
diff --git a/core/java/android/app/DownloadManager.java b/core/java/android/app/DownloadManager.java
index 07194226..35509237 100644
--- a/core/java/android/app/DownloadManager.java
+++ b/core/java/android/app/DownloadManager.java
@@ -351,7 +351,7 @@
      * columns to request from DownloadProvider.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String[] UNDERLYING_COLUMNS = new String[] {
         DownloadManager.COLUMN_ID,
         DownloadManager.COLUMN_LOCAL_FILENAME,
@@ -1646,7 +1646,7 @@
     /**
      * Get a parameterized SQL WHERE clause to select a bunch of IDs.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     static String getWhereClauseForIds(long[] ids) {
         StringBuilder whereClause = new StringBuilder();
         whereClause.append("(");
@@ -1664,7 +1664,7 @@
     /**
      * Get the selection args for a clause returned by {@link #getWhereClauseForIds(long[])}.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     static String[] getWhereArgsForIds(long[] ids) {
         String[] whereArgs = new String[ids.length];
         return getWhereArgsForIds(ids, whereArgs);
diff --git a/core/java/android/app/Fragment.java b/core/java/android/app/Fragment.java
index f7fb3c3..aec8f29 100644
--- a/core/java/android/app/Fragment.java
+++ b/core/java/android/app/Fragment.java
@@ -306,7 +306,7 @@
     int mTargetRequestCode;
 
     // True if the fragment is in the list of added fragments.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     boolean mAdded;
 
     // If set this fragment is being removed from its activity.
diff --git a/core/java/android/app/FragmentController.java b/core/java/android/app/FragmentController.java
index f021f76..150b7a5 100644
--- a/core/java/android/app/FragmentController.java
+++ b/core/java/android/app/FragmentController.java
@@ -20,6 +20,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.res.Configuration;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Parcelable;
 import android.util.ArrayMap;
@@ -44,7 +45,7 @@
  */
 @Deprecated
 public class FragmentController {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final FragmentHostCallback<?> mHost;
 
     /**
diff --git a/core/java/android/app/FragmentManager.java b/core/java/android/app/FragmentManager.java
index 904c4735..5435558 100644
--- a/core/java/android/app/FragmentManager.java
+++ b/core/java/android/app/FragmentManager.java
@@ -1101,7 +1101,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     Animator loadAnimator(Fragment fragment, int transit, boolean enter,
             int transitionStyle) {
         Animator animObj = fragment.onCreateAnimator(transit, enter, fragment.getNextAnim());
diff --git a/core/java/android/app/IActivityManager.aidl b/core/java/android/app/IActivityManager.aidl
index 9459577..75d8a19 100644
--- a/core/java/android/app/IActivityManager.aidl
+++ b/core/java/android/app/IActivityManager.aidl
@@ -113,7 +113,7 @@
             in String callingFeatureId, in Intent intent, in String resolvedType,
             in IBinder resultTo, in String resultWho, int requestCode, int flags,
             in ProfilerInfo profilerInfo, in Bundle options);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void unhandledBack();
     @UnsupportedAppUsage
     boolean finishActivity(in IBinder token, int code, in Intent data, int finishTask);
@@ -172,12 +172,12 @@
     @UnsupportedAppUsage
     boolean unbindService(in IServiceConnection connection);
     void publishService(in IBinder token, in Intent intent, in IBinder service);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void setDebugApp(in String packageName, boolean waitForDebugger, boolean persistent);
     void setAgentApp(in String packageName, @nullable String agent);
     @UnsupportedAppUsage
     void setAlwaysFinish(boolean enabled);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean startInstrumentation(in ComponentName className, in String profileFile,
             int flags, in Bundle arguments, in IInstrumentationWatcher watcher,
             in IUiAutomationConnection connection, int userId,
@@ -199,7 +199,7 @@
      * @throws RemoteException
      * @return Returns true if the configuration was updated.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean updateConfiguration(in Configuration values);
     /**
      * Updates mcc mnc configuration and applies changes to the entire system.
@@ -224,7 +224,7 @@
             int mode, int userId);
     void revokeUriPermission(in IApplicationThread caller, in String targetPkg, in Uri uri,
             int mode, int userId);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void setActivityController(in IActivityController watcher, boolean imAMonkey);
     void showWaitingForDebugger(in IApplicationThread who, boolean waiting);
     /*
@@ -278,7 +278,7 @@
     List<ActivityManager.RunningAppProcessInfo> getRunningAppProcesses();
     IBinder peekService(in Intent service, in String resolvedType, in String callingPackage);
     // Turn on/off profiling in a particular process.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean profileControl(in String process, int userId, boolean start,
             in ProfilerInfo profilerInfo, int profileType);
     @UnsupportedAppUsage
@@ -309,7 +309,7 @@
     // Retrieve info of applications installed on external media that are currently
     // running.
     List<ApplicationInfo> getRunningExternalApplications();
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void finishHeavyWeightApp();
     // A StrictMode violation to be handled.
     @UnsupportedAppUsage
@@ -331,7 +331,7 @@
             in RemoteCallback finishCallback);
     @UnsupportedAppUsage
     boolean isUserRunning(int userid, int flags);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void setPackageScreenCompatMode(in String packageName, int mode);
     @UnsupportedAppUsage
     boolean switchUser(int userid);
@@ -347,12 +347,12 @@
     @UnsupportedAppUsage
     long[] getProcessPss(in int[] pids);
     void showBootMessage(in CharSequence msg, boolean always);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void killAllBackgroundProcesses();
     ContentProviderHolder getContentProviderExternal(in String name, int userId,
             in IBinder token, String tag);
     /** @deprecated - Use {@link #removeContentProviderExternalAsUser} which takes a user ID. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void removeContentProviderExternal(in String name, in IBinder token);
     void removeContentProviderExternalAsUser(in String name, in IBinder token, int userId);
     // Get memory information about the calling process.
@@ -380,7 +380,7 @@
             in String callingFeatureId, in Intent intent, in String resolvedType,
             in IBinder resultTo, in String resultWho, int requestCode, int flags,
             in ProfilerInfo profilerInfo, in Bundle options, int userId);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     int stopUser(int userid, boolean force, in IStopUserCallback callback);
     /**
      * Check {@link com.android.server.am.ActivityManagerService#stopUserWithDelayedLocking(int, boolean, IStopUserCallback)}
@@ -441,7 +441,7 @@
     String getLaunchedFromPackage(in IBinder activityToken);
     void killUid(int appId, int userId, in String reason);
     void setUserIsMonkey(boolean monkey);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void hang(in IBinder who, boolean allowRestart);
 
     @UnsupportedAppUsage
@@ -450,13 +450,13 @@
     void moveTaskToStack(int taskId, int stackId, boolean toTop);
     void setFocusedStack(int stackId);
     ActivityManager.StackInfo getFocusedStackInfo();
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void restart();
     void performIdleMaintenance();
     void appNotRespondingViaProvider(in IBinder connection);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     Rect getTaskBounds(int taskId);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean setProcessMemoryTrimLevel(in String process, int uid, int level);
 
 
@@ -464,7 +464,7 @@
     String getTagForIntentSender(in IIntentSender sender, in String prefix);
     @UnsupportedAppUsage
     boolean startUserInBackground(int userid);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean isInLockTaskMode();
     @UnsupportedAppUsage
     void startRecentsActivity(in Intent intent, in IAssistDataReceiver assistDataReceiver,
@@ -475,7 +475,7 @@
     int startActivityFromRecents(int taskId, in Bundle options);
     @UnsupportedAppUsage
     void startSystemLockTaskMode(int taskId);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean isTopOfTask(in IBinder token);
     void bootAnimationComplete();
     int checkPermissionWithToken(in String permission, int pid, int uid,
@@ -486,11 +486,11 @@
     void notifyCleartextNetwork(int uid, in byte[] firstPacket);
     @UnsupportedAppUsage
     void setTaskResizeable(int taskId, int resizeableMode);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void resizeTask(int taskId, in Rect bounds, int resizeMode);
     @UnsupportedAppUsage
     int getLockTaskModeState();
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void setDumpHeapDebugLimit(in String processName, int uid, long maxMemSize,
             in String reportPackage);
     void dumpHeapFinished(in String path);
@@ -503,11 +503,11 @@
 
     // Start of N transactions
     // Start Binder transaction tracking for all applications.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean startBinderTracking();
     // Stop Binder transaction tracking for all applications and dump trace data to the given file
     // descriptor.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean stopBinderTrackingAndDump(in ParcelFileDescriptor fd);
     /**
      * Try to place task to provided position. The final position might be different depending on
@@ -516,12 +516,12 @@
      */
     @UnsupportedAppUsage
     void positionTaskInStack(int taskId, int stackId, int position);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void suppressResizeConfigChanges(boolean suppress);
     @UnsupportedAppUsage
     boolean moveTopActivityToPinnedStack(int stackId, in Rect bounds);
     boolean isAppStartModeDisabled(int uid, in String packageName);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean unlockUser(int userid, in byte[] token, in byte[] secret,
             in IProgressListener listener);
     void killPackageDependents(in String packageName, int userId);
@@ -532,7 +532,7 @@
     boolean isVrModePackageEnabled(in ComponentName packageName);
     void notifyLockedProfile(int userId);
     void startConfirmDeviceCredentialIntent(in Intent intent, in Bundle options);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void sendIdleJobTrigger();
     int sendIntentSender(in IIntentSender target, in IBinder whitelistToken, int code,
             in Intent intent, in String resolvedType, in IIntentReceiver finishedReceiver,
diff --git a/core/java/android/app/IAlarmManager.aidl b/core/java/android/app/IAlarmManager.aidl
index 6f624ee..2c51935 100644
--- a/core/java/android/app/IAlarmManager.aidl
+++ b/core/java/android/app/IAlarmManager.aidl
@@ -29,16 +29,16 @@
  */
 interface IAlarmManager {
 	/** windowLength == 0 means exact; windowLength < 0 means the let the OS decide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void set(String callingPackage, int type, long triggerAtTime, long windowLength,
             long interval, int flags, in PendingIntent operation, in IAlarmListener listener,
             String listenerTag, in WorkSource workSource, in AlarmManager.AlarmClockInfo alarmClock);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean setTime(long millis);
     void setTimeZone(String zone);
     void remove(in PendingIntent operation, in IAlarmListener listener);
     long getNextWakeFromIdleTime();
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     AlarmManager.AlarmClockInfo getNextAlarmClock(int userId);
     long currentNetworkTimeMillis();
 }
diff --git a/core/java/android/app/IAppTask.aidl b/core/java/android/app/IAppTask.aidl
index f41d705..d3046c5 100644
--- a/core/java/android/app/IAppTask.aidl
+++ b/core/java/android/app/IAppTask.aidl
@@ -24,7 +24,7 @@
 /** @hide */
 interface IAppTask {
     void finishAndRemoveTask();
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     ActivityManager.RecentTaskInfo getTaskInfo();
     void moveToFront(in IApplicationThread appThread, in String callingPackage);
     int startActivity(IBinder whoThread, String callingPackage, String callingFeatureId,
diff --git a/core/java/android/app/IAssistDataReceiver.aidl b/core/java/android/app/IAssistDataReceiver.aidl
index 0d69838..d67fbff 100644
--- a/core/java/android/app/IAssistDataReceiver.aidl
+++ b/core/java/android/app/IAssistDataReceiver.aidl
@@ -21,8 +21,8 @@
 
 /** @hide */
 oneway interface IAssistDataReceiver {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void onHandleAssistData(in Bundle resultData);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void onHandleAssistScreenshot(in Bitmap screenshot);
 }
diff --git a/core/java/android/app/INotificationManager.aidl b/core/java/android/app/INotificationManager.aidl
index 0deef53..1a2dff6 100644
--- a/core/java/android/app/INotificationManager.aidl
+++ b/core/java/android/app/INotificationManager.aidl
@@ -126,7 +126,7 @@
     StatusBarNotification[] getActiveNotifications(String callingPkg);
     StatusBarNotification[] getActiveNotificationsWithAttribution(String callingPkg,
             String callingAttributionTag);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     StatusBarNotification[] getHistoricalNotifications(String callingPkg, int count, boolean includeSnoozed);
     StatusBarNotification[] getHistoricalNotificationsWithAttribution(String callingPkg,
             String callingAttributionTag, int count, boolean includeSnoozed);
diff --git a/core/java/android/app/IStopUserCallback.aidl b/core/java/android/app/IStopUserCallback.aidl
index d3c2ff7..c997342 100644
--- a/core/java/android/app/IStopUserCallback.aidl
+++ b/core/java/android/app/IStopUserCallback.aidl
@@ -22,7 +22,7 @@
  */
 interface IStopUserCallback
 {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void userStopped(int userId);
     void userStopAborted(int userId);
 }
diff --git a/core/java/android/app/ITransientNotification.aidl b/core/java/android/app/ITransientNotification.aidl
index 09a3ba0..537a8f2 100644
--- a/core/java/android/app/ITransientNotification.aidl
+++ b/core/java/android/app/ITransientNotification.aidl
@@ -19,7 +19,7 @@
 
 /** @hide */
 oneway interface ITransientNotification {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void show(IBinder windowToken);
     void hide();
 }
diff --git a/core/java/android/app/IWallpaperManager.aidl b/core/java/android/app/IWallpaperManager.aidl
index 4cb8d93..101917b 100644
--- a/core/java/android/app/IWallpaperManager.aidl
+++ b/core/java/android/app/IWallpaperManager.aidl
@@ -83,7 +83,7 @@
      * information about that wallpaper.  Otherwise, if it is a static image,
      * simply return null.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     WallpaperInfo getWallpaperInfo(int userId);
 
     /**
diff --git a/core/java/android/app/Instrumentation.java b/core/java/android/app/Instrumentation.java
index 721525d..5a30e29 100644
--- a/core/java/android/app/Instrumentation.java
+++ b/core/java/android/app/Instrumentation.java
@@ -62,6 +62,7 @@
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.TimeoutException;
 
 /**
  * Base class for implementing application instrumentation code.  When running
@@ -90,6 +91,8 @@
 
     private static final String TAG = "Instrumentation";
 
+    private static final long CONNECT_TIMEOUT_MILLIS = 5000;
+
     /**
      * @hide
      */
@@ -1412,7 +1415,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void callActivityOnNewIntent(Activity activity, ReferrerIntent intent) {
         final String oldReferrer = activity.mReferrer;
         try {
@@ -1758,7 +1761,7 @@
      *
      * {@hide}
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int execStartActivitiesAsUser(Context who, IBinder contextThread,
             IBinder token, Activity target, Intent[] intents, Bundle options,
             int userId) {
@@ -1941,7 +1944,7 @@
      * Special version!
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ActivityResult execStartActivityAsCaller(
             Context who, IBinder contextThread, IBinder token, Activity target,
             Intent intent, int requestCode, Bundle options, IBinder permissionToken,
@@ -1989,7 +1992,7 @@
      * Special version!
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void execStartActivityFromAppTask(
             Context who, IBinder contextThread, IAppTask appTask,
             Intent intent, Bundle options) {
@@ -2125,6 +2128,13 @@
      * Equivalent to {@code getUiAutomation(0)}. If a {@link UiAutomation} exists with different
      * flags, the flags on that instance will be changed, and then it will be returned.
      * </p>
+     * <p>
+     * Compatibility mode: This method is infallible for apps targeted for
+     * {@link Build.VERSION_CODES#R} and earlier versions; for apps targeted for later versions, it
+     * will return null if {@link UiAutomation} fails to connect. The caller can check the return
+     * value and retry on error.
+     * </p>
+     *
      * @return The UI automation instance.
      *
      * @see UiAutomation
@@ -2152,6 +2162,12 @@
      * If a {@link UiAutomation} exists with different flags, the flags on that instance will be
      * changed, and then it will be returned.
      * </p>
+     * <p>
+     * Compatibility mode: This method is infallible for apps targeted for
+     * {@link Build.VERSION_CODES#R} and earlier versions; for apps targeted for later versions, it
+     * will return null if {@link UiAutomation} fails to connect. The caller can check the return
+     * value and retry on error.
+     * </p>
      *
      * @param flags The flags to be passed to the UiAutomation, for example
      *        {@link UiAutomation#FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES}.
@@ -2173,8 +2189,17 @@
             } else {
                 mUiAutomation.disconnect();
             }
-            mUiAutomation.connect(flags);
-            return mUiAutomation;
+            if (getTargetContext().getApplicationInfo().targetSdkVersion <= Build.VERSION_CODES.R) {
+                mUiAutomation.connect(flags);
+                return mUiAutomation;
+            }
+            try {
+                mUiAutomation.connectWithTimeout(flags, CONNECT_TIMEOUT_MILLIS);
+                return mUiAutomation;
+            } catch (TimeoutException e) {
+                mUiAutomation.destroy();
+                mUiAutomation = null;
+            }
         }
         return null;
     }
diff --git a/core/java/android/app/KeyguardManager.java b/core/java/android/app/KeyguardManager.java
index 2122e92..545c3f7 100644
--- a/core/java/android/app/KeyguardManager.java
+++ b/core/java/android/app/KeyguardManager.java
@@ -531,7 +531,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isDeviceSecure(int userId) {
         try {
             return mTrustManager.isDeviceSecure(userId);
diff --git a/core/java/android/app/LoadedApk.java b/core/java/android/app/LoadedApk.java
index f9b48e7..a21a156 100644
--- a/core/java/android/app/LoadedApk.java
+++ b/core/java/android/app/LoadedApk.java
@@ -103,7 +103,6 @@
 public final class LoadedApk {
     static final String TAG = "LoadedApk";
     static final boolean DEBUG = false;
-    private static final String PROPERTY_NAME_APPEND_NATIVE = "pi.append_native_lib_paths";
 
     @UnsupportedAppUsage
     private final ActivityThread mActivityThread;
@@ -118,7 +117,7 @@
     private String[] mOverlayDirs;
     @UnsupportedAppUsage
     private String mDataDir;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private String mLibDir;
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
     private File mDataDirFile;
@@ -909,7 +908,7 @@
             needToSetupJitProfiles = true;
         }
 
-        if (!libPaths.isEmpty() && SystemProperties.getBoolean(PROPERTY_NAME_APPEND_NATIVE, true)) {
+        if (!libPaths.isEmpty()) {
             // Temporarily disable logging of disk reads on the Looper thread as this is necessary
             StrictMode.ThreadPolicy oldPolicy = allowThreadDiskReads();
             try {
@@ -1695,7 +1694,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public IServiceConnection lookupServiceDispatcher(ServiceConnection c,
             Context context) {
         synchronized (mServices) {
@@ -1761,7 +1760,7 @@
 
     static final class ServiceDispatcher {
         private final ServiceDispatcher.InnerConnection mIServiceConnection;
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private final ServiceConnection mConnection;
         @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
         private final Context mContext;
@@ -1780,7 +1779,7 @@
         }
 
         private static class InnerConnection extends IServiceConnection.Stub {
-            @UnsupportedAppUsage
+            @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
             final WeakReference<LoadedApk.ServiceDispatcher> mDispatcher;
 
             InnerConnection(LoadedApk.ServiceDispatcher sd) {
@@ -1799,7 +1798,7 @@
         private final ArrayMap<ComponentName, ServiceDispatcher.ConnectionInfo> mActiveConnections
             = new ArrayMap<ComponentName, ServiceDispatcher.ConnectionInfo>();
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         ServiceDispatcher(ServiceConnection conn,
                 Context context, Handler activityThread, int flags) {
             mIServiceConnection = new InnerConnection(this);
@@ -1864,7 +1863,7 @@
             return mConnection;
         }
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         IServiceConnection getIServiceConnection() {
             return mIServiceConnection;
         }
diff --git a/core/java/android/app/NativeActivity.java b/core/java/android/app/NativeActivity.java
index 74bc9e2..12d1604 100644
--- a/core/java/android/app/NativeActivity.java
+++ b/core/java/android/app/NativeActivity.java
@@ -71,7 +71,7 @@
     private NativeContentView mNativeContentView;
     private InputMethodManager mIMM;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mNativeHandle;
     
     private InputQueue mCurInputQueue;
@@ -87,7 +87,7 @@
 
     private boolean mDestroyed;
     
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private native long loadNativeCode(String path, String funcname, MessageQueue queue,
             String internalDataPath, String obbPath, String externalDataPath, int sdkVersion,
             AssetManager assetMgr, byte[] savedState, ClassLoader classLoader, String libraryPath);
@@ -315,22 +315,22 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     void setWindowFlags(int flags, int mask) {
         getWindow().setFlags(flags, mask);
     }
     
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     void setWindowFormat(int format) {
         getWindow().setFormat(format);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     void showIme(int mode) {
         mIMM.showSoftInput(mNativeContentView, mode);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     void hideIme(int mode) {
         mIMM.hideSoftInputFromWindow(mNativeContentView.getWindowToken(), mode);
     }
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 93bff3c..7aa5172 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -207,7 +207,7 @@
      * <p>
      * Avoids spamming the system with overly large strings such as full e-mails.
      */
-    private static final int MAX_CHARSEQUENCE_LENGTH = 5 * 1024;
+    private static final int MAX_CHARSEQUENCE_LENGTH = 1024;
 
     /**
      * Maximum entries of reply text that are accepted by Builder and friends.
@@ -5233,7 +5233,7 @@
         /**
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public String loadHeaderAppName() {
             CharSequence name = null;
             final PackageManager pm = mContext.getPackageManager();
@@ -7830,7 +7830,7 @@
              */
             public Message(@NonNull CharSequence text, long timestamp, @Nullable Person sender,
                     boolean remoteInputHistory) {
-                mText = text;
+                mText = safeCharSequence(text);
                 mTimestamp = timestamp;
                 mSender = sender;
                 mRemoteInputHistory = remoteInputHistory;
@@ -7944,7 +7944,7 @@
                 bundle.putLong(KEY_TIMESTAMP, mTimestamp);
                 if (mSender != null) {
                     // Legacy listeners need this
-                    bundle.putCharSequence(KEY_SENDER, mSender.getName());
+                    bundle.putCharSequence(KEY_SENDER, safeCharSequence(mSender.getName()));
                     bundle.putParcelable(KEY_SENDER_PERSON, mSender);
                 }
                 if (mDataMimeType != null) {
diff --git a/core/java/android/app/NotificationChannel.java b/core/java/android/app/NotificationChannel.java
index cf2f769..6ce3299 100644
--- a/core/java/android/app/NotificationChannel.java
+++ b/core/java/android/app/NotificationChannel.java
@@ -134,7 +134,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int USER_LOCKED_SOUND = 0x00000020;
 
     /**
@@ -391,7 +390,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public void setBlockable(boolean blockable) {
         mBlockableSystem = blockable;
     }
diff --git a/core/java/android/app/NotificationManager.java b/core/java/android/app/NotificationManager.java
index c53449e..7fe6a24 100644
--- a/core/java/android/app/NotificationManager.java
+++ b/core/java/android/app/NotificationManager.java
@@ -1019,7 +1019,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ZenModeConfig getZenModeConfig() {
         INotificationManager service = getService();
         try {
@@ -1337,7 +1337,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public boolean isNotificationAssistantAccessGranted(@NonNull ComponentName assistant) {
         INotificationManager service = getService();
         try {
@@ -1373,7 +1372,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public @NonNull @Adjustment.Keys List<String> getAllowedAssistantAdjustments() {
         INotificationManager service = getService();
         try {
@@ -1506,7 +1504,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public void setNotificationAssistantAccessGranted(@Nullable ComponentName assistant,
             boolean granted) {
         INotificationManager service = getService();
@@ -1529,7 +1526,6 @@
 
     /** @hide */
     @SystemApi
-    @TestApi
     public @Nullable ComponentName getAllowedNotificationAssistant() {
         INotificationManager service = getService();
         try {
diff --git a/core/java/android/app/PackageDeleteObserver.java b/core/java/android/app/PackageDeleteObserver.java
index d8803aa..4ff6f2a 100644
--- a/core/java/android/app/PackageDeleteObserver.java
+++ b/core/java/android/app/PackageDeleteObserver.java
@@ -19,11 +19,12 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Intent;
 import android.content.pm.IPackageDeleteObserver2;
+import android.os.Build;
 
 /** {@hide} */
 public class PackageDeleteObserver {
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public PackageDeleteObserver() {
     }
 
diff --git a/core/java/android/app/PendingIntent.java b/core/java/android/app/PendingIntent.java
index cd352e1..41cac75 100644
--- a/core/java/android/app/PendingIntent.java
+++ b/core/java/android/app/PendingIntent.java
@@ -25,6 +25,7 @@
 import android.content.IIntentSender;
 import android.content.Intent;
 import android.content.IntentSender;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
@@ -281,7 +282,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static void setOnMarshaledListener(OnMarshaledListener listener) {
         sOnMarshaledListener.set(listener);
     }
diff --git a/core/java/android/app/QueuedWork.java b/core/java/android/app/QueuedWork.java
index 82cc2c4..a99c0aa 100644
--- a/core/java/android/app/QueuedWork.java
+++ b/core/java/android/app/QueuedWork.java
@@ -17,6 +17,7 @@
 package android.app;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.Looper;
@@ -217,7 +218,7 @@
      * @param work The new runnable to process
      * @param shouldDelay If the message should be delayed
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static void queue(Runnable work, boolean shouldDelay) {
         Handler handler = getHandler();
 
diff --git a/core/java/android/app/RuntimeAppOpAccessMessage.java b/core/java/android/app/RuntimeAppOpAccessMessage.java
index a19f815..db3ba4a 100644
--- a/core/java/android/app/RuntimeAppOpAccessMessage.java
+++ b/core/java/android/app/RuntimeAppOpAccessMessage.java
@@ -20,7 +20,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -32,7 +31,6 @@
  * @hide
  */
 @Immutable
-@TestApi
 @SystemApi
 /*@DataClass(genConstructor = false)
 @DataClass.Suppress("getOpCode")*/
diff --git a/core/java/android/app/SearchManager.java b/core/java/android/app/SearchManager.java
index dcb5350..7dd7c90 100644
--- a/core/java/android/app/SearchManager.java
+++ b/core/java/android/app/SearchManager.java
@@ -31,6 +31,7 @@
 import android.database.Cursor;
 import android.graphics.Rect;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.RemoteException;
@@ -778,7 +779,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isVisible() {
         return mSearchDialog == null? false : mSearchDialog.isShowing();
     }
diff --git a/core/java/android/app/SharedPreferencesImpl.java b/core/java/android/app/SharedPreferencesImpl.java
index 3df1648..1ebf565 100644
--- a/core/java/android/app/SharedPreferencesImpl.java
+++ b/core/java/android/app/SharedPreferencesImpl.java
@@ -19,7 +19,7 @@
 import android.annotation.Nullable;
 import android.compat.Compatibility;
 import android.compat.annotation.ChangeId;
-import android.compat.annotation.EnabledAfter;
+import android.compat.annotation.EnabledSince;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.SharedPreferences;
 import android.os.Build;
@@ -71,7 +71,7 @@
      * {@link android.content.SharedPreferences.Editor#clear Editor.clear}.
      */
     @ChangeId
-    @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.Q)
+    @EnabledSince(targetSdkVersion = Build.VERSION_CODES.R)
     private static final long CALLBACK_ON_CLEAR_CHANGE = 119147584L;
 
     // Lock ordering rules:
@@ -130,7 +130,7 @@
         startLoadFromDisk();
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void startLoadFromDisk() {
         synchronized (mLock) {
             mLoaded = false;
diff --git a/core/java/android/app/StatusBarManager.java b/core/java/android/app/StatusBarManager.java
index 1329fa4..49c9e6c 100644
--- a/core/java/android/app/StatusBarManager.java
+++ b/core/java/android/app/StatusBarManager.java
@@ -26,6 +26,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.os.Binder;
+import android.os.Build;
 import android.os.IBinder;
 import android.os.RemoteException;
 import android.os.ServiceManager;
@@ -54,7 +55,7 @@
 
     /** @hide */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int DISABLE_NOTIFICATION_TICKER
             = View.STATUS_BAR_DISABLE_NOTIFICATION_TICKER;
     /** @hide */
@@ -313,7 +314,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void expandSettingsPanel(@Nullable String subPanel) {
         try {
             final IStatusBarService svc = getService();
@@ -326,7 +327,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setIcon(String slot, int iconId, int iconLevel, String contentDescription) {
         try {
             final IStatusBarService svc = getService();
@@ -340,7 +341,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void removeIcon(String slot) {
         try {
             final IStatusBarService svc = getService();
@@ -353,7 +354,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setIconVisibility(String slot, boolean visible) {
         try {
             final IStatusBarService svc = getService();
@@ -374,7 +375,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(android.Manifest.permission.STATUS_BAR)
     public void setDisabledForSetup(boolean disabled) {
         try {
@@ -422,7 +422,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(android.Manifest.permission.STATUS_BAR)
     @NonNull
     public DisableInfo getDisableInfo() {
@@ -455,7 +454,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final class DisableInfo {
 
         private boolean mStatusBarExpansion;
@@ -488,7 +486,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public boolean isStatusBarExpansionDisabled() {
             return mStatusBarExpansion;
         }
@@ -504,7 +501,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public boolean isNavigateToHomeDisabled() {
             return mNavigateHome;
         }
@@ -520,7 +516,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public boolean isNotificationPeekingDisabled() {
             return mNotificationPeeking;
         }
@@ -536,7 +531,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public boolean isRecentsDisabled() {
             return mRecents;
         }
@@ -552,7 +546,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public boolean isSearchDisabled() {
             return mSearch;
         }
@@ -610,7 +603,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public boolean areAllComponentsEnabled() {
             return !mStatusBarExpansion && !mNavigateHome && !mNotificationPeeking && !mRecents
                     && !mSearch && !mSystemIcons && !mClock && !mNotificationIcons;
diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java
index e9683a4..d10e33f 100644
--- a/core/java/android/app/SystemServiceRegistry.java
+++ b/core/java/android/app/SystemServiceRegistry.java
@@ -131,6 +131,8 @@
 import android.net.lowpan.LowpanManager;
 import android.net.nsd.INsdManager;
 import android.net.nsd.NsdManager;
+import android.net.vcn.IVcnManagementService;
+import android.net.vcn.VcnManager;
 import android.net.wifi.WifiFrameworkInitializer;
 import android.net.wifi.nl80211.WifiNl80211Manager;
 import android.nfc.NfcManager;
@@ -371,6 +373,14 @@
                         ctx, () -> ServiceManager.getService(Context.TETHERING_SERVICE));
             }});
 
+        registerService(Context.VCN_MANAGEMENT_SERVICE, VcnManager.class,
+                new CachedServiceFetcher<VcnManager>() {
+            @Override
+            public VcnManager createService(ContextImpl ctx) throws ServiceNotFoundException {
+                IBinder b = ServiceManager.getService(Context.VCN_MANAGEMENT_SERVICE);
+                IVcnManagementService service = IVcnManagementService.Stub.asInterface(b);
+                return new VcnManager(ctx, service);
+            }});
 
         registerService(Context.IPSEC_SERVICE, IpSecManager.class,
                 new CachedServiceFetcher<IpSecManager>() {
@@ -1386,6 +1396,7 @@
                 case Context.CONTENT_CAPTURE_MANAGER_SERVICE:
                 case Context.APP_PREDICTION_SERVICE:
                 case Context.INCREMENTAL_SERVICE:
+                case Context.ETHERNET_SERVICE:
                     return null;
             }
             Slog.wtf(TAG, "Manager wrapper not available: " + name);
diff --git a/core/java/android/app/TaskInfo.java b/core/java/android/app/TaskInfo.java
index f3f00e5..5fcf495 100644
--- a/core/java/android/app/TaskInfo.java
+++ b/core/java/android/app/TaskInfo.java
@@ -24,6 +24,7 @@
 import android.content.Intent;
 import android.content.pm.ActivityInfo;
 import android.content.res.Configuration;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.RemoteException;
 import android.util.Log;
@@ -39,7 +40,7 @@
      * The id of the user the task was running as.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int userId;
 
     /**
diff --git a/core/java/android/app/TaskStackListener.java b/core/java/android/app/TaskStackListener.java
index f137d68..4f934f1 100644
--- a/core/java/android/app/TaskStackListener.java
+++ b/core/java/android/app/TaskStackListener.java
@@ -21,6 +21,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.ComponentName;
 import android.os.Binder;
+import android.os.Build;
 import android.os.IBinder;
 import android.os.RemoteException;
 
@@ -37,35 +38,35 @@
     }
 
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onTaskStackChanged() throws RemoteException {
     }
 
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onActivityPinned(String packageName, int userId, int taskId, int stackId)
             throws RemoteException {
     }
 
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onActivityUnpinned() throws RemoteException {
     }
 
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onActivityRestartAttempt(RunningTaskInfo task, boolean homeTaskVisible,
             boolean clearedTask, boolean wasVisible) throws RemoteException {
     }
 
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onActivityForcedResizable(String packageName, int taskId, int reason)
             throws RemoteException {
     }
 
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onActivityDismissingDockedStack() throws RemoteException {
     }
 
@@ -80,12 +81,12 @@
      *         #onActivityLaunchOnSecondaryDisplayFailed(RunningTaskInfo, int)}
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onActivityLaunchOnSecondaryDisplayFailed() throws RemoteException {
     }
 
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onActivityLaunchOnSecondaryDisplayRerouted(RunningTaskInfo taskInfo,
             int requestedDisplayId) throws RemoteException {
     }
@@ -95,7 +96,7 @@
     }
 
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onTaskRemoved(int taskId) throws RemoteException {
     }
 
@@ -109,7 +110,7 @@
      * @deprecated see {@link #onTaskMovedToFront(RunningTaskInfo)}
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onTaskMovedToFront(int taskId) throws RemoteException {
     }
 
@@ -141,18 +142,18 @@
     }
 
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onActivityRequestedOrientationChanged(int taskId, int requestedOrientation)
             throws RemoteException {
     }
 
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onTaskProfileLocked(int taskId, int userId) throws RemoteException {
     }
 
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onTaskSnapshotChanged(int taskId, TaskSnapshot snapshot) throws RemoteException {
         if (Binder.getCallingPid() != android.os.Process.myPid()
                 && snapshot != null && snapshot.getSnapshot() != null) {
@@ -162,7 +163,7 @@
     }
 
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onSizeCompatModeActivityChanged(int displayId, IBinder activityToken)
             throws RemoteException {
     }
diff --git a/core/java/android/app/UiAutomation.java b/core/java/android/app/UiAutomation.java
index a9a06da..e0951bf 100644
--- a/core/java/android/app/UiAutomation.java
+++ b/core/java/android/app/UiAutomation.java
@@ -22,6 +22,7 @@
 import android.accessibilityservice.AccessibilityServiceInfo;
 import android.accessibilityservice.IAccessibilityServiceClient;
 import android.accessibilityservice.IAccessibilityServiceConnection;
+import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.TestApi;
@@ -60,6 +61,8 @@
 import libcore.io.IoUtils;
 
 import java.io.IOException;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.TimeoutException;
@@ -116,6 +119,28 @@
     /** Rotation constant: Freeze rotation to 270 degrees . */
     public static final int ROTATION_FREEZE_270 = Surface.ROTATION_270;
 
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(value = {
+            ConnectionState.DISCONNECTED,
+            ConnectionState.CONNECTING,
+            ConnectionState.CONNECTED,
+            ConnectionState.FAILED
+    })
+    private @interface ConnectionState {
+        /** The initial state before {@link #connect} or after {@link #disconnect} is called. */
+        int DISCONNECTED = 0;
+        /**
+         * The temporary state after {@link #connect} is called. Will transition to
+         * {@link #CONNECTED} or {@link #FAILED} depending on whether {@link #connect} succeeds or
+         * not.
+         */
+        int CONNECTING = 1;
+        /** The state when {@link #connect} has succeeded. */
+        int CONNECTED = 2;
+        /** The state when {@link #connect} has failed. */
+        int FAILED = 3;
+    }
+
     /**
      * UiAutomation supresses accessibility services by default. This flag specifies that
      * existing accessibility services should continue to run, and that new ones may start.
@@ -144,12 +169,14 @@
 
     private long mLastEventTimeMillis;
 
-    private boolean mIsConnecting;
+    private @ConnectionState int mConnectionState = ConnectionState.DISCONNECTED;
 
     private boolean mIsDestroyed;
 
     private int mFlags;
 
+    private int mGenerationId = 0;
+
     /**
      * Listener for observing the {@link AccessibilityEvent} stream.
      */
@@ -210,32 +237,55 @@
     }
 
     /**
-     * Connects this UiAutomation to the accessibility introspection APIs with default flags.
+     * Connects this UiAutomation to the accessibility introspection APIs with default flags
+     * and default timeout.
      *
      * @hide
      */
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
     public void connect() {
-        connect(0);
+        try {
+            connectWithTimeout(0, CONNECT_TIMEOUT_MILLIS);
+        } catch (TimeoutException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * Connects this UiAutomation to the accessibility introspection APIs with default timeout.
+     *
+     * @hide
+     */
+    public void connect(int flags) {
+        try {
+            connectWithTimeout(flags, CONNECT_TIMEOUT_MILLIS);
+        } catch (TimeoutException e) {
+            throw new RuntimeException(e);
+        }
     }
 
     /**
      * Connects this UiAutomation to the accessibility introspection APIs.
      *
      * @param flags Any flags to apply to the automation as it gets connected
+     * @param timeoutMillis The wait timeout in milliseconds
+     *
+     * @throws TimeoutException If not connected within the timeout
      *
      * @hide
      */
-    public void connect(int flags) {
+    public void connectWithTimeout(int flags, long timeoutMillis) throws TimeoutException {
         synchronized (mLock) {
             throwIfConnectedLocked();
-            if (mIsConnecting) {
+            if (mConnectionState == ConnectionState.CONNECTING) {
                 return;
             }
-            mIsConnecting = true;
+            mConnectionState = ConnectionState.CONNECTING;
             mRemoteCallbackThread = new HandlerThread("UiAutomation");
             mRemoteCallbackThread.start();
-            mClient = new IAccessibilityServiceClientImpl(mRemoteCallbackThread.getLooper());
+            // Increment the generation since we are about to interact with a new client
+            mClient = new IAccessibilityServiceClientImpl(
+                    mRemoteCallbackThread.getLooper(), ++mGenerationId);
         }
 
         try {
@@ -248,24 +298,21 @@
 
         synchronized (mLock) {
             final long startTimeMillis = SystemClock.uptimeMillis();
-            try {
-                while (true) {
-                    if (isConnectedLocked()) {
-                        break;
-                    }
-                    final long elapsedTimeMillis = SystemClock.uptimeMillis() - startTimeMillis;
-                    final long remainingTimeMillis = CONNECT_TIMEOUT_MILLIS - elapsedTimeMillis;
-                    if (remainingTimeMillis <= 0) {
-                        throw new RuntimeException("Error while connecting " + this);
-                    }
-                    try {
-                        mLock.wait(remainingTimeMillis);
-                    } catch (InterruptedException ie) {
-                        /* ignore */
-                    }
+            while (true) {
+                if (mConnectionState == ConnectionState.CONNECTED) {
+                    break;
                 }
-            } finally {
-                mIsConnecting = false;
+                final long elapsedTimeMillis = SystemClock.uptimeMillis() - startTimeMillis;
+                final long remainingTimeMillis = timeoutMillis - elapsedTimeMillis;
+                if (remainingTimeMillis <= 0) {
+                    mConnectionState = ConnectionState.FAILED;
+                    throw new TimeoutException("Timeout while connecting " + this);
+                }
+                try {
+                    mLock.wait(remainingTimeMillis);
+                } catch (InterruptedException ie) {
+                    /* ignore */
+                }
             }
         }
     }
@@ -289,12 +336,17 @@
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
     public void disconnect() {
         synchronized (mLock) {
-            if (mIsConnecting) {
+            if (mConnectionState == ConnectionState.CONNECTING) {
                 throw new IllegalStateException(
                         "Cannot call disconnect() while connecting " + this);
             }
-            throwIfNotConnectedLocked();
+            if (mConnectionState == ConnectionState.DISCONNECTED) {
+                return;
+            }
+            mConnectionState = ConnectionState.DISCONNECTED;
             mConnectionId = CONNECTION_ID_UNDEFINED;
+            // Increment the generation so we no longer interact with the existing client
+            ++mGenerationId;
         }
         try {
             // Calling out without a lock held.
@@ -1224,18 +1276,14 @@
         return stringBuilder.toString();
     }
 
-    private boolean isConnectedLocked() {
-        return mConnectionId != CONNECTION_ID_UNDEFINED;
-    }
-
     private void throwIfConnectedLocked() {
-        if (mConnectionId != CONNECTION_ID_UNDEFINED) {
-            throw new IllegalStateException("UiAutomation not connected, " + this);
+        if (mConnectionState == ConnectionState.CONNECTED) {
+            throw new IllegalStateException("UiAutomation connected, " + this);
         }
     }
 
     private void throwIfNotConnectedLocked() {
-        if (!isConnectedLocked()) {
+        if (mConnectionState != ConnectionState.CONNECTED) {
             throw new IllegalStateException("UiAutomation not connected, " + this);
         }
     }
@@ -1252,11 +1300,25 @@
 
     private class IAccessibilityServiceClientImpl extends IAccessibilityServiceClientWrapper {
 
-        public IAccessibilityServiceClientImpl(Looper looper) {
+        public IAccessibilityServiceClientImpl(Looper looper, int generationId) {
             super(null, looper, new Callbacks() {
+                private final int mGenerationId = generationId;
+                /**
+                 * True if UiAutomation doesn't interact with this client anymore.
+                 * Used by methods below to stop sending notifications or changing members
+                 * of {@link UiAutomation}.
+                 */
+                private boolean isGenerationChangedLocked() {
+                    return mGenerationId != UiAutomation.this.mGenerationId;
+                }
+
                 @Override
                 public void init(int connectionId, IBinder windowToken) {
                     synchronized (mLock) {
+                        if (isGenerationChangedLocked()) {
+                            return;
+                        }
+                        mConnectionState = ConnectionState.CONNECTED;
                         mConnectionId = connectionId;
                         mLock.notifyAll();
                     }
@@ -1290,6 +1352,9 @@
                 public void onAccessibilityEvent(AccessibilityEvent event) {
                     final OnAccessibilityEventListener listener;
                     synchronized (mLock) {
+                        if (isGenerationChangedLocked()) {
+                            return;
+                        }
                         mLastEventTimeMillis = event.getEventTime();
                         if (mWaitingForEventDelivery) {
                             mEventQueue.add(AccessibilityEvent.obtain(event));
diff --git a/core/java/android/app/UiAutomationConnection.java b/core/java/android/app/UiAutomationConnection.java
index ce51dba..d7e442f 100644
--- a/core/java/android/app/UiAutomationConnection.java
+++ b/core/java/android/app/UiAutomationConnection.java
@@ -25,6 +25,7 @@
 import android.graphics.Rect;
 import android.hardware.input.InputManager;
 import android.os.Binder;
+import android.os.Build;
 import android.os.IBinder;
 import android.os.ParcelFileDescriptor;
 import android.os.Process;
@@ -88,7 +89,7 @@
 
     private int mOwningUid;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public UiAutomationConnection() {
     }
 
diff --git a/core/java/android/app/UiModeManager.java b/core/java/android/app/UiModeManager.java
index 7c6eff1..558e222 100644
--- a/core/java/android/app/UiModeManager.java
+++ b/core/java/android/app/UiModeManager.java
@@ -314,7 +314,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(android.Manifest.permission.ENTER_CAR_MODE_PRIORITIZED)
     public void enableCarMode(@IntRange(from = 0) int priority, @EnableCarMode int flags) {
         if (mService != null) {
diff --git a/core/java/android/app/VrManager.java b/core/java/android/app/VrManager.java
index 08a210b..42b4c5c 100644
--- a/core/java/android/app/VrManager.java
+++ b/core/java/android/app/VrManager.java
@@ -9,6 +9,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.ComponentName;
 import android.content.Context;
+import android.os.Build;
 import android.os.RemoteException;
 import android.service.vr.IPersistentVrStateCallbacks;
 import android.service.vr.IVrManager;
@@ -51,7 +52,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final IVrManager mService;
     private Map<VrStateCallback, CallbackEntry> mCallbackMap = new ArrayMap<>();
 
diff --git a/core/java/android/app/WallpaperManager.java b/core/java/android/app/WallpaperManager.java
index c5d343d..95f1240 100644
--- a/core/java/android/app/WallpaperManager.java
+++ b/core/java/android/app/WallpaperManager.java
@@ -1765,7 +1765,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     @RequiresPermission(android.Manifest.permission.SET_WALLPAPER_COMPONENT)
     public boolean setWallpaperComponent(ComponentName name) {
@@ -1977,7 +1976,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static InputStream openDefaultWallpaper(Context context, @SetWallpaperFlags int which) {
         final String whichProp;
         final int defaultResId;
diff --git a/core/java/android/app/admin/DeviceAdminInfo.java b/core/java/android/app/admin/DeviceAdminInfo.java
index a2f4414..25e795a 100644
--- a/core/java/android/app/admin/DeviceAdminInfo.java
+++ b/core/java/android/app/admin/DeviceAdminInfo.java
@@ -483,7 +483,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ArrayList<PolicyInfo> getUsedPolicies() {
         ArrayList<PolicyInfo> res = new ArrayList<PolicyInfo>();
         for (int i=0; i<sPoliciesDisplayOrder.size(); i++) {
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index 1fce990e..6edc8ea 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -1396,7 +1396,7 @@
      * sent to the parent user.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED
             = "android.app.action.DEVICE_POLICY_MANAGER_STATE_CHANGED";
 
@@ -1465,7 +1465,7 @@
      * @see #createAdminSupportIntent(String)
      * @hide
      */
-    @TestApi @SystemApi
+    @SystemApi
     public static final String EXTRA_RESTRICTION = "android.app.extra.RESTRICTION";
 
     /**
@@ -2688,13 +2688,11 @@
      * </ul>
      */
     @SystemApi
-    @TestApi
     public static final String ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_ALLOWED =
             "android.account.DEVICE_OR_PROFILE_OWNER_ALLOWED";
 
     /** @hide See {@link #ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_ALLOWED} */
     @SystemApi
-    @TestApi
     public static final String ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_DISALLOWED =
             "android.account.DEVICE_OR_PROFILE_OWNER_DISALLOWED";
 
@@ -4124,7 +4122,7 @@
     }
 
     /** @hide per-user version */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public long getMaximumTimeToLock(@Nullable ComponentName admin, int userHandle) {
         if (mService != null) {
             try {
@@ -4206,7 +4204,7 @@
     }
 
     /** @hide per-user version */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @RequiresFeature(PackageManager.FEATURE_SECURE_LOCK_SCREEN)
     public long getRequiredStrongAuthTimeout(@Nullable ComponentName admin, @UserIdInt int userId) {
         if (mService != null) {
@@ -4508,7 +4506,7 @@
      *            of the device admin that sets the proxy.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public @Nullable ComponentName setGlobalProxy(@NonNull ComponentName admin, Proxy proxySpec,
             List<String> exclusionList ) {
         throwIfParentInstance("setGlobalProxy");
@@ -5718,8 +5716,8 @@
      * System apps can always bypass VPN.
      * <p> Note that the system doesn't update the allowlist when packages are installed or
      * uninstalled, the admin app must call this method to keep the list up to date.
-     * <p> When {@code lockdownEnabled} is false {@code lockdownWhitelist} is ignored . When
-     * {@code lockdownEnabled} is {@code true} and {@code lockdownWhitelist} is {@code null} or
+     * <p> When {@code lockdownEnabled} is false {@code lockdownAllowlist} is ignored . When
+     * {@code lockdownEnabled} is {@code true} and {@code lockdownAllowlist} is {@code null} or
      * empty, only system apps can bypass VPN.
      * <p> Setting always-on VPN package to {@code null} or using
      * {@link #setAlwaysOnVpnPackage(ComponentName, String, boolean)} clears lockdown allowlist.
@@ -5728,24 +5726,24 @@
      *         to remove an existing always-on VPN configuration
      * @param lockdownEnabled {@code true} to disallow networking when the VPN is not connected or
      *         {@code false} otherwise. This has no effect when clearing.
-     * @param lockdownWhitelist Packages that will be able to access the network directly when VPN
+     * @param lockdownAllowlist Packages that will be able to access the network directly when VPN
      *         is in lockdown mode but not connected. Has no effect when clearing.
      * @throws SecurityException if {@code admin} is not a device or a profile
      *         owner.
      * @throws NameNotFoundException if {@code vpnPackage} or one of
-     *         {@code lockdownWhitelist} is not installed.
+     *         {@code lockdownAllowlist} is not installed.
      * @throws UnsupportedOperationException if {@code vpnPackage} exists but does
      *         not support being set as always-on, or if always-on VPN is not
      *         available.
      */
     public void setAlwaysOnVpnPackage(@NonNull ComponentName admin, @Nullable String vpnPackage,
-            boolean lockdownEnabled, @Nullable Set<String> lockdownWhitelist)
+            boolean lockdownEnabled, @Nullable Set<String> lockdownAllowlist)
             throws NameNotFoundException {
         throwIfParentInstance("setAlwaysOnVpnPackage");
         if (mService != null) {
             try {
                 mService.setAlwaysOnVpnPackage(admin, vpnPackage, lockdownEnabled,
-                        lockdownWhitelist == null ? null : new ArrayList<>(lockdownWhitelist));
+                        lockdownAllowlist == null ? null : new ArrayList<>(lockdownAllowlist));
             } catch (ServiceSpecificException e) {
                 switch (e.errorCode) {
                     case ERROR_VPN_PACKAGE_NOT_FOUND:
@@ -5820,9 +5818,9 @@
         throwIfParentInstance("getAlwaysOnVpnLockdownWhitelist");
         if (mService != null) {
             try {
-                final List<String> whitelist =
-                        mService.getAlwaysOnVpnLockdownWhitelist(admin);
-                return whitelist == null ? null : new HashSet<>(whitelist);
+                final List<String> allowlist =
+                        mService.getAlwaysOnVpnLockdownAllowlist(admin);
+                return allowlist == null ? null : new HashSet<>(allowlist);
             } catch (RemoteException e) {
                 throw e.rethrowFromSystemServer();
             }
@@ -6321,7 +6319,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setActiveAdmin(@NonNull ComponentName policyReceiver, boolean refreshing,
             int userHandle) {
         if (mService != null) {
@@ -6682,8 +6680,7 @@
      * @hide
      */
     @SystemApi
-    @TestApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public boolean isDeviceManaged() {
         try {
             return mService.hasDeviceOwner();
@@ -7036,7 +7033,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public @Nullable ComponentName getProfileOwnerAsUser(final int userId) {
         if (mService != null) {
             try {
@@ -7451,7 +7448,7 @@
     }
 
     /** @hide per-user version */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @RequiresFeature(PackageManager.FEATURE_SECURE_LOCK_SCREEN)
     public @Nullable List<PersistableBundle> getTrustAgentConfiguration(
             @Nullable ComponentName admin, @NonNull ComponentName agent, int userHandle) {
@@ -10395,8 +10392,7 @@
      * @hide
      */
     @SystemApi
-    @TestApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public @Nullable CharSequence getDeviceOwnerOrganizationName() {
         try {
             return mService.getDeviceOwnerOrganizationName();
@@ -10641,7 +10637,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void throwIfParentInstance(String functionName) {
         if (mParentInstance) {
             throw new SecurityException(functionName + " cannot be called on the parent instance");
diff --git a/core/java/android/app/admin/DevicePolicyManagerInternal.java b/core/java/android/app/admin/DevicePolicyManagerInternal.java
index 19242ba..ffa537e 100644
--- a/core/java/android/app/admin/DevicePolicyManagerInternal.java
+++ b/core/java/android/app/admin/DevicePolicyManagerInternal.java
@@ -88,6 +88,26 @@
     public abstract boolean isActiveAdminWithPolicy(int uid, int reqPolicy);
 
     /**
+     * Checks if an app with given uid is an active device owner of its user.
+     *
+     * <p>This takes the DPMS lock.  DO NOT call from PM/UM/AM with their lock held.
+     *
+     * @param uid App uid.
+     * @return true if the uid is an active device owner.
+     */
+    public abstract boolean isActiveDeviceOwner(int uid);
+
+    /**
+     * Checks if an app with given uid is an active profile owner of its user.
+     *
+     * <p>This takes the DPMS lock.  DO NOT call from PM/UM/AM with their lock held.
+     *
+     * @param uid App uid.
+     * @return true if the uid is an active profile owner.
+     */
+    public abstract boolean isActiveProfileOwner(int uid);
+
+    /**
      * Checks if an app with given uid is the active supervision admin.
      *
      * <p>This takes the DPMS lock. DO NOT call from PM/UM/AM with their lock held.
diff --git a/core/java/android/app/admin/FreezePeriod.java b/core/java/android/app/admin/FreezePeriod.java
index 657f017..eb6efec 100644
--- a/core/java/android/app/admin/FreezePeriod.java
+++ b/core/java/android/app/admin/FreezePeriod.java
@@ -39,8 +39,8 @@
 public class FreezePeriod {
     private static final String TAG = "FreezePeriod";
 
-    private static final int DUMMY_YEAR = 2001;
-    static final int DAYS_IN_YEAR = 365; // 365 since DUMMY_YEAR is not a leap year
+    private static final int SENTINEL_YEAR = 2001;
+    static final int DAYS_IN_YEAR = 365; // 365 since SENTINEL_YEAR is not a leap year
 
     private final MonthDay mStart;
     private final MonthDay mEnd;
@@ -60,9 +60,9 @@
      */
     public FreezePeriod(MonthDay start, MonthDay end) {
         mStart = start;
-        mStartDay = mStart.atYear(DUMMY_YEAR).getDayOfYear();
+        mStartDay = mStart.atYear(SENTINEL_YEAR).getDayOfYear();
         mEnd = end;
-        mEndDay = mEnd.atYear(DUMMY_YEAR).getDayOfYear();
+        mEndDay = mEnd.atYear(SENTINEL_YEAR).getDayOfYear();
     }
 
     /**
@@ -166,9 +166,9 @@
                 endYearAdjustment = 1;
             }
         }
-        final LocalDate startDate = LocalDate.ofYearDay(DUMMY_YEAR, mStartDay).withYear(
+        final LocalDate startDate = LocalDate.ofYearDay(SENTINEL_YEAR, mStartDay).withYear(
                 now.getYear() + startYearAdjustment);
-        final LocalDate endDate = LocalDate.ofYearDay(DUMMY_YEAR, mEndDay).withYear(
+        final LocalDate endDate = LocalDate.ofYearDay(SENTINEL_YEAR, mEndDay).withYear(
                 now.getYear() + endYearAdjustment);
         return new Pair<>(startDate, endDate);
     }
@@ -176,13 +176,13 @@
     @Override
     public String toString() {
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM dd");
-        return LocalDate.ofYearDay(DUMMY_YEAR, mStartDay).format(formatter) + " - "
-                + LocalDate.ofYearDay(DUMMY_YEAR, mEndDay).format(formatter);
+        return LocalDate.ofYearDay(SENTINEL_YEAR, mStartDay).format(formatter) + " - "
+                + LocalDate.ofYearDay(SENTINEL_YEAR, mEndDay).format(formatter);
     }
 
     /** @hide */
     private static MonthDay dayOfYearToMonthDay(int dayOfYear) {
-        LocalDate date = LocalDate.ofYearDay(DUMMY_YEAR, dayOfYear);
+        LocalDate date = LocalDate.ofYearDay(SENTINEL_YEAR, dayOfYear);
         return MonthDay.of(date.getMonth(), date.getDayOfMonth());
     }
 
@@ -191,7 +191,7 @@
      * @hide
      */
     private static int dayOfYearDisregardLeapYear(LocalDate date) {
-        return date.withYear(DUMMY_YEAR).getDayOfYear();
+        return date.withYear(SENTINEL_YEAR).getDayOfYear();
     }
 
     /**
diff --git a/core/java/android/app/admin/IDevicePolicyManager.aidl b/core/java/android/app/admin/IDevicePolicyManager.aidl
index 9c6a274..3ad8b4b 100644
--- a/core/java/android/app/admin/IDevicePolicyManager.aidl
+++ b/core/java/android/app/admin/IDevicePolicyManager.aidl
@@ -197,12 +197,12 @@
     void setCertInstallerPackage(in ComponentName who, String installerPackage);
     String getCertInstallerPackage(in ComponentName who);
 
-    boolean setAlwaysOnVpnPackage(in ComponentName who, String vpnPackage, boolean lockdown, in List<String> lockdownWhitelist);
+    boolean setAlwaysOnVpnPackage(in ComponentName who, String vpnPackage, boolean lockdown, in List<String> lockdownAllowlist);
     String getAlwaysOnVpnPackage(in ComponentName who);
     String getAlwaysOnVpnPackageForUser(int userHandle);
     boolean isAlwaysOnVpnLockdownEnabled(in ComponentName who);
     boolean isAlwaysOnVpnLockdownEnabledForUser(int userHandle);
-    List<String> getAlwaysOnVpnLockdownWhitelist(in ComponentName who);
+    List<String> getAlwaysOnVpnLockdownAllowlist(in ComponentName who);
 
     void addPersistentPreferredActivity(in ComponentName admin, in IntentFilter filter, in ComponentName activity);
     void clearPackagePersistentPreferredActivities(in ComponentName admin, String packageName);
diff --git a/core/java/android/app/admin/SecurityLog.java b/core/java/android/app/admin/SecurityLog.java
index fb7f573..3176272 100644
--- a/core/java/android/app/admin/SecurityLog.java
+++ b/core/java/android/app/admin/SecurityLog.java
@@ -20,6 +20,7 @@
 import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.ComponentName;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.SystemProperties;
@@ -523,7 +524,7 @@
          * Constructor used by native classes to generate SecurityEvent instances.
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         /* package */ SecurityEvent(byte[] data) {
             this(0, data);
         }
diff --git a/core/java/android/app/assist/AssistStructure.java b/core/java/android/app/assist/AssistStructure.java
index 22d8c87..3e6d299 100644
--- a/core/java/android/app/assist/AssistStructure.java
+++ b/core/java/android/app/assist/AssistStructure.java
@@ -3,7 +3,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.app.Activity;
 import android.content.ComponentName;
 import android.content.Context;
@@ -36,8 +35,6 @@
 import android.view.autofill.AutofillId;
 import android.view.autofill.AutofillValue;
 
-import com.android.internal.util.Preconditions;
-
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -724,7 +721,6 @@
         // COntent Capture.
         /** @hide */
         @SystemApi
-        @TestApi
         public ViewNode() {
         }
 
@@ -2236,7 +2232,7 @@
             ensureData();
         }
         Log.i(TAG, "Task id: " + mTaskId);
-        Log.i(TAG, "Activity: " + (mActivityComponent != null 
+        Log.i(TAG, "Activity: " + (mActivityComponent != null
                 ? mActivityComponent.flattenToShortString()
                 : null));
         Log.i(TAG, "Sanitize on write: " + mSanitizeOnWrite);
diff --git a/core/java/android/app/backup/BackupDataOutput.java b/core/java/android/app/backup/BackupDataOutput.java
index fb161d4..50d7cec0 100644
--- a/core/java/android/app/backup/BackupDataOutput.java
+++ b/core/java/android/app/backup/BackupDataOutput.java
@@ -18,6 +18,7 @@
 
 import android.annotation.SystemApi;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.ParcelFileDescriptor;
 
 import java.io.FileDescriptor;
@@ -68,7 +69,7 @@
     private final long mQuota;
     private final int mTransportFlags;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     long mBackupWriter;
 
     /**
diff --git a/core/java/android/app/backup/BackupManager.java b/core/java/android/app/backup/BackupManager.java
index 3bc043e..e199cbe 100644
--- a/core/java/android/app/backup/BackupManager.java
+++ b/core/java/android/app/backup/BackupManager.java
@@ -20,7 +20,6 @@
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.ComponentName;
 import android.content.Context;
@@ -848,7 +847,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(android.Manifest.permission.BACKUP)
     public Intent getConfigurationIntent(String transportName) {
         checkServiceBinder();
@@ -870,7 +868,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(android.Manifest.permission.BACKUP)
     public String getDestinationString(String transportName) {
         checkServiceBinder();
@@ -892,7 +889,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(android.Manifest.permission.BACKUP)
     public Intent getDataManagementIntent(String transportName) {
         checkServiceBinder();
@@ -918,7 +914,6 @@
      */
     @Deprecated
     @SystemApi
-    @TestApi
     @RequiresPermission(android.Manifest.permission.BACKUP)
     @Nullable
     public String getDataManagementLabel(@NonNull String transportName) {
@@ -935,7 +930,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(android.Manifest.permission.BACKUP)
     @Nullable
     public CharSequence getDataManagementIntentLabel(@NonNull String transportName) {
diff --git a/core/java/android/app/backup/FullBackup.java b/core/java/android/app/backup/FullBackup.java
index 587e883..c854aba 100644
--- a/core/java/android/app/backup/FullBackup.java
+++ b/core/java/android/app/backup/FullBackup.java
@@ -20,6 +20,7 @@
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.content.res.XmlResourceParser;
+import android.os.Build;
 import android.os.ParcelFileDescriptor;
 import android.os.Process;
 import android.os.storage.StorageManager;
@@ -91,7 +92,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     static public native int backupToTar(String packageName, String domain,
             String linkdomain, String rootpath, String path, FullBackupDataOutput output);
 
diff --git a/core/java/android/app/backup/FullBackupDataOutput.java b/core/java/android/app/backup/FullBackupDataOutput.java
index d8fa0f5..a47478c 100644
--- a/core/java/android/app/backup/FullBackupDataOutput.java
+++ b/core/java/android/app/backup/FullBackupDataOutput.java
@@ -1,6 +1,7 @@
 package android.app.backup;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.ParcelFileDescriptor;
 
 /**
@@ -77,7 +78,7 @@
     public BackupDataOutput getData() { return mData; }
 
     /** @hide - used for measurement pass */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void addSize(long size) {
         if (size > 0) {
             mSize += size;
diff --git a/core/java/android/app/backup/IBackupManager.aidl b/core/java/android/app/backup/IBackupManager.aidl
index 4940976..3380bd1 100644
--- a/core/java/android/app/backup/IBackupManager.aidl
+++ b/core/java/android/app/backup/IBackupManager.aidl
@@ -74,7 +74,7 @@
     /**
      * {@link android.app.backup.IBackupManager.clearBackupDataForUser} for the calling user id.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void clearBackupData(String transportName, String packageName);
 
     /**
@@ -157,7 +157,7 @@
     /**
      * {@link android.app.backup.IBackupManager.setBackupEnabledForUser} for the calling user id.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void setBackupEnabled(boolean isEnabled);
 
     /**
@@ -181,7 +181,7 @@
     /**
      * {@link android.app.backup.IBackupManager.setAutoRestoreForUser} for the calling user id.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void setAutoRestore(boolean doAutoRestore);
 
     /**
@@ -198,7 +198,7 @@
     /**
      * {@link android.app.backup.IBackupManager.isBackupEnabledForUser} for the calling user id.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean isBackupEnabled();
 
     /**
@@ -327,7 +327,7 @@
      * {@link android.app.backup.IBackupManager.acknowledgeFullBackupOrRestoreForUser} for the
      * calling user id.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void acknowledgeFullBackupOrRestore(int token, boolean allow,
             in String curPassword, in String encryptionPassword,
             IFullBackupRestoreObserver observer);
@@ -404,7 +404,7 @@
     /**
      * {@link android.app.backup.IBackupManager.listAllTransportsForUser} for the calling user id.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     String[] listAllTransports();
 
     /**
@@ -442,7 +442,7 @@
      * {@link android.app.backup.IBackupManager.selectBackupTransportForUser} for the calling user
      * id.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     String selectBackupTransport(String transport);
 
     /**
@@ -593,7 +593,7 @@
      * @param whichUser User handle of the defined user whose backup active state
      *     is being queried.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean isBackupServiceActive(int whichUser);
 
     /**
diff --git a/core/java/android/app/backup/OWNERS b/core/java/android/app/backup/OWNERS
index 9c21e8f..0f88811 100644
--- a/core/java/android/app/backup/OWNERS
+++ b/core/java/android/app/backup/OWNERS
@@ -1,9 +1,4 @@
-alsutton@google.com
-anniemeng@google.com
-brufino@google.com
-bryanmawhinney@google.com
-ctate@google.com
-jorlow@google.com
-nathch@google.com
-rthakohov@google.com
+# Bug component: 656484
+
+include platform/frameworks/base:/services/backup/OWNERS
 
diff --git a/core/java/android/app/prediction/AppPredictionContext.java b/core/java/android/app/prediction/AppPredictionContext.java
index d14238b..99fa869 100644
--- a/core/java/android/app/prediction/AppPredictionContext.java
+++ b/core/java/android/app/prediction/AppPredictionContext.java
@@ -19,7 +19,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.content.Context;
 import android.os.Bundle;
 import android.os.Parcel;
@@ -32,7 +31,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class AppPredictionContext implements Parcelable {
 
     private final int mPredictedTargetCount;
@@ -129,7 +127,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final class Builder {
 
         @NonNull
@@ -147,7 +144,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public Builder(@NonNull Context context) {
             mPackageName = context.getPackageName();
         }
diff --git a/core/java/android/app/prediction/AppPredictionManager.java b/core/java/android/app/prediction/AppPredictionManager.java
index ca22721..5da7aa9 100644
--- a/core/java/android/app/prediction/AppPredictionManager.java
+++ b/core/java/android/app/prediction/AppPredictionManager.java
@@ -17,7 +17,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.content.Context;
 
 import java.util.Objects;
@@ -28,7 +27,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class AppPredictionManager {
 
     private final Context mContext;
diff --git a/core/java/android/app/prediction/AppPredictionSessionId.java b/core/java/android/app/prediction/AppPredictionSessionId.java
index 876bafd..6277a7d 100644
--- a/core/java/android/app/prediction/AppPredictionSessionId.java
+++ b/core/java/android/app/prediction/AppPredictionSessionId.java
@@ -18,7 +18,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -30,7 +29,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class AppPredictionSessionId implements Parcelable {
 
     private final String mId;
diff --git a/core/java/android/app/prediction/AppPredictor.java b/core/java/android/app/prediction/AppPredictor.java
index 7f43640..4517c6d 100644
--- a/core/java/android/app/prediction/AppPredictor.java
+++ b/core/java/android/app/prediction/AppPredictor.java
@@ -70,7 +70,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class AppPredictor {
 
     private static final String TAG = AppPredictor.class.getSimpleName();
diff --git a/core/java/android/app/prediction/AppTarget.java b/core/java/android/app/prediction/AppTarget.java
index 14e32b83..fef9e70 100644
--- a/core/java/android/app/prediction/AppTarget.java
+++ b/core/java/android/app/prediction/AppTarget.java
@@ -19,7 +19,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.content.pm.ShortcutInfo;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -33,7 +32,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class AppTarget implements Parcelable {
 
     private final AppTargetId mId;
@@ -190,7 +188,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final class Builder {
 
         @NonNull
@@ -221,7 +218,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public Builder(@NonNull AppTargetId id, @NonNull String packageName,
                 @NonNull UserHandle user) {
             mId = Objects.requireNonNull(id);
@@ -235,7 +231,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public Builder(@NonNull AppTargetId id, @NonNull ShortcutInfo info) {
             mId = Objects.requireNonNull(id);
             mShortcutInfo = Objects.requireNonNull(info);
diff --git a/core/java/android/app/prediction/AppTargetEvent.java b/core/java/android/app/prediction/AppTargetEvent.java
index f519145..963e750e 100644
--- a/core/java/android/app/prediction/AppTargetEvent.java
+++ b/core/java/android/app/prediction/AppTargetEvent.java
@@ -19,7 +19,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -32,7 +31,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class AppTargetEvent implements Parcelable {
 
     /**
@@ -141,7 +139,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final class Builder {
         private AppTarget mTarget;
         private String mLocation;
diff --git a/core/java/android/app/prediction/AppTargetId.java b/core/java/android/app/prediction/AppTargetId.java
index 052fdc1..048e12c 100644
--- a/core/java/android/app/prediction/AppTargetId.java
+++ b/core/java/android/app/prediction/AppTargetId.java
@@ -18,7 +18,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -28,7 +27,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class AppTargetId implements Parcelable {
 
     @NonNull
@@ -40,7 +38,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public AppTargetId(@NonNull String id) {
         mId = id;
     }
diff --git a/core/java/android/app/role/OnRoleHoldersChangedListener.java b/core/java/android/app/role/OnRoleHoldersChangedListener.java
index d6f7679..5958deb 100644
--- a/core/java/android/app/role/OnRoleHoldersChangedListener.java
+++ b/core/java/android/app/role/OnRoleHoldersChangedListener.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.UserHandle;
 
 /**
@@ -27,7 +26,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public interface OnRoleHoldersChangedListener {
 
     /**
diff --git a/core/java/android/app/role/RoleManager.java b/core/java/android/app/role/RoleManager.java
index 253c73796..fccf5ab 100644
--- a/core/java/android/app/role/RoleManager.java
+++ b/core/java/android/app/role/RoleManager.java
@@ -24,7 +24,6 @@
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
-import android.annotation.TestApi;
 import android.annotation.UserIdInt;
 import android.content.Context;
 import android.content.Intent;
@@ -144,7 +143,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int MANAGE_HOLDERS_FLAG_DONT_KILL_APP = 1;
 
     /**
@@ -255,7 +253,6 @@
     @NonNull
     @RequiresPermission(Manifest.permission.MANAGE_ROLE_HOLDERS)
     @SystemApi
-    @TestApi
     public List<String> getRoleHolders(@NonNull String roleName) {
         return getRoleHoldersAsUser(roleName, Process.myUserHandle());
     }
@@ -281,7 +278,6 @@
     @NonNull
     @RequiresPermission(Manifest.permission.MANAGE_ROLE_HOLDERS)
     @SystemApi
-    @TestApi
     public List<String> getRoleHoldersAsUser(@NonNull String roleName, @NonNull UserHandle user) {
         Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
         Objects.requireNonNull(user, "user cannot be null");
@@ -315,7 +311,6 @@
      */
     @RequiresPermission(Manifest.permission.MANAGE_ROLE_HOLDERS)
     @SystemApi
-    @TestApi
     public void addRoleHolderAsUser(@NonNull String roleName, @NonNull String packageName,
             @ManageHoldersFlags int flags, @NonNull UserHandle user,
             @CallbackExecutor @NonNull Executor executor, @NonNull Consumer<Boolean> callback) {
@@ -354,7 +349,6 @@
      */
     @RequiresPermission(Manifest.permission.MANAGE_ROLE_HOLDERS)
     @SystemApi
-    @TestApi
     public void removeRoleHolderAsUser(@NonNull String roleName, @NonNull String packageName,
             @ManageHoldersFlags int flags, @NonNull UserHandle user,
             @CallbackExecutor @NonNull Executor executor, @NonNull Consumer<Boolean> callback) {
@@ -392,7 +386,6 @@
      */
     @RequiresPermission(Manifest.permission.MANAGE_ROLE_HOLDERS)
     @SystemApi
-    @TestApi
     public void clearRoleHoldersAsUser(@NonNull String roleName, @ManageHoldersFlags int flags,
             @NonNull UserHandle user, @CallbackExecutor @NonNull Executor executor,
             @NonNull Consumer<Boolean> callback) {
@@ -439,7 +432,6 @@
      */
     @RequiresPermission(Manifest.permission.OBSERVE_ROLE_HOLDERS)
     @SystemApi
-    @TestApi
     public void addOnRoleHoldersChangedListenerAsUser(@CallbackExecutor @NonNull Executor executor,
             @NonNull OnRoleHoldersChangedListener listener, @NonNull UserHandle user) {
         Objects.requireNonNull(executor, "executor cannot be null");
@@ -485,7 +477,6 @@
      */
     @RequiresPermission(Manifest.permission.OBSERVE_ROLE_HOLDERS)
     @SystemApi
-    @TestApi
     public void removeOnRoleHoldersChangedListenerAsUser(
             @NonNull OnRoleHoldersChangedListener listener, @NonNull UserHandle user) {
         Objects.requireNonNull(listener, "listener cannot be null");
@@ -527,7 +518,6 @@
      */
     @RequiresPermission(PERMISSION_MANAGE_ROLES_FROM_CONTROLLER)
     @SystemApi
-    @TestApi
     public void setRoleNamesFromController(@NonNull List<String> roleNames) {
         Objects.requireNonNull(roleNames, "roleNames cannot be null");
         try {
@@ -558,7 +548,6 @@
      */
     @RequiresPermission(PERMISSION_MANAGE_ROLES_FROM_CONTROLLER)
     @SystemApi
-    @TestApi
     public boolean addRoleHolderFromController(@NonNull String roleName,
             @NonNull String packageName) {
         Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
@@ -591,7 +580,6 @@
      */
     @RequiresPermission(PERMISSION_MANAGE_ROLES_FROM_CONTROLLER)
     @SystemApi
-    @TestApi
     public boolean removeRoleHolderFromController(@NonNull String roleName,
             @NonNull String packageName) {
         Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
@@ -614,7 +602,6 @@
     @NonNull
     @RequiresPermission(PERMISSION_MANAGE_ROLES_FROM_CONTROLLER)
     @SystemApi
-    @TestApi
     public List<String> getHeldRolesFromController(@NonNull String packageName) {
         Preconditions.checkStringNotEmpty(packageName, "packageName cannot be null or empty");
         try {
diff --git a/core/java/android/app/servertransaction/ActivityResultItem.java b/core/java/android/app/servertransaction/ActivityResultItem.java
index 4e743ca..25321ee 100644
--- a/core/java/android/app/servertransaction/ActivityResultItem.java
+++ b/core/java/android/app/servertransaction/ActivityResultItem.java
@@ -21,6 +21,7 @@
 import android.app.ClientTransactionHandler;
 import android.app.ResultInfo;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.IBinder;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -35,7 +36,7 @@
  */
 public class ActivityResultItem extends ClientTransactionItem {
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private List<ResultInfo> mResultInfoList;
 
     /* TODO(b/78294732)
diff --git a/core/java/android/app/servertransaction/NewIntentItem.java b/core/java/android/app/servertransaction/NewIntentItem.java
index 6a4996d..55cc4abd 100644
--- a/core/java/android/app/servertransaction/NewIntentItem.java
+++ b/core/java/android/app/servertransaction/NewIntentItem.java
@@ -21,6 +21,7 @@
 
 import android.app.ClientTransactionHandler;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.IBinder;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -37,7 +38,7 @@
  */
 public class NewIntentItem extends ClientTransactionItem {
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private List<ReferrerIntent> mIntents;
     private boolean mResume;
 
diff --git a/core/java/android/app/timedetector/ITimeDetectorService.aidl b/core/java/android/app/timedetector/ITimeDetectorService.aidl
index 5ead0c9..7bea5d7 100644
--- a/core/java/android/app/timedetector/ITimeDetectorService.aidl
+++ b/core/java/android/app/timedetector/ITimeDetectorService.aidl
@@ -34,7 +34,7 @@
  * {@hide}
  */
 interface ITimeDetectorService {
-  void suggestManualTime(in ManualTimeSuggestion timeSuggestion);
+  boolean suggestManualTime(in ManualTimeSuggestion timeSuggestion);
   void suggestNetworkTime(in NetworkTimeSuggestion timeSuggestion);
   void suggestTelephonyTime(in TelephonyTimeSuggestion timeSuggestion);
 }
diff --git a/core/java/android/app/timedetector/TimeDetector.java b/core/java/android/app/timedetector/TimeDetector.java
index 84ad495..162e182 100644
--- a/core/java/android/app/timedetector/TimeDetector.java
+++ b/core/java/android/app/timedetector/TimeDetector.java
@@ -53,12 +53,16 @@
     void suggestTelephonyTime(@NonNull TelephonyTimeSuggestion timeSuggestion);
 
     /**
-     * Suggests the user's manually entered current time to the detector.
+     * Suggests the current time, determined from the user's manually entered information, to
+     * the detector. Returns {@code false} if the suggestion was invalid, or the device
+     * configuration prevented the suggestion being used, {@code true} if the suggestion was
+     * accepted. A suggestion that is valid but does not change the time because it matches the
+     * current device time is considered accepted.
      *
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE)
-    void suggestManualTime(@NonNull ManualTimeSuggestion timeSuggestion);
+    boolean suggestManualTime(@NonNull ManualTimeSuggestion timeSuggestion);
 
     /**
      * Suggests the time according to a network time source like NTP.
diff --git a/core/java/android/app/timedetector/TimeDetectorImpl.java b/core/java/android/app/timedetector/TimeDetectorImpl.java
index c1d6667..ac02c89 100644
--- a/core/java/android/app/timedetector/TimeDetectorImpl.java
+++ b/core/java/android/app/timedetector/TimeDetectorImpl.java
@@ -52,12 +52,12 @@
     }
 
     @Override
-    public void suggestManualTime(@NonNull ManualTimeSuggestion timeSuggestion) {
+    public boolean suggestManualTime(@NonNull ManualTimeSuggestion timeSuggestion) {
         if (DEBUG) {
             Log.d(TAG, "suggestManualTime called: " + timeSuggestion);
         }
         try {
-            mITimeDetectorService.suggestManualTime(timeSuggestion);
+            return mITimeDetectorService.suggestManualTime(timeSuggestion);
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
diff --git a/core/java/android/app/timezonedetector/ITimeZoneDetectorService.aidl b/core/java/android/app/timezonedetector/ITimeZoneDetectorService.aidl
index b06f4b8..6d7b26d 100644
--- a/core/java/android/app/timezonedetector/ITimeZoneDetectorService.aidl
+++ b/core/java/android/app/timezonedetector/ITimeZoneDetectorService.aidl
@@ -33,6 +33,6 @@
  * {@hide}
  */
 interface ITimeZoneDetectorService {
-  void suggestManualTimeZone(in ManualTimeZoneSuggestion timeZoneSuggestion);
+  boolean suggestManualTimeZone(in ManualTimeZoneSuggestion timeZoneSuggestion);
   void suggestTelephonyTimeZone(in TelephonyTimeZoneSuggestion timeZoneSuggestion);
 }
diff --git a/core/java/android/app/timezonedetector/TimeZoneDetector.java b/core/java/android/app/timezonedetector/TimeZoneDetector.java
index 34a7586..b783684 100644
--- a/core/java/android/app/timezonedetector/TimeZoneDetector.java
+++ b/core/java/android/app/timezonedetector/TimeZoneDetector.java
@@ -41,13 +41,16 @@
     }
 
     /**
-     * Suggests the current time zone, determined using the user's manually entered information, to
-     * the detector. The detector may ignore the signal based on system settings.
+     * Suggests the current time zone, determined from the user's manually entered information, to
+     * the detector. Returns {@code false} if the suggestion was invalid, or the device
+     * configuration prevented the suggestion being used, {@code true} if the suggestion was
+     * accepted. A suggestion that is valid but does not change the time zone because it matches
+     * the current device time zone is considered accepted.
      *
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE)
-    void suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion timeZoneSuggestion);
+    boolean suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion timeZoneSuggestion);
 
     /**
      * Suggests the current time zone, determined using telephony signals, to the detector. The
diff --git a/core/java/android/app/timezonedetector/TimeZoneDetectorImpl.java b/core/java/android/app/timezonedetector/TimeZoneDetectorImpl.java
index 54cf1f3..3bd6b4b 100644
--- a/core/java/android/app/timezonedetector/TimeZoneDetectorImpl.java
+++ b/core/java/android/app/timezonedetector/TimeZoneDetectorImpl.java
@@ -40,12 +40,12 @@
     }
 
     @Override
-    public void suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion timeZoneSuggestion) {
+    public boolean suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion timeZoneSuggestion) {
         if (DEBUG) {
             Log.d(TAG, "suggestManualTimeZone called: " + timeZoneSuggestion);
         }
         try {
-            mITimeZoneDetectorService.suggestManualTimeZone(timeZoneSuggestion);
+            return mITimeZoneDetectorService.suggestManualTimeZone(timeZoneSuggestion);
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
diff --git a/core/java/android/app/usage/IUsageStatsManager.aidl b/core/java/android/app/usage/IUsageStatsManager.aidl
index ed6ba0c..2c1e951 100644
--- a/core/java/android/app/usage/IUsageStatsManager.aidl
+++ b/core/java/android/app/usage/IUsageStatsManager.aidl
@@ -28,10 +28,10 @@
  * {@hide}
  */
 interface IUsageStatsManager {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     ParceledListSlice queryUsageStats(int bucketType, long beginTime, long endTime,
             String callingPackage);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     ParceledListSlice queryConfigurationStats(int bucketType, long beginTime, long endTime,
             String callingPackage);
     ParceledListSlice queryEventStats(int bucketType, long beginTime, long endTime,
@@ -40,9 +40,9 @@
     UsageEvents queryEventsForPackage(long beginTime, long endTime, String callingPackage);
     UsageEvents queryEventsForUser(long beginTime, long endTime, int userId, String callingPackage);
     UsageEvents queryEventsForPackageForUser(long beginTime, long endTime, int userId, String pkg, String callingPackage);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void setAppInactive(String packageName, boolean inactive, int userId);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean isAppInactive(String packageName, int userId, String callingPackage);
     void onCarrierPrivilegedAppsChanged();
     void reportChooserSelection(String packageName, int userId, String contentType,
diff --git a/core/java/android/app/usage/NetworkStatsManager.java b/core/java/android/app/usage/NetworkStatsManager.java
index fc8248e..1ddfe0d 100644
--- a/core/java/android/app/usage/NetworkStatsManager.java
+++ b/core/java/android/app/usage/NetworkStatsManager.java
@@ -34,6 +34,7 @@
 import android.net.netstats.provider.INetworkStatsProviderCallback;
 import android.net.netstats.provider.NetworkStatsProvider;
 import android.os.Binder;
+import android.os.Build;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
@@ -129,7 +130,7 @@
     /**
      * {@hide}
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public NetworkStatsManager(Context context) throws ServiceNotFoundException {
         this(context, INetworkStatsService.Stub.asInterface(
                 ServiceManager.getServiceOrThrow(Context.NETWORK_STATS_SERVICE)));
@@ -153,7 +154,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @TestApi
     public void setPollForce(boolean pollForce) {
         if (pollForce) {
diff --git a/core/java/android/appwidget/AppWidgetHost.java b/core/java/android/appwidget/AppWidgetHost.java
index 467b2fb..565e4cd 100644
--- a/core/java/android/appwidget/AppWidgetHost.java
+++ b/core/java/android/appwidget/AppWidgetHost.java
@@ -25,6 +25,7 @@
 import android.content.IntentSender;
 import android.content.pm.PackageManager;
 import android.os.Binder;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
@@ -54,7 +55,7 @@
     static final int HANDLE_UPDATE = 1;
     static final int HANDLE_PROVIDER_CHANGED = 2;
     static final int HANDLE_PROVIDERS_CHANGED = 3;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     static final int HANDLE_VIEW_DATA_CHANGED = 4;
     static final int HANDLE_APP_WIDGET_REMOVED = 5;
 
@@ -173,7 +174,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public AppWidgetHost(Context context, int hostId, OnClickHandler handler, Looper looper) {
         mContextOpPackageName = context.getOpPackageName();
         mHostId = hostId;
diff --git a/core/java/android/appwidget/AppWidgetHostView.java b/core/java/android/appwidget/AppWidgetHostView.java
index 3fef92b..a3c3a0e 100644
--- a/core/java/android/appwidget/AppWidgetHostView.java
+++ b/core/java/android/appwidget/AppWidgetHostView.java
@@ -30,6 +30,7 @@
 import android.content.res.Resources;
 import android.graphics.Color;
 import android.graphics.Rect;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.CancellationSignal;
 import android.os.Parcelable;
@@ -286,7 +287,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void updateAppWidgetSize(Bundle newOptions, int minWidth, int minHeight, int maxWidth,
             int maxHeight, boolean ignorePadding) {
         if (newOptions == null) {
diff --git a/core/java/android/appwidget/AppWidgetManager.java b/core/java/android/appwidget/AppWidgetManager.java
index 009ec52..37093a1 100644
--- a/core/java/android/appwidget/AppWidgetManager.java
+++ b/core/java/android/appwidget/AppWidgetManager.java
@@ -34,6 +34,7 @@
 import android.content.pm.PackageManager;
 import android.content.pm.ParceledListSlice;
 import android.content.pm.ShortcutInfo;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.RemoteException;
@@ -943,7 +944,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void bindAppWidgetId(int appWidgetId, ComponentName provider, Bundle options) {
         if (mService == null) {
             return;
@@ -1114,7 +1115,7 @@
      * @see Context#getServiceDispatcher(ServiceConnection, Handler, int)
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean bindRemoteViewsService(Context context, int appWidgetId, Intent intent,
             IServiceConnection connection, @Context.BindServiceFlags int flags) {
         if (mService == null) {
diff --git a/core/java/android/bluetooth/BluetoothA2dp.java b/core/java/android/bluetooth/BluetoothA2dp.java
index 5374d6d..c0cb323 100644
--- a/core/java/android/bluetooth/BluetoothA2dp.java
+++ b/core/java/android/bluetooth/BluetoothA2dp.java
@@ -118,7 +118,7 @@
      * @hide
      */
     @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String ACTION_ACTIVE_DEVICE_CHANGED =
             "android.bluetooth.a2dp.profile.action.ACTIVE_DEVICE_CHANGED";
 
@@ -139,7 +139,7 @@
      * @hide
      */
     @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String ACTION_CODEC_CONFIG_CHANGED =
             "android.bluetooth.a2dp.profile.action.CODEC_CONFIG_CHANGED";
 
@@ -409,7 +409,7 @@
      * @hide
      */
     @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean setActiveDevice(@Nullable BluetoothDevice device) {
         if (DBG) log("setActiveDevice(" + device + ")");
         try {
@@ -433,7 +433,7 @@
      * is active
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @Nullable
     @RequiresPermission(Manifest.permission.BLUETOOTH)
     public BluetoothDevice getActiveDevice() {
@@ -651,7 +651,7 @@
      * @return the current codec status
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @Nullable
     @RequiresPermission(Manifest.permission.BLUETOOTH)
     public BluetoothCodecStatus getCodecStatus(@NonNull BluetoothDevice device) {
@@ -680,7 +680,7 @@
      * @param codecConfig the codec configuration preference
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @RequiresPermission(Manifest.permission.BLUETOOTH)
     public void setCodecConfigPreference(@NonNull BluetoothDevice device,
                                          @NonNull BluetoothCodecConfig codecConfig) {
@@ -710,7 +710,7 @@
      * active A2DP Bluetooth device.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @RequiresPermission(Manifest.permission.BLUETOOTH)
     public void enableOptionalCodecs(@NonNull BluetoothDevice device) {
         if (DBG) Log.d(TAG, "enableOptionalCodecs(" + device + ")");
@@ -725,7 +725,7 @@
      * active A2DP Bluetooth device.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @RequiresPermission(Manifest.permission.BLUETOOTH)
     public void disableOptionalCodecs(@NonNull BluetoothDevice device) {
         if (DBG) Log.d(TAG, "disableOptionalCodecs(" + device + ")");
@@ -766,7 +766,7 @@
      * OPTIONAL_CODECS_SUPPORTED.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
     @OptionalCodecsSupportStatus
     public int isOptionalCodecsSupported(@NonNull BluetoothDevice device) {
@@ -792,7 +792,7 @@
      * OPTIONAL_CODECS_PREF_DISABLED.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
     @OptionalCodecsPreferenceStatus
     public int isOptionalCodecsEnabled(@NonNull BluetoothDevice device) {
@@ -819,7 +819,7 @@
      * OPTIONAL_CODECS_PREF_DISABLED.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
     public void setOptionalCodecsEnabled(@NonNull BluetoothDevice device,
             @OptionalCodecsPreferenceStatus int value) {
diff --git a/core/java/android/bluetooth/BluetoothA2dpSink.java b/core/java/android/bluetooth/BluetoothA2dpSink.java
index 53f87e6..67f3d7b 100755
--- a/core/java/android/bluetooth/BluetoothA2dpSink.java
+++ b/core/java/android/bluetooth/BluetoothA2dpSink.java
@@ -24,6 +24,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.os.Binder;
+import android.os.Build;
 import android.os.IBinder;
 import android.os.RemoteException;
 import android.util.Log;
@@ -158,7 +159,7 @@
      * @return false on immediate error, true otherwise
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
     public boolean disconnect(BluetoothDevice device) {
         if (DBG) log("disconnect(" + device + ")");
diff --git a/core/java/android/bluetooth/BluetoothAdapter.java b/core/java/android/bluetooth/BluetoothAdapter.java
index 3c7d8fc..2dfbb3a 100644
--- a/core/java/android/bluetooth/BluetoothAdapter.java
+++ b/core/java/android/bluetooth/BluetoothAdapter.java
@@ -18,6 +18,7 @@
 package android.bluetooth;
 
 import android.Manifest;
+import android.annotation.CallbackExecutor;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -40,6 +41,7 @@
 import android.content.Context;
 import android.os.BatteryStats;
 import android.os.Binder;
+import android.os.Build;
 import android.os.IBinder;
 import android.os.ParcelUuid;
 import android.os.RemoteException;
@@ -686,6 +688,8 @@
     private final Map<LeScanCallback, ScanCallback> mLeScanClients;
     private static final Map<BluetoothDevice, List<Pair<OnMetadataChangedListener, Executor>>>
                 sMetadataListeners = new HashMap<>();
+    private final Map<BluetoothConnectionCallback, Executor>
+            mBluetoothConnectionCallbackExecutorMap = new HashMap<>();
 
     /**
      * Bluetooth metadata listener. Overrides the default BluetoothMetadataListener
@@ -1170,7 +1174,7 @@
      * @return true to indicate adapter shutdown has begun, or false on immediate error
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean disable(boolean persist) {
 
         try {
@@ -1219,7 +1223,7 @@
      * @return true to indicate that the config file was successfully cleared
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
     public boolean factoryReset() {
         try {
@@ -2529,7 +2533,7 @@
      * Create a listening, insecure RFCOMM Bluetooth socket with Service Record.
      * <p>The link key is not required to be authenticated, i.e the communication may be
      * vulnerable to Person In the Middle attacks. For Bluetooth 2.1 devices,
-     * the link will be encrypted, as encryption is mandartory.
+     * the link will be encrypted, as encryption is mandatory.
      * For legacy devices (pre Bluetooth 2.1 devices) the link will not
      * be encrypted. Use {@link #listenUsingRfcommWithServiceRecord}, if an
      * encrypted and authenticated communication channel is desired.
@@ -2568,7 +2572,7 @@
      * an input and output capability or just has the ability to display a numeric key,
      * a secure socket connection is not possible and this socket can be used.
      * Use {@link #listenUsingInsecureRfcommWithServiceRecord}, if encryption is not required.
-     * For Bluetooth 2.1 devices, the link will be encrypted, as encryption is mandartory.
+     * For Bluetooth 2.1 devices, the link will be encrypted, as encryption is mandatory.
      * For more details, refer to the Security Model section 5.2 (vol 3) of
      * Bluetooth Core Specification version 2.1 + EDR.
      * <p>Use {@link BluetoothServerSocket#accept} to retrieve incoming
@@ -2591,7 +2595,7 @@
      * permissions, or channel in use.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public BluetoothServerSocket listenUsingEncryptedRfcommWithServiceRecord(String name, UUID uuid)
             throws IOException {
         return createNewRfcommSocketAndRecord(name, uuid, false, true);
@@ -3538,6 +3542,133 @@
                 @Nullable byte[] value);
     }
 
+    private final IBluetoothConnectionCallback mConnectionCallback =
+            new IBluetoothConnectionCallback.Stub() {
+        @Override
+        public void onDeviceConnected(BluetoothDevice device) {
+            for (Map.Entry<BluetoothConnectionCallback, Executor> callbackExecutorEntry:
+                    mBluetoothConnectionCallbackExecutorMap.entrySet()) {
+                BluetoothConnectionCallback callback = callbackExecutorEntry.getKey();
+                Executor executor = callbackExecutorEntry.getValue();
+                executor.execute(() -> callback.onDeviceConnected(device));
+            }
+        }
+
+        @Override
+        public void onDeviceDisconnected(BluetoothDevice device) {
+            for (Map.Entry<BluetoothConnectionCallback, Executor> callbackExecutorEntry:
+                    mBluetoothConnectionCallbackExecutorMap.entrySet()) {
+                BluetoothConnectionCallback callback = callbackExecutorEntry.getKey();
+                Executor executor = callbackExecutorEntry.getValue();
+                executor.execute(() -> callback.onDeviceDisconnected(device));
+            }
+        }
+    };
+
+    /**
+     * Registers the BluetoothConnectionCallback to receive callback events when a bluetooth device
+     * (classic or low energy) is connected or disconnected.
+     *
+     * @param executor is the callback executor
+     * @param callback is the connection callback you wish to register
+     * @return true if the callback was registered successfully, false otherwise
+     * @throws IllegalArgumentException if the callback is already registered
+     * @hide
+     */
+    public boolean registerBluetoothConnectionCallback(@NonNull @CallbackExecutor Executor executor,
+            @NonNull BluetoothConnectionCallback callback) {
+        if (DBG) Log.d(TAG, "registerBluetoothConnectionCallback()");
+        if (callback == null) {
+            return false;
+        }
+
+        // If the callback map is empty, we register the service-to-app callback
+        if (mBluetoothConnectionCallbackExecutorMap.isEmpty()) {
+            try {
+                mServiceLock.readLock().lock();
+                if (mService != null) {
+                    if (!mService.registerBluetoothConnectionCallback(mConnectionCallback)) {
+                        return false;
+                    }
+                }
+            } catch (RemoteException e) {
+                Log.e(TAG, "", e);
+                mBluetoothConnectionCallbackExecutorMap.remove(callback);
+            } finally {
+                mServiceLock.readLock().unlock();
+            }
+        }
+
+        // Adds the passed in callback to our map of callbacks to executors
+        synchronized (mBluetoothConnectionCallbackExecutorMap) {
+            if (mBluetoothConnectionCallbackExecutorMap.containsKey(callback)) {
+                throw new IllegalArgumentException("This callback has already been registered");
+            }
+            mBluetoothConnectionCallbackExecutorMap.put(callback, executor);
+        }
+
+        return true;
+    }
+
+    /**
+     * Unregisters the BluetoothConnectionCallback that was previously registered by the application
+     *
+     * @param callback is the connection callback you wish to unregister
+     * @return true if the callback was unregistered successfully, false otherwise
+     * @hide
+     */
+    public boolean unregisterBluetoothConnectionCallback(
+            @NonNull BluetoothConnectionCallback callback) {
+        if (DBG) Log.d(TAG, "unregisterBluetoothConnectionCallback()");
+        if (callback == null) {
+            return false;
+        }
+
+        synchronized (mBluetoothConnectionCallbackExecutorMap) {
+            if (mBluetoothConnectionCallbackExecutorMap.remove(callback) != null) {
+                return false;
+            }
+        }
+
+        if (!mBluetoothConnectionCallbackExecutorMap.isEmpty()) {
+            return true;
+        }
+
+        // If the callback map is empty, we unregister the service-to-app callback
+        try {
+            mServiceLock.readLock().lock();
+            if (mService != null) {
+                return mService.unregisterBluetoothConnectionCallback(mConnectionCallback);
+            }
+        } catch (RemoteException e) {
+            Log.e(TAG, "", e);
+        } finally {
+            mServiceLock.readLock().unlock();
+        }
+
+        return false;
+    }
+
+    /**
+     * This abstract class is used to implement callbacks for when a bluetooth classic or Bluetooth
+     * Low Energy (BLE) device is either connected or disconnected.
+     *
+     * @hide
+     */
+    public abstract class BluetoothConnectionCallback {
+        /**
+         * Callback triggered when a bluetooth device (classic or BLE) is connected
+         * @param device is the connected bluetooth device
+         */
+        public void onDeviceConnected(BluetoothDevice device) {}
+
+        /**
+         * Callback triggered when a bluetooth device (classic or BLE) is disconnected
+         * @param device is the disconnected bluetooth device
+         */
+        public void onDeviceDisconnected(BluetoothDevice device) {}
+    }
+
     /**
      * Converts old constant of priority to the new for connection policy
      *
diff --git a/core/java/android/bluetooth/BluetoothCodecConfig.java b/core/java/android/bluetooth/BluetoothCodecConfig.java
index e07bc02..a52fc89 100644
--- a/core/java/android/bluetooth/BluetoothCodecConfig.java
+++ b/core/java/android/bluetooth/BluetoothCodecConfig.java
@@ -51,19 +51,25 @@
     @Retention(RetentionPolicy.SOURCE)
     public @interface SourceCodecType {}
 
+    @UnsupportedAppUsage
     public static final int SOURCE_CODEC_TYPE_SBC = 0;
 
+    @UnsupportedAppUsage
     public static final int SOURCE_CODEC_TYPE_AAC = 1;
 
+    @UnsupportedAppUsage
     public static final int SOURCE_CODEC_TYPE_APTX = 2;
 
+    @UnsupportedAppUsage
     public static final int SOURCE_CODEC_TYPE_APTX_HD = 3;
 
+    @UnsupportedAppUsage
     public static final int SOURCE_CODEC_TYPE_LDAC = 4;
 
+    @UnsupportedAppUsage
     public static final int SOURCE_CODEC_TYPE_MAX = 5;
 
-
+    @UnsupportedAppUsage
     public static final int SOURCE_CODEC_TYPE_INVALID = 1000 * 1000;
 
     /** @hide */
@@ -75,10 +81,13 @@
     @Retention(RetentionPolicy.SOURCE)
     public @interface CodecPriority {}
 
+    @UnsupportedAppUsage
     public static final int CODEC_PRIORITY_DISABLED = -1;
 
+    @UnsupportedAppUsage
     public static final int CODEC_PRIORITY_DEFAULT = 0;
 
+    @UnsupportedAppUsage
     public static final int CODEC_PRIORITY_HIGHEST = 1000 * 1000;
 
 
@@ -95,18 +104,25 @@
     @Retention(RetentionPolicy.SOURCE)
     public @interface SampleRate {}
 
+    @UnsupportedAppUsage
     public static final int SAMPLE_RATE_NONE = 0;
 
+    @UnsupportedAppUsage
     public static final int SAMPLE_RATE_44100 = 0x1 << 0;
 
+    @UnsupportedAppUsage
     public static final int SAMPLE_RATE_48000 = 0x1 << 1;
 
+    @UnsupportedAppUsage
     public static final int SAMPLE_RATE_88200 = 0x1 << 2;
 
+    @UnsupportedAppUsage
     public static final int SAMPLE_RATE_96000 = 0x1 << 3;
 
+    @UnsupportedAppUsage
     public static final int SAMPLE_RATE_176400 = 0x1 << 4;
 
+    @UnsupportedAppUsage
     public static final int SAMPLE_RATE_192000 = 0x1 << 5;
 
 
@@ -120,12 +136,16 @@
     @Retention(RetentionPolicy.SOURCE)
     public @interface BitsPerSample {}
 
+    @UnsupportedAppUsage
     public static final int BITS_PER_SAMPLE_NONE = 0;
 
+    @UnsupportedAppUsage
     public static final int BITS_PER_SAMPLE_16 = 0x1 << 0;
 
+    @UnsupportedAppUsage
     public static final int BITS_PER_SAMPLE_24 = 0x1 << 1;
 
+    @UnsupportedAppUsage
     public static final int BITS_PER_SAMPLE_32 = 0x1 << 2;
 
 
@@ -138,10 +158,13 @@
     @Retention(RetentionPolicy.SOURCE)
     public @interface ChannelMode {}
 
+    @UnsupportedAppUsage
     public static final int CHANNEL_MODE_NONE = 0;
 
+    @UnsupportedAppUsage
     public static final int CHANNEL_MODE_MONO = 0x1 << 0;
 
+    @UnsupportedAppUsage
     public static final int CHANNEL_MODE_STEREO = 0x1 << 1;
 
     private final @SourceCodecType int mCodecType;
@@ -154,6 +177,7 @@
     private final long mCodecSpecific3;
     private final long mCodecSpecific4;
 
+    @UnsupportedAppUsage
     public BluetoothCodecConfig(@SourceCodecType int codecType, @CodecPriority int codecPriority,
             @SampleRate int sampleRate, @BitsPerSample int bitsPerSample,
             @ChannelMode int channelMode, long codecSpecific1,
@@ -170,6 +194,7 @@
         mCodecSpecific4 = codecSpecific4;
     }
 
+    @UnsupportedAppUsage
     public BluetoothCodecConfig(@SourceCodecType int codecType) {
         mCodecType = codecType;
         mCodecPriority = BluetoothCodecConfig.CODEC_PRIORITY_DEFAULT;
@@ -391,6 +416,7 @@
      *
      * @return the codec type
      */
+    @UnsupportedAppUsage
     public @SourceCodecType int getCodecType() {
         return mCodecType;
     }
@@ -411,6 +437,7 @@
      *
      * @return the codec priority
      */
+    @UnsupportedAppUsage
     public @CodecPriority int getCodecPriority() {
         return mCodecPriority;
     }
@@ -441,6 +468,7 @@
      *
      * @return the codec sample rate
      */
+    @UnsupportedAppUsage
     public @SampleRate int getSampleRate() {
         return mSampleRate;
     }
@@ -455,6 +483,7 @@
      *
      * @return the codec bits per sample
      */
+    @UnsupportedAppUsage
     public @BitsPerSample int getBitsPerSample() {
         return mBitsPerSample;
     }
@@ -479,6 +508,7 @@
      *
      * @return a codec specific value1.
      */
+    @UnsupportedAppUsage
     public long getCodecSpecific1() {
         return mCodecSpecific1;
     }
diff --git a/core/java/android/bluetooth/BluetoothCodecStatus.java b/core/java/android/bluetooth/BluetoothCodecStatus.java
index 1e394b8..7b567b4 100644
--- a/core/java/android/bluetooth/BluetoothCodecStatus.java
+++ b/core/java/android/bluetooth/BluetoothCodecStatus.java
@@ -17,6 +17,7 @@
 package android.bluetooth;
 
 import android.annotation.Nullable;
+import android.compat.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -38,6 +39,7 @@
      * This extra represents the current codec status of the A2DP
      * profile.
      */
+    @UnsupportedAppUsage
     public static final String EXTRA_CODEC_STATUS =
             "android.bluetooth.extra.CODEC_STATUS";
 
@@ -196,6 +198,7 @@
      *
      * @return the current codec configuration
      */
+    @UnsupportedAppUsage
     public @Nullable BluetoothCodecConfig getCodecConfig() {
         return mCodecConfig;
     }
@@ -205,6 +208,7 @@
      *
      * @return an array with the codecs local capabilities
      */
+    @UnsupportedAppUsage
     public @Nullable BluetoothCodecConfig[] getCodecsLocalCapabilities() {
         return mCodecsLocalCapabilities;
     }
@@ -214,6 +218,7 @@
      *
      * @return an array with the codecs selectable capabilities
      */
+    @UnsupportedAppUsage
     public @Nullable BluetoothCodecConfig[] getCodecsSelectableCapabilities() {
         return mCodecsSelectableCapabilities;
     }
diff --git a/core/java/android/bluetooth/BluetoothDevice.java b/core/java/android/bluetooth/BluetoothDevice.java
index cf8cdd4..0f864a8 100644
--- a/core/java/android/bluetooth/BluetoothDevice.java
+++ b/core/java/android/bluetooth/BluetoothDevice.java
@@ -28,6 +28,7 @@
 import android.app.PropertyInvalidatedCache;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
+import android.os.Build;
 import android.os.Handler;
 import android.os.Parcel;
 import android.os.ParcelUuid;
@@ -349,7 +350,7 @@
 
     /** @hide */
     @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String ACTION_SDP_RECORD =
             "android.bluetooth.device.action.SDP_RECORD";
 
@@ -645,7 +646,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int UNBOND_REASON_AUTH_FAILED = 1;
 
     /**
@@ -654,7 +655,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int UNBOND_REASON_AUTH_REJECTED = 2;
 
     /**
@@ -669,7 +670,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int UNBOND_REASON_REMOTE_DEVICE_DOWN = 4;
 
     /**
@@ -677,7 +678,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int UNBOND_REASON_DISCOVERY_IN_PROGRESS = 5;
 
     /**
@@ -685,7 +686,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int UNBOND_REASON_AUTH_TIMEOUT = 6;
 
     /**
@@ -693,7 +694,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int UNBOND_REASON_REPEATED_ATTEMPTS = 7;
 
     /**
@@ -702,7 +703,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int UNBOND_REASON_REMOTE_AUTH_CANCELED = 8;
 
     /**
@@ -781,7 +782,7 @@
             "android.bluetooth.device.extra.SDP_RECORD";
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String EXTRA_SDP_SEARCH_STATUS =
             "android.bluetooth.device.extra.SDP_SEARCH_STATUS";
 
@@ -1102,7 +1103,7 @@
      * @return true on success, false on error
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @RequiresPermission(Manifest.permission.BLUETOOTH)
     public boolean setAlias(@NonNull String alias) {
         final IBluetooth service = sService;
@@ -1541,7 +1542,7 @@
      * @return true pin has been set false for error
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
     public boolean setPin(@NonNull String pin) {
         byte[] pinBytes = convertPinToBytes(pin);
@@ -2155,7 +2156,7 @@
      * operations.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public BluetoothGatt connectGatt(Context context, boolean autoConnect,
             BluetoothGattCallback callback, int transport,
             boolean opportunistic, int phy, Handler handler) {
diff --git a/core/java/android/bluetooth/BluetoothGatt.java b/core/java/android/bluetooth/BluetoothGatt.java
index c58b5d2..7a6ff79 100644
--- a/core/java/android/bluetooth/BluetoothGatt.java
+++ b/core/java/android/bluetooth/BluetoothGatt.java
@@ -58,9 +58,9 @@
     private int mConnState;
     private final Object mStateLock = new Object();
     private final Object mDeviceBusyLock = new Object();
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private Boolean mDeviceBusy = false;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mTransport;
     private int mPhy;
     private boolean mOpportunistic;
@@ -688,6 +688,31 @@
                         }
                     });
                 }
+
+                /**
+                 * Callback invoked when service changed event is received
+                 * @hide
+                 */
+                @Override
+                public void onServiceChanged(String address) {
+                    if (DBG) {
+                        Log.d(TAG, "onServiceChanged() - Device=" + address);
+                    }
+
+                    if (!address.equals(mDevice.getAddress())) {
+                        return;
+                    }
+
+                    runOrQueueCallback(new Runnable() {
+                        @Override
+                        public void run() {
+                            final BluetoothGattCallback callback = mCallback;
+                            if (callback != null) {
+                                callback.onServiceChanged(BluetoothGatt.this);
+                            }
+                        }
+                    });
+                }
             };
 
     /*package*/ BluetoothGatt(IBluetoothGatt iGatt, BluetoothDevice device,
@@ -856,7 +881,7 @@
      * automatically connect as soon as the remote device becomes available (true).
      * @return true, if the connection attempt was initiated successfully
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     /*package*/ boolean connect(Boolean autoConnect, BluetoothGattCallback callback,
             Handler handler) {
         if (DBG) {
diff --git a/core/java/android/bluetooth/BluetoothGattCallback.java b/core/java/android/bluetooth/BluetoothGattCallback.java
index f718c0b..1c40cff 100644
--- a/core/java/android/bluetooth/BluetoothGattCallback.java
+++ b/core/java/android/bluetooth/BluetoothGattCallback.java
@@ -16,6 +16,8 @@
 
 package android.bluetooth;
 
+import android.annotation.NonNull;
+
 /**
  * This abstract class is used to implement {@link BluetoothGatt} callbacks.
  */
@@ -194,4 +196,16 @@
     public void onConnectionUpdated(BluetoothGatt gatt, int interval, int latency, int timeout,
             int status) {
     }
+
+    /**
+     * Callback indicating service changed event is received
+     *
+     * <p>Receiving this event means that the GATT database is out of sync with
+     * the remote device. {@link BluetoothGatt#discoverServices} should be
+     * called to re-discover the services.
+     *
+     * @param gatt GATT client involved
+     */
+    public void onServiceChanged(@NonNull BluetoothGatt gatt) {
+    }
 }
diff --git a/core/java/android/bluetooth/BluetoothGattService.java b/core/java/android/bluetooth/BluetoothGattService.java
index e7809ae..23dc7c8 100644
--- a/core/java/android/bluetooth/BluetoothGattService.java
+++ b/core/java/android/bluetooth/BluetoothGattService.java
@@ -16,6 +16,7 @@
 package android.bluetooth;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.ParcelUuid;
 import android.os.Parcelable;
@@ -385,7 +386,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setAdvertisePreferred(boolean advertisePreferred) {
         mAdvertisePreferred = advertisePreferred;
     }
diff --git a/core/java/android/bluetooth/BluetoothHeadset.java b/core/java/android/bluetooth/BluetoothHeadset.java
index 6ce05f9..adb7e2f7 100644
--- a/core/java/android/bluetooth/BluetoothHeadset.java
+++ b/core/java/android/bluetooth/BluetoothHeadset.java
@@ -27,6 +27,7 @@
 import android.content.ComponentName;
 import android.content.Context;
 import android.os.Binder;
+import android.os.Build;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Looper;
@@ -112,7 +113,7 @@
      * @hide
      */
     @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String ACTION_ACTIVE_DEVICE_CHANGED =
             "android.bluetooth.headset.profile.action.ACTIVE_DEVICE_CHANGED";
 
@@ -635,7 +636,7 @@
      * @return priority of the device
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @RequiresPermission(Manifest.permission.BLUETOOTH)
     public int getPriority(BluetoothDevice device) {
         if (VDBG) log("getPriority(" + device + ")");
@@ -782,7 +783,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getAudioState(BluetoothDevice device) {
         if (VDBG) log("getAudioState");
         final IBluetoothHeadset service = mService;
@@ -1030,7 +1031,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void phoneStateChanged(int numActive, int numHeld, int callState, String number,
             int type, String name) {
         final IBluetoothHeadset service = mService;
@@ -1129,7 +1130,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN)
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean setActiveDevice(@Nullable BluetoothDevice device) {
         if (DBG) {
             Log.d(TAG, "setActiveDevice: " + device);
@@ -1155,7 +1156,7 @@
      * is active.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @Nullable
     @RequiresPermission(Manifest.permission.BLUETOOTH)
     public BluetoothDevice getActiveDevice() {
diff --git a/core/java/android/bluetooth/BluetoothHeadsetClient.java b/core/java/android/bluetooth/BluetoothHeadsetClient.java
index 2836325..e5b2a1e 100644
--- a/core/java/android/bluetooth/BluetoothHeadsetClient.java
+++ b/core/java/android/bluetooth/BluetoothHeadsetClient.java
@@ -22,6 +22,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.os.Binder;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.IBinder;
 import android.os.RemoteException;
@@ -445,7 +446,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean connect(BluetoothDevice device) {
         if (DBG) log("connect(" + device + ")");
         final IBluetoothHeadsetClient service =
@@ -471,7 +472,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean disconnect(BluetoothDevice device) {
         if (DBG) log("disconnect(" + device + ")");
         final IBluetoothHeadsetClient service =
@@ -780,7 +781,7 @@
      * @return <code>true</code> if command has been issued successfully; <code>false</code>
      * otherwise; upon completion HFP sends {@link #ACTION_CALL_CHANGED} intent.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean acceptCall(BluetoothDevice device, int flag) {
         if (DBG) log("acceptCall()");
         final IBluetoothHeadsetClient service =
@@ -829,7 +830,7 @@
      * #EXTRA_AG_FEATURE_REJECT_CALL}. This method invocation will fail silently when feature is not
      * supported.</p>
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean rejectCall(BluetoothDevice device) {
         if (DBG) log("rejectCall()");
         final IBluetoothHeadsetClient service =
@@ -1014,7 +1015,7 @@
      *
      * Note: This is an internal function and shouldn't be exposed
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getAudioState(BluetoothDevice device) {
         if (VDBG) log("getAudioState");
         final IBluetoothHeadsetClient service =
diff --git a/core/java/android/bluetooth/BluetoothHeadsetClientCall.java b/core/java/android/bluetooth/BluetoothHeadsetClientCall.java
index d1a096e..219d159 100644
--- a/core/java/android/bluetooth/BluetoothHeadsetClientCall.java
+++ b/core/java/android/bluetooth/BluetoothHeadsetClientCall.java
@@ -17,6 +17,7 @@
 package android.bluetooth;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.SystemClock;
@@ -144,7 +145,7 @@
      *
      * @return call id.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getId() {
         return mId;
     }
@@ -164,7 +165,7 @@
      *
      * @return state of this particular phone call.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getState() {
         return mState;
     }
@@ -174,7 +175,7 @@
      *
      * @return string representing phone number.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public String getNumber() {
         return mNumber;
     }
@@ -193,7 +194,7 @@
      *
      * @return <code>true</code> if call is a multi party call, <code>false</code> otherwise.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isMultiParty() {
         return mMultiParty;
     }
@@ -203,7 +204,7 @@
      *
      * @return <code>true</code> if its outgoing call, <code>false</code> otherwise.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isOutgoing() {
         return mOutgoing;
     }
diff --git a/core/java/android/bluetooth/BluetoothHearingAid.java b/core/java/android/bluetooth/BluetoothHearingAid.java
index fa62a02..ff78825e 100644
--- a/core/java/android/bluetooth/BluetoothHearingAid.java
+++ b/core/java/android/bluetooth/BluetoothHearingAid.java
@@ -26,6 +26,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.os.Binder;
+import android.os.Build;
 import android.os.IBinder;
 import android.os.RemoteException;
 import android.util.Log;
@@ -85,7 +86,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
     public static final String ACTION_ACTIVE_DEVICE_CHANGED =
             "android.bluetooth.hearingaid.profile.action.ACTIVE_DEVICE_CHANGED";
@@ -302,7 +303,7 @@
      * @return false on immediate error, true otherwise
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean setActiveDevice(@Nullable BluetoothDevice device) {
         if (DBG) log("setActiveDevice(" + device + ")");
         final IBluetoothHearingAid service = getService();
@@ -328,7 +329,7 @@
      * is not active, it will be null on that position. Returns empty list on error.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @RequiresPermission(Manifest.permission.BLUETOOTH)
     public @NonNull List<BluetoothDevice> getActiveDevices() {
         if (VDBG) log("getActiveDevices()");
diff --git a/core/java/android/bluetooth/BluetoothMap.java b/core/java/android/bluetooth/BluetoothMap.java
index 14a71c4..3554995 100644
--- a/core/java/android/bluetooth/BluetoothMap.java
+++ b/core/java/android/bluetooth/BluetoothMap.java
@@ -24,6 +24,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.os.Binder;
+import android.os.Build;
 import android.os.IBinder;
 import android.os.RemoteException;
 import android.util.CloseGuard;
@@ -209,7 +210,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean disconnect(BluetoothDevice device) {
         if (DBG) log("disconnect(" + device + ")");
         final IBluetoothMap service = getService();
diff --git a/core/java/android/bluetooth/BluetoothMapClient.java b/core/java/android/bluetooth/BluetoothMapClient.java
index df11d3a..ff6cffb 100644
--- a/core/java/android/bluetooth/BluetoothMapClient.java
+++ b/core/java/android/bluetooth/BluetoothMapClient.java
@@ -24,6 +24,7 @@
 import android.content.Context;
 import android.net.Uri;
 import android.os.Binder;
+import android.os.Build;
 import android.os.IBinder;
 import android.os.RemoteException;
 import android.util.Log;
@@ -388,7 +389,7 @@
      * @param deliveredIntent intent issued when message is delivered
      * @return true if the message is enqueued, false on error
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean sendMessage(BluetoothDevice device, Uri[] contacts, String message,
             PendingIntent sentIntent, PendingIntent deliveredIntent) {
         if (DBG) Log.d(TAG, "sendMessage(" + device + ", " + contacts + ", " + message);
diff --git a/core/java/android/bluetooth/BluetoothPan.java b/core/java/android/bluetooth/BluetoothPan.java
index 4698b07..f06dad8 100644
--- a/core/java/android/bluetooth/BluetoothPan.java
+++ b/core/java/android/bluetooth/BluetoothPan.java
@@ -27,6 +27,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.os.Binder;
+import android.os.Build;
 import android.os.IBinder;
 import android.os.RemoteException;
 import android.util.Log;
@@ -234,7 +235,7 @@
      * @return false on immediate error, true otherwise
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean connect(BluetoothDevice device) {
         if (DBG) log("connect(" + device + ")");
         final IBluetoothPan service = getService();
diff --git a/core/java/android/bluetooth/BluetoothPbap.java b/core/java/android/bluetooth/BluetoothPbap.java
index d58a893..6e5c45f 100644
--- a/core/java/android/bluetooth/BluetoothPbap.java
+++ b/core/java/android/bluetooth/BluetoothPbap.java
@@ -27,6 +27,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.ServiceConnection;
+import android.os.Build;
 import android.os.IBinder;
 import android.os.RemoteException;
 import android.os.UserHandle;
@@ -322,7 +323,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean disconnect(BluetoothDevice device) {
         log("disconnect()");
         final IBluetoothPbap service = mService;
diff --git a/core/java/android/bluetooth/BluetoothProfile.java b/core/java/android/bluetooth/BluetoothProfile.java
index 7538df8..db851c4 100644
--- a/core/java/android/bluetooth/BluetoothProfile.java
+++ b/core/java/android/bluetooth/BluetoothProfile.java
@@ -23,6 +23,7 @@
 import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -219,7 +220,7 @@
      *
      * @hide
      **/
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     int PRIORITY_AUTO_CONNECT = 1000;
 
     /**
diff --git a/core/java/android/bluetooth/BluetoothSap.java b/core/java/android/bluetooth/BluetoothSap.java
index 48e8c1a..0d70dbd 100644
--- a/core/java/android/bluetooth/BluetoothSap.java
+++ b/core/java/android/bluetooth/BluetoothSap.java
@@ -21,6 +21,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.os.Binder;
+import android.os.Build;
 import android.os.IBinder;
 import android.os.RemoteException;
 import android.util.Log;
@@ -219,7 +220,7 @@
      * @return false on error, true otherwise
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean disconnect(BluetoothDevice device) {
         if (DBG) log("disconnect(" + device + ")");
         final IBluetoothSap service = getService();
diff --git a/core/java/android/bluetooth/BluetoothSocket.java b/core/java/android/bluetooth/BluetoothSocket.java
index d41a6d0..65381db 100644
--- a/core/java/android/bluetooth/BluetoothSocket.java
+++ b/core/java/android/bluetooth/BluetoothSocket.java
@@ -18,6 +18,7 @@
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.net.LocalSocket;
+import android.os.Build;
 import android.os.ParcelFileDescriptor;
 import android.os.ParcelUuid;
 import android.os.RemoteException;
@@ -111,7 +112,7 @@
     public static final int TYPE_L2CAP_LE = 4;
 
     /*package*/ static final int EBADFD = 77;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     /*package*/ static final int EADDRINUSE = 98;
 
     /*package*/ static final int SEC_FLAG_ENCRYPT = 1;
diff --git a/core/java/android/bluetooth/le/AdvertiseData.java b/core/java/android/bluetooth/le/AdvertiseData.java
index 5fd8258..573b932 100644
--- a/core/java/android/bluetooth/le/AdvertiseData.java
+++ b/core/java/android/bluetooth/le/AdvertiseData.java
@@ -16,6 +16,7 @@
 
 package android.bluetooth.le;
 
+import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.os.Parcel;
 import android.os.ParcelUuid;
@@ -43,17 +44,22 @@
     @Nullable
     private final List<ParcelUuid> mServiceUuids;
 
+    @Nullable
+    private final List<ParcelUuid> mServiceSolicitationUuids;
+
     private final SparseArray<byte[]> mManufacturerSpecificData;
     private final Map<ParcelUuid, byte[]> mServiceData;
     private final boolean mIncludeTxPowerLevel;
     private final boolean mIncludeDeviceName;
 
     private AdvertiseData(List<ParcelUuid> serviceUuids,
+            List<ParcelUuid> serviceSolicitationUuids,
             SparseArray<byte[]> manufacturerData,
             Map<ParcelUuid, byte[]> serviceData,
             boolean includeTxPowerLevel,
             boolean includeDeviceName) {
         mServiceUuids = serviceUuids;
+        mServiceSolicitationUuids = serviceSolicitationUuids;
         mManufacturerSpecificData = manufacturerData;
         mServiceData = serviceData;
         mIncludeTxPowerLevel = includeTxPowerLevel;
@@ -69,6 +75,14 @@
     }
 
     /**
+     * Returns a list of service solicitation UUIDs within the advertisement that we invite to connect.
+     */
+    @Nullable
+    public List<ParcelUuid> getServiceSolicitationUuids() {
+        return mServiceSolicitationUuids;
+    }
+
+    /**
      * Returns an array of manufacturer Id and the corresponding manufacturer specific data. The
      * manufacturer id is a non-negative number assigned by Bluetooth SIG.
      */
@@ -102,8 +116,8 @@
      */
     @Override
     public int hashCode() {
-        return Objects.hash(mServiceUuids, mManufacturerSpecificData, mServiceData,
-                mIncludeDeviceName, mIncludeTxPowerLevel);
+        return Objects.hash(mServiceUuids, mServiceSolicitationUuids, mManufacturerSpecificData,
+                mServiceData, mIncludeDeviceName, mIncludeTxPowerLevel);
     }
 
     /**
@@ -119,6 +133,7 @@
         }
         AdvertiseData other = (AdvertiseData) obj;
         return Objects.equals(mServiceUuids, other.mServiceUuids)
+                && Objects.equals(mServiceSolicitationUuids, other.mServiceSolicitationUuids)
                 && BluetoothLeUtils.equals(mManufacturerSpecificData,
                     other.mManufacturerSpecificData)
                 && BluetoothLeUtils.equals(mServiceData, other.mServiceData)
@@ -128,7 +143,8 @@
 
     @Override
     public String toString() {
-        return "AdvertiseData [mServiceUuids=" + mServiceUuids + ", mManufacturerSpecificData="
+        return "AdvertiseData [mServiceUuids=" + mServiceUuids + ", mServiceSolicitationUuids="
+                + mServiceSolicitationUuids + ", mManufacturerSpecificData="
                 + BluetoothLeUtils.toString(mManufacturerSpecificData) + ", mServiceData="
                 + BluetoothLeUtils.toString(mServiceData)
                 + ", mIncludeTxPowerLevel=" + mIncludeTxPowerLevel + ", mIncludeDeviceName="
@@ -143,6 +159,8 @@
     @Override
     public void writeToParcel(Parcel dest, int flags) {
         dest.writeTypedArray(mServiceUuids.toArray(new ParcelUuid[mServiceUuids.size()]), flags);
+        dest.writeTypedArray(mServiceSolicitationUuids.toArray(
+                new ParcelUuid[mServiceSolicitationUuids.size()]), flags);
 
         // mManufacturerSpecificData could not be null.
         dest.writeInt(mManufacturerSpecificData.size());
@@ -174,6 +192,11 @@
                         builder.addServiceUuid(uuid);
                     }
 
+                    ArrayList<ParcelUuid> solicitationUuids = in.createTypedArrayList(ParcelUuid.CREATOR);
+                    for (ParcelUuid uuid : solicitationUuids) {
+                        builder.addServiceSolicitationUuid(uuid);
+                    }
+
                     int manufacturerSize = in.readInt();
                     for (int i = 0; i < manufacturerSize; ++i) {
                         int manufacturerId = in.readInt();
@@ -198,6 +221,8 @@
     public static final class Builder {
         @Nullable
         private List<ParcelUuid> mServiceUuids = new ArrayList<ParcelUuid>();
+        @Nullable
+        private List<ParcelUuid> mServiceSolicitationUuids = new ArrayList<ParcelUuid>();
         private SparseArray<byte[]> mManufacturerSpecificData = new SparseArray<byte[]>();
         private Map<ParcelUuid, byte[]> mServiceData = new ArrayMap<ParcelUuid, byte[]>();
         private boolean mIncludeTxPowerLevel;
@@ -207,17 +232,31 @@
          * Add a service UUID to advertise data.
          *
          * @param serviceUuid A service UUID to be advertised.
-         * @throws IllegalArgumentException If the {@code serviceUuids} are null.
+         * @throws IllegalArgumentException If the {@code serviceUuid} is null.
          */
         public Builder addServiceUuid(ParcelUuid serviceUuid) {
             if (serviceUuid == null) {
-                throw new IllegalArgumentException("serivceUuids are null");
+                throw new IllegalArgumentException("serviceUuid is null");
             }
             mServiceUuids.add(serviceUuid);
             return this;
         }
 
         /**
+         * Add a service solicitation UUID to advertise data.
+         *
+         * @param serviceSolicitationUuid A service solicitation UUID to be advertised.
+         * @throws IllegalArgumentException If the {@code serviceSolicitationUuid} is null.
+         */
+        @NonNull
+        public Builder addServiceSolicitationUuid(@NonNull ParcelUuid serviceSolicitationUuid) {
+            if (serviceSolicitationUuid == null) {
+                throw new IllegalArgumentException("serviceSolicitationUuid is null");
+            }
+            mServiceSolicitationUuids.add(serviceSolicitationUuid);
+            return this;
+        }
+        /**
          * Add service data to advertise data.
          *
          * @param serviceDataUuid 16-bit UUID of the service the data is associated with
@@ -279,8 +318,9 @@
          * Build the {@link AdvertiseData}.
          */
         public AdvertiseData build() {
-            return new AdvertiseData(mServiceUuids, mManufacturerSpecificData, mServiceData,
-                    mIncludeTxPowerLevel, mIncludeDeviceName);
+            return new AdvertiseData(mServiceUuids, mServiceSolicitationUuids,
+                    mManufacturerSpecificData, mServiceData, mIncludeTxPowerLevel,
+                    mIncludeDeviceName);
         }
     }
 }
diff --git a/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java b/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java
index 13c5ff6..5f166f4 100644
--- a/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java
+++ b/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java
@@ -507,6 +507,33 @@
                         + num128BitUuids * BluetoothUuid.UUID_BYTES_128_BIT;
             }
         }
+        if (data.getServiceSolicitationUuids() != null) {
+            int num16BitUuids = 0;
+            int num32BitUuids = 0;
+            int num128BitUuids = 0;
+            for (ParcelUuid uuid : data.getServiceSolicitationUuids()) {
+                if (BluetoothUuid.is16BitUuid(uuid)) {
+                    ++num16BitUuids;
+                } else if (BluetoothUuid.is32BitUuid(uuid)) {
+                    ++num32BitUuids;
+                } else {
+                    ++num128BitUuids;
+                }
+            }
+            // 16 bit service uuids are grouped into one field when doing advertising.
+            if (num16BitUuids != 0) {
+                size += OVERHEAD_BYTES_PER_FIELD + num16BitUuids * BluetoothUuid.UUID_BYTES_16_BIT;
+            }
+            // 32 bit service uuids are grouped into one field when doing advertising.
+            if (num32BitUuids != 0) {
+                size += OVERHEAD_BYTES_PER_FIELD + num32BitUuids * BluetoothUuid.UUID_BYTES_32_BIT;
+            }
+            // 128 bit service uuids are grouped into one field when doing advertising.
+            if (num128BitUuids != 0) {
+                size += OVERHEAD_BYTES_PER_FIELD
+                        + num128BitUuids * BluetoothUuid.UUID_BYTES_128_BIT;
+            }
+        }
         for (ParcelUuid uuid : data.getServiceData().keySet()) {
             int uuidLen = BluetoothUuid.uuidToBytes(uuid).length;
             size += OVERHEAD_BYTES_PER_FIELD + uuidLen
diff --git a/core/java/android/companion/AssociationRequest.java b/core/java/android/companion/AssociationRequest.java
index 1f57c7d..7733dc1 100644
--- a/core/java/android/companion/AssociationRequest.java
+++ b/core/java/android/companion/AssociationRequest.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.provider.OneTimeUseBuilder;
@@ -60,14 +61,14 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isSingleDevice() {
         return mSingleDevice;
     }
 
     /** @hide */
     @NonNull
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public List<DeviceFilter<?>> getDeviceFilters() {
         return mDeviceFilters;
     }
diff --git a/core/java/android/companion/BluetoothDeviceFilter.java b/core/java/android/companion/BluetoothDeviceFilter.java
index 2649fbe..04c9693 100644
--- a/core/java/android/companion/BluetoothDeviceFilter.java
+++ b/core/java/android/companion/BluetoothDeviceFilter.java
@@ -27,6 +27,7 @@
 import android.annotation.Nullable;
 import android.bluetooth.BluetoothDevice;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.ParcelUuid;
 import android.provider.OneTimeUseBuilder;
@@ -100,7 +101,7 @@
 
     /** @hide */
     @Nullable
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public String getAddress() {
         return mAddress;
     }
@@ -142,6 +143,16 @@
     }
 
     @Override
+    public String toString() {
+        return "BluetoothDeviceFilter{"
+                + "mNamePattern=" + mNamePattern
+                + ", mAddress='" + mAddress + '\''
+                + ", mServiceUuids=" + mServiceUuids
+                + ", mServiceUuidMasks=" + mServiceUuidMasks
+                + '}';
+    }
+
+    @Override
     public int describeContents() {
         return 0;
     }
diff --git a/core/java/android/companion/BluetoothDeviceFilterUtils.java b/core/java/android/companion/BluetoothDeviceFilterUtils.java
index 8e68741..5e2340c 100644
--- a/core/java/android/companion/BluetoothDeviceFilterUtils.java
+++ b/core/java/android/companion/BluetoothDeviceFilterUtils.java
@@ -25,6 +25,7 @@
 import android.bluetooth.le.ScanFilter;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.net.wifi.ScanResult;
+import android.os.Build;
 import android.os.ParcelUuid;
 import android.os.Parcelable;
 import android.util.Log;
@@ -120,17 +121,17 @@
         Log.i(LOG_TAG, getDeviceDisplayNameInternal(device) + (result ? " ~ " : " !~ ") + criteria);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static String getDeviceDisplayNameInternal(@NonNull BluetoothDevice device) {
         return firstNotEmpty(device.getAlias(), device.getAddress());
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static String getDeviceDisplayNameInternal(@NonNull ScanResult device) {
         return firstNotEmpty(device.SSID, device.BSSID);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static String getDeviceMacAddress(@NonNull Parcelable device) {
         if (device instanceof BluetoothDevice) {
             return ((BluetoothDevice) device).getAddress();
diff --git a/core/java/android/companion/BluetoothLeDeviceFilter.java b/core/java/android/companion/BluetoothLeDeviceFilter.java
index 8c071fe..129190e 100644
--- a/core/java/android/companion/BluetoothLeDeviceFilter.java
+++ b/core/java/android/companion/BluetoothLeDeviceFilter.java
@@ -30,6 +30,7 @@
 import android.bluetooth.le.ScanRecord;
 import android.bluetooth.le.ScanResult;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.provider.OneTimeUseBuilder;
 import android.text.TextUtils;
@@ -94,7 +95,7 @@
 
     /** @hide */
     @NonNull
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ScanFilter getScanFilter() {
         return mScanFilter;
     }
diff --git a/core/java/android/companion/CompanionDeviceManager.java b/core/java/android/companion/CompanionDeviceManager.java
index 591a714..e43a6a8 100644
--- a/core/java/android/companion/CompanionDeviceManager.java
+++ b/core/java/android/companion/CompanionDeviceManager.java
@@ -21,7 +21,6 @@
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
-import android.annotation.TestApi;
 import android.app.Activity;
 import android.app.Application;
 import android.app.PendingIntent;
@@ -131,7 +130,7 @@
      * you use the {@link android.Manifest.permission#REQUEST_COMPANION_RUN_IN_BACKGROUND} and {@link
      * android.Manifest.permission#REQUEST_COMPANION_USE_DATA_IN_BACKGROUND} respectively. Note that these
      * special capabilities have a negative effect on the device's battery and user's data
-     * usage, therefore you should requested them when absolutely necessary.</p>
+     * usage, therefore you should request them when absolutely necessary.</p>
      *
      * <p>You can call {@link #getAssociations} to get the list of currently associated
      * devices, and {@link #disassociate} to remove an association. Consider doing so when the
@@ -285,7 +284,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(android.Manifest.permission.MANAGE_COMPANION_DEVICES)
     public boolean isDeviceAssociatedForWifiConnection(
             @NonNull String packageName,
diff --git a/core/java/android/companion/DeviceFilter.java b/core/java/android/companion/DeviceFilter.java
index c9cb072..37191a24 100644
--- a/core/java/android/companion/DeviceFilter.java
+++ b/core/java/android/companion/DeviceFilter.java
@@ -20,6 +20,7 @@
 import android.annotation.IntDef;
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcelable;
 
 import java.lang.annotation.Retention;
@@ -45,11 +46,11 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     boolean matches(D device);
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     String getDeviceDisplayName(D device);
 
     /**  @hide */
diff --git a/core/java/android/companion/IFindDeviceCallback.aidl b/core/java/android/companion/IFindDeviceCallback.aidl
index 405277b..a3a47a9 100644
--- a/core/java/android/companion/IFindDeviceCallback.aidl
+++ b/core/java/android/companion/IFindDeviceCallback.aidl
@@ -20,7 +20,7 @@
 
 /** @hide */
 interface IFindDeviceCallback {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     oneway void onSuccess(in PendingIntent launcher);
     oneway void onFailure(in CharSequence reason);
 }
diff --git a/core/java/android/content/ApexEnvironment.java b/core/java/android/content/ApexEnvironment.java
index 9f15a42..b4cc3c2 100644
--- a/core/java/android/content/ApexEnvironment.java
+++ b/core/java/android/content/ApexEnvironment.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Environment;
 import android.os.UserHandle;
 
@@ -31,7 +30,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public class ApexEnvironment {
 
     private static final String APEX_DATA = "apexdata";
diff --git a/core/java/android/content/ComponentName.java b/core/java/android/content/ComponentName.java
index 1967a01..9286c91 100644
--- a/core/java/android/content/ComponentName.java
+++ b/core/java/android/content/ComponentName.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.text.TextUtils;
@@ -241,14 +242,14 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static void appendShortString(StringBuilder sb, String packageName, String className) {
         sb.append(packageName).append('/');
         appendShortClassName(sb, packageName, className);
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static void printShortString(PrintWriter pw, String packageName, String className) {
         pw.print(packageName);
         pw.print('/');
diff --git a/core/java/android/content/ContentProvider.java b/core/java/android/content/ContentProvider.java
index 33be50d..5865193 100644
--- a/core/java/android/content/ContentProvider.java
+++ b/core/java/android/content/ContentProvider.java
@@ -129,7 +129,7 @@
     // performance.
     @UnsupportedAppUsage
     private String mAuthority;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private String[] mAuthorities;
     @UnsupportedAppUsage
     private String mReadPermission;
@@ -2341,7 +2341,7 @@
      * when directly instantiating the provider for testing.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void attachInfoForTesting(Context context, ProviderInfo info) {
         attachInfo(context, info, true);
     }
diff --git a/core/java/android/content/ContentProviderClient.java b/core/java/android/content/ContentProviderClient.java
index d0f5ec4..5af7861 100644
--- a/core/java/android/content/ContentProviderClient.java
+++ b/core/java/android/content/ContentProviderClient.java
@@ -21,7 +21,6 @@
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.res.AssetFileDescriptor;
 import android.database.CrossProcessCursorWrapper;
@@ -123,7 +122,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(android.Manifest.permission.REMOVE_TASKS)
     public void setDetectNotResponding(@DurationMillisLong long timeoutMillis) {
         synchronized (ContentProviderClient.class) {
diff --git a/core/java/android/content/ContentResolver.java b/core/java/android/content/ContentResolver.java
index e1e6eaa..a6089c3 100644
--- a/core/java/android/content/ContentResolver.java
+++ b/core/java/android/content/ContentResolver.java
@@ -49,6 +49,7 @@
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.Icon;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.CancellationSignal;
 import android.os.DeadObjectException;
@@ -567,7 +568,7 @@
     public static final String MIME_TYPE_DEFAULT = ClipDescription.MIMETYPE_UNKNOWN;
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int SYNC_ERROR_SYNC_ALREADY_IN_PROGRESS = 1;
     /** @hide */
     public static final int SYNC_ERROR_AUTHENTICATION = 2;
@@ -624,7 +625,7 @@
     public static final int SYNC_OBSERVER_TYPE_PENDING = 1<<1;
     public static final int SYNC_OBSERVER_TYPE_ACTIVE = 1<<2;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int SYNC_OBSERVER_TYPE_STATUS = 1<<3;
     /** @hide */
     public static final int SYNC_OBSERVER_TYPE_ALL = 0x7fffffff;
@@ -834,6 +835,7 @@
     }
 
     /** @hide */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     protected abstract IContentProvider acquireProvider(Context c, String name);
 
@@ -850,15 +852,19 @@
     }
 
     /** @hide */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract boolean releaseProvider(IContentProvider icp);
     /** @hide */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     protected abstract IContentProvider acquireUnstableProvider(Context c, String name);
     /** @hide */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract boolean releaseUnstableProvider(IContentProvider icp);
     /** @hide */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract void unstableProviderDied(IContentProvider icp);
 
@@ -3534,7 +3540,7 @@
      * @see #getSyncStatus(Account, String)
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static SyncStatusInfo getSyncStatusAsUser(Account account, String authority,
             @UserIdInt int userId) {
         try {
@@ -4094,7 +4100,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     // We can't accept an already-opened FD here, since these methods are
     // rewriting actual filesystem paths
     @SuppressLint("StreamFiles")
@@ -4114,7 +4119,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     // We can't accept an already-opened FD here, since these methods are
     // rewriting actual filesystem paths
     @SuppressLint("StreamFiles")
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index 153e0a2..7ffcead 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -800,6 +800,7 @@
      * case {@link #getOpPackageName()} will be the name of the primary package in
      * that process (so that app ops uid verification will work with the name).
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract String getBasePackageName();
 
@@ -916,6 +917,7 @@
      * @see #MODE_PRIVATE
      * @removed
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract SharedPreferences getSharedPreferences(File file, @PreferencesMode int mode);
 
     /**
@@ -946,6 +948,7 @@
     public abstract boolean deleteSharedPreferences(String name);
 
     /** @hide */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract void reloadSharedPreferences();
 
     /**
@@ -1034,6 +1037,7 @@
      * @see #getSharedPreferences(String, int)
      * @removed
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract File getSharedPreferencesPath(String name);
 
     /**
@@ -1505,6 +1509,7 @@
      * There is no guarantee when these files will be deleted.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Nullable
     @SystemApi
     public abstract File getPreloadsFileCache();
@@ -1838,7 +1843,6 @@
      */
     @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
     @SystemApi
-    @TestApi
     public void startActivityAsUser(@RequiresPermission @NonNull Intent intent,
             @NonNull UserHandle user) {
         throw new RuntimeException("Not implemented. Must override in a subclass.");
@@ -1917,7 +1921,7 @@
      * {@link #startActivityForResult(String, Intent, int, Bundle)}.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean canStartActivityForResult() {
         return false;
     }
@@ -2174,6 +2178,7 @@
      * @see #sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Bundle)
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract void sendBroadcastAsUserMultiplePermissions(Intent intent, UserHandle user,
             String[] receiverPermissions);
 
@@ -2204,6 +2209,7 @@
      * @see #sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Bundle)
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     public abstract void sendBroadcast(Intent intent,
             @Nullable String receiverPermission,
@@ -2214,6 +2220,7 @@
      * of an associated app op as per {@link android.app.AppOpsManager}.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract void sendBroadcast(Intent intent,
             String receiverPermission, int appOp);
@@ -2329,6 +2336,7 @@
      * @see android.app.Activity#RESULT_OK
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     public abstract void sendOrderedBroadcast(@NonNull Intent intent,
             @Nullable String receiverPermission, @Nullable Bundle options,
@@ -2341,6 +2349,7 @@
      * of an associated app op as per {@link android.app.AppOpsManager}.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract void sendOrderedBroadcast(Intent intent,
             String receiverPermission, int appOp, BroadcastReceiver resultReceiver,
@@ -2394,6 +2403,7 @@
      * @see #sendBroadcast(Intent, String, Bundle)
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
     public abstract void sendBroadcastAsUser(@RequiresPermission Intent intent,
@@ -2416,8 +2426,9 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public abstract void sendBroadcastAsUser(@RequiresPermission Intent intent,
             UserHandle user, @Nullable String receiverPermission, int appOp);
 
@@ -2462,8 +2473,9 @@
      *       BroadcastReceiver, Handler, int, String, Bundle)
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public abstract void sendOrderedBroadcastAsUser(Intent intent, UserHandle user,
             @Nullable String receiverPermission, int appOp, BroadcastReceiver resultReceiver,
             @Nullable Handler scheduler, int initialCode, @Nullable String initialData,
@@ -2475,6 +2487,7 @@
      *       BroadcastReceiver, Handler, int, String, Bundle)
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
     @UnsupportedAppUsage
     public abstract void sendOrderedBroadcastAsUser(Intent intent, UserHandle user,
@@ -2689,6 +2702,7 @@
      * @hide
      * This is just here for sending CONNECTIVITY_ACTION.
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Deprecated
     @RequiresPermission(allOf = {
             android.Manifest.permission.INTERACT_ACROSS_USERS,
@@ -2979,6 +2993,7 @@
      * @see #sendBroadcast
      * @see #unregisterReceiver
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Nullable
     @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL)
     @UnsupportedAppUsage
@@ -3089,6 +3104,7 @@
     /**
      * @hide like {@link #startForegroundService(Intent)} but for a specific user.
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Nullable
     @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
     public abstract ComponentName startForegroundServiceAsUser(Intent service, UserHandle user);
@@ -3127,6 +3143,7 @@
     /**
      * @hide like {@link #startService(Intent)} but for a specific user.
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Nullable
     @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
     @UnsupportedAppUsage
@@ -3135,6 +3152,7 @@
     /**
      * @hide like {@link #stopService(Intent)} but for a specific user.
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
     public abstract boolean stopServiceAsUser(Intent service, UserHandle user);
 
@@ -3403,6 +3421,7 @@
             VIBRATOR_SERVICE,
             //@hide: STATUS_BAR_SERVICE,
             CONNECTIVITY_SERVICE,
+            VCN_MANAGEMENT_SERVICE,
             //@hide: IP_MEMORY_STORE_SERVICE,
             IPSEC_SERVICE,
             VPN_MANAGEMENT_SERVICE,
@@ -3953,7 +3972,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @SuppressLint("ServiceName")
     public static final String STATUS_BAR_SERVICE = "statusbar";
 
@@ -3968,6 +3986,16 @@
     public static final String CONNECTIVITY_SERVICE = "connectivity";
 
     /**
+     * Use with {@link #getSystemService(String)} to retrieve a {@link android.net.vcn.VcnManager}
+     * for managing Virtual Carrier Networks
+     *
+     * @see #getSystemService(String)
+     * @see android.net.vcn.VcnManager
+     * @hide
+     */
+    public static final String VCN_MANAGEMENT_SERVICE = "vcn_management";
+
+    /**
      * Use with {@link #getSystemService(String)} to retrieve a
      * {@link android.net.INetd} for communicating with the network stack
      * @hide
@@ -4165,7 +4193,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final String ETHERNET_SERVICE = "ethernet";
 
     /**
@@ -4469,7 +4496,6 @@
      * @see #getSystemService(String)
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final String PERMISSION_SERVICE = "permission";
 
@@ -4500,7 +4526,7 @@
      * @see #getSystemService(String)
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String ROLLBACK_SERVICE = "rollback";
 
     /**
@@ -4974,7 +5000,7 @@
      * @see android.os.BugreportManager
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String BUGREPORT_SERVICE = "bugreport";
 
     /**
@@ -5118,7 +5144,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final String APP_INTEGRITY_SERVICE = "app_integrity";
 
     /**
@@ -5184,8 +5209,9 @@
     public abstract int checkPermission(@NonNull String permission, int pid, int uid);
 
     /** @hide */
+    @SuppressWarnings("HiddenAbstractMethod")
     @PackageManager.PermissionResult
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public abstract int checkPermission(@NonNull String permission, int pid, int uid,
             IBinder callerToken);
 
@@ -5411,6 +5437,7 @@
             @Intent.AccessUriMode int modeFlags);
 
     /** @hide */
+    @SuppressWarnings("HiddenAbstractMethod")
     @PackageManager.PermissionResult
     public abstract int checkUriPermission(Uri uri, int pid, int uid,
             @Intent.AccessUriMode int modeFlags, IBinder callerToken);
@@ -5664,7 +5691,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @NonNull
     public Context createPackageContextAsUser(
             @NonNull String packageName, @CreatePackageOptions int flags, @NonNull UserHandle user)
@@ -5683,7 +5709,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @NonNull
     public Context createContextAsUser(@NonNull UserHandle user, @CreatePackageOptions int flags) {
         if (Build.IS_ENG) {
@@ -5697,6 +5722,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract Context createApplicationContext(ApplicationInfo application,
             @CreatePackageOptions int flags) throws PackageManager.NameNotFoundException;
@@ -5916,6 +5942,7 @@
      * @see #isCredentialProtectedStorage()
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     public abstract Context createCredentialProtectedStorageContext();
 
@@ -5928,6 +5955,7 @@
      * @return The compatibility info holder, or null if not required by the application.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract DisplayAdjustments getDisplayAdjustments(int displayId);
 
     /**
@@ -5962,12 +5990,14 @@
      * @see #getDisplay()
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @TestApi
     public abstract int getDisplayId();
 
     /**
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract void updateDisplay(int displayId);
 
     /**
@@ -5996,6 +6026,7 @@
      * @see #createCredentialProtectedStorageContext()
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     public abstract boolean isCredentialProtectedStorage();
 
@@ -6003,6 +6034,7 @@
      * Returns true if the context can load unsafe resources, e.g. fonts.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract boolean canLoadUnsafeResources();
 
     /**
diff --git a/core/java/android/content/ContextWrapper.java b/core/java/android/content/ContextWrapper.java
index 89abfc9..3d724f0 100644
--- a/core/java/android/content/ContextWrapper.java
+++ b/core/java/android/content/ContextWrapper.java
@@ -35,6 +35,7 @@
 import android.graphics.Bitmap;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
@@ -739,7 +740,7 @@
 
     /** @hide */
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ComponentName startForegroundServiceAsUser(Intent service, UserHandle user) {
         return mBase.startForegroundServiceAsUser(service, user);
     }
@@ -942,7 +943,7 @@
 
     /** @hide */
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Context createApplicationContext(ApplicationInfo application,
             int flags) throws PackageManager.NameNotFoundException {
         return mBase.createApplicationContext(application, flags);
diff --git a/core/java/android/content/CursorLoader.java b/core/java/android/content/CursorLoader.java
index 4ff5cca..fda646c 100644
--- a/core/java/android/content/CursorLoader.java
+++ b/core/java/android/content/CursorLoader.java
@@ -19,6 +19,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.database.Cursor;
 import android.net.Uri;
+import android.os.Build;
 import android.os.CancellationSignal;
 import android.os.OperationCanceledException;
 
@@ -45,7 +46,7 @@
  */
 @Deprecated
 public class CursorLoader extends AsyncTaskLoader<Cursor> {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     final ForceLoadContentObserver mObserver;
 
     Uri mUri;
@@ -55,7 +56,7 @@
     String mSortOrder;
 
     Cursor mCursor;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     CancellationSignal mCancellationSignal;
 
     /* Runs on a worker thread */
diff --git a/core/java/android/content/IContentProvider.java b/core/java/android/content/IContentProvider.java
index 84b0f0e..becba67 100644
--- a/core/java/android/content/IContentProvider.java
+++ b/core/java/android/content/IContentProvider.java
@@ -152,7 +152,7 @@
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
     static final String descriptor = "android.content.IContentProvider";
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     static final int QUERY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION;
     static final int GET_TYPE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 1;
     static final int INSERT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 2;
diff --git a/core/java/android/content/IContentService.aidl b/core/java/android/content/IContentService.aidl
index 03c99e1..2044fc0 100644
--- a/core/java/android/content/IContentService.aidl
+++ b/core/java/android/content/IContentService.aidl
@@ -61,7 +61,7 @@
      */
     void sync(in SyncRequest request, String callingPackage);
     void syncAsUser(in SyncRequest request, int userId, String callingPackage);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void cancelSync(in Account account, String authority, in ComponentName cname);
     void cancelSyncAsUser(in Account account, String authority, in ComponentName cname, int userId);
 
@@ -159,7 +159,7 @@
      * @param cname component to identify sync service, must be null if account/providerName are
      * non-null.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean isSyncActive(in Account account, String authority, in ComponentName cname);
 
     /**
diff --git a/core/java/android/content/ISyncAdapter.aidl b/core/java/android/content/ISyncAdapter.aidl
index 9242d02..55210d4 100644
--- a/core/java/android/content/ISyncAdapter.aidl
+++ b/core/java/android/content/ISyncAdapter.aidl
@@ -32,7 +32,7 @@
      *
      * @param cb If called back with {@code false} accounts are not synced.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void onUnsyncableAccount(ISyncAdapterUnsyncableAccountCallback cb);
 
     /**
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index e5d2986..6bfc12d 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -28,7 +28,6 @@
 import android.annotation.SdkConstant.SdkConstantType;
 import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.app.AppGlobals;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.pm.ActivityInfo;
@@ -1747,7 +1746,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final String EXTRA_ORIGINATING_UID
             = "android.intent.extra.ORIGINATING_UID";
 
@@ -1978,7 +1976,6 @@
     @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS)
     @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
     @SystemApi
-    @TestApi
     public static final String ACTION_MANAGE_DEFAULT_APP =
             "android.intent.action.MANAGE_DEFAULT_APP";
 
@@ -1993,7 +1990,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final String EXTRA_ROLE_NAME = "android.intent.extra.ROLE_NAME";
 
     /**
@@ -2341,7 +2337,7 @@
      * @hide
      */
     @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String ACTION_ALARM_CHANGED = "android.intent.action.ALARM_CHANGED";
 
     /**
@@ -2538,7 +2534,7 @@
      *
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
     public static final String ACTION_ROLLBACK_COMMITTED =
             "android.intent.action.ROLLBACK_COMMITTED";
@@ -3679,7 +3675,7 @@
      * {@link android.Manifest.permission#MANAGE_USERS} to receive this broadcast.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String ACTION_USER_SWITCHED =
             "android.intent.action.USER_SWITCHED";
 
@@ -7386,7 +7382,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static Intent parseCommandArgs(ShellCommand cmd, CommandOptionHandler optionHandler)
             throws URISyntaxException {
         Intent intent = new Intent();
@@ -7777,7 +7773,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static void printIntentArgsHelp(PrintWriter pw, String prefix) {
         final String[] lines = new String[] {
                 "<INTENT> specifications include these flags and arguments:",
@@ -8067,7 +8063,7 @@
     }
 
     /** {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setAllowFds(boolean allowFds) {
         if (mExtras != null) {
             mExtras.setAllowFds(allowFds);
@@ -10414,7 +10410,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public String toInsecureString() {
         StringBuilder b = new StringBuilder(128);
 
@@ -11097,7 +11093,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void prepareToLeaveProcess(Context context) {
         final boolean leavingPackage = (mComponent == null)
                 || !Objects.equals(mComponent.getPackageName(), context.getPackageName());
diff --git a/core/java/android/content/IntentFilter.java b/core/java/android/content/IntentFilter.java
index ee9bd3d..79b0b02 100644
--- a/core/java/android/content/IntentFilter.java
+++ b/core/java/android/content/IntentFilter.java
@@ -562,7 +562,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final void setAutoVerify(boolean autoVerify) {
         mVerifyState &= ~STATE_VERIFY_AUTO;
         if (autoVerify) mVerifyState |= STATE_VERIFY_AUTO;
@@ -942,7 +942,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final boolean hasExactDataType(String type) {
         return mDataTypes != null && mDataTypes.contains(type);
     }
@@ -1287,7 +1287,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final boolean hasDataSchemeSpecificPart(PatternMatcher ssp) {
         if (mDataSchemeSpecificParts == null) {
             return false;
@@ -1371,7 +1371,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final boolean hasDataAuthority(AuthorityEntry auth) {
         if (mDataAuthorities == null) {
             return false;
@@ -1480,7 +1480,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final boolean hasDataPath(PatternMatcher path) {
         if (mDataPaths == null) {
             return false;
diff --git a/core/java/android/content/SyncAdapterType.java b/core/java/android/content/SyncAdapterType.java
index 7bcdbfd..4acf6f2 100644
--- a/core/java/android/content/SyncAdapterType.java
+++ b/core/java/android/content/SyncAdapterType.java
@@ -35,11 +35,11 @@
     private final boolean userVisible;
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
     private final boolean supportsUploading;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final boolean isAlwaysSyncable;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final boolean allowParallelSyncs;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final String settingsActivity;
     private final String packageName;
 
diff --git a/core/java/android/content/UndoManager.java b/core/java/android/content/UndoManager.java
index ed9cd86..87afbf8 100644
--- a/core/java/android/content/UndoManager.java
+++ b/core/java/android/content/UndoManager.java
@@ -17,6 +17,7 @@
 package android.content;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.text.TextUtils;
 import android.util.ArrayMap;
@@ -85,11 +86,11 @@
      */
     public static final int MERGE_MODE_ANY = 2;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public UndoManager() {
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public UndoOwner getOwner(String tag, Object data) {
         if (tag == null) {
             throw new NullPointerException("tag can't be null");
@@ -126,7 +127,7 @@
      * Flatten the current undo state into a Parcel object, which can later be restored
      * with {@link #restoreInstanceState(android.os.Parcel, java.lang.ClassLoader)}.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void saveInstanceState(Parcel p) {
         if (mUpdateCount > 0) {
             throw new IllegalStateException("Can't save state while updating");
@@ -175,7 +176,7 @@
      * associated with each {@link UndoOwner}, which requires separate calls to
      * {@link #getOwner(String, Object)} to re-associate the owner with its data.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void restoreInstanceState(Parcel p, ClassLoader loader) {
         if (mUpdateCount > 0) {
             throw new IllegalStateException("Can't save state while updating");
@@ -236,7 +237,7 @@
      * @param count Number of undo states to pop.
      * @return Returns the number of undo states that were actually popped.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int undo(UndoOwner[] owners, int count) {
         if (mWorking != null) {
             throw new IllegalStateException("Can't be called during an update");
@@ -274,7 +275,7 @@
      * @param count Number of undo states to pop.
      * @return Returns the number of undo states that were actually redone.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int redo(UndoOwner[] owners, int count) {
         if (mWorking != null) {
             throw new IllegalStateException("Can't be called during an update");
@@ -303,12 +304,12 @@
      * useful for editors to know whether they should be generating new undo state
      * when they see edit operations happening.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isInUndo() {
         return mInUndo;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int forgetUndos(UndoOwner[] owners, int count) {
         if (count < 0) {
             count = mUndos.size();
@@ -330,7 +331,7 @@
         return removed;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int forgetRedos(UndoOwner[] owners, int count) {
         if (count < 0) {
             count = mRedos.size();
@@ -357,7 +358,7 @@
      * @param owners If non-null, only those states containing an operation with one of
      * the owners supplied here will be counted.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int countUndos(UndoOwner[] owners) {
         if (owners == null) {
             return mUndos.size();
@@ -377,7 +378,7 @@
      * @param owners If non-null, only those states containing an operation with one of
      * the owners supplied here will be counted.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int countRedos(UndoOwner[] owners) {
         if (owners == null) {
             return mRedos.size();
@@ -417,7 +418,7 @@
      * they are all matched by a later call to {@link #endUpdate}.
      * @param label Optional user-visible label for this new undo state.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void beginUpdate(CharSequence label) {
         if (mInUndo) {
             throw new IllegalStateException("Can't being update while performing undo/redo");
@@ -450,7 +451,7 @@
      * Forcibly set a new for the new undo state being built within a {@link #beginUpdate}.
      * Any existing label will be replaced with this one.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setUndoLabel(CharSequence label) {
         if (mWorking == null) {
             throw new IllegalStateException("Must be called during an update");
@@ -525,7 +526,7 @@
      * @param mergeMode May be either {@link #MERGE_MODE_NONE}, {@link #MERGE_MODE_UNIQUE},
      * or {@link #MERGE_MODE_ANY}.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public <T extends UndoOperation> T getLastOperation(Class<T> clazz, UndoOwner owner,
             int mergeMode) {
         if (mWorking == null) {
@@ -555,7 +556,7 @@
      * @param mergeMode May be either {@link #MERGE_MODE_NONE}, {@link #MERGE_MODE_UNIQUE},
      * or {@link #MERGE_MODE_ANY}.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void addOperation(UndoOperation<?> op, int mergeMode) {
         if (mWorking == null) {
             throw new IllegalStateException("Must be called during an update");
@@ -582,7 +583,7 @@
      * Finish the creation of an undo state, matching a previous call to
      * {@link #beginUpdate}.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void endUpdate() {
         if (mWorking == null) {
             throw new IllegalStateException("Must be called during an update");
@@ -631,7 +632,7 @@
      * @return Returns an integer identifier for the committed undo state, which
      * can later be used to try to uncommit the state to perform further edits on it.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int commitState(UndoOwner owner) {
         if (mWorking != null && mWorking.hasData()) {
             if (owner == null || mWorking.hasOperation(owner)) {
diff --git a/core/java/android/content/UndoOperation.java b/core/java/android/content/UndoOperation.java
index 235d721..25aeca3 100644
--- a/core/java/android/content/UndoOperation.java
+++ b/core/java/android/content/UndoOperation.java
@@ -17,6 +17,7 @@
 package android.content;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -35,7 +36,7 @@
      * @param owner Who owns the data being modified by this undo state; must be
      * returned by {@link UndoManager#getOwner(String, Object) UndoManager.getOwner}.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public UndoOperation(UndoOwner owner) {
         mOwner = owner;
     }
@@ -43,7 +44,7 @@
     /**
      * Construct from a Parcel.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected UndoOperation(Parcel src, ClassLoader loader) {
     }
 
diff --git a/core/java/android/content/integrity/AppIntegrityManager.java b/core/java/android/content/integrity/AppIntegrityManager.java
index 4db4c73..1196064 100644
--- a/core/java/android/content/integrity/AppIntegrityManager.java
+++ b/core/java/android/content/integrity/AppIntegrityManager.java
@@ -36,7 +36,6 @@
  *
  * @hide
  */
-@TestApi
 @SystemApi
 @SystemService(Context.APP_INTEGRITY_SERVICE)
 public class AppIntegrityManager {
diff --git a/core/java/android/content/integrity/IntegrityFormula.java b/core/java/android/content/integrity/IntegrityFormula.java
index fc177721..d965ef5 100644
--- a/core/java/android/content/integrity/IntegrityFormula.java
+++ b/core/java/android/content/integrity/IntegrityFormula.java
@@ -19,7 +19,6 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.content.integrity.AtomicFormula.BooleanAtomicFormula;
 import android.content.integrity.AtomicFormula.LongAtomicFormula;
 import android.content.integrity.AtomicFormula.StringAtomicFormula;
@@ -38,7 +37,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 @VisibleForTesting
 public abstract class IntegrityFormula {
 
diff --git a/core/java/android/content/integrity/Rule.java b/core/java/android/content/integrity/Rule.java
index d29e6df..c421c40 100644
--- a/core/java/android/content/integrity/Rule.java
+++ b/core/java/android/content/integrity/Rule.java
@@ -21,7 +21,6 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -38,7 +37,6 @@
  *
  * @hide
  */
-@TestApi
 @SystemApi
 @VisibleForTesting
 public final class Rule implements Parcelable {
diff --git a/core/java/android/content/integrity/RuleSet.java b/core/java/android/content/integrity/RuleSet.java
index e121ff8..b423b54 100644
--- a/core/java/android/content/integrity/RuleSet.java
+++ b/core/java/android/content/integrity/RuleSet.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -30,7 +29,6 @@
  *
  * @hide
  */
-@TestApi
 @SystemApi
 public class RuleSet {
     private final String mVersion;
diff --git a/core/java/android/content/om/IOverlayManager.aidl b/core/java/android/content/om/IOverlayManager.aidl
index 3d7e3be..44b5c44 100644
--- a/core/java/android/content/om/IOverlayManager.aidl
+++ b/core/java/android/content/om/IOverlayManager.aidl
@@ -37,7 +37,7 @@
      *         mapped to lists of overlays; if no overlays exist for the
      *         requested user, an empty map is returned.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     Map getAllOverlays(in int userId);
 
     /**
@@ -61,7 +61,7 @@
      * @return The OverlayInfo for the overlay package; or null if no such
      *         overlay package exists.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     OverlayInfo getOverlayInfo(in String packageName, in int userId);
 
     /**
diff --git a/core/java/android/content/om/OverlayInfo.java b/core/java/android/content/om/OverlayInfo.java
index 62815dd..517e4bd 100644
--- a/core/java/android/content/om/OverlayInfo.java
+++ b/core/java/android/content/om/OverlayInfo.java
@@ -22,6 +22,7 @@
 import android.annotation.SystemApi;
 import android.annotation.UserIdInt;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -174,7 +175,7 @@
      * The state of this OverlayInfo as defined by the STATE_* constants in this class.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final @State int state;
 
     /**
diff --git a/core/java/android/content/om/OverlayManager.java b/core/java/android/content/om/OverlayManager.java
index fd3d48f..217f637c 100644
--- a/core/java/android/content/om/OverlayManager.java
+++ b/core/java/android/content/om/OverlayManager.java
@@ -23,7 +23,7 @@
 import android.annotation.SystemService;
 import android.compat.Compatibility;
 import android.compat.annotation.ChangeId;
-import android.compat.annotation.EnabledAfter;
+import android.compat.annotation.EnabledSince;
 import android.content.Context;
 import android.os.Build;
 import android.os.Process;
@@ -90,7 +90,7 @@
      * java.lang.IllegalStateException}, which existed in the source prior to R.
      */
     @ChangeId
-    @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.Q)
+    @EnabledSince(targetSdkVersion = Build.VERSION_CODES.R)
     private static final long THROW_SECURITY_EXCEPTIONS = 147340954;
 
     /**
diff --git a/core/java/android/content/pm/ActivityInfo.java b/core/java/android/content/pm/ActivityInfo.java
index 31c77ee..5fcc18c 100644
--- a/core/java/android/content/pm/ActivityInfo.java
+++ b/core/java/android/content/pm/ActivityInfo.java
@@ -24,6 +24,7 @@
 import android.content.res.Configuration;
 import android.content.res.Configuration.NativeConfig;
 import android.content.res.TypedArray;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.util.Printer;
@@ -373,7 +374,7 @@
      * {@link android.R.attr#showForAllUsers} attribute.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int FLAG_SHOW_FOR_ALL_USERS = 0x0400;
     /**
      * Bit in {@link #flags} corresponding to an immersive activity
@@ -502,7 +503,7 @@
      * this activity is launched into such a container a SecurityException will be
      * thrown. Set from the {@link android.R.attr#allowEmbedded} attribute.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int FLAG_ALLOW_EMBEDDED = 0x80000000;
 
     /**
@@ -859,7 +860,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static @NativeConfig int activityInfoConfigJavaToNative(@Config int input) {
         int output = 0;
         for (int i = 0; i < CONFIG_NATIVE_BITS.length; i++) {
diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java
index 8f4fc26..81d9b11 100644
--- a/core/java/android/content/pm/ApplicationInfo.java
+++ b/core/java/android/content/pm/ApplicationInfo.java
@@ -128,7 +128,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int fullBackupContent = 0;
 
     /**
@@ -2101,6 +2101,7 @@
     }
 
     /** @hide */
+    @SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
     public boolean isOem() {
         return (privateFlags & ApplicationInfo.PRIVATE_FLAG_OEM) != 0;
     }
@@ -2148,11 +2149,13 @@
     }
 
     /** @hide */
+    @SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
     public boolean isVendor() {
         return (privateFlags & ApplicationInfo.PRIVATE_FLAG_VENDOR) != 0;
     }
 
     /** @hide */
+    @SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
     public boolean isProduct() {
         return (privateFlags & ApplicationInfo.PRIVATE_FLAG_PRODUCT) != 0;
     }
@@ -2236,7 +2239,7 @@
     /** {@hide} */ public void setGwpAsanMode(@GwpAsanMode int value) { gwpAsanMode = value; }
 
     /** {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public String getCodePath() { return scanSourceDir; }
     /** {@hide} */ public String getBaseCodePath() { return sourceDir; }
     /** {@hide} */ public String[] getSplitCodePaths() { return splitSourceDirs; }
diff --git a/core/java/android/content/pm/BaseParceledListSlice.java b/core/java/android/content/pm/BaseParceledListSlice.java
index bd847bf..5c7a548 100644
--- a/core/java/android/content/pm/BaseParceledListSlice.java
+++ b/core/java/android/content/pm/BaseParceledListSlice.java
@@ -18,6 +18,7 @@
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.os.Binder;
+import android.os.Build;
 import android.os.IBinder;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -133,7 +134,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public List<T> getList() {
         return mList;
     }
@@ -207,7 +208,7 @@
 
     protected abstract void writeElement(T parcelable, Parcel reply, int callFlags);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected abstract void writeParcelableCreator(T parcelable, Parcel dest);
 
     protected abstract Parcelable.Creator<?> readParcelableCreator(Parcel from, ClassLoader loader);
diff --git a/core/java/android/content/pm/ComponentInfo.java b/core/java/android/content/pm/ComponentInfo.java
index 628bcd7..c67d00e 100644
--- a/core/java/android/content/pm/ComponentInfo.java
+++ b/core/java/android/content/pm/ComponentInfo.java
@@ -19,6 +19,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.ComponentName;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.os.Parcel;
 import android.util.Printer;
 
@@ -158,7 +159,7 @@
     }
 
     /** {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ComponentName getComponentName() {
         return new ComponentName(packageName, name);
     }
diff --git a/core/java/android/content/pm/IPackageInstaller.aidl b/core/java/android/content/pm/IPackageInstaller.aidl
index 0105896..58b2147 100644
--- a/core/java/android/content/pm/IPackageInstaller.aidl
+++ b/core/java/android/content/pm/IPackageInstaller.aidl
@@ -47,7 +47,7 @@
     void registerCallback(IPackageInstallerCallback callback, int userId);
     void unregisterCallback(IPackageInstallerCallback callback);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void uninstall(in VersionedPackage versionedPackage, String callerPackageName, int flags,
             in IntentSender statusReceiver, int userId);
 
diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl
index f257326..bd6edb4 100644
--- a/core/java/android/content/pm/IPackageManager.aidl
+++ b/core/java/android/content/pm/IPackageManager.aidl
@@ -64,7 +64,7 @@
  */
 interface IPackageManager {
     void checkPackageStartable(String packageName, int userId);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean isPackageAvailable(String packageName, int userId);
     @UnsupportedAppUsage
     PackageInfo getPackageInfo(String packageName, int flags, int userId);
@@ -132,7 +132,7 @@
 
     boolean canForwardTo(in Intent intent, String resolvedType, int sourceUserId, int targetUserId);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     ParceledListSlice queryIntentActivities(in Intent intent,
             String resolvedType, int flags, int userId);
 
@@ -177,7 +177,7 @@
      * limit that kicks in when flags are included that bloat up the data
      * returned.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     ParceledListSlice getInstalledApplications(int flags, int userId);
 
     /**
@@ -198,7 +198,7 @@
      * @param outInfo Filled in with a list of the ProviderInfo for each
      *                name in 'outNames'.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void querySyncProviders(inout List<String> outNames,
             inout List<ProviderInfo> outInfo);
 
@@ -209,7 +209,7 @@
     InstrumentationInfo getInstrumentationInfo(
             in ComponentName className, int flags);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     ParceledListSlice queryInstrumentation(
             String targetPackage, int flags);
 
@@ -645,7 +645,7 @@
     void setSystemAppHiddenUntilInstalled(String packageName, boolean hidden);
     boolean setSystemAppInstallState(String packageName, boolean installed, int userId);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     IPackageInstaller getPackageInstaller();
 
     boolean setBlockUninstallForUser(String packageName, boolean blockUninstall, int userId);
@@ -657,7 +657,7 @@
     boolean isPackageSignedByKeySet(String packageName, in KeySet ks);
     boolean isPackageSignedByKeySetExactly(String packageName, in KeySet ks);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     String getPermissionControllerPackageName();
 
     ParceledListSlice getInstantApps(int userId);
@@ -674,9 +674,9 @@
      */
     void setUpdateAvailable(String packageName, boolean updateAvaialble);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     String getServicesSystemSharedLibraryPackageName();
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     String getSharedSystemSharedLibraryPackageName();
 
     ChangedPackages getChangedPackages(int sequenceNumber, int userId);
@@ -752,7 +752,7 @@
     //------------------------------------------------------------------------
     // We need to keep these in IPackageManager for app compatibility
     //------------------------------------------------------------------------
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     String[] getAppOpPermissionPackages(String permissionName);
 
     @UnsupportedAppUsage
@@ -767,10 +767,10 @@
     @UnsupportedAppUsage
     void removePermission(String name);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     int checkPermission(String permName, String pkgName, int userId);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void grantRuntimePermission(String packageName, String permissionName, int userId);
 
     //------------------------------------------------------------------------
@@ -785,4 +785,6 @@
     List<String> getMimeGroup(String packageName, String group);
 
     boolean isAutoRevokeWhitelisted(String packageName);
+
+    void grantImplicitAccess(int queryingUid, String visibleAuthority);
 }
diff --git a/core/java/android/content/pm/OWNERS b/core/java/android/content/pm/OWNERS
new file mode 100644
index 0000000..a16bb4f
--- /dev/null
+++ b/core/java/android/content/pm/OWNERS
@@ -0,0 +1 @@
+per-file PackageParser.java = chiuwinson@google.com
diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java
index 80ba7b1..47f84c8 100644
--- a/core/java/android/content/pm/PackageInstaller.java
+++ b/core/java/android/content/pm/PackageInstaller.java
@@ -1467,13 +1467,13 @@
         /** {@hide} */
         public @InstallReason int installReason = PackageManager.INSTALL_REASON_UNKNOWN;
         /** {@hide} */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public long sizeBytes = -1;
         /** {@hide} */
         @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
         public String appPackageName;
         /** {@hide} */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public Bitmap appIcon;
         /** {@hide} */
         @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
@@ -1483,7 +1483,7 @@
         /** {@hide} */
         public Uri originatingUri;
         /** {@hide} */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public int originatingUid = UID_UNKNOWN;
         /** {@hide} */
         public Uri referrerUri;
@@ -1692,7 +1692,6 @@
          *
          * @hide
          */
-        @TestApi
         @SystemApi
         @RequiresPermission(android.Manifest.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS)
         public void setGrantedRuntimePermissions(String[] permissions) {
@@ -1764,7 +1763,7 @@
          * @see SessionParams#setEnableRollback(boolean, int)
          * @hide
          */
-        @SystemApi @TestApi
+        @SystemApi
         public void setEnableRollback(boolean enable) {
             if (enable) {
                 installFlags |= PackageManager.INSTALL_ENABLE_ROLLBACK;
@@ -1788,7 +1787,7 @@
          * @param dataPolicy the rollback data policy for this session
          * @hide
          */
-        @SystemApi @TestApi
+        @SystemApi
         public void setEnableRollback(boolean enable,
                 @PackageManager.RollbackDataPolicy int dataPolicy) {
             if (enable) {
@@ -1811,7 +1810,7 @@
         }
 
         /** {@hide} */
-        @SystemApi @TestApi
+        @SystemApi
         public void setRequestDowngrade(boolean requestDowngrade) {
             if (requestDowngrade) {
                 installFlags |= PackageManager.INSTALL_REQUEST_DOWNGRADE;
@@ -1934,7 +1933,7 @@
          *
          * {@hide}
          */
-        @SystemApi @TestApi
+        @SystemApi
         @RequiresPermission(Manifest.permission.INSTALL_PACKAGES)
         public void setStaged() {
             this.isStaged = true;
@@ -1945,7 +1944,7 @@
          *
          * {@hide}
          */
-        @SystemApi @TestApi
+        @SystemApi
         @RequiresPermission(Manifest.permission.INSTALL_PACKAGES)
         public void setInstallAsApex() {
             installFlags |= PackageManager.INSTALL_APEX;
@@ -2110,13 +2109,13 @@
         @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
         public String installerPackageName;
         /** {@hide} */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public String resolvedBaseCodePath;
         /** {@hide} */
         @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
         public float progress;
         /** {@hide} */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public boolean sealed;
         /** {@hide} */
         @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
@@ -2189,7 +2188,7 @@
         public int rollbackDataPolicy;
 
         /** {@hide} */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public SessionInfo() {
         }
 
@@ -2431,7 +2430,6 @@
          *
          * @hide
          */
-        @TestApi
         @SystemApi
         public @NonNull Set<String> getWhitelistedRestrictedPermissions() {
             if ((installFlags & PackageManager.INSTALL_ALL_WHITELIST_RESTRICTED_PERMISSIONS) != 0) {
@@ -2455,7 +2453,6 @@
          *
          * @hide
          */
-        @TestApi
         @SystemApi
         public int getAutoRevokePermissionsMode() {
             return autoRevokePermissionsMode;
@@ -2576,7 +2573,7 @@
          *
          * @hide
          */
-        @SystemApi @TestApi
+        @SystemApi
         @PackageManager.RollbackDataPolicy
         public int getRollbackDataPolicy() {
             return rollbackDataPolicy;
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index 46af630..74463fd 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -40,7 +40,7 @@
 import android.app.admin.DevicePolicyManager;
 import android.app.usage.StorageStatsManager;
 import android.compat.annotation.ChangeId;
-import android.compat.annotation.EnabledAfter;
+import android.compat.annotation.EnabledSince;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.ComponentName;
 import android.content.Context;
@@ -118,7 +118,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public interface OnPermissionsChangedListener {
 
         /**
@@ -477,7 +476,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int MATCH_FACTORY_ONLY = 0x00200000;
 
     /**
@@ -609,7 +607,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int MODULE_APEX_NAME = 0x00000001;
 
     /** @hide */
@@ -1771,7 +1768,7 @@
      * @hide
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int MOVE_INTERNAL = 0x00000001;
 
     /**
@@ -1780,7 +1777,7 @@
      * @hide
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int MOVE_EXTERNAL_MEDIA = 0x00000002;
 
     /** {@hide} */
@@ -3312,7 +3309,6 @@
     * @hide
     */
     @SystemApi
-    @TestApi
     public static final int FLAG_PERMISSION_USER_SET = 1 << 0;
 
     /**
@@ -3323,7 +3319,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int FLAG_PERMISSION_USER_FIXED =  1 << 1;
 
     /**
@@ -3334,7 +3329,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int FLAG_PERMISSION_POLICY_FIXED =  1 << 2;
 
     /**
@@ -3351,7 +3345,6 @@
      */
     @Deprecated
     @SystemApi
-    @TestApi
     public static final int FLAG_PERMISSION_REVOKE_ON_UPGRADE =  1 << 3;
 
     /**
@@ -3361,7 +3354,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int FLAG_PERMISSION_SYSTEM_FIXED =  1 << 4;
 
     /**
@@ -3382,7 +3374,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int FLAG_PERMISSION_REVIEW_REQUIRED =  1 << 6;
 
     /**
@@ -3420,7 +3411,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final int FLAG_PERMISSION_RESTRICTION_INSTALLER_EXEMPT =  1 << 11;
 
@@ -3432,7 +3422,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final int FLAG_PERMISSION_RESTRICTION_SYSTEM_EXEMPT =  1 << 12;
 
@@ -3445,7 +3434,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final int FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT =  1 << 13;
 
@@ -3458,7 +3446,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final int FLAG_PERMISSION_APPLY_RESTRICTION =  1 << 14;
 
@@ -3468,7 +3455,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int FLAG_PERMISSION_GRANTED_BY_ROLE =  1 << 15;
 
     /**
@@ -3480,7 +3466,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int FLAG_PERMISSION_REVOKED_COMPAT =  FLAG_PERMISSION_REVOKE_ON_UPGRADE;
 
     /**
@@ -3490,7 +3475,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int FLAG_PERMISSION_ONE_TIME = 1 << 16;
 
     /**
@@ -3605,7 +3589,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @TestApi
     public static final String SYSTEM_SHARED_LIBRARY_SERVICES = "android.ext.services";
 
@@ -3618,7 +3602,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @TestApi
     public static final String SYSTEM_SHARED_LIBRARY_SHARED = "android.ext.shared";
 
@@ -3698,7 +3682,7 @@
      * @hide
      */
     @ChangeId
-    @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.Q)
+    @EnabledSince(targetSdkVersion = Build.VERSION_CODES.R)
     public static final long FILTER_APPLICATION_QUERY = 135549675L;
 
     /** {@hide} */
@@ -3812,6 +3796,7 @@
      *             found on the system.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @RequiresPermission(Manifest.permission.INTERACT_ACROSS_USERS)
     @UnsupportedAppUsage
     public abstract PackageInfo getPackageInfoAsUser(@NonNull String packageName,
@@ -3878,6 +3863,7 @@
      *         does not contain such an activity.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract @Nullable Intent getCarLaunchIntentForPackage(@NonNull String packageName);
 
     /**
@@ -3943,6 +3929,7 @@
      *             found on the system.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract int getPackageUidAsUser(@NonNull String packageName, @UserIdInt int userId)
             throws NameNotFoundException;
@@ -3961,6 +3948,7 @@
      *             found on the system.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract int getPackageUidAsUser(@NonNull String packageName,
             @PackageInfoFlags int flags, @UserIdInt int userId) throws NameNotFoundException;
@@ -4003,7 +3991,8 @@
      *
      * @hide
      */
-    @TestApi @SystemApi
+    @SuppressWarnings("HiddenAbstractMethod")
+    @SystemApi
     public abstract boolean arePermissionsIndividuallyControlled();
 
     /**
@@ -4011,6 +4000,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract boolean isWirelessConsentModeEnabled();
 
     /**
@@ -4063,6 +4053,7 @@
             @ApplicationInfoFlags int flags) throws NameNotFoundException;
 
     /** {@hide} */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @UnsupportedAppUsage
     public abstract ApplicationInfo getApplicationInfoAsUser(@NonNull String packageName,
@@ -4244,8 +4235,8 @@
      *         deleted with {@code DELETE_KEEP_DATA} flag set).
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
-    @TestApi
     @SystemApi
     @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL)
     public abstract List<PackageInfo> getInstalledPackagesAsUser(@PackageInfoFlags int flags,
@@ -4293,6 +4284,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     @NonNull
     @TestApi
@@ -4406,7 +4398,7 @@
      *
      * @hide
      */
-    @TestApi
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS)
     public abstract void grantRuntimePermission(@NonNull String packageName,
@@ -4433,7 +4425,7 @@
      *
      * @hide
      */
-    @TestApi
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @RequiresPermission(android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS)
     public abstract void revokeRuntimePermission(@NonNull String packageName,
@@ -4461,7 +4453,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     @RequiresPermission(android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS)
     public void revokeRuntimePermission(@NonNull String packageName,
@@ -4479,8 +4470,8 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
-    @TestApi
     @RequiresPermission(anyOf = {
             android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS,
             android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS,
@@ -4502,8 +4493,8 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
-    @TestApi
     @RequiresPermission(anyOf = {
             android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS,
             android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS
@@ -4726,6 +4717,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract boolean shouldShowRequestPermissionRationale(@NonNull String permName);
 
@@ -4841,6 +4833,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @TestApi
     public abstract @Nullable String[] getNamesForUids(int[] uids);
 
@@ -4857,6 +4850,7 @@
      *             found on the system.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract int getUidForSharedUser(@NonNull String sharedUserName)
             throws NameNotFoundException;
@@ -4900,6 +4894,7 @@
      *         deleted with {@code DELETE_KEEP_DATA} flag set).
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @TestApi
     public abstract List<ApplicationInfo> getInstalledApplicationsAsUser(
@@ -4912,6 +4907,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @RequiresPermission(Manifest.permission.ACCESS_INSTANT_APPS)
     public abstract @NonNull List<InstantAppInfo> getInstantApps();
@@ -4923,6 +4919,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @RequiresPermission(Manifest.permission.ACCESS_INSTANT_APPS)
     public abstract @Nullable Drawable getInstantAppIcon(String packageName);
@@ -4971,6 +4968,7 @@
      * deprecated
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract int getInstantAppCookieMaxSize();
 
     /**
@@ -5028,6 +5026,7 @@
     /**
      * @removed
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract boolean setInstantAppCookie(@Nullable byte[] cookie);
 
     /**
@@ -5066,6 +5065,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract @NonNull List<SharedLibraryInfo> getSharedLibrariesAsUser(
             @InstallFlags int flags, @UserIdInt int userId);
 
@@ -5078,6 +5078,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @RequiresPermission(Manifest.permission.ACCESS_SHARED_LIBRARIES)
     @SystemApi
@@ -5097,6 +5098,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     @TestApi
     public abstract @NonNull String getServicesSystemSharedLibraryPackageName();
@@ -5108,6 +5110,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     @TestApi
     public abstract @NonNull String getSharedSystemSharedLibraryPackageName();
@@ -5214,6 +5217,7 @@
      *         containing something else, such as the activity resolver.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Nullable
     @UnsupportedAppUsage
     public abstract ResolveInfo resolveActivityAsUser(@NonNull Intent intent,
@@ -5255,6 +5259,7 @@
      *         empty list is returned.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @UnsupportedAppUsage
     public abstract List<ResolveInfo> queryIntentActivitiesAsUser(@NonNull Intent intent,
@@ -5278,6 +5283,7 @@
      *         empty list is returned.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @RequiresPermission(Manifest.permission.INTERACT_ACROSS_USERS)
     @SystemApi
@@ -5340,6 +5346,7 @@
      *         no matching receivers, an empty list or null is returned.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @SystemApi
     @RequiresPermission(Manifest.permission.INTERACT_ACROSS_USERS)
@@ -5351,6 +5358,7 @@
     /**
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @UnsupportedAppUsage
     public abstract List<ResolveInfo> queryBroadcastReceiversAsUser(@NonNull Intent intent,
@@ -5389,6 +5397,7 @@
     /**
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Nullable
     public abstract ResolveInfo resolveServiceAsUser(@NonNull Intent intent,
             @ResolveInfoFlags int flags, @UserIdInt int userId);
@@ -5421,6 +5430,7 @@
      *         empty list or null is returned.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @UnsupportedAppUsage
     public abstract List<ResolveInfo> queryIntentServicesAsUser(@NonNull Intent intent,
@@ -5459,6 +5469,7 @@
      *         no matching services, an empty list or null is returned.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @UnsupportedAppUsage
     public abstract List<ResolveInfo> queryIntentContentProvidersAsUser(
@@ -5526,6 +5537,7 @@
      *         provider. If a provider was not found, returns null.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Nullable
     @UnsupportedAppUsage
     public abstract ProviderInfo resolveContentProviderAsUser(@NonNull String providerName,
@@ -5910,6 +5922,7 @@
      * @return the drawable or null if no drawable is required.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Nullable
     @UnsupportedAppUsage
     public abstract Drawable getUserBadgeForDensity(@NonNull UserHandle user, int density);
@@ -5928,6 +5941,7 @@
      * @return the drawable or null if no drawable is required.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Nullable
     @UnsupportedAppUsage
     public abstract Drawable getUserBadgeForDensityNoBackground(@NonNull UserHandle user,
@@ -6052,6 +6066,7 @@
             throws NameNotFoundException;
 
     /** @hide */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @UnsupportedAppUsage
     public abstract Resources getResourcesForApplicationAsUser(@NonNull String packageName,
@@ -6097,6 +6112,7 @@
      *
      * @deprecated use {@link PackageInstaller#installExistingPackage()} instead.
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Deprecated
     @SystemApi
     public abstract int installExistingPackage(@NonNull String packageName)
@@ -6109,6 +6125,7 @@
      *
      * @deprecated use {@link PackageInstaller#installExistingPackage()} instead.
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Deprecated
     @SystemApi
     public abstract int installExistingPackage(@NonNull String packageName,
@@ -6121,6 +6138,7 @@
      *
      * @deprecated use {@link PackageInstaller#installExistingPackage()} instead.
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Deprecated
     @RequiresPermission(anyOf = {
             Manifest.permission.INSTALL_EXISTING_PACKAGES,
@@ -6201,6 +6219,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @RequiresPermission(android.Manifest.permission.INTENT_FILTER_VERIFICATION_AGENT)
     public abstract void verifyIntentFilter(int verificationId, int verificationCode,
@@ -6226,6 +6245,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @RequiresPermission(Manifest.permission.INTERACT_ACROSS_USERS_FULL)
     public abstract int getIntentVerificationStatusAsUser(@NonNull String packageName,
@@ -6251,6 +6271,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @RequiresPermission(android.Manifest.permission.SET_PREFERRED_APPLICATIONS)
     public abstract boolean updateIntentVerificationStatusAsUser(@NonNull String packageName,
@@ -6268,6 +6289,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @SystemApi
     public abstract List<IntentFilterVerificationInfo> getIntentFilterVerifications(
@@ -6284,6 +6306,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @SystemApi
     public abstract List<IntentFilter> getAllIntentFilters(@NonNull String packageName);
@@ -6298,8 +6321,8 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Nullable
-    @TestApi
     @SystemApi
     @RequiresPermission(Manifest.permission.INTERACT_ACROSS_USERS_FULL)
     public abstract String getDefaultBrowserPackageNameAsUser(@UserIdInt int userId);
@@ -6316,6 +6339,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @RequiresPermission(allOf = {
             Manifest.permission.SET_PREFERRED_APPLICATIONS,
@@ -6342,6 +6366,7 @@
             @Nullable String installerPackageName);
 
     /** @hide */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @RequiresPermission(Manifest.permission.INSTALL_PACKAGES)
     public abstract void setUpdateAvailable(@NonNull String packageName, boolean updateAvaialble);
@@ -6362,6 +6387,7 @@
      *            indicate that no callback is desired.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @RequiresPermission(Manifest.permission.DELETE_PACKAGES)
     @UnsupportedAppUsage
     public abstract void deletePackage(@NonNull String packageName,
@@ -6382,6 +6408,7 @@
      * @param userId The user Id
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @RequiresPermission(anyOf = {
             Manifest.permission.DELETE_PACKAGES,
             Manifest.permission.INTERACT_ACROSS_USERS_FULL})
@@ -6399,6 +6426,7 @@
      *
      * @deprecated use {@link #getInstallSourceInfo(String)} instead
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Deprecated
     @Nullable
     public abstract String getInstallerPackageName(@NonNull String packageName);
@@ -6438,6 +6466,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract void clearApplicationUserData(@NonNull String packageName,
             @Nullable IPackageDataObserver observer);
@@ -6457,6 +6486,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract void deleteApplicationCacheFiles(@NonNull String packageName,
             @Nullable IPackageDataObserver observer);
@@ -6479,6 +6509,7 @@
      *            callback is desired.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract void deleteApplicationCacheFilesAsUser(@NonNull String packageName,
             @UserIdInt int userId, @Nullable IPackageDataObserver observer);
@@ -6512,6 +6543,7 @@
     }
 
     /** {@hide} */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract void freeStorageAndNotify(@Nullable String volumeUuid, long freeStorageSize,
             @Nullable IPackageDataObserver observer);
@@ -6545,6 +6577,7 @@
     }
 
     /** {@hide} */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract void freeStorage(@Nullable String volumeUuid, long freeStorageSize,
             @Nullable IntentSender pi);
@@ -6568,6 +6601,7 @@
      * @deprecated use {@link StorageStatsManager} instead.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Deprecated
     @UnsupportedAppUsage
     public abstract void getPackageSizeInfoAsUser(@NonNull String packageName,
@@ -6699,6 +6733,7 @@
      * an app to be responsible for a particular role and to check current role
      * holders, see {@link android.app.role.RoleManager}.
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Deprecated
     @UnsupportedAppUsage
     public abstract void replacePreferredActivity(@NonNull IntentFilter filter, int match,
@@ -6795,6 +6830,7 @@
      * default, if any.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Nullable
     @UnsupportedAppUsage
     public abstract ComponentName getHomeActivities(@NonNull List<ResolveInfo> outActivities);
@@ -6896,6 +6932,7 @@
      * @param userId Ther userId of the user whose restrictions are to be flushed.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract void flushPackageRestrictionsAsUser(@UserIdInt int userId);
 
@@ -6906,6 +6943,7 @@
      * or by installing it, such as with {@link #installExistingPackage(String)}
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract boolean setApplicationHiddenSettingAsUser(@NonNull String packageName,
             boolean hidden, @NonNull UserHandle userHandle);
@@ -6915,6 +6953,7 @@
      * @see #setApplicationHiddenSettingAsUser(String, boolean, UserHandle)
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract boolean getApplicationHiddenSettingAsUser(@NonNull String packageName,
             @NonNull UserHandle userHandle);
@@ -6941,8 +6980,8 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
-    @TestApi
     @RequiresPermission(Manifest.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS)
     public abstract void addOnPermissionsChangeListener(
             @NonNull OnPermissionsChangedListener listener);
@@ -6954,8 +6993,8 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
-    @TestApi
     @RequiresPermission(Manifest.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS)
     public abstract void removeOnPermissionsChangeListener(
             @NonNull OnPermissionsChangedListener listener);
@@ -6968,6 +7007,7 @@
      *        application's AndroidManifest.xml.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @UnsupportedAppUsage
     public abstract KeySet getKeySetByAlias(@NonNull String packageName, @NonNull String alias);
@@ -6975,6 +7015,7 @@
     /** Return the signing {@link KeySet} for this application.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @UnsupportedAppUsage
     public abstract KeySet getSigningKeySet(@NonNull String packageName);
@@ -6986,6 +7027,7 @@
      * Compare to {@link #isSignedByExactly(String packageName, KeySet ks)}.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract boolean isSignedBy(@NonNull String packageName, @NonNull KeySet ks);
 
@@ -6995,6 +7037,7 @@
      * {@link #isSignedBy(String packageName, KeySet ks)}.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract boolean isSignedByExactly(@NonNull String packageName, @NonNull KeySet ks);
 
@@ -7212,6 +7255,7 @@
      * @throws IllegalArgumentException if the package was not found.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract boolean isPackageSuspendedForUser(@NonNull String packageName, int userId);
 
@@ -7287,6 +7331,7 @@
      * @param packageName the package to change the category hint for.
      * @param categoryHint the category hint to set.
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract void setApplicationCategoryHint(@NonNull String packageName,
             @ApplicationInfo.Category int categoryHint);
 
@@ -7302,34 +7347,43 @@
     }
 
     /** {@hide} */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract int getMoveStatus(int moveId);
 
     /** {@hide} */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract void registerMoveCallback(@NonNull MoveCallback callback,
             @NonNull Handler handler);
     /** {@hide} */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract void unregisterMoveCallback(@NonNull MoveCallback callback);
 
     /** {@hide} */
-    @UnsupportedAppUsage
+    @SuppressWarnings("HiddenAbstractMethod")
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public abstract int movePackage(@NonNull String packageName, @NonNull VolumeInfo vol);
     /** {@hide} */
-    @UnsupportedAppUsage
+    @SuppressWarnings("HiddenAbstractMethod")
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public abstract @Nullable VolumeInfo getPackageCurrentVolume(@NonNull ApplicationInfo app);
     /** {@hide} */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public abstract List<VolumeInfo> getPackageCandidateVolumes(
             @NonNull ApplicationInfo app);
 
     /** {@hide} */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract int movePrimaryStorage(@NonNull VolumeInfo vol);
     /** {@hide} */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract @Nullable VolumeInfo getPrimaryStorageCurrentVolume();
     /** {@hide} */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract @NonNull List<VolumeInfo> getPrimaryStorageCandidateVolumes();
 
     /**
@@ -7339,6 +7393,7 @@
      * @return identity that uniquely identifies current device
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     public abstract VerifierDeviceIdentity getVerifierDeviceIdentity();
 
@@ -7347,6 +7402,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract boolean isUpgrade();
 
@@ -7376,6 +7432,7 @@
      *            {@link #ONLY_IF_NO_MATCH_FOUND}.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract void addCrossProfileIntentFilter(@NonNull IntentFilter filter,
             @UserIdInt int sourceUserId, @UserIdInt int targetUserId, int flags);
@@ -7387,12 +7444,14 @@
      * @param sourceUserId The source user id.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract void clearCrossProfileIntentFilters(@UserIdInt int sourceUserId);
 
     /**
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @UnsupportedAppUsage
     public abstract Drawable loadItemIcon(@NonNull PackageItemInfo itemInfo,
@@ -7401,18 +7460,20 @@
     /**
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @UnsupportedAppUsage
     public abstract Drawable loadUnbadgedItemIcon(@NonNull PackageItemInfo itemInfo,
             @Nullable ApplicationInfo appInfo);
 
     /** {@hide} */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract boolean isPackageAvailable(@NonNull String packageName);
 
     /** {@hide} */
     @NonNull
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static String installStatusToString(int status, @Nullable String msg) {
         final String str = installStatusToString(status);
         if (msg != null) {
@@ -7624,6 +7685,7 @@
      *         user, {@code INSTALL_REASON_UNKNOWN} is returned.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @TestApi
     @InstallReason
     public abstract int getInstallReason(@NonNull String packageName, @NonNull UserHandle user);
@@ -7652,6 +7714,7 @@
      * @see {@link android.content.Intent#ACTION_INSTANT_APP_RESOLVER_SETTINGS}
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Nullable
     @SystemApi
     public abstract ComponentName getInstantAppResolverSettingsComponent();
@@ -7663,6 +7726,7 @@
      * @see {@link android.content.Intent#ACTION_INSTALL_INSTANT_APP_PACKAGE}
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Nullable
     @SystemApi
     public abstract ComponentName getInstantAppInstallerComponent();
@@ -7673,6 +7737,7 @@
      * @see {@link android.provider.Settings.Secure#ANDROID_ID}
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Nullable
     public abstract String getInstantAppAndroidId(@NonNull String packageName,
             @NonNull UserHandle user);
@@ -7717,6 +7782,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     public abstract void registerDexModule(@NonNull String dexModulePath,
             @Nullable DexModuleRegisterCallback callback);
@@ -7926,7 +7992,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @Nullable
     public String getIncidentReportApproverPackageName() {
         throw new UnsupportedOperationException(
@@ -8018,6 +8083,20 @@
                 "getMimeGroup not implemented in subclass");
     }
 
+    /**
+     * Grants implicit visibility of the package that provides an authority to a querying UID.
+     *
+     * @throws SecurityException when called by a package other than the contacts provider
+     * @hide
+     */
+    public void grantImplicitAccess(int queryingUid, String visibleAuthority) {
+        try {
+            ActivityThread.getPackageManager().grantImplicitAccess(queryingUid, visibleAuthority);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
     // Some of the flags don't affect the query result, but let's be conservative and cache
     // each combination of flags separately.
 
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index 0adb66c..f53ec8a 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -143,8 +143,14 @@
  * <li>All installations must contain a single base APK.
  * </ul>
  *
+ * @deprecated This class is mostly unused and no new changes should be added to it. Use
+ * {@link android.content.pm.parsing.ParsingPackageUtils} and related parsing v2 infrastructure in
+ * the core/services parsing subpackages. Or for a quick parse of a provided APK, use
+ * {@link PackageManager#getPackageArchiveInfo(String, int)}.
+ *
  * @hide
  */
+@Deprecated
 public class PackageParser {
 
     public static final boolean DEBUG_JAR = false;
@@ -292,7 +298,7 @@
     public String[] mSeparateProcesses;
     private boolean mOnlyCoreApps;
     private DisplayMetrics mMetrics;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Callback mCallback;
     private File mCacheDir;
 
@@ -1363,7 +1369,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static void collectCertificates(Package pkg, File apkFile, boolean skipVerify)
             throws PackageParserException {
         final String apkPath = apkFile.getAbsolutePath();
@@ -6559,7 +6565,7 @@
             }
 
             /** set the signing certificates by which the APK proved it can be authenticated */
-            @UnsupportedAppUsage
+            @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
             public Builder setPastSigningCertificates(Signature[] pastSigningCertificates) {
                 mPastSigningCertificates = pastSigningCertificates;
                 return this;
@@ -6773,9 +6779,9 @@
         /**
          * Data used to feed the KeySetManagerService
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public ArraySet<String> mUpgradeKeySets;
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public ArrayMap<String, ArraySet<PublicKey>> mKeySetMapping;
 
         /**
diff --git a/core/java/android/content/pm/ParceledListSlice.java b/core/java/android/content/pm/ParceledListSlice.java
index 73119e0..b54bc5d 100644
--- a/core/java/android/content/pm/ParceledListSlice.java
+++ b/core/java/android/content/pm/ParceledListSlice.java
@@ -62,7 +62,7 @@
     }
 
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected void writeParcelableCreator(T parcelable, Parcel dest) {
         dest.writeParcelableCreator((Parcelable) parcelable);
     }
diff --git a/core/java/android/content/pm/PermissionInfo.java b/core/java/android/content/pm/PermissionInfo.java
index 652d241..db6914b 100644
--- a/core/java/android/content/pm/PermissionInfo.java
+++ b/core/java/android/content/pm/PermissionInfo.java
@@ -23,6 +23,7 @@
 import android.annotation.SystemApi;
 import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.text.TextUtils;
@@ -160,7 +161,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int PROTECTION_FLAG_OEM = 0x4000;
 
     /**
@@ -181,7 +181,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int PROTECTION_FLAG_SYSTEM_TEXT_CLASSIFIER = 0x10000;
 
     /**
@@ -192,7 +191,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int PROTECTION_FLAG_WELLBEING = 0x20000;
 
     /**
@@ -202,7 +200,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int PROTECTION_FLAG_DOCUMENTER = 0x40000;
 
     /**
@@ -212,7 +209,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int PROTECTION_FLAG_CONFIGURATOR = 0x80000;
 
     /**
@@ -223,7 +219,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int PROTECTION_FLAG_INCIDENT_REPORT_APPROVER = 0x100000;
 
     /**
@@ -234,7 +229,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int PROTECTION_FLAG_APP_PREDICTOR = 0x200000;
 
     /**
@@ -245,7 +239,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int PROTECTION_FLAG_COMPANION = 0x800000;
 
     /**
@@ -256,7 +249,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int PROTECTION_FLAG_RETAIL_DEMO = 0x1000000;
 
     /** @hide */
@@ -340,7 +332,6 @@
      * value of {@link android.R.attr#permissionFlags}.
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final int FLAG_REMOVED = 1<<1;
 
@@ -428,7 +419,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public final @Nullable String backgroundPermission;
 
     /**
@@ -454,7 +444,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static @NonNull String protectionToString(int level) {
         String protLevel = "????";
         switch (level & PROTECTION_MASK_BASE) {
@@ -525,6 +515,9 @@
         if ((level & PermissionInfo.PROTECTION_FLAG_APP_PREDICTOR) != 0) {
             protLevel += "|appPredictor";
         }
+        if ((level & PermissionInfo.PROTECTION_FLAG_COMPANION) != 0) {
+            protLevel += "|companion";
+        }
         if ((level & PermissionInfo.PROTECTION_FLAG_RETAIL_DEMO) != 0) {
             protLevel += "|retailDemo";
         }
diff --git a/core/java/android/content/pm/ResolveInfo.java b/core/java/android/content/pm/ResolveInfo.java
index 4f2bf65..fe8e4d7 100644
--- a/core/java/android/content/pm/ResolveInfo.java
+++ b/core/java/android/content/pm/ResolveInfo.java
@@ -21,6 +21,7 @@
 import android.content.ComponentName;
 import android.content.IntentFilter;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.UserHandle;
@@ -183,7 +184,7 @@
     public boolean handleAllWebDataURI;
 
     /** {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ComponentInfo getComponentInfo() {
         if (activityInfo != null) return activityInfo;
         if (serviceInfo != null) return serviceInfo;
diff --git a/core/java/android/content/pm/VerifierInfo.java b/core/java/android/content/pm/VerifierInfo.java
index 5f88555..3e69ff5 100644
--- a/core/java/android/content/pm/VerifierInfo.java
+++ b/core/java/android/content/pm/VerifierInfo.java
@@ -17,6 +17,7 @@
 package android.content.pm;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -44,7 +45,7 @@
      *            not be {@code null} or empty.
      * @throws IllegalArgumentException if either argument is null or empty.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public VerifierInfo(String packageName, PublicKey publicKey) {
         if (packageName == null || packageName.length() == 0) {
             throw new IllegalArgumentException("packageName must not be null or empty");
diff --git a/core/java/android/content/pm/parsing/OWNERS b/core/java/android/content/pm/parsing/OWNERS
new file mode 100644
index 0000000..8049d5c
--- /dev/null
+++ b/core/java/android/content/pm/parsing/OWNERS
@@ -0,0 +1,5 @@
+# Bug component: 36137
+
+chiuwinson@google.com
+patb@google.com
+toddke@google.com
diff --git a/core/java/android/content/res/AssetManager.java b/core/java/android/content/res/AssetManager.java
index ca5aa36..36986de 100644
--- a/core/java/android/content/res/AssetManager.java
+++ b/core/java/android/content/res/AssetManager.java
@@ -28,6 +28,7 @@
 import android.content.pm.ActivityInfo;
 import android.content.res.Configuration.NativeConfig;
 import android.content.res.loader.ResourcesLoader;
+import android.os.Build;
 import android.os.ParcelFileDescriptor;
 import android.util.ArraySet;
 import android.util.Log;
@@ -955,7 +956,7 @@
      * @see #open(String, int)
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public @NonNull InputStream openNonAsset(@NonNull String fileName, int accessMode)
             throws IOException {
         return openNonAsset(0, fileName, accessMode);
@@ -968,7 +969,7 @@
      * @param fileName Name of the asset to retrieve.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public @NonNull InputStream openNonAsset(int cookie, @NonNull String fileName)
             throws IOException {
         return openNonAsset(cookie, fileName, ACCESS_STREAMING);
@@ -1105,7 +1106,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     void applyStyle(long themePtr, @AttrRes int defStyleAttr, @StyleRes int defStyleRes,
             @Nullable XmlBlock.Parser parser, @NonNull int[] inAttrs, long outValuesAddress,
             long outIndicesAddress) {
@@ -1128,7 +1129,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     boolean resolveAttrs(long themePtr, @AttrRes int defStyleAttr, @StyleRes int defStyleRes,
             @Nullable int[] inValues, @NonNull int[] inAttrs, @NonNull int[] outValues,
             @NonNull int[] outIndices) {
@@ -1144,7 +1145,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     boolean retrieveAttributes(@NonNull XmlBlock.Parser parser, @NonNull int[] inAttrs,
             @NonNull int[] outValues, @NonNull int[] outIndices) {
         Objects.requireNonNull(parser, "parser");
@@ -1186,7 +1187,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     void setThemeTo(long dstThemePtr, @NonNull AssetManager srcAssetManager, long srcThemePtr) {
         synchronized (this) {
             ensureValidLocked();
diff --git a/core/java/android/content/res/ColorStateList.java b/core/java/android/content/res/ColorStateList.java
index f23c802..921c630 100644
--- a/core/java/android/content/res/ColorStateList.java
+++ b/core/java/android/content/res/ColorStateList.java
@@ -23,6 +23,7 @@
 import android.content.pm.ActivityInfo.Config;
 import android.content.res.Resources.Theme;
 import android.graphics.Color;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.util.AttributeSet;
@@ -480,7 +481,7 @@
      * @hide only for resource preloading
      */
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ColorStateList obtainForTheme(Theme t) {
         if (t == null || !canApplyTheme()) {
             return this;
@@ -643,7 +644,7 @@
     /**
      * Updates the default color and opacity.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void onColorsChanged() {
         int defaultColor = DEFAULT_COLOR;
         boolean isOpaque = true;
diff --git a/core/java/android/content/res/CompatibilityInfo.java b/core/java/android/content/res/CompatibilityInfo.java
index c66c70a2..8aefa6e 100644
--- a/core/java/android/content/res/CompatibilityInfo.java
+++ b/core/java/android/content/res/CompatibilityInfo.java
@@ -506,7 +506,7 @@
      * @param outDm If non-null the width and height will be set to their scaled values.
      * @return Returns the scaling factor for the window.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static float computeCompatibleScaling(DisplayMetrics dm, DisplayMetrics outDm) {
         final int width = dm.noncompatWidthPixels;
         final int height = dm.noncompatHeightPixels;
diff --git a/core/java/android/content/res/Configuration.java b/core/java/android/content/res/Configuration.java
index 89653b3..ccb8c44 100644
--- a/core/java/android/content/res/Configuration.java
+++ b/core/java/android/content/res/Configuration.java
@@ -816,7 +816,7 @@
      * {@link ActivityInfo#CONFIG_ASSETS_PATHS}.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @TestApi
     public int assetsSeq;
 
@@ -2272,7 +2272,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static String resourceQualifierString(Configuration config) {
         return resourceQualifierString(config, null);
     }
diff --git a/core/java/android/content/res/DrawableCache.java b/core/java/android/content/res/DrawableCache.java
index 5497e61..d0ebe33 100644
--- a/core/java/android/content/res/DrawableCache.java
+++ b/core/java/android/content/res/DrawableCache.java
@@ -18,6 +18,7 @@
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 
 /**
  * Class which can be used to cache Drawable resources against a theme.
@@ -37,7 +38,7 @@
      * @return a new instance of the resource, or {@code null} if not in
      *         the cache
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Drawable getInstance(long key, Resources resources, Resources.Theme theme) {
         final Drawable.ConstantState entry = get(key, theme);
         if (entry != null) {
diff --git a/core/java/android/content/res/ObbInfo.java b/core/java/android/content/res/ObbInfo.java
index c477abc..6cafb31 100644
--- a/core/java/android/content/res/ObbInfo.java
+++ b/core/java/android/content/res/ObbInfo.java
@@ -17,6 +17,7 @@
 package android.content.res;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -54,7 +55,7 @@
      * 
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public byte[] salt;
 
     // Only allow things in this package to instantiate.
diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java
index 0f1c876..6c911f6 100644
--- a/core/java/android/content/res/Resources.java
+++ b/core/java/android/content/res/Resources.java
@@ -317,7 +317,7 @@
      *                    class loader
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Resources(@Nullable ClassLoader classLoader) {
         mClassLoader = classLoader == null ? ClassLoader.getSystemClassLoader() : classLoader;
     }
@@ -394,7 +394,7 @@
      * @return the inflater used to create drawable objects
      * @hide Pending API finalization.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final DrawableInflater getDrawableInflater() {
         if (mDrawableInflater == null) {
             mDrawableInflater = new DrawableInflater(this, mClassLoader);
@@ -987,7 +987,7 @@
     }
 
     @NonNull
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     Drawable loadDrawable(@NonNull TypedValue value, int id, int density, @Nullable Theme theme)
             throws NotFoundException {
         return mResourcesImpl.loadDrawable(this, value, id, density, theme);
@@ -2057,7 +2057,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public DisplayAdjustments getDisplayAdjustments() {
         final DisplayAdjustments overrideDisplayAdjustments = mOverrideDisplayAdjustments;
         if (overrideDisplayAdjustments != null) {
diff --git a/core/java/android/content/res/ResourcesImpl.java b/core/java/android/content/res/ResourcesImpl.java
index f40d60d..c16006a 100644
--- a/core/java/android/content/res/ResourcesImpl.java
+++ b/core/java/android/content/res/ResourcesImpl.java
@@ -83,9 +83,9 @@
 
     static final String TAG_PRELOAD = TAG + ".preload";
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final boolean TRACE_FOR_PRELOAD = false; // Do we still need it?
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final boolean TRACE_FOR_MISS_PRELOAD = false; // Do we still need it?
 
     public static final boolean TRACE_FOR_DETAILED_PRELOAD =
@@ -102,7 +102,7 @@
     private static final Object sSync = new Object();
 
     private static boolean sPreloaded;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private boolean mPreloading;
 
     // Information about preloaded resources.  Note that they are not
@@ -160,7 +160,7 @@
 
     private PluralRules mPluralRule;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final Configuration mConfiguration = new Configuration();
 
     static {
@@ -180,7 +180,7 @@
      * @param displayAdjustments this resource's Display override and compatibility info.
      *                           Must not be null.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ResourcesImpl(@NonNull AssetManager assets, @Nullable DisplayMetrics metrics,
             @Nullable Configuration config, @NonNull DisplayAdjustments displayAdjustments) {
         mAssets = assets;
@@ -199,7 +199,7 @@
         return mAssets;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     DisplayMetrics getDisplayMetrics() {
         if (DEBUG_CONFIG) Slog.v(TAG, "Returning DisplayMetrics: " + mMetrics.widthPixels
                 + "x" + mMetrics.heightPixels + " " + mMetrics.density);
@@ -227,7 +227,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     void getValue(@AnyRes int id, TypedValue outValue, boolean resolveRefs)
             throws NotFoundException {
         boolean found = mAssets.getResourceValue(id, 0, outValue, resolveRefs);
diff --git a/core/java/android/content/res/TypedArray.java b/core/java/android/content/res/TypedArray.java
index 29c5c93..5eaa766 100644
--- a/core/java/android/content/res/TypedArray.java
+++ b/core/java/android/content/res/TypedArray.java
@@ -25,6 +25,7 @@
 import android.content.pm.ActivityInfo.Config;
 import android.graphics.Typeface;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.os.StrictMode;
 import android.util.AttributeSet;
 import android.util.DisplayMetrics;
@@ -75,17 +76,17 @@
 
     @UnsupportedAppUsage
     private final Resources mResources;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private DisplayMetrics mMetrics;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private AssetManager mAssets;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private boolean mRecycled;
 
     @UnsupportedAppUsage
     /*package*/ XmlBlock.Parser mXml;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     /*package*/ Resources.Theme mTheme;
     /**
      * mData is used to hold the value/id and other metadata about each attribute.
diff --git a/core/java/android/content/res/XmlBlock.java b/core/java/android/content/res/XmlBlock.java
index cb93cbf..f4e596c 100644
--- a/core/java/android/content/res/XmlBlock.java
+++ b/core/java/android/content/res/XmlBlock.java
@@ -21,6 +21,7 @@
 import android.annotation.AnyRes;
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.util.TypedValue;
 
 import com.android.internal.util.XmlUtils;
@@ -477,7 +478,7 @@
             return mStrings.get(id);
         }
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         /*package*/ long mParseState;
         @UnsupportedAppUsage
         private final XmlBlock mBlock;
diff --git a/core/java/android/content/rollback/PackageRollbackInfo.java b/core/java/android/content/rollback/PackageRollbackInfo.java
index b273cd6..278eedb 100644
--- a/core/java/android/content/rollback/PackageRollbackInfo.java
+++ b/core/java/android/content/rollback/PackageRollbackInfo.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.content.pm.PackageManager;
 import android.content.pm.VersionedPackage;
 import android.os.Parcel;
@@ -33,7 +32,7 @@
  *
  * @hide
  */
-@SystemApi @TestApi
+@SystemApi
 public final class PackageRollbackInfo implements Parcelable {
 
     private final VersionedPackage mVersionRolledBackFrom;
diff --git a/core/java/android/content/rollback/RollbackInfo.java b/core/java/android/content/rollback/RollbackInfo.java
index c09cfd5..a363718 100644
--- a/core/java/android/content/rollback/RollbackInfo.java
+++ b/core/java/android/content/rollback/RollbackInfo.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.content.pm.VersionedPackage;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -31,7 +30,7 @@
  *
  * @hide
  */
-@SystemApi @TestApi
+@SystemApi
 public final class RollbackInfo implements Parcelable {
 
     /**
diff --git a/core/java/android/content/rollback/RollbackManager.java b/core/java/android/content/rollback/RollbackManager.java
index 7ebeb21..3636222 100644
--- a/core/java/android/content/rollback/RollbackManager.java
+++ b/core/java/android/content/rollback/RollbackManager.java
@@ -24,7 +24,6 @@
 import android.annotation.TestApi;
 import android.content.Context;
 import android.content.IntentSender;
-import android.content.pm.PackageInstaller;
 import android.content.pm.ParceledListSlice;
 import android.content.pm.VersionedPackage;
 import android.os.RemoteException;
@@ -43,7 +42,7 @@
  * @see PackageInstaller.SessionParams#setEnableRollback(boolean)
  * @hide
  */
-@SystemApi @TestApi
+@SystemApi
 @SystemService(Context.ROLLBACK_SERVICE)
 public final class RollbackManager {
     private final String mCallerPackageName;
diff --git a/core/java/android/database/AbstractWindowedCursor.java b/core/java/android/database/AbstractWindowedCursor.java
index daf7d2b..18562034 100644
--- a/core/java/android/database/AbstractWindowedCursor.java
+++ b/core/java/android/database/AbstractWindowedCursor.java
@@ -17,6 +17,7 @@
 package android.database;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 /**
  * A base class for Cursors that store their data in {@link CursorWindow}s.
@@ -181,7 +182,7 @@
      * Closes the cursor window and sets {@link #mWindow} to null.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected void closeWindow() {
         if (mWindow != null) {
             mWindow.close();
diff --git a/core/java/android/database/CursorWindow.java b/core/java/android/database/CursorWindow.java
index 063a2d0..eebacff 100644
--- a/core/java/android/database/CursorWindow.java
+++ b/core/java/android/database/CursorWindow.java
@@ -22,6 +22,7 @@
 import android.database.sqlite.SQLiteClosable;
 import android.database.sqlite.SQLiteException;
 import android.os.Binder;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.Process;
@@ -770,7 +771,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private String printStats() {
         StringBuilder buff = new StringBuilder();
         int myPid = Process.myPid();
diff --git a/core/java/android/database/sqlite/SQLiteCustomFunction.java b/core/java/android/database/sqlite/SQLiteCustomFunction.java
index 1ace40d..4a15f70 100644
--- a/core/java/android/database/sqlite/SQLiteCustomFunction.java
+++ b/core/java/android/database/sqlite/SQLiteCustomFunction.java
@@ -27,7 +27,7 @@
 public final class SQLiteCustomFunction {
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
     public final String name;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final int numArgs;
     public final SQLiteDatabase.CustomFunction callback;
 
@@ -52,7 +52,7 @@
 
     // Called from native.
     @SuppressWarnings("unused")
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void dispatchCallback(String[] args) {
         callback.callback(args);
     }
diff --git a/core/java/android/database/sqlite/SQLiteDatabase.java b/core/java/android/database/sqlite/SQLiteDatabase.java
index 0efd883..eaac370 100644
--- a/core/java/android/database/sqlite/SQLiteDatabase.java
+++ b/core/java/android/database/sqlite/SQLiteDatabase.java
@@ -31,6 +31,7 @@
 import android.database.DefaultDatabaseErrorHandler;
 import android.database.SQLException;
 import android.database.sqlite.SQLiteDebug.DbStats;
+import android.os.Build;
 import android.os.CancellationSignal;
 import android.os.Looper;
 import android.os.OperationCanceledException;
@@ -103,7 +104,7 @@
     // Thread-local for database sessions that belong to this database.
     // Each thread has its own database session.
     // INVARIANT: Immutable.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final ThreadLocal<SQLiteSession> mThreadSession = ThreadLocal
             .withInitial(this::createSession);
 
diff --git a/core/java/android/database/sqlite/SQLiteDebug.java b/core/java/android/database/sqlite/SQLiteDebug.java
index 165f863..1afa0f8 100644
--- a/core/java/android/database/sqlite/SQLiteDebug.java
+++ b/core/java/android/database/sqlite/SQLiteDebug.java
@@ -135,7 +135,7 @@
          * that overflowed because no space was left in the page cache.
          * documented at http://www.sqlite.org/c3ref/c_status_malloc_size.html
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public int pageCacheOverflow;
 
         /** records the largest memory allocation request handed to sqlite3.
diff --git a/core/java/android/database/sqlite/SQLiteProgram.java b/core/java/android/database/sqlite/SQLiteProgram.java
index de1c543..cd4131c 100644
--- a/core/java/android/database/sqlite/SQLiteProgram.java
+++ b/core/java/android/database/sqlite/SQLiteProgram.java
@@ -18,6 +18,7 @@
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.database.DatabaseUtils;
+import android.os.Build;
 import android.os.CancellationSignal;
 
 import java.util.Arrays;
@@ -37,7 +38,7 @@
     private final boolean mReadOnly;
     private final String[] mColumnNames;
     private final int mNumParameters;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final Object[] mBindArgs;
 
     SQLiteProgram(SQLiteDatabase db, String sql, Object[] bindArgs,
diff --git a/core/java/android/database/sqlite/SQLiteStatement.java b/core/java/android/database/sqlite/SQLiteStatement.java
index 9fda8b0..d33eadc 100644
--- a/core/java/android/database/sqlite/SQLiteStatement.java
+++ b/core/java/android/database/sqlite/SQLiteStatement.java
@@ -17,6 +17,7 @@
 package android.database.sqlite;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.ParcelFileDescriptor;
 
 /**
@@ -28,7 +29,7 @@
  * </p>
  */
 public final class SQLiteStatement extends SQLiteProgram {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     SQLiteStatement(SQLiteDatabase db, String sql, Object[] bindArgs) {
         super(db, sql, bindArgs, null);
     }
diff --git a/core/java/android/ddm/DdmHandleAppName.java b/core/java/android/ddm/DdmHandleAppName.java
index 4f55921..35da062 100644
--- a/core/java/android/ddm/DdmHandleAppName.java
+++ b/core/java/android/ddm/DdmHandleAppName.java
@@ -17,6 +17,7 @@
 package android.ddm;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.util.Log;
 
 import org.apache.harmony.dalvik.ddmc.Chunk;
@@ -80,7 +81,7 @@
      * before or after DDMS connects.  For the latter we need to send up
      * an APNM message.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static void setAppName(String appName, String pkgName, int userId) {
         if (appName == null || appName.isEmpty() || pkgName == null || pkgName.isEmpty()) return;
 
@@ -90,7 +91,7 @@
         sendAPNM(appName, pkgName, userId);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static Names getNames() {
         return sNames;
     }
diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java
index 25279b3..af481cf 100644
--- a/core/java/android/hardware/Camera.java
+++ b/core/java/android/hardware/Camera.java
@@ -245,7 +245,7 @@
      * Camera HAL device API version 1.0
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int CAMERA_HAL_API_VERSION_1_0 = 0x100;
 
     /**
@@ -1283,7 +1283,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static void postEventFromNative(Object camera_ref,
                                             int what, int arg1, int arg2, Object obj)
     {
@@ -4477,7 +4477,7 @@
         // Splits a comma delimited string to an ArrayList of Area objects.
         // Example string: "(-10,-10,0,0,300),(0,0,10,10,700)". Return null if
         // the passing string is null or the size is 0 or (0,0,0,0,0).
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private ArrayList<Area> splitArea(String str) {
             if (str == null || str.charAt(0) != '('
                     || str.charAt(str.length() - 1) != ')') {
diff --git a/core/java/android/hardware/HardwareBuffer.java b/core/java/android/hardware/HardwareBuffer.java
index dd34930..1c42d83 100644
--- a/core/java/android/hardware/HardwareBuffer.java
+++ b/core/java/android/hardware/HardwareBuffer.java
@@ -96,7 +96,7 @@
     public static final int S_UI8        = 0x35;
 
     // Note: do not rename, this field is used by native code
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mNativeObject;
 
     // Invoked on destruction
diff --git a/core/java/android/hardware/Sensor.java b/core/java/android/hardware/Sensor.java
index cc4c456..e913986 100644
--- a/core/java/android/hardware/Sensor.java
+++ b/core/java/android/hardware/Sensor.java
@@ -509,7 +509,7 @@
      *
      * @hide Expected to be used internally for always on display.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int TYPE_PICK_UP_GESTURE = 25;
 
     /**
@@ -549,7 +549,7 @@
      * @hide Expected to be used internally for auto-rotate and speaker rotation.
      *
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int TYPE_DEVICE_ORIENTATION = 27;
 
     /**
@@ -616,7 +616,7 @@
     public static final String STRING_TYPE_MOTION_DETECT = "android.sensor.motion_detect";
 
     /**
-     * A constant describing a motion detect sensor.
+     * A constant describing a heart beat sensor.
      *
      * See {@link android.hardware.SensorEvent#values SensorEvent.values} for more details.
      *
@@ -1245,6 +1245,7 @@
                 return true;
             case TYPE_HINGE_ANGLE:
                 mStringType = STRING_TYPE_HINGE_ANGLE;
+                return true;
             default:
                 return false;
         }
diff --git a/core/java/android/hardware/SensorEvent.java b/core/java/android/hardware/SensorEvent.java
index 9906331..236fab0 100644
--- a/core/java/android/hardware/SensorEvent.java
+++ b/core/java/android/hardware/SensorEvent.java
@@ -550,7 +550,7 @@
      *   <h4>{@link android.hardware.Sensor#TYPE_HEART_BEAT
      * Sensor.TYPE_HEART_BEAT}:</h4>
      *
-     * A sensor of this type returns an event everytime a hear beat peak is
+     * A sensor of this type returns an event everytime a heart beat peak is
      * detected.
      *
      * Peak here ideally corresponds to the positive peak in the QRS complex of
diff --git a/core/java/android/hardware/SerialManager.java b/core/java/android/hardware/SerialManager.java
index b51382e..26e5129 100644
--- a/core/java/android/hardware/SerialManager.java
+++ b/core/java/android/hardware/SerialManager.java
@@ -19,6 +19,7 @@
 import android.annotation.SystemService;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
+import android.os.Build;
 import android.os.ParcelFileDescriptor;
 import android.os.RemoteException;
 
@@ -47,7 +48,7 @@
      *
      * @return names of available serial ports
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public String[] getSerialPorts() {
         try {
             return mService.getSerialPorts();
@@ -67,7 +68,7 @@
      * @param speed at which to open the serial port
      * @return the serial port
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public SerialPort openSerialPort(String name, int speed) throws IOException {
         try {
             ParcelFileDescriptor pfd = mService.openSerialPort(name);
diff --git a/core/java/android/hardware/SerialPort.java b/core/java/android/hardware/SerialPort.java
index 0fcaa49..2578dd6 100644
--- a/core/java/android/hardware/SerialPort.java
+++ b/core/java/android/hardware/SerialPort.java
@@ -17,6 +17,7 @@
 package android.hardware;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.ParcelFileDescriptor;
 
 import java.io.FileDescriptor;
@@ -31,7 +32,7 @@
     private static final String TAG = "SerialPort";
 
     // used by the JNI code
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mNativeContext;
     private final String mName;
     private ParcelFileDescriptor mFileDescriptor;
@@ -60,7 +61,7 @@
     /**
      * Closes the serial port
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void close() throws IOException {
         if (mFileDescriptor != null) {
             mFileDescriptor.close();
@@ -104,7 +105,7 @@
      * @param buffer to write
      * @param length number of bytes to write
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void write(ByteBuffer buffer, int length) throws IOException {
         if (buffer.isDirect()) {
             native_write_direct(buffer, length);
diff --git a/core/java/android/hardware/SystemSensorManager.java b/core/java/android/hardware/SystemSensorManager.java
index 974913b..376503e 100644
--- a/core/java/android/hardware/SystemSensorManager.java
+++ b/core/java/android/hardware/SystemSensorManager.java
@@ -21,6 +21,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.os.Build;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.MemoryFile;
@@ -759,13 +760,13 @@
             if (sensor == null) throw new NullPointerException();
             return nativeDisableSensor(mNativeSensorEventQueue, sensor.getHandle());
         }
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         protected abstract void dispatchSensorEvent(int handle, float[] values, int accuracy,
                 long timestamp);
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         protected abstract void dispatchFlushCompleteEvent(int handle);
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         protected void dispatchAdditionalInfoEvent(
                 int handle, int type, int serial, float[] floatValues, int[] intValues) {
             // default implementation is do nothing
diff --git a/core/java/android/hardware/biometrics/BiometricConstants.java b/core/java/android/hardware/biometrics/BiometricConstants.java
index 8e3f809..a59bace 100644
--- a/core/java/android/hardware/biometrics/BiometricConstants.java
+++ b/core/java/android/hardware/biometrics/BiometricConstants.java
@@ -19,6 +19,7 @@
 import static android.hardware.biometrics.BiometricManager.Authenticators;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 /**
  * Interface containing all of the biometric modality agnostic constants.
@@ -149,7 +150,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     int BIOMETRIC_ERROR_VENDOR_BASE = 1000;
 
     //
diff --git a/core/java/android/hardware/biometrics/BiometricFingerprintConstants.java b/core/java/android/hardware/biometrics/BiometricFingerprintConstants.java
index 46e8cc0..449f3e2 100644
--- a/core/java/android/hardware/biometrics/BiometricFingerprintConstants.java
+++ b/core/java/android/hardware/biometrics/BiometricFingerprintConstants.java
@@ -20,6 +20,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.hardware.biometrics.BiometricManager.Authenticators;
 import android.hardware.fingerprint.FingerprintManager;
+import android.os.Build;
 
 /**
  * Interface containing all of the fingerprint-specific constants.
@@ -142,7 +143,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     int FINGERPRINT_ERROR_VENDOR_BASE = 1000;
 
     //
diff --git a/core/java/android/hardware/camera2/CameraCaptureSession.java b/core/java/android/hardware/camera2/CameraCaptureSession.java
index 2e48ce9..a33fb58 100644
--- a/core/java/android/hardware/camera2/CameraCaptureSession.java
+++ b/core/java/android/hardware/camera2/CameraCaptureSession.java
@@ -188,6 +188,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract void prepare(int maxCount, @NonNull Surface surface)
             throws CameraAccessException;
 
@@ -227,6 +228,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract void tearDown(@NonNull Surface surface) throws CameraAccessException;
 
     /**
diff --git a/core/java/android/hardware/camera2/CameraCharacteristics.java b/core/java/android/hardware/camera2/CameraCharacteristics.java
index dc56963..4f3c0cb 100644
--- a/core/java/android/hardware/camera2/CameraCharacteristics.java
+++ b/core/java/android/hardware/camera2/CameraCharacteristics.java
@@ -26,6 +26,7 @@
 import android.hardware.camera2.params.SessionConfiguration;
 import android.hardware.camera2.utils.ArrayUtils;
 import android.hardware.camera2.utils.TypeReference;
+import android.os.Build;
 import android.util.Rational;
 
 import java.util.ArrayList;
@@ -79,7 +80,7 @@
          *
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public Key(String name, Class<T> type, long vendorId) {
             mKey = new CameraMetadataNative.Key<T>(name,  type, vendorId);
         }
@@ -193,7 +194,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final CameraMetadataNative mProperties;
     private List<CameraCharacteristics.Key<?>> mKeys;
     private List<CameraCharacteristics.Key<?>> mKeysNeedingPermission;
diff --git a/core/java/android/hardware/camera2/CameraDevice.java b/core/java/android/hardware/camera2/CameraDevice.java
index 15625cd..cd13707 100644
--- a/core/java/android/hardware/camera2/CameraDevice.java
+++ b/core/java/android/hardware/camera2/CameraDevice.java
@@ -20,7 +20,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.hardware.camera2.params.InputConfiguration;
 import android.hardware.camera2.params.OutputConfiguration;
 import android.hardware.camera2.params.SessionConfiguration;
@@ -358,7 +357,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int SESSION_OPERATION_MODE_NORMAL =
             0; // ICameraDeviceUser.NORMAL_MODE;
 
@@ -369,7 +367,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int SESSION_OPERATION_MODE_CONSTRAINED_HIGH_SPEED =
             1; // ICameraDeviceUser.CONSTRAINED_HIGH_SPEED_MODE;
 
@@ -380,7 +377,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int SESSION_OPERATION_MODE_VENDOR_START =
             0x8000; // ICameraDeviceUser.VENDOR_MODE_START;
 
@@ -423,7 +419,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @Deprecated
     public abstract void createCustomCaptureSession(
             InputConfiguration inputConfig,
@@ -683,6 +678,8 @@
      *<p>BACKWARD_COMPATIBLE devices capable of streaming concurrently with other devices as described by
      * {@link android.hardware.camera2.CameraManager#getConcurrentCameraIds} have the
      * following guaranteed streams (when streaming concurrently with other devices)</p>
+     * <p> Note: The sizes mentioned for these concurrent streams are the maximum sizes guaranteed
+     * to be supported. Sizes smaller than these, obtained by {@link StreamConfigurationMap#getOutputSizes} for a particular format, are supported as well. </p>
      *
      * <table>
      * <tr><th colspan="5">Concurrent stream guaranteed configurations</th></tr>
@@ -696,7 +693,7 @@
      * </table><br>
      * </p>
      *
-     * <p> Devices which are not backwards-compatible, support a mandatory single stream of size sVGA with image format {@code DEPTH16} during concurrent operation.
+     * <p> Devices which are not backwards-compatible, support a mandatory single stream of size sVGA with image format {@code DEPTH16} during concurrent operation. </p>
      *
      * <p> For guaranteed concurrent stream configurations:</p>
      * <p> sVGA refers to the camera device's maximum resolution for that format from {@link StreamConfigurationMap#getOutputSizes} or
diff --git a/core/java/android/hardware/camera2/CaptureRequest.java b/core/java/android/hardware/camera2/CaptureRequest.java
index 1b1ccb5..bc88cc2 100644
--- a/core/java/android/hardware/camera2/CaptureRequest.java
+++ b/core/java/android/hardware/camera2/CaptureRequest.java
@@ -26,6 +26,7 @@
 import android.hardware.camera2.utils.HashCodeHelpers;
 import android.hardware.camera2.utils.SurfaceUtils;
 import android.hardware.camera2.utils.TypeReference;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.util.ArraySet;
@@ -108,7 +109,7 @@
          *
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public Key(String name, Class<T> type, long vendorId) {
             mKey = new CameraMetadataNative.Key<T>(name, type, vendorId);
         }
@@ -229,7 +230,7 @@
     private static final ArraySet<Surface> mEmptySurfaceSet = new ArraySet<Surface>();
 
     private String mLogicalCameraId;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private CameraMetadataNative mLogicalCameraSettings;
     private final HashMap<String, CameraMetadataNative> mPhysicalCameraSettings =
             new HashMap<String, CameraMetadataNative>();
diff --git a/core/java/android/hardware/camera2/CaptureResult.java b/core/java/android/hardware/camera2/CaptureResult.java
index b546967..cc4d278 100644
--- a/core/java/android/hardware/camera2/CaptureResult.java
+++ b/core/java/android/hardware/camera2/CaptureResult.java
@@ -24,6 +24,7 @@
 import android.hardware.camera2.impl.PublicKey;
 import android.hardware.camera2.impl.SyntheticKey;
 import android.hardware.camera2.utils.TypeReference;
+import android.os.Build;
 import android.util.Log;
 import android.util.Rational;
 
@@ -79,7 +80,7 @@
          *
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public Key(String name, Class<T> type, long vendorId) {
             mKey = new CameraMetadataNative.Key<T>(name, type, vendorId);
         }
diff --git a/core/java/android/hardware/camera2/impl/CameraMetadataNative.java b/core/java/android/hardware/camera2/impl/CameraMetadataNative.java
index 986e6ea..920d34f 100644
--- a/core/java/android/hardware/camera2/impl/CameraMetadataNative.java
+++ b/core/java/android/hardware/camera2/impl/CameraMetadataNative.java
@@ -64,6 +64,7 @@
 import android.hardware.camera2.utils.TypeReference;
 import android.location.Location;
 import android.location.LocationManager;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.ServiceSpecificException;
@@ -260,7 +261,7 @@
          *
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public final boolean hasTag() {
             return mHasTag;
         }
@@ -270,7 +271,7 @@
          *
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public final void cacheTag(int tag) {
             mHasTag = true;
             mTag = tag;
@@ -1683,7 +1684,7 @@
         mDisplaySize = displaySize;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mMetadataPtr; // native std::shared_ptr<CameraMetadata>*
 
     @FastNative
@@ -1706,7 +1707,7 @@
     @FastNative
     private static synchronized native int nativeGetEntryCount(long ptr);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @FastNative
     private static synchronized native byte[] nativeReadValues(int tag, long ptr);
     @FastNative
@@ -1715,11 +1716,11 @@
 
     @FastNative
     private static synchronized native ArrayList nativeGetAllVendorKeys(long ptr, Class keyClass);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @FastNative
     private static synchronized native int nativeGetTagFromKeyLocal(long ptr, String keyName)
             throws IllegalArgumentException;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @FastNative
     private static synchronized native int nativeGetTypeFromTagLocal(long ptr, int tag)
             throws IllegalArgumentException;
diff --git a/core/java/android/hardware/camera2/impl/FrameNumberTracker.java b/core/java/android/hardware/camera2/impl/FrameNumberTracker.java
index 27f8a61..7b6a457 100644
--- a/core/java/android/hardware/camera2/impl/FrameNumberTracker.java
+++ b/core/java/android/hardware/camera2/impl/FrameNumberTracker.java
@@ -37,12 +37,16 @@
     /** the completed frame number for each type of capture results */
     private long[] mCompletedFrameNumber = new long[CaptureRequest.REQUEST_TYPE_COUNT];
 
-    /** the skipped frame numbers that don't belong to each type of capture results */
-    private final LinkedList<Long>[] mSkippedOtherFrameNumbers =
+    /** the frame numbers that don't belong to each type of capture results and are yet to be seen
+     * through an updateTracker() call. Each list holds a list of frame numbers that should appear
+     * with request types other than that, to which the list corresponds.
+     */
+    private final LinkedList<Long>[] mPendingFrameNumbersWithOtherType =
             new LinkedList[CaptureRequest.REQUEST_TYPE_COUNT];
 
-    /** the skipped frame numbers that belong to each type of capture results */
-    private final LinkedList<Long>[] mSkippedFrameNumbers =
+    /** the frame numbers that belong to each type of capture results which should appear, but
+     * haven't yet.*/
+    private final LinkedList<Long>[] mPendingFrameNumbers =
             new LinkedList[CaptureRequest.REQUEST_TYPE_COUNT];
 
     /** frame number -> request type */
@@ -53,8 +57,8 @@
     public FrameNumberTracker() {
         for (int i = 0; i < CaptureRequest.REQUEST_TYPE_COUNT; i++) {
             mCompletedFrameNumber[i] = CameraCaptureSession.CaptureCallback.NO_FRAMES_CAPTURED;
-            mSkippedOtherFrameNumbers[i] = new LinkedList<Long>();
-            mSkippedFrameNumbers[i] = new LinkedList<Long>();
+            mPendingFrameNumbersWithOtherType[i] = new LinkedList<Long>();
+            mPendingFrameNumbers[i] = new LinkedList<Long>();
         }
     }
 
@@ -66,29 +70,29 @@
             int requestType = (int) pair.getValue();
             Boolean removeError = false;
             if (errorFrameNumber == mCompletedFrameNumber[requestType] + 1) {
-                mCompletedFrameNumber[requestType] = errorFrameNumber;
                 removeError = true;
+            }
+            // The error frame number could have also either been in the pending list or one of the
+            // 'other' pending lists.
+            if (!mPendingFrameNumbers[requestType].isEmpty()) {
+                if (errorFrameNumber == mPendingFrameNumbers[requestType].element()) {
+                    mPendingFrameNumbers[requestType].remove();
+                    removeError = true;
+                }
             } else {
-                if (!mSkippedFrameNumbers[requestType].isEmpty()) {
-                    if (errorFrameNumber == mSkippedFrameNumbers[requestType].element()) {
-                        mCompletedFrameNumber[requestType] = errorFrameNumber;
-                        mSkippedFrameNumbers[requestType].remove();
+                for (int i = 1; i < CaptureRequest.REQUEST_TYPE_COUNT; i++) {
+                    int otherType = (requestType + i) % CaptureRequest.REQUEST_TYPE_COUNT;
+                    if (!mPendingFrameNumbersWithOtherType[otherType].isEmpty() && errorFrameNumber
+                            == mPendingFrameNumbersWithOtherType[otherType].element()) {
+                        mPendingFrameNumbersWithOtherType[otherType].remove();
                         removeError = true;
-                    }
-                } else {
-                    for (int i = 1; i < CaptureRequest.REQUEST_TYPE_COUNT; i++) {
-                        int otherType = (requestType + i) % CaptureRequest.REQUEST_TYPE_COUNT;
-                        if (!mSkippedOtherFrameNumbers[otherType].isEmpty() && errorFrameNumber
-                                == mSkippedOtherFrameNumbers[otherType].element()) {
-                            mCompletedFrameNumber[requestType] = errorFrameNumber;
-                            mSkippedOtherFrameNumbers[otherType].remove();
-                            removeError = true;
-                            break;
-                        }
+                        break;
                     }
                 }
             }
             if (removeError) {
+                mCompletedFrameNumber[requestType] = errorFrameNumber;
+                mPartialResults.remove(errorFrameNumber);
                 iter.remove();
             }
         }
@@ -182,7 +186,7 @@
      * It validates that all previous frames of the same category have arrived.
      *
      * If there is a gap since previous frame number of the same category, assume the frames in
-     * the gap are other categories and store them in the skipped frame number queue to check
+     * the gap are other categories and store them in the pending frame number queue to check
      * against when frames of those categories arrive.
      */
     private void updateCompletedFrameNumber(long frameNumber,
@@ -199,25 +203,29 @@
         if (frameNumber < maxOtherFrameNumberSeen) {
             // if frame number is smaller than completed frame numbers of other categories,
             // it must be:
-            // - the head of mSkippedFrameNumbers for this category, or
-            // - in one of other mSkippedOtherFrameNumbers
-            if (!mSkippedFrameNumbers[requestType].isEmpty()) {
-                // frame number must be head of current type of mSkippedFrameNumbers if
-                // mSkippedFrameNumbers isn't empty.
-                if (frameNumber < mSkippedFrameNumbers[requestType].element()) {
+            // - the head of mPendingFrameNumbers for this category, or
+            // - in one of other mPendingFrameNumbersWithOtherType
+            if (!mPendingFrameNumbers[requestType].isEmpty()) {
+                // frame number must be head of current type of mPendingFrameNumbers if
+                // mPendingFrameNumbers isn't empty.
+                Long pendingFrameNumberSameType = mPendingFrameNumbers[requestType].element();
+                if (frameNumber == pendingFrameNumberSameType) {
+                    // frame number matches the head of the pending frame number queue.
+                    // Do this before the inequality checks since this is likely to be the common
+                    // case.
+                    mPendingFrameNumbers[requestType].remove();
+                } else if (frameNumber < pendingFrameNumberSameType) {
                     throw new IllegalArgumentException("frame number " + frameNumber
                             + " is a repeat");
-                } else if (frameNumber > mSkippedFrameNumbers[requestType].element()) {
+                } else {
                     throw new IllegalArgumentException("frame number " + frameNumber
                             + " comes out of order. Expecting "
-                            + mSkippedFrameNumbers[requestType].element());
+                            + pendingFrameNumberSameType);
                 }
-                // frame number matches the head of the skipped frame number queue.
-                mSkippedFrameNumbers[requestType].remove();
             } else {
-                // frame number must be in one of the other mSkippedOtherFrameNumbers.
-                int index1 = mSkippedOtherFrameNumbers[otherType1].indexOf(frameNumber);
-                int index2 = mSkippedOtherFrameNumbers[otherType2].indexOf(frameNumber);
+                // frame number must be in one of the other mPendingFrameNumbersWithOtherType.
+                int index1 = mPendingFrameNumbersWithOtherType[otherType1].indexOf(frameNumber);
+                int index2 = mPendingFrameNumbersWithOtherType[otherType2].indexOf(frameNumber);
                 boolean inSkippedOther1 = index1 != -1;
                 boolean inSkippedOther2 = index2 != -1;
                 if (!(inSkippedOther1 ^ inSkippedOther2)) {
@@ -225,33 +233,39 @@
                             + " is a repeat or invalid");
                 }
 
-                // We know the category of frame numbers in skippedOtherFrameNumbers leading up
-                // to the current frame number. Move them into the correct skippedFrameNumbers.
+                // We know the category of frame numbers in pendingFrameNumbersWithOtherType leading
+                // up to the current frame number. The destination is the type which isn't the
+                // requestType* and isn't the src. Move them into the correct pendingFrameNumbers.
+                // * : This is since frameNumber is the first frame of requestType that we've
+                // received in the 'others' list, since for each request type frames come in order.
+                // All the frames before frameNumber are of the same type. They're not of
+                // 'requestType', neither of the type of the 'others' list they were found in. The
+                // remaining option is the 3rd type.
                 LinkedList<Long> srcList, dstList;
                 int index;
                 if (inSkippedOther1) {
-                    srcList = mSkippedOtherFrameNumbers[otherType1];
-                    dstList = mSkippedFrameNumbers[otherType2];
+                    srcList = mPendingFrameNumbersWithOtherType[otherType1];
+                    dstList = mPendingFrameNumbers[otherType2];
                     index = index1;
                 } else {
-                    srcList = mSkippedOtherFrameNumbers[otherType2];
-                    dstList = mSkippedFrameNumbers[otherType1];
+                    srcList = mPendingFrameNumbersWithOtherType[otherType2];
+                    dstList = mPendingFrameNumbers[otherType1];
                     index = index2;
                 }
                 for (int i = 0; i < index; i++) {
                     dstList.add(srcList.removeFirst());
                 }
 
-                // Remove current frame number from skippedOtherFrameNumbers
+                // Remove current frame number from pendingFrameNumbersWithOtherType
                 srcList.remove();
             }
         } else {
             // there is a gap of unseen frame numbers which should belong to the other
-            // 2 categories. Put all the skipped frame numbers in the queue.
+            // 2 categories. Put all the pending frame numbers in the queue.
             for (long i =
                     Math.max(maxOtherFrameNumberSeen, mCompletedFrameNumber[requestType]) + 1;
                     i < frameNumber; i++) {
-                mSkippedOtherFrameNumbers[requestType].add(i);
+                mPendingFrameNumbersWithOtherType[requestType].add(i);
             }
         }
 
diff --git a/core/java/android/hardware/camera2/utils/HashCodeHelpers.java b/core/java/android/hardware/camera2/utils/HashCodeHelpers.java
index 16f3f2a..064d4b3 100644
--- a/core/java/android/hardware/camera2/utils/HashCodeHelpers.java
+++ b/core/java/android/hardware/camera2/utils/HashCodeHelpers.java
@@ -17,6 +17,7 @@
 package android.hardware.camera2.utils;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 /**
  * Provide hashing functions using the Modified Bernstein hash
@@ -32,7 +33,7 @@
      *
      * @return the numeric hash code
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static int hashCode(int... array) {
         if (array == null) {
             return 0;
diff --git a/core/java/android/hardware/display/AmbientBrightnessDayStats.java b/core/java/android/hardware/display/AmbientBrightnessDayStats.java
index 26fd265..8aff911 100644
--- a/core/java/android/hardware/display/AmbientBrightnessDayStats.java
+++ b/core/java/android/hardware/display/AmbientBrightnessDayStats.java
@@ -19,7 +19,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -36,7 +35,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class AmbientBrightnessDayStats implements Parcelable {
 
     /** The localdate for which brightness stats are being tracked */
diff --git a/core/java/android/hardware/display/BrightnessChangeEvent.java b/core/java/android/hardware/display/BrightnessChangeEvent.java
index a6a44be..e2d836c 100644
--- a/core/java/android/hardware/display/BrightnessChangeEvent.java
+++ b/core/java/android/hardware/display/BrightnessChangeEvent.java
@@ -19,7 +19,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -32,7 +31,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class BrightnessChangeEvent implements Parcelable {
     /** Brightness in nits */
     public final float brightness;
diff --git a/core/java/android/hardware/display/BrightnessConfiguration.java b/core/java/android/hardware/display/BrightnessConfiguration.java
index 6412a0c..d9c1063 100644
--- a/core/java/android/hardware/display/BrightnessConfiguration.java
+++ b/core/java/android/hardware/display/BrightnessConfiguration.java
@@ -20,7 +20,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.content.pm.ApplicationInfo;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -44,7 +43,6 @@
 
 /** @hide */
 @SystemApi
-@TestApi
 public final class BrightnessConfiguration implements Parcelable {
     private static final String TAG_BRIGHTNESS_CURVE = "brightness-curve";
     private static final String TAG_BRIGHTNESS_POINT = "brightness-point";
diff --git a/core/java/android/hardware/display/BrightnessCorrection.java b/core/java/android/hardware/display/BrightnessCorrection.java
index 22df778..78cc769 100644
--- a/core/java/android/hardware/display/BrightnessCorrection.java
+++ b/core/java/android/hardware/display/BrightnessCorrection.java
@@ -20,7 +20,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.util.MathUtils;
@@ -44,7 +43,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class BrightnessCorrection implements Parcelable {
 
     private static final int SCALE_AND_TRANSLATE_LOG = 1;
diff --git a/core/java/android/hardware/display/DisplayManager.java b/core/java/android/hardware/display/DisplayManager.java
index c1ba209..9271d0e 100644
--- a/core/java/android/hardware/display/DisplayManager.java
+++ b/core/java/android/hardware/display/DisplayManager.java
@@ -29,6 +29,7 @@
 import android.content.res.Resources;
 import android.graphics.Point;
 import android.media.projection.MediaProjection;
+import android.os.Build;
 import android.os.Handler;
 import android.util.Pair;
 import android.util.SparseArray;
@@ -64,7 +65,7 @@
      * </p>
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String ACTION_WIFI_DISPLAY_STATUS_CHANGED =
             "android.hardware.display.action.WIFI_DISPLAY_STATUS_CHANGED";
 
@@ -72,7 +73,7 @@
      * Contains a {@link WifiDisplayStatus} object.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String EXTRA_WIFI_DISPLAY_STATUS =
             "android.hardware.display.extra.WIFI_DISPLAY_STATUS";
 
@@ -691,7 +692,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public Point getStableDisplaySize() {
         return mGlobal.getStableDisplaySize();
     }
@@ -701,7 +701,6 @@
      * @hide until we make it a system api.
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(Manifest.permission.BRIGHTNESS_SLIDER_USAGE)
     public List<BrightnessChangeEvent> getBrightnessEvents() {
         return mGlobal.getBrightnessEvents(mContext.getOpPackageName());
@@ -713,7 +712,6 @@
      * @hide until we make it a system api
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(Manifest.permission.ACCESS_AMBIENT_LIGHT_STATS)
     public List<AmbientBrightnessDayStats> getAmbientBrightnessStats() {
         return mGlobal.getAmbientBrightnessStats();
@@ -725,7 +723,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS)
     public void setBrightnessConfiguration(BrightnessConfiguration c) {
         setBrightnessConfigurationForUser(c, mContext.getUserId(), mContext.getPackageName());
@@ -750,7 +747,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS)
     public BrightnessConfiguration getBrightnessConfiguration() {
         return getBrightnessConfigurationForUser(mContext.getUserId());
@@ -776,7 +772,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS)
     @Nullable
     public BrightnessConfiguration getDefaultBrightnessConfiguration() {
diff --git a/core/java/android/hardware/display/DisplayManagerInternal.java b/core/java/android/hardware/display/DisplayManagerInternal.java
index ad9bf07..8d6e937 100644
--- a/core/java/android/hardware/display/DisplayManagerInternal.java
+++ b/core/java/android/hardware/display/DisplayManagerInternal.java
@@ -260,6 +260,13 @@
             int displayId, long maxFrames, long timestamp);
 
     /**
+     * Temporarily ignore proximity-sensor-based display behavior until there is a change
+     * to the proximity sensor state. This allows the display to turn back on even if something
+     * is obstructing the proximity sensor.
+     */
+    public abstract void ignoreProximitySensorUntilChanged();
+
+    /**
      * Describes the requested power state of the display.
      *
      * This object is intended to describe the general characteristics of the
diff --git a/core/java/android/hardware/display/WifiDisplayStatus.java b/core/java/android/hardware/display/WifiDisplayStatus.java
index e2a825f..0004b39 100644
--- a/core/java/android/hardware/display/WifiDisplayStatus.java
+++ b/core/java/android/hardware/display/WifiDisplayStatus.java
@@ -17,6 +17,7 @@
 package android.hardware.display;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -35,9 +36,9 @@
     private final int mFeatureState;
     private final int mScanState;
     private final int mActiveDisplayState;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final WifiDisplay mActiveDisplay;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final WifiDisplay[] mDisplays;
 
     /** Session info needed for Miracast Certification */
@@ -50,23 +51,23 @@
     /** Feature state: Wifi display is turned off in settings. */
     public static final int FEATURE_STATE_OFF = 2;
     /** Feature state: Wifi display is turned on in settings. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int FEATURE_STATE_ON = 3;
 
     /** Scan state: Not currently scanning. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int SCAN_STATE_NOT_SCANNING = 0;
     /** Scan state: Currently scanning. */
     public static final int SCAN_STATE_SCANNING = 1;
 
     /** Display state: Not connected. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int DISPLAY_STATE_NOT_CONNECTED = 0;
     /** Display state: Connecting to active display. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int DISPLAY_STATE_CONNECTING = 1;
     /** Display state: Connected to active display. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int DISPLAY_STATE_CONNECTED = 2;
 
     public static final @android.annotation.NonNull Creator<WifiDisplayStatus> CREATOR = new Creator<WifiDisplayStatus>() {
diff --git a/core/java/android/hardware/fingerprint/FingerprintManager.java b/core/java/android/hardware/fingerprint/FingerprintManager.java
index d57a7e4b..1ea6f28 100644
--- a/core/java/android/hardware/fingerprint/FingerprintManager.java
+++ b/core/java/android/hardware/fingerprint/FingerprintManager.java
@@ -35,6 +35,7 @@
 import android.hardware.biometrics.BiometricPrompt;
 import android.hardware.biometrics.IBiometricServiceLockoutResetCallback;
 import android.os.Binder;
+import android.os.Build;
 import android.os.CancellationSignal;
 import android.os.CancellationSignal.OnCancelListener;
 import android.os.Handler;
@@ -628,7 +629,7 @@
      * @hide
      */
     @RequiresPermission(USE_FINGERPRINT)
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public List<Fingerprint> getEnrolledFingerprints(int userId) {
         if (mService != null) try {
             return mService.getEnrolledFingerprints(userId, mContext.getOpPackageName());
diff --git a/core/java/android/hardware/hdmi/HdmiControlManager.java b/core/java/android/hardware/hdmi/HdmiControlManager.java
index 1ce9b9c..f25b06b 100644
--- a/core/java/android/hardware/hdmi/HdmiControlManager.java
+++ b/core/java/android/hardware/hdmi/HdmiControlManager.java
@@ -29,7 +29,6 @@
 import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
-import android.annotation.TestApi;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.os.Binder;
@@ -58,7 +57,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 @SystemService(Context.HDMI_CONTROL_SERVICE)
 @RequiresFeature(PackageManager.FEATURE_HDMI_CEC)
 public final class HdmiControlManager {
@@ -409,7 +407,7 @@
      */
     @Nullable
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public HdmiClient getClient(int type) {
         if (mService == null) {
             return null;
@@ -442,7 +440,7 @@
      */
     @Nullable
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public HdmiPlaybackClient getPlaybackClient() {
         return (HdmiPlaybackClient) getClient(HdmiDeviceInfo.DEVICE_PLAYBACK);
     }
@@ -460,7 +458,7 @@
      */
     @Nullable
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public HdmiTvClient getTvClient() {
         return (HdmiTvClient) getClient(HdmiDeviceInfo.DEVICE_TV);
     }
@@ -478,7 +476,7 @@
      * @hide
      */
     @Nullable
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public HdmiAudioSystemClient getAudioSystemClient() {
         return (HdmiAudioSystemClient) getClient(HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM);
     }
@@ -493,7 +491,7 @@
      * @return {@link HdmiSwitchClient} instance. {@code null} on failure.
      */
     @Nullable
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public HdmiSwitchClient getSwitchClient() {
         return (HdmiSwitchClient) getClient(HdmiDeviceInfo.DEVICE_PURE_CEC_SWITCH);
     }
diff --git a/core/java/android/hardware/hdmi/HdmiPortInfo.java b/core/java/android/hardware/hdmi/HdmiPortInfo.java
index 52c3628..e97e120 100644
--- a/core/java/android/hardware/hdmi/HdmiPortInfo.java
+++ b/core/java/android/hardware/hdmi/HdmiPortInfo.java
@@ -18,7 +18,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -29,7 +28,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class HdmiPortInfo implements Parcelable {
     /** HDMI port type: Input */
     public static final int PORT_INPUT = 0;
diff --git a/core/java/android/hardware/hdmi/HdmiSwitchClient.java b/core/java/android/hardware/hdmi/HdmiSwitchClient.java
index 913edfd0..04ec095 100644
--- a/core/java/android/hardware/hdmi/HdmiSwitchClient.java
+++ b/core/java/android/hardware/hdmi/HdmiSwitchClient.java
@@ -18,7 +18,6 @@
 import android.annotation.CallbackExecutor;
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.hardware.hdmi.HdmiControlManager.ControlCallbackResult;
 import android.os.Binder;
 import android.os.RemoteException;
@@ -39,7 +38,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public class HdmiSwitchClient extends HdmiClient {
 
     private static final String TAG = "HdmiSwitchClient";
diff --git a/core/java/android/hardware/input/InputManager.java b/core/java/android/hardware/input/InputManager.java
index 72217a1..267057c 100644
--- a/core/java/android/hardware/input/InputManager.java
+++ b/core/java/android/hardware/input/InputManager.java
@@ -189,7 +189,7 @@
      * Waits for the event to be delivered to the application and handled.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(trackingBug = 171972397)
     public static final int INJECT_INPUT_EVENT_MODE_WAIT_FOR_FINISH = 2;  // see InputDispatcher.h
 
     /** @hide */
diff --git a/core/java/android/hardware/lights/Light.java b/core/java/android/hardware/lights/Light.java
index e90b57c..0400d3b 100644
--- a/core/java/android/hardware/lights/Light.java
+++ b/core/java/android/hardware/lights/Light.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -28,7 +27,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class Light implements Parcelable {
     private final int mId;
     private final int mOrdinal;
diff --git a/core/java/android/hardware/lights/LightState.java b/core/java/android/hardware/lights/LightState.java
index e55aa70..cd39e6d 100644
--- a/core/java/android/hardware/lights/LightState.java
+++ b/core/java/android/hardware/lights/LightState.java
@@ -19,7 +19,6 @@
 import android.annotation.ColorInt;
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -36,7 +35,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class LightState implements Parcelable {
     private final int mColor;
 
diff --git a/core/java/android/hardware/lights/LightsManager.java b/core/java/android/hardware/lights/LightsManager.java
index 8cd2312..33e5fca 100644
--- a/core/java/android/hardware/lights/LightsManager.java
+++ b/core/java/android/hardware/lights/LightsManager.java
@@ -45,7 +45,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 @SystemService(Context.LIGHTS_SERVICE)
 public final class LightsManager {
     private static final String TAG = "LightsManager";
diff --git a/core/java/android/hardware/lights/LightsRequest.java b/core/java/android/hardware/lights/LightsRequest.java
index 5c4fc67..a318992 100644
--- a/core/java/android/hardware/lights/LightsRequest.java
+++ b/core/java/android/hardware/lights/LightsRequest.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.util.SparseArray;
 
 import com.android.internal.util.Preconditions;
@@ -29,7 +28,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class LightsRequest {
 
     /** Visible to {@link LightsManager.Session}. */
diff --git a/core/java/android/hardware/location/ContextHubManager.java b/core/java/android/hardware/location/ContextHubManager.java
index 1ed791d..d444807 100644
--- a/core/java/android/hardware/location/ContextHubManager.java
+++ b/core/java/android/hardware/location/ContextHubManager.java
@@ -654,7 +654,7 @@
      *             register a {@link android.hardware.location.ContextHubClientCallback}.
      */
     @Deprecated
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public int registerCallback(@NonNull Callback callback) {
         return registerCallback(callback, null);
     }
@@ -688,7 +688,7 @@
      *             register a {@link android.hardware.location.ContextHubClientCallback}.
      */
     @Deprecated
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public int registerCallback(Callback callback, Handler handler) {
         synchronized(this) {
             if (mCallback != null) {
@@ -892,7 +892,7 @@
      * @deprecated Use {@link android.hardware.location.ContextHubClient#close()} to unregister
      *             a {@link android.hardware.location.ContextHubClientCallback}.
      */
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     @Deprecated
     public int unregisterCallback(@NonNull Callback callback) {
       synchronized(this) {
diff --git a/core/java/android/hardware/location/GeofenceHardware.java b/core/java/android/hardware/location/GeofenceHardware.java
index a1866af..313d8ef 100644
--- a/core/java/android/hardware/location/GeofenceHardware.java
+++ b/core/java/android/hardware/location/GeofenceHardware.java
@@ -169,7 +169,7 @@
                     GeofenceHardwareMonitorCallbackWrapper>();
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public GeofenceHardware(IGeofenceHardware service) {
         mService = service;
     }
diff --git a/core/java/android/hardware/location/IActivityRecognitionHardwareClient.aidl b/core/java/android/hardware/location/IActivityRecognitionHardwareClient.aidl
index 2dfaf60..b32b7e5 100644
--- a/core/java/android/hardware/location/IActivityRecognitionHardwareClient.aidl
+++ b/core/java/android/hardware/location/IActivityRecognitionHardwareClient.aidl
@@ -32,6 +32,6 @@
      * @param isSupported whether the platform has hardware support for the feature
      * @param instance the available instance to provide access to the feature
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void onAvailabilityChanged(in boolean isSupported, in IActivityRecognitionHardware instance);
 }
diff --git a/core/java/android/hardware/radio/RadioTuner.java b/core/java/android/hardware/radio/RadioTuner.java
index 0edd055..969db96 100644
--- a/core/java/android/hardware/radio/RadioTuner.java
+++ b/core/java/android/hardware/radio/RadioTuner.java
@@ -257,6 +257,7 @@
      * @throws IllegalArgumentException if id==0
      * @hide This API is not thoroughly elaborated yet
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract @Nullable Bitmap getMetadataImage(int id);
 
     /**
diff --git a/core/java/android/hardware/soundtrigger/SoundTrigger.java b/core/java/android/hardware/soundtrigger/SoundTrigger.java
index 80f35a0..bdced4b 100644
--- a/core/java/android/hardware/soundtrigger/SoundTrigger.java
+++ b/core/java/android/hardware/soundtrigger/SoundTrigger.java
@@ -37,6 +37,7 @@
 import android.media.soundtrigger_middleware.ISoundTriggerMiddlewareService;
 import android.media.soundtrigger_middleware.SoundTriggerModuleDescriptor;
 import android.media.soundtrigger_middleware.Status;
+import android.os.Build;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Looper;
@@ -59,7 +60,6 @@
  *
  * @hide
  */
-@TestApi
 @SystemApi
 public class SoundTrigger {
     private static final String TAG = "SoundTrigger";
@@ -1167,7 +1167,7 @@
 
         /** @hide */
         @TestApi
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public RecognitionEvent(int status, int soundModelHandle, boolean captureAvailable,
                 int captureSession, int captureDelayMs, int capturePreambleMs,
                 boolean triggerInData, @NonNull AudioFormat captureFormat, @Nullable byte[] data) {
@@ -1373,7 +1373,7 @@
     public static class RecognitionConfig implements Parcelable {
         /** True if the DSP should capture the trigger sound and make it available for further
          * capture. */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public final boolean captureRequested;
         /**
          * True if the service should restart listening after the DSP triggers.
@@ -1382,12 +1382,12 @@
         public final boolean allowMultipleTriggers;
         /** List of all keyphrases in the sound model for which recognition should be performed with
          * options for each keyphrase. */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         @NonNull
         public final KeyphraseRecognitionExtra keyphrases[];
         /** Opaque data for use by system applications who know about voice engine internals,
          * typically during enrollment. */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         @NonNull
         public final byte[] data;
 
@@ -1553,7 +1553,7 @@
         public final int id;
 
         /** Recognition modes matched for this event */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public final int recognitionModes;
 
         /** Confidence level for mode RECOGNITION_MODE_VOICE_TRIGGER when user identification
@@ -1660,7 +1660,7 @@
         @NonNull
         public final KeyphraseRecognitionExtra[] keyphraseExtras;
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public KeyphraseRecognitionEvent(int status, int soundModelHandle, boolean captureAvailable,
                int captureSession, int captureDelayMs, int capturePreambleMs,
                boolean triggerInData, @NonNull AudioFormat captureFormat, @Nullable byte[] data,
@@ -1782,7 +1782,7 @@
      * @hide
      */
     public static class GenericRecognitionEvent extends RecognitionEvent implements Parcelable {
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public GenericRecognitionEvent(int status, int soundModelHandle,
                 boolean captureAvailable, int captureSession, int captureDelayMs,
                 int capturePreambleMs, boolean triggerInData, @NonNull AudioFormat captureFormat,
@@ -1853,7 +1853,7 @@
         @NonNull
         public final byte[] data;
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         SoundModelEvent(int status, int soundModelHandle, @Nullable byte[] data) {
             this.status = status;
             this.soundModelHandle = soundModelHandle;
diff --git a/core/java/android/hardware/soundtrigger/SoundTriggerModule.java b/core/java/android/hardware/soundtrigger/SoundTriggerModule.java
index a2a15b3..3d089b18 100644
--- a/core/java/android/hardware/soundtrigger/SoundTriggerModule.java
+++ b/core/java/android/hardware/soundtrigger/SoundTriggerModule.java
@@ -26,6 +26,7 @@
 import android.media.soundtrigger_middleware.PhraseSoundModel;
 import android.media.soundtrigger_middleware.RecognitionEvent;
 import android.media.soundtrigger_middleware.SoundModel;
+import android.os.Build;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Looper;
@@ -45,7 +46,7 @@
     private static final int EVENT_RECOGNITION = 1;
     private static final int EVENT_SERVICE_DIED = 2;
     private static final int EVENT_SERVICE_STATE_CHANGE = 3;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mId;
     private EventHandlerDelegate mEventHandlerDelegate;
     private ISoundTriggerModule mService;
diff --git a/core/java/android/hardware/usb/UsbDeviceConnection.java b/core/java/android/hardware/usb/UsbDeviceConnection.java
index 53a5785..1c35cb6 100644
--- a/core/java/android/hardware/usb/UsbDeviceConnection.java
+++ b/core/java/android/hardware/usb/UsbDeviceConnection.java
@@ -47,7 +47,7 @@
     private Context mContext;
 
     // used by the JNI code
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mNativeContext;
 
     private final CloseGuard mCloseGuard = CloseGuard.get();
@@ -299,7 +299,7 @@
      * @hide
      */
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public boolean resetDevice() {
         return native_reset_device();
     }
diff --git a/core/java/android/hardware/usb/UsbManager.java b/core/java/android/hardware/usb/UsbManager.java
index d16f070..0ef55f4 100644
--- a/core/java/android/hardware/usb/UsbManager.java
+++ b/core/java/android/hardware/usb/UsbManager.java
@@ -193,7 +193,7 @@
      *
      * {@hide}
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String USB_DATA_UNLOCKED = "unlocked";
 
     /**
@@ -709,7 +709,7 @@
      * {@hide}
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isFunctionEnabled(String function) {
         try {
             return mService.isFunctionEnabled(function);
diff --git a/core/java/android/hardware/usb/UsbRequest.java b/core/java/android/hardware/usb/UsbRequest.java
index 473df71..d1c6465d 100644
--- a/core/java/android/hardware/usb/UsbRequest.java
+++ b/core/java/android/hardware/usb/UsbRequest.java
@@ -49,7 +49,7 @@
     static final int MAX_USBFS_BUFFER_SIZE = 16384;
 
     // used by the JNI code
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mNativeContext;
 
     private UsbEndpoint mEndpoint;
diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java
index 1c5df48..6c6bd00 100644
--- a/core/java/android/inputmethodservice/InputMethodService.java
+++ b/core/java/android/inputmethodservice/InputMethodService.java
@@ -1097,7 +1097,7 @@
             mService.getContentResolver().unregisterContentObserver(this);
         }
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private boolean shouldShowImeWithHardKeyboard() {
             // Lazily initialize as needed.
             if (mShowImeWithHardKeyboard == ShowImeWithHardKeyboardType.UNKNOWN) {
@@ -1137,7 +1137,7 @@
             return "SettingsObserver{mShowImeWithHardKeyboard=" + mShowImeWithHardKeyboard  + "}";
         }
     }
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private SettingsObserver mSettingsObserver;
 
     /**
diff --git a/core/java/android/metrics/LogMaker.java b/core/java/android/metrics/LogMaker.java
index d8a2082..a19eb56 100644
--- a/core/java/android/metrics/LogMaker.java
+++ b/core/java/android/metrics/LogMaker.java
@@ -16,7 +16,6 @@
 package android.metrics;
 
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.content.ComponentName;
 import android.util.Log;
 import android.util.SparseArray;
@@ -32,7 +31,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public class LogMaker {
     private static final String TAG = "LogBuilder";
 
diff --git a/core/java/android/metrics/MetricsReader.java b/core/java/android/metrics/MetricsReader.java
index 27f9a5d..5f356ca 100644
--- a/core/java/android/metrics/MetricsReader.java
+++ b/core/java/android/metrics/MetricsReader.java
@@ -16,7 +16,6 @@
 package android.metrics;
 
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.util.EventLog;
 
 import com.android.internal.annotations.VisibleForTesting;
@@ -36,7 +35,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public class MetricsReader {
     private Queue<LogMaker> mPendingQueue = new LinkedList<>();
     private Queue<LogMaker> mSeenQueue = new LinkedList<>();
diff --git a/core/java/android/net/CaptivePortal.java b/core/java/android/net/CaptivePortal.java
index 8afeb30..c2586fa 100644
--- a/core/java/android/net/CaptivePortal.java
+++ b/core/java/android/net/CaptivePortal.java
@@ -19,7 +19,6 @@
 import android.annotation.NonNull;
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.IBinder;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -42,7 +41,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int APP_RETURN_DISMISSED    = 0;
     /**
      * Response code from the captive portal application, indicating that the user did not login and
@@ -52,7 +50,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int APP_RETURN_UNWANTED     = 1;
     /**
      * Response code from the captive portal application, indicating that the user does not wish to
@@ -62,7 +59,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int APP_RETURN_WANTED_AS_IS = 2;
     /** Event offset of request codes from captive portal application. */
     private static final int APP_REQUEST_BASE = 100;
@@ -74,7 +70,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int APP_REQUEST_REEVALUATION_REQUIRED = APP_REQUEST_BASE + 0;
 
     private final IBinder mBinder;
@@ -154,7 +149,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public void useNetwork() {
         try {
             ICaptivePortal.Stub.asInterface(mBinder).appResponse(APP_RETURN_WANTED_AS_IS);
@@ -167,7 +161,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(android.Manifest.permission.NETWORK_STACK)
     public void reevaluateNetwork() {
         try {
@@ -183,7 +176,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public void logEvent(@EventId int eventId, @NonNull String packageName) {
         try {
             ICaptivePortal.Stub.asInterface(mBinder).logEvent(eventId, packageName);
diff --git a/core/java/android/net/CaptivePortalData.java b/core/java/android/net/CaptivePortalData.java
index 1357803..c443c75 100644
--- a/core/java/android/net/CaptivePortalData.java
+++ b/core/java/android/net/CaptivePortalData.java
@@ -19,7 +19,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -30,7 +29,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class CaptivePortalData implements Parcelable {
     private final long mRefreshTimeMillis;
     @Nullable
diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java
index dcf3b5c..c28a901 100644
--- a/core/java/android/net/ConnectivityManager.java
+++ b/core/java/android/net/ConnectivityManager.java
@@ -269,7 +269,6 @@
      * {@hide}
      */
     @SystemApi
-    @TestApi
     public static final String EXTRA_CAPTIVE_PORTAL_PROBE_SPEC =
             "android.net.extra.CAPTIVE_PORTAL_PROBE_SPEC";
 
@@ -278,7 +277,6 @@
      * {@hide}
      */
     @SystemApi
-    @TestApi
     public static final String EXTRA_CAPTIVE_PORTAL_USER_AGENT =
             "android.net.extra.CAPTIVE_PORTAL_USER_AGENT";
 
@@ -356,7 +354,7 @@
      * @hide
      */
     @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String ACTION_TETHER_STATE_CHANGED =
             TetheringManager.ACTION_TETHER_STATE_CHANGED;
 
@@ -365,7 +363,7 @@
      * gives a String[] listing all the interfaces configured for
      * tethering and currently available for tethering.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String EXTRA_AVAILABLE_TETHER = TetheringManager.EXTRA_AVAILABLE_TETHER;
 
     /**
@@ -380,7 +378,7 @@
      * gives a String[] listing all the interfaces currently tethered
      * (ie, has DHCPv4 support and packets potentially forwarded/NATed)
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String EXTRA_ACTIVE_TETHER = TetheringManager.EXTRA_ACTIVE_TETHER;
 
     /**
@@ -389,7 +387,7 @@
      * failed.  Use {@link #getLastTetherError} to find the error code
      * for any interfaces listed here.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String EXTRA_ERRORED_TETHER = TetheringManager.EXTRA_ERRORED_TETHER;
 
     /**
@@ -852,7 +850,7 @@
      * {@hide}
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static String getNetworkTypeName(int type) {
         switch (type) {
           case TYPE_NONE:
@@ -899,6 +897,18 @@
     }
 
     /**
+     * @hide
+     * TODO: Expose for SystemServer when becomes a module.
+     */
+    public void systemReady() {
+        try {
+            mService.systemReady();
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
      * Checks if a given type uses the cellular data connection.
      * This should be replaced in the future by a network property.
      * @param networkType the type to check
@@ -1163,7 +1173,7 @@
      * {@hide}
      */
     @RequiresPermission(android.Manifest.permission.NETWORK_STACK)
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public NetworkInfo getActiveNetworkInfoForUid(int uid) {
         return getActiveNetworkInfoForUid(uid, false);
     }
@@ -1510,7 +1520,7 @@
         return 1;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private NetworkCapabilities networkCapabilitiesForFeature(int networkType, String feature) {
         if (networkType == TYPE_MOBILE) {
             switch (feature) {
@@ -1596,7 +1606,7 @@
         };
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final HashMap<NetworkCapabilities, LegacyRequest> sLegacyRequests =
             new HashMap<>();
 
@@ -1625,7 +1635,7 @@
         Log.d(TAG, "expireRequest with " + ourSeqNum + ", " + sequenceNum);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private NetworkRequest requestNetworkForFeatureLocked(NetworkCapabilities netCap) {
         int delay = -1;
         int type = legacyTypeForNetworkCapabilities(netCap);
@@ -1655,7 +1665,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private boolean removeRequestForFeature(NetworkCapabilities netCap) {
         final LegacyRequest l;
         synchronized (sLegacyRequests) {
@@ -1722,17 +1732,17 @@
 
     /** @hide */
     public static class PacketKeepaliveCallback {
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public PacketKeepaliveCallback() {
         }
         /** The requested keepalive was successfully started. */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public void onStarted() {}
         /** The keepalive was successfully stopped. */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public void onStopped() {}
         /** An error occurred. */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public void onError(int error) {}
     }
 
@@ -1796,7 +1806,7 @@
 
         private volatile Integer mSlot;
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public void stop() {
             try {
                 mExecutor.execute(() -> {
@@ -1865,7 +1875,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public PacketKeepalive startNattKeepalive(
             Network network, int intervalSeconds, PacketKeepaliveCallback callback,
             InetAddress srcAddr, int srcPort, InetAddress dstAddr) {
@@ -2100,7 +2110,7 @@
 
     /** {@hide} */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public NetworkQuotaInfo getActiveNetworkQuotaInfo() {
         try {
             return mService.getActiveNetworkQuotaInfo();
@@ -2398,7 +2408,7 @@
      *
      * {@hide}
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @Deprecated
     public int tether(String iface) {
         return mTetheringManager.tether(iface);
@@ -2839,7 +2849,7 @@
      * {@hide}
      */
     @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @Deprecated
     public int getLastTetherError(String iface) {
         int error = mTetheringManager.getLastTetherError(iface);
@@ -4401,7 +4411,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK)
     public void startCaptivePortalApp(@NonNull Network network, @NonNull Bundle appExtras) {
         try {
@@ -4650,7 +4659,7 @@
      * @deprecated This is strictly for legacy usage to support {@link #startUsingNetworkFeature}.
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static boolean setProcessDefaultNetworkForHostResolution(Network network) {
         return NetworkUtils.bindProcessToNetworkForHostResolution(
                 (network == null) ? NETID_UNSET : network.getNetIdForResolv());
@@ -4807,4 +4816,9 @@
             e.rethrowFromSystemServer();
         }
     }
+
+    private void setOemNetworkPreference(@NonNull OemNetworkPreferences preference) {
+        Log.d(TAG, "setOemNetworkPreference called with preference: "
+                + preference.toString());
+    }
 }
diff --git a/core/java/android/net/DhcpResults.java b/core/java/android/net/DhcpResults.java
index 1ef4f17..ef0a436 100644
--- a/core/java/android/net/DhcpResults.java
+++ b/core/java/android/net/DhcpResults.java
@@ -18,6 +18,7 @@
 
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.text.TextUtils;
@@ -40,30 +41,30 @@
 public final class DhcpResults implements Parcelable {
     private static final String TAG = "DhcpResults";
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public LinkAddress ipAddress;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public InetAddress gateway;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final ArrayList<InetAddress> dnsServers = new ArrayList<>();
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public String domains;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Inet4Address serverAddress;
 
     /** Vendor specific information (from RFC 2132). */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public String vendorInfo;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int leaseDuration;
 
     /** Link MTU option. 0 means unset. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int mtu;
 
     public String serverHostName;
diff --git a/core/java/android/net/EthernetManager.java b/core/java/android/net/EthernetManager.java
index d975017..84a8e1c 100644
--- a/core/java/android/net/EthernetManager.java
+++ b/core/java/android/net/EthernetManager.java
@@ -23,6 +23,7 @@
 import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
+import android.os.Build;
 import android.os.Handler;
 import android.os.Message;
 import android.os.RemoteException;
@@ -37,7 +38,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 @SystemService(Context.ETHERNET_SERVICE)
 public class EthernetManager {
     private static final String TAG = "EthernetManager";
@@ -77,7 +77,7 @@
          * @param isAvailable {@code true} if Ethernet port exists.
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         void onAvailabilityChanged(String iface, boolean isAvailable);
     }
 
@@ -98,7 +98,7 @@
      * @return the Ethernet Configuration, contained in {@link IpConfiguration}.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public IpConfiguration getConfiguration(String iface) {
         try {
             return mService.getConfiguration(iface);
@@ -111,7 +111,7 @@
      * Set Ethernet configuration.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setConfiguration(String iface, IpConfiguration config) {
         try {
             mService.setConfiguration(iface, config);
@@ -124,7 +124,7 @@
      * Indicates whether the system currently has one or more Ethernet interfaces.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isAvailable() {
         return getAvailableInterfaces().length > 0;
     }
@@ -135,7 +135,7 @@
      * @param iface Ethernet interface name
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isAvailable(String iface) {
         try {
             return mService.isAvailable(iface);
@@ -150,7 +150,7 @@
      * @throws IllegalArgumentException If the listener is null.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void addListener(Listener listener) {
         if (listener == null) {
             throw new IllegalArgumentException("listener must not be null");
@@ -169,7 +169,7 @@
      * Returns an array of available Ethernet interface names.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public String[] getAvailableInterfaces() {
         try {
             return mService.getAvailableInterfaces();
@@ -184,7 +184,7 @@
      * @throws IllegalArgumentException If the listener is null.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void removeListener(Listener listener) {
         if (listener == null) {
             throw new IllegalArgumentException("listener must not be null");
diff --git a/core/java/android/net/IConnectivityManager.aidl b/core/java/android/net/IConnectivityManager.aidl
index d7f178c..4173200 100644
--- a/core/java/android/net/IConnectivityManager.aidl
+++ b/core/java/android/net/IConnectivityManager.aidl
@@ -73,7 +73,7 @@
 
     NetworkCapabilities getNetworkCapabilities(in Network network, String callingPackageName);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     NetworkState[] getAllNetworkState();
 
     NetworkQuotaInfo getActiveNetworkQuotaInfo();
@@ -134,7 +134,7 @@
 
     VpnConfig getVpnConfig(int userId);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void startLegacyVpn(in VpnProfile profile);
 
     LegacyVpnInfo getLegacyVpnInfo(int userId);
@@ -233,4 +233,6 @@
 
     void simulateDataStall(int detectionMethod, long timestampMillis, in Network network,
                 in PersistableBundle extras);
+
+    void systemReady();
 }
diff --git a/core/java/android/net/INetworkPolicyManager.aidl b/core/java/android/net/INetworkPolicyManager.aidl
index 72a6b39..e486052 100644
--- a/core/java/android/net/INetworkPolicyManager.aidl
+++ b/core/java/android/net/INetworkPolicyManager.aidl
@@ -67,7 +67,7 @@
     void setDeviceIdleMode(boolean enabled);
     void setWifiMeteredOverride(String networkId, int meteredOverride);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     NetworkQuotaInfo getNetworkQuotaInfo(in NetworkState state);
 
     SubscriptionPlan[] getSubscriptionPlans(int subId, String callingPackage);
diff --git a/core/java/android/net/INetworkStatsService.aidl b/core/java/android/net/INetworkStatsService.aidl
index 5fa515a..1a3dc97 100644
--- a/core/java/android/net/INetworkStatsService.aidl
+++ b/core/java/android/net/INetworkStatsService.aidl
@@ -42,7 +42,7 @@
      *  PACKAGE_USAGE_STATS permission is always checked. If PACKAGE_USAGE_STATS is not granted
      *  READ_NETWORK_USAGE_STATS is checked for.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     INetworkStatsSession openSessionForUsageStats(int flags, String callingPackage);
 
     /** Return data layer snapshot of UID network usage. */
diff --git a/core/java/android/net/IpConfiguration.java b/core/java/android/net/IpConfiguration.java
index 23d5ff7..0b20564 100644
--- a/core/java/android/net/IpConfiguration.java
+++ b/core/java/android/net/IpConfiguration.java
@@ -21,6 +21,7 @@
 import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -98,7 +99,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public IpConfiguration(IpAssignment ipAssignment,
                            ProxySettings proxySettings,
                            StaticIpConfiguration staticIpConfiguration,
diff --git a/core/java/android/net/IpPrefix.java b/core/java/android/net/IpPrefix.java
index 8cfe6df..e7c8014 100644
--- a/core/java/android/net/IpPrefix.java
+++ b/core/java/android/net/IpPrefix.java
@@ -19,7 +19,6 @@
 import android.annotation.IntRange;
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.util.Pair;
@@ -88,7 +87,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public IpPrefix(@NonNull InetAddress address, @IntRange(from = 0, to = 128) int prefixLength) {
         // We don't reuse the (byte[], int) constructor because it calls clone() on the byte array,
         // which is unnecessary because getAddress() already returns a clone.
@@ -107,7 +105,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public IpPrefix(@NonNull String prefix) {
         // We don't reuse the (InetAddress, int) constructor because "error: call to this must be
         // first statement in constructor". We could factor out setting the member variables to an
diff --git a/core/java/android/net/IpSecAlgorithm.java b/core/java/android/net/IpSecAlgorithm.java
index 38d9883..e89451e 100644
--- a/core/java/android/net/IpSecAlgorithm.java
+++ b/core/java/android/net/IpSecAlgorithm.java
@@ -17,6 +17,7 @@
 
 import android.annotation.NonNull;
 import android.annotation.StringDef;
+import android.content.res.Resources;
 import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -27,6 +28,12 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
 
 /**
  * This class represents a single algorithm that can be used by an {@link IpSecTransform}.
@@ -52,6 +59,27 @@
     public static final String CRYPT_AES_CBC = "cbc(aes)";
 
     /**
+     * AES-CTR Encryption/Ciphering Algorithm.
+     *
+     * <p>Valid lengths for keying material are {160, 224, 288}.
+     *
+     * <p>As per <a href="https://tools.ietf.org/html/rfc3686#section-5.1">RFC3686 (Section
+     * 5.1)</a>, keying material consists of a 128, 192, or 256 bit AES key followed by a 32-bit
+     * nonce. RFC compliance requires that the nonce must be unique per security association.
+     *
+     * <p>This algorithm may be available on the device. Caller MUST check if it is supported before
+     * using it by calling {@link #getSupportedAlgorithms()} and checking if this algorithm is
+     * included in the returned algorithm set. The returned algorithm set will not change unless the
+     * device is rebooted. {@link IllegalArgumentException} will be thrown if this algorithm is
+     * requested on an unsupported device.
+     *
+     * <p>@see {@link #getSupportedAlgorithms()}
+     */
+    // This algorithm may be available on devices released before Android 12, and is guaranteed
+    // to be available on devices first shipped with Android 12 or later.
+    public static final String CRYPT_AES_CTR = "rfc3686(ctr(aes))";
+
+    /**
      * MD5 HMAC Authentication/Integrity Algorithm. <b>This algorithm is not recommended for use in
      * new applications and is provided for legacy compatibility with 3gpp infrastructure.</b>
      *
@@ -99,6 +127,25 @@
     public static final String AUTH_HMAC_SHA512 = "hmac(sha512)";
 
     /**
+     * AES-XCBC Authentication/Integrity Algorithm.
+     *
+     * <p>Keys for this algorithm must be 128 bits in length.
+     *
+     * <p>The only valid truncation length is 96 bits.
+     *
+     * <p>This algorithm may be available on the device. Caller MUST check if it is supported before
+     * using it by calling {@link #getSupportedAlgorithms()} and checking if this algorithm is
+     * included in the returned algorithm set. The returned algorithm set will not change unless the
+     * device is rebooted. {@link IllegalArgumentException} will be thrown if this algorithm is
+     * requested on an unsupported device.
+     *
+     * <p>@see {@link #getSupportedAlgorithms()}
+     */
+    // This algorithm may be available on devices released before Android 12, and is guaranteed
+    // to be available on devices first shipped with Android 12 or later.
+    public static final String AUTH_AES_XCBC = "xcbc(aes)";
+
+    /**
      * AES-GCM Authentication/Integrity + Encryption/Ciphering Algorithm.
      *
      * <p>Valid lengths for keying material are {160, 224, 288}.
@@ -111,19 +158,69 @@
      */
     public static final String AUTH_CRYPT_AES_GCM = "rfc4106(gcm(aes))";
 
+    /**
+     * ChaCha20-Poly1305 Authentication/Integrity + Encryption/Ciphering Algorithm.
+     *
+     * <p>Keys for this algorithm must be 288 bits in length.
+     *
+     * <p>As per <a href="https://tools.ietf.org/html/rfc7634#section-2">RFC7634 (Section 2)</a>,
+     * keying material consists of a 256 bit key followed by a 32-bit salt. The salt is fixed per
+     * security association.
+     *
+     * <p>The only valid ICV (truncation) length is 128 bits.
+     *
+     * <p>This algorithm may be available on the device. Caller MUST check if it is supported before
+     * using it by calling {@link #getSupportedAlgorithms()} and checking if this algorithm is
+     * included in the returned algorithm set. The returned algorithm set will not change unless the
+     * device is rebooted. {@link IllegalArgumentException} will be thrown if this algorithm is
+     * requested on an unsupported device.
+     *
+     * <p>@see {@link #getSupportedAlgorithms()}
+     */
+    // This algorithm may be available on devices released before Android 12, and is guaranteed
+    // to be available on devices first shipped with Android 12 or later.
+    public static final String AUTH_CRYPT_CHACHA20_POLY1305 = "rfc7539esp(chacha20,poly1305)";
+
     /** @hide */
     @StringDef({
         CRYPT_AES_CBC,
+        CRYPT_AES_CTR,
         AUTH_HMAC_MD5,
         AUTH_HMAC_SHA1,
         AUTH_HMAC_SHA256,
         AUTH_HMAC_SHA384,
         AUTH_HMAC_SHA512,
-        AUTH_CRYPT_AES_GCM
+        AUTH_AES_XCBC,
+        AUTH_CRYPT_AES_GCM,
+        AUTH_CRYPT_CHACHA20_POLY1305
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface AlgorithmName {}
 
+    /** @hide */
+    @VisibleForTesting
+    public static final Map<String, Integer> ALGO_TO_REQUIRED_FIRST_SDK = new HashMap<>();
+
+    private static final int SDK_VERSION_ZERO = 0;
+
+    static {
+        ALGO_TO_REQUIRED_FIRST_SDK.put(CRYPT_AES_CBC, SDK_VERSION_ZERO);
+        ALGO_TO_REQUIRED_FIRST_SDK.put(AUTH_HMAC_MD5, SDK_VERSION_ZERO);
+        ALGO_TO_REQUIRED_FIRST_SDK.put(AUTH_HMAC_SHA1, SDK_VERSION_ZERO);
+        ALGO_TO_REQUIRED_FIRST_SDK.put(AUTH_HMAC_SHA256, SDK_VERSION_ZERO);
+        ALGO_TO_REQUIRED_FIRST_SDK.put(AUTH_HMAC_SHA384, SDK_VERSION_ZERO);
+        ALGO_TO_REQUIRED_FIRST_SDK.put(AUTH_HMAC_SHA512, SDK_VERSION_ZERO);
+        ALGO_TO_REQUIRED_FIRST_SDK.put(AUTH_CRYPT_AES_GCM, SDK_VERSION_ZERO);
+
+        // STOPSHIP: b/170424293 Use Build.VERSION_CODES.S when it is defined
+        ALGO_TO_REQUIRED_FIRST_SDK.put(CRYPT_AES_CTR, Build.VERSION_CODES.R + 1);
+        ALGO_TO_REQUIRED_FIRST_SDK.put(AUTH_AES_XCBC, Build.VERSION_CODES.R + 1);
+        ALGO_TO_REQUIRED_FIRST_SDK.put(AUTH_CRYPT_CHACHA20_POLY1305, Build.VERSION_CODES.R + 1);
+    }
+
+    private static final Set<String> ENABLED_ALGOS =
+            Collections.unmodifiableSet(loadAlgos(Resources.getSystem()));
+
     private final String mName;
     private final byte[] mKey;
     private final int mTruncLenBits;
@@ -137,6 +234,7 @@
      *
      * @param algorithm name of the algorithm.
      * @param key key padded to a multiple of 8 bits.
+     * @throws IllegalArgumentException if algorithm or key length is invalid.
      */
     public IpSecAlgorithm(@NonNull @AlgorithmName String algorithm, @NonNull byte[] key) {
         this(algorithm, key, 0);
@@ -152,6 +250,7 @@
      * @param algorithm name of the algorithm.
      * @param key key padded to a multiple of 8 bits.
      * @param truncLenBits number of bits of output hash to use.
+     * @throws IllegalArgumentException if algorithm, key length or truncation length is invalid.
      */
     public IpSecAlgorithm(
             @NonNull @AlgorithmName String algorithm, @NonNull byte[] key, int truncLenBits) {
@@ -206,13 +305,59 @@
                 }
             };
 
-    private static void checkValidOrThrow(String name, int keyLen, int truncLen) {
-        boolean isValidLen = true;
-        boolean isValidTruncLen = true;
+    /**
+     * Returns supported IPsec algorithms for the current device.
+     *
+     * <p>Some algorithms may not be supported on old devices. Callers MUST check if an algorithm is
+     * supported before using it.
+     */
+    @NonNull
+    public static Set<String> getSupportedAlgorithms() {
+        return ENABLED_ALGOS;
+    }
 
-        switch(name) {
+    /** @hide */
+    @VisibleForTesting
+    public static Set<String> loadAlgos(Resources systemResources) {
+        final Set<String> enabledAlgos = new HashSet<>();
+
+        // Load and validate the optional algorithm resource. Undefined or duplicate algorithms in
+        // the resource are not allowed.
+        final String[] resourceAlgos = systemResources.getStringArray(
+                com.android.internal.R.array.config_optionalIpSecAlgorithms);
+        for (String str : resourceAlgos) {
+            if (!ALGO_TO_REQUIRED_FIRST_SDK.containsKey(str) || !enabledAlgos.add(str)) {
+                // This error should be caught by CTS and never be thrown to API callers
+                throw new IllegalArgumentException("Invalid or repeated algorithm " + str);
+            }
+        }
+
+        for (Entry<String, Integer> entry : ALGO_TO_REQUIRED_FIRST_SDK.entrySet()) {
+            if (Build.VERSION.FIRST_SDK_INT >= entry.getValue()) {
+                enabledAlgos.add(entry.getKey());
+            }
+        }
+
+        return enabledAlgos;
+    }
+
+    private static void checkValidOrThrow(String name, int keyLen, int truncLen) {
+        final boolean isValidLen;
+        final boolean isValidTruncLen;
+
+        if (!getSupportedAlgorithms().contains(name)) {
+            throw new IllegalArgumentException("Unsupported algorithm: " + name);
+        }
+
+        switch (name) {
             case CRYPT_AES_CBC:
                 isValidLen = keyLen == 128 || keyLen == 192 || keyLen == 256;
+                isValidTruncLen = true;
+                break;
+            case CRYPT_AES_CTR:
+                // The keying material for AES-CTR is a key plus a 32-bit salt
+                isValidLen = keyLen == 128 + 32 || keyLen == 192 + 32 || keyLen == 256 + 32;
+                isValidTruncLen = true;
                 break;
             case AUTH_HMAC_MD5:
                 isValidLen = keyLen == 128;
@@ -234,12 +379,22 @@
                 isValidLen = keyLen == 512;
                 isValidTruncLen = truncLen >= 256 && truncLen <= 512;
                 break;
+            case AUTH_AES_XCBC:
+                isValidLen = keyLen == 128;
+                isValidTruncLen = truncLen == 96;
+                break;
             case AUTH_CRYPT_AES_GCM:
                 // The keying material for GCM is a key plus a 32-bit salt
                 isValidLen = keyLen == 128 + 32 || keyLen == 192 + 32 || keyLen == 256 + 32;
                 isValidTruncLen = truncLen == 64 || truncLen == 96 || truncLen == 128;
                 break;
+            case AUTH_CRYPT_CHACHA20_POLY1305:
+                // The keying material for ChaCha20Poly1305 is a key plus a 32-bit salt
+                isValidLen = keyLen == 256 + 32;
+                isValidTruncLen = truncLen == 128;
+                break;
             default:
+                // Should never hit here.
                 throw new IllegalArgumentException("Couldn't find an algorithm: " + name);
         }
 
@@ -260,6 +415,7 @@
             case AUTH_HMAC_SHA256:
             case AUTH_HMAC_SHA384:
             case AUTH_HMAC_SHA512:
+            case AUTH_AES_XCBC:
                 return true;
             default:
                 return false;
@@ -268,12 +424,24 @@
 
     /** @hide */
     public boolean isEncryption() {
-        return getName().equals(CRYPT_AES_CBC);
+        switch (getName()) {
+            case CRYPT_AES_CBC: // fallthrough
+            case CRYPT_AES_CTR:
+                return true;
+            default:
+                return false;
+        }
     }
 
     /** @hide */
     public boolean isAead() {
-        return getName().equals(AUTH_CRYPT_AES_GCM);
+        switch (getName()) {
+            case AUTH_CRYPT_AES_GCM: // fallthrough
+            case AUTH_CRYPT_CHACHA20_POLY1305:
+                return true;
+            default:
+                return false;
+        }
     }
 
     // Because encryption keys are sensitive and userdebug builds are used by large user pools
diff --git a/core/java/android/net/KeepalivePacketData.java b/core/java/android/net/KeepalivePacketData.java
index e21cb44..5877f1f 100644
--- a/core/java/android/net/KeepalivePacketData.java
+++ b/core/java/android/net/KeepalivePacketData.java
@@ -22,9 +22,10 @@
 import android.annotation.IntRange;
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.net.util.IpUtils;
 import android.util.Log;
 
+import com.android.net.module.util.IpUtils;
+
 import java.net.InetAddress;
 
 /**
diff --git a/core/java/android/net/LinkAddress.java b/core/java/android/net/LinkAddress.java
index a9d7f17..44d25a1 100644
--- a/core/java/android/net/LinkAddress.java
+++ b/core/java/android/net/LinkAddress.java
@@ -30,7 +30,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.os.Build;
 import android.os.Parcel;
@@ -158,7 +157,6 @@
      * @return true if the address is IPv6.
      * @hide
      */
-    @TestApi
     @SystemApi
     public boolean isIpv6() {
         return address instanceof Inet6Address;
@@ -180,7 +178,6 @@
      * @return true if the address is IPv4 or is a mapped IPv4 address.
      * @hide
      */
-    @TestApi
     @SystemApi
     public boolean isIpv4() {
         return address instanceof Inet4Address;
@@ -243,7 +240,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public LinkAddress(@NonNull InetAddress address, @IntRange(from = 0, to = 128) int prefixLength,
             int flags, int scope) {
         init(address, prefixLength, flags, scope, LIFETIME_UNKNOWN, LIFETIME_UNKNOWN);
@@ -275,7 +271,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public LinkAddress(@NonNull InetAddress address, @IntRange(from = 0, to = 128) int prefixLength,
                        int flags, int scope, long deprecationTime, long expirationTime) {
         init(address, prefixLength, flags, scope, deprecationTime, expirationTime);
@@ -289,7 +284,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public LinkAddress(@NonNull InetAddress address,
             @IntRange(from = 0, to = 128) int prefixLength) {
         this(address, prefixLength, 0, 0);
@@ -314,7 +308,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public LinkAddress(@NonNull String address) {
         this(address, 0, 0);
         this.scope = scopeForUnicastAddress(this.address);
@@ -329,7 +322,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public LinkAddress(@NonNull String address, int flags, int scope) {
         // This may throw an IllegalArgumentException; catching it is the caller's responsibility.
         // TODO: consider rejecting mapped IPv4 addresses such as "::ffff:192.0.2.5/24".
@@ -389,7 +381,6 @@
      * otherwise.
      * @hide
      */
-    @TestApi
     @SystemApi
     public boolean isSameAddressAs(@Nullable LinkAddress other) {
         if (other == null) {
@@ -469,7 +460,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public long getDeprecationTime() {
         return deprecationTime;
     }
@@ -485,7 +475,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public long getExpirationTime() {
         return expirationTime;
     }
@@ -496,7 +485,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public boolean isGlobalPreferred() {
         /**
diff --git a/core/java/android/net/LinkProperties.java b/core/java/android/net/LinkProperties.java
index 651494d..06046f7 100644
--- a/core/java/android/net/LinkProperties.java
+++ b/core/java/android/net/LinkProperties.java
@@ -19,10 +19,8 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.net.util.LinkPropertiesUtils;
-import android.net.util.LinkPropertiesUtils.CompareResult;
 import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -82,8 +80,10 @@
     private final transient boolean mParcelSensitiveFields;
 
     private static final int MIN_MTU    = 68;
-    /* package-visibility - Used in other files (such as Ikev2VpnProfile) as minimum iface MTU. */
-    static final int MIN_MTU_V6 = 1280;
+
+    /** @hide */
+    public static final int MIN_MTU_V6 = 1280;
+
     private static final int MAX_MTU    = 10000;
 
     private static final int INET6_ADDR_LENGTH = 16;
@@ -113,7 +113,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static ProvisioningChange compareProvisioning(
             LinkProperties before, LinkProperties after) {
         if (before.isProvisioned() && after.isProvisioned()) {
@@ -162,7 +162,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public LinkProperties(@Nullable LinkProperties source) {
         this(source, false /* parcelSensitiveFields */);
     }
@@ -178,7 +177,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public LinkProperties(@Nullable LinkProperties source, boolean parcelSensitiveFields) {
         mParcelSensitiveFields = parcelSensitiveFields;
         if (source == null) return;
@@ -293,7 +291,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public boolean addLinkAddress(@NonNull LinkAddress address) {
         if (address == null) {
             return false;
@@ -322,7 +319,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public boolean removeLinkAddress(@NonNull LinkAddress toRemove) {
         int i = findLinkAddressIndex(toRemove);
         if (i >= 0) {
@@ -376,7 +372,6 @@
      * @return true if the DNS server was added, false if it was already present.
      * @hide
      */
-    @TestApi
     @SystemApi
     public boolean addDnsServer(@NonNull InetAddress dnsServer) {
         if (dnsServer != null && !mDnses.contains(dnsServer)) {
@@ -393,7 +388,6 @@
      * @return true if the DNS server was removed, false if it did not exist.
      * @hide
      */
-    @TestApi
     @SystemApi
     public boolean removeDnsServer(@NonNull InetAddress dnsServer) {
         return mDnses.remove(dnsServer);
@@ -428,7 +422,6 @@
      * @param usePrivateDns The private DNS state.
      * @hide
      */
-    @TestApi
     @SystemApi
     public void setUsePrivateDns(boolean usePrivateDns) {
         mUsePrivateDns = usePrivateDns;
@@ -455,7 +448,6 @@
      * @param privateDnsServerName The private DNS server name.
      * @hide
      */
-    @TestApi
     @SystemApi
     public void setPrivateDnsServerName(@Nullable String privateDnsServerName) {
         mPrivateDnsServerName = privateDnsServerName;
@@ -534,7 +526,6 @@
      *        object.
      * @hide
      */
-    @TestApi
     @SystemApi
     public void setValidatedPrivateDnsServers(@NonNull Collection<InetAddress> dnsServers) {
         mValidatedPrivateDnses.clear();
@@ -551,7 +542,6 @@
      *         DNS servers on this link.
      * @hide
      */
-    @TestApi
     @SystemApi
     public @NonNull List<InetAddress> getValidatedPrivateDnsServers() {
         return Collections.unmodifiableList(mValidatedPrivateDnses);
@@ -592,7 +582,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public void setPcscfServers(@NonNull Collection<InetAddress> pcscfServers) {
         mPcscfs.clear();
         for (InetAddress pcscfServer: pcscfServers) {
@@ -608,7 +597,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public @NonNull List<InetAddress> getPcscfServers() {
         return Collections.unmodifiableList(mPcscfs);
     }
@@ -662,7 +650,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public void setTcpBufferSizes(@Nullable String tcpBufferSizes) {
         mTcpBufferSizes = tcpBufferSizes;
@@ -675,7 +662,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public @Nullable String getTcpBufferSizes() {
         return mTcpBufferSizes;
@@ -744,7 +730,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public boolean removeRoute(@NonNull RouteInfo route) {
         return Objects.equals(mIfaceName, route.getInterface()) && mRoutes.remove(route);
@@ -866,7 +851,7 @@
      * Returns all the links stacked on top of this link.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public @NonNull List<LinkProperties> getStackedLinks() {
         if (mStackedLinks.isEmpty()) {
             return Collections.emptyList();
@@ -1021,7 +1006,6 @@
      * @return {@code true} if there is an IPv4 address, {@code false} otherwise.
      * @hide
      */
-    @TestApi
     @SystemApi
     public boolean hasIpv4Address() {
         for (LinkAddress address : mLinkAddresses) {
@@ -1062,7 +1046,6 @@
      * @return {@code true} if there is a global preferred IPv6 address, {@code false} otherwise.
      * @hide
      */
-    @TestApi
     @SystemApi
     public boolean hasGlobalIpv6Address() {
         for (LinkAddress address : mLinkAddresses) {
@@ -1149,7 +1132,6 @@
      * @return {@code true} if there is an IPv6 default route, {@code false} otherwise.
      * @hide
      */
-    @TestApi
     @SystemApi
     public boolean hasIpv6DefaultRoute() {
         for (RouteInfo r : mRoutes) {
@@ -1265,7 +1247,6 @@
      * @return {@code true} if the link is provisioned, {@code false} otherwise.
      * @hide
      */
-    @TestApi
     @SystemApi
     public boolean isIpv4Provisioned() {
         return (hasIpv4Address()
@@ -1280,7 +1261,6 @@
      * @return {@code true} if the link is provisioned, {@code false} otherwise.
      * @hide
      */
-    @TestApi
     @SystemApi
     public boolean isIpv6Provisioned() {
         return (hasGlobalIpv6Address()
@@ -1308,7 +1288,6 @@
      * @return {@code true} if the link is provisioned, {@code false} otherwise.
      * @hide
      */
-    @TestApi
     @SystemApi
     public boolean isProvisioned() {
         return (isIpv4Provisioned() || isIpv6Provisioned());
@@ -1321,7 +1300,6 @@
      *         {@code false} otherwise.
      * @hide
      */
-    @TestApi
     @SystemApi
     public boolean isReachable(@NonNull InetAddress ip) {
         final List<RouteInfo> allRoutes = getAllRoutes();
@@ -1472,7 +1450,7 @@
      * @return {@code true} if both are identical, {@code false} otherwise.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isIdenticalStackedLinks(@NonNull LinkProperties target) {
         if (!mStackedLinks.keySet().equals(target.mStackedLinks.keySet())) {
             return false;
@@ -1578,7 +1556,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public void setCaptivePortalApiUrl(@Nullable Uri url) {
         mCaptivePortalApiUrl = url;
     }
@@ -1593,7 +1570,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @Nullable
     public Uri getCaptivePortalApiUrl() {
         return mCaptivePortalApiUrl;
@@ -1604,7 +1580,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public void setCaptivePortalData(@Nullable CaptivePortalData data) {
         mCaptivePortalData = data;
     }
@@ -1618,7 +1593,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @Nullable
     public CaptivePortalData getCaptivePortalData() {
         return mCaptivePortalData;
@@ -1669,78 +1643,6 @@
     }
 
     /**
-     * Compares the DNS addresses in this LinkProperties with another
-     * LinkProperties, examining only DNS addresses on the base link.
-     *
-     * @param target a LinkProperties with the new list of dns addresses
-     * @return the differences between the DNS addresses.
-     * @hide
-     */
-    public @NonNull CompareResult<InetAddress> compareDnses(@Nullable LinkProperties target) {
-        /*
-         * Duplicate the InetAddresses into removed, we will be removing
-         * dns address which are common between mDnses and target
-         * leaving the addresses that are different. And dns address which
-         * are in target but not in mDnses are placed in the
-         * addedAddresses.
-         */
-        return new CompareResult<>(mDnses, target != null ? target.getDnsServers() : null);
-    }
-
-    /**
-     * Compares the validated private DNS addresses in this LinkProperties with another
-     * LinkProperties.
-     *
-     * @param target a LinkProperties with the new list of validated private dns addresses
-     * @return the differences between the DNS addresses.
-     * @hide
-     */
-    public @NonNull CompareResult<InetAddress> compareValidatedPrivateDnses(
-            @Nullable LinkProperties target) {
-        return new CompareResult<>(mValidatedPrivateDnses,
-                target != null ? target.getValidatedPrivateDnsServers() : null);
-    }
-
-    /**
-     * Compares all routes in this LinkProperties with another LinkProperties,
-     * examining both the the base link and all stacked links.
-     *
-     * @param target a LinkProperties with the new list of routes
-     * @return the differences between the routes.
-     * @hide
-     */
-    public @NonNull CompareResult<RouteInfo> compareAllRoutes(@Nullable LinkProperties target) {
-        /*
-         * Duplicate the RouteInfos into removed, we will be removing
-         * routes which are common between mRoutes and target
-         * leaving the routes that are different. And route address which
-         * are in target but not in mRoutes are placed in added.
-         */
-        return new CompareResult<>(getAllRoutes(), target != null ? target.getAllRoutes() : null);
-    }
-
-    /**
-     * Compares all interface names in this LinkProperties with another
-     * LinkProperties, examining both the the base link and all stacked links.
-     *
-     * @param target a LinkProperties with the new list of interface names
-     * @return the differences between the interface names.
-     * @hide
-     */
-    public @NonNull CompareResult<String> compareAllInterfaceNames(
-            @Nullable LinkProperties target) {
-        /*
-         * Duplicate the interface names into removed, we will be removing
-         * interface names which are common between this and target
-         * leaving the interface names that are different. And interface names which
-         * are in target but not in this are placed in added.
-         */
-        return new CompareResult<>(getAllInterfaceNames(),
-                target != null ? target.getAllInterfaceNames() : null);
-    }
-
-
-    /**
      * Generate hashcode based on significant fields
      *
      * Equal objects must produce the same hash code, while unequal objects
diff --git a/core/java/android/net/LinkQualityInfo.java b/core/java/android/net/LinkQualityInfo.java
index aa56cff..2bf1fbc 100644
--- a/core/java/android/net/LinkQualityInfo.java
+++ b/core/java/android/net/LinkQualityInfo.java
@@ -17,6 +17,7 @@
 package android.net;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -190,7 +191,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setPacketCount(long packetCount) {
         mPacketCount = packetCount;
     }
@@ -206,7 +207,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setPacketErrorCount(long packetErrorCount) {
         mPacketErrorCount = packetErrorCount;
     }
@@ -268,7 +269,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setLastDataSampleTime(long lastDataSampleTime) {
         mLastDataSampleTime = lastDataSampleTime;
     }
@@ -284,7 +285,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setDataSampleDuration(int dataSampleDuration) {
         mDataSampleDuration = dataSampleDuration;
     }
diff --git a/core/java/android/net/LocalSocketImpl.java b/core/java/android/net/LocalSocketImpl.java
index e80e3a6..e01e5ae 100644
--- a/core/java/android/net/LocalSocketImpl.java
+++ b/core/java/android/net/LocalSocketImpl.java
@@ -17,6 +17,7 @@
 package android.net;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.system.ErrnoException;
 import android.system.Int32Ref;
 import android.system.Os;
@@ -51,7 +52,7 @@
     @UnsupportedAppUsage
     FileDescriptor[] inboundFileDescriptors;
     /** file descriptor array that should be written during next write */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     FileDescriptor[] outboundFileDescriptors;
 
     /**
diff --git a/core/java/android/net/MacAddress.java b/core/java/android/net/MacAddress.java
index 0eb3c1e..178183d 100644
--- a/core/java/android/net/MacAddress.java
+++ b/core/java/android/net/MacAddress.java
@@ -22,6 +22,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.net.util.MacAddressUtils;
 import android.net.wifi.WifiInfo;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -58,7 +59,7 @@
      * <p>Not publicly exposed or treated specially since the OUI 00:00:00 is registered.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final MacAddress ALL_ZEROS_ADDRESS = new MacAddress(0);
 
     /** @hide */
diff --git a/core/java/android/net/MobileLinkQualityInfo.java b/core/java/android/net/MobileLinkQualityInfo.java
index a65de6b..f51c4df 100644
--- a/core/java/android/net/MobileLinkQualityInfo.java
+++ b/core/java/android/net/MobileLinkQualityInfo.java
@@ -17,6 +17,7 @@
 package android.net;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 
 /**
@@ -40,7 +41,7 @@
     private int mLteRssnr = UNKNOWN_INT;
     private int mLteCqi = UNKNOWN_INT;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public MobileLinkQualityInfo() {
     }
 
@@ -98,7 +99,7 @@
      * returns mobile network type as defined by {@link android.telephony.TelephonyManager}
      * @return network type or {@link android.net.LinkQualityInfo#UNKNOWN_INT}
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getMobileNetworkType() {
         return mMobileNetworkType;
     }
@@ -106,7 +107,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setMobileNetworkType(int mobileNetworkType) {
         mMobileNetworkType = mobileNetworkType;
     }
@@ -122,7 +123,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setRssi(int Rssi) {
         mRssi = Rssi;
     }
@@ -138,7 +139,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setGsmErrorRate(int gsmErrorRate) {
         mGsmErrorRate = gsmErrorRate;
     }
@@ -154,7 +155,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setCdmaDbm(int cdmaDbm) {
         mCdmaDbm = cdmaDbm;
     }
@@ -170,7 +171,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setCdmaEcio(int cdmaEcio) {
         mCdmaEcio = cdmaEcio;
     }
@@ -186,7 +187,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setEvdoDbm(int evdoDbm) {
         mEvdoDbm = evdoDbm;
     }
@@ -202,7 +203,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setEvdoEcio(int evdoEcio) {
         mEvdoEcio = evdoEcio;
     }
@@ -218,7 +219,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setEvdoSnr(int evdoSnr) {
         mEvdoSnr = evdoSnr;
     }
@@ -234,7 +235,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setLteSignalStrength(int lteSignalStrength) {
         mLteSignalStrength = lteSignalStrength;
     }
@@ -250,7 +251,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setLteRsrp(int lteRsrp) {
         mLteRsrp = lteRsrp;
     }
@@ -266,7 +267,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setLteRsrq(int lteRsrq) {
         mLteRsrq = lteRsrq;
     }
@@ -282,7 +283,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setLteRssnr(int lteRssnr) {
         mLteRssnr = lteRssnr;
     }
@@ -298,7 +299,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setLteCqi(int lteCqi) {
         mLteCqi = lteCqi;
     }
diff --git a/core/java/android/net/NattKeepalivePacketData.java b/core/java/android/net/NattKeepalivePacketData.java
index 22288b6..c4f8fc2 100644
--- a/core/java/android/net/NattKeepalivePacketData.java
+++ b/core/java/android/net/NattKeepalivePacketData.java
@@ -22,11 +22,12 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.net.util.IpUtils;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.system.OsConstants;
 
+import com.android.net.module.util.IpUtils;
+
 import java.net.Inet4Address;
 import java.net.InetAddress;
 import java.nio.ByteBuffer;
diff --git a/core/java/android/net/Network.java b/core/java/android/net/Network.java
index b872617..f98a1f8 100644
--- a/core/java/android/net/Network.java
+++ b/core/java/android/net/Network.java
@@ -18,8 +18,8 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.system.ErrnoException;
@@ -110,7 +110,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Network(int netId) {
         this(netId, false);
     }
@@ -127,7 +127,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public Network(@NonNull Network that) {
         this(that.netId, that.mPrivateDnsBypass);
     }
@@ -164,7 +163,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public @NonNull Network getPrivateDnsBypassingCopy() {
         return new Network(netId, true);
@@ -175,7 +173,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public int getNetId() {
         return netId;
diff --git a/core/java/android/net/NetworkAgent.java b/core/java/android/net/NetworkAgent.java
index 327e42b..0676ad4 100644
--- a/core/java/android/net/NetworkAgent.java
+++ b/core/java/android/net/NetworkAgent.java
@@ -40,6 +40,7 @@
 import java.lang.annotation.RetentionPolicy;
 import java.time.Duration;
 import java.util.ArrayList;
+import java.util.List;
 import java.util.Objects;
 import java.util.concurrent.atomic.AtomicBoolean;
 
@@ -174,6 +175,14 @@
     public static final int EVENT_NETWORK_SCORE_CHANGED = BASE + 4;
 
     /**
+     * Sent by the NetworkAgent to ConnectivityService to pass the current
+     * list of underlying networks.
+     * obj = array of Network objects
+     * @hide
+     */
+    public static final int EVENT_UNDERLYING_NETWORKS_CHANGED = BASE + 5;
+
+    /**
      * Sent by ConnectivityService to the NetworkAgent to inform the agent of the
      * networks status - whether we could use the network or could not, due to
      * either a bad network configuration (no internet link) or captive portal.
@@ -217,7 +226,13 @@
      * The key for the redirect URL in the Bundle argument of {@code CMD_REPORT_NETWORK_STATUS}.
      * @hide
      */
-    public static String REDIRECT_URL_KEY = "redirect URL";
+    public static final String REDIRECT_URL_KEY = "redirect URL";
+
+    /**
+     * Bundle key for the underlying networks in {@code EVENT_UNDERLYING_NETWORKS_CHANGED}.
+     * @hide
+     */
+    public static final String UNDERLYING_NETWORKS_KEY = "underlyingNetworks";
 
      /**
      * Sent by the NetworkAgent to ConnectivityService to indicate this network was
@@ -353,10 +368,11 @@
 
     private static NetworkInfo getLegacyNetworkInfo(final NetworkAgentConfig config) {
         // The subtype can be changed with (TODO) setLegacySubtype, but it starts
-        // with the type and an empty description.
+        // with 0 (TelephonyManager.NETWORK_TYPE_UNKNOWN) and an empty description.
         final NetworkInfo ni = new NetworkInfo(config.legacyType, 0, config.legacyTypeName, "");
         ni.setIsAvailable(true);
-        ni.setExtraInfo(config.getLegacyExtraInfo());
+        ni.setDetailedState(NetworkInfo.DetailedState.CONNECTING, null /* reason */,
+                config.getLegacyExtraInfo());
         return ni;
     }
 
@@ -649,6 +665,33 @@
     }
 
     /**
+     * Must be called by the agent when the network's underlying networks change.
+     *
+     * <p>{@code networks} is one of the following:
+     * <ul>
+     * <li><strong>a non-empty array</strong>: an array of one or more {@link Network}s, in
+     * decreasing preference order. For example, if this VPN uses both wifi and mobile (cellular)
+     * networks to carry app traffic, but prefers or uses wifi more than mobile, wifi should appear
+     * first in the array.</li>
+     * <li><strong>an empty array</strong>: a zero-element array, meaning that the VPN has no
+     * underlying network connection, and thus, app traffic will not be sent or received.</li>
+     * <li><strong>null</strong>: (default) signifies that the VPN uses whatever is the system's
+     * default network. I.e., it doesn't use the {@code bindSocket} or {@code bindDatagramSocket}
+     * APIs mentioned above to send traffic over specific channels.</li>
+     * </ul>
+     *
+     * @param underlyingNetworks the new list of underlying networks.
+     * @see {@link VpnService.Builder#setUnderlyingNetworks(Network[])}
+     */
+    public final void setUnderlyingNetworks(@Nullable List<Network> underlyingNetworks) {
+        final ArrayList<Network> underlyingArray = (underlyingNetworks != null)
+                ? new ArrayList<>(underlyingNetworks) : null;
+        final Bundle bundle = new Bundle();
+        bundle.putParcelableArrayList(UNDERLYING_NETWORKS_KEY, underlyingArray);
+        queueOrSendMessage(EVENT_UNDERLYING_NETWORKS_CHANGED, bundle);
+    }
+
+    /**
      * Inform ConnectivityService that this agent has now connected.
      * Call {@link #unregister} to disconnect.
      */
diff --git a/core/java/android/net/NetworkCapabilities.java b/core/java/android/net/NetworkCapabilities.java
index 004f844..8dad11f 100644
--- a/core/java/android/net/NetworkCapabilities.java
+++ b/core/java/android/net/NetworkCapabilities.java
@@ -133,7 +133,7 @@
      * Represents the network's capabilities.  If any are specified they will be satisfied
      * by any Network that matches all of them.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mNetworkCapabilities;
 
     /**
@@ -170,6 +170,7 @@
             NET_CAPABILITY_MCX,
             NET_CAPABILITY_PARTIAL_CONNECTIVITY,
             NET_CAPABILITY_TEMPORARILY_NOT_METERED,
+            NET_CAPABILITY_OEM_PRIVATE,
     })
     public @interface NetCapability { }
 
@@ -338,15 +339,26 @@
     public static final int NET_CAPABILITY_PARTIAL_CONNECTIVITY = 24;
 
     /**
+     * Indicates that this network is temporarily unmetered.
+     * <p>
      * This capability will be set for networks that are generally metered, but are currently
      * unmetered, e.g., because the user is in a particular area. This capability can be changed at
      * any time. When it is removed, applications are responsible for stopping any data transfer
      * that should not occur on a metered network.
+     * Note that most apps should use {@link #NET_CAPABILITY_NOT_METERED} instead. For more
+     * information, see https://developer.android.com/about/versions/11/features/5g#meteredness.
      */
     public static final int NET_CAPABILITY_TEMPORARILY_NOT_METERED = 25;
 
+    /**
+     * Indicates that this network is private to the OEM and meant only for OEM use.
+     * @hide
+     */
+    @SystemApi
+    public static final int NET_CAPABILITY_OEM_PRIVATE = 26;
+
     private static final int MIN_NET_CAPABILITY = NET_CAPABILITY_MMS;
-    private static final int MAX_NET_CAPABILITY = NET_CAPABILITY_TEMPORARILY_NOT_METERED;
+    private static final int MAX_NET_CAPABILITY = NET_CAPABILITY_OEM_PRIVATE;
 
     /**
      * Network capabilities that are expected to be mutable, i.e., can change while a particular
@@ -362,8 +374,8 @@
             | (1 << NET_CAPABILITY_FOREGROUND)
             | (1 << NET_CAPABILITY_NOT_CONGESTED)
             | (1 << NET_CAPABILITY_NOT_SUSPENDED)
-            | (1 << NET_CAPABILITY_PARTIAL_CONNECTIVITY
-            | (1 << NET_CAPABILITY_TEMPORARILY_NOT_METERED));
+            | (1 << NET_CAPABILITY_PARTIAL_CONNECTIVITY)
+            | (1 << NET_CAPABILITY_TEMPORARILY_NOT_METERED);
 
     /**
      * Network capabilities that are not allowed in NetworkRequests. This exists because the
@@ -404,7 +416,8 @@
      * {@see #maybeMarkCapabilitiesRestricted}.
      */
     private static final long FORCE_RESTRICTED_CAPABILITIES =
-            (1 << NET_CAPABILITY_OEM_PAID);
+            (1 << NET_CAPABILITY_OEM_PAID)
+            | (1 << NET_CAPABILITY_OEM_PRIVATE);
 
     /**
      * Capabilities that suggest that a network is unrestricted.
@@ -699,6 +712,7 @@
         if (ArrayUtils.contains(originalAdministratorUids, creatorUid)) {
             setAdministratorUids(new int[] {creatorUid});
         }
+        // There is no need to clear the UIDs, they have already been cleared by clearAll() above.
     }
 
     /**
@@ -792,7 +806,9 @@
      */
     private static final int TEST_NETWORKS_ALLOWED_TRANSPORTS = 1 << TRANSPORT_TEST
             // Test ethernet networks can be created with EthernetManager#setIncludeTestInterfaces
-            | 1 << TRANSPORT_ETHERNET;
+            | 1 << TRANSPORT_ETHERNET
+            // Test VPN networks can be created but their UID ranges must be empty.
+            | 1 << TRANSPORT_VPN;
 
     /**
      * Adds the given transport type to this {@code NetworkCapability} instance.
@@ -850,7 +866,6 @@
      * @return an array of transport type values for this instance.
      * @hide
      */
-    @TestApi
     @SystemApi
     @NonNull public @Transport int[] getTransportTypes() {
         return BitUtils.unpackBits(mTransportTypes);
@@ -1025,7 +1040,6 @@
      */
     @NonNull
     @SystemApi
-    @TestApi
     public int[] getAdministratorUids() {
         return Arrays.copyOf(mAdministratorUids, mAdministratorUids.length);
     }
@@ -1281,7 +1295,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean hasSignalStrength() {
         return mSignalStrength > SIGNAL_STRENGTH_UNSPECIFIED;
     }
@@ -1506,7 +1520,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public @Nullable String getSsid() {
         return mSSID;
     }
@@ -1590,7 +1603,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public boolean satisfiedByNetworkCapabilities(@Nullable NetworkCapabilities nc) {
         return satisfiedByNetworkCapabilities(nc, false);
@@ -1797,20 +1809,26 @@
             sb.append(" OwnerUid: ").append(mOwnerUid);
         }
 
-        if (mAdministratorUids.length == 0) {
-            sb.append(" AdministratorUids: ").append(Arrays.toString(mAdministratorUids));
+        if (!ArrayUtils.isEmpty(mAdministratorUids)) {
+            sb.append(" AdminUids: ").append(Arrays.toString(mAdministratorUids));
+        }
+
+        if (mRequestorUid != Process.INVALID_UID) {
+            sb.append(" RequestorUid: ").append(mRequestorUid);
+        }
+
+        if (mRequestorPackageName != null) {
+            sb.append(" RequestorPkg: ").append(mRequestorPackageName);
         }
 
         if (null != mSSID) {
             sb.append(" SSID: ").append(mSSID);
         }
 
-        if (mPrivateDnsBroken) {
-            sb.append(" Private DNS is broken");
-        }
 
-        sb.append(" RequestorUid: ").append(mRequestorUid);
-        sb.append(" RequestorPackageName: ").append(mRequestorPackageName);
+        if (mPrivateDnsBroken) {
+            sb.append(" PrivateDnsBroken");
+        }
 
         sb.append("]");
         return sb.toString();
@@ -1914,6 +1932,7 @@
             case NET_CAPABILITY_MCX:                  return "MCX";
             case NET_CAPABILITY_PARTIAL_CONNECTIVITY: return "PARTIAL_CONNECTIVITY";
             case NET_CAPABILITY_TEMPORARILY_NOT_METERED:    return "TEMPORARILY_NOT_METERED";
+            case NET_CAPABILITY_OEM_PRIVATE:          return "OEM_PRIVATE";
             default:                                  return Integer.toString(capability);
         }
     }
@@ -1921,7 +1940,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static @NonNull String transportNamesOf(@Nullable @Transport int[] types) {
         StringJoiner joiner = new StringJoiner("|");
         if (types != null) {
@@ -2136,7 +2155,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final class Builder {
         private final NetworkCapabilities mCaps;
 
diff --git a/core/java/android/net/NetworkPolicyManager.java b/core/java/android/net/NetworkPolicyManager.java
index e9e242e..a643d09 100644
--- a/core/java/android/net/NetworkPolicyManager.java
+++ b/core/java/android/net/NetworkPolicyManager.java
@@ -253,7 +253,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getUidPolicy(int uid) {
         try {
             return mService.getUidPolicy(uid);
@@ -339,7 +339,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setRestrictBackground(boolean restrictBackground) {
         try {
             mService.setRestrictBackground(restrictBackground);
@@ -349,7 +349,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean getRestrictBackground() {
         try {
             return mService.getRestrictBackground();
diff --git a/core/java/android/net/NetworkProvider.java b/core/java/android/net/NetworkProvider.java
index 75086cf..a17a498 100644
--- a/core/java/android/net/NetworkProvider.java
+++ b/core/java/android/net/NetworkProvider.java
@@ -30,7 +30,7 @@
 
 /**
  * Base class for network providers such as telephony or Wi-Fi. NetworkProviders connect the device
- * to networks and makes them available to to the core network stack by creating
+ * to networks and makes them available to the core network stack by creating
  * {@link NetworkAgent}s. The networks can then provide connectivity to apps and can be interacted
  * with via networking APIs such as {@link ConnectivityManager}.
  *
@@ -51,13 +51,6 @@
     public static final int ID_NONE = -1;
 
     /**
-     * A hardcoded ID for NetworkAgents representing VPNs. These agents are not created by any
-     * provider, so they use this constant for clarity instead of NONE.
-     * @hide only used by ConnectivityService.
-     */
-    public static final int ID_VPN = -2;
-
-    /**
      * The first providerId value that will be allocated.
      * @hide only used by ConnectivityService.
      */
diff --git a/core/java/android/net/NetworkQuotaInfo.java b/core/java/android/net/NetworkQuotaInfo.java
index 2e52d9c..d39bf29 100644
--- a/core/java/android/net/NetworkQuotaInfo.java
+++ b/core/java/android/net/NetworkQuotaInfo.java
@@ -17,6 +17,7 @@
 package android.net;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -37,17 +38,17 @@
     public NetworkQuotaInfo(Parcel in) {
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public long getEstimatedBytes() {
         return 0;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public long getSoftLimitBytes() {
         return NO_LIMIT;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public long getHardLimitBytes() {
         return NO_LIMIT;
     }
diff --git a/core/java/android/net/NetworkRequest.java b/core/java/android/net/NetworkRequest.java
index 473e6c5..dc16d74 100644
--- a/core/java/android/net/NetworkRequest.java
+++ b/core/java/android/net/NetworkRequest.java
@@ -43,7 +43,7 @@
      * The {@link NetworkCapabilities} that define this request.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final @NonNull NetworkCapabilities networkCapabilities;
 
     /**
@@ -52,7 +52,7 @@
      * the request.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final int requestId;
 
     /**
diff --git a/core/java/android/net/NetworkSpecifier.java b/core/java/android/net/NetworkSpecifier.java
index 160259e..6ef496b 100644
--- a/core/java/android/net/NetworkSpecifier.java
+++ b/core/java/android/net/NetworkSpecifier.java
@@ -22,10 +22,14 @@
 /**
  * Describes specific properties of a requested network for use in a {@link NetworkRequest}.
  *
- * Applications cannot instantiate this class by themselves, but can obtain instances of
- * subclasses of this class via other APIs.
+ * This as an abstract class. Applications shouldn't instantiate this class by themselves, but can
+ * obtain instances of subclasses of this class via other APIs.
  */
 public abstract class NetworkSpecifier {
+    /**
+     * Create a placeholder object. Please use subclasses of this class in a {@link NetworkRequest}
+     * to request a network.
+     */
     public NetworkSpecifier() {}
 
     /**
diff --git a/core/java/android/net/NetworkStack.java b/core/java/android/net/NetworkStack.java
index 86f3dfd..79f9e6e 100644
--- a/core/java/android/net/NetworkStack.java
+++ b/core/java/android/net/NetworkStack.java
@@ -33,7 +33,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public class NetworkStack {
     /**
      * Permission granted only to the NetworkStack APK, defined in NetworkStackStub with signature
@@ -41,7 +40,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final String PERMISSION_MAINLINE_NETWORK_STACK =
             "android.permission.MAINLINE_NETWORK_STACK";
 
@@ -54,7 +52,6 @@
      */
     @Nullable
     @SystemApi
-    @TestApi
     public static IBinder getService() {
         final IBinder mockService = sMockService;
         if (mockService != null) return mockService;
diff --git a/core/java/android/net/NetworkStats.java b/core/java/android/net/NetworkStats.java
index 34e48eb..cf40ce5 100644
--- a/core/java/android/net/NetworkStats.java
+++ b/core/java/android/net/NetworkStats.java
@@ -21,6 +21,7 @@
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.SystemClock;
@@ -219,11 +220,11 @@
      * generated.
      */
     private long elapsedRealtime;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int size;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int capacity;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private String[] iface;
     @UnsupportedAppUsage
     private int[] uid;
@@ -231,21 +232,21 @@
     private int[] set;
     @UnsupportedAppUsage
     private int[] tag;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int[] metered;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int[] roaming;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int[] defaultNetwork;
     @UnsupportedAppUsage
     private long[] rxBytes;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long[] rxPackets;
     @UnsupportedAppUsage
     private long[] txBytes;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long[] txPackets;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long[] operations;
 
     /**
@@ -258,7 +259,7 @@
     @SystemApi
     public static class Entry {
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public String iface;
         /** @hide */
         @UnsupportedAppUsage
@@ -267,7 +268,7 @@
         @UnsupportedAppUsage
         public int set;
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public int tag;
         /**
          * Note that this is only populated w/ the default value when read from /proc or written
@@ -294,20 +295,20 @@
         @UnsupportedAppUsage
         public long rxBytes;
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public long rxPackets;
         /** @hide */
         @UnsupportedAppUsage
         public long txBytes;
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public long txPackets;
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public long operations;
 
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public Entry() {
             this(IFACE_ALL, UID_ALL, SET_DEFAULT, TAG_NONE, 0L, 0L, 0L, 0L, 0L);
         }
@@ -454,7 +455,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public NetworkStats(Parcel parcel) {
         elapsedRealtime = parcel.readLong();
         size = parcel.readInt();
diff --git a/core/java/android/net/NetworkStatsHistory.java b/core/java/android/net/NetworkStatsHistory.java
index 51f09a0..fba7561 100644
--- a/core/java/android/net/NetworkStatsHistory.java
+++ b/core/java/android/net/NetworkStatsHistory.java
@@ -32,6 +32,7 @@
 import static com.android.internal.util.ArrayUtils.total;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.service.NetworkStatsHistoryBucketProto;
@@ -91,18 +92,18 @@
     public static class Entry {
         public static final long UNKNOWN = -1;
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public long bucketDuration;
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public long bucketStart;
         public long activeTime;
         @UnsupportedAppUsage
         public long rxBytes;
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public long rxPackets;
         @UnsupportedAppUsage
         public long txBytes;
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public long txPackets;
         public long operations;
     }
@@ -134,7 +135,7 @@
         recordEntireHistory(existing);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public NetworkStatsHistory(Parcel in) {
         bucketDuration = in.readLong();
         bucketStart = readLongArray(in);
@@ -220,7 +221,7 @@
         return 0;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int size() {
         return bucketCount;
     }
@@ -258,7 +259,7 @@
      * Return index of bucket that contains or is immediately before the
      * requested time.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getIndexBefore(long time) {
         int index = Arrays.binarySearch(bucketStart, 0, bucketCount, time);
         if (index < 0) {
@@ -286,7 +287,7 @@
     /**
      * Return specific stats entry.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Entry getValues(int i, Entry recycle) {
         final Entry entry = recycle != null ? recycle : new Entry();
         entry.bucketStart = bucketStart[i];
diff --git a/core/java/android/net/NetworkTemplate.java b/core/java/android/net/NetworkTemplate.java
index cd26079..72be835 100644
--- a/core/java/android/net/NetworkTemplate.java
+++ b/core/java/android/net/NetworkTemplate.java
@@ -37,6 +37,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.telephony.Annotation.NetworkType;
@@ -159,7 +160,7 @@
      * Template to match metered {@link ConnectivityManager#TYPE_MOBILE} networks,
      * regardless of IMSI.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static NetworkTemplate buildTemplateMobileWildcard() {
         return new NetworkTemplate(MATCH_MOBILE_WILDCARD, null, null);
     }
diff --git a/core/java/android/net/NetworkUtils.java b/core/java/android/net/NetworkUtils.java
index 1e5b6d5..a0faafa 100644
--- a/core/java/android/net/NetworkUtils.java
+++ b/core/java/android/net/NetworkUtils.java
@@ -98,7 +98,7 @@
      * this socket will go directly to the underlying network, so its traffic will not be
      * forwarded through the VPN.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static boolean protectFromVpn(FileDescriptor fd) {
         return protectFromVpn(fd.getInt$());
     }
@@ -223,7 +223,7 @@
      * @hide
      * @deprecated use {@link Inet4AddressUtils#netmaskToPrefixLength(Inet4Address)}
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @Deprecated
     public static int netmaskToPrefixLength(Inet4Address netmask) {
         // This is only here because some apps seem to be using it (@UnsupportedAppUsage).
@@ -290,7 +290,7 @@
     /**
      * Returns the implicit netmask of an IPv4 address, as was the custom before 1993.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static int getImplicitNetmask(Inet4Address address) {
         // Only here because it seems to be used by apps
         return Inet4AddressUtils.getImplicitNetmask(address);
diff --git a/core/java/android/net/OemNetworkPreferences.aidl b/core/java/android/net/OemNetworkPreferences.aidl
new file mode 100644
index 0000000..2b6a4ce
--- /dev/null
+++ b/core/java/android/net/OemNetworkPreferences.aidl
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.net;
+
+parcelable OemNetworkPreferences;
diff --git a/core/java/android/net/OemNetworkPreferences.java b/core/java/android/net/OemNetworkPreferences.java
new file mode 100644
index 0000000..6a8e3f9
--- /dev/null
+++ b/core/java/android/net/OemNetworkPreferences.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.net;
+
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.os.Parcelable;
+import android.util.SparseArray;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+
+/** @hide */
+public final class OemNetworkPreferences implements Parcelable {
+    /**
+     * Use default behavior requesting networks. Equivalent to not setting any preference at all.
+     */
+    public static final int OEM_NETWORK_PREFERENCE_DEFAULT = 0;
+
+    /**
+     * If an unmetered network is available, use it.
+     * Otherwise, if a network with the OEM_PAID capability is available, use it.
+     * Otherwise, use the general default network.
+     */
+    public static final int OEM_NETWORK_PREFERENCE_OEM_PAID = 1;
+
+    /**
+     * If an unmetered network is available, use it.
+     * Otherwise, if a network with the OEM_PAID capability is available, use it.
+     * Otherwise, the app doesn't get a network.
+     */
+    public static final int OEM_NETWORK_PREFERENCE_OEM_PAID_NO_FALLBACK = 2;
+
+    /**
+     * Prefer only NET_CAPABILITY_OEM_PAID networks.
+     */
+    public static final int OEM_NETWORK_PREFERENCE_OEM_PAID_ONLY = 3;
+
+    /**
+     * Prefer only NET_CAPABILITY_OEM_PRIVATE networks.
+     */
+    public static final int OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY = 4;
+
+    @NonNull
+    private final SparseArray<List<String>> mNetworkMappings;
+
+    @NonNull
+    public SparseArray<List<String>> getNetworkPreferences() {
+        return mNetworkMappings.clone();
+    }
+
+    private OemNetworkPreferences(@NonNull SparseArray<List<String>> networkMappings) {
+        Objects.requireNonNull(networkMappings);
+        mNetworkMappings = networkMappings.clone();
+    }
+
+    @Override
+    public String toString() {
+        return "OemNetworkPreferences{" + "mNetworkMappings=" + mNetworkMappings + '}';
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        OemNetworkPreferences that = (OemNetworkPreferences) o;
+
+        return mNetworkMappings.size() == that.mNetworkMappings.size()
+                && mNetworkMappings.toString().equals(that.mNetworkMappings.toString());
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(mNetworkMappings);
+    }
+
+    /**
+     * Builder used to create {@link OemNetworkPreferences} objects.  Specify the preferred Network
+     * to package name mappings.
+     *
+     * @hide
+     */
+    public static final class Builder {
+        private final SparseArray<List<String>> mNetworkMappings;
+
+        public Builder() {
+            mNetworkMappings = new SparseArray<>();
+        }
+
+        /**
+         * Add a network preference for a list of packages.
+         *
+         * @param preference the desired network preference to use
+         * @param packages   full package names (e.g.: "com.google.apps.contacts") for apps to use
+         *                   the given preference
+         * @return The builder to facilitate chaining.
+         */
+        @NonNull
+        public Builder addNetworkPreference(@OemNetworkPreference final int preference,
+                @NonNull List<String> packages) {
+            Objects.requireNonNull(packages);
+            mNetworkMappings.put(preference,
+                    Collections.unmodifiableList(new ArrayList<>(packages)));
+            return this;
+        }
+
+        /**
+         * Build {@link OemNetworkPreferences} return the current OEM network preferences.
+         */
+        @NonNull
+        public OemNetworkPreferences build() {
+            return new OemNetworkPreferences(mNetworkMappings);
+        }
+    }
+
+    /** @hide */
+    @IntDef(prefix = "OEM_NETWORK_PREFERENCE_", value = {
+            OEM_NETWORK_PREFERENCE_DEFAULT,
+            OEM_NETWORK_PREFERENCE_OEM_PAID,
+            OEM_NETWORK_PREFERENCE_OEM_PAID_NO_FALLBACK,
+            OEM_NETWORK_PREFERENCE_OEM_PAID_ONLY,
+            OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface OemNetworkPreference {}
+
+    /**
+     * Return the string value for OemNetworkPreference
+     *
+     * @param value int value of OemNetworkPreference
+     * @return string version of OemNetworkPreference
+     */
+    @NonNull
+    public static String oemNetworkPreferenceToString(@OemNetworkPreference int value) {
+        switch (value) {
+            case OEM_NETWORK_PREFERENCE_DEFAULT:
+                return "OEM_NETWORK_PREFERENCE_DEFAULT";
+            case OEM_NETWORK_PREFERENCE_OEM_PAID:
+                return "OEM_NETWORK_PREFERENCE_OEM_PAID";
+            case OEM_NETWORK_PREFERENCE_OEM_PAID_NO_FALLBACK:
+                return "OEM_NETWORK_PREFERENCE_OEM_PAID_NO_FALLBACK";
+            case OEM_NETWORK_PREFERENCE_OEM_PAID_ONLY:
+                return "OEM_NETWORK_PREFERENCE_OEM_PAID_ONLY";
+            case OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY:
+                return "OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY";
+            default:
+                return Integer.toHexString(value);
+        }
+    }
+
+    @Override
+    public void writeToParcel(@NonNull android.os.Parcel dest, int flags) {
+        dest.writeSparseArray(mNetworkMappings);
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @NonNull
+    public static final Parcelable.Creator<OemNetworkPreferences> CREATOR =
+            new Parcelable.Creator<OemNetworkPreferences>() {
+                @Override
+                public OemNetworkPreferences[] newArray(int size) {
+                    return new OemNetworkPreferences[size];
+                }
+
+                @Override
+                public OemNetworkPreferences createFromParcel(@NonNull android.os.Parcel in) {
+                    return new OemNetworkPreferences(
+                            in.readSparseArray(getClass().getClassLoader()));
+                }
+            };
+}
diff --git a/core/java/android/net/Proxy.java b/core/java/android/net/Proxy.java
index 4ba7394..f1d9669 100644
--- a/core/java/android/net/Proxy.java
+++ b/core/java/android/net/Proxy.java
@@ -20,6 +20,7 @@
 import android.annotation.SdkConstant.SdkConstantType;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
+import android.os.Build;
 import android.text.TextUtils;
 import android.util.Log;
 
@@ -241,7 +242,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final void setHttpProxySystemProperty(ProxyInfo p) {
         String host = null;
         String port = null;
diff --git a/core/java/android/net/RouteInfo.java b/core/java/android/net/RouteInfo.java
index 9876076..6166a75 100644
--- a/core/java/android/net/RouteInfo.java
+++ b/core/java/android/net/RouteInfo.java
@@ -20,7 +20,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.net.util.NetUtils;
 import android.os.Build;
@@ -87,17 +86,14 @@
 
     /** Unicast route. @hide */
     @SystemApi
-    @TestApi
     public static final int RTN_UNICAST = 1;
 
     /** Unreachable route. @hide */
     @SystemApi
-    @TestApi
     public static final int RTN_UNREACHABLE = 7;
 
     /** Throw route. @hide */
     @SystemApi
-    @TestApi
     public static final int RTN_THROW = 9;
 
     /**
@@ -135,7 +131,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public RouteInfo(@Nullable IpPrefix destination, @Nullable InetAddress gateway,
             @Nullable String iface, @RouteType int type) {
         this(destination, gateway, iface, type, 0);
@@ -237,7 +232,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public RouteInfo(@Nullable IpPrefix destination, @Nullable InetAddress gateway,
             @Nullable String iface) {
         this(destination, gateway, iface, RTN_UNICAST);
@@ -397,7 +392,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     @RouteType
     public int getType() {
@@ -507,7 +501,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @Nullable
     public static RouteInfo selectBestRoute(Collection<RouteInfo> routes, InetAddress dest) {
         return NetUtils.selectBestRoute(routes, dest);
diff --git a/core/java/android/net/SSLCertificateSocketFactory.java b/core/java/android/net/SSLCertificateSocketFactory.java
index e511458..f3d3c65 100644
--- a/core/java/android/net/SSLCertificateSocketFactory.java
+++ b/core/java/android/net/SSLCertificateSocketFactory.java
@@ -115,20 +115,20 @@
     private SSLSocketFactory mInsecureFactory = null;
     @UnsupportedAppUsage
     private SSLSocketFactory mSecureFactory = null;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private TrustManager[] mTrustManagers = null;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private KeyManager[] mKeyManagers = null;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private byte[] mNpnProtocols = null;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private byte[] mAlpnProtocols = null;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private PrivateKey mChannelIdPrivateKey = null;
 
     @UnsupportedAppUsage
     private final int mHandshakeTimeoutMillis;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final SSLClientSessionCache mSessionCache;
     @UnsupportedAppUsage
     private final boolean mSecure;
@@ -249,7 +249,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private SSLSocketFactory makeSocketFactory(
             KeyManager[] keyManagers, TrustManager[] trustManagers) {
         try {
@@ -343,7 +343,7 @@
      *     must be non-empty and of length less than 256.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setAlpnProtocols(byte[][] protocols) {
         this.mAlpnProtocols = toLengthPrefixedList(protocols);
     }
@@ -464,13 +464,13 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setSoWriteTimeout(Socket socket, int writeTimeoutMilliseconds)
             throws SocketException {
         castToOpenSSLSocket(socket).setSoWriteTimeout(writeTimeoutMilliseconds);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static OpenSSLSocketImpl castToOpenSSLSocket(Socket socket) {
         if (!(socket instanceof OpenSSLSocketImpl)) {
             throw new IllegalArgumentException("Socket not created by this factory: "
diff --git a/core/java/android/net/StaticIpConfiguration.java b/core/java/android/net/StaticIpConfiguration.java
index a973455..ce54597 100644
--- a/core/java/android/net/StaticIpConfiguration.java
+++ b/core/java/android/net/StaticIpConfiguration.java
@@ -19,8 +19,8 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -52,22 +52,21 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class StaticIpConfiguration implements Parcelable {
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @Nullable
     public LinkAddress ipAddress;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @Nullable
     public InetAddress gateway;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @NonNull
     public final ArrayList<InetAddress> dnsServers;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @Nullable
     public String domains;
 
diff --git a/core/java/android/net/TEST_MAPPING b/core/java/android/net/TEST_MAPPING
new file mode 100644
index 0000000..8c13ef9
--- /dev/null
+++ b/core/java/android/net/TEST_MAPPING
@@ -0,0 +1,20 @@
+{
+  "imports": [
+    {
+      // Also includes cts/tests/tests/net
+      "path": "frameworks/base/tests/net"
+    },
+    {
+      "path": "packages/modules/NetworkStack"
+    },
+    {
+      "path": "packages/modules/CaptivePortalLogin"
+    },
+    {
+      "path": "frameworks/base/packages/Tethering"
+    },
+    {
+      "path": "frameworks/opt/net/wifi"
+    }
+  ]
+}
diff --git a/core/java/android/net/TrafficStats.java b/core/java/android/net/TrafficStats.java
index e7bba69..fa65061 100644
--- a/core/java/android/net/TrafficStats.java
+++ b/core/java/android/net/TrafficStats.java
@@ -301,7 +301,7 @@
      * Changes only take effect during subsequent calls to
      * {@link #tagSocket(Socket)}.
      */
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public static void setThreadStatsUid(int uid) {
         NetworkManagementSocketTagger.setThreadSocketStatsUid(uid);
     }
@@ -339,7 +339,7 @@
      *
      * @see #setThreadStatsUid(int)
      */
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public static void clearThreadStatsUid() {
         NetworkManagementSocketTagger.setThreadSocketStatsUid(-1);
     }
@@ -565,7 +565,7 @@
     }
 
     /** {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static long getMobileTcpRxPackets() {
         long total = 0;
         for (String iface : getMobileIfaces()) {
@@ -581,7 +581,7 @@
     }
 
     /** {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static long getMobileTcpTxPackets() {
         long total = 0;
         for (String iface : getMobileIfaces()) {
@@ -597,10 +597,17 @@
     }
 
     /**
-     * Return the number of packets transmitted on the specified interface since
-     * device boot. Statistics are measured at the network layer, so both TCP and
+     * Return the number of packets transmitted on the specified interface since the interface
+     * was created. Statistics are measured at the network layer, so both TCP and
      * UDP usage are included.
      *
+     * Note that the returned values are partial statistics that do not count data from several
+     * sources and do not apply several adjustments that are necessary for correctness, such
+     * as adjusting for VPN apps, IPv6-in-IPv4 translation, etc. These values can be used to
+     * determine whether traffic is being transferred on the specific interface but are not a
+     * substitute for the more accurate statistics provided by the {@link NetworkStatsManager}
+     * APIs.
+     *
      * @param iface The name of the interface.
      * @return The number of transmitted packets.
      */
@@ -613,10 +620,17 @@
     }
 
     /**
-     * Return the number of packets received on the specified interface since
-     * device boot. Statistics are measured at the network layer, so both TCP
+     * Return the number of packets received on the specified interface since the interface was
+     * created. Statistics are measured at the network layer, so both TCP
      * and UDP usage are included.
      *
+     * Note that the returned values are partial statistics that do not count data from several
+     * sources and do not apply several adjustments that are necessary for correctness, such
+     * as adjusting for VPN apps, IPv6-in-IPv4 translation, etc. These values can be used to
+     * determine whether traffic is being transferred on the specific interface but are not a
+     * substitute for the more accurate statistics provided by the {@link NetworkStatsManager}
+     * APIs.
+     *
      * @param iface The name of the interface.
      * @return The number of received packets.
      */
@@ -628,9 +642,22 @@
         }
     }
 
-    /** {@hide} */
-    @UnsupportedAppUsage
-    public static long getTxBytes(String iface) {
+    /**
+     * Return the number of bytes transmitted on the specified interface since the interface
+     * was created. Statistics are measured at the network layer, so both TCP and
+     * UDP usage are included.
+     *
+     * Note that the returned values are partial statistics that do not count data from several
+     * sources and do not apply several adjustments that are necessary for correctness, such
+     * as adjusting for VPN apps, IPv6-in-IPv4 translation, etc. These values can be used to
+     * determine whether traffic is being transferred on the specific interface but are not a
+     * substitute for the more accurate statistics provided by the {@link NetworkStatsManager}
+     * APIs.
+     *
+     * @param iface The name of the interface.
+     * @return The number of transmitted bytes.
+     */
+    public static long getTxBytes(@NonNull String iface) {
         try {
             return getStatsService().getIfaceStats(iface, TYPE_TX_BYTES);
         } catch (RemoteException e) {
@@ -638,9 +665,22 @@
         }
     }
 
-    /** {@hide} */
-    @UnsupportedAppUsage
-    public static long getRxBytes(String iface) {
+    /**
+     * Return the number of bytes received on the specified interface since the interface
+     * was created. Statistics are measured at the network layer, so both TCP
+     * and UDP usage are included.
+     *
+     * Note that the returned values are partial statistics that do not count data from several
+     * sources and do not apply several adjustments that are necessary for correctness, such
+     * as adjusting for VPN apps, IPv6-in-IPv4 translation, etc. These values can be used to
+     * determine whether traffic is being transferred on the specific interface but are not a
+     * substitute for the more accurate statistics provided by the {@link NetworkStatsManager}
+     * APIs.
+     *
+     * @param iface The name of the interface.
+     * @return The number of received bytes.
+     */
+    public static long getRxBytes(@NonNull String iface) {
         try {
             return getStatsService().getIfaceStats(iface, TYPE_RX_BYTES);
         } catch (RemoteException e) {
@@ -976,11 +1016,17 @@
         }
     }
 
-    // NOTE: keep these in sync with android_net_TrafficStats.cpp
-    private static final int TYPE_RX_BYTES = 0;
-    private static final int TYPE_RX_PACKETS = 1;
-    private static final int TYPE_TX_BYTES = 2;
-    private static final int TYPE_TX_PACKETS = 3;
-    private static final int TYPE_TCP_RX_PACKETS = 4;
-    private static final int TYPE_TCP_TX_PACKETS = 5;
+    // NOTE: keep these in sync with {@code com_android_server_net_NetworkStatsService.cpp}.
+    /** {@hide} */
+    public static final int TYPE_RX_BYTES = 0;
+    /** {@hide} */
+    public static final int TYPE_RX_PACKETS = 1;
+    /** {@hide} */
+    public static final int TYPE_TX_BYTES = 2;
+    /** {@hide} */
+    public static final int TYPE_TX_PACKETS = 3;
+    /** {@hide} */
+    public static final int TYPE_TCP_RX_PACKETS = 4;
+    /** {@hide} */
+    public static final int TYPE_TCP_TX_PACKETS = 5;
 }
diff --git a/core/java/android/net/WebAddress.java b/core/java/android/net/WebAddress.java
index aa3777d..77fb184 100644
--- a/core/java/android/net/WebAddress.java
+++ b/core/java/android/net/WebAddress.java
@@ -161,7 +161,7 @@
     }
 
     /** {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setHost(String host) {
       mHost = host;
     }
@@ -201,7 +201,7 @@
     }
 
     /** {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public String getAuthInfo() {
       return mAuthInfo;
     }
diff --git a/core/java/android/net/apf/ApfCapabilities.java b/core/java/android/net/apf/ApfCapabilities.java
index 92c5432..bf5b26e 100644
--- a/core/java/android/net/apf/ApfCapabilities.java
+++ b/core/java/android/net/apf/ApfCapabilities.java
@@ -19,7 +19,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.content.res.Resources;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -36,7 +35,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class ApfCapabilities implements Parcelable {
     /**
      * Version of APF instruction set supported for packet filtering. 0 indicates no support for
diff --git a/core/java/android/net/metrics/ApfProgramEvent.java b/core/java/android/net/metrics/ApfProgramEvent.java
index f93907a..ab12cdd 100644
--- a/core/java/android/net/metrics/ApfProgramEvent.java
+++ b/core/java/android/net/metrics/ApfProgramEvent.java
@@ -20,8 +20,8 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.text.TextUtils;
@@ -40,7 +40,6 @@
  * the APF program in place with a new APF program.
  * {@hide}
  */
-@TestApi
 @SystemApi
 public final class ApfProgramEvent implements IpConnectivityLog.Event {
 
@@ -57,22 +56,22 @@
     public @interface Flags {}
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final long lifetime;       // Maximum computed lifetime of the program in seconds
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final long actualLifetime; // Effective program lifetime in seconds
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final int filteredRas;     // Number of RAs filtered by the APF program
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final int currentRas;      // Total number of current RAs at generation time
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final int programLength;   // Length of the APF program in bytes
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final int flags;           // Bitfield compound of FLAG_* constants
 
     private ApfProgramEvent(long lifetime, long actualLifetime, int filteredRas, int currentRas,
@@ -219,7 +218,7 @@
     };
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static @Flags int flagsFor(boolean hasIPv4, boolean multicastFilterOn) {
         int bitfield = 0;
         if (hasIPv4) {
diff --git a/core/java/android/net/metrics/ApfStats.java b/core/java/android/net/metrics/ApfStats.java
index b221cb9..fcafb7e 100644
--- a/core/java/android/net/metrics/ApfStats.java
+++ b/core/java/android/net/metrics/ApfStats.java
@@ -19,8 +19,8 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -29,68 +29,67 @@
  * {@hide}
  */
 @SystemApi
-@TestApi
 public final class ApfStats implements IpConnectivityLog.Event {
 
     /**
      * time interval in milliseconds these stastistics covers.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final long durationMs;
     /**
      * number of received RAs.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final int receivedRas;
     /**
      * number of received RAs matching a known RA.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final int matchingRas;
     /**
      * number of received RAs ignored due to the MAX_RAS limit.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final int droppedRas;
     /**
      * number of received RAs with a minimum lifetime of 0.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final int zeroLifetimeRas;
     /**
      * number of received RAs that could not be parsed.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final int parseErrors;
     /**
      * number of APF program updates from receiving RAs.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final int programUpdates;
     /**
      * total number of APF program updates.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final int programUpdatesAll;
     /**
      * number of APF program updates from allowing multicast traffic.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final int programUpdatesAllowingMulticast;
     /**
      * maximum APF program size advertised by hardware.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final int maxProgramSize;
 
     private ApfStats(Parcel in) {
@@ -126,7 +125,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final class Builder {
         private long mDurationMs;
         private int mReceivedRas;
diff --git a/core/java/android/net/metrics/DhcpClientEvent.java b/core/java/android/net/metrics/DhcpClientEvent.java
index 8fc1ef8..8de427d 100644
--- a/core/java/android/net/metrics/DhcpClientEvent.java
+++ b/core/java/android/net/metrics/DhcpClientEvent.java
@@ -19,8 +19,8 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.text.TextUtils;
@@ -30,7 +30,6 @@
  * {@hide}
  */
 @SystemApi
-@TestApi
 public final class DhcpClientEvent implements IpConnectivityLog.Event {
 
     // Names for recording DhcpClient pseudo-state transitions.
@@ -40,7 +39,7 @@
     /** @hide */
     public final int durationMs;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private DhcpClientEvent(String msg, int durationMs) {
         this.msg = msg;
         this.durationMs = durationMs;
diff --git a/core/java/android/net/metrics/DhcpErrorEvent.java b/core/java/android/net/metrics/DhcpErrorEvent.java
index 32efb5a..de3129d 100644
--- a/core/java/android/net/metrics/DhcpErrorEvent.java
+++ b/core/java/android/net/metrics/DhcpErrorEvent.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.util.SparseArray;
@@ -30,7 +29,6 @@
  * {@hide}
  */
 @SystemApi
-@TestApi
 public final class DhcpErrorEvent implements IpConnectivityLog.Event {
     public static final int L2_ERROR   = 1;
     public static final int L3_ERROR   = 2;
diff --git a/core/java/android/net/metrics/IpConnectivityLog.java b/core/java/android/net/metrics/IpConnectivityLog.java
index 680c015..a008d85 100644
--- a/core/java/android/net/metrics/IpConnectivityLog.java
+++ b/core/java/android/net/metrics/IpConnectivityLog.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.net.ConnectivityMetricsEvent;
 import android.net.IIpConnectivityMetrics;
 import android.net.Network;
@@ -35,7 +34,6 @@
  * {@hide}
  */
 @SystemApi
-@TestApi
 public class IpConnectivityLog {
     private static final String TAG = IpConnectivityLog.class.getSimpleName();
     private static final boolean DBG = false;
@@ -52,7 +50,6 @@
 
     /** @hide */
     @SystemApi
-    @TestApi
     public IpConnectivityLog() {
     }
 
diff --git a/core/java/android/net/metrics/IpManagerEvent.java b/core/java/android/net/metrics/IpManagerEvent.java
index f14abb8..4f7f326 100644
--- a/core/java/android/net/metrics/IpManagerEvent.java
+++ b/core/java/android/net/metrics/IpManagerEvent.java
@@ -20,7 +20,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.util.SparseArray;
@@ -36,7 +35,6 @@
  * {@hide}
  */
 @SystemApi
-@TestApi
 public final class IpManagerEvent implements IpConnectivityLog.Event {
 
     public static final int PROVISIONING_OK                       = 1;
diff --git a/core/java/android/net/metrics/IpReachabilityEvent.java b/core/java/android/net/metrics/IpReachabilityEvent.java
index 79e01d7..d5003ba 100644
--- a/core/java/android/net/metrics/IpReachabilityEvent.java
+++ b/core/java/android/net/metrics/IpReachabilityEvent.java
@@ -19,7 +19,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.util.SparseArray;
@@ -32,7 +31,6 @@
  * {@hide}
  */
 @SystemApi
-@TestApi
 public final class IpReachabilityEvent implements IpConnectivityLog.Event {
 
     // Event types.
diff --git a/core/java/android/net/metrics/NetworkEvent.java b/core/java/android/net/metrics/NetworkEvent.java
index fe603cf..8c28f7a 100644
--- a/core/java/android/net/metrics/NetworkEvent.java
+++ b/core/java/android/net/metrics/NetworkEvent.java
@@ -20,7 +20,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.util.SparseArray;
@@ -34,7 +33,6 @@
  * {@hide}
  */
 @SystemApi
-@TestApi
 public final class NetworkEvent implements IpConnectivityLog.Event {
 
     public static final int NETWORK_CONNECTED            = 1;
diff --git a/core/java/android/net/metrics/RaEvent.java b/core/java/android/net/metrics/RaEvent.java
index 661f648..b54874f 100644
--- a/core/java/android/net/metrics/RaEvent.java
+++ b/core/java/android/net/metrics/RaEvent.java
@@ -19,7 +19,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -28,7 +27,6 @@
  * {@hide}
  */
 @SystemApi
-@TestApi
 public final class RaEvent implements IpConnectivityLog.Event {
 
     private static final long NO_LIFETIME = -1L;
diff --git a/core/java/android/net/metrics/ValidationProbeEvent.java b/core/java/android/net/metrics/ValidationProbeEvent.java
index 8fab64a..7f4e4a7 100644
--- a/core/java/android/net/metrics/ValidationProbeEvent.java
+++ b/core/java/android/net/metrics/ValidationProbeEvent.java
@@ -20,7 +20,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.util.SparseArray;
@@ -35,7 +34,6 @@
  * {@hide}
  */
 @SystemApi
-@TestApi
 public final class ValidationProbeEvent implements IpConnectivityLog.Event {
 
     public static final int PROBE_DNS       = 0;
diff --git a/core/java/android/net/nsd/INsdManager.aidl b/core/java/android/net/nsd/INsdManager.aidl
index 9484c74..e9e8935 100644
--- a/core/java/android/net/nsd/INsdManager.aidl
+++ b/core/java/android/net/nsd/INsdManager.aidl
@@ -25,7 +25,7 @@
  */
 interface INsdManager
 {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     Messenger getMessenger();
     void setEnabled(boolean enable);
 }
diff --git a/core/java/android/net/util/IpUtils.java b/core/java/android/net/util/IpUtils.java
deleted file mode 100644
index e037c40..0000000
--- a/core/java/android/net/util/IpUtils.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net.util;
-
-import java.net.Inet6Address;
-import java.net.InetAddress;
-import java.nio.BufferOverflowException;
-import java.nio.BufferUnderflowException;
-import java.nio.ByteBuffer;
-import java.nio.ShortBuffer;
-
-import static android.system.OsConstants.IPPROTO_TCP;
-import static android.system.OsConstants.IPPROTO_UDP;
-
-/**
- * @hide
- */
-public class IpUtils {
-    /**
-     * Converts a signed short value to an unsigned int value.  Needed
-     * because Java does not have unsigned types.
-     */
-    private static int intAbs(short v) {
-        return v & 0xFFFF;
-    }
-
-    /**
-     * Performs an IP checksum (used in IP header and across UDP
-     * payload) on the specified portion of a ByteBuffer.  The seed
-     * allows the checksum to commence with a specified value.
-     */
-    private static int checksum(ByteBuffer buf, int seed, int start, int end) {
-        int sum = seed;
-        final int bufPosition = buf.position();
-
-        // set position of original ByteBuffer, so that the ShortBuffer
-        // will be correctly initialized
-        buf.position(start);
-        ShortBuffer shortBuf = buf.asShortBuffer();
-
-        // re-set ByteBuffer position
-        buf.position(bufPosition);
-
-        final int numShorts = (end - start) / 2;
-        for (int i = 0; i < numShorts; i++) {
-            sum += intAbs(shortBuf.get(i));
-        }
-        start += numShorts * 2;
-
-        // see if a singleton byte remains
-        if (end != start) {
-            short b = buf.get(start);
-
-            // make it unsigned
-            if (b < 0) {
-                b += 256;
-            }
-
-            sum += b * 256;
-        }
-
-        sum = ((sum >> 16) & 0xFFFF) + (sum & 0xFFFF);
-        sum = ((sum + ((sum >> 16) & 0xFFFF)) & 0xFFFF);
-        int negated = ~sum;
-        return intAbs((short) negated);
-    }
-
-    private static int pseudoChecksumIPv4(
-            ByteBuffer buf, int headerOffset, int protocol, int transportLen) {
-        int partial = protocol + transportLen;
-        partial += intAbs(buf.getShort(headerOffset + 12));
-        partial += intAbs(buf.getShort(headerOffset + 14));
-        partial += intAbs(buf.getShort(headerOffset + 16));
-        partial += intAbs(buf.getShort(headerOffset + 18));
-        return partial;
-    }
-
-    private static int pseudoChecksumIPv6(
-            ByteBuffer buf, int headerOffset, int protocol, int transportLen) {
-        int partial = protocol + transportLen;
-        for (int offset = 8; offset < 40; offset += 2) {
-            partial += intAbs(buf.getShort(headerOffset + offset));
-        }
-        return partial;
-    }
-
-    private static byte ipversion(ByteBuffer buf, int headerOffset) {
-        return (byte) ((buf.get(headerOffset) & (byte) 0xf0) >> 4);
-   }
-
-    public static short ipChecksum(ByteBuffer buf, int headerOffset) {
-        byte ihl = (byte) (buf.get(headerOffset) & 0x0f);
-        return (short) checksum(buf, 0, headerOffset, headerOffset + ihl * 4);
-    }
-
-    private static short transportChecksum(ByteBuffer buf, int protocol,
-            int ipOffset, int transportOffset, int transportLen) {
-        if (transportLen < 0) {
-            throw new IllegalArgumentException("Transport length < 0: " + transportLen);
-        }
-        int sum;
-        byte ver = ipversion(buf, ipOffset);
-        if (ver == 4) {
-            sum = pseudoChecksumIPv4(buf, ipOffset, protocol, transportLen);
-        } else if (ver == 6) {
-            sum = pseudoChecksumIPv6(buf, ipOffset, protocol, transportLen);
-        } else {
-            throw new UnsupportedOperationException("Checksum must be IPv4 or IPv6");
-        }
-
-        sum = checksum(buf, sum, transportOffset, transportOffset + transportLen);
-        if (protocol == IPPROTO_UDP && sum == 0) {
-            sum = (short) 0xffff;
-        }
-        return (short) sum;
-    }
-
-    public static short udpChecksum(ByteBuffer buf, int ipOffset, int transportOffset) {
-        int transportLen = intAbs(buf.getShort(transportOffset + 4));
-        return transportChecksum(buf, IPPROTO_UDP, ipOffset, transportOffset, transportLen);
-    }
-
-    public static short tcpChecksum(ByteBuffer buf, int ipOffset, int transportOffset,
-            int transportLen) {
-        return transportChecksum(buf, IPPROTO_TCP, ipOffset, transportOffset, transportLen);
-    }
-
-    public static String addressAndPortToString(InetAddress address, int port) {
-        return String.format(
-                (address instanceof Inet6Address) ? "[%s]:%d" : "%s:%d",
-                address.getHostAddress(), port);
-    }
-
-    public static boolean isValidUdpOrTcpPort(int port) {
-        return port > 0 && port < 65536;
-    }
-}
diff --git a/core/java/android/net/util/SocketUtils.java b/core/java/android/net/util/SocketUtils.java
index 6967084..e64060f 100644
--- a/core/java/android/net/util/SocketUtils.java
+++ b/core/java/android/net/util/SocketUtils.java
@@ -22,7 +22,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.net.NetworkUtils;
 import android.system.ErrnoException;
 import android.system.NetlinkSocketAddress;
@@ -40,7 +39,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class SocketUtils {
     /**
      * Create a raw datagram socket that is bound to an interface.
diff --git a/core/java/android/net/vcn/IVcnManagementService.aidl b/core/java/android/net/vcn/IVcnManagementService.aidl
new file mode 100644
index 0000000..9dd0114
--- /dev/null
+++ b/core/java/android/net/vcn/IVcnManagementService.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.net.vcn;
+
+import android.net.vcn.VcnConfig;
+import android.os.ParcelUuid;
+
+/**
+ * @hide
+ */
+interface IVcnManagementService {
+    void setVcnConfig(in ParcelUuid subscriptionGroup, in VcnConfig config);
+    void clearVcnConfig(in ParcelUuid subscriptionGroup);
+}
diff --git a/core/java/android/net/vcn/OWNERS b/core/java/android/net/vcn/OWNERS
new file mode 100644
index 0000000..33b9f0f
--- /dev/null
+++ b/core/java/android/net/vcn/OWNERS
@@ -0,0 +1,7 @@
+set noparent
+
+benedictwong@google.com
+ckesting@google.com
+evitayan@google.com
+nharold@google.com
+jchalard@google.com
\ No newline at end of file
diff --git a/core/java/android/net/vcn/VcnConfig.aidl b/core/java/android/net/vcn/VcnConfig.aidl
new file mode 100644
index 0000000..67006a4
--- /dev/null
+++ b/core/java/android/net/vcn/VcnConfig.aidl
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.net.vcn;
+
+/** @hide */
+parcelable VcnConfig;
diff --git a/core/java/android/net/vcn/VcnConfig.java b/core/java/android/net/vcn/VcnConfig.java
new file mode 100644
index 0000000..148acf1
--- /dev/null
+++ b/core/java/android/net/vcn/VcnConfig.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.net.vcn;
+
+import android.annotation.NonNull;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * This class represents a configuration for a Virtual Carrier Network.
+ *
+ * @hide
+ */
+public final class VcnConfig implements Parcelable {
+    @NonNull private static final String TAG = VcnConfig.class.getSimpleName();
+
+    private VcnConfig() {
+        validate();
+    }
+    // TODO: Implement getters, validators, etc
+
+    /**
+     * Validates this configuration.
+     *
+     * @hide
+     */
+    private void validate() {
+        // TODO: implement validation logic
+    }
+
+    // Parcelable methods
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel out, int flags) {}
+
+    @NonNull
+    public static final Parcelable.Creator<VcnConfig> CREATOR =
+            new Parcelable.Creator<VcnConfig>() {
+                @NonNull
+                public VcnConfig createFromParcel(Parcel in) {
+                    // TODO: Ensure all methods are pulled from the parcels
+                    return new VcnConfig();
+                }
+
+                @NonNull
+                public VcnConfig[] newArray(int size) {
+                    return new VcnConfig[size];
+                }
+            };
+
+    /** This class is used to incrementally build {@link VcnConfig} objects. */
+    public static class Builder {
+        // TODO: Implement this builder
+
+        /**
+         * Builds and validates the VcnConfig.
+         *
+         * @return an immutable VcnConfig instance
+         */
+        @NonNull
+        public VcnConfig build() {
+            return new VcnConfig();
+        }
+    }
+}
diff --git a/core/java/android/net/vcn/VcnGatewayConnectionConfig.java b/core/java/android/net/vcn/VcnGatewayConnectionConfig.java
new file mode 100644
index 0000000..8160edc
--- /dev/null
+++ b/core/java/android/net/vcn/VcnGatewayConnectionConfig.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.net.vcn;
+
+import android.annotation.NonNull;
+
+/**
+ * This class represents a configuration for a connection to a Virtual Carrier Network gateway.
+ *
+ * <p>Each VcnGatewayConnectionConfig represents a single logical connection to a carrier gateway,
+ * and may provide one or more telephony services (as represented by network capabilities). Each
+ * gateway is expected to provide mobility for a given session as the device roams across {@link
+ * Network}s.
+ *
+ * <p>A VCN connection based on this configuration will be brought up dynamically based on device
+ * settings, and filed NetworkRequests. Underlying networks will be selected based on the services
+ * required by this configuration (as represented by network capabilities), and must be part of the
+ * subscription group under which this configuration is registered (see {@link
+ * VcnManager#setVcnConfig}).
+ *
+ * <p>Services that can be provided by a VCN network, or required for underlying networks are
+ * limited to services provided by cellular networks:
+ *
+ * <ul>
+ *   <li>{@link android.net.NetworkCapabilities.NET_CAPABILITY_MMS}
+ *   <li>{@link android.net.NetworkCapabilities.NET_CAPABILITY_SUPL}
+ *   <li>{@link android.net.NetworkCapabilities.NET_CAPABILITY_DUN}
+ *   <li>{@link android.net.NetworkCapabilities.NET_CAPABILITY_FOTA}
+ *   <li>{@link android.net.NetworkCapabilities.NET_CAPABILITY_IMS}
+ *   <li>{@link android.net.NetworkCapabilities.NET_CAPABILITY_CBS}
+ *   <li>{@link android.net.NetworkCapabilities.NET_CAPABILITY_IA}
+ *   <li>{@link android.net.NetworkCapabilities.NET_CAPABILITY_RCS}
+ *   <li>{@link android.net.NetworkCapabilities.NET_CAPABILITY_XCAP}
+ *   <li>{@link android.net.NetworkCapabilities.NET_CAPABILITY_EIMS}
+ *   <li>{@link android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET}
+ *   <li>{@link android.net.NetworkCapabilities.NET_CAPABILITY_MCX}
+ * </ul>
+ *
+ * @hide
+ */
+public final class VcnGatewayConnectionConfig {
+    private VcnGatewayConnectionConfig() {
+        validate();
+    }
+
+    // TODO: Implement getters, validators, etc
+
+    /**
+     * Validates this configuration
+     *
+     * @hide
+     */
+    private void validate() {
+        // TODO: implement validation logic
+    }
+
+    // Parcelable methods
+
+    /** This class is used to incrementally build {@link VcnGatewayConnectionConfig} objects */
+    public static class Builder {
+        // TODO: Implement this builder
+
+        /**
+         * Builds and validates the VcnGatewayConnectionConfig
+         *
+         * @return an immutable VcnGatewayConnectionConfig instance
+         */
+        @NonNull
+        public VcnGatewayConnectionConfig build() {
+            return new VcnGatewayConnectionConfig();
+        }
+    }
+}
diff --git a/core/java/android/net/vcn/VcnManager.java b/core/java/android/net/vcn/VcnManager.java
new file mode 100644
index 0000000..6769b9e
--- /dev/null
+++ b/core/java/android/net/vcn/VcnManager.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.net.vcn;
+
+import static java.util.Objects.requireNonNull;
+
+import android.annotation.NonNull;
+import android.annotation.RequiresPermission;
+import android.annotation.SystemService;
+import android.content.Context;
+import android.os.ParcelUuid;
+import android.os.RemoteException;
+
+/**
+ * VcnManager publishes APIs for applications to configure and manage Virtual Carrier Networks.
+ *
+ * @hide
+ */
+@SystemService(Context.VCN_MANAGEMENT_SERVICE)
+public final class VcnManager {
+    @NonNull private static final String TAG = VcnManager.class.getSimpleName();
+
+    @NonNull private final Context mContext;
+    @NonNull private final IVcnManagementService mService;
+
+    /**
+     * Construct an instance of VcnManager within an application context.
+     *
+     * @param ctx the application context for this manager
+     * @param service the VcnManagementService binder backing this manager
+     *
+     * @hide
+     */
+    public VcnManager(@NonNull Context ctx, @NonNull IVcnManagementService service) {
+        mContext = requireNonNull(ctx, "missing context");
+        mService = requireNonNull(service, "missing service");
+    }
+
+    // TODO: Make setVcnConfig(), clearVcnConfig() Public API
+    /**
+     * Sets the VCN configuration for a given subscription group.
+     *
+     * <p>An app that has carrier privileges for any of the subscriptions in the given group may set
+     * a VCN configuration. If a configuration already exists for the given subscription group, it
+     * will be overridden. Any active VCN(s) may be forced to restart to use the new configuration.
+     *
+     * <p>This API is ONLY permitted for callers running as the primary user.
+     *
+     * @param subscriptionGroup the subscription group that the configuration should be applied to
+     * @param config the configuration parameters for the VCN
+     * @throws SecurityException if the caller does not have carrier privileges, or is not running
+     *     as the primary user
+     * @hide
+     */
+    @RequiresPermission("carrier privileges") // TODO (b/72967236): Define a system-wide constant
+    public void setVcnConfig(@NonNull ParcelUuid subscriptionGroup, @NonNull VcnConfig config) {
+        requireNonNull(subscriptionGroup, "subscriptionGroup was null");
+        requireNonNull(config, "config was null");
+
+        try {
+            mService.setVcnConfig(subscriptionGroup, config);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    // TODO: Make setVcnConfig(), clearVcnConfig() Public API
+    /**
+     * Clears the VCN configuration for a given subscription group.
+     *
+     * <p>An app that has carrier privileges for any of the subscriptions in the given group may
+     * clear a VCN configuration. This API is ONLY permitted for callers running as the primary
+     * user. Any active VCN will be torn down.
+     *
+     * @param subscriptionGroup the subscription group that the configuration should be applied to
+     * @throws SecurityException if the caller does not have carrier privileges, or is not running
+     *     as the primary user
+     * @hide
+     */
+    @RequiresPermission("carrier privileges") // TODO (b/72967236): Define a system-wide constant
+    public void clearVcnConfig(@NonNull ParcelUuid subscriptionGroup) {
+        requireNonNull(subscriptionGroup, "subscriptionGroup was null");
+
+        try {
+            mService.clearVcnConfig(subscriptionGroup);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+}
diff --git a/core/java/android/nfc/INfcAdapterExtras.aidl b/core/java/android/nfc/INfcAdapterExtras.aidl
index dd260bc..cde57c5 100644
--- a/core/java/android/nfc/INfcAdapterExtras.aidl
+++ b/core/java/android/nfc/INfcAdapterExtras.aidl
@@ -23,18 +23,18 @@
  * {@hide}
  */
 interface INfcAdapterExtras {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     Bundle open(in String pkg, IBinder b);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     Bundle close(in String pkg, IBinder b);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     Bundle transceive(in String pkg, in byte[] data_in);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     int getCardEmulationRoute(in String pkg);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void setCardEmulationRoute(in String pkg, int route);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void authenticate(in String pkg, in byte[] token);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     String getDriverName(in String pkg);
 }
diff --git a/core/java/android/nfc/NdefRecord.java b/core/java/android/nfc/NdefRecord.java
index 74f8cb4..f72d4be 100644
--- a/core/java/android/nfc/NdefRecord.java
+++ b/core/java/android/nfc/NdefRecord.java
@@ -19,6 +19,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Intent;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.util.proto.ProtoOutputStream;
@@ -281,7 +282,7 @@
 
     private final short mTnf;
     private final byte[] mType;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final byte[] mId;
     private final byte[] mPayload;
 
diff --git a/core/java/android/nfc/NfcAdapter.java b/core/java/android/nfc/NfcAdapter.java
index c61f10f..a17a5370 100644
--- a/core/java/android/nfc/NfcAdapter.java
+++ b/core/java/android/nfc/NfcAdapter.java
@@ -35,6 +35,7 @@
 import android.nfc.tech.Ndef;
 import android.nfc.tech.NfcA;
 import android.nfc.tech.NfcF;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
@@ -677,6 +678,12 @@
             throw new IllegalArgumentException(
                     "context not associated with any application (using a mock context?)");
         }
+
+        if (getServiceInterface() == null) {
+            // NFC is not available
+            return null;
+        }
+
         /* use getSystemService() for consistency */
         NfcManager manager = (NfcManager) context.getSystemService(Context.NFC_SERVICE);
         if (manager == null) {
@@ -773,6 +780,16 @@
             return sService.getNfcDtaInterface(mContext.getPackageName());
         } catch (RemoteException e) {
             attemptDeadServiceRecovery(e);
+            // Try one more time
+            if (sService == null) {
+                Log.e(TAG, "Failed to recover NFC Service.");
+                return null;
+            }
+            try {
+                return sService.getNfcDtaInterface(mContext.getPackageName());
+            } catch (RemoteException ee) {
+                Log.e(TAG, "Failed to recover NFC Service.");
+            }
             return null;
         }
     }
@@ -835,6 +852,16 @@
             return sService.getState() == STATE_ON;
         } catch (RemoteException e) {
             attemptDeadServiceRecovery(e);
+            // Try one more time
+            if (sService == null) {
+                Log.e(TAG, "Failed to recover NFC Service.");
+                return false;
+            }
+            try {
+                return sService.getState() == STATE_ON;
+            } catch (RemoteException ee) {
+                Log.e(TAG, "Failed to recover NFC Service.");
+            }
             return false;
         }
     }
@@ -858,6 +885,16 @@
             return sService.getState();
         } catch (RemoteException e) {
             attemptDeadServiceRecovery(e);
+            // Try one more time
+            if (sService == null) {
+                Log.e(TAG, "Failed to recover NFC Service.");
+                return NfcAdapter.STATE_OFF;
+            }
+            try {
+                return sService.getState();
+            } catch (RemoteException ee) {
+                Log.e(TAG, "Failed to recover NFC Service.");
+            }
             return NfcAdapter.STATE_OFF;
         }
     }
@@ -885,6 +922,16 @@
             return sService.enable();
         } catch (RemoteException e) {
             attemptDeadServiceRecovery(e);
+            // Try one more time
+            if (sService == null) {
+                Log.e(TAG, "Failed to recover NFC Service.");
+                return false;
+            }
+            try {
+                return sService.enable();
+            } catch (RemoteException ee) {
+                Log.e(TAG, "Failed to recover NFC Service.");
+            }
             return false;
         }
     }
@@ -914,6 +961,16 @@
             return sService.disable(true);
         } catch (RemoteException e) {
             attemptDeadServiceRecovery(e);
+            // Try one more time
+            if (sService == null) {
+                Log.e(TAG, "Failed to recover NFC Service.");
+                return false;
+            }
+            try {
+                return sService.disable(true);
+            } catch (RemoteException ee) {
+                Log.e(TAG, "Failed to recover NFC Service.");
+            }
             return false;
         }
     }
@@ -929,6 +986,16 @@
             return sService.disable(persist);
         } catch (RemoteException e) {
             attemptDeadServiceRecovery(e);
+            // Try one more time
+            if (sService == null) {
+                Log.e(TAG, "Failed to recover NFC Service.");
+                return false;
+            }
+            try {
+                return sService.disable(persist);
+            } catch (RemoteException ee) {
+                Log.e(TAG, "Failed to recover NFC Service.");
+            }
             return false;
         }
     }
@@ -1762,6 +1829,16 @@
             return sService.setNfcSecure(enable);
         } catch (RemoteException e) {
             attemptDeadServiceRecovery(e);
+            // Try one more time
+            if (sService == null) {
+                Log.e(TAG, "Failed to recover NFC Service.");
+                return false;
+            }
+            try {
+                return sService.setNfcSecure(enable);
+            } catch (RemoteException ee) {
+                Log.e(TAG, "Failed to recover NFC Service.");
+            }
             return false;
         }
     }
@@ -1780,6 +1857,16 @@
             return sService.deviceSupportsNfcSecure();
         } catch (RemoteException e) {
             attemptDeadServiceRecovery(e);
+            // Try one more time
+            if (sService == null) {
+                Log.e(TAG, "Failed to recover NFC Service.");
+                return false;
+            }
+            try {
+                return sService.deviceSupportsNfcSecure();
+            } catch (RemoteException ee) {
+                Log.e(TAG, "Failed to recover NFC Service.");
+            }
             return false;
         }
     }
@@ -1800,6 +1887,16 @@
             return sService.isNfcSecureEnabled();
         } catch (RemoteException e) {
             attemptDeadServiceRecovery(e);
+            // Try one more time
+            if (sService == null) {
+                Log.e(TAG, "Failed to recover NFC Service.");
+                return false;
+            }
+            try {
+                return sService.isNfcSecureEnabled();
+            } catch (RemoteException ee) {
+                Log.e(TAG, "Failed to recover NFC Service.");
+            }
             return false;
         }
     }
@@ -2077,7 +2174,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public INfcAdapterExtras getNfcAdapterExtrasInterface() {
         if (mContext == null) {
             throw new UnsupportedOperationException("You need a context on NfcAdapter to use the "
@@ -2087,6 +2184,16 @@
             return sService.getNfcAdapterExtrasInterface(mContext.getPackageName());
         } catch (RemoteException e) {
             attemptDeadServiceRecovery(e);
+            // Try one more time
+            if (sService == null) {
+                Log.e(TAG, "Failed to recover NFC Service.");
+                return null;
+            }
+            try {
+                return sService.getNfcAdapterExtrasInterface(mContext.getPackageName());
+            } catch (RemoteException ee) {
+                Log.e(TAG, "Failed to recover NFC Service.");
+            }
             return null;
         }
     }
diff --git a/core/java/android/nfc/Tag.java b/core/java/android/nfc/Tag.java
index b9e6ff4..398ec63a 100644
--- a/core/java/android/nfc/Tag.java
+++ b/core/java/android/nfc/Tag.java
@@ -29,6 +29,7 @@
 import android.nfc.tech.NfcF;
 import android.nfc.tech.NfcV;
 import android.nfc.tech.TagTechnology;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -111,7 +112,7 @@
  * <p>
  */
 public final class Tag implements Parcelable {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     final byte[] mId;
     final int[] mTechList;
     final String[] mTechStringList;
diff --git a/core/java/android/os/BaseBundle.java b/core/java/android/os/BaseBundle.java
index 1d28489..1692921f 100644
--- a/core/java/android/os/BaseBundle.java
+++ b/core/java/android/os/BaseBundle.java
@@ -315,7 +315,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isParcelled() {
         return mParcelledData != null;
     }
diff --git a/core/java/android/os/BasicShellCommandHandler.java b/core/java/android/os/BasicShellCommandHandler.java
deleted file mode 100644
index 1ea2229..0000000
--- a/core/java/android/os/BasicShellCommandHandler.java
+++ /dev/null
@@ -1,330 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.os;
-
-import android.util.Log;
-
-import java.io.BufferedInputStream;
-import java.io.FileDescriptor;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PrintWriter;
-
-/**
- * Helper for implementing {@link Binder#onShellCommand Binder.onShellCommand}. This is meant to
- * be copied into mainline modules, so this class must not use any hidden APIs.
- *
- * @hide
- */
-public abstract class BasicShellCommandHandler {
-    static final String TAG = "ShellCommand";
-    static final boolean DEBUG = false;
-
-    private Binder mTarget;
-    private FileDescriptor mIn;
-    private FileDescriptor mOut;
-    private FileDescriptor mErr;
-    private String[] mArgs;
-
-    private String mCmd;
-    private int mArgPos;
-    private String mCurArgData;
-
-    private FileInputStream mFileIn;
-    private FileOutputStream mFileOut;
-    private FileOutputStream mFileErr;
-
-    private PrintWriter mOutPrintWriter;
-    private PrintWriter mErrPrintWriter;
-    private InputStream mInputStream;
-
-    public void init(Binder target, FileDescriptor in, FileDescriptor out, FileDescriptor err,
-            String[] args, int firstArgPos) {
-        mTarget = target;
-        mIn = in;
-        mOut = out;
-        mErr = err;
-        mArgs = args;
-        mCmd = null;
-        mArgPos = firstArgPos;
-        mCurArgData = null;
-        mFileIn = null;
-        mFileOut = null;
-        mFileErr = null;
-        mOutPrintWriter = null;
-        mErrPrintWriter = null;
-        mInputStream = null;
-    }
-
-    public int exec(Binder target, FileDescriptor in, FileDescriptor out, FileDescriptor err,
-            String[] args) {
-        String cmd;
-        int start;
-        if (args != null && args.length > 0) {
-            cmd = args[0];
-            start = 1;
-        } else {
-            cmd = null;
-            start = 0;
-        }
-        init(target, in, out, err, args, start);
-        mCmd = cmd;
-
-        if (DEBUG) {
-            RuntimeException here = new RuntimeException("here");
-            here.fillInStackTrace();
-            Log.d(TAG, "Starting command " + mCmd + " on " + mTarget, here);
-            Log.d(TAG, "Calling uid=" + Binder.getCallingUid()
-                    + " pid=" + Binder.getCallingPid());
-        }
-        int res = -1;
-        try {
-            res = onCommand(mCmd);
-            if (DEBUG) Log.d(TAG, "Executed command " + mCmd + " on " + mTarget);
-        } catch (Throwable e) {
-            // Unlike usual calls, in this case if an exception gets thrown
-            // back to us we want to print it back in to the dump data, since
-            // that is where the caller expects all interesting information to
-            // go.
-            PrintWriter eout = getErrPrintWriter();
-            eout.println();
-            eout.println("Exception occurred while executing '" + mCmd + "':");
-            e.printStackTrace(eout);
-        } finally {
-            if (DEBUG) Log.d(TAG, "Flushing output streams on " + mTarget);
-            if (mOutPrintWriter != null) {
-                mOutPrintWriter.flush();
-            }
-            if (mErrPrintWriter != null) {
-                mErrPrintWriter.flush();
-            }
-            if (DEBUG) Log.d(TAG, "Sending command result on " + mTarget);
-        }
-        if (DEBUG) Log.d(TAG, "Finished command " + mCmd + " on " + mTarget);
-        return res;
-    }
-
-    /**
-     * Return the raw FileDescriptor for the output stream.
-     */
-    public FileDescriptor getOutFileDescriptor() {
-        return mOut;
-    }
-
-    /**
-     * Return direct raw access (not buffered) to the command's output data stream.
-     */
-    public OutputStream getRawOutputStream() {
-        if (mFileOut == null) {
-            mFileOut = new FileOutputStream(mOut);
-        }
-        return mFileOut;
-    }
-
-    /**
-     * Return a PrintWriter for formatting output to {@link #getRawOutputStream()}.
-     */
-    public PrintWriter getOutPrintWriter() {
-        if (mOutPrintWriter == null) {
-            mOutPrintWriter = new PrintWriter(getRawOutputStream());
-        }
-        return mOutPrintWriter;
-    }
-
-    /**
-     * Return the raw FileDescriptor for the error stream.
-     */
-    public FileDescriptor getErrFileDescriptor() {
-        return mErr;
-    }
-
-    /**
-     * Return direct raw access (not buffered) to the command's error output data stream.
-     */
-    public OutputStream getRawErrorStream() {
-        if (mFileErr == null) {
-            mFileErr = new FileOutputStream(mErr);
-        }
-        return mFileErr;
-    }
-
-    /**
-     * Return a PrintWriter for formatting output to {@link #getRawErrorStream()}.
-     */
-    public PrintWriter getErrPrintWriter() {
-        if (mErr == null) {
-            return getOutPrintWriter();
-        }
-        if (mErrPrintWriter == null) {
-            mErrPrintWriter = new PrintWriter(getRawErrorStream());
-        }
-        return mErrPrintWriter;
-    }
-
-    /**
-     * Return the raw FileDescriptor for the input stream.
-     */
-    public FileDescriptor getInFileDescriptor() {
-        return mIn;
-    }
-
-    /**
-     * Return direct raw access (not buffered) to the command's input data stream.
-     */
-    public InputStream getRawInputStream() {
-        if (mFileIn == null) {
-            mFileIn = new FileInputStream(mIn);
-        }
-        return mFileIn;
-    }
-
-    /**
-     * Return buffered access to the command's {@link #getRawInputStream()}.
-     */
-    public InputStream getBufferedInputStream() {
-        if (mInputStream == null) {
-            mInputStream = new BufferedInputStream(getRawInputStream());
-        }
-        return mInputStream;
-    }
-
-    /**
-     * Return the next option on the command line -- that is an argument that
-     * starts with '-'.  If the next argument is not an option, null is returned.
-     */
-    public String getNextOption() {
-        if (mCurArgData != null) {
-            String prev = mArgs[mArgPos - 1];
-            throw new IllegalArgumentException("No argument expected after \"" + prev + "\"");
-        }
-        if (mArgPos >= mArgs.length) {
-            return null;
-        }
-        String arg = mArgs[mArgPos];
-        if (!arg.startsWith("-")) {
-            return null;
-        }
-        mArgPos++;
-        if (arg.equals("--")) {
-            return null;
-        }
-        if (arg.length() > 1 && arg.charAt(1) != '-') {
-            if (arg.length() > 2) {
-                mCurArgData = arg.substring(2);
-                return arg.substring(0, 2);
-            } else {
-                mCurArgData = null;
-                return arg;
-            }
-        }
-        mCurArgData = null;
-        return arg;
-    }
-
-    /**
-     * Return the next argument on the command line, whatever it is; if there are
-     * no arguments left, return null.
-     */
-    public String getNextArg() {
-        if (mCurArgData != null) {
-            String arg = mCurArgData;
-            mCurArgData = null;
-            return arg;
-        } else if (mArgPos < mArgs.length) {
-            return mArgs[mArgPos++];
-        } else {
-            return null;
-        }
-    }
-
-    public String peekNextArg() {
-        if (mCurArgData != null) {
-            return mCurArgData;
-        } else if (mArgPos < mArgs.length) {
-            return mArgs[mArgPos];
-        } else {
-            return null;
-        }
-    }
-
-    /**
-     * Returns number of arguments that haven't been processed yet.
-     */
-    public int getRemainingArgsCount() {
-        if (mArgPos >= mArgs.length) {
-            return 0;
-        }
-        return mArgs.length - mArgPos;
-    }
-
-    /**
-     * Return the next argument on the command line, whatever it is; if there are
-     * no arguments left, throws an IllegalArgumentException to report this to the user.
-     */
-    public String getNextArgRequired() {
-        String arg = getNextArg();
-        if (arg == null) {
-            String prev = mArgs[mArgPos - 1];
-            throw new IllegalArgumentException("Argument expected after \"" + prev + "\"");
-        }
-        return arg;
-    }
-
-    public int handleDefaultCommands(String cmd) {
-        if (cmd == null || "help".equals(cmd) || "-h".equals(cmd)) {
-            onHelp();
-        } else {
-            getOutPrintWriter().println("Unknown command: " + cmd);
-        }
-        return -1;
-    }
-
-    public Binder getTarget() {
-        return mTarget;
-    }
-
-    public String[] getAllArgs() {
-        return mArgs;
-    }
-
-    /**
-     * Implement parsing and execution of a command.  If it isn't a command you understand,
-     * call {@link #handleDefaultCommands(String)} and return its result as a last resort.
-     * Use {@link #getNextOption()}, {@link #getNextArg()}, and {@link #getNextArgRequired()}
-     * to process additional command line arguments.  Command output can be written to
-     * {@link #getOutPrintWriter()} and errors to {@link #getErrPrintWriter()}.
-     *
-     * <p class="caution">Note that no permission checking has been done before entering this
-     * function, so you need to be sure to do your own security verification for any commands you
-     * are executing.  The easiest way to do this is to have the ShellCommand contain
-     * only a reference to your service's aidl interface, and do all of your command
-     * implementations on top of that -- that way you can rely entirely on your executing security
-     * code behind that interface.</p>
-     *
-     * @param cmd The first command line argument representing the name of the command to execute.
-     * @return Return the command result; generally 0 or positive indicates success and
-     * negative values indicate error.
-     */
-    public abstract int onCommand(String cmd);
-
-    /**
-     * Implement this to print help text about your command to {@link #getOutPrintWriter()}.
-     */
-    public abstract void onHelp();
-}
diff --git a/core/java/android/os/BatteryManager.java b/core/java/android/os/BatteryManager.java
index 12ec0a0..6d4593a 100644
--- a/core/java/android/os/BatteryManager.java
+++ b/core/java/android/os/BatteryManager.java
@@ -20,7 +20,6 @@
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.Intent;
@@ -121,7 +120,7 @@
      * Int value set to the maximum charging current supported by the charger in micro amperes.
      * {@hide}
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String EXTRA_MAX_CHARGING_CURRENT = "max_charging_current";
 
     /**
@@ -129,7 +128,7 @@
      * Int value set to the maximum charging voltage supported by the charger in micro volts.
      * {@hide}
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String EXTRA_MAX_CHARGING_VOLTAGE = "max_charging_voltage";
 
     /**
@@ -137,7 +136,7 @@
      * integer containing the charge counter present in the battery.
      * {@hide}
      */
-     @UnsupportedAppUsage
+     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
      public static final String EXTRA_CHARGE_COUNTER = "charge_counter";
 
     /**
@@ -392,7 +391,6 @@
      */
     @RequiresPermission(permission.POWER_SAVER)
     @SystemApi
-    @TestApi
     public boolean setChargingStateUpdateDelayMillis(int delayMillis) {
         try {
             return mBatteryStats.setChargingStateUpdateDelayMillis(delayMillis);
diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java
index 48d3267..72b8e65 100644
--- a/core/java/android/os/BatteryStats.java
+++ b/core/java/android/os/BatteryStats.java
@@ -86,7 +86,7 @@
     /**
      * A constant indicating a partial wake lock timer.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int WAKE_TYPE_PARTIAL = 0;
 
     /**
@@ -783,7 +783,7 @@
          * Returns the timer keeping track of background wifi scans.
          */
         public abstract Timer getWifiScanBackgroundTimer();
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public abstract long getWifiBatchedScanTime(int csphBin, long elapsedRealtimeUs, int which);
         public abstract int getWifiBatchedScanCount(int csphBin, int which);
         @UnsupportedAppUsage
diff --git a/core/java/android/os/Broadcaster.java b/core/java/android/os/Broadcaster.java
index d1a953f..88760b0 100644
--- a/core/java/android/os/Broadcaster.java
+++ b/core/java/android/os/Broadcaster.java
@@ -21,7 +21,7 @@
 /** @hide */
 public class Broadcaster
 {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Broadcaster()
     {
     }
@@ -32,7 +32,7 @@
      *  When this broadcaster pushes a message with senderWhat in the what field,
      *  target will be sent a copy of that message with targetWhat in the what field.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void request(int senderWhat, Handler target, int targetWhat)
     {
         synchronized (this) {
@@ -100,7 +100,7 @@
     /**
      * Unregister for notifications for this senderWhat/target/targetWhat tuple.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void cancelRequest(int senderWhat, Handler target, int targetWhat)
     {
         synchronized (this) {
@@ -173,7 +173,7 @@
      * Send out msg.  Anyone who has registered via the request() method will be
      * sent the message.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void broadcast(Message msg)
     {
         synchronized (this) {
diff --git a/core/java/android/os/BugreportManager.java b/core/java/android/os/BugreportManager.java
index 9e996d1..fe4d729 100644
--- a/core/java/android/os/BugreportManager.java
+++ b/core/java/android/os/BugreportManager.java
@@ -24,13 +24,13 @@
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
-import android.annotation.TestApi;
 import android.app.ActivityManager;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Handler;
 import android.util.Log;
 import android.widget.Toast;
+
 import com.android.internal.R;
 import com.android.internal.util.Preconditions;
 
@@ -48,7 +48,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 @SystemService(Context.BUGREPORT_SERVICE)
 public final class BugreportManager {
 
diff --git a/core/java/android/os/BugreportParams.java b/core/java/android/os/BugreportParams.java
index c8347813..279ccae 100644
--- a/core/java/android/os/BugreportParams.java
+++ b/core/java/android/os/BugreportParams.java
@@ -18,7 +18,6 @@
 
 import android.annotation.IntDef;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -29,7 +28,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class BugreportParams {
     private final int mMode;
 
diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java
index e2486af..8121329 100755
--- a/core/java/android/os/Build.java
+++ b/core/java/android/os/Build.java
@@ -141,8 +141,8 @@
      *
      * <p>Starting with API level 29, persistent device identifiers are guarded behind additional
      * restrictions, and apps are recommended to use resettable identifiers (see <a
-     * href="c"> Best practices for unique identifiers</a>). This method can be invoked if one of
-     * the following requirements is met:
+     * href="/training/articles/user-data-ids">Best practices for unique identifiers</a>). This
+     * method can be invoked if one of the following requirements is met:
      * <ul>
      *     <li>If the calling app has been granted the READ_PRIVILEGED_PHONE_STATE permission; this
      *     is a privileged permission that can only be granted to apps preloaded on the device.
diff --git a/core/java/android/os/Bundle.java b/core/java/android/os/Bundle.java
index f8f8bf7..1c1f5c0 100644
--- a/core/java/android/os/Bundle.java
+++ b/core/java/android/os/Bundle.java
@@ -174,7 +174,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static Bundle forPair(String key, String value) {
         Bundle b = new Bundle(1);
         b.putString(key, value);
@@ -306,7 +306,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getSize() {
         if (mParcelledData != null) {
             return mParcelledData.dataSize();
@@ -389,7 +389,7 @@
      * Filter values in Bundle to only basic types.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Bundle filterValues() {
         unparcel();
         Bundle bundle = this;
diff --git a/core/java/android/os/Debug.java b/core/java/android/os/Debug.java
index a2e53e2..8ab734d 100644
--- a/core/java/android/os/Debug.java
+++ b/core/java/android/os/Debug.java
@@ -88,7 +88,7 @@
     // set/cleared by waitForDebugger()
     private static volatile boolean mWaiting = false;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private Debug() {}
 
     /*
@@ -120,7 +120,7 @@
         @UnsupportedAppUsage
         public int dalvikSwappablePss;
         /** @hide The resident set size for dalvik heap.  (Without other Dalvik overhead.) */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public int dalvikRss;
         /** The private dirty pages used by dalvik heap. */
         public int dalvikPrivateDirty;
@@ -140,7 +140,7 @@
         public int dalvikSwappedOut;
         /** The dirty dalvik pages that have been swapped out, proportional. */
         /** @hide We may want to expose this, eventually. */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public int dalvikSwappedOutPss;
 
         /** The proportional set size for the native heap. */
@@ -150,7 +150,7 @@
         @UnsupportedAppUsage
         public int nativeSwappablePss;
         /** @hide The resident set size for the native heap. */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public int nativeRss;
         /** The private dirty pages used by the native heap. */
         public int nativePrivateDirty;
@@ -170,7 +170,7 @@
         public int nativeSwappedOut;
         /** The dirty native pages that have been swapped out, proportional. */
         /** @hide We may want to expose this, eventually. */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public int nativeSwappedOutPss;
 
         /** The proportional set size for everything else. */
@@ -180,7 +180,7 @@
         @UnsupportedAppUsage
         public int otherSwappablePss;
         /** @hide The resident set size for everything else. */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public int otherRss;
         /** The private dirty pages used by everything else. */
         public int otherPrivateDirty;
@@ -200,12 +200,12 @@
         public int otherSwappedOut;
         /** The dirty pages used by anyting else that have been swapped out, proportional. */
         /** @hide We may want to expose this, eventually. */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public int otherSwappedOutPss;
 
         /** Whether the kernel reports proportional swap usage */
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public boolean hasSwappedOutPss;
 
         /** @hide */
@@ -2042,7 +2042,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static native void dumpNativeHeap(FileDescriptor fd);
 
     /**
diff --git a/core/java/android/os/Environment.java b/core/java/android/os/Environment.java
index 9e13f05..d3eb395 100644
--- a/core/java/android/os/Environment.java
+++ b/core/java/android/os/Environment.java
@@ -235,7 +235,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static @NonNull File getOemDirectory() {
         return DIR_OEM_ROOT;
     }
@@ -247,7 +246,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static @NonNull File getOdmDirectory() {
         return DIR_ODM_ROOT;
     }
@@ -258,7 +256,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static @NonNull File getVendorDirectory() {
         return DIR_VENDOR_ROOT;
     }
@@ -270,7 +267,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static @NonNull File getProductDirectory() {
         return DIR_PRODUCT_ROOT;
     }
@@ -297,7 +293,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static @NonNull File getSystemExtDirectory() {
         return DIR_SYSTEM_EXT_ROOT;
     }
@@ -686,7 +681,7 @@
     }
 
     /** {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static File getLegacyExternalStorageObbDirectory() {
         return buildPath(getLegacyExternalStorageDirectory(), DIR_ANDROID, DIR_OBB);
     }
@@ -1007,7 +1002,7 @@
      * Generates the raw path to an application's OBB files
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static File[] buildExternalStorageAppObbDirs(String packageName) {
         throwIfUserRequired();
         return sCurrentUser.buildExternalStorageAppObbDirs(packageName);
diff --git a/core/java/android/os/FileBridge.java b/core/java/android/os/FileBridge.java
index 21fd819..ab5637c 100644
--- a/core/java/android/os/FileBridge.java
+++ b/core/java/android/os/FileBridge.java
@@ -16,7 +16,6 @@
 
 package android.os;
 
-import static android.system.OsConstants.AF_UNIX;
 import static android.system.OsConstants.SOCK_STREAM;
 
 import android.system.ErrnoException;
@@ -58,17 +57,19 @@
     /** CMD_CLOSE */
     private static final int CMD_CLOSE = 3;
 
-    private FileDescriptor mTarget;
+    private ParcelFileDescriptor mTarget;
 
-    private final FileDescriptor mServer = new FileDescriptor();
-    private final FileDescriptor mClient = new FileDescriptor();
+    private ParcelFileDescriptor mServer;
+    private ParcelFileDescriptor mClient;
 
     private volatile boolean mClosed;
 
     public FileBridge() {
         try {
-            Os.socketpair(AF_UNIX, SOCK_STREAM, 0, mServer, mClient);
-        } catch (ErrnoException e) {
+            ParcelFileDescriptor[] fds = ParcelFileDescriptor.createSocketPair(SOCK_STREAM);
+            mServer = fds[0];
+            mClient = fds[1];
+        } catch (IOException e) {
             throw new RuntimeException("Failed to create bridge");
         }
     }
@@ -80,15 +81,14 @@
     public void forceClose() {
         IoUtils.closeQuietly(mTarget);
         IoUtils.closeQuietly(mServer);
-        IoUtils.closeQuietly(mClient);
         mClosed = true;
     }
 
-    public void setTargetFile(FileDescriptor target) {
+    public void setTargetFile(ParcelFileDescriptor target) {
         mTarget = target;
     }
 
-    public FileDescriptor getClientSocket() {
+    public ParcelFileDescriptor getClientSocket() {
         return mClient;
     }
 
@@ -96,32 +96,33 @@
     public void run() {
         final byte[] temp = new byte[8192];
         try {
-            while (IoBridge.read(mServer, temp, 0, MSG_LENGTH) == MSG_LENGTH) {
+            while (IoBridge.read(mServer.getFileDescriptor(), temp, 0, MSG_LENGTH) == MSG_LENGTH) {
                 final int cmd = Memory.peekInt(temp, 0, ByteOrder.BIG_ENDIAN);
                 if (cmd == CMD_WRITE) {
                     // Shuttle data into local file
                     int len = Memory.peekInt(temp, 4, ByteOrder.BIG_ENDIAN);
                     while (len > 0) {
-                        int n = IoBridge.read(mServer, temp, 0, Math.min(temp.length, len));
+                        int n = IoBridge.read(mServer.getFileDescriptor(), temp, 0,
+                                              Math.min(temp.length, len));
                         if (n == -1) {
                             throw new IOException(
                                     "Unexpected EOF; still expected " + len + " bytes");
                         }
-                        IoBridge.write(mTarget, temp, 0, n);
+                        IoBridge.write(mTarget.getFileDescriptor(), temp, 0, n);
                         len -= n;
                     }
 
                 } else if (cmd == CMD_FSYNC) {
                     // Sync and echo back to confirm
-                    Os.fsync(mTarget);
-                    IoBridge.write(mServer, temp, 0, MSG_LENGTH);
+                    Os.fsync(mTarget.getFileDescriptor());
+                    IoBridge.write(mServer.getFileDescriptor(), temp, 0, MSG_LENGTH);
 
                 } else if (cmd == CMD_CLOSE) {
                     // Close and echo back to confirm
-                    Os.fsync(mTarget);
-                    Os.close(mTarget);
+                    Os.fsync(mTarget.getFileDescriptor());
+                    mTarget.close();
                     mClosed = true;
-                    IoBridge.write(mServer, temp, 0, MSG_LENGTH);
+                    IoBridge.write(mServer.getFileDescriptor(), temp, 0, MSG_LENGTH);
                     break;
                 }
             }
@@ -143,17 +144,11 @@
             mClient = clientPfd.getFileDescriptor();
         }
 
-        public FileBridgeOutputStream(FileDescriptor client) {
-            mClientPfd = null;
-            mClient = client;
-        }
-
         @Override
         public void close() throws IOException {
             try {
                 writeCommandAndBlock(CMD_CLOSE, "close()");
             } finally {
-                IoBridge.closeAndSignalBlockedThreads(mClient);
                 IoUtils.closeQuietly(mClientPfd);
             }
         }
diff --git a/core/java/android/os/FileObserver.java b/core/java/android/os/FileObserver.java
index ca303d9..d4b563b 100644
--- a/core/java/android/os/FileObserver.java
+++ b/core/java/android/os/FileObserver.java
@@ -142,7 +142,7 @@
             stopWatching(m_fd, descriptors);
         }
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public void onEvent(int wfd, @NotifyEventType int mask, String path) {
             // look up our observer, fixing up the map if necessary...
             FileObserver observer = null;
diff --git a/core/java/android/os/FileUtils.java b/core/java/android/os/FileUtils.java
index 70c924a..a4d6c38 100644
--- a/core/java/android/os/FileUtils.java
+++ b/core/java/android/os/FileUtils.java
@@ -181,7 +181,7 @@
      * @return 0 on success, otherwise errno.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static int setPermissions(FileDescriptor fd, int mode, int uid, int gid) {
         try {
             Os.fchmod(fd, mode);
@@ -664,7 +664,7 @@
     }
 
     /** {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static void stringToFile(File file, String string) throws IOException {
         stringToFile(file.getAbsolutePath(), string);
     }
@@ -713,7 +713,7 @@
      *             to its potential for collision.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @Deprecated
     public static long checksumCrc32(File file) throws FileNotFoundException, IOException {
         CRC32 checkSummer = new CRC32();
@@ -800,7 +800,7 @@
      * @return if any files were deleted.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static boolean deleteOlderFiles(File dir, int minCount, long minAgeMs) {
         if (minCount < 0 || minAgeMs < 0) {
             throw new IllegalArgumentException("Constraints must be positive or 0");
@@ -909,7 +909,7 @@
     }
 
     /** {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static boolean deleteContents(File dir) {
         File[] files = dir.listFiles();
         boolean success = true;
diff --git a/core/java/android/os/GraphicsEnvironment.java b/core/java/android/os/GraphicsEnvironment.java
index df58a6c..a6b869d 100644
--- a/core/java/android/os/GraphicsEnvironment.java
+++ b/core/java/android/os/GraphicsEnvironment.java
@@ -78,7 +78,7 @@
     private static final String ACTION_ANGLE_FOR_ANDROID_TOAST_MESSAGE =
             "android.app.action.ANGLE_FOR_ANDROID_TOAST_MESSAGE";
     private static final String INTENT_KEY_A4A_TOAST_MESSAGE = "A4A Toast Message";
-    private static final String GAME_DRIVER_WHITELIST_ALL = "*";
+    private static final String GAME_DRIVER_ALLOWLIST_ALL = "*";
     private static final String GAME_DRIVER_SPHAL_LIBRARIES_FILENAME = "sphal_libraries.txt";
     private static final int VULKAN_1_0 = 0x00400000;
     private static final int VULKAN_1_1 = 0x00401000;
@@ -142,19 +142,19 @@
                     + "set to: '" + devOptIn + "'");
         }
 
-        // We only want to use ANGLE if the app is whitelisted or the developer has
+        // We only want to use ANGLE if the app is allowlisted or the developer has
         // explicitly chosen something other than default driver.
-        // The whitelist will be generated by the ANGLE APK at both boot time and
+        // The allowlist will be generated by the ANGLE APK at both boot time and
         // ANGLE update time. It will only include apps mentioned in the rules file.
-        final boolean whitelisted = checkAngleWhitelist(context, coreSettings, packageName);
+        final boolean allowlisted = checkAngleAllowlist(context, coreSettings, packageName);
         final boolean requested = devOptIn.equals(sDriverMap.get(OpenGlDriverChoice.ANGLE));
-        final boolean useAngle = (whitelisted || requested);
+        final boolean useAngle = (allowlisted || requested);
         if (!useAngle) {
             return false;
         }
 
-        if (whitelisted) {
-            Log.v(TAG, "ANGLE whitelist includes " + packageName);
+        if (allowlisted) {
+            Log.v(TAG, "ANGLE allowlist includes " + packageName);
         }
         if (requested) {
             Log.v(TAG, "ANGLE developer option for " + packageName + ": " + devOptIn);
@@ -564,17 +564,17 @@
     }
 
     /**
-     * Pull ANGLE whitelist from GlobalSettings and compare against current package
+     * Pull ANGLE allowlist from GlobalSettings and compare against current package
      */
-    private static boolean checkAngleWhitelist(Context context, Bundle bundle, String packageName) {
+    private static boolean checkAngleAllowlist(Context context, Bundle bundle, String packageName) {
         final ContentResolver contentResolver = context.getContentResolver();
-        final List<String> angleWhitelist =
+        final List<String> angleAllowlist =
                 getGlobalSettingsString(contentResolver, bundle,
-                    Settings.Global.GLOBAL_SETTINGS_ANGLE_WHITELIST);
+                    Settings.Global.GLOBAL_SETTINGS_ANGLE_ALLOWLIST);
 
-        if (DEBUG) Log.v(TAG, "ANGLE whitelist: " + angleWhitelist);
+        if (DEBUG) Log.v(TAG, "ANGLE allowlist: " + angleAllowlist);
 
-        return angleWhitelist.contains(packageName);
+        return angleAllowlist.contains(packageName);
     }
 
     /**
@@ -584,7 +584,7 @@
      * @param bundle
      * @param packageName
      * @return true: ANGLE setup successfully
-     *         false: ANGLE not setup (not on whitelist, ANGLE not present, etc.)
+     *         false: ANGLE not setup (not on allowlist, ANGLE not present, etc.)
      */
     public boolean setupAngle(Context context, Bundle bundle, PackageManager pm,
             String packageName) {
@@ -750,8 +750,8 @@
         // 2. GAME_DRIVER_OPT_OUT_APPS
         // 3. GAME_DRIVER_PRERELEASE_OPT_IN_APPS
         // 4. GAME_DRIVER_OPT_IN_APPS
-        // 5. GAME_DRIVER_BLACKLIST
-        // 6. GAME_DRIVER_WHITELIST
+        // 5. GAME_DRIVER_DENYLIST
+        // 6. GAME_DRIVER_ALLOWLIST
         switch (coreSettings.getInt(Settings.Global.GAME_DRIVER_ALL_APPS, 0)) {
             case GAME_DRIVER_GLOBAL_OPT_IN_OFF:
                 if (DEBUG) Log.v(TAG, "Game Driver is turned off on this device.");
@@ -790,21 +790,21 @@
         final boolean isOptIn =
                 getGlobalSettingsString(null, coreSettings, Settings.Global.GAME_DRIVER_OPT_IN_APPS)
                         .contains(appPackageName);
-        final List<String> whitelist =
-                getGlobalSettingsString(null, coreSettings, Settings.Global.GAME_DRIVER_WHITELIST);
-        if (!isOptIn && whitelist.indexOf(GAME_DRIVER_WHITELIST_ALL) != 0
-                && !whitelist.contains(appPackageName)) {
-            if (DEBUG) Log.v(TAG, "App is not on the whitelist for Game Driver.");
+        final List<String> allowlist =
+                getGlobalSettingsString(null, coreSettings, Settings.Global.GAME_DRIVER_ALLOWLIST);
+        if (!isOptIn && allowlist.indexOf(GAME_DRIVER_ALLOWLIST_ALL) != 0
+                && !allowlist.contains(appPackageName)) {
+            if (DEBUG) Log.v(TAG, "App is not on the allowlist for Game Driver.");
             return null;
         }
 
-        // If the application is not opted-in, then check whether it's on the blacklist,
-        // terminate early if it's on the blacklist and fallback to system driver.
+        // If the application is not opted-in, then check whether it's on the denylist,
+        // terminate early if it's on the denylist and fallback to system driver.
         if (!isOptIn
                 && getGlobalSettingsString(
-                        null, coreSettings, Settings.Global.GAME_DRIVER_BLACKLIST)
+                        null, coreSettings, Settings.Global.GAME_DRIVER_DENYLIST)
                            .contains(appPackageName)) {
-            if (DEBUG) Log.v(TAG, "App is on the blacklist for Game Driver.");
+            if (DEBUG) Log.v(TAG, "App is on the denylist for Game Driver.");
             return null;
         }
 
diff --git a/core/java/android/os/Handler.java b/core/java/android/os/Handler.java
index 24aaa58..d310d6e 100644
--- a/core/java/android/os/Handler.java
+++ b/core/java/android/os/Handler.java
@@ -189,7 +189,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Handler(boolean async) {
         this(null, async);
     }
@@ -297,7 +297,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @NonNull
     public static Handler getMain() {
         if (MAIN_THREAD_HANDLER == null) {
diff --git a/core/java/android/os/HidlMemory.java b/core/java/android/os/HidlMemory.java
index 02d1e0c..26fc6f0 100644
--- a/core/java/android/os/HidlMemory.java
+++ b/core/java/android/os/HidlMemory.java
@@ -20,7 +20,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 
 import java.io.Closeable;
 import java.io.IOException;
@@ -41,7 +40,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public class HidlMemory implements Closeable {
     private final @NonNull String mName;
     private final long mSize;
diff --git a/core/java/android/os/HwBinder.java b/core/java/android/os/HwBinder.java
index 64ab1d7..feed208 100644
--- a/core/java/android/os/HwBinder.java
+++ b/core/java/android/os/HwBinder.java
@@ -17,7 +17,6 @@
 package android.os;
 
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 
 import libcore.util.NativeAllocationRegistry;
@@ -26,7 +25,6 @@
 
 /** @hide */
 @SystemApi
-@TestApi
 public abstract class HwBinder implements IHwBinder {
     private static final String TAG = "HwBinder";
 
@@ -161,7 +159,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     public static void reportSyspropChanged() {
         native_report_sysprop_change();
     }
diff --git a/core/java/android/os/HwBlob.java b/core/java/android/os/HwBlob.java
index 154227b2..a43fbdb 100644
--- a/core/java/android/os/HwBlob.java
+++ b/core/java/android/os/HwBlob.java
@@ -19,7 +19,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 
 import libcore.util.NativeAllocationRegistry;
 
@@ -30,7 +29,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public class HwBlob {
     private static final String TAG = "HwBlob";
 
diff --git a/core/java/android/os/HwParcel.java b/core/java/android/os/HwParcel.java
index 228548a..9fd37d4 100644
--- a/core/java/android/os/HwParcel.java
+++ b/core/java/android/os/HwParcel.java
@@ -20,7 +20,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 
 import dalvik.annotation.optimization.FastNative;
@@ -34,7 +33,6 @@
 
 /** @hide */
 @SystemApi
-@TestApi
 public class HwParcel {
     private static final String TAG = "HwParcel";
 
diff --git a/core/java/android/os/IBinder.java b/core/java/android/os/IBinder.java
index 8a8a6af..010459d 100644
--- a/core/java/android/os/IBinder.java
+++ b/core/java/android/os/IBinder.java
@@ -150,7 +150,7 @@
     int LIKE_TRANSACTION   = ('_'<<24)|('L'<<16)|('I'<<8)|'K';
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     int SYSPROPS_TRANSACTION = ('_'<<24)|('S'<<16)|('P'<<8)|'R';
 
     /**
@@ -170,6 +170,15 @@
     int FLAG_ONEWAY             = 0x00000001;
 
     /**
+     * Flag to {@link #transact}: request binder driver to clear transaction data.
+     *
+     * Be very careful when using this flag in Java, since Java objects read from a Java
+     * Parcel may be non-trivial to clear.
+     * @hide
+     */
+    int FLAG_CLEAR_BUF          = 0x00000020;
+
+    /**
      * @hide
      */
     int FLAG_COLLECT_NOTED_APP_OPS = 0x00000002;
diff --git a/core/java/android/os/IHwBinder.java b/core/java/android/os/IHwBinder.java
index 46fa6ef..249eb3a 100644
--- a/core/java/android/os/IHwBinder.java
+++ b/core/java/android/os/IHwBinder.java
@@ -17,11 +17,9 @@
 package android.os;
 
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 
 /** @hide */
 @SystemApi
-@TestApi
 public interface IHwBinder {
     /**
      * Process a hwbinder transaction.
diff --git a/core/java/android/os/IHwInterface.java b/core/java/android/os/IHwInterface.java
index 0a5a715..f21f6e3 100644
--- a/core/java/android/os/IHwInterface.java
+++ b/core/java/android/os/IHwInterface.java
@@ -17,11 +17,9 @@
 package android.os;
 
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 
 /** @hide */
 @SystemApi
-@TestApi
 public interface IHwInterface {
     /**
      * @return the binder object that corresponds to this interface.
diff --git a/core/java/android/os/INetworkManagementService.aidl b/core/java/android/os/INetworkManagementService.aidl
index 8f8d451..e1d9005 100644
--- a/core/java/android/os/INetworkManagementService.aidl
+++ b/core/java/android/os/INetworkManagementService.aidl
@@ -68,7 +68,7 @@
     /**
      * Clear all IP addresses on the specified interface
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void clearInterfaceAddresses(String iface);
 
     /**
@@ -84,26 +84,26 @@
     /**
      * Set interface IPv6 privacy extensions
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void setInterfaceIpv6PrivacyExtensions(String iface, boolean enable);
 
     /**
      * Disable IPv6 on an interface
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void disableIpv6(String iface);
 
     /**
      * Enable IPv6 on an interface
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void enableIpv6(String iface);
 
     /**
      * Set IPv6 autoconf address generation mode.
      * This is a no-op if an unsupported mode is requested.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void setIPv6AddrGenMode(String iface, int mode);
 
     /**
@@ -117,11 +117,6 @@
     void removeRoute(int netId, in RouteInfo route);
 
     /**
-     * Set the specified MTU size
-     */
-    void setMtu(String iface, int mtu);
-
-    /**
      * Shuts down the service
      */
     void shutdown();
@@ -296,7 +291,7 @@
     /**
      * Return status of bandwidth control module.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean isBandwidthControlEnabled();
 
     /**
@@ -350,28 +345,8 @@
      */
     boolean isNetworkActive();
 
-    /**
-     * Add an interface to a network.
-     */
-    void addInterfaceToNetwork(String iface, int netId);
-
-    /**
-     * Remove an Interface from a network.
-     */
-    void removeInterfaceFromNetwork(String iface, int netId);
-
     void addLegacyRouteForNetId(int netId, in RouteInfo routeInfo, int uid);
 
-    void setDefaultNetId(int netId);
-    void clearDefaultNetId();
-
-    /**
-     * Set permission for a network.
-     * @param permission PERMISSION_NONE to clear permissions.
-     *                   PERMISSION_NETWORK or PERMISSION_SYSTEM to set permission.
-     */
-    void setNetworkPermission(int netId, int permission);
-
     /**
      * Allow UID to call protect().
      */
diff --git a/core/java/android/os/IPowerManager.aidl b/core/java/android/os/IPowerManager.aidl
index 187fd59..d23d2ec 100644
--- a/core/java/android/os/IPowerManager.aidl
+++ b/core/java/android/os/IPowerManager.aidl
@@ -50,7 +50,7 @@
     @UnsupportedAppUsage
     void userActivity(long time, int event, int flags);
     void wakeUp(long time, int reason, String details, String opPackageName);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void goToSleep(long time, int reason, int flags);
     @UnsupportedAppUsage(maxTargetSdk = 28)
     void nap(long time);
diff --git a/core/java/android/os/IncidentManager.java b/core/java/android/os/IncidentManager.java
index 565d31a..a543a2d 100644
--- a/core/java/android/os/IncidentManager.java
+++ b/core/java/android/os/IncidentManager.java
@@ -23,7 +23,6 @@
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
-import android.annotation.TestApi;
 import android.content.Context;
 import android.net.Uri;
 import android.util.Slog;
@@ -45,7 +44,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 @SystemService(Context.INCIDENT_SERVICE)
 public class IncidentManager {
     private static final String TAG = "IncidentManager";
@@ -159,7 +157,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static class PendingReport {
         /**
          * Encoded data.
@@ -277,7 +274,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static class IncidentReport implements Parcelable, Closeable {
         private final long mTimestampNs;
         private final int mPrivacyPolicy;
diff --git a/core/java/android/os/IncidentReportArgs.java b/core/java/android/os/IncidentReportArgs.java
index 7e858e1..73e4914 100644
--- a/core/java/android/os/IncidentReportArgs.java
+++ b/core/java/android/os/IncidentReportArgs.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.util.IntArray;
@@ -30,7 +29,6 @@
  * {@hide}
  */
 @SystemApi
-@TestApi
 public final class IncidentReportArgs implements Parcelable {
 
     private final IntArray mSections = new IntArray();
diff --git a/core/java/android/os/LocaleList.java b/core/java/android/os/LocaleList.java
index ab4bb0b..133288f 100644
--- a/core/java/android/os/LocaleList.java
+++ b/core/java/android/os/LocaleList.java
@@ -25,6 +25,7 @@
 
 import com.android.internal.annotations.GuardedBy;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashSet;
@@ -151,18 +152,18 @@
     /**
      * Creates a new {@link LocaleList}.
      *
+     * If two or more same locales are passed, the repeated locales will be dropped.
      * <p>For empty lists of {@link Locale} items it is better to use {@link #getEmptyLocaleList()},
      * which returns a pre-constructed empty list.</p>
      *
      * @throws NullPointerException if any of the input locales is <code>null</code>.
-     * @throws IllegalArgumentException if any of the input locales repeat.
      */
     public LocaleList(@NonNull Locale... list) {
         if (list.length == 0) {
             mList = sEmptyList;
             mStringRepresentation = "";
         } else {
-            final Locale[] localeList = new Locale[list.length];
+            final ArrayList<Locale> localeList = new ArrayList<>();
             final HashSet<Locale> seenLocales = new HashSet<Locale>();
             final StringBuilder sb = new StringBuilder();
             for (int i = 0; i < list.length; i++) {
@@ -170,10 +171,10 @@
                 if (l == null) {
                     throw new NullPointerException("list[" + i + "] is null");
                 } else if (seenLocales.contains(l)) {
-                    throw new IllegalArgumentException("list[" + i + "] is a repetition");
+                    // Dropping duplicated locale entries.
                 } else {
                     final Locale localeClone = (Locale) l.clone();
-                    localeList[i] = localeClone;
+                    localeList.add(localeClone);
                     sb.append(localeClone.toLanguageTag());
                     if (i < list.length - 1) {
                         sb.append(',');
@@ -181,7 +182,7 @@
                     seenLocales.add(localeClone);
                 }
             }
-            mList = localeList;
+            mList = localeList.toArray(new Locale[localeList.size()]);
             mStringRepresentation = sb.toString();
         }
     }
@@ -545,7 +546,7 @@
      *
      * {@hide}
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static void setDefault(@NonNull @Size(min=1) LocaleList locales, int localeIndex) {
         if (locales == null) {
             throw new NullPointerException("locales is null");
diff --git a/core/java/android/os/MemoryFile.java b/core/java/android/os/MemoryFile.java
index f84f9f05..95337f6 100644
--- a/core/java/android/os/MemoryFile.java
+++ b/core/java/android/os/MemoryFile.java
@@ -41,7 +41,7 @@
     private static String TAG = "MemoryFile";
 
     // Returns 'true' if purged, 'false' otherwise
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static native boolean native_pin(FileDescriptor fd, boolean pin) throws IOException;
     @UnsupportedAppUsage
     private static native int native_get_size(FileDescriptor fd) throws IOException;
diff --git a/core/java/android/os/MessageQueue.java b/core/java/android/os/MessageQueue.java
index 7213b06..87c4f33 100644
--- a/core/java/android/os/MessageQueue.java
+++ b/core/java/android/os/MessageQueue.java
@@ -266,7 +266,7 @@
     }
 
     // Called from native code.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int dispatchEvents(int fd, int events) {
         // Get the file descriptor record and any state that might change.
         final FileDescriptorRecord record;
@@ -635,7 +635,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     boolean hasMessages(Handler h, Runnable r, Object object) {
         if (h == null) {
             return false;
diff --git a/core/java/android/os/NativeHandle.java b/core/java/android/os/NativeHandle.java
index 8d341b6..a26873a 100644
--- a/core/java/android/os/NativeHandle.java
+++ b/core/java/android/os/NativeHandle.java
@@ -20,7 +20,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.system.ErrnoException;
 import android.system.Os;
 
@@ -33,7 +32,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class NativeHandle implements Closeable {
     // whether this object owns mFds
     private boolean mOwn = false;
diff --git a/core/java/android/os/Parcel.java b/core/java/android/os/Parcel.java
index 7b82b1a..cf90174 100644
--- a/core/java/android/os/Parcel.java
+++ b/core/java/android/os/Parcel.java
@@ -277,6 +277,8 @@
     private static final int EX_TRANSACTION_FAILED = -129;
 
     @CriticalNative
+    private static native void nativeMarkSensitive(long nativePtr);
+    @CriticalNative
     private static native int nativeDataSize(long nativePtr);
     @CriticalNative
     private static native int nativeDataAvail(long nativePtr);
@@ -483,14 +485,22 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static native long getGlobalAllocSize();
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static native long getGlobalAllocCount();
 
     /**
+     * Parcel data should be zero'd before realloc'd or deleted.
+     * @hide
+     */
+    public final void markSensitive() {
+        nativeMarkSensitive(mNativePtr);
+    }
+
+    /**
      * Returns the total amount of data contained in the parcel.
      */
     public final int dataSize() {
@@ -642,11 +652,11 @@
      * {@link #dataPosition}.  This is used to validate that the marshalled
      * transaction is intended for the target interface.
      */
-    public final void writeInterfaceToken(String interfaceName) {
+    public final void writeInterfaceToken(@NonNull String interfaceName) {
         nativeWriteInterfaceToken(mNativePtr, interfaceName);
     }
 
-    public final void enforceInterface(String interfaceName) {
+    public final void enforceInterface(@NonNull String interfaceName) {
         nativeEnforceInterface(mNativePtr, interfaceName);
     }
 
@@ -711,7 +721,7 @@
      * {@hide}
      * {@SystemApi}
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final void writeBlob(@Nullable byte[] b) {
         writeBlob(b, 0, (b != null) ? b.length : 0);
     }
@@ -983,7 +993,7 @@
     /**
      * @hide For testing only.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void writeArrayMap(@Nullable ArrayMap<String, Object> val) {
         writeArrayMapInternal(val);
     }
@@ -1022,7 +1032,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void writeArraySet(@Nullable ArraySet<? extends Object> val) {
         final int size = (val != null) ? val.size() : -1;
         writeInt(size);
@@ -2684,7 +2694,7 @@
      * {@hide}
      * {@SystemApi}
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @Nullable
     public final byte[] readBlob() {
         return nativeReadBlob(mNativePtr);
@@ -3594,7 +3604,7 @@
     /**
      * @hide For testing only.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void readArrayMap(@NonNull ArrayMap outVal, @Nullable ClassLoader loader) {
         final int N = readInt();
         if (N < 0) {
diff --git a/core/java/android/os/Parcelable.java b/core/java/android/os/Parcelable.java
index f14f66b..7a624e1 100644
--- a/core/java/android/os/Parcelable.java
+++ b/core/java/android/os/Parcelable.java
@@ -120,7 +120,7 @@
      * @see ParcelableHolder
      * @hide
      */
-    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
+    @SystemApi(client = SystemApi.Client.PRIVILEGED_APPS)
     public static final int PARCELABLE_STABILITY_LOCAL = 0x0000;
     /**
      * Something that is meant to be used between system and vendor.
@@ -128,7 +128,7 @@
      * @see ParcelableHolder
      * @hide
      */
-    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
+    @SystemApi(client = SystemApi.Client.PRIVILEGED_APPS)
     public static final int PARCELABLE_STABILITY_VINTF = 0x0001;
 
     /**
diff --git a/core/java/android/os/ParcelableHolder.java b/core/java/android/os/ParcelableHolder.java
index 181f94b..fb9fa10 100644
--- a/core/java/android/os/ParcelableHolder.java
+++ b/core/java/android/os/ParcelableHolder.java
@@ -18,12 +18,54 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.SystemApi;
 import android.util.MathUtils;
 
 /**
- * Parcelable containing the other Parcelable object.
+ * ParcelableHolder is a Parcelable which can contain another Parcelable.
+ * The main use case of ParcelableHolder is to make a Parcelable extensible.
+ * For example, an AOSP-defined Parcelable <code>AospDefinedParcelable</code>
+ * is expected to be extended by device implementers for their value-add features.
+ * Previously without ParcelableHolder, the device implementers had to
+ * directly modify the Parcelable to add more fields:
+ * <pre> {@code
+ * parcelable AospDefinedParcelable {
+ *   int a;
+ *   String b;
+ *   String x; // added by a device implementer
+ *   int[] y; // added by a device implementer
+ * }}</pre>
+ *
+ * This practice is very error-prone because the fields added by the device implementer
+ * might have a conflict when the Parcelable is revisioned in the next releases of Android.
+ *
+ * Using ParcelableHolder, one can define an extension point in a Parcelable.
+ * <pre> {@code
+ * parcelable AospDefinedParcelable {
+ *   int a;
+ *   String b;
+ *   ParcelableHolder extension;
+ * }}</pre>
+ * Then the device implementers can define their own Parcelable for their extension.
+ *
+ * <pre> {@code
+ * parcelable OemDefinedParcelable {
+ *   String x;
+ *   int[] y;
+ * }}</pre>
+ * Finally, the new Parcelable can be attached to the original Parcelable via
+ * the ParcelableHolder field.
+ *
+ * <pre> {@code
+ * AospDefinedParcelable ap = ...;
+ * OemDefinedParcelable op = new OemDefinedParcelable();
+ * op.x = ...;
+ * op.y = ...;
+ * ap.extension.setParcelable(op);}</pre>
+ *
  * @hide
  */
+@SystemApi
 public final class ParcelableHolder implements Parcelable {
     /**
      * This is set by {@link #setParcelable}.
@@ -80,7 +122,7 @@
      * Write a parcelable into ParcelableHolder, the previous parcelable will be removed.
      * @return {@code false} if the parcelable's stability is more unstable ParcelableHolder.
      */
-    public synchronized boolean setParcelable(@Nullable Parcelable p) {
+    public boolean setParcelable(@Nullable Parcelable p) {
         // a ParcelableHolder can only hold things at its stability or higher
         if (p != null && this.getStability() > p.getStability()) {
             return false;
@@ -99,7 +141,7 @@
      *         the type written by (@link #setParcelable}.
      */
     @Nullable
-    public synchronized <T extends Parcelable> T getParcelable(@NonNull Class<T> clazz) {
+    public <T extends Parcelable> T getParcelable(@NonNull Class<T> clazz) {
         if (mParcel == null) {
             if (!clazz.isInstance(mParcelable)) {
                 return null;
@@ -123,21 +165,26 @@
     /**
      * Read ParcelableHolder from a parcel.
      */
-    public synchronized void readFromParcel(@NonNull Parcel parcel) {
+    public void readFromParcel(@NonNull Parcel parcel) {
         this.mStability = parcel.readInt();
 
         mParcelable = null;
 
+        int dataSize = parcel.readInt();
+        if (dataSize < 0) {
+            throw new IllegalArgumentException("dataSize from parcel is negative");
+        } else if (dataSize == 0) {
+            if (mParcel != null) {
+                mParcel.recycle();
+                mParcel = null;
+            }
+            return;
+        }
         if (mParcel == null) {
             mParcel = Parcel.obtain();
         }
         mParcel.setDataPosition(0);
         mParcel.setDataSize(0);
-
-        int dataSize = parcel.readInt();
-        if (dataSize < 0) {
-            throw new IllegalArgumentException("dataSize from parcel is negative");
-        }
         int dataStartPos = parcel.dataPosition();
 
         mParcel.appendFrom(parcel, dataStartPos, dataSize);
@@ -145,7 +192,7 @@
     }
 
     @Override
-    public synchronized void writeToParcel(@NonNull Parcel parcel, int flags) {
+    public void writeToParcel(@NonNull Parcel parcel, int flags) {
         parcel.writeInt(this.mStability);
 
         if (mParcel != null) {
@@ -154,6 +201,11 @@
             return;
         }
 
+        if (mParcelable == null) {
+            parcel.writeInt(0);
+            return;
+        }
+
         int sizePos = parcel.dataPosition();
         parcel.writeInt(0);
         int dataStartPos = parcel.dataPosition();
@@ -166,7 +218,7 @@
     }
 
     @Override
-    public synchronized int describeContents() {
+    public int describeContents() {
         if (mParcel != null) {
             return mParcel.hasFileDescriptors() ? Parcelable.CONTENTS_FILE_DESCRIPTOR : 0;
         }
diff --git a/core/java/android/os/ParcelableParcel.java b/core/java/android/os/ParcelableParcel.java
index 38d980e..3be630f 100644
--- a/core/java/android/os/ParcelableParcel.java
+++ b/core/java/android/os/ParcelableParcel.java
@@ -27,7 +27,7 @@
     final Parcel mParcel;
     final ClassLoader mClassLoader;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ParcelableParcel(ClassLoader loader) {
         mParcel = Parcel.obtain();
         mClassLoader = loader;
@@ -46,13 +46,13 @@
         mParcel.appendFrom(src, pos, size);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Parcel getParcel() {
         mParcel.setDataPosition(0);
         return mParcel;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ClassLoader getClassLoader() {
         return mClassLoader;
     }
@@ -68,7 +68,7 @@
         dest.appendFrom(mParcel, 0, mParcel.dataSize());
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final Parcelable.ClassLoaderCreator<ParcelableParcel> CREATOR
             = new Parcelable.ClassLoaderCreator<ParcelableParcel>() {
         public ParcelableParcel createFromParcel(Parcel in) {
diff --git a/core/java/android/os/PerformanceCollector.java b/core/java/android/os/PerformanceCollector.java
index 27de48d..e6471ae 100644
--- a/core/java/android/os/PerformanceCollector.java
+++ b/core/java/android/os/PerformanceCollector.java
@@ -364,7 +364,7 @@
      * @param label description of code block between startTiming and
      *        stopTiming, used to label output
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void startTiming(String label) {
         if (mPerfWriter != null)
             mPerfWriter.writeStartTiming(label);
@@ -414,7 +414,7 @@
      *         between calls to startTiming and stopTiming. List of iterations
      *         is keyed by {@link #METRIC_KEY_ITERATIONS iterations}.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Bundle stopTiming(String label) {
         addIteration(label);
         if (mPerfWriter != null)
diff --git a/core/java/android/os/PowerManager.java b/core/java/android/os/PowerManager.java
index f3e3ff9..a0d2f0d 100644
--- a/core/java/android/os/PowerManager.java
+++ b/core/java/android/os/PowerManager.java
@@ -27,7 +27,6 @@
 import android.annotation.SdkConstant;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
-import android.annotation.TestApi;
 import android.app.PropertyInvalidatedCache;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
@@ -1014,7 +1013,7 @@
      * Gets a float screen brightness setting.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public float getBrightnessConstraint(int constraint) {
         try {
             return mService.getBrightnessConstraint(constraint);
@@ -1565,7 +1564,6 @@
      * @see #isPowerSaveMode()
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(anyOf = {
             android.Manifest.permission.DEVICE_POWER,
             android.Manifest.permission.POWER_SAVER
@@ -1610,7 +1608,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(permission.POWER_SAVER)
     public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold) {
         try {
@@ -1670,7 +1667,6 @@
      *  @hide
      */
     @SystemApi
-    @TestApi
     public static final int POWER_SAVE_MODE_TRIGGER_PERCENTAGE = 0;
 
     /**
@@ -1683,7 +1679,6 @@
      *  @hide
      */
     @SystemApi
-    @TestApi
     public static final int POWER_SAVE_MODE_TRIGGER_DYNAMIC = 1;
 
     /** @hide */
@@ -1708,7 +1703,6 @@
      */
     @AutoPowerSaveModeTriggers
     @SystemApi
-    @TestApi
     @RequiresPermission(android.Manifest.permission.POWER_SAVER)
     public int getPowerSaveModeTrigger() {
         try {
@@ -2213,7 +2207,7 @@
      * This broadcast is only sent to registered receivers.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @SdkConstant(SdkConstant.SdkConstantType.BROADCAST_INTENT_ACTION)
     public static final String ACTION_LIGHT_DEVICE_IDLE_MODE_CHANGED
             = "android.os.action.LIGHT_DEVICE_IDLE_MODE_CHANGED";
diff --git a/core/java/android/os/PowerManagerInternal.java b/core/java/android/os/PowerManagerInternal.java
index 653a559..f9e146a 100644
--- a/core/java/android/os/PowerManagerInternal.java
+++ b/core/java/android/os/PowerManagerInternal.java
@@ -17,6 +17,7 @@
 package android.os;
 
 import android.view.Display;
+import android.view.KeyEvent;
 
 import java.util.function.Consumer;
 
@@ -319,4 +320,7 @@
 
     /** Returns information about the last wakeup event. */
     public abstract PowerManager.WakeData getLastWakeup();
+
+    /** Allows power button to intercept a power key button press. */
+    public abstract boolean interceptPowerKeyDown(KeyEvent event);
 }
diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java
index 52dd865..c2c4d62 100644
--- a/core/java/android/os/Process.java
+++ b/core/java/android/os/Process.java
@@ -70,7 +70,7 @@
      * Defines the UID/GID for the log group.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int LOG_UID = 1007;
 
     /**
@@ -83,14 +83,14 @@
      * Defines the UID/GID for the mediaserver process.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int MEDIA_UID = 1013;
 
     /**
      * Defines the UID/GID for the DRM process.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int DRM_UID = 1019;
 
     /**
@@ -103,7 +103,7 @@
      * Defines the UID/GID for the group that controls VPN services.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int VPN_UID = 1016;
 
     /**
@@ -122,7 +122,7 @@
      * Defines the UID/GID for the NFC service process.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int NFC_UID = 1027;
 
     /**
@@ -276,7 +276,7 @@
      * First uid used for fully isolated sandboxed processes (with no permissions of their own)
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @TestApi
     public static final int FIRST_ISOLATED_UID = 99000;
 
@@ -284,7 +284,7 @@
      * Last uid used for fully isolated sandboxed processes (with no permissions of their own)
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @TestApi
     public static final int LAST_ISOLATED_UID = 99999;
 
@@ -724,7 +724,7 @@
      * Returns the identifier of this process' parent.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(trackingBug = 171962076)
     public static final int myPpid() {
         return Os.getppid();
     }
@@ -851,12 +851,11 @@
 
     /**
      * Set the priority of a thread, based on Linux priorities.
-     *
-     * @param tid The identifier of the thread/process to change. It should be
-     * the native thread id but not the managed id of {@link java.lang.Thread}.
+     * 
+     * @param tid The identifier of the thread/process to change.
      * @param priority A Linux priority level, from -20 for highest scheduling
      * priority to 19 for lowest scheduling priority.
-     *
+     * 
      * @throws IllegalArgumentException Throws IllegalArgumentException if
      * <var>tid</var> does not exist.
      * @throws SecurityException Throws SecurityException if your process does
@@ -1165,38 +1164,38 @@
     public static final native int[] getPids(String path, int[] lastArray);
     
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int PROC_TERM_MASK = 0xff;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int PROC_ZERO_TERM = 0;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int PROC_SPACE_TERM = (int)' ';
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int PROC_TAB_TERM = (int)'\t';
     /** @hide */
     public static final int PROC_NEWLINE_TERM = (int) '\n';
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int PROC_COMBINE = 0x100;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int PROC_PARENS = 0x200;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int PROC_QUOTES = 0x400;
     /** @hide */
     public static final int PROC_CHAR = 0x800;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int PROC_OUT_STRING = 0x1000;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int PROC_OUT_LONG = 0x2000;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int PROC_OUT_FLOAT = 0x4000;
 
     /**
diff --git a/core/java/android/os/RecoverySystem.java b/core/java/android/os/RecoverySystem.java
index 8cdcd49..38e1704 100644
--- a/core/java/android/os/RecoverySystem.java
+++ b/core/java/android/os/RecoverySystem.java
@@ -422,7 +422,7 @@
      * {@hide}
      */
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public static boolean verifyPackageCompatibility(File compatibilityFile) throws IOException {
         try (InputStream inputStream = new FileInputStream(compatibilityFile)) {
             return verifyPackageCompatibility(inputStream);
diff --git a/core/java/android/os/RemoteCallback.java b/core/java/android/os/RemoteCallback.java
index 373060f..49f84adf 100644
--- a/core/java/android/os/RemoteCallback.java
+++ b/core/java/android/os/RemoteCallback.java
@@ -19,14 +19,12 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 
 /**
  * @hide
  */
 @SystemApi
-@TestApi
 public final class RemoteCallback implements Parcelable {
 
     public interface OnResultListener {
diff --git a/core/java/android/os/ServiceManager.java b/core/java/android/os/ServiceManager.java
index b654707..71344f9 100644
--- a/core/java/android/os/ServiceManager.java
+++ b/core/java/android/os/ServiceManager.java
@@ -190,7 +190,7 @@
      * @param dumpPriority supported dump priority levels as a bitmask
      * to access this service
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static void addService(String name, IBinder service, boolean allowIsolated,
             int dumpPriority) {
         try {
@@ -235,6 +235,21 @@
     }
 
     /**
+     * Returns the list of declared instances for an interface.
+     *
+     * @return true if the service is declared somewhere (eg. VINTF manifest) and
+     * waitForService should always be able to return the service.
+     */
+    public static String[] getDeclaredInstances(@NonNull String iface) {
+        try {
+            return getIServiceManager().getDeclaredInstances(iface);
+        } catch (RemoteException e) {
+            Log.e(TAG, "error in getDeclaredInstances", e);
+            return null;
+        }
+    }
+
+    /**
      * Returns the specified service from the service manager.
      *
      * If the service is not running, servicemanager will attempt to start it, and this function
diff --git a/core/java/android/os/ServiceManagerNative.java b/core/java/android/os/ServiceManagerNative.java
index 91b56fb..b70b6b5 100644
--- a/core/java/android/os/ServiceManagerNative.java
+++ b/core/java/android/os/ServiceManagerNative.java
@@ -90,6 +90,10 @@
         return mServiceManager.isDeclared(name);
     }
 
+    public String[] getDeclaredInstances(String iface) throws RemoteException {
+        return mServiceManager.getDeclaredInstances(iface);
+    }
+
     public void registerClientCallback(String name, IBinder service, IClientCallback cb)
             throws RemoteException {
         throw new RemoteException();
diff --git a/core/java/android/os/SharedMemory.java b/core/java/android/os/SharedMemory.java
index 7512352..136e3de 100644
--- a/core/java/android/os/SharedMemory.java
+++ b/core/java/android/os/SharedMemory.java
@@ -158,7 +158,7 @@
      *
      * @hide Exposed for native ASharedMemory_dupFromJava()
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(trackingBug = 171971817)
     public int getFd() {
         return mFileDescriptor.getInt$();
     }
diff --git a/core/java/android/os/ShellCommand.java b/core/java/android/os/ShellCommand.java
index 0be3d68..a2173a6 100644
--- a/core/java/android/os/ShellCommand.java
+++ b/core/java/android/os/ShellCommand.java
@@ -19,15 +19,9 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.util.Slog;
 
-import com.android.internal.util.FastPrintWriter;
+import com.android.modules.utils.BasicShellCommandHandler;
 
-import java.io.BufferedInputStream;
 import java.io.FileDescriptor;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PrintWriter;
 
 /**
  * Helper for implementing {@link Binder#onShellCommand Binder.onShellCommand}.
@@ -98,7 +92,7 @@
         return super.handleDefaultCommands(cmd);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public String peekNextArg() {
         return super.peekNextArg();
     }
diff --git a/core/java/android/os/StatFs.java b/core/java/android/os/StatFs.java
index 6d1a116..eb8e717 100644
--- a/core/java/android/os/StatFs.java
+++ b/core/java/android/os/StatFs.java
@@ -26,7 +26,7 @@
  * wrapper for Unix statvfs().
  */
 public class StatFs {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private StructStatVfs mStat;
 
     /**
diff --git a/core/java/android/os/StrictMode.java b/core/java/android/os/StrictMode.java
index 6c5b04a6..730d8c4 100644
--- a/core/java/android/os/StrictMode.java
+++ b/core/java/android/os/StrictMode.java
@@ -2376,7 +2376,7 @@
      * Binder for its current (native) thread-local policy value and synchronize it to libcore's
      * (Java) thread-local policy value.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static void onBinderStrictModePolicyChange(@ThreadPolicyMask int newPolicy) {
         setBlockGuardPolicy(newPolicy);
     }
@@ -2616,7 +2616,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static void incrementExpectedActivityCount(Class klass) {
         if (klass == null) {
             return;
diff --git a/core/java/android/os/SystemClock.java b/core/java/android/os/SystemClock.java
index fd68c2b..b1014af 100644
--- a/core/java/android/os/SystemClock.java
+++ b/core/java/android/os/SystemClock.java
@@ -238,7 +238,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @CriticalNative
     public static native long currentThreadTimeMicro();
 
diff --git a/core/java/android/os/SystemConfigManager.java b/core/java/android/os/SystemConfigManager.java
index 12a1ffa..3f0632b 100644
--- a/core/java/android/os/SystemConfigManager.java
+++ b/core/java/android/os/SystemConfigManager.java
@@ -20,7 +20,6 @@
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
-import android.annotation.TestApi;
 import android.content.Context;
 import android.util.ArraySet;
 import android.util.Log;
@@ -40,7 +39,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 @SystemService(Context.SYSTEM_CONFIG_SERVICE)
 public class SystemConfigManager {
     private static final String TAG = SystemConfigManager.class.getSimpleName();
diff --git a/core/java/android/os/SystemProperties.java b/core/java/android/os/SystemProperties.java
index c5e5cc4..ab74199 100644
--- a/core/java/android/os/SystemProperties.java
+++ b/core/java/android/os/SystemProperties.java
@@ -19,7 +19,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.util.Log;
 import android.util.MutableInt;
@@ -52,7 +51,6 @@
  * {@hide}
  */
 @SystemApi
-@TestApi
 public class SystemProperties {
     private static final String TAG = "SystemProperties";
     private static final boolean TRACK_KEY_ACCESS = false;
@@ -62,7 +60,7 @@
      * uses reflection to read this whenever text is selected (http://b/36095274).
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(trackingBug = 172649311)
     public static final int PROP_NAME_MAX = Integer.MAX_VALUE;
 
     /** @hide */
@@ -146,7 +144,6 @@
      */
     @NonNull
     @SystemApi
-    @TestApi
     public static String get(@NonNull String key) {
         if (TRACK_KEY_ACCESS) onKeyAccess(key);
         return native_get(key);
@@ -163,7 +160,6 @@
      */
     @NonNull
     @SystemApi
-    @TestApi
     public static String get(@NonNull String key, @Nullable String def) {
         if (TRACK_KEY_ACCESS) onKeyAccess(key);
         return native_get(key, def);
@@ -179,7 +175,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static int getInt(@NonNull String key, int def) {
         if (TRACK_KEY_ACCESS) onKeyAccess(key);
         return native_get_int(key, def);
@@ -195,7 +190,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static long getLong(@NonNull String key, long def) {
         if (TRACK_KEY_ACCESS) onKeyAccess(key);
         return native_get_long(key, def);
@@ -216,7 +210,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static boolean getBoolean(@NonNull String key, boolean def) {
         if (TRACK_KEY_ACCESS) onKeyAccess(key);
         return native_get_boolean(key, def);
@@ -263,7 +256,7 @@
      * @param callback The {@link Runnable} that should be removed.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static void removeChangeCallback(@NonNull Runnable callback) {
         synchronized (sChangeCallbacks) {
             if (sChangeCallbacks.contains(callback)) {
diff --git a/core/java/android/os/SystemService.java b/core/java/android/os/SystemService.java
index 5871d2d..9b0ac8f 100644
--- a/core/java/android/os/SystemService.java
+++ b/core/java/android/os/SystemService.java
@@ -66,7 +66,7 @@
     }
 
     /** Request that the init daemon stop a named service. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static void stop(String name) {
         SystemProperties.set("ctl.stop", name);
     }
diff --git a/core/java/android/os/TEST_MAPPING b/core/java/android/os/TEST_MAPPING
new file mode 100644
index 0000000..39c196d
--- /dev/null
+++ b/core/java/android/os/TEST_MAPPING
@@ -0,0 +1,48 @@
+{
+  "presubmit": [
+    {
+      "file_patterns": ["Bugreport[^/]*\\.java"],
+      "name": "BugreportManagerTestCases",
+      "options": [
+        {
+          "exclude-annotation": "androidx.test.filters.LargeTest"
+        }
+      ]
+    },
+    {
+      "file_patterns": ["Bugreport[^/]*\\.java"],
+      "name": "CtsBugreportTestCases",
+      "options": [
+        {
+          "exclude-annotation": "androidx.test.filters.LargeTest"
+        }
+      ]
+    },
+    {
+      "file_patterns": ["Bugreport[^/]*\\.java"],
+      "name": "ShellTests",
+      "options": [
+        {
+          "exclude-annotation": "androidx.test.filters.LargeTest"
+        },
+        {
+          "exclude-annotation": "androidx.test.filters.FlakyTest"
+        }
+      ]
+    }
+  ],
+  "postsubmit": [
+    {
+      "file_patterns": ["Bugreport[^/]*\\.java"],
+      "name": "BugreportManagerTestCases"
+    },
+    {
+      "file_patterns": ["Bugreport[^/]*\\.java"],
+      "name": "CtsBugreportTestCases"
+    },
+    {
+      "file_patterns": ["Bugreport[^/]*\\.java"],
+      "name": "ShellTests"
+    }
+  ]
+}
diff --git a/core/java/android/os/Trace.java b/core/java/android/os/Trace.java
index 58c8efa..9c9e499 100644
--- a/core/java/android/os/Trace.java
+++ b/core/java/android/os/Trace.java
@@ -52,7 +52,7 @@
     /** @hide */
     public static final long TRACE_TAG_INPUT = 1L << 2;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final long TRACE_TAG_VIEW = 1L << 3;
     /** @hide */
     public static final long TRACE_TAG_WEBVIEW = 1L << 4;
diff --git a/core/java/android/os/UpdateLock.java b/core/java/android/os/UpdateLock.java
index 036d095..5aa9401 100644
--- a/core/java/android/os/UpdateLock.java
+++ b/core/java/android/os/UpdateLock.java
@@ -51,7 +51,7 @@
      * locker releases theirs.  The broadcast is sticky but is sent only to
      * registered receivers.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String UPDATE_LOCK_CHANGED = "android.os.UpdateLock.UPDATE_LOCK_CHANGED";
 
     /**
@@ -60,7 +60,7 @@
      * update operation.  True means that updates are okay right now; false indicates
      * that perhaps later would be a better time.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String NOW_IS_CONVENIENT = "nowisconvenient";
 
     /**
@@ -69,7 +69,7 @@
      * in the System.currentTimeMillis() time base, which may be non-monotonic especially
      * around reboots.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String TIMESTAMP = "timestamp";
 
     /**
@@ -94,7 +94,7 @@
     /**
      * Is this lock currently held?
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isHeld() {
         synchronized (mToken) {
             return mHeld;
@@ -104,7 +104,7 @@
     /**
      * Acquire an update lock.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void acquire() {
         if (DEBUG) {
             Log.v(TAG, "acquire() : " + this, new RuntimeException("here"));
@@ -131,7 +131,7 @@
     /**
      * Release this update lock.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void release() {
         if (DEBUG) Log.v(TAG, "release() : " + this, new RuntimeException("here"));
         checkService();
diff --git a/core/java/android/os/UserHandle.java b/core/java/android/os/UserHandle.java
index b92fb47..bef876f9 100644
--- a/core/java/android/os/UserHandle.java
+++ b/core/java/android/os/UserHandle.java
@@ -44,7 +44,6 @@
 
     /** @hide A user handle to indicate all users on the device */
     @SystemApi
-    @TestApi
     public static final @NonNull UserHandle ALL = new UserHandle(USER_ALL);
 
     /** @hide A user id to indicate the currently active user */
@@ -53,7 +52,6 @@
 
     /** @hide A user handle to indicate the current user of the device */
     @SystemApi
-    @TestApi
     public static final @NonNull UserHandle CURRENT = new UserHandle(USER_CURRENT);
 
     /** @hide A user id to indicate that we would like to send to the current
@@ -99,12 +97,11 @@
     public static final @UserIdInt int USER_SYSTEM = 0;
 
     /** @hide A user serial constant to indicate the "system" user of the device */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int USER_SERIAL_SYSTEM = 0;
 
     /** @hide A user handle to indicate the "system" user of the device */
     @SystemApi
-    @TestApi
     public static final @NonNull UserHandle SYSTEM = new UserHandle(USER_SYSTEM);
 
     /**
@@ -136,22 +133,22 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int ERR_GID = -1;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int AID_ROOT = android.os.Process.ROOT_UID;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int AID_APP_START = android.os.Process.FIRST_APPLICATION_UID;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int AID_APP_END = android.os.Process.LAST_APPLICATION_UID;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int AID_SHARED_GID_START = android.os.Process.FIRST_SHARED_APPLICATION_GID;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int AID_CACHE_GID_START = android.os.Process.FIRST_APPLICATION_CACHE_GID;
 
     /** The userId represented by this UserHandle. */
@@ -257,7 +254,6 @@
     }
 
     /** @hide */
-    @TestApi
     @SystemApi
     public static UserHandle of(@UserIdInt int userId) {
         if (userId == USER_SYSTEM) {
@@ -302,7 +298,6 @@
      * Returns the app id (or base uid) for a given uid, stripping out the user id from it.
      * @hide
      */
-    @TestApi
     @SystemApi
     public static @AppIdInt int getAppId(int uid) {
         return uid % PER_USER_RANGE;
@@ -460,7 +455,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static @UserIdInt int myUserId() {
         return getUserId(Process.myUid());
     }
@@ -499,7 +493,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public @UserIdInt int getIdentifier() {
         return mHandle;
     }
diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java
index 5fd37c8..67d5f5f 100644
--- a/core/java/android/os/UserManager.java
+++ b/core/java/android/os/UserManager.java
@@ -43,7 +43,6 @@
 import android.content.IntentSender;
 import android.content.pm.UserInfo;
 import android.content.pm.UserInfo.UserInfoFlag;
-import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
@@ -1021,7 +1020,7 @@
      * @see #getUserRestrictions()
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String DISALLOW_RECORD_AUDIO = "no_record_audio";
 
     /**
@@ -1408,8 +1407,7 @@
      *
      * @hide
      */
-    @SystemApi
-    @TestApi // To allow seeing it from CTS.
+    @SystemApi // To allow seeing it from CTS.
     public static final String ACTION_USER_RESTRICTIONS_CHANGED =
             "android.os.action.USER_RESTRICTIONS_CHANGED";
 
@@ -1664,7 +1662,7 @@
      * @hide
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean canSwitchUsers() {
         boolean allowUserSwitchingWhenSystemUserLocked = Settings.Global.getInt(
                 mContext.getContentResolver(),
@@ -2026,7 +2024,7 @@
      * @return whether user is a guest user.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @RequiresPermission(anyOf = {Manifest.permission.MANAGE_USERS,
             Manifest.permission.CREATE_USERS})
     public boolean isGuestUser(@UserIdInt int userId) {
@@ -2357,7 +2355,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public long getUserStartRealtime() {
         try {
             return mService.getUserStartRealtime();
@@ -2372,7 +2370,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public long getUserUnlockRealtime() {
         try {
             return mService.getUserUnlockRealtime();
@@ -3174,28 +3172,55 @@
     }
 
     /**
-     * Returns information for all users on this device, including ones marked for deletion.
-     * To retrieve only users that are alive, use {@link #getUsers(boolean)}.
+     * Returns information for all fully-created users on this device, including ones marked for
+     * deletion.
      *
-     * @return the list of users that exist on the device.
+     * <p>To retrieve only users that are not marked for deletion, use {@link #getAliveUsers()}.
+     *
+     * <p>To retrieve *all* users (including partial and pre-created users), use
+     * {@link #getUsers(boolean, boolean, boolean)) getUsers(false, false, false)}.
+     *
+     * <p>To retrieve a more specific list of users, use
+     * {@link #getUsers(boolean, boolean, boolean)}.
+     *
+     * @return the list of users that were created.
+     *
      * @hide
      */
     @UnsupportedAppUsage
     @RequiresPermission(android.Manifest.permission.MANAGE_USERS)
     public List<UserInfo> getUsers() {
-        return getUsers(/* excludeDying= */ false);
+        return getUsers(/*excludePartial= */ true, /* excludeDying= */ false,
+                /* excludePreCreated= */ true);
     }
 
     /**
-     * Returns information for all users on this device. Requires
-     * {@link android.Manifest.permission#MANAGE_USERS} permission.
+     * Returns information for all "usable" users on this device (i.e, it excludes users that are
+     * marked for deletion, pre-created users, etc...).
      *
-     * @param excludeDying specify if the list should exclude users being
-     *            removed.
+     * <p>To retrieve all fully-created users, use {@link #getUsers()}.
+     *
+     * <p>To retrieve a more specific list of users, use
+     * {@link #getUsers(boolean, boolean, boolean)}.
+     *
      * @return the list of users that were created.
      * @hide
      */
+    @RequiresPermission(android.Manifest.permission.MANAGE_USERS)
+    public @NonNull List<UserInfo> getAliveUsers() {
+        return getUsers(/*excludePartial= */ true, /* excludeDying= */ true,
+                /* excludePreCreated= */ true);
+    }
+
+    /**
+     * @deprecated use {@link #getAliveUsers()} for {@code getUsers(true)}, or
+     * {@link #getUsers()} for @code getUsers(false)}.
+     *
+     * @hide
+     */
+    @Deprecated
     @UnsupportedAppUsage
+    @RequiresPermission(android.Manifest.permission.MANAGE_USERS)
     public @NonNull List<UserInfo> getUsers(boolean excludeDying) {
         return getUsers(/*excludePartial= */ true, excludeDying,
                 /* excludePreCreated= */ true);
@@ -4134,7 +4159,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static boolean isDeviceInDemoMode(Context context) {
         return Settings.Global.getInt(context.getContentResolver(),
                 Settings.Global.DEVICE_DEMO_MODE, 0) > 0;
diff --git a/core/java/android/os/VibrationEffect.java b/core/java/android/os/VibrationEffect.java
index 0625457..769a34e 100644
--- a/core/java/android/os/VibrationEffect.java
+++ b/core/java/android/os/VibrationEffect.java
@@ -82,7 +82,7 @@
      * @see #get(int)
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @TestApi
     public static final int EFFECT_THUD = Effect.THUD;
 
@@ -91,7 +91,7 @@
      * @see #get(int)
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @TestApi
     public static final int EFFECT_POP = Effect.POP;
 
@@ -132,7 +132,7 @@
      * @see #get(Uri, Context)
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @TestApi
     public static final int[] RINGTONES = {
         Effect.RINGTONE_1,
@@ -518,7 +518,7 @@
             out.writeInt(mAmplitude);
         }
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final @android.annotation.NonNull Parcelable.Creator<OneShot> CREATOR =
             new Parcelable.Creator<OneShot>() {
                 @Override
@@ -1083,8 +1083,7 @@
          *
          * @param primitiveId The primitive to add
          * @param scale The scale to apply to the intensity of the primitive.
-         * @param delay The amount of time, in milliseconds, to wait between playing the prior
-         *              primitive and this one
+         * @param delay The amount of time in milliseconds to wait before playing this primitive
          * @return The {@link Composition} object to enable adding multiple primitives in one chain.
          */
         @NonNull
diff --git a/core/java/android/os/Vibrator.java b/core/java/android/os/Vibrator.java
index 86d009e..097b672 100644
--- a/core/java/android/os/Vibrator.java
+++ b/core/java/android/os/Vibrator.java
@@ -23,7 +23,6 @@
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
-import android.annotation.TestApi;
 import android.app.ActivityThread;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
@@ -453,7 +452,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE)
     public boolean isVibrating() {
         return false;
@@ -467,7 +465,6 @@
     * @hide
     */
     @SystemApi
-    @TestApi
     public interface OnVibratorStateChangedListener  {
         /**
          * Called when the vibrator state has changed.
@@ -486,7 +483,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE)
     public void addVibratorStateListener(@NonNull OnVibratorStateChangedListener listener) {
     }
@@ -500,7 +496,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE)
     public void addVibratorStateListener(
             @NonNull @CallbackExecutor Executor executor,
@@ -515,7 +510,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE)
     public void removeVibratorStateListener(@NonNull OnVibratorStateChangedListener listener) {
     }
diff --git a/core/java/android/os/WorkSource.java b/core/java/android/os/WorkSource.java
index a1b4dc3..e0927eb 100644
--- a/core/java/android/os/WorkSource.java
+++ b/core/java/android/os/WorkSource.java
@@ -98,7 +98,6 @@
      * @param uid the uid performing the work
      * @hide
      */
-    @TestApi
     @SystemApi
     public WorkSource(int uid) {
         mNum = 1;
@@ -152,7 +151,6 @@
      * Returns the number of uids in this work source.
      * @hide
      */
-    @TestApi
     @SystemApi
     public int size() {
         return mNum;
@@ -173,7 +171,6 @@
      * If {@code index} < 0 or {@code index} >= {@link #size() N}, then the behavior is undefined.
      * @hide
      */
-    @TestApi
     @SystemApi
     public int getUid(int index) {
         return mUids[index];
@@ -209,7 +206,6 @@
      * If {@code index} < 0 or {@code index} >= {@link #size() N}, then the behavior is undefined.
      * @hide
      */
-    @TestApi
     @SystemApi
     @Nullable
     public String getPackageName(int index) {
@@ -455,7 +451,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @NonNull
     public WorkSource withoutNames() {
         final WorkSource copy = new WorkSource(this);
@@ -582,7 +577,6 @@
      * @hide for internal use only.
      */
     @SystemApi
-    @TestApi
     public boolean isEmpty() {
         return mNum == 0 && (mChains == null || mChains.isEmpty());
     }
diff --git a/core/java/android/os/ZygoteProcess.java b/core/java/android/os/ZygoteProcess.java
index 77e724b..9e332e9 100644
--- a/core/java/android/os/ZygoteProcess.java
+++ b/core/java/android/os/ZygoteProcess.java
@@ -922,13 +922,13 @@
     }
 
     /**
-     * Push hidden API denylisting exemptions into the zygote process(es).
+     * Push hidden API deny-listing exemptions into the zygote process(es).
      *
      * <p>The list of exemptions will take affect for all new processes forked from the zygote after
      * this call.
      *
      * @param exemptions List of hidden API exemption prefixes. Any matching members are treated as
-     *        allowlisted/public APIs (i.e. allowed, no logging of usage).
+     *        allowed/public APIs (i.e. allowed, no logging of usage).
      */
     public boolean setApiDenylistExemptions(List<String> exemptions) {
         synchronized (mLock) {
diff --git a/core/java/android/os/health/HealthStatsParceler.java b/core/java/android/os/health/HealthStatsParceler.java
index f28a974..eb864a4 100644
--- a/core/java/android/os/health/HealthStatsParceler.java
+++ b/core/java/android/os/health/HealthStatsParceler.java
@@ -18,6 +18,7 @@
 
 import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -38,7 +39,7 @@
     private HealthStatsWriter mWriter;
     private HealthStats mHealthStats;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final @android.annotation.NonNull Parcelable.Creator<HealthStatsParceler> CREATOR
             = new Parcelable.Creator<HealthStatsParceler>() {
         public HealthStatsParceler createFromParcel(Parcel in) {
diff --git a/core/java/android/os/health/SystemHealthManager.java b/core/java/android/os/health/SystemHealthManager.java
index 6e259ea..8181911 100644
--- a/core/java/android/os/health/SystemHealthManager.java
+++ b/core/java/android/os/health/SystemHealthManager.java
@@ -52,7 +52,7 @@
      * Construct a new SystemHealthManager object.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public SystemHealthManager() {
         this(IBatteryStats.Stub.asInterface(ServiceManager.getService(BatteryStats.SERVICE_NAME)));
     }
diff --git a/core/java/android/os/image/DynamicSystemClient.java b/core/java/android/os/image/DynamicSystemClient.java
index 50d8d80..58268e2 100644
--- a/core/java/android/os/image/DynamicSystemClient.java
+++ b/core/java/android/os/image/DynamicSystemClient.java
@@ -22,7 +22,6 @@
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
@@ -68,7 +67,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public class DynamicSystemClient {
     /** @hide */
     @IntDef(prefix = { "STATUS_" }, value = {
@@ -286,7 +284,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public DynamicSystemClient(@NonNull Context context) {
         mContext = context;
         mConnection = new DynSystemServiceConnection();
@@ -322,7 +319,6 @@
      */
     @RequiresPermission(android.Manifest.permission.INSTALL_DYNAMIC_SYSTEM)
     @SystemApi
-    @TestApi
     public void bind() {
         if (!featureFlagEnabled()) {
             Slog.w(TAG, FeatureFlagUtils.DYNAMIC_SYSTEM + " not enabled; bind() aborted.");
@@ -345,7 +341,6 @@
      */
     @RequiresPermission(android.Manifest.permission.INSTALL_DYNAMIC_SYSTEM)
     @SystemApi
-    @TestApi
     public void unbind() {
         if (!mBound) {
             return;
@@ -381,7 +376,6 @@
      */
     @RequiresPermission(android.Manifest.permission.INSTALL_DYNAMIC_SYSTEM)
     @SystemApi
-    @TestApi
     public void start(@NonNull Uri systemUrl, @BytesLong long systemSize) {
         start(systemUrl, systemSize, 0 /* Use the default userdata size */);
     }
diff --git a/core/java/android/os/storage/StorageEventListener.java b/core/java/android/os/storage/StorageEventListener.java
index 9fd9e4e..694ff19 100644
--- a/core/java/android/os/storage/StorageEventListener.java
+++ b/core/java/android/os/storage/StorageEventListener.java
@@ -17,6 +17,7 @@
 package android.os.storage;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 /**
  * Used for receiving notifications from the StorageManager
@@ -47,23 +48,23 @@
     public void onStorageStateChanged(String path, String oldState, String newState) {
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onVolumeStateChanged(VolumeInfo vol, int oldState, int newState) {
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onVolumeRecordChanged(VolumeRecord rec) {
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onVolumeForgotten(String fsUuid) {
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onDiskScanned(DiskInfo disk, int volumeCount) {
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onDiskDestroyed(DiskInfo disk) {
     }
 }
diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java
index 0abf8ae3..648d934 100644
--- a/core/java/android/os/storage/StorageManager.java
+++ b/core/java/android/os/storage/StorageManager.java
@@ -43,7 +43,6 @@
 import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
-import android.annotation.TestApi;
 import android.annotation.WorkerThread;
 import android.app.Activity;
 import android.app.ActivityThread;
@@ -61,6 +60,7 @@
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.Binder;
+import android.os.Build;
 import android.os.Environment;
 import android.os.FileUtils;
 import android.os.Handler;
@@ -294,7 +294,7 @@
     public static final int FSTRIM_FLAG_DEEP = IVold.FSTRIM_FLAG_DEEP_TRIM;
 
     /** @hide The volume is not encrypted. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int ENCRYPTION_STATE_NONE =
             IVold.ENCRYPTION_STATE_NONE;
 
@@ -634,7 +634,7 @@
      * @hide
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void enableUsbMassStorage() {
     }
 
@@ -644,7 +644,7 @@
      * @hide
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void disableUsbMassStorage() {
     }
 
@@ -655,7 +655,7 @@
      * @hide
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isUsbMassStorageConnected() {
         return false;
     }
@@ -811,7 +811,7 @@
     }
 
     /** {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public @Nullable VolumeInfo findVolumeById(String id) {
         Preconditions.checkNotNull(id);
         // TODO; go directly to service to make this faster
@@ -1032,7 +1032,7 @@
     }
 
     /** {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void format(String volId) {
         try {
             mStorageManager.format(volId);
@@ -1074,7 +1074,7 @@
     }
 
     /** {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void partitionPublic(String diskId) {
         try {
             mStorageManager.partitionPublic(diskId);
@@ -1236,7 +1236,7 @@
     }
 
     /** {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static @Nullable StorageVolume getStorageVolume(StorageVolume[] volumes, File file) {
         if (file == null) {
             return null;
@@ -1484,7 +1484,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public long getStorageFullBytes(File path) {
         return Settings.Global.getLong(mResolver, Settings.Global.SYS_STORAGE_FULL_THRESHOLD_BYTES,
                 DEFAULT_FULL_THRESHOLD_BYTES);
@@ -1601,7 +1601,7 @@
      * @return true for file encrypted. (Implies isEncrypted() == true)
      *         false not encrypted or block encrypted
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static boolean isFileEncryptedNativeOnly() {
         if (!isEncrypted()) {
             return false;
@@ -1707,7 +1707,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static boolean hasIsolatedStorage() {
         // Prefer to use snapshot for current boot when available
         return SystemProperties.getBoolean(PROP_ISOLATED_STORAGE_SNAPSHOT,
@@ -2222,7 +2221,7 @@
     /** @hide */
     @SystemApi
     @WorkerThread
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public long getAllocatableBytes(@NonNull UUID storageUuid,
             @RequiresPermission @AllocateFlags int flags) throws IOException {
         try {
@@ -2271,7 +2270,7 @@
     /** @hide */
     @SystemApi
     @WorkerThread
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public void allocateBytes(@NonNull UUID storageUuid, @BytesLong long bytes,
             @RequiresPermission @AllocateFlags int flags) throws IOException {
         try {
@@ -2321,7 +2320,7 @@
     /** @hide */
     @SystemApi
     @WorkerThread
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public void allocateBytes(FileDescriptor fd, @BytesLong long bytes,
             @RequiresPermission @AllocateFlags int flags) throws IOException {
         final File file = ParcelFileDescriptor.getFile(fd);
@@ -2684,10 +2683,10 @@
 
     /// Consts to match the password types in cryptfs.h
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int CRYPT_TYPE_PASSWORD = IVold.PASSWORD_TYPE_PASSWORD;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int CRYPT_TYPE_DEFAULT = IVold.PASSWORD_TYPE_DEFAULT;
     /** @hide */
     public static final int CRYPT_TYPE_PATTERN = IVold.PASSWORD_TYPE_PATTERN;
diff --git a/core/java/android/os/storage/StorageVolume.java b/core/java/android/os/storage/StorageVolume.java
index a63b82e..a34410f 100644
--- a/core/java/android/os/storage/StorageVolume.java
+++ b/core/java/android/os/storage/StorageVolume.java
@@ -327,7 +327,7 @@
      * parse or UUID is unknown.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getFatVolumeId() {
         if (mFsUuid == null || mFsUuid.length() != 9) {
             return -1;
diff --git a/core/java/android/os/storage/VolumeInfo.java b/core/java/android/os/storage/VolumeInfo.java
index d7aaa4d..3edc154 100644
--- a/core/java/android/os/storage/VolumeInfo.java
+++ b/core/java/android/os/storage/VolumeInfo.java
@@ -23,6 +23,7 @@
 import android.content.Intent;
 import android.content.res.Resources;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Environment;
 import android.os.IVold;
 import android.os.Parcel;
@@ -179,7 +180,7 @@
         this.partGuid = partGuid;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public VolumeInfo(Parcel parcel) {
         id = parcel.readString8();
         type = parcel.readInt();
@@ -199,6 +200,21 @@
         internalPath = parcel.readString8();
     }
 
+    public VolumeInfo(VolumeInfo volumeInfo) {
+        this.id = volumeInfo.id;
+        this.type = volumeInfo.type;
+        this.disk = volumeInfo.disk;
+        this.partGuid = volumeInfo.partGuid;
+        this.mountFlags = volumeInfo.mountFlags;
+        this.mountUserId = volumeInfo.mountUserId;
+        this.state = volumeInfo.state;
+        this.fsType = volumeInfo.fsType;
+        this.fsUuid = volumeInfo.fsUuid;
+        this.fsLabel = volumeInfo.fsLabel;
+        this.path = volumeInfo.path;
+        this.internalPath = volumeInfo.internalPath;
+    }
+
     @UnsupportedAppUsage
     public static @NonNull String getEnvironmentForState(int state) {
         final String envState = sStateToEnvironment.get(state);
@@ -312,7 +328,7 @@
      * Returns {@code true} if this volume is the primary emulated volume for {@code userId},
      * {@code false} otherwise.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isPrimaryEmulatedForUser(int userId) {
         return id.equals(ID_EMULATED_INTERNAL + ";" + userId);
     }
@@ -321,7 +337,7 @@
         return isVisibleForUser(userId);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isVisibleForWrite(int userId) {
         return isVisibleForUser(userId);
     }
@@ -331,7 +347,7 @@
         return (path != null) ? new File(path) : null;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public File getInternalPath() {
         return (internalPath != null) ? new File(internalPath) : null;
     }
@@ -533,7 +549,7 @@
         return id.hashCode();
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final @android.annotation.NonNull Creator<VolumeInfo> CREATOR = new Creator<VolumeInfo>() {
         @Override
         public VolumeInfo createFromParcel(Parcel in) {
diff --git a/core/java/android/os/storage/VolumeRecord.java b/core/java/android/os/storage/VolumeRecord.java
index 60df981..29230fe 100644
--- a/core/java/android/os/storage/VolumeRecord.java
+++ b/core/java/android/os/storage/VolumeRecord.java
@@ -18,6 +18,7 @@
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
+import android.os.Build;
 import android.os.Environment;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -59,7 +60,7 @@
         this.fsUuid = Preconditions.checkNotNull(fsUuid);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public VolumeRecord(Parcel parcel) {
         type = parcel.readInt();
         fsUuid = parcel.readString();
@@ -162,7 +163,7 @@
         return fsUuid.hashCode();
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final @android.annotation.NonNull Creator<VolumeRecord> CREATOR = new Creator<VolumeRecord>() {
         @Override
         public VolumeRecord createFromParcel(Parcel in) {
diff --git a/core/java/android/os/strictmode/UntaggedSocketViolation.java b/core/java/android/os/strictmode/UntaggedSocketViolation.java
index 3b1ef25..c34d6e8 100644
--- a/core/java/android/os/strictmode/UntaggedSocketViolation.java
+++ b/core/java/android/os/strictmode/UntaggedSocketViolation.java
@@ -18,7 +18,7 @@
 public final class UntaggedSocketViolation extends Violation {
     /** @hide */
     public UntaggedSocketViolation() {
-        super("Untagged socket detected; use TrafficStats.setThreadSocketTag() to "
+        super("Untagged socket detected; use TrafficStats.setTrafficStatsTag() to "
                 + "track all network usage");
     }
 }
diff --git a/core/java/android/permission/PermissionControllerManager.java b/core/java/android/permission/PermissionControllerManager.java
index dea932d..e6a55f6 100644
--- a/core/java/android/permission/PermissionControllerManager.java
+++ b/core/java/android/permission/PermissionControllerManager.java
@@ -77,7 +77,6 @@
  *
  * @hide
  */
-@TestApi
 @SystemApi
 @SystemService(Context.PERMISSION_CONTROLLER_SERVICE)
 public final class PermissionControllerManager {
diff --git a/core/java/android/permission/PermissionManager.java b/core/java/android/permission/PermissionManager.java
index b1107a1..8c68be7 100644
--- a/core/java/android/permission/PermissionManager.java
+++ b/core/java/android/permission/PermissionManager.java
@@ -24,7 +24,6 @@
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
-import android.annotation.TestApi;
 import android.app.ActivityManager;
 import android.app.ActivityThread;
 import android.app.IActivityManager;
@@ -56,7 +55,6 @@
  *
  * @hide
  */
-@TestApi
 @SystemApi
 @SystemService(Context.PERMISSION_SERVICE)
 public final class PermissionManager {
@@ -114,7 +112,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     @RequiresPermission(anyOf = {
             Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY,
@@ -135,7 +132,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     @RequiresPermission(anyOf = {
             Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY,
diff --git a/core/java/android/permission/Permissions.md b/core/java/android/permission/Permissions.md
index 1ef3ad2..2da1193 100644
--- a/core/java/android/permission/Permissions.md
+++ b/core/java/android/permission/Permissions.md
@@ -847,7 +847,7 @@
 
 @Test
 fun onlySomeAppsAreAllowedToHavePermissionGranted() {
-    assertThat(whitelistedPkgs).containsAllIn(
+    assertThat(whitelistedPkgs).containsAtLeastElementsIn(
             context.packageManager.getInstalledPackages(MATCH_ALL)
                     .filter { pkg ->
                         context.checkPermission(android.Manifest.permission.MY_PRIVILEGED_PERMISSION, -1,
diff --git a/core/java/android/permission/RuntimePermissionPresentationInfo.java b/core/java/android/permission/RuntimePermissionPresentationInfo.java
index d696fea..4fce14c 100644
--- a/core/java/android/permission/RuntimePermissionPresentationInfo.java
+++ b/core/java/android/permission/RuntimePermissionPresentationInfo.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -33,7 +32,6 @@
  *
  * @hide
  */
-@TestApi
 @SystemApi
 public final class RuntimePermissionPresentationInfo implements Parcelable {
     private static final int FLAG_GRANTED = 1 << 0;
diff --git a/core/java/android/preference/PreferenceActivity.java b/core/java/android/preference/PreferenceActivity.java
index ae4a626..53b1dab 100644
--- a/core/java/android/preference/PreferenceActivity.java
+++ b/core/java/android/preference/PreferenceActivity.java
@@ -31,6 +31,7 @@
 import android.content.res.Resources;
 import android.content.res.TypedArray;
 import android.content.res.XmlResourceParser;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
@@ -728,7 +729,7 @@
      * Returns the Header list
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public List<Header> getHeaders() {
         return mHeaders;
     }
diff --git a/core/java/android/preference/PreferenceFragment.java b/core/java/android/preference/PreferenceFragment.java
index 3f6e505..22399f5 100644
--- a/core/java/android/preference/PreferenceFragment.java
+++ b/core/java/android/preference/PreferenceFragment.java
@@ -24,6 +24,7 @@
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.content.res.TypedArray;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
@@ -103,7 +104,7 @@
 
     private static final String PREFERENCES_TAG = "android:preferences";
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private PreferenceManager mPreferenceManager;
     private ListView mList;
     private boolean mHavePrefs;
diff --git a/core/java/android/preference/PreferenceScreen.java b/core/java/android/preference/PreferenceScreen.java
index 01fe2f3..6b813b0 100644
--- a/core/java/android/preference/PreferenceScreen.java
+++ b/core/java/android/preference/PreferenceScreen.java
@@ -22,6 +22,7 @@
 import android.content.DialogInterface;
 import android.content.res.TypedArray;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -102,7 +103,7 @@
     
     private Dialog mDialog;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private ListView mListView;
 
     private int mLayoutResId = com.android.internal.R.layout.preference_list_fragment;
diff --git a/core/java/android/preference/SeekBarPreference.java b/core/java/android/preference/SeekBarPreference.java
index a2852bc..e31165e 100644
--- a/core/java/android/preference/SeekBarPreference.java
+++ b/core/java/android/preference/SeekBarPreference.java
@@ -19,6 +19,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.res.TypedArray;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.util.AttributeSet;
@@ -73,7 +74,7 @@
         this(context, attrs, com.android.internal.R.attr.seekBarPreferenceStyle);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public SeekBarPreference(Context context) {
         this(context, null);
     }
diff --git a/core/java/android/preference/SwitchPreference.java b/core/java/android/preference/SwitchPreference.java
index baa023e..57fefda 100644
--- a/core/java/android/preference/SwitchPreference.java
+++ b/core/java/android/preference/SwitchPreference.java
@@ -20,6 +20,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.res.TypedArray;
+import android.os.Build;
 import android.util.AttributeSet;
 import android.view.View;
 import android.widget.Checkable;
@@ -45,7 +46,7 @@
  */
 @Deprecated
 public class SwitchPreference extends TwoStatePreference {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final Listener mListener = new Listener();
 
     // Switch text for on and off states
diff --git a/core/java/android/provider/BrowserContract.java b/core/java/android/provider/BrowserContract.java
index 5083b8b2..7d77d37 100644
--- a/core/java/android/provider/BrowserContract.java
+++ b/core/java/android/provider/BrowserContract.java
@@ -27,6 +27,7 @@
 import android.database.Cursor;
 import android.graphics.BitmapFactory;
 import android.net.Uri;
+import android.os.Build;
 import android.os.RemoteException;
 import android.util.Pair;
 
@@ -47,7 +48,7 @@
     public static final String AUTHORITY = "com.android.browser";
 
     /** A content:// style uri to the authority for the browser provider */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final Uri AUTHORITY_URI = Uri.parse("content://" + AUTHORITY);
 
     /**
@@ -303,7 +304,7 @@
          * The content:// style URI for the default folder
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final Uri CONTENT_URI_DEFAULT_FOLDER =
                 Uri.withAppendedPath(CONTENT_URI, "folder");
 
@@ -324,7 +325,7 @@
          * @param folderId the ID of the folder to point to
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final Uri buildFolderUri(long folderId) {
             return ContentUris.withAppendedId(CONTENT_URI_DEFAULT_FOLDER, folderId);
         }
@@ -412,7 +413,7 @@
         /**
          * Directory under {@link Bookmarks#CONTENT_URI}
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final Uri CONTENT_URI =
                 AUTHORITY_URI.buildUpon().appendPath("accounts").build();
 
@@ -450,7 +451,7 @@
         /**
          * The content:// style URI for this table
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final Uri CONTENT_URI = Uri.withAppendedPath(AUTHORITY_URI, "history");
 
         /**
@@ -580,7 +581,7 @@
         /**
          * The content:// style URI for this table
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final Uri CONTENT_URI = Uri.withAppendedPath(AUTHORITY_URI, "images");
 
         /**
@@ -681,7 +682,7 @@
         /**
          * The content:// style URI for this table
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final Uri CONTENT_URI = Uri.withAppendedPath(AUTHORITY_URI, "combined");
 
         /**
diff --git a/core/java/android/provider/CalendarContract.java b/core/java/android/provider/CalendarContract.java
index e1aa21e..6ed32d9 100644
--- a/core/java/android/provider/CalendarContract.java
+++ b/core/java/android/provider/CalendarContract.java
@@ -38,6 +38,7 @@
 import android.database.Cursor;
 import android.database.DatabaseUtils;
 import android.net.Uri;
+import android.os.Build;
 import android.os.RemoteException;
 import android.text.format.DateUtils;
 import android.text.format.TimeMigrationUtils;
@@ -1825,7 +1826,7 @@
          *
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static String[] PROVIDER_WRITABLE_COLUMNS = new String[] {
                 ACCOUNT_NAME,
                 ACCOUNT_TYPE,
@@ -1860,7 +1861,7 @@
          *
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         @TestApi
         public static final String[] SYNC_WRITABLE_COLUMNS = new String[] {
             _SYNC_ID,
@@ -2512,7 +2513,7 @@
          *         if no such alarm exists.
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final long findNextAlarmTime(ContentResolver cr, long millis) {
             String selection = ALARM_TIME + ">=" + millis;
             // TODO: construct an explicit SQL query so that we can add
@@ -2546,7 +2547,7 @@
          * @param manager the AlarmManager
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final void rescheduleMissedAlarms(ContentResolver cr,
                 Context context, AlarmManager manager) {
             // Get all the alerts that have been scheduled but have not fired
@@ -2603,7 +2604,7 @@
          *            epoch
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static void scheduleAlarm(Context context, AlarmManager manager, long alarmTime) {
             if (DEBUG) {
                 String schedTime = TimeMigrationUtils.formatMillisWithFixedFormat(alarmTime);
diff --git a/core/java/android/provider/CallLog.java b/core/java/android/provider/CallLog.java
index 276f162..65132f0 100644
--- a/core/java/android/provider/CallLog.java
+++ b/core/java/android/provider/CallLog.java
@@ -17,6 +17,7 @@
 
 package android.provider;
 
+import android.annotation.LongDef;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.ContentProvider;
 import android.content.ContentResolver;
@@ -43,6 +44,8 @@
 import android.text.TextUtils;
 import android.util.Log;
 
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 import java.util.List;
 
 /**
@@ -611,6 +614,144 @@
          */
         public static final String BLOCK_REASON = "block_reason";
 
+        /** @hide */
+        @LongDef(flag = true, value = {
+                MISSED_REASON_NOT_MISSED,
+                AUTO_MISSED_EMERGENCY_CALL,
+                AUTO_MISSED_MAXIMUM_RINGING,
+                AUTO_MISSED_MAXIMUM_DIALING,
+                USER_MISSED_NO_ANSWER,
+                USER_MISSED_SHORT_RING,
+                USER_MISSED_DND_MODE,
+                USER_MISSED_LOW_RING_VOLUME,
+                USER_MISSED_NO_VIBRATE,
+                USER_MISSED_CALL_SCREENING_SERVICE_SILENCED,
+                USER_MISSED_CALL_FILTERS_TIMEOUT
+        })
+        @Retention(RetentionPolicy.SOURCE)
+        public @interface MissedReason {}
+
+        /**
+         * Value for {@link CallLog.Calls#MISSED_REASON}, set as the default value when a call was
+         * not missed.
+         */
+        public static final long MISSED_REASON_NOT_MISSED = 0;
+
+        /**
+         * Value for {@link CallLog.Calls#MISSED_REASON}, set when {@link CallLog.Calls#TYPE} is
+         * {@link CallLog.Calls#MISSED_TYPE} to indicate that a call was automatically rejected by
+         * system because an ongoing emergency call.
+         */
+        public static final long AUTO_MISSED_EMERGENCY_CALL = 1 << 0;
+
+        /**
+         * Value for {@link CallLog.Calls#MISSED_REASON}, set when {@link CallLog.Calls#TYPE} is
+         * {@link CallLog.Calls#MISSED_TYPE} to indicate that a call was automatically rejected by
+         * system because the system cannot support any more ringing calls.
+         */
+        public static final long AUTO_MISSED_MAXIMUM_RINGING = 1 << 1;
+
+        /**
+         * Value for {@link CallLog.Calls#MISSED_REASON}, set when {@link CallLog.Calls#TYPE} is
+         * {@link CallLog.Calls#MISSED_TYPE} to indicate that a call was automatically rejected by
+         * system because the system cannot support any more dialing calls.
+         */
+        public static final long AUTO_MISSED_MAXIMUM_DIALING = 1 << 2;
+
+        /**
+         * When {@link CallLog.Calls#TYPE} is {@link CallLog.Calls#MISSED_TYPE}, set this bit when
+         * the call was missed just because user didn't answer it.
+         */
+        public static final long USER_MISSED_NO_ANSWER = 1 << 16;
+
+        /**
+         * When {@link CallLog.Calls#TYPE} is {@link CallLog.Calls#MISSED_TYPE}, set this bit when
+         * this call rang for a short period of time.
+         */
+        public static final long USER_MISSED_SHORT_RING = 1 << 17;
+
+        /**
+         * When {@link CallLog.Calls#TYPE} is {@link CallLog.Calls#MISSED_TYPE}, when this call
+         * rings less than this defined time in millisecond, set
+         * {@link CallLog.Calls#USER_MISSED_SHORT_RING} bit.
+         * @hide
+         */
+        public static final long SHORT_RING_THRESHOLD = 5000L;
+
+        /**
+         * When {@link CallLog.Calls#TYPE} is {@link CallLog.Calls#MISSED_TYPE}, set this bit when
+         * this call is silenced because the phone is in 'do not disturb mode'.
+         */
+        public static final long USER_MISSED_DND_MODE = 1 << 18;
+
+        /**
+         * When {@link CallLog.Calls#TYPE} is {@link CallLog.Calls#MISSED_TYPE}, set this bit when
+         * this call rings with a low ring volume.
+         */
+        public static final long USER_MISSED_LOW_RING_VOLUME = 1 << 19;
+
+        /**
+         * When {@link CallLog.Calls#TYPE} is {@link CallLog.Calls#MISSED_TYPE}, when this call
+         * rings in volume less than this defined volume threshold, set
+         * {@link CallLog.Calls#USER_MISSED_LOW_RING_VOLUME} bit.
+         * @hide
+         */
+        public static final int LOW_RING_VOLUME = 0;
+
+        /**
+         * When {@link CallLog.Calls#TYPE} is {@link CallLog.Calls#MISSED_TYPE} set this bit when
+         * this call rings without vibration.
+         */
+        public static final long USER_MISSED_NO_VIBRATE = 1 << 20;
+
+        /**
+         * When {@link CallLog.Calls#TYPE} is {@link CallLog.Calls#MISSED_TYPE}, set this bit when
+         * this call is silenced by the call screening service.
+         */
+        public static final long USER_MISSED_CALL_SCREENING_SERVICE_SILENCED = 1 << 21;
+
+        /**
+         * When {@link CallLog.Calls#TYPE} is {@link CallLog.Calls#MISSED_TYPE}, set this bit when
+         * the call filters timed out.
+         */
+        public static final long USER_MISSED_CALL_FILTERS_TIMEOUT = 1 << 22;
+
+        /**
+         * Where the {@link CallLog.Calls#TYPE} is {@link CallLog.Calls#MISSED_TYPE},
+         * indicates factors which may have lead the user to miss the call.
+         * <P>Type: INTEGER</P>
+         *
+         * <p>
+         * There are two main cases. Auto missed cases and user missed cases. Default value is:
+         * <ul>
+         * <li>{@link CallLog.Calls#MISSED_REASON_NOT_MISSED}</li>
+         * </ul>
+         * </p>
+         * <P>
+         * Auto missed cases are those where a call was missed because it was not possible for the
+         * incoming call to be presented to the user at all. Possible values are:
+         * <ul>
+         * <li>{@link CallLog.Calls#AUTO_MISSED_EMERGENCY_CALL}</li>
+         * <li>{@link CallLog.Calls#AUTO_MISSED_MAXIMUM_RINGING}</li>
+         * <li>{@link CallLog.Calls#AUTO_MISSED_MAXIMUM_DIALING}</li>
+         * </ul>
+         * </P>
+         * <P>
+         * User missed cases are those where the incoming call was presented to the user, but
+         * factors such as a low ringing volume may have contributed to the call being missed.
+         * Following bits can be set to indicate possible reasons for this:
+         * <ul>
+         * <li>{@link CallLog.Calls#USER_MISSED_SHORT_RING}</li>
+         * <li>{@link CallLog.Calls#USER_MISSED_DND_MODE}</li>
+         * <li>{@link CallLog.Calls#USER_MISSED_LOW_RING_VOLUME}</li>
+         * <li>{@link CallLog.Calls#USER_MISSED_NO_VIBRATE}</li>
+         * <li>{@link CallLog.Calls#USER_MISSED_CALL_SCREENING_SERVICE_SILENCED}</li>
+         * <li>{@link CallLog.Calls#USER_MISSED_CALL_FILTERS_TIMEOUT}</li>
+         * </ul>
+         * </P>
+         */
+        public static final String MISSED_REASON = "missed_reason";
+
         /**
          * Adds a call to the call log.
          *
@@ -635,12 +776,13 @@
         public static Uri addCall(CallerInfo ci, Context context, String number,
                 int presentation, int callType, int features,
                 PhoneAccountHandle accountHandle,
-                long start, int duration, Long dataUsage) {
+                long start, int duration, Long dataUsage, long missedReason) {
             return addCall(ci, context, number, "" /* postDialDigits */, "" /* viaNumber */,
                 presentation, callType, features, accountHandle, start, duration,
                 dataUsage, false /* addForAllUsers */, null /* userToBeInsertedTo */,
                 false /* isRead */, Calls.BLOCK_REASON_NOT_BLOCKED /* callBlockReason */,
-                null /* callScreeningAppName */, null /* callScreeningComponentName */);
+                null /* callScreeningAppName */, null /* callScreeningComponentName */,
+                    missedReason);
         }
 
 
@@ -675,12 +817,13 @@
         public static Uri addCall(CallerInfo ci, Context context, String number,
                 String postDialDigits, String viaNumber, int presentation, int callType,
                 int features, PhoneAccountHandle accountHandle, long start, int duration,
-                Long dataUsage, boolean addForAllUsers, UserHandle userToBeInsertedTo) {
+                Long dataUsage, boolean addForAllUsers, UserHandle userToBeInsertedTo,
+                long missedReason) {
             return addCall(ci, context, number, postDialDigits, viaNumber, presentation, callType,
                 features, accountHandle, start, duration, dataUsage, addForAllUsers,
                 userToBeInsertedTo, false /* isRead */ , Calls.BLOCK_REASON_NOT_BLOCKED
                 /* callBlockReason */, null /* callScreeningAppName */,
-                null /* callScreeningComponentName */);
+                null /* callScreeningComponentName */, missedReason);
         }
 
         /**
@@ -714,6 +857,7 @@
          * @param callBlockReason The reason why the call is blocked.
          * @param callScreeningAppName The call screening application name which block the call.
          * @param callScreeningComponentName The call screening component name which block the call.
+         * @param missedReason The encoded missed information of the call.
          *
          * @result The URI of the call log entry belonging to the user that made or received this
          *        call.  This could be of the shadow provider.  Do not return it to non-system apps,
@@ -726,7 +870,7 @@
                 int features, PhoneAccountHandle accountHandle, long start, int duration,
                 Long dataUsage, boolean addForAllUsers, UserHandle userToBeInsertedTo,
                 boolean isRead, int callBlockReason, CharSequence callScreeningAppName,
-                String callScreeningComponentName) {
+                String callScreeningComponentName, long missedReason) {
             if (VERBOSE_LOG) {
                 Log.v(LOG_TAG, String.format("Add call: number=%s, user=%s, for all=%s",
                         number, userToBeInsertedTo, addForAllUsers));
@@ -779,6 +923,7 @@
             values.put(BLOCK_REASON, callBlockReason);
             values.put(CALL_SCREENING_APP_NAME, charSequenceToString(callScreeningAppName));
             values.put(CALL_SCREENING_COMPONENT_NAME, callScreeningComponentName);
+            values.put(MISSED_REASON, Long.valueOf(missedReason));
 
             if ((ci != null) && (ci.getContactId() > 0)) {
                 // Update usage information for the number associated with the contact ID.
@@ -1114,5 +1259,19 @@
             }
             return countryIso;
         }
+
+        /**
+         * Check if the missedReason code indicate that the call was user missed or automatically
+         * rejected by system.
+         *
+         * @param missedReason
+         * The result is true if the call was user missed, false if the call was automatically
+         * rejected by system.
+         *
+         * @hide
+         */
+        public static boolean isUserMissed(long missedReason) {
+            return missedReason >= (USER_MISSED_NO_ANSWER);
+        }
     }
 }
diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java
index 31e0a06..fa1b7d5 100644
--- a/core/java/android/provider/ContactsContract.java
+++ b/core/java/android/provider/ContactsContract.java
@@ -46,6 +46,7 @@
 import android.database.DatabaseUtils;
 import android.graphics.Rect;
 import android.net.Uri;
+import android.os.Build;
 import android.os.RemoteException;
 import android.telecom.PhoneAccountHandle;
 import android.text.TextUtils;
@@ -129,7 +130,7 @@
      * Prefix for column names that are not visible to client apps.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @TestApi
     public static final String HIDDEN_COLUMN_PREFIX = "x_";
 
@@ -6140,7 +6141,7 @@
             *
             * @hide
             */
-            @UnsupportedAppUsage
+            @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
             @TestApi
             public static final Uri ENTERPRISE_CONTENT_URI =
                     Uri.withAppendedPath(Data.ENTERPRISE_CONTENT_URI, "phones");
diff --git a/core/java/android/provider/DeviceConfig.java b/core/java/android/provider/DeviceConfig.java
index b45a1eb..4d67d46 100644
--- a/core/java/android/provider/DeviceConfig.java
+++ b/core/java/android/provider/DeviceConfig.java
@@ -55,7 +55,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class DeviceConfig {
     /**
      * The content:// style URL for the config table.
@@ -107,7 +106,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final String NAMESPACE_AUTOFILL = "autofill";
 
     /**
@@ -141,7 +139,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final String NAMESPACE_CONTENT_CAPTURE = "content_capture";
 
     /**
@@ -221,11 +218,20 @@
     public static final String NAMESPACE_PACKAGE_MANAGER_SERVICE = "package_manager_service";
 
     /**
+     * Namespace for features related to the Profcollect native Service.
+     * These features are applied at reboot.
+     *
+     * @hide
+     */
+    @SystemApi
+    public static final String NAMESPACE_PROFCOLLECT_NATIVE_BOOT = "profcollect_native_boot";
+
+    /**
      * Namespace for Rollback flags that are applied immediately.
      *
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String NAMESPACE_ROLLBACK = "rollback";
 
     /**
@@ -233,7 +239,7 @@
      *
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String NAMESPACE_ROLLBACK_BOOT = "rollback_boot";
 
     /**
@@ -378,7 +384,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final String NAMESPACE_PRIVACY = "privacy";
 
     /**
@@ -387,7 +392,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final String NAMESPACE_BIOMETRICS = "biometrics";
 
     /**
@@ -396,7 +400,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final String NAMESPACE_PERMISSIONS = "permissions";
 
     /**
@@ -442,7 +445,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(READ_DEVICE_CONFIG)
     public static String getProperty(@NonNull String namespace, @NonNull String name) {
         // Fetch all properties for the namespace at once and cache them in the local process, so we
@@ -471,7 +473,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @NonNull
     @RequiresPermission(READ_DEVICE_CONFIG)
     public static Properties getProperties(@NonNull String namespace, @NonNull String ... names) {
@@ -491,7 +492,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(READ_DEVICE_CONFIG)
     public static String getString(@NonNull String namespace, @NonNull String name,
             @Nullable String defaultValue) {
@@ -510,7 +510,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(READ_DEVICE_CONFIG)
     public static boolean getBoolean(@NonNull String namespace, @NonNull String name,
             boolean defaultValue) {
@@ -529,7 +528,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(READ_DEVICE_CONFIG)
     public static int getInt(@NonNull String namespace, @NonNull String name, int defaultValue) {
         String value = getProperty(namespace, name);
@@ -555,7 +553,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(READ_DEVICE_CONFIG)
     public static long getLong(@NonNull String namespace, @NonNull String name, long defaultValue) {
         String value = getProperty(namespace, name);
@@ -581,7 +578,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(READ_DEVICE_CONFIG)
     public static float getFloat(@NonNull String namespace, @NonNull String name,
             float defaultValue) {
@@ -617,7 +613,6 @@
      * @see #resetToDefaults(int, String).
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(WRITE_DEVICE_CONFIG)
     public static boolean setProperty(@NonNull String namespace, @NonNull String name,
             @Nullable String value, boolean makeDefault) {
@@ -641,7 +636,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(WRITE_DEVICE_CONFIG)
     public static boolean setProperties(@NonNull Properties properties) throws BadConfigException {
         ContentResolver contentResolver = ActivityThread.currentApplication().getContentResolver();
@@ -661,7 +655,6 @@
      * @see #setProperty(String, String, String, boolean)
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(WRITE_DEVICE_CONFIG)
     public static void resetToDefaults(@ResetMode int resetMode, @Nullable String namespace) {
         ContentResolver contentResolver = ActivityThread.currentApplication().getContentResolver();
@@ -683,7 +676,6 @@
      * @see #removeOnPropertiesChangedListener(OnPropertiesChangedListener)
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(READ_DEVICE_CONFIG)
     public static void addOnPropertiesChangedListener(
             @NonNull String namespace,
@@ -718,7 +710,6 @@
      * @see #addOnPropertiesChangedListener(String, Executor, OnPropertiesChangedListener)
      */
     @SystemApi
-    @TestApi
     public static void removeOnPropertiesChangedListener(
             @NonNull OnPropertiesChangedListener onPropertiesChangedListener) {
         Preconditions.checkNotNull(onPropertiesChangedListener);
@@ -853,7 +844,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public interface OnPropertiesChangedListener {
         /**
          * Called when one or more properties have changed, providing a Properties object with all
@@ -874,7 +864,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static class BadConfigException extends Exception {}
 
     /**
@@ -883,7 +872,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static class Properties {
         private final String mNamespace;
         private final HashMap<String, String> mMap;
diff --git a/core/java/android/provider/DocumentsContract.java b/core/java/android/provider/DocumentsContract.java
index 75840a5..9339575 100644
--- a/core/java/android/provider/DocumentsContract.java
+++ b/core/java/android/provider/DocumentsContract.java
@@ -22,7 +22,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.ContentProvider;
 import android.content.ContentResolver;
@@ -842,7 +841,7 @@
     public static final String EXTRA_RESULT = "result";
 
     /** {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String METHOD_CREATE_DOCUMENT = "android:createDocument";
     /** {@hide} */
     public static final String METHOD_RENAME_DOCUMENT = "android:renameDocument";
@@ -877,11 +876,11 @@
 
     private static final String PATH_ROOT = "root";
     private static final String PATH_RECENT = "recent";
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final String PATH_DOCUMENT = "document";
     private static final String PATH_CHILDREN = "children";
     private static final String PATH_SEARCH = "search";
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final String PATH_TREE = "tree";
 
     private static final String PARAM_QUERY = "query";
@@ -1303,7 +1302,6 @@
      * {@hide}
      */
     @SystemApi
-    @TestApi
     public static @NonNull Uri setManageMode(@NonNull Uri uri) {
         Preconditions.checkNotNull(uri, "uri can not be null");
         return uri.buildUpon().appendQueryParameter(PARAM_MANAGE, "true").build();
@@ -1315,7 +1313,6 @@
      * {@hide}
      */
     @SystemApi
-    @TestApi
     public static boolean isManageMode(@NonNull Uri uri) {
         Preconditions.checkNotNull(uri, "uri can not be null");
         return uri.getBooleanQueryParameter(PARAM_MANAGE, false);
diff --git a/core/java/android/provider/Downloads.java b/core/java/android/provider/Downloads.java
index 48410a7..0829d85 100644
--- a/core/java/android/provider/Downloads.java
+++ b/core/java/android/provider/Downloads.java
@@ -21,6 +21,7 @@
 import android.content.Context;
 import android.net.NetworkPolicyManager;
 import android.net.Uri;
+import android.os.Build;
 
 /**
  * The Download Manager
@@ -138,7 +139,7 @@
          * <P>Type: TEXT</P>
          * <P>Owner can Init/Read</P>
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String COLUMN_URI = "uri";
 
         /**
@@ -168,7 +169,7 @@
          * <P>Type: TEXT</P>
          * <P>Owner can Init</P>
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String COLUMN_FILE_NAME_HINT = "hint";
 
         /**
@@ -184,7 +185,7 @@
          * <P>Type: TEXT</P>
          * <P>Owner can Init/Read</P>
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String COLUMN_MIME_TYPE = "mimetype";
 
         /**
@@ -193,7 +194,7 @@
          * <P>Type: INTEGER</P>
          * <P>Owner can Init</P>
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String COLUMN_DESTINATION = "destination";
 
         /**
@@ -203,7 +204,7 @@
          * <P>Type: INTEGER</P>
          * <P>Owner can Init/Read/Write</P>
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String COLUMN_VISIBILITY = "visibility";
 
         /**
@@ -240,7 +241,7 @@
          * <P>Type: TEXT</P>
          * <P>Owner can Init/Read</P>
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String COLUMN_NOTIFICATION_PACKAGE = "notificationpackage";
 
         /**
@@ -251,7 +252,7 @@
          * <P>Type: TEXT</P>
          * <P>Owner can Init/Read</P>
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String COLUMN_NOTIFICATION_CLASS = "notificationclass";
 
         /**
@@ -260,7 +261,7 @@
          * <P>Type: TEXT</P>
          * <P>Owner can Init</P>
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String COLUMN_NOTIFICATION_EXTRAS = "notificationextras";
 
         /**
@@ -270,7 +271,7 @@
          * <P>Type: TEXT</P>
          * <P>Owner can Init</P>
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String COLUMN_COOKIE_DATA = "cookiedata";
 
         /**
@@ -287,7 +288,7 @@
          * <P>Type: TEXT</P>
          * <P>Owner can Init</P>
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String COLUMN_REFERER = "referer";
 
         /**
@@ -325,7 +326,7 @@
          * <P>Type: TEXT</P>
          * <P>Owner can Init/Read/Write</P>
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String COLUMN_TITLE = "title";
 
         /**
@@ -335,7 +336,7 @@
          * <P>Type: TEXT</P>
          * <P>Owner can Init/Read/Write</P>
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String COLUMN_DESCRIPTION = "description";
 
         /**
@@ -344,7 +345,7 @@
          * <P>Type: BOOLEAN</P>
          * <P>Owner can Init/Read</P>
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String COLUMN_IS_PUBLIC_API = "is_public_api";
 
         /**
@@ -353,7 +354,7 @@
          * <P>Type: INTEGER</P>
          * <P>Owner can Init/Read</P>
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String COLUMN_ALLOWED_NETWORK_TYPES = "allowed_network_types";
 
         /**
@@ -362,7 +363,7 @@
          * <P>Type: BOOLEAN</P>
          * <P>Owner can Init/Read</P>
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String COLUMN_ALLOW_ROAMING = "allow_roaming";
 
         /**
@@ -379,7 +380,7 @@
          * <P>Type: INTEGER</P>
          * <P>Owner can Init/Read</P>
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI = "is_visible_in_downloads_ui";
 
         /**
@@ -396,7 +397,7 @@
          * <P>Type: BOOLEAN</P>
          * <P>Owner can Read</P>
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String COLUMN_DELETED = "deleted";
 
         /**
@@ -425,7 +426,7 @@
          *
          * <P>Type: TEXT</P>
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String COLUMN_MEDIA_SCANNED = "scanned";
 
         /** Possible values for column {@link #COLUMN_MEDIA_SCANNED} */
@@ -504,7 +505,7 @@
          * immediately after they are used, and are kept around by the download
          * manager as long as space is available.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final int DESTINATION_CACHE_PARTITION_PURGEABLE = 2;
 
         /**
@@ -518,7 +519,7 @@
          * This download will be saved to the location given by the file URI in
          * {@link #COLUMN_FILE_NAME_HINT}.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final int DESTINATION_FILE_URI = 4;
 
         /**
@@ -599,7 +600,7 @@
          * @param visibility the value of {@link #COLUMN_VISIBILITY}.
          * @return true if the notification should be displayed. false otherwise.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static boolean isNotificationToBeDisplayed(int visibility) {
             return visibility == DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED ||
                     visibility == DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION;
@@ -840,7 +841,7 @@
              * Prefix for ContentValues keys that contain HTTP header lines, to be passed to
              * DownloadProvider.insert().
              */
-            @UnsupportedAppUsage
+            @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
             public static final String INSERT_KEY_PREFIX = "http_header_";
         }
     }
diff --git a/core/java/android/provider/OWNERS b/core/java/android/provider/OWNERS
index 8b7d6ad..97e0156 100644
--- a/core/java/android/provider/OWNERS
+++ b/core/java/android/provider/OWNERS
@@ -1,4 +1,5 @@
 per-file DeviceConfig.java = svetoslavganov@google.com
 per-file DeviceConfig.java = hackbod@google.com
+per-file DeviceConfig.java = schfan@google.com
 
 
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 9ee8898..a1d993b 100755
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -59,6 +59,7 @@
 import android.net.wifi.p2p.WifiP2pManager;
 import android.os.BatteryManager;
 import android.os.Binder;
+import android.os.Build;
 import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
 import android.os.DropBoxManager;
@@ -225,7 +226,6 @@
      */
     @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
     @SystemApi
-    @TestApi
     public static final String ACTION_TETHER_PROVISIONING_UI =
             "android.settings.TETHER_PROVISIONING_UI";
 
@@ -924,7 +924,7 @@
      * @hide
      */
     @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String ACTION_USER_DICTIONARY_INSERT =
             "com.android.settings.USER_DICTIONARY_INSERT";
 
@@ -1034,7 +1034,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
     public static final String ACTION_MANAGE_APP_OVERLAY_PERMISSION =
@@ -1876,7 +1875,7 @@
             = "android.settings.ACTION_APP_NOTIFICATION_REDACTION";
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String EXTRA_APP_UID = "app_uid";
 
     /**
@@ -1998,7 +1997,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
     public static final String ACTION_ENTERPRISE_PRIVACY_SETTINGS
             = "android.settings.ENTERPRISE_PRIVACY_SETTINGS";
@@ -2081,7 +2079,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
     public static final String ACTION_REQUEST_ENABLE_CONTENT_CAPTURE =
             "android.settings.REQUEST_ENABLE_CONTENT_CAPTURE";
@@ -2406,7 +2403,7 @@
      * This is the only type of reset available to non-system clients.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @TestApi
     public static final int RESET_MODE_PACKAGE_DEFAULTS = 1;
 
@@ -3051,7 +3048,7 @@
         public static final Uri CONTENT_URI =
             Uri.parse("content://" + AUTHORITY + "/system");
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private static final ContentProviderHolder sProviderHolder =
                 new ContentProviderHolder(CONTENT_URI);
 
@@ -3100,9 +3097,9 @@
             MOVED_TO_SECURE.add(Secure.INSTALL_NON_MARKET_APPS);
         }
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private static final HashSet<String> MOVED_TO_GLOBAL;
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private static final HashSet<String> MOVED_TO_SECURE_THEN_GLOBAL;
         static {
             MOVED_TO_GLOBAL = new HashSet<>();
@@ -4251,7 +4248,7 @@
          * Kept for use by legacy database upgrade code in DatabaseHelper.
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String VIBRATE_IN_SILENT = "vibrate_in_silent";
 
         /**
@@ -4546,7 +4543,7 @@
          * 3 = HCO
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String TTY_MODE = "tty_mode";
 
         /**
@@ -4573,7 +4570,7 @@
          * pending. The value is boolean (1 or 0).
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String NOTIFICATION_LIGHT_PULSE = "notification_light_pulse";
 
         /**
@@ -4582,7 +4579,7 @@
          * 1 = yes
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String POINTER_LOCATION = "pointer_location";
 
         /**
@@ -4591,7 +4588,7 @@
          * 1 = yes
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String SHOW_TOUCHES = "show_touches";
 
         /**
@@ -4619,14 +4616,14 @@
          * @hide
          */
         @Deprecated
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String DOCK_SOUNDS_ENABLED = Global.DOCK_SOUNDS_ENABLED;
 
         /**
          * Whether to play sounds when the keyguard is shown and dismissed.
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String LOCKSCREEN_SOUNDS_ENABLED = "lockscreen_sounds_enabled";
 
         /**
@@ -4649,7 +4646,7 @@
          * @hide
          */
         @Deprecated
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String DESK_DOCK_SOUND = Global.DESK_DOCK_SOUND;
 
         /**
@@ -4658,7 +4655,7 @@
          * @hide
          */
         @Deprecated
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String DESK_UNDOCK_SOUND = Global.DESK_UNDOCK_SOUND;
 
         /**
@@ -4667,7 +4664,7 @@
          * @hide
          */
         @Deprecated
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String CAR_DOCK_SOUND = Global.CAR_DOCK_SOUND;
 
         /**
@@ -4676,7 +4673,7 @@
          * @hide
          */
         @Deprecated
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String CAR_UNDOCK_SOUND = Global.CAR_UNDOCK_SOUND;
 
         /**
@@ -4685,7 +4682,7 @@
          * @hide
          */
         @Deprecated
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String LOCK_SOUND = Global.LOCK_SOUND;
 
         /**
@@ -4694,7 +4691,7 @@
          * @hide
          */
         @Deprecated
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String UNLOCK_SOUND = Global.UNLOCK_SOUND;
 
         /**
@@ -4743,7 +4740,7 @@
          *   +7 = fastest
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String POINTER_SPEED = "pointer_speed";
 
         /**
@@ -4801,7 +4798,7 @@
          *
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final Set<String> PUBLIC_SETTINGS = new ArraySet<>();
         static {
             PUBLIC_SETTINGS.add(END_BUTTON_BEHAVIOR);
@@ -4860,7 +4857,7 @@
          *
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final Set<String> PRIVATE_SETTINGS = new ArraySet<>();
         static {
             PRIVATE_SETTINGS.add(WIFI_USE_STATIC_IP);
@@ -4909,7 +4906,7 @@
          * These entries are considered common between the personal and the managed profile,
          * since the managed profile doesn't get to change them.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private static final Set<String> CLONE_TO_MANAGED_PROFILE = new ArraySet<>();
         static {
             CLONE_TO_MANAGED_PROFILE.add(DATE_FORMAT);
@@ -5236,7 +5233,7 @@
         public static final Uri CONTENT_URI =
             Uri.parse("content://" + AUTHORITY + "/secure");
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private static final ContentProviderHolder sProviderHolder =
                 new ContentProviderHolder(CONTENT_URI);
 
@@ -5476,7 +5473,7 @@
         }
 
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static boolean putStringForUser(@NonNull ContentResolver resolver,
                 @NonNull String name, @Nullable String value, @Nullable String tag,
                 boolean makeDefault, @UserIdInt int userHandle, boolean overrideableByRestore) {
@@ -5553,7 +5550,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         @RequiresPermission(Manifest.permission.WRITE_SECURE_SETTINGS)
         public static void resetToDefaults(@NonNull ContentResolver resolver,
                 @Nullable String tag) {
@@ -5717,7 +5713,7 @@
         }
 
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static long getLongForUser(ContentResolver cr, String name, long def,
                 int userHandle) {
             String valString = getStringForUser(cr, name, userHandle);
@@ -5781,7 +5777,7 @@
         }
 
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static boolean putLongForUser(ContentResolver cr, String name, long value,
                 int userHandle) {
             return putStringForUser(cr, name, Long.toString(value), userHandle);
@@ -6024,7 +6020,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public static final String AUTOFILL_FEATURE_FIELD_CLASSIFICATION =
                 "autofill_field_classification";
 
@@ -6058,7 +6053,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public static final String AUTOFILL_USER_DATA_MAX_USER_DATA_SIZE =
                 "autofill_user_data_max_user_data_size";
 
@@ -6069,7 +6063,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public static final String AUTOFILL_USER_DATA_MAX_FIELD_CLASSIFICATION_IDS_SIZE =
                 "autofill_user_data_max_field_classification_size";
 
@@ -6080,7 +6073,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public static final String AUTOFILL_USER_DATA_MAX_CATEGORY_COUNT =
                 "autofill_user_data_max_category_count";
 
@@ -6090,7 +6082,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public static final String AUTOFILL_USER_DATA_MAX_VALUE_LENGTH =
                 "autofill_user_data_max_value_length";
 
@@ -6100,7 +6091,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public static final String AUTOFILL_USER_DATA_MIN_VALUE_LENGTH =
                 "autofill_user_data_min_value_length";
 
@@ -6150,7 +6140,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public static final String USER_SETUP_COMPLETE = "user_setup_complete";
 
         /**
@@ -6460,7 +6449,7 @@
          * subject to current DeviceAdmin policy limits.
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String LOCK_SCREEN_LOCK_AFTER_TIMEOUT = "lock_screen_lock_after_timeout";
 
 
@@ -6502,7 +6491,7 @@
          * @deprecated
          */
         @Deprecated
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String LOCK_SCREEN_OWNER_INFO_ENABLED =
             "lock_screen_owner_info_enabled";
 
@@ -6515,7 +6504,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public static final String LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS =
                 "lock_screen_allow_private_notifications";
 
@@ -6634,7 +6622,7 @@
          * accessibility feature.
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         @TestApi
         public static final String ACCESSIBILITY_SHORTCUT_TARGET_SERVICE =
                 "accessibility_shortcut_target_service";
@@ -6988,7 +6976,7 @@
          * @see android.graphics.Typeface
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String ACCESSIBILITY_CAPTIONING_TYPEFACE =
                 "accessibility_captioning_typeface";
 
@@ -7028,7 +7016,7 @@
          *
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String ACCESSIBILITY_DISPLAY_DALTONIZER =
                 "accessibility_display_daltonizer";
 
@@ -7415,7 +7403,7 @@
          * Type: int ( 0 = disabled, 1 = enabled )
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String BACKUP_ENABLED = "backup_enabled";
 
         /**
@@ -7424,7 +7412,7 @@
          * Type: int ( 0 = disabled, 1 = enabled )
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String BACKUP_AUTO_RESTORE = "backup_auto_restore";
 
         /**
@@ -7432,14 +7420,14 @@
          * Type: int ( 0 = unprovisioned, 1 = fully provisioned )
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String BACKUP_PROVISIONED = "backup_provisioned";
 
         /**
          * Component of the transport to use for backup/restore.
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String BACKUP_TRANSPORT = "backup_transport";
 
         /**
@@ -7611,7 +7599,7 @@
          * Also prevents ANRs and crash dialogs from being suppressed.
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String ANR_SHOW_BACKGROUND = "anr_show_background";
 
         /**
@@ -7628,7 +7616,7 @@
          *
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String VOICE_RECOGNITION_SERVICE = "voice_recognition_service";
 
         /**
@@ -7637,7 +7625,7 @@
          *
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String SELECTED_SPELL_CHECKER = "selected_spell_checker";
 
         /**
@@ -7647,7 +7635,7 @@
          *
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String SELECTED_SPELL_CHECKER_SUBTYPE =
                 "selected_spell_checker_subtype";
 
@@ -7755,7 +7743,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public static final String DOZE_ALWAYS_ON = "doze_always_on";
 
         /**
@@ -7943,7 +7930,7 @@
          * The default NFC payment component
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         @TestApi
         public static final String NFC_PAYMENT_DEFAULT_COMPONENT = "nfc_payment_default_component";
 
@@ -7957,14 +7944,14 @@
          * Specifies the package name currently configured to be the primary sms application
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String SMS_DEFAULT_APPLICATION = "sms_default_application";
 
         /**
          * Specifies the package name currently configured to be the default dialer application
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String DIALER_DEFAULT_APPLICATION = "dialer_default_application";
 
         /**
@@ -8102,7 +8089,7 @@
         /**
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         @TestApi
         public static final String IMMERSIVE_MODE_CONFIRMATIONS = "immersive_mode_confirmations";
 
@@ -8150,7 +8137,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public static final String LOCK_SCREEN_SHOW_NOTIFICATIONS =
                 "lock_screen_show_notifications";
 
@@ -8498,7 +8484,7 @@
          *
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         @TestApi
         public static final String ENABLED_VR_LISTENERS = "enabled_vr_listeners";
 
@@ -8667,7 +8653,7 @@
          * The value is boolean (1 or 0).
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         @TestApi
         public static final String NOTIFICATION_BADGING = "notification_badging";
 
@@ -8823,7 +8809,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public static final String LOCATION_ACCESS_CHECK_INTERVAL_MILLIS =
                 "location_access_check_interval_millis";
 
@@ -8832,7 +8817,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public static final String LOCATION_ACCESS_CHECK_DELAY_MILLIS =
                 "location_access_check_delay_millis";
 
@@ -9883,7 +9867,7 @@
         * scorer app, external network scores will neither be requested nor accepted.
         * @hide
         */
-       @UnsupportedAppUsage
+       @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
        public static final String NETWORK_SCORER_APP = "network_scorer_app";
 
         /**
@@ -10163,7 +10147,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public static final String TETHER_OFFLOAD_DISABLED = "tether_offload_disabled";
 
         /**
@@ -10236,7 +10219,7 @@
         * by the system).
         * @hide
         */
-       @UnsupportedAppUsage
+       @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
        public static final String WEBVIEW_PROVIDER = "webview_provider";
 
        /**
@@ -10628,7 +10611,7 @@
         * the setting needs to be set to 0 to disable it.
         * @hide
         */
-       @UnsupportedAppUsage
+       @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
        public static final String WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED =
                "wifi_watchdog_poor_network_test_enabled";
 
@@ -10770,17 +10753,6 @@
        public static final String MODE_RINGER = "mode_ringer";
 
         /**
-         * Specifies whether Enhanced Connectivity is enabled or not. This setting allows the
-         * Connectivity Thermal Power Manager to actively help the device to save power in 5G
-         * scenarios
-         * Type: int 1 is enabled, 0 is disabled
-         *
-         * @hide
-         */
-        public static final String ENHANCED_CONNECTIVITY_ENABLED =
-                "enhanced_connectivity_enable";
-
-        /**
          * Overlay display devices setting.
          * The associated value is a specially formatted string that describes the
          * size and density of simulated secondary display devices.
@@ -10817,7 +10789,7 @@
          *
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         @TestApi
         public static final String OVERLAY_DISPLAY_DEVICES = "overlay_display_devices";
 
@@ -11491,7 +11463,7 @@
          * @hide
          * @see com.android.server.power.batterysaver.BatterySaverPolicy
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         @TestApi
         public static final String BATTERY_SAVER_CONSTANTS = "battery_saver_constants";
 
@@ -12216,7 +12188,7 @@
          * See RIL_PreferredNetworkType in ril.h
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String PREFERRED_NETWORK_MODE =
                 "preferred_network_mode";
 
@@ -12279,8 +12251,8 @@
          * List of package names that should check ANGLE rules
          * @hide
          */
-        public static final String GLOBAL_SETTINGS_ANGLE_WHITELIST =
-                "angle_whitelist";
+        public static final String GLOBAL_SETTINGS_ANGLE_ALLOWLIST =
+                "angle_allowlist";
 
         /**
          * Show the "ANGLE In Use" dialog box to the user when ANGLE is the OpenGL driver.
@@ -12322,24 +12294,24 @@
         public static final String GAME_DRIVER_OPT_OUT_APPS = "game_driver_opt_out_apps";
 
         /**
-         * Apps on the blacklist that are forbidden to use Game Driver.
+         * Apps on the denylist that are forbidden to use Game Driver.
          * @hide
          */
-        public static final String GAME_DRIVER_BLACKLIST = "game_driver_blacklist";
+        public static final String GAME_DRIVER_DENYLIST = "game_driver_denylist";
 
         /**
-         * List of blacklists, each blacklist is a blacklist for a specific version of Game Driver.
+         * List of denylists, each denylist is a denylist for a specific version of Game Driver.
          * @hide
          */
-        public static final String GAME_DRIVER_BLACKLISTS = "game_driver_blacklists";
+        public static final String GAME_DRIVER_DENYLISTS = "game_driver_denylists";
 
         /**
-         * Apps on the whitelist that are allowed to use Game Driver.
+         * Apps on the allowlist that are allowed to use Game Driver.
          * The string is a list of application package names, seperated by comma.
          * i.e. <apk1>,<apk2>,...,<apkN>
          * @hide
          */
-        public static final String GAME_DRIVER_WHITELIST = "game_driver_whitelist";
+        public static final String GAME_DRIVER_ALLOWLIST = "game_driver_allowlist";
 
         /**
          * List of libraries in sphal accessible by Game Driver
@@ -12801,7 +12773,7 @@
         @UnsupportedAppUsage
         public static final int ZEN_MODE_NO_INTERRUPTIONS = 2;
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final int ZEN_MODE_ALARMS = 3;
 
         /** @hide */ public static String zenModeToString(int mode) {
@@ -12864,15 +12836,15 @@
          *
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String HEADS_UP_NOTIFICATIONS_ENABLED =
                 "heads_up_notifications_enabled";
 
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final int HEADS_UP_OFF = 0;
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final int HEADS_UP_ON = 1;
 
         /**
@@ -13230,7 +13202,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public static final String AUTOFILL_COMPAT_MODE_ALLOWED_PACKAGES =
                 "autofill_compat_mode_allowed_packages";
 
@@ -13278,6 +13249,7 @@
          *
          * @hide
          */
+        @TestApi
         public static final String HIDDEN_API_POLICY = "hidden_api_policy";
 
         /**
@@ -13355,7 +13327,7 @@
         public static final String[] LEGACY_RESTORE_SETTINGS = {
         };
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private static final ContentProviderHolder sProviderHolder =
                 new ContentProviderHolder(CONTENT_URI);
 
@@ -13405,7 +13377,7 @@
         }
 
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static String getStringForUser(ContentResolver resolver, String name,
                 int userHandle) {
             if (MOVED_TO_SECURE.contains(name)) {
@@ -13555,7 +13527,7 @@
         }
 
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static boolean putStringForUser(ContentResolver resolver,
                 String name, String value, int userHandle) {
             return putStringForUser(resolver, name, value, null, false, userHandle,
@@ -15026,7 +14998,7 @@
      * callingPackage, a negative result will be returned.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static boolean isCallingPackageAllowedToWriteSettings(Context context, int uid,
             String callingPackage, boolean throwException) {
         return isCallingPackageAllowedToPerformAppOpsProtectedOperation(context, uid,
diff --git a/core/java/android/provider/Telephony.java b/core/java/android/provider/Telephony.java
index 2c2d127..6054de8 100644
--- a/core/java/android/provider/Telephony.java
+++ b/core/java/android/provider/Telephony.java
@@ -627,7 +627,7 @@
              * @return the URI for the new message
              * @hide
              */
-            @UnsupportedAppUsage
+            @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
             public static Uri addMessage(int subId, ContentResolver resolver,
                     String address, String body, String subject, Long date, boolean read) {
                 return addMessageToUri(subId, resolver, CONTENT_URI, address, body,
@@ -687,7 +687,7 @@
              * @return the URI for the new message
              * @hide
              */
-            @UnsupportedAppUsage
+            @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
             public static Uri addMessage(int subId, ContentResolver resolver,
                     String address, String body, String subject, Long date) {
                 return addMessageToUri(subId, resolver, CONTENT_URI, address, body,
@@ -734,7 +734,7 @@
              * @return the URI for the new message
              * @hide
              */
-            @UnsupportedAppUsage
+            @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
             public static Uri addMessage(int subId, ContentResolver resolver,
                     String address, String body, String subject, Long date) {
                 return addMessageToUri(subId, resolver, CONTENT_URI, address, body,
@@ -781,7 +781,7 @@
              * @return the URI for the new message
              * @hide
              */
-            @UnsupportedAppUsage
+            @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
             public static Uri addMessage(ContentResolver resolver,
                     String address, String body, String subject, Long date,
                     boolean deliveryReport, long threadId) {
@@ -4045,7 +4045,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final class CellBroadcasts implements BaseColumns {
 
         /**
diff --git a/core/java/android/security/KeystoreArguments.java b/core/java/android/security/KeystoreArguments.java
index a59c4e0..19f78c8 100644
--- a/core/java/android/security/KeystoreArguments.java
+++ b/core/java/android/security/KeystoreArguments.java
@@ -17,6 +17,7 @@
 package android.security;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -28,7 +29,7 @@
 public class KeystoreArguments implements Parcelable {
     public byte[][] args;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final @android.annotation.NonNull Parcelable.Creator<KeystoreArguments> CREATOR = new
             Parcelable.Creator<KeystoreArguments>() {
                 public KeystoreArguments createFromParcel(Parcel in) {
@@ -43,7 +44,7 @@
         args = null;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public KeystoreArguments(byte[][] args) {
         this.args = args;
     }
diff --git a/core/java/android/security/keymaster/ExportResult.java b/core/java/android/security/keymaster/ExportResult.java
index 037b852..2c382ef 100644
--- a/core/java/android/security/keymaster/ExportResult.java
+++ b/core/java/android/security/keymaster/ExportResult.java
@@ -17,6 +17,7 @@
 package android.security.keymaster;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -33,7 +34,7 @@
         this.exportData = new byte[0];
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final @android.annotation.NonNull Parcelable.Creator<ExportResult> CREATOR = new
             Parcelable.Creator<ExportResult>() {
                 public ExportResult createFromParcel(Parcel in) {
diff --git a/core/java/android/security/keymaster/KeyCharacteristics.java b/core/java/android/security/keymaster/KeyCharacteristics.java
index d8382fa..4f2bad1 100644
--- a/core/java/android/security/keymaster/KeyCharacteristics.java
+++ b/core/java/android/security/keymaster/KeyCharacteristics.java
@@ -17,6 +17,7 @@
 package android.security.keymaster;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -45,7 +46,7 @@
                 }
             };
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public KeyCharacteristics() {}
 
     protected KeyCharacteristics(Parcel in) {
@@ -71,7 +72,7 @@
         hwEnforced.writeToParcel(out, flags);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void readFromParcel(Parcel in) {
         swEnforced = KeymasterArguments.CREATOR.createFromParcel(in);
         hwEnforced = KeymasterArguments.CREATOR.createFromParcel(in);
diff --git a/core/java/android/security/keymaster/KeymasterArguments.java b/core/java/android/security/keymaster/KeymasterArguments.java
index e009e12..7608f3a 100644
--- a/core/java/android/security/keymaster/KeymasterArguments.java
+++ b/core/java/android/security/keymaster/KeymasterArguments.java
@@ -17,6 +17,7 @@
 package android.security.keymaster;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -41,7 +42,7 @@
 
     private List<KeymasterArgument> mArguments;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final @android.annotation.NonNull Parcelable.Creator<KeymasterArguments> CREATOR = new
             Parcelable.Creator<KeymasterArguments>() {
                 @Override
@@ -55,7 +56,7 @@
                 }
             };
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public KeymasterArguments() {
         mArguments = new ArrayList<KeymasterArgument>();
     }
@@ -69,7 +70,7 @@
      *
      * @throws IllegalArgumentException if {@code tag} is not an enum tag.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void addEnum(int tag, int value) {
         int tagType = KeymasterDefs.getTagType(tag);
         if ((tagType != KeymasterDefs.KM_ENUM) && (tagType != KeymasterDefs.KM_ENUM_REP)) {
@@ -141,7 +142,7 @@
      * @throws IllegalArgumentException if {@code tag} is not an unsigned 32-bit int tag or if
      *         {@code value} is outside of the permitted range [0; 2^32).
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void addUnsignedInt(int tag, long value) {
         int tagType = KeymasterDefs.getTagType(tag);
         if ((tagType != KeymasterDefs.KM_UINT) && (tagType != KeymasterDefs.KM_UINT_REP)) {
@@ -178,7 +179,7 @@
      * @throws IllegalArgumentException if {@code tag} is not an unsigned 64-bit long tag or if
      *         {@code value} is outside of the permitted range [0; 2^64).
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void addUnsignedLong(int tag, BigInteger value) {
         int tagType = KeymasterDefs.getTagType(tag);
         if ((tagType != KeymasterDefs.KM_ULONG) && (tagType != KeymasterDefs.KM_ULONG_REP)) {
@@ -364,7 +365,7 @@
         out.writeTypedList(mArguments);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void readFromParcel(Parcel in) {
         in.readTypedList(mArguments, KeymasterArgument.CREATOR);
     }
diff --git a/core/java/android/security/keymaster/KeymasterBlob.java b/core/java/android/security/keymaster/KeymasterBlob.java
index 68365bf..18cdecb 100644
--- a/core/java/android/security/keymaster/KeymasterBlob.java
+++ b/core/java/android/security/keymaster/KeymasterBlob.java
@@ -17,6 +17,7 @@
 package android.security.keymaster;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -29,7 +30,7 @@
     public KeymasterBlob(byte[] blob) {
         this.blob = blob;
     }
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final @android.annotation.NonNull Parcelable.Creator<KeymasterBlob> CREATOR = new
             Parcelable.Creator<KeymasterBlob>() {
                 public KeymasterBlob createFromParcel(Parcel in) {
diff --git a/core/java/android/security/keymaster/KeymasterBlobArgument.java b/core/java/android/security/keymaster/KeymasterBlobArgument.java
index 81b08c5..b4106a6 100644
--- a/core/java/android/security/keymaster/KeymasterBlobArgument.java
+++ b/core/java/android/security/keymaster/KeymasterBlobArgument.java
@@ -17,16 +17,17 @@
 package android.security.keymaster;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 
 /**
  * @hide
  */
 class KeymasterBlobArgument extends KeymasterArgument {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final byte[] blob;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public KeymasterBlobArgument(int tag, byte[] blob) {
         super(tag);
         switch (KeymasterDefs.getTagType(tag)) {
@@ -39,7 +40,7 @@
         this.blob = blob;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public KeymasterBlobArgument(int tag, Parcel in) {
         super(tag);
         blob = in.createByteArray();
diff --git a/core/java/android/security/keymaster/KeymasterBooleanArgument.java b/core/java/android/security/keymaster/KeymasterBooleanArgument.java
index 25b2ac4..574511c 100644
--- a/core/java/android/security/keymaster/KeymasterBooleanArgument.java
+++ b/core/java/android/security/keymaster/KeymasterBooleanArgument.java
@@ -17,6 +17,7 @@
 package android.security.keymaster;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 
 /**
@@ -37,7 +38,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public KeymasterBooleanArgument(int tag, Parcel in) {
         super(tag);
     }
diff --git a/core/java/android/security/keymaster/KeymasterDateArgument.java b/core/java/android/security/keymaster/KeymasterDateArgument.java
index 218f488..f6b8fb5 100644
--- a/core/java/android/security/keymaster/KeymasterDateArgument.java
+++ b/core/java/android/security/keymaster/KeymasterDateArgument.java
@@ -17,6 +17,7 @@
 package android.security.keymaster;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 
 import java.util.Date;
@@ -38,7 +39,7 @@
         this.date = date;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public KeymasterDateArgument(int tag, Parcel in) {
         super(tag);
         date = new Date(in.readLong());
diff --git a/core/java/android/security/keymaster/KeymasterDefs.java b/core/java/android/security/keymaster/KeymasterDefs.java
index e4ba87c..6ef9e7e 100644
--- a/core/java/android/security/keymaster/KeymasterDefs.java
+++ b/core/java/android/security/keymaster/KeymasterDefs.java
@@ -16,6 +16,19 @@
 
 package android.security.keymaster;
 
+import android.hardware.keymint.Algorithm;
+import android.hardware.keymint.BlockMode;
+import android.hardware.keymint.Digest;
+import android.hardware.keymint.ErrorCode;
+import android.hardware.keymint.HardwareAuthenticatorType;
+import android.hardware.keymint.KeyFormat;
+import android.hardware.keymint.KeyOrigin;
+import android.hardware.keymint.KeyPurpose;
+import android.hardware.keymint.PaddingMode;
+import android.hardware.keymint.SecurityLevel;
+import android.hardware.keymint.Tag;
+import android.hardware.keymint.TagType;
+
 import java.util.HashMap;
 import java.util.Map;
 
@@ -30,198 +43,284 @@
     private KeymasterDefs() {}
 
     // Tag types.
-    public static final int KM_INVALID = 0 << 28;
-    public static final int KM_ENUM = 1 << 28;
-    public static final int KM_ENUM_REP = 2 << 28;
-    public static final int KM_UINT = 3 << 28;
-    public static final int KM_UINT_REP = 4 << 28;
-    public static final int KM_ULONG = 5 << 28;
-    public static final int KM_DATE = 6 << 28;
-    public static final int KM_BOOL = 7 << 28;
-    public static final int KM_BIGNUM = 8 << 28;
-    public static final int KM_BYTES = 9 << 28;
-    public static final int KM_ULONG_REP = 10 << 28;
+    public static final int KM_INVALID = TagType.INVALID;
+    public static final int KM_ENUM = TagType.ENUM;
+    public static final int KM_ENUM_REP = TagType.ENUM_REP;
+    public static final int KM_UINT = TagType.UINT;
+    public static final int KM_UINT_REP = TagType.UINT_REP;
+    public static final int KM_ULONG = TagType.ULONG;
+    public static final int KM_DATE = TagType.DATE;
+    public static final int KM_BOOL = TagType.BOOL;
+    public static final int KM_BIGNUM = TagType.BIGNUM;
+    public static final int KM_BYTES = TagType.BYTES;
+    public static final int KM_ULONG_REP = TagType.ULONG_REP;
 
     // Tag values.
-    public static final int KM_TAG_INVALID = KM_INVALID | 0;
-    public static final int KM_TAG_PURPOSE = KM_ENUM_REP | 1;
-    public static final int KM_TAG_ALGORITHM = KM_ENUM | 2;
-    public static final int KM_TAG_KEY_SIZE = KM_UINT | 3;
-    public static final int KM_TAG_BLOCK_MODE = KM_ENUM_REP | 4;
-    public static final int KM_TAG_DIGEST = KM_ENUM_REP | 5;
-    public static final int KM_TAG_PADDING = KM_ENUM_REP | 6;
-    public static final int KM_TAG_CALLER_NONCE = KM_BOOL | 7;
-    public static final int KM_TAG_MIN_MAC_LENGTH = KM_UINT | 8;
+    public static final int KM_TAG_INVALID = Tag.INVALID; // KM_INVALID | 0;
+    public static final int KM_TAG_PURPOSE = Tag.PURPOSE; // KM_ENUM_REP | 1;
+    public static final int KM_TAG_ALGORITHM = Tag.ALGORITHM; // KM_ENUM | 2;
+    public static final int KM_TAG_KEY_SIZE = Tag.KEY_SIZE; // KM_UINT | 3;
+    public static final int KM_TAG_BLOCK_MODE = Tag.BLOCK_MODE; // KM_ENUM_REP | 4;
+    public static final int KM_TAG_DIGEST = Tag.DIGEST; // KM_ENUM_REP | 5;
+    public static final int KM_TAG_PADDING = Tag.PADDING; // KM_ENUM_REP | 6;
+    public static final int KM_TAG_CALLER_NONCE = Tag.CALLER_NONCE; // KM_BOOL | 7;
+    public static final int KM_TAG_MIN_MAC_LENGTH = Tag.MIN_MAC_LENGTH; // KM_UINT | 8;
 
-    public static final int KM_TAG_RESCOPING_ADD = KM_ENUM_REP | 101;
-    public static final int KM_TAG_RESCOPING_DEL = KM_ENUM_REP | 102;
-    public static final int KM_TAG_BLOB_USAGE_REQUIREMENTS = KM_ENUM | 705;
+    public static final int KM_TAG_BLOB_USAGE_REQUIREMENTS =
+            Tag.BLOB_USAGE_REQUIREMENTS; // KM_ENUM | 705;
 
-    public static final int KM_TAG_RSA_PUBLIC_EXPONENT = KM_ULONG | 200;
-    public static final int KM_TAG_INCLUDE_UNIQUE_ID = KM_BOOL | 202;
+    public static final int KM_TAG_RSA_PUBLIC_EXPONENT = Tag.RSA_PUBLIC_EXPONENT; // KM_ULONG | 200;
+    public static final int KM_TAG_INCLUDE_UNIQUE_ID = Tag.INCLUDE_UNIQUE_ID; // KM_BOOL | 202;
 
-    public static final int KM_TAG_ACTIVE_DATETIME = KM_DATE | 400;
-    public static final int KM_TAG_ORIGINATION_EXPIRE_DATETIME = KM_DATE | 401;
-    public static final int KM_TAG_USAGE_EXPIRE_DATETIME = KM_DATE | 402;
-    public static final int KM_TAG_MIN_SECONDS_BETWEEN_OPS = KM_UINT | 403;
-    public static final int KM_TAG_MAX_USES_PER_BOOT = KM_UINT | 404;
+    public static final int KM_TAG_ACTIVE_DATETIME = Tag.ACTIVE_DATETIME; // KM_DATE | 400;
+    public static final int KM_TAG_ORIGINATION_EXPIRE_DATETIME =
+            Tag.ORIGINATION_EXPIRE_DATETIME; // KM_DATE | 401;
+    public static final int KM_TAG_USAGE_EXPIRE_DATETIME =
+            Tag.USAGE_EXPIRE_DATETIME; // KM_DATE | 402;
+    public static final int KM_TAG_MIN_SECONDS_BETWEEN_OPS =
+            Tag.MIN_SECONDS_BETWEEN_OPS; // KM_UINT | 403;
+    public static final int KM_TAG_MAX_USES_PER_BOOT = Tag.MAX_USES_PER_BOOT; // KM_UINT | 404;
 
-    public static final int KM_TAG_ALL_USERS = KM_BOOL | 500;
-    public static final int KM_TAG_USER_ID = KM_UINT | 501;
-    public static final int KM_TAG_USER_SECURE_ID = KM_ULONG_REP | 502;
-    public static final int KM_TAG_NO_AUTH_REQUIRED = KM_BOOL | 503;
-    public static final int KM_TAG_USER_AUTH_TYPE = KM_ENUM | 504;
-    public static final int KM_TAG_AUTH_TIMEOUT = KM_UINT | 505;
-    public static final int KM_TAG_ALLOW_WHILE_ON_BODY = KM_BOOL | 506;
-    public static final int KM_TAG_TRUSTED_USER_PRESENCE_REQUIRED = KM_BOOL | 507;
-    public static final int KM_TAG_TRUSTED_CONFIRMATION_REQUIRED = KM_BOOL | 508;
-    public static final int KM_TAG_UNLOCKED_DEVICE_REQUIRED = KM_BOOL | 509;
+    public static final int KM_TAG_USER_ID = Tag.USER_ID; // KM_UINT | 501;
+    public static final int KM_TAG_USER_SECURE_ID = Tag.USER_SECURE_ID; // KM_ULONG_REP | 502;
+    public static final int KM_TAG_NO_AUTH_REQUIRED = Tag.NO_AUTH_REQUIRED; // KM_BOOL | 503;
+    public static final int KM_TAG_USER_AUTH_TYPE = Tag.USER_AUTH_TYPE; // KM_ENUM | 504;
+    public static final int KM_TAG_AUTH_TIMEOUT = Tag.AUTH_TIMEOUT; // KM_UINT | 505;
+    public static final int KM_TAG_ALLOW_WHILE_ON_BODY = Tag.ALLOW_WHILE_ON_BODY; // KM_BOOL | 506;
+    public static final int KM_TAG_TRUSTED_USER_PRESENCE_REQUIRED =
+            Tag.TRUSTED_USER_PRESENCE_REQUIRED; // KM_BOOL | 507;
+    public static final int KM_TAG_TRUSTED_CONFIRMATION_REQUIRED =
+            Tag.TRUSTED_CONFIRMATION_REQUIRED; // KM_BOOL | 508;
+    public static final int KM_TAG_UNLOCKED_DEVICE_REQUIRED =
+            Tag.UNLOCKED_DEVICE_REQUIRED; // KM_BOOL | 509;
 
-    public static final int KM_TAG_ALL_APPLICATIONS = KM_BOOL | 600;
-    public static final int KM_TAG_APPLICATION_ID = KM_BYTES | 601;
+    public static final int KM_TAG_APPLICATION_ID = Tag.APPLICATION_ID; // KM_BYTES | 601;
 
-    public static final int KM_TAG_CREATION_DATETIME = KM_DATE | 701;
-    public static final int KM_TAG_ORIGIN = KM_ENUM | 702;
-    public static final int KM_TAG_ROLLBACK_RESISTANT = KM_BOOL | 703;
-    public static final int KM_TAG_ROOT_OF_TRUST = KM_BYTES | 704;
-    public static final int KM_TAG_UNIQUE_ID = KM_BYTES | 707;
-    public static final int KM_TAG_ATTESTATION_CHALLENGE = KM_BYTES | 708;
-    public static final int KM_TAG_ATTESTATION_ID_BRAND = KM_BYTES | 710;
-    public static final int KM_TAG_ATTESTATION_ID_DEVICE = KM_BYTES | 711;
-    public static final int KM_TAG_ATTESTATION_ID_PRODUCT = KM_BYTES | 712;
-    public static final int KM_TAG_ATTESTATION_ID_SERIAL = KM_BYTES | 713;
-    public static final int KM_TAG_ATTESTATION_ID_IMEI = KM_BYTES | 714;
-    public static final int KM_TAG_ATTESTATION_ID_MEID = KM_BYTES | 715;
-    public static final int KM_TAG_ATTESTATION_ID_MANUFACTURER = KM_BYTES | 716;
-    public static final int KM_TAG_ATTESTATION_ID_MODEL = KM_BYTES | 717;
-    public static final int KM_TAG_DEVICE_UNIQUE_ATTESTATION = KM_BOOL | 720;
+    public static final int KM_TAG_CREATION_DATETIME = Tag.CREATION_DATETIME; // KM_DATE | 701;
+    public static final int KM_TAG_ORIGIN = Tag.ORIGIN; // KM_ENUM | 702;
+    public static final int KM_TAG_ROLLBACK_RESISTANT = Tag.ROLLBACK_RESISTANCE; // KM_BOOL | 703;
+    public static final int KM_TAG_ROOT_OF_TRUST = Tag.ROOT_OF_TRUST; // KM_BYTES | 704;
+    public static final int KM_TAG_UNIQUE_ID = Tag.UNIQUE_ID; // KM_BYTES | 707;
+    public static final int KM_TAG_ATTESTATION_CHALLENGE =
+            Tag.ATTESTATION_CHALLENGE; // KM_BYTES | 708;
+    public static final int KM_TAG_ATTESTATION_ID_BRAND =
+            Tag.ATTESTATION_ID_BRAND; // KM_BYTES | 710;
+    public static final int KM_TAG_ATTESTATION_ID_DEVICE =
+            Tag.ATTESTATION_ID_DEVICE; // KM_BYTES | 711;
+    public static final int KM_TAG_ATTESTATION_ID_PRODUCT =
+            Tag.ATTESTATION_ID_PRODUCT; // KM_BYTES | 712;
+    public static final int KM_TAG_ATTESTATION_ID_SERIAL =
+            Tag.ATTESTATION_ID_SERIAL; // KM_BYTES | 713;
+    public static final int KM_TAG_ATTESTATION_ID_IMEI =
+            Tag.ATTESTATION_ID_IMEI; // KM_BYTES | 714;
+    public static final int KM_TAG_ATTESTATION_ID_MEID =
+            Tag.ATTESTATION_ID_MEID; // KM_BYTES | 715;
+    public static final int KM_TAG_ATTESTATION_ID_MANUFACTURER =
+            Tag.ATTESTATION_ID_MANUFACTURER; // KM_BYTES | 716;
+    public static final int KM_TAG_ATTESTATION_ID_MODEL =
+            Tag.ATTESTATION_ID_MODEL; // KM_BYTES | 717;
+    public static final int KM_TAG_VENDOR_PATCHLEVEL =
+            Tag.VENDOR_PATCHLEVEL; // KM_UINT | 718;
+    public static final int KM_TAG_BOOT_PATCHLEVEL =
+            Tag.BOOT_PATCHLEVEL; // KM_UINT | 719;
+    public static final int KM_TAG_DEVICE_UNIQUE_ATTESTATION =
+            Tag.DEVICE_UNIQUE_ATTESTATION; // KM_BOOL | 720;
 
-    public static final int KM_TAG_ASSOCIATED_DATA = KM_BYTES | 1000;
-    public static final int KM_TAG_NONCE = KM_BYTES | 1001;
-    public static final int KM_TAG_AUTH_TOKEN = KM_BYTES | 1002;
-    public static final int KM_TAG_MAC_LENGTH = KM_UINT | 1003;
+    public static final int KM_TAG_ASSOCIATED_DATA = Tag.ASSOCIATED_DATA; // KM_BYTES | 1000;
+    public static final int KM_TAG_NONCE = Tag.NONCE; // KM_BYTES | 1001;
+    public static final int KM_TAG_MAC_LENGTH = Tag.MAC_LENGTH; // KM_UINT | 1003;
 
     // Algorithm values.
-    public static final int KM_ALGORITHM_RSA = 1;
-    public static final int KM_ALGORITHM_EC = 3;
-    public static final int KM_ALGORITHM_AES = 32;
-    public static final int KM_ALGORITHM_3DES = 33;
-    public static final int KM_ALGORITHM_HMAC = 128;
+    public static final int KM_ALGORITHM_RSA = Algorithm.RSA;
+    public static final int KM_ALGORITHM_EC = Algorithm.EC;
+    public static final int KM_ALGORITHM_AES = Algorithm.AES;
+    public static final int KM_ALGORITHM_3DES = Algorithm.TRIPLE_DES;
+    public static final int KM_ALGORITHM_HMAC = Algorithm.HMAC;
 
     // Block modes.
-    public static final int KM_MODE_ECB = 1;
-    public static final int KM_MODE_CBC = 2;
-    public static final int KM_MODE_CTR = 3;
-    public static final int KM_MODE_GCM = 32;
+    public static final int KM_MODE_ECB = BlockMode.ECB;
+    public static final int KM_MODE_CBC = BlockMode.CBC;
+    public static final int KM_MODE_CTR = BlockMode.CTR;
+    public static final int KM_MODE_GCM = BlockMode.GCM;
 
     // Padding modes.
-    public static final int KM_PAD_NONE = 1;
-    public static final int KM_PAD_RSA_OAEP = 2;
-    public static final int KM_PAD_RSA_PSS = 3;
-    public static final int KM_PAD_RSA_PKCS1_1_5_ENCRYPT = 4;
-    public static final int KM_PAD_RSA_PKCS1_1_5_SIGN = 5;
-    public static final int KM_PAD_PKCS7 = 64;
+    public static final int KM_PAD_NONE = PaddingMode.NONE;
+    public static final int KM_PAD_RSA_OAEP = PaddingMode.RSA_OAEP;
+    public static final int KM_PAD_RSA_PSS = PaddingMode.RSA_PSS;
+    public static final int KM_PAD_RSA_PKCS1_1_5_ENCRYPT = PaddingMode.RSA_PKCS1_1_5_ENCRYPT;
+    public static final int KM_PAD_RSA_PKCS1_1_5_SIGN = PaddingMode.RSA_PKCS1_1_5_SIGN;
+    public static final int KM_PAD_PKCS7 = PaddingMode.PKCS7;
 
     // Digest modes.
-    public static final int KM_DIGEST_NONE = 0;
-    public static final int KM_DIGEST_MD5 = 1;
-    public static final int KM_DIGEST_SHA1 = 2;
-    public static final int KM_DIGEST_SHA_2_224 = 3;
-    public static final int KM_DIGEST_SHA_2_256 = 4;
-    public static final int KM_DIGEST_SHA_2_384 = 5;
-    public static final int KM_DIGEST_SHA_2_512 = 6;
+    public static final int KM_DIGEST_NONE = Digest.NONE;
+    public static final int KM_DIGEST_MD5 = Digest.MD5;
+    public static final int KM_DIGEST_SHA1 = Digest.SHA1;
+    public static final int KM_DIGEST_SHA_2_224 = Digest.SHA_2_224;
+    public static final int KM_DIGEST_SHA_2_256 = Digest.SHA_2_256;
+    public static final int KM_DIGEST_SHA_2_384 = Digest.SHA_2_384;
+    public static final int KM_DIGEST_SHA_2_512 = Digest.SHA_2_512;
 
     // Key origins.
-    public static final int KM_ORIGIN_GENERATED = 0;
-    public static final int KM_ORIGIN_IMPORTED = 2;
-    public static final int KM_ORIGIN_UNKNOWN = 3;
-    public static final int KM_ORIGIN_SECURELY_IMPORTED = 4;
+    public static final int KM_ORIGIN_GENERATED = KeyOrigin.GENERATED;
+    public static final int KM_ORIGIN_DERIVED = KeyOrigin.DERIVED;
+    public static final int KM_ORIGIN_IMPORTED = KeyOrigin.IMPORTED;
+    public static final int KM_ORIGIN_UNKNOWN = KeyOrigin.RESERVED;
+    public static final int KM_ORIGIN_SECURELY_IMPORTED = KeyOrigin.SECURELY_IMPORTED;
 
     // Key usability requirements.
     public static final int KM_BLOB_STANDALONE = 0;
     public static final int KM_BLOB_REQUIRES_FILE_SYSTEM = 1;
 
     // Operation Purposes.
-    public static final int KM_PURPOSE_ENCRYPT = 0;
-    public static final int KM_PURPOSE_DECRYPT = 1;
-    public static final int KM_PURPOSE_SIGN = 2;
-    public static final int KM_PURPOSE_VERIFY = 3;
-    public static final int KM_PURPOSE_WRAP = 5;
+    public static final int KM_PURPOSE_ENCRYPT = KeyPurpose.ENCRYPT;
+    public static final int KM_PURPOSE_DECRYPT = KeyPurpose.DECRYPT;
+    public static final int KM_PURPOSE_SIGN = KeyPurpose.SIGN;
+    public static final int KM_PURPOSE_VERIFY = KeyPurpose.VERIFY;
+    public static final int KM_PURPOSE_WRAP = KeyPurpose.WRAP_KEY;
 
     // Key formats.
-    public static final int KM_KEY_FORMAT_X509 = 0;
-    public static final int KM_KEY_FORMAT_PKCS8 = 1;
-    public static final int KM_KEY_FORMAT_RAW = 3;
+    public static final int KM_KEY_FORMAT_X509 = KeyFormat.X509;
+    public static final int KM_KEY_FORMAT_PKCS8 = KeyFormat.PKCS8;
+    public static final int KM_KEY_FORMAT_RAW = KeyFormat.RAW;
 
     // User authenticators.
-    public static final int HW_AUTH_PASSWORD = 1 << 0;
-    public static final int HW_AUTH_BIOMETRIC = 1 << 1;
+    public static final int HW_AUTH_PASSWORD = HardwareAuthenticatorType.PASSWORD;
+    public static final int HW_AUTH_BIOMETRIC = HardwareAuthenticatorType.FINGERPRINT;
+
+    // Security Levels.
+    public static final int KM_SECURITY_LEVEL_SOFTWARE = SecurityLevel.SOFTWARE;
+    public static final int KM_SECURITY_LEVEL_TRUSTED_ENVIRONMENT =
+            SecurityLevel.TRUSTED_ENVIRONMENT;
+    public static final int KM_SECURITY_LEVEL_STRONGBOX = SecurityLevel.STRONGBOX;
 
     // Error codes.
-    public static final int KM_ERROR_OK = 0;
-    public static final int KM_ERROR_ROOT_OF_TRUST_ALREADY_SET = -1;
-    public static final int KM_ERROR_UNSUPPORTED_PURPOSE = -2;
-    public static final int KM_ERROR_INCOMPATIBLE_PURPOSE = -3;
-    public static final int KM_ERROR_UNSUPPORTED_ALGORITHM = -4;
-    public static final int KM_ERROR_INCOMPATIBLE_ALGORITHM = -5;
-    public static final int KM_ERROR_UNSUPPORTED_KEY_SIZE = -6;
-    public static final int KM_ERROR_UNSUPPORTED_BLOCK_MODE = -7;
-    public static final int KM_ERROR_INCOMPATIBLE_BLOCK_MODE = -8;
-    public static final int KM_ERROR_UNSUPPORTED_MAC_LENGTH = -9;
-    public static final int KM_ERROR_UNSUPPORTED_PADDING_MODE = -10;
-    public static final int KM_ERROR_INCOMPATIBLE_PADDING_MODE = -11;
-    public static final int KM_ERROR_UNSUPPORTED_DIGEST = -12;
-    public static final int KM_ERROR_INCOMPATIBLE_DIGEST = -13;
-    public static final int KM_ERROR_INVALID_EXPIRATION_TIME = -14;
-    public static final int KM_ERROR_INVALID_USER_ID = -15;
-    public static final int KM_ERROR_INVALID_AUTHORIZATION_TIMEOUT = -16;
-    public static final int KM_ERROR_UNSUPPORTED_KEY_FORMAT = -17;
-    public static final int KM_ERROR_INCOMPATIBLE_KEY_FORMAT = -18;
-    public static final int KM_ERROR_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM = -19;
-    public static final int KM_ERROR_UNSUPPORTED_KEY_VERIFICATION_ALGORITHM = -20;
-    public static final int KM_ERROR_INVALID_INPUT_LENGTH = -21;
-    public static final int KM_ERROR_KEY_EXPORT_OPTIONS_INVALID = -22;
-    public static final int KM_ERROR_DELEGATION_NOT_ALLOWED = -23;
-    public static final int KM_ERROR_KEY_NOT_YET_VALID = -24;
-    public static final int KM_ERROR_KEY_EXPIRED = -25;
-    public static final int KM_ERROR_KEY_USER_NOT_AUTHENTICATED = -26;
-    public static final int KM_ERROR_OUTPUT_PARAMETER_NULL = -27;
-    public static final int KM_ERROR_INVALID_OPERATION_HANDLE = -28;
-    public static final int KM_ERROR_INSUFFICIENT_BUFFER_SPACE = -29;
-    public static final int KM_ERROR_VERIFICATION_FAILED = -30;
-    public static final int KM_ERROR_TOO_MANY_OPERATIONS = -31;
-    public static final int KM_ERROR_UNEXPECTED_NULL_POINTER = -32;
-    public static final int KM_ERROR_INVALID_KEY_BLOB = -33;
-    public static final int KM_ERROR_IMPORTED_KEY_NOT_ENCRYPTED = -34;
-    public static final int KM_ERROR_IMPORTED_KEY_DECRYPTION_FAILED = -35;
-    public static final int KM_ERROR_IMPORTED_KEY_NOT_SIGNED = -36;
-    public static final int KM_ERROR_IMPORTED_KEY_VERIFICATION_FAILED = -37;
-    public static final int KM_ERROR_INVALID_ARGUMENT = -38;
-    public static final int KM_ERROR_UNSUPPORTED_TAG = -39;
-    public static final int KM_ERROR_INVALID_TAG = -40;
-    public static final int KM_ERROR_MEMORY_ALLOCATION_FAILED = -41;
-    public static final int KM_ERROR_INVALID_RESCOPING = -42;
-    public static final int KM_ERROR_IMPORT_PARAMETER_MISMATCH = -44;
-    public static final int KM_ERROR_SECURE_HW_ACCESS_DENIED = -45;
-    public static final int KM_ERROR_OPERATION_CANCELLED = -46;
-    public static final int KM_ERROR_CONCURRENT_ACCESS_CONFLICT = -47;
-    public static final int KM_ERROR_SECURE_HW_BUSY = -48;
-    public static final int KM_ERROR_SECURE_HW_COMMUNICATION_FAILED = -49;
-    public static final int KM_ERROR_UNSUPPORTED_EC_FIELD = -50;
-    public static final int KM_ERROR_MISSING_NONCE = -51;
-    public static final int KM_ERROR_INVALID_NONCE = -52;
-    public static final int KM_ERROR_MISSING_MAC_LENGTH = -53;
-    public static final int KM_ERROR_KEY_RATE_LIMIT_EXCEEDED = -54;
-    public static final int KM_ERROR_CALLER_NONCE_PROHIBITED = -55;
-    public static final int KM_ERROR_KEY_MAX_OPS_EXCEEDED = -56;
-    public static final int KM_ERROR_INVALID_MAC_LENGTH = -57;
-    public static final int KM_ERROR_MISSING_MIN_MAC_LENGTH = -58;
-    public static final int KM_ERROR_UNSUPPORTED_MIN_MAC_LENGTH = -59;
-    public static final int KM_ERROR_CANNOT_ATTEST_IDS = -66;
-    public static final int KM_ERROR_DEVICE_LOCKED = -72;
-    public static final int KM_ERROR_UNIMPLEMENTED = -100;
-    public static final int KM_ERROR_VERSION_MISMATCH = -101;
-    public static final int KM_ERROR_UNKNOWN_ERROR = -1000;
+    public static final int KM_ERROR_OK = ErrorCode.OK;
+    public static final int KM_ERROR_ROOT_OF_TRUST_ALREADY_SET =
+            ErrorCode.ROOT_OF_TRUST_ALREADY_SET; // -1;
+    public static final int KM_ERROR_UNSUPPORTED_PURPOSE =
+            ErrorCode.UNSUPPORTED_PURPOSE; // -2;
+    public static final int KM_ERROR_INCOMPATIBLE_PURPOSE =
+            ErrorCode.INCOMPATIBLE_PURPOSE; // -3;
+    public static final int KM_ERROR_UNSUPPORTED_ALGORITHM =
+            ErrorCode.UNSUPPORTED_ALGORITHM; // -4;
+    public static final int KM_ERROR_INCOMPATIBLE_ALGORITHM =
+            ErrorCode.INCOMPATIBLE_ALGORITHM; // -5;
+    public static final int KM_ERROR_UNSUPPORTED_KEY_SIZE =
+            ErrorCode.UNSUPPORTED_KEY_SIZE; // -6;
+    public static final int KM_ERROR_UNSUPPORTED_BLOCK_MODE =
+            ErrorCode.UNSUPPORTED_BLOCK_MODE; // -7;
+    public static final int KM_ERROR_INCOMPATIBLE_BLOCK_MODE =
+            ErrorCode.INCOMPATIBLE_BLOCK_MODE; // -8;
+    public static final int KM_ERROR_UNSUPPORTED_MAC_LENGTH =
+            ErrorCode.UNSUPPORTED_MAC_LENGTH; // -9;
+    public static final int KM_ERROR_UNSUPPORTED_PADDING_MODE =
+            ErrorCode.UNSUPPORTED_PADDING_MODE; // -10;
+    public static final int KM_ERROR_INCOMPATIBLE_PADDING_MODE =
+            ErrorCode.INCOMPATIBLE_PADDING_MODE; // -11;
+    public static final int KM_ERROR_UNSUPPORTED_DIGEST =
+            ErrorCode.UNSUPPORTED_DIGEST; // -12;
+    public static final int KM_ERROR_INCOMPATIBLE_DIGEST =
+            ErrorCode.INCOMPATIBLE_DIGEST; // -13;
+    public static final int KM_ERROR_INVALID_EXPIRATION_TIME =
+            ErrorCode.INVALID_EXPIRATION_TIME; // -14;
+    public static final int KM_ERROR_INVALID_USER_ID =
+            ErrorCode.INVALID_USER_ID; // -15;
+    public static final int KM_ERROR_INVALID_AUTHORIZATION_TIMEOUT =
+            ErrorCode.INVALID_AUTHORIZATION_TIMEOUT; // -16;
+    public static final int KM_ERROR_UNSUPPORTED_KEY_FORMAT =
+            ErrorCode.UNSUPPORTED_KEY_FORMAT; // -17;
+    public static final int KM_ERROR_INCOMPATIBLE_KEY_FORMAT =
+            ErrorCode.INCOMPATIBLE_KEY_FORMAT; // -18;
+    public static final int KM_ERROR_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM =
+            ErrorCode.UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM; // -19;
+    public static final int KM_ERROR_UNSUPPORTED_KEY_VERIFICATION_ALGORITHM =
+            ErrorCode.UNSUPPORTED_KEY_VERIFICATION_ALGORITHM; // -20;
+    public static final int KM_ERROR_INVALID_INPUT_LENGTH =
+            ErrorCode.INVALID_INPUT_LENGTH; // -21;
+    public static final int KM_ERROR_KEY_EXPORT_OPTIONS_INVALID =
+            ErrorCode.KEY_EXPORT_OPTIONS_INVALID; // -22;
+    public static final int KM_ERROR_DELEGATION_NOT_ALLOWED =
+            ErrorCode.DELEGATION_NOT_ALLOWED; // -23;
+    public static final int KM_ERROR_KEY_NOT_YET_VALID =
+            ErrorCode.KEY_NOT_YET_VALID; // -24;
+    public static final int KM_ERROR_KEY_EXPIRED =
+            ErrorCode.KEY_EXPIRED; // -25;
+    public static final int KM_ERROR_KEY_USER_NOT_AUTHENTICATED =
+            ErrorCode.KEY_USER_NOT_AUTHENTICATED; // -26;
+    public static final int KM_ERROR_OUTPUT_PARAMETER_NULL =
+            ErrorCode.OUTPUT_PARAMETER_NULL; // -27;
+    public static final int KM_ERROR_INVALID_OPERATION_HANDLE =
+            ErrorCode.INVALID_OPERATION_HANDLE; // -28;
+    public static final int KM_ERROR_INSUFFICIENT_BUFFER_SPACE =
+            ErrorCode.INSUFFICIENT_BUFFER_SPACE; // -29;
+    public static final int KM_ERROR_VERIFICATION_FAILED =
+            ErrorCode.VERIFICATION_FAILED; // -30;
+    public static final int KM_ERROR_TOO_MANY_OPERATIONS =
+            ErrorCode.TOO_MANY_OPERATIONS; // -31;
+    public static final int KM_ERROR_UNEXPECTED_NULL_POINTER =
+            ErrorCode.UNEXPECTED_NULL_POINTER; // -32;
+    public static final int KM_ERROR_INVALID_KEY_BLOB =
+            ErrorCode.INVALID_KEY_BLOB; // -33;
+    public static final int KM_ERROR_IMPORTED_KEY_NOT_ENCRYPTED =
+            ErrorCode.IMPORTED_KEY_NOT_ENCRYPTED; // -34;
+    public static final int KM_ERROR_IMPORTED_KEY_DECRYPTION_FAILED =
+            ErrorCode.IMPORTED_KEY_DECRYPTION_FAILED; // -35;
+    public static final int KM_ERROR_IMPORTED_KEY_NOT_SIGNED =
+            ErrorCode.IMPORTED_KEY_NOT_SIGNED; // -36;
+    public static final int KM_ERROR_IMPORTED_KEY_VERIFICATION_FAILED =
+            ErrorCode.IMPORTED_KEY_VERIFICATION_FAILED; // -37;
+    public static final int KM_ERROR_INVALID_ARGUMENT =
+            ErrorCode.INVALID_ARGUMENT; // -38;
+    public static final int KM_ERROR_UNSUPPORTED_TAG =
+            ErrorCode.UNSUPPORTED_TAG; // -39;
+    public static final int KM_ERROR_INVALID_TAG =
+            ErrorCode.INVALID_TAG; // -40;
+    public static final int KM_ERROR_MEMORY_ALLOCATION_FAILED =
+            ErrorCode.MEMORY_ALLOCATION_FAILED; // -41;
+    public static final int KM_ERROR_IMPORT_PARAMETER_MISMATCH =
+            ErrorCode.IMPORT_PARAMETER_MISMATCH; // -44;
+    public static final int KM_ERROR_SECURE_HW_ACCESS_DENIED =
+            ErrorCode.SECURE_HW_ACCESS_DENIED; // -45;
+    public static final int KM_ERROR_OPERATION_CANCELLED =
+            ErrorCode.OPERATION_CANCELLED; // -46;
+    public static final int KM_ERROR_CONCURRENT_ACCESS_CONFLICT =
+            ErrorCode.CONCURRENT_ACCESS_CONFLICT; // -47;
+    public static final int KM_ERROR_SECURE_HW_BUSY =
+            ErrorCode.SECURE_HW_BUSY; // -48;
+    public static final int KM_ERROR_SECURE_HW_COMMUNICATION_FAILED =
+            ErrorCode.SECURE_HW_COMMUNICATION_FAILED; // -49;
+    public static final int KM_ERROR_UNSUPPORTED_EC_FIELD =
+            ErrorCode.UNSUPPORTED_EC_FIELD; // -50;
+    public static final int KM_ERROR_MISSING_NONCE =
+            ErrorCode.MISSING_NONCE; // -51;
+    public static final int KM_ERROR_INVALID_NONCE =
+            ErrorCode.INVALID_NONCE; // -52;
+    public static final int KM_ERROR_MISSING_MAC_LENGTH =
+            ErrorCode.MISSING_MAC_LENGTH; // -53;
+    public static final int KM_ERROR_KEY_RATE_LIMIT_EXCEEDED =
+            ErrorCode.KEY_RATE_LIMIT_EXCEEDED; // -54;
+    public static final int KM_ERROR_CALLER_NONCE_PROHIBITED =
+            ErrorCode.CALLER_NONCE_PROHIBITED; // -55;
+    public static final int KM_ERROR_KEY_MAX_OPS_EXCEEDED =
+            ErrorCode.KEY_MAX_OPS_EXCEEDED; // -56;
+    public static final int KM_ERROR_INVALID_MAC_LENGTH =
+            ErrorCode.INVALID_MAC_LENGTH; // -57;
+    public static final int KM_ERROR_MISSING_MIN_MAC_LENGTH =
+            ErrorCode.MISSING_MIN_MAC_LENGTH; // -58;
+    public static final int KM_ERROR_UNSUPPORTED_MIN_MAC_LENGTH =
+            ErrorCode.UNSUPPORTED_MIN_MAC_LENGTH; // -59;
+    public static final int KM_ERROR_CANNOT_ATTEST_IDS =
+            ErrorCode.CANNOT_ATTEST_IDS; // -66;
+    public static final int KM_ERROR_HARDWARE_TYPE_UNAVAILABLE =
+            ErrorCode.HARDWARE_TYPE_UNAVAILABLE; // -68;
+    public static final int KM_ERROR_DEVICE_LOCKED =
+            ErrorCode.DEVICE_LOCKED; // -72;
+    public static final int KM_ERROR_UNIMPLEMENTED =
+            ErrorCode.UNIMPLEMENTED; // -100;
+    public static final int KM_ERROR_VERSION_MISMATCH =
+            ErrorCode.VERSION_MISMATCH; // -101;
+    public static final int KM_ERROR_UNKNOWN_ERROR =
+            ErrorCode.UNKNOWN_ERROR; // -1000;
 
     public static final Map<Integer, String> sErrorCodeToString = new HashMap<Integer, String>();
     static {
@@ -265,6 +364,8 @@
         sErrorCodeToString.put(KM_ERROR_INVALID_MAC_LENGTH,
                 "Invalid MAC or authentication tag length");
         sErrorCodeToString.put(KM_ERROR_CANNOT_ATTEST_IDS, "Unable to attest device ids");
+        sErrorCodeToString.put(KM_ERROR_HARDWARE_TYPE_UNAVAILABLE, "Requested security level "
+                        + "(likely Strongbox) is not available.");
         sErrorCodeToString.put(KM_ERROR_DEVICE_LOCKED, "Device locked");
         sErrorCodeToString.put(KM_ERROR_UNIMPLEMENTED, "Not implemented");
         sErrorCodeToString.put(KM_ERROR_UNKNOWN_ERROR, "Unknown error");
diff --git a/core/java/android/security/keymaster/KeymasterIntArgument.java b/core/java/android/security/keymaster/KeymasterIntArgument.java
index 01d38c7..6aed8c9 100644
--- a/core/java/android/security/keymaster/KeymasterIntArgument.java
+++ b/core/java/android/security/keymaster/KeymasterIntArgument.java
@@ -17,16 +17,17 @@
 package android.security.keymaster;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 
 /**
  * @hide
  */
 class KeymasterIntArgument extends KeymasterArgument {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final int value;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public KeymasterIntArgument(int tag, int value) {
         super(tag);
         switch (KeymasterDefs.getTagType(tag)) {
@@ -41,7 +42,7 @@
         this.value = value;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public KeymasterIntArgument(int tag, Parcel in) {
         super(tag);
         value = in.readInt();
diff --git a/core/java/android/security/keymaster/KeymasterLongArgument.java b/core/java/android/security/keymaster/KeymasterLongArgument.java
index 3ac27cc..c0c6f0e 100644
--- a/core/java/android/security/keymaster/KeymasterLongArgument.java
+++ b/core/java/android/security/keymaster/KeymasterLongArgument.java
@@ -17,16 +17,17 @@
 package android.security.keymaster;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 
 /**
  * @hide
  */
 class KeymasterLongArgument extends KeymasterArgument {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final long value;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public KeymasterLongArgument(int tag, long value) {
         super(tag);
         switch (KeymasterDefs.getTagType(tag)) {
@@ -39,7 +40,7 @@
         this.value = value;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public KeymasterLongArgument(int tag, Parcel in) {
         super(tag);
         value = in.readLong();
diff --git a/core/java/android/security/keymaster/OperationResult.java b/core/java/android/security/keymaster/OperationResult.java
index b4e155a..0ace764 100644
--- a/core/java/android/security/keymaster/OperationResult.java
+++ b/core/java/android/security/keymaster/OperationResult.java
@@ -17,6 +17,7 @@
 package android.security.keymaster;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.IBinder;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -34,7 +35,7 @@
     public final byte[] output;
     public final KeymasterArguments outParams;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final @android.annotation.NonNull Parcelable.Creator<OperationResult> CREATOR = new
             Parcelable.Creator<OperationResult>() {
                 @Override
diff --git a/core/java/android/service/appprediction/AppPredictionService.java b/core/java/android/service/appprediction/AppPredictionService.java
index be20570..2d8aee5 100644
--- a/core/java/android/service/appprediction/AppPredictionService.java
+++ b/core/java/android/service/appprediction/AppPredictionService.java
@@ -22,7 +22,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.app.Service;
 import android.app.prediction.AppPredictionContext;
 import android.app.prediction.AppPredictionSessionId;
@@ -52,7 +51,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public abstract class AppPredictionService extends Service {
 
     private static final String TAG = "AppPredictionService";
diff --git a/core/java/android/service/autofill/AutofillFieldClassificationService.java b/core/java/android/service/autofill/AutofillFieldClassificationService.java
index 28842a7..9d9b881 100644
--- a/core/java/android/service/autofill/AutofillFieldClassificationService.java
+++ b/core/java/android/service/autofill/AutofillFieldClassificationService.java
@@ -20,7 +20,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.app.Service;
 import android.content.Intent;
 import android.os.Bundle;
@@ -53,7 +52,6 @@
  * {@hide}
  */
 @SystemApi
-@TestApi
 public abstract class AutofillFieldClassificationService extends Service {
 
     private static final String TAG = "AutofillFieldClassificationService";
@@ -121,7 +119,6 @@
 
     /** @hide */
     @SystemApi
-    @TestApi
     public AutofillFieldClassificationService() {
     }
 
diff --git a/core/java/android/service/autofill/Dataset.java b/core/java/android/service/autofill/Dataset.java
index 2d99c41..18d7992 100644
--- a/core/java/android/service/autofill/Dataset.java
+++ b/core/java/android/service/autofill/Dataset.java
@@ -21,7 +21,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.content.IntentSender;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -249,7 +248,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public Builder(@NonNull InlinePresentation inlinePresentation) {
             Preconditions.checkNotNull(inlinePresentation, "inlinePresentation must be non-null");
             mInlinePresentation = inlinePresentation;
@@ -604,7 +602,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public @NonNull Builder setFieldInlinePresentation(@NonNull AutofillId id,
                 @Nullable AutofillValue value, @Nullable Pattern filter,
                 @NonNull InlinePresentation inlinePresentation) {
diff --git a/core/java/android/service/autofill/InlineSuggestionRenderService.java b/core/java/android/service/autofill/InlineSuggestionRenderService.java
index 839caff..cdcd6591 100644
--- a/core/java/android/service/autofill/InlineSuggestionRenderService.java
+++ b/core/java/android/service/autofill/InlineSuggestionRenderService.java
@@ -20,7 +20,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.app.Service;
 import android.content.Intent;
 import android.content.IntentSender;
@@ -51,7 +50,6 @@
  * {@hide}
  */
 @SystemApi
-@TestApi
 public abstract class InlineSuggestionRenderService extends Service {
 
     private static final String TAG = "InlineSuggestionRenderService";
diff --git a/core/java/android/service/autofill/InternalTransformation.java b/core/java/android/service/autofill/InternalTransformation.java
index 0dba2b9..d31ea99 100644
--- a/core/java/android/service/autofill/InternalTransformation.java
+++ b/core/java/android/service/autofill/InternalTransformation.java
@@ -45,6 +45,7 @@
      * @param template the {@link RemoteViews presentation template}.
      * @param childViewId resource id of the child view inside the template.
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     abstract void apply(@NonNull ValueFinder finder, @NonNull RemoteViews template,
             int childViewId) throws Exception;
 
diff --git a/core/java/android/service/autofill/augmented/AugmentedAutofillService.java b/core/java/android/service/autofill/augmented/AugmentedAutofillService.java
index 620c457..b34c2dc 100644
--- a/core/java/android/service/autofill/augmented/AugmentedAutofillService.java
+++ b/core/java/android/service/autofill/augmented/AugmentedAutofillService.java
@@ -25,7 +25,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.app.Service;
 import android.content.ComponentName;
 import android.content.Intent;
@@ -70,7 +69,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public abstract class AugmentedAutofillService extends Service {
 
     private static final String TAG = AugmentedAutofillService.class.getSimpleName();
diff --git a/core/java/android/service/autofill/augmented/FillCallback.java b/core/java/android/service/autofill/augmented/FillCallback.java
index fc3baf1..9fc7f34 100644
--- a/core/java/android/service/autofill/augmented/FillCallback.java
+++ b/core/java/android/service/autofill/augmented/FillCallback.java
@@ -20,7 +20,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Bundle;
 import android.service.autofill.Dataset;
 import android.service.autofill.augmented.AugmentedAutofillService.AutofillProxy;
@@ -34,7 +33,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class FillCallback {
 
     private static final String TAG = FillCallback.class.getSimpleName();
diff --git a/core/java/android/service/autofill/augmented/FillController.java b/core/java/android/service/autofill/augmented/FillController.java
index 7d552d6..7cd674e 100644
--- a/core/java/android/service/autofill/augmented/FillController.java
+++ b/core/java/android/service/autofill/augmented/FillController.java
@@ -19,7 +19,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.RemoteException;
 import android.service.autofill.augmented.AugmentedAutofillService.AutofillProxy;
 import android.util.Log;
@@ -37,7 +36,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class FillController {
     private static final String TAG = FillController.class.getSimpleName();
 
diff --git a/core/java/android/service/autofill/augmented/FillResponse.java b/core/java/android/service/autofill/augmented/FillResponse.java
index f72eb78..53484cf 100644
--- a/core/java/android/service/autofill/augmented/FillResponse.java
+++ b/core/java/android/service/autofill/augmented/FillResponse.java
@@ -18,7 +18,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Bundle;
 import android.service.autofill.Dataset;
 
@@ -33,7 +32,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 @DataClass(
         genBuilder = true,
         genHiddenGetters = true)
diff --git a/core/java/android/service/autofill/augmented/FillWindow.java b/core/java/android/service/autofill/augmented/FillWindow.java
index 8e86646..d4f7e11 100644
--- a/core/java/android/service/autofill/augmented/FillWindow.java
+++ b/core/java/android/service/autofill/augmented/FillWindow.java
@@ -23,7 +23,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.graphics.Rect;
 import android.os.Handler;
 import android.os.Looper;
@@ -64,7 +63,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class FillWindow implements AutoCloseable {
     private static final String TAG = FillWindow.class.getSimpleName();
 
diff --git a/core/java/android/service/autofill/augmented/PresentationParams.java b/core/java/android/service/autofill/augmented/PresentationParams.java
index 8b3a001..fe78d22 100644
--- a/core/java/android/service/autofill/augmented/PresentationParams.java
+++ b/core/java/android/service/autofill/augmented/PresentationParams.java
@@ -18,7 +18,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.graphics.Rect;
 import android.service.autofill.augmented.AugmentedAutofillService.AutofillProxy;
 import android.view.View;
@@ -36,7 +35,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public abstract class PresentationParams {
 
     // /** @hide */
@@ -61,7 +59,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public abstract static class Area {
 
         /** @hide */
diff --git a/core/java/android/service/carrier/CarrierMessagingServiceWrapper.java b/core/java/android/service/carrier/CarrierMessagingServiceWrapper.java
index 2a809b1..4ffffc6 100644
--- a/core/java/android/service/carrier/CarrierMessagingServiceWrapper.java
+++ b/core/java/android/service/carrier/CarrierMessagingServiceWrapper.java
@@ -46,12 +46,13 @@
  * CarrierMessagingService.
  * @hide
  */
-public abstract class CarrierMessagingServiceWrapper {
+public final class CarrierMessagingServiceWrapper {
     // Populated by bindToCarrierMessagingService. bindToCarrierMessagingService must complete
     // prior to calling disposeConnection so that mCarrierMessagingServiceConnection is initialized.
     private volatile CarrierMessagingServiceConnection mCarrierMessagingServiceConnection;
 
     private volatile ICarrierMessagingService mICarrierMessagingService;
+    private Runnable mOnServiceReadyCallback;
 
     /**
      * Binds to the carrier messaging service under package {@code carrierPackageName}. This method
@@ -63,12 +64,14 @@
      * @hide
      */
     public boolean bindToCarrierMessagingService(@NonNull Context context,
-            @NonNull String carrierPackageName) {
+            @NonNull String carrierPackageName,
+            @NonNull Runnable onServiceReadyCallback) {
         Preconditions.checkState(mCarrierMessagingServiceConnection == null);
 
         Intent intent = new Intent(CarrierMessagingService.SERVICE_INTERFACE);
         intent.setPackage(carrierPackageName);
         mCarrierMessagingServiceConnection = new CarrierMessagingServiceConnection();
+        mOnServiceReadyCallback = onServiceReadyCallback;
         return context.bindService(intent, mCarrierMessagingServiceConnection,
                 Context.BIND_AUTO_CREATE);
     }
@@ -83,22 +86,17 @@
         Preconditions.checkNotNull(mCarrierMessagingServiceConnection);
         context.unbindService(mCarrierMessagingServiceConnection);
         mCarrierMessagingServiceConnection = null;
+        mOnServiceReadyCallback = null;
     }
 
     /**
-     * Implemented by subclasses to use the carrier messaging service once it is ready.
-     * @hide
-     */
-    public abstract void onServiceReady();
-
-    /**
      * Called when connection with service is established.
      *
      * @param carrierMessagingService the carrier messaing service interface
      */
     private void onServiceReady(ICarrierMessagingService carrierMessagingService) {
         mICarrierMessagingService = carrierMessagingService;
-        onServiceReady();
+        if (mOnServiceReadyCallback != null) mOnServiceReadyCallback.run();
     }
 
     /**
@@ -113,11 +111,11 @@
      * @hide
      */
     public void filterSms(@NonNull MessagePdu pdu, @NonNull String format, int destPort,
-            int subId, @NonNull final CarrierMessagingCallbackWrapper callback) {
+            int subId, @NonNull final CarrierMessagingCallback callback) {
         if (mICarrierMessagingService != null) {
             try {
                 mICarrierMessagingService.filterSms(pdu, format, destPort, subId,
-                        new CarrierMessagingCallbackWrapperInternal(callback));
+                        new CarrierMessagingCallbackInternal(callback));
             } catch (RemoteException e) {
                 throw new RuntimeException(e);
             }
@@ -137,11 +135,11 @@
      * @hide
      */
     public void sendTextSms(@NonNull String text, int subId, @NonNull String destAddress,
-            int sendSmsFlag, @NonNull final CarrierMessagingCallbackWrapper callback) {
+            int sendSmsFlag, @NonNull final CarrierMessagingCallback callback) {
         if (mICarrierMessagingService != null) {
             try {
                 mICarrierMessagingService.sendTextSms(text, subId, destAddress, sendSmsFlag,
-                        new CarrierMessagingCallbackWrapperInternal(callback));
+                        new CarrierMessagingCallbackInternal(callback));
             } catch (RemoteException e) {
                 throw new RuntimeException(e);
             }
@@ -163,11 +161,11 @@
      */
     public void sendDataSms(@NonNull byte[] data, int subId, @NonNull String destAddress,
             int destPort, int sendSmsFlag,
-            @NonNull final CarrierMessagingCallbackWrapper callback) {
+            @NonNull final CarrierMessagingCallback callback) {
         if (mICarrierMessagingService != null) {
             try {
                 mICarrierMessagingService.sendDataSms(data, subId, destAddress, destPort,
-                        sendSmsFlag, new CarrierMessagingCallbackWrapperInternal(callback));
+                        sendSmsFlag, new CarrierMessagingCallbackInternal(callback));
             } catch (RemoteException e) {
                 throw new RuntimeException(e);
             }
@@ -188,11 +186,11 @@
      */
     public void sendMultipartTextSms(@NonNull List<String> parts, int subId,
             @NonNull String destAddress, int sendSmsFlag,
-            @NonNull final CarrierMessagingCallbackWrapper callback) {
+            @NonNull final CarrierMessagingCallback callback) {
         if (mICarrierMessagingService != null) {
             try {
                 mICarrierMessagingService.sendMultipartTextSms(parts, subId, destAddress,
-                        sendSmsFlag, new CarrierMessagingCallbackWrapperInternal(callback));
+                        sendSmsFlag, new CarrierMessagingCallbackInternal(callback));
             } catch (RemoteException e) {
                 throw new RuntimeException(e);
             }
@@ -212,11 +210,11 @@
      * @hide
      */
     public void sendMms(@NonNull Uri pduUri, int subId, @NonNull Uri location,
-            @NonNull final CarrierMessagingCallbackWrapper callback) {
+            @NonNull final CarrierMessagingCallback callback) {
         if (mICarrierMessagingService != null) {
             try {
                 mICarrierMessagingService.sendMms(pduUri, subId, location,
-                        new CarrierMessagingCallbackWrapperInternal(callback));
+                        new CarrierMessagingCallbackInternal(callback));
             } catch (RemoteException e) {
                 throw new RuntimeException(e);
             }
@@ -235,11 +233,11 @@
      * @hide
      */
     public void downloadMms(@NonNull Uri pduUri, int subId, @NonNull Uri location,
-            @NonNull final CarrierMessagingCallbackWrapper callback) {
+            @NonNull final CarrierMessagingCallback callback) {
         if (mICarrierMessagingService != null) {
             try {
                 mICarrierMessagingService.downloadMms(pduUri, subId, location,
-                        new CarrierMessagingCallbackWrapperInternal(callback));
+                        new CarrierMessagingCallbackInternal(callback));
             } catch (RemoteException e) {
                 throw new RuntimeException(e);
             }
@@ -265,7 +263,7 @@
      * {@link CarrierMessagingServiceWrapper}.
      * @hide
      */
-    public abstract static class CarrierMessagingCallbackWrapper {
+    public interface CarrierMessagingCallback {
 
         /**
          * Response callback for {@link CarrierMessagingServiceWrapper#filterSms}.
@@ -277,7 +275,7 @@
          *               {@see CarrierMessagingService#onReceiveTextSms}.
          * @hide
          */
-        public void onFilterComplete(int result) {
+        default void onFilterComplete(int result) {
 
         }
 
@@ -291,7 +289,7 @@
          *                   only if result is {@link CarrierMessagingService#SEND_STATUS_OK}.
          * @hide
          */
-        public void onSendSmsComplete(int result, int messageRef) {
+        default void onSendSmsComplete(int result, int messageRef) {
 
         }
 
@@ -305,7 +303,7 @@
          *                    {@link CarrierMessagingService#SEND_STATUS_OK}.
          * @hide
          */
-        public void onSendMultipartSmsComplete(int result, @Nullable int[] messageRefs) {
+        default void onSendMultipartSmsComplete(int result, @Nullable int[] messageRefs) {
 
         }
 
@@ -319,7 +317,7 @@
          *                    {@link CarrierMessagingService#SEND_STATUS_OK}.
          * @hide
          */
-        public void onSendMmsComplete(int result, @Nullable byte[] sendConfPdu) {
+        default void onSendMmsComplete(int result, @Nullable byte[] sendConfPdu) {
 
         }
 
@@ -330,43 +328,43 @@
          *               and {@link CarrierMessagingService#SEND_STATUS_ERROR}.
          * @hide
          */
-        public void onDownloadMmsComplete(int result) {
+        default void onDownloadMmsComplete(int result) {
 
         }
     }
 
-    private final class CarrierMessagingCallbackWrapperInternal
+    private final class CarrierMessagingCallbackInternal
             extends ICarrierMessagingCallback.Stub {
-        CarrierMessagingCallbackWrapper mCarrierMessagingCallbackWrapper;
+        CarrierMessagingCallback mCarrierMessagingCallback;
 
-        CarrierMessagingCallbackWrapperInternal(CarrierMessagingCallbackWrapper callback) {
-            mCarrierMessagingCallbackWrapper = callback;
+        CarrierMessagingCallbackInternal(CarrierMessagingCallback callback) {
+            mCarrierMessagingCallback = callback;
         }
 
         @Override
         public void onFilterComplete(int result) throws RemoteException {
-            mCarrierMessagingCallbackWrapper.onFilterComplete(result);
+            mCarrierMessagingCallback.onFilterComplete(result);
         }
 
         @Override
         public void onSendSmsComplete(int result, int messageRef) throws RemoteException {
-            mCarrierMessagingCallbackWrapper.onSendSmsComplete(result, messageRef);
+            mCarrierMessagingCallback.onSendSmsComplete(result, messageRef);
         }
 
         @Override
         public void onSendMultipartSmsComplete(int result, int[] messageRefs)
                 throws RemoteException {
-            mCarrierMessagingCallbackWrapper.onSendMultipartSmsComplete(result, messageRefs);
+            mCarrierMessagingCallback.onSendMultipartSmsComplete(result, messageRefs);
         }
 
         @Override
         public void onSendMmsComplete(int result, byte[] sendConfPdu) throws RemoteException {
-            mCarrierMessagingCallbackWrapper.onSendMmsComplete(result, sendConfPdu);
+            mCarrierMessagingCallback.onSendMmsComplete(result, sendConfPdu);
         }
 
         @Override
         public void onDownloadMmsComplete(int result) throws RemoteException {
-            mCarrierMessagingCallbackWrapper.onDownloadMmsComplete(result);
+            mCarrierMessagingCallback.onDownloadMmsComplete(result);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/core/java/android/service/contentcapture/ActivityEvent.java b/core/java/android/service/contentcapture/ActivityEvent.java
index b741cff..1188a3f 100644
--- a/core/java/android/service/contentcapture/ActivityEvent.java
+++ b/core/java/android/service/contentcapture/ActivityEvent.java
@@ -19,7 +19,6 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.app.usage.UsageEvents.Event;
 import android.content.ComponentName;
 import android.os.Parcel;
@@ -34,7 +33,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class ActivityEvent implements Parcelable {
 
     /**
diff --git a/core/java/android/service/contentcapture/ContentCaptureService.java b/core/java/android/service/contentcapture/ContentCaptureService.java
index 84f6028..3c44cfd 100644
--- a/core/java/android/service/contentcapture/ContentCaptureService.java
+++ b/core/java/android/service/contentcapture/ContentCaptureService.java
@@ -26,7 +26,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.app.Service;
 import android.content.ComponentName;
 import android.content.ContentCaptureOptions;
@@ -74,7 +73,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public abstract class ContentCaptureService extends Service {
 
     private static final String TAG = ContentCaptureService.class.getSimpleName();
@@ -344,7 +342,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public void onDataShareRequest(@NonNull DataShareRequest request,
             @NonNull DataShareCallback callback) {
         if (sVerbose) Log.v(TAG, "onDataShareRequest()");
diff --git a/core/java/android/service/contentcapture/DataShareCallback.java b/core/java/android/service/contentcapture/DataShareCallback.java
index 5df8a4b..e3c7bb3 100644
--- a/core/java/android/service/contentcapture/DataShareCallback.java
+++ b/core/java/android/service/contentcapture/DataShareCallback.java
@@ -19,7 +19,6 @@
 import android.annotation.CallbackExecutor;
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 
 import java.util.concurrent.Executor;
 
@@ -33,7 +32,6 @@
  * @hide
  **/
 @SystemApi
-@TestApi
 public interface DataShareCallback {
 
     /** Accept the data share.
diff --git a/core/java/android/service/contentcapture/DataShareReadAdapter.java b/core/java/android/service/contentcapture/DataShareReadAdapter.java
index 8cd9eea..4526aba 100644
--- a/core/java/android/service/contentcapture/DataShareReadAdapter.java
+++ b/core/java/android/service/contentcapture/DataShareReadAdapter.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.ParcelFileDescriptor;
 import android.view.contentcapture.ContentCaptureManager.DataShareError;
 
@@ -29,7 +28,6 @@
  * @hide
  **/
 @SystemApi
-@TestApi
 public interface DataShareReadAdapter {
 
     /**
diff --git a/core/java/android/service/contentcapture/SnapshotData.java b/core/java/android/service/contentcapture/SnapshotData.java
index 5b3930a..bf469b4 100644
--- a/core/java/android/service/contentcapture/SnapshotData.java
+++ b/core/java/android/service/contentcapture/SnapshotData.java
@@ -19,7 +19,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.app.assist.AssistContent;
 import android.app.assist.AssistStructure;
 import android.os.Bundle;
@@ -32,7 +31,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class SnapshotData implements Parcelable {
 
     private final @NonNull Bundle mAssistData;
diff --git a/core/java/android/service/dreams/DreamService.java b/core/java/android/service/dreams/DreamService.java
index d2dfb29..5da1775 100644
--- a/core/java/android/service/dreams/DreamService.java
+++ b/core/java/android/service/dreams/DreamService.java
@@ -770,7 +770,7 @@
      * @see #setDozeScreenBrightness
      * @hide For use by system UI components only.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getDozeScreenBrightness() {
         return mDozeScreenBrightness;
     }
diff --git a/core/java/android/service/dreams/IDreamManager.aidl b/core/java/android/service/dreams/IDreamManager.aidl
index 6496de3..0ce9cfa 100644
--- a/core/java/android/service/dreams/IDreamManager.aidl
+++ b/core/java/android/service/dreams/IDreamManager.aidl
@@ -27,9 +27,9 @@
     void dream();
     @UnsupportedAppUsage
     void awaken();
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void setDreamComponents(in ComponentName[] componentNames);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     ComponentName[] getDreamComponents();
     ComponentName getDefaultDreamComponentForUser(int userId);
     void testDream(int userId, in ComponentName componentName);
diff --git a/core/java/android/service/notification/Adjustment.java b/core/java/android/service/notification/Adjustment.java
index 8464c6d..4b25c88 100644
--- a/core/java/android/service/notification/Adjustment.java
+++ b/core/java/android/service/notification/Adjustment.java
@@ -19,7 +19,6 @@
 import android.annotation.Nullable;
 import android.annotation.StringDef;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.app.Notification;
 import android.os.Bundle;
 import android.os.Parcel;
@@ -42,7 +41,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class Adjustment implements Parcelable {
     private final String mPackage;
     private final String mKey;
@@ -148,7 +146,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public Adjustment(String pkg, String key, Bundle signals, CharSequence explanation, int user) {
         mPackage = pkg;
         mKey = key;
@@ -232,7 +229,6 @@
 
     /** @hide */
     @SystemApi
-    @TestApi
     public int getUser() {
         return mUser;
     }
diff --git a/core/java/android/service/notification/NotificationAssistantService.java b/core/java/android/service/notification/NotificationAssistantService.java
index 975e75c..6320149 100644
--- a/core/java/android/service/notification/NotificationAssistantService.java
+++ b/core/java/android/service/notification/NotificationAssistantService.java
@@ -23,7 +23,6 @@
 import android.annotation.Nullable;
 import android.annotation.SdkConstant;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.app.Notification;
 import android.app.NotificationChannel;
 import android.app.NotificationManager;
@@ -66,7 +65,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public abstract class NotificationAssistantService extends NotificationListenerService {
     private static final String TAG = "NotificationAssistants";
 
diff --git a/core/java/android/service/notification/NotificationListenerService.java b/core/java/android/service/notification/NotificationListenerService.java
index c52b02b..1d5f7fb 100644
--- a/core/java/android/service/notification/NotificationListenerService.java
+++ b/core/java/android/service/notification/NotificationListenerService.java
@@ -22,7 +22,6 @@
 import android.annotation.Nullable;
 import android.annotation.SdkConstant;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.app.ActivityManager;
 import android.app.INotificationManager;
 import android.app.Notification;
@@ -311,7 +310,7 @@
     private Handler mHandler;
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected NotificationListenerWrapper mWrapper = null;
     private boolean isConnected = false;
 
@@ -451,7 +450,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public void onNotificationRemoved(@NonNull StatusBarNotification sbn,
             @NonNull RankingMap rankingMap, @NonNull NotificationStats stats, int reason) {
diff --git a/core/java/android/service/notification/NotificationStats.java b/core/java/android/service/notification/NotificationStats.java
index 8be114c..b369483 100644
--- a/core/java/android/service/notification/NotificationStats.java
+++ b/core/java/android/service/notification/NotificationStats.java
@@ -19,7 +19,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.app.RemoteInput;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -31,7 +30,6 @@
  * Information about how the user has interacted with a given notification.
  * @hide
  */
-@TestApi
 @SystemApi
 public final class NotificationStats implements Parcelable {
 
diff --git a/core/java/android/service/notification/SnoozeCriterion.java b/core/java/android/service/notification/SnoozeCriterion.java
index eb624c9..d3da07a 100644
--- a/core/java/android/service/notification/SnoozeCriterion.java
+++ b/core/java/android/service/notification/SnoozeCriterion.java
@@ -17,7 +17,6 @@
 
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -27,7 +26,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class SnoozeCriterion implements Parcelable {
     private final String mId;
     private final CharSequence mExplanation;
diff --git a/core/java/android/service/notification/StatusBarNotification.java b/core/java/android/service/notification/StatusBarNotification.java
index 08d9905..fd6a2fd 100644
--- a/core/java/android/service/notification/StatusBarNotification.java
+++ b/core/java/android/service/notification/StatusBarNotification.java
@@ -432,7 +432,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Context getPackageContext(Context context) {
         if (mContext == null) {
             try {
diff --git a/core/java/android/service/notification/ZenModeConfig.java b/core/java/android/service/notification/ZenModeConfig.java
index 0827fef..96949a1 100644
--- a/core/java/android/service/notification/ZenModeConfig.java
+++ b/core/java/android/service/notification/ZenModeConfig.java
@@ -34,6 +34,7 @@
 import android.content.pm.PackageManager;
 import android.content.res.Resources;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.UserHandle;
@@ -1741,9 +1742,9 @@
     public static class ZenRule implements Parcelable {
         @UnsupportedAppUsage
         public boolean enabled;
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public boolean snoozing;         // user manually disabled this instance
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public String name;              // required for automatic
         @UnsupportedAppUsage
         public int zenMode;             // ie: Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS
@@ -1753,7 +1754,7 @@
         public ComponentName component;  // optional
         public ComponentName configurationActivity; // optional
         public String id;                // required for automatic (unique)
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public long creationTime;        // required for automatic
         // package name, only used for manual rules when they have turned DND on.
         public String enabler;
diff --git a/core/java/android/service/persistentdata/PersistentDataBlockManager.java b/core/java/android/service/persistentdata/PersistentDataBlockManager.java
index 0bf68b7..8242f4e 100644
--- a/core/java/android/service/persistentdata/PersistentDataBlockManager.java
+++ b/core/java/android/service/persistentdata/PersistentDataBlockManager.java
@@ -90,7 +90,7 @@
      *
      * @param data the data to write
      */
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public int write(byte[] data) {
         try {
             return sService.write(data);
@@ -102,7 +102,7 @@
     /**
      * Returns the data block stored on the persistent partition.
      */
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public byte[] read() {
         try {
             return sService.read();
@@ -130,7 +130,7 @@
      *
      * Returns -1 on error.
      */
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public long getMaximumDataBlockSize() {
         try {
             return sService.getMaximumDataBlockSize();
diff --git a/core/java/android/service/textclassifier/TextClassifierService.java b/core/java/android/service/textclassifier/TextClassifierService.java
index 93faa58..1fb18fa 100644
--- a/core/java/android/service/textclassifier/TextClassifierService.java
+++ b/core/java/android/service/textclassifier/TextClassifierService.java
@@ -22,7 +22,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.app.Service;
 import android.content.ComponentName;
 import android.content.Context;
@@ -88,7 +87,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public abstract class TextClassifierService extends Service {
 
     private static final String LOG_TAG = "TextClassifierService";
diff --git a/core/java/android/service/vr/IVrManager.aidl b/core/java/android/service/vr/IVrManager.aidl
index a8293b4..f8ae085 100644
--- a/core/java/android/service/vr/IVrManager.aidl
+++ b/core/java/android/service/vr/IVrManager.aidl
@@ -94,7 +94,7 @@
      * @return {@link android.view.Display.INVALID_DISPLAY} if there is no virtual display
      * currently, else return the display id of the virtual display
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     int getVr2dDisplayId();
 
     /**
diff --git a/core/java/android/service/vr/VrListenerService.java b/core/java/android/service/vr/VrListenerService.java
index 2758ace..d92e3b8 100644
--- a/core/java/android/service/vr/VrListenerService.java
+++ b/core/java/android/service/vr/VrListenerService.java
@@ -24,6 +24,7 @@
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
+import android.os.Build;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Looper;
@@ -140,7 +141,7 @@
      * @see android.R.attr#enableVrMode
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onCurrentVrActivityChanged(
             ComponentName component, boolean running2dInVr, int pid) {
         // Override to implement. Default to old behaviour of sending null for 2D.
diff --git a/core/java/android/service/wallpaper/IWallpaperEngine.aidl b/core/java/android/service/wallpaper/IWallpaperEngine.aidl
index 84b6869..90392e6 100644
--- a/core/java/android/service/wallpaper/IWallpaperEngine.aidl
+++ b/core/java/android/service/wallpaper/IWallpaperEngine.aidl
@@ -38,4 +38,5 @@
     @UnsupportedAppUsage
     void destroy();
     void setZoomOut(float scale);
+    void scalePreview(in Rect positionInWindow);
 }
diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java
index 0d420c5..3eb9ce81 100644
--- a/core/java/android/service/wallpaper/WallpaperService.java
+++ b/core/java/android/service/wallpaper/WallpaperService.java
@@ -16,6 +16,11 @@
 
 package android.service.wallpaper;
 
+import static android.graphics.Matrix.MSCALE_X;
+import static android.graphics.Matrix.MSCALE_Y;
+import static android.graphics.Matrix.MSKEW_X;
+import static android.graphics.Matrix.MSKEW_Y;
+
 import android.annotation.FloatRange;
 import android.annotation.Nullable;
 import android.annotation.SdkConstant;
@@ -31,6 +36,7 @@
 import android.content.res.TypedArray;
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
+import android.graphics.Matrix;
 import android.graphics.PixelFormat;
 import android.graphics.Point;
 import android.graphics.Rect;
@@ -118,12 +124,13 @@
     private static final int MSG_VISIBILITY_CHANGED = 10010;
     private static final int MSG_WALLPAPER_OFFSETS = 10020;
     private static final int MSG_WALLPAPER_COMMAND = 10025;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final int MSG_WINDOW_RESIZED = 10030;
     private static final int MSG_WINDOW_MOVED = 10035;
     private static final int MSG_TOUCH_EVENT = 10040;
     private static final int MSG_REQUEST_WALLPAPER_COLORS = 10050;
-    private static final int MSG_SCALE = 10100;
+    private static final int MSG_ZOOM = 10100;
+    private static final int MSG_SCALE_PREVIEW = 10110;
 
     private static final int NOTIFY_COLORS_RATE_LIMIT_MS = 1000;
 
@@ -178,6 +185,7 @@
                 WindowManager.LayoutParams.PRIVATE_FLAG_WANTS_OFFSET_NOTIFICATIONS;
         int mCurWindowFlags = mWindowFlags;
         int mCurWindowPrivateFlags = mWindowPrivateFlags;
+        Rect mPreviewSurfacePosition;
         final Rect mVisibleInsets = new Rect();
         final Rect mWinFrame = new Rect();
         final Rect mContentInsets = new Rect();
@@ -194,6 +202,8 @@
         final InsetsSourceControl[] mTempControls = new InsetsSourceControl[0];
         final MergedConfiguration mMergedConfiguration = new MergedConfiguration();
         private final Point mSurfaceSize = new Point();
+        private final Matrix mTmpMatrix = new Matrix();
+        private final float[] mTmpValues = new float[9];
 
         final WindowManager.LayoutParams mLayout
                 = new WindowManager.LayoutParams();
@@ -366,7 +376,7 @@
                         Message msg = mCaller.obtainMessage(MSG_WALLPAPER_OFFSETS);
                         mCaller.sendMessage(msg);
                     }
-                    Message msg = mCaller.obtainMessageI(MSG_SCALE, Float.floatToIntBits(zoom));
+                    Message msg = mCaller.obtainMessageI(MSG_ZOOM, Float.floatToIntBits(zoom));
                     mCaller.sendMessage(msg);
                 }
             }
@@ -747,6 +757,8 @@
                     out.println(mMergedConfiguration.getMergedConfiguration());
             out.print(prefix); out.print("mLayout="); out.println(mLayout);
             out.print(prefix); out.print("mZoom="); out.println(mZoom);
+            out.print(prefix); out.print("mPreviewSurfacePosition=");
+                    out.println(mPreviewSurfacePosition);
             synchronized (mLock) {
                 out.print(prefix); out.print("mPendingXOffset="); out.print(mPendingXOffset);
                         out.print(" mPendingXOffset="); out.println(mPendingXOffset);
@@ -908,7 +920,6 @@
                             mInsetsState, mTempControls, mSurfaceSize, mTmpSurfaceControl);
                     if (mSurfaceControl.isValid()) {
                         mSurfaceHolder.mSurface.copyFrom(mSurfaceControl);
-                        mSurfaceControl.release();
                     }
 
                     if (DEBUG) Log.v(TAG, "New surface: " + mSurfaceHolder.mSurface
@@ -1063,6 +1074,7 @@
                         if (redrawNeeded) {
                             mSession.finishDrawing(mWindow, null /* postDrawTransaction */);
                         }
+                        reposition();
                         mIWallpaperEngine.reportShown();
                     }
                 } catch (RemoteException ex) {
@@ -1073,6 +1085,39 @@
             }
         }
 
+        private void scalePreview(Rect position) {
+            if (isPreview() && mPreviewSurfacePosition == null && position != null
+                    || mPreviewSurfacePosition != null
+                    && !mPreviewSurfacePosition.equals(position)) {
+                mPreviewSurfacePosition = position;
+                if (mSurfaceControl.isValid()) {
+                    reposition();
+                } else {
+                    updateSurface(false, false, false);
+                }
+            }
+        }
+
+        private void reposition() {
+            if (mPreviewSurfacePosition == null) {
+                return;
+            }
+            if (DEBUG) {
+                Log.i(TAG, "reposition: rect: " + mPreviewSurfacePosition);
+            }
+
+            mTmpMatrix.setTranslate(mPreviewSurfacePosition.left, mPreviewSurfacePosition.top);
+            mTmpMatrix.postScale(((float) mPreviewSurfacePosition.width()) / mCurWidth,
+                    ((float) mPreviewSurfacePosition.height()) / mCurHeight);
+            mTmpMatrix.getValues(mTmpValues);
+            SurfaceControl.Transaction t = new SurfaceControl.Transaction();
+            t.setPosition(mSurfaceControl, mPreviewSurfacePosition.left,
+                    mPreviewSurfacePosition.top);
+            t.setMatrix(mSurfaceControl, mTmpValues[MSCALE_X], mTmpValues[MSKEW_Y],
+                    mTmpValues[MSKEW_X], mTmpValues[MSCALE_Y]);
+            t.apply();
+        }
+
         void attach(IWallpaperEngineWrapper wrapper) {
             if (DEBUG) Log.v(TAG, "attach: " + this + " wrapper=" + wrapper);
             if (mDestroyed) {
@@ -1415,7 +1460,7 @@
         }
 
         public void setZoomOut(float scale) {
-            Message msg = mCaller.obtainMessageI(MSG_SCALE, Float.floatToIntBits(scale));
+            Message msg = mCaller.obtainMessageI(MSG_ZOOM, Float.floatToIntBits(scale));
             mCaller.sendMessage(msg);
         }
 
@@ -1445,6 +1490,11 @@
             mDetached.set(true);
         }
 
+        public void scalePreview(Rect position) {
+            Message msg = mCaller.obtainMessageO(MSG_SCALE_PREVIEW, position);
+            mCaller.sendMessage(msg);
+        }
+
         private void doDetachEngine() {
             mActiveEngines.remove(mEngine);
             mEngine.detach();
@@ -1491,9 +1541,12 @@
                 case MSG_UPDATE_SURFACE:
                     mEngine.updateSurface(true, false, false);
                     break;
-                case MSG_SCALE:
+                case MSG_ZOOM:
                     mEngine.setZoom(Float.intBitsToFloat(message.arg1));
                     break;
+                case MSG_SCALE_PREVIEW:
+                    mEngine.scalePreview((Rect) message.obj);
+                    break;
                 case MSG_VISIBILITY_CHANGED:
                     if (DEBUG) Log.v(TAG, "Visibility change in " + mEngine
                             + ": " + message.arg1);
diff --git a/core/java/android/service/watchdog/ExplicitHealthCheckService.java b/core/java/android/service/watchdog/ExplicitHealthCheckService.java
index b1647fe..49e00d6 100644
--- a/core/java/android/service/watchdog/ExplicitHealthCheckService.java
+++ b/core/java/android/service/watchdog/ExplicitHealthCheckService.java
@@ -66,7 +66,6 @@
  * </pre>
  * @hide
  */
-@TestApi
 @SystemApi
 public abstract class ExplicitHealthCheckService extends Service {
 
@@ -195,7 +194,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final class PackageConfig implements Parcelable {
         private static final long DEFAULT_HEALTH_CHECK_TIMEOUT_MILLIS = TimeUnit.HOURS.toMillis(1);
diff --git a/core/java/android/speech/IRecognitionListener.aidl b/core/java/android/speech/IRecognitionListener.aidl
index e77851b..7c79b1a 100644
--- a/core/java/android/speech/IRecognitionListener.aidl
+++ b/core/java/android/speech/IRecognitionListener.aidl
@@ -83,6 +83,6 @@
      * @param eventType the type of the occurred event
      * @param params a Bundle containing the passed parameters
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void onEvent(in int eventType, in Bundle params);
 }
diff --git a/core/java/android/telephony/PhoneStateListener.java b/core/java/android/telephony/PhoneStateListener.java
index a6e6d05..d6ae434 100644
--- a/core/java/android/telephony/PhoneStateListener.java
+++ b/core/java/android/telephony/PhoneStateListener.java
@@ -437,7 +437,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION)
     public static final int LISTEN_OUTGOING_EMERGENCY_CALL                  = 0x10000000;
 
@@ -450,7 +449,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION)
     public static final int LISTEN_OUTGOING_EMERGENCY_SMS                   = 0x20000000;
 
@@ -836,7 +834,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onDataConnectionRealTimeInfoChanged(
             DataConnectionRealTimeInfo dcRtInfo) {
         // default implementation empty
@@ -926,19 +924,21 @@
     /**
      * Callback invoked when the current emergency number list has changed on the registered
      * subscription.
-     * Note, the registration subId comes from {@link TelephonyManager} object which registers
-     * PhoneStateListener by {@link TelephonyManager#listen(PhoneStateListener, int)}.
+     *
+     * Note, the registered subscription is associated with {@link TelephonyManager} object
+     * on which {@link TelephonyManager#listen(PhoneStateListener, int)} was called.
      * If this TelephonyManager object was created with
      * {@link TelephonyManager#createForSubscriptionId(int)}, then the callback applies to the
-     * subId. Otherwise, this callback applies to
+     * given subId. Otherwise, this callback applies to
      * {@link SubscriptionManager#getDefaultSubscriptionId()}.
      *
-     * @param emergencyNumberList Map including the key as the active subscription ID
-     *                           (Note: if there is no active subscription, the key is
-     *                           {@link SubscriptionManager#getDefaultSubscriptionId})
-     *                           and the value as the list of {@link EmergencyNumber};
-     *                           null if this information is not available.
-     * @hide
+     * @param emergencyNumberList Map associating all active subscriptions on the device with the
+     *                            list of emergency numbers originating from that subscription.
+     *                            If there are no active subscriptions, the map will contain a
+     *                            single entry with
+     *                            {@link SubscriptionManager#INVALID_SUBSCRIPTION_ID} as
+     *                            the key and a list of emergency numbers as the value. If no
+     *                            emergency number information is available, the value will be null.
      */
     public void onEmergencyNumberListChanged(
             @NonNull Map<Integer, List<EmergencyNumber>> emergencyNumberList) {
@@ -948,29 +948,86 @@
     /**
      * Callback invoked when an outgoing call is placed to an emergency number.
      *
-     * @param placedEmergencyNumber the emergency number {@link EmergencyNumber} the call is placed
-     *                              to.
+     * This method will be called when an emergency call is placed on any subscription (including
+     * the no-SIM case), regardless of which subscription this listener was registered on.
+     *
+     * @param placedEmergencyNumber The {@link EmergencyNumber} the emergency call was placed to.
+     *
+     * @deprecated Use {@link #onOutgoingEmergencyCall(EmergencyNumber, int)}.
      * @hide
      */
     @SystemApi
-    @TestApi
+    @Deprecated
     public void onOutgoingEmergencyCall(@NonNull EmergencyNumber placedEmergencyNumber) {
         // default implementation empty
     }
 
     /**
-     * Callback invoked when an outgoing SMS is placed to an emergency number.
+     * Callback invoked when an outgoing call is placed to an emergency number.
      *
-     * @param sentEmergencyNumber the emergency number {@link EmergencyNumber} the SMS is sent to.
+     * This method will be called when an emergency call is placed on any subscription (including
+     * the no-SIM case), regardless of which subscription this listener was registered on.
+     *
+     * The default implementation of this method calls
+     * {@link #onOutgoingEmergencyCall(EmergencyNumber)} for backwards compatibility purposes. Do
+     * not call {@code super(...)} from within your implementation unless you want
+     * {@link #onOutgoingEmergencyCall(EmergencyNumber)} to be called as well.
+     *
+     * @param placedEmergencyNumber The {@link EmergencyNumber} the emergency call was placed to.
+     * @param subscriptionId The subscription ID used to place the emergency call. If the
+     *                       emergency call was placed without a valid subscription (e.g. when there
+     *                       are no SIM cards in the device), this will be equal to
+     *                       {@link SubscriptionManager#INVALID_SUBSCRIPTION_ID}.
      * @hide
      */
     @SystemApi
     @TestApi
+    public void onOutgoingEmergencyCall(@NonNull EmergencyNumber placedEmergencyNumber,
+            int subscriptionId) {
+        // Default implementation for backwards compatibility
+        onOutgoingEmergencyCall(placedEmergencyNumber);
+    }
+
+    /**
+     * Callback invoked when an outgoing SMS is placed to an emergency number.
+     *
+     * This method will be called when an emergency sms is sent on any subscription.
+     * @param sentEmergencyNumber the emergency number {@link EmergencyNumber} the SMS is sent to.
+     *
+     * @deprecated Use {@link #onOutgoingEmergencySms(EmergencyNumber, int)}.
+     * @hide
+     */
+    @SystemApi
+    @TestApi
+    @Deprecated
     public void onOutgoingEmergencySms(@NonNull EmergencyNumber sentEmergencyNumber) {
         // default implementation empty
     }
 
     /**
+     * Smsback invoked when an outgoing sms is sent to an emergency number.
+     *
+     * This method will be called when an emergency sms is sent on any subscription,
+     * regardless of which subscription this listener was registered on.
+     *
+     * The default implementation of this method calls
+     * {@link #onOutgoingEmergencySms(EmergencyNumber)} for backwards compatibility purposes. Do
+     * not call {@code super(...)} from within your implementation unless you want
+     * {@link #onOutgoingEmergencySms(EmergencyNumber)} to be called as well.
+     *
+     * @param sentEmergencyNumber The {@link EmergencyNumber} the emergency sms was sent to.
+     * @param subscriptionId The subscription ID used to send the emergency sms.
+     * @hide
+     */
+    @SystemApi
+    @TestApi
+    public void onOutgoingEmergencySms(@NonNull EmergencyNumber sentEmergencyNumber,
+            int subscriptionId) {
+        // Default implementation for backwards compatibility
+        onOutgoingEmergencySms(sentEmergencyNumber);
+    }
+
+    /**
      * Callback invoked when OEM hook raw event is received on the registered subscription.
      * Note, the registration subId comes from {@link TelephonyManager} object which registers
      * PhoneStateListener by {@link TelephonyManager#listen(PhoneStateListener, int)}.
@@ -983,7 +1040,7 @@
      * @param rawData is the byte array of the OEM hook raw data.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onOemHookRawEvent(byte[] rawData) {
         // default implementation empty
     }
@@ -1336,22 +1393,25 @@
                             () -> psl.onEmergencyNumberListChanged(emergencyNumberList)));
         }
 
-        public void onOutgoingEmergencyCall(@NonNull EmergencyNumber placedEmergencyNumber) {
+        public void onOutgoingEmergencyCall(@NonNull EmergencyNumber placedEmergencyNumber,
+                int subscriptionId) {
             PhoneStateListener psl = mPhoneStateListenerWeakRef.get();
             if (psl == null) return;
 
             Binder.withCleanCallingIdentity(
                     () -> mExecutor.execute(
-                            () -> psl.onOutgoingEmergencyCall(placedEmergencyNumber)));
+                            () -> psl.onOutgoingEmergencyCall(placedEmergencyNumber,
+                                    subscriptionId)));
         }
 
-        public void onOutgoingEmergencySms(@NonNull EmergencyNumber sentEmergencyNumber) {
+        public void onOutgoingEmergencySms(@NonNull EmergencyNumber sentEmergencyNumber,
+                int subscriptionId) {
             PhoneStateListener psl = mPhoneStateListenerWeakRef.get();
             if (psl == null) return;
 
             Binder.withCleanCallingIdentity(
                     () -> mExecutor.execute(
-                            () -> psl.onOutgoingEmergencySms(sentEmergencyNumber)));
+                            () -> psl.onOutgoingEmergencySms(sentEmergencyNumber, subscriptionId)));
         }
 
         public void onPhoneCapabilityChanged(PhoneCapability capability) {
diff --git a/core/java/android/telephony/Rlog.java b/core/java/android/telephony/Rlog.java
index 2afdd33..a1c74e6 100644
--- a/core/java/android/telephony/Rlog.java
+++ b/core/java/android/telephony/Rlog.java
@@ -53,7 +53,7 @@
         return Log.println_native(Log.LOG_ID_RADIO, Log.DEBUG, tag, msg);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static int d(String tag, String msg, Throwable tr) {
         return Log.println_native(Log.LOG_ID_RADIO, Log.DEBUG, tag,
                 msg + '\n' + Log.getStackTraceString(tr));
diff --git a/core/java/android/telephony/TelephonyRegistryManager.java b/core/java/android/telephony/TelephonyRegistryManager.java
index 2dbce7b..3673ae7 100644
--- a/core/java/android/telephony/TelephonyRegistryManager.java
+++ b/core/java/android/telephony/TelephonyRegistryManager.java
@@ -26,10 +26,8 @@
 import android.os.Build;
 import android.os.RemoteException;
 import android.os.ServiceManager;
-import android.telephony.Annotation.ApnType;
 import android.telephony.Annotation.CallState;
 import android.telephony.Annotation.DataActivityType;
-import android.telephony.Annotation.DataFailureCause;
 import android.telephony.Annotation.DisconnectCauses;
 import android.telephony.Annotation.NetworkType;
 import android.telephony.Annotation.PreciseCallStates;
@@ -37,7 +35,6 @@
 import android.telephony.Annotation.RadioPowerState;
 import android.telephony.Annotation.SimActivationState;
 import android.telephony.Annotation.SrvccState;
-import android.telephony.data.ApnSetting;
 import android.telephony.emergency.EmergencyNumber;
 import android.telephony.ims.ImsReasonInfo;
 import android.util.Log;
@@ -413,17 +410,16 @@
      * @param subId for which data connection state changed.
      * @param slotIndex for which data connections state changed. Can be derived from subId except
      * when subId is invalid.
-     * @param apnType the apn type bitmask, defined with {@code ApnSetting#TYPE_*} flags.
      * @param preciseState the PreciseDataConnectionState
      *
-     * @see android.telephony.PreciseDataConnection
+     * @see PreciseDataConnectionState
      * @see TelephonyManager#DATA_DISCONNECTED
      */
     public void notifyDataConnectionForSubscriber(int slotIndex, int subId,
-            @ApnType int apnType, @Nullable PreciseDataConnectionState preciseState) {
+            @NonNull PreciseDataConnectionState preciseState) {
         try {
             sRegistry.notifyDataConnectionForSubscriber(
-                    slotIndex, subId, apnType, preciseState);
+                    slotIndex, subId, preciseState);
         } catch (RemoteException ex) {
             // system process is dead
         }
@@ -623,25 +619,6 @@
     }
 
     /**
-     * Notify precise data connection failed cause on certain subscription.
-     *
-     * @param subId for which data connection failed.
-     * @param slotIndex for which data conenction failed. Can be derived from subId except when
-     * subId is invalid.
-     * @param apnType the apn type bitmask, defined with {@code ApnSetting#TYPE_*} flags.
-     * @param apn the APN {@link ApnSetting#getApnName()} of this data connection.
-     * @param failCause data fail cause.
-     */
-    public void notifyPreciseDataConnectionFailed(int subId, int slotIndex, @ApnType int apnType,
-            @Nullable String apn, @DataFailureCause int failCause) {
-        try {
-            sRegistry.notifyPreciseDataConnectionFailed(slotIndex, subId, apnType, apn, failCause);
-        } catch (RemoteException ex) {
-            // system process is dead
-        }
-    }
-
-    /**
      * Notify single Radio Voice Call Continuity (SRVCC) state change for the currently active call
      * on certain subscription.
      *
diff --git a/core/java/android/text/AndroidBidi.java b/core/java/android/text/AndroidBidi.java
index b981163..31da799 100644
--- a/core/java/android/text/AndroidBidi.java
+++ b/core/java/android/text/AndroidBidi.java
@@ -18,6 +18,7 @@
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.icu.text.Bidi;
+import android.os.Build;
 import android.text.Layout.Directions;
 
 import com.android.internal.annotations.VisibleForTesting;
@@ -32,7 +33,7 @@
     /**
      * Runs the bidi algorithm on input text.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static int bidi(int dir, char[] chs, byte[] chInfo) {
         if (chs == null || chInfo == null) {
             throw new NullPointerException();
diff --git a/core/java/android/text/DynamicLayout.java b/core/java/android/text/DynamicLayout.java
index c60d446..16b45c3 100644
--- a/core/java/android/text/DynamicLayout.java
+++ b/core/java/android/text/DynamicLayout.java
@@ -987,7 +987,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getIndexFirstChangedBlock() {
         return mIndexFirstChangedBlock;
     }
@@ -995,7 +995,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setIndexFirstChangedBlock(int i) {
         mIndexFirstChangedBlock = i;
     }
diff --git a/core/java/android/text/Editable.java b/core/java/android/text/Editable.java
index 3396bce..a942f6c 100644
--- a/core/java/android/text/Editable.java
+++ b/core/java/android/text/Editable.java
@@ -137,7 +137,7 @@
         }
 
         /**
-         * Returns a new SpannedStringBuilder from the specified
+         * Returns a new SpannableStringBuilder from the specified
          * CharSequence.  You can override this to provide
          * a different kind of Spanned.
          */
diff --git a/core/java/android/text/FontConfig.java b/core/java/android/text/FontConfig.java
index b5688a4..1878d61 100644
--- a/core/java/android/text/FontConfig.java
+++ b/core/java/android/text/FontConfig.java
@@ -24,6 +24,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.graphics.fonts.FontVariationAxis;
 import android.net.Uri;
+import android.os.Build;
 
 import java.lang.annotation.Retention;
 
@@ -44,7 +45,7 @@
     /**
      * Returns the ordered list of families included in the system fonts.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public @NonNull Family[] getFamilies() {
         return mFamilies;
     }
@@ -91,7 +92,7 @@
         /**
          * Returns the index to be used to access this font when accessing a TTC file.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public int getTtcIndex() {
             return mTtcIndex;
         }
@@ -99,7 +100,7 @@
         /**
          * Returns the list of axes associated to this font.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public @NonNull FontVariationAxis[] getAxes() {
             return mAxes;
         }
@@ -107,7 +108,7 @@
         /**
          * Returns the weight value for this font.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public int getWeight() {
             return mWeight;
         }
@@ -115,7 +116,7 @@
         /**
          * Returns whether this font is italic.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public boolean isItalic() {
             return mIsItalic;
         }
@@ -231,7 +232,7 @@
         /**
          * Returns the name given by the system to this font family.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public @Nullable String getName() {
             return mName;
         }
@@ -239,7 +240,7 @@
         /**
          * Returns the list of fonts included in this family.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public @Nullable Font[] getFonts() {
             return mFonts;
         }
@@ -254,7 +255,7 @@
         /**
          * Returns the font variant for this family, e.g. "elegant" or "compact". May be null.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public @Variant int getVariant() {
             return mVariant;
         }
diff --git a/core/java/android/text/Html.java b/core/java/android/text/Html.java
index 8da92e3..480f46f 100644
--- a/core/java/android/text/Html.java
+++ b/core/java/android/text/Html.java
@@ -23,6 +23,7 @@
 import android.graphics.Color;
 import android.graphics.Typeface;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.text.style.AbsoluteSizeSpan;
 import android.text.style.AlignmentSpan;
 import android.text.style.BackgroundColorSpan;
@@ -629,7 +630,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static void withinStyle(StringBuilder out, CharSequence text,
                                     int start, int end) {
         for (int i = start; i < end; i++) {
diff --git a/core/java/android/text/Layout.java b/core/java/android/text/Layout.java
index 8a4497a..f0f0867 100644
--- a/core/java/android/text/Layout.java
+++ b/core/java/android/text/Layout.java
@@ -24,6 +24,7 @@
 import android.graphics.Path;
 import android.graphics.Rect;
 import android.graphics.text.LineBreaker;
+import android.os.Build;
 import android.text.method.TextKeyListener;
 import android.text.style.AlignmentSpan;
 import android.text.style.LeadingMarginSpan;
@@ -414,7 +415,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void drawText(Canvas canvas, int firstLine, int lastLine) {
         int previousLineBottom = getLineTop(firstLine);
         int previousLineEnd = getLineStart(firstLine);
@@ -583,7 +584,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void drawBackground(Canvas canvas, Path highlight, Paint highlightPaint,
             int cursorOffsetVertical, int firstLine, int lastLine) {
         // First, draw LineBackgroundSpans.
@@ -664,7 +665,7 @@
      * @return The range of lines that need to be drawn, possibly empty.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public long getLineRangeForDraw(Canvas canvas) {
         int dtop, dbottom;
 
@@ -1154,7 +1155,7 @@
      * optionally clamp it so that it doesn't exceed the width of the layout.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public float getPrimaryHorizontal(int offset, boolean clamped) {
         boolean trailing = primaryIsTrailingPrevious(offset);
         return getHorizontal(offset, trailing, clamped);
@@ -1174,7 +1175,7 @@
      * optionally clamp it so that it doesn't exceed the width of the layout.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public float getSecondaryHorizontal(int offset, boolean clamped) {
         boolean trailing = primaryIsTrailingPrevious(offset);
         return getHorizontal(offset, !trailing, clamped);
@@ -1849,7 +1850,7 @@
      * only robust for left-aligned displays.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean shouldClampCursor(int line) {
         // Only clamp cursor position in left-aligned displays.
         switch (getParagraphAlignment(line)) {
diff --git a/core/java/android/text/SpanSet.java b/core/java/android/text/SpanSet.java
index 81bdd65..d464278 100644
--- a/core/java/android/text/SpanSet.java
+++ b/core/java/android/text/SpanSet.java
@@ -17,6 +17,7 @@
 package android.text;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 import java.lang.reflect.Array;
 import java.util.Arrays;
@@ -34,7 +35,7 @@
     private final Class<? extends E> classType;
 
     int numberOfSpans;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     E[] spans;
     int[] spanStarts;
     int[] spanEnds;
diff --git a/core/java/android/text/SpannableStringBuilder.java b/core/java/android/text/SpannableStringBuilder.java
index ac27e3d..4312ad9c 100644
--- a/core/java/android/text/SpannableStringBuilder.java
+++ b/core/java/android/text/SpannableStringBuilder.java
@@ -20,6 +20,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.graphics.BaseCanvas;
 import android.graphics.Paint;
+import android.os.Build;
 import android.util.Log;
 
 import com.android.internal.annotations.GuardedBy;
@@ -863,7 +864,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public <T> T[] getSpans(int queryStart, int queryEnd, @Nullable Class<T> kind,
             boolean sortByInsertionOrder) {
         if (kind == null) return (T[]) ArrayUtils.emptyArray(Object.class);
diff --git a/core/java/android/text/SpannableStringInternal.java b/core/java/android/text/SpannableStringInternal.java
index 4c9328a..4daec26c 100644
--- a/core/java/android/text/SpannableStringInternal.java
+++ b/core/java/android/text/SpannableStringInternal.java
@@ -17,6 +17,7 @@
 package android.text;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 import com.android.internal.util.ArrayUtils;
 import com.android.internal.util.GrowingArrayUtils;
@@ -152,7 +153,7 @@
      *
      * @return True if excluded, false if included.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final boolean isOutOfCopyRange(int start, int end, int spanStart, int spanEnd) {
         if (spanStart > end || spanEnd < start) return true;
         if (spanStart != spanEnd && start != end) {
@@ -184,12 +185,12 @@
         setSpan(what, start, end, flags, true/*enforceParagraph*/);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private boolean isIndexFollowsNextLine(int index) {
         return index != 0 && index != length() && charAt(index - 1) != '\n';
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void setSpan(Object what, int start, int end, int flags, boolean enforceParagraph) {
         int nstart = start;
         int nend = end;
@@ -554,12 +555,12 @@
      *
      * Due to backward compatibility reasons, we copy even NoCopySpan by default
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void copySpans(Spanned src, int start, int end) {
         copySpansFromSpanned(src, start, end, false);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void copySpans(SpannableStringInternal src, int start, int end) {
         copySpansFromInternal(src, start, end, false);
     }
@@ -575,15 +576,15 @@
     @UnsupportedAppUsage
     private int mSpanCount;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     /* package */ static final Object[] EMPTY = new Object[0];
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final int START = 0;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final int END = 1;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final int FLAGS = 2;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final int COLUMNS = 3;
 }
diff --git a/core/java/android/text/StaticLayout.java b/core/java/android/text/StaticLayout.java
index 85e2d98..85911ff 100644
--- a/core/java/android/text/StaticLayout.java
+++ b/core/java/android/text/StaticLayout.java
@@ -1433,15 +1433,15 @@
     // Unused, here because of gray list private API accesses.
     /*package*/ static class LineBreaks {
         private static final int INITIAL_SIZE = 16;
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public int[] breaks = new int[INITIAL_SIZE];
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public float[] widths = new float[INITIAL_SIZE];
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public float[] ascents = new float[INITIAL_SIZE];
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public float[] descents = new float[INITIAL_SIZE];
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public int[] flags = new int[INITIAL_SIZE]; // hasTab
         // breaks, widths, and flags should all have the same length
     }
diff --git a/core/java/android/text/TextLine.java b/core/java/android/text/TextLine.java
index 3c51fa7..91c9fc7 100644
--- a/core/java/android/text/TextLine.java
+++ b/core/java/android/text/TextLine.java
@@ -55,7 +55,7 @@
     private static final char TAB_CHAR = '\t';
 
     private TextPaint mPaint;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private CharSequence mText;
     private int mStart;
     private int mLen;
@@ -81,13 +81,13 @@
 
     private final TextPaint mWorkPaint = new TextPaint();
     private final TextPaint mActivePaint = new TextPaint();
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final SpanSet<MetricAffectingSpan> mMetricAffectingSpanSpanSet =
             new SpanSet<MetricAffectingSpan>(MetricAffectingSpan.class);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final SpanSet<CharacterStyle> mCharacterStyleSpanSet =
             new SpanSet<CharacterStyle>(CharacterStyle.class);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final SpanSet<ReplacementSpan> mReplacementSpanSpanSet =
             new SpanSet<ReplacementSpan>(ReplacementSpan.class);
 
diff --git a/core/java/android/text/format/DateFormat.java b/core/java/android/text/format/DateFormat.java
index 38e3b39..8900dfd 100755
--- a/core/java/android/text/format/DateFormat.java
+++ b/core/java/android/text/format/DateFormat.java
@@ -17,10 +17,14 @@
 package android.text.format;
 
 import android.annotation.NonNull;
+import android.app.compat.CompatChanges;
+import android.compat.annotation.ChangeId;
+import android.compat.annotation.EnabledSince;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.icu.text.DateFormatSymbols;
 import android.icu.text.DateTimePatternGenerator;
+import android.os.Build;
 import android.provider.Settings;
 import android.text.SpannableStringBuilder;
 import android.text.Spanned;
@@ -159,6 +163,16 @@
     private static boolean sIs24Hour;
 
     /**
+     * {@link #getBestDateTimePattern(Locale, String)} does not allow non-consecutive repeated
+     * symbol in the skeleton. For example, please use a skeleton of {@code "jmm"} or
+     * {@code "hmma"} instead of {@code "ahmma"} or {@code "jmma"}, because the field 'j' could
+     * mean using 12-hour in some locales and, in this case, is duplicated as the 'a' field.
+     */
+    @ChangeId
+    @EnabledSince(targetSdkVersion = Build.VERSION_CODES.CUR_DEVELOPMENT)
+    static final long DISALLOW_DUPLICATE_FIELD_IN_SKELETON = 170233598L;
+
+    /**
      * Returns true if times should be formatted as 24 hour times, false if times should be
      * formatted as 12 hour (AM/PM) times. Based on the user's chosen locale and other preferences.
      * @param context the context to use for the content resolver
@@ -251,7 +265,9 @@
      */
     public static String getBestDateTimePattern(Locale locale, String skeleton) {
         DateTimePatternGenerator dtpg = DateTimePatternGenerator.getInstance(locale);
-        return dtpg.getBestPattern(skeleton);
+        boolean allowDuplicateFields = !CompatChanges.isChangeEnabled(
+                DISALLOW_DUPLICATE_FIELD_IN_SKELETON);
+        return dtpg.getBestPattern(skeleton, allowDuplicateFields);
     }
 
     /**
@@ -443,7 +459,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static boolean hasDesignator(CharSequence inFormat, char designator) {
         if (inFormat == null) return false;
 
diff --git a/core/java/android/text/format/DateUtils.java b/core/java/android/text/format/DateUtils.java
index ff08269..511c974 100644
--- a/core/java/android/text/format/DateUtils.java
+++ b/core/java/android/text/format/DateUtils.java
@@ -25,6 +25,7 @@
 import android.icu.text.MeasureFormat.FormatWidth;
 import android.icu.util.Measure;
 import android.icu.util.MeasureUnit;
+import android.os.Build;
 
 import com.android.internal.R;
 
@@ -395,7 +396,7 @@
      * the briefest form available (e.g. "2h").
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static CharSequence formatDuration(long millis, int abbrev) {
         final FormatWidth width;
         switch (abbrev) {
diff --git a/core/java/android/text/format/Time.java b/core/java/android/text/format/Time.java
index f19e7d2..bac7c6c 100644
--- a/core/java/android/text/format/Time.java
+++ b/core/java/android/text/format/Time.java
@@ -18,6 +18,7 @@
 
 import android.util.TimeFormatException;
 
+import com.android.i18n.timezone.WallTime;
 import com.android.i18n.timezone.ZoneInfoData;
 import com.android.i18n.timezone.ZoneInfoDb;
 
@@ -1070,7 +1071,7 @@
      * to the enclosing object, but others do not: thus separate state is retained.
      */
     private static class TimeCalculator {
-        public final ZoneInfoData.WallTime wallTime;
+        public final WallTime wallTime;
         public String timezone;
 
         // Information about the current timezone.
@@ -1078,7 +1079,7 @@
 
         public TimeCalculator(String timezoneId) {
             this.mZoneInfoData = lookupZoneInfoData(timezoneId);
-            this.wallTime = new ZoneInfoData.WallTime();
+            this.wallTime = new WallTime();
         }
 
         public long toMillis(boolean ignoreDst) {
diff --git a/core/java/android/text/format/TimeFormatter.java b/core/java/android/text/format/TimeFormatter.java
index c71dfbb..e42ad63 100644
--- a/core/java/android/text/format/TimeFormatter.java
+++ b/core/java/android/text/format/TimeFormatter.java
@@ -24,6 +24,7 @@
 import android.icu.text.DateFormatSymbols;
 import android.icu.text.DecimalFormatSymbols;
 
+import com.android.i18n.timezone.WallTime;
 import com.android.i18n.timezone.ZoneInfoData;
 
 import java.nio.CharBuffer;
@@ -149,7 +150,7 @@
     /**
      * Format the specified {@code wallTime} using {@code pattern}. The output is returned.
      */
-    public String format(String pattern, ZoneInfoData.WallTime wallTime,
+    public String format(String pattern, WallTime wallTime,
             ZoneInfoData zoneInfoData) {
         try {
             StringBuilder stringBuilder = new StringBuilder();
@@ -192,7 +193,7 @@
      * Format the specified {@code wallTime} using {@code pattern}. The output is written to
      * {@link #outputBuilder}.
      */
-    private void formatInternal(String pattern, ZoneInfoData.WallTime wallTime,
+    private void formatInternal(String pattern, WallTime wallTime,
             ZoneInfoData zoneInfoData) {
         CharBuffer formatBuffer = CharBuffer.wrap(pattern);
         while (formatBuffer.remaining() > 0) {
@@ -208,7 +209,7 @@
         }
     }
 
-    private boolean handleToken(CharBuffer formatBuffer, ZoneInfoData.WallTime wallTime,
+    private boolean handleToken(CharBuffer formatBuffer, WallTime wallTime,
             ZoneInfoData zoneInfoData) {
 
         // The char at formatBuffer.position() is expected to be '%' at this point.
diff --git a/core/java/android/text/method/WordIterator.java b/core/java/android/text/method/WordIterator.java
index d766186..f427e1b 100644
--- a/core/java/android/text/method/WordIterator.java
+++ b/core/java/android/text/method/WordIterator.java
@@ -21,6 +21,7 @@
 import android.icu.lang.UCharacter;
 import android.icu.lang.UProperty;
 import android.icu.text.BreakIterator;
+import android.os.Build;
 import android.text.CharSequenceCharacterIterator;
 import android.text.Selection;
 
@@ -71,7 +72,7 @@
     }
 
     /** {@inheritDoc} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int preceding(int offset) {
         checkOffsetIsValid(offset);
         while (true) {
@@ -83,7 +84,7 @@
     }
 
     /** {@inheritDoc} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int following(int offset) {
         checkOffsetIsValid(offset);
         while (true) {
@@ -95,7 +96,7 @@
     }
 
     /** {@inheritDoc} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isBoundary(int offset) {
         checkOffsetIsValid(offset);
         return mIterator.isBoundary(offset);
@@ -108,7 +109,7 @@
      * @param offset the given start position to search from.
      * @return the position of the last boundary preceding the given offset.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int nextBoundary(int offset) {
         checkOffsetIsValid(offset);
         return mIterator.following(offset);
@@ -121,7 +122,7 @@
      * @param offset the given start position to search from.
      * @return the position of the last boundary preceding the given offset.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int prevBoundary(int offset) {
         checkOffsetIsValid(offset);
         return mIterator.preceding(offset);
@@ -180,7 +181,7 @@
      *
      * @throws IllegalArgumentException is offset is not valid.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getPrevWordBeginningOnTwoWordsBoundary(int offset) {
         return getBeginning(offset, true);
     }
@@ -199,7 +200,7 @@
      *
      * @throws IllegalArgumentException is offset is not valid.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getNextWordEndOnTwoWordBoundary(int offset) {
         return getEnd(offset, true);
     }
@@ -280,7 +281,7 @@
      *
      * @param offset the offset to search from.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getPunctuationBeginning(int offset) {
         checkOffsetIsValid(offset);
         while (offset != BreakIterator.DONE && !isPunctuationStartBoundary(offset)) {
@@ -297,7 +298,7 @@
      *
      * @param offset the offset to search from.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getPunctuationEnd(int offset) {
         checkOffsetIsValid(offset);
         while (offset != BreakIterator.DONE && !isPunctuationEndBoundary(offset)) {
@@ -314,7 +315,7 @@
      * @param offset the offset to check from.
      * @return Whether the offset is after a punctuation character.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isAfterPunctuation(int offset) {
         if (mStart < offset && offset <= mEnd) {
             final int codePoint = Character.codePointBefore(mCharSeq, offset);
@@ -330,7 +331,7 @@
      * @param offset the offset to check from.
      * @return Whether the offset is at a punctuation character.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isOnPunctuation(int offset) {
         if (mStart <= offset && offset < mEnd) {
             final int codePoint = Character.codePointAt(mCharSeq, offset);
diff --git a/core/java/android/text/style/EasyEditSpan.java b/core/java/android/text/style/EasyEditSpan.java
index b23c2b7..ccccdcf 100644
--- a/core/java/android/text/style/EasyEditSpan.java
+++ b/core/java/android/text/style/EasyEditSpan.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.app.PendingIntent;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.text.ParcelableSpan;
 import android.text.TextUtils;
@@ -116,7 +117,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isDeleteEnabled() {
         return mDeleteEnabled;
     }
@@ -126,7 +127,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setDeleteEnabled(boolean value) {
         mDeleteEnabled = value;
     }
@@ -136,7 +137,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public PendingIntent getPendingIntent() {
         return mPendingIntent;
     }
diff --git a/core/java/android/text/style/SuggestionSpan.java b/core/java/android/text/style/SuggestionSpan.java
index be01bfb..f323936 100644
--- a/core/java/android/text/style/SuggestionSpan.java
+++ b/core/java/android/text/style/SuggestionSpan.java
@@ -23,6 +23,7 @@
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.graphics.Color;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.SystemClock;
@@ -125,9 +126,9 @@
     private final String mLanguageTag;
     private final int mHashCode;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private float mEasyCorrectUnderlineThickness;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mEasyCorrectUnderlineColor;
 
     private float mMisspelledUnderlineThickness;
@@ -402,7 +403,7 @@
      * @deprecated this is deprecated in {@link android.os.Build.VERSION_CODES#Q}.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @Deprecated
     public void notifySelection(Context context, String original, int index) {
         Log.w(TAG, "notifySelection() is deprecated.  Does nothing.");
diff --git a/core/java/android/text/util/Linkify.java b/core/java/android/text/util/Linkify.java
index a7ddfa9..6e25160 100644
--- a/core/java/android/text/util/Linkify.java
+++ b/core/java/android/text/util/Linkify.java
@@ -22,6 +22,7 @@
 import android.app.ActivityThread;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
+import android.os.Build;
 import android.telephony.PhoneNumberUtils;
 import android.telephony.TelephonyManager;
 import android.text.Spannable;
@@ -660,7 +661,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static void gatherTelLinks(ArrayList<LinkSpec> links, Spannable s,
             @Nullable Context context) {
         PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
diff --git a/core/java/android/timezone/TzDataSetVersion.java b/core/java/android/timezone/TzDataSetVersion.java
index e1fb932..52e1e58 100644
--- a/core/java/android/timezone/TzDataSetVersion.java
+++ b/core/java/android/timezone/TzDataSetVersion.java
@@ -18,6 +18,7 @@
 
 import android.annotation.NonNull;
 
+import com.android.i18n.timezone.TimeZoneDataFiles;
 import com.android.internal.annotations.VisibleForTesting;
 
 import java.io.IOException;
@@ -75,8 +76,7 @@
     @NonNull
     public static TzDataSetVersion read() throws IOException, TzDataSetException {
         try {
-            return new TzDataSetVersion(
-                    com.android.i18n.timezone.TzDataSetVersion.readTimeZoneModuleVersion());
+            return new TzDataSetVersion(TimeZoneDataFiles.readTimeZoneModuleVersion());
         } catch (com.android.i18n.timezone.TzDataSetVersion.TzDataSetException e) {
             throw new TzDataSetException(e.getMessage(), e);
         }
diff --git a/core/java/android/transition/Transition.java b/core/java/android/transition/Transition.java
index e511584..a204630 100644
--- a/core/java/android/transition/Transition.java
+++ b/core/java/android/transition/Transition.java
@@ -25,6 +25,7 @@
 import android.content.res.TypedArray;
 import android.graphics.Path;
 import android.graphics.Rect;
+import android.os.Build;
 import android.util.ArrayMap;
 import android.util.AttributeSet;
 import android.util.Log;
@@ -848,7 +849,7 @@
         return false;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static ArrayMap<Animator, AnimationInfo> getRunningAnimators() {
         ArrayMap<Animator, AnimationInfo> runningAnimators = sRunningAnimators.get();
         if (runningAnimators == null) {
@@ -1913,7 +1914,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected void end() {
         --mNumInstances;
         if (mNumInstances == 0) {
@@ -1971,7 +1972,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected void cancel() {
         int numAnimators = mCurrentAnimators.size();
         for (int i = numAnimators - 1; i >= 0; i--) {
diff --git a/core/java/android/transition/TransitionManager.java b/core/java/android/transition/TransitionManager.java
index 1b0612e..3d5b811 100644
--- a/core/java/android/transition/TransitionManager.java
+++ b/core/java/android/transition/TransitionManager.java
@@ -19,6 +19,7 @@
 import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
+import android.os.Build;
 import android.util.ArrayMap;
 import android.util.Log;
 import android.view.View;
@@ -215,7 +216,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static ArrayMap<ViewGroup, ArrayList<Transition>> getRunningTransitions() {
         WeakReference<ArrayMap<ViewGroup, ArrayList<Transition>>> runningTransitions =
                 sRunningTransitions.get();
diff --git a/core/java/android/util/EventLog.java b/core/java/android/util/EventLog.java
index ead4e46..1f580af 100644
--- a/core/java/android/util/EventLog.java
+++ b/core/java/android/util/EventLog.java
@@ -20,6 +20,7 @@
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 import java.io.BufferedReader;
 import java.io.FileReader;
@@ -64,7 +65,7 @@
         private Exception mLastWtf;
 
         // Layout of event log entry received from Android logger.
-        //  see system/core/liblog/include/log/log_read.h
+        //  see system/logging/liblog/include/log/log_read.h
         private static final int LENGTH_OFFSET = 0;
         private static final int HEADER_SIZE_OFFSET = 2;
         private static final int PROCESS_OFFSET = 4;
@@ -85,7 +86,7 @@
         private static final byte FLOAT_TYPE = 4;
 
         /** @param data containing event, read from the system */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         /*package*/ Event(byte[] data) {
             mBuffer = ByteBuffer.wrap(data);
             mBuffer.order(ByteOrder.nativeOrder());
diff --git a/core/java/android/util/IconDrawableFactory.java b/core/java/android/util/IconDrawableFactory.java
index 721e6b3..9b1e6cf 100644
--- a/core/java/android/util/IconDrawableFactory.java
+++ b/core/java/android/util/IconDrawableFactory.java
@@ -23,6 +23,7 @@
 import android.content.pm.PackageManager;
 import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.os.UserHandle;
 import android.os.UserManager;
 
@@ -51,7 +52,7 @@
         return appInfo.isInstantApp() || mUm.isManagedProfile(userId);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Drawable getBadgedIcon(ApplicationInfo appInfo) {
         return getBadgedIcon(appInfo, UserHandle.getUserId(appInfo.uid));
     }
diff --git a/core/java/android/util/LocalLog.java b/core/java/android/util/LocalLog.java
index fda5e0d..17fb9e4 100644
--- a/core/java/android/util/LocalLog.java
+++ b/core/java/android/util/LocalLog.java
@@ -17,6 +17,7 @@
 package android.util;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.SystemClock;
 
 import java.io.FileDescriptor;
@@ -113,7 +114,7 @@
         ReadOnlyLocalLog(LocalLog log) {
             mLog = log;
         }
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
             mLog.dump(pw);
         }
@@ -128,7 +129,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ReadOnlyLocalLog readOnlyLocalLog() {
         return new ReadOnlyLocalLog(this);
     }
diff --git a/core/java/android/util/LogWriter.java b/core/java/android/util/LogWriter.java
index a674ae1..21b3665 100644
--- a/core/java/android/util/LogWriter.java
+++ b/core/java/android/util/LogWriter.java
@@ -17,6 +17,7 @@
 package android.util;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 import java.io.Writer;
 
@@ -39,7 +40,7 @@
      * {@link android.util.Log#ERROR Log.ERROR}.
      * @param tag A string tag to associate with each printed log statement.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public LogWriter(int priority, String tag) {
         mPriority = priority;
         mTag = tag;
diff --git a/core/java/android/util/LongArray.java b/core/java/android/util/LongArray.java
index 93bcd6b..53dddeb 100644
--- a/core/java/android/util/LongArray.java
+++ b/core/java/android/util/LongArray.java
@@ -18,6 +18,7 @@
 
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 import com.android.internal.util.ArrayUtils;
 import com.android.internal.util.Preconditions;
@@ -45,7 +46,7 @@
     /**
      * Creates an empty LongArray with the default initial capacity.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public LongArray() {
         this(10);
     }
@@ -104,7 +105,7 @@
      *
      * @throws IndexOutOfBoundsException when index &lt; 0 || index &gt; size()
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void add(int index, long value) {
         ensureCapacity(1);
         int rightSegment = mSize - index;
@@ -208,7 +209,7 @@
     /**
      * Returns the number of values in this array.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int size() {
         return mSize;
     }
diff --git a/core/java/android/util/NtpTrustedTime.java b/core/java/android/util/NtpTrustedTime.java
index 0892c94..4ac3178 100644
--- a/core/java/android/util/NtpTrustedTime.java
+++ b/core/java/android/util/NtpTrustedTime.java
@@ -26,6 +26,7 @@
 import android.net.Network;
 import android.net.NetworkInfo;
 import android.net.SntpClient;
+import android.os.Build;
 import android.os.SystemClock;
 import android.provider.Settings;
 import android.text.TextUtils;
@@ -138,7 +139,7 @@
         return sSingleton;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean forceRefresh() {
         synchronized (this) {
             NtpConnectionInfo connectionInfo = getNtpConnectionInfo();
@@ -181,7 +182,7 @@
      * @deprecated Use {@link #getCachedTimeResult()} to obtain a {@link TimeResult} atomically.
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean hasCache() {
         return mTimeResult != null;
     }
@@ -208,7 +209,7 @@
      * @deprecated Use {@link #getCachedTimeResult()} to obtain a {@link TimeResult} atomically.
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public long currentTimeMillis() {
         TimeResult timeResult = mTimeResult;
         if (timeResult == null) {
@@ -227,7 +228,7 @@
      * @deprecated Use {@link #getCachedTimeResult()} to obtain a {@link TimeResult} atomically.
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public long getCachedNtpTime() {
         if (LOGD) Log.d(TAG, "getCachedNtpTime() cache hit");
         TimeResult timeResult = mTimeResult;
@@ -240,7 +241,7 @@
      * @deprecated Use {@link #getCachedTimeResult()} to obtain a {@link TimeResult} atomically.
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public long getCachedNtpTimeReference() {
         TimeResult timeResult = mTimeResult;
         return timeResult == null ? 0 : timeResult.getElapsedRealtimeMillis();
diff --git a/core/java/android/util/PathParser.java b/core/java/android/util/PathParser.java
index 1e5ec0b..9be17cf 100644
--- a/core/java/android/util/PathParser.java
+++ b/core/java/android/util/PathParser.java
@@ -16,6 +16,7 @@
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.graphics.Path;
+import android.os.Build;
 
 import dalvik.annotation.optimization.FastNative;
 
@@ -29,7 +30,7 @@
      * @param pathString The string representing a path, the same as "d" string in svg file.
      * @return the generated Path object.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static Path createPathFromPathData(String pathString) {
         if (pathString == null) {
             throw new IllegalArgumentException("Path string can not be null.");
diff --git a/core/java/android/util/Rational.java b/core/java/android/util/Rational.java
index 5930000..c89dd16 100644
--- a/core/java/android/util/Rational.java
+++ b/core/java/android/util/Rational.java
@@ -18,6 +18,7 @@
 import static com.android.internal.util.Preconditions.checkNotNull;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 import java.io.IOException;
 import java.io.InvalidObjectException;
@@ -76,9 +77,9 @@
      * Do not change the order of these fields or add new instance fields to maintain the
      * Serializable compatibility across API revisions.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final int mNumerator;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final int mDenominator;
 
     /**
diff --git a/core/java/android/util/RecurrenceRule.java b/core/java/android/util/RecurrenceRule.java
index a570e5e..89a06d2 100644
--- a/core/java/android/util/RecurrenceRule.java
+++ b/core/java/android/util/RecurrenceRule.java
@@ -17,6 +17,7 @@
 package android.util;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -50,7 +51,7 @@
     @VisibleForTesting
     public static Clock sClock = Clock.systemDefaultZone();
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final ZonedDateTime start;
     public final ZonedDateTime end;
     public final Period period;
@@ -67,7 +68,7 @@
     }
 
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static RecurrenceRule buildRecurringMonthly(int dayOfMonth, ZoneId zone) {
         // Assume we started last January, since it has all possible days
         final ZonedDateTime now = ZonedDateTime.now(sClock).withZoneSameInstant(zone);
diff --git a/core/java/android/util/Slog.java b/core/java/android/util/Slog.java
index 2c8bbbf..3880131 100644
--- a/core/java/android/util/Slog.java
+++ b/core/java/android/util/Slog.java
@@ -89,7 +89,7 @@
      * will always be handled asynchronously.  Primarily for use by coding running within
      * the system process.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static int wtf(String tag, String msg) {
         return Log.wtf(Log.LOG_ID_SYSTEM, tag, msg, null, false, true);
     }
@@ -130,7 +130,7 @@
         return Log.wtf(Log.LOG_ID_SYSTEM, tag, msg, tr, false, true);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static int println(int priority, String tag, String msg) {
         return Log.println_native(Log.LOG_ID_SYSTEM, priority, tag, msg);
     }
diff --git a/core/java/android/util/TimeUtils.java b/core/java/android/util/TimeUtils.java
index e0b8d52..cd6585c 100644
--- a/core/java/android/util/TimeUtils.java
+++ b/core/java/android/util/TimeUtils.java
@@ -363,7 +363,7 @@
      * @return String representation of the time.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static String logTimeOfDay(long millis) {
         Calendar c = Calendar.getInstance();
         if (millis >= 0) {
diff --git a/core/java/android/util/TrustedTime.java b/core/java/android/util/TrustedTime.java
index f41fe85..f279bdb 100644
--- a/core/java/android/util/TrustedTime.java
+++ b/core/java/android/util/TrustedTime.java
@@ -17,6 +17,7 @@
 package android.util;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 /**
  * Interface that provides trusted time information, possibly coming from an NTP
@@ -52,7 +53,7 @@
      * @deprecated Only kept for UnsupportedAppUsage. Do not use. See {@link NtpTrustedTime}
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public long getCacheAge();
 
     /**
diff --git a/core/java/android/uwb/AngleMeasurement.java b/core/java/android/uwb/AngleMeasurement.java
new file mode 100644
index 0000000..33bc121
--- /dev/null
+++ b/core/java/android/uwb/AngleMeasurement.java
@@ -0,0 +1,208 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+import android.annotation.FloatRange;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.util.Objects;
+
+/**
+ * Angle measurement
+ *
+ * <p>The actual angle is interpreted as:
+ *   {@link #getRadians()} +/- {@link #getErrorRadians()} ()} at {@link #getConfidenceLevel()}
+ *
+ * @hide
+ */
+public final class AngleMeasurement implements Parcelable {
+    private final double mRadians;
+    private final double mErrorRadians;
+    private final double mConfidenceLevel;
+
+    private AngleMeasurement(double radians, double errorRadians, double confidenceLevel) {
+        mRadians = radians;
+        mErrorRadians = errorRadians;
+        mConfidenceLevel = confidenceLevel;
+    }
+
+    /**
+     * Angle measurement in radians
+     *
+     * @return angle in radians
+     */
+    @FloatRange(from = -Math.PI, to = +Math.PI)
+    public double getRadians() {
+        return mRadians;
+    }
+
+    /**
+     * Error of angle measurement in radians
+     *
+     * <p>Must be a positive value
+     *
+     * @return angle measurement error in radians
+     */
+    @FloatRange(from = 0.0, to = +Math.PI)
+    public double getErrorRadians() {
+        return mErrorRadians;
+    }
+
+    /**
+     * Angle measurement confidence level expressed as a value between
+     * 0.0 to 1.0.
+     *
+     * <p>A value of 0.0 indicates there is no confidence in the measurement. A value of 1.0
+     * indicates there is maximum confidence in the measurement.
+     *
+     * @return the confidence level of the angle measurement
+     */
+    @FloatRange(from = 0.0, to = 1.0)
+    public double getConfidenceLevel() {
+        return mConfidenceLevel;
+    }
+
+    /**
+     * @hide
+    */
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+
+        if (obj instanceof AngleMeasurement) {
+            AngleMeasurement other = (AngleMeasurement) obj;
+            return mRadians == other.getRadians()
+                    && mErrorRadians == other.getErrorRadians()
+                    && mConfidenceLevel == other.getConfidenceLevel();
+        }
+        return false;
+    }
+
+    /**
+     * @hide
+     */
+    @Override
+    public int hashCode() {
+        return Objects.hash(mRadians, mErrorRadians, mConfidenceLevel);
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeDouble(mRadians);
+        dest.writeDouble(mErrorRadians);
+        dest.writeDouble(mConfidenceLevel);
+    }
+
+    public static final @android.annotation.NonNull Creator<AngleMeasurement> CREATOR =
+            new Creator<AngleMeasurement>() {
+                @Override
+                public AngleMeasurement createFromParcel(Parcel in) {
+                    Builder builder = new Builder();
+                    builder.setRadians(in.readDouble());
+                    builder.setErrorRadians(in.readDouble());
+                    builder.setConfidenceLevel(in.readDouble());
+                    return builder.build();
+                }
+
+                @Override
+                public AngleMeasurement[] newArray(int size) {
+                    return new AngleMeasurement[size];
+                }
+    };
+
+    /**
+     * Builder class for {@link AngleMeasurement}.
+     */
+    public static final class Builder {
+        private double mRadians = Double.NaN;
+        private double mErrorRadians = Double.NaN;
+        private double mConfidenceLevel = Double.NaN;
+
+        /**
+         * Set the angle in radians
+         *
+         * @param radians angle in radians
+         * @throws IllegalArgumentException if angle exceeds allowed limits of [-Math.PI, +Math.PI]
+         */
+        public Builder setRadians(double radians) {
+            if (radians < -Math.PI || radians > Math.PI) {
+                throw new IllegalArgumentException("Invalid radians: " + radians);
+            }
+            mRadians = radians;
+            return this;
+        }
+
+        /**
+         * Set the angle error in radians
+         *
+         * @param errorRadians error of the angle in radians
+         * @throws IllegalArgumentException if the error exceeds the allowed limits of [0, +Math.PI]
+         */
+        public Builder setErrorRadians(double errorRadians) {
+            if (errorRadians < 0.0 || errorRadians > Math.PI) {
+                throw new IllegalArgumentException(
+                        "Invalid error radians: " + errorRadians);
+            }
+            mErrorRadians = errorRadians;
+            return this;
+        }
+
+        /**
+         * Set the angle confidence level
+         *
+         * @param confidenceLevel level of confidence of the angle measurement
+         * @throws IllegalArgumentException if the error exceeds the allowed limits of [0.0, 1.0]
+         */
+        public Builder setConfidenceLevel(double confidenceLevel) {
+            if (confidenceLevel < 0.0 || confidenceLevel > 1.0) {
+                throw new IllegalArgumentException(
+                        "Invalid confidence level: " + confidenceLevel);
+            }
+            mConfidenceLevel = confidenceLevel;
+            return this;
+        }
+
+        /**
+         * Build the {@link AngleMeasurement} object
+         *
+         * @throws IllegalStateException if angle, error, or confidence values are missing
+         */
+        public AngleMeasurement build() {
+            if (Double.isNaN(mRadians)) {
+                throw new IllegalStateException("Angle is not set");
+            }
+
+            if (Double.isNaN(mErrorRadians)) {
+                throw new IllegalStateException("Angle error is not set");
+            }
+
+            if (Double.isNaN(mConfidenceLevel)) {
+                throw new IllegalStateException("Angle confidence level is not set");
+            }
+
+            return new AngleMeasurement(mRadians, mErrorRadians, mConfidenceLevel);
+        }
+    }
+}
diff --git a/core/java/android/uwb/AngleOfArrivalMeasurement.java b/core/java/android/uwb/AngleOfArrivalMeasurement.java
new file mode 100644
index 0000000..cd5af69
--- /dev/null
+++ b/core/java/android/uwb/AngleOfArrivalMeasurement.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.util.Objects;
+
+/**
+ * Represents an angle of arrival measurement between two devices using Ultra Wideband
+ *
+ * @hide
+ */
+public final class AngleOfArrivalMeasurement implements Parcelable {
+    private final AngleMeasurement mAzimuthAngleMeasurement;
+    private final AngleMeasurement mAltitudeAngleMeasurement;
+
+    private AngleOfArrivalMeasurement(@NonNull AngleMeasurement azimuthAngleMeasurement,
+            @Nullable AngleMeasurement altitudeAngleMeasurement) {
+        mAzimuthAngleMeasurement = azimuthAngleMeasurement;
+        mAltitudeAngleMeasurement = altitudeAngleMeasurement;
+    }
+
+    /**
+     * Azimuth angle measurement
+     * <p>Azimuth {@link AngleMeasurement} of remote device in horizontal coordinate system, this is
+     * the angle clockwise from the meridian when viewing above the north pole.
+     *
+     * <p>See: https://en.wikipedia.org/wiki/Horizontal_coordinate_system
+     *
+     * <p>On an Android device, azimuth north is defined as the angle perpendicular away from the
+     * back of the device when holding it in portrait mode upright.
+     *
+     * <p>Azimuth angle must be supported when Angle of Arrival is supported
+     *
+     * @return the azimuth {@link AngleMeasurement}
+     */
+    @NonNull
+    public AngleMeasurement getAzimuth() {
+        return mAzimuthAngleMeasurement;
+    }
+
+    /**
+     * Altitude angle measurement
+     * <p>Altitude {@link AngleMeasurement} of remote device in horizontal coordinate system, this
+     * is the angle above the equator when the north pole is up.
+     *
+     * <p>See: https://en.wikipedia.org/wiki/Horizontal_coordinate_system
+     *
+     * <p>On an Android device, altitude is defined as the angle vertical from ground when holding
+     * the device in portrait mode upright.
+     *
+     * @return altitude {@link AngleMeasurement} or null when this is not available
+     */
+    @Nullable
+    public AngleMeasurement getAltitude() {
+        return mAltitudeAngleMeasurement;
+    }
+
+    /**
+     * @hide
+     */
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+
+        if (obj instanceof AngleOfArrivalMeasurement) {
+            AngleOfArrivalMeasurement other = (AngleOfArrivalMeasurement) obj;
+            return mAzimuthAngleMeasurement.equals(other.getAzimuth())
+                    && mAltitudeAngleMeasurement.equals(other.getAltitude());
+        }
+        return false;
+    }
+
+    /**
+     * @hide
+     */
+    @Override
+    public int hashCode() {
+        return Objects.hash(mAzimuthAngleMeasurement, mAltitudeAngleMeasurement);
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeParcelable(mAzimuthAngleMeasurement, flags);
+        dest.writeParcelable(mAltitudeAngleMeasurement, flags);
+    }
+
+    public static final @android.annotation.NonNull Creator<AngleOfArrivalMeasurement> CREATOR =
+            new Creator<AngleOfArrivalMeasurement>() {
+                @Override
+                public AngleOfArrivalMeasurement createFromParcel(Parcel in) {
+                    Builder builder = new Builder();
+
+                    builder.setAzimuthAngleMeasurement(
+                            in.readParcelable(AngleMeasurement.class.getClassLoader()));
+
+                    builder.setAltitudeAngleMeasurement(
+                            in.readParcelable(AngleMeasurement.class.getClassLoader()));
+
+                    return builder.build();
+                }
+
+                @Override
+                public AngleOfArrivalMeasurement[] newArray(int size) {
+                    return new AngleOfArrivalMeasurement[size];
+                }
+            };
+
+    /**
+     * Builder class for {@link AngleOfArrivalMeasurement}.
+     */
+    public static final class Builder {
+        private AngleMeasurement mAzimuthAngleMeasurement = null;
+        private AngleMeasurement mAltitudeAngleMeasurement = null;
+
+        /**
+         * Set the azimuth angle
+         *
+         * @param azimuthAngle azimuth angle
+         */
+        public Builder setAzimuthAngleMeasurement(@NonNull AngleMeasurement azimuthAngle) {
+            mAzimuthAngleMeasurement = azimuthAngle;
+            return this;
+        }
+
+        /**
+         * Set the altitude angle
+         *
+         * @param altitudeAngle altitude angle
+         */
+        public Builder setAltitudeAngleMeasurement(@NonNull AngleMeasurement altitudeAngle) {
+            mAltitudeAngleMeasurement = altitudeAngle;
+            return this;
+        }
+
+        /**
+         * Build the {@link AngleOfArrivalMeasurement} object
+         *
+         * @throws IllegalStateException if the required azimuth angle is not provided
+         */
+        public AngleOfArrivalMeasurement build() {
+            if (mAzimuthAngleMeasurement == null) {
+                throw new IllegalStateException("Azimuth angle measurement is not set");
+            }
+
+            return new AngleOfArrivalMeasurement(mAzimuthAngleMeasurement,
+                    mAltitudeAngleMeasurement);
+        }
+    }
+}
diff --git a/core/java/android/uwb/AngleOfArrivalSupport.aidl b/core/java/android/uwb/AngleOfArrivalSupport.aidl
new file mode 100644
index 0000000..57666ff
--- /dev/null
+++ b/core/java/android/uwb/AngleOfArrivalSupport.aidl
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+/**
+ * @hide
+ */
+@Backing(type="int")
+enum AngleOfArrivalSupport {
+  /**
+   * The device does not support angle of arrival
+   */
+  NONE,
+
+  /**
+   * The device supports planar angle of arrival
+   */
+  TWO_DIMENSIONAL,
+
+  /**
+   * The device does supports three dimensional angle of arrival with hemispherical azimuth angles
+   */
+  THREE_DIMENSIONAL_HEMISPHERICAL,
+
+  /**
+   * The device does supports three dimensional angle of arrival with full azimuth angles
+   */
+  THREE_DIMENSIONAL_SPHERICAL,
+}
+
diff --git a/core/java/android/uwb/CloseReason.aidl b/core/java/android/uwb/CloseReason.aidl
new file mode 100644
index 0000000..bef129e
--- /dev/null
+++ b/core/java/android/uwb/CloseReason.aidl
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+/**
+ * @hide
+ */
+@Backing(type="int")
+enum CloseReason {
+  /**
+   * Unknown reason
+   */
+  UNKNOWN,
+
+  /**
+   * A local API call triggered the close, such as a call to
+   * IUwbAdapter.stopRanging.
+   */
+  LOCAL_API,
+
+  /**
+   * The maximum number of sessions has been reached. This error may be generated
+   * for an active session if a higher priority session begins.
+   */
+  MAX_SESSIONS_REACHED,
+
+  /**
+   * The system state has changed resulting in the session ending (e.g. the user
+   * disables UWB, or the user's locale changes and an active channel is no longer
+   * permitted to be used).
+   */
+  SYSTEM_POLICY,
+
+  /**
+   * The remote device has requested to terminate the session
+   */
+  REMOTE_REQUEST,
+
+  /**
+   * The session was closed for a protocol specific reason
+   */
+  PROTOCOL_SPECIFIC,
+}
+
diff --git a/core/java/android/uwb/DistanceMeasurement.java b/core/java/android/uwb/DistanceMeasurement.java
new file mode 100644
index 0000000..c959840
--- /dev/null
+++ b/core/java/android/uwb/DistanceMeasurement.java
@@ -0,0 +1,205 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+import android.annotation.FloatRange;
+import android.annotation.Nullable;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.util.Objects;
+
+/**
+ * A data point for the distance measurement
+ *
+ * <p>The actual distance is interpreted as:
+ *   {@link #getMeters()} +/- {@link #getErrorMeters()} at {@link #getConfidenceLevel()}
+ *
+ * @hide
+ */
+public final class DistanceMeasurement implements Parcelable {
+    private final double mMeters;
+    private final double mErrorMeters;
+    private final double mConfidenceLevel;
+
+    private DistanceMeasurement(double meters, double errorMeters, double confidenceLevel) {
+        mMeters = meters;
+        mErrorMeters = errorMeters;
+        mConfidenceLevel = confidenceLevel;
+    }
+
+    /**
+     * Distance measurement in meters
+     *
+     * @return distance in meters
+     */
+    public double getMeters() {
+        return mMeters;
+    }
+
+    /**
+     * Error of distance measurement in meters
+     * <p>Must be positive
+     *
+     * @return error of distance measurement in meters
+     */
+    public double getErrorMeters() {
+        return mErrorMeters;
+    }
+
+    /**
+     * Distance measurement confidence level expressed as a value between 0.0 to 1.0.
+     *
+     * <p>A value of 0.0 indicates no confidence in the measurement. A value of 1.0 represents
+     * maximum confidence in the measurement
+     *
+     * @return confidence level
+     */
+    @FloatRange(from = 0.0, to = 1.0)
+    public double getConfidenceLevel() {
+        return mConfidenceLevel;
+    }
+
+    /**
+     * @hide
+     */
+    @Override
+    public boolean equals(@Nullable Object obj) {
+        if (this == obj) {
+            return true;
+        }
+
+        if (obj instanceof DistanceMeasurement) {
+            DistanceMeasurement other = (DistanceMeasurement) obj;
+            return mMeters == other.getMeters()
+                    && mErrorMeters == other.getErrorMeters()
+                    && mConfidenceLevel == other.getConfidenceLevel();
+        }
+        return false;
+    }
+
+    /**
+     * @hide
+     */
+    @Override
+    public int hashCode() {
+        return Objects.hash(mMeters, mErrorMeters, mConfidenceLevel);
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeDouble(mMeters);
+        dest.writeDouble(mErrorMeters);
+        dest.writeDouble(mConfidenceLevel);
+    }
+
+    public static final @android.annotation.NonNull Creator<DistanceMeasurement> CREATOR =
+            new Creator<DistanceMeasurement>() {
+                @Override
+                public DistanceMeasurement createFromParcel(Parcel in) {
+                    Builder builder = new Builder();
+                    builder.setMeters(in.readDouble());
+                    builder.setErrorMeters(in.readDouble());
+                    builder.setConfidenceLevel(in.readDouble());
+                    return builder.build();
+                }
+
+                @Override
+                public DistanceMeasurement[] newArray(int size) {
+                    return new DistanceMeasurement[size];
+                }
+    };
+
+    /**
+     * Builder to get a {@link DistanceMeasurement} object.
+     */
+    public static final class Builder {
+        private double mMeters = Double.NaN;
+        private double mErrorMeters = Double.NaN;
+        private double mConfidenceLevel = Double.NaN;
+
+        /**
+         * Set the distance measurement in meters
+         *
+         * @param meters distance in meters
+         * @throws IllegalArgumentException if meters is NaN
+         */
+        public Builder setMeters(double meters) {
+            if (Double.isNaN(meters)) {
+                throw new IllegalArgumentException("meters cannot be NaN");
+            }
+            mMeters = meters;
+            return this;
+        }
+
+        /**
+         * Set the distance error in meters
+         *
+         * @param errorMeters distance error in meters
+         * @throws IllegalArgumentException if error is negative or NaN
+         */
+        public Builder setErrorMeters(double errorMeters) {
+            if (Double.isNaN(errorMeters) || errorMeters < 0.0) {
+                throw new IllegalArgumentException(
+                        "errorMeters must be >= 0.0 and not NaN: " + errorMeters);
+            }
+            mErrorMeters = errorMeters;
+            return this;
+        }
+
+        /**
+         * Set the confidence level
+         *
+         * @param confidenceLevel the confidence level in the distance measurement
+         * @throws IllegalArgumentException if confidence level is not in the range of [0.0, 1.0]
+         */
+        public Builder setConfidenceLevel(double confidenceLevel) {
+            if (confidenceLevel < 0.0 || confidenceLevel > 1.0) {
+                throw new IllegalArgumentException(
+                        "confidenceLevel must be in the range [0.0, 1.0]: " + confidenceLevel);
+            }
+            mConfidenceLevel = confidenceLevel;
+            return this;
+        }
+
+        /**
+         * Builds the {@link DistanceMeasurement} object
+         *
+         * @throws IllegalStateException if meters, error, or confidence are not set
+         */
+        public DistanceMeasurement build() {
+            if (Double.isNaN(mMeters)) {
+                throw new IllegalStateException("Meters cannot be NaN");
+            }
+
+            if (Double.isNaN(mErrorMeters)) {
+                throw new IllegalStateException("Error meters cannot be NaN");
+            }
+
+            if (Double.isNaN(mConfidenceLevel)) {
+                throw new IllegalStateException("Confidence level cannot be NaN");
+            }
+
+            return new DistanceMeasurement(mMeters, mErrorMeters, mConfidenceLevel);
+        }
+    }
+}
diff --git a/core/java/android/uwb/IUwbAdapter.aidl b/core/java/android/uwb/IUwbAdapter.aidl
new file mode 100644
index 0000000..d29ed34
--- /dev/null
+++ b/core/java/android/uwb/IUwbAdapter.aidl
@@ -0,0 +1,170 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+import android.os.PersistableBundle;
+import android.uwb.AngleOfArrivalSupport;
+import android.uwb.IUwbAdapterStateCallbacks;
+import android.uwb.IUwbRangingCallbacks;
+import android.uwb.SessionHandle;
+
+/**
+ * @hide
+ */
+interface IUwbAdapter {
+  /*
+   * Register the callbacks used to notify the framework of events and data
+   *
+   * The provided callback's IUwbAdapterStateCallbacks#onAdapterStateChanged
+   * function must be called immediately following registration with the current
+   * state of the UWB adapter.
+   *
+   * @param callbacks callback to provide range and status updates to the framework
+   */
+  void registerAdapterStateCallbacks(in IUwbAdapterStateCallbacks adapterStateCallbacks);
+
+  /*
+   * Unregister the callbacks used to notify the framework of events and data
+   *
+   * Calling this function with an unregistered callback is a no-op
+   *
+   * @param callbacks callback to unregister
+   */
+  void unregisterAdapterStateCallbacks(in IUwbAdapterStateCallbacks callbacks);
+
+  /**
+   * Returns true if ranging is supported, false otherwise
+   */
+  boolean isRangingSupported();
+
+  /**
+   * Get the angle of arrival supported by this device
+   *
+   * @return the angle of arrival type supported
+   */
+  AngleOfArrivalSupport getAngleOfArrivalSupport();
+
+  /**
+   * Generates a list of the supported 802.15.4z channels
+   *
+   * The list must be prioritized in the order of preferred channel usage.
+   *
+   * The list must only contain channels that are permitted to be used in the
+   * device's current location.
+   *
+   * @return an array of support channels on the device for the current location.
+   */
+  int[] getSupportedChannels();
+
+  /**
+   * Generates a list of the supported 802.15.4z preamble codes
+   *
+   * The list must be prioritized in the order of preferred preamble usage.
+   *
+   * The list must only contain preambles that are permitted to be used in the
+   * device's current location.
+   *
+   * @return an array of supported preambles on the device for the current
+   *         location.
+   */
+  int[] getSupportedPreambleCodes();
+
+  /**
+   * Get the accuracy of the ranging timestamps
+   *
+   * @return accuracy of the ranging timestamps in nanoseconds
+   */
+  long getTimestampResolutionNanos();
+
+  /**
+   * Get the supported number of simultaneous ranging sessions
+   *
+   * @return the supported number of simultaneous ranging sessions
+   */
+  int getMaxSimultaneousSessions();
+
+  /**
+   * Get the maximum number of remote devices per session
+   *
+   * @return the maximum number of remote devices supported in a single session
+   */
+  int getMaxRemoteDevicesPerSession();
+
+  /**
+   * Provides the capabilities and features of the device
+   *
+   * @return specification specific capabilities and features of the device
+   */
+  PersistableBundle getSpecificationInfo();
+
+  /**
+   * Request to start a new ranging session
+   *
+   * This function must return before calling IUwbAdapterCallbacks
+   * #onRangingStarted, #onRangingClosed, or #onRangingResult.
+   *
+   * A ranging session does not need to be started before returning.
+   *
+   * IUwbAdapterCallbacks#onRangingStarted must be called within
+   * RANGING_SESSION_START_THRESHOLD_MS milliseconds of #startRanging being called
+   * if the ranging session is scheduled to start successfully.
+   *
+   * IUwbAdapterCallbacks#onRangingStartFailed must be called within
+   * RANGING_SESSION_START_THRESHOLD_MS milliseconds of #startRanging being called
+   * if the ranging session fails to be scheduled to start successfully.
+   *
+   * @param rangingCallbacks the callbacks used to deliver ranging information
+   * @param parameters the configuration to use for ranging
+   * @return a SessionHandle used to identify this ranging request
+   */
+  SessionHandle startRanging(in IUwbRangingCallbacks rangingCallbacks,
+                             in PersistableBundle parameters);
+
+  /**
+   * Stop and close ranging for the session associated with the given handle
+   *
+   * Calling with an invalid handle or a handle that has already been closed
+   * is a no-op.
+   *
+   * IUwbAdapterCallbacks#onRangingClosed must be called within
+   * RANGING_SESSION_CLOSE_THRESHOLD_MS of #stopRanging being called.
+   *
+   * @param sessionHandle the session handle to stop ranging for
+   */
+  void closeRanging(in SessionHandle sessionHandle);
+
+  /**
+   * The maximum allowed time to start a ranging session.
+   */
+  const int RANGING_SESSION_START_THRESHOLD_MS = 3000; // Value TBD
+
+  /**
+   * The maximum allowed time to notify the framework that a session has been
+   * closed.
+   */
+  const int RANGING_SESSION_CLOSE_THRESHOLD_MS = 3000; // Value TBD
+
+  /**
+   * Ranging scheduling time unit (RSTU) for High Rate Pulse (HRP) PHY
+   */
+  const int HIGH_RATE_PULSE_CHIRPS_PER_RSTU = 416;
+
+  /**
+   * Ranging scheduling time unit (RSTU) for Low Rate Pulse (LRP) PHY
+   */
+  const int LOW_RATE_PULSE_CHIRPS_PER_RSTU = 1;
+}
diff --git a/core/java/android/uwb/IUwbAdapterStateCallbacks.aidl b/core/java/android/uwb/IUwbAdapterStateCallbacks.aidl
new file mode 100644
index 0000000..d928eab
--- /dev/null
+++ b/core/java/android/uwb/IUwbAdapterStateCallbacks.aidl
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+import android.uwb.StateChangeReason;
+
+/**
+ * @hide
+ */
+interface IUwbAdapterStateCallbacks {
+  /**
+   * Called whenever the adapter state changes
+   *
+   * @param isEnabled true if the adapter is enabled, false otherwise
+   * @param reason the reason that the state has changed
+   */
+  void onAdapterStateChanged(boolean isEnabled, StateChangeReason reason);
+}
\ No newline at end of file
diff --git a/core/java/android/uwb/IUwbRangingCallbacks.aidl b/core/java/android/uwb/IUwbRangingCallbacks.aidl
new file mode 100644
index 0000000..1fc3bfd
--- /dev/null
+++ b/core/java/android/uwb/IUwbRangingCallbacks.aidl
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+import android.os.PersistableBundle;
+import android.uwb.CloseReason;
+import android.uwb.RangingReport;
+import android.uwb.SessionHandle;
+import android.uwb.StartFailureReason;
+
+/**
+ * @hide
+ */
+interface IUwbRangingCallbacks {
+  /**
+   * Called when ranging has started
+   *
+   * May output parameters generated by the lower layers that must be sent to the
+   * remote device(s). The PersistableBundle must be constructed using the UWB
+   * support library.
+   *
+   * @param sessionHandle the session the callback is being invoked for
+   * @param rangingOutputParameters parameters generated by the lower layer that
+   *                                should be sent to the remote device.
+   */
+  void onRangingStarted(in SessionHandle sessionHandle,
+                        in PersistableBundle parameters);
+
+  /**
+   * Called when a ranging session fails to start
+   *
+   * @param sessionHandle the session the callback is being invoked for
+   * @param reason the reason the session failed to start
+   * @param parameters protocol specific parameters
+   */
+  void onRangingStartFailed(in SessionHandle sessionHandle, StartFailureReason reason,
+                            in PersistableBundle parameters);
+  /**
+   * Called when a ranging session is closed
+   *
+   * @param sessionHandle the session the callback is being invoked for
+   * @param reason the reason the session was closed
+   * @param parameters protocol specific parameters
+   */
+  void onRangingClosed(in SessionHandle sessionHandle, CloseReason reason,
+                       in PersistableBundle parameters);
+
+  /**
+   * Provides a new RangingResult to the framework
+   *
+   * The reported timestamp for a ranging measurement must be calculated as the
+   * time which the ranging round that generated this measurement concluded.
+   *
+   * @param sessionHandle an identifier to associate the ranging results with a
+   *                      session that is active
+   * @param result the ranging report
+   */
+  void onRangingResult(in SessionHandle sessionHandle, in RangingReport result);
+}
diff --git a/core/java/android/uwb/MeasurementStatus.aidl b/core/java/android/uwb/MeasurementStatus.aidl
new file mode 100644
index 0000000..5fa1554
--- /dev/null
+++ b/core/java/android/uwb/MeasurementStatus.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+/**
+ * @hide
+ */
+@Backing(type="int")
+enum MeasurementStatus {
+  /**
+   * Ranging was successful
+   */
+  SUCCESS,
+
+  /**
+   * The remote device is out of range
+   */
+  FAILURE_OUT_OF_RANGE,
+
+  /**
+   * An unknown failure has occurred.
+   */
+   FAILURE_UNKNOWN,
+}
+
diff --git a/core/java/android/uwb/RangingMeasurement.java b/core/java/android/uwb/RangingMeasurement.java
new file mode 100644
index 0000000..f1c3162
--- /dev/null
+++ b/core/java/android/uwb/RangingMeasurement.java
@@ -0,0 +1,297 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.SuppressLint;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.os.SystemClock;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.Objects;
+
+/**
+ * Representation of a ranging measurement between the local device and a remote device
+ *
+ * @hide
+ */
+public final class RangingMeasurement implements Parcelable {
+    private final UwbAddress mRemoteDeviceAddress;
+    private final @Status int mStatus;
+    private final long mElapsedRealtimeNanos;
+    private final DistanceMeasurement mDistanceMeasurement;
+    private final AngleOfArrivalMeasurement mAngleOfArrivalMeasurement;
+
+    private RangingMeasurement(@NonNull UwbAddress remoteDeviceAddress, @Status int status,
+            long elapsedRealtimeNanos, @Nullable DistanceMeasurement distanceMeasurement,
+            @Nullable AngleOfArrivalMeasurement angleOfArrivalMeasurement) {
+        mRemoteDeviceAddress = remoteDeviceAddress;
+        mStatus = status;
+        mElapsedRealtimeNanos = elapsedRealtimeNanos;
+        mDistanceMeasurement = distanceMeasurement;
+        mAngleOfArrivalMeasurement = angleOfArrivalMeasurement;
+    }
+
+    /**
+     * Get the remote device's {@link UwbAddress}
+     *
+     * @return the remote device's {@link UwbAddress}
+     */
+    @NonNull
+    public UwbAddress getRemoteDeviceAddress() {
+        return mRemoteDeviceAddress;
+    }
+
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(value = {
+            RANGING_STATUS_SUCCESS,
+            RANGING_STATUS_FAILURE_OUT_OF_RANGE,
+            RANGING_STATUS_FAILURE_UNKNOWN_ERROR})
+    public @interface Status {}
+
+    /**
+     * Ranging attempt was successful for this device
+     */
+    public static final int RANGING_STATUS_SUCCESS = 0;
+
+    /**
+     * Ranging failed for this device because it is out of range
+     */
+    public static final int RANGING_STATUS_FAILURE_OUT_OF_RANGE = 1;
+
+    /**
+     * Ranging failed for this device because of unknown error
+     */
+    public static final int RANGING_STATUS_FAILURE_UNKNOWN_ERROR = -1;
+
+    /**
+     * Get the status of this ranging measurement
+     *
+     * <p>Possible values are
+     * {@link #RANGING_STATUS_SUCCESS},
+     * {@link #RANGING_STATUS_FAILURE_OUT_OF_RANGE},
+     * {@link #RANGING_STATUS_FAILURE_UNKNOWN_ERROR}.
+     *
+     * @return the status of the ranging measurement
+     */
+    @Status
+    public int getStatus() {
+        return mStatus;
+    }
+
+    /**
+     * Timestamp of this ranging measurement in time since boot nanos in the same namespace as
+     * {@link SystemClock#elapsedRealtimeNanos()}
+     *
+     * @return timestamp of ranging measurement in nanoseconds
+     */
+    @SuppressLint("MethodNameUnits")
+    public long getElapsedRealtimeNanos() {
+        return mElapsedRealtimeNanos;
+    }
+
+    /**
+     * Get the distance measurement
+     *
+     * @return a {@link DistanceMeasurement} or null if {@link #getStatus()} !=
+     *         {@link #RANGING_STATUS_SUCCESS}
+     */
+    @Nullable
+    public DistanceMeasurement getDistance() {
+        return mDistanceMeasurement;
+    }
+
+    /**
+     * Get the angle of arrival measurement
+     *
+     * @return an {@link AngleOfArrivalMeasurement} or null if {@link #getStatus()} !=
+     *         {@link #RANGING_STATUS_SUCCESS}
+     */
+    @Nullable
+    public AngleOfArrivalMeasurement getAngleOfArrival() {
+        return mAngleOfArrivalMeasurement;
+    }
+
+    /**
+     * @hide
+     */
+    @Override
+    public boolean equals(@Nullable Object obj) {
+        if (this == obj) {
+            return true;
+        }
+
+        if (obj instanceof RangingMeasurement) {
+            RangingMeasurement other = (RangingMeasurement) obj;
+            return mRemoteDeviceAddress.equals(other.getRemoteDeviceAddress())
+                    && mStatus == other.getStatus()
+                    && mElapsedRealtimeNanos == other.getElapsedRealtimeNanos()
+                    && mDistanceMeasurement.equals(other.getDistance())
+                    && mAngleOfArrivalMeasurement.equals(other.getAngleOfArrival());
+        }
+        return false;
+    }
+
+    /**
+     * @hide
+     */
+    @Override
+    public int hashCode() {
+        return Objects.hash(mRemoteDeviceAddress, mStatus, mElapsedRealtimeNanos,
+                mDistanceMeasurement, mAngleOfArrivalMeasurement);
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeParcelable(mRemoteDeviceAddress, flags);
+        dest.writeInt(mStatus);
+        dest.writeLong(mElapsedRealtimeNanos);
+        dest.writeParcelable(mDistanceMeasurement, flags);
+        dest.writeParcelable(mAngleOfArrivalMeasurement, flags);
+    }
+
+    public static final @android.annotation.NonNull Creator<RangingMeasurement> CREATOR =
+            new Creator<RangingMeasurement>() {
+                @Override
+                public RangingMeasurement createFromParcel(Parcel in) {
+                    Builder builder = new Builder();
+                    builder.setRemoteDeviceAddress(
+                            in.readParcelable(UwbAddress.class.getClassLoader()));
+                    builder.setStatus(in.readInt());
+                    builder.setElapsedRealtimeNanos(in.readLong());
+                    builder.setDistanceMeasurement(
+                            in.readParcelable(DistanceMeasurement.class.getClassLoader()));
+                    builder.setAngleOfArrivalMeasurement(
+                            in.readParcelable(AngleOfArrivalMeasurement.class.getClassLoader()));
+                    return builder.build();
+                }
+
+                @Override
+                public RangingMeasurement[] newArray(int size) {
+                    return new RangingMeasurement[size];
+                }
+    };
+
+    /**
+     * Builder for a {@link RangingMeasurement} object.
+     */
+    public static final class Builder {
+        private UwbAddress mRemoteDeviceAddress = null;
+        private @Status int mStatus = RANGING_STATUS_FAILURE_UNKNOWN_ERROR;
+        private long mElapsedRealtimeNanos = -1L;
+        private DistanceMeasurement mDistanceMeasurement = null;
+        private AngleOfArrivalMeasurement mAngleOfArrivalMeasurement = null;
+
+        /**
+         * Set the remote device address that this measurement is for
+         *
+         * @param remoteDeviceAddress remote device's address
+         */
+        public Builder setRemoteDeviceAddress(@NonNull UwbAddress remoteDeviceAddress) {
+            mRemoteDeviceAddress = remoteDeviceAddress;
+            return this;
+        }
+
+        /**
+         * Set the status of ranging measurement
+         *
+         * @param status the status of the ranging measurement
+         */
+        public Builder setStatus(@Status int status) {
+            mStatus = status;
+            return this;
+        }
+
+        /**
+         * Set the elapsed realtime in nanoseconds when the ranging measurement occurred
+         *
+         * @param elapsedRealtimeNanos time the ranging measurement occurred
+         */
+        public Builder setElapsedRealtimeNanos(long elapsedRealtimeNanos) {
+            if (elapsedRealtimeNanos < 0) {
+                throw new IllegalArgumentException("elapsedRealtimeNanos must be >= 0");
+            }
+            mElapsedRealtimeNanos = elapsedRealtimeNanos;
+            return this;
+        }
+
+        /**
+         * Set the {@link DistanceMeasurement}
+         *
+         * @param distanceMeasurement the distance measurement for this ranging measurement
+         */
+        public Builder setDistanceMeasurement(@NonNull DistanceMeasurement distanceMeasurement) {
+            mDistanceMeasurement = distanceMeasurement;
+            return this;
+        }
+
+        /**
+         * Set the {@link AngleOfArrivalMeasurement}
+         *
+         * @param angleOfArrivalMeasurement the angle of arrival measurement for this ranging
+         *                                  measurement
+         */
+        public Builder setAngleOfArrivalMeasurement(
+                @NonNull AngleOfArrivalMeasurement angleOfArrivalMeasurement) {
+            mAngleOfArrivalMeasurement = angleOfArrivalMeasurement;
+            return this;
+        }
+
+        /**
+         * Build the {@link RangingMeasurement} object
+         *
+         * @throws IllegalStateException if a distance or angle of arrival measurement is provided
+         *                               but the measurement was not successful, if the
+         *                               elapsedRealtimeNanos of the measurement is invalid, or
+         *                               if no remote device address is set
+         */
+        public RangingMeasurement build() {
+            if (mStatus != RANGING_STATUS_SUCCESS) {
+                if (mDistanceMeasurement != null) {
+                    throw new IllegalStateException(
+                            "Distance Measurement must be null if ranging is not successful");
+                }
+
+                if (mAngleOfArrivalMeasurement != null) {
+                    throw new IllegalStateException(
+                            "Angle of Arrival must be null if ranging is not successful");
+                }
+            }
+
+            if (mRemoteDeviceAddress == null) {
+                throw new IllegalStateException("No remote device address was set");
+            }
+
+            if (mElapsedRealtimeNanos < 0) {
+                throw new IllegalStateException(
+                        "elapsedRealtimeNanos must be >=0: " + mElapsedRealtimeNanos);
+            }
+
+            return new RangingMeasurement(mRemoteDeviceAddress, mStatus, mElapsedRealtimeNanos,
+                    mDistanceMeasurement, mAngleOfArrivalMeasurement);
+        }
+    }
+}
diff --git a/core/java/android/uwb/RangingReport.aidl b/core/java/android/uwb/RangingReport.aidl
new file mode 100644
index 0000000..c32747a
--- /dev/null
+++ b/core/java/android/uwb/RangingReport.aidl
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+parcelable RangingReport;
diff --git a/core/java/android/uwb/RangingReport.java b/core/java/android/uwb/RangingReport.java
new file mode 100644
index 0000000..45180bf
--- /dev/null
+++ b/core/java/android/uwb/RangingReport.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * This class contains the UWB ranging data
+ *
+ * @hide
+ */
+public final class RangingReport implements Parcelable {
+    private final List<RangingMeasurement> mRangingMeasurements;
+
+    private RangingReport(@NonNull List<RangingMeasurement> rangingMeasurements) {
+        mRangingMeasurements = rangingMeasurements;
+    }
+
+    /**
+     * Get a {@link List} of {@link RangingMeasurement} objects in the last measurement interval
+     * <p>The underlying UWB adapter may choose to do multiple measurements in each ranging
+     * interval.
+     *
+     * <p>The entries in the {@link List} are ordered in ascending order based on
+     * {@link RangingMeasurement#getElapsedRealtimeNanos()}
+     *
+     * @return a {@link List} of {@link RangingMeasurement} objects
+     */
+    @NonNull
+    public List<RangingMeasurement> getMeasurements() {
+        return mRangingMeasurements;
+    }
+
+    /**
+     * @hide
+     */
+    @Override
+    public boolean equals(@Nullable Object obj) {
+        if (this == obj) {
+            return true;
+        }
+
+        if (obj instanceof RangingReport) {
+            RangingReport other = (RangingReport) obj;
+            return mRangingMeasurements.equals(other.getMeasurements());
+        }
+
+        return false;
+    }
+
+    /**
+     * @hide
+     */
+    @Override
+    public int hashCode() {
+        return Objects.hash(mRangingMeasurements);
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeTypedList(mRangingMeasurements);
+    }
+
+    public static final @android.annotation.NonNull Creator<RangingReport> CREATOR =
+            new Creator<RangingReport>() {
+                @Override
+                public RangingReport createFromParcel(Parcel in) {
+                    Builder builder = new Builder();
+                    builder.addMeasurements(in.createTypedArrayList(RangingMeasurement.CREATOR));
+                    return builder.build();
+                }
+
+                @Override
+                public RangingReport[] newArray(int size) {
+                    return new RangingReport[size];
+                }
+    };
+
+    /**
+     * Builder for {@link RangingReport} object
+     */
+    public static final class Builder {
+        List<RangingMeasurement> mMeasurements = new ArrayList<>();
+
+        /**
+         * Add a single {@link RangingMeasurement}
+         *
+         * @param rangingMeasurement a ranging measurement
+         */
+        public Builder addMeasurement(@NonNull RangingMeasurement rangingMeasurement) {
+            mMeasurements.add(rangingMeasurement);
+            return this;
+        }
+
+        /**
+         * Add a {@link List} of {@link RangingMeasurement}s
+         *
+         * @param rangingMeasurements {@link List} of {@link RangingMeasurement}s to add
+         */
+        public Builder addMeasurements(@NonNull List<RangingMeasurement> rangingMeasurements) {
+            mMeasurements.addAll(rangingMeasurements);
+            return this;
+        }
+
+        /**
+         * Build the {@link RangingReport} object
+         *
+         * @throws IllegalStateException if measurements are not in monotonically increasing order
+         */
+        public RangingReport build() {
+            // Verify that all measurement timestamps are monotonically increasing
+            RangingMeasurement prevMeasurement = null;
+            for (int curIndex = 0; curIndex < mMeasurements.size(); curIndex++) {
+                RangingMeasurement curMeasurement = mMeasurements.get(curIndex);
+                if (prevMeasurement != null
+                        && (prevMeasurement.getElapsedRealtimeNanos()
+                                > curMeasurement.getElapsedRealtimeNanos())) {
+                    throw new IllegalStateException(
+                            "Timestamp (" + curMeasurement.getElapsedRealtimeNanos()
+                            + ") at index " + curIndex + " is less than previous timestamp ("
+                            + prevMeasurement.getElapsedRealtimeNanos() + ")");
+                }
+                prevMeasurement = curMeasurement;
+            }
+            return new RangingReport(mMeasurements);
+        }
+    }
+}
+
diff --git a/core/java/android/uwb/RangingSession.java b/core/java/android/uwb/RangingSession.java
new file mode 100644
index 0000000..8639269
--- /dev/null
+++ b/core/java/android/uwb/RangingSession.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+import android.annotation.IntDef;
+import android.os.PersistableBundle;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.concurrent.Executor;
+
+/**
+ * This class provides a way to control an active UWB ranging session.
+ * <p>It also defines the required {@link RangingSession.Callback} that must be implemented
+ * in order to be notified of UWB ranging results and status events related to the
+ * {@link RangingSession}.
+ *
+ * <p>To get an instance of {@link RangingSession}, first use
+ * {@link UwbManager#openRangingSession(PersistableBundle, Executor, Callback)} to request to open a
+ * session. Once the session is opened, a {@link RangingSession} object is provided through
+ * {@link RangingSession.Callback#onOpenSuccess(RangingSession, PersistableBundle)}. If opening a
+ * session fails, the failure is reported through {@link RangingSession.Callback#onClosed(int)} with
+ * the failure reason.
+ *
+ * @hide
+ */
+public final class RangingSession implements AutoCloseable {
+    /**
+     * Interface for receiving {@link RangingSession} events
+     */
+    public interface Callback {
+        /**
+         * Invoked when {@link UwbManager#openRangingSession(PersistableBundle, Executor, Callback)}
+         * is successful
+         *
+         * @param session the newly opened {@link RangingSession}
+         * @param sessionInfo session specific parameters from lower layers
+         */
+        void onOpenSuccess(RangingSession session, PersistableBundle sessionInfo);
+
+        @Retention(RetentionPolicy.SOURCE)
+        @IntDef(value = {
+                CLOSE_REASON_UNKNOWN,
+                CLOSE_REASON_LOCAL_CLOSE_API,
+                CLOSE_REASON_LOCAL_BAD_PARAMETERS,
+                CLOSE_REASON_LOCAL_GENERIC_ERROR,
+                CLOSE_REASON_LOCAL_MAX_SESSIONS_REACHED,
+                CLOSE_REASON_LOCAL_SYSTEM_POLICY,
+                CLOSE_REASON_REMOTE_GENERIC_ERROR,
+                CLOSE_REASON_REMOTE_REQUEST})
+        @interface CloseReason {}
+
+        /**
+         * Indicates that the session was closed or failed to open due to an unknown reason
+         */
+        int CLOSE_REASON_UNKNOWN = 0;
+
+        /**
+         * Indicates that the session was closed or failed to open because
+         * {@link AutoCloseable#close()} or {@link RangingSession#close()} was called
+         */
+        int CLOSE_REASON_LOCAL_CLOSE_API = 1;
+
+        /**
+         * Indicates that the session failed to open due to erroneous parameters passed
+         * to {@link UwbManager#openRangingSession(PersistableBundle, Executor, Callback)}
+         */
+        int CLOSE_REASON_LOCAL_BAD_PARAMETERS = 2;
+
+        /**
+         * Indicates that the session was closed due to some local error on this device besides the
+         * error code already listed
+         */
+        int CLOSE_REASON_LOCAL_GENERIC_ERROR = 3;
+
+        /**
+         * Indicates that the session failed to open because the number of currently open sessions
+         * is equal to {@link UwbManager#getMaxSimultaneousSessions()}
+         */
+        int CLOSE_REASON_LOCAL_MAX_SESSIONS_REACHED = 4;
+
+        /**
+         * Indicates that the session was closed or failed to open due to local system policy, such
+         * as privacy policy, power management policy, permissions, and more.
+         */
+        int CLOSE_REASON_LOCAL_SYSTEM_POLICY = 5;
+
+        /**
+         * Indicates that the session was closed or failed to open due to an error with the remote
+         * device besides error codes already listed.
+         */
+        int CLOSE_REASON_REMOTE_GENERIC_ERROR = 6;
+
+        /**
+         * Indicates that the session was closed or failed to open due to an explicit request from
+         * the remote device.
+         */
+        int CLOSE_REASON_REMOTE_REQUEST = 7;
+
+        /**
+         * Invoked when session is either closed spontaneously, or per user request via
+         * {@link RangingSession#close()} or {@link AutoCloseable#close()}, or when session failed
+         * to open.
+         *
+         * @param reason reason for the session closure
+         */
+        void onClosed(@CloseReason int reason);
+
+        /**
+         * Called once per ranging interval even when a ranging measurement fails
+         *
+         * @param rangingReport ranging report for this interval's measurements
+         */
+        void onReportReceived(RangingReport rangingReport);
+    }
+
+    /**
+     * Close the ranging session
+     * <p>If this session is currently open, it will close and stop the session.
+     * <p>If the session is in the process of being opened, it will attempt to stop the session from
+     * being opened.
+     * <p>If the session is already closed, the registered {@link Callback#onClosed(int)} callback
+     * will still be invoked.
+     *
+     * <p>{@link Callback#onClosed(int)} will be invoked using the same callback
+     * object given to {@link UwbManager#openRangingSession(PersistableBundle, Executor, Callback)}
+     * when the {@link RangingSession} was opened. The callback will be invoked after each call to
+     * {@link #close()}, even if the {@link RangingSession} is already closed.
+     */
+    @Override
+    public void close() {
+        throw new UnsupportedOperationException();
+    }
+}
diff --git a/core/java/android/uwb/SessionHandle.aidl b/core/java/android/uwb/SessionHandle.aidl
new file mode 100644
index 0000000..58a7dbb
--- /dev/null
+++ b/core/java/android/uwb/SessionHandle.aidl
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+parcelable SessionHandle;
diff --git a/core/java/android/uwb/SessionHandle.java b/core/java/android/uwb/SessionHandle.java
new file mode 100644
index 0000000..928fcbdc
--- /dev/null
+++ b/core/java/android/uwb/SessionHandle.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * @hide
+ */
+public final class SessionHandle implements Parcelable  {
+    private final int mId;
+
+    public SessionHandle(int id) {
+        mId = id;
+    }
+
+    protected SessionHandle(Parcel in) {
+        mId = in.readInt();
+    }
+
+    public static final Creator<SessionHandle> CREATOR = new Creator<SessionHandle>() {
+        @Override
+        public SessionHandle createFromParcel(Parcel in) {
+            return new SessionHandle(in);
+        }
+
+        @Override
+        public SessionHandle[] newArray(int size) {
+            return new SessionHandle[size];
+        }
+    };
+
+    public int getId() {
+        return mId;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeInt(mId);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+
+        if (obj instanceof SessionHandle) {
+            SessionHandle other = (SessionHandle) obj;
+            return mId == other.mId;
+        }
+        return false;
+    }
+
+    @Override
+    public String toString() {
+        return "SessionHandle [id=" + mId + "]";
+    }
+}
diff --git a/core/java/android/uwb/StartFailureReason.aidl b/core/java/android/uwb/StartFailureReason.aidl
new file mode 100644
index 0000000..4d9c962
--- /dev/null
+++ b/core/java/android/uwb/StartFailureReason.aidl
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+/**
+ * @hide
+ */
+@Backing(type="int")
+enum StartFailureReason {
+  /**
+   * Unknown start failure reason
+   */
+  UNKNOWN,
+
+  /**
+   * The provided parameters were invalid and ranging could not start
+   */
+  BAD_PARAMETERS,
+
+  /**
+   * The maximum number of sessions has been reached. This error may be generated
+   * for an active session if a higher priority session begins.
+   */
+  MAX_SESSIONS_REACHED,
+
+  /**
+   * The system state has changed resulting in the session ending (e.g. the user
+   * disables UWB, or the user's locale changes and an active channel is no longer
+   * permitted to be used).
+   */
+  SYSTEM_POLICY,
+
+  /**
+   * The session could not start because of a protocol specific reason.
+   */
+  PROTOCOL_SPECIFIC,
+}
+
diff --git a/core/java/android/uwb/StateChangeReason.aidl b/core/java/android/uwb/StateChangeReason.aidl
new file mode 100644
index 0000000..46a6e2e
--- /dev/null
+++ b/core/java/android/uwb/StateChangeReason.aidl
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+/**
+ * @hide
+ */
+@Backing(type="int")
+enum StateChangeReason {
+  /**
+   * The state changed for an unknown reason
+   */
+  UNKNOWN,
+
+  /**
+   * The adapter state changed because a session started.
+   */
+  SESSION_STARTED,
+
+
+  /**
+   * The adapter state changed because all sessions were closed.
+   */
+  ALL_SESSIONS_CLOSED,
+
+  /**
+   * The adapter state changed because of a device system change.
+   */
+  SYSTEM_POLICY,
+}
+
diff --git a/core/java/android/uwb/TEST_MAPPING b/core/java/android/uwb/TEST_MAPPING
new file mode 100644
index 0000000..9e50bd6
--- /dev/null
+++ b/core/java/android/uwb/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "presubmit": [
+    {
+      "name": "UwbManagerTests"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/core/java/android/uwb/UwbAddress.aidl b/core/java/android/uwb/UwbAddress.aidl
new file mode 100644
index 0000000..a202b1a
--- /dev/null
+++ b/core/java/android/uwb/UwbAddress.aidl
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+parcelable UwbAddress;
diff --git a/core/java/android/uwb/UwbAddress.java b/core/java/android/uwb/UwbAddress.java
new file mode 100644
index 0000000..828324c
--- /dev/null
+++ b/core/java/android/uwb/UwbAddress.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.util.Arrays;
+
+/**
+ * A class representing a UWB address
+ *
+ * @hide
+ */
+public final class UwbAddress implements Parcelable {
+    public static final int SHORT_ADDRESS_BYTE_LENGTH = 2;
+    public static final int EXTENDED_ADDRESS_BYTE_LENGTH = 8;
+
+    private final byte[] mAddressBytes;
+
+    private UwbAddress(byte[] address) {
+        mAddressBytes = address;
+    }
+
+    /**
+     * Create a {@link UwbAddress} from a byte array.
+     *
+     * <p>If the provided array is {@link #SHORT_ADDRESS_BYTE_LENGTH} bytes, a short address is
+     * created. If the provided array is {@link #EXTENDED_ADDRESS_BYTE_LENGTH} bytes, then an
+     * extended address is created.
+     *
+     * @param address a byte array to convert to a {@link UwbAddress}
+     * @return a {@link UwbAddress} created from the input byte array
+     * @throws IllegalArgumentException when the length is not one of
+     *       {@link #SHORT_ADDRESS_BYTE_LENGTH} or {@link #EXTENDED_ADDRESS_BYTE_LENGTH} bytes
+     */
+    @NonNull
+    public static UwbAddress fromBytes(@NonNull byte[] address) throws IllegalArgumentException {
+        if (address.length != SHORT_ADDRESS_BYTE_LENGTH
+                && address.length != EXTENDED_ADDRESS_BYTE_LENGTH) {
+            throw new IllegalArgumentException("Invalid UwbAddress length " + address.length);
+        }
+        return new UwbAddress(address);
+    }
+
+    /**
+     * Get the address as a byte array
+     *
+     * @return the byte representation of this {@link UwbAddress}
+     */
+    @NonNull
+    public byte[] toBytes() {
+        return mAddressBytes;
+    }
+
+    /**
+     * The length of the address in bytes
+     * <p>Possible values are {@link #SHORT_ADDRESS_BYTE_LENGTH} and
+     * {@link #EXTENDED_ADDRESS_BYTE_LENGTH}.
+     */
+    public int size() {
+        return mAddressBytes.length;
+    }
+
+    @NonNull
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder("0x");
+        for (byte addressByte : mAddressBytes) {
+            builder.append(String.format("%02X", addressByte));
+        }
+        return builder.toString();
+    }
+
+    @Override
+    public boolean equals(@Nullable Object obj) {
+        if (obj instanceof UwbAddress) {
+            return Arrays.equals(mAddressBytes, ((UwbAddress) obj).toBytes());
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return Arrays.hashCode(mAddressBytes);
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeInt(mAddressBytes.length);
+        dest.writeByteArray(mAddressBytes);
+    }
+
+    public static final @android.annotation.NonNull Creator<UwbAddress> CREATOR =
+            new Creator<UwbAddress>() {
+                @Override
+                public UwbAddress createFromParcel(Parcel in) {
+                    byte[] address = new byte[in.readInt()];
+                    in.readByteArray(address);
+                    return UwbAddress.fromBytes(address);
+                }
+
+                @Override
+                public UwbAddress[] newArray(int size) {
+                    return new UwbAddress[size];
+                }
+    };
+}
diff --git a/core/java/android/uwb/UwbManager.java b/core/java/android/uwb/UwbManager.java
new file mode 100644
index 0000000..2f1e2de
--- /dev/null
+++ b/core/java/android/uwb/UwbManager.java
@@ -0,0 +1,301 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.SuppressLint;
+import android.os.PersistableBundle;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.Executor;
+
+/**
+ * This class provides a way to perform Ultra Wideband (UWB) operations such as querying the
+ * device's capabilities and determining the distance and angle between the local device and a
+ * remote device.
+ *
+ * <p>To get a {@link UwbManager}, call the <code>Context.getSystemService(UwbManager.class)</code>.
+ *
+ * @hide
+ */
+public final class UwbManager {
+    /**
+     * Interface for receiving UWB adapter state changes
+     */
+    public interface AdapterStateCallback {
+        @Retention(RetentionPolicy.SOURCE)
+        @IntDef(value = {
+                STATE_CHANGED_REASON_SESSION_STARTED,
+                STATE_CHANGED_REASON_ALL_SESSIONS_CLOSED,
+                STATE_CHANGED_REASON_SYSTEM_POLICY,
+                STATE_CHANGED_REASON_SYSTEM_BOOT,
+                STATE_CHANGED_REASON_ERROR_UNKNOWN})
+        @interface StateChangedReason {}
+
+        /**
+         * Indicates that the state change was due to opening of first UWB session
+         */
+        int STATE_CHANGED_REASON_SESSION_STARTED = 0;
+
+        /**
+         * Indicates that the state change was due to closure of all UWB sessions
+         */
+        int STATE_CHANGED_REASON_ALL_SESSIONS_CLOSED = 1;
+
+        /**
+         * Indicates that the state change was due to changes in system policy
+         */
+        int STATE_CHANGED_REASON_SYSTEM_POLICY = 2;
+
+        /**
+         * Indicates that the current state is due to a system boot
+         */
+        int STATE_CHANGED_REASON_SYSTEM_BOOT = 3;
+
+        /**
+         * Indicates that the state change was due to some unknown error
+         */
+        int STATE_CHANGED_REASON_ERROR_UNKNOWN = 4;
+
+        /**
+         * Invoked when underlying UWB adapter's state is changed
+         * <p>Invoked with the adapter's current state after registering an
+         * {@link AdapterStateCallback} using
+         * {@link UwbManager#registerAdapterStateCallback(Executor, AdapterStateCallback)}.
+         *
+         * <p>Possible values for the state to change are
+         * {@link #STATE_CHANGED_REASON_SESSION_STARTED},
+         * {@link #STATE_CHANGED_REASON_ALL_SESSIONS_CLOSED},
+         * {@link #STATE_CHANGED_REASON_SYSTEM_POLICY},
+         * {@link #STATE_CHANGED_REASON_SYSTEM_BOOT},
+         * {@link #STATE_CHANGED_REASON_ERROR_UNKNOWN}.
+         *
+         * @param isEnabled true when UWB adapter is enabled, false when it is disabled
+         * @param reason the reason for the state change
+         */
+        void onStateChanged(boolean isEnabled, @StateChangedReason int reason);
+    }
+
+    /**
+     * Use <code>Context.getSystemService(UwbManager.class)</code> to get an instance.
+     */
+    private UwbManager() {
+        throw new UnsupportedOperationException();
+    }
+    /**
+     * Register an {@link AdapterStateCallback} to listen for UWB adapter state changes
+     * <p>The provided callback will be invoked by the given {@link Executor}.
+     *
+     * <p>When first registering a callback, the callbacks's
+     * {@link AdapterStateCallback#onStateChanged(boolean, int)} is immediately invoked to indicate
+     * the current state of the underlying UWB adapter with the most recent
+     * {@link AdapterStateCallback.StateChangedReason} that caused the change.
+     *
+     * @param executor an {@link Executor} to execute given callback
+     * @param callback user implementation of the {@link AdapterStateCallback}
+     */
+    public void registerAdapterStateCallback(Executor executor, AdapterStateCallback callback) {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Unregister the specified {@link AdapterStateCallback}
+     * <p>The same {@link AdapterStateCallback} object used when calling
+     * {@link #registerAdapterStateCallback(Executor, AdapterStateCallback)} must be used.
+     *
+     * <p>Callbacks are automatically unregistered when application process goes away
+     *
+     * @param callback user implementation of the {@link AdapterStateCallback}
+     */
+    public void unregisterAdapterStateCallback(AdapterStateCallback callback) {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Get a {@link PersistableBundle} with the supported UWB protocols and parameters.
+     * <p>The {@link PersistableBundle} should be parsed using a support library
+     *
+     * <p>Android reserves the '^android.*' namespace</p>
+     *
+     * @return {@link PersistableBundle} of the device's supported UWB protocols and parameters
+     */
+    @NonNull
+    public PersistableBundle getSpecificationInfo() {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Check if ranging is supported, regardless of ranging method
+     *
+     * @return true if ranging is supported
+     */
+    public boolean isRangingSupported() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(value = {
+            ANGLE_OF_ARRIVAL_SUPPORT_TYPE_NONE,
+            ANGLE_OF_ARRIVAL_SUPPORT_TYPE_2D,
+            ANGLE_OF_ARRIVAL_SUPPORT_TYPE_3D_HEMISPHERICAL,
+            ANGLE_OF_ARRIVAL_SUPPORT_TYPE_3D_SPHERICAL})
+    public @interface AngleOfArrivalSupportType {}
+
+    /**
+     * Indicate absence of support for angle of arrival measurement
+     */
+    public static final int ANGLE_OF_ARRIVAL_SUPPORT_TYPE_NONE = 1;
+
+    /**
+     * Indicate support for planar angle of arrival measurement, due to antenna
+     * limitation. Typically requires at least two antennas.
+     */
+    public static final int ANGLE_OF_ARRIVAL_SUPPORT_TYPE_2D = 2;
+
+    /**
+     * Indicate support for three dimensional angle of arrival measurement.
+     * Typically requires at least three antennas. However, due to antenna
+     * arrangement, a platform may only support hemi-spherical azimuth angles
+     * ranging from -pi/2 to pi/2
+     */
+    public static final int ANGLE_OF_ARRIVAL_SUPPORT_TYPE_3D_HEMISPHERICAL = 3;
+
+    /**
+     * Indicate support for three dimensional angle of arrival measurement.
+     * Typically requires at least three antennas. This mode supports full
+     * azimuth angles ranging from -pi to pi.
+     */
+    public static final int ANGLE_OF_ARRIVAL_SUPPORT_TYPE_3D_SPHERICAL = 4;
+
+    /**
+     * Gets the {@link AngleOfArrivalSupportType} supported on this platform
+     * <p>Possible return values are
+     * {@link #ANGLE_OF_ARRIVAL_SUPPORT_TYPE_NONE},
+     * {@link #ANGLE_OF_ARRIVAL_SUPPORT_TYPE_2D},
+     * {@link #ANGLE_OF_ARRIVAL_SUPPORT_TYPE_3D_HEMISPHERICAL},
+     * {@link #ANGLE_OF_ARRIVAL_SUPPORT_TYPE_3D_SPHERICAL}.
+     *
+     * @return angle of arrival type supported
+     */
+    @AngleOfArrivalSupportType
+    public int getAngleOfArrivalSupport() {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Get a {@link List} of supported channel numbers based on the device's current location
+     * <p>The returned values are ordered by the system's desired ordered of use, with the first
+     * entry being the most preferred.
+     *
+     * <p>Channel numbers are defined based on the IEEE 802.15.4z standard for UWB.
+     *
+     * @return {@link List} of supported channel numbers ordered by preference
+     */
+    @NonNull
+    public List<Integer> getSupportedChannelNumbers() {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Get a {@link List} of supported preamble code indices
+     * <p> Preamble code indices are defined based on the IEEE 802.15.4z standard for UWB.
+     *
+     * @return {@link List} of supported preamble code indices
+     */
+    @NonNull
+    public Set<Integer> getSupportedPreambleCodeIndices() {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Get the timestamp resolution for events in nanoseconds
+     * <p>This value defines the maximum error of all timestamps for events reported to
+     * {@link RangingSession.Callback}.
+     *
+     * @return the timestamp resolution in nanoseconds
+     */
+    @SuppressLint("MethodNameUnits")
+    public long elapsedRealtimeResolutionNanos() {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Get the number of simultaneous sessions allowed in the system
+     *
+     * @return the maximum allowed number of simultaneously open {@link RangingSession} instances.
+     */
+    public int getMaxSimultaneousSessions() {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Get the maximum number of remote devices in a {@link RangingSession} when the local device
+     * is the initiator.
+     *
+     * @return the maximum number of remote devices per {@link RangingSession}
+     */
+    public int getMaxRemoteDevicesPerInitiatorSession() {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Get the maximum number of remote devices in a {@link RangingSession} when the local device
+     * is a responder.
+     *
+     * @return the maximum number of remote devices per {@link RangingSession}
+     */
+    public int getMaxRemoteDevicesPerResponderSession() {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Open a {@link RangingSession} with the given parameters
+     * <p>This function is asynchronous and will return before ranging begins. The
+     * {@link RangingSession.Callback#onOpenSuccess(RangingSession, PersistableBundle)} function is
+     * called with a {@link RangingSession} object used to control ranging when the session is
+     * successfully opened.
+     *
+     * <p>If a session cannot be opened, then {@link RangingSession.Callback#onClosed(int)} will be
+     * invoked with the appropriate {@link RangingSession.Callback.CloseReason}.
+     *
+     * <p>An open {@link RangingSession} will be automatically closed if client application process
+     * dies.
+     *
+     * <p>A UWB support library must be used in order to construct the {@code parameter}
+     * {@link PersistableBundle}.
+     *
+     * @param parameters the parameters that define the ranging session
+     * @param executor {@link Executor} to run callbacks
+     * @param callbacks {@link RangingSession.Callback} to associate with the
+     *                  {@link RangingSession} that is being opened.
+     *
+     * @return an {@link AutoCloseable} that is able to be used to close or cancel the opening of a
+     *         {@link RangingSession} that has been requested through {@link #openRangingSession}
+     *         but has not yet been made available by
+     *         {@link RangingSession.Callback#onOpenSuccess}.
+     */
+    @NonNull
+    public AutoCloseable openRangingSession(@NonNull PersistableBundle parameters,
+            @NonNull Executor executor,
+            @NonNull RangingSession.Callback callbacks) {
+        throw new UnsupportedOperationException();
+    }
+}
diff --git a/core/java/android/view/AccessibilityIterators.java b/core/java/android/view/AccessibilityIterators.java
index bee04f4..c41b3cf 100644
--- a/core/java/android/view/AccessibilityIterators.java
+++ b/core/java/android/view/AccessibilityIterators.java
@@ -18,6 +18,7 @@
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.res.Configuration;
+import android.os.Build;
 
 import java.text.BreakIterator;
 import java.util.Locale;
@@ -46,11 +47,11 @@
      */
     public static abstract class AbstractTextSegmentIterator implements TextSegmentIterator {
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public AbstractTextSegmentIterator() {
         }
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         protected String mText;
 
         private final int[] mSegment = new int[2];
diff --git a/core/java/android/view/Choreographer.java b/core/java/android/view/Choreographer.java
index 987edf7..148db32 100644
--- a/core/java/android/view/Choreographer.java
+++ b/core/java/android/view/Choreographer.java
@@ -827,7 +827,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void scheduleVsyncLocked() {
         mDisplayEventReceiver.scheduleVsync();
     }
@@ -964,7 +964,7 @@
         public Object action; // Runnable or FrameCallback
         public Object token;
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public void run(long frameTimeNanos) {
             if (token == FRAME_CALLBACK_TOKEN) {
                 ((FrameCallback)action).doFrame(frameTimeNanos);
diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java
index 0cc469a..b5ec12f 100644
--- a/core/java/android/view/Display.java
+++ b/core/java/android/view/Display.java
@@ -288,7 +288,7 @@
      * Display type: Physical display connected through an external port.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @TestApi
     public static final int TYPE_EXTERNAL = 2;
 
@@ -1389,7 +1389,7 @@
         /**
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public Mode(int modeId, int width, int height, float refreshRate) {
             mModeId = modeId;
             mWidth = width;
@@ -1572,7 +1572,7 @@
         /**
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public HdrCapabilities(int[] supportedHdrTypes, float maxLuminance,
                 float maxAverageLuminance, float minLuminance) {
             mSupportedHdrTypes = supportedHdrTypes;
diff --git a/core/java/android/view/DisplayEventReceiver.java b/core/java/android/view/DisplayEventReceiver.java
index eaf297c..437a44b 100644
--- a/core/java/android/view/DisplayEventReceiver.java
+++ b/core/java/android/view/DisplayEventReceiver.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Looper;
 import android.os.MessageQueue;
 import android.util.Log;
@@ -205,7 +206,7 @@
 
     // Called from native code.
     @SuppressWarnings("unused")
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void dispatchHotplug(long timestampNanos, long physicalDisplayId, boolean connected) {
         onHotplug(timestampNanos, physicalDisplayId, connected);
     }
diff --git a/core/java/android/view/DragEvent.java b/core/java/android/view/DragEvent.java
index 35af0f2..3751161 100644
--- a/core/java/android/view/DragEvent.java
+++ b/core/java/android/view/DragEvent.java
@@ -19,6 +19,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.ClipData;
 import android.content.ClipDescription;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -130,9 +131,9 @@
 
     int mAction;
     float mX, mY;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     ClipDescription mClipDescription;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     ClipData mClipData;
     IDragAndDropPermissions mDragAndDropPermissions;
 
@@ -316,7 +317,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static DragEvent obtain(DragEvent source) {
         return obtain(source.mAction, source.mX, source.mY, source.mLocalState,
                 source.mClipDescription, source.mClipData, source.mDragAndDropPermissions,
diff --git a/core/java/android/view/FrameMetrics.java b/core/java/android/view/FrameMetrics.java
index 054dff7..f8500fa 100644
--- a/core/java/android/view/FrameMetrics.java
+++ b/core/java/android/view/FrameMetrics.java
@@ -18,6 +18,7 @@
 
 import android.annotation.IntDef;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -250,7 +251,7 @@
         Index.INTENDED_VSYNC, Index.FRAME_COMPLETED,
     };
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     /* package */ final long[] mTimingData;
 
     /**
diff --git a/core/java/android/view/IRecentsAnimationRunner.aidl b/core/java/android/view/IRecentsAnimationRunner.aidl
index 925786f..f054b86 100644
--- a/core/java/android/view/IRecentsAnimationRunner.aidl
+++ b/core/java/android/view/IRecentsAnimationRunner.aidl
@@ -42,7 +42,7 @@
      *
      * @see {@link RecentsAnimationController#cleanupScreenshot}
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void onAnimationCanceled(in @nullable ActivityManager.TaskSnapshot taskSnapshot) = 1;
 
     /**
@@ -52,7 +52,7 @@
      * @param minimizedHomeBounds Specifies the bounds of the minimized home app, will be
      *                            {@code null} if the device is not currently in split screen
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void onAnimationStart(in IRecentsAnimationController controller,
             in RemoteAnimationTarget[] apps, in RemoteAnimationTarget[] wallpapers,
             in Rect homeContentInsets, in Rect minimizedHomeBounds) = 2;
diff --git a/core/java/android/view/IRemoteAnimationRunner.aidl b/core/java/android/view/IRemoteAnimationRunner.aidl
index 7b35aa2..423e23d 100644
--- a/core/java/android/view/IRemoteAnimationRunner.aidl
+++ b/core/java/android/view/IRemoteAnimationRunner.aidl
@@ -33,7 +33,7 @@
      * @param apps The list of apps to animate.
      * @param finishedCallback The callback to invoke when the animation is finished.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void onAnimationStart(in RemoteAnimationTarget[] apps, in RemoteAnimationTarget[] wallpapers,
             in IRemoteAnimationFinishedCallback finishedCallback);
 
@@ -41,6 +41,6 @@
      * Called when the animation was cancelled. From this point on, any updates onto the leashes
      * won't have any effect anymore.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void onAnimationCancelled();
 }
diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl
index 58597cf..4aeb7bb 100644
--- a/core/java/android/view/IWindowManager.aidl
+++ b/core/java/android/view/IWindowManager.aidl
@@ -187,7 +187,7 @@
       * Used by system ui to report that recents has shown itself.
       * @deprecated to be removed once prebuilts are updated
       */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void endProlongedAnimations();
 
     void startFreezingScreen(int exitAnim, int enterAnim);
@@ -201,7 +201,7 @@
     void exitKeyguardSecurely(IOnKeyguardExitResult callback);
     @UnsupportedAppUsage
     boolean isKeyguardLocked();
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean isKeyguardSecure(int userId);
     void dismissKeyguard(IKeyguardDismissCallback callback, CharSequence message);
 
@@ -213,11 +213,11 @@
     // These can only be called with the SET_ANIMATON_SCALE permission.
     @UnsupportedAppUsage
     float getAnimationScale(int which);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     float[] getAnimationScales();
     @UnsupportedAppUsage
     void setAnimationScale(int which, float scale);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void setAnimationScales(in float[] scales);
 
     float getCurrentAnimatorScale();
@@ -238,7 +238,7 @@
     // should be enabled.  The 'enabled' value is null or blank for
     // the system default (differs per build variant) or any valid
     // boolean string as parsed by SystemProperties.getBoolean().
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void setStrictModeVisualIndicatorPreference(String enabled);
 
     /**
@@ -429,7 +429,7 @@
     /**
      * Lock the device immediately with the specified options (can be null).
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void lockNow(in Bundle options);
 
     /**
diff --git a/core/java/android/view/IWindowSession.aidl b/core/java/android/view/IWindowSession.aidl
index 0410c90..ed80fca 100644
--- a/core/java/android/view/IWindowSession.aidl
+++ b/core/java/android/view/IWindowSession.aidl
@@ -191,7 +191,7 @@
      * @param data Data transferred by drag and drop
      * @return Token of drag operation which will be passed to cancelDragAndDrop.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     IBinder performDrag(IWindow window, int flags, in SurfaceControl surface, int touchSource,
             float touchX, float touchY, float thumbCenterX, float thumbCenterY, in ClipData data);
 
diff --git a/core/java/android/view/InputChannel.java b/core/java/android/view/InputChannel.java
index 5a64b13..d7a3cb1 100644
--- a/core/java/android/view/InputChannel.java
+++ b/core/java/android/view/InputChannel.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.IBinder;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -49,7 +50,7 @@
     };
 
     @SuppressWarnings("unused")
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mPtr; // used by native code
 
     private static native InputChannel[] nativeOpenInputChannelPair(String name);
diff --git a/core/java/android/view/InputDevice.java b/core/java/android/view/InputDevice.java
index 58e5b2d..22ac4dc 100644
--- a/core/java/android/view/InputDevice.java
+++ b/core/java/android/view/InputDevice.java
@@ -424,7 +424,7 @@
     };
 
     // Called by native code.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private InputDevice(int id, int generation, int controllerNumber, String name, int vendorId,
             int productId, String descriptor, boolean isExternal, int sources, int keyboardType,
             KeyCharacterMap keyCharacterMap, boolean hasVibrator, boolean hasMicrophone,
@@ -757,7 +757,7 @@
     }
 
     // Called from native code.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void addMotionRange(int axis, int source,
             float min, float max, float flat, float fuzz, float resolution) {
         mMotionRanges.add(new MotionRange(axis, source, min, max, flat, fuzz, resolution));
diff --git a/core/java/android/view/InputEventReceiver.java b/core/java/android/view/InputEventReceiver.java
index 25a4108..972318c 100644
--- a/core/java/android/view/InputEventReceiver.java
+++ b/core/java/android/view/InputEventReceiver.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.IBinder;
 import android.os.Looper;
 import android.os.MessageQueue;
@@ -122,7 +123,7 @@
      *
      * @param event The input event that was received.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onInputEvent(InputEvent event) {
         finishInputEvent(event, false);
     }
@@ -214,7 +215,7 @@
 
     // Called from native code.
     @SuppressWarnings("unused")
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void dispatchInputEvent(int seq, InputEvent event) {
         mSeqMap.put(event.getSequenceNumber(), seq);
         onInputEvent(event);
diff --git a/core/java/android/view/InputEventSender.java b/core/java/android/view/InputEventSender.java
index 86a309e..40eb438 100644
--- a/core/java/android/view/InputEventSender.java
+++ b/core/java/android/view/InputEventSender.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Looper;
 import android.os.MessageQueue;
 import android.util.Log;
@@ -138,7 +139,7 @@
 
     // Called from native code.
     @SuppressWarnings("unused")
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void dispatchInputEventFinished(int seq, boolean handled) {
         onInputEventFinished(seq, handled);
     }
diff --git a/core/java/android/view/InputFilter.java b/core/java/android/view/InputFilter.java
index 36d5586..b18c5cd 100644
--- a/core/java/android/view/InputFilter.java
+++ b/core/java/android/view/InputFilter.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
@@ -118,7 +119,7 @@
      *
      * @param looper The looper to run callbacks on.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public InputFilter(Looper looper) {
         mH = new H(looper);
     }
@@ -188,7 +189,7 @@
      * @param event The input event that was received.
      * @param policyFlags The input event policy flags.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onInputEvent(InputEvent event, int policyFlags) {
         sendInputEvent(event, policyFlags);
     }
diff --git a/core/java/android/view/InputQueue.java b/core/java/android/view/InputQueue.java
index 74ce6ac..7accb66 100644
--- a/core/java/android/view/InputQueue.java
+++ b/core/java/android/view/InputQueue.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Looper;
 import android.os.MessageQueue;
 import android.util.LongSparseArray;
@@ -101,7 +102,7 @@
         mActiveEventArray.put(id, event);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void finishInputEvent(long id, boolean handled) {
         int index = mActiveEventArray.indexOfKey(id);
         if (index >= 0) {
diff --git a/core/java/android/view/InsetsController.java b/core/java/android/view/InsetsController.java
index c383bc7..985829f 100644
--- a/core/java/android/view/InsetsController.java
+++ b/core/java/android/view/InsetsController.java
@@ -1134,15 +1134,14 @@
         if (invokeCallback) {
             control.cancel();
         }
+        boolean stateChanged = false;
         for (int i = mRunningAnimations.size() - 1; i >= 0; i--) {
             RunningAnimation runningAnimation = mRunningAnimations.get(i);
             if (runningAnimation.runner == control) {
                 mRunningAnimations.remove(i);
                 ArraySet<Integer> types = toInternalType(control.getTypes());
                 for (int j = types.size() - 1; j >= 0; j--) {
-                    if (getSourceConsumer(types.valueAt(j)).notifyAnimationFinished()) {
-                        mHost.notifyInsetsChanged();
-                    }
+                    stateChanged |= getSourceConsumer(types.valueAt(j)).notifyAnimationFinished();
                 }
                 if (invokeCallback && runningAnimation.startDispatched) {
                     dispatchAnimationEnd(runningAnimation.runner.getAnimation());
@@ -1150,6 +1149,10 @@
                 break;
             }
         }
+        if (stateChanged) {
+            mHost.notifyInsetsChanged();
+            updateRequestedState();
+        }
     }
 
     private void applyLocalVisibilityOverride() {
diff --git a/core/java/android/view/KeyCharacterMap.java b/core/java/android/view/KeyCharacterMap.java
index 90e0f3f..02a9788 100644
--- a/core/java/android/view/KeyCharacterMap.java
+++ b/core/java/android/view/KeyCharacterMap.java
@@ -18,6 +18,7 @@
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.hardware.input.InputManager;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.text.method.MetaKeyKeyListener;
@@ -308,7 +309,7 @@
     }
 
     // Called from native
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private KeyCharacterMap(long ptr) {
         mPtr = ptr;
     }
@@ -750,9 +751,9 @@
 
         private FallbackAction next;
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public int keyCode;
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public int metaState;
 
         private FallbackAction() {
diff --git a/core/java/android/view/KeyEvent.java b/core/java/android/view/KeyEvent.java
index e249c77..99d6c34 100644
--- a/core/java/android/view/KeyEvent.java
+++ b/core/java/android/view/KeyEvent.java
@@ -849,7 +849,7 @@
 
     // Symbolic names of all metakeys in bit order from least significant to most significant.
     // Accordingly there are exactly 32 values in this table.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final String[] META_SYMBOLIC_NAMES = new String[] {
         "META_SHIFT_ON",
         "META_ALT_ON",
@@ -920,7 +920,7 @@
      * Reserved for use by {@link MetaKeyKeyListener} for a published constant in its API.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int META_CAP_LOCKED = 0x100;
 
     /**
@@ -928,7 +928,7 @@
      * Reserved for use by {@link MetaKeyKeyListener} for a published constant in its API.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int META_ALT_LOCKED = 0x200;
 
     /**
@@ -936,7 +936,7 @@
      * Reserved for use by {@link MetaKeyKeyListener} for a published constant in its API.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int META_SYM_LOCKED = 0x400;
 
     /**
@@ -945,7 +945,7 @@
      * in its API that is currently being retained for legacy reasons.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int META_SELECTING = 0x800;
 
     /**
@@ -1266,29 +1266,29 @@
     private KeyEvent mNext;
 
     private int mId;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mDeviceId;
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
     private int mSource;
     private int mDisplayId;
     private @Nullable byte[] mHmac;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mMetaState;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mAction;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mKeyCode;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mScanCode;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mRepeatCount;
     @UnsupportedAppUsage
     private int mFlags;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mDownTime;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mEventTime;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private String mCharacters;
 
     public interface Callback {
@@ -1651,7 +1651,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static KeyEvent obtain(long downTime, long eventTime, int action,
             int code, int repeat, int metaState,
             int deviceId, int scancode, int flags, int source, String characters) {
@@ -2105,7 +2105,7 @@
     }
 
     // Mask of all modifier key meta states.  Specifically excludes locked keys like caps lock.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final int META_MODIFIER_MASK =
             META_SHIFT_ON | META_SHIFT_LEFT_ON | META_SHIFT_RIGHT_ON
             | META_ALT_ON | META_ALT_LEFT_ON | META_ALT_RIGHT_ON
@@ -2114,23 +2114,23 @@
             | META_SYM_ON | META_FUNCTION_ON;
 
     // Mask of all lock key meta states.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final int META_LOCK_MASK =
             META_CAPS_LOCK_ON | META_NUM_LOCK_ON | META_SCROLL_LOCK_ON;
 
     // Mask of all valid meta states.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final int META_ALL_MASK = META_MODIFIER_MASK | META_LOCK_MASK;
 
     // Mask of all synthetic meta states that are reserved for API compatibility with
     // historical uses in MetaKeyKeyListener.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final int META_SYNTHETIC_MASK =
             META_CAP_LOCKED | META_ALT_LOCKED | META_SYM_LOCKED | META_SELECTING;
 
     // Mask of all meta states that are not valid use in specifying a modifier key.
     // These bits are known to be used for purposes other than specifying modifiers.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final int META_INVALID_MODIFIER_MASK =
             META_LOCK_MASK | META_SYNTHETIC_MASK;
 
diff --git a/core/java/android/view/LayoutInflater.java b/core/java/android/view/LayoutInflater.java
index 1afe11e..60176ec 100644
--- a/core/java/android/view/LayoutInflater.java
+++ b/core/java/android/view/LayoutInflater.java
@@ -954,7 +954,7 @@
      * argument and should be used for everything except {@code &gt;include>}
      * tag parsing.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private View createViewFromTag(View parent, String name, Context context, AttributeSet attrs) {
         return createViewFromTag(parent, name, context, attrs, false);
     }
@@ -974,7 +974,7 @@
      *                        attribute (if set) for the view being inflated,
      *                        {@code false} otherwise
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     View createViewFromTag(View parent, String name, Context context, AttributeSet attrs,
             boolean ignoreThemeAttr) {
         if (name.equals("view")) {
diff --git a/core/java/android/view/MotionEvent.java b/core/java/android/view/MotionEvent.java
index 51b0c6b..92373fa 100644
--- a/core/java/android/view/MotionEvent.java
+++ b/core/java/android/view/MotionEvent.java
@@ -1483,7 +1483,7 @@
     }
 
     // Private value for history pos that obtains the current sample.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final int HISTORY_CURRENT = -0x80000000;
 
     // This is essentially the same as native AMOTION_EVENT_INVALID_CURSOR_POSITION as they're all
diff --git a/core/java/android/view/NotificationHeaderView.java b/core/java/android/view/NotificationHeaderView.java
index 0c50cb7..4ed7571 100644
--- a/core/java/android/view/NotificationHeaderView.java
+++ b/core/java/android/view/NotificationHeaderView.java
@@ -26,6 +26,7 @@
 import android.graphics.Outline;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.util.AttributeSet;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
@@ -83,7 +84,7 @@
         this(context, null);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public NotificationHeaderView(Context context, @Nullable AttributeSet attrs) {
         this(context, attrs, 0);
     }
diff --git a/core/java/android/view/PointerIcon.java b/core/java/android/view/PointerIcon.java
index 18d0d7b..e021e3e 100644
--- a/core/java/android/view/PointerIcon.java
+++ b/core/java/android/view/PointerIcon.java
@@ -152,17 +152,17 @@
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
     private final int mType;
     private int mSystemIconResourceId;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private Bitmap mBitmap;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private float mHotSpotX;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private float mHotSpotY;
     // The bitmaps for the additional frame of animated pointer icon. Note that the first frame
     // will be stored in mBitmap.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private Bitmap mBitmapFrames[];
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mDurationPerFrame;
 
     /**
diff --git a/core/java/android/view/RemoteAnimationAdapter.java b/core/java/android/view/RemoteAnimationAdapter.java
index 166d3ba..a78036f 100644
--- a/core/java/android/view/RemoteAnimationAdapter.java
+++ b/core/java/android/view/RemoteAnimationAdapter.java
@@ -18,6 +18,7 @@
 
 import android.app.ActivityOptions;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -65,7 +66,7 @@
      * @param statusBarTransitionDelay The desired delay for all visual animations in the
      *        status bar caused by this app animation in millis.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public RemoteAnimationAdapter(IRemoteAnimationRunner runner, long duration,
             long statusBarTransitionDelay, boolean changeNeedsSnapshot) {
         mRunner = runner;
diff --git a/core/java/android/view/RemoteAnimationTarget.java b/core/java/android/view/RemoteAnimationTarget.java
index 3c22ed8..641b24d 100644
--- a/core/java/android/view/RemoteAnimationTarget.java
+++ b/core/java/android/view/RemoteAnimationTarget.java
@@ -36,6 +36,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.graphics.Point;
 import android.graphics.Rect;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.util.proto.ProtoOutputStream;
@@ -96,7 +97,7 @@
      * The {@link SurfaceControl} for the starting state of a target if this transition is
      * MODE_CHANGING, {@code null)} otherwise. This is relative to the app window.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final SurfaceControl startLeash;
 
     /**
@@ -169,7 +170,7 @@
      * should be equivalent to the size of the starting thumbnail. Note that sourceContainerBounds
      * is the end bounds of a change transition.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final Rect startBounds;
 
     /**
diff --git a/core/java/android/view/Surface.java b/core/java/android/view/Surface.java
index b1d5520..4139a3a 100644
--- a/core/java/android/view/Surface.java
+++ b/core/java/android/view/Surface.java
@@ -32,6 +32,7 @@
 import android.graphics.Rect;
 import android.graphics.RenderNode;
 import android.graphics.SurfaceTexture;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.util.Log;
@@ -70,7 +71,7 @@
             throws OutOfResourcesException;
     private static native void nativeUnlockCanvasAndPost(long nativeObject, Canvas canvas);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static native void nativeRelease(long nativeObject);
     private static native boolean nativeIsValid(long nativeObject);
     private static native boolean nativeIsConsumerRunningBehind(long nativeObject);
@@ -123,7 +124,7 @@
     private String mName;
     @UnsupportedAppUsage
     long mNativeObject; // package scope only for SurfaceControl access
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mLockedObject;
     private int mGenerationId; // incremented each time mNativeObject changes
     private final Canvas mCanvas = new CompatibleCanvas();
@@ -260,7 +261,7 @@
     }
 
     /* called from android_view_Surface_createFromIGraphicBufferProducer() */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private Surface(long nativeObject) {
         synchronized (mLock) {
             setNativeObjectLocked(nativeObject);
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index 6826253..cbaf9db 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -314,7 +314,7 @@
      * Surface creation flag: Surface is created hidden
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int HIDDEN = 0x00000004;
 
     /**
@@ -2679,7 +2679,7 @@
          * @return Itself.
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public Transaction setCornerRadius(SurfaceControl sc, float cornerRadius) {
             checkPreconditions(sc);
             nativeSetCornerRadius(mNativeObject, sc.mNativeObject, cornerRadius);
diff --git a/core/java/android/view/SurfaceSession.java b/core/java/android/view/SurfaceSession.java
index 0f851c1..cbc0479 100644
--- a/core/java/android/view/SurfaceSession.java
+++ b/core/java/android/view/SurfaceSession.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 /**
  * An instance of this class represents a connection to the surface
@@ -26,7 +27,7 @@
  */
 public final class SurfaceSession {
     // Note: This field is accessed by native code.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mNativeClient; // SurfaceComposerClient*
 
     private static native long nativeCreate();
diff --git a/core/java/android/view/TextureView.java b/core/java/android/view/TextureView.java
index 277b872..8ed0033 100644
--- a/core/java/android/view/TextureView.java
+++ b/core/java/android/view/TextureView.java
@@ -28,6 +28,7 @@
 import android.graphics.Rect;
 import android.graphics.SurfaceTexture;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.util.AttributeSet;
 import android.util.Log;
 
@@ -116,7 +117,7 @@
     private SurfaceTextureListener mListener;
     private boolean mHadSurface;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private boolean mOpaque = true;
 
     private final Matrix mMatrix = new Matrix();
@@ -124,7 +125,7 @@
 
     private final Object[] mLock = new Object[0];
     private boolean mUpdateLayer;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private boolean mUpdateSurface;
 
     private Canvas mCanvas;
@@ -132,7 +133,7 @@
 
     private final Object[] mNativeWindowLock = new Object[0];
     // Set by native code, do not write!
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mNativeWindow;
 
     /**
@@ -226,7 +227,7 @@
 
     /** @hide */
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected void onDetachedFromWindowInternal() {
         destroyHardwareLayer();
         releaseSurfaceTexture();
@@ -243,7 +244,7 @@
         destroyHardwareLayer();
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void destroyHardwareLayer() {
         if (mLayer != null) {
             mLayer.detachSurfaceTexture();
@@ -852,9 +853,9 @@
         void onSurfaceTextureUpdated(@NonNull SurfaceTexture surface);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private native void nCreateNativeWindow(SurfaceTexture surface);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private native void nDestroyNativeWindow();
 
     private static native boolean nLockCanvas(long nativeWindow, Canvas canvas, Rect dirty);
diff --git a/core/java/android/view/VelocityTracker.java b/core/java/android/view/VelocityTracker.java
index a56633e..f932e89 100644
--- a/core/java/android/view/VelocityTracker.java
+++ b/core/java/android/view/VelocityTracker.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.util.Pools.SynchronizedPool;
 
 /**
@@ -237,25 +238,25 @@
         /**
          * Polynomial coefficients describing motion in X.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public final float[] xCoeff = new float[MAX_DEGREE + 1];
 
         /**
          * Polynomial coefficients describing motion in Y.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public final float[] yCoeff = new float[MAX_DEGREE + 1];
 
         /**
          * Polynomial degree, or zero if only position information is available.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public int degree;
 
         /**
          * Confidence (coefficient of determination), between 0 (no fit) and 1 (perfect fit).
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public float confidence;
 
         /**
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 154c287..0aaedf3 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -809,7 +809,7 @@
 @UiThread
 public class View implements Drawable.Callback, KeyEvent.Callback,
         AccessibilityEventSource {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final boolean DBG = false;
 
     /** @hide */
@@ -2396,7 +2396,7 @@
     private int mAutofillViewId = NO_ID;
 
     // ID for accessibility purposes. This ID must be unique for every window
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mAccessibilityViewId = NO_ID;
 
     private int mAccessibilityCursorPosition = ACCESSIBILITY_CURSOR_POSITION_UNDEFINED;
@@ -2408,7 +2408,7 @@
      * @see #setTag(Object)
      * @see #getTag()
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected Object mTag = null;
 
     /*
@@ -3863,7 +3863,7 @@
      * Flag to make the status bar not expandable.  Unless you also
      * set {@link #STATUS_BAR_DISABLE_NOTIFICATION_ICONS}, new notifications will continue to show.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int STATUS_BAR_DISABLE_EXPAND = 0x00010000;
 
     /**
@@ -4604,7 +4604,7 @@
     private LongSparseLongArray mMeasureCache;
 
     @ViewDebug.ExportedProperty(deepExport = true, prefix = "bg_")
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private Drawable mBackground;
     private TintInfo mBackgroundTint;
 
@@ -4722,7 +4722,7 @@
          * This field should be made private, so it is hidden from the SDK.
          * {@hide}
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         protected OnCreateContextMenuListener mOnCreateContextMenuListener;
 
         @UnsupportedAppUsage
@@ -4731,13 +4731,13 @@
         @UnsupportedAppUsage
         private OnTouchListener mOnTouchListener;
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private OnHoverListener mOnHoverListener;
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private OnGenericMotionListener mOnGenericMotionListener;
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private OnDragListener mOnDragListener;
 
         private OnSystemUiVisibilityChangeListener mOnSystemUiVisibilityChangeListener;
@@ -5165,7 +5165,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean mCachingFailed;
     @UnsupportedAppUsage
     private Bitmap mDrawingCache;
@@ -6900,7 +6900,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private ScrollabilityCache getScrollCache() {
         initScrollCache();
         return mScrollCache;
@@ -10379,7 +10379,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected boolean isVisibleToUser(Rect boundInView) {
         if (mAttachInfo != null) {
             // Attached to invisible window means this view is not visible.
@@ -10767,7 +10767,7 @@
      * @hide pending API council approval
      */
     @CallSuper
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected void onFocusLost() {
         resetPressedState();
     }
@@ -11639,7 +11639,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean fitsSystemWindows() {
         return getFitsSystemWindows();
     }
@@ -13685,7 +13685,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void notifyViewAccessibilityStateChangedIfNeeded(int changeType) {
         if (!AccessibilityManager.getInstance(mContext).isEnabled() || mAttachInfo == null) {
             return;
@@ -14094,7 +14094,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public TextSegmentIterator getIteratorForGranularity(int granularity) {
         switch (granularity) {
             case AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER: {
@@ -14561,7 +14561,7 @@
      * @return True if the event was handled by the view, false otherwise.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final boolean dispatchPointerEvent(MotionEvent event) {
         if (event.isTouchEvent()) {
             return dispatchTouchEvent(event);
@@ -15863,7 +15863,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isInScrollingContainer() {
         ViewParent p = getParent();
         while (p != null && p instanceof ViewGroup) {
@@ -16587,7 +16587,7 @@
      * @return The inverse of the current matrix of this view.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final Matrix getInverseMatrix() {
         ensureTransformationInfo();
         if (mTransformationInfo.mInverseMatrix == null) {
@@ -18629,7 +18629,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected void invalidateParentIfNeeded() {
         if (isHardwareAccelerated() && mParent instanceof View) {
             ((View) mParent).invalidate(true);
@@ -18736,7 +18736,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ThreadedRenderer getThreadedRenderer() {
         return mAttachInfo != null ? mAttachInfo.mThreadedRenderer : null;
     }
@@ -19873,7 +19873,7 @@
      * @see #computeHorizontalScrollOffset()
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected void onDrawHorizontalScrollBar(Canvas canvas, Drawable scrollBar,
             int l, int t, int r, int b) {
         scrollBar.setBounds(l, t, r, b);
@@ -20056,7 +20056,7 @@
     /**
      * Return true if the application tag in the AndroidManifest has set "supportRtl" to true
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private boolean hasRtlSupport() {
         return mContext.getApplicationInfo().hasRtlSupport();
     }
@@ -20214,7 +20214,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void resolvePadding() {
         final int resolvedLayoutDirection = getLayoutDirection();
 
@@ -20312,7 +20312,7 @@
      * @hide
      */
     @CallSuper
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected void onDetachedFromWindowInternal() {
         mPrivateFlags &= ~PFLAG_CANCEL_NEXT_UP_EVENT;
         mPrivateFlags3 &= ~PFLAG3_IS_LAID_OUT;
@@ -21029,7 +21029,7 @@
      * @hide
      */
     @CallSuper
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected void destroyHardwareResources() {
         if (mOverlay != null) {
             mOverlay.getOverlayView().destroyHardwareResources();
@@ -21165,7 +21165,7 @@
      * @hide
      */
     @NonNull
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public RenderNode updateDisplayListIfDirty() {
         final RenderNode renderNode = mRenderNode;
         if (!canHaveDisplayList()) {
@@ -21236,7 +21236,7 @@
         return renderNode;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void resetDisplayList() {
         mRenderNode.discardDisplayList();
         if (mBackgroundRenderNode != null) {
@@ -24691,7 +24691,7 @@
      * @return false if the transformation could not be applied
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean toGlobalMotionEvent(MotionEvent ev) {
         final AttachInfo info = mAttachInfo;
         if (info == null) {
@@ -24713,7 +24713,7 @@
      * @return false if the transformation could not be applied
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean toLocalMotionEvent(MotionEvent ev) {
         final AttachInfo info = mAttachInfo;
         if (info == null) {
@@ -26135,7 +26135,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setDisabledSystemUiVisibility(int flags) {
         if (mAttachInfo != null) {
             if (mAttachInfo.mDisabledSystemUiVisibility != flags) {
@@ -26176,7 +26176,7 @@
      * </div>
      */
     public static class DragShadowBuilder {
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private final WeakReference<View> mView;
 
         /**
@@ -26640,7 +26640,7 @@
      * Drawable that are not transparent.
      * {@hide}
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void applyDrawableToTransparentRegion(Drawable dr, Region region) {
         if (DBG) {
             Log.i("View", "Getting transparent region for: " + this);
@@ -27208,7 +27208,7 @@
             @EnumEntry(value = TEXT_DIRECTION_FIRST_STRONG_LTR, name = "firstStrongLtr"),
             @EnumEntry(value = TEXT_DIRECTION_FIRST_STRONG_RTL, name = "firstStrongRtl"),
     })
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getRawTextDirection() {
         return (mPrivateFlags2 & PFLAG2_TEXT_DIRECTION_MASK) >> PFLAG2_TEXT_DIRECTION_MASK_SHIFT;
     }
@@ -27465,7 +27465,7 @@
             @EnumEntry(value = TEXT_ALIGNMENT_VIEW_END, name = "viewEnd")
     })
     @TextAlignment
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getRawTextAlignment() {
         return (mPrivateFlags2 & PFLAG2_TEXT_ALIGNMENT_MASK) >> PFLAG2_TEXT_ALIGNMENT_MASK_SHIFT;
     }
@@ -28815,7 +28815,7 @@
          * constants declared by {@link View} (there are more display states than
          * screen states).
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         int mDisplayState = Display.STATE_UNKNOWN;
 
         /**
@@ -29322,7 +29322,7 @@
         /**
          * The current state of the scrollbars: ON, OFF, or FADING
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public int state = OFF;
 
         private int mLastColor;
@@ -29774,7 +29774,7 @@
          *
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public AccessibilityNodeInfo createAccessibilityNodeInfo(View host) {
             return host.createAccessibilityNodeInfoInternal();
         }
@@ -30192,7 +30192,7 @@
         return true;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     void hideTooltip() {
         if (mTooltipInfo == null) {
             return;
diff --git a/core/java/android/view/ViewConfiguration.java b/core/java/android/view/ViewConfiguration.java
index ffeeb80..f777f55 100644
--- a/core/java/android/view/ViewConfiguration.java
+++ b/core/java/android/view/ViewConfiguration.java
@@ -678,7 +678,7 @@
      * to a hover movement gesture.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static int getHoverTapSlop() {
         return HOVER_TAP_SLOP;
     }
diff --git a/core/java/android/view/ViewDebug.java b/core/java/android/view/ViewDebug.java
index e138bae..6a07f64 100644
--- a/core/java/android/view/ViewDebug.java
+++ b/core/java/android/view/ViewDebug.java
@@ -29,6 +29,7 @@
 import android.graphics.RecordingCanvas;
 import android.graphics.Rect;
 import android.graphics.RenderNode;
+import android.os.Build;
 import android.os.Debug;
 import android.os.Handler;
 import android.os.Looper;
@@ -477,7 +478,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static long getViewRootImplCount() {
         return Debug.countInstancesOfClass(ViewRootImpl.class);
     }
@@ -1157,7 +1158,7 @@
      * @hide
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static void dump(View root, boolean skipChildren, boolean includeProperties,
             OutputStream clientStream) throws IOException {
         BufferedWriter out = null;
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index 3cdf61c..a6d6959 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -130,7 +130,7 @@
 public abstract class ViewGroup extends View implements ViewParent, ViewManager {
     private static final String TAG = "ViewGroup";
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final boolean DBG = false;
 
     /**
@@ -3058,7 +3058,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void transformPointToViewLocal(float[] point, View child) {
         point[0] += mScrollX - child.mLeft;
         point[1] += mScrollY - child.mTop;
@@ -3772,7 +3772,7 @@
 
     /** @hide */
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onInitializeAccessibilityNodeInfoInternal(AccessibilityNodeInfo info) {
         super.onInitializeAccessibilityNodeInfoInternal(info);
         if (getAccessibilityNodeProvider() != null) {
@@ -3904,7 +3904,7 @@
     }
 
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     void dispatchDetachedFromWindow() {
         // If we still have a touch target, we are still in the process of
         // dispatching motion events to a child; we need to get rid of that
@@ -7760,7 +7760,7 @@
      * @hide
      */
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void resolvePadding() {
         super.resolvePadding();
         int count = getChildCount();
@@ -9231,7 +9231,7 @@
 
     /** @hide */
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected void encodeProperties(@NonNull ViewHierarchyEncoder encoder) {
         super.encodeProperties(encoder);
 
diff --git a/core/java/android/view/ViewOverlay.java b/core/java/android/view/ViewOverlay.java
index 7830c57..7449fb2 100644
--- a/core/java/android/view/ViewOverlay.java
+++ b/core/java/android/view/ViewOverlay.java
@@ -22,6 +22,7 @@
 import android.graphics.Canvas;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 
 import java.util.ArrayList;
 
@@ -56,7 +57,7 @@
      * of the overlay
      * @return
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     ViewGroup getOverlayView() {
         return mOverlayViewGroup;
     }
@@ -96,7 +97,7 @@
         mOverlayViewGroup.clear();
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     boolean isEmpty() {
         return mOverlayViewGroup.isEmpty();
     }
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 7453f21..994a959 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -281,7 +281,7 @@
      */
     private static final int CONTENT_CAPTURE_ENABLED_FALSE = 2;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     static final ThreadLocal<HandlerActionQueue> sRunQueues = new ThreadLocal<HandlerActionQueue>();
 
     static final ArrayList<Runnable> sFirstDrawHandlers = new ArrayList<>();
@@ -427,11 +427,11 @@
     final Region mTransparentRegion;
     final Region mPreviousTransparentRegion;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     int mWidth;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     int mHeight;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     Rect mDirty;
     public boolean mIsAnimating;
 
@@ -802,7 +802,7 @@
     }
 
     /** Add static config callback to be notified about global config changes. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static void addConfigCallback(ConfigChangedCallback callback) {
         synchronized (sConfigCallbacks) {
             sConfigCallbacks.add(callback);
@@ -1174,7 +1174,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getWindowFlags() {
         return mWindowAttributes.flags;
     }
@@ -1824,19 +1824,13 @@
     /**
      * Called after window layout to update the bounds surface. If the surface insets have changed
      * or the surface has resized, update the bounds surface.
-     *
-     * @param shouldReparent Whether it should reparent the bounds layer to the main SurfaceControl.
      */
-    private void updateBoundsLayer(boolean shouldReparent) {
+    private void updateBoundsLayer() {
         if (mBoundsLayer != null) {
             setBoundsLayerCrop();
-            mTransaction.deferTransactionUntil(mBoundsLayer, getRenderSurfaceControl(),
-                    mSurface.getNextFrameNumber());
-
-            if (shouldReparent) {
-                mTransaction.reparent(mBoundsLayer, getRenderSurfaceControl());
-            }
-            mTransaction.apply();
+            mTransaction.deferTransactionUntil(mBoundsLayer,
+                    getRenderSurfaceControl(), mSurface.getNextFrameNumber())
+                    .apply();
         }
     }
 
@@ -1919,7 +1913,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     void scheduleTraversals() {
         if (!mTraversalScheduled) {
             mTraversalScheduled = true;
@@ -2919,16 +2913,7 @@
         }
 
         if (surfaceSizeChanged || surfaceReplaced || surfaceCreated || windowAttributesChanged) {
-            // If the surface has been replaced, there's a chance the bounds layer is not parented
-            // to the new layer. When updating bounds layer, also reparent to the main VRI
-            // SurfaceControl to ensure it's correctly placed in the hierarchy.
-            //
-            // This needs to be done on the client side since WMS won't reparent the children to the
-            // new surface if it thinks the app is closing. WMS gets the signal that the app is
-            // stopping, but on the client side it doesn't get stopped since it's restarted quick
-            // enough. WMS doesn't want to keep around old children since they will leak when the
-            // client creates new children.
-            updateBoundsLayer(surfaceReplaced);
+            updateBoundsLayer();
         }
 
         final boolean didLayout = layoutRequested && (!mStopped || mReportNextDraw);
@@ -5166,7 +5151,7 @@
      * @param inTouchMode Whether we want to be in touch mode.
      * @return True if the touch mode changed and focus changed was changed as a result
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     boolean ensureTouchMode(boolean inTouchMode) {
         if (DBG) Log.d("touchmode", "ensureTouchMode(" + inTouchMode + "), current "
                 + "touch mode is " + mAttachInfo.mInTouchMode);
@@ -7199,7 +7184,7 @@
     }
 
     /* drag/drop */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     void setLocalDragState(Object obj) {
         mLocalDragState = obj;
     }
@@ -7961,7 +7946,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     void enqueueInputEvent(InputEvent event) {
         enqueueInputEvent(event, null, 0, false);
     }
@@ -8367,7 +8352,7 @@
         mInvalidateOnAnimationRunnable.addViewRect(info);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void cancelInvalidate(View view) {
         mHandler.removeMessages(MSG_INVALIDATE, view);
         // fixme: might leak the AttachInfo.InvalidateInfo objects instead of returning
@@ -8376,12 +8361,12 @@
         mInvalidateOnAnimationRunnable.removeView(view);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void dispatchInputEvent(InputEvent event) {
         dispatchInputEvent(event, null);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void dispatchInputEvent(InputEvent event, InputEventReceiver receiver) {
         SomeArgs args = SomeArgs.obtain();
         args.arg1 = event;
diff --git a/core/java/android/view/ViewStructure.java b/core/java/android/view/ViewStructure.java
index 606e8f9..29ce231 100644
--- a/core/java/android/view/ViewStructure.java
+++ b/core/java/android/view/ViewStructure.java
@@ -97,6 +97,7 @@
     public abstract void setVisibility(int visibility);
 
     /** @hide */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract void setAssistBlocked(boolean state);
 
     /**
@@ -431,6 +432,7 @@
     public abstract void asyncCommit();
 
     /** @hide */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract Rect getTempRect();
 
     /**
diff --git a/core/java/android/view/ViewTreeObserver.java b/core/java/android/view/ViewTreeObserver.java
index d7b0afc..b63f40c 100644
--- a/core/java/android/view/ViewTreeObserver.java
+++ b/core/java/android/view/ViewTreeObserver.java
@@ -51,7 +51,7 @@
 
     // Non-recursive listeners use CopyOnWriteArray
     // Any listener invoked from ViewRootImpl.performTraversals() should not be recursive
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private CopyOnWriteArray<OnGlobalLayoutListener> mOnGlobalLayoutListeners;
     @UnsupportedAppUsage
     private CopyOnWriteArray<OnComputeInternalInsetsListener> mOnComputeInternalInsetsListeners;
@@ -242,7 +242,7 @@
          * Only used when {@link #setTouchableInsets(int)} is called with
          * the option {@link #TOUCHABLE_INSETS_REGION}.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public final Region touchableRegion = new Region();
 
         /**
@@ -267,7 +267,7 @@
          * Option for {@link #setTouchableInsets(int)}: the area inside of
          * the provided touchable region in {@link #touchableRegion} can be touched.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final int TOUCHABLE_INSETS_REGION = 3;
 
         /**
diff --git a/core/java/android/view/Window.java b/core/java/android/view/Window.java
index 446e7aa..fb2412b 100644
--- a/core/java/android/view/Window.java
+++ b/core/java/android/view/Window.java
@@ -161,7 +161,7 @@
      * Max value used as a feature ID
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int FEATURE_MAX = FEATURE_ACTIVITY_TRANSITIONS;
 
     /**
@@ -788,7 +788,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final boolean isDestroyed() {
         return mDestroyed;
     }
@@ -1134,7 +1134,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void addPrivateFlags(int flags) {
         setPrivateFlags(flags, flags);
     }
@@ -1384,6 +1384,7 @@
     }
 
     /** @hide */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract void alwaysReadCloseOnTouchAttr();
 
@@ -1564,6 +1565,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract void clearContentView();
 
     /**
@@ -2632,18 +2634,21 @@
      * Called when the activity changes from fullscreen mode to multi-window mode and visa-versa.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract void onMultiWindowModeChanged();
 
     /**
      * Called when the activity changes to/from picture-in-picture mode.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract void onPictureInPictureModeChanged(boolean isInPictureInPictureMode);
 
     /**
      * Called when the activity just relaunched.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract void reportActivityRelaunched();
 
     /**
diff --git a/core/java/android/view/WindowAnimationFrameStats.java b/core/java/android/view/WindowAnimationFrameStats.java
index dfc4f0c..251ae9b 100644
--- a/core/java/android/view/WindowAnimationFrameStats.java
+++ b/core/java/android/view/WindowAnimationFrameStats.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -48,7 +49,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void init(long refreshPeriodNano, long[] framesPresentedTimeNano) {
         mRefreshPeriodNano = refreshPeriodNano;
         mFramesPresentedTimeNano = framesPresentedTimeNano;
diff --git a/core/java/android/view/WindowContentFrameStats.java b/core/java/android/view/WindowContentFrameStats.java
index 217197c..c788346 100644
--- a/core/java/android/view/WindowContentFrameStats.java
+++ b/core/java/android/view/WindowContentFrameStats.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -61,7 +62,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void init(long refreshPeriodNano, long[] framesPostedTimeNano,
             long[] framesPresentedTimeNano, long[] framesReadyTimeNano) {
         mRefreshPeriodNano = refreshPeriodNano;
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java
index 5c62694..4567cc9 100644
--- a/core/java/android/view/WindowManager.java
+++ b/core/java/android/view/WindowManager.java
@@ -74,6 +74,7 @@
 import android.graphics.PixelFormat;
 import android.graphics.Rect;
 import android.graphics.Region;
+import android.os.Build;
 import android.os.IBinder;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -1035,7 +1036,7 @@
          * In multiuser systems shows only on the owning user's window.
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final int TYPE_SECURE_SYSTEM_OVERLAY = FIRST_SYSTEM_WINDOW+15;
 
         /**
@@ -1104,7 +1105,7 @@
          * In multiuser systems shows on all users' windows.
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final int TYPE_DISPLAY_OVERLAY = FIRST_SYSTEM_WINDOW+26;
 
         /**
@@ -2554,7 +2555,7 @@
          * The ui visibility as requested by the views in this hierarchy.
          * the combined value should be systemUiVisibility | subtreeSystemUiVisibility.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public int subtreeSystemUiVisibility;
 
         /**
@@ -2730,7 +2731,7 @@
          *
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final int INPUT_FEATURE_DISABLE_USER_ACTIVITY = 0x00000004;
 
         /**
diff --git a/core/java/android/view/WindowManagerGlobal.java b/core/java/android/view/WindowManagerGlobal.java
index 8490f2a..03cceca 100644
--- a/core/java/android/view/WindowManagerGlobal.java
+++ b/core/java/android/view/WindowManagerGlobal.java
@@ -259,7 +259,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ArrayList<ViewRootImpl> getRootViews(IBinder token) {
         ArrayList<ViewRootImpl> views = new ArrayList<>();
         synchronized (mLock) {
@@ -438,7 +438,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void removeView(View view, boolean immediate) {
         if (view == null) {
             throw new IllegalArgumentException("view must not be null");
diff --git a/core/java/android/view/accessibility/AccessibilityInteractionClient.java b/core/java/android/view/accessibility/AccessibilityInteractionClient.java
index 299ae2f0..6f17e34 100644
--- a/core/java/android/view/accessibility/AccessibilityInteractionClient.java
+++ b/core/java/android/view/accessibility/AccessibilityInteractionClient.java
@@ -126,7 +126,7 @@
     /**
      * @return The client for the current thread.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static AccessibilityInteractionClient getInstance() {
         final long threadId = Thread.currentThread().getId();
         return getInstanceForThread(threadId);
@@ -205,7 +205,7 @@
      *
      * @param message The message.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setSameThreadMessage(Message message) {
         synchronized (mInstanceLock) {
             mSameThreadMessage = message;
@@ -729,7 +729,7 @@
         return false;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void clearCache() {
         sAccessibilityCache.clear();
     }
diff --git a/core/java/android/view/accessibility/AccessibilityManager.java b/core/java/android/view/accessibility/AccessibilityManager.java
index 3742543..199e64d 100644
--- a/core/java/android/view/accessibility/AccessibilityManager.java
+++ b/core/java/android/view/accessibility/AccessibilityManager.java
@@ -111,7 +111,7 @@
     public static final int DALTONIZER_DISABLED = -1;
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int DALTONIZER_SIMULATE_MONOCHROMACY = 0;
 
     /** @hide */
@@ -1234,7 +1234,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(Manifest.permission.MANAGE_ACCESSIBILITY)
     public void performAccessibilityShortcut() {
         performAccessibilityShortcut(null);
@@ -1279,7 +1278,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(Manifest.permission.MANAGE_ACCESSIBILITY)
     public void registerSystemAction(@NonNull RemoteAction action, int actionId) {
         final IAccessibilityManager service;
@@ -1307,7 +1305,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(Manifest.permission.MANAGE_ACCESSIBILITY)
     public void unregisterSystemAction(int actionId) {
         final IAccessibilityManager service;
diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfo.java b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
index 214da38..12393a5 100644
--- a/core/java/android/view/accessibility/AccessibilityNodeInfo.java
+++ b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
@@ -726,7 +726,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static int getAccessibilityViewId(long accessibilityNodeId) {
         return (int) accessibilityNodeId;
     }
@@ -740,7 +740,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static int getVirtualDescendantId(long accessibilityNodeId) {
         return (int) ((accessibilityNodeId & VIRTUAL_DESCENDANT_ID_MASK)
                 >> VIRTUAL_DESCENDANT_ID_SHIFT);
@@ -768,7 +768,7 @@
 
     private static final AccessibilityNodeInfo DEFAULT = new AccessibilityNodeInfo();
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private boolean mSealed;
 
     // Data.
@@ -988,7 +988,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean refresh(Bundle arguments, boolean bypassCache) {
         enforceSealed();
         if (!canPerformRequestOverConnection(mConnectionId, mWindowId, mSourceNodeId)) {
@@ -1768,7 +1768,7 @@
      *   <strong>Note:</strong> The primary usage of this API is for UI test automation
      *   and in order to report the fully qualified view id if an {@link AccessibilityNodeInfo}
      *   the client has to set the {@link AccessibilityServiceInfo#FLAG_REPORT_VIEW_IDS}
-     *   flag when configuring his {@link android.accessibilityservice.AccessibilityService}.
+     *   flag when configuring the {@link android.accessibilityservice.AccessibilityService}.
      * </p>
      * <p>
      * <strong>Note:</strong> If this view hierarchy has a {@link SurfaceView} embedding another
@@ -3206,7 +3206,7 @@
      *   <strong>Note:</strong> The primary usage of this API is for UI test automation
      *   and in order to report the source view id of an {@link AccessibilityNodeInfo} the
      *   client has to set the {@link AccessibilityServiceInfo#FLAG_REPORT_VIEW_IDS}
-     *   flag when configuring his {@link android.accessibilityservice.AccessibilityService}.
+     *   flag when configuring the {@link android.accessibilityservice.AccessibilityService}.
      * </p>
 
      * @return The id resource name.
diff --git a/core/java/android/view/accessibility/IAccessibilityInteractionConnectionCallback.aidl b/core/java/android/view/accessibility/IAccessibilityInteractionConnectionCallback.aidl
index f96f0ac..049bb31 100644
--- a/core/java/android/view/accessibility/IAccessibilityInteractionConnectionCallback.aidl
+++ b/core/java/android/view/accessibility/IAccessibilityInteractionConnectionCallback.aidl
@@ -33,7 +33,7 @@
      * @param infos The result {@link AccessibilityNodeInfo}.
      * @param interactionId The interaction id to match the result with the request.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void setFindAccessibilityNodeInfoResult(in AccessibilityNodeInfo info, int interactionId);
 
     /**
@@ -42,7 +42,7 @@
      * @param infos The result {@link AccessibilityNodeInfo}s.
      * @param interactionId The interaction id to match the result with the request.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void setFindAccessibilityNodeInfosResult(in List<AccessibilityNodeInfo> infos,
         int interactionId);
 
@@ -52,6 +52,6 @@
      * @param Whether the action was performed.
      * @param interactionId The interaction id to match the result with the request.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void setPerformAccessibilityActionResult(boolean succeeded, int interactionId);
 }
diff --git a/core/java/android/view/accessibility/IAccessibilityManager.aidl b/core/java/android/view/accessibility/IAccessibilityManager.aidl
index 97036f3..5d3c720 100644
--- a/core/java/android/view/accessibility/IAccessibilityManager.aidl
+++ b/core/java/android/view/accessibility/IAccessibilityManager.aidl
@@ -44,7 +44,7 @@
 
     List<AccessibilityServiceInfo> getInstalledAccessibilityServiceList(int userId);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     List<AccessibilityServiceInfo> getEnabledAccessibilityServiceList(int feedbackType, int userId);
 
     int addAccessibilityInteractionConnection(IWindow windowToken, IBinder leashToken,
diff --git a/core/java/android/view/autofill/AutofillManager.java b/core/java/android/view/autofill/AutofillManager.java
index 10803cd..c5ca886 100644
--- a/core/java/android/view/autofill/AutofillManager.java
+++ b/core/java/android/view/autofill/AutofillManager.java
@@ -2048,7 +2048,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public void setAugmentedAutofillWhitelist(@Nullable Set<String> packages,
             @Nullable Set<ComponentName> activities) {
         if (!hasAutofillFeature()) {
diff --git a/core/java/android/view/contentcapture/ContentCaptureContext.java b/core/java/android/view/contentcapture/ContentCaptureContext.java
index b84cb88..9bf3626 100644
--- a/core/java/android/view/contentcapture/ContentCaptureContext.java
+++ b/core/java/android/view/contentcapture/ContentCaptureContext.java
@@ -21,7 +21,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.app.TaskInfo;
 import android.content.ComponentName;
 import android.content.Context;
@@ -58,7 +57,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int FLAG_DISABLED_BY_APP = 0x1;
 
     /**
@@ -69,7 +67,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int FLAG_DISABLED_BY_FLAG_SECURE = 0x2;
 
     /**
@@ -79,7 +76,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int FLAG_RECONNECTED = 0x4;
 
     /** @hide */
@@ -173,7 +169,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public int getTaskId() {
         return mTaskId;
     }
@@ -184,7 +179,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public @Nullable ComponentName getActivityComponent() {
         return mComponentName;
     }
@@ -197,7 +191,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public @Nullable ContentCaptureSessionId getParentSessionId() {
         return mParentSessionId == NO_SESSION_ID ? null
                 : new ContentCaptureSessionId(mParentSessionId);
@@ -215,7 +208,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public int getDisplayId() {
         return mDisplayId;
     }
@@ -229,7 +221,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public @ContextCreationFlags int getFlags() {
         return mFlags;
     }
diff --git a/core/java/android/view/contentcapture/ContentCaptureEvent.java b/core/java/android/view/contentcapture/ContentCaptureEvent.java
index f49b1be..2b12230 100644
--- a/core/java/android/view/contentcapture/ContentCaptureEvent.java
+++ b/core/java/android/view/contentcapture/ContentCaptureEvent.java
@@ -22,7 +22,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.graphics.Insets;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -39,7 +38,6 @@
 
 /** @hide */
 @SystemApi
-@TestApi
 public final class ContentCaptureEvent implements Parcelable {
 
     private static final String TAG = ContentCaptureEvent.class.getSimpleName();
diff --git a/core/java/android/view/contentcapture/ContentCaptureManager.java b/core/java/android/view/contentcapture/ContentCaptureManager.java
index 029552d..10f6c61 100644
--- a/core/java/android/view/contentcapture/ContentCaptureManager.java
+++ b/core/java/android/view/contentcapture/ContentCaptureManager.java
@@ -644,7 +644,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public boolean isContentCaptureFeatureEnabled() {
         final SyncResultReceiver resultReceiver = syncRun(
                 (r) -> mService.isContentCaptureFeatureEnabled(r));
diff --git a/core/java/android/view/contentcapture/ViewNode.java b/core/java/android/view/contentcapture/ViewNode.java
index e035c62..e731d4b 100644
--- a/core/java/android/view/contentcapture/ViewNode.java
+++ b/core/java/android/view/contentcapture/ViewNode.java
@@ -42,7 +42,6 @@
 // instead
 /** @hide */
 @SystemApi
-@TestApi
 public final class ViewNode extends AssistStructure.ViewNode {
 
     private static final String TAG = ViewNode.class.getSimpleName();
diff --git a/core/java/android/view/inputmethod/InlineSuggestionsRequest.java b/core/java/android/view/inputmethod/InlineSuggestionsRequest.java
index cce1090..6300320 100644
--- a/core/java/android/view/inputmethod/InlineSuggestionsRequest.java
+++ b/core/java/android/view/inputmethod/InlineSuggestionsRequest.java
@@ -47,6 +47,9 @@
     /**
      * Max number of suggestions expected from the response. It must be a positive value.
      * Defaults to {@code SUGGESTION_COUNT_UNLIMITED} if not set.
+     *
+     * <p>In practice, it is recommended that the max suggestion count does not exceed <b>5</b>
+     * for performance reasons.</p>
      */
     private final int mMaxSuggestionCount;
 
@@ -67,6 +70,9 @@
     /**
      * The IME provided locales for the request. If non-empty, the inline suggestions should
      * return languages from the supported locales. If not provided, it'll default to system locale.
+     *
+     * <p>Note for Autofill Providers: It is <b>recommended</b> for the returned inline suggestions
+     * to have one locale to guarantee consistent UI rendering.</p>
      */
     private @NonNull LocaleList mSupportedLocales;
 
@@ -227,6 +233,9 @@
     /**
      * Max number of suggestions expected from the response. It must be a positive value.
      * Defaults to {@code SUGGESTION_COUNT_UNLIMITED} if not set.
+     *
+     * <p>In practice, it is recommended that the max suggestion count does not exceed <b>5</b>
+     * for performance reasons.</p>
      */
     @DataClass.Generated.Member
     public int getMaxSuggestionCount() {
@@ -256,6 +265,9 @@
     /**
      * The IME provided locales for the request. If non-empty, the inline suggestions should
      * return languages from the supported locales. If not provided, it'll default to system locale.
+     *
+     * <p>Note for Autofill Providers: It is <b>recommended</b> for the returned inline suggestions
+     * to have one locale to guarantee consistent UI rendering.</p>
      */
     @DataClass.Generated.Member
     public @NonNull LocaleList getSupportedLocales() {
@@ -458,6 +470,9 @@
         /**
          * Max number of suggestions expected from the response. It must be a positive value.
          * Defaults to {@code SUGGESTION_COUNT_UNLIMITED} if not set.
+         *
+         * <p>In practice, it is recommended that the max suggestion count does not exceed <b>5</b>
+         * for performance reasons.</p>
          */
         @DataClass.Generated.Member
         public @NonNull Builder setMaxSuggestionCount(int value) {
@@ -508,6 +523,9 @@
         /**
          * The IME provided locales for the request. If non-empty, the inline suggestions should
          * return languages from the supported locales. If not provided, it'll default to system locale.
+         *
+         * <p>Note for Autofill Providers: It is <b>recommended</b> for the returned inline suggestions
+         * to have one locale to guarantee consistent UI rendering.</p>
          */
         @DataClass.Generated.Member
         public @NonNull Builder setSupportedLocales(@NonNull LocaleList value) {
@@ -604,7 +622,7 @@
     }
 
     @DataClass.Generated(
-            time = 1588109685838L,
+            time = 1595457701315L,
             codegenVersion = "1.0.15",
             sourceFile = "frameworks/base/core/java/android/view/inputmethod/InlineSuggestionsRequest.java",
             inputSignatures = "public static final  int SUGGESTION_COUNT_UNLIMITED\nprivate final  int mMaxSuggestionCount\nprivate final @android.annotation.NonNull java.util.List<android.widget.inline.InlinePresentationSpec> mInlinePresentationSpecs\nprivate @android.annotation.NonNull java.lang.String mHostPackageName\nprivate @android.annotation.NonNull android.os.LocaleList mSupportedLocales\nprivate @android.annotation.NonNull android.os.Bundle mExtras\nprivate @android.annotation.Nullable android.os.IBinder mHostInputToken\nprivate  int mHostDisplayId\npublic  void setHostInputToken(android.os.IBinder)\nprivate  boolean extrasEquals(android.os.Bundle)\nprivate  void parcelHostInputToken(android.os.Parcel,int)\nprivate @android.annotation.Nullable android.os.IBinder unparcelHostInputToken(android.os.Parcel)\npublic  void setHostDisplayId(int)\nprivate  void onConstructed()\npublic  void filterContentTypes()\nprivate static  int defaultMaxSuggestionCount()\nprivate static  java.lang.String defaultHostPackageName()\nprivate static  android.os.LocaleList defaultSupportedLocales()\nprivate static @android.annotation.Nullable android.os.IBinder defaultHostInputToken()\nprivate static @android.annotation.Nullable int defaultHostDisplayId()\nprivate static @android.annotation.NonNull android.os.Bundle defaultExtras()\nclass InlineSuggestionsRequest extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true, genToString=true, genBuilder=true)\nabstract  android.view.inputmethod.InlineSuggestionsRequest.Builder setInlinePresentationSpecs(java.util.List<android.widget.inline.InlinePresentationSpec>)\nabstract  android.view.inputmethod.InlineSuggestionsRequest.Builder setHostPackageName(java.lang.String)\nabstract  android.view.inputmethod.InlineSuggestionsRequest.Builder setHostInputToken(android.os.IBinder)\nabstract  android.view.inputmethod.InlineSuggestionsRequest.Builder setHostDisplayId(int)\nclass BaseBuilder extends java.lang.Object implements []")
diff --git a/core/java/android/view/inputmethod/InlineSuggestionsResponse.java b/core/java/android/view/inputmethod/InlineSuggestionsResponse.java
index be833df..b393c67 100644
--- a/core/java/android/view/inputmethod/InlineSuggestionsResponse.java
+++ b/core/java/android/view/inputmethod/InlineSuggestionsResponse.java
@@ -32,7 +32,18 @@
  */
 @DataClass(genEqualsHashCode = true, genToString = true, genHiddenConstructor = true)
 public final class InlineSuggestionsResponse implements Parcelable {
-    private final @NonNull List<InlineSuggestion> mInlineSuggestions;
+    /**
+     * List of {@link InlineSuggestion}s returned as a part of this response.
+     *
+     * <p>When the host app requests to inflate this <b>ordered</b> list of inline suggestions by
+     * calling {@link InlineSuggestion#inflate}, it is the host's responsibility to track the
+     * order of the inflated {@link android.view.View}s. These views are to be added in
+     * order to the view hierarchy, because the inflation calls will return asynchronously.</p>
+     *
+     * <p>The inflation ordering does not apply to the pinned icon.</p>
+     */
+    @NonNull
+    private final List<InlineSuggestion> mInlineSuggestions;
 
     /**
      * Creates a new {@link InlineSuggestionsResponse}, for testing purpose.
@@ -48,7 +59,7 @@
 
 
 
-    // Code below generated by codegen v1.0.14.
+    // Code below generated by codegen v1.0.15.
     //
     // DO NOT MODIFY!
     // CHECKSTYLE:OFF Generated code
@@ -64,6 +75,15 @@
     /**
      * Creates a new InlineSuggestionsResponse.
      *
+     * @param inlineSuggestions
+     *   List of {@link InlineSuggestion}s returned as a part of this response.
+     *
+     *   <p>When the host app requests to inflate this <b>ordered</b> list of inline suggestions by
+     *   calling {@link InlineSuggestion#inflate}, it is the host's responsibility to track the
+     *   order of the inflated {@link android.view.View}s. These views are to be added in
+     *   order to the view hierarchy, because the inflation calls will return asynchronously.</p>
+     *
+     *   <p>The inflation ordering does not apply to the pinned icon.</p>
      * @hide
      */
     @DataClass.Generated.Member
@@ -76,6 +96,16 @@
         // onConstructed(); // You can define this method to get a callback
     }
 
+    /**
+     * List of {@link InlineSuggestion}s returned as a part of this response.
+     *
+     * <p>When the host app requests to inflate this <b>ordered</b> list of inline suggestions by
+     * calling {@link InlineSuggestion#inflate}, it is the host's responsibility to track the
+     * order of the inflated {@link android.view.View}s. These views are to be added in
+     * order to the view hierarchy, because the inflation calls will return asynchronously.</p>
+     *
+     * <p>The inflation ordering does not apply to the pinned icon.</p>
+     */
     @DataClass.Generated.Member
     public @NonNull List<InlineSuggestion> getInlineSuggestions() {
         return mInlineSuggestions;
@@ -164,8 +194,8 @@
     };
 
     @DataClass.Generated(
-            time = 1578972149519L,
-            codegenVersion = "1.0.14",
+            time = 1595891876037L,
+            codegenVersion = "1.0.15",
             sourceFile = "frameworks/base/core/java/android/view/inputmethod/InlineSuggestionsResponse.java",
             inputSignatures = "private final @android.annotation.NonNull java.util.List<android.view.inputmethod.InlineSuggestion> mInlineSuggestions\npublic static @android.annotation.TestApi @android.annotation.NonNull android.view.inputmethod.InlineSuggestionsResponse newInlineSuggestionsResponse(java.util.List<android.view.inputmethod.InlineSuggestion>)\nclass InlineSuggestionsResponse extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true, genToString=true, genHiddenConstructor=true)")
     @Deprecated
diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java
index 0d21673..b1f4df1 100644
--- a/core/java/android/view/inputmethod/InputMethodManager.java
+++ b/core/java/android/view/inputmethod/InputMethodManager.java
@@ -2282,7 +2282,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isCursorAnchorInfoEnabled() {
         synchronized (mH) {
             final boolean isImmediate = (mRequestUpdateCursorAnchorInfoMonitorMode &
@@ -2298,7 +2298,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setUpdateCursorAnchorInfoMode(int flags) {
         synchronized (mH) {
             mRequestUpdateCursorAnchorInfoMonitorMode = flags;
diff --git a/core/java/android/view/textclassifier/TextClassificationManager.java b/core/java/android/view/textclassifier/TextClassificationManager.java
index fa4f7d6..b606340 100644
--- a/core/java/android/view/textclassifier/TextClassificationManager.java
+++ b/core/java/android/view/textclassifier/TextClassificationManager.java
@@ -21,6 +21,7 @@
 import android.annotation.SystemService;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
+import android.os.Build;
 import android.os.ServiceManager;
 import android.view.textclassifier.TextClassifier.TextClassifierType;
 
@@ -104,7 +105,7 @@
      * @see TextClassifier#DEFAULT_SYSTEM
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public TextClassifier getTextClassifier(@TextClassifierType int type) {
         switch (type) {
             case TextClassifier.LOCAL:
diff --git a/core/java/android/view/textservice/SpellCheckerSession.java b/core/java/android/view/textservice/SpellCheckerSession.java
index afddaa2..35d8445 100644
--- a/core/java/android/view/textservice/SpellCheckerSession.java
+++ b/core/java/android/view/textservice/SpellCheckerSession.java
@@ -18,6 +18,7 @@
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.os.Binder;
+import android.os.Build;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.Message;
@@ -97,7 +98,7 @@
     private final InternalListener mInternalListener;
     private final TextServicesManager mTextServicesManager;
     private final SpellCheckerInfo mSpellCheckerInfo;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final SpellCheckerSessionListener mSpellCheckerSessionListener;
     private final SpellCheckerSessionListenerImpl mSpellCheckerSessionListenerImpl;
 
diff --git a/core/java/android/view/textservice/TextServicesManager.java b/core/java/android/view/textservice/TextServicesManager.java
index acb35d6..08de464 100644
--- a/core/java/android/view/textservice/TextServicesManager.java
+++ b/core/java/android/view/textservice/TextServicesManager.java
@@ -21,6 +21,7 @@
 import android.annotation.UserIdInt;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.RemoteException;
 import android.os.ServiceManager;
@@ -216,7 +217,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public SpellCheckerInfo[] getEnabledSpellCheckers() {
         try {
             final SpellCheckerInfo[] retval = mService.getEnabledSpellCheckers(mUserId);
diff --git a/core/java/android/webkit/CookieManager.java b/core/java/android/webkit/CookieManager.java
index f62a28e..023d9ff2 100644
--- a/core/java/android/webkit/CookieManager.java
+++ b/core/java/android/webkit/CookieManager.java
@@ -154,6 +154,7 @@
      *               HTTP request header
      * @hide Used by Browser and by WebViewProvider implementations.
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     public abstract String getCookie(String url, boolean privateBrowsing);
 
@@ -230,6 +231,7 @@
      * @param privateBrowsing whether to use the private browsing cookie jar
      * @hide Used by Browser and WebViewProvider implementations.
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     public abstract boolean hasCookies(boolean privateBrowsing);
 
@@ -264,6 +266,7 @@
      *
      * @hide Only for use by WebViewProvider implementations
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     protected abstract boolean allowFileSchemeCookiesImpl();
 
@@ -299,6 +302,7 @@
      *
      * @hide Only for use by WebViewProvider implementations
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     protected abstract void setAcceptFileSchemeCookiesImpl(boolean accept);
 }
diff --git a/core/java/android/webkit/IWebViewUpdateService.aidl b/core/java/android/webkit/IWebViewUpdateService.aidl
index 1da0500..e177731 100644
--- a/core/java/android/webkit/IWebViewUpdateService.aidl
+++ b/core/java/android/webkit/IWebViewUpdateService.aidl
@@ -51,7 +51,7 @@
      * DevelopmentSettings uses this to get the current available WebView
      * providers (to display as choices to the user).
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     WebViewProviderInfo[] getValidWebViewPackages();
 
     /**
@@ -62,7 +62,7 @@
     /**
      * Used by DevelopmentSetting to get the name of the WebView provider currently in use.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     String getCurrentWebViewPackageName();
 
     /**
diff --git a/core/java/android/webkit/PluginData.java b/core/java/android/webkit/PluginData.java
index c9a1960..5d481b1 100644
--- a/core/java/android/webkit/PluginData.java
+++ b/core/java/android/webkit/PluginData.java
@@ -17,6 +17,7 @@
 package android.webkit;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 import java.io.InputStream;
 import java.util.Map;
@@ -93,7 +94,7 @@
      * deprecated, so is this class.
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public InputStream getInputStream() {
         return mStream;
     }
@@ -108,7 +109,7 @@
      * deprecated, so is this class.
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public long getContentLength() {
         return mContentLength;
     }
@@ -126,7 +127,7 @@
      * deprecated, so is this class.
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Map<String, String[]> getHeaders() {
         return mHeaders;
     }
@@ -141,7 +142,7 @@
      * deprecated, so is this class.
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getStatusCode() {
         return mStatusCode;
     }
diff --git a/core/java/android/webkit/UrlInterceptRegistry.java b/core/java/android/webkit/UrlInterceptRegistry.java
index c9dee00..4fa6fde 100644
--- a/core/java/android/webkit/UrlInterceptRegistry.java
+++ b/core/java/android/webkit/UrlInterceptRegistry.java
@@ -18,6 +18,7 @@
 
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.webkit.CacheManager.CacheResult;
 
 import java.util.Iterator;
@@ -154,7 +155,7 @@
      */
     @Deprecated
     @Nullable
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static synchronized PluginData getPluginData(
             String url, Map<String, String> headers) {
         if (urlInterceptDisabled()) {
diff --git a/core/java/android/webkit/WebHistoryItem.java b/core/java/android/webkit/WebHistoryItem.java
index b9e7042..2cb37b4 100644
--- a/core/java/android/webkit/WebHistoryItem.java
+++ b/core/java/android/webkit/WebHistoryItem.java
@@ -35,6 +35,7 @@
      * @deprecated This method is now obsolete.
      * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @Deprecated
     public abstract int getId();
diff --git a/core/java/android/webkit/WebIconDatabase.java b/core/java/android/webkit/WebIconDatabase.java
index 08956e0..b705658 100644
--- a/core/java/android/webkit/WebIconDatabase.java
+++ b/core/java/android/webkit/WebIconDatabase.java
@@ -75,6 +75,7 @@
 
     /** {@hide}
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     public abstract void bulkRequestIconForPageUrl(ContentResolver cr, String where,
             IconListener listener);
diff --git a/core/java/android/webkit/WebResourceResponse.java b/core/java/android/webkit/WebResourceResponse.java
index 219523b..e4af909 100644
--- a/core/java/android/webkit/WebResourceResponse.java
+++ b/core/java/android/webkit/WebResourceResponse.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 import java.io.InputStream;
 import java.io.StringBufferInputStream;
@@ -34,7 +35,7 @@
     private boolean mImmutable;
     private String mMimeType;
     private String mEncoding;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mStatusCode;
     private String mReasonPhrase;
     private Map<String, String> mResponseHeaders;
diff --git a/core/java/android/webkit/WebSettings.java b/core/java/android/webkit/WebSettings.java
index 91b9390..9b753f1 100644
--- a/core/java/android/webkit/WebSettings.java
+++ b/core/java/android/webkit/WebSettings.java
@@ -268,6 +268,7 @@
      * @deprecated This method is now obsolete.
      * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @Deprecated
     public abstract void setNavDump(boolean enabled);
@@ -280,6 +281,7 @@
      * @deprecated This method is now obsolete.
      * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @Deprecated
     public abstract boolean getNavDump();
@@ -457,6 +459,7 @@
      * @deprecated This method is now obsolete.
      * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @Deprecated
     public abstract  void setUseWebViewBackgroundForOverscrollBackground(boolean view);
@@ -469,6 +472,7 @@
      * @deprecated This method is now obsolete.
      * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @Deprecated
     public abstract  boolean getUseWebViewBackgroundForOverscrollBackground();
@@ -534,6 +538,7 @@
      * Developers should access this via {@link CookieManager#setShouldAcceptThirdPartyCookies}.
      * @hide Internal API.
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     public abstract void setAcceptThirdPartyCookies(boolean accept);
 
@@ -542,6 +547,7 @@
      * Developers should access this via {@link CookieManager#getShouldAcceptThirdPartyCookies}.
      * @hide Internal API
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     public abstract boolean getAcceptThirdPartyCookies();
 
@@ -669,6 +675,7 @@
      * @deprecated Please use {@link #setUserAgentString} instead.
      * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @Deprecated
     public abstract void setUserAgent(int ua);
@@ -687,6 +694,7 @@
      * @deprecated Please use {@link #getUserAgentString} instead.
      * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @Deprecated
     public abstract int getUserAgent();
@@ -1050,6 +1058,7 @@
      *             {@link #setPluginState}
      * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR2}
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @Deprecated
     public abstract void setPluginsEnabled(boolean flag);
@@ -1259,6 +1268,7 @@
      * @deprecated This method has been replaced by {@link #getPluginState}
      * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR2}
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @Deprecated
     public abstract boolean getPluginsEnabled();
@@ -1445,6 +1455,7 @@
      * WebView.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     public abstract void setVideoOverlayForEmbeddedEncryptedVideoEnabled(boolean flag);
 
@@ -1455,6 +1466,7 @@
      * @see #setVideoOverlayForEmbeddedEncryptedVideoEnabled
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     public abstract boolean getVideoOverlayForEmbeddedEncryptedVideoEnabled();
 
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 5eeab72..56849c1 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -111,7 +111,7 @@
     // Throwing an exception for incorrect thread usage if the
     // build target is JB MR2 or newer. Defaults to false, and is
     // set in the WebView constructor.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static volatile boolean sEnforceThreadChecking = false;
 
     /**
@@ -406,7 +406,7 @@
      * @hide
      */
     @SuppressWarnings("deprecation")  // for super() call into deprecated base class constructor.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected WebView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr,
             int defStyleRes, @Nullable Map<String, Object> javaScriptInterfaces,
             boolean privateBrowsing) {
@@ -2576,7 +2576,7 @@
         return WebViewFactory.getProvider();
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final Looper mWebViewThread = Looper.myLooper();
 
     @UnsupportedAppUsage
diff --git a/core/java/android/webkit/WebViewFactory.java b/core/java/android/webkit/WebViewFactory.java
index 8790bbd..d388bcd 100644
--- a/core/java/android/webkit/WebViewFactory.java
+++ b/core/java/android/webkit/WebViewFactory.java
@@ -26,6 +26,7 @@
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.Signature;
+import android.os.Build;
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.os.Trace;
@@ -390,7 +391,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static Class<WebViewFactoryProvider> getProviderClass() {
         Context webViewContext = null;
         Application initialApplication = AppGlobals.getInitialApplication();
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java
index 16e87f8..a785a1a 100644
--- a/core/java/android/widget/AbsListView.java
+++ b/core/java/android/widget/AbsListView.java
@@ -252,7 +252,7 @@
     /**
      * Controls CHOICE_MODE_MULTIPLE_MODAL. null when inactive.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     ActionMode mChoiceActionMode;
 
     /**
@@ -287,7 +287,7 @@
     /**
      * Should be used by subclasses to listen to changes in the dataset
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     AdapterDataSetObserver mDataSetObserver;
 
     /**
@@ -451,7 +451,7 @@
     /**
      * Handles scrolling between positions within the list.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     AbsPositionScroller mPositionScroller;
 
     /**
@@ -1453,7 +1453,7 @@
      * @hide
      */
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected boolean isVerticalScrollBarHidden() {
         return isFastScrollEnabled();
     }
@@ -2247,7 +2247,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private boolean canScrollUp() {
         boolean canScrollUp;
         // 0th element is not visible
@@ -2264,7 +2264,7 @@
         return canScrollUp;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private boolean canScrollDown() {
         boolean canScrollDown;
         int count = getChildCount();
@@ -3273,7 +3273,7 @@
                 CheckForLongPress.INVALID_COORD);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     boolean performLongPress(final View child,
             final int longPressPosition, final long longPressId, float x, float y) {
         // CHOICE_MODE_MULTIPLE_MODAL takes over long press.
@@ -5346,6 +5346,7 @@
      *
      * @param down true if the scroll is going down, false if it is going up
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     abstract void fillGap(boolean down);
 
     void hideSelector() {
@@ -5383,6 +5384,7 @@
      * @param y Where the user touched
      * @return The position of the first (or only) item in the row containing y
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     abstract int findMotionRow(int y);
 
@@ -5430,6 +5432,7 @@
      *
      * @param position the position of the new selection
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     abstract void setSelectionInt(int position);
 
     /**
@@ -6686,7 +6689,7 @@
          * scrap heap.
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         int scrappedFromPosition;
 
         /**
diff --git a/core/java/android/widget/AbsSeekBar.java b/core/java/android/widget/AbsSeekBar.java
index 67ed30f..b9ff26b 100644
--- a/core/java/android/widget/AbsSeekBar.java
+++ b/core/java/android/widget/AbsSeekBar.java
@@ -29,6 +29,7 @@
 import android.graphics.Rect;
 import android.graphics.Region.Op;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.os.Bundle;
 import android.util.AttributeSet;
 import android.view.KeyEvent;
@@ -857,7 +858,7 @@
     /**
      * Draw the thumb.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     void drawThumb(Canvas canvas) {
         if (mThumb != null) {
             final int saveCount = canvas.save();
diff --git a/core/java/android/widget/AbsSpinner.java b/core/java/android/widget/AbsSpinner.java
index daf6914..76e97ad 100644
--- a/core/java/android/widget/AbsSpinner.java
+++ b/core/java/android/widget/AbsSpinner.java
@@ -310,6 +310,7 @@
         }
     }
 
+    @SuppressWarnings("HiddenAbstractMethod")
     abstract void layout(int delta, boolean animate);
 
     @Override
diff --git a/core/java/android/widget/ActionMenuPresenter.java b/core/java/android/widget/ActionMenuPresenter.java
index aa3590a..6d566ba 100644
--- a/core/java/android/widget/ActionMenuPresenter.java
+++ b/core/java/android/widget/ActionMenuPresenter.java
@@ -27,6 +27,7 @@
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.util.SparseArray;
@@ -587,7 +588,7 @@
      * Dismiss all popup menus - overflow and submenus.
      * @return true if popups were dismissed, false otherwise. (This can be because none were open.)
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean dismissPopupMenus() {
         boolean result = hideOverflowMenu();
         result |= hideSubMenus();
@@ -610,7 +611,7 @@
     /**
      * @return true if the overflow menu is currently showing
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isOverflowMenuShowing() {
         return mOverflowPopup != null && mOverflowPopup.isShowing();
     }
@@ -769,7 +770,7 @@
     }
 
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Parcelable onSaveInstanceState() {
         SavedState state = new SavedState();
         state.openSubMenuId = mOpenSubMenuId;
@@ -777,7 +778,7 @@
     }
 
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onRestoreInstanceState(Parcelable state) {
         SavedState saved = (SavedState) state;
         if (saved.openSubMenuId > 0) {
diff --git a/core/java/android/widget/ActionMenuView.java b/core/java/android/widget/ActionMenuView.java
index 3a74356..f83ff30 100644
--- a/core/java/android/widget/ActionMenuView.java
+++ b/core/java/android/widget/ActionMenuView.java
@@ -22,6 +22,7 @@
 import android.content.Context;
 import android.content.res.Configuration;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.util.AttributeSet;
 import android.view.ContextThemeWrapper;
 import android.view.Gravity;
@@ -719,7 +720,7 @@
      * @hide Private LinearLayout (superclass) API. Un-hide if LinearLayout API is made public.
      */
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected boolean hasDividerBeforeChildAt(int childIndex) {
         if (childIndex == 0) {
             return false;
@@ -790,7 +791,7 @@
 
     /** @hide */
     public interface ActionMenuChildView {
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public boolean needsDividerBefore();
         public boolean needsDividerAfter();
     }
@@ -798,31 +799,31 @@
     public static class LayoutParams extends LinearLayout.LayoutParams {
         /** @hide */
         @ViewDebug.ExportedProperty(category = "layout")
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public boolean isOverflowButton;
 
         /** @hide */
         @ViewDebug.ExportedProperty(category = "layout")
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public int cellsUsed;
 
         /** @hide */
         @ViewDebug.ExportedProperty(category = "layout")
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public int extraPixels;
 
         /** @hide */
         @ViewDebug.ExportedProperty(category = "layout")
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public boolean expandable;
 
         /** @hide */
         @ViewDebug.ExportedProperty(category = "layout")
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public boolean preventEdgeOffset;
 
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public boolean expanded;
 
         public LayoutParams(Context c, AttributeSet attrs) {
diff --git a/core/java/android/widget/ActivityChooserModel.java b/core/java/android/widget/ActivityChooserModel.java
index d87bdf4..bba64c9 100644
--- a/core/java/android/widget/ActivityChooserModel.java
+++ b/core/java/android/widget/ActivityChooserModel.java
@@ -26,6 +26,7 @@
 import android.content.pm.ResolveInfo;
 import android.database.DataSetObservable;
 import android.os.AsyncTask;
+import android.os.Build;
 import android.text.TextUtils;
 import android.util.Log;
 import android.util.Xml;
@@ -378,7 +379,7 @@
      *
      * @param intent The intent.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setIntent(Intent intent) {
         synchronized (mInstanceLock) {
             if (mIntent == intent) {
@@ -513,7 +514,7 @@
      *
      * @param listener The listener.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setOnChooseActivityListener(OnChooseActivityListener listener) {
         synchronized (mInstanceLock) {
             mActivityChoserModelPolicy = listener;
diff --git a/core/java/android/widget/AutoCompleteTextView.java b/core/java/android/widget/AutoCompleteTextView.java
index 00526d9..ea906c6 100644
--- a/core/java/android/widget/AutoCompleteTextView.java
+++ b/core/java/android/widget/AutoCompleteTextView.java
@@ -113,7 +113,7 @@
     private final PassThroughClickListener mPassThroughClickListener;
 
     private CharSequence mHintText;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private TextView mHintView;
     private int mHintResource;
 
@@ -615,7 +615,7 @@
      *
      * @hide Pending API council approval
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setDropDownDismissedOnCompletion(boolean dropDownDismissedOnCompletion) {
         mDropDownDismissedOnCompletion = dropDownDismissedOnCompletion;
     }
@@ -1225,7 +1225,7 @@
      *
      * @hide internal used only by SearchDialog
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void showDropDownAfterLayout() {
         mPopup.postShow();
     }
diff --git a/core/java/android/widget/DatePickerSpinnerDelegate.java b/core/java/android/widget/DatePickerSpinnerDelegate.java
index fd89b2e..c6d456d 100644
--- a/core/java/android/widget/DatePickerSpinnerDelegate.java
+++ b/core/java/android/widget/DatePickerSpinnerDelegate.java
@@ -21,6 +21,7 @@
 import android.content.res.Configuration;
 import android.content.res.TypedArray;
 import android.icu.util.Calendar;
+import android.os.Build;
 import android.os.Parcelable;
 import android.text.InputType;
 import android.text.TextUtils;
@@ -501,7 +502,7 @@
                 || mCurrentDate.get(Calendar.DAY_OF_MONTH) != dayOfMonth);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void setDate(int year, int month, int dayOfMonth) {
         mCurrentDate.set(year, month, dayOfMonth);
         resetAutofilledValue();
@@ -512,7 +513,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void updateSpinners() {
         // set the spinner ranges respecting the min and max dates
         if (mCurrentDate.equals(mMinDate)) {
@@ -565,7 +566,7 @@
     /**
      * Updates the calendar view with the current date.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void updateCalendarView() {
         mCalendarView.setDate(mCurrentDate.getTimeInMillis(), false, false);
     }
@@ -574,7 +575,7 @@
     /**
      * Notifies the listener, if such, for a change in the selected date.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void notifyDateChanged() {
         mDelegator.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SELECTED);
         if (mOnDateChangedListener != null) {
@@ -630,7 +631,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void updateInputState() {
         // Make sure that if the user changes the value and the IME is active
         // for one of the inputs if this widget, the IME is closed. If the user
diff --git a/core/java/android/widget/DateTimeView.java b/core/java/android/widget/DateTimeView.java
index 20a53c0..9555522 100644
--- a/core/java/android/widget/DateTimeView.java
+++ b/core/java/android/widget/DateTimeView.java
@@ -30,6 +30,7 @@
 import android.content.res.Configuration;
 import android.content.res.TypedArray;
 import android.database.ContentObserver;
+import android.os.Build;
 import android.os.Handler;
 import android.util.AttributeSet;
 import android.view.accessibility.AccessibilityNodeInfo;
@@ -81,7 +82,7 @@
         this(context, null);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public DateTimeView(Context context, AttributeSet attrs) {
         super(context, attrs);
         final TypedArray a = context.obtainStyledAttributes(attrs,
diff --git a/core/java/android/widget/EdgeEffect.java b/core/java/android/widget/EdgeEffect.java
index 32f3acd..c10ffbe 100644
--- a/core/java/android/widget/EdgeEffect.java
+++ b/core/java/android/widget/EdgeEffect.java
@@ -87,7 +87,7 @@
     private static final float RADIUS_FACTOR = 0.6f;
 
     private float mGlowAlpha;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private float mGlowScaleY;
 
     private float mGlowAlphaStart;
diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java
index 07a721f..0eed7b6 100644
--- a/core/java/android/widget/Editor.java
+++ b/core/java/android/widget/Editor.java
@@ -308,7 +308,7 @@
     private boolean mShowErrorAfterAttach;
 
     boolean mInBatchEditControllers;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     boolean mShowSoftInputOnFocus = true;
     private boolean mPreserveSelection;
     private boolean mRestartActionModeOnNextRefresh;
@@ -340,7 +340,7 @@
     Callback mCustomInsertionActionModeCallback;
 
     // Set when this TextView gained focus with some text selected. Will start selection mode.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     boolean mCreatedWithASelection;
 
     // The button state as of the last time #onTouchEvent is called.
diff --git a/core/java/android/widget/FastScroller.java b/core/java/android/widget/FastScroller.java
index 0c0b349..7dbe7b2 100644
--- a/core/java/android/widget/FastScroller.java
+++ b/core/java/android/widget/FastScroller.java
@@ -140,7 +140,7 @@
 
     @UnsupportedAppUsage
     private Drawable mThumbDrawable;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private Drawable mTrackDrawable;
     private int mTextAppearance;
     private int mThumbPosition;
diff --git a/core/java/android/widget/GridLayout.java b/core/java/android/widget/GridLayout.java
index f132197..aa51d2c 100644
--- a/core/java/android/widget/GridLayout.java
+++ b/core/java/android/widget/GridLayout.java
@@ -38,6 +38,7 @@
 import android.graphics.Color;
 import android.graphics.Insets;
 import android.graphics.Paint;
+import android.os.Build;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.util.LogPrinter;
@@ -2814,7 +2815,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     static final Alignment UNDEFINED_ALIGNMENT = new Alignment() {
         @Override
         int getGravityOffset(View view, int cellDelta) {
diff --git a/core/java/android/widget/GridView.java b/core/java/android/widget/GridView.java
index 4a5e95e..196d68b 100644
--- a/core/java/android/widget/GridView.java
+++ b/core/java/android/widget/GridView.java
@@ -979,7 +979,7 @@
         return sel;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private boolean determineColumns(int availableSpace) {
         final int requestedHorizontalSpacing = mRequestedHorizontalSpacing;
         final int stretchMode = mStretchMode;
diff --git a/core/java/android/widget/HorizontalScrollView.java b/core/java/android/widget/HorizontalScrollView.java
index 3bb39c1..97dbb154 100644
--- a/core/java/android/widget/HorizontalScrollView.java
+++ b/core/java/android/widget/HorizontalScrollView.java
@@ -150,9 +150,9 @@
     private int mMinimumVelocity;
     private int mMaximumVelocity;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mOverscrollDistance;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mOverflingDistance;
 
     private float mHorizontalScrollFactor;
diff --git a/core/java/android/widget/ImageView.java b/core/java/android/widget/ImageView.java
index c2077384..e4de400 100644
--- a/core/java/android/widget/ImageView.java
+++ b/core/java/android/widget/ImageView.java
@@ -127,7 +127,7 @@
 
     @UnsupportedAppUsage
     private Drawable mDrawable = null;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private BitmapDrawable mRecycleableBitmapDrawable = null;
     private ColorStateList mDrawableTintList = null;
     private BlendMode mDrawableBlendMode = null;
diff --git a/core/java/android/widget/LinearLayout.java b/core/java/android/widget/LinearLayout.java
index a796ba5..fa84407 100644
--- a/core/java/android/widget/LinearLayout.java
+++ b/core/java/android/widget/LinearLayout.java
@@ -212,9 +212,9 @@
     private static final int VERTICAL_GRAVITY_COUNT = 4;
 
     private static final int INDEX_CENTER_VERTICAL = 0;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final int INDEX_TOP = 1;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final int INDEX_BOTTOM = 2;
     private static final int INDEX_FILL = 3;
 
diff --git a/core/java/android/widget/ListPopupWindow.java b/core/java/android/widget/ListPopupWindow.java
index 4311ffb..6232480 100755
--- a/core/java/android/widget/ListPopupWindow.java
+++ b/core/java/android/widget/ListPopupWindow.java
@@ -332,7 +332,7 @@
      *
      * @hide Only used by AutoCompleteTextView under special conditions.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setDropDownAlwaysVisible(boolean dropDownAlwaysVisible) {
         mDropDownAlwaysVisible = dropDownAlwaysVisible;
     }
@@ -342,7 +342,7 @@
      *
      * @hide Only used by AutoCompleteTextView under special conditions.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isDropDownAlwaysVisible() {
         return mDropDownAlwaysVisible;
     }
@@ -933,7 +933,7 @@
      *
      * @param max Max number of items that can be visible and still allow the list to expand.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     void setListItemExpandMax(int max) {
         mListItemExpandMaximum = max;
     }
@@ -1130,7 +1130,7 @@
      *
      * @return the content's height or -1 if content already exists
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int buildDropDown() {
         ViewGroup dropDownView;
         int otherHeights = 0;
diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java
index 3c3daa3..cf0e0d1 100644
--- a/core/java/android/widget/ListView.java
+++ b/core/java/android/widget/ListView.java
@@ -1979,7 +1979,7 @@
     }
 
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     boolean trackMotionScroll(int deltaY, int incrementalDeltaY) {
         final boolean result = super.trackMotionScroll(deltaY, incrementalDeltaY);
         removeUnusedFixedViews(mHeaderViewInfos);
@@ -4028,7 +4028,7 @@
     }
 
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     int getHeightForPosition(int position) {
         final int height = super.getHeightForPosition(position);
         if (shouldAdjustHeightForDivider(position)) {
diff --git a/core/java/android/widget/NumberPicker.java b/core/java/android/widget/NumberPicker.java
index 8dfb936..7c20472 100644
--- a/core/java/android/widget/NumberPicker.java
+++ b/core/java/android/widget/NumberPicker.java
@@ -250,7 +250,7 @@
     /**
      * The min height of this widget.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final int mMinHeight;
 
     /**
@@ -261,7 +261,7 @@
     /**
      * The max width of this widget.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final int mMinWidth;
 
     /**
@@ -277,7 +277,7 @@
     /**
      * The height of the text.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final int mTextSize;
 
     /**
@@ -298,7 +298,7 @@
     /**
      * Upper value of the range of numbers allowed for the NumberPicker
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mMaxValue;
 
     /**
@@ -309,7 +309,7 @@
     /**
      * Listener to be notified upon current value change.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private OnValueChangeListener mOnValueChangeListener;
 
     /**
@@ -367,7 +367,7 @@
     /**
      * The {@link Scroller} responsible for flinging the selector.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final Scroller mFlingScroller;
 
     /**
@@ -429,7 +429,7 @@
     /**
      * @see ViewConfiguration#getScaledMaximumFlingVelocity()
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mMaximumFlingVelocity;
 
     /**
diff --git a/core/java/android/widget/OverScroller.java b/core/java/android/widget/OverScroller.java
index 1c33d80..27fcde2 100644
--- a/core/java/android/widget/OverScroller.java
+++ b/core/java/android/widget/OverScroller.java
@@ -19,6 +19,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.hardware.SensorManager;
+import android.os.Build;
 import android.util.Log;
 import android.view.ViewConfiguration;
 import android.view.animation.AnimationUtils;
@@ -36,7 +37,7 @@
     @UnsupportedAppUsage
     private final SplineOverScroller mScrollerY;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private Interpolator mInterpolator;
 
     private final boolean mFlywheel;
diff --git a/core/java/android/widget/PopupMenu.java b/core/java/android/widget/PopupMenu.java
index 0ce9646..2aa5875 100644
--- a/core/java/android/widget/PopupMenu.java
+++ b/core/java/android/widget/PopupMenu.java
@@ -20,6 +20,7 @@
 import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
+import android.os.Build;
 import android.view.Gravity;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -40,7 +41,7 @@
  * it.
  */
 public class PopupMenu {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final Context mContext;
     private final MenuBuilder mMenu;
     private final View mAnchor;
diff --git a/core/java/android/widget/PopupWindow.java b/core/java/android/widget/PopupWindow.java
index cc3d744..e7e148a 100644
--- a/core/java/android/widget/PopupWindow.java
+++ b/core/java/android/widget/PopupWindow.java
@@ -183,7 +183,7 @@
     private boolean mClipToScreen;
     private boolean mAllowScrollingAnchorParent = true;
     private boolean mLayoutInsetDecor = false;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private boolean mNotTouchModal;
     private boolean mAttachedInDecor = true;
     private boolean mAttachedInDecorSet = false;
diff --git a/core/java/android/widget/ProgressBar.java b/core/java/android/widget/ProgressBar.java
index 4b32e10..8de9149 100644
--- a/core/java/android/widget/ProgressBar.java
+++ b/core/java/android/widget/ProgressBar.java
@@ -238,7 +238,7 @@
     /** Value used to track progress animation, in the range [0...1]. */
     private float mVisualProgress;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     boolean mMirrorForRtl = false;
 
     private boolean mAggregatedIsVisible;
@@ -1663,7 +1663,7 @@
         // Stub method.
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private synchronized void refreshProgress(int id, int progress, boolean fromUser,
             boolean animate) {
         if (mUiThreadId == Thread.currentThread().getId()) {
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java
index 7016c5c..99cd270 100644
--- a/core/java/android/widget/RemoteViews.java
+++ b/core/java/android/widget/RemoteViews.java
@@ -260,7 +260,7 @@
      * RemoteViews.
      */
     private RemoteViews mLandscape = null;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private RemoteViews mPortrait = null;
 
     @ApplyFlags
@@ -438,7 +438,7 @@
             // Do nothing
         }
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public int mergeBehavior() {
             return MERGE_REPLACE;
         }
@@ -507,7 +507,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void mergeRemoteViews(RemoteViews newRv) {
         if (newRv == null) return;
         // We first copy the new RemoteViews, as the process of merging modifies the way the actions
@@ -699,7 +699,7 @@
             return SET_PENDING_INTENT_TEMPLATE_TAG;
         }
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         PendingIntent pendingIntentTemplate;
     }
 
@@ -1147,7 +1147,7 @@
 
     private static class BitmapCache {
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         ArrayList<Bitmap> mBitmaps;
         int mBitmapMemory = -1;
 
@@ -1563,7 +1563,7 @@
      * ViewGroup methods that are related to adding Views.
      */
     private class ViewGroupActionAdd extends Action {
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private RemoteViews mNestedViews;
         private int mIndex;
 
@@ -2478,7 +2478,7 @@
      * Returns an estimate of the bitmap heap memory usage for this RemoteViews.
      */
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int estimateMemoryUsage() {
         return mBitmapCache.getBitmapMemory();
     }
@@ -3003,7 +3003,7 @@
      * @hide
      * @deprecated this appears to have no users outside of UnsupportedAppUsage?
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @Deprecated
     public void setRemoteAdapter(int viewId, ArrayList<RemoteViews> list, int viewTypeCount) {
         addAction(new SetRemoteViewsAdapterList(viewId, list, viewTypeCount));
diff --git a/core/java/android/widget/RemoteViewsAdapter.java b/core/java/android/widget/RemoteViewsAdapter.java
index e58f08a..a3858c8 100644
--- a/core/java/android/widget/RemoteViewsAdapter.java
+++ b/core/java/android/widget/RemoteViewsAdapter.java
@@ -31,6 +31,7 @@
 import android.content.pm.ActivityInfo;
 import android.content.pm.ApplicationInfo;
 import android.content.res.Configuration;
+import android.os.Build;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.IBinder;
@@ -106,7 +107,7 @@
     private final Executor mAsyncViewLoadExecutor;
 
     private OnClickHandler mRemoteViewsOnClickHandler;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final FixedSizeRemoteViewsCache mCache;
     private int mVisibleWindowLowerBound;
     private int mVisibleWindowUpperBound;
@@ -115,7 +116,7 @@
     // loaded.
     private RemoteViewsFrameLayoutRefSet mRequestedViews;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final HandlerThread mWorkerThread;
     // items may be interrupted within the normally processed queues
     private final Handler mMainHandler;
@@ -895,17 +896,17 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isDataReady() {
         return mDataReady;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setRemoteViewsOnClickHandler(OnClickHandler handler) {
         mRemoteViewsOnClickHandler = handler;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void saveRemoteViewsCache() {
         final RemoteViewsCacheKey key = new RemoteViewsCacheKey(
                 new Intent.FilterComparison(mIntent), mAppWidgetId);
@@ -1050,7 +1051,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Intent getRemoteViewsServiceIntent() {
         return mIntent;
     }
@@ -1097,7 +1098,7 @@
      * views are currently being displayed. This allows for certain optimizations and preloading
      * which  wouldn't otherwise be possible.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setVisibleRangeHint(int lowerBound, int upperBound) {
         mVisibleWindowLowerBound = lowerBound;
         mVisibleWindowUpperBound = upperBound;
diff --git a/core/java/android/widget/ScrollView.java b/core/java/android/widget/ScrollView.java
index b44b8c2..f3de982 100644
--- a/core/java/android/widget/ScrollView.java
+++ b/core/java/android/widget/ScrollView.java
@@ -188,7 +188,7 @@
      * These are no-ops on user builds.
      */
     private StrictMode.Span mScrollStrictSpan = null;  // aka "drag"
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private StrictMode.Span mFlingStrictSpan = null;
 
     /**
diff --git a/core/java/android/widget/SearchView.java b/core/java/android/widget/SearchView.java
index 6ef570c..e246288 100755
--- a/core/java/android/widget/SearchView.java
+++ b/core/java/android/widget/SearchView.java
@@ -1938,7 +1938,7 @@
             mThreshold = getThreshold();
         }
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public SearchAutoComplete(Context context, AttributeSet attrs) {
             super(context, attrs);
             mThreshold = getThreshold();
diff --git a/core/java/android/widget/SeekBar.java b/core/java/android/widget/SeekBar.java
index 5676881..201cab1 100644
--- a/core/java/android/widget/SeekBar.java
+++ b/core/java/android/widget/SeekBar.java
@@ -18,6 +18,7 @@
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
+import android.os.Build;
 import android.util.AttributeSet;
 import android.view.accessibility.AccessibilityNodeInfo;
 
@@ -90,7 +91,7 @@
     }
 
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     void onProgressRefresh(float scale, boolean fromUser, int progress) {
         super.onProgressRefresh(scale, fromUser, progress);
 
diff --git a/core/java/android/widget/Spinner.java b/core/java/android/widget/Spinner.java
index 46fc09f..ba6fa19 100644
--- a/core/java/android/widget/Spinner.java
+++ b/core/java/android/widget/Spinner.java
@@ -1082,7 +1082,7 @@
         /**
          * @return true if the popup is showing, false otherwise.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public boolean isShowing();
 
         /**
@@ -1113,7 +1113,7 @@
             }
         }
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public boolean isShowing() {
             return mPopup != null ? mPopup.isShowing() : false;
         }
diff --git a/core/java/android/widget/Switch.java b/core/java/android/widget/Switch.java
index e1fd776..8c8172e 100644
--- a/core/java/android/widget/Switch.java
+++ b/core/java/android/widget/Switch.java
@@ -35,6 +35,7 @@
 import android.graphics.Region.Op;
 import android.graphics.Typeface;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.os.Build.VERSION_CODES;
 import android.text.Layout;
 import android.text.StaticLayout;
@@ -110,7 +111,7 @@
     private boolean mHasTrackTintMode = false;
 
     private int mThumbTextPadding;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mSwitchMinWidth;
     private int mSwitchPadding;
     private boolean mSplitTrack;
diff --git a/core/java/android/widget/TextClock.java b/core/java/android/widget/TextClock.java
index 95c0e86..b1485ef 100644
--- a/core/java/android/widget/TextClock.java
+++ b/core/java/android/widget/TextClock.java
@@ -32,6 +32,7 @@
 import android.database.ContentObserver;
 import android.icu.text.DateTimePatternGenerator;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Handler;
 import android.os.SystemClock;
 import android.os.UserHandle;
@@ -494,7 +495,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public CharSequence getFormat() {
         return mFormat;
     }
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index f2bc89e..c617ccc 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -4319,7 +4319,7 @@
                 shouldRequestLayout);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void setRawTextSize(float size, boolean shouldRequestLayout) {
         if (size != mTextPaint.getTextSize()) {
             mTextPaint.setTextSize(size);
@@ -7823,7 +7823,7 @@
         return drawableState;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private Path getUpdatedHighlightPath() {
         Path highlight = null;
         Paint highlightPaint = mHighlightPaint;
@@ -12228,7 +12228,7 @@
      *         be {@code null} if no text is set
      */
     @Nullable
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private CharSequence getTextForAccessibility() {
         // If the text is empty, we must be showing the hint text.
         if (TextUtils.isEmpty(mText)) {
@@ -12370,7 +12370,7 @@
         return false;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     CharSequence getTransformedText(int start, int end) {
         return removeSuggestionSpans(mTransformed.subSequence(start, end));
     }
@@ -12880,7 +12880,7 @@
         return x;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     int getLineAtCoordinate(float y) {
         y -= getTotalPaddingTop();
         // Clamp the position to inside of the view.
@@ -13069,7 +13069,7 @@
      * Deletes the range of text [start, end[.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected void deleteText_internal(int start, int end) {
         ((Editable) mText).delete(start, end);
     }
@@ -13121,7 +13121,7 @@
      * @hide
      */
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public CharSequence getIterableTextForAccessibility() {
         return mText;
     }
diff --git a/core/java/android/widget/ViewAnimator.java b/core/java/android/widget/ViewAnimator.java
index 90f61ca..3f8325a 100644
--- a/core/java/android/widget/ViewAnimator.java
+++ b/core/java/android/widget/ViewAnimator.java
@@ -21,6 +21,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.res.TypedArray;
+import android.os.Build;
 import android.util.AttributeSet;
 import android.view.View;
 import android.view.ViewGroup;
@@ -156,7 +157,7 @@
      * @param animate Whether or not to use the in and out animations, defaults
      *            to true.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     void showOnly(int childIndex, boolean animate) {
         final int count = getChildCount();
         for (int i = 0; i < count; i++) {
diff --git a/core/java/android/widget/ViewFlipper.java b/core/java/android/widget/ViewFlipper.java
index 2df9a78..5abb6e1 100644
--- a/core/java/android/widget/ViewFlipper.java
+++ b/core/java/android/widget/ViewFlipper.java
@@ -23,6 +23,7 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.res.TypedArray;
+import android.os.Build;
 import android.os.Message;
 import android.util.AttributeSet;
 import android.util.Log;
@@ -183,7 +184,7 @@
      *            addition to queuing future flips. If omitted, defaults to
      *            true.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void updateRunning(boolean flipNow) {
         boolean running = mVisible && mStarted && mUserPresent;
         if (running != mRunning) {
diff --git a/core/java/com/android/ims/internal/uce/common/CapInfo.java b/core/java/com/android/ims/internal/uce/common/CapInfo.java
index a7a90f6..bca647a 100644
--- a/core/java/com/android/ims/internal/uce/common/CapInfo.java
+++ b/core/java/com/android/ims/internal/uce/common/CapInfo.java
@@ -17,6 +17,7 @@
 package com.android.ims.internal.uce.common;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -91,7 +92,7 @@
     /**
      * Constructor for the CapInfo class.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public CapInfo() {
     };
 
@@ -99,7 +100,7 @@
     /**
      * Checks whether IM is supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isImSupported() {
         return mImSupported;
     }
@@ -107,7 +108,7 @@
     /**
      * Sets IM as supported or not supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setImSupported(boolean imSupported) {
         this.mImSupported = imSupported;
     }
@@ -115,7 +116,7 @@
     /**
      * Checks whether FT Thumbnail is supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isFtThumbSupported() {
         return mFtThumbSupported;
     }
@@ -123,7 +124,7 @@
     /**
      * Sets FT thumbnail as supported or not supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setFtThumbSupported(boolean ftThumbSupported) {
         this.mFtThumbSupported = ftThumbSupported;
     }
@@ -133,7 +134,7 @@
     /**
      * Checks whether FT Store and Forward is supported
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isFtSnFSupported() {
         return  mFtSnFSupported;
     }
@@ -141,7 +142,7 @@
     /**
      * Sets FT Store and Forward as supported or not supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setFtSnFSupported(boolean  ftSnFSupported) {
         this.mFtSnFSupported =  ftSnFSupported;
     }
@@ -149,7 +150,7 @@
    /**
     * Checks whether File transfer HTTP is supported.
     */
-   @UnsupportedAppUsage
+   @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
    public boolean isFtHttpSupported() {
        return  mFtHttpSupported;
    }
@@ -157,7 +158,7 @@
    /**
     * Sets File transfer HTTP as supported or not supported.
     */
-   @UnsupportedAppUsage
+   @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
    public void setFtHttpSupported(boolean  ftHttpSupported) {
        this.mFtHttpSupported =  ftHttpSupported;
    }
@@ -165,7 +166,7 @@
     /**
      * Checks whether FT is supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isFtSupported() {
         return mFtSupported;
     }
@@ -173,7 +174,7 @@
     /**
      * Sets FT as supported or not supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setFtSupported(boolean ftSupported) {
         this.mFtSupported = ftSupported;
     }
@@ -181,7 +182,7 @@
     /**
      * Checks whether IS is supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isIsSupported() {
         return mIsSupported;
     }
@@ -189,7 +190,7 @@
     /**
      * Sets IS as supported or not supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setIsSupported(boolean isSupported) {
         this.mIsSupported = isSupported;
     }
@@ -197,7 +198,7 @@
     /**
      * Checks whether video sharing is supported during a CS call.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isVsDuringCSSupported() {
         return mVsDuringCSSupported;
     }
@@ -206,7 +207,7 @@
      *  Sets video sharing as supported or not supported during a CS
      *  call.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setVsDuringCSSupported(boolean vsDuringCSSupported) {
         this.mVsDuringCSSupported = vsDuringCSSupported;
     }
@@ -215,7 +216,7 @@
      *  Checks whether video sharing outside a voice call is
      *   supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isVsSupported() {
         return mVsSupported;
     }
@@ -223,7 +224,7 @@
     /**
      * Sets video sharing as supported or not supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setVsSupported(boolean vsSupported) {
         this.mVsSupported = vsSupported;
     }
@@ -231,7 +232,7 @@
     /**
      * Checks whether social presence is supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isSpSupported() {
         return mSpSupported;
     }
@@ -239,7 +240,7 @@
     /**
      * Sets social presence as supported or not supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setSpSupported(boolean spSupported) {
         this.mSpSupported = spSupported;
     }
@@ -248,7 +249,7 @@
      * Checks whether capability discovery via presence is
      * supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isCdViaPresenceSupported() {
         return mCdViaPresenceSupported;
     }
@@ -257,7 +258,7 @@
      * Sets capability discovery via presence as supported or not
      * supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setCdViaPresenceSupported(boolean cdViaPresenceSupported) {
         this.mCdViaPresenceSupported = cdViaPresenceSupported;
     }
@@ -265,7 +266,7 @@
     /**
      * Checks whether IP voice call is supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isIpVoiceSupported() {
         return mIpVoiceSupported;
     }
@@ -273,7 +274,7 @@
     /**
      * Sets IP voice call as supported or not supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setIpVoiceSupported(boolean ipVoiceSupported) {
         this.mIpVoiceSupported = ipVoiceSupported;
     }
@@ -281,7 +282,7 @@
     /**
      * Checks whether IP video call is supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isIpVideoSupported() {
         return mIpVideoSupported;
     }
@@ -289,7 +290,7 @@
     /**
      * Sets IP video call as supported or not supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setIpVideoSupported(boolean ipVideoSupported) {
         this.mIpVideoSupported = ipVideoSupported;
     }
@@ -298,7 +299,7 @@
     * Checks whether Geo location Pull using File Transfer is
     * supported.
     */
-   @UnsupportedAppUsage
+   @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
    public boolean isGeoPullFtSupported() {
        return mGeoPullFtSupported;
    }
@@ -307,7 +308,7 @@
     * Sets Geo location Pull using File Transfer as supported or
     * not supported.
     */
-   @UnsupportedAppUsage
+   @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
    public void setGeoPullFtSupported(boolean geoPullFtSupported) {
        this.mGeoPullFtSupported = geoPullFtSupported;
    }
@@ -315,7 +316,7 @@
     /**
      * Checks whether Geo Pull is supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isGeoPullSupported() {
         return mGeoPullSupported;
     }
@@ -323,7 +324,7 @@
     /**
      * Sets Geo Pull as supported or not supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setGeoPullSupported(boolean geoPullSupported) {
         this.mGeoPullSupported = geoPullSupported;
     }
@@ -331,7 +332,7 @@
     /**
      * Checks whether Geo Push is supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isGeoPushSupported() {
         return mGeoPushSupported;
     }
@@ -339,7 +340,7 @@
     /**
      * Sets Geo Push as supported or not supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setGeoPushSupported(boolean geoPushSupported) {
         this.mGeoPushSupported = geoPushSupported;
     }
@@ -347,7 +348,7 @@
     /**
      * Checks whether short messaging is supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isSmSupported() {
         return mSmSupported;
     }
@@ -355,7 +356,7 @@
     /**
      * Sets short messaging as supported or not supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setSmSupported(boolean smSupported) {
         this.mSmSupported = smSupported;
     }
@@ -363,22 +364,22 @@
     /**
      * Checks whether store/forward and group chat are supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isFullSnFGroupChatSupported() {
         return mFullSnFGroupChatSupported;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isRcsIpVoiceCallSupported() {
         return mRcsIpVoiceCallSupported;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isRcsIpVideoCallSupported() {
         return mRcsIpVideoCallSupported;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isRcsIpVideoOnlyCallSupported() {
         return mRcsIpVideoOnlyCallSupported;
     }
@@ -386,20 +387,20 @@
     /**
      * Sets store/forward and group chat supported or not supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setFullSnFGroupChatSupported(boolean fullSnFGroupChatSupported) {
         this.mFullSnFGroupChatSupported = fullSnFGroupChatSupported;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setRcsIpVoiceCallSupported(boolean rcsIpVoiceCallSupported) {
         this.mRcsIpVoiceCallSupported = rcsIpVoiceCallSupported;
     }
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setRcsIpVideoCallSupported(boolean rcsIpVideoCallSupported) {
         this.mRcsIpVideoCallSupported = rcsIpVideoCallSupported;
     }
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setRcsIpVideoOnlyCallSupported(boolean rcsIpVideoOnlyCallSupported) {
         this.mRcsIpVideoOnlyCallSupported = rcsIpVideoOnlyCallSupported;
     }
@@ -536,20 +537,20 @@
     }
 
     /** Sets the list of supported extensions. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setExts(String[] exts) {
         this.mExts = exts;
     }
 
 
     /** Gets the time stamp for when to query again. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public long getCapTimestamp() {
         return mCapTimestamp;
     }
 
     /** Sets the time stamp for when to query again. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setCapTimestamp(long capTimestamp) {
         this.mCapTimestamp = capTimestamp;
     }
diff --git a/core/java/com/android/ims/internal/uce/common/StatusCode.java b/core/java/com/android/ims/internal/uce/common/StatusCode.java
index 7f69493..847792f 100644
--- a/core/java/com/android/ims/internal/uce/common/StatusCode.java
+++ b/core/java/com/android/ims/internal/uce/common/StatusCode.java
@@ -17,6 +17,7 @@
 package com.android.ims.internal.uce.common;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -75,14 +76,14 @@
      * Constructor for the StatusCode class.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public StatusCode() {}
 
     /**
      *  Gets the status code.
      *  @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getStatusCode() {
         return mStatusCode;
     }
@@ -91,7 +92,7 @@
      *  Sets the status code.
      *  @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setStatusCode(int nStatusCode) {
         this.mStatusCode = nStatusCode;
     }
diff --git a/core/java/com/android/ims/internal/uce/common/UceLong.java b/core/java/com/android/ims/internal/uce/common/UceLong.java
index bf51447..d878c10 100644
--- a/core/java/com/android/ims/internal/uce/common/UceLong.java
+++ b/core/java/com/android/ims/internal/uce/common/UceLong.java
@@ -17,6 +17,7 @@
 package com.android.ims.internal.uce.common;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -32,7 +33,7 @@
      * Constructor for the UceLong class.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public UceLong() {
     };
 
@@ -40,7 +41,7 @@
      * Gets the long value.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public long getUceLong() {
         return mUceLong;
     }
@@ -49,7 +50,7 @@
      * Sets the long value.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setUceLong(long uceLong) {
         this.mUceLong = uceLong;
     }
@@ -57,7 +58,7 @@
     /** Get the client ID as integer value.
      *  @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getClientId() {
         return mClientId;
     }
@@ -66,7 +67,7 @@
      * Set the client ID as integer value.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setClientId(int nClientId) {
         this.mClientId = nClientId;
     }
diff --git a/core/java/com/android/ims/internal/uce/options/IOptionsListener.aidl b/core/java/com/android/ims/internal/uce/options/IOptionsListener.aidl
index c69d5a9..62897c7 100644
--- a/core/java/com/android/ims/internal/uce/options/IOptionsListener.aidl
+++ b/core/java/com/android/ims/internal/uce/options/IOptionsListener.aidl
@@ -29,7 +29,7 @@
      * @param version, version information of the service.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void getVersionCb(in String version );
 
     /**
@@ -38,7 +38,7 @@
      * @param statusCode, UCE_SUCCESS as service availability.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void serviceAvailable(in StatusCode statusCode);
 
     /**
@@ -47,7 +47,7 @@
      * @param statusCode, UCE_SUCCESS as service unavailability.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void serviceUnavailable(in StatusCode statusCode);
 
     /**
@@ -58,7 +58,7 @@
      * @param capInfo, capabilities of the remote entity received.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void sipResponseReceived( String uri,
                                 in OptionsSipResponse sipResponse, in OptionsCapInfo capInfo);
 
@@ -67,7 +67,7 @@
      * @param cmdStatus, command status of the request placed.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void cmdStatus(in OptionsCmdStatus cmdStatus);
 
     /**
@@ -78,7 +78,7 @@
      * @param tID, transation of the request received from network.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void incomingOptions( String uri, in OptionsCapInfo capInfo,
                                             in int tID);
 }
diff --git a/core/java/com/android/ims/internal/uce/options/IOptionsService.aidl b/core/java/com/android/ims/internal/uce/options/IOptionsService.aidl
index 2e49082..a7487b8 100644
--- a/core/java/com/android/ims/internal/uce/options/IOptionsService.aidl
+++ b/core/java/com/android/ims/internal/uce/options/IOptionsService.aidl
@@ -33,7 +33,7 @@
      * @return StatusCode, status of the request placed.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     StatusCode getVersion(int optionsServiceHandle);
 
     /**
@@ -45,7 +45,7 @@
      * The service will fill UceLong.mUceLong with optionsServiceListenerHdl
      * @return StatusCode, status of the request placed.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     StatusCode addListener(int optionsServiceHandle, IOptionsListener optionsListener,
                            inout UceLong optionsServiceListenerHdl);
 
@@ -56,7 +56,7 @@
      * @param optionsServiceListenerHdl provided in createOptionsService() or Addlistener().
      * @return StatusCode, status of the request placed.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     StatusCode removeListener(int optionsServiceHandle, in UceLong optionsServiceListenerHdl);
 
     /**
@@ -69,7 +69,7 @@
      *                  with original request.
      * @return StatusCode, status of the request placed.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     StatusCode setMyInfo(int optionsServiceHandle , in CapInfo capInfo, int reqUserData);
 
 
@@ -82,7 +82,7 @@
      *                  with original request.
      * @return StatusCode, status of the request placed.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     StatusCode getMyInfo(int optionsServiceHandle , int reqUserdata);
 
     /**
@@ -95,7 +95,7 @@
      *                  with original request.
      * @return StatusCode, status of the request placed.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     StatusCode getContactCap(int optionsServiceHandle , String remoteURI, int reqUserData);
 
 
@@ -109,7 +109,7 @@
      *                  with original request.
      * @return StatusCode, status of the request placed.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     StatusCode getContactListCap(int optionsServiceHandle, in String[] remoteURIList,
                                  int reqUserData);
 
@@ -126,7 +126,7 @@
      * @param bContactInBL, true if the contact is blacklisted, else false.
      * @return StatusCode, status of the request placed.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     StatusCode responseIncomingOptions(int optionsServiceHandle,  int tId, int sipResponseCode,
                                        String reasonPhrase, in OptionsCapInfo capInfo,
                                        in boolean bContactInBL);
diff --git a/core/java/com/android/ims/internal/uce/options/OptionsCapInfo.java b/core/java/com/android/ims/internal/uce/options/OptionsCapInfo.java
index 1da5a24..6f83bf3 100644
--- a/core/java/com/android/ims/internal/uce/options/OptionsCapInfo.java
+++ b/core/java/com/android/ims/internal/uce/options/OptionsCapInfo.java
@@ -16,6 +16,7 @@
 package com.android.ims.internal.uce.options;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -31,12 +32,12 @@
         return new OptionsCapInfo();
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public String getSdp() {
         return mSdp;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setSdp(String sdp) {
         this.mSdp = sdp;
     }
@@ -44,19 +45,19 @@
     /**
      * Constructor for the OptionsCapInfo class.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public OptionsCapInfo() {
         mCapInfo = new CapInfo();
     };
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public CapInfo getCapInfo() {
         return mCapInfo;
     }
     /**
      * Sets the CapInfo
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setCapInfo(CapInfo capInfo) {
         this.mCapInfo = capInfo;
     }
diff --git a/core/java/com/android/ims/internal/uce/options/OptionsCmdId.java b/core/java/com/android/ims/internal/uce/options/OptionsCmdId.java
index 401ca2f..82eb1b5 100644
--- a/core/java/com/android/ims/internal/uce/options/OptionsCmdId.java
+++ b/core/java/com/android/ims/internal/uce/options/OptionsCmdId.java
@@ -18,6 +18,7 @@
 
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -56,7 +57,7 @@
      * Sets the command ID.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setCmdId(int nCmdId) {
         this.mCmdId = nCmdId;
     }
@@ -65,7 +66,7 @@
      * Constructor for the OptionsCDCmdId class.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public OptionsCmdId(){};
 
     /** @hide */
diff --git a/core/java/com/android/ims/internal/uce/options/OptionsCmdStatus.java b/core/java/com/android/ims/internal/uce/options/OptionsCmdStatus.java
index 70a7a84..461f8bf 100644
--- a/core/java/com/android/ims/internal/uce/options/OptionsCmdStatus.java
+++ b/core/java/com/android/ims/internal/uce/options/OptionsCmdStatus.java
@@ -17,6 +17,7 @@
 package com.android.ims.internal.uce.options;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -42,7 +43,7 @@
      * Sets the command ID.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setCmdId(OptionsCmdId cmdId) {
         this.mCmdId = cmdId;
     }
@@ -58,7 +59,7 @@
     /**
        Sets the user data.
        @hide  */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setUserData(int userData) {
         this.mUserData = userData;
     }
@@ -75,7 +76,7 @@
      * Sets the status code.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setStatus(StatusCode status) {
         this.mStatus = status;
     }
@@ -84,7 +85,7 @@
      * Constructor for the OptionsCmdStatus class.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public OptionsCmdStatus() {
         mStatus = new StatusCode();
         mCapInfo = new CapInfo();
@@ -101,7 +102,7 @@
      * Sets the CapInfo
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setCapInfo(CapInfo capInfo) {
         this.mCapInfo = capInfo;
     }
diff --git a/core/java/com/android/ims/internal/uce/options/OptionsSipResponse.java b/core/java/com/android/ims/internal/uce/options/OptionsSipResponse.java
index 5afddf0..acea0f0 100644
--- a/core/java/com/android/ims/internal/uce/options/OptionsSipResponse.java
+++ b/core/java/com/android/ims/internal/uce/options/OptionsSipResponse.java
@@ -17,6 +17,7 @@
 package com.android.ims.internal.uce.options;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -42,7 +43,7 @@
      * Sets the Options command ID.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setCmdId(OptionsCmdId cmdId) {
         this.mCmdId = cmdId;
     }
@@ -59,7 +60,7 @@
      * Sets the request ID
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setRequestId(int requestId) {
         this.mRequestId = requestId;
     }
@@ -76,7 +77,7 @@
      * Sets the SIP response code.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setSipResponseCode(int sipResponseCode) {
         this.mSipResponseCode = sipResponseCode;
     }
@@ -93,7 +94,7 @@
      * Sets the SIP response code reason phrase.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setReasonPhrase(String reasonPhrase) {
         this.mReasonPhrase = reasonPhrase;
     }
@@ -110,7 +111,7 @@
      * Sets the SIP retryAfter sec value
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setRetryAfter(int retryAfter) {
         this.mRetryAfter = retryAfter;
     }
@@ -119,7 +120,7 @@
      * Constructor for the OptionsSipResponse class.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public OptionsSipResponse() {
         mCmdId = new OptionsCmdId();
     };
diff --git a/core/java/com/android/ims/internal/uce/presence/IPresenceListener.aidl b/core/java/com/android/ims/internal/uce/presence/IPresenceListener.aidl
index 65e7fc9..572a5f3 100644
--- a/core/java/com/android/ims/internal/uce/presence/IPresenceListener.aidl
+++ b/core/java/com/android/ims/internal/uce/presence/IPresenceListener.aidl
@@ -36,7 +36,7 @@
      * Gets the version of the presence listener implementation.
      * @param version, version information.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void getVersionCb(in String version );
 
     /**
@@ -44,7 +44,7 @@
      * availability.
      * @param statusCode, UCE_SUCCESS as service availability.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void serviceAvailable(in StatusCode statusCode);
 
     /**
@@ -52,7 +52,7 @@
      * unavailability.
      * @param statusCode, UCE_SUCCESS as service unAvailability.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void serviceUnAvailable(in StatusCode statusCode);
 
     /**
@@ -60,14 +60,14 @@
      * publish request.
      * @param publishTrigger, Publish trigger for the network being supported.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void publishTriggering(in PresPublishTriggerType publishTrigger);
 
     /**
      * Callback function to be invoked to inform the client of the status of an asynchronous call.
      * @param cmdStatus, command status of the request placed.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void cmdStatus( in PresCmdStatus cmdStatus);
 
     /**
@@ -75,7 +75,7 @@
      * such as PUBLISH or SUBSCRIBE, has been received.
      * @param sipResponse, network response received for the request placed.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void sipResponseReceived(in PresSipResponse sipResponse);
 
     /**
@@ -84,7 +84,7 @@
      * @param presentityURI, URI of the remote entity the request was placed.
      * @param tupleInfo, array of capability information remote entity supports.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void capInfoReceived(in String presentityURI,
                          in PresTupleInfo [] tupleInfo);
 
@@ -94,7 +94,7 @@
      * @param rlmiInfo, resource infomation received from network.
      * @param resInfo, array of capabilities received from network for the list of  remore URI.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void listCapInfoReceived(in PresRlmiInfo rlmiInfo,
                              in PresResInfo [] resInfo);
 
@@ -102,7 +102,7 @@
      * Callback function to be invoked to inform the client when Unpublish message
      * is sent to network.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void unpublishMessageSent();
 
 }
\ No newline at end of file
diff --git a/core/java/com/android/ims/internal/uce/presence/IPresenceService.aidl b/core/java/com/android/ims/internal/uce/presence/IPresenceService.aidl
index 26a3e83..de28dfa 100644
--- a/core/java/com/android/ims/internal/uce/presence/IPresenceService.aidl
+++ b/core/java/com/android/ims/internal/uce/presence/IPresenceService.aidl
@@ -33,7 +33,7 @@
      * @param presenceServiceHdl returned in createPresenceService().
      * @return StatusCode, status of the request placed.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     StatusCode getVersion(int presenceServiceHdl);
 
     /**
@@ -46,7 +46,7 @@
      *
      * @return StatusCode, status of the request placed
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     StatusCode addListener(int presenceServiceHdl, IPresenceListener presenceServiceListener,
                            inout UceLong presenceServiceListenerHdl);
 
@@ -56,7 +56,7 @@
      * @param presenceServiceListenerHdl provided in createPresenceService() or Addlistener().
      * @return StatusCode, status of the request placed.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     StatusCode removeListener(int presenceServiceHdl, in UceLong presenceServiceListenerHdl);
 
     /**
@@ -72,7 +72,7 @@
      *                  with original request.
      * @return StatusCode, status of the request placed.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     StatusCode reenableService(int presenceServiceHdl, int userData);
 
     /**
@@ -85,7 +85,7 @@
      *                  with original request.
      * @return StatusCode, status of the request placed.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     StatusCode publishMyCap(int presenceServiceHdl, in PresCapInfo myCapInfo , int userData);
 
     /**
@@ -99,7 +99,7 @@
      *                  with original request.
      * @return StatusCode, status of the request placed.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     StatusCode getContactCap(int presenceServiceHdl , String remoteUri, int userData);
 
     /**
@@ -113,7 +113,7 @@
      *                  with original request.
      * @return StatusCode, status of the request placed.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     StatusCode getContactListCap(int presenceServiceHdl, in String[] remoteUriList, int userData);
 
     /**
@@ -129,7 +129,7 @@
      *                  with original request.
      * @return StatusCode, status of the request placed.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     StatusCode  setNewFeatureTag(int presenceServiceHdl, String featureTag,
                                  in PresServiceInfo serviceInfo, int userData);
 
diff --git a/core/java/com/android/ims/internal/uce/presence/PresCapInfo.java b/core/java/com/android/ims/internal/uce/presence/PresCapInfo.java
index 1a3a028..ec8b6bf 100644
--- a/core/java/com/android/ims/internal/uce/presence/PresCapInfo.java
+++ b/core/java/com/android/ims/internal/uce/presence/PresCapInfo.java
@@ -17,6 +17,7 @@
 package com.android.ims.internal.uce.presence;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -27,14 +28,14 @@
 public class PresCapInfo implements Parcelable {
 
     private CapInfo mCapInfo;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private String mContactUri = "";
 
     /**
      * Gets the UCE capability information.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public CapInfo getCapInfo() {
         return mCapInfo;
     }
@@ -51,7 +52,7 @@
      *  Gets the contact URI.
      *  @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public String getContactUri() {
         return mContactUri;
     }
diff --git a/core/java/com/android/ims/internal/uce/presence/PresCmdId.aidl b/core/java/com/android/ims/internal/uce/presence/PresCmdID.aidl
similarity index 100%
rename from core/java/com/android/ims/internal/uce/presence/PresCmdId.aidl
rename to core/java/com/android/ims/internal/uce/presence/PresCmdID.aidl
diff --git a/core/java/com/android/ims/internal/uce/presence/PresCmdId.java b/core/java/com/android/ims/internal/uce/presence/PresCmdId.java
index fba0c77..9692b42 100644
--- a/core/java/com/android/ims/internal/uce/presence/PresCmdId.java
+++ b/core/java/com/android/ims/internal/uce/presence/PresCmdId.java
@@ -17,6 +17,7 @@
 package com.android.ims.internal.uce.presence;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -58,7 +59,7 @@
      * Sets the command ID.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setCmdId(int nCmdId) {
         this.mCmdId = nCmdId;
     }
@@ -68,7 +69,7 @@
     * Constructor for the PresCmdId class.
     * @hide
     */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public PresCmdId(){};
 
 
diff --git a/core/java/com/android/ims/internal/uce/presence/PresCmdStatus.java b/core/java/com/android/ims/internal/uce/presence/PresCmdStatus.java
index fbc64b8..7e22106 100644
--- a/core/java/com/android/ims/internal/uce/presence/PresCmdStatus.java
+++ b/core/java/com/android/ims/internal/uce/presence/PresCmdStatus.java
@@ -17,6 +17,7 @@
 package com.android.ims.internal.uce.presence;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -43,7 +44,7 @@
      * Sets the command ID.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setCmdId(PresCmdId cmdId) {
         this.mCmdId = cmdId;
     }
@@ -60,7 +61,7 @@
      * Sets the user data.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setUserData(int userData) {
         this.mUserData = userData;
     }
@@ -76,7 +77,7 @@
      * Sets the status code.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setStatus(StatusCode status) {
         this.mStatus = status;
     }
@@ -93,7 +94,7 @@
      * Sets the request ID.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setRequestId(int requestId) {
         this.mRequestId = requestId;
     }
@@ -102,7 +103,7 @@
      * Constructor for the PresCmdStatus class.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public PresCmdStatus() {
         mStatus = new StatusCode();
     };
diff --git a/core/java/com/android/ims/internal/uce/presence/PresPublishTriggerType.java b/core/java/com/android/ims/internal/uce/presence/PresPublishTriggerType.java
index fdff86f..04bbf6c 100644
--- a/core/java/com/android/ims/internal/uce/presence/PresPublishTriggerType.java
+++ b/core/java/com/android/ims/internal/uce/presence/PresPublishTriggerType.java
@@ -17,6 +17,7 @@
 package com.android.ims.internal.uce.presence;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -70,7 +71,7 @@
      * Sets the publish trigger type.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setPublishTrigeerType(int nPublishTriggerType) {
         this.mPublishTriggerType = nPublishTriggerType;
     }
@@ -80,7 +81,7 @@
      * Constructor for the PresPublishTriggerType class.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public PresPublishTriggerType(){};
 
     /** @hide */
diff --git a/core/java/com/android/ims/internal/uce/presence/PresResInfo.java b/core/java/com/android/ims/internal/uce/presence/PresResInfo.java
index af9b056..2f797b4 100644
--- a/core/java/com/android/ims/internal/uce/presence/PresResInfo.java
+++ b/core/java/com/android/ims/internal/uce/presence/PresResInfo.java
@@ -17,6 +17,7 @@
 package com.android.ims.internal.uce.presence;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -39,7 +40,7 @@
      * Sets the Presence service resource instance information.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setInstanceInfo(PresResInstanceInfo instanceInfo) {
         this.mInstanceInfo = instanceInfo;
     }
@@ -56,7 +57,7 @@
      * Sets the resource URI.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setResUri(String resUri) {
         this.mResUri = resUri;
     }
@@ -73,7 +74,7 @@
      * Sets the display name.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setDisplayName(String displayName) {
         this.mDisplayName = displayName;
     }
@@ -83,7 +84,7 @@
     * Constructor for the PresResInstanceInfo class.
     * @hide
     */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public PresResInfo() {
         mInstanceInfo = new PresResInstanceInfo();
     };
diff --git a/core/java/com/android/ims/internal/uce/presence/PresResInstanceInfo.java b/core/java/com/android/ims/internal/uce/presence/PresResInstanceInfo.java
index 9f37251..733c0af 100644
--- a/core/java/com/android/ims/internal/uce/presence/PresResInstanceInfo.java
+++ b/core/java/com/android/ims/internal/uce/presence/PresResInstanceInfo.java
@@ -17,6 +17,7 @@
 package com.android.ims.internal.uce.presence;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -61,7 +62,7 @@
      * Sets the resource instance state.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setResInstanceState(int nResInstanceState) {
         this.mResInstanceState = nResInstanceState;
     }
@@ -78,7 +79,7 @@
      * Sets the resource ID.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setResId(String resourceId) {
         this.mId = resourceId;
     }
@@ -97,7 +98,7 @@
      * code.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setReason(String reason) {
         this.mReason = reason;
     }
@@ -114,7 +115,7 @@
      * Sets the entity URI.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setPresentityUri(String presentityUri) {
         this.mPresentityUri = presentityUri;
     }
@@ -131,7 +132,7 @@
      * Sets the tuple information.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setTupleInfo(PresTupleInfo[] tupleInfo) {
         this.mTupleInfoArray = new PresTupleInfo[tupleInfo.length];
         this.mTupleInfoArray = tupleInfo;
@@ -142,7 +143,7 @@
     * Constructor for the PresResInstanceInfo class.
     * @hide
     */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public PresResInstanceInfo(){
 
     };
diff --git a/core/java/com/android/ims/internal/uce/presence/PresRlmiInfo.java b/core/java/com/android/ims/internal/uce/presence/PresRlmiInfo.java
index 65b9fdb..e33aa13 100644
--- a/core/java/com/android/ims/internal/uce/presence/PresRlmiInfo.java
+++ b/core/java/com/android/ims/internal/uce/presence/PresRlmiInfo.java
@@ -17,6 +17,7 @@
 package com.android.ims.internal.uce.presence;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -61,7 +62,7 @@
      * Sets the URI.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setUri(String uri) {
         this.mUri = uri;
     }
@@ -78,7 +79,7 @@
      * Sets the version.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setVersion(int version) {
         this.mVersion = version;
     }
@@ -95,7 +96,7 @@
      * Sets the RLMI state.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setFullState(boolean fullState) {
         this.mFullState = fullState;
     }
@@ -112,7 +113,7 @@
      * Sets the RLMI list name.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setListName(String listName) {
         this.mListName = listName;
     }
@@ -129,7 +130,7 @@
      * Sets the subscription request ID.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setRequestId(int requestId) {
         this.mRequestId = requestId;
     }
@@ -146,7 +147,7 @@
      * Sets the presence subscription state.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setPresSubscriptionState(PresSubscriptionState presSubscriptionState) {
         this.mPresSubscriptionState = presSubscriptionState;
     }
@@ -163,7 +164,7 @@
      * Sets the presence subscription expiration time.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setSubscriptionExpireTime(int subscriptionExpireTime) {
         this.mSubscriptionExpireTime = subscriptionExpireTime;
     }
@@ -180,7 +181,7 @@
      * Sets the presence subscription terminated reason.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setSubscriptionTerminatedReason(String subscriptionTerminatedReason) {
         this.mSubscriptionTerminatedReason = subscriptionTerminatedReason;
     }
@@ -189,7 +190,7 @@
      * Constructor for the PresTupleInfo class.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public PresRlmiInfo(){};
 
     /** @hide */
diff --git a/core/java/com/android/ims/internal/uce/presence/PresServiceInfo.java b/core/java/com/android/ims/internal/uce/presence/PresServiceInfo.java
index 5eafa0f..aed673e 100644
--- a/core/java/com/android/ims/internal/uce/presence/PresServiceInfo.java
+++ b/core/java/com/android/ims/internal/uce/presence/PresServiceInfo.java
@@ -17,6 +17,7 @@
 package com.android.ims.internal.uce.presence;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -46,7 +47,7 @@
      * Gets the media type.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getMediaType() {
         return mMediaCap;
     }
@@ -63,7 +64,7 @@
      * Gets the service ID.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public String getServiceId() {
         return mServiceID;
     }
@@ -79,7 +80,7 @@
      * Gets the service description.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public String getServiceDesc() {
         return mServiceDesc;
     }
@@ -96,7 +97,7 @@
      * Gets the service version.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public String getServiceVer() {
         return mServiceVer;
     }
diff --git a/core/java/com/android/ims/internal/uce/presence/PresSipResponse.java b/core/java/com/android/ims/internal/uce/presence/PresSipResponse.java
index 45b02f3..9549152 100644
--- a/core/java/com/android/ims/internal/uce/presence/PresSipResponse.java
+++ b/core/java/com/android/ims/internal/uce/presence/PresSipResponse.java
@@ -17,6 +17,7 @@
 package com.android.ims.internal.uce.presence;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -33,7 +34,7 @@
      * Gets the Presence command ID.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public PresCmdId getCmdId() {
         return mCmdId;
     }
@@ -42,7 +43,7 @@
      * Sets the Presence command ID.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setCmdId(PresCmdId cmdId) {
         this.mCmdId = cmdId;
     }
@@ -51,7 +52,7 @@
      * Gets the request ID.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getRequestId() {
         return mRequestId;
     }
@@ -60,7 +61,7 @@
      * Sets the request ID.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setRequestId(int requestId) {
         this.mRequestId = requestId;
     }
@@ -69,7 +70,7 @@
      * Gets the SIP response code.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getSipResponseCode() {
         return mSipResponseCode;
     }
@@ -78,7 +79,7 @@
      * Sets the SIP response code.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setSipResponseCode(int sipResponseCode) {
         this.mSipResponseCode = sipResponseCode;
     }
@@ -89,7 +90,7 @@
      * code.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public String getReasonPhrase() {
         return mReasonPhrase;
     }
@@ -98,7 +99,7 @@
      * Sets the SIP response code reason phrase.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setReasonPhrase(String reasonPhrase) {
         this.mReasonPhrase = reasonPhrase;
     }
@@ -107,7 +108,7 @@
      * Gets the SIP retryAfter sec value.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getRetryAfter() {
         return mRetryAfter;
     }
@@ -116,7 +117,7 @@
      * Sets the SIP retryAfter sec value
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setRetryAfter(int retryAfter) {
         this.mRetryAfter = retryAfter;
     }
@@ -125,7 +126,7 @@
      * Constructor for the PresSipResponse class.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public PresSipResponse(){};
 
     /** @hide */
diff --git a/core/java/com/android/ims/internal/uce/presence/PresSubscriptionState.java b/core/java/com/android/ims/internal/uce/presence/PresSubscriptionState.java
index ab1e17c..85ec396 100644
--- a/core/java/com/android/ims/internal/uce/presence/PresSubscriptionState.java
+++ b/core/java/com/android/ims/internal/uce/presence/PresSubscriptionState.java
@@ -17,6 +17,7 @@
 package com.android.ims.internal.uce.presence;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -78,7 +79,7 @@
      * Constructor for the PresSubscriptionState class.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public PresSubscriptionState() {    };
 
     /**
@@ -94,7 +95,7 @@
      * Sets the Presence subscription state.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setPresSubscriptionState(int nPresSubscriptionState) {
         this.mPresSubscriptionState = nPresSubscriptionState;
     }
diff --git a/core/java/com/android/ims/internal/uce/presence/PresTupleInfo.java b/core/java/com/android/ims/internal/uce/presence/PresTupleInfo.java
index 3608eb6a..34a7b1e 100644
--- a/core/java/com/android/ims/internal/uce/presence/PresTupleInfo.java
+++ b/core/java/com/android/ims/internal/uce/presence/PresTupleInfo.java
@@ -17,6 +17,7 @@
 package com.android.ims.internal.uce.presence;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -40,7 +41,7 @@
      * Sets the feature tag.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setFeatureTag(String featureTag) {
         this.mFeatureTag = featureTag;
     }
@@ -56,7 +57,7 @@
      * Sets the contact URI.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setContactUri(String contactUri) {
         this.mContactUri = contactUri;
     }
@@ -73,7 +74,7 @@
      * Sets the timestamp.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setTimestamp(String timestamp) {
         this.mTimestamp = timestamp;
     }
@@ -82,7 +83,7 @@
      * Constructor for the PresTupleInfo class.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public PresTupleInfo(){};
 
     /** @hide */
diff --git a/core/java/com/android/ims/internal/uce/uceservice/IUceListener.aidl b/core/java/com/android/ims/internal/uce/uceservice/IUceListener.aidl
index 41abf7d..2341fae 100644
--- a/core/java/com/android/ims/internal/uce/uceservice/IUceListener.aidl
+++ b/core/java/com/android/ims/internal/uce/uceservice/IUceListener.aidl
@@ -25,6 +25,6 @@
      * @param serviceStatusValue defined in ImsUceManager
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void setStatus(int serviceStatusValue);
 }
diff --git a/core/java/com/android/ims/internal/uce/uceservice/IUceService.aidl b/core/java/com/android/ims/internal/uce/uceservice/IUceService.aidl
index ec45371..156e922 100644
--- a/core/java/com/android/ims/internal/uce/uceservice/IUceService.aidl
+++ b/core/java/com/android/ims/internal/uce/uceservice/IUceService.aidl
@@ -38,7 +38,7 @@
      * Service status is returned in setStatus callback in IUceListener.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean startService(IUceListener uceListener);
 
     /**
@@ -46,7 +46,7 @@
      * @return boolean true if the service stop request is processed successfully, FALSE otherwise.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean stopService();
 
 
@@ -56,7 +56,7 @@
      * @return boolean true if service started else false.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean isServiceStarted();
 
     /**
@@ -74,7 +74,7 @@
      *
      * @deprecated This is replaced with new API createOptionsServiceForSubscription()
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     int createOptionsService(IOptionsListener optionsListener,
                              inout UceLong optionsServiceListenerHdl);
     /**
@@ -101,7 +101,7 @@
      *        in IOptionsListener
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void destroyOptionsService(int optionsServiceHandle);
 
     /**
@@ -119,7 +119,7 @@
      *
      * @deprecated This is replaced with new API createPresenceServiceForSubscription()
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     int createPresenceService(IPresenceListener presenceServiceListener,
                               inout UceLong presenceServiceListenerHdl);
     /**
@@ -147,7 +147,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void destroyPresenceService(int presenceServiceHdl);
 
 
@@ -159,7 +159,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean getServiceStatus();
 
     /**
@@ -171,7 +171,7 @@
      *
      * @deprecated use API getPresenceServiceForSubscription()
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     IPresenceService getPresenceService();
 
     /**
@@ -194,7 +194,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     IOptionsService getOptionsService();
 
     /**
diff --git a/core/java/com/android/internal/BrightnessSynchronizer.java b/core/java/com/android/internal/BrightnessSynchronizer.java
index 42724be..8ff3c49 100644
--- a/core/java/com/android/internal/BrightnessSynchronizer.java
+++ b/core/java/com/android/internal/BrightnessSynchronizer.java
@@ -259,10 +259,12 @@
             }
             if (BRIGHTNESS_URI.equals(uri)) {
                 int currentBrightness = getScreenBrightnessInt(mContext);
+                mHandler.removeMessages(MSG_UPDATE_FLOAT);
                 mHandler.obtainMessage(MSG_UPDATE_FLOAT, currentBrightness, 0).sendToTarget();
             } else if (BRIGHTNESS_FLOAT_URI.equals(uri)) {
                 float currentFloat = getScreenBrightnessFloat(mContext);
                 int toSend = Float.floatToIntBits(currentFloat);
+                mHandler.removeMessages(MSG_UPDATE_INT);
                 mHandler.obtainMessage(MSG_UPDATE_INT, toSend, 0).sendToTarget();
             }
         }
diff --git a/core/java/com/android/internal/app/AlertController.java b/core/java/com/android/internal/app/AlertController.java
index be43e82..f690bd3 100644
--- a/core/java/com/android/internal/app/AlertController.java
+++ b/core/java/com/android/internal/app/AlertController.java
@@ -26,6 +26,7 @@
 import android.content.res.TypedArray;
 import android.database.Cursor;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.os.Handler;
 import android.os.Message;
 import android.text.Layout;
@@ -979,7 +980,7 @@
 
         boolean mRecycleOnMeasure = true;
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public RecycleListView(Context context) {
             this(context, null);
         }
diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java
index 4b661ca..236e67a 100644
--- a/core/java/com/android/internal/app/ChooserActivity.java
+++ b/core/java/com/android/internal/app/ChooserActivity.java
@@ -951,7 +951,7 @@
         updateStickyContentPreview();
         if (shouldShowStickyContentPreview()
                 || mChooserMultiProfilePagerAdapter
-                        .getCurrentRootAdapter().getContentPreviewRowCount() != 0) {
+                        .getCurrentRootAdapter().getSystemRowCount() != 0) {
             logActionShareWithPreview();
         }
         return postRebuildListInternal(rebuildCompleted);
@@ -1316,13 +1316,14 @@
             ViewGroup parent) {
         ViewGroup contentPreviewLayout = (ViewGroup) layoutInflater.inflate(
                 R.layout.chooser_grid_preview_image, parent, false);
+        ViewGroup imagePreview = contentPreviewLayout.findViewById(R.id.content_preview_image_area);
 
         final ViewGroup actionRow =
                 (ViewGroup) contentPreviewLayout.findViewById(R.id.chooser_action_row);
         //TODO: addActionButton(actionRow, createCopyButton());
         addActionButton(actionRow, createNearbyButton(targetIntent));
 
-        mPreviewCoord = new ContentPreviewCoordinator(contentPreviewLayout, true);
+        mPreviewCoord = new ContentPreviewCoordinator(contentPreviewLayout, false);
 
         String action = targetIntent.getAction();
         if (Intent.ACTION_SEND.equals(action)) {
@@ -1342,7 +1343,7 @@
             if (imageUris.size() == 0) {
                 Log.i(TAG, "Attempted to display image preview area with zero"
                         + " available images detected in EXTRA_STREAM list");
-                contentPreviewLayout.setVisibility(View.GONE);
+                imagePreview.setVisibility(View.GONE);
                 return contentPreviewLayout;
             }
 
@@ -2680,7 +2681,7 @@
                 final int bottomInset = mSystemWindowInsets != null
                                             ? mSystemWindowInsets.bottom : 0;
                 int offset = bottomInset;
-                int rowsToShow = gridAdapter.getContentPreviewRowCount()
+                int rowsToShow = gridAdapter.getSystemRowCount()
                         + gridAdapter.getProfileRowCount()
                         + gridAdapter.getServiceTargetRowCount()
                         + gridAdapter.getCallerAndRankedTargetRowCount();
@@ -3273,7 +3274,7 @@
 
         public int getRowCount() {
             return (int) (
-                    getContentPreviewRowCount()
+                    getSystemRowCount()
                             + getProfileRowCount()
                             + getServiceTargetRowCount()
                             + getCallerAndRankedTargetRowCount()
@@ -3289,7 +3290,7 @@
          * content preview. Not to be confused with the sticky content preview which is above the
          * personal and work tabs.
          */
-        public int getContentPreviewRowCount() {
+        public int getSystemRowCount() {
             // For the tabbed case we show the sticky content preview above the tabs,
             // please refer to shouldShowStickyContentPreview
             if (shouldShowTabs()) {
@@ -3299,8 +3300,7 @@
                 return 0;
             }
 
-            if (mHideContentPreview || mChooserListAdapter == null
-                    || mChooserListAdapter.getCount() == 0) {
+            if (mChooserListAdapter == null || mChooserListAdapter.getCount() == 0) {
                 return 0;
             }
 
@@ -3342,7 +3342,7 @@
         @Override
         public int getItemCount() {
             return (int) (
-                    getContentPreviewRowCount()
+                    getSystemRowCount()
                             + getProfileRowCount()
                             + getServiceTargetRowCount()
                             + getCallerAndRankedTargetRowCount()
@@ -3397,7 +3397,7 @@
         public int getItemViewType(int position) {
             int count;
 
-            int countSum = (count = getContentPreviewRowCount());
+            int countSum = (count = getSystemRowCount());
             if (count > 0 && position < countSum) return VIEW_TYPE_CONTENT_PREVIEW;
 
             countSum += (count = getProfileRowCount());
@@ -3621,7 +3621,7 @@
         }
 
         int getListPosition(int position) {
-            position -= getContentPreviewRowCount() + getProfileRowCount();
+            position -= getSystemRowCount() + getProfileRowCount();
 
             final int serviceCount = mChooserListAdapter.getServiceTargetCount();
             final int serviceRows = (int) Math.ceil((float) serviceCount
diff --git a/core/java/com/android/internal/app/IAppOpsService.aidl b/core/java/com/android/internal/app/IAppOpsService.aidl
index 51e56b7..aca5926 100644
--- a/core/java/com/android/internal/app/IAppOpsService.aidl
+++ b/core/java/com/android/internal/app/IAppOpsService.aidl
@@ -82,7 +82,7 @@
     void setUidMode(int code, int uid, int mode);
     @UnsupportedAppUsage
     void setMode(int code, int uid, String packageName, int mode);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void resetAllModes(int reqUserId, String reqPackageName);
     void setAudioRestriction(int code, int usage, int uid, int mode, in String[] exceptionPackages);
 
diff --git a/core/java/com/android/internal/app/IBatteryStats.aidl b/core/java/com/android/internal/app/IBatteryStats.aidl
index 6a0b443..e6a1661 100644
--- a/core/java/com/android/internal/app/IBatteryStats.aidl
+++ b/core/java/com/android/internal/app/IBatteryStats.aidl
@@ -55,7 +55,7 @@
     ParcelFileDescriptor getStatisticsStream();
 
     // Return true if we see the battery as currently charging.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean isCharging();
 
     // Return the computed amount of time remaining on battery, in milliseconds.
@@ -64,7 +64,7 @@
 
     // Return the computed amount of time remaining to fully charge, in milliseconds.
     // Returns -1 if nothing could be computed.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     long computeChargeTimeRemaining();
 
     void noteEvent(int code, String name, int uid);
@@ -134,7 +134,7 @@
     void noteDeviceIdleMode(int mode, String activeReason, int activeUid);
     void setBatteryState(int status, int health, int plugType, int level, int temp, int volt,
             int chargeUAh, int chargeFullUAh, long chargeTimeToFullSeconds);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     long getAwakeTimeBattery();
     long getAwakeTimePlugged();
 
diff --git a/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl b/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl
index 15ba8e8..3f0c024 100644
--- a/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl
+++ b/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl
@@ -61,7 +61,7 @@
      * @param bcp47Locale The BCP47 language tag  for the keyphrase's locale.
      * @RequiresPermission Manifest.permission.MANAGE_VOICE_KEYPHRASES
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     SoundTrigger.KeyphraseSoundModel getKeyphraseSoundModel(int keyphraseId, in String bcp47Locale);
     /**
      * Add/Update the given keyphrase sound model for the current user.
diff --git a/core/java/com/android/internal/app/IntentForwarderActivity.java b/core/java/com/android/internal/app/IntentForwarderActivity.java
index 61a52bc..3e1fa1d 100644
--- a/core/java/com/android/internal/app/IntentForwarderActivity.java
+++ b/core/java/com/android/internal/app/IntentForwarderActivity.java
@@ -38,6 +38,7 @@
 import android.content.pm.ResolveInfo;
 import android.content.pm.UserInfo;
 import android.metrics.LogMaker;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.RemoteException;
 import android.os.UserHandle;
@@ -64,7 +65,7 @@
  * be passed in and out of a managed profile.
  */
 public class IntentForwarderActivity extends Activity  {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static String TAG = "IntentForwarderActivity";
 
     public static String FORWARD_INTENT_TO_PARENT
diff --git a/core/java/com/android/internal/app/LocalePicker.java b/core/java/com/android/internal/app/LocalePicker.java
index 0c43578..c80cbc7 100644
--- a/core/java/com/android/internal/app/LocalePicker.java
+++ b/core/java/com/android/internal/app/LocalePicker.java
@@ -26,6 +26,7 @@
 import android.content.Context;
 import android.content.res.Configuration;
 import android.content.res.Resources;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.LocaleList;
 import android.os.RemoteException;
@@ -77,7 +78,7 @@
             return label;
         }
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public Locale getLocale() {
             return locale;
         }
diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java
index 233231c..16991b4 100644
--- a/core/java/com/android/internal/app/ResolverActivity.java
+++ b/core/java/com/android/internal/app/ResolverActivity.java
@@ -1281,7 +1281,7 @@
     private void safelyStartActivityInternal(TargetInfo cti) {
         // If the target is suspended, the activity will not be successfully launched.
         // Do not unregister from package manager updates in this case
-        if (!cti.isSuspended()) {
+        if (!cti.isSuspended() && mRegistered) {
             if (mPersonalPackageMonitor != null) {
                 mPersonalPackageMonitor.unregister();
             }
diff --git a/core/java/com/android/internal/app/WindowDecorActionBar.java b/core/java/com/android/internal/app/WindowDecorActionBar.java
index 0cd1202..8cab91a 100644
--- a/core/java/com/android/internal/app/WindowDecorActionBar.java
+++ b/core/java/com/android/internal/app/WindowDecorActionBar.java
@@ -32,6 +32,7 @@
 import android.content.res.Resources;
 import android.content.res.TypedArray;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.util.TypedValue;
 import android.view.ActionMode;
 import android.view.ContextThemeWrapper;
@@ -80,11 +81,11 @@
     private ActionBarOverlayLayout mOverlayLayout;
     private ActionBarContainer mContainerView;
     private DecorToolbar mDecorToolbar;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private ActionBarContextView mContextView;
     private ActionBarContainer mSplitView;
     private View mContentView;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private ScrollingTabContainerView mTabScrollView;
 
     private ArrayList<TabImpl> mTabs = new ArrayList<TabImpl>();
@@ -1149,7 +1150,7 @@
      * @hide
      */
     public class TabImpl extends ActionBar.Tab {
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private ActionBar.TabListener mCallback;
         private Object mTag;
         private Drawable mIcon;
diff --git a/core/java/com/android/internal/appwidget/IAppWidgetService.aidl b/core/java/com/android/internal/appwidget/IAppWidgetService.aidl
index 1186dfe..2d68cb4 100644
--- a/core/java/com/android/internal/appwidget/IAppWidgetService.aidl
+++ b/core/java/com/android/internal/appwidget/IAppWidgetService.aidl
@@ -42,7 +42,7 @@
     void deleteAppWidgetId(String callingPackage, int appWidgetId);
     void deleteHost(String packageName, int hostId);
     void deleteAllHosts();
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     RemoteViews getAppWidgetViews(String callingPackage, int appWidgetId);
     int[] getAppWidgetIdsForHost(String callingPackage, int hostId);
     IntentSender createAppWidgetConfigIntentSender(String callingPackage, int appWidgetId,
@@ -64,10 +64,10 @@
     AppWidgetProviderInfo getAppWidgetInfo(String callingPackage, int appWidgetId);
     boolean hasBindAppWidgetPermission(in String packageName, int userId);
     void setBindAppWidgetPermission(in String packageName, int userId, in boolean permission);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean bindAppWidgetId(in String callingPackage, int appWidgetId,
             int providerProfileId, in ComponentName providerComponent, in Bundle options);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean bindRemoteViewsService(String callingPackage, int appWidgetId, in Intent intent,
             IApplicationThread caller, IBinder token, IServiceConnection connection, int flags);
 
diff --git a/core/java/com/android/internal/compat/ChangeReporter.java b/core/java/com/android/internal/compat/ChangeReporter.java
index 5e886a6..60a30a0 100644
--- a/core/java/com/android/internal/compat/ChangeReporter.java
+++ b/core/java/com/android/internal/compat/ChangeReporter.java
@@ -221,7 +221,7 @@
                     FrameworkStatsLog.APP_COMPATIBILITY_CHANGE_REPORTED__SOURCE__SYSTEM_SERVER;
 
     @Retention(RetentionPolicy.SOURCE)
-    @IntDef(flag = true, prefix = { "STATE_" }, value = {
+    @IntDef(prefix = { "STATE_" }, value = {
             STATE_UNKNOWN_STATE,
             STATE_ENABLED,
             STATE_DISABLED,
@@ -231,7 +231,7 @@
     }
 
     @Retention(RetentionPolicy.SOURCE)
-    @IntDef(flag = true, prefix = { "SOURCE_" }, value = {
+    @IntDef(prefix = { "SOURCE_" }, value = {
             SOURCE_UNKNOWN_SOURCE,
             SOURCE_APP_PROCESS,
             SOURCE_SYSTEM_SERVER
diff --git a/core/java/com/android/internal/compat/CompatibilityChangeInfo.java b/core/java/com/android/internal/compat/CompatibilityChangeInfo.java
index 9ba0259..670ca9f 100644
--- a/core/java/com/android/internal/compat/CompatibilityChangeInfo.java
+++ b/core/java/com/android/internal/compat/CompatibilityChangeInfo.java
@@ -28,7 +28,7 @@
 public class CompatibilityChangeInfo implements Parcelable {
     private final long mChangeId;
     private final @Nullable String mName;
-    private final int mEnableAfterTargetSdk;
+    private final int mEnableSinceTargetSdk;
     private final boolean mDisabled;
     private final boolean mLoggingOnly;
     private final @Nullable String mDescription;
@@ -42,8 +42,8 @@
         return mName;
     }
 
-    public int getEnableAfterTargetSdk() {
-        return mEnableAfterTargetSdk;
+    public int getEnableSinceTargetSdk() {
+        return mEnableSinceTargetSdk;
     }
 
     public boolean getDisabled() {
@@ -59,20 +59,37 @@
     }
 
     public CompatibilityChangeInfo(
-            Long changeId, String name, int enableAfterTargetSdk, boolean disabled,
-            boolean loggingOnly, String description) {
+            Long changeId, String name, int enableAfterTargetSdk, int enableSinceTargetSdk,
+            boolean disabled, boolean loggingOnly, String description) {
         this.mChangeId = changeId;
         this.mName = name;
-        this.mEnableAfterTargetSdk = enableAfterTargetSdk;
+        if (enableAfterTargetSdk > 0) {
+            // Need to maintain support for @EnabledAfter(X), but make it equivalent to
+            // @EnabledSince(X+1)
+            this.mEnableSinceTargetSdk = enableAfterTargetSdk + 1;
+        } else if (enableSinceTargetSdk > 0) {
+            this.mEnableSinceTargetSdk = enableSinceTargetSdk;
+        } else {
+            this.mEnableSinceTargetSdk = -1;
+        }
         this.mDisabled = disabled;
         this.mLoggingOnly = loggingOnly;
         this.mDescription = description;
     }
 
+    public CompatibilityChangeInfo(CompatibilityChangeInfo other) {
+        this.mChangeId = other.mChangeId;
+        this.mName = other.mName;
+        this.mEnableSinceTargetSdk = other.mEnableSinceTargetSdk;
+        this.mDisabled = other.mDisabled;
+        this.mLoggingOnly = other.mLoggingOnly;
+        this.mDescription = other.mDescription;
+    }
+
     private CompatibilityChangeInfo(Parcel in) {
         mChangeId = in.readLong();
         mName = in.readString();
-        mEnableAfterTargetSdk = in.readInt();
+        mEnableSinceTargetSdk = in.readInt();
         mDisabled = in.readBoolean();
         mLoggingOnly = in.readBoolean();
         mDescription = in.readString();
@@ -87,7 +104,7 @@
     public void writeToParcel(Parcel dest, int flags) {
         dest.writeLong(mChangeId);
         dest.writeString(mName);
-        dest.writeInt(mEnableAfterTargetSdk);
+        dest.writeInt(mEnableSinceTargetSdk);
         dest.writeBoolean(mDisabled);
         dest.writeBoolean(mLoggingOnly);
         dest.writeString(mDescription);
@@ -100,8 +117,8 @@
         if (getName() != null) {
             sb.append("; name=").append(getName());
         }
-        if (getEnableAfterTargetSdk() != -1) {
-            sb.append("; enableAfterTargetSdk=").append(getEnableAfterTargetSdk());
+        if (getEnableSinceTargetSdk() != -1) {
+            sb.append("; enableSinceTargetSdk=").append(getEnableSinceTargetSdk());
         }
         if (getDisabled()) {
             sb.append("; disabled");
@@ -123,7 +140,7 @@
         CompatibilityChangeInfo that = (CompatibilityChangeInfo) o;
         return this.mChangeId == that.mChangeId
                 && this.mName.equals(that.mName)
-                && this.mEnableAfterTargetSdk == that.mEnableAfterTargetSdk
+                && this.mEnableSinceTargetSdk == that.mEnableSinceTargetSdk
                 && this.mDisabled == that.mDisabled
                 && this.mLoggingOnly == that.mLoggingOnly
                 && this.mDescription.equals(that.mDescription);
diff --git a/core/java/com/android/internal/compat/IPlatformCompat.aidl b/core/java/com/android/internal/compat/IPlatformCompat.aidl
index 6408def..cc266d6 100644
--- a/core/java/com/android/internal/compat/IPlatformCompat.aidl
+++ b/core/java/com/android/internal/compat/IPlatformCompat.aidl
@@ -164,7 +164,7 @@
     boolean clearOverride(long changeId, String packageName);
 
     /**
-     * Enable all compatibility changes which have enabledAfterTargetSdk ==
+     * Enable all compatibility changes which have enabledSinceTargetSdk ==
      * {@param targetSdkVersion} for an app, subject to the policy. Kills the app to allow the
      * changes to take effect.
      *
diff --git a/core/java/com/android/internal/logging/MetricsLogger.java b/core/java/com/android/internal/logging/MetricsLogger.java
index 140c410..7b6df6c 100644
--- a/core/java/com/android/internal/logging/MetricsLogger.java
+++ b/core/java/com/android/internal/logging/MetricsLogger.java
@@ -63,7 +63,7 @@
     public static final int LOGTAG = EventLogTags.SYSUI_MULTI_ACTION;
 
     /** Write an event log record, consisting of content.serialize(). */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void write(LogMaker content) {
         if (content.getType() == MetricsEvent.TYPE_UNKNOWN) {
             content.setType(MetricsEvent.TYPE_ACTION);
diff --git a/core/java/com/android/internal/net/LegacyVpnInfo.java b/core/java/com/android/internal/net/LegacyVpnInfo.java
index 4eb7ded..43984b5 100644
--- a/core/java/com/android/internal/net/LegacyVpnInfo.java
+++ b/core/java/com/android/internal/net/LegacyVpnInfo.java
@@ -83,8 +83,8 @@
      * Return best matching {@link LegacyVpnInfo} state based on given
      * {@link NetworkInfo}.
      */
-    public static int stateFromNetworkInfo(NetworkInfo info) {
-        switch (info.getDetailedState()) {
+    public static int stateFromNetworkInfo(NetworkInfo.DetailedState state) {
+        switch (state) {
             case CONNECTING:
                 return STATE_CONNECTING;
             case CONNECTED:
@@ -94,8 +94,7 @@
             case FAILED:
                 return STATE_FAILED;
             default:
-                Log.w(TAG, "Unhandled state " + info.getDetailedState()
-                        + " ; treating as disconnected");
+                Log.w(TAG, "Unhandled state " + state + " ; treating as disconnected");
                 return STATE_DISCONNECTED;
         }
     }
diff --git a/core/java/com/android/internal/net/VpnConfig.java b/core/java/com/android/internal/net/VpnConfig.java
index 7dc3871..c0648ab 100644
--- a/core/java/com/android/internal/net/VpnConfig.java
+++ b/core/java/com/android/internal/net/VpnConfig.java
@@ -70,7 +70,8 @@
         intent.setClassName(DIALOGS_PACKAGE, DIALOGS_PACKAGE + ".ManageDialog");
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_HISTORY |
                 Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
-        return PendingIntent.getActivityAsUser(context, 0, intent, 0, null, UserHandle.CURRENT);
+        return PendingIntent.getActivityAsUser(context, 0 /* requestCode */, intent,
+                PendingIntent.FLAG_IMMUTABLE, null /* options */, UserHandle.CURRENT);
     }
 
     public static CharSequence getVpnLabel(Context context, String packageName)
diff --git a/core/java/com/android/internal/net/VpnProfile.java b/core/java/com/android/internal/net/VpnProfile.java
index b472749..a17f5f5 100644
--- a/core/java/com/android/internal/net/VpnProfile.java
+++ b/core/java/com/android/internal/net/VpnProfile.java
@@ -236,7 +236,7 @@
      *
      * <p>See {@link #encode()}
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static VpnProfile decode(String key, byte[] value) {
         try {
             if (key == null) {
diff --git a/core/java/com/android/internal/os/BaseCommand.java b/core/java/com/android/internal/os/BaseCommand.java
index 32442f0..c85b5d7 100644
--- a/core/java/com/android/internal/os/BaseCommand.java
+++ b/core/java/com/android/internal/os/BaseCommand.java
@@ -18,13 +18,15 @@
 package com.android.internal.os;
 
 import android.compat.annotation.UnsupportedAppUsage;
-import android.os.BasicShellCommandHandler;
+import android.os.Build;
+
+import com.android.modules.utils.BasicShellCommandHandler;
 
 import java.io.PrintStream;
 
 public abstract class BaseCommand {
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     final protected BasicShellCommandHandler mArgs = new BasicShellCommandHandler() {
         @Override public int onCommand(String cmd) {
             return 0;
@@ -40,7 +42,7 @@
 
     private String[] mRawArgs;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public BaseCommand() {
     }
 
diff --git a/core/java/com/android/internal/os/BatterySipper.java b/core/java/com/android/internal/os/BatterySipper.java
index b3ea118..cd5aedf 100644
--- a/core/java/com/android/internal/os/BatterySipper.java
+++ b/core/java/com/android/internal/os/BatterySipper.java
@@ -17,6 +17,7 @@
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.os.BatteryStats.Uid;
+import android.os.Build;
 
 import java.util.List;
 
@@ -120,7 +121,7 @@
     public double audioPowerMah;
     public double bluetoothPowerMah;
     public double cameraPowerMah;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public double cpuPowerMah;
     public double flashlightPowerMah;
     public double gpsPowerMah;
diff --git a/core/java/com/android/internal/os/BatteryStatsHelper.java b/core/java/com/android/internal/os/BatteryStatsHelper.java
index b131ab8..8bfc28e 100644
--- a/core/java/com/android/internal/os/BatteryStatsHelper.java
+++ b/core/java/com/android/internal/os/BatteryStatsHelper.java
@@ -26,6 +26,7 @@
 import android.net.ConnectivityManager;
 import android.os.BatteryStats;
 import android.os.BatteryStats.Uid;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.MemoryFile;
 import android.os.Parcel;
@@ -271,7 +272,7 @@
         return mStats;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Intent getBatteryBroadcast() {
         if (mBatteryBroadcast == null && mCollectBatteryBroadcast) {
             load();
@@ -360,7 +361,7 @@
     /**
      * Refreshes the power usage list.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void refreshStats(int statsType, SparseArray<UserHandle> asUsers) {
         refreshStats(statsType, asUsers, SystemClock.elapsedRealtime() * 1000,
                 SystemClock.uptimeMillis() * 1000);
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index bb4623b..1071d9f 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -151,7 +151,7 @@
     private static final int MAGIC = 0xBA757475; // 'BATSTATS'
 
     // Current on-disk Parcel version
-    static final int VERSION = 186 + (USE_OLD_HISTORY ? 1000 : 0);
+    static final int VERSION = 188 + (USE_OLD_HISTORY ? 1000 : 0);
 
     // The maximum number of names wakelocks we will keep track of
     // per uid; once the limit is reached, we batch the remaining wakelocks
@@ -12736,7 +12736,7 @@
     }
 
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getDischargeStartLevel() {
         synchronized(this) {
             return getDischargeStartLevelLocked();
@@ -12748,7 +12748,7 @@
     }
 
     @Override
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getDischargeCurrentLevel() {
         synchronized(this) {
             return getDischargeCurrentLevelLocked();
@@ -13596,6 +13596,7 @@
         mDailyStartTime = in.readLong();
         mNextMinDailyDeadline = in.readLong();
         mNextMaxDailyDeadline = in.readLong();
+        mBatteryTimeToFullSeconds = in.readLong();
 
         mStartCount++;
 
@@ -14086,6 +14087,7 @@
         out.writeLong(mDailyStartTime);
         out.writeLong(mNextMinDailyDeadline);
         out.writeLong(mNextMaxDailyDeadline);
+        out.writeLong(mBatteryTimeToFullSeconds);
 
         mScreenOnTimer.writeSummaryFromParcelLocked(out, NOWREAL_SYS);
         mScreenDozeTimer.writeSummaryFromParcelLocked(out, NOWREAL_SYS);
@@ -14669,6 +14671,7 @@
         mDischargeLightDozeCounter = new LongSamplingCounter(mOnBatteryTimeBase, in);
         mDischargeDeepDozeCounter = new LongSamplingCounter(mOnBatteryTimeBase, in);
         mLastWriteTime = in.readLong();
+        mBatteryTimeToFullSeconds = in.readLong();
 
         mRpmStats.clear();
         int NRPMS = in.readInt();
@@ -14861,6 +14864,7 @@
         mDischargeLightDozeCounter.writeToParcel(out);
         mDischargeDeepDozeCounter.writeToParcel(out);
         out.writeLong(mLastWriteTime);
+        out.writeLong(mBatteryTimeToFullSeconds);
 
         out.writeInt(mRpmStats.size());
         for (Map.Entry<String, SamplingTimer> ent : mRpmStats.entrySet()) {
diff --git a/core/java/com/android/internal/os/ClassLoaderFactory.java b/core/java/com/android/internal/os/ClassLoaderFactory.java
index 8f36de1..26a0371 100644
--- a/core/java/com/android/internal/os/ClassLoaderFactory.java
+++ b/core/java/com/android/internal/os/ClassLoaderFactory.java
@@ -17,6 +17,7 @@
 package com.android.internal.os;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Trace;
 
 import dalvik.system.DelegateLastClassLoader;
@@ -137,7 +138,7 @@
         return classLoader;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static native String createClassloaderNamespace(ClassLoader classLoader,
                                                             int targetSdkVersion,
                                                             String librarySearchPath,
diff --git a/core/java/com/android/internal/os/FuseAppLoop.java b/core/java/com/android/internal/os/FuseAppLoop.java
index 2393036..1c6c6a7 100644
--- a/core/java/com/android/internal/os/FuseAppLoop.java
+++ b/core/java/com/android/internal/os/FuseAppLoop.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Handler;
 import android.os.Message;
 import android.os.ParcelFileDescriptor;
@@ -230,7 +231,7 @@
 
     // Called by JNI.
     @SuppressWarnings("unused")
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void onCommand(int command, long unique, long inode, long offset, int size,
             byte[] data) {
         synchronized (mLock) {
@@ -259,7 +260,7 @@
 
     // Called by JNI.
     @SuppressWarnings("unused")
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private byte[] onOpen(long unique, long inode) {
         synchronized (mLock) {
             try {
diff --git a/core/java/com/android/internal/os/KernelWakelockReader.java b/core/java/com/android/internal/os/KernelWakelockReader.java
index 3d35d2f..f668bba 100644
--- a/core/java/com/android/internal/os/KernelWakelockReader.java
+++ b/core/java/com/android/internal/os/KernelWakelockReader.java
@@ -21,8 +21,8 @@
 import android.os.ServiceManager.ServiceNotFoundException;
 import android.os.StrictMode;
 import android.os.SystemClock;
-import android.system.suspend.ISuspendControlService;
-import android.system.suspend.WakeLockInfo;
+import android.system.suspend.internal.ISuspendControlServiceInternal;
+import android.system.suspend.internal.WakeLockInfo;
 import android.util.Slog;
 
 import com.android.internal.annotations.VisibleForTesting;
@@ -66,7 +66,7 @@
 
     private final String[] mProcWakelocksName = new String[3];
     private final long[] mProcWakelocksData = new long[3];
-    private ISuspendControlService mSuspendControlService = null;
+    private ISuspendControlServiceInternal mSuspendControlService = null;
     private byte[] mKernelWakelockBuffer = new byte[32 * 1024];
 
     /**
@@ -155,11 +155,12 @@
     /**
      * Attempt to wait for suspend_control service if not immediately available.
      */
-    private ISuspendControlService waitForSuspendControlService() throws ServiceNotFoundException {
-        final String name = "suspend_control";
+    private ISuspendControlServiceInternal waitForSuspendControlService()
+            throws ServiceNotFoundException {
+        final String name = "suspend_control_internal";
         final int numRetries = 5;
         for (int i = 0; i < numRetries; i++) {
-            mSuspendControlService = ISuspendControlService.Stub.asInterface(
+            mSuspendControlService = ISuspendControlServiceInternal.Stub.asInterface(
                                         ServiceManager.getService(name));
             if (mSuspendControlService != null) {
                 return mSuspendControlService;
diff --git a/core/java/com/android/internal/os/ProcessCpuTracker.java b/core/java/com/android/internal/os/ProcessCpuTracker.java
index 8e0546e..6d5cb67 100644
--- a/core/java/com/android/internal/os/ProcessCpuTracker.java
+++ b/core/java/com/android/internal/os/ProcessCpuTracker.java
@@ -24,6 +24,7 @@
 import static android.os.Process.PROC_SPACE_TERM;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.CpuUsageProto;
 import android.os.Process;
 import android.os.StrictMode;
@@ -200,7 +201,7 @@
         public boolean interesting;
 
         public String baseName;
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public String name;
         public int nameWidth;
 
@@ -216,7 +217,7 @@
         /**
          * Time in milliseconds.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public long rel_uptime;
 
         /**
@@ -232,13 +233,13 @@
         /**
          * Time in milliseconds.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public int rel_utime;
 
         /**
          * Time in milliseconds.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public int rel_stime;
 
         public long base_minfaults;
@@ -732,13 +733,13 @@
         return statses;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     final public int countWorkingStats() {
         buildWorkingProcs();
         return mWorkingProcs.size();
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     final public Stats getWorkingStats(int index) {
         return mWorkingProcs.get(index);
     }
diff --git a/core/java/com/android/internal/os/RuntimeInit.java b/core/java/com/android/internal/os/RuntimeInit.java
index 095882e..8d1f16b 100644
--- a/core/java/com/android/internal/os/RuntimeInit.java
+++ b/core/java/com/android/internal/os/RuntimeInit.java
@@ -24,7 +24,6 @@
 import android.content.type.DefaultMimeMapFactory;
 import android.os.Build;
 import android.os.DeadObjectException;
-import android.os.Debug;
 import android.os.IBinder;
 import android.os.Process;
 import android.os.SystemProperties;
@@ -36,7 +35,6 @@
 import com.android.server.NetworkManagementSocketTagger;
 
 import dalvik.system.RuntimeHooks;
-import dalvik.system.ThreadPrioritySetter;
 import dalvik.system.VMRuntime;
 
 import libcore.content.type.MimeMap;
@@ -208,7 +206,6 @@
      */
     public static void preForkInit() {
         if (DEBUG) Slog.d(TAG, "Entered preForkInit.");
-        RuntimeHooks.setThreadPrioritySetter(new RuntimeThreadPrioritySetter());
         RuntimeInit.enableDdms();
         // TODO(b/142019040#comment13): Decide whether to load the default instance eagerly, i.e.
         // MimeMap.setDefault(DefaultMimeMapFactory.create());
@@ -221,35 +218,6 @@
         MimeMap.setDefaultSupplier(DefaultMimeMapFactory::create);
     }
 
-    private static class RuntimeThreadPrioritySetter implements ThreadPrioritySetter {
-        // Should remain consistent with kNiceValues[] in system/libartpalette/palette_android.cc
-        private static final int[] NICE_VALUES = {
-            Process.THREAD_PRIORITY_LOWEST,  // 1 (MIN_PRIORITY)
-            Process.THREAD_PRIORITY_BACKGROUND + 6,
-            Process.THREAD_PRIORITY_BACKGROUND + 3,
-            Process.THREAD_PRIORITY_BACKGROUND,
-            Process.THREAD_PRIORITY_DEFAULT,  // 5 (NORM_PRIORITY)
-            Process.THREAD_PRIORITY_DEFAULT - 2,
-            Process.THREAD_PRIORITY_DEFAULT - 4,
-            Process.THREAD_PRIORITY_URGENT_DISPLAY + 3,
-            Process.THREAD_PRIORITY_URGENT_DISPLAY + 2,
-            Process.THREAD_PRIORITY_URGENT_DISPLAY  // 10 (MAX_PRIORITY)
-        };
-
-        @Override
-        public void setPriority(int nativeTid, int priority) {
-            // Check NICE_VALUES[] length first.
-            if (NICE_VALUES.length != (1 + Thread.MAX_PRIORITY - Thread.MIN_PRIORITY)) {
-                throw new AssertionError("Unexpected NICE_VALUES.length=" + NICE_VALUES.length);
-            }
-            // Priority should be in the range of MIN_PRIORITY (1) to MAX_PRIORITY (10).
-            if (priority < Thread.MIN_PRIORITY || priority > Thread.MAX_PRIORITY) {
-                throw new IllegalArgumentException("Priority out of range: " + priority);
-            }
-            Process.setThreadPriority(nativeTid, NICE_VALUES[priority - Thread.MIN_PRIORITY]);
-        }
-    }
-
     @UnsupportedAppUsage
     protected static final void commonInit() {
         if (DEBUG) Slog.d(TAG, "Entered RuntimeInit!");
@@ -288,18 +256,6 @@
          */
         NetworkManagementSocketTagger.install();
 
-        /*
-         * If we're running in an emulator launched with "-trace", put the
-         * VM into emulator trace profiling mode so that the user can hit
-         * F9/F10 at any time to capture traces.  This has performance
-         * consequences, so it's not something you want to do always.
-         */
-        String trace = SystemProperties.get("ro.kernel.android.tracing");
-        if (trace.equals("1")) {
-            Slog.i(TAG, "NOTE: emulator trace profiling enabled");
-            Debug.enableEmulatorTraceOutput();
-        }
-
         initialized = true;
     }
 
diff --git a/core/java/com/android/internal/os/SomeArgs.java b/core/java/com/android/internal/os/SomeArgs.java
index 003f610..5ec882c 100644
--- a/core/java/com/android/internal/os/SomeArgs.java
+++ b/core/java/com/android/internal/os/SomeArgs.java
@@ -17,6 +17,7 @@
 package com.android.internal.os;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 /**
  * Helper class for passing more arguments though a message
@@ -42,11 +43,11 @@
     static final int WAIT_FINISHED = 2;
     int mWaitState = WAIT_NONE;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Object arg1;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Object arg2;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Object arg3;
     public Object arg4;
     public Object arg5;
@@ -55,9 +56,9 @@
     public Object arg8;
     public Object arg9;
     public int argi1;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int argi2;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int argi3;
     public int argi4;
     public int argi5;
@@ -67,7 +68,7 @@
         /* do nothing - reduce visibility */
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static SomeArgs obtain() {
         synchronized (sPoolLock) {
             if (sPoolSize > 0) {
@@ -93,7 +94,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void recycle() {
         if (mInPool) {
             throw new IllegalStateException("Already recycled.");
diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java
index ef72cee..6335baa 100644
--- a/core/java/com/android/internal/os/ZygoteInit.java
+++ b/core/java/com/android/internal/os/ZygoteInit.java
@@ -73,6 +73,7 @@
 import java.io.InputStreamReader;
 import java.security.Provider;
 import java.security.Security;
+import java.util.Optional;
 
 /**
  * Startup class for the zygote process.
@@ -225,7 +226,17 @@
         // AndroidKeyStoreProvider.install() manipulates the list of JCA providers to insert
         // preferred providers. Note this is not done via security.properties as the JCA providers
         // are not on the classpath in the case of, for example, raw dalvikvm runtimes.
-        AndroidKeyStoreProvider.install();
+        // TODO b/171305684 This code is used to conditionally enable the installation of the
+        //      Keystore 2.0 provider to enable teams adjusting to Keystore 2.0 at their own
+        //      pace. This code will be removed when all calling code was adjusted to
+        //      Keystore 2.0.
+        Optional<Boolean> keystore2_enabled =
+                android.sysprop.Keystore2Properties.keystore2_enabled();
+        if (keystore2_enabled.isPresent() && keystore2_enabled.get()) {
+            android.security.keystore2.AndroidKeyStoreProvider.install();
+        } else {
+            AndroidKeyStoreProvider.install();
+        }
         Log.i(TAG, "Installed AndroidKeyStoreProvider in "
                 + (SystemClock.uptimeMillis() - startTime) + "ms.");
         Trace.traceEnd(Trace.TRACE_TAG_DALVIK);
@@ -385,7 +396,6 @@
                 "/system/framework/android.hidl.manager-V1.0-java.jar", null /*packageName*/,
                 null /*codePaths*/, null /*name*/, 0 /*version*/, SharedLibraryInfo.TYPE_BUILTIN,
                 null /*declaringPackage*/, null /*dependentPackages*/, null /*dependencies*/);
-        hidlManager.addDependency(hidlBase);
 
         SharedLibraryInfo androidTestBase = new SharedLibraryInfo(
                 "/system/framework/android.test.base.jar", null /*packageName*/,
@@ -600,6 +610,9 @@
         VMRuntime.registerAppInfo(profilePath, codePaths);
     }
 
+    /**
+     * Sets the list of classes/methods for the hidden API
+     */
     public static void setApiDenylistExemptions(String[] exemptions) {
         VMRuntime.getRuntime().setHiddenApiExemptions(exemptions);
     }
@@ -618,8 +631,11 @@
 
     /**
      * Creates a PathClassLoader for the given class path that is associated with a shared
-     * namespace, i.e., this classloader can access platform-private native libraries. The
-     * classloader will use java.library.path as the native library path.
+     * namespace, i.e., this classloader can access platform-private native libraries.
+     *
+     * The classloader will add java.library.path to the native library path for the classloader
+     * namespace. Since it includes platform locations like /system/lib, this is only appropriate
+     * for platform code that don't need linker namespace isolation (as opposed to APEXes and apps).
      */
     static ClassLoader createPathClassLoader(String classPath, int targetSdkVersion) {
         String libraryPath = System.getProperty("java.library.path");
diff --git a/core/java/com/android/internal/policy/GestureNavigationSettingsObserver.java b/core/java/com/android/internal/policy/GestureNavigationSettingsObserver.java
index 0e703fa..205c5fd 100644
--- a/core/java/com/android/internal/policy/GestureNavigationSettingsObserver.java
+++ b/core/java/com/android/internal/policy/GestureNavigationSettingsObserver.java
@@ -103,8 +103,11 @@
         final DisplayMetrics dm = userRes.getDisplayMetrics();
         final float defaultInset = userRes.getDimension(
                 com.android.internal.R.dimen.config_backGestureInset) / dm.density;
-        final float backGestureInset = DeviceConfig.getFloat(DeviceConfig.NAMESPACE_SYSTEMUI,
-                BACK_GESTURE_EDGE_WIDTH, defaultInset);
+        // Only apply the back gesture config if there is an existing inset
+        final float backGestureInset = defaultInset > 0
+                ? DeviceConfig.getFloat(DeviceConfig.NAMESPACE_SYSTEMUI,
+                        BACK_GESTURE_EDGE_WIDTH, defaultInset)
+                : defaultInset;
         final float inset = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, backGestureInset,
                 dm);
         final float scale = Settings.Secure.getFloatForUser(
diff --git a/core/java/com/android/internal/telephony/IPhoneStateListener.aidl b/core/java/com/android/internal/telephony/IPhoneStateListener.aidl
index b2c5a99..d2dc7c2 100644
--- a/core/java/com/android/internal/telephony/IPhoneStateListener.aidl
+++ b/core/java/com/android/internal/telephony/IPhoneStateListener.aidl
@@ -61,8 +61,8 @@
     void onRadioPowerStateChanged(in int state);
     void onCallAttributesChanged(in CallAttributes callAttributes);
     void onEmergencyNumberListChanged(in Map emergencyNumberList);
-    void onOutgoingEmergencyCall(in EmergencyNumber placedEmergencyNumber);
-    void onOutgoingEmergencySms(in EmergencyNumber sentEmergencyNumber);
+    void onOutgoingEmergencyCall(in EmergencyNumber placedEmergencyNumber, int subscriptionId);
+    void onOutgoingEmergencySms(in EmergencyNumber sentEmergencyNumber, int subscriptionId);
     void onCallDisconnectCauseChanged(in int disconnectCause, in int preciseDisconnectCause);
     void onImsCallDisconnectCauseChanged(in ImsReasonInfo imsReasonInfo);
     void onRegistrationFailed(in CellIdentity cellIdentity,
diff --git a/core/java/com/android/internal/telephony/ITelephonyRegistry.aidl b/core/java/com/android/internal/telephony/ITelephonyRegistry.aidl
index 5a04992..5f2dcc3 100644
--- a/core/java/com/android/internal/telephony/ITelephonyRegistry.aidl
+++ b/core/java/com/android/internal/telephony/ITelephonyRegistry.aidl
@@ -51,7 +51,7 @@
             boolean notifyNow);
     void listenForSubscriber(in int subId, String pkg, String featureId,
             IPhoneStateListener callback, int events, boolean notifyNow);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void notifyCallStateForAllSubs(int state, String incomingNumber);
     void notifyCallState(in int phoneId, in int subId, int state, String incomingNumber);
     void notifyServiceStateForPhoneId(in int phoneId, in int subId, in ServiceState state);
@@ -65,9 +65,7 @@
     void notifyDataActivity(int state);
     void notifyDataActivityForSubscriber(in int subId, int state);
     void notifyDataConnectionForSubscriber(
-            int phoneId, int subId, int apnType, in PreciseDataConnectionState preciseState);
-    @UnsupportedAppUsage
-    void notifyDataConnectionFailed(String apnType);
+            int phoneId, int subId, in PreciseDataConnectionState preciseState);
     // Uses CellIdentity which is Parcelable here; will convert to CellLocation in client.
     void notifyCellLocation(in CellIdentity cellLocation);
     void notifyCellLocationForSubscriber(in int subId, in CellIdentity cellLocation);
@@ -77,8 +75,6 @@
             int foregroundCallState, int backgroundCallState);
     void notifyDisconnectCause(int phoneId, int subId, int disconnectCause,
             int preciseDisconnectCause);
-    void notifyPreciseDataConnectionFailed(int phoneId, int subId, int apnType, String apn,
-            int failCause);
     void notifyCellInfoForSubscriber(in int subId, in List<CellInfo> cellInfo);
     void notifySrvccStateChanged(in int subId, in int lteState);
     void notifySimActivationStateChangedForPhoneId(in int phoneId, in int subId,
diff --git a/core/java/com/android/internal/util/ArrayUtils.java b/core/java/com/android/internal/util/ArrayUtils.java
index cd69a02..9ad1502 100644
--- a/core/java/com/android/internal/util/ArrayUtils.java
+++ b/core/java/com/android/internal/util/ArrayUtils.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.util.ArraySet;
 
 import dalvik.system.VMRuntime;
@@ -56,7 +57,7 @@
         return (char[])VMRuntime.getRuntime().newUnpaddedArray(char.class, minLen);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static int[] newUnpaddedIntArray(int minLen) {
         return (int[])VMRuntime.getRuntime().newUnpaddedArray(int.class, minLen);
     }
@@ -77,7 +78,7 @@
         return (Object[])VMRuntime.getRuntime().newUnpaddedArray(Object.class, minLen);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @SuppressWarnings("unchecked")
     public static <T> T[] newUnpaddedArray(Class<T> clazz, int minLen) {
         return (T[])VMRuntime.getRuntime().newUnpaddedArray(clazz, minLen);
@@ -382,7 +383,7 @@
      * Adds value to given array if not already present, providing set-like
      * behavior.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @SuppressWarnings("unchecked")
     public static @NonNull <T> T[] appendElement(Class<T> kind, @Nullable T[] array, T element) {
         return appendElement(kind, array, element, false);
@@ -412,7 +413,7 @@
     /**
      * Removes value from given array if present, providing set-like behavior.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @SuppressWarnings("unchecked")
     public static @Nullable <T> T[] removeElement(Class<T> kind, @Nullable T[] array, T element) {
         if (array != null) {
diff --git a/core/java/com/android/internal/util/AsyncChannel.java b/core/java/com/android/internal/util/AsyncChannel.java
index 7e3c171..0e8c929 100644
--- a/core/java/com/android/internal/util/AsyncChannel.java
+++ b/core/java/com/android/internal/util/AsyncChannel.java
@@ -401,7 +401,7 @@
      * @param srcHandler
      * @param dstMessenger
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void connected(Context srcContext, Handler srcHandler, Messenger dstMessenger) {
         if (DBG) log("connected srcHandler to the dstMessenger  E");
 
@@ -514,7 +514,7 @@
      * @param what
      * @param arg1
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void sendMessage(int what, int arg1) {
         Message msg = Message.obtain();
         msg.what = what;
@@ -606,7 +606,7 @@
      * @param what
      * @param arg1
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void replyToMessage(Message srcMsg, int what, int arg1) {
         Message msg = Message.obtain();
         msg.what = what;
@@ -639,7 +639,7 @@
      * @param arg2
      * @param obj
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void replyToMessage(Message srcMsg, int what, int arg1, int arg2, Object obj) {
         Message msg = Message.obtain();
         msg.what = what;
@@ -656,7 +656,7 @@
      * @param what
      * @param obj
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void replyToMessage(Message srcMsg, int what, Object obj) {
         Message msg = Message.obtain();
         msg.what = what;
@@ -670,7 +670,7 @@
      * @param msg to send
      * @return reply message or null if an error.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Message sendMessageSynchronously(Message msg) {
         Message resultMsg = SyncMessenger.sendMessageSynchronously(mDstMessenger, msg);
         return resultMsg;
@@ -712,7 +712,7 @@
      * @param arg2
      * @return reply message or null if an error.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Message sendMessageSynchronously(int what, int arg1, int arg2) {
         Message msg = Message.obtain();
         msg.what = what;
diff --git a/core/java/com/android/internal/util/GrowingArrayUtils.java b/core/java/com/android/internal/util/GrowingArrayUtils.java
index 597fe6b..8c12e36 100644
--- a/core/java/com/android/internal/util/GrowingArrayUtils.java
+++ b/core/java/com/android/internal/util/GrowingArrayUtils.java
@@ -17,6 +17,7 @@
 package com.android.internal.util;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 /**
  * A helper class that aims to provide comparable growth performance to ArrayList, but on primitive
@@ -39,7 +40,7 @@
      * @return the array to which the element was appended. This may be different than the given
      *         array.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static <T> T[] append(T[] array, int currentSize, T element) {
         assert currentSize <= array.length;
 
@@ -57,7 +58,7 @@
     /**
      * Primitive int version of {@link #append(Object[], int, Object)}.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static int[] append(int[] array, int currentSize, int element) {
         assert currentSize <= array.length;
 
diff --git a/core/java/com/android/internal/util/HexDump.java b/core/java/com/android/internal/util/HexDump.java
index ad88dd6..6468caf 100644
--- a/core/java/com/android/internal/util/HexDump.java
+++ b/core/java/com/android/internal/util/HexDump.java
@@ -107,7 +107,7 @@
         return toHexString(array, 0, array.length, true);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     public static String toHexString(byte[] array, boolean upperCase)
     {
         return toHexString(array, 0, array.length, upperCase);
diff --git a/core/java/com/android/internal/util/IndentingPrintWriter.java b/core/java/com/android/internal/util/IndentingPrintWriter.java
index 34c6a05..1d2c389 100644
--- a/core/java/com/android/internal/util/IndentingPrintWriter.java
+++ b/core/java/com/android/internal/util/IndentingPrintWriter.java
@@ -17,6 +17,7 @@
 package com.android.internal.util;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 import java.io.PrintWriter;
 import java.io.Writer;
@@ -49,7 +50,7 @@
 
     private char[] mSingleChar = new char[1];
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public IndentingPrintWriter(Writer writer, String singleIndent) {
         this(writer, singleIndent, -1);
     }
@@ -75,14 +76,14 @@
         return this;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public IndentingPrintWriter increaseIndent() {
         mIndentBuilder.append(mSingleIndent);
         mCurrentIndent = null;
         return this;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public IndentingPrintWriter decreaseIndent() {
         mIndentBuilder.delete(0, mSingleIndent.length());
         mCurrentIndent = null;
diff --git a/core/java/com/android/internal/util/MemInfoReader.java b/core/java/com/android/internal/util/MemInfoReader.java
index 5de77d9..0c5c853 100644
--- a/core/java/com/android/internal/util/MemInfoReader.java
+++ b/core/java/com/android/internal/util/MemInfoReader.java
@@ -17,6 +17,7 @@
 package com.android.internal.util;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Debug;
 import android.os.StrictMode;
 
@@ -51,7 +52,7 @@
     /**
      * Amount of RAM that is not being used for anything.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public long getFreeSize() {
         return mInfos[Debug.MEMINFO_FREE] * 1024;
     }
@@ -60,7 +61,7 @@
      * Amount of RAM that the kernel is being used for caches, not counting caches
      * that are mapped in to processes.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public long getCachedSize() {
         return getCachedSizeKb() * 1024;
     }
diff --git a/core/java/com/android/internal/util/Preconditions.java b/core/java/com/android/internal/util/Preconditions.java
index a87e080..244f33f 100644
--- a/core/java/com/android/internal/util/Preconditions.java
+++ b/core/java/com/android/internal/util/Preconditions.java
@@ -19,6 +19,7 @@
 import android.annotation.IntRange;
 import android.annotation.NonNull;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.text.TextUtils;
 
 import java.util.Arrays;
@@ -46,7 +47,7 @@
      *     be converted to a string using {@link String#valueOf(Object)}
      * @throws IllegalArgumentException if {@code expression} is false
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static void checkArgument(boolean expression, final Object errorMessage) {
         if (!expression) {
             throw new IllegalArgumentException(String.valueOf(errorMessage));
@@ -167,7 +168,7 @@
      * @param message exception message
      * @throws IllegalStateException if {@code expression} is false
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static void checkState(final boolean expression, String message) {
         if (!expression) {
             throw new IllegalStateException(message);
@@ -379,7 +380,7 @@
      *
      * @throws IllegalArgumentException if {@code value} was not within the range
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static int checkArgumentInRange(int value, int lower, int upper,
             String valueName) {
         if (value < lower) {
diff --git a/core/java/com/android/internal/util/State.java b/core/java/com/android/internal/util/State.java
index 636378e..4613dad 100644
--- a/core/java/com/android/internal/util/State.java
+++ b/core/java/com/android/internal/util/State.java
@@ -17,6 +17,7 @@
 package com.android.internal.util;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Message;
 
 /**
@@ -44,7 +45,7 @@
     /* (non-Javadoc)
      * @see com.android.internal.util.IState#exit()
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @Override
     public void exit() {
     }
diff --git a/core/java/com/android/internal/util/StateMachine.java b/core/java/com/android/internal/util/StateMachine.java
index 7a79cc9..4cff785 100644
--- a/core/java/com/android/internal/util/StateMachine.java
+++ b/core/java/com/android/internal/util/StateMachine.java
@@ -17,6 +17,7 @@
 package com.android.internal.util;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.Looper;
@@ -1324,7 +1325,7 @@
      *
      * @param name of the state machine
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected StateMachine(String name, Handler handler) {
         initStateMachine(name, handler.getLooper());
     }
@@ -1357,7 +1358,7 @@
      * Add a new state to the state machine, parent will be null
      * @param state to add
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final void addState(State state) {
         mSmHandler.addState(state, null);
     }
@@ -1376,7 +1377,7 @@
      *
      * @param initialState is the state which will receive the first message.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final void setInitialState(State initialState) {
         mSmHandler.setInitialState(initialState);
     }
@@ -1415,7 +1416,7 @@
      *
      * @param destState will be the state that receives the next message.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final void transitionTo(IState destState) {
         mSmHandler.transitionTo(destState);
     }
@@ -1700,7 +1701,7 @@
      * @param obj is assigned to Message.obj
      * @return  A Message object from the global pool
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final Message obtainMessage(int what, int arg1, int arg2, Object obj) {
         return Message.obtain(mSmHandler, what, arg1, arg2, obj);
     }
@@ -1738,7 +1739,7 @@
      *
      * Message is ignored if state machine has quit.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void sendMessage(int what, int arg1) {
         // mSmHandler can be null if the state machine has quit.
         SmHandler smh = mSmHandler;
@@ -1765,7 +1766,7 @@
      *
      * Message is ignored if state machine has quit.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void sendMessage(int what, int arg1, int arg2, Object obj) {
         // mSmHandler can be null if the state machine has quit.
         SmHandler smh = mSmHandler;
@@ -2066,7 +2067,7 @@
     /**
      * Start the state machine.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void start() {
         // mSmHandler can be null if the state machine has quit.
         SmHandler smh = mSmHandler;
@@ -2083,7 +2084,7 @@
      * @param pw
      * @param args
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
         pw.println(getName() + ":");
         pw.println(" total records=" + getLogRecCount());
diff --git a/core/java/com/android/internal/view/IInputConnectionWrapper.java b/core/java/com/android/internal/view/IInputConnectionWrapper.java
index 9257c6d..09732eb 100644
--- a/core/java/com/android/internal/view/IInputConnectionWrapper.java
+++ b/core/java/com/android/internal/view/IInputConnectionWrapper.java
@@ -78,7 +78,7 @@
 
     private Looper mMainLooper;
     private Handler mH;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private Object mLock = new Object();
     @GuardedBy("mLock")
     private boolean mFinished = false;
diff --git a/core/java/com/android/internal/view/menu/ActionMenu.java b/core/java/com/android/internal/view/menu/ActionMenu.java
index 6482629..c699ca1 100644
--- a/core/java/com/android/internal/view/menu/ActionMenu.java
+++ b/core/java/com/android/internal/view/menu/ActionMenu.java
@@ -22,6 +22,7 @@
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
+import android.os.Build;
 import android.view.KeyEvent;
 import android.view.Menu;
 import android.view.MenuItem;
@@ -40,7 +41,7 @@
     
     private ArrayList<ActionMenuItem> mItems;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ActionMenu(Context context) {
         mContext = context;
         mItems = new ArrayList<ActionMenuItem>();
diff --git a/core/java/com/android/internal/view/menu/ActionMenuItem.java b/core/java/com/android/internal/view/menu/ActionMenuItem.java
index bd8bcb9..acb233e 100644
--- a/core/java/com/android/internal/view/menu/ActionMenuItem.java
+++ b/core/java/com/android/internal/view/menu/ActionMenuItem.java
@@ -23,6 +23,7 @@
 import android.content.res.ColorStateList;
 import android.graphics.PorterDuff;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.view.ActionProvider;
 import android.view.ContextMenu.ContextMenuInfo;
 import android.view.KeyEvent;
@@ -70,7 +71,7 @@
     private static final int HIDDEN         = 0x00000008;
     private static final int ENABLED        = 0x00000010;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ActionMenuItem(Context context, int group, int id, int categoryOrder, int ordering,
             CharSequence title) {
         mContext = context;
diff --git a/core/java/com/android/internal/view/menu/ActionMenuItemView.java b/core/java/com/android/internal/view/menu/ActionMenuItemView.java
index 7622b93..61536e8 100644
--- a/core/java/com/android/internal/view/menu/ActionMenuItemView.java
+++ b/core/java/com/android/internal/view/menu/ActionMenuItemView.java
@@ -22,6 +22,7 @@
 import android.content.res.Resources;
 import android.content.res.TypedArray;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.os.Parcelable;
 import android.text.TextUtils;
 import android.util.AttributeSet;
@@ -225,7 +226,7 @@
         updateTextButtonVisibility();
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean hasText() {
         return !TextUtils.isEmpty(getText());
     }
diff --git a/core/java/com/android/internal/view/menu/MenuBuilder.java b/core/java/com/android/internal/view/menu/MenuBuilder.java
index b31ae38b..0b490b2 100644
--- a/core/java/com/android/internal/view/menu/MenuBuilder.java
+++ b/core/java/com/android/internal/view/menu/MenuBuilder.java
@@ -27,6 +27,7 @@
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Parcelable;
 import android.util.SparseArray;
@@ -210,7 +211,7 @@
         setShortcutsVisibleInner(true);
     }
     
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public MenuBuilder setDefaultShowAsAction(int defaultShowAsAction) {
         mDefaultShowAsAction = defaultShowAsAction;
         return this;
@@ -223,7 +224,7 @@
      *
      * @param presenter The presenter to add
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void addMenuPresenter(MenuPresenter presenter) {
         addMenuPresenter(presenter, mContext);
     }
@@ -250,7 +251,7 @@
      *
      * @param presenter The presenter to remove
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void removeMenuPresenter(MenuPresenter presenter) {
         for (WeakReference<MenuPresenter> ref : mPresenters) {
             final MenuPresenter item = ref.get();
@@ -1015,7 +1016,7 @@
      * {@link #startDispatchingItemsChanged()} is called. Useful when
      * many menu operations are going to be performed as a batch.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void stopDispatchingItemsChanged() {
         if (!mPreventDispatchingItemsChanged) {
             mPreventDispatchingItemsChanged = true;
@@ -1023,7 +1024,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void startDispatchingItemsChanged() {
         mPreventDispatchingItemsChanged = false;
 
@@ -1145,7 +1146,7 @@
         return mActionItems;
     }
     
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ArrayList<MenuItemImpl> getNonActionItems() {
         flagActionItems();
         return mNonActionItems;
diff --git a/core/java/com/android/internal/view/menu/MenuItemImpl.java b/core/java/com/android/internal/view/menu/MenuItemImpl.java
index 218f518..2452398 100644
--- a/core/java/com/android/internal/view/menu/MenuItemImpl.java
+++ b/core/java/com/android/internal/view/menu/MenuItemImpl.java
@@ -25,6 +25,7 @@
 import android.content.res.Resources;
 import android.graphics.PorterDuff;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.util.Log;
 import android.view.ActionProvider;
 import android.view.ContextMenu.ContextMenuInfo;
@@ -662,17 +663,17 @@
         return mMenu.getOptionalIconsVisible();
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isActionButton() {
         return (mFlags & IS_ACTION) == IS_ACTION;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean requestsActionButton() {
         return (mShowAsAction & SHOW_AS_ACTION_IF_ROOM) == SHOW_AS_ACTION_IF_ROOM;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean requiresActionButton() {
         return (mShowAsAction & SHOW_AS_ACTION_ALWAYS) == SHOW_AS_ACTION_ALWAYS;
     }
diff --git a/core/java/com/android/internal/view/menu/MenuPopupHelper.java b/core/java/com/android/internal/view/menu/MenuPopupHelper.java
index 980943e..c266d02 100644
--- a/core/java/com/android/internal/view/menu/MenuPopupHelper.java
+++ b/core/java/com/android/internal/view/menu/MenuPopupHelper.java
@@ -23,6 +23,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.graphics.Rect;
+import android.os.Build;
 import android.view.Gravity;
 import android.view.View;
 import android.view.WindowManager;
@@ -47,14 +48,14 @@
     // Mutable cached popup menu properties.
     private View mAnchorView;
     private int mDropDownGravity = Gravity.START;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private boolean mForceShowIcon;
     private Callback mPresenterCallback;
 
     private MenuPopup mPopup;
     private OnDismissListener mOnDismissListener;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public MenuPopupHelper(@NonNull Context context, @NonNull MenuBuilder menu) {
         this(context, menu, null, false, com.android.internal.R.attr.popupMenuStyle, 0);
     }
@@ -93,7 +94,7 @@
       *
       * @param anchor the view to which the popup window should be anchored
       */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setAnchorView(@NonNull View anchor) {
         mAnchorView = anchor;
     }
@@ -125,7 +126,7 @@
       *
       * @param gravity alignment of the popup relative to the anchor
       */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setGravity(int gravity) {
         mDropDownGravity = gravity;
     }
@@ -151,7 +152,7 @@
     }
 
     @NonNull
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public MenuPopup getPopup() {
         if (mPopup == null) {
             mPopup = createPopup();
@@ -165,7 +166,7 @@
      * @return {@code true} if the popup was shown or was already showing prior to calling this
      *         method, {@code false} otherwise
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean tryShow() {
         if (isShowing()) {
             return true;
diff --git a/core/java/com/android/internal/view/menu/MenuPresenter.java b/core/java/com/android/internal/view/menu/MenuPresenter.java
index 35b8fef..37155b9 100644
--- a/core/java/com/android/internal/view/menu/MenuPresenter.java
+++ b/core/java/com/android/internal/view/menu/MenuPresenter.java
@@ -20,6 +20,7 @@
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
+import android.os.Build;
 import android.os.Parcelable;
 import android.view.ViewGroup;
 
@@ -48,7 +49,7 @@
          * @return true if the Callback will handle presenting the submenu, false if
          *         the presenter should attempt to do so.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public boolean onOpenSubMenu(MenuBuilder subMenu);
     }
 
diff --git a/core/java/com/android/internal/widget/AbsActionBarView.java b/core/java/com/android/internal/widget/AbsActionBarView.java
index 0f0c1a3..914de61 100644
--- a/core/java/com/android/internal/widget/AbsActionBarView.java
+++ b/core/java/com/android/internal/widget/AbsActionBarView.java
@@ -23,6 +23,7 @@
 import android.content.Context;
 import android.content.res.Configuration;
 import android.content.res.TypedArray;
+import android.os.Build;
 import android.util.AttributeSet;
 import android.util.TypedValue;
 import android.view.ContextThemeWrapper;
@@ -294,7 +295,7 @@
         return isOverflowReserved() && getVisibility() == VISIBLE;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void dismissPopupMenus() {
         if (mActionMenuPresenter != null) {
             mActionMenuPresenter.dismissPopupMenus();
diff --git a/core/java/com/android/internal/widget/ActionBarContextView.java b/core/java/com/android/internal/widget/ActionBarContextView.java
index 051526e..80fc2188 100644
--- a/core/java/com/android/internal/widget/ActionBarContextView.java
+++ b/core/java/com/android/internal/widget/ActionBarContextView.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.view.ActionMode;
@@ -58,7 +59,7 @@
         this(context, null);
     }
     
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ActionBarContextView(Context context, AttributeSet attrs) {
         this(context, attrs, com.android.internal.R.attr.actionModeStyle);
     }
diff --git a/core/java/com/android/internal/widget/ActionBarOverlayLayout.java b/core/java/com/android/internal/widget/ActionBarOverlayLayout.java
index aca0b71..adbf645 100644
--- a/core/java/com/android/internal/widget/ActionBarOverlayLayout.java
+++ b/core/java/com/android/internal/widget/ActionBarOverlayLayout.java
@@ -170,7 +170,7 @@
         init(context);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ActionBarOverlayLayout(Context context, AttributeSet attrs) {
         super(context, attrs);
         init(context);
diff --git a/core/java/com/android/internal/widget/CachingIconView.java b/core/java/com/android/internal/widget/CachingIconView.java
index 84cde1b..3d4bb64 100644
--- a/core/java/com/android/internal/widget/CachingIconView.java
+++ b/core/java/com/android/internal/widget/CachingIconView.java
@@ -25,6 +25,7 @@
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.Icon;
 import android.net.Uri;
+import android.os.Build;
 import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.view.RemotableViewMethod;
@@ -50,7 +51,7 @@
     private int mIconColor;
     private boolean mWillBeForceHidden;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public CachingIconView(Context context, @Nullable AttributeSet attrs) {
         super(context, attrs);
     }
diff --git a/core/java/com/android/internal/widget/IRemoteViewsFactory.aidl b/core/java/com/android/internal/widget/IRemoteViewsFactory.aidl
index d6efca5..c06dab9 100644
--- a/core/java/com/android/internal/widget/IRemoteViewsFactory.aidl
+++ b/core/java/com/android/internal/widget/IRemoteViewsFactory.aidl
@@ -21,23 +21,23 @@
 
 /** {@hide} */
 interface IRemoteViewsFactory {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void onDataSetChanged();
     oneway void onDataSetChangedAsync();
     oneway void onDestroy(in Intent intent);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     int getCount();
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     RemoteViews getViewAt(int position);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     RemoteViews getLoadingView();
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     int getViewTypeCount();
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     long getItemId(int position);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean hasStableIds();
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean isCreated();
 }
 
diff --git a/core/java/com/android/internal/widget/LinearLayoutWithDefaultTouchRecepient.java b/core/java/com/android/internal/widget/LinearLayoutWithDefaultTouchRecepient.java
index 9ef9f69..f230ddb 100644
--- a/core/java/com/android/internal/widget/LinearLayoutWithDefaultTouchRecepient.java
+++ b/core/java/com/android/internal/widget/LinearLayoutWithDefaultTouchRecepient.java
@@ -19,6 +19,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.graphics.Rect;
+import android.os.Build;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.view.View;
@@ -46,7 +47,7 @@
         super(context, attrs);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setDefaultTouchRecepient(View defaultTouchRecepient) {
         mDefaultTouchRecepient = defaultTouchRecepient;
     }
diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java
index 73318bf..a1dc4d9 100644
--- a/core/java/com/android/internal/widget/LockPatternUtils.java
+++ b/core/java/com/android/internal/widget/LockPatternUtils.java
@@ -35,6 +35,7 @@
 import android.content.Context;
 import android.content.pm.UserInfo;
 import android.os.AsyncTask;
+import android.os.Build;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Looper;
@@ -694,13 +695,13 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setOwnerInfo(String info, int userId) {
         setString(LOCK_SCREEN_OWNER_INFO, info, userId);
         updateCryptoUserInfo(userId);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setOwnerInfoEnabled(boolean enabled, int userId) {
         setBoolean(LOCK_SCREEN_OWNER_INFO_ENABLED, enabled, userId);
         updateCryptoUserInfo(userId);
@@ -1078,7 +1079,7 @@
         return type != CREDENTIAL_TYPE_NONE;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isLockPasswordEnabled(int userId) {
         int type = getCredentialTypeForUser(userId);
         return type == CREDENTIAL_TYPE_PASSWORD || type == CREDENTIAL_TYPE_PIN;
diff --git a/core/java/com/android/internal/widget/NumericTextView.java b/core/java/com/android/internal/widget/NumericTextView.java
index c8f9011..e6cb24d 100644
--- a/core/java/com/android/internal/widget/NumericTextView.java
+++ b/core/java/com/android/internal/widget/NumericTextView.java
@@ -19,6 +19,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.graphics.Rect;
+import android.os.Build;
 import android.util.AttributeSet;
 import android.util.StateSet;
 import android.view.KeyEvent;
@@ -54,7 +55,7 @@
 
     private OnValueChangedListener mListener;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public NumericTextView(Context context, AttributeSet attrs) {
         super(context, attrs);
 
diff --git a/core/java/com/android/internal/widget/PreferenceImageView.java b/core/java/com/android/internal/widget/PreferenceImageView.java
index 43b6b5a..0ca98cf 100644
--- a/core/java/com/android/internal/widget/PreferenceImageView.java
+++ b/core/java/com/android/internal/widget/PreferenceImageView.java
@@ -18,6 +18,7 @@
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
+import android.os.Build;
 import android.util.AttributeSet;
 import android.widget.ImageView;
 
@@ -30,7 +31,7 @@
         this(context, null);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public PreferenceImageView(Context context, AttributeSet attrs) {
         this(context, attrs, 0);
     }
diff --git a/core/java/com/android/internal/widget/RecyclerView.java b/core/java/com/android/internal/widget/RecyclerView.java
index d7a01c4..89a90e9 100644
--- a/core/java/com/android/internal/widget/RecyclerView.java
+++ b/core/java/com/android/internal/widget/RecyclerView.java
@@ -2799,6 +2799,7 @@
                 if (index < 0) {
                     Log.e(TAG, "Error processing scroll; pointer index for id "
                             + mScrollPointerId + " not found. Did any MotionEvents get skipped?");
+                    vtev.recycle();
                     return false;
                 }
 
@@ -4968,7 +4969,7 @@
          * constructed by {@link GapWorker} prefetch from being bound to a lower priority prefetch.
          */
         static class ScrapData {
-            @UnsupportedAppUsage
+            @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
             ArrayList<ViewHolder> mScrapHeap = new ArrayList<>();
             int mMaxScrap = DEFAULT_MAX_SCRAP;
             long mCreateRunningAverageNs = 0;
diff --git a/core/java/com/android/internal/widget/ScrollBarUtils.java b/core/java/com/android/internal/widget/ScrollBarUtils.java
index 3e9d697..0108bd4 100644
--- a/core/java/com/android/internal/widget/ScrollBarUtils.java
+++ b/core/java/com/android/internal/widget/ScrollBarUtils.java
@@ -17,10 +17,11 @@
 package com.android.internal.widget;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 public class ScrollBarUtils {
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static int getThumbLength(int size, int thickness, int extent, int range) {
         // Avoid the tiny thumb.
         final int minLength = thickness * 2;
diff --git a/core/java/com/android/internal/widget/ScrollingTabContainerView.java b/core/java/com/android/internal/widget/ScrollingTabContainerView.java
index aa0b0bb..d302967 100644
--- a/core/java/com/android/internal/widget/ScrollingTabContainerView.java
+++ b/core/java/com/android/internal/widget/ScrollingTabContainerView.java
@@ -23,6 +23,7 @@
 import android.content.Context;
 import android.content.res.Configuration;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.text.TextUtils;
 import android.text.TextUtils.TruncateAt;
 import android.view.Gravity;
@@ -224,7 +225,7 @@
         mStackedTabMaxWidth = abp.getStackedTabMaxWidth();
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void animateToVisibility(int visibility) {
         if (mVisibilityAnim != null) {
             mVisibilityAnim.cancel();
@@ -249,7 +250,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void animateToTab(final int position) {
         final View tabView = mTabLayout.getChildAt(position);
         if (mTabSelector != null) {
@@ -331,7 +332,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void updateTab(int position) {
         ((TabView) mTabLayout.getChildAt(position)).update();
         if (mTabSpinner != null) {
diff --git a/core/java/com/android/server/SystemConfig.java b/core/java/com/android/server/SystemConfig.java
index ea390cd..d6e2c2f 100644
--- a/core/java/com/android/server/SystemConfig.java
+++ b/core/java/com/android/server/SystemConfig.java
@@ -19,6 +19,7 @@
 import static com.android.internal.util.ArrayUtils.appendInt;
 
 import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.app.ActivityManager;
 import android.content.ComponentName;
 import android.content.pm.FeatureInfo;
@@ -238,6 +239,14 @@
      */
     private Map<String, Map<String, String>> mNamedActors = null;
 
+    // Package name of the package pre-installed on a read-only
+    // partition that is used to verify if an overlay package fulfills
+    // the 'config_signature' policy by comparing their signatures:
+    // if the overlay package is signed with the same certificate as
+    // the package declared in 'overlay-config-signature' tag, then the
+    // overlay package fulfills the 'config_signature' policy.
+    private String mOverlayConfigSignaturePackage;
+
     public static SystemConfig getInstance() {
         if (!isSystemProcess()) {
             Slog.wtf(TAG, "SystemConfig is being accessed by a process other than "
@@ -433,6 +442,12 @@
         return mNamedActors != null ? mNamedActors : Collections.emptyMap();
     }
 
+    @Nullable
+    public String getOverlayConfigSignaturePackage() {
+        return TextUtils.isEmpty(mOverlayConfigSignaturePackage)
+                ? null : mOverlayConfigSignaturePackage;
+    }
+
     /**
      * Only use for testing. Do NOT use in production code.
      * @param readPermissions false to create an empty SystemConfig; true to read the permissions.
@@ -1151,6 +1166,27 @@
                         }
                         XmlUtils.skipCurrentTag(parser);
                     } break;
+                    case "overlay-config-signature": {
+                        if (allowAll) {
+                            String pkgName = parser.getAttributeValue(null, "package");
+                            if (pkgName == null) {
+                                Slog.w(TAG, "<" + name + "> without package in " + permFile
+                                        + " at " + parser.getPositionDescription());
+                            } else {
+                                if (TextUtils.isEmpty(mOverlayConfigSignaturePackage)) {
+                                    mOverlayConfigSignaturePackage = pkgName.intern();
+                                } else {
+                                    throw new IllegalStateException("Reference signature package "
+                                                  + "defined as both "
+                                                  + mOverlayConfigSignaturePackage
+                                                  + " and " + pkgName);
+                                }
+                            }
+                        } else {
+                            logNotAllowedInPartition(name, permFile, parser);
+                        }
+                        XmlUtils.skipCurrentTag(parser);
+                    } break;
                     case "rollback-whitelisted-app": {
                         String pkgname = parser.getAttributeValue(null, "package");
                         if (pkgname == null) {
diff --git a/core/java/com/android/server/net/NetlinkTracker.java b/core/java/com/android/server/net/NetlinkTracker.java
index b57397f..197984f 100644
--- a/core/java/com/android/server/net/NetlinkTracker.java
+++ b/core/java/com/android/server/net/NetlinkTracker.java
@@ -20,6 +20,7 @@
 import android.net.LinkAddress;
 import android.net.LinkProperties;
 import android.net.RouteInfo;
+import android.os.Build;
 import android.util.Log;
 
 import java.net.InetAddress;
@@ -80,7 +81,7 @@
 
     private static final boolean DBG = false;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public NetlinkTracker(String iface, Callback callback) {
         TAG = "NetlinkTracker/" + iface;
         mInterfaceName = iface;
@@ -189,12 +190,12 @@
     /**
      * Returns a copy of this object's LinkProperties.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public synchronized LinkProperties getLinkProperties() {
         return new LinkProperties(mLinkProperties);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public synchronized void clearLinkProperties() {
         // Clear the repository before clearing mLinkProperties. That way, if a clear() happens
         // while interfaceDnsServerInfo() is being called, we'll end up with no DNS servers in
diff --git a/core/java/com/google/android/collect/Sets.java b/core/java/com/google/android/collect/Sets.java
index c67a88a..e242915 100644
--- a/core/java/com/google/android/collect/Sets.java
+++ b/core/java/com/google/android/collect/Sets.java
@@ -17,6 +17,7 @@
 package com.google.android.collect;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.util.ArraySet;
 
 import java.util.Collections;
@@ -107,7 +108,7 @@
     /**
      * Creates a {@code ArraySet} instance containing the given elements.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static <E> ArraySet<E> newArraySet(E... elements) {
         int capacity = elements.length * 4 / 3 + 1;
         ArraySet<E> set = new ArraySet<E>(capacity);
diff --git a/core/java/org/apache/http/conn/ssl/SSLSocketFactory.java b/core/java/org/apache/http/conn/ssl/SSLSocketFactory.java
index e1fe1bd..2509126 100644
--- a/core/java/org/apache/http/conn/ssl/SSLSocketFactory.java
+++ b/core/java/org/apache/http/conn/ssl/SSLSocketFactory.java
@@ -182,7 +182,7 @@
     private final SSLContext sslcontext;
     @UnsupportedAppUsage
     private final javax.net.ssl.SSLSocketFactory socketfactory;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final HostNameResolver nameResolver;
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
     private X509HostnameVerifier hostnameVerifier = BROWSER_COMPATIBLE_HOSTNAME_VERIFIER;
@@ -262,7 +262,7 @@
         this.nameResolver = null;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static KeyManager[] createKeyManagers(final KeyStore keystore, final String password)
         throws KeyStoreException, NoSuchAlgorithmException, UnrecoverableKeyException {
         if (keystore == null) {
@@ -274,7 +274,7 @@
         return kmfactory.getKeyManagers(); 
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static TrustManager[] createTrustManagers(final KeyStore keystore)
         throws KeyStoreException, NoSuchAlgorithmException { 
         if (keystore == null) {
diff --git a/core/jni/Android.bp b/core/jni/Android.bp
index f0f1b74..1968146 100644
--- a/core/jni/Android.bp
+++ b/core/jni/Android.bp
@@ -315,4 +315,9 @@
             cflags: ["-DANDROID_EXPERIMENTAL_MTE"],
         },
     },
+
+    // Workaround Clang LTO crash.
+    lto: {
+        never: true,
+    },
 }
diff --git a/core/jni/android_media_AudioSystem.cpp b/core/jni/android_media_AudioSystem.cpp
index 1f62544..7493e39 100644
--- a/core/jni/android_media_AudioSystem.cpp
+++ b/core/jni/android_media_AudioSystem.cpp
@@ -336,7 +336,7 @@
             return (jint)AUDIO_JAVA_BAD_VALUE;
         }
         const char *address = env->GetStringUTFChars((jstring)addrJobj, NULL);
-        AudioDeviceTypeAddr dev = AudioDeviceTypeAddr(typesPtr[i], address);
+        AudioDeviceTypeAddr dev = AudioDeviceTypeAddr((audio_devices_t)typesPtr[i], address);
         audioDeviceTypeAddrVector.add(dev);
         env->ReleaseStringUTFChars((jstring)addrJobj, address);
     }
@@ -818,7 +818,8 @@
                                                bool useInMask)
 {
     nAudioGainConfig->index = env->GetIntField(jAudioGainConfig, gAudioGainConfigFields.mIndex);
-    nAudioGainConfig->mode = env->GetIntField(jAudioGainConfig, gAudioGainConfigFields.mMode);
+    nAudioGainConfig->mode =
+            (audio_gain_mode_t)env->GetIntField(jAudioGainConfig, gAudioGainConfigFields.mMode);
     ALOGV("convertAudioGainConfigToNative got gain index %d", nAudioGainConfig->index);
     jint jMask = env->GetIntField(jAudioGainConfig, gAudioGainConfigFields.mChannelMask);
     audio_channel_mask_t nMask;
@@ -938,8 +939,8 @@
 
     jobject jAudioDevicePort = env->GetObjectField(jAudioPortConfig,
             gAudioPortConfigFields.mPort);
-    nAudioPortConfig->ext.device.type = env->GetIntField(jAudioDevicePort,
-            gAudioPortFields.mType);
+    nAudioPortConfig->ext.device.type =
+            (audio_devices_t)env->GetIntField(jAudioDevicePort, gAudioPortFields.mType);
     jstring jDeviceAddress = (jstring)env->GetObjectField(jAudioDevicePort,
             gAudioPortFields.mAddress);
     const char *nDeviceAddress = env->GetStringUTFChars(jDeviceAddress, NULL);
@@ -2332,7 +2333,7 @@
 
 static jint
 android_media_AudioSystem_setAllowedCapturePolicy(JNIEnv *env, jobject thiz, jint uid, jint flags) {
-    return AudioSystem::setAllowedCapturePolicy(uid, flags);
+    return AudioSystem::setAllowedCapturePolicy(uid, static_cast<audio_flags_mask_t>(flags));
 }
 
 static jint
@@ -2367,8 +2368,10 @@
 
     const char *c_address = env->GetStringUTFChars(deviceAddress, NULL);
     int status = check_AudioSystem_Command(
-            AudioSystem::setPreferredDeviceForStrategy((product_strategy_t) strategy,
-                    AudioDeviceTypeAddr(deviceType, c_address)));
+            AudioSystem::setPreferredDeviceForStrategy((product_strategy_t)strategy,
+                                                       AudioDeviceTypeAddr((audio_devices_t)
+                                                                                   deviceType,
+                                                                           c_address)));
     env->ReleaseStringUTFChars(deviceAddress, c_address);
     return (jint) status;
 }
diff --git a/core/jni/android_net_NetUtils.cpp b/core/jni/android_net_NetUtils.cpp
index 7d6135b..8d4c4e5 100644
--- a/core/jni/android_net_NetUtils.cpp
+++ b/core/jni/android_net_NetUtils.cpp
@@ -95,12 +95,11 @@
 {
     int optval_ignored = 0;
     int fd = jniGetFDFromFileDescriptor(env, javaFd);
-    if (setsockopt(
-            fd, SOL_SOCKET, SO_DETACH_FILTER, &optval_ignored, sizeof(optval_ignored)) != 0) {
+    if (setsockopt(fd, SOL_SOCKET, SO_DETACH_FILTER, &optval_ignored, sizeof(optval_ignored)) !=
+        0) {
         jniThrowExceptionFmt(env, "java/net/SocketException",
                 "setsockopt(SO_DETACH_FILTER): %s", strerror(errno));
     }
-
 }
 
 static jboolean android_net_utils_bindProcessToNetwork(JNIEnv *env, jobject thiz, jint netId)
diff --git a/core/jni/android_opengl_GLES10.cpp b/core/jni/android_opengl_GLES10.cpp
index e4d138d..d65b498 100644
--- a/core/jni/android_opengl_GLES10.cpp
+++ b/core/jni/android_opengl_GLES10.cpp
@@ -640,7 +640,7 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, data, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)data - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -684,7 +684,7 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, data, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)data - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -929,7 +929,7 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, indices, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)indices - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -2801,7 +2801,8 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, pixels, _exception ? JNI_FALSE : JNI_TRUE);
+        releasePointer(_env, _array, (void *)((char *)pixels - _bufferOffset),
+                       _exception ? JNI_FALSE : JNI_TRUE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -3241,7 +3242,7 @@
         (GLvoid *)pixels
     );
     if (_array) {
-        releasePointer(_env, _array, pixels, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)pixels - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -3301,7 +3302,7 @@
         (GLvoid *)pixels
     );
     if (_array) {
-        releasePointer(_env, _array, pixels, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)pixels - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
diff --git a/core/jni/android_opengl_GLES11.cpp b/core/jni/android_opengl_GLES11.cpp
index 1069a1d..9724e6c 100644
--- a/core/jni/android_opengl_GLES11.cpp
+++ b/core/jni/android_opengl_GLES11.cpp
@@ -464,7 +464,7 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, data, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)data - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -509,7 +509,7 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, data, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)data - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
diff --git a/core/jni/android_opengl_GLES11Ext.cpp b/core/jni/android_opengl_GLES11Ext.cpp
index 86d7ecd..1ffa4ec 100644
--- a/core/jni/android_opengl_GLES11Ext.cpp
+++ b/core/jni/android_opengl_GLES11Ext.cpp
@@ -893,7 +893,8 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, image, _exception ? JNI_FALSE : JNI_TRUE);
+        releasePointer(_env, _array, (void *)((char *)image - _bufferOffset),
+                       _exception ? JNI_FALSE : JNI_TRUE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -930,7 +931,8 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, image, _exception ? JNI_FALSE : JNI_TRUE);
+        releasePointer(_env, _array, (void *)((char *)image - _bufferOffset),
+                       _exception ? JNI_FALSE : JNI_TRUE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
diff --git a/core/jni/android_opengl_GLES20.cpp b/core/jni/android_opengl_GLES20.cpp
index 49baa51..d832558 100644
--- a/core/jni/android_opengl_GLES20.cpp
+++ b/core/jni/android_opengl_GLES20.cpp
@@ -599,7 +599,7 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, data, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)data - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -644,7 +644,7 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, data, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)data - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -758,7 +758,7 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, data, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)data - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -802,7 +802,7 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, data, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)data - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -1379,7 +1379,7 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, indices, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)indices - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -4273,7 +4273,8 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, pixels, _exception ? JNI_FALSE : JNI_TRUE);
+        releasePointer(_env, _array, (void *)((char *)pixels - _bufferOffset),
+                       _exception ? JNI_FALSE : JNI_TRUE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -4380,7 +4381,7 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, binary, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)binary - _bufferOffset), JNI_FALSE);
     }
     if (shaders_base) {
         _env->ReleaseIntArrayElements(shaders_ref, (jint*)shaders_base,
@@ -4445,7 +4446,8 @@
 
 exit:
     if (_binaryArray) {
-        releasePointer(_env, _binaryArray, binary, JNI_FALSE);
+        releasePointer(_env, _binaryArray, (void *)((char *)binary - _binaryBufferOffset),
+                       JNI_FALSE);
     }
     if (_shadersArray) {
         _env->ReleaseIntArrayElements(_shadersArray, (jint*)shaders, JNI_ABORT);
@@ -4568,7 +4570,7 @@
         (GLvoid *)pixels
     );
     if (_array) {
-        releasePointer(_env, _array, pixels, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)pixels - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -4816,7 +4818,7 @@
         (GLvoid *)pixels
     );
     if (_array) {
-        releasePointer(_env, _array, pixels, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)pixels - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
diff --git a/core/jni/android_opengl_GLES30.cpp b/core/jni/android_opengl_GLES30.cpp
index 32a2a24..719c6b3 100644
--- a/core/jni/android_opengl_GLES30.cpp
+++ b/core/jni/android_opengl_GLES30.cpp
@@ -463,7 +463,7 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, indices, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)indices - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -516,7 +516,7 @@
         (GLvoid *)pixels
     );
     if (_array) {
-        releasePointer(_env, _array, pixels, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)pixels - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -580,7 +580,7 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, pixels, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)pixels - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -660,7 +660,7 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, data, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)data - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -723,7 +723,7 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, data, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)data - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -5445,7 +5445,8 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, binary, _exception ? JNI_FALSE : JNI_TRUE);
+        releasePointer(_env, _array, (void *)((char *)binary - _bufferOffset),
+                       _exception ? JNI_FALSE : JNI_TRUE);
     }
     if (binaryFormat_base) {
         _env->ReleaseIntArrayElements(binaryFormat_ref, (jint*)binaryFormat_base,
@@ -5519,7 +5520,8 @@
 
 exit:
     if (_binaryArray) {
-        releasePointer(_env, _binaryArray, binary, _exception ? JNI_FALSE : JNI_TRUE);
+        releasePointer(_env, _binaryArray, (void *)((char *)binary - _binaryBufferOffset),
+                       _exception ? JNI_FALSE : JNI_TRUE);
     }
     if (_binaryFormatArray) {
         _env->ReleaseIntArrayElements(_binaryFormatArray, (jint*)binaryFormat, _exception ? JNI_ABORT : 0);
@@ -5564,7 +5566,7 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, binary, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)binary - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
diff --git a/core/jni/android_opengl_GLES32.cpp b/core/jni/android_opengl_GLES32.cpp
index 07a794d..7ed7548 100644
--- a/core/jni/android_opengl_GLES32.cpp
+++ b/core/jni/android_opengl_GLES32.cpp
@@ -863,7 +863,7 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, indices, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)indices - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -911,7 +911,7 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, indices, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)indices - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -1048,7 +1048,8 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, data, _exception ? JNI_FALSE : JNI_TRUE);
+        releasePointer(_env, _array, (void *)((char *)data - _bufferOffset),
+                       _exception ? JNI_FALSE : JNI_TRUE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
diff --git a/core/jni/android_os_HwBinder.cpp b/core/jni/android_os_HwBinder.cpp
index 48f33a6..781895e 100644
--- a/core/jni/android_os_HwBinder.cpp
+++ b/core/jni/android_os_HwBinder.cpp
@@ -20,6 +20,8 @@
 
 #include "android_os_HwBinder.h"
 
+#include "android_util_Binder.h" // for binder_report_exception
+
 #include "android_os_HwParcel.h"
 #include "android_os_HwRemoteBinder.h"
 
@@ -183,15 +185,7 @@
         env->ExceptionDescribe();
         env->ExceptionClear();
 
-        // It is illegal to call IsInstanceOf if there is a pending exception.
-        // Attempting to do so results in a JniAbort which crashes the entire process.
-        if (env->IsInstanceOf(excep, gErrorClass)) {
-            /* It's an error */
-            LOG(ERROR) << "Forcefully exiting";
-            _exit(1);
-        } else {
-            LOG(ERROR) << "Uncaught exception!";
-        }
+        binder_report_exception(env, excep, "Uncaught error or exception in hwbinder!");
 
         env->DeleteLocalRef(excep);
     }
diff --git a/core/jni/android_os_HwParcel.cpp b/core/jni/android_os_HwParcel.cpp
index ff336ee..4c4443f 100644
--- a/core/jni/android_os_HwParcel.cpp
+++ b/core/jni/android_os_HwParcel.cpp
@@ -990,6 +990,8 @@
     }
 
     if (!validateCanUseHwBinder(binder)) {
+        jniThrowException(env, "java/lang/IllegalArgumentException",
+                          "Local binder is not supported in Java");
         return nullptr;
     }
 
diff --git a/core/jni/android_os_Parcel.cpp b/core/jni/android_os_Parcel.cpp
index 9ae3d16..241570a 100644
--- a/core/jni/android_os_Parcel.cpp
+++ b/core/jni/android_os_Parcel.cpp
@@ -90,6 +90,14 @@
     env->CallVoidMethod(parcelObj, gParcelOffsets.recycle);
 }
 
+static void android_os_Parcel_markSensitive(jlong nativePtr)
+{
+    Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
+    if (parcel) {
+        parcel->markSensitive();
+    }
+}
+
 static jint android_os_Parcel_dataSize(jlong nativePtr)
 {
     Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
@@ -638,50 +646,77 @@
     return ret;
 }
 
+// String tries to allocate itself on the stack, within a known size, but will
+// make a heap allocation if not.
+template <size_t StackReserve>
+class StackString {
+public:
+    StackString(JNIEnv* env, jstring str) : mEnv(env), mJStr(str) {
+        LOG_ALWAYS_FATAL_IF(str == nullptr);
+        mSize = env->GetStringLength(str);
+        if (mSize > StackReserve) {
+            mStr = new jchar[mSize];
+        } else {
+            mStr = &mBuffer[0];
+        }
+        mEnv->GetStringRegion(str, 0, mSize, mStr);
+    }
+    ~StackString() {
+        if (mStr != &mBuffer[0]) {
+            delete[] mStr;
+        }
+    }
+    const jchar* str() { return mStr; }
+    jsize size() { return mSize; }
+
+private:
+    JNIEnv* mEnv;
+    jstring mJStr;
+
+    jchar mBuffer[StackReserve];
+    // pointer to &mBuffer[0] if string fits in mBuffer, otherwise owned
+    jchar* mStr;
+    jsize mSize;
+};
+
+// This size is chosen to be longer than most interface descriptors.
+// Ones longer than this will be allocated on the heap.
+typedef StackString<64> InterfaceDescriptorString;
+
 static void android_os_Parcel_writeInterfaceToken(JNIEnv* env, jclass clazz, jlong nativePtr,
                                                   jstring name)
 {
     Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
-    if (parcel != NULL) {
-        // In the current implementation, the token is just the serialized interface name that
-        // the caller expects to be invoking
-        const jchar* str = env->GetStringCritical(name, 0);
-        if (str != NULL) {
-            parcel->writeInterfaceToken(String16(
-                  reinterpret_cast<const char16_t*>(str),
-                  env->GetStringLength(name)));
-            env->ReleaseStringCritical(name, str);
-        }
+    if (parcel != nullptr) {
+        InterfaceDescriptorString descriptor(env, name);
+        parcel->writeInterfaceToken(reinterpret_cast<const char16_t*>(descriptor.str()),
+                                    descriptor.size());
     }
 }
 
 static void android_os_Parcel_enforceInterface(JNIEnv* env, jclass clazz, jlong nativePtr, jstring name)
 {
     Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
-    if (parcel != NULL) {
-        const jchar* str = env->GetStringCritical(name, 0);
-        if (str) {
-            IPCThreadState* threadState = IPCThreadState::self();
-            const int32_t oldPolicy = threadState->getStrictModePolicy();
-            const bool isValid = parcel->enforceInterface(
-                reinterpret_cast<const char16_t*>(str),
-                env->GetStringLength(name),
-                threadState);
-            env->ReleaseStringCritical(name, str);
-            if (isValid) {
-                const int32_t newPolicy = threadState->getStrictModePolicy();
-                if (oldPolicy != newPolicy) {
-                    // Need to keep the Java-level thread-local strict
-                    // mode policy in sync for the libcore
-                    // enforcements, which involves an upcall back
-                    // into Java.  (We can't modify the
-                    // Parcel.enforceInterface signature, as it's
-                    // pseudo-public, and used via AIDL
-                    // auto-generation...)
-                    set_dalvik_blockguard_policy(env, newPolicy);
-                }
-                return;     // everything was correct -> return silently
+    if (parcel != nullptr) {
+        InterfaceDescriptorString descriptor(env, name);
+        IPCThreadState* threadState = IPCThreadState::self();
+        const int32_t oldPolicy = threadState->getStrictModePolicy();
+        const bool isValid =
+                parcel->enforceInterface(reinterpret_cast<const char16_t*>(descriptor.str()),
+                                         descriptor.size(), threadState);
+        if (isValid) {
+            const int32_t newPolicy = threadState->getStrictModePolicy();
+            if (oldPolicy != newPolicy) {
+                // Need to keep the Java-level thread-local strict
+                // mode policy in sync for the libcore
+                // enforcements, which involves an upcall back
+                // into Java.  (We can't modify the
+                // Parcel.enforceInterface signature, as it's
+                // pseudo-public, and used via AIDL
+                // auto-generation...)
+                set_dalvik_blockguard_policy(env, newPolicy);
             }
+            return; // everything was correct -> return silently
         }
     }
 
@@ -731,6 +766,8 @@
 
 static const JNINativeMethod gParcelMethods[] = {
     // @CriticalNative
+    {"nativeMarkSensitive",             "(J)V", (void*)android_os_Parcel_markSensitive},
+    // @CriticalNative
     {"nativeDataSize",            "(J)I", (void*)android_os_Parcel_dataSize},
     // @CriticalNative
     {"nativeDataAvail",           "(J)I", (void*)android_os_Parcel_dataAvail},
diff --git a/core/jni/android_util_Binder.cpp b/core/jni/android_util_Binder.cpp
index 9643b64..581dc08 100644
--- a/core/jni/android_util_Binder.cpp
+++ b/core/jni/android_util_Binder.cpp
@@ -302,8 +302,9 @@
     report_java_lang_error_fatal_error(env, error, msg);
 }
 
-static void report_exception(JNIEnv* env, jthrowable excep, const char* msg)
-{
+namespace android {
+
+void binder_report_exception(JNIEnv* env, jthrowable excep, const char* msg) {
     env->ExceptionClear();
 
     ScopedLocalRef<jstring> tagstr(env, env->NewStringUTF(LOG_TAG));
@@ -331,6 +332,8 @@
     }
 }
 
+} // namespace android
+
 class JavaBBinderHolder;
 
 class JavaBBinder : public BBinder
@@ -405,9 +408,9 @@
 
         if (env->ExceptionCheck()) {
             ScopedLocalRef<jthrowable> excep(env, env->ExceptionOccurred());
-            report_exception(env, excep.get(),
-                "*** Uncaught remote exception!  "
-                "(Exceptions are not yet supported across processes.)");
+            binder_report_exception(env, excep.get(),
+                                    "*** Uncaught remote exception!  "
+                                    "(Exceptions are not yet supported across processes.)");
             res = JNI_FALSE;
         }
 
@@ -421,8 +424,8 @@
 
         if (env->ExceptionCheck()) {
             ScopedLocalRef<jthrowable> excep(env, env->ExceptionOccurred());
-            report_exception(env, excep.get(),
-                "*** Uncaught exception in onBinderStrictModePolicyChange");
+            binder_report_exception(env, excep.get(),
+                                    "*** Uncaught exception in onBinderStrictModePolicyChange");
         }
 
         // Need to always call through the native implementation of
@@ -567,8 +570,8 @@
                                       jBinderProxy.get());
             if (env->ExceptionCheck()) {
                 jthrowable excep = env->ExceptionOccurred();
-                report_exception(env, excep,
-                        "*** Uncaught exception returned from death notification!");
+                binder_report_exception(env, excep,
+                                        "*** Uncaught exception returned from death notification!");
             }
 
             // Serialize with our containing DeathRecipientList so that we can't
@@ -1163,8 +1166,8 @@
 
     if (env->ExceptionCheck()) {
         ScopedLocalRef<jthrowable> excep(env, env->ExceptionOccurred());
-        report_exception(env, excep.get(),
-            "*** Uncaught exception in binderProxyLimitCallbackFromNative");
+        binder_report_exception(env, excep.get(),
+                                "*** Uncaught exception in binderProxyLimitCallbackFromNative");
     }
 }
 
diff --git a/core/jni/android_util_Binder.h b/core/jni/android_util_Binder.h
index c109d6c..9098d46 100644
--- a/core/jni/android_util_Binder.h
+++ b/core/jni/android_util_Binder.h
@@ -35,6 +35,8 @@
 extern void signalExceptionForError(JNIEnv* env, jobject obj, status_t err,
         bool canThrowRemoteException = false, int parcelSize = 0);
 
+// does not take ownership of the exception, aborts if this is an error
+void binder_report_exception(JNIEnv* env, jthrowable excep, const char* msg);
 }
 
 #endif
diff --git a/core/jni/android_view_InputEventReceiver.cpp b/core/jni/android_view_InputEventReceiver.cpp
index cc94d6f..4220c1d 100644
--- a/core/jni/android_view_InputEventReceiver.cpp
+++ b/core/jni/android_view_InputEventReceiver.cpp
@@ -321,7 +321,7 @@
                                     jboolean(focusEvent->getHasFocus()),
                                     jboolean(focusEvent->getInTouchMode()));
                 finishInputEvent(seq, true /* handled */);
-                return OK;
+                continue;
             }
 
             default:
diff --git a/core/jni/com_android_internal_os_Zygote.cpp b/core/jni/com_android_internal_os_Zygote.cpp
index dadf08f..6381cf5 100644
--- a/core/jni/com_android_internal_os_Zygote.cpp
+++ b/core/jni/com_android_internal_os_Zygote.cpp
@@ -78,8 +78,8 @@
 #include <android-base/unique_fd.h>
 #include <bionic/malloc.h>
 #include <bionic/mte.h>
-#include <bionic/mte_kernel.h>
 #include <cutils/fs.h>
+#include <cutils/memory.h>
 #include <cutils/multiuser.h>
 #include <cutils/sockets.h>
 #include <private/android_filesystem_config.h>
@@ -647,6 +647,13 @@
 
   // Set the jemalloc decay time to 1.
   mallopt(M_DECAY_TIME, 1);
+
+  // Avoid potentially expensive memory mitigations, mostly meant for system
+  // processes, in apps. These may cause app compat problems, use more memory,
+  // or reduce performance. While it would be nice to have them for apps,
+  // we will have to wait until they are proven out, have more efficient
+  // hardware, and/or apply them only to new applications.
+  process_disable_memory_mitigations();
 }
 
 static void SetUpSeccompFilter(uid_t uid, bool is_child_zygote) {
@@ -796,10 +803,14 @@
   PrepareDir(dir, mode, uid, gid, fail_fn);
 }
 
+static bool BindMount(const std::string& source_dir, const std::string& target_dir) {
+  return !(TEMP_FAILURE_RETRY(mount(source_dir.c_str(), target_dir.c_str(), nullptr,
+                                    MS_BIND | MS_REC, nullptr)) == -1);
+}
+
 static void BindMount(const std::string& source_dir, const std::string& target_dir,
                       fail_fn_t fail_fn) {
-  if (TEMP_FAILURE_RETRY(mount(source_dir.c_str(), target_dir.c_str(), nullptr,
-                               MS_BIND | MS_REC, nullptr)) == -1) {
+  if (!BindMount(source_dir, target_dir)) {
     fail_fn(CREATE_ERROR("Failed to mount %s to %s: %s",
                          source_dir.c_str(), target_dir.c_str(), strerror(errno)));
   }
@@ -1186,9 +1197,9 @@
 
 // Create an app data directory over tmpfs overlayed CE / DE storage, and bind mount it
 // from the actual app data directory in data mirror.
-static void createAndMountAppData(std::string_view package_name,
+static bool createAndMountAppData(std::string_view package_name,
     std::string_view mirror_pkg_dir_name, std::string_view mirror_data_path,
-    std::string_view actual_data_path, fail_fn_t fail_fn) {
+    std::string_view actual_data_path, fail_fn_t fail_fn, bool call_fail_fn) {
 
   char mirrorAppDataPath[PATH_MAX];
   char actualAppDataPath[PATH_MAX];
@@ -1199,6 +1210,29 @@
   PrepareDir(actualAppDataPath, 0700, AID_ROOT, AID_ROOT, fail_fn);
 
   // Bind mount from original app data directory in mirror.
+  if (call_fail_fn) {
+    BindMount(mirrorAppDataPath, actualAppDataPath, fail_fn);
+  } else if(!BindMount(mirrorAppDataPath, actualAppDataPath)) {
+    ALOGW("Failed to mount %s to %s: %s",
+          mirrorAppDataPath, actualAppDataPath, strerror(errno));
+    return false;
+  }
+  return true;
+}
+
+// There is an app data directory over tmpfs overlaid CE / DE storage
+// bind mount it from the actual app data directory in data mirror.
+static void mountAppData(std::string_view package_name,
+    std::string_view mirror_pkg_dir_name, std::string_view mirror_data_path,
+    std::string_view actual_data_path, fail_fn_t fail_fn) {
+
+  char mirrorAppDataPath[PATH_MAX];
+  char actualAppDataPath[PATH_MAX];
+  snprintf(mirrorAppDataPath, PATH_MAX, "%s/%s", mirror_data_path.data(),
+      mirror_pkg_dir_name.data());
+  snprintf(actualAppDataPath, PATH_MAX, "%s/%s", actual_data_path.data(), package_name.data());
+
+  // Bind mount from original app data directory in mirror.
   BindMount(mirrorAppDataPath, actualAppDataPath, fail_fn);
 }
 
@@ -1276,10 +1310,17 @@
   snprintf(mirrorCePath, PATH_MAX, "%s/%d", mirrorCeParent, userId);
   snprintf(mirrorDePath, PATH_MAX, "/data_mirror/data_de/%s/%d", volume_uuid.data(), userId);
 
-  createAndMountAppData(package_name, package_name, mirrorDePath, actualDePath, fail_fn);
+  createAndMountAppData(package_name, package_name, mirrorDePath, actualDePath, fail_fn,
+                        true /*call_fail_fn*/);
 
   std::string ce_data_path = getAppDataDirName(mirrorCePath, package_name, ce_data_inode, fail_fn);
-  createAndMountAppData(package_name, ce_data_path, mirrorCePath, actualCePath, fail_fn);
+  if (!createAndMountAppData(package_name, ce_data_path, mirrorCePath, actualCePath, fail_fn,
+                             false /*call_fail_fn*/)) {
+    // CE might unlocks and the name is decrypted
+    // get the name and mount again
+    ce_data_path=getAppDataDirName(mirrorCePath, package_name, ce_data_inode, fail_fn);
+    mountAppData(package_name, ce_data_path, mirrorCePath, actualCePath, fail_fn);
+  }
 }
 
 // Relabel directory
@@ -1634,28 +1675,6 @@
   }
 }
 
-#ifdef ANDROID_EXPERIMENTAL_MTE
-static void SetTagCheckingLevel(int level) {
-#ifdef __aarch64__
-  if (!(getauxval(AT_HWCAP2) & HWCAP2_MTE)) {
-    return;
-  }
-
-  int tagged_addr_ctrl = prctl(PR_GET_TAGGED_ADDR_CTRL, 0, 0, 0, 0);
-  if (tagged_addr_ctrl < 0) {
-    ALOGE("prctl(PR_GET_TAGGED_ADDR_CTRL) failed: %s", strerror(errno));
-    return;
-  }
-
-  tagged_addr_ctrl = (tagged_addr_ctrl & ~PR_MTE_TCF_MASK) | level;
-  if (prctl(PR_SET_TAGGED_ADDR_CTRL, tagged_addr_ctrl, 0, 0, 0) < 0) {
-    ALOGE("prctl(PR_SET_TAGGED_ADDR_CTRL, %d) failed: %s", tagged_addr_ctrl,
-          strerror(errno));
-  }
-#endif
-}
-#endif
-
 // Utility routine to specialize a zygote child process.
 static void SpecializeCommon(JNIEnv* env, uid_t uid, gid_t gid, jintArray gids,
                              jint runtime_flags, jobjectArray rlimits,
@@ -1791,22 +1810,14 @@
       heap_tagging_level = M_HEAP_TAGGING_LEVEL_TBI;
       break;
     case RuntimeFlags::MEMORY_TAG_LEVEL_ASYNC:
-#ifdef ANDROID_EXPERIMENTAL_MTE
-      SetTagCheckingLevel(PR_MTE_TCF_ASYNC);
-#endif
       heap_tagging_level = M_HEAP_TAGGING_LEVEL_ASYNC;
       break;
     case RuntimeFlags::MEMORY_TAG_LEVEL_SYNC:
-#ifdef ANDROID_EXPERIMENTAL_MTE
-      SetTagCheckingLevel(PR_MTE_TCF_SYNC);
-#endif
       heap_tagging_level = M_HEAP_TAGGING_LEVEL_SYNC;
       break;
     default:
-#ifdef ANDROID_EXPERIMENTAL_MTE
-      SetTagCheckingLevel(PR_MTE_TCF_NONE);
-#endif
       heap_tagging_level = M_HEAP_TAGGING_LEVEL_NONE;
+      break;
   }
   android_mallopt(M_SET_HEAP_TAGGING_LEVEL, &heap_tagging_level, sizeof(heap_tagging_level));
   // Now that we've used the flag, clear it so that we don't pass unknown flags to the ART runtime.
diff --git a/core/jni/com_google_android_gles_jni_GLImpl.cpp b/core/jni/com_google_android_gles_jni_GLImpl.cpp
index ffc1ddc..21de723 100644
--- a/core/jni/com_google_android_gles_jni_GLImpl.cpp
+++ b/core/jni/com_google_android_gles_jni_GLImpl.cpp
@@ -424,7 +424,7 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, data, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)data - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -468,7 +468,7 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, data, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)data - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -713,7 +713,7 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, indices, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)indices - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -3488,7 +3488,8 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, pixels, _exception ? JNI_FALSE : JNI_TRUE);
+        releasePointer(_env, _array, (void *)((char *)pixels - _bufferOffset),
+                       _exception ? JNI_FALSE : JNI_TRUE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -3972,7 +3973,7 @@
         (GLvoid *)pixels
     );
     if (_array) {
-        releasePointer(_env, _array, pixels, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)pixels - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -4032,7 +4033,7 @@
         (GLvoid *)pixels
     );
     if (_array) {
-        releasePointer(_env, _array, pixels, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)pixels - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -4299,7 +4300,7 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, data, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)data - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
@@ -4344,7 +4345,7 @@
 
 exit:
     if (_array) {
-        releasePointer(_env, _array, data, JNI_FALSE);
+        releasePointer(_env, _array, (void *)((char *)data - _bufferOffset), JNI_FALSE);
     }
     if (_exception) {
         jniThrowException(_env, _exceptionType, _exceptionMessage);
diff --git a/core/jni/core_jni_helpers.h b/core/jni/core_jni_helpers.h
index eeda275..563c1c4 100644
--- a/core/jni/core_jni_helpers.h
+++ b/core/jni/core_jni_helpers.h
@@ -47,7 +47,7 @@
 static inline jfieldID GetFieldIDOrDie(JNIEnv* env, jclass clazz, const char* field_name,
                                        const char* field_signature) {
     jfieldID res = env->GetFieldID(clazz, field_name, field_signature);
-    LOG_ALWAYS_FATAL_IF(res == NULL, "Unable to find static field %s with signature %s", field_name,
+    LOG_ALWAYS_FATAL_IF(res == NULL, "Unable to find field %s with signature %s", field_name,
                         field_signature);
     return res;
 }
@@ -90,6 +90,12 @@
     return res;
 }
 
+static inline jobject jniGetReferent(JNIEnv* env, jobject ref) {
+    jclass cls = FindClassOrDie(env, "java/lang/ref/Reference");
+    jmethodID get = GetMethodIDOrDie(env, cls, "get", "()Ljava/lang/Object;");
+    return env->CallObjectMethod(ref, get);
+}
+
 /**
  * Read the specified field from jobject, and convert to std::string.
  * If the field cannot be obtained, return defaultValue.
diff --git a/core/jni/fd_utils.cpp b/core/jni/fd_utils.cpp
index 38981b0..c73aae5 100644
--- a/core/jni/fd_utils.cpp
+++ b/core/jni/fd_utils.cpp
@@ -33,16 +33,6 @@
 
 // Static whitelist of open paths that the zygote is allowed to keep open.
 static const char* kPathWhitelist[] = {
-        "/apex/com.android.conscrypt/javalib/conscrypt.jar",
-        "/apex/com.android.ipsec/javalib/ike.jar",
-        "/apex/com.android.i18n/javalib/core-icu4j.jar",
-        "/apex/com.android.media/javalib/updatable-media.jar",
-        "/apex/com.android.mediaprovider/javalib/framework-mediaprovider.jar",
-        "/apex/com.android.os.statsd/javalib/framework-statsd.jar",
-        "/apex/com.android.permission/javalib/framework-permission.jar",
-        "/apex/com.android.sdkext/javalib/framework-sdkextensions.jar",
-        "/apex/com.android.wifi/javalib/framework-wifi.jar",
-        "/apex/com.android.tethering/javalib/framework-tethering.jar",
         "/dev/null",
         "/dev/socket/zygote",
         "/dev/socket/zygote_secondary",
@@ -100,11 +90,12 @@
     }
   }
 
-  // Jars from the ART APEX are allowed.
-  static const char* kArtApexPrefix = "/apex/com.android.art/javalib/";
-  if (android::base::StartsWith(path, kArtApexPrefix)
-      && android::base::EndsWith(path, kJarSuffix)) {
-    return true;
+  // Jars from APEXes are allowed. This matches /apex/**/javalib/*.jar.
+  static const char* kApexPrefix = "/apex/";
+  static const char* kApexJavalibPathSuffix = "/javalib";
+  if (android::base::StartsWith(path, kApexPrefix) && android::base::EndsWith(path, kJarSuffix) &&
+      android::base::EndsWith(android::base::Dirname(path), kApexJavalibPathSuffix)) {
+      return true;
   }
 
   // the in-memory file created by ART through memfd_create is allowed.
diff --git a/core/proto/Android.bp b/core/proto/Android.bp
deleted file mode 100644
index 3b891d6..0000000
--- a/core/proto/Android.bp
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (C) 2018 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// C++ library for Bluetooth platform wide protobuf definitions
-cc_library_static {
-    name: "libbt-platform-protos-lite",
-    host_supported: true,
-    proto: {
-        export_proto_headers: true,
-        type: "lite",
-    },
-    srcs: [
-        "android/bluetooth/a2dp/enums.proto",
-        "android/bluetooth/enums.proto",
-        "android/bluetooth/hci/enums.proto",
-        "android/bluetooth/hfp/enums.proto",
-        "android/bluetooth/smp/enums.proto",
-    ],
-}
diff --git a/core/proto/OWNERS b/core/proto/OWNERS
index 4892faa..748b4b4 100644
--- a/core/proto/OWNERS
+++ b/core/proto/OWNERS
@@ -14,10 +14,19 @@
 # Frameworks
 ogunwale@google.com
 jjaggi@google.com
+roosa@google.com
 per-file usagestatsservice.proto, usagestatsservice_v2.proto = mwachens@google.com
 
+# Biometrics
+kchyn@google.com
+
 # Launcher
 hyunyoungs@google.com
 
 # Graphics stats
 jreck@google.com
+
+# Accessibility
+pweaver@google.com
+hongmingjin@google.com
+cbrower@google.com
diff --git a/core/proto/android/app/enums.proto b/core/proto/android/app/enums.proto
deleted file mode 100644
index bd5cb62..0000000
--- a/core/proto/android/app/enums.proto
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-
-package android.app;
-
-option java_outer_classname = "AppProtoEnums";
-option java_multiple_files = true;
-
-// ActivityManagerInternal.java's APP_TRANSITION reasons.
-enum AppTransitionReasonEnum {
-    APP_TRANSITION_REASON_UNKNOWN = 0;
-    // The transition was started because we drew the splash screen.
-    APP_TRANSITION_SPLASH_SCREEN = 1;
-    // The transition was started because we all app windows were drawn.
-    APP_TRANSITION_WINDOWS_DRAWN = 2;
-    // The transition was started because of a timeout.
-    APP_TRANSITION_TIMEOUT = 3;
-    // The transition was started because of a we drew a task snapshot.
-    APP_TRANSITION_SNAPSHOT = 4;
-    // The transition was started because it was a recents animation and we only needed to wait on
-    // the wallpaper.
-    APP_TRANSITION_RECENTS_ANIM = 5;
-}
-
-// ActivityManager.java PROCESS_STATEs
-// Next tag: 1021
-enum ProcessStateEnum {
-    // Unlike the ActivityManager PROCESS_STATE values, the ordering and numerical values
-    // here are completely fixed and arbitrary. Order is irrelevant.
-    // No attempt need be made to keep them in sync.
-    // The values here must not be modified. Any new process states can be appended to the end.
-
-    // Process state that is unknown to this proto file (i.e. is not mapped
-    // by ActivityManager.processStateAmToProto()). Can only happen if there's a bug in the mapping.
-    PROCESS_STATE_UNKNOWN_TO_PROTO = 998;
-    // Not a real process state.
-    PROCESS_STATE_UNKNOWN = 999;
-    // Process is a persistent system process.
-    PROCESS_STATE_PERSISTENT = 1000;
-    // Process is a persistent system process and is doing UI.
-    PROCESS_STATE_PERSISTENT_UI = 1001;
-    // Process is hosting the current top activities. Note that this covers
-    // all activities that are visible to the user.
-    PROCESS_STATE_TOP = 1002;
-    // Process is bound to a TOP app.
-    PROCESS_STATE_BOUND_TOP = 1020;
-    // Process is hosting a foreground service.
-    PROCESS_STATE_FOREGROUND_SERVICE = 1003;
-    // Process is hosting a service bound by the system or another foreground app.
-    PROCESS_STATE_BOUND_FOREGROUND_SERVICE = 1004;
-    // Process is important to the user, and something they are aware of.
-    PROCESS_STATE_IMPORTANT_FOREGROUND = 1005;
-    // Process is important to the user, but not something they are aware of.
-    PROCESS_STATE_IMPORTANT_BACKGROUND = 1006;
-    // Process is in the background transient so we will try to keep running.
-    PROCESS_STATE_TRANSIENT_BACKGROUND = 1007;
-    // Process is in the background running a backup/restore operation.
-    PROCESS_STATE_BACKUP = 1008;
-    // Process is in the background running a service. Unlike oom_adj, this
-    // level is used for both the normal running in background state and the
-    // executing operations state.
-    PROCESS_STATE_SERVICE = 1009;
-    // Process is in the background running a receiver. Note that from the
-    // perspective of oom_adj, receivers run at a higher foreground level, but
-    // for our prioritization here that is not necessary and putting them
-    // below services means many fewer changes in some process states as they
-    // receive broadcasts.
-    PROCESS_STATE_RECEIVER = 1010;
-    // Same as PROCESS_STATE_TOP but while device is sleeping.
-    PROCESS_STATE_TOP_SLEEPING = 1011;
-    // Process is in the background, but it can't restore its state so we want
-    // to try to avoid killing it.
-    PROCESS_STATE_HEAVY_WEIGHT = 1012;
-    // Process is in the background but hosts the home activity.
-    PROCESS_STATE_HOME = 1013;
-    // Process is in the background but hosts the last shown activity.
-    PROCESS_STATE_LAST_ACTIVITY = 1014;
-    // Process is being cached for later use and contains activities.
-    PROCESS_STATE_CACHED_ACTIVITY = 1015;
-    // Process is being cached for later use and is a client of another cached
-    // process that contains activities.
-    PROCESS_STATE_CACHED_ACTIVITY_CLIENT = 1016;
-    // Process is being cached for later use and has an activity that corresponds
-    // to an existing recent task.
-    PROCESS_STATE_CACHED_RECENT = 1017;
-    // Process is being cached for later use and is empty.
-    PROCESS_STATE_CACHED_EMPTY = 1018;
-    // Process does not exist.
-    PROCESS_STATE_NONEXISTENT = 1019;
-}
-
-// AppOpsManager.java - operation ids for logging
-enum AppOpEnum {
-    APP_OP_NONE = -1;
-    APP_OP_COARSE_LOCATION = 0;
-    APP_OP_FINE_LOCATION = 1;
-    APP_OP_GPS = 2;
-    APP_OP_VIBRATE = 3;
-    APP_OP_READ_CONTACTS = 4;
-    APP_OP_WRITE_CONTACTS = 5;
-    APP_OP_READ_CALL_LOG = 6;
-    APP_OP_WRITE_CALL_LOG = 7;
-    APP_OP_READ_CALENDAR = 8;
-    APP_OP_WRITE_CALENDAR = 9;
-    APP_OP_WIFI_SCAN = 10;
-    APP_OP_POST_NOTIFICATION = 11;
-    APP_OP_NEIGHBORING_CELLS = 12;
-    APP_OP_CALL_PHONE = 13;
-    APP_OP_READ_SMS = 14;
-    APP_OP_WRITE_SMS = 15;
-    APP_OP_RECEIVE_SMS = 16;
-    APP_OP_RECEIVE_EMERGENCY_SMS = 17;
-    APP_OP_RECEIVE_MMS = 18;
-    APP_OP_RECEIVE_WAP_PUSH = 19;
-    APP_OP_SEND_SMS = 20;
-    APP_OP_READ_ICC_SMS = 21;
-    APP_OP_WRITE_ICC_SMS = 22;
-    APP_OP_WRITE_SETTINGS = 23;
-    APP_OP_SYSTEM_ALERT_WINDOW = 24;
-    APP_OP_ACCESS_NOTIFICATIONS = 25;
-    APP_OP_CAMERA = 26;
-    APP_OP_RECORD_AUDIO = 27;
-    APP_OP_PLAY_AUDIO = 28;
-    APP_OP_READ_CLIPBOARD = 29;
-    APP_OP_WRITE_CLIPBOARD = 30;
-    APP_OP_TAKE_MEDIA_BUTTONS = 31;
-    APP_OP_TAKE_AUDIO_FOCUS = 32;
-    APP_OP_AUDIO_MASTER_VOLUME = 33;
-    APP_OP_AUDIO_VOICE_VOLUME = 34;
-    APP_OP_AUDIO_RING_VOLUME = 35;
-    APP_OP_AUDIO_MEDIA_VOLUME = 36;
-    APP_OP_AUDIO_ALARM_VOLUME = 37;
-    APP_OP_AUDIO_NOTIFICATION_VOLUME = 38;
-    APP_OP_AUDIO_BLUETOOTH_VOLUME = 39;
-    APP_OP_WAKE_LOCK = 40;
-    APP_OP_MONITOR_LOCATION = 41;
-    APP_OP_MONITOR_HIGH_POWER_LOCATION = 42;
-    APP_OP_GET_USAGE_STATS = 43;
-    APP_OP_MUTE_MICROPHONE = 44;
-    APP_OP_TOAST_WINDOW = 45;
-    APP_OP_PROJECT_MEDIA = 46;
-    APP_OP_ACTIVATE_VPN = 47;
-    APP_OP_WRITE_WALLPAPER = 48;
-    APP_OP_ASSIST_STRUCTURE = 49;
-    APP_OP_ASSIST_SCREENSHOT = 50;
-    APP_OP_READ_PHONE_STATE = 51;
-    APP_OP_ADD_VOICEMAIL = 52;
-    APP_OP_USE_SIP = 53;
-    APP_OP_PROCESS_OUTGOING_CALLS = 54;
-    APP_OP_USE_FINGERPRINT = 55;
-    APP_OP_BODY_SENSORS = 56;
-    APP_OP_READ_CELL_BROADCASTS = 57;
-    APP_OP_MOCK_LOCATION = 58;
-    APP_OP_READ_EXTERNAL_STORAGE = 59;
-    APP_OP_WRITE_EXTERNAL_STORAGE = 60;
-    APP_OP_TURN_SCREEN_ON = 61;
-    APP_OP_GET_ACCOUNTS = 62;
-    APP_OP_RUN_IN_BACKGROUND = 63;
-    APP_OP_AUDIO_ACCESSIBILITY_VOLUME = 64;
-    APP_OP_READ_PHONE_NUMBERS = 65;
-    APP_OP_REQUEST_INSTALL_PACKAGES = 66;
-    APP_OP_PICTURE_IN_PICTURE = 67;
-    APP_OP_INSTANT_APP_START_FOREGROUND = 68;
-    APP_OP_ANSWER_PHONE_CALLS = 69;
-    APP_OP_RUN_ANY_IN_BACKGROUND = 70;
-    APP_OP_CHANGE_WIFI_STATE = 71;
-    APP_OP_REQUEST_DELETE_PACKAGES = 72;
-    APP_OP_BIND_ACCESSIBILITY_SERVICE = 73;
-    APP_OP_ACCEPT_HANDOVER = 74;
-    APP_OP_MANAGE_IPSEC_TUNNELS = 75;
-    APP_OP_START_FOREGROUND = 76;
-    APP_OP_BLUETOOTH_SCAN = 77;
-    APP_OP_USE_BIOMETRIC = 78;
-    APP_OP_ACTIVITY_RECOGNITION = 79;
-    APP_OP_SMS_FINANCIAL_TRANSACTIONS = 80;
-    APP_OP_READ_MEDIA_AUDIO = 81;
-    APP_OP_WRITE_MEDIA_AUDIO = 82;
-    APP_OP_READ_MEDIA_VIDEO = 83;
-    APP_OP_WRITE_MEDIA_VIDEO = 84;
-    APP_OP_READ_MEDIA_IMAGES = 85;
-    APP_OP_WRITE_MEDIA_IMAGES = 86;
-    APP_OP_LEGACY_STORAGE = 87;
-    APP_OP_ACCESS_ACCESSIBILITY = 88;
-    APP_OP_READ_DEVICE_IDENTIFIERS = 89;
-    APP_OP_ACCESS_MEDIA_LOCATION = 90;
-    APP_OP_QUERY_ALL_PACKAGES = 91;
-    APP_OP_MANAGE_EXTERNAL_STORAGE = 92;
-    APP_OP_INTERACT_ACROSS_PROFILES = 93;
-    APP_OP_ACTIVATE_PLATFORM_VPN = 94;
-    APP_OP_LOADER_USAGE_STATS = 95;
-    APP_OP_DEPRECATED_1 = 96 [deprecated = true];
-    APP_OP_AUTO_REVOKE_PERMISSIONS_IF_UNUSED = 97;
-    APP_OP_AUTO_REVOKE_MANAGED_BY_INSTALLER = 98;
-    APP_OP_NO_ISOLATED_STORAGE = 99;
-}
diff --git a/core/proto/android/app/job/enums.proto b/core/proto/android/app/job/enums.proto
deleted file mode 100644
index 41863bb..0000000
--- a/core/proto/android/app/job/enums.proto
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-
-package android.app.job;
-
-// This file is for JobScheduler enums inside the app directory. If you're
-// adding enums for system-server-side code, use the file in
-// frameworks/base/core/proto/android/server/job.
-option java_outer_classname = "JobProtoEnums";
-option java_multiple_files = true;
-
-// Reasons a job is stopped.
-// Primarily used in android.app.job.JobParameters.java.
-enum StopReasonEnum {
-    STOP_REASON_UNKNOWN = -1;
-    STOP_REASON_CANCELLED = 0;
-    STOP_REASON_CONSTRAINTS_NOT_SATISFIED = 1;
-    STOP_REASON_PREEMPT = 2;
-    STOP_REASON_TIMEOUT = 3;
-    STOP_REASON_DEVICE_IDLE = 4;
-    STOP_REASON_DEVICE_THERMAL = 5;
-    STOP_REASON_RESTRICTED_BUCKET = 6;
-}
diff --git a/core/proto/android/app/media_output_enum.proto b/core/proto/android/app/media_output_enum.proto
deleted file mode 100644
index 0d42fb7..0000000
--- a/core/proto/android/app/media_output_enum.proto
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-
-package android.app.settings.mediaoutput;
-option java_multiple_files = true;
-
-/**
- * The medium type specified in an output switching operation.
- */
-enum MediumType {
-    UNKNOWN_TYPE = 0;
-    BUILTIN_SPEAKER = 1;
-    WIRED_3POINT5_MM_AUDIO = 100;
-    WIRED_3POINT5_MM_HEADSET = 101;
-    WIRED_3POINT5_MM_HEADPHONES = 102;
-    USB_C_AUDIO = 200;
-    USB_C_DEVICE = 201;
-    USB_C_HEADSET = 202;
-    USB_C_ACCESSORY = 203;
-    USB_C_DOCK = 204;
-    USB_C_HDMI = 205;
-    BLUETOOTH = 300;
-    BLUETOOTH_HEARING_AID = 301;
-    BLUETOOTH_A2DP = 302;
-    REMOTE_SINGLE = 400;
-    REMOTE_TV = 401;
-    REMOTE_SPEAKER = 402;
-    REMOTE_GROUP = 500;
-    REMOTE_DYNAMIC_GROUP = 501;
-};
-
-/**
- * The result of an output switching operation.
- */
-enum SwitchResult {
-    ERROR = 0;
-    OK = 1;
-};
-
-/**
- * The sub result of an output switching operation.
- */
-enum SubResult {
-    UNKNOWN_ERROR = 0;
-    NO_ERROR = 1;
-    REJECTED = 2;
-    NETWORK_ERROR = 3;
-    ROUTE_NOT_AVAILABLE = 4;
-    INVALID_COMMAND = 5;
-}
diff --git a/core/proto/android/app/settings_enums.proto b/core/proto/android/app/settings_enums.proto
deleted file mode 100644
index 69b32c2..0000000
--- a/core/proto/android/app/settings_enums.proto
+++ /dev/null
@@ -1,2686 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-
-package android.app.settings;
-option java_multiple_files = true;
-
-/**
- * The action performed in this event
- */
-enum Action {
-    ACTION_UNKNOWN = 0;
-    PAGE_VISIBLE = 1;
-    PAGE_HIDE = 2;
-
-    // ACTION: Settings > Wi-Fi > [Long press network] > Connect to network
-    //   SUBTYPE: true if connecting to a saved network, false if not
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACTION_WIFI_CONNECT = 135;
-
-    // ACTION: Settings > Wi-Fi > [Long press network] > Forget network
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACTION_WIFI_FORGET = 137;
-
-    // ACTION: Settings > Wi-Fi > Toggle off
-    //   SUBTYPE: true if connected to network before toggle, false if not
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACTION_WIFI_OFF = 138;
-
-    // ACTION: Settings > Wi-Fi > Toggle on
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACTION_WIFI_ON = 139;
-
-    // ACTION: Settings > Bluetooth > Overflow > Rename this device
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACTION_BLUETOOTH_RENAME = 161;
-
-    // ACTION: Settings > Bluetooth > Overflow > Show received files
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACTION_BLUETOOTH_FILES = 162;
-
-    // ACTION: DND Settings > Priority only allows > Reminder toggle
-    //   SUBTYPE: 0 is off, 1 is on
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACTION_ZEN_ALLOW_REMINDERS = 167;
-
-    // ACTION: DND Settings > Priority only allows > Event toggle
-    //   SUBTYPE: 0 is off, 1 is on
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACTION_ZEN_ALLOW_EVENTS = 168;
-
-    // ACTION: DND Settings > Priority only allows > Messages
-    //   SUBTYPE: 0 is off, 1 is on
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACTION_ZEN_ALLOW_MESSAGES = 169;
-
-    // ACTION: DND Settings > Priority only allows > Calls
-    //   SUBTYPE: 0 is off, 1 is on
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACTION_ZEN_ALLOW_CALLS = 170;
-
-    // ACTION: DND Settings > Priority only allows > Repeat callers toggle
-    //   SUBTYPE: 0 is off, 1 is on
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACTION_ZEN_ALLOW_REPEAT_CALLS = 171;
-
-    // ACTION: DND Settings > Automatic rules > [Rule] > Delete rule > Delete
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACTION_ZEN_DELETE_RULE_OK = 175;
-
-    // ACTION: Settings > More > Airplane mode toggle
-    //   SUBTYPE: 0 is off, 1 is on
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACTION_AIRPLANE_TOGGLE = 177;
-
-    // ACTION: Settings > Data usage > Cellular data toggle
-    //   SUBTYPE: 0 is off, 1 is on
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACTION_CELL_DATA_TOGGLE = 178;
-
-    // ACTION: Settings > Display > When device is rotated
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACTION_ROTATION_LOCK = 203;
-
-    // OPEN: Settings > Search > Perform search
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACTION_SEARCH_RESULTS = 226;
-
-    // ACTION: Settings > Security > Nexus Imprint > [Fingerprint] > Delete
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACTION_FINGERPRINT_DELETE = 253;
-
-    // ACTION: Settings > Security > Nexus Imprint > [Fingerprint] > Rename
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACTION_FINGERPRINT_RENAME = 254;
-
-    // ACTION: Settings -> Developer Options -> Take bug report -> Interactive report
-    // CATEGORY: SETTINGS
-    // OS: N
-    // Interactive bug report initiated from Settings.
-    ACTION_BUGREPORT_FROM_SETTINGS_INTERACTIVE = 294;
-
-    // ACTION: Settings -> Developer Options -> Take bug report -> Full report
-    // CATEGORY: SETTINGS
-    // OS: N
-    // Interactive bug report initiated from Settings.
-    ACTION_BUGREPORT_FROM_SETTINGS_FULL = 295;
-
-    // click on collapsed conditional or clicks expand button
-    ACTION_SETTINGS_CONDITION_EXPAND = 373;
-
-    // click main area of expanded conditional
-    ACTION_SETTINGS_CONDITION_CLICK = 375;
-
-    // click a direct button on expanded conditional
-    ACTION_SETTINGS_CONDITION_BUTTON = 376;
-
-    // Action: user enable / disabled data saver using Settings
-    // OPEN: Settings -> Data Usage -> Data saver -> On/off toggle
-    // VALUE: 1 for enabled, 0 for disabled
-    // CATEGORY: SETTINGS
-    // OS: N
-    ACTION_DATA_SAVER_MODE = 394;
-
-    // User whitelisted an app for Data Saver mode; action pass package name of app
-    // Action: user enable / disabled data saver using Settings
-    // OPEN: Settings -> Data Usage -> Data saver -> Unrestricted data access > APP toggle turned on
-    //       or
-    //       Settings -> Apps -> APP -> Data usage -> Unrestricted data usage toggle turned on
-    // VALUE: package name of APP
-    // CATEGORY: SETTINGS
-    // OS: N
-    ACTION_DATA_SAVER_WHITELIST = 395;
-
-    // User blacklisted an app for Data Saver mode; action pass package name of app
-    // OPEN: Settings -> Apps -> APP -> Data usage -> Background data toggle turned off
-    // VALUE: package name of APP
-    // CATEGORY: SETTINGS
-    // OS: N
-    ACTION_DATA_SAVER_BLACKLIST = 396;
-
-    // ACTION: Settings -> Storage -> Manage storage -> Click Storage Manager
-    //   SUBTYPE: false is off, true is on
-    ACTION_TOGGLE_STORAGE_MANAGER = 489;
-
-    // OPEN: Settings > Display -> Ambient Display
-    // CATEGORY: SETTINGS
-    ACTION_AMBIENT_DISPLAY = 495;
-
-    // ACTION: Allow Battery optimization for an app
-    APP_SPECIAL_PERMISSION_BATTERY_ALLOW = 764;
-
-    // ACTION: Deny Battery optimization for an app
-    APP_SPECIAL_PERMISSION_BATTERY_DENY = 765;
-
-    // ACTION: Enable Device Admin app
-    APP_SPECIAL_PERMISSION_ADMIN_ALLOW = 766;
-
-    // ACTION: Disable Device Admin app
-    APP_SPECIAL_PERMISSION_ADMIN_DENY = 767;
-
-    // ACTION: Allow "Do Not Disturb access" for an app
-    APP_SPECIAL_PERMISSION_DND_ALLOW = 768;
-
-    // ACTION: Deny "Do Not Disturb access" for an app
-    APP_SPECIAL_PERMISSION_DND_DENY = 769;
-
-    // ACTION: Allow "Draw over other apps" for an app
-    APP_SPECIAL_PERMISSION_APPDRAW_ALLOW = 770;
-
-    // ACTION: Deny "Display over other apps" for an app
-    APP_SPECIAL_PERMISSION_APPDRAW_DENY = 771;
-
-    // ACTION: Allow "VR helper services" for an app
-    APP_SPECIAL_PERMISSION_VRHELPER_ALLOW = 772;
-
-    // ACTION: Deny "VR helper services" for an app
-    APP_SPECIAL_PERMISSION_VRHELPER_DENY = 773;
-
-    // ACTION: Allow "Modify system settings" for an app
-    APP_SPECIAL_PERMISSION_SETTINGS_CHANGE_ALLOW = 774;
-
-    // ACTION: Deny "Modify system settings" for an app
-    APP_SPECIAL_PERMISSION_SETTINGS_CHANGE_DENY = 775;
-
-    // ACTION: Allow "Notification access" for an app
-    APP_SPECIAL_PERMISSION_NOTIVIEW_ALLOW = 776;
-
-    // ACTION: Deny "Notification access" for an app
-    APP_SPECIAL_PERMISSION_NOTIVIEW_DENY = 777;
-
-    // ACTION: "Premium SMS access" for an app - "ask user" option
-    APP_SPECIAL_PERMISSION_PREMIUM_SMS_ASK = 778;
-
-    // ACTION: "Premium SMS access" for an app - "never allow" option
-    APP_SPECIAL_PERMISSION_PREMIUM_SMS_DENY = 779;
-
-    // ACTION: "Premium SMS access" for an app - "always allow" option
-    APP_SPECIAL_PERMISSION_PREMIUM_SMS_ALWAYS_ALLOW = 780;
-
-    // ACTION: Allow "Unrestricted data access" for an app
-    APP_SPECIAL_PERMISSION_UNL_DATA_ALLOW = 781;
-
-    // ACTION: Deny "Unrestricted data access" for an app
-    APP_SPECIAL_PERMISSION_UNL_DATA_DENY = 782;
-
-    // ACTION: Allow "Usage access" for an app
-    APP_SPECIAL_PERMISSION_USAGE_VIEW_ALLOW = 783;
-
-    // ACTION: Deny "Usage access" for an app
-    APP_SPECIAL_PERMISSION_USAGE_VIEW_DENY = 784;
-
-    // ACTION: "Force stop" action on an app
-    ACTION_APP_FORCE_STOP = 807;
-
-    // ACTION: Allow "Enable picture-in-picture" for an app
-    APP_PICTURE_IN_PICTURE_ALLOW = 813;
-
-    // ACTION: Create a Settings shortcut item.
-    ACTION_SETTINGS_CREATE_SHORTCUT = 829;
-
-    // ACTION: A tile in Settings information architecture is clicked
-    ACTION_SETTINGS_TILE_CLICK = 830;
-
-    // ACTION: Settings advanced button is expanded
-    ACTION_SETTINGS_ADVANCED_BUTTON_EXPAND = 834;
-
-    // ACTION: Deny "Enable picture-in-picture" for an app
-    APP_PICTURE_IN_PICTURE_DENY = 814;
-
-    // ACTION: Settings -> Display -> Theme
-    ACTION_THEME = 816;
-
-    // ACTION: Settings > About device > Build number
-    ACTION_SETTINGS_BUILD_NUMBER_PREF = 847;
-
-    // ACTION: Settings > Battery > Menu > Optimization
-    ACTION_SETTINGS_MENU_BATTERY_OPTIMIZATION = 851;
-
-    // ACTION: Settings > Battery > Menu > Apps Toggle
-    ACTION_SETTINGS_MENU_BATTERY_APPS_TOGGLE = 852;
-
-    // ACTION: Settings > Any preference is changed
-    ACTION_SETTINGS_PREFERENCE_CHANGE = 853;
-
-    // ACTION: Settings > Connected devices > Bluetooth -> Available devices
-    ACTION_SETTINGS_BLUETOOTH_PAIR = 866;
-
-    // ACTION: Settings > Connected devices > Bluetooth -> Paired devices
-    ACTION_SETTINGS_BLUETOOTH_CONNECT = 867;
-
-    // ACTION: Settings > Connected devices > Bluetooth -> Connected device
-    ACTION_SETTINGS_BLUETOOTH_DISCONNECT = 868;
-
-    // ACTION: Settings > Connected devices > Bluetooth -> Error dialog
-    ACTION_SETTINGS_BLUETOOTH_CONNECT_ERROR = 869;
-
-    // ACTION: Settings > Connected devices > Bluetooth master switch Toggle
-    ACTION_SETTINGS_MASTER_SWITCH_BLUETOOTH_TOGGLE = 870;
-
-    // ACTION: Settings > App detail > Uninstall
-    ACTION_SETTINGS_UNINSTALL_APP = 872;
-
-    // ACTION: Settings > App detail > Uninstall Device admin app
-    ACTION_SETTINGS_UNINSTALL_DEVICE_ADMIN = 873;
-
-    // ACTION: Settings > App detail > Disable app
-    ACTION_SETTINGS_DISABLE_APP = 874;
-
-    // ACTION: Settings > App detail > Enable app
-    ACTION_SETTINGS_ENABLE_APP = 875;
-
-    // ACTION: Settings > App detail > Clear data
-    ACTION_SETTINGS_CLEAR_APP_DATA = 876;
-
-    // ACTION: Settings > App detail > Clear cache
-    ACTION_SETTINGS_CLEAR_APP_CACHE = 877;
-
-    // ACTION: Logs pressing the "Clear app" button in the app info settings page for an instant
-    // app.
-    // VALUE: The package name of the app
-    ACTION_SETTINGS_CLEAR_INSTANT_APP = 923;
-
-    // OPEN: Assist Gesture training intro in Settings
-    // CATEGORY: SETTINGS
-    // OS: O DR
-    SETTINGS_ASSIST_GESTURE_TRAINING_INTRO = 991;
-
-    // OPEN: Assist Gesture training enrolling in Settings
-    // CATEGORY: SETTINGS
-    // OS: O DR
-    SETTINGS_ASSIST_GESTURE_TRAINING_ENROLLING = 992;
-
-    // OPEN: Assist Gesture training finished in Settings
-    // CATEGORY: SETTINGS
-    // OS: O DR
-    SETTINGS_ASSIST_GESTURE_TRAINING_FINISHED = 993;
-
-    // ACTION: Update default app from Settings
-    ACTION_SETTINGS_UPDATE_DEFAULT_APP = 1000;
-
-    // ACTION: Settings > Wi-Fi > [Long press network] > Sign in to network
-    // CATEGORY: SETTINGS
-    // OS: O DR
-    ACTION_WIFI_SIGNIN = 1008;
-
-    // ACTION: Settings > Notification Settings > Open application notification
-    // CATEGORY: SETTINGS
-    // OS: O DR
-    ACTION_OPEN_APP_NOTIFICATION_SETTING = 1016;
-
-    // ACTION: Settings > App Info > Open app settings
-    // CATEGORY: SETTINGS
-    // OS: O DR
-    ACTION_OPEN_APP_SETTING = 1017;
-
-    // ACTION: Collect PSD Signals
-    // CATEGORY: SETTINGS
-    // OS: O DR
-    ACTION_PSD_LOADER = 1019;
-
-    // OPEN: Settings > Trampoline Intent > Settings page
-    // CATEGORY: SETTINGS
-    // OS: O DR
-    TRAMPOLINE_SETTINGS_EVENT = 1033;
-
-    // ACTION: Logged when user tries to pair a Bluetooth device without name from Settings app
-    // CATEGORY: SETTINGS
-    // OS: O MR
-    ACTION_SETTINGS_BLUETOOTH_PAIR_DEVICES_WITHOUT_NAMES = 1096;
-
-    // ACTION: Settings > Network & Internet > Mobile network > Network
-    // CATEGORY: SETTINGS
-    ACTION_MOBILE_NETWORK_MANUAL_SELECT_NETWORK = 1210;
-
-    // ACTION: DND Settings > Priority only allows > Alarms toggle
-    // SUBTYPE: 0 is off, 1 is on
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_ZEN_ALLOW_ALARMS = 1226;
-
-    // ACTION: DND Settings > Priority only allows > Media toggle
-    // SUBTYPE: 0 is off, 1 is on
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_ZEN_ALLOW_MEDIA = 1227;
-
-    // ACTION: A private dns mode been selected by user
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_PRIVATE_DNS_MODE = 1249;
-
-    // OPEN: Settings > Sound > Do Not Disturb > Turn on automatically > Select rule ("Event") > Rule name > OK
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_ZEN_MODE_RULE_NAME_CHANGE_OK = 1267;
-
-    // OPEN: Settings > Sound > Do Not Disturb > TURN ON NOW/TURN OFF NOW
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_ZEN_TOGGLE_DND_BUTTON = 1268;
-
-    // ACTION: DND Settings > What to block > full screen intents
-    //   SUBTYPE: false is allowed, true is blocked
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACTION_ZEN_BLOCK_FULL_SCREEN_INTENTS = 1332;
-
-    // ACTION: DND Settings > What to block
-    //   SUBTYPE: false is allowed, true is blocked
-    // OS: P
-    ACTION_ZEN_BLOCK_LIGHT = 1333;
-
-    // ACTION: DND Settings > What to block
-    //   SUBTYPE: false is allowed, true is blocked
-    // OS: P
-    ACTION_ZEN_BLOCK_PEEK = 1334;
-
-    // ACTION: DND Settings > What to block
-    //   SUBTYPE: false is allowed, true is blocked
-    // OS: P
-    ACTION_ZEN_BLOCK_STATUS = 1335;
-
-    // ACTION: DND Settings > What to block
-    //   SUBTYPE: false is allowed, true is blocked
-    // OS: P
-    ACTION_ZEN_BLOCK_BADGE = 1336;
-
-    // ACTION: DND Settings > What to block
-    //   SUBTYPE: false is allowed, true is blocked
-    // OS: P
-    ACTION_ZEN_BLOCK_AMBIENT = 1337;
-
-    // ACTION: DND Settings > What to block
-    //   SUBTYPE: false is allowed, true is blocked
-    // OS: P
-    ACTION_ZEN_BLOCK_NOTIFICATION_LIST = 1338;
-
-    // ACTION: DND Settings > Priority only allows > System toggle
-    // SUBTYPE: 0 is off, 1 is on
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_ZEN_ALLOW_SYSTEM = 1340;
-
-    // ACTION: Settings > Battery settings > Battery tip > App restriction tip
-    // OS: P
-    ACTION_APP_RESTRICTION_TIP = 1347;
-
-    // ACTION: Settings > Battery settings > Battery tip > High usage tip
-    // OS: P
-    ACTION_HIGH_USAGE_TIP = 1348;
-
-    // ACTION: Settings > Battery settings > Battery tip > Summary tip
-    // OS: P
-    ACTION_SUMMARY_TIP = 1349;
-
-    // ACTION: Settings > Battery settings > Battery tip > Smart battery tip
-    // OS: P
-    ACTION_SMART_BATTERY_TIP = 1350;
-
-    // ACTION: Settings > Battery settings > Battery tip > Early warning tip
-    // OS: P
-    ACTION_EARLY_WARNING_TIP = 1351;
-
-    // ACTION: Settings > Battery settings > Battery tip > Low battery tip
-    // OS: P
-    ACTION_LOW_BATTERY_TIP = 1352;
-
-    // ACTION: Settings > Battery settings > Battery tip > App restriction list shown
-    // OS: P
-    ACTION_APP_RESTRICTION_TIP_LIST = 1353;
-
-    // ACTION: Settings > Battery settings > Battery tip > High usage list shown
-    // OS: P
-    ACTION_HIGH_USAGE_TIP_LIST = 1354;
-
-    // ACTION: Settings > Battery settings > Battery tip > Open app restriction page
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_TIP_OPEN_APP_RESTRICTION_PAGE = 1361;
-
-    // ACTION: Settings > Battery settings > Battery tip > Restrict app
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_TIP_RESTRICT_APP = 1362;
-
-    // ACTION: Settings > Battery settings > Battery tip > Unrestrict app
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_TIP_UNRESTRICT_APP = 1363;
-
-    // ACTION: Settings > Battery settings > Battery tip > Open smart battery page
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_TIP_OPEN_SMART_BATTERY = 1364;
-
-    // ACTION: Settings > Battery settings > Battery tip > Turn on battery saver
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_TIP_TURN_ON_BATTERY_SAVER = 1365;
-
-    // ACTION: Settings > Anomaly receiver > Anomaly received
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_ANOMALY_TRIGGERED = 1367;
-
-    // ACTION: A Settings Slice is requested
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_SETTINGS_SLICE_REQUESTED = 1371;
-
-    // ACTION: A Settings Slice is updated with new value
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_SETTINGS_SLICE_CHANGED = 1372;
-
-    // OPEN: DND onboarding activity > Ok button
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_ZEN_ONBOARDING_OK = 1378;
-
-    // OPEN: DND onboarding activity > Settings link
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_ZEN_ONBOARDING_SETTINGS = 1379;
-
-    // ACTION: Settings > Anomaly receiver > Anomaly ignored, don't show up in battery settings
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_ANOMALY_IGNORED = 1387;
-
-    // ACTION: Settings > Battery settings > Battery tip > Open battery saver page
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_TIP_OPEN_BATTERY_SAVER_PAGE = 1388;
-
-    // ACTION: DND Settings > What to block
-    // OS: P
-    ACTION_ZEN_SOUND_ONLY = 1396;
-
-    // ACTION: DND Settings > Notifications
-    // OS: P
-    ACTION_ZEN_SOUND_AND_VIS_EFFECTS = 1397;
-
-    // ACTION: DND Settings > Notifications
-    // OS: P
-    ACTION_ZEN_SHOW_CUSTOM = 1398;
-
-    // ACTION: DND Settings > Notifications
-    // OS: P
-    ACTION_ZEN_CUSTOM = 1399;
-
-    // OPEN: DND onboarding activity > don't update button
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_ZEN_ONBOARDING_KEEP_CURRENT_SETTINGS = 1406;
-
-    // ACTION: Storage initialization wizard initialization choice of external/portable
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_STORAGE_INIT_EXTERNAL = 1407;
-
-    // ACTION: Storage initialization wizard initialization choice of internal/adoptable
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_STORAGE_INIT_INTERNAL = 1408;
-
-    // ACTION: Storage initialization wizard benchmark fast choice of continue
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_STORAGE_BENCHMARK_FAST_CONTINUE = 1409;
-
-    // ACTION: Storage initialization wizard benchmark slow choice of continue
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_STORAGE_BENCHMARK_SLOW_CONTINUE = 1410;
-
-    // ACTION: Storage initialization wizard benchmark slow choice of abort
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_STORAGE_BENCHMARK_SLOW_ABORT = 1411;
-
-    // ACTION: Storage initialization wizard migration choice of now
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_STORAGE_MIGRATE_NOW = 1412;
-
-    // ACTION: Storage initialization wizard migration choice of later
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACTION_STORAGE_MIGRATE_LATER = 1413;
-
-    // OPEN: Settings > Sound > Switch a2dp devices dialog
-    // CATEGORY: SETTINGS
-    // OS: P
-    DIALOG_SWITCH_A2DP_DEVICES = 1415;
-
-
-    // OPEN: Settings > Sound > Switch hfp devices dialog
-    // CATEGORY: SETTINGS
-    // OS: P
-    DIALOG_SWITCH_HFP_DEVICES = 1416;
-
-    // OPEN: QS Sensor Privacy Mode tile shown
-    // ACTION: QS Sensor Privacy Mode tile tapped
-    // SUBTYPE: 0 is off, 1 is on
-    // CATEGORY: QUICK_SETTINGS
-    // OS: Q
-    QS_SENSOR_PRIVACY = 1598;
-
-    // ACTION: Tap & Pay -> Default Application Setting -> Use Forground
-    ACTION_NFC_PAYMENT_FOREGROUND_SETTING = 1622;
-
-    // ACTION: Tap & Pay -> Default Application Setting -> Use Default
-    ACTION_NFC_PAYMENT_ALWAYS_SETTING = 1623;
-
-    // ACTION: Settings > Search Bar > Avatar
-    // CATEGORY: SETTINGS
-    // OS: Q
-    CLICK_ACCOUNT_AVATAR = 1643;
-
-    // ACTION: Set new password (action intent android.app.action.SET_NEW_PASSWORD)
-    // CATEGORY: SETTINGS
-    // OS: Q
-    ACTION_SET_NEW_PASSWORD = 1645;
-
-    // ACTION: Set new password (action intent android.app.action.SET_NEW_PARENT_PROFILE_PASSWORD)
-    // CATEGORY: SETTINGS
-    // OS: Q
-    ACTION_SET_NEW_PARENT_PROFILE_PASSWORD = 1646;
-
-    // ACTION: An interaction with a Slice or other component in the Panel.
-    // CATEGORY: SETTINGS
-    // OS: Q
-    ACTION_PANEL_INTERACTION = 1658;
-
-    // ACTION: Show Contextual homepage. Log total loading latency.
-    ACTION_CONTEXTUAL_HOME_SHOW = 1662;
-
-    // ACTION: Contextual card displays
-    ACTION_CONTEXTUAL_CARD_SHOW = 1663;
-
-    // ACTION: Contextual cards are eligible to be shown, but don't rank high
-    ACTION_CONTEXTUAL_CARD_NOT_SHOW = 1664;
-
-    // ACTION: Settings > long press a card, and click dismiss
-    // Contextual card is dismissed
-    ACTION_CONTEXTUAL_CARD_DISMISS = 1665;
-
-    // ACTION: Settings > click a card
-    // Contextual card is clicked
-    ACTION_CONTEXTUAL_CARD_CLICK = 1666;
-
-    // Mapping: go/at-mapping
-    ACTION_ATSG = 1674;
-
-    ACTION_ATPG = 1675;
-
-    ACTION_ATCLPB = 1676;
-
-    ACTION_ATCGIB = 1677;
-
-    ACTION_ATCPAB = 1678;
-
-    ACTION_ATCSAUC = 1679;
-
-    ACTION_ATCSCUC = 1680;
-
-    ACTION_ATCHNUC = 1681;
-
-    // ACTION: Individual contextual card loading time
-    ACTION_CONTEXTUAL_CARD_LOAD = 1684;
-
-    //ACTION: Contextual card loading timeout
-    ACTION_CONTEXTUAL_CARD_LOAD_TIMEOUT = 1685;
-
-    //ACTION: Log result for each card's eligibility check
-    ACTION_CONTEXTUAL_CARD_ELIGIBILITY = 1686;
-
-    // ACTION: Display white balance setting enabled or disabled.
-    // CATEGORY: SETTINGS
-    // OS: Q
-    ACTION_DISPLAY_WHITE_BALANCE_SETTING_CHANGED = 1703;
-
-    // ACTION: Share a Wi-Fi network by generating a QR code
-    ACTION_SETTINGS_SHARE_WIFI_QR_CODE = 1710;
-
-    // ACTION: Connect to a Wi-Fi network by scanning a QR code
-    ACTION_SETTINGS_ENROLL_WIFI_QR_CODE = 1711;
-
-    // ACTION: Share Wi-Fi hotspot by generating a QR code
-    ACTION_SETTINGS_SHARE_WIFI_HOTSPOT_QR_CODE = 1712;
-
-    // ACTION: Settings > Initialize Search bar > Verify Slice > Invalid data
-    ACTION_VERIFY_SLICE_ERROR_INVALID_DATA = 1725;
-
-    // ACTION: Settings > Initialize Search bar > Verify Slice > Parsing error
-    ACTION_VERIFY_SLICE_PARSING_ERROR = 1726;
-
-    // ACTION: Settings > Initialize Search bar > Verify Slice > Other exception
-    ACTION_VERIFY_SLICE_OTHER_EXCEPTION = 1727;
-
-    // Custom tag to evaluate the consuming time of the Controller.updateState.
-    // CATEGORY: SETTINGS
-    // OS: R
-    ACTION_CONTROLLER_UPDATE_STATE = 1728;
-
-    // Custom tag to evaluate the consuming time from onAttach to
-    // DashboardFragment.updatePreferenceStates.
-    // CATEGORY: SETTINGS
-    // OS: R
-    ACTION_DASHBOARD_VISIBLE_TIME = 1729;
-
-    // ACTION: Allow "Access all files" for an app
-    APP_SPECIAL_PERMISSION_MANAGE_EXT_STRG_ALLOW = 1730;
-
-    // ACTION: Deny "Access all files" for an app
-    APP_SPECIAL_PERMISSION_MANAGE_EXT_STRG_DENY = 1731;
-
-    // ACTION: Battery feature usage
-    ACTION_BATTERY_OPTION_FEATURE_USAGE = 1732;
-
-    // ACTION: Battery feature runtime event
-    ACTION_BATTERY_OPTION_RUNTIME_EVENT = 1733;
-
-    // ACTION: Settings > Developer Options > Toggle on Wireless debugging
-    // CATEGORY: SETTINGS
-    // OS: R
-    ACTION_ADB_WIRELESS_ON = 1734;
-
-    // ACTION: Settings > Developer Options > Toggle off Wireless debugging
-    // CATEGORY: SETTINGS
-    // OS: R
-    ACTION_ADB_WIRELESS_OFF = 1735;
-
-    // ACTION: Change Wi-Fi hotspot name
-    // CATEGORY: SETTINGS
-    // OS: R
-    ACTION_SETTINGS_CHANGE_WIFI_HOTSPOT_NAME = 1736;
-
-    // ACTION: Change Wi-Fi hotspot password
-    // CATEGORY: SETTINGS
-    // OS: R
-    ACTION_SETTINGS_CHANGE_WIFI_HOTSPOT_PASSWORD = 1737;
-
-    // ACTION: Settings > Security > Toggle on Confirm Sim deletion
-    // CATEGORY: SETTINGS
-    // OS: R
-    ACTION_CONFIRM_SIM_DELETION_ON = 1738;
-
-    // ACTION: Settings > Security > Toggle off Confirm Sim deletion
-    // CATEGORY: SETTINGS
-    // OS: R
-    ACTION_CONFIRM_SIM_DELETION_OFF = 1739;
-}
-
-/**
- * Id for Settings pages. Each page must have its own unique Id.
- */
-enum PageId {
-    // Unknown page. Should not be used in production code.
-    PAGE_UNKNOWN = 0;
-
-    // OPEN: Settings > Accessibility
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACCESSIBILITY = 2;
-
-    // OPEN: Settings > Accessibility > Captions preference
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACCESSIBILITY_CAPTION_PROPERTIES = 3;
-
-    // OPEN: Settings > Accessibility > [Service]
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACCESSIBILITY_SERVICE = 4;
-
-    // OPEN: Settings > Accessibility > Color correction
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACCESSIBILITY_TOGGLE_DALTONIZER = 5;
-
-    // OPEN: Settings > Accessibility > Accessibility shortcut
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACCESSIBILITY_TOGGLE_GLOBAL_GESTURE = 6;
-
-    // OPEN: Settings > Accessibility > Magnification gestures (Renamed in O)
-    // OPEN: Settings > Accessibility > Magnification > Magnify with triple-tap
-    // OPEN: Settings > Accessibility > Magnification > Magnify with button
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACCESSIBILITY_TOGGLE_SCREEN_MAGNIFICATION = 7;
-
-    // OPEN: Settings > Accounts
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACCOUNT = 8;
-
-    // OPEN: Settings > Accounts > [Single Account Sync Settings]
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACCOUNTS_ACCOUNT_SYNC = 9;
-
-    // OPEN: Settings > Accounts > Add an account
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ACCOUNTS_CHOOSE_ACCOUNT_ACTIVITY = 10;
-
-    // OPEN: Settings > Cellular network settings > APNs
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    APN = 12;
-
-    // OPEN: Settings > More > Cellular network settings > APNs > [Edit APN]
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    APN_EDITOR = 13;
-
-    // OPEN: Settings > Apps > Configure apps > App links > [App]
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    APPLICATIONS_APP_LAUNCH = 17;
-
-    // OPEN: Settings > Internal storage > Apps storage > [App]
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    APPLICATIONS_APP_STORAGE = 19;
-
-    // OPEN: Settings > Apps > [App info]
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    APPLICATIONS_INSTALLED_APP_DETAILS = 20;
-
-    // OPEN: Settings > Memory > App usage > [App Memory usage]
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    APPLICATIONS_PROCESS_STATS_DETAIL = 21;
-
-    // OPEN: Settings > Memory > App usage
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    APPLICATIONS_PROCESS_STATS_UI = 23;
-
-    // OPEN: Choose Bluetooth device (ex: when sharing)
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    BLUETOOTH_DEVICE_PICKER = 25;
-
-    // OPEN: Settings > Security > Choose screen lock
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    CHOOSE_LOCK_GENERIC = 27;
-
-    // OPEN: Settings > Security > Choose screen lock > Choose your password
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    CHOOSE_LOCK_PASSWORD = 28;
-
-    // OPEN: Settings > Security > Choose screen lock > Choose your pattern
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    CHOOSE_LOCK_PATTERN = 29;
-
-    // OPEN: Settings > Security > Choose screen lock > Confirm your password
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    CONFIRM_LOCK_PASSWORD = 30;
-
-    // OPEN: Settings > Security > Choose screen lock > Confirm your pattern
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    CONFIRM_LOCK_PATTERN = 31;
-
-    // OPEN: Settings > Security > Encrypt phone
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    CRYPT_KEEPER = 32;
-
-    // OPEN: Settings > Security > Encrypt phone > Confirm
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    CRYPT_KEEPER_CONFIRM = 33;
-
-    // OPEN: Settings (Root page)
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    DASHBOARD_SUMMARY = 35;
-
-    // OPEN: Settings > Data usage
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    DATA_USAGE_SUMMARY = 37;
-
-    // OPEN: Settings > Date & time
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    DATE_TIME = 38;
-
-    // OPEN: Settings > Developer options
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    DEVELOPMENT = 39;
-
-    // OPEN: Settings > About phone
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    DEVICEINFO = 40;
-
-    // OPEN: Settings > Internal storage
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    DEVICEINFO_STORAGE = 42;
-
-    // OPEN: Settings > Display
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    DISPLAY = 46;
-
-    // OPEN: Settings > Display > Daydream
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    DREAM = 47;
-
-    // OPEN: Settings > Security > Screen lock > Secure start-up
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ENCRYPTION = 48;
-
-    // OPEN: Settings > Security > Nexus Imprint
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    FINGERPRINT = 49;
-
-    // OPEN: Settings > Battery > History details
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    FUELGAUGE_BATTERY_HISTORY_DETAIL = 51;
-
-    // OPEN: Settings > Battery > Battery saver
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    FUELGAUGE_BATTERY_SAVER = 52;
-
-    // OPEN: Settings > Battery > [App Use details]
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    FUELGAUGE_POWER_USAGE_DETAIL = 53;
-
-    // OPEN: Settings > Security > SIM card lock settings
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ICC_LOCK = 56;
-
-    // OPEN: Settings > Language & input > Physical keyboard
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    INPUTMETHOD_KEYBOARD = 58;
-
-    // OPEN: Settings > Language & input > Spell checker
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    INPUTMETHOD_SPELL_CHECKERS = 59;
-
-    // OBSOLETE
-    INPUTMETHOD_SUBTYPE_ENABLER = 60;
-
-    // OPEN: Settings > Language & input > Personal dictionary
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    INPUTMETHOD_USER_DICTIONARY = 61;
-
-    // OPEN: Settings > Language & input > Add word
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    INPUTMETHOD_USER_DICTIONARY_ADD_WORD = 62;
-
-    // OPEN: Settings > Location
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    LOCATION = 63;
-
-    // OPEN: Settings > Apps
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    MANAGE_APPLICATIONS = 65;
-
-    // OPEN: Settings > Backup & reset > Factory data reset
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    MASTER_CLEAR = 66;
-
-    // OPEN: Settings > Backup & reset > Factory data reset > Confirm
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    MASTER_CLEAR_CONFIRM = 67;
-
-    // OPEN: Settings > More > Android Beam
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    NFC_BEAM = 69;
-
-    // OPEN: Settings > Tap & pay
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    NFC_PAYMENT = 70;
-
-    // OPEN: Settings > Sound & notification > App notifications > [App]
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    NOTIFICATION_APP_NOTIFICATION = 72;
-
-    // OBSOLETE
-    NOTIFICATION_REDACTION = 74;
-
-    // OPEN: Settings Widget > Notification log
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    NOTIFICATION_STATION = 75;
-
-    // OPEN: Settings > Sound & notification > Do not disturb
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    NOTIFICATION_ZEN_MODE = 76;
-
-
-    // OPEN: Print job notification > Print job settings
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    PRINT_JOB_SETTINGS = 78;
-
-    // OPEN: Settings > Printing > [Print Service]
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    PRINT_SERVICE_SETTINGS = 79;
-
-    // OPEN: Settings > Printing
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    PRINT_SETTINGS = 80;
-
-    // OPEN: Settings > Backup & reset
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    PRIVACY = 81;
-
-    //OBSOLETE
-    PROXY_SELECTOR = 82;
-
-    // OPEN: Settings > Backup & reset > Network settings reset
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    RESET_NETWORK = 83;
-
-    // OPEN: Settings > Backup & reset > Network settings reset > Confirm
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    RESET_NETWORK_CONFIRM = 84;
-
-    // OPEN: Settings > Developer Options > Running Services
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    RUNNING_SERVICE_DETAILS = 85;
-
-    // OPEN: Settings > Security > Screen pinning
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    SCREEN_PINNING = 86;
-
-    // OPEN: Settings > Security
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    SECURITY = 87;
-
-    // OPEN: Settings > SIM cards
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    SIM = 88;
-
-    // OBSOLETE
-    TESTING = 89;
-
-    // OPEN: Settings > More > Tethering & portable hotspot
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    TETHER = 90;
-
-    // OPEN: Settings > Security > Trust agents
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    TRUST_AGENT = 91;
-
-    // OPEN: Settings > Security > Trusted credentials
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    TRUSTED_CREDENTIALS = 92;
-
-    // OPEN: Settings > Language & input > TTS output > [Engine] > Settings
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    TTS_ENGINE_SETTINGS = 93;
-
-    // OPEN: Settings > Language & input > Text-to-speech output
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    TTS_TEXT_TO_SPEECH = 94;
-
-    // OPEN: Settings > Security > Apps with usage access
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    USAGE_ACCESS = 95;
-
-    // OPEN: Settings > Users
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    USER = 96;
-
-    // OPEN: Settings > Users > [Restricted profile app & content access]
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    USERS_APP_RESTRICTIONS = 97;
-
-    // OPEN: Settings > Users > [User settings]
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    USER_DETAILS = 98;
-
-    // OPEN: Settings > More > VPN
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    VPN = 100;
-
-    // OPEN: Settings > Display > Choose wallpaper from
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    WALLPAPER_TYPE = 101;
-
-    // OPEN: Settings > Display > Cast
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    WFD_WIFI_DISPLAY = 102;
-
-    // OPEN: Settings > Wi-Fi
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    WIFI = 103;
-
-    // OPEN: Settings > More > Wi-Fi Calling
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    WIFI_CALLING = 105;
-
-    // OPEN: Settings > Wi-Fi > Saved networks
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    WIFI_SAVED_ACCESS_POINTS = 106;
-
-    // OPEN: Settings > Wi-Fi > Advanced Wi-Fi > Wi-Fi Direct
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    WIFI_P2P = 109;
-
-    // OPEN: Settings > Apps > Configure apps > App permissions
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    APPLICATIONS_ADVANCED = 130;
-
-    // OPEN: Settings > Location > Scanning
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    LOCATION_SCANNING = 131;
-
-    // OPEN: Settings > Sound & notification > App notifications
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    MANAGE_APPLICATIONS_NOTIFICATIONS = 133;
-
-    // OPEN: Settings > Sound & notification > DND > Priority only allows
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    NOTIFICATION_ZEN_MODE_PRIORITY = 141;
-
-    // OPEN: Settings > Sound & notification > DND > Automatic rules
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    NOTIFICATION_ZEN_MODE_AUTOMATION = 142;
-
-    // OPEN: Settings > Sound & notification > DND > [Time based rule]
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    NOTIFICATION_ZEN_MODE_SCHEDULE_RULE = 144;
-
-    // OPEN: Settings > Apps > Configure apps > App links
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    MANAGE_DOMAIN_URLS = 143;
-
-    // OPEN: Settings > Sound & notification > DND > [Event rule]
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    NOTIFICATION_ZEN_MODE_EVENT_RULE = 146;
-
-    // OPEN: Settings > Sound & notification > Notification access
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    NOTIFICATION_ACCESS = 179;
-
-    // OPEN: Settings > Sound & notification > Do Not Disturb access
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    NOTIFICATION_ZEN_MODE_ACCESS = 180;
-
-    // OPEN: Settings > Internal storage > Apps storage
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    APPLICATIONS_STORAGE_APPS = 182;
-
-    // OPEN: Settings > Security > Usage access
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    APPLICATIONS_USAGE_ACCESS_DETAIL = 183;
-
-    // OPEN: Settings > Battery > Battery optimization
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    APPLICATIONS_HIGH_POWER_APPS = 184;
-
-    // OPEN: Settings > Apps > Configure > Default apps > Assist & voice input
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    APPLICATIONS_MANAGE_ASSIST = 201;
-
-    // OPEN: Settings > Memory
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    PROCESS_STATS_SUMMARY = 202;
-
-    // OPEN: Settings > Apps > Configure Apps > Display over other apps
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    SYSTEM_ALERT_WINDOW_APPS = 221;
-
-    // OPEN: Settings > About phone > Legal information
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    ABOUT_LEGAL_SETTINGS = 225;
-
-
-    // OPEN: Settings > Developer options > Inactive apps
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    FUELGAUGE_INACTIVE_APPS = 238;
-
-    // OPEN: Settings > Security > Nexus Imprint > Add Fingerprint
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    FINGERPRINT_ENROLLING = 240;
-    // OPEN: Fingerprint Enroll > Find Sensor
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    FINGERPRINT_FIND_SENSOR = 241;
-
-    // OPEN: Fingerprint Enroll > Fingerprint Enrolled!
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    FINGERPRINT_ENROLL_FINISH = 242;
-
-    // OPEN: Fingerprint Enroll introduction
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    FINGERPRINT_ENROLL_INTRO = 243;
-
-    // OPEN: Fingerprint Enroll > Let's Start!
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    FINGERPRINT_ENROLL_SIDECAR = 245;
-
-    // OPEN: Fingerprint Enroll SUW > Let's Start!
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    FINGERPRINT_ENROLLING_SETUP = 246;
-
-    // OPEN: Fingerprint Enroll SUW > Find Sensor
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    FINGERPRINT_FIND_SENSOR_SETUP = 247;
-
-    // OPEN: Fingerprint Enroll SUW > Fingerprint Enrolled!
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    FINGERPRINT_ENROLL_FINISH_SETUP = 248;
-
-    // OPEN: Fingerprint Enroll SUW introduction
-    // CATEGORY: SETTINGS
-    // OS: 6.0
-    FINGERPRINT_ENROLL_INTRO_SETUP = 249;
-
-    // OPEN: Settings > Developer Options > Background Check
-    // CATEGORY: SETTINGS
-    // OS: N
-    BACKGROUND_CHECK_SUMMARY = 258;
-
-    // OPEN: Settings > Notifications > [App] > Channel Notifications
-    // CATEGORY: SETTINGS
-    // OS: N
-    NOTIFICATION_TOPIC_NOTIFICATION = 265;
-
-    // OPEN: Settings > Security > User credentials
-    // CATEGORY: Settings
-    // OS: N
-    USER_CREDENTIALS = 285;
-
-    // Logs that the user has edited the enabled VR listeners.
-    // CATEGORY: SETTINGS
-    // OS: N
-    VR_MANAGE_LISTENERS = 334;
-
-    // Settings -> Accessibility -> Click after pointer stops moving
-    // CATEGORY: SETTINGS
-    // OS: N
-    ACCESSIBILITY_TOGGLE_AUTOCLICK = 335;
-
-    // Settings -> Sound
-    // CATEGORY: SETTINGS
-    // OS: N
-    SOUND = 336;
-
-    // Settings -> Notifications -> Gear
-    // CATEGORY: SETTINGS
-    // OS: N
-    CONFIGURE_NOTIFICATION = 337;
-
-    // Settings -> Wi-Fi -> Gear
-    // CATEGORY: SETTINGS
-    // OS: N
-    CONFIGURE_WIFI = 338;
-
-    // Settings -> Display -> Display size
-    // OS: N
-    DISPLAY_SCREEN_ZOOM = 339;
-
-    // Settings -> Display -> Font size
-    // CATEGORY: SETTINGS
-    // OS: N
-    ACCESSIBILITY_FONT_SIZE = 340;
-
-    // Settings -> Data usage -> Cellular/Wi-Fi data usage
-    // CATEGORY: SETTINGS
-    // OS: N
-    DATA_USAGE_LIST = 341;
-
-    // Settings -> Data usage -> Billing cycle or DATA_USAGE_LIST -> Gear
-    // CATEGORY: SETTINGS
-    // OS: N
-    BILLING_CYCLE = 342;
-
-    // DATA_USAGE_LIST -> Any item or App info -> Data usage
-    // CATEGORY: SETTINGS
-    // OS: N
-    APP_DATA_USAGE = 343;
-
-    // Settings -> Language & input -> Language
-    // CATEGORY: SETTINGS
-    // OS: N
-    USER_LOCALE_LIST = 344;
-
-    // Settings -> Language & input -> Virtual keyboard
-    // CATEGORY: SETTINGS
-    // OS: N
-    VIRTUAL_KEYBOARDS = 345;
-
-    // Settings -> Language & input -> Physical keyboard
-    // CATEGORY: SETTINGS
-    // OS: N
-    PHYSICAL_KEYBOARDS = 346;
-
-    // Settings -> Language & input -> Virtual keyboard -> Add a virtual keyboard
-    // CATEGORY: SETTINGS
-    // OS: N
-    ENABLE_VIRTUAL_KEYBOARDS = 347;
-
-    // Settings -> Data usage -> Data Saver
-    // CATEGORY: SETTINGS
-    // OS: N
-    DATA_SAVER_SUMMARY = 348;
-
-    // Settings -> Data usage -> Data Saver -> Unrestricted data access
-    // CATEGORY: SETTINGS
-    // OS: N
-    DATA_USAGE_UNRESTRICTED_ACCESS = 349;
-
-    // Settings -> Apps -> Gear -> Special access
-    SPECIAL_ACCESS = 351;
-
-    // OPEN: SUW Welcome Screen -> Vision Settings
-    // CATEGORY: SETTINGS
-    // OS: N
-    SUW_ACCESSIBILITY = 367;
-
-    // OPEN: SUW Welcome Screen -> Vision Settings -> Magnification gestures (Renamed in O)
-    // OPEN: SUW Welcome Screen -> Vision Settings -> Magnification -> Magnify with triple-tap
-    // OPEN: SUW Welcome Screen -> Vision Settings -> Magnification -> Magnify with button
-    // ACTION: New magnification gesture configuration is chosen
-    //  SUBTYPE: 0 is off, 1 is on
-    // CATEGORY: SETTINGS
-    // OS: N
-    SUW_ACCESSIBILITY_TOGGLE_SCREEN_MAGNIFICATION = 368;
-
-    // OPEN: SUW Welcome Screen -> Vision Settings -> Font size
-    // ACTION: New font size is chosen
-    //  SUBTYPE: 0 is small, 1 is default, 2 is large, 3 is largest
-    // CATEGORY: SETTINGS
-    // OS: N
-    SUW_ACCESSIBILITY_FONT_SIZE = 369;
-
-    // OPEN: SUW Welcome Screen -> Vision Settings -> Display size
-    // ACTION: New display size is chosen
-    //  SUBTYPE: 0 is small, 1 is default, 2 is large, 3 is larger, 4 is largest
-    // CATEGORY: SETTINGS
-    // OS: N
-    SUW_ACCESSIBILITY_DISPLAY_SIZE = 370;
-
-    // OPEN: SUW Welcome Screen -> Vision Settings -> TalkBack
-    // ACTION: New screen reader configuration is chosen
-    //  SUBTYPE: 0 is off, 1 is on
-    // CATEGORY: SETTINGS
-    // OS: N
-    SUW_ACCESSIBILITY_TOGGLE_SCREEN_READER = 371;
-
-    // Airplane mode on
-    SETTINGS_CONDITION_AIRPLANE_MODE = 377;
-    // AKA Data saver on
-    SETTINGS_CONDITION_BACKGROUND_DATA = 378;
-    // Battery saver on
-    SETTINGS_CONDITION_BATTERY_SAVER = 379;
-    // Cellular data off
-    SETTINGS_CONDITION_CELLULAR_DATA = 380;
-    // Do not disturb on
-    SETTINGS_CONDITION_DND = 381;
-    // Hotspot on
-    SETTINGS_CONDITION_HOTSPOT = 382;
-    // Work profile off
-    SETTINGS_CONDITION_WORK_MODE = 383;
-
-    // Settings > Apps > Gear > Special Access > Premium SMS access
-    PREMIUM_SMS_ACCESS = 388;
-
-    // OPEN: Settings > Accounts > Work profile settings
-    // CATEGORY: SETTINGS
-    ACCOUNTS_WORK_PROFILE_SETTINGS = 401;
-
-    // Settings -> Dev options -> Convert to file encryption
-    CONVERT_FBE = 402;
-
-    // Settings -> Dev options -> Convert to file encryption -> WIPE AND CONVERT...
-    CONVERT_FBE_CONFIRM = 403;
-
-    // Settings -> Dev options -> Running services
-    RUNNING_SERVICES = 404;
-
-    // The dialog shown by 3P intent to change current webview implementation.
-    WEBVIEW_IMPLEMENTATION = 405;
-
-    // OPEN: Settings > Internal storage > Storage manager
-    // CATEGORY: SETTINGS
-    STORAGE_MANAGER_SETTINGS = 458;
-
-    // OPEN: Settings -> Gestures
-    // CATEGORY: SETTINGS
-    SETTINGS_GESTURES = 459;
-
-    // OPEN: Settings > Display > Night Light
-    // CATEGORY: SETTINGS
-    NIGHT_DISPLAY_SETTINGS = 488;
-
-    // Night Light on
-    SETTINGS_CONDITION_NIGHT_DISPLAY = 492;
-
-    // OPEN: Settings > Language & input > Personal dictionary (single locale)
-    USER_DICTIONARY_SETTINGS = 514;
-
-    // OPEN: Settings > Date & time > Select time zone
-    ZONE_PICKER = 515;
-
-    // OPEN: Settings > Security > Device administrators
-    DEVICE_ADMIN_SETTINGS = 516;
-
-    // OPEN: Settings > Security > Factory Reset Protection dialog
-    DIALOG_FRP = 528;
-
-    // OPEN: Settings > Custom list preference with confirmation message
-    DIALOG_CUSTOM_LIST_CONFIRMATION = 529;
-
-    // OPEN: Settings > APN Editor > Error dialog
-    DIALOG_APN_EDITOR_ERROR = 530;
-
-    // OPEN: Settings > Users > Edit owner info dialog
-    DIALOG_OWNER_INFO_SETTINGS = 531;
-
-    // OPEN: Settings > Security > Use one lock dialog
-    DIALOG_UNIFICATION_CONFIRMATION = 532;
-
-    // OPEN: Settings > Security > User Credential
-    DIALOG_USER_CREDENTIAL = 533;
-
-    // OPEN: Settings > Accounts > Remove account
-    DIALOG_REMOVE_USER = 534;
-
-    // OPEN: Settings > Accounts > Confirm auto sync dialog
-    DIALOG_CONFIRM_AUTO_SYNC_CHANGE = 535;
-
-    // OPEN: Settings > Apps > Dialog for running service details
-    DIALOG_RUNNIGN_SERVICE = 536;
-
-    // OPEN: Settings > Bluetooth > Rename this device
-    DIALOG_BLUETOOTH_RENAME = 538;
-
-    // OPEN: Settings > Battery optimization > details for app
-    DIALOG_HIGH_POWER_DETAILS = 540;
-
-    // OPEN: Settings > Keyboard > Show keyboard layout dialog
-    DIALOG_KEYBOARD_LAYOUT = 541;
-
-    // OPEN: Settings > WIFI Scan permission dialog
-    DIALOG_WIFI_SCAN_MODE = 543;
-
-    // OPEN: Settings > Wireless > VPN > Config dialog
-    DIALOG_LEGACY_VPN_CONFIG = 545;
-
-    // OPEN: Settings > Wireless > VPN > Config dialog for app
-    DIALOG_VPN_APP_CONFIG = 546;
-
-    // OPEN: Settings > Wireless > VPN > Cannot connect dialog
-    DIALOG_VPN_CANNOT_CONNECT = 547;
-
-    // OPEN: Settings > Wireless > VPN > Replace existing VPN dialog
-    DIALOG_VPN_REPLACE_EXISTING = 548;
-
-    // OPEN: Settings > Billing cycle > Edit billing cycle dates dialog
-    DIALOG_BILLING_CYCLE = 549;
-
-    // OPEN: Settings > Billing cycle > Edit data limit/warning dialog
-    DIALOG_BILLING_BYTE_LIMIT = 550;
-
-    // OPEN: Settings > Billing cycle > turn on data limit dialog
-    DIALOG_BILLING_CONFIRM_LIMIT = 551;
-
-    // OPEN: Settings > Service > Turn off notification access dialog
-    DIALOG_DISABLE_NOTIFICATION_ACCESS = 552;
-
-    // OPEN: Settings > Sound > Use personal sound for work profile dialog
-    DIALOG_UNIFY_SOUND_SETTINGS = 553;
-
-    // OPEN: Settings > Zen mode > Dialog warning about the zen access privileges being granted.
-    DIALOG_ZEN_ACCESS_GRANT = 554;
-
-    // OPEN: Settings > Zen mode > Dialog warning about the zen access privileges being revoked.
-    DIALOG_ZEN_ACCESS_REVOKE = 555;
-
-    // OPEN: Settings > Zen mode > Dialog that picks time for zen mode.
-    DIALOG_ZEN_TIMEPICKER = 556;
-
-    // OPEN: Settings > Apps > Dialog that informs user to allow service access for app.
-    DIALOG_SERVICE_ACCESS_WARNING = 557;
-
-    // OPEN: Settings > Apps > Dialog for app actions (such as force stop/clear data)
-    DIALOG_APP_INFO_ACTION = 558;
-
-    // OPEN: Settings > Storage > Dialog for forgetting a storage device
-    DIALOG_VOLUME_FORGET = 559;
-
-    // OPEN: Settings > Storage > Dialog for initializing a volume
-    DIALOG_VOLUME_INIT = 561;
-
-    // OPEN: Settings > Storage > Dialog for unmounting a volume
-    DIALOG_VOLUME_UNMOUNT = 562;
-
-    // OPEN: Settings > Storage > Dialog for renaming a volume
-    DIALOG_VOLUME_RENAME = 563;
-
-    // OPEN: Settings > Storage > Dialog for clear cache
-    DIALOG_STORAGE_CLEAR_CACHE = 564;
-
-    // OPEN: Settings > Storage > Dialog for system info
-    DIALOG_STORAGE_SYSTEM_INFO = 565;
-
-    // OPEN: Settings > Storage > Dialog for other info
-    DIALOG_STORAGE_OTHER_INFO = 566;
-
-    // OPEN: Settings > Storage > Dialog for user info
-    DIALOG_STORAGE_USER_INFO = 567;
-    // OPEN: Settings > Add fingerprint > Dialog when user touches fingerprint icon.
-    DIALOG_FINGERPRINT_ICON_TOUCH = 568;
-
-    // OPEN: Settings > Add fingerprint > Error dialog
-    DIALOG_FINGERPINT_ERROR = 569;
-
-    // OPEN: Settings > Fingerprint > Rename or delete dialog
-    DIALOG_FINGERPINT_EDIT = 570;
-
-    // OPEN: Settings > Fingerprint > Dialog for deleting last fingerprint
-    DIALOG_FINGERPINT_DELETE_LAST = 571;
-
-    // OPEN: SUW > Fingerprint > Dialog to confirm skip fingerprint setup entirely.
-    DIALOG_FINGERPRINT_SKIP_SETUP = 573;
-
-    // OPEN: Settings > Proxy Selector error dialog
-    DIALOG_PROXY_SELECTOR_ERROR = 574;
-
-    // OPEN: Settings > Wifi > P2P Settings > Disconnect dialog
-    DIALOG_WIFI_P2P_DISCONNECT = 575;
-
-    // OPEN: Settings > Wifi > P2P Settings > Cancel connection dialog
-    DIALOG_WIFI_P2P_CANCEL_CONNECT = 576;
-
-    // OPEN: Settings > Wifi > P2P Settings > Rename dialog
-    DIALOG_WIFI_P2P_RENAME = 577;
-
-    // OPEN: Settings > Wifi > P2P Settings > Forget group dialog
-    DIALOG_WIFI_P2P_DELETE_GROUP = 578;
-
-    // OPEN: Settings > APN > Restore default dialog
-    DIALOG_APN_RESTORE_DEFAULT = 579;
-
-    // OPEN: Settings > Encryption interstitial accessibility warning dialog
-    DIALOG_ENCRYPTION_INTERSTITIAL_ACCESSIBILITY = 581;
-
-    // OPEN: Settings > Acessibility > Enable accessiblity service dialog
-    DIALOG_ACCESSIBILITY_SERVICE_ENABLE = 583;
-
-    // OPEN: Settings > Acessibility > Disable accessiblity service dialog
-    DIALOG_ACCESSIBILITY_SERVICE_DISABLE = 584;
-
-    // OPEN: Settings > Account > Remove account dialog
-    DIALOG_ACCOUNT_SYNC_REMOVE = 585;
-
-    // OPEN: Settings > Account > Remove account failed dialog
-    DIALOG_ACCOUNT_SYNC_FAILED_REMOVAL = 586;
-
-    // OPEN: Settings > Account > Cannot do onetime sync dialog
-    DIALOG_ACCOUNT_SYNC_CANNOT_ONETIME_SYNC = 587;
-
-    // OPEN: Settings > Display > Night light > Set start time dialog
-    DIALOG_NIGHT_DISPLAY_SET_START_TIME = 588;
-
-    // OPEN: Settings > Display > Night light > Set end time dialog
-    DIALOG_NIGHT_DISPLAY_SET_END_TIME = 589;
-
-
-
-        // OPEN: Settings > User > Edit info dialog
-        DIALOG_USER_EDIT = 590;
-
-        // OPEN: Settings > User > Confirm remove dialog
-        DIALOG_USER_REMOVE = 591;
-
-        // OPEN: Settings > User > Enable calling dialog
-        DIALOG_USER_ENABLE_CALLING = 592;
-
-        // OPEN: Settings > User > Enable calling and sms dialog
-        DIALOG_USER_ENABLE_CALLING_AND_SMS = 593;
-
-        // OPEN: Settings > User > Cannot manage device message dialog
-        DIALOG_USER_CANNOT_MANAGE = 594;
-
-        // OPEN: Settings > User > Add user dialog
-        DIALOG_USER_ADD = 595;
-
-        // OPEN: Settings > User > Setup user dialog
-        DIALOG_USER_SETUP = 596;
-
-        // OPEN: Settings > User > Setup profile dialog
-        DIALOG_USER_SETUP_PROFILE = 597;
-
-        // OPEN: Settings > User > Choose user type dialog
-        DIALOG_USER_CHOOSE_TYPE = 598;
-
-        // OPEN: Settings > User > Need lockscreen dialog
-        DIALOG_USER_NEED_LOCKSCREEN = 599;
-
-        // OPEN: Settings > User > Confirm exit guest mode dialog
-        DIALOG_USER_CONFIRM_EXIT_GUEST = 600;
-
-        // OPEN: Settings > User > Edit user profile dialog
-        DIALOG_USER_EDIT_PROFILE = 601;
-
-
-    // OPEN: Settings > Wifi > Saved AP > Edit dialog
-    DIALOG_WIFI_SAVED_AP_EDIT = 602;
-
-    // OPEN: Settings > Wifi > Edit AP dialog
-    DIALOG_WIFI_AP_EDIT = 603;
-
-    // OPEN: Settings > Wifi > Write config to NFC dialog
-    DIALOG_WIFI_WRITE_NFC = 606;
-
-    // OPEN: Settings > Date > Date picker dialog
-    DIALOG_DATE_PICKER = 607;
-
-    // OPEN: Settings > Date > Time picker dialog
-    DIALOG_TIME_PICKER = 608;
-
-    // OPEN: Settings > Wireless > Manage wireless plan dialog
-    DIALOG_MANAGE_MOBILE_PLAN = 609;
-
-    // OPEN Settings > Bluetooth > Attempt to connect to device that shows dialog
-    BLUETOOTH_DIALOG_FRAGMENT = 613;
-
-    // OPEN: Settings > Security
-    // CATEGORY: SETTINGS
-    // OS: O
-    ENTERPRISE_PRIVACY_SETTINGS = 628;
-
-    // OPEN: Settings > System
-    SETTINGS_SYSTEM_CATEGORY = 744;
-
-    // OPEN: Settings > Storage
-    SETTINGS_STORAGE_CATEGORY = 745;
-
-    // OPEN: Settings > Network & Internet
-    SETTINGS_NETWORK_CATEGORY = 746;
-
-    // OPEN: Settings > Connected Device
-    SETTINGS_CONNECTED_DEVICE_CATEGORY = 747;
-
-    // OPEN: Settings > App & Notification
-    SETTINGS_APP_NOTIF_CATEGORY = 748;
-
-    // OPEN: Settings > System > Language & Region
-    SETTINGS_LANGUAGE_CATEGORY = 750;
-
-    // OPEN: Settings > System > Input & Gesture > Swipe to notification gesture
-    SETTINGS_GESTURE_SWIPE_TO_NOTIFICATION = 751;
-
-    // OPEN: Settings > System > Input & Gesture > Double tap power button gesture
-    SETTINGS_GESTURE_DOUBLE_TAP_POWER = 752;
-
-    // OPEN: Settings > System > Input & Gesture > Pick up gesture
-    SETTINGS_GESTURE_PICKUP = 753;
-
-    // OPEN: Settings > System > Input & Gesture > Double tap screen gesture
-    SETTINGS_GESTURE_DOUBLE_TAP_SCREEN = 754;
-
-    // OPEN: Settings > System > Input & Gesture > Double twist gesture
-    SETTINGS_GESTURE_DOUBLE_TWIST = 755;
-
-    // OPEN: Settings > Apps > Default Apps > Default browser
-    DEFAULT_BROWSER_PICKER = 785;
-    // OPEN: Settings > Apps > Default Apps > Default emergency app
-    DEFAULT_EMERGENCY_APP_PICKER = 786;
-
-    // OPEN: Settings > Apps > Default Apps > Default home
-    DEFAULT_HOME_PICKER = 787;
-
-    // OPEN: Settings > Apps > Default Apps > Default phone
-    DEFAULT_PHONE_PICKER = 788;
-
-    // OPEN: Settings > Apps > Default Apps > Default sms
-    DEFAULT_SMS_PICKER = 789;
-
-    // OPEN: Settings > Apps > Notification > Notification Assistant
-    DEFAULT_NOTIFICATION_ASSISTANT = 790;
-
-
-    // OPEN: Settings > Apps > Default Apps > Warning dialog to confirm selection
-    DEFAULT_APP_PICKER_CONFIRMATION_DIALOG = 791;
-
-    // OPEN: Settings > Apps > Default Apps > Default autofill app
-    DEFAULT_AUTOFILL_PICKER = 792;
-
-    // OPEN: Settings > Apps > Gear > Special Access > Install other apps
-    // CATEGORY: SETTINGS
-    // OS: 8.0
-    MANAGE_EXTERNAL_SOURCES = 808;
-
-    // Logs that the user has edited the picture-in-picture settings.
-    // CATEGORY: SETTINGS
-    SETTINGS_MANAGE_PICTURE_IN_PICTURE = 812;
-
-    // OPEN: SUW Welcome Screen -> Vision Settings -> Select to Speak
-    // ACTION: Select to Speak configuration is chosen
-    //  SUBTYPE: 0 is off, 1 is on
-    // CATEGORY: SETTINGS
-    // OS: N
-    SUW_ACCESSIBILITY_TOGGLE_SELECT_TO_SPEAK = 817;
-
-    // OPEN: Settings > System > Backup
-    // CATEGORY: SETTINGS
-    // OS: O
-    BACKUP_SETTINGS = 818;
-
-    // OPEN: Settings > Storage > Games
-    // CATEGORY: SETTINGS
-    // OS: O
-    APPLICATIONS_STORAGE_GAMES = 838;
-
-    // OPEN: Settings > Storage > Audio and Music
-    // CATEGORY: SETTINGS
-    // OS: O
-    APPLICATIONS_STORAGE_MUSIC = 839;
-
-    // ACTION: Settings > Storage > Free Up Space to launch Deletion Helper
-    // CATEGORY: SETTINGS
-    // OS: O
-    STORAGE_FREE_UP_SPACE_NOW = 840;
-
-    // ACTION: Settings > Storage > Files to open the File Manager
-    // CATEGORY: SETTINGS
-    // OS: O
-    STORAGE_FILES = 841;
-
-    // OPEN: Settings > Apps > Default Apps > Assist >  Default assist
-    DEFAULT_ASSIST_PICKER = 843;
-
-    // OPEN: Settings > Apps > Default Apps > Assist >  Default voice input
-    DEFAULT_VOICE_INPUT_PICKER = 844;
-
-    // OPEN: Settings > Storage > [Profile]
-    SETTINGS_STORAGE_PROFILE = 845;
-
-    // OPEN: Settings > Security & screen lock -> Encryption & crendentials
-    // CATEGORY: SETTINGS
-    // OS: O
-    ENCRYPTION_AND_CREDENTIAL = 846;
-
-    // OPEN: Settings > Wi-Fi > Network Details (click on Access Point)
-    // CATEGORY: SETTINGS
-    // OS: O
-    WIFI_NETWORK_DETAILS = 849;
-
-    // OPEN: Settings > Wi-Fi > Wifi Preferences -> Advanced -> Network Scorer
-    // CATEGORY: SETTINGS
-    // OS: O
-    SETTINGS_NETWORK_SCORER = 861;
-
-    // OPEN: Settings > About device > Model > Hardware info dialog
-    DIALOG_SETTINGS_HARDWARE_INFO = 862;
-
-    // OPEN: Settings > Security & screen lock -> Lock screen preferences
-    // CATEGORY: SETTINGS
-    SETTINGS_LOCK_SCREEN_PREFERENCES = 882;
-
-
-    // OPEN: Settings -> Display -> When in VR Mode
-    VR_DISPLAY_PREFERENCE = 921;
-
-    // OPEN: Settings > Accessibility > Magnification
-    // CATEGORY: SETTINGS
-    // OS: O
-    ACCESSIBILITY_SCREEN_MAGNIFICATION_SETTINGS = 922;
-
-    // OPEN: Settings -> System -> Reset options
-    RESET_DASHBOARD = 924;
-
-     // OPEN: Settings > Security > Nexus Imprint > [Fingerprint] > Delete
-    // CATEGORY: SETTINGS
-    // OS: O
-    FINGERPRINT_REMOVE_SIDECAR = 934;
-
-    // OPEN: Settings > Storage > Movies & TV
-    // CATEGORY: SETTINGS
-    // OS: O
-    APPLICATIONS_STORAGE_MOVIES = 935;
-
-    // OPEN: Settings > Security > Managed Device Info > Apps installed
-    // CATEGORY: SETTINGS
-    // OS: O
-    ENTERPRISE_PRIVACY_INSTALLED_APPS = 938;
-
-    // OPEN: Settings > Security > Managed Device Info > nnn permissions
-    // CATEGORY: SETTINGS
-    // OS: O
-    ENTERPRISE_PRIVACY_PERMISSIONS = 939;
-
-
-    // OPEN: Settings > Security > Managed Device Info > Default apps
-    // CATEGORY: SETTINGS
-    // OS: O
-    ENTERPRISE_PRIVACY_DEFAULT_APPS = 940;
-
-    // OPEN: Choose screen lock dialog in Settings
-    // CATEGORY: SETTINGS
-    // OS: O DR
-    SETTINGS_CHOOSE_LOCK_DIALOG = 990;
-
-    // OPEN: Settings > System > Languages & input > Assist gesture
-    // CATEGORY: SETTINGS
-    // OS: O DR
-    SETTINGS_ASSIST_GESTURE = 996;
-
-    // OPEN: Settings > Connected Devices > Bluetooth > (click on details link for a paired device)
-    BLUETOOTH_DEVICE_DETAILS = 1009;
-
-    // OPEN: Settings > credential pages - prompt for key guard configuration confirmation
-    CONFIGURE_KEYGUARD_DIALOG = 1010;
-
-    // OPEN: Settings > Network > Tether > Wi-Fi hotspot
-    WIFI_TETHER_SETTINGS = 1014;
-
-    // OPEN: Settings->Connected Devices->Bluetooth->(click on details link for a paired device)
-    // -> Edit name button.
-    // CATEGORY: SETTINGS
-    // OS: O DR
-    DIALOG_BLUETOOTH_PAIRED_DEVICE_RENAME = 1015;
-
-    // OPEN: Settings > Connected devices > Bluetooth > Pair new device
-    // CATEGORY: SETTINGS
-    // OS: O DR
-    BLUETOOTH_PAIRING = 1018;
-
-    // OPEN: Settings->Connected Devices->Bluetooth->(click on details link for a paired device)
-    // -> Forget button.
-    // CATEGORY: SETTINGS
-    // OS: O DR
-    DIALOG_BLUETOOTH_PAIRED_DEVICE_FORGET = 1031;
-
-    // OPEN: Settings > Storage > Photos & Videos
-    // CATEGORY: SETTINGS
-    // OS: O MR
-    APPLICATIONS_STORAGE_PHOTOS = 1092;
-
-    // OPEN: Settings > Display > Colors
-    // CATEGORY: SETTINGS
-    // OS: O MR
-    COLOR_MODE_SETTINGS = 1143;
-
-    // OPEN: Settings > Developer Options > Experiment dashboard
-    // CATEGORY: SETTINGS
-    SETTINGS_FEATURE_FLAGS_DASHBOARD = 1217;
-
-    // OPEN: Settings > Notifications > [App] > Topic Notifications
-    // CATEGORY: SETTINGS
-    // OS: P
-    NOTIFICATION_CHANNEL_GROUP = 1218;
-
-    // OPEN: Settings > Developer options > Enable > Info dialog
-    // CATEGORY: SETTINGS
-    // OS: P
-    DIALOG_ENABLE_DEVELOPMENT_OPTIONS = 1219;
-
-    // OPEN: Settings > Developer options > OEM unlocking > Info dialog
-    // CATEGORY: SETTINGS
-    // OS: P
-    DIALOG_ENABLE_OEM_UNLOCKING = 1220;
-
-    // OPEN: Settings > Developer options > USB debugging > Info dialog
-    // CATEGORY: SETTINGS
-    // OS: P
-    DIALOG_ENABLE_ADB = 1222;
-
-    // OPEN: Settings > Security > Nexus Imprint > [Fingerprint]
-    // CATEGORY: SETTINGS
-    // OS: P
-    FINGERPRINT_AUTHENTICATE_SIDECAR = 1221;
-
-    // OPEN: Settings > Developer options > Revoke USB debugging authorizations > Info dialog
-    // CATEGORY: SETTINGS
-    // OS: P
-    DIALOG_CLEAR_ADB_KEYS = 1223;
-
-    // Open: Settings > Developer options > Quick setting tile config
-    // CATEGORY: SETTINGS
-    // OS: P
-    DEVELOPMENT_QS_TILE_CONFIG = 1224;
-
-    // OPEN: Settings > Developer options > Store logger data persistently on device > Info dialog
-    // CATEGORY: SETTINGS
-    // OS: P
-    DIALOG_LOG_PERSIST = 1225;
-
-    // OPEN: Settings > Network & Internet > Mobile network > Wi-Fi calling
-    // CATEGORY: SETTINGS
-    // OS: P
-    WIFI_CALLING_FOR_SUB = 1230;
-
-    // Open: Settings > Dev options > Oem unlock > lock it > warning dialog.
-    // OS: P
-    DIALOG_OEM_LOCK_INFO = 1238;
-
-    // Open: Settings > System > About phone > IMEI
-    // CATEGORY: SETTINGS
-    // OS: P
-    DIALOG_IMEI_INFO = 1240;
-
-    // OPEN: Settings > System > About Phone > Sim status
-    // CATEGORY: SETTINGS
-    // OS: P
-    DIALOG_SIM_STATUS = 1246;
-
-    // OPEN: Settings > System > About Phone > Android Version
-    // CATEGORY: SETTINGS
-    // OS: P
-    DIALOG_FIRMWARE_VERSION = 1247;
-
-    // OPEN: Settings > Battery(version 2)
-    // CATEGORY: SETTINGS
-    // OS: P
-    FUELGAUGE_POWER_USAGE_SUMMARY_V2 = 1263;
-
-    // OPEN: Settings > Connected devices > Connection preferences
-    // CATEGORY: SETTINGS
-    // OS: P
-    CONNECTION_DEVICE_ADVANCED = 1264;
-
-    // OPEN: Settings > Security > Screen lock gear icon
-    // CATEGORY: SETTINGS
-    // OS: P
-    SCREEN_LOCK_SETTINGS = 1265;
-
-    // OPEN: Settings > Sound > Do Not Disturb > Turn on automatically > Delete rule (trash can icon)
-    // CATEGORY: SETTINGS
-    // OS: P
-    NOTIFICATION_ZEN_MODE_DELETE_RULE_DIALOG = 1266;
-
-    // OPEN: Settings > Sound > Do Not Disturb > Turn on automatically > Add rule > Event/Time
-    // OPEN: Settings > Sound > Do Not Disturb > Turn on automatically > Select rule ("Event") > Rule name
-    // CATEGORY: SETTINGS
-    // OS: P
-    NOTIFICATION_ZEN_MODE_RULE_NAME_DIALOG = 1269;
-
-    // OPEN: Settings > Sound > Do Not Disturb > Turn on automatically > Add rule
-    // CATEGORY: SETTINGS
-    // OS: P
-    NOTIFICATION_ZEN_MODE_RULE_SELECTION_DIALOG = 1270;
-
-    // OPEN: Settings > Battery > Smart Battery
-    // CATEGORY: SETTINGS
-    // OS: P
-    FUELGAUGE_SMART_BATTERY = 1281;
-
-    // OPEN: Settings > Battery > Smart Battery > Restricted apps
-    // CATEGORY: SETTINGS
-    // OS: P
-    FUELGAUGE_RESTRICTED_APP_DETAILS = 1285;
-
-    // OPEN: Settings > Sound & notification > Do Not Disturb > Turn on now
-    // CATEGORY: SETTINGS
-    // OS: P
-    NOTIFICATION_ZEN_MODE_ENABLE_DIALOG = 1286;
-
-    // OPEN: Settings->Connected Devices->USB->(click on details link)
-    // CATEGORY: SETTINGS
-    // OS: P
-    USB_DEVICE_DETAILS = 1291;
-
-    // OPEN: Settings > Accessibility > Vibration
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACCESSIBILITY_VIBRATION = 1292;
-
-    // OPEN: Settings > Accessibility > Vibration > Notification vibration
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACCESSIBILITY_VIBRATION_NOTIFICATION = 1293;
-
-    // OPEN: Settings > Accessibility > Vibration > Touch vibration
-    // CATEGORY: SETTINGS
-    // OS: P
-    ACCESSIBILITY_VIBRATION_TOUCH = 1294;
-
-    // OPEN: Settings->Developer Options->Default USB
-    // CATEGORY: SETTINGS
-    // OS: P
-    USB_DEFAULT = 1312;
-
-    // OPEN: Settings > Battery > Battery tip > Battery tip Dialog
-    // CATEGORY: SETTINGS
-    // OS: P
-    FUELGAUGE_BATTERY_TIP_DIALOG = 1323;
-
-    // OPEN: DND Settings > What to block
-    // OS: P
-    ZEN_WHAT_TO_BLOCK = 1339;
-
-    // OPEN: Settings > Sounds > Do Not Disturb > Duration
-    // CATEGORY: SETTINGS
-    // OS: P
-    NOTIFICATION_ZEN_MODE_DURATION_DIALOG = 1341;
-
-    // OPEN: Settings > Date & time > Select time zone -> Region
-    // CATEGORY: SETTINGS
-    // OS: P
-    SETTINGS_ZONE_PICKER_REGION = 1355;
-
-    // OPEN: Settings > Date & time > Select time zone -> Time Zone
-    // CATEGORY: SETTINGS
-    // OS: P
-    SETTINGS_ZONE_PICKER_TIME_ZONE = 1356;
-    // OPEN: Settings > Date & time > Select time zone -> Select UTC Offset
-    // CATEGORY: SETTINGS
-    // OS: P
-    SETTINGS_ZONE_PICKER_FIXED_OFFSET = 1357;
-
-    // OPEN: Settings > Gestures > Prevent Ringing
-    // OS: P
-    SETTINGS_PREVENT_RINGING = 1360;
-
-    // Settings > Condition > Device muted
-    // CATEGORY: SETTINGS
-    // OS: P
-    SETTINGS_CONDITION_DEVICE_MUTED = 1368;
-
-    // Settings > Condition > Device vibrate
-    // CATEGORY: SETTINGS
-    // OS: P
-    SETTINGS_CONDITION_DEVICE_VIBRATE = 1369;
-
-    // OPEN: Settings > Connected devices > previously connected devices
-    // CATEGORY: SETTINGS
-    // OS: P
-    PREVIOUSLY_CONNECTED_DEVICES = 1370;
-
-    // OPEN: Settings > Network & Internet > Wi-Fi > Wi-Fi Preferences > Turn on Wi-Fi automatically
-    //       note: Wifi Scanning must be off for this dialog to show
-    // CATEGORY: SETTINGS
-    // OS: P
-    WIFI_SCANNING_NEEDED_DIALOG = 1373;
-
-    // OPEN: Settings > System > Gestures > System navigation
-    // CATEGORY: SETTINGS
-    // OS: P
-    SETTINGS_GESTURE_SWIPE_UP = 1374;
-
-    // OPEN: Settings > Storage > Dialog to format a storage volume
-    // CATEGORY: SETTINGS
-    // OS: P
-    DIALOG_VOLUME_FORMAT = 1375;
-
-    // OPEN: DND onboarding activity
-    // CATEGORY: SETTINGS
-    // OS: P
-    SETTINGS_ZEN_ONBOARDING = 1380;
-
-    // OPEN: Settings > Display > Auto brightness
-    // CATEGORY: SETTINGS
-    // OS: P
-    SETTINGS_AUTO_BRIGHTNESS = 1381;
-
-     // OPEN: Settings > Connected Devices > Bluetooth
-    // CATEGORY: SETTINGS
-    // OS: P
-    BLUETOOTH_FRAGMENT = 1390;
-
-    // Screen: DND Settings > Notifications
-    // OS: P
-    SETTINGS_ZEN_NOTIFICATIONS = 1400;
-
-    // An event category for slices.
-    // OPEN: Slice became visible.
-    // CLOSE: Slice became invisible.
-    // ACTION: Slice was tapped.
-    SLICE = 1401;
-
-    // OPEN: Settings -> Developer Options -> Disable Bluetooth A2DP hardware
-    // offload
-    // CATEGORY: SETTINGS
-    // OS: P
-    DIALOG_BLUETOOTH_DISABLE_A2DP_HW_OFFLOAD = 1441;
-
-    // OPEN: Settings homepage
-    SETTINGS_HOMEPAGE = 1502;
-
-    // OPEN: Settings > Create shortcut(widget)
-    // CATEGORY: SETTINGS
-    // OS: Q
-    SETTINGS_CREATE_SHORTCUT = 1503;
-
-    // OPEN: Face Enroll introduction
-    // CATEGORY: SETTINGS
-    // OS: Q
-    FACE_ENROLL_INTRO = 1506;
-
-    // OPEN: Face Enroll introduction
-    // CATEGORY: SETTINGS
-    // OS: Q
-    FACE_ENROLL_ENROLLING = 1507;
-
-    // OPEN: Face Enroll introduction
-    // CATEGORY: SETTINGS
-    // OS: Q
-    FACE_ENROLL_FINISHED = 1508;
-
-    // OPEN: Face Enroll sidecar
-    // CATEGORY: SETTINGS
-    // OS: Q
-    FACE_ENROLL_SIDECAR = 1509;
-
-    // OPEN: Settings > Add face > Error dialog
-    // OS: Q
-    DIALOG_FACE_ERROR = 1510;
-
-    // OPEN: Settings > Security > Face
-    // CATEGORY: SETTINGS
-    // OS: Q
-    FACE = 1511;
-
-   // OPEN: Settings > Acessibility > HearingAid pairing instructions dialog
-    // CATEGORY: SETTINGS
-    // OS: Q
-    DIALOG_ACCESSIBILITY_HEARINGAID = 1512;
-
-    // OPEN: Settings > Add face
-    // OS: Q
-    FACE_ENROLL_PREVIEW = 1554;
-
-    // OPEN: Settings > Network & Internet > Wi-Fi > Add network
-    // CATEGORY: SETTINGS
-    // OS: Q
-    SETTINGS_WIFI_ADD_NETWORK = 1556;
-
-    // OPEN: Settings > System > Input & Gesture > Reach up gesture
-    // OS: Q
-    SETTINGS_GESTURE_WAKE_LOCK_SCREEN = 1557;
-
-    // OPEN: Settings > System > Input & Gesture > Wake screen
-    SETTINGS_GESTURE_WAKE_SCREEN = 1570;
-
-    // OPEN: Settings > Network & internet > Mobile network
-    MOBILE_NETWORK = 1571;
-
-    // OPEN: Settings > Network & internet > Mobile network > Choose network
-    MOBILE_NETWORK_SELECT = 1581;
-
-    // OPEN: Settings > Network & internet > Mobile network > Mobile Data > Dialog
-    MOBILE_DATA_DIALOG = 1582;
-
-    // OPEN: Settings > Network & internet > Mobile network > Data roaming > Dialog
-    MOBILE_ROAMING_DIALOG = 1583;
-
-    // Settings > Display > Lock screen display > On lock screen
-    LOCK_SCREEN_NOTIFICATION_CONTENT = 1584;
-
-    // ConfirmDeviceCredentials > BiometricPrompt
-    BIOMETRIC_FRAGMENT = 1585;
-
-    // OPEN: Biometric Enrollment (android.settings.BIOMETRIC_ENROLL action intent)
-    BIOMETRIC_ENROLL_ACTIVITY = 1586;
-
-    // OPEN: Settings > Privacy
-    TOP_LEVEL_PRIVACY = 1587;
-
-    // OPEN: Settings > Sound & notification > Do Not Disturb > See all exceptions >
-    // Allow apps to override
-    // CATEGORY: SETTINGS
-    // OS: Q
-    NOTIFICATION_ZEN_MODE_OVERRIDING_APPS = 1588;
-
-
-    // OPEN: Settings > Sound & notification > Do Not Disturb > See all exceptions >
-    // Allow apps to override > Choose app
-    // CATEGORY: SETTINGS
-    // OS: Q
-    NOTIFICATION_ZEN_MODE_OVERRIDING_APP = 1589;
-
-    // OPEN: Settings > Developer options > Disable > Info dialog
-    DIALOG_DISABLE_DEVELOPMENT_OPTIONS = 1591;
-
-    // OPEN: WifiDppConfiguratorActivity (android.settings.WIFI_DPP_CONFIGURATOR_XXX action intents)
-    SETTINGS_WIFI_DPP_CONFIGURATOR = 1595;
-
-    // OPEN: WifiDppEnrolleeActivity (android.settings.WIFI_DPP_ENROLLEE_XXX action intents)
-    SETTINGS_WIFI_DPP_ENROLLEE = 1596;
-
-    // OPEN: Settings > Apps & Notifications -> Special app access -> Financial Apps Sms Access
-    SETTINGS_FINANCIAL_APPS_SMS_ACCESS = 1597;
-
-
-
-    // OPEN: Settings > Sound > Do Not Disturb > Schedules > (Click on system rule)
-    // > Do Not Disturb behavior
-    // CATEGORY: SETTINGS
-    // OS: Q
-    ZEN_CUSTOM_RULE_SETTINGS = 1604;
-
-    // OPEN: Settings > Sound > Do Not Disturb > Schedules > (Click on system rule)
-    // > Do Not Disturb behavior > Custom
-    // CATEGORY: SETTINGS
-    // OS: Q
-    ZEN_CUSTOM_RULE_SOUND_SETTINGS = 1605;
-
-    // OPEN: Settings > Sound > Do Not Disturb > Schedules > (Click on system rule)
-    // > Do Not Disturb behavior > Use default Do Not Disturb behavior
-    // CATEGORY: SETTINGS
-    // OS: Q
-    ZEN_CUSTOM_RULE_DEFAULT_SETTINGS = 1606;
-
-    // OPEN: Settings > Sound > Do Not Disturb > Schedules > (Click on system rule)
-    // > Do Not Disturb behavior > Use default Do Not Disturb behavior
-    // > Notification restriction
-    // CATEGORY: SETTINGS
-    // OS: Q
-    ZEN_CUSTOM_RULE_NOTIFICATION_RESTRICTIONS = 1608;
-
-    // OPEN: Settings > Sound > Do Not Disturb > Schedules > (Click on system rule)
-    // > Do Not Disturb behavior > Use default Do Not Disturb behavior
-    // > Notification restriction > Custom
-    // CATEGORY: SETTINGS
-    // OS: Q
-    ZEN_CUSTOM_RULE_VIS_EFFECTS = 1609;
-
-    // OPEN: Settings > Sound > Do Not Disturb > Schedules > (Click on system rule)
-    // > Do Not Disturb behavior > Use default Do Not Disturb behavior
-    // > Notification restriction > Custom > Allow messages
-    // CATEGORY: SETTINGS
-    // OS: Q
-    ZEN_CUSTOM_RULE_MESSAGES = 1610;
-
-    // OPEN: Settings > Sound > Do Not Disturb > Schedules > (Click on system rule)
-    // > Do Not Disturb behavior > Use default Do Not Disturb behavior
-    // > Notification restriction > Custom > Allow calls
-    // CATEGORY: SETTINGS
-    // OS: Q
-    ZEN_CUSTOM_RULE_CALLS = 1611;
-
-    // OPEN: Settings > Sound > Do Not Disturb > Click footer link if custom settings applied
-    // CATEGORY: SETTINGS
-    // OS: Q
-    ZEN_CUSTOM_SETTINGS_DIALOG = 1612;
-
-    // OPEN: Settings > Developer Options > Game Driver Preferences
-    // CATEGORY: SETTINGS
-    // OS: Q
-    SETTINGS_GAME_DRIVER_DASHBOARD = 1613;
-
-    // OPEN: Settings > Accessibility > Vibration > Ring vibration
-    // CATEGORY: SETTINGS
-    // OS: Q
-    ACCESSIBILITY_VIBRATION_RING = 1620;
-
-    // OPEN: Settings > System > Input & Gesture > Skip songs
-    SETTINGS_GESTURE_SKIP = 1624;
-
-    // OPEN: Settings > System > Input & Gesture > Silence alerts
-    SETTINGS_GESTURE_SILENCE = 1625;
-
-    // OPEN: Settings > System > Input & Gesture > Tap to check
-    SETTINGS_GESTURE_TAP_SCREEN = 1626;
-
-    // OPEN: Settings > Network & internet > Click Mobile network to land on a page with a list of
-    // SIM/eSIM subscriptions.
-    MOBILE_NETWORK_LIST = 1627;
-
-    // OPEN: Settings > Display > Adaptive sleep
-    // OS: Q
-    SETTINGS_ADAPTIVE_SLEEP = 1628;
-
-    // OPEN: Settings > System > Aware
-    SETTINGS_AWARE = 1632;
-
-    // OPEN: Settings > System > Aware > Disable > Dialog
-    DIALOG_AWARE_DISABLE = 1633;
-
-    // OPEN: Settings > Settings > Network & internet > Click Mobile network to land on page with
-    // details for a SIM/eSIM mobile network > Click edit icon to bring up a rename dialog.
-    // OS: Q
-    MOBILE_NETWORK_RENAME_DIALOG = 1642;
-
-    // OPEN: Set new password (android.app.action.SET_NEW_PASSWORD action intent)
-    // CATEGORY: SETTINGS
-    // OS: Q
-    SET_NEW_PASSWORD_ACTIVITY = 1644;
-
-    // Panel for Internet Connectivity
-    PANEL_INTERNET_CONNECTIVITY = 1654;
-
-    // Panel for Volume
-    PANEL_VOLUME = 1655;
-
-    // Panel for NFC
-    PANEL_NFC = 1656;
-
-    // Panel for Media Output
-    PANEL_MEDIA_OUTPUT = 1657;
-
-    // Mapping: go/at-mapping
-    PAGE_ATSSI = 1667;
-
-    PAGE_ATSII = 1668;
-
-    PAGE_ATUS = 1669;
-
-    PAGE_ATSSP = 1670;
-
-    PAGE_ATSAP = 1671;
-
-    PAGE_ATSCP = 1672;
-
-    PAGE_ATHNP = 1673;
-
-    // OPEN: Accessibility detail settings (android.settings.ACCESSIBILITY_DETAILS_SETTINGS intent)
-    ACCESSIBILITY_DETAILS_SETTINGS = 1682;
-
-    // Open: Settings will show the conditional when Grayscale mode is on
-    SETTINGS_CONDITION_GRAYSCALE_MODE = 1683;
-
-    // Panel for Wifi
-    PANEL_WIFI = 1687;
-
-    // Open: Settings > Special App Access > Do not disturb control for app
-    ZEN_ACCESS_DETAIL = 1692;
-
-    // OPEN: Settings > Face > Remove face
-    // OS: Q
-    DIALOG_FACE_REMOVE = 1693;
-
-    // Settings > Display > Theme
-    DARK_UI_SETTINGS = 1698;
-
-    // Settings > global bubble settings
-    BUBBLE_SETTINGS = 1699;
-
-    // Settings > app > bubble settings
-    APP_BUBBLE_SETTINGS = 1700;
-
-    // OPEN: Settings > System > Aware > Info dialog
-    DIALOG_AWARE_STATUS = 1701;
-
-    // Open: Settings > app > bubble settings > confirmation dialog
-    DIALOG_APP_BUBBLE_SETTINGS = 1702;
-
-    // OPEN: Settings > Pick SIM dialog
-    DIALOG_SIM_LIST = 1707;
-
-    // OPEN: Settings > Pick SIM (that supports calling) dialog
-    DIALOG_CALL_SIM_LIST = 1708;
-
-    // OPEN: Settings > Pick preferred SIM dialog
-    DIALOG_PREFERRED_SIM_PICKER = 1709;
-
-    // OPEN: Settings > Network & internet > Mobile network > Delete sim
-    DIALOG_DELETE_SIM_CONFIRMATION = 1713;
-
-    // OPEN: Settings >  Network & internet > Mobile network > Delete sim > (answer yes to
-    //       confirmation)
-    DIALOG_DELETE_SIM_PROGRESS = 1714;
-
-    // Settings > Apps and notifications > Notifications > Gentle notifications
-    GENTLE_NOTIFICATIONS_SCREEN = 1715;
-
-    // OPEN: Settings > System > Gestures > Global Actions Panel
-    // CATEGORY: SETTINGS
-    // OS: Q
-    GLOBAL_ACTIONS_PANEL_SETTINGS = 1728;
-
-    // OPEN: Settings > Display > Dark Theme
-    // CATEGORY: SETTINGS
-    // OS: Q
-    // Note: Only shows up on first time toggle
-    DIALOG_DARK_UI_INFO = 1740;
-
-    // OPEN: Settings > About phone > Legal information > Google Play system update licenses
-    // CATEGORY: SETTINGS
-    // OS: Q
-    MODULE_LICENSES_DASHBOARD = 1746;
-
-    // OPEN: Settings > System > Gestures > System navigation > Info icon
-    // CATEGORY: SETTINGS
-    // OS: Q
-    // Note: Info icon is visible only when gesture navigation is not available and disabled
-    SETTINGS_GESTURE_NAV_NOT_AVAILABLE_DLG = 1747;
-
-    // OPEN: Settings > System > Gestures > System navigation > Gear icon
-    // CATEGORY: SETTINGS
-    // OS: Q
-    // Note: Gear icon is shown next to gesture navigation preference and opens sensitivity dialog
-    SETTINGS_GESTURE_NAV_BACK_SENSITIVITY_DLG = 1748;
-
-    // OPEN: Settings > System > Aware > Aware Display
-    // CATEGORY: SETTINGS
-    // OS: Q
-    SETTINGS_AWARE_DISPLAY = 1750;
-
-    // OPEN: Settings > System > Input & Gesture > tap gesture
-    // CATEGORY: SETTINGS
-    // OS: Q
-    SETTINGS_GESTURE_TAP = 1751;
-    // ---- End Q Constants, all Q constants go above this line ----
-    // OPEN: Settings > Network & Internet > Wi-Fi > Click new network
-    // CATEGORY: SETTINGS
-    // OS: R
-    SETTINGS_WIFI_CONFIGURE_NETWORK = 1800;
-
-    // OPEN: Settings > Accessibility > Magnification
-    // CATEGORY: SETTINGS
-    // OS: R
-    // Note: Shows up only when Magnify with shortcut is enabled
-    // and under accessibility button mode.
-    DIALOG_TOGGLE_SCREEN_MAGNIFICATION_ACCESSIBILITY_BUTTON = 1801;
-
-    // OPEN: Settings > Accessibility > Magnification
-    // CATEGORY: SETTINGS
-    // OS: R
-    // Note: Shows up only when Magnify with shortcut is enabled.
-    // and under gesture navigation mode.
-    DIALOG_TOGGLE_SCREEN_MAGNIFICATION_GESTURE_NAVIGATION = 1802;
-
-    // OPEN: Settings > Security & screen lock -> Encryption & credentials > Install a certificate
-    // CATEGORY: SETTINGS
-    // OS: R
-    INSTALL_CERTIFICATE_FROM_STORAGE = 1803;
-
-    // OPEN: Settings > Apps and notifications > Special app access > notification access >
-    // an app
-    // CATEGORY: SETTINGS
-    // OS: R
-    NOTIFICATION_ACCESS_DETAIL = 1804;
-
-    // OPEN: Settings > Developer Options > Platform Compat
-    // CATEGORY: SETTINGS
-    // OS: R
-    SETTINGS_PLATFORM_COMPAT_DASHBOARD = 1805;
-
-    // OPEN: Settings > Location -> Work profile tab
-    // CATEGORY: SETTINGS
-    // OS: R
-    LOCATION_WORK = 1806;
-
-    // OPEN: Settings > Account -> Work profile tab
-    // CATEGORY: SETTINGS
-    // OS: R
-    ACCOUNT_WORK = 1807;
-
-    // OPEN: Settings > Developer Options > Bug report handler
-    // CATEGORY: SETTINGS
-    // OS: R
-    SETTINGS_BUGREPORT_HANDLER = 1808;
-
-    // Panel for adding Wi-Fi networks
-    // CATEGORY: SETTINGS
-    // OS: R
-    PANEL_ADD_WIFI_NETWORKS = 1809;
-
-    // OPEN: Settings > Accessibility > Enable the feature or shortcut > Show tutorial dialog
-    // CATEGORY: SETTINGS
-    // OS: R
-    DIALOG_ACCESSIBILITY_TUTORIAL = 1810;
-
-    // OPEN: Settings > Accessibility > Edit shortcut dialog
-    // CATEGORY: SETTINGS
-    // OS: R
-    DIALOG_ACCESSIBILITY_SERVICE_EDIT_SHORTCUT = 1812;
-
-    // OPEN: Settings > Accessibility > Magnification > Edit shortcut dialog
-    // CATEGORY: SETTINGS
-    // OS: R
-    DIALOG_MAGNIFICATION_EDIT_SHORTCUT = 1813;
-
-    // OPEN: Settings > Accessibility > Color correction > Edit shortcut dialog
-    // CATEGORY: SETTINGS
-    // OS: R
-    DIALOG_DALTONIZER_EDIT_SHORTCUT = 1814;
-
-    // OPEN: Settings > Accessibility > Magnification > Settings
-    // CATEGORY: SETTINGS
-    // OS: R
-    ACCESSIBILITY_MAGNIFICATION_SETTINGS = 1815;
-
-    // OPEN: Settings > Accessibility > Magnification > Settings > Magnification area dialog
-    // CATEGORY: SETTINGS
-    // OS: R
-    DIALOG_MAGNIFICATION_CAPABILITY = 1816;
-
-    // OPEN: Settings > Accessibility > Color inversion
-    // CATEGORY: SETTINGS
-    // OS: R
-    ACCESSIBILITY_COLOR_INVERSION_SETTINGS = 1817;
-
-    // OPEN: Settings > Accessibility > Color inversion > Edit shortcut dialog
-    // CATEGORY: SETTINGS
-    // OS: R
-    DIALOG_COLOR_INVERSION_EDIT_SHORTCUT = 1818;
-
-    // OPEN: Settings > Accessibility > Captions preference > Captions appearance
-    // CATEGORY: SETTINGS
-    // OS: R
-    ACCESSIBILITY_CAPTION_APPEARANCE = 1819;
-
-    // OPEN: Settings > Accessibility > Captions preference > More options
-    // CATEGORY: SETTINGS
-    // OS: R
-    ACCESSIBILITY_CAPTION_MORE_OPTIONS = 1820;
-
-    // OPEN: Settings > Battery > Battery share
-    // CATEGORY: SETTINGS
-    // OS: R
-    FUELGAUGE_BATTERY_SHARE = 1821;
-
-    // OPEN: Settings -> Apps & Notifications -> Special App Access
-    // CATEGORY: SETTINGS
-    // OS: R
-    MANAGE_EXTERNAL_STORAGE = 1822;
-
-    // Open: Settings > DND > People
-    // OS: R
-    DND_PEOPLE = 1823;
-
-    // OPEN: Settings > Apps and notifications > App info > one of any app > Open by default
-    //       > Open supported links
-    // CATEGORY: SETTINGS
-    // OS: R
-    OPEN_SUPPORTED_LINKS = 1824;
-
-    // OPEN: Settings > Display > Dark theme > Set start time dialog
-    DIALOG_DARK_THEME_SET_START_TIME = 1825;
-
-    // OPEN: Settings > Display > Dark theme > Set end time dialog
-    DIALOG_DARK_THEME_SET_END_TIME = 1826;
-
-    // OPEN: Settings -> Sound -> Vibrate for calls
-    // CATEGORY: SETTINGS
-    // OS: R
-    VIBRATE_FOR_CALLS = 1827;
-
-    // OPEN: Settings > Connected devices > Connection preferences > NFC
-    // CATEGORY: SETTINGS
-    // OS: R
-    CONNECTION_DEVICE_ADVANCED_NFC = 1828;
-
-    // OPEN: Settings -> Apps & Notifications -> Special App Access
-    INTERACT_ACROSS_PROFILES = 1829;
-
-    // OPEN: Settings > Notifications > (app or conversations) > conversation
-    NOTIFICATION_CONVERSATION_SETTINGS = 1830;
-
-    // OPEN: Settings > Developer Options > Wireless debugging
-    // CATEGORY: SETTINGS
-    // OS: R
-    SETTINGS_ADB_WIRELESS = 1831;
-
-    // OPEN: Settings > Developer Options > Wireless debugging
-    //   > Pair device with pairing code > Pairing code dialog
-    // CATEGORY: SETTINGS
-    // OS: R
-    ADB_WIRELESS_DEVICE_PAIRING_DIALOG = 1832;
-
-    // OPEN: Settings > Developer Options > Wireless debugging
-    //   > Pair device with QR code > Scan QR code > Pairing device dialog
-    // CATEGORY: SETTINGS
-    // OS: R
-    ADB_WIRELESS_DEVICE_QR_PAIRING_DIALOG = 1833;
-
-    // OPEN: Settings > apps & notifications > notifications > conversations
-    // CATEGORY: SETTINGS
-    // OS: R
-    NOTIFICATION_CONVERSATION_LIST_SETTINGS = 1834;
-
-    // Panel for Media Output Group operation
-    // CATEGORY: SETTINGS
-    // OS: R
-    PANEL_MEDIA_OUTPUT_GROUP = 1835;
-
-    // OPEN: Settings > Developer Options > Wireless debugging
-    //   > Click on paired device
-    // CATEGORY: SETTINGS
-    // OS: R
-    ADB_WIRELESS_DEVICE_DETAILS = 1836;
-
-    // Open: Settings > Sound > Do Not Disturb > People > Conversations
-    // OS: R
-    DND_CONVERSATIONS = 1837;
-
-    // Open: Settings > Sound > Do Not Disturb > People > Calls
-    // OS: R
-    DND_CALLS = 1838;
-
-    // Open: Settings > Sound > Do Not Disturb > People > Messages
-    // OS: R
-    DND_MESSAGES = 1839;
-
-    // Open: Settings > Sound > Do Not Disturb > Apps > <Choose App>
-    // OS: R
-    DND_APPS_BYPASSING = 1840;
-
-    // OPEN: Settings > Battery > Advanced battery option
-    // CATEGORY: SETTINGS
-    // OS: R
-    FUELGAUGE_ADVANCED_BATTERY_OPTION = 1842;
-
-    // OPEN: Settings > System > Gestures > Power menu
-    // CATEGORY: SETTINGS
-    // OS: R
-    POWER_MENU_SETTINGS = 1843;
-
-    // OPEN: Settings > System > Gestures > Power menu > Device controls
-    // CATEGORY: SETTINGS
-    // OS: R
-    DEVICE_CONTROLS_SETTINGS = 1844;
-
-    // OPEN: Settings > Sound > Media
-    // CATEGORY: SETTINGS
-    // OS: R
-    MEDIA_CONTROLS_SETTINGS = 1845;
-}
diff --git a/core/proto/android/app/tvsettings_enums.proto b/core/proto/android/app/tvsettings_enums.proto
deleted file mode 100644
index 31c5dd6..0000000
--- a/core/proto/android/app/tvsettings_enums.proto
+++ /dev/null
@@ -1,941 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-
-package android.app.tvsettings;
-option java_multiple_files = true;
-option java_outer_classname = "TvSettingsEnums";
-
-/** The performed action types */
-enum Action {
-
-    /**
-     * Denotes an unknown action. It is a filler that should generally be
-     * avoided.
-     */
-    ACTION_UNKNOWN = 0;
-
-    /**
-     * Denotes that a TvSettings page is being focused. (Previewing a page in
-     * two panel settings should NOT be considered as focusing on the page.)
-     */
-    PAGE_FOCUSED = 1;
-
-    /**
-     * Denotes that an entry (typically a leaf node of settings tree) is
-     * selected by a user.
-     */
-    ENTRY_SELECTED = 2;
-
-    /** Denotes that a toggle is clicked by a user. */
-    TOGGLE_INTERACTED = 3;
-
-    /**
-     * Denotes that a TvSettings page is being focused in the forward direction
-     * into the settings tree.
-     */
-    PAGE_FOCUSED_FORWARD = 4;
-
-    /**
-     * Denotes that a TvSettings page is being focused in the backward direction
-     * up the settings tree.
-     */
-    PAGE_FOCUSED_BACKWARD = 5;
-
-    /** Denotes that a toggle is turned on by a user. */
-    TOGGLED_ON = 6;
-
-    /** Denotes that a toggle is turned off by a user. */
-    TOGGLED_OFF = 7;
-
-}
-
-/**
- * Ids for TvSettings focusable pages or actionable entries
- *
- * For details of the scheme, please refer to the "Definition of item_id" and
- * "Evolve of item_id" sections in go/atv-settings-ww-logging-design.
- */
-enum ItemId {
-
-    option allow_alias = true;
-
-    // Filler that should be avoided
-    UNKNOWN = 0x00000000;
-
-    // TvSettings
-    TV_SETTINGS_ROOT = 0x00000001;
-
-    // TvSettings unknown/default classic page
-    PAGE_CLASSIC_DEFAULT = 0x00000002;
-
-    // TvSettings unknown/default slice page
-    PAGE_SLICE_DEFAULT = 0x00000003;
-
-    // TvSettings unknown/default entry
-    ENTRY_DEFAULT = 0x00000004;
-
-    // TvSettings > Suggested settings entry
-    SUGGESTED_SETTINGS = 0x00000010;
-
-    // TvSettings > Quick Settings
-    QUICK_SETTINGS = 0x00000011;
-
-    // VERSION 1: Starting with Q
-    // These are ordered in depth-first search manner.
-
-    // TvSettings > Network & Internet
-    NETWORK = 0x11000000;
-
-    // TvSettings > Network & Internet > Wi-Fi (toggle)
-    NETWORK_WIFI_ON_OFF = 0x11100000;
-
-    // TvSettings > Network & Internet >
-    // [A connected network entry in available networks list]
-    NETWORK_AP_INFO = 0x11200000;
-
-    // TvSettings > Network & Internet >
-    // [A connected network entry in available networks list] > Proxy settings
-    NETWORK_AP_INFO_PROXY_SETTINGS = 0x11210000;
-
-    // TvSettings > Network & Internet >
-    // [A connected network entry in available networks list] > IP settings
-    NETWORK_AP_INFO_IP_SETTINGS = 0x11220000;
-
-    // TvSettings > Network & Internet >
-    // [A connected network entry in available networks list] > Forget network
-    NETWORK_AP_INFO_FORGET_NETWORK = 0x11230000;
-
-    // TvSettings > Network & Internet >
-    // [A not connected network entry in available networks list]
-    NETWORK_NOT_CONNECTED_AP = 0x11300000;
-
-    // TvSettings > Network & Internet > See all
-    NETWORK_SEE_ALL = 0x11400000;
-
-    // TvSettings > Network & Internet > See fewer
-    NETWORK_SEE_FEWER = 0x11500000;
-
-    // TvSettings > Network & Internet > Add new network
-    NETWORK_ADD_NEW_NETWORK = 0x11600000;
-
-    // TvSettings > Network & Internet > Scanning always available (toggle)
-    NETWORK_ALWAYS_SCANNING_NETWORKS = 0x11700000;
-
-    // TvSettings > Network & Internet > Proxy settings (in Ethernet category)
-    NETWORK_ETHERNET_PROXY_SETTINGS = 0x11800000;
-
-    // TvSettings > Network & Internet > IP settings (in Ethernet category)
-    NETWORK_ETHERNET_IP_SETTINGS = 0x11900000;
-
-    // TvSettings > Account & Sign In (Slice)
-    ACCOUNT_SLICE = 0x12000000;
-
-    // TvSettings > Account & Sign In (Slice) > [A regular account]
-    ACCOUNT_SLICE_REG_ACCOUNT = 0x12100000;
-
-    // TvSettings > Account & Sign In (Slice) > [A regular account] >
-    // Google Assistant
-    ACCOUNT_SLICE_REG_ACCOUNT_ASSISTANT = 0x12130000;
-
-    // TvSettings > Account & Sign In (Slice) > [A regular account] >
-    // Google Assistant > SafeSearch filter (toggle)
-    ACCOUNT_SLICE_REG_ACCOUNT_ASSISTANT_SAFE_SEARCH = 0x12131000;
-
-    // TvSettings > Account & Sign In (Slice) > [A regular account] >
-    // Google Assistant > Block offensive words (toggle)
-    ACCOUNT_SLICE_REG_ACCOUNT_ASSISTANT_BLOCK_OFFENSIVE = 0x12132000;
-
-    // TvSettings > Account & Sign In (Slice) > [A regular account] >
-    // Google Assistant > Searchable apps
-    ACCOUNT_SLICE_REG_ACCOUNT_ASSISTANT_SEARCHABLE_APPS = 0x12133000;
-
-    // TvSettings > Account & Sign In (Slice) > [A regular account] >
-    // Google Assistant > Personal results (toggle)
-    ACCOUNT_SLICE_REG_ACCOUNT_ASSISTANT_PERSONAL_RESULTS = 0x12134000;
-
-    // Reserving [0x12140000, 0x12190000] for possible future settings
-
-    // TvSettings > Account & Sign In (Slice) > [A regular account] > Remove
-    ACCOUNT_SLICE_REG_ACCOUNT_REMOVE = 0x121A0000;
-
-    // Reserving [0x12200000, 0x12900000] for possible future settings
-
-    // TvSettings > Account & Sign In (Slice) > Add account...
-    ACCOUNT_SLICE_ADD_ACCOUNT = 0x12A00000;
-
-    // TvSettings > Account & Sign In (Classic)
-    ACCOUNT_CLASSIC = 0x13000000;
-
-    // TvSettings > Account & Sign In (Classic) > [A regular account]
-    ACCOUNT_CLASSIC_REG_ACCOUNT = 0x13100000;
-
-    // TvSettings > Account & Sign In (Classic) > [A regular account] > Sync now
-    ACCOUNT_CLASSIC_REG_ACCOUNT_SYNC_NOW = 0x13110000;
-
-    // TvSettings > Account & Sign In (Classic) > [A regular account] >
-    // Remove account
-    ACCOUNT_CLASSIC_REG_ACCOUNT_REMOVE_ACCOUNT = 0x13120000;
-
-    // TvSettings > Account & Sign In (Classic) > [A regular account] >
-    // [Choose synced apps] Calendar (toggle)
-    ACCOUNT_CLASSIC_REG_ACCOUNT_SYNC_CALENDAR = 0x13130000;
-
-    // TvSettings > Account & Sign In (Classic) > [A regular account] >
-    // [Choose synced apps] Contacts (toggle)
-    ACCOUNT_CLASSIC_REG_ACCOUNT_SYNC_CONTACTS = 0x13140000;
-
-    // TvSettings > Account & Sign In (Classic) > [A regular account] >
-    // [Choose synced apps] Google Play Movies & TV (toggle)
-    ACCOUNT_CLASSIC_REG_ACCOUNT_SYNC_GPMT = 0x13150000;
-
-    // TvSettings > Account & Sign In (Classic) > [A regular account] >
-    // [Choose synced apps] Google Play Music (toggle)
-    ACCOUNT_CLASSIC_REG_ACCOUNT_SYNC_GPM = 0x13160000;
-
-    // TvSettings > Account & Sign In (Classic) > [A regular account] >
-    // [Choose synced apps] People details (toggle)
-    ACCOUNT_CLASSIC_REG_ACCOUNT_SYNC_PEOPLE = 0x13170000;
-
-    // Reserving [0x13200000, 0x13900000] for possible future settings
-
-    // TvSettings > Account & Sign In (Classic) > Add account
-    ACCOUNT_CLASSIC_ADD_ACCOUNT = 0x13A00000;
-
-    // TvSettings > Display & Sound
-    DISPLAY_SOUND = 0x15000000;
-
-    // TvSettings > Display & Sound > Advanced display settings
-    DISPLAY_SOUND_ADVANCED_DISPLAY = 0x15100000;
-
-    // TvSettings > Display & Sound > Advanced display settings >
-    // Allow game mode (toggle)
-    DISPLAY_SOUND_ADVANCED_DISPLAY_GAME_MODE = 0x15110000;
-
-    // TvSettings > Display & Sound > System sounds (toggle)
-    DISPLAY_SOUND_SYSTEM_SOUNDS = 0x15200000;
-
-    // TvSettings > Display & Sound > Advanced sound settings
-    DISPLAY_SOUND_ADVANCED_SOUNDS = 0x15300000;
-
-    // TvSettings > Display & Sound > Advanced sound settings > Select formats
-    DISPLAY_SOUND_ADVANCED_SOUNDS_SELECT_FORMATS = 0x15310000;
-
-    // TvSettings > Display & Sound > Advanced sound settings > Select formats >
-    // Auto...
-    DISPLAY_SOUND_ADVANCED_SOUNDS_SELECT_FORMATS_AUTO = 0x15311000;
-
-    // TvSettings > Display & Sound > Advanced sound settings > Select formats >
-    // None...
-    DISPLAY_SOUND_ADVANCED_SOUNDS_SELECT_FORMATS_NONE = 0x15312000;
-
-    // TvSettings > Display & Sound > Advanced sound settings > Select formats >
-    // Manual...
-    DISPLAY_SOUND_ADVANCED_SOUNDS_SELECT_FORMATS_MANUAL = 0x15313000;
-
-    // TvSettings > Display & Sound > Advanced sound settings >
-    // Dolby AC-4 (toggle)
-    DISPLAY_SOUND_ADVANCED_SOUNDS_DAC4 = 0x15320000;
-
-    // TvSettings > Display & Sound > Advanced sound settings >
-    // Dolby Atmos in Dolby Digital Plus (toggle)
-    DISPLAY_SOUND_ADVANCED_SOUNDS_DADDP = 0x15330000;
-
-    // TvSettings > Display & Sound > Advanced sound settings >
-    // Dolby Digital (toggle)
-    DISPLAY_SOUND_ADVANCED_SOUNDS_DD = 0x15340000;
-
-    // TvSettings > Display & Sound > Advanced sound settings >
-    // Dolby Digital Plus (toggle)
-    DISPLAY_SOUND_ADVANCED_SOUNDS_DDP = 0x15350000;
-
-    // TvSettings > Display & Sound > Advanced sound settings > DTS (toggle)
-    DISPLAY_SOUND_ADVANCED_SOUNDS_DTS = 0x15360000;
-
-    // TvSettings > Display & Sound > Advanced sound settings > DTS-HD (toggle)
-    DISPLAY_SOUND_ADVANCED_SOUNDS_DTSHD = 0x15370000;
-
-    // TvSettings > Display & Sound > Advanced sound settings > AAC (toggle)
-    DISPLAY_SOUND_ADVANCED_SOUNDS_AAC = 0x15380000;
-
-    // TvSettings > Display & Sound > Advanced sound settings >
-    // Dolby TrueHD (toggle)
-    DISPLAY_SOUND_ADVANCED_SOUNDS_DTHD = 0x15390000;
-
-    // TvSettings > Apps
-    APPS = 0x16000000;
-
-    // TvSettings > Apps > See all apps
-    APPS_ALL_APPS = 0x16100000;
-
-    // TvSettings > Apps > See all apps > [An app entry]
-    APPS_ALL_APPS_APP_ENTRY = 0x16110000;
-
-    // TvSettings > Apps > See all apps > [An app entry] > Open
-    APPS_ALL_APPS_APP_ENTRY_OPEN = 0x16111000;
-
-    // TvSettings > Apps > See all apps > [An app entry] > Force stop
-    APPS_ALL_APPS_APP_ENTRY_FORCE_STOP = 0x16112000;
-
-    // TvSettings > Apps > See all apps > [An app entry] > Uninstall
-    APPS_ALL_APPS_APP_ENTRY_UNINSTALL = 0x16113000;
-
-    // TvSettings > Apps > See all apps > [An app entry] > Uninstall updates
-    APPS_ALL_APPS_APP_ENTRY_UNINSTALL_UPDATES = 0x16114000;
-
-    // TvSettings > Apps > See all apps > [An app entry] > Disable
-    APPS_ALL_APPS_APP_ENTRY_DISABLE = 0x16115000;
-
-    // TvSettings > Apps > See all apps > [An app entry] > Clear data
-    APPS_ALL_APPS_APP_ENTRY_CLEAR_DATA = 0x16116000;
-
-    // TvSettings > Apps > See all apps > [An app entry] > Clear cache
-    APPS_ALL_APPS_APP_ENTRY_CLEAR_CACHE = 0x16117000;
-
-    // TvSettings > Apps > See all apps > [An app entry] > Clear defaults
-    APPS_ALL_APPS_APP_ENTRY_CLEAR_DEFAULTS = 0x16118000;
-
-    // TvSettings > Apps > See all apps > [An app entry] >
-    // Notifications (toggle)
-    APPS_ALL_APPS_APP_ENTRY_NOTIFICATIONS = 0x16119000;
-
-    // TvSettings > Apps > See all apps > [An app entry] > Permissions
-    APPS_ALL_APPS_APP_ENTRY_PERMISSIONS = 0x1611A000;
-
-    // TvSettings > Apps > See all apps > [An app entry] > Enable
-    APPS_ALL_APPS_APP_ENTRY_ENABLE = 0x1611B000;
-
-    // TvSettings > Apps > See all apps > [An app entry] > Open source licenses
-    APPS_ALL_APPS_APP_ENTRY_LICENSES = 0x1611C000;
-
-    // TvSettings > Apps > See all apps > Show system apps
-    APPS_ALL_APPS_SHOW_SYSTEM_APPS = 0x16120000;
-
-    // TvSettings > Apps > App permissions
-    APPS_APP_PERMISSIONS = 0x16200000;
-
-    // TvSettings > Apps > App permission > Body sensors
-    APPS_APP_PERMISSIONS_BODY_SENSORS = 0x16210000;
-
-    // TvSettings > Apps > App permission > Calendar
-    APPS_APP_PERMISSIONS_CALENDAR = 0x16220000;
-
-    // TvSettings > Apps > App permission > Call logs
-    APPS_APP_PERMISSIONS_CALL_LOGS = 0x16230000;
-
-    // TvSettings > Apps > App permission > Camera
-    APPS_APP_PERMISSIONS_CAMERA = 0x16240000;
-
-    // TvSettings > Apps > App permission > Contacts
-    APPS_APP_PERMISSIONS_CONTACTS = 0x16250000;
-
-    // TvSettings > Apps > App permission > Location
-    APPS_APP_PERMISSIONS_LOCATION = 0x16260000;
-
-    // TvSettings > Apps > App permission > Microphone
-    APPS_APP_PERMISSIONS_MICROPHONE = 0x16270000;
-
-    // TvSettings > Apps > App permission > Phone
-    APPS_APP_PERMISSIONS_PHONE = 0x16280000;
-
-    // TvSettings > Apps > App permission > Physical activity
-    APPS_APP_PERMISSIONS_PHYSICAL_ACTIVITY = 0x16290000;
-
-    // TvSettings > Apps > App permission > SMS
-    APPS_APP_PERMISSIONS_SMS = 0x162A0000;
-
-    // TvSettings > Apps > App permission > Storage
-    APPS_APP_PERMISSIONS_STORAGE = 0x162B0000;
-
-    // TvSettings > Apps > App permission > Additional permissions
-    APPS_APP_PERMISSIONS_ADDITIONAL = 0x162C0000;
-
-    // TvSettings > Apps > App permission > Additional permissions >
-    // real all TV listings
-    APPS_APP_PERMISSIONS_ADDITIONAL_READ_TV_LISTINGS = 0x162C1000;
-
-    // TvSettings > Apps > App permission > Additional permissions >
-    // real instant messages
-    APPS_APP_PERMISSIONS_ADDITIONAL_READ_INSTANT_MESSAGES = 0x162C2000;
-
-    // TvSettings > Apps > App permission > Additional permissions >
-    // write instant messages
-    APPS_APP_PERMISSIONS_ADDITIONAL_WRITE_INSTANT_MESSAGES = 0x162C3000;
-
-    // TvSettings > Apps > Special app access
-    APPS_SPECIAL_APP_ACCESS = 0x16300000;
-
-    // TvSettings > Apps > Special app access > Energy optimization
-    APPS_SPECIAL_APP_ACCESS_ENERGY_OPTIMIZATION = 0x16310000;
-
-    // TvSettings > Apps > Special app access > Usage access
-    APPS_SPECIAL_APP_ACCESS_USAGE_ACCESS = 0x16320000;
-
-    // TvSettings > Apps > Special app access > Notification access
-    APPS_SPECIAL_APP_ACCESS_NOTIFICATION_ACCESS = 0x16330000;
-
-    // TvSettings > Apps > Special app access > Display over other apps
-    APPS_SPECIAL_APP_ACCESS_DISPLAY_OVER_OTHERS = 0x16340000;
-
-    // TvSettings > Apps > Special app access > Modify system settings
-    APPS_SPECIAL_APP_ACCESS_MODIFY_SYSTEM_SETTINGS = 0x16350000;
-
-    // TvSettings > Apps > Special app access > Picture-in-picture
-    APPS_SPECIAL_APP_ACCESS_PICTURE_IN_PICTURE = 0x16360000;
-
-    // TvSettings > Apps > Security & restrictions
-    APPS_SECURITY_RESTRICTIONS = 0x16400000;
-
-    // TvSettings > Apps > Security & restrictions > Unknown sources
-    APPS_SECURITY_RESTRICTIONS_UNKNOWN_SOURCES = 0x16410000;
-
-    // TvSettings > Apps > Security & restrictions > Verify apps (toggle)
-    APPS_SECURITY_RESTRICTIONS_VERIFY_APPS = 0x16420000;
-
-    // TvSettings > Apps > Security & restrictions > Create restricted profile
-    APPS_SECURITY_RESTRICTIONS_CREATE_PROFILE = 0x16430000;
-
-    // TvSettings > Apps > Security & restrictions > Enter restricted profile
-    APPS_SECURITY_RESTRICTIONS_ENTER_PROFILE = 0x16440000;
-
-    // TvSettings > Apps > Security & restrictions >
-    // Allowed apps (Restricted Profile)
-    APPS_SECURITY_RESTRICTIONS_PROFILE_ALLOWED_APPS = 0x16450000;
-
-    // TvSettings > Apps > Security & restrictions >
-    // Change pin (Restricted Profile)
-    APPS_SECURITY_RESTRICTIONS_PROFILE_CHANGE_PIN = 0x16460000;
-
-    // TvSettings > Apps > Security & restrictions >
-    // Delete restricted profile
-    APPS_SECURITY_RESTRICTIONS_DELETE_PROFILE = 0x16470000;
-
-    // TvSettings > Apps > Security & restrictions >
-    // Exit restricted profile
-    APPS_SECURITY_RESTRICTIONS_EXIT_PROFILE = 0x16480000;
-
-    // TvSettings > System (same as TvSettings > Device Preferences)
-    SYSTEM = 0x17000000;
-
-    // TvSettings > System > About
-    SYSTEM_ABOUT = 0x17100000;
-
-    // TvSettings > System > System update
-    SYSTEM_ABOUT_SYSTEM_UPDATE = 0x17110000;
-
-    // TvSettings > System > Device name
-    SYSTEM_ABOUT_DEVICE_NAME = 0x17120000;
-
-    // TvSettings > System > Factory reset
-    SYSTEM_ABOUT_FACTORY_RESET = 0x17130000;
-
-    // TvSettings > System > Status
-    SYSTEM_ABOUT_STATUS = 0x17140000;
-
-    // TvSettings > System > Legal information
-    SYSTEM_ABOUT_LEGAL_INFO = 0x17150000;
-
-    // TvSettings > System > Legal information > Open source licenses
-    SYSTEM_ABOUT_LEGAL_INFO_OPEN_SOURCE = 0x17151000;
-
-    // TvSettings > System > Legal information > Google legal
-    SYSTEM_ABOUT_LEGAL_INFO_GOOGLE_LEGAL = 0x17152000;
-
-    // TvSettings > System > Legal information > System WebView licenses
-    SYSTEM_ABOUT_LEGAL_INFO_SYSTEM_WEBVIEW = 0x17153000;
-
-    // TvSettings > System > Build
-    SYSTEM_ABOUT_BUILD = 0x17160000;
-
-    // TvSettings > System > Date & time
-    SYSTEM_DATE_TIME = 0x17200000;
-
-    // TvSettings > System > Date & time > Automatic data & time
-    SYSTEM_DATE_TIME_AUTOMATIC = 0x17210000;
-
-    // TvSettings > System > Date & time > Automatic data & time >
-    // Use network-provided time
-    SYSTEM_DATE_TIME_AUTOMATIC_USE_NETWORK_TIME = 0x17211000;
-
-    // TvSettings > System > Date & time > Automatic data & time > Off
-    SYSTEM_DATE_TIME_AUTOMATIC_OFF = 0x17212000;
-
-    // TvSettings > System > Date & time > Set date
-    SYSTEM_DATE_TIME_SET_DATE = 0x17220000;
-
-    // TvSettings > System > Date & time > Set time
-    SYSTEM_DATE_TIME_SET_TIME = 0x17230000;
-
-    // TvSettings > System > Date & time > Set time zone
-    SYSTEM_DATE_TIME_SET_TIME_ZONE = 0x17240000;
-
-    // TvSettings > System > Date & time > Set time zone > [A time zone button]
-    SYSTEM_DATE_TIME_SET_TIME_ZONE_BUTTON = 0x17241000;
-
-    // TvSettings > System > Date & time > Use 24-hour format (toggle)
-    SYSTEM_DATE_TIME_USE_24_HOUR_FORMAT = 0x17250000;
-
-    // TvSettings > System > Language
-    SYSTEM_LANGUAGE = 0x17300000;
-
-    // TvSettings > System > Language > [A language button]
-    SYSTEM_LANGUAGE_BUTTON = 0x17310000;
-
-    // TvSettings > System > Keyboard
-    SYSTEM_KEYBOARD = 0x17400000;
-
-    // TvSettings > System > Keyboard > Current keyboard
-    SYSTEM_KEYBOARD_CURRENT_KEYBOARD = 0x17410000;
-
-    // TvSettings > System > Keyboard > Gboard Settings
-    SYSTEM_KEYBOARD_GBOARD_SETTINGS = 0x17420000;
-
-    // TvSettings > System > Keyboard > Gboard Settings > Languages
-    SYSTEM_KEYBOARD_GBOARD_SETTINGS_LANGUAGES = 0x17421000;
-
-    // TvSettings > System > Keyboard > Gboard Settings > Terms of services
-    SYSTEM_KEYBOARD_GBOARD_SETTINGS_TOS = 0x17422000;
-
-    // TvSettings > System > Keyboard > Gboard Settings > Privacy policy
-    SYSTEM_KEYBOARD_GBOARD_SETTINGS_PRIVACY_POLICY = 0x17423000;
-
-    // TvSettings > System > Keyboard > Gboard Settings > Open source licenses
-    SYSTEM_KEYBOARD_GBOARD_SETTINGS_OPEN_SOURCE = 0x17424000;
-
-    // TvSettings > System > Keyboard > Gboard Settings >
-    // Share usage statistics (toggle)
-    SYSTEM_KEYBOARD_GBOARD_SETTINGS_SHARE_USAGE_STATS = 0x17425000;
-
-    // TvSettings > System > Keyboard > Manage keyboards
-    SYSTEM_KEYBOARD_MANAGE_KEYBOARDS = 0x17430000;
-
-    // TvSettings > System > Storage
-    SYSTEM_STORAGE = 0x17500000;
-
-    // TvSettings > System > Internal shared storage
-    SYSTEM_STORAGE_INTERNAL_STORAGE = 0x17510000;
-
-    // TvSettings > System > Internal shared storage > Apps
-    SYSTEM_STORAGE_INTERNAL_STORAGE_APPS = 0x17511000;
-
-    // TvSettings > System > Internal shared storage >
-    // Cached data (brings up "Clear cached data?" dialog upon click)
-    SYSTEM_STORAGE_INTERNAL_STORAGE_CACHED = 0x17512000;
-
-    // TvSettings > System > Energy saver
-    SYSTEM_ENERGYSAVER = 0x17700000;
-
-    // TvSettings > System > Energy saver > Turn off display after
-    SYSTEM_ENERGYSAVER_START_DELAY = 0x17710000;
-
-    // TvSettings > System > Energy saver > Turn off display after > 15 minutes
-    SYSTEM_ENERGYSAVER_START_DELAY_15M = 0x17711000;
-
-    // TvSettings > System > Energy saver > Turn off display after > 30 minutes
-    SYSTEM_ENERGYSAVER_START_DELAY_30M = 0x17712000;
-
-    // TvSettings > System > Energy saver > Turn off display after > 1 hour
-    SYSTEM_ENERGYSAVER_START_DELAY_1H = 0x17713000;
-
-    // TvSettings > System > Energy saver > Turn off display after > 3 hours
-    SYSTEM_ENERGYSAVER_START_DELAY_3H = 0x17714000;
-
-    // TvSettings > System > Energy saver > Turn off display after > 6 hours
-    SYSTEM_ENERGYSAVER_START_DELAY_6H = 0x17715000;
-
-    // TvSettings > System > Energy saver > Turn off display after > 12 hours
-    SYSTEM_ENERGYSAVER_START_DELAY_12H = 0x17716000;
-
-    // TvSettings > System > Energy saver > Turn off display after > Never
-    SYSTEM_ENERGYSAVER_START_DELAY_NEVER = 0x17717000;
-
-    // TvSettings > System > Accessibility
-    SYSTEM_A11Y = 0x17800000;
-
-    // TvSettings > System > Accessibility > Captions
-    SYSTEM_A11Y_CAPTIONS = 0x17810000;
-
-    // TvSettings > System > Accessibility > Captions > Display (toggle)
-    SYSTEM_A11Y_CAPTIONS_DISPLAY_ON_OFF = 0x17811000;
-
-    // TvSettings > System > Accessibility > Captions > Language
-    SYSTEM_A11Y_CAPTIONS_LANGUAGE = 0x17812000;
-
-    // TvSettings > System > Accessibility > Captions > Language > [A language]
-    SYSTEM_A11Y_CAPTIONS_LANGUAGE_BUTTON = 0x17812100;
-
-    // TvSettings > System > Accessibility > Captions > Text size
-    SYSTEM_A11Y_CAPTIONS_TEXT_SIZE = 0x17813000;
-
-    // TvSettings > System > Accessibility > Captions > Text size > Very small
-    SYSTEM_A11Y_CAPTIONS_TEXT_SIZE_VERY_SMALL = 0x17813100;
-
-    // TvSettings > System > Accessibility > Captions > Text size > Small
-    SYSTEM_A11Y_CAPTIONS_TEXT_SIZE_SMALL = 0x17813200;
-
-    // TvSettings > System > Accessibility > Captions > Text size > Normal
-    SYSTEM_A11Y_CAPTIONS_TEXT_SIZE_NORMAL = 0x17813300;
-
-    // TvSettings > System > Accessibility > Captions > Text size > Large
-    SYSTEM_A11Y_CAPTIONS_TEXT_SIZE_LARGE = 0x17813400;
-
-    // TvSettings > System > Accessibility > Captions > Text size > Very large
-    SYSTEM_A11Y_CAPTIONS_TEXT_SIZE_VERY_LARGE = 0x17813500;
-
-    // TvSettings > System > Accessibility > Captions >
-    // White on black (radio button)
-    SYSTEM_A11Y_CAPTIONS_WHITE_ON_BLACK = 0x17814000;
-
-    // TvSettings > System > Accessibility > Captions >
-    // Black on white (radio button)
-    SYSTEM_A11Y_CAPTIONS_BLACK_ON_WHITE = 0x17815000;
-
-    // TvSettings > System > Accessibility > Captions >
-    // Yellow on black (radio button)
-    SYSTEM_A11Y_CAPTIONS_YELLOW_ON_BLACK = 0x17816000;
-
-    // TvSettings > System > Accessibility > Captions >
-    // Yellow on blue (radio button)
-    SYSTEM_A11Y_CAPTIONS_YELLOW_ON_BLUE = 0x17817000;
-
-    // TvSettings > System > Accessibility > Captions > Custom
-    SYSTEM_A11Y_CAPTIONS_CUSTOM = 0x17818000;
-
-    // TvSettings > System > Accessibility > Captions > Custom > Font family
-    SYSTEM_A11Y_CAPTIONS_CUSTOM_FONT = 0x17818100;
-
-    // TvSettings > System > Accessibility > Captions > Custom > Text color
-    SYSTEM_A11Y_CAPTIONS_CUSTOM_TEXT_COLOR = 0x17818200;
-
-    // TvSettings > System > Accessibility > Captions > Custom > Text opacity
-    SYSTEM_A11Y_CAPTIONS_CUSTOM_TEXT_OPACITY = 0x17818300;
-
-    // TvSettings > System > Accessibility > Captions > Custom > Edge type
-    SYSTEM_A11Y_CAPTIONS_CUSTOM_EDGE_TYPE = 0x17818400;
-
-    // TvSettings > System > Accessibility > Captions > Custom > Edge color
-    SYSTEM_A11Y_CAPTIONS_CUSTOM_EDGE_COLOR = 0x17818500;
-
-    // TvSettings > System > Accessibility > Captions > Custom >
-    // Show background (toggle)
-    SYSTEM_A11Y_CAPTIONS_SHOW_BACKGROUND = 0x17818600;
-
-    // TvSettings > System > Accessibility > Captions > Custom >
-    // Background color
-    SYSTEM_A11Y_CAPTIONS_BACKGROUND_COLOR = 0x17818700;
-
-    // TvSettings > System > Accessibility > Captions > Custom >
-    // Background opacity
-    SYSTEM_A11Y_CAPTIONS_BACKGROUND_OPACITY = 0x17818800;
-
-    // TvSettings > System > Accessibility > Captions > Custom >
-    // Show window (toggle)
-    SYSTEM_A11Y_CAPTIONS_SHOW_WINDOW = 0x17818900;
-
-    // TvSettings > System > Accessibility > Captions > Custom > Window color
-    SYSTEM_A11Y_CAPTIONS_WINDOW_COLOR = 0x17818A00;
-
-    // TvSettings > System > Accessibility > Captions > Custom > Window opacity
-    SYSTEM_A11Y_CAPTIONS_WINDOW_OPACITY = 0x17818B00;
-
-    // TvSettings > System > Accessibility > High contrast text (toggle)
-    SYSTEM_A11Y_HIGH_CONTRAST_TEXT = 0x17820000;
-
-    // TvSettings > System > Accessibility > Text to speech
-    SYSTEM_A11Y_TTS = 0x17830000;
-
-    // TvSettings > System > Accessibility > Text to speech > [Select an engine]
-    SYSTEM_A11Y_TTS_ENGINE_SELECT = 0x17831000;
-
-    // TvSettings > System > Accessibility > Text to speech >
-    // Engine configuration
-    SYSTEM_A11Y_TTS_ENGINE_CONFIG = 0x17832000;
-
-    // TvSettings > System > Accessibility > Text to speech >
-    // Engine configuration > Language
-    SYSTEM_A11Y_TTS_ENGINE_CONFIG_LANGUAGE = 0x17832100;
-
-    // TvSettings > System > Accessibility > Text to speech >
-    // Engine configuration > Language > Button
-    SYSTEM_A11Y_TTS_ENGINE_CONFIG_LANGUAGE_CHOOSE_LANGUAGE = 0x17832110;
-
-    // TvSettings > System > Accessibility > Text to speech >
-    // Engine configuration > Settings for Google Text-to-speech Engine
-    SYSTEM_A11Y_TTS_ENGINE_CONFIG_SETTINGS_GTTS_ENGINE = 0x17832200;
-
-    // TvSettings > System > Accessibility > Text to speech >
-    // Engine configuration > Install voice data
-    SYSTEM_A11Y_TTS_ENGINE_CONFIG_INSTALL_VOICE_DATA = 0x17832300;
-
-    // TvSettings > System > Accessibility > Text to speech > Speech rate
-    SYSTEM_A11Y_TTS_SPEECH_RATE = 0x17833000;
-
-    // TvSettings > System > Accessibility > Text to speech >
-    // Listen to an example
-    SYSTEM_A11Y_TTS_LISTEN_EXAMPLE = 0x17834000;
-
-    // TvSettings > System > Accessibility > Accessibility shortcut
-    SYSTEM_A11Y_SHORTCUT = 0x17840000;
-
-    // TvSettings > System > Accessibility > Accessibility shortcut >
-    // Enable (toggle)
-    SYSTEM_A11Y_SHORTCUT_ON_OFF = 0x17841000;
-
-    // TvSettings > System > Accessibility > Accessibility shortcut >
-    // Shortcut services
-    SYSTEM_A11Y_SHORTCUT_SERVICE = 0x17842000;
-
-    // TvSettings > System > Accessibility > TalkBack
-    SYSTEM_A11Y_TALKBACK = 0x17850000;
-
-    // TvSettings > System > Accessibility > TalkBack > Enable (toggle)
-    SYSTEM_A11Y_TALKBACK_ON_OFF = 0x17851000;
-
-    // TvSettings > System > Accessibility > TalkBack > Configuration
-    SYSTEM_A11Y_TALKBACK_CONFIG = 0x17852000;
-
-    // TvSettings > System > Accessibility > Accessibility Menu
-    SYSTEM_A11Y_A11Y_MENU = 0x17860000;
-
-    // TvSettings > System > Accessibility > Accessibility Menu >
-    // Enable (toggle)
-    SYSTEM_A11Y_A11Y_MENU_ON_OFF = 0x17861000;
-
-    // TvSettings > System > Accessibility > Accessibility Menu > Configuration
-    SYSTEM_A11Y_A11Y_MENU_CONFIG = 0x17862000;
-
-    // TvSettings > System > Accessibility > Select to Speak
-    SYSTEM_A11Y_STS = 0x17870000;
-
-    // TvSettings > System > Accessibility > Select to Speak > Enable (toggle)
-    SYSTEM_A11Y_STS_ON_OFF = 0x17871000;
-
-    // TvSettings > System > Accessibility > Select to Speak > Configuration
-    SYSTEM_A11Y_STS_CONFIG = 0x17872000;
-
-    // TvSettings > System > Accessibility > Switch Access
-    SYSTEM_A11Y_SWITCH_ACCESS = 0x17880000;
-
-    // TvSettings > System > Accessibility > Switch Access > Enable (Toggle)
-    SYSTEM_A11Y_SWITCH_ACCESS_ON_OFF = 0x17881000;
-
-    // TvSettings > System > Accessibility > Switch Access > Configuration
-    SYSTEM_A11Y_SWITCH_ACCESS_CONFIG = 0x17882000;
-
-    // TvSettings > System > Reboot
-    SYSTEM_REBOOT = 0x17900000;
-
-    // TvSettings > Device Preferences > Home screen (in classic TvSettings)
-    PREFERENCES_HOME_SCREEN = 0x17A00000;
-
-    // TvSettings > Device Preferences > Home screen (in classic TvSettings) >
-    // Customize channels
-    PREFERENCES_HOME_SCREEN_CUSTOMIZE_CHANNELS = 0x17A10000;
-
-    // TvSettings > Device Preferences > Home screen (in classic TvSettings) >
-    // Customize channels > Play Next
-    PREFERENCES_HOME_SCREEN_CUSTOMIZE_CHANNELS_PN = 0x17A11000;
-
-    // TvSettings > Device Preferences > Home screen (in classic TvSettings) >
-    // Customize channels > Play Next > On (toggle)
-    PREFERENCES_HOME_SCREEN_CUSTOMIZE_CHANNELS_PN_ON_OFF = 0x17A11100;
-
-    // TvSettings > Device Preferences > Home screen (in classic TvSettings) >
-    // Customize channels > Play Next > Google Play Movies & TV (toggle)
-    PREFERENCES_HOME_SCREEN_CUSTOMIZE_CHANNELS_PN_GPMT = 0x17A11200;
-
-    // TvSettings > Device Preferences > Home screen (in classic TvSettings) >
-    // Customize channels > Play Next > Google Play Music (toggle)
-    PREFERENCES_HOME_SCREEN_CUSTOMIZE_CHANNELS_PN_GPM = 0x17A11300;
-
-    // TvSettings > Device Preferences > Home screen (in classic TvSettings) >
-    // Customize channels > Play Next > Promotional channels (toggle)
-    PREFERENCES_HOME_SCREEN_CUSTOMIZE_CHANNELS_PN_PROMOTIONAL = 0x17A11400;
-
-    // TvSettings > Device Preferences > Home screen (in classic TvSettings) >
-    // Customize channels > Home screen channels
-    PREFERENCES_HOME_SCREEN_CUSTOMIZE_CHANNELS_HOME_SCREEN = 0x17A12000;
-
-    // TvSettings > Device Preferences > Home screen (in classic TvSettings) >
-    // Customize channels > Promotional channels
-    PREFERENCES_HOME_SCREEN_CUSTOMIZE_CHANNELS_PROMOTIONAL = 0x17A13000;
-
-    // TvSettings > Device Preferences > Home screen (in classic TvSettings) >
-    // Enable video previews (toggle)
-    PREFERENCES_HOME_SCREEN_VIDEO_PREVIEWS = 0x17A20000;
-
-    // TvSettings > Device Preferences > Home screen (in classic TvSettings) >
-    // Enable audio previews (toggle)
-    PREFERENCES_HOME_SCREEN_AUDIO_PREVIEWS = 0x17A30000;
-
-    // TvSettings > Device Preferences > Home screen (in classic TvSettings) >
-    // Reorder apps
-    PREFERENCES_HOME_SCREEN_REORDER_APPS = 0x17A40000;
-
-    // TvSettings > Device Preferences > Home screen (in classic TvSettings) >
-    // Reorder games
-    PREFERENCES_HOME_SCREEN_REORDER_GAMES = 0x17A50000;
-
-    // TvSettings > Device Preferences > Home screen (in classic TvSettings) >
-    // Android TV Home open source licenses
-    PREFERENCES_HOME_SCREEN_ATVH_OPEN_SOURCE = 0x17A60000;
-
-    // TvSettings > Device Preferences > Home screen (in classic TvSettings) >
-    // Android TV Core Services open source licenses
-    PREFERENCES_HOME_SCREEN_ATVCS_OPEN_SOURCE = 0x17A70000;
-
-    // TvSettings > Device Preferences > Google Assistant
-    PREFERENCES_ASSISTANT = 0x17B00000;
-
-    // TvSettings > Device Preferences > Google Assistant > Accounts
-    PREFERENCES_ASSISTANT_ACCOUNTS = 0x17B10000;
-
-    // TvSettings > Device Preferences > Google Assistant > Accept permissions
-    PREFERENCES_ASSISTANT_ACCEPT_PERMISSIONS = 0x17B20000;
-
-    // TvSettings > Device Preferences > Google Assistant > View permissions
-    PREFERENCES_ASSISTANT_VIEW_PERMISSIONS = 0x17B30000;
-
-    // TvSettings > Device Preferences > Google Assistant > Searchable apps
-    // (aliasing ACCOUNT_SLICE_REG_ACCOUNT_ASSISTANT_SEARCHABLE_APPS)
-    PREFERENCES_ASSISTANT_SEARCHABLE_APPS = 0x12133000;
-
-    // TvSettings > Device Preferences > Google Assistant > SafeSearch filter
-    // (aliasing ACCOUNT_SLICE_REG_ACCOUNT_ASSISTANT_SAFE_SEARCH)
-    PREFERENCES_ASSISTANT_SAFESEARCH_FILTER = 0x12131000;
-
-    // TvSettings > Device Preferences > Google Assistant >
-    // Block offensive words
-    // (aliasing ACCOUNT_SLICE_REG_ACCOUNT_ASSISTANT_BLOCK_OFFENSIVE)
-    PREFERENCES_ASSISTANT_BLOCK_OFFENSIVE = 0x12132000;
-
-    // TvSettings > Device Preferences > Google Assistant > Open source licenses
-    PREFERENCES_ASSISTANT_OPEN_SOURCE = 0x17B40000;
-
-    // TvSettings > Device Preferences > Chromecast Android Shell
-    PREFERENCES_CHROMECAST_SHELL = 0x17C00000;
-
-    // TvSettings > Device Preferences > Chromecast Android Shell >
-    // Open source licenses
-    PREFERENCES_CHROMECAST_SHELL_OPEN_SOURCE = 0x17C10000;
-
-    // TvSettings > Device Preferences > Screen saver
-    PREFERENCES_SCREENSAVER = 0x17D00000;
-
-    // TvSettings > Device Preferences > Screen saver > Screen saver (chooser)
-    PREFERENCES_SCREENSAVER_CHOOSER = 0x17D10000;
-
-    // TvSettings > Device Preferences > Screen saver > Screen saver (chooser) >
-    // Turn screen off
-    PREFERENCES_SCREENSAVER_CHOOSER_SCREEN_OFF = 0x17D11000;
-
-    // TvSettings > Device Preferences > Screen saver > Screen saver (chooser) >
-    // Backdrop
-    PREFERENCES_SCREENSAVER_CHOOSER_BACKDROP = 0x17D12000;
-
-    // TvSettings > Device Preferences > Screen saver > Screen saver (chooser) >
-    // Colors
-    PREFERENCES_SCREENSAVER_CHOOSER_COLORS = 0x17D13000;
-
-    // TvSettings > Device Preferences > Screen saver > When to start
-    PREFERENCES_SCREENSAVER_START_DELAY = 0x17D20000;
-
-    // TvSettings > Device Preferences > Screen saver > When to start >
-    // 5 minutes
-    PREFERENCES_SCREENSAVER_START_DELAY_5M = 0x17D21000;
-
-    // TvSettings > Device Preferences > Screen saver > When to start >
-    // 15 minutes
-    PREFERENCES_SCREENSAVER_START_DELAY_15M = 0x17D22000;
-
-    // TvSettings > Device Preferences > Screen saver > When to start >
-    // 30 minutes
-    PREFERENCES_SCREENSAVER_START_DELAY_30M = 0x17D23000;
-
-    // TvSettings > Device Preferences > Screen saver > When to start >
-    // 1 hour
-    PREFERENCES_SCREENSAVER_START_DELAY_1H = 0x17D24000;
-
-    // TvSettings > Device Preferences > Screen saver > When to start >
-    // 2 hours
-    PREFERENCES_SCREENSAVER_START_DELAY_2H = 0x17D25000;
-
-    // TvSettings > Device Preferences > Screen saver > Start now
-    PREFERENCES_SCREENSAVER_START_NOW = 0x17D30000;
-
-    // TvSettings > Connected Devices (Slice)
-    CONNECTED_SLICE = 0x18000000;
-
-    // TvSettings > Connected Devices (Slice) > Connect remote or headphones
-    CONNECTED_SLICE_CONNECT_NEW_DEVICES = 0x18100000;
-
-    // TvSettings > Connected Devices (Slice) > [A connected device]
-    CONNECTED_SLICE_DEVICE_ENTRY = 0x18200000;
-
-    // TvSettings > Connected Devices (Slice) > [A connected device] >
-    // Remote update
-    CONNECTED_SLICE_DEVICE_ENTRY_UPDATE = 0x18210000;
-
-    // TvSettings > Connected Devices (Slice) > [A connected device] > Rename
-    CONNECTED_SLICE_DEVICE_ENTRY_RENAME = 0x18220000;
-
-    // TvSettings > Connected Devices (Slice) > [A connected device] > Forget
-    CONNECTED_SLICE_DEVICE_ENTRY_FORGET = 0x18230000;
-
-    // TvSettings > Connected Devices (Slice) > HDMI-CEC
-    CONNECTED_SLICE_HDMICEC = 0x18300000;
-
-    // TvSettings > Connected Devices (Slice) > HDMI-CEC > Enable (toggle)
-    CONNECTED_SLICE_HDMICEC_ON_OFF = 0x18310000;
-
-    // TvSettings > Connected Devices (aliasing CONNECTED_SLICE)
-    CONNECTED_CLASSIC = 0x18000000;
-
-    // TvSettings > Connected Devices > Connect remote
-    // (aliasing CONNECTED_SLICE_CONNECT_NEW_DEVICES)
-    CONNECTED_CLASSIC_CONNECT_REMOTE = 0x18100000;
-
-    // TvSettings > Connected Devices > [A connected device]
-    // (aliasing CONNECTED_SLICE_DEVICE_ENTRY)
-    CONNECTED_CLASSIC_DEVICE_ENTRY = 0x18200000;
-
-    // TvSettings > Connected Devices > [A connected device] > Update
-    // (aliasing CONNECTED_SLICE_DEVICE_ENTRY_UPDATE)
-    CONNECTED_CLASSIC_DEVICE_ENTRY_UPDATE = 0x18210000;
-
-    // TvSettings > Connected Devices > [A connected device] > Rename
-    // (aliasing CONNECTED_SLICE_DEVICE_ENTRY_RENAME)
-    CONNECTED_CLASSIC_DEVICE_ENTRY_RENAME = 0x18220000;
-
-    // TvSettings > Connected Devices > [A connected device] > Forget
-    // (aliasing CONNECTED_SLICE_DEVICE_ENTRY_FORGET)
-    CONNECTED_CLASSIC_DEVICE_ENTRY_FORGET = 0x18230000;
-
-    // TvSettings > Connected Devices > HDMI-CEC
-    // (aliasing CONNECTED_SLICE_HDMICEC)
-    CONNECTED_CLASSIC_HDMICEC = 0x18300000;
-
-    // TvSettings > Connected Devices > HDMI-CEC > Enable (toggle)
-    // (aliasing CONNECTED_SLICE_HDMICEC_ON_OFF)
-    CONNECTED_CLASSIC_HDMICEC_ON_OFF = 0x18310000;
-
-    // TvSettings > Help & Feedback
-    FEEDBACK = 0x19000000;
-
-    // TvSettings > Help & Feedback > Send feedback
-    FEEDBACK_SEND = 0x19100000;
-}
diff --git a/core/proto/android/bluetooth/a2dp/enums.proto b/core/proto/android/bluetooth/a2dp/enums.proto
deleted file mode 100644
index 5a025bd..0000000
--- a/core/proto/android/bluetooth/a2dp/enums.proto
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-package android.bluetooth.a2dp;
-
-option java_outer_classname = "BluetoothA2dpProtoEnums";
-option java_multiple_files = true;
-
-// A2dp playback state enum, defined from:
-// frameworks/base/core/java/android/bluetooth/BluetoothA2dp.java
-enum PlaybackStateEnum {
-    PLAYBACK_STATE_UNKNOWN = 0;
-    PLAYBACK_STATE_PLAYING = 10;
-    PLAYBACK_STATE_NOT_PLAYING = 11;
-}
-
-enum AudioCodingModeEnum {
-    AUDIO_CODING_MODE_UNKNOWN = 0;
-    AUDIO_CODING_MODE_HARDWARE = 1;
-    AUDIO_CODING_MODE_SOFTWARE = 2;
-}
diff --git a/core/proto/android/bluetooth/enums.proto b/core/proto/android/bluetooth/enums.proto
deleted file mode 100644
index dc60ede..0000000
--- a/core/proto/android/bluetooth/enums.proto
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-package android.bluetooth;
-
-option java_outer_classname = "BluetoothProtoEnums";
-option java_multiple_files = true;
-
-// Bluetooth connection states.
-enum ConnectionStateEnum {
-    CONNECTION_STATE_DISCONNECTED = 0;
-    CONNECTION_STATE_CONNECTING = 1;
-    CONNECTION_STATE_CONNECTED = 2;
-    CONNECTION_STATE_DISCONNECTING = 3;
-}
-
-// Bluetooth Adapter Enable and Disable Reasons
-enum EnableDisableReasonEnum {
-    ENABLE_DISABLE_REASON_UNSPECIFIED = 0;
-    ENABLE_DISABLE_REASON_APPLICATION_REQUEST = 1;
-    ENABLE_DISABLE_REASON_AIRPLANE_MODE = 2;
-    ENABLE_DISABLE_REASON_DISALLOWED = 3;
-    ENABLE_DISABLE_REASON_RESTARTED = 4;
-    ENABLE_DISABLE_REASON_START_ERROR = 5;
-    ENABLE_DISABLE_REASON_SYSTEM_BOOT = 6;
-    ENABLE_DISABLE_REASON_CRASH = 7;
-    ENABLE_DISABLE_REASON_USER_SWITCH = 8;
-    ENABLE_DISABLE_REASON_RESTORE_USER_SETTING = 9;
-    ENABLE_DISABLE_REASON_FACTORY_RESET = 10;
-    ENABLE_DISABLE_REASON_INIT_FLAGS_CHANGED = 11;
-}
-
-enum DirectionEnum {
-    DIRECTION_UNKNOWN = 0;
-    DIRECTION_OUTGOING = 1;
-    DIRECTION_INCOMING = 2;
-}
-
-// First item is the default value, other values follow Bluetooth spec definition
-enum LinkTypeEnum {
-    // Link type is at most 1 byte (0xFF), thus 0xFFF must not be a valid value
-    LINK_TYPE_UNKNOWN = 0xFFF;
-    LINK_TYPE_SCO = 0x00;
-    LINK_TYPE_ACL = 0x01;
-    LINK_TYPE_ESCO = 0x02;
-}
-
-enum DeviceInfoSrcEnum {
-    DEVICE_INFO_SRC_UNKNOWN = 0;
-    // Within Android Bluetooth stack
-    DEVICE_INFO_INTERNAL = 1;
-    // Outside Android Bluetooth stack
-    DEVICE_INFO_EXTERNAL = 2;
-}
-
-enum DeviceTypeEnum {
-    DEVICE_TYPE_UNKNOWN = 0;
-    DEVICE_TYPE_CLASSIC = 1;
-    DEVICE_TYPE_LE = 2;
-    DEVICE_TYPE_DUAL = 3;
-}
-
-// Defined in frameworks/base/core/java/android/bluetooth/BluetoothDevice.java
-enum TransportTypeEnum {
-    TRANSPORT_TYPE_AUTO = 0;
-    TRANSPORT_TYPE_BREDR = 1;
-    TRANSPORT_TYPE_LE = 2;
-}
-
-// Bond state enum
-// Defined in frameworks/base/core/java/android/bluetooth/BluetoothDevice.java
-enum BondStateEnum {
-    BOND_STATE_UNKNOWN = 0;
-    BOND_STATE_NONE = 10;
-    BOND_STATE_BONDING = 11;
-    BOND_STATE_BONDED = 12;
-}
-
-// Sub states within the bonding general state
-enum BondSubStateEnum {
-    BOND_SUB_STATE_UNKNOWN = 0;
-    BOND_SUB_STATE_LOCAL_OOB_DATA_PROVIDED = 1;
-    BOND_SUB_STATE_LOCAL_PIN_REQUESTED = 2;
-    BOND_SUB_STATE_LOCAL_PIN_REPLIED = 3;
-    BOND_SUB_STATE_LOCAL_SSP_REQUESTED = 4;
-    BOND_SUB_STATE_LOCAL_SSP_REPLIED = 5;
-}
-
-enum UnbondReasonEnum {
-    UNBOND_REASON_UNKNOWN = 0;
-    UNBOND_REASON_AUTH_FAILED = 1;
-    UNBOND_REASON_AUTH_REJECTED = 2;
-    UNBOND_REASON_AUTH_CANCELED = 3;
-    UNBOND_REASON_REMOTE_DEVICE_DOWN = 4;
-    UNBOND_REASON_DISCOVERY_IN_PROGRESS = 5;
-    UNBOND_REASON_AUTH_TIMEOUT = 6;
-    UNBOND_REASON_REPEATED_ATTEMPTS = 7;
-    UNBOND_REASON_REMOTE_AUTH_CANCELED = 8;
-    UNBOND_REASON_REMOVED = 9;
-}
-
-enum SocketTypeEnum {
-    SOCKET_TYPE_UNKNOWN = 0;
-    SOCKET_TYPE_RFCOMM = 1;
-    SOCKET_TYPE_SCO = 2;
-    SOCKET_TYPE_L2CAP_BREDR = 3;
-    SOCKET_TYPE_L2CAP_LE = 4;
-}
-
-enum SocketConnectionstateEnum {
-    SOCKET_CONNECTION_STATE_UNKNOWN = 0;
-    // Socket acts as a server waiting for connection
-    SOCKET_CONNECTION_STATE_LISTENING = 1;
-    // Socket acts as a client trying to connect
-    SOCKET_CONNECTION_STATE_CONNECTING = 2;
-    // Socket is connected
-    SOCKET_CONNECTION_STATE_CONNECTED = 3;
-    // Socket tries to disconnect from remote
-    SOCKET_CONNECTION_STATE_DISCONNECTING = 4;
-    // This socket is closed
-    SOCKET_CONNECTION_STATE_DISCONNECTED = 5;
-}
-
-enum SocketRoleEnum {
-    SOCKET_ROLE_UNKNOWN = 0;
-    SOCKET_ROLE_LISTEN = 1;
-    SOCKET_ROLE_CONNECTION = 2;
-}
diff --git a/core/proto/android/bluetooth/hci/enums.proto b/core/proto/android/bluetooth/hci/enums.proto
deleted file mode 100644
index ef894e5..0000000
--- a/core/proto/android/bluetooth/hci/enums.proto
+++ /dev/null
@@ -1,559 +0,0 @@
-/*
- * Copyright 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-package android.bluetooth.hci;
-
-option java_outer_classname = "BluetoothHciProtoEnums";
-option java_multiple_files = true;
-
-// HCI command opcodes (OCF+OGF) from Bluetooth 5.0 specification Vol 2, Part E, Section 7
-// Original definition: system/bt/stack/include/hcidefs.h
-enum CommandEnum {
-    // Opcode is at most 2 bytes (0xFFFF), thus 0xFFFFF must not be a valid value
-    CMD_UNKNOWN = 0xFFFFF;
-    // Link control commands 0x0400
-    CMD_INQUIRY = 0x0401;
-    CMD_INQUIRY_CANCEL = 0x0402;
-    CMD_PERIODIC_INQUIRY_MODE = 0x0403;
-    CMD_EXIT_PERIODIC_INQUIRY_MODE = 0x0404;
-    CMD_CREATE_CONNECTION = 0x0405;
-    CMD_DISCONNECT = 0x0406;
-    CMD_ADD_SCO_CONNECTION = 0x0407; // Deprecated since Bluetooth 1.2
-    CMD_CREATE_CONNECTION_CANCEL = 0x0408;
-    CMD_ACCEPT_CONNECTION_REQUEST = 0x0409;
-    CMD_REJECT_CONNECTION_REQUEST = 0x040A;
-    CMD_LINK_KEY_REQUEST_REPLY = 0x040B;
-    CMD_LINK_KEY_REQUEST_NEG_REPLY = 0x040C;
-    CMD_PIN_CODE_REQUEST_REPLY = 0x040D;
-    CMD_PIN_CODE_REQUEST_NEG_REPLY = 0x040E;
-    CMD_CHANGE_CONN_PACKET_TYPE = 0x040F;
-    CMD_AUTHENTICATION_REQUESTED = 0x0411;
-    CMD_SET_CONN_ENCRYPTION = 0x0413;
-    CMD_CHANGE_CONN_LINK_KEY = 0x0415;
-    CMD_MASTER_LINK_KEY = 0x0417;
-    CMD_RMT_NAME_REQUEST = 0x0419;
-    CMD_RMT_NAME_REQUEST_CANCEL = 0x041A;
-    CMD_READ_RMT_FEATURES = 0x041B;
-    CMD_READ_RMT_EXT_FEATURES = 0x041C;
-    CMD_READ_RMT_VERSION_INFO = 0x041D;
-    CMD_READ_RMT_CLOCK_OFFSET = 0x041F;
-    CMD_READ_LMP_HANDLE = 0x0420;
-    CMD_SETUP_ESCO_CONNECTION = 0x0428;
-    CMD_ACCEPT_ESCO_CONNECTION = 0x0429;
-    CMD_REJECT_ESCO_CONNECTION = 0x042A;
-    CMD_IO_CAPABILITY_REQUEST_REPLY = 0x042B;
-    CMD_USER_CONF_REQUEST_REPLY = 0x042C;
-    CMD_USER_CONF_VALUE_NEG_REPLY = 0x042D;
-    CMD_USER_PASSKEY_REQ_REPLY = 0x042E;
-    CMD_USER_PASSKEY_REQ_NEG_REPLY = 0x042F;
-    CMD_REM_OOB_DATA_REQ_REPLY = 0x0430;
-    CMD_REM_OOB_DATA_REQ_NEG_REPLY = 0x0433;
-    CMD_IO_CAP_REQ_NEG_REPLY = 0x0434;
-    // BEGIN: AMP commands (not used in system/bt)
-    CMD_CREATE_PHYSICAL_LINK = 0x0435;
-    CMD_ACCEPT_PHYSICAL_LINK = 0x0436;
-    CMD_DISCONNECT_PHYSICAL_LINK = 0x0437;
-    CMD_CREATE_LOGICAL_LINK = 0x0438;
-    CMD_ACCEPT_LOGICAL_LINK = 0x0439;
-    CMD_DISCONNECT_LOGICAL_LINK = 0x043A;
-    CMD_LOGICAL_LINK_CANCEL = 0x043B;
-    CMD_FLOW_SPEC_MODIFY = 0x043C;
-    // END: AMP commands
-    CMD_ENH_SETUP_ESCO_CONNECTION = 0x043D;
-    CMD_ENH_ACCEPT_ESCO_CONNECTION = 0x043E;
-    CMD_TRUNCATED_PAGE = 0x043F;
-    CMD_TRUNCATED_PAGE_CANCEL = 0x0440;
-    CMD_SET_CLB = 0x0441;
-    CMD_RECEIVE_CLB = 0x0442;
-    CMD_START_SYNC_TRAIN = 0x0443;
-    CMD_RECEIVE_SYNC_TRAIN = 0x0444;
-    CMD_REM_OOB_EXTENDED_DATA_REQ_REPLY = 0x0445; // Not currently used in system/bt
-    // Link policy commands 0x0800
-    CMD_HOLD_MODE = 0x0801;
-    CMD_SNIFF_MODE = 0x0803;
-    CMD_EXIT_SNIFF_MODE = 0x0804;
-    CMD_PARK_MODE = 0x0805;
-    CMD_EXIT_PARK_MODE = 0x0806;
-    CMD_QOS_SETUP = 0x0807;
-    CMD_ROLE_DISCOVERY = 0x0809;
-    CMD_SWITCH_ROLE = 0x080B;
-    CMD_READ_POLICY_SETTINGS = 0x080C;
-    CMD_WRITE_POLICY_SETTINGS = 0x080D;
-    CMD_READ_DEF_POLICY_SETTINGS = 0x080E;
-    CMD_WRITE_DEF_POLICY_SETTINGS = 0x080F;
-    CMD_FLOW_SPECIFICATION = 0x0810;
-    CMD_SNIFF_SUB_RATE = 0x0811;
-    // Host controller baseband commands 0x0C00
-    CMD_SET_EVENT_MASK = 0x0C01;
-    CMD_RESET = 0x0C03;
-    CMD_SET_EVENT_FILTER = 0x0C05;
-    CMD_FLUSH = 0x0C08;
-    CMD_READ_PIN_TYPE = 0x0C09;
-    CMD_WRITE_PIN_TYPE = 0x0C0A;
-    CMD_CREATE_NEW_UNIT_KEY = 0x0C0B;
-    CMD_GET_MWS_TRANS_LAYER_CFG = 0x0C0C; // Deprecated (not used in spec)
-    CMD_READ_STORED_LINK_KEY = 0x0C0D;
-    CMD_WRITE_STORED_LINK_KEY = 0x0C11;
-    CMD_DELETE_STORED_LINK_KEY = 0x0C12;
-    CMD_CHANGE_LOCAL_NAME = 0x0C13;
-    CMD_READ_LOCAL_NAME = 0x0C14;
-    CMD_READ_CONN_ACCEPT_TOUT = 0x0C15;
-    CMD_WRITE_CONN_ACCEPT_TOUT = 0x0C16;
-    CMD_READ_PAGE_TOUT = 0x0C17;
-    CMD_WRITE_PAGE_TOUT = 0x0C18;
-    CMD_READ_SCAN_ENABLE = 0x0C19;
-    CMD_WRITE_SCAN_ENABLE = 0x0C1A;
-    CMD_READ_PAGESCAN_CFG = 0x0C1B;
-    CMD_WRITE_PAGESCAN_CFG = 0x0C1C;
-    CMD_READ_INQUIRYSCAN_CFG = 0x0C1D;
-    CMD_WRITE_INQUIRYSCAN_CFG = 0x0C1E;
-    CMD_READ_AUTHENTICATION_ENABLE = 0x0C1F;
-    CMD_WRITE_AUTHENTICATION_ENABLE = 0x0C20;
-    CMD_READ_ENCRYPTION_MODE = 0x0C21; // Deprecated
-    CMD_WRITE_ENCRYPTION_MODE = 0x0C22; // Deprecated
-    CMD_READ_CLASS_OF_DEVICE = 0x0C23;
-    CMD_WRITE_CLASS_OF_DEVICE = 0x0C24;
-    CMD_READ_VOICE_SETTINGS = 0x0C25;
-    CMD_WRITE_VOICE_SETTINGS = 0x0C26;
-    CMD_READ_AUTOMATIC_FLUSH_TIMEOUT = 0x0C27;
-    CMD_WRITE_AUTOMATIC_FLUSH_TIMEOUT = 0x0C28;
-    CMD_READ_NUM_BCAST_REXMITS = 0x0C29;
-    CMD_WRITE_NUM_BCAST_REXMITS = 0x0C2A;
-    CMD_READ_HOLD_MODE_ACTIVITY = 0x0C2B;
-    CMD_WRITE_HOLD_MODE_ACTIVITY = 0x0C2C;
-    CMD_READ_TRANSMIT_POWER_LEVEL = 0x0C2D;
-    CMD_READ_SCO_FLOW_CTRL_ENABLE = 0x0C2E;
-    CMD_WRITE_SCO_FLOW_CTRL_ENABLE = 0x0C2F;
-    CMD_SET_HC_TO_HOST_FLOW_CTRL = 0x0C31;
-    CMD_HOST_BUFFER_SIZE = 0x0C33;
-    CMD_HOST_NUM_PACKETS_DONE = 0x0C35;
-    CMD_READ_LINK_SUPER_TOUT = 0x0C36;
-    CMD_WRITE_LINK_SUPER_TOUT = 0x0C37;
-    CMD_READ_NUM_SUPPORTED_IAC = 0x0C38;
-    CMD_READ_CURRENT_IAC_LAP = 0x0C39;
-    CMD_WRITE_CURRENT_IAC_LAP = 0x0C3A;
-    CMD_READ_PAGESCAN_PERIOD_MODE = 0x0C3B; // Deprecated
-    CMD_WRITE_PAGESCAN_PERIOD_MODE = 0x0C3C; // Deprecated
-    CMD_READ_PAGESCAN_MODE = 0x0C3D; // Deprecated
-    CMD_WRITE_PAGESCAN_MODE = 0x0C3E; // Deprecated
-    CMD_SET_AFH_CHANNELS = 0x0C3F;
-    CMD_READ_INQSCAN_TYPE = 0x0C42;
-    CMD_WRITE_INQSCAN_TYPE = 0x0C43;
-    CMD_READ_INQUIRY_MODE = 0x0C44;
-    CMD_WRITE_INQUIRY_MODE = 0x0C45;
-    CMD_READ_PAGESCAN_TYPE = 0x0C46;
-    CMD_WRITE_PAGESCAN_TYPE = 0x0C47;
-    CMD_READ_AFH_ASSESSMENT_MODE = 0x0C48;
-    CMD_WRITE_AFH_ASSESSMENT_MODE = 0x0C49;
-    CMD_READ_EXT_INQ_RESPONSE = 0x0C51;
-    CMD_WRITE_EXT_INQ_RESPONSE = 0x0C52;
-    CMD_REFRESH_ENCRYPTION_KEY = 0x0C53;
-    CMD_READ_SIMPLE_PAIRING_MODE = 0x0C55;
-    CMD_WRITE_SIMPLE_PAIRING_MODE = 0x0C56;
-    CMD_READ_LOCAL_OOB_DATA = 0x0C57;
-    CMD_READ_INQ_TX_POWER_LEVEL = 0x0C58;
-    CMD_WRITE_INQ_TX_POWER_LEVEL = 0x0C59;
-    CMD_READ_ERRONEOUS_DATA_RPT = 0x0C5A;
-    CMD_WRITE_ERRONEOUS_DATA_RPT = 0x0C5B;
-    CMD_ENHANCED_FLUSH = 0x0C5F;
-    CMD_SEND_KEYPRESS_NOTIF = 0x0C60;
-    CMD_READ_LOGICAL_LINK_ACCEPT_TIMEOUT = 0x0C61;
-    CMD_WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT = 0x0C62;
-    CMD_SET_EVENT_MASK_PAGE_2 = 0x0C63;
-    CMD_READ_LOCATION_DATA = 0x0C64;
-    CMD_WRITE_LOCATION_DATA = 0x0C65;
-    CMD_READ_FLOW_CONTROL_MODE = 0x0C66;
-    CMD_WRITE_FLOW_CONTROL_MODE = 0x0C67;
-    CMD_READ_ENHANCED_TX_PWR_LEVEL = 0x0C68; // Not currently used in system/bt
-    CMD_READ_BE_FLUSH_TOUT = 0x0C69;
-    CMD_WRITE_BE_FLUSH_TOUT = 0x0C6A;
-    CMD_SHORT_RANGE_MODE = 0x0C6B;
-    CMD_READ_BLE_HOST_SUPPORT = 0x0C6C;
-    CMD_WRITE_BLE_HOST_SUPPORT = 0x0C6D;
-    CMD_SET_MWS_CHANNEL_PARAMETERS = 0x0C6E;
-    CMD_SET_EXTERNAL_FRAME_CONFIGURATION = 0x0C6F;
-    CMD_SET_MWS_SIGNALING = 0x0C70;
-    CMD_SET_MWS_TRANSPORT_LAYER = 0x0C71;
-    CMD_SET_MWS_SCAN_FREQUENCY_TABLE = 0x0C72;
-    CMD_SET_MWS_PATTERN_CONFIGURATION = 0x0C73;
-    CMD_SET_RESERVED_LT_ADDR = 0x0C74;
-    CMD_DELETE_RESERVED_LT_ADDR = 0x0C75;
-    CMD_WRITE_CLB_DATA = 0x0C76;
-    CMD_READ_SYNC_TRAIN_PARAM = 0x0C77;
-    CMD_WRITE_SYNC_TRAIN_PARAM = 0x0C78;
-    CMD_READ_SECURE_CONNS_SUPPORT = 0x0C79;
-    CMD_WRITE_SECURE_CONNS_SUPPORT = 0x0C7A;
-    CMD_READ_AUTHED_PAYLOAD_TIMEOUT = 0x0C7B; // Not currently used in system/bt
-    CMD_WRITE_AUTHED_PAYLOAD_TIMEOUT = 0x0C7C; // Not currently used in system/bt
-    CMD_READ_LOCAL_OOB_EXTENDED_DATA = 0x0C7D; // Not currently used in system/bt
-    CMD_READ_EXTENDED_PAGE_TIMEOUT = 0x0C7E; // Not currently used in system/bt
-    CMD_WRITE_EXTENDED_PAGE_TIMEOUT = 0x0C7F; // Not currently used in system/bt
-    CMD_READ_EXTENDED_INQUIRY_LENGTH = 0x0C80; // Not currently used in system/bt
-    CMD_WRITE_EXTENDED_INQUIRY_LENGTH = 0x0C81; // Not currently used in system/bt
-    // Informational parameter commands 0x1000
-    CMD_READ_LOCAL_VERSION_INFO = 0x1001;
-    CMD_READ_LOCAL_SUPPORTED_CMDS = 0x1002;
-    CMD_READ_LOCAL_FEATURES = 0x1003;
-    CMD_READ_LOCAL_EXT_FEATURES = 0x1004;
-    CMD_READ_BUFFER_SIZE = 0x1005;
-    CMD_READ_COUNTRY_CODE = 0x1007; // Deprecated
-    CMD_READ_BD_ADDR = 0x1009;
-    CMD_READ_DATA_BLOCK_SIZE = 0x100A;
-    CMD_READ_LOCAL_SUPPORTED_CODECS = 0x100B;
-    // Status parameter commands 0x1400
-    CMD_READ_FAILED_CONTACT_COUNTER = 0x1401;
-    CMD_RESET_FAILED_CONTACT_COUNTER = 0x1402;
-    CMD_GET_LINK_QUALITY = 0x1403;
-    CMD_READ_RSSI = 0x1405;
-    CMD_READ_AFH_CH_MAP = 0x1406;
-    CMD_READ_CLOCK = 0x1407;
-    CMD_READ_ENCR_KEY_SIZE = 0x1408;
-    CMD_READ_LOCAL_AMP_INFO = 0x1409;
-    CMD_READ_LOCAL_AMP_ASSOC = 0x140A;
-    CMD_WRITE_REMOTE_AMP_ASSOC = 0x140B;
-    CMD_GET_MWS_TRANSPORT_CFG = 0x140C; // Not currently used in system/bt
-    CMD_SET_TRIGGERED_CLK_CAPTURE = 0x140D; // Not currently used in system/bt
-    // Testing commands 0x1800
-    CMD_READ_LOOPBACK_MODE = 0x1801;
-    CMD_WRITE_LOOPBACK_MODE = 0x1802;
-    CMD_ENABLE_DEV_UNDER_TEST_MODE = 0x1803;
-    CMD_WRITE_SIMP_PAIR_DEBUG_MODE = 0x1804;
-    CMD_ENABLE_AMP_RCVR_REPORTS = 0x1807;
-    CMD_AMP_TEST_END = 0x1808;
-    CMD_AMP_TEST = 0x1809;
-    CMD_WRITE_SECURE_CONN_TEST_MODE = 0x180A; // Not currently used in system/bt
-    // BLE commands 0x2000
-    CMD_BLE_SET_EVENT_MASK = 0x2001;
-    CMD_BLE_READ_BUFFER_SIZE = 0x2002;
-    CMD_BLE_READ_LOCAL_SPT_FEAT = 0x2003;
-    CMD_BLE_WRITE_LOCAL_SPT_FEAT = 0x2004;
-    CMD_BLE_WRITE_RANDOM_ADDR = 0x2005;
-    CMD_BLE_WRITE_ADV_PARAMS = 0x2006;
-    CMD_BLE_READ_ADV_CHNL_TX_POWER = 0x2007;
-    CMD_BLE_WRITE_ADV_DATA = 0x2008;
-    CMD_BLE_WRITE_SCAN_RSP_DATA = 0x2009;
-    CMD_BLE_WRITE_ADV_ENABLE = 0x200A;
-    CMD_BLE_WRITE_SCAN_PARAMS = 0x200B;
-    CMD_BLE_WRITE_SCAN_ENABLE = 0x200C;
-    CMD_BLE_CREATE_LL_CONN = 0x200D;
-    CMD_BLE_CREATE_CONN_CANCEL = 0x200E;
-    CMD_BLE_READ_WHITE_LIST_SIZE = 0x200F;
-    CMD_BLE_CLEAR_WHITE_LIST = 0x2010;
-    CMD_BLE_ADD_WHITE_LIST = 0x2011;
-    CMD_BLE_REMOVE_WHITE_LIST = 0x2012;
-    CMD_BLE_UPD_LL_CONN_PARAMS = 0x2013;
-    CMD_BLE_SET_HOST_CHNL_CLASS = 0x2014;
-    CMD_BLE_READ_CHNL_MAP = 0x2015;
-    CMD_BLE_READ_REMOTE_FEAT = 0x2016;
-    CMD_BLE_ENCRYPT = 0x2017;
-    CMD_BLE_RAND = 0x2018;
-    CMD_BLE_START_ENC = 0x2019;
-    CMD_BLE_LTK_REQ_REPLY = 0x201A;
-    CMD_BLE_LTK_REQ_NEG_REPLY = 0x201B;
-    CMD_BLE_READ_SUPPORTED_STATES = 0x201C;
-    CMD_BLE_RECEIVER_TEST = 0x201D;
-    CMD_BLE_TRANSMITTER_TEST = 0x201E;
-    CMD_BLE_TEST_END = 0x201F;
-    CMD_BLE_RC_PARAM_REQ_REPLY = 0x2020;
-    CMD_BLE_RC_PARAM_REQ_NEG_REPLY = 0x2021;
-    CMD_BLE_SET_DATA_LENGTH = 0x2022;
-    CMD_BLE_READ_DEFAULT_DATA_LENGTH = 0x2023;
-    CMD_BLE_WRITE_DEFAULT_DATA_LENGTH = 0x2024;
-    CMD_BLE_GENERATE_DHKEY = 0x2026; // Not currently used in system/bt
-    CMD_BLE_ADD_DEV_RESOLVING_LIST = 0x2027;
-    CMD_BLE_RM_DEV_RESOLVING_LIST = 0x2028;
-    CMD_BLE_CLEAR_RESOLVING_LIST = 0x2029;
-    CMD_BLE_READ_RESOLVING_LIST_SIZE = 0x202A;
-    CMD_BLE_READ_RESOLVABLE_ADDR_PEER = 0x202B;
-    CMD_BLE_READ_RESOLVABLE_ADDR_LOCAL = 0x202C;
-    CMD_BLE_SET_ADDR_RESOLUTION_ENABLE = 0x202D;
-    CMD_BLE_SET_RAND_PRIV_ADDR_TIMOUT = 0x202E;
-    CMD_BLE_READ_MAXIMUM_DATA_LENGTH = 0x202F;
-    CMD_BLE_READ_PHY = 0x2030;
-    CMD_BLE_SET_DEFAULT_PHY = 0x2031;
-    CMD_BLE_SET_PHY = 0x2032;
-    CMD_BLE_ENH_RECEIVER_TEST = 0x2033;
-    CMD_BLE_ENH_TRANSMITTER_TEST = 0x2034;
-    CMD_BLE_SET_EXT_ADVERTISING_RANDOM_ADDRESS = 0x2035;
-    CMD_BLE_SET_EXT_ADVERTISING_PARAM = 0x2036;
-    CMD_BLE_SET_EXT_ADVERTISING_DATA = 0x2037;
-    CMD_BLE_SET_EXT_ADVERTISING_SCAN_RESP = 0x2038;
-    CMD_BLE_SET_EXT_ADVERTISING_ENABLE = 0x2039;
-    CMD_BLE_READ_MAXIMUM_ADVERTISING_DATA_LENGTH = 0x203A;
-    CMD_BLE_READ_NUMBER_OF_SUPPORTED_ADVERTISING_SETS = 0x203B;
-    CMD_BLE_REMOVE_ADVERTISING_SET = 0x203C;
-    CMD_BLE_CLEAR_ADVERTISING_SETS = 0x203D;
-    CMD_BLE_SET_PERIODIC_ADVERTISING_PARAM = 0x203E;
-    CMD_BLE_SET_PERIODIC_ADVERTISING_DATA = 0x203F;
-    CMD_BLE_SET_PERIODIC_ADVERTISING_ENABLE = 0x2040;
-    CMD_BLE_SET_EXTENDED_SCAN_PARAMETERS = 0x2041;
-    CMD_BLE_SET_EXTENDED_SCAN_ENABLE = 0x2042;
-    CMD_BLE_EXTENDED_CREATE_CONNECTION = 0x2043;
-    CMD_BLE_PERIODIC_ADVERTISING_CREATE_SYNC = 0x2044;
-    CMD_BLE_PERIODIC_ADVERTISING_CREATE_SYNC_CANCEL = 0x2045;
-    CMD_BLE_PERIODIC_ADVERTISING_TERMINATE_SYNC = 0x2046;
-    CMD_BLE_ADD_DEVICE_TO_PERIODIC_ADVERTISING_LIST = 0x2047;
-    CMD_BLE_RM_DEVICE_FROM_PERIODIC_ADVERTISING_LIST = 0x2048;
-    CMD_BLE_CLEAR_PERIODIC_ADVERTISING_LIST = 0x2049;
-    CMD_BLE_READ_PERIODIC_ADVERTISING_LIST_SIZE = 0x204A;
-    CMD_BLE_READ_TRANSMIT_POWER = 0x204B;
-    CMD_BLE_READ_RF_COMPENS_POWER = 0x204C;
-    CMD_BLE_WRITE_RF_COMPENS_POWER = 0x204D;
-    CMD_BLE_SET_PRIVACY_MODE = 0x204E;
-    // Vendor specific commands 0xFC00 and above
-    // Android vendor specific commands defined in
-    // https://source.android.com/devices/bluetooth/hci_requirements#vendor-specific-capabilities
-    CMD_BLE_VENDOR_CAP = 0xFD53;
-    CMD_BLE_MULTI_ADV = 0xFD54;
-    CMD_BLE_BATCH_SCAN = 0xFD56;
-    CMD_BLE_ADV_FILTER = 0xFD57;
-    CMD_BLE_TRACK_ADV = 0xFD58;
-    CMD_BLE_ENERGY_INFO = 0xFD59;
-    CMD_BLE_EXTENDED_SCAN_PARAMS = 0xFD5A;
-    CMD_CONTROLLER_DEBUG_INFO = 0xFD5B;
-    CMD_CONTROLLER_A2DP_OPCODE = 0xFD5D;
-    CMD_BRCM_SET_ACL_PRIORITY = 0xFC57;
-    // Other vendor specific commands below here
-}
-
-// HCI event codes from the Bluetooth 5.0 specification Vol 2, Part 7, Section 7
-// Original definition: system/bt/stack/include/hcidefs.h
-enum EventEnum {
-    // Event is at most 1 byte (0xFF), thus 0xFFF must not be a valid value
-    EVT_UNKNOWN = 0xFFF;
-    EVT_INQUIRY_COMP = 0x01;
-    EVT_INQUIRY_RESULT = 0x02;
-    EVT_CONNECTION_COMP = 0x03;
-    EVT_CONNECTION_REQUEST = 0x04;
-    EVT_DISCONNECTION_COMP = 0x05;
-    EVT_AUTHENTICATION_COMP = 0x06;
-    EVT_RMT_NAME_REQUEST_COMP = 0x07;
-    EVT_ENCRYPTION_CHANGE = 0x08;
-    EVT_CHANGE_CONN_LINK_KEY = 0x09;
-    EVT_MASTER_LINK_KEY_COMP = 0x0A;
-    EVT_READ_RMT_FEATURES_COMP = 0x0B;
-    EVT_READ_RMT_VERSION_COMP = 0x0C;
-    EVT_QOS_SETUP_COMP = 0x0D;
-    EVT_COMMAND_COMPLETE = 0x0E;
-    EVT_COMMAND_STATUS = 0x0F;
-    EVT_HARDWARE_ERROR = 0x10;
-    EVT_FLUSH_OCCURRED = 0x11;
-    EVT_ROLE_CHANGE = 0x12;
-    EVT_NUM_COMPL_DATA_PKTS = 0x13;
-    EVT_MODE_CHANGE = 0x14;
-    EVT_RETURN_LINK_KEYS = 0x15;
-    EVT_PIN_CODE_REQUEST = 0x16;
-    EVT_LINK_KEY_REQUEST = 0x17;
-    EVT_LINK_KEY_NOTIFICATION = 0x18;
-    EVT_LOOPBACK_COMMAND = 0x19;
-    EVT_DATA_BUF_OVERFLOW = 0x1A;
-    EVT_MAX_SLOTS_CHANGED = 0x1B;
-    EVT_READ_CLOCK_OFF_COMP = 0x1C;
-    EVT_CONN_PKT_TYPE_CHANGE = 0x1D;
-    EVT_QOS_VIOLATION = 0x1E;
-    EVT_PAGE_SCAN_MODE_CHANGE = 0x1F; // Deprecated
-    EVT_PAGE_SCAN_REP_MODE_CHNG = 0x20;
-    EVT_FLOW_SPECIFICATION_COMP = 0x21;
-    EVT_INQUIRY_RSSI_RESULT = 0x22;
-    EVT_READ_RMT_EXT_FEATURES_COMP = 0x23;
-    EVT_ESCO_CONNECTION_COMP = 0x2C;
-    EVT_ESCO_CONNECTION_CHANGED = 0x2D;
-    EVT_SNIFF_SUB_RATE = 0x2E;
-    EVT_EXTENDED_INQUIRY_RESULT = 0x2F;
-    EVT_ENCRYPTION_KEY_REFRESH_COMP = 0x30;
-    EVT_IO_CAPABILITY_REQUEST = 0x31;
-    EVT_IO_CAPABILITY_RESPONSE = 0x32;
-    EVT_USER_CONFIRMATION_REQUEST = 0x33;
-    EVT_USER_PASSKEY_REQUEST = 0x34;
-    EVT_REMOTE_OOB_DATA_REQUEST = 0x35;
-    EVT_SIMPLE_PAIRING_COMPLETE = 0x36;
-    EVT_LINK_SUPER_TOUT_CHANGED = 0x38;
-    EVT_ENHANCED_FLUSH_COMPLETE = 0x39;
-    EVT_USER_PASSKEY_NOTIFY = 0x3B;
-    EVT_KEYPRESS_NOTIFY = 0x3C;
-    EVT_RMT_HOST_SUP_FEAT_NOTIFY = 0x3D;
-    EVT_BLE_META = 0x3E;
-    EVT_PHYSICAL_LINK_COMP = 0x40;
-    EVT_CHANNEL_SELECTED = 0x41;
-    EVT_DISC_PHYSICAL_LINK_COMP = 0x42;
-    EVT_PHY_LINK_LOSS_EARLY_WARNING = 0x43;
-    EVT_PHY_LINK_RECOVERY = 0x44;
-    EVT_LOGICAL_LINK_COMP = 0x45;
-    EVT_DISC_LOGICAL_LINK_COMP = 0x46;
-    EVT_FLOW_SPEC_MODIFY_COMP = 0x47;
-    EVT_NUM_COMPL_DATA_BLOCKS = 0x48;
-    EVT_AMP_TEST_START = 0x49; // Not currently used in system/bt
-    EVT_AMP_TEST_END = 0x4A; // Not currently used in system/bt
-    EVT_AMP_RECEIVER_RPT = 0x4B; // Not currently used in system/bt
-    EVT_SHORT_RANGE_MODE_COMPLETE = 0x4C;
-    EVT_AMP_STATUS_CHANGE = 0x4D;
-    EVT_SET_TRIGGERED_CLOCK_CAPTURE = 0x4E;
-    EVT_SYNC_TRAIN_CMPL = 0x4F; // Not currently used in system/bt
-    EVT_SYNC_TRAIN_RCVD = 0x50; // Not currently used in system/bt
-    EVT_CONNLESS_SLAVE_BROADCAST_RCVD = 0x51; // Not currently used in system/bt
-    EVT_CONNLESS_SLAVE_BROADCAST_TIMEOUT = 0x52; // Not currently used in system/bt
-    EVT_TRUNCATED_PAGE_CMPL = 0x53; // Not currently used in system/bt
-    EVT_SLAVE_PAGE_RES_TIMEOUT = 0x54; // Not currently used in system/bt
-    EVT_CONNLESS_SLAVE_BROADCAST_CHNL_MAP_CHANGE = 0x55; // Not currently used in system/bt
-    EVT_INQUIRY_RES_NOTIFICATION = 0x56; // Not currently used in system/bt
-    EVT_AUTHED_PAYLOAD_TIMEOUT = 0x57; // Not currently used in system/bt
-    EVT_SAM_STATUS_CHANGE = 0x58; // Not currently used in system/bt
-}
-
-// Bluetooth low energy related meta event codes
-// from the Bluetooth 5.0 specification Vol 2, Part E, Section 7.7.65
-// Original definition: system/bt/stack/include/hcidefs.h
-enum BleMetaEventEnum {
-    // BLE meta event code is at most 1 byte (0xFF), thus 0xFFF must not be a valid value
-    BLE_EVT_UNKNOWN = 0xFFF;
-    BLE_EVT_CONN_COMPLETE_EVT = 0x01;
-    BLE_EVT_ADV_PKT_RPT_EVT = 0x02;
-    BLE_EVT_LL_CONN_PARAM_UPD_EVT = 0x03;
-    BLE_EVT_READ_REMOTE_FEAT_CMPL_EVT = 0x04;
-    BLE_EVT_LTK_REQ_EVT = 0x05;
-    BLE_EVT_RC_PARAM_REQ_EVT = 0x06;
-    BLE_EVT_DATA_LENGTH_CHANGE_EVT = 0x07;
-    BLE_EVT_READ_LOCAL_P256_PUB_KEY = 0x08; // Not currently used in system/bt
-    BLE_EVT_GEN_DHKEY_CMPL = 0x09; // Not currently used in system/bt
-    BLE_EVT_ENHANCED_CONN_COMPLETE_EVT = 0x0a;
-    BLE_EVT_DIRECT_ADV_EVT = 0x0b;
-    BLE_EVT_PHY_UPDATE_COMPLETE_EVT = 0x0c;
-    BLE_EVT_EXTENDED_ADVERTISING_REPORT_EVT = 0x0D;
-    BLE_EVT_PERIODIC_ADV_SYNC_EST_EVT = 0x0E;
-    BLE_EVT_PERIODIC_ADV_REPORT_EVT = 0x0F;
-    BLE_EVT_PERIODIC_ADV_SYNC_LOST_EVT = 0x10;
-    BLE_EVT_SCAN_TIMEOUT_EVT = 0x11;
-    BLE_EVT_ADVERTISING_SET_TERMINATED_EVT = 0x12;
-    BLE_EVT_SCAN_REQ_RX_EVT = 0x13;
-    BLE_EVT_CHNL_SELECTION_ALGORITHM = 0x14; // Not currently used in system/bt
-}
-
-// HCI status code from the Bluetooth 5.0 specification Vol 2, Part D.
-// Original definition: system/bt/stack/include/hcidefs.h
-enum StatusEnum {
-    // Status is at most 1 byte (0xFF), thus 0xFFF must not be a valid value
-    STATUS_UNKNOWN = 0xFFF;
-    STATUS_SUCCESS = 0x00;
-    STATUS_ILLEGAL_COMMAND = 0x01;
-    STATUS_NO_CONNECTION = 0x02;
-    STATUS_HW_FAILURE = 0x03;
-    STATUS_PAGE_TIMEOUT = 0x04;
-    STATUS_AUTH_FAILURE = 0x05;
-    STATUS_KEY_MISSING = 0x06;
-    STATUS_MEMORY_FULL = 0x07;
-    STATUS_CONNECTION_TOUT = 0x08;
-    STATUS_MAX_NUM_OF_CONNECTIONS = 0x09;
-    STATUS_MAX_NUM_OF_SCOS = 0x0A;
-    STATUS_CONNECTION_EXISTS = 0x0B;
-    STATUS_COMMAND_DISALLOWED = 0x0C;
-    STATUS_HOST_REJECT_RESOURCES = 0x0D;
-    STATUS_HOST_REJECT_SECURITY = 0x0E;
-    STATUS_HOST_REJECT_DEVICE = 0x0F;
-    STATUS_HOST_TIMEOUT = 0x10;
-    STATUS_UNSUPPORTED_VALUE = 0x11;
-    STATUS_ILLEGAL_PARAMETER_FMT = 0x12;
-    STATUS_PEER_USER = 0x13;
-    STATUS_PEER_LOW_RESOURCES = 0x14;
-    STATUS_PEER_POWER_OFF = 0x15;
-    STATUS_CONN_CAUSE_LOCAL_HOST = 0x16;
-    STATUS_REPEATED_ATTEMPTS = 0x17;
-    STATUS_PAIRING_NOT_ALLOWED = 0x18;
-    STATUS_UNKNOWN_LMP_PDU = 0x19;
-    STATUS_UNSUPPORTED_REM_FEATURE = 0x1A;
-    STATUS_SCO_OFFSET_REJECTED = 0x1B;
-    STATUS_SCO_INTERVAL_REJECTED = 0x1C;
-    STATUS_SCO_AIR_MODE = 0x1D;
-    STATUS_INVALID_LMP_PARAM = 0x1E;
-    STATUS_UNSPECIFIED = 0x1F;
-    STATUS_UNSUPPORTED_LMP_FEATURE = 0x20;
-    STATUS_ROLE_CHANGE_NOT_ALLOWED = 0x21;
-    STATUS_LMP_RESPONSE_TIMEOUT = 0x22;
-    STATUS_LMP_STATUS_TRANS_COLLISION = 0x23;
-    STATUS_LMP_PDU_NOT_ALLOWED = 0x24;
-    STATUS_ENCRY_MODE_NOT_ACCEPTABLE = 0x25;
-    STATUS_UNIT_KEY_USED = 0x26;
-    STATUS_QOS_NOT_SUPPORTED = 0x27;
-    STATUS_INSTANT_PASSED = 0x28;
-    STATUS_PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED = 0x29;
-    STATUS_DIFF_TRANSACTION_COLLISION = 0x2A;
-    STATUS_UNDEFINED_0x2B = 0x2B; // Not used
-    STATUS_QOS_UNACCEPTABLE_PARAM = 0x2C;
-    STATUS_QOS_REJECTED = 0x2D;
-    STATUS_CHAN_CLASSIF_NOT_SUPPORTED = 0x2E;
-    STATUS_INSUFFCIENT_SECURITY = 0x2F;
-    STATUS_PARAM_OUT_OF_RANGE = 0x30;
-    STATUS_UNDEFINED_0x31 = 0x31; // Not used
-    STATUS_ROLE_SWITCH_PENDING = 0x32;
-    STATUS_UNDEFINED_0x33 = 0x33;
-    STATUS_RESERVED_SLOT_VIOLATION = 0x34;
-    STATUS_ROLE_SWITCH_FAILED = 0x35;
-    STATUS_INQ_RSP_DATA_TOO_LARGE = 0x36;
-    STATUS_SIMPLE_PAIRING_NOT_SUPPORTED = 0x37;
-    STATUS_HOST_BUSY_PAIRING = 0x38;
-    STATUS_REJ_NO_SUITABLE_CHANNEL = 0x39;
-    STATUS_CONTROLLER_BUSY = 0x3A;
-    STATUS_UNACCEPT_CONN_INTERVAL = 0x3B;
-    STATUS_ADVERTISING_TIMEOUT = 0x3C;
-    STATUS_CONN_TOUT_DUE_TO_MIC_FAILURE = 0x3D;
-    STATUS_CONN_FAILED_ESTABLISHMENT = 0x3E;
-    STATUS_MAC_CONNECTION_FAILED = 0x3F;
-    STATUS_LT_ADDR_ALREADY_IN_USE = 0x40;
-    STATUS_LT_ADDR_NOT_ALLOCATED = 0x41;
-    STATUS_CLB_NOT_ENABLED = 0x42;
-    STATUS_CLB_DATA_TOO_BIG = 0x43;
-    STATUS_OPERATION_CANCELED_BY_HOST = 0x44; // Not currently used in system/bt
-}
-
-enum BqrIdEnum {
-    BQR_ID_UNKNOWN = 0x00;
-    BQR_ID_MONITOR_MODE = 0x01;
-    BQR_ID_APPROACH_LSTO = 0x02;
-    BQR_ID_A2DP_AUDIO_CHOPPY = 0x03;
-    BQR_ID_SCO_VOICE_CHOPPY = 0x04;
-}
-
-enum BqrPacketTypeEnum {
-    BQR_PACKET_TYPE_UNKNOWN = 0x00;
-    BQR_PACKET_TYPE_ID = 0x01;
-    BQR_PACKET_TYPE_NULL = 0x02;
-    BQR_PACKET_TYPE_POLL = 0x03;
-    BQR_PACKET_TYPE_FHS = 0x04;
-    BQR_PACKET_TYPE_HV1 = 0x05;
-    BQR_PACKET_TYPE_HV2 = 0x06;
-    BQR_PACKET_TYPE_HV3 = 0x07;
-    BQR_PACKET_TYPE_DV = 0x08;
-    BQR_PACKET_TYPE_EV3 = 0x09;
-    BQR_PACKET_TYPE_EV4 = 0x0A;
-    BQR_PACKET_TYPE_EV5 = 0x0B;
-    BQR_PACKET_TYPE_2EV3 = 0x0C;
-    BQR_PACKET_TYPE_2EV5 = 0x0D;
-    BQR_PACKET_TYPE_3EV3 = 0x0E;
-    BQR_PACKET_TYPE_3EV5 = 0x0F;
-    BQR_PACKET_TYPE_DM1 = 0x10;
-    BQR_PACKET_TYPE_DH1 = 0x11;
-    BQR_PACKET_TYPE_DM3 = 0x12;
-    BQR_PACKET_TYPE_DH3 = 0x13;
-    BQR_PACKET_TYPE_DM5 = 0x14;
-    BQR_PACKET_TYPE_DH5 = 0x15;
-    BQR_PACKET_TYPE_AUX1 = 0x16;
-    BQR_PACKET_TYPE_2DH1 = 0x17;
-    BQR_PACKET_TYPE_2DH3 = 0x18;
-    BQR_PACKET_TYPE_2DH5 = 0x19;
-    BQR_PACKET_TYPE_3DH1 = 0x1A;
-    BQR_PACKET_TYPE_3DH3 = 0x1B;
-    BQR_PACKET_TYPE_3DH5 = 0x1C;
-}
diff --git a/core/proto/android/bluetooth/hfp/enums.proto b/core/proto/android/bluetooth/hfp/enums.proto
deleted file mode 100644
index d286e4b..0000000
--- a/core/proto/android/bluetooth/hfp/enums.proto
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-package android.bluetooth.hfp;
-
-option java_outer_classname = "BluetoothHfpProtoEnums";
-option java_multiple_files = true;
-
-enum ScoCodec {
-    SCO_CODEC_UNKNOWN = 0;
-    SCO_CODEC_CVSD = 1;
-    // Default codec behind Wide Band Speech
-    SCO_CODEC_MSBC = 2;
-}
\ No newline at end of file
diff --git a/core/proto/android/bluetooth/smp/enums.proto b/core/proto/android/bluetooth/smp/enums.proto
deleted file mode 100644
index c6747b7..0000000
--- a/core/proto/android/bluetooth/smp/enums.proto
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-package android.bluetooth.smp;
-
-option java_outer_classname = "BluetoothSmpProtoEnums";
-option java_multiple_files = true;
-
-// SMP Pairing command codes
-enum CommandEnum {
-    CMD_UNKNOWN = 0x00;
-    CMD_PAIRING_REQUEST = 0x01;
-    CMD_PAIRING_RESPONSE = 0x02;
-    CMD_PAIRING_CONFIRM = 0x03;
-    CMD_PAIRING_RANDOM = 0x04;
-    CMD_PAIRING_FAILED = 0x05;
-    CMD_ENCRYPTION_INFON = 0x06;
-    CMD_MASTER_IDENTIFICATION = 0x07;
-    CMD_IDENTITY_INFO = 0x08;
-    CMD_IDENTITY_ADDR_INFO = 0x09;
-    CMD_SIGNING_INFO = 0x0A;
-    CMD_SECURITY_REQUEST = 0x0B;
-    CMD_PAIRING_PUBLIC_KEY = 0x0C;
-    CMD_PAIRING_DHKEY_CHECK = 0x0D;
-    CMD_PAIRING_KEYPRESS_INFO = 0x0E;
-}
-
-enum PairingFailReasonEnum {
-    PAIRING_FAIL_REASON_RESERVED = 0x00;
-    PAIRING_FAIL_REASON_PASSKEY_ENTRY = 0x01;
-    PAIRING_FAIL_REASON_OOB = 0x02;
-    PAIRING_FAIL_REASON_AUTH_REQ = 0x03;
-    PAIRING_FAIL_REASON_CONFIRM_VALUE = 0x04;
-    PAIRING_FAIL_REASON_PAIR_NOT_SUPPORT = 0x05;
-    PAIRING_FAIL_REASON_ENC_KEY_SIZE = 0x06;
-    PAIRING_FAIL_REASON_INVALID_CMD = 0x07;
-    PAIRING_FAIL_REASON_UNSPECIFIED = 0x08;
-    PAIRING_FAIL_REASON_REPEATED_ATTEMPTS = 0x09;
-    PAIRING_FAIL_REASON_INVALID_PARAMETERS = 0x0A;
-    PAIRING_FAIL_REASON_DHKEY_CHK = 0x0B;
-    PAIRING_FAIL_REASON_NUMERIC_COMPARISON = 0x0C;
-    PAIRING_FAIL_REASON_CLASSIC_PAIRING_IN_PROGR = 0x0D;
-    PAIRING_FAIL_REASON_XTRANS_DERIVE_NOT_ALLOW = 0x0E;
-}
\ No newline at end of file
diff --git a/core/proto/android/debug/enums.proto b/core/proto/android/debug/enums.proto
deleted file mode 100644
index 6747bb7..0000000
--- a/core/proto/android/debug/enums.proto
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-package android.debug;
-
-option java_outer_classname = "AdbProtoEnums";
-option java_multiple_files = true;
-
-/**
- * adb connection state used to track adb connection changes in AdbDebuggingManager.java.
- */
-enum AdbConnectionStateEnum {
-    UNKNOWN = 0;
-
-    /**
-     * The adb connection is waiting for approval from the user.
-     */
-    AWAITING_USER_APPROVAL = 1;
-
-    /**
-     * The user allowed the adb connection from the system.
-     */
-    USER_ALLOWED = 2;
-
-    /**
-     * The user denied the adb connection from the system.
-     */
-    USER_DENIED = 3;
-
-    /**
-     * The adb connection was automatically allowed without user interaction due to the system
-     * being previously allowed by the user with the 'always allow' option selected, and the adb
-     * grant has not yet expired.
-     */
-    AUTOMATICALLY_ALLOWED = 4;
-
-    /**
-     * An empty or invalid base64 encoded key was provided to the framework; the connection was
-     * automatically denied.
-     */
-    DENIED_INVALID_KEY = 5;
-
-    /**
-     * vold decrypt has not yet occurred; the connection was automatically denied.
-     */
-    DENIED_VOLD_DECRYPT = 6;
-
-    /**
-     * The adb session has been disconnected.
-     */
-    DISCONNECTED = 7;
-}
-
diff --git a/core/proto/android/hardware/biometrics/enums.proto b/core/proto/android/hardware/biometrics/enums.proto
deleted file mode 100644
index f2e0638..0000000
--- a/core/proto/android/hardware/biometrics/enums.proto
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-
-package android.hardware.biometrics;
-
-option java_outer_classname = "BiometricsProtoEnums";
-option java_multiple_files = true;
-
-// Logging constants for <Biometric>Service and BiometricService
-
-enum ModalityEnum {
-    MODALITY_UNKNOWN = 0;
-    MODALITY_FINGERPRINT = 1;   // 1 << 0
-    MODALITY_IRIS = 2;          // 1 << 1
-    MODALITY_FACE = 4;          // 1 << 2
-}
-
-enum ClientEnum {
-    CLIENT_UNKNOWN = 0;
-    CLIENT_KEYGUARD = 1;
-    CLIENT_BIOMETRIC_PROMPT = 2;
-    CLIENT_FINGERPRINT_MANAGER = 3; // Deprecated API before BiometricPrompt was introduced
-}
-
-enum ActionEnum {
-    ACTION_UNKNOWN = 0;
-    ACTION_ENROLL = 1;
-    ACTION_AUTHENTICATE = 2;
-    ACTION_ENUMERATE = 3;
-    ACTION_REMOVE = 4;
-}
-
-enum IssueEnum {
-    ISSUE_UNKNOWN = 0;
-    // When a biometric HAL has crashed.
-    ISSUE_HAL_DEATH = 1;
-    // When Android Framework has a template that doesn't exist in the HAL. The framework
-    // is expected to remove its template to stay in sync with the HAL.
-    ISSUE_UNKNOWN_TEMPLATE_ENROLLED_FRAMEWORK = 2;
-    // When the HAL has a template that doesn't exist in Android Framework. The framework
-    // is expected to notify the HAL to remove this template to stay in sync with the framework.
-    ISSUE_UNKNOWN_TEMPLATE_ENROLLED_HAL = 3;
-    // When the HAL has not sent ERROR_CANCELED within the specified timeout.
-    ISSUE_CANCEL_TIMED_OUT = 4;
-}
\ No newline at end of file
diff --git a/core/proto/android/hardware/sensor/assist/enums.proto b/core/proto/android/hardware/sensor/assist/enums.proto
deleted file mode 100644
index 012dcb2..0000000
--- a/core/proto/android/hardware/sensor/assist/enums.proto
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-package android.hardware.sensor.assist;
-
-option java_outer_classname = "AssistGestureProtoEnums";
-option java_multiple_files = true;
-
-enum AssistGestureStageEnum {
-    ASSIST_GESTURE_STAGE_UNKNOWN = 0;
-    ASSIST_GESTURE_STAGE_PROGRESS = 1;
-    ASSIST_GESTURE_STAGE_PRIMED = 2;
-    ASSIST_GESTURE_STAGE_DETECTED = 3;
-}
-
-enum AssistGestureFeedbackEnum {
-    ASSIST_GESTURE_FEEDBACK_UNKNOWN = 0;
-    ASSIST_GESTURE_FEEDBACK_NOT_USED = 1;
-    ASSIST_GESTURE_FEEDBACK_USED = 2;
-}
\ No newline at end of file
diff --git a/core/proto/android/net/networkcapabilities.proto b/core/proto/android/net/networkcapabilities.proto
deleted file mode 100644
index be0cad1..0000000
--- a/core/proto/android/net/networkcapabilities.proto
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-
-package android.net;
-
-option java_multiple_files = true;
-
-import "frameworks/base/core/proto/android/privacy.proto";
-
-/**
- * An android.net.NetworkCapabilities object.
- */
-message NetworkCapabilitiesProto {
-    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    enum Transport {
-        // Indicates this network uses a Cellular transport.
-        TRANSPORT_CELLULAR = 0;
-        // Indicates this network uses a Wi-Fi transport.
-        TRANSPORT_WIFI = 1;
-        // Indicates this network uses a Bluetooth transport.
-        TRANSPORT_BLUETOOTH = 2;
-        // Indicates this network uses an Ethernet transport.
-        TRANSPORT_ETHERNET = 3;
-        // Indicates this network uses a VPN transport.
-        TRANSPORT_VPN = 4;
-        // Indicates this network uses a Wi-Fi Aware transport.
-        TRANSPORT_WIFI_AWARE = 5;
-        // Indicates this network uses a LoWPAN transport.
-        TRANSPORT_LOWPAN = 6;
-    }
-    repeated Transport transports = 1;
-
-    enum NetCapability {
-        // Indicates this is a network that has the ability to reach the
-        // carrier's MMSC for sending and receiving MMS messages.
-        NET_CAPABILITY_MMS = 0;
-        // Indicates this is a network that has the ability to reach the
-        // carrier's SUPL server, used to retrieve GPS information.
-        NET_CAPABILITY_SUPL = 1;
-        // Indicates this is a network that has the ability to reach the
-        // carrier's DUN or tethering gateway.
-        NET_CAPABILITY_DUN = 2;
-        // Indicates this is a network that has the ability to reach the
-        // carrier's FOTA portal, used for over the air updates.
-        NET_CAPABILITY_FOTA = 3;
-        // Indicates this is a network that has the ability to reach the
-        // carrier's IMS servers, used for network registration and signaling.
-        NET_CAPABILITY_IMS = 4;
-        // Indicates this is a network that has the ability to reach the
-        // carrier's CBS servers, used for carrier specific services.
-        NET_CAPABILITY_CBS = 5;
-        // Indicates this is a network that has the ability to reach a Wi-Fi
-        // direct peer.
-        NET_CAPABILITY_WIFI_P2P = 6;
-        // Indicates this is a network that has the ability to reach a carrier's
-        // Initial Attach servers.
-        NET_CAPABILITY_IA = 7;
-        // Indicates this is a network that has the ability to reach a carrier's
-        // RCS servers, used for Rich Communication Services.
-        NET_CAPABILITY_RCS = 8;
-        // Indicates this is a network that has the ability to reach a carrier's
-        // XCAP servers, used for configuration and control.
-        NET_CAPABILITY_XCAP = 9;
-        // Indicates this is a network that has the ability to reach a carrier's
-        // Emergency IMS servers or other services, used for network signaling
-        // during emergency calls.
-        NET_CAPABILITY_EIMS = 10;
-        // Indicates that this network is unmetered.
-        NET_CAPABILITY_NOT_METERED = 11;
-        // Indicates that this network should be able to reach the internet.
-        NET_CAPABILITY_INTERNET = 12;
-        // Indicates that this network is available for general use. If this is
-        // not set applications should not attempt to communicate on this
-        // network. Note that this is simply informative and not enforcement -
-        // enforcement is handled via other means. Set by default.
-        NET_CAPABILITY_NOT_RESTRICTED = 13;
-        // Indicates that the user has indicated implicit trust of this network.
-        // This generally means it's a sim-selected carrier, a plugged in
-        // ethernet, a paired BT device or a wifi the user asked to connect to.
-        // Untrusted networks are probably limited to unknown wifi AP. Set by
-        // default.
-        NET_CAPABILITY_TRUSTED = 14;
-        // Indicates that this network is not a VPN.  This capability is set by
-        // default and should be explicitly cleared for VPN networks.
-        NET_CAPABILITY_NOT_VPN = 15;
-        // Indicates that connectivity on this network was successfully
-        // validated. For example, for a network with NET_CAPABILITY_INTERNET,
-        // it means that Internet connectivity was successfully detected.
-        NET_CAPABILITY_VALIDATED = 16;
-        // Indicates that this network was found to have a captive portal in
-        // place last time it was probed.
-        NET_CAPABILITY_CAPTIVE_PORTAL = 17;
-        // Indicates that this network is not roaming.
-        NET_CAPABILITY_NOT_ROAMING = 18;
-        // Indicates that this network is available for use by apps, and not a
-        // network that is being kept up in the background to facilitate fast
-        // network switching.
-        NET_CAPABILITY_FOREGROUND = 19;
-    }
-    repeated NetCapability capabilities = 2;
-
-    // Passive link bandwidth. This is a rough guide of the expected peak
-    // bandwidth for the first hop on the given transport.  It is not measured,
-    // but may take into account link parameters (Radio technology, allocated
-    // channels, etc).
-    optional int32 link_up_bandwidth_kbps = 3;
-    optional int32 link_down_bandwidth_kbps = 4;
-
-    optional string network_specifier = 5 [ (.android.privacy).dest = DEST_EXPLICIT ];
-
-    // True if this object specifies a signal strength.
-    optional bool can_report_signal_strength = 6;
-    // This is a signed integer, and higher values indicate better signal. The
-    // exact units are bearer-dependent. For example, Wi-Fi uses RSSI.
-    // Only valid if can_report_signal_strength is true.
-    optional sint32 signal_strength = 7;
-}
diff --git a/core/proto/android/net/networkrequest.proto b/core/proto/android/net/networkrequest.proto
index b35a020..6794c8c 100644
--- a/core/proto/android/net/networkrequest.proto
+++ b/core/proto/android/net/networkrequest.proto
@@ -20,8 +20,8 @@
 
 option java_multiple_files = true;
 
-import "frameworks/base/core/proto/android/net/networkcapabilities.proto";
 import "frameworks/base/core/proto/android/privacy.proto";
+import "frameworks/proto_logging/stats/enums/net/networkcapabilities.proto";
 
 /**
  * An android.net.NetworkRequest object.
diff --git a/core/proto/android/os/batterystats.proto b/core/proto/android/os/batterystats.proto
index 892ebf7..7d68a0d 100644
--- a/core/proto/android/os/batterystats.proto
+++ b/core/proto/android/os/batterystats.proto
@@ -19,10 +19,10 @@
 
 package android.os;
 
-import "frameworks/base/core/proto/android/app/job/enums.proto";
 import "frameworks/base/core/proto/android/os/powermanager.proto";
-import "frameworks/base/core/proto/android/telephony/enums.proto";
 import "frameworks/base/core/proto/android/privacy.proto";
+import "frameworks/proto_logging/stats/enums/app/job/enums.proto";
+import "frameworks/proto_logging/stats/enums/telephony/enums.proto";
 
 message BatteryStatsProto {
     option (android.msg_privacy).dest = DEST_AUTOMATIC;
diff --git a/core/proto/android/os/enums.proto b/core/proto/android/os/enums.proto
deleted file mode 100644
index 566861b..0000000
--- a/core/proto/android/os/enums.proto
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-package android.os;
-
-option java_outer_classname = "OsProtoEnums";
-option java_multiple_files = true;
-
-// These constants are defined in hardware/interfaces/health/1.0/types.hal
-// They are primarily used by android/os/BatteryManager.java.
-enum BatteryHealthEnum {
-    BATTERY_HEALTH_INVALID = 0;
-    BATTERY_HEALTH_UNKNOWN = 1;
-    BATTERY_HEALTH_GOOD = 2;
-    BATTERY_HEALTH_OVERHEAT = 3;
-    BATTERY_HEALTH_DEAD = 4;
-    BATTERY_HEALTH_OVER_VOLTAGE = 5;
-    BATTERY_HEALTH_UNSPECIFIED_FAILURE = 6;
-    BATTERY_HEALTH_COLD = 7;
-}
-
-// Plug states, primarily used by android/os/BatteryManager.java.
-enum BatteryPluggedStateEnum {
-    // Note that NONE is not in BatteryManager.java's constants.
-    BATTERY_PLUGGED_NONE = 0;
-    // Power source is an AC charger.
-    BATTERY_PLUGGED_AC = 1;
-    // Power source is a USB port.
-    BATTERY_PLUGGED_USB = 2;
-    // Power source is wireless.
-    BATTERY_PLUGGED_WIRELESS = 4;
-}
-
-// These constants are defined in hardware/interfaces/health/1.0/types.hal
-// They are primarily used by android/os/BatteryManager.java.
-enum BatteryStatusEnum {
-    BATTERY_STATUS_INVALID = 0;
-    BATTERY_STATUS_UNKNOWN = 1;
-    BATTERY_STATUS_CHARGING = 2;
-    BATTERY_STATUS_DISCHARGING = 3;
-    BATTERY_STATUS_NOT_CHARGING = 4;
-    BATTERY_STATUS_FULL = 5;
-}
-
-// These constants are defined in hardware/interfaces/thermal/1.0/types.hal
-// and in hardware/interfaces/thermal/2.0/types.hal
-// They are primarily used by android/os/HardwarePropertiesManager.java.
-// Any change to the types in the thermal hal should be made here as well.
-enum TemperatureTypeEnum {
-    TEMPERATURE_TYPE_UNKNOWN = -1;
-    TEMPERATURE_TYPE_CPU = 0;
-    TEMPERATURE_TYPE_GPU = 1;
-    TEMPERATURE_TYPE_BATTERY = 2;
-    TEMPERATURE_TYPE_SKIN = 3;
-    TEMPERATURE_TYPE_USB_PORT = 4;
-    TEMPERATURE_TYPE_POWER_AMPLIFIER = 5;
-
-    // Battery Charge Limit - virtual thermal sensors.
-    TEMPERATURE_TYPE_BCL_VOLTAGE = 6;
-    TEMPERATURE_TYPE_BCL_CURRENT = 7;
-    TEMPERATURE_TYPE_BCL_PERCENTAGE = 8;
-
-    // Neural Processing Unit.
-    TEMPERATURE_TYPE_NPU = 9;
-}
-
-// Device throttling severity
-// These constants are defined in hardware/interfaces/thermal/2.0/types.hal.
-// Any change to the types in the thermal hal should be made here as well.
-enum ThrottlingSeverityEnum {
-    // Not under throttling.
-    NONE = 0;
-    // Light throttling where UX is not impacted.
-    LIGHT = 1;
-    // Moderate throttling where UX is not largely impacted.
-    MODERATE = 2;
-    // Severe throttling where UX is largely impacted.
-    // Similar to 1.0 throttlingThreshold.
-    SEVERE = 3;
-    // Platform has done everything to reduce power.
-    CRITICAL = 4;
-    // Key components in platform are shutting down due to thermal condition.
-    // Device functionalities will be limited.
-    EMERGENCY = 5;
-    // Need shutdown immediately.
-    SHUTDOWN = 6;
-};
-
-// Device cooling device types.
-// These constants are defined in hardware/interfaces/thermal/2.0/types.hal.
-// Any change to the types in the thermal hal should be made here as well.
-enum CoolingTypeEnum {
-    FAN = 0;
-    BATTERY = 1;
-    CPU = 2;
-    GPU = 3;
-    MODEM = 4;
-    NPU = 5;
-    COMPONENT = 6;
-};
-
-// Wakelock types, primarily used by android/os/PowerManager.java.
-enum WakeLockLevelEnum {
-    // NOTE: Wake lock levels were previously defined as a bit field, except
-    // that only a few combinations were actually supported so the bit field
-    // was removed. This explains why the numbering scheme is so odd. If
-    // adding a new wake lock level, any unused value can be used.
-
-    // Ensures that the CPU is running; the screen and keyboard backlight
-    // will be allowed to go off.
-    PARTIAL_WAKE_LOCK = 1;
-
-    // Ensures that the screen is on (but may be dimmed); the keyboard
-    // backlight will be allowed to go off. If the user presses the power
-    // button, then the SCREEN_DIM_WAKE_LOCK will be implicitly released by
-    // the system, causing both the screen and the CPU to be turned off.
-    SCREEN_DIM_WAKE_LOCK = 6 [deprecated = true];
-
-    // Ensures that the screen is on at full brightness; the keyboard
-    // backlight will be allowed to go off. If the user presses the power
-    // button, then the SCREEN_BRIGHT_WAKE_LOCK will be implicitly released
-    // by the system, causing both the screen and the CPU to be turned off.
-    SCREEN_BRIGHT_WAKE_LOCK = 10 [deprecated = true];
-
-    // Ensures that the screen and keyboard backlight are on at full
-    // brightness. If the user presses the power button, then the
-    // FULL_WAKE_LOCK will be implicitly released by the system, causing
-    // both the screen and the CPU to be turned off.
-    FULL_WAKE_LOCK = 26 [deprecated = true];
-
-    // Turns the screen off when the proximity sensor activates. If the
-    // proximity sensor detects that an object is nearby, the screen turns
-    // off immediately. Shortly after the object moves away, the screen
-    // turns on again.
-    // A proximity wake lock does not prevent the device from falling asleep
-    // unlike FULL_WAKE_LOCK, SCREEN_BRIGHT_WAKE_LOCK and
-    // SCREEN_DIM_WAKE_LOCK. If there is no user activity and no other wake
-    // locks are held, then the device will fall asleep (and lock) as usual.
-    // However, the device will not fall asleep while the screen has been
-    // turned off by the proximity sensor because it effectively counts as
-    // ongoing user activity.
-    PROXIMITY_SCREEN_OFF_WAKE_LOCK = 32;
-
-    // Put the screen in a low power state and allow the CPU to suspend if
-    // no other wake locks are held. This is used by the dream manager to
-    // implement doze mode. It currently has no effect unless the power
-    // manager is in the dozing state.
-    DOZE_WAKE_LOCK = 64;
-
-    // Keep the device awake enough to allow drawing to occur. This is used
-    // by the window manager to allow applications to draw while the system
-    // is dozing. It currently has no effect unless the power manager is in
-    // the dozing state.
-    DRAW_WAKE_LOCK = 128;
-}
diff --git a/core/proto/android/os/incident.proto b/core/proto/android/os/incident.proto
index 64cf75d..e97b1a8 100644
--- a/core/proto/android/os/incident.proto
+++ b/core/proto/android/os/incident.proto
@@ -55,13 +55,13 @@
 import "frameworks/base/core/proto/android/service/procstats.proto";
 import "frameworks/base/core/proto/android/service/restricted_image.proto";
 import "frameworks/base/core/proto/android/service/sensor_service.proto";
-import "frameworks/base/core/proto/android/service/usb.proto";
 import "frameworks/base/core/proto/android/util/event_log_tags.proto";
 import "frameworks/base/core/proto/android/util/log.proto";
 import "frameworks/base/core/proto/android/util/textdump.proto";
 import "frameworks/base/core/proto/android/privacy.proto";
 import "frameworks/base/core/proto/android/section.proto";
 import "frameworks/base/proto/src/ipconnectivity.proto";
+import "frameworks/proto_logging/stats/enums/service/usb.proto";
 
 package android.os;
 
diff --git a/core/proto/android/providers/settings/global.proto b/core/proto/android/providers/settings/global.proto
index 9bbe0ca..a80bb40 100644
--- a/core/proto/android/providers/settings/global.proto
+++ b/core/proto/android/providers/settings/global.proto
@@ -445,14 +445,14 @@
         // i.e. <pkg1>,<pkg2>,...,<pkgN>
         optional SettingProto game_driver_opt_out_apps = 10;
         // Game Driver - List of Apps that are forbidden to use Game Driver
-        optional SettingProto game_driver_blacklist = 11;
+        optional SettingProto game_driver_denylist = 11;
         // Game Driver - List of Apps that are allowed to use Game Driver
-        optional SettingProto game_driver_whitelist = 12;
+        optional SettingProto game_driver_allowlist = 12;
         // ANGLE - List of Apps that can check ANGLE rules
-        optional SettingProto angle_whitelist = 13;
-        // Game Driver - List of blacklists, each blacklist is a blacklist for
+        optional SettingProto angle_allowlist = 13;
+        // Game Driver - List of denylists, each denylist is a denylist for
         // a specific Game Driver version
-        optional SettingProto game_driver_blacklists = 14;
+        optional SettingProto game_driver_denylists = 14;
         // ANGLE - Show a dialog box when ANGLE is selected for the currently running PKG
         optional SettingProto show_angle_in_use_dialog = 15;
         // Game Driver - List of libraries in sphal accessible by Game Driver
diff --git a/core/proto/android/server/activitymanagerservice.proto b/core/proto/android/server/activitymanagerservice.proto
index 2d2ead4..fa046c6 100644
--- a/core/proto/android/server/activitymanagerservice.proto
+++ b/core/proto/android/server/activitymanagerservice.proto
@@ -20,7 +20,6 @@
 
 import "frameworks/base/core/proto/android/app/activitymanager.proto";
 import "frameworks/base/core/proto/android/app/appexitinfo.proto";
-import "frameworks/base/core/proto/android/app/enums.proto";
 import "frameworks/base/core/proto/android/app/notification.proto";
 import "frameworks/base/core/proto/android/app/profilerinfo.proto";
 import "frameworks/base/core/proto/android/content/component_name.proto";
@@ -35,6 +34,7 @@
 import "frameworks/base/core/proto/android/server/windowmanagerservice.proto";
 import "frameworks/base/core/proto/android/util/common.proto";
 import "frameworks/base/core/proto/android/privacy.proto";
+import "frameworks/proto_logging/stats/enums/app/enums.proto";
 
 option java_multiple_files = true;
 
diff --git a/core/proto/android/server/bluetooth_manager_service.proto b/core/proto/android/server/bluetooth_manager_service.proto
index 998413f..c33f66a 100644
--- a/core/proto/android/server/bluetooth_manager_service.proto
+++ b/core/proto/android/server/bluetooth_manager_service.proto
@@ -17,8 +17,8 @@
 syntax = "proto2";
 package com.android.server;
 
-import "frameworks/base/core/proto/android/bluetooth/enums.proto";
 import "frameworks/base/core/proto/android/privacy.proto";
+import "frameworks/proto_logging/stats/enums/bluetooth/enums.proto";
 
 option java_multiple_files = true;
 
diff --git a/core/proto/android/server/connectivity/Android.bp b/core/proto/android/server/connectivity/Android.bp
deleted file mode 100644
index 50c238b..0000000
--- a/core/proto/android/server/connectivity/Android.bp
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (C) 2019 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-java_library_static {
-    name: "datastallprotosnano",
-    proto: {
-        type: "nano",
-    },
-    srcs: [
-        "data_stall_event.proto",
-    ],
-    sdk_version: "system_current",
-    // this is part of updatable modules(NetworkStack) which targets 29(Q)
-    min_sdk_version: "29",
-}
diff --git a/core/proto/android/server/connectivity/data_stall_event.proto b/core/proto/android/server/connectivity/data_stall_event.proto
deleted file mode 100644
index 787074b..0000000
--- a/core/proto/android/server/connectivity/data_stall_event.proto
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-
-package com.android.server.connectivity;
-option java_multiple_files = true;
-option java_outer_classname = "DataStallEventProto";
-
-enum ProbeResult {
-    UNKNOWN = 0;
-    VALID = 1;
-    INVALID = 2;
-    PORTAL = 3;
-    PARTIAL = 4;
-}
-
-enum ApBand {
-    AP_BAND_UNKNOWN = 0;
-    AP_BAND_2GHZ = 1;
-    AP_BAND_5GHZ = 2;
-    AP_BAND_6GHZ = 3;
-}
-
-// Refer to definition in TelephonyManager.java.
-enum RadioTech {
-  RADIO_TECHNOLOGY_UNKNOWN = 0;
-  RADIO_TECHNOLOGY_GPRS = 1;
-  RADIO_TECHNOLOGY_EDGE = 2;
-  RADIO_TECHNOLOGY_UMTS = 3;
-  RADIO_TECHNOLOGY_IS95A = 4;
-  RADIO_TECHNOLOGY_IS95B = 5;
-  RADIO_TECHNOLOGY_1XRTT = 6;
-  RADIO_TECHNOLOGY_EVDO_0 = 7;
-  RADIO_TECHNOLOGY_EVDO_A = 8;
-  RADIO_TECHNOLOGY_HSDPA = 9;
-  RADIO_TECHNOLOGY_HSUPA = 10;
-  RADIO_TECHNOLOGY_HSPA = 11;
-  RADIO_TECHNOLOGY_EVDO_B = 12;
-  RADIO_TECHNOLOGY_LTE = 13;
-  RADIO_TECHNOLOGY_EHRPD = 14;
-  RADIO_TECHNOLOGY_HSPAP = 15;
-  RADIO_TECHNOLOGY_GSM = 16;
-  RADIO_TECHNOLOGY_TD_SCDMA = 17;
-  RADIO_TECHNOLOGY_IWLAN = 18;
-  RADIO_TECHNOLOGY_LTE_CA = 19;
-  RADIO_TECHNOLOGY_NR = 20;
-}
-
-// Cellular specific information.
-message CellularData {
-    // Indicate the radio technology at the time of data stall suspected.
-    optional RadioTech rat_type = 1;
-    // True if device is in roaming network at the time of data stall suspected.
-    optional bool is_roaming = 2;
-    // Registered network MccMnc when data stall happen
-    optional string network_mccmnc = 3;
-    // Indicate the SIM card carrier.
-    optional string sim_mccmnc = 4;
-    // Signal strength level at the time of data stall suspected.
-    optional int32 signal_strength = 5;
-}
-
-// Wifi specific information.
-message WifiData {
-    // Signal strength at the time of data stall suspected.
-    // RSSI range is between -55 to -110.
-    optional int32 signal_strength = 1;
-    // AP band.
-    optional ApBand wifi_band = 2;
-}
-
-message DnsEvent {
-    // The dns return code.
-    repeated int32 dns_return_code = 1;
-    // Indicate the timestamp of the dns event.
-    repeated int64 dns_time = 2;
-}
diff --git a/core/proto/android/server/enums.proto b/core/proto/android/server/enums.proto
deleted file mode 100644
index 89f7010..0000000
--- a/core/proto/android/server/enums.proto
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-package android.server;
-
-option java_outer_classname = "ServerProtoEnums";
-option java_multiple_files = true;
-
-enum DeviceIdleModeEnum {
-    // Device idle mode - not active.
-    DEVICE_IDLE_MODE_OFF = 0;
-    // Device idle mode - active in lightweight mode.
-    DEVICE_IDLE_MODE_LIGHT = 1;
-    // Device idle mode - active in full mode.
-    DEVICE_IDLE_MODE_DEEP = 2;
-}
-
-enum ErrorSource {
-    ERROR_SOURCE_UNKNOWN = 0;
-    // Data app
-    DATA_APP = 1;
-    // System app
-    SYSTEM_APP = 2;
-    // System server.
-    SYSTEM_SERVER = 3;
-}
diff --git a/core/proto/android/server/job/enums.proto b/core/proto/android/server/job/enums.proto
deleted file mode 100644
index 50fc031..0000000
--- a/core/proto/android/server/job/enums.proto
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-
-package com.android.server.job;
-
-// This file is for JobScheduler enums inside the server directory. If you're
-// adding enums for app-side code, use the file in
-// frameworks/base/core/proto/android/app/job.
-option java_outer_classname = "JobServerProtoEnums";
-option java_multiple_files = true;
-
-// Set of constraints that a job potentially needs satisfied before it can run.
-// Defined in
-// frameworks/base/services/core/java/com/android/server/job/controllers/JobStatus.java
-enum ConstraintEnum {
-    CONSTRAINT_UNKNOWN = 0;
-    CONSTRAINT_CHARGING = 1;
-    CONSTRAINT_BATTERY_NOT_LOW = 2;
-    CONSTRAINT_STORAGE_NOT_LOW = 3;
-    CONSTRAINT_TIMING_DELAY = 4;
-    CONSTRAINT_DEADLINE = 5;
-    CONSTRAINT_IDLE = 6;
-    CONSTRAINT_CONNECTIVITY = 7;
-    CONSTRAINT_CONTENT_TRIGGER = 8;
-    CONSTRAINT_DEVICE_NOT_DOZING = 9;
-    CONSTRAINT_WITHIN_QUOTA = 10;
-    CONSTRAINT_BACKGROUND_NOT_RESTRICTED = 11;
-}
diff --git a/core/proto/android/server/jobscheduler.proto b/core/proto/android/server/jobscheduler.proto
index f2f20e3a..d16ba28 100644
--- a/core/proto/android/server/jobscheduler.proto
+++ b/core/proto/android/server/jobscheduler.proto
@@ -20,7 +20,6 @@
 
 option java_multiple_files = true;
 
-import "frameworks/base/core/proto/android/app/job/enums.proto";
 import "frameworks/base/core/proto/android/content/clipdata.proto";
 import "frameworks/base/core/proto/android/content/component_name.proto";
 import "frameworks/base/core/proto/android/content/intent.proto";
@@ -29,10 +28,11 @@
 import "frameworks/base/core/proto/android/os/bundle.proto";
 import "frameworks/base/core/proto/android/os/persistablebundle.proto";
 import "frameworks/base/core/proto/android/server/appstatetracker.proto";
-import "frameworks/base/core/proto/android/server/job/enums.proto";
 import "frameworks/base/core/proto/android/server/statlogger.proto";
 import "frameworks/base/core/proto/android/privacy.proto";
 import "frameworks/base/core/proto/android/util/quotatracker.proto";
+import "frameworks/proto_logging/stats/enums/app/job/enums.proto";
+import "frameworks/proto_logging/stats/enums/server/job/enums.proto";
 
 message JobSchedulerServiceDumpProto {
     option (.android.msg_privacy).dest = DEST_AUTOMATIC;
diff --git a/core/proto/android/server/location/enums.proto b/core/proto/android/server/location/enums.proto
deleted file mode 100644
index 943ff18..0000000
--- a/core/proto/android/server/location/enums.proto
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-
-package android.server.location;
-
-option java_outer_classname = "ServerLocationProtoEnums";
-option java_multiple_files = true;
-
-// GPS Signal Quality levels,
-// primarily used by location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java
-enum GpsSignalQualityEnum {
-    GPS_SIGNAL_QUALITY_UNKNOWN = -1;
-    GPS_SIGNAL_QUALITY_POOR = 0;
-    GPS_SIGNAL_QUALITY_GOOD = 1;
-}
-
-// A type which distinguishes different categories of NI request, such as VOICE, UMTS_SUPL etc.
-enum GnssNiType {
-    VOICE = 1;
-    UMTS_SUPL = 2;
-    UMTS_CTRL_PLANE = 3;
-    EMERGENCY_SUPL = 4;
-};
-
-// GNSS NI responses, used to define the response in NI structures.
-enum GnssUserResponseType {
-    RESPONSE_ACCEPT = 1;
-    RESPONSE_DENY = 2;
-    RESPONSE_NORESP = 3;
-};
-
-// GNSS NI data encoding scheme.
-enum GnssNiEncodingType {
-    ENC_NONE = 0;
-    ENC_SUPL_GSM_DEFAULT = 1;
-    ENC_SUPL_UTF8 = 2;
-    ENC_SUPL_UCS2 = 3;
-    ENC_UNKNOWN = -1;
-};
-
-// Protocol stack that initiated the non-framework location request.
-enum NfwProtocolStack {
-    // Cellular control plane requests.
-    CTRL_PLANE = 0;
-    // All types of SUPL requests.
-    SUPL = 1;
-    // All types of requests from IMS.
-    IMS = 10;
-    // All types of requests from SIM.
-    SIM = 11;
-    // Requests from other protocol stacks.
-    OTHER_PROTOCOL_STACK = 100;
-};
-
-// Source initiating/receiving the location information.
-enum NfwRequestor  {
-    // Wireless service provider.
-    CARRIER = 0;
-    // Device manufacturer.
-    OEM = 10;
-    // Modem chipset vendor.
-    MODEM_CHIPSET_VENDOR = 11;
-    // GNSS chipset vendor.
-    GNSS_CHIPSET_VENDOR = 12;
-    // Other chipset vendor.
-    OTHER_CHIPSET_VENDOR = 13;
-    // Automobile client.
-    AUTOMOBILE_CLIENT = 20;
-    // Other sources.
-    OTHER_REQUESTOR = 100;
-};
-
-// Indicates whether location information was provided for this request.
-enum NfwResponseType {
-    // Request rejected because framework has not given permission for this use case.
-    REJECTED = 0;
-    // Request accepted but could not provide location because of a failure.
-    ACCEPTED_NO_LOCATION_PROVIDED = 1;
-    // Request accepted and location provided.
-    ACCEPTED_LOCATION_PROVIDED = 2;
-};
-
-// The SUPL mode.
-enum SuplMode {
-    // Mobile Station Based.
-    MSB = 0x01;
-    // Mobile Station Assisted.
-    MSA = 0x02;
-};
-
-// Enum that hold the bit masks for various LTE Positioning Profile settings (LPP_PROFILE
-// configuration parameter). If none of the bits in the enum are set, the default setting is
-// Radio Resource Location Protocol(RRLP).
-enum LppProfile {
-    // Enable LTE Positioning Protocol user plane.
-    USER_PLANE = 0x01;
-    // Enable LTE Positioning Protocol Control plane.
-    CONTROL_PLANE = 0x02;
-};
-
-// Positioning protocol on A-Glonass system.
-enum GlonassPosProtocol {
-    // Radio Resource Control(RRC) control-plane.
-    RRC_CPLANE = 0x01;
-    // Radio Resource Location user-plane.
-    RRLP_CPLANE = 0x02;
-    // LTE Positioning Protocol User plane.
-    LPP_UPLANE = 0x04;
-};
-
-// Configurations of how GPS functionalities should be locked when user turns off GPS On setting.
-enum GpsLock {
-    // Lock Mobile Originated GPS functionalitues.
-    MO = 0x01;
-    // Lock Network Initiated GPS functionalities.
-    NI = 0x02;
-};
diff --git a/core/proto/android/server/powermanagerservice.proto b/core/proto/android/server/powermanagerservice.proto
index 0455d58..c5c4d7c 100644
--- a/core/proto/android/server/powermanagerservice.proto
+++ b/core/proto/android/server/powermanagerservice.proto
@@ -19,16 +19,16 @@
 
 option java_multiple_files = true;
 
-import "frameworks/base/core/proto/android/app/enums.proto";
 import "frameworks/base/core/proto/android/content/intent.proto";
-import "frameworks/base/core/proto/android/os/enums.proto";
 import "frameworks/base/core/proto/android/os/looper.proto";
 import "frameworks/base/core/proto/android/os/powermanager.proto";
 import "frameworks/base/core/proto/android/os/worksource.proto";
 import "frameworks/base/core/proto/android/providers/settings.proto";
 import "frameworks/base/core/proto/android/server/wirelesschargerdetector.proto";
-import "frameworks/base/core/proto/android/view/enums.proto";
 import "frameworks/base/core/proto/android/privacy.proto";
+import "frameworks/proto_logging/stats/enums/app/enums.proto";
+import "frameworks/proto_logging/stats/enums/os/enums.proto";
+import "frameworks/proto_logging/stats/enums/view/enums.proto";
 
 message PowerManagerServiceDumpProto {
     option (.android.msg_privacy).dest = DEST_AUTOMATIC;
diff --git a/core/proto/android/server/windowmanagerservice.proto b/core/proto/android/server/windowmanagerservice.proto
index 0f5616f..420fc7d 100644
--- a/core/proto/android/server/windowmanagerservice.proto
+++ b/core/proto/android/server/windowmanagerservice.proto
@@ -24,11 +24,12 @@
 import "frameworks/base/core/proto/android/server/surfaceanimator.proto";
 import "frameworks/base/core/proto/android/view/displaycutout.proto";
 import "frameworks/base/core/proto/android/view/displayinfo.proto";
-import "frameworks/base/core/proto/android/view/enums.proto";
 import "frameworks/base/core/proto/android/view/surface.proto";
 import "frameworks/base/core/proto/android/view/windowlayoutparams.proto";
 import "frameworks/base/core/proto/android/privacy.proto";
 
+import "frameworks/proto_logging/stats/enums/view/enums.proto";
+
 package com.android.server.wm;
 
 option java_multiple_files = true;
diff --git a/core/proto/android/service/battery.proto b/core/proto/android/service/battery.proto
index 586411f..3a112e7 100644
--- a/core/proto/android/service/battery.proto
+++ b/core/proto/android/service/battery.proto
@@ -20,8 +20,8 @@
 option java_multiple_files = true;
 option java_outer_classname = "BatteryServiceProto";
 
-import "frameworks/base/core/proto/android/os/enums.proto";
 import "frameworks/base/core/proto/android/privacy.proto";
+import "frameworks/proto_logging/stats/enums/os/enums.proto";
 
 message BatteryServiceDumpProto {
     option (android.msg_privacy).dest = DEST_AUTOMATIC;
diff --git a/core/proto/android/service/procstats.proto b/core/proto/android/service/procstats.proto
index 7a4c070..57051f0 100644
--- a/core/proto/android/service/procstats.proto
+++ b/core/proto/android/service/procstats.proto
@@ -21,8 +21,8 @@
 option java_outer_classname = "ProcessStatsServiceProto";
 
 import "frameworks/base/core/proto/android/util/common.proto";
-import "frameworks/base/core/proto/android/service/procstats_enum.proto";
 import "frameworks/base/core/proto/android/privacy.proto";
+import "frameworks/proto_logging/stats/enums/service/procstats_enum.proto";
 
 /**
  * Data from ProcStatsService Dumpsys
diff --git a/core/proto/android/service/procstats_enum.proto b/core/proto/android/service/procstats_enum.proto
deleted file mode 100644
index 2abf373..0000000
--- a/core/proto/android/service/procstats_enum.proto
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-package android.service.procstats;
-
-option java_multiple_files = true;
-option java_outer_classname = "ProcessStatsEnums";
-
-enum ScreenState {
-    SCREEN_STATE_UNKNOWN = 0;
-    SCREEN_STATE_OFF = 1;
-    SCREEN_STATE_ON = 2;
-}
-
-enum MemoryState {
-    MEMORY_STATE_UNKNOWN = 0;
-    MEMORY_STATE_NORMAL = 1;     // normal.
-    MEMORY_STATE_MODERATE = 2;   // moderate memory pressure.
-    MEMORY_STATE_LOW = 3;        // low memory.
-    MEMORY_STATE_CRITICAL = 4;   // critical memory.
-}
-
-// this enum list is from frameworks/base/core/java/com/android/internal/app/procstats/ProcessStats.java
-// and not frameworks/base/core/java/android/app/ActivityManager.java
-enum ProcessState {
-    PROCESS_STATE_UNKNOWN = 0;
-    // Persistent system process.
-    PROCESS_STATE_PERSISTENT = 1;
-    // Top activity; actually any visible activity.
-    PROCESS_STATE_TOP = 2;
-    // Important foreground process (ime, wallpaper, etc).
-    PROCESS_STATE_IMPORTANT_FOREGROUND = 3;
-    // Important background process.
-    PROCESS_STATE_IMPORTANT_BACKGROUND = 4;
-    // Performing backup operation.
-    PROCESS_STATE_BACKUP = 5;
-    // Background process running a service.
-    PROCESS_STATE_SERVICE = 6;
-    // Process not running, but would be if there was enough RAM.
-    PROCESS_STATE_SERVICE_RESTARTING = 7;
-    // Process running a receiver.
-    PROCESS_STATE_RECEIVER = 8;
-    // Heavy-weight process (currently not used).
-    PROCESS_STATE_HEAVY_WEIGHT = 9;
-    // Process hosting home/launcher app when not on top.
-    PROCESS_STATE_HOME = 10;
-    // Process hosting the last app the user was in.
-    PROCESS_STATE_LAST_ACTIVITY = 11;
-    // Cached process hosting a previous activity.
-    PROCESS_STATE_CACHED_ACTIVITY = 12;
-    // Cached process hosting a client activity.
-    PROCESS_STATE_CACHED_ACTIVITY_CLIENT = 13;
-    // Cached process that is empty.
-    PROCESS_STATE_CACHED_EMPTY = 14;
-}
-
-enum ServiceOperationState {
-    SERVICE_OPERATION_STATE_UNKNOWN = 0;
-    SERVICE_OPERATION_STATE_RUNNING = 1;
-    SERVICE_OPERATION_STATE_STARTED = 2;
-    SERVICE_OPERATION_STATE_FOREGROUND = 3;
-    SERVICE_OPERATION_STATE_BOUND = 4;
-    SERVICE_OPERATION_STATE_EXECUTING = 5;
-}
-
-// this enum list is from frameworks/base/core/java/com/android/internal/app/procstats/ProcessStats.java
-// and not frameworks/base/core/java/android/app/ActivityManager.java
-enum AggregatedProcessState {
-    AGGREGATED_PROCESS_STATE_UNKNOWN = 0;
-    // Persistent system process; PERSISTENT or PERSISTENT_UI in ActivityManager
-    AGGREGATED_PROCESS_STATE_PERSISTENT = 1;
-    // Top activity; actually any visible activity; TOP or TOP_SLEEPING in ActivityManager
-    AGGREGATED_PROCESS_STATE_TOP = 2;
-    // Bound top foreground process; BOUND_TOP or BOUND_FOREGROUND_SERVICE in ActivityManager
-    AGGREGATED_PROCESS_STATE_BOUND_TOP_OR_FGS = 3;
-    // Important foreground process; FOREGROUND_SERVICE in ActivityManager
-    AGGREGATED_PROCESS_STATE_FGS = 4;
-    // Important foreground process ; IMPORTANT_FOREGROUND in ActivityManager
-    AGGREGATED_PROCESS_STATE_IMPORTANT_FOREGROUND = 5;
-    // Various background processes; IMPORTANT_BACKGROUND, TRANSIENT_BACKGROUND, BACKUP, SERVICE,
-    // HEAVY_WEIGHT in ActivityManager
-    AGGREGATED_PROCESS_STATE_BACKGROUND = 6;
-    // Process running a receiver; RECEIVER in ActivityManager
-    AGGREGATED_PROCESS_STATE_RECEIVER = 7;
-    // Various cached processes; HOME, LAST_ACTIVITY, CACHED_ACTIVITY, CACHED_RECENT,
-    // CACHED_ACTIVITY_CLIENT, CACHED_EMPTY in ActivityManager
-    AGGREGATED_PROCESS_STATE_CACHED = 8;
-}
\ No newline at end of file
diff --git a/core/proto/android/service/usb.proto b/core/proto/android/service/usb.proto
deleted file mode 100644
index 40c5a85..0000000
--- a/core/proto/android/service/usb.proto
+++ /dev/null
@@ -1,440 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-package android.service.usb;
-
-option java_multiple_files = true;
-option java_outer_classname = "UsbServiceProto";
-
-import "frameworks/base/core/proto/android/content/component_name.proto";
-import "frameworks/base/core/proto/android/service/enums.proto";
-import "frameworks/base/core/proto/android/privacy.proto";
-
-message UsbServiceDumpProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional UsbDeviceManagerProto device_manager = 1;
-    optional UsbHostManagerProto host_manager = 2;
-    optional UsbPortManagerProto port_manager = 3;
-    optional UsbAlsaManagerProto alsa_manager = 4;
-    optional UsbSettingsManagerProto settings_manager = 5;
-    optional UsbPermissionsManagerProto permissions_manager = 6;
-}
-
-message UsbDeviceManagerProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional UsbHandlerProto handler = 1;
-    optional UsbDebuggingManagerProto debugging_manager = 2;
-}
-
-message UsbHandlerProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    /* Same as android.hardware.usb.gadget.V1_0.GadgetFunction.* */
-    enum Function {
-        FUNCTION_ADB = 1;
-        FUNCTION_ACCESSORY = 2;
-        FUNCTION_MTP = 4;
-        FUNCTION_MIDI = 8;
-        FUNCTION_PTP = 16;
-        FUNCTION_RNDIS = 32;
-        FUNCTION_AUDIO_SOURCE = 64;
-    }
-
-    repeated Function current_functions = 1;
-    optional bool current_functions_applied = 2;
-    repeated Function screen_unlocked_functions = 3;
-    optional bool screen_locked = 4;
-    optional bool connected = 5;
-    optional bool configured = 6;
-    optional UsbAccessoryProto current_accessory = 7;
-    optional bool host_connected = 8;
-    optional bool source_power = 9;
-    optional bool sink_power = 10;
-    optional bool usb_charging = 11;
-    optional bool hide_usb_notification = 12;
-    optional bool audio_accessory_connected = 13;
-    optional bool adb_enabled = 14;
-    optional string kernel_state = 15;
-    optional string kernel_function_list = 16;
-}
-
-message UsbAccessoryProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional string manufacturer = 1;
-    optional string model = 2;
-    // For "classical" USB-accessories the manufacturer bakes this into the
-    // firmware of the device. If an Android phone is configured as accessory, the
-    // app that sets up the accessory side of the connection set this. Either way,
-    // these are part of the detection protocol, and so they cannot be user set or
-    // unique.
-    optional string description = 3;
-    optional string version = 4;
-    optional string uri = 5 [ (android.privacy).dest = DEST_EXPLICIT ];
-    // Non-resettable hardware ID.
-    optional string serial = 6 [ (android.privacy).dest = DEST_LOCAL ];
-}
-
-message UsbDebuggingManagerProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional bool connected_to_adb = 1;
-    // A workstation that connects to the phone for debugging is identified by
-    // this key.
-    optional string last_key_received = 2 [ (android.privacy).dest = DEST_EXPLICIT ];
-    optional string user_keys = 3 [ (android.privacy).dest = DEST_LOCAL ];
-    optional string system_keys = 4 [ (android.privacy).dest = DEST_LOCAL ];
-}
-
-message UsbHostManagerProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional android.content.ComponentNameProto default_usb_host_connection_handler = 1;
-    repeated UsbDeviceProto devices = 2;
-    optional int32 num_connects = 3;
-    repeated UsbConnectionRecordProto connections = 4;
-}
-
-message UsbDeviceProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    // Generic USB name, not user-provided.
-    optional string name = 1;
-    // ID specific to the vendor, not the device.
-    optional int32 vendor_id = 2;
-    // ID of this product type: Each vendor gives each product a unique ID. E.g.
-    // all mice of the same model would have the same ID.
-    optional int32 product_id = 3;
-    optional int32 class = 4;
-    optional int32 subclass = 5;
-    optional int32 protocol = 6;
-    optional string manufacturer_name = 7;
-    optional string product_name = 8;
-    optional string version = 9;
-    // Non-resettable hardware ID.
-    optional string serial_number = 10 [ (android.privacy).dest = DEST_LOCAL ];
-    repeated UsbConfigurationProto configurations = 11;
-}
-
-message UsbConfigurationProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    // A single USB device can have several configurations and the app accessing
-    // the USB device can switch between them. At any time only one can be active.
-    // Each configuration can present completely different interfaces end
-    // endpoints, i.e. a completely different behavior.
-    optional int32 id = 1;
-    // Hardware-defined name, not set by the user.
-    optional string name = 2;
-    optional uint32 attributes = 3;
-    optional int32 max_power = 4;
-    repeated UsbInterfaceProto interfaces = 5;
-}
-
-message UsbInterfaceProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    // Hardware defined. This is the id used by the app to identify the interface.
-    optional int32 id = 1;
-    optional int32 alternate_settings = 2;
-    optional string name = 3;
-    optional int32 class = 4;
-    optional int32 subclass = 5;
-    optional int32 protocol = 6;
-    repeated UsbEndPointProto endpoints = 7;
-}
-
-message UsbEndPointProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional int32 endpoint_number = 1;
-    optional android.service.UsbEndPointDirection direction = 2;
-      // The address of the endpoint. Needed to read and write to the endpoint.
-    optional int32 address = 3;
-    optional android.service.UsbEndPointType type = 4;
-    optional uint32 attributes = 5;
-    optional int32 max_packet_size = 6;
-    optional int32 interval = 7;
-}
-
-message UsbConnectionRecordProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    // usb device's address, e.g. 001/002, nothing about the phone
-    optional string device_address = 1;
-    optional android.service.UsbConnectionRecordMode mode = 2;
-    optional int64 timestamp = 3;
-    optional int32 manufacturer = 4;
-    optional int32 product = 5;
-    optional UsbIsHeadsetProto is_headset = 6;
-}
-
-message UsbIsHeadsetProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional bool in = 1;
-    optional bool out = 2;
-}
-
-message UsbPortManagerProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional bool is_simulation_active = 1;
-    repeated UsbPortInfoProto usb_ports = 2;
-}
-
-message UsbPortInfoProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional UsbPortProto port = 1;
-    optional UsbPortStatusProto status = 2;
-    optional bool can_change_mode = 3;
-    optional bool can_change_power_role = 4;
-    optional bool can_change_data_role = 5;
-    optional int64 connected_at_millis = 6;
-    optional int64 last_connect_duration_millis = 7;
-}
-
-message UsbPortProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    /* Same as android.hardware.usb.V1_1.Constants.PortMode_1_1 */
-    enum Mode {
-        MODE_NONE = 0;
-        MODE_UFP = 1;
-        MODE_DFP = 2;
-        MODE_DRP = 3;
-        MODE_AUDIO_ACCESSORY = 4;
-        MODE_DEBUG_ACCESSORY = 8;
-    }
-
-    // ID of the port. A device (eg: Chromebooks) might have multiple ports.
-    optional string id = 1;
-    repeated Mode supported_modes = 2;
-}
-
-/* Same as android.hardware.usb.V1_2.Constants.ContaminantPresenceStatus */
-enum ContaminantPresenceStatus {
-    CONTAMINANT_STATUS_UNKNOWN = 0;
-    CONTAMINANT_STATUS_NOT_SUPPORTED = 1;
-    CONTAMINANT_STATUS_DISABLED = 2;
-    CONTAMINANT_STATUS_NOT_DETECTED = 3;
-    CONTAMINANT_STATUS_DETECTED = 4;
-}
-
-message UsbPortStatusProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    /* Same as android.hardware.usb.V1_0.Constants.PortPowerRole */
-    enum PowerRole {
-        POWER_ROLE_NONE = 0;
-        POWER_ROLE_SOURCE = 1;
-        POWER_ROLE_SINK = 2;
-    }
-
-    /* Same as android.hardware.usb.V1_0.Constants.PortDataRole */
-    enum DataRole {
-        DATA_ROLE_NONE = 0;
-        DATA_ROLE_HOST = 1;
-        DATA_ROLE_DEVICE = 2;
-    }
-
-    optional bool connected = 1;
-    optional UsbPortProto.Mode current_mode = 2;
-    optional PowerRole power_role = 3;
-    optional DataRole data_role = 4;
-    repeated UsbPortStatusRoleCombinationProto role_combinations = 5;
-    optional ContaminantPresenceStatus contaminant_presence_status = 6;
-}
-
-message UsbPortStatusRoleCombinationProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional UsbPortStatusProto.PowerRole power_role = 1;
-    optional UsbPortStatusProto.DataRole data_role = 2;
-}
-
-message UsbAlsaManagerProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional int32 cards_parser = 1;
-    repeated UsbAlsaDeviceProto alsa_devices = 2;
-    repeated UsbMidiDeviceProto midi_devices = 3;
-}
-
-message UsbAlsaDeviceProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional int32 card = 1;
-    optional int32 device = 2;
-    optional string name = 3;
-    optional bool has_playback = 4;
-    optional bool has_capture = 5;
-    // usb device's address, e.g. 001/002, nothing about the phone
-    optional string address = 6;
-}
-
-message UsbMidiDeviceProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional int32 card = 1;
-    optional int32 device = 2;
-    // usb device's address, e.g. 001/002, nothing about the phone
-    optional string device_address = 3;
-}
-
-message UsbSettingsManagerProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    repeated UsbUserSettingsManagerProto user_settings = 1;
-    repeated UsbProfileGroupSettingsManagerProto profile_group_settings = 2;
-}
-
-message UsbUserSettingsManagerProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional int32 user_id = 1;
-    reserved 2; // previously device_permissions, now unused
-    reserved 3; // previously accessory_permissions, now unused
-    repeated UsbDeviceAttachedActivities device_attached_activities = 4;
-    repeated UsbAccessoryAttachedActivities accessory_attached_activities = 5;
-}
-
-message UsbProfileGroupSettingsManagerProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    // The user id of the personal profile if the device has a work profile.
-    optional int32 parent_user_id = 1;
-    repeated UsbSettingsDevicePreferenceProto device_preferences = 2;
-    repeated UsbSettingsAccessoryPreferenceProto accessory_preferences = 3;
-}
-
-message UsbSettingsDevicePreferenceProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional UsbDeviceFilterProto filter = 1;
-    optional UserPackageProto user_package = 2;
-}
-
-message UsbPermissionsManagerProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    repeated UsbUserPermissionsManagerProto user_permissions = 1;
-}
-
-message UsbUserPermissionsManagerProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional int32 user_id = 1;
-
-    repeated UsbDevicePermissionProto device_permissions = 2;
-    repeated UsbAccessoryPermissionProto accessory_permissions = 3;
-
-    repeated UsbDevicePersistentPermissionProto device_persistent_permissions = 4;
-    repeated UsbAccessoryPersistentPermissionProto accessory_persistent_permissions = 5;
-}
-
-message UsbDevicePermissionProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    // Name of device set by manufacturer
-    // All devices of the same model have the same name
-    optional string device_name = 1;
-    repeated int32 uids = 2;
-}
-
-message UsbAccessoryPermissionProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    // Description of accessory set by manufacturer
-    // All accessories of the same model have the same description
-    optional string accessory_description = 1;
-    repeated int32 uids = 2;
-}
-
-message UsbDevicePersistentPermissionProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional UsbDeviceFilterProto device_filter = 1;
-    repeated UsbUidPermissionProto permission_values = 2;
-}
-
-message UsbAccessoryPersistentPermissionProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional UsbAccessoryFilterProto accessory_filter = 1;
-    repeated UsbUidPermissionProto permission_values = 2;
-}
-
-message UsbUidPermissionProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional int32 uid = 1;
-    optional bool is_granted = 2;
-}
-
-message UsbDeviceFilterProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    // Mirrors the vendor_id of UsbDeviceProto.
-    optional int32 vendor_id = 1;
-    optional int32 product_id = 2;
-    optional int32 class = 3;
-    optional int32 subclass = 4;
-    optional int32 protocol = 5;
-    optional string manufacturer_name = 6;
-    optional string product_name = 7;
-    optional string serial_number = 8 [ (android.privacy).dest = DEST_EXPLICIT ];
-}
-
-message UserPackageProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional int32 user_id = 1;
-    optional string package_name =2;
-}
-
-message UsbSettingsAccessoryPreferenceProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional UsbAccessoryFilterProto filter = 1;
-    optional UserPackageProto user_package = 2;
-}
-
-message UsbAccessoryFilterProto {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional string manufacturer = 1;
-    optional string model = 2;
-    optional string version = 3;
-}
-
-message UsbDeviceAttachedActivities {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional android.content.ComponentNameProto activity = 1;
-    repeated UsbDeviceFilterProto filters = 2;
-}
-
-message UsbAccessoryAttachedActivities {
-    option (android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional android.content.ComponentNameProto activity = 1;
-    repeated UsbAccessoryFilterProto filters = 2;
-}
diff --git a/core/proto/android/stats/accessibility/accessibility_enums.proto b/core/proto/android/stats/accessibility/accessibility_enums.proto
deleted file mode 100644
index 5118ad5..0000000
--- a/core/proto/android/stats/accessibility/accessibility_enums.proto
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-package android.stats.accessibility;
-option java_multiple_files = true;
-
-// The entry point of the accessibility shortcut.
-enum ShortcutType {
-  UNKNOWN_TYPE = 0;
-  A11Y_BUTTON = 1;
-  VOLUME_KEY = 2;
-  TRIPLE_TAP = 3;
-  A11Y_BUTTON_LONG_PRESS = 4;
-}
-
-// The service status code.
-enum ServiceStatus {
-  UNKNOWN = 0;
-  ENABLED = 1;
-  DISABLED = 2;
-}
\ No newline at end of file
diff --git a/core/proto/android/stats/connectivity/Android.bp b/core/proto/android/stats/connectivity/Android.bp
deleted file mode 100644
index 5e6ac3c..0000000
--- a/core/proto/android/stats/connectivity/Android.bp
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (C) 2019 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-java_library_static {
-    name: "networkstackprotos",
-    proto: {
-        type: "lite",
-    },
-    srcs: [
-        "network_stack.proto",
-    ],
-    sdk_version: "system_29",
-}
-
-java_library_static {
-    name: "tetheringprotos",
-    proto: {
-        type: "lite",
-    },
-    srcs: [
-        "tethering.proto",
-    ],
-    apex_available: [
-        "com.android.tethering",
-    ],
-    sdk_version: "system_current",
-}
diff --git a/core/proto/android/stats/connectivity/network_stack.proto b/core/proto/android/stats/connectivity/network_stack.proto
deleted file mode 100644
index e9726d7..0000000
--- a/core/proto/android/stats/connectivity/network_stack.proto
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-
-package android.stats.connectivity;
-option java_multiple_files = true;
-option java_outer_classname = "NetworkStackProto";
-
-enum DhcpRenewResult {
-    RR_UNKNOWN = 0;
-    RR_SUCCESS = 1;
-    RR_ERROR_NAK = 2;
-    RR_ERROR_IP_MISMATCH = 3;
-    RR_ERROR_IP_EXPIRE = 4;
-}
-
-enum DisconnectCode {
-    DC_NONE = 0;
-    DC_NORMAL_TERMINATION = 1;
-    DC_PROVISIONING_FAIL = 2;
-    DC_ERROR_STARTING_IPV4 = 4;
-    DC_ERROR_STARTING_IPV6 = 5;
-    DC_ERROR_STARTING_IPREACHABILITYMONITOR = 6;
-    DC_INVALID_PROVISIONING = 7;
-    DC_INTERFACE_NOT_FOUND = 8;
-    DC_PROVISIONING_TIMEOUT = 9;
-}
-
-enum TransportType {
-    TT_UNKNOWN = 0;
-    // Indicates this network uses a Cellular transport
-    TT_CELLULAR = 1;
-    // Indicates this network uses a Wi-Fi transport
-    TT_WIFI = 2;
-    // Indicates this network uses a Bluetooth transport
-    TT_BLUETOOTH = 3;
-    // Indicates this network uses an Ethernet transport
-    TT_ETHERNET = 4;
-    // Indicates this network uses a Wi-Fi Aware transport
-    TT_WIFI_AWARE = 5;
-    // Indicates this network uses a LoWPAN transport
-    TT_LOWPAN = 6;
-    // Indicates this network uses a Cellular+VPN transport
-    TT_CELLULAR_VPN = 7;
-    // Indicates this network uses a Wi-Fi+VPN transport
-    TT_WIFI_VPN = 8;
-    // Indicates this network uses a Bluetooth+VPN transport
-    TT_BLUETOOTH_VPN = 9;
-    // Indicates this network uses an Ethernet+VPN transport
-    TT_ETHERNET_VPN = 10;
-    // Indicates this network uses a Wi-Fi+Cellular+VPN transport
-    TT_WIFI_CELLULAR_VPN = 11;
-    // Indicates this network uses for test only
-    TT_TEST = 12;
-}
-
-enum DhcpFeature {
-    DF_UNKNOWN = 0;
-    // DHCP INIT-REBOOT state
-    DF_INITREBOOT = 1;
-    // DHCP rapid commit option
-    DF_RAPIDCOMMIT  = 2;
-    // Duplicate address detection
-    DF_DAD = 3;
-    // Fast initial Link setup
-    DF_FILS = 4;
-}
-
-enum HostnameTransResult {
-    HTR_UNKNOWN = 0;
-    HTR_SUCCESS = 1;
-    HTR_FAILURE = 2;
-    HTR_DISABLE = 3;
-}
-
-enum ProbeResult {
-    PR_UNKNOWN = 0;
-    PR_SUCCESS = 1;
-    PR_FAILURE = 2;
-    PR_PORTAL = 3;
-    // DNS query for the probe host returned a private IP address
-    PR_PRIVATE_IP_DNS = 4;
-}
-
-enum ValidationResult {
-    VR_UNKNOWN = 0;
-    VR_SUCCESS = 1;
-    VR_FAILURE = 2;
-    VR_PORTAL = 3;
-    VR_PARTIAL = 4;
-}
-
-enum ProbeType {
-    PT_UNKNOWN = 0;
-    PT_DNS       = 1;
-    PT_HTTP      = 2;
-    PT_HTTPS     = 3;
-    PT_PAC       = 4;
-    PT_FALLBACK  = 5;
-    PT_PRIVDNS   = 6;
-    PT_CAPPORT_API = 7;
-}
-
-// The Dhcp error code is defined in android.net.metrics.DhcpErrorEvent
-enum DhcpErrorCode {
-    ET_UNKNOWN = 0;
-    ET_L2_ERROR = 1;
-    ET_L3_ERROR = 2;
-    ET_L4_ERROR = 3;
-    ET_DHCP_ERROR = 4;
-    ET_MISC_ERROR = 5;
-    /* Reserve for error type
-    // ET_L2_ERROR_TYPE = ET_L2_ERROR << 8;
-    ET_L2_ERROR_TYPE = 256;
-    // ET_L3_ERROR_TYPE = ET_L3_ERROR << 8;
-    ET_L3_ERROR_TYPE = 512;
-    // ET_L4_ERROR_TYPE = ET_L4_ERROR << 8;
-    ET_L4_ERROR_TYPE = 768;
-    // ET_DHCP_ERROR_TYPE = ET_DHCP_ERROR << 8;
-    ET_DHCP_ERROR_TYPE = 1024;
-    // ET_MISC_ERROR_TYPE = ET_MISC_ERROR << 8;
-    ET_MISC_ERROR_TYPE = 1280;
-    */
-    // ET_L2_TOO_SHORT = (ET_L2_ERROR_TYPE | 0x1) << 16;
-    ET_L2_TOO_SHORT = 16842752;
-    // ET_L2_WRONG_ETH_TYPE = (ET_L2_ERROR_TYPE | 0x2) << 16;
-    ET_L2_WRONG_ETH_TYPE = 16908288;
-    // ET_L3_TOO_SHORT = (ET_L3_ERROR_TYPE | 0x1) << 16;
-    ET_L3_TOO_SHORT = 33619968;
-    // ET_L3_NOT_IPV4 = (ET_L3_ERROR_TYPE | 0x2) << 16;
-    ET_L3_NOT_IPV4 = 33685504;
-    // ET_L3_INVALID_IP = (ET_L3_ERROR_TYPE | 0x3) << 16;
-    ET_L3_INVALID_IP = 33751040;
-    // ET_L4_NOT_UDP = (ET_L4_ERROR_TYPE | 0x1) << 16;
-    ET_L4_NOT_UDP = 50397184;
-    // ET_L4_WRONG_PORT = (ET_L4_ERROR_TYPE | 0x2) << 16;
-    ET_L4_WRONG_PORT = 50462720;
-    // ET_BOOTP_TOO_SHORT = (ET_DHCP_ERROR_TYPE | 0x1) << 16;
-    ET_BOOTP_TOO_SHORT = 67174400;
-    // ET_DHCP_BAD_MAGIC_COOKIE = (ET_DHCP_ERROR_TYPE | 0x2) << 16;
-    ET_DHCP_BAD_MAGIC_COOKIE = 67239936;
-    // ET_DHCP_INVALID_OPTION_LENGTH = (ET_DHCP_ERROR_TYPE | 0x3) << 16;
-    ET_DHCP_INVALID_OPTION_LENGTH = 67305472;
-    // ET_DHCP_NO_MSG_TYPE = (ET_DHCP_ERROR_TYPE | 0x4) << 16;
-    ET_DHCP_NO_MSG_TYPE = 67371008;
-    // ET_DHCP_UNKNOWN_MSG_TYPE = (ET_DHCP_ERROR_TYPE | 0x5) << 16;
-    ET_DHCP_UNKNOWN_MSG_TYPE = 67436544;
-    // ET_DHCP_NO_COOKIE = (ET_DHCP_ERROR_TYPE | 0x6) << 16;
-    ET_DHCP_NO_COOKIE = 67502080;
-    // ET_BUFFER_UNDERFLOW = (ET_MISC_ERROR_TYPE | 0x1) << 16;
-    ET_BUFFER_UNDERFLOW = 83951616;
-    // ET_RECEIVE_ERROR = (ET_MISC_ERROR_TYPE | 0x2) << 16;
-    ET_RECEIVE_ERROR = 84017152;
-    // ET_PARSING_ERROR = (ET_MISC_ERROR_TYPE | 0x3) << 16;
-    ET_PARSING_ERROR = 84082688;
-}
-
-enum NetworkQuirkEvent {
-    QE_UNKNOWN = 0;
-    QE_IPV6_PROVISIONING_ROUTER_LOST = 1;
-}
-
-message NetworkStackEventData {
-
-}
-
diff --git a/core/proto/android/stats/connectivity/tethering.proto b/core/proto/android/stats/connectivity/tethering.proto
deleted file mode 100644
index 13f0b8c..0000000
--- a/core/proto/android/stats/connectivity/tethering.proto
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-syntax = "proto2";
-package android.stats.connectivity;
-option java_multiple_files = true;
-option java_outer_classname = "TetheringProto";
-
-enum ErrorCode {
-    EC_NO_ERROR = 0;
-    EC_UNKNOWN_IFACE = 1;
-    EC_SERVICE_UNAVAIL = 2;
-    EC_UNSUPPORTED = 3;
-    EC_UNAVAIL_IFACE = 4;
-    EC_INTERNAL_ERROR = 5;
-    EC_TETHER_IFACE_ERROR = 6;
-    EC_UNTETHER_IFACE_ERROR = 7;
-    EC_ENABLE_FORWARDING_ERROR = 8;
-    EC_DISABLE_FORWARDING_ERROR = 9;
-    EC_IFACE_CFG_ERROR = 10;
-    EC_PROVISIONING_FAILED = 11;
-    EC_DHCPSERVER_ERROR = 12;
-    EC_ENTITLEMENT_UNKNOWN = 13;
-    EC_NO_CHANGE_TETHERING_PERMISSION = 14;
-    EC_NO_ACCESS_TETHERING_PERMISSION = 15;
-    EC_UNKNOWN_TYPE = 16;
-}
-
-enum DownstreamType {
-    // Unspecific tethering type.
-    DS_UNSPECIFIED = 0;
-    // Wifi tethering type.
-    DS_TETHERING_WIFI = 1;
-    // USB tethering type.
-    DS_TETHERING_USB = 2;
-    // Bluetooth tethering type.
-    DS_TETHERING_BLUETOOTH = 3;
-    // Wifi P2p tethering type.
-    DS_TETHERING_WIFI_P2P = 4;
-    // NCM (Network Control Model) local tethering type.
-    DS_TETHERING_NCM = 5;
-    // Ethernet tethering type.
-    DS_TETHERING_ETHERNET = 6;
-}
-
-enum UpstreamType {
-    UT_UNKNOWN = 0;
-    // Indicates upstream using a Cellular transport.
-    UT_CELLULAR = 1;
-    // Indicates upstream using a Wi-Fi transport.
-    UT_WIFI = 2;
-    // Indicates upstream using a Bluetooth transport.
-    UT_BLUETOOTH = 3;
-    // Indicates upstream using an Ethernet transport.
-    UT_ETHERNET = 4;
-    // Indicates upstream using a Wi-Fi Aware transport.
-    UT_WIFI_AWARE = 5;
-    // Indicates upstream using a LoWPAN transport.
-    UT_LOWPAN = 6;
-    // Indicates upstream using a Cellular+VPN transport.
-    UT_CELLULAR_VPN = 7;
-    // Indicates upstream using a Wi-Fi+VPN transport.
-    UT_WIFI_VPN = 8;
-    // Indicates upstream using a Bluetooth+VPN transport.
-    UT_BLUETOOTH_VPN = 9;
-    // Indicates upstream using an Ethernet+VPN transport.
-    UT_ETHERNET_VPN = 10;
-    // Indicates upstream using a Wi-Fi+Cellular+VPN transport.
-    UT_WIFI_CELLULAR_VPN = 11;
-    // Indicates upstream using for test only.
-    UT_TEST = 12;
-    // Indicates upstream using DUN capability + Cellular transport.
-    UT_DUN_CELLULAR = 13;
-}
-
-enum UserType {
-    // Unknown.
-    USER_UNKNOWN = 0;
-    // Settings.
-    USER_SETTINGS = 1;
-    // System UI.
-    USER_SYSTEMUI = 2;
-    // Google mobile service.
-    USER_GMS = 3;
-}
diff --git a/core/proto/android/stats/devicepolicy/Android.bp b/core/proto/android/stats/devicepolicy/Android.bp
deleted file mode 100644
index 5fb278a..0000000
--- a/core/proto/android/stats/devicepolicy/Android.bp
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2018 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-java_library_static {
-    name: "devicepolicyprotosnano",
-    proto: {
-        type: "nano",
-    },
-    srcs: [
-        "*.proto",
-    ],
-    java_version: "1.8",
-    target: {
-        android: {
-            jarjar_rules: "jarjar-rules.txt",
-        },
-        host: {
-            static_libs: ["libprotobuf-java-nano"],
-        }
-    },
-    sdk_version: "core_platform",
-}
diff --git a/core/proto/android/stats/devicepolicy/device_policy.proto b/core/proto/android/stats/devicepolicy/device_policy.proto
deleted file mode 100644
index af30cf3..0000000
--- a/core/proto/android/stats/devicepolicy/device_policy.proto
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-
-package android.stats.devicepolicy;
-option java_multiple_files = true;
-
-message StringList {
-  repeated string string_value = 1;
-}
diff --git a/core/proto/android/stats/devicepolicy/device_policy_enums.proto b/core/proto/android/stats/devicepolicy/device_policy_enums.proto
deleted file mode 100644
index 7c1a049..0000000
--- a/core/proto/android/stats/devicepolicy/device_policy_enums.proto
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-
-package android.stats.devicepolicy;
-option java_multiple_files = true;
-
-/**
- * Id for device policy features.
- */
-enum EventId {
-  SET_PASSWORD_QUALITY = 1;
-  SET_PASSWORD_MINIMUM_LENGTH = 2;
-  SET_PASSWORD_MINIMUM_NUMERIC = 3;
-  SET_PASSWORD_MINIMUM_NON_LETTER = 4;
-  SET_PASSWORD_MINIMUM_LETTERS = 5;
-  SET_PASSWORD_MINIMUM_LOWER_CASE = 6;
-  SET_PASSWORD_MINIMUM_UPPER_CASE = 7;
-  SET_PASSWORD_MINIMUM_SYMBOLS = 8;
-  SET_KEYGUARD_DISABLED_FEATURES = 9;
-  LOCK_NOW = 10;
-  WIPE_DATA_WITH_REASON = 11;
-  ADD_USER_RESTRICTION = 12;
-  REMOVE_USER_RESTRICTION = 13;
-  SET_SECURE_SETTING = 14;
-  SET_SECURITY_LOGGING_ENABLED = 15;
-  RETRIEVE_SECURITY_LOGS = 16;
-  RETRIEVE_PRE_REBOOT_SECURITY_LOGS = 17;
-  SET_PERMISSION_POLICY = 18;
-  SET_PERMISSION_GRANT_STATE = 19;
-  INSTALL_KEY_PAIR = 20;
-  INSTALL_CA_CERT = 21;
-  CHOOSE_PRIVATE_KEY_ALIAS = 22;
-  REMOVE_KEY_PAIR = 23;
-  UNINSTALL_CA_CERTS = 24;
-  SET_CERT_INSTALLER_PACKAGE = 25;
-  SET_ALWAYS_ON_VPN_PACKAGE = 26;
-  SET_PERMITTED_INPUT_METHODS = 27;
-  SET_PERMITTED_ACCESSIBILITY_SERVICES = 28;
-  SET_SCREEN_CAPTURE_DISABLED = 29;
-  SET_CAMERA_DISABLED = 30;
-  QUERY_SUMMARY_FOR_USER = 31;
-  QUERY_SUMMARY = 32;
-  QUERY_DETAILS = 33;
-  REBOOT = 34;
-  SET_MASTER_VOLUME_MUTED = 35;
-  SET_AUTO_TIME_REQUIRED = 36;
-  SET_KEYGUARD_DISABLED = 37;
-  SET_STATUS_BAR_DISABLED = 38;
-  SET_ORGANIZATION_COLOR = 39;
-  SET_PROFILE_NAME = 40;
-  SET_USER_ICON = 41;
-  SET_DEVICE_OWNER_LOCK_SCREEN_INFO = 42;
-  SET_SHORT_SUPPORT_MESSAGE = 43;
-  SET_LONG_SUPPORT_MESSAGE = 44;
-  SET_CROSS_PROFILE_CONTACTS_SEARCH_DISABLED = 45;
-  SET_CROSS_PROFILE_CALLER_ID_DISABLED = 46;
-  SET_BLUETOOTH_CONTACT_SHARING_DISABLED = 47;
-  ADD_CROSS_PROFILE_INTENT_FILTER = 48;
-  ADD_CROSS_PROFILE_WIDGET_PROVIDER = 49;
-  SET_SYSTEM_UPDATE_POLICY = 50;
-  SET_LOCKTASK_MODE_ENABLED = 51;
-  ADD_PERSISTENT_PREFERRED_ACTIVITY = 52;
-  REQUEST_BUGREPORT = 53;
-  GET_WIFI_MAC_ADDRESS = 54;
-  REQUEST_QUIET_MODE_ENABLED = 55;
-  WORK_PROFILE_LOCATION_CHANGED = 56;
-  DO_USER_INFO_CLICKED = 57;
-  TRANSFER_OWNERSHIP = 58;
-  GENERATE_KEY_PAIR = 59;
-  SET_KEY_PAIR_CERTIFICATE = 60;
-  SET_KEEP_UNINSTALLED_PACKAGES = 61;
-  SET_APPLICATION_RESTRICTIONS = 62;
-  SET_APPLICATION_HIDDEN = 63;
-  ENABLE_SYSTEM_APP = 64;
-  ENABLE_SYSTEM_APP_WITH_INTENT = 65;
-  INSTALL_EXISTING_PACKAGE = 66;
-  SET_UNINSTALL_BLOCKED = 67;
-  SET_PACKAGES_SUSPENDED = 68;
-  ON_LOCK_TASK_MODE_ENTERING = 69;
-  SET_CROSS_PROFILE_CALENDAR_PACKAGES = 70;
-  GET_USER_PASSWORD_COMPLEXITY_LEVEL = 72;
-  INSTALL_SYSTEM_UPDATE = 73;
-  INSTALL_SYSTEM_UPDATE_ERROR = 74;
-  IS_MANAGED_KIOSK = 75;
-  IS_UNATTENDED_MANAGED_KIOSK = 76;
-  PROVISIONING_MANAGED_PROFILE_ON_FULLY_MANAGED_DEVICE = 77;
-  PROVISIONING_PERSISTENT_DEVICE_OWNER = 78;
-
-  // existing Tron logs to be migrated to statsd
-  PROVISIONING_ENTRY_POINT_NFC = 79;
-  PROVISIONING_ENTRY_POINT_QR_CODE = 80;
-  PROVISIONING_ENTRY_POINT_CLOUD_ENROLLMENT = 81;
-  PROVISIONING_ENTRY_POINT_ADB = 82;
-  PROVISIONING_ENTRY_POINT_TRUSTED_SOURCE = 83;
-  PROVISIONING_DPC_PACKAGE_NAME = 84;
-  PROVISIONING_DPC_INSTALLED_BY_PACKAGE = 85;
-  PROVISIONING_PROVISIONING_ACTIVITY_TIME_MS = 86;
-  PROVISIONING_PREPROVISIONING_ACTIVITY_TIME_MS = 87;
-  PROVISIONING_ENCRYPT_DEVICE_ACTIVITY_TIME_MS = 88;
-  PROVISIONING_WEB_ACTIVITY_TIME_MS = 89;
-  PROVISIONING_TRAMPOLINE_ACTIVITY_TIME_MS = 90 [deprecated=true];
-  PROVISIONING_POST_ENCRYPTION_ACTIVITY_TIME_MS = 91 [deprecated=true];
-  PROVISIONING_FINALIZATION_ACTIVITY_TIME_MS = 92 [deprecated=true];
-  PROVISIONING_NETWORK_TYPE = 93;
-  PROVISIONING_ACTION = 94;
-  PROVISIONING_EXTRAS = 95;
-  PROVISIONING_COPY_ACCOUNT_TASK_MS = 96;
-  PROVISIONING_CREATE_PROFILE_TASK_MS = 97;
-  PROVISIONING_START_PROFILE_TASK_MS = 98;
-  PROVISIONING_DOWNLOAD_PACKAGE_TASK_MS = 99;
-  PROVISIONING_INSTALL_PACKAGE_TASK_MS = 100;
-  PROVISIONING_CANCELLED = 101;
-  PROVISIONING_ERROR = 102;
-  PROVISIONING_COPY_ACCOUNT_STATUS = 103;
-  PROVISIONING_TOTAL_TASK_TIME_MS = 104;
-  PROVISIONING_SESSION_STARTED = 105;
-  PROVISIONING_SESSION_COMPLETED = 106;
-  PROVISIONING_TERMS_ACTIVITY_TIME_MS = 107;
-  PROVISIONING_TERMS_COUNT = 108;
-  PROVISIONING_TERMS_READ = 109;
-
-  SEPARATE_PROFILE_CHALLENGE_CHANGED = 110;
-  SET_GLOBAL_SETTING = 111;
-  INSTALL_PACKAGE = 112;
-  UNINSTALL_PACKAGE = 113;
-  WIFI_SERVICE_ADD_NETWORK_SUGGESTIONS = 114;
-  WIFI_SERVICE_ADD_OR_UPDATE_NETWORK = 115;
-  QUERY_SUMMARY_FOR_DEVICE = 116;
-  REMOVE_CROSS_PROFILE_WIDGET_PROVIDER = 117;
-  ESTABLISH_VPN = 118;
-  SET_NETWORK_LOGGING_ENABLED = 119;
-  RETRIEVE_NETWORK_LOGS = 120;
-  PROVISIONING_PREPARE_TOTAL_TIME_MS = 121;
-  PROVISIONING_PREPARE_STARTED = 122;
-  PROVISIONING_PREPARE_COMPLETED = 123;
-  PROVISIONING_FLOW_TYPE = 124;
-  CROSS_PROFILE_APPS_GET_TARGET_USER_PROFILES = 125;
-  CROSS_PROFILE_APPS_START_ACTIVITY_AS_USER = 126;
-  SET_AUTO_TIME = 127;
-  SET_AUTO_TIME_ZONE = 128;
-  SET_USER_CONTROL_DISABLED_PACKAGES = 129;
-  SET_FACTORY_RESET_PROTECTION = 130;
-  SET_COMMON_CRITERIA_MODE = 131;
-  ALLOW_MODIFICATION_OF_ADMIN_CONFIGURED_NETWORKS = 132;
-  SET_TIME = 133;
-  SET_TIME_ZONE = 134;
-  SET_PERSONAL_APPS_SUSPENDED = 135;
-  SET_MANAGED_PROFILE_MAXIMUM_TIME_OFF = 136;
-  COMP_TO_ORG_OWNED_PO_MIGRATED = 137;
-  SET_CROSS_PROFILE_PACKAGES = 138;
-  SET_INTERACT_ACROSS_PROFILES_APP_OP = 139;
-  GET_CROSS_PROFILE_PACKAGES = 140;
-  CAN_REQUEST_INTERACT_ACROSS_PROFILES_TRUE = 141;
-  CAN_REQUEST_INTERACT_ACROSS_PROFILES_FALSE_NO_PROFILES = 142;
-  CAN_REQUEST_INTERACT_ACROSS_PROFILES_FALSE_WHITELIST = 143;
-  CAN_REQUEST_INTERACT_ACROSS_PROFILES_FALSE_PERMISSION = 144;
-  CAN_INTERACT_ACROSS_PROFILES_TRUE = 145;
-  CAN_INTERACT_ACROSS_PROFILES_FALSE_PERMISSION = 146;
-  CAN_INTERACT_ACROSS_PROFILES_FALSE_NO_PROFILES = 147;
-  CREATE_CROSS_PROFILE_INTENT = 148;
-  IS_MANAGED_PROFILE = 149;
-  START_ACTIVITY_BY_INTENT = 150;
-  BIND_CROSS_PROFILE_SERVICE = 151;
-  PROVISIONING_DPC_SETUP_STARTED = 152;
-  PROVISIONING_DPC_SETUP_COMPLETED = 153;
-  PROVISIONING_ORGANIZATION_OWNED_MANAGED_PROFILE = 154;
-  RESOLVER_CROSS_PROFILE_TARGET_OPENED = 155;
-  RESOLVER_SWITCH_TABS = 156;
-  RESOLVER_EMPTY_STATE_WORK_APPS_DISABLED = 157;
-  RESOLVER_EMPTY_STATE_NO_SHARING_TO_PERSONAL= 158;
-  RESOLVER_EMPTY_STATE_NO_SHARING_TO_WORK= 159;
-  RESOLVER_EMPTY_STATE_NO_APPS_RESOLVED= 160;
-  RESOLVER_AUTOLAUNCH_CROSS_PROFILE_TARGET = 161;
-  CROSS_PROFILE_SETTINGS_PAGE_LAUNCHED_FROM_APP = 162;
-  CROSS_PROFILE_SETTINGS_PAGE_LAUNCHED_FROM_SETTINGS = 163;
-  CROSS_PROFILE_SETTINGS_PAGE_ADMIN_RESTRICTED = 164;
-  CROSS_PROFILE_SETTINGS_PAGE_MISSING_WORK_APP = 165;
-  CROSS_PROFILE_SETTINGS_PAGE_MISSING_PERSONAL_APP = 166;
-  CROSS_PROFILE_SETTINGS_PAGE_MISSING_INSTALL_BANNER_INTENT = 167;
-  CROSS_PROFILE_SETTINGS_PAGE_INSTALL_BANNER_CLICKED = 168;
-  CROSS_PROFILE_SETTINGS_PAGE_INSTALL_BANNER_NO_INTENT_CLICKED  = 169;
-  CROSS_PROFILE_SETTINGS_PAGE_USER_CONSENTED = 170;
-  CROSS_PROFILE_SETTINGS_PAGE_USER_DECLINED_CONSENT = 171;
-  CROSS_PROFILE_SETTINGS_PAGE_PERMISSION_REVOKED = 172;
-  DOCSUI_EMPTY_STATE_NO_PERMISSION = 173;
-  DOCSUI_EMPTY_STATE_QUIET_MODE = 174;
-  DOCSUI_LAUNCH_OTHER_APP = 175;
-  DOCSUI_PICK_RESULT = 176;
-}
diff --git a/core/proto/android/stats/devicepolicy/jarjar-rules.txt b/core/proto/android/stats/devicepolicy/jarjar-rules.txt
deleted file mode 100644
index 40043a86..0000000
--- a/core/proto/android/stats/devicepolicy/jarjar-rules.txt
+++ /dev/null
@@ -1 +0,0 @@
-rule com.google.protobuf.nano.** com.android.framework.protobuf.nano.@1
diff --git a/core/proto/android/stats/dnsresolver/Android.bp b/core/proto/android/stats/dnsresolver/Android.bp
deleted file mode 100644
index 1e8c763..0000000
--- a/core/proto/android/stats/dnsresolver/Android.bp
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (C) 2019 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-java_library_static {
-    name: "dnsresolverprotosnano",
-    proto: {
-        type: "nano",
-    },
-    srcs: [
-        "dns_resolver.proto",
-    ],
-    sdk_version: "system_current",
-}
diff --git a/core/proto/android/stats/dnsresolver/dns_resolver.proto b/core/proto/android/stats/dnsresolver/dns_resolver.proto
deleted file mode 100644
index b17d12c..0000000
--- a/core/proto/android/stats/dnsresolver/dns_resolver.proto
+++ /dev/null
@@ -1,375 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-syntax = "proto2";
-package android.stats.dnsresolver;
-
-enum EventType {
-    EVENT_UNKNOWN = 0;
-    EVENT_GETADDRINFO = 1;
-    EVENT_GETHOSTBYNAME = 2;
-    EVENT_GETHOSTBYADDR = 3;
-    EVENT_RES_NSEND = 4;
-}
-
-// The return value of the DNS resolver for each DNS lookups.
-// bionic/libc/include/netdb.h
-// system/netd/resolv/include/netd_resolv/resolv.h
-enum ReturnCode {
-    RC_EAI_NO_ERROR = 0;
-    RC_EAI_ADDRFAMILY = 1;
-    RC_EAI_AGAIN = 2;
-    RC_EAI_BADFLAGS = 3;
-    RC_EAI_FAIL = 4;
-    RC_EAI_FAMILY = 5;
-    RC_EAI_MEMORY = 6;
-    RC_EAI_NODATA = 7;
-    RC_EAI_NONAME = 8;
-    RC_EAI_SERVICE = 9;
-    RC_EAI_SOCKTYPE = 10;
-    RC_EAI_SYSTEM = 11;
-    RC_EAI_BADHINTS = 12;
-    RC_EAI_PROTOCOL = 13;
-    RC_EAI_OVERFLOW = 14;
-    RC_RESOLV_INTERNAL_ERROR = 254;
-    RC_RESOLV_TIMEOUT = 255;
-    RC_EAI_MAX = 256;
-}
-
-enum NsRcode {
-    NS_R_NO_ERROR = 0;  // No error occurred.
-    NS_R_FORMERR = 1;   // Format error.
-    NS_R_SERVFAIL = 2;  // Server failure.
-    NS_R_NXDOMAIN = 3;  // Name error.
-    NS_R_NOTIMPL = 4;   // Unimplemented.
-    NS_R_REFUSED = 5;   // Operation refused.
-    // these are for BIND_UPDATE
-    NS_R_YXDOMAIN = 6;  // Name exists
-    NS_R_YXRRSET = 7;   // RRset exists
-    NS_R_NXRRSET = 8;   // RRset does not exist
-    NS_R_NOTAUTH = 9;   // Not authoritative for zone
-    NS_R_NOTZONE = 10;  // Zone of record different from zone section
-    NS_R_MAX = 11;
-    // Define rcode=12~15(UNASSIGNED) in rcode enum type.
-    // Some DNS Servers might return undefined code to devices.
-    // Without the enum definition, that would be noise for our dashboard.
-    NS_R_UNASSIGNED12 = 12; // Unassigned
-    NS_R_UNASSIGNED13 = 13; // Unassigned
-    NS_R_UNASSIGNED14 = 14; // Unassigned
-    NS_R_UNASSIGNED15 = 15; // Unassigned
-    // The following are EDNS extended rcodes
-    NS_R_BADVERS = 16;
-    // The following are TSIG errors
-    // NS_R_BADSIG  = 16,
-    NS_R_BADKEY = 17;
-    NS_R_BADTIME = 18;
-    NS_R_INTERNAL_ERROR = 254;
-    NS_R_TIMEOUT = 255;
-}
-
-// Currently defined type values for resources and queries.
-enum NsType {
-    NS_T_INVALID = 0;      // Cookie.
-    NS_T_A = 1;            // Host address.
-    NS_T_NS = 2;           // Authoritative server.
-    NS_T_MD = 3;           // Mail destination.
-    NS_T_MF = 4;           // Mail forwarder.
-    NS_T_CNAME = 5;        // Canonical name.
-    NS_T_SOA = 6;          // Start of authority zone.
-    NS_T_MB = 7;           // Mailbox domain name.
-    NS_T_MG = 8;           // Mail group member.
-    NS_T_MR = 9;           // Mail rename name.
-    NS_T_NULL = 10;        // Null resource record.
-    NS_T_WKS = 11;         // Well known service.
-    NS_T_PTR = 12;         // Domain name pointer.
-    NS_T_HINFO = 13;       // Host information.
-    NS_T_MINFO = 14;       // Mailbox information.
-    NS_T_MX = 15;          // Mail routing information.
-    NS_T_TXT = 16;         // Text strings.
-    NS_T_RP = 17;          // Responsible person.
-    NS_T_AFSDB = 18;       // AFS cell database.
-    NS_T_X25 = 19;         // X_25 calling address.
-    NS_T_ISDN = 20;        // ISDN calling address.
-    NS_T_RT = 21;          // Router.
-    NS_T_NSAP = 22;        // NSAP address.
-    NS_T_NSAP_PTR = 23;    // Reverse NSAP lookup (deprecated).
-    NS_T_SIG = 24;         // Security signature.
-    NS_T_KEY = 25;         // Security key.
-    NS_T_PX = 26;          // X.400 mail mapping.
-    NS_T_GPOS = 27;        // Geographical position (withdrawn).
-    NS_T_AAAA = 28;        // IPv6 Address.
-    NS_T_LOC = 29;         // Location Information.
-    NS_T_NXT = 30;         // Next domain (security).
-    NS_T_EID = 31;         // Endpoint identifier.
-    NS_T_NIMLOC = 32;      // Nimrod Locator.
-    NS_T_SRV = 33;         // Server Selection.
-    NS_T_ATMA = 34;        // ATM Address
-    NS_T_NAPTR = 35;       // Naming Authority PoinTeR
-    NS_T_KX = 36;          // Key Exchange
-    NS_T_CERT = 37;        // Certification record
-    NS_T_A6 = 38;          // IPv6 address (experimental)
-    NS_T_DNAME = 39;       // Non-terminal DNAME
-    NS_T_SINK = 40;        // Kitchen sink (experimentatl)
-    NS_T_OPT = 41;         // EDNS0 option (meta-RR)
-    NS_T_APL = 42;         // Address prefix list (RFC 3123)
-    NS_T_DS = 43;          // Delegation Signer
-    NS_T_SSHFP = 44;       // SSH Fingerprint
-    NS_T_IPSECKEY = 45;    // IPSEC Key
-    NS_T_RRSIG = 46;       // RRset Signature
-    NS_T_NSEC = 47;        // Negative security
-    NS_T_DNSKEY = 48;      // DNS Key
-    NS_T_DHCID = 49;       // Dynamic host configuratin identifier
-    NS_T_NSEC3 = 50;       // Negative security type 3
-    NS_T_NSEC3PARAM = 51;  // Negative security type 3 parameters
-    NS_T_HIP = 55;         // Host Identity Protocol
-    NS_T_SPF = 99;         // Sender Policy Framework
-    NS_T_TKEY = 249;       // Transaction key
-    NS_T_TSIG = 250;       // Transaction signature.
-    NS_T_IXFR = 251;       // Incremental zone transfer.
-    NS_T_AXFR = 252;       // Transfer zone of authority.
-    NS_T_MAILB = 253;      // Transfer mailbox records.
-    NS_T_MAILA = 254;      // Transfer mail agent records.
-    NS_T_ANY = 255;        // Wildcard match.
-    NS_T_ZXFR = 256;       // BIND-specific, nonstandard.
-    NS_T_DLV = 32769;      // DNSSEC look-aside validatation.
-    NS_T_MAX = 65536;
-}
-
-enum IpVersion {
-    IV_UNKNOWN = 0;
-    IV_IPV4 = 1;
-    IV_IPV6 = 2;
-}
-
-enum Protocol {
-    PROTO_UNKNOWN = 0;
-    PROTO_UDP = 1;
-    PROTO_TCP = 2;
-    PROTO_DOT = 3;
-}
-
-enum PrivateDnsModes {
-    PDM_UNKNOWN = 0;
-    PDM_OFF = 1;
-    PDM_OPPORTUNISTIC = 2;
-    PDM_STRICT = 3;
-}
-
-enum NetworkType {
-    NT_UNKNOWN = 0;
-    // Indicates this network uses a Cellular transport.
-    NT_CELLULAR = 1;
-    // Indicates this network uses a Wi-Fi transport.
-    NT_WIFI = 2;
-    // Indicates this network uses a Bluetooth transport.
-    NT_BLUETOOTH = 3;
-    // Indicates this network uses an Ethernet transport.
-    NT_ETHERNET = 4;
-    // Indicates this network uses a VPN transport, now deprecated.
-    NT_VPN = 5 [deprecated=true];
-    // Indicates this network uses a Wi-Fi Aware transport.
-    NT_WIFI_AWARE = 6;
-    // Indicates this network uses a LoWPAN transport.
-    NT_LOWPAN = 7;
-    // Indicates this network uses a Cellular+VPN transport.
-    NT_CELLULAR_VPN = 8;
-    // Indicates this network uses a Wi-Fi+VPN transport.
-    NT_WIFI_VPN = 9;
-    // Indicates this network uses a Bluetooth+VPN transport.
-    NT_BLUETOOTH_VPN = 10;
-    // Indicates this network uses an Ethernet+VPN transport.
-    NT_ETHERNET_VPN = 11;
-    // Indicates this network uses a Wi-Fi+Cellular+VPN transport.
-    NT_WIFI_CELLULAR_VPN = 12;
-}
-
-enum CacheStatus{
-    // the cache can't handle that kind of queries.
-    // or the answer buffer is too small.
-    CS_UNSUPPORTED = 0;
-    // the cache doesn't know about this query.
-    CS_NOTFOUND = 1;
-    // the cache found the answer.
-    CS_FOUND = 2;
-    // Don't do anything on cache.
-    CS_SKIP = 3;
-}
-
-// The enum LinuxErrno is defined in the following 2 files.
-// 1. bionic/libc/kernel/uapi/asm-generic/errno-base.h
-// 2. bionic/libc/kernel/uapi/asm-generic/errno.h
-enum LinuxErrno {
-    SYS_NO_ERROR = 0;
-    SYS_EPERM = 1;              // Not super-user
-    SYS_ENOENT = 2;             // No such file or directory
-    SYS_ESRCH = 3;              // No such process
-    SYS_EINTR = 4;              // Interrupted system call
-    SYS_EIO = 5;                // I/O error
-    SYS_ENXIO = 6;              // No such device or address
-    SYS_E2BIG = 7;              // Arg list too long
-    SYS_ENOEXEC = 8;            // Exec format error
-    SYS_EBADF = 9;              // Bad file number
-    SYS_ECHILD = 10;            // No children
-    SYS_EAGAIN = 11;            // No more processes
-    SYS_ENOMEM = 12;            // Not enough core
-    SYS_EACCES = 13;            // Permission denied
-    SYS_EFAULT = 14;            // Bad address
-    SYS_ENOTBLK = 15;           // Block device required
-    SYS_EBUSY = 16;             // Mount device busy
-    SYS_EEXIST = 17;            // File exists
-    SYS_EXDEV = 18;             // Cross-device link
-    SYS_ENODEV = 19;            // No such device
-    SYS_ENOTDIR = 20;           // Not a directory
-    SYS_EISDIR = 21;            // Is a directory
-    SYS_EINVAL = 22;            // Invalid argument
-    SYS_ENFILE = 23;            // Too many open files in system
-    SYS_EMFILE = 24;            // Too many open files
-    SYS_ENOTTY = 25;            // Not a typewriter
-    SYS_ETXTBSY = 26;           // Text file busy
-    SYS_EFBIG = 27;             // File too large
-    SYS_ENOSPC = 28;            // No space left on device
-    SYS_ESPIPE = 29;            // Illegal seek
-    SYS_EROFS = 30;             // Read only file system
-    SYS_EMLINK = 31;            // Too many links
-    SYS_EPIPE = 32;             // Broken pipe
-    SYS_EDOM = 33;              // Math arg out of domain of func
-    SYS_ERANGE = 34;            // Math result not representable
-    SYS_EDEADLOCK = 35;         // File locking deadlock error
-    SYS_ENAMETOOLONG = 36;      // File or path name too long
-    SYS_ENOLCK = 37;            // No record locks available
-    SYS_ENOSYS = 38;            // Function not implemented
-    SYS_ENOTEMPTY = 39;         // Directory not empty
-    SYS_ELOOP = 40;             // Too many symbolic links
-    SYS_ENOMSG = 42;            // No message of desired type
-    SYS_EIDRM = 43;             // Identifier removed
-    SYS_ECHRNG = 44;            // Channel number out of range
-    SYS_EL2NSYNC = 45;          // Level 2 not synchronized
-    SYS_EL3HLT = 46;            // Level 3 halted
-    SYS_EL3RST = 47;            // Level 3 reset
-    SYS_ELNRNG = 48;            // Link number out of range
-    SYS_EUNATCH = 49;           // rotocol driver not attached
-    SYS_ENOCSI = 50;            // No CSI structure available
-    SYS_EL2HLT = 51;            // Level 2 halted
-    SYS_EBADE = 52;             // Invalid exchange
-    SYS_EBADR = 53;             // Invalid request descriptor
-    SYS_EXFULL = 54;            // Exchange full
-    SYS_ENOANO = 55;            // No anode
-    SYS_EBADRQC = 56;           // Invalid request code
-    SYS_EBADSLT = 57;           // Invalid slot
-    SYS_EBFONT = 59;            // Bad font file fmt
-    SYS_ENOSTR = 60;            // Device not a stream
-    SYS_ENODATA = 61;           // No data (for no delay io)
-    SYS_ETIME = 62;             // Timer expired
-    SYS_ENOSR = 63;             // Out of streams resources
-    SYS_ENONET = 64;            // Machine is not on the network
-    SYS_ENOPKG = 65;            // Package not installed
-    SYS_EREMOTE = 66;           // The object is remote
-    SYS_ENOLINK = 67;           // The link has been severed
-    SYS_EADV = 68;              // Advertise error
-    SYS_ESRMNT = 69;            // Srmount error
-    SYS_ECOMM = 70;             // Communication error on send
-    SYS_EPROTO = 71;            // Protocol error
-    SYS_EMULTIHOP = 72;         // Multihop attempted
-    SYS_EDOTDOT = 73;           // Cross mount point (not really error)
-    SYS_EBADMSG = 74;           // Trying to read unreadable message
-    SYS_EOVERFLOW = 75;         // Value too large for defined data type
-    SYS_ENOTUNIQ = 76;          // Given log. name not unique
-    SYS_EBADFD = 77;            // f.d. invalid for this operation
-    SYS_EREMCHG = 78;           // Remote address changed
-    SYS_ELIBACC = 79;           // Can't access a needed shared lib
-    SYS_ELIBBAD = 80;           // Accessing a corrupted shared lib
-    SYS_ELIBSCN = 81;           // .lib section in a.out corrupted
-    SYS_ELIBMAX = 82;           // Attempting to link in too many libs
-    SYS_ELIBEXEC = 83;          // Attempting to exec a shared library
-    SYS_EILSEQ = 84;
-    SYS_ERESTART = 85;
-    SYS_ESTRPIPE = 86;
-    SYS_EUSERS = 87;
-    SYS_ENOTSOCK = 88;          // Socket operation on non-socket
-    SYS_EDESTADDRREQ = 89;      // Destination address required
-    SYS_EMSGSIZE = 90;          // Message too long
-    SYS_EPROTOTYPE = 91;        // Protocol wrong type for socket
-    SYS_ENOPROTOOPT = 92;       // Protocol not available
-    SYS_EPROTONOSUPPORT = 93;   // Unknown protocol
-    SYS_ESOCKTNOSUPPORT = 94;   // Socket type not supported
-    SYS_EOPNOTSUPP = 95;        // Operation not supported on transport endpoint
-    SYS_EPFNOSUPPORT = 96;      // Protocol family not supported
-    SYS_EAFNOSUPPORT = 97;      // Address family not supported by protocol family
-    SYS_EADDRINUSE = 98;        // Address already in use
-    SYS_EADDRNOTAVAIL = 99;     // Address not available
-    SYS_ENETDOWN = 100;         // Network interface is not configured
-    SYS_ENETUNREACH = 101;      // Network is unreachable
-    SYS_ENETRESET = 102;
-    SYS_ECONNABORTED = 103;     // Connection aborted
-    SYS_ECONNRESET = 104;       // Connection reset by peer
-    SYS_ENOBUFS = 105;          // No buffer space available
-    SYS_EISCONN = 106;          // Socket is already connected
-    SYS_ENOTCONN = 107;         // Socket is not connected
-    SYS_ESHUTDOWN = 108;        // Can't send after socket shutdown
-    SYS_ETOOMANYREFS = 109;
-    SYS_ETIMEDOUT = 110;        // Connection timed out
-    SYS_ECONNREFUSED = 111;     // Connection refused
-    SYS_EHOSTDOWN = 112;        // Host is down
-    SYS_EHOSTUNREACH = 113;     // Host is unreachable
-    SYS_EALREADY = 114;         // Socket already connected
-    SYS_EINPROGRESS = 115;      // Connection already in progress
-    SYS_ESTALE = 116;
-    SYS_EUCLEAN = 117;
-    SYS_ENOTNAM = 118;
-    SYS_ENAVAIL = 119;
-    SYS_EISNAM = 120;
-    SYS_EREMOTEIO = 121;
-    SYS_EDQUOT = 122;
-    SYS_ENOMEDIUM = 123;        // No medium (in tape drive)
-    SYS_EMEDIUMTYPE = 124;
-    SYS_ECANCELED = 125;
-    SYS_ENOKEY = 126;
-    SYS_EKEYEXPIRED = 127;
-    SYS_EKEYREVOKED = 128;
-    SYS_EKEYREJECTED = 129;
-    SYS_EOWNERDEAD = 130;
-    SYS_ENOTRECOVERABLE = 131;
-    SYS_ERFKILL = 132;
-    SYS_EHWPOISON = 133;
-}
-
-message DnsQueryEvent {
-    optional android.stats.dnsresolver.NsRcode rcode = 1;
-
-    optional android.stats.dnsresolver.NsType type = 2;
-
-    optional android.stats.dnsresolver.CacheStatus cache_hit = 3;
-
-    optional android.stats.dnsresolver.IpVersion ip_version = 4;
-
-    optional android.stats.dnsresolver.Protocol protocol = 5;
-
-    // Number of DNS query retry times
-    optional int32 retry_times = 6;
-
-    // Ordinal number of name server.
-    optional int32 dns_server_index = 7;
-
-    // Used only by TCP and DOT. True for new connections.
-    optional bool connected = 8;
-
-    optional int32 latency_micros = 9;
-
-    optional android.stats.dnsresolver.LinuxErrno linux_errno = 10;
-}
-
-message DnsQueryEvents {
-    repeated DnsQueryEvent dns_query_event = 1;
-}
diff --git a/core/proto/android/stats/docsui/docsui_enums.proto b/core/proto/android/stats/docsui/docsui_enums.proto
deleted file mode 100644
index 5963f6a..0000000
--- a/core/proto/android/stats/docsui/docsui_enums.proto
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-package android.stats.docsui;
-option java_multiple_files = true;
-
-enum LaunchAction {
-    UNKNOWN = 0;
-    OPEN = 1;
-    CREATE = 2;
-    GET_CONTENT = 3;
-    OPEN_TREE = 4;
-    PICK_COPY_DEST = 5;
-    BROWSE = 6;
-    OTHER = 7;
-}
-
-enum MimeType {
-    MIME_UNKNOWN = 0;
-    MIME_NONE = 1;
-    MIME_ANY = 2;
-    MIME_APPLICATION = 3;
-    MIME_AUDIO = 4;
-    MIME_IMAGE = 5;
-    MIME_MESSAGE = 6;
-    MIME_MULTIPART = 7;
-    MIME_TEXT = 8;
-    MIME_VIDEO = 9;
-    MIME_OTHER = 10;
-}
-
-enum Root {
-    ROOT_UNKNOWN = 0;
-    ROOT_NONE = 1;
-    ROOT_OTHER_DOCS_PROVIDER = 2;
-    ROOT_AUDIO = 3;
-    ROOT_DEVICE_STORAGE = 4;
-    ROOT_DOWNLOADS = 5;
-    ROOT_HOME = 6;
-    ROOT_IMAGES = 7;
-    ROOT_RECENTS = 8;
-    ROOT_VIDEOS = 9;
-    ROOT_MTP = 10;
-    ROOT_THIRD_PARTY_APP = 11;
-    ROOT_DOCUMENTS = 12;
-}
-
-enum ContextScope {
-    SCOPE_UNKNOWN = 0;
-    SCOPE_FILES = 1;
-    SCOPE_PICKER = 2;
-}
-
-enum Provider {
-    PROVIDER_UNKNOWN = 0;
-    PROVIDER_SYSTEM = 1;
-    PROVIDER_EXTERNAL = 2;
-}
-
-enum FileOperation {
-    OP_UNKNOWN = 0;
-    OP_OTHER = 1;
-    OP_COPY = 2;
-    OP_COPY_INTRA_PROVIDER = 3;
-    OP_COPY_SYSTEM_PROVIDER = 4;
-    OP_COPY_EXTERNAL_PROVIDER = 5;
-    OP_MOVE = 6;
-    OP_MOVE_INTRA_PROVIDER = 7;
-    OP_MOVE_SYSTEM_PROVIDER = 8;
-    OP_MOVE_EXTERNAL_PROVIDER = 9;
-    OP_DELETE = 10;
-    OP_RENAME = 11;
-    OP_CREATE_DIR = 12;
-    OP_OTHER_ERROR = 13;
-    OP_DELETE_ERROR = 14;
-    OP_MOVE_ERROR = 15;
-    OP_COPY_ERROR = 16;
-    OP_RENAME_ERROR = 17;
-    OP_CREATE_DIR_ERROR = 18;
-    OP_COMPRESS_INTRA_PROVIDER = 19;
-    OP_COMPRESS_SYSTEM_PROVIDER = 20;
-    OP_COMPRESS_EXTERNAL_PROVIDER = 21;
-    OP_EXTRACT_INTRA_PROVIDER = 22;
-    OP_EXTRACT_SYSTEM_PROVIDER = 23;
-    OP_EXTRACT_EXTERNAL_PROVIDER = 24;
-    OP_COMPRESS_ERROR = 25;
-    OP_EXTRACT_ERROR = 26;
-}
-
-enum SubFileOperation {
-    SUB_OP_UNKNOWN = 0;
-    SUB_OP_QUERY_DOC = 1;
-    SUB_OP_QUERY_CHILD = 2;
-    SUB_OP_OPEN_FILE = 3;
-    SUB_OP_READ_FILE = 4;
-    SUB_OP_CREATE_DOC = 5;
-    SUB_OP_WRITE_FILE = 6;
-    SUB_OP_DELETE_DOC = 7;
-    SUB_OP_OBTAIN_STREAM_TYPE = 8;
-    SUB_OP_QUICK_MOVE = 9;
-    SUB_OP_QUICK_COPY = 10;
-}
-
-enum CopyMoveOpMode {
-    MODE_UNKNOWN = 0;
-    MODE_PROVIDER = 1;
-    MODE_CONVERTED = 2;
-    MODE_CONVENTIONAL = 3;
-}
-
-enum Authority {
-    AUTH_UNKNOWN = 0;
-    AUTH_OTHER = 1;
-    AUTH_MEDIA = 2;
-    AUTH_STORAGE_INTERNAL = 3;
-    AUTH_STORAGE_EXTERNAL = 4;
-    AUTH_DOWNLOADS = 5;
-    AUTH_MTP = 6;
-}
-
-enum UserAction {
-    ACTION_UNKNOWN = 0;
-    ACTION_OTHER = 1;
-    ACTION_GRID = 2;
-    ACTION_LIST = 3;
-    ACTION_SORT_NAME = 4;
-    ACTION_SORT_DATE = 5;
-    ACTION_SORT_SIZE = 6;
-    ACTION_SORT_TYPE = 7;
-    ACTION_SEARCH = 8;
-    ACTION_SHOW_SIZE = 9;
-    ACTION_HIDE_SIZE = 10;
-    ACTION_SETTINGS = 11;
-    ACTION_COPY_TO = 12;
-    ACTION_MOVE_TO = 13;
-    ACTION_DELETE = 14;
-    ACTION_RENAME = 15;
-    ACTION_CREATE_DIR = 16;
-    ACTION_SELECT_ALL = 17;
-    ACTION_SHARE = 18;
-    ACTION_OPEN = 19;
-    ACTION_SHOW_ADVANCED = 20;
-    ACTION_HIDE_ADVANCED = 21;
-    ACTION_NEW_WINDOW = 22;
-    ACTION_PASTE_CLIPBOARD = 23;
-    ACTION_COPY_CLIPBOARD = 24;
-    ACTION_DRAG_N_DROP = 25;
-    ACTION_DRAG_N_DROP_MULTI_WINDOW = 26;
-    ACTION_CUT_CLIPBOARD = 27;
-    ACTION_COMPRESS = 28;
-    ACTION_EXTRACT_TO = 29;
-    ACTION_VIEW_IN_APPLICATION = 30;
-    ACTION_INSPECTOR = 31;
-    ACTION_SEARCH_CHIP = 32;
-    ACTION_SEARCH_HISTORY = 33;
-}
-
-enum InvalidScopedAccess {
-    SCOPED_DIR_ACCESS_UNKNOWN = 0;
-    SCOPED_DIR_ACCESS_INVALID_ARGUMENTS = 1;
-    SCOPED_DIR_ACCESS_INVALID_DIRECTORY = 2;
-    SCOPED_DIR_ACCESS_ERROR = 3;
-    SCOPED_DIR_ACCESS_DEPRECATED = 4;
-}
-
-enum SearchType {
-    TYPE_UNKNOWN = 0;
-    TYPE_CHIP_IMAGES = 1;
-    TYPE_CHIP_AUDIOS = 2;
-    TYPE_CHIP_VIDEOS = 3;
-    TYPE_CHIP_DOCS = 4;
-    TYPE_SEARCH_HISTORY = 5;
-    TYPE_SEARCH_STRING = 6;
-    TYPE_CHIP_LARGE_FILES = 7;
-    TYPE_CHIP_FROM_THIS_WEEK = 8;
-}
-
-enum SearchMode {
-    SEARCH_UNKNOWN = 0;
-    SEARCH_KEYWORD = 1;
-    SEARCH_CHIPS = 2;
-    SEARCH_KEYWORD_N_CHIPS = 3;
-}
diff --git a/core/proto/android/stats/enums.proto b/core/proto/android/stats/enums.proto
deleted file mode 100644
index 8f8055e..0000000
--- a/core/proto/android/stats/enums.proto
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-
-package android.stats;
-option java_outer_classname = "StatsEnums";
-
-enum EventType {
-  // Unknown.
-  TYPE_UNKNOWN = 0;
-  CONTENT_SUGGESTIONS_CLASSIFY_CONTENT_CALL_SUCCEEDED = 1;
-  CONTENT_SUGGESTIONS_CLASSIFY_CONTENT_CALL_FAILED = 2;
-  CONTENT_SUGGESTIONS_SUGGEST_CONTENT_CALL_SUCCEEDED = 3;
-  CONTENT_SUGGESTIONS_SUGGEST_CONTENT_CALL_FAILED = 4;
-}
diff --git a/core/proto/android/stats/intelligence/enums.proto b/core/proto/android/stats/intelligence/enums.proto
deleted file mode 100644
index 0c210e3..0000000
--- a/core/proto/android/stats/intelligence/enums.proto
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-
-package android.stats.intelligence;
-option java_outer_classname = "IntelligenceStatsEnums";
-
-enum Status {
-  // The value wasn't set.
-  // protoc requires enum values to be unique by package rather than enum type.
-  // This forces us to prefix the enum values.
-  STATUS_UNKNOWN = 0;
-  // The event succeeded.
-  STATUS_SUCCEEDED = 1;
-  // The event had an error.
-  STATUS_FAILED = 2;
-}
-
-enum EventType {
-  // The value wasn't set.
-  EVENT_UNKNOWN = 0;
-  // ContentSuggestionsService classifyContentSelections call.
-  EVENT_CONTENT_SUGGESTIONS_CLASSIFY_CONTENT_CALL = 1;
-  // ContentSuggestionsService suggestContentSelections call.
-  EVENT_CONTENT_SUGGESTIONS_SUGGEST_CONTENT_CALL = 2;
-}
diff --git a/core/proto/android/stats/launcher/Android.bp b/core/proto/android/stats/launcher/Android.bp
deleted file mode 100644
index 976a0b8..0000000
--- a/core/proto/android/stats/launcher/Android.bp
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (C) 2018 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-java_library {
-    name: "launcherprotosnano",
-    proto: {
-        type: "nano",
-        output_params: ["store_unknown_fields=true"],
-        include_dirs: ["external/protobuf/src"],
-    },
-
-    sdk_version: "current",
-    srcs: [
-        "*.proto",
-    ],
-}
-
-java_library {
-    name: "launcherprotoslite",
-    proto: {
-        type: "lite",
-        include_dirs: ["external/protobuf/src"],
-    },
-
-    sdk_version: "current",
-    srcs: [
-        "*.proto",
-    ],
-}
diff --git a/core/proto/android/stats/launcher/launcher.proto b/core/proto/android/stats/launcher/launcher.proto
deleted file mode 100644
index fc177d5..0000000
--- a/core/proto/android/stats/launcher/launcher.proto
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-package android.stats.launcher;
-option java_multiple_files = true;
-
-enum LauncherAction {
-    DEFAULT_ACTION = 0;
-    LAUNCH_APP = 1;
-    LAUNCH_TASK = 2;
-    DISMISS_TASK = 3;
-    LONGPRESS = 4;
-    DRAGDROP = 5;
-    SWIPE_UP = 6;
-    SWIPE_DOWN = 7;
-    SWIPE_LEFT = 8;
-    SWIPE_RIGHT = 9;
-}
-
-enum LauncherState {
-    LAUNCHER_STATE_UNSPECIFIED = 0;
-    BACKGROUND = 1;
-    HOME = 2;
-    OVERVIEW = 3;
-    ALLAPPS = 4;
-    UNCHANGED = 5;
-}
-
-message LauncherTarget {
-    enum Type {
-        NONE = 0;
-        ITEM_TYPE = 1;
-        CONTROL_TYPE = 2;
-        CONTAINER_TYPE = 3;
-    }
-    enum Item {
-        DEFAULT_ITEM = 0;
-        APP_ICON = 1;
-        SHORTCUT = 2;
-        WIDGET = 3;
-        FOLDER_ICON = 4;
-        DEEPSHORTCUT = 5;
-        SEARCHBOX = 6;
-        EDITTEXT = 7;
-        NOTIFICATION = 8;
-        TASK = 9;
-    }
-    enum Container {
-        DEFAULT_CONTAINER = 0;
-        HOTSEAT = 1;
-        FOLDER = 2;
-        PREDICTION = 3;
-        SEARCHRESULT = 4;
-    }
-    enum Control {
-        DEFAULT_CONTROL = 0;
-        MENU = 1;
-        UNINSTALL = 2;
-        REMOVE = 3;
-    }
-    optional Type type = 1;
-    optional Item item = 2;
-    optional Container container = 3;
-    optional Control control = 4;
-    optional string launch_component = 5;
-    optional int32 page_id = 6;
-    optional int32 grid_x = 7;
-    optional int32 grid_y = 8;
-}
-
-message LauncherExtension {
-    repeated LauncherTarget src_target = 1;
-    repeated LauncherTarget dst_target = 2;
-}
diff --git a/core/proto/android/stats/location/location_enums.proto b/core/proto/android/stats/location/location_enums.proto
deleted file mode 100644
index 553c01c..0000000
--- a/core/proto/android/stats/location/location_enums.proto
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-
-package android.stats.location;
-option java_outer_classname = "LocationStatsEnums";
-
-
-// APIs from LocationManagerService
-enum LocationManagerServiceApi {
-    API_UNKNOWN = 0;
-    API_REQUEST_LOCATION_UPDATES = 1;
-    API_ADD_GNSS_MEASUREMENTS_LISTENER = 2;
-    API_REGISTER_GNSS_STATUS_CALLBACK = 3;
-    API_REQUEST_GEOFENCE = 4;
-    API_SEND_EXTRA_COMMAND = 5;
-}
-
-enum UsageState {
-    USAGE_STARTED = 0;
-    USAGE_ENDED = 1;
-}
-
-// Type of location providers
-enum ProviderType {
-    PROVIDER_UNKNOWN = 0;
-    PROVIDER_NETWORK = 1;
-    PROVIDER_GPS = 2;
-    PROVIDER_PASSIVE = 3;
-    PROVIDER_FUSED = 4;
-}
-
-// Type of Callback passed in for this API
-enum CallbackType {
-    CALLBACK_UNKNOWN = 0;
-    // Current API does not need a callback, e.g. sendExtraCommand
-    CALLBACK_NOT_APPLICABLE = 1;
-    CALLBACK_LISTENER = 2;
-    CALLBACK_PENDING_INTENT = 3;
-}
-
-// Possible values for mQuality field in
-// frameworks/base/location/java/android/location/LocationRequest.java
-enum LocationRequestQuality {
-    QUALITY_UNKNOWN = 0;
-    ACCURACY_FINE = 100;
-    ACCURACY_BLOCK = 102;
-    ACCURACY_CITY = 104;
-    POWER_NONE = 200;
-    POWER_LOW = 201;
-    POWER_HIGH = 203;
-}
-
-// Bucketized values for interval field in
-// frameworks/base/location/java/android/location/LocationRequest.java
-enum LocationRequestIntervalBucket {
-    INTERVAL_UNKNOWN = 0;
-    INTERVAL_BETWEEN_0_SEC_AND_1_SEC = 1;
-    INTERVAL_BETWEEN_1_SEC_AND_5_SEC = 2;
-    INTERVAL_BETWEEN_5_SEC_AND_1_MIN = 3;
-    INTERVAL_BETWEEN_1_MIN_AND_10_MIN = 4;
-    INTERVAL_BETWEEN_10_MIN_AND_1_HOUR = 5;
-    INTERVAL_LARGER_THAN_1_HOUR = 6;
-}
-
-// Bucketized values for small displacement field in
-// frameworks/base/location/java/android/location/LocationRequest.java
-// Value in meters.
-enum SmallestDisplacementBucket {
-    DISTANCE_UNKNOWN = 0;
-    DISTANCE_ZERO = 1;
-    DISTANCE_BETWEEN_0_AND_100 = 2;
-    DISTANCE_LARGER_THAN_100 = 3;
-}
-
-// Bucketized values for expire_in field in
-// frameworks/base/location/java/android/location/LocationRequest.java
-enum ExpirationBucket {
-    EXPIRATION_UNKNOWN = 0;
-    EXPIRATION_BETWEEN_0_AND_20_SEC = 1;
-    EXPIRATION_BETWEEN_20_SEC_AND_1_MIN = 2;
-    EXPIRATION_BETWEEN_1_MIN_AND_10_MIN = 3;
-    EXPIRATION_BETWEEN_10_MIN_AND_1_HOUR = 4;
-    EXPIRATION_LARGER_THAN_1_HOUR = 5;
-    EXPIRATION_NO_EXPIRY = 6;
-}
-
-// Bucketized values for radius field in
-// frameworks/base/location/java/android/location/Geofence.java
-// Value in meters.
-enum GeofenceRadiusBucket {
-    RADIUS_UNKNOWN = 0;
-    RADIUS_BETWEEN_0_AND_100 = 1;
-    RADIUS_BETWEEN_100_AND_200 = 2;
-    RADIUS_BETWEEN_200_AND_300 = 3;
-    RADIUS_BETWEEN_300_AND_1000 = 4;
-    RADIUS_BETWEEN_1000_AND_10000 = 5;
-    RADIUS_LARGER_THAN_100000 = 6;
-    RADIUS_NEGATIVE = 7;
-}
-
-// Caller Activity Importance.
-enum ActivityImportance {
-    IMPORTANCE_UNKNOWN = 0;
-    IMPORTANCE_TOP = 1;
-    IMPORTANCE_FORGROUND_SERVICE = 2;
-    IMPORTANCE_BACKGROUND = 3;
-}
diff --git a/core/proto/android/stats/mediametrics/mediametrics.proto b/core/proto/android/stats/mediametrics/mediametrics.proto
deleted file mode 100644
index 9f0ff59..0000000
--- a/core/proto/android/stats/mediametrics/mediametrics.proto
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-
-package android.stats.mediametrics;
-
-/**
- * Track how we arbitrate between microphone/input requests.
- * Logged from
- *   frameworks/av/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
- *   frameworks/av/services/mediaanalytics/statsd_audiopolicy.cpp
- * Next Tag: 10
- */
-message AudioPolicyData {
-    optional int32 status = 1;
-    optional string request_source = 2;
-    optional string request_package = 3;
-    optional int32 request_session = 4;
-    optional string request_device = 5;
-    optional string active_source = 6;
-    optional string active_package = 7;
-    optional int32 active_session = 8;
-    optional string active_device = 9;
-}
-
-/**
- * Track properties of audio recording
- * Logged from
- *   frameworks/av/media/libaudioclient/AudioRecord.cpp
- *   frameworks/av/services/mediaanalytics/statsd_audiorecord.cpp
- * Next Tag: 16
- */
-message AudioRecordData {
-    optional string encoding = 1;
-    optional string source = 2;
-    optional int32 latency = 3;
-    optional int32 samplerate = 4;
-    optional int32 channels = 5;
-    optional int64 created_millis = 6;
-    optional int64 duration_millis = 7;
-    optional int32 count = 8;
-    optional int32 error_code = 9;
-    optional string error_function = 10;
-    optional int32 port_id = 11;
-    optional int32 frame_count = 12;
-    optional string attributes = 13;
-    optional int64 channel_mask = 14;
-    optional int64 start_count = 15;
-
-}
-
-/**
- * Track audio thread performance data
- * Logged from
- *   frameworks/av/media/libnblog/ReportPerformance.cpp
- *   frameworks/av/services/mediaanalytics/statsd_audiothread.cpp
- * Next Tag: 28
- */
-message AudioThreadData {
-    optional string type = 1;
-    optional int32 framecount = 2;
-    optional int32 samplerate = 3;
-    optional string work_millis_hist = 4;
-    optional string latency_millis_hist = 5;
-    optional string warmup_millis_hist = 6;
-    optional int64 underruns = 7;
-    optional int64 overruns = 8;
-    optional int64 active_millis = 9;
-    optional int64 duration_millis = 10;
-
-    optional int32 id = 11;
-    optional int32 port_id = 12;
-    optional int32 sample_rate = 13;
-    optional int64 channel_mask = 14;
-    optional string encoding = 15;
-    optional int32 frame_count = 16;
-    optional string output_device = 17;
-    optional string input_device = 18;
-    optional double io_jitter_mean_millis = 19;
-    optional double io_jitter_stddev_millis = 20;
-    optional double process_time_mean_millis = 21;
-    optional double process_time_stddev_millis = 22;
-    optional double timestamp_jitter_mean_millis = 23;
-    optional double timestamp_jitter_stddev_millis = 24;
-    optional double latency_mean_millis = 25;
-    optional double latency_stddev_millis = 26;
-
-}
-
-/**
- * Track audio track playback data
- * Logged from
- *   frameworks/av/media/libaudioclient/AudioTrack.cpp
- *   frameworks/av/services/mediaanalytics/statsd_audiotrack.cpp
- * Next Tag: 12
- */
-message AudioTrackData {
-    optional string stream_type = 1;
-    optional string content_type = 2;
-    optional string track_usage = 3;
-    optional int32 sample_rate = 4;
-    optional int64 channel_mask = 5;
-
-    optional int32 underrun_frames = 6;
-    optional int32 startup_glitch = 7;
-
-    optional int32 port_id = 8;
-    optional string encoding = 9;
-    optional int32 frame_count = 10;
-    optional string attributes = 11;
-
-
-}
-
-/**
- * Track Media Codec usage
- * Logged from:
- *   frameworks/av/media/libstagefright/MediaCodec.cpp
- *   frameworks/av/services/mediaanalytics/statsd_codec.cpp
- * Next Tag: 26
- */
-message CodecData {
-    optional string codec = 1;
-    optional string mime = 2;
-    optional string mode = 3;
-    optional int32 encoder = 4;
-    optional int32 secure = 5;
-    optional int32 width = 6;
-    optional int32 height = 7;
-    optional int32 rotation = 8;
-    optional int32 crypto = 9;
-    optional int32 profile = 10;
-    optional int32 level = 11;
-    optional int32 max_width = 12;
-    optional int32 max_height = 13;
-    optional int32 error_code = 14;
-    optional string error_state = 15;
-    optional int64 latency_max = 16;
-    optional int64 latency_min = 17;
-    optional int64 latency_avg = 18;
-    optional int64 latency_count = 19;
-    optional int64 latency_unknown = 20;
-    optional int32 queue_input_buffer_error = 21;
-    optional int32 queue_secure_input_buffer_error = 22;
-    optional string bitrate_mode = 23;
-    optional int32 bitrate = 24;
-    optional int64 lifetime_millis = 25;
-}
-
-/**
- * Track Media Extractor (pulling video/audio streams out of containers) usage
- * Logged from:
- *   frameworks/av/media/libstagefright/RemoteMediaExtractor.cpp
- *   frameworks/av/services/mediaanalytics/statsd_extractor.cpp
- * Next Tag: 4
- */
-message ExtractorData {
-    optional string format = 1;
-    optional string mime = 2;
-    optional int32 tracks = 3;
-}
-
-/**
- * Track Media Player usage
- * this handles both nuplayer and nuplayer2
- * Logged from:
- *   frameworks/av/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp
- *   frameworks/av/media/libmediaplayer2/nuplayer2/NuPlayer2Driver.cpp
- *   frameworks/av/services/mediaanalytics/statsd_nuplayer.cpp
- * Next Tag: 21
- */
-message NuPlayerData {
-    optional string whichPlayer = 1;
-
-    optional string video_mime = 2;
-    optional string video_codec = 3;
-    optional int32 width = 4;
-    optional int32 height = 5;
-    optional int64 frames = 6;
-    optional int64 frames_dropped = 7;
-    optional double framerate = 8;
-    optional string audio_mime = 9;
-    optional string audio_codec = 10;
-    optional int64 duration_millis = 11;
-    optional int64 playing_millis = 12;
-    optional int32 error = 13;
-    optional int32 error_code = 14;
-    optional string error_state = 15;
-    optional string data_source_type = 16;
-    optional int64 rebuffering_millis = 17;
-    optional int32 rebuffers = 18;
-    optional int32 rebuffer_at_exit = 19;
-    optional int64 frames_dropped_startup = 20;
-}
-
-/**
- * Track information about recordings (e.g. camcorder)
- * Logged from
- *   frameworks/av/media/libmediaplayerservice/StagefrightRecorder.cpp
- *   frameworks/av/services/mediaanalytics/if_statsd.cpp
- * Next Tag: 22
- */
-message RecorderData {
-    optional string audio_mime = 1;
-    optional string video_mime = 2;
-    optional int32 video_profile = 3;
-    optional int32 video_level = 4;
-    optional int32 width = 5;
-    optional int32 height = 6;
-    optional int32 rotation = 7;
-    optional int32 framerate = 8;
-    optional int32 capture_fps = 9;
-    optional double capture_fps_enable = 10;
-    optional int64 duration_millis = 11;
-    optional int64 paused_millis = 12;
-    optional int32 paused_count = 13;
-    optional int32 audio_bitrate = 14;
-    optional int32 audio_channels = 15;
-    optional int32 audio_samplerate = 16;
-    optional int32 movie_timescale = 17;
-    optional int32 audio_timescale = 18;
-    optional int32 video_timescale = 19;
-    optional int32 video_bitrate = 20;
-    optional int32 iframe_interval = 21;
-}
diff --git a/core/proto/android/stats/mediaprovider/mediaprovider_enums.proto b/core/proto/android/stats/mediaprovider/mediaprovider_enums.proto
deleted file mode 100644
index 138782b..0000000
--- a/core/proto/android/stats/mediaprovider/mediaprovider_enums.proto
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-package android.stats.mediaprovider;
-option java_multiple_files = true;
-
-enum VolumeType {
-    // Volume is unknown
-    UNKNOWN = 0;
-    // Volume is MediaStore.VOLUME_INTERNAL
-    INTERNAL = 1;
-    // Volume is MediaStore.VOLUME_EXTERNAL_PRIMARY
-    EXTERNAL_PRIMARY = 2;
-    // Volume is non-primary external storage
-    EXTERNAL_OTHER = 3;
-}
diff --git a/core/proto/android/stats/otaupdate/updateengine_enums.proto b/core/proto/android/stats/otaupdate/updateengine_enums.proto
deleted file mode 100644
index a6e9919..0000000
--- a/core/proto/android/stats/otaupdate/updateengine_enums.proto
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-package android.stats.otaupdate;
-
-// The payload type of an OTA update attempt on A/B devices.
-enum PayloadType {
-    FULL = 10000;
-    DELTA = 10001;
-}
-
-// The attempt result reported by the update engine for an OTA update.
-enum AttemptResult {
-    UPDATE_SUCCEEDED = 10000;
-    INTERNAL_ERROR = 10001;
-    PAYLOAD_DOWNLOAD_ERROR = 10002;
-    METADATA_MALFORMED = 10003;
-    OPERATION_MALFORMED = 10004;
-    OPERATION_EXECUTION_ERROR = 10005;
-    METADATA_VERIFICATION_FAILED = 10006;
-    PAYLOAD_VERIFICATION_FAILED = 10007;
-    VERIFICATION_FAILED = 10008;
-    POSTINSTALL_FAILED = 10009;
-    ABNORMAL_TERMINATION = 10010;
-    UPDATE_CANCELED = 10011;
-    UPDATE_SUCCEEDED_NOT_ACTIVE = 10012;
-}
-
-// The error code reported by the update engine after an OTA update attempt
-// on A/B devices. More details in system/update_engine/common/error_code.h
-enum ErrorCode {
-    SUCCESS = 10000;
-    ERROR = 10001;
-    FILESYSTEM_COPIER_ERROR = 10004;
-    POST_INSTALL_RUNNER_ERROR = 10005;
-    PAYLOAD_MISMATCHED_TYPE_ERROR = 10006;
-    INSTALL_DEVICE_OPEN_ERROR = 10007;
-    KERNEL_DEVICE_OPEN_ERROR = 10008;
-    DOWNLOAD_TRANSFER_ERROR = 10009;
-    PAYLOAD_HASH_MISMATCH_ERROR = 10010;
-    PAYLOAD_SIZE_MISMATCH_ERROR = 10011;
-    DOWNLOAD_PAYLOAD_VERIFICATION_ERROR = 10012;
-    DOWNLOAD_NEW_PARTITION_INFO_ERROR = 10013;
-    DOWNLOAD_WRITE_ERROR = 10014;
-    NEW_ROOTFS_VERIFICATION_ERROR = 10015;
-    SIGNED_DELTA_PAYLOAD_EXPECTED_ERROR = 10017;
-    DOWNLOAD_PAYLOAD_PUB_KEY_VERIFICATION_ERROR = 10018;
-    DOWNLOAD_STATE_INITIALIZATION_ERROR = 10020;
-    DOWNLOAD_INVALID_METADATA_MAGIC_STRING = 10021;
-    DOWNLOAD_SIGNATURE_MISSING_IN_MANIFEST = 10022;
-    DOWNLOAD_MANIFEST_PARSE_ERROR = 10023;
-    DOWNLOAD_METADATA_SIGNATURE_ERROR = 10024;
-    DOWNLOAD_METADATA_SIGNATURE_VERIFICATION_ERROR = 10025;
-    DOWNLOAD_METADATA_SIGNATURE_MISMATCH = 10026;
-    DOWNLOAD_OPERATION_HASH_VERIFICATION_ERROR = 10027;
-    DOWNLOAD_OPERATION_EXECUTION_ERROR = 10028;
-    DOWNLOAD_OPERATION_HASH_MISMATCH = 10029;
-    DOWNLOAD_INVALID_METADATA_SIZE = 10032;
-    DOWNLOAD_INVALID_METADATA_SIGNATURE = 10033;
-    DOWNLOAD_OPERATION_HASH_MISSING_ERROR = 10038;
-    DOWNLOAD_METADATA_SIGNATURE_MISSING_ERROR = 10039;
-    UNSUPPORTED_MAJOR_PAYLOAD_VERSION = 10044;
-    UNSUPPORTED_MINOR_PAYLOAD_VERSION = 10045;
-    FILESYSTEM_VERIFIER_ERROR = 10047;
-    USER_CANCELED = 10048;
-    PAYLOAD_TIMESTAMP_ERROR = 10051;
-    UPDATED_BUT_NOT_ACTIVE = 10052;
-}
diff --git a/core/proto/android/stats/storage/storage_enums.proto b/core/proto/android/stats/storage/storage_enums.proto
deleted file mode 100644
index 6892e28..0000000
--- a/core/proto/android/stats/storage/storage_enums.proto
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-
-package android.stats.storage;
-
-enum ExternalStorageType {
-  UNKNOWN = 0;
-  SD_CARD = 1;
-  USB = 2;
-  OTHER = 3;
-}
diff --git a/core/proto/android/stats/style/Android.bp b/core/proto/android/stats/style/Android.bp
deleted file mode 100644
index f085a52..0000000
--- a/core/proto/android/stats/style/Android.bp
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (C) 2019 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-java_library {
-    name: "styleprotosnano",
-    proto: {
-        type: "nano",
-        output_params: ["store_unknown_fields=true"],
-        include_dirs: ["external/protobuf/src"],
-    },
-
-    sdk_version: "current",
-    srcs: [
-        "*.proto",
-    ],
-}
diff --git a/core/proto/android/stats/style/style_enums.proto b/core/proto/android/stats/style/style_enums.proto
deleted file mode 100644
index f3f491f..0000000
--- a/core/proto/android/stats/style/style_enums.proto
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-package android.stats.style;
-option java_multiple_files = true;
-
-enum Action {
-    DEFAULT_ACTION = 0;
-    ONRESUME = 1;
-    ONSTOP = 2;
-    PICKER_SELECT = 3;
-    PICKER_APPLIED = 4;
-    WALLPAPER_OPEN_CATEGORY = 5;
-    WALLPAPER_SELECT = 6;
-    WALLPAPER_APPLIED = 7;
-    WALLPAPER_EXPLORE = 8;
-    WALLPAPER_DOWNLOAD = 9;
-    WALLPAPER_REMOVE = 10;
-    LIVE_WALLPAPER_DOWNLOAD_SUCCESS = 11;
-    LIVE_WALLPAPER_DOWNLOAD_FAILED = 12;
-    LIVE_WALLPAPER_DOWNLOAD_CANCELLED = 13;
-    LIVE_WALLPAPER_DELETE_SUCCESS = 14;
-    LIVE_WALLPAPER_DELETE_FAILED = 15;
-    LIVE_WALLPAPER_APPLIED = 16;
-    LIVE_WALLPAPER_INFO_SELECT = 17;
-    LIVE_WALLPAPER_CUSTOMIZE_SELECT = 18;
-}
-
-enum LocationPreference {
-    LOCATION_PREFERENCE_UNSPECIFIED = 0;
-    LOCATION_UNAVAILABLE = 1;
-    LOCATION_CURRENT = 2;
-    LOCATION_MANUAL = 3;
-}
diff --git a/core/proto/android/stats/sysui/notification_enums.proto b/core/proto/android/stats/sysui/notification_enums.proto
deleted file mode 100644
index 30bdeca..0000000
--- a/core/proto/android/stats/sysui/notification_enums.proto
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-
-package android.stats.sysui;
-
-// Enum used in NotificationReported and NotificationChannelModified atoms
-enum NotificationImportance {  // Constants from NotificationManager.java
-  IMPORTANCE_UNSPECIFIED = -1000;  // Should not occur for real notifications.
-  IMPORTANCE_NONE = 0;  // No importance: does not show in the shade.
-  IMPORTANCE_MIN = 1;  // Minimum to show in the shade.
-  IMPORTANCE_LOW = 2;  // Shows in shade, maybe status bar, no buzz/beep.
-  IMPORTANCE_DEFAULT = 3;  // Shows everywhere, makes noise, no heads-up.
-  IMPORTANCE_HIGH = 4;  // Shows everywhere, makes noise, heads-up, may full-screen.
-  IMPORTANCE_IMPORTANT_CONVERSATION = 5;  // High + isImportantConversation().
-}
diff --git a/core/proto/android/stats/textclassifier/Android.bp b/core/proto/android/stats/textclassifier/Android.bp
deleted file mode 100644
index bf90227..0000000
--- a/core/proto/android/stats/textclassifier/Android.bp
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (C) 2019 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-java_library_static {
-    name: "textclassifierprotoslite",
-    proto: {
-        type: "lite",
-    },
-    srcs: [
-        "*.proto",
-    ],
-}
\ No newline at end of file
diff --git a/core/proto/android/stats/textclassifier/textclassifier_enums.proto b/core/proto/android/stats/textclassifier/textclassifier_enums.proto
deleted file mode 100644
index 4be7b7c..0000000
--- a/core/proto/android/stats/textclassifier/textclassifier_enums.proto
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-package android.stats.textclassifier;
-option java_multiple_files = true;
-
-enum EventType {
-    TYPE_UNKNOWN = 0;
-    // User started a new selection.
-    SELECTION_STARTED = 1;
-    // User modified an existing selection.
-    SELECTION_MODIFIED = 2;
-    // Smart selection triggered for a single token (word).
-    SMART_SELECTION_SINGLE = 3;
-    // Smart selection triggered spanning multiple tokens (words).
-    SMART_SELECTION_MULTI = 4;
-    // Something else other than user or the default TextClassifier triggered a selection.
-    AUTO_SELECTION = 5;
-    // Smart actions shown to the user.
-    ACTIONS_SHOWN = 6;
-    // User clicked a link.
-    LINK_CLICKED = 7;
-    // User typed over the selection.
-    OVERTYPE = 8;
-    // User clicked on Copy action.
-    COPY_ACTION = 9;
-    // User clicked on Paste action.
-    PASTE_ACTION = 10;
-    // User clicked on Cut action.
-    CUT_ACTION = 11;
-    // User clicked on Share action.
-    SHARE_ACTION = 12;
-    // User clicked on a Smart action.
-    SMART_ACTION = 13;
-    // User dragged+dropped the selection.
-    SELECTION_DRAG = 14;
-    // Selection is destroyed.
-    SELECTION_DESTROYED = 15;
-    // User clicked on a custom action.
-    OTHER_ACTION = 16;
-    // User clicked on Select All action
-    SELECT_ALL = 17;
-    // User reset the smart selection.
-    SELECTION_RESET = 18;
-    // User composed a reply.
-    MANUAL_REPLY = 19;
-    // TextClassifier generated some actions
-    ACTIONS_GENERATED = 20;
-    // Some text links were generated
-    LINKS_GENERATED = 21;
-}
-
-enum WidgetType {
-    WIDGET_TYPE_UNKNOWN = 0;
-    // Standard TextView
-    WIDGET_TYPE_TEXTVIEW = 1;
-    // EditText
-    WIDGET_TYPE_EDITTEXT = 2;
-    // Not selectable textview
-    WIDGET_TYPE_UNSELECTABLE_TEXTVIEW = 3;
-    // Standard Webview
-    WIDGET_TYPE_WEBVIEW = 4;
-    // Editable TextView
-    WIDGET_TYPE_EDIT_WEBVIEW = 5;
-    // Custom text widget
-    WIDGET_TYPE_CUSTOM_TEXTVIEW = 6;
-    // Custom editable text widget.
-    WIDGET_TYPE_CUSTOM_EDITTEXT = 7;
-    // Non-selectable text widget.
-    WIDGET_TYPE_CUSTOM_UNSELECTABLE_TEXTVIEW = 8;
-    // Notification
-    WIDGET_TYPE_NOTIFICATION = 9;
-}
diff --git a/core/proto/android/telecomm/enums.proto b/core/proto/android/telecomm/enums.proto
deleted file mode 100644
index 5ca4a85..0000000
--- a/core/proto/android/telecomm/enums.proto
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-package android.telecom;
-
-option java_outer_classname = "TelecomProtoEnums";
-option java_multiple_files = true;
-
-/**
- * Call states, primarily used in CallState.java,
- * Call.java, and CallsManager.java in packages/services.
- */
-enum CallStateEnum {
-    /**
-     * Indicates that a call is new and not connected. This is used as the default state internally
-     * within Telecom and should not be used between Telecom and call services. Call services are
-     * not expected to ever interact with NEW calls, but {@link android.telecom.InCallService}s will
-     * see calls in this state.
-     */
-    NEW = 0;
-
-    /**
-     * The initial state of an outgoing {@code Call}.
-     * Common transitions are to {@link #DIALING} state for a successful call or
-     * {@link #DISCONNECTED} if it failed.
-     */
-    CONNECTING = 1;
-
-    /**
-     * The state of an outgoing {@code Call} when waiting on user to select a
-     * {@link android.telecom.PhoneAccount} through which to place the call.
-     */
-    SELECT_PHONE_ACCOUNT = 2;
-
-    /**
-     * Indicates that a call is outgoing and in the dialing state. A call transitions to this state
-     * once an outgoing call has begun (e.g., user presses the dial button in Dialer). Calls in this
-     * state usually transition to {@link #ACTIVE} if the call was answered or {@link #DISCONNECTED}
-     * if the call was disconnected somehow (e.g., failure or cancellation of the call by the user).
-     */
-    DIALING = 3;
-
-    /**
-     * Indicates that a call is incoming and the user still has the option of answering, rejecting,
-     * or doing nothing with the call. This state is usually associated with some type of audible
-     * ringtone. Normal transitions are to {@link #ACTIVE} if answered or {@link #DISCONNECTED}
-     * otherwise.
-     */
-    RINGING = 4;
-
-    /**
-     * Indicates that a call is currently connected to another party and a communication channel is
-     * open between them. The normal transition to this state is by the user answering a
-     * {@link #DIALING} call or a {@link #RINGING} call being answered by the other party.
-     */
-    ACTIVE = 5;
-
-    /**
-     * Indicates that the call is currently on hold. In this state, the call is not terminated
-     * but no communication is allowed until the call is no longer on hold. The typical transition
-     * to this state is by the user putting an {@link #ACTIVE} call on hold by explicitly performing
-     * an action, such as clicking the hold button.
-     */
-    ON_HOLD = 6;
-
-    /**
-     * Indicates that a call is currently disconnected. All states can transition to this state
-     * by the call service giving notice that the connection has been severed. When the user
-     * explicitly ends a call, it will not transition to this state until the call service confirms
-     * the disconnection or communication was lost to the call service currently responsible for
-     * this call (e.g., call service crashes).
-     */
-    DISCONNECTED = 7;
-
-    /**
-     * Indicates that the call was attempted (mostly in the context of outgoing, at least at the
-     * time of writing) but cancelled before it was successfully connected.
-     */
-    ABORTED = 8;
-
-    /**
-     * Indicates that the call is in the process of being disconnected and will transition next
-     * to a {@link #DISCONNECTED} state.
-     * <p>
-     * This state is not expected to be communicated from the Telephony layer, but will be reported
-     * to the InCall UI for calls where disconnection has been initiated by the user but the
-     * ConnectionService has confirmed the call as disconnected.
-     */
-    DISCONNECTING = 9;
-
-    /**
-     * Indicates that the call is in the process of being pulled to the local device.
-     * <p>
-     * This state should only be set on a call with
-     * {@link android.telecom.Connection#PROPERTY_IS_EXTERNAL_CALL} and
-     * {@link android.telecom.Connection#CAPABILITY_CAN_PULL_CALL}.
-     */
-    PULLING = 10;
-
-    /**
-     * Indicates that an incoming call has been answered by the in-call UI, but Telephony hasn't yet
-     * set the call to active.
-     */
-    ANSWERED = 11;
-
-    /**
-     * Indicates that the call is undergoing audio processing by a different app in the background.
-     * @see android.telecom.Call#STATE_AUDIO_PROCESSING
-     */
-    AUDIO_PROCESSING = 12;
-
-    /**
-     * Indicates that the call is in a fake ringing state.
-     * @see android.telecom.Call#STATE_SIMULATED_RINGING
-     */
-    SIMULATED_RINGING = 13;
-}
-
-// Disconnect causes for a call. Primarily used by android/telecom/DisconnectCause.java
-enum DisconnectCauseEnum {
-    /**
-     * Disconnected because of an unknown or unspecified reason.
-     */
-    UNKNOWN = 0;
-
-    /**
-     * Disconnected because there was an error, such as a problem with the network.
-     */
-    ERROR = 1;
-
-    /**
-     * Disconnected because of a local user-initiated action, such as hanging up.
-     */
-    LOCAL = 2;
-
-    /**
-     * Disconnected because of a remote user-initiated action, such as the other party hanging up
-     * up.
-     */
-    REMOTE = 3;
-
-    /**
-     * Disconnected because it has been canceled.
-     */
-    CANCELED = 4;
-
-    /**
-     * Disconnected because there was no response to an incoming call.
-     */
-    MISSED = 5;
-
-    /**
-     * Disconnected because the user rejected an incoming call.
-     */
-    REJECTED = 6;
-
-    /**
-     * Disconnected because the other party was busy.
-     */
-    BUSY = 7;
-
-    /**
-     * Disconnected because of a restriction on placing the call, such as dialing in airplane
-     * mode.
-     */
-    RESTRICTED = 8;
-
-    /**
-     * Disconnected for reason not described by other disconnect codes.
-     */
-    OTHER = 9;
-
-    /**
-     * Disconnected because the connection manager did not support the call. The call will be tried
-     * again without a connection manager. See {@link PhoneAccount#CAPABILITY_CONNECTION_MANAGER}.
-     */
-    CONNECTION_MANAGER_NOT_SUPPORTED = 10;
-
-    /**
-     * Disconnected because the user did not locally answer the incoming call, but it was answered
-     * on another device where the call was ringing.
-     */
-    ANSWERED_ELSEWHERE = 11;
-
-    /**
-     * Disconnected because the call was pulled from the current device to another device.
-     */
-    CALL_PULLED = 12;
-}
diff --git a/core/proto/android/telephony/enums.proto b/core/proto/android/telephony/enums.proto
deleted file mode 100644
index f14e3ed..0000000
--- a/core/proto/android/telephony/enums.proto
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-package android.telephony;
-
-option java_outer_classname = "TelephonyProtoEnums";
-option java_multiple_files = true;
-
-enum CallBearerEnum {
-    /** Call bearer is unknown or invalid */
-    CALL_BEARER_UNKNOWN = 0;
-
-    /** Call bearer is legacy CS */
-    CALL_BEARER_CS = 1;
-
-    /** Call bearer is IMS */
-    CALL_BEARER_IMS = 2;
-}
-
-enum CallDirectionEnum {
-    /** Call direction: unknown or invalid */
-    CALL_DIRECTION_UNKNOWN = 0;
-
-    /** Call direction: mobile originated (outgoing for this device) */
-    CALL_DIRECTION_MO = 1;
-
-    /** Call direction: mobile terminated (incoming for this device) */
-    CALL_DIRECTION_MT = 2;
-}
-
-// Call setup duration buckets.
-// See com.android.internal.telephony.metrics.VoiceCallSessionStats for definition.
-enum CallSetupDurationEnum {
-    CALL_SETUP_DURATION_UNKNOWN = 0;
-    CALL_SETUP_DURATION_EXTREMELY_FAST = 1;
-    CALL_SETUP_DURATION_ULTRA_FAST = 2;
-    CALL_SETUP_DURATION_VERY_FAST = 3;
-    CALL_SETUP_DURATION_FAST = 4;
-    CALL_SETUP_DURATION_NORMAL = 5;
-    CALL_SETUP_DURATION_SLOW = 6;
-    CALL_SETUP_DURATION_VERY_SLOW = 7;
-    CALL_SETUP_DURATION_ULTRA_SLOW = 8;
-    CALL_SETUP_DURATION_EXTREMELY_SLOW = 9;
-}
-
-// Data conn. power states, primarily used by android/telephony/DataConnectionRealTimeInfo.java.
-enum DataConnectionPowerStateEnum {
-    DATA_CONNECTION_POWER_STATE_LOW = 1;
-    DATA_CONNECTION_POWER_STATE_MEDIUM = 2;
-    DATA_CONNECTION_POWER_STATE_HIGH = 3;
-    DATA_CONNECTION_POWER_STATE_UNKNOWN = 2147483647; // Java Integer.MAX_VALUE;
-}
-
-// Network type enums, primarily used by android/telephony/TelephonyManager.java.
-// Do not add negative types.
-enum NetworkTypeEnum {
-    NETWORK_TYPE_UNKNOWN = 0;
-    NETWORK_TYPE_GPRS = 1;
-    NETWORK_TYPE_EDGE = 2;
-    NETWORK_TYPE_UMTS = 3;
-    NETWORK_TYPE_CDMA = 4;
-    NETWORK_TYPE_EVDO_0 = 5;
-    NETWORK_TYPE_EVDO_A = 6;
-    NETWORK_TYPE_1XRTT = 7;
-    NETWORK_TYPE_HSDPA = 8;
-    NETWORK_TYPE_HSUPA = 9;
-    NETWORK_TYPE_HSPA = 10;
-    NETWORK_TYPE_IDEN = 11;
-    NETWORK_TYPE_EVDO_B = 12;
-    NETWORK_TYPE_LTE = 13;
-    NETWORK_TYPE_EHRPD = 14;
-    NETWORK_TYPE_HSPAP = 15;
-    NETWORK_TYPE_GSM = 16;
-    NETWORK_TYPE_TD_SCDMA = 17;
-    NETWORK_TYPE_IWLAN = 18;
-    NETWORK_TYPE_LTE_CA = 19;
-    NETWORK_TYPE_NR = 20;
-}
-
-// Signal strength levels, primarily used by android/telephony/SignalStrength.java.
-enum SignalStrengthEnum {
-    SIGNAL_STRENGTH_NONE_OR_UNKNOWN = 0;
-    SIGNAL_STRENGTH_POOR = 1;
-    SIGNAL_STRENGTH_MODERATE = 2;
-    SIGNAL_STRENGTH_GOOD = 3;
-    SIGNAL_STRENGTH_GREAT = 4;
-}
-
-enum ServiceStateEnum {
-    /**
-     * Normal operation condition, the phone is registered
-     * with an operator either in home network or in roaming.
-     */
-    SERVICE_STATE_IN_SERVICE = 0;
-
-    /**
-     * Phone is not registered with any operator, the phone
-     * can be currently searching a new operator to register to, or not
-     * searching to registration at all, or registration is denied, or radio
-     * signal is not available.
-     */
-    SERVICE_STATE_OUT_OF_SERVICE = 1;
-
-    /**
-     * The phone is registered and locked.  Only emergency numbers are allowed. {@more}
-     */
-    SERVICE_STATE_EMERGENCY_ONLY = 2;
-
-    /**
-     * Radio of telephony is explicitly powered off.
-     */
-    SERVICE_STATE_POWER_OFF = 3;
-}
-
-enum SimStateEnum {
-    SIM_STATE_UNKNOWN = 0;
-    /** SIM card state: no SIM card is available in the device */
-    SIM_STATE_ABSENT = 1;
-    /** SIM card state: Locked: requires the user's SIM PIN to unlock */
-    SIM_STATE_PIN_REQUIRED = 2;
-    /** SIM card state: Locked: requires the user's SIM PUK to unlock */
-    SIM_STATE_PUK_REQUIRED = 3;
-    /** SIM card state: Locked: requires a network PIN to unlock */
-    SIM_STATE_NETWORK_LOCKED = 4;
-    /** SIM card state: Ready */
-    SIM_STATE_READY = 5;
-    /** SIM card state: SIM Card is NOT READY */
-    SIM_STATE_NOT_READY = 6;
-    /** SIM card state: SIM Card Error, permanently disabled */
-    SIM_STATE_PERM_DISABLED = 7;
-    /** SIM card state: SIM Card Error, present but faulty */
-    SIM_STATE_CARD_IO_ERROR = 8;
-    /** SIM card state: SIM Card restricted, present but not usable due to
-     * carrier restrictions.
-     */
-    SIM_STATE_CARD_RESTRICTED = 9;
-    /**
-     * SIM card state: Loaded: SIM card applications have been loaded
-     * @hide
-     */
-    SIM_STATE_LOADED = 10;
-    /**
-     * SIM card state: SIM Card is present
-     * @hide
-     */
-    SIM_STATE_PRESENT = 11;
-}
diff --git a/core/proto/android/view/enums.proto b/core/proto/android/view/enums.proto
deleted file mode 100644
index 0172e78..0000000
--- a/core/proto/android/view/enums.proto
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-package android.view;
-
-option java_outer_classname = "ViewProtoEnums";
-option java_multiple_files = true;
-
-// Screen states, primarily used by android/view/Display.java.
-enum DisplayStateEnum {
-    // The display state is unknown.
-    DISPLAY_STATE_UNKNOWN = 0;
-    // The display state is off.
-    DISPLAY_STATE_OFF = 1;
-    // The display state is on.
-    DISPLAY_STATE_ON = 2;
-    // The display is dozing in a low power state; it is still on but is
-    // optimized for showing system-provided content while the device is
-    // non-interactive.
-    DISPLAY_STATE_DOZE = 3;
-    // The display is dozing in a suspended low power state; it is still on
-    // but is optimized for showing static system-provided content while the
-    // device is non-interactive.
-    DISPLAY_STATE_DOZE_SUSPEND = 4;
-    // The display is on and optimized for VR mode.
-    DISPLAY_STATE_VR = 5;
-    // The display is in a suspended full power state; it is still on but the
-    // CPU is not updating it.
-    DISPLAY_STATE_ON_SUSPEND = 6;
-}
-
-// Constants found in android.view.WindowManager.
-enum TransitionTypeEnum {
-    TRANSIT_NONE = 0;
-    TRANSIT_UNSET = -1;
-    TRANSIT_ACTIVITY_OPEN = 6;
-    TRANSIT_ACTIVITY_CLOSE = 7;
-    TRANSIT_TASK_OPEN = 8;
-    TRANSIT_TASK_CLOSE = 9;
-    TRANSIT_TASK_TO_FRONT = 10;
-    TRANSIT_TASK_TO_BACK = 11;
-    TRANSIT_WALLPAPER_CLOSE = 12;
-    TRANSIT_WALLPAPER_OPEN = 13;
-    TRANSIT_WALLPAPER_INTRA_OPEN = 14;
-    TRANSIT_WALLPAPER_INTRA_CLOSE = 15;
-    TRANSIT_TASK_OPEN_BEHIND = 16;
-    TRANSIT_TASK_IN_PLACE = 17;
-    TRANSIT_ACTIVITY_RELAUNCH = 18;
-    TRANSIT_DOCK_TASK_FROM_RECENTS = 19;
-    TRANSIT_KEYGUARD_GOING_AWAY = 20;
-    TRANSIT_KEYGUARD_GOING_AWAY_ON_WALLPAPER = 21;
-    TRANSIT_KEYGUARD_OCCLUDE = 22;
-    TRANSIT_KEYGUARD_UNOCCLUDE = 23;
-    TRANSIT_TRANSLUCENT_ACTIVITY_OPEN = 24;
-    TRANSIT_TRANSLUCENT_ACTIVITY_CLOSE = 25;
-    TRANSIT_CRASHING_ACTIVITY_CLOSE = 26;
-}
diff --git a/core/proto/android/wifi/enums.proto b/core/proto/android/wifi/enums.proto
deleted file mode 100644
index 315c579..0000000
--- a/core/proto/android/wifi/enums.proto
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-package android.net.wifi;
-
-option java_outer_classname = "WifiProtoEnums";
-option java_multiple_files = true;
-
-/**
- * Wifi Lock modes, primarily used in
- * frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiLockManager.java.
- */
-enum WifiModeEnum {
-    /**
-     * Deprecated.
-     * Wi-Fi will be kept active, and will behave normally.
-     */
-    WIFI_MODE_FULL = 1 [deprecated=true];
-
-    /**
-     * Deprecated.
-     * Wi-Fi will be kept active, but the only operation that will be supported is initiation of
-     * scans, and the subsequent reporting of scan results.
-     */
-    WIFI_MODE_SCAN_ONLY = 2 [deprecated=true];
-
-    /**
-     * Wi-Fi will not go to power save.
-     */
-    WIFI_MODE_FULL_HIGH_PERF = 3;
-
-    /**
-     * Wi-Fi will operate with a priority to achieve low latency.
-     */
-    WIFI_MODE_FULL_LOW_LATENCY = 4;
-}
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 8656820..e6619f5 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -511,6 +511,7 @@
     <protected-broadcast android:name="android.telecom.action.NUISANCE_CALL_STATUS_CHANGED" />
     <protected-broadcast android:name="android.telecom.action.PHONE_ACCOUNT_REGISTERED" />
     <protected-broadcast android:name="android.telecom.action.PHONE_ACCOUNT_UNREGISTERED" />
+    <protected-broadcast android:name="android.telecom.action.POST_CALL" />
     <protected-broadcast android:name="android.telecom.action.SHOW_MISSED_CALLS_NOTIFICATION" />
     <protected-broadcast android:name="android.telephony.action.CARRIER_CONFIG_CHANGED" />
     <protected-broadcast android:name="android.telephony.action.DEFAULT_SUBSCRIPTION_CHANGED" />
@@ -2150,7 +2151,7 @@
     <permission android:name="android.permission.READ_PRECISE_PHONE_STATE"
         android:protectionLevel="signature|privileged" />
 
-    <!-- @SystemApi Allows read access to privileged phone state.
+    <!-- @SystemApi @TestApi Allows read access to privileged phone state.
          @hide Used internally. -->
     <permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE"
         android:protectionLevel="signature|privileged" />
@@ -2192,6 +2193,11 @@
     <permission android:name="android.permission.BIND_INCALL_SERVICE"
         android:protectionLevel="signature|privileged" />
 
+    <!-- Allows to query ongoing call details and manage ongoing calls
+     <p>Protection level: signature|appop -->
+    <permission android:name="android.permission.MANAGE_ONGOING_CALLS"
+        android:protectionLevel="signature|appop" />
+
     <!-- Allows the app to request network scans from telephony.
          <p>Not for use by third-party applications.
          @SystemApi @hide-->
@@ -2682,6 +2688,14 @@
     <permission android:name="android.permission.SUGGEST_MANUAL_TIME_AND_ZONE"
         android:protectionLevel="signature" />
 
+    <!-- Allows applications like settings to manage configuration associated with automatic time
+         and time zone detection.
+         <p>Not for use by third-party applications.
+         @hide
+    -->
+    <permission android:name="android.permission.MANAGE_TIME_AND_ZONE_DETECTION"
+        android:protectionLevel="signature|privileged" />
+
     <!-- ==================================================== -->
     <!-- Permissions related to changing status bar   -->
     <!-- ==================================================== -->
@@ -3018,6 +3032,12 @@
     <permission android:name="android.permission.DUMP"
         android:protectionLevel="signature|privileged|development" />
 
+    <!-- Allows an application to start tracing for InputMethod and WindowManager.
+    <p>Not for use by third-party applications.
+    @hide -->
+    <permission android:name="android.permission.CONTROL_UI_TRACING"
+        android:protectionLevel="signature|privileged|development" />
+
     <!-- Allows an application to read the low-level system log files.
     <p>Not for use by third-party applications, because
     Log entries can contain the user's private information. -->
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index 5eb271e..54a002d 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -1216,7 +1216,7 @@
     <string name="dump_heap_ready_text" msgid="5849618132123045516">"የ<xliff:g id="PROC">%1$s</xliff:g> ሂደት ተራጋፊ ክምር ለማጋራት ለእርስዎ ይገኛል። ይጠንቀቁ፦ ይህ ተራጋፊ ክምር ሂደቱ ሊደርስባቸው የሚችለው ማንኛውም የግል መረጃ ሊኖረው ይችላል፣ ይህ እርስዎ የተየቧቸውን ነገሮች ሊያካትት ይችላል።"</string>
     <string name="sendText" msgid="493003724401350724">"ለፅሁፍ ድርጊት ምረጥ"</string>
     <string name="volume_ringtone" msgid="134784084629229029">"የስልክ ጥሪ ድምፅ"</string>
-    <string name="volume_music" msgid="7727274216734955095">" ማህደረ መረጃ  ክፍልፍል"</string>
+    <string name="volume_music" msgid="7727274216734955095">"የማህደረ መረጃ ድምጽ መጠን"</string>
     <string name="volume_music_hint_playing_through_bluetooth" msgid="2614142915948898228">"በብሉቱዝ በኩል ማጫወት"</string>
     <string name="volume_music_hint_silent_ringtone_selected" msgid="1514829655029062233">"የፀጥታ የስልክ የደውል ድምፅ ተዘጋጅቷል"</string>
     <string name="volume_call" msgid="7625321655265747433">"የጥሪ ላይ ድም ፅ መጨመሪያ/መቀነሻ"</string>
@@ -1227,7 +1227,7 @@
     <string name="volume_icon_description_bluetooth" msgid="7540388479345558400">"የብሉቱዝ ድምፅ መጠን"</string>
     <string name="volume_icon_description_ringer" msgid="2187800636867423459">"የስልክ ጥሪ ድምፅ መጠን"</string>
     <string name="volume_icon_description_incall" msgid="4491255105381227919">"የስልክ ጥሪ ድምፅ መጠን"</string>
-    <string name="volume_icon_description_media" msgid="4997633254078171233">"የማህደረ መረጃ ክፍልፍል"</string>
+    <string name="volume_icon_description_media" msgid="4997633254078171233">"የማህደረ መረጃ ድምጽ መጠን"</string>
     <string name="volume_icon_description_notification" msgid="579091344110747279">"የማሳወቂያ ክፍልፍል"</string>
     <string name="ringtone_default" msgid="9118299121288174597">"ነባሪ የስልክ ላይ ጥሪ"</string>
     <string name="ringtone_default_with_actual" msgid="2709686194556159773">"ነባሪ (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index a1478cf..7564ae7 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -270,9 +270,9 @@
     <string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"وضع صامت"</string>
     <string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"الصوت متوقف"</string>
     <string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"الصوت قيد التفعيل"</string>
-    <string name="global_actions_toggle_airplane_mode" msgid="6911684460146916206">"وضع الطائرة"</string>
-    <string name="global_actions_airplane_mode_on_status" msgid="5508025516695361936">"وضع الطائرة قيد التفعيل"</string>
-    <string name="global_actions_airplane_mode_off_status" msgid="8522219771500505475">"وضع الطائرة متوقف"</string>
+    <string name="global_actions_toggle_airplane_mode" msgid="6911684460146916206">"وضع الطيران"</string>
+    <string name="global_actions_airplane_mode_on_status" msgid="5508025516695361936">"وضع الطيران قيد التفعيل"</string>
+    <string name="global_actions_airplane_mode_off_status" msgid="8522219771500505475">"وضع الطيران متوقف"</string>
     <string name="global_action_settings" msgid="4671878836947494217">"الإعدادات"</string>
     <string name="global_action_assist" msgid="2517047220311505805">"مساعدة"</string>
     <string name="global_action_voice_assist" msgid="6655788068555086695">"المساعد الصوتي"</string>
@@ -398,7 +398,7 @@
     <string name="permlab_getPackageSize" msgid="375391550792886641">"قياس مساحة تخزين التطبيق"</string>
     <string name="permdesc_getPackageSize" msgid="742743530909966782">"للسماح للتطبيق باسترداد شفرته وبياناته وأحجام ذاكرات التخزين المؤقت"</string>
     <string name="permlab_writeSettings" msgid="8057285063719277394">"تعديل إعدادات النظام"</string>
-    <string name="permdesc_writeSettings" msgid="8293047411196067188">"للسماح للتطبيق بتعديل بيانات إعدادات النظام. يمكن أن تتلف التطبيقات الضارة تهيئة نظامك."</string>
+    <string name="permdesc_writeSettings" msgid="8293047411196067188">"للسماح للتطبيق بتعديل بيانات إعدادات النظام. يمكن أن تتلف التطبيقات الضارة إعداد نظامك."</string>
     <string name="permlab_receiveBootCompleted" msgid="6643339400247325379">"العمل عند بدء التشغيل"</string>
     <string name="permdesc_receiveBootCompleted" product="tablet" msgid="5565659082718177484">"للسماح للتطبيق ببدء تشغيل نفسه عقب انتهاء النظام من التشغيل. قد يؤدي ذلك إلى استغراق المزيد من الوقت عند بدء الجهاز اللوحي والسماح للتطبيق بإبطاء الأداء الإجمالي للجهاز اللوحي من خلال تشغيله دائمًا."</string>
     <string name="permdesc_receiveBootCompleted" product="tv" msgid="4900842256047614307">"‏للسماح بتشغيل التطبيق تلقائيًا بعد الانتهاء من بدء تشغيل النظام. وقد يؤدي ذلك إلى إطالة فترة بدء تشغيل جهاز Android TV، بالإضافة إلى أنه يسمح للتطبيق بإبطاء أداء الجهاز بشكل عام لأنه يتم تشغيله بشكل دائم."</string>
@@ -507,7 +507,7 @@
     <string name="permlab_accessWifiState" msgid="5552488500317911052">"‏عرض اتصالات Wi-Fi"</string>
     <string name="permdesc_accessWifiState" msgid="6913641669259483363">"‏للسماح للتطبيق بعرض معلومات حول شبكات Wi-Fi، كعرض معلومات حول ما إذا تم تفعيل Wi-Fi واسم أجهزة Wi-Fi المتصلة."</string>
     <string name="permlab_changeWifiState" msgid="7947824109713181554">"‏التوصيل والفصل من Wi-Fi"</string>
-    <string name="permdesc_changeWifiState" msgid="7170350070554505384">"‏للسماح للتطبيق بالاتصال بنقاط الوصول إلى Wi-Fi وقطع الاتصال بها، وإجراء تغييرات على تهيئة الجهاز لشبكات Wi-Fi."</string>
+    <string name="permdesc_changeWifiState" msgid="7170350070554505384">"‏للسماح للتطبيق بالاتصال بنقاط الوصول إلى Wi-Fi وقطع الاتصال بها، وإجراء تغييرات على إعداد الجهاز لشبكات Wi-Fi."</string>
     <string name="permlab_changeWifiMulticastState" msgid="285626875870754696">"‏السماح باستقبال بث Wi-Fi متعدد"</string>
     <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="191079868596433554">"‏للسماح للتطبيق بتلقي الحزم التي يتم إرسالها إلى جميع الأجهزة على شبكة Wi-Fi باستخدام عناوين بث متعدد، وليس باستخدام جهازك اللوحي فقط. ويؤدي ذلك إلى استخدام قدر أكبر من الطاقة يفوق وضع البث غير المتعدد."</string>
     <string name="permdesc_changeWifiMulticastState" product="tv" msgid="1336952358450652595">"‏للسماح للتطبيق بتلقّي الحِزم التي يتم إرسالها إلى جميع الأجهزة على شبكة Wi-Fi باستخدام عناوين بث متعدد، وليس باستخدام جهاز Android TV فقط. ويؤدي ذلك إلى استخدام قدر أكبر من الطاقة يفوق ما يتم استهلاكه في وضع البث غير المتعدد."</string>
@@ -523,9 +523,9 @@
     <string name="permdesc_changeWimaxState" product="tv" msgid="5373274458799425276">"‏للسماح للتطبيق بتوصيل جهاز Android TV بشبكات WiMAX وقطع اتصاله بها."</string>
     <string name="permdesc_changeWimaxState" product="default" msgid="1551666203780202101">"‏للسماح للتطبيق بتوصيل الهاتف بشبكات WiMAX وقطع اتصاله بها."</string>
     <string name="permlab_bluetooth" msgid="586333280736937209">"الاتصال بأجهزة بلوتوث"</string>
-    <string name="permdesc_bluetooth" product="tablet" msgid="3053222571491402635">"للسماح للتطبيق بعرض تهيئة البلوتوث على الجهاز اللوحي وإجراء اتصالات وقبولها مع الأجهزة المقترنة."</string>
+    <string name="permdesc_bluetooth" product="tablet" msgid="3053222571491402635">"للسماح للتطبيق بعرض إعداد البلوتوث على الجهاز اللوحي وإجراء اتصالات وقبولها مع الأجهزة المقترنة."</string>
     <string name="permdesc_bluetooth" product="tv" msgid="8851534496561034998">"‏للسماح للتطبيق بعرض بيانات ضبط البلوتوث على جهاز Android TV وإجراء اتصالات مع الأجهزة المقترنة وقبولها."</string>
-    <string name="permdesc_bluetooth" product="default" msgid="2779606714091276746">"للسماح للتطبيق بعرض تهيئة البلوتوث على الهاتف وإجراء اتصالات وقبولها مع الأجهزة المقترنة."</string>
+    <string name="permdesc_bluetooth" product="default" msgid="2779606714091276746">"للسماح للتطبيق بعرض إعداد البلوتوث على الهاتف وإجراء اتصالات وقبولها مع الأجهزة المقترنة."</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"‏معلومات الخدمات المدفوعة باستخدام الاتصال قصير المدى NFC المفضّل"</string>
     <string name="permdesc_preferredPaymentInfo" msgid="8583552469807294967">"‏يسمح هذا الإذن للتطبيق بالحصول على معلومات الخدمات المدفوعة باستخدام الاتصال قصير المدى NFC المفضّل، مثلاً المساعدات المسجّلة ووجهة المسار."</string>
     <string name="permlab_nfc" msgid="1904455246837674977">"التحكم في اتصال الحقل القريب"</string>
@@ -661,8 +661,8 @@
     <string name="permdesc_bindConditionProviderService" msgid="6106018791256120258">"للسماح للمالك بالربط بواجهة المستوى العلوي لخدمة موفر الحالة. لن تكون هناك حاجة إلى هذا الإعداد مطلقًا مع التطبيقات العادية."</string>
     <string name="permlab_bindDreamService" msgid="4776175992848982706">"‏الالتزام بخدمة dream"</string>
     <string name="permdesc_bindDreamService" msgid="9129615743300572973">"‏للسماح للمالك بالالتزام بواجهة المستوى العلوي لخدمة dream. لن تكون هناك حاجة إليه مطلقًا مع التطبيقات العادية."</string>
-    <string name="permlab_invokeCarrierSetup" msgid="5098810760209818140">"استدعاء تطبيق التهيئة الذي يوفره مشغل شبكة الجوال"</string>
-    <string name="permdesc_invokeCarrierSetup" msgid="4790845896063237887">"للسماح للمالك باستدعاء تطبيق التهيئة الذي يوفره مشغل شبكة الجوال. لن تكون هناك حاجة إليه مطلقًا مع التطبيقات العادية."</string>
+    <string name="permlab_invokeCarrierSetup" msgid="5098810760209818140">"استدعاء تطبيق الإعداد الذي يوفره مشغل شبكة الجوال"</string>
+    <string name="permdesc_invokeCarrierSetup" msgid="4790845896063237887">"للسماح للمالك باستدعاء تطبيق الإعداد الذي يوفره مشغل شبكة الجوال. لن تكون هناك حاجة إليه مطلقًا مع التطبيقات العادية."</string>
     <string name="permlab_accessNetworkConditions" msgid="1270732533356286514">"الاستماع إلى ملاحظات حول أحوال الشبكة"</string>
     <string name="permdesc_accessNetworkConditions" msgid="2959269186741956109">"للسماح للتطبيق بالاستماع إلى ملاحظات حول أحوال الشبكة. لا حاجة إلى هذا مع التطبيقات العادية."</string>
     <string name="permlab_setInputCalibration" msgid="932069700285223434">"تغيير معايرة أجهزة الإدخال"</string>
@@ -678,7 +678,7 @@
     <string name="permlab_bindCarrierServices" msgid="2395596978626237474">"الالتزام بخدمات مشغل شبكة الجوال"</string>
     <string name="permdesc_bindCarrierServices" msgid="9185614481967262900">"للسماح للمالك بالالتزام بخدمات مشغل شبكة الجوال. لن تكون هناك حاجة إليه مطلقًا مع التطبيقات العادية."</string>
     <string name="permlab_access_notification_policy" msgid="5524112842876975537">"الوصول إلى إعداد \"عدم الإزعاج\""</string>
-    <string name="permdesc_access_notification_policy" msgid="8538374112403845013">"للسماح للتطبيق بقراءة تهيئة \"عدم الإزعاج\" وكتابتها."</string>
+    <string name="permdesc_access_notification_policy" msgid="8538374112403845013">"للسماح للتطبيق بقراءة إعداد \"عدم الإزعاج\" وكتابتها."</string>
     <string name="permlab_startViewPermissionUsage" msgid="1504564328641112341">"بدء استخدام إذن العرض"</string>
     <string name="permdesc_startViewPermissionUsage" msgid="2820325605959586538">"للسماح للمالك ببدء استخدام الإذن لأحد التطبيقات. ولن تكون هناك حاجة إليه مطلقًا مع التطبيقات العادية."</string>
     <string name="policylab_limitPassword" msgid="4851829918814422199">"تعيين قواعد كلمة المرور"</string>
@@ -1169,7 +1169,7 @@
     <string name="Midnight" msgid="8176019203622191377">"منتصف الليل"</string>
     <string name="elapsed_time_short_format_mm_ss" msgid="8689459651807876423">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
     <string name="elapsed_time_short_format_h_mm_ss" msgid="2302144714803345056">"<xliff:g id="HOURS">%1$d</xliff:g>:<xliff:g id="MINUTES">%2$02d</xliff:g>:<xliff:g id="SECONDS">%3$02d</xliff:g>"</string>
-    <string name="selectAll" msgid="1532369154488982046">"اختيار الكل"</string>
+    <string name="selectAll" msgid="1532369154488982046">"تحديد الكل"</string>
     <string name="cut" msgid="2561199725874745819">"قص"</string>
     <string name="copy" msgid="5472512047143665218">"نسخ"</string>
     <string name="failed_to_copy_to_clipboard" msgid="725919885138539875">"تعذّر النسخ في الحافظة"</string>
@@ -1298,7 +1298,7 @@
     <string name="volume_ringtone" msgid="134784084629229029">"مستوى صوت الرنين"</string>
     <string name="volume_music" msgid="7727274216734955095">"مستوى صوت الوسائط"</string>
     <string name="volume_music_hint_playing_through_bluetooth" msgid="2614142915948898228">"تشغيل من خلال البلوتوث"</string>
-    <string name="volume_music_hint_silent_ringtone_selected" msgid="1514829655029062233">"تم تعيين نغمة الرنين الصامتة"</string>
+    <string name="volume_music_hint_silent_ringtone_selected" msgid="1514829655029062233">"تم ضبط نغمة الرنين الصامتة"</string>
     <string name="volume_call" msgid="7625321655265747433">"مستوى صوت المكالمات الواردة"</string>
     <string name="volume_bluetooth_call" msgid="2930204618610115061">"مستوى صوت المكالمة الواردة بالبلوتوث"</string>
     <string name="volume_alarm" msgid="4486241060751798448">"مستوى صوت المنبّه"</string>
@@ -1462,7 +1462,7 @@
     <string name="ext_media_status_unmountable" msgid="7043574843541087748">"تالف"</string>
     <string name="ext_media_status_unsupported" msgid="5460509911660539317">"غير متوافق"</string>
     <string name="ext_media_status_ejecting" msgid="7532403368044013797">"جارٍ إنهاء التحميل…"</string>
-    <string name="ext_media_status_formatting" msgid="774148701503179906">"جارٍ التهيئة…"</string>
+    <string name="ext_media_status_formatting" msgid="774148701503179906">"تجري التهيئة..."</string>
     <string name="ext_media_status_missing" msgid="6520746443048867314">"لم يتم الإدخال"</string>
     <string name="activity_list_empty" msgid="4219430010716034252">"لم يتم العثور على أي أنشطة متطابقة."</string>
     <string name="permlab_route_media_output" msgid="8048124531439513118">"توجيه إخراج الوسائط"</string>
@@ -2155,7 +2155,7 @@
     <string name="mime_type_spreadsheet_ext" msgid="8720173181137254414">"جدول بيانات: <xliff:g id="EXTENSION">%1$s</xliff:g>"</string>
     <string name="mime_type_presentation" msgid="1145384236788242075">"عرض تقديمي"</string>
     <string name="mime_type_presentation_ext" msgid="8761049335564371468">"عرض تقديمي: <xliff:g id="EXTENSION">%1$s</xliff:g>"</string>
-    <string name="bluetooth_airplane_mode_toast" msgid="2066399056595768554">"سيظل البلوتوث مفعَّلاً أثناء استخدام \"وضع الطائرة\"."</string>
+    <string name="bluetooth_airplane_mode_toast" msgid="2066399056595768554">"سيظل البلوتوث مفعَّلاً أثناء استخدام \"وضع الطيران\"."</string>
     <string name="car_loading_profile" msgid="8219978381196748070">"جارٍ التحميل"</string>
     <plurals name="file_count" formatted="false" msgid="7063513834724389247">
       <item quantity="zero"><xliff:g id="FILE_NAME_2">%s</xliff:g> و<xliff:g id="COUNT_3">%d</xliff:g> ملف</item>
diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml
index 3fb5131..f1b9743 100644
--- a/core/res/res/values-az/strings.xml
+++ b/core/res/res/values-az/strings.xml
@@ -701,7 +701,7 @@
     <string name="policylab_disableKeyguardFeatures" msgid="5071855750149949741">"Bəzi ekran kilidi funksiyalarını deaktiv edin"</string>
     <string name="policydesc_disableKeyguardFeatures" msgid="6641673177041195957">"Bəzi ekran funksiyaları istifadəsinin qarşısını alın."</string>
   <string-array name="phoneTypes">
-    <item msgid="8996339953292723951">"Əsas səhifə"</item>
+    <item msgid="8996339953292723951">"Ev"</item>
     <item msgid="7740243458912727194">"Mobil"</item>
     <item msgid="8526146065496663766">"İş"</item>
     <item msgid="8150904584178569699">"İş Faksı"</item>
@@ -711,19 +711,19 @@
     <item msgid="6216981255272016212">"Şəxsi"</item>
   </string-array>
   <string-array name="emailAddressTypes">
-    <item msgid="7786349763648997741">"Ana səhifə"</item>
+    <item msgid="7786349763648997741">"Ev"</item>
     <item msgid="435564470865989199">"İş"</item>
     <item msgid="4199433197875490373">"Digər"</item>
     <item msgid="3233938986670468328">"Fərdi"</item>
   </string-array>
   <string-array name="postalAddressTypes">
-    <item msgid="3861463339764243038">"Əsas səhifə"</item>
+    <item msgid="3861463339764243038">"Ev"</item>
     <item msgid="5472578890164979109">"İş"</item>
     <item msgid="5718921296646594739">"Digər"</item>
     <item msgid="5523122236731783179">"Düzənləyin"</item>
   </string-array>
   <string-array name="imAddressTypes">
-    <item msgid="588088543406993772">"Əsas səhifə"</item>
+    <item msgid="588088543406993772">"Ev"</item>
     <item msgid="5503060422020476757">"İş"</item>
     <item msgid="2530391194653760297">"Digər"</item>
     <item msgid="7640927178025203330">"Fərdi"</item>
@@ -769,16 +769,16 @@
     <string name="eventTypeAnniversary" msgid="4684702412407916888">"İldönümü"</string>
     <string name="eventTypeOther" msgid="530671238533887997">"Digər"</string>
     <string name="emailTypeCustom" msgid="1809435350482181786">"Fərdi"</string>
-    <string name="emailTypeHome" msgid="1597116303154775999">"Əsas səhifə"</string>
+    <string name="emailTypeHome" msgid="1597116303154775999">"Şəxsi"</string>
     <string name="emailTypeWork" msgid="2020095414401882111">"İş"</string>
     <string name="emailTypeOther" msgid="5131130857030897465">"Digər"</string>
     <string name="emailTypeMobile" msgid="787155077375364230">"Mobil"</string>
     <string name="postalTypeCustom" msgid="5645590470242939129">"Fərdi"</string>
-    <string name="postalTypeHome" msgid="7562272480949727912">"Əsas səhifə"</string>
+    <string name="postalTypeHome" msgid="7562272480949727912">"Ev"</string>
     <string name="postalTypeWork" msgid="8553425424652012826">"İş"</string>
     <string name="postalTypeOther" msgid="7094245413678857420">"Digər"</string>
     <string name="imTypeCustom" msgid="5653384545085765570">"Fərdi"</string>
-    <string name="imTypeHome" msgid="6996507981044278216">"Ana səhifə"</string>
+    <string name="imTypeHome" msgid="6996507981044278216">"Ev"</string>
     <string name="imTypeWork" msgid="2099668940169903123">"İş"</string>
     <string name="imTypeOther" msgid="8068447383276219810">"Digər"</string>
     <string name="imProtocolCustom" msgid="4437878287653764692">"Şəxsi"</string>
@@ -810,7 +810,7 @@
     <string name="relationTypeSister" msgid="3721676005094140671">"Bacı"</string>
     <string name="relationTypeSpouse" msgid="6916682664436031703">"Həyat yoldaşı"</string>
     <string name="sipAddressTypeCustom" msgid="6283889809842649336">"Fərdi"</string>
-    <string name="sipAddressTypeHome" msgid="5918441930656878367">"Əsas səhifə"</string>
+    <string name="sipAddressTypeHome" msgid="5918441930656878367">"Ev"</string>
     <string name="sipAddressTypeWork" msgid="7873967986701216770">"İş"</string>
     <string name="sipAddressTypeOther" msgid="6317012577345187275">"Digər"</string>
     <string name="quick_contacts_not_available" msgid="1262709196045052223">"Bu kontakta baxmaq üçün heç bir tətbiq tapılmadı."</string>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index ecbe6d0..239fff1 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -241,7 +241,7 @@
     <string name="global_action_power_off" msgid="4404936470711393203">"Isključi"</string>
     <string name="global_action_power_options" msgid="1185286119330160073">"Napajanje"</string>
     <string name="global_action_restart" msgid="4678451019561687074">"Restartuj"</string>
-    <string name="global_action_emergency" msgid="1387617624177105088">"Hitni poziv"</string>
+    <string name="global_action_emergency" msgid="1387617624177105088">"Hitan poziv"</string>
     <string name="global_action_bug_report" msgid="5127867163044170003">"Izveštaj o grešci"</string>
     <string name="global_action_logout" msgid="6093581310002476511">"Završi sesiju"</string>
     <string name="global_action_screenshot" msgid="2610053466156478564">"Snimak ekrana"</string>
@@ -1815,7 +1815,7 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Ažurirao je administrator"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Izbrisao je administrator"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"Potvrdi"</string>
-    <string name="battery_saver_description_with_learn_more" msgid="5997766757551917769">"Da bi se produžilo trajanje baterije, Ušteda baterije:\n\n•uključuje tamnu temu\n•isključuje ili ograničava aktivnosti u pozadini, neke vizuelne efekte i druge funkcije, na primer, „Ok Google“\n\n"<annotation id="url">"Saznajte više"</annotation></string>
+    <string name="battery_saver_description_with_learn_more" msgid="5997766757551917769">"Da bi se produžilo trajanje baterije, Ušteda baterije:\n\n•uključuje tamnu temu\n•isključuje ili ograničava aktivnosti u pozadini, neke vizuelne efekte i druge funkcije, na primer „Ok Google“\n\n"<annotation id="url">"Saznajte više"</annotation></string>
     <string name="battery_saver_description" msgid="8587408568232177204">"Da bi se produžilo trajanje baterije, Ušteda baterije:\n\n•uključuje tamnu temu\n•isključuje ili ograničava aktivnosti u pozadini, neke vizuelne efekte i druge funkcije, na primer, „Ok Google“"</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Da bi se smanjila potrošnja podataka, Ušteda podataka sprečava neke aplikacije da šalju ili primaju podatke u pozadini. Aplikacija koju trenutno koristite može da pristupa podacima, ali će to činiti ređe. Na primer, slike se neće prikazivati dok ih ne dodirnete."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Želite da uključite Uštedu podataka?"</string>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index e5427e9..ddee07c 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -98,9 +98,9 @@
     <string name="notification_channel_wfc" msgid="9048240466765169038">"Wi-Fi-тэлефанія"</string>
     <string name="notification_channel_sim" msgid="5098802350325677490">"Статус SIM-карты"</string>
     <string name="notification_channel_sim_high_prio" msgid="642361929452850928">"Стан SIM-карты з высокім прыярытэтам"</string>
-    <string name="peerTtyModeFull" msgid="337553730440832160">"Аднарангавая прылада запытала рэжым TTY FULL"</string>
-    <string name="peerTtyModeHco" msgid="5626377160840915617">"Аднарангавая прылада запытала рэжым TTY НСО"</string>
-    <string name="peerTtyModeVco" msgid="572208600818270944">"Аднарангавая прылада запытала рэжым TTY VCO"</string>
+    <string name="peerTtyModeFull" msgid="337553730440832160">"Аднарангавая прылада запытала рэжым поўнафункцыянальнага TTY"</string>
+    <string name="peerTtyModeHco" msgid="5626377160840915617">"Аднарангавая прылада запытала рэжым TTY з магчымасцю чуць суразмоўніка"</string>
+    <string name="peerTtyModeVco" msgid="572208600818270944">"Аднарангавая прылада запытала рэжым TTY з магчымасцю чуць суразмоўніка"</string>
     <string name="peerTtyModeOff" msgid="2420380956369226583">"Аднарангавая прылада запытала рэжым TTY OFF"</string>
     <string name="serviceClassVoice" msgid="2065556932043454987">"Голас"</string>
     <string name="serviceClassData" msgid="4148080018967300248">"Дадзеныя"</string>
@@ -717,10 +717,10 @@
     <item msgid="6216981255272016212">"Асаблівы"</item>
   </string-array>
   <string-array name="emailAddressTypes">
-    <item msgid="7786349763648997741">"Хатні"</item>
-    <item msgid="435564470865989199">"Працоўны"</item>
-    <item msgid="4199433197875490373">"Іншы"</item>
-    <item msgid="3233938986670468328">"Карыстальніцкі"</item>
+    <item msgid="7786349763648997741">"Асабістая"</item>
+    <item msgid="435564470865989199">"Працоўная"</item>
+    <item msgid="4199433197875490373">"Іншая"</item>
+    <item msgid="3233938986670468328">"Карыстальніцкая"</item>
   </string-array>
   <string-array name="postalAddressTypes">
     <item msgid="3861463339764243038">"На Галоўную старонку"</item>
@@ -770,14 +770,14 @@
     <string name="phoneTypeWorkPager" msgid="3748332310638505234">"Працоўны пэйджар"</string>
     <string name="phoneTypeAssistant" msgid="757550783842231039">"Асістэнт"</string>
     <string name="phoneTypeMms" msgid="1799747455131365989">"MMS"</string>
-    <string name="eventTypeCustom" msgid="3257367158986466481">"Карыстальніцкі"</string>
+    <string name="eventTypeCustom" msgid="3257367158986466481">"Карыстальніцкае"</string>
     <string name="eventTypeBirthday" msgid="7770026752793912283">"Дзень нараджэння"</string>
     <string name="eventTypeAnniversary" msgid="4684702412407916888">"Гадавіна"</string>
     <string name="eventTypeOther" msgid="530671238533887997">"Іншае"</string>
-    <string name="emailTypeCustom" msgid="1809435350482181786">"Карыстальніцкі"</string>
+    <string name="emailTypeCustom" msgid="1809435350482181786">"Карыстальніцкая"</string>
     <string name="emailTypeHome" msgid="1597116303154775999">"Хатні"</string>
-    <string name="emailTypeWork" msgid="2020095414401882111">"Працоўны"</string>
-    <string name="emailTypeOther" msgid="5131130857030897465">"Іншы"</string>
+    <string name="emailTypeWork" msgid="2020095414401882111">"Працоўная"</string>
+    <string name="emailTypeOther" msgid="5131130857030897465">"Іншая"</string>
     <string name="emailTypeMobile" msgid="787155077375364230">"Мабільны"</string>
     <string name="postalTypeCustom" msgid="5645590470242939129">"Карыстальніцкі"</string>
     <string name="postalTypeHome" msgid="7562272480949727912">"Хатні"</string>
@@ -800,19 +800,19 @@
     <string name="orgTypeWork" msgid="8684458700669564172">"Працоўная"</string>
     <string name="orgTypeOther" msgid="5450675258408005553">"Іншая"</string>
     <string name="orgTypeCustom" msgid="1126322047677329218">"Карыстальніцкі"</string>
-    <string name="relationTypeCustom" msgid="282938315217441351">"Карыстальніцкі"</string>
+    <string name="relationTypeCustom" msgid="282938315217441351">"Карыстальніцкае"</string>
     <string name="relationTypeAssistant" msgid="4057605157116589315">"Памочнік"</string>
     <string name="relationTypeBrother" msgid="7141662427379247820">"Брат"</string>
     <string name="relationTypeChild" msgid="9076258911292693601">"Дзіця"</string>
-    <string name="relationTypeDomesticPartner" msgid="7825306887697559238">"Унутраны Партнёр"</string>
+    <string name="relationTypeDomesticPartner" msgid="7825306887697559238">"Сужыцель/сужыцелька"</string>
     <string name="relationTypeFather" msgid="3856225062864790596">"Бацька"</string>
     <string name="relationTypeFriend" msgid="3192092625893980574">"Сябар/сяброўка"</string>
     <string name="relationTypeManager" msgid="2272860813153171857">"Кіраўнік"</string>
     <string name="relationTypeMother" msgid="2331762740982699460">"Маці"</string>
-    <string name="relationTypeParent" msgid="4177920938333039882">"Бацька"</string>
+    <string name="relationTypeParent" msgid="4177920938333039882">"Бацька/маці"</string>
     <string name="relationTypePartner" msgid="4018017075116766194">"Партнёр"</string>
-    <string name="relationTypeReferredBy" msgid="5285082289602849400">"Запрошаны"</string>
-    <string name="relationTypeRelative" msgid="3396498519818009134">"Адносны"</string>
+    <string name="relationTypeReferredBy" msgid="5285082289602849400">"Рэкамендацыя"</string>
+    <string name="relationTypeRelative" msgid="3396498519818009134">"Радня"</string>
     <string name="relationTypeSister" msgid="3721676005094140671">"Сястра"</string>
     <string name="relationTypeSpouse" msgid="6916682664436031703">"Муж/жонка"</string>
     <string name="sipAddressTypeCustom" msgid="6283889809842649336">"Карыстальніцкі"</string>
@@ -967,7 +967,7 @@
     <string name="permlab_addVoicemail" msgid="4770245808840814471">"дадаць галасавое паведамленне"</string>
     <string name="permdesc_addVoicemail" msgid="5470312139820074324">"Дазваляе прыкладанням дадаваць паведамленні ў вашу скрыню галасавой пошты."</string>
     <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"змяніць дазволы геапазіцыянавання для браўзэра"</string>
-    <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Дазваляе прыкладанням змяняць дазволы геалакацыі браўзэра. Шкоднасныя прыкладанні могуць выкарыстоўваць гэта, каб дазваляць адпраўку інфармацыі аб месцазнаходжанні выпадковым вэб-сайтам."</string>
+    <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Дазваляе праграме змяняць дазволы геалакацыі браўзера. Шкодныя праграмы могуць выкарыстоўваць гэта, каб адпраўляць даныя аб месцазнаходжанні на любыя вэб-сайты."</string>
     <string name="save_password_message" msgid="2146409467245462965">"Вы хочаце, каб браўзэр запомніў гэты пароль?"</string>
     <string name="save_password_notnow" msgid="2878327088951240061">"Не зараз"</string>
     <string name="save_password_remember" msgid="6490888932657708341">"Запомніць"</string>
@@ -1342,8 +1342,8 @@
     <string name="usb_tether_notification_title" msgid="8828527870612663771">"Рэжым USB-мадэма"</string>
     <string name="usb_midi_notification_title" msgid="7404506788950595557">"MIDI праз USB"</string>
     <string name="usb_accessory_notification_title" msgid="1385394660861956980">"USB-прылада падключана"</string>
-    <string name="usb_notification_message" msgid="4715163067192110676">"Дакраніцеся, каб атрымаць іншыя параметры."</string>
-    <string name="usb_power_notification_message" msgid="7284765627437897702">"Зарадка падключанай прылады. Націсніце, каб убачыць іншыя параметры."</string>
+    <string name="usb_notification_message" msgid="4715163067192110676">"Дакраніцеся, каб убачыць іншыя параметры."</string>
+    <string name="usb_power_notification_message" msgid="7284765627437897702">"Падключаная прылада зараджаецца. Дакраніцеся, каб убачыць іншыя параметры."</string>
     <string name="usb_unsupported_audio_accessory_title" msgid="2335775548086533065">"Выяўлены аксесуар аналагавага аўдыя"</string>
     <string name="usb_unsupported_audio_accessory_message" msgid="1300168007129796621">"Далучаная прылада не сумяшчальная з гэтым тэлефонам. Націсніце, каб даведацца больш."</string>
     <string name="adb_active_notification_title" msgid="408390247354560331">"Адладка па USB падключана"</string>
@@ -1542,7 +1542,7 @@
     <string name="activitychooserview_choose_application_error" msgid="6937782107559241734">"Не атрымалася запусціць <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="shareactionprovider_share_with" msgid="2753089758467748982">"Апублікаваць з дапамогай"</string>
     <string name="shareactionprovider_share_with_application" msgid="4902832247173666973">"Адправiць з дапамогай прыкладання <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
-    <string name="content_description_sliding_handle" msgid="982510275422590757">"Ручка для перасоўвання. Націсніце і ўтрымлівайце."</string>
+    <string name="content_description_sliding_handle" msgid="982510275422590757">"Маркер для перасоўвання. Дакраніцеся і ўтрымлівайце."</string>
     <string name="description_target_unlock_tablet" msgid="7431571180065859551">"Прагартайце, каб разблакаваць."</string>
     <string name="action_bar_home_description" msgid="1501655419158631974">"Перайсці да пачатковай старонкі"</string>
     <string name="action_bar_up_description" msgid="6611579697195026932">"Перайсці ўверх"</string>
diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml
index 745a82d..079eb56 100644
--- a/core/res/res/values-bs/strings.xml
+++ b/core/res/res/values-bs/strings.xml
@@ -590,7 +590,7 @@
     <string name="face_acquired_not_detected" msgid="2945945257956443257">"Postavite lice direktno ispred telefona"</string>
     <string name="face_acquired_too_much_motion" msgid="8199691445085189528">"Previše pokreta. Držite telefon mirno."</string>
     <string name="face_acquired_recalibrate" msgid="8724013080976469746">"Ponovo registrirajte lice."</string>
-    <string name="face_acquired_too_different" msgid="4699657338753282542">"Nije više moguće prepoznati lice. Pokušajte opet."</string>
+    <string name="face_acquired_too_different" msgid="4699657338753282542">"Više nije moguće prepoznati lice. Pokušajte opet."</string>
     <string name="face_acquired_too_similar" msgid="7684650785108399370">"Previše slično, promijenite položaj."</string>
     <string name="face_acquired_pan_too_extreme" msgid="7822191262299152527">"Malo manje zakrenite glavu."</string>
     <string name="face_acquired_tilt_too_extreme" msgid="8119978324129248059">"Malo manje zakrenite glavu."</string>
@@ -970,7 +970,7 @@
     <string name="save_password_remember" msgid="6490888932657708341">"Zapamti"</string>
     <string name="save_password_never" msgid="6776808375903410659">"Nikad"</string>
     <string name="open_permission_deny" msgid="5136793905306987251">"Nemate odobrenje za otvaranje ove stranice."</string>
-    <string name="text_copied" msgid="2531420577879738860">"Tekst kopiran u međuspremnik."</string>
+    <string name="text_copied" msgid="2531420577879738860">"Tekst kopiran u međumemoriju."</string>
     <string name="copied" msgid="4675902854553014676">"Kopirano"</string>
     <string name="more_item_label" msgid="7419249600215749115">"Više"</string>
     <string name="prepend_shortcut_label" msgid="1743716737502867951">"Meni+"</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index a3ac03e..97bb9c1 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -988,8 +988,8 @@
     <string name="searchview_description_submit" msgid="6771060386117334686">"Envia la consulta"</string>
     <string name="searchview_description_voice" msgid="42360159504884679">"Cerca per veu"</string>
     <string name="enable_explore_by_touch_warning_title" msgid="5095399706284943314">"Vols activar l\'exploració tàctil?"</string>
-    <string name="enable_explore_by_touch_warning_message" product="tablet" msgid="1037295476738940824">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> vol activar l\'exploració tàctil. Quan l\'exploració tàctil està activada, pots escoltar o veure les descripcions del contingut seleccionat o utilitzar gestos per interactuar amb la tauleta."</string>
-    <string name="enable_explore_by_touch_warning_message" product="default" msgid="4312979647356179250">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> vol activar l\'exploració tàctil. Quan l\'exploració per tàctil està activada, pots escoltar o veure les descripcions del contingut seleccionat o utilitzar gestos per interactuar amb el telèfon."</string>
+    <string name="enable_explore_by_touch_warning_message" product="tablet" msgid="1037295476738940824">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> vol activar l\'exploració tàctil. Quan l\'exploració tàctil està activada, pots escoltar o veure les descripcions del contingut seleccionat o utilitzar gestos per interaccionar amb la tauleta."</string>
+    <string name="enable_explore_by_touch_warning_message" product="default" msgid="4312979647356179250">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> vol activar l\'exploració tàctil. Quan l\'exploració per tàctil està activada, pots escoltar o veure les descripcions del contingut seleccionat o utilitzar gestos per interaccionar amb el telèfon."</string>
     <string name="oneMonthDurationPast" msgid="4538030857114635777">"Fa 1 mes"</string>
     <string name="beforeOneMonthDurationPast" msgid="8315149541372065392">"Fa més d\'1 mes"</string>
     <plurals name="last_num_days" formatted="false" msgid="687443109145393632">
@@ -1221,7 +1221,7 @@
     <string name="volume_music_hint_silent_ringtone_selected" msgid="1514829655029062233">"S\'ha establert el so de silenci"</string>
     <string name="volume_call" msgid="7625321655265747433">"Volum en trucada"</string>
     <string name="volume_bluetooth_call" msgid="2930204618610115061">"Volum en trucada per Bluetooth"</string>
-    <string name="volume_alarm" msgid="4486241060751798448">"Volum de l\'alarma"</string>
+    <string name="volume_alarm" msgid="4486241060751798448">"Volum d\'alarma"</string>
     <string name="volume_notification" msgid="6864412249031660057">"Volum de notificacions"</string>
     <string name="volume_unknown" msgid="4041914008166576293">"Volum"</string>
     <string name="volume_icon_description_bluetooth" msgid="7540388479345558400">"Volum del Bluetooth"</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index c4d944f..3ccd566 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -1792,8 +1792,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Von deinem Administrator aktualisiert"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Von deinem Administrator gelöscht"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <string name="battery_saver_description_with_learn_more" msgid="5997766757551917769">"Der Energiesparmodus sorgt für eine längere Akkulaufzeit:\n\n• Das dunkle Design wird aktiviert\n• Hintergrundaktivitäten, einige optische Effekte und weitere Funktionen wie \"Ok Google\" werden abgeschaltet oder eingeschränkt\n\n"<annotation id="url">"Weitere Informationen"</annotation></string>
-    <string name="battery_saver_description" msgid="8587408568232177204">"Der Energiesparmodus sorgt für eine längere Akkulaufzeit:\n\n• Das dunkle Design wird aktiviert\n• Hintergrundaktivitäten, einige optische Effekte und weitere Funktionen wie \"Ok Google\" werden abgeschaltet oder eingeschränkt"</string>
+    <string name="battery_saver_description_with_learn_more" msgid="5997766757551917769">"Der Stromsparmodus sorgt für eine längere Akkulaufzeit:\n\n• Das dunkle Design wird aktiviert\n• Hintergrundaktivitäten, einige optische Effekte und weitere Funktionen wie \"Ok Google\" werden abgeschaltet oder eingeschränkt\n\n"<annotation id="url">"Weitere Informationen"</annotation></string>
+    <string name="battery_saver_description" msgid="8587408568232177204">"Der Stromsparmodus sorgt für eine längere Akkulaufzeit:\n\n• Das dunkle Design wird aktiviert\n• Hintergrundaktivitäten, einige optische Effekte und weitere Funktionen wie \"Ok Google\" werden abgeschaltet oder eingeschränkt"</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Der Datensparmodus verhindert zum einen, dass manche Apps im Hintergrund Daten senden oder empfangen, sodass weniger Daten verbraucht werden. Zum anderen werden die Datenzugriffe der gerade aktiven App eingeschränkt, was z. B. dazu führen kann, dass Bilder erst angetippt werden müssen, bevor sie sichtbar werden."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Datensparmodus aktivieren?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktivieren"</string>
@@ -1999,9 +1999,9 @@
     <string name="notification_appops_overlay_active" msgid="5571732753262836481">"wird über anderen Apps auf dem Bildschirm angezeigt"</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Infomitteilung zum Ablaufmodus"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Dein Akku könnte vor der gewöhnlichen Ladezeit leer sein"</string>
-    <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Energiesparmodus aktiviert, um die Akkulaufzeit zu verlängern"</string>
-    <string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Energiesparmodus"</string>
-    <string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Energiesparmodus deaktiviert"</string>
+    <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Stromsparmodus aktiviert, um die Akkulaufzeit zu verlängern"</string>
+    <string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Stromsparmodus"</string>
+    <string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Stromsparmodus deaktiviert"</string>
     <string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Das Smartphone ist ausreichend geladen. Es sind keine Funktionen mehr beschränkt."</string>
     <string name="battery_saver_charged_notification_summary" product="tablet" msgid="4426317048139996888">"Das Tablet ist ausreichend geladen. Es sind keine Funktionen mehr beschränkt."</string>
     <string name="battery_saver_charged_notification_summary" product="device" msgid="1031562417867646649">"Das Gerät ist ausreichend geladen. Es sind keine Funktionen mehr beschränkt."</string>
diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml
index 4d3ca94b..1cf5904 100644
--- a/core/res/res/values-en-rCA/strings.xml
+++ b/core/res/res/values-en-rCA/strings.xml
@@ -1120,8 +1120,8 @@
     <string name="loading" msgid="3138021523725055037">"Loading…"</string>
     <string name="capital_on" msgid="2770685323900821829">"ON"</string>
     <string name="capital_off" msgid="7443704171014626777">"OFF"</string>
-    <string name="checked" msgid="9179896827054513119">"ticked"</string>
-    <string name="not_checked" msgid="7972320087569023342">"not ticked"</string>
+    <string name="checked" msgid="9179896827054513119">"checked"</string>
+    <string name="not_checked" msgid="7972320087569023342">"not checked"</string>
     <string name="whichApplication" msgid="5432266899591255759">"Complete action using"</string>
     <string name="whichApplicationNamed" msgid="6969946041713975681">"Complete action using %1$s"</string>
     <string name="whichApplicationLabel" msgid="7852182961472531728">"Complete action"</string>
@@ -2023,7 +2023,7 @@
     <string name="mime_type_spreadsheet_ext" msgid="8720173181137254414">"<xliff:g id="EXTENSION">%1$s</xliff:g> spreadsheet"</string>
     <string name="mime_type_presentation" msgid="1145384236788242075">"Presentation"</string>
     <string name="mime_type_presentation_ext" msgid="8761049335564371468">"<xliff:g id="EXTENSION">%1$s</xliff:g> presentation"</string>
-    <string name="bluetooth_airplane_mode_toast" msgid="2066399056595768554">"Bluetooth will stay on during aeroplane mode"</string>
+    <string name="bluetooth_airplane_mode_toast" msgid="2066399056595768554">"Bluetooth will stay on in Airplane mode"</string>
     <string name="car_loading_profile" msgid="8219978381196748070">"Loading"</string>
     <plurals name="file_count" formatted="false" msgid="7063513834724389247">
       <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> files</item>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 5d35a6b..1a51067 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -421,7 +421,7 @@
     <string name="permdesc_writeCalendar" product="default" msgid="5416380074475634233">"Esta app puede agregar, quitar o cambiar eventos del calendario en tu teléfono. Puede enviar mensajes que parecen proceder de propietarios del calendario o cambiar eventos sin notificarlos."</string>
     <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"acceder a comandos adicionales del proveedor del lugar"</string>
     <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Permite que la aplicación acceda a comandos adicionales del proveedor de ubicación. Esto puede permitirle a la aplicación interferir con el funcionamiento del GPS o de otras fuentes de ubicación."</string>
-    <string name="permlab_accessFineLocation" msgid="6426318438195622966">"acceder a la ubicación exacta solo en primer plano"</string>
+    <string name="permlab_accessFineLocation" msgid="6426318438195622966">"acceder a la ubicación precisa solo en primer plano"</string>
     <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Mientras la usas, esta app puede obtener tu ubicación exacta mediante los Servicios de ubicación, siempre y cuando el dispositivo los tenga activados. Es posible que esto aumente el uso de batería."</string>
     <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"acceder a la ubicación aproximada solo en primer plano"</string>
     <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Mientras la usas, esta app puede obtener tu ubicación aproximada mediante los Servicios de ubicación, siempre y cuando el dispositivo los tenga activados."</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 5e245de..fea419f 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -325,7 +325,7 @@
     <string name="capability_desc_canControlMagnification" msgid="2206586716709254805">"Controla el posicionamiento y el nivel de zoom de la pantalla."</string>
     <string name="capability_title_canPerformGestures" msgid="9106545062106728987">"Realizar gestos"</string>
     <string name="capability_desc_canPerformGestures" msgid="6619457251067929726">"Puedes tocar y pellizcar la pantalla, deslizar el dedo y hacer otros gestos."</string>
-    <string name="capability_title_canCaptureFingerprintGestures" msgid="1189053104594608091">"Gestos de huellas digitales"</string>
+    <string name="capability_title_canCaptureFingerprintGestures" msgid="1189053104594608091">"Gestos de huella digital"</string>
     <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Puede capturar los gestos realizados en el sensor de huellas digitales del dispositivo."</string>
     <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Hacer captura"</string>
     <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Puede hacer capturas de la pantalla."</string>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index b5574ae..39bf1d6 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -1264,7 +1264,7 @@
     <string name="sms_control_title" msgid="4748684259903148341">"درحال ارسال پیامک‌ها"</string>
     <string name="sms_control_message" msgid="6574313876316388239">"‏&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; درحال ارسال تعداد زیادی پیامک است. آیا اجازه می‌دهید این برنامه همچنان پیامک ارسال کند؟"</string>
     <string name="sms_control_yes" msgid="4858845109269524622">"مجاز است"</string>
-    <string name="sms_control_no" msgid="4845717880040355570">"اجازه ندارد"</string>
+    <string name="sms_control_no" msgid="4845717880040355570">"مجاز نبودن"</string>
     <string name="sms_short_code_confirm_message" msgid="1385416688897538724">"‏&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; مایل است پیامی به &lt;b&gt;<xliff:g id="DEST_ADDRESS">%2$s</xliff:g>&lt;/b&gt; ارسال کند."</string>
     <string name="sms_short_code_details" msgid="2723725738333388351">"این مورد "<b>"شاید هزینه‌ای"</b>" را به حساب دستگاه همراهتان بگذارد."</string>
     <string name="sms_premium_short_code_details" msgid="1400296309866638111"><b>"این مورد هزینه‌ای را به حساب دستگاه همراهتان می‌گذارد."</b></string>
@@ -1410,7 +1410,7 @@
     <string name="grant_credentials_permission_message_footer" msgid="1886710210516246461">"می‌خواهید به این درخواست اجازه دهید؟"</string>
     <string name="grant_permissions_header_text" msgid="3420736827804657201">"درخواست دسترسی"</string>
     <string name="allow" msgid="6195617008611933762">"ارزیابی‌شده"</string>
-    <string name="deny" msgid="6632259981847676572">"اجازه ندارد"</string>
+    <string name="deny" msgid="6632259981847676572">"مجاز نبودن"</string>
     <string name="permission_request_notification_title" msgid="1810025922441048273">"مجوز درخواست شد"</string>
     <string name="permission_request_notification_with_subtitle" msgid="3743417870360129298">"مجوز\nبرای حساب <xliff:g id="ACCOUNT">%s</xliff:g> درخواست شد."</string>
     <string name="forward_intent_to_owner" msgid="4620359037192871015">"شما از این برنامه در خارج از نمایه کاری‌تان استفاده می‌کنید"</string>
@@ -1639,7 +1639,7 @@
     <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"مشاهده و انجام کنش‌ها"</string>
     <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"این عملکرد می‌تواند با برنامه یا حسگری سخت‌افزاری تعاملاتتان را ردیابی کند و ازطرف شما با برنامه‌ها تعامل داشته باشد."</string>
     <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"مجاز"</string>
-    <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"رد کردن"</string>
+    <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"مجاز نبودن"</string>
     <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"برای استفاده از ویژگی، روی آن ضربه بزنید:"</string>
     <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"انتخاب ویژگی‌های موردنظر برای استفاده با دکمه دسترس‌پذیری"</string>
     <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"انتخاب ویژگی‌های موردنظر برای استفاده با میان‌بر کلید میزان صدا"</string>
@@ -1654,11 +1654,11 @@
     <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"کلیدهای میزان صدا پایین نگه داشته شد. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> خاموش شد."</string>
     <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"برای استفاده از <xliff:g id="SERVICE_NAME">%1$s</xliff:g>، هر دو کلید صدا را فشار دهید و سه ثانیه نگه دارید"</string>
     <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"ویژگی را انتخاب کنید که هنگام ضربه زدن روی دکمه دسترس‌پذیری استفاده می‌شود:"</string>
-    <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"ویژگی را برای استفاده با اشاره دسترس‌پذیری انتخاب کنید (با دو انگشت صفحه را از پایین تند به بالا بکشید):"</string>
-    <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"ویزگی را برای استفاده با اشاره دسترس‌پذیری انتخاب کنید (با سه انگشت صفحه را از پایین تند به بالا بکشید):"</string>
+    <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"ویژگی را برای استفاده با اشاره دسترس‌پذیری انتخاب کنید (با دو انگشت صفحه را از پایین تند به‌بالا بکشید):"</string>
+    <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"ویزگی را برای استفاده با اشاره دسترس‌پذیری انتخاب کنید (با سه انگشت صفحه را از پایین تند به‌بالا بکشید):"</string>
     <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"برای جابه‌جایی بین ویژگی‌ها، دکمه دسترس‌پذیری را لمس کنید و نگه دارید."</string>
-    <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"برای جابه‌جایی بین ویژگی‌ها، با دو انگشت صفحه را تند به بالا بکشید و نگه دارید."</string>
-    <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"برای جابه‌جایی بین ویژگی‌ها، با سه انگشت صفحه را تند به بالا بکشید و نگه دارید."</string>
+    <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"برای جابه‌جایی بین ویژگی‌ها، با دو انگشت صفحه را تند به‌بالا بکشید و نگه دارید."</string>
+    <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"برای جابه‌جایی بین ویژگی‌ها، با سه انگشت صفحه را تند به‌بالا بکشید و نگه دارید."</string>
     <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"درشت‌نمایی"</string>
     <string name="user_switched" msgid="7249833311585228097">"کاربر کنونی <xliff:g id="NAME">%1$s</xliff:g>."</string>
     <string name="user_switching_message" msgid="1912993630661332336">"در حالت تغییر به <xliff:g id="NAME">%1$s</xliff:g>…"</string>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index bba11bc..aee6739 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -302,7 +302,7 @@
     <string name="permgrouplab_sms" msgid="795737735126084874">"Tekstiviestit"</string>
     <string name="permgroupdesc_sms" msgid="5726462398070064542">"lähettää ja tarkastella tekstiviestejä"</string>
     <string name="permgrouplab_storage" msgid="1938416135375282333">"Tiedostot ja media"</string>
-    <string name="permgroupdesc_storage" msgid="6351503740613026600">"käyttää laitteellesi tallennettuja valokuvia, mediatiedostoja ja muita tiedostoja"</string>
+    <string name="permgroupdesc_storage" msgid="6351503740613026600">"käyttää laitteellesi tallennettuja kuvia, mediatiedostoja ja muita tiedostoja"</string>
     <string name="permgrouplab_microphone" msgid="2480597427667420076">"Mikrofoni"</string>
     <string name="permgroupdesc_microphone" msgid="1047786732792487722">"tallentaa ääntä"</string>
     <string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"Liikkuminen"</string>
@@ -1914,7 +1914,7 @@
     <string name="app_category_game" msgid="4534216074910244790">"Pelit"</string>
     <string name="app_category_audio" msgid="8296029904794676222">"Musiikki ja ääni"</string>
     <string name="app_category_video" msgid="2590183854839565814">"Elokuvat ja videot"</string>
-    <string name="app_category_image" msgid="7307840291864213007">"Kuvat ja valokuvat"</string>
+    <string name="app_category_image" msgid="7307840291864213007">"Kuvat ja kuvat"</string>
     <string name="app_category_social" msgid="2278269325488344054">"Some ja viestintä"</string>
     <string name="app_category_news" msgid="1172762719574964544">"Uutiset ja lehdet"</string>
     <string name="app_category_maps" msgid="6395725487922533156">"Kartat ja navigointi"</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 1032da2..d4978c3 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -325,7 +325,7 @@
     <string name="capability_desc_canControlMagnification" msgid="2206586716709254805">"Contrôle le niveau de zoom et le positionnement de l\'écran."</string>
     <string name="capability_title_canPerformGestures" msgid="9106545062106728987">"Effectuer des gestes"</string>
     <string name="capability_desc_canPerformGestures" msgid="6619457251067929726">"Permet d\'appuyer sur l\'écran, de le balayer, de le pincer et d\'effectuer d\'autres gestes."</string>
-    <string name="capability_title_canCaptureFingerprintGestures" msgid="1189053104594608091">"Gestes avec l\'empreinte digitale"</string>
+    <string name="capability_title_canCaptureFingerprintGestures" msgid="1189053104594608091">"Gestes d\'empreinte digitale"</string>
     <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Peut enregistrer des gestes effectués sur le lecteur d\'empreinte digitale de l\'appareil."</string>
     <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Prendre une capture d\'écran"</string>
     <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Peut prendre des captures d\'écran."</string>
diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml
index 1732d08..e4ac021 100644
--- a/core/res/res/values-gl/strings.xml
+++ b/core/res/res/values-gl/strings.xml
@@ -849,7 +849,7 @@
     <string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Pausar"</string>
     <string name="lockscreen_transport_play_description" msgid="106868788691652733">"Reproducir"</string>
     <string name="lockscreen_transport_stop_description" msgid="1449552232598355348">"Deter"</string>
-    <string name="lockscreen_transport_rew_description" msgid="7680106856221622779">"Rebobinar"</string>
+    <string name="lockscreen_transport_rew_description" msgid="7680106856221622779">"Retroceder"</string>
     <string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Avance rápido"</string>
     <string name="emergency_calls_only" msgid="3057351206678279851">"Só chamadas de emerxencia"</string>
     <string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Bloqueada pola rede"</string>
diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml
index dfe5d82..6700f54 100644
--- a/core/res/res/values-gu/strings.xml
+++ b/core/res/res/values-gu/strings.xml
@@ -1135,7 +1135,7 @@
     <string name="whichGiveAccessToApplicationLabel" msgid="7805857277166106236">"ઍક્સેસ આપો"</string>
     <string name="whichEditApplication" msgid="6191568491456092812">"આનાથી સંપાદિત કરો"</string>
     <string name="whichEditApplicationNamed" msgid="8096494987978521514">"%1$s સાથે સંપાદિત કરો"</string>
-    <string name="whichEditApplicationLabel" msgid="1463288652070140285">"સંપાદિત કરો"</string>
+    <string name="whichEditApplicationLabel" msgid="1463288652070140285">"ફેરફાર કરો"</string>
     <string name="whichSendApplication" msgid="4143847974460792029">"શેર કરો"</string>
     <string name="whichSendApplicationNamed" msgid="4470386782693183461">"%1$s સાથે શેર કરો"</string>
     <string name="whichSendApplicationLabel" msgid="7467813004769188515">"શેર કરો"</string>
@@ -1221,7 +1221,7 @@
     <string name="volume_music_hint_silent_ringtone_selected" msgid="1514829655029062233">"સાઇલેન્ટ રિંગટોન સેટ કરી"</string>
     <string name="volume_call" msgid="7625321655265747433">"ઇન-કૉલ વૉલ્યૂમ"</string>
     <string name="volume_bluetooth_call" msgid="2930204618610115061">"બ્લૂટૂથ ઇન-કૉલ વૉલ્યૂમ"</string>
-    <string name="volume_alarm" msgid="4486241060751798448">"એલાર્મ વૉલ્યૂમ"</string>
+    <string name="volume_alarm" msgid="4486241060751798448">"અલાર્મ વૉલ્યૂમ"</string>
     <string name="volume_notification" msgid="6864412249031660057">"સૂચના વૉલ્યૂમ"</string>
     <string name="volume_unknown" msgid="4041914008166576293">"વૉલ્યૂમ"</string>
     <string name="volume_icon_description_bluetooth" msgid="7540388479345558400">"બ્લૂટૂથ વૉલ્યૂમ"</string>
@@ -1513,7 +1513,7 @@
     <string name="storage_usb_drive" msgid="448030813201444573">"USB ડ્રાઇવ"</string>
     <string name="storage_usb_drive_label" msgid="6631740655876540521">"<xliff:g id="MANUFACTURER">%s</xliff:g> USB ડ્રાઇવ"</string>
     <string name="storage_usb" msgid="2391213347883616886">"USB સ્ટોરેજ"</string>
-    <string name="extract_edit_menu_button" msgid="63954536535863040">"સંપાદિત કરો"</string>
+    <string name="extract_edit_menu_button" msgid="63954536535863040">"ફેરફાર કરો"</string>
     <string name="data_usage_warning_title" msgid="9034893717078325845">"ડેટા ચેતવણી"</string>
     <string name="data_usage_warning_body" msgid="1669325367188029454">"તમે <xliff:g id="APP">%s</xliff:g> ડેટા વાપર્યો છે"</string>
     <string name="data_usage_mobile_limit_title" msgid="3911447354393775241">"મોબાઇલ ડેટાની મર્યાદા આવી ગઈ"</string>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 52c2be0..5ac5770 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -1548,7 +1548,7 @@
     <string name="launchBrowserDefault" msgid="6328349989932924119">"ब्राउज़र लॉन्च करें?"</string>
     <string name="SetupCallDefault" msgid="5581740063237175247">"कॉल स्वीकार करें?"</string>
     <string name="activity_resolver_use_always" msgid="5575222334666843269">"हमेशा"</string>
-    <string name="activity_resolver_use_once" msgid="948462794469672658">"केवल एक बार"</string>
+    <string name="activity_resolver_use_once" msgid="948462794469672658">"सिर्फ़ एक बार"</string>
     <string name="activity_resolver_work_profiles_support" msgid="4071345609235361269">"%1$s वर्क प्रोफ़ाइल का समर्थन नहीं करता"</string>
     <string name="default_audio_route_name" product="tablet" msgid="367936735632195517">"टैबलेट"</string>
     <string name="default_audio_route_name" product="tv" msgid="4908971385068087367">"टीवी"</string>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 6b44213..a2b04e3 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -307,7 +307,7 @@
     <string name="permgroupdesc_microphone" msgid="1047786732792487722">"hanganyag rögzítése"</string>
     <string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"Testmozgás"</string>
     <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"hozzáférés a testmozgási adatokhoz"</string>
-    <string name="permgrouplab_camera" msgid="9090413408963547706">"Fényképezőgép"</string>
+    <string name="permgrouplab_camera" msgid="9090413408963547706">"Kamera"</string>
     <string name="permgroupdesc_camera" msgid="7585150538459320326">"fotók és videók készítése"</string>
     <string name="permgrouplab_calllog" msgid="7926834372073550288">"Hívásnaplók"</string>
     <string name="permgroupdesc_calllog" msgid="2026996642917801803">"hívásnapló olvasása és írása"</string>
@@ -1900,8 +1900,8 @@
     <string name="profile_encrypted_message" msgid="1128512616293157802">"A feloldáshoz koppintson rá"</string>
     <string name="usb_mtp_launch_notification_title" msgid="774319638256707227">"Csatlakoztatva a(z) <xliff:g id="PRODUCT_NAME">%1$s</xliff:g> eszközhöz"</string>
     <string name="usb_mtp_launch_notification_description" msgid="6942535713629852684">"Koppintson ide a fájlok megtekintéséhez"</string>
-    <string name="pin_target" msgid="8036028973110156895">"Rögzítés"</string>
-    <string name="pin_specific_target" msgid="7824671240625957415">"<xliff:g id="LABEL">%1$s</xliff:g> rögzítése"</string>
+    <string name="pin_target" msgid="8036028973110156895">"Kitűzés"</string>
+    <string name="pin_specific_target" msgid="7824671240625957415">"<xliff:g id="LABEL">%1$s</xliff:g> kitűzése"</string>
     <string name="unpin_target" msgid="3963318576590204447">"Feloldás"</string>
     <string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g> rögzítésének feloldása"</string>
     <string name="app_info" msgid="6113278084877079851">"Alkalmazásinformáció"</string>
diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml
index 11df647..e94e658 100644
--- a/core/res/res/values-hy/strings.xml
+++ b/core/res/res/values-hy/strings.xml
@@ -48,7 +48,7 @@
     <string name="invalidPin" msgid="7542498253319440408">"Մուտքագրեք PIN, որը 4-ից 8 թիվ է:"</string>
     <string name="invalidPuk" msgid="8831151490931907083">"Մուտքագրեք PUK, որն 8 կամ ավել թիվ ունի:"</string>
     <string name="needPuk" msgid="7321876090152422918">"Ձեր SIM քարտը PUK-ով կողպված է: Մուտքագրեք PUK կոդը այն ապակողպելու համար:"</string>
-    <string name="needPuk2" msgid="7032612093451537186">"Մուտքագրեք PUK2-ը` SIM քարտն արգելահանելու համար:"</string>
+    <string name="needPuk2" msgid="7032612093451537186">"Մուտքագրեք PUK2-ը՝ SIM քարտն արգելահանելու համար:"</string>
     <string name="enablePin" msgid="2543771964137091212">"Ձախողվեց: Միացրեք SIM/RUIM կողպումը:"</string>
     <plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
       <item quantity="one">Մնաց <xliff:g id="NUMBER_1">%d</xliff:g> փորձ, որից հետո SIM քարտն արգելափակվելու է:</item>
@@ -409,7 +409,7 @@
     <string name="permdesc_writeCallLog" product="tablet" msgid="2657525794731690397">"Թույլ է տալիս հավելվածին փոփոխել ձեր պլանշետի զանգերի մատյանը, այդ թվում` մուտքային և ելքային զանգերի մասին տվյալները: Վնասարար հավելվածները կարող են սա օգտագործել` ձեր զանգերի մատյանը ջնջելու կամ փոփոխելու համար:"</string>
     <string name="permdesc_writeCallLog" product="tv" msgid="3934939195095317432">"Թույլ է տալիս հավելվածին փոփոխել Android TV սարքի զանգերի մատյանը, այդ թվում՝ մուտքային և ելքային զանգերի մասին տվյալները: Վնասարար հավելվածները կարող են սա օգտագործել՝ ձեր զանգերի մատյանը ջնջելու կամ փոփոխելու համար:"</string>
     <string name="permdesc_writeCallLog" product="default" msgid="5903033505665134802">"Թույլ է տալիս հավելվածին փոփոխել ձեր հեռախոսի զանգերի մատյանը, այդ թվում` մուտքային և ելքային զանգերի մասին տվյալները: Վնասարար հավելվածները կարող են սա օգտագործել` ձեր զանգերի մատյանը ջնջելու կամ փոփոխելու համար:"</string>
-    <string name="permlab_bodySensors" msgid="3411035315357380862">"օգտագործել մարմնի սենսորները (օրինակ` սրտի կծկումների հաճախականության չափիչ)"</string>
+    <string name="permlab_bodySensors" msgid="3411035315357380862">"օգտագործել մարմնի սենսորները (օրինակ՝ սրտի կծկումների հաճախականության չափիչ)"</string>
     <string name="permdesc_bodySensors" product="default" msgid="2365357960407973997">"Հավելվածին թույլ է տալիս մուտք ունենալ սենսորների տվյալներին, որոնք վերահսկում են ձեր ֆիզիկական վիճակը, օրինակ՝ ձեր սրտի զարկերը:"</string>
     <string name="permlab_readCalendar" msgid="6408654259475396200">"Կարդալ օրացույցի միջոցառումները և տվյալները"</string>
     <string name="permdesc_readCalendar" product="tablet" msgid="515452384059803326">"Այս հավելվածը կարող է կարդալ օրացույցի՝ ձեր պլանշետում պահված բոլոր միջոցառումները, ինչպես նաև հրապարակել կամ պահել ձեր օրացույցի տվյալները:"</string>
@@ -428,7 +428,7 @@
     <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"տեղադրության մասին տվյալների հասանելիություն ֆոնային ռեժիմում"</string>
     <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Այս հավելվածը ցանկացած ժամանակ կարող է տեսնել տեղադրության տվյալները, նույնիսկ երբ այն ակտիվ չէ։"</string>
     <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"փոխել ձեր աուդիո կարգավորումները"</string>
-    <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Թույլ է տալիս հավելվածին փոփոխել ձայնանյութի գլոբալ կարգավորումները, ինչպես օրինակ` ձայնը և թե որ խոսափողն է օգտագործված արտածման համար:"</string>
+    <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Թույլ է տալիս հավելվածին փոփոխել ձայնանյութի գլոբալ կարգավորումները, ինչպես օրինակ՝ ձայնը և թե որ խոսափողն է օգտագործված արտածման համար:"</string>
     <string name="permlab_recordAudio" msgid="1208457423054219147">"ձայնագրել աուդիո ֆայլ"</string>
     <string name="permdesc_recordAudio" msgid="3976213377904701093">"Այս հավելվածը ցանկացած պահի կարող է ձայնագրել խոսափողի օգնությամբ:"</string>
     <string name="permlab_sim_communication" msgid="176788115994050692">"ուղարկել հրամաններ SIM քարտին"</string>
@@ -493,7 +493,7 @@
     <string name="permlab_changeTetherState" msgid="9079611809931863861">"փոխել միացված կապը"</string>
     <string name="permdesc_changeTetherState" msgid="3025129606422533085">"Թույլ է տալիս հավելվածին փոխել կապված ցանցի միացման կարգավիճակը:"</string>
     <string name="permlab_accessWifiState" msgid="5552488500317911052">"դիտել Wi-Fi կապերը"</string>
-    <string name="permdesc_accessWifiState" msgid="6913641669259483363">"Թույլ է տալիս հավելվածին տեսնել Wi-Fi ցանցի տեղեկություններ, ինչպես օրինակ` արդյոք Wi-Fi-ը միացված է, թե` ոչ, և միացված Wi-Fi սարքի անունը:"</string>
+    <string name="permdesc_accessWifiState" msgid="6913641669259483363">"Թույլ է տալիս հավելվածին տեսնել Wi-Fi ցանցի տեղեկություններ, ինչպես օրինակ՝ արդյոք Wi-Fi-ը միացված է, թե` ոչ, և միացված Wi-Fi սարքի անունը:"</string>
     <string name="permlab_changeWifiState" msgid="7947824109713181554">"միանալ Wi-Fi-ին և անջատվել դրանից"</string>
     <string name="permdesc_changeWifiState" msgid="7170350070554505384">"Թույլ է տալիս հավելվածին միանալ Wi-Fi մուտքի կետերին և անջատվել այդ կետերից, ինչպես նաև կատարել սարքի կարգավորման փոփոխություններ Wi-Fi ցանցերի համար:"</string>
     <string name="permlab_changeWifiMulticastState" msgid="285626875870754696">"թույլատրել Բազմասփյուռ Wi-Fi-ի ընդունումը"</string>
@@ -612,7 +612,7 @@
   </string-array>
     <string name="face_icon_content_description" msgid="465030547475916280">"Դեմքի պատկերակ"</string>
     <string name="permlab_readSyncSettings" msgid="6250532864893156277">"կարդալ համաժամացման կարգավորումները"</string>
-    <string name="permdesc_readSyncSettings" msgid="1325658466358779298">"Թույլ է տալիս հավելվածին կարդալ համաժամացման կարգավորումները հաշվի համար: Օրինակ` այն կարող է որոշել, արդյոք Մարդիկ հավելվածը համաժամացված է հաշվի հետ:"</string>
+    <string name="permdesc_readSyncSettings" msgid="1325658466358779298">"Թույլ է տալիս հավելվածին կարդալ համաժամացման կարգավորումները հաշվի համար: Օրինակ՝ այն կարող է որոշել, արդյոք Մարդիկ հավելվածը համաժամացված է հաշվի հետ:"</string>
     <string name="permlab_writeSyncSettings" msgid="6583154300780427399">"համաժամացումը փոխարկել միացվածի և անջատվածի"</string>
     <string name="permdesc_writeSyncSettings" msgid="6029151549667182687">"Թույլ է տալիս հավելվածին փոփոխել համաժամացման կարգավորումները հաշվի համար: Օրինակ, այն կարող է օգտագործվել` միացնելու Մարդիկ հավելվածի համաժամացումը հաշվի հետ:"</string>
     <string name="permlab_readSyncStats" msgid="3747407238320105332">"կարդալ համաժամացման վիճակագրությունը"</string>
@@ -873,7 +873,7 @@
     <string name="lockscreen_forgot_pattern_button_text" msgid="8362442730606839031">"Մոռացե՞լ եք սխեման:"</string>
     <string name="lockscreen_glogin_forgot_pattern" msgid="9218940117797602518">"Հաշվի ապակողպում"</string>
     <string name="lockscreen_glogin_too_many_attempts" msgid="3775904917743034195">"Չափից շատ սխեմայի փորձեր"</string>
-    <string name="lockscreen_glogin_instructions" msgid="4695162942525531700">"Ապակողպելու համար` մուտք գործեք ձեր Google հաշվով:"</string>
+    <string name="lockscreen_glogin_instructions" msgid="4695162942525531700">"Ապակողպելու համար՝ մուտք գործեք ձեր Google հաշվով:"</string>
     <string name="lockscreen_glogin_username_hint" msgid="6916101478673157045">"Օգտանուն (էլփոստ)"</string>
     <string name="lockscreen_glogin_password_hint" msgid="3031027901286812848">"Գաղտնաբառ"</string>
     <string name="lockscreen_glogin_submit_button" msgid="3590556636347843733">"Մուտք գործել"</string>
@@ -1404,7 +1404,7 @@
     <string name="ime_action_done" msgid="6299921014822891569">"Պատրաստ է"</string>
     <string name="ime_action_previous" msgid="6548799326860401611">"Նախորդ"</string>
     <string name="ime_action_default" msgid="8265027027659800121">"Կատարել"</string>
-    <string name="dial_number_using" msgid="6060769078933953531">"Հավաքել հեռախոսահամարը`\nօգտագործելով <xliff:g id="NUMBER">%s</xliff:g>-ը"</string>
+    <string name="dial_number_using" msgid="6060769078933953531">"Հավաքել հեռախոսահամարը՝\nօգտագործելով <xliff:g id="NUMBER">%s</xliff:g>-ը"</string>
     <string name="create_contact_using" msgid="6200708808003692594">"Ստեղծել կոնտակտ`\nօգտագործելով <xliff:g id="NUMBER">%s</xliff:g>-ը"</string>
     <string name="grant_credentials_permission_message_header" msgid="5365733888842570481">"Հետևյալ մեկ կամ մի քանի հավելվածներին թույլտվություն է անհրաժեշտ՝ այժմ և հետագայում ձեր հաշվի տվյալներն օգտագործելու համար։"</string>
     <string name="grant_credentials_permission_message_footer" msgid="1886710210516246461">"Թույլատրե՞լ"</string>
@@ -1474,7 +1474,7 @@
     <string name="number_picker_increment_button" msgid="7621013714795186298">"Ավելացնել"</string>
     <string name="number_picker_decrement_button" msgid="5116948444762708204">"Նվազեցնել"</string>
     <string name="number_picker_increment_scroll_mode" msgid="8403893549806805985">"<xliff:g id="VALUE">%s</xliff:g> հպեք և պահեք:"</string>
-    <string name="number_picker_increment_scroll_action" msgid="8310191318914268271">"Սահեցրեք վերև` ավելացնելու համար, և ներքև` նվազեցնելու համար:"</string>
+    <string name="number_picker_increment_scroll_action" msgid="8310191318914268271">"Սահեցրեք վերև՝ ավելացնելու համար, և ներքև՝ նվազեցնելու համար:"</string>
     <string name="time_picker_increment_minute_button" msgid="7195870222945784300">"Աճեցնել րոպեն"</string>
     <string name="time_picker_decrement_minute_button" msgid="230925389943411490">"Նվազեցնել րոպեն"</string>
     <string name="time_picker_increment_hour_button" msgid="3063572723197178242">"Աճեցնել ժամը"</string>
@@ -1598,7 +1598,7 @@
     <string name="kg_invalid_puk" msgid="4809502818518963344">"Վերամուտքագրեք ճիշտ PUK ծածկագիրը: Կրկնվող փորձերը ընդմիշտ կկասեցնեն SIM քարտը:"</string>
     <string name="kg_invalid_confirm_pin_hint" product="default" msgid="4705368340409816254">"PIN ծածկագրերը չեն համընկնում"</string>
     <string name="kg_login_too_many_attempts" msgid="699292728290654121">"Չափից շատ սխեմայի փորձեր"</string>
-    <string name="kg_login_instructions" msgid="3619844310339066827">"Ապակողպելու համար` մուտք գործեք ձեր Google հաշվով:"</string>
+    <string name="kg_login_instructions" msgid="3619844310339066827">"Ապակողպելու համար՝ մուտք գործեք ձեր Google հաշվով:"</string>
     <string name="kg_login_username_hint" msgid="1765453775467133251">"Օգտանուն (էլփոստ)"</string>
     <string name="kg_login_password_hint" msgid="3330530727273164402">"Գաղտնաբառը"</string>
     <string name="kg_login_submit_button" msgid="893611277617096870">"Մուտք գործել"</string>
@@ -1979,7 +1979,7 @@
     <string name="shortcut_restore_signature_mismatch" msgid="579345304221605479">"Չհաջողվեց վերականգնել դյուրանցումը, քանի որ հավելվածների ստորագրությունները տարբեր են"</string>
     <string name="shortcut_restore_unknown_issue" msgid="2478146134395982154">"Չհաջողվեց վերականգնել դյուրանցումը"</string>
     <string name="shortcut_disabled_reason_unknown" msgid="753074793553599166">"Դյուրանցումն անջատված է"</string>
-    <string name="harmful_app_warning_uninstall" msgid="6472912975664191772">"ՀԵՌԱՑՆԵԼ"</string>
+    <string name="harmful_app_warning_uninstall" msgid="6472912975664191772">"ԱՊԱՏԵՂԱԴՐԵԼ"</string>
     <string name="harmful_app_warning_open_anyway" msgid="5963657791740211807">"ԲԱՑԵԼ"</string>
     <string name="harmful_app_warning_title" msgid="8794823880881113856">"Հայտնաբերվել է վնասաբեր հավելված"</string>
     <string name="slices_permission_request" msgid="3677129866636153406">"<xliff:g id="APP_0">%1$s</xliff:g> հավելվածն ուզում է ցուցադրել հատվածներ <xliff:g id="APP_2">%2$s</xliff:g> հավելվածից"</string>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index d74b3fe..a368319 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -1231,7 +1231,7 @@
     <string name="volume_icon_description_notification" msgid="579091344110747279">"Volume pemberitahuan"</string>
     <string name="ringtone_default" msgid="9118299121288174597">"Nada dering default"</string>
     <string name="ringtone_default_with_actual" msgid="2709686194556159773">"Default (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
-    <string name="ringtone_silent" msgid="397111123930141876">"Tidak Ada"</string>
+    <string name="ringtone_silent" msgid="397111123930141876">"Tidak ada"</string>
     <string name="ringtone_picker_title" msgid="667342618626068253">"Nada dering"</string>
     <string name="ringtone_picker_title_alarm" msgid="7438934548339024767">"Suara alarm"</string>
     <string name="ringtone_picker_title_notification" msgid="6387191794719608122">"Suara notifikasi"</string>
diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml
index c55946e..aa60234 100644
--- a/core/res/res/values-kk/strings.xml
+++ b/core/res/res/values-kk/strings.xml
@@ -1792,8 +1792,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Әкімші жаңартқан"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Әкімші жойған"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"Жарайды"</string>
-    <string name="battery_saver_description_with_learn_more" msgid="5997766757551917769">"Батарея жұмысының ұзақтығын арттыру үшін Battery Saver:\n\n•қараңғы тақырыпты іске қосады;\n•фондық әрекеттерді, кейбір көрнекі әсерлерді және \"Ok Google\" сияқты басқа да функцияларды өшіреді немесе шектейді.\n\n"<annotation id="url">"Толығырақ"</annotation></string>
-    <string name="battery_saver_description" msgid="8587408568232177204">"Батарея жұмысының ұзақтығын арттыру үшін Battery Saver:\n\n•қараңғы тақырыпты іске қосады;\n•фондық әрекеттерді, кейбір көрнекі әсерлерді және \"Ok Google\" сияқты басқа да функцияларды өшіреді немесе шектейді."</string>
+    <string name="battery_saver_description_with_learn_more" msgid="5997766757551917769">"Батарея жұмысының ұзақтығын арттыру үшін Батареяны үнемдеу режимі:\n\n•қараңғы тақырыпты іске қосады;\n•фондық әрекеттерді, кейбір көрнекі әсерлерді және \"Ok Google\" сияқты басқа да функцияларды өшіреді немесе шектейді.\n\n"<annotation id="url">"Толығырақ"</annotation></string>
+    <string name="battery_saver_description" msgid="8587408568232177204">"Батарея жұмысының ұзақтығын арттыру үшін Батареяны үнемдеу режимі:\n\n•қараңғы тақырыпты іске қосады;\n•фондық әрекеттерді, кейбір көрнекі әсерлерді және \"Ok Google\" сияқты басқа да функцияларды өшіреді немесе шектейді."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Дерек шығынын азайту үшін Data Saver функциясы кейбір қолданбаларға деректерді фондық режимде жіберуге және алуға жол бермейді. Ашық тұрған қолданба деректерді пайдаланады, бірақ шектеулі шамада (мысалы, кескіндер оларды түрткенге дейін көрсетілмейді)."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Data Saver функциясын қосу керек пе?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Қосу"</string>
@@ -1912,7 +1912,7 @@
     <string name="conference_call" msgid="5731633152336490471">"Конференциялық қоңырау"</string>
     <string name="tooltip_popup_title" msgid="7863719020269945722">"Қалқыма сөзкөмек"</string>
     <string name="app_category_game" msgid="4534216074910244790">"Ойындар"</string>
-    <string name="app_category_audio" msgid="8296029904794676222">"Музыка және аудиомазмұн"</string>
+    <string name="app_category_audio" msgid="8296029904794676222">"Музыка және аудио"</string>
     <string name="app_category_video" msgid="2590183854839565814">"Фильм және бейне"</string>
     <string name="app_category_image" msgid="7307840291864213007">"Суреттер және кескіндер"</string>
     <string name="app_category_social" msgid="2278269325488344054">"Әлеуметтік қолданба мен байланыс"</string>
@@ -2000,7 +2000,7 @@
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Режим туралы хабарландыру"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Батарея заряды азаюы мүмкін"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Батарея ұзаққа жетуі үшін, Battery Saver іске қосылды"</string>
-    <string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Battery Saver"</string>
+    <string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Батареяны үнемдеу режимі"</string>
     <string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Battery Saver өшірілді"</string>
     <string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Телефонның заряды жеткілікті. Функцияларға енді шектеу қойылмайды."</string>
     <string name="battery_saver_charged_notification_summary" product="tablet" msgid="4426317048139996888">"Планшеттің заряды жеткілікті. Функцияларға енді шектеу қойылмайды."</string>
diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml
index 28629fd..af1db0b 100644
--- a/core/res/res/values-km/strings.xml
+++ b/core/res/res/values-km/strings.xml
@@ -2000,7 +2000,7 @@
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"ការ​ជូនដំណឹង​ព័ត៌មាន​របស់​មុខងារ​ទម្លាប់"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"ថ្ម​អាច​នឹង​អស់ មុនពេល​សាកថ្មធម្មតា"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"បាន​បើក​ដំណើរការកម្មវិធី​សន្សំ​ថ្ម ដើម្បីបង្កើនកម្រិត​ថាមពល​​ថ្ម"</string>
-    <string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"កម្មវិធីសន្សំថ្ម"</string>
+    <string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"មុខងារ​សន្សំ​ថ្ម"</string>
     <string name="battery_saver_off_notification_title" msgid="7637255960468032515">"កម្មវិធី​សន្សំ​ថ្ម​ត្រូវបានបិទ"</string>
     <string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"ទូរសព្ទ​មាន​កម្រិតថ្ម​គ្រប់គ្រាន់​។ មុខងារ​ផ្សេងៗ​មិន​ត្រូវបាន​រឹតបន្តឹងទៀត​ទេ។"</string>
     <string name="battery_saver_charged_notification_summary" product="tablet" msgid="4426317048139996888">"ថេប្លេត​មាន​កម្រិតថ្ម​គ្រប់គ្រាន់​។ មុខងារ​ផ្សេងៗ​មិន​ត្រូវបាន​រឹតបន្តឹងទៀត​ទេ។"</string>
diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml
index bd85908..2350ec82 100644
--- a/core/res/res/values-ky/strings.xml
+++ b/core/res/res/values-ky/strings.xml
@@ -1108,7 +1108,7 @@
     <string name="inputMethod" msgid="1784759500516314751">"Киргизүү ыкмасы"</string>
     <string name="editTextMenuTitle" msgid="857666911134482176">"Текст боюнча иштер"</string>
     <string name="low_internal_storage_view_title" msgid="9024241779284783414">"Сактагычта орун калбай баратат"</string>
-    <string name="low_internal_storage_view_text" msgid="8172166728369697835">"Системанын кээ бир функциялары иштебеши мүмкүн"</string>
+    <string name="low_internal_storage_view_text" msgid="8172166728369697835">"Айрым функциялар иштебеши мүмкүн"</string>
     <string name="low_internal_storage_view_text_no_boot" msgid="7368968163411251788">"Тутумда сактагыч жетишсиз. 250МБ бош орун бар экенин текшерип туруп, өчүрүп күйгүзүңүз."</string>
     <string name="app_running_notification_title" msgid="8985999749231486569">"<xliff:g id="APP_NAME">%1$s</xliff:g> иштөөдө"</string>
     <string name="app_running_notification_text" msgid="5120815883400228566">"Көбүрөөк маалымат үчүн же колдонмону токтотуш үчүн таптап коюңуз."</string>
@@ -1317,7 +1317,7 @@
     <string name="console_running_notification_title" msgid="6087888939261635904">"Сериялык консоль иштетилди"</string>
     <string name="console_running_notification_message" msgid="7892751888125174039">"Майнаптуулугуна таасири тиет. Аны өчүрүү үчүн операциялык тутумду жүктөгүчтү текшериңиз."</string>
     <string name="usb_contaminant_detected_title" msgid="4359048603069159678">"USB портунда суюктук же урандылар бар"</string>
-    <string name="usb_contaminant_detected_message" msgid="7346100585390795743">"USB порт автоматтык түрдө өчүрүлдү. Кененирээк маалымат алуу үчүн, таптап коюңуз."</string>
+    <string name="usb_contaminant_detected_message" msgid="7346100585390795743">"USB порт автоматтык түрдө өчтү. Кененирээк маалымат алуу үчүн, таптап коюңуз."</string>
     <string name="usb_contaminant_not_detected_title" msgid="2651167729563264053">"USB портун колдонууга болот"</string>
     <string name="usb_contaminant_not_detected_message" msgid="892863190942660462">"Телефон суюктук менен урандыларды аныктаган жок."</string>
     <string name="taking_remote_bugreport_notification_title" msgid="1582531382166919850">"Мүчүлүштүк тууралуу кабар алынууда…"</string>
diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml
index 643cafd..793cde7 100644
--- a/core/res/res/values-mk/strings.xml
+++ b/core/res/res/values-mk/strings.xml
@@ -985,7 +985,7 @@
     <string name="searchview_description_search" msgid="1045552007537359343">"Пребарај"</string>
     <string name="searchview_description_query" msgid="7430242366971716338">"Пребарај барање"</string>
     <string name="searchview_description_clear" msgid="1989371719192982900">"Исчисти барање"</string>
-    <string name="searchview_description_submit" msgid="6771060386117334686">"Поднеси барање"</string>
+    <string name="searchview_description_submit" msgid="6771060386117334686">"Испрати барање"</string>
     <string name="searchview_description_voice" msgid="42360159504884679">"Гласовно пребарување"</string>
     <string name="enable_explore_by_touch_warning_title" msgid="5095399706284943314">"Овозможи „Истражувај со допир“?"</string>
     <string name="enable_explore_by_touch_warning_message" product="tablet" msgid="1037295476738940824">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> сака да овозможи „Истражувај со допир“. Кога е вклучено „Истражувај со допир“, може да се слушнат или да се видат описи на она што е под вашиот прст или да се прават движења за комуницирање со таблетот."</string>
@@ -1436,7 +1436,7 @@
     <string name="upload_file" msgid="8651942222301634271">"Избери датотека"</string>
     <string name="no_file_chosen" msgid="4146295695162318057">"Не е избрана датотека"</string>
     <string name="reset" msgid="3865826612628171429">"Ресетирај"</string>
-    <string name="submit" msgid="862795280643405865">"Поднеси"</string>
+    <string name="submit" msgid="862795280643405865">"Испрати"</string>
     <string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Апликацијата за возење работи"</string>
     <string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Допрете за да излезете од апликацијата за возење."</string>
     <string name="back_button_label" msgid="4078224038025043387">"Назад"</string>
diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml
index f05ee8a..1b03604 100644
--- a/core/res/res/values-ml/strings.xml
+++ b/core/res/res/values-ml/strings.xml
@@ -325,7 +325,7 @@
     <string name="capability_desc_canControlMagnification" msgid="2206586716709254805">"ഡിസ്പ്ലേയുടെ സൂം നിലയും പൊസിഷനിംഗും നിയന്ത്രിക്കുക."</string>
     <string name="capability_title_canPerformGestures" msgid="9106545062106728987">"ജെസ്‌റ്ററുകൾ നിർവഹിക്കുക"</string>
     <string name="capability_desc_canPerformGestures" msgid="6619457251067929726">"ടാപ്പുചെയ്യാനോ സ്വൈപ്പുചെയ്യാനോ പിഞ്ചുചെയ്യാനോ മറ്റ് ജെസ്‌റ്ററുകൾ നിർവഹിക്കാനോ കഴിയും."</string>
-    <string name="capability_title_canCaptureFingerprintGestures" msgid="1189053104594608091">"ഫിംഗർപ്രിന്റ് ജെസ്‌റ്ററുകൾ"</string>
+    <string name="capability_title_canCaptureFingerprintGestures" msgid="1189053104594608091">"ഫിംഗർപ്രിന്റ് ജെസ്‌ച്ചറുകൾ"</string>
     <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"ഉപകരണത്തിന്റെ ഫിംഗർപ്രിന്റ് സെൻസറിൽ ചെയ്‌ത ജെസ്‌റ്ററുകൾ ക്യാപ്‌ചർ ചെയ്യാനാകും."</string>
     <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"സ്ക്രീന്‍ഷോട്ട് എടുക്കുക"</string>
     <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"ഡിസ്‌പ്ലേയുടെ സ്‌ക്രീൻഷോട്ട് എടുക്കാൻ കഴിയും."</string>
@@ -1547,7 +1547,7 @@
     <string name="sending" msgid="206925243621664438">"അയയ്‌ക്കുന്നു…"</string>
     <string name="launchBrowserDefault" msgid="6328349989932924119">"ബ്രൗസർ സമാരംഭിക്കണോ?"</string>
     <string name="SetupCallDefault" msgid="5581740063237175247">"കോൾ സ്വീകരിക്കണോ?"</string>
-    <string name="activity_resolver_use_always" msgid="5575222334666843269">"എല്ലായ്പ്പോഴും"</string>
+    <string name="activity_resolver_use_always" msgid="5575222334666843269">"എല്ലായ്‌പ്പോഴും"</string>
     <string name="activity_resolver_use_once" msgid="948462794469672658">"ഒരിക്കൽ മാത്രം"</string>
     <string name="activity_resolver_work_profiles_support" msgid="4071345609235361269">"%1$s, ഔദ്യോഗിക പ്രൊഫൈലിനെ പിന്തുണയ്‌ക്കുന്നില്ല"</string>
     <string name="default_audio_route_name" product="tablet" msgid="367936735632195517">"ടാബ്‌ലെറ്റ്"</string>
diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml
index 8a0dd91..b9bf08f 100644
--- a/core/res/res/values-my/strings.xml
+++ b/core/res/res/values-my/strings.xml
@@ -1093,7 +1093,7 @@
     <string name="cut" msgid="2561199725874745819">"ဖြတ်ရန်"</string>
     <string name="copy" msgid="5472512047143665218">"ကူးရန်"</string>
     <string name="failed_to_copy_to_clipboard" msgid="725919885138539875">"ကလစ်ဘုတ်သို့ မိတ္တူကူးခြင်း မအောင်မြင်ပါ"</string>
-    <string name="paste" msgid="461843306215520225">"Paste"</string>
+    <string name="paste" msgid="461843306215520225">"ကူးထည့်ရန်"</string>
     <string name="paste_as_plain_text" msgid="7664800665823182587">"စာသားအတိုင်း ကူးထည့်ပါ"</string>
     <string name="replace" msgid="7842675434546657444">"အစားထိုခြင်း"</string>
     <string name="delete" msgid="1514113991712129054">"ဖျက်ရန်"</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 1d15398..5099d4f 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -1091,7 +1091,7 @@
     <string name="elapsed_time_short_format_h_mm_ss" msgid="2302144714803345056">"<xliff:g id="HOURS">%1$d</xliff:g>:<xliff:g id="MINUTES">%2$02d</xliff:g>:<xliff:g id="SECONDS">%3$02d</xliff:g>"</string>
     <string name="selectAll" msgid="1532369154488982046">"Merk alt"</string>
     <string name="cut" msgid="2561199725874745819">"Klipp ut"</string>
-    <string name="copy" msgid="5472512047143665218">"Kopier"</string>
+    <string name="copy" msgid="5472512047143665218">"Kopiér"</string>
     <string name="failed_to_copy_to_clipboard" msgid="725919885138539875">"Kunne ikke kopiere til utklippstavlen"</string>
     <string name="paste" msgid="461843306215520225">"Lim inn"</string>
     <string name="paste_as_plain_text" msgid="7664800665823182587">"Lim inn som ren tekst"</string>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index c2c0e1f..e6b0039 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -711,7 +711,7 @@
     <item msgid="6216981255272016212">"Aangepast"</item>
   </string-array>
   <string-array name="emailAddressTypes">
-    <item msgid="7786349763648997741">"Thuis"</item>
+    <item msgid="7786349763648997741">"Privé"</item>
     <item msgid="435564470865989199">"Werk"</item>
     <item msgid="4199433197875490373">"Overig"</item>
     <item msgid="3233938986670468328">"Aangepast"</item>
@@ -769,7 +769,7 @@
     <string name="eventTypeAnniversary" msgid="4684702412407916888">"Jubileum"</string>
     <string name="eventTypeOther" msgid="530671238533887997">"Overig"</string>
     <string name="emailTypeCustom" msgid="1809435350482181786">"Aangepast"</string>
-    <string name="emailTypeHome" msgid="1597116303154775999">"Thuis"</string>
+    <string name="emailTypeHome" msgid="1597116303154775999">"Privé"</string>
     <string name="emailTypeWork" msgid="2020095414401882111">"Werk"</string>
     <string name="emailTypeOther" msgid="5131130857030897465">"Overig"</string>
     <string name="emailTypeMobile" msgid="787155077375364230">"Mobiel"</string>
@@ -931,9 +931,9 @@
     <string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nWeet u zeker dat u deze pagina wilt verlaten?"</string>
     <string name="save_password_label" msgid="9161712335355510035">"Bevestigen"</string>
     <string name="double_tap_toast" msgid="7065519579174882778">"Tip: dubbeltik om in en uit te zoomen."</string>
-    <string name="autofill_this_form" msgid="3187132440451621492">"Autom. aanvullen"</string>
-    <string name="setup_autofill" msgid="5431369130866618567">"Autom. aanvullen instellen"</string>
-    <string name="autofill_window_title" msgid="4379134104008111961">"Automatisch aanvullen met <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
+    <string name="autofill_this_form" msgid="3187132440451621492">"Autom. invullen"</string>
+    <string name="setup_autofill" msgid="5431369130866618567">"Autom. invullen instellen"</string>
+    <string name="autofill_window_title" msgid="4379134104008111961">"Automatisch invullen met <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
     <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
     <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
     <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
@@ -1101,7 +1101,7 @@
     <string name="selectTextMode" msgid="3225108910999318778">"Tekst selecteren"</string>
     <string name="undo" msgid="3175318090002654673">"Ongedaan maken"</string>
     <string name="redo" msgid="7231448494008532233">"Opnieuw"</string>
-    <string name="autofill" msgid="511224882647795296">"Automatisch aanvullen"</string>
+    <string name="autofill" msgid="511224882647795296">"Automatisch invullen"</string>
     <string name="textSelectionCABTitle" msgid="5151441579532476940">"Tekstselectie"</string>
     <string name="addToDictionary" msgid="8041821113480950096">"Toevoegen aan woordenboek"</string>
     <string name="deleteText" msgid="4200807474529938112">"Verwijderen"</string>
@@ -1276,7 +1276,7 @@
     <string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Nooit toestaan"</string>
     <string name="sim_removed_title" msgid="5387212933992546283">"Simkaart verwijderd"</string>
     <string name="sim_removed_message" msgid="9051174064474904617">"Het mobiele netwerk is niet beschikbaar totdat u het apparaat opnieuw start met een geldige simkaart."</string>
-    <string name="sim_done_button" msgid="6464250841528410598">"Gereed"</string>
+    <string name="sim_done_button" msgid="6464250841528410598">"Klaar"</string>
     <string name="sim_added_title" msgid="7930779986759414595">"Simkaart aangesloten"</string>
     <string name="sim_added_message" msgid="6602906609509958680">"Start je apparaat opnieuw voor toegang tot het mobiele netwerk."</string>
     <string name="sim_restart_button" msgid="8481803851341190038">"Opnieuw starten"</string>
@@ -1289,7 +1289,7 @@
     <string name="time_picker_dialog_title" msgid="9053376764985220821">"Tijd instellen"</string>
     <string name="date_picker_dialog_title" msgid="5030520449243071926">"Datum instellen"</string>
     <string name="date_time_set" msgid="4603445265164486816">"Instellen"</string>
-    <string name="date_time_done" msgid="8363155889402873463">"Gereed"</string>
+    <string name="date_time_done" msgid="8363155889402873463">"Klaar"</string>
     <string name="perms_new_perm_prefix" msgid="6984556020395757087"><font size="12" fgcolor="#ff33b5e5">"NIEUW: "</font></string>
     <string name="perms_description_app" msgid="2747752389870161996">"Geleverd door <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="no_permissions" msgid="5729199278862516390">"Geen rechten nodig"</string>
@@ -1376,7 +1376,7 @@
     <string name="ext_media_status_removed" msgid="241223931135751691">"Verwijderd"</string>
     <string name="ext_media_status_unmounted" msgid="8145812017295835941">"Uitgeworpen"</string>
     <string name="ext_media_status_checking" msgid="159013362442090347">"Controleren…"</string>
-    <string name="ext_media_status_mounted" msgid="3459448555811203459">"Gereed"</string>
+    <string name="ext_media_status_mounted" msgid="3459448555811203459">"Klaar"</string>
     <string name="ext_media_status_mounted_ro" msgid="1974809199760086956">"Alleen lezen"</string>
     <string name="ext_media_status_bad_removal" msgid="508448566481406245">"Onveilig verwijderd"</string>
     <string name="ext_media_status_unmountable" msgid="7043574843541087748">"Beschadigd"</string>
@@ -1401,7 +1401,7 @@
     <string name="ime_action_search" msgid="4501435960587287668">"Zoeken"</string>
     <string name="ime_action_send" msgid="8456843745664334138">"Verzenden"</string>
     <string name="ime_action_next" msgid="4169702997635728543">"Volgende"</string>
-    <string name="ime_action_done" msgid="6299921014822891569">"Gereed"</string>
+    <string name="ime_action_done" msgid="6299921014822891569">"Klaar"</string>
     <string name="ime_action_previous" msgid="6548799326860401611">"Vorige"</string>
     <string name="ime_action_default" msgid="8265027027659800121">"Uitvoeren"</string>
     <string name="dial_number_using" msgid="6060769078933953531">"Nummer bellen\nmet <xliff:g id="NUMBER">%s</xliff:g>"</string>
@@ -1448,7 +1448,7 @@
       <item quantity="other"><xliff:g id="INDEX">%d</xliff:g> van <xliff:g id="TOTAL">%d</xliff:g></item>
       <item quantity="one">1 overeenkomst</item>
     </plurals>
-    <string name="action_mode_done" msgid="2536182504764803222">"Gereed"</string>
+    <string name="action_mode_done" msgid="2536182504764803222">"Klaar"</string>
     <string name="progress_erasing" msgid="6891435992721028004">"Gedeelde opslag wissen…"</string>
     <string name="share" msgid="4157615043345227321">"Delen"</string>
     <string name="find" msgid="5015737188624767706">"Vinden"</string>
@@ -1492,7 +1492,7 @@
     <string name="keyboardview_keycode_alt" msgid="8997420058584292385">"Alt"</string>
     <string name="keyboardview_keycode_cancel" msgid="2134624484115716975">"Annuleren"</string>
     <string name="keyboardview_keycode_delete" msgid="2661117313730098650">"Delete"</string>
-    <string name="keyboardview_keycode_done" msgid="2524518019001653851">"Gereed"</string>
+    <string name="keyboardview_keycode_done" msgid="2524518019001653851">"Klaar"</string>
     <string name="keyboardview_keycode_mode_change" msgid="2743735349997999020">"Modus wijzigen"</string>
     <string name="keyboardview_keycode_shift" msgid="3026509237043975573">"Shift"</string>
     <string name="keyboardview_keycode_enter" msgid="168054869339091055">"Enter"</string>
@@ -1645,7 +1645,7 @@
     <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Functies kiezen voor gebruik met de sneltoets via de volumeknop"</string>
     <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> is uitgeschakeld"</string>
     <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Snelkoppelingen bewerken"</string>
-    <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Gereed"</string>
+    <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Klaar"</string>
     <string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Sneltoets uitschakelen"</string>
     <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Sneltoets gebruiken"</string>
     <string name="color_inversion_feature_name" msgid="326050048927789012">"Kleurinversie"</string>
@@ -1774,7 +1774,7 @@
     <string name="immersive_cling_title" msgid="2307034298721541791">"Volledig scherm wordt weergegeven"</string>
     <string name="immersive_cling_description" msgid="7092737175345204832">"Swipe omlaag vanaf de bovenkant van het scherm om af te sluiten."</string>
     <string name="immersive_cling_positive" msgid="7047498036346489883">"Ik snap het"</string>
-    <string name="done_label" msgid="7283767013231718521">"Gereed"</string>
+    <string name="done_label" msgid="7283767013231718521">"Klaar"</string>
     <string name="hour_picker_description" msgid="5153757582093524635">"Ronde schuifregelaar voor uren"</string>
     <string name="minute_picker_description" msgid="9029797023621927294">"Ronde schuifregelaar voor minuten"</string>
     <string name="select_hours" msgid="5982889657313147347">"Uren selecteren"</string>
@@ -1928,13 +1928,13 @@
     <string name="time_picker_prompt_label" msgid="303588544656363889">"Typ een tijd"</string>
     <string name="time_picker_text_input_mode_description" msgid="4761160667516611576">"Schakel naar de tekstinvoermodus om de tijd in te voeren."</string>
     <string name="time_picker_radial_mode_description" msgid="1222342577115016953">"Schakel naar de klokmodus om de tijd in te voeren."</string>
-    <string name="autofill_picker_accessibility_title" msgid="4425806874792196599">"Opties voor automatisch aanvullen"</string>
-    <string name="autofill_save_accessibility_title" msgid="1523225776218450005">"Opslaan voor Automatisch aanvullen"</string>
+    <string name="autofill_picker_accessibility_title" msgid="4425806874792196599">"Opties voor automatisch invullen"</string>
+    <string name="autofill_save_accessibility_title" msgid="1523225776218450005">"Opslaan voor Automatisch invullen"</string>
     <string name="autofill_error_cannot_autofill" msgid="6528827648643138596">"Content kan niet automatisch worden aangevuld"</string>
-    <string name="autofill_picker_no_suggestions" msgid="1076022650427481509">"Geen suggesties van Automatisch aanvullen"</string>
+    <string name="autofill_picker_no_suggestions" msgid="1076022650427481509">"Geen suggesties van Automatisch invullen"</string>
     <plurals name="autofill_picker_some_suggestions" formatted="false" msgid="6651883186966959978">
-      <item quantity="other"><xliff:g id="COUNT">%1$s</xliff:g> suggesties van Automatisch aanvullen</item>
-      <item quantity="one">Eén suggestie van Automatisch aanvullen</item>
+      <item quantity="other"><xliff:g id="COUNT">%1$s</xliff:g> suggesties van Automatisch invullen</item>
+      <item quantity="one">Eén suggestie van Automatisch invullen</item>
     </plurals>
     <string name="autofill_save_title" msgid="7719802414283739775">"Opslaan in "<b>"<xliff:g id="LABEL">%1$s</xliff:g>"</b>"?"</string>
     <string name="autofill_save_title_with_type" msgid="3002460014579799605">"<xliff:g id="TYPE">%1$s</xliff:g> opslaan in "<b>"<xliff:g id="LABEL">%2$s</xliff:g>"</b>"?"</string>
diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml
index 9faa337..2627b53 100644
--- a/core/res/res/values-pa/strings.xml
+++ b/core/res/res/values-pa/strings.xml
@@ -896,7 +896,7 @@
     <string name="keyguard_accessibility_unlock_area_collapsed" msgid="4729922043778400434">"ਅਣਲਾਕ ਖੇਤਰ ਨਸ਼ਟ ਕੀਤਾ।"</string>
     <string name="keyguard_accessibility_widget" msgid="6776892679715699875">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> ਵਿਜੇਟ।"</string>
     <string name="keyguard_accessibility_user_selector" msgid="1466067610235696600">"ਉਪਭੋਗਤਾ ਚੋਣਕਾਰ"</string>
-    <string name="keyguard_accessibility_status" msgid="6792745049712397237">"ਅਵਸਥਾ"</string>
+    <string name="keyguard_accessibility_status" msgid="6792745049712397237">"ਸਥਿਤੀ"</string>
     <string name="keyguard_accessibility_camera" msgid="7862557559464986528">"ਕੈਮਰਾ"</string>
     <string name="keygaurd_accessibility_media_controls" msgid="2267379779900620614">"ਮੀਡੀਆ ਨਿਯੰਤਰਣ"</string>
     <string name="keyguard_accessibility_widget_reorder_start" msgid="7066213328912939191">"ਵਿਜੇਟ ਨੂੰ ਪੁਨਰ ਤਰਤੀਬ ਦੇਣਾ ਸ਼ੁਰੂ ਹੋਇਆ।"</string>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 6d348d0..fa5b001 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -1312,7 +1312,7 @@
     <string name="sms_short_code_confirm_deny" msgid="1356917469323768230">"Отмена"</string>
     <string name="sms_short_code_remember_choice" msgid="1374526438647744862">"Запомнить выбор"</string>
     <string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Это можно изменить позже в разделе настроек \"Приложения\"."</string>
-    <string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Всегда разрешать"</string>
+    <string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Разрешать всегда"</string>
     <string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Не разрешать"</string>
     <string name="sim_removed_title" msgid="5387212933992546283">"SIM-карта удалена"</string>
     <string name="sim_removed_message" msgid="9051174064474904617">"Пока вы не вставите действующую SIM-карту, мобильная сеть будет недоступна."</string>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index d0e5182..651efc4e 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -241,7 +241,7 @@
     <string name="global_action_power_off" msgid="4404936470711393203">"Искључи"</string>
     <string name="global_action_power_options" msgid="1185286119330160073">"Напајање"</string>
     <string name="global_action_restart" msgid="4678451019561687074">"Рестартуј"</string>
-    <string name="global_action_emergency" msgid="1387617624177105088">"Хитни позив"</string>
+    <string name="global_action_emergency" msgid="1387617624177105088">"Хитан позив"</string>
     <string name="global_action_bug_report" msgid="5127867163044170003">"Извештај о грешци"</string>
     <string name="global_action_logout" msgid="6093581310002476511">"Заврши сесију"</string>
     <string name="global_action_screenshot" msgid="2610053466156478564">"Снимак екрана"</string>
@@ -1815,7 +1815,7 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Ажурирао је администратор"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Избрисао је администратор"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"Потврди"</string>
-    <string name="battery_saver_description_with_learn_more" msgid="5997766757551917769">"Да би се продужило трајање батерије, Уштеда батерије:\n\n•укључује тамну тему\n•искључује или ограничава активности у позадини, неке визуелне ефекте и друге функције, на пример, „Ок Google“\n\n"<annotation id="url">"Сазнајте више"</annotation></string>
+    <string name="battery_saver_description_with_learn_more" msgid="5997766757551917769">"Да би се продужило трајање батерије, Уштеда батерије:\n\n•укључује тамну тему\n•искључује или ограничава активности у позадини, неке визуелне ефекте и друге функције, на пример „Ок Google“\n\n"<annotation id="url">"Сазнајте више"</annotation></string>
     <string name="battery_saver_description" msgid="8587408568232177204">"Да би се продужило трајање батерије, Уштеда батерије:\n\n•укључује тамну тему\n•искључује или ограничава активности у позадини, неке визуелне ефекте и друге функције, на пример, „Ок Google“"</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Да би се смањила потрошња података, Уштеда података спречава неке апликације да шаљу или примају податке у позадини. Апликација коју тренутно користите може да приступа подацима, али ће то чинити ређе. На пример, слике се неће приказивати док их не додирнете."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Желите да укључите Уштеду података?"</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 3c5a1e9..206ea8d 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -1829,7 +1829,7 @@
       <item quantity="other">I %d tim</item>
       <item quantity="one">I en 1 tim</item>
     </plurals>
-    <string name="zen_mode_until" msgid="2250286190237669079">"Till kl. <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
+    <string name="zen_mode_until" msgid="2250286190237669079">"Till <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
     <string name="zen_mode_alarm" msgid="7046911727540499275">"Till <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (nästa alarm)"</string>
     <string name="zen_mode_forever" msgid="740585666364912448">"Tills du stänger av"</string>
     <string name="zen_mode_forever_dnd" msgid="3423201955704180067">"Tills du inaktiverar Stör ej"</string>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 7a5cdcf..2476a2d 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -303,7 +303,7 @@
     <string name="permgroupdesc_sms" msgid="5726462398070064542">"itume na iangalie SMS"</string>
     <string name="permgrouplab_storage" msgid="1938416135375282333">"Faili na maudhui"</string>
     <string name="permgroupdesc_storage" msgid="6351503740613026600">"ifikie picha, maudhui na faili kwenye kifaa chako"</string>
-    <string name="permgrouplab_microphone" msgid="2480597427667420076">"Kipokea sauti"</string>
+    <string name="permgrouplab_microphone" msgid="2480597427667420076">"Maikrofoni"</string>
     <string name="permgroupdesc_microphone" msgid="1047786732792487722">"irekodi sauti"</string>
     <string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"Shughuli za kimwili"</string>
     <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"ifikie shughuli zako za kimwili"</string>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index 000ad10..d4e0672 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -2029,7 +2029,7 @@
       <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> และอีก <xliff:g id="COUNT_3">%d</xliff:g> ไฟล์</item>
       <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> และอีก <xliff:g id="COUNT_1">%d</xliff:g> ไฟล์</item>
     </plurals>
-    <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"ไม่มีบุคคลที่แนะนำให้แชร์ด้วย"</string>
+    <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"ไม่พบใครที่แนะนำให้แชร์ด้วย"</string>
     <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"รายชื่อแอป"</string>
     <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"แอปนี้ไม่ได้รับอนุญาตให้บันทึกเสียงแต่จะบันทึกเสียงผ่านอุปกรณ์ USB นี้ได้"</string>
     <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"หน้าแรก"</string>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 2ac900b..09b670b 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -1130,7 +1130,7 @@
     <string name="elapsed_time_short_format_mm_ss" msgid="8689459651807876423">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
     <string name="elapsed_time_short_format_h_mm_ss" msgid="2302144714803345056">"<xliff:g id="HOURS">%1$d</xliff:g>:<xliff:g id="MINUTES">%2$02d</xliff:g>:<xliff:g id="SECONDS">%3$02d</xliff:g>"</string>
     <string name="selectAll" msgid="1532369154488982046">"Вибрати все"</string>
-    <string name="cut" msgid="2561199725874745819">"Виріз."</string>
+    <string name="cut" msgid="2561199725874745819">"Вирізати"</string>
     <string name="copy" msgid="5472512047143665218">"Копіювати"</string>
     <string name="failed_to_copy_to_clipboard" msgid="725919885138539875">"Не вдалося скопіювати в буфер обміну"</string>
     <string name="paste" msgid="461843306215520225">"Вставити"</string>
@@ -1856,7 +1856,7 @@
       <item quantity="other">Протягом %1$d хв (до <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
     </plurals>
     <plurals name="zen_mode_duration_hours_summary" formatted="false" msgid="7725354244196466758">
-      <item quantity="one">%1$d годину (до <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
+      <item quantity="one">%1$d година (до <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="few">%1$d години (до <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="many">%1$d годин (до <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="other">%1$d години (до <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml
index a3a59e3..44c217c 100644
--- a/core/res/res/values-uz/strings.xml
+++ b/core/res/res/values-uz/strings.xml
@@ -1792,8 +1792,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Administrator tomonidan yangilangan"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Administrator tomonidan o‘chirilgan"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <string name="battery_saver_description_with_learn_more" msgid="5997766757551917769">"Batareya quvvatini uzaytirish uchun Quvvat tejash funksiyasi:\n\n•Tungi mavzuni yoqadi\n•Fondagi harakatlar, vizual effektlar va “Hey Google” kabi boshqa funksiyalarni faolsizlantiradi\n\n"<annotation id="url">"Batafsil"</annotation></string>
-    <string name="battery_saver_description" msgid="8587408568232177204">"Batareya quvvatini uzaytirish uchun Quvvat tejash funksiyasi:\n\n•Tungi mavzuni yoqadi\n•Fondagi harakatlar, vizual effektlar va “Hey Google” kabi boshqa funksiyalarni faolsizlantiradi"</string>
+    <string name="battery_saver_description_with_learn_more" msgid="5997766757551917769">"Batareya quvvatini uzaytirish uchun Quvvat tejash funksiyasi:\n\n•Tungi mavzuni yoqadi\n•Fondagi harakatlar, vizual effektlar va “Ok Google” kabi boshqa funksiyalarni faolsizlantiradi\n\n"<annotation id="url">"Batafsil"</annotation></string>
+    <string name="battery_saver_description" msgid="8587408568232177204">"Batareya quvvatini uzaytirish uchun Quvvat tejash funksiyasi:\n\n•Tungi mavzuni yoqadi\n•Fondagi harakatlar, vizual effektlar va “Ok Google” kabi boshqa funksiyalarni faolsizlantiradi"</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Trafik tejash rejimida ayrim ilovalar uchun orqa fonda internetdan foydalanish imkoniyati cheklanadi. Siz ishlatayotgan ilova zaruratga qarab internet-trafik sarflashi mumkin, biroq cheklangan miqdorda. Masalan, rasmlar ustiga bosmaguningizcha ular yuklanmaydi."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Trafik tejash yoqilsinmi?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Yoqish"</string>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 9c99bdd..1a0ec2a 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -536,7 +536,7 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Cho phép ứng dụng này sửa đổi bộ sưu tập ảnh của bạn."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"đọc vị trí từ bộ sưu tập phương tiện"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Cho phép ứng dụng này đọc vị trí từ bộ sưu tập phương tiện của bạn."</string>
-    <string name="biometric_dialog_default_title" msgid="55026799173208210">"Xác minh đó là bạn"</string>
+    <string name="biometric_dialog_default_title" msgid="55026799173208210">"Xác minh danh tính của bạn"</string>
     <string name="biometric_error_hw_unavailable" msgid="2494077380540615216">"Không có phần cứng sinh trắc học"</string>
     <string name="biometric_error_user_canceled" msgid="6732303949695293730">"Đã hủy xác thực"</string>
     <string name="biometric_not_recognized" msgid="5106687642694635888">"Không nhận dạng được"</string>
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index e0b58dd..2b2bf8d 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -1663,6 +1663,21 @@
         -->
     </string-array>
 
+    <!-- Optional IPsec algorithms enabled by this device, defaulting to empty. OEMs can override
+         it by providing a list of algorithm names in an overlay config.xml file.
+
+         As Android releases new versions, more algorithms are becoming mandatory. Mandatory
+         algorithms will be automatically enabled on the device. Optional algorithms need
+         to be explicitly declared in this resource to be enabled.
+             * SDK level 28 makes the following algorithms mandatory : "cbc(aes)", "hmac(md5)",
+               "hmac(sha1)", "hmac(sha256)", "hmac(sha384)", "hmac(sha512)", "rfc4106(gcm(aes))"
+             * SDK level 31 makes the following algorithms mandatory : "rfc3686(ctr(aes))",
+               "xcbc(aes)", "rfc7539esp(chacha20,poly1305)"
+     -->
+    <string-array name="config_optionalIpSecAlgorithms" translatable="false">
+        <!-- Add algorithm here -->
+    </string-array>
+
     <!-- Boolean indicating if current platform supports bluetooth SCO for off call
     use cases -->
     <bool name="config_bluetooth_sco_off_call">true</bool>
@@ -1780,6 +1795,9 @@
          Note: This config is deprecated, please use config_defaultSms instead. -->
     <string name="default_sms_application" translatable="false">com.android.messaging</string>
 
+    <!-- Flag indicating whether the current device supports "Ask every time" for sms-->
+    <bool name="config_sms_ask_every_time_support">true</bool>
+
     <!-- Flag indicating whether the current device allows data.
          If true, this means that the device supports data connectivity through
          the telephony network.
@@ -2089,7 +2107,7 @@
          effectively and terminate the dream.  Use -1 to disable this safety feature.  -->
     <integer name="config_dreamsBatteryLevelDrainCutoff">5</integer>
     <!-- Limit of how long the device can remain unlocked due to attention checking.  -->
-    <integer name="config_attentionMaximumExtension">330000</integer> <!-- 5 minutes and 30 sec.-->
+    <integer name="config_attentionMaximumExtension">900000</integer> <!-- 15 minutes.  -->
 
     <!-- ComponentName of a dream to show whenever the system would otherwise have
          gone to sleep.  When the PowerManager is asked to go to sleep, it will instead
@@ -2774,6 +2792,7 @@
         <item>power</item>
         <item>restart</item>
         <item>logout</item>
+        <item>screenshot</item>
         <item>bugreport</item>
     </string-array>
 
@@ -3488,6 +3507,7 @@
      mode -->
     <string-array translatable="false" name="config_priorityOnlyDndExemptPackages">
         <item>com.android.dialer</item>
+        <item>com.android.server.telecom</item>
         <item>com.android.systemui</item>
         <item>android</item>
     </string-array>
@@ -4369,4 +4389,7 @@
     <bool name="config_pdp_reject_enable_retry">false</bool>
     <!-- pdp data reject retry delay in ms -->
     <integer name="config_pdp_reject_retry_delay_ms">-1</integer>
+
+    <!-- Component names of the services which will keep critical code path warm -->
+    <string-array name="config_keep_warming_services" translatable="false" />
 </resources>
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 51faf20..4b303a3 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -4835,10 +4835,10 @@
     <string name="confirm_battery_saver">OK</string>
 
     <!-- [CHAR_LIMIT=NONE] Battery saver: Feature description, with a "learn more" link. -->
-    <string name="battery_saver_description_with_learn_more">To extend battery life, Battery Saver:\n\n\u2022Turns on Dark theme\n\u2022Turns off or restricts background activity, some visual effects, and other features like \u201cHey Google\u201d\n\n<annotation id="url">Learn more</annotation></string>
+    <string name="battery_saver_description_with_learn_more">To extend battery life, Battery Saver:\n\n\u2022 Turns on Dark theme\n\u2022 Turns off or restricts background activity, some visual effects, and other features like \u201cHey Google\u201d\n\n<annotation id="url">Learn more</annotation></string>
 
     <!-- [CHAR_LIMIT=NONE] Battery saver: Feature description, without a "learn more" link. -->
-    <string name="battery_saver_description">To extend battery life, Battery Saver:\n\n\u2022Turns on Dark theme\n\u2022Turns off or restricts background activity, some visual effects, and other features like \u201cHey Google\u201d</string>
+    <string name="battery_saver_description">To extend battery life, Battery Saver:\n\n\u2022 Turns on Dark theme\n\u2022 Turns off or restricts background activity, some visual effects, and other features like \u201cHey Google\u201d</string>
 
     <!-- [CHAR_LIMIT=NONE] Data saver: Feature description -->
     <string name="data_saver_description">To help reduce data usage, Data Saver prevents some apps from sending or receiving data in the background. An app you’re currently using can access data, but may do so less frequently. This may mean, for example, that images don’t display until you tap them.</string>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index b130b91..c51dca1 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -312,6 +312,7 @@
   <java-symbol type="bool" name="config_networkSamplingWakesDevice" />
   <java-symbol type="bool" name="config_showMenuShortcutsWhenKeyboardPresent" />
   <java-symbol type="bool" name="config_sip_wifi_only" />
+  <java-symbol type="bool" name="config_sms_ask_every_time_support" />
   <java-symbol type="bool" name="config_sms_capable" />
   <java-symbol type="bool" name="config_sms_utf8_support" />
   <java-symbol type="bool" name="config_mobile_data_capable" />
@@ -3185,6 +3186,9 @@
   <!-- Network Recommendation -->
   <java-symbol type="string" name="config_defaultNetworkRecommendationProviderPackage" />
 
+  <!-- Optional IPsec algorithms -->
+  <java-symbol type="array" name="config_optionalIpSecAlgorithms" />
+
   <!-- Whether allow 3rd party apps on internal storage. -->
   <java-symbol type="bool" name="config_allow3rdPartyAppOnInternal" />
 
@@ -4049,4 +4053,6 @@
   <java-symbol type="string" name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" />
 
   <java-symbol type="array" name="config_notificationMsgPkgsAllowedAsConvos" />
+
+  <java-symbol type="array" name="config_keep_warming_services" />
 </resources>
diff --git a/core/res/res/values/themes.xml b/core/res/res/values/themes.xml
index 6e2995d..47a0e7d 100644
--- a/core/res/res/values/themes.xml
+++ b/core/res/res/values/themes.xml
@@ -887,7 +887,7 @@
     </style>
 
     <!-- @hide Special theme for the default system Activity-based Alert dialogs. -->
-    <style name="Theme.Dialog.Confirmation" parent="Theme.DeviceDefault.Light.Dialog.Alert" />
+    <style name="Theme.Dialog.Confirmation" parent="Theme.DeviceDefault.Dialog.Alert.DayNight" />
 
     <!-- Theme for a window that looks like a toast. -->
     <style name="Theme.Toast" parent="Theme.DeviceDefault.Dialog">
diff --git a/core/sysprop/Android.bp b/core/sysprop/Android.bp
index 7f20a0b..237ede2 100644
--- a/core/sysprop/Android.bp
+++ b/core/sysprop/Android.bp
@@ -19,3 +19,11 @@
     api_packages: ["android.sysprop"],
     vendor_available: false,
 }
+
+sysprop_library {
+    name: "com.android.sysprop.watchdog",
+    srcs: ["WatchdogProperties.sysprop"],
+    property_owner: "Platform",
+    api_packages: ["android.sysprop"],
+    vendor_available: false,
+}
diff --git a/core/sysprop/WatchdogProperties.sysprop b/core/sysprop/WatchdogProperties.sysprop
new file mode 100644
index 0000000..1bcc773
--- /dev/null
+++ b/core/sysprop/WatchdogProperties.sysprop
@@ -0,0 +1,45 @@
+# Copyright (C) 2020 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module: "android.sysprop.WatchdogProperties"
+owner: Platform
+
+# To escape the watchdog timeout loop, fatal reboot the system when
+# watchdog timed out 'fatal_count' times in 'fatal_window_second'
+# seconds, if both values are not 0. Default value of both is 0.
+prop {
+    api_name: "fatal_count"
+    type: Integer
+    prop_name: "framework_watchdog.fatal_count"
+    scope: Internal
+    access: Readonly
+}
+
+prop {
+    api_name: "fatal_window_second"
+    type: Integer
+    prop_name: "framework_watchdog.fatal_window.second"
+    scope: Internal
+    access: Readonly
+}
+
+# The fatal counting can be disabled by setting property
+# 'is_fatal_ignore' to true.
+prop {
+    api_name: "is_fatal_ignore"
+    type: Boolean
+    prop_name: "persist.debug.framework_watchdog.fatal_ignore"
+    scope: Internal
+    access: Readonly
+}
diff --git a/core/sysprop/api/com.android.sysprop.localization-current.txt b/core/sysprop/api/com.android.sysprop.localization-current.txt
index fe4f457..e69de29 100644
--- a/core/sysprop/api/com.android.sysprop.localization-current.txt
+++ b/core/sysprop/api/com.android.sysprop.localization-current.txt
@@ -1,9 +0,0 @@
-props {
-  module: "android.sysprop.LocalizationProperties"
-  prop {
-    api_name: "locale_filter"
-    type: String
-    scope: Internal
-    prop_name: "ro.localization.locale_filter"
-  }
-}
diff --git a/core/sysprop/api/com.android.sysprop.watchdog-current.txt b/core/sysprop/api/com.android.sysprop.watchdog-current.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/core/sysprop/api/com.android.sysprop.watchdog-current.txt
diff --git a/core/sysprop/api/com.android.sysprop.watchdog-latest.txt b/core/sysprop/api/com.android.sysprop.watchdog-latest.txt
new file mode 100644
index 0000000..d901aef
--- /dev/null
+++ b/core/sysprop/api/com.android.sysprop.watchdog-latest.txt
@@ -0,0 +1,20 @@
+props {
+  module: "android.sysprop.WatchdogProperties"
+  prop {
+    api_name: "fatal_count"
+    type: Integer
+    scope: Internal
+    prop_name: "framework_watchdog.fatal_count"
+  }
+  prop {
+    api_name: "fatal_window_second"
+    type: Integer
+    scope: Internal
+    prop_name: "framework_watchdog.fatal_window.second"
+  }
+  prop {
+    api_name: "is_fatal_ignore"
+    scope: Internal
+    prop_name: "persist.debug.framework_watchdog.fatal_ignore"
+  }
+}
diff --git a/core/tests/BTtraffic/Android.bp b/core/tests/BTtraffic/Android.bp
deleted file mode 100644
index e508570..0000000
--- a/core/tests/BTtraffic/Android.bp
+++ /dev/null
@@ -1,7 +0,0 @@
-android_app {
-    name: "bttraffic",
-    srcs: ["src/**/*.java"],
-    resource_dirs: ["res"],
-    sdk_version: "current",
-    certificate: "platform",
-}
diff --git a/core/tests/BTtraffic/AndroidManifest.xml b/core/tests/BTtraffic/AndroidManifest.xml
deleted file mode 100644
index 00d9707..0000000
--- a/core/tests/BTtraffic/AndroidManifest.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.google.android.experimental.bttraffic" >
-
-    <uses-permission android:name="android.permission.BLUETOOTH"/>
-    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL"/>
-
-    <uses-sdk
-        android:minSdkVersion="18"
-        android:targetSdkVersion="18"
-        />
-    <application
-        android:allowBackup="false"
-        android:label="@string/app_name" >
-        <service
-            android:name=".BTtraffic"
-            android:enabled="true"
-            android:exported="true" >
-        </service>
-    </application>
-
-</manifest>
diff --git a/core/tests/BTtraffic/README b/core/tests/BTtraffic/README
deleted file mode 100644
index 430488f..0000000
--- a/core/tests/BTtraffic/README
+++ /dev/null
@@ -1,45 +0,0 @@
-This is a tool to generate classic Bluetooth traffic with specified period and package size.
-Together with the SvcMonitor, which will be called automatically in this android service, can be
-used to measure the CPU usage from the Java layer Bluetooth code and the underlying system service
-com.android.bluetooth.
-
-1. Server (Listener) - Client (Sender) model. Both run as an Android service.
-2. No pairing needed. Communicate via unsecured RFcomm. Client establishes the connection by
-providing the MAC addr of the server.
-3. Bluetooth has to be turned on on both side.
-4. Client can configure the traffic by specifying the transfer period and package size.
-5. A separate monitor process will be automatically forked and will be reading from /proc file
-system to calculate the cpu usage. The measurement is updated once per second.
-6. The monitor process (com.google.android.experimental.svcmonitor/.ScvMonitor) can be run as an
-independent service to measure cpu usage on any similarly configured tests (e.g. wifi, BLE). Refer
-to SvcMonitor's README for usage and details.
-
-Usage:
-To instal the test:
-On both the server and client device, install the 2 apk:
-$ adb install $OUT/system/app/bttraffic/bttraffic.apk
-$ adb install $OUT/system/app/svcmonitor/svcmonitor.apk
-
-To start the service on the SERVER side:
-$ adb shell am startservice -a start --ez ack true \
-com.google.android.experimental.bttraffic/.BTtraffic
-
-To start the service on the CLIENT side:
-$ adb shell am startservice -a start \
--e addr "F8:A9:D0:A8:74:8E" --ei size 1000 --ei period 15 \
-com.google.android.experimental.bttraffic/.BTtraffic
-
-To stop the test:
-On either the server or client:
-$ adb shell am startservice -a stop \
-com.google.android.experimental.bttraffic/.BTtraffic
-
-To look at the data:
-$ adb logcat | grep bttraffic
-
-Options:
--e addr: MAC addr of the server, in uppercase letter.
---ei size: package size, unit: byte; default: 1024, MAX: 20MB
---ei period: system sleep time between sending each package, unit: ms, default: 5000
-                  ** if -1 is provided, client will only send the package once.
---ez ack: whether acknowledge is required (true/false)
diff --git a/core/tests/BTtraffic/res/values/strings.xml b/core/tests/BTtraffic/res/values/strings.xml
deleted file mode 100644
index e70276e..0000000
--- a/core/tests/BTtraffic/res/values/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<resources>
-    <string name="app_name">Bluetooth Test</string>
-</resources>
diff --git a/core/tests/BTtraffic/src/com/android/google/experimental/bttraffic/BTtraffic.java b/core/tests/BTtraffic/src/com/android/google/experimental/bttraffic/BTtraffic.java
deleted file mode 100644
index 286c0aa..0000000
--- a/core/tests/BTtraffic/src/com/android/google/experimental/bttraffic/BTtraffic.java
+++ /dev/null
@@ -1,328 +0,0 @@
-package com.google.android.experimental.bttraffic;
-
-import android.app.Service;
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothServerSocket;
-import android.bluetooth.BluetoothSocket;
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.IBinder;
-import android.os.SystemClock;
-import android.util.Log;
-
-import java.io.Closeable;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.lang.Exception;
-import java.lang.Runtime;
-import java.lang.RuntimeException;
-import java.lang.Process;
-import java.nio.ByteBuffer;
-import java.util.Random;
-import java.util.Set;
-import java.util.UUID;
-
-public class BTtraffic extends Service {
-    public static final String TAG = "bttraffic";
-    static final String SERVICE_NAME = "bttraffic";
-    static final String SYS_SERVICE_NAME = "com.android.bluetooth";
-    static final UUID SERVICE_UUID = UUID.fromString("5e8945b0-1234-5432-a5e2-0800200c9a67");
-    volatile Thread mWorkerThread;
-    volatile boolean isShuttingDown = false;
-    volatile boolean isServer = false;
-
-    public BTtraffic() {}
-
-    static void safeClose(Closeable closeable) {
-        try {
-            closeable.close();
-        } catch (IOException e) {
-            Log.d(TAG, "Unable to close resource.\n");
-        }
-    }
-
-    @Override
-    public int onStartCommand(Intent intent, int flags, int startId) {
-        if (intent == null) {
-            stopSelf();
-            return 0;
-        }
-        if ("stop".equals(intent.getAction())) {
-            stopService();
-        } else if ("start".equals(intent.getAction())) {
-            startWorker(intent);
-        } else {
-            Log.d(TAG, "unknown action: + " + intent.getAction());
-        }
-        return 0;
-    }
-
-    private void startWorker(Intent intent) {
-        if (mWorkerThread != null) {
-            Log.d(TAG, "worker thread already active");
-            return;
-        }
-        isShuttingDown = false;
-        String remoteAddr = intent.getStringExtra("addr");
-        Log.d(TAG, "startWorker: addr=" + remoteAddr);
-        Runnable worker =
-                remoteAddr == null
-                        ? new ListenerRunnable(this, intent)
-                        : new SenderRunnable(this, remoteAddr, intent);
-        isServer = remoteAddr == null ? true: false;
-        mWorkerThread = new Thread(worker, "BTtrafficWorker");
-        try {
-            startMonitor();
-            Log.d(TAG, "Monitor service started");
-            mWorkerThread.start();
-            Log.d(TAG, "Worker thread started");
-        } catch (Exception e) {
-            Log.d(TAG, "Failed to start service", e);
-        }
-    }
-
-    private void startMonitor()
-            throws Exception {
-        if (isServer) {
-            Log.d(TAG, "Start monitor on server");
-            String[] startmonitorCmd = {
-                    "/system/bin/am",
-                    "startservice",
-                    "-a", "start",
-                    "-e", "java", SERVICE_NAME,
-                    "-e", "hal", SYS_SERVICE_NAME,
-                    "com.google.android.experimental.svcmonitor/.SvcMonitor"
-            };
-            Process ps = new ProcessBuilder()
-                    .command(startmonitorCmd)
-                    .redirectErrorStream(true)
-                    .start();
-        } else {
-            Log.d(TAG, "No need to start SvcMonitor on client");
-        }
-    }
-
-    private void stopMonitor()
-            throws Exception {
-        if (isServer) {
-            Log.d(TAG, "StopMonitor on server");
-            String[] stopmonitorCmd = {
-                    "/system/bin/am",
-                    "startservice",
-                    "-a", "stop",
-                    "com.google.android.experimental.svcmonitor/.SvcMonitor"
-            };
-            Process ps = new ProcessBuilder()
-                    .command(stopmonitorCmd)
-                    .redirectErrorStream(true)
-                    .start();
-        } else {
-            Log.d(TAG, "No need to stop Svcmonitor on client");
-        }
-    }
-
-    public void stopService() {
-        if (mWorkerThread == null) {
-            Log.d(TAG, "no active thread");
-            return;
-        }
-
-        isShuttingDown = true;
-
-        try {
-            stopMonitor();
-        } catch (Exception e) {
-            Log.d(TAG, "Unable to stop SvcMonitor!", e);
-        }
-
-        if (Thread.currentThread() != mWorkerThread) {
-            mWorkerThread.interrupt();
-            Log.d(TAG, "Interrupting thread");
-            try {
-                mWorkerThread.join();
-            } catch (InterruptedException e) {
-                Log.d(TAG, "Unable to join thread!");
-            }
-        }
-
-        mWorkerThread = null;
-        stopSelf();
-        Log.d(TAG, "Service stopped");
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-    }
-
-    @Override
-    public IBinder onBind(Intent intent) {
-        throw new UnsupportedOperationException("Not yet implemented");
-    }
-
-    public static class ListenerRunnable implements Runnable {
-        private final BTtraffic bttraffic;
-        private final boolean sendAck;
-        private Intent intent;
-        private final int maxbuffersize = 20 * 1024 * 1024;
-
-        public ListenerRunnable(BTtraffic bttraffic, Intent intent) {
-            this.bttraffic = bttraffic;
-            this.sendAck = intent.getBooleanExtra("ack", true);
-            this.intent = intent;
-        }
-
-        @Override
-        public void run() {
-            BluetoothServerSocket serverSocket;
-
-            try {
-                Log.d(TAG, "getting server socket");
-                serverSocket = BluetoothAdapter.getDefaultAdapter()
-                        .listenUsingInsecureRfcommWithServiceRecord(
-                                SERVICE_NAME, SERVICE_UUID);
-            } catch (IOException e) {
-                Log.d(TAG, "error creating server socket, stopping thread");
-                bttraffic.stopService();
-                return;
-            }
-
-            Log.d(TAG, "got server socket, starting accept loop");
-            BluetoothSocket socket = null;
-            try {
-                Log.d(TAG, "accepting");
-                socket = serverSocket.accept();
-
-                if (!Thread.interrupted()) {
-                    Log.d(TAG, "accepted, listening");
-                    doListening(socket.getInputStream(), socket.getOutputStream());
-                    Log.d(TAG, "listen finished");
-                }
-            } catch (IOException e) {
-                Log.d(TAG, "error while accepting or listening", e);
-            } finally {
-                Log.d(TAG, "Linster interruped");
-                Log.d(TAG, "closing socket and stopping service");
-                safeClose(serverSocket);
-                safeClose(socket);
-                if (!bttraffic.isShuttingDown)
-                    bttraffic.stopService();
-            }
-
-        }
-
-        private void doListening(InputStream inputStream, OutputStream outputStream)
-                throws IOException {
-            ByteBuffer byteBuffer = ByteBuffer.allocate(maxbuffersize);
-
-            while (!Thread.interrupted()) {
-                readBytesIntoBuffer(inputStream, byteBuffer, 4);
-                byteBuffer.flip();
-                int length = byteBuffer.getInt();
-                if (Thread.interrupted())
-                    break;
-                readBytesIntoBuffer(inputStream, byteBuffer, length);
-
-                if (sendAck)
-                    outputStream.write(0x55);
-            }
-        }
-
-        void readBytesIntoBuffer(InputStream inputStream, ByteBuffer byteBuffer, int numToRead)
-                throws IOException {
-            byteBuffer.clear();
-            while (true) {
-                int position = byteBuffer.position();
-                int remaining = numToRead - position;
-                if (remaining == 0) {
-                    break;
-                }
-                int count = inputStream.read(byteBuffer.array(), position, remaining);
-                if (count < 0) {
-                    throw new IOException("read the EOF");
-                }
-                byteBuffer.position(position + count);
-            }
-        }
-    }
-
-    public static class SenderRunnable implements Runnable {
-        private final BTtraffic bttraffic;
-        private final String remoteAddr;
-        private final int pkgsize, period;
-        private final int defaultpkgsize = 1024;
-        private final int defaultperiod = 5000;
-        private static ByteBuffer lengthBuffer = ByteBuffer.allocate(4);
-
-        public SenderRunnable(BTtraffic bttraffic, String remoteAddr, Intent intent) {
-            this.bttraffic = bttraffic;
-            this.remoteAddr = remoteAddr;
-            this.pkgsize = intent.getIntExtra("size", defaultpkgsize);
-            this.period = intent.getIntExtra("period", defaultperiod);
-        }
-
-        @Override
-        public void run() {
-            BluetoothDevice device = null;
-            try {
-                device = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(remoteAddr);
-            } catch (IllegalArgumentException e) {
-                Log.d(TAG, "Invalid BT MAC address!\n");
-            }
-            if (device == null) {
-                Log.d(TAG, "can't find matching device, stopping thread and service");
-                bttraffic.stopService();
-                return;
-            }
-
-            BluetoothSocket socket = null;
-            try {
-                Log.d(TAG, "connecting to device with MAC addr: " + remoteAddr);
-                socket = device.createInsecureRfcommSocketToServiceRecord(SERVICE_UUID);
-                socket.connect();
-                Log.d(TAG, "connected, starting to send");
-                doSending(socket.getOutputStream());
-                Log.d(TAG, "send stopped, stopping service");
-            } catch (Exception e) {
-                Log.d(TAG, "error while sending", e);
-            } finally {
-                Log.d(TAG, "finishing, closing thread and service");
-                safeClose(socket);
-                if (!bttraffic.isShuttingDown)
-                    bttraffic.stopService();
-            }
-        }
-
-        private void doSending(OutputStream outputStream) throws IOException {
-            Log.w(TAG, "doSending");
-            try {
-                Random random = new Random(System.currentTimeMillis());
-
-                byte[] bytes = new byte[pkgsize];
-                random.nextBytes(bytes);
-                while (!Thread.interrupted()) {
-                    writeBytes(outputStream, bytes.length);
-                    outputStream.write(bytes, 0, bytes.length);
-                    if (period < 0)
-                        break;
-                    if (period == 0)
-                        continue;
-
-                    SystemClock.sleep(period);
-                }
-                Log.d(TAG, "Sender interrupted");
-            } catch (IOException e) {
-                Log.d(TAG, "doSending got error", e);
-            }
-        }
-
-        private static void writeBytes(OutputStream outputStream, int value) throws IOException {
-            lengthBuffer.putInt(value);
-            lengthBuffer.flip();
-            outputStream.write(lengthBuffer.array(), lengthBuffer.position(), lengthBuffer.limit());
-        }
-    }
-
-}
diff --git a/core/tests/SvcMonitor/Android.bp b/core/tests/SvcMonitor/Android.bp
deleted file mode 100644
index 606e87c..0000000
--- a/core/tests/SvcMonitor/Android.bp
+++ /dev/null
@@ -1,7 +0,0 @@
-android_app {
-    name: "svcmonitor",
-    srcs: ["src/**/*.java"],
-    resource_dirs: ["res"],
-    sdk_version: "current",
-    certificate: "platform",
-}
diff --git a/core/tests/SvcMonitor/AndroidManifest.xml b/core/tests/SvcMonitor/AndroidManifest.xml
deleted file mode 100644
index de5a9bd..0000000
--- a/core/tests/SvcMonitor/AndroidManifest.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.google.android.experimental.svcmonitor" >
-
-    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL"/>
-
-    <uses-sdk
-        android:minSdkVersion="18"
-        android:targetSdkVersion="18"
-        />
-    <application
-        android:allowBackup="false"
-        android:label="@string/app_name" >
-        <service
-            android:name=".SvcMonitor"
-            android:enabled="true"
-            android:exported="true" >
-        </service>
-    </application>
-
-</manifest>
diff --git a/core/tests/SvcMonitor/README b/core/tests/SvcMonitor/README
deleted file mode 100644
index 13a4380..0000000
--- a/core/tests/SvcMonitor/README
+++ /dev/null
@@ -1,27 +0,0 @@
-This Android service measures CPU usage of a program and an underlying system service it relies on.
-An example of this would be an android app XYZ communicates to some other device via Bluetooth. The
-SvcMonitor service can monitor the CPU usage of XYZ and com.android.bluetooth.
-
-Usage:
-
-To start the service:
-$ adb shell am startservice -a start \
--e java XYZ -e hal com.android.bluetooth \
-com.google.android.experimental.svcmonitor/.SvcMonitor
-
-To stop the service:
-$ adb shell am startservice -a stop \
-com.google.android.experimental.svcmonitor/.SvcMonitor
-
-To stop the service config:
-$ adb shell am startservice -a change \
--e java NewName -e hal NewService \
-com.google.android.experimental.svcmonitor/.SvcMonitor
-
-To monitor the data:
-$ adb logcat | grep XYZ
-
-Options:
--e java NameOfProgram: any running process’s name.
--e hal NameOfSysService: name of the system service the previous process relies on.
---ei period: period between each measurement (frequency). Unit: ms, Default:1000, Min: 100
diff --git a/core/tests/SvcMonitor/res/values/strings.xml b/core/tests/SvcMonitor/res/values/strings.xml
deleted file mode 100644
index e70276e..0000000
--- a/core/tests/SvcMonitor/res/values/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<resources>
-    <string name="app_name">Bluetooth Test</string>
-</resources>
diff --git a/core/tests/SvcMonitor/src/com/android/google/experimental/svcmoniter/SvcMonitor.java b/core/tests/SvcMonitor/src/com/android/google/experimental/svcmoniter/SvcMonitor.java
deleted file mode 100644
index a451445..0000000
--- a/core/tests/SvcMonitor/src/com/android/google/experimental/svcmoniter/SvcMonitor.java
+++ /dev/null
@@ -1,209 +0,0 @@
-package com.google.android.experimental.svcmonitor;
-
-import android.app.Service;
-import android.content.Intent;
-import android.os.IBinder;
-import android.os.SystemClock;
-import android.util.Log;
-
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.BufferedReader;
-import java.io.FileInputStream;
-import java.lang.Runnable;
-import java.lang.Thread;
-import java.util.Set;
-
-public class SvcMonitor extends Service {
-    public static final String TAG = "svcmonitor";
-    String javaProc, halProc;
-    volatile Thread tMonitor;
-    int period;
-
-    public SvcMonitor() {};
-
-    @Override
-    public int onStartCommand(Intent intent, int flags, int startId) {
-        if (intent == null) {
-            stopSelf();
-            return 0;
-        }
-        Log.d(TAG, "Starting SvcMonitor");
-        if ("stop".equals(intent.getAction())) {
-            stopService();
-        } else if ("start".equals(intent.getAction())) {
-            startMonitor(intent);
-        } else if ("change".equals(intent.getAction())) {
-            changeConfig(intent);
-        } else {
-            Log.d(TAG, "unknown action: + " + intent.getAction());
-        }
-        return 0;
-    }
-
-    private void changeConfig(Intent intent) {
-        if (tMonitor == null) {
-            Log.d(TAG, "Service not active. Start service first");
-            return;
-        }
-        stopThread();
-        startMonitor(intent);
-    }
-
-    private void startMonitor(Intent intent) {
-        if (tMonitor != null) {
-            Log.d(TAG, "thread already active");
-            return;
-        }
-        javaProc = intent.getStringExtra("java");
-        halProc = intent.getStringExtra("hal");
-        period = intent.getIntExtra("period", 1000);
-        if (javaProc == null || halProc == null || period < 100) {
-            Log.d(TAG, "Failed starting monitor, invalid arguments.");
-            stopSelf();
-            return;
-        }
-        Runnable monitor = new MonitorRunnable(this);
-        tMonitor = new Thread(monitor);
-        tMonitor.start();
-    }
-
-    private void stopService() {
-        stopThread();
-        stopSelf();
-        Log.d(TAG, "SvcMonitor stopped");
-    }
-
-    private void stopThread() {
-        if (tMonitor == null) {
-            Log.d(TAG, "no active thread");
-            return;
-        }
-        Log.d(TAG, "interrupting monitor thread");
-        tMonitor.interrupt();
-        try {
-            tMonitor.join();
-        } catch (InterruptedException e) {
-            Log.d(TAG, "Unable to finish monitor thread");
-        }
-        tMonitor = null;
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-    }
-
-    @Override
-    public IBinder onBind(Intent intent) {
-        throw new UnsupportedOperationException("Not yet implemented");
-    }
-
-    public static class MonitorRunnable implements Runnable {
-        long java_time_old, hal_time_old, cpu_time_old = -1;
-        String javaPID, halPID;
-        SvcMonitor svcmonitor;
-        static String javaProcTAG;
-        int period;
-
-        public MonitorRunnable(SvcMonitor svcmonitor) {
-            this.svcmonitor = svcmonitor;
-            this.period = svcmonitor.period;
-            javaPID = getPIDof(svcmonitor.javaProc);
-            halPID = getPIDof(svcmonitor.halProc);
-            java_time_old = getPsTime(javaPID);
-            hal_time_old = getPsTime(halPID);
-            cpu_time_old = getPsTime("");
-            javaProcTAG = String.valueOf(svcmonitor.javaProc.toCharArray());
-        }
-
-        @Override
-        public void run() {
-            if (halPID.isEmpty() || javaPID.isEmpty()) {
-                Log.d(javaProcTAG, "No such process: " +
-                        (halPID.isEmpty() ? svcmonitor.halProc : svcmonitor.javaProc));
-                return;
-            }
-            while (!Thread.interrupted()) {
-                calculateUsage();
-                SystemClock.sleep(period);
-            }
-            Log.d(TAG, "Stopping monitor thread");
-        }
-
-        private void calculateUsage() {
-            long java_time = getPsTime(javaPID);
-            long hal_time = getPsTime(halPID);
-            long cpu_time = getPsTime("");
-
-            if (cpu_time_old >= 0) {
-                float java_diff = (float) (java_time - java_time_old);
-                float hal_diff = (float) (hal_time - hal_time_old);
-                float cpu_diff = (float) (cpu_time - cpu_time_old);
-                Log.w(javaProcTAG, "\n----------------\n");
-                Log.w(javaProcTAG, "JAVA level CPU: "
-                        + (java_diff * 100.0 / cpu_diff) + "%\n");
-                Log.w(javaProcTAG, " HAL level CPU: "
-                        + (hal_diff * 100.0 / cpu_diff) + "%\n");
-                Log.w(javaProcTAG, " SYS level CPU: "
-                        + ((java_diff + hal_diff) * 100.0 / cpu_diff) + "%\n");
-            } else {
-                Log.w(TAG, "Waiting for status\n");
-            }
-
-            java_time_old = java_time;
-            hal_time_old = hal_time;
-            cpu_time_old = cpu_time;
-        }
-
-        private String getPIDof(String psName) {
-            String pid = "";
-
-            try {
-                String[] cmd = {"/system/bin/sh", "-c", "ps | grep " + psName};
-                Process ps = Runtime.getRuntime().exec(cmd);
-                BufferedReader in = new BufferedReader(
-                        new InputStreamReader(ps.getInputStream()));
-                String temp = in.readLine();
-                if (temp == null || temp.isEmpty())
-                    throw new IOException("No such process: " + psName);
-                pid = temp.split(" +")[1];
-                in.close();
-            } catch (IOException e) {
-                Log.d(javaProcTAG, "Error finding PID of process: " + psName + "\n", e);
-            }
-            return pid;
-        }
-
-        private long getPsTime(String pid) {
-            String psStat = getPsStat("/" + pid);
-            String[] statBreakDown = psStat.split(" +");
-            long psTime;
-
-            if (pid.isEmpty()) {
-                psTime = Long.parseLong(statBreakDown[1])
-                        + Long.parseLong(statBreakDown[2])
-                        + Long.parseLong(statBreakDown[3])
-                        + Long.parseLong(statBreakDown[4]);
-            } else {
-                psTime = Long.parseLong(statBreakDown[13])
-                        + Long.parseLong(statBreakDown[14]);
-            }
-
-            return psTime;
-        }
-
-        private String getPsStat(String psname) {
-            String stat = "";
-            try {
-                FileInputStream fs = new FileInputStream("/proc" + psname + "/stat");
-                BufferedReader br = new BufferedReader(new InputStreamReader(fs));
-                stat = br.readLine();
-                fs.close();
-            } catch (IOException e) {
-                Log.d(TAG, "Error retreiving stat. \n");
-            }
-            return stat;
-        }
-    }
-}
diff --git a/core/tests/bugreports/Android.bp b/core/tests/bugreports/Android.bp
index e9d5bb1..e42b4b4 100644
--- a/core/tests/bugreports/Android.bp
+++ b/core/tests/bugreports/Android.bp
@@ -15,12 +15,22 @@
 android_test {
     name: "BugreportManagerTestCases",
     srcs: ["src/**/*.java"],
+    data: [":bugreport_artifacts"],
     libs: [
         "android.test.runner",
         "android.test.base",
     ],
-    static_libs: ["androidx.test.rules", "truth-prebuilt"],
+    static_libs: [
+        "androidx.test.rules",
+        "androidx.test.uiautomator_uiautomator",
+        "truth-prebuilt",
+    ],
+    test_suites: ["general-tests"],
     sdk_version: "test_current",
     platform_apis: true,
 }
 
+filegroup {
+    name: "bugreport_artifacts",
+    srcs: ["config/test-sysconfig.xml"],
+}
diff --git a/core/tests/bugreports/AndroidTest.xml b/core/tests/bugreports/AndroidTest.xml
index 410ca60..2c2f0d6 100644
--- a/core/tests/bugreports/AndroidTest.xml
+++ b/core/tests/bugreports/AndroidTest.xml
@@ -21,11 +21,16 @@
     <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
     <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
 
-    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
-        <option name="cleanup-apks" value="true"/>
-        <option name="test-file-name" value="BugreportManagerTestCases.apk"/>
+    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" />
+    <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
+        <option name="push-file" key="test-sysconfig.xml" value="/system/etc/sysconfig/allow-br-from-tests.xml" />
+        <option name="push-file" key="BugreportManagerTestCases.apk" value="/system/priv-app/BugreportManagerTestCases.apk" />
+        <option name="abort-on-push-failure" value="true" />
+        <option name="cleanup" value="true" />
+        <option name="remount-system" value="true" />
     </target_preparer>
-
+    <target_preparer class="com.android.tradefed.targetprep.RebootTargetPreparer" />
+
     <test class="com.android.tradefed.testtype.AndroidJUnitTest">
         <option name="package" value="com.android.os.bugreports.tests"/>
         <!-- test-timeout unit is ms, value = 30 min -->
diff --git a/core/tests/bugreports/run.sh b/core/tests/bugreports/run.sh
deleted file mode 100755
index 0103398..0000000
--- a/core/tests/bugreports/run.sh
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/bin/bash
-
-# Copyright (C) 2019 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Script to run bugreport unitests
-# Must run on a rooted device.
-# Must run lunch before running the script
-# Usage: ${ANDROID_BUILD_TOP}/frameworks/base/core/tests/bugreports/run.sh
-
-# NOTE: This script replaces the framework-sysconfig.xml on your device, so use with caution.
-# It tries to replace it when done, but if the script does not finish cleanly
-# (for e.g. force stopped mid-way) your device will be left in an inconsistent state.
-# Reflashing will restore the right config.
-
-TMP_SYS_CONFIG=/var/tmp/framework-sysconfig.xml
-
-if [[ -z $ANDROID_PRODUCT_OUT ]]; then
-  echo "Please lunch before running this test."
-  exit 0
-fi
-
-# Print every command to console.
-set -x
-
-make -j BugreportManagerTestCases &&
-    adb root &&
-    adb remount &&
-    adb wait-for-device &&
-    # Save the sysconfig file in a tmp location and push the test config in
-    adb pull /system/etc/sysconfig/framework-sysconfig.xml "${TMP_SYS_CONFIG}" &&
-    adb push $ANDROID_BUILD_TOP/frameworks/base/core/tests/bugreports/config/test-sysconfig.xml /system/etc/sysconfig/framework-sysconfig.xml &&
-    # The test app needs to be a priv-app.
-    adb push $OUT/testcases/BugreportManagerTestCases/*/BugreportManagerTestCases.apk /system/priv-app ||
-    exit 1
-
-adb reboot &&
-adb wait-for-device &&
-atest BugreportManagerTest || echo "Tests FAILED!"
-
-# Restore the saved config file
-if [ -f "${TMP_SYS_CONFIG}" ]; then
-    SIZE=$(stat --printf="%s" "${TMP_SYS_CONFIG}")
-    if [ SIZE > 0 ]; then
-        adb remount &&
-        adb wait-for-device &&
-        adb push "${TMP_SYS_CONFIG}" /system/etc/sysconfig/framework-sysconfig.xml &&
-        rm "${TMP_SYS_CONFIG}"
-    fi
-fi
diff --git a/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java b/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java
deleted file mode 100644
index 1533377..0000000
--- a/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java
+++ /dev/null
@@ -1,378 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.os.bugreports.tests;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.junit.Assert.fail;
-
-import android.Manifest;
-import android.content.Context;
-import android.os.BugreportManager;
-import android.os.BugreportManager.BugreportCallback;
-import android.os.BugreportParams;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.ParcelFileDescriptor;
-import android.util.Log;
-
-import androidx.test.InstrumentationRegistry;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TestName;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-import java.io.File;
-import java.util.concurrent.Executor;
-import java.util.concurrent.TimeUnit;
-
-
-/**
- * Tests for BugreportManager API.
- */
-@RunWith(JUnit4.class)
-public class BugreportManagerTest {
-    @Rule public TestName name = new TestName();
-
-    private static final String TAG = "BugreportManagerTest";
-    private static final long BUGREPORT_TIMEOUT_MS = TimeUnit.MINUTES.toMillis(10);
-
-    private Handler mHandler;
-    private Executor mExecutor;
-    private BugreportManager mBrm;
-    private File mBugreportFile;
-    private File mScreenshotFile;
-    private ParcelFileDescriptor mBugreportFd;
-    private ParcelFileDescriptor mScreenshotFd;
-
-    @Before
-    public void setup() throws Exception {
-        mHandler = createHandler();
-        mExecutor = (runnable) -> {
-            if (mHandler != null) {
-                mHandler.post(() -> {
-                    runnable.run();
-                });
-            }
-        };
-
-        mBrm = getBugreportManager();
-        mBugreportFile = createTempFile("bugreport_" + name.getMethodName(), ".zip");
-        mScreenshotFile = createTempFile("screenshot_" + name.getMethodName(), ".png");
-        mBugreportFd = parcelFd(mBugreportFile);
-        mScreenshotFd = parcelFd(mScreenshotFile);
-
-        getPermissions();
-    }
-
-    @After
-    public void teardown() throws Exception {
-        dropPermissions();
-    }
-
-
-    @Test
-    public void normalFlow_wifi() throws Exception {
-        BugreportCallbackImpl callback = new BugreportCallbackImpl();
-        // wifi bugreport does not take screenshot
-        mBrm.startBugreport(mBugreportFd, null /*screenshotFd = null*/, wifi(),
-                mExecutor, callback);
-        waitTillDoneOrTimeout(callback);
-
-        assertThat(callback.isDone()).isTrue();
-        // Wifi bugreports should not receive any progress.
-        assertThat(callback.hasReceivedProgress()).isFalse();
-        // TODO: Because of b/130234145, consent dialog is not shown; so we get a timeout error.
-        // When the bug is fixed, accept consent via UIAutomator and verify contents
-        // of mBugreportFd.
-        assertThat(callback.getErrorCode()).isEqualTo(
-                BugreportCallback.BUGREPORT_ERROR_USER_CONSENT_TIMED_OUT);
-        assertFdsAreClosed(mBugreportFd);
-    }
-
-    @Test
-    public void normalFlow_interactive() throws Exception {
-        BugreportCallbackImpl callback = new BugreportCallbackImpl();
-        // interactive bugreport does not take screenshot
-        mBrm.startBugreport(mBugreportFd, null /*screenshotFd = null*/, interactive(),
-                mExecutor, callback);
-
-        waitTillDoneOrTimeout(callback);
-        assertThat(callback.isDone()).isTrue();
-        // Interactive bugreports show progress updates.
-        assertThat(callback.hasReceivedProgress()).isTrue();
-        assertThat(callback.getErrorCode()).isEqualTo(
-                BugreportCallback.BUGREPORT_ERROR_USER_CONSENT_TIMED_OUT);
-        assertFdsAreClosed(mBugreportFd);
-    }
-
-    @Test
-    public void normalFlow_full() throws Exception {
-        BugreportCallbackImpl callback = new BugreportCallbackImpl();
-        mBrm.startBugreport(mBugreportFd, mScreenshotFd, full(), mExecutor, callback);
-
-        waitTillDoneOrTimeout(callback);
-        assertThat(callback.isDone()).isTrue();
-        assertThat(callback.getErrorCode()).isEqualTo(
-                BugreportCallback.BUGREPORT_ERROR_USER_CONSENT_TIMED_OUT);
-        // bugreport and screenshot files should be empty when user consent timed out.
-        assertThat(mBugreportFile.length()).isEqualTo(0);
-        assertThat(mScreenshotFile.length()).isEqualTo(0);
-        assertFdsAreClosed(mBugreportFd, mScreenshotFd);
-    }
-
-    @Test
-    public void simultaneousBugreportsNotAllowed() throws Exception {
-        // Start bugreport #1
-        BugreportCallbackImpl callback = new BugreportCallbackImpl();
-        mBrm.startBugreport(mBugreportFd, mScreenshotFd, wifi(), mExecutor, callback);
-
-        // Before #1 is done, try to start #2.
-        assertThat(callback.isDone()).isFalse();
-        BugreportCallbackImpl callback2 = new BugreportCallbackImpl();
-        File bugreportFile2 = createTempFile("bugreport_2_" + name.getMethodName(), ".zip");
-        File screenshotFile2 = createTempFile("screenshot_2_" + name.getMethodName(), ".png");
-        ParcelFileDescriptor bugreportFd2 = parcelFd(bugreportFile2);
-        ParcelFileDescriptor screenshotFd2 = parcelFd(screenshotFile2);
-        mBrm.startBugreport(bugreportFd2, screenshotFd2, wifi(), mExecutor, callback2);
-        Thread.sleep(500 /* .5s */);
-
-        // Verify #2 encounters an error.
-        assertThat(callback2.getErrorCode()).isEqualTo(
-                BugreportCallback.BUGREPORT_ERROR_ANOTHER_REPORT_IN_PROGRESS);
-        assertFdsAreClosed(bugreportFd2, screenshotFd2);
-
-        // Cancel #1 so we can move on to the next test.
-        mBrm.cancelBugreport();
-        Thread.sleep(500 /* .5s */);
-        assertThat(callback.isDone()).isTrue();
-        assertFdsAreClosed(mBugreportFd, mScreenshotFd);
-    }
-
-    @Test
-    public void cancelBugreport() throws Exception {
-        // Start a bugreport.
-        BugreportCallbackImpl callback = new BugreportCallbackImpl();
-        mBrm.startBugreport(mBugreportFd, mScreenshotFd, wifi(), mExecutor, callback);
-
-        // Verify it's not finished yet.
-        assertThat(callback.isDone()).isFalse();
-
-        // Try to cancel it, but first without DUMP permission.
-        dropPermissions();
-        try {
-            mBrm.cancelBugreport();
-            fail("Expected cancelBugreport to throw SecurityException without DUMP permission");
-        } catch (SecurityException expected) {
-        }
-        assertThat(callback.isDone()).isFalse();
-
-        // Try again, with DUMP permission.
-        getPermissions();
-        mBrm.cancelBugreport();
-        Thread.sleep(500 /* .5s */);
-        assertThat(callback.isDone()).isTrue();
-        assertFdsAreClosed(mBugreportFd, mScreenshotFd);
-    }
-
-    @Test
-    public void insufficientPermissions_throwsException() throws Exception {
-        dropPermissions();
-
-        BugreportCallbackImpl callback = new BugreportCallbackImpl();
-        try {
-            mBrm.startBugreport(mBugreportFd, mScreenshotFd, wifi(), mExecutor, callback);
-            fail("Expected startBugreport to throw SecurityException without DUMP permission");
-        } catch (SecurityException expected) {
-        }
-        assertFdsAreClosed(mBugreportFd, mScreenshotFd);
-    }
-
-    @Test
-    public void invalidBugreportMode_throwsException() throws Exception {
-        BugreportCallbackImpl callback = new BugreportCallbackImpl();
-
-        try {
-            mBrm.startBugreport(mBugreportFd, mScreenshotFd,
-                    new BugreportParams(25) /* unknown bugreport mode */, mExecutor, callback);
-            fail("Expected to throw IllegalArgumentException with unknown bugreport mode");
-        } catch (IllegalArgumentException expected) {
-        }
-        assertFdsAreClosed(mBugreportFd, mScreenshotFd);
-    }
-
-    private Handler createHandler() {
-        HandlerThread handlerThread = new HandlerThread("BugreportManagerTest");
-        handlerThread.start();
-        return new Handler(handlerThread.getLooper());
-    }
-
-    /* Implementatiion of {@link BugreportCallback} that offers wrappers around execution result */
-    private static final class BugreportCallbackImpl extends BugreportCallback {
-        private int mErrorCode = -1;
-        private boolean mSuccess = false;
-        private boolean mReceivedProgress = false;
-        private final Object mLock = new Object();
-
-        @Override
-        public void onProgress(float progress) {
-            synchronized (mLock) {
-                mReceivedProgress = true;
-            }
-        }
-
-        @Override
-        public void onError(int errorCode) {
-            synchronized (mLock) {
-                mErrorCode = errorCode;
-                Log.d(TAG, "bugreport errored.");
-            }
-        }
-
-        @Override
-        public void onFinished() {
-            synchronized (mLock) {
-                Log.d(TAG, "bugreport finished.");
-                mSuccess =  true;
-            }
-        }
-
-        /* Indicates completion; and ended up with a success or error. */
-        public boolean isDone() {
-            synchronized (mLock) {
-                return (mErrorCode != -1) || mSuccess;
-            }
-        }
-
-        public int getErrorCode() {
-            synchronized (mLock) {
-                return mErrorCode;
-            }
-        }
-
-        public boolean isSuccess() {
-            synchronized (mLock) {
-                return mSuccess;
-            }
-        }
-
-        public boolean hasReceivedProgress() {
-            synchronized (mLock) {
-                return mReceivedProgress;
-            }
-        }
-    }
-
-    public static BugreportManager getBugreportManager() {
-        Context context = InstrumentationRegistry.getContext();
-        BugreportManager bm =
-                (BugreportManager) context.getSystemService(Context.BUGREPORT_SERVICE);
-        if (bm == null) {
-            throw new AssertionError("Failed to get BugreportManager");
-        }
-        return bm;
-    }
-
-    private static File createTempFile(String prefix, String extension) throws Exception {
-        final File f = File.createTempFile(prefix, extension);
-        f.setReadable(true, true);
-        f.setWritable(true, true);
-        f.deleteOnExit();
-        return f;
-    }
-
-    private static ParcelFileDescriptor parcelFd(File file) throws Exception {
-        return ParcelFileDescriptor.open(file,
-                ParcelFileDescriptor.MODE_WRITE_ONLY | ParcelFileDescriptor.MODE_APPEND);
-    }
-
-    private static void dropPermissions() {
-        InstrumentationRegistry.getInstrumentation().getUiAutomation()
-                .dropShellPermissionIdentity();
-    }
-
-    private static void getPermissions() {
-        InstrumentationRegistry.getInstrumentation().getUiAutomation()
-                .adoptShellPermissionIdentity(Manifest.permission.DUMP);
-    }
-
-    private static void assertFdIsClosed(ParcelFileDescriptor pfd) {
-        try {
-            int fd = pfd.getFd();
-            fail("Expected ParcelFileDescriptor argument to be closed, but got: " + fd);
-        } catch (IllegalStateException expected) {
-        }
-    }
-
-    private static void assertFdsAreClosed(ParcelFileDescriptor... pfds) {
-        for (int i = 0; i <  pfds.length; i++) {
-            assertFdIsClosed(pfds[i]);
-        }
-    }
-
-    private static long now() {
-        return System.currentTimeMillis();
-    }
-
-    private static boolean shouldTimeout(long startTimeMs) {
-        return now() - startTimeMs >= BUGREPORT_TIMEOUT_MS;
-    }
-
-    private static void waitTillDoneOrTimeout(BugreportCallbackImpl callback) throws Exception {
-        long startTimeMs = now();
-        while (!callback.isDone()) {
-            Thread.sleep(1000 /* 1s */);
-            if (shouldTimeout(startTimeMs)) {
-                break;
-            }
-            Log.d(TAG, "Waited " + (now() - startTimeMs) + "ms");
-        }
-    }
-
-    /*
-     * Returns a {@link BugreportParams} for wifi only bugreport.
-     *
-     * <p>Wifi bugreports have minimal content and are fast to run. They also suppress progress
-     * updates.
-     */
-    private static BugreportParams wifi() {
-        return new BugreportParams(BugreportParams.BUGREPORT_MODE_WIFI);
-    }
-
-    /*
-     * Returns a {@link BugreportParams} for interactive bugreport that offers progress updates.
-     *
-     * <p>This is the typical bugreport taken by users. This can take on the order of minutes to
-     * finish.
-     */
-    private static BugreportParams interactive() {
-        return new BugreportParams(BugreportParams.BUGREPORT_MODE_INTERACTIVE);
-    }
-
-    /*
-     * Returns a {@link BugreportParams} for full bugreport that includes a screenshot.
-     *
-     * <p> This can take on the order of minutes to finish
-     */
-    private static BugreportParams full() {
-        return new BugreportParams(BugreportParams.BUGREPORT_MODE_FULL);
-    }
-}
diff --git a/core/tests/bugreports/src/com/android/os/bugreports/tests/BugreportManagerTest.java b/core/tests/bugreports/src/com/android/os/bugreports/tests/BugreportManagerTest.java
new file mode 100644
index 0000000..9246a23
--- /dev/null
+++ b/core/tests/bugreports/src/com/android/os/bugreports/tests/BugreportManagerTest.java
@@ -0,0 +1,478 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.os.bugreports.tests;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import android.Manifest;
+import android.content.Context;
+import android.os.BugreportManager;
+import android.os.BugreportManager.BugreportCallback;
+import android.os.BugreportParams;
+import android.os.FileUtils;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.ParcelFileDescriptor;
+import android.os.StrictMode;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.LargeTest;
+import androidx.test.uiautomator.By;
+import androidx.test.uiautomator.BySelector;
+import androidx.test.uiautomator.UiDevice;
+import androidx.test.uiautomator.UiObject2;
+import androidx.test.uiautomator.Until;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExternalResource;
+import org.junit.rules.TestName;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import java.io.File;
+import java.util.concurrent.Executor;
+import java.util.concurrent.TimeUnit;
+
+
+/**
+ * Tests for BugreportManager API.
+ */
+@RunWith(JUnit4.class)
+public class BugreportManagerTest {
+    @Rule public TestName name = new TestName();
+    @Rule public ExtendedStrictModeVmPolicy mTemporaryVmPolicy = new ExtendedStrictModeVmPolicy();
+
+    private static final String TAG = "BugreportManagerTest";
+    private static final long BUGREPORT_TIMEOUT_MS = TimeUnit.MINUTES.toMillis(10);
+    private static final long UIAUTOMATOR_TIMEOUT_MS = TimeUnit.SECONDS.toMillis(10);
+
+    private Handler mHandler;
+    private Executor mExecutor;
+    private BugreportManager mBrm;
+    private File mBugreportFile;
+    private File mScreenshotFile;
+    private ParcelFileDescriptor mBugreportFd;
+    private ParcelFileDescriptor mScreenshotFd;
+
+    @Before
+    public void setup() throws Exception {
+        mHandler = createHandler();
+        mExecutor = (runnable) -> {
+            if (mHandler != null) {
+                mHandler.post(() -> {
+                    runnable.run();
+                });
+            }
+        };
+
+        mBrm = getBugreportManager();
+        mBugreportFile = createTempFile("bugreport_" + name.getMethodName(), ".zip");
+        mScreenshotFile = createTempFile("screenshot_" + name.getMethodName(), ".png");
+        mBugreportFd = parcelFd(mBugreportFile);
+        mScreenshotFd = parcelFd(mScreenshotFile);
+
+        getPermissions();
+    }
+
+    @After
+    public void teardown() throws Exception {
+        dropPermissions();
+        FileUtils.closeQuietly(mBugreportFd);
+        FileUtils.closeQuietly(mScreenshotFd);
+    }
+
+
+    @Test
+    public void normalFlow_wifi() throws Exception {
+        BugreportCallbackImpl callback = new BugreportCallbackImpl();
+        // wifi bugreport does not take screenshot
+        mBrm.startBugreport(mBugreportFd, null /*screenshotFd = null*/, wifi(),
+                mExecutor, callback);
+        shareConsentDialog(ConsentReply.ALLOW);
+        waitTillDoneOrTimeout(callback);
+
+        assertThat(callback.isDone()).isTrue();
+        // Wifi bugreports should not receive any progress.
+        assertThat(callback.hasReceivedProgress()).isFalse();
+        assertThat(mBugreportFile.length()).isGreaterThan(0L);
+        assertFdsAreClosed(mBugreportFd);
+    }
+
+    @LargeTest
+    @Test
+    public void normalFlow_interactive() throws Exception {
+        BugreportCallbackImpl callback = new BugreportCallbackImpl();
+        // interactive bugreport does not take screenshot
+        mBrm.startBugreport(mBugreportFd, null /*screenshotFd = null*/, interactive(),
+                mExecutor, callback);
+        shareConsentDialog(ConsentReply.ALLOW);
+        waitTillDoneOrTimeout(callback);
+
+        assertThat(callback.isDone()).isTrue();
+        // Interactive bugreports show progress updates.
+        assertThat(callback.hasReceivedProgress()).isTrue();
+        assertThat(mBugreportFile.length()).isGreaterThan(0L);
+        assertFdsAreClosed(mBugreportFd);
+    }
+
+    @LargeTest
+    @Test
+    public void normalFlow_full() throws Exception {
+        BugreportCallbackImpl callback = new BugreportCallbackImpl();
+        mBrm.startBugreport(mBugreportFd, mScreenshotFd, full(), mExecutor, callback);
+        shareConsentDialog(ConsentReply.ALLOW);
+        waitTillDoneOrTimeout(callback);
+
+        assertThat(callback.isDone()).isTrue();
+        // bugreport and screenshot files shouldn't be empty when user consents.
+        assertThat(mBugreportFile.length()).isGreaterThan(0L);
+        assertThat(mScreenshotFile.length()).isGreaterThan(0L);
+        assertFdsAreClosed(mBugreportFd, mScreenshotFd);
+    }
+
+    @Test
+    public void simultaneousBugreportsNotAllowed() throws Exception {
+        // Start bugreport #1
+        BugreportCallbackImpl callback = new BugreportCallbackImpl();
+        mBrm.startBugreport(mBugreportFd, mScreenshotFd, wifi(), mExecutor, callback);
+        // TODO(b/162389762) Make sure the wait time is reasonable
+        shareConsentDialog(ConsentReply.ALLOW);
+
+        // Before #1 is done, try to start #2.
+        assertThat(callback.isDone()).isFalse();
+        BugreportCallbackImpl callback2 = new BugreportCallbackImpl();
+        File bugreportFile2 = createTempFile("bugreport_2_" + name.getMethodName(), ".zip");
+        File screenshotFile2 = createTempFile("screenshot_2_" + name.getMethodName(), ".png");
+        ParcelFileDescriptor bugreportFd2 = parcelFd(bugreportFile2);
+        ParcelFileDescriptor screenshotFd2 = parcelFd(screenshotFile2);
+        mBrm.startBugreport(bugreportFd2, screenshotFd2, wifi(), mExecutor, callback2);
+        Thread.sleep(500 /* .5s */);
+
+        // Verify #2 encounters an error.
+        assertThat(callback2.getErrorCode()).isEqualTo(
+                BugreportCallback.BUGREPORT_ERROR_ANOTHER_REPORT_IN_PROGRESS);
+        assertFdsAreClosed(bugreportFd2, screenshotFd2);
+
+        // Cancel #1 so we can move on to the next test.
+        mBrm.cancelBugreport();
+        Thread.sleep(500 /* .5s */);
+        assertThat(callback.isDone()).isTrue();
+        assertFdsAreClosed(mBugreportFd, mScreenshotFd);
+    }
+
+    @Test
+    public void cancelBugreport() throws Exception {
+        // Start a bugreport.
+        BugreportCallbackImpl callback = new BugreportCallbackImpl();
+        mBrm.startBugreport(mBugreportFd, mScreenshotFd, wifi(), mExecutor, callback);
+
+        // Verify it's not finished yet.
+        assertThat(callback.isDone()).isFalse();
+
+        // Try to cancel it, but first without DUMP permission.
+        dropPermissions();
+        try {
+            mBrm.cancelBugreport();
+            fail("Expected cancelBugreport to throw SecurityException without DUMP permission");
+        } catch (SecurityException expected) {
+        }
+        assertThat(callback.isDone()).isFalse();
+
+        // Try again, with DUMP permission.
+        getPermissions();
+        mBrm.cancelBugreport();
+        Thread.sleep(500 /* .5s */);
+        assertThat(callback.isDone()).isTrue();
+        assertFdsAreClosed(mBugreportFd, mScreenshotFd);
+    }
+
+    @Test
+    public void insufficientPermissions_throwsException() throws Exception {
+        dropPermissions();
+
+        BugreportCallbackImpl callback = new BugreportCallbackImpl();
+        try {
+            mBrm.startBugreport(mBugreportFd, mScreenshotFd, wifi(), mExecutor, callback);
+            fail("Expected startBugreport to throw SecurityException without DUMP permission");
+        } catch (SecurityException expected) {
+        }
+        assertFdsAreClosed(mBugreportFd, mScreenshotFd);
+    }
+
+    @Test
+    public void invalidBugreportMode_throwsException() throws Exception {
+        BugreportCallbackImpl callback = new BugreportCallbackImpl();
+
+        try {
+            mBrm.startBugreport(mBugreportFd, mScreenshotFd,
+                    new BugreportParams(25) /* unknown bugreport mode */, mExecutor, callback);
+            fail("Expected to throw IllegalArgumentException with unknown bugreport mode");
+        } catch (IllegalArgumentException expected) {
+        }
+        assertFdsAreClosed(mBugreportFd, mScreenshotFd);
+    }
+
+    private Handler createHandler() {
+        HandlerThread handlerThread = new HandlerThread("BugreportManagerTest");
+        handlerThread.start();
+        return new Handler(handlerThread.getLooper());
+    }
+
+    /* Implementatiion of {@link BugreportCallback} that offers wrappers around execution result */
+    private static final class BugreportCallbackImpl extends BugreportCallback {
+        private int mErrorCode = -1;
+        private boolean mSuccess = false;
+        private boolean mReceivedProgress = false;
+        private final Object mLock = new Object();
+
+        @Override
+        public void onProgress(float progress) {
+            synchronized (mLock) {
+                mReceivedProgress = true;
+            }
+        }
+
+        @Override
+        public void onError(int errorCode) {
+            synchronized (mLock) {
+                mErrorCode = errorCode;
+                Log.d(TAG, "bugreport errored.");
+            }
+        }
+
+        @Override
+        public void onFinished() {
+            synchronized (mLock) {
+                Log.d(TAG, "bugreport finished.");
+                mSuccess =  true;
+            }
+        }
+
+        /* Indicates completion; and ended up with a success or error. */
+        public boolean isDone() {
+            synchronized (mLock) {
+                return (mErrorCode != -1) || mSuccess;
+            }
+        }
+
+        public int getErrorCode() {
+            synchronized (mLock) {
+                return mErrorCode;
+            }
+        }
+
+        public boolean isSuccess() {
+            synchronized (mLock) {
+                return mSuccess;
+            }
+        }
+
+        public boolean hasReceivedProgress() {
+            synchronized (mLock) {
+                return mReceivedProgress;
+            }
+        }
+    }
+
+    public static BugreportManager getBugreportManager() {
+        Context context = InstrumentationRegistry.getContext();
+        BugreportManager bm =
+                (BugreportManager) context.getSystemService(Context.BUGREPORT_SERVICE);
+        if (bm == null) {
+            throw new AssertionError("Failed to get BugreportManager");
+        }
+        return bm;
+    }
+
+    private static File createTempFile(String prefix, String extension) throws Exception {
+        final File f = File.createTempFile(prefix, extension);
+        f.setReadable(true, true);
+        f.setWritable(true, true);
+        f.deleteOnExit();
+        return f;
+    }
+
+    private static ParcelFileDescriptor parcelFd(File file) throws Exception {
+        return ParcelFileDescriptor.open(file,
+                ParcelFileDescriptor.MODE_WRITE_ONLY | ParcelFileDescriptor.MODE_APPEND);
+    }
+
+    private static void dropPermissions() {
+        InstrumentationRegistry.getInstrumentation().getUiAutomation()
+                .dropShellPermissionIdentity();
+    }
+
+    private static void getPermissions() {
+        InstrumentationRegistry.getInstrumentation().getUiAutomation()
+                .adoptShellPermissionIdentity(Manifest.permission.DUMP);
+    }
+
+    private static void assertFdIsClosed(ParcelFileDescriptor pfd) {
+        try {
+            int fd = pfd.getFd();
+            fail("Expected ParcelFileDescriptor argument to be closed, but got: " + fd);
+        } catch (IllegalStateException expected) {
+        }
+    }
+
+    private static void assertFdsAreClosed(ParcelFileDescriptor... pfds) {
+        for (int i = 0; i <  pfds.length; i++) {
+            assertFdIsClosed(pfds[i]);
+        }
+    }
+
+    private static long now() {
+        return System.currentTimeMillis();
+    }
+
+    private static boolean shouldTimeout(long startTimeMs) {
+        return now() - startTimeMs >= BUGREPORT_TIMEOUT_MS;
+    }
+
+    private static void waitTillDoneOrTimeout(BugreportCallbackImpl callback) throws Exception {
+        long startTimeMs = now();
+        while (!callback.isDone()) {
+            Thread.sleep(1000 /* 1s */);
+            if (shouldTimeout(startTimeMs)) {
+                break;
+            }
+            Log.d(TAG, "Waited " + (now() - startTimeMs) + "ms");
+        }
+    }
+
+    /*
+     * Returns a {@link BugreportParams} for wifi only bugreport.
+     *
+     * <p>Wifi bugreports have minimal content and are fast to run. They also suppress progress
+     * updates.
+     */
+    private static BugreportParams wifi() {
+        return new BugreportParams(BugreportParams.BUGREPORT_MODE_WIFI);
+    }
+
+    /*
+     * Returns a {@link BugreportParams} for interactive bugreport that offers progress updates.
+     *
+     * <p>This is the typical bugreport taken by users. This can take on the order of minutes to
+     * finish.
+     */
+    private static BugreportParams interactive() {
+        return new BugreportParams(BugreportParams.BUGREPORT_MODE_INTERACTIVE);
+    }
+
+    /*
+     * Returns a {@link BugreportParams} for full bugreport that includes a screenshot.
+     *
+     * <p> This can take on the order of minutes to finish
+     */
+    private static BugreportParams full() {
+        return new BugreportParams(BugreportParams.BUGREPORT_MODE_FULL);
+    }
+
+    /* Allow/deny the consent dialog to sharing bugreport data or check existence only. */
+    private enum ConsentReply {
+        ALLOW,
+        DENY,
+        TIMEOUT
+    }
+
+    /*
+     * Ensure the consent dialog is shown and take action according to <code>consentReply<code/>.
+     * It will fail if the dialog is not shown when <code>ignoreNotFound<code/> is false.
+     */
+    private void shareConsentDialog(@NonNull ConsentReply consentReply) throws Exception {
+        mTemporaryVmPolicy.permitIncorrectContextUse();
+        final UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
+
+        // Unlock before finding/clicking an object.
+        device.wakeUp();
+        device.executeShellCommand("wm dismiss-keyguard");
+
+        final BySelector consentTitleObj = By.res("android", "alertTitle");
+        if (!device.wait(Until.hasObject(consentTitleObj), UIAUTOMATOR_TIMEOUT_MS)) {
+            fail("The consent dialog is not found");
+        }
+        if (consentReply.equals(ConsentReply.TIMEOUT)) {
+            return;
+        }
+        final BySelector selector;
+        if (consentReply.equals(ConsentReply.ALLOW)) {
+            selector = By.res("android", "button1");
+            Log.d(TAG, "Allow the consent dialog");
+        } else { // ConsentReply.DENY
+            selector = By.res("android", "button2");
+            Log.d(TAG, "Deny the consent dialog");
+        }
+        final UiObject2 btnObj = device.findObject(selector);
+        assertNotNull("The button of consent dialog is not found", btnObj);
+        btnObj.click();
+
+        Log.d(TAG, "Wait for the dialog to be dismissed");
+        assertTrue(device.wait(Until.gone(consentTitleObj), UIAUTOMATOR_TIMEOUT_MS));
+    }
+
+    /**
+     * A rule to change strict mode vm policy temporarily till test method finished.
+     *
+     * To permit the non-visual context usage in tests while taking bugreports need user consent,
+     * or UiAutomator/BugreportManager.DumpstateListener would run into error.
+     * UiDevice#findObject creates UiObject2, its Gesture object and ViewConfiguration and
+     * UiObject2#click need to know bounds. Both of them access to WindowManager internally without
+     * visual context comes from InstrumentationRegistry and violate the policy.
+     * Also <code>DumpstateListener<code/> violate the policy when onScreenshotTaken is called.
+     *
+     * TODO(b/161201609) Remove this class once violations fixed.
+     */
+    static class ExtendedStrictModeVmPolicy extends ExternalResource {
+        private boolean mWasVmPolicyChanged = false;
+        private StrictMode.VmPolicy mOldVmPolicy;
+
+        @Override
+        protected void after() {
+            restoreVmPolicyIfNeeded();
+        }
+
+        public void permitIncorrectContextUse() {
+            // Allow to call multiple times without losing old policy.
+            if (mOldVmPolicy == null) {
+                mOldVmPolicy = StrictMode.getVmPolicy();
+            }
+            StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
+                    .detectAll()
+                    .permitIncorrectContextUse()
+                    .penaltyLog()
+                    .build());
+            mWasVmPolicyChanged = true;
+        }
+
+        private void restoreVmPolicyIfNeeded() {
+            if (mWasVmPolicyChanged && mOldVmPolicy != null) {
+                StrictMode.setVmPolicy(mOldVmPolicy);
+                mOldVmPolicy = null;
+            }
+        }
+    }
+}
diff --git a/core/tests/coretests/src/android/app/NotificationHistoryTest.java b/core/tests/coretests/src/android/app/NotificationHistoryTest.java
index c951091..20ac831 100644
--- a/core/tests/coretests/src/android/app/NotificationHistoryTest.java
+++ b/core/tests/coretests/src/android/app/NotificationHistoryTest.java
@@ -117,8 +117,8 @@
         history.addNotificationToWrite(n);
 
         assertThat(history.getNotificationsToWrite().size()).isEqualTo(2);
-        assertThat(history.getNotificationsToWrite().get(0)).isSameAs(n2);
-        assertThat(history.getNotificationsToWrite().get(1)).isSameAs(n);
+        assertThat(history.getNotificationsToWrite().get(0)).isSameInstanceAs(n2);
+        assertThat(history.getNotificationsToWrite().get(1)).isSameInstanceAs(n);
         assertThat(history.getHistoryCount()).isEqualTo(2);
     }
 
@@ -141,11 +141,11 @@
         history.addNotificationsToWrite(secondHistory);
 
         assertThat(history.getNotificationsToWrite().size()).isEqualTo(5);
-        assertThat(history.getNotificationsToWrite().get(0)).isSameAs(n3);
-        assertThat(history.getNotificationsToWrite().get(1)).isSameAs(n);
-        assertThat(history.getNotificationsToWrite().get(2)).isSameAs(n4);
-        assertThat(history.getNotificationsToWrite().get(3)).isSameAs(n2);
-        assertThat(history.getNotificationsToWrite().get(4)).isSameAs(n5);
+        assertThat(history.getNotificationsToWrite().get(0)).isSameInstanceAs(n3);
+        assertThat(history.getNotificationsToWrite().get(1)).isSameInstanceAs(n);
+        assertThat(history.getNotificationsToWrite().get(2)).isSameInstanceAs(n4);
+        assertThat(history.getNotificationsToWrite().get(3)).isSameInstanceAs(n2);
+        assertThat(history.getNotificationsToWrite().get(4)).isSameInstanceAs(n5);
         assertThat(history.getHistoryCount()).isEqualTo(5);
 
         assertThat(history.getPooledStringsToWrite()).asList().contains(n2.getChannelName());
diff --git a/core/tests/coretests/src/android/content/integrity/CompoundFormulaTest.java b/core/tests/coretests/src/android/content/integrity/CompoundFormulaTest.java
index ba060fa..593e70e 100644
--- a/core/tests/coretests/src/android/content/integrity/CompoundFormulaTest.java
+++ b/core/tests/coretests/src/android/content/integrity/CompoundFormulaTest.java
@@ -45,7 +45,8 @@
                         CompoundFormula.AND, Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2));
 
         assertThat(compoundFormula.getConnector()).isEqualTo(CompoundFormula.AND);
-        assertThat(compoundFormula.getFormulas()).containsAllOf(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2);
+        assertThat(compoundFormula.getFormulas())
+                .containsAtLeast(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2);
     }
 
     @Test
diff --git a/core/tests/coretests/src/android/content/pm/parsing/result/ParseInputAndResultTest.kt b/core/tests/coretests/src/android/content/pm/parsing/result/ParseInputAndResultTest.kt
index d45fee9..9ad63ad 100644
--- a/core/tests/coretests/src/android/content/pm/parsing/result/ParseInputAndResultTest.kt
+++ b/core/tests/coretests/src/android/content/pm/parsing/result/ParseInputAndResultTest.kt
@@ -113,7 +113,7 @@
         assertError(result)
         assertThat(result.errorCode).isEqualTo(errorCode)
         assertThat(result.errorMessage).isEqualTo(errorMessage)
-        assertThat(result.exception).isSameAs(exception)
+        assertThat(result.exception).isSameInstanceAs(exception)
     }
 
     @Test
@@ -125,13 +125,13 @@
         assertError(result)
         assertThat(result.errorCode).isEqualTo(errorCode)
         assertThat(result.errorMessage).isEqualTo(errorMessage)
-        assertThat(result.exception).isSameAs(exception)
+        assertThat(result.exception).isSameInstanceAs(exception)
 
         val carriedResult = input.error<Int>(result)
         assertError(carriedResult)
         assertThat(carriedResult.errorCode).isEqualTo(errorCode)
         assertThat(carriedResult.errorMessage).isEqualTo(errorMessage)
-        assertThat(carriedResult.exception).isSameAs(exception)
+        assertThat(carriedResult.exception).isSameInstanceAs(exception)
     }
 
     @Test
@@ -259,7 +259,7 @@
     private fun assertSuccess(expected: Any? = null, result: ParseResult<*>) {
         assertThat(result.isError).isFalse()
         assertThat(result.isSuccess).isTrue()
-        assertThat(result.result).isSameAs(expected)
+        assertThat(result.result).isSameInstanceAs(expected)
         assertThat(result.errorCode).isEqualTo(PackageManager.INSTALL_SUCCEEDED)
         assertThat(result.errorMessage).isNull()
         assertThat(result.exception).isNull()
diff --git a/core/tests/coretests/src/android/os/FileBridgeTest.java b/core/tests/coretests/src/android/os/FileBridgeTest.java
index d4f6b1f..708bfa6 100644
--- a/core/tests/coretests/src/android/os/FileBridgeTest.java
+++ b/core/tests/coretests/src/android/os/FileBridgeTest.java
@@ -16,6 +16,9 @@
 
 package android.os;
 
+import static android.os.ParcelFileDescriptor.MODE_CREATE;
+import static android.os.ParcelFileDescriptor.MODE_READ_WRITE;
+
 import android.os.FileBridge.FileBridgeOutputStream;
 import android.test.AndroidTestCase;
 import android.test.MoreAsserts;
@@ -25,7 +28,6 @@
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.Random;
@@ -33,7 +35,7 @@
 public class FileBridgeTest extends AndroidTestCase {
 
     private File file;
-    private FileOutputStream fileOs;
+    private ParcelFileDescriptor outputFile;
     private FileBridge bridge;
     private FileBridgeOutputStream client;
 
@@ -44,17 +46,17 @@
         file = getContext().getFileStreamPath("meow.dat");
         file.delete();
 
-        fileOs = new FileOutputStream(file);
+        outputFile = ParcelFileDescriptor.open(file, MODE_CREATE | MODE_READ_WRITE);
 
         bridge = new FileBridge();
-        bridge.setTargetFile(fileOs.getFD());
+        bridge.setTargetFile(outputFile);
         bridge.start();
         client = new FileBridgeOutputStream(bridge.getClientSocket());
     }
 
     @Override
     protected void tearDown() throws Exception {
-        fileOs.close();
+        outputFile.close();
         file.delete();
     }
 
diff --git a/core/tests/coretests/src/android/text/format/DateFormatTest.java b/core/tests/coretests/src/android/text/format/DateFormatTest.java
index a3434e8..212cc44 100644
--- a/core/tests/coretests/src/android/text/format/DateFormatTest.java
+++ b/core/tests/coretests/src/android/text/format/DateFormatTest.java
@@ -21,13 +21,19 @@
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
+import android.compat.testing.PlatformCompatChangeRule;
 import android.icu.text.DateFormatSymbols;
 import android.platform.test.annotations.Presubmit;
 
 import androidx.test.filters.SmallTest;
 import androidx.test.runner.AndroidJUnit4;
 
+import libcore.junit.util.compat.CoreCompatChangeRule.DisableCompatChanges;
+import libcore.junit.util.compat.CoreCompatChangeRule.EnableCompatChanges;
+
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 
 import java.util.Arrays;
@@ -38,6 +44,9 @@
 @RunWith(AndroidJUnit4.class)
 public class DateFormatTest {
 
+    @Rule
+    public TestRule compatChangeRule = new PlatformCompatChangeRule();
+
     @Test
     public void testHasDesignator() {
         assertTrue(DateFormat.hasDesignator("hh:mm:ss", DateFormat.MINUTE));
@@ -135,4 +144,29 @@
     private static String best(Locale l, String skeleton) {
         return DateFormat.getBestDateTimePattern(l, skeleton);
     }
+
+    @Test
+    @EnableCompatChanges({DateFormat.DISALLOW_DUPLICATE_FIELD_IN_SKELETON})
+    public void testGetBestDateTimePattern_disableDuplicateField() {
+        assertIllegalArgumentException(Locale.US, "jmma");
+        assertIllegalArgumentException(Locale.US, "ahmma");
+    }
+
+    @Test
+    @DisableCompatChanges({DateFormat.DISALLOW_DUPLICATE_FIELD_IN_SKELETON})
+    public void testGetBestDateTimePattern_enableDuplicateField() {
+        // en-US uses 12-hour format by default.
+        assertEquals("h:mm a", DateFormat.getBestDateTimePattern(Locale.US, "jmma"));
+        assertEquals("h:mm a", DateFormat.getBestDateTimePattern(Locale.US, "ahmma"));
+    }
+
+    private static void assertIllegalArgumentException(Locale l, String skeleton) {
+        try {
+            DateFormat.getBestDateTimePattern(l, skeleton);
+            fail("getBestDateTimePattern() does not fail with Locale: " + l
+                    + " skeleton: " + skeleton);
+        } catch (IllegalArgumentException expected) {
+            // ignored
+        }
+    }
 }
diff --git a/core/tests/coretests/src/android/text/format/OWNERS b/core/tests/coretests/src/android/text/format/OWNERS
new file mode 100644
index 0000000..32adc12
--- /dev/null
+++ b/core/tests/coretests/src/android/text/format/OWNERS
@@ -0,0 +1,3 @@
+# Inherits OWNERS from parent directory, plus the following
+
+vichang@google.com
diff --git a/core/tests/coretests/src/android/view/InsetsControllerTest.java b/core/tests/coretests/src/android/view/InsetsControllerTest.java
index 801cd4d..48695aa 100644
--- a/core/tests/coretests/src/android/view/InsetsControllerTest.java
+++ b/core/tests/coretests/src/android/view/InsetsControllerTest.java
@@ -27,6 +27,7 @@
 import static android.view.InsetsState.ITYPE_STATUS_BAR;
 import static android.view.ViewRootImpl.NEW_INSETS_MODE_FULL;
 import static android.view.WindowInsets.Type.ime;
+import static android.view.WindowInsets.Type.navigationBars;
 import static android.view.WindowInsets.Type.statusBars;
 import static android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE;
 
@@ -742,6 +743,20 @@
             mController.onControlsChanged(createSingletonControl(ITYPE_IME));
             assertEquals(newState.getSource(ITYPE_IME),
                     mTestHost.getModifiedState().peekSource(ITYPE_IME));
+
+            // The modified frames cannot be updated if there is an animation.
+            mController.onControlsChanged(createSingletonControl(ITYPE_NAVIGATION_BAR));
+            mController.hide(navigationBars());
+            newState = new InsetsState(mController.getState(), true /* copySource */);
+            newState.getSource(ITYPE_NAVIGATION_BAR).getFrame().top--;
+            mController.onStateChanged(newState);
+            assertNotEquals(newState.getSource(ITYPE_NAVIGATION_BAR),
+                    mTestHost.getModifiedState().peekSource(ITYPE_NAVIGATION_BAR));
+
+            // The modified frames can be updated while the animation is done.
+            mController.cancelExistingAnimations();
+            assertEquals(newState.getSource(ITYPE_NAVIGATION_BAR),
+                    mTestHost.getModifiedState().peekSource(ITYPE_NAVIGATION_BAR));
         });
     }
 
diff --git a/core/tests/coretests/src/android/view/textclassifier/TextClassificationManagerTest.java b/core/tests/coretests/src/android/view/textclassifier/TextClassificationManagerTest.java
index 628252d..402b92a 100644
--- a/core/tests/coretests/src/android/view/textclassifier/TextClassificationManagerTest.java
+++ b/core/tests/coretests/src/android/view/textclassifier/TextClassificationManagerTest.java
@@ -52,7 +52,8 @@
 
     @Test
     public void testGetLocalTextClassifier() {
-        assertThat(mTcm.getTextClassifier(TextClassifier.LOCAL)).isSameAs(TextClassifier.NO_OP);
+        assertThat(mTcm.getTextClassifier(TextClassifier.LOCAL))
+                .isSameInstanceAs(TextClassifier.NO_OP);
     }
 
     @Test
diff --git a/core/tests/coretests/src/com/android/internal/infra/AndroidFutureTest.java b/core/tests/coretests/src/com/android/internal/infra/AndroidFutureTest.java
index f108eb8..a2bc77a 100644
--- a/core/tests/coretests/src/com/android/internal/infra/AndroidFutureTest.java
+++ b/core/tests/coretests/src/com/android/internal/infra/AndroidFutureTest.java
@@ -81,7 +81,7 @@
         future.completeExceptionally(origException);
         ExecutionException executionException =
                 expectThrows(ExecutionException.class, future::get);
-        assertThat(executionException.getCause()).isSameAs(origException);
+        assertThat(executionException.getCause()).isSameInstanceAs(origException);
     }
 
     @Test
@@ -92,7 +92,7 @@
         CountDownLatch latch = new CountDownLatch(1);
         future.whenComplete((obj, err) -> {
             assertThat(obj).isNull();
-            assertThat(err).isSameAs(origException);
+            assertThat(err).isSameInstanceAs(origException);
             latch.countDown();
         });
         latch.await();
diff --git a/core/tests/coretests/src/com/android/internal/os/BinderDeathDispatcherTest.java b/core/tests/coretests/src/com/android/internal/os/BinderDeathDispatcherTest.java
index 5914887..942045c 100644
--- a/core/tests/coretests/src/com/android/internal/os/BinderDeathDispatcherTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BinderDeathDispatcherTest.java
@@ -107,7 +107,7 @@
             if (!isAlive) {
                 return false;
             }
-            assertThat(mRecipient).isSameAs(recipient);
+            assertThat(mRecipient).isSameInstanceAs(recipient);
             mRecipient = null;
             return true;
         }
diff --git a/core/tests/coretests/src/com/android/internal/os/KernelWakelockReaderTest.java b/core/tests/coretests/src/com/android/internal/os/KernelWakelockReaderTest.java
index dc9208d..7306b45 100644
--- a/core/tests/coretests/src/com/android/internal/os/KernelWakelockReaderTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/KernelWakelockReaderTest.java
@@ -16,14 +16,14 @@
 
 package com.android.internal.os;
 
+import android.system.suspend.internal.WakeLockInfo;
+
 import androidx.test.filters.SmallTest;
 
 import junit.framework.TestCase;
 
 import java.nio.charset.Charset;
 
-import android.system.suspend.WakeLockInfo;
-
 public class KernelWakelockReaderTest extends TestCase {
     /**
      * Helper class that builds the mock Kernel module file /d/wakeup_sources.
diff --git a/core/tests/coretests/src/com/android/internal/statusbar/RegisterStatusBarResultTest.java b/core/tests/coretests/src/com/android/internal/statusbar/RegisterStatusBarResultTest.java
index 9f68ef3..7eca320 100644
--- a/core/tests/coretests/src/com/android/internal/statusbar/RegisterStatusBarResultTest.java
+++ b/core/tests/coretests/src/com/android/internal/statusbar/RegisterStatusBarResultTest.java
@@ -74,7 +74,7 @@
         assertThat(copy.mImeBackDisposition).isEqualTo(original.mImeBackDisposition);
         assertThat(copy.mShowImeSwitcher).isEqualTo(original.mShowImeSwitcher);
         assertThat(copy.mDisabledFlags2).isEqualTo(original.mDisabledFlags2);
-        assertThat(copy.mImeToken).isSameAs(original.mImeToken);
+        assertThat(copy.mImeToken).isSameInstanceAs(original.mImeToken);
         assertThat(copy.mNavbarColorManagedByIme).isEqualTo(original.mNavbarColorManagedByIme);
         assertThat(copy.mAppFullscreen).isEqualTo(original.mAppFullscreen);
         assertThat(copy.mAppImmersive).isEqualTo(original.mAppImmersive);
diff --git a/core/tests/uwbtests/Android.bp b/core/tests/uwbtests/Android.bp
new file mode 100644
index 0000000..c41c346
--- /dev/null
+++ b/core/tests/uwbtests/Android.bp
@@ -0,0 +1,28 @@
+// Copyright 2020 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "UwbManagerTests",
+    static_libs: [
+        "androidx.test.ext.junit",
+        "androidx.test.rules",
+    ],
+    libs: [
+        "android.test.runner",
+    ],
+    srcs: ["src/**/*.java"],
+    platform_apis: true,
+    certificate: "platform",
+    test_suites: ["device-tests"],
+}
diff --git a/core/tests/uwbtests/AndroidManifest.xml b/core/tests/uwbtests/AndroidManifest.xml
new file mode 100644
index 0000000..dc991ff
--- /dev/null
+++ b/core/tests/uwbtests/AndroidManifest.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2020 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.uwb">
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!-- This is a self-instrumenting test package. -->
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+                     android:targetPackage="android.uwb"
+                     android:label="UWB Manager Tests">
+    </instrumentation>
+
+</manifest>
+
diff --git a/core/tests/uwbtests/AndroidTest.xml b/core/tests/uwbtests/AndroidTest.xml
new file mode 100644
index 0000000..ff4b668
--- /dev/null
+++ b/core/tests/uwbtests/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2020 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Config for UWB Manager test cases">
+    <option name="test-suite-tag" value="apct"/>
+    <option name="test-suite-tag" value="apct-instrumentation"/>
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="UwbManagerTests.apk" />
+    </target_preparer>
+
+    <option name="test-suite-tag" value="apct"/>
+    <option name="test-tag" value="UwbManagerTests"/>
+
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="android.uwb" />
+        <option name="hidden-api-checks" value="false"/>
+        <option name="runner" value="androidx.test.runner.AndroidJUnitRunner"/>
+    </test>
+</configuration>
diff --git a/core/tests/uwbtests/src/android/uwb/AngleMeasurementTest.java b/core/tests/uwbtests/src/android/uwb/AngleMeasurementTest.java
new file mode 100644
index 0000000..7769c28
--- /dev/null
+++ b/core/tests/uwbtests/src/android/uwb/AngleMeasurementTest.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import android.os.Parcel;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ * Test of {@link AngleMeasurement}.
+ */
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class AngleMeasurementTest {
+    private static final double EPSILON = 0.00000000001;
+
+    @Test
+    public void testBuilder() {
+        double radians = 0.1234;
+        double errorRadians = 0.5678;
+        double confidence = 0.5;
+
+        AngleMeasurement.Builder builder = new AngleMeasurement.Builder();
+        tryBuild(builder, false);
+
+        builder.setRadians(radians);
+        tryBuild(builder, false);
+
+        builder.setErrorRadians(errorRadians);
+        tryBuild(builder, false);
+
+        builder.setConfidenceLevel(confidence);
+        AngleMeasurement measurement = tryBuild(builder, true);
+
+        assertEquals(measurement.getRadians(), radians, 0);
+        assertEquals(measurement.getErrorRadians(), errorRadians, 0);
+        assertEquals(measurement.getConfidenceLevel(), confidence, 0);
+    }
+
+    private AngleMeasurement tryBuild(AngleMeasurement.Builder builder, boolean expectSuccess) {
+        AngleMeasurement measurement = null;
+        try {
+            measurement = builder.build();
+            if (!expectSuccess) {
+                fail("Expected AngleMeasurement.Builder.build() to fail, but it succeeded");
+            }
+        } catch (IllegalStateException e) {
+            if (expectSuccess) {
+                fail("Expected AngleMeasurement.Builder.build() to succeed, but it failed");
+            }
+        }
+        return measurement;
+    }
+
+    @Test
+    public void testParcel() {
+        Parcel parcel = Parcel.obtain();
+        AngleMeasurement measurement = UwbTestUtils.getAngleMeasurement();
+        measurement.writeToParcel(parcel, 0);
+        parcel.setDataPosition(0);
+        AngleMeasurement fromParcel = AngleMeasurement.CREATOR.createFromParcel(parcel);
+        assertEquals(measurement, fromParcel);
+    }
+}
diff --git a/core/tests/uwbtests/src/android/uwb/AngleOfArrivalMeasurementTest.java b/core/tests/uwbtests/src/android/uwb/AngleOfArrivalMeasurementTest.java
new file mode 100644
index 0000000..077b08f
--- /dev/null
+++ b/core/tests/uwbtests/src/android/uwb/AngleOfArrivalMeasurementTest.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import android.os.Parcel;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ * Test of {@link AngleOfArrivalMeasurement}.
+ */
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class AngleOfArrivalMeasurementTest {
+
+    @Test
+    public void testBuilder() {
+        AngleMeasurement azimuth = UwbTestUtils.getAngleMeasurement();
+        AngleMeasurement altitude = UwbTestUtils.getAngleMeasurement();
+
+        AngleOfArrivalMeasurement.Builder builder = new AngleOfArrivalMeasurement.Builder();
+        tryBuild(builder, false);
+
+        builder.setAltitudeAngleMeasurement(altitude);
+        tryBuild(builder, false);
+
+        builder.setAzimuthAngleMeasurement(azimuth);
+        AngleOfArrivalMeasurement measurement = tryBuild(builder, true);
+
+        assertEquals(azimuth, measurement.getAzimuth());
+        assertEquals(altitude, measurement.getAltitude());
+    }
+
+    private AngleMeasurement getAngleMeasurement(double radian, double error, double confidence) {
+        return new AngleMeasurement.Builder()
+                .setRadians(radian)
+                .setErrorRadians(error)
+                .setConfidenceLevel(confidence)
+                .build();
+    }
+
+    private AngleOfArrivalMeasurement tryBuild(AngleOfArrivalMeasurement.Builder builder,
+            boolean expectSuccess) {
+        AngleOfArrivalMeasurement measurement = null;
+        try {
+            measurement = builder.build();
+            if (!expectSuccess) {
+                fail("Expected AngleOfArrivalMeasurement.Builder.build() to fail");
+            }
+        } catch (IllegalStateException e) {
+            if (expectSuccess) {
+                fail("Expected AngleOfArrivalMeasurement.Builder.build() to succeed");
+            }
+        }
+        return measurement;
+    }
+
+    @Test
+    public void testParcel() {
+        Parcel parcel = Parcel.obtain();
+        AngleOfArrivalMeasurement measurement = UwbTestUtils.getAngleOfArrivalMeasurement();
+        measurement.writeToParcel(parcel, 0);
+        parcel.setDataPosition(0);
+        AngleOfArrivalMeasurement fromParcel =
+                AngleOfArrivalMeasurement.CREATOR.createFromParcel(parcel);
+        assertEquals(measurement, fromParcel);
+    }
+}
diff --git a/core/tests/uwbtests/src/android/uwb/DistanceMeasurementTest.java b/core/tests/uwbtests/src/android/uwb/DistanceMeasurementTest.java
new file mode 100644
index 0000000..439c884
--- /dev/null
+++ b/core/tests/uwbtests/src/android/uwb/DistanceMeasurementTest.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import android.os.Parcel;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ * Test of {@link DistanceMeasurement}.
+ */
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class DistanceMeasurementTest {
+    private static final double EPSILON = 0.00000000001;
+
+    @Test
+    public void testBuilder() {
+        double meters = 0.12;
+        double error = 0.54;
+        double confidence = 0.99;
+
+        DistanceMeasurement.Builder builder = new DistanceMeasurement.Builder();
+        tryBuild(builder, false);
+
+        builder.setMeters(meters);
+        tryBuild(builder, false);
+
+        builder.setErrorMeters(error);
+        tryBuild(builder, false);
+
+        builder.setConfidenceLevel(confidence);
+        DistanceMeasurement measurement = tryBuild(builder, true);
+
+        assertEquals(meters, measurement.getMeters(), 0);
+        assertEquals(error, measurement.getErrorMeters(), 0);
+        assertEquals(confidence, measurement.getConfidenceLevel(), 0);
+    }
+
+    private DistanceMeasurement tryBuild(DistanceMeasurement.Builder builder,
+            boolean expectSuccess) {
+        DistanceMeasurement measurement = null;
+        try {
+            measurement = builder.build();
+            if (!expectSuccess) {
+                fail("Expected DistanceMeasurement.Builder.build() to fail");
+            }
+        } catch (IllegalStateException e) {
+            if (expectSuccess) {
+                fail("Expected DistanceMeasurement.Builder.build() to succeed");
+            }
+        }
+        return measurement;
+    }
+
+    @Test
+    public void testParcel() {
+        Parcel parcel = Parcel.obtain();
+        DistanceMeasurement measurement = UwbTestUtils.getDistanceMeasurement();
+        measurement.writeToParcel(parcel, 0);
+        parcel.setDataPosition(0);
+        DistanceMeasurement fromParcel =
+                DistanceMeasurement.CREATOR.createFromParcel(parcel);
+        assertEquals(measurement, fromParcel);
+    }
+}
diff --git a/core/tests/uwbtests/src/android/uwb/RangingMeasurementTest.java b/core/tests/uwbtests/src/android/uwb/RangingMeasurementTest.java
new file mode 100644
index 0000000..a7559d8
--- /dev/null
+++ b/core/tests/uwbtests/src/android/uwb/RangingMeasurementTest.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import android.os.Parcel;
+import android.os.SystemClock;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ * Test of {@link RangingMeasurement}.
+ */
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class RangingMeasurementTest {
+
+    @Test
+    public void testBuilder() {
+        int status = RangingMeasurement.RANGING_STATUS_SUCCESS;
+        UwbAddress address = UwbTestUtils.getUwbAddress(false);
+        long time = SystemClock.elapsedRealtimeNanos();
+        AngleOfArrivalMeasurement angleMeasurement = UwbTestUtils.getAngleOfArrivalMeasurement();
+        DistanceMeasurement distanceMeasurement = UwbTestUtils.getDistanceMeasurement();
+
+        RangingMeasurement.Builder builder = new RangingMeasurement.Builder();
+
+        builder.setStatus(status);
+        tryBuild(builder, false);
+
+        builder.setElapsedRealtimeNanos(time);
+        tryBuild(builder, false);
+
+        builder.setAngleOfArrivalMeasurement(angleMeasurement);
+        tryBuild(builder, false);
+
+        builder.setDistanceMeasurement(distanceMeasurement);
+        tryBuild(builder, false);
+
+        builder.setRemoteDeviceAddress(address);
+        RangingMeasurement measurement = tryBuild(builder, true);
+
+        assertEquals(status, measurement.getStatus());
+        assertEquals(address, measurement.getRemoteDeviceAddress());
+        assertEquals(time, measurement.getElapsedRealtimeNanos());
+        assertEquals(angleMeasurement, measurement.getAngleOfArrival());
+        assertEquals(distanceMeasurement, measurement.getDistance());
+    }
+
+    private RangingMeasurement tryBuild(RangingMeasurement.Builder builder,
+            boolean expectSuccess) {
+        RangingMeasurement measurement = null;
+        try {
+            measurement = builder.build();
+            if (!expectSuccess) {
+                fail("Expected RangingMeasurement.Builder.build() to fail");
+            }
+        } catch (IllegalStateException e) {
+            if (expectSuccess) {
+                fail("Expected DistanceMeasurement.Builder.build() to succeed");
+            }
+        }
+        return measurement;
+    }
+
+    @Test
+    public void testParcel() {
+        Parcel parcel = Parcel.obtain();
+        RangingMeasurement measurement = UwbTestUtils.getRangingMeasurement();
+        measurement.writeToParcel(parcel, 0);
+        parcel.setDataPosition(0);
+        RangingMeasurement fromParcel = RangingMeasurement.CREATOR.createFromParcel(parcel);
+        assertEquals(measurement, fromParcel);
+    }
+}
diff --git a/core/tests/uwbtests/src/android/uwb/RangingReportTest.java b/core/tests/uwbtests/src/android/uwb/RangingReportTest.java
new file mode 100644
index 0000000..64c48ba
--- /dev/null
+++ b/core/tests/uwbtests/src/android/uwb/RangingReportTest.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import android.os.Parcel;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.List;
+
+/**
+ * Test of {@link RangingReport}.
+ */
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class RangingReportTest {
+
+    @Test
+    public void testBuilder() {
+        List<RangingMeasurement> measurements = UwbTestUtils.getRangingMeasurements(5);
+
+        RangingReport.Builder builder = new RangingReport.Builder();
+        builder.addMeasurements(measurements);
+        RangingReport report = tryBuild(builder, true);
+        verifyMeasurementsEqual(measurements, report.getMeasurements());
+
+
+        builder = new RangingReport.Builder();
+        for (RangingMeasurement measurement : measurements) {
+            builder.addMeasurement(measurement);
+        }
+        report = tryBuild(builder, true);
+        verifyMeasurementsEqual(measurements, report.getMeasurements());
+    }
+
+    private void verifyMeasurementsEqual(List<RangingMeasurement> expected,
+            List<RangingMeasurement> actual) {
+        assertEquals(expected.size(), actual.size());
+        for (int i = 0; i < expected.size(); i++) {
+            assertEquals(expected.get(i), actual.get(i));
+        }
+    }
+
+    private RangingReport tryBuild(RangingReport.Builder builder,
+            boolean expectSuccess) {
+        RangingReport report = null;
+        try {
+            report = builder.build();
+            if (!expectSuccess) {
+                fail("Expected RangingReport.Builder.build() to fail");
+            }
+        } catch (IllegalStateException e) {
+            if (expectSuccess) {
+                fail("Expected RangingReport.Builder.build() to succeed");
+            }
+        }
+        return report;
+    }
+
+    @Test
+    public void testParcel() {
+        Parcel parcel = Parcel.obtain();
+        RangingReport report = UwbTestUtils.getRangingReports(5);
+        report.writeToParcel(parcel, 0);
+        parcel.setDataPosition(0);
+        RangingReport fromParcel = RangingReport.CREATOR.createFromParcel(parcel);
+        assertEquals(report, fromParcel);
+    }
+}
diff --git a/core/tests/uwbtests/src/android/uwb/SessionHandleTest.java b/core/tests/uwbtests/src/android/uwb/SessionHandleTest.java
new file mode 100644
index 0000000..8b42ff7
--- /dev/null
+++ b/core/tests/uwbtests/src/android/uwb/SessionHandleTest.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+import static org.junit.Assert.assertEquals;
+
+import android.os.Parcel;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ * Test of {@link SessionHandle}.
+ */
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class SessionHandleTest {
+
+    @Test
+    public void testBasic() {
+        int handleId = 12;
+        SessionHandle handle = new SessionHandle(handleId);
+        assertEquals(handle.getId(), handleId);
+    }
+
+    @Test
+    public void testParcel() {
+        Parcel parcel = Parcel.obtain();
+        SessionHandle handle = new SessionHandle(10);
+        handle.writeToParcel(parcel, 0);
+        parcel.setDataPosition(0);
+        SessionHandle fromParcel = SessionHandle.CREATOR.createFromParcel(parcel);
+        assertEquals(handle, fromParcel);
+    }
+}
diff --git a/core/tests/uwbtests/src/android/uwb/UwbAddressTest.java b/core/tests/uwbtests/src/android/uwb/UwbAddressTest.java
new file mode 100644
index 0000000..ccc88a9
--- /dev/null
+++ b/core/tests/uwbtests/src/android/uwb/UwbAddressTest.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+import static org.junit.Assert.assertEquals;
+
+import android.os.Parcel;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ * Test of {@link UwbAddress}.
+ */
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class UwbAddressTest {
+
+    @Test
+    public void testFromBytes_Short() {
+        runFromBytes(UwbAddress.SHORT_ADDRESS_BYTE_LENGTH);
+    }
+
+    @Test
+    public void testFromBytes_Extended() {
+        runFromBytes(UwbAddress.EXTENDED_ADDRESS_BYTE_LENGTH);
+    }
+
+    private void runFromBytes(int len) {
+        byte[] addressBytes = getByteArray(len);
+        UwbAddress address = UwbAddress.fromBytes(addressBytes);
+        assertEquals(address.size(), len);
+        assertEquals(addressBytes, address.toBytes());
+    }
+
+    private byte[] getByteArray(int len) {
+        byte[] res = new byte[len];
+        for (int i = 0; i < len; i++) {
+            res[i] = (byte) i;
+        }
+        return res;
+    }
+
+    @Test
+    public void testParcel_Short() {
+        runParcel(true);
+    }
+
+    @Test
+    public void testParcel_Extended() {
+        runParcel(false);
+    }
+
+    private void runParcel(boolean useShortAddress) {
+        Parcel parcel = Parcel.obtain();
+        UwbAddress address = UwbTestUtils.getUwbAddress(useShortAddress);
+        address.writeToParcel(parcel, 0);
+        parcel.setDataPosition(0);
+        UwbAddress fromParcel = UwbAddress.CREATOR.createFromParcel(parcel);
+        assertEquals(address, fromParcel);
+    }
+}
diff --git a/core/tests/uwbtests/src/android/uwb/UwbTestUtils.java b/core/tests/uwbtests/src/android/uwb/UwbTestUtils.java
new file mode 100644
index 0000000..62e0b62
--- /dev/null
+++ b/core/tests/uwbtests/src/android/uwb/UwbTestUtils.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.uwb;
+
+import android.os.SystemClock;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class UwbTestUtils {
+    private UwbTestUtils() {}
+
+    public static AngleMeasurement getAngleMeasurement() {
+        return new AngleMeasurement.Builder()
+                .setRadians(getDoubleInRange(-Math.PI, Math.PI))
+                .setErrorRadians(getDoubleInRange(0, Math.PI))
+                .setConfidenceLevel(getDoubleInRange(0, 1))
+                .build();
+    }
+
+    public static AngleOfArrivalMeasurement getAngleOfArrivalMeasurement() {
+        return new AngleOfArrivalMeasurement.Builder()
+                .setAltitudeAngleMeasurement(getAngleMeasurement())
+                .setAzimuthAngleMeasurement(getAngleMeasurement())
+                .build();
+    }
+
+    public static DistanceMeasurement getDistanceMeasurement() {
+        return new DistanceMeasurement.Builder()
+                .setMeters(getDoubleInRange(0, 100))
+                .setErrorMeters(getDoubleInRange(0, 10))
+                .setConfidenceLevel(getDoubleInRange(0, 1))
+                .build();
+    }
+
+    public static RangingMeasurement getRangingMeasurement() {
+        return getRangingMeasurement(getUwbAddress(false));
+    }
+
+    public static RangingMeasurement getRangingMeasurement(UwbAddress address) {
+        return new RangingMeasurement.Builder()
+                .setDistanceMeasurement(getDistanceMeasurement())
+                .setAngleOfArrivalMeasurement(getAngleOfArrivalMeasurement())
+                .setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos())
+                .setRemoteDeviceAddress(address != null ? address : getUwbAddress(false))
+                .setStatus(RangingMeasurement.RANGING_STATUS_SUCCESS)
+                .build();
+    }
+
+    public static List<RangingMeasurement> getRangingMeasurements(int num) {
+        List<RangingMeasurement> result = new ArrayList<>();
+        for (int i = 0; i < num; i++) {
+            result.add(getRangingMeasurement());
+        }
+        return result;
+    }
+
+    public static RangingReport getRangingReports(int numMeasurements) {
+        RangingReport.Builder builder = new RangingReport.Builder();
+        for (int i = 0; i < numMeasurements; i++) {
+            builder.addMeasurement(getRangingMeasurement());
+        }
+        return builder.build();
+    }
+
+    private static double getDoubleInRange(double min, double max) {
+        return min + (max - min) * Math.random();
+    }
+
+    public static UwbAddress getUwbAddress(boolean isShortAddress) {
+        byte[] addressBytes = new byte[isShortAddress ? UwbAddress.SHORT_ADDRESS_BYTE_LENGTH :
+                UwbAddress.EXTENDED_ADDRESS_BYTE_LENGTH];
+        for (int i = 0; i < addressBytes.length; i++) {
+            addressBytes[i] = (byte) getDoubleInRange(1, 255);
+        }
+        return UwbAddress.fromBytes(addressBytes);
+    }
+}
diff --git a/core/xsd/vts/Android.bp b/core/xsd/vts/Android.bp
index 4b43b41..ca655f1 100644
--- a/core/xsd/vts/Android.bp
+++ b/core/xsd/vts/Android.bp
@@ -40,7 +40,3 @@
     ],
     test_config: "vts_permission_validate_test.xml",
 }
-
-vts_config {
-    name: "VtsValidatePermission",
-}
diff --git a/core/xsd/vts/AndroidTest.xml b/core/xsd/vts/AndroidTest.xml
deleted file mode 100644
index e5cc9a0..0000000
--- a/core/xsd/vts/AndroidTest.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2019 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<configuration description="Config for VTS VtsValidatePermission.">
-    <option name="config-descriptor:metadata" key="plan" value="vts-treble" />
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
-        <option name="abort-on-push-failure" value="false"/>
-        <option name="push-group" value="HostDrivenTest.push"/>
-        <option name="push" value="DATA/etc/permission.xsd->/data/local/tmp/permission.xsd"/>
-    </target_preparer>
-    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
-        <option name="test-module-name" value="VtsValidatePermission"/>
-        <option name="binary-test-source" value="_32bit::DATA/nativetest/vts_permission_validate_test/vts_permission_validate_test" />
-        <option name="binary-test-source" value="_64bit::DATA/nativetest64/vts_permission_validate_test/vts_permission_validate_test" />
-        <option name="binary-test-type" value="gtest"/>
-        <option name="test-timeout" value="30s"/>
-    </test>
-</configuration>
diff --git a/data/etc/platform.xml b/data/etc/platform.xml
index 5f159a1..c51248d 100644
--- a/data/etc/platform.xml
+++ b/data/etc/platform.xml
@@ -236,8 +236,7 @@
     <library name="android.hidl.base-V1.0-java"
             file="/system/framework/android.hidl.base-V1.0-java.jar" />
     <library name="android.hidl.manager-V1.0-java"
-            file="/system/framework/android.hidl.manager-V1.0-java.jar"
-            dependency="android.hidl.base-V1.0-java" />
+            file="/system/framework/android.hidl.manager-V1.0-java.jar" />
 
     <!-- These are the standard packages that are white-listed to always have internet
          access while in power save mode, even if they aren't in the foreground. -->
diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml
index 3e93591..ce6deeab 100644
--- a/data/etc/privapp-permissions-platform.xml
+++ b/data/etc/privapp-permissions-platform.xml
@@ -160,9 +160,11 @@
         <permission name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS"/>
         <permission name="android.permission.CONTROL_INCALL_EXPERIENCE"/>
         <permission name="android.permission.DUMP"/>
+        <permission name="android.permission.HANDLE_CAR_MODE_CHANGES"/>
         <permission name="android.permission.INTERACT_ACROSS_USERS"/>
         <permission name="android.permission.LOCAL_MAC_ADDRESS"/>
         <permission name="android.permission.MANAGE_USERS"/>
+        <permission name="android.permission.MANAGE_SUBSCRIPTION_PLANS" />
         <permission name="android.permission.MODIFY_PHONE_STATE"/>
         <permission name="android.permission.PACKAGE_USAGE_STATS"/>
         <permission name="android.permission.PERFORM_CDMA_PROVISIONING"/>
@@ -314,6 +316,7 @@
         <permission name="android.permission.DELETE_CACHE_FILES"/>
         <permission name="android.permission.DELETE_PACKAGES"/>
         <permission name="android.permission.DUMP"/>
+        <permission name="android.permission.CONTROL_UI_TRACING"/>
         <permission name="android.permission.ACTIVITY_EMBEDDING"/>
         <permission name="android.permission.FORCE_STOP_PACKAGES"/>
         <permission name="android.permission.GET_APP_OPS_STATS"/>
@@ -427,12 +430,21 @@
         <permission name="android.permission.CAPTURE_AUDIO_OUTPUT" />
         <!-- Permissions required for CTS test - AdbManagerTest -->
         <permission name="android.permission.MANAGE_DEBUGGING" />
+        <!-- Permissions required for CTS test - TimeManagerTest -->
+        <permission name="android.permission.MANAGE_TIME_AND_ZONE_DETECTION" />
     </privapp-permissions>
 
     <privapp-permissions package="com.android.statementservice">
         <permission name="android.permission.INTENT_FILTER_VERIFICATION_AGENT"/>
     </privapp-permissions>
 
+    <privapp-permissions package="com.android.traceur">
+        <!-- Permissions required to receive BUGREPORT_STARTED intent -->
+        <permission name="android.permission.DUMP"/>
+        <!-- Permissions required for quick settings tile -->
+        <permission name="android.permission.STATUS_BAR"/>
+    </privapp-permissions>
+
     <privapp-permissions package="com.android.tv">
         <permission name="android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE"/>
         <permission name="android.permission.DVB_DEVICE"/>
diff --git a/data/keyboards/Vendor_2378_Product_1008.kl b/data/keyboards/Vendor_2378_Product_1008.kl
index 478da03..7b19469 100644
--- a/data/keyboards/Vendor_2378_Product_1008.kl
+++ b/data/keyboards/Vendor_2378_Product_1008.kl
@@ -14,6 +14,10 @@
 
 # OnLive, Inc. OnLive Wireless Controller, USB adapter
 
+key 164 MEDIA_PLAY_PAUSE
+key 167 MEDIA_RECORD
+key 168 MEDIA_REWIND
+key 208 MEDIA_FAST_FORWARD
 key 304 BUTTON_A
 key 305 BUTTON_B
 key 307 BUTTON_X
@@ -22,6 +26,7 @@
 key 311 BUTTON_R1
 key 315 BUTTON_START
 key 314 BUTTON_SELECT
+key 316 BUTTON_MODE
 key 317 BUTTON_THUMBL
 key 318 BUTTON_THUMBR
 
diff --git a/data/keyboards/Vendor_2378_Product_100a.kl b/data/keyboards/Vendor_2378_Product_100a.kl
index d9cd171..cb2b73a 100644
--- a/data/keyboards/Vendor_2378_Product_100a.kl
+++ b/data/keyboards/Vendor_2378_Product_100a.kl
@@ -14,6 +14,10 @@
 
 # OnLive, Inc. OnLive Wireless Controller
 
+key 164 MEDIA_PLAY_PAUSE
+key 167 MEDIA_RECORD
+key 168 MEDIA_REWIND
+key 208 MEDIA_FAST_FORWARD
 key 304 BUTTON_A
 key 305 BUTTON_B
 key 307 BUTTON_X
@@ -22,6 +26,7 @@
 key 311 BUTTON_R1
 key 315 BUTTON_START
 key 314 BUTTON_SELECT
+key 316 BUTTON_MODE
 key 317 BUTTON_THUMBL
 key 318 BUTTON_THUMBR
 
diff --git a/framework-jarjar-rules.txt b/framework-jarjar-rules.txt
index d8af726..70dedb8 100644
--- a/framework-jarjar-rules.txt
+++ b/framework-jarjar-rules.txt
@@ -1,2 +1,6 @@
 rule android.hidl.** android.internal.hidl.@1
 rule android.net.wifi.WifiAnnotations* android.internal.wifi.WifiAnnotations@1
+
+# Hide media mainline module implementation classes to avoid collisions with
+# app-bundled ExoPlayer classes.
+rule com.google.android.exoplayer2.** android.media.internal.exo.@1
diff --git a/graphics/java/android/graphics/Bitmap.java b/graphics/java/android/graphics/Bitmap.java
index f787759..592c5eb 100644
--- a/graphics/java/android/graphics/Bitmap.java
+++ b/graphics/java/android/graphics/Bitmap.java
@@ -80,7 +80,7 @@
 
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 123769491)
     private byte[] mNinePatchChunk; // may be null
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private NinePatch.InsetStruct mNinePatchInsets; // may be null
     @UnsupportedAppUsage
     private int mWidth;
@@ -185,7 +185,7 @@
      * width/height values
      */
     @SuppressWarnings("unused") // called from JNI
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     void reinit(int width, int height, boolean requestPremultiplied) {
         mWidth = width;
         mHeight = height;
diff --git a/graphics/java/android/graphics/BitmapFactory.java b/graphics/java/android/graphics/BitmapFactory.java
index bad487b..ef1e7bf 100644
--- a/graphics/java/android/graphics/BitmapFactory.java
+++ b/graphics/java/android/graphics/BitmapFactory.java
@@ -23,6 +23,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.res.AssetManager;
 import android.content.res.Resources;
+import android.os.Build;
 import android.os.Trace;
 import android.util.DisplayMetrics;
 import android.util.Log;
@@ -875,7 +876,7 @@
     @UnsupportedAppUsage
     private static native Bitmap nativeDecodeFileDescriptor(FileDescriptor fd,
             Rect padding, Options opts, long inBitmapHandle, long colorSpaceHandle);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static native Bitmap nativeDecodeAsset(long nativeAsset, Rect padding, Options opts,
             long inBitmapHandle, long colorSpaceHandle);
     @UnsupportedAppUsage
diff --git a/graphics/java/android/graphics/Canvas.java b/graphics/java/android/graphics/Canvas.java
index d949444..9b42b5cf3 100644
--- a/graphics/java/android/graphics/Canvas.java
+++ b/graphics/java/android/graphics/Canvas.java
@@ -1397,7 +1397,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void release() {
         mNativeCanvasWrapper = 0;
         if (mFinalizer != null) {
@@ -1421,7 +1421,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static void freeTextLayoutCaches() {
         nFreeTextLayoutCaches();
     }
diff --git a/graphics/java/android/graphics/CanvasProperty.java b/graphics/java/android/graphics/CanvasProperty.java
index 4263772c..e949584 100644
--- a/graphics/java/android/graphics/CanvasProperty.java
+++ b/graphics/java/android/graphics/CanvasProperty.java
@@ -17,6 +17,7 @@
 package android.graphics;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 import com.android.internal.util.VirtualRefBasePtr;
 
@@ -28,12 +29,12 @@
 
     private VirtualRefBasePtr mProperty;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static CanvasProperty<Float> createFloat(float initialValue) {
         return new CanvasProperty<Float>(nCreateFloat(initialValue));
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static CanvasProperty<Paint> createPaint(Paint initialValue) {
         return new CanvasProperty<Paint>(nCreatePaint(initialValue.getNativeInstance()));
     }
diff --git a/graphics/java/android/graphics/ColorMatrixColorFilter.java b/graphics/java/android/graphics/ColorMatrixColorFilter.java
index a8b18a9..90ff189 100644
--- a/graphics/java/android/graphics/ColorMatrixColorFilter.java
+++ b/graphics/java/android/graphics/ColorMatrixColorFilter.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 /**
  * A color filter that transforms colors through a 4x5 color matrix. This filter
@@ -107,7 +108,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setColorMatrixArray(@Nullable float[] array) {
         // called '...Array' so that passing null isn't ambiguous
         discardNativeInstance();
diff --git a/graphics/java/android/graphics/FontListParser.java b/graphics/java/android/graphics/FontListParser.java
index c146bbd..0782f8d 100644
--- a/graphics/java/android/graphics/FontListParser.java
+++ b/graphics/java/android/graphics/FontListParser.java
@@ -18,6 +18,7 @@
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.graphics.fonts.FontVariationAxis;
+import android.os.Build;
 import android.text.FontConfig;
 import android.util.Xml;
 
@@ -38,7 +39,7 @@
 public class FontListParser {
 
     /* Parse fallback list (no names) */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static FontConfig parse(InputStream in) throws XmlPullParserException, IOException {
         return parse(in, "/system/fonts");
     }
diff --git a/graphics/java/android/graphics/GraphicBuffer.java b/graphics/java/android/graphics/GraphicBuffer.java
index 04308478..ec6b281 100644
--- a/graphics/java/android/graphics/GraphicBuffer.java
+++ b/graphics/java/android/graphics/GraphicBuffer.java
@@ -18,6 +18,7 @@
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.hardware.HardwareBuffer;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -55,7 +56,7 @@
     private final int mFormat;
     private final int mUsage;
     // Note: do not rename, this field is used by native code
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final long mNativeObject;
 
     // These two fields are only used by lock/unlockCanvas()
@@ -87,7 +88,7 @@
     /**
      * Private use only. See {@link #create(int, int, int, int)}.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private GraphicBuffer(int width, int height, int format, int usage, long nativeObject) {
         mWidth = width;
         mHeight = height;
diff --git a/graphics/java/android/graphics/LightingColorFilter.java b/graphics/java/android/graphics/LightingColorFilter.java
index 221dfa1..df91c5d 100644
--- a/graphics/java/android/graphics/LightingColorFilter.java
+++ b/graphics/java/android/graphics/LightingColorFilter.java
@@ -23,6 +23,7 @@
 
 import android.annotation.ColorInt;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 /**
  * A color filter that can be used to simulate simple lighting effects.
@@ -73,7 +74,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setColorMultiply(@ColorInt int mul) {
         if (mMul != mul) {
             mMul = mul;
@@ -99,7 +100,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setColorAdd(@ColorInt int add) {
         if (mAdd != add) {
             mAdd = add;
diff --git a/graphics/java/android/graphics/LinearGradient.java b/graphics/java/android/graphics/LinearGradient.java
index 3f3ad96..30b518e 100644
--- a/graphics/java/android/graphics/LinearGradient.java
+++ b/graphics/java/android/graphics/LinearGradient.java
@@ -21,20 +21,21 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 
 public class LinearGradient extends Shader {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private float mX0;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private float mY0;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private float mX1;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private float mY1;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private float[] mPositions;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private TileMode mTileMode;
 
     // @ColorInts are replaced by @ColorLongs, but these remain due to @UnsupportedAppUsage.
@@ -44,7 +45,7 @@
     @UnsupportedAppUsage
     @ColorInt
     private int mColor0;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @ColorInt
     private int mColor1;
 
diff --git a/graphics/java/android/graphics/Movie.java b/graphics/java/android/graphics/Movie.java
index 4b3924f..9c9535d 100644
--- a/graphics/java/android/graphics/Movie.java
+++ b/graphics/java/android/graphics/Movie.java
@@ -28,7 +28,7 @@
  */
 @Deprecated
 public class Movie {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mNativeMovie;
 
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
diff --git a/graphics/java/android/graphics/Paint.java b/graphics/java/android/graphics/Paint.java
index 3b58624..9dd6e92 100644
--- a/graphics/java/android/graphics/Paint.java
+++ b/graphics/java/android/graphics/Paint.java
@@ -53,7 +53,7 @@
  */
 public class Paint {
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mNativePaint;
     private long mNativeShader;
     private long mNativeColorFilter;
diff --git a/graphics/java/android/graphics/Path.java b/graphics/java/android/graphics/Path.java
index 84fe392..5e11074 100644
--- a/graphics/java/android/graphics/Path.java
+++ b/graphics/java/android/graphics/Path.java
@@ -21,6 +21,7 @@
 import android.annotation.Nullable;
 import android.annotation.Size;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 import dalvik.annotation.optimization.CriticalNative;
 import dalvik.annotation.optimization.FastNative;
@@ -48,12 +49,12 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isSimplePath = true;
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Region rects;
     private Direction mLastDirection = null;
 
diff --git a/graphics/java/android/graphics/PorterDuffColorFilter.java b/graphics/java/android/graphics/PorterDuffColorFilter.java
index 50ecb62..0700f21 100644
--- a/graphics/java/android/graphics/PorterDuffColorFilter.java
+++ b/graphics/java/android/graphics/PorterDuffColorFilter.java
@@ -19,6 +19,7 @@
 import android.annotation.ColorInt;
 import android.annotation.NonNull;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 /**
  * A color filter that can be used to tint the source pixels using a single
@@ -64,7 +65,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public PorterDuff.Mode getMode() {
         return mMode;
     }
diff --git a/graphics/java/android/graphics/RadialGradient.java b/graphics/java/android/graphics/RadialGradient.java
index 96b7b9a..efe5e9d 100644
--- a/graphics/java/android/graphics/RadialGradient.java
+++ b/graphics/java/android/graphics/RadialGradient.java
@@ -21,27 +21,28 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 public class RadialGradient extends Shader {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private float mX;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private float mY;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private float mRadius;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private float[] mPositions;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private TileMode mTileMode;
 
     // @ColorInts are replaced by @ColorLongs, but these remain due to @UnsupportedAppUsage.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @ColorInt
     private int[] mColors;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @ColorInt
     private int mCenterColor;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @ColorInt
     private int mEdgeColor;
 
diff --git a/graphics/java/android/graphics/Region.java b/graphics/java/android/graphics/Region.java
index 43373ff..2970873 100644
--- a/graphics/java/android/graphics/Region.java
+++ b/graphics/java/android/graphics/Region.java
@@ -18,6 +18,7 @@
 
 import android.annotation.NonNull;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.util.Pools.SynchronizedPool;
@@ -32,7 +33,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public long mNativeRegion;
 
     // the native values for these must match up with the enum in SkRegion.h
@@ -337,7 +338,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void recycle() {
         setEmpty();
         sPool.release(this);
@@ -411,7 +412,7 @@
 
     /* Add an unused parameter so constructor can be called from jni without
        triggering 'not cloneable' exception */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private Region(long ni, int unused) {
         this(ni);
     }
diff --git a/graphics/java/android/graphics/SurfaceTexture.java b/graphics/java/android/graphics/SurfaceTexture.java
index 228d03a..7a2e584 100644
--- a/graphics/java/android/graphics/SurfaceTexture.java
+++ b/graphics/java/android/graphics/SurfaceTexture.java
@@ -18,6 +18,7 @@
 
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
@@ -69,17 +70,17 @@
  */
 public class SurfaceTexture {
     private final Looper mCreatorLooper;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private Handler mOnFrameAvailableHandler;
 
     /**
      * These fields are used by native code, do not access or modify.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mSurfaceTexture;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mProducer;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mFrameAvailableListener;
 
     private boolean mIsSingleBuffered;
@@ -390,7 +391,7 @@
      * This method is invoked from native code only.
      */
     @SuppressWarnings({"UnusedDeclaration"})
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static void postEventFromNative(WeakReference<SurfaceTexture> weakSelf) {
         SurfaceTexture st = weakSelf.get();
         if (st != null) {
diff --git a/graphics/java/android/graphics/SweepGradient.java b/graphics/java/android/graphics/SweepGradient.java
index 0852004..a8efc236 100644
--- a/graphics/java/android/graphics/SweepGradient.java
+++ b/graphics/java/android/graphics/SweepGradient.java
@@ -21,23 +21,24 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 public class SweepGradient extends Shader {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private float mCx;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private float mCy;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private float[] mPositions;
 
     // @ColorInts are replaced by @ColorLongs, but these remain due to @UnsupportedAppUsage.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @ColorInt
     private int[] mColors;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @ColorInt
     private int mColor0;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @ColorInt
     private int mColor1;
 
diff --git a/graphics/java/android/graphics/Typeface.java b/graphics/java/android/graphics/Typeface.java
index a2dd9a8..bc1301a 100644
--- a/graphics/java/android/graphics/Typeface.java
+++ b/graphics/java/android/graphics/Typeface.java
@@ -1217,7 +1217,7 @@
             long native_instance, List<FontVariationAxis> axes);
     @UnsupportedAppUsage
     private static native long nativeCreateWeightAlias(long native_instance, int weight);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static native long nativeCreateFromArray(long[] familyArray, int weight, int italic);
     private static native int[] nativeGetSupportedAxes(long native_instance);
 
diff --git a/graphics/java/android/graphics/Xfermode.java b/graphics/java/android/graphics/Xfermode.java
index e79fb76..81769e2 100644
--- a/graphics/java/android/graphics/Xfermode.java
+++ b/graphics/java/android/graphics/Xfermode.java
@@ -22,6 +22,7 @@
 package android.graphics;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 /**
  * Xfermode is the base class for objects that are called to implement custom
@@ -32,6 +33,6 @@
  */
 public class Xfermode {
     static final int DEFAULT = PorterDuff.Mode.SRC_OVER.nativeInt;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     int porterDuffMode = DEFAULT;
 }
diff --git a/graphics/java/android/graphics/drawable/AnimatedStateListDrawable.java b/graphics/java/android/graphics/drawable/AnimatedStateListDrawable.java
index 06159d8..33a6d38 100644
--- a/graphics/java/android/graphics/drawable/AnimatedStateListDrawable.java
+++ b/graphics/java/android/graphics/drawable/AnimatedStateListDrawable.java
@@ -561,9 +561,9 @@
 
         int[] mAnimThemeAttrs;
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         LongSparseLongArray mTransitions;
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         SparseIntArray mStateIds;
 
         AnimatedStateListState(@Nullable AnimatedStateListState orig,
diff --git a/graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java b/graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java
index 9fb72cf..e79ada6 100644
--- a/graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java
+++ b/graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java
@@ -317,7 +317,7 @@
      */
     private Resources mRes;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private AnimatedVectorDrawableState mAnimatedVectorState;
 
     /** The animator set that is parsed from the xml. */
@@ -1782,7 +1782,7 @@
         }
 
         // onFinished: should be called from native
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private static void callOnFinished(VectorDrawableAnimatorRT set, int id) {
             set.mHandler.post(() -> set.onAnimationEnd(id));
         }
diff --git a/graphics/java/android/graphics/drawable/ColorDrawable.java b/graphics/java/android/graphics/drawable/ColorDrawable.java
index e93e7df..8d1a98c 100644
--- a/graphics/java/android/graphics/drawable/ColorDrawable.java
+++ b/graphics/java/android/graphics/drawable/ColorDrawable.java
@@ -34,6 +34,7 @@
 import android.graphics.Paint;
 import android.graphics.PixelFormat;
 import android.graphics.Xfermode;
+import android.os.Build;
 import android.util.AttributeSet;
 import android.view.ViewDebug;
 
@@ -53,7 +54,7 @@
  * @attr ref android.R.styleable#ColorDrawable_color
  */
 public class ColorDrawable extends Drawable {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
 
     @ViewDebug.ExportedProperty(deepExport = true, prefix = "state_")
diff --git a/graphics/java/android/graphics/drawable/Drawable.java b/graphics/java/android/graphics/drawable/Drawable.java
index 9cf12f1..3a3da50 100644
--- a/graphics/java/android/graphics/drawable/Drawable.java
+++ b/graphics/java/android/graphics/drawable/Drawable.java
@@ -46,6 +46,7 @@
 import android.graphics.Rect;
 import android.graphics.Region;
 import android.graphics.Xfermode;
+import android.os.Build;
 import android.os.Trace;
 import android.util.AttributeSet;
 import android.util.DisplayMetrics;
@@ -1719,7 +1720,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static BlendMode parseBlendMode(int value, BlendMode defaultMode) {
         switch (value) {
             case 3: return BlendMode.SRC_OVER;
diff --git a/graphics/java/android/graphics/drawable/DrawableInflater.java b/graphics/java/android/graphics/drawable/DrawableInflater.java
index 3408b64..66752a2 100644
--- a/graphics/java/android/graphics/drawable/DrawableInflater.java
+++ b/graphics/java/android/graphics/drawable/DrawableInflater.java
@@ -23,6 +23,7 @@
 import android.content.Context;
 import android.content.res.Resources;
 import android.content.res.Resources.Theme;
+import android.os.Build;
 import android.util.AttributeSet;
 import android.view.InflateException;
 
@@ -50,7 +51,7 @@
             new HashMap<>();
 
     private final Resources mRes;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final ClassLoader mClassLoader;
 
     /**
diff --git a/graphics/java/android/graphics/drawable/DrawableWrapper.java b/graphics/java/android/graphics/drawable/DrawableWrapper.java
index e197e71..1054f92 100644
--- a/graphics/java/android/graphics/drawable/DrawableWrapper.java
+++ b/graphics/java/android/graphics/drawable/DrawableWrapper.java
@@ -32,6 +32,7 @@
 import android.graphics.PixelFormat;
 import android.graphics.Rect;
 import android.graphics.Xfermode;
+import android.os.Build;
 import android.util.AttributeSet;
 import android.util.DisplayMetrics;
 import android.view.View;
@@ -47,7 +48,7 @@
  * Drawable container with only one child element.
  */
 public abstract class DrawableWrapper extends Drawable implements Drawable.Callback {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private DrawableWrapperState mState;
     private Drawable mDrawable;
     private boolean mMutated;
diff --git a/graphics/java/android/graphics/drawable/Icon.java b/graphics/java/android/graphics/drawable/Icon.java
index cc7182c..ec30a2e 100644
--- a/graphics/java/android/graphics/drawable/Icon.java
+++ b/graphics/java/android/graphics/drawable/Icon.java
@@ -169,7 +169,7 @@
      * @return The length of the compressed bitmap byte array held by this {@link #TYPE_DATA} Icon.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getDataLength() {
         if (mType != TYPE_DATA) {
             throw new IllegalStateException("called getDataLength() on " + this);
@@ -597,7 +597,7 @@
      * Version of createWithResource that takes Resources. Do not use.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static Icon createWithResource(Resources res, @DrawableRes int resId) {
         if (res == null) {
             throw new IllegalArgumentException("Resource must not be null.");
@@ -769,7 +769,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean hasTint() {
         return (mTintList != null) || (mBlendMode != DEFAULT_BLEND_MODE);
     }
diff --git a/graphics/java/android/graphics/drawable/InsetDrawable.java b/graphics/java/android/graphics/drawable/InsetDrawable.java
index 005a4d1..87c0a06 100644
--- a/graphics/java/android/graphics/drawable/InsetDrawable.java
+++ b/graphics/java/android/graphics/drawable/InsetDrawable.java
@@ -27,6 +27,7 @@
 import android.graphics.Outline;
 import android.graphics.PixelFormat;
 import android.graphics.Rect;
+import android.os.Build;
 import android.util.AttributeSet;
 import android.util.DisplayMetrics;
 import android.util.TypedValue;
@@ -58,7 +59,7 @@
     private final Rect mTmpRect = new Rect();
     private final Rect mTmpInsetRect = new Rect();
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private InsetState mState;
 
     /**
diff --git a/graphics/java/android/graphics/drawable/LayerDrawable.java b/graphics/java/android/graphics/drawable/LayerDrawable.java
index fb4146f..3288bc8 100644
--- a/graphics/java/android/graphics/drawable/LayerDrawable.java
+++ b/graphics/java/android/graphics/drawable/LayerDrawable.java
@@ -30,6 +30,7 @@
 import android.graphics.Outline;
 import android.graphics.PixelFormat;
 import android.graphics.Rect;
+import android.os.Build;
 import android.util.AttributeSet;
 import android.util.DisplayMetrics;
 import android.util.LayoutDirection;
@@ -434,7 +435,7 @@
      * @param layer The layer to add.
      * @return The index of the layer.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     int addLayer(@NonNull ChildDrawable layer) {
         final LayerState st = mLayerState;
         final int N = st.mChildren != null ? st.mChildren.length : 0;
diff --git a/graphics/java/android/graphics/drawable/RippleDrawable.java b/graphics/java/android/graphics/drawable/RippleDrawable.java
index e5e4d45..635f6c6 100644
--- a/graphics/java/android/graphics/drawable/RippleDrawable.java
+++ b/graphics/java/android/graphics/drawable/RippleDrawable.java
@@ -36,6 +36,7 @@
 import android.graphics.PorterDuffColorFilter;
 import android.graphics.Rect;
 import android.graphics.Shader;
+import android.os.Build;
 import android.util.AttributeSet;
 
 import com.android.internal.R;
@@ -121,7 +122,7 @@
     private final Rect mDirtyBounds = new Rect();
 
     /** Mirrors mLayerState with some extra information. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private RippleState mState;
 
     /** The masking layer, e.g. the layer with id R.id.mask. */
@@ -159,7 +160,7 @@
     private Paint mRipplePaint;
 
     /** Target density of the display into which ripples are drawn. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mDensity;
 
     /** Whether bounds are being overridden. */
@@ -980,7 +981,7 @@
 
     static class RippleState extends LayerState {
         int[] mTouchThemeAttrs;
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         ColorStateList mColor = ColorStateList.valueOf(Color.MAGENTA);
         int mMaxRadius = RADIUS_AUTO;
 
diff --git a/graphics/java/android/graphics/drawable/ScaleDrawable.java b/graphics/java/android/graphics/drawable/ScaleDrawable.java
index af7eed4..7e246e5 100644
--- a/graphics/java/android/graphics/drawable/ScaleDrawable.java
+++ b/graphics/java/android/graphics/drawable/ScaleDrawable.java
@@ -25,6 +25,7 @@
 import android.graphics.Canvas;
 import android.graphics.PixelFormat;
 import android.graphics.Rect;
+import android.os.Build;
 import android.util.AttributeSet;
 import android.util.TypedValue;
 import android.view.Gravity;
@@ -67,7 +68,7 @@
 
     private final Rect mTmpRect = new Rect();
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private ScaleState mState;
 
     ScaleDrawable() {
diff --git a/graphics/java/android/graphics/drawable/StateListDrawable.java b/graphics/java/android/graphics/drawable/StateListDrawable.java
index 2920acb..16691d4 100644
--- a/graphics/java/android/graphics/drawable/StateListDrawable.java
+++ b/graphics/java/android/graphics/drawable/StateListDrawable.java
@@ -22,6 +22,7 @@
 import android.content.res.Resources;
 import android.content.res.Resources.Theme;
 import android.content.res.TypedArray;
+import android.os.Build;
 import android.util.AttributeSet;
 import android.util.StateSet;
 
@@ -131,7 +132,7 @@
     /**
      * Updates the constant state from the values in the typed array.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void updateStateFromTypedArray(TypedArray a) {
         final StateListState state = mStateListState;
 
@@ -209,7 +210,7 @@
      * @param attrs The attribute set.
      * @return An array of state_ attributes.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     int[] extractStateSet(AttributeSet attrs) {
         int j = 0;
         final int numAttrs = attrs.getAttributeCount();
diff --git a/graphics/java/android/graphics/drawable/VectorDrawable.java b/graphics/java/android/graphics/drawable/VectorDrawable.java
index e6fa866..db945a1 100644
--- a/graphics/java/android/graphics/drawable/VectorDrawable.java
+++ b/graphics/java/android/graphics/drawable/VectorDrawable.java
@@ -34,6 +34,7 @@
 import android.graphics.PorterDuffColorFilter;
 import android.graphics.Rect;
 import android.graphics.Shader;
+import android.os.Build;
 import android.os.Trace;
 import android.util.ArrayMap;
 import android.util.AttributeSet;
@@ -324,7 +325,7 @@
 
     private VectorDrawableState mVectorState;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private PorterDuffColorFilter mTintFilter;
 
     private BlendModeColorFilter mBlendModeColorFilter;
diff --git a/graphics/java/android/graphics/fonts/FontVariationAxis.java b/graphics/java/android/graphics/fonts/FontVariationAxis.java
index 4e6580e..7bd5817 100644
--- a/graphics/java/android/graphics/fonts/FontVariationAxis.java
+++ b/graphics/java/android/graphics/fonts/FontVariationAxis.java
@@ -33,7 +33,7 @@
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
     private final int mTag;
     private final String mTagString;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final float mStyleValue;
 
     /**
diff --git a/graphics/java/android/graphics/pdf/PdfRenderer.java b/graphics/java/android/graphics/pdf/PdfRenderer.java
index 54710e5..720d573 100644
--- a/graphics/java/android/graphics/pdf/PdfRenderer.java
+++ b/graphics/java/android/graphics/pdf/PdfRenderer.java
@@ -25,6 +25,7 @@
 import android.graphics.Matrix;
 import android.graphics.Point;
 import android.graphics.Rect;
+import android.os.Build;
 import android.os.ParcelFileDescriptor;
 import android.system.ErrnoException;
 import android.system.Os;
@@ -121,7 +122,7 @@
 
     private ParcelFileDescriptor mInput;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private Page mCurrentPage;
 
     /** @hide */
@@ -246,7 +247,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void doClose() {
         if (mCurrentPage != null) {
             mCurrentPage.close();
diff --git a/graphics/proto/Android.bp b/graphics/proto/Android.bp
index ddced59..ea79b73 100644
--- a/graphics/proto/Android.bp
+++ b/graphics/proto/Android.bp
@@ -1,10 +1,10 @@
 java_library_static {
-    name: "game-driver-protos",
+    name: "updatable-driver-protos",
     host_supported: true,
     proto: {
         type: "lite",
     },
-    srcs: ["game_driver.proto"],
+    srcs: ["updatable_driver.proto"],
     jarjar_rules: "jarjar-rules.txt",
-    sdk_version: "28",
+    sdk_version: "30",
 }
diff --git a/graphics/proto/game_driver.proto b/graphics/proto/game_driver.proto
deleted file mode 100644
index fd7ffcc..0000000
--- a/graphics/proto/game_driver.proto
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto2";
-
-package android.gamedriver;
-
-option java_package = "android.gamedriver";
-option java_outer_classname = "GameDriverProto";
-
-message Blacklist {
-    optional int64 version_code = 1;
-    repeated string package_names = 2;
-}
-
-message Blacklists {
-    repeated Blacklist blacklists = 1;
-}
diff --git a/graphics/proto/updatable_driver.proto b/graphics/proto/updatable_driver.proto
new file mode 100644
index 0000000..cbc9424
--- /dev/null
+++ b/graphics/proto/updatable_driver.proto
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package android.updatabledriver;
+
+option java_package = "android.updatabledriver";
+option java_outer_classname = "UpdatableDriverProto";
+
+message Denylist {
+    optional int64 version_code = 1;
+    repeated string package_names = 2;
+}
+
+message Denylists {
+    repeated Denylist denylists = 1;
+}
diff --git a/keystore/java/android/security/CheckedRemoteRequest.java b/keystore/java/android/security/CheckedRemoteRequest.java
new file mode 100644
index 0000000..b6e7c1f
--- /dev/null
+++ b/keystore/java/android/security/CheckedRemoteRequest.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security;
+
+import android.os.RemoteException;
+
+/**
+ * This is a Producer of {@code R} that is expected to throw a {@link RemoteException}.
+ *
+ * It is used by Keystore2 service wrappers to handle and convert {@link RemoteException}
+ * and {@link android.os.ServiceSpecificException} into {@link KeyStoreException}.
+ *
+ * @hide
+ * @param <R>
+ */
+@FunctionalInterface
+interface CheckedRemoteRequest<R> {
+    R execute() throws RemoteException;
+}
diff --git a/keystore/java/android/security/Credentials.java b/keystore/java/android/security/Credentials.java
index f53a7dc..7abcfdc 100644
--- a/keystore/java/android/security/Credentials.java
+++ b/keystore/java/android/security/Credentials.java
@@ -17,6 +17,7 @@
 package android.security;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 import com.android.org.bouncycastle.util.io.pem.PemObject;
 import com.android.org.bouncycastle.util.io.pem.PemReader;
@@ -48,18 +49,38 @@
 
     public static final String INSTALL_AS_USER_ACTION = "android.credentials.INSTALL_AS_USER";
 
-    /** Key prefix for CA certificates. */
+    /**
+     * Key prefix for CA certificates.
+     *
+     * @deprecated Keystore no longer supports unstructured blobs. Public certificates are
+     *             stored in typed slots associated with a given alias.
+     */
+    @Deprecated
     public static final String CA_CERTIFICATE = "CACERT_";
 
-    /** Key prefix for user certificates. */
+    /**
+     * Key prefix for user certificates.
+     *
+     * @deprecated Keystore no longer supports unstructured blobs. Public certificates are
+     *             stored in typed slots associated with a given alias.
+     */
+    @Deprecated
     public static final String USER_CERTIFICATE = "USRCERT_";
 
-    /** Key prefix for user private and secret keys. */
+    /**
+     * Key prefix for user private and secret keys.
+     *
+     * @deprecated Keystore no longer uses alias prefixes to discriminate between entry types.
+     */
+    @Deprecated
     public static final String USER_PRIVATE_KEY = "USRPKEY_";
 
-    /** Key prefix for user secret keys.
-     *  @deprecated use {@code USER_PRIVATE_KEY} for this category instead.
+    /**
+     * Key prefix for user secret keys.
+     *
+     * @deprecated use {@code USER_PRIVATE_KEY} for this category instead.
      */
+    @Deprecated
     public static final String USER_SECRET_KEY = "USRSKEY_";
 
     /** Key prefix for VPN. */
@@ -71,7 +92,13 @@
     /** Key prefix for WIFI. */
     public static final String WIFI = "WIFI_";
 
-    /** Key prefix for App Source certificates. */
+    /**
+     * Key prefix for App Source certificates.
+     *
+     * @deprecated This was intended for FS-verity but never used. FS-verity is not
+     *             going to use this constant moving forward.
+     */
+    @Deprecated
     public static final String APP_SOURCE_CERTIFICATE = "FSV_";
 
     /** Key containing suffix of lockdown VPN profile. */
@@ -137,7 +164,7 @@
      * Convert objects to a PEM format which is used for
      * CA_CERTIFICATE and USER_CERTIFICATE entries.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static byte[] convertToPem(Certificate... objects)
             throws IOException, CertificateEncodingException {
         ByteArrayOutputStream bao = new ByteArrayOutputStream();
@@ -149,6 +176,7 @@
         pw.close();
         return bao.toByteArray();
     }
+
     /**
      * Convert objects from PEM format, which is used for
      * CA_CERTIFICATE and USER_CERTIFICATE entries.
@@ -166,7 +194,8 @@
             PemObject o;
             while ((o = pr.readPemObject()) != null) {
                 if (o.getType().equals("CERTIFICATE")) {
-                    Certificate c = cf.generateCertificate(new ByteArrayInputStream(o.getContent()));
+                    Certificate c = cf.generateCertificate(
+                            new ByteArrayInputStream(o.getContent()));
                     result.add((X509Certificate) c);
                 } else {
                     throw new IllegalArgumentException("Unknown type " + o.getType());
diff --git a/keystore/java/android/security/KeyPairGeneratorSpec.java b/keystore/java/android/security/KeyPairGeneratorSpec.java
index d5b34c4..1c1c2ee 100644
--- a/keystore/java/android/security/KeyPairGeneratorSpec.java
+++ b/keystore/java/android/security/KeyPairGeneratorSpec.java
@@ -16,9 +16,9 @@
 
 package android.security;
 
-import android.app.KeyguardManager;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.app.KeyguardManager;
 import android.content.Context;
 import android.security.keystore.KeyGenParameterSpec;
 import android.security.keystore.KeyProperties;
@@ -78,8 +78,6 @@
 
     private final Date mEndDate;
 
-    private final int mFlags;
-
     /**
      * Parameter specification for the "{@code AndroidKeyPairGenerator}"
      * instance of the {@link java.security.KeyPairGenerator} API. The
@@ -144,7 +142,6 @@
         mSerialNumber = serialNumber;
         mStartDate = startDate;
         mEndDate = endDate;
-        mFlags = flags;
     }
 
     /**
@@ -229,7 +226,7 @@
      * @hide
      */
     public int getFlags() {
-        return mFlags;
+        return 0;
     }
 
     /**
@@ -243,9 +240,15 @@
      * screen after boot.
      *
      * @see KeyguardManager#isDeviceSecure()
+     *
+     * @deprecated Encryption at rest is on by default. If extra binding to the lockscreen screen
+     *             credential is desired use
+     *             {@link KeyGenParameterSpec.Builder#setUserAuthenticationRequired(boolean)}.
+     *             This flag will be ignored from Android S.
      */
+    @Deprecated
     public boolean isEncryptionRequired() {
-        return (mFlags & KeyStore.FLAG_ENCRYPTED) != 0;
+        return false;
     }
 
     /**
@@ -292,8 +295,6 @@
 
         private Date mEndDate;
 
-        private int mFlags;
-
         /**
          * Creates a new instance of the {@code Builder} with the given
          * {@code context}. The {@code context} passed in may be used to pop up
@@ -431,10 +432,15 @@
          * secure lock screen after boot.
          *
          * @see KeyguardManager#isDeviceSecure()
+         *
+         * @deprecated Data at rest encryption is enabled by default. If extra binding to the
+         *             lockscreen credential is desired, use
+         *             {@link KeyGenParameterSpec.Builder#setUserAuthenticationRequired(boolean)}.
+         *             This flag will be ignored from Android S.
          */
         @NonNull
+        @Deprecated
         public Builder setEncryptionRequired() {
-            mFlags |= KeyStore.FLAG_ENCRYPTED;
             return this;
         }
 
@@ -455,7 +461,7 @@
                     mSerialNumber,
                     mStartDate,
                     mEndDate,
-                    mFlags);
+                    0);
         }
     }
 }
diff --git a/keystore/java/android/security/KeyStore.java b/keystore/java/android/security/KeyStore.java
index 88b614d..c70c986 100644
--- a/keystore/java/android/security/KeyStore.java
+++ b/keystore/java/android/security/KeyStore.java
@@ -71,7 +71,7 @@
     private static final String TAG = "KeyStore";
 
     // ResponseCodes - see system/security/keystore/include/keystore/keystore.h
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int NO_ERROR = 1;
     public static final int LOCKED = 2;
     public static final int UNINITIALIZED = 3;
@@ -191,7 +191,7 @@
         return mToken;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public State state(int userId) {
         final int ret;
         try {
@@ -222,7 +222,7 @@
         return get(key, uid, false);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public byte[] get(String key) {
         return get(key, UID_SELF);
     }
@@ -282,7 +282,7 @@
         return ret == NO_ERROR || ret == KEY_NOT_FOUND;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean delete(String key) {
         return delete(key, UID_SELF);
     }
@@ -319,7 +319,7 @@
      * List uids of all keys that are auth bound to the current user.
      * Only system is allowed to call this method.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int[] listUidsOfAuthBoundKeys() {
         // uids are returned as a list of strings because list of integers
         // as an output parameter is not supported by aidl-cpp.
@@ -386,7 +386,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean unlock(String password) {
         return unlock(UserHandle.getUserId(Process.myUid()), password);
     }
@@ -1262,7 +1262,7 @@
      * Returns a {@link KeyStoreException} corresponding to the provided keystore/keymaster error
      * code.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static KeyStoreException getKeyStoreException(int errorCode) {
         if (errorCode > 0) {
             // KeyStore layer error
diff --git a/keystore/java/android/security/KeyStore2.java b/keystore/java/android/security/KeyStore2.java
new file mode 100644
index 0000000..92d87aa
--- /dev/null
+++ b/keystore/java/android/security/KeyStore2.java
@@ -0,0 +1,277 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security;
+
+import android.annotation.NonNull;
+import android.compat.annotation.ChangeId;
+import android.compat.annotation.EnabledAfter;
+import android.os.Build;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.os.ServiceSpecificException;
+import android.system.keystore2.IKeystoreService;
+import android.system.keystore2.KeyDescriptor;
+import android.system.keystore2.KeyEntryResponse;
+import android.system.keystore2.ResponseCode;
+import android.util.Log;
+
+import java.util.Calendar;
+
+/**
+ * @hide This should not be made public in its present form because it
+ * assumes that private and secret key bytes are available and would
+ * preclude the use of hardware crypto.
+ */
+public class KeyStore2 {
+    private static final String TAG = "KeyStore";
+
+    private static final int RECOVERY_GRACE_PERIOD_MS = 50;
+
+    /**
+     * Keystore operation creation may fail
+     *
+     * Keystore used to work under the assumption that the creation of cryptographic operations
+     * always succeeds. However, the KeyMint backend has only a limited number of operation slots.
+     * In order to keep up the appearance of "infinite" operation slots, the Keystore daemon
+     * would prune least recently used operations if there is no available operation slot.
+     * As a result, good operations could be terminated prematurely.
+     *
+     * This opens AndroidKeystore up to denial-of-service and unintended livelock situations.
+     * E.g.: if multiple apps wake up at the same time, e.g., due to power management optimizations,
+     * and attempt to perform crypto operations, they start terminating each others operations
+     * without making any progress.
+     *
+     * To break out of livelocks and to discourage DoS attempts we have changed the pruning
+     * strategy such that it prefers clients that use few operation slots and only briefly.
+     * As a result we can, almost, guarantee that single operations that don't linger inactive
+     * for more than 5 seconds will conclude unhampered by the pruning strategy. "Almost",
+     * because there are operations related to file system encryption that can prune even
+     * these operations, but those are extremely rare.
+     *
+     * As a side effect of this new pruning strategy operation creation can now fail if the
+     * client has a lower pruning power than all of the existing operations.
+     *
+     * Pruning strategy
+     *
+     * To find a suitable candidate we compute the malus for the caller and each existing
+     * operation. The malus is the inverse of the pruning power (caller) or pruning
+     * resistance (existing operation). For the caller to be able to prune an operation it must
+     * find an operation with a malus higher than its own.
+     *
+     * For more detail on the pruning strategy consult the implementation at
+     * https://android.googlesource.com/platform/system/security/+/refs/heads/master/keystore2/src/operation.rs
+     *
+     * For older SDK version, KeyStore2 will poll the Keystore daemon for a free operation
+     * slot. So to applications, targeting earlier SDK versions, it will still look like cipher and
+     * signature object initialization always succeeds, however, it may take longer to get an
+     * operation.
+     *
+     * All SDK version benefit from fairer operation slot scheduling and a better chance to
+     * successfully conclude an operation.
+     */
+    @ChangeId
+    @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.R)
+    static final long KEYSTORE_OPERATION_CREATION_MAY_FAIL = 169897160L;
+
+    // Never use mBinder directly, use KeyStore2.getService() instead or better yet
+    // handleRemoteExceptionWithRetry which retries connecting to Keystore once in case
+    // of a remote exception.
+    private IKeystoreService mBinder;
+
+
+    @FunctionalInterface
+    interface CheckedRemoteRequest<R> {
+        R execute(IKeystoreService service) throws RemoteException;
+    }
+
+    private <R> R handleRemoteExceptionWithRetry(@NonNull CheckedRemoteRequest<R> request)
+            throws KeyStoreException {
+        IKeystoreService service = getService(false /* retryLookup */);
+        boolean firstTry = true;
+        while (true) {
+            try {
+                return request.execute(service);
+            } catch (ServiceSpecificException e) {
+                Log.e(TAG, "KeyStore exception", e);
+                throw new KeyStoreException(e.errorCode, "");
+            } catch (RemoteException e) {
+                if (firstTry) {
+                    Log.w(TAG, "Looks like we may have lost connection to the Keystore "
+                            + "daemon.");
+                    Log.w(TAG, "Retrying after giving Keystore "
+                            + RECOVERY_GRACE_PERIOD_MS + "ms to recover.");
+                    interruptedPreservingSleep(RECOVERY_GRACE_PERIOD_MS);
+                    service = getService(true /* retry Lookup */);
+                    firstTry = false;
+                } else {
+                    Log.e(TAG, "Cannot connect to Keystore daemon.", e);
+                    throw new KeyStoreException(ResponseCode.SYSTEM_ERROR, "");
+                }
+            }
+        }
+    }
+
+
+    private KeyStore2() {
+        mBinder = null;
+    }
+
+    public static KeyStore2 getInstance() {
+        return new KeyStore2();
+    }
+
+    private synchronized IKeystoreService getService(boolean retryLookup) {
+        if (mBinder == null || retryLookup) {
+            mBinder = IKeystoreService.Stub.asInterface(ServiceManager
+                    .getService("android.system.keystore2"));
+        }
+        return mBinder;
+    }
+
+    void delete(KeyDescriptor descriptor) throws KeyStoreException {
+        handleRemoteExceptionWithRetry((service) -> {
+            service.deleteKey(descriptor);
+            return 0;
+        });
+    }
+
+    /**
+     * List all entries in the keystore for in the given namespace.
+     */
+    public KeyDescriptor[] list(int domain, long namespace) throws KeyStoreException {
+        return handleRemoteExceptionWithRetry((service) -> service.listEntries(domain, namespace));
+    }
+
+    /**
+     * Create a grant that allows the grantee identified by {@code granteeUid} to use
+     * the key specified by {@code descriptor} withint the restrictions given by
+     * {@code accessVectore}.
+     * @see IKeystoreService#grant(KeyDescriptor, int, int) for more details.
+     * @param descriptor
+     * @param granteeUid
+     * @param accessVector
+     * @return
+     * @throws KeyStoreException
+     * @hide
+     */
+    public KeyDescriptor grant(KeyDescriptor descriptor, int granteeUid, int accessVector)
+            throws  KeyStoreException {
+        return handleRemoteExceptionWithRetry(
+                (service) -> service.grant(descriptor, granteeUid, accessVector)
+        );
+    }
+
+    /**
+     * Destroys a grant.
+     * @see IKeystoreService#ungrant(KeyDescriptor, int) for more details.
+     * @param descriptor
+     * @param granteeUid
+     * @throws KeyStoreException
+     * @hide
+     */
+    public void ungrant(KeyDescriptor descriptor, int granteeUid)
+            throws KeyStoreException {
+        handleRemoteExceptionWithRetry((service) -> {
+            service.ungrant(descriptor, granteeUid);
+            return 0;
+        });
+    }
+
+    /**
+     * Retrieves a key entry from the keystore backend.
+     * @see IKeystoreService#getKeyEntry(KeyDescriptor) for more details.
+     * @param descriptor
+     * @return
+     * @throws KeyStoreException
+     * @hide
+     */
+    public KeyEntryResponse getKeyEntry(@NonNull KeyDescriptor descriptor)
+            throws KeyStoreException {
+        return handleRemoteExceptionWithRetry((service) -> service.getKeyEntry(descriptor));
+    }
+
+    /**
+     * Get the security level specific keystore interface from the keystore daemon.
+     * @see IKeystoreService#getSecurityLevel(int) for more details.
+     * @param securityLevel
+     * @return
+     * @throws KeyStoreException
+     * @hide
+     */
+    public KeyStoreSecurityLevel getSecurityLevel(int securityLevel)
+            throws KeyStoreException {
+        return handleRemoteExceptionWithRetry((service) ->
+            new KeyStoreSecurityLevel(
+                    service.getSecurityLevel(securityLevel)
+            )
+        );
+    }
+
+    /**
+     * Update the subcomponents of a key entry designated by the key descriptor.
+     * @see IKeystoreService#updateSubcomponent(KeyDescriptor, byte[], byte[]) for more details.
+     * @param key
+     * @param publicCert
+     * @param publicCertChain
+     * @throws KeyStoreException
+     * @hide
+     */
+    public void updateSubcomponents(@NonNull KeyDescriptor key, byte[] publicCert,
+            byte[] publicCertChain) throws KeyStoreException {
+        handleRemoteExceptionWithRetry((service) -> {
+            service.updateSubcomponent(key, publicCert, publicCertChain);
+            return 0;
+        });
+    }
+
+    /**
+     * Delete the key designed by the key descriptor.
+     * @see IKeystoreService#deleteKey(KeyDescriptor) for more details.
+     * @param descriptor
+     * @throws KeyStoreException
+     * @hide
+     */
+    public void deleteKey(@NonNull KeyDescriptor descriptor)
+            throws KeyStoreException {
+        handleRemoteExceptionWithRetry((service) -> {
+            service.deleteKey(descriptor);
+            return 0;
+        });
+    }
+
+    protected static void interruptedPreservingSleep(long millis) {
+        boolean wasInterrupted = false;
+        Calendar calendar = Calendar.getInstance();
+        long target = calendar.getTimeInMillis() + millis;
+        while (true) {
+            try {
+                Thread.sleep(target - calendar.getTimeInMillis());
+                break;
+            } catch (InterruptedException e) {
+                wasInterrupted = true;
+            } catch (IllegalArgumentException e) {
+                // This means that the argument to sleep was negative.
+                // So we are done sleeping.
+                break;
+            }
+        }
+        if (wasInterrupted) {
+            Thread.currentThread().interrupt();
+        }
+    }
+
+}
diff --git a/keystore/java/android/security/KeyStoreOperation.java b/keystore/java/android/security/KeyStoreOperation.java
new file mode 100644
index 0000000..49a4887
--- /dev/null
+++ b/keystore/java/android/security/KeyStoreOperation.java
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security;
+
+import android.annotation.NonNull;
+import android.hardware.keymint.KeyParameter;
+import android.os.RemoteException;
+import android.os.ServiceSpecificException;
+import android.security.keymaster.KeymasterDefs;
+import android.system.keystore2.IKeystoreOperation;
+import android.system.keystore2.ResponseCode;
+import android.util.Log;
+
+/**
+ * @hide
+ */
+public class KeyStoreOperation {
+    static final String TAG = "KeyStoreOperation";
+    private final IKeystoreOperation mOperation;
+    private final Long mChallenge;
+    private final KeyParameter[] mParameters;
+
+    public KeyStoreOperation(
+            @NonNull IKeystoreOperation operation,
+            Long challenge,
+            KeyParameter[] parameters
+    ) {
+        this.mOperation = operation;
+        this.mChallenge = challenge;
+        this.mParameters = parameters;
+    }
+
+    /**
+     * Gets the challenge associated with this operation.
+     * @return null if the operation does not required authorization. A 64bit operation
+     *         challenge otherwise.
+     */
+    public Long getChallenge() {
+        return mChallenge;
+    }
+
+    /**
+     * Gets the parameters associated with this operation.
+     * @return
+     */
+    public KeyParameter[] getParameters() {
+        return mParameters;
+    }
+
+    private <R> R handleExceptions(@NonNull CheckedRemoteRequest<R> request)
+            throws KeyStoreException {
+        try {
+            return request.execute();
+        } catch (ServiceSpecificException e) {
+            switch(e.errorCode) {
+                case ResponseCode.OPERATION_BUSY: {
+                    throw new IllegalThreadStateException(
+                            "Cannot update the same operation concurrently."
+                    );
+                }
+                default:
+                    // TODO Human readable string. Use something like KeyStore.getKeyStoreException
+                    throw new KeyStoreException(e.errorCode, "");
+            }
+        } catch (RemoteException e) {
+            // Log exception and report invalid operation handle.
+            // This should prompt the caller drop the reference to this operation and retry.
+            Log.e(
+                    TAG,
+                    "Remote exception while advancing a KeyStoreOperation.",
+                    e
+            );
+            throw new KeyStoreException(KeymasterDefs.KM_ERROR_INVALID_OPERATION_HANDLE, "");
+        }
+    }
+
+    /**
+     * Updates the Keystore operation represented by this object with more associated data.
+     * @see IKeystoreOperation#updateAad(byte[]) for more details.
+     * @param input
+     * @throws KeyStoreException
+     */
+    public void updateAad(@NonNull byte[] input) throws KeyStoreException {
+        handleExceptions(() -> {
+            mOperation.updateAad(input);
+            return 0;
+        });
+    }
+
+    /**
+     * Updates the Keystore operation represented by this object.
+     * @see IKeystoreOperation#update(byte[]) for more details.
+     * @param input
+     * @return
+     * @throws KeyStoreException
+     * @hide
+     */
+    public byte[] update(@NonNull byte[] input) throws KeyStoreException {
+        return handleExceptions(() -> mOperation.update(input));
+    }
+
+    /**
+     * Finalizes the Keystore operation represented by this object.
+     * @see IKeystoreOperation#finish(byte[], byte[]) for more details.
+     * @param input
+     * @param signature
+     * @return
+     * @throws KeyStoreException
+     * @hide
+     */
+    public byte[] finish(byte[] input, byte[] signature) throws KeyStoreException {
+        return handleExceptions(() -> mOperation.finish(input, signature));
+    }
+
+    /**
+     * Aborts the Keystore operation represented by this object.
+     * @see IKeystoreOperation#abort() for more details.
+     * @throws KeyStoreException
+     * @hide
+     */
+    public void abort() throws KeyStoreException {
+        handleExceptions(() -> {
+            mOperation.abort();
+            return 0;
+        });
+    }
+}
diff --git a/keystore/java/android/security/KeyStoreParameter.java b/keystore/java/android/security/KeyStoreParameter.java
index 66c87ed..51d29b1 100644
--- a/keystore/java/android/security/KeyStoreParameter.java
+++ b/keystore/java/android/security/KeyStoreParameter.java
@@ -48,18 +48,16 @@
  */
 @Deprecated
 public final class KeyStoreParameter implements ProtectionParameter {
-    private final int mFlags;
 
     private KeyStoreParameter(
             int flags) {
-        mFlags = flags;
     }
 
     /**
      * @hide
      */
     public int getFlags() {
-        return mFlags;
+        return 0;
     }
 
     /**
@@ -74,9 +72,16 @@
      * screen after boot.
      *
      * @see KeyguardManager#isDeviceSecure()
+     *
+     * @deprecated Data at rest encryption is enabled by default. If extra binding to the
+     *             lockscreen credential is desired, use
+     *             {@link android.security.keystore.KeyGenParameterSpec
+     *             .Builder#setUserAuthenticationRequired(boolean)}.
+     *             This flag will be ignored from Android S.
      */
+    @Deprecated
     public boolean isEncryptionRequired() {
-        return (mFlags & KeyStore.FLAG_ENCRYPTED) != 0;
+        return false;
     }
 
     /**
@@ -100,7 +105,6 @@
      */
     @Deprecated
     public final static class Builder {
-        private int mFlags;
 
         /**
          * Creates a new instance of the {@code Builder} with the given
@@ -126,14 +130,15 @@
          * the user unlocks the secure lock screen after boot.
          *
          * @see KeyguardManager#isDeviceSecure()
+         *
+         * @deprecated Data at rest encryption is enabled by default. If extra binding to the
+         *             lockscreen credential is desired, use
+         *             {@link android.security.keystore.KeyGenParameterSpec
+         *             .Builder#setUserAuthenticationRequired(boolean)}.
+         *             This flag will be ignored from Android S.
          */
         @NonNull
         public Builder setEncryptionRequired(boolean required) {
-            if (required) {
-                mFlags |= KeyStore.FLAG_ENCRYPTED;
-            } else {
-                mFlags &= ~KeyStore.FLAG_ENCRYPTED;
-            }
             return this;
         }
 
@@ -145,8 +150,7 @@
          */
         @NonNull
         public KeyStoreParameter build() {
-            return new KeyStoreParameter(
-                    mFlags);
+            return new KeyStoreParameter(0 /* flags */);
         }
     }
 }
diff --git a/keystore/java/android/security/KeyStoreSecurityLevel.java b/keystore/java/android/security/KeyStoreSecurityLevel.java
new file mode 100644
index 0000000..7c3de8b
--- /dev/null
+++ b/keystore/java/android/security/KeyStoreSecurityLevel.java
@@ -0,0 +1,217 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security;
+
+import android.annotation.NonNull;
+import android.app.compat.CompatChanges;
+import android.hardware.keymint.KeyParameter;
+import android.os.RemoteException;
+import android.os.ServiceSpecificException;
+import android.security.keystore.BackendBusyException;
+import android.security.keystore.KeyStoreConnectException;
+import android.system.keystore2.AuthenticatorSpec;
+import android.system.keystore2.CreateOperationResponse;
+import android.system.keystore2.IKeystoreSecurityLevel;
+import android.system.keystore2.KeyDescriptor;
+import android.system.keystore2.KeyMetadata;
+import android.system.keystore2.ResponseCode;
+import android.util.Log;
+
+import java.util.Calendar;
+import java.util.Collection;
+
+/**
+ * This is a shim around the security level specific interface of Keystore 2.0. Services with
+ * this interface are instantiated per KeyMint backend, each having there own security level.
+ * Thus this object representation of a security level.
+ * @hide
+ */
+public class KeyStoreSecurityLevel {
+    private static final String TAG = "KeyStoreSecurityLevel";
+    private final IKeystoreSecurityLevel mSecurityLevel;
+
+    public KeyStoreSecurityLevel(IKeystoreSecurityLevel securityLevel) {
+        this.mSecurityLevel = securityLevel;
+    }
+
+    private <R> R handleExceptions(CheckedRemoteRequest<R> request) throws KeyStoreException {
+        try {
+            return request.execute();
+        } catch (ServiceSpecificException e) {
+            throw new KeyStoreException(e.errorCode, "");
+        } catch (RemoteException e) {
+            // Log exception and report invalid operation handle.
+            // This should prompt the caller drop the reference to this operation and retry.
+            Log.e(TAG, "Could not connect to Keystore.", e);
+            throw new KeyStoreException(ResponseCode.SYSTEM_ERROR, "");
+        }
+    }
+
+    /**
+     * Creates a new keystore operation.
+     * @see IKeystoreSecurityLevel#createOperation(KeyDescriptor, KeyParameter[], boolean) for more
+     * details.
+     * @param keyDescriptor
+     * @param args
+     * @return
+     * @throws KeyStoreException
+     * @hide
+     */
+    public KeyStoreOperation createOperation(@NonNull KeyDescriptor keyDescriptor,
+            Collection<KeyParameter> args) throws KeyStoreException {
+        while (true) {
+            try {
+                CreateOperationResponse createOperationResponse =
+                        mSecurityLevel.createOperation(
+                                keyDescriptor,
+                                args.toArray(new KeyParameter[args.size()]),
+                                false /* forced */
+                        );
+                Long challenge = null;
+                if (createOperationResponse.operationChallenge != null) {
+                    challenge = createOperationResponse.operationChallenge.challenge;
+                }
+                KeyParameter[] parameters = null;
+                if (createOperationResponse.parameters != null) {
+                    parameters = createOperationResponse.parameters.keyParameter;
+                }
+                return new KeyStoreOperation(
+                        createOperationResponse.iOperation,
+                        challenge,
+                        parameters);
+            } catch (ServiceSpecificException e) {
+                switch (e.errorCode) {
+                    case ResponseCode.BACKEND_BUSY: {
+                        if (CompatChanges.isChangeEnabled(
+                                KeyStore2.KEYSTORE_OPERATION_CREATION_MAY_FAIL)) {
+                            // Starting with Android S we inform the caller about the
+                            // backend being busy.
+                            throw new BackendBusyException();
+                        } else {
+                            // Before Android S operation creation must always succeed. So we
+                            // just have to retry. We do so with a randomized back-off between
+                            // 50 and 250ms.
+                            // It is a little awkward that we cannot break out of this loop
+                            // by interrupting this thread. But that is the expected behavior.
+                            // There is some comfort in the fact that interrupting a thread
+                            // also does not unblock a thread waiting for a binder transaction.
+                            interruptedPreservingSleep((long) (Math.random() * 200 + 50));
+                        }
+                        break;
+                    }
+                    default:
+                        throw new KeyStoreException(e.errorCode, "");
+                }
+            } catch (RemoteException e) {
+                Log.w(TAG, "Cannot connect to keystore", e);
+                throw new KeyStoreConnectException();
+            }
+        }
+    }
+
+    /**
+     * Generates a new key in Keystore.
+     * @see IKeystoreSecurityLevel#generateKey(KeyDescriptor, KeyDescriptor, KeyParameter[], int,
+     * byte[]) for more details.
+     * @param descriptor
+     * @param attestationKey
+     * @param args
+     * @param flags
+     * @param entropy
+     * @return
+     * @throws KeyStoreException
+     * @hide
+     */
+    public KeyMetadata generateKey(@NonNull KeyDescriptor descriptor, KeyDescriptor attestationKey,
+            Collection<KeyParameter> args, int flags, byte[] entropy)
+            throws KeyStoreException {
+        return handleExceptions(() -> mSecurityLevel.generateKey(
+                descriptor, attestationKey, args.toArray(new KeyParameter[args.size()]),
+                flags, entropy));
+    }
+
+    /**
+     * Imports a key into Keystore.
+     * @see IKeystoreSecurityLevel#importKey(KeyDescriptor, KeyDescriptor, KeyParameter[], int,
+     * byte[]) for more details.
+     * @param descriptor
+     * @param attestationKey
+     * @param args
+     * @param flags
+     * @param keyData
+     * @return
+     * @throws KeyStoreException
+     * @hide
+     */
+    public KeyMetadata importKey(KeyDescriptor descriptor, KeyDescriptor attestationKey,
+            Collection<KeyParameter> args, int flags, byte[] keyData)
+            throws KeyStoreException {
+        return handleExceptions(() -> mSecurityLevel.importKey(descriptor, attestationKey,
+                args.toArray(new KeyParameter[args.size()]), flags, keyData));
+    }
+
+    /**
+     * Imports a wrapped key into Keystore.
+     * @see IKeystoreSecurityLevel#importWrappedKey(KeyDescriptor, KeyDescriptor, byte[],
+     * KeyParameter[], AuthenticatorSpec[]) for more details.
+     * @param wrappedKeyDescriptor
+     * @param wrappingKeyDescriptor
+     * @param wrappedKey
+     * @param maskingKey
+     * @param args
+     * @param authenticatorSpecs
+     * @return
+     * @throws KeyStoreException
+     * @hide
+     */
+    public KeyMetadata importWrappedKey(@NonNull KeyDescriptor wrappedKeyDescriptor,
+            @NonNull KeyDescriptor wrappingKeyDescriptor,
+            @NonNull byte[] wrappedKey, byte[] maskingKey,
+            Collection<KeyParameter> args, @NonNull AuthenticatorSpec[] authenticatorSpecs)
+            throws KeyStoreException {
+        KeyDescriptor keyDescriptor = new KeyDescriptor();
+        keyDescriptor.alias = wrappedKeyDescriptor.alias;
+        keyDescriptor.nspace = wrappedKeyDescriptor.nspace;
+        keyDescriptor.blob = wrappedKey;
+        keyDescriptor.domain = wrappedKeyDescriptor.domain;
+
+        return handleExceptions(() -> mSecurityLevel.importWrappedKey(wrappedKeyDescriptor,
+                wrappingKeyDescriptor, maskingKey,
+                args.toArray(new KeyParameter[args.size()]), authenticatorSpecs));
+    }
+
+    protected static void interruptedPreservingSleep(long millis) {
+        boolean wasInterrupted = false;
+        Calendar calendar = Calendar.getInstance();
+        long target = calendar.getTimeInMillis() + millis;
+        while (true) {
+            try {
+                Thread.sleep(target - calendar.getTimeInMillis());
+                break;
+            } catch (InterruptedException e) {
+                wasInterrupted = true;
+            } catch (IllegalArgumentException e) {
+                // This means that the argument to sleep was negative.
+                // So we are done sleeping.
+                break;
+            }
+        }
+        if (wasInterrupted) {
+            Thread.currentThread().interrupt();
+        }
+    }
+}
diff --git a/keystore/java/android/security/keystore/AndroidKeyStoreBCWorkaroundProvider.java b/keystore/java/android/security/keystore/AndroidKeyStoreBCWorkaroundProvider.java
index 624321c..5730234 100644
--- a/keystore/java/android/security/keystore/AndroidKeyStoreBCWorkaroundProvider.java
+++ b/keystore/java/android/security/keystore/AndroidKeyStoreBCWorkaroundProvider.java
@@ -34,7 +34,7 @@
  *
  * @hide
  */
-class AndroidKeyStoreBCWorkaroundProvider extends Provider {
+public class AndroidKeyStoreBCWorkaroundProvider extends Provider {
 
     // IMPLEMENTATION NOTE: Class names are hard-coded in this provider to avoid loading these
     // classes when this provider is instantiated and installed early on during each app's
@@ -50,8 +50,14 @@
 
     private static final String DESEDE_SYSTEM_PROPERTY = "ro.hardware.keystore_desede";
 
-    AndroidKeyStoreBCWorkaroundProvider() {
-        super("AndroidKeyStoreBCWorkaround",
+    /** @hide */
+    public AndroidKeyStoreBCWorkaroundProvider() {
+        this("AndroidKeyStoreBCWorkaround");
+    }
+
+    /** @hide **/
+    public AndroidKeyStoreBCWorkaroundProvider(String providerName) {
+        super(providerName,
                 1.0,
                 "Android KeyStore security provider to work around Bouncy Castle");
 
diff --git a/keystore/java/android/security/keystore/AndroidKeyStoreProvider.java b/keystore/java/android/security/keystore/AndroidKeyStoreProvider.java
index 71e6559..b1b6306 100644
--- a/keystore/java/android/security/keystore/AndroidKeyStoreProvider.java
+++ b/keystore/java/android/security/keystore/AndroidKeyStoreProvider.java
@@ -23,6 +23,7 @@
 import android.security.keymaster.ExportResult;
 import android.security.keymaster.KeyCharacteristics;
 import android.security.keymaster.KeymasterDefs;
+import android.sysprop.Keystore2Properties;
 
 import java.io.IOException;
 import java.security.KeyFactory;
@@ -70,14 +71,19 @@
     private static final String DESEDE_SYSTEM_PROPERTY =
             "ro.hardware.keystore_desede";
 
-    /** @hide **/
+    /** @hide */
     public AndroidKeyStoreProvider() {
-        super(PROVIDER_NAME, 1.0, "Android KeyStore security provider");
+        this(PROVIDER_NAME);
+    }
+
+    /** @hide **/
+    public AndroidKeyStoreProvider(String providerName) {
+        super(providerName, 1.0, "Android KeyStore security provider");
 
         boolean supports3DES = "true".equals(android.os.SystemProperties.get(DESEDE_SYSTEM_PROPERTY));
 
         // java.security.KeyStore
-        put("KeyStore.AndroidKeyStore", PACKAGE_NAME + ".AndroidKeyStoreSpi");
+        put("KeyStore." + providerName, PACKAGE_NAME + ".AndroidKeyStoreSpi");
 
         // java.security.KeyPairGenerator
         put("KeyPairGenerator.EC", PACKAGE_NAME + ".AndroidKeyStoreKeyPairGeneratorSpi$EC");
@@ -111,6 +117,26 @@
         putSecretKeyFactoryImpl("HmacSHA512");
     }
 
+    private static boolean sKeystore2Enabled;
+
+    /**
+     * This function indicates whether or not Keystore 2.0 is enabled. Some parts of the
+     * Keystore SPI must behave subtly differently when Keystore 2.0 is enabled. However,
+     * the platform property that indicates that Keystore 2.0 is enabled is not readable
+     * by applications. So we set this value when {@code install()} is called because it
+     * is called by zygote, which can access Keystore2Properties.
+     *
+     * This function can be removed once the transition to Keystore 2.0 is complete.
+     * b/171305684
+     *
+     * @return true if Keystore 2.0 is enabled.
+     * @hide
+     */
+    public static boolean isKeystore2Enabled() {
+        return sKeystore2Enabled;
+    }
+
+
     /**
      * Installs a new instance of this provider (and the
      * {@link AndroidKeyStoreBCWorkaroundProvider}).
@@ -138,6 +164,11 @@
             // priority.
             Security.addProvider(workaroundProvider);
         }
+
+        // {@code install()} is run by zygote when this property is still accessible. We store its
+        // value so that the Keystore SPI can act accordingly without having to access an internal
+        // property.
+        sKeystore2Enabled = Keystore2Properties.keystore2_enabled().orElse(false);
     }
 
     private void putSecretKeyFactoryImpl(String algorithm) {
@@ -412,8 +443,12 @@
     @NonNull
     public static java.security.KeyStore getKeyStoreForUid(int uid)
             throws KeyStoreException, NoSuchProviderException {
+        String providerName = PROVIDER_NAME;
+        if (android.security.keystore2.AndroidKeyStoreProvider.isInstalled()) {
+            providerName = "AndroidKeyStoreLegacy";
+        }
         java.security.KeyStore result =
-                java.security.KeyStore.getInstance("AndroidKeyStore", PROVIDER_NAME);
+                java.security.KeyStore.getInstance(providerName);
         try {
             result.load(new AndroidKeyStoreLoadStoreParameter(uid));
         } catch (NoSuchAlgorithmException | CertificateException | IOException e) {
diff --git a/keystore/java/android/security/keystore/AndroidKeyStoreSecretKeyFactorySpi.java b/keystore/java/android/security/keystore/AndroidKeyStoreSecretKeyFactorySpi.java
index cc5286d..3694d63 100644
--- a/keystore/java/android/security/keystore/AndroidKeyStoreSecretKeyFactorySpi.java
+++ b/keystore/java/android/security/keystore/AndroidKeyStoreSecretKeyFactorySpi.java
@@ -177,7 +177,7 @@
                 && (keymasterSwEnforcedUserAuthenticators == 0);
         boolean userAuthenticationValidWhileOnBody =
                 keyCharacteristics.hwEnforced.getBoolean(KeymasterDefs.KM_TAG_ALLOW_WHILE_ON_BODY);
-        boolean trustedUserPresenceRequred =
+        boolean trustedUserPresenceRequired =
                 keyCharacteristics.hwEnforced.getBoolean(
                     KeymasterDefs.KM_TAG_TRUSTED_USER_PRESENCE_REQUIRED);
 
@@ -209,9 +209,13 @@
                 keymasterHwEnforcedUserAuthenticators,
                 userAuthenticationRequirementEnforcedBySecureHardware,
                 userAuthenticationValidWhileOnBody,
-                trustedUserPresenceRequred,
+                trustedUserPresenceRequired,
                 invalidatedByBiometricEnrollment,
-                userConfirmationRequired);
+                userConfirmationRequired,
+                // Keystore 1.0 does not tell us the exact security level of the key
+                // so we report an unknown but secure security level.
+                insideSecureHardware ? KeyProperties.SECURITY_LEVEL_UNKNOWN_SECURE
+                        : KeyProperties.SECURITY_LEVEL_SOFTWARE);
     }
 
     private static BigInteger getGateKeeperSecureUserId() throws ProviderException {
diff --git a/keystore/java/android/security/keystore/ArrayUtils.java b/keystore/java/android/security/keystore/ArrayUtils.java
index f519c7c..c8c1de4 100644
--- a/keystore/java/android/security/keystore/ArrayUtils.java
+++ b/keystore/java/android/security/keystore/ArrayUtils.java
@@ -18,6 +18,8 @@
 
 import libcore.util.EmptyArray;
 
+import java.util.function.Consumer;
+
 /**
  * @hide
  */
@@ -107,4 +109,16 @@
             return result;
         }
     }
+
+    /**
+     * Runs {@code consumer.accept()} for each element of {@code array}.
+     * @param array
+     * @param consumer
+     * @hide
+     */
+    public static void forEach(int[] array, Consumer<Integer> consumer) {
+        for (int i : array) {
+            consumer.accept(i);
+        }
+    }
 }
diff --git a/keystore/java/android/security/keystore/AttestationUtils.java b/keystore/java/android/security/keystore/AttestationUtils.java
index f82d8b6..f1eea82 100644
--- a/keystore/java/android/security/keystore/AttestationUtils.java
+++ b/keystore/java/android/security/keystore/AttestationUtils.java
@@ -20,7 +20,6 @@
 import android.annotation.NonNull;
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.content.Context;
 import android.content.res.Resources;
 import android.os.Build;
@@ -46,7 +45,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public abstract class AttestationUtils {
     private AttestationUtils() {
     }
diff --git a/keystore/java/android/security/keystore/BackendBusyException.java b/keystore/java/android/security/keystore/BackendBusyException.java
new file mode 100644
index 0000000..1a88469
--- /dev/null
+++ b/keystore/java/android/security/keystore/BackendBusyException.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore;
+
+import android.annotation.NonNull;
+
+import java.security.ProviderException;
+
+/**
+ * Indicates a transient error that prevented a key operation from being created.
+ * Callers should try again with a back-off period of 10-30 milliseconds.
+ */
+public class BackendBusyException extends ProviderException {
+
+    /**
+     * Constructs a new {@code BackendBusyException} without detail message and cause.
+     */
+    public BackendBusyException() {
+        super("The keystore backend has no operation slots available. Retry later.");
+    }
+
+    /**
+     * Constructs a new {@code BackendBusyException} with the provided detail message and
+     * no cause.
+     */
+    public BackendBusyException(@NonNull String message) {
+        super(message);
+    }
+
+    /**
+     * Constructs a new {@code BackendBusyException} with the provided detail message and
+     * cause.
+     */
+    public BackendBusyException(@NonNull String message, @NonNull Throwable cause) {
+        super(message, cause);
+    }
+
+}
diff --git a/keystore/java/android/security/keystore/DeviceIdAttestationException.java b/keystore/java/android/security/keystore/DeviceIdAttestationException.java
index 8ba0317..4f9f9e6 100644
--- a/keystore/java/android/security/keystore/DeviceIdAttestationException.java
+++ b/keystore/java/android/security/keystore/DeviceIdAttestationException.java
@@ -18,7 +18,6 @@
 
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 
 /**
  * Thrown when {@link AttestationUtils} is unable to attest the given device ids.
@@ -26,7 +25,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public class DeviceIdAttestationException extends Exception {
     /**
      * Constructs a new {@code DeviceIdAttestationException} with the current stack trace and the
diff --git a/keystore/java/android/security/keystore/KeyGenParameterSpec.java b/keystore/java/android/security/keystore/KeyGenParameterSpec.java
index 688c4a7..e9aac7d 100644
--- a/keystore/java/android/security/keystore/KeyGenParameterSpec.java
+++ b/keystore/java/android/security/keystore/KeyGenParameterSpec.java
@@ -27,7 +27,6 @@
 import android.hardware.biometrics.BiometricPrompt;
 import android.os.Build;
 import android.security.GateKeeper;
-import android.security.KeyStore;
 import android.text.TextUtils;
 
 import java.math.BigInteger;
@@ -246,7 +245,7 @@
     private static final Date DEFAULT_CERT_NOT_AFTER = new Date(2461449600000L); // Jan 1 2048
 
     private final String mKeystoreAlias;
-    private final int mUid;
+    private final int mNamespace;
     private final int mKeySize;
     private final AlgorithmParameterSpec mSpec;
     private final X500Principal mCertificateSubject;
@@ -286,7 +285,7 @@
      */
     public KeyGenParameterSpec(
             String keyStoreAlias,
-            int uid,
+            int namespace,
             int keySize,
             AlgorithmParameterSpec spec,
             X500Principal certificateSubject,
@@ -337,7 +336,7 @@
         }
 
         mKeystoreAlias = keyStoreAlias;
-        mUid = uid;
+        mNamespace = namespace;
         mKeySize = keySize;
         mSpec = spec;
         mCertificateSubject = certificateSubject;
@@ -382,11 +381,43 @@
      * Returns the UID which will own the key. {@code -1} is an alias for the UID of the current
      * process.
      *
+     * @deprecated See deprecation message on {@link KeyGenParameterSpec.Builder#setUid(int)}.
+     *             Known namespaces will be translated to their legacy UIDs. Unknown
+     *             Namespaces will yield {@link IllegalStateException}.
+     *
      * @hide
      */
     @UnsupportedAppUsage
+    @Deprecated
     public int getUid() {
-        return mUid;
+        if (!AndroidKeyStoreProvider.isKeystore2Enabled()) {
+            // If Keystore2 has not been enabled we have to behave as if mNamespace is actually
+            // a UID, because we are still being used with the old Keystore SPI.
+            // TODO This if statement and body can be removed when the Keystore 2 migration is
+            //      complete. b/171563717
+            return mNamespace;
+        }
+        try {
+            return KeyProperties.namespaceToLegacyUid(mNamespace);
+        } catch (IllegalArgumentException e) {
+            throw new IllegalStateException("getUid called on KeyGenParameterSpec with non legacy"
+                    + " keystore namespace.", e);
+        }
+    }
+
+    /**
+     * Returns the target namespace for the key.
+     * See {@link KeyGenParameterSpec.Builder#setNamespace(int)}.
+     *
+     * @return The numeric namespace as configured in the keystore2_key_contexts files of Android's
+     *         SEPolicy.
+     *         TODO b/171806779 link to public Keystore 2.0 documentation.
+     *              See bug for more details for now.
+     * @hide
+     */
+    @SystemApi
+    public int getNamespace() {
+        return mNamespace;
     }
 
     /**
@@ -767,7 +798,7 @@
         private final String mKeystoreAlias;
         private @KeyProperties.PurposeEnum int mPurposes;
 
-        private int mUid = KeyStore.UID_SELF;
+        private int mNamespace = KeyProperties.NAMESPACE_APPLICATION;
         private int mKeySize = -1;
         private AlgorithmParameterSpec mSpec;
         private X500Principal mCertificateSubject;
@@ -830,7 +861,7 @@
          */
         public Builder(@NonNull KeyGenParameterSpec sourceSpec) {
             this(sourceSpec.getKeystoreAlias(), sourceSpec.getPurposes());
-            mUid = sourceSpec.getUid();
+            mNamespace = sourceSpec.getNamespace();
             mKeySize = sourceSpec.getKeySize();
             mSpec = sourceSpec.getAlgorithmParameterSpec();
             mCertificateSubject = sourceSpec.getCertificateSubject();
@@ -873,12 +904,51 @@
          *
          * @param uid UID or {@code -1} for the UID of the current process.
          *
+         * @deprecated Setting the UID of the target namespace is based on a hardcoded
+         * hack in the Keystore service. This is no longer supported with Keystore 2.0/Android S.
+         * Instead, dedicated non UID based namespaces can be configured in SEPolicy using
+         * the keystore2_key_contexts files. The functionality of this method will be supported
+         * by mapping knows special UIDs, such as WIFI, to the newly configured SELinux based
+         * namespaces. Unknown UIDs will yield {@link IllegalArgumentException}.
+         *
          * @hide
          */
         @SystemApi
         @NonNull
+        @Deprecated
         public Builder setUid(int uid) {
-            mUid = uid;
+            if (!AndroidKeyStoreProvider.isKeystore2Enabled()) {
+                // If Keystore2 has not been enabled we have to behave as if mNamespace is actually
+                // a UID, because we are still being used with the old Keystore SPI.
+                // TODO This if statement and body can be removed when the Keystore 2 migration is
+                //      complete. b/171563717
+                mNamespace = uid;
+                return this;
+            }
+            mNamespace = KeyProperties.legacyUidToNamespace(uid);
+            return this;
+        }
+
+        /**
+         * Set the designated SELinux namespace that the key shall live in. The caller must
+         * have sufficient permissions to install a key in the given namespace. Namespaces
+         * can be created using SEPolicy. The keystore2_key_contexts files map numeric
+         * namespaces to SELinux labels, and SEPolicy can be used to grant access to these
+         * namespaces to the desired target context. This is the preferred way to share
+         * keys between system and vendor components, e.g., WIFI settings and WPA supplicant.
+         *
+         * @param namespace Numeric SELinux namespace as configured in keystore2_key_contexts
+         *                  of Android's SEPolicy.
+         *                  TODO b/171806779 link to public Keystore 2.0 documentation.
+         *                       See bug for more details for now.
+         * @return this Builder object.
+         *
+         * @hide
+         */
+        @SystemApi
+        @NonNull
+        public Builder setNamespace(int namespace) {
+            mNamespace = namespace;
             return this;
         }
 
@@ -1489,7 +1559,7 @@
         public KeyGenParameterSpec build() {
             return new KeyGenParameterSpec(
                     mKeystoreAlias,
-                    mUid,
+                    mNamespace,
                     mKeySize,
                     mSpec,
                     mCertificateSubject,
diff --git a/keystore/java/android/security/keystore/KeyInfo.java b/keystore/java/android/security/keystore/KeyInfo.java
index d891a25..7158d0c 100644
--- a/keystore/java/android/security/keystore/KeyInfo.java
+++ b/keystore/java/android/security/keystore/KeyInfo.java
@@ -84,6 +84,7 @@
     private final boolean mTrustedUserPresenceRequired;
     private final boolean mInvalidatedByBiometricEnrollment;
     private final boolean mUserConfirmationRequired;
+    private final @KeyProperties.SecurityLevelEnum int mSecurityLevel;
 
     /**
      * @hide
@@ -107,7 +108,8 @@
             boolean userAuthenticationValidWhileOnBody,
             boolean trustedUserPresenceRequired,
             boolean invalidatedByBiometricEnrollment,
-            boolean userConfirmationRequired) {
+            boolean userConfirmationRequired,
+            @KeyProperties.SecurityLevelEnum int securityLevel) {
         mKeystoreAlias = keystoreKeyAlias;
         mInsideSecureHardware = insideSecureHardware;
         mOrigin = origin;
@@ -131,6 +133,7 @@
         mTrustedUserPresenceRequired = trustedUserPresenceRequired;
         mInvalidatedByBiometricEnrollment = invalidatedByBiometricEnrollment;
         mUserConfirmationRequired = userConfirmationRequired;
+        mSecurityLevel = securityLevel;
     }
 
     /**
@@ -144,7 +147,10 @@
      * Returns {@code true} if the key resides inside secure hardware (e.g., Trusted Execution
      * Environment (TEE) or Secure Element (SE)). Key material of such keys is available in
      * plaintext only inside the secure hardware and is not exposed outside of it.
+     *
+     * @deprecated This method is superseded by @see getSecurityLevel.
      */
+    @Deprecated
     public boolean isInsideSecureHardware() {
         return mInsideSecureHardware;
     }
@@ -355,4 +361,17 @@
     public boolean isTrustedUserPresenceRequired() {
         return mTrustedUserPresenceRequired;
     }
+
+    /**
+     * Returns the security level that the key is protected by.
+     * {@code KeyProperties.SecurityLevelEnum.TRUSTED_ENVIRONMENT} and
+     * {@code KeyProperties.SecurityLevelEnum.STRONGBOX} indicate that the key material resides
+     * in secure hardware. Key material of such keys is available in
+     * plaintext only inside the secure hardware and is not exposed outside of it.
+     *
+     * <p>See {@link KeyProperties}.{@code SecurityLevelEnum} constants.
+     */
+    public @KeyProperties.SecurityLevelEnum int getSecurityLevel() {
+        return mSecurityLevel;
+    }
 }
diff --git a/keystore/java/android/security/keystore/KeyProperties.java b/keystore/java/android/security/keystore/KeyProperties.java
index c58a123..5928540 100644
--- a/keystore/java/android/security/keystore/KeyProperties.java
+++ b/keystore/java/android/security/keystore/KeyProperties.java
@@ -20,6 +20,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.StringDef;
+import android.security.KeyStore;
 import android.security.keymaster.KeymasterDefs;
 
 import libcore.util.EmptyArray;
@@ -496,10 +497,16 @@
      */
     public static final String SIGNATURE_PADDING_RSA_PSS = "PSS";
 
-    static abstract class SignaturePadding {
+    /**
+     * @hide
+     */
+    public abstract static class SignaturePadding {
         private SignaturePadding() {}
 
-        static int toKeymaster(@NonNull @SignaturePaddingEnum String padding) {
+        /**
+         * @hide
+         */
+        public static int toKeymaster(@NonNull @SignaturePaddingEnum String padding) {
             switch (padding.toUpperCase(Locale.US)) {
                 case SIGNATURE_PADDING_RSA_PKCS1:
                     return KeymasterDefs.KM_PAD_RSA_PKCS1_1_5_SIGN;
@@ -512,7 +519,7 @@
         }
 
         @NonNull
-        static @SignaturePaddingEnum String fromKeymaster(int padding) {
+        public static @SignaturePaddingEnum String fromKeymaster(int padding) {
             switch (padding) {
                 case KeymasterDefs.KM_PAD_RSA_PKCS1_1_5_SIGN:
                     return SIGNATURE_PADDING_RSA_PKCS1;
@@ -524,7 +531,7 @@
         }
 
         @NonNull
-        static int[] allToKeymaster(@Nullable @SignaturePaddingEnum String[] paddings) {
+        public static int[] allToKeymaster(@Nullable @SignaturePaddingEnum String[] paddings) {
             if ((paddings == null) || (paddings.length == 0)) {
                 return EmptyArray.INT;
             }
@@ -771,4 +778,123 @@
         }
         return result;
     }
+
+    /**
+     * @hide
+     */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = { "SECURITY_LEVEL_" }, value = {
+            SECURITY_LEVEL_UNKNOWN,
+            SECURITY_LEVEL_UNKNOWN_SECURE,
+            SECURITY_LEVEL_SOFTWARE,
+            SECURITY_LEVEL_TRUSTED_ENVIRONMENT,
+            SECURITY_LEVEL_STRONGBOX,
+    })
+    public @interface SecurityLevelEnum {}
+
+    /**
+     * This security level indicates that no assumptions can be made about the security level of the
+     * respective key.
+     */
+    public static final int SECURITY_LEVEL_UNKNOWN = -2;
+    /**
+     * This security level indicates that due to the target API level of the caller no exact
+     * statement can be made about the security level of the key, however, the security level
+     * can be considered is at least equivalent to {@link #SECURITY_LEVEL_TRUSTED_ENVIRONMENT}.
+     */
+    public static final int SECURITY_LEVEL_UNKNOWN_SECURE = -1;
+
+    /** Indicates enforcement by system software. */
+    public static final int SECURITY_LEVEL_SOFTWARE = 0;
+
+    /** Indicates enforcement by a trusted execution environment. */
+    public static final int SECURITY_LEVEL_TRUSTED_ENVIRONMENT = 1;
+
+    /**
+     * Indicates enforcement by environment meeting the Strongbox security profile,
+     * such as a secure element.
+     */
+    public static final int SECURITY_LEVEL_STRONGBOX = 2;
+
+    /**
+     * @hide
+     */
+    public abstract static class SecurityLevel {
+        private SecurityLevel() {}
+
+        /**
+         * @hide
+         */
+        public static int toKeymaster(int securityLevel) {
+            switch (securityLevel) {
+                case SECURITY_LEVEL_SOFTWARE:
+                    return KeymasterDefs.KM_SECURITY_LEVEL_SOFTWARE;
+                case SECURITY_LEVEL_TRUSTED_ENVIRONMENT:
+                    return KeymasterDefs.KM_SECURITY_LEVEL_TRUSTED_ENVIRONMENT;
+                case SECURITY_LEVEL_STRONGBOX:
+                    return KeymasterDefs.KM_SECURITY_LEVEL_STRONGBOX;
+                default:
+                    throw new IllegalArgumentException("Unsupported security level: "
+                            + securityLevel);
+            }
+        }
+
+        /**
+         * @hide
+         */
+        @NonNull
+        public static int fromKeymaster(int securityLevel) {
+            switch (securityLevel) {
+                case KeymasterDefs.KM_SECURITY_LEVEL_SOFTWARE:
+                    return SECURITY_LEVEL_SOFTWARE;
+                case KeymasterDefs.KM_SECURITY_LEVEL_TRUSTED_ENVIRONMENT:
+                    return SECURITY_LEVEL_TRUSTED_ENVIRONMENT;
+                case KeymasterDefs.KM_SECURITY_LEVEL_STRONGBOX:
+                    return SECURITY_LEVEL_STRONGBOX;
+                default:
+                    throw new IllegalArgumentException("Unsupported security level: "
+                            + securityLevel);
+            }
+        }
+    }
+
+    /**
+     * This value indicates the implicit keystore namespace of the calling application.
+     * It is used by default. Only select system components can choose a different namespace
+     * which it must be configured in SEPolicy.
+     * @hide
+     */
+    public static final int NAMESPACE_APPLICATION = -1;
+
+    /**
+     * For legacy support, translate namespaces into known UIDs.
+     * @hide
+     */
+    public static int namespaceToLegacyUid(int namespace) {
+        switch (namespace) {
+            case NAMESPACE_APPLICATION:
+                return KeyStore.UID_SELF;
+            // TODO Translate WIFI and VPN UIDs once the namespaces are defined.
+            //  b/171305388 and b/171305607
+            default:
+                throw new IllegalArgumentException("No UID corresponding to namespace "
+                        + namespace);
+        }
+    }
+
+    /**
+     * For legacy support, translate namespaces into known UIDs.
+     * @hide
+     */
+    public static int legacyUidToNamespace(int uid) {
+        switch (uid) {
+            case KeyStore.UID_SELF:
+                return NAMESPACE_APPLICATION;
+            // TODO Translate WIFI and VPN UIDs once the namespaces are defined.
+            //  b/171305388 and b/171305607
+            default:
+                throw new IllegalArgumentException("No namespace corresponding to uid "
+                        + uid);
+        }
+    }
 }
diff --git a/keystore/java/android/security/keystore/KeyStoreCryptoOperationUtils.java b/keystore/java/android/security/keystore/KeyStoreCryptoOperationUtils.java
index 773729e..c82b6e6b 100644
--- a/keystore/java/android/security/keystore/KeyStoreCryptoOperationUtils.java
+++ b/keystore/java/android/security/keystore/KeyStoreCryptoOperationUtils.java
@@ -48,7 +48,7 @@
             return null;
         }
 
-        // An error occured. However, some errors should not lead to init throwing an exception.
+        // An error occurred. However, some errors should not lead to init throwing an exception.
         // See below.
         InvalidKeyException e =
                 keyStore.getInvalidKeyException(key.getAlias(), key.getUid(), beginOpResultCode);
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStore3DESCipherSpi.java b/keystore/java/android/security/keystore2/AndroidKeyStore3DESCipherSpi.java
new file mode 100644
index 0000000..69c7a25
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStore3DESCipherSpi.java
@@ -0,0 +1,317 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.annotation.NonNull;
+import android.hardware.keymint.KeyParameter;
+import android.security.keymaster.KeymasterDefs;
+import android.security.keystore.ArrayUtils;
+import android.security.keystore.KeyProperties;
+
+import java.security.AlgorithmParameters;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.Key;
+import java.security.NoSuchAlgorithmException;
+import java.security.ProviderException;
+import java.security.spec.AlgorithmParameterSpec;
+import java.security.spec.InvalidParameterSpecException;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.crypto.CipherSpi;
+import javax.crypto.spec.IvParameterSpec;
+
+/**
+ * Base class for Android Keystore 3DES {@link CipherSpi} implementations.
+ *
+ * @hide
+ */
+public class AndroidKeyStore3DESCipherSpi extends AndroidKeyStoreCipherSpiBase {
+
+    private static final int BLOCK_SIZE_BYTES = 8;
+
+    private final int mKeymasterBlockMode;
+    private final int mKeymasterPadding;
+    /** Whether this transformation requires an IV. */
+    private final boolean mIvRequired;
+
+    private byte[] mIv;
+
+    /** Whether the current {@code #mIv} has been used by the underlying crypto operation. */
+    private boolean mIvHasBeenUsed;
+
+    AndroidKeyStore3DESCipherSpi(
+            int keymasterBlockMode,
+            int keymasterPadding,
+            boolean ivRequired) {
+        mKeymasterBlockMode = keymasterBlockMode;
+        mKeymasterPadding = keymasterPadding;
+        mIvRequired = ivRequired;
+    }
+
+    abstract static class ECB extends AndroidKeyStore3DESCipherSpi {
+        protected ECB(int keymasterPadding) {
+            super(KeymasterDefs.KM_MODE_ECB, keymasterPadding, false);
+        }
+
+        public static class NoPadding extends ECB {
+            public NoPadding() {
+                super(KeymasterDefs.KM_PAD_NONE);
+            }
+        }
+
+        public static class PKCS7Padding extends ECB {
+            public PKCS7Padding() {
+                super(KeymasterDefs.KM_PAD_PKCS7);
+            }
+        }
+    }
+
+    abstract static class CBC extends AndroidKeyStore3DESCipherSpi {
+        protected CBC(int keymasterPadding) {
+            super(KeymasterDefs.KM_MODE_CBC, keymasterPadding, true);
+        }
+
+        public static class NoPadding extends CBC {
+            public NoPadding() {
+                super(KeymasterDefs.KM_PAD_NONE);
+            }
+        }
+
+        public static class PKCS7Padding extends CBC {
+            public PKCS7Padding() {
+                super(KeymasterDefs.KM_PAD_PKCS7);
+            }
+        }
+    }
+
+    @Override
+    protected void initKey(int i, Key key) throws InvalidKeyException {
+        if (!(key instanceof AndroidKeyStoreSecretKey)) {
+            throw new InvalidKeyException(
+                    "Unsupported key: " + ((key != null) ? key.getClass().getName() : "null"));
+        }
+        if (!KeyProperties.KEY_ALGORITHM_3DES.equalsIgnoreCase(key.getAlgorithm())) {
+            throw new InvalidKeyException(
+                    "Unsupported key algorithm: " + key.getAlgorithm() + ". Only " +
+                            KeyProperties.KEY_ALGORITHM_3DES + " supported");
+        }
+        setKey((AndroidKeyStoreSecretKey) key);
+    }
+
+    @Override
+    protected int engineGetBlockSize() {
+        return BLOCK_SIZE_BYTES;
+    }
+
+    @Override
+    protected int engineGetOutputSize(int inputLen) {
+        return inputLen + 3 * BLOCK_SIZE_BYTES;
+    }
+
+    @Override
+    protected final byte[] engineGetIV() {
+        return ArrayUtils.cloneIfNotEmpty(mIv);
+    }
+
+    @Override
+    protected AlgorithmParameters engineGetParameters() {
+        if (!mIvRequired) {
+            return null;
+        }
+        if ((mIv != null) && (mIv.length > 0)) {
+            try {
+                AlgorithmParameters params = AlgorithmParameters.getInstance("DESede");
+                params.init(new IvParameterSpec(mIv));
+                return params;
+            } catch (NoSuchAlgorithmException e) {
+                throw new ProviderException(
+                        "Failed to obtain 3DES AlgorithmParameters", e);
+            } catch (InvalidParameterSpecException e) {
+                throw new ProviderException(
+                        "Failed to initialize 3DES AlgorithmParameters with an IV",
+                        e);
+            }
+        }
+        return null;
+    }
+
+    @Override
+    protected void initAlgorithmSpecificParameters() throws InvalidKeyException {
+        if (!mIvRequired) {
+            return;
+        }
+
+        // IV is used
+        if (!isEncrypting()) {
+            throw new InvalidKeyException("IV required when decrypting"
+                    + ". Use IvParameterSpec or AlgorithmParameters to provide it.");
+        }
+    }
+
+    @Override
+    protected void initAlgorithmSpecificParameters(AlgorithmParameterSpec params)
+            throws InvalidAlgorithmParameterException {
+        if (!mIvRequired) {
+            if (params != null) {
+                throw new InvalidAlgorithmParameterException("Unsupported parameters: " + params);
+            }
+            return;
+        }
+
+        // IV is used
+        if (params == null) {
+            if (!isEncrypting()) {
+                // IV must be provided by the caller
+                throw new InvalidAlgorithmParameterException(
+                        "IvParameterSpec must be provided when decrypting");
+            }
+            return;
+        }
+        if (!(params instanceof IvParameterSpec)) {
+            throw new InvalidAlgorithmParameterException("Only IvParameterSpec supported");
+        }
+        mIv = ((IvParameterSpec) params).getIV();
+        if (mIv == null) {
+            throw new InvalidAlgorithmParameterException("Null IV in IvParameterSpec");
+        }
+    }
+
+    @Override
+    protected void initAlgorithmSpecificParameters(AlgorithmParameters params)
+            throws InvalidAlgorithmParameterException {
+        if (!mIvRequired) {
+            if (params != null) {
+                throw new InvalidAlgorithmParameterException("Unsupported parameters: " + params);
+            }
+            return;
+        }
+
+        // IV is used
+        if (params == null) {
+            if (!isEncrypting()) {
+                // IV must be provided by the caller
+                throw new InvalidAlgorithmParameterException("IV required when decrypting"
+                        + ". Use IvParameterSpec or AlgorithmParameters to provide it.");
+            }
+            return;
+        }
+
+        if (!"DESede".equalsIgnoreCase(params.getAlgorithm())) {
+            throw new InvalidAlgorithmParameterException(
+                    "Unsupported AlgorithmParameters algorithm: " + params.getAlgorithm()
+                            + ". Supported: DESede");
+        }
+
+        IvParameterSpec ivSpec;
+        try {
+            ivSpec = params.getParameterSpec(IvParameterSpec.class);
+        } catch (InvalidParameterSpecException e) {
+            if (!isEncrypting()) {
+                // IV must be provided by the caller
+                throw new InvalidAlgorithmParameterException("IV required when decrypting"
+                        + ", but not found in parameters: " + params, e);
+            }
+            mIv = null;
+            return;
+        }
+        mIv = ivSpec.getIV();
+        if (mIv == null) {
+            throw new InvalidAlgorithmParameterException("Null IV in AlgorithmParameters");
+        }
+    }
+
+    @Override
+    protected final int getAdditionalEntropyAmountForBegin() {
+        if ((mIvRequired) && (mIv == null) && (isEncrypting())) {
+            // IV will need to be generated
+            return BLOCK_SIZE_BYTES;
+        }
+
+        return 0;
+    }
+
+    @Override
+    protected int getAdditionalEntropyAmountForFinish() {
+        return 0;
+    }
+
+    @Override
+    protected void addAlgorithmSpecificParametersToBegin(@NonNull List<KeyParameter> parameters) {
+        if ((isEncrypting()) && (mIvRequired) && (mIvHasBeenUsed)) {
+            // IV is being reused for encryption: this violates security best practices.
+            throw new IllegalStateException(
+                    "IV has already been used. Reusing IV in encryption mode violates security best"
+                            + " practices.");
+        }
+
+        parameters.add(KeyStore2ParameterUtils.makeEnum(
+                KeymasterDefs.KM_TAG_ALGORITHM,
+                KeymasterDefs.KM_ALGORITHM_3DES
+        ));
+        parameters.add(KeyStore2ParameterUtils.makeEnum(
+                KeymasterDefs.KM_TAG_BLOCK_MODE,
+                mKeymasterBlockMode
+        ));
+        parameters.add(KeyStore2ParameterUtils.makeEnum(
+                KeymasterDefs.KM_TAG_PADDING,
+                mKeymasterPadding
+        ));
+
+        if (mIvRequired && (mIv != null)) {
+            parameters.add(KeyStore2ParameterUtils.makeBytes(KeymasterDefs.KM_TAG_NONCE, mIv));
+        }
+    }
+
+    @Override
+    protected void loadAlgorithmSpecificParametersFromBeginResult(
+            KeyParameter[] parameters) {
+        mIvHasBeenUsed = true;
+
+        // NOTE: Keymaster doesn't always return an IV, even if it's used.
+        byte[] returnedIv = null;
+        if (parameters != null) {
+            for (KeyParameter p : parameters) {
+                if (p.tag == KeymasterDefs.KM_TAG_NONCE) {
+                    returnedIv = p.blob;
+                    break;
+                }
+            }
+        }
+
+        if (mIvRequired) {
+            if (mIv == null) {
+                mIv = returnedIv;
+            } else if ((returnedIv != null) && (!Arrays.equals(returnedIv, mIv))) {
+                throw new ProviderException("IV in use differs from provided IV");
+            }
+        } else {
+            if (returnedIv != null) {
+                throw new ProviderException(
+                        "IV in use despite IV not being used by this transformation");
+            }
+        }
+    }
+
+    @Override
+    protected final void resetAll() {
+        mIv = null;
+        mIvHasBeenUsed = false;
+        super.resetAll();
+    }
+}
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreAuthenticatedAESCipherSpi.java b/keystore/java/android/security/keystore2/AndroidKeyStoreAuthenticatedAESCipherSpi.java
new file mode 100644
index 0000000..2b5f6c3
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreAuthenticatedAESCipherSpi.java
@@ -0,0 +1,439 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.hardware.keymint.KeyParameter;
+import android.security.KeyStoreException;
+import android.security.KeyStoreOperation;
+import android.security.keymaster.KeymasterDefs;
+import android.security.keystore.ArrayUtils;
+import android.security.keystore.KeyProperties;
+import android.security.keystore2.KeyStoreCryptoOperationChunkedStreamer.Stream;
+
+import libcore.util.EmptyArray;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.security.AlgorithmParameters;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.Key;
+import java.security.NoSuchAlgorithmException;
+import java.security.ProviderException;
+import java.security.spec.AlgorithmParameterSpec;
+import java.security.spec.InvalidParameterSpecException;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.crypto.CipherSpi;
+import javax.crypto.spec.GCMParameterSpec;
+
+/**
+ * Base class for Android Keystore authenticated AES {@link CipherSpi} implementations.
+ *
+ * @hide
+ */
+abstract class AndroidKeyStoreAuthenticatedAESCipherSpi extends AndroidKeyStoreCipherSpiBase {
+
+    abstract static class GCM extends AndroidKeyStoreAuthenticatedAESCipherSpi {
+        static final int MIN_SUPPORTED_TAG_LENGTH_BITS = 96;
+        private static final int MAX_SUPPORTED_TAG_LENGTH_BITS = 128;
+        private static final int DEFAULT_TAG_LENGTH_BITS = 128;
+        private static final int IV_LENGTH_BYTES = 12;
+
+        private int mTagLengthBits = DEFAULT_TAG_LENGTH_BITS;
+
+        GCM(int keymasterPadding) {
+            super(KeymasterDefs.KM_MODE_GCM, keymasterPadding);
+        }
+
+        @Override
+        protected final void resetAll() {
+            mTagLengthBits = DEFAULT_TAG_LENGTH_BITS;
+            super.resetAll();
+        }
+
+        @Override
+        protected final void resetWhilePreservingInitState() {
+            super.resetWhilePreservingInitState();
+        }
+
+        @Override
+        protected final void initAlgorithmSpecificParameters() throws InvalidKeyException {
+            if (!isEncrypting()) {
+                throw new InvalidKeyException("IV required when decrypting"
+                        + ". Use IvParameterSpec or AlgorithmParameters to provide it.");
+            }
+        }
+
+        @Override
+        protected final void initAlgorithmSpecificParameters(AlgorithmParameterSpec params)
+                throws InvalidAlgorithmParameterException {
+            // IV is used
+            if (params == null) {
+                if (!isEncrypting()) {
+                    // IV must be provided by the caller
+                    throw new InvalidAlgorithmParameterException(
+                            "GCMParameterSpec must be provided when decrypting");
+                }
+                return;
+            }
+            if (!(params instanceof GCMParameterSpec)) {
+                throw new InvalidAlgorithmParameterException("Only GCMParameterSpec supported");
+            }
+            GCMParameterSpec spec = (GCMParameterSpec) params;
+            byte[] iv = spec.getIV();
+            if (iv == null) {
+                throw new InvalidAlgorithmParameterException("Null IV in GCMParameterSpec");
+            } else if (iv.length != IV_LENGTH_BYTES) {
+                throw new InvalidAlgorithmParameterException("Unsupported IV length: "
+                        + iv.length + " bytes. Only " + IV_LENGTH_BYTES
+                        + " bytes long IV supported");
+            }
+            int tagLengthBits = spec.getTLen();
+            if ((tagLengthBits < MIN_SUPPORTED_TAG_LENGTH_BITS)
+                    || (tagLengthBits > MAX_SUPPORTED_TAG_LENGTH_BITS)
+                    || ((tagLengthBits % 8) != 0)) {
+                throw new InvalidAlgorithmParameterException(
+                        "Unsupported tag length: " + tagLengthBits + " bits"
+                        + ". Supported lengths: 96, 104, 112, 120, 128");
+            }
+            setIv(iv);
+            mTagLengthBits = tagLengthBits;
+        }
+
+        @Override
+        protected final void initAlgorithmSpecificParameters(AlgorithmParameters params)
+                throws InvalidAlgorithmParameterException {
+            if (params == null) {
+                if (!isEncrypting()) {
+                    // IV must be provided by the caller
+                    throw new InvalidAlgorithmParameterException("IV required when decrypting"
+                            + ". Use GCMParameterSpec or GCM AlgorithmParameters to provide it.");
+                }
+                return;
+            }
+
+            if (!"GCM".equalsIgnoreCase(params.getAlgorithm())) {
+                throw new InvalidAlgorithmParameterException(
+                        "Unsupported AlgorithmParameters algorithm: " + params.getAlgorithm()
+                        + ". Supported: GCM");
+            }
+
+            GCMParameterSpec spec;
+            try {
+                spec = params.getParameterSpec(GCMParameterSpec.class);
+            } catch (InvalidParameterSpecException e) {
+                if (!isEncrypting()) {
+                    // IV must be provided by the caller
+                    throw new InvalidAlgorithmParameterException("IV and tag length required when"
+                            + " decrypting, but not found in parameters: " + params, e);
+                }
+                setIv(null);
+                return;
+            }
+            initAlgorithmSpecificParameters(spec);
+        }
+
+        @Nullable
+        @Override
+        protected final AlgorithmParameters engineGetParameters() {
+            byte[] iv = getIv();
+            if ((iv != null) && (iv.length > 0)) {
+                try {
+                    AlgorithmParameters params = AlgorithmParameters.getInstance("GCM");
+                    params.init(new GCMParameterSpec(mTagLengthBits, iv));
+                    return params;
+                } catch (NoSuchAlgorithmException e) {
+                    throw new ProviderException(
+                            "Failed to obtain GCM AlgorithmParameters", e);
+                } catch (InvalidParameterSpecException e) {
+                    throw new ProviderException(
+                            "Failed to initialize GCM AlgorithmParameters", e);
+                }
+            }
+            return null;
+        }
+
+        @NonNull
+        @Override
+        protected KeyStoreCryptoOperationStreamer createMainDataStreamer(
+                KeyStoreOperation operation) {
+            KeyStoreCryptoOperationStreamer streamer = new KeyStoreCryptoOperationChunkedStreamer(
+                    new KeyStoreCryptoOperationChunkedStreamer.MainDataStream(
+                            operation), 0);
+            if (isEncrypting()) {
+                return streamer;
+            } else {
+                // When decrypting, to avoid leaking unauthenticated plaintext, do not return any
+                // plaintext before ciphertext is authenticated by KeyStore.finish.
+                return new BufferAllOutputUntilDoFinalStreamer(streamer);
+            }
+        }
+
+        @NonNull
+        @Override
+        protected final KeyStoreCryptoOperationStreamer createAdditionalAuthenticationDataStreamer(
+                KeyStoreOperation operation) {
+            return new KeyStoreCryptoOperationChunkedStreamer(
+                    new AdditionalAuthenticationDataStream(operation), 0);
+        }
+
+        @Override
+        protected final int getAdditionalEntropyAmountForBegin() {
+            if ((getIv() == null) && (isEncrypting())) {
+                // IV will need to be generated
+                return IV_LENGTH_BYTES;
+            }
+
+            return 0;
+        }
+
+        @Override
+        protected final int getAdditionalEntropyAmountForFinish() {
+            return 0;
+        }
+
+        @Override
+        protected final void addAlgorithmSpecificParametersToBegin(
+                @NonNull List<KeyParameter> parameters) {
+            super.addAlgorithmSpecificParametersToBegin(parameters);
+            parameters.add(KeyStore2ParameterUtils.makeInt(
+                    KeymasterDefs.KM_TAG_MAC_LENGTH,
+                    mTagLengthBits
+            ));
+        }
+
+        protected final int getTagLengthBits() {
+            return mTagLengthBits;
+        }
+
+        public static final class NoPadding extends GCM {
+            public NoPadding() {
+                super(KeymasterDefs.KM_PAD_NONE);
+            }
+
+            @Override
+            protected final int engineGetOutputSize(int inputLen) {
+                int tagLengthBytes = (getTagLengthBits() + 7) / 8;
+                long result;
+                if (isEncrypting()) {
+                    result = getConsumedInputSizeBytes() - getProducedOutputSizeBytes() + inputLen
+                            + tagLengthBytes;
+                } else {
+                    result = getConsumedInputSizeBytes() - getProducedOutputSizeBytes() + inputLen
+                            - tagLengthBytes;
+                }
+                if (result < 0) {
+                    return 0;
+                } else if (result > Integer.MAX_VALUE) {
+                    return Integer.MAX_VALUE;
+                }
+                return (int) result;
+            }
+        }
+    }
+
+    private static final int BLOCK_SIZE_BYTES = 16;
+
+    private final int mKeymasterBlockMode;
+    private final int mKeymasterPadding;
+
+    private byte[] mIv;
+
+    /** Whether the current {@code #mIv} has been used by the underlying crypto operation. */
+    private boolean mIvHasBeenUsed;
+
+    AndroidKeyStoreAuthenticatedAESCipherSpi(
+            int keymasterBlockMode,
+            int keymasterPadding) {
+        mKeymasterBlockMode = keymasterBlockMode;
+        mKeymasterPadding = keymasterPadding;
+    }
+
+    @Override
+    protected void resetAll() {
+        mIv = null;
+        mIvHasBeenUsed = false;
+        super.resetAll();
+    }
+
+    @Override
+    protected final void initKey(int opmode, Key key) throws InvalidKeyException {
+        if (!(key instanceof AndroidKeyStoreSecretKey)) {
+            throw new InvalidKeyException(
+                    "Unsupported key: " + ((key != null) ? key.getClass().getName() : "null"));
+        }
+        if (!KeyProperties.KEY_ALGORITHM_AES.equalsIgnoreCase(key.getAlgorithm())) {
+            throw new InvalidKeyException(
+                    "Unsupported key algorithm: " + key.getAlgorithm() + ". Only " +
+                    KeyProperties.KEY_ALGORITHM_AES + " supported");
+        }
+        setKey((AndroidKeyStoreSecretKey) key);
+    }
+
+    @Override
+    protected void addAlgorithmSpecificParametersToBegin(
+            @NonNull List<KeyParameter> parameters) {
+        if ((isEncrypting()) && (mIvHasBeenUsed)) {
+            // IV is being reused for encryption: this violates security best practices.
+            throw new IllegalStateException(
+                    "IV has already been used. Reusing IV in encryption mode violates security best"
+                    + " practices.");
+        }
+        parameters.add(KeyStore2ParameterUtils.makeEnum(
+                KeymasterDefs.KM_TAG_ALGORITHM,
+                KeymasterDefs.KM_ALGORITHM_AES
+        ));
+        parameters.add(KeyStore2ParameterUtils.makeEnum(
+                KeymasterDefs.KM_TAG_BLOCK_MODE,
+                mKeymasterBlockMode
+        ));
+        parameters.add(KeyStore2ParameterUtils.makeEnum(
+                KeymasterDefs.KM_TAG_PADDING,
+                mKeymasterPadding
+        ));
+
+        if (mIv != null) {
+            parameters.add(KeyStore2ParameterUtils.makeBytes(KeymasterDefs.KM_TAG_NONCE, mIv));
+        }
+    }
+
+    @Override
+    protected final void loadAlgorithmSpecificParametersFromBeginResult(
+            KeyParameter[] parameters) {
+        mIvHasBeenUsed = true;
+
+        // NOTE: Keymaster doesn't always return an IV, even if it's used.
+        byte[] returnedIv = null;
+        if (parameters != null) {
+            for (KeyParameter p : parameters) {
+                if (p.tag == KeymasterDefs.KM_TAG_NONCE) {
+                    returnedIv = p.blob;
+                    break;
+                }
+            }
+        }
+
+        if (mIv == null) {
+            mIv = returnedIv;
+        } else if ((returnedIv != null) && (!Arrays.equals(returnedIv, mIv))) {
+            throw new ProviderException("IV in use differs from provided IV");
+        }
+    }
+
+    @Override
+    protected final int engineGetBlockSize() {
+        return BLOCK_SIZE_BYTES;
+    }
+
+    @Override
+    protected final byte[] engineGetIV() {
+        return ArrayUtils.cloneIfNotEmpty(mIv);
+    }
+
+    protected void setIv(byte[] iv) {
+        mIv = iv;
+    }
+
+    protected byte[] getIv() {
+        return mIv;
+    }
+
+    /**
+     * {@link KeyStoreCryptoOperationStreamer} which buffers all output until {@code doFinal} from
+     * which it returns all output in one go, provided {@code doFinal} succeeds.
+     */
+    private static class BufferAllOutputUntilDoFinalStreamer
+        implements KeyStoreCryptoOperationStreamer {
+
+        private final KeyStoreCryptoOperationStreamer mDelegate;
+        private ByteArrayOutputStream mBufferedOutput = new ByteArrayOutputStream();
+        private long mProducedOutputSizeBytes;
+
+        private BufferAllOutputUntilDoFinalStreamer(KeyStoreCryptoOperationStreamer delegate) {
+            mDelegate = delegate;
+        }
+
+        @Override
+        public byte[] update(byte[] input, int inputOffset, int inputLength)
+                throws KeyStoreException {
+            byte[] output = mDelegate.update(input, inputOffset, inputLength);
+            if (output != null) {
+                try {
+                    mBufferedOutput.write(output);
+                } catch (IOException e) {
+                    throw new ProviderException("Failed to buffer output", e);
+                }
+            }
+            return EmptyArray.BYTE;
+        }
+
+        @Override
+        public byte[] doFinal(byte[] input, int inputOffset, int inputLength,
+                byte[] signature) throws KeyStoreException {
+            byte[] output = mDelegate.doFinal(input, inputOffset, inputLength, signature);
+            if (output != null) {
+                try {
+                    mBufferedOutput.write(output);
+                } catch (IOException e) {
+                    throw new ProviderException("Failed to buffer output", e);
+                }
+            }
+            byte[] result = mBufferedOutput.toByteArray();
+            mBufferedOutput.reset();
+            mProducedOutputSizeBytes += result.length;
+            return result;
+        }
+
+        @Override
+        public long getConsumedInputSizeBytes() {
+            return mDelegate.getConsumedInputSizeBytes();
+        }
+
+        @Override
+        public long getProducedOutputSizeBytes() {
+            return mProducedOutputSizeBytes;
+        }
+    }
+
+    /**
+     * Additional Authentication Data (AAD) stream via a KeyStore streaming operation. This stream
+     * sends AAD into the KeyStore.
+     */
+    private static class AdditionalAuthenticationDataStream implements Stream {
+
+        private final KeyStoreOperation mOperation;
+
+        private AdditionalAuthenticationDataStream(KeyStoreOperation operation) {
+            mOperation = operation;
+        }
+
+        @Override
+        public byte[] update(byte[] input) throws KeyStoreException {
+            mOperation.updateAad(input);
+            return null;
+        }
+
+        @Override
+        public byte[] finish(byte[] input, byte[] signature) {
+            return null;
+        }
+    }
+}
\ No newline at end of file
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreBCWorkaroundProvider.java b/keystore/java/android/security/keystore2/AndroidKeyStoreBCWorkaroundProvider.java
new file mode 100644
index 0000000..dd943d4
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreBCWorkaroundProvider.java
@@ -0,0 +1,273 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import java.security.Provider;
+
+/**
+ * {@link Provider} of JCA crypto operations operating on Android KeyStore keys.
+ *
+ * <p>This provider was separated out of {@link AndroidKeyStoreProvider} to work around the issue
+ * that Bouncy Castle provider incorrectly declares that it accepts arbitrary keys (incl. Android
+ * KeyStore ones). This causes JCA to select the Bouncy Castle's implementation of JCA crypto
+ * operations for Android KeyStore keys unless Android KeyStore's own implementations are installed
+ * as higher-priority than Bouncy Castle ones. The purpose of this provider is to do just that: to
+ * offer crypto operations operating on Android KeyStore keys and to be installed at higher priority
+ * than the Bouncy Castle provider.
+ *
+ * <p>Once Bouncy Castle provider is fixed, this provider can be merged into the
+ * {@code AndroidKeyStoreProvider}.
+ *
+ * @hide
+ */
+class AndroidKeyStoreBCWorkaroundProvider extends Provider {
+
+    // IMPLEMENTATION NOTE: Class names are hard-coded in this provider to avoid loading these
+    // classes when this provider is instantiated and installed early on during each app's
+    // initialization process.
+
+    private static final String PACKAGE_NAME = "android.security.keystore2";
+    private static final String KEYSTORE_SECRET_KEY_CLASS_NAME =
+            PACKAGE_NAME + ".AndroidKeyStoreSecretKey";
+    private static final String KEYSTORE_PRIVATE_KEY_CLASS_NAME =
+            PACKAGE_NAME + ".AndroidKeyStorePrivateKey";
+    private static final String KEYSTORE_PUBLIC_KEY_CLASS_NAME =
+            PACKAGE_NAME + ".AndroidKeyStorePublicKey";
+
+    private static final String DESEDE_SYSTEM_PROPERTY = "ro.hardware.keystore_desede";
+
+    AndroidKeyStoreBCWorkaroundProvider() {
+        super("AndroidKeyStoreBCWorkaround",
+                1.0,
+                "Android KeyStore security provider to work around Bouncy Castle");
+
+        // --------------------- javax.crypto.Mac
+        putMacImpl("HmacSHA1", PACKAGE_NAME + ".AndroidKeyStoreHmacSpi$HmacSHA1");
+        put("Alg.Alias.Mac.1.2.840.113549.2.7", "HmacSHA1");
+        put("Alg.Alias.Mac.HMAC-SHA1", "HmacSHA1");
+        put("Alg.Alias.Mac.HMAC/SHA1", "HmacSHA1");
+
+        putMacImpl("HmacSHA224", PACKAGE_NAME + ".AndroidKeyStoreHmacSpi$HmacSHA224");
+        put("Alg.Alias.Mac.1.2.840.113549.2.9", "HmacSHA224");
+        put("Alg.Alias.Mac.HMAC-SHA224", "HmacSHA224");
+        put("Alg.Alias.Mac.HMAC/SHA224", "HmacSHA224");
+
+        putMacImpl("HmacSHA256", PACKAGE_NAME + ".AndroidKeyStoreHmacSpi$HmacSHA256");
+        put("Alg.Alias.Mac.1.2.840.113549.2.9", "HmacSHA256");
+        put("Alg.Alias.Mac.HMAC-SHA256", "HmacSHA256");
+        put("Alg.Alias.Mac.HMAC/SHA256", "HmacSHA256");
+
+        putMacImpl("HmacSHA384", PACKAGE_NAME + ".AndroidKeyStoreHmacSpi$HmacSHA384");
+        put("Alg.Alias.Mac.1.2.840.113549.2.10", "HmacSHA384");
+        put("Alg.Alias.Mac.HMAC-SHA384", "HmacSHA384");
+        put("Alg.Alias.Mac.HMAC/SHA384", "HmacSHA384");
+
+        putMacImpl("HmacSHA512", PACKAGE_NAME + ".AndroidKeyStoreHmacSpi$HmacSHA512");
+        put("Alg.Alias.Mac.1.2.840.113549.2.11", "HmacSHA512");
+        put("Alg.Alias.Mac.HMAC-SHA512", "HmacSHA512");
+        put("Alg.Alias.Mac.HMAC/SHA512", "HmacSHA512");
+
+        // --------------------- javax.crypto.Cipher
+        putSymmetricCipherImpl("AES/ECB/NoPadding",
+                PACKAGE_NAME + ".AndroidKeyStoreUnauthenticatedAESCipherSpi$ECB$NoPadding");
+        putSymmetricCipherImpl("AES/ECB/PKCS7Padding",
+                PACKAGE_NAME + ".AndroidKeyStoreUnauthenticatedAESCipherSpi$ECB$PKCS7Padding");
+
+        putSymmetricCipherImpl("AES/CBC/NoPadding",
+                PACKAGE_NAME + ".AndroidKeyStoreUnauthenticatedAESCipherSpi$CBC$NoPadding");
+        putSymmetricCipherImpl("AES/CBC/PKCS7Padding",
+                PACKAGE_NAME + ".AndroidKeyStoreUnauthenticatedAESCipherSpi$CBC$PKCS7Padding");
+
+        putSymmetricCipherImpl("AES/CTR/NoPadding",
+                PACKAGE_NAME + ".AndroidKeyStoreUnauthenticatedAESCipherSpi$CTR$NoPadding");
+
+        if ("true".equals(android.os.SystemProperties.get(DESEDE_SYSTEM_PROPERTY))) {
+            putSymmetricCipherImpl("DESede/CBC/NoPadding",
+                PACKAGE_NAME + ".AndroidKeyStore3DESCipherSpi$CBC$NoPadding");
+            putSymmetricCipherImpl("DESede/CBC/PKCS7Padding",
+                PACKAGE_NAME + ".AndroidKeyStore3DESCipherSpi$CBC$PKCS7Padding");
+
+            putSymmetricCipherImpl("DESede/ECB/NoPadding",
+                PACKAGE_NAME + ".AndroidKeyStore3DESCipherSpi$ECB$NoPadding");
+            putSymmetricCipherImpl("DESede/ECB/PKCS7Padding",
+                PACKAGE_NAME + ".AndroidKeyStore3DESCipherSpi$ECB$PKCS7Padding");
+        }
+
+        putSymmetricCipherImpl("AES/GCM/NoPadding",
+                PACKAGE_NAME + ".AndroidKeyStoreAuthenticatedAESCipherSpi$GCM$NoPadding");
+
+        putAsymmetricCipherImpl("RSA/ECB/NoPadding",
+                PACKAGE_NAME + ".AndroidKeyStoreRSACipherSpi$NoPadding");
+        put("Alg.Alias.Cipher.RSA/None/NoPadding", "RSA/ECB/NoPadding");
+        putAsymmetricCipherImpl("RSA/ECB/PKCS1Padding",
+                PACKAGE_NAME + ".AndroidKeyStoreRSACipherSpi$PKCS1Padding");
+        put("Alg.Alias.Cipher.RSA/None/PKCS1Padding", "RSA/ECB/PKCS1Padding");
+        putAsymmetricCipherImpl("RSA/ECB/OAEPPadding",
+                PACKAGE_NAME + ".AndroidKeyStoreRSACipherSpi$OAEPWithSHA1AndMGF1Padding");
+        put("Alg.Alias.Cipher.RSA/None/OAEPPadding", "RSA/ECB/OAEPPadding");
+        putAsymmetricCipherImpl("RSA/ECB/OAEPWithSHA-1AndMGF1Padding",
+                PACKAGE_NAME + ".AndroidKeyStoreRSACipherSpi$OAEPWithSHA1AndMGF1Padding");
+        put("Alg.Alias.Cipher.RSA/None/OAEPWithSHA-1AndMGF1Padding",
+                "RSA/ECB/OAEPWithSHA-1AndMGF1Padding");
+        putAsymmetricCipherImpl("RSA/ECB/OAEPWithSHA-224AndMGF1Padding",
+                PACKAGE_NAME + ".AndroidKeyStoreRSACipherSpi$OAEPWithSHA224AndMGF1Padding");
+        put("Alg.Alias.Cipher.RSA/None/OAEPWithSHA-224AndMGF1Padding",
+                "RSA/ECB/OAEPWithSHA-256AndMGF1Padding");
+        putAsymmetricCipherImpl("RSA/ECB/OAEPWithSHA-256AndMGF1Padding",
+                PACKAGE_NAME + ".AndroidKeyStoreRSACipherSpi$OAEPWithSHA256AndMGF1Padding");
+        put("Alg.Alias.Cipher.RSA/None/OAEPWithSHA-256AndMGF1Padding",
+                "RSA/ECB/OAEPWithSHA-256AndMGF1Padding");
+        putAsymmetricCipherImpl("RSA/ECB/OAEPWithSHA-384AndMGF1Padding",
+                PACKAGE_NAME + ".AndroidKeyStoreRSACipherSpi$OAEPWithSHA384AndMGF1Padding");
+        put("Alg.Alias.Cipher.RSA/None/OAEPWithSHA-384AndMGF1Padding",
+                "RSA/ECB/OAEPWithSHA-384AndMGF1Padding");
+        putAsymmetricCipherImpl("RSA/ECB/OAEPWithSHA-512AndMGF1Padding",
+                PACKAGE_NAME + ".AndroidKeyStoreRSACipherSpi$OAEPWithSHA512AndMGF1Padding");
+        put("Alg.Alias.Cipher.RSA/None/OAEPWithSHA-512AndMGF1Padding",
+                "RSA/ECB/OAEPWithSHA-512AndMGF1Padding");
+
+        // --------------------- java.security.Signature
+        putSignatureImpl("NONEwithRSA",
+                PACKAGE_NAME + ".AndroidKeyStoreRSASignatureSpi$NONEWithPKCS1Padding");
+
+        putSignatureImpl("MD5withRSA",
+                PACKAGE_NAME + ".AndroidKeyStoreRSASignatureSpi$MD5WithPKCS1Padding");
+        put("Alg.Alias.Signature.MD5WithRSAEncryption", "MD5withRSA");
+        put("Alg.Alias.Signature.MD5/RSA", "MD5withRSA");
+        put("Alg.Alias.Signature.1.2.840.113549.1.1.4", "MD5withRSA");
+        put("Alg.Alias.Signature.1.2.840.113549.2.5with1.2.840.113549.1.1.1", "MD5withRSA");
+
+        putSignatureImpl("SHA1withRSA",
+                PACKAGE_NAME + ".AndroidKeyStoreRSASignatureSpi$SHA1WithPKCS1Padding");
+        put("Alg.Alias.Signature.SHA1WithRSAEncryption", "SHA1withRSA");
+        put("Alg.Alias.Signature.SHA1/RSA", "SHA1withRSA");
+        put("Alg.Alias.Signature.SHA-1/RSA", "SHA1withRSA");
+        put("Alg.Alias.Signature.1.2.840.113549.1.1.5", "SHA1withRSA");
+        put("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.113549.1.1.1", "SHA1withRSA");
+        put("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.113549.1.1.5", "SHA1withRSA");
+        put("Alg.Alias.Signature.1.3.14.3.2.29", "SHA1withRSA");
+
+        putSignatureImpl("SHA224withRSA",
+                PACKAGE_NAME + ".AndroidKeyStoreRSASignatureSpi$SHA224WithPKCS1Padding");
+        put("Alg.Alias.Signature.SHA224WithRSAEncryption", "SHA224withRSA");
+        put("Alg.Alias.Signature.1.2.840.113549.1.1.11", "SHA224withRSA");
+        put("Alg.Alias.Signature.2.16.840.1.101.3.4.2.4with1.2.840.113549.1.1.1",
+                "SHA224withRSA");
+        put("Alg.Alias.Signature.2.16.840.1.101.3.4.2.4with1.2.840.113549.1.1.11",
+                "SHA224withRSA");
+
+        putSignatureImpl("SHA256withRSA",
+                PACKAGE_NAME + ".AndroidKeyStoreRSASignatureSpi$SHA256WithPKCS1Padding");
+        put("Alg.Alias.Signature.SHA256WithRSAEncryption", "SHA256withRSA");
+        put("Alg.Alias.Signature.1.2.840.113549.1.1.11", "SHA256withRSA");
+        put("Alg.Alias.Signature.2.16.840.1.101.3.4.2.1with1.2.840.113549.1.1.1",
+                "SHA256withRSA");
+        put("Alg.Alias.Signature.2.16.840.1.101.3.4.2.1with1.2.840.113549.1.1.11",
+                "SHA256withRSA");
+
+        putSignatureImpl("SHA384withRSA",
+                PACKAGE_NAME + ".AndroidKeyStoreRSASignatureSpi$SHA384WithPKCS1Padding");
+        put("Alg.Alias.Signature.SHA384WithRSAEncryption", "SHA384withRSA");
+        put("Alg.Alias.Signature.1.2.840.113549.1.1.12", "SHA384withRSA");
+        put("Alg.Alias.Signature.2.16.840.1.101.3.4.2.2with1.2.840.113549.1.1.1",
+                "SHA384withRSA");
+
+        putSignatureImpl("SHA512withRSA",
+                PACKAGE_NAME + ".AndroidKeyStoreRSASignatureSpi$SHA512WithPKCS1Padding");
+        put("Alg.Alias.Signature.SHA512WithRSAEncryption", "SHA512withRSA");
+        put("Alg.Alias.Signature.1.2.840.113549.1.1.13", "SHA512withRSA");
+        put("Alg.Alias.Signature.2.16.840.1.101.3.4.2.3with1.2.840.113549.1.1.1",
+                "SHA512withRSA");
+
+        putSignatureImpl("SHA1withRSA/PSS",
+                PACKAGE_NAME + ".AndroidKeyStoreRSASignatureSpi$SHA1WithPSSPadding");
+        putSignatureImpl("SHA224withRSA/PSS",
+                PACKAGE_NAME + ".AndroidKeyStoreRSASignatureSpi$SHA224WithPSSPadding");
+        putSignatureImpl("SHA256withRSA/PSS",
+                PACKAGE_NAME + ".AndroidKeyStoreRSASignatureSpi$SHA256WithPSSPadding");
+        putSignatureImpl("SHA384withRSA/PSS",
+                PACKAGE_NAME + ".AndroidKeyStoreRSASignatureSpi$SHA384WithPSSPadding");
+        putSignatureImpl("SHA512withRSA/PSS",
+                PACKAGE_NAME + ".AndroidKeyStoreRSASignatureSpi$SHA512WithPSSPadding");
+
+        putSignatureImpl("NONEwithECDSA",
+                PACKAGE_NAME + ".AndroidKeyStoreECDSASignatureSpi$NONE");
+
+        putSignatureImpl("SHA1withECDSA", PACKAGE_NAME + ".AndroidKeyStoreECDSASignatureSpi$SHA1");
+        put("Alg.Alias.Signature.ECDSA", "SHA1withECDSA");
+        put("Alg.Alias.Signature.ECDSAwithSHA1", "SHA1withECDSA");
+        // iso(1) member-body(2) us(840) ansi-x962(10045) signatures(4) ecdsa-with-SHA1(1)
+        put("Alg.Alias.Signature.1.2.840.10045.4.1", "SHA1withECDSA");
+        put("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.10045.2.1", "SHA1withECDSA");
+
+        // iso(1) member-body(2) us(840) ansi-x962(10045) signatures(4) ecdsa-with-SHA2(3)
+        putSignatureImpl("SHA224withECDSA",
+                PACKAGE_NAME + ".AndroidKeyStoreECDSASignatureSpi$SHA224");
+        // ecdsa-with-SHA224(1)
+        put("Alg.Alias.Signature.1.2.840.10045.4.3.1", "SHA224withECDSA");
+        put("Alg.Alias.Signature.2.16.840.1.101.3.4.2.4with1.2.840.10045.2.1", "SHA224withECDSA");
+
+        // iso(1) member-body(2) us(840) ansi-x962(10045) signatures(4) ecdsa-with-SHA2(3)
+        putSignatureImpl("SHA256withECDSA",
+                PACKAGE_NAME + ".AndroidKeyStoreECDSASignatureSpi$SHA256");
+        // ecdsa-with-SHA256(2)
+        put("Alg.Alias.Signature.1.2.840.10045.4.3.2", "SHA256withECDSA");
+        put("Alg.Alias.Signature.2.16.840.1.101.3.4.2.1with1.2.840.10045.2.1", "SHA256withECDSA");
+
+        putSignatureImpl("SHA384withECDSA",
+                PACKAGE_NAME + ".AndroidKeyStoreECDSASignatureSpi$SHA384");
+        // ecdsa-with-SHA384(3)
+        put("Alg.Alias.Signature.1.2.840.10045.4.3.3", "SHA384withECDSA");
+        put("Alg.Alias.Signature.2.16.840.1.101.3.4.2.2with1.2.840.10045.2.1", "SHA384withECDSA");
+
+        putSignatureImpl("SHA512withECDSA",
+                PACKAGE_NAME + ".AndroidKeyStoreECDSASignatureSpi$SHA512");
+        // ecdsa-with-SHA512(4)
+        put("Alg.Alias.Signature.1.2.840.10045.4.3.4", "SHA512withECDSA");
+        put("Alg.Alias.Signature.2.16.840.1.101.3.4.2.3with1.2.840.10045.2.1", "SHA512withECDSA");
+    }
+
+    private void putMacImpl(String algorithm, String implClass) {
+        put("Mac." + algorithm, implClass);
+        put("Mac." + algorithm + " SupportedKeyClasses", KEYSTORE_SECRET_KEY_CLASS_NAME);
+    }
+
+    private void putSymmetricCipherImpl(String transformation, String implClass) {
+        put("Cipher." + transformation, implClass);
+        put("Cipher." + transformation + " SupportedKeyClasses", KEYSTORE_SECRET_KEY_CLASS_NAME);
+    }
+
+    private void putAsymmetricCipherImpl(String transformation, String implClass) {
+        put("Cipher." + transformation, implClass);
+        put("Cipher." + transformation + " SupportedKeyClasses",
+                KEYSTORE_PRIVATE_KEY_CLASS_NAME + "|" + KEYSTORE_PUBLIC_KEY_CLASS_NAME);
+    }
+
+    private void putSignatureImpl(String algorithm, String implClass) {
+        put("Signature." + algorithm, implClass);
+        put("Signature." + algorithm + " SupportedKeyClasses",
+                KEYSTORE_PRIVATE_KEY_CLASS_NAME + "|" + KEYSTORE_PUBLIC_KEY_CLASS_NAME);
+    }
+
+    public static String[] getSupportedEcdsaSignatureDigests() {
+        return new String[] {"NONE", "SHA-1", "SHA-224", "SHA-256", "SHA-384", "SHA-512"};
+    }
+
+    public static String[] getSupportedRsaSignatureWithPkcs1PaddingDigests() {
+        return new String[] {"NONE", "MD5", "SHA-1", "SHA-224", "SHA-256", "SHA-384", "SHA-512"};
+    }
+}
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreCipherSpiBase.java b/keystore/java/android/security/keystore2/AndroidKeyStoreCipherSpiBase.java
new file mode 100644
index 0000000..18d2692
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreCipherSpiBase.java
@@ -0,0 +1,905 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.annotation.CallSuper;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.hardware.keymint.KeyParameter;
+import android.security.KeyStoreException;
+import android.security.KeyStoreOperation;
+import android.security.keymaster.KeymasterDefs;
+import android.security.keystore.KeyStoreCryptoOperation;
+
+import libcore.util.EmptyArray;
+
+import java.nio.BufferOverflowException;
+import java.nio.ByteBuffer;
+import java.security.AlgorithmParameters;
+import java.security.GeneralSecurityException;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.InvalidParameterException;
+import java.security.Key;
+import java.security.KeyFactory;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
+import java.security.ProviderException;
+import java.security.PublicKey;
+import java.security.SecureRandom;
+import java.security.spec.AlgorithmParameterSpec;
+import java.security.spec.InvalidKeySpecException;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.security.spec.X509EncodedKeySpec;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.crypto.AEADBadTagException;
+import javax.crypto.BadPaddingException;
+import javax.crypto.Cipher;
+import javax.crypto.CipherSpi;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.NoSuchPaddingException;
+import javax.crypto.SecretKey;
+import javax.crypto.SecretKeyFactory;
+import javax.crypto.ShortBufferException;
+import javax.crypto.spec.SecretKeySpec;
+
+/**
+ * Base class for {@link CipherSpi} implementations of Android KeyStore backed ciphers.
+ *
+ * @hide
+ */
+abstract class AndroidKeyStoreCipherSpiBase extends CipherSpi implements KeyStoreCryptoOperation {
+    private static final String TAG = "AndroidKeyStoreCipherSpiBase";
+
+    // Fields below are populated by Cipher.init and KeyStore.begin and should be preserved after
+    // doFinal finishes.
+    private boolean mEncrypting;
+    private int mKeymasterPurposeOverride = -1;
+    private AndroidKeyStoreKey mKey;
+    private SecureRandom mRng;
+
+    /**
+     * Object representing this operation inside keystore service. It is initialized
+     * by {@code engineInit} and is invalidated when {@code engineDoFinal} succeeds and on some
+     * error conditions in between.
+     */
+    private KeyStoreOperation mOperation;
+    /**
+     * The operation challenge is required when an operation needs user authorization.
+     * The challenge is subjected to an authenticator, e.g., Gatekeeper or a biometric
+     * authenticator, and included in the authentication token minted by this authenticator.
+     * It may be null, if the operation does not require authorization.
+     */
+    private long mOperationChallenge;
+    private KeyStoreCryptoOperationStreamer mMainDataStreamer;
+    private KeyStoreCryptoOperationStreamer mAdditionalAuthenticationDataStreamer;
+    private boolean mAdditionalAuthenticationDataStreamerClosed;
+
+    /**
+     * Encountered exception which could not be immediately thrown because it was encountered inside
+     * a method that does not throw checked exception. This exception will be thrown from
+     * {@code engineDoFinal}. Once such an exception is encountered, {@code engineUpdate} and
+     * {@code engineDoFinal} start ignoring input data.
+     */
+    private Exception mCachedException;
+
+    AndroidKeyStoreCipherSpiBase() {
+        mOperation = null;
+        mEncrypting = false;
+        mKeymasterPurposeOverride = -1;
+        mKey = null;
+        mRng = null;
+        mOperationChallenge = 0;
+        mMainDataStreamer = null;
+        mAdditionalAuthenticationDataStreamer = null;
+        mAdditionalAuthenticationDataStreamerClosed = false;
+        mCachedException = null;
+    }
+
+    @Override
+    protected final void engineInit(int opmode, Key key, SecureRandom random)
+            throws InvalidKeyException {
+        resetAll();
+
+        boolean success = false;
+        try {
+            init(opmode, key, random);
+            initAlgorithmSpecificParameters();
+            try {
+                ensureKeystoreOperationInitialized();
+            } catch (InvalidAlgorithmParameterException e) {
+                throw new InvalidKeyException(e);
+            }
+            success = true;
+        } finally {
+            if (!success) {
+                resetAll();
+            }
+        }
+    }
+
+    @Override
+    protected final void engineInit(int opmode, Key key, AlgorithmParameters params,
+            SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException {
+        resetAll();
+
+        boolean success = false;
+        try {
+            init(opmode, key, random);
+            initAlgorithmSpecificParameters(params);
+            ensureKeystoreOperationInitialized();
+            success = true;
+        } finally {
+            if (!success) {
+                resetAll();
+            }
+        }
+    }
+
+    @Override
+    protected final void engineInit(int opmode, Key key, AlgorithmParameterSpec params,
+            SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException {
+        resetAll();
+
+        boolean success = false;
+        try {
+            init(opmode, key, random);
+            initAlgorithmSpecificParameters(params);
+            ensureKeystoreOperationInitialized();
+            success = true;
+        } finally {
+            if (!success) {
+                resetAll();
+            }
+        }
+    }
+
+    private void init(int opmode, Key key, SecureRandom random) throws InvalidKeyException {
+        switch (opmode) {
+            case Cipher.ENCRYPT_MODE:
+            case Cipher.WRAP_MODE:
+                mEncrypting = true;
+                break;
+            case Cipher.DECRYPT_MODE:
+            case Cipher.UNWRAP_MODE:
+                mEncrypting = false;
+                break;
+            default:
+                throw new InvalidParameterException("Unsupported opmode: " + opmode);
+        }
+        initKey(opmode, key);
+        if (mKey == null) {
+            throw new ProviderException("initKey did not initialize the key");
+        }
+        mRng = random;
+    }
+
+    private void abortOperation() {
+        KeyStoreCryptoOperationUtils.abortOperation(mOperation);
+        mOperation = null;
+    }
+
+    /**
+     * Resets this cipher to its pristine pre-init state. This must be equivalent to obtaining a new
+     * cipher instance.
+     *
+     * <p>Subclasses storing additional state should override this method, reset the additional
+     * state, and then chain to superclass.
+     */
+    @CallSuper
+    protected void resetAll() {
+        abortOperation();
+        mEncrypting = false;
+        mKeymasterPurposeOverride = -1;
+        mKey = null;
+        mRng = null;
+        mOperationChallenge = 0;
+        mMainDataStreamer = null;
+        mAdditionalAuthenticationDataStreamer = null;
+        mAdditionalAuthenticationDataStreamerClosed = false;
+        mCachedException = null;
+    }
+
+    /**
+     * Resets this cipher while preserving the initialized state. This must be equivalent to
+     * rolling back the cipher's state to just after the most recent {@code engineInit} completed
+     * successfully.
+     *
+     * <p>Subclasses storing additional post-init state should override this method, reset the
+     * additional state, and then chain to superclass.
+     */
+    @CallSuper
+    protected void resetWhilePreservingInitState() {
+        abortOperation();
+        mOperationChallenge = 0;
+        mMainDataStreamer = null;
+        mAdditionalAuthenticationDataStreamer = null;
+        mAdditionalAuthenticationDataStreamerClosed = false;
+        mCachedException = null;
+    }
+
+    private void ensureKeystoreOperationInitialized() throws InvalidKeyException,
+            InvalidAlgorithmParameterException {
+        if (mMainDataStreamer != null) {
+            return;
+        }
+        if (mCachedException != null) {
+            return;
+        }
+        if (mKey == null) {
+            throw new IllegalStateException("Not initialized");
+        }
+
+        List<KeyParameter> parameters = new ArrayList<>();
+        addAlgorithmSpecificParametersToBegin(parameters);
+
+        int purpose;
+        if (mKeymasterPurposeOverride != -1) {
+            purpose = mKeymasterPurposeOverride;
+        } else {
+            purpose = mEncrypting
+                    ? KeymasterDefs.KM_PURPOSE_ENCRYPT : KeymasterDefs.KM_PURPOSE_DECRYPT;
+        }
+
+        parameters.add(KeyStore2ParameterUtils.makeEnum(KeymasterDefs.KM_TAG_PURPOSE, purpose));
+
+        try {
+            mOperation = mKey.getSecurityLevel().createOperation(
+                    mKey.getKeyIdDescriptor(),
+                    parameters
+            );
+        } catch (KeyStoreException keyStoreException) {
+            GeneralSecurityException e = KeyStoreCryptoOperationUtils.getExceptionForCipherInit(
+                    mKey, keyStoreException);
+            if (e != null) {
+                if (e instanceof InvalidKeyException) {
+                    throw (InvalidKeyException) e;
+                } else if (e instanceof InvalidAlgorithmParameterException) {
+                    throw (InvalidAlgorithmParameterException) e;
+                } else {
+                    throw new ProviderException("Unexpected exception type", e);
+                }
+            }
+        }
+
+        // Now we check if we got an operation challenge. This indicates that user authorization
+        // is required. And if we got a challenge we check if the authorization can possibly
+        // succeed.
+        mOperationChallenge = KeyStoreCryptoOperationUtils.getOrMakeOperationChallenge(
+                mOperation, mKey);
+
+        loadAlgorithmSpecificParametersFromBeginResult(mOperation.getParameters());
+        mMainDataStreamer = createMainDataStreamer(mOperation);
+        mAdditionalAuthenticationDataStreamer =
+                createAdditionalAuthenticationDataStreamer(mOperation);
+        mAdditionalAuthenticationDataStreamerClosed = false;
+    }
+
+    /**
+     * Creates a streamer which sends plaintext/ciphertext into the provided KeyStore and receives
+     * the corresponding ciphertext/plaintext from the KeyStore.
+     *
+     * <p>This implementation returns a working streamer.
+     */
+    @NonNull
+    protected KeyStoreCryptoOperationStreamer createMainDataStreamer(
+            KeyStoreOperation operation) {
+        return new KeyStoreCryptoOperationChunkedStreamer(
+                new KeyStoreCryptoOperationChunkedStreamer.MainDataStream(
+                        operation), 0);
+    }
+
+    /**
+     * Creates a streamer which sends Additional Authentication Data (AAD) into the KeyStore.
+     *
+     * <p>This implementation returns {@code null}.
+     *
+     * @return stream or {@code null} if AAD is not supported by this cipher.
+     */
+    @Nullable
+    protected KeyStoreCryptoOperationStreamer createAdditionalAuthenticationDataStreamer(
+            @SuppressWarnings("unused") KeyStoreOperation operation) {
+        return null;
+    }
+
+    @Override
+    protected final byte[] engineUpdate(byte[] input, int inputOffset, int inputLen) {
+        if (mCachedException != null) {
+            return null;
+        }
+        try {
+            ensureKeystoreOperationInitialized();
+        } catch (InvalidKeyException | InvalidAlgorithmParameterException e) {
+            mCachedException = e;
+            return null;
+        }
+
+        if (inputLen == 0) {
+            return null;
+        }
+
+        byte[] output;
+        try {
+            flushAAD();
+            output = mMainDataStreamer.update(input, inputOffset, inputLen);
+        } catch (KeyStoreException e) {
+            mCachedException = e;
+            return null;
+        }
+
+        if (output.length == 0) {
+            return null;
+        }
+
+        return output;
+    }
+
+    private void flushAAD() throws KeyStoreException {
+        if ((mAdditionalAuthenticationDataStreamer != null)
+                && (!mAdditionalAuthenticationDataStreamerClosed)) {
+            byte[] output;
+            try {
+                output = mAdditionalAuthenticationDataStreamer.doFinal(
+                        EmptyArray.BYTE, 0, 0,
+                        null); // no signature
+            } finally {
+                mAdditionalAuthenticationDataStreamerClosed = true;
+            }
+            if ((output != null) && (output.length > 0)) {
+                throw new ProviderException(
+                        "AAD update unexpectedly returned data: " + output.length + " bytes");
+            }
+        }
+    }
+
+    @Override
+    protected final int engineUpdate(byte[] input, int inputOffset, int inputLen, byte[] output,
+            int outputOffset) throws ShortBufferException {
+        byte[] outputCopy = engineUpdate(input, inputOffset, inputLen);
+        if (outputCopy == null) {
+            return 0;
+        }
+        int outputAvailable = output.length - outputOffset;
+        if (outputCopy.length > outputAvailable) {
+            throw new ShortBufferException("Output buffer too short. Produced: "
+                    + outputCopy.length + ", available: " + outputAvailable);
+        }
+        System.arraycopy(outputCopy, 0, output, outputOffset, outputCopy.length);
+        return outputCopy.length;
+    }
+
+    @Override
+    protected final int engineUpdate(ByteBuffer input, ByteBuffer output)
+            throws ShortBufferException {
+        if (input == null) {
+            throw new NullPointerException("input == null");
+        }
+        if (output == null) {
+            throw new NullPointerException("output == null");
+        }
+
+        int inputSize = input.remaining();
+        byte[] outputArray;
+        if (input.hasArray()) {
+            outputArray =
+                    engineUpdate(
+                            input.array(), input.arrayOffset() + input.position(), inputSize);
+            input.position(input.position() + inputSize);
+        } else {
+            byte[] inputArray = new byte[inputSize];
+            input.get(inputArray);
+            outputArray = engineUpdate(inputArray, 0, inputSize);
+        }
+
+        int outputSize = (outputArray != null) ? outputArray.length : 0;
+        if (outputSize > 0) {
+            int outputBufferAvailable = output.remaining();
+            try {
+                output.put(outputArray);
+            } catch (BufferOverflowException e) {
+                throw new ShortBufferException(
+                        "Output buffer too small. Produced: " + outputSize + ", available: "
+                                + outputBufferAvailable);
+            }
+        }
+        return outputSize;
+    }
+
+    @Override
+    protected final void engineUpdateAAD(byte[] input, int inputOffset, int inputLen) {
+        if (mCachedException != null) {
+            return;
+        }
+
+        try {
+            ensureKeystoreOperationInitialized();
+        } catch (InvalidKeyException | InvalidAlgorithmParameterException e) {
+            mCachedException = e;
+            return;
+        }
+
+        if (mAdditionalAuthenticationDataStreamerClosed) {
+            throw new IllegalStateException(
+                    "AAD can only be provided before Cipher.update is invoked");
+        }
+
+        if (mAdditionalAuthenticationDataStreamer == null) {
+            throw new IllegalStateException("This cipher does not support AAD");
+        }
+
+        byte[] output;
+        try {
+            output = mAdditionalAuthenticationDataStreamer.update(input, inputOffset, inputLen);
+        } catch (KeyStoreException e) {
+            mCachedException = e;
+            return;
+        }
+
+        if ((output != null) && (output.length > 0)) {
+            throw new ProviderException("AAD update unexpectedly produced output: "
+                    + output.length + " bytes");
+        }
+    }
+
+    @Override
+    protected final void engineUpdateAAD(ByteBuffer src) {
+        if (src == null) {
+            throw new IllegalArgumentException("src == null");
+        }
+        if (!src.hasRemaining()) {
+            return;
+        }
+
+        byte[] input;
+        int inputOffset;
+        int inputLen;
+        if (src.hasArray()) {
+            input = src.array();
+            inputOffset = src.arrayOffset() + src.position();
+            inputLen = src.remaining();
+            src.position(src.limit());
+        } else {
+            input = new byte[src.remaining()];
+            inputOffset = 0;
+            inputLen = input.length;
+            src.get(input);
+        }
+        engineUpdateAAD(input, inputOffset, inputLen);
+    }
+
+    @Override
+    protected final byte[] engineDoFinal(byte[] input, int inputOffset, int inputLen)
+            throws IllegalBlockSizeException, BadPaddingException {
+        if (mCachedException != null) {
+            throw (IllegalBlockSizeException)
+                    new IllegalBlockSizeException().initCause(mCachedException);
+        }
+
+        try {
+            ensureKeystoreOperationInitialized();
+        } catch (InvalidKeyException | InvalidAlgorithmParameterException e) {
+            throw (IllegalBlockSizeException) new IllegalBlockSizeException().initCause(e);
+        }
+
+        byte[] output;
+        try {
+            flushAAD();
+            output = mMainDataStreamer.doFinal(
+                    input, inputOffset, inputLen,
+                    null); // no signature involved
+        } catch (KeyStoreException e) {
+            switch (e.getErrorCode()) {
+                case KeymasterDefs.KM_ERROR_INVALID_ARGUMENT:
+                    throw (BadPaddingException) new BadPaddingException().initCause(e);
+                case KeymasterDefs.KM_ERROR_VERIFICATION_FAILED:
+                    throw (AEADBadTagException) new AEADBadTagException().initCause(e);
+                default:
+                    throw (IllegalBlockSizeException) new IllegalBlockSizeException().initCause(e);
+            }
+        }
+
+        resetWhilePreservingInitState();
+        return output;
+    }
+
+    @Override
+    protected final int engineDoFinal(byte[] input, int inputOffset, int inputLen, byte[] output,
+            int outputOffset) throws ShortBufferException, IllegalBlockSizeException,
+            BadPaddingException {
+        byte[] outputCopy = engineDoFinal(input, inputOffset, inputLen);
+        if (outputCopy == null) {
+            return 0;
+        }
+        int outputAvailable = output.length - outputOffset;
+        if (outputCopy.length > outputAvailable) {
+            throw new ShortBufferException("Output buffer too short. Produced: "
+                    + outputCopy.length + ", available: " + outputAvailable);
+        }
+        System.arraycopy(outputCopy, 0, output, outputOffset, outputCopy.length);
+        return outputCopy.length;
+    }
+
+    @Override
+    protected final int engineDoFinal(ByteBuffer input, ByteBuffer output)
+            throws ShortBufferException, IllegalBlockSizeException, BadPaddingException {
+        if (input == null) {
+            throw new NullPointerException("input == null");
+        }
+        if (output == null) {
+            throw new NullPointerException("output == null");
+        }
+
+        int inputSize = input.remaining();
+        byte[] outputArray;
+        if (input.hasArray()) {
+            outputArray =
+                    engineDoFinal(
+                            input.array(), input.arrayOffset() + input.position(), inputSize);
+            input.position(input.position() + inputSize);
+        } else {
+            byte[] inputArray = new byte[inputSize];
+            input.get(inputArray);
+            outputArray = engineDoFinal(inputArray, 0, inputSize);
+        }
+
+        int outputSize = (outputArray != null) ? outputArray.length : 0;
+        if (outputSize > 0) {
+            int outputBufferAvailable = output.remaining();
+            try {
+                output.put(outputArray);
+            } catch (BufferOverflowException e) {
+                throw new ShortBufferException(
+                        "Output buffer too small. Produced: " + outputSize + ", available: "
+                                + outputBufferAvailable);
+            }
+        }
+        return outputSize;
+    }
+
+    @Override
+    protected final byte[] engineWrap(Key key)
+            throws IllegalBlockSizeException, InvalidKeyException {
+        if (mKey == null) {
+            throw new IllegalStateException("Not initilized");
+        }
+
+        if (!isEncrypting()) {
+            throw new IllegalStateException(
+                    "Cipher must be initialized in Cipher.WRAP_MODE to wrap keys");
+        }
+
+        if (key == null) {
+            throw new NullPointerException("key == null");
+        }
+        byte[] encoded = null;
+        if (key instanceof SecretKey) {
+            if ("RAW".equalsIgnoreCase(key.getFormat())) {
+                encoded = key.getEncoded();
+            }
+            if (encoded == null) {
+                try {
+                    SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(key.getAlgorithm());
+                    SecretKeySpec spec =
+                            (SecretKeySpec) keyFactory.getKeySpec(
+                                    (SecretKey) key, SecretKeySpec.class);
+                    encoded = spec.getEncoded();
+                } catch (NoSuchAlgorithmException | InvalidKeySpecException e) {
+                    throw new InvalidKeyException(
+                            "Failed to wrap key because it does not export its key material",
+                            e);
+                }
+            }
+        } else if (key instanceof PrivateKey) {
+            if ("PKCS8".equalsIgnoreCase(key.getFormat())) {
+                encoded = key.getEncoded();
+            }
+            if (encoded == null) {
+                try {
+                    KeyFactory keyFactory = KeyFactory.getInstance(key.getAlgorithm());
+                    PKCS8EncodedKeySpec spec =
+                            keyFactory.getKeySpec(key, PKCS8EncodedKeySpec.class);
+                    encoded = spec.getEncoded();
+                } catch (NoSuchAlgorithmException | InvalidKeySpecException e) {
+                    throw new InvalidKeyException(
+                            "Failed to wrap key because it does not export its key material",
+                            e);
+                }
+            }
+        } else if (key instanceof PublicKey) {
+            if ("X.509".equalsIgnoreCase(key.getFormat())) {
+                encoded = key.getEncoded();
+            }
+            if (encoded == null) {
+                try {
+                    KeyFactory keyFactory = KeyFactory.getInstance(key.getAlgorithm());
+                    X509EncodedKeySpec spec =
+                            keyFactory.getKeySpec(key, X509EncodedKeySpec.class);
+                    encoded = spec.getEncoded();
+                } catch (NoSuchAlgorithmException | InvalidKeySpecException e) {
+                    throw new InvalidKeyException(
+                            "Failed to wrap key because it does not export its key material",
+                            e);
+                }
+            }
+        } else {
+            throw new InvalidKeyException("Unsupported key type: " + key.getClass().getName());
+        }
+
+        if (encoded == null) {
+            throw new InvalidKeyException(
+                    "Failed to wrap key because it does not export its key material");
+        }
+
+        try {
+            return engineDoFinal(encoded, 0, encoded.length);
+        } catch (BadPaddingException e) {
+            throw (IllegalBlockSizeException) new IllegalBlockSizeException().initCause(e);
+        }
+    }
+
+    @Override
+    protected final Key engineUnwrap(byte[] wrappedKey, String wrappedKeyAlgorithm,
+            int wrappedKeyType) throws InvalidKeyException, NoSuchAlgorithmException {
+        if (mKey == null) {
+            throw new IllegalStateException("Not initilized");
+        }
+
+        if (isEncrypting()) {
+            throw new IllegalStateException(
+                    "Cipher must be initialized in Cipher.WRAP_MODE to wrap keys");
+        }
+
+        if (wrappedKey == null) {
+            throw new NullPointerException("wrappedKey == null");
+        }
+
+        byte[] encoded;
+        try {
+            encoded = engineDoFinal(wrappedKey, 0, wrappedKey.length);
+        } catch (IllegalBlockSizeException | BadPaddingException e) {
+            throw new InvalidKeyException("Failed to unwrap key", e);
+        }
+
+        switch (wrappedKeyType) {
+            case Cipher.SECRET_KEY:
+            {
+                return new SecretKeySpec(encoded, wrappedKeyAlgorithm);
+                // break;
+            }
+            case Cipher.PRIVATE_KEY:
+            {
+                KeyFactory keyFactory = KeyFactory.getInstance(wrappedKeyAlgorithm);
+                try {
+                    return keyFactory.generatePrivate(new PKCS8EncodedKeySpec(encoded));
+                } catch (InvalidKeySpecException e) {
+                    throw new InvalidKeyException(
+                            "Failed to create private key from its PKCS#8 encoded form", e);
+                }
+                // break;
+            }
+            case Cipher.PUBLIC_KEY:
+            {
+                KeyFactory keyFactory = KeyFactory.getInstance(wrappedKeyAlgorithm);
+                try {
+                    return keyFactory.generatePublic(new X509EncodedKeySpec(encoded));
+                } catch (InvalidKeySpecException e) {
+                    throw new InvalidKeyException(
+                            "Failed to create public key from its X.509 encoded form", e);
+                }
+                // break;
+            }
+            default:
+                throw new InvalidParameterException(
+                        "Unsupported wrappedKeyType: " + wrappedKeyType);
+        }
+    }
+
+    @Override
+    protected final void engineSetMode(String mode) throws NoSuchAlgorithmException {
+        // This should never be invoked because all algorithms registered with the AndroidKeyStore
+        // provide explicitly specify block mode.
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    protected final void engineSetPadding(String arg0) throws NoSuchPaddingException {
+        // This should never be invoked because all algorithms registered with the AndroidKeyStore
+        // provide explicitly specify padding mode.
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    protected final int engineGetKeySize(Key key) throws InvalidKeyException {
+        throw new UnsupportedOperationException();
+    }
+
+    @CallSuper
+    @Override
+    public void finalize() throws Throwable {
+        try {
+            abortOperation();
+        } finally {
+            super.finalize();
+        }
+    }
+
+    @Override
+    public final long getOperationHandle() {
+        return mOperationChallenge;
+    }
+
+    protected final void setKey(@NonNull AndroidKeyStoreKey key) {
+        mKey = key;
+    }
+
+    /**
+     * Overrides the default purpose/type of the crypto operation.
+     */
+    protected final void setKeymasterPurposeOverride(int keymasterPurpose) {
+        mKeymasterPurposeOverride = keymasterPurpose;
+    }
+
+    protected final int getKeymasterPurposeOverride() {
+        return mKeymasterPurposeOverride;
+    }
+
+    /**
+     * Returns {@code true} if this cipher is initialized for encryption, {@code false} if this
+     * cipher is initialized for decryption.
+     */
+    protected final boolean isEncrypting() {
+        return mEncrypting;
+    }
+
+    protected final long getConsumedInputSizeBytes() {
+        if (mMainDataStreamer == null) {
+            throw new IllegalStateException("Not initialized");
+        }
+        return mMainDataStreamer.getConsumedInputSizeBytes();
+    }
+
+    protected final long getProducedOutputSizeBytes() {
+        if (mMainDataStreamer == null) {
+            throw new IllegalStateException("Not initialized");
+        }
+        return mMainDataStreamer.getProducedOutputSizeBytes();
+    }
+
+    static String opmodeToString(int opmode) {
+        switch (opmode) {
+            case Cipher.ENCRYPT_MODE:
+                return "ENCRYPT_MODE";
+            case Cipher.DECRYPT_MODE:
+                return "DECRYPT_MODE";
+            case Cipher.WRAP_MODE:
+                return "WRAP_MODE";
+            case Cipher.UNWRAP_MODE:
+                return "UNWRAP_MODE";
+            default:
+                return String.valueOf(opmode);
+        }
+    }
+
+    // The methods below need to be implemented by subclasses.
+
+    /**
+     * Initializes this cipher with the provided key.
+     *
+     * @throws InvalidKeyException if the {@code key} is not suitable for this cipher in the
+     *         specified {@code opmode}.
+     *
+     * @see #setKey(AndroidKeyStoreKey)
+     */
+    protected abstract void initKey(int opmode, @Nullable Key key) throws InvalidKeyException;
+
+    /**
+     * Returns algorithm-specific parameters used by this cipher or {@code null} if no
+     * algorithm-specific parameters are used.
+     */
+    @Nullable
+    @Override
+    protected abstract AlgorithmParameters engineGetParameters();
+
+    /**
+     * Invoked by {@code engineInit} to initialize algorithm-specific parameters when no additional
+     * initialization parameters were provided.
+     *
+     * @throws InvalidKeyException if this cipher cannot be configured based purely on the provided
+     *         key and needs additional parameters to be provided to {@code Cipher.init}.
+     */
+    protected abstract void initAlgorithmSpecificParameters() throws InvalidKeyException;
+
+    /**
+     * Invoked by {@code engineInit} to initialize algorithm-specific parameters when additional
+     * parameters were provided.
+     *
+     * @param params additional algorithm parameters or {@code null} if not specified.
+     *
+     * @throws InvalidAlgorithmParameterException if there is insufficient information to configure
+     *         this cipher or if the provided parameters are not suitable for this cipher.
+     */
+    protected abstract void initAlgorithmSpecificParameters(
+            @Nullable AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException;
+
+    /**
+     * Invoked by {@code engineInit} to initialize algorithm-specific parameters when additional
+     * parameters were provided.
+     *
+     * @param params additional algorithm parameters or {@code null} if not specified.
+     *
+     * @throws InvalidAlgorithmParameterException if there is insufficient information to configure
+     *         this cipher or if the provided parameters are not suitable for this cipher.
+     */
+    protected abstract void initAlgorithmSpecificParameters(@Nullable AlgorithmParameters params)
+            throws InvalidAlgorithmParameterException;
+
+    /**
+     * Returns the amount of additional entropy (in bytes) to be provided to the KeyStore's
+     * {@code begin} operation. This amount of entropy is typically what's consumed to generate
+     * random parameters, such as IV.
+     *
+     * <p>For decryption, the return value should be {@code 0} because decryption should not be
+     * consuming any entropy. For encryption, the value combined with
+     * {@link #getAdditionalEntropyAmountForFinish()} should match (or exceed) the amount of Shannon
+     * entropy of the ciphertext produced by this cipher assuming the key, the plaintext, and all
+     * explicitly provided parameters to {@code Cipher.init} are known. For example, for AES CBC
+     * encryption with an explicitly provided IV the return value should be {@code 0}, whereas for
+     * the case where IV is generated by the KeyStore's {@code begin} operation it should be
+     * {@code 16}.
+     */
+    protected abstract int getAdditionalEntropyAmountForBegin();
+
+    /**
+     * Returns the amount of additional entropy (in bytes) to be provided to the KeyStore's
+     * {@code finish} operation. This amount of entropy is typically what's consumed by encryption
+     * padding scheme.
+     *
+     * <p>For decryption, the return value should be {@code 0} because decryption should not be
+     * consuming any entropy. For encryption, the value combined with
+     * {@link #getAdditionalEntropyAmountForBegin()} should match (or exceed) the amount of Shannon
+     * entropy of the ciphertext produced by this cipher assuming the key, the plaintext, and all
+     * explicitly provided parameters to {@code Cipher.init} are known. For example, for RSA with
+     * OAEP the return value should be the size of the OAEP hash output. For RSA with PKCS#1 padding
+     * the return value should be the size of the padding string or could be raised (for simplicity)
+     * to the size of the modulus.
+     */
+    protected abstract int getAdditionalEntropyAmountForFinish();
+
+    /**
+     * Invoked to add algorithm-specific parameters for the KeyStore's {@code begin} operation.
+     *
+     * @param parameters keystore/keymaster arguments to be populated with algorithm-specific
+     *        parameters.
+     */
+    protected abstract void addAlgorithmSpecificParametersToBegin(
+            @NonNull List<KeyParameter> parameters);
+
+    /**
+     * Invoked to obtain algorithm-specific parameters from the result of the KeyStore's
+     * {@code begin} operation.
+     *
+     * <p>Some parameters, such as IV, are not required to be provided to {@code Cipher.init}. Such
+     * parameters, if not provided, must be generated by KeyStore and returned to the user of
+     * {@code Cipher} and potentially reused after {@code doFinal}.
+     *
+     * @param parameters keystore/keymaster arguments returned by KeyStore {@code createOperation}.
+     */
+    protected abstract void loadAlgorithmSpecificParametersFromBeginResult(
+            KeyParameter[] parameters);
+}
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreECDSASignatureSpi.java b/keystore/java/android/security/keystore2/AndroidKeyStoreECDSASignatureSpi.java
new file mode 100644
index 0000000..2250c89
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreECDSASignatureSpi.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.annotation.NonNull;
+import android.hardware.keymint.KeyParameter;
+import android.security.KeyStoreException;
+import android.security.KeyStoreOperation;
+import android.security.keymaster.KeymasterDefs;
+import android.security.keystore.KeyProperties;
+import android.system.keystore2.Authorization;
+
+import libcore.util.EmptyArray;
+
+import java.io.ByteArrayOutputStream;
+import java.security.InvalidKeyException;
+import java.security.SignatureSpi;
+import java.util.List;
+
+/**
+ * Base class for {@link SignatureSpi} providing Android KeyStore backed ECDSA signatures.
+ *
+ * @hide
+ */
+abstract class AndroidKeyStoreECDSASignatureSpi extends AndroidKeyStoreSignatureSpiBase {
+
+    public final static class NONE extends AndroidKeyStoreECDSASignatureSpi {
+        public NONE() {
+            super(KeymasterDefs.KM_DIGEST_NONE);
+        }
+
+        @Override
+        protected KeyStoreCryptoOperationStreamer createMainDataStreamer(
+                KeyStoreOperation operation) {
+            return new TruncateToFieldSizeMessageStreamer(
+                    super.createMainDataStreamer(operation),
+                    getGroupSizeBits());
+        }
+
+        /**
+         * Streamer which buffers all input, then truncates it to field size, and then sends it into
+         * KeyStore via the provided delegate streamer.
+         */
+        private static class TruncateToFieldSizeMessageStreamer
+                implements KeyStoreCryptoOperationStreamer {
+
+            private final KeyStoreCryptoOperationStreamer mDelegate;
+            private final int mGroupSizeBits;
+            private final ByteArrayOutputStream mInputBuffer = new ByteArrayOutputStream();
+            private long mConsumedInputSizeBytes;
+
+            private TruncateToFieldSizeMessageStreamer(
+                    KeyStoreCryptoOperationStreamer delegate,
+                    int groupSizeBits) {
+                mDelegate = delegate;
+                mGroupSizeBits = groupSizeBits;
+            }
+
+            @Override
+            public byte[] update(byte[] input, int inputOffset, int inputLength)
+                    throws KeyStoreException {
+                if (inputLength > 0) {
+                    mInputBuffer.write(input, inputOffset, inputLength);
+                    mConsumedInputSizeBytes += inputLength;
+                }
+                return EmptyArray.BYTE;
+            }
+
+            @Override
+            public byte[] doFinal(byte[] input, int inputOffset, int inputLength, byte[] signature)
+                    throws KeyStoreException {
+                if (inputLength > 0) {
+                    mConsumedInputSizeBytes += inputLength;
+                    mInputBuffer.write(input, inputOffset, inputLength);
+                }
+
+                byte[] bufferedInput = mInputBuffer.toByteArray();
+                mInputBuffer.reset();
+                // Truncate input at field size (bytes)
+                return mDelegate.doFinal(bufferedInput,
+                        0,
+                        Math.min(bufferedInput.length, ((mGroupSizeBits + 7) / 8)),
+                        signature);
+            }
+
+            @Override
+            public long getConsumedInputSizeBytes() {
+                return mConsumedInputSizeBytes;
+            }
+
+            @Override
+            public long getProducedOutputSizeBytes() {
+                return mDelegate.getProducedOutputSizeBytes();
+            }
+        }
+    }
+
+    public final static class SHA1 extends AndroidKeyStoreECDSASignatureSpi {
+        public SHA1() {
+            super(KeymasterDefs.KM_DIGEST_SHA1);
+        }
+    }
+
+    public final static class SHA224 extends AndroidKeyStoreECDSASignatureSpi {
+        public SHA224() {
+            super(KeymasterDefs.KM_DIGEST_SHA_2_224);
+        }
+    }
+
+    public final static class SHA256 extends AndroidKeyStoreECDSASignatureSpi {
+        public SHA256() {
+            super(KeymasterDefs.KM_DIGEST_SHA_2_256);
+        }
+    }
+
+    public final static class SHA384 extends AndroidKeyStoreECDSASignatureSpi {
+        public SHA384() {
+            super(KeymasterDefs.KM_DIGEST_SHA_2_384);
+        }
+    }
+
+    public final static class SHA512 extends AndroidKeyStoreECDSASignatureSpi {
+        public SHA512() {
+            super(KeymasterDefs.KM_DIGEST_SHA_2_512);
+        }
+    }
+
+    private final int mKeymasterDigest;
+
+    private int mGroupSizeBits = -1;
+
+    AndroidKeyStoreECDSASignatureSpi(int keymasterDigest) {
+        mKeymasterDigest = keymasterDigest;
+    }
+
+    @Override
+    protected final void initKey(AndroidKeyStoreKey key) throws InvalidKeyException {
+        if (!KeyProperties.KEY_ALGORITHM_EC.equalsIgnoreCase(key.getAlgorithm())) {
+            throw new InvalidKeyException("Unsupported key algorithm: " + key.getAlgorithm()
+                    + ". Only" + KeyProperties.KEY_ALGORITHM_EC + " supported");
+        }
+
+        long keySizeBits = -1;
+        for (Authorization a : key.getAuthorizations()) {
+            if (a.keyParameter.tag == KeymasterDefs.KM_TAG_KEY_SIZE) {
+                keySizeBits = KeyStore2ParameterUtils.getUnsignedInt(a);
+            }
+        }
+
+        if (keySizeBits == -1) {
+            throw new InvalidKeyException("Size of key not known");
+        } else if (keySizeBits > Integer.MAX_VALUE) {
+            throw new InvalidKeyException("Key too large: " + keySizeBits + " bits");
+        }
+        mGroupSizeBits = (int) keySizeBits;
+
+        super.initKey(key);
+    }
+
+    @Override
+    protected final void resetAll() {
+        mGroupSizeBits = -1;
+        super.resetAll();
+    }
+
+    @Override
+    protected final void resetWhilePreservingInitState() {
+        super.resetWhilePreservingInitState();
+    }
+
+    @Override
+    protected final void addAlgorithmSpecificParametersToBegin(
+            @NonNull List<KeyParameter> parameters) {
+        parameters.add(KeyStore2ParameterUtils.makeEnum(
+                KeymasterDefs.KM_TAG_ALGORITHM, KeymasterDefs.KM_ALGORITHM_EC
+        ));
+        parameters.add(KeyStore2ParameterUtils.makeEnum(
+                KeymasterDefs.KM_TAG_DIGEST, mKeymasterDigest
+        ));
+    }
+
+    @Override
+    protected final int getAdditionalEntropyAmountForSign() {
+        return (mGroupSizeBits + 7) / 8;
+    }
+
+    protected final int getGroupSizeBits() {
+        if (mGroupSizeBits == -1) {
+            throw new IllegalStateException("Not initialized");
+        }
+        return mGroupSizeBits;
+    }
+}
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreECPrivateKey.java b/keystore/java/android/security/keystore2/AndroidKeyStoreECPrivateKey.java
new file mode 100644
index 0000000..35effde
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreECPrivateKey.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.annotation.NonNull;
+import android.security.KeyStoreSecurityLevel;
+import android.security.keystore.KeyProperties;
+import android.system.keystore2.Authorization;
+import android.system.keystore2.KeyDescriptor;
+
+import java.security.PrivateKey;
+import java.security.interfaces.ECKey;
+import java.security.spec.ECParameterSpec;
+
+/**
+ * EC private key (instance of {@link PrivateKey} and {@link ECKey}) backed by keystore.
+ *
+ * @hide
+ */
+public class AndroidKeyStoreECPrivateKey extends AndroidKeyStorePrivateKey implements ECKey {
+    private final ECParameterSpec mParams;
+
+    public AndroidKeyStoreECPrivateKey(@NonNull KeyDescriptor descriptor,
+            long keyId,
+            Authorization[] authorizations,
+            @NonNull KeyStoreSecurityLevel securityLevel,
+            @NonNull ECParameterSpec params) {
+        super(descriptor, keyId, authorizations, KeyProperties.KEY_ALGORITHM_EC, securityLevel);
+        mParams = params;
+    }
+
+    @Override
+    public ECParameterSpec getParams() {
+        return mParams;
+    }
+}
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreECPublicKey.java b/keystore/java/android/security/keystore2/AndroidKeyStoreECPublicKey.java
new file mode 100644
index 0000000..6ddaa70
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreECPublicKey.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.annotation.NonNull;
+import android.security.KeyStoreSecurityLevel;
+import android.security.keystore.KeyProperties;
+import android.system.keystore2.KeyDescriptor;
+import android.system.keystore2.KeyMetadata;
+
+import java.security.interfaces.ECPublicKey;
+import java.security.spec.ECParameterSpec;
+import java.security.spec.ECPoint;
+
+/**
+ * {@link ECPublicKey} backed by keystore.
+ *
+ * @hide
+ */
+public class AndroidKeyStoreECPublicKey extends AndroidKeyStorePublicKey implements ECPublicKey {
+
+    private final ECParameterSpec mParams;
+    private final ECPoint mW;
+
+    public AndroidKeyStoreECPublicKey(@NonNull KeyDescriptor descriptor,
+            @NonNull KeyMetadata metadata,
+            @NonNull KeyStoreSecurityLevel securityLevel,
+            @NonNull ECParameterSpec params, @NonNull ECPoint w) {
+        super(descriptor, metadata, KeyProperties.KEY_ALGORITHM_EC, securityLevel);
+        mParams = params;
+        mW = w;
+    }
+
+    public AndroidKeyStoreECPublicKey(@NonNull KeyDescriptor descriptor,
+            @NonNull KeyMetadata metadata,
+            @NonNull KeyStoreSecurityLevel securityLevel, @NonNull ECPublicKey info) {
+        this(descriptor, metadata, securityLevel, info.getParams(), info.getW());
+        if (!"X.509".equalsIgnoreCase(info.getFormat())) {
+            throw new IllegalArgumentException(
+                    "Unsupported key export format: " + info.getFormat());
+        }
+    }
+
+    @Override
+    public AndroidKeyStorePrivateKey getPrivateKey() {
+        return new AndroidKeyStoreECPrivateKey(
+                getUserKeyDescriptor(), getKeyIdDescriptor().nspace, getAuthorizations(),
+                getSecurityLevel(), mParams);
+    }
+
+    @Override
+    public ECParameterSpec getParams() {
+        return mParams;
+    }
+
+    @Override
+    public ECPoint getW() {
+        return mW;
+    }
+}
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreHmacSpi.java b/keystore/java/android/security/keystore2/AndroidKeyStoreHmacSpi.java
new file mode 100644
index 0000000..eea45c2
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreHmacSpi.java
@@ -0,0 +1,259 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.hardware.keymint.KeyParameter;
+import android.security.KeyStoreException;
+import android.security.KeyStoreOperation;
+import android.security.keymaster.KeymasterDefs;
+import android.security.keystore.KeyStoreCryptoOperation;
+import android.security.keystore.KeymasterUtils;
+
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.Key;
+import java.security.ProviderException;
+import java.security.spec.AlgorithmParameterSpec;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.crypto.MacSpi;
+
+/**
+ * {@link MacSpi} which provides HMAC implementations backed by Android KeyStore.
+ *
+ * @hide
+ */
+public abstract class AndroidKeyStoreHmacSpi extends MacSpi implements KeyStoreCryptoOperation {
+
+    private static final String TAG = "AndroidKeyStoreHmacSpi";
+
+    public static class HmacSHA1 extends AndroidKeyStoreHmacSpi {
+        public HmacSHA1() {
+            super(KeymasterDefs.KM_DIGEST_SHA1);
+        }
+    }
+
+    public static class HmacSHA224 extends AndroidKeyStoreHmacSpi {
+        public HmacSHA224() {
+            super(KeymasterDefs.KM_DIGEST_SHA_2_224);
+        }
+    }
+
+    public static class HmacSHA256 extends AndroidKeyStoreHmacSpi {
+        public HmacSHA256() {
+            super(KeymasterDefs.KM_DIGEST_SHA_2_256);
+        }
+    }
+
+    public static class HmacSHA384 extends AndroidKeyStoreHmacSpi {
+        public HmacSHA384() {
+            super(KeymasterDefs.KM_DIGEST_SHA_2_384);
+        }
+    }
+
+    public static class HmacSHA512 extends AndroidKeyStoreHmacSpi {
+        public HmacSHA512() {
+            super(KeymasterDefs.KM_DIGEST_SHA_2_512);
+        }
+    }
+
+    private final int mKeymasterDigest;
+    private final int mMacSizeBits;
+
+    // Fields below are populated by engineInit and should be preserved after engineDoFinal.
+    private AndroidKeyStoreSecretKey mKey;
+
+    // Fields below are reset when engineDoFinal succeeds.
+    private KeyStoreCryptoOperationChunkedStreamer mChunkedStreamer;
+    private KeyStoreOperation mOperation;
+    private long mOperationChallenge;
+
+    protected AndroidKeyStoreHmacSpi(int keymasterDigest) {
+        mKeymasterDigest = keymasterDigest;
+        mMacSizeBits = KeymasterUtils.getDigestOutputSizeBits(keymasterDigest);
+        mOperation = null;
+        mOperationChallenge = 0;
+        mKey = null;
+        mChunkedStreamer = null;
+    }
+
+    @Override
+    protected int engineGetMacLength() {
+        return (mMacSizeBits + 7) / 8;
+    }
+
+    @Override
+    protected void engineInit(Key key, AlgorithmParameterSpec params) throws InvalidKeyException,
+            InvalidAlgorithmParameterException {
+        resetAll();
+
+        boolean success = false;
+        try {
+            init(key, params);
+            ensureKeystoreOperationInitialized();
+            success = true;
+        } finally {
+            if (!success) {
+                resetAll();
+            }
+        }
+    }
+
+    private void init(Key key, AlgorithmParameterSpec params) throws InvalidKeyException,
+        InvalidAlgorithmParameterException {
+        if (key == null) {
+            throw new InvalidKeyException("key == null");
+        } else if (!(key instanceof AndroidKeyStoreSecretKey)) {
+            throw new InvalidKeyException(
+                    "Only Android KeyStore secret keys supported. Key: " + key);
+        }
+        mKey = (AndroidKeyStoreSecretKey) key;
+
+        if (params != null) {
+            throw new InvalidAlgorithmParameterException(
+                    "Unsupported algorithm parameters: " + params);
+        }
+
+    }
+
+    private void abortOperation() {
+        KeyStoreCryptoOperationUtils.abortOperation(mOperation);
+        mOperation = null;
+    }
+
+    private void resetAll() {
+        abortOperation();
+        mOperationChallenge = 0;
+        mKey = null;
+        mChunkedStreamer = null;
+    }
+
+    private void resetWhilePreservingInitState() {
+        abortOperation();
+        mOperationChallenge = 0;
+        mChunkedStreamer = null;
+    }
+
+    @Override
+    protected void engineReset() {
+        resetWhilePreservingInitState();
+    }
+
+    private void ensureKeystoreOperationInitialized() throws InvalidKeyException {
+        if (mChunkedStreamer != null) {
+            return;
+        }
+        if (mKey == null) {
+            throw new IllegalStateException("Not initialized");
+        }
+
+        List<KeyParameter> parameters = new ArrayList<>();
+        parameters.add(KeyStore2ParameterUtils.makeEnum(
+                KeymasterDefs.KM_TAG_ALGORITHM, KeymasterDefs.KM_ALGORITHM_HMAC
+        ));
+        parameters.add(KeyStore2ParameterUtils.makeEnum(
+                KeymasterDefs.KM_TAG_DIGEST, mKeymasterDigest
+        ));
+        parameters.add(KeyStore2ParameterUtils.makeInt(
+                KeymasterDefs.KM_TAG_MAC_LENGTH, mMacSizeBits
+        ));
+
+        try {
+            mOperation = mKey.getSecurityLevel().createOperation(
+                    mKey.getKeyIdDescriptor(),
+                    parameters
+            );
+        } catch (KeyStoreException keyStoreException) {
+            // If necessary, throw an exception due to KeyStore operation having failed.
+            InvalidKeyException e = KeyStoreCryptoOperationUtils.getInvalidKeyException(
+                    mKey, keyStoreException);
+            if (e != null) {
+                throw e;
+            }
+        }
+
+        // Now we check if we got an operation challenge. This indicates that user authorization
+        // is required. And if we got a challenge we check if the authorization can possibly
+        // succeed.
+        mOperationChallenge = KeyStoreCryptoOperationUtils.getOrMakeOperationChallenge(
+                mOperation, mKey);
+
+        mChunkedStreamer = new KeyStoreCryptoOperationChunkedStreamer(
+                new KeyStoreCryptoOperationChunkedStreamer.MainDataStream(
+                        mOperation));
+    }
+
+    @Override
+    protected void engineUpdate(byte input) {
+        engineUpdate(new byte[] {input}, 0, 1);
+    }
+
+    @Override
+    protected void engineUpdate(byte[] input, int offset, int len) {
+        try {
+            ensureKeystoreOperationInitialized();
+        } catch (InvalidKeyException e) {
+            throw new ProviderException("Failed to reinitialize MAC", e);
+        }
+
+        byte[] output;
+        try {
+            output = mChunkedStreamer.update(input, offset, len);
+        } catch (KeyStoreException e) {
+            throw new ProviderException("Keystore operation failed", e);
+        }
+        if ((output != null) && (output.length != 0)) {
+            throw new ProviderException("Update operation unexpectedly produced output");
+        }
+    }
+
+    @Override
+    protected byte[] engineDoFinal() {
+        try {
+            ensureKeystoreOperationInitialized();
+        } catch (InvalidKeyException e) {
+            throw new ProviderException("Failed to reinitialize MAC", e);
+        }
+
+        byte[] result;
+        try {
+            result = mChunkedStreamer.doFinal(
+                    null, 0, 0,
+                    null); // no signature provided -- this invocation will generate one
+        } catch (KeyStoreException e) {
+            throw new ProviderException("Keystore operation failed", e);
+        }
+
+        resetWhilePreservingInitState();
+        return result;
+    }
+
+    @Override
+    public void finalize() throws Throwable {
+        try {
+            abortOperation();
+        } finally {
+            super.finalize();
+        }
+    }
+
+    @Override
+    public long getOperationHandle() {
+        return mOperationChallenge;
+    }
+}
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreKey.java b/keystore/java/android/security/keystore2/AndroidKeyStoreKey.java
new file mode 100644
index 0000000..32650ae
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreKey.java
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.annotation.NonNull;
+import android.security.KeyStoreSecurityLevel;
+import android.system.keystore2.Authorization;
+import android.system.keystore2.Domain;
+import android.system.keystore2.KeyDescriptor;
+import android.util.Log;
+
+import java.security.Key;
+
+/**
+ * {@link Key} backed by Android Keystore.
+ *
+ * @hide
+ */
+public class AndroidKeyStoreKey implements Key {
+    // This is the original KeyDescriptor by which the key was loaded from
+    // with alias and domain.
+    private final KeyDescriptor mDescriptor;
+    // The key id can be used make certain manipulations to the keystore database
+    // assuring that the manipulation is made to the exact key that was loaded
+    // from the database. Alias based manipulations can not assure this, because
+    // aliases can be rebound to other keys at any time.
+    private final long mKeyId;
+    private final Authorization[] mAuthorizations;
+    // TODO extract algorithm string from metadata.
+    private final String mAlgorithm;
+
+    // This is the security level interface, that this key is associated with.
+    // We do not include this member in comparisons.
+    private final KeyStoreSecurityLevel mSecurityLevel;
+
+    AndroidKeyStoreKey(@NonNull KeyDescriptor descriptor,
+            long keyId,
+            @NonNull Authorization[] authorizations,
+            @NonNull String algorithm,
+            @NonNull KeyStoreSecurityLevel securityLevel) {
+        mDescriptor = descriptor;
+        mKeyId = keyId;
+        mAuthorizations = authorizations;
+        mAlgorithm = algorithm;
+        mSecurityLevel = securityLevel;
+    }
+
+    KeyDescriptor getUserKeyDescriptor() {
+        return mDescriptor;
+    }
+
+    KeyDescriptor getKeyIdDescriptor() {
+        KeyDescriptor descriptor = new KeyDescriptor();
+        descriptor.nspace = mKeyId;
+        descriptor.domain = Domain.KEY_ID;
+        descriptor.alias = null;
+        descriptor.blob = null;
+        return descriptor;
+    }
+
+    Authorization[] getAuthorizations() {
+        return mAuthorizations;
+    }
+
+    KeyStoreSecurityLevel getSecurityLevel() {
+        return mSecurityLevel;
+    }
+
+
+    @Override
+    public String getAlgorithm() {
+        return mAlgorithm;
+    }
+
+    @Override
+    public String getFormat() {
+        // This key does not export its key material
+        return null;
+    }
+
+    @Override
+    public byte[] getEncoded() {
+        // This key does not export its key material
+        return null;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime * result + ((mDescriptor == null) ? 0 : mDescriptor.hashCode());
+        result = prime * result + (int) (mKeyId >>> 32);
+        result = prime * result + (int) (mKeyId & 0xffffffff);
+        result = prime * result + ((mAuthorizations == null) ? 0 : mAuthorizations.hashCode());
+        result = prime * result + ((mAlgorithm == null) ? 0 : mAlgorithm.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        AndroidKeyStoreKey other = (AndroidKeyStoreKey) obj;
+        if (mKeyId != other.mKeyId) {
+            return false;
+        }
+
+        // If the key ids are equal and the class matches all the other fields cannot differ
+        // unless we have a bug.
+        if (!mAlgorithm.equals(other.mAlgorithm)
+                || !mAuthorizations.equals(other.mAuthorizations)
+                || !mDescriptor.equals(other.mDescriptor)) {
+            Log.e("AndroidKeyStoreKey", "Bug: key ids are identical, but key metadata"
+                    + "differs.");
+            return false;
+        }
+        return true;
+    }
+}
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreKeyFactorySpi.java b/keystore/java/android/security/keystore2/AndroidKeyStoreKeyFactorySpi.java
new file mode 100644
index 0000000..a8dd7f3
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreKeyFactorySpi.java
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.security.KeyStore;
+import android.security.keystore.KeyGenParameterSpec;
+import android.security.keystore.KeyInfo;
+
+import java.security.InvalidKeyException;
+import java.security.Key;
+import java.security.KeyFactorySpi;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.spec.ECPublicKeySpec;
+import java.security.spec.InvalidKeySpecException;
+import java.security.spec.KeySpec;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.security.spec.RSAPublicKeySpec;
+import java.security.spec.X509EncodedKeySpec;
+
+/**
+ * {@link KeyFactorySpi} backed by Android KeyStore.
+ *
+ * @hide
+ */
+public class AndroidKeyStoreKeyFactorySpi extends KeyFactorySpi {
+
+    private final KeyStore mKeyStore = KeyStore.getInstance();
+
+    @Override
+    protected <T extends KeySpec> T engineGetKeySpec(Key key, Class<T> keySpecClass)
+            throws InvalidKeySpecException {
+        if (key == null) {
+            throw new InvalidKeySpecException("key == null");
+        } else if ((!(key instanceof AndroidKeyStorePrivateKey))
+            && (!(key instanceof AndroidKeyStorePublicKey))) {
+            throw new InvalidKeySpecException(
+                    "Unsupported key type: " + key.getClass().getName()
+                    + ". This KeyFactory supports only Android Keystore asymmetric keys");
+        }
+
+        // key is an Android Keystore private or public key
+
+        if (keySpecClass == null) {
+            throw new InvalidKeySpecException("keySpecClass == null");
+        } else if (KeyInfo.class.equals(keySpecClass)) {
+            if (!(key instanceof AndroidKeyStorePrivateKey)) {
+                throw new InvalidKeySpecException(
+                        "Unsupported key type: " + key.getClass().getName()
+                        + ". KeyInfo can be obtained only for Android Keystore private keys");
+            }
+            AndroidKeyStorePrivateKey keystorePrivateKey = (AndroidKeyStorePrivateKey) key;
+            @SuppressWarnings("unchecked")
+            T result = (T) AndroidKeyStoreSecretKeyFactorySpi.getKeyInfo(keystorePrivateKey);
+            return result;
+        } else if (X509EncodedKeySpec.class.equals(keySpecClass)) {
+            if (!(key instanceof AndroidKeyStorePublicKey)) {
+                throw new InvalidKeySpecException(
+                        "Unsupported key type: " + key.getClass().getName()
+                        + ". X509EncodedKeySpec can be obtained only for Android Keystore public"
+                        + " keys");
+            }
+            @SuppressWarnings("unchecked")
+            T result = (T) new X509EncodedKeySpec(((AndroidKeyStorePublicKey) key).getEncoded());
+            return result;
+        } else if (PKCS8EncodedKeySpec.class.equals(keySpecClass)) {
+            if (key instanceof AndroidKeyStorePrivateKey) {
+                throw new InvalidKeySpecException(
+                        "Key material export of Android Keystore private keys is not supported");
+            } else {
+                throw new InvalidKeySpecException(
+                        "Cannot export key material of public key in PKCS#8 format."
+                        + " Only X.509 format (X509EncodedKeySpec) supported for public keys.");
+            }
+        } else if (RSAPublicKeySpec.class.equals(keySpecClass)) {
+            if (key instanceof AndroidKeyStoreRSAPublicKey) {
+                AndroidKeyStoreRSAPublicKey rsaKey = (AndroidKeyStoreRSAPublicKey) key;
+                @SuppressWarnings("unchecked")
+                T result =
+                        (T) new RSAPublicKeySpec(rsaKey.getModulus(), rsaKey.getPublicExponent());
+                return result;
+            } else {
+                throw new InvalidKeySpecException(
+                        "Obtaining RSAPublicKeySpec not supported for " + key.getAlgorithm() + " "
+                        + ((key instanceof AndroidKeyStorePrivateKey) ? "private" : "public")
+                        + " key");
+            }
+        } else if (ECPublicKeySpec.class.equals(keySpecClass)) {
+            if (key instanceof AndroidKeyStoreECPublicKey) {
+                AndroidKeyStoreECPublicKey ecKey = (AndroidKeyStoreECPublicKey) key;
+                @SuppressWarnings("unchecked")
+                T result = (T) new ECPublicKeySpec(ecKey.getW(), ecKey.getParams());
+                return result;
+            } else {
+                throw new InvalidKeySpecException(
+                        "Obtaining ECPublicKeySpec not supported for " + key.getAlgorithm() + " "
+                        + ((key instanceof AndroidKeyStorePrivateKey) ? "private" : "public")
+                        + " key");
+            }
+        } else {
+            throw new InvalidKeySpecException("Unsupported key spec: " + keySpecClass.getName());
+        }
+    }
+
+    @Override
+    protected PrivateKey engineGeneratePrivate(KeySpec spec) throws InvalidKeySpecException {
+        throw new InvalidKeySpecException(
+                "To generate a key pair in Android Keystore, use KeyPairGenerator initialized with"
+                + " " + KeyGenParameterSpec.class.getName());
+    }
+
+    @Override
+    protected PublicKey engineGeneratePublic(KeySpec spec) throws InvalidKeySpecException {
+        throw new InvalidKeySpecException(
+                "To generate a key pair in Android Keystore, use KeyPairGenerator initialized with"
+                + " " + KeyGenParameterSpec.class.getName());
+    }
+
+    @Override
+    protected Key engineTranslateKey(Key key) throws InvalidKeyException {
+        if (key == null) {
+            throw new InvalidKeyException("key == null");
+        } else if ((!(key instanceof AndroidKeyStorePrivateKey))
+                && (!(key instanceof AndroidKeyStorePublicKey))) {
+            throw new InvalidKeyException(
+                    "To import a key into Android Keystore, use KeyStore.setEntry");
+        }
+        return key;
+    }
+}
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreKeyGeneratorSpi.java b/keystore/java/android/security/keystore2/AndroidKeyStoreKeyGeneratorSpi.java
new file mode 100644
index 0000000..479fd8a
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreKeyGeneratorSpi.java
@@ -0,0 +1,428 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.hardware.keymint.KeyParameter;
+import android.hardware.keymint.SecurityLevel;
+import android.security.KeyStore2;
+import android.security.KeyStoreSecurityLevel;
+import android.security.keymaster.KeymasterArguments;
+import android.security.keymaster.KeymasterDefs;
+import android.security.keystore.ArrayUtils;
+import android.security.keystore.KeyGenParameterSpec;
+import android.security.keystore.KeyProperties;
+import android.security.keystore.KeymasterUtils;
+import android.security.keystore.StrongBoxUnavailableException;
+import android.system.keystore2.Domain;
+import android.system.keystore2.IKeystoreSecurityLevel;
+import android.system.keystore2.KeyDescriptor;
+import android.system.keystore2.KeyMetadata;
+import android.util.Log;
+
+import libcore.util.EmptyArray;
+
+import java.security.InvalidAlgorithmParameterException;
+import java.security.ProviderException;
+import java.security.SecureRandom;
+import java.security.spec.AlgorithmParameterSpec;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.crypto.KeyGeneratorSpi;
+import javax.crypto.SecretKey;
+
+/**
+ * {@link KeyGeneratorSpi} backed by Android KeyStore.
+ *
+ * @hide
+ */
+public abstract class AndroidKeyStoreKeyGeneratorSpi extends KeyGeneratorSpi {
+    private static final String TAG = "AndroidKeyStoreKeyGeneratorSpi";
+
+    public static class AES extends AndroidKeyStoreKeyGeneratorSpi {
+        public AES() {
+            super(KeymasterDefs.KM_ALGORITHM_AES, 128);
+        }
+
+        @Override
+        protected void engineInit(AlgorithmParameterSpec params, SecureRandom random)
+                throws InvalidAlgorithmParameterException {
+            super.engineInit(params, random);
+            if ((mKeySizeBits != 128) && (mKeySizeBits != 192) && (mKeySizeBits != 256)) {
+                throw new InvalidAlgorithmParameterException(
+                        "Unsupported key size: " + mKeySizeBits
+                        + ". Supported: 128, 192, 256.");
+            }
+        }
+    }
+
+    public static class DESede extends AndroidKeyStoreKeyGeneratorSpi {
+        public DESede() {
+            super(KeymasterDefs.KM_ALGORITHM_3DES, 168);
+        }
+    }
+
+    protected static abstract class HmacBase extends AndroidKeyStoreKeyGeneratorSpi {
+        protected HmacBase(int keymasterDigest) {
+            super(KeymasterDefs.KM_ALGORITHM_HMAC,
+                    keymasterDigest,
+                    KeymasterUtils.getDigestOutputSizeBits(keymasterDigest));
+        }
+    }
+
+    public static class HmacSHA1 extends HmacBase {
+        public HmacSHA1() {
+            super(KeymasterDefs.KM_DIGEST_SHA1);
+        }
+    }
+
+    public static class HmacSHA224 extends HmacBase {
+        public HmacSHA224() {
+            super(KeymasterDefs.KM_DIGEST_SHA_2_224);
+        }
+    }
+
+    public static class HmacSHA256 extends HmacBase {
+        public HmacSHA256() {
+            super(KeymasterDefs.KM_DIGEST_SHA_2_256);
+        }
+    }
+
+    public static class HmacSHA384 extends HmacBase {
+        public HmacSHA384() {
+            super(KeymasterDefs.KM_DIGEST_SHA_2_384);
+        }
+    }
+
+    public static class HmacSHA512 extends HmacBase {
+        public HmacSHA512() {
+            super(KeymasterDefs.KM_DIGEST_SHA_2_512);
+        }
+    }
+
+    private final KeyStore2 mKeyStore = KeyStore2.getInstance();
+    private final int mKeymasterAlgorithm;
+    private final int mKeymasterDigest;
+    private final int mDefaultKeySizeBits;
+
+    private KeyGenParameterSpec mSpec;
+    private SecureRandom mRng;
+
+    protected int mKeySizeBits;
+    private int[] mKeymasterPurposes;
+    private int[] mKeymasterBlockModes;
+    private int[] mKeymasterPaddings;
+    private int[] mKeymasterDigests;
+
+    protected AndroidKeyStoreKeyGeneratorSpi(
+            int keymasterAlgorithm,
+            int defaultKeySizeBits) {
+        this(keymasterAlgorithm, -1, defaultKeySizeBits);
+    }
+
+    protected AndroidKeyStoreKeyGeneratorSpi(
+            int keymasterAlgorithm,
+            int keymasterDigest,
+            int defaultKeySizeBits) {
+        mKeymasterAlgorithm = keymasterAlgorithm;
+        mKeymasterDigest = keymasterDigest;
+        mDefaultKeySizeBits = defaultKeySizeBits;
+        if (mDefaultKeySizeBits <= 0) {
+            throw new IllegalArgumentException("Default key size must be positive");
+        }
+
+        if ((mKeymasterAlgorithm == KeymasterDefs.KM_ALGORITHM_HMAC) && (mKeymasterDigest == -1)) {
+            throw new IllegalArgumentException(
+                    "Digest algorithm must be specified for HMAC key");
+        }
+    }
+
+    @Override
+    protected void engineInit(SecureRandom random) {
+        throw new UnsupportedOperationException("Cannot initialize without a "
+                + KeyGenParameterSpec.class.getName() + " parameter");
+    }
+
+    @Override
+    protected void engineInit(int keySize, SecureRandom random) {
+        throw new UnsupportedOperationException("Cannot initialize without a "
+                + KeyGenParameterSpec.class.getName() + " parameter");
+    }
+
+    @Override
+    protected void engineInit(AlgorithmParameterSpec params, SecureRandom random)
+            throws InvalidAlgorithmParameterException {
+        resetAll();
+
+        boolean success = false;
+        try {
+            if ((params == null) || (!(params instanceof KeyGenParameterSpec))) {
+                throw new InvalidAlgorithmParameterException("Cannot initialize without a "
+                        + KeyGenParameterSpec.class.getName() + " parameter");
+            }
+            KeyGenParameterSpec spec = (KeyGenParameterSpec) params;
+            if (spec.getKeystoreAlias() == null) {
+                throw new InvalidAlgorithmParameterException("KeyStore entry alias not provided");
+            }
+
+            mRng = random;
+            mSpec = spec;
+
+            mKeySizeBits = (spec.getKeySize() != -1) ? spec.getKeySize() : mDefaultKeySizeBits;
+            if (mKeySizeBits <= 0) {
+                throw new InvalidAlgorithmParameterException(
+                        "Key size must be positive: " + mKeySizeBits);
+            } else if ((mKeySizeBits % 8) != 0) {
+                throw new InvalidAlgorithmParameterException(
+                        "Key size must be a multiple of 8: " + mKeySizeBits);
+            }
+
+            try {
+                mKeymasterPurposes = KeyProperties.Purpose.allToKeymaster(spec.getPurposes());
+                mKeymasterPaddings = KeyProperties.EncryptionPadding.allToKeymaster(
+                        spec.getEncryptionPaddings());
+                if (spec.getSignaturePaddings().length > 0) {
+                    throw new InvalidAlgorithmParameterException(
+                            "Signature paddings not supported for symmetric key algorithms");
+                }
+                mKeymasterBlockModes = KeyProperties.BlockMode.allToKeymaster(spec.getBlockModes());
+                if (((spec.getPurposes() & KeyProperties.PURPOSE_ENCRYPT) != 0)
+                        && (spec.isRandomizedEncryptionRequired())) {
+                    for (int keymasterBlockMode : mKeymasterBlockModes) {
+                        if (!KeymasterUtils.isKeymasterBlockModeIndCpaCompatibleWithSymmetricCrypto(
+                                keymasterBlockMode)) {
+                            throw new InvalidAlgorithmParameterException(
+                                    "Randomized encryption (IND-CPA) required but may be violated"
+                                    + " by block mode: "
+                                    + KeyProperties.BlockMode.fromKeymaster(keymasterBlockMode)
+                                    + ". See " + KeyGenParameterSpec.class.getName()
+                                    + " documentation.");
+                        }
+                    }
+                }
+                if (mKeymasterAlgorithm == KeymasterDefs.KM_ALGORITHM_3DES) {
+                    if (mKeySizeBits != 168) {
+                        throw new InvalidAlgorithmParameterException(
+                            "3DES key size must be 168 bits.");
+                    }
+                }
+                if (mKeymasterAlgorithm == KeymasterDefs.KM_ALGORITHM_HMAC) {
+                    if (mKeySizeBits < 64 || mKeySizeBits > 512) {
+                        throw new InvalidAlgorithmParameterException(
+                            "HMAC key sizes must be within 64-512 bits, inclusive.");
+                    }
+
+                    // JCA HMAC key algorithm implies a digest (e.g., HmacSHA256 key algorithm
+                    // implies SHA-256 digest). Because keymaster HMAC key is authorized only for
+                    // one digest, we don't let algorithm parameter spec override the digest implied
+                    // by the key. If the spec specifies digests at all, it must specify only one
+                    // digest, the only implied by key algorithm.
+                    mKeymasterDigests = new int[] {mKeymasterDigest};
+                    if (spec.isDigestsSpecified()) {
+                        // Digest(s) explicitly specified in the spec. Check that the list
+                        // consists of exactly one digest, the one implied by key algorithm.
+                        int[] keymasterDigestsFromSpec =
+                                KeyProperties.Digest.allToKeymaster(spec.getDigests());
+                        if ((keymasterDigestsFromSpec.length != 1)
+                                || (keymasterDigestsFromSpec[0] != mKeymasterDigest)) {
+                            throw new InvalidAlgorithmParameterException(
+                                    "Unsupported digests specification: "
+                                    + Arrays.asList(spec.getDigests()) + ". Only "
+                                    + KeyProperties.Digest.fromKeymaster(mKeymasterDigest)
+                                    + " supported for this HMAC key algorithm");
+                        }
+                    }
+                } else {
+                    // Key algorithm does not imply a digest.
+                    if (spec.isDigestsSpecified()) {
+                        mKeymasterDigests = KeyProperties.Digest.allToKeymaster(spec.getDigests());
+                    } else {
+                        mKeymasterDigests = EmptyArray.INT;
+                    }
+                }
+
+                // Check that user authentication related parameters are acceptable. This method
+                // will throw an IllegalStateException if there are issues (e.g., secure lock screen
+                // not set up).
+                KeymasterUtils.addUserAuthArgs(new KeymasterArguments(), spec);
+            } catch (IllegalStateException | IllegalArgumentException e) {
+                throw new InvalidAlgorithmParameterException(e);
+            }
+
+            success = true;
+        } finally {
+            if (!success) {
+                resetAll();
+            }
+        }
+    }
+
+    private void resetAll() {
+        mSpec = null;
+        mRng = null;
+        mKeySizeBits = -1;
+        mKeymasterPurposes = null;
+        mKeymasterPaddings = null;
+        mKeymasterBlockModes = null;
+    }
+
+    @Override
+    protected SecretKey engineGenerateKey() {
+        KeyGenParameterSpec spec = mSpec;
+        if (spec == null) {
+            throw new IllegalStateException("Not initialized");
+        }
+
+        List<KeyParameter> params = new ArrayList<>();
+
+        params.add(KeyStore2ParameterUtils.makeInt(
+                KeymasterDefs.KM_TAG_KEY_SIZE, mKeySizeBits
+        ));
+        params.add(KeyStore2ParameterUtils.makeEnum(
+                KeymasterDefs.KM_TAG_ALGORITHM, mKeymasterAlgorithm
+        ));
+        ArrayUtils.forEach(mKeymasterPurposes, (purpose) -> {
+            params.add(KeyStore2ParameterUtils.makeEnum(
+                    KeymasterDefs.KM_TAG_PURPOSE, purpose
+            ));
+        });
+        ArrayUtils.forEach(mKeymasterBlockModes, (blockMode) -> {
+            if (blockMode == KeymasterDefs.KM_MODE_GCM
+                    && mKeymasterAlgorithm == KeymasterDefs.KM_ALGORITHM_AES) {
+                params.add(KeyStore2ParameterUtils.makeInt(
+                        KeymasterDefs.KM_TAG_MIN_MAC_LENGTH,
+                        AndroidKeyStoreAuthenticatedAESCipherSpi.GCM
+                                .MIN_SUPPORTED_TAG_LENGTH_BITS
+                ));
+            }
+            params.add(KeyStore2ParameterUtils.makeEnum(
+                    KeymasterDefs.KM_TAG_BLOCK_MODE, blockMode
+            ));
+        });
+        ArrayUtils.forEach(mKeymasterPaddings, (padding) -> {
+            params.add(KeyStore2ParameterUtils.makeEnum(
+                    KeymasterDefs.KM_TAG_PADDING, padding
+            ));
+        });
+        ArrayUtils.forEach(mKeymasterDigests, (digest) -> {
+            params.add(KeyStore2ParameterUtils.makeEnum(
+                    KeymasterDefs.KM_TAG_DIGEST, digest
+            ));
+        });
+
+        if (mKeymasterAlgorithm == KeymasterDefs.KM_ALGORITHM_HMAC
+                && mKeymasterDigests.length != 0) {
+            int digestOutputSizeBits = KeymasterUtils.getDigestOutputSizeBits(mKeymasterDigests[0]);
+            if (digestOutputSizeBits == -1) {
+                throw new ProviderException(
+                        "HMAC key authorized for unsupported digest: "
+                                + KeyProperties.Digest.fromKeymaster(mKeymasterDigests[0]));
+            }
+            params.add(KeyStore2ParameterUtils.makeInt(
+                    KeymasterDefs.KM_TAG_MIN_MAC_LENGTH, digestOutputSizeBits
+            ));
+        }
+
+        KeyStore2ParameterUtils.addUserAuthArgs(params, spec);
+
+        if (spec.getKeyValidityStart() != null) {
+            params.add(KeyStore2ParameterUtils.makeDate(
+                    KeymasterDefs.KM_TAG_ACTIVE_DATETIME, spec.getKeyValidityStart()
+            ));
+        }
+        if (spec.getKeyValidityForOriginationEnd() != null) {
+            params.add(KeyStore2ParameterUtils.makeDate(
+                    KeymasterDefs.KM_TAG_ORIGINATION_EXPIRE_DATETIME,
+                    spec.getKeyValidityForOriginationEnd()
+            ));
+        }
+        if (spec.getKeyValidityForConsumptionEnd() != null) {
+            params.add(KeyStore2ParameterUtils.makeDate(
+                    KeymasterDefs.KM_TAG_USAGE_EXPIRE_DATETIME,
+                    spec.getKeyValidityForConsumptionEnd()
+            ));
+        }
+
+        if (((spec.getPurposes() & KeyProperties.PURPOSE_ENCRYPT) != 0)
+                && (!spec.isRandomizedEncryptionRequired())) {
+            // Permit caller-provided IV when encrypting with this key
+            params.add(KeyStore2ParameterUtils.makeBool(
+                    KeymasterDefs.KM_TAG_CALLER_NONCE
+            ));
+        }
+
+        byte[] additionalEntropy =
+                KeyStoreCryptoOperationUtils.getRandomBytesToMixIntoKeystoreRng(
+                        mRng, (mKeySizeBits + 7) / 8);
+
+        @SecurityLevel int securityLevel = SecurityLevel.TRUSTED_ENVIRONMENT;
+        if (spec.isStrongBoxBacked()) {
+            securityLevel = SecurityLevel.STRONGBOX;
+        }
+
+        int flags = 0;
+        if (spec.isCriticalToDeviceEncryption()) {
+            flags |= IKeystoreSecurityLevel.KEY_FLAG_AUTH_BOUND_WITHOUT_CRYPTOGRAPHIC_LSKF_BINDING;
+        }
+
+        KeyDescriptor descriptor = new KeyDescriptor();
+        descriptor.alias = spec.getKeystoreAlias();
+        descriptor.nspace = spec.getNamespace();
+        descriptor.domain = descriptor.nspace == KeyProperties.NAMESPACE_APPLICATION
+                ? Domain.APP
+                : Domain.SELINUX;
+        descriptor.blob = null;
+
+        KeyMetadata metadata = null;
+        KeyStoreSecurityLevel iSecurityLevel = null;
+        try {
+            iSecurityLevel = mKeyStore.getSecurityLevel(securityLevel);
+            metadata = iSecurityLevel.generateKey(
+                    descriptor,
+                    null, /* Attestation key not applicable to symmetric keys. */
+                    params,
+                    flags,
+                    additionalEntropy);
+        } catch (android.security.KeyStoreException e) {
+            switch (e.getErrorCode()) {
+                // TODO replace with ErrorCode.HARDWARE_TYPE_UNAVAILABLE when KeyMint spec
+                //      becomes available.
+                case KeymasterDefs.KM_ERROR_HARDWARE_TYPE_UNAVAILABLE:
+                    throw new StrongBoxUnavailableException("Failed to generate key");
+                default:
+                    throw new ProviderException("Keystore key generation failed", e);
+            }
+        }
+        @KeyProperties.KeyAlgorithmEnum String keyAlgorithmJCA;
+        try {
+            keyAlgorithmJCA = KeyProperties.KeyAlgorithm.fromKeymasterSecretKeyAlgorithm(
+                    mKeymasterAlgorithm, mKeymasterDigest);
+        } catch (IllegalArgumentException e) {
+            try {
+                mKeyStore.deleteKey(descriptor);
+            } catch (android.security.KeyStoreException kse) {
+                Log.e(TAG, "Failed to delete key after generating successfully but"
+                        + " failed to get the algorithm string.", kse);
+            }
+            throw new ProviderException("Failed to obtain JCA secret key algorithm name", e);
+        }
+        SecretKey result = new AndroidKeyStoreSecretKey(descriptor, metadata, keyAlgorithmJCA,
+                iSecurityLevel);
+        return result;
+    }
+}
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreKeyPairGeneratorSpi.java b/keystore/java/android/security/keystore2/AndroidKeyStoreKeyPairGeneratorSpi.java
new file mode 100644
index 0000000..61725e3
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreKeyPairGeneratorSpi.java
@@ -0,0 +1,804 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.hardware.keymint.KeyParameter;
+import android.hardware.keymint.SecurityLevel;
+import android.os.Build;
+import android.security.KeyPairGeneratorSpec;
+import android.security.KeyStore2;
+import android.security.KeyStoreException;
+import android.security.KeyStoreSecurityLevel;
+import android.security.keymaster.KeymasterArguments;
+import android.security.keymaster.KeymasterDefs;
+import android.security.keystore.ArrayUtils;
+import android.security.keystore.KeyGenParameterSpec;
+import android.security.keystore.KeyProperties;
+import android.security.keystore.KeymasterUtils;
+import android.security.keystore.SecureKeyImportUnavailableException;
+import android.security.keystore.StrongBoxUnavailableException;
+import android.system.keystore2.Domain;
+import android.system.keystore2.IKeystoreSecurityLevel;
+import android.system.keystore2.KeyDescriptor;
+import android.system.keystore2.KeyMetadata;
+import android.system.keystore2.ResponseCode;
+import android.util.Log;
+
+import libcore.util.EmptyArray;
+
+import java.math.BigInteger;
+import java.nio.charset.StandardCharsets;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.KeyPair;
+import java.security.KeyPairGenerator;
+import java.security.KeyPairGeneratorSpi;
+import java.security.ProviderException;
+import java.security.SecureRandom;
+import java.security.UnrecoverableKeyException;
+import java.security.spec.AlgorithmParameterSpec;
+import java.security.spec.ECGenParameterSpec;
+import java.security.spec.RSAKeyGenParameterSpec;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Provides a way to create instances of a KeyPair which will be placed in the
+ * Android keystore service usable only by the application that called it. This
+ * can be used in conjunction with
+ * {@link java.security.KeyStore#getInstance(String)} using the
+ * {@code "AndroidKeyStore"} type.
+ * <p>
+ * This class can not be directly instantiated and must instead be used via the
+ * {@link KeyPairGenerator#getInstance(String)
+ * KeyPairGenerator.getInstance("AndroidKeyStore")} API.
+ *
+ * @hide
+ */
+public abstract class AndroidKeyStoreKeyPairGeneratorSpi extends KeyPairGeneratorSpi {
+    private static final String TAG = "AndroidKeyStoreKeyPairGeneratorSpi";
+
+    public static class RSA extends AndroidKeyStoreKeyPairGeneratorSpi {
+        public RSA() {
+            super(KeymasterDefs.KM_ALGORITHM_RSA);
+        }
+    }
+
+    public static class EC extends AndroidKeyStoreKeyPairGeneratorSpi {
+        public EC() {
+            super(KeymasterDefs.KM_ALGORITHM_EC);
+        }
+    }
+
+    /*
+     * These must be kept in sync with system/security/keystore/defaults.h
+     */
+
+    /* EC */
+    private static final int EC_DEFAULT_KEY_SIZE = 256;
+
+    /* RSA */
+    private static final int RSA_DEFAULT_KEY_SIZE = 2048;
+    private static final int RSA_MIN_KEY_SIZE = 512;
+    private static final int RSA_MAX_KEY_SIZE = 8192;
+
+    private static final Map<String, Integer> SUPPORTED_EC_NIST_CURVE_NAME_TO_SIZE =
+            new HashMap<String, Integer>();
+    private static final List<String> SUPPORTED_EC_NIST_CURVE_NAMES = new ArrayList<String>();
+    private static final List<Integer> SUPPORTED_EC_NIST_CURVE_SIZES = new ArrayList<Integer>();
+    static {
+        // Aliases for NIST P-224
+        SUPPORTED_EC_NIST_CURVE_NAME_TO_SIZE.put("p-224", 224);
+        SUPPORTED_EC_NIST_CURVE_NAME_TO_SIZE.put("secp224r1", 224);
+
+
+        // Aliases for NIST P-256
+        SUPPORTED_EC_NIST_CURVE_NAME_TO_SIZE.put("p-256", 256);
+        SUPPORTED_EC_NIST_CURVE_NAME_TO_SIZE.put("secp256r1", 256);
+        SUPPORTED_EC_NIST_CURVE_NAME_TO_SIZE.put("prime256v1", 256);
+
+        // Aliases for NIST P-384
+        SUPPORTED_EC_NIST_CURVE_NAME_TO_SIZE.put("p-384", 384);
+        SUPPORTED_EC_NIST_CURVE_NAME_TO_SIZE.put("secp384r1", 384);
+
+        // Aliases for NIST P-521
+        SUPPORTED_EC_NIST_CURVE_NAME_TO_SIZE.put("p-521", 521);
+        SUPPORTED_EC_NIST_CURVE_NAME_TO_SIZE.put("secp521r1", 521);
+
+        SUPPORTED_EC_NIST_CURVE_NAMES.addAll(SUPPORTED_EC_NIST_CURVE_NAME_TO_SIZE.keySet());
+        Collections.sort(SUPPORTED_EC_NIST_CURVE_NAMES);
+
+        SUPPORTED_EC_NIST_CURVE_SIZES.addAll(
+                new HashSet<Integer>(SUPPORTED_EC_NIST_CURVE_NAME_TO_SIZE.values()));
+        Collections.sort(SUPPORTED_EC_NIST_CURVE_SIZES);
+    }
+
+    private final int mOriginalKeymasterAlgorithm;
+
+    private KeyStore2 mKeyStore;
+
+    private KeyGenParameterSpec mSpec;
+
+    private String mEntryAlias;
+    private int mEntryUid;
+    private @KeyProperties.KeyAlgorithmEnum String mJcaKeyAlgorithm;
+    private int mKeymasterAlgorithm = -1;
+    private int mKeySizeBits;
+    private SecureRandom mRng;
+
+    private int[] mKeymasterPurposes;
+    private int[] mKeymasterBlockModes;
+    private int[] mKeymasterEncryptionPaddings;
+    private int[] mKeymasterSignaturePaddings;
+    private int[] mKeymasterDigests;
+
+    private Long mRSAPublicExponent;
+
+    protected AndroidKeyStoreKeyPairGeneratorSpi(int keymasterAlgorithm) {
+        mOriginalKeymasterAlgorithm = keymasterAlgorithm;
+    }
+
+    @SuppressWarnings("deprecation")
+    @Override
+    public void initialize(int keysize, SecureRandom random) {
+        throw new IllegalArgumentException(
+                KeyGenParameterSpec.class.getName() + " or " + KeyPairGeneratorSpec.class.getName()
+                + " required to initialize this KeyPairGenerator");
+    }
+
+    @SuppressWarnings("deprecation")
+    @Override
+    public void initialize(AlgorithmParameterSpec params, SecureRandom random)
+            throws InvalidAlgorithmParameterException {
+        resetAll();
+
+        boolean success = false;
+        try {
+            if (params == null) {
+                throw new InvalidAlgorithmParameterException(
+                        "Must supply params of type " + KeyGenParameterSpec.class.getName()
+                        + " or " + KeyPairGeneratorSpec.class.getName());
+            }
+
+            KeyGenParameterSpec spec;
+            boolean encryptionAtRestRequired = false;
+            int keymasterAlgorithm = mOriginalKeymasterAlgorithm;
+            if (params instanceof KeyGenParameterSpec) {
+                spec = (KeyGenParameterSpec) params;
+            } else if (params instanceof KeyPairGeneratorSpec) {
+                // Legacy/deprecated spec
+                KeyPairGeneratorSpec legacySpec = (KeyPairGeneratorSpec) params;
+                try {
+                    KeyGenParameterSpec.Builder specBuilder;
+                    String specKeyAlgorithm = legacySpec.getKeyType();
+                    if (specKeyAlgorithm != null) {
+                        // Spec overrides the generator's default key algorithm
+                        try {
+                            keymasterAlgorithm =
+                                    KeyProperties.KeyAlgorithm.toKeymasterAsymmetricKeyAlgorithm(
+                                            specKeyAlgorithm);
+                        } catch (IllegalArgumentException e) {
+                            throw new InvalidAlgorithmParameterException(
+                                    "Invalid key type in parameters", e);
+                        }
+                    }
+                    switch (keymasterAlgorithm) {
+                        case KeymasterDefs.KM_ALGORITHM_EC:
+                            specBuilder = new KeyGenParameterSpec.Builder(
+                                    legacySpec.getKeystoreAlias(),
+                                    KeyProperties.PURPOSE_SIGN
+                                    | KeyProperties.PURPOSE_VERIFY);
+                            // Authorized to be used with any digest (including no digest).
+                            // MD5 was never offered for Android Keystore for ECDSA.
+                            specBuilder.setDigests(
+                                    KeyProperties.DIGEST_NONE,
+                                    KeyProperties.DIGEST_SHA1,
+                                    KeyProperties.DIGEST_SHA224,
+                                    KeyProperties.DIGEST_SHA256,
+                                    KeyProperties.DIGEST_SHA384,
+                                    KeyProperties.DIGEST_SHA512);
+                            break;
+                        case KeymasterDefs.KM_ALGORITHM_RSA:
+                            specBuilder = new KeyGenParameterSpec.Builder(
+                                    legacySpec.getKeystoreAlias(),
+                                    KeyProperties.PURPOSE_ENCRYPT
+                                    | KeyProperties.PURPOSE_DECRYPT
+                                    | KeyProperties.PURPOSE_SIGN
+                                    | KeyProperties.PURPOSE_VERIFY);
+                            // Authorized to be used with any digest (including no digest).
+                            specBuilder.setDigests(
+                                    KeyProperties.DIGEST_NONE,
+                                    KeyProperties.DIGEST_MD5,
+                                    KeyProperties.DIGEST_SHA1,
+                                    KeyProperties.DIGEST_SHA224,
+                                    KeyProperties.DIGEST_SHA256,
+                                    KeyProperties.DIGEST_SHA384,
+                                    KeyProperties.DIGEST_SHA512);
+                            // Authorized to be used with any encryption and signature padding
+                            // schemes (including no padding).
+                            specBuilder.setEncryptionPaddings(
+                                    KeyProperties.ENCRYPTION_PADDING_NONE,
+                                    KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1,
+                                    KeyProperties.ENCRYPTION_PADDING_RSA_OAEP);
+                            specBuilder.setSignaturePaddings(
+                                    KeyProperties.SIGNATURE_PADDING_RSA_PKCS1,
+                                    KeyProperties.SIGNATURE_PADDING_RSA_PSS);
+                            // Disable randomized encryption requirement to support encryption
+                            // padding NONE above.
+                            specBuilder.setRandomizedEncryptionRequired(false);
+                            break;
+                        default:
+                            throw new ProviderException(
+                                    "Unsupported algorithm: " + mKeymasterAlgorithm);
+                    }
+
+                    if (legacySpec.getKeySize() != -1) {
+                        specBuilder.setKeySize(legacySpec.getKeySize());
+                    }
+                    if (legacySpec.getAlgorithmParameterSpec() != null) {
+                        specBuilder.setAlgorithmParameterSpec(
+                                legacySpec.getAlgorithmParameterSpec());
+                    }
+                    specBuilder.setCertificateSubject(legacySpec.getSubjectDN());
+                    specBuilder.setCertificateSerialNumber(legacySpec.getSerialNumber());
+                    specBuilder.setCertificateNotBefore(legacySpec.getStartDate());
+                    specBuilder.setCertificateNotAfter(legacySpec.getEndDate());
+                    specBuilder.setUserAuthenticationRequired(false);
+
+                    spec = specBuilder.build();
+                } catch (NullPointerException | IllegalArgumentException e) {
+                    throw new InvalidAlgorithmParameterException(e);
+                }
+            } else {
+                throw new InvalidAlgorithmParameterException(
+                        "Unsupported params class: " + params.getClass().getName()
+                        + ". Supported: " + KeyGenParameterSpec.class.getName()
+                        + ", " + KeyPairGeneratorSpec.class.getName());
+            }
+
+            mEntryAlias = spec.getKeystoreAlias();
+            mEntryUid = spec.getUid();
+            mSpec = spec;
+            mKeymasterAlgorithm = keymasterAlgorithm;
+            mKeySizeBits = spec.getKeySize();
+            initAlgorithmSpecificParameters();
+            if (mKeySizeBits == -1) {
+                mKeySizeBits = getDefaultKeySize(keymasterAlgorithm);
+            }
+            checkValidKeySize(keymasterAlgorithm, mKeySizeBits, mSpec.isStrongBoxBacked());
+
+            if (spec.getKeystoreAlias() == null) {
+                throw new InvalidAlgorithmParameterException("KeyStore entry alias not provided");
+            }
+
+            String jcaKeyAlgorithm;
+            try {
+                jcaKeyAlgorithm = KeyProperties.KeyAlgorithm.fromKeymasterAsymmetricKeyAlgorithm(
+                        keymasterAlgorithm);
+                mKeymasterPurposes = KeyProperties.Purpose.allToKeymaster(spec.getPurposes());
+                mKeymasterBlockModes = KeyProperties.BlockMode.allToKeymaster(spec.getBlockModes());
+                mKeymasterEncryptionPaddings = KeyProperties.EncryptionPadding.allToKeymaster(
+                        spec.getEncryptionPaddings());
+                if (((spec.getPurposes() & KeyProperties.PURPOSE_ENCRYPT) != 0)
+                        && (spec.isRandomizedEncryptionRequired())) {
+                    for (int keymasterPadding : mKeymasterEncryptionPaddings) {
+                        if (!KeymasterUtils
+                                .isKeymasterPaddingSchemeIndCpaCompatibleWithAsymmetricCrypto(
+                                        keymasterPadding)) {
+                            throw new InvalidAlgorithmParameterException(
+                                    "Randomized encryption (IND-CPA) required but may be violated"
+                                    + " by padding scheme: "
+                                    + KeyProperties.EncryptionPadding.fromKeymaster(
+                                            keymasterPadding)
+                                    + ". See " + KeyGenParameterSpec.class.getName()
+                                    + " documentation.");
+                        }
+                    }
+                }
+                mKeymasterSignaturePaddings = KeyProperties.SignaturePadding.allToKeymaster(
+                        spec.getSignaturePaddings());
+                if (spec.isDigestsSpecified()) {
+                    mKeymasterDigests = KeyProperties.Digest.allToKeymaster(spec.getDigests());
+                } else {
+                    mKeymasterDigests = EmptyArray.INT;
+                }
+
+                // Check that user authentication related parameters are acceptable. This method
+                // will throw an IllegalStateException if there are issues (e.g., secure lock screen
+                // not set up).
+                KeymasterUtils.addUserAuthArgs(new KeymasterArguments(), mSpec);
+            } catch (IllegalArgumentException | IllegalStateException e) {
+                throw new InvalidAlgorithmParameterException(e);
+            }
+
+            mJcaKeyAlgorithm = jcaKeyAlgorithm;
+            mRng = random;
+            mKeyStore = KeyStore2.getInstance();
+            success = true;
+        } finally {
+            if (!success) {
+                resetAll();
+            }
+        }
+    }
+
+    private void resetAll() {
+        mEntryAlias = null;
+        mEntryUid = KeyProperties.NAMESPACE_APPLICATION;
+        mJcaKeyAlgorithm = null;
+        mKeymasterAlgorithm = -1;
+        mKeymasterPurposes = null;
+        mKeymasterBlockModes = null;
+        mKeymasterEncryptionPaddings = null;
+        mKeymasterSignaturePaddings = null;
+        mKeymasterDigests = null;
+        mKeySizeBits = 0;
+        mSpec = null;
+        mRSAPublicExponent = null;
+        mRng = null;
+        mKeyStore = null;
+    }
+
+    private void initAlgorithmSpecificParameters() throws InvalidAlgorithmParameterException {
+        AlgorithmParameterSpec algSpecificSpec = mSpec.getAlgorithmParameterSpec();
+        switch (mKeymasterAlgorithm) {
+            case KeymasterDefs.KM_ALGORITHM_RSA:
+            {
+                BigInteger publicExponent = null;
+                if (algSpecificSpec instanceof RSAKeyGenParameterSpec) {
+                    RSAKeyGenParameterSpec rsaSpec = (RSAKeyGenParameterSpec) algSpecificSpec;
+                    if (mKeySizeBits == -1) {
+                        mKeySizeBits = rsaSpec.getKeysize();
+                    } else if (mKeySizeBits != rsaSpec.getKeysize()) {
+                        throw new InvalidAlgorithmParameterException("RSA key size must match "
+                                + " between " + mSpec + " and " + algSpecificSpec
+                                + ": " + mKeySizeBits + " vs " + rsaSpec.getKeysize());
+                    }
+                    publicExponent = rsaSpec.getPublicExponent();
+                } else if (algSpecificSpec != null) {
+                    throw new InvalidAlgorithmParameterException(
+                        "RSA may only use RSAKeyGenParameterSpec");
+                }
+                if (publicExponent == null) {
+                    publicExponent = RSAKeyGenParameterSpec.F4;
+                }
+                if (publicExponent.compareTo(BigInteger.ZERO) < 1) {
+                    throw new InvalidAlgorithmParameterException(
+                            "RSA public exponent must be positive: " + publicExponent);
+                }
+                if ((publicExponent.signum() == -1)
+                        || (publicExponent.compareTo(KeymasterArguments.UINT64_MAX_VALUE) > 0)) {
+                    throw new InvalidAlgorithmParameterException(
+                            "Unsupported RSA public exponent: " + publicExponent
+                            + ". Maximum supported value: " + KeymasterArguments.UINT64_MAX_VALUE);
+                }
+                mRSAPublicExponent = publicExponent.longValue();
+                break;
+            }
+            case KeymasterDefs.KM_ALGORITHM_EC:
+                if (algSpecificSpec instanceof ECGenParameterSpec) {
+                    ECGenParameterSpec ecSpec = (ECGenParameterSpec) algSpecificSpec;
+                    String curveName = ecSpec.getName();
+                    Integer ecSpecKeySizeBits = SUPPORTED_EC_NIST_CURVE_NAME_TO_SIZE.get(
+                            curveName.toLowerCase(Locale.US));
+                    if (ecSpecKeySizeBits == null) {
+                        throw new InvalidAlgorithmParameterException(
+                                "Unsupported EC curve name: " + curveName
+                                + ". Supported: " + SUPPORTED_EC_NIST_CURVE_NAMES);
+                    }
+                    if (mKeySizeBits == -1) {
+                        mKeySizeBits = ecSpecKeySizeBits;
+                    } else if (mKeySizeBits != ecSpecKeySizeBits) {
+                        throw new InvalidAlgorithmParameterException("EC key size must match "
+                                + " between " + mSpec + " and " + algSpecificSpec
+                                + ": " + mKeySizeBits + " vs " + ecSpecKeySizeBits);
+                    }
+                } else if (algSpecificSpec != null) {
+                    throw new InvalidAlgorithmParameterException(
+                        "EC may only use ECGenParameterSpec");
+                }
+                break;
+            default:
+                throw new ProviderException("Unsupported algorithm: " + mKeymasterAlgorithm);
+        }
+    }
+
+    @Override
+    public KeyPair generateKeyPair() {
+        if (mKeyStore == null || mSpec == null) {
+            throw new IllegalStateException("Not initialized");
+        }
+
+        final @SecurityLevel int securityLevel =
+                mSpec.isStrongBoxBacked()
+                        ? SecurityLevel.STRONGBOX
+                        : SecurityLevel.TRUSTED_ENVIRONMENT;
+
+        final int flags =
+                mSpec.isCriticalToDeviceEncryption()
+                        ? IKeystoreSecurityLevel
+                                .KEY_FLAG_AUTH_BOUND_WITHOUT_CRYPTOGRAPHIC_LSKF_BINDING
+                        : 0;
+
+        byte[] additionalEntropy =
+                KeyStoreCryptoOperationUtils.getRandomBytesToMixIntoKeystoreRng(
+                        mRng, (mKeySizeBits + 7) / 8);
+
+        KeyDescriptor descriptor = new KeyDescriptor();
+        descriptor.alias = mEntryAlias;
+        descriptor.domain = mEntryUid == KeyProperties.NAMESPACE_APPLICATION
+                ? Domain.APP
+                : Domain.SELINUX;
+        descriptor.nspace = mEntryUid;
+        descriptor.blob = null;
+
+        boolean success = false;
+        try {
+            KeyStoreSecurityLevel iSecurityLevel = mKeyStore.getSecurityLevel(securityLevel);
+
+            KeyMetadata metadata = iSecurityLevel.generateKey(descriptor, null,
+                    constructKeyGenerationArguments(), flags, additionalEntropy);
+
+            AndroidKeyStorePublicKey publicKey =
+                    AndroidKeyStoreProvider.makeAndroidKeyStorePublicKeyFromKeyEntryResponse(
+                            descriptor, metadata, iSecurityLevel, mKeymasterAlgorithm);
+
+            success = true;
+            return new KeyPair(publicKey, publicKey.getPrivateKey());
+        } catch (android.security.KeyStoreException e) {
+            switch(e.getErrorCode()) {
+                case KeymasterDefs.KM_ERROR_HARDWARE_TYPE_UNAVAILABLE:
+                    throw new StrongBoxUnavailableException("Failed to generated key pair.", e);
+                default:
+                    ProviderException p = new ProviderException("Failed to generate key pair.", e);
+                    if ((mSpec.getPurposes() & KeyProperties.PURPOSE_WRAP_KEY) != 0) {
+                        throw new SecureKeyImportUnavailableException(p);
+                    }
+                    throw p;
+            }
+        } catch (UnrecoverableKeyException e) {
+            throw new ProviderException(
+                    "Failed to construct key object from newly generated key pair.", e);
+        } finally {
+            if (!success) {
+                try {
+                    mKeyStore.deleteKey(descriptor);
+                } catch (KeyStoreException e) {
+                    if (e.getErrorCode() != ResponseCode.KEY_NOT_FOUND) {
+                        Log.e(TAG, "Failed to delete newly generated key after "
+                                + "generation failed unexpectedly.", e);
+                    }
+                }
+            }
+        }
+    }
+
+    private void addAttestationParameters(@NonNull List<KeyParameter> params)
+            throws ProviderException {
+        byte[] challenge = mSpec.getAttestationChallenge();
+
+        if (challenge != null) {
+            params.add(KeyStore2ParameterUtils.makeBytes(
+                    KeymasterDefs.KM_TAG_ATTESTATION_CHALLENGE, challenge
+            ));
+
+            if (mSpec.isDevicePropertiesAttestationIncluded()) {
+                params.add(KeyStore2ParameterUtils.makeBytes(
+                        KeymasterDefs.KM_TAG_ATTESTATION_ID_BRAND,
+                        Build.BRAND.getBytes(StandardCharsets.UTF_8)
+                ));
+                params.add(KeyStore2ParameterUtils.makeBytes(
+                        KeymasterDefs.KM_TAG_ATTESTATION_ID_DEVICE,
+                        Build.DEVICE.getBytes(StandardCharsets.UTF_8)
+                ));
+                params.add(KeyStore2ParameterUtils.makeBytes(
+                        KeymasterDefs.KM_TAG_ATTESTATION_ID_PRODUCT,
+                        Build.PRODUCT.getBytes(StandardCharsets.UTF_8)
+                ));
+                params.add(KeyStore2ParameterUtils.makeBytes(
+                        KeymasterDefs.KM_TAG_ATTESTATION_ID_MANUFACTURER,
+                        Build.MANUFACTURER.getBytes(StandardCharsets.UTF_8)
+                ));
+                params.add(KeyStore2ParameterUtils.makeBytes(
+                        KeymasterDefs.KM_TAG_ATTESTATION_ID_MODEL,
+                        Build.MODEL.getBytes(StandardCharsets.UTF_8)
+                ));
+            }
+        } else {
+            if (mSpec.isDevicePropertiesAttestationIncluded()) {
+                throw new ProviderException("An attestation challenge must be provided when "
+                        + "requesting device properties attestation.");
+            }
+        }
+    }
+
+    private Collection<KeyParameter> constructKeyGenerationArguments() {
+        List<KeyParameter> params = new ArrayList<>();
+        params.add(KeyStore2ParameterUtils.makeInt(KeymasterDefs.KM_TAG_KEY_SIZE, mKeySizeBits));
+        params.add(KeyStore2ParameterUtils.makeEnum(
+                KeymasterDefs.KM_TAG_ALGORITHM, mKeymasterAlgorithm
+        ));
+        ArrayUtils.forEach(mKeymasterPurposes, (purpose) -> {
+            params.add(KeyStore2ParameterUtils.makeEnum(
+                    KeymasterDefs.KM_TAG_PURPOSE, purpose
+            ));
+        });
+        ArrayUtils.forEach(mKeymasterBlockModes, (blockMode) -> {
+            params.add(KeyStore2ParameterUtils.makeEnum(
+                    KeymasterDefs.KM_TAG_BLOCK_MODE, blockMode
+            ));
+        });
+        ArrayUtils.forEach(mKeymasterEncryptionPaddings, (padding) -> {
+            params.add(KeyStore2ParameterUtils.makeEnum(
+                    KeymasterDefs.KM_TAG_PADDING, padding
+            ));
+        });
+        ArrayUtils.forEach(mKeymasterSignaturePaddings, (padding) -> {
+            params.add(KeyStore2ParameterUtils.makeEnum(
+                    KeymasterDefs.KM_TAG_PADDING, padding
+            ));
+        });
+        ArrayUtils.forEach(mKeymasterDigests, (digest) -> {
+            params.add(KeyStore2ParameterUtils.makeEnum(
+                    KeymasterDefs.KM_TAG_DIGEST, digest
+            ));
+        });
+
+        KeyStore2ParameterUtils.addUserAuthArgs(params, mSpec);
+
+        if (mSpec.getKeyValidityStart() != null) {
+            params.add(KeyStore2ParameterUtils.makeDate(
+                    KeymasterDefs.KM_TAG_ACTIVE_DATETIME, mSpec.getKeyValidityStart()
+            ));
+        }
+        if (mSpec.getKeyValidityForOriginationEnd() != null) {
+            params.add(KeyStore2ParameterUtils.makeDate(
+                    KeymasterDefs.KM_TAG_ORIGINATION_EXPIRE_DATETIME,
+                    mSpec.getKeyValidityForOriginationEnd()
+            ));
+        }
+        if (mSpec.getKeyValidityForConsumptionEnd() != null) {
+            params.add(KeyStore2ParameterUtils.makeDate(
+                    KeymasterDefs.KM_TAG_USAGE_EXPIRE_DATETIME,
+                    mSpec.getKeyValidityForConsumptionEnd()
+            ));
+        }
+
+        addAlgorithmSpecificParameters(params);
+
+        if (mSpec.isUniqueIdIncluded()) {
+            params.add(KeyStore2ParameterUtils.makeBool(KeymasterDefs.KM_TAG_INCLUDE_UNIQUE_ID));
+        }
+
+        addAttestationParameters(params);
+
+        return params;
+    }
+
+    private void addAlgorithmSpecificParameters(List<KeyParameter> params) {
+        switch (mKeymasterAlgorithm) {
+            case KeymasterDefs.KM_ALGORITHM_RSA:
+                params.add(KeyStore2ParameterUtils.makeLong(
+                        KeymasterDefs.KM_TAG_RSA_PUBLIC_EXPONENT, mRSAPublicExponent
+                ));
+                break;
+            case KeymasterDefs.KM_ALGORITHM_EC:
+                break;
+            default:
+                throw new ProviderException("Unsupported algorithm: " + mKeymasterAlgorithm);
+        }
+    }
+
+    private static int getDefaultKeySize(int keymasterAlgorithm) {
+        switch (keymasterAlgorithm) {
+            case KeymasterDefs.KM_ALGORITHM_EC:
+                return EC_DEFAULT_KEY_SIZE;
+            case KeymasterDefs.KM_ALGORITHM_RSA:
+                return RSA_DEFAULT_KEY_SIZE;
+            default:
+                throw new ProviderException("Unsupported algorithm: " + keymasterAlgorithm);
+        }
+    }
+
+    private static void checkValidKeySize(
+            int keymasterAlgorithm,
+            int keySize,
+            boolean isStrongBoxBacked)
+            throws InvalidAlgorithmParameterException {
+        switch (keymasterAlgorithm) {
+            case KeymasterDefs.KM_ALGORITHM_EC:
+                if (isStrongBoxBacked && keySize != 256) {
+                    throw new InvalidAlgorithmParameterException(
+                            "Unsupported StrongBox EC key size: "
+                            + keySize + " bits. Supported: 256");
+                }
+                if (!SUPPORTED_EC_NIST_CURVE_SIZES.contains(keySize)) {
+                    throw new InvalidAlgorithmParameterException("Unsupported EC key size: "
+                            + keySize + " bits. Supported: " + SUPPORTED_EC_NIST_CURVE_SIZES);
+                }
+                break;
+            case KeymasterDefs.KM_ALGORITHM_RSA:
+                if (keySize < RSA_MIN_KEY_SIZE || keySize > RSA_MAX_KEY_SIZE) {
+                    throw new InvalidAlgorithmParameterException("RSA key size must be >= "
+                            + RSA_MIN_KEY_SIZE + " and <= " + RSA_MAX_KEY_SIZE);
+                }
+                break;
+            default:
+                throw new ProviderException("Unsupported algorithm: " + keymasterAlgorithm);
+        }
+    }
+
+    /**
+     * Returns the {@code Signature} algorithm to be used for signing a certificate using the
+     * specified key or {@code null} if the key cannot be used for signing a certificate.
+     */
+    @Nullable
+    private static String getCertificateSignatureAlgorithm(
+            int keymasterAlgorithm,
+            int keySizeBits,
+            KeyGenParameterSpec spec) {
+        // Constraints:
+        // 1. Key must be authorized for signing without user authentication.
+        // 2. Signature digest must be one of key's authorized digests.
+        // 3. For RSA keys, the digest output size must not exceed modulus size minus space overhead
+        //    of RSA PKCS#1 signature padding scheme (about 30 bytes).
+        // 4. For EC keys, the there is no point in using a digest whose output size is longer than
+        //    key/field size because the digest will be truncated to that size.
+
+        if ((spec.getPurposes() & KeyProperties.PURPOSE_SIGN) == 0) {
+            // Key not authorized for signing
+            return null;
+        }
+        if (spec.isUserAuthenticationRequired()) {
+            // Key not authorized for use without user authentication
+            return null;
+        }
+        if (!spec.isDigestsSpecified()) {
+            // Key not authorized for any digests -- can't sign
+            return null;
+        }
+        switch (keymasterAlgorithm) {
+            case KeymasterDefs.KM_ALGORITHM_EC:
+            {
+                Set<Integer> availableKeymasterDigests = getAvailableKeymasterSignatureDigests(
+                        spec.getDigests(),
+                        AndroidKeyStoreBCWorkaroundProvider.getSupportedEcdsaSignatureDigests());
+
+                int bestKeymasterDigest = -1;
+                int bestDigestOutputSizeBits = -1;
+                for (int keymasterDigest : availableKeymasterDigests) {
+                    int outputSizeBits = KeymasterUtils.getDigestOutputSizeBits(keymasterDigest);
+                    if (outputSizeBits == keySizeBits) {
+                        // Perfect match -- use this digest
+                        bestKeymasterDigest = keymasterDigest;
+                        bestDigestOutputSizeBits = outputSizeBits;
+                        break;
+                    }
+                    // Not a perfect match -- check against the best digest so far
+                    if (bestKeymasterDigest == -1) {
+                        // First digest tested -- definitely the best so far
+                        bestKeymasterDigest = keymasterDigest;
+                        bestDigestOutputSizeBits = outputSizeBits;
+                    } else {
+                        // Prefer output size to be as close to key size as possible, with output
+                        // sizes larger than key size preferred to those smaller than key size.
+                        if (bestDigestOutputSizeBits < keySizeBits) {
+                            // Output size of the best digest so far is smaller than key size.
+                            // Anything larger is a win.
+                            if (outputSizeBits > bestDigestOutputSizeBits) {
+                                bestKeymasterDigest = keymasterDigest;
+                                bestDigestOutputSizeBits = outputSizeBits;
+                            }
+                        } else {
+                            // Output size of the best digest so far is larger than key size.
+                            // Anything smaller is a win, as long as it's not smaller than key size.
+                            if ((outputSizeBits < bestDigestOutputSizeBits)
+                                    && (outputSizeBits >= keySizeBits)) {
+                                bestKeymasterDigest = keymasterDigest;
+                                bestDigestOutputSizeBits = outputSizeBits;
+                            }
+                        }
+                    }
+                }
+                if (bestKeymasterDigest == -1) {
+                    return null;
+                }
+                return KeyProperties.Digest.fromKeymasterToSignatureAlgorithmDigest(
+                        bestKeymasterDigest) + "WithECDSA";
+            }
+            case KeymasterDefs.KM_ALGORITHM_RSA:
+            {
+                // Check whether this key is authorized for PKCS#1 signature padding.
+                // We use Bouncy Castle to generate self-signed RSA certificates. Bouncy Castle
+                // only supports RSA certificates signed using PKCS#1 padding scheme. The key needs
+                // to be authorized for PKCS#1 padding or padding NONE which means any padding.
+                boolean pkcs1SignaturePaddingSupported =
+                        com.android.internal.util.ArrayUtils.contains(
+                                KeyProperties.SignaturePadding.allToKeymaster(
+                                        spec.getSignaturePaddings()),
+                                KeymasterDefs.KM_PAD_RSA_PKCS1_1_5_SIGN);
+                if (!pkcs1SignaturePaddingSupported) {
+                    // Key not authorized for PKCS#1 signature padding -- can't sign
+                    return null;
+                }
+
+                Set<Integer> availableKeymasterDigests = getAvailableKeymasterSignatureDigests(
+                        spec.getDigests(),
+                        AndroidKeyStoreBCWorkaroundProvider.getSupportedEcdsaSignatureDigests());
+
+                // The amount of space available for the digest is less than modulus size by about
+                // 30 bytes because padding must be at least 11 bytes long (00 || 01 || PS || 00,
+                // where PS must be at least 8 bytes long), and then there's also the 15--19 bytes
+                // overhead (depending the on chosen digest) for encoding digest OID and digest
+                // value in DER.
+                int maxDigestOutputSizeBits = keySizeBits - 30 * 8;
+                int bestKeymasterDigest = -1;
+                int bestDigestOutputSizeBits = -1;
+                for (int keymasterDigest : availableKeymasterDigests) {
+                    int outputSizeBits = KeymasterUtils.getDigestOutputSizeBits(keymasterDigest);
+                    if (outputSizeBits > maxDigestOutputSizeBits) {
+                        // Digest too long (signature generation will fail) -- skip
+                        continue;
+                    }
+                    if (bestKeymasterDigest == -1) {
+                        // First digest tested -- definitely the best so far
+                        bestKeymasterDigest = keymasterDigest;
+                        bestDigestOutputSizeBits = outputSizeBits;
+                    } else {
+                        // The longer the better
+                        if (outputSizeBits > bestDigestOutputSizeBits) {
+                            bestKeymasterDigest = keymasterDigest;
+                            bestDigestOutputSizeBits = outputSizeBits;
+                        }
+                    }
+                }
+                if (bestKeymasterDigest == -1) {
+                    return null;
+                }
+                return KeyProperties.Digest.fromKeymasterToSignatureAlgorithmDigest(
+                        bestKeymasterDigest) + "WithRSA";
+            }
+            default:
+                throw new ProviderException("Unsupported algorithm: " + keymasterAlgorithm);
+        }
+    }
+
+    private static Set<Integer> getAvailableKeymasterSignatureDigests(
+            @KeyProperties.DigestEnum String[] authorizedKeyDigests,
+            @KeyProperties.DigestEnum String[] supportedSignatureDigests) {
+        Set<Integer> authorizedKeymasterKeyDigests = new HashSet<Integer>();
+        for (int keymasterDigest : KeyProperties.Digest.allToKeymaster(authorizedKeyDigests)) {
+            authorizedKeymasterKeyDigests.add(keymasterDigest);
+        }
+        Set<Integer> supportedKeymasterSignatureDigests = new HashSet<Integer>();
+        for (int keymasterDigest
+                : KeyProperties.Digest.allToKeymaster(supportedSignatureDigests)) {
+            supportedKeymasterSignatureDigests.add(keymasterDigest);
+        }
+        Set<Integer> result = new HashSet<Integer>(supportedKeymasterSignatureDigests);
+        result.retainAll(authorizedKeymasterKeyDigests);
+        return result;
+    }
+}
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreLoadStoreParameter.java b/keystore/java/android/security/keystore2/AndroidKeyStoreLoadStoreParameter.java
new file mode 100644
index 0000000..afb1054
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreLoadStoreParameter.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import java.security.KeyStore;
+import java.security.KeyStore.ProtectionParameter;
+
+/**
+ * @hide
+ */
+class AndroidKeyStoreLoadStoreParameter implements KeyStore.LoadStoreParameter {
+
+    private final int mNamespace;
+
+    AndroidKeyStoreLoadStoreParameter(int namespace) {
+        mNamespace = namespace;
+    }
+
+    @Override
+    public ProtectionParameter getProtectionParameter() {
+        return null;
+    }
+
+    int getNamespace() {
+        return mNamespace;
+    }
+}
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStorePrivateKey.java b/keystore/java/android/security/keystore2/AndroidKeyStorePrivateKey.java
new file mode 100644
index 0000000..8b331ee
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStorePrivateKey.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.annotation.NonNull;
+import android.security.KeyStoreSecurityLevel;
+import android.system.keystore2.Authorization;
+import android.system.keystore2.KeyDescriptor;
+
+import java.security.PrivateKey;
+
+/**
+ * {@link PrivateKey} backed by Android Keystore.
+ *
+ * @hide
+ */
+public class AndroidKeyStorePrivateKey extends AndroidKeyStoreKey implements PrivateKey {
+
+    public AndroidKeyStorePrivateKey(@NonNull KeyDescriptor descriptor,
+            long keyId, @NonNull Authorization[] authorizations, @NonNull String algorithm,
+            @NonNull KeyStoreSecurityLevel securityLevel) {
+        super(descriptor, keyId, authorizations, algorithm, securityLevel);
+    }
+
+}
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreProvider.java b/keystore/java/android/security/keystore2/AndroidKeyStoreProvider.java
new file mode 100644
index 0000000..b2e32a3
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreProvider.java
@@ -0,0 +1,415 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.annotation.NonNull;
+import android.security.KeyStore;
+import android.security.KeyStore2;
+import android.security.KeyStoreSecurityLevel;
+import android.security.keymaster.KeymasterDefs;
+import android.security.keystore.KeyPermanentlyInvalidatedException;
+import android.security.keystore.KeyProperties;
+import android.security.keystore.KeyStoreCryptoOperation;
+import android.system.keystore2.Authorization;
+import android.system.keystore2.Domain;
+import android.system.keystore2.KeyDescriptor;
+import android.system.keystore2.KeyEntryResponse;
+import android.system.keystore2.KeyMetadata;
+import android.system.keystore2.ResponseCode;
+
+import java.security.KeyFactory;
+import java.security.KeyPair;
+import java.security.NoSuchAlgorithmException;
+import java.security.Provider;
+import java.security.ProviderException;
+import java.security.PublicKey;
+import java.security.Security;
+import java.security.Signature;
+import java.security.UnrecoverableKeyException;
+import java.security.interfaces.ECPublicKey;
+import java.security.interfaces.RSAPublicKey;
+import java.security.spec.InvalidKeySpecException;
+import java.security.spec.X509EncodedKeySpec;
+
+import javax.crypto.Cipher;
+import javax.crypto.Mac;
+
+/**
+ * A provider focused on providing JCA interfaces for the Android KeyStore.
+ *
+ * @hide
+ */
+public class AndroidKeyStoreProvider extends Provider {
+    private static final String PROVIDER_NAME = "AndroidKeyStore";
+
+    // IMPLEMENTATION NOTE: Class names are hard-coded in this provider to avoid loading these
+    // classes when this provider is instantiated and installed early on during each app's
+    // initialization process.
+    //
+    // Crypto operations operating on the AndroidKeyStore keys must not be offered by this provider.
+    // Instead, they need to be offered by AndroidKeyStoreBCWorkaroundProvider. See its Javadoc
+    // for details.
+
+    private static final String PACKAGE_NAME = "android.security.keystore2";
+
+    private static final String DESEDE_SYSTEM_PROPERTY =
+            "ro.hardware.keystore_desede";
+
+    /** @hide **/
+    public AndroidKeyStoreProvider() {
+        super(PROVIDER_NAME, 1.0, "Android KeyStore security provider");
+
+        boolean supports3DES = "true".equals(android.os.SystemProperties.get(DESEDE_SYSTEM_PROPERTY));
+
+        // java.security.KeyStore
+        put("KeyStore.AndroidKeyStore", PACKAGE_NAME + ".AndroidKeyStoreSpi");
+
+        // java.security.KeyPairGenerator
+        put("KeyPairGenerator.EC", PACKAGE_NAME + ".AndroidKeyStoreKeyPairGeneratorSpi$EC");
+        put("KeyPairGenerator.RSA", PACKAGE_NAME +  ".AndroidKeyStoreKeyPairGeneratorSpi$RSA");
+
+        // java.security.KeyFactory
+        putKeyFactoryImpl("EC");
+        putKeyFactoryImpl("RSA");
+
+        // javax.crypto.KeyGenerator
+        put("KeyGenerator.AES", PACKAGE_NAME + ".AndroidKeyStoreKeyGeneratorSpi$AES");
+        put("KeyGenerator.HmacSHA1", PACKAGE_NAME + ".AndroidKeyStoreKeyGeneratorSpi$HmacSHA1");
+        put("KeyGenerator.HmacSHA224", PACKAGE_NAME + ".AndroidKeyStoreKeyGeneratorSpi$HmacSHA224");
+        put("KeyGenerator.HmacSHA256", PACKAGE_NAME + ".AndroidKeyStoreKeyGeneratorSpi$HmacSHA256");
+        put("KeyGenerator.HmacSHA384", PACKAGE_NAME + ".AndroidKeyStoreKeyGeneratorSpi$HmacSHA384");
+        put("KeyGenerator.HmacSHA512", PACKAGE_NAME + ".AndroidKeyStoreKeyGeneratorSpi$HmacSHA512");
+
+        if (supports3DES) {
+            put("KeyGenerator.DESede", PACKAGE_NAME + ".AndroidKeyStoreKeyGeneratorSpi$DESede");
+        }
+
+        // java.security.SecretKeyFactory
+        putSecretKeyFactoryImpl("AES");
+        if (supports3DES) {
+            putSecretKeyFactoryImpl("DESede");
+        }
+        putSecretKeyFactoryImpl("HmacSHA1");
+        putSecretKeyFactoryImpl("HmacSHA224");
+        putSecretKeyFactoryImpl("HmacSHA256");
+        putSecretKeyFactoryImpl("HmacSHA384");
+        putSecretKeyFactoryImpl("HmacSHA512");
+    }
+
+    private static boolean sInstalled = false;
+
+    /**
+     * This function indicates whether or not this provider was installed. This is manly used
+     * as indicator for
+     * {@link android.security.keystore.AndroidKeyStoreProvider#getKeyStoreForUid(int)}
+     * to whether or not to retrieve the Keystore provider by "AndroidKeyStoreLegacy".
+     * This function can be removed once the transition to Keystore 2.0 is complete.
+     * b/171305684
+     *
+     * @return true if this provider was installed.
+     * @hide
+     */
+    public static boolean isInstalled() {
+        return sInstalled;
+    }
+
+    /**
+     * Installs a new instance of this provider (and the
+     * {@link AndroidKeyStoreBCWorkaroundProvider}).
+     * @hide
+     */
+    public static void install() {
+        Provider[] providers = Security.getProviders();
+        int bcProviderIndex = -1;
+        for (int i = 0; i < providers.length; i++) {
+            Provider provider = providers[i];
+            if ("BC".equals(provider.getName())) {
+                bcProviderIndex = i;
+                break;
+            }
+        }
+        sInstalled = true;
+
+        Security.addProvider(new AndroidKeyStoreProvider());
+        Security.addProvider(
+                new android.security.keystore.AndroidKeyStoreProvider(
+                        "AndroidKeyStoreLegacy"));
+        Provider workaroundProvider = new AndroidKeyStoreBCWorkaroundProvider();
+        Provider legacyWorkaroundProvider =
+                new android.security.keystore.AndroidKeyStoreBCWorkaroundProvider(
+                        "AndroidKeyStoreBCWorkaroundLegacy");
+        if (bcProviderIndex != -1) {
+            // Bouncy Castle provider found -- install the workaround provider above it.
+            // insertProviderAt uses 1-based positions.
+            Security.insertProviderAt(legacyWorkaroundProvider, bcProviderIndex + 1);
+            Security.insertProviderAt(workaroundProvider, bcProviderIndex + 1);
+        } else {
+            // Bouncy Castle provider not found -- install the workaround provider at lowest
+            // priority.
+            Security.addProvider(workaroundProvider);
+            Security.addProvider(legacyWorkaroundProvider);
+        }
+    }
+
+    private void putSecretKeyFactoryImpl(String algorithm) {
+        put("SecretKeyFactory." + algorithm, PACKAGE_NAME + ".AndroidKeyStoreSecretKeyFactorySpi");
+    }
+
+    private void putKeyFactoryImpl(String algorithm) {
+        put("KeyFactory." + algorithm, PACKAGE_NAME + ".AndroidKeyStoreKeyFactorySpi");
+    }
+
+    /**
+     * Gets the {@link KeyStore} operation handle corresponding to the provided JCA crypto
+     * primitive.
+     *
+     * <p>The following primitives are supported: {@link Cipher} and {@link Mac}.
+     *
+     * @return KeyStore operation handle or {@code 0} if the provided primitive's KeyStore operation
+     *         is not in progress.
+     *
+     * @throws IllegalArgumentException if the provided primitive is not supported or is not backed
+     *         by AndroidKeyStore provider.
+     * @throws IllegalStateException if the provided primitive is not initialized.
+     * @hide
+     */
+    public static long getKeyStoreOperationHandle(Object cryptoPrimitive) {
+        if (cryptoPrimitive == null) {
+            throw new NullPointerException();
+        }
+        Object spi;
+        if (cryptoPrimitive instanceof Signature) {
+            spi = ((Signature) cryptoPrimitive).getCurrentSpi();
+        } else if (cryptoPrimitive instanceof Mac) {
+            spi = ((Mac) cryptoPrimitive).getCurrentSpi();
+        } else if (cryptoPrimitive instanceof Cipher) {
+            spi = ((Cipher) cryptoPrimitive).getCurrentSpi();
+        } else {
+            throw new IllegalArgumentException("Unsupported crypto primitive: " + cryptoPrimitive
+                    + ". Supported: Signature, Mac, Cipher");
+        }
+        if (spi == null) {
+            throw new IllegalStateException("Crypto primitive not initialized");
+        } else if (!(spi instanceof KeyStoreCryptoOperation)) {
+            throw new IllegalArgumentException(
+                    "Crypto primitive not backed by AndroidKeyStore provider: " + cryptoPrimitive
+                    + ", spi: " + spi);
+        }
+        return ((KeyStoreCryptoOperation) spi).getOperationHandle();
+    }
+
+    /**
+     * This helper function gets called if the key loaded from the keystore daemon
+     * is for an asymmetric algorithm. It constructs an instance of {@link AndroidKeyStorePublicKey}
+     * which implements {@link PublicKey}.
+     *
+     * @param descriptor The original key descriptor that was used to load the key.
+     *
+     * @param metadata The key metadata which includes the public key material, a reference to the
+     *                 stored private key material, the key characteristics.
+     * @param iSecurityLevel A binder interface that allows using the private key.
+     * @param algorithm Must indicate EC or RSA.
+     * @return AndroidKeyStorePublicKey
+     * @throws UnrecoverableKeyException
+     * @hide
+     */
+    @NonNull
+    static AndroidKeyStorePublicKey makeAndroidKeyStorePublicKeyFromKeyEntryResponse(
+            @NonNull KeyDescriptor descriptor,
+            @NonNull KeyMetadata metadata,
+            @NonNull KeyStoreSecurityLevel iSecurityLevel, int algorithm)
+            throws UnrecoverableKeyException {
+        if (metadata.certificate == null) {
+            throw new UnrecoverableKeyException("Failed to obtain X.509 form of public key."
+                    + " Keystore has no public certificate stored.");
+        }
+        final byte[] x509EncodedPublicKey = metadata.certificate;
+
+        String jcaKeyAlgorithm;
+        try {
+            jcaKeyAlgorithm = KeyProperties.KeyAlgorithm.fromKeymasterAsymmetricKeyAlgorithm(
+                    algorithm);
+        } catch (IllegalArgumentException e) {
+            throw (UnrecoverableKeyException)
+                    new UnrecoverableKeyException("Failed to load private key")
+                            .initCause(e);
+        }
+
+        PublicKey publicKey;
+        try {
+            KeyFactory keyFactory = KeyFactory.getInstance(jcaKeyAlgorithm);
+            publicKey = keyFactory.generatePublic(new X509EncodedKeySpec(x509EncodedPublicKey));
+        } catch (NoSuchAlgorithmException e) {
+            throw new ProviderException(
+                    "Failed to obtain " + jcaKeyAlgorithm + " KeyFactory", e);
+        } catch (InvalidKeySpecException e) {
+            throw new ProviderException("Invalid X.509 encoding of public key", e);
+        }
+
+        KeyStoreSecurityLevel securityLevel = iSecurityLevel;
+        if (KeyProperties.KEY_ALGORITHM_EC.equalsIgnoreCase(jcaKeyAlgorithm)) {
+
+            return new AndroidKeyStoreECPublicKey(descriptor, metadata,
+                    iSecurityLevel, (ECPublicKey) publicKey);
+        } else if (KeyProperties.KEY_ALGORITHM_RSA.equalsIgnoreCase(jcaKeyAlgorithm)) {
+            return new AndroidKeyStoreRSAPublicKey(descriptor, metadata,
+                    iSecurityLevel, (RSAPublicKey) publicKey);
+        } else {
+            throw new ProviderException("Unsupported Android Keystore public key algorithm: "
+                    + jcaKeyAlgorithm);
+        }
+    }
+
+    /** @hide **/
+    @NonNull
+    public static AndroidKeyStorePublicKey loadAndroidKeyStorePublicKeyFromKeystore(
+            @NonNull KeyStore2 keyStore, @NonNull String privateKeyAlias, int namespace)
+            throws UnrecoverableKeyException, KeyPermanentlyInvalidatedException {
+        AndroidKeyStoreKey key =
+                loadAndroidKeyStoreKeyFromKeystore(keyStore, privateKeyAlias, namespace);
+        if (key instanceof AndroidKeyStorePublicKey) {
+            return (AndroidKeyStorePublicKey) key;
+        } else {
+            throw new UnrecoverableKeyException("No asymmetric key found by the given alias.");
+        }
+    }
+
+    /** @hide **/
+    @NonNull
+    public static KeyPair loadAndroidKeyStoreKeyPairFromKeystore(
+            @NonNull KeyStore2 keyStore, @NonNull String privateKeyAlias, int namespace)
+            throws UnrecoverableKeyException, KeyPermanentlyInvalidatedException {
+        AndroidKeyStoreKey key =
+                loadAndroidKeyStoreKeyFromKeystore(keyStore, privateKeyAlias, namespace);
+        if (key instanceof AndroidKeyStorePublicKey) {
+            AndroidKeyStorePublicKey publicKey = (AndroidKeyStorePublicKey) key;
+            return new KeyPair(publicKey, publicKey.getPrivateKey());
+        } else {
+            throw new UnrecoverableKeyException("No asymmetric key found by the given alias.");
+        }
+    }
+
+    /** @hide **/
+    @NonNull
+    public static AndroidKeyStorePrivateKey loadAndroidKeyStorePrivateKeyFromKeystore(
+            @NonNull KeyStore2 keyStore, @NonNull String privateKeyAlias, int namespace)
+            throws UnrecoverableKeyException, KeyPermanentlyInvalidatedException {
+        AndroidKeyStoreKey key =
+                loadAndroidKeyStoreKeyFromKeystore(keyStore, privateKeyAlias, namespace);
+        if (key instanceof AndroidKeyStorePublicKey) {
+            return ((AndroidKeyStorePublicKey) key).getPrivateKey();
+        } else {
+            throw new UnrecoverableKeyException("No asymmetric key found by the given alias.");
+        }
+    }
+
+
+    @NonNull
+    private static AndroidKeyStoreSecretKey makeAndroidKeyStoreSecretKeyFromKeyEntryResponse(
+            @NonNull KeyDescriptor descriptor,
+            @NonNull KeyEntryResponse response, int algorithm, int digest)
+            throws UnrecoverableKeyException {
+
+        @KeyProperties.KeyAlgorithmEnum String keyAlgorithmString;
+        try {
+            keyAlgorithmString = KeyProperties.KeyAlgorithm.fromKeymasterSecretKeyAlgorithm(
+                    algorithm, digest);
+        } catch (IllegalArgumentException e) {
+            throw (UnrecoverableKeyException)
+                    new UnrecoverableKeyException("Unsupported secret key type").initCause(e);
+        }
+
+        return new AndroidKeyStoreSecretKey(descriptor,
+                response.metadata, keyAlgorithmString,
+                new KeyStoreSecurityLevel(response.iSecurityLevel));
+    }
+
+    /**
+     * Loads an an AndroidKeyStoreKey from the AndroidKeyStore backend.
+     *
+     * @param keyStore The keystore2 backend.
+     * @param alias The alias of the key in the Keystore database.
+     * @param namespace The a Keystore namespace. This is used by system api only to request
+     *                  Android system specific keystore namespace, which can be configured
+     *                  in the device's SEPolicy. Third party apps and most system components
+     *                  set this parameter to -1 to indicate their application specific namespace.
+     *                  TODO b/171806779 link to public Keystore 2.0 documentation.
+     *                       See bug for more details for now.
+     * @hide
+     **/
+    @NonNull
+    public static AndroidKeyStoreKey loadAndroidKeyStoreKeyFromKeystore(
+            @NonNull KeyStore2 keyStore, @NonNull String alias, int namespace)
+            throws UnrecoverableKeyException, KeyPermanentlyInvalidatedException  {
+
+        KeyDescriptor descriptor = new KeyDescriptor();
+        if (namespace == KeyProperties.NAMESPACE_APPLICATION) {
+            descriptor.nspace = 0; // ignored;
+            descriptor.domain = Domain.APP;
+        } else {
+            descriptor.nspace = namespace;
+            descriptor.domain = Domain.SELINUX;
+        }
+        descriptor.alias = alias;
+        descriptor.blob = null;
+        KeyEntryResponse response = null;
+        try {
+            response = keyStore.getKeyEntry(descriptor);
+        } catch (android.security.KeyStoreException e) {
+            if (e.getErrorCode() == ResponseCode.KEY_PERMANENTLY_INVALIDATED) {
+                throw new KeyPermanentlyInvalidatedException(
+                        "User changed or deleted their auth credentials",
+                        e);
+            } else {
+                throw (UnrecoverableKeyException)
+                        new UnrecoverableKeyException("Failed to obtain information about key")
+                                .initCause(e);
+            }
+        }
+
+        Integer keymasterAlgorithm = null;
+        // We just need one digest for the algorithm name
+        int keymasterDigest = -1;
+        for (Authorization a : response.metadata.authorizations) {
+            switch (a.keyParameter.tag) {
+                case KeymasterDefs.KM_TAG_ALGORITHM:
+                    keymasterAlgorithm = a.keyParameter.integer;
+                    break;
+                case KeymasterDefs.KM_TAG_DIGEST:
+                    if (keymasterDigest == -1) keymasterDigest = a.keyParameter.integer;
+                    break;
+            }
+        }
+        if (keymasterAlgorithm == null) {
+            throw new UnrecoverableKeyException("Key algorithm unknown");
+        }
+
+        if (keymasterAlgorithm == KeymasterDefs.KM_ALGORITHM_HMAC ||
+                keymasterAlgorithm == KeymasterDefs.KM_ALGORITHM_AES ||
+                keymasterAlgorithm == KeymasterDefs.KM_ALGORITHM_3DES) {
+            return makeAndroidKeyStoreSecretKeyFromKeyEntryResponse(descriptor, response,
+                    keymasterAlgorithm, keymasterDigest);
+        } else if (keymasterAlgorithm == KeymasterDefs.KM_ALGORITHM_RSA ||
+                keymasterAlgorithm == KeymasterDefs.KM_ALGORITHM_EC) {
+            return makeAndroidKeyStorePublicKeyFromKeyEntryResponse(descriptor, response.metadata,
+                    new KeyStoreSecurityLevel(response.iSecurityLevel),
+                    keymasterAlgorithm);
+        } else {
+            throw new UnrecoverableKeyException("Key algorithm unknown");
+        }
+    }
+}
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStorePublicKey.java b/keystore/java/android/security/keystore2/AndroidKeyStorePublicKey.java
new file mode 100644
index 0000000..49dd77e
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStorePublicKey.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.annotation.NonNull;
+import android.security.KeyStoreSecurityLevel;
+import android.security.keystore.ArrayUtils;
+import android.system.keystore2.KeyDescriptor;
+import android.system.keystore2.KeyMetadata;
+
+import java.security.PublicKey;
+
+/**
+ * {@link PublicKey} backed by Android Keystore.
+ *
+ * @hide
+ */
+public abstract class AndroidKeyStorePublicKey extends AndroidKeyStoreKey implements PublicKey {
+    private final byte[] mCertificate;
+    private final byte[] mCertificateChain;
+
+    public AndroidKeyStorePublicKey(@NonNull KeyDescriptor descriptor,
+            @NonNull KeyMetadata metadata, @NonNull String algorithm,
+            @NonNull KeyStoreSecurityLevel securityLevel) {
+        super(descriptor, metadata.key.nspace, metadata.authorizations, algorithm, securityLevel);
+        mCertificate = metadata.certificate;
+        mCertificateChain = metadata.certificateChain;
+    }
+
+    abstract AndroidKeyStorePrivateKey getPrivateKey();
+
+    @Override
+    public String getFormat() {
+        return "X.509";
+    }
+
+    @Override
+    public byte[] getEncoded() {
+        return ArrayUtils.cloneIfNotEmpty(mCertificate);
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime * result + super.hashCode();
+        result = prime * result + ((mCertificate == null) ? 0 : mCertificate.hashCode());
+        result = prime * result + ((mCertificateChain == null) ? 0 : mCertificateChain.hashCode());
+
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (!super.equals(obj)) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        return true;
+    }
+}
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreRSACipherSpi.java b/keystore/java/android/security/keystore2/AndroidKeyStoreRSACipherSpi.java
new file mode 100644
index 0000000..2686ddc
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreRSACipherSpi.java
@@ -0,0 +1,525 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.hardware.keymint.KeyParameter;
+import android.security.keymaster.KeymasterDefs;
+import android.security.keystore.KeyProperties;
+import android.security.keystore.KeymasterUtils;
+import android.system.keystore2.Authorization;
+
+import java.security.AlgorithmParameters;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.Key;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
+import java.security.ProviderException;
+import java.security.spec.AlgorithmParameterSpec;
+import java.security.spec.InvalidParameterSpecException;
+import java.security.spec.MGF1ParameterSpec;
+import java.util.List;
+
+import javax.crypto.Cipher;
+import javax.crypto.CipherSpi;
+import javax.crypto.spec.OAEPParameterSpec;
+import javax.crypto.spec.PSource;
+
+/**
+ * Base class for {@link CipherSpi} providing Android KeyStore backed RSA encryption/decryption.
+ *
+ * @hide
+ */
+abstract class AndroidKeyStoreRSACipherSpi extends AndroidKeyStoreCipherSpiBase {
+
+    /**
+     * Raw RSA cipher without any padding.
+     */
+    public static final class NoPadding extends AndroidKeyStoreRSACipherSpi {
+        public NoPadding() {
+            super(KeymasterDefs.KM_PAD_NONE);
+        }
+
+        @Override
+        protected boolean adjustConfigForEncryptingWithPrivateKey() {
+            // RSA encryption with no padding using private key is a way to implement raw RSA
+            // signatures which JCA does not expose via Signature. We thus have to support this.
+            setKeymasterPurposeOverride(KeymasterDefs.KM_PURPOSE_SIGN);
+            return true;
+        }
+
+        @Override
+        protected void initAlgorithmSpecificParameters() throws InvalidKeyException {}
+
+        @Override
+        protected void initAlgorithmSpecificParameters(@Nullable AlgorithmParameterSpec params)
+                throws InvalidAlgorithmParameterException {
+            if (params != null) {
+                throw new InvalidAlgorithmParameterException(
+                        "Unexpected parameters: " + params + ". No parameters supported");
+            }
+        }
+
+        @Override
+        protected void initAlgorithmSpecificParameters(@Nullable AlgorithmParameters params)
+                throws InvalidAlgorithmParameterException {
+
+            if (params != null) {
+                throw new InvalidAlgorithmParameterException(
+                        "Unexpected parameters: " + params + ". No parameters supported");
+            }
+        }
+
+        @Override
+        protected AlgorithmParameters engineGetParameters() {
+            return null;
+        }
+
+        @Override
+        protected final int getAdditionalEntropyAmountForBegin() {
+            return 0;
+        }
+
+        @Override
+        protected final int getAdditionalEntropyAmountForFinish() {
+            return 0;
+        }
+    }
+
+    /**
+     * RSA cipher with PKCS#1 v1.5 encryption padding.
+     */
+    public static final class PKCS1Padding extends AndroidKeyStoreRSACipherSpi {
+        public PKCS1Padding() {
+            super(KeymasterDefs.KM_PAD_RSA_PKCS1_1_5_ENCRYPT);
+        }
+
+        @Override
+        protected boolean adjustConfigForEncryptingWithPrivateKey() {
+            // RSA encryption with PCKS#1 padding using private key is a way to implement RSA
+            // signatures with PKCS#1 padding. We have to support this for legacy reasons.
+            setKeymasterPurposeOverride(KeymasterDefs.KM_PURPOSE_SIGN);
+            setKeymasterPaddingOverride(KeymasterDefs.KM_PAD_RSA_PKCS1_1_5_SIGN);
+            return true;
+        }
+
+        @Override
+        protected void initAlgorithmSpecificParameters() throws InvalidKeyException {}
+
+        @Override
+        protected void initAlgorithmSpecificParameters(@Nullable AlgorithmParameterSpec params)
+                throws InvalidAlgorithmParameterException {
+            if (params != null) {
+                throw new InvalidAlgorithmParameterException(
+                        "Unexpected parameters: " + params + ". No parameters supported");
+            }
+        }
+
+        @Override
+        protected void initAlgorithmSpecificParameters(@Nullable AlgorithmParameters params)
+                throws InvalidAlgorithmParameterException {
+
+            if (params != null) {
+                throw new InvalidAlgorithmParameterException(
+                        "Unexpected parameters: " + params + ". No parameters supported");
+            }
+        }
+
+        @Override
+        protected AlgorithmParameters engineGetParameters() {
+            return null;
+        }
+
+        @Override
+        protected final int getAdditionalEntropyAmountForBegin() {
+            return 0;
+        }
+
+        @Override
+        protected final int getAdditionalEntropyAmountForFinish() {
+            return (isEncrypting()) ? getModulusSizeBytes() : 0;
+        }
+    }
+
+    /**
+     * RSA cipher with OAEP encryption padding. Only SHA-1 based MGF1 is supported as MGF.
+     */
+    abstract static class OAEPWithMGF1Padding extends AndroidKeyStoreRSACipherSpi {
+
+        private static final String MGF_ALGORITGM_MGF1 = "MGF1";
+
+        private int mKeymasterDigest = -1;
+        private int mDigestOutputSizeBytes;
+
+        OAEPWithMGF1Padding(int keymasterDigest) {
+            super(KeymasterDefs.KM_PAD_RSA_OAEP);
+            mKeymasterDigest = keymasterDigest;
+            mDigestOutputSizeBytes =
+                    (KeymasterUtils.getDigestOutputSizeBits(keymasterDigest) + 7) / 8;
+        }
+
+        @Override
+        protected final void initAlgorithmSpecificParameters() throws InvalidKeyException {}
+
+        @Override
+        protected final void initAlgorithmSpecificParameters(
+                @Nullable AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException {
+            if (params == null) {
+                return;
+            }
+
+            if (!(params instanceof OAEPParameterSpec)) {
+                throw new InvalidAlgorithmParameterException(
+                        "Unsupported parameter spec: " + params
+                        + ". Only OAEPParameterSpec supported");
+            }
+            OAEPParameterSpec spec = (OAEPParameterSpec) params;
+            if (!MGF_ALGORITGM_MGF1.equalsIgnoreCase(spec.getMGFAlgorithm())) {
+                throw new InvalidAlgorithmParameterException(
+                        "Unsupported MGF: " + spec.getMGFAlgorithm()
+                        + ". Only " + MGF_ALGORITGM_MGF1 + " supported");
+            }
+            String jcaDigest = spec.getDigestAlgorithm();
+            int keymasterDigest;
+            try {
+                keymasterDigest = KeyProperties.Digest.toKeymaster(jcaDigest);
+            } catch (IllegalArgumentException e) {
+                throw new InvalidAlgorithmParameterException(
+                        "Unsupported digest: " + jcaDigest, e);
+            }
+            switch (keymasterDigest) {
+                case KeymasterDefs.KM_DIGEST_SHA1:
+                case KeymasterDefs.KM_DIGEST_SHA_2_224:
+                case KeymasterDefs.KM_DIGEST_SHA_2_256:
+                case KeymasterDefs.KM_DIGEST_SHA_2_384:
+                case KeymasterDefs.KM_DIGEST_SHA_2_512:
+                    // Permitted.
+                    break;
+                default:
+                    throw new InvalidAlgorithmParameterException(
+                            "Unsupported digest: " + jcaDigest);
+            }
+            AlgorithmParameterSpec mgfParams = spec.getMGFParameters();
+            if (mgfParams == null) {
+                throw new InvalidAlgorithmParameterException("MGF parameters must be provided");
+            }
+            // Check whether MGF parameters match the OAEPParameterSpec
+            if (!(mgfParams instanceof MGF1ParameterSpec)) {
+                throw new InvalidAlgorithmParameterException("Unsupported MGF parameters"
+                        + ": " + mgfParams + ". Only MGF1ParameterSpec supported");
+            }
+            MGF1ParameterSpec mgfSpec = (MGF1ParameterSpec) mgfParams;
+            String mgf1JcaDigest = mgfSpec.getDigestAlgorithm();
+            if (!KeyProperties.DIGEST_SHA1.equalsIgnoreCase(mgf1JcaDigest)) {
+                throw new InvalidAlgorithmParameterException(
+                        "Unsupported MGF1 digest: " + mgf1JcaDigest
+                        + ". Only " + KeyProperties.DIGEST_SHA1 + " supported");
+            }
+            PSource pSource = spec.getPSource();
+            if (!(pSource instanceof PSource.PSpecified)) {
+                throw new InvalidAlgorithmParameterException(
+                        "Unsupported source of encoding input P: " + pSource
+                        + ". Only pSpecifiedEmpty (PSource.PSpecified.DEFAULT) supported");
+            }
+            PSource.PSpecified pSourceSpecified = (PSource.PSpecified) pSource;
+            byte[] pSourceValue = pSourceSpecified.getValue();
+            if ((pSourceValue != null) && (pSourceValue.length > 0)) {
+                throw new InvalidAlgorithmParameterException(
+                        "Unsupported source of encoding input P: " + pSource
+                        + ". Only pSpecifiedEmpty (PSource.PSpecified.DEFAULT) supported");
+            }
+            mKeymasterDigest = keymasterDigest;
+            mDigestOutputSizeBytes =
+                    (KeymasterUtils.getDigestOutputSizeBits(keymasterDigest) + 7) / 8;
+        }
+
+        @Override
+        protected final void initAlgorithmSpecificParameters(@Nullable AlgorithmParameters params)
+                throws InvalidAlgorithmParameterException {
+            if (params == null) {
+                return;
+            }
+
+            OAEPParameterSpec spec;
+            try {
+                spec = params.getParameterSpec(OAEPParameterSpec.class);
+            } catch (InvalidParameterSpecException e) {
+                throw new InvalidAlgorithmParameterException("OAEP parameters required"
+                        + ", but not found in parameters: " + params, e);
+            }
+            if (spec == null) {
+                throw new InvalidAlgorithmParameterException("OAEP parameters required"
+                        + ", but not provided in parameters: " + params);
+            }
+            initAlgorithmSpecificParameters(spec);
+        }
+
+        @Override
+        protected final AlgorithmParameters engineGetParameters() {
+            OAEPParameterSpec spec =
+                    new OAEPParameterSpec(
+                            KeyProperties.Digest.fromKeymaster(mKeymasterDigest),
+                            MGF_ALGORITGM_MGF1,
+                            MGF1ParameterSpec.SHA1,
+                            PSource.PSpecified.DEFAULT);
+            try {
+                AlgorithmParameters params = AlgorithmParameters.getInstance("OAEP");
+                params.init(spec);
+                return params;
+            } catch (NoSuchAlgorithmException e) {
+                throw new ProviderException(
+                        "Failed to obtain OAEP AlgorithmParameters", e);
+            } catch (InvalidParameterSpecException e) {
+                throw new ProviderException(
+                        "Failed to initialize OAEP AlgorithmParameters with an IV",
+                        e);
+            }
+        }
+
+        @Override
+        protected final void addAlgorithmSpecificParametersToBegin(
+                @NonNull List<KeyParameter> parameters) {
+            super.addAlgorithmSpecificParametersToBegin(parameters);
+            parameters.add(KeyStore2ParameterUtils.makeEnum(
+                    KeymasterDefs.KM_TAG_DIGEST, mKeymasterDigest
+            ));
+        }
+
+        @Override
+        protected final void loadAlgorithmSpecificParametersFromBeginResult(
+                KeyParameter[] parameters) {
+            super.loadAlgorithmSpecificParametersFromBeginResult(parameters);
+        }
+
+        @Override
+        protected final int getAdditionalEntropyAmountForBegin() {
+            return 0;
+        }
+
+        @Override
+        protected final int getAdditionalEntropyAmountForFinish() {
+            return (isEncrypting()) ? mDigestOutputSizeBytes : 0;
+        }
+    }
+
+    public static class OAEPWithSHA1AndMGF1Padding extends OAEPWithMGF1Padding {
+        public OAEPWithSHA1AndMGF1Padding() {
+            super(KeymasterDefs.KM_DIGEST_SHA1);
+        }
+    }
+
+    public static class OAEPWithSHA224AndMGF1Padding extends OAEPWithMGF1Padding {
+        public OAEPWithSHA224AndMGF1Padding() {
+            super(KeymasterDefs.KM_DIGEST_SHA_2_224);
+        }
+    }
+
+    public static class OAEPWithSHA256AndMGF1Padding extends OAEPWithMGF1Padding {
+        public OAEPWithSHA256AndMGF1Padding() {
+            super(KeymasterDefs.KM_DIGEST_SHA_2_256);
+        }
+    }
+
+    public static class OAEPWithSHA384AndMGF1Padding extends OAEPWithMGF1Padding {
+        public OAEPWithSHA384AndMGF1Padding() {
+            super(KeymasterDefs.KM_DIGEST_SHA_2_384);
+        }
+    }
+
+    public static class OAEPWithSHA512AndMGF1Padding extends OAEPWithMGF1Padding {
+        public OAEPWithSHA512AndMGF1Padding() {
+            super(KeymasterDefs.KM_DIGEST_SHA_2_512);
+        }
+    }
+
+    private final int mKeymasterPadding;
+    private int mKeymasterPaddingOverride;
+
+    private int mModulusSizeBytes = -1;
+
+    AndroidKeyStoreRSACipherSpi(int keymasterPadding) {
+        mKeymasterPadding = keymasterPadding;
+    }
+
+    @Override
+    protected final void initKey(int opmode, Key key) throws InvalidKeyException {
+        if (key == null) {
+            throw new InvalidKeyException("Unsupported key: null");
+        }
+        if (!KeyProperties.KEY_ALGORITHM_RSA.equalsIgnoreCase(key.getAlgorithm())) {
+            throw new InvalidKeyException("Unsupported key algorithm: " + key.getAlgorithm()
+                    + ". Only " + KeyProperties.KEY_ALGORITHM_RSA + " supported");
+        }
+        AndroidKeyStoreKey keystoreKey;
+        if (key instanceof AndroidKeyStorePrivateKey) {
+            keystoreKey = (AndroidKeyStoreKey) key;
+        } else if (key instanceof AndroidKeyStorePublicKey) {
+            keystoreKey = (AndroidKeyStoreKey) key;
+        } else {
+            throw new InvalidKeyException("Unsupported key type: " + key);
+        }
+
+        if (keystoreKey instanceof PrivateKey) {
+            // Private key
+            switch (opmode) {
+                case Cipher.DECRYPT_MODE:
+                case Cipher.UNWRAP_MODE:
+                    // Permitted
+                    break;
+                case Cipher.ENCRYPT_MODE:
+                case Cipher.WRAP_MODE:
+                    if (!adjustConfigForEncryptingWithPrivateKey()) {
+                        throw new InvalidKeyException(
+                                "RSA private keys cannot be used with " + opmodeToString(opmode)
+                                + " and padding "
+                                + KeyProperties.EncryptionPadding.fromKeymaster(mKeymasterPadding)
+                                + ". Only RSA public keys supported for this mode");
+                    }
+                    break;
+                default:
+                    throw new InvalidKeyException(
+                            "RSA private keys cannot be used with opmode: " + opmode);
+            }
+        } else {
+            // Public key
+            switch (opmode) {
+                case Cipher.ENCRYPT_MODE:
+                case Cipher.WRAP_MODE:
+                    // Permitted
+                    break;
+                case Cipher.DECRYPT_MODE:
+                case Cipher.UNWRAP_MODE:
+                    throw new InvalidKeyException(
+                            "RSA public keys cannot be used with " + opmodeToString(opmode)
+                            + " and padding "
+                            + KeyProperties.EncryptionPadding.fromKeymaster(mKeymasterPadding)
+                            + ". Only RSA private keys supported for this opmode.");
+                    // break;
+                default:
+                    throw new InvalidKeyException(
+                            "RSA public keys cannot be used with " + opmodeToString(opmode));
+            }
+        }
+
+        long keySizeBits = -1;
+        for (Authorization a : keystoreKey.getAuthorizations()) {
+            if (a.keyParameter.tag == KeymasterDefs.KM_TAG_KEY_SIZE) {
+                keySizeBits = KeyStore2ParameterUtils.getUnsignedInt(a);
+            }
+        }
+
+        if (keySizeBits == -1) {
+            throw new InvalidKeyException("Size of key not known");
+        } else if (keySizeBits > Integer.MAX_VALUE) {
+            throw new InvalidKeyException("Key too large: " + keySizeBits + " bits");
+        }
+        mModulusSizeBytes = (int) ((keySizeBits + 7) / 8);
+
+        setKey(keystoreKey);
+    }
+
+    /**
+     * Adjusts the configuration of this cipher for encrypting using the private key.
+     *
+     * <p>The default implementation does nothing and refuses to adjust the configuration.
+     *
+     * @return {@code true} if the configuration has been adjusted, {@code false} if encrypting
+     *         using private key is not permitted for this cipher.
+     */
+    protected boolean adjustConfigForEncryptingWithPrivateKey() {
+        return false;
+    }
+
+    @Override
+    protected final void resetAll() {
+        mModulusSizeBytes = -1;
+        mKeymasterPaddingOverride = -1;
+        super.resetAll();
+    }
+
+    @Override
+    protected final void resetWhilePreservingInitState() {
+        super.resetWhilePreservingInitState();
+    }
+
+    @Override
+    protected void addAlgorithmSpecificParametersToBegin(
+            @NonNull List<KeyParameter> parameters) {
+        parameters.add(KeyStore2ParameterUtils.makeEnum(
+                KeymasterDefs.KM_TAG_ALGORITHM, KeymasterDefs.KM_ALGORITHM_RSA
+        ));
+        int keymasterPadding = getKeymasterPaddingOverride();
+        if (keymasterPadding == -1) {
+            keymasterPadding = mKeymasterPadding;
+        }
+        parameters.add(KeyStore2ParameterUtils.makeEnum(
+                KeymasterDefs.KM_TAG_PADDING, keymasterPadding
+        ));
+        int purposeOverride = getKeymasterPurposeOverride();
+        if ((purposeOverride != -1)
+                && ((purposeOverride == KeymasterDefs.KM_PURPOSE_SIGN)
+                || (purposeOverride == KeymasterDefs.KM_PURPOSE_VERIFY))) {
+            // Keymaster sign/verify requires digest to be specified.
+            // For raw sign/verify it's NONE.
+            parameters.add(KeyStore2ParameterUtils.makeEnum(
+                    KeymasterDefs.KM_TAG_DIGEST, KeymasterDefs.KM_DIGEST_NONE
+            ));
+        }
+    }
+
+    @Override
+    protected void loadAlgorithmSpecificParametersFromBeginResult(
+            KeyParameter[] parameters) {
+    }
+
+    @Override
+    protected final int engineGetBlockSize() {
+        // Not a block cipher, according to the RI
+        return 0;
+    }
+
+    @Override
+    protected final byte[] engineGetIV() {
+        // IV never used
+        return null;
+    }
+
+    @Override
+    protected final int engineGetOutputSize(int inputLen) {
+        return getModulusSizeBytes();
+    }
+
+    protected final int getModulusSizeBytes() {
+        if (mModulusSizeBytes == -1) {
+            throw new IllegalStateException("Not initialized");
+        }
+        return mModulusSizeBytes;
+    }
+
+    /**
+     * Overrides the default padding of the crypto operation.
+     */
+    protected final void setKeymasterPaddingOverride(int keymasterPadding) {
+        mKeymasterPaddingOverride = keymasterPadding;
+    }
+
+    protected final int getKeymasterPaddingOverride() {
+        return mKeymasterPaddingOverride;
+    }
+}
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreRSAPrivateKey.java b/keystore/java/android/security/keystore2/AndroidKeyStoreRSAPrivateKey.java
new file mode 100644
index 0000000..ef0d3bc
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreRSAPrivateKey.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.annotation.NonNull;
+import android.security.KeyStoreSecurityLevel;
+import android.security.keystore.KeyProperties;
+import android.system.keystore2.Authorization;
+import android.system.keystore2.KeyDescriptor;
+
+import java.math.BigInteger;
+import java.security.PrivateKey;
+import java.security.interfaces.RSAKey;
+
+/**
+ * RSA private key (instance of {@link PrivateKey} and {@link RSAKey}) backed by keystore.
+ *
+ * @hide
+ */
+public class AndroidKeyStoreRSAPrivateKey extends AndroidKeyStorePrivateKey implements RSAKey {
+
+    private final BigInteger mModulus;
+
+
+    public AndroidKeyStoreRSAPrivateKey(@NonNull KeyDescriptor descriptor,
+            long keyId,
+            @NonNull Authorization[] authorizations,
+            @NonNull KeyStoreSecurityLevel securityLevel, @NonNull BigInteger modulus) {
+        super(descriptor, keyId, authorizations, KeyProperties.KEY_ALGORITHM_RSA, securityLevel);
+        mModulus = modulus;
+    }
+
+    @Override
+    public BigInteger getModulus() {
+        return mModulus;
+    }
+}
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreRSAPublicKey.java b/keystore/java/android/security/keystore2/AndroidKeyStoreRSAPublicKey.java
new file mode 100644
index 0000000..b578ea9
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreRSAPublicKey.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.annotation.NonNull;
+import android.security.KeyStoreSecurityLevel;
+import android.security.keystore.KeyProperties;
+import android.system.keystore2.KeyDescriptor;
+import android.system.keystore2.KeyMetadata;
+
+import java.math.BigInteger;
+import java.security.interfaces.RSAPublicKey;
+
+/**
+ * {@link RSAPublicKey} backed by Android Keystore.
+ *
+ * @hide
+ */
+public class AndroidKeyStoreRSAPublicKey extends AndroidKeyStorePublicKey implements RSAPublicKey {
+    private final BigInteger mModulus;
+    private final BigInteger mPublicExponent;
+
+    public AndroidKeyStoreRSAPublicKey(@NonNull KeyDescriptor descriptor,
+            @NonNull KeyMetadata metadata,
+            @NonNull KeyStoreSecurityLevel securityLevel, @NonNull BigInteger modulus,
+            @NonNull BigInteger publicExponent) {
+        super(descriptor, metadata, KeyProperties.KEY_ALGORITHM_RSA, securityLevel);
+        mModulus = modulus;
+        mPublicExponent = publicExponent;
+    }
+
+    public AndroidKeyStoreRSAPublicKey(@NonNull KeyDescriptor descriptor,
+            @NonNull KeyMetadata metadata,
+            @NonNull KeyStoreSecurityLevel securityLevel, @NonNull RSAPublicKey info) {
+        this(descriptor, metadata, securityLevel, info.getModulus(), info.getPublicExponent());
+        if (!"X.509".equalsIgnoreCase(info.getFormat())) {
+            throw new IllegalArgumentException(
+                    "Unsupported key export format: " + info.getFormat());
+        }
+    }
+
+    @Override
+    public AndroidKeyStorePrivateKey getPrivateKey() {
+        return new AndroidKeyStoreRSAPrivateKey(getUserKeyDescriptor(), getKeyIdDescriptor().nspace,
+                getAuthorizations(), getSecurityLevel(), mModulus);
+    }
+
+    @Override
+    public BigInteger getModulus() {
+        return mModulus;
+    }
+
+    @Override
+    public BigInteger getPublicExponent() {
+        return mPublicExponent;
+    }
+}
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreRSASignatureSpi.java b/keystore/java/android/security/keystore2/AndroidKeyStoreRSASignatureSpi.java
new file mode 100644
index 0000000..444dad4
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreRSASignatureSpi.java
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.annotation.NonNull;
+import android.hardware.keymint.KeyParameter;
+import android.security.keymaster.KeymasterDefs;
+import android.security.keystore.KeyProperties;
+
+import java.security.InvalidKeyException;
+import java.security.SignatureSpi;
+import java.util.List;
+
+/**
+ * Base class for {@link SignatureSpi} providing Android KeyStore backed RSA signatures.
+ *
+ * @hide
+ */
+abstract class AndroidKeyStoreRSASignatureSpi extends AndroidKeyStoreSignatureSpiBase {
+
+    abstract static class PKCS1Padding extends AndroidKeyStoreRSASignatureSpi {
+        PKCS1Padding(int keymasterDigest) {
+            super(keymasterDigest, KeymasterDefs.KM_PAD_RSA_PKCS1_1_5_SIGN);
+        }
+
+        @Override
+        protected final int getAdditionalEntropyAmountForSign() {
+            // No entropy required for this deterministic signature scheme.
+            return 0;
+        }
+    }
+
+    public static final class NONEWithPKCS1Padding extends PKCS1Padding {
+        public NONEWithPKCS1Padding() {
+            super(KeymasterDefs.KM_DIGEST_NONE);
+        }
+    }
+
+    public static final class MD5WithPKCS1Padding extends PKCS1Padding {
+        public MD5WithPKCS1Padding() {
+            super(KeymasterDefs.KM_DIGEST_MD5);
+        }
+    }
+
+    public static final class SHA1WithPKCS1Padding extends PKCS1Padding {
+        public SHA1WithPKCS1Padding() {
+            super(KeymasterDefs.KM_DIGEST_SHA1);
+        }
+    }
+
+    public static final class SHA224WithPKCS1Padding extends PKCS1Padding {
+        public SHA224WithPKCS1Padding() {
+            super(KeymasterDefs.KM_DIGEST_SHA_2_224);
+        }
+    }
+
+    public static final class SHA256WithPKCS1Padding extends PKCS1Padding {
+        public SHA256WithPKCS1Padding() {
+            super(KeymasterDefs.KM_DIGEST_SHA_2_256);
+        }
+    }
+
+    public static final class SHA384WithPKCS1Padding extends PKCS1Padding {
+        public SHA384WithPKCS1Padding() {
+            super(KeymasterDefs.KM_DIGEST_SHA_2_384);
+        }
+    }
+
+    public static final class SHA512WithPKCS1Padding extends PKCS1Padding {
+        public SHA512WithPKCS1Padding() {
+            super(KeymasterDefs.KM_DIGEST_SHA_2_512);
+        }
+    }
+
+    abstract static class PSSPadding extends AndroidKeyStoreRSASignatureSpi {
+        private static final int SALT_LENGTH_BYTES = 20;
+
+        PSSPadding(int keymasterDigest) {
+            super(keymasterDigest, KeymasterDefs.KM_PAD_RSA_PSS);
+        }
+
+        @Override
+        protected final int getAdditionalEntropyAmountForSign() {
+            return SALT_LENGTH_BYTES;
+        }
+    }
+
+    public static final class SHA1WithPSSPadding extends PSSPadding {
+        public SHA1WithPSSPadding() {
+            super(KeymasterDefs.KM_DIGEST_SHA1);
+        }
+    }
+
+    public static final class SHA224WithPSSPadding extends PSSPadding {
+        public SHA224WithPSSPadding() {
+            super(KeymasterDefs.KM_DIGEST_SHA_2_224);
+        }
+    }
+
+    public static final class SHA256WithPSSPadding extends PSSPadding {
+        public SHA256WithPSSPadding() {
+            super(KeymasterDefs.KM_DIGEST_SHA_2_256);
+        }
+    }
+
+    public static final class SHA384WithPSSPadding extends PSSPadding {
+        public SHA384WithPSSPadding() {
+            super(KeymasterDefs.KM_DIGEST_SHA_2_384);
+        }
+    }
+
+    public static final class SHA512WithPSSPadding extends PSSPadding {
+        public SHA512WithPSSPadding() {
+            super(KeymasterDefs.KM_DIGEST_SHA_2_512);
+        }
+    }
+
+    private final int mKeymasterDigest;
+    private final int mKeymasterPadding;
+
+    AndroidKeyStoreRSASignatureSpi(int keymasterDigest, int keymasterPadding) {
+        mKeymasterDigest = keymasterDigest;
+        mKeymasterPadding = keymasterPadding;
+    }
+
+    @Override
+    protected final void initKey(AndroidKeyStoreKey key) throws InvalidKeyException {
+        if (!KeyProperties.KEY_ALGORITHM_RSA.equalsIgnoreCase(key.getAlgorithm())) {
+            throw new InvalidKeyException("Unsupported key algorithm: " + key.getAlgorithm()
+                    + ". Only" + KeyProperties.KEY_ALGORITHM_RSA + " supported");
+        }
+        super.initKey(key);
+    }
+
+    @Override
+    protected final void resetAll() {
+        super.resetAll();
+    }
+
+    @Override
+    protected final void resetWhilePreservingInitState() {
+        super.resetWhilePreservingInitState();
+    }
+
+    @Override
+    protected final void addAlgorithmSpecificParametersToBegin(
+            @NonNull List<KeyParameter> parameters) {
+        parameters.add(KeyStore2ParameterUtils.makeEnum(
+                KeymasterDefs.KM_TAG_ALGORITHM, KeymasterDefs.KM_ALGORITHM_RSA
+        ));
+        parameters.add(KeyStore2ParameterUtils.makeEnum(
+                KeymasterDefs.KM_TAG_DIGEST, mKeymasterDigest
+        ));
+        parameters.add(KeyStore2ParameterUtils.makeEnum(
+                KeymasterDefs.KM_TAG_PADDING, mKeymasterPadding
+        ));
+    }
+}
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreSecretKey.java b/keystore/java/android/security/keystore2/AndroidKeyStoreSecretKey.java
new file mode 100644
index 0000000..4e45913
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreSecretKey.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.annotation.NonNull;
+import android.security.KeyStoreSecurityLevel;
+import android.system.keystore2.KeyDescriptor;
+import android.system.keystore2.KeyMetadata;
+
+import javax.crypto.SecretKey;
+
+/**
+ * {@link SecretKey} backed by Android Keystore.
+ *
+ * @hide
+ */
+public class AndroidKeyStoreSecretKey extends AndroidKeyStoreKey implements SecretKey {
+
+    public AndroidKeyStoreSecretKey(@NonNull KeyDescriptor descriptor,
+            @NonNull KeyMetadata metadata, @NonNull String algorithm,
+            @NonNull KeyStoreSecurityLevel securityLevel) {
+        super(descriptor, metadata.key.nspace, metadata.authorizations, algorithm, securityLevel);
+    }
+}
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreSecretKeyFactorySpi.java b/keystore/java/android/security/keystore2/AndroidKeyStoreSecretKeyFactorySpi.java
new file mode 100644
index 0000000..9d3b970
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreSecretKeyFactorySpi.java
@@ -0,0 +1,272 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.annotation.NonNull;
+import android.security.GateKeeper;
+import android.security.KeyStore;
+import android.security.keymaster.KeymasterArguments;
+import android.security.keymaster.KeymasterDefs;
+import android.security.keystore.KeyGenParameterSpec;
+import android.security.keystore.KeyInfo;
+import android.security.keystore.KeyProperties;
+import android.system.keystore2.Authorization;
+
+import java.math.BigInteger;
+import java.security.InvalidKeyException;
+import java.security.ProviderException;
+import java.security.spec.InvalidKeySpecException;
+import java.security.spec.KeySpec;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import javax.crypto.SecretKey;
+import javax.crypto.SecretKeyFactorySpi;
+import javax.crypto.spec.SecretKeySpec;
+
+/**
+ * {@link SecretKeyFactorySpi} backed by Android Keystore.
+ *
+ * @hide
+ */
+public class AndroidKeyStoreSecretKeyFactorySpi extends SecretKeyFactorySpi {
+
+    private final KeyStore mKeyStore = KeyStore.getInstance();
+
+    @Override
+    protected KeySpec engineGetKeySpec(SecretKey key,
+            @SuppressWarnings("rawtypes") Class keySpecClass) throws InvalidKeySpecException {
+        if (keySpecClass == null) {
+            throw new InvalidKeySpecException("keySpecClass == null");
+        }
+        if (!(key instanceof AndroidKeyStoreSecretKey)) {
+            throw new InvalidKeySpecException("Only Android KeyStore secret keys supported: " +
+                    ((key != null) ? key.getClass().getName() : "null"));
+        }
+        if (SecretKeySpec.class.isAssignableFrom(keySpecClass)) {
+            throw new InvalidKeySpecException(
+                    "Key material export of Android KeyStore keys is not supported");
+        }
+        if (!KeyInfo.class.equals(keySpecClass)) {
+            throw new InvalidKeySpecException("Unsupported key spec: " + keySpecClass.getName());
+        }
+        AndroidKeyStoreKey keystoreKey = (AndroidKeyStoreKey) key;
+
+        return getKeyInfo(keystoreKey);
+    }
+
+    static @NonNull KeyInfo getKeyInfo(@NonNull AndroidKeyStoreKey key) {
+
+        @KeyProperties.SecurityLevelEnum int securityLevel =
+                KeyProperties.SECURITY_LEVEL_SOFTWARE;
+        boolean insideSecureHardware = false;
+        @KeyProperties.OriginEnum int origin = -1;
+        int keySize = -1;
+        @KeyProperties.PurposeEnum int purposes = 0;
+        String[] encryptionPaddings;
+        String[] signaturePaddings;
+        List<String> digestsList = new ArrayList<>();
+        List<String> blockModesList = new ArrayList<>();
+        int keymasterSwEnforcedUserAuthenticators = 0;
+        int keymasterHwEnforcedUserAuthenticators = 0;
+        List<BigInteger> keymasterSecureUserIds = new ArrayList<BigInteger>();
+        List<String> encryptionPaddingsList = new ArrayList<String>();
+        List<String> signaturePaddingsList = new ArrayList<String>();
+        Date keyValidityStart = null;
+        Date keyValidityForOriginationEnd = null;
+        Date keyValidityForConsumptionEnd = null;
+        long userAuthenticationValidityDurationSeconds = 0;
+        boolean userAuthenticationRequired = true;
+        boolean userAuthenticationValidWhileOnBody = false;
+        boolean trustedUserPresenceRequired = false;
+        boolean trustedUserConfirmationRequired = false;
+        try {
+            for (Authorization a : key.getAuthorizations()) {
+                switch (a.keyParameter.tag) {
+                    case KeymasterDefs.KM_TAG_ORIGIN:
+                        insideSecureHardware =
+                                KeyStore2ParameterUtils.isSecureHardware(a.securityLevel);
+                        securityLevel = a.securityLevel;
+                        origin = KeyProperties.Origin.fromKeymaster(a.keyParameter.integer);
+                        break;
+                    case KeymasterDefs.KM_TAG_KEY_SIZE:
+                        long keySizeUnsigned = KeyStore2ParameterUtils.getUnsignedInt(a);
+                        if (keySizeUnsigned > Integer.MAX_VALUE) {
+                            throw new ProviderException(
+                                    "Key too large: " + keySizeUnsigned + " bits");
+                        }
+                        keySize = (int) keySizeUnsigned;
+                        break;
+                    case KeymasterDefs.KM_TAG_PURPOSE:
+                        purposes |= KeyProperties.Purpose.fromKeymaster(a.keyParameter.integer);
+                        break;
+                    case KeymasterDefs.KM_TAG_PADDING:
+                        try {
+                            if (a.keyParameter.integer == KeymasterDefs.KM_PAD_RSA_PKCS1_1_5_SIGN
+                                    || a.keyParameter.integer == KeymasterDefs.KM_PAD_RSA_PSS) {
+                                @KeyProperties.SignaturePaddingEnum String padding =
+                                        KeyProperties.SignaturePadding.fromKeymaster(
+                                                a.keyParameter.integer);
+                                signaturePaddingsList.add(padding);
+                            } else {
+                                @KeyProperties.EncryptionPaddingEnum String jcaPadding =
+                                        KeyProperties.EncryptionPadding.fromKeymaster(
+                                                a.keyParameter.integer);
+                                encryptionPaddingsList.add(jcaPadding);
+                            }
+                        } catch (IllegalArgumentException e) {
+                            throw new ProviderException("Unsupported padding: "
+                                                + a.keyParameter.integer);
+                        }
+                        break;
+                    case KeymasterDefs.KM_TAG_DIGEST:
+                        digestsList.add(KeyProperties.Digest.fromKeymaster(a.keyParameter.integer));
+                        break;
+                    case KeymasterDefs.KM_TAG_BLOCK_MODE:
+                        blockModesList.add(
+                                KeyProperties.BlockMode.fromKeymaster(a.keyParameter.integer)
+                        );
+                        break;
+                    case KeymasterDefs.KM_TAG_USER_AUTH_TYPE:
+                        if (KeyStore2ParameterUtils.isSecureHardware(a.securityLevel)) {
+                            keymasterHwEnforcedUserAuthenticators = a.keyParameter.integer;
+                        } else {
+                            keymasterSwEnforcedUserAuthenticators = a.keyParameter.integer;
+                        }
+                        break;
+                    case KeymasterDefs.KM_TAG_USER_SECURE_ID:
+                        keymasterSecureUserIds.add(
+                                KeymasterArguments.toUint64(a.keyParameter.longInteger));
+                        break;
+                    case KeymasterDefs.KM_TAG_ACTIVE_DATETIME:
+                        keyValidityStart = KeyStore2ParameterUtils.getDate(a);
+                        break;
+                    case KeymasterDefs.KM_TAG_ORIGINATION_EXPIRE_DATETIME:
+                        keyValidityForOriginationEnd =
+                                KeyStore2ParameterUtils.getDate(a);
+                        break;
+                    case KeymasterDefs.KM_TAG_USAGE_EXPIRE_DATETIME:
+                        keyValidityForConsumptionEnd =
+                                KeyStore2ParameterUtils.getDate(a);
+                        break;
+                    case KeymasterDefs.KM_TAG_NO_AUTH_REQUIRED:
+                        userAuthenticationRequired = false;
+                        break;
+                    case KeymasterDefs.KM_TAG_AUTH_TIMEOUT:
+                        userAuthenticationValidityDurationSeconds =
+                                KeyStore2ParameterUtils.getUnsignedInt(a);
+                        if (userAuthenticationValidityDurationSeconds > Integer.MAX_VALUE) {
+                            throw new ProviderException(
+                                    "User authentication timeout validity too long: "
+                                    + userAuthenticationValidityDurationSeconds + " seconds");
+                        }
+                        break;
+                    case KeymasterDefs.KM_TAG_ALLOW_WHILE_ON_BODY:
+                        userAuthenticationValidWhileOnBody =
+                                KeyStore2ParameterUtils.isSecureHardware(a.securityLevel);
+                        break;
+                    case KeymasterDefs.KM_TAG_TRUSTED_USER_PRESENCE_REQUIRED:
+                        trustedUserPresenceRequired =
+                                KeyStore2ParameterUtils.isSecureHardware(a.securityLevel);
+                        break;
+                    case KeymasterDefs.KM_TAG_TRUSTED_CONFIRMATION_REQUIRED:
+                        trustedUserConfirmationRequired =
+                                KeyStore2ParameterUtils.isSecureHardware(a.securityLevel);
+                        break;
+                }
+            }
+        } catch (IllegalArgumentException e) {
+            throw new ProviderException("Unsupported key characteristic", e);
+        }
+        if (keySize == -1) {
+            throw new ProviderException("Key size not available");
+        }
+        if (origin == -1) {
+            throw new ProviderException("Key origin not available");
+        }
+
+        encryptionPaddings =
+                encryptionPaddingsList.toArray(new String[0]);
+        signaturePaddings =
+                signaturePaddingsList.toArray(new String[0]);
+
+        boolean userAuthenticationRequirementEnforcedBySecureHardware = (userAuthenticationRequired)
+                && (keymasterHwEnforcedUserAuthenticators != 0)
+                && (keymasterSwEnforcedUserAuthenticators == 0);
+
+        String[] digests = digestsList.toArray(new String[0]);
+        String[] blockModes = blockModesList.toArray(new String[0]);
+
+        boolean invalidatedByBiometricEnrollment = false;
+        if (keymasterSwEnforcedUserAuthenticators == KeymasterDefs.HW_AUTH_BIOMETRIC
+            || keymasterHwEnforcedUserAuthenticators == KeymasterDefs.HW_AUTH_BIOMETRIC) {
+            // Fingerprint-only key; will be invalidated if the root SID isn't in the SID list.
+            invalidatedByBiometricEnrollment = !keymasterSecureUserIds.isEmpty()
+                    && !keymasterSecureUserIds.contains(getGateKeeperSecureUserId());
+        }
+
+        return new KeyInfo(key.getUserKeyDescriptor().alias,
+                insideSecureHardware,
+                origin,
+                keySize,
+                keyValidityStart,
+                keyValidityForOriginationEnd,
+                keyValidityForConsumptionEnd,
+                purposes,
+                encryptionPaddings,
+                signaturePaddings,
+                digests,
+                blockModes,
+                userAuthenticationRequired,
+                (int) userAuthenticationValidityDurationSeconds,
+                keymasterHwEnforcedUserAuthenticators,
+                userAuthenticationRequirementEnforcedBySecureHardware,
+                userAuthenticationValidWhileOnBody,
+                trustedUserPresenceRequired,
+                invalidatedByBiometricEnrollment,
+                trustedUserConfirmationRequired,
+                securityLevel);
+    }
+
+    private static BigInteger getGateKeeperSecureUserId() throws ProviderException {
+    	try {
+    		return BigInteger.valueOf(GateKeeper.getSecureUserId());
+    	} catch (IllegalStateException e) {
+    		throw new ProviderException("Failed to get GateKeeper secure user ID", e);
+    	}
+    }
+
+    @Override
+    protected SecretKey engineGenerateSecret(KeySpec keySpec) throws InvalidKeySpecException {
+        throw new InvalidKeySpecException(
+                "To generate secret key in Android Keystore, use KeyGenerator initialized with "
+                        + KeyGenParameterSpec.class.getName());
+    }
+
+    @Override
+    protected SecretKey engineTranslateKey(SecretKey key) throws InvalidKeyException {
+        if (key == null) {
+            throw new InvalidKeyException("key == null");
+        } else if (!(key instanceof AndroidKeyStoreSecretKey)) {
+            throw new InvalidKeyException(
+                    "To import a secret key into Android Keystore, use KeyStore.setEntry");
+        }
+
+        return key;
+    }
+}
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreSignatureSpiBase.java b/keystore/java/android/security/keystore2/AndroidKeyStoreSignatureSpiBase.java
new file mode 100644
index 0000000..a168f8f
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreSignatureSpiBase.java
@@ -0,0 +1,423 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.annotation.CallSuper;
+import android.annotation.NonNull;
+import android.hardware.keymint.KeyParameter;
+import android.security.KeyStoreException;
+import android.security.KeyStoreOperation;
+import android.security.keymaster.KeymasterDefs;
+import android.security.keystore.ArrayUtils;
+import android.security.keystore.KeyStoreCryptoOperation;
+
+import libcore.util.EmptyArray;
+
+import java.nio.ByteBuffer;
+import java.security.InvalidKeyException;
+import java.security.InvalidParameterException;
+import java.security.PrivateKey;
+import java.security.ProviderException;
+import java.security.PublicKey;
+import java.security.SecureRandom;
+import java.security.SignatureException;
+import java.security.SignatureSpi;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Base class for {@link SignatureSpi} implementations of Android KeyStore backed ciphers.
+ *
+ * @hide
+ */
+abstract class AndroidKeyStoreSignatureSpiBase extends SignatureSpi
+        implements KeyStoreCryptoOperation {
+    private static final String TAG = "AndroidKeyStoreSignatureSpiBase";
+
+    // Fields below are populated by SignatureSpi.engineInitSign/engineInitVerify and KeyStore.begin
+    // and should be preserved after SignatureSpi.engineSign/engineVerify finishes.
+    private boolean mSigning;
+    private AndroidKeyStoreKey mKey;
+
+    /**
+     * Object representing this operation inside keystore service. It is initialized
+     * by {@code engineInit} and is invalidated when {@code engineDoFinal} succeeds and on some
+     * error conditions in between.
+     */
+    private KeyStoreOperation mOperation;
+    /**
+     * The operation challenge is required when an operation needs user authorization.
+     * The challenge is subjected to an authenticator, e.g., Gatekeeper or a biometric
+     * authenticator, and included in the authentication token minted by this authenticator.
+     * It may be null, if the operation does not require authorization.
+     */
+    private long mOperationChallenge;
+    private KeyStoreCryptoOperationStreamer mMessageStreamer;
+
+    /**
+     * Encountered exception which could not be immediately thrown because it was encountered inside
+     * a method that does not throw checked exception. This exception will be thrown from
+     * {@code engineSign} or {@code engineVerify}. Once such an exception is encountered,
+     * {@code engineUpdate} starts ignoring input data.
+     */
+    private Exception mCachedException;
+
+    AndroidKeyStoreSignatureSpiBase() {
+        mOperation = null;
+        mOperationChallenge = 0;
+        mSigning = false;
+        mKey = null;
+        appRandom = null;
+        mMessageStreamer = null;
+        mCachedException = null;
+    }
+
+    @Override
+    protected final void engineInitSign(PrivateKey key) throws InvalidKeyException {
+        engineInitSign(key, null);
+    }
+
+    @Override
+    protected final void engineInitSign(PrivateKey privateKey, SecureRandom random)
+            throws InvalidKeyException {
+        resetAll();
+
+        boolean success = false;
+        try {
+            if (privateKey == null) {
+                throw new InvalidKeyException("Unsupported key: null");
+            }
+            AndroidKeyStoreKey keystoreKey;
+            if (privateKey instanceof AndroidKeyStorePrivateKey) {
+                keystoreKey = (AndroidKeyStoreKey) privateKey;
+            } else {
+                throw new InvalidKeyException("Unsupported private key type: " + privateKey);
+            }
+            mSigning = true;
+            initKey(keystoreKey);
+            appRandom = random;
+            ensureKeystoreOperationInitialized();
+            success = true;
+        } finally {
+            if (!success) {
+                resetAll();
+            }
+        }
+    }
+
+    @Override
+    protected final void engineInitVerify(PublicKey publicKey) throws InvalidKeyException {
+        resetAll();
+
+        boolean success = false;
+        try {
+            if (publicKey == null) {
+                throw new InvalidKeyException("Unsupported key: null");
+            }
+            AndroidKeyStoreKey keystoreKey;
+            if (publicKey instanceof AndroidKeyStorePublicKey) {
+                keystoreKey = (AndroidKeyStorePublicKey) publicKey;
+            } else {
+                throw new InvalidKeyException("Unsupported public key type: " + publicKey);
+            }
+            mSigning = false;
+            initKey(keystoreKey);
+            appRandom = null;
+            ensureKeystoreOperationInitialized();
+            success = true;
+        } finally {
+            if (!success) {
+                resetAll();
+            }
+        }
+    }
+
+    /**
+     * Configures this signature instance to use the provided key.
+     *
+     * @throws InvalidKeyException if the {@code key} is not suitable.
+     */
+    @CallSuper
+    protected void initKey(AndroidKeyStoreKey key) throws InvalidKeyException {
+        mKey = key;
+    }
+
+    private void abortOperation() {
+        KeyStoreCryptoOperationUtils.abortOperation(mOperation);
+        mOperation = null;
+    }
+
+    /**
+     * Resets this cipher to its pristine pre-init state. This must be equivalent to obtaining a new
+     * cipher instance.
+     *
+     * <p>Subclasses storing additional state should override this method, reset the additional
+     * state, and then chain to superclass.
+     */
+    @CallSuper
+    protected void resetAll() {
+        abortOperation();
+        mOperationChallenge = 0;
+        mSigning = false;
+        mKey = null;
+        appRandom = null;
+        mMessageStreamer = null;
+        mCachedException = null;
+    }
+
+    /**
+     * Resets this cipher while preserving the initialized state. This must be equivalent to
+     * rolling back the cipher's state to just after the most recent {@code engineInit} completed
+     * successfully.
+     *
+     * <p>Subclasses storing additional post-init state should override this method, reset the
+     * additional state, and then chain to superclass.
+     */
+    @CallSuper
+    protected void resetWhilePreservingInitState() {
+        abortOperation();
+        mOperationChallenge = 0;
+        mMessageStreamer = null;
+        mCachedException = null;
+    }
+
+    private void ensureKeystoreOperationInitialized() throws InvalidKeyException {
+        if (mMessageStreamer != null) {
+            return;
+        }
+        if (mCachedException != null) {
+            return;
+        }
+        if (mKey == null) {
+            throw new IllegalStateException("Not initialized");
+        }
+
+        List<KeyParameter> parameters = new ArrayList<>();
+        addAlgorithmSpecificParametersToBegin(parameters);
+
+        int purpose = mSigning ? KeymasterDefs.KM_PURPOSE_SIGN : KeymasterDefs.KM_PURPOSE_VERIFY;
+
+        parameters.add(KeyStore2ParameterUtils.makeEnum(KeymasterDefs.KM_TAG_PURPOSE, purpose));
+
+        try {
+            mOperation = mKey.getSecurityLevel().createOperation(
+                    mKey.getKeyIdDescriptor(),
+                    parameters);
+        } catch (KeyStoreException keyStoreException) {
+            throw KeyStoreCryptoOperationUtils.getInvalidKeyException(
+                    mKey, keyStoreException);
+        }
+
+        // Now we check if we got an operation challenge. This indicates that user authorization
+        // is required. And if we got a challenge we check if the authorization can possibly
+        // succeed.
+        mOperationChallenge = KeyStoreCryptoOperationUtils.getOrMakeOperationChallenge(
+                mOperation, mKey);
+
+        mMessageStreamer = createMainDataStreamer(mOperation);
+    }
+
+    /**
+     * Creates a streamer which sends the message to be signed/verified into the provided KeyStore
+     *
+     * <p>This implementation returns a working streamer.
+     */
+    @NonNull
+    protected KeyStoreCryptoOperationStreamer createMainDataStreamer(
+            @NonNull KeyStoreOperation operation) {
+        return new KeyStoreCryptoOperationChunkedStreamer(
+                new KeyStoreCryptoOperationChunkedStreamer.MainDataStream(
+                        operation));
+    }
+
+    @Override
+    public final long getOperationHandle() {
+        return mOperationChallenge;
+    }
+
+    @Override
+    protected final void engineUpdate(byte[] b, int off, int len) throws SignatureException {
+        if (mCachedException != null) {
+            throw new SignatureException(mCachedException);
+        }
+
+        try {
+            ensureKeystoreOperationInitialized();
+        } catch (InvalidKeyException e) {
+            throw new SignatureException(e);
+        }
+
+        if (len == 0) {
+            return;
+        }
+
+        byte[] output;
+        try {
+            output = mMessageStreamer.update(b, off, len);
+        } catch (KeyStoreException e) {
+            throw new SignatureException(e);
+        }
+
+        if (output.length != 0) {
+            throw new ProviderException(
+                    "Update operation unexpectedly produced output: " + output.length + " bytes");
+        }
+    }
+
+    @Override
+    protected final void engineUpdate(byte b) throws SignatureException {
+        engineUpdate(new byte[] {b}, 0, 1);
+    }
+
+    @Override
+    protected final void engineUpdate(ByteBuffer input) {
+        byte[] b;
+        int off;
+        int len = input.remaining();
+        if (input.hasArray()) {
+            b = input.array();
+            off = input.arrayOffset() + input.position();
+            input.position(input.limit());
+        } else {
+            b = new byte[len];
+            off = 0;
+            input.get(b);
+        }
+
+        try {
+            engineUpdate(b, off, len);
+        } catch (SignatureException e) {
+            mCachedException = e;
+        }
+    }
+
+    @Override
+    protected final int engineSign(byte[] out, int outOffset, int outLen)
+            throws SignatureException {
+        return super.engineSign(out, outOffset, outLen);
+    }
+
+    @Override
+    protected final byte[] engineSign() throws SignatureException {
+        if (mCachedException != null) {
+            throw new SignatureException(mCachedException);
+        }
+
+        byte[] signature;
+        try {
+            ensureKeystoreOperationInitialized();
+
+            byte[] additionalEntropy =
+                    KeyStoreCryptoOperationUtils.getRandomBytesToMixIntoKeystoreRng(
+                            appRandom, getAdditionalEntropyAmountForSign());
+            signature = mMessageStreamer.doFinal(
+                    EmptyArray.BYTE, 0, 0,
+                    null); // no signature provided -- it'll be generated by this invocation
+        } catch (InvalidKeyException | KeyStoreException e) {
+            throw new SignatureException(e);
+        }
+
+        resetWhilePreservingInitState();
+        return signature;
+    }
+
+    @Override
+    protected final boolean engineVerify(byte[] signature) throws SignatureException {
+        if (mCachedException != null) {
+            throw new SignatureException(mCachedException);
+        }
+
+        try {
+            ensureKeystoreOperationInitialized();
+        } catch (InvalidKeyException e) {
+            throw new SignatureException(e);
+        }
+
+        boolean verified;
+        try {
+            byte[] output = mMessageStreamer.doFinal(
+                    EmptyArray.BYTE, 0, 0,
+                    signature);
+            if (output.length != 0) {
+                throw new ProviderException(
+                        "Signature verification unexpected produced output: " + output.length
+                        + " bytes");
+            }
+            verified = true;
+        } catch (KeyStoreException e) {
+            switch (e.getErrorCode()) {
+                case KeymasterDefs.KM_ERROR_VERIFICATION_FAILED:
+                    verified = false;
+                    break;
+                default:
+                    throw new SignatureException(e);
+            }
+        }
+
+        resetWhilePreservingInitState();
+        return verified;
+    }
+
+    @Override
+    protected final boolean engineVerify(byte[] sigBytes, int offset, int len)
+            throws SignatureException {
+        return engineVerify(ArrayUtils.subarray(sigBytes, offset, len));
+    }
+
+    @Deprecated
+    @Override
+    protected final Object engineGetParameter(String param) throws InvalidParameterException {
+        throw new InvalidParameterException();
+    }
+
+    @Deprecated
+    @Override
+    protected final void engineSetParameter(String param, Object value)
+            throws InvalidParameterException {
+        throw new InvalidParameterException();
+    }
+
+    /**
+     * Returns {@code true} if this signature is initialized for signing, {@code false} if this
+     * signature is initialized for verification.
+     */
+    protected final boolean isSigning() {
+        return mSigning;
+    }
+
+    // The methods below need to be implemented by subclasses.
+
+    /**
+     * Returns the amount of additional entropy (in bytes) to be provided to the KeyStore's
+     * {@code finish} operation when generating a signature.
+     *
+     * <p>This value should match (or exceed) the amount of Shannon entropy of the produced
+     * signature assuming the key and the message are known. For example, for ECDSA signature this
+     * should be the size of {@code R}, whereas for the RSA signature with PKCS#1 padding this
+     * should be {@code 0}.
+     */
+    protected abstract int getAdditionalEntropyAmountForSign();
+
+    /**
+     * Invoked to add algorithm-specific parameters for the KeyStore's {@code begin} operation.
+     *
+     * @param parameters keystore/keymaster arguments to be populated with algorithm-specific
+     *        parameters.
+     */
+    protected abstract void addAlgorithmSpecificParametersToBegin(
+            @NonNull List<KeyParameter> parameters);
+}
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreSpi.java b/keystore/java/android/security/keystore2/AndroidKeyStoreSpi.java
new file mode 100644
index 0000000..9790a4a
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreSpi.java
@@ -0,0 +1,1165 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.annotation.NonNull;
+import android.hardware.biometrics.BiometricManager;
+import android.hardware.keymint.HardwareAuthenticatorType;
+import android.hardware.keymint.KeyParameter;
+import android.hardware.keymint.SecurityLevel;
+import android.security.GateKeeper;
+import android.security.KeyStore2;
+import android.security.KeyStoreParameter;
+import android.security.KeyStoreSecurityLevel;
+import android.security.keymaster.KeymasterDefs;
+import android.security.keystore.KeyGenParameterSpec;
+import android.security.keystore.KeyPermanentlyInvalidatedException;
+import android.security.keystore.KeyProperties;
+import android.security.keystore.KeyProtection;
+import android.security.keystore.KeymasterUtils;
+import android.security.keystore.SecureKeyImportUnavailableException;
+import android.security.keystore.WrappedKeyEntry;
+import android.system.keystore2.AuthenticatorSpec;
+import android.system.keystore2.Domain;
+import android.system.keystore2.IKeystoreSecurityLevel;
+import android.system.keystore2.KeyDescriptor;
+import android.system.keystore2.KeyEntryResponse;
+import android.system.keystore2.KeyMetadata;
+import android.system.keystore2.ResponseCode;
+import android.util.Log;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.security.Key;
+import java.security.KeyStore.Entry;
+import java.security.KeyStore.LoadStoreParameter;
+import java.security.KeyStore.PrivateKeyEntry;
+import java.security.KeyStore.ProtectionParameter;
+import java.security.KeyStore.SecretKeyEntry;
+import java.security.KeyStoreException;
+import java.security.KeyStoreSpi;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
+import java.security.ProviderException;
+import java.security.UnrecoverableKeyException;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateEncodingException;
+import java.security.cert.CertificateException;
+import java.security.cert.CertificateFactory;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import javax.crypto.SecretKey;
+
+/**
+ * A java.security.KeyStore interface for the Android KeyStore. An instance of
+ * it can be created via the {@link java.security.KeyStore#getInstance(String)
+ * KeyStore.getInstance("AndroidKeyStore")} interface. This returns a
+ * java.security.KeyStore backed by this "AndroidKeyStore" implementation.
+ * <p>
+ * This is built on top of Android's keystore daemon. The convention of alias
+ * use is:
+ * <p>
+ * PrivateKeyEntry will have a Credentials.USER_PRIVATE_KEY as the private key,
+ * Credentials.USER_CERTIFICATE as the first certificate in the chain (the one
+ * that corresponds to the private key), and then a Credentials.CA_CERTIFICATE
+ * entry which will have the rest of the chain concatenated in BER format.
+ * <p>
+ * TrustedCertificateEntry will just have a Credentials.CA_CERTIFICATE entry
+ * with a single certificate.
+ *
+ * @hide
+ */
+public class AndroidKeyStoreSpi extends KeyStoreSpi {
+    public static final String TAG = "AndroidKeyStoreSpi";
+    public static final String NAME = "AndroidKeyStore";
+
+    private KeyStore2 mKeyStore;
+    private int mNamespace = KeyProperties.NAMESPACE_APPLICATION;
+
+    @Override
+    public Key engineGetKey(String alias, char[] password) throws NoSuchAlgorithmException,
+            UnrecoverableKeyException {
+        try {
+            return AndroidKeyStoreProvider.loadAndroidKeyStoreKeyFromKeystore(mKeyStore,
+                                                                              alias,
+                                                                              mNamespace);
+        } catch (KeyPermanentlyInvalidatedException e) {
+            throw new UnrecoverableKeyException(e.getMessage());
+        } catch (UnrecoverableKeyException e) {
+            Throwable cause = e.getCause();
+            if (cause instanceof android.security.KeyStoreException) {
+                if (((android.security.KeyStoreException) cause).getErrorCode()
+                        == ResponseCode.KEY_NOT_FOUND) {
+                    return null;
+                }
+            }
+            throw e;
+        }
+    }
+
+    /**
+     * Make a key descriptor from the given alias and the mNamespace member.
+     * If mNamespace is -1 it sets the domain field to {@link Domain#APP} and {@link Domain#SELINUX}
+     * otherwise. The blob field is always set to null and the alias field to {@code alias}
+     * @param alias The alias of the new key descriptor.
+     * @return A new key descriptor.
+     */
+    private KeyDescriptor makeKeyDescriptor(@NonNull String alias) {
+        KeyDescriptor descriptor = new KeyDescriptor();
+        descriptor.domain = getTargetDomain();
+        descriptor.nspace = mNamespace; // ignored if Domain.App;
+        descriptor.alias = alias;
+        descriptor.blob = null;
+        return descriptor;
+    }
+
+    private @Domain int getTargetDomain() {
+        return mNamespace == KeyProperties.NAMESPACE_APPLICATION
+                ? Domain.APP
+                : Domain.SELINUX;
+    }
+    private KeyEntryResponse getKeyMetadata(String alias) {
+        if (alias == null) {
+            throw new NullPointerException("alias == null");
+        }
+
+        KeyDescriptor descriptor = makeKeyDescriptor(alias);
+
+        try {
+            return mKeyStore.getKeyEntry(descriptor);
+        } catch (android.security.KeyStoreException e) {
+            if (e.getErrorCode() != ResponseCode.KEY_NOT_FOUND) {
+                Log.w(TAG, "Could not get key metadata from Keystore.", e);
+            }
+            return null;
+        }
+    }
+
+    @Override
+    public Certificate[] engineGetCertificateChain(String alias) {
+        KeyEntryResponse response = getKeyMetadata(alias);
+
+        if (response == null || response.metadata.certificate == null) {
+            return null;
+        }
+
+        final X509Certificate leaf = (X509Certificate) toCertificate(response.metadata.certificate);
+        if (leaf == null) {
+            return null;
+        }
+
+        final Certificate[] caList;
+
+        final byte[] caBytes = response.metadata.certificateChain;
+
+        if (caBytes != null) {
+            final Collection<X509Certificate> caChain = toCertificates(caBytes);
+
+            caList = new Certificate[caChain.size() + 1];
+
+            final Iterator<X509Certificate> it = caChain.iterator();
+            int i = 1;
+            while (it.hasNext()) {
+                caList[i++] = it.next();
+            }
+        } else {
+            caList = new Certificate[1];
+        }
+
+        caList[0] = leaf;
+
+        return caList;
+    }
+
+    @Override
+    public Certificate engineGetCertificate(String alias) {
+        KeyEntryResponse response = getKeyMetadata(alias);
+
+        if (response == null) {
+            return null;
+        }
+
+        byte[] encodedCert = response.metadata.certificate;
+        if (encodedCert != null) {
+            return toCertificate(encodedCert);
+        }
+
+        encodedCert = response.metadata.certificateChain;
+        if (encodedCert != null) {
+            return toCertificate(encodedCert);
+        }
+
+        // This entry/alias does not contain a certificate.
+        return null;
+    }
+
+    private static X509Certificate toCertificate(byte[] bytes) {
+        try {
+            final CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
+            return (X509Certificate) certFactory.generateCertificate(
+                    new ByteArrayInputStream(bytes));
+        } catch (CertificateException e) {
+            Log.w(NAME, "Couldn't parse certificate in keystore", e);
+            return null;
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    private static Collection<X509Certificate> toCertificates(byte[] bytes) {
+        try {
+            final CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
+            return (Collection<X509Certificate>) certFactory.generateCertificates(
+                            new ByteArrayInputStream(bytes));
+        } catch (CertificateException e) {
+            Log.w(NAME, "Couldn't parse certificates in keystore", e);
+            return new ArrayList<X509Certificate>();
+        }
+    }
+
+    @Override
+    public Date engineGetCreationDate(String alias) {
+        KeyEntryResponse response = getKeyMetadata(alias);
+
+        if (response == null) {
+            return null;
+        }
+
+
+        // TODO add modification time to key metadata.
+        return null;
+        // if (response.metadata.modificationTime == -1) {
+        //     return null;
+        // }
+        // return new Date(response.metadata.modificationTime);
+    }
+
+    @Override
+    public void engineSetKeyEntry(String alias, Key key, char[] password, Certificate[] chain)
+            throws KeyStoreException {
+        if ((password != null) && (password.length > 0)) {
+            throw new KeyStoreException("entries cannot be protected with passwords");
+        }
+
+        if (key instanceof PrivateKey) {
+            setPrivateKeyEntry(alias, (PrivateKey) key, chain, null);
+        } else if (key instanceof SecretKey) {
+            setSecretKeyEntry(alias, (SecretKey) key, null);
+        } else {
+            throw new KeyStoreException("Only PrivateKey and SecretKey are supported");
+        }
+    }
+
+    private static KeyProtection getLegacyKeyProtectionParameter(PrivateKey key)
+            throws KeyStoreException {
+        String keyAlgorithm = key.getAlgorithm();
+        KeyProtection.Builder specBuilder;
+        if (KeyProperties.KEY_ALGORITHM_EC.equalsIgnoreCase(keyAlgorithm)) {
+            specBuilder =
+                    new KeyProtection.Builder(
+                            KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY);
+            // Authorized to be used with any digest (including no digest).
+            // MD5 was never offered for Android Keystore for ECDSA.
+            specBuilder.setDigests(
+                    KeyProperties.DIGEST_NONE,
+                    KeyProperties.DIGEST_SHA1,
+                    KeyProperties.DIGEST_SHA224,
+                    KeyProperties.DIGEST_SHA256,
+                    KeyProperties.DIGEST_SHA384,
+                    KeyProperties.DIGEST_SHA512);
+        } else if (KeyProperties.KEY_ALGORITHM_RSA.equalsIgnoreCase(keyAlgorithm)) {
+            specBuilder =
+                    new KeyProtection.Builder(
+                            KeyProperties.PURPOSE_ENCRYPT
+                            | KeyProperties.PURPOSE_DECRYPT
+                            | KeyProperties.PURPOSE_SIGN
+                            | KeyProperties.PURPOSE_VERIFY);
+            // Authorized to be used with any digest (including no digest).
+            specBuilder.setDigests(
+                    KeyProperties.DIGEST_NONE,
+                    KeyProperties.DIGEST_MD5,
+                    KeyProperties.DIGEST_SHA1,
+                    KeyProperties.DIGEST_SHA224,
+                    KeyProperties.DIGEST_SHA256,
+                    KeyProperties.DIGEST_SHA384,
+                    KeyProperties.DIGEST_SHA512);
+            // Authorized to be used with any encryption and signature padding
+            // schemes (including no padding).
+            specBuilder.setEncryptionPaddings(
+                    KeyProperties.ENCRYPTION_PADDING_NONE,
+                    KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1,
+                    KeyProperties.ENCRYPTION_PADDING_RSA_OAEP);
+            specBuilder.setSignaturePaddings(
+                    KeyProperties.SIGNATURE_PADDING_RSA_PKCS1,
+                    KeyProperties.SIGNATURE_PADDING_RSA_PSS);
+            // Disable randomized encryption requirement to support encryption
+            // padding NONE above.
+            specBuilder.setRandomizedEncryptionRequired(false);
+        } else {
+            throw new KeyStoreException("Unsupported key algorithm: " + keyAlgorithm);
+        }
+        specBuilder.setUserAuthenticationRequired(false);
+
+        return specBuilder.build();
+    }
+
+    private void setPrivateKeyEntry(String alias, PrivateKey key, Certificate[] chain,
+            java.security.KeyStore.ProtectionParameter param) throws KeyStoreException {
+        @SecurityLevel int securitylevel = SecurityLevel.TRUSTED_ENVIRONMENT;
+        int flags = 0;
+        KeyProtection spec;
+        if (param == null) {
+            spec = getLegacyKeyProtectionParameter(key);
+        } else if (param instanceof KeyStoreParameter) {
+            spec = getLegacyKeyProtectionParameter(key);
+            KeyStoreParameter legacySpec = (KeyStoreParameter) param;
+        } else if (param instanceof KeyProtection) {
+            spec = (KeyProtection) param;
+            if (spec.isCriticalToDeviceEncryption()) {
+                // This key is should not be bound to the LSKF even if it is auth bound.
+                // This indicates that this key is used in the derivation for of the
+                // master key, that is used for the LSKF binding of other auth bound
+                // keys. This breaks up a circular dependency while retaining logical
+                // authentication binding of the key.
+                flags |= IKeystoreSecurityLevel
+                        .KEY_FLAG_AUTH_BOUND_WITHOUT_CRYPTOGRAPHIC_LSKF_BINDING;
+            }
+
+            if (spec.isStrongBoxBacked()) {
+                securitylevel = SecurityLevel.STRONGBOX;
+            }
+        } else {
+            throw new KeyStoreException(
+                    "Unsupported protection parameter class:" + param.getClass().getName()
+                    + ". Supported: " + KeyProtection.class.getName() + ", "
+                    + KeyStoreParameter.class.getName());
+        }
+
+        // Make sure the chain exists since this is a PrivateKey
+        if ((chain == null) || (chain.length == 0)) {
+            throw new KeyStoreException("Must supply at least one Certificate with PrivateKey");
+        }
+
+        // Do chain type checking.
+        X509Certificate[] x509chain = new X509Certificate[chain.length];
+        for (int i = 0; i < chain.length; i++) {
+            if (!"X.509".equals(chain[i].getType())) {
+                throw new KeyStoreException("Certificates must be in X.509 format: invalid cert #"
+                        + i);
+            }
+
+            if (!(chain[i] instanceof X509Certificate)) {
+                throw new KeyStoreException("Certificates must be in X.509 format: invalid cert #"
+                        + i);
+            }
+
+            x509chain[i] = (X509Certificate) chain[i];
+        }
+
+        final byte[] userCertBytes;
+        try {
+            userCertBytes = x509chain[0].getEncoded();
+        } catch (CertificateEncodingException e) {
+            throw new KeyStoreException("Failed to encode certificate #0", e);
+        }
+
+        /*
+         * If we have a chain, store it in the CA certificate slot for this
+         * alias as concatenated DER-encoded certificates. These can be
+         * deserialized by {@link CertificateFactory#generateCertificates}.
+         */
+        final byte[] chainBytes;
+        if (chain.length > 1) {
+            /*
+             * The chain is passed in as {user_cert, ca_cert_1, ca_cert_2, ...}
+             * so we only need the certificates starting at index 1.
+             */
+            final byte[][] certsBytes = new byte[x509chain.length - 1][];
+            int totalCertLength = 0;
+            for (int i = 0; i < certsBytes.length; i++) {
+                try {
+                    certsBytes[i] = x509chain[i + 1].getEncoded();
+                    totalCertLength += certsBytes[i].length;
+                } catch (CertificateEncodingException e) {
+                    throw new KeyStoreException("Failed to encode certificate #" + i, e);
+                }
+            }
+
+            /*
+             * Serialize this into one byte array so we can later call
+             * CertificateFactory#generateCertificates to recover them.
+             */
+            chainBytes = new byte[totalCertLength];
+            int outputOffset = 0;
+            for (int i = 0; i < certsBytes.length; i++) {
+                final int certLength = certsBytes[i].length;
+                System.arraycopy(certsBytes[i], 0, chainBytes, outputOffset, certLength);
+                outputOffset += certLength;
+                certsBytes[i] = null;
+            }
+        } else {
+            chainBytes = null;
+        }
+
+        @Domain int targetDomain = getTargetDomain();
+
+        // If the given key is an AndroidKeyStorePrivateKey, we attempt to update
+        // its subcomponents with the given certificate and certificate chain.
+        if (key instanceof AndroidKeyStorePrivateKey) {
+            AndroidKeyStoreKey ksKey = (AndroidKeyStoreKey) key;
+            KeyDescriptor descriptor = ksKey.getUserKeyDescriptor();
+
+            // This throws if the request cannot replace the entry.
+            assertCanReplace(alias, targetDomain, mNamespace, descriptor);
+
+            try {
+                mKeyStore.updateSubcomponents(
+                        ((AndroidKeyStorePrivateKey) key).getKeyIdDescriptor(),
+                        userCertBytes, chainBytes);
+            } catch (android.security.KeyStoreException e) {
+                throw new KeyStoreException("Failed to store certificate and certificate chain", e);
+            }
+            return;
+        }
+
+        // Make sure the PrivateKey format is the one we support.
+        final String keyFormat = key.getFormat();
+        if ((keyFormat == null) || (!"PKCS#8".equals(keyFormat))) {
+            throw new KeyStoreException(
+                    "Unsupported private key export format: " + keyFormat
+                    + ". Only private keys which export their key material in PKCS#8 format are"
+                    + " supported.");
+        }
+
+        // Make sure we can actually encode the key.
+        byte[] pkcs8EncodedPrivateKeyBytes = key.getEncoded();
+        if (pkcs8EncodedPrivateKeyBytes == null) {
+            throw new KeyStoreException("Private key did not export any key material");
+        }
+
+        final List<KeyParameter> importArgs = new ArrayList<>();
+
+        try {
+            importArgs.add(KeyStore2ParameterUtils.makeEnum(
+                    KeymasterDefs.KM_TAG_ALGORITHM,
+                    KeyProperties.KeyAlgorithm.toKeymasterAsymmetricKeyAlgorithm(
+                            key.getAlgorithm()))
+            );
+            KeyStore2ParameterUtils.forEachSetFlag(spec.getPurposes(), (purpose) -> {
+                importArgs.add(KeyStore2ParameterUtils.makeEnum(
+                        KeymasterDefs.KM_TAG_PURPOSE,
+                        KeyProperties.Purpose.toKeymaster(purpose)
+                ));
+            });
+            if (spec.isDigestsSpecified()) {
+                for (String digest : spec.getDigests()) {
+                    importArgs.add(KeyStore2ParameterUtils.makeEnum(
+                            KeymasterDefs.KM_TAG_DIGEST,
+                            KeyProperties.Digest.toKeymaster(digest)
+                    ));
+                }
+            }
+            for (String blockMode : spec.getBlockModes()) {
+                importArgs.add(KeyStore2ParameterUtils.makeEnum(
+                        KeymasterDefs.KM_TAG_BLOCK_MODE,
+                        KeyProperties.BlockMode.toKeymaster(blockMode)
+                ));
+            }
+            int[] keymasterEncryptionPaddings =
+                    KeyProperties.EncryptionPadding.allToKeymaster(
+                            spec.getEncryptionPaddings());
+            if (((spec.getPurposes() & KeyProperties.PURPOSE_DECRYPT) != 0)
+                    && (spec.isRandomizedEncryptionRequired())) {
+                for (int keymasterPadding : keymasterEncryptionPaddings) {
+                    if (!KeymasterUtils
+                            .isKeymasterPaddingSchemeIndCpaCompatibleWithAsymmetricCrypto(
+                                    keymasterPadding)) {
+                        throw new KeyStoreException(
+                                "Randomized encryption (IND-CPA) required but is violated by"
+                                        + " encryption padding mode: "
+                                        + KeyProperties.EncryptionPadding.fromKeymaster(
+                                        keymasterPadding)
+                                        + ". See KeyProtection documentation.");
+                    }
+                }
+            }
+            for (int padding : keymasterEncryptionPaddings) {
+                importArgs.add(KeyStore2ParameterUtils.makeEnum(
+                        KeymasterDefs.KM_TAG_PADDING,
+                        padding
+                ));
+            }
+            for (String padding : spec.getSignaturePaddings()) {
+                importArgs.add(KeyStore2ParameterUtils.makeEnum(
+                        KeymasterDefs.KM_TAG_PADDING,
+                        KeyProperties.SignaturePadding.toKeymaster(padding)
+                ));
+            }
+            KeyStore2ParameterUtils.addUserAuthArgs(importArgs, spec);
+            if (spec.getKeyValidityStart() != null) {
+                importArgs.add(KeyStore2ParameterUtils.makeDate(
+                        KeymasterDefs.KM_TAG_ACTIVE_DATETIME, spec.getKeyValidityStart()
+                ));
+            }
+            if (spec.getKeyValidityForOriginationEnd() != null) {
+                importArgs.add(KeyStore2ParameterUtils.makeDate(
+                        KeymasterDefs.KM_TAG_ORIGINATION_EXPIRE_DATETIME,
+                        spec.getKeyValidityForOriginationEnd()
+                ));
+            }
+            if (spec.getKeyValidityForConsumptionEnd() != null) {
+                importArgs.add(KeyStore2ParameterUtils.makeDate(
+                        KeymasterDefs.KM_TAG_USAGE_EXPIRE_DATETIME,
+                        spec.getKeyValidityForConsumptionEnd()
+                ));
+            }
+        } catch (IllegalArgumentException | IllegalStateException e) {
+            throw new KeyStoreException(e);
+        }
+
+        try {
+            KeyStoreSecurityLevel securityLevelInterface = mKeyStore.getSecurityLevel(
+                    securitylevel);
+
+            KeyDescriptor descriptor = makeKeyDescriptor(alias);
+
+            KeyMetadata metadata = securityLevelInterface.importKey(descriptor, null,
+                    importArgs, flags, pkcs8EncodedPrivateKeyBytes);
+
+            try {
+                mKeyStore.updateSubcomponents(metadata.key, userCertBytes, chainBytes);
+            } catch (android.security.KeyStoreException e) {
+                mKeyStore.deleteKey(metadata.key);
+                throw new KeyStoreException("Failed to store certificate and certificate chain", e);
+            }
+
+        } catch (android.security.KeyStoreException e) {
+            throw new KeyStoreException("Failed to store private key", e);
+        }
+    }
+
+    private static void assertCanReplace(String alias, @Domain int targetDomain,
+            int targetNamespace, KeyDescriptor descriptor)
+            throws KeyStoreException {
+        // If
+        //  * the alias does not match, or
+        //  * the domain does not match, or
+        //  * the domain is Domain.SELINUX and the namespaces don not match,
+        // then the designated key location is not equivalent to the location of the
+        // given key parameter and cannot be updated.
+        //
+        // Note: mNamespace == KeyProperties.NAMESPACE_APPLICATION implies that the target domain
+        // is Domain.APP and Domain.SELINUX is the target domain otherwise.
+        if (alias != descriptor.alias
+                || descriptor.domain != targetDomain
+                || (descriptor.domain == Domain.SELINUX && descriptor.nspace != targetNamespace)) {
+            throw new KeyStoreException("Can only replace keys with same alias: " + alias
+                    + " != " + descriptor.alias + " in the same target domain: " + targetDomain
+                    + " != " + descriptor.domain
+                    + (targetDomain == Domain.SELINUX ? " in the same target namespace: "
+                    + targetNamespace + " != " + descriptor.nspace : "")
+            );
+        }
+    }
+
+    private void setSecretKeyEntry(String alias, SecretKey key,
+            java.security.KeyStore.ProtectionParameter param)
+            throws KeyStoreException {
+        if ((param != null) && (!(param instanceof KeyProtection))) {
+            throw new KeyStoreException(
+                    "Unsupported protection parameter class: " + param.getClass().getName()
+                    + ". Supported: " + KeyProtection.class.getName());
+        }
+        KeyProtection params = (KeyProtection) param;
+
+        @SecurityLevel int securityLevel = params.isStrongBoxBacked() ? SecurityLevel.STRONGBOX :
+                SecurityLevel.TRUSTED_ENVIRONMENT;
+        @Domain int targetDomain = (getTargetDomain());
+
+        if (key instanceof AndroidKeyStoreSecretKey) {
+            String keyAliasInKeystore =
+                    ((AndroidKeyStoreSecretKey) key).getUserKeyDescriptor().alias;
+
+            KeyDescriptor descriptor = ((AndroidKeyStoreSecretKey) key).getUserKeyDescriptor();
+
+            // This throws if the request cannot replace the existing key.
+            assertCanReplace(alias, targetDomain, mNamespace, descriptor);
+
+            // This is the entry where this key is already stored. No need to do anything.
+            if (params != null) {
+                throw new KeyStoreException("Modifying KeyStore-backed key using protection"
+                        + " parameters not supported");
+            }
+            return;
+        }
+
+        if (params == null) {
+            throw new KeyStoreException(
+                    "Protection parameters must be specified when importing a symmetric key");
+        }
+
+        // Not a KeyStore-backed secret key -- import its key material into keystore.
+        String keyExportFormat = key.getFormat();
+        if (keyExportFormat == null) {
+            throw new KeyStoreException(
+                    "Only secret keys that export their key material are supported");
+        } else if (!"RAW".equals(keyExportFormat)) {
+            throw new KeyStoreException(
+                    "Unsupported secret key material export format: " + keyExportFormat);
+        }
+        byte[] keyMaterial = key.getEncoded();
+        if (keyMaterial == null) {
+            throw new KeyStoreException("Key did not export its key material despite supporting"
+                    + " RAW format export");
+        }
+
+        final List<KeyParameter> importArgs = new ArrayList<>();
+
+        try {
+            int keymasterAlgorithm =
+                    KeyProperties.KeyAlgorithm.toKeymasterSecretKeyAlgorithm(
+                            key.getAlgorithm());
+
+            importArgs.add(KeyStore2ParameterUtils.makeEnum(
+                    KeymasterDefs.KM_TAG_ALGORITHM,
+                    keymasterAlgorithm
+            ));
+
+            if (keymasterAlgorithm == KeymasterDefs.KM_ALGORITHM_HMAC) {
+                // JCA HMAC key algorithm implies a digest (e.g., HmacSHA256 key algorithm
+                // implies SHA-256 digest). Because keymaster HMAC key is authorized only for one
+                // digest, we don't let import parameters override the digest implied by the key.
+                // If the parameters specify digests at all, they must specify only one digest, the
+                // only implied by key algorithm.
+                int keymasterImpliedDigest =
+                        KeyProperties.KeyAlgorithm.toKeymasterDigest(key.getAlgorithm());
+                if (keymasterImpliedDigest == -1) {
+                    throw new ProviderException(
+                            "HMAC key algorithm digest unknown for key algorithm "
+                                    + key.getAlgorithm());
+                }
+
+                if (params.isDigestsSpecified()) {
+                    // Digest(s) explicitly specified in params -- check that the list consists of
+                    // exactly one digest, the one implied by key algorithm.
+                    int[] keymasterDigestsFromParams =
+                            KeyProperties.Digest.allToKeymaster(params.getDigests());
+                    if ((keymasterDigestsFromParams.length != 1)
+                            || (keymasterDigestsFromParams[0] != keymasterImpliedDigest)) {
+                        throw new KeyStoreException(
+                                "Unsupported digests specification: "
+                                        + Arrays.asList(params.getDigests()) + ". Only "
+                                        + KeyProperties.Digest.fromKeymaster(keymasterImpliedDigest)
+                                        + " supported for HMAC key algorithm "
+                                        + key.getAlgorithm());
+                    }
+                }
+                int outputBits = KeymasterUtils.getDigestOutputSizeBits(keymasterImpliedDigest);
+                if (outputBits == -1) {
+                    throw new ProviderException(
+                            "HMAC key authorized for unsupported digest: "
+                                    + KeyProperties.Digest.fromKeymaster(keymasterImpliedDigest));
+                }
+                importArgs.add(KeyStore2ParameterUtils.makeEnum(
+                        KeymasterDefs.KM_TAG_DIGEST, keymasterImpliedDigest
+                ));
+                importArgs.add(KeyStore2ParameterUtils.makeInt(
+                        KeymasterDefs.KM_TAG_MIN_MAC_LENGTH, outputBits
+                ));
+            } else {
+                if (params.isDigestsSpecified()) {
+                    for (String digest : params.getDigests()) {
+                        importArgs.add(KeyStore2ParameterUtils.makeEnum(
+                                KeymasterDefs.KM_TAG_DIGEST,
+                                KeyProperties.Digest.toKeymaster(digest)
+                        ));
+                    }
+                }
+            }
+
+            KeyStore2ParameterUtils.forEachSetFlag(params.getPurposes(), (purpose) -> {
+                importArgs.add(KeyStore2ParameterUtils.makeEnum(
+                        KeymasterDefs.KM_TAG_PURPOSE,
+                        KeyProperties.Purpose.toKeymaster(purpose)
+                ));
+            });
+
+            boolean indCpa = false;
+            if ((params.getPurposes() & KeyProperties.PURPOSE_ENCRYPT) != 0) {
+                if (((KeyProtection) param).isRandomizedEncryptionRequired()) {
+                    indCpa = true;
+                } else {
+                    importArgs.add(KeyStore2ParameterUtils.makeBool(
+                            KeymasterDefs.KM_TAG_CALLER_NONCE
+                    ));
+                }
+            }
+
+            for (String blockMode : params.getBlockModes()) {
+                int keymasterBlockMode = KeyProperties.BlockMode.toKeymaster(blockMode);
+                if (indCpa
+                        && !KeymasterUtils.isKeymasterBlockModeIndCpaCompatibleWithSymmetricCrypto(
+                                keymasterBlockMode)) {
+                    throw new KeyStoreException(
+                            "Randomized encryption (IND-CPA) required but may be violated by"
+                                    + " block mode: " + blockMode
+                                    + ". See KeyProtection documentation.");
+
+                }
+                if (keymasterAlgorithm == KeymasterDefs.KM_ALGORITHM_AES
+                        && keymasterBlockMode == KeymasterDefs.KM_MODE_GCM) {
+                    importArgs.add(KeyStore2ParameterUtils.makeInt(
+                            KeymasterDefs.KM_TAG_MIN_MAC_LENGTH,
+                            AndroidKeyStoreAuthenticatedAESCipherSpi.GCM
+                                    .MIN_SUPPORTED_TAG_LENGTH_BITS
+                    ));
+                }
+                importArgs.add(KeyStore2ParameterUtils.makeEnum(
+                        KeymasterDefs.KM_TAG_BLOCK_MODE,
+                        keymasterBlockMode
+                ));
+            }
+
+            if (params.getSignaturePaddings().length > 0) {
+                throw new KeyStoreException("Signature paddings not supported for symmetric keys");
+            }
+
+            for (String padding : params.getEncryptionPaddings()) {
+                importArgs.add(KeyStore2ParameterUtils.makeEnum(
+                        KeymasterDefs.KM_TAG_PADDING,
+                        KeyProperties.EncryptionPadding.toKeymaster(padding)
+                ));
+            }
+
+            KeyStore2ParameterUtils.addUserAuthArgs(importArgs, params);
+
+            if (params.getKeyValidityStart() != null) {
+                importArgs.add(KeyStore2ParameterUtils.makeDate(
+                        KeymasterDefs.KM_TAG_ACTIVE_DATETIME, params.getKeyValidityStart()
+                ));
+            }
+            if (params.getKeyValidityForOriginationEnd() != null) {
+                importArgs.add(KeyStore2ParameterUtils.makeDate(
+                        KeymasterDefs.KM_TAG_ORIGINATION_EXPIRE_DATETIME,
+                        params.getKeyValidityForOriginationEnd()
+                ));
+            }
+            if (params.getKeyValidityForConsumptionEnd() != null) {
+                importArgs.add(KeyStore2ParameterUtils.makeDate(
+                        KeymasterDefs.KM_TAG_USAGE_EXPIRE_DATETIME,
+                        params.getKeyValidityForConsumptionEnd()
+                ));
+            }
+        } catch (IllegalArgumentException | IllegalStateException e) {
+            throw new KeyStoreException(e);
+        }
+
+        int flags = 0;
+        if (params.isCriticalToDeviceEncryption()) {
+            flags |= IKeystoreSecurityLevel.KEY_FLAG_AUTH_BOUND_WITHOUT_CRYPTOGRAPHIC_LSKF_BINDING;
+        }
+
+        try {
+            KeyStoreSecurityLevel securityLevelInterface = mKeyStore.getSecurityLevel(
+                    securityLevel);
+
+            KeyDescriptor descriptor = makeKeyDescriptor(alias);
+
+            securityLevelInterface.importKey(descriptor, null /* TODO attestationKey */,
+                    importArgs, flags, keyMaterial);
+        } catch (android.security.KeyStoreException e) {
+            throw new KeyStoreException("Failed to import secret key.", e);
+        }
+    }
+
+    private void setWrappedKeyEntry(String alias, WrappedKeyEntry entry,
+            java.security.KeyStore.ProtectionParameter param) throws KeyStoreException {
+        if (param != null) {
+            throw new KeyStoreException("Protection parameters are specified inside wrapped keys");
+        }
+
+        byte[] maskingKey = new byte[32];
+
+        String[] parts = entry.getTransformation().split("/");
+
+        List<KeyParameter> args = new ArrayList<>();
+
+        String algorithm = parts[0];
+        if (KeyProperties.KEY_ALGORITHM_RSA.equalsIgnoreCase(algorithm)) {
+            args.add(KeyStore2ParameterUtils.makeEnum(
+                    KeymasterDefs.KM_TAG_ALGORITHM,
+                    KeymasterDefs.KM_ALGORITHM_RSA
+            ));
+        } else {
+            throw new KeyStoreException("Algorithm \"" + algorithm + "\" not supported for "
+                    + "wrapping. Only RSA wrapping keys are supported.");
+        }
+
+        if (parts.length > 1) {
+            String mode = parts[1];
+            args.add(KeyStore2ParameterUtils.makeEnum(
+                    KeymasterDefs.KM_TAG_BLOCK_MODE,
+                    KeyProperties.BlockMode.toKeymaster(mode)
+            ));
+        }
+
+        if (parts.length > 2) {
+            @KeyProperties.EncryptionPaddingEnum int padding =
+                    KeyProperties.EncryptionPadding.toKeymaster(parts[2]);
+            if (padding != KeymasterDefs.KM_PAD_NONE) {
+                args.add(KeyStore2ParameterUtils.makeEnum(
+                        KeymasterDefs.KM_TAG_PADDING,
+                        padding
+                ));
+            }
+        }
+
+        KeyGenParameterSpec spec = (KeyGenParameterSpec) entry.getAlgorithmParameterSpec();
+        if (spec.isDigestsSpecified()) {
+            @KeyProperties.DigestEnum int digest =
+                    KeyProperties.Digest.toKeymaster(spec.getDigests()[0]);
+            if (digest != KeymasterDefs.KM_DIGEST_NONE) {
+                args.add(KeyStore2ParameterUtils.makeEnum(
+                        KeymasterDefs.KM_TAG_DIGEST,
+                        digest
+                ));
+            }
+        }
+
+        KeyDescriptor wrappingkey = makeKeyDescriptor(entry.getWrappingKeyAlias());
+
+        KeyEntryResponse response = null;
+        try {
+            response = mKeyStore.getKeyEntry(wrappingkey);
+        } catch (android.security.KeyStoreException e) {
+            throw new KeyStoreException("Failed to load wrapping key.", e);
+        }
+
+        KeyDescriptor wrappedKey = makeKeyDescriptor(alias);
+
+        KeyStoreSecurityLevel securityLevel = new KeyStoreSecurityLevel(response.iSecurityLevel);
+
+        final BiometricManager bm = android.app.AppGlobals.getInitialApplication()
+                .getSystemService(BiometricManager.class);
+
+        long[] biometricSids = bm.getAuthenticatorIds();
+
+        List<AuthenticatorSpec> authenticatorSpecs = new ArrayList<>();
+
+        AuthenticatorSpec authenticatorSpec = new AuthenticatorSpec();
+        authenticatorSpec.authenticatorType = HardwareAuthenticatorType.PASSWORD;
+        authenticatorSpec.authenticatorId = GateKeeper.getSecureUserId();
+        authenticatorSpecs.add(authenticatorSpec);
+
+        for (long sid : biometricSids) {
+            AuthenticatorSpec authSpec = new AuthenticatorSpec();
+            authSpec.authenticatorType = HardwareAuthenticatorType.FINGERPRINT;
+            authSpec.authenticatorId = sid;
+            authenticatorSpecs.add(authSpec);
+        }
+
+        try {
+            securityLevel.importWrappedKey(
+                    wrappedKey, wrappingkey,
+                    entry.getWrappedKeyBytes(),
+                    null /* masking key is set to 32 bytes if null is given here */,
+                    args,
+                    authenticatorSpecs.toArray(new AuthenticatorSpec[0]));
+        } catch (android.security.KeyStoreException e) {
+            switch (e.getErrorCode()) {
+                case KeymasterDefs.KM_ERROR_UNIMPLEMENTED: {
+                    throw new SecureKeyImportUnavailableException("Could not import wrapped key");
+                }
+                default:
+                    throw new KeyStoreException("Failed to import wrapped key. Keystore error "
+                            + "code: " + e.getErrorCode(), e);
+            }
+        }
+    }
+
+    @Override
+    public void engineSetKeyEntry(String alias, byte[] userKey, Certificate[] chain)
+            throws KeyStoreException {
+        throw new KeyStoreException("Operation not supported because key encoding is unknown");
+    }
+
+    /**
+     * This function sets a trusted certificate entry. It fails if the given
+     * alias is already taken by an actual key entry. However, if the entry is a
+     * trusted certificate it will get silently replaced.
+     * @param alias the alias name
+     * @param cert the certificate
+     *
+     * @throws KeyStoreException if the alias is already taken by a secret or private
+     *         key entry.
+     * @throws KeyStoreException with a nested {@link CertificateEncodingException}
+     *         if the {@code cert.getEncoded()} throws.
+     * @throws KeyStoreException with a nested {@link android.security.KeyStoreException} if
+     *         something went wrong while inserting the certificate into keystore.
+     * @throws NullPointerException if cert or alias is null.
+     *
+     * @hide
+     */
+    @Override
+    public void engineSetCertificateEntry(String alias, Certificate cert) throws KeyStoreException {
+        if (isKeyEntry(alias)) {
+            throw new KeyStoreException("Entry exists and is not a trusted certificate");
+        }
+
+        // We can't set something to null.
+        if (cert == null) {
+            throw new NullPointerException("cert == null");
+        }
+
+        final byte[] encoded;
+        try {
+            encoded = cert.getEncoded();
+        } catch (CertificateEncodingException e) {
+            throw new KeyStoreException(e);
+        }
+
+        try {
+            mKeyStore.updateSubcomponents(makeKeyDescriptor(alias),
+                    null /* publicCert - unused when used as pure certificate store. */,
+                    encoded);
+        } catch (android.security.KeyStoreException e) {
+            throw new KeyStoreException("Couldn't insert certificate.", e);
+        }
+    }
+
+    @Override
+    public void engineDeleteEntry(String alias) throws KeyStoreException {
+        KeyDescriptor descriptor = makeKeyDescriptor(alias);
+        try {
+            mKeyStore.deleteKey(descriptor);
+        } catch (android.security.KeyStoreException e) {
+            if (e.getErrorCode() != ResponseCode.KEY_NOT_FOUND) {
+                throw new KeyStoreException("Failed to delete entry: " + alias, e);
+            }
+        }
+    }
+
+    private Set<String> getUniqueAliases() {
+
+        try {
+            final KeyDescriptor[] keys = mKeyStore.list(
+                    getTargetDomain(),
+                    mNamespace
+            );
+            final Set<String> aliases = new HashSet<>(keys.length);
+            for (KeyDescriptor d : keys) {
+                aliases.add(d.alias);
+            }
+            return aliases;
+        } catch (android.security.KeyStoreException e) {
+            Log.e(TAG, "Failed to list keystore entries.", e);
+            return null;
+        }
+    }
+
+    @Override
+    public Enumeration<String> engineAliases() {
+        return Collections.enumeration(getUniqueAliases());
+    }
+
+    @Override
+    public boolean engineContainsAlias(String alias) {
+        if (alias == null) {
+            throw new NullPointerException("alias == null");
+        }
+
+        return getKeyMetadata(alias) != null;
+    }
+
+    @Override
+    public int engineSize() {
+        return getUniqueAliases().size();
+    }
+
+    @Override
+    public boolean engineIsKeyEntry(String alias) {
+        return isKeyEntry(alias);
+    }
+
+    private boolean isKeyEntry(String alias) {
+        if (alias == null) {
+            throw new NullPointerException("alias == null");
+        }
+
+        KeyEntryResponse response = getKeyMetadata(alias);
+        // If response is null, there is no such entry.
+        // If response.iSecurityLevel is null, there is no private or secret key material stored.
+        return response != null && response.iSecurityLevel != null;
+    }
+
+
+    @Override
+    public boolean engineIsCertificateEntry(String alias) {
+        if (alias == null) {
+            throw new NullPointerException("alias == null");
+        }
+        KeyEntryResponse response = getKeyMetadata(alias);
+        // If response == null there is no such entry.
+        // If there is no certificateChain, then this is not a certificate entry.
+        // If there is a private key entry, this is the certificate chain for that
+        // key entry and not a CA certificate entry.
+        return response != null
+                && response.metadata.certificateChain != null
+                && response.iSecurityLevel == null;
+    }
+
+    @Override
+    public String engineGetCertificateAlias(Certificate cert) {
+        if (cert == null) {
+            return null;
+        }
+        if (!"X.509".equalsIgnoreCase(cert.getType())) {
+            Log.e(TAG, "In engineGetCertificateAlias: only X.509 certificates are supported.");
+            return null;
+        }
+        byte[] targetCertBytes;
+        try {
+            targetCertBytes = cert.getEncoded();
+        } catch (CertificateEncodingException e) {
+            Log.e(TAG, "While trying to get the alias for a certificate.", e);
+            return null;
+        }
+        if (targetCertBytes == null) {
+            return null;
+        }
+
+        KeyDescriptor[] keyDescriptors = null;
+        try {
+            keyDescriptors = mKeyStore.list(
+                    getTargetDomain(),
+                    mNamespace
+            );
+        } catch (android.security.KeyStoreException e) {
+            Log.w(TAG, "Failed to get list of keystore entries.", e);
+        }
+
+        String caAlias = null;
+        for (KeyDescriptor d : keyDescriptors) {
+            KeyEntryResponse response = getKeyMetadata(d.alias);
+            if (response == null) {
+                continue;
+            }
+            /*
+             * The KeyStoreSpi documentation says to only compare the first certificate in the
+             * chain which is equivalent to the {@code response.metadata.certificate} field.
+             * So we look for a hit in this field first. For pure CA certificate entries,
+             * we check the {@code response.metadata.certificateChain} field. But we only
+             * return a CA alias if there was no hit in the certificate field of any other
+             * entry.
+             */
+            if (response.metadata.certificate != null) {
+                if (Arrays.equals(response.metadata.certificate, targetCertBytes)) {
+                    return d.alias;
+                }
+            } else if (response.metadata.certificateChain != null && caAlias == null) {
+                if (Arrays.equals(response.metadata.certificateChain, targetCertBytes)) {
+                    caAlias =  d.alias;
+                }
+            }
+        }
+        return caAlias;
+    }
+
+    @Override
+    public void engineStore(OutputStream stream, char[] password) throws IOException,
+            NoSuchAlgorithmException, CertificateException {
+        throw new UnsupportedOperationException("Can not serialize AndroidKeyStore to OutputStream");
+    }
+
+    @Override
+    public void engineLoad(InputStream stream, char[] password) throws IOException,
+            NoSuchAlgorithmException, CertificateException {
+        if (stream != null) {
+            throw new IllegalArgumentException("InputStream not supported");
+        }
+
+        if (password != null) {
+            throw new IllegalArgumentException("password not supported");
+        }
+
+        // Unfortunate name collision.
+        mKeyStore = KeyStore2.getInstance();
+        mNamespace = KeyProperties.NAMESPACE_APPLICATION;
+    }
+
+    @Override
+    public void engineLoad(LoadStoreParameter param) throws IOException,
+            NoSuchAlgorithmException, CertificateException {
+        int namespace = KeyProperties.NAMESPACE_APPLICATION;
+        if (param != null) {
+            if (param instanceof AndroidKeyStoreLoadStoreParameter) {
+                namespace = ((AndroidKeyStoreLoadStoreParameter) param).getNamespace();
+            } else {
+                throw new IllegalArgumentException(
+                        "Unsupported param type: " + param.getClass());
+            }
+        }
+        mKeyStore = KeyStore2.getInstance();
+        mNamespace = namespace;
+    }
+
+    @Override
+    public void engineSetEntry(String alias, Entry entry, ProtectionParameter param)
+            throws KeyStoreException {
+        if (entry == null) {
+            throw new KeyStoreException("entry == null");
+        }
+
+        if (entry instanceof java.security.KeyStore.TrustedCertificateEntry) {
+            java.security.KeyStore.TrustedCertificateEntry trE =
+                    (java.security.KeyStore.TrustedCertificateEntry) entry;
+            // engineSetCertificateEntry does not overwrite if the existing entry
+            // is a key entry, but the semantic of engineSetEntry is such that it
+            // overwrites any existing entry. Thus we delete any possible existing
+            // entry by this alias.
+            engineDeleteEntry(alias);
+            engineSetCertificateEntry(alias, trE.getTrustedCertificate());
+            return;
+        }
+
+        if (entry instanceof PrivateKeyEntry) {
+            PrivateKeyEntry prE = (PrivateKeyEntry) entry;
+            setPrivateKeyEntry(alias, prE.getPrivateKey(), prE.getCertificateChain(), param);
+        } else if (entry instanceof SecretKeyEntry) {
+            SecretKeyEntry secE = (SecretKeyEntry) entry;
+            setSecretKeyEntry(alias, secE.getSecretKey(), param);
+        } else if (entry instanceof WrappedKeyEntry) {
+            WrappedKeyEntry wke = (WrappedKeyEntry) entry;
+            setWrappedKeyEntry(alias, wke, param);
+        } else {
+            throw new KeyStoreException(
+                    "Entry must be a PrivateKeyEntry, SecretKeyEntry, WrappedKeyEntry "
+                            + "or TrustedCertificateEntry; was " + entry);
+        }
+    }
+}
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreUnauthenticatedAESCipherSpi.java b/keystore/java/android/security/keystore2/AndroidKeyStoreUnauthenticatedAESCipherSpi.java
new file mode 100644
index 0000000..a2d4528
--- /dev/null
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreUnauthenticatedAESCipherSpi.java
@@ -0,0 +1,335 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.hardware.keymint.KeyParameter;
+import android.security.keymaster.KeymasterDefs;
+import android.security.keystore.ArrayUtils;
+import android.security.keystore.KeyProperties;
+
+import java.security.AlgorithmParameters;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.Key;
+import java.security.NoSuchAlgorithmException;
+import java.security.ProviderException;
+import java.security.spec.AlgorithmParameterSpec;
+import java.security.spec.InvalidParameterSpecException;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.crypto.CipherSpi;
+import javax.crypto.spec.IvParameterSpec;
+
+/**
+ * Base class for Android Keystore unauthenticated AES {@link CipherSpi} implementations.
+ *
+ * @hide
+ */
+class AndroidKeyStoreUnauthenticatedAESCipherSpi extends AndroidKeyStoreCipherSpiBase {
+
+    abstract static class ECB extends AndroidKeyStoreUnauthenticatedAESCipherSpi {
+        protected ECB(int keymasterPadding) {
+            super(KeymasterDefs.KM_MODE_ECB, keymasterPadding, false);
+        }
+
+        public static class NoPadding extends ECB {
+            public NoPadding() {
+                super(KeymasterDefs.KM_PAD_NONE);
+            }
+        }
+
+        public static class PKCS7Padding extends ECB {
+            public PKCS7Padding() {
+                super(KeymasterDefs.KM_PAD_PKCS7);
+            }
+        }
+    }
+
+    abstract static class CBC extends AndroidKeyStoreUnauthenticatedAESCipherSpi {
+        protected CBC(int keymasterPadding) {
+            super(KeymasterDefs.KM_MODE_CBC, keymasterPadding, true);
+        }
+
+        public static class NoPadding extends CBC {
+            public NoPadding() {
+                super(KeymasterDefs.KM_PAD_NONE);
+            }
+        }
+
+        public static class PKCS7Padding extends CBC {
+            public PKCS7Padding() {
+                super(KeymasterDefs.KM_PAD_PKCS7);
+            }
+        }
+    }
+
+    abstract static class CTR extends AndroidKeyStoreUnauthenticatedAESCipherSpi {
+        protected CTR(int keymasterPadding) {
+            super(KeymasterDefs.KM_MODE_CTR, keymasterPadding, true);
+        }
+
+        public static class NoPadding extends CTR {
+            public NoPadding() {
+                super(KeymasterDefs.KM_PAD_NONE);
+            }
+        }
+    }
+
+    private static final int BLOCK_SIZE_BYTES = 16;
+
+    private final int mKeymasterBlockMode;
+    private final int mKeymasterPadding;
+    /** Whether this transformation requires an IV. */
+    private final boolean mIvRequired;
+
+    private byte[] mIv;
+
+    /** Whether the current {@code #mIv} has been used by the underlying crypto operation. */
+    private boolean mIvHasBeenUsed;
+
+    AndroidKeyStoreUnauthenticatedAESCipherSpi(
+            int keymasterBlockMode,
+            int keymasterPadding,
+            boolean ivRequired) {
+        mKeymasterBlockMode = keymasterBlockMode;
+        mKeymasterPadding = keymasterPadding;
+        mIvRequired = ivRequired;
+    }
+
+    @Override
+    protected final void resetAll() {
+        mIv = null;
+        mIvHasBeenUsed = false;
+        super.resetAll();
+    }
+
+    @Override
+    protected final void resetWhilePreservingInitState() {
+        super.resetWhilePreservingInitState();
+    }
+
+    @Override
+    protected final void initKey(int opmode, Key key) throws InvalidKeyException {
+        if (!(key instanceof AndroidKeyStoreSecretKey)) {
+            throw new InvalidKeyException(
+                    "Unsupported key: " + ((key != null) ? key.getClass().getName() : "null"));
+        }
+        if (!KeyProperties.KEY_ALGORITHM_AES.equalsIgnoreCase(key.getAlgorithm())) {
+            throw new InvalidKeyException(
+                    "Unsupported key algorithm: " + key.getAlgorithm() + ". Only " +
+                    KeyProperties.KEY_ALGORITHM_AES + " supported");
+        }
+        setKey((AndroidKeyStoreSecretKey) key);
+    }
+
+    @Override
+    protected final void initAlgorithmSpecificParameters() throws InvalidKeyException {
+        if (!mIvRequired) {
+            return;
+        }
+
+        // IV is used
+        if (!isEncrypting()) {
+            throw new InvalidKeyException("IV required when decrypting"
+                    + ". Use IvParameterSpec or AlgorithmParameters to provide it.");
+        }
+    }
+
+    @Override
+    protected final void initAlgorithmSpecificParameters(AlgorithmParameterSpec params)
+            throws InvalidAlgorithmParameterException {
+        if (!mIvRequired) {
+            if (params != null) {
+                throw new InvalidAlgorithmParameterException("Unsupported parameters: " + params);
+            }
+            return;
+        }
+
+        // IV is used
+        if (params == null) {
+            if (!isEncrypting()) {
+                // IV must be provided by the caller
+                throw new InvalidAlgorithmParameterException(
+                        "IvParameterSpec must be provided when decrypting");
+            }
+            return;
+        }
+        if (!(params instanceof IvParameterSpec)) {
+            throw new InvalidAlgorithmParameterException("Only IvParameterSpec supported");
+        }
+        mIv = ((IvParameterSpec) params).getIV();
+        if (mIv == null) {
+            throw new InvalidAlgorithmParameterException("Null IV in IvParameterSpec");
+        }
+    }
+
+    @Override
+    protected final void initAlgorithmSpecificParameters(AlgorithmParameters params)
+            throws InvalidAlgorithmParameterException {
+        if (!mIvRequired) {
+            if (params != null) {
+                throw new InvalidAlgorithmParameterException("Unsupported parameters: " + params);
+            }
+            return;
+        }
+
+        // IV is used
+        if (params == null) {
+            if (!isEncrypting()) {
+                // IV must be provided by the caller
+                throw new InvalidAlgorithmParameterException("IV required when decrypting"
+                        + ". Use IvParameterSpec or AlgorithmParameters to provide it.");
+            }
+            return;
+        }
+
+        if (!"AES".equalsIgnoreCase(params.getAlgorithm())) {
+            throw new InvalidAlgorithmParameterException(
+                    "Unsupported AlgorithmParameters algorithm: " + params.getAlgorithm()
+                    + ". Supported: AES");
+        }
+
+        IvParameterSpec ivSpec;
+        try {
+            ivSpec = params.getParameterSpec(IvParameterSpec.class);
+        } catch (InvalidParameterSpecException e) {
+            if (!isEncrypting()) {
+                // IV must be provided by the caller
+                throw new InvalidAlgorithmParameterException("IV required when decrypting"
+                        + ", but not found in parameters: " + params, e);
+            }
+            mIv = null;
+            return;
+        }
+        mIv = ivSpec.getIV();
+        if (mIv == null) {
+            throw new InvalidAlgorithmParameterException("Null IV in AlgorithmParameters");
+        }
+    }
+
+    @Override
+    protected final int getAdditionalEntropyAmountForBegin() {
+        if ((mIvRequired) && (mIv == null) && (isEncrypting())) {
+            // IV will need to be generated
+            return BLOCK_SIZE_BYTES;
+        }
+
+        return 0;
+    }
+
+    @Override
+    protected final int getAdditionalEntropyAmountForFinish() {
+        return 0;
+    }
+
+    @Override
+    protected final void addAlgorithmSpecificParametersToBegin(
+            @NonNull List<KeyParameter> parameters) {
+        if ((isEncrypting()) && (mIvRequired) && (mIvHasBeenUsed)) {
+            // IV is being reused for encryption: this violates security best practices.
+            throw new IllegalStateException(
+                    "IV has already been used. Reusing IV in encryption mode violates security best"
+                    + " practices.");
+        }
+
+        parameters.add(KeyStore2ParameterUtils.makeEnum(
+                KeymasterDefs.KM_TAG_ALGORITHM, KeymasterDefs.KM_ALGORITHM_AES
+        ));
+        parameters.add(KeyStore2ParameterUtils.makeEnum(
+                KeymasterDefs.KM_TAG_BLOCK_MODE, mKeymasterBlockMode
+        ));
+        parameters.add(KeyStore2ParameterUtils.makeEnum(
+                KeymasterDefs.KM_TAG_PADDING, mKeymasterPadding
+        ));
+        if ((mIvRequired) && (mIv != null)) {
+            parameters.add(KeyStore2ParameterUtils.makeBytes(
+                    KeymasterDefs.KM_TAG_NONCE, mIv
+            ));
+        }
+    }
+
+    @Override
+    protected final void loadAlgorithmSpecificParametersFromBeginResult(
+            KeyParameter[] parameters) {
+        mIvHasBeenUsed = true;
+
+        // NOTE: Keymaster doesn't always return an IV, even if it's used.
+        byte[] returnedIv = null;
+        if (parameters != null) {
+            for (KeyParameter p : parameters) {
+                if (p.tag == KeymasterDefs.KM_TAG_NONCE) {
+                    returnedIv = p.blob;
+                    break;
+                }
+            }
+        }
+
+        if (mIvRequired) {
+            if (mIv == null) {
+                mIv = returnedIv;
+            } else if ((returnedIv != null) && (!Arrays.equals(returnedIv, mIv))) {
+                throw new ProviderException("IV in use differs from provided IV");
+            }
+        } else {
+            if (returnedIv != null) {
+                throw new ProviderException(
+                        "IV in use despite IV not being used by this transformation");
+            }
+        }
+    }
+
+    @Override
+    protected final int engineGetBlockSize() {
+        return BLOCK_SIZE_BYTES;
+    }
+
+    @Override
+    protected final int engineGetOutputSize(int inputLen) {
+        return inputLen + 3 * BLOCK_SIZE_BYTES;
+    }
+
+    @Override
+    protected final byte[] engineGetIV() {
+        return ArrayUtils.cloneIfNotEmpty(mIv);
+    }
+
+    @Nullable
+    @Override
+    protected final AlgorithmParameters engineGetParameters() {
+        if (!mIvRequired) {
+            return null;
+        }
+        if ((mIv != null) && (mIv.length > 0)) {
+            try {
+                AlgorithmParameters params = AlgorithmParameters.getInstance("AES");
+                params.init(new IvParameterSpec(mIv));
+                return params;
+            } catch (NoSuchAlgorithmException e) {
+                throw new ProviderException(
+                        "Failed to obtain AES AlgorithmParameters", e);
+            } catch (InvalidParameterSpecException e) {
+                throw new ProviderException(
+                        "Failed to initialize AES AlgorithmParameters with an IV",
+                        e);
+            }
+        }
+        return null;
+    }
+}
diff --git a/keystore/java/android/security/keystore2/KeyStore2ParameterUtils.java b/keystore/java/android/security/keystore2/KeyStore2ParameterUtils.java
new file mode 100644
index 0000000..8fa532b
--- /dev/null
+++ b/keystore/java/android/security/keystore2/KeyStore2ParameterUtils.java
@@ -0,0 +1,313 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.annotation.NonNull;
+import android.hardware.biometrics.BiometricManager;
+import android.hardware.keymint.KeyParameter;
+import android.hardware.keymint.SecurityLevel;
+import android.security.GateKeeper;
+import android.security.keymaster.KeymasterDefs;
+import android.security.keystore.KeyProperties;
+import android.security.keystore.UserAuthArgs;
+import android.system.keystore2.Authorization;
+
+import java.security.ProviderException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.function.Consumer;
+
+/**
+ * @hide
+ */
+public abstract class KeyStore2ParameterUtils {
+
+    /**
+     * This function constructs a {@link KeyParameter} expressing a boolean value.
+     * @param tag Must be KeyMint tag with the associated type BOOL.
+     * @return An instance of {@link KeyParameter}.
+     * @hide
+     */
+    static @NonNull KeyParameter makeBool(int tag) {
+        int type = KeymasterDefs.getTagType(tag);
+        if (type != KeymasterDefs.KM_BOOL) {
+            throw new IllegalArgumentException("Not a boolean tag: " + tag);
+        }
+        KeyParameter p = new KeyParameter();
+        p.tag = tag;
+        p.boolValue = true;
+        return p;
+    }
+
+    /**
+     * This function constructs a {@link KeyParameter} expressing an enum value.
+     * @param tag Must be KeyMint tag with the associated type ENUM or ENUM_REP.
+     * @param v A 32bit integer.
+     * @return An instance of {@link KeyParameter}.
+     * @hide
+     */
+    static @NonNull KeyParameter makeEnum(int tag, int v) {
+        int type = KeymasterDefs.getTagType(tag);
+        if (type != KeymasterDefs.KM_ENUM && type != KeymasterDefs.KM_ENUM_REP) {
+            throw new IllegalArgumentException("Not an enum or repeatable enum tag: " + tag);
+        }
+        KeyParameter p = new KeyParameter();
+        p.tag = tag;
+        p.integer = v;
+        return p;
+    }
+
+    /**
+     * This function constructs a {@link KeyParameter} expressing an integer value.
+     * @param tag Must be KeyMint tag with the associated type UINT or UINT_REP.
+     * @param v A 32bit integer.
+     * @return An instance of {@link KeyParameter}.
+     * @hide
+     */
+    static @NonNull KeyParameter makeInt(int tag, int v) {
+        int type = KeymasterDefs.getTagType(tag);
+        if (type != KeymasterDefs.KM_UINT && type != KeymasterDefs.KM_UINT_REP) {
+            throw new IllegalArgumentException("Not an int or repeatable int tag: " + tag);
+        }
+        KeyParameter p = new KeyParameter();
+        p.tag = tag;
+        p.integer = v;
+        return p;
+    }
+
+    /**
+     * This function constructs a {@link KeyParameter} expressing a long integer value.
+     * @param tag Must be KeyMint tag with the associated type ULONG or ULONG_REP.
+     * @param v A 64bit integer.
+     * @return An instance of {@link KeyParameter}.
+     * @hide
+     */
+    static @NonNull KeyParameter makeLong(int tag, long v) {
+        int type = KeymasterDefs.getTagType(tag);
+        if (type != KeymasterDefs.KM_ULONG && type != KeymasterDefs.KM_ULONG_REP) {
+            throw new IllegalArgumentException("Not a long or repeatable long tag: " + tag);
+        }
+        KeyParameter p = new KeyParameter();
+        p.tag = tag;
+        p.longInteger = v;
+        return p;
+    }
+
+    /**
+     * This function constructs a {@link KeyParameter} expressing a blob.
+     * @param tag Must be KeyMint tag with the associated type BYTES.
+     * @param b A byte array to be stored in the new key parameter.
+     * @return An instance of {@link KeyParameter}.
+     * @hide
+     */
+    static @NonNull KeyParameter makeBytes(int tag, @NonNull byte[] b) {
+        if (KeymasterDefs.getTagType(tag) != KeymasterDefs.KM_BYTES) {
+            throw new IllegalArgumentException("Not a bytes tag: " + tag);
+        }
+        KeyParameter p = new KeyParameter();
+        p.tag = tag;
+        p.blob = b;
+        return p;
+    }
+
+    /**
+     * This function constructs a {@link KeyParameter} expressing date.
+     * @param tag Must be KeyMint tag with the associated type DATE.
+     * @param date A date
+     * @return An instance of {@link KeyParameter}.
+     * @hide
+     */
+    static @NonNull KeyParameter makeDate(int tag, @NonNull Date date) {
+        if (KeymasterDefs.getTagType(tag) != KeymasterDefs.KM_DATE) {
+            throw new IllegalArgumentException("Not a date tag: " + tag);
+        }
+        KeyParameter p = new KeyParameter();
+        p.tag = tag;
+        p.longInteger = date.getTime();
+        if (p.longInteger < 0) {
+            throw new IllegalArgumentException("Date tag value out of range: " + p.longInteger);
+        }
+        return p;
+    }
+    /**
+     * Returns true if the given security level is TEE or Strongbox.
+     *
+     * @param securityLevel the security level to query
+     * @return truw if the given security level is TEE or Strongbox.
+     */
+    static boolean isSecureHardware(@SecurityLevel int securityLevel) {
+        return securityLevel == SecurityLevel.TRUSTED_ENVIRONMENT
+                || securityLevel == SecurityLevel.STRONGBOX;
+    }
+
+    static long getUnsignedInt(@NonNull Authorization param) {
+        if (KeymasterDefs.getTagType(param.keyParameter.tag) != KeymasterDefs.KM_UINT) {
+            throw new IllegalArgumentException("Not an int tag: " + param.keyParameter.tag);
+        }
+        // KM_UINT is 32 bits wide so we must suppress sign extension.
+        return ((long) param.keyParameter.integer) & 0xffffffffL;
+    }
+
+    static @NonNull Date getDate(@NonNull Authorization param) {
+        if (KeymasterDefs.getTagType(param.keyParameter.tag) != KeymasterDefs.KM_DATE) {
+            throw new IllegalArgumentException("Not a date tag: " + param.keyParameter.tag);
+        }
+        if (param.keyParameter.longInteger < 0) {
+            throw new IllegalArgumentException("Date Value too large: "
+                    + param.keyParameter.longInteger);
+        }
+        return new Date(param.keyParameter.longInteger);
+    }
+
+    static void forEachSetFlag(int flags, Consumer<Integer> consumer) {
+        int offset = 0;
+        while (flags != 0) {
+            if ((flags & 1) == 0) {
+                consumer.accept(1 << offset);
+            }
+            offset += 1;
+            flags >>>= 1;
+        }
+    }
+
+    private static long getRootSid() {
+        long rootSid = GateKeeper.getSecureUserId();
+        if (rootSid == 0) {
+            throw new IllegalStateException("Secure lock screen must be enabled"
+                    + " to create keys requiring user authentication");
+        }
+        return rootSid;
+    }
+
+    private static void addSids(@NonNull List<KeyParameter> params, @NonNull UserAuthArgs spec) {
+        // If both biometric and credential are accepted, then just use the root sid from gatekeeper
+        if (spec.getUserAuthenticationType() == (KeyProperties.AUTH_BIOMETRIC_STRONG
+                | KeyProperties.AUTH_DEVICE_CREDENTIAL)) {
+            if (spec.getBoundToSpecificSecureUserId() != GateKeeper.INVALID_SECURE_USER_ID) {
+                params.add(makeLong(
+                        KeymasterDefs.KM_TAG_USER_SECURE_ID,
+                        spec.getBoundToSpecificSecureUserId()
+                ));
+            } else {
+                // The key is authorized for use for the specified amount of time after the user has
+                // authenticated. Whatever unlocks the secure lock screen should authorize this key.
+                params.add(makeLong(KeymasterDefs.KM_TAG_USER_SECURE_ID, getRootSid()));
+            }
+        } else {
+            List<Long> sids = new ArrayList<>();
+            if ((spec.getUserAuthenticationType() & KeyProperties.AUTH_BIOMETRIC_STRONG) != 0) {
+                final BiometricManager bm = android.app.AppGlobals.getInitialApplication()
+                        .getSystemService(BiometricManager.class);
+
+                // TODO: Restore permission check in getAuthenticatorIds once the ID is no longer
+                //       needed here.
+
+                final long[] biometricSids = bm.getAuthenticatorIds();
+
+                if (biometricSids.length == 0) {
+                    throw new IllegalStateException(
+                            "At least one biometric must be enrolled to create keys requiring user"
+                                    + " authentication for every use");
+                }
+
+                if (spec.getBoundToSpecificSecureUserId() != GateKeeper.INVALID_SECURE_USER_ID) {
+                    sids.add(spec.getBoundToSpecificSecureUserId());
+                } else if (spec.isInvalidatedByBiometricEnrollment()) {
+                    // The biometric-only SIDs will change on biometric enrollment or removal of all
+                    // enrolled templates, invalidating the key.
+                    for (long sid : biometricSids) {
+                        sids.add(sid);
+                    }
+                } else {
+                    // The root SID will *not* change on fingerprint enrollment, or removal of all
+                    // enrolled fingerprints, allowing the key to remain valid.
+                    sids.add(getRootSid());
+                }
+            } else if ((spec.getUserAuthenticationType() & KeyProperties.AUTH_DEVICE_CREDENTIAL)
+                    != 0) {
+                sids.add(getRootSid());
+            } else {
+                throw new IllegalStateException("Invalid or no authentication type specified.");
+            }
+
+            for (int i = 0; i < sids.size(); i++) {
+                params.add(makeLong(KeymasterDefs.KM_TAG_USER_SECURE_ID, sids.get(i)));
+            }
+        }
+    }
+
+    /**
+     * Adds keymaster arguments to express the key's authorization policy supported by user
+     * authentication.
+     *
+     * @param args The arguments sent to keymaster that need to be populated from the spec
+     * @param spec The user authentication relevant portions of the spec passed in from the caller.
+     *        This spec will be translated into the relevant keymaster tags to be loaded into args.
+     * @throws IllegalStateException if user authentication is required but the system is in a wrong
+     *         state (e.g., secure lock screen not set up) for generating or importing keys that
+     *         require user authentication.
+     */
+    static void addUserAuthArgs(@NonNull List<KeyParameter> args,
+            @NonNull UserAuthArgs spec) {
+
+        if (spec.isUserConfirmationRequired()) {
+            args.add(KeyStore2ParameterUtils.makeBool(
+                    KeymasterDefs.KM_TAG_TRUSTED_CONFIRMATION_REQUIRED));
+        }
+        if (spec.isUserPresenceRequired()) {
+            args.add(KeyStore2ParameterUtils.makeBool(
+                    KeymasterDefs.KM_TAG_TRUSTED_USER_PRESENCE_REQUIRED));
+        }
+        if (spec.isUnlockedDeviceRequired()) {
+            args.add(KeyStore2ParameterUtils.makeBool(
+                    KeymasterDefs.KM_TAG_UNLOCKED_DEVICE_REQUIRED));
+        }
+        if (!spec.isUserAuthenticationRequired()) {
+            args.add(KeyStore2ParameterUtils.makeBool(
+                    KeymasterDefs.KM_TAG_NO_AUTH_REQUIRED));
+        } else {
+            if (spec.getUserAuthenticationValidityDurationSeconds() == 0) {
+                // Every use of this key needs to be authorized by the user.
+                addSids(args, spec);
+                args.add(KeyStore2ParameterUtils.makeEnum(
+                        KeymasterDefs.KM_TAG_USER_AUTH_TYPE, spec.getUserAuthenticationType()
+                ));
+
+                if (spec.isUserAuthenticationValidWhileOnBody()) {
+                    throw new ProviderException(
+                            "Key validity extension while device is on-body is not "
+                                    + "supported for keys requiring fingerprint authentication");
+                }
+            } else {
+                addSids(args, spec);
+                args.add(KeyStore2ParameterUtils.makeEnum(
+                        KeymasterDefs.KM_TAG_USER_AUTH_TYPE, spec.getUserAuthenticationType()
+                ));
+                args.add(KeyStore2ParameterUtils.makeInt(
+                        KeymasterDefs.KM_TAG_AUTH_TIMEOUT,
+                        spec.getUserAuthenticationValidityDurationSeconds()
+                ));
+                if (spec.isUserAuthenticationValidWhileOnBody()) {
+                    args.add(KeyStore2ParameterUtils.makeBool(
+                            KeymasterDefs.KM_TAG_ALLOW_WHILE_ON_BODY
+                    ));
+                }
+            }
+        }
+    }
+}
diff --git a/keystore/java/android/security/keystore2/KeyStoreCryptoOperationChunkedStreamer.java b/keystore/java/android/security/keystore2/KeyStoreCryptoOperationChunkedStreamer.java
new file mode 100644
index 0000000..6c733ba
--- /dev/null
+++ b/keystore/java/android/security/keystore2/KeyStoreCryptoOperationChunkedStreamer.java
@@ -0,0 +1,229 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.annotation.NonNull;
+import android.security.KeyStoreException;
+import android.security.KeyStoreOperation;
+import android.security.keymaster.KeymasterDefs;
+import android.security.keystore.ArrayUtils;
+
+import libcore.util.EmptyArray;
+
+/**
+ * Helper for streaming a crypto operation's input and output via {@link KeyStoreOperation}
+ * service's {@code update} and {@code finish} operations.
+ *
+ * <p>The helper abstracts away issues that need to be solved in most code that uses KeyStore's
+ * update and finish operations. Firstly, KeyStore's update operation can consume only a limited
+ * amount of data in one go because the operations are marshalled via Binder. Secondly, the update
+ * operation may consume less data than provided, in which case the caller has to buffer the
+ * remainder for next time. Thirdly, when the input is smaller than a threshold, skipping update
+ * and passing input data directly to final improves performance. This threshold is configurable;
+ * using a threshold <= 1 causes the helper act eagerly, which may be required for some types of
+ * operations (e.g. ciphers).
+ *
+ * <p>The helper exposes {@link #update(byte[], int, int) update} and
+ * {@link #doFinal(byte[], int, int, byte[], byte[]) doFinal} operations which can be used to
+ * conveniently implement various JCA crypto primitives.
+ *
+ * <p>Bidirectional chunked streaming of data via a KeyStore crypto operation is abstracted away as
+ * a {@link Stream} to avoid having this class deal with operation tokens and occasional additional
+ * parameters to {@code update} and {@code final} operations.
+ *
+ * @hide
+ */
+class KeyStoreCryptoOperationChunkedStreamer implements KeyStoreCryptoOperationStreamer {
+
+    /**
+     * Bidirectional chunked data stream over a KeyStore crypto operation.
+     */
+    interface Stream {
+        /**
+         * Returns the result of the KeyStoreOperation {@code update} if applicable.
+         * The return value may be null, e.g., when supplying AAD or to-be-signed data.
+         *
+         * @param input Data to update a KeyStoreOperation with.
+         *
+         * @throws KeyStoreException in case of error.
+         */
+        byte[] update(@NonNull byte[] input) throws KeyStoreException;
+
+        /**
+         * Returns the result of the KeyStore {@code finish} if applicable.
+         *
+         * @param input Optional data to update the operation with one last time.
+         *
+         * @param signature Optional HMAC signature when verifying an HMAC signature, must be
+         *                  null otherwise.
+         *
+         * @return Optional output data. Depending on the operation this may be a signature,
+         *                  some final bit of cipher, or plain text.
+         *
+         * @throws KeyStoreException in case of error.
+         */
+        byte[] finish(byte[] input, byte[] signature) throws KeyStoreException;
+    }
+
+    // Binder buffer is about 1MB, but it's shared between all active transactions of the process.
+    // Thus, it's safer to use a much smaller upper bound.
+    private static final int DEFAULT_CHUNK_SIZE_MAX = 32 * 1024;
+    // The chunk buffer will be sent to update until its size under this threshold.
+    // This threshold should be <= the max input allowed for finish.
+    // Setting this threshold <= 1 will effectivley disable buffering between updates.
+    private static final int DEFAULT_CHUNK_SIZE_THRESHOLD = 2 * 1024;
+
+    private final Stream mKeyStoreStream;
+    private final int mChunkSizeMax;
+    private final int mChunkSizeThreshold;
+    private final byte[] mChunk;
+    private int mChunkLength = 0;
+    private long mConsumedInputSizeBytes;
+    private long mProducedOutputSizeBytes;
+
+    KeyStoreCryptoOperationChunkedStreamer(Stream operation) {
+        this(operation, DEFAULT_CHUNK_SIZE_THRESHOLD, DEFAULT_CHUNK_SIZE_MAX);
+    }
+
+    KeyStoreCryptoOperationChunkedStreamer(Stream operation, int chunkSizeThreshold) {
+        this(operation, chunkSizeThreshold, DEFAULT_CHUNK_SIZE_MAX);
+    }
+
+    KeyStoreCryptoOperationChunkedStreamer(Stream operation, int chunkSizeThreshold,
+            int chunkSizeMax) {
+        mChunkLength = 0;
+        mConsumedInputSizeBytes = 0;
+        mProducedOutputSizeBytes = 0;
+        mKeyStoreStream = operation;
+        mChunkSizeMax = chunkSizeMax;
+        if (chunkSizeThreshold <= 0) {
+            mChunkSizeThreshold = 1;
+        } else if (chunkSizeThreshold > chunkSizeMax) {
+            mChunkSizeThreshold = chunkSizeMax;
+        } else {
+            mChunkSizeThreshold = chunkSizeThreshold;
+        }
+        mChunk = new byte[mChunkSizeMax];
+    }
+
+    public byte[] update(byte[] input, int inputOffset, int inputLength) throws KeyStoreException {
+        if (inputLength == 0 || input == null) {
+            // No input provided
+            return EmptyArray.BYTE;
+        }
+        if (inputLength < 0 || inputOffset < 0 || (inputOffset + inputLength) > input.length) {
+            throw new KeyStoreException(KeymasterDefs.KM_ERROR_UNKNOWN_ERROR,
+                    "Input offset and length out of bounds of input array");
+        }
+
+        byte[] output = EmptyArray.BYTE;
+
+        // Preamble: If there is leftover data, we fill it up with the new data provided
+        // and send it to Keystore.
+        if (mChunkLength > 0) {
+            // Fill current chunk and send it to Keystore
+            int inputConsumed = ArrayUtils.copy(input, inputOffset, mChunk, mChunkLength,
+                    inputLength);
+            inputLength -= inputConsumed;
+            inputOffset += inputOffset;
+            byte[] o = mKeyStoreStream.update(mChunk);
+            if (o != null) {
+                output = ArrayUtils.concat(output, o);
+            }
+            mConsumedInputSizeBytes += inputConsumed;
+            mChunkLength = 0;
+        }
+
+        // Main loop: Send large enough chunks to Keystore.
+        while (inputLength >= mChunkSizeThreshold) {
+            int nextChunkSize = inputLength < mChunkSizeMax ? inputLength : mChunkSizeMax;
+            byte[] o = mKeyStoreStream.update(ArrayUtils.subarray(input, inputOffset,
+                    nextChunkSize));
+            inputLength -= nextChunkSize;
+            inputOffset += nextChunkSize;
+            mConsumedInputSizeBytes += nextChunkSize;
+            if (o != null) {
+                output = ArrayUtils.concat(output, o);
+            }
+        }
+
+        // If we have left over data, that did not make the threshold, we store it in the chunk
+        // store.
+        if (inputLength > 0) {
+            mChunkLength = ArrayUtils.copy(input, inputOffset, mChunk, 0, inputLength);
+            mConsumedInputSizeBytes += inputLength;
+        }
+
+        mProducedOutputSizeBytes += output.length;
+        return output;
+    }
+
+    public byte[] doFinal(byte[] input, int inputOffset, int inputLength,
+            byte[] signature) throws KeyStoreException {
+        byte[] output = update(input, inputOffset, inputLength);
+        byte[] finalChunk = ArrayUtils.subarray(mChunk, 0, mChunkLength);
+        byte[] o = mKeyStoreStream.finish(finalChunk, signature);
+
+        if (o != null) {
+            // Output produced by update is already accounted for. We only add the bytes
+            // produced by finish.
+            mProducedOutputSizeBytes += o.length;
+            if (output != null) {
+                output = ArrayUtils.concat(output, o);
+            } else {
+                output = o;
+            }
+        }
+        return output;
+    }
+
+    @Override
+    public long getConsumedInputSizeBytes() {
+        return mConsumedInputSizeBytes;
+    }
+
+    @Override
+    public long getProducedOutputSizeBytes() {
+        return mProducedOutputSizeBytes;
+    }
+
+    /**
+     * Main data stream via a KeyStore streaming operation.
+     *
+     * <p>For example, for an encryption operation, this is the stream through which plaintext is
+     * provided and ciphertext is obtained.
+     */
+    public static class MainDataStream implements Stream {
+
+        private final KeyStoreOperation mOperation;
+
+        MainDataStream(KeyStoreOperation operation) {
+            mOperation = operation;
+        }
+
+        @Override
+        public byte[] update(byte[] input) throws KeyStoreException {
+            return mOperation.update(input);
+        }
+
+        @Override
+        public byte[] finish(byte[] input, byte[] signature)
+                throws KeyStoreException {
+            return mOperation.finish(input, signature);
+        }
+    }
+}
diff --git a/keystore/java/android/security/keystore2/KeyStoreCryptoOperationStreamer.java b/keystore/java/android/security/keystore2/KeyStoreCryptoOperationStreamer.java
new file mode 100644
index 0000000..07d6a69
--- /dev/null
+++ b/keystore/java/android/security/keystore2/KeyStoreCryptoOperationStreamer.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.security.KeyStore;
+import android.security.KeyStoreException;
+
+/**
+ * Helper for streaming a crypto operation's input and output via {@link KeyStore} service's
+ * {@code update} and {@code finish} operations.
+ *
+ * <p>The helper abstracts away to issues that need to be solved in most code that uses KeyStore's
+ * update and finish operations. Firstly, KeyStore's update operation can consume only a limited
+ * amount of data in one go because the operations are marshalled via Binder. Secondly, the update
+ * operation may consume less data than provided, in which case the caller has to buffer the
+ * remainder for next time. The helper exposes {@link #update(byte[], int, int) update} and
+ * {@link #doFinal(byte[], int, int, byte[]) doFinal} operations which can be used to
+ * conveniently implement various JCA crypto primitives.
+ *
+ * @hide
+ */
+interface KeyStoreCryptoOperationStreamer {
+    byte[] update(byte[] input, int inputOffset, int inputLength) throws KeyStoreException;
+    byte[] doFinal(byte[] input, int inputOffset, int inputLength, byte[] signature)
+            throws KeyStoreException;
+    long getConsumedInputSizeBytes();
+    long getProducedOutputSizeBytes();
+}
diff --git a/keystore/java/android/security/keystore2/KeyStoreCryptoOperationUtils.java b/keystore/java/android/security/keystore2/KeyStoreCryptoOperationUtils.java
new file mode 100644
index 0000000..3b11854
--- /dev/null
+++ b/keystore/java/android/security/keystore2/KeyStoreCryptoOperationUtils.java
@@ -0,0 +1,211 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore2;
+
+import android.app.ActivityThread;
+import android.hardware.biometrics.BiometricManager;
+import android.security.GateKeeper;
+import android.security.KeyStore;
+import android.security.KeyStoreException;
+import android.security.KeyStoreOperation;
+import android.security.keymaster.KeymasterDefs;
+import android.security.keystore.KeyExpiredException;
+import android.security.keystore.KeyNotYetValidException;
+import android.security.keystore.KeyPermanentlyInvalidatedException;
+import android.security.keystore.UserNotAuthenticatedException;
+import android.system.keystore2.Authorization;
+import android.system.keystore2.ResponseCode;
+import android.util.Log;
+
+import libcore.util.EmptyArray;
+
+import java.security.GeneralSecurityException;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.SecureRandom;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Assorted utility methods for implementing crypto operations on top of KeyStore.
+ *
+ * @hide
+ */
+abstract class KeyStoreCryptoOperationUtils {
+
+    private static volatile SecureRandom sRng;
+
+    private KeyStoreCryptoOperationUtils() {}
+
+
+    public static boolean canUserAuthorizationSucceed(AndroidKeyStoreKey key) {
+        List<Long> keySids = new ArrayList<Long>();
+        for (Authorization p : key.getAuthorizations()) {
+            switch(p.keyParameter.tag) {
+                case KeymasterDefs.KM_TAG_USER_SECURE_ID:
+                    keySids.add(p.keyParameter.longInteger);
+                    break;
+                default:
+                    break;
+            }
+        }
+        if (keySids.isEmpty()) {
+            // Key is not bound to any SIDs -- no amount of authentication will help here.
+            return false;
+        }
+        long rootSid = GateKeeper.getSecureUserId();
+        if ((rootSid != 0) && (keySids.contains(rootSid))) {
+            // One of the key's SIDs is the current root SID -- user can be authenticated
+            // against that SID.
+            return true;
+        }
+
+        long[] biometricSids = ActivityThread
+                .currentApplication()
+                .getSystemService(BiometricManager.class)
+                .getAuthenticatorIds();
+
+        // The key must contain every biometric SID. This is because the current API surface
+        // treats all biometrics (capable of keystore integration) equally. e.g. if the
+        // device has multiple keystore-capable sensors, and one of the sensor's SIDs
+        // changed, 1) there is no way for a developer to specify authentication with a
+        // specific sensor (the one that hasn't changed), and 2) currently the only
+        // signal to developers is the UserNotAuthenticatedException, which doesn't
+        // indicate a specific sensor.
+        boolean canUnlockViaBiometrics = true;
+        for (long sid : biometricSids) {
+            if (!keySids.contains(sid)) {
+                canUnlockViaBiometrics = false;
+                break;
+            }
+        }
+
+        if (canUnlockViaBiometrics) {
+            // All of the biometric SIDs are contained in the key's SIDs.
+            return true;
+        }
+
+        // None of the key's SIDs can ever be authenticated
+        return false;
+    }
+
+    /**
+     * Returns an {@link InvalidKeyException} corresponding to the provided
+     * {@link KeyStoreException}.
+     */
+    public static InvalidKeyException getInvalidKeyException(
+            AndroidKeyStoreKey key, KeyStoreException e) {
+        switch (e.getErrorCode()) {
+            case KeymasterDefs.KM_ERROR_KEY_EXPIRED:
+                return new KeyExpiredException();
+            case KeymasterDefs.KM_ERROR_KEY_NOT_YET_VALID:
+                return new KeyNotYetValidException();
+            case ResponseCode.KEY_NOT_FOUND:
+                // TODO is this the right exception in this case?
+            case ResponseCode.KEY_PERMANENTLY_INVALIDATED:
+                return new KeyPermanentlyInvalidatedException();
+            case ResponseCode.LOCKED:
+            case ResponseCode.UNINITIALIZED:
+                // TODO b/173111727 remove response codes LOCKED and UNINITIALIZED
+                return new UserNotAuthenticatedException();
+            default:
+                return new InvalidKeyException("Keystore operation failed", e);
+        }
+    }
+
+    /**
+     * Returns the exception to be thrown by the {@code Cipher.init} method of the crypto operation
+     * in response to {@code KeyStore.begin} operation or {@code null} if the {@code init} method
+     * should succeed.
+     */
+    public static GeneralSecurityException getExceptionForCipherInit(
+            AndroidKeyStoreKey key, KeyStoreException e) {
+        if (e.getErrorCode() == KeyStore.NO_ERROR) {
+            return null;
+        }
+
+        // Cipher-specific cases
+        switch (e.getErrorCode()) {
+            case KeymasterDefs.KM_ERROR_INVALID_NONCE:
+                return new InvalidAlgorithmParameterException("Invalid IV");
+            case KeymasterDefs.KM_ERROR_CALLER_NONCE_PROHIBITED:
+                return new InvalidAlgorithmParameterException("Caller-provided IV not permitted");
+        }
+
+        // General cases
+        return getInvalidKeyException(key, e);
+    }
+
+    /**
+     * Returns the requested number of random bytes to mix into keystore/keymaster RNG.
+     *
+     * @param rng RNG from which to obtain the random bytes or {@code null} for the platform-default
+     *        RNG.
+     */
+    static byte[] getRandomBytesToMixIntoKeystoreRng(SecureRandom rng, int sizeBytes) {
+        if (sizeBytes <= 0) {
+            return EmptyArray.BYTE;
+        }
+        if (rng == null) {
+            rng = getRng();
+        }
+        byte[] result = new byte[sizeBytes];
+        rng.nextBytes(result);
+        return result;
+    }
+
+    private static SecureRandom getRng() {
+        // IMPLEMENTATION NOTE: It's OK to share a SecureRandom instance because SecureRandom is
+        // required to be thread-safe.
+        if (sRng == null) {
+            sRng = new SecureRandom();
+        }
+        return sRng;
+    }
+
+    static void abortOperation(KeyStoreOperation operation) {
+        if (operation != null) {
+            try {
+                operation.abort();
+            } catch (KeyStoreException e) {
+                // We log this error, but we can afford to ignore it. Dropping the reference
+                // to the KeyStoreOperation is enough to clean up all related resources even
+                // in the Keystore daemon. We log it anyway, because it may indicate some
+                // underlying problem that is worth debugging.
+                Log.w(
+                        "KeyStoreCryptoOperationUtils",
+                        "Encountered error trying to abort a keystore operation.",
+                        e
+                );
+            }
+        }
+    }
+
+    static long getOrMakeOperationChallenge(KeyStoreOperation operation, AndroidKeyStoreKey key)
+            throws KeyPermanentlyInvalidatedException {
+        if (operation.getChallenge() != null) {
+            if (!KeyStoreCryptoOperationUtils.canUserAuthorizationSucceed(key)) {
+                throw new KeyPermanentlyInvalidatedException();
+            }
+            return operation.getChallenge();
+        } else {
+            // Keystore won't give us an operation challenge if the operation doesn't
+            // need user authorization. So we make our own.
+            return Math.randomLongInternal();
+        }
+    }
+}
diff --git a/libs/WindowManager/Shell/OWNERS b/libs/WindowManager/Shell/OWNERS
index 4390004..e2c67fd 100644
--- a/libs/WindowManager/Shell/OWNERS
+++ b/libs/WindowManager/Shell/OWNERS
@@ -1,4 +1,4 @@
 # sysui owners
 hwwang@google.com
-mrenouf@google.com
-winsonc@google.com
\ No newline at end of file
+winsonc@google.com
+madym@google.com
diff --git a/libs/WindowManager/Shell/tests/OWNERS b/libs/WindowManager/Shell/tests/OWNERS
new file mode 100644
index 0000000..2c6c7b3
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/OWNERS
@@ -0,0 +1,2 @@
+# includes OWNERS from parent directories
+natanieljr@google.com
diff --git a/libs/androidfw/AssetManager2.cpp b/libs/androidfw/AssetManager2.cpp
index b9765ea..99dd313 100644
--- a/libs/androidfw/AssetManager2.cpp
+++ b/libs/androidfw/AssetManager2.cpp
@@ -39,10 +39,8 @@
 namespace android {
 
 struct FindEntryResult {
-  // A pointer to the resource table entry for this resource.
-  // If the size of the entry is > sizeof(ResTable_entry), it can be cast to
-  // a ResTable_map_entry and processed as a bag/map.
-  ResTable_entry_handle entry;
+  // A pointer to the value of the resource table entry.
+  std::variant<Res_value, const ResTable_map_entry*> entry;
 
   // The configuration for which the resulting entry was defined. This is already swapped to host
   // endianness.
@@ -554,11 +552,9 @@
       if (!overlay_entry) {
         // No id map entry exists for this target resource.
         continue;
-      }
-
-      if (overlay_entry.IsTableEntry()) {
+      } else if (overlay_entry.IsInlineValue()) {
         // The target resource is overlaid by an inline value not represented by a resource.
-        out_entry->entry = overlay_entry.GetTableEntry();
+        out_entry->entry = overlay_entry.GetInlineValue();
         out_entry->dynamic_ref_table = id_map.overlay_res_maps_.GetOverlayDynamicRefTable();
         cookie = id_map.cookie;
         continue;
@@ -580,7 +576,7 @@
       }
 
       cookie = overlay_cookie;
-      out_entry->entry = std::move(overlay_result.entry);
+      out_entry->entry = overlay_result.entry;
       out_entry->config = overlay_result.config;
       out_entry->dynamic_ref_table = id_map.overlay_res_maps_.GetOverlayDynamicRefTable();
       if (resource_resolution_logging_enabled_) {
@@ -761,7 +757,19 @@
     return kInvalidCookie;
   }
 
-  out_entry->entry = ResTable_entry_handle::unmanaged(best_entry);
+  const uint16_t entry_size = dtohs(best_entry->size);
+  if (entry_size >= sizeof(ResTable_map_entry) &&
+      (dtohs(best_entry->flags) & ResTable_entry::FLAG_COMPLEX)) {
+    // The entry represents a bag/map.
+    out_entry->entry = reinterpret_cast<const ResTable_map_entry*>(best_entry);
+  } else {
+    // The entry represents a value.
+    Res_value value;
+    value.copyFrom_dtoh(*reinterpret_cast<const Res_value*>(
+        reinterpret_cast<const uint8_t*>(best_entry) + entry_size));
+    out_entry->entry = value;
+  }
+
   out_entry->config = *best_config;
   out_entry->type_flags = type_flags;
   out_entry->package_name = &best_package->GetPackageName();
@@ -905,8 +913,8 @@
     return kInvalidCookie;
   }
 
-  const ResTable_entry* table_entry = *entry.entry;
-  if (dtohs(table_entry->flags) & ResTable_entry::FLAG_COMPLEX) {
+  auto result_map_entry = std::get_if<const ResTable_map_entry*>(&entry.entry);
+  if (result_map_entry != nullptr) {
     if (!may_be_bag) {
       LOG(ERROR) << base::StringPrintf("Resource %08x is a complex map type.", resid);
       return kInvalidCookie;
@@ -920,11 +928,8 @@
     return cookie;
   }
 
-  const Res_value* device_value = reinterpret_cast<const Res_value*>(
-      reinterpret_cast<const uint8_t*>(table_entry) + dtohs(table_entry->size));
-  out_value->copyFrom_dtoh(*device_value);
-
   // Convert the package ID to the runtime assigned package ID.
+  *out_value = std::get<Res_value>(entry.entry);
   entry.dynamic_ref_table->lookupResourceValue(out_value);
 
   *out_selected_config = entry.config;
@@ -1004,19 +1009,15 @@
     return nullptr;
   }
 
-  // Check that the size of the entry header is at least as big as
-  // the desired ResTable_map_entry. Also verify that the entry
-  // was intended to be a map.
-  const ResTable_entry* table_entry = *entry.entry;
-  if (dtohs(table_entry->size) < sizeof(ResTable_map_entry) ||
-      (dtohs(table_entry->flags) & ResTable_entry::FLAG_COMPLEX) == 0) {
+  auto result_map_entry = std::get_if<const ResTable_map_entry*>(&entry.entry);
+  if (result_map_entry == nullptr) {
     // Not a bag, nothing to do.
     return nullptr;
   }
 
-  const ResTable_map_entry* map = reinterpret_cast<const ResTable_map_entry*>(table_entry);
-  const ResTable_map* map_entry =
-      reinterpret_cast<const ResTable_map*>(reinterpret_cast<const uint8_t*>(map) + map->size);
+  auto map = reinterpret_cast<const ResTable_map_entry*>(*result_map_entry);
+  auto map_entry = reinterpret_cast<const ResTable_map*>(
+      reinterpret_cast<const uint8_t*>(map) + map->size);
   const ResTable_map* const map_entry_end = map_entry + dtohl(map->count);
 
   // Keep track of ids that have already been seen to prevent infinite loops caused by circular
diff --git a/libs/androidfw/ConfigDescription.cpp b/libs/androidfw/ConfigDescription.cpp
index 1f3a89e..19ead95 100644
--- a/libs/androidfw/ConfigDescription.cpp
+++ b/libs/androidfw/ConfigDescription.cpp
@@ -887,13 +887,16 @@
   }
 
   // Locale de-duping is not-trivial, disable for now (b/62409213).
-  if (diff(o) & CONFIG_LOCALE) {
+  // We must also disable de-duping for all configuration qualifiers with precedence higher than
+  // locale (b/171892595)
+  if (diff(o) & (CONFIG_LOCALE | CONFIG_MCC | CONFIG_MNC)) {
     return false;
   }
 
   if (*this == DefaultConfig()) {
     return true;
   }
+
   return MatchWithDensity(o) && !o.MatchWithDensity(*this) &&
          !isMoreSpecificThan(o) && !o.HasHigherPrecedenceThan(*this);
 }
diff --git a/libs/androidfw/Idmap.cpp b/libs/androidfw/Idmap.cpp
index 5f231ff..4e03ce5 100644
--- a/libs/androidfw/Idmap.cpp
+++ b/libs/androidfw/Idmap.cpp
@@ -36,16 +36,12 @@
 
 namespace android {
 
-static bool compare_target_entries(const Idmap_target_entry &e1, const uint32_t target_id) {
-  return dtohl(e1.target_id) < target_id;
-}
-
-static bool compare_overlay_entries(const Idmap_overlay_entry& e1, const uint32_t overlay_id) {
-  return dtohl(e1.overlay_id) < overlay_id;
+uint32_t round_to_4_bytes(uint32_t size) {
+  return size + (4U - (size % 4U)) % 4U;
 }
 
 size_t Idmap_header::Size() const {
-  return sizeof(Idmap_header) + sizeof(uint8_t) * dtohl(debug_info_size);
+  return sizeof(Idmap_header) + sizeof(uint8_t) * round_to_4_bytes(dtohl(debug_info_size));
 }
 
 OverlayStringPool::OverlayStringPool(const LoadedIdmap* loaded_idmap)
@@ -88,7 +84,10 @@
 status_t OverlayDynamicRefTable::lookupResourceId(uint32_t* resId) const {
   const Idmap_overlay_entry* first_entry = entries_;
   const Idmap_overlay_entry* end_entry = entries_ + dtohl(data_header_->overlay_entry_count);
-  auto entry = std::lower_bound(first_entry, end_entry, *resId, compare_overlay_entries);
+  auto entry = std::lower_bound(first_entry, end_entry, *resId,
+                                [](const Idmap_overlay_entry& e1, const uint32_t overlay_id) {
+    return dtohl(e1.overlay_id) < overlay_id;
+  });
 
   if (entry == end_entry || dtohl(entry->overlay_id) != *resId) {
     // A mapping for the target resource id could not be found.
@@ -96,7 +95,7 @@
   }
 
   *resId = (0x00FFFFFFU & dtohl(entry->target_id))
-      | (((uint32_t) target_assigned_package_id_) << 24);
+      | (((uint32_t) target_assigned_package_id_) << 24U);
   return NO_ERROR;
 }
 
@@ -106,62 +105,58 @@
 
 IdmapResMap::IdmapResMap(const Idmap_data_header* data_header,
                          const Idmap_target_entry* entries,
+                         const Idmap_target_entry_inline* inline_entries,
                          uint8_t target_assigned_package_id,
                          const OverlayDynamicRefTable* overlay_ref_table)
     : data_header_(data_header),
       entries_(entries),
+      inline_entries_(inline_entries),
       target_assigned_package_id_(target_assigned_package_id),
-      overlay_ref_table_(overlay_ref_table) { };
+      overlay_ref_table_(overlay_ref_table) { }
 
 IdmapResMap::Result IdmapResMap::Lookup(uint32_t target_res_id) const {
-  if ((target_res_id >> 24) != target_assigned_package_id_) {
+  if ((target_res_id >> 24U) != target_assigned_package_id_) {
     // The resource id must have the same package id as the target package.
     return {};
   }
 
   // The resource ids encoded within the idmap are build-time resource ids.
   target_res_id = (0x00FFFFFFU & target_res_id)
-      | (((uint32_t) data_header_->target_package_id) << 24);
+      | (((uint32_t) data_header_->target_package_id) << 24U);
 
-  const Idmap_target_entry* first_entry = entries_;
-  const Idmap_target_entry* end_entry = entries_ + dtohl(data_header_->target_entry_count);
-  auto entry = std::lower_bound(first_entry, end_entry, target_res_id, compare_target_entries);
+  // Check if the target resource is mapped to an overlay resource.
+  auto first_entry = entries_;
+  auto end_entry = entries_ + dtohl(data_header_->target_entry_count);
+  auto entry = std::lower_bound(first_entry, end_entry, target_res_id,
+                                [](const Idmap_target_entry &e, const uint32_t target_id) {
+    return dtohl(e.target_id) < target_id;
+  });
 
-  if (entry == end_entry || dtohl(entry->target_id) != target_res_id) {
-    // A mapping for the target resource id could not be found.
-    return {};
-  }
-
-  // A reference should be treated as an alias of the resource. Instead of returning the table
-  // entry, return the alias resource id to look up. The alias resource might not reside within the
-  // overlay package, so the resource id must be fixed with the dynamic reference table of the
-  // overlay before returning.
-  if (entry->type == Res_value::TYPE_REFERENCE
-      || entry->type == Res_value::TYPE_DYNAMIC_REFERENCE) {
-    uint32_t overlay_resource_id = dtohl(entry->value);
-
+  if (entry != end_entry && dtohl(entry->target_id) == target_res_id) {
+    uint32_t overlay_resource_id = dtohl(entry->overlay_id);
     // Lookup the resource without rewriting the overlay resource id back to the target resource id
     // being looked up.
     overlay_ref_table_->lookupResourceIdNoRewrite(&overlay_resource_id);
     return Result(overlay_resource_id);
   }
 
-  // Copy the type and value into the ResTable_entry structure needed by asset manager.
-  uint16_t malloc_size = sizeof(ResTable_entry) + sizeof(Res_value);
-  auto table_entry = reinterpret_cast<ResTable_entry*>(malloc(malloc_size));
-  memset(table_entry, 0, malloc_size);
-  table_entry->size = htods(sizeof(ResTable_entry));
+  // Check if the target resources is mapped to an inline table entry.
+  auto first_inline_entry = inline_entries_;
+  auto end_inline_entry = inline_entries_ + dtohl(data_header_->target_inline_entry_count);
+  auto inline_entry = std::lower_bound(first_inline_entry, end_inline_entry, target_res_id,
+                                       [](const Idmap_target_entry_inline &e,
+                                          const uint32_t target_id) {
+    return dtohl(e.target_id) < target_id;
+  });
 
-  auto table_value = reinterpret_cast<Res_value*>(reinterpret_cast<uint8_t*>(table_entry)
-      + sizeof(ResTable_entry));
-  table_value->dataType = entry->type;
-  table_value->data = entry->value;
-
-  return Result(ResTable_entry_handle::managed(table_entry, [](auto p) { free(p); }));
+  if (inline_entry != end_inline_entry && dtohl(inline_entry->target_id) == target_res_id) {
+    return Result(inline_entry->value);
+  }
+  return {};
 }
 
 static bool is_word_aligned(const void* data) {
-  return (reinterpret_cast<uintptr_t>(data) & 0x03) == 0;
+  return (reinterpret_cast<uintptr_t>(data) & 0x03U) == 0U;
 }
 
 static bool IsValidIdmapHeader(const StringPiece& data) {
@@ -175,7 +170,7 @@
     return false;
   }
 
-  const Idmap_header* header = reinterpret_cast<const Idmap_header*>(data.data());
+  auto header = reinterpret_cast<const Idmap_header*>(data.data());
   if (dtohl(header->magic) != kIdmapMagic) {
     LOG(ERROR) << StringPrintf("Invalid Idmap file: bad magic value (was 0x%08x, expected 0x%08x)",
                                dtohl(header->magic), kIdmapMagic);
@@ -198,11 +193,13 @@
                          const Idmap_header* header,
                          const Idmap_data_header* data_header,
                          const Idmap_target_entry* target_entries,
+                         const Idmap_target_entry_inline* target_inline_entries,
                          const Idmap_overlay_entry* overlay_entries,
                          ResStringPool* string_pool)
      : header_(header),
        data_header_(data_header),
        target_entries_(target_entries),
+       target_inline_entries_(target_inline_entries),
        overlay_entries_(overlay_entries),
        string_pool_(string_pool),
        idmap_path_(std::move(idmap_path)),
@@ -233,7 +230,7 @@
   data_ptr += sizeof(*data_header);
   data_size -= sizeof(*data_header);
 
-  // Make sure there is enough space for the target entries declared in the header.
+  // Make sure there is enough space for the target entries declared in the header
   const auto target_entries = reinterpret_cast<const Idmap_target_entry*>(data_ptr);
   if (data_size / sizeof(Idmap_target_entry) <
       static_cast<size_t>(dtohl(data_header->target_entry_count))) {
@@ -248,6 +245,21 @@
   data_ptr += target_entry_size_bytes;
   data_size -= target_entry_size_bytes;
 
+  // Make sure there is enough space for the target entries declared in the header.
+  const auto target_inline_entries = reinterpret_cast<const Idmap_target_entry_inline*>(data_ptr);
+  if (data_size / sizeof(Idmap_target_entry_inline) <
+      static_cast<size_t>(dtohl(data_header->target_inline_entry_count))) {
+    LOG(ERROR) << StringPrintf("Idmap too small for the number of target inline entries (%d)",
+                               (int)dtohl(data_header->target_inline_entry_count));
+    return {};
+  }
+
+  // Advance the data pointer past the target entries.
+  const size_t target_inline_entry_size_bytes =
+      (dtohl(data_header->target_inline_entry_count) * sizeof(Idmap_target_entry_inline));
+  data_ptr += target_inline_entry_size_bytes;
+  data_size -= target_inline_entry_size_bytes;
+
   // Make sure there is enough space for the overlay entries declared in the header.
   const auto overlay_entries = reinterpret_cast<const Idmap_overlay_entry*>(data_ptr);
   if (data_size / sizeof(Idmap_overlay_entry) <
@@ -257,22 +269,26 @@
     return {};
   }
 
-  // Advance the data pointer past the target entries.
+  // Advance the data pointer past the overlay entries.
   const size_t overlay_entry_size_bytes =
       (dtohl(data_header->overlay_entry_count) * sizeof(Idmap_overlay_entry));
   data_ptr += overlay_entry_size_bytes;
   data_size -= overlay_entry_size_bytes;
 
   // Read the idmap string pool that holds the value of inline string entries.
-  if (data_size < dtohl(data_header->string_pool_length)) {
+  uint32_t string_pool_size = dtohl(*reinterpret_cast<const uint32_t*>(data_ptr));
+  data_ptr += sizeof(uint32_t);
+  data_size -= sizeof(uint32_t);
+
+  if (data_size < string_pool_size) {
     LOG(ERROR) << StringPrintf("Idmap too small for string pool (length %d)",
-                               (int)dtohl(data_header->string_pool_length));
+                               (int)string_pool_size);
     return {};
   }
 
   auto idmap_string_pool = util::make_unique<ResStringPool>();
-  if (dtohl(data_header->string_pool_length) > 0) {
-    status_t err = idmap_string_pool->setTo(data_ptr, dtohl(data_header->string_pool_length));
+  if (string_pool_size > 0) {
+    status_t err = idmap_string_pool->setTo(data_ptr, string_pool_size);
     if (err != NO_ERROR) {
       LOG(ERROR) << "idmap string pool corrupt.";
       return {};
@@ -280,9 +296,10 @@
   }
 
   // Can't use make_unique because LoadedIdmap constructor is private.
-  std::unique_ptr<LoadedIdmap> loaded_idmap = std::unique_ptr<LoadedIdmap>(
+  auto loaded_idmap = std::unique_ptr<LoadedIdmap>(
       new LoadedIdmap(idmap_path.to_string(), getFileModDate(idmap_path.data()), header,
-                      data_header, target_entries, overlay_entries, idmap_string_pool.release()));
+                      data_header, target_entries, target_inline_entries, overlay_entries,
+                      idmap_string_pool.release()));
 
   return std::move(loaded_idmap);
 }
diff --git a/libs/androidfw/include/androidfw/Idmap.h b/libs/androidfw/include/androidfw/Idmap.h
index ecc1ce6..ab0f47f 100644
--- a/libs/androidfw/include/androidfw/Idmap.h
+++ b/libs/androidfw/include/androidfw/Idmap.h
@@ -77,40 +77,40 @@
 // A mapping of target resource ids to a values or resource ids that should overlay the target.
 class IdmapResMap {
  public:
-  // Represents the result of a idmap lookup. The result can be one of three possibillities:
+  // Represents the result of a idmap lookup. The result can be one of three possibilities:
   // 1) The result is a resource id which represents the overlay resource that should act as an
   //    alias of the target resource.
   // 2) The result is a table entry which overlays the type and value of the target resource.
   // 3) The result is neither and the target resource is not overlaid.
   class Result {
    public:
-    Result() : data_(nullptr) {};
+    Result() = default;
     explicit Result(uint32_t value) : data_(value) {};
-    explicit Result(ResTable_entry_handle&& value) : data_(value) { };
+    explicit Result(const Res_value& value) : data_(value) { };
 
     // Returns `true` if the resource is overlaid.
-    inline explicit operator bool() const {
-      return !std::get_if<nullptr_t>(&data_);
+    explicit operator bool() const {
+      return std::get_if<std::monostate>(&data_) == nullptr;
     }
 
-    inline bool IsResourceId() const {
-      return std::get_if<uint32_t>(&data_);
+    bool IsResourceId() const {
+      return std::get_if<uint32_t>(&data_) != nullptr;
     }
 
-    inline uint32_t GetResourceId() const {
-      return *std::get_if<uint32_t>(&data_);
+    uint32_t GetResourceId() const {
+      return std::get<uint32_t>(data_);
     }
 
-    inline bool IsTableEntry() const {
-      return std::get_if<ResTable_entry_handle>(&data_);
+    bool IsInlineValue() const {
+      return std::get_if<Res_value>(&data_) != nullptr;
     }
 
-    inline const ResTable_entry_handle& GetTableEntry() const {
-      return *std::get_if<ResTable_entry_handle>(&data_);
+    const Res_value& GetInlineValue() const {
+      return std::get<Res_value>(data_);
     }
 
    private:
-      std::variant<uint32_t, nullptr_t, ResTable_entry_handle> data_;
+      std::variant<std::monostate, uint32_t, Res_value> data_;
   };
 
   // Looks up the value that overlays the target resource id.
@@ -123,11 +123,13 @@
  private:
   explicit IdmapResMap(const Idmap_data_header* data_header,
                        const Idmap_target_entry* entries,
+                       const Idmap_target_entry_inline* inline_entries,
                        uint8_t target_assigned_package_id,
                        const OverlayDynamicRefTable* overlay_ref_table);
 
   const Idmap_data_header* data_header_;
   const Idmap_target_entry* entries_;
+  const Idmap_target_entry_inline* inline_entries_;
   const uint8_t target_assigned_package_id_;
   const OverlayDynamicRefTable* overlay_ref_table_;
 
@@ -163,8 +165,8 @@
   // Returns a mapping from target resource ids to overlay values.
   inline const IdmapResMap GetTargetResourcesMap(
       uint8_t target_assigned_package_id, const OverlayDynamicRefTable* overlay_ref_table) const {
-    return IdmapResMap(data_header_, target_entries_, target_assigned_package_id,
-                       overlay_ref_table);
+    return IdmapResMap(data_header_, target_entries_, target_inline_entries_,
+                       target_assigned_package_id, overlay_ref_table);
   }
 
   // Returns a dynamic reference table for a loaded overlay package.
@@ -184,6 +186,7 @@
   const Idmap_header* header_;
   const Idmap_data_header* data_header_;
   const Idmap_target_entry* target_entries_;
+  const Idmap_target_entry_inline* target_inline_entries_;
   const Idmap_overlay_entry* overlay_entries_;
   const std::unique_ptr<ResStringPool> string_pool_;
 
@@ -200,6 +203,7 @@
                        const Idmap_header* header,
                        const Idmap_data_header* data_header,
                        const Idmap_target_entry* target_entries,
+                       const Idmap_target_entry_inline* target_inline_entries,
                        const Idmap_overlay_entry* overlay_entries,
                        ResStringPool* string_pool);
 
diff --git a/libs/androidfw/include/androidfw/ResourceTypes.h b/libs/androidfw/include/androidfw/ResourceTypes.h
index e351a46..04ba78b 100644
--- a/libs/androidfw/include/androidfw/ResourceTypes.h
+++ b/libs/androidfw/include/androidfw/ResourceTypes.h
@@ -41,7 +41,7 @@
 namespace android {
 
 constexpr const static uint32_t kIdmapMagic = 0x504D4449u;
-constexpr const static uint32_t kIdmapCurrentVersion = 0x00000004u;
+constexpr const static uint32_t kIdmapCurrentVersion = 0x00000005u;
 
 /**
  * In C++11, char16_t is defined as *at least* 16 bits. We do a lot of
@@ -1476,7 +1476,7 @@
         // If set, this is a weak resource and may be overriden by strong
         // resources of the same name/type. This is only useful during
         // linking with other resource tables.
-        FLAG_WEAK = 0x0004
+        FLAG_WEAK = 0x0004,
     };
     uint16_t flags;
     
@@ -1586,50 +1586,6 @@
     Res_value value;
 };
 
-
-// A ResTable_entry variant that either holds an unmanaged pointer to a constant ResTable_entry or
-// holds a ResTable_entry which is tied to the lifetime of the handle.
-class ResTable_entry_handle {
- public:
-    ResTable_entry_handle() = default;
-
-    ResTable_entry_handle(const ResTable_entry_handle& handle) {
-      entry_ = handle.entry_;
-    }
-
-    ResTable_entry_handle(ResTable_entry_handle&& handle) noexcept {
-      entry_ = handle.entry_;
-    }
-
-    inline static ResTable_entry_handle managed(ResTable_entry* entry, void (*deleter)(void *)) {
-      return ResTable_entry_handle(std::shared_ptr<const ResTable_entry>(entry, deleter));
-    }
-
-    inline static ResTable_entry_handle unmanaged(const ResTable_entry* entry)  {
-      return ResTable_entry_handle(std::shared_ptr<const ResTable_entry>(entry, [](auto /*p */){}));
-    }
-
-    inline ResTable_entry_handle& operator=(const ResTable_entry_handle& handle) noexcept {
-      entry_ = handle.entry_;
-      return *this;
-    }
-
-    inline ResTable_entry_handle& operator=(ResTable_entry_handle&& handle) noexcept {
-      entry_ = handle.entry_;
-      return *this;
-    }
-
-    inline const ResTable_entry* operator*() & {
-      return entry_.get();
-    }
-
- private:
-    explicit ResTable_entry_handle(std::shared_ptr<const ResTable_entry> entry)
-        : entry_(std::move(entry)) { }
-
-    std::shared_ptr<const ResTable_entry> entry_;
-};
-
 /**
  * A package-id to package name mapping for any shared libraries used
  * in this resource table. The package-id's encoded in this resource
@@ -1717,6 +1673,10 @@
     // The overlay must be signed with the same signature as the actor declared for the target
     // resource
     ACTOR_SIGNATURE = 0x00000080,
+
+    // The overlay must be signed with the same signature as the reference package declared
+    // in the SystemConfig
+    CONFIG_SIGNATURE = 0x00000100,
   };
 
   using PolicyBitmask = uint32_t;
@@ -1736,7 +1696,6 @@
   return first;
 }
 
-#pragma pack(push, 1)
 struct Idmap_header {
   // Always 0x504D4449 ('IDMP')
   uint32_t magic;
@@ -1747,7 +1706,7 @@
   uint32_t overlay_crc32;
 
   uint32_t fulfilled_policies;
-  uint8_t enforce_overlayable;
+  uint32_t enforce_overlayable;
 
   uint8_t target_path[256];
   uint8_t overlay_path[256];
@@ -1761,23 +1720,31 @@
 struct Idmap_data_header {
   uint8_t target_package_id;
   uint8_t overlay_package_id;
+
+  // Padding to ensure 4 byte alignment for target_entry_count
+  uint16_t p0;
+
   uint32_t target_entry_count;
+  uint32_t target_inline_entry_count;
   uint32_t overlay_entry_count;
+
   uint32_t string_pool_index_offset;
-  uint32_t string_pool_length;
 };
 
 struct Idmap_target_entry {
   uint32_t target_id;
-  uint8_t type;
-  uint32_t value;
+  uint32_t overlay_id;
+};
+
+struct Idmap_target_entry_inline {
+  uint32_t target_id;
+  Res_value value;
 };
 
 struct Idmap_overlay_entry {
   uint32_t overlay_id;
   uint32_t target_id;
 };
-#pragma pack(pop)
 
 class AssetManager2;
 
diff --git a/libs/androidfw/tests/data/overlay/overlay.apk b/libs/androidfw/tests/data/overlay/overlay.apk
index f1ed592..c9bf252 100644
--- a/libs/androidfw/tests/data/overlay/overlay.apk
+++ b/libs/androidfw/tests/data/overlay/overlay.apk
Binary files differ
diff --git a/libs/androidfw/tests/data/overlay/overlay.idmap b/libs/androidfw/tests/data/overlay/overlay.idmap
index 29c5eb6..3ab244e 100644
--- a/libs/androidfw/tests/data/overlay/overlay.idmap
+++ b/libs/androidfw/tests/data/overlay/overlay.idmap
Binary files differ
diff --git a/libs/hwui/JankTracker.cpp b/libs/hwui/JankTracker.cpp
index d25fc4b..b2c39c9 100644
--- a/libs/hwui/JankTracker.cpp
+++ b/libs/hwui/JankTracker.cpp
@@ -139,6 +139,9 @@
         (*mGlobalData)->reportJank();
     }
 
+    if (mSwapDeadline < 0) {
+        mSwapDeadline = frame[FrameInfoIndex::IntendedVsync] + mFrameInterval;
+    }
     bool isTripleBuffered = (mSwapDeadline - frame[FrameInfoIndex::IntendedVsync]) > (mFrameInterval * 0.1);
 
     mSwapDeadline = std::max(mSwapDeadline + mFrameInterval,
diff --git a/libs/hwui/JankTracker.h b/libs/hwui/JankTracker.h
index 4460266..b3fbbfe 100644
--- a/libs/hwui/JankTracker.h
+++ b/libs/hwui/JankTracker.h
@@ -75,7 +75,7 @@
 
     std::array<int64_t, NUM_BUCKETS> mThresholds;
     int64_t mFrameInterval;
-    nsecs_t mSwapDeadline;
+    nsecs_t mSwapDeadline = -1;
     // The amount of time we will erase from the total duration to account
     // for SF vsync offsets with HWC2 blocking dequeueBuffers.
     // (Vsync + mDequeueBlockTolerance) is the point at which we expect
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp
index a362bd2..667a751 100644
--- a/libs/hwui/renderthread/CanvasContext.cpp
+++ b/libs/hwui/renderthread/CanvasContext.cpp
@@ -139,7 +139,7 @@
     mAnimationContext->destroy();
 }
 
-static void setBufferCount(ANativeWindow* window, uint32_t extraBuffers) {
+static void setBufferCount(ANativeWindow* window) {
     int query_value;
     int err = window->query(window, NATIVE_WINDOW_MIN_UNDEQUEUED_BUFFERS, &query_value);
     if (err != 0 || query_value < 0) {
@@ -148,7 +148,9 @@
     }
     auto min_undequeued_buffers = static_cast<uint32_t>(query_value);
 
-    int bufferCount = min_undequeued_buffers + 2 + extraBuffers;
+    // We only need to set min_undequeued + 2 because the renderahead amount was already factored into the
+    // query for min_undequeued
+    int bufferCount = min_undequeued_buffers + 2;
     native_window_set_buffer_count(window, bufferCount);
 }
 
@@ -179,7 +181,8 @@
             mNativeSurface ? mNativeSurface->getNativeWindow() : nullptr, mSwapBehavior);
 
     if (mNativeSurface && !mNativeSurface->didSetExtraBuffers()) {
-        setBufferCount(mNativeSurface->getNativeWindow(), mRenderAheadCapacity);
+        setBufferCount(mNativeSurface->getNativeWindow());
+
     }
 
     mFrameNumber = -1;
diff --git a/libs/hwui/renderthread/EglManager.cpp b/libs/hwui/renderthread/EglManager.cpp
index 5e0471c..7982ab6 100644
--- a/libs/hwui/renderthread/EglManager.cpp
+++ b/libs/hwui/renderthread/EglManager.cpp
@@ -208,8 +208,12 @@
     return config;
 }
 
+extern "C" EGLAPI const char* eglQueryStringImplementationANDROID(EGLDisplay dpy, EGLint name);
+
 void EglManager::initExtensions() {
     auto extensions = StringUtils::split(eglQueryString(mEglDisplay, EGL_EXTENSIONS));
+    auto extensionsAndroid =
+            StringUtils::split(eglQueryStringImplementationANDROID(mEglDisplay, EGL_EXTENSIONS));
 
     // For our purposes we don't care if EGL_BUFFER_AGE is a result of
     // EGL_EXT_buffer_age or EGL_KHR_partial_update as our usage is covered
@@ -228,9 +232,12 @@
     EglExtensions.displayP3 = extensions.has("EGL_EXT_gl_colorspace_display_p3_passthrough");
     EglExtensions.contextPriority = extensions.has("EGL_IMG_context_priority");
     EglExtensions.surfacelessContext = extensions.has("EGL_KHR_surfaceless_context");
-    EglExtensions.nativeFenceSync = extensions.has("EGL_ANDROID_native_fence_sync");
     EglExtensions.fenceSync = extensions.has("EGL_KHR_fence_sync");
     EglExtensions.waitSync = extensions.has("EGL_KHR_wait_sync");
+
+    // EGL_ANDROID_native_fence_sync is not exposed to applications, so access
+    // this through the private Android-specific query instead.
+    EglExtensions.nativeFenceSync = extensionsAndroid.has("EGL_ANDROID_native_fence_sync");
 }
 
 bool EglManager::hasEglContext() {
diff --git a/libs/hwui/service/GraphicsStatsService.cpp b/libs/hwui/service/GraphicsStatsService.cpp
index 644d5fb..e419801 100644
--- a/libs/hwui/service/GraphicsStatsService.cpp
+++ b/libs/hwui/service/GraphicsStatsService.cpp
@@ -559,6 +559,7 @@
         AStatsEvent_writeBool(event, !lastFullDay);
         AStatsEvent_build(event);
     }
+    delete dump;
 }
 
 
diff --git a/location/java/android/location/IGeofenceProvider.aidl b/location/java/android/location/IGeofenceProvider.aidl
index 426ebef..b1ef672 100644
--- a/location/java/android/location/IGeofenceProvider.aidl
+++ b/location/java/android/location/IGeofenceProvider.aidl
@@ -24,6 +24,6 @@
  * {@hide}
  */
 oneway interface IGeofenceProvider {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void setGeofenceHardware(in IGeofenceHardware proxy);
 }
diff --git a/location/java/android/location/Location.java b/location/java/android/location/Location.java
index 9aa0c87..5a40ae1 100644
--- a/location/java/android/location/Location.java
+++ b/location/java/android/location/Location.java
@@ -17,7 +17,6 @@
 package android.location;
 
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.os.Build;
 import android.os.Bundle;
@@ -73,7 +72,6 @@
      * gps locations separate from other locations for coarsening. Providers that do not need to
      * support platforms below Android R should not use this constant.
      */
-    @TestApi
     @SystemApi
     @Deprecated
     public static final String EXTRA_NO_GPS_LOCATION = "noGPSLocation";
@@ -129,7 +127,7 @@
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
     private String mProvider;
     private long mTime = 0;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mElapsedRealtimeNanos = 0;
     // Estimate of the relative precision of the alignment of this SystemClock
     // timestamp, with the reported measurements in nanoseconds (68% confidence).
@@ -1062,7 +1060,6 @@
      * @see #isComplete
      * @hide
      */
-    @TestApi
     @SystemApi
     public void makeComplete() {
         if (mProvider == null) mProvider = "?";
diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java
index 2a2aaea..0c7d96d 100644
--- a/location/java/android/location/LocationManager.java
+++ b/location/java/android/location/LocationManager.java
@@ -514,7 +514,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(WRITE_SECURE_SETTINGS)
     public void setLocationEnabledForUser(boolean enabled, @NonNull UserHandle userHandle) {
         try {
@@ -708,7 +707,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
     public void getCurrentLocation(@NonNull LocationRequest locationRequest,
             @Nullable CancellationSignal cancellationSignal,
@@ -1130,7 +1128,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
     public void requestLocationUpdates(
             @Nullable LocationRequest locationRequest,
@@ -1158,7 +1155,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
     public void requestLocationUpdates(
             @Nullable LocationRequest locationRequest,
@@ -1209,7 +1205,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
     public void requestLocationUpdates(
             @Nullable LocationRequest locationRequest,
diff --git a/location/java/android/location/LocationRequest.java b/location/java/android/location/LocationRequest.java
index 5f0acc8..1708c25 100644
--- a/location/java/android/location/LocationRequest.java
+++ b/location/java/android/location/LocationRequest.java
@@ -21,7 +21,6 @@
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.os.Build;
 import android.os.Parcel;
@@ -94,7 +93,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class LocationRequest implements Parcelable {
     /**
      * Used with {@link #setQuality} to request the most accurate locations available.
diff --git a/location/java/com/android/internal/location/GpsNetInitiatedHandler.java b/location/java/com/android/internal/location/GpsNetInitiatedHandler.java
index 67a040d..139474c 100644
--- a/location/java/com/android/internal/location/GpsNetInitiatedHandler.java
+++ b/location/java/com/android/internal/location/GpsNetInitiatedHandler.java
@@ -28,7 +28,6 @@
 import android.os.RemoteException;
 import android.os.SystemClock;
 import android.os.UserHandle;
-import android.telephony.PhoneNumberUtils;
 import android.telephony.PhoneStateListener;
 import android.telephony.TelephonyManager;
 import android.util.Log;
@@ -161,7 +160,7 @@
                        be set to true when the phone is having emergency call, and then will
                        be set to false by mPhoneStateListener when the emergency call ends.
                 */
-                mIsInEmergencyCall = PhoneNumberUtils.isEmergencyNumber(phoneNumber);
+                mIsInEmergencyCall = mTelephonyManager.isEmergencyNumber(phoneNumber);
                 if (DEBUG) Log.v(TAG, "ACTION_NEW_OUTGOING_CALL - " + getInEmergency());
             } else if (action.equals(LocationManager.MODE_CHANGED_ACTION)) {
                 updateLocationMode();
diff --git a/media/OWNERS b/media/OWNERS
index 36df3a0..e741490 100644
--- a/media/OWNERS
+++ b/media/OWNERS
@@ -1,4 +1,3 @@
-andrewlewis@google.com
 chz@google.com
 elaurent@google.com
 essick@google.com
@@ -15,6 +14,15 @@
 klhyun@google.com
 lajos@google.com
 marcone@google.com
+nchalko@google.com
 philburk@google.com
-sungsoo@google.com
+quxiangfang@google.com
 wonsik@google.com
+
+# LON
+andrewlewis@google.com
+aquilescanta@google.com
+olly@google.com
+
+# SEO
+sungsoo@google.com
diff --git a/media/java/android/media/AudioAttributes.java b/media/java/android/media/AudioAttributes.java
index 158482a..717074c 100644
--- a/media/java/android/media/AudioAttributes.java
+++ b/media/java/android/media/AudioAttributes.java
@@ -502,7 +502,7 @@
     @Retention(RetentionPolicy.SOURCE)
     public @interface CapturePolicy {}
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mUsage = USAGE_UNKNOWN;
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
     private int mContentType = CONTENT_TYPE_UNKNOWN;
@@ -511,7 +511,7 @@
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
     private int mFlags = 0x0;
     private HashSet<String> mTags;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private String mFormattedTags;
     private Bundle mBundle; // lazy-initialized, may be null
 
diff --git a/media/java/android/media/AudioDevicePort.java b/media/java/android/media/AudioDevicePort.java
index f6b0454..0f79675 100644
--- a/media/java/android/media/AudioDevicePort.java
+++ b/media/java/android/media/AudioDevicePort.java
@@ -18,6 +18,7 @@
 
 import android.annotation.NonNull;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 import java.util.Arrays;
 
@@ -41,7 +42,7 @@
     private final int[] mEncapsulationModes;
     private final int[] mEncapsulationMetadataTypes;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     AudioDevicePort(AudioHandle handle, String deviceName,
             int[] samplingRates, int[] channelMasks, int[] channelIndexMasks,
             int[] formats, AudioGain[] gains, int type, String address, int[] encapsulationModes,
diff --git a/media/java/android/media/AudioDevicePortConfig.java b/media/java/android/media/AudioDevicePortConfig.java
index 51b8037..69fd82b 100644
--- a/media/java/android/media/AudioDevicePortConfig.java
+++ b/media/java/android/media/AudioDevicePortConfig.java
@@ -17,6 +17,7 @@
 package android.media;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 /**
  * An AudioDevicePortConfig describes a possible configuration of an output or input device
@@ -28,7 +29,7 @@
  */
 
 public class AudioDevicePortConfig extends AudioPortConfig {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     AudioDevicePortConfig(AudioDevicePort devicePort, int samplingRate, int channelMask,
             int format, AudioGainConfig gain) {
         super((AudioPort)devicePort, samplingRate, channelMask, format, gain);
diff --git a/media/java/android/media/AudioFocusInfo.java b/media/java/android/media/AudioFocusInfo.java
index 675cf73..3647b6e 100644
--- a/media/java/android/media/AudioFocusInfo.java
+++ b/media/java/android/media/AudioFocusInfo.java
@@ -19,7 +19,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -29,7 +28,6 @@
  * @hide
  * A class to encapsulate information about an audio focus owner or request.
  */
-@TestApi
 @SystemApi
 public final class AudioFocusInfo implements Parcelable {
 
diff --git a/media/java/android/media/AudioFormat.java b/media/java/android/media/AudioFormat.java
index 8a60bde..1d06e28 100644
--- a/media/java/android/media/AudioFormat.java
+++ b/media/java/android/media/AudioFormat.java
@@ -21,6 +21,7 @@
 import android.annotation.NonNull;
 import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -685,7 +686,7 @@
      */
     // Update sound trigger JNI in core/jni/android_hardware_SoundTrigger.cpp when modifying this
     // constructor
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private AudioFormat(int encoding, int sampleRate, int channelMask, int channelIndexMask) {
         this(
              AUDIO_FORMAT_HAS_PROPERTY_ENCODING
@@ -744,11 +745,11 @@
     // This is an immutable class, all member variables are final.
 
     // Essential values.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final int mEncoding;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final int mSampleRate;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final int mChannelMask;
     private final int mChannelIndexMask;
     private final int mPropertySetMask;
diff --git a/media/java/android/media/AudioGain.java b/media/java/android/media/AudioGain.java
index cae1b59..98dc06a 100644
--- a/media/java/android/media/AudioGain.java
+++ b/media/java/android/media/AudioGain.java
@@ -17,6 +17,7 @@
 package android.media;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 /**
  * The AudioGain describes a gain controller. Gain controllers are exposed by
@@ -71,7 +72,7 @@
 
     // The channel mask passed to the constructor is as specified in AudioFormat
     // (e.g. AudioFormat.CHANNEL_OUT_STEREO)
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     AudioGain(int index, int mode, int channelMask,
                         int minValue, int maxValue, int defaultValue, int stepValue,
                         int rampDurationMinMs, int rampDurationMaxMs) {
diff --git a/media/java/android/media/AudioHandle.java b/media/java/android/media/AudioHandle.java
index 8fc834f..ce51b5a 100644
--- a/media/java/android/media/AudioHandle.java
+++ b/media/java/android/media/AudioHandle.java
@@ -17,6 +17,7 @@
 package android.media;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 /**
  * The AudioHandle is used by the audio framework implementation to
@@ -28,7 +29,7 @@
     @UnsupportedAppUsage
     private final int mId;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     AudioHandle(int id) {
         mId = id;
     }
diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java
index 6094af9..107d656 100755
--- a/media/java/android/media/AudioManager.java
+++ b/media/java/android/media/AudioManager.java
@@ -707,7 +707,7 @@
      * @hide
      * For test purposes only, will throw NPE with some methods that require a Context.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public AudioManager() {
         mUseVolumeKeySounds = true;
         mUseFixedVolume = false;
@@ -951,7 +951,7 @@
      * @see #setRingerMode(int)
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static boolean isValidRingerMode(int ringerMode) {
         if (ringerMode < 0 || ringerMode > RINGER_MODE_MAX) {
             return false;
@@ -2011,7 +2011,7 @@
      * @see #stopBluetoothSco()
      * @see #ACTION_SCO_AUDIO_STATE_UPDATED
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void startBluetoothScoVirtualCall() {
         final IAudioService service = getService();
         try {
@@ -2163,7 +2163,7 @@
      * @param on set <var>true</var> to mute the microphone;
      *           <var>false</var> to turn mute off
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setMicrophoneMuteFromSwitch(boolean on) {
         final IAudioService service = getService();
         try {
@@ -2423,7 +2423,7 @@
      *   display). Note that BT audio sinks are not considered remote devices.
      * @return true if {@link AudioManager#STREAM_MUSIC} is active on a remote device
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isMusicActiveRemotely() {
         return AudioSystem.isStreamActiveRemotely(STREAM_MUSIC, 0);
     }
@@ -2574,7 +2574,7 @@
     /**
      * @hide Number of sound effects
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int NUM_SOUND_EFFECTS = 10;
 
     /**
@@ -3408,7 +3408,7 @@
      * @param durationHint the type of focus request. AUDIOFOCUS_GAIN_TRANSIENT is recommended so
      *    media applications resume after a call
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void requestAudioFocusForCall(int streamType, int durationHint) {
         final IAudioService service = getService();
         try {
@@ -3449,7 +3449,6 @@
      * @param requestResult the result to the focus request to be passed to the requester
      * @param ap a valid registered {@link AudioPolicy} configured as a focus policy.
      */
-    @TestApi
     @SystemApi
     @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
     public void setFocusRequestResult(@NonNull AudioFocusInfo afi,
@@ -3489,7 +3488,6 @@
      *     if there was an error sending the request.
      * @throws NullPointerException if the {@link AudioFocusInfo} or {@link AudioPolicy} are null.
      */
-    @TestApi
     @SystemApi
     @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
     public int dispatchAudioFocusChange(@NonNull AudioFocusInfo afi, int focusChange,
@@ -3514,7 +3512,7 @@
      * when ringing ends and the call is rejected or not answered.
      * Should match one or more calls to {@link #requestAudioFocusForCall(int, int)}.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void abandonAudioFocusForCall() {
         final IAudioService service = getService();
         try {
@@ -3544,8 +3542,8 @@
      * @deprecated use {@link #abandonAudioFocusRequest(AudioFocusRequest)}
      */
     @SystemApi
-    @SuppressLint("Doclava125") // no permission enforcement, but only "undoes" what would have been
-                                // done by a matching requestAudioFocus
+    @SuppressLint("RequiresPermission") // no permission enforcement, but only "undoes" what would
+    // have been done by a matching requestAudioFocus
     public int abandonAudioFocus(OnAudioFocusChangeListener l, AudioAttributes aa) {
         int status = AUDIOFOCUS_REQUEST_FAILED;
         unregisterAudioFocusRequest(l);
@@ -3752,7 +3750,6 @@
      *    {@link android.Manifest.permission#MODIFY_AUDIO_ROUTING} permission,
      *    {@link #SUCCESS} otherwise.
      */
-    @TestApi
     @SystemApi
     @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
     public int registerAudioPolicy(@NonNull AudioPolicy policy) {
@@ -3787,7 +3784,6 @@
      * Unregisters an {@link AudioPolicy} asynchronously.
      * @param policy the non-null {@link AudioPolicy} to unregister.
      */
-    @TestApi
     @SystemApi
     @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
     public void unregisterAudioPolicyAsync(@NonNull AudioPolicy policy) {
@@ -3814,7 +3810,6 @@
      * associated with mixes of this policy.
      * @param policy the non-null {@link AudioPolicy} to unregister.
      */
-    @TestApi
     @SystemApi
     @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
     public void unregisterAudioPolicy(@NonNull AudioPolicy policy) {
@@ -4251,7 +4246,7 @@
      *  agent when audio settings are restored and causes the AudioService
      *  to read and apply restored settings.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void reloadAudioSettings() {
         final IAudioService service = getService();
         try {
@@ -5151,7 +5146,7 @@
      * @hide
      */
     @SystemApi
-    @SuppressLint("Doclava125") // FIXME is this still used?
+    @SuppressLint("RequiresPermission") // FIXME is this still used?
     public boolean isHdmiSystemAudioSupported() {
         try {
             return getService().isHdmiSystemAudioSupported();
@@ -5165,7 +5160,6 @@
      */
 
     /** @hide */
-    @TestApi
     @SystemApi
     public static final int SUCCESS = AudioSystem.SUCCESS;
     /**
diff --git a/media/java/android/media/AudioMixPort.java b/media/java/android/media/AudioMixPort.java
index 33d603f..0e286b0 100644
--- a/media/java/android/media/AudioMixPort.java
+++ b/media/java/android/media/AudioMixPort.java
@@ -17,6 +17,7 @@
 package android.media;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 /**
  * The AudioMixPort is a specialized type of AudioPort
@@ -32,7 +33,7 @@
 
     private final int mIoHandle;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     AudioMixPort(AudioHandle handle, int ioHandle, int role, String deviceName,
             int[] samplingRates, int[] channelMasks, int[] channelIndexMasks,
             int[] formats, AudioGain[] gains) {
@@ -53,7 +54,7 @@
     /**
      * Get the device type (e.g AudioManager.DEVICE_OUT_SPEAKER)
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int ioHandle() {
         return mIoHandle;
     }
diff --git a/media/java/android/media/AudioMixPortConfig.java b/media/java/android/media/AudioMixPortConfig.java
index 9d81206..483524a 100644
--- a/media/java/android/media/AudioMixPortConfig.java
+++ b/media/java/android/media/AudioMixPortConfig.java
@@ -17,6 +17,7 @@
 package android.media;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 /**
  * An AudioMixPortConfig describes a possible configuration of an output or input mixer.
@@ -28,7 +29,7 @@
 
 public class AudioMixPortConfig extends AudioPortConfig {
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     AudioMixPortConfig(AudioMixPort mixPort, int samplingRate, int channelMask, int format,
                 AudioGainConfig gain) {
         super((AudioPort)mixPort, samplingRate, channelMask, format, gain);
diff --git a/media/java/android/media/AudioPatch.java b/media/java/android/media/AudioPatch.java
index e5107d4..99663bf 100644
--- a/media/java/android/media/AudioPatch.java
+++ b/media/java/android/media/AudioPatch.java
@@ -17,6 +17,7 @@
 package android.media;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 
 /**
@@ -36,7 +37,7 @@
     private final AudioPortConfig[] mSources;
     private final AudioPortConfig[] mSinks;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     AudioPatch(AudioHandle patchHandle, AudioPortConfig[] sources, AudioPortConfig[] sinks) {
         mHandle = patchHandle;
         mSources = sources;
diff --git a/media/java/android/media/AudioPort.java b/media/java/android/media/AudioPort.java
index 7c3ca24..e6dc622 100644
--- a/media/java/android/media/AudioPort.java
+++ b/media/java/android/media/AudioPort.java
@@ -17,6 +17,7 @@
 package android.media;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 /**
  * An audio port is a node of the audio framework or hardware that can be connected to or
@@ -82,7 +83,7 @@
     @UnsupportedAppUsage
     private AudioPortConfig mActiveConfig;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     AudioPort(AudioHandle handle, int role, String name,
             int[] samplingRates, int[] channelMasks, int[] channelIndexMasks,
             int[] formats, AudioGain[] gains) {
@@ -113,7 +114,7 @@
     /**
      * Get the audio port role
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int role() {
         return mRole;
     }
diff --git a/media/java/android/media/AudioPortConfig.java b/media/java/android/media/AudioPortConfig.java
index 16fb5b8..4dd3cb6 100644
--- a/media/java/android/media/AudioPortConfig.java
+++ b/media/java/android/media/AudioPortConfig.java
@@ -17,6 +17,7 @@
 package android.media;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 /**
  * An AudioPortConfig contains a possible configuration of an audio port chosen
@@ -50,7 +51,7 @@
     static final int CHANNEL_MASK = 0x2;
     static final int FORMAT       = 0x4;
     static final int GAIN         = 0x8;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     int mConfigMask;
 
     @UnsupportedAppUsage
diff --git a/media/java/android/media/AudioPortEventHandler.java b/media/java/android/media/AudioPortEventHandler.java
index 8e8dfaf..763eb29 100644
--- a/media/java/android/media/AudioPortEventHandler.java
+++ b/media/java/android/media/AudioPortEventHandler.java
@@ -17,6 +17,7 @@
 package android.media;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.Message;
@@ -54,7 +55,7 @@
      * Accessed by native methods: JNI Callback context.
      */
     @SuppressWarnings("unused")
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mJniCallback;
 
     void init() {
@@ -178,7 +179,7 @@
     }
 
     @SuppressWarnings("unused")
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static void postEventFromNative(Object module_ref,
                                             int what, int arg1, int arg2, Object obj) {
         AudioPortEventHandler eventHandler =
diff --git a/media/java/android/media/AudioRecord.java b/media/java/android/media/AudioRecord.java
index 4d26b8d..d670f07 100644
--- a/media/java/android/media/AudioRecord.java
+++ b/media/java/android/media/AudioRecord.java
@@ -30,6 +30,7 @@
 import android.media.audiopolicy.AudioPolicy;
 import android.media.projection.MediaProjection;
 import android.os.Binder;
+import android.os.Build;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Looper;
@@ -174,14 +175,14 @@
      * Accessed by native methods: provides access to the callback data.
      */
     @SuppressWarnings("unused")
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mNativeCallbackCookie;
 
     /**
      * Accessed by native methods: provides access to the JNIDeviceCallback instance.
      */
     @SuppressWarnings("unused")
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mNativeDeviceCallback;
 
 
@@ -261,7 +262,7 @@
     /**
      * AudioAttributes
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private AudioAttributes mAudioAttributes;
     private boolean mIsSubmixFullVolume = false;
 
@@ -1960,7 +1961,7 @@
     // Java methods called from the native side
     //--------------------
     @SuppressWarnings("unused")
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static void postEventFromNative(Object audiorecord_ref,
             int what, int arg1, int arg2, Object obj) {
         //logd("Event posted from the native side: event="+ what + " args="+ arg1+" "+arg2);
diff --git a/media/java/android/media/AudioRecordingConfiguration.java b/media/java/android/media/AudioRecordingConfiguration.java
index 42841d1..6febabe 100644
--- a/media/java/android/media/AudioRecordingConfiguration.java
+++ b/media/java/android/media/AudioRecordingConfiguration.java
@@ -23,6 +23,7 @@
 import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.media.audiofx.AudioEffect;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.util.Log;
@@ -222,7 +223,7 @@
      * <br>When called without the permission, the result is an empty string.
      * @return the package name
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public String getClientPackageName() { return mClientPackageName; }
 
     /**
diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java
index 2090538..f1eb53d 100644
--- a/media/java/android/media/AudioSystem.java
+++ b/media/java/android/media/AudioSystem.java
@@ -25,6 +25,7 @@
 import android.content.pm.PackageManager;
 import android.media.audiofx.AudioEffect;
 import android.media.audiopolicy.AudioMix;
+import android.os.Build;
 import android.telephony.TelephonyManager;
 import android.util.Log;
 
@@ -81,7 +82,7 @@
     public static final int STREAM_BLUETOOTH_SCO = 6;
     /** @hide Used to identify the volume of audio streams for enforced system sounds in certain
      * countries (e.g camera in Japan) */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int STREAM_SYSTEM_ENFORCED = 7;
     /** @hide Used to identify the volume of audio streams for DTMF tones */
     public static final int STREAM_DTMF = 8;
@@ -594,7 +595,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static void dynamicPolicyCallbackFromNative(int event, String regId, int val)
     {
         DynamicPolicyCallback cb;
@@ -671,7 +672,7 @@
      * @param effects
      * @param activeSource
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static void recordingCallbackFromNative(int event, int riid, int uid, int session,
                           int source, int portId, boolean silenced, int[] recordingFormat,
                           AudioEffect.Descriptor[] clientEffects, AudioEffect.Descriptor[] effects,
@@ -1485,7 +1486,7 @@
     @UnsupportedAppUsage
     public static native int setMasterMute(boolean mute);
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static native boolean getMasterMute();
     /** @hide */
     @UnsupportedAppUsage
diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java
index 1c0a526..655d100 100644
--- a/media/java/android/media/AudioTrack.java
+++ b/media/java/android/media/AudioTrack.java
@@ -27,6 +27,7 @@
 import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.os.Binder;
+import android.os.Build;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.Looper;
@@ -579,7 +580,7 @@
      * the native AudioTrack object, but not stored in it).
      */
     @SuppressWarnings("unused")
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mJniData;
 
 
@@ -874,7 +875,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     /* package */ void deferred_connect(long nativeTrackInJavaObj) {
         if (mState != STATE_INITIALIZED) {
             // Note that for this native_setup, we are providing an already created/initialized
@@ -1261,14 +1262,20 @@
 
             // TODO: Check mEncapsulationMode compatibility with MODE_STATIC, etc?
 
-            try {
-                // If the buffer size is not specified in streaming mode,
-                // use a single frame for the buffer size and let the
-                // native code figure out the minimum buffer size.
-                if (mMode == MODE_STREAM && mBufferSizeInBytes == 0) {
-                    mBufferSizeInBytes = mFormat.getChannelCount()
-                            * mFormat.getBytesPerSample(mFormat.getEncoding());
+            // If the buffer size is not specified in streaming mode,
+            // use a single frame for the buffer size and let the
+            // native code figure out the minimum buffer size.
+            if (mMode == MODE_STREAM && mBufferSizeInBytes == 0) {
+                int bytesPerSample = 1;
+                try {
+                    bytesPerSample = mFormat.getBytesPerSample(mFormat.getEncoding());
+                } catch (IllegalArgumentException e) {
+                    // do nothing
                 }
+                mBufferSizeInBytes = mFormat.getChannelCount() * bytesPerSample;
+            }
+
+            try {
                 final AudioTrack track = new AudioTrack(
                         mAttributes, mFormat, mBufferSizeInBytes, mMode, mSessionId, mOffload,
                         mEncapsulationMode, mTunerConfiguration);
@@ -4004,7 +4011,7 @@
     // Java methods called from the native side
     //--------------------
     @SuppressWarnings("unused")
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static void postEventFromNative(Object audiotrack_ref,
             int what, int arg1, int arg2, Object obj) {
         //logd("Event posted from the native side: event="+ what + " args="+ arg1+" "+arg2);
diff --git a/media/java/android/media/CamcorderProfile.java b/media/java/android/media/CamcorderProfile.java
index f898931..210fe3d 100644
--- a/media/java/android/media/CamcorderProfile.java
+++ b/media/java/android/media/CamcorderProfile.java
@@ -555,7 +555,7 @@
     // Methods implemented by JNI
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
     private static native final void native_init();
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static native final CamcorderProfile native_get_camcorder_profile(
             int cameraId, int quality);
     private static native final boolean native_has_camcorder_profile(
diff --git a/media/java/android/media/EncoderCapabilities.java b/media/java/android/media/EncoderCapabilities.java
index 67ce0f7..768b643 100644
--- a/media/java/android/media/EncoderCapabilities.java
+++ b/media/java/android/media/EncoderCapabilities.java
@@ -17,6 +17,7 @@
 package android.media;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -44,19 +45,19 @@
      */
     static public class VideoEncoderCap {
         // These are not modifiable externally, thus are public accessible
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public final int mCodec;                // @see android.media.MediaRecorder.VideoEncoder
         public final int mMinBitRate;           // min bit rate (bps)
         public final int mMaxBitRate;           // max bit rate (bps)
         public final int mMinFrameRate;         // min frame rate (fps)
         public final int mMaxFrameRate;         // max frame rate (fps)
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public final int mMinFrameWidth;        // min frame width (pixel)
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public final int mMaxFrameWidth;        // max frame width (pixel)
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public final int mMinFrameHeight;       // min frame height (pixel)
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public final int mMaxFrameHeight;       // max frame height (pixel)
 
         // Private constructor called by JNI
@@ -134,7 +135,7 @@
      * Returns the capabilities of the supported video encoders.
      * @see android.media.EncoderCapabilities.VideoEncoderCap
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static List<VideoEncoderCap> getVideoEncoders() {
         int nEncoders = native_get_num_video_encoders();
         if (nEncoders == 0) return null;
diff --git a/media/java/android/media/IAudioService.aidl b/media/java/android/media/IAudioService.aidl
index 4cf236a..78806eb 100755
--- a/media/java/android/media/IAudioService.aidl
+++ b/media/java/android/media/IAudioService.aidl
@@ -76,7 +76,7 @@
 
     void adjustStreamVolume(int streamType, int direction, int flags, String callingPackage);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void setStreamVolume(int streamType, int index, int flags, String callingPackage);
 
     oneway void handleVolumeKey(in KeyEvent event, boolean isOnTv,
diff --git a/media/java/android/media/IRemoteDisplayCallback.aidl b/media/java/android/media/IRemoteDisplayCallback.aidl
index 584417d..75813c9 100644
--- a/media/java/android/media/IRemoteDisplayCallback.aidl
+++ b/media/java/android/media/IRemoteDisplayCallback.aidl
@@ -22,6 +22,6 @@
  * {@hide}
  */
 oneway interface IRemoteDisplayCallback {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void onStateChanged(in RemoteDisplayState state);
 }
diff --git a/media/java/android/media/Image.java b/media/java/android/media/Image.java
index 79b8611..0ef4b94 100644
--- a/media/java/android/media/Image.java
+++ b/media/java/android/media/Image.java
@@ -17,6 +17,7 @@
 package android.media;
 
 import android.annotation.Nullable;
+import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.graphics.Rect;
 import android.hardware.HardwareBuffer;
@@ -58,6 +59,7 @@
      * @hide
      */
     @UnsupportedAppUsage
+    @TestApi
     protected Image() {
     }
 
@@ -198,6 +200,7 @@
      * @return The window transformation that needs to be applied for this frame.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract int getTransform();
 
     /**
@@ -205,6 +208,7 @@
      * @return The scaling mode that needs to be applied for this frame.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract int getScalingMode();
 
     /**
@@ -387,6 +391,7 @@
          * @hide
          */
         @UnsupportedAppUsage
+        @TestApi
         protected Plane() {
         }
 
diff --git a/media/java/android/media/JetPlayer.java b/media/java/android/media/JetPlayer.java
index 84ee09b..875c6f5 100644
--- a/media/java/android/media/JetPlayer.java
+++ b/media/java/android/media/JetPlayer.java
@@ -19,6 +19,7 @@
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.res.AssetFileDescriptor;
+import android.os.Build;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
@@ -130,7 +131,7 @@
      * Accessed by native methods: provides access to C++ JetPlayer object 
      */
     @SuppressWarnings("unused")
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mNativePlayerInJavaObj;
 
     
@@ -564,7 +565,7 @@
     // Called exclusively by native code
     //--------------------
     @SuppressWarnings("unused")
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static void postEventFromNative(Object jetplayer_ref,
             int what, int arg1, int arg2) {
         //logd("Event posted from the native side: event="+ what + " args="+ arg1+" "+arg2);
diff --git a/media/java/android/media/MediaMetadata.java b/media/java/android/media/MediaMetadata.java
index a23191f..6dfbe2d 100644
--- a/media/java/android/media/MediaMetadata.java
+++ b/media/java/android/media/MediaMetadata.java
@@ -24,6 +24,7 @@
 import android.media.browse.MediaBrowser;
 import android.media.session.MediaController;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -627,7 +628,7 @@
      * @return The key used by this class or null if no mapping exists
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static String getKeyFromMetadataEditorKey(int editorKey) {
         return EDITOR_KEY_MAPPING.get(editorKey, null);
     }
diff --git a/media/java/android/media/MediaMuxer.java b/media/java/android/media/MediaMuxer.java
index 54675d0..ac19c21 100644
--- a/media/java/android/media/MediaMuxer.java
+++ b/media/java/android/media/MediaMuxer.java
@@ -20,6 +20,7 @@
 import android.annotation.NonNull;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.media.MediaCodec.BufferInfo;
+import android.os.Build;
 
 import dalvik.system.CloseGuard;
 
@@ -286,10 +287,10 @@
     public @interface Format {}
 
     // All the native functions are listed here.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static native long nativeSetup(@NonNull FileDescriptor fd, int format)
             throws IllegalArgumentException, IOException;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static native void nativeRelease(long nativeObject);
     private static native void nativeStart(long nativeObject);
     private static native void nativeStop(long nativeObject);
@@ -303,22 +304,22 @@
             int offset, int size, long presentationTimeUs, @MediaCodec.BufferFlag int flags);
 
     // Muxer internal states.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final int MUXER_STATE_UNINITIALIZED  = -1;
     private static final int MUXER_STATE_INITIALIZED    = 0;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final int MUXER_STATE_STARTED        = 1;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final int MUXER_STATE_STOPPED        = 2;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mState = MUXER_STATE_UNINITIALIZED;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final CloseGuard mCloseGuard = CloseGuard.get();
     private int mLastTrackIndex = -1;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mNativeObject;
 
     private String convertMuxerStateCodeToString(int aState) {
diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java
index 49e4160..e571b68 100644
--- a/media/java/android/media/MediaPlayer.java
+++ b/media/java/android/media/MediaPlayer.java
@@ -29,6 +29,7 @@
 import android.media.SubtitleController.Anchor;
 import android.media.SubtitleTrack.RenderingWidget;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.IBinder;
@@ -1141,7 +1142,7 @@
         setDataSource(path, headers, null);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void setDataSource(String path, Map<String, String> headers, List<HttpCookie> cookies)
             throws IOException, IllegalArgumentException, SecurityException, IllegalStateException
     {
@@ -1162,7 +1163,7 @@
         setDataSource(path, keys, values, cookies);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void setDataSource(String path, String[] keys, String[] values,
             List<HttpCookie> cookies)
             throws IOException, IllegalArgumentException, SecurityException, IllegalStateException {
@@ -4216,7 +4217,7 @@
      *  JAVA framework to avoid triggering track scanning.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int MEDIA_INFO_EXTERNAL_METADATA_UPDATE = 803;
 
     /** Informs that audio is not playing. Note that playback of the video
@@ -4236,7 +4237,7 @@
      *
      * {@hide}
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int MEDIA_INFO_TIMED_TEXT_ERROR = 900;
 
     /** Subtitle track was not supported by the media framework.
diff --git a/media/java/android/media/MediaRecorder.java b/media/java/android/media/MediaRecorder.java
index 4198d79..73ef315 100644
--- a/media/java/android/media/MediaRecorder.java
+++ b/media/java/android/media/MediaRecorder.java
@@ -108,7 +108,7 @@
     private long mNativeContext;
 
     @SuppressWarnings("unused")
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private Surface mSurface;
 
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
diff --git a/media/java/android/media/MediaRouter.java b/media/java/android/media/MediaRouter.java
index 6fa3787..cf643dd 100644
--- a/media/java/android/media/MediaRouter.java
+++ b/media/java/android/media/MediaRouter.java
@@ -843,7 +843,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public RouteInfo getSelectedRoute() {
         return getSelectedRoute(ROUTE_TYPE_ANY);
     }
@@ -1756,7 +1756,7 @@
             return getName(context.getResources());
         }
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         CharSequence getName(Resources res) {
             if (mNameResId != 0) {
                 return res.getText(mNameResId);
diff --git a/media/java/android/media/MicrophoneInfo.java b/media/java/android/media/MicrophoneInfo.java
index 876628f..a46db1d 100644
--- a/media/java/android/media/MicrophoneInfo.java
+++ b/media/java/android/media/MicrophoneInfo.java
@@ -19,6 +19,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.util.Pair;
 
 import java.lang.annotation.Retention;
@@ -164,7 +165,7 @@
     private int mType;
     private int mDirectionality;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     MicrophoneInfo(String deviceId, int type, String address, int location,
             int group, int indexInTheGroup, Coordinate3F position,
             Coordinate3F orientation, List<Pair<Float, Float>> frequencyResponse,
diff --git a/media/java/android/media/PlaybackParams.java b/media/java/android/media/PlaybackParams.java
index f24f831..080b9a4 100644
--- a/media/java/android/media/PlaybackParams.java
+++ b/media/java/android/media/PlaybackParams.java
@@ -87,23 +87,23 @@
     public static final int AUDIO_STRETCH_MODE_VOICE = 1;
 
     // flags to indicate which params are actually set
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final int SET_SPEED               = 1 << 0;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final int SET_PITCH               = 1 << 1;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final int SET_AUDIO_FALLBACK_MODE = 1 << 2;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final int SET_AUDIO_STRETCH_MODE  = 1 << 3;
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
     private int mSet = 0;
 
     // params
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mAudioFallbackMode = AUDIO_FALLBACK_MODE_DEFAULT;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mAudioStretchMode = AUDIO_STRETCH_MODE_DEFAULT;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private float mPitch = 1.0f;
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
     private float mSpeed = 1.0f;
diff --git a/media/java/android/media/RemoteControlClient.java b/media/java/android/media/RemoteControlClient.java
index c5fd3c3..60a0052 100644
--- a/media/java/android/media/RemoteControlClient.java
+++ b/media/java/android/media/RemoteControlClient.java
@@ -24,6 +24,7 @@
 import android.media.session.MediaSession;
 import android.media.session.MediaSessionLegacyHelper;
 import android.media.session.PlaybackState;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Looper;
 import android.os.SystemClock;
@@ -816,7 +817,7 @@
      * position updates. The playback position being "readable" is considered from the application's
      * point of view.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static int MEDIA_POSITION_READABLE = 1 << 0;
     /**
      * @hide
@@ -824,7 +825,7 @@
      * playback position updates. The playback position being "writable"
      * is considered from the application's point of view.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static int MEDIA_POSITION_WRITABLE = 1 << 1;
 
     /** @hide */
diff --git a/media/java/android/media/RemoteController.java b/media/java/android/media/RemoteController.java
index 9e48f1e..7807b9b 100644
--- a/media/java/android/media/RemoteController.java
+++ b/media/java/android/media/RemoteController.java
@@ -26,6 +26,7 @@
 import android.media.session.MediaSessionLegacyHelper;
 import android.media.session.MediaSessionManager;
 import android.media.session.PlaybackState;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
@@ -78,7 +79,7 @@
     private int mArtworkHeight = -1;
     private boolean mEnabled = true;
     // synchronized on mInfoLock, for USE_SESSION apis.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private MediaController mCurrentSession;
 
     /**
diff --git a/media/java/android/media/RemoteDisplay.java b/media/java/android/media/RemoteDisplay.java
index e529af9..2a0e54d 100644
--- a/media/java/android/media/RemoteDisplay.java
+++ b/media/java/android/media/RemoteDisplay.java
@@ -17,6 +17,7 @@
 package android.media;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Handler;
 import android.view.Surface;
 
@@ -127,7 +128,7 @@
     }
 
     // Called from native.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void notifyDisplayConnected(final Surface surface,
             final int width, final int height, final int flags, final int session) {
         mHandler.post(new Runnable() {
@@ -139,7 +140,7 @@
     }
 
     // Called from native.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void notifyDisplayDisconnected() {
         mHandler.post(new Runnable() {
             @Override
@@ -150,7 +151,7 @@
     }
 
     // Called from native.
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void notifyDisplayError(final int error) {
         mHandler.post(new Runnable() {
             @Override
diff --git a/media/java/android/media/RemoteDisplayState.java b/media/java/android/media/RemoteDisplayState.java
index fed361a..370f5b1 100644
--- a/media/java/android/media/RemoteDisplayState.java
+++ b/media/java/android/media/RemoteDisplayState.java
@@ -17,6 +17,7 @@
 package android.media;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.text.TextUtils;
@@ -41,10 +42,10 @@
     /**
      * A list of all remote displays.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final ArrayList<RemoteDisplayInfo> displays;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public RemoteDisplayState() {
         displays = new ArrayList<RemoteDisplayInfo>();
     }
diff --git a/media/java/android/media/Ringtone.java b/media/java/android/media/Ringtone.java
index d35bc41..bd783ce 100644
--- a/media/java/android/media/Ringtone.java
+++ b/media/java/android/media/Ringtone.java
@@ -26,6 +26,7 @@
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.Binder;
+import android.os.Build;
 import android.os.RemoteException;
 import android.provider.MediaStore;
 import android.provider.MediaStore.MediaColumns;
@@ -73,7 +74,7 @@
     private final IRingtonePlayer mRemotePlayer;
     private final Binder mRemoteToken;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private MediaPlayer mLocalPlayer;
     private final MyOnCompletionListener mCompletionListener = new MyOnCompletionListener();
 
@@ -372,7 +373,7 @@
                     AudioAttributes.toLegacyStreamType(mAudioAttributes)) != 0) {
                 startLocalPlayer();
             }
-        } else if (mAllowRemote && (mRemotePlayer != null)) {
+        } else if (mAllowRemote && (mRemotePlayer != null) && (mUri != null)) {
             final Uri canonicalUri = mUri.getCanonicalUri();
             final boolean looping;
             final float volume;
diff --git a/media/java/android/media/RingtoneManager.java b/media/java/android/media/RingtoneManager.java
index 8deb0c4..e2e13b0 100644
--- a/media/java/android/media/RingtoneManager.java
+++ b/media/java/android/media/RingtoneManager.java
@@ -34,7 +34,9 @@
 import android.content.pm.UserInfo;
 import android.content.res.AssetFileDescriptor;
 import android.database.Cursor;
+import android.database.StaleDataException;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Environment;
 import android.os.FileUtils;
 import android.os.IBinder;
@@ -492,7 +494,12 @@
     public Uri getRingtoneUri(int position) {
         // use cursor directly instead of requerying it, which could easily
         // cause position to shuffle.
-        if (mCursor == null || !mCursor.moveToPosition(position)) {
+        try {
+            if (mCursor == null || !mCursor.moveToPosition(position)) {
+                return null;
+            }
+        } catch (StaleDataException | IllegalStateException e) {
+            Log.e(TAG, "Unexpected Exception has been catched.", e);
             return null;
         }
 
@@ -579,7 +586,7 @@
         return new ExternalRingtonesCursorWrapper(res, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private Cursor getMediaRingtones(Context context) {
         // MediaStore now returns ringtones on other storage devices, even when
         // we don't have storage or audio permissions
@@ -722,7 +729,7 @@
      * @param volumeShaperConfig config for volume shaper of the ringtone if applied.
      * @see #getRingtone(Context, Uri)
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static Ringtone getRingtone(
             final Context context, Uri ringtoneUri, int streamType,
             @Nullable VolumeShaper.Configuration volumeShaperConfig) {
@@ -1130,11 +1137,13 @@
 
             // Try finding the scanned ringtone
             final String filename = getDefaultRingtoneFilename(type);
+            final String whichAudio = getQueryStringForType(type);
+            final String where = MediaColumns.DISPLAY_NAME + "=? AND " + whichAudio + "=?";
             final Uri baseUri = MediaStore.Audio.Media.INTERNAL_CONTENT_URI;
             try (Cursor cursor = context.getContentResolver().query(baseUri,
                     new String[] { MediaColumns._ID },
-                    MediaColumns.DISPLAY_NAME + "=?",
-                    new String[] { filename }, null)) {
+                    where,
+                    new String[] { filename, "1" }, null)) {
                 if (cursor.moveToFirst()) {
                     final Uri ringtoneUri = context.getContentResolver().canonicalizeOrElse(
                             ContentUris.withAppendedId(baseUri, cursor.getLong(0)));
@@ -1162,4 +1171,13 @@
             default: throw new IllegalArgumentException();
         }
     }
+
+    private static String getQueryStringForType(int type) {
+        switch (type) {
+            case TYPE_RINGTONE: return MediaStore.Audio.AudioColumns.IS_RINGTONE;
+            case TYPE_NOTIFICATION: return MediaStore.Audio.AudioColumns.IS_NOTIFICATION;
+            case TYPE_ALARM: return MediaStore.Audio.AudioColumns.IS_ALARM;
+            default: throw new IllegalArgumentException();
+        }
+    }
 }
diff --git a/media/java/android/media/TimedText.java b/media/java/android/media/TimedText.java
index 120642a..fd61547 100644
--- a/media/java/android/media/TimedText.java
+++ b/media/java/android/media/TimedText.java
@@ -18,6 +18,7 @@
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.graphics.Rect;
+import android.os.Build;
 import android.os.Parcel;
 import android.util.Log;
 
@@ -736,7 +737,7 @@
      * List of CharPos, Karaoke, Font, Style, and HyperText, or 3) an instance of
      * Justification.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private Object getObject(final int key) {
         if (containsKey(key)) {
             return mKeyObjectMap.get(key);
diff --git a/media/java/android/media/ToneGenerator.java b/media/java/android/media/ToneGenerator.java
index cc114a9..140e70d 100644
--- a/media/java/android/media/ToneGenerator.java
+++ b/media/java/android/media/ToneGenerator.java
@@ -17,6 +17,7 @@
 package android.media;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 
 
@@ -895,6 +896,6 @@
     protected void finalize() { native_finalize(); }
 
     @SuppressWarnings("unused")
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private long mNativeContext; // accessed by native methods
 }
diff --git a/media/java/android/media/TtmlRenderer.java b/media/java/android/media/TtmlRenderer.java
index e578264..3a6c390 100644
--- a/media/java/android/media/TtmlRenderer.java
+++ b/media/java/android/media/TtmlRenderer.java
@@ -18,6 +18,7 @@
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
+import android.os.Build;
 import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.util.Log;
@@ -49,7 +50,7 @@
 
     private TtmlRenderingWidget mRenderingWidget;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public TtmlRenderer(Context context) {
         mContext = context;
     }
diff --git a/media/java/android/media/VolumeShaper.java b/media/java/android/media/VolumeShaper.java
index 99dfe1e..df8d08e 100644
--- a/media/java/android/media/VolumeShaper.java
+++ b/media/java/android/media/VolumeShaper.java
@@ -20,6 +20,7 @@
 import android.annotation.Nullable;
 import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -413,23 +414,23 @@
          */
 
         // type of VolumeShaper
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private final int mType;
 
         // valid when mType is TYPE_ID
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private final int mId;
 
         // valid when mType is TYPE_SCALE
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private final int mOptionFlags;
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private final double mDurationMs;
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private final int mInterpolatorType;
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private final float[] mTimes;
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private final float[] mVolumes;
 
         @Override
@@ -572,7 +573,7 @@
          * Direct constructor for VolumeShaper.
          * Use the Builder instead.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private Configuration(@Type int type,
                 int id,
                 @OptionFlag int optionFlags,
@@ -1132,11 +1133,11 @@
 
         private static final int FLAG_PUBLIC_ALL = FLAG_REVERSE | FLAG_TERMINATE;
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private final int mFlags;
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private final int mReplaceId;
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private final float mXOffset;
 
         @Override
@@ -1198,7 +1199,7 @@
             }
         };
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private Operation(@Flag int flags, int replaceId, float xOffset) {
             mFlags = flags;
             mReplaceId = replaceId;
@@ -1358,9 +1359,9 @@
      *  Not for public use.
      */
     public static final class State implements Parcelable {
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private float mVolume;
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private float mXOffset;
 
         @Override
@@ -1411,7 +1412,7 @@
             }
         };
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         /* package */ State(float volume, float xOffset) {
             mVolume = volume;
             mXOffset = xOffset;
diff --git a/media/java/android/media/audiofx/AudioEffect.java b/media/java/android/media/audiofx/AudioEffect.java
index 4263521..0c6cc65 100644
--- a/media/java/android/media/audiofx/AudioEffect.java
+++ b/media/java/android/media/audiofx/AudioEffect.java
@@ -902,7 +902,7 @@
      * In case of success, the returns the number of meaningful integers in value array.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getParameter(int[] param, int[] value)
             throws IllegalStateException {
         if (param.length > 2 || value.length > 2) {
@@ -971,7 +971,7 @@
      * @see #getParameter(byte[], byte[])
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getParameter(int[] param, byte[] value)
             throws IllegalStateException {
         if (param.length > 2) {
diff --git a/media/java/android/media/audiopolicy/AudioMix.java b/media/java/android/media/audiopolicy/AudioMix.java
index 61113bc..221147d 100644
--- a/media/java/android/media/audiopolicy/AudioMix.java
+++ b/media/java/android/media/audiopolicy/AudioMix.java
@@ -19,11 +19,11 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.media.AudioDeviceInfo;
 import android.media.AudioFormat;
 import android.media.AudioSystem;
+import android.os.Build;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -32,28 +32,27 @@
 /**
  * @hide
  */
-@TestApi
 @SystemApi
 public class AudioMix {
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private AudioMixingRule mRule;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private AudioFormat mFormat;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mRouteFlags;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mMixType = MIX_TYPE_INVALID;
 
     // written by AudioPolicy
     int mMixState = MIX_STATE_DISABLED;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     int mCallbackFlags;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     String mDeviceAddress;
 
     // initialized in constructor, read by AudioPolicyConfig
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     final int mDeviceSystemType; // an AudioSystem.DEVICE_* value, not AudioDeviceInfo.TYPE_*
 
     /**
diff --git a/media/java/android/media/audiopolicy/AudioMixingRule.java b/media/java/android/media/audiopolicy/AudioMixingRule.java
index 68c9593..de15313 100644
--- a/media/java/android/media/audiopolicy/AudioMixingRule.java
+++ b/media/java/android/media/audiopolicy/AudioMixingRule.java
@@ -18,9 +18,9 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.media.AudioAttributes;
+import android.os.Build;
 import android.os.Parcel;
 import android.util.Log;
 
@@ -42,7 +42,6 @@
  *         .build();
  * </pre>
  */
-@TestApi
 @SystemApi
 public class AudioMixingRule {
 
@@ -111,11 +110,11 @@
 
     /** @hide */
     public static final class AudioMixMatchCriterion {
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         final AudioAttributes mAttr;
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         final int mIntProp;
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         final int mRule;
 
         /** input parameters must be valid */
@@ -201,13 +200,13 @@
 
     private final int mTargetMixType;
     int getTargetMixType() { return mTargetMixType; }
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final ArrayList<AudioMixMatchCriterion> mCriteria;
     /** @hide */
     public ArrayList<AudioMixMatchCriterion> getCriteria() { return mCriteria; }
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private boolean mAllowPrivilegedPlaybackCapture = false;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private boolean mVoiceCommunicationCaptureAllowed = false;
 
     /** @hide */
diff --git a/media/java/android/media/audiopolicy/AudioPolicy.java b/media/java/android/media/audiopolicy/AudioPolicy.java
index d3e9c7e..098b65c 100644
--- a/media/java/android/media/audiopolicy/AudioPolicy.java
+++ b/media/java/android/media/audiopolicy/AudioPolicy.java
@@ -58,7 +58,6 @@
  * @hide
  * AudioPolicy provides access to the management of audio routing and audio focus.
  */
-@TestApi
 @SystemApi
 public class AudioPolicy {
 
@@ -418,7 +417,6 @@
      * @param devices list of devices to which the audio stream of the application may be routed.
      * @return true if the change was successful, false otherwise.
      */
-    @TestApi
     @SystemApi
     public boolean setUidDeviceAffinity(int uid, @NonNull List<AudioDeviceInfo> devices) {
         if (devices == null) {
@@ -460,7 +458,6 @@
      * @param uid UID of the application affected.
      * @return true if the change was successful, false otherwise.
      */
-    @TestApi
     @SystemApi
     public boolean removeUidDeviceAffinity(int uid) {
         synchronized (mLock) {
@@ -486,7 +483,6 @@
      * {@link UserHandle#getIdentifier}. Not to be confused with application uid.
      * @return true if the change was successful, false otherwise.
      */
-    @TestApi
     @SystemApi
     public boolean removeUserIdDeviceAffinity(@UserIdInt int userId) {
         synchronized (mLock) {
@@ -519,7 +515,6 @@
      * @param devices list of devices to which the audio stream of the application may be routed.
      * @return true if the change was successful, false otherwise.
      */
-    @TestApi
     @SystemApi
     public boolean setUserIdDeviceAffinity(@UserIdInt int userId,
             @NonNull List<AudioDeviceInfo> devices) {
diff --git a/media/java/android/media/session/MediaSession.java b/media/java/android/media/session/MediaSession.java
index 8bf462c..a637fcb 100644
--- a/media/java/android/media/session/MediaSession.java
+++ b/media/java/android/media/session/MediaSession.java
@@ -33,6 +33,7 @@
 import android.media.session.MediaSessionManager.RemoteUserInfo;
 import android.net.Uri;
 import android.os.BadParcelableException;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
@@ -1397,7 +1398,7 @@
         public static final int UNKNOWN_ID = -1;
 
         private final MediaDescription mDescription;
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private final long mId;
 
         /**
diff --git a/media/java/android/media/soundtrigger/SoundTriggerDetector.java b/media/java/android/media/soundtrigger/SoundTriggerDetector.java
index 0895339..4f4090d 100644
--- a/media/java/android/media/soundtrigger/SoundTriggerDetector.java
+++ b/media/java/android/media/soundtrigger/SoundTriggerDetector.java
@@ -28,6 +28,7 @@
 import android.hardware.soundtrigger.SoundTrigger.ModuleProperties;
 import android.hardware.soundtrigger.SoundTrigger.RecognitionConfig;
 import android.media.AudioFormat;
+import android.os.Build;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
@@ -192,7 +193,7 @@
          * @hide
          */
         @Nullable
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public byte[] getData() {
             if (!mTriggerAvailable) {
                 return mData;
@@ -220,7 +221,7 @@
          * @hide
          */
         @Nullable
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public Integer getCaptureSession() {
             if (mCaptureAvailable) {
                 return mCaptureSession;
diff --git a/media/java/android/media/soundtrigger/SoundTriggerManager.java b/media/java/android/media/soundtrigger/SoundTriggerManager.java
index 7d51b10..edfc98b 100644
--- a/media/java/android/media/soundtrigger/SoundTriggerManager.java
+++ b/media/java/android/media/soundtrigger/SoundTriggerManager.java
@@ -33,6 +33,7 @@
 import android.hardware.soundtrigger.SoundTrigger.ModelParamRange;
 import android.hardware.soundtrigger.SoundTrigger.RecognitionConfig;
 import android.hardware.soundtrigger.SoundTrigger.SoundModel;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.ParcelUuid;
@@ -363,7 +364,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER)
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int stopRecognition(UUID soundModelId) {
         if (soundModelId == null) {
             return STATUS_ERROR;
@@ -380,7 +381,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER)
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int unloadSoundModel(UUID soundModelId) {
         if (soundModelId == null) {
             return STATUS_ERROR;
diff --git a/media/java/android/media/tv/TvInputInfo.java b/media/java/android/media/tv/TvInputInfo.java
index 377b2bc..195ad5b 100644
--- a/media/java/android/media/tv/TvInputInfo.java
+++ b/media/java/android/media/tv/TvInputInfo.java
@@ -38,6 +38,7 @@
 import android.hardware.hdmi.HdmiUtils;
 import android.hardware.hdmi.HdmiUtils.HdmiAddressRelativePosition;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -326,7 +327,7 @@
      * Returns the component of the service that implements this TV input.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ComponentName getComponent() {
         return new ComponentName(mService.serviceInfo.packageName, mService.serviceInfo.name);
     }
diff --git a/media/java/android/media/tv/TvInputService.java b/media/java/android/media/tv/TvInputService.java
index 95199cc..abbf478 100755
--- a/media/java/android/media/tv/TvInputService.java
+++ b/media/java/android/media/tv/TvInputService.java
@@ -34,6 +34,7 @@
 import android.media.PlaybackParams;
 import android.net.Uri;
 import android.os.AsyncTask;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
@@ -385,7 +386,7 @@
         private OverlayViewCleanUpTask mOverlayViewCleanUpTask;
         private boolean mOverlayViewEnabled;
         private IBinder mWindowToken;
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private Rect mOverlayFrame;
         private long mStartPositionMs = TvInputManager.TIME_SHIFT_INVALID_TIME;
         private long mCurrentPositionMs = TvInputManager.TIME_SHIFT_INVALID_TIME;
diff --git a/media/java/android/service/media/MediaBrowserService.java b/media/java/android/service/media/MediaBrowserService.java
index 06adf30..9e9d511 100644
--- a/media/java/android/service/media/MediaBrowserService.java
+++ b/media/java/android/service/media/MediaBrowserService.java
@@ -32,6 +32,7 @@
 import android.media.session.MediaSessionManager;
 import android.media.session.MediaSessionManager.RemoteUserInfo;
 import android.os.Binder;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
@@ -87,7 +88,7 @@
      * A key for passing the MediaItem to the ResultReceiver in getItem.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String KEY_MEDIA_ITEM = "media_item";
 
     private static final int RESULT_FLAG_OPTION_NOT_HANDLED = 1 << 0;
diff --git a/media/jni/Android.bp b/media/jni/Android.bp
index d2294b3..d346670 100644
--- a/media/jni/Android.bp
+++ b/media/jni/Android.bp
@@ -96,6 +96,11 @@
         "-Wunused",
         "-Wunreachable-code",
     ],
+
+    // Workaround Clang LTO crash.
+    lto: {
+        never: true,
+    },
 }
 
 cc_library_shared {
diff --git a/media/jni/audioeffect/Android.bp b/media/jni/audioeffect/Android.bp
index 5ba5c01..40e4c54 100644
--- a/media/jni/audioeffect/Android.bp
+++ b/media/jni/audioeffect/Android.bp
@@ -28,4 +28,9 @@
         "-Wunused",
         "-Wunreachable-code",
     ],
+
+    // Workaround Clang LTO crash.
+    lto: {
+        never: true,
+    },
 }
diff --git a/media/jni/audioeffect/Visualizer.cpp b/media/jni/audioeffect/Visualizer.cpp
index f419904..a74ae53 100644
--- a/media/jni/audioeffect/Visualizer.cpp
+++ b/media/jni/audioeffect/Visualizer.cpp
@@ -51,10 +51,11 @@
                          void* user,
                          audio_session_t sessionId,
                          audio_io_handle_t io,
-                         const AudioDeviceTypeAddr& device)
+                         const AudioDeviceTypeAddr& device,
+                         bool probe)
 {
     status_t status = AudioEffect::set(
-            SL_IID_VISUALIZATION, nullptr, priority, cbf, user, sessionId, io, device);
+            SL_IID_VISUALIZATION, nullptr, priority, cbf, user, sessionId, io, device, probe);
     if (status == NO_ERROR || status == ALREADY_EXISTS) {
         initCaptureSize();
     }
diff --git a/media/jni/audioeffect/Visualizer.h b/media/jni/audioeffect/Visualizer.h
index b943b96..8b6a62f 100644
--- a/media/jni/audioeffect/Visualizer.h
+++ b/media/jni/audioeffect/Visualizer.h
@@ -78,7 +78,8 @@
                     void* user = NULL,
                     audio_session_t sessionId = AUDIO_SESSION_OUTPUT_MIX,
                     audio_io_handle_t io = AUDIO_IO_HANDLE_NONE,
-                    const AudioDeviceTypeAddr& device = {});
+                    const AudioDeviceTypeAddr& device = {},
+                    bool probe = false);
 
     // Declared 'final' because we call this in ~Visualizer().
     status_t    setEnabled(bool enabled) final;
diff --git a/media/jni/audioeffect/android_media_AudioEffect.cpp b/media/jni/audioeffect/android_media_AudioEffect.cpp
index 96961ac2..d55e9d0 100644
--- a/media/jni/audioeffect/android_media_AudioEffect.cpp
+++ b/media/jni/audioeffect/android_media_AudioEffect.cpp
@@ -331,7 +331,7 @@
     }
 
     if (deviceType != AUDIO_DEVICE_NONE) {
-        device.mType = deviceType;
+        device.mType = (audio_devices_t)deviceType;
         ScopedUtfChars address(env, deviceAddress);
         device.mAddress = address.c_str();
     }
diff --git a/media/jni/soundpool/android_media_SoundPool.cpp b/media/jni/soundpool/android_media_SoundPool.cpp
index ca3cc855..26725f8 100644
--- a/media/jni/soundpool/android_media_SoundPool.cpp
+++ b/media/jni/soundpool/android_media_SoundPool.cpp
@@ -200,7 +200,7 @@
     paa->usage = (audio_usage_t) env->GetIntField(jaa, javaAudioAttrFields.fieldUsage);
     paa->content_type =
             (audio_content_type_t) env->GetIntField(jaa, javaAudioAttrFields.fieldContentType);
-    paa->flags = env->GetIntField(jaa, javaAudioAttrFields.fieldFlags);
+    paa->flags = (audio_flags_mask_t) env->GetIntField(jaa, javaAudioAttrFields.fieldFlags);
 
     ALOGV("android_media_SoundPool_native_setup");
     auto *ap = new SoundPool(maxChannels, paa);
diff --git a/media/native/midi/MidiDeviceInfo.cpp b/media/native/midi/MidiDeviceInfo.cpp
index ac68d26..8a573fb 100644
--- a/media/native/midi/MidiDeviceInfo.cpp
+++ b/media/native/midi/MidiDeviceInfo.cpp
@@ -90,13 +90,13 @@
 
 status_t MidiDeviceInfo::readStringVector(
         const Parcel* parcel, Vector<String16> *vectorPtr, size_t defaultLength) {
-    std::unique_ptr<std::vector<std::unique_ptr<String16>>> v;
+    std::optional<std::vector<std::optional<String16>>> v;
     status_t result = parcel->readString16Vector(&v);
     if (result != OK) return result;
     vectorPtr->clear();
-    if (v.get() != nullptr) {
+    if (v) {
         for (const auto& iter : *v) {
-            if (iter.get() != nullptr) {
+            if (iter) {
                 vectorPtr->push_back(*iter);
             } else {
                 vectorPtr->push_back(String16());
diff --git a/native/android/Android.bp b/native/android/Android.bp
index 797d3fd..02e1ebe 100644
--- a/native/android/Android.bp
+++ b/native/android/Android.bp
@@ -105,6 +105,7 @@
 cc_library_shared {
     name: "libandroid_net",
     defaults: ["libandroid_defaults"],
+    llndk_stubs: "libandroid_net.llndk",
     srcs: ["net.c"],
 
     shared_libs: ["libnetd_client"],
@@ -113,7 +114,7 @@
 }
 
 llndk_library {
-    name: "libandroid_net",
+    name: "libandroid_net.llndk",
     export_include_dirs: ["include"],
     symbol_file: "libandroid_net.map.txt",
     unversioned: true,
diff --git a/non-updatable-api/Android.bp b/non-updatable-api/Android.bp
deleted file mode 100644
index 4037781..0000000
--- a/non-updatable-api/Android.bp
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (C) 2020 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package {
-    default_visibility: ["//visibility:private"],
-}
-
-filegroup {
-    name: "non-updatable-current.txt",
-    srcs: ["current.txt"],
-    visibility: ["//frameworks/base/api"],
-}
-
-filegroup {
-    name: "non-updatable-system-current.txt",
-    srcs: ["system-current.txt"],
-    visibility: ["//frameworks/base/api"],
-}
-
-filegroup {
-    name: "non-updatable-module-lib-current.txt",
-    srcs: ["module-lib-current.txt"],
-    visibility: ["//frameworks/base/api"],
-}
diff --git a/non-updatable-api/current.txt b/non-updatable-api/current.txt
deleted file mode 100644
index 0aa0605..0000000
--- a/non-updatable-api/current.txt
+++ /dev/null
@@ -1,80518 +0,0 @@
-// Signature format: 2.0
-package android {
-
-  public final class Manifest {
-    ctor public Manifest();
-  }
-
-  public static final class Manifest.permission {
-    ctor public Manifest.permission();
-    field public static final String ACCEPT_HANDOVER = "android.permission.ACCEPT_HANDOVER";
-    field public static final String ACCESS_BACKGROUND_LOCATION = "android.permission.ACCESS_BACKGROUND_LOCATION";
-    field public static final String ACCESS_CHECKIN_PROPERTIES = "android.permission.ACCESS_CHECKIN_PROPERTIES";
-    field public static final String ACCESS_COARSE_LOCATION = "android.permission.ACCESS_COARSE_LOCATION";
-    field public static final String ACCESS_FINE_LOCATION = "android.permission.ACCESS_FINE_LOCATION";
-    field public static final String ACCESS_LOCATION_EXTRA_COMMANDS = "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS";
-    field public static final String ACCESS_MEDIA_LOCATION = "android.permission.ACCESS_MEDIA_LOCATION";
-    field public static final String ACCESS_NETWORK_STATE = "android.permission.ACCESS_NETWORK_STATE";
-    field public static final String ACCESS_NOTIFICATION_POLICY = "android.permission.ACCESS_NOTIFICATION_POLICY";
-    field public static final String ACCESS_WIFI_STATE = "android.permission.ACCESS_WIFI_STATE";
-    field public static final String ACCOUNT_MANAGER = "android.permission.ACCOUNT_MANAGER";
-    field public static final String ACTIVITY_RECOGNITION = "android.permission.ACTIVITY_RECOGNITION";
-    field public static final String ADD_VOICEMAIL = "com.android.voicemail.permission.ADD_VOICEMAIL";
-    field public static final String ANSWER_PHONE_CALLS = "android.permission.ANSWER_PHONE_CALLS";
-    field public static final String BATTERY_STATS = "android.permission.BATTERY_STATS";
-    field public static final String BIND_ACCESSIBILITY_SERVICE = "android.permission.BIND_ACCESSIBILITY_SERVICE";
-    field public static final String BIND_APPWIDGET = "android.permission.BIND_APPWIDGET";
-    field public static final String BIND_AUTOFILL_SERVICE = "android.permission.BIND_AUTOFILL_SERVICE";
-    field public static final String BIND_CALL_REDIRECTION_SERVICE = "android.permission.BIND_CALL_REDIRECTION_SERVICE";
-    field public static final String BIND_CARRIER_MESSAGING_CLIENT_SERVICE = "android.permission.BIND_CARRIER_MESSAGING_CLIENT_SERVICE";
-    field @Deprecated public static final String BIND_CARRIER_MESSAGING_SERVICE = "android.permission.BIND_CARRIER_MESSAGING_SERVICE";
-    field public static final String BIND_CARRIER_SERVICES = "android.permission.BIND_CARRIER_SERVICES";
-    field @Deprecated public static final String BIND_CHOOSER_TARGET_SERVICE = "android.permission.BIND_CHOOSER_TARGET_SERVICE";
-    field public static final String BIND_CONDITION_PROVIDER_SERVICE = "android.permission.BIND_CONDITION_PROVIDER_SERVICE";
-    field public static final String BIND_CONTROLS = "android.permission.BIND_CONTROLS";
-    field public static final String BIND_DEVICE_ADMIN = "android.permission.BIND_DEVICE_ADMIN";
-    field public static final String BIND_DREAM_SERVICE = "android.permission.BIND_DREAM_SERVICE";
-    field public static final String BIND_INCALL_SERVICE = "android.permission.BIND_INCALL_SERVICE";
-    field public static final String BIND_INPUT_METHOD = "android.permission.BIND_INPUT_METHOD";
-    field public static final String BIND_MIDI_DEVICE_SERVICE = "android.permission.BIND_MIDI_DEVICE_SERVICE";
-    field public static final String BIND_NFC_SERVICE = "android.permission.BIND_NFC_SERVICE";
-    field public static final String BIND_NOTIFICATION_LISTENER_SERVICE = "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE";
-    field public static final String BIND_PRINT_SERVICE = "android.permission.BIND_PRINT_SERVICE";
-    field public static final String BIND_QUICK_ACCESS_WALLET_SERVICE = "android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE";
-    field public static final String BIND_QUICK_SETTINGS_TILE = "android.permission.BIND_QUICK_SETTINGS_TILE";
-    field public static final String BIND_REMOTEVIEWS = "android.permission.BIND_REMOTEVIEWS";
-    field public static final String BIND_SCREENING_SERVICE = "android.permission.BIND_SCREENING_SERVICE";
-    field public static final String BIND_TELECOM_CONNECTION_SERVICE = "android.permission.BIND_TELECOM_CONNECTION_SERVICE";
-    field public static final String BIND_TEXT_SERVICE = "android.permission.BIND_TEXT_SERVICE";
-    field public static final String BIND_TV_INPUT = "android.permission.BIND_TV_INPUT";
-    field public static final String BIND_VISUAL_VOICEMAIL_SERVICE = "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE";
-    field public static final String BIND_VOICE_INTERACTION = "android.permission.BIND_VOICE_INTERACTION";
-    field public static final String BIND_VPN_SERVICE = "android.permission.BIND_VPN_SERVICE";
-    field public static final String BIND_VR_LISTENER_SERVICE = "android.permission.BIND_VR_LISTENER_SERVICE";
-    field public static final String BIND_WALLPAPER = "android.permission.BIND_WALLPAPER";
-    field public static final String BLUETOOTH = "android.permission.BLUETOOTH";
-    field public static final String BLUETOOTH_ADMIN = "android.permission.BLUETOOTH_ADMIN";
-    field public static final String BLUETOOTH_PRIVILEGED = "android.permission.BLUETOOTH_PRIVILEGED";
-    field public static final String BODY_SENSORS = "android.permission.BODY_SENSORS";
-    field public static final String BROADCAST_PACKAGE_REMOVED = "android.permission.BROADCAST_PACKAGE_REMOVED";
-    field public static final String BROADCAST_SMS = "android.permission.BROADCAST_SMS";
-    field public static final String BROADCAST_STICKY = "android.permission.BROADCAST_STICKY";
-    field public static final String BROADCAST_WAP_PUSH = "android.permission.BROADCAST_WAP_PUSH";
-    field public static final String CALL_COMPANION_APP = "android.permission.CALL_COMPANION_APP";
-    field public static final String CALL_PHONE = "android.permission.CALL_PHONE";
-    field public static final String CALL_PRIVILEGED = "android.permission.CALL_PRIVILEGED";
-    field public static final String CAMERA = "android.permission.CAMERA";
-    field public static final String CAPTURE_AUDIO_OUTPUT = "android.permission.CAPTURE_AUDIO_OUTPUT";
-    field public static final String CHANGE_COMPONENT_ENABLED_STATE = "android.permission.CHANGE_COMPONENT_ENABLED_STATE";
-    field public static final String CHANGE_CONFIGURATION = "android.permission.CHANGE_CONFIGURATION";
-    field public static final String CHANGE_NETWORK_STATE = "android.permission.CHANGE_NETWORK_STATE";
-    field public static final String CHANGE_WIFI_MULTICAST_STATE = "android.permission.CHANGE_WIFI_MULTICAST_STATE";
-    field public static final String CHANGE_WIFI_STATE = "android.permission.CHANGE_WIFI_STATE";
-    field public static final String CLEAR_APP_CACHE = "android.permission.CLEAR_APP_CACHE";
-    field public static final String CONTROL_LOCATION_UPDATES = "android.permission.CONTROL_LOCATION_UPDATES";
-    field public static final String DELETE_CACHE_FILES = "android.permission.DELETE_CACHE_FILES";
-    field public static final String DELETE_PACKAGES = "android.permission.DELETE_PACKAGES";
-    field public static final String DIAGNOSTIC = "android.permission.DIAGNOSTIC";
-    field public static final String DISABLE_KEYGUARD = "android.permission.DISABLE_KEYGUARD";
-    field public static final String DUMP = "android.permission.DUMP";
-    field public static final String EXPAND_STATUS_BAR = "android.permission.EXPAND_STATUS_BAR";
-    field public static final String FACTORY_TEST = "android.permission.FACTORY_TEST";
-    field public static final String FOREGROUND_SERVICE = "android.permission.FOREGROUND_SERVICE";
-    field public static final String GET_ACCOUNTS = "android.permission.GET_ACCOUNTS";
-    field public static final String GET_ACCOUNTS_PRIVILEGED = "android.permission.GET_ACCOUNTS_PRIVILEGED";
-    field public static final String GET_PACKAGE_SIZE = "android.permission.GET_PACKAGE_SIZE";
-    field @Deprecated public static final String GET_TASKS = "android.permission.GET_TASKS";
-    field public static final String GLOBAL_SEARCH = "android.permission.GLOBAL_SEARCH";
-    field public static final String INSTALL_LOCATION_PROVIDER = "android.permission.INSTALL_LOCATION_PROVIDER";
-    field public static final String INSTALL_PACKAGES = "android.permission.INSTALL_PACKAGES";
-    field public static final String INSTALL_SHORTCUT = "com.android.launcher.permission.INSTALL_SHORTCUT";
-    field public static final String INSTANT_APP_FOREGROUND_SERVICE = "android.permission.INSTANT_APP_FOREGROUND_SERVICE";
-    field public static final String INTERACT_ACROSS_PROFILES = "android.permission.INTERACT_ACROSS_PROFILES";
-    field public static final String INTERNET = "android.permission.INTERNET";
-    field public static final String KILL_BACKGROUND_PROCESSES = "android.permission.KILL_BACKGROUND_PROCESSES";
-    field public static final String LOADER_USAGE_STATS = "android.permission.LOADER_USAGE_STATS";
-    field public static final String LOCATION_HARDWARE = "android.permission.LOCATION_HARDWARE";
-    field public static final String MANAGE_DOCUMENTS = "android.permission.MANAGE_DOCUMENTS";
-    field public static final String MANAGE_EXTERNAL_STORAGE = "android.permission.MANAGE_EXTERNAL_STORAGE";
-    field public static final String MANAGE_OWN_CALLS = "android.permission.MANAGE_OWN_CALLS";
-    field public static final String MASTER_CLEAR = "android.permission.MASTER_CLEAR";
-    field public static final String MEDIA_CONTENT_CONTROL = "android.permission.MEDIA_CONTENT_CONTROL";
-    field public static final String MODIFY_AUDIO_SETTINGS = "android.permission.MODIFY_AUDIO_SETTINGS";
-    field public static final String MODIFY_PHONE_STATE = "android.permission.MODIFY_PHONE_STATE";
-    field public static final String MOUNT_FORMAT_FILESYSTEMS = "android.permission.MOUNT_FORMAT_FILESYSTEMS";
-    field public static final String MOUNT_UNMOUNT_FILESYSTEMS = "android.permission.MOUNT_UNMOUNT_FILESYSTEMS";
-    field public static final String NFC = "android.permission.NFC";
-    field public static final String NFC_PREFERRED_PAYMENT_INFO = "android.permission.NFC_PREFERRED_PAYMENT_INFO";
-    field public static final String NFC_TRANSACTION_EVENT = "android.permission.NFC_TRANSACTION_EVENT";
-    field public static final String PACKAGE_USAGE_STATS = "android.permission.PACKAGE_USAGE_STATS";
-    field @Deprecated public static final String PERSISTENT_ACTIVITY = "android.permission.PERSISTENT_ACTIVITY";
-    field @Deprecated public static final String PROCESS_OUTGOING_CALLS = "android.permission.PROCESS_OUTGOING_CALLS";
-    field public static final String QUERY_ALL_PACKAGES = "android.permission.QUERY_ALL_PACKAGES";
-    field public static final String READ_CALENDAR = "android.permission.READ_CALENDAR";
-    field public static final String READ_CALL_LOG = "android.permission.READ_CALL_LOG";
-    field public static final String READ_CONTACTS = "android.permission.READ_CONTACTS";
-    field public static final String READ_EXTERNAL_STORAGE = "android.permission.READ_EXTERNAL_STORAGE";
-    field @Deprecated public static final String READ_INPUT_STATE = "android.permission.READ_INPUT_STATE";
-    field public static final String READ_LOGS = "android.permission.READ_LOGS";
-    field public static final String READ_PHONE_NUMBERS = "android.permission.READ_PHONE_NUMBERS";
-    field public static final String READ_PHONE_STATE = "android.permission.READ_PHONE_STATE";
-    field public static final String READ_PRECISE_PHONE_STATE = "android.permission.READ_PRECISE_PHONE_STATE";
-    field public static final String READ_SMS = "android.permission.READ_SMS";
-    field public static final String READ_SYNC_SETTINGS = "android.permission.READ_SYNC_SETTINGS";
-    field public static final String READ_SYNC_STATS = "android.permission.READ_SYNC_STATS";
-    field public static final String READ_VOICEMAIL = "com.android.voicemail.permission.READ_VOICEMAIL";
-    field public static final String REBOOT = "android.permission.REBOOT";
-    field public static final String RECEIVE_BOOT_COMPLETED = "android.permission.RECEIVE_BOOT_COMPLETED";
-    field public static final String RECEIVE_MMS = "android.permission.RECEIVE_MMS";
-    field public static final String RECEIVE_SMS = "android.permission.RECEIVE_SMS";
-    field public static final String RECEIVE_WAP_PUSH = "android.permission.RECEIVE_WAP_PUSH";
-    field public static final String RECORD_AUDIO = "android.permission.RECORD_AUDIO";
-    field public static final String REORDER_TASKS = "android.permission.REORDER_TASKS";
-    field public static final String REQUEST_COMPANION_RUN_IN_BACKGROUND = "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND";
-    field public static final String REQUEST_COMPANION_USE_DATA_IN_BACKGROUND = "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND";
-    field public static final String REQUEST_DELETE_PACKAGES = "android.permission.REQUEST_DELETE_PACKAGES";
-    field public static final String REQUEST_IGNORE_BATTERY_OPTIMIZATIONS = "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS";
-    field public static final String REQUEST_INSTALL_PACKAGES = "android.permission.REQUEST_INSTALL_PACKAGES";
-    field public static final String REQUEST_PASSWORD_COMPLEXITY = "android.permission.REQUEST_PASSWORD_COMPLEXITY";
-    field @Deprecated public static final String RESTART_PACKAGES = "android.permission.RESTART_PACKAGES";
-    field public static final String SEND_RESPOND_VIA_MESSAGE = "android.permission.SEND_RESPOND_VIA_MESSAGE";
-    field public static final String SEND_SMS = "android.permission.SEND_SMS";
-    field public static final String SET_ALARM = "com.android.alarm.permission.SET_ALARM";
-    field public static final String SET_ALWAYS_FINISH = "android.permission.SET_ALWAYS_FINISH";
-    field public static final String SET_ANIMATION_SCALE = "android.permission.SET_ANIMATION_SCALE";
-    field public static final String SET_DEBUG_APP = "android.permission.SET_DEBUG_APP";
-    field @Deprecated public static final String SET_PREFERRED_APPLICATIONS = "android.permission.SET_PREFERRED_APPLICATIONS";
-    field public static final String SET_PROCESS_LIMIT = "android.permission.SET_PROCESS_LIMIT";
-    field public static final String SET_TIME = "android.permission.SET_TIME";
-    field public static final String SET_TIME_ZONE = "android.permission.SET_TIME_ZONE";
-    field public static final String SET_WALLPAPER = "android.permission.SET_WALLPAPER";
-    field public static final String SET_WALLPAPER_HINTS = "android.permission.SET_WALLPAPER_HINTS";
-    field public static final String SIGNAL_PERSISTENT_PROCESSES = "android.permission.SIGNAL_PERSISTENT_PROCESSES";
-    field public static final String SMS_FINANCIAL_TRANSACTIONS = "android.permission.SMS_FINANCIAL_TRANSACTIONS";
-    field public static final String START_VIEW_PERMISSION_USAGE = "android.permission.START_VIEW_PERMISSION_USAGE";
-    field public static final String STATUS_BAR = "android.permission.STATUS_BAR";
-    field public static final String SYSTEM_ALERT_WINDOW = "android.permission.SYSTEM_ALERT_WINDOW";
-    field public static final String TRANSMIT_IR = "android.permission.TRANSMIT_IR";
-    field public static final String UNINSTALL_SHORTCUT = "com.android.launcher.permission.UNINSTALL_SHORTCUT";
-    field public static final String UPDATE_DEVICE_STATS = "android.permission.UPDATE_DEVICE_STATS";
-    field public static final String USE_BIOMETRIC = "android.permission.USE_BIOMETRIC";
-    field @Deprecated public static final String USE_FINGERPRINT = "android.permission.USE_FINGERPRINT";
-    field public static final String USE_FULL_SCREEN_INTENT = "android.permission.USE_FULL_SCREEN_INTENT";
-    field public static final String USE_SIP = "android.permission.USE_SIP";
-    field public static final String VIBRATE = "android.permission.VIBRATE";
-    field public static final String WAKE_LOCK = "android.permission.WAKE_LOCK";
-    field public static final String WRITE_APN_SETTINGS = "android.permission.WRITE_APN_SETTINGS";
-    field public static final String WRITE_CALENDAR = "android.permission.WRITE_CALENDAR";
-    field public static final String WRITE_CALL_LOG = "android.permission.WRITE_CALL_LOG";
-    field public static final String WRITE_CONTACTS = "android.permission.WRITE_CONTACTS";
-    field public static final String WRITE_EXTERNAL_STORAGE = "android.permission.WRITE_EXTERNAL_STORAGE";
-    field public static final String WRITE_GSERVICES = "android.permission.WRITE_GSERVICES";
-    field public static final String WRITE_SECURE_SETTINGS = "android.permission.WRITE_SECURE_SETTINGS";
-    field public static final String WRITE_SETTINGS = "android.permission.WRITE_SETTINGS";
-    field public static final String WRITE_SYNC_SETTINGS = "android.permission.WRITE_SYNC_SETTINGS";
-    field public static final String WRITE_VOICEMAIL = "com.android.voicemail.permission.WRITE_VOICEMAIL";
-  }
-
-  public static final class Manifest.permission_group {
-    ctor public Manifest.permission_group();
-    field public static final String ACTIVITY_RECOGNITION = "android.permission-group.ACTIVITY_RECOGNITION";
-    field public static final String CALENDAR = "android.permission-group.CALENDAR";
-    field public static final String CALL_LOG = "android.permission-group.CALL_LOG";
-    field public static final String CAMERA = "android.permission-group.CAMERA";
-    field public static final String CONTACTS = "android.permission-group.CONTACTS";
-    field public static final String LOCATION = "android.permission-group.LOCATION";
-    field public static final String MICROPHONE = "android.permission-group.MICROPHONE";
-    field public static final String PHONE = "android.permission-group.PHONE";
-    field public static final String SENSORS = "android.permission-group.SENSORS";
-    field public static final String SMS = "android.permission-group.SMS";
-    field public static final String STORAGE = "android.permission-group.STORAGE";
-  }
-
-  public final class R {
-    ctor public R();
-  }
-
-  public static final class R.anim {
-    ctor public R.anim();
-    field public static final int accelerate_decelerate_interpolator = 17432580; // 0x10a0004
-    field public static final int accelerate_interpolator = 17432581; // 0x10a0005
-    field public static final int anticipate_interpolator = 17432583; // 0x10a0007
-    field public static final int anticipate_overshoot_interpolator = 17432585; // 0x10a0009
-    field public static final int bounce_interpolator = 17432586; // 0x10a000a
-    field public static final int cycle_interpolator = 17432588; // 0x10a000c
-    field public static final int decelerate_interpolator = 17432582; // 0x10a0006
-    field public static final int fade_in = 17432576; // 0x10a0000
-    field public static final int fade_out = 17432577; // 0x10a0001
-    field public static final int linear_interpolator = 17432587; // 0x10a000b
-    field public static final int overshoot_interpolator = 17432584; // 0x10a0008
-    field public static final int slide_in_left = 17432578; // 0x10a0002
-    field public static final int slide_out_right = 17432579; // 0x10a0003
-  }
-
-  public static final class R.animator {
-    ctor public R.animator();
-    field public static final int fade_in = 17498112; // 0x10b0000
-    field public static final int fade_out = 17498113; // 0x10b0001
-  }
-
-  public static final class R.array {
-    ctor public R.array();
-    field public static final int emailAddressTypes = 17235968; // 0x1070000
-    field public static final int imProtocols = 17235969; // 0x1070001
-    field public static final int organizationTypes = 17235970; // 0x1070002
-    field public static final int phoneTypes = 17235971; // 0x1070003
-    field public static final int postalAddressTypes = 17235972; // 0x1070004
-  }
-
-  public static final class R.attr {
-    ctor public R.attr();
-    field public static final int absListViewStyle = 16842858; // 0x101006a
-    field public static final int accessibilityEventTypes = 16843648; // 0x1010380
-    field public static final int accessibilityFeedbackType = 16843650; // 0x1010382
-    field public static final int accessibilityFlags = 16843652; // 0x1010384
-    field public static final int accessibilityHeading = 16844160; // 0x1010580
-    field public static final int accessibilityLiveRegion = 16843758; // 0x10103ee
-    field public static final int accessibilityPaneTitle = 16844156; // 0x101057c
-    field public static final int accessibilityTraversalAfter = 16843986; // 0x10104d2
-    field public static final int accessibilityTraversalBefore = 16843985; // 0x10104d1
-    field public static final int accountPreferences = 16843423; // 0x101029f
-    field public static final int accountType = 16843407; // 0x101028f
-    field public static final int action = 16842797; // 0x101002d
-    field public static final int actionBarDivider = 16843675; // 0x101039b
-    field public static final int actionBarItemBackground = 16843676; // 0x101039c
-    field public static final int actionBarPopupTheme = 16843917; // 0x101048d
-    field public static final int actionBarSize = 16843499; // 0x10102eb
-    field public static final int actionBarSplitStyle = 16843656; // 0x1010388
-    field public static final int actionBarStyle = 16843470; // 0x10102ce
-    field public static final int actionBarTabBarStyle = 16843508; // 0x10102f4
-    field public static final int actionBarTabStyle = 16843507; // 0x10102f3
-    field public static final int actionBarTabTextStyle = 16843509; // 0x10102f5
-    field public static final int actionBarTheme = 16843825; // 0x1010431
-    field public static final int actionBarWidgetTheme = 16843671; // 0x1010397
-    field public static final int actionButtonStyle = 16843480; // 0x10102d8
-    field public static final int actionDropDownStyle = 16843479; // 0x10102d7
-    field public static final int actionLayout = 16843515; // 0x10102fb
-    field public static final int actionMenuTextAppearance = 16843616; // 0x1010360
-    field public static final int actionMenuTextColor = 16843617; // 0x1010361
-    field public static final int actionModeBackground = 16843483; // 0x10102db
-    field public static final int actionModeCloseButtonStyle = 16843511; // 0x10102f7
-    field public static final int actionModeCloseDrawable = 16843484; // 0x10102dc
-    field public static final int actionModeCopyDrawable = 16843538; // 0x1010312
-    field public static final int actionModeCutDrawable = 16843537; // 0x1010311
-    field public static final int actionModeFindDrawable = 16843898; // 0x101047a
-    field public static final int actionModePasteDrawable = 16843539; // 0x1010313
-    field public static final int actionModeSelectAllDrawable = 16843646; // 0x101037e
-    field public static final int actionModeShareDrawable = 16843897; // 0x1010479
-    field public static final int actionModeSplitBackground = 16843677; // 0x101039d
-    field public static final int actionModeStyle = 16843668; // 0x1010394
-    field public static final int actionModeWebSearchDrawable = 16843899; // 0x101047b
-    field public static final int actionOverflowButtonStyle = 16843510; // 0x10102f6
-    field public static final int actionOverflowMenuStyle = 16843844; // 0x1010444
-    field public static final int actionProviderClass = 16843657; // 0x1010389
-    field public static final int actionViewClass = 16843516; // 0x10102fc
-    field public static final int activatedBackgroundIndicator = 16843517; // 0x10102fd
-    field public static final int activityCloseEnterAnimation = 16842938; // 0x10100ba
-    field public static final int activityCloseExitAnimation = 16842939; // 0x10100bb
-    field public static final int activityOpenEnterAnimation = 16842936; // 0x10100b8
-    field public static final int activityOpenExitAnimation = 16842937; // 0x10100b9
-    field public static final int addPrintersActivity = 16843750; // 0x10103e6
-    field public static final int addStatesFromChildren = 16842992; // 0x10100f0
-    field public static final int adjustViewBounds = 16843038; // 0x101011e
-    field public static final int advancedPrintOptionsActivity = 16843761; // 0x10103f1
-    field public static final int alertDialogIcon = 16843605; // 0x1010355
-    field public static final int alertDialogStyle = 16842845; // 0x101005d
-    field public static final int alertDialogTheme = 16843529; // 0x1010309
-    field public static final int alignmentMode = 16843642; // 0x101037a
-    field public static final int allContactsName = 16843468; // 0x10102cc
-    field public static final int allowAudioPlaybackCapture = 16844289; // 0x1010601
-    field public static final int allowBackup = 16843392; // 0x1010280
-    field public static final int allowClearUserData = 16842757; // 0x1010005
-    field public static final int allowEmbedded = 16843765; // 0x10103f5
-    field public static final int allowNativeHeapPointerTagging = 16844306; // 0x1010612
-    field public static final int allowParallelSyncs = 16843570; // 0x1010332
-    field public static final int allowSingleTap = 16843353; // 0x1010259
-    field public static final int allowTaskReparenting = 16843268; // 0x1010204
-    field public static final int allowUndo = 16843999; // 0x10104df
-    field public static final int alpha = 16843551; // 0x101031f
-    field public static final int alphabeticModifiers = 16844110; // 0x101054e
-    field public static final int alphabeticShortcut = 16843235; // 0x10101e3
-    field public static final int alwaysDrawnWithCache = 16842991; // 0x10100ef
-    field public static final int alwaysRetainTaskState = 16843267; // 0x1010203
-    field @Deprecated public static final int amPmBackgroundColor = 16843941; // 0x10104a5
-    field @Deprecated public static final int amPmTextColor = 16843940; // 0x10104a4
-    field public static final int ambientShadowAlpha = 16843966; // 0x10104be
-    field public static final int angle = 16843168; // 0x10101a0
-    field public static final int animateFirstView = 16843477; // 0x10102d5
-    field public static final int animateLayoutChanges = 16843506; // 0x10102f2
-    field public static final int animateOnClick = 16843356; // 0x101025c
-    field public static final int animatedImageDrawable = 16844298; // 0x101060a
-    field public static final int animation = 16843213; // 0x10101cd
-    field public static final int animationCache = 16842989; // 0x10100ed
-    field public static final int animationDuration = 16843026; // 0x1010112
-    field public static final int animationOrder = 16843214; // 0x10101ce
-    field @Deprecated public static final int animationResolution = 16843546; // 0x101031a
-    field public static final int antialias = 16843034; // 0x101011a
-    field @Deprecated public static final int anyDensity = 16843372; // 0x101026c
-    field public static final int apduServiceBanner = 16843757; // 0x10103ed
-    field public static final int apiKey = 16843281; // 0x1010211
-    field public static final int appCategory = 16844101; // 0x1010545
-    field public static final int appComponentFactory = 16844154; // 0x101057a
-    field public static final int author = 16843444; // 0x10102b4
-    field public static final int authorities = 16842776; // 0x1010018
-    field public static final int autoAdvanceViewId = 16843535; // 0x101030f
-    field public static final int autoCompleteTextViewStyle = 16842859; // 0x101006b
-    field public static final int autoLink = 16842928; // 0x10100b0
-    field public static final int autoMirrored = 16843754; // 0x10103ea
-    field public static final int autoRemoveFromRecents = 16843847; // 0x1010447
-    field public static final int autoRevokePermissions = 16844307; // 0x1010613
-    field public static final int autoSizeMaxTextSize = 16844102; // 0x1010546
-    field public static final int autoSizeMinTextSize = 16844088; // 0x1010538
-    field public static final int autoSizePresetSizes = 16844087; // 0x1010537
-    field public static final int autoSizeStepGranularity = 16844086; // 0x1010536
-    field public static final int autoSizeTextType = 16844085; // 0x1010535
-    field public static final int autoStart = 16843445; // 0x10102b5
-    field @Deprecated public static final int autoText = 16843114; // 0x101016a
-    field public static final int autoUrlDetect = 16843404; // 0x101028c
-    field public static final int autoVerify = 16844014; // 0x10104ee
-    field public static final int autofillHints = 16844118; // 0x1010556
-    field public static final int autofilledHighlight = 16844136; // 0x1010568
-    field public static final int background = 16842964; // 0x10100d4
-    field public static final int backgroundDimAmount = 16842802; // 0x1010032
-    field public static final int backgroundDimEnabled = 16843295; // 0x101021f
-    field public static final int backgroundSplit = 16843659; // 0x101038b
-    field public static final int backgroundStacked = 16843658; // 0x101038a
-    field public static final int backgroundTint = 16843883; // 0x101046b
-    field public static final int backgroundTintMode = 16843884; // 0x101046c
-    field public static final int backupAgent = 16843391; // 0x101027f
-    field public static final int backupInForeground = 16844058; // 0x101051a
-    field public static final int banner = 16843762; // 0x10103f2
-    field public static final int baseline = 16843548; // 0x101031c
-    field public static final int baselineAlignBottom = 16843042; // 0x1010122
-    field public static final int baselineAligned = 16843046; // 0x1010126
-    field public static final int baselineAlignedChildIndex = 16843047; // 0x1010127
-    field public static final int bitmap = 16844054; // 0x1010516
-    field public static final int borderlessButtonStyle = 16843563; // 0x101032b
-    field public static final int bottom = 16843184; // 0x10101b0
-    field public static final int bottomBright = 16842957; // 0x10100cd
-    field public static final int bottomDark = 16842953; // 0x10100c9
-    field public static final int bottomLeftRadius = 16843179; // 0x10101ab
-    field public static final int bottomMedium = 16842958; // 0x10100ce
-    field public static final int bottomOffset = 16843351; // 0x1010257
-    field public static final int bottomRightRadius = 16843180; // 0x10101ac
-    field public static final int breadCrumbShortTitle = 16843524; // 0x1010304
-    field public static final int breadCrumbTitle = 16843523; // 0x1010303
-    field public static final int breakStrategy = 16843997; // 0x10104dd
-    field public static final int bufferType = 16843086; // 0x101014e
-    field public static final int button = 16843015; // 0x1010107
-    field public static final int buttonBarButtonStyle = 16843567; // 0x101032f
-    field public static final int buttonBarNegativeButtonStyle = 16843915; // 0x101048b
-    field public static final int buttonBarNeutralButtonStyle = 16843914; // 0x101048a
-    field public static final int buttonBarPositiveButtonStyle = 16843913; // 0x1010489
-    field public static final int buttonBarStyle = 16843566; // 0x101032e
-    field public static final int buttonCornerRadius = 16844149; // 0x1010575
-    field public static final int buttonGravity = 16844030; // 0x10104fe
-    field public static final int buttonStyle = 16842824; // 0x1010048
-    field public static final int buttonStyleInset = 16842826; // 0x101004a
-    field public static final int buttonStyleSmall = 16842825; // 0x1010049
-    field public static final int buttonStyleToggle = 16842827; // 0x101004b
-    field public static final int buttonTint = 16843887; // 0x101046f
-    field public static final int buttonTintMode = 16843888; // 0x1010470
-    field public static final int cacheColorHint = 16843009; // 0x1010101
-    field public static final int calendarTextColor = 16843931; // 0x101049b
-    field public static final int calendarViewShown = 16843596; // 0x101034c
-    field public static final int calendarViewStyle = 16843613; // 0x101035d
-    field public static final int canControlMagnification = 16844039; // 0x1010507
-    field public static final int canPerformGestures = 16844045; // 0x101050d
-    field public static final int canRecord = 16844060; // 0x101051c
-    field @Deprecated public static final int canRequestEnhancedWebAccessibility = 16843736; // 0x10103d8
-    field public static final int canRequestFilterKeyEvents = 16843737; // 0x10103d9
-    field public static final int canRequestFingerprintGestures = 16844109; // 0x101054d
-    field public static final int canRequestTouchExplorationMode = 16843735; // 0x10103d7
-    field public static final int canRetrieveWindowContent = 16843653; // 0x1010385
-    field public static final int canTakeScreenshot = 16844303; // 0x101060f
-    field public static final int candidatesTextStyleSpans = 16843312; // 0x1010230
-    field public static final int cantSaveState = 16844142; // 0x101056e
-    field @Deprecated public static final int capitalize = 16843113; // 0x1010169
-    field public static final int category = 16843752; // 0x10103e8
-    field public static final int centerBright = 16842956; // 0x10100cc
-    field public static final int centerColor = 16843275; // 0x101020b
-    field public static final int centerDark = 16842952; // 0x10100c8
-    field public static final int centerMedium = 16842959; // 0x10100cf
-    field public static final int centerX = 16843170; // 0x10101a2
-    field public static final int centerY = 16843171; // 0x10101a3
-    field public static final int certDigest = 16844104; // 0x1010548
-    field public static final int checkBoxPreferenceStyle = 16842895; // 0x101008f
-    field public static final int checkMark = 16843016; // 0x1010108
-    field public static final int checkMarkTint = 16843943; // 0x10104a7
-    field public static final int checkMarkTintMode = 16843944; // 0x10104a8
-    field public static final int checkable = 16843237; // 0x10101e5
-    field public static final int checkableBehavior = 16843232; // 0x10101e0
-    field public static final int checkboxStyle = 16842860; // 0x101006c
-    field public static final int checked = 16843014; // 0x1010106
-    field public static final int checkedButton = 16843080; // 0x1010148
-    field public static final int checkedTextViewStyle = 16843720; // 0x10103c8
-    field public static final int childDivider = 16843025; // 0x1010111
-    field public static final int childIndicator = 16843020; // 0x101010c
-    field public static final int childIndicatorEnd = 16843732; // 0x10103d4
-    field public static final int childIndicatorLeft = 16843023; // 0x101010f
-    field public static final int childIndicatorRight = 16843024; // 0x1010110
-    field public static final int childIndicatorStart = 16843731; // 0x10103d3
-    field public static final int choiceMode = 16843051; // 0x101012b
-    field public static final int classLoader = 16844139; // 0x101056b
-    field public static final int clearTaskOnLaunch = 16842773; // 0x1010015
-    field public static final int clickable = 16842981; // 0x10100e5
-    field public static final int clipChildren = 16842986; // 0x10100ea
-    field public static final int clipOrientation = 16843274; // 0x101020a
-    field public static final int clipToPadding = 16842987; // 0x10100eb
-    field public static final int closeIcon = 16843905; // 0x1010481
-    field @Deprecated public static final int codes = 16843330; // 0x1010242
-    field public static final int collapseColumns = 16843083; // 0x101014b
-    field public static final int collapseContentDescription = 16843984; // 0x10104d0
-    field public static final int collapseIcon = 16844031; // 0x10104ff
-    field public static final int color = 16843173; // 0x10101a5
-    field public static final int colorAccent = 16843829; // 0x1010435
-    field public static final int colorActivatedHighlight = 16843664; // 0x1010390
-    field public static final int colorBackground = 16842801; // 0x1010031
-    field public static final int colorBackgroundCacheHint = 16843435; // 0x10102ab
-    field public static final int colorBackgroundFloating = 16844002; // 0x10104e2
-    field public static final int colorButtonNormal = 16843819; // 0x101042b
-    field public static final int colorControlActivated = 16843818; // 0x101042a
-    field public static final int colorControlHighlight = 16843820; // 0x101042c
-    field public static final int colorControlNormal = 16843817; // 0x1010429
-    field public static final int colorEdgeEffect = 16843982; // 0x10104ce
-    field public static final int colorError = 16844099; // 0x1010543
-    field public static final int colorFocusedHighlight = 16843663; // 0x101038f
-    field public static final int colorForeground = 16842800; // 0x1010030
-    field public static final int colorForegroundInverse = 16843270; // 0x1010206
-    field public static final int colorLongPressedHighlight = 16843662; // 0x101038e
-    field public static final int colorMode = 16844106; // 0x101054a
-    field public static final int colorMultiSelectHighlight = 16843665; // 0x1010391
-    field public static final int colorPressedHighlight = 16843661; // 0x101038d
-    field public static final int colorPrimary = 16843827; // 0x1010433
-    field public static final int colorPrimaryDark = 16843828; // 0x1010434
-    field public static final int colorSecondary = 16844080; // 0x1010530
-    field public static final int columnCount = 16843639; // 0x1010377
-    field public static final int columnDelay = 16843215; // 0x10101cf
-    field public static final int columnOrderPreserved = 16843640; // 0x1010378
-    field public static final int columnWidth = 16843031; // 0x1010117
-    field public static final int commitIcon = 16843909; // 0x1010485
-    field public static final int compatibleWidthLimitDp = 16843621; // 0x1010365
-    field public static final int completionHint = 16843122; // 0x1010172
-    field public static final int completionHintView = 16843123; // 0x1010173
-    field public static final int completionThreshold = 16843124; // 0x1010174
-    field public static final int configChanges = 16842783; // 0x101001f
-    field public static final int configure = 16843357; // 0x101025d
-    field public static final int constantSize = 16843158; // 0x1010196
-    field public static final int content = 16843355; // 0x101025b
-    field public static final int contentAgeHint = 16843961; // 0x10104b9
-    field public static final int contentAuthority = 16843408; // 0x1010290
-    field public static final int contentDescription = 16843379; // 0x1010273
-    field public static final int contentInsetEnd = 16843860; // 0x1010454
-    field public static final int contentInsetEndWithActions = 16844067; // 0x1010523
-    field public static final int contentInsetLeft = 16843861; // 0x1010455
-    field public static final int contentInsetRight = 16843862; // 0x1010456
-    field public static final int contentInsetStart = 16843859; // 0x1010453
-    field public static final int contentInsetStartWithNavigation = 16844066; // 0x1010522
-    field public static final int contextClickable = 16844007; // 0x10104e7
-    field public static final int contextDescription = 16844078; // 0x101052e
-    field public static final int contextPopupMenuStyle = 16844033; // 0x1010501
-    field public static final int contextUri = 16844077; // 0x101052d
-    field public static final int controlX1 = 16843772; // 0x10103fc
-    field public static final int controlX2 = 16843774; // 0x10103fe
-    field public static final int controlY1 = 16843773; // 0x10103fd
-    field public static final int controlY2 = 16843775; // 0x10103ff
-    field public static final int countDown = 16844059; // 0x101051b
-    field public static final int country = 16843962; // 0x10104ba
-    field public static final int cropToPadding = 16843043; // 0x1010123
-    field public static final int crossProfile = 16844302; // 0x101060e
-    field public static final int cursorVisible = 16843090; // 0x1010152
-    field public static final int customNavigationLayout = 16843474; // 0x10102d2
-    field public static final int customTokens = 16843579; // 0x101033b
-    field public static final int cycles = 16843220; // 0x10101d4
-    field public static final int dashGap = 16843175; // 0x10101a7
-    field public static final int dashWidth = 16843174; // 0x10101a6
-    field public static final int data = 16842798; // 0x101002e
-    field public static final int datePickerDialogTheme = 16843948; // 0x10104ac
-    field public static final int datePickerMode = 16843955; // 0x10104b3
-    field public static final int datePickerStyle = 16843612; // 0x101035c
-    field public static final int dateTextAppearance = 16843593; // 0x1010349
-    field @Deprecated public static final int dayOfWeekBackground = 16843924; // 0x1010494
-    field @Deprecated public static final int dayOfWeekTextAppearance = 16843925; // 0x1010495
-    field public static final int debuggable = 16842767; // 0x101000f
-    field public static final int defaultFocusHighlightEnabled = 16844130; // 0x1010562
-    field public static final int defaultHeight = 16844021; // 0x10104f5
-    field public static final int defaultToDeviceProtectedStorage = 16844036; // 0x1010504
-    field public static final int defaultValue = 16843245; // 0x10101ed
-    field public static final int defaultWidth = 16844020; // 0x10104f4
-    field public static final int delay = 16843212; // 0x10101cc
-    field public static final int dependency = 16843244; // 0x10101ec
-    field public static final int descendantFocusability = 16842993; // 0x10100f1
-    field public static final int description = 16842784; // 0x1010020
-    field public static final int detachWallpaper = 16843430; // 0x10102a6
-    field public static final int detailColumn = 16843427; // 0x10102a3
-    field public static final int detailSocialSummary = 16843428; // 0x10102a4
-    field public static final int detailsElementBackground = 16843598; // 0x101034e
-    field public static final int dial = 16843010; // 0x1010102
-    field public static final int dialogCornerRadius = 16844145; // 0x1010571
-    field public static final int dialogIcon = 16843252; // 0x10101f4
-    field public static final int dialogLayout = 16843255; // 0x10101f7
-    field public static final int dialogMessage = 16843251; // 0x10101f3
-    field public static final int dialogPreferenceStyle = 16842897; // 0x1010091
-    field public static final int dialogPreferredPadding = 16843987; // 0x10104d3
-    field public static final int dialogTheme = 16843528; // 0x1010308
-    field public static final int dialogTitle = 16843250; // 0x10101f2
-    field public static final int digits = 16843110; // 0x1010166
-    field public static final int directBootAware = 16844037; // 0x1010505
-    field public static final int direction = 16843217; // 0x10101d1
-    field @Deprecated public static final int directionDescriptions = 16843681; // 0x10103a1
-    field public static final int directionPriority = 16843218; // 0x10101d2
-    field public static final int disableDependentsState = 16843249; // 0x10101f1
-    field public static final int disabledAlpha = 16842803; // 0x1010033
-    field public static final int displayOptions = 16843472; // 0x10102d0
-    field public static final int dither = 16843036; // 0x101011c
-    field public static final int divider = 16843049; // 0x1010129
-    field public static final int dividerHeight = 16843050; // 0x101012a
-    field public static final int dividerHorizontal = 16843564; // 0x101032c
-    field public static final int dividerPadding = 16843562; // 0x101032a
-    field public static final int dividerVertical = 16843530; // 0x101030a
-    field public static final int documentLaunchMode = 16843845; // 0x1010445
-    field public static final int drawSelectorOnTop = 16843004; // 0x10100fc
-    field public static final int drawable = 16843161; // 0x1010199
-    field public static final int drawableBottom = 16843118; // 0x101016e
-    field public static final int drawableEnd = 16843667; // 0x1010393
-    field public static final int drawableLeft = 16843119; // 0x101016f
-    field public static final int drawablePadding = 16843121; // 0x1010171
-    field public static final int drawableRight = 16843120; // 0x1010170
-    field public static final int drawableStart = 16843666; // 0x1010392
-    field public static final int drawableTint = 16843990; // 0x10104d6
-    field public static final int drawableTintMode = 16843991; // 0x10104d7
-    field public static final int drawableTop = 16843117; // 0x101016d
-    field public static final int drawingCacheQuality = 16842984; // 0x10100e8
-    field public static final int dropDownAnchor = 16843363; // 0x1010263
-    field public static final int dropDownHeight = 16843395; // 0x1010283
-    field public static final int dropDownHintAppearance = 16842888; // 0x1010088
-    field public static final int dropDownHorizontalOffset = 16843436; // 0x10102ac
-    field public static final int dropDownItemStyle = 16842886; // 0x1010086
-    field public static final int dropDownListViewStyle = 16842861; // 0x101006d
-    field public static final int dropDownSelector = 16843125; // 0x1010175
-    field public static final int dropDownSpinnerStyle = 16843478; // 0x10102d6
-    field public static final int dropDownVerticalOffset = 16843437; // 0x10102ad
-    field public static final int dropDownWidth = 16843362; // 0x1010262
-    field public static final int duplicateParentState = 16842985; // 0x10100e9
-    field public static final int duration = 16843160; // 0x1010198
-    field public static final int editTextBackground = 16843602; // 0x1010352
-    field public static final int editTextColor = 16843601; // 0x1010351
-    field public static final int editTextPreferenceStyle = 16842898; // 0x1010092
-    field public static final int editTextStyle = 16842862; // 0x101006e
-    field @Deprecated public static final int editable = 16843115; // 0x101016b
-    field public static final int editorExtras = 16843300; // 0x1010224
-    field public static final int elegantTextHeight = 16843869; // 0x101045d
-    field public static final int elevation = 16843840; // 0x1010440
-    field public static final int ellipsize = 16842923; // 0x10100ab
-    field public static final int ems = 16843096; // 0x1010158
-    field public static final int enableVrMode = 16844069; // 0x1010525
-    field public static final int enabled = 16842766; // 0x101000e
-    field public static final int end = 16843996; // 0x10104dc
-    field public static final int endColor = 16843166; // 0x101019e
-    field public static final int endX = 16844050; // 0x1010512
-    field public static final int endY = 16844051; // 0x1010513
-    field @Deprecated public static final int endYear = 16843133; // 0x101017d
-    field public static final int enforceNavigationBarContrast = 16844293; // 0x1010605
-    field public static final int enforceStatusBarContrast = 16844292; // 0x1010604
-    field public static final int enterFadeDuration = 16843532; // 0x101030c
-    field public static final int entries = 16842930; // 0x10100b2
-    field public static final int entryValues = 16843256; // 0x10101f8
-    field public static final int eventsInterceptionEnabled = 16843389; // 0x101027d
-    field public static final int excludeClass = 16843842; // 0x1010442
-    field public static final int excludeFromRecents = 16842775; // 0x1010017
-    field public static final int excludeId = 16843841; // 0x1010441
-    field public static final int excludeName = 16843854; // 0x101044e
-    field public static final int exitFadeDuration = 16843533; // 0x101030d
-    field public static final int expandableListPreferredChildIndicatorLeft = 16842834; // 0x1010052
-    field public static final int expandableListPreferredChildIndicatorRight = 16842835; // 0x1010053
-    field public static final int expandableListPreferredChildPaddingLeft = 16842831; // 0x101004f
-    field public static final int expandableListPreferredItemIndicatorLeft = 16842832; // 0x1010050
-    field public static final int expandableListPreferredItemIndicatorRight = 16842833; // 0x1010051
-    field public static final int expandableListPreferredItemPaddingLeft = 16842830; // 0x101004e
-    field public static final int expandableListViewStyle = 16842863; // 0x101006f
-    field public static final int expandableListViewWhiteStyle = 16843446; // 0x10102b6
-    field public static final int exported = 16842768; // 0x1010010
-    field public static final int externalService = 16844046; // 0x101050e
-    field public static final int extraTension = 16843371; // 0x101026b
-    field public static final int extractNativeLibs = 16844010; // 0x10104ea
-    field public static final int factor = 16843219; // 0x10101d3
-    field public static final int fadeDuration = 16843384; // 0x1010278
-    field public static final int fadeEnabled = 16843390; // 0x101027e
-    field public static final int fadeOffset = 16843383; // 0x1010277
-    field public static final int fadeScrollbars = 16843434; // 0x10102aa
-    field public static final int fadingEdge = 16842975; // 0x10100df
-    field public static final int fadingEdgeLength = 16842976; // 0x10100e0
-    field public static final int fadingMode = 16843745; // 0x10103e1
-    field public static final int fallbackLineSpacing = 16844155; // 0x101057b
-    field public static final int fastScrollAlwaysVisible = 16843573; // 0x1010335
-    field public static final int fastScrollEnabled = 16843302; // 0x1010226
-    field public static final int fastScrollOverlayPosition = 16843578; // 0x101033a
-    field public static final int fastScrollPreviewBackgroundLeft = 16843575; // 0x1010337
-    field public static final int fastScrollPreviewBackgroundRight = 16843576; // 0x1010338
-    field public static final int fastScrollStyle = 16843767; // 0x10103f7
-    field public static final int fastScrollTextColor = 16843609; // 0x1010359
-    field public static final int fastScrollThumbDrawable = 16843574; // 0x1010336
-    field public static final int fastScrollTrackDrawable = 16843577; // 0x1010339
-    field public static final int fillAfter = 16843197; // 0x10101bd
-    field public static final int fillAlpha = 16843980; // 0x10104cc
-    field public static final int fillBefore = 16843196; // 0x10101bc
-    field public static final int fillColor = 16843780; // 0x1010404
-    field public static final int fillEnabled = 16843343; // 0x101024f
-    field public static final int fillType = 16844062; // 0x101051e
-    field public static final int fillViewport = 16843130; // 0x101017a
-    field public static final int filter = 16843035; // 0x101011b
-    field public static final int filterTouchesWhenObscured = 16843460; // 0x10102c4
-    field public static final int fingerprintAuthDrawable = 16844008; // 0x10104e8
-    field public static final int finishOnCloseSystemDialogs = 16843431; // 0x10102a7
-    field public static final int finishOnTaskLaunch = 16842772; // 0x1010014
-    field public static final int firstBaselineToTopHeight = 16844157; // 0x101057d
-    field public static final int firstDayOfWeek = 16843581; // 0x101033d
-    field public static final int fitsSystemWindows = 16842973; // 0x10100dd
-    field public static final int flipInterval = 16843129; // 0x1010179
-    field public static final int focusable = 16842970; // 0x10100da
-    field public static final int focusableInTouchMode = 16842971; // 0x10100db
-    field public static final int focusedByDefault = 16844100; // 0x1010544
-    field @Deprecated public static final int focusedMonthDateColor = 16843587; // 0x1010343
-    field public static final int font = 16844082; // 0x1010532
-    field public static final int fontFamily = 16843692; // 0x10103ac
-    field public static final int fontFeatureSettings = 16843959; // 0x10104b7
-    field public static final int fontProviderAuthority = 16844112; // 0x1010550
-    field public static final int fontProviderCerts = 16844125; // 0x101055d
-    field public static final int fontProviderPackage = 16844119; // 0x1010557
-    field public static final int fontProviderQuery = 16844113; // 0x1010551
-    field public static final int fontStyle = 16844095; // 0x101053f
-    field public static final int fontVariationSettings = 16844144; // 0x1010570
-    field public static final int fontWeight = 16844083; // 0x1010533
-    field public static final int footerDividersEnabled = 16843311; // 0x101022f
-    field public static final int forceDarkAllowed = 16844172; // 0x101058c
-    field public static final int forceHasOverlappingRendering = 16844065; // 0x1010521
-    field public static final int forceQueryable = 16844296; // 0x1010608
-    field public static final int forceUriPermissions = 16844191; // 0x101059f
-    field public static final int foreground = 16843017; // 0x1010109
-    field public static final int foregroundGravity = 16843264; // 0x1010200
-    field public static final int foregroundServiceType = 16844185; // 0x1010599
-    field public static final int foregroundTint = 16843885; // 0x101046d
-    field public static final int foregroundTintMode = 16843886; // 0x101046e
-    field public static final int format = 16843013; // 0x1010105
-    field public static final int format12Hour = 16843722; // 0x10103ca
-    field public static final int format24Hour = 16843723; // 0x10103cb
-    field public static final int fraction = 16843992; // 0x10104d8
-    field public static final int fragment = 16843491; // 0x10102e3
-    field public static final int fragmentAllowEnterTransitionOverlap = 16843976; // 0x10104c8
-    field public static final int fragmentAllowReturnTransitionOverlap = 16843977; // 0x10104c9
-    field public static final int fragmentCloseEnterAnimation = 16843495; // 0x10102e7
-    field public static final int fragmentCloseExitAnimation = 16843496; // 0x10102e8
-    field public static final int fragmentEnterTransition = 16843971; // 0x10104c3
-    field public static final int fragmentExitTransition = 16843970; // 0x10104c2
-    field public static final int fragmentFadeEnterAnimation = 16843497; // 0x10102e9
-    field public static final int fragmentFadeExitAnimation = 16843498; // 0x10102ea
-    field public static final int fragmentOpenEnterAnimation = 16843493; // 0x10102e5
-    field public static final int fragmentOpenExitAnimation = 16843494; // 0x10102e6
-    field public static final int fragmentReenterTransition = 16843975; // 0x10104c7
-    field public static final int fragmentReturnTransition = 16843973; // 0x10104c5
-    field public static final int fragmentSharedElementEnterTransition = 16843972; // 0x10104c4
-    field public static final int fragmentSharedElementReturnTransition = 16843974; // 0x10104c6
-    field public static final int freezesText = 16843116; // 0x101016c
-    field public static final int fromAlpha = 16843210; // 0x10101ca
-    field public static final int fromDegrees = 16843187; // 0x10101b3
-    field public static final int fromId = 16843850; // 0x101044a
-    field public static final int fromScene = 16843741; // 0x10103dd
-    field public static final int fromXDelta = 16843206; // 0x10101c6
-    field public static final int fromXScale = 16843202; // 0x10101c2
-    field public static final int fromYDelta = 16843208; // 0x10101c8
-    field public static final int fromYScale = 16843204; // 0x10101c4
-    field public static final int fullBackupContent = 16844011; // 0x10104eb
-    field public static final int fullBackupOnly = 16843891; // 0x1010473
-    field public static final int fullBright = 16842954; // 0x10100ca
-    field public static final int fullDark = 16842950; // 0x10100c6
-    field public static final int functionalTest = 16842787; // 0x1010023
-    field public static final int galleryItemBackground = 16842828; // 0x101004c
-    field public static final int galleryStyle = 16842864; // 0x1010070
-    field public static final int gestureColor = 16843381; // 0x1010275
-    field public static final int gestureStrokeAngleThreshold = 16843388; // 0x101027c
-    field public static final int gestureStrokeLengthThreshold = 16843386; // 0x101027a
-    field public static final int gestureStrokeSquarenessThreshold = 16843387; // 0x101027b
-    field public static final int gestureStrokeType = 16843385; // 0x1010279
-    field public static final int gestureStrokeWidth = 16843380; // 0x1010274
-    field public static final int glEsVersion = 16843393; // 0x1010281
-    field public static final int goIcon = 16843906; // 0x1010482
-    field public static final int gradientRadius = 16843172; // 0x10101a4
-    field public static final int grantUriPermissions = 16842779; // 0x101001b
-    field public static final int gravity = 16842927; // 0x10100af
-    field public static final int gridViewStyle = 16842865; // 0x1010071
-    field public static final int groupIndicator = 16843019; // 0x101010b
-    field public static final int gwpAsanMode = 16844310; // 0x1010616
-    field public static final int hand_hour = 16843011; // 0x1010103
-    field public static final int hand_minute = 16843012; // 0x1010104
-    field public static final int handle = 16843354; // 0x101025a
-    field public static final int handleProfiling = 16842786; // 0x1010022
-    field public static final int hapticFeedbackEnabled = 16843358; // 0x101025e
-    field public static final int hardwareAccelerated = 16843475; // 0x10102d3
-    field public static final int hasCode = 16842764; // 0x101000c
-    field public static final int hasFragileUserData = 16844186; // 0x101059a
-    field @Deprecated public static final int headerAmPmTextAppearance = 16843936; // 0x10104a0
-    field public static final int headerBackground = 16843055; // 0x101012f
-    field @Deprecated public static final int headerDayOfMonthTextAppearance = 16843927; // 0x1010497
-    field public static final int headerDividersEnabled = 16843310; // 0x101022e
-    field @Deprecated public static final int headerMonthTextAppearance = 16843926; // 0x1010496
-    field @Deprecated public static final int headerTimeTextAppearance = 16843935; // 0x101049f
-    field @Deprecated public static final int headerYearTextAppearance = 16843928; // 0x1010498
-    field public static final int height = 16843093; // 0x1010155
-    field public static final int hideOnContentScroll = 16843843; // 0x1010443
-    field public static final int hint = 16843088; // 0x1010150
-    field public static final int homeAsUpIndicator = 16843531; // 0x101030b
-    field public static final int homeLayout = 16843549; // 0x101031d
-    field public static final int horizontalDivider = 16843053; // 0x101012d
-    field @Deprecated public static final int horizontalGap = 16843327; // 0x101023f
-    field public static final int horizontalScrollViewStyle = 16843603; // 0x1010353
-    field public static final int horizontalSpacing = 16843028; // 0x1010114
-    field public static final int host = 16842792; // 0x1010028
-    field public static final int hotSpotX = 16844055; // 0x1010517
-    field public static final int hotSpotY = 16844056; // 0x1010518
-    field public static final int htmlDescription = 16844299; // 0x101060b
-    field public static final int hyphenationFrequency = 16843998; // 0x10104de
-    field public static final int icon = 16842754; // 0x1010002
-    field @Deprecated public static final int iconPreview = 16843337; // 0x1010249
-    field public static final int iconSpaceReserved = 16844129; // 0x1010561
-    field public static final int iconTint = 16844126; // 0x101055e
-    field public static final int iconTintMode = 16844127; // 0x101055f
-    field public static final int iconifiedByDefault = 16843514; // 0x10102fa
-    field public static final int id = 16842960; // 0x10100d0
-    field public static final int identifier = 16844294; // 0x1010606
-    field public static final int ignoreGravity = 16843263; // 0x10101ff
-    field public static final int imageButtonStyle = 16842866; // 0x1010072
-    field public static final int imageWellStyle = 16842867; // 0x1010073
-    field public static final int imeActionId = 16843366; // 0x1010266
-    field public static final int imeActionLabel = 16843365; // 0x1010265
-    field public static final int imeExtractEnterAnimation = 16843368; // 0x1010268
-    field public static final int imeExtractExitAnimation = 16843369; // 0x1010269
-    field public static final int imeFullscreenBackground = 16843308; // 0x101022c
-    field public static final int imeOptions = 16843364; // 0x1010264
-    field public static final int imeSubtypeExtraValue = 16843502; // 0x10102ee
-    field public static final int imeSubtypeLocale = 16843500; // 0x10102ec
-    field public static final int imeSubtypeMode = 16843501; // 0x10102ed
-    field public static final int immersive = 16843456; // 0x10102c0
-    field public static final int importantForAccessibility = 16843690; // 0x10103aa
-    field public static final int importantForAutofill = 16844120; // 0x1010558
-    field public static final int importantForContentCapture = 16844295; // 0x1010607
-    field public static final int inAnimation = 16843127; // 0x1010177
-    field public static final int includeFontPadding = 16843103; // 0x101015f
-    field public static final int includeInGlobalSearch = 16843374; // 0x101026e
-    field public static final int indeterminate = 16843065; // 0x1010139
-    field public static final int indeterminateBehavior = 16843070; // 0x101013e
-    field public static final int indeterminateDrawable = 16843067; // 0x101013b
-    field public static final int indeterminateDuration = 16843069; // 0x101013d
-    field public static final int indeterminateOnly = 16843066; // 0x101013a
-    field public static final int indeterminateProgressStyle = 16843544; // 0x1010318
-    field public static final int indeterminateTint = 16843881; // 0x1010469
-    field public static final int indeterminateTintMode = 16843882; // 0x101046a
-    field public static final int indicatorEnd = 16843730; // 0x10103d2
-    field public static final int indicatorLeft = 16843021; // 0x101010d
-    field public static final int indicatorRight = 16843022; // 0x101010e
-    field public static final int indicatorStart = 16843729; // 0x10103d1
-    field public static final int inflatedId = 16842995; // 0x10100f3
-    field public static final int inheritShowWhenLocked = 16844188; // 0x101059c
-    field public static final int initOrder = 16842778; // 0x101001a
-    field public static final int initialKeyguardLayout = 16843714; // 0x10103c2
-    field public static final int initialLayout = 16843345; // 0x1010251
-    field public static final int innerRadius = 16843359; // 0x101025f
-    field public static final int innerRadiusRatio = 16843163; // 0x101019b
-    field @Deprecated public static final int inputMethod = 16843112; // 0x1010168
-    field public static final int inputType = 16843296; // 0x1010220
-    field public static final int inset = 16843957; // 0x10104b5
-    field public static final int insetBottom = 16843194; // 0x10101ba
-    field public static final int insetLeft = 16843191; // 0x10101b7
-    field public static final int insetRight = 16843192; // 0x10101b8
-    field public static final int insetTop = 16843193; // 0x10101b9
-    field public static final int installLocation = 16843447; // 0x10102b7
-    field public static final int interactiveUiTimeout = 16844181; // 0x1010595
-    field public static final int interpolator = 16843073; // 0x1010141
-    field public static final int isAlwaysSyncable = 16843571; // 0x1010333
-    field public static final int isAsciiCapable = 16843753; // 0x10103e9
-    field public static final int isAuxiliary = 16843647; // 0x101037f
-    field public static final int isDefault = 16843297; // 0x1010221
-    field public static final int isFeatureSplit = 16844123; // 0x101055b
-    field public static final int isGame = 16843764; // 0x10103f4
-    field public static final int isIndicator = 16843079; // 0x1010147
-    field public static final int isLightTheme = 16844176; // 0x1010590
-    field @Deprecated public static final int isModifier = 16843334; // 0x1010246
-    field @Deprecated public static final int isRepeatable = 16843336; // 0x1010248
-    field public static final int isScrollContainer = 16843342; // 0x101024e
-    field public static final int isSplitRequired = 16844177; // 0x1010591
-    field public static final int isStatic = 16844122; // 0x101055a
-    field @Deprecated public static final int isSticky = 16843335; // 0x1010247
-    field public static final int isolatedProcess = 16843689; // 0x10103a9
-    field public static final int isolatedSplits = 16844107; // 0x101054b
-    field public static final int itemBackground = 16843056; // 0x1010130
-    field public static final int itemIconDisabledAlpha = 16843057; // 0x1010131
-    field public static final int itemPadding = 16843565; // 0x101032d
-    field public static final int itemTextAppearance = 16843052; // 0x101012c
-    field public static final int justificationMode = 16844135; // 0x1010567
-    field public static final int keepScreenOn = 16843286; // 0x1010216
-    field public static final int key = 16843240; // 0x10101e8
-    field @Deprecated public static final int keyBackground = 16843315; // 0x1010233
-    field @Deprecated public static final int keyEdgeFlags = 16843333; // 0x1010245
-    field @Deprecated public static final int keyHeight = 16843326; // 0x101023e
-    field @Deprecated public static final int keyIcon = 16843340; // 0x101024c
-    field @Deprecated public static final int keyLabel = 16843339; // 0x101024b
-    field @Deprecated public static final int keyOutputText = 16843338; // 0x101024a
-    field @Deprecated public static final int keyPreviewHeight = 16843321; // 0x1010239
-    field @Deprecated public static final int keyPreviewLayout = 16843319; // 0x1010237
-    field @Deprecated public static final int keyPreviewOffset = 16843320; // 0x1010238
-    field public static final int keySet = 16843739; // 0x10103db
-    field @Deprecated public static final int keyTextColor = 16843318; // 0x1010236
-    field @Deprecated public static final int keyTextSize = 16843316; // 0x1010234
-    field @Deprecated public static final int keyWidth = 16843325; // 0x101023d
-    field public static final int keyboardLayout = 16843691; // 0x10103ab
-    field @Deprecated public static final int keyboardMode = 16843341; // 0x101024d
-    field public static final int keyboardNavigationCluster = 16844096; // 0x1010540
-    field public static final int keycode = 16842949; // 0x10100c5
-    field public static final int killAfterRestore = 16843420; // 0x101029c
-    field public static final int label = 16842753; // 0x1010001
-    field public static final int labelFor = 16843718; // 0x10103c6
-    field @Deprecated public static final int labelTextSize = 16843317; // 0x1010235
-    field public static final int languageTag = 16844040; // 0x1010508
-    field public static final int largeHeap = 16843610; // 0x101035a
-    field public static final int largeScreens = 16843398; // 0x1010286
-    field public static final int largestWidthLimitDp = 16843622; // 0x1010366
-    field public static final int lastBaselineToBottomHeight = 16844158; // 0x101057e
-    field public static final int launchMode = 16842781; // 0x101001d
-    field public static final int launchTaskBehindSourceAnimation = 16843922; // 0x1010492
-    field public static final int launchTaskBehindTargetAnimation = 16843921; // 0x1010491
-    field public static final int layerType = 16843604; // 0x1010354
-    field public static final int layout = 16842994; // 0x10100f2
-    field public static final int layoutAnimation = 16842988; // 0x10100ec
-    field public static final int layoutDirection = 16843698; // 0x10103b2
-    field public static final int layoutMode = 16843738; // 0x10103da
-    field public static final int layout_above = 16843140; // 0x1010184
-    field public static final int layout_alignBaseline = 16843142; // 0x1010186
-    field public static final int layout_alignBottom = 16843146; // 0x101018a
-    field public static final int layout_alignEnd = 16843706; // 0x10103ba
-    field public static final int layout_alignLeft = 16843143; // 0x1010187
-    field public static final int layout_alignParentBottom = 16843150; // 0x101018e
-    field public static final int layout_alignParentEnd = 16843708; // 0x10103bc
-    field public static final int layout_alignParentLeft = 16843147; // 0x101018b
-    field public static final int layout_alignParentRight = 16843149; // 0x101018d
-    field public static final int layout_alignParentStart = 16843707; // 0x10103bb
-    field public static final int layout_alignParentTop = 16843148; // 0x101018c
-    field public static final int layout_alignRight = 16843145; // 0x1010189
-    field public static final int layout_alignStart = 16843705; // 0x10103b9
-    field public static final int layout_alignTop = 16843144; // 0x1010188
-    field public static final int layout_alignWithParentIfMissing = 16843154; // 0x1010192
-    field public static final int layout_below = 16843141; // 0x1010185
-    field public static final int layout_centerHorizontal = 16843152; // 0x1010190
-    field public static final int layout_centerInParent = 16843151; // 0x101018f
-    field public static final int layout_centerVertical = 16843153; // 0x1010191
-    field public static final int layout_column = 16843084; // 0x101014c
-    field public static final int layout_columnSpan = 16843645; // 0x101037d
-    field public static final int layout_columnWeight = 16843865; // 0x1010459
-    field public static final int layout_gravity = 16842931; // 0x10100b3
-    field public static final int layout_height = 16842997; // 0x10100f5
-    field public static final int layout_margin = 16842998; // 0x10100f6
-    field public static final int layout_marginBottom = 16843002; // 0x10100fa
-    field public static final int layout_marginEnd = 16843702; // 0x10103b6
-    field public static final int layout_marginHorizontal = 16844091; // 0x101053b
-    field public static final int layout_marginLeft = 16842999; // 0x10100f7
-    field public static final int layout_marginRight = 16843001; // 0x10100f9
-    field public static final int layout_marginStart = 16843701; // 0x10103b5
-    field public static final int layout_marginTop = 16843000; // 0x10100f8
-    field public static final int layout_marginVertical = 16844092; // 0x101053c
-    field public static final int layout_row = 16843643; // 0x101037b
-    field public static final int layout_rowSpan = 16843644; // 0x101037c
-    field public static final int layout_rowWeight = 16843864; // 0x1010458
-    field public static final int layout_scale = 16843155; // 0x1010193
-    field public static final int layout_span = 16843085; // 0x101014d
-    field public static final int layout_toEndOf = 16843704; // 0x10103b8
-    field public static final int layout_toLeftOf = 16843138; // 0x1010182
-    field public static final int layout_toRightOf = 16843139; // 0x1010183
-    field public static final int layout_toStartOf = 16843703; // 0x10103b7
-    field public static final int layout_weight = 16843137; // 0x1010181
-    field public static final int layout_width = 16842996; // 0x10100f4
-    field public static final int layout_x = 16843135; // 0x101017f
-    field public static final int layout_y = 16843136; // 0x1010180
-    field public static final int left = 16843181; // 0x10101ad
-    field public static final int letterSpacing = 16843958; // 0x10104b6
-    field public static final int level = 16844032; // 0x1010500
-    field public static final int lineHeight = 16844159; // 0x101057f
-    field public static final int lineSpacingExtra = 16843287; // 0x1010217
-    field public static final int lineSpacingMultiplier = 16843288; // 0x1010218
-    field public static final int lines = 16843092; // 0x1010154
-    field public static final int linksClickable = 16842929; // 0x10100b1
-    field public static final int listChoiceBackgroundIndicator = 16843504; // 0x10102f0
-    field public static final int listChoiceIndicatorMultiple = 16843290; // 0x101021a
-    field public static final int listChoiceIndicatorSingle = 16843289; // 0x1010219
-    field public static final int listDivider = 16843284; // 0x1010214
-    field public static final int listDividerAlertDialog = 16843525; // 0x1010305
-    field public static final int listMenuViewStyle = 16844018; // 0x10104f2
-    field public static final int listPopupWindowStyle = 16843519; // 0x10102ff
-    field public static final int listPreferredItemHeight = 16842829; // 0x101004d
-    field public static final int listPreferredItemHeightLarge = 16843654; // 0x1010386
-    field public static final int listPreferredItemHeightSmall = 16843655; // 0x1010387
-    field public static final int listPreferredItemPaddingEnd = 16843710; // 0x10103be
-    field public static final int listPreferredItemPaddingLeft = 16843683; // 0x10103a3
-    field public static final int listPreferredItemPaddingRight = 16843684; // 0x10103a4
-    field public static final int listPreferredItemPaddingStart = 16843709; // 0x10103bd
-    field public static final int listSelector = 16843003; // 0x10100fb
-    field public static final int listSeparatorTextViewStyle = 16843272; // 0x1010208
-    field public static final int listViewStyle = 16842868; // 0x1010074
-    field public static final int listViewWhiteStyle = 16842869; // 0x1010075
-    field public static final int lockTaskMode = 16844013; // 0x10104ed
-    field public static final int logo = 16843454; // 0x10102be
-    field public static final int logoDescription = 16844009; // 0x10104e9
-    field public static final int longClickable = 16842982; // 0x10100e6
-    field public static final int loopViews = 16843527; // 0x1010307
-    field public static final int manageSpaceActivity = 16842756; // 0x1010004
-    field public static final int mapViewStyle = 16842890; // 0x101008a
-    field public static final int marqueeRepeatLimit = 16843293; // 0x101021d
-    field public static final int matchOrder = 16843855; // 0x101044f
-    field public static final int max = 16843062; // 0x1010136
-    field public static final int maxAspectRatio = 16844128; // 0x1010560
-    field public static final int maxButtonHeight = 16844029; // 0x10104fd
-    field public static final int maxDate = 16843584; // 0x1010340
-    field public static final int maxEms = 16843095; // 0x1010157
-    field public static final int maxHeight = 16843040; // 0x1010120
-    field public static final int maxItemsPerRow = 16843060; // 0x1010134
-    field public static final int maxLength = 16843104; // 0x1010160
-    field public static final int maxLevel = 16843186; // 0x10101b2
-    field public static final int maxLines = 16843091; // 0x1010153
-    field public static final int maxLongVersionCode = 16844163; // 0x1010583
-    field public static final int maxRecents = 16843846; // 0x1010446
-    field public static final int maxRows = 16843059; // 0x1010133
-    field public static final int maxSdkVersion = 16843377; // 0x1010271
-    field public static final int maxWidth = 16843039; // 0x101011f
-    field public static final int maximumAngle = 16843903; // 0x101047f
-    field public static final int measureAllChildren = 16843018; // 0x101010a
-    field public static final int measureWithLargestChild = 16843476; // 0x10102d4
-    field public static final int mediaRouteButtonStyle = 16843693; // 0x10103ad
-    field public static final int mediaRouteTypes = 16843694; // 0x10103ae
-    field public static final int menuCategory = 16843230; // 0x10101de
-    field public static final int mimeGroup = 16844309; // 0x1010615
-    field public static final int mimeType = 16842790; // 0x1010026
-    field public static final int min = 16844089; // 0x1010539
-    field public static final int minAspectRatio = 16844187; // 0x101059b
-    field public static final int minDate = 16843583; // 0x101033f
-    field public static final int minEms = 16843098; // 0x101015a
-    field public static final int minHeight = 16843072; // 0x1010140
-    field public static final int minLevel = 16843185; // 0x10101b1
-    field public static final int minLines = 16843094; // 0x1010156
-    field public static final int minResizeHeight = 16843670; // 0x1010396
-    field public static final int minResizeWidth = 16843669; // 0x1010395
-    field public static final int minSdkVersion = 16843276; // 0x101020c
-    field public static final int minWidth = 16843071; // 0x101013f
-    field public static final int minimumHorizontalAngle = 16843901; // 0x101047d
-    field public static final int minimumVerticalAngle = 16843902; // 0x101047e
-    field public static final int mipMap = 16843725; // 0x10103cd
-    field public static final int mirrorForRtl = 16843726; // 0x10103ce
-    field public static final int mode = 16843134; // 0x101017e
-    field public static final int moreIcon = 16843061; // 0x1010135
-    field public static final int multiArch = 16843918; // 0x101048e
-    field public static final int multiprocess = 16842771; // 0x1010013
-    field public static final int name = 16842755; // 0x1010003
-    field public static final int navigationBarColor = 16843858; // 0x1010452
-    field public static final int navigationBarDividerColor = 16844141; // 0x101056d
-    field public static final int navigationContentDescription = 16843969; // 0x10104c1
-    field public static final int navigationIcon = 16843968; // 0x10104c0
-    field public static final int navigationMode = 16843471; // 0x10102cf
-    field public static final int negativeButtonText = 16843254; // 0x10101f6
-    field public static final int nestedScrollingEnabled = 16843830; // 0x1010436
-    field public static final int networkSecurityConfig = 16844071; // 0x1010527
-    field public static final int nextClusterForward = 16844098; // 0x1010542
-    field public static final int nextFocusDown = 16842980; // 0x10100e4
-    field public static final int nextFocusForward = 16843580; // 0x101033c
-    field public static final int nextFocusLeft = 16842977; // 0x10100e1
-    field public static final int nextFocusRight = 16842978; // 0x10100e2
-    field public static final int nextFocusUp = 16842979; // 0x10100e3
-    field public static final int noHistory = 16843309; // 0x101022d
-    field public static final int nonInteractiveUiTimeout = 16844175; // 0x101058f
-    field public static final int normalScreens = 16843397; // 0x1010285
-    field public static final int notificationTimeout = 16843651; // 0x1010383
-    field public static final int numColumns = 16843032; // 0x1010118
-    field public static final int numStars = 16843076; // 0x1010144
-    field public static final int numberPickerStyle = 16844068; // 0x1010524
-    field public static final int numbersBackgroundColor = 16843938; // 0x10104a2
-    field public static final int numbersInnerTextColor = 16844001; // 0x10104e1
-    field public static final int numbersSelectorColor = 16843939; // 0x10104a3
-    field public static final int numbersTextColor = 16843937; // 0x10104a1
-    field @Deprecated public static final int numeric = 16843109; // 0x1010165
-    field public static final int numericModifiers = 16844111; // 0x101054f
-    field public static final int numericShortcut = 16843236; // 0x10101e4
-    field public static final int offset = 16844052; // 0x1010514
-    field public static final int onClick = 16843375; // 0x101026f
-    field public static final int oneshot = 16843159; // 0x1010197
-    field public static final int opacity = 16843550; // 0x101031e
-    field public static final int opticalInsetBottom = 16844171; // 0x101058b
-    field public static final int opticalInsetLeft = 16844168; // 0x1010588
-    field public static final int opticalInsetRight = 16844170; // 0x101058a
-    field public static final int opticalInsetTop = 16844169; // 0x1010589
-    field public static final int order = 16843242; // 0x10101ea
-    field public static final int orderInCategory = 16843231; // 0x10101df
-    field public static final int ordering = 16843490; // 0x10102e2
-    field public static final int orderingFromXml = 16843239; // 0x10101e7
-    field public static final int orientation = 16842948; // 0x10100c4
-    field public static final int outAnimation = 16843128; // 0x1010178
-    field public static final int outlineAmbientShadowColor = 16844162; // 0x1010582
-    field public static final int outlineProvider = 16843960; // 0x10104b8
-    field public static final int outlineSpotShadowColor = 16844161; // 0x1010581
-    field public static final int overScrollFooter = 16843459; // 0x10102c3
-    field public static final int overScrollHeader = 16843458; // 0x10102c2
-    field public static final int overScrollMode = 16843457; // 0x10102c1
-    field public static final int overlapAnchor = 16843874; // 0x1010462
-    field public static final int overridesImplicitlyEnabledSubtype = 16843682; // 0x10103a2
-    field public static final int packageNames = 16843649; // 0x1010381
-    field public static final int packageType = 16844167; // 0x1010587
-    field public static final int padding = 16842965; // 0x10100d5
-    field public static final int paddingBottom = 16842969; // 0x10100d9
-    field public static final int paddingEnd = 16843700; // 0x10103b4
-    field public static final int paddingHorizontal = 16844093; // 0x101053d
-    field public static final int paddingLeft = 16842966; // 0x10100d6
-    field public static final int paddingMode = 16843863; // 0x1010457
-    field public static final int paddingRight = 16842968; // 0x10100d8
-    field public static final int paddingStart = 16843699; // 0x10103b3
-    field public static final int paddingTop = 16842967; // 0x10100d7
-    field public static final int paddingVertical = 16844094; // 0x101053e
-    field public static final int panelBackground = 16842846; // 0x101005e
-    field public static final int panelColorBackground = 16842849; // 0x1010061
-    field public static final int panelColorForeground = 16842848; // 0x1010060
-    field public static final int panelFullBackground = 16842847; // 0x101005f
-    field public static final int panelTextAppearance = 16842850; // 0x1010062
-    field public static final int parentActivityName = 16843687; // 0x10103a7
-    field @Deprecated public static final int password = 16843100; // 0x101015c
-    field public static final int path = 16842794; // 0x101002a
-    field public static final int pathData = 16843781; // 0x1010405
-    field public static final int pathPattern = 16842796; // 0x101002c
-    field public static final int pathPrefix = 16842795; // 0x101002b
-    field public static final int patternPathData = 16843978; // 0x10104ca
-    field public static final int permission = 16842758; // 0x1010006
-    field public static final int permissionFlags = 16843719; // 0x10103c7
-    field public static final int permissionGroup = 16842762; // 0x101000a
-    field public static final int permissionGroupFlags = 16843717; // 0x10103c5
-    field public static final int persistableMode = 16843821; // 0x101042d
-    field public static final int persistent = 16842765; // 0x101000d
-    field public static final int persistentDrawingCache = 16842990; // 0x10100ee
-    field public static final int persistentWhenFeatureAvailable = 16844131; // 0x1010563
-    field @Deprecated public static final int phoneNumber = 16843111; // 0x1010167
-    field public static final int pivotX = 16843189; // 0x10101b5
-    field public static final int pivotY = 16843190; // 0x10101b6
-    field public static final int pointerIcon = 16844041; // 0x1010509
-    field public static final int popupAnimationStyle = 16843465; // 0x10102c9
-    field public static final int popupBackground = 16843126; // 0x1010176
-    field @Deprecated public static final int popupCharacters = 16843332; // 0x1010244
-    field public static final int popupElevation = 16843916; // 0x101048c
-    field public static final int popupEnterTransition = 16844063; // 0x101051f
-    field public static final int popupExitTransition = 16844064; // 0x1010520
-    field @Deprecated public static final int popupKeyboard = 16843331; // 0x1010243
-    field @Deprecated public static final int popupLayout = 16843323; // 0x101023b
-    field public static final int popupMenuStyle = 16843520; // 0x1010300
-    field public static final int popupTheme = 16843945; // 0x10104a9
-    field public static final int popupWindowStyle = 16842870; // 0x1010076
-    field public static final int port = 16842793; // 0x1010029
-    field public static final int positiveButtonText = 16843253; // 0x10101f5
-    field public static final int preferMinimalPostProcessing = 16844300; // 0x101060c
-    field public static final int preferenceCategoryStyle = 16842892; // 0x101008c
-    field public static final int preferenceFragmentStyle = 16844038; // 0x1010506
-    field public static final int preferenceInformationStyle = 16842893; // 0x101008d
-    field public static final int preferenceLayoutChild = 16842900; // 0x1010094
-    field public static final int preferenceScreenStyle = 16842891; // 0x101008b
-    field public static final int preferenceStyle = 16842894; // 0x101008e
-    field public static final int presentationTheme = 16843712; // 0x10103c0
-    field public static final int preserveLegacyExternalStorage = 16844308; // 0x1010614
-    field public static final int previewImage = 16843482; // 0x10102da
-    field public static final int primaryContentAlpha = 16844114; // 0x1010552
-    field public static final int priority = 16842780; // 0x101001c
-    field public static final int privateImeOptions = 16843299; // 0x1010223
-    field public static final int process = 16842769; // 0x1010011
-    field public static final int progress = 16843063; // 0x1010137
-    field public static final int progressBackgroundTint = 16843877; // 0x1010465
-    field public static final int progressBackgroundTintMode = 16843878; // 0x1010466
-    field public static final int progressBarPadding = 16843545; // 0x1010319
-    field public static final int progressBarStyle = 16842871; // 0x1010077
-    field public static final int progressBarStyleHorizontal = 16842872; // 0x1010078
-    field public static final int progressBarStyleInverse = 16843399; // 0x1010287
-    field public static final int progressBarStyleLarge = 16842874; // 0x101007a
-    field public static final int progressBarStyleLargeInverse = 16843401; // 0x1010289
-    field public static final int progressBarStyleSmall = 16842873; // 0x1010079
-    field public static final int progressBarStyleSmallInverse = 16843400; // 0x1010288
-    field public static final int progressBarStyleSmallTitle = 16843279; // 0x101020f
-    field public static final int progressDrawable = 16843068; // 0x101013c
-    field public static final int progressTint = 16843875; // 0x1010463
-    field public static final int progressTintMode = 16843876; // 0x1010464
-    field public static final int prompt = 16843131; // 0x101017b
-    field public static final int propertyName = 16843489; // 0x10102e1
-    field public static final int propertyXName = 16843892; // 0x1010474
-    field public static final int propertyYName = 16843893; // 0x1010475
-    field public static final int protectionLevel = 16842761; // 0x1010009
-    field public static final int publicKey = 16843686; // 0x10103a6
-    field public static final int queryActionMsg = 16843227; // 0x10101db
-    field public static final int queryAfterZeroResults = 16843394; // 0x1010282
-    field public static final int queryBackground = 16843911; // 0x1010487
-    field public static final int queryHint = 16843608; // 0x1010358
-    field public static final int quickContactBadgeStyleSmallWindowLarge = 16843443; // 0x10102b3
-    field public static final int quickContactBadgeStyleSmallWindowMedium = 16843442; // 0x10102b2
-    field public static final int quickContactBadgeStyleSmallWindowSmall = 16843441; // 0x10102b1
-    field public static final int quickContactBadgeStyleWindowLarge = 16843440; // 0x10102b0
-    field public static final int quickContactBadgeStyleWindowMedium = 16843439; // 0x10102af
-    field public static final int quickContactBadgeStyleWindowSmall = 16843438; // 0x10102ae
-    field public static final int radioButtonStyle = 16842878; // 0x101007e
-    field public static final int radius = 16843176; // 0x10101a8
-    field public static final int rating = 16843077; // 0x1010145
-    field public static final int ratingBarStyle = 16842876; // 0x101007c
-    field public static final int ratingBarStyleIndicator = 16843280; // 0x1010210
-    field public static final int ratingBarStyleSmall = 16842877; // 0x101007d
-    field public static final int readPermission = 16842759; // 0x1010007
-    field public static final int recognitionService = 16843932; // 0x101049c
-    field public static final int recreateOnConfigChanges = 16844103; // 0x1010547
-    field public static final int recycleEnabled = 16844121; // 0x1010559
-    field public static final int relinquishTaskIdentity = 16843894; // 0x1010476
-    field public static final int reparent = 16843964; // 0x10104bc
-    field public static final int reparentWithOverlay = 16843965; // 0x10104bd
-    field public static final int repeatCount = 16843199; // 0x10101bf
-    field public static final int repeatMode = 16843200; // 0x10101c0
-    field public static final int reqFiveWayNav = 16843314; // 0x1010232
-    field public static final int reqHardKeyboard = 16843305; // 0x1010229
-    field public static final int reqKeyboardType = 16843304; // 0x1010228
-    field public static final int reqNavigation = 16843306; // 0x101022a
-    field public static final int reqTouchScreen = 16843303; // 0x1010227
-    field public static final int requestLegacyExternalStorage = 16844291; // 0x1010603
-    field public static final int requireDeviceUnlock = 16843756; // 0x10103ec
-    field public static final int required = 16843406; // 0x101028e
-    field public static final int requiredAccountType = 16843734; // 0x10103d6
-    field public static final int requiredFeature = 16844116; // 0x1010554
-    field public static final int requiredForAllUsers = 16843728; // 0x10103d0
-    field public static final int requiredNotFeature = 16844117; // 0x1010555
-    field public static final int requiresFadingEdge = 16843685; // 0x10103a5
-    field public static final int requiresSmallestWidthDp = 16843620; // 0x1010364
-    field public static final int resizeClip = 16843983; // 0x10104cf
-    field public static final int resizeMode = 16843619; // 0x1010363
-    field public static final int resizeable = 16843405; // 0x101028d
-    field public static final int resizeableActivity = 16844022; // 0x10104f6
-    field public static final int resource = 16842789; // 0x1010025
-    field public static final int resourcesMap = 16844297; // 0x1010609
-    field public static final int restoreAnyVersion = 16843450; // 0x10102ba
-    field @Deprecated public static final int restoreNeedsApplication = 16843421; // 0x101029d
-    field public static final int restrictedAccountType = 16843733; // 0x10103d5
-    field public static final int restrictionType = 16843923; // 0x1010493
-    field public static final int resumeWhilePausing = 16843954; // 0x10104b2
-    field public static final int reversible = 16843851; // 0x101044b
-    field public static final int revisionCode = 16843989; // 0x10104d5
-    field public static final int right = 16843183; // 0x10101af
-    field public static final int ringtonePreferenceStyle = 16842899; // 0x1010093
-    field public static final int ringtoneType = 16843257; // 0x10101f9
-    field public static final int rotation = 16843558; // 0x1010326
-    field public static final int rotationAnimation = 16844090; // 0x101053a
-    field public static final int rotationX = 16843559; // 0x1010327
-    field public static final int rotationY = 16843560; // 0x1010328
-    field public static final int roundIcon = 16844076; // 0x101052c
-    field public static final int rowCount = 16843637; // 0x1010375
-    field public static final int rowDelay = 16843216; // 0x10101d0
-    field @Deprecated public static final int rowEdgeFlags = 16843329; // 0x1010241
-    field public static final int rowHeight = 16843058; // 0x1010132
-    field public static final int rowOrderPreserved = 16843638; // 0x1010376
-    field public static final int saveEnabled = 16842983; // 0x10100e7
-    field public static final int scaleGravity = 16843262; // 0x10101fe
-    field public static final int scaleHeight = 16843261; // 0x10101fd
-    field public static final int scaleType = 16843037; // 0x101011d
-    field public static final int scaleWidth = 16843260; // 0x10101fc
-    field public static final int scaleX = 16843556; // 0x1010324
-    field public static final int scaleY = 16843557; // 0x1010325
-    field public static final int scheme = 16842791; // 0x1010027
-    field public static final int screenDensity = 16843467; // 0x10102cb
-    field public static final int screenOrientation = 16842782; // 0x101001e
-    field public static final int screenReaderFocusable = 16844148; // 0x1010574
-    field public static final int screenSize = 16843466; // 0x10102ca
-    field public static final int scrollHorizontally = 16843099; // 0x101015b
-    field public static final int scrollIndicators = 16844006; // 0x10104e6
-    field public static final int scrollViewStyle = 16842880; // 0x1010080
-    field public static final int scrollX = 16842962; // 0x10100d2
-    field public static final int scrollY = 16842963; // 0x10100d3
-    field public static final int scrollbarAlwaysDrawHorizontalTrack = 16842856; // 0x1010068
-    field public static final int scrollbarAlwaysDrawVerticalTrack = 16842857; // 0x1010069
-    field public static final int scrollbarDefaultDelayBeforeFade = 16843433; // 0x10102a9
-    field public static final int scrollbarFadeDuration = 16843432; // 0x10102a8
-    field public static final int scrollbarSize = 16842851; // 0x1010063
-    field public static final int scrollbarStyle = 16842879; // 0x101007f
-    field public static final int scrollbarThumbHorizontal = 16842852; // 0x1010064
-    field public static final int scrollbarThumbVertical = 16842853; // 0x1010065
-    field public static final int scrollbarTrackHorizontal = 16842854; // 0x1010066
-    field public static final int scrollbarTrackVertical = 16842855; // 0x1010067
-    field public static final int scrollbars = 16842974; // 0x10100de
-    field public static final int scrollingCache = 16843006; // 0x10100fe
-    field @Deprecated public static final int searchButtonText = 16843269; // 0x1010205
-    field public static final int searchHintIcon = 16843988; // 0x10104d4
-    field public static final int searchIcon = 16843907; // 0x1010483
-    field public static final int searchMode = 16843221; // 0x10101d5
-    field public static final int searchSettingsDescription = 16843402; // 0x101028a
-    field public static final int searchSuggestAuthority = 16843222; // 0x10101d6
-    field public static final int searchSuggestIntentAction = 16843225; // 0x10101d9
-    field public static final int searchSuggestIntentData = 16843226; // 0x10101da
-    field public static final int searchSuggestPath = 16843223; // 0x10101d7
-    field public static final int searchSuggestSelection = 16843224; // 0x10101d8
-    field public static final int searchSuggestThreshold = 16843373; // 0x101026d
-    field public static final int searchViewStyle = 16843904; // 0x1010480
-    field public static final int secondaryContentAlpha = 16844115; // 0x1010553
-    field public static final int secondaryProgress = 16843064; // 0x1010138
-    field public static final int secondaryProgressTint = 16843879; // 0x1010467
-    field public static final int secondaryProgressTintMode = 16843880; // 0x1010468
-    field public static final int secureElementName = 16844290; // 0x1010602
-    field public static final int seekBarStyle = 16842875; // 0x101007b
-    field public static final int segmentedButtonStyle = 16843568; // 0x1010330
-    field public static final int selectAllOnFocus = 16843102; // 0x101015e
-    field public static final int selectable = 16843238; // 0x10101e6
-    field public static final int selectableItemBackground = 16843534; // 0x101030e
-    field public static final int selectableItemBackgroundBorderless = 16843868; // 0x101045c
-    field @Deprecated public static final int selectedDateVerticalBar = 16843591; // 0x1010347
-    field @Deprecated public static final int selectedWeekBackgroundColor = 16843586; // 0x1010342
-    field public static final int selectionDividerHeight = 16844184; // 0x1010598
-    field public static final int sessionService = 16843837; // 0x101043d
-    field public static final int settingsActivity = 16843301; // 0x1010225
-    field public static final int settingsSliceUri = 16844179; // 0x1010593
-    field public static final int setupActivity = 16843766; // 0x10103f6
-    field public static final int shadowColor = 16843105; // 0x1010161
-    field public static final int shadowDx = 16843106; // 0x1010162
-    field public static final int shadowDy = 16843107; // 0x1010163
-    field public static final int shadowRadius = 16843108; // 0x1010164
-    field public static final int shape = 16843162; // 0x101019a
-    field public static final int shareInterpolator = 16843195; // 0x10101bb
-    field @Deprecated public static final int sharedUserId = 16842763; // 0x101000b
-    field @Deprecated public static final int sharedUserLabel = 16843361; // 0x1010261
-    field public static final int shell = 16844180; // 0x1010594
-    field public static final int shortcutDisabledMessage = 16844075; // 0x101052b
-    field public static final int shortcutId = 16844072; // 0x1010528
-    field public static final int shortcutLongLabel = 16844074; // 0x101052a
-    field public static final int shortcutShortLabel = 16844073; // 0x1010529
-    field public static final int shouldDisableView = 16843246; // 0x10101ee
-    field public static final int showAsAction = 16843481; // 0x10102d9
-    field public static final int showDefault = 16843258; // 0x10101fa
-    field public static final int showDividers = 16843561; // 0x1010329
-    field public static final int showForAllUsers = 16844015; // 0x10104ef
-    field public static final int showMetadataInPreview = 16844079; // 0x101052f
-    field @Deprecated public static final int showOnLockScreen = 16843721; // 0x10103c9
-    field public static final int showSilent = 16843259; // 0x10101fb
-    field public static final int showText = 16843949; // 0x10104ad
-    field @Deprecated public static final int showWeekNumber = 16843582; // 0x101033e
-    field public static final int showWhenLocked = 16844137; // 0x1010569
-    field @Deprecated public static final int shownWeekCount = 16843585; // 0x1010341
-    field public static final int shrinkColumns = 16843082; // 0x101014a
-    field @Deprecated public static final int singleLine = 16843101; // 0x101015d
-    field public static final int singleLineTitle = 16844124; // 0x101055c
-    field public static final int singleUser = 16843711; // 0x10103bf
-    field public static final int slideEdge = 16843824; // 0x1010430
-    field public static final int smallIcon = 16843422; // 0x101029e
-    field public static final int smallScreens = 16843396; // 0x1010284
-    field public static final int smoothScrollbar = 16843313; // 0x1010231
-    field public static final int soundEffectsEnabled = 16843285; // 0x1010215
-    field public static final int spacing = 16843027; // 0x1010113
-    field public static final int spinnerDropDownItemStyle = 16842887; // 0x1010087
-    field public static final int spinnerItemStyle = 16842889; // 0x1010089
-    field public static final int spinnerMode = 16843505; // 0x10102f1
-    field public static final int spinnerStyle = 16842881; // 0x1010081
-    field public static final int spinnersShown = 16843595; // 0x101034b
-    field public static final int splitMotionEvents = 16843503; // 0x10102ef
-    field public static final int splitName = 16844105; // 0x1010549
-    field public static final int splitTrack = 16843852; // 0x101044c
-    field public static final int spotShadowAlpha = 16843967; // 0x10104bf
-    field public static final int src = 16843033; // 0x1010119
-    field public static final int ssp = 16843747; // 0x10103e3
-    field public static final int sspPattern = 16843749; // 0x10103e5
-    field public static final int sspPrefix = 16843748; // 0x10103e4
-    field public static final int stackFromBottom = 16843005; // 0x10100fd
-    field public static final int stackViewStyle = 16843838; // 0x101043e
-    field public static final int starStyle = 16842882; // 0x1010082
-    field public static final int start = 16843995; // 0x10104db
-    field public static final int startColor = 16843165; // 0x101019d
-    field public static final int startDelay = 16843746; // 0x10103e2
-    field public static final int startOffset = 16843198; // 0x10101be
-    field public static final int startX = 16844048; // 0x1010510
-    field public static final int startY = 16844049; // 0x1010511
-    field @Deprecated public static final int startYear = 16843132; // 0x101017c
-    field public static final int stateListAnimator = 16843848; // 0x1010448
-    field public static final int stateNotNeeded = 16842774; // 0x1010016
-    field public static final int state_above_anchor = 16842922; // 0x10100aa
-    field public static final int state_accelerated = 16843547; // 0x101031b
-    field public static final int state_activated = 16843518; // 0x10102fe
-    field public static final int state_active = 16842914; // 0x10100a2
-    field public static final int state_checkable = 16842911; // 0x101009f
-    field public static final int state_checked = 16842912; // 0x10100a0
-    field public static final int state_drag_can_accept = 16843624; // 0x1010368
-    field public static final int state_drag_hovered = 16843625; // 0x1010369
-    field public static final int state_empty = 16842921; // 0x10100a9
-    field public static final int state_enabled = 16842910; // 0x101009e
-    field public static final int state_expanded = 16842920; // 0x10100a8
-    field public static final int state_first = 16842916; // 0x10100a4
-    field public static final int state_focused = 16842908; // 0x101009c
-    field public static final int state_hovered = 16843623; // 0x1010367
-    field public static final int state_last = 16842918; // 0x10100a6
-    field @Deprecated public static final int state_long_pressable = 16843324; // 0x101023c
-    field public static final int state_middle = 16842917; // 0x10100a5
-    field public static final int state_multiline = 16843597; // 0x101034d
-    field public static final int state_pressed = 16842919; // 0x10100a7
-    field public static final int state_selected = 16842913; // 0x10100a1
-    field public static final int state_single = 16842915; // 0x10100a3
-    field public static final int state_window_focused = 16842909; // 0x101009d
-    field public static final int staticWallpaperPreview = 16843569; // 0x1010331
-    field public static final int statusBarColor = 16843857; // 0x1010451
-    field public static final int stepSize = 16843078; // 0x1010146
-    field public static final int stopWithTask = 16843626; // 0x101036a
-    field public static final int streamType = 16843273; // 0x1010209
-    field public static final int stretchColumns = 16843081; // 0x1010149
-    field public static final int stretchMode = 16843030; // 0x1010116
-    field public static final int strokeAlpha = 16843979; // 0x10104cb
-    field public static final int strokeColor = 16843782; // 0x1010406
-    field public static final int strokeLineCap = 16843787; // 0x101040b
-    field public static final int strokeLineJoin = 16843788; // 0x101040c
-    field public static final int strokeMiterLimit = 16843789; // 0x101040d
-    field public static final int strokeWidth = 16843783; // 0x1010407
-    field public static final int subMenuArrow = 16844019; // 0x10104f3
-    field public static final int submitBackground = 16843912; // 0x1010488
-    field public static final int subtitle = 16843473; // 0x10102d1
-    field public static final int subtitleTextAppearance = 16843823; // 0x101042f
-    field public static final int subtitleTextColor = 16844004; // 0x10104e4
-    field public static final int subtitleTextStyle = 16843513; // 0x10102f9
-    field public static final int subtypeExtraValue = 16843674; // 0x101039a
-    field public static final int subtypeId = 16843713; // 0x10103c1
-    field public static final int subtypeLocale = 16843673; // 0x1010399
-    field public static final int suggestActionMsg = 16843228; // 0x10101dc
-    field public static final int suggestActionMsgColumn = 16843229; // 0x10101dd
-    field public static final int suggestionRowLayout = 16843910; // 0x1010486
-    field public static final int summary = 16843241; // 0x10101e9
-    field public static final int summaryColumn = 16843426; // 0x10102a2
-    field public static final int summaryOff = 16843248; // 0x10101f0
-    field public static final int summaryOn = 16843247; // 0x10101ef
-    field public static final int supportsAssist = 16844016; // 0x10104f0
-    field public static final int supportsInlineSuggestions = 16844301; // 0x101060d
-    field public static final int supportsLaunchVoiceAssistFromKeyguard = 16844017; // 0x10104f1
-    field public static final int supportsLocalInteraction = 16844047; // 0x101050f
-    field public static final int supportsMultipleDisplays = 16844182; // 0x1010596
-    field public static final int supportsPictureInPicture = 16844023; // 0x10104f7
-    field public static final int supportsRtl = 16843695; // 0x10103af
-    field public static final int supportsSwitchingToNextInputMethod = 16843755; // 0x10103eb
-    field public static final int supportsUploading = 16843419; // 0x101029b
-    field public static final int switchMinWidth = 16843632; // 0x1010370
-    field public static final int switchPadding = 16843633; // 0x1010371
-    field public static final int switchPreferenceStyle = 16843629; // 0x101036d
-    field public static final int switchStyle = 16843839; // 0x101043f
-    field public static final int switchTextAppearance = 16843630; // 0x101036e
-    field public static final int switchTextOff = 16843628; // 0x101036c
-    field public static final int switchTextOn = 16843627; // 0x101036b
-    field public static final int syncable = 16842777; // 0x1010019
-    field public static final int tabStripEnabled = 16843453; // 0x10102bd
-    field public static final int tabStripLeft = 16843451; // 0x10102bb
-    field public static final int tabStripRight = 16843452; // 0x10102bc
-    field public static final int tabWidgetStyle = 16842883; // 0x1010083
-    field public static final int tag = 16842961; // 0x10100d1
-    field public static final int targetActivity = 16843266; // 0x1010202
-    field public static final int targetClass = 16842799; // 0x101002f
-    field @Deprecated public static final int targetDescriptions = 16843680; // 0x10103a0
-    field public static final int targetId = 16843740; // 0x10103dc
-    field public static final int targetName = 16843853; // 0x101044d
-    field public static final int targetPackage = 16842785; // 0x1010021
-    field public static final int targetProcesses = 16844097; // 0x1010541
-    field @Deprecated public static final int targetSandboxVersion = 16844108; // 0x101054c
-    field public static final int targetSdkVersion = 16843376; // 0x1010270
-    field public static final int taskAffinity = 16842770; // 0x1010012
-    field public static final int taskCloseEnterAnimation = 16842942; // 0x10100be
-    field public static final int taskCloseExitAnimation = 16842943; // 0x10100bf
-    field public static final int taskOpenEnterAnimation = 16842940; // 0x10100bc
-    field public static final int taskOpenExitAnimation = 16842941; // 0x10100bd
-    field public static final int taskToBackEnterAnimation = 16842946; // 0x10100c2
-    field public static final int taskToBackExitAnimation = 16842947; // 0x10100c3
-    field public static final int taskToFrontEnterAnimation = 16842944; // 0x10100c0
-    field public static final int taskToFrontExitAnimation = 16842945; // 0x10100c1
-    field public static final int tension = 16843370; // 0x101026a
-    field public static final int testOnly = 16843378; // 0x1010272
-    field public static final int text = 16843087; // 0x101014f
-    field public static final int textAlignment = 16843697; // 0x10103b1
-    field public static final int textAllCaps = 16843660; // 0x101038c
-    field public static final int textAppearance = 16842804; // 0x1010034
-    field public static final int textAppearanceButton = 16843271; // 0x1010207
-    field public static final int textAppearanceInverse = 16842805; // 0x1010035
-    field public static final int textAppearanceLarge = 16842816; // 0x1010040
-    field public static final int textAppearanceLargeInverse = 16842819; // 0x1010043
-    field public static final int textAppearanceLargePopupMenu = 16843521; // 0x1010301
-    field public static final int textAppearanceListItem = 16843678; // 0x101039e
-    field public static final int textAppearanceListItemSecondary = 16843826; // 0x1010432
-    field public static final int textAppearanceListItemSmall = 16843679; // 0x101039f
-    field public static final int textAppearanceMedium = 16842817; // 0x1010041
-    field public static final int textAppearanceMediumInverse = 16842820; // 0x1010044
-    field public static final int textAppearancePopupMenuHeader = 16844034; // 0x1010502
-    field public static final int textAppearanceSearchResultSubtitle = 16843424; // 0x10102a0
-    field public static final int textAppearanceSearchResultTitle = 16843425; // 0x10102a1
-    field public static final int textAppearanceSmall = 16842818; // 0x1010042
-    field public static final int textAppearanceSmallInverse = 16842821; // 0x1010045
-    field public static final int textAppearanceSmallPopupMenu = 16843522; // 0x1010302
-    field public static final int textCheckMark = 16842822; // 0x1010046
-    field public static final int textCheckMarkInverse = 16842823; // 0x1010047
-    field public static final int textColor = 16842904; // 0x1010098
-    field public static final int textColorAlertDialogListItem = 16843526; // 0x1010306
-    field public static final int textColorHighlight = 16842905; // 0x1010099
-    field public static final int textColorHighlightInverse = 16843599; // 0x101034f
-    field public static final int textColorHint = 16842906; // 0x101009a
-    field public static final int textColorHintInverse = 16842815; // 0x101003f
-    field public static final int textColorLink = 16842907; // 0x101009b
-    field public static final int textColorLinkInverse = 16843600; // 0x1010350
-    field public static final int textColorPrimary = 16842806; // 0x1010036
-    field public static final int textColorPrimaryDisableOnly = 16842807; // 0x1010037
-    field public static final int textColorPrimaryInverse = 16842809; // 0x1010039
-    field public static final int textColorPrimaryInverseDisableOnly = 16843403; // 0x101028b
-    field public static final int textColorPrimaryInverseNoDisable = 16842813; // 0x101003d
-    field public static final int textColorPrimaryNoDisable = 16842811; // 0x101003b
-    field public static final int textColorSecondary = 16842808; // 0x1010038
-    field public static final int textColorSecondaryInverse = 16842810; // 0x101003a
-    field public static final int textColorSecondaryInverseNoDisable = 16842814; // 0x101003e
-    field public static final int textColorSecondaryNoDisable = 16842812; // 0x101003c
-    field public static final int textColorTertiary = 16843282; // 0x1010212
-    field public static final int textColorTertiaryInverse = 16843283; // 0x1010213
-    field public static final int textCursorDrawable = 16843618; // 0x1010362
-    field public static final int textDirection = 16843696; // 0x10103b0
-    field public static final int textEditNoPasteWindowLayout = 16843541; // 0x1010315
-    field public static final int textEditPasteWindowLayout = 16843540; // 0x1010314
-    field public static final int textEditSideNoPasteWindowLayout = 16843615; // 0x101035f
-    field public static final int textEditSidePasteWindowLayout = 16843614; // 0x101035e
-    field public static final int textEditSuggestionItemLayout = 16843636; // 0x1010374
-    field public static final int textFilterEnabled = 16843007; // 0x10100ff
-    field public static final int textFontWeight = 16844165; // 0x1010585
-    field public static final int textIsSelectable = 16843542; // 0x1010316
-    field public static final int textLocale = 16844178; // 0x1010592
-    field public static final int textOff = 16843045; // 0x1010125
-    field public static final int textOn = 16843044; // 0x1010124
-    field public static final int textScaleX = 16843089; // 0x1010151
-    field public static final int textSelectHandle = 16843463; // 0x10102c7
-    field public static final int textSelectHandleLeft = 16843461; // 0x10102c5
-    field public static final int textSelectHandleRight = 16843462; // 0x10102c6
-    field public static final int textSelectHandleWindowStyle = 16843464; // 0x10102c8
-    field public static final int textSize = 16842901; // 0x1010095
-    field public static final int textStyle = 16842903; // 0x1010097
-    field public static final int textSuggestionsWindowStyle = 16843635; // 0x1010373
-    field public static final int textViewStyle = 16842884; // 0x1010084
-    field public static final int theme = 16842752; // 0x1010000
-    field public static final int thickness = 16843360; // 0x1010260
-    field public static final int thicknessRatio = 16843164; // 0x101019c
-    field public static final int thumb = 16843074; // 0x1010142
-    field public static final int thumbOffset = 16843075; // 0x1010143
-    field public static final int thumbPosition = 16844005; // 0x10104e5
-    field public static final int thumbTextPadding = 16843634; // 0x1010372
-    field public static final int thumbTint = 16843889; // 0x1010471
-    field public static final int thumbTintMode = 16843890; // 0x1010472
-    field public static final int thumbnail = 16843429; // 0x10102a5
-    field public static final int tickMark = 16844042; // 0x101050a
-    field public static final int tickMarkTint = 16844043; // 0x101050b
-    field public static final int tickMarkTintMode = 16844044; // 0x101050c
-    field public static final int tileMode = 16843265; // 0x1010201
-    field public static final int tileModeX = 16843895; // 0x1010477
-    field public static final int tileModeY = 16843896; // 0x1010478
-    field public static final int timePickerDialogTheme = 16843934; // 0x101049e
-    field public static final int timePickerMode = 16843956; // 0x10104b4
-    field public static final int timePickerStyle = 16843933; // 0x101049d
-    field public static final int timeZone = 16843724; // 0x10103cc
-    field public static final int tint = 16843041; // 0x1010121
-    field public static final int tintMode = 16843771; // 0x10103fb
-    field public static final int title = 16843233; // 0x10101e1
-    field public static final int titleCondensed = 16843234; // 0x10101e2
-    field public static final int titleMargin = 16844024; // 0x10104f8
-    field public static final int titleMarginBottom = 16844028; // 0x10104fc
-    field public static final int titleMarginEnd = 16844026; // 0x10104fa
-    field public static final int titleMarginStart = 16844025; // 0x10104f9
-    field public static final int titleMarginTop = 16844027; // 0x10104fb
-    field public static final int titleTextAppearance = 16843822; // 0x101042e
-    field public static final int titleTextColor = 16844003; // 0x10104e3
-    field public static final int titleTextStyle = 16843512; // 0x10102f8
-    field public static final int toAlpha = 16843211; // 0x10101cb
-    field public static final int toDegrees = 16843188; // 0x10101b4
-    field public static final int toId = 16843849; // 0x1010449
-    field public static final int toScene = 16843742; // 0x10103de
-    field public static final int toXDelta = 16843207; // 0x10101c7
-    field public static final int toXScale = 16843203; // 0x10101c3
-    field public static final int toYDelta = 16843209; // 0x10101c9
-    field public static final int toYScale = 16843205; // 0x10101c5
-    field public static final int toolbarStyle = 16843946; // 0x10104aa
-    field public static final int tooltipText = 16844084; // 0x1010534
-    field public static final int top = 16843182; // 0x10101ae
-    field public static final int topBright = 16842955; // 0x10100cb
-    field public static final int topDark = 16842951; // 0x10100c7
-    field public static final int topLeftRadius = 16843177; // 0x10101a9
-    field public static final int topOffset = 16843352; // 0x1010258
-    field public static final int topRightRadius = 16843178; // 0x10101aa
-    field public static final int touchscreenBlocksFocus = 16843919; // 0x101048f
-    field public static final int track = 16843631; // 0x101036f
-    field public static final int trackTint = 16843993; // 0x10104d9
-    field public static final int trackTintMode = 16843994; // 0x10104da
-    field public static final int transcriptMode = 16843008; // 0x1010100
-    field public static final int transformPivotX = 16843552; // 0x1010320
-    field public static final int transformPivotY = 16843553; // 0x1010321
-    field public static final int transition = 16843743; // 0x10103df
-    field public static final int transitionGroup = 16843777; // 0x1010401
-    field public static final int transitionName = 16843776; // 0x1010400
-    field public static final int transitionOrdering = 16843744; // 0x10103e0
-    field public static final int transitionVisibilityMode = 16843900; // 0x101047c
-    field public static final int translateX = 16843866; // 0x101045a
-    field public static final int translateY = 16843867; // 0x101045b
-    field public static final int translationX = 16843554; // 0x1010322
-    field public static final int translationY = 16843555; // 0x1010323
-    field public static final int translationZ = 16843770; // 0x10103fa
-    field public static final int trimPathEnd = 16843785; // 0x1010409
-    field public static final int trimPathOffset = 16843786; // 0x101040a
-    field public static final int trimPathStart = 16843784; // 0x1010408
-    field public static final int ttcIndex = 16844143; // 0x101056f
-    field public static final int tunerCount = 16844061; // 0x101051d
-    field public static final int turnScreenOn = 16844138; // 0x101056a
-    field public static final int type = 16843169; // 0x10101a1
-    field public static final int typeface = 16842902; // 0x1010096
-    field public static final int uiOptions = 16843672; // 0x1010398
-    field public static final int uncertainGestureColor = 16843382; // 0x1010276
-    field @Deprecated public static final int unfocusedMonthDateColor = 16843588; // 0x1010344
-    field public static final int unselectedAlpha = 16843278; // 0x101020e
-    field public static final int updatePeriodMillis = 16843344; // 0x1010250
-    field public static final int use32bitAbi = 16844053; // 0x1010515
-    field public static final int useAppZygote = 16844183; // 0x1010597
-    field public static final int useDefaultMargins = 16843641; // 0x1010379
-    field public static final int useEmbeddedDex = 16844190; // 0x101059e
-    field public static final int useIntrinsicSizeAsMinimum = 16843536; // 0x1010310
-    field public static final int useLevel = 16843167; // 0x101019f
-    field public static final int userVisible = 16843409; // 0x1010291
-    field public static final int usesCleartextTraffic = 16844012; // 0x10104ec
-    field public static final int value = 16842788; // 0x1010024
-    field public static final int valueFrom = 16843486; // 0x10102de
-    field public static final int valueTo = 16843487; // 0x10102df
-    field public static final int valueType = 16843488; // 0x10102e0
-    field public static final int variablePadding = 16843157; // 0x1010195
-    field public static final int vendor = 16843751; // 0x10103e7
-    field public static final int version = 16844057; // 0x1010519
-    field public static final int versionCode = 16843291; // 0x101021b
-    field public static final int versionCodeMajor = 16844150; // 0x1010576
-    field public static final int versionMajor = 16844151; // 0x1010577
-    field public static final int versionName = 16843292; // 0x101021c
-    field @Deprecated public static final int verticalCorrection = 16843322; // 0x101023a
-    field public static final int verticalDivider = 16843054; // 0x101012e
-    field @Deprecated public static final int verticalGap = 16843328; // 0x1010240
-    field public static final int verticalScrollbarPosition = 16843572; // 0x1010334
-    field public static final int verticalSpacing = 16843029; // 0x1010115
-    field public static final int viewportHeight = 16843779; // 0x1010403
-    field public static final int viewportWidth = 16843778; // 0x1010402
-    field public static final int visibility = 16842972; // 0x10100dc
-    field public static final int visible = 16843156; // 0x1010194
-    field public static final int visibleToInstantApps = 16844081; // 0x1010531
-    field public static final int vmSafeMode = 16843448; // 0x10102b8
-    field public static final int voiceIcon = 16843908; // 0x1010484
-    field public static final int voiceLanguage = 16843349; // 0x1010255
-    field public static final int voiceLanguageModel = 16843347; // 0x1010253
-    field public static final int voiceMaxResults = 16843350; // 0x1010256
-    field public static final int voicePromptText = 16843348; // 0x1010254
-    field public static final int voiceSearchMode = 16843346; // 0x1010252
-    field public static final int wallpaperCloseEnterAnimation = 16843413; // 0x1010295
-    field public static final int wallpaperCloseExitAnimation = 16843414; // 0x1010296
-    field public static final int wallpaperIntraCloseEnterAnimation = 16843417; // 0x1010299
-    field public static final int wallpaperIntraCloseExitAnimation = 16843418; // 0x101029a
-    field public static final int wallpaperIntraOpenEnterAnimation = 16843415; // 0x1010297
-    field public static final int wallpaperIntraOpenExitAnimation = 16843416; // 0x1010298
-    field public static final int wallpaperOpenEnterAnimation = 16843411; // 0x1010293
-    field public static final int wallpaperOpenExitAnimation = 16843412; // 0x1010294
-    field public static final int webTextViewStyle = 16843449; // 0x10102b9
-    field public static final int webViewStyle = 16842885; // 0x1010085
-    field public static final int weekDayTextAppearance = 16843592; // 0x1010348
-    field @Deprecated public static final int weekNumberColor = 16843589; // 0x1010345
-    field @Deprecated public static final int weekSeparatorLineColor = 16843590; // 0x1010346
-    field public static final int weightSum = 16843048; // 0x1010128
-    field public static final int widgetCategory = 16843716; // 0x10103c4
-    field public static final int widgetFeatures = 16844153; // 0x1010579
-    field public static final int widgetLayout = 16843243; // 0x10101eb
-    field public static final int width = 16843097; // 0x1010159
-    field public static final int windowActionBar = 16843469; // 0x10102cd
-    field public static final int windowActionBarOverlay = 16843492; // 0x10102e4
-    field public static final int windowActionModeOverlay = 16843485; // 0x10102dd
-    field public static final int windowActivityTransitions = 16843981; // 0x10104cd
-    field public static final int windowAllowEnterTransitionOverlap = 16843836; // 0x101043c
-    field public static final int windowAllowReturnTransitionOverlap = 16843835; // 0x101043b
-    field public static final int windowAnimationStyle = 16842926; // 0x10100ae
-    field public static final int windowBackground = 16842836; // 0x1010054
-    field public static final int windowBackgroundFallback = 16844035; // 0x1010503
-    field public static final int windowClipToOutline = 16843947; // 0x10104ab
-    field public static final int windowCloseOnTouchOutside = 16843611; // 0x101035b
-    field public static final int windowContentOverlay = 16842841; // 0x1010059
-    field public static final int windowContentTransitionManager = 16843769; // 0x10103f9
-    field public static final int windowContentTransitions = 16843768; // 0x10103f8
-    field public static final int windowDisablePreview = 16843298; // 0x1010222
-    field public static final int windowDrawsSystemBarBackgrounds = 16843856; // 0x1010450
-    field public static final int windowElevation = 16843920; // 0x1010490
-    field public static final int windowEnableSplitTouch = 16843543; // 0x1010317
-    field public static final int windowEnterAnimation = 16842932; // 0x10100b4
-    field public static final int windowEnterTransition = 16843831; // 0x1010437
-    field public static final int windowExitAnimation = 16842933; // 0x10100b5
-    field public static final int windowExitTransition = 16843832; // 0x1010438
-    field public static final int windowFrame = 16842837; // 0x1010055
-    field public static final int windowFullscreen = 16843277; // 0x101020d
-    field public static final int windowHideAnimation = 16842935; // 0x10100b7
-    field public static final int windowIsFloating = 16842839; // 0x1010057
-    field public static final int windowIsTranslucent = 16842840; // 0x1010058
-    field public static final int windowLayoutInDisplayCutoutMode = 16844166; // 0x1010586
-    field public static final int windowLightNavigationBar = 16844140; // 0x101056c
-    field public static final int windowLightStatusBar = 16844000; // 0x10104e0
-    field public static final int windowMinWidthMajor = 16843606; // 0x1010356
-    field public static final int windowMinWidthMinor = 16843607; // 0x1010357
-    field public static final int windowNoDisplay = 16843294; // 0x101021e
-    field public static final int windowNoTitle = 16842838; // 0x1010056
-    field @Deprecated public static final int windowOverscan = 16843727; // 0x10103cf
-    field public static final int windowReenterTransition = 16843951; // 0x10104af
-    field public static final int windowReturnTransition = 16843950; // 0x10104ae
-    field public static final int windowSharedElementEnterTransition = 16843833; // 0x1010439
-    field public static final int windowSharedElementExitTransition = 16843834; // 0x101043a
-    field public static final int windowSharedElementReenterTransition = 16843953; // 0x10104b1
-    field public static final int windowSharedElementReturnTransition = 16843952; // 0x10104b0
-    field public static final int windowSharedElementsUseOverlay = 16843963; // 0x10104bb
-    field public static final int windowShowAnimation = 16842934; // 0x10100b6
-    field public static final int windowShowWallpaper = 16843410; // 0x1010292
-    field public static final int windowSoftInputMode = 16843307; // 0x101022b
-    field public static final int windowSplashscreenContent = 16844132; // 0x1010564
-    field @Deprecated public static final int windowSwipeToDismiss = 16843763; // 0x10103f3
-    field public static final int windowTitleBackgroundStyle = 16842844; // 0x101005c
-    field public static final int windowTitleSize = 16842842; // 0x101005a
-    field public static final int windowTitleStyle = 16842843; // 0x101005b
-    field public static final int windowTransitionBackgroundFadeDuration = 16843873; // 0x1010461
-    field public static final int windowTranslucentNavigation = 16843760; // 0x10103f0
-    field public static final int windowTranslucentStatus = 16843759; // 0x10103ef
-    field public static final int writePermission = 16842760; // 0x1010008
-    field public static final int x = 16842924; // 0x10100ac
-    field public static final int xlargeScreens = 16843455; // 0x10102bf
-    field public static final int y = 16842925; // 0x10100ad
-    field @Deprecated public static final int yearListItemTextAppearance = 16843929; // 0x1010499
-    field @Deprecated public static final int yearListSelectorColor = 16843930; // 0x101049a
-    field public static final int yesNoPreferenceStyle = 16842896; // 0x1010090
-    field public static final int zAdjustment = 16843201; // 0x10101c1
-    field public static final int zygotePreloadName = 16844189; // 0x101059d
-  }
-
-  public static final class R.bool {
-    ctor public R.bool();
-  }
-
-  public static final class R.color {
-    ctor public R.color();
-    field public static final int background_dark = 17170446; // 0x106000e
-    field public static final int background_light = 17170447; // 0x106000f
-    field public static final int black = 17170444; // 0x106000c
-    field public static final int darker_gray = 17170432; // 0x1060000
-    field public static final int holo_blue_bright = 17170459; // 0x106001b
-    field public static final int holo_blue_dark = 17170451; // 0x1060013
-    field public static final int holo_blue_light = 17170450; // 0x1060012
-    field public static final int holo_green_dark = 17170453; // 0x1060015
-    field public static final int holo_green_light = 17170452; // 0x1060014
-    field public static final int holo_orange_dark = 17170457; // 0x1060019
-    field public static final int holo_orange_light = 17170456; // 0x1060018
-    field public static final int holo_purple = 17170458; // 0x106001a
-    field public static final int holo_red_dark = 17170455; // 0x1060017
-    field public static final int holo_red_light = 17170454; // 0x1060016
-    field @Deprecated public static final int primary_text_dark = 17170433; // 0x1060001
-    field @Deprecated public static final int primary_text_dark_nodisable = 17170434; // 0x1060002
-    field @Deprecated public static final int primary_text_light = 17170435; // 0x1060003
-    field @Deprecated public static final int primary_text_light_nodisable = 17170436; // 0x1060004
-    field @Deprecated public static final int secondary_text_dark = 17170437; // 0x1060005
-    field @Deprecated public static final int secondary_text_dark_nodisable = 17170438; // 0x1060006
-    field @Deprecated public static final int secondary_text_light = 17170439; // 0x1060007
-    field @Deprecated public static final int secondary_text_light_nodisable = 17170440; // 0x1060008
-    field public static final int tab_indicator_text = 17170441; // 0x1060009
-    field @Deprecated public static final int tertiary_text_dark = 17170448; // 0x1060010
-    field @Deprecated public static final int tertiary_text_light = 17170449; // 0x1060011
-    field public static final int transparent = 17170445; // 0x106000d
-    field public static final int white = 17170443; // 0x106000b
-    field public static final int widget_edittext_dark = 17170442; // 0x106000a
-  }
-
-  public static final class R.dimen {
-    ctor public R.dimen();
-    field public static final int app_icon_size = 17104896; // 0x1050000
-    field public static final int dialog_min_width_major = 17104899; // 0x1050003
-    field public static final int dialog_min_width_minor = 17104900; // 0x1050004
-    field public static final int notification_large_icon_height = 17104902; // 0x1050006
-    field public static final int notification_large_icon_width = 17104901; // 0x1050005
-    field public static final int thumbnail_height = 17104897; // 0x1050001
-    field public static final int thumbnail_width = 17104898; // 0x1050002
-  }
-
-  public static final class R.drawable {
-    ctor public R.drawable();
-    field public static final int alert_dark_frame = 17301504; // 0x1080000
-    field public static final int alert_light_frame = 17301505; // 0x1080001
-    field public static final int arrow_down_float = 17301506; // 0x1080002
-    field public static final int arrow_up_float = 17301507; // 0x1080003
-    field public static final int bottom_bar = 17301658; // 0x108009a
-    field public static final int btn_default = 17301508; // 0x1080004
-    field public static final int btn_default_small = 17301509; // 0x1080005
-    field public static final int btn_dialog = 17301527; // 0x1080017
-    field public static final int btn_dropdown = 17301510; // 0x1080006
-    field public static final int btn_minus = 17301511; // 0x1080007
-    field public static final int btn_plus = 17301512; // 0x1080008
-    field public static final int btn_radio = 17301513; // 0x1080009
-    field public static final int btn_star = 17301514; // 0x108000a
-    field public static final int btn_star_big_off = 17301515; // 0x108000b
-    field public static final int btn_star_big_on = 17301516; // 0x108000c
-    field public static final int button_onoff_indicator_off = 17301518; // 0x108000e
-    field public static final int button_onoff_indicator_on = 17301517; // 0x108000d
-    field public static final int checkbox_off_background = 17301519; // 0x108000f
-    field public static final int checkbox_on_background = 17301520; // 0x1080010
-    field public static final int dark_header = 17301669; // 0x10800a5
-    field public static final int dialog_frame = 17301521; // 0x1080011
-    field public static final int dialog_holo_dark_frame = 17301682; // 0x10800b2
-    field public static final int dialog_holo_light_frame = 17301683; // 0x10800b3
-    field public static final int divider_horizontal_bright = 17301522; // 0x1080012
-    field public static final int divider_horizontal_dark = 17301524; // 0x1080014
-    field public static final int divider_horizontal_dim_dark = 17301525; // 0x1080015
-    field public static final int divider_horizontal_textfield = 17301523; // 0x1080013
-    field public static final int edit_text = 17301526; // 0x1080016
-    field public static final int editbox_background = 17301528; // 0x1080018
-    field public static final int editbox_background_normal = 17301529; // 0x1080019
-    field public static final int editbox_dropdown_dark_frame = 17301530; // 0x108001a
-    field public static final int editbox_dropdown_light_frame = 17301531; // 0x108001b
-    field public static final int gallery_thumb = 17301532; // 0x108001c
-    field public static final int ic_btn_speak_now = 17301668; // 0x10800a4
-    field public static final int ic_delete = 17301533; // 0x108001d
-    field public static final int ic_dialog_alert = 17301543; // 0x1080027
-    field public static final int ic_dialog_dialer = 17301544; // 0x1080028
-    field public static final int ic_dialog_email = 17301545; // 0x1080029
-    field public static final int ic_dialog_info = 17301659; // 0x108009b
-    field public static final int ic_dialog_map = 17301546; // 0x108002a
-    field public static final int ic_input_add = 17301547; // 0x108002b
-    field public static final int ic_input_delete = 17301548; // 0x108002c
-    field public static final int ic_input_get = 17301549; // 0x108002d
-    field public static final int ic_lock_idle_alarm = 17301550; // 0x108002e
-    field public static final int ic_lock_idle_charging = 17301534; // 0x108001e
-    field public static final int ic_lock_idle_lock = 17301535; // 0x108001f
-    field public static final int ic_lock_idle_low_battery = 17301536; // 0x1080020
-    field public static final int ic_lock_lock = 17301551; // 0x108002f
-    field public static final int ic_lock_power_off = 17301552; // 0x1080030
-    field public static final int ic_lock_silent_mode = 17301553; // 0x1080031
-    field public static final int ic_lock_silent_mode_off = 17301554; // 0x1080032
-    field public static final int ic_media_ff = 17301537; // 0x1080021
-    field public static final int ic_media_next = 17301538; // 0x1080022
-    field public static final int ic_media_pause = 17301539; // 0x1080023
-    field public static final int ic_media_play = 17301540; // 0x1080024
-    field public static final int ic_media_previous = 17301541; // 0x1080025
-    field public static final int ic_media_rew = 17301542; // 0x1080026
-    field public static final int ic_menu_add = 17301555; // 0x1080033
-    field public static final int ic_menu_agenda = 17301556; // 0x1080034
-    field public static final int ic_menu_always_landscape_portrait = 17301557; // 0x1080035
-    field public static final int ic_menu_call = 17301558; // 0x1080036
-    field public static final int ic_menu_camera = 17301559; // 0x1080037
-    field public static final int ic_menu_close_clear_cancel = 17301560; // 0x1080038
-    field public static final int ic_menu_compass = 17301561; // 0x1080039
-    field public static final int ic_menu_crop = 17301562; // 0x108003a
-    field public static final int ic_menu_day = 17301563; // 0x108003b
-    field public static final int ic_menu_delete = 17301564; // 0x108003c
-    field public static final int ic_menu_directions = 17301565; // 0x108003d
-    field public static final int ic_menu_edit = 17301566; // 0x108003e
-    field public static final int ic_menu_gallery = 17301567; // 0x108003f
-    field public static final int ic_menu_help = 17301568; // 0x1080040
-    field public static final int ic_menu_info_details = 17301569; // 0x1080041
-    field public static final int ic_menu_manage = 17301570; // 0x1080042
-    field public static final int ic_menu_mapmode = 17301571; // 0x1080043
-    field public static final int ic_menu_month = 17301572; // 0x1080044
-    field public static final int ic_menu_more = 17301573; // 0x1080045
-    field public static final int ic_menu_my_calendar = 17301574; // 0x1080046
-    field public static final int ic_menu_mylocation = 17301575; // 0x1080047
-    field public static final int ic_menu_myplaces = 17301576; // 0x1080048
-    field public static final int ic_menu_preferences = 17301577; // 0x1080049
-    field public static final int ic_menu_recent_history = 17301578; // 0x108004a
-    field public static final int ic_menu_report_image = 17301579; // 0x108004b
-    field public static final int ic_menu_revert = 17301580; // 0x108004c
-    field public static final int ic_menu_rotate = 17301581; // 0x108004d
-    field public static final int ic_menu_save = 17301582; // 0x108004e
-    field public static final int ic_menu_search = 17301583; // 0x108004f
-    field public static final int ic_menu_send = 17301584; // 0x1080050
-    field public static final int ic_menu_set_as = 17301585; // 0x1080051
-    field public static final int ic_menu_share = 17301586; // 0x1080052
-    field public static final int ic_menu_slideshow = 17301587; // 0x1080053
-    field public static final int ic_menu_sort_alphabetically = 17301660; // 0x108009c
-    field public static final int ic_menu_sort_by_size = 17301661; // 0x108009d
-    field public static final int ic_menu_today = 17301588; // 0x1080054
-    field public static final int ic_menu_upload = 17301589; // 0x1080055
-    field public static final int ic_menu_upload_you_tube = 17301590; // 0x1080056
-    field public static final int ic_menu_view = 17301591; // 0x1080057
-    field public static final int ic_menu_week = 17301592; // 0x1080058
-    field public static final int ic_menu_zoom = 17301593; // 0x1080059
-    field public static final int ic_notification_clear_all = 17301594; // 0x108005a
-    field public static final int ic_notification_overlay = 17301595; // 0x108005b
-    field public static final int ic_partial_secure = 17301596; // 0x108005c
-    field public static final int ic_popup_disk_full = 17301597; // 0x108005d
-    field public static final int ic_popup_reminder = 17301598; // 0x108005e
-    field public static final int ic_popup_sync = 17301599; // 0x108005f
-    field public static final int ic_search_category_default = 17301600; // 0x1080060
-    field public static final int ic_secure = 17301601; // 0x1080061
-    field public static final int list_selector_background = 17301602; // 0x1080062
-    field public static final int menu_frame = 17301603; // 0x1080063
-    field public static final int menu_full_frame = 17301604; // 0x1080064
-    field public static final int menuitem_background = 17301605; // 0x1080065
-    field public static final int picture_frame = 17301606; // 0x1080066
-    field public static final int presence_audio_away = 17301679; // 0x10800af
-    field public static final int presence_audio_busy = 17301680; // 0x10800b0
-    field public static final int presence_audio_online = 17301681; // 0x10800b1
-    field public static final int presence_away = 17301607; // 0x1080067
-    field public static final int presence_busy = 17301608; // 0x1080068
-    field public static final int presence_invisible = 17301609; // 0x1080069
-    field public static final int presence_offline = 17301610; // 0x108006a
-    field public static final int presence_online = 17301611; // 0x108006b
-    field public static final int presence_video_away = 17301676; // 0x10800ac
-    field public static final int presence_video_busy = 17301677; // 0x10800ad
-    field public static final int presence_video_online = 17301678; // 0x10800ae
-    field public static final int progress_horizontal = 17301612; // 0x108006c
-    field public static final int progress_indeterminate_horizontal = 17301613; // 0x108006d
-    field public static final int radiobutton_off_background = 17301614; // 0x108006e
-    field public static final int radiobutton_on_background = 17301615; // 0x108006f
-    field public static final int screen_background_dark = 17301656; // 0x1080098
-    field public static final int screen_background_dark_transparent = 17301673; // 0x10800a9
-    field public static final int screen_background_light = 17301657; // 0x1080099
-    field public static final int screen_background_light_transparent = 17301674; // 0x10800aa
-    field public static final int spinner_background = 17301616; // 0x1080070
-    field public static final int spinner_dropdown_background = 17301617; // 0x1080071
-    field public static final int star_big_off = 17301619; // 0x1080073
-    field public static final int star_big_on = 17301618; // 0x1080072
-    field public static final int star_off = 17301621; // 0x1080075
-    field public static final int star_on = 17301620; // 0x1080074
-    field public static final int stat_notify_call_mute = 17301622; // 0x1080076
-    field public static final int stat_notify_chat = 17301623; // 0x1080077
-    field public static final int stat_notify_error = 17301624; // 0x1080078
-    field public static final int stat_notify_missed_call = 17301631; // 0x108007f
-    field public static final int stat_notify_more = 17301625; // 0x1080079
-    field public static final int stat_notify_sdcard = 17301626; // 0x108007a
-    field public static final int stat_notify_sdcard_prepare = 17301675; // 0x10800ab
-    field public static final int stat_notify_sdcard_usb = 17301627; // 0x108007b
-    field public static final int stat_notify_sync = 17301628; // 0x108007c
-    field public static final int stat_notify_sync_noanim = 17301629; // 0x108007d
-    field public static final int stat_notify_voicemail = 17301630; // 0x108007e
-    field public static final int stat_sys_data_bluetooth = 17301632; // 0x1080080
-    field public static final int stat_sys_download = 17301633; // 0x1080081
-    field public static final int stat_sys_download_done = 17301634; // 0x1080082
-    field public static final int stat_sys_headset = 17301635; // 0x1080083
-    field @Deprecated public static final int stat_sys_phone_call = 17301636; // 0x1080084
-    field @Deprecated public static final int stat_sys_phone_call_forward = 17301637; // 0x1080085
-    field @Deprecated public static final int stat_sys_phone_call_on_hold = 17301638; // 0x1080086
-    field public static final int stat_sys_speakerphone = 17301639; // 0x1080087
-    field public static final int stat_sys_upload = 17301640; // 0x1080088
-    field public static final int stat_sys_upload_done = 17301641; // 0x1080089
-    field @Deprecated public static final int stat_sys_vp_phone_call = 17301671; // 0x10800a7
-    field @Deprecated public static final int stat_sys_vp_phone_call_on_hold = 17301672; // 0x10800a8
-    field public static final int stat_sys_warning = 17301642; // 0x108008a
-    field public static final int status_bar_item_app_background = 17301643; // 0x108008b
-    field public static final int status_bar_item_background = 17301644; // 0x108008c
-    field public static final int sym_action_call = 17301645; // 0x108008d
-    field public static final int sym_action_chat = 17301646; // 0x108008e
-    field public static final int sym_action_email = 17301647; // 0x108008f
-    field public static final int sym_call_incoming = 17301648; // 0x1080090
-    field public static final int sym_call_missed = 17301649; // 0x1080091
-    field public static final int sym_call_outgoing = 17301650; // 0x1080092
-    field public static final int sym_contact_card = 17301652; // 0x1080094
-    field public static final int sym_def_app_icon = 17301651; // 0x1080093
-    field public static final int title_bar = 17301653; // 0x1080095
-    field public static final int title_bar_tall = 17301670; // 0x10800a6
-    field public static final int toast_frame = 17301654; // 0x1080096
-    field public static final int zoom_plate = 17301655; // 0x1080097
-  }
-
-  public static final class R.fraction {
-    ctor public R.fraction();
-  }
-
-  public static final class R.id {
-    ctor public R.id();
-    field public static final int accessibilityActionContextClick = 16908348; // 0x102003c
-    field public static final int accessibilityActionHideTooltip = 16908357; // 0x1020045
-    field public static final int accessibilityActionImeEnter = 16908372; // 0x1020054
-    field public static final int accessibilityActionMoveWindow = 16908354; // 0x1020042
-    field public static final int accessibilityActionPageDown = 16908359; // 0x1020047
-    field public static final int accessibilityActionPageLeft = 16908360; // 0x1020048
-    field public static final int accessibilityActionPageRight = 16908361; // 0x1020049
-    field public static final int accessibilityActionPageUp = 16908358; // 0x1020046
-    field public static final int accessibilityActionPressAndHold = 16908362; // 0x102004a
-    field public static final int accessibilityActionScrollDown = 16908346; // 0x102003a
-    field public static final int accessibilityActionScrollLeft = 16908345; // 0x1020039
-    field public static final int accessibilityActionScrollRight = 16908347; // 0x102003b
-    field public static final int accessibilityActionScrollToPosition = 16908343; // 0x1020037
-    field public static final int accessibilityActionScrollUp = 16908344; // 0x1020038
-    field public static final int accessibilityActionSetProgress = 16908349; // 0x102003d
-    field public static final int accessibilityActionShowOnScreen = 16908342; // 0x1020036
-    field public static final int accessibilityActionShowTooltip = 16908356; // 0x1020044
-    field public static final int accessibilitySystemActionBack = 16908363; // 0x102004b
-    field public static final int accessibilitySystemActionHome = 16908364; // 0x102004c
-    field public static final int accessibilitySystemActionLockScreen = 16908370; // 0x1020052
-    field public static final int accessibilitySystemActionNotifications = 16908366; // 0x102004e
-    field public static final int accessibilitySystemActionPowerDialog = 16908368; // 0x1020050
-    field public static final int accessibilitySystemActionQuickSettings = 16908367; // 0x102004f
-    field public static final int accessibilitySystemActionRecents = 16908365; // 0x102004d
-    field public static final int accessibilitySystemActionTakeScreenshot = 16908371; // 0x1020053
-    field public static final int accessibilitySystemActionToggleSplitScreen = 16908369; // 0x1020051
-    field public static final int addToDictionary = 16908330; // 0x102002a
-    field public static final int autofill = 16908355; // 0x1020043
-    field public static final int background = 16908288; // 0x1020000
-    field public static final int button1 = 16908313; // 0x1020019
-    field public static final int button2 = 16908314; // 0x102001a
-    field public static final int button3 = 16908315; // 0x102001b
-    field public static final int candidatesArea = 16908317; // 0x102001d
-    field public static final int checkbox = 16908289; // 0x1020001
-    field public static final int closeButton = 16908327; // 0x1020027
-    field public static final int content = 16908290; // 0x1020002
-    field public static final int copy = 16908321; // 0x1020021
-    field public static final int copyUrl = 16908323; // 0x1020023
-    field public static final int custom = 16908331; // 0x102002b
-    field public static final int cut = 16908320; // 0x1020020
-    field public static final int edit = 16908291; // 0x1020003
-    field public static final int empty = 16908292; // 0x1020004
-    field public static final int extractArea = 16908316; // 0x102001c
-    field public static final int hint = 16908293; // 0x1020005
-    field public static final int home = 16908332; // 0x102002c
-    field public static final int icon = 16908294; // 0x1020006
-    field public static final int icon1 = 16908295; // 0x1020007
-    field public static final int icon2 = 16908296; // 0x1020008
-    field public static final int icon_frame = 16908350; // 0x102003e
-    field public static final int input = 16908297; // 0x1020009
-    field public static final int inputArea = 16908318; // 0x102001e
-    field public static final int inputExtractEditText = 16908325; // 0x1020025
-    field @Deprecated public static final int keyboardView = 16908326; // 0x1020026
-    field public static final int list = 16908298; // 0x102000a
-    field public static final int list_container = 16908351; // 0x102003f
-    field public static final int mask = 16908334; // 0x102002e
-    field public static final int message = 16908299; // 0x102000b
-    field public static final int navigationBarBackground = 16908336; // 0x1020030
-    field public static final int paste = 16908322; // 0x1020022
-    field public static final int pasteAsPlainText = 16908337; // 0x1020031
-    field public static final int primary = 16908300; // 0x102000c
-    field public static final int progress = 16908301; // 0x102000d
-    field public static final int redo = 16908339; // 0x1020033
-    field public static final int replaceText = 16908340; // 0x1020034
-    field public static final int secondaryProgress = 16908303; // 0x102000f
-    field public static final int selectAll = 16908319; // 0x102001f
-    field public static final int selectTextMode = 16908333; // 0x102002d
-    field public static final int selectedIcon = 16908302; // 0x102000e
-    field public static final int shareText = 16908341; // 0x1020035
-    field public static final int startSelectingText = 16908328; // 0x1020028
-    field public static final int statusBarBackground = 16908335; // 0x102002f
-    field public static final int stopSelectingText = 16908329; // 0x1020029
-    field public static final int summary = 16908304; // 0x1020010
-    field public static final int switchInputMethod = 16908324; // 0x1020024
-    field public static final int switch_widget = 16908352; // 0x1020040
-    field public static final int tabcontent = 16908305; // 0x1020011
-    field public static final int tabhost = 16908306; // 0x1020012
-    field public static final int tabs = 16908307; // 0x1020013
-    field public static final int text1 = 16908308; // 0x1020014
-    field public static final int text2 = 16908309; // 0x1020015
-    field public static final int textAssist = 16908353; // 0x1020041
-    field public static final int title = 16908310; // 0x1020016
-    field public static final int toggle = 16908311; // 0x1020017
-    field public static final int undo = 16908338; // 0x1020032
-    field public static final int widget_frame = 16908312; // 0x1020018
-  }
-
-  public static final class R.integer {
-    ctor public R.integer();
-    field public static final int config_longAnimTime = 17694722; // 0x10e0002
-    field public static final int config_mediumAnimTime = 17694721; // 0x10e0001
-    field public static final int config_shortAnimTime = 17694720; // 0x10e0000
-    field public static final int status_bar_notification_info_maxnum = 17694723; // 0x10e0003
-  }
-
-  public static final class R.interpolator {
-    ctor public R.interpolator();
-    field public static final int accelerate_cubic = 17563650; // 0x10c0002
-    field public static final int accelerate_decelerate = 17563654; // 0x10c0006
-    field public static final int accelerate_quad = 17563648; // 0x10c0000
-    field public static final int accelerate_quint = 17563652; // 0x10c0004
-    field public static final int anticipate = 17563655; // 0x10c0007
-    field public static final int anticipate_overshoot = 17563657; // 0x10c0009
-    field public static final int bounce = 17563658; // 0x10c000a
-    field public static final int cycle = 17563660; // 0x10c000c
-    field public static final int decelerate_cubic = 17563651; // 0x10c0003
-    field public static final int decelerate_quad = 17563649; // 0x10c0001
-    field public static final int decelerate_quint = 17563653; // 0x10c0005
-    field public static final int fast_out_extra_slow_in = 17563674; // 0x10c001a
-    field public static final int fast_out_linear_in = 17563663; // 0x10c000f
-    field public static final int fast_out_slow_in = 17563661; // 0x10c000d
-    field public static final int linear = 17563659; // 0x10c000b
-    field public static final int linear_out_slow_in = 17563662; // 0x10c000e
-    field public static final int overshoot = 17563656; // 0x10c0008
-  }
-
-  public static final class R.layout {
-    ctor public R.layout();
-    field public static final int activity_list_item = 17367040; // 0x1090000
-    field public static final int browser_link_context_header = 17367054; // 0x109000e
-    field public static final int expandable_list_content = 17367041; // 0x1090001
-    field public static final int list_content = 17367060; // 0x1090014
-    field public static final int preference_category = 17367042; // 0x1090002
-    field public static final int select_dialog_item = 17367057; // 0x1090011
-    field public static final int select_dialog_multichoice = 17367059; // 0x1090013
-    field public static final int select_dialog_singlechoice = 17367058; // 0x1090012
-    field public static final int simple_dropdown_item_1line = 17367050; // 0x109000a
-    field public static final int simple_expandable_list_item_1 = 17367046; // 0x1090006
-    field public static final int simple_expandable_list_item_2 = 17367047; // 0x1090007
-    field public static final int simple_gallery_item = 17367051; // 0x109000b
-    field public static final int simple_list_item_1 = 17367043; // 0x1090003
-    field public static final int simple_list_item_2 = 17367044; // 0x1090004
-    field public static final int simple_list_item_activated_1 = 17367062; // 0x1090016
-    field public static final int simple_list_item_activated_2 = 17367063; // 0x1090017
-    field public static final int simple_list_item_checked = 17367045; // 0x1090005
-    field public static final int simple_list_item_multiple_choice = 17367056; // 0x1090010
-    field public static final int simple_list_item_single_choice = 17367055; // 0x109000f
-    field public static final int simple_selectable_list_item = 17367061; // 0x1090015
-    field public static final int simple_spinner_dropdown_item = 17367049; // 0x1090009
-    field public static final int simple_spinner_item = 17367048; // 0x1090008
-    field public static final int test_list_item = 17367052; // 0x109000c
-    field public static final int two_line_list_item = 17367053; // 0x109000d
-  }
-
-  public static final class R.menu {
-    ctor public R.menu();
-  }
-
-  public static final class R.mipmap {
-    ctor public R.mipmap();
-    field public static final int sym_def_app_icon = 17629184; // 0x10d0000
-  }
-
-  public static final class R.plurals {
-    ctor public R.plurals();
-  }
-
-  public static final class R.raw {
-    ctor public R.raw();
-  }
-
-  public static final class R.string {
-    ctor public R.string();
-    field public static final int VideoView_error_button = 17039376; // 0x1040010
-    field public static final int VideoView_error_text_invalid_progressive_playback = 17039381; // 0x1040015
-    field public static final int VideoView_error_text_unknown = 17039377; // 0x1040011
-    field public static final int VideoView_error_title = 17039378; // 0x1040012
-    field public static final int autofill = 17039386; // 0x104001a
-    field public static final int cancel = 17039360; // 0x1040000
-    field public static final int copy = 17039361; // 0x1040001
-    field public static final int copyUrl = 17039362; // 0x1040002
-    field public static final int cut = 17039363; // 0x1040003
-    field public static final int defaultMsisdnAlphaTag = 17039365; // 0x1040005
-    field public static final int defaultVoiceMailAlphaTag = 17039364; // 0x1040004
-    field public static final int dialog_alert_title = 17039380; // 0x1040014
-    field public static final int emptyPhoneNumber = 17039366; // 0x1040006
-    field public static final int fingerprint_icon_content_description = 17039384; // 0x1040018
-    field public static final int httpErrorBadUrl = 17039367; // 0x1040007
-    field public static final int httpErrorUnsupportedScheme = 17039368; // 0x1040008
-    field @Deprecated public static final int no = 17039369; // 0x1040009
-    field public static final int ok = 17039370; // 0x104000a
-    field public static final int paste = 17039371; // 0x104000b
-    field public static final int paste_as_plain_text = 17039385; // 0x1040019
-    field public static final int search_go = 17039372; // 0x104000c
-    field public static final int selectAll = 17039373; // 0x104000d
-    field public static final int selectTextMode = 17039382; // 0x1040016
-    field public static final int status_bar_notification_info_overflow = 17039383; // 0x1040017
-    field public static final int unknownName = 17039374; // 0x104000e
-    field public static final int untitled = 17039375; // 0x104000f
-    field @Deprecated public static final int yes = 17039379; // 0x1040013
-  }
-
-  public static final class R.style {
-    ctor public R.style();
-    field public static final int Animation = 16973824; // 0x1030000
-    field public static final int Animation_Activity = 16973825; // 0x1030001
-    field public static final int Animation_Dialog = 16973826; // 0x1030002
-    field public static final int Animation_InputMethod = 16973910; // 0x1030056
-    field public static final int Animation_Toast = 16973828; // 0x1030004
-    field public static final int Animation_Translucent = 16973827; // 0x1030003
-    field public static final int DeviceDefault_ButtonBar = 16974287; // 0x10301cf
-    field public static final int DeviceDefault_ButtonBar_AlertDialog = 16974288; // 0x10301d0
-    field public static final int DeviceDefault_Light_ButtonBar = 16974290; // 0x10301d2
-    field public static final int DeviceDefault_Light_ButtonBar_AlertDialog = 16974291; // 0x10301d3
-    field public static final int DeviceDefault_Light_SegmentedButton = 16974292; // 0x10301d4
-    field public static final int DeviceDefault_SegmentedButton = 16974289; // 0x10301d1
-    field public static final int Holo_ButtonBar = 16974053; // 0x10300e5
-    field public static final int Holo_ButtonBar_AlertDialog = 16974055; // 0x10300e7
-    field public static final int Holo_Light_ButtonBar = 16974054; // 0x10300e6
-    field public static final int Holo_Light_ButtonBar_AlertDialog = 16974056; // 0x10300e8
-    field public static final int Holo_Light_SegmentedButton = 16974058; // 0x10300ea
-    field public static final int Holo_SegmentedButton = 16974057; // 0x10300e9
-    field public static final int MediaButton = 16973879; // 0x1030037
-    field public static final int MediaButton_Ffwd = 16973883; // 0x103003b
-    field public static final int MediaButton_Next = 16973881; // 0x1030039
-    field public static final int MediaButton_Pause = 16973885; // 0x103003d
-    field public static final int MediaButton_Play = 16973882; // 0x103003a
-    field public static final int MediaButton_Previous = 16973880; // 0x1030038
-    field public static final int MediaButton_Rew = 16973884; // 0x103003c
-    field public static final int TextAppearance = 16973886; // 0x103003e
-    field public static final int TextAppearance_DeviceDefault = 16974253; // 0x10301ad
-    field public static final int TextAppearance_DeviceDefault_DialogWindowTitle = 16974264; // 0x10301b8
-    field public static final int TextAppearance_DeviceDefault_Inverse = 16974254; // 0x10301ae
-    field public static final int TextAppearance_DeviceDefault_Large = 16974255; // 0x10301af
-    field public static final int TextAppearance_DeviceDefault_Large_Inverse = 16974256; // 0x10301b0
-    field public static final int TextAppearance_DeviceDefault_Medium = 16974257; // 0x10301b1
-    field public static final int TextAppearance_DeviceDefault_Medium_Inverse = 16974258; // 0x10301b2
-    field public static final int TextAppearance_DeviceDefault_SearchResult_Subtitle = 16974262; // 0x10301b6
-    field public static final int TextAppearance_DeviceDefault_SearchResult_Title = 16974261; // 0x10301b5
-    field public static final int TextAppearance_DeviceDefault_Small = 16974259; // 0x10301b3
-    field public static final int TextAppearance_DeviceDefault_Small_Inverse = 16974260; // 0x10301b4
-    field public static final int TextAppearance_DeviceDefault_Widget = 16974265; // 0x10301b9
-    field public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Menu = 16974286; // 0x10301ce
-    field public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Subtitle = 16974279; // 0x10301c7
-    field @Deprecated public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Subtitle_Inverse = 16974283; // 0x10301cb
-    field public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Title = 16974278; // 0x10301c6
-    field @Deprecated public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Title_Inverse = 16974282; // 0x10301ca
-    field public static final int TextAppearance_DeviceDefault_Widget_ActionMode_Subtitle = 16974281; // 0x10301c9
-    field @Deprecated public static final int TextAppearance_DeviceDefault_Widget_ActionMode_Subtitle_Inverse = 16974285; // 0x10301cd
-    field public static final int TextAppearance_DeviceDefault_Widget_ActionMode_Title = 16974280; // 0x10301c8
-    field @Deprecated public static final int TextAppearance_DeviceDefault_Widget_ActionMode_Title_Inverse = 16974284; // 0x10301cc
-    field public static final int TextAppearance_DeviceDefault_Widget_Button = 16974266; // 0x10301ba
-    field public static final int TextAppearance_DeviceDefault_Widget_DropDownHint = 16974271; // 0x10301bf
-    field public static final int TextAppearance_DeviceDefault_Widget_DropDownItem = 16974272; // 0x10301c0
-    field public static final int TextAppearance_DeviceDefault_Widget_EditText = 16974274; // 0x10301c2
-    field public static final int TextAppearance_DeviceDefault_Widget_IconMenu_Item = 16974267; // 0x10301bb
-    field public static final int TextAppearance_DeviceDefault_Widget_PopupMenu = 16974275; // 0x10301c3
-    field public static final int TextAppearance_DeviceDefault_Widget_PopupMenu_Large = 16974276; // 0x10301c4
-    field public static final int TextAppearance_DeviceDefault_Widget_PopupMenu_Small = 16974277; // 0x10301c5
-    field public static final int TextAppearance_DeviceDefault_Widget_TabWidget = 16974268; // 0x10301bc
-    field public static final int TextAppearance_DeviceDefault_Widget_TextView = 16974269; // 0x10301bd
-    field public static final int TextAppearance_DeviceDefault_Widget_TextView_PopupMenu = 16974270; // 0x10301be
-    field public static final int TextAppearance_DeviceDefault_Widget_TextView_SpinnerItem = 16974273; // 0x10301c1
-    field public static final int TextAppearance_DeviceDefault_WindowTitle = 16974263; // 0x10301b7
-    field public static final int TextAppearance_DialogWindowTitle = 16973889; // 0x1030041
-    field public static final int TextAppearance_Holo = 16974075; // 0x10300fb
-    field public static final int TextAppearance_Holo_DialogWindowTitle = 16974103; // 0x1030117
-    field public static final int TextAppearance_Holo_Inverse = 16974076; // 0x10300fc
-    field public static final int TextAppearance_Holo_Large = 16974077; // 0x10300fd
-    field public static final int TextAppearance_Holo_Large_Inverse = 16974078; // 0x10300fe
-    field public static final int TextAppearance_Holo_Medium = 16974079; // 0x10300ff
-    field public static final int TextAppearance_Holo_Medium_Inverse = 16974080; // 0x1030100
-    field public static final int TextAppearance_Holo_SearchResult_Subtitle = 16974084; // 0x1030104
-    field public static final int TextAppearance_Holo_SearchResult_Title = 16974083; // 0x1030103
-    field public static final int TextAppearance_Holo_Small = 16974081; // 0x1030101
-    field public static final int TextAppearance_Holo_Small_Inverse = 16974082; // 0x1030102
-    field public static final int TextAppearance_Holo_Widget = 16974085; // 0x1030105
-    field public static final int TextAppearance_Holo_Widget_ActionBar_Menu = 16974112; // 0x1030120
-    field public static final int TextAppearance_Holo_Widget_ActionBar_Subtitle = 16974099; // 0x1030113
-    field public static final int TextAppearance_Holo_Widget_ActionBar_Subtitle_Inverse = 16974109; // 0x103011d
-    field public static final int TextAppearance_Holo_Widget_ActionBar_Title = 16974098; // 0x1030112
-    field public static final int TextAppearance_Holo_Widget_ActionBar_Title_Inverse = 16974108; // 0x103011c
-    field public static final int TextAppearance_Holo_Widget_ActionMode_Subtitle = 16974101; // 0x1030115
-    field public static final int TextAppearance_Holo_Widget_ActionMode_Subtitle_Inverse = 16974111; // 0x103011f
-    field public static final int TextAppearance_Holo_Widget_ActionMode_Title = 16974100; // 0x1030114
-    field public static final int TextAppearance_Holo_Widget_ActionMode_Title_Inverse = 16974110; // 0x103011e
-    field public static final int TextAppearance_Holo_Widget_Button = 16974086; // 0x1030106
-    field public static final int TextAppearance_Holo_Widget_DropDownHint = 16974091; // 0x103010b
-    field public static final int TextAppearance_Holo_Widget_DropDownItem = 16974092; // 0x103010c
-    field public static final int TextAppearance_Holo_Widget_EditText = 16974094; // 0x103010e
-    field public static final int TextAppearance_Holo_Widget_IconMenu_Item = 16974087; // 0x1030107
-    field public static final int TextAppearance_Holo_Widget_PopupMenu = 16974095; // 0x103010f
-    field public static final int TextAppearance_Holo_Widget_PopupMenu_Large = 16974096; // 0x1030110
-    field public static final int TextAppearance_Holo_Widget_PopupMenu_Small = 16974097; // 0x1030111
-    field public static final int TextAppearance_Holo_Widget_TabWidget = 16974088; // 0x1030108
-    field public static final int TextAppearance_Holo_Widget_TextView = 16974089; // 0x1030109
-    field public static final int TextAppearance_Holo_Widget_TextView_PopupMenu = 16974090; // 0x103010a
-    field public static final int TextAppearance_Holo_Widget_TextView_SpinnerItem = 16974093; // 0x103010d
-    field public static final int TextAppearance_Holo_WindowTitle = 16974102; // 0x1030116
-    field public static final int TextAppearance_Inverse = 16973887; // 0x103003f
-    field public static final int TextAppearance_Large = 16973890; // 0x1030042
-    field public static final int TextAppearance_Large_Inverse = 16973891; // 0x1030043
-    field public static final int TextAppearance_Material = 16974317; // 0x10301ed
-    field public static final int TextAppearance_Material_Body1 = 16974320; // 0x10301f0
-    field public static final int TextAppearance_Material_Body2 = 16974319; // 0x10301ef
-    field public static final int TextAppearance_Material_Button = 16974318; // 0x10301ee
-    field public static final int TextAppearance_Material_Caption = 16974321; // 0x10301f1
-    field public static final int TextAppearance_Material_DialogWindowTitle = 16974322; // 0x10301f2
-    field public static final int TextAppearance_Material_Display1 = 16974326; // 0x10301f6
-    field public static final int TextAppearance_Material_Display2 = 16974325; // 0x10301f5
-    field public static final int TextAppearance_Material_Display3 = 16974324; // 0x10301f4
-    field public static final int TextAppearance_Material_Display4 = 16974323; // 0x10301f3
-    field public static final int TextAppearance_Material_Headline = 16974327; // 0x10301f7
-    field public static final int TextAppearance_Material_Inverse = 16974328; // 0x10301f8
-    field public static final int TextAppearance_Material_Large = 16974329; // 0x10301f9
-    field public static final int TextAppearance_Material_Large_Inverse = 16974330; // 0x10301fa
-    field public static final int TextAppearance_Material_Medium = 16974331; // 0x10301fb
-    field public static final int TextAppearance_Material_Medium_Inverse = 16974332; // 0x10301fc
-    field public static final int TextAppearance_Material_Menu = 16974333; // 0x10301fd
-    field public static final int TextAppearance_Material_Notification = 16974334; // 0x10301fe
-    field public static final int TextAppearance_Material_Notification_Emphasis = 16974335; // 0x10301ff
-    field public static final int TextAppearance_Material_Notification_Info = 16974336; // 0x1030200
-    field public static final int TextAppearance_Material_Notification_Line2 = 16974337; // 0x1030201
-    field public static final int TextAppearance_Material_Notification_Time = 16974338; // 0x1030202
-    field public static final int TextAppearance_Material_Notification_Title = 16974339; // 0x1030203
-    field public static final int TextAppearance_Material_SearchResult_Subtitle = 16974340; // 0x1030204
-    field public static final int TextAppearance_Material_SearchResult_Title = 16974341; // 0x1030205
-    field public static final int TextAppearance_Material_Small = 16974342; // 0x1030206
-    field public static final int TextAppearance_Material_Small_Inverse = 16974343; // 0x1030207
-    field public static final int TextAppearance_Material_Subhead = 16974344; // 0x1030208
-    field public static final int TextAppearance_Material_Title = 16974345; // 0x1030209
-    field public static final int TextAppearance_Material_Widget = 16974347; // 0x103020b
-    field public static final int TextAppearance_Material_Widget_ActionBar_Menu = 16974348; // 0x103020c
-    field public static final int TextAppearance_Material_Widget_ActionBar_Subtitle = 16974349; // 0x103020d
-    field public static final int TextAppearance_Material_Widget_ActionBar_Subtitle_Inverse = 16974350; // 0x103020e
-    field public static final int TextAppearance_Material_Widget_ActionBar_Title = 16974351; // 0x103020f
-    field public static final int TextAppearance_Material_Widget_ActionBar_Title_Inverse = 16974352; // 0x1030210
-    field public static final int TextAppearance_Material_Widget_ActionMode_Subtitle = 16974353; // 0x1030211
-    field public static final int TextAppearance_Material_Widget_ActionMode_Subtitle_Inverse = 16974354; // 0x1030212
-    field public static final int TextAppearance_Material_Widget_ActionMode_Title = 16974355; // 0x1030213
-    field public static final int TextAppearance_Material_Widget_ActionMode_Title_Inverse = 16974356; // 0x1030214
-    field public static final int TextAppearance_Material_Widget_Button = 16974357; // 0x1030215
-    field public static final int TextAppearance_Material_Widget_Button_Borderless_Colored = 16974559; // 0x10302df
-    field public static final int TextAppearance_Material_Widget_Button_Colored = 16974558; // 0x10302de
-    field public static final int TextAppearance_Material_Widget_Button_Inverse = 16974548; // 0x10302d4
-    field public static final int TextAppearance_Material_Widget_DropDownHint = 16974358; // 0x1030216
-    field public static final int TextAppearance_Material_Widget_DropDownItem = 16974359; // 0x1030217
-    field public static final int TextAppearance_Material_Widget_EditText = 16974360; // 0x1030218
-    field public static final int TextAppearance_Material_Widget_IconMenu_Item = 16974361; // 0x1030219
-    field public static final int TextAppearance_Material_Widget_PopupMenu = 16974362; // 0x103021a
-    field public static final int TextAppearance_Material_Widget_PopupMenu_Large = 16974363; // 0x103021b
-    field public static final int TextAppearance_Material_Widget_PopupMenu_Small = 16974364; // 0x103021c
-    field public static final int TextAppearance_Material_Widget_TabWidget = 16974365; // 0x103021d
-    field public static final int TextAppearance_Material_Widget_TextView = 16974366; // 0x103021e
-    field public static final int TextAppearance_Material_Widget_TextView_PopupMenu = 16974367; // 0x103021f
-    field public static final int TextAppearance_Material_Widget_TextView_SpinnerItem = 16974368; // 0x1030220
-    field public static final int TextAppearance_Material_Widget_Toolbar_Subtitle = 16974369; // 0x1030221
-    field public static final int TextAppearance_Material_Widget_Toolbar_Title = 16974370; // 0x1030222
-    field public static final int TextAppearance_Material_WindowTitle = 16974346; // 0x103020a
-    field public static final int TextAppearance_Medium = 16973892; // 0x1030044
-    field public static final int TextAppearance_Medium_Inverse = 16973893; // 0x1030045
-    field public static final int TextAppearance_Small = 16973894; // 0x1030046
-    field public static final int TextAppearance_Small_Inverse = 16973895; // 0x1030047
-    field public static final int TextAppearance_StatusBar_EventContent = 16973927; // 0x1030067
-    field public static final int TextAppearance_StatusBar_EventContent_Title = 16973928; // 0x1030068
-    field public static final int TextAppearance_StatusBar_Icon = 16973926; // 0x1030066
-    field public static final int TextAppearance_StatusBar_Title = 16973925; // 0x1030065
-    field public static final int TextAppearance_SuggestionHighlight = 16974104; // 0x1030118
-    field public static final int TextAppearance_Theme = 16973888; // 0x1030040
-    field public static final int TextAppearance_Theme_Dialog = 16973896; // 0x1030048
-    field public static final int TextAppearance_Widget = 16973897; // 0x1030049
-    field public static final int TextAppearance_Widget_Button = 16973898; // 0x103004a
-    field public static final int TextAppearance_Widget_DropDownHint = 16973904; // 0x1030050
-    field public static final int TextAppearance_Widget_DropDownItem = 16973905; // 0x1030051
-    field public static final int TextAppearance_Widget_EditText = 16973900; // 0x103004c
-    field public static final int TextAppearance_Widget_IconMenu_Item = 16973899; // 0x103004b
-    field public static final int TextAppearance_Widget_PopupMenu_Large = 16973952; // 0x1030080
-    field public static final int TextAppearance_Widget_PopupMenu_Small = 16973953; // 0x1030081
-    field public static final int TextAppearance_Widget_TabWidget = 16973901; // 0x103004d
-    field public static final int TextAppearance_Widget_TextView = 16973902; // 0x103004e
-    field public static final int TextAppearance_Widget_TextView_PopupMenu = 16973903; // 0x103004f
-    field public static final int TextAppearance_Widget_TextView_SpinnerItem = 16973906; // 0x1030052
-    field public static final int TextAppearance_WindowTitle = 16973907; // 0x1030053
-    field public static final int Theme = 16973829; // 0x1030005
-    field public static final int ThemeOverlay = 16974407; // 0x1030247
-    field public static final int ThemeOverlay_DeviceDefault_Accent_DayNight = 16974564; // 0x10302e4
-    field public static final int ThemeOverlay_Material = 16974408; // 0x1030248
-    field public static final int ThemeOverlay_Material_ActionBar = 16974409; // 0x1030249
-    field public static final int ThemeOverlay_Material_Dark = 16974411; // 0x103024b
-    field public static final int ThemeOverlay_Material_Dark_ActionBar = 16974412; // 0x103024c
-    field public static final int ThemeOverlay_Material_Dialog = 16974550; // 0x10302d6
-    field public static final int ThemeOverlay_Material_Dialog_Alert = 16974551; // 0x10302d7
-    field public static final int ThemeOverlay_Material_Light = 16974410; // 0x103024a
-    field public static final int Theme_Black = 16973832; // 0x1030008
-    field public static final int Theme_Black_NoTitleBar = 16973833; // 0x1030009
-    field public static final int Theme_Black_NoTitleBar_Fullscreen = 16973834; // 0x103000a
-    field public static final int Theme_DeviceDefault = 16974120; // 0x1030128
-    field public static final int Theme_DeviceDefault_DayNight = 16974563; // 0x10302e3
-    field public static final int Theme_DeviceDefault_Dialog = 16974126; // 0x103012e
-    field public static final int Theme_DeviceDefault_DialogWhenLarge = 16974134; // 0x1030136
-    field public static final int Theme_DeviceDefault_DialogWhenLarge_NoActionBar = 16974135; // 0x1030137
-    field public static final int Theme_DeviceDefault_Dialog_Alert = 16974545; // 0x10302d1
-    field public static final int Theme_DeviceDefault_Dialog_MinWidth = 16974127; // 0x103012f
-    field public static final int Theme_DeviceDefault_Dialog_NoActionBar = 16974128; // 0x1030130
-    field public static final int Theme_DeviceDefault_Dialog_NoActionBar_MinWidth = 16974129; // 0x1030131
-    field public static final int Theme_DeviceDefault_InputMethod = 16974142; // 0x103013e
-    field public static final int Theme_DeviceDefault_Light = 16974123; // 0x103012b
-    field public static final int Theme_DeviceDefault_Light_DarkActionBar = 16974143; // 0x103013f
-    field public static final int Theme_DeviceDefault_Light_Dialog = 16974130; // 0x1030132
-    field public static final int Theme_DeviceDefault_Light_DialogWhenLarge = 16974136; // 0x1030138
-    field public static final int Theme_DeviceDefault_Light_DialogWhenLarge_NoActionBar = 16974137; // 0x1030139
-    field public static final int Theme_DeviceDefault_Light_Dialog_Alert = 16974546; // 0x10302d2
-    field public static final int Theme_DeviceDefault_Light_Dialog_MinWidth = 16974131; // 0x1030133
-    field public static final int Theme_DeviceDefault_Light_Dialog_NoActionBar = 16974132; // 0x1030134
-    field public static final int Theme_DeviceDefault_Light_Dialog_NoActionBar_MinWidth = 16974133; // 0x1030135
-    field public static final int Theme_DeviceDefault_Light_NoActionBar = 16974124; // 0x103012c
-    field public static final int Theme_DeviceDefault_Light_NoActionBar_Fullscreen = 16974125; // 0x103012d
-    field public static final int Theme_DeviceDefault_Light_NoActionBar_Overscan = 16974304; // 0x10301e0
-    field public static final int Theme_DeviceDefault_Light_NoActionBar_TranslucentDecor = 16974308; // 0x10301e4
-    field public static final int Theme_DeviceDefault_Light_Panel = 16974139; // 0x103013b
-    field public static final int Theme_DeviceDefault_NoActionBar = 16974121; // 0x1030129
-    field public static final int Theme_DeviceDefault_NoActionBar_Fullscreen = 16974122; // 0x103012a
-    field public static final int Theme_DeviceDefault_NoActionBar_Overscan = 16974303; // 0x10301df
-    field public static final int Theme_DeviceDefault_NoActionBar_TranslucentDecor = 16974307; // 0x10301e3
-    field public static final int Theme_DeviceDefault_Panel = 16974138; // 0x103013a
-    field public static final int Theme_DeviceDefault_Settings = 16974371; // 0x1030223
-    field public static final int Theme_DeviceDefault_Wallpaper = 16974140; // 0x103013c
-    field public static final int Theme_DeviceDefault_Wallpaper_NoTitleBar = 16974141; // 0x103013d
-    field public static final int Theme_Dialog = 16973835; // 0x103000b
-    field @Deprecated public static final int Theme_Holo = 16973931; // 0x103006b
-    field @Deprecated public static final int Theme_Holo_Dialog = 16973935; // 0x103006f
-    field @Deprecated public static final int Theme_Holo_DialogWhenLarge = 16973943; // 0x1030077
-    field @Deprecated public static final int Theme_Holo_DialogWhenLarge_NoActionBar = 16973944; // 0x1030078
-    field @Deprecated public static final int Theme_Holo_Dialog_MinWidth = 16973936; // 0x1030070
-    field @Deprecated public static final int Theme_Holo_Dialog_NoActionBar = 16973937; // 0x1030071
-    field @Deprecated public static final int Theme_Holo_Dialog_NoActionBar_MinWidth = 16973938; // 0x1030072
-    field @Deprecated public static final int Theme_Holo_InputMethod = 16973951; // 0x103007f
-    field @Deprecated public static final int Theme_Holo_Light = 16973934; // 0x103006e
-    field @Deprecated public static final int Theme_Holo_Light_DarkActionBar = 16974105; // 0x1030119
-    field @Deprecated public static final int Theme_Holo_Light_Dialog = 16973939; // 0x1030073
-    field @Deprecated public static final int Theme_Holo_Light_DialogWhenLarge = 16973945; // 0x1030079
-    field @Deprecated public static final int Theme_Holo_Light_DialogWhenLarge_NoActionBar = 16973946; // 0x103007a
-    field @Deprecated public static final int Theme_Holo_Light_Dialog_MinWidth = 16973940; // 0x1030074
-    field @Deprecated public static final int Theme_Holo_Light_Dialog_NoActionBar = 16973941; // 0x1030075
-    field @Deprecated public static final int Theme_Holo_Light_Dialog_NoActionBar_MinWidth = 16973942; // 0x1030076
-    field @Deprecated public static final int Theme_Holo_Light_NoActionBar = 16974064; // 0x10300f0
-    field @Deprecated public static final int Theme_Holo_Light_NoActionBar_Fullscreen = 16974065; // 0x10300f1
-    field @Deprecated public static final int Theme_Holo_Light_NoActionBar_Overscan = 16974302; // 0x10301de
-    field @Deprecated public static final int Theme_Holo_Light_NoActionBar_TranslucentDecor = 16974306; // 0x10301e2
-    field @Deprecated public static final int Theme_Holo_Light_Panel = 16973948; // 0x103007c
-    field @Deprecated public static final int Theme_Holo_NoActionBar = 16973932; // 0x103006c
-    field @Deprecated public static final int Theme_Holo_NoActionBar_Fullscreen = 16973933; // 0x103006d
-    field @Deprecated public static final int Theme_Holo_NoActionBar_Overscan = 16974301; // 0x10301dd
-    field @Deprecated public static final int Theme_Holo_NoActionBar_TranslucentDecor = 16974305; // 0x10301e1
-    field @Deprecated public static final int Theme_Holo_Panel = 16973947; // 0x103007b
-    field @Deprecated public static final int Theme_Holo_Wallpaper = 16973949; // 0x103007d
-    field @Deprecated public static final int Theme_Holo_Wallpaper_NoTitleBar = 16973950; // 0x103007e
-    field public static final int Theme_InputMethod = 16973908; // 0x1030054
-    field public static final int Theme_Light = 16973836; // 0x103000c
-    field public static final int Theme_Light_NoTitleBar = 16973837; // 0x103000d
-    field public static final int Theme_Light_NoTitleBar_Fullscreen = 16973838; // 0x103000e
-    field public static final int Theme_Light_Panel = 16973914; // 0x103005a
-    field public static final int Theme_Light_WallpaperSettings = 16973922; // 0x1030062
-    field public static final int Theme_Material = 16974372; // 0x1030224
-    field public static final int Theme_Material_Dialog = 16974373; // 0x1030225
-    field public static final int Theme_Material_DialogWhenLarge = 16974379; // 0x103022b
-    field public static final int Theme_Material_DialogWhenLarge_NoActionBar = 16974380; // 0x103022c
-    field public static final int Theme_Material_Dialog_Alert = 16974374; // 0x1030226
-    field public static final int Theme_Material_Dialog_MinWidth = 16974375; // 0x1030227
-    field public static final int Theme_Material_Dialog_NoActionBar = 16974376; // 0x1030228
-    field public static final int Theme_Material_Dialog_NoActionBar_MinWidth = 16974377; // 0x1030229
-    field public static final int Theme_Material_Dialog_Presentation = 16974378; // 0x103022a
-    field public static final int Theme_Material_InputMethod = 16974381; // 0x103022d
-    field public static final int Theme_Material_Light = 16974391; // 0x1030237
-    field public static final int Theme_Material_Light_DarkActionBar = 16974392; // 0x1030238
-    field public static final int Theme_Material_Light_Dialog = 16974393; // 0x1030239
-    field public static final int Theme_Material_Light_DialogWhenLarge = 16974399; // 0x103023f
-    field public static final int Theme_Material_Light_DialogWhenLarge_DarkActionBar = 16974552; // 0x10302d8
-    field public static final int Theme_Material_Light_DialogWhenLarge_NoActionBar = 16974400; // 0x1030240
-    field public static final int Theme_Material_Light_Dialog_Alert = 16974394; // 0x103023a
-    field public static final int Theme_Material_Light_Dialog_MinWidth = 16974395; // 0x103023b
-    field public static final int Theme_Material_Light_Dialog_NoActionBar = 16974396; // 0x103023c
-    field public static final int Theme_Material_Light_Dialog_NoActionBar_MinWidth = 16974397; // 0x103023d
-    field public static final int Theme_Material_Light_Dialog_Presentation = 16974398; // 0x103023e
-    field public static final int Theme_Material_Light_LightStatusBar = 16974549; // 0x10302d5
-    field public static final int Theme_Material_Light_NoActionBar = 16974401; // 0x1030241
-    field public static final int Theme_Material_Light_NoActionBar_Fullscreen = 16974402; // 0x1030242
-    field @Deprecated public static final int Theme_Material_Light_NoActionBar_Overscan = 16974403; // 0x1030243
-    field public static final int Theme_Material_Light_NoActionBar_TranslucentDecor = 16974404; // 0x1030244
-    field public static final int Theme_Material_Light_Panel = 16974405; // 0x1030245
-    field public static final int Theme_Material_Light_Voice = 16974406; // 0x1030246
-    field public static final int Theme_Material_NoActionBar = 16974382; // 0x103022e
-    field public static final int Theme_Material_NoActionBar_Fullscreen = 16974383; // 0x103022f
-    field @Deprecated public static final int Theme_Material_NoActionBar_Overscan = 16974384; // 0x1030230
-    field public static final int Theme_Material_NoActionBar_TranslucentDecor = 16974385; // 0x1030231
-    field public static final int Theme_Material_Panel = 16974386; // 0x1030232
-    field public static final int Theme_Material_Settings = 16974387; // 0x1030233
-    field public static final int Theme_Material_Voice = 16974388; // 0x1030234
-    field public static final int Theme_Material_Wallpaper = 16974389; // 0x1030235
-    field public static final int Theme_Material_Wallpaper_NoTitleBar = 16974390; // 0x1030236
-    field public static final int Theme_NoDisplay = 16973909; // 0x1030055
-    field public static final int Theme_NoTitleBar = 16973830; // 0x1030006
-    field public static final int Theme_NoTitleBar_Fullscreen = 16973831; // 0x1030007
-    field public static final int Theme_NoTitleBar_OverlayActionModes = 16973930; // 0x103006a
-    field public static final int Theme_Panel = 16973913; // 0x1030059
-    field public static final int Theme_Translucent = 16973839; // 0x103000f
-    field public static final int Theme_Translucent_NoTitleBar = 16973840; // 0x1030010
-    field public static final int Theme_Translucent_NoTitleBar_Fullscreen = 16973841; // 0x1030011
-    field public static final int Theme_Wallpaper = 16973918; // 0x103005e
-    field public static final int Theme_WallpaperSettings = 16973921; // 0x1030061
-    field public static final int Theme_Wallpaper_NoTitleBar = 16973919; // 0x103005f
-    field public static final int Theme_Wallpaper_NoTitleBar_Fullscreen = 16973920; // 0x1030060
-    field public static final int Theme_WithActionBar = 16973929; // 0x1030069
-    field public static final int Widget = 16973842; // 0x1030012
-    field public static final int Widget_AbsListView = 16973843; // 0x1030013
-    field public static final int Widget_ActionBar = 16973954; // 0x1030082
-    field public static final int Widget_ActionBar_TabBar = 16974068; // 0x10300f4
-    field public static final int Widget_ActionBar_TabText = 16974067; // 0x10300f3
-    field public static final int Widget_ActionBar_TabView = 16974066; // 0x10300f2
-    field public static final int Widget_ActionButton = 16973956; // 0x1030084
-    field public static final int Widget_ActionButton_CloseMode = 16973960; // 0x1030088
-    field public static final int Widget_ActionButton_Overflow = 16973959; // 0x1030087
-    field public static final int Widget_AutoCompleteTextView = 16973863; // 0x1030027
-    field public static final int Widget_Button = 16973844; // 0x1030014
-    field public static final int Widget_Button_Inset = 16973845; // 0x1030015
-    field public static final int Widget_Button_Small = 16973846; // 0x1030016
-    field public static final int Widget_Button_Toggle = 16973847; // 0x1030017
-    field public static final int Widget_CalendarView = 16974059; // 0x10300eb
-    field public static final int Widget_CompoundButton = 16973848; // 0x1030018
-    field public static final int Widget_CompoundButton_CheckBox = 16973849; // 0x1030019
-    field public static final int Widget_CompoundButton_RadioButton = 16973850; // 0x103001a
-    field public static final int Widget_CompoundButton_Star = 16973851; // 0x103001b
-    field public static final int Widget_DatePicker = 16974062; // 0x10300ee
-    field public static final int Widget_DeviceDefault = 16974144; // 0x1030140
-    field public static final int Widget_DeviceDefault_ActionBar = 16974187; // 0x103016b
-    field public static final int Widget_DeviceDefault_ActionBar_Solid = 16974195; // 0x1030173
-    field public static final int Widget_DeviceDefault_ActionBar_TabBar = 16974194; // 0x1030172
-    field public static final int Widget_DeviceDefault_ActionBar_TabText = 16974193; // 0x1030171
-    field public static final int Widget_DeviceDefault_ActionBar_TabView = 16974192; // 0x1030170
-    field public static final int Widget_DeviceDefault_ActionButton = 16974182; // 0x1030166
-    field public static final int Widget_DeviceDefault_ActionButton_CloseMode = 16974186; // 0x103016a
-    field public static final int Widget_DeviceDefault_ActionButton_Overflow = 16974183; // 0x1030167
-    field public static final int Widget_DeviceDefault_ActionButton_TextButton = 16974184; // 0x1030168
-    field public static final int Widget_DeviceDefault_ActionMode = 16974185; // 0x1030169
-    field public static final int Widget_DeviceDefault_AutoCompleteTextView = 16974151; // 0x1030147
-    field public static final int Widget_DeviceDefault_Button = 16974145; // 0x1030141
-    field public static final int Widget_DeviceDefault_Button_Borderless = 16974188; // 0x103016c
-    field public static final int Widget_DeviceDefault_Button_Borderless_Colored = 16974561; // 0x10302e1
-    field public static final int Widget_DeviceDefault_Button_Borderless_Small = 16974149; // 0x1030145
-    field public static final int Widget_DeviceDefault_Button_Colored = 16974560; // 0x10302e0
-    field public static final int Widget_DeviceDefault_Button_Inset = 16974147; // 0x1030143
-    field public static final int Widget_DeviceDefault_Button_Small = 16974146; // 0x1030142
-    field public static final int Widget_DeviceDefault_Button_Toggle = 16974148; // 0x1030144
-    field public static final int Widget_DeviceDefault_CalendarView = 16974190; // 0x103016e
-    field public static final int Widget_DeviceDefault_CheckedTextView = 16974299; // 0x10301db
-    field public static final int Widget_DeviceDefault_CompoundButton_CheckBox = 16974152; // 0x1030148
-    field public static final int Widget_DeviceDefault_CompoundButton_RadioButton = 16974169; // 0x1030159
-    field public static final int Widget_DeviceDefault_CompoundButton_Star = 16974173; // 0x103015d
-    field public static final int Widget_DeviceDefault_DatePicker = 16974191; // 0x103016f
-    field public static final int Widget_DeviceDefault_DropDownItem = 16974177; // 0x1030161
-    field public static final int Widget_DeviceDefault_DropDownItem_Spinner = 16974178; // 0x1030162
-    field public static final int Widget_DeviceDefault_EditText = 16974154; // 0x103014a
-    field public static final int Widget_DeviceDefault_ExpandableListView = 16974155; // 0x103014b
-    field public static final int Widget_DeviceDefault_FastScroll = 16974313; // 0x10301e9
-    field public static final int Widget_DeviceDefault_GridView = 16974156; // 0x103014c
-    field public static final int Widget_DeviceDefault_HorizontalScrollView = 16974171; // 0x103015b
-    field public static final int Widget_DeviceDefault_ImageButton = 16974157; // 0x103014d
-    field public static final int Widget_DeviceDefault_Light = 16974196; // 0x1030174
-    field public static final int Widget_DeviceDefault_Light_ActionBar = 16974243; // 0x10301a3
-    field public static final int Widget_DeviceDefault_Light_ActionBar_Solid = 16974247; // 0x10301a7
-    field @Deprecated public static final int Widget_DeviceDefault_Light_ActionBar_Solid_Inverse = 16974248; // 0x10301a8
-    field public static final int Widget_DeviceDefault_Light_ActionBar_TabBar = 16974246; // 0x10301a6
-    field @Deprecated public static final int Widget_DeviceDefault_Light_ActionBar_TabBar_Inverse = 16974249; // 0x10301a9
-    field public static final int Widget_DeviceDefault_Light_ActionBar_TabText = 16974245; // 0x10301a5
-    field @Deprecated public static final int Widget_DeviceDefault_Light_ActionBar_TabText_Inverse = 16974251; // 0x10301ab
-    field public static final int Widget_DeviceDefault_Light_ActionBar_TabView = 16974244; // 0x10301a4
-    field @Deprecated public static final int Widget_DeviceDefault_Light_ActionBar_TabView_Inverse = 16974250; // 0x10301aa
-    field public static final int Widget_DeviceDefault_Light_ActionButton = 16974239; // 0x103019f
-    field public static final int Widget_DeviceDefault_Light_ActionButton_CloseMode = 16974242; // 0x10301a2
-    field public static final int Widget_DeviceDefault_Light_ActionButton_Overflow = 16974240; // 0x10301a0
-    field public static final int Widget_DeviceDefault_Light_ActionMode = 16974241; // 0x10301a1
-    field @Deprecated public static final int Widget_DeviceDefault_Light_ActionMode_Inverse = 16974252; // 0x10301ac
-    field public static final int Widget_DeviceDefault_Light_AutoCompleteTextView = 16974203; // 0x103017b
-    field public static final int Widget_DeviceDefault_Light_Button = 16974197; // 0x1030175
-    field public static final int Widget_DeviceDefault_Light_Button_Borderless_Small = 16974201; // 0x1030179
-    field public static final int Widget_DeviceDefault_Light_Button_Inset = 16974199; // 0x1030177
-    field public static final int Widget_DeviceDefault_Light_Button_Small = 16974198; // 0x1030176
-    field public static final int Widget_DeviceDefault_Light_Button_Toggle = 16974200; // 0x1030178
-    field public static final int Widget_DeviceDefault_Light_CalendarView = 16974238; // 0x103019e
-    field public static final int Widget_DeviceDefault_Light_CheckedTextView = 16974300; // 0x10301dc
-    field public static final int Widget_DeviceDefault_Light_CompoundButton_CheckBox = 16974204; // 0x103017c
-    field public static final int Widget_DeviceDefault_Light_CompoundButton_RadioButton = 16974224; // 0x1030190
-    field public static final int Widget_DeviceDefault_Light_CompoundButton_Star = 16974228; // 0x1030194
-    field public static final int Widget_DeviceDefault_Light_DropDownItem = 16974232; // 0x1030198
-    field public static final int Widget_DeviceDefault_Light_DropDownItem_Spinner = 16974233; // 0x1030199
-    field public static final int Widget_DeviceDefault_Light_EditText = 16974206; // 0x103017e
-    field public static final int Widget_DeviceDefault_Light_ExpandableListView = 16974207; // 0x103017f
-    field public static final int Widget_DeviceDefault_Light_FastScroll = 16974315; // 0x10301eb
-    field public static final int Widget_DeviceDefault_Light_GridView = 16974208; // 0x1030180
-    field public static final int Widget_DeviceDefault_Light_HorizontalScrollView = 16974226; // 0x1030192
-    field public static final int Widget_DeviceDefault_Light_ImageButton = 16974209; // 0x1030181
-    field public static final int Widget_DeviceDefault_Light_ListPopupWindow = 16974235; // 0x103019b
-    field public static final int Widget_DeviceDefault_Light_ListView = 16974210; // 0x1030182
-    field public static final int Widget_DeviceDefault_Light_ListView_DropDown = 16974205; // 0x103017d
-    field public static final int Widget_DeviceDefault_Light_MediaRouteButton = 16974296; // 0x10301d8
-    field public static final int Widget_DeviceDefault_Light_PopupMenu = 16974236; // 0x103019c
-    field public static final int Widget_DeviceDefault_Light_PopupWindow = 16974211; // 0x1030183
-    field public static final int Widget_DeviceDefault_Light_ProgressBar = 16974212; // 0x1030184
-    field public static final int Widget_DeviceDefault_Light_ProgressBar_Horizontal = 16974213; // 0x1030185
-    field public static final int Widget_DeviceDefault_Light_ProgressBar_Inverse = 16974217; // 0x1030189
-    field public static final int Widget_DeviceDefault_Light_ProgressBar_Large = 16974216; // 0x1030188
-    field public static final int Widget_DeviceDefault_Light_ProgressBar_Large_Inverse = 16974219; // 0x103018b
-    field public static final int Widget_DeviceDefault_Light_ProgressBar_Small = 16974214; // 0x1030186
-    field public static final int Widget_DeviceDefault_Light_ProgressBar_Small_Inverse = 16974218; // 0x103018a
-    field public static final int Widget_DeviceDefault_Light_ProgressBar_Small_Title = 16974215; // 0x1030187
-    field public static final int Widget_DeviceDefault_Light_RatingBar = 16974221; // 0x103018d
-    field public static final int Widget_DeviceDefault_Light_RatingBar_Indicator = 16974222; // 0x103018e
-    field public static final int Widget_DeviceDefault_Light_RatingBar_Small = 16974223; // 0x103018f
-    field public static final int Widget_DeviceDefault_Light_ScrollView = 16974225; // 0x1030191
-    field public static final int Widget_DeviceDefault_Light_SeekBar = 16974220; // 0x103018c
-    field public static final int Widget_DeviceDefault_Light_Spinner = 16974227; // 0x1030193
-    field public static final int Widget_DeviceDefault_Light_StackView = 16974316; // 0x10301ec
-    field public static final int Widget_DeviceDefault_Light_Tab = 16974237; // 0x103019d
-    field public static final int Widget_DeviceDefault_Light_TabWidget = 16974229; // 0x1030195
-    field public static final int Widget_DeviceDefault_Light_TextView = 16974202; // 0x103017a
-    field public static final int Widget_DeviceDefault_Light_TextView_SpinnerItem = 16974234; // 0x103019a
-    field public static final int Widget_DeviceDefault_Light_WebTextView = 16974230; // 0x1030196
-    field public static final int Widget_DeviceDefault_Light_WebView = 16974231; // 0x1030197
-    field public static final int Widget_DeviceDefault_ListPopupWindow = 16974180; // 0x1030164
-    field public static final int Widget_DeviceDefault_ListView = 16974158; // 0x103014e
-    field public static final int Widget_DeviceDefault_ListView_DropDown = 16974153; // 0x1030149
-    field public static final int Widget_DeviceDefault_MediaRouteButton = 16974295; // 0x10301d7
-    field public static final int Widget_DeviceDefault_PopupMenu = 16974181; // 0x1030165
-    field public static final int Widget_DeviceDefault_PopupWindow = 16974159; // 0x103014f
-    field public static final int Widget_DeviceDefault_ProgressBar = 16974160; // 0x1030150
-    field public static final int Widget_DeviceDefault_ProgressBar_Horizontal = 16974161; // 0x1030151
-    field public static final int Widget_DeviceDefault_ProgressBar_Large = 16974164; // 0x1030154
-    field public static final int Widget_DeviceDefault_ProgressBar_Small = 16974162; // 0x1030152
-    field public static final int Widget_DeviceDefault_ProgressBar_Small_Title = 16974163; // 0x1030153
-    field public static final int Widget_DeviceDefault_RatingBar = 16974166; // 0x1030156
-    field public static final int Widget_DeviceDefault_RatingBar_Indicator = 16974167; // 0x1030157
-    field public static final int Widget_DeviceDefault_RatingBar_Small = 16974168; // 0x1030158
-    field public static final int Widget_DeviceDefault_ScrollView = 16974170; // 0x103015a
-    field public static final int Widget_DeviceDefault_SeekBar = 16974165; // 0x1030155
-    field public static final int Widget_DeviceDefault_Spinner = 16974172; // 0x103015c
-    field public static final int Widget_DeviceDefault_StackView = 16974314; // 0x10301ea
-    field public static final int Widget_DeviceDefault_Tab = 16974189; // 0x103016d
-    field public static final int Widget_DeviceDefault_TabWidget = 16974174; // 0x103015e
-    field public static final int Widget_DeviceDefault_TextView = 16974150; // 0x1030146
-    field public static final int Widget_DeviceDefault_TextView_SpinnerItem = 16974179; // 0x1030163
-    field public static final int Widget_DeviceDefault_WebTextView = 16974175; // 0x103015f
-    field public static final int Widget_DeviceDefault_WebView = 16974176; // 0x1030160
-    field public static final int Widget_DropDownItem = 16973867; // 0x103002b
-    field public static final int Widget_DropDownItem_Spinner = 16973868; // 0x103002c
-    field public static final int Widget_EditText = 16973859; // 0x1030023
-    field public static final int Widget_ExpandableListView = 16973860; // 0x1030024
-    field public static final int Widget_FastScroll = 16974309; // 0x10301e5
-    field public static final int Widget_FragmentBreadCrumbs = 16973961; // 0x1030089
-    field public static final int Widget_Gallery = 16973877; // 0x1030035
-    field public static final int Widget_GridView = 16973874; // 0x1030032
-    field public static final int Widget_Holo = 16973962; // 0x103008a
-    field public static final int Widget_Holo_ActionBar = 16974004; // 0x10300b4
-    field public static final int Widget_Holo_ActionBar_Solid = 16974113; // 0x1030121
-    field public static final int Widget_Holo_ActionBar_TabBar = 16974071; // 0x10300f7
-    field public static final int Widget_Holo_ActionBar_TabText = 16974070; // 0x10300f6
-    field public static final int Widget_Holo_ActionBar_TabView = 16974069; // 0x10300f5
-    field public static final int Widget_Holo_ActionButton = 16973999; // 0x10300af
-    field public static final int Widget_Holo_ActionButton_CloseMode = 16974003; // 0x10300b3
-    field public static final int Widget_Holo_ActionButton_Overflow = 16974000; // 0x10300b0
-    field public static final int Widget_Holo_ActionButton_TextButton = 16974001; // 0x10300b1
-    field public static final int Widget_Holo_ActionMode = 16974002; // 0x10300b2
-    field public static final int Widget_Holo_AutoCompleteTextView = 16973968; // 0x1030090
-    field public static final int Widget_Holo_Button = 16973963; // 0x103008b
-    field public static final int Widget_Holo_Button_Borderless = 16974050; // 0x10300e2
-    field public static final int Widget_Holo_Button_Borderless_Small = 16974106; // 0x103011a
-    field public static final int Widget_Holo_Button_Inset = 16973965; // 0x103008d
-    field public static final int Widget_Holo_Button_Small = 16973964; // 0x103008c
-    field public static final int Widget_Holo_Button_Toggle = 16973966; // 0x103008e
-    field public static final int Widget_Holo_CalendarView = 16974060; // 0x10300ec
-    field public static final int Widget_Holo_CheckedTextView = 16974297; // 0x10301d9
-    field public static final int Widget_Holo_CompoundButton_CheckBox = 16973969; // 0x1030091
-    field public static final int Widget_Holo_CompoundButton_RadioButton = 16973986; // 0x10300a2
-    field public static final int Widget_Holo_CompoundButton_Star = 16973990; // 0x10300a6
-    field public static final int Widget_Holo_DatePicker = 16974063; // 0x10300ef
-    field public static final int Widget_Holo_DropDownItem = 16973994; // 0x10300aa
-    field public static final int Widget_Holo_DropDownItem_Spinner = 16973995; // 0x10300ab
-    field public static final int Widget_Holo_EditText = 16973971; // 0x1030093
-    field public static final int Widget_Holo_ExpandableListView = 16973972; // 0x1030094
-    field public static final int Widget_Holo_GridView = 16973973; // 0x1030095
-    field public static final int Widget_Holo_HorizontalScrollView = 16973988; // 0x10300a4
-    field public static final int Widget_Holo_ImageButton = 16973974; // 0x1030096
-    field public static final int Widget_Holo_Light = 16974005; // 0x10300b5
-    field public static final int Widget_Holo_Light_ActionBar = 16974049; // 0x10300e1
-    field public static final int Widget_Holo_Light_ActionBar_Solid = 16974114; // 0x1030122
-    field public static final int Widget_Holo_Light_ActionBar_Solid_Inverse = 16974115; // 0x1030123
-    field public static final int Widget_Holo_Light_ActionBar_TabBar = 16974074; // 0x10300fa
-    field public static final int Widget_Holo_Light_ActionBar_TabBar_Inverse = 16974116; // 0x1030124
-    field public static final int Widget_Holo_Light_ActionBar_TabText = 16974073; // 0x10300f9
-    field public static final int Widget_Holo_Light_ActionBar_TabText_Inverse = 16974118; // 0x1030126
-    field public static final int Widget_Holo_Light_ActionBar_TabView = 16974072; // 0x10300f8
-    field public static final int Widget_Holo_Light_ActionBar_TabView_Inverse = 16974117; // 0x1030125
-    field public static final int Widget_Holo_Light_ActionButton = 16974045; // 0x10300dd
-    field public static final int Widget_Holo_Light_ActionButton_CloseMode = 16974048; // 0x10300e0
-    field public static final int Widget_Holo_Light_ActionButton_Overflow = 16974046; // 0x10300de
-    field public static final int Widget_Holo_Light_ActionMode = 16974047; // 0x10300df
-    field public static final int Widget_Holo_Light_ActionMode_Inverse = 16974119; // 0x1030127
-    field public static final int Widget_Holo_Light_AutoCompleteTextView = 16974011; // 0x10300bb
-    field public static final int Widget_Holo_Light_Button = 16974006; // 0x10300b6
-    field public static final int Widget_Holo_Light_Button_Borderless_Small = 16974107; // 0x103011b
-    field public static final int Widget_Holo_Light_Button_Inset = 16974008; // 0x10300b8
-    field public static final int Widget_Holo_Light_Button_Small = 16974007; // 0x10300b7
-    field public static final int Widget_Holo_Light_Button_Toggle = 16974009; // 0x10300b9
-    field public static final int Widget_Holo_Light_CalendarView = 16974061; // 0x10300ed
-    field public static final int Widget_Holo_Light_CheckedTextView = 16974298; // 0x10301da
-    field public static final int Widget_Holo_Light_CompoundButton_CheckBox = 16974012; // 0x10300bc
-    field public static final int Widget_Holo_Light_CompoundButton_RadioButton = 16974032; // 0x10300d0
-    field public static final int Widget_Holo_Light_CompoundButton_Star = 16974036; // 0x10300d4
-    field public static final int Widget_Holo_Light_DropDownItem = 16974040; // 0x10300d8
-    field public static final int Widget_Holo_Light_DropDownItem_Spinner = 16974041; // 0x10300d9
-    field public static final int Widget_Holo_Light_EditText = 16974014; // 0x10300be
-    field public static final int Widget_Holo_Light_ExpandableListView = 16974015; // 0x10300bf
-    field public static final int Widget_Holo_Light_GridView = 16974016; // 0x10300c0
-    field public static final int Widget_Holo_Light_HorizontalScrollView = 16974034; // 0x10300d2
-    field public static final int Widget_Holo_Light_ImageButton = 16974017; // 0x10300c1
-    field public static final int Widget_Holo_Light_ListPopupWindow = 16974043; // 0x10300db
-    field public static final int Widget_Holo_Light_ListView = 16974018; // 0x10300c2
-    field public static final int Widget_Holo_Light_ListView_DropDown = 16974013; // 0x10300bd
-    field public static final int Widget_Holo_Light_MediaRouteButton = 16974294; // 0x10301d6
-    field public static final int Widget_Holo_Light_PopupMenu = 16974044; // 0x10300dc
-    field public static final int Widget_Holo_Light_PopupWindow = 16974019; // 0x10300c3
-    field public static final int Widget_Holo_Light_ProgressBar = 16974020; // 0x10300c4
-    field public static final int Widget_Holo_Light_ProgressBar_Horizontal = 16974021; // 0x10300c5
-    field public static final int Widget_Holo_Light_ProgressBar_Inverse = 16974025; // 0x10300c9
-    field public static final int Widget_Holo_Light_ProgressBar_Large = 16974024; // 0x10300c8
-    field public static final int Widget_Holo_Light_ProgressBar_Large_Inverse = 16974027; // 0x10300cb
-    field public static final int Widget_Holo_Light_ProgressBar_Small = 16974022; // 0x10300c6
-    field public static final int Widget_Holo_Light_ProgressBar_Small_Inverse = 16974026; // 0x10300ca
-    field public static final int Widget_Holo_Light_ProgressBar_Small_Title = 16974023; // 0x10300c7
-    field public static final int Widget_Holo_Light_RatingBar = 16974029; // 0x10300cd
-    field public static final int Widget_Holo_Light_RatingBar_Indicator = 16974030; // 0x10300ce
-    field public static final int Widget_Holo_Light_RatingBar_Small = 16974031; // 0x10300cf
-    field public static final int Widget_Holo_Light_ScrollView = 16974033; // 0x10300d1
-    field public static final int Widget_Holo_Light_SeekBar = 16974028; // 0x10300cc
-    field public static final int Widget_Holo_Light_Spinner = 16974035; // 0x10300d3
-    field public static final int Widget_Holo_Light_Tab = 16974052; // 0x10300e4
-    field public static final int Widget_Holo_Light_TabWidget = 16974037; // 0x10300d5
-    field public static final int Widget_Holo_Light_TextView = 16974010; // 0x10300ba
-    field public static final int Widget_Holo_Light_TextView_SpinnerItem = 16974042; // 0x10300da
-    field public static final int Widget_Holo_Light_WebTextView = 16974038; // 0x10300d6
-    field public static final int Widget_Holo_Light_WebView = 16974039; // 0x10300d7
-    field public static final int Widget_Holo_ListPopupWindow = 16973997; // 0x10300ad
-    field public static final int Widget_Holo_ListView = 16973975; // 0x1030097
-    field public static final int Widget_Holo_ListView_DropDown = 16973970; // 0x1030092
-    field public static final int Widget_Holo_MediaRouteButton = 16974293; // 0x10301d5
-    field public static final int Widget_Holo_PopupMenu = 16973998; // 0x10300ae
-    field public static final int Widget_Holo_PopupWindow = 16973976; // 0x1030098
-    field public static final int Widget_Holo_ProgressBar = 16973977; // 0x1030099
-    field public static final int Widget_Holo_ProgressBar_Horizontal = 16973978; // 0x103009a
-    field public static final int Widget_Holo_ProgressBar_Large = 16973981; // 0x103009d
-    field public static final int Widget_Holo_ProgressBar_Small = 16973979; // 0x103009b
-    field public static final int Widget_Holo_ProgressBar_Small_Title = 16973980; // 0x103009c
-    field public static final int Widget_Holo_RatingBar = 16973983; // 0x103009f
-    field public static final int Widget_Holo_RatingBar_Indicator = 16973984; // 0x10300a0
-    field public static final int Widget_Holo_RatingBar_Small = 16973985; // 0x10300a1
-    field public static final int Widget_Holo_ScrollView = 16973987; // 0x10300a3
-    field public static final int Widget_Holo_SeekBar = 16973982; // 0x103009e
-    field public static final int Widget_Holo_Spinner = 16973989; // 0x10300a5
-    field public static final int Widget_Holo_Tab = 16974051; // 0x10300e3
-    field public static final int Widget_Holo_TabWidget = 16973991; // 0x10300a7
-    field public static final int Widget_Holo_TextView = 16973967; // 0x103008f
-    field public static final int Widget_Holo_TextView_SpinnerItem = 16973996; // 0x10300ac
-    field public static final int Widget_Holo_WebTextView = 16973992; // 0x10300a8
-    field public static final int Widget_Holo_WebView = 16973993; // 0x10300a9
-    field public static final int Widget_ImageButton = 16973862; // 0x1030026
-    field public static final int Widget_ImageWell = 16973861; // 0x1030025
-    field @Deprecated public static final int Widget_KeyboardView = 16973911; // 0x1030057
-    field public static final int Widget_ListPopupWindow = 16973957; // 0x1030085
-    field public static final int Widget_ListView = 16973870; // 0x103002e
-    field public static final int Widget_ListView_DropDown = 16973872; // 0x1030030
-    field public static final int Widget_ListView_Menu = 16973873; // 0x1030031
-    field public static final int Widget_ListView_White = 16973871; // 0x103002f
-    field public static final int Widget_Material = 16974413; // 0x103024d
-    field public static final int Widget_Material_ActionBar = 16974414; // 0x103024e
-    field public static final int Widget_Material_ActionBar_Solid = 16974415; // 0x103024f
-    field public static final int Widget_Material_ActionBar_TabBar = 16974416; // 0x1030250
-    field public static final int Widget_Material_ActionBar_TabText = 16974417; // 0x1030251
-    field public static final int Widget_Material_ActionBar_TabView = 16974418; // 0x1030252
-    field public static final int Widget_Material_ActionButton = 16974419; // 0x1030253
-    field public static final int Widget_Material_ActionButton_CloseMode = 16974420; // 0x1030254
-    field public static final int Widget_Material_ActionButton_Overflow = 16974421; // 0x1030255
-    field public static final int Widget_Material_ActionMode = 16974422; // 0x1030256
-    field public static final int Widget_Material_AutoCompleteTextView = 16974423; // 0x1030257
-    field public static final int Widget_Material_Button = 16974424; // 0x1030258
-    field public static final int Widget_Material_ButtonBar = 16974431; // 0x103025f
-    field public static final int Widget_Material_ButtonBar_AlertDialog = 16974432; // 0x1030260
-    field public static final int Widget_Material_Button_Borderless = 16974425; // 0x1030259
-    field public static final int Widget_Material_Button_Borderless_Colored = 16974426; // 0x103025a
-    field public static final int Widget_Material_Button_Borderless_Small = 16974427; // 0x103025b
-    field public static final int Widget_Material_Button_Colored = 16974547; // 0x10302d3
-    field public static final int Widget_Material_Button_Inset = 16974428; // 0x103025c
-    field public static final int Widget_Material_Button_Small = 16974429; // 0x103025d
-    field public static final int Widget_Material_Button_Toggle = 16974430; // 0x103025e
-    field public static final int Widget_Material_CalendarView = 16974433; // 0x1030261
-    field public static final int Widget_Material_CheckedTextView = 16974434; // 0x1030262
-    field public static final int Widget_Material_CompoundButton_CheckBox = 16974435; // 0x1030263
-    field public static final int Widget_Material_CompoundButton_RadioButton = 16974436; // 0x1030264
-    field public static final int Widget_Material_CompoundButton_Star = 16974437; // 0x1030265
-    field public static final int Widget_Material_CompoundButton_Switch = 16974554; // 0x10302da
-    field public static final int Widget_Material_DatePicker = 16974438; // 0x1030266
-    field public static final int Widget_Material_DropDownItem = 16974439; // 0x1030267
-    field public static final int Widget_Material_DropDownItem_Spinner = 16974440; // 0x1030268
-    field public static final int Widget_Material_EditText = 16974441; // 0x1030269
-    field public static final int Widget_Material_ExpandableListView = 16974442; // 0x103026a
-    field public static final int Widget_Material_FastScroll = 16974443; // 0x103026b
-    field public static final int Widget_Material_GridView = 16974444; // 0x103026c
-    field public static final int Widget_Material_HorizontalScrollView = 16974445; // 0x103026d
-    field public static final int Widget_Material_ImageButton = 16974446; // 0x103026e
-    field public static final int Widget_Material_Light = 16974478; // 0x103028e
-    field public static final int Widget_Material_Light_ActionBar = 16974479; // 0x103028f
-    field public static final int Widget_Material_Light_ActionBar_Solid = 16974480; // 0x1030290
-    field public static final int Widget_Material_Light_ActionBar_TabBar = 16974481; // 0x1030291
-    field public static final int Widget_Material_Light_ActionBar_TabText = 16974482; // 0x1030292
-    field public static final int Widget_Material_Light_ActionBar_TabView = 16974483; // 0x1030293
-    field public static final int Widget_Material_Light_ActionButton = 16974484; // 0x1030294
-    field public static final int Widget_Material_Light_ActionButton_CloseMode = 16974485; // 0x1030295
-    field public static final int Widget_Material_Light_ActionButton_Overflow = 16974486; // 0x1030296
-    field public static final int Widget_Material_Light_ActionMode = 16974487; // 0x1030297
-    field public static final int Widget_Material_Light_AutoCompleteTextView = 16974488; // 0x1030298
-    field public static final int Widget_Material_Light_Button = 16974489; // 0x1030299
-    field public static final int Widget_Material_Light_ButtonBar = 16974496; // 0x10302a0
-    field public static final int Widget_Material_Light_ButtonBar_AlertDialog = 16974497; // 0x10302a1
-    field public static final int Widget_Material_Light_Button_Borderless = 16974490; // 0x103029a
-    field public static final int Widget_Material_Light_Button_Borderless_Colored = 16974491; // 0x103029b
-    field public static final int Widget_Material_Light_Button_Borderless_Small = 16974492; // 0x103029c
-    field public static final int Widget_Material_Light_Button_Inset = 16974493; // 0x103029d
-    field public static final int Widget_Material_Light_Button_Small = 16974494; // 0x103029e
-    field public static final int Widget_Material_Light_Button_Toggle = 16974495; // 0x103029f
-    field public static final int Widget_Material_Light_CalendarView = 16974498; // 0x10302a2
-    field public static final int Widget_Material_Light_CheckedTextView = 16974499; // 0x10302a3
-    field public static final int Widget_Material_Light_CompoundButton_CheckBox = 16974500; // 0x10302a4
-    field public static final int Widget_Material_Light_CompoundButton_RadioButton = 16974501; // 0x10302a5
-    field public static final int Widget_Material_Light_CompoundButton_Star = 16974502; // 0x10302a6
-    field public static final int Widget_Material_Light_CompoundButton_Switch = 16974555; // 0x10302db
-    field public static final int Widget_Material_Light_DatePicker = 16974503; // 0x10302a7
-    field public static final int Widget_Material_Light_DropDownItem = 16974504; // 0x10302a8
-    field public static final int Widget_Material_Light_DropDownItem_Spinner = 16974505; // 0x10302a9
-    field public static final int Widget_Material_Light_EditText = 16974506; // 0x10302aa
-    field public static final int Widget_Material_Light_ExpandableListView = 16974507; // 0x10302ab
-    field public static final int Widget_Material_Light_FastScroll = 16974508; // 0x10302ac
-    field public static final int Widget_Material_Light_GridView = 16974509; // 0x10302ad
-    field public static final int Widget_Material_Light_HorizontalScrollView = 16974510; // 0x10302ae
-    field public static final int Widget_Material_Light_ImageButton = 16974511; // 0x10302af
-    field public static final int Widget_Material_Light_ListPopupWindow = 16974512; // 0x10302b0
-    field public static final int Widget_Material_Light_ListView = 16974513; // 0x10302b1
-    field public static final int Widget_Material_Light_ListView_DropDown = 16974514; // 0x10302b2
-    field public static final int Widget_Material_Light_MediaRouteButton = 16974515; // 0x10302b3
-    field public static final int Widget_Material_Light_NumberPicker = 16974557; // 0x10302dd
-    field public static final int Widget_Material_Light_PopupMenu = 16974516; // 0x10302b4
-    field public static final int Widget_Material_Light_PopupMenu_Overflow = 16974517; // 0x10302b5
-    field public static final int Widget_Material_Light_PopupWindow = 16974518; // 0x10302b6
-    field public static final int Widget_Material_Light_ProgressBar = 16974519; // 0x10302b7
-    field public static final int Widget_Material_Light_ProgressBar_Horizontal = 16974520; // 0x10302b8
-    field public static final int Widget_Material_Light_ProgressBar_Inverse = 16974521; // 0x10302b9
-    field public static final int Widget_Material_Light_ProgressBar_Large = 16974522; // 0x10302ba
-    field public static final int Widget_Material_Light_ProgressBar_Large_Inverse = 16974523; // 0x10302bb
-    field public static final int Widget_Material_Light_ProgressBar_Small = 16974524; // 0x10302bc
-    field public static final int Widget_Material_Light_ProgressBar_Small_Inverse = 16974525; // 0x10302bd
-    field public static final int Widget_Material_Light_ProgressBar_Small_Title = 16974526; // 0x10302be
-    field public static final int Widget_Material_Light_RatingBar = 16974527; // 0x10302bf
-    field public static final int Widget_Material_Light_RatingBar_Indicator = 16974528; // 0x10302c0
-    field public static final int Widget_Material_Light_RatingBar_Small = 16974529; // 0x10302c1
-    field public static final int Widget_Material_Light_ScrollView = 16974530; // 0x10302c2
-    field public static final int Widget_Material_Light_SearchView = 16974531; // 0x10302c3
-    field public static final int Widget_Material_Light_SeekBar = 16974532; // 0x10302c4
-    field public static final int Widget_Material_Light_SegmentedButton = 16974533; // 0x10302c5
-    field public static final int Widget_Material_Light_Spinner = 16974535; // 0x10302c7
-    field public static final int Widget_Material_Light_Spinner_Underlined = 16974536; // 0x10302c8
-    field public static final int Widget_Material_Light_StackView = 16974534; // 0x10302c6
-    field public static final int Widget_Material_Light_Tab = 16974537; // 0x10302c9
-    field public static final int Widget_Material_Light_TabWidget = 16974538; // 0x10302ca
-    field public static final int Widget_Material_Light_TextView = 16974539; // 0x10302cb
-    field public static final int Widget_Material_Light_TextView_SpinnerItem = 16974540; // 0x10302cc
-    field public static final int Widget_Material_Light_TimePicker = 16974541; // 0x10302cd
-    field public static final int Widget_Material_Light_WebTextView = 16974542; // 0x10302ce
-    field public static final int Widget_Material_Light_WebView = 16974543; // 0x10302cf
-    field public static final int Widget_Material_ListPopupWindow = 16974447; // 0x103026f
-    field public static final int Widget_Material_ListView = 16974448; // 0x1030270
-    field public static final int Widget_Material_ListView_DropDown = 16974449; // 0x1030271
-    field public static final int Widget_Material_MediaRouteButton = 16974450; // 0x1030272
-    field public static final int Widget_Material_NumberPicker = 16974556; // 0x10302dc
-    field public static final int Widget_Material_PopupMenu = 16974451; // 0x1030273
-    field public static final int Widget_Material_PopupMenu_Overflow = 16974452; // 0x1030274
-    field public static final int Widget_Material_PopupWindow = 16974453; // 0x1030275
-    field public static final int Widget_Material_ProgressBar = 16974454; // 0x1030276
-    field public static final int Widget_Material_ProgressBar_Horizontal = 16974455; // 0x1030277
-    field public static final int Widget_Material_ProgressBar_Large = 16974456; // 0x1030278
-    field public static final int Widget_Material_ProgressBar_Small = 16974457; // 0x1030279
-    field public static final int Widget_Material_ProgressBar_Small_Title = 16974458; // 0x103027a
-    field public static final int Widget_Material_RatingBar = 16974459; // 0x103027b
-    field public static final int Widget_Material_RatingBar_Indicator = 16974460; // 0x103027c
-    field public static final int Widget_Material_RatingBar_Small = 16974461; // 0x103027d
-    field public static final int Widget_Material_ScrollView = 16974462; // 0x103027e
-    field public static final int Widget_Material_SearchView = 16974463; // 0x103027f
-    field public static final int Widget_Material_SeekBar = 16974464; // 0x1030280
-    field public static final int Widget_Material_SeekBar_Discrete = 16974553; // 0x10302d9
-    field public static final int Widget_Material_SegmentedButton = 16974465; // 0x1030281
-    field public static final int Widget_Material_Spinner = 16974467; // 0x1030283
-    field public static final int Widget_Material_Spinner_Underlined = 16974468; // 0x1030284
-    field public static final int Widget_Material_StackView = 16974466; // 0x1030282
-    field public static final int Widget_Material_Tab = 16974469; // 0x1030285
-    field public static final int Widget_Material_TabWidget = 16974470; // 0x1030286
-    field public static final int Widget_Material_TextView = 16974471; // 0x1030287
-    field public static final int Widget_Material_TextView_SpinnerItem = 16974472; // 0x1030288
-    field public static final int Widget_Material_TimePicker = 16974473; // 0x1030289
-    field public static final int Widget_Material_Toolbar = 16974474; // 0x103028a
-    field public static final int Widget_Material_Toolbar_Button_Navigation = 16974475; // 0x103028b
-    field public static final int Widget_Material_WebTextView = 16974476; // 0x103028c
-    field public static final int Widget_Material_WebView = 16974477; // 0x103028d
-    field public static final int Widget_PopupMenu = 16973958; // 0x1030086
-    field public static final int Widget_PopupWindow = 16973878; // 0x1030036
-    field public static final int Widget_ProgressBar = 16973852; // 0x103001c
-    field public static final int Widget_ProgressBar_Horizontal = 16973855; // 0x103001f
-    field public static final int Widget_ProgressBar_Inverse = 16973915; // 0x103005b
-    field public static final int Widget_ProgressBar_Large = 16973853; // 0x103001d
-    field public static final int Widget_ProgressBar_Large_Inverse = 16973916; // 0x103005c
-    field public static final int Widget_ProgressBar_Small = 16973854; // 0x103001e
-    field public static final int Widget_ProgressBar_Small_Inverse = 16973917; // 0x103005d
-    field public static final int Widget_RatingBar = 16973857; // 0x1030021
-    field public static final int Widget_ScrollView = 16973869; // 0x103002d
-    field public static final int Widget_SeekBar = 16973856; // 0x1030020
-    field public static final int Widget_Spinner = 16973864; // 0x1030028
-    field public static final int Widget_Spinner_DropDown = 16973955; // 0x1030083
-    field public static final int Widget_StackView = 16974310; // 0x10301e6
-    field public static final int Widget_TabWidget = 16973876; // 0x1030034
-    field public static final int Widget_TextView = 16973858; // 0x1030022
-    field public static final int Widget_TextView_PopupMenu = 16973865; // 0x1030029
-    field public static final int Widget_TextView_SpinnerItem = 16973866; // 0x103002a
-    field public static final int Widget_Toolbar = 16974311; // 0x10301e7
-    field public static final int Widget_Toolbar_Button_Navigation = 16974312; // 0x10301e8
-    field public static final int Widget_WebView = 16973875; // 0x1030033
-  }
-
-  public static final class R.transition {
-    ctor public R.transition();
-    field public static final int explode = 17760259; // 0x10f0003
-    field public static final int fade = 17760258; // 0x10f0002
-    field public static final int move = 17760257; // 0x10f0001
-    field public static final int no_transition = 17760256; // 0x10f0000
-    field public static final int slide_bottom = 17760260; // 0x10f0004
-    field public static final int slide_left = 17760263; // 0x10f0007
-    field public static final int slide_right = 17760262; // 0x10f0006
-    field public static final int slide_top = 17760261; // 0x10f0005
-  }
-
-  public static final class R.xml {
-    ctor public R.xml();
-  }
-
-}
-
-package android.accessibilityservice {
-
-  public final class AccessibilityButtonController {
-    method public boolean isAccessibilityButtonAvailable();
-    method public void registerAccessibilityButtonCallback(@NonNull android.accessibilityservice.AccessibilityButtonController.AccessibilityButtonCallback);
-    method public void registerAccessibilityButtonCallback(@NonNull android.accessibilityservice.AccessibilityButtonController.AccessibilityButtonCallback, @NonNull android.os.Handler);
-    method public void unregisterAccessibilityButtonCallback(@NonNull android.accessibilityservice.AccessibilityButtonController.AccessibilityButtonCallback);
-  }
-
-  public abstract static class AccessibilityButtonController.AccessibilityButtonCallback {
-    ctor public AccessibilityButtonController.AccessibilityButtonCallback();
-    method public void onAvailabilityChanged(android.accessibilityservice.AccessibilityButtonController, boolean);
-    method public void onClicked(android.accessibilityservice.AccessibilityButtonController);
-  }
-
-  public final class AccessibilityGestureEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getDisplayId();
-    method public int getGestureId();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.accessibilityservice.AccessibilityGestureEvent> CREATOR;
-  }
-
-  public abstract class AccessibilityService extends android.app.Service {
-    ctor public AccessibilityService();
-    method public final void disableSelf();
-    method public final boolean dispatchGesture(@NonNull android.accessibilityservice.GestureDescription, @Nullable android.accessibilityservice.AccessibilityService.GestureResultCallback, @Nullable android.os.Handler);
-    method public android.view.accessibility.AccessibilityNodeInfo findFocus(int);
-    method @NonNull public final android.accessibilityservice.AccessibilityButtonController getAccessibilityButtonController();
-    method @NonNull public final android.accessibilityservice.AccessibilityButtonController getAccessibilityButtonController(int);
-    method @NonNull @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public final android.accessibilityservice.FingerprintGestureController getFingerprintGestureController();
-    method @NonNull public final android.accessibilityservice.AccessibilityService.MagnificationController getMagnificationController();
-    method public android.view.accessibility.AccessibilityNodeInfo getRootInActiveWindow();
-    method public final android.accessibilityservice.AccessibilityServiceInfo getServiceInfo();
-    method @NonNull public final android.accessibilityservice.AccessibilityService.SoftKeyboardController getSoftKeyboardController();
-    method @NonNull public final java.util.List<android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction> getSystemActions();
-    method public java.util.List<android.view.accessibility.AccessibilityWindowInfo> getWindows();
-    method @NonNull public final android.util.SparseArray<java.util.List<android.view.accessibility.AccessibilityWindowInfo>> getWindowsOnAllDisplays();
-    method public abstract void onAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method @Deprecated protected boolean onGesture(int);
-    method public boolean onGesture(@NonNull android.accessibilityservice.AccessibilityGestureEvent);
-    method public abstract void onInterrupt();
-    method protected boolean onKeyEvent(android.view.KeyEvent);
-    method protected void onServiceConnected();
-    method public void onSystemActionsChanged();
-    method public final boolean performGlobalAction(int);
-    method public void setGestureDetectionPassthroughRegion(int, @NonNull android.graphics.Region);
-    method public final void setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo);
-    method public void setTouchExplorationPassthroughRegion(int, @NonNull android.graphics.Region);
-    method public void takeScreenshot(int, @NonNull java.util.concurrent.Executor, @NonNull android.accessibilityservice.AccessibilityService.TakeScreenshotCallback);
-    field public static final int ERROR_TAKE_SCREENSHOT_INTERNAL_ERROR = 1; // 0x1
-    field public static final int ERROR_TAKE_SCREENSHOT_INTERVAL_TIME_SHORT = 3; // 0x3
-    field public static final int ERROR_TAKE_SCREENSHOT_INVALID_DISPLAY = 4; // 0x4
-    field public static final int ERROR_TAKE_SCREENSHOT_NO_ACCESSIBILITY_ACCESS = 2; // 0x2
-    field public static final int GESTURE_2_FINGER_DOUBLE_TAP = 20; // 0x14
-    field public static final int GESTURE_2_FINGER_DOUBLE_TAP_AND_HOLD = 40; // 0x28
-    field public static final int GESTURE_2_FINGER_SINGLE_TAP = 19; // 0x13
-    field public static final int GESTURE_2_FINGER_SWIPE_DOWN = 26; // 0x1a
-    field public static final int GESTURE_2_FINGER_SWIPE_LEFT = 27; // 0x1b
-    field public static final int GESTURE_2_FINGER_SWIPE_RIGHT = 28; // 0x1c
-    field public static final int GESTURE_2_FINGER_SWIPE_UP = 25; // 0x19
-    field public static final int GESTURE_2_FINGER_TRIPLE_TAP = 21; // 0x15
-    field public static final int GESTURE_3_FINGER_DOUBLE_TAP = 23; // 0x17
-    field public static final int GESTURE_3_FINGER_DOUBLE_TAP_AND_HOLD = 41; // 0x29
-    field public static final int GESTURE_3_FINGER_SINGLE_TAP = 22; // 0x16
-    field public static final int GESTURE_3_FINGER_SWIPE_DOWN = 30; // 0x1e
-    field public static final int GESTURE_3_FINGER_SWIPE_LEFT = 31; // 0x1f
-    field public static final int GESTURE_3_FINGER_SWIPE_RIGHT = 32; // 0x20
-    field public static final int GESTURE_3_FINGER_SWIPE_UP = 29; // 0x1d
-    field public static final int GESTURE_3_FINGER_TRIPLE_TAP = 24; // 0x18
-    field public static final int GESTURE_4_FINGER_DOUBLE_TAP = 38; // 0x26
-    field public static final int GESTURE_4_FINGER_DOUBLE_TAP_AND_HOLD = 42; // 0x2a
-    field public static final int GESTURE_4_FINGER_SINGLE_TAP = 37; // 0x25
-    field public static final int GESTURE_4_FINGER_SWIPE_DOWN = 34; // 0x22
-    field public static final int GESTURE_4_FINGER_SWIPE_LEFT = 35; // 0x23
-    field public static final int GESTURE_4_FINGER_SWIPE_RIGHT = 36; // 0x24
-    field public static final int GESTURE_4_FINGER_SWIPE_UP = 33; // 0x21
-    field public static final int GESTURE_4_FINGER_TRIPLE_TAP = 39; // 0x27
-    field public static final int GESTURE_DOUBLE_TAP = 17; // 0x11
-    field public static final int GESTURE_DOUBLE_TAP_AND_HOLD = 18; // 0x12
-    field public static final int GESTURE_SWIPE_DOWN = 2; // 0x2
-    field public static final int GESTURE_SWIPE_DOWN_AND_LEFT = 15; // 0xf
-    field public static final int GESTURE_SWIPE_DOWN_AND_RIGHT = 16; // 0x10
-    field public static final int GESTURE_SWIPE_DOWN_AND_UP = 8; // 0x8
-    field public static final int GESTURE_SWIPE_LEFT = 3; // 0x3
-    field public static final int GESTURE_SWIPE_LEFT_AND_DOWN = 10; // 0xa
-    field public static final int GESTURE_SWIPE_LEFT_AND_RIGHT = 5; // 0x5
-    field public static final int GESTURE_SWIPE_LEFT_AND_UP = 9; // 0x9
-    field public static final int GESTURE_SWIPE_RIGHT = 4; // 0x4
-    field public static final int GESTURE_SWIPE_RIGHT_AND_DOWN = 12; // 0xc
-    field public static final int GESTURE_SWIPE_RIGHT_AND_LEFT = 6; // 0x6
-    field public static final int GESTURE_SWIPE_RIGHT_AND_UP = 11; // 0xb
-    field public static final int GESTURE_SWIPE_UP = 1; // 0x1
-    field public static final int GESTURE_SWIPE_UP_AND_DOWN = 7; // 0x7
-    field public static final int GESTURE_SWIPE_UP_AND_LEFT = 13; // 0xd
-    field public static final int GESTURE_SWIPE_UP_AND_RIGHT = 14; // 0xe
-    field public static final int GLOBAL_ACTION_BACK = 1; // 0x1
-    field public static final int GLOBAL_ACTION_HOME = 2; // 0x2
-    field public static final int GLOBAL_ACTION_LOCK_SCREEN = 8; // 0x8
-    field public static final int GLOBAL_ACTION_NOTIFICATIONS = 4; // 0x4
-    field public static final int GLOBAL_ACTION_POWER_DIALOG = 6; // 0x6
-    field public static final int GLOBAL_ACTION_QUICK_SETTINGS = 5; // 0x5
-    field public static final int GLOBAL_ACTION_RECENTS = 3; // 0x3
-    field public static final int GLOBAL_ACTION_TAKE_SCREENSHOT = 9; // 0x9
-    field public static final int GLOBAL_ACTION_TOGGLE_SPLIT_SCREEN = 7; // 0x7
-    field public static final String SERVICE_INTERFACE = "android.accessibilityservice.AccessibilityService";
-    field public static final String SERVICE_META_DATA = "android.accessibilityservice";
-    field public static final int SHOW_MODE_AUTO = 0; // 0x0
-    field public static final int SHOW_MODE_HIDDEN = 1; // 0x1
-    field public static final int SHOW_MODE_IGNORE_HARD_KEYBOARD = 2; // 0x2
-  }
-
-  public abstract static class AccessibilityService.GestureResultCallback {
-    ctor public AccessibilityService.GestureResultCallback();
-    method public void onCancelled(android.accessibilityservice.GestureDescription);
-    method public void onCompleted(android.accessibilityservice.GestureDescription);
-  }
-
-  public static final class AccessibilityService.MagnificationController {
-    method public void addListener(@NonNull android.accessibilityservice.AccessibilityService.MagnificationController.OnMagnificationChangedListener);
-    method public void addListener(@NonNull android.accessibilityservice.AccessibilityService.MagnificationController.OnMagnificationChangedListener, @Nullable android.os.Handler);
-    method public float getCenterX();
-    method public float getCenterY();
-    method @NonNull public android.graphics.Region getMagnificationRegion();
-    method public float getScale();
-    method public boolean removeListener(@NonNull android.accessibilityservice.AccessibilityService.MagnificationController.OnMagnificationChangedListener);
-    method public boolean reset(boolean);
-    method public boolean setCenter(float, float, boolean);
-    method public boolean setScale(float, boolean);
-  }
-
-  public static interface AccessibilityService.MagnificationController.OnMagnificationChangedListener {
-    method public void onMagnificationChanged(@NonNull android.accessibilityservice.AccessibilityService.MagnificationController, @NonNull android.graphics.Region, float, float, float);
-  }
-
-  public static final class AccessibilityService.ScreenshotResult {
-    method @NonNull public android.graphics.ColorSpace getColorSpace();
-    method @NonNull public android.hardware.HardwareBuffer getHardwareBuffer();
-    method public long getTimestamp();
-  }
-
-  public static final class AccessibilityService.SoftKeyboardController {
-    method public void addOnShowModeChangedListener(@NonNull android.accessibilityservice.AccessibilityService.SoftKeyboardController.OnShowModeChangedListener);
-    method public void addOnShowModeChangedListener(@NonNull android.accessibilityservice.AccessibilityService.SoftKeyboardController.OnShowModeChangedListener, @Nullable android.os.Handler);
-    method public int getShowMode();
-    method public boolean removeOnShowModeChangedListener(@NonNull android.accessibilityservice.AccessibilityService.SoftKeyboardController.OnShowModeChangedListener);
-    method public boolean setShowMode(int);
-    method public boolean switchToInputMethod(@NonNull String);
-  }
-
-  public static interface AccessibilityService.SoftKeyboardController.OnShowModeChangedListener {
-    method public void onShowModeChanged(@NonNull android.accessibilityservice.AccessibilityService.SoftKeyboardController, int);
-  }
-
-  public static interface AccessibilityService.TakeScreenshotCallback {
-    method public void onFailure(int);
-    method public void onSuccess(@NonNull android.accessibilityservice.AccessibilityService.ScreenshotResult);
-  }
-
-  public class AccessibilityServiceInfo implements android.os.Parcelable {
-    ctor public AccessibilityServiceInfo();
-    method public static String capabilityToString(int);
-    method public int describeContents();
-    method public static String feedbackTypeToString(int);
-    method public static String flagToString(int);
-    method @Deprecated public boolean getCanRetrieveWindowContent();
-    method public int getCapabilities();
-    method @Deprecated public String getDescription();
-    method public String getId();
-    method public int getInteractiveUiTimeoutMillis();
-    method public int getNonInteractiveUiTimeoutMillis();
-    method public android.content.pm.ResolveInfo getResolveInfo();
-    method public String getSettingsActivityName();
-    method public String loadDescription(android.content.pm.PackageManager);
-    method public CharSequence loadSummary(android.content.pm.PackageManager);
-    method public void setInteractiveUiTimeoutMillis(@IntRange(from=0) int);
-    method public void setNonInteractiveUiTimeoutMillis(@IntRange(from=0) int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CAPABILITY_CAN_CONTROL_MAGNIFICATION = 16; // 0x10
-    field public static final int CAPABILITY_CAN_PERFORM_GESTURES = 32; // 0x20
-    field @Deprecated public static final int CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 4; // 0x4
-    field public static final int CAPABILITY_CAN_REQUEST_FILTER_KEY_EVENTS = 8; // 0x8
-    field public static final int CAPABILITY_CAN_REQUEST_FINGERPRINT_GESTURES = 64; // 0x40
-    field public static final int CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION = 2; // 0x2
-    field public static final int CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT = 1; // 0x1
-    field public static final int CAPABILITY_CAN_TAKE_SCREENSHOT = 128; // 0x80
-    field @NonNull public static final android.os.Parcelable.Creator<android.accessibilityservice.AccessibilityServiceInfo> CREATOR;
-    field public static final int DEFAULT = 1; // 0x1
-    field public static final int FEEDBACK_ALL_MASK = -1; // 0xffffffff
-    field public static final int FEEDBACK_AUDIBLE = 4; // 0x4
-    field public static final int FEEDBACK_BRAILLE = 32; // 0x20
-    field public static final int FEEDBACK_GENERIC = 16; // 0x10
-    field public static final int FEEDBACK_HAPTIC = 2; // 0x2
-    field public static final int FEEDBACK_SPOKEN = 1; // 0x1
-    field public static final int FEEDBACK_VISUAL = 8; // 0x8
-    field public static final int FLAG_ENABLE_ACCESSIBILITY_VOLUME = 128; // 0x80
-    field public static final int FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 2; // 0x2
-    field public static final int FLAG_REPORT_VIEW_IDS = 16; // 0x10
-    field public static final int FLAG_REQUEST_ACCESSIBILITY_BUTTON = 256; // 0x100
-    field @Deprecated public static final int FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 8; // 0x8
-    field public static final int FLAG_REQUEST_FILTER_KEY_EVENTS = 32; // 0x20
-    field public static final int FLAG_REQUEST_FINGERPRINT_GESTURES = 512; // 0x200
-    field public static final int FLAG_REQUEST_MULTI_FINGER_GESTURES = 4096; // 0x1000
-    field public static final int FLAG_REQUEST_SHORTCUT_WARNING_DIALOG_SPOKEN_FEEDBACK = 1024; // 0x400
-    field public static final int FLAG_REQUEST_TOUCH_EXPLORATION_MODE = 4; // 0x4
-    field public static final int FLAG_RETRIEVE_INTERACTIVE_WINDOWS = 64; // 0x40
-    field public static final int FLAG_SERVICE_HANDLES_DOUBLE_TAP = 2048; // 0x800
-    field public int eventTypes;
-    field public int feedbackType;
-    field public int flags;
-    field public long notificationTimeout;
-    field public String[] packageNames;
-  }
-
-  public final class FingerprintGestureController {
-    method public boolean isGestureDetectionAvailable();
-    method public void registerFingerprintGestureCallback(@NonNull android.accessibilityservice.FingerprintGestureController.FingerprintGestureCallback, @Nullable android.os.Handler);
-    method public void unregisterFingerprintGestureCallback(android.accessibilityservice.FingerprintGestureController.FingerprintGestureCallback);
-    field public static final int FINGERPRINT_GESTURE_SWIPE_DOWN = 8; // 0x8
-    field public static final int FINGERPRINT_GESTURE_SWIPE_LEFT = 2; // 0x2
-    field public static final int FINGERPRINT_GESTURE_SWIPE_RIGHT = 1; // 0x1
-    field public static final int FINGERPRINT_GESTURE_SWIPE_UP = 4; // 0x4
-  }
-
-  public abstract static class FingerprintGestureController.FingerprintGestureCallback {
-    ctor public FingerprintGestureController.FingerprintGestureCallback();
-    method public void onGestureDetected(int);
-    method public void onGestureDetectionAvailabilityChanged(boolean);
-  }
-
-  public final class GestureDescription {
-    method public int getDisplayId();
-    method public static long getMaxGestureDuration();
-    method public static int getMaxStrokeCount();
-    method public android.accessibilityservice.GestureDescription.StrokeDescription getStroke(@IntRange(from=0) int);
-    method public int getStrokeCount();
-  }
-
-  public static class GestureDescription.Builder {
-    ctor public GestureDescription.Builder();
-    method public android.accessibilityservice.GestureDescription.Builder addStroke(@NonNull android.accessibilityservice.GestureDescription.StrokeDescription);
-    method public android.accessibilityservice.GestureDescription build();
-    method @NonNull public android.accessibilityservice.GestureDescription.Builder setDisplayId(int);
-  }
-
-  public static class GestureDescription.StrokeDescription {
-    ctor public GestureDescription.StrokeDescription(@NonNull android.graphics.Path, @IntRange(from=0) long, @IntRange(from=0) long);
-    ctor public GestureDescription.StrokeDescription(@NonNull android.graphics.Path, @IntRange(from=0) long, @IntRange(from=0) long, boolean);
-    method public android.accessibilityservice.GestureDescription.StrokeDescription continueStroke(android.graphics.Path, long, long, boolean);
-    method public long getDuration();
-    method public android.graphics.Path getPath();
-    method public long getStartTime();
-    method public boolean willContinue();
-  }
-
-}
-
-package android.accounts {
-
-  public abstract class AbstractAccountAuthenticator {
-    ctor public AbstractAccountAuthenticator(android.content.Context);
-    method public abstract android.os.Bundle addAccount(android.accounts.AccountAuthenticatorResponse, String, String, String[], android.os.Bundle) throws android.accounts.NetworkErrorException;
-    method public android.os.Bundle addAccountFromCredentials(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, android.os.Bundle) throws android.accounts.NetworkErrorException;
-    method public abstract android.os.Bundle confirmCredentials(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, android.os.Bundle) throws android.accounts.NetworkErrorException;
-    method public abstract android.os.Bundle editProperties(android.accounts.AccountAuthenticatorResponse, String);
-    method public android.os.Bundle finishSession(android.accounts.AccountAuthenticatorResponse, String, android.os.Bundle) throws android.accounts.NetworkErrorException;
-    method public android.os.Bundle getAccountCredentialsForCloning(android.accounts.AccountAuthenticatorResponse, android.accounts.Account) throws android.accounts.NetworkErrorException;
-    method public android.os.Bundle getAccountRemovalAllowed(android.accounts.AccountAuthenticatorResponse, android.accounts.Account) throws android.accounts.NetworkErrorException;
-    method public abstract android.os.Bundle getAuthToken(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, String, android.os.Bundle) throws android.accounts.NetworkErrorException;
-    method public abstract String getAuthTokenLabel(String);
-    method public final android.os.IBinder getIBinder();
-    method public abstract android.os.Bundle hasFeatures(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, String[]) throws android.accounts.NetworkErrorException;
-    method public android.os.Bundle isCredentialsUpdateSuggested(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, String) throws android.accounts.NetworkErrorException;
-    method public android.os.Bundle startAddAccountSession(android.accounts.AccountAuthenticatorResponse, String, String, String[], android.os.Bundle) throws android.accounts.NetworkErrorException;
-    method public android.os.Bundle startUpdateCredentialsSession(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, String, android.os.Bundle) throws android.accounts.NetworkErrorException;
-    method public abstract android.os.Bundle updateCredentials(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, String, android.os.Bundle) throws android.accounts.NetworkErrorException;
-    field public static final String KEY_CUSTOM_TOKEN_EXPIRY = "android.accounts.expiry";
-  }
-
-  public class Account implements android.os.Parcelable {
-    ctor public Account(String, String);
-    ctor public Account(android.os.Parcel);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.accounts.Account> CREATOR;
-    field public final String name;
-    field public final String type;
-  }
-
-  @Deprecated public class AccountAuthenticatorActivity extends android.app.Activity {
-    ctor @Deprecated public AccountAuthenticatorActivity();
-    method @Deprecated public final void setAccountAuthenticatorResult(android.os.Bundle);
-  }
-
-  public class AccountAuthenticatorResponse implements android.os.Parcelable {
-    ctor public AccountAuthenticatorResponse(android.os.Parcel);
-    method public int describeContents();
-    method public void onError(int, String);
-    method public void onRequestContinued();
-    method public void onResult(android.os.Bundle);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.accounts.AccountAuthenticatorResponse> CREATOR;
-  }
-
-  public class AccountManager {
-    method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> addAccount(String, String, String[], android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public boolean addAccountExplicitly(android.accounts.Account, String, android.os.Bundle);
-    method public boolean addAccountExplicitly(android.accounts.Account, String, android.os.Bundle, java.util.Map<java.lang.String,java.lang.Integer>);
-    method @RequiresPermission(value="android.permission.GET_ACCOUNTS", apis="..22") public void addOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener, android.os.Handler, boolean);
-    method public void addOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener, android.os.Handler, boolean, String[]);
-    method @RequiresPermission(value="android.permission.USE_CREDENTIALS", apis="..22") public String blockingGetAuthToken(android.accounts.Account, String, boolean) throws android.accounts.AuthenticatorException, java.io.IOException, android.accounts.OperationCanceledException;
-    method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public void clearPassword(android.accounts.Account);
-    method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> confirmCredentials(android.accounts.Account, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-    method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> editProperties(String, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-    method public android.accounts.AccountManagerFuture<android.os.Bundle> finishSession(android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-    method public static android.accounts.AccountManager get(android.content.Context);
-    method public int getAccountVisibility(android.accounts.Account, String);
-    method @NonNull @RequiresPermission(value="android.permission.GET_ACCOUNTS", apis="..22") public android.accounts.Account[] getAccounts();
-    method public java.util.Map<android.accounts.Account,java.lang.Integer> getAccountsAndVisibilityForPackage(String, String);
-    method @NonNull @RequiresPermission(value="android.permission.GET_ACCOUNTS", apis="..22") public android.accounts.Account[] getAccountsByType(String);
-    method public android.accounts.AccountManagerFuture<android.accounts.Account[]> getAccountsByTypeAndFeatures(String, String[], android.accounts.AccountManagerCallback<android.accounts.Account[]>, android.os.Handler);
-    method @NonNull public android.accounts.Account[] getAccountsByTypeForPackage(String, String);
-    method @RequiresPermission(value="android.permission.USE_CREDENTIALS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> getAuthToken(android.accounts.Account, String, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-    method @Deprecated @RequiresPermission(value="android.permission.USE_CREDENTIALS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> getAuthToken(android.accounts.Account, String, boolean, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-    method @RequiresPermission(value="android.permission.USE_CREDENTIALS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> getAuthToken(android.accounts.Account, String, android.os.Bundle, boolean, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-    method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> getAuthTokenByFeatures(String, String, String[], android.app.Activity, android.os.Bundle, android.os.Bundle, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-    method public android.accounts.AuthenticatorDescription[] getAuthenticatorTypes();
-    method public java.util.Map<java.lang.String,java.lang.Integer> getPackagesAndVisibilityForAccount(android.accounts.Account);
-    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public String getPassword(android.accounts.Account);
-    method public String getPreviousName(android.accounts.Account);
-    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public String getUserData(android.accounts.Account, String);
-    method public android.accounts.AccountManagerFuture<java.lang.Boolean> hasFeatures(android.accounts.Account, String[], android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler);
-    method @RequiresPermission(anyOf={"android.permission.MANAGE_ACCOUNTS", "android.permission.USE_CREDENTIALS"}, apis="..22") public void invalidateAuthToken(String, String);
-    method public android.accounts.AccountManagerFuture<java.lang.Boolean> isCredentialsUpdateSuggested(android.accounts.Account, String, android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler);
-    method @Deprecated public static android.content.Intent newChooseAccountIntent(android.accounts.Account, java.util.ArrayList<android.accounts.Account>, String[], boolean, String, String, String[], android.os.Bundle);
-    method public static android.content.Intent newChooseAccountIntent(android.accounts.Account, java.util.List<android.accounts.Account>, String[], String, String, String[], android.os.Bundle);
-    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public boolean notifyAccountAuthenticated(android.accounts.Account);
-    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public String peekAuthToken(android.accounts.Account, String);
-    method @Deprecated @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<java.lang.Boolean> removeAccount(android.accounts.Account, android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler);
-    method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> removeAccount(android.accounts.Account, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public boolean removeAccountExplicitly(android.accounts.Account);
-    method public void removeOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener);
-    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.accounts.Account> renameAccount(android.accounts.Account, @Size(min=1) String, android.accounts.AccountManagerCallback<android.accounts.Account>, android.os.Handler);
-    method public boolean setAccountVisibility(android.accounts.Account, String, int);
-    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public void setAuthToken(android.accounts.Account, String, String);
-    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public void setPassword(android.accounts.Account, String);
-    method @RequiresPermission(value="android.permission.AUTHENTICATE_ACCOUNTS", apis="..22") public void setUserData(android.accounts.Account, String, String);
-    method public android.accounts.AccountManagerFuture<android.os.Bundle> startAddAccountSession(String, String, String[], android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-    method public android.accounts.AccountManagerFuture<android.os.Bundle> startUpdateCredentialsSession(android.accounts.Account, String, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-    method @RequiresPermission(value="android.permission.MANAGE_ACCOUNTS", apis="..22") public android.accounts.AccountManagerFuture<android.os.Bundle> updateCredentials(android.accounts.Account, String, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-    field public static final String ACTION_ACCOUNT_REMOVED = "android.accounts.action.ACCOUNT_REMOVED";
-    field public static final String ACTION_AUTHENTICATOR_INTENT = "android.accounts.AccountAuthenticator";
-    field public static final String AUTHENTICATOR_ATTRIBUTES_NAME = "account-authenticator";
-    field public static final String AUTHENTICATOR_META_DATA_NAME = "android.accounts.AccountAuthenticator";
-    field public static final int ERROR_CODE_BAD_ARGUMENTS = 7; // 0x7
-    field public static final int ERROR_CODE_BAD_AUTHENTICATION = 9; // 0x9
-    field public static final int ERROR_CODE_BAD_REQUEST = 8; // 0x8
-    field public static final int ERROR_CODE_CANCELED = 4; // 0x4
-    field public static final int ERROR_CODE_INVALID_RESPONSE = 5; // 0x5
-    field public static final int ERROR_CODE_NETWORK_ERROR = 3; // 0x3
-    field public static final int ERROR_CODE_REMOTE_EXCEPTION = 1; // 0x1
-    field public static final int ERROR_CODE_UNSUPPORTED_OPERATION = 6; // 0x6
-    field public static final String KEY_ACCOUNTS = "accounts";
-    field public static final String KEY_ACCOUNT_AUTHENTICATOR_RESPONSE = "accountAuthenticatorResponse";
-    field public static final String KEY_ACCOUNT_MANAGER_RESPONSE = "accountManagerResponse";
-    field public static final String KEY_ACCOUNT_NAME = "authAccount";
-    field public static final String KEY_ACCOUNT_SESSION_BUNDLE = "accountSessionBundle";
-    field public static final String KEY_ACCOUNT_STATUS_TOKEN = "accountStatusToken";
-    field public static final String KEY_ACCOUNT_TYPE = "accountType";
-    field public static final String KEY_ANDROID_PACKAGE_NAME = "androidPackageName";
-    field public static final String KEY_AUTHENTICATOR_TYPES = "authenticator_types";
-    field public static final String KEY_AUTHTOKEN = "authtoken";
-    field public static final String KEY_AUTH_FAILED_MESSAGE = "authFailedMessage";
-    field public static final String KEY_AUTH_TOKEN_LABEL = "authTokenLabelKey";
-    field public static final String KEY_BOOLEAN_RESULT = "booleanResult";
-    field public static final String KEY_CALLER_PID = "callerPid";
-    field public static final String KEY_CALLER_UID = "callerUid";
-    field public static final String KEY_ERROR_CODE = "errorCode";
-    field public static final String KEY_ERROR_MESSAGE = "errorMessage";
-    field public static final String KEY_INTENT = "intent";
-    field public static final String KEY_LAST_AUTHENTICATED_TIME = "lastAuthenticatedTime";
-    field public static final String KEY_PASSWORD = "password";
-    field public static final String KEY_USERDATA = "userdata";
-    field @Deprecated public static final String LOGIN_ACCOUNTS_CHANGED_ACTION = "android.accounts.LOGIN_ACCOUNTS_CHANGED";
-    field public static final String PACKAGE_NAME_KEY_LEGACY_NOT_VISIBLE = "android:accounts:key_legacy_not_visible";
-    field public static final String PACKAGE_NAME_KEY_LEGACY_VISIBLE = "android:accounts:key_legacy_visible";
-    field public static final int VISIBILITY_NOT_VISIBLE = 3; // 0x3
-    field public static final int VISIBILITY_UNDEFINED = 0; // 0x0
-    field public static final int VISIBILITY_USER_MANAGED_NOT_VISIBLE = 4; // 0x4
-    field public static final int VISIBILITY_USER_MANAGED_VISIBLE = 2; // 0x2
-    field public static final int VISIBILITY_VISIBLE = 1; // 0x1
-  }
-
-  public interface AccountManagerCallback<V> {
-    method public void run(android.accounts.AccountManagerFuture<V>);
-  }
-
-  public interface AccountManagerFuture<V> {
-    method public boolean cancel(boolean);
-    method public V getResult() throws android.accounts.AuthenticatorException, java.io.IOException, android.accounts.OperationCanceledException;
-    method public V getResult(long, java.util.concurrent.TimeUnit) throws android.accounts.AuthenticatorException, java.io.IOException, android.accounts.OperationCanceledException;
-    method public boolean isCancelled();
-    method public boolean isDone();
-  }
-
-  public class AccountsException extends java.lang.Exception {
-    ctor public AccountsException();
-    ctor public AccountsException(String);
-    ctor public AccountsException(String, Throwable);
-    ctor public AccountsException(Throwable);
-  }
-
-  public class AuthenticatorDescription implements android.os.Parcelable {
-    ctor public AuthenticatorDescription(String, String, int, int, int, int, boolean);
-    ctor public AuthenticatorDescription(String, String, int, int, int, int);
-    method public int describeContents();
-    method public static android.accounts.AuthenticatorDescription newKey(String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.accounts.AuthenticatorDescription> CREATOR;
-    field public final int accountPreferencesId;
-    field public final boolean customTokens;
-    field public final int iconId;
-    field public final int labelId;
-    field public final String packageName;
-    field public final int smallIconId;
-    field public final String type;
-  }
-
-  public class AuthenticatorException extends android.accounts.AccountsException {
-    ctor public AuthenticatorException();
-    ctor public AuthenticatorException(String);
-    ctor public AuthenticatorException(String, Throwable);
-    ctor public AuthenticatorException(Throwable);
-  }
-
-  public class NetworkErrorException extends android.accounts.AccountsException {
-    ctor public NetworkErrorException();
-    ctor public NetworkErrorException(String);
-    ctor public NetworkErrorException(String, Throwable);
-    ctor public NetworkErrorException(Throwable);
-  }
-
-  public interface OnAccountsUpdateListener {
-    method public void onAccountsUpdated(android.accounts.Account[]);
-  }
-
-  public class OperationCanceledException extends android.accounts.AccountsException {
-    ctor public OperationCanceledException();
-    ctor public OperationCanceledException(String);
-    ctor public OperationCanceledException(String, Throwable);
-    ctor public OperationCanceledException(Throwable);
-  }
-
-}
-
-package android.animation {
-
-  public abstract class Animator implements java.lang.Cloneable {
-    ctor public Animator();
-    method public void addListener(android.animation.Animator.AnimatorListener);
-    method public void addPauseListener(android.animation.Animator.AnimatorPauseListener);
-    method public void cancel();
-    method public android.animation.Animator clone();
-    method public void end();
-    method public abstract long getDuration();
-    method public android.animation.TimeInterpolator getInterpolator();
-    method public java.util.ArrayList<android.animation.Animator.AnimatorListener> getListeners();
-    method public abstract long getStartDelay();
-    method public long getTotalDuration();
-    method public boolean isPaused();
-    method public abstract boolean isRunning();
-    method public boolean isStarted();
-    method public void pause();
-    method public void removeAllListeners();
-    method public void removeListener(android.animation.Animator.AnimatorListener);
-    method public void removePauseListener(android.animation.Animator.AnimatorPauseListener);
-    method public void resume();
-    method public abstract android.animation.Animator setDuration(long);
-    method public abstract void setInterpolator(android.animation.TimeInterpolator);
-    method public abstract void setStartDelay(long);
-    method public void setTarget(@Nullable Object);
-    method public void setupEndValues();
-    method public void setupStartValues();
-    method public void start();
-    field public static final long DURATION_INFINITE = -1L; // 0xffffffffffffffffL
-  }
-
-  public static interface Animator.AnimatorListener {
-    method public void onAnimationCancel(android.animation.Animator);
-    method public default void onAnimationEnd(android.animation.Animator, boolean);
-    method public void onAnimationEnd(android.animation.Animator);
-    method public void onAnimationRepeat(android.animation.Animator);
-    method public default void onAnimationStart(android.animation.Animator, boolean);
-    method public void onAnimationStart(android.animation.Animator);
-  }
-
-  public static interface Animator.AnimatorPauseListener {
-    method public void onAnimationPause(android.animation.Animator);
-    method public void onAnimationResume(android.animation.Animator);
-  }
-
-  public class AnimatorInflater {
-    ctor public AnimatorInflater();
-    method public static android.animation.Animator loadAnimator(android.content.Context, @AnimatorRes int) throws android.content.res.Resources.NotFoundException;
-    method public static android.animation.StateListAnimator loadStateListAnimator(android.content.Context, int) throws android.content.res.Resources.NotFoundException;
-  }
-
-  public abstract class AnimatorListenerAdapter implements android.animation.Animator.AnimatorListener android.animation.Animator.AnimatorPauseListener {
-    ctor public AnimatorListenerAdapter();
-    method public void onAnimationCancel(android.animation.Animator);
-    method public void onAnimationEnd(android.animation.Animator);
-    method public void onAnimationPause(android.animation.Animator);
-    method public void onAnimationRepeat(android.animation.Animator);
-    method public void onAnimationResume(android.animation.Animator);
-    method public void onAnimationStart(android.animation.Animator);
-  }
-
-  public final class AnimatorSet extends android.animation.Animator {
-    ctor public AnimatorSet();
-    method public android.animation.AnimatorSet clone();
-    method public java.util.ArrayList<android.animation.Animator> getChildAnimations();
-    method public long getCurrentPlayTime();
-    method public long getDuration();
-    method public long getStartDelay();
-    method public boolean isRunning();
-    method public android.animation.AnimatorSet.Builder play(android.animation.Animator);
-    method public void playSequentially(android.animation.Animator...);
-    method public void playSequentially(java.util.List<android.animation.Animator>);
-    method public void playTogether(android.animation.Animator...);
-    method public void playTogether(java.util.Collection<android.animation.Animator>);
-    method public void reverse();
-    method public void setCurrentPlayTime(long);
-    method public android.animation.AnimatorSet setDuration(long);
-    method public void setInterpolator(android.animation.TimeInterpolator);
-    method public void setStartDelay(long);
-  }
-
-  public class AnimatorSet.Builder {
-    method public android.animation.AnimatorSet.Builder after(android.animation.Animator);
-    method public android.animation.AnimatorSet.Builder after(long);
-    method public android.animation.AnimatorSet.Builder before(android.animation.Animator);
-    method public android.animation.AnimatorSet.Builder with(android.animation.Animator);
-  }
-
-  public class ArgbEvaluator implements android.animation.TypeEvaluator {
-    ctor public ArgbEvaluator();
-    method public Object evaluate(float, Object, Object);
-  }
-
-  public abstract class BidirectionalTypeConverter<T, V> extends android.animation.TypeConverter<T,V> {
-    ctor public BidirectionalTypeConverter(Class<T>, Class<V>);
-    method public abstract T convertBack(V);
-    method public android.animation.BidirectionalTypeConverter<V,T> invert();
-  }
-
-  public class FloatArrayEvaluator implements android.animation.TypeEvaluator<float[]> {
-    ctor public FloatArrayEvaluator();
-    ctor public FloatArrayEvaluator(float[]);
-    method public float[] evaluate(float, float[], float[]);
-  }
-
-  public class FloatEvaluator implements android.animation.TypeEvaluator<java.lang.Number> {
-    ctor public FloatEvaluator();
-    method public Float evaluate(float, Number, Number);
-  }
-
-  public class IntArrayEvaluator implements android.animation.TypeEvaluator<int[]> {
-    ctor public IntArrayEvaluator();
-    ctor public IntArrayEvaluator(int[]);
-    method public int[] evaluate(float, int[], int[]);
-  }
-
-  public class IntEvaluator implements android.animation.TypeEvaluator<java.lang.Integer> {
-    ctor public IntEvaluator();
-    method public Integer evaluate(float, Integer, Integer);
-  }
-
-  public abstract class Keyframe implements java.lang.Cloneable {
-    ctor public Keyframe();
-    method public abstract android.animation.Keyframe clone();
-    method public float getFraction();
-    method public android.animation.TimeInterpolator getInterpolator();
-    method public Class getType();
-    method public abstract Object getValue();
-    method public boolean hasValue();
-    method public static android.animation.Keyframe ofFloat(float, float);
-    method public static android.animation.Keyframe ofFloat(float);
-    method public static android.animation.Keyframe ofInt(float, int);
-    method public static android.animation.Keyframe ofInt(float);
-    method public static android.animation.Keyframe ofObject(float, Object);
-    method public static android.animation.Keyframe ofObject(float);
-    method public void setFraction(float);
-    method public void setInterpolator(android.animation.TimeInterpolator);
-    method public abstract void setValue(Object);
-  }
-
-  public class LayoutTransition {
-    ctor public LayoutTransition();
-    method public void addChild(android.view.ViewGroup, android.view.View);
-    method public void addTransitionListener(android.animation.LayoutTransition.TransitionListener);
-    method public void disableTransitionType(int);
-    method public void enableTransitionType(int);
-    method public android.animation.Animator getAnimator(int);
-    method public long getDuration(int);
-    method public android.animation.TimeInterpolator getInterpolator(int);
-    method public long getStagger(int);
-    method public long getStartDelay(int);
-    method public java.util.List<android.animation.LayoutTransition.TransitionListener> getTransitionListeners();
-    method @Deprecated public void hideChild(android.view.ViewGroup, android.view.View);
-    method public void hideChild(android.view.ViewGroup, android.view.View, int);
-    method public boolean isChangingLayout();
-    method public boolean isRunning();
-    method public boolean isTransitionTypeEnabled(int);
-    method public void removeChild(android.view.ViewGroup, android.view.View);
-    method public void removeTransitionListener(android.animation.LayoutTransition.TransitionListener);
-    method public void setAnimateParentHierarchy(boolean);
-    method public void setAnimator(int, android.animation.Animator);
-    method public void setDuration(long);
-    method public void setDuration(int, long);
-    method public void setInterpolator(int, android.animation.TimeInterpolator);
-    method public void setStagger(int, long);
-    method public void setStartDelay(int, long);
-    method @Deprecated public void showChild(android.view.ViewGroup, android.view.View);
-    method public void showChild(android.view.ViewGroup, android.view.View, int);
-    field public static final int APPEARING = 2; // 0x2
-    field public static final int CHANGE_APPEARING = 0; // 0x0
-    field public static final int CHANGE_DISAPPEARING = 1; // 0x1
-    field public static final int CHANGING = 4; // 0x4
-    field public static final int DISAPPEARING = 3; // 0x3
-  }
-
-  public static interface LayoutTransition.TransitionListener {
-    method public void endTransition(android.animation.LayoutTransition, android.view.ViewGroup, android.view.View, int);
-    method public void startTransition(android.animation.LayoutTransition, android.view.ViewGroup, android.view.View, int);
-  }
-
-  public final class ObjectAnimator extends android.animation.ValueAnimator {
-    ctor public ObjectAnimator();
-    method public android.animation.ObjectAnimator clone();
-    method @Nullable public String getPropertyName();
-    method @Nullable public Object getTarget();
-    method public static android.animation.ObjectAnimator ofArgb(Object, String, int...);
-    method public static <T> android.animation.ObjectAnimator ofArgb(T, android.util.Property<T,java.lang.Integer>, int...);
-    method public static android.animation.ObjectAnimator ofFloat(Object, String, float...);
-    method public static android.animation.ObjectAnimator ofFloat(Object, String, String, android.graphics.Path);
-    method public static <T> android.animation.ObjectAnimator ofFloat(T, android.util.Property<T,java.lang.Float>, float...);
-    method public static <T> android.animation.ObjectAnimator ofFloat(T, android.util.Property<T,java.lang.Float>, android.util.Property<T,java.lang.Float>, android.graphics.Path);
-    method public static android.animation.ObjectAnimator ofInt(Object, String, int...);
-    method public static android.animation.ObjectAnimator ofInt(Object, String, String, android.graphics.Path);
-    method public static <T> android.animation.ObjectAnimator ofInt(T, android.util.Property<T,java.lang.Integer>, int...);
-    method public static <T> android.animation.ObjectAnimator ofInt(T, android.util.Property<T,java.lang.Integer>, android.util.Property<T,java.lang.Integer>, android.graphics.Path);
-    method public static android.animation.ObjectAnimator ofMultiFloat(Object, String, float[][]);
-    method public static android.animation.ObjectAnimator ofMultiFloat(Object, String, android.graphics.Path);
-    method @java.lang.SafeVarargs public static <T> android.animation.ObjectAnimator ofMultiFloat(Object, String, android.animation.TypeConverter<T,float[]>, android.animation.TypeEvaluator<T>, T...);
-    method public static android.animation.ObjectAnimator ofMultiInt(Object, String, int[][]);
-    method public static android.animation.ObjectAnimator ofMultiInt(Object, String, android.graphics.Path);
-    method @java.lang.SafeVarargs public static <T> android.animation.ObjectAnimator ofMultiInt(Object, String, android.animation.TypeConverter<T,int[]>, android.animation.TypeEvaluator<T>, T...);
-    method public static android.animation.ObjectAnimator ofObject(Object, String, android.animation.TypeEvaluator, java.lang.Object...);
-    method @NonNull public static android.animation.ObjectAnimator ofObject(Object, String, @Nullable android.animation.TypeConverter<android.graphics.PointF,?>, android.graphics.Path);
-    method @NonNull @java.lang.SafeVarargs public static <T, V> android.animation.ObjectAnimator ofObject(T, android.util.Property<T,V>, android.animation.TypeEvaluator<V>, V...);
-    method @NonNull @java.lang.SafeVarargs public static <T, V, P> android.animation.ObjectAnimator ofObject(T, android.util.Property<T,P>, android.animation.TypeConverter<V,P>, android.animation.TypeEvaluator<V>, V...);
-    method @NonNull public static <T, V> android.animation.ObjectAnimator ofObject(T, @NonNull android.util.Property<T,V>, @Nullable android.animation.TypeConverter<android.graphics.PointF,V>, android.graphics.Path);
-    method @NonNull public static android.animation.ObjectAnimator ofPropertyValuesHolder(Object, android.animation.PropertyValuesHolder...);
-    method public void setAutoCancel(boolean);
-    method @NonNull public android.animation.ObjectAnimator setDuration(long);
-    method public void setProperty(@NonNull android.util.Property);
-    method public void setPropertyName(@NonNull String);
-  }
-
-  public class PointFEvaluator implements android.animation.TypeEvaluator<android.graphics.PointF> {
-    ctor public PointFEvaluator();
-    ctor public PointFEvaluator(android.graphics.PointF);
-    method public android.graphics.PointF evaluate(float, android.graphics.PointF, android.graphics.PointF);
-  }
-
-  public class PropertyValuesHolder implements java.lang.Cloneable {
-    method public android.animation.PropertyValuesHolder clone();
-    method public String getPropertyName();
-    method public static android.animation.PropertyValuesHolder ofFloat(String, float...);
-    method public static android.animation.PropertyValuesHolder ofFloat(android.util.Property<?,java.lang.Float>, float...);
-    method public static android.animation.PropertyValuesHolder ofInt(String, int...);
-    method public static android.animation.PropertyValuesHolder ofInt(android.util.Property<?,java.lang.Integer>, int...);
-    method public static android.animation.PropertyValuesHolder ofKeyframe(String, android.animation.Keyframe...);
-    method public static android.animation.PropertyValuesHolder ofKeyframe(android.util.Property, android.animation.Keyframe...);
-    method public static android.animation.PropertyValuesHolder ofMultiFloat(String, float[][]);
-    method public static android.animation.PropertyValuesHolder ofMultiFloat(String, android.graphics.Path);
-    method @java.lang.SafeVarargs public static <V> android.animation.PropertyValuesHolder ofMultiFloat(String, android.animation.TypeConverter<V,float[]>, android.animation.TypeEvaluator<V>, V...);
-    method public static <T> android.animation.PropertyValuesHolder ofMultiFloat(String, android.animation.TypeConverter<T,float[]>, android.animation.TypeEvaluator<T>, android.animation.Keyframe...);
-    method public static android.animation.PropertyValuesHolder ofMultiInt(String, int[][]);
-    method public static android.animation.PropertyValuesHolder ofMultiInt(String, android.graphics.Path);
-    method @java.lang.SafeVarargs public static <V> android.animation.PropertyValuesHolder ofMultiInt(String, android.animation.TypeConverter<V,int[]>, android.animation.TypeEvaluator<V>, V...);
-    method public static <T> android.animation.PropertyValuesHolder ofMultiInt(String, android.animation.TypeConverter<T,int[]>, android.animation.TypeEvaluator<T>, android.animation.Keyframe...);
-    method public static android.animation.PropertyValuesHolder ofObject(String, android.animation.TypeEvaluator, java.lang.Object...);
-    method public static android.animation.PropertyValuesHolder ofObject(String, android.animation.TypeConverter<android.graphics.PointF,?>, android.graphics.Path);
-    method @java.lang.SafeVarargs public static <V> android.animation.PropertyValuesHolder ofObject(android.util.Property, android.animation.TypeEvaluator<V>, V...);
-    method @java.lang.SafeVarargs public static <T, V> android.animation.PropertyValuesHolder ofObject(android.util.Property<?,V>, android.animation.TypeConverter<T,V>, android.animation.TypeEvaluator<T>, T...);
-    method public static <V> android.animation.PropertyValuesHolder ofObject(android.util.Property<?,V>, android.animation.TypeConverter<android.graphics.PointF,V>, android.graphics.Path);
-    method public void setConverter(android.animation.TypeConverter);
-    method public void setEvaluator(android.animation.TypeEvaluator);
-    method public void setFloatValues(float...);
-    method public void setIntValues(int...);
-    method public void setKeyframes(android.animation.Keyframe...);
-    method public void setObjectValues(java.lang.Object...);
-    method public void setProperty(android.util.Property);
-    method public void setPropertyName(String);
-  }
-
-  public class RectEvaluator implements android.animation.TypeEvaluator<android.graphics.Rect> {
-    ctor public RectEvaluator();
-    ctor public RectEvaluator(android.graphics.Rect);
-    method public android.graphics.Rect evaluate(float, android.graphics.Rect, android.graphics.Rect);
-  }
-
-  public class StateListAnimator implements java.lang.Cloneable {
-    ctor public StateListAnimator();
-    method public void addState(int[], android.animation.Animator);
-    method public android.animation.StateListAnimator clone();
-    method public void jumpToCurrentState();
-  }
-
-  public class TimeAnimator extends android.animation.ValueAnimator {
-    ctor public TimeAnimator();
-    method public void setTimeListener(android.animation.TimeAnimator.TimeListener);
-  }
-
-  public static interface TimeAnimator.TimeListener {
-    method public void onTimeUpdate(android.animation.TimeAnimator, long, long);
-  }
-
-  public interface TimeInterpolator {
-    method public float getInterpolation(float);
-  }
-
-  public abstract class TypeConverter<T, V> {
-    ctor public TypeConverter(Class<T>, Class<V>);
-    method public abstract V convert(T);
-  }
-
-  public interface TypeEvaluator<T> {
-    method public T evaluate(float, T, T);
-  }
-
-  public class ValueAnimator extends android.animation.Animator {
-    ctor public ValueAnimator();
-    method public void addUpdateListener(android.animation.ValueAnimator.AnimatorUpdateListener);
-    method public static boolean areAnimatorsEnabled();
-    method public android.animation.ValueAnimator clone();
-    method public float getAnimatedFraction();
-    method public Object getAnimatedValue();
-    method public Object getAnimatedValue(String);
-    method public long getCurrentPlayTime();
-    method public long getDuration();
-    method public static long getFrameDelay();
-    method public int getRepeatCount();
-    method public int getRepeatMode();
-    method public long getStartDelay();
-    method public android.animation.PropertyValuesHolder[] getValues();
-    method public boolean isRunning();
-    method public static android.animation.ValueAnimator ofArgb(int...);
-    method public static android.animation.ValueAnimator ofFloat(float...);
-    method public static android.animation.ValueAnimator ofInt(int...);
-    method public static android.animation.ValueAnimator ofObject(android.animation.TypeEvaluator, java.lang.Object...);
-    method public static android.animation.ValueAnimator ofPropertyValuesHolder(android.animation.PropertyValuesHolder...);
-    method public void removeAllUpdateListeners();
-    method public void removeUpdateListener(android.animation.ValueAnimator.AnimatorUpdateListener);
-    method public void reverse();
-    method public void setCurrentFraction(float);
-    method public void setCurrentPlayTime(long);
-    method public android.animation.ValueAnimator setDuration(long);
-    method public void setEvaluator(android.animation.TypeEvaluator);
-    method public void setFloatValues(float...);
-    method public static void setFrameDelay(long);
-    method public void setIntValues(int...);
-    method public void setInterpolator(android.animation.TimeInterpolator);
-    method public void setObjectValues(java.lang.Object...);
-    method public void setRepeatCount(int);
-    method public void setRepeatMode(int);
-    method public void setStartDelay(long);
-    method public void setValues(android.animation.PropertyValuesHolder...);
-    field public static final int INFINITE = -1; // 0xffffffff
-    field public static final int RESTART = 1; // 0x1
-    field public static final int REVERSE = 2; // 0x2
-  }
-
-  public static interface ValueAnimator.AnimatorUpdateListener {
-    method public void onAnimationUpdate(android.animation.ValueAnimator);
-  }
-
-}
-
-package android.annotation {
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE, java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.LOCAL_VARIABLE}) public @interface SuppressLint {
-    method public abstract String[] value();
-  }
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.FIELD}) public @interface TargetApi {
-    method public abstract int value();
-  }
-
-}
-
-package android.app {
-
-  public abstract class ActionBar {
-    ctor public ActionBar();
-    method public abstract void addOnMenuVisibilityListener(android.app.ActionBar.OnMenuVisibilityListener);
-    method @Deprecated public abstract void addTab(android.app.ActionBar.Tab);
-    method @Deprecated public abstract void addTab(android.app.ActionBar.Tab, boolean);
-    method @Deprecated public abstract void addTab(android.app.ActionBar.Tab, int);
-    method @Deprecated public abstract void addTab(android.app.ActionBar.Tab, int, boolean);
-    method public abstract android.view.View getCustomView();
-    method public abstract int getDisplayOptions();
-    method public float getElevation();
-    method public abstract int getHeight();
-    method public int getHideOffset();
-    method @Deprecated public abstract int getNavigationItemCount();
-    method @Deprecated public abstract int getNavigationMode();
-    method @Deprecated public abstract int getSelectedNavigationIndex();
-    method @Deprecated public abstract android.app.ActionBar.Tab getSelectedTab();
-    method public abstract CharSequence getSubtitle();
-    method @Deprecated public abstract android.app.ActionBar.Tab getTabAt(int);
-    method @Deprecated public abstract int getTabCount();
-    method public android.content.Context getThemedContext();
-    method public abstract CharSequence getTitle();
-    method public abstract void hide();
-    method public boolean isHideOnContentScrollEnabled();
-    method public abstract boolean isShowing();
-    method @Deprecated public abstract android.app.ActionBar.Tab newTab();
-    method @Deprecated public abstract void removeAllTabs();
-    method public abstract void removeOnMenuVisibilityListener(android.app.ActionBar.OnMenuVisibilityListener);
-    method @Deprecated public abstract void removeTab(android.app.ActionBar.Tab);
-    method @Deprecated public abstract void removeTabAt(int);
-    method @Deprecated public abstract void selectTab(android.app.ActionBar.Tab);
-    method public abstract void setBackgroundDrawable(@Nullable android.graphics.drawable.Drawable);
-    method public abstract void setCustomView(android.view.View);
-    method public abstract void setCustomView(android.view.View, android.app.ActionBar.LayoutParams);
-    method public abstract void setCustomView(@LayoutRes int);
-    method public abstract void setDisplayHomeAsUpEnabled(boolean);
-    method public abstract void setDisplayOptions(int);
-    method public abstract void setDisplayOptions(int, int);
-    method public abstract void setDisplayShowCustomEnabled(boolean);
-    method public abstract void setDisplayShowHomeEnabled(boolean);
-    method public abstract void setDisplayShowTitleEnabled(boolean);
-    method public abstract void setDisplayUseLogoEnabled(boolean);
-    method public void setElevation(float);
-    method public void setHideOffset(int);
-    method public void setHideOnContentScrollEnabled(boolean);
-    method public void setHomeActionContentDescription(CharSequence);
-    method public void setHomeActionContentDescription(@StringRes int);
-    method public void setHomeAsUpIndicator(android.graphics.drawable.Drawable);
-    method public void setHomeAsUpIndicator(@DrawableRes int);
-    method public void setHomeButtonEnabled(boolean);
-    method public abstract void setIcon(@DrawableRes int);
-    method public abstract void setIcon(android.graphics.drawable.Drawable);
-    method @Deprecated public abstract void setListNavigationCallbacks(android.widget.SpinnerAdapter, android.app.ActionBar.OnNavigationListener);
-    method public abstract void setLogo(@DrawableRes int);
-    method public abstract void setLogo(android.graphics.drawable.Drawable);
-    method @Deprecated public abstract void setNavigationMode(int);
-    method @Deprecated public abstract void setSelectedNavigationItem(int);
-    method public void setSplitBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setStackedBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public abstract void setSubtitle(CharSequence);
-    method public abstract void setSubtitle(@StringRes int);
-    method public abstract void setTitle(CharSequence);
-    method public abstract void setTitle(@StringRes int);
-    method public abstract void show();
-    field public static final int DISPLAY_HOME_AS_UP = 4; // 0x4
-    field public static final int DISPLAY_SHOW_CUSTOM = 16; // 0x10
-    field public static final int DISPLAY_SHOW_HOME = 2; // 0x2
-    field public static final int DISPLAY_SHOW_TITLE = 8; // 0x8
-    field public static final int DISPLAY_USE_LOGO = 1; // 0x1
-    field @Deprecated public static final int NAVIGATION_MODE_LIST = 1; // 0x1
-    field @Deprecated public static final int NAVIGATION_MODE_STANDARD = 0; // 0x0
-    field @Deprecated public static final int NAVIGATION_MODE_TABS = 2; // 0x2
-  }
-
-  public static class ActionBar.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public ActionBar.LayoutParams(@NonNull android.content.Context, android.util.AttributeSet);
-    ctor public ActionBar.LayoutParams(int, int);
-    ctor public ActionBar.LayoutParams(int, int, int);
-    ctor public ActionBar.LayoutParams(int);
-    ctor public ActionBar.LayoutParams(android.app.ActionBar.LayoutParams);
-    ctor public ActionBar.LayoutParams(android.view.ViewGroup.LayoutParams);
-    field public int gravity;
-  }
-
-  public static interface ActionBar.OnMenuVisibilityListener {
-    method public void onMenuVisibilityChanged(boolean);
-  }
-
-  @Deprecated public static interface ActionBar.OnNavigationListener {
-    method @Deprecated public boolean onNavigationItemSelected(int, long);
-  }
-
-  @Deprecated public abstract static class ActionBar.Tab {
-    ctor @Deprecated public ActionBar.Tab();
-    method @Deprecated public abstract CharSequence getContentDescription();
-    method @Deprecated public abstract android.view.View getCustomView();
-    method @Deprecated public abstract android.graphics.drawable.Drawable getIcon();
-    method @Deprecated public abstract int getPosition();
-    method @Deprecated public abstract Object getTag();
-    method @Deprecated public abstract CharSequence getText();
-    method @Deprecated public abstract void select();
-    method @Deprecated public abstract android.app.ActionBar.Tab setContentDescription(@StringRes int);
-    method @Deprecated public abstract android.app.ActionBar.Tab setContentDescription(CharSequence);
-    method @Deprecated public abstract android.app.ActionBar.Tab setCustomView(android.view.View);
-    method @Deprecated public abstract android.app.ActionBar.Tab setCustomView(@LayoutRes int);
-    method @Deprecated public abstract android.app.ActionBar.Tab setIcon(android.graphics.drawable.Drawable);
-    method @Deprecated public abstract android.app.ActionBar.Tab setIcon(@DrawableRes int);
-    method @Deprecated public abstract android.app.ActionBar.Tab setTabListener(android.app.ActionBar.TabListener);
-    method @Deprecated public abstract android.app.ActionBar.Tab setTag(Object);
-    method @Deprecated public abstract android.app.ActionBar.Tab setText(CharSequence);
-    method @Deprecated public abstract android.app.ActionBar.Tab setText(@StringRes int);
-    field @Deprecated public static final int INVALID_POSITION = -1; // 0xffffffff
-  }
-
-  @Deprecated public static interface ActionBar.TabListener {
-    method @Deprecated public void onTabReselected(android.app.ActionBar.Tab, android.app.FragmentTransaction);
-    method @Deprecated public void onTabSelected(android.app.ActionBar.Tab, android.app.FragmentTransaction);
-    method @Deprecated public void onTabUnselected(android.app.ActionBar.Tab, android.app.FragmentTransaction);
-  }
-
-  public class Activity extends android.view.ContextThemeWrapper implements android.content.ComponentCallbacks2 android.view.KeyEvent.Callback android.view.LayoutInflater.Factory2 android.view.View.OnCreateContextMenuListener android.view.Window.Callback {
-    ctor public Activity();
-    method public void addContentView(android.view.View, android.view.ViewGroup.LayoutParams);
-    method public void closeContextMenu();
-    method public void closeOptionsMenu();
-    method public android.app.PendingIntent createPendingResult(int, @NonNull android.content.Intent, int);
-    method @Deprecated public final void dismissDialog(int);
-    method public final void dismissKeyboardShortcutsHelper();
-    method public boolean dispatchGenericMotionEvent(android.view.MotionEvent);
-    method public boolean dispatchKeyEvent(android.view.KeyEvent);
-    method public boolean dispatchKeyShortcutEvent(android.view.KeyEvent);
-    method public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    method public boolean dispatchTouchEvent(android.view.MotionEvent);
-    method public boolean dispatchTrackballEvent(android.view.MotionEvent);
-    method public void dump(@NonNull String, @Nullable java.io.FileDescriptor, @NonNull java.io.PrintWriter, @Nullable String[]);
-    method @Deprecated public void enterPictureInPictureMode();
-    method public boolean enterPictureInPictureMode(@NonNull android.app.PictureInPictureParams);
-    method public <T extends android.view.View> T findViewById(@IdRes int);
-    method public void finish();
-    method public void finishActivity(int);
-    method @Deprecated public void finishActivityFromChild(@NonNull android.app.Activity, int);
-    method public void finishAffinity();
-    method public void finishAfterTransition();
-    method public void finishAndRemoveTask();
-    method @Deprecated public void finishFromChild(android.app.Activity);
-    method @Nullable public android.app.ActionBar getActionBar();
-    method public final android.app.Application getApplication();
-    method @Nullable public android.content.ComponentName getCallingActivity();
-    method @Nullable public String getCallingPackage();
-    method public int getChangingConfigurations();
-    method public android.content.ComponentName getComponentName();
-    method public android.transition.Scene getContentScene();
-    method public android.transition.TransitionManager getContentTransitionManager();
-    method @Nullable public android.view.View getCurrentFocus();
-    method @Deprecated public android.app.FragmentManager getFragmentManager();
-    method public android.content.Intent getIntent();
-    method @Nullable public Object getLastNonConfigurationInstance();
-    method @NonNull public android.view.LayoutInflater getLayoutInflater();
-    method @Deprecated public android.app.LoaderManager getLoaderManager();
-    method @NonNull public String getLocalClassName();
-    method public int getMaxNumPictureInPictureActions();
-    method public final android.media.session.MediaController getMediaController();
-    method @NonNull public android.view.MenuInflater getMenuInflater();
-    method public final android.app.Activity getParent();
-    method @Nullable public android.content.Intent getParentActivityIntent();
-    method public android.content.SharedPreferences getPreferences(int);
-    method @Nullable public android.net.Uri getReferrer();
-    method public int getRequestedOrientation();
-    method public final android.view.SearchEvent getSearchEvent();
-    method public int getTaskId();
-    method public final CharSequence getTitle();
-    method public final int getTitleColor();
-    method public android.app.VoiceInteractor getVoiceInteractor();
-    method public final int getVolumeControlStream();
-    method public android.view.Window getWindow();
-    method public android.view.WindowManager getWindowManager();
-    method public boolean hasWindowFocus();
-    method public void invalidateOptionsMenu();
-    method public boolean isActivityTransitionRunning();
-    method public boolean isChangingConfigurations();
-    method public final boolean isChild();
-    method public boolean isDestroyed();
-    method public boolean isFinishing();
-    method public boolean isImmersive();
-    method public boolean isInMultiWindowMode();
-    method public boolean isInPictureInPictureMode();
-    method public boolean isLocalVoiceInteractionSupported();
-    method public boolean isTaskRoot();
-    method public boolean isVoiceInteraction();
-    method public boolean isVoiceInteractionRoot();
-    method @Deprecated public final android.database.Cursor managedQuery(android.net.Uri, String[], String, String[], String);
-    method public boolean moveTaskToBack(boolean);
-    method public boolean navigateUpTo(android.content.Intent);
-    method @Deprecated public boolean navigateUpToFromChild(android.app.Activity, android.content.Intent);
-    method @CallSuper public void onActionModeFinished(android.view.ActionMode);
-    method @CallSuper public void onActionModeStarted(android.view.ActionMode);
-    method public void onActivityReenter(int, android.content.Intent);
-    method protected void onActivityResult(int, int, android.content.Intent);
-    method @Deprecated public void onAttachFragment(android.app.Fragment);
-    method public void onAttachedToWindow();
-    method public void onBackPressed();
-    method protected void onChildTitleChanged(android.app.Activity, CharSequence);
-    method public void onConfigurationChanged(@NonNull android.content.res.Configuration);
-    method public void onContentChanged();
-    method public boolean onContextItemSelected(@NonNull android.view.MenuItem);
-    method public void onContextMenuClosed(@NonNull android.view.Menu);
-    method @CallSuper @MainThread protected void onCreate(@Nullable android.os.Bundle);
-    method public void onCreate(@Nullable android.os.Bundle, @Nullable android.os.PersistableBundle);
-    method public void onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo);
-    method @Nullable public CharSequence onCreateDescription();
-    method @Deprecated protected android.app.Dialog onCreateDialog(int);
-    method @Deprecated @Nullable protected android.app.Dialog onCreateDialog(int, android.os.Bundle);
-    method public void onCreateNavigateUpTaskStack(android.app.TaskStackBuilder);
-    method public boolean onCreateOptionsMenu(android.view.Menu);
-    method public boolean onCreatePanelMenu(int, @NonNull android.view.Menu);
-    method @Nullable public android.view.View onCreatePanelView(int);
-    method @Deprecated public boolean onCreateThumbnail(android.graphics.Bitmap, android.graphics.Canvas);
-    method @Nullable public android.view.View onCreateView(@NonNull String, @NonNull android.content.Context, @NonNull android.util.AttributeSet);
-    method @Nullable public android.view.View onCreateView(@Nullable android.view.View, @NonNull String, @NonNull android.content.Context, @NonNull android.util.AttributeSet);
-    method @CallSuper protected void onDestroy();
-    method public void onDetachedFromWindow();
-    method public void onEnterAnimationComplete();
-    method public boolean onGenericMotionEvent(android.view.MotionEvent);
-    method public void onGetDirectActions(@NonNull android.os.CancellationSignal, @NonNull java.util.function.Consumer<java.util.List<android.app.DirectAction>>);
-    method public boolean onKeyDown(int, android.view.KeyEvent);
-    method public boolean onKeyLongPress(int, android.view.KeyEvent);
-    method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
-    method public boolean onKeyShortcut(int, android.view.KeyEvent);
-    method public boolean onKeyUp(int, android.view.KeyEvent);
-    method public void onLocalVoiceInteractionStarted();
-    method public void onLocalVoiceInteractionStopped();
-    method public void onLowMemory();
-    method public boolean onMenuItemSelected(int, @NonNull android.view.MenuItem);
-    method public boolean onMenuOpened(int, @NonNull android.view.Menu);
-    method public void onMultiWindowModeChanged(boolean, android.content.res.Configuration);
-    method @Deprecated public void onMultiWindowModeChanged(boolean);
-    method public boolean onNavigateUp();
-    method @Deprecated public boolean onNavigateUpFromChild(android.app.Activity);
-    method protected void onNewIntent(android.content.Intent);
-    method public boolean onOptionsItemSelected(@NonNull android.view.MenuItem);
-    method public void onOptionsMenuClosed(android.view.Menu);
-    method public void onPanelClosed(int, @NonNull android.view.Menu);
-    method @CallSuper protected void onPause();
-    method public void onPerformDirectAction(@NonNull String, @NonNull android.os.Bundle, @NonNull android.os.CancellationSignal, @NonNull java.util.function.Consumer<android.os.Bundle>);
-    method public void onPictureInPictureModeChanged(boolean, android.content.res.Configuration);
-    method @Deprecated public void onPictureInPictureModeChanged(boolean);
-    method public boolean onPictureInPictureRequested();
-    method @CallSuper protected void onPostCreate(@Nullable android.os.Bundle);
-    method public void onPostCreate(@Nullable android.os.Bundle, @Nullable android.os.PersistableBundle);
-    method @CallSuper protected void onPostResume();
-    method @Deprecated protected void onPrepareDialog(int, android.app.Dialog);
-    method @Deprecated protected void onPrepareDialog(int, android.app.Dialog, android.os.Bundle);
-    method public void onPrepareNavigateUpTaskStack(android.app.TaskStackBuilder);
-    method public boolean onPrepareOptionsMenu(android.view.Menu);
-    method public boolean onPreparePanel(int, @Nullable android.view.View, @NonNull android.view.Menu);
-    method public void onProvideAssistContent(android.app.assist.AssistContent);
-    method public void onProvideAssistData(android.os.Bundle);
-    method public android.net.Uri onProvideReferrer();
-    method public void onRequestPermissionsResult(int, @NonNull String[], @NonNull int[]);
-    method @CallSuper protected void onRestart();
-    method protected void onRestoreInstanceState(@NonNull android.os.Bundle);
-    method public void onRestoreInstanceState(@Nullable android.os.Bundle, @Nullable android.os.PersistableBundle);
-    method @CallSuper protected void onResume();
-    method public Object onRetainNonConfigurationInstance();
-    method protected void onSaveInstanceState(@NonNull android.os.Bundle);
-    method public void onSaveInstanceState(@NonNull android.os.Bundle, @NonNull android.os.PersistableBundle);
-    method public boolean onSearchRequested(@Nullable android.view.SearchEvent);
-    method public boolean onSearchRequested();
-    method @CallSuper protected void onStart();
-    method @Deprecated public void onStateNotSaved();
-    method @CallSuper protected void onStop();
-    method protected void onTitleChanged(CharSequence, int);
-    method public void onTopResumedActivityChanged(boolean);
-    method public boolean onTouchEvent(android.view.MotionEvent);
-    method public boolean onTrackballEvent(android.view.MotionEvent);
-    method public void onTrimMemory(int);
-    method public void onUserInteraction();
-    method protected void onUserLeaveHint();
-    method @Deprecated @CallSuper public void onVisibleBehindCanceled();
-    method public void onWindowAttributesChanged(android.view.WindowManager.LayoutParams);
-    method public void onWindowFocusChanged(boolean);
-    method @Nullable public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback);
-    method @Nullable public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback, int);
-    method public void openContextMenu(android.view.View);
-    method public void openOptionsMenu();
-    method public void overridePendingTransition(int, int);
-    method public void postponeEnterTransition();
-    method public void recreate();
-    method public void registerActivityLifecycleCallbacks(@NonNull android.app.Application.ActivityLifecycleCallbacks);
-    method public void registerForContextMenu(android.view.View);
-    method public boolean releaseInstance();
-    method @Deprecated public final void removeDialog(int);
-    method public void reportFullyDrawn();
-    method public android.view.DragAndDropPermissions requestDragAndDropPermissions(android.view.DragEvent);
-    method public final void requestPermissions(@NonNull String[], int);
-    method public final void requestShowKeyboardShortcuts();
-    method @Deprecated public boolean requestVisibleBehind(boolean);
-    method public final boolean requestWindowFeature(int);
-    method @NonNull public final <T extends android.view.View> T requireViewById(@IdRes int);
-    method public final void runOnUiThread(Runnable);
-    method public void setActionBar(@Nullable android.widget.Toolbar);
-    method public void setContentTransitionManager(android.transition.TransitionManager);
-    method public void setContentView(@LayoutRes int);
-    method public void setContentView(android.view.View);
-    method public void setContentView(android.view.View, android.view.ViewGroup.LayoutParams);
-    method public final void setDefaultKeyMode(int);
-    method public void setEnterSharedElementCallback(android.app.SharedElementCallback);
-    method public void setExitSharedElementCallback(android.app.SharedElementCallback);
-    method public final void setFeatureDrawable(int, android.graphics.drawable.Drawable);
-    method public final void setFeatureDrawableAlpha(int, int);
-    method public final void setFeatureDrawableResource(int, @DrawableRes int);
-    method public final void setFeatureDrawableUri(int, android.net.Uri);
-    method public void setFinishOnTouchOutside(boolean);
-    method public void setImmersive(boolean);
-    method public void setInheritShowWhenLocked(boolean);
-    method public void setIntent(android.content.Intent);
-    method public void setLocusContext(@Nullable android.content.LocusId, @Nullable android.os.Bundle);
-    method public final void setMediaController(android.media.session.MediaController);
-    method public void setPictureInPictureParams(@NonNull android.app.PictureInPictureParams);
-    method @Deprecated public final void setProgress(int);
-    method @Deprecated public final void setProgressBarIndeterminate(boolean);
-    method @Deprecated public final void setProgressBarIndeterminateVisibility(boolean);
-    method @Deprecated public final void setProgressBarVisibility(boolean);
-    method public void setRequestedOrientation(int);
-    method public final void setResult(int);
-    method public final void setResult(int, android.content.Intent);
-    method @Deprecated public final void setSecondaryProgress(int);
-    method public void setShowWhenLocked(boolean);
-    method public void setTaskDescription(android.app.ActivityManager.TaskDescription);
-    method public void setTitle(CharSequence);
-    method public void setTitle(int);
-    method @Deprecated public void setTitleColor(int);
-    method public boolean setTranslucent(boolean);
-    method public void setTurnScreenOn(boolean);
-    method public void setVisible(boolean);
-    method public final void setVolumeControlStream(int);
-    method public void setVrModeEnabled(boolean, @NonNull android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public boolean shouldShowRequestPermissionRationale(@NonNull String);
-    method public boolean shouldUpRecreateTask(android.content.Intent);
-    method public boolean showAssist(android.os.Bundle);
-    method @Deprecated public final void showDialog(int);
-    method @Deprecated public final boolean showDialog(int, android.os.Bundle);
-    method public void showLockTaskEscapeMessage();
-    method @Nullable public android.view.ActionMode startActionMode(android.view.ActionMode.Callback);
-    method @Nullable public android.view.ActionMode startActionMode(android.view.ActionMode.Callback, int);
-    method public void startActivityForResult(@RequiresPermission android.content.Intent, int);
-    method public void startActivityForResult(@RequiresPermission android.content.Intent, int, @Nullable android.os.Bundle);
-    method @Deprecated public void startActivityFromChild(@NonNull android.app.Activity, @RequiresPermission android.content.Intent, int);
-    method @Deprecated public void startActivityFromChild(@NonNull android.app.Activity, @RequiresPermission android.content.Intent, int, @Nullable android.os.Bundle);
-    method @Deprecated public void startActivityFromFragment(@NonNull android.app.Fragment, @RequiresPermission android.content.Intent, int);
-    method @Deprecated public void startActivityFromFragment(@NonNull android.app.Fragment, @RequiresPermission android.content.Intent, int, @Nullable android.os.Bundle);
-    method public boolean startActivityIfNeeded(@NonNull @RequiresPermission android.content.Intent, int);
-    method public boolean startActivityIfNeeded(@NonNull @RequiresPermission android.content.Intent, int, @Nullable android.os.Bundle);
-    method public void startIntentSenderForResult(android.content.IntentSender, int, @Nullable android.content.Intent, int, int, int) throws android.content.IntentSender.SendIntentException;
-    method public void startIntentSenderForResult(android.content.IntentSender, int, @Nullable android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
-    method @Deprecated public void startIntentSenderFromChild(android.app.Activity, android.content.IntentSender, int, android.content.Intent, int, int, int) throws android.content.IntentSender.SendIntentException;
-    method @Deprecated public void startIntentSenderFromChild(android.app.Activity, android.content.IntentSender, int, android.content.Intent, int, int, int, @Nullable android.os.Bundle) throws android.content.IntentSender.SendIntentException;
-    method public void startLocalVoiceInteraction(android.os.Bundle);
-    method public void startLockTask();
-    method @Deprecated public void startManagingCursor(android.database.Cursor);
-    method public boolean startNextMatchingActivity(@NonNull @RequiresPermission android.content.Intent);
-    method public boolean startNextMatchingActivity(@NonNull @RequiresPermission android.content.Intent, @Nullable android.os.Bundle);
-    method public void startPostponedEnterTransition();
-    method public void startSearch(@Nullable String, boolean, @Nullable android.os.Bundle, boolean);
-    method public void stopLocalVoiceInteraction();
-    method public void stopLockTask();
-    method @Deprecated public void stopManagingCursor(android.database.Cursor);
-    method public void takeKeyEvents(boolean);
-    method public void triggerSearch(String, @Nullable android.os.Bundle);
-    method public void unregisterActivityLifecycleCallbacks(@NonNull android.app.Application.ActivityLifecycleCallbacks);
-    method public void unregisterForContextMenu(android.view.View);
-    field public static final int DEFAULT_KEYS_DIALER = 1; // 0x1
-    field public static final int DEFAULT_KEYS_DISABLE = 0; // 0x0
-    field public static final int DEFAULT_KEYS_SEARCH_GLOBAL = 4; // 0x4
-    field public static final int DEFAULT_KEYS_SEARCH_LOCAL = 3; // 0x3
-    field public static final int DEFAULT_KEYS_SHORTCUT = 2; // 0x2
-    field protected static final int[] FOCUSED_STATE_SET;
-    field public static final int RESULT_CANCELED = 0; // 0x0
-    field public static final int RESULT_FIRST_USER = 1; // 0x1
-    field public static final int RESULT_OK = -1; // 0xffffffff
-  }
-
-  @Deprecated public class ActivityGroup extends android.app.Activity {
-    ctor @Deprecated public ActivityGroup();
-    ctor @Deprecated public ActivityGroup(boolean);
-    method @Deprecated public android.app.Activity getCurrentActivity();
-    method @Deprecated public final android.app.LocalActivityManager getLocalActivityManager();
-  }
-
-  public class ActivityManager {
-    method public int addAppTask(@NonNull android.app.Activity, @NonNull android.content.Intent, @Nullable android.app.ActivityManager.TaskDescription, @NonNull android.graphics.Bitmap);
-    method public void appNotResponding(@NonNull String);
-    method public boolean clearApplicationUserData();
-    method public void clearWatchHeapLimit();
-    method @RequiresPermission(android.Manifest.permission.DUMP) public void dumpPackageState(java.io.FileDescriptor, String);
-    method public android.util.Size getAppTaskThumbnailSize();
-    method public java.util.List<android.app.ActivityManager.AppTask> getAppTasks();
-    method public android.content.pm.ConfigurationInfo getDeviceConfigurationInfo();
-    method @NonNull public java.util.List<android.app.ApplicationExitInfo> getHistoricalProcessExitReasons(@Nullable String, @IntRange(from=0) int, @IntRange(from=0) int);
-    method public int getLargeMemoryClass();
-    method public int getLauncherLargeIconDensity();
-    method public int getLauncherLargeIconSize();
-    method public int getLockTaskModeState();
-    method public int getMemoryClass();
-    method public void getMemoryInfo(android.app.ActivityManager.MemoryInfo);
-    method public static void getMyMemoryState(android.app.ActivityManager.RunningAppProcessInfo);
-    method public android.os.Debug.MemoryInfo[] getProcessMemoryInfo(int[]);
-    method public java.util.List<android.app.ActivityManager.ProcessErrorStateInfo> getProcessesInErrorState();
-    method @Deprecated public java.util.List<android.app.ActivityManager.RecentTaskInfo> getRecentTasks(int, int) throws java.lang.SecurityException;
-    method public java.util.List<android.app.ActivityManager.RunningAppProcessInfo> getRunningAppProcesses();
-    method public android.app.PendingIntent getRunningServiceControlPanel(android.content.ComponentName) throws java.lang.SecurityException;
-    method @Deprecated public java.util.List<android.app.ActivityManager.RunningServiceInfo> getRunningServices(int) throws java.lang.SecurityException;
-    method @Deprecated public java.util.List<android.app.ActivityManager.RunningTaskInfo> getRunningTasks(int) throws java.lang.SecurityException;
-    method public boolean isActivityStartAllowedOnDisplay(@NonNull android.content.Context, int, @NonNull android.content.Intent);
-    method public boolean isBackgroundRestricted();
-    method @Deprecated public boolean isInLockTaskMode();
-    method public static boolean isLowMemoryKillReportSupported();
-    method public boolean isLowRamDevice();
-    method @Deprecated public static boolean isRunningInTestHarness();
-    method public static boolean isRunningInUserTestHarness();
-    method public static boolean isUserAMonkey();
-    method @RequiresPermission(android.Manifest.permission.KILL_BACKGROUND_PROCESSES) public void killBackgroundProcesses(String);
-    method @RequiresPermission(android.Manifest.permission.REORDER_TASKS) public void moveTaskToFront(int, int);
-    method @RequiresPermission(android.Manifest.permission.REORDER_TASKS) public void moveTaskToFront(int, int, android.os.Bundle);
-    method @Deprecated public void restartPackage(String);
-    method public void setProcessStateSummary(@Nullable byte[]);
-    method public static void setVrThread(int);
-    method public void setWatchHeapLimit(long);
-    field public static final String ACTION_REPORT_HEAP_LIMIT = "android.app.action.REPORT_HEAP_LIMIT";
-    field public static final int LOCK_TASK_MODE_LOCKED = 1; // 0x1
-    field public static final int LOCK_TASK_MODE_NONE = 0; // 0x0
-    field public static final int LOCK_TASK_MODE_PINNED = 2; // 0x2
-    field public static final String META_HOME_ALTERNATE = "android.app.home.alternate";
-    field public static final int MOVE_TASK_NO_USER_ACTION = 2; // 0x2
-    field public static final int MOVE_TASK_WITH_HOME = 1; // 0x1
-    field public static final int RECENT_IGNORE_UNAVAILABLE = 2; // 0x2
-    field public static final int RECENT_WITH_EXCLUDED = 1; // 0x1
-  }
-
-  public static class ActivityManager.AppTask {
-    method public void finishAndRemoveTask();
-    method public android.app.ActivityManager.RecentTaskInfo getTaskInfo();
-    method public void moveToFront();
-    method public void setExcludeFromRecents(boolean);
-    method public void startActivity(android.content.Context, android.content.Intent, android.os.Bundle);
-  }
-
-  public static class ActivityManager.MemoryInfo implements android.os.Parcelable {
-    ctor public ActivityManager.MemoryInfo();
-    method public int describeContents();
-    method public void readFromParcel(android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.ActivityManager.MemoryInfo> CREATOR;
-    field public long availMem;
-    field public boolean lowMemory;
-    field public long threshold;
-    field public long totalMem;
-  }
-
-  public static class ActivityManager.ProcessErrorStateInfo implements android.os.Parcelable {
-    ctor public ActivityManager.ProcessErrorStateInfo();
-    method public int describeContents();
-    method public void readFromParcel(android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CRASHED = 1; // 0x1
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.ActivityManager.ProcessErrorStateInfo> CREATOR;
-    field public static final int NOT_RESPONDING = 2; // 0x2
-    field public static final int NO_ERROR = 0; // 0x0
-    field public int condition;
-    field public byte[] crashData;
-    field public String longMsg;
-    field public int pid;
-    field public String processName;
-    field public String shortMsg;
-    field public String stackTrace;
-    field public String tag;
-    field public int uid;
-  }
-
-  public static class ActivityManager.RecentTaskInfo extends android.app.TaskInfo implements android.os.Parcelable {
-    ctor public ActivityManager.RecentTaskInfo();
-    method public int describeContents();
-    method public void readFromParcel(android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.ActivityManager.RecentTaskInfo> CREATOR;
-    field @Deprecated public int affiliatedTaskId;
-    field @Deprecated public CharSequence description;
-    field @Deprecated public int id;
-    field @Deprecated public int persistentId;
-  }
-
-  public static class ActivityManager.RunningAppProcessInfo implements android.os.Parcelable {
-    ctor public ActivityManager.RunningAppProcessInfo();
-    ctor public ActivityManager.RunningAppProcessInfo(String, int, String[]);
-    method public int describeContents();
-    method public void readFromParcel(android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.ActivityManager.RunningAppProcessInfo> CREATOR;
-    field @Deprecated public static final int IMPORTANCE_BACKGROUND = 400; // 0x190
-    field public static final int IMPORTANCE_CACHED = 400; // 0x190
-    field public static final int IMPORTANCE_CANT_SAVE_STATE = 350; // 0x15e
-    field @Deprecated public static final int IMPORTANCE_EMPTY = 500; // 0x1f4
-    field public static final int IMPORTANCE_FOREGROUND = 100; // 0x64
-    field public static final int IMPORTANCE_FOREGROUND_SERVICE = 125; // 0x7d
-    field public static final int IMPORTANCE_GONE = 1000; // 0x3e8
-    field public static final int IMPORTANCE_PERCEPTIBLE = 230; // 0xe6
-    field public static final int IMPORTANCE_PERCEPTIBLE_PRE_26 = 130; // 0x82
-    field public static final int IMPORTANCE_SERVICE = 300; // 0x12c
-    field public static final int IMPORTANCE_TOP_SLEEPING = 325; // 0x145
-    field @Deprecated public static final int IMPORTANCE_TOP_SLEEPING_PRE_28 = 150; // 0x96
-    field public static final int IMPORTANCE_VISIBLE = 200; // 0xc8
-    field public static final int REASON_PROVIDER_IN_USE = 1; // 0x1
-    field public static final int REASON_SERVICE_IN_USE = 2; // 0x2
-    field public static final int REASON_UNKNOWN = 0; // 0x0
-    field public int importance;
-    field public int importanceReasonCode;
-    field public android.content.ComponentName importanceReasonComponent;
-    field public int importanceReasonPid;
-    field public int lastTrimLevel;
-    field public int lru;
-    field public int pid;
-    field public String[] pkgList;
-    field public String processName;
-    field public int uid;
-  }
-
-  public static class ActivityManager.RunningServiceInfo implements android.os.Parcelable {
-    ctor public ActivityManager.RunningServiceInfo();
-    method public int describeContents();
-    method public void readFromParcel(android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.ActivityManager.RunningServiceInfo> CREATOR;
-    field public static final int FLAG_FOREGROUND = 2; // 0x2
-    field public static final int FLAG_PERSISTENT_PROCESS = 8; // 0x8
-    field public static final int FLAG_STARTED = 1; // 0x1
-    field public static final int FLAG_SYSTEM_PROCESS = 4; // 0x4
-    field public long activeSince;
-    field public int clientCount;
-    field public int clientLabel;
-    field public String clientPackage;
-    field public int crashCount;
-    field public int flags;
-    field public boolean foreground;
-    field public long lastActivityTime;
-    field public int pid;
-    field public String process;
-    field public long restarting;
-    field public android.content.ComponentName service;
-    field public boolean started;
-    field public int uid;
-  }
-
-  public static class ActivityManager.RunningTaskInfo extends android.app.TaskInfo implements android.os.Parcelable {
-    ctor public ActivityManager.RunningTaskInfo();
-    method public int describeContents();
-    method public void readFromParcel(android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.ActivityManager.RunningTaskInfo> CREATOR;
-    field @Deprecated public CharSequence description;
-    field @Deprecated public int id;
-    field @Deprecated public int numRunning;
-    field @Deprecated public android.graphics.Bitmap thumbnail;
-  }
-
-  public static class ActivityManager.TaskDescription implements android.os.Parcelable {
-    ctor public ActivityManager.TaskDescription(String, @DrawableRes int, int);
-    ctor public ActivityManager.TaskDescription(String, @DrawableRes int);
-    ctor public ActivityManager.TaskDescription(String);
-    ctor public ActivityManager.TaskDescription();
-    ctor @Deprecated public ActivityManager.TaskDescription(String, android.graphics.Bitmap, int);
-    ctor @Deprecated public ActivityManager.TaskDescription(String, android.graphics.Bitmap);
-    ctor public ActivityManager.TaskDescription(android.app.ActivityManager.TaskDescription);
-    method public int describeContents();
-    method @Deprecated public android.graphics.Bitmap getIcon();
-    method public String getLabel();
-    method public int getPrimaryColor();
-    method public void readFromParcel(android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.ActivityManager.TaskDescription> CREATOR;
-  }
-
-  public class ActivityOptions {
-    method @Nullable public android.graphics.Rect getLaunchBounds();
-    method public int getLaunchDisplayId();
-    method public boolean getLockTaskMode();
-    method public static android.app.ActivityOptions makeBasic();
-    method public static android.app.ActivityOptions makeClipRevealAnimation(android.view.View, int, int, int, int);
-    method public static android.app.ActivityOptions makeCustomAnimation(android.content.Context, int, int);
-    method public static android.app.ActivityOptions makeScaleUpAnimation(android.view.View, int, int, int, int);
-    method public static android.app.ActivityOptions makeSceneTransitionAnimation(android.app.Activity, android.view.View, String);
-    method @java.lang.SafeVarargs public static android.app.ActivityOptions makeSceneTransitionAnimation(android.app.Activity, android.util.Pair<android.view.View,java.lang.String>...);
-    method public static android.app.ActivityOptions makeTaskLaunchBehind();
-    method public static android.app.ActivityOptions makeThumbnailScaleUpAnimation(android.view.View, android.graphics.Bitmap, int, int);
-    method public void requestUsageTimeReport(android.app.PendingIntent);
-    method public android.app.ActivityOptions setAppVerificationBundle(android.os.Bundle);
-    method public android.app.ActivityOptions setLaunchBounds(@Nullable android.graphics.Rect);
-    method public android.app.ActivityOptions setLaunchDisplayId(int);
-    method public android.app.ActivityOptions setLockTaskEnabled(boolean);
-    method public android.os.Bundle toBundle();
-    method public void update(android.app.ActivityOptions);
-    field public static final String EXTRA_USAGE_TIME_REPORT = "android.activity.usage_time";
-    field public static final String EXTRA_USAGE_TIME_REPORT_PACKAGES = "android.usage_time_packages";
-  }
-
-  public class AlarmManager {
-    method public void cancel(android.app.PendingIntent);
-    method public void cancel(android.app.AlarmManager.OnAlarmListener);
-    method public android.app.AlarmManager.AlarmClockInfo getNextAlarmClock();
-    method public void set(int, long, android.app.PendingIntent);
-    method public void set(int, long, String, android.app.AlarmManager.OnAlarmListener, android.os.Handler);
-    method public void setAlarmClock(android.app.AlarmManager.AlarmClockInfo, android.app.PendingIntent);
-    method public void setAndAllowWhileIdle(int, long, android.app.PendingIntent);
-    method public void setExact(int, long, android.app.PendingIntent);
-    method public void setExact(int, long, String, android.app.AlarmManager.OnAlarmListener, android.os.Handler);
-    method public void setExactAndAllowWhileIdle(int, long, android.app.PendingIntent);
-    method public void setInexactRepeating(int, long, long, android.app.PendingIntent);
-    method public void setRepeating(int, long, long, android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.SET_TIME) public void setTime(long);
-    method @RequiresPermission(android.Manifest.permission.SET_TIME_ZONE) public void setTimeZone(String);
-    method public void setWindow(int, long, long, android.app.PendingIntent);
-    method public void setWindow(int, long, long, String, android.app.AlarmManager.OnAlarmListener, android.os.Handler);
-    field public static final String ACTION_NEXT_ALARM_CLOCK_CHANGED = "android.app.action.NEXT_ALARM_CLOCK_CHANGED";
-    field public static final int ELAPSED_REALTIME = 3; // 0x3
-    field public static final int ELAPSED_REALTIME_WAKEUP = 2; // 0x2
-    field public static final long INTERVAL_DAY = 86400000L; // 0x5265c00L
-    field public static final long INTERVAL_FIFTEEN_MINUTES = 900000L; // 0xdbba0L
-    field public static final long INTERVAL_HALF_DAY = 43200000L; // 0x2932e00L
-    field public static final long INTERVAL_HALF_HOUR = 1800000L; // 0x1b7740L
-    field public static final long INTERVAL_HOUR = 3600000L; // 0x36ee80L
-    field public static final int RTC = 1; // 0x1
-    field public static final int RTC_WAKEUP = 0; // 0x0
-  }
-
-  public static final class AlarmManager.AlarmClockInfo implements android.os.Parcelable {
-    ctor public AlarmManager.AlarmClockInfo(long, android.app.PendingIntent);
-    method public int describeContents();
-    method public android.app.PendingIntent getShowIntent();
-    method public long getTriggerTime();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AlarmManager.AlarmClockInfo> CREATOR;
-  }
-
-  public static interface AlarmManager.OnAlarmListener {
-    method public void onAlarm();
-  }
-
-  public class AlertDialog extends android.app.Dialog implements android.content.DialogInterface {
-    ctor protected AlertDialog(android.content.Context);
-    ctor protected AlertDialog(android.content.Context, boolean, android.content.DialogInterface.OnCancelListener);
-    ctor protected AlertDialog(android.content.Context, @StyleRes int);
-    method public android.widget.Button getButton(int);
-    method public android.widget.ListView getListView();
-    method public void setButton(int, CharSequence, android.os.Message);
-    method public void setButton(int, CharSequence, android.content.DialogInterface.OnClickListener);
-    method @Deprecated public void setButton(CharSequence, android.os.Message);
-    method @Deprecated public void setButton(CharSequence, android.content.DialogInterface.OnClickListener);
-    method @Deprecated public void setButton2(CharSequence, android.os.Message);
-    method @Deprecated public void setButton2(CharSequence, android.content.DialogInterface.OnClickListener);
-    method @Deprecated public void setButton3(CharSequence, android.os.Message);
-    method @Deprecated public void setButton3(CharSequence, android.content.DialogInterface.OnClickListener);
-    method public void setCustomTitle(android.view.View);
-    method public void setIcon(@DrawableRes int);
-    method public void setIcon(android.graphics.drawable.Drawable);
-    method public void setIconAttribute(@AttrRes int);
-    method public void setInverseBackgroundForced(boolean);
-    method public void setMessage(CharSequence);
-    method public void setView(android.view.View);
-    method public void setView(android.view.View, int, int, int, int);
-    field @Deprecated public static final int THEME_DEVICE_DEFAULT_DARK = 4; // 0x4
-    field @Deprecated public static final int THEME_DEVICE_DEFAULT_LIGHT = 5; // 0x5
-    field @Deprecated public static final int THEME_HOLO_DARK = 2; // 0x2
-    field @Deprecated public static final int THEME_HOLO_LIGHT = 3; // 0x3
-    field @Deprecated public static final int THEME_TRADITIONAL = 1; // 0x1
-  }
-
-  public static class AlertDialog.Builder {
-    ctor public AlertDialog.Builder(android.content.Context);
-    ctor public AlertDialog.Builder(android.content.Context, int);
-    method public android.app.AlertDialog create();
-    method public android.content.Context getContext();
-    method public android.app.AlertDialog.Builder setAdapter(android.widget.ListAdapter, android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setCancelable(boolean);
-    method public android.app.AlertDialog.Builder setCursor(android.database.Cursor, android.content.DialogInterface.OnClickListener, String);
-    method public android.app.AlertDialog.Builder setCustomTitle(android.view.View);
-    method public android.app.AlertDialog.Builder setIcon(@DrawableRes int);
-    method public android.app.AlertDialog.Builder setIcon(android.graphics.drawable.Drawable);
-    method public android.app.AlertDialog.Builder setIconAttribute(@AttrRes int);
-    method @Deprecated public android.app.AlertDialog.Builder setInverseBackgroundForced(boolean);
-    method public android.app.AlertDialog.Builder setItems(@ArrayRes int, android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setItems(CharSequence[], android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setMessage(@StringRes int);
-    method public android.app.AlertDialog.Builder setMessage(CharSequence);
-    method public android.app.AlertDialog.Builder setMultiChoiceItems(@ArrayRes int, boolean[], android.content.DialogInterface.OnMultiChoiceClickListener);
-    method public android.app.AlertDialog.Builder setMultiChoiceItems(CharSequence[], boolean[], android.content.DialogInterface.OnMultiChoiceClickListener);
-    method public android.app.AlertDialog.Builder setMultiChoiceItems(android.database.Cursor, String, String, android.content.DialogInterface.OnMultiChoiceClickListener);
-    method public android.app.AlertDialog.Builder setNegativeButton(@StringRes int, android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setNegativeButton(CharSequence, android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setNeutralButton(@StringRes int, android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setNeutralButton(CharSequence, android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setOnCancelListener(android.content.DialogInterface.OnCancelListener);
-    method public android.app.AlertDialog.Builder setOnDismissListener(android.content.DialogInterface.OnDismissListener);
-    method public android.app.AlertDialog.Builder setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener);
-    method public android.app.AlertDialog.Builder setOnKeyListener(android.content.DialogInterface.OnKeyListener);
-    method public android.app.AlertDialog.Builder setPositiveButton(@StringRes int, android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setPositiveButton(CharSequence, android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setSingleChoiceItems(@ArrayRes int, int, android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setSingleChoiceItems(android.database.Cursor, int, String, android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setSingleChoiceItems(CharSequence[], int, android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setSingleChoiceItems(android.widget.ListAdapter, int, android.content.DialogInterface.OnClickListener);
-    method public android.app.AlertDialog.Builder setTitle(@StringRes int);
-    method public android.app.AlertDialog.Builder setTitle(CharSequence);
-    method public android.app.AlertDialog.Builder setView(int);
-    method public android.app.AlertDialog.Builder setView(android.view.View);
-    method public android.app.AlertDialog show();
-  }
-
-  @Deprecated public class AliasActivity extends android.app.Activity {
-    ctor @Deprecated public AliasActivity();
-  }
-
-  public class AppComponentFactory {
-    ctor public AppComponentFactory();
-    method @NonNull public android.app.Activity instantiateActivity(@NonNull ClassLoader, @NonNull String, @Nullable android.content.Intent) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method @NonNull public android.app.Application instantiateApplication(@NonNull ClassLoader, @NonNull String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method @NonNull public ClassLoader instantiateClassLoader(@NonNull ClassLoader, @NonNull android.content.pm.ApplicationInfo);
-    method @NonNull public android.content.ContentProvider instantiateProvider(@NonNull ClassLoader, @NonNull String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method @NonNull public android.content.BroadcastReceiver instantiateReceiver(@NonNull ClassLoader, @NonNull String, @Nullable android.content.Intent) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method @NonNull public android.app.Service instantiateService(@NonNull ClassLoader, @NonNull String, @Nullable android.content.Intent) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-  }
-
-  public class AppOpsManager {
-    method @Deprecated public int checkOp(@NonNull String, int, @NonNull String);
-    method @Deprecated public int checkOpNoThrow(@NonNull String, int, @NonNull String);
-    method @Deprecated public void checkPackage(int, @NonNull String);
-    method @Deprecated public void finishOp(@NonNull String, int, @NonNull String);
-    method public void finishOp(@NonNull String, int, @NonNull String, @Nullable String);
-    method public boolean isOpActive(@NonNull String, int, @NonNull String);
-    method @Deprecated public int noteOp(@NonNull String, int, @NonNull String);
-    method public int noteOp(@NonNull String, int, @Nullable String, @Nullable String, @Nullable String);
-    method @Deprecated public int noteOpNoThrow(@NonNull String, int, @NonNull String);
-    method public int noteOpNoThrow(@NonNull String, int, @NonNull String, @Nullable String, @Nullable String);
-    method @Deprecated public int noteProxyOp(@NonNull String, @NonNull String);
-    method public int noteProxyOp(@NonNull String, @Nullable String, int, @Nullable String, @Nullable String);
-    method @Deprecated public int noteProxyOpNoThrow(@NonNull String, @NonNull String);
-    method @Deprecated public int noteProxyOpNoThrow(@NonNull String, @Nullable String, int);
-    method public int noteProxyOpNoThrow(@NonNull String, @Nullable String, int, @Nullable String, @Nullable String);
-    method @Nullable public static String permissionToOp(@NonNull String);
-    method public void setOnOpNotedCallback(@Nullable java.util.concurrent.Executor, @Nullable android.app.AppOpsManager.OnOpNotedCallback);
-    method @Deprecated public int startOp(@NonNull String, int, @NonNull String);
-    method public int startOp(@NonNull String, int, @Nullable String, @Nullable String, @Nullable String);
-    method @Deprecated public int startOpNoThrow(@NonNull String, int, @NonNull String);
-    method public int startOpNoThrow(@NonNull String, int, @NonNull String, @NonNull String, @Nullable String);
-    method public void startWatchingActive(@NonNull String[], @NonNull java.util.concurrent.Executor, @NonNull android.app.AppOpsManager.OnOpActiveChangedListener);
-    method public void startWatchingMode(@NonNull String, @Nullable String, @NonNull android.app.AppOpsManager.OnOpChangedListener);
-    method public void startWatchingMode(@NonNull String, @Nullable String, int, @NonNull android.app.AppOpsManager.OnOpChangedListener);
-    method public void stopWatchingActive(@NonNull android.app.AppOpsManager.OnOpActiveChangedListener);
-    method public void stopWatchingMode(@NonNull android.app.AppOpsManager.OnOpChangedListener);
-    method public int unsafeCheckOp(@NonNull String, int, @NonNull String);
-    method public int unsafeCheckOpNoThrow(@NonNull String, int, @NonNull String);
-    method public int unsafeCheckOpRaw(@NonNull String, int, @NonNull String);
-    method public int unsafeCheckOpRawNoThrow(@NonNull String, int, @NonNull String);
-    field public static final int MODE_ALLOWED = 0; // 0x0
-    field public static final int MODE_DEFAULT = 3; // 0x3
-    field public static final int MODE_ERRORED = 2; // 0x2
-    field public static final int MODE_FOREGROUND = 4; // 0x4
-    field public static final int MODE_IGNORED = 1; // 0x1
-    field public static final String OPSTR_ADD_VOICEMAIL = "android:add_voicemail";
-    field public static final String OPSTR_ANSWER_PHONE_CALLS = "android:answer_phone_calls";
-    field public static final String OPSTR_BODY_SENSORS = "android:body_sensors";
-    field public static final String OPSTR_CALL_PHONE = "android:call_phone";
-    field public static final String OPSTR_CAMERA = "android:camera";
-    field public static final String OPSTR_COARSE_LOCATION = "android:coarse_location";
-    field public static final String OPSTR_FINE_LOCATION = "android:fine_location";
-    field public static final String OPSTR_GET_USAGE_STATS = "android:get_usage_stats";
-    field public static final String OPSTR_MOCK_LOCATION = "android:mock_location";
-    field public static final String OPSTR_MONITOR_HIGH_POWER_LOCATION = "android:monitor_location_high_power";
-    field public static final String OPSTR_MONITOR_LOCATION = "android:monitor_location";
-    field public static final String OPSTR_PICTURE_IN_PICTURE = "android:picture_in_picture";
-    field public static final String OPSTR_PROCESS_OUTGOING_CALLS = "android:process_outgoing_calls";
-    field public static final String OPSTR_READ_CALENDAR = "android:read_calendar";
-    field public static final String OPSTR_READ_CALL_LOG = "android:read_call_log";
-    field public static final String OPSTR_READ_CELL_BROADCASTS = "android:read_cell_broadcasts";
-    field public static final String OPSTR_READ_CONTACTS = "android:read_contacts";
-    field public static final String OPSTR_READ_EXTERNAL_STORAGE = "android:read_external_storage";
-    field public static final String OPSTR_READ_PHONE_NUMBERS = "android:read_phone_numbers";
-    field public static final String OPSTR_READ_PHONE_STATE = "android:read_phone_state";
-    field public static final String OPSTR_READ_SMS = "android:read_sms";
-    field public static final String OPSTR_RECEIVE_MMS = "android:receive_mms";
-    field public static final String OPSTR_RECEIVE_SMS = "android:receive_sms";
-    field public static final String OPSTR_RECEIVE_WAP_PUSH = "android:receive_wap_push";
-    field public static final String OPSTR_RECORD_AUDIO = "android:record_audio";
-    field public static final String OPSTR_SEND_SMS = "android:send_sms";
-    field public static final String OPSTR_SYSTEM_ALERT_WINDOW = "android:system_alert_window";
-    field public static final String OPSTR_USE_FINGERPRINT = "android:use_fingerprint";
-    field public static final String OPSTR_USE_SIP = "android:use_sip";
-    field public static final String OPSTR_WRITE_CALENDAR = "android:write_calendar";
-    field public static final String OPSTR_WRITE_CALL_LOG = "android:write_call_log";
-    field public static final String OPSTR_WRITE_CONTACTS = "android:write_contacts";
-    field public static final String OPSTR_WRITE_EXTERNAL_STORAGE = "android:write_external_storage";
-    field public static final String OPSTR_WRITE_SETTINGS = "android:write_settings";
-    field public static final int WATCH_FOREGROUND_CHANGES = 1; // 0x1
-  }
-
-  public static interface AppOpsManager.OnOpActiveChangedListener {
-    method public void onOpActiveChanged(@NonNull String, int, @NonNull String, boolean);
-  }
-
-  public static interface AppOpsManager.OnOpChangedListener {
-    method public void onOpChanged(String, String);
-  }
-
-  public abstract static class AppOpsManager.OnOpNotedCallback {
-    ctor public AppOpsManager.OnOpNotedCallback();
-    method public abstract void onAsyncNoted(@NonNull android.app.AsyncNotedAppOp);
-    method public abstract void onNoted(@NonNull android.app.SyncNotedAppOp);
-    method public abstract void onSelfNoted(@NonNull android.app.SyncNotedAppOp);
-  }
-
-  public class Application extends android.content.ContextWrapper implements android.content.ComponentCallbacks2 {
-    ctor public Application();
-    method public static String getProcessName();
-    method @CallSuper public void onConfigurationChanged(@NonNull android.content.res.Configuration);
-    method @CallSuper public void onCreate();
-    method @CallSuper public void onLowMemory();
-    method @CallSuper public void onTerminate();
-    method @CallSuper public void onTrimMemory(int);
-    method public void registerActivityLifecycleCallbacks(android.app.Application.ActivityLifecycleCallbacks);
-    method public void registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener);
-    method public void unregisterActivityLifecycleCallbacks(android.app.Application.ActivityLifecycleCallbacks);
-    method public void unregisterOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener);
-  }
-
-  public static interface Application.ActivityLifecycleCallbacks {
-    method public void onActivityCreated(@NonNull android.app.Activity, @Nullable android.os.Bundle);
-    method public void onActivityDestroyed(@NonNull android.app.Activity);
-    method public void onActivityPaused(@NonNull android.app.Activity);
-    method public default void onActivityPostCreated(@NonNull android.app.Activity, @Nullable android.os.Bundle);
-    method public default void onActivityPostDestroyed(@NonNull android.app.Activity);
-    method public default void onActivityPostPaused(@NonNull android.app.Activity);
-    method public default void onActivityPostResumed(@NonNull android.app.Activity);
-    method public default void onActivityPostSaveInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle);
-    method public default void onActivityPostStarted(@NonNull android.app.Activity);
-    method public default void onActivityPostStopped(@NonNull android.app.Activity);
-    method public default void onActivityPreCreated(@NonNull android.app.Activity, @Nullable android.os.Bundle);
-    method public default void onActivityPreDestroyed(@NonNull android.app.Activity);
-    method public default void onActivityPrePaused(@NonNull android.app.Activity);
-    method public default void onActivityPreResumed(@NonNull android.app.Activity);
-    method public default void onActivityPreSaveInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle);
-    method public default void onActivityPreStarted(@NonNull android.app.Activity);
-    method public default void onActivityPreStopped(@NonNull android.app.Activity);
-    method public void onActivityResumed(@NonNull android.app.Activity);
-    method public void onActivitySaveInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle);
-    method public void onActivityStarted(@NonNull android.app.Activity);
-    method public void onActivityStopped(@NonNull android.app.Activity);
-  }
-
-  public static interface Application.OnProvideAssistDataListener {
-    method public void onProvideAssistData(android.app.Activity, android.os.Bundle);
-  }
-
-  public class ApplicationErrorReport implements android.os.Parcelable {
-    ctor public ApplicationErrorReport();
-    method public int describeContents();
-    method public void dump(android.util.Printer, String);
-    method public static android.content.ComponentName getErrorReportReceiver(android.content.Context, String, int);
-    method public void readFromParcel(android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.ApplicationErrorReport> CREATOR;
-    field public static final int TYPE_ANR = 2; // 0x2
-    field public static final int TYPE_BATTERY = 3; // 0x3
-    field public static final int TYPE_CRASH = 1; // 0x1
-    field public static final int TYPE_NONE = 0; // 0x0
-    field public static final int TYPE_RUNNING_SERVICE = 5; // 0x5
-    field public android.app.ApplicationErrorReport.AnrInfo anrInfo;
-    field public android.app.ApplicationErrorReport.BatteryInfo batteryInfo;
-    field public android.app.ApplicationErrorReport.CrashInfo crashInfo;
-    field public String installerPackageName;
-    field public String packageName;
-    field public String processName;
-    field public android.app.ApplicationErrorReport.RunningServiceInfo runningServiceInfo;
-    field public boolean systemApp;
-    field public long time;
-    field public int type;
-  }
-
-  public static class ApplicationErrorReport.AnrInfo {
-    ctor public ApplicationErrorReport.AnrInfo();
-    ctor public ApplicationErrorReport.AnrInfo(android.os.Parcel);
-    method public void dump(android.util.Printer, String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public String activity;
-    field public String cause;
-    field public String info;
-  }
-
-  public static class ApplicationErrorReport.BatteryInfo {
-    ctor public ApplicationErrorReport.BatteryInfo();
-    ctor public ApplicationErrorReport.BatteryInfo(android.os.Parcel);
-    method public void dump(android.util.Printer, String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public String checkinDetails;
-    field public long durationMicros;
-    field public String usageDetails;
-    field public int usagePercent;
-  }
-
-  public static class ApplicationErrorReport.CrashInfo {
-    ctor public ApplicationErrorReport.CrashInfo();
-    ctor public ApplicationErrorReport.CrashInfo(Throwable);
-    ctor public ApplicationErrorReport.CrashInfo(android.os.Parcel);
-    method public void dump(android.util.Printer, String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public String exceptionClassName;
-    field public String exceptionMessage;
-    field public String stackTrace;
-    field public String throwClassName;
-    field public String throwFileName;
-    field public int throwLineNumber;
-    field public String throwMethodName;
-  }
-
-  public static class ApplicationErrorReport.RunningServiceInfo {
-    ctor public ApplicationErrorReport.RunningServiceInfo();
-    ctor public ApplicationErrorReport.RunningServiceInfo(android.os.Parcel);
-    method public void dump(android.util.Printer, String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public long durationMillis;
-    field public String serviceDetails;
-  }
-
-  public final class ApplicationExitInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getDefiningUid();
-    method @Nullable public String getDescription();
-    method public int getImportance();
-    method public int getPackageUid();
-    method public int getPid();
-    method @NonNull public String getProcessName();
-    method @Nullable public byte[] getProcessStateSummary();
-    method public long getPss();
-    method public int getRealUid();
-    method public int getReason();
-    method public long getRss();
-    method public int getStatus();
-    method public long getTimestamp();
-    method @Nullable public java.io.InputStream getTraceInputStream() throws java.io.IOException;
-    method @NonNull public android.os.UserHandle getUserHandle();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.ApplicationExitInfo> CREATOR;
-    field public static final int REASON_ANR = 6; // 0x6
-    field public static final int REASON_CRASH = 4; // 0x4
-    field public static final int REASON_CRASH_NATIVE = 5; // 0x5
-    field public static final int REASON_DEPENDENCY_DIED = 12; // 0xc
-    field public static final int REASON_EXCESSIVE_RESOURCE_USAGE = 9; // 0x9
-    field public static final int REASON_EXIT_SELF = 1; // 0x1
-    field public static final int REASON_INITIALIZATION_FAILURE = 7; // 0x7
-    field public static final int REASON_LOW_MEMORY = 3; // 0x3
-    field public static final int REASON_OTHER = 13; // 0xd
-    field public static final int REASON_PERMISSION_CHANGE = 8; // 0x8
-    field public static final int REASON_SIGNALED = 2; // 0x2
-    field public static final int REASON_UNKNOWN = 0; // 0x0
-    field public static final int REASON_USER_REQUESTED = 10; // 0xa
-    field public static final int REASON_USER_STOPPED = 11; // 0xb
-  }
-
-  public final class AsyncNotedAppOp implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getAttributionTag();
-    method @NonNull public String getMessage();
-    method @IntRange(from=0) public int getNotingUid();
-    method @NonNull public String getOp();
-    method public long getTime();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AsyncNotedAppOp> CREATOR;
-  }
-
-  public final class AuthenticationRequiredException extends java.lang.SecurityException implements android.os.Parcelable {
-    ctor public AuthenticationRequiredException(Throwable, android.app.PendingIntent);
-    method public int describeContents();
-    method public android.app.PendingIntent getUserAction();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AuthenticationRequiredException> CREATOR;
-  }
-
-  public final class AutomaticZenRule implements android.os.Parcelable {
-    ctor @Deprecated public AutomaticZenRule(String, android.content.ComponentName, android.net.Uri, int, boolean);
-    ctor public AutomaticZenRule(@NonNull String, @Nullable android.content.ComponentName, @Nullable android.content.ComponentName, @NonNull android.net.Uri, @Nullable android.service.notification.ZenPolicy, int, boolean);
-    ctor public AutomaticZenRule(android.os.Parcel);
-    method public int describeContents();
-    method public android.net.Uri getConditionId();
-    method @Nullable public android.content.ComponentName getConfigurationActivity();
-    method public long getCreationTime();
-    method public int getInterruptionFilter();
-    method public String getName();
-    method public android.content.ComponentName getOwner();
-    method public android.service.notification.ZenPolicy getZenPolicy();
-    method public boolean isEnabled();
-    method public void setConditionId(android.net.Uri);
-    method public void setConfigurationActivity(@Nullable android.content.ComponentName);
-    method public void setEnabled(boolean);
-    method public void setInterruptionFilter(int);
-    method public void setName(String);
-    method public void setZenPolicy(android.service.notification.ZenPolicy);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AutomaticZenRule> CREATOR;
-  }
-
-  public class DatePickerDialog extends android.app.AlertDialog implements android.widget.DatePicker.OnDateChangedListener android.content.DialogInterface.OnClickListener {
-    ctor public DatePickerDialog(@NonNull android.content.Context);
-    ctor public DatePickerDialog(@NonNull android.content.Context, @StyleRes int);
-    ctor public DatePickerDialog(@NonNull android.content.Context, @Nullable android.app.DatePickerDialog.OnDateSetListener, int, int, int);
-    ctor public DatePickerDialog(@NonNull android.content.Context, @StyleRes int, @Nullable android.app.DatePickerDialog.OnDateSetListener, int, int, int);
-    method @NonNull public android.widget.DatePicker getDatePicker();
-    method public void onClick(@NonNull android.content.DialogInterface, int);
-    method public void onDateChanged(@NonNull android.widget.DatePicker, int, int, int);
-    method public void setOnDateSetListener(@Nullable android.app.DatePickerDialog.OnDateSetListener);
-    method public void updateDate(int, int, int);
-  }
-
-  public static interface DatePickerDialog.OnDateSetListener {
-    method public void onDateSet(android.widget.DatePicker, int, int, int);
-  }
-
-  public class Dialog implements android.content.DialogInterface android.view.KeyEvent.Callback android.view.View.OnCreateContextMenuListener android.view.Window.Callback {
-    ctor public Dialog(@NonNull android.content.Context);
-    ctor public Dialog(@NonNull android.content.Context, @StyleRes int);
-    ctor protected Dialog(@NonNull android.content.Context, boolean, @Nullable android.content.DialogInterface.OnCancelListener);
-    method public void addContentView(@NonNull android.view.View, @Nullable android.view.ViewGroup.LayoutParams);
-    method public void cancel();
-    method public void closeOptionsMenu();
-    method public void create();
-    method public void dismiss();
-    method public boolean dispatchGenericMotionEvent(@NonNull android.view.MotionEvent);
-    method public boolean dispatchKeyEvent(@NonNull android.view.KeyEvent);
-    method public boolean dispatchKeyShortcutEvent(@NonNull android.view.KeyEvent);
-    method public boolean dispatchPopulateAccessibilityEvent(@NonNull android.view.accessibility.AccessibilityEvent);
-    method public boolean dispatchTouchEvent(@NonNull android.view.MotionEvent);
-    method public boolean dispatchTrackballEvent(@NonNull android.view.MotionEvent);
-    method public <T extends android.view.View> T findViewById(@IdRes int);
-    method @Nullable public android.app.ActionBar getActionBar();
-    method @NonNull public final android.content.Context getContext();
-    method @Nullable public android.view.View getCurrentFocus();
-    method @NonNull public android.view.LayoutInflater getLayoutInflater();
-    method @Nullable public final android.app.Activity getOwnerActivity();
-    method @Nullable public final android.view.SearchEvent getSearchEvent();
-    method public final int getVolumeControlStream();
-    method @Nullable public android.view.Window getWindow();
-    method public void hide();
-    method public void invalidateOptionsMenu();
-    method public boolean isShowing();
-    method @CallSuper public void onActionModeFinished(android.view.ActionMode);
-    method @CallSuper public void onActionModeStarted(android.view.ActionMode);
-    method public void onAttachedToWindow();
-    method public void onBackPressed();
-    method public void onContentChanged();
-    method public boolean onContextItemSelected(@NonNull android.view.MenuItem);
-    method public void onContextMenuClosed(@NonNull android.view.Menu);
-    method protected void onCreate(android.os.Bundle);
-    method public void onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo);
-    method public boolean onCreateOptionsMenu(@NonNull android.view.Menu);
-    method public boolean onCreatePanelMenu(int, @NonNull android.view.Menu);
-    method public android.view.View onCreatePanelView(int);
-    method public void onDetachedFromWindow();
-    method public boolean onGenericMotionEvent(@NonNull android.view.MotionEvent);
-    method public boolean onKeyDown(int, @NonNull android.view.KeyEvent);
-    method public boolean onKeyLongPress(int, @NonNull android.view.KeyEvent);
-    method public boolean onKeyMultiple(int, int, @NonNull android.view.KeyEvent);
-    method public boolean onKeyShortcut(int, @NonNull android.view.KeyEvent);
-    method public boolean onKeyUp(int, @NonNull android.view.KeyEvent);
-    method public boolean onMenuItemSelected(int, @NonNull android.view.MenuItem);
-    method public boolean onMenuOpened(int, @NonNull android.view.Menu);
-    method public boolean onOptionsItemSelected(@NonNull android.view.MenuItem);
-    method public void onOptionsMenuClosed(@NonNull android.view.Menu);
-    method public void onPanelClosed(int, @NonNull android.view.Menu);
-    method public boolean onPrepareOptionsMenu(@NonNull android.view.Menu);
-    method public boolean onPreparePanel(int, @Nullable android.view.View, @NonNull android.view.Menu);
-    method public void onRestoreInstanceState(@NonNull android.os.Bundle);
-    method @NonNull public android.os.Bundle onSaveInstanceState();
-    method public boolean onSearchRequested(@NonNull android.view.SearchEvent);
-    method public boolean onSearchRequested();
-    method protected void onStart();
-    method protected void onStop();
-    method public boolean onTouchEvent(@NonNull android.view.MotionEvent);
-    method public boolean onTrackballEvent(@NonNull android.view.MotionEvent);
-    method public void onWindowAttributesChanged(android.view.WindowManager.LayoutParams);
-    method public void onWindowFocusChanged(boolean);
-    method public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback);
-    method public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback, int);
-    method public void openContextMenu(@NonNull android.view.View);
-    method public void openOptionsMenu();
-    method public void registerForContextMenu(@NonNull android.view.View);
-    method public final boolean requestWindowFeature(int);
-    method @NonNull public final <T extends android.view.View> T requireViewById(@IdRes int);
-    method public void setCancelMessage(@Nullable android.os.Message);
-    method public void setCancelable(boolean);
-    method public void setCanceledOnTouchOutside(boolean);
-    method public void setContentView(@LayoutRes int);
-    method public void setContentView(@NonNull android.view.View);
-    method public void setContentView(@NonNull android.view.View, @Nullable android.view.ViewGroup.LayoutParams);
-    method public void setDismissMessage(@Nullable android.os.Message);
-    method public final void setFeatureDrawable(int, @Nullable android.graphics.drawable.Drawable);
-    method public final void setFeatureDrawableAlpha(int, int);
-    method public final void setFeatureDrawableResource(int, @DrawableRes int);
-    method public final void setFeatureDrawableUri(int, @Nullable android.net.Uri);
-    method public void setOnCancelListener(@Nullable android.content.DialogInterface.OnCancelListener);
-    method public void setOnDismissListener(@Nullable android.content.DialogInterface.OnDismissListener);
-    method public void setOnKeyListener(@Nullable android.content.DialogInterface.OnKeyListener);
-    method public void setOnShowListener(@Nullable android.content.DialogInterface.OnShowListener);
-    method public final void setOwnerActivity(@NonNull android.app.Activity);
-    method public void setTitle(@Nullable CharSequence);
-    method public void setTitle(@StringRes int);
-    method public final void setVolumeControlStream(int);
-    method public void show();
-    method public void takeKeyEvents(boolean);
-    method public void unregisterForContextMenu(@NonNull android.view.View);
-  }
-
-  @Deprecated public class DialogFragment extends android.app.Fragment implements android.content.DialogInterface.OnCancelListener android.content.DialogInterface.OnDismissListener {
-    ctor @Deprecated public DialogFragment();
-    method @Deprecated public void dismiss();
-    method @Deprecated public void dismissAllowingStateLoss();
-    method @Deprecated public android.app.Dialog getDialog();
-    method @Deprecated public boolean getShowsDialog();
-    method @Deprecated public int getTheme();
-    method @Deprecated public boolean isCancelable();
-    method @Deprecated public void onCancel(android.content.DialogInterface);
-    method @Deprecated public android.app.Dialog onCreateDialog(android.os.Bundle);
-    method @Deprecated public void onDismiss(android.content.DialogInterface);
-    method public android.view.LayoutInflater onGetLayoutInflater(android.os.Bundle);
-    method @Deprecated public void setCancelable(boolean);
-    method @Deprecated public void setShowsDialog(boolean);
-    method @Deprecated public void setStyle(int, int);
-    method @Deprecated public void show(android.app.FragmentManager, String);
-    method @Deprecated public int show(android.app.FragmentTransaction, String);
-    field @Deprecated public static final int STYLE_NORMAL = 0; // 0x0
-    field @Deprecated public static final int STYLE_NO_FRAME = 2; // 0x2
-    field @Deprecated public static final int STYLE_NO_INPUT = 3; // 0x3
-    field @Deprecated public static final int STYLE_NO_TITLE = 1; // 0x1
-  }
-
-  public final class DirectAction implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.os.Bundle getExtras();
-    method @NonNull public String getId();
-    method @Nullable public android.content.LocusId getLocusId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.DirectAction> CREATOR;
-  }
-
-  public static final class DirectAction.Builder {
-    ctor public DirectAction.Builder(@NonNull String);
-    method @NonNull public android.app.DirectAction build();
-    method @NonNull public android.app.DirectAction.Builder setExtras(@Nullable android.os.Bundle);
-    method @NonNull public android.app.DirectAction.Builder setLocusId(@Nullable android.content.LocusId);
-  }
-
-  public class DownloadManager {
-    method @Deprecated public long addCompletedDownload(String, String, boolean, String, String, long, boolean);
-    method @Deprecated public long addCompletedDownload(String, String, boolean, String, String, long, boolean, android.net.Uri, android.net.Uri);
-    method public long enqueue(android.app.DownloadManager.Request);
-    method public static Long getMaxBytesOverMobile(android.content.Context);
-    method public String getMimeTypeForDownloadedFile(long);
-    method public static Long getRecommendedMaxBytesOverMobile(android.content.Context);
-    method public android.net.Uri getUriForDownloadedFile(long);
-    method public android.os.ParcelFileDescriptor openDownloadedFile(long) throws java.io.FileNotFoundException;
-    method public android.database.Cursor query(android.app.DownloadManager.Query);
-    method public int remove(long...);
-    field public static final String ACTION_DOWNLOAD_COMPLETE = "android.intent.action.DOWNLOAD_COMPLETE";
-    field public static final String ACTION_NOTIFICATION_CLICKED = "android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED";
-    field public static final String ACTION_VIEW_DOWNLOADS = "android.intent.action.VIEW_DOWNLOADS";
-    field public static final String COLUMN_BYTES_DOWNLOADED_SO_FAR = "bytes_so_far";
-    field public static final String COLUMN_DESCRIPTION = "description";
-    field public static final String COLUMN_ID = "_id";
-    field public static final String COLUMN_LAST_MODIFIED_TIMESTAMP = "last_modified_timestamp";
-    field @Deprecated public static final String COLUMN_LOCAL_FILENAME = "local_filename";
-    field public static final String COLUMN_LOCAL_URI = "local_uri";
-    field public static final String COLUMN_MEDIAPROVIDER_URI = "mediaprovider_uri";
-    field public static final String COLUMN_MEDIA_TYPE = "media_type";
-    field public static final String COLUMN_REASON = "reason";
-    field public static final String COLUMN_STATUS = "status";
-    field public static final String COLUMN_TITLE = "title";
-    field public static final String COLUMN_TOTAL_SIZE_BYTES = "total_size";
-    field public static final String COLUMN_URI = "uri";
-    field public static final int ERROR_CANNOT_RESUME = 1008; // 0x3f0
-    field public static final int ERROR_DEVICE_NOT_FOUND = 1007; // 0x3ef
-    field public static final int ERROR_FILE_ALREADY_EXISTS = 1009; // 0x3f1
-    field public static final int ERROR_FILE_ERROR = 1001; // 0x3e9
-    field public static final int ERROR_HTTP_DATA_ERROR = 1004; // 0x3ec
-    field public static final int ERROR_INSUFFICIENT_SPACE = 1006; // 0x3ee
-    field public static final int ERROR_TOO_MANY_REDIRECTS = 1005; // 0x3ed
-    field public static final int ERROR_UNHANDLED_HTTP_CODE = 1002; // 0x3ea
-    field public static final int ERROR_UNKNOWN = 1000; // 0x3e8
-    field public static final String EXTRA_DOWNLOAD_ID = "extra_download_id";
-    field public static final String EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS = "extra_click_download_ids";
-    field public static final String INTENT_EXTRAS_SORT_BY_SIZE = "android.app.DownloadManager.extra_sortBySize";
-    field public static final int PAUSED_QUEUED_FOR_WIFI = 3; // 0x3
-    field public static final int PAUSED_UNKNOWN = 4; // 0x4
-    field public static final int PAUSED_WAITING_FOR_NETWORK = 2; // 0x2
-    field public static final int PAUSED_WAITING_TO_RETRY = 1; // 0x1
-    field public static final int STATUS_FAILED = 16; // 0x10
-    field public static final int STATUS_PAUSED = 4; // 0x4
-    field public static final int STATUS_PENDING = 1; // 0x1
-    field public static final int STATUS_RUNNING = 2; // 0x2
-    field public static final int STATUS_SUCCESSFUL = 8; // 0x8
-  }
-
-  public static class DownloadManager.Query {
-    ctor public DownloadManager.Query();
-    method public android.app.DownloadManager.Query setFilterById(long...);
-    method public android.app.DownloadManager.Query setFilterByStatus(int);
-  }
-
-  public static class DownloadManager.Request {
-    ctor public DownloadManager.Request(android.net.Uri);
-    method public android.app.DownloadManager.Request addRequestHeader(String, String);
-    method @Deprecated public void allowScanningByMediaScanner();
-    method public android.app.DownloadManager.Request setAllowedNetworkTypes(int);
-    method public android.app.DownloadManager.Request setAllowedOverMetered(boolean);
-    method public android.app.DownloadManager.Request setAllowedOverRoaming(boolean);
-    method public android.app.DownloadManager.Request setDescription(CharSequence);
-    method public android.app.DownloadManager.Request setDestinationInExternalFilesDir(android.content.Context, String, String);
-    method public android.app.DownloadManager.Request setDestinationInExternalPublicDir(String, String);
-    method public android.app.DownloadManager.Request setDestinationUri(android.net.Uri);
-    method public android.app.DownloadManager.Request setMimeType(String);
-    method public android.app.DownloadManager.Request setNotificationVisibility(int);
-    method public android.app.DownloadManager.Request setRequiresCharging(boolean);
-    method public android.app.DownloadManager.Request setRequiresDeviceIdle(boolean);
-    method @Deprecated public android.app.DownloadManager.Request setShowRunningNotification(boolean);
-    method public android.app.DownloadManager.Request setTitle(CharSequence);
-    method @Deprecated public android.app.DownloadManager.Request setVisibleInDownloadsUi(boolean);
-    field public static final int NETWORK_MOBILE = 1; // 0x1
-    field public static final int NETWORK_WIFI = 2; // 0x2
-    field public static final int VISIBILITY_HIDDEN = 2; // 0x2
-    field public static final int VISIBILITY_VISIBLE = 0; // 0x0
-    field public static final int VISIBILITY_VISIBLE_NOTIFY_COMPLETED = 1; // 0x1
-    field public static final int VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION = 3; // 0x3
-  }
-
-  @Deprecated public class ExpandableListActivity extends android.app.Activity implements android.widget.ExpandableListView.OnChildClickListener android.widget.ExpandableListView.OnGroupCollapseListener android.widget.ExpandableListView.OnGroupExpandListener android.view.View.OnCreateContextMenuListener {
-    ctor @Deprecated public ExpandableListActivity();
-    method @Deprecated public android.widget.ExpandableListAdapter getExpandableListAdapter();
-    method @Deprecated public android.widget.ExpandableListView getExpandableListView();
-    method @Deprecated public long getSelectedId();
-    method @Deprecated public long getSelectedPosition();
-    method @Deprecated public boolean onChildClick(android.widget.ExpandableListView, android.view.View, int, int, long);
-    method @Deprecated public void onGroupCollapse(int);
-    method @Deprecated public void onGroupExpand(int);
-    method @Deprecated public void setListAdapter(android.widget.ExpandableListAdapter);
-    method @Deprecated public boolean setSelectedChild(int, int, boolean);
-    method @Deprecated public void setSelectedGroup(int);
-  }
-
-  @Deprecated public class Fragment implements android.content.ComponentCallbacks2 android.view.View.OnCreateContextMenuListener {
-    ctor @Deprecated public Fragment();
-    method @Deprecated public void dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method @Deprecated public final boolean equals(Object);
-    method @Deprecated public final android.app.Activity getActivity();
-    method @Deprecated public boolean getAllowEnterTransitionOverlap();
-    method @Deprecated public boolean getAllowReturnTransitionOverlap();
-    method @Deprecated public final android.os.Bundle getArguments();
-    method @Deprecated public final android.app.FragmentManager getChildFragmentManager();
-    method @Deprecated public android.content.Context getContext();
-    method @Deprecated public android.transition.Transition getEnterTransition();
-    method @Deprecated public android.transition.Transition getExitTransition();
-    method @Deprecated public final android.app.FragmentManager getFragmentManager();
-    method @Deprecated @Nullable public final Object getHost();
-    method @Deprecated public final int getId();
-    method @Deprecated public final android.view.LayoutInflater getLayoutInflater();
-    method @Deprecated public android.app.LoaderManager getLoaderManager();
-    method @Deprecated public final android.app.Fragment getParentFragment();
-    method @Deprecated public android.transition.Transition getReenterTransition();
-    method @Deprecated public final android.content.res.Resources getResources();
-    method @Deprecated public final boolean getRetainInstance();
-    method @Deprecated public android.transition.Transition getReturnTransition();
-    method @Deprecated public android.transition.Transition getSharedElementEnterTransition();
-    method @Deprecated public android.transition.Transition getSharedElementReturnTransition();
-    method @Deprecated public final String getString(@StringRes int);
-    method @Deprecated public final String getString(@StringRes int, java.lang.Object...);
-    method @Deprecated public final String getTag();
-    method @Deprecated public final android.app.Fragment getTargetFragment();
-    method @Deprecated public final int getTargetRequestCode();
-    method @Deprecated public final CharSequence getText(@StringRes int);
-    method @Deprecated public boolean getUserVisibleHint();
-    method @Deprecated @Nullable public android.view.View getView();
-    method @Deprecated public final int hashCode();
-    method @Deprecated public static android.app.Fragment instantiate(android.content.Context, String);
-    method @Deprecated public static android.app.Fragment instantiate(android.content.Context, String, @Nullable android.os.Bundle);
-    method @Deprecated public final boolean isAdded();
-    method @Deprecated public final boolean isDetached();
-    method @Deprecated public final boolean isHidden();
-    method @Deprecated public final boolean isInLayout();
-    method @Deprecated public final boolean isRemoving();
-    method @Deprecated public final boolean isResumed();
-    method @Deprecated public final boolean isStateSaved();
-    method @Deprecated public final boolean isVisible();
-    method @Deprecated @CallSuper public void onActivityCreated(@Nullable android.os.Bundle);
-    method @Deprecated public void onActivityResult(int, int, android.content.Intent);
-    method @Deprecated @CallSuper public void onAttach(android.content.Context);
-    method @Deprecated @CallSuper public void onAttach(android.app.Activity);
-    method @Deprecated public void onAttachFragment(android.app.Fragment);
-    method @Deprecated @CallSuper public void onConfigurationChanged(android.content.res.Configuration);
-    method @Deprecated public boolean onContextItemSelected(android.view.MenuItem);
-    method @Deprecated @CallSuper public void onCreate(@Nullable android.os.Bundle);
-    method @Deprecated public android.animation.Animator onCreateAnimator(int, boolean, int);
-    method @Deprecated public void onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo);
-    method @Deprecated public void onCreateOptionsMenu(android.view.Menu, android.view.MenuInflater);
-    method @Deprecated @Nullable public android.view.View onCreateView(android.view.LayoutInflater, @Nullable android.view.ViewGroup, android.os.Bundle);
-    method @Deprecated @CallSuper public void onDestroy();
-    method @Deprecated public void onDestroyOptionsMenu();
-    method @Deprecated @CallSuper public void onDestroyView();
-    method @Deprecated @CallSuper public void onDetach();
-    method @Deprecated public android.view.LayoutInflater onGetLayoutInflater(android.os.Bundle);
-    method @Deprecated public void onHiddenChanged(boolean);
-    method @Deprecated @CallSuper public void onInflate(android.util.AttributeSet, android.os.Bundle);
-    method @Deprecated @CallSuper public void onInflate(android.content.Context, android.util.AttributeSet, android.os.Bundle);
-    method @Deprecated @CallSuper public void onInflate(android.app.Activity, android.util.AttributeSet, android.os.Bundle);
-    method @Deprecated @CallSuper public void onLowMemory();
-    method @Deprecated public void onMultiWindowModeChanged(boolean, android.content.res.Configuration);
-    method @Deprecated public void onMultiWindowModeChanged(boolean);
-    method @Deprecated public boolean onOptionsItemSelected(android.view.MenuItem);
-    method @Deprecated public void onOptionsMenuClosed(android.view.Menu);
-    method @Deprecated @CallSuper public void onPause();
-    method @Deprecated public void onPictureInPictureModeChanged(boolean, android.content.res.Configuration);
-    method @Deprecated public void onPictureInPictureModeChanged(boolean);
-    method @Deprecated public void onPrepareOptionsMenu(android.view.Menu);
-    method @Deprecated public void onRequestPermissionsResult(int, @NonNull String[], @NonNull int[]);
-    method @Deprecated @CallSuper public void onResume();
-    method @Deprecated public void onSaveInstanceState(android.os.Bundle);
-    method @Deprecated @CallSuper public void onStart();
-    method @Deprecated @CallSuper public void onStop();
-    method @Deprecated @CallSuper public void onTrimMemory(int);
-    method @Deprecated public void onViewCreated(android.view.View, @Nullable android.os.Bundle);
-    method @Deprecated @CallSuper public void onViewStateRestored(android.os.Bundle);
-    method @Deprecated public void postponeEnterTransition();
-    method @Deprecated public void registerForContextMenu(android.view.View);
-    method @Deprecated public final void requestPermissions(@NonNull String[], int);
-    method @Deprecated public void setAllowEnterTransitionOverlap(boolean);
-    method @Deprecated public void setAllowReturnTransitionOverlap(boolean);
-    method @Deprecated public void setArguments(android.os.Bundle);
-    method @Deprecated public void setEnterSharedElementCallback(android.app.SharedElementCallback);
-    method @Deprecated public void setEnterTransition(android.transition.Transition);
-    method @Deprecated public void setExitSharedElementCallback(android.app.SharedElementCallback);
-    method @Deprecated public void setExitTransition(android.transition.Transition);
-    method @Deprecated public void setHasOptionsMenu(boolean);
-    method @Deprecated public void setInitialSavedState(android.app.Fragment.SavedState);
-    method @Deprecated public void setMenuVisibility(boolean);
-    method @Deprecated public void setReenterTransition(android.transition.Transition);
-    method @Deprecated public void setRetainInstance(boolean);
-    method @Deprecated public void setReturnTransition(android.transition.Transition);
-    method @Deprecated public void setSharedElementEnterTransition(android.transition.Transition);
-    method @Deprecated public void setSharedElementReturnTransition(android.transition.Transition);
-    method @Deprecated public void setTargetFragment(android.app.Fragment, int);
-    method @Deprecated public void setUserVisibleHint(boolean);
-    method @Deprecated public boolean shouldShowRequestPermissionRationale(@NonNull String);
-    method @Deprecated public void startActivity(android.content.Intent);
-    method @Deprecated public void startActivity(android.content.Intent, android.os.Bundle);
-    method @Deprecated public void startActivityForResult(android.content.Intent, int);
-    method @Deprecated public void startActivityForResult(android.content.Intent, int, android.os.Bundle);
-    method @Deprecated public void startIntentSenderForResult(android.content.IntentSender, int, @Nullable android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
-    method @Deprecated public void startPostponedEnterTransition();
-    method @Deprecated public void unregisterForContextMenu(android.view.View);
-  }
-
-  @Deprecated public static class Fragment.InstantiationException extends android.util.AndroidRuntimeException {
-    ctor @Deprecated public Fragment.InstantiationException(String, Exception);
-  }
-
-  @Deprecated public static class Fragment.SavedState implements android.os.Parcelable {
-    method @Deprecated public int describeContents();
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated public static final android.os.Parcelable.ClassLoaderCreator<android.app.Fragment.SavedState> CREATOR;
-  }
-
-  @Deprecated public class FragmentBreadCrumbs extends android.view.ViewGroup implements android.app.FragmentManager.OnBackStackChangedListener {
-    ctor @Deprecated public FragmentBreadCrumbs(android.content.Context);
-    ctor @Deprecated public FragmentBreadCrumbs(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public FragmentBreadCrumbs(android.content.Context, android.util.AttributeSet, int);
-    method @Deprecated public void onBackStackChanged();
-    method @Deprecated public void setActivity(android.app.Activity);
-    method @Deprecated public void setMaxVisible(int);
-    method @Deprecated public void setOnBreadCrumbClickListener(android.app.FragmentBreadCrumbs.OnBreadCrumbClickListener);
-    method @Deprecated public void setParentTitle(CharSequence, CharSequence, android.view.View.OnClickListener);
-    method @Deprecated public void setTitle(CharSequence, CharSequence);
-  }
-
-  @Deprecated public static interface FragmentBreadCrumbs.OnBreadCrumbClickListener {
-    method @Deprecated public boolean onBreadCrumbClick(android.app.FragmentManager.BackStackEntry, int);
-  }
-
-  @Deprecated public abstract class FragmentContainer {
-    ctor @Deprecated public FragmentContainer();
-    method @Deprecated @Nullable public abstract <T extends android.view.View> T onFindViewById(@IdRes int);
-    method @Deprecated public abstract boolean onHasView();
-  }
-
-  @Deprecated public class FragmentController {
-    method @Deprecated public void attachHost(android.app.Fragment);
-    method @Deprecated public static final android.app.FragmentController createController(android.app.FragmentHostCallback<?>);
-    method @Deprecated public void dispatchActivityCreated();
-    method @Deprecated public void dispatchConfigurationChanged(android.content.res.Configuration);
-    method @Deprecated public boolean dispatchContextItemSelected(android.view.MenuItem);
-    method @Deprecated public void dispatchCreate();
-    method @Deprecated public boolean dispatchCreateOptionsMenu(android.view.Menu, android.view.MenuInflater);
-    method @Deprecated public void dispatchDestroy();
-    method @Deprecated public void dispatchDestroyView();
-    method @Deprecated public void dispatchLowMemory();
-    method @Deprecated public void dispatchMultiWindowModeChanged(boolean);
-    method @Deprecated public void dispatchMultiWindowModeChanged(boolean, android.content.res.Configuration);
-    method @Deprecated public boolean dispatchOptionsItemSelected(android.view.MenuItem);
-    method @Deprecated public void dispatchOptionsMenuClosed(android.view.Menu);
-    method @Deprecated public void dispatchPause();
-    method @Deprecated public void dispatchPictureInPictureModeChanged(boolean);
-    method @Deprecated public void dispatchPictureInPictureModeChanged(boolean, android.content.res.Configuration);
-    method @Deprecated public boolean dispatchPrepareOptionsMenu(android.view.Menu);
-    method @Deprecated public void dispatchResume();
-    method @Deprecated public void dispatchStart();
-    method @Deprecated public void dispatchStop();
-    method @Deprecated public void dispatchTrimMemory(int);
-    method @Deprecated public void doLoaderDestroy();
-    method @Deprecated public void doLoaderStart();
-    method @Deprecated public void doLoaderStop(boolean);
-    method @Deprecated public void dumpLoaders(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method @Deprecated public boolean execPendingActions();
-    method @Deprecated @Nullable public android.app.Fragment findFragmentByWho(String);
-    method @Deprecated public android.app.FragmentManager getFragmentManager();
-    method @Deprecated public android.app.LoaderManager getLoaderManager();
-    method @Deprecated public void noteStateNotSaved();
-    method @Deprecated public android.view.View onCreateView(android.view.View, String, android.content.Context, android.util.AttributeSet);
-    method @Deprecated public void reportLoaderStart();
-    method @Deprecated public void restoreAllState(android.os.Parcelable, java.util.List<android.app.Fragment>);
-    method @Deprecated public void restoreAllState(android.os.Parcelable, android.app.FragmentManagerNonConfig);
-    method @Deprecated public void restoreLoaderNonConfig(android.util.ArrayMap<java.lang.String,android.app.LoaderManager>);
-    method @Deprecated public android.util.ArrayMap<java.lang.String,android.app.LoaderManager> retainLoaderNonConfig();
-    method @Deprecated public android.app.FragmentManagerNonConfig retainNestedNonConfig();
-    method @Deprecated public java.util.List<android.app.Fragment> retainNonConfig();
-    method @Deprecated public android.os.Parcelable saveAllState();
-  }
-
-  @Deprecated public abstract class FragmentHostCallback<E> extends android.app.FragmentContainer {
-    ctor @Deprecated public FragmentHostCallback(android.content.Context, android.os.Handler, int);
-    method @Deprecated public void onAttachFragment(android.app.Fragment);
-    method @Deprecated public void onDump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method @Deprecated @Nullable public <T extends android.view.View> T onFindViewById(int);
-    method @Deprecated @Nullable public abstract E onGetHost();
-    method @Deprecated public android.view.LayoutInflater onGetLayoutInflater();
-    method @Deprecated public int onGetWindowAnimations();
-    method @Deprecated public boolean onHasView();
-    method @Deprecated public boolean onHasWindowAnimations();
-    method @Deprecated public void onInvalidateOptionsMenu();
-    method @Deprecated public void onRequestPermissionsFromFragment(@NonNull android.app.Fragment, @NonNull String[], int);
-    method @Deprecated public boolean onShouldSaveFragmentState(android.app.Fragment);
-    method @Deprecated public void onStartActivityFromFragment(android.app.Fragment, android.content.Intent, int, android.os.Bundle);
-    method @Deprecated public void onStartIntentSenderFromFragment(android.app.Fragment, android.content.IntentSender, int, @Nullable android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
-    method @Deprecated public boolean onUseFragmentManagerInflaterFactory();
-  }
-
-  @Deprecated public abstract class FragmentManager {
-    ctor @Deprecated public FragmentManager();
-    method @Deprecated public abstract void addOnBackStackChangedListener(android.app.FragmentManager.OnBackStackChangedListener);
-    method @Deprecated public abstract android.app.FragmentTransaction beginTransaction();
-    method @Deprecated public abstract void dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method @Deprecated public static void enableDebugLogging(boolean);
-    method @Deprecated public abstract boolean executePendingTransactions();
-    method @Deprecated public abstract android.app.Fragment findFragmentById(int);
-    method @Deprecated public abstract android.app.Fragment findFragmentByTag(String);
-    method @Deprecated public abstract android.app.FragmentManager.BackStackEntry getBackStackEntryAt(int);
-    method @Deprecated public abstract int getBackStackEntryCount();
-    method @Deprecated public abstract android.app.Fragment getFragment(android.os.Bundle, String);
-    method @Deprecated public abstract java.util.List<android.app.Fragment> getFragments();
-    method @Deprecated public abstract android.app.Fragment getPrimaryNavigationFragment();
-    method @Deprecated public void invalidateOptionsMenu();
-    method @Deprecated public abstract boolean isDestroyed();
-    method @Deprecated public abstract boolean isStateSaved();
-    method @Deprecated public abstract void popBackStack();
-    method @Deprecated public abstract void popBackStack(String, int);
-    method @Deprecated public abstract void popBackStack(int, int);
-    method @Deprecated public abstract boolean popBackStackImmediate();
-    method @Deprecated public abstract boolean popBackStackImmediate(String, int);
-    method @Deprecated public abstract boolean popBackStackImmediate(int, int);
-    method @Deprecated public abstract void putFragment(android.os.Bundle, String, android.app.Fragment);
-    method @Deprecated public abstract void registerFragmentLifecycleCallbacks(android.app.FragmentManager.FragmentLifecycleCallbacks, boolean);
-    method @Deprecated public abstract void removeOnBackStackChangedListener(android.app.FragmentManager.OnBackStackChangedListener);
-    method @Deprecated public abstract android.app.Fragment.SavedState saveFragmentInstanceState(android.app.Fragment);
-    method @Deprecated public abstract void unregisterFragmentLifecycleCallbacks(android.app.FragmentManager.FragmentLifecycleCallbacks);
-    field @Deprecated public static final int POP_BACK_STACK_INCLUSIVE = 1; // 0x1
-  }
-
-  @Deprecated public static interface FragmentManager.BackStackEntry {
-    method @Deprecated public CharSequence getBreadCrumbShortTitle();
-    method @Deprecated public int getBreadCrumbShortTitleRes();
-    method @Deprecated public CharSequence getBreadCrumbTitle();
-    method @Deprecated public int getBreadCrumbTitleRes();
-    method @Deprecated public int getId();
-    method @Deprecated public String getName();
-  }
-
-  @Deprecated public abstract static class FragmentManager.FragmentLifecycleCallbacks {
-    ctor @Deprecated public FragmentManager.FragmentLifecycleCallbacks();
-    method @Deprecated public void onFragmentActivityCreated(android.app.FragmentManager, android.app.Fragment, android.os.Bundle);
-    method @Deprecated public void onFragmentAttached(android.app.FragmentManager, android.app.Fragment, android.content.Context);
-    method @Deprecated public void onFragmentCreated(android.app.FragmentManager, android.app.Fragment, android.os.Bundle);
-    method @Deprecated public void onFragmentDestroyed(android.app.FragmentManager, android.app.Fragment);
-    method @Deprecated public void onFragmentDetached(android.app.FragmentManager, android.app.Fragment);
-    method @Deprecated public void onFragmentPaused(android.app.FragmentManager, android.app.Fragment);
-    method @Deprecated public void onFragmentPreAttached(android.app.FragmentManager, android.app.Fragment, android.content.Context);
-    method @Deprecated public void onFragmentPreCreated(android.app.FragmentManager, android.app.Fragment, android.os.Bundle);
-    method @Deprecated public void onFragmentResumed(android.app.FragmentManager, android.app.Fragment);
-    method @Deprecated public void onFragmentSaveInstanceState(android.app.FragmentManager, android.app.Fragment, android.os.Bundle);
-    method @Deprecated public void onFragmentStarted(android.app.FragmentManager, android.app.Fragment);
-    method @Deprecated public void onFragmentStopped(android.app.FragmentManager, android.app.Fragment);
-    method @Deprecated public void onFragmentViewCreated(android.app.FragmentManager, android.app.Fragment, android.view.View, android.os.Bundle);
-    method @Deprecated public void onFragmentViewDestroyed(android.app.FragmentManager, android.app.Fragment);
-  }
-
-  @Deprecated public static interface FragmentManager.OnBackStackChangedListener {
-    method @Deprecated public void onBackStackChanged();
-  }
-
-  @Deprecated public class FragmentManagerNonConfig {
-  }
-
-  @Deprecated public abstract class FragmentTransaction {
-    ctor @Deprecated public FragmentTransaction();
-    method @Deprecated public abstract android.app.FragmentTransaction add(android.app.Fragment, String);
-    method @Deprecated public abstract android.app.FragmentTransaction add(@IdRes int, android.app.Fragment);
-    method @Deprecated public abstract android.app.FragmentTransaction add(@IdRes int, android.app.Fragment, String);
-    method @Deprecated public abstract android.app.FragmentTransaction addSharedElement(android.view.View, String);
-    method @Deprecated public abstract android.app.FragmentTransaction addToBackStack(@Nullable String);
-    method @Deprecated public abstract android.app.FragmentTransaction attach(android.app.Fragment);
-    method @Deprecated public abstract int commit();
-    method @Deprecated public abstract int commitAllowingStateLoss();
-    method @Deprecated public abstract void commitNow();
-    method @Deprecated public abstract void commitNowAllowingStateLoss();
-    method @Deprecated public abstract android.app.FragmentTransaction detach(android.app.Fragment);
-    method @Deprecated public abstract android.app.FragmentTransaction disallowAddToBackStack();
-    method @Deprecated public abstract android.app.FragmentTransaction hide(android.app.Fragment);
-    method @Deprecated public abstract boolean isAddToBackStackAllowed();
-    method @Deprecated public abstract boolean isEmpty();
-    method @Deprecated public abstract android.app.FragmentTransaction remove(android.app.Fragment);
-    method @Deprecated public abstract android.app.FragmentTransaction replace(@IdRes int, android.app.Fragment);
-    method @Deprecated public abstract android.app.FragmentTransaction replace(@IdRes int, android.app.Fragment, String);
-    method @Deprecated public abstract android.app.FragmentTransaction runOnCommit(Runnable);
-    method @Deprecated public abstract android.app.FragmentTransaction setBreadCrumbShortTitle(@StringRes int);
-    method @Deprecated public abstract android.app.FragmentTransaction setBreadCrumbShortTitle(CharSequence);
-    method @Deprecated public abstract android.app.FragmentTransaction setBreadCrumbTitle(@StringRes int);
-    method @Deprecated public abstract android.app.FragmentTransaction setBreadCrumbTitle(CharSequence);
-    method @Deprecated public abstract android.app.FragmentTransaction setCustomAnimations(@AnimatorRes int, @AnimatorRes int);
-    method @Deprecated public abstract android.app.FragmentTransaction setCustomAnimations(@AnimatorRes int, @AnimatorRes int, @AnimatorRes int, @AnimatorRes int);
-    method @Deprecated public abstract android.app.FragmentTransaction setPrimaryNavigationFragment(android.app.Fragment);
-    method @Deprecated public abstract android.app.FragmentTransaction setReorderingAllowed(boolean);
-    method @Deprecated public abstract android.app.FragmentTransaction setTransition(int);
-    method @Deprecated public abstract android.app.FragmentTransaction setTransitionStyle(@StyleRes int);
-    method @Deprecated public abstract android.app.FragmentTransaction show(android.app.Fragment);
-    field @Deprecated public static final int TRANSIT_ENTER_MASK = 4096; // 0x1000
-    field @Deprecated public static final int TRANSIT_EXIT_MASK = 8192; // 0x2000
-    field @Deprecated public static final int TRANSIT_FRAGMENT_CLOSE = 8194; // 0x2002
-    field @Deprecated public static final int TRANSIT_FRAGMENT_FADE = 4099; // 0x1003
-    field @Deprecated public static final int TRANSIT_FRAGMENT_OPEN = 4097; // 0x1001
-    field @Deprecated public static final int TRANSIT_NONE = 0; // 0x0
-    field @Deprecated public static final int TRANSIT_UNSET = -1; // 0xffffffff
-  }
-
-  public class Instrumentation {
-    ctor public Instrumentation();
-    method public android.os.TestLooperManager acquireLooperManager(android.os.Looper);
-    method public void addMonitor(android.app.Instrumentation.ActivityMonitor);
-    method public android.app.Instrumentation.ActivityMonitor addMonitor(android.content.IntentFilter, android.app.Instrumentation.ActivityResult, boolean);
-    method public android.app.Instrumentation.ActivityMonitor addMonitor(String, android.app.Instrumentation.ActivityResult, boolean);
-    method public void addResults(android.os.Bundle);
-    method public void callActivityOnCreate(android.app.Activity, android.os.Bundle);
-    method public void callActivityOnCreate(android.app.Activity, android.os.Bundle, android.os.PersistableBundle);
-    method public void callActivityOnDestroy(android.app.Activity);
-    method public void callActivityOnNewIntent(android.app.Activity, android.content.Intent);
-    method public void callActivityOnPause(android.app.Activity);
-    method public void callActivityOnPictureInPictureRequested(@NonNull android.app.Activity);
-    method public void callActivityOnPostCreate(@NonNull android.app.Activity, @Nullable android.os.Bundle);
-    method public void callActivityOnPostCreate(@NonNull android.app.Activity, @Nullable android.os.Bundle, @Nullable android.os.PersistableBundle);
-    method public void callActivityOnRestart(android.app.Activity);
-    method public void callActivityOnRestoreInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle);
-    method public void callActivityOnRestoreInstanceState(@NonNull android.app.Activity, @Nullable android.os.Bundle, @Nullable android.os.PersistableBundle);
-    method public void callActivityOnResume(android.app.Activity);
-    method public void callActivityOnSaveInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle);
-    method public void callActivityOnSaveInstanceState(@NonNull android.app.Activity, @NonNull android.os.Bundle, @NonNull android.os.PersistableBundle);
-    method public void callActivityOnStart(android.app.Activity);
-    method public void callActivityOnStop(android.app.Activity);
-    method public void callActivityOnUserLeaving(android.app.Activity);
-    method public void callApplicationOnCreate(android.app.Application);
-    method public boolean checkMonitorHit(android.app.Instrumentation.ActivityMonitor, int);
-    method public void endPerformanceSnapshot();
-    method public void finish(int, android.os.Bundle);
-    method public android.os.Bundle getAllocCounts();
-    method public android.os.Bundle getBinderCounts();
-    method public android.content.ComponentName getComponentName();
-    method public android.content.Context getContext();
-    method public String getProcessName();
-    method public android.content.Context getTargetContext();
-    method public android.app.UiAutomation getUiAutomation();
-    method public android.app.UiAutomation getUiAutomation(int);
-    method public boolean invokeContextMenuAction(android.app.Activity, int, int);
-    method public boolean invokeMenuActionSync(android.app.Activity, int, int);
-    method public boolean isProfiling();
-    method public android.app.Activity newActivity(Class<?>, android.content.Context, android.os.IBinder, android.app.Application, android.content.Intent, android.content.pm.ActivityInfo, CharSequence, android.app.Activity, String, Object) throws java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public android.app.Activity newActivity(ClassLoader, String, android.content.Intent) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public android.app.Application newApplication(ClassLoader, String, android.content.Context) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public static android.app.Application newApplication(Class<?>, android.content.Context) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public void onCreate(android.os.Bundle);
-    method public void onDestroy();
-    method public boolean onException(Object, Throwable);
-    method public void onStart();
-    method public void removeMonitor(android.app.Instrumentation.ActivityMonitor);
-    method public void runOnMainSync(Runnable);
-    method public void sendCharacterSync(int);
-    method public void sendKeyDownUpSync(int);
-    method public void sendKeySync(android.view.KeyEvent);
-    method public void sendPointerSync(android.view.MotionEvent);
-    method public void sendStatus(int, android.os.Bundle);
-    method public void sendStringSync(String);
-    method public void sendTrackballEventSync(android.view.MotionEvent);
-    method public void setAutomaticPerformanceSnapshots();
-    method public void setInTouchMode(boolean);
-    method public void start();
-    method public android.app.Activity startActivitySync(android.content.Intent);
-    method @NonNull public android.app.Activity startActivitySync(@NonNull android.content.Intent, @Nullable android.os.Bundle);
-    method @Deprecated public void startAllocCounting();
-    method public void startPerformanceSnapshot();
-    method public void startProfiling();
-    method @Deprecated public void stopAllocCounting();
-    method public void stopProfiling();
-    method public void waitForIdle(Runnable);
-    method public void waitForIdleSync();
-    method public android.app.Activity waitForMonitor(android.app.Instrumentation.ActivityMonitor);
-    method public android.app.Activity waitForMonitorWithTimeout(android.app.Instrumentation.ActivityMonitor, long);
-    field public static final String REPORT_KEY_IDENTIFIER = "id";
-    field public static final String REPORT_KEY_STREAMRESULT = "stream";
-  }
-
-  public static class Instrumentation.ActivityMonitor {
-    ctor public Instrumentation.ActivityMonitor(android.content.IntentFilter, android.app.Instrumentation.ActivityResult, boolean);
-    ctor public Instrumentation.ActivityMonitor(String, android.app.Instrumentation.ActivityResult, boolean);
-    ctor public Instrumentation.ActivityMonitor();
-    method public final android.content.IntentFilter getFilter();
-    method public final int getHits();
-    method public final android.app.Activity getLastActivity();
-    method public final android.app.Instrumentation.ActivityResult getResult();
-    method public final boolean isBlocking();
-    method public android.app.Instrumentation.ActivityResult onStartActivity(android.content.Intent);
-    method public final android.app.Activity waitForActivity();
-    method public final android.app.Activity waitForActivityWithTimeout(long);
-  }
-
-  public static final class Instrumentation.ActivityResult {
-    ctor public Instrumentation.ActivityResult(int, android.content.Intent);
-    method public int getResultCode();
-    method public android.content.Intent getResultData();
-  }
-
-  @Deprecated public abstract class IntentService extends android.app.Service {
-    ctor @Deprecated public IntentService(String);
-    method @Deprecated @Nullable public android.os.IBinder onBind(android.content.Intent);
-    method @Deprecated @WorkerThread protected abstract void onHandleIntent(@Nullable android.content.Intent);
-    method @Deprecated public void onStart(@Nullable android.content.Intent, int);
-    method @Deprecated public void setIntentRedelivery(boolean);
-  }
-
-  public class KeyguardManager {
-    method @Deprecated public android.content.Intent createConfirmDeviceCredentialIntent(CharSequence, CharSequence);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.DISABLE_KEYGUARD) public void exitKeyguardSecurely(android.app.KeyguardManager.OnKeyguardExitResult);
-    method @Deprecated public boolean inKeyguardRestrictedInputMode();
-    method public boolean isDeviceLocked();
-    method public boolean isDeviceSecure();
-    method public boolean isKeyguardLocked();
-    method public boolean isKeyguardSecure();
-    method @Deprecated public android.app.KeyguardManager.KeyguardLock newKeyguardLock(String);
-    method public void requestDismissKeyguard(@NonNull android.app.Activity, @Nullable android.app.KeyguardManager.KeyguardDismissCallback);
-  }
-
-  public abstract static class KeyguardManager.KeyguardDismissCallback {
-    ctor public KeyguardManager.KeyguardDismissCallback();
-    method public void onDismissCancelled();
-    method public void onDismissError();
-    method public void onDismissSucceeded();
-  }
-
-  @Deprecated public class KeyguardManager.KeyguardLock {
-    method @Deprecated @RequiresPermission(android.Manifest.permission.DISABLE_KEYGUARD) public void disableKeyguard();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.DISABLE_KEYGUARD) public void reenableKeyguard();
-  }
-
-  @Deprecated public static interface KeyguardManager.OnKeyguardExitResult {
-    method @Deprecated public void onKeyguardExitResult(boolean);
-  }
-
-  @Deprecated public abstract class LauncherActivity extends android.app.ListActivity {
-    ctor @Deprecated public LauncherActivity();
-    method @Deprecated protected android.content.Intent getTargetIntent();
-    method @Deprecated protected android.content.Intent intentForPosition(int);
-    method @Deprecated protected android.app.LauncherActivity.ListItem itemForPosition(int);
-    method @Deprecated public java.util.List<android.app.LauncherActivity.ListItem> makeListItems();
-    method @Deprecated protected java.util.List<android.content.pm.ResolveInfo> onQueryPackageManager(android.content.Intent);
-    method @Deprecated protected void onSetContentView();
-  }
-
-  @Deprecated public class LauncherActivity.IconResizer {
-    ctor @Deprecated public LauncherActivity.IconResizer();
-    method @Deprecated public android.graphics.drawable.Drawable createIconThumbnail(android.graphics.drawable.Drawable);
-  }
-
-  @Deprecated public static class LauncherActivity.ListItem {
-    ctor @Deprecated public LauncherActivity.ListItem();
-    field @Deprecated public String className;
-    field @Deprecated public android.os.Bundle extras;
-    field @Deprecated public android.graphics.drawable.Drawable icon;
-    field @Deprecated public CharSequence label;
-    field @Deprecated public String packageName;
-    field @Deprecated public android.content.pm.ResolveInfo resolveInfo;
-  }
-
-  @Deprecated public class ListActivity extends android.app.Activity {
-    ctor @Deprecated public ListActivity();
-    method @Deprecated public android.widget.ListAdapter getListAdapter();
-    method @Deprecated public android.widget.ListView getListView();
-    method @Deprecated public long getSelectedItemId();
-    method @Deprecated public int getSelectedItemPosition();
-    method @Deprecated protected void onListItemClick(android.widget.ListView, android.view.View, int, long);
-    method @Deprecated public void setListAdapter(android.widget.ListAdapter);
-    method @Deprecated public void setSelection(int);
-  }
-
-  @Deprecated public class ListFragment extends android.app.Fragment {
-    ctor @Deprecated public ListFragment();
-    method @Deprecated public android.widget.ListAdapter getListAdapter();
-    method @Deprecated public android.widget.ListView getListView();
-    method @Deprecated public long getSelectedItemId();
-    method @Deprecated public int getSelectedItemPosition();
-    method @Deprecated public void onListItemClick(android.widget.ListView, android.view.View, int, long);
-    method @Deprecated public void setEmptyText(CharSequence);
-    method @Deprecated public void setListAdapter(android.widget.ListAdapter);
-    method @Deprecated public void setListShown(boolean);
-    method @Deprecated public void setListShownNoAnimation(boolean);
-    method @Deprecated public void setSelection(int);
-  }
-
-  @Deprecated public abstract class LoaderManager {
-    ctor @Deprecated public LoaderManager();
-    method @Deprecated public abstract void destroyLoader(int);
-    method @Deprecated public abstract void dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method @Deprecated public static void enableDebugLogging(boolean);
-    method @Deprecated public abstract <D> android.content.Loader<D> getLoader(int);
-    method @Deprecated public abstract <D> android.content.Loader<D> initLoader(int, android.os.Bundle, android.app.LoaderManager.LoaderCallbacks<D>);
-    method @Deprecated public abstract <D> android.content.Loader<D> restartLoader(int, android.os.Bundle, android.app.LoaderManager.LoaderCallbacks<D>);
-  }
-
-  @Deprecated public static interface LoaderManager.LoaderCallbacks<D> {
-    method @Deprecated public android.content.Loader<D> onCreateLoader(int, android.os.Bundle);
-    method @Deprecated public void onLoadFinished(android.content.Loader<D>, D);
-    method @Deprecated public void onLoaderReset(android.content.Loader<D>);
-  }
-
-  @Deprecated public class LocalActivityManager {
-    ctor @Deprecated public LocalActivityManager(android.app.Activity, boolean);
-    method @Deprecated public android.view.Window destroyActivity(String, boolean);
-    method @Deprecated public void dispatchCreate(android.os.Bundle);
-    method @Deprecated public void dispatchDestroy(boolean);
-    method @Deprecated public void dispatchPause(boolean);
-    method @Deprecated public void dispatchResume();
-    method @Deprecated public void dispatchStop();
-    method @Deprecated public android.app.Activity getActivity(String);
-    method @Deprecated public android.app.Activity getCurrentActivity();
-    method @Deprecated public String getCurrentId();
-    method @Deprecated public void removeAllActivities();
-    method @Deprecated public android.os.Bundle saveInstanceState();
-    method @Deprecated public android.view.Window startActivity(String, android.content.Intent);
-  }
-
-  public class MediaRouteActionProvider extends android.view.ActionProvider {
-    ctor public MediaRouteActionProvider(android.content.Context);
-    method public android.view.View onCreateActionView();
-    method public void setExtendedSettingsClickListener(android.view.View.OnClickListener);
-    method public void setRouteTypes(int);
-  }
-
-  public class MediaRouteButton extends android.view.View {
-    ctor public MediaRouteButton(android.content.Context);
-    ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet);
-    ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet, int);
-    ctor public MediaRouteButton(android.content.Context, android.util.AttributeSet, int, int);
-    method public int getRouteTypes();
-    method public void onAttachedToWindow();
-    method public void onDetachedFromWindow();
-    method public void setExtendedSettingsClickListener(android.view.View.OnClickListener);
-    method public void setRouteTypes(int);
-    method public void showDialog();
-  }
-
-  public class NativeActivity extends android.app.Activity implements android.view.InputQueue.Callback android.view.SurfaceHolder.Callback2 android.view.ViewTreeObserver.OnGlobalLayoutListener {
-    ctor public NativeActivity();
-    method public void onGlobalLayout();
-    method public void onInputQueueCreated(android.view.InputQueue);
-    method public void onInputQueueDestroyed(android.view.InputQueue);
-    method public void surfaceChanged(android.view.SurfaceHolder, int, int, int);
-    method public void surfaceCreated(android.view.SurfaceHolder);
-    method public void surfaceDestroyed(android.view.SurfaceHolder);
-    method public void surfaceRedrawNeeded(android.view.SurfaceHolder);
-    field public static final String META_DATA_FUNC_NAME = "android.app.func_name";
-    field public static final String META_DATA_LIB_NAME = "android.app.lib_name";
-  }
-
-  public class Notification implements android.os.Parcelable {
-    ctor public Notification();
-    ctor @Deprecated public Notification(int, CharSequence, long);
-    ctor public Notification(android.os.Parcel);
-    method public android.app.Notification clone();
-    method public int describeContents();
-    method @Nullable public android.util.Pair<android.app.RemoteInput,android.app.Notification.Action> findRemoteInputActionPair(boolean);
-    method public boolean getAllowSystemGeneratedContextualActions();
-    method public int getBadgeIconType();
-    method @Nullable public android.app.Notification.BubbleMetadata getBubbleMetadata();
-    method public String getChannelId();
-    method @NonNull public java.util.List<android.app.Notification.Action> getContextualActions();
-    method public String getGroup();
-    method public int getGroupAlertBehavior();
-    method public android.graphics.drawable.Icon getLargeIcon();
-    method @Nullable public android.content.LocusId getLocusId();
-    method public CharSequence getSettingsText();
-    method public String getShortcutId();
-    method public android.graphics.drawable.Icon getSmallIcon();
-    method public String getSortKey();
-    method public long getTimeoutAfter();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.media.AudioAttributes AUDIO_ATTRIBUTES_DEFAULT;
-    field public static final int BADGE_ICON_LARGE = 2; // 0x2
-    field public static final int BADGE_ICON_NONE = 0; // 0x0
-    field public static final int BADGE_ICON_SMALL = 1; // 0x1
-    field public static final String CATEGORY_ALARM = "alarm";
-    field public static final String CATEGORY_CALL = "call";
-    field public static final String CATEGORY_EMAIL = "email";
-    field public static final String CATEGORY_ERROR = "err";
-    field public static final String CATEGORY_EVENT = "event";
-    field public static final String CATEGORY_MESSAGE = "msg";
-    field public static final String CATEGORY_NAVIGATION = "navigation";
-    field public static final String CATEGORY_PROGRESS = "progress";
-    field public static final String CATEGORY_PROMO = "promo";
-    field public static final String CATEGORY_RECOMMENDATION = "recommendation";
-    field public static final String CATEGORY_REMINDER = "reminder";
-    field public static final String CATEGORY_SERVICE = "service";
-    field public static final String CATEGORY_SOCIAL = "social";
-    field public static final String CATEGORY_STATUS = "status";
-    field public static final String CATEGORY_SYSTEM = "sys";
-    field public static final String CATEGORY_TRANSPORT = "transport";
-    field @ColorInt public static final int COLOR_DEFAULT = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.Notification> CREATOR;
-    field public static final int DEFAULT_ALL = -1; // 0xffffffff
-    field public static final int DEFAULT_LIGHTS = 4; // 0x4
-    field public static final int DEFAULT_SOUND = 1; // 0x1
-    field public static final int DEFAULT_VIBRATE = 2; // 0x2
-    field public static final String EXTRA_AUDIO_CONTENTS_URI = "android.audioContents";
-    field public static final String EXTRA_BACKGROUND_IMAGE_URI = "android.backgroundImageUri";
-    field public static final String EXTRA_BIG_TEXT = "android.bigText";
-    field public static final String EXTRA_CHANNEL_GROUP_ID = "android.intent.extra.CHANNEL_GROUP_ID";
-    field public static final String EXTRA_CHANNEL_ID = "android.intent.extra.CHANNEL_ID";
-    field public static final String EXTRA_CHRONOMETER_COUNT_DOWN = "android.chronometerCountDown";
-    field public static final String EXTRA_COLORIZED = "android.colorized";
-    field public static final String EXTRA_COMPACT_ACTIONS = "android.compactActions";
-    field public static final String EXTRA_CONVERSATION_TITLE = "android.conversationTitle";
-    field public static final String EXTRA_HISTORIC_MESSAGES = "android.messages.historic";
-    field public static final String EXTRA_INFO_TEXT = "android.infoText";
-    field public static final String EXTRA_IS_GROUP_CONVERSATION = "android.isGroupConversation";
-    field @Deprecated public static final String EXTRA_LARGE_ICON = "android.largeIcon";
-    field public static final String EXTRA_LARGE_ICON_BIG = "android.largeIcon.big";
-    field public static final String EXTRA_MEDIA_SESSION = "android.mediaSession";
-    field public static final String EXTRA_MESSAGES = "android.messages";
-    field public static final String EXTRA_MESSAGING_PERSON = "android.messagingUser";
-    field public static final String EXTRA_NOTIFICATION_ID = "android.intent.extra.NOTIFICATION_ID";
-    field public static final String EXTRA_NOTIFICATION_TAG = "android.intent.extra.NOTIFICATION_TAG";
-    field @Deprecated public static final String EXTRA_PEOPLE = "android.people";
-    field public static final String EXTRA_PEOPLE_LIST = "android.people.list";
-    field public static final String EXTRA_PICTURE = "android.picture";
-    field public static final String EXTRA_PROGRESS = "android.progress";
-    field public static final String EXTRA_PROGRESS_INDETERMINATE = "android.progressIndeterminate";
-    field public static final String EXTRA_PROGRESS_MAX = "android.progressMax";
-    field public static final String EXTRA_REMOTE_INPUT_DRAFT = "android.remoteInputDraft";
-    field public static final String EXTRA_REMOTE_INPUT_HISTORY = "android.remoteInputHistory";
-    field @Deprecated public static final String EXTRA_SELF_DISPLAY_NAME = "android.selfDisplayName";
-    field public static final String EXTRA_SHOW_CHRONOMETER = "android.showChronometer";
-    field public static final String EXTRA_SHOW_WHEN = "android.showWhen";
-    field @Deprecated public static final String EXTRA_SMALL_ICON = "android.icon";
-    field public static final String EXTRA_SUB_TEXT = "android.subText";
-    field public static final String EXTRA_SUMMARY_TEXT = "android.summaryText";
-    field public static final String EXTRA_TEMPLATE = "android.template";
-    field public static final String EXTRA_TEXT = "android.text";
-    field public static final String EXTRA_TEXT_LINES = "android.textLines";
-    field public static final String EXTRA_TITLE = "android.title";
-    field public static final String EXTRA_TITLE_BIG = "android.title.big";
-    field public static final int FLAG_AUTO_CANCEL = 16; // 0x10
-    field public static final int FLAG_BUBBLE = 4096; // 0x1000
-    field public static final int FLAG_FOREGROUND_SERVICE = 64; // 0x40
-    field public static final int FLAG_GROUP_SUMMARY = 512; // 0x200
-    field @Deprecated public static final int FLAG_HIGH_PRIORITY = 128; // 0x80
-    field public static final int FLAG_INSISTENT = 4; // 0x4
-    field public static final int FLAG_LOCAL_ONLY = 256; // 0x100
-    field public static final int FLAG_NO_CLEAR = 32; // 0x20
-    field public static final int FLAG_ONGOING_EVENT = 2; // 0x2
-    field public static final int FLAG_ONLY_ALERT_ONCE = 8; // 0x8
-    field @Deprecated public static final int FLAG_SHOW_LIGHTS = 1; // 0x1
-    field public static final int GROUP_ALERT_ALL = 0; // 0x0
-    field public static final int GROUP_ALERT_CHILDREN = 2; // 0x2
-    field public static final int GROUP_ALERT_SUMMARY = 1; // 0x1
-    field public static final String INTENT_CATEGORY_NOTIFICATION_PREFERENCES = "android.intent.category.NOTIFICATION_PREFERENCES";
-    field @Deprecated public static final int PRIORITY_DEFAULT = 0; // 0x0
-    field @Deprecated public static final int PRIORITY_HIGH = 1; // 0x1
-    field @Deprecated public static final int PRIORITY_LOW = -1; // 0xffffffff
-    field @Deprecated public static final int PRIORITY_MAX = 2; // 0x2
-    field @Deprecated public static final int PRIORITY_MIN = -2; // 0xfffffffe
-    field @Deprecated public static final int STREAM_DEFAULT = -1; // 0xffffffff
-    field public static final int VISIBILITY_PRIVATE = 0; // 0x0
-    field public static final int VISIBILITY_PUBLIC = 1; // 0x1
-    field public static final int VISIBILITY_SECRET = -1; // 0xffffffff
-    field public android.app.Notification.Action[] actions;
-    field @Deprecated public android.media.AudioAttributes audioAttributes;
-    field @Deprecated public int audioStreamType;
-    field @Deprecated public android.widget.RemoteViews bigContentView;
-    field public String category;
-    field @ColorInt public int color;
-    field public android.app.PendingIntent contentIntent;
-    field @Deprecated public android.widget.RemoteViews contentView;
-    field @Deprecated public int defaults;
-    field public android.app.PendingIntent deleteIntent;
-    field public android.os.Bundle extras;
-    field public int flags;
-    field public android.app.PendingIntent fullScreenIntent;
-    field @Deprecated public android.widget.RemoteViews headsUpContentView;
-    field @Deprecated @DrawableRes public int icon;
-    field public int iconLevel;
-    field @Deprecated public android.graphics.Bitmap largeIcon;
-    field @Deprecated @ColorInt public int ledARGB;
-    field @Deprecated public int ledOffMS;
-    field @Deprecated public int ledOnMS;
-    field public int number;
-    field @Deprecated public int priority;
-    field public android.app.Notification publicVersion;
-    field @Deprecated public android.net.Uri sound;
-    field public CharSequence tickerText;
-    field @Deprecated public android.widget.RemoteViews tickerView;
-    field @Deprecated public long[] vibrate;
-    field public int visibility;
-    field public long when;
-  }
-
-  public static class Notification.Action implements android.os.Parcelable {
-    ctor @Deprecated public Notification.Action(int, CharSequence, android.app.PendingIntent);
-    method public android.app.Notification.Action clone();
-    method public int describeContents();
-    method public boolean getAllowGeneratedReplies();
-    method public android.app.RemoteInput[] getDataOnlyRemoteInputs();
-    method public android.os.Bundle getExtras();
-    method public android.graphics.drawable.Icon getIcon();
-    method public android.app.RemoteInput[] getRemoteInputs();
-    method public int getSemanticAction();
-    method public boolean isContextual();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.Notification.Action> CREATOR;
-    field public static final int SEMANTIC_ACTION_ARCHIVE = 5; // 0x5
-    field public static final int SEMANTIC_ACTION_CALL = 10; // 0xa
-    field public static final int SEMANTIC_ACTION_DELETE = 4; // 0x4
-    field public static final int SEMANTIC_ACTION_MARK_AS_READ = 2; // 0x2
-    field public static final int SEMANTIC_ACTION_MARK_AS_UNREAD = 3; // 0x3
-    field public static final int SEMANTIC_ACTION_MUTE = 6; // 0x6
-    field public static final int SEMANTIC_ACTION_NONE = 0; // 0x0
-    field public static final int SEMANTIC_ACTION_REPLY = 1; // 0x1
-    field public static final int SEMANTIC_ACTION_THUMBS_DOWN = 9; // 0x9
-    field public static final int SEMANTIC_ACTION_THUMBS_UP = 8; // 0x8
-    field public static final int SEMANTIC_ACTION_UNMUTE = 7; // 0x7
-    field public android.app.PendingIntent actionIntent;
-    field @Deprecated public int icon;
-    field public CharSequence title;
-  }
-
-  public static final class Notification.Action.Builder {
-    ctor @Deprecated public Notification.Action.Builder(int, CharSequence, android.app.PendingIntent);
-    ctor public Notification.Action.Builder(android.graphics.drawable.Icon, CharSequence, android.app.PendingIntent);
-    ctor public Notification.Action.Builder(android.app.Notification.Action);
-    method @NonNull public android.app.Notification.Action.Builder addExtras(android.os.Bundle);
-    method @NonNull public android.app.Notification.Action.Builder addRemoteInput(android.app.RemoteInput);
-    method @NonNull public android.app.Notification.Action build();
-    method @NonNull public android.app.Notification.Action.Builder extend(android.app.Notification.Action.Extender);
-    method @NonNull public android.os.Bundle getExtras();
-    method @NonNull public android.app.Notification.Action.Builder setAllowGeneratedReplies(boolean);
-    method @NonNull public android.app.Notification.Action.Builder setContextual(boolean);
-    method @NonNull public android.app.Notification.Action.Builder setSemanticAction(int);
-  }
-
-  public static interface Notification.Action.Extender {
-    method public android.app.Notification.Action.Builder extend(android.app.Notification.Action.Builder);
-  }
-
-  public static final class Notification.Action.WearableExtender implements android.app.Notification.Action.Extender {
-    ctor public Notification.Action.WearableExtender();
-    ctor public Notification.Action.WearableExtender(android.app.Notification.Action);
-    method public android.app.Notification.Action.WearableExtender clone();
-    method public android.app.Notification.Action.Builder extend(android.app.Notification.Action.Builder);
-    method @Deprecated public CharSequence getCancelLabel();
-    method @Deprecated public CharSequence getConfirmLabel();
-    method public boolean getHintDisplayActionInline();
-    method public boolean getHintLaunchesActivity();
-    method @Deprecated public CharSequence getInProgressLabel();
-    method public boolean isAvailableOffline();
-    method public android.app.Notification.Action.WearableExtender setAvailableOffline(boolean);
-    method @Deprecated public android.app.Notification.Action.WearableExtender setCancelLabel(CharSequence);
-    method @Deprecated public android.app.Notification.Action.WearableExtender setConfirmLabel(CharSequence);
-    method public android.app.Notification.Action.WearableExtender setHintDisplayActionInline(boolean);
-    method public android.app.Notification.Action.WearableExtender setHintLaunchesActivity(boolean);
-    method @Deprecated public android.app.Notification.Action.WearableExtender setInProgressLabel(CharSequence);
-  }
-
-  public static class Notification.BigPictureStyle extends android.app.Notification.Style {
-    ctor public Notification.BigPictureStyle();
-    ctor @Deprecated public Notification.BigPictureStyle(android.app.Notification.Builder);
-    method public android.app.Notification.BigPictureStyle bigLargeIcon(android.graphics.Bitmap);
-    method public android.app.Notification.BigPictureStyle bigLargeIcon(android.graphics.drawable.Icon);
-    method public android.app.Notification.BigPictureStyle bigPicture(android.graphics.Bitmap);
-    method public android.app.Notification.BigPictureStyle setBigContentTitle(CharSequence);
-    method public android.app.Notification.BigPictureStyle setSummaryText(CharSequence);
-  }
-
-  public static class Notification.BigTextStyle extends android.app.Notification.Style {
-    ctor public Notification.BigTextStyle();
-    ctor @Deprecated public Notification.BigTextStyle(android.app.Notification.Builder);
-    method public android.app.Notification.BigTextStyle bigText(CharSequence);
-    method public android.app.Notification.BigTextStyle setBigContentTitle(CharSequence);
-    method public android.app.Notification.BigTextStyle setSummaryText(CharSequence);
-  }
-
-  public static final class Notification.BubbleMetadata implements android.os.Parcelable {
-    method public int describeContents();
-    method public boolean getAutoExpandBubble();
-    method @Nullable public android.app.PendingIntent getDeleteIntent();
-    method @Dimension(unit=android.annotation.Dimension.DP) public int getDesiredHeight();
-    method @DimenRes public int getDesiredHeightResId();
-    method @Nullable public android.graphics.drawable.Icon getIcon();
-    method @Nullable public android.app.PendingIntent getIntent();
-    method @Nullable public String getShortcutId();
-    method public boolean isNotificationSuppressed();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.Notification.BubbleMetadata> CREATOR;
-  }
-
-  public static final class Notification.BubbleMetadata.Builder {
-    ctor @Deprecated public Notification.BubbleMetadata.Builder();
-    ctor public Notification.BubbleMetadata.Builder(@NonNull String);
-    ctor public Notification.BubbleMetadata.Builder(@NonNull android.app.PendingIntent, @NonNull android.graphics.drawable.Icon);
-    method @NonNull public android.app.Notification.BubbleMetadata build();
-    method @NonNull public android.app.Notification.BubbleMetadata.Builder setAutoExpandBubble(boolean);
-    method @NonNull public android.app.Notification.BubbleMetadata.Builder setDeleteIntent(@Nullable android.app.PendingIntent);
-    method @NonNull public android.app.Notification.BubbleMetadata.Builder setDesiredHeight(@Dimension(unit=android.annotation.Dimension.DP) int);
-    method @NonNull public android.app.Notification.BubbleMetadata.Builder setDesiredHeightResId(@DimenRes int);
-    method @NonNull public android.app.Notification.BubbleMetadata.Builder setIcon(@NonNull android.graphics.drawable.Icon);
-    method @NonNull public android.app.Notification.BubbleMetadata.Builder setIntent(@NonNull android.app.PendingIntent);
-    method @NonNull public android.app.Notification.BubbleMetadata.Builder setSuppressNotification(boolean);
-  }
-
-  public static class Notification.Builder {
-    ctor public Notification.Builder(android.content.Context, String);
-    ctor @Deprecated public Notification.Builder(android.content.Context);
-    method @Deprecated public android.app.Notification.Builder addAction(int, CharSequence, android.app.PendingIntent);
-    method @NonNull public android.app.Notification.Builder addAction(android.app.Notification.Action);
-    method @NonNull public android.app.Notification.Builder addExtras(android.os.Bundle);
-    method @Deprecated public android.app.Notification.Builder addPerson(String);
-    method @NonNull public android.app.Notification.Builder addPerson(android.app.Person);
-    method @NonNull public android.app.Notification build();
-    method public android.widget.RemoteViews createBigContentView();
-    method public android.widget.RemoteViews createContentView();
-    method public android.widget.RemoteViews createHeadsUpContentView();
-    method @NonNull public android.app.Notification.Builder extend(android.app.Notification.Extender);
-    method public android.os.Bundle getExtras();
-    method @Deprecated public android.app.Notification getNotification();
-    method public android.app.Notification.Style getStyle();
-    method @NonNull public static android.app.Notification.Builder recoverBuilder(android.content.Context, android.app.Notification);
-    method @NonNull public android.app.Notification.Builder setActions(android.app.Notification.Action...);
-    method @NonNull public android.app.Notification.Builder setAllowSystemGeneratedContextualActions(boolean);
-    method @NonNull public android.app.Notification.Builder setAutoCancel(boolean);
-    method @NonNull public android.app.Notification.Builder setBadgeIconType(int);
-    method @NonNull public android.app.Notification.Builder setBubbleMetadata(@Nullable android.app.Notification.BubbleMetadata);
-    method @NonNull public android.app.Notification.Builder setCategory(String);
-    method @NonNull public android.app.Notification.Builder setChannelId(String);
-    method @NonNull public android.app.Notification.Builder setChronometerCountDown(boolean);
-    method @NonNull public android.app.Notification.Builder setColor(@ColorInt int);
-    method @NonNull public android.app.Notification.Builder setColorized(boolean);
-    method @Deprecated public android.app.Notification.Builder setContent(android.widget.RemoteViews);
-    method @Deprecated public android.app.Notification.Builder setContentInfo(CharSequence);
-    method @NonNull public android.app.Notification.Builder setContentIntent(android.app.PendingIntent);
-    method @NonNull public android.app.Notification.Builder setContentText(CharSequence);
-    method @NonNull public android.app.Notification.Builder setContentTitle(CharSequence);
-    method @NonNull public android.app.Notification.Builder setCustomBigContentView(android.widget.RemoteViews);
-    method @NonNull public android.app.Notification.Builder setCustomContentView(android.widget.RemoteViews);
-    method @NonNull public android.app.Notification.Builder setCustomHeadsUpContentView(android.widget.RemoteViews);
-    method @Deprecated public android.app.Notification.Builder setDefaults(int);
-    method @NonNull public android.app.Notification.Builder setDeleteIntent(android.app.PendingIntent);
-    method @NonNull public android.app.Notification.Builder setExtras(android.os.Bundle);
-    method @NonNull public android.app.Notification.Builder setFlag(int, boolean);
-    method @NonNull public android.app.Notification.Builder setFullScreenIntent(android.app.PendingIntent, boolean);
-    method @NonNull public android.app.Notification.Builder setGroup(String);
-    method @NonNull public android.app.Notification.Builder setGroupAlertBehavior(int);
-    method @NonNull public android.app.Notification.Builder setGroupSummary(boolean);
-    method @NonNull public android.app.Notification.Builder setLargeIcon(android.graphics.Bitmap);
-    method @NonNull public android.app.Notification.Builder setLargeIcon(android.graphics.drawable.Icon);
-    method @Deprecated public android.app.Notification.Builder setLights(@ColorInt int, int, int);
-    method @NonNull public android.app.Notification.Builder setLocalOnly(boolean);
-    method @NonNull public android.app.Notification.Builder setLocusId(@Nullable android.content.LocusId);
-    method @NonNull public android.app.Notification.Builder setNumber(int);
-    method @NonNull public android.app.Notification.Builder setOngoing(boolean);
-    method @NonNull public android.app.Notification.Builder setOnlyAlertOnce(boolean);
-    method @Deprecated public android.app.Notification.Builder setPriority(int);
-    method @NonNull public android.app.Notification.Builder setProgress(int, int, boolean);
-    method @NonNull public android.app.Notification.Builder setPublicVersion(android.app.Notification);
-    method @NonNull public android.app.Notification.Builder setRemoteInputHistory(CharSequence[]);
-    method @NonNull public android.app.Notification.Builder setSettingsText(CharSequence);
-    method @NonNull public android.app.Notification.Builder setShortcutId(String);
-    method @NonNull public android.app.Notification.Builder setShowWhen(boolean);
-    method @NonNull public android.app.Notification.Builder setSmallIcon(@DrawableRes int);
-    method @NonNull public android.app.Notification.Builder setSmallIcon(@DrawableRes int, int);
-    method @NonNull public android.app.Notification.Builder setSmallIcon(android.graphics.drawable.Icon);
-    method @NonNull public android.app.Notification.Builder setSortKey(String);
-    method @Deprecated public android.app.Notification.Builder setSound(android.net.Uri);
-    method @Deprecated public android.app.Notification.Builder setSound(android.net.Uri, int);
-    method @Deprecated public android.app.Notification.Builder setSound(android.net.Uri, android.media.AudioAttributes);
-    method @NonNull public android.app.Notification.Builder setStyle(android.app.Notification.Style);
-    method @NonNull public android.app.Notification.Builder setSubText(CharSequence);
-    method @NonNull public android.app.Notification.Builder setTicker(CharSequence);
-    method @Deprecated public android.app.Notification.Builder setTicker(CharSequence, android.widget.RemoteViews);
-    method @NonNull public android.app.Notification.Builder setTimeoutAfter(long);
-    method @NonNull public android.app.Notification.Builder setUsesChronometer(boolean);
-    method @Deprecated public android.app.Notification.Builder setVibrate(long[]);
-    method @NonNull public android.app.Notification.Builder setVisibility(int);
-    method @NonNull public android.app.Notification.Builder setWhen(long);
-  }
-
-  public static final class Notification.CarExtender implements android.app.Notification.Extender {
-    ctor public Notification.CarExtender();
-    ctor public Notification.CarExtender(android.app.Notification);
-    method public android.app.Notification.Builder extend(android.app.Notification.Builder);
-    method @ColorInt public int getColor();
-    method public android.graphics.Bitmap getLargeIcon();
-    method public android.app.Notification.CarExtender.UnreadConversation getUnreadConversation();
-    method public android.app.Notification.CarExtender setColor(@ColorInt int);
-    method public android.app.Notification.CarExtender setLargeIcon(android.graphics.Bitmap);
-    method public android.app.Notification.CarExtender setUnreadConversation(android.app.Notification.CarExtender.UnreadConversation);
-  }
-
-  public static class Notification.CarExtender.Builder {
-    ctor public Notification.CarExtender.Builder(String);
-    method public android.app.Notification.CarExtender.Builder addMessage(String);
-    method public android.app.Notification.CarExtender.UnreadConversation build();
-    method public android.app.Notification.CarExtender.Builder setLatestTimestamp(long);
-    method public android.app.Notification.CarExtender.Builder setReadPendingIntent(android.app.PendingIntent);
-    method public android.app.Notification.CarExtender.Builder setReplyAction(android.app.PendingIntent, android.app.RemoteInput);
-  }
-
-  public static class Notification.CarExtender.UnreadConversation {
-    method public long getLatestTimestamp();
-    method public String[] getMessages();
-    method public String getParticipant();
-    method public String[] getParticipants();
-    method public android.app.PendingIntent getReadPendingIntent();
-    method public android.app.RemoteInput getRemoteInput();
-    method public android.app.PendingIntent getReplyPendingIntent();
-  }
-
-  public static class Notification.DecoratedCustomViewStyle extends android.app.Notification.Style {
-    ctor public Notification.DecoratedCustomViewStyle();
-  }
-
-  public static class Notification.DecoratedMediaCustomViewStyle extends android.app.Notification.MediaStyle {
-    ctor public Notification.DecoratedMediaCustomViewStyle();
-  }
-
-  public static interface Notification.Extender {
-    method public android.app.Notification.Builder extend(android.app.Notification.Builder);
-  }
-
-  public static class Notification.InboxStyle extends android.app.Notification.Style {
-    ctor public Notification.InboxStyle();
-    ctor @Deprecated public Notification.InboxStyle(android.app.Notification.Builder);
-    method public android.app.Notification.InboxStyle addLine(CharSequence);
-    method public android.app.Notification.InboxStyle setBigContentTitle(CharSequence);
-    method public android.app.Notification.InboxStyle setSummaryText(CharSequence);
-  }
-
-  public static class Notification.MediaStyle extends android.app.Notification.Style {
-    ctor public Notification.MediaStyle();
-    ctor @Deprecated public Notification.MediaStyle(android.app.Notification.Builder);
-    method public android.app.Notification.MediaStyle setMediaSession(android.media.session.MediaSession.Token);
-    method public android.app.Notification.MediaStyle setShowActionsInCompactView(int...);
-  }
-
-  public static class Notification.MessagingStyle extends android.app.Notification.Style {
-    ctor @Deprecated public Notification.MessagingStyle(@NonNull CharSequence);
-    ctor public Notification.MessagingStyle(@NonNull android.app.Person);
-    method public android.app.Notification.MessagingStyle addHistoricMessage(android.app.Notification.MessagingStyle.Message);
-    method @Deprecated public android.app.Notification.MessagingStyle addMessage(CharSequence, long, CharSequence);
-    method public android.app.Notification.MessagingStyle addMessage(@NonNull CharSequence, long, @Nullable android.app.Person);
-    method public android.app.Notification.MessagingStyle addMessage(android.app.Notification.MessagingStyle.Message);
-    method @Nullable public CharSequence getConversationTitle();
-    method public java.util.List<android.app.Notification.MessagingStyle.Message> getHistoricMessages();
-    method public java.util.List<android.app.Notification.MessagingStyle.Message> getMessages();
-    method @NonNull public android.app.Person getUser();
-    method @Deprecated public CharSequence getUserDisplayName();
-    method public boolean isGroupConversation();
-    method public android.app.Notification.MessagingStyle setConversationTitle(@Nullable CharSequence);
-    method public android.app.Notification.MessagingStyle setGroupConversation(boolean);
-    field public static final int MAXIMUM_RETAINED_MESSAGES = 25; // 0x19
-  }
-
-  public static final class Notification.MessagingStyle.Message {
-    ctor @Deprecated public Notification.MessagingStyle.Message(CharSequence, long, CharSequence);
-    ctor public Notification.MessagingStyle.Message(@NonNull CharSequence, long, @Nullable android.app.Person);
-    method public String getDataMimeType();
-    method public android.net.Uri getDataUri();
-    method public android.os.Bundle getExtras();
-    method @NonNull public static java.util.List<android.app.Notification.MessagingStyle.Message> getMessagesFromBundleArray(@Nullable android.os.Parcelable[]);
-    method @Deprecated public CharSequence getSender();
-    method @Nullable public android.app.Person getSenderPerson();
-    method public CharSequence getText();
-    method public long getTimestamp();
-    method public android.app.Notification.MessagingStyle.Message setData(String, android.net.Uri);
-  }
-
-  public abstract static class Notification.Style {
-    ctor public Notification.Style();
-    method public android.app.Notification build();
-    method protected void checkBuilder();
-    method protected android.widget.RemoteViews getStandardView(int);
-    method protected void internalSetBigContentTitle(CharSequence);
-    method protected void internalSetSummaryText(CharSequence);
-    method public void setBuilder(android.app.Notification.Builder);
-    field protected android.app.Notification.Builder mBuilder;
-  }
-
-  public static final class Notification.WearableExtender implements android.app.Notification.Extender {
-    ctor public Notification.WearableExtender();
-    ctor public Notification.WearableExtender(android.app.Notification);
-    method public android.app.Notification.WearableExtender addAction(android.app.Notification.Action);
-    method public android.app.Notification.WearableExtender addActions(java.util.List<android.app.Notification.Action>);
-    method @Deprecated public android.app.Notification.WearableExtender addPage(android.app.Notification);
-    method @Deprecated public android.app.Notification.WearableExtender addPages(java.util.List<android.app.Notification>);
-    method public android.app.Notification.WearableExtender clearActions();
-    method @Deprecated public android.app.Notification.WearableExtender clearPages();
-    method public android.app.Notification.WearableExtender clone();
-    method public android.app.Notification.Builder extend(android.app.Notification.Builder);
-    method public java.util.List<android.app.Notification.Action> getActions();
-    method @Deprecated public android.graphics.Bitmap getBackground();
-    method public String getBridgeTag();
-    method public int getContentAction();
-    method @Deprecated public int getContentIcon();
-    method @Deprecated public int getContentIconGravity();
-    method public boolean getContentIntentAvailableOffline();
-    method @Deprecated public int getCustomContentHeight();
-    method @Deprecated public int getCustomSizePreset();
-    method public String getDismissalId();
-    method @Deprecated public android.app.PendingIntent getDisplayIntent();
-    method @Deprecated public int getGravity();
-    method @Deprecated public boolean getHintAmbientBigPicture();
-    method @Deprecated public boolean getHintAvoidBackgroundClipping();
-    method public boolean getHintContentIntentLaunchesActivity();
-    method @Deprecated public boolean getHintHideIcon();
-    method @Deprecated public int getHintScreenTimeout();
-    method @Deprecated public boolean getHintShowBackgroundOnly();
-    method @Deprecated public java.util.List<android.app.Notification> getPages();
-    method public boolean getStartScrollBottom();
-    method @Deprecated public android.app.Notification.WearableExtender setBackground(android.graphics.Bitmap);
-    method public android.app.Notification.WearableExtender setBridgeTag(String);
-    method public android.app.Notification.WearableExtender setContentAction(int);
-    method @Deprecated public android.app.Notification.WearableExtender setContentIcon(int);
-    method @Deprecated public android.app.Notification.WearableExtender setContentIconGravity(int);
-    method public android.app.Notification.WearableExtender setContentIntentAvailableOffline(boolean);
-    method @Deprecated public android.app.Notification.WearableExtender setCustomContentHeight(int);
-    method @Deprecated public android.app.Notification.WearableExtender setCustomSizePreset(int);
-    method public android.app.Notification.WearableExtender setDismissalId(String);
-    method @Deprecated public android.app.Notification.WearableExtender setDisplayIntent(android.app.PendingIntent);
-    method @Deprecated public android.app.Notification.WearableExtender setGravity(int);
-    method @Deprecated public android.app.Notification.WearableExtender setHintAmbientBigPicture(boolean);
-    method @Deprecated public android.app.Notification.WearableExtender setHintAvoidBackgroundClipping(boolean);
-    method public android.app.Notification.WearableExtender setHintContentIntentLaunchesActivity(boolean);
-    method @Deprecated public android.app.Notification.WearableExtender setHintHideIcon(boolean);
-    method @Deprecated public android.app.Notification.WearableExtender setHintScreenTimeout(int);
-    method @Deprecated public android.app.Notification.WearableExtender setHintShowBackgroundOnly(boolean);
-    method public android.app.Notification.WearableExtender setStartScrollBottom(boolean);
-    field @Deprecated public static final int SCREEN_TIMEOUT_LONG = -1; // 0xffffffff
-    field @Deprecated public static final int SCREEN_TIMEOUT_SHORT = 0; // 0x0
-    field @Deprecated public static final int SIZE_DEFAULT = 0; // 0x0
-    field @Deprecated public static final int SIZE_FULL_SCREEN = 5; // 0x5
-    field @Deprecated public static final int SIZE_LARGE = 4; // 0x4
-    field @Deprecated public static final int SIZE_MEDIUM = 3; // 0x3
-    field @Deprecated public static final int SIZE_SMALL = 2; // 0x2
-    field @Deprecated public static final int SIZE_XSMALL = 1; // 0x1
-    field public static final int UNSET_ACTION_INDEX = -1; // 0xffffffff
-  }
-
-  public final class NotificationChannel implements android.os.Parcelable {
-    ctor public NotificationChannel(String, CharSequence, int);
-    method public boolean canBubble();
-    method public boolean canBypassDnd();
-    method public boolean canShowBadge();
-    method public int describeContents();
-    method public void enableLights(boolean);
-    method public void enableVibration(boolean);
-    method public android.media.AudioAttributes getAudioAttributes();
-    method @Nullable public String getConversationId();
-    method public String getDescription();
-    method public String getGroup();
-    method public String getId();
-    method public int getImportance();
-    method public int getLightColor();
-    method public int getLockscreenVisibility();
-    method public CharSequence getName();
-    method @Nullable public String getParentChannelId();
-    method public android.net.Uri getSound();
-    method public long[] getVibrationPattern();
-    method public boolean hasUserSetImportance();
-    method public boolean hasUserSetSound();
-    method public boolean isImportantConversation();
-    method public void setAllowBubbles(boolean);
-    method public void setBypassDnd(boolean);
-    method public void setConversationId(@NonNull String, @NonNull String);
-    method public void setDescription(String);
-    method public void setGroup(String);
-    method public void setImportance(int);
-    method public void setLightColor(int);
-    method public void setLockscreenVisibility(int);
-    method public void setName(CharSequence);
-    method public void setShowBadge(boolean);
-    method public void setSound(android.net.Uri, android.media.AudioAttributes);
-    method public void setVibrationPattern(long[]);
-    method public boolean shouldShowLights();
-    method public boolean shouldVibrate();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.NotificationChannel> CREATOR;
-    field public static final String DEFAULT_CHANNEL_ID = "miscellaneous";
-  }
-
-  public final class NotificationChannelGroup implements android.os.Parcelable {
-    ctor public NotificationChannelGroup(String, CharSequence);
-    method public android.app.NotificationChannelGroup clone();
-    method public int describeContents();
-    method public java.util.List<android.app.NotificationChannel> getChannels();
-    method public String getDescription();
-    method public String getId();
-    method public CharSequence getName();
-    method public boolean isBlocked();
-    method public void setDescription(String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.NotificationChannelGroup> CREATOR;
-  }
-
-  public class NotificationManager {
-    method public String addAutomaticZenRule(android.app.AutomaticZenRule);
-    method public boolean areBubblesAllowed();
-    method public boolean areNotificationsEnabled();
-    method public boolean areNotificationsPaused();
-    method public boolean canNotifyAsPackage(@NonNull String);
-    method public void cancel(int);
-    method public void cancel(@Nullable String, int);
-    method public void cancelAll();
-    method public void cancelAsPackage(@NonNull String, @Nullable String, int);
-    method public void createNotificationChannel(@NonNull android.app.NotificationChannel);
-    method public void createNotificationChannelGroup(@NonNull android.app.NotificationChannelGroup);
-    method public void createNotificationChannelGroups(@NonNull java.util.List<android.app.NotificationChannelGroup>);
-    method public void createNotificationChannels(@NonNull java.util.List<android.app.NotificationChannel>);
-    method public void deleteNotificationChannel(String);
-    method public void deleteNotificationChannelGroup(String);
-    method public android.service.notification.StatusBarNotification[] getActiveNotifications();
-    method public android.app.AutomaticZenRule getAutomaticZenRule(String);
-    method public java.util.Map<java.lang.String,android.app.AutomaticZenRule> getAutomaticZenRules();
-    method @NonNull public android.app.NotificationManager.Policy getConsolidatedNotificationPolicy();
-    method public final int getCurrentInterruptionFilter();
-    method public int getImportance();
-    method public android.app.NotificationChannel getNotificationChannel(String);
-    method @Nullable public android.app.NotificationChannel getNotificationChannel(@NonNull String, @NonNull String);
-    method public android.app.NotificationChannelGroup getNotificationChannelGroup(String);
-    method public java.util.List<android.app.NotificationChannelGroup> getNotificationChannelGroups();
-    method public java.util.List<android.app.NotificationChannel> getNotificationChannels();
-    method @Nullable public String getNotificationDelegate();
-    method public android.app.NotificationManager.Policy getNotificationPolicy();
-    method public boolean isNotificationListenerAccessGranted(android.content.ComponentName);
-    method public boolean isNotificationPolicyAccessGranted();
-    method public void notify(int, android.app.Notification);
-    method public void notify(String, int, android.app.Notification);
-    method public void notifyAsPackage(@NonNull String, @Nullable String, int, @NonNull android.app.Notification);
-    method public boolean removeAutomaticZenRule(String);
-    method public void setAutomaticZenRuleState(@NonNull String, @NonNull android.service.notification.Condition);
-    method public final void setInterruptionFilter(int);
-    method public void setNotificationDelegate(@Nullable String);
-    method public void setNotificationPolicy(@NonNull android.app.NotificationManager.Policy);
-    method public boolean shouldHideSilentStatusBarIcons();
-    method public boolean updateAutomaticZenRule(String, android.app.AutomaticZenRule);
-    field public static final String ACTION_APP_BLOCK_STATE_CHANGED = "android.app.action.APP_BLOCK_STATE_CHANGED";
-    field public static final String ACTION_AUTOMATIC_ZEN_RULE = "android.app.action.AUTOMATIC_ZEN_RULE";
-    field public static final String ACTION_AUTOMATIC_ZEN_RULE_STATUS_CHANGED = "android.app.action.AUTOMATIC_ZEN_RULE_STATUS_CHANGED";
-    field public static final String ACTION_INTERRUPTION_FILTER_CHANGED = "android.app.action.INTERRUPTION_FILTER_CHANGED";
-    field public static final String ACTION_NOTIFICATION_CHANNEL_BLOCK_STATE_CHANGED = "android.app.action.NOTIFICATION_CHANNEL_BLOCK_STATE_CHANGED";
-    field public static final String ACTION_NOTIFICATION_CHANNEL_GROUP_BLOCK_STATE_CHANGED = "android.app.action.NOTIFICATION_CHANNEL_GROUP_BLOCK_STATE_CHANGED";
-    field public static final String ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED = "android.app.action.NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED";
-    field public static final String ACTION_NOTIFICATION_POLICY_CHANGED = "android.app.action.NOTIFICATION_POLICY_CHANGED";
-    field public static final int AUTOMATIC_RULE_STATUS_DISABLED = 2; // 0x2
-    field public static final int AUTOMATIC_RULE_STATUS_ENABLED = 1; // 0x1
-    field public static final int AUTOMATIC_RULE_STATUS_REMOVED = 3; // 0x3
-    field public static final int AUTOMATIC_RULE_STATUS_UNKNOWN = -1; // 0xffffffff
-    field public static final String EXTRA_AUTOMATIC_RULE_ID = "android.app.extra.AUTOMATIC_RULE_ID";
-    field public static final String EXTRA_AUTOMATIC_ZEN_RULE_ID = "android.app.extra.AUTOMATIC_ZEN_RULE_ID";
-    field public static final String EXTRA_AUTOMATIC_ZEN_RULE_STATUS = "android.app.extra.AUTOMATIC_ZEN_RULE_STATUS";
-    field public static final String EXTRA_BLOCKED_STATE = "android.app.extra.BLOCKED_STATE";
-    field public static final String EXTRA_NOTIFICATION_CHANNEL_GROUP_ID = "android.app.extra.NOTIFICATION_CHANNEL_GROUP_ID";
-    field public static final String EXTRA_NOTIFICATION_CHANNEL_ID = "android.app.extra.NOTIFICATION_CHANNEL_ID";
-    field public static final int IMPORTANCE_DEFAULT = 3; // 0x3
-    field public static final int IMPORTANCE_HIGH = 4; // 0x4
-    field public static final int IMPORTANCE_LOW = 2; // 0x2
-    field public static final int IMPORTANCE_MAX = 5; // 0x5
-    field public static final int IMPORTANCE_MIN = 1; // 0x1
-    field public static final int IMPORTANCE_NONE = 0; // 0x0
-    field public static final int IMPORTANCE_UNSPECIFIED = -1000; // 0xfffffc18
-    field public static final int INTERRUPTION_FILTER_ALARMS = 4; // 0x4
-    field public static final int INTERRUPTION_FILTER_ALL = 1; // 0x1
-    field public static final int INTERRUPTION_FILTER_NONE = 3; // 0x3
-    field public static final int INTERRUPTION_FILTER_PRIORITY = 2; // 0x2
-    field public static final int INTERRUPTION_FILTER_UNKNOWN = 0; // 0x0
-    field public static final String META_DATA_AUTOMATIC_RULE_TYPE = "android.service.zen.automatic.ruleType";
-    field public static final String META_DATA_RULE_INSTANCE_LIMIT = "android.service.zen.automatic.ruleInstanceLimit";
-  }
-
-  public static class NotificationManager.Policy implements android.os.Parcelable {
-    ctor public NotificationManager.Policy(int, int, int);
-    ctor public NotificationManager.Policy(int, int, int, int);
-    ctor public NotificationManager.Policy(int, int, int, int, int);
-    method public int describeContents();
-    method public static String priorityCategoriesToString(int);
-    method public static String prioritySendersToString(int);
-    method public static String suppressedEffectsToString(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CONVERSATION_SENDERS_ANYONE = 1; // 0x1
-    field public static final int CONVERSATION_SENDERS_IMPORTANT = 2; // 0x2
-    field public static final int CONVERSATION_SENDERS_NONE = 3; // 0x3
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.NotificationManager.Policy> CREATOR;
-    field public static final int PRIORITY_CATEGORY_ALARMS = 32; // 0x20
-    field public static final int PRIORITY_CATEGORY_CALLS = 8; // 0x8
-    field public static final int PRIORITY_CATEGORY_CONVERSATIONS = 256; // 0x100
-    field public static final int PRIORITY_CATEGORY_EVENTS = 2; // 0x2
-    field public static final int PRIORITY_CATEGORY_MEDIA = 64; // 0x40
-    field public static final int PRIORITY_CATEGORY_MESSAGES = 4; // 0x4
-    field public static final int PRIORITY_CATEGORY_REMINDERS = 1; // 0x1
-    field public static final int PRIORITY_CATEGORY_REPEAT_CALLERS = 16; // 0x10
-    field public static final int PRIORITY_CATEGORY_SYSTEM = 128; // 0x80
-    field public static final int PRIORITY_SENDERS_ANY = 0; // 0x0
-    field public static final int PRIORITY_SENDERS_CONTACTS = 1; // 0x1
-    field public static final int PRIORITY_SENDERS_STARRED = 2; // 0x2
-    field public static final int SUPPRESSED_EFFECT_AMBIENT = 128; // 0x80
-    field public static final int SUPPRESSED_EFFECT_BADGE = 64; // 0x40
-    field public static final int SUPPRESSED_EFFECT_FULL_SCREEN_INTENT = 4; // 0x4
-    field public static final int SUPPRESSED_EFFECT_LIGHTS = 8; // 0x8
-    field public static final int SUPPRESSED_EFFECT_NOTIFICATION_LIST = 256; // 0x100
-    field public static final int SUPPRESSED_EFFECT_PEEK = 16; // 0x10
-    field @Deprecated public static final int SUPPRESSED_EFFECT_SCREEN_OFF = 1; // 0x1
-    field @Deprecated public static final int SUPPRESSED_EFFECT_SCREEN_ON = 2; // 0x2
-    field public static final int SUPPRESSED_EFFECT_STATUS_BAR = 32; // 0x20
-    field public final int priorityCallSenders;
-    field public final int priorityCategories;
-    field public final int priorityConversationSenders;
-    field public final int priorityMessageSenders;
-    field public final int suppressedVisualEffects;
-  }
-
-  public final class PendingIntent implements android.os.Parcelable {
-    method public void cancel();
-    method public int describeContents();
-    method public static android.app.PendingIntent getActivities(android.content.Context, int, @NonNull android.content.Intent[], int);
-    method public static android.app.PendingIntent getActivities(android.content.Context, int, @NonNull android.content.Intent[], int, @Nullable android.os.Bundle);
-    method public static android.app.PendingIntent getActivity(android.content.Context, int, android.content.Intent, int);
-    method public static android.app.PendingIntent getActivity(android.content.Context, int, @NonNull android.content.Intent, int, @Nullable android.os.Bundle);
-    method public static android.app.PendingIntent getBroadcast(android.content.Context, int, android.content.Intent, int);
-    method @Nullable public String getCreatorPackage();
-    method public int getCreatorUid();
-    method @Nullable public android.os.UserHandle getCreatorUserHandle();
-    method public static android.app.PendingIntent getForegroundService(android.content.Context, int, @NonNull android.content.Intent, int);
-    method public android.content.IntentSender getIntentSender();
-    method public static android.app.PendingIntent getService(android.content.Context, int, @NonNull android.content.Intent, int);
-    method @Deprecated public String getTargetPackage();
-    method @Nullable public static android.app.PendingIntent readPendingIntentOrNullFromParcel(@NonNull android.os.Parcel);
-    method public void send() throws android.app.PendingIntent.CanceledException;
-    method public void send(int) throws android.app.PendingIntent.CanceledException;
-    method public void send(android.content.Context, int, @Nullable android.content.Intent) throws android.app.PendingIntent.CanceledException;
-    method public void send(int, @Nullable android.app.PendingIntent.OnFinished, @Nullable android.os.Handler) throws android.app.PendingIntent.CanceledException;
-    method public void send(android.content.Context, int, @Nullable android.content.Intent, @Nullable android.app.PendingIntent.OnFinished, @Nullable android.os.Handler) throws android.app.PendingIntent.CanceledException;
-    method public void send(android.content.Context, int, @Nullable android.content.Intent, @Nullable android.app.PendingIntent.OnFinished, @Nullable android.os.Handler, @Nullable String) throws android.app.PendingIntent.CanceledException;
-    method public void send(android.content.Context, int, @Nullable android.content.Intent, @Nullable android.app.PendingIntent.OnFinished, @Nullable android.os.Handler, @Nullable String, @Nullable android.os.Bundle) throws android.app.PendingIntent.CanceledException;
-    method public static void writePendingIntentOrNullToParcel(@Nullable android.app.PendingIntent, @NonNull android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.PendingIntent> CREATOR;
-    field public static final int FLAG_CANCEL_CURRENT = 268435456; // 0x10000000
-    field public static final int FLAG_IMMUTABLE = 67108864; // 0x4000000
-    field public static final int FLAG_NO_CREATE = 536870912; // 0x20000000
-    field public static final int FLAG_ONE_SHOT = 1073741824; // 0x40000000
-    field public static final int FLAG_UPDATE_CURRENT = 134217728; // 0x8000000
-  }
-
-  public static class PendingIntent.CanceledException extends android.util.AndroidException {
-    ctor public PendingIntent.CanceledException();
-    ctor public PendingIntent.CanceledException(String);
-    ctor public PendingIntent.CanceledException(Exception);
-  }
-
-  public static interface PendingIntent.OnFinished {
-    method public void onSendFinished(android.app.PendingIntent, android.content.Intent, int, String, android.os.Bundle);
-  }
-
-  public final class Person implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.graphics.drawable.Icon getIcon();
-    method @Nullable public String getKey();
-    method @Nullable public CharSequence getName();
-    method @Nullable public String getUri();
-    method public boolean isBot();
-    method public boolean isImportant();
-    method public android.app.Person.Builder toBuilder();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.Person> CREATOR;
-  }
-
-  public static class Person.Builder {
-    ctor public Person.Builder();
-    method @NonNull public android.app.Person build();
-    method @NonNull public android.app.Person.Builder setBot(boolean);
-    method @NonNull public android.app.Person.Builder setIcon(@Nullable android.graphics.drawable.Icon);
-    method @NonNull public android.app.Person.Builder setImportant(boolean);
-    method @NonNull public android.app.Person.Builder setKey(@Nullable String);
-    method @NonNull public android.app.Person.Builder setName(@Nullable CharSequence);
-    method @NonNull public android.app.Person.Builder setUri(@Nullable String);
-  }
-
-  public final class PictureInPictureParams implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.PictureInPictureParams> CREATOR;
-  }
-
-  public static class PictureInPictureParams.Builder {
-    ctor public PictureInPictureParams.Builder();
-    method public android.app.PictureInPictureParams build();
-    method public android.app.PictureInPictureParams.Builder setActions(java.util.List<android.app.RemoteAction>);
-    method public android.app.PictureInPictureParams.Builder setAspectRatio(android.util.Rational);
-    method public android.app.PictureInPictureParams.Builder setSourceRectHint(android.graphics.Rect);
-  }
-
-  public class Presentation extends android.app.Dialog {
-    ctor public Presentation(android.content.Context, android.view.Display);
-    ctor public Presentation(android.content.Context, android.view.Display, int);
-    method public android.view.Display getDisplay();
-    method public android.content.res.Resources getResources();
-    method public void onDisplayChanged();
-    method public void onDisplayRemoved();
-  }
-
-  @Deprecated public class ProgressDialog extends android.app.AlertDialog {
-    ctor @Deprecated public ProgressDialog(android.content.Context);
-    ctor @Deprecated public ProgressDialog(android.content.Context, int);
-    method @Deprecated public int getMax();
-    method @Deprecated public int getProgress();
-    method @Deprecated public int getSecondaryProgress();
-    method @Deprecated public void incrementProgressBy(int);
-    method @Deprecated public void incrementSecondaryProgressBy(int);
-    method @Deprecated public boolean isIndeterminate();
-    method @Deprecated public void onStart();
-    method @Deprecated public void setIndeterminate(boolean);
-    method @Deprecated public void setIndeterminateDrawable(android.graphics.drawable.Drawable);
-    method @Deprecated public void setMax(int);
-    method @Deprecated public void setProgress(int);
-    method @Deprecated public void setProgressDrawable(android.graphics.drawable.Drawable);
-    method @Deprecated public void setProgressNumberFormat(String);
-    method @Deprecated public void setProgressPercentFormat(java.text.NumberFormat);
-    method @Deprecated public void setProgressStyle(int);
-    method @Deprecated public void setSecondaryProgress(int);
-    method @Deprecated public static android.app.ProgressDialog show(android.content.Context, CharSequence, CharSequence);
-    method @Deprecated public static android.app.ProgressDialog show(android.content.Context, CharSequence, CharSequence, boolean);
-    method @Deprecated public static android.app.ProgressDialog show(android.content.Context, CharSequence, CharSequence, boolean, boolean);
-    method @Deprecated public static android.app.ProgressDialog show(android.content.Context, CharSequence, CharSequence, boolean, boolean, android.content.DialogInterface.OnCancelListener);
-    field @Deprecated public static final int STYLE_HORIZONTAL = 1; // 0x1
-    field @Deprecated public static final int STYLE_SPINNER = 0; // 0x0
-  }
-
-  public final class RecoverableSecurityException extends java.lang.SecurityException implements android.os.Parcelable {
-    ctor public RecoverableSecurityException(@NonNull Throwable, @NonNull CharSequence, @NonNull android.app.RemoteAction);
-    method public int describeContents();
-    method @NonNull public android.app.RemoteAction getUserAction();
-    method @NonNull public CharSequence getUserMessage();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.RecoverableSecurityException> CREATOR;
-  }
-
-  public final class RemoteAction implements android.os.Parcelable {
-    ctor public RemoteAction(@NonNull android.graphics.drawable.Icon, @NonNull CharSequence, @NonNull CharSequence, @NonNull android.app.PendingIntent);
-    method public android.app.RemoteAction clone();
-    method public int describeContents();
-    method public void dump(String, java.io.PrintWriter);
-    method @NonNull public android.app.PendingIntent getActionIntent();
-    method @NonNull public CharSequence getContentDescription();
-    method @NonNull public android.graphics.drawable.Icon getIcon();
-    method @NonNull public CharSequence getTitle();
-    method public boolean isEnabled();
-    method public void setEnabled(boolean);
-    method public void setShouldShowIcon(boolean);
-    method public boolean shouldShowIcon();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.RemoteAction> CREATOR;
-  }
-
-  public final class RemoteInput implements android.os.Parcelable {
-    method public static void addDataResultToIntent(android.app.RemoteInput, android.content.Intent, java.util.Map<java.lang.String,android.net.Uri>);
-    method public static void addResultsToIntent(android.app.RemoteInput[], android.content.Intent, android.os.Bundle);
-    method public int describeContents();
-    method public boolean getAllowFreeFormInput();
-    method public java.util.Set<java.lang.String> getAllowedDataTypes();
-    method public CharSequence[] getChoices();
-    method public static java.util.Map<java.lang.String,android.net.Uri> getDataResultsFromIntent(android.content.Intent, String);
-    method public int getEditChoicesBeforeSending();
-    method public android.os.Bundle getExtras();
-    method public CharSequence getLabel();
-    method public String getResultKey();
-    method public static android.os.Bundle getResultsFromIntent(android.content.Intent);
-    method public static int getResultsSource(android.content.Intent);
-    method public boolean isDataOnly();
-    method public static void setResultsSource(android.content.Intent, int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.RemoteInput> CREATOR;
-    field public static final int EDIT_CHOICES_BEFORE_SENDING_AUTO = 0; // 0x0
-    field public static final int EDIT_CHOICES_BEFORE_SENDING_DISABLED = 1; // 0x1
-    field public static final int EDIT_CHOICES_BEFORE_SENDING_ENABLED = 2; // 0x2
-    field public static final String EXTRA_RESULTS_DATA = "android.remoteinput.resultsData";
-    field public static final String RESULTS_CLIP_LABEL = "android.remoteinput.results";
-    field public static final int SOURCE_CHOICE = 1; // 0x1
-    field public static final int SOURCE_FREE_FORM_INPUT = 0; // 0x0
-  }
-
-  public static final class RemoteInput.Builder {
-    ctor public RemoteInput.Builder(@NonNull String);
-    method @NonNull public android.app.RemoteInput.Builder addExtras(@NonNull android.os.Bundle);
-    method @NonNull public android.app.RemoteInput build();
-    method @NonNull public android.os.Bundle getExtras();
-    method @NonNull public android.app.RemoteInput.Builder setAllowDataType(@NonNull String, boolean);
-    method @NonNull public android.app.RemoteInput.Builder setAllowFreeFormInput(boolean);
-    method @NonNull public android.app.RemoteInput.Builder setChoices(@Nullable CharSequence[]);
-    method @NonNull public android.app.RemoteInput.Builder setEditChoicesBeforeSending(int);
-    method @NonNull public android.app.RemoteInput.Builder setLabel(@Nullable CharSequence);
-  }
-
-  public class SearchManager implements android.content.DialogInterface.OnCancelListener android.content.DialogInterface.OnDismissListener {
-    method public android.content.ComponentName getGlobalSearchActivity();
-    method public android.app.SearchableInfo getSearchableInfo(android.content.ComponentName);
-    method public java.util.List<android.app.SearchableInfo> getSearchablesInGlobalSearch();
-    method @Deprecated public void onCancel(android.content.DialogInterface);
-    method @Deprecated public void onDismiss(android.content.DialogInterface);
-    method public void setOnCancelListener(android.app.SearchManager.OnCancelListener);
-    method public void setOnDismissListener(android.app.SearchManager.OnDismissListener);
-    method public void startSearch(String, boolean, android.content.ComponentName, android.os.Bundle, boolean);
-    method public void stopSearch();
-    method public void triggerSearch(String, android.content.ComponentName, android.os.Bundle);
-    field public static final String ACTION_KEY = "action_key";
-    field public static final String ACTION_MSG = "action_msg";
-    field public static final String APP_DATA = "app_data";
-    field public static final String CURSOR_EXTRA_KEY_IN_PROGRESS = "in_progress";
-    field public static final String EXTRA_DATA_KEY = "intent_extra_data_key";
-    field public static final String EXTRA_NEW_SEARCH = "new_search";
-    field public static final String EXTRA_SELECT_QUERY = "select_query";
-    field public static final String EXTRA_WEB_SEARCH_PENDINGINTENT = "web_search_pendingintent";
-    field public static final int FLAG_QUERY_REFINEMENT = 1; // 0x1
-    field public static final String INTENT_ACTION_GLOBAL_SEARCH = "android.search.action.GLOBAL_SEARCH";
-    field public static final String INTENT_ACTION_SEARCHABLES_CHANGED = "android.search.action.SEARCHABLES_CHANGED";
-    field public static final String INTENT_ACTION_SEARCH_SETTINGS = "android.search.action.SEARCH_SETTINGS";
-    field public static final String INTENT_ACTION_SEARCH_SETTINGS_CHANGED = "android.search.action.SETTINGS_CHANGED";
-    field public static final String INTENT_ACTION_WEB_SEARCH_SETTINGS = "android.search.action.WEB_SEARCH_SETTINGS";
-    field public static final String INTENT_GLOBAL_SEARCH_ACTIVITY_CHANGED = "android.search.action.GLOBAL_SEARCH_ACTIVITY_CHANGED";
-    field public static final char MENU_KEY = 115; // 0x0073 's'
-    field public static final int MENU_KEYCODE = 47; // 0x2f
-    field public static final String QUERY = "query";
-    field public static final String SHORTCUT_MIME_TYPE = "vnd.android.cursor.item/vnd.android.search.suggest";
-    field public static final String SUGGEST_COLUMN_AUDIO_CHANNEL_CONFIG = "suggest_audio_channel_config";
-    field public static final String SUGGEST_COLUMN_CONTENT_TYPE = "suggest_content_type";
-    field public static final String SUGGEST_COLUMN_DURATION = "suggest_duration";
-    field public static final String SUGGEST_COLUMN_FLAGS = "suggest_flags";
-    field public static final String SUGGEST_COLUMN_FORMAT = "suggest_format";
-    field public static final String SUGGEST_COLUMN_ICON_1 = "suggest_icon_1";
-    field public static final String SUGGEST_COLUMN_ICON_2 = "suggest_icon_2";
-    field public static final String SUGGEST_COLUMN_INTENT_ACTION = "suggest_intent_action";
-    field public static final String SUGGEST_COLUMN_INTENT_DATA = "suggest_intent_data";
-    field public static final String SUGGEST_COLUMN_INTENT_DATA_ID = "suggest_intent_data_id";
-    field public static final String SUGGEST_COLUMN_INTENT_EXTRA_DATA = "suggest_intent_extra_data";
-    field public static final String SUGGEST_COLUMN_IS_LIVE = "suggest_is_live";
-    field public static final String SUGGEST_COLUMN_LAST_ACCESS_HINT = "suggest_last_access_hint";
-    field public static final String SUGGEST_COLUMN_PRODUCTION_YEAR = "suggest_production_year";
-    field public static final String SUGGEST_COLUMN_PURCHASE_PRICE = "suggest_purchase_price";
-    field public static final String SUGGEST_COLUMN_QUERY = "suggest_intent_query";
-    field public static final String SUGGEST_COLUMN_RATING_SCORE = "suggest_rating_score";
-    field public static final String SUGGEST_COLUMN_RATING_STYLE = "suggest_rating_style";
-    field public static final String SUGGEST_COLUMN_RENTAL_PRICE = "suggest_rental_price";
-    field public static final String SUGGEST_COLUMN_RESULT_CARD_IMAGE = "suggest_result_card_image";
-    field public static final String SUGGEST_COLUMN_SHORTCUT_ID = "suggest_shortcut_id";
-    field public static final String SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING = "suggest_spinner_while_refreshing";
-    field public static final String SUGGEST_COLUMN_TEXT_1 = "suggest_text_1";
-    field public static final String SUGGEST_COLUMN_TEXT_2 = "suggest_text_2";
-    field public static final String SUGGEST_COLUMN_TEXT_2_URL = "suggest_text_2_url";
-    field public static final String SUGGEST_COLUMN_VIDEO_HEIGHT = "suggest_video_height";
-    field public static final String SUGGEST_COLUMN_VIDEO_WIDTH = "suggest_video_width";
-    field public static final String SUGGEST_MIME_TYPE = "vnd.android.cursor.dir/vnd.android.search.suggest";
-    field public static final String SUGGEST_NEVER_MAKE_SHORTCUT = "_-1";
-    field public static final String SUGGEST_PARAMETER_LIMIT = "limit";
-    field public static final String SUGGEST_URI_PATH_QUERY = "search_suggest_query";
-    field public static final String SUGGEST_URI_PATH_SHORTCUT = "search_suggest_shortcut";
-    field public static final String USER_QUERY = "user_query";
-  }
-
-  public static interface SearchManager.OnCancelListener {
-    method public void onCancel();
-  }
-
-  public static interface SearchManager.OnDismissListener {
-    method public void onDismiss();
-  }
-
-  public final class SearchableInfo implements android.os.Parcelable {
-    method public boolean autoUrlDetect();
-    method public int describeContents();
-    method public int getHintId();
-    method public int getImeOptions();
-    method public int getInputType();
-    method public android.content.ComponentName getSearchActivity();
-    method public int getSettingsDescriptionId();
-    method public String getSuggestAuthority();
-    method public String getSuggestIntentAction();
-    method public String getSuggestIntentData();
-    method public String getSuggestPackage();
-    method public String getSuggestPath();
-    method public String getSuggestSelection();
-    method public int getSuggestThreshold();
-    method @StringRes public int getVoiceLanguageId();
-    method @StringRes public int getVoiceLanguageModeId();
-    method public int getVoiceMaxResults();
-    method @StringRes public int getVoicePromptTextId();
-    method public boolean getVoiceSearchEnabled();
-    method public boolean getVoiceSearchLaunchRecognizer();
-    method public boolean getVoiceSearchLaunchWebSearch();
-    method public boolean queryAfterZeroResults();
-    method public boolean shouldIncludeInGlobalSearch();
-    method public boolean shouldRewriteQueryFromData();
-    method public boolean shouldRewriteQueryFromText();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.SearchableInfo> CREATOR;
-  }
-
-  public abstract class Service extends android.content.ContextWrapper implements android.content.ComponentCallbacks2 {
-    ctor public Service();
-    method protected void dump(java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method public final android.app.Application getApplication();
-    method public final int getForegroundServiceType();
-    method @Nullable public abstract android.os.IBinder onBind(android.content.Intent);
-    method public void onConfigurationChanged(android.content.res.Configuration);
-    method public void onCreate();
-    method public void onDestroy();
-    method public void onLowMemory();
-    method public void onRebind(android.content.Intent);
-    method @Deprecated public void onStart(android.content.Intent, int);
-    method public int onStartCommand(android.content.Intent, int, int);
-    method public void onTaskRemoved(android.content.Intent);
-    method public void onTrimMemory(int);
-    method public boolean onUnbind(android.content.Intent);
-    method public final void startForeground(int, android.app.Notification);
-    method public final void startForeground(int, @NonNull android.app.Notification, int);
-    method public final void stopForeground(boolean);
-    method public final void stopForeground(int);
-    method public final void stopSelf();
-    method public final void stopSelf(int);
-    method public final boolean stopSelfResult(int);
-    field public static final int START_CONTINUATION_MASK = 15; // 0xf
-    field public static final int START_FLAG_REDELIVERY = 1; // 0x1
-    field public static final int START_FLAG_RETRY = 2; // 0x2
-    field public static final int START_NOT_STICKY = 2; // 0x2
-    field public static final int START_REDELIVER_INTENT = 3; // 0x3
-    field public static final int START_STICKY = 1; // 0x1
-    field public static final int START_STICKY_COMPATIBILITY = 0; // 0x0
-    field public static final int STOP_FOREGROUND_DETACH = 2; // 0x2
-    field public static final int STOP_FOREGROUND_REMOVE = 1; // 0x1
-  }
-
-  public abstract class SharedElementCallback {
-    ctor public SharedElementCallback();
-    method public android.os.Parcelable onCaptureSharedElementSnapshot(android.view.View, android.graphics.Matrix, android.graphics.RectF);
-    method public android.view.View onCreateSnapshotView(android.content.Context, android.os.Parcelable);
-    method public void onMapSharedElements(java.util.List<java.lang.String>, java.util.Map<java.lang.String,android.view.View>);
-    method public void onRejectSharedElements(java.util.List<android.view.View>);
-    method public void onSharedElementEnd(java.util.List<java.lang.String>, java.util.List<android.view.View>, java.util.List<android.view.View>);
-    method public void onSharedElementStart(java.util.List<java.lang.String>, java.util.List<android.view.View>, java.util.List<android.view.View>);
-    method public void onSharedElementsArrived(java.util.List<java.lang.String>, java.util.List<android.view.View>, android.app.SharedElementCallback.OnSharedElementsReadyListener);
-  }
-
-  public static interface SharedElementCallback.OnSharedElementsReadyListener {
-    method public void onSharedElementsReady();
-  }
-
-  public class StatusBarManager {
-  }
-
-  public final class SyncNotedAppOp implements android.os.Parcelable {
-    ctor public SyncNotedAppOp(@IntRange(from=0L) int, @Nullable String);
-    method public int describeContents();
-    method @Nullable public String getAttributionTag();
-    method @NonNull public String getOp();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.SyncNotedAppOp> CREATOR;
-  }
-
-  @Deprecated public class TabActivity extends android.app.ActivityGroup {
-    ctor @Deprecated public TabActivity();
-    method @Deprecated public android.widget.TabHost getTabHost();
-    method @Deprecated public android.widget.TabWidget getTabWidget();
-    method @Deprecated public void setDefaultTab(String);
-    method @Deprecated public void setDefaultTab(int);
-  }
-
-  public class TaskInfo {
-    field @Nullable public android.content.ComponentName baseActivity;
-    field @NonNull public android.content.Intent baseIntent;
-    field public boolean isRunning;
-    field public int numActivities;
-    field @Nullable public android.content.ComponentName origActivity;
-    field @Nullable public android.app.ActivityManager.TaskDescription taskDescription;
-    field public int taskId;
-    field @Nullable public android.content.ComponentName topActivity;
-  }
-
-  public class TaskStackBuilder {
-    method public android.app.TaskStackBuilder addNextIntent(android.content.Intent);
-    method public android.app.TaskStackBuilder addNextIntentWithParentStack(android.content.Intent);
-    method public android.app.TaskStackBuilder addParentStack(android.app.Activity);
-    method public android.app.TaskStackBuilder addParentStack(Class<?>);
-    method public android.app.TaskStackBuilder addParentStack(android.content.ComponentName);
-    method public static android.app.TaskStackBuilder create(android.content.Context);
-    method public android.content.Intent editIntentAt(int);
-    method public int getIntentCount();
-    method @NonNull public android.content.Intent[] getIntents();
-    method public android.app.PendingIntent getPendingIntent(int, int);
-    method public android.app.PendingIntent getPendingIntent(int, int, android.os.Bundle);
-    method public void startActivities();
-    method public void startActivities(android.os.Bundle);
-  }
-
-  public class TimePickerDialog extends android.app.AlertDialog implements android.content.DialogInterface.OnClickListener android.widget.TimePicker.OnTimeChangedListener {
-    ctor public TimePickerDialog(android.content.Context, android.app.TimePickerDialog.OnTimeSetListener, int, int, boolean);
-    ctor public TimePickerDialog(android.content.Context, int, android.app.TimePickerDialog.OnTimeSetListener, int, int, boolean);
-    method public void onClick(android.content.DialogInterface, int);
-    method public void onTimeChanged(android.widget.TimePicker, int, int);
-    method public void updateTime(int, int);
-  }
-
-  public static interface TimePickerDialog.OnTimeSetListener {
-    method public void onTimeSet(android.widget.TimePicker, int, int);
-  }
-
-  public final class UiAutomation {
-    method public void adoptShellPermissionIdentity();
-    method public void adoptShellPermissionIdentity(@Nullable java.lang.String...);
-    method public void clearWindowAnimationFrameStats();
-    method public boolean clearWindowContentFrameStats(int);
-    method public void dropShellPermissionIdentity();
-    method public android.view.accessibility.AccessibilityEvent executeAndWaitForEvent(Runnable, android.app.UiAutomation.AccessibilityEventFilter, long) throws java.util.concurrent.TimeoutException;
-    method public android.os.ParcelFileDescriptor executeShellCommand(String);
-    method public android.view.accessibility.AccessibilityNodeInfo findFocus(int);
-    method public android.view.accessibility.AccessibilityNodeInfo getRootInActiveWindow();
-    method public android.accessibilityservice.AccessibilityServiceInfo getServiceInfo();
-    method public android.view.WindowAnimationFrameStats getWindowAnimationFrameStats();
-    method public android.view.WindowContentFrameStats getWindowContentFrameStats(int);
-    method public java.util.List<android.view.accessibility.AccessibilityWindowInfo> getWindows();
-    method @NonNull public android.util.SparseArray<java.util.List<android.view.accessibility.AccessibilityWindowInfo>> getWindowsOnAllDisplays();
-    method public void grantRuntimePermission(String, String);
-    method public void grantRuntimePermissionAsUser(String, String, android.os.UserHandle);
-    method public boolean injectInputEvent(android.view.InputEvent, boolean);
-    method public boolean performGlobalAction(int);
-    method public void revokeRuntimePermission(String, String);
-    method public void revokeRuntimePermissionAsUser(String, String, android.os.UserHandle);
-    method public void setOnAccessibilityEventListener(android.app.UiAutomation.OnAccessibilityEventListener);
-    method public boolean setRotation(int);
-    method public void setRunAsMonkey(boolean);
-    method public void setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo);
-    method public android.graphics.Bitmap takeScreenshot();
-    method public void waitForIdle(long, long) throws java.util.concurrent.TimeoutException;
-    field public static final int FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES = 1; // 0x1
-    field public static final int ROTATION_FREEZE_0 = 0; // 0x0
-    field public static final int ROTATION_FREEZE_180 = 2; // 0x2
-    field public static final int ROTATION_FREEZE_270 = 3; // 0x3
-    field public static final int ROTATION_FREEZE_90 = 1; // 0x1
-    field public static final int ROTATION_FREEZE_CURRENT = -1; // 0xffffffff
-    field public static final int ROTATION_UNFREEZE = -2; // 0xfffffffe
-  }
-
-  public static interface UiAutomation.AccessibilityEventFilter {
-    method public boolean accept(android.view.accessibility.AccessibilityEvent);
-  }
-
-  public static interface UiAutomation.OnAccessibilityEventListener {
-    method public void onAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-  }
-
-  public class UiModeManager {
-    method public void disableCarMode(int);
-    method public void enableCarMode(int);
-    method public int getCurrentModeType();
-    method @NonNull public java.time.LocalTime getCustomNightModeEnd();
-    method @NonNull public java.time.LocalTime getCustomNightModeStart();
-    method public int getNightMode();
-    method public void setCustomNightModeEnd(@NonNull java.time.LocalTime);
-    method public void setCustomNightModeStart(@NonNull java.time.LocalTime);
-    method public void setNightMode(int);
-    field public static String ACTION_ENTER_CAR_MODE;
-    field public static String ACTION_ENTER_DESK_MODE;
-    field public static String ACTION_EXIT_CAR_MODE;
-    field public static String ACTION_EXIT_DESK_MODE;
-    field public static final int DISABLE_CAR_MODE_GO_HOME = 1; // 0x1
-    field public static final int ENABLE_CAR_MODE_ALLOW_SLEEP = 2; // 0x2
-    field public static final int ENABLE_CAR_MODE_GO_CAR_HOME = 1; // 0x1
-    field public static final int MODE_NIGHT_AUTO = 0; // 0x0
-    field public static final int MODE_NIGHT_CUSTOM = 3; // 0x3
-    field public static final int MODE_NIGHT_NO = 1; // 0x1
-    field public static final int MODE_NIGHT_YES = 2; // 0x2
-  }
-
-  public final class VoiceInteractor {
-    method public android.app.VoiceInteractor.Request getActiveRequest(String);
-    method public android.app.VoiceInteractor.Request[] getActiveRequests();
-    method public boolean isDestroyed();
-    method public void notifyDirectActionsChanged();
-    method public boolean registerOnDestroyedCallback(@NonNull java.util.concurrent.Executor, @NonNull Runnable);
-    method public boolean submitRequest(android.app.VoiceInteractor.Request);
-    method public boolean submitRequest(android.app.VoiceInteractor.Request, String);
-    method public boolean[] supportsCommands(String[]);
-    method public boolean unregisterOnDestroyedCallback(@NonNull Runnable);
-  }
-
-  public static class VoiceInteractor.AbortVoiceRequest extends android.app.VoiceInteractor.Request {
-    ctor public VoiceInteractor.AbortVoiceRequest(@Nullable android.app.VoiceInteractor.Prompt, @Nullable android.os.Bundle);
-    method public void onAbortResult(android.os.Bundle);
-  }
-
-  public static class VoiceInteractor.CommandRequest extends android.app.VoiceInteractor.Request {
-    ctor public VoiceInteractor.CommandRequest(String, android.os.Bundle);
-    method public void onCommandResult(boolean, android.os.Bundle);
-  }
-
-  public static class VoiceInteractor.CompleteVoiceRequest extends android.app.VoiceInteractor.Request {
-    ctor public VoiceInteractor.CompleteVoiceRequest(@Nullable android.app.VoiceInteractor.Prompt, @Nullable android.os.Bundle);
-    method public void onCompleteResult(android.os.Bundle);
-  }
-
-  public static class VoiceInteractor.ConfirmationRequest extends android.app.VoiceInteractor.Request {
-    ctor public VoiceInteractor.ConfirmationRequest(@Nullable android.app.VoiceInteractor.Prompt, @Nullable android.os.Bundle);
-    method public void onConfirmationResult(boolean, android.os.Bundle);
-  }
-
-  public static class VoiceInteractor.PickOptionRequest extends android.app.VoiceInteractor.Request {
-    ctor public VoiceInteractor.PickOptionRequest(@Nullable android.app.VoiceInteractor.Prompt, android.app.VoiceInteractor.PickOptionRequest.Option[], @Nullable android.os.Bundle);
-    method public void onPickOptionResult(boolean, android.app.VoiceInteractor.PickOptionRequest.Option[], android.os.Bundle);
-  }
-
-  public static final class VoiceInteractor.PickOptionRequest.Option implements android.os.Parcelable {
-    ctor public VoiceInteractor.PickOptionRequest.Option(CharSequence, int);
-    method public android.app.VoiceInteractor.PickOptionRequest.Option addSynonym(CharSequence);
-    method public int countSynonyms();
-    method public int describeContents();
-    method public android.os.Bundle getExtras();
-    method public int getIndex();
-    method public CharSequence getLabel();
-    method public CharSequence getSynonymAt(int);
-    method public void setExtras(android.os.Bundle);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.VoiceInteractor.PickOptionRequest.Option> CREATOR;
-  }
-
-  public static class VoiceInteractor.Prompt implements android.os.Parcelable {
-    ctor public VoiceInteractor.Prompt(@NonNull CharSequence[], @NonNull CharSequence);
-    ctor public VoiceInteractor.Prompt(@NonNull CharSequence);
-    method public int countVoicePrompts();
-    method public int describeContents();
-    method @NonNull public CharSequence getVisualPrompt();
-    method @NonNull public CharSequence getVoicePromptAt(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.VoiceInteractor.Prompt> CREATOR;
-  }
-
-  public abstract static class VoiceInteractor.Request {
-    method public void cancel();
-    method public android.app.Activity getActivity();
-    method public android.content.Context getContext();
-    method public String getName();
-    method public void onAttached(android.app.Activity);
-    method public void onCancel();
-    method public void onDetached();
-  }
-
-  public final class WallpaperColors implements android.os.Parcelable {
-    ctor public WallpaperColors(android.os.Parcel);
-    ctor public WallpaperColors(@NonNull android.graphics.Color, @Nullable android.graphics.Color, @Nullable android.graphics.Color);
-    method public int describeContents();
-    method public static android.app.WallpaperColors fromBitmap(@NonNull android.graphics.Bitmap);
-    method public static android.app.WallpaperColors fromDrawable(android.graphics.drawable.Drawable);
-    method @NonNull public android.graphics.Color getPrimaryColor();
-    method @Nullable public android.graphics.Color getSecondaryColor();
-    method @Nullable public android.graphics.Color getTertiaryColor();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.WallpaperColors> CREATOR;
-  }
-
-  public final class WallpaperInfo implements android.os.Parcelable {
-    ctor public WallpaperInfo(android.content.Context, android.content.pm.ResolveInfo) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public int describeContents();
-    method public void dump(android.util.Printer, String);
-    method public android.content.ComponentName getComponent();
-    method public String getPackageName();
-    method public android.content.pm.ServiceInfo getServiceInfo();
-    method public String getServiceName();
-    method public String getSettingsActivity();
-    method @Nullable public android.net.Uri getSettingsSliceUri();
-    method public boolean getShowMetadataInPreview();
-    method public CharSequence loadAuthor(android.content.pm.PackageManager) throws android.content.res.Resources.NotFoundException;
-    method public CharSequence loadContextDescription(android.content.pm.PackageManager) throws android.content.res.Resources.NotFoundException;
-    method public android.net.Uri loadContextUri(android.content.pm.PackageManager) throws android.content.res.Resources.NotFoundException;
-    method public CharSequence loadDescription(android.content.pm.PackageManager) throws android.content.res.Resources.NotFoundException;
-    method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
-    method public CharSequence loadLabel(android.content.pm.PackageManager);
-    method public android.graphics.drawable.Drawable loadThumbnail(android.content.pm.PackageManager);
-    method public boolean supportsMultipleDisplays();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.WallpaperInfo> CREATOR;
-  }
-
-  public class WallpaperManager {
-    method public void addOnColorsChangedListener(@NonNull android.app.WallpaperManager.OnColorsChangedListener, @NonNull android.os.Handler);
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void clear() throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void clear(int) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void clearWallpaper();
-    method public void clearWallpaperOffsets(android.os.IBinder);
-    method public void forgetLoadedWallpaper();
-    method public android.graphics.drawable.Drawable getBuiltInDrawable();
-    method public android.graphics.drawable.Drawable getBuiltInDrawable(int);
-    method public android.graphics.drawable.Drawable getBuiltInDrawable(int, int, boolean, float, float);
-    method public android.graphics.drawable.Drawable getBuiltInDrawable(int, int, boolean, float, float, int);
-    method public android.content.Intent getCropAndSetWallpaperIntent(android.net.Uri);
-    method public int getDesiredMinimumHeight();
-    method public int getDesiredMinimumWidth();
-    method public android.graphics.drawable.Drawable getDrawable();
-    method @RequiresPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) public android.graphics.drawable.Drawable getFastDrawable();
-    method public static android.app.WallpaperManager getInstance(android.content.Context);
-    method @Nullable public android.app.WallpaperColors getWallpaperColors(int);
-    method @RequiresPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) public android.os.ParcelFileDescriptor getWallpaperFile(int);
-    method public int getWallpaperId(int);
-    method public android.app.WallpaperInfo getWallpaperInfo();
-    method public boolean hasResourceWallpaper(@RawRes int);
-    method public boolean isSetWallpaperAllowed();
-    method public boolean isWallpaperSupported();
-    method public android.graphics.drawable.Drawable peekDrawable();
-    method @RequiresPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) public android.graphics.drawable.Drawable peekFastDrawable();
-    method public void removeOnColorsChangedListener(@NonNull android.app.WallpaperManager.OnColorsChangedListener);
-    method public void sendWallpaperCommand(android.os.IBinder, String, int, int, int, android.os.Bundle);
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void setBitmap(android.graphics.Bitmap) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setBitmap(android.graphics.Bitmap, android.graphics.Rect, boolean) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setBitmap(android.graphics.Bitmap, android.graphics.Rect, boolean, int) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER_HINTS) public void setDisplayPadding(android.graphics.Rect);
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void setResource(@RawRes int) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setResource(@RawRes int, int) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void setStream(java.io.InputStream) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setStream(java.io.InputStream, android.graphics.Rect, boolean) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setStream(java.io.InputStream, android.graphics.Rect, boolean, int) throws java.io.IOException;
-    method public void setWallpaperOffsetSteps(float, float);
-    method public void setWallpaperOffsets(android.os.IBinder, float, float);
-    method public void suggestDesiredDimensions(int, int);
-    field public static final String ACTION_CHANGE_LIVE_WALLPAPER = "android.service.wallpaper.CHANGE_LIVE_WALLPAPER";
-    field public static final String ACTION_CROP_AND_SET_WALLPAPER = "android.service.wallpaper.CROP_AND_SET_WALLPAPER";
-    field public static final String ACTION_LIVE_WALLPAPER_CHOOSER = "android.service.wallpaper.LIVE_WALLPAPER_CHOOSER";
-    field public static final String COMMAND_DROP = "android.home.drop";
-    field public static final String COMMAND_SECONDARY_TAP = "android.wallpaper.secondaryTap";
-    field public static final String COMMAND_TAP = "android.wallpaper.tap";
-    field public static final String EXTRA_LIVE_WALLPAPER_COMPONENT = "android.service.wallpaper.extra.LIVE_WALLPAPER_COMPONENT";
-    field public static final int FLAG_LOCK = 2; // 0x2
-    field public static final int FLAG_SYSTEM = 1; // 0x1
-    field public static final String WALLPAPER_PREVIEW_META_DATA = "android.wallpaper.preview";
-  }
-
-  public static interface WallpaperManager.OnColorsChangedListener {
-    method public void onColorsChanged(android.app.WallpaperColors, int);
-  }
-
-  public interface ZygotePreload {
-    method public void doPreload(@NonNull android.content.pm.ApplicationInfo);
-  }
-
-}
-
-package android.app.admin {
-
-  public final class ConnectEvent extends android.app.admin.NetworkEvent implements android.os.Parcelable {
-    method public java.net.InetAddress getInetAddress();
-    method public int getPort();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.ConnectEvent> CREATOR;
-  }
-
-  public class DelegatedAdminReceiver extends android.content.BroadcastReceiver {
-    ctor public DelegatedAdminReceiver();
-    method @Nullable public String onChoosePrivateKeyAlias(@NonNull android.content.Context, @NonNull android.content.Intent, int, @Nullable android.net.Uri, @Nullable String);
-    method public void onNetworkLogsAvailable(@NonNull android.content.Context, @NonNull android.content.Intent, long, @IntRange(from=1) int);
-    method public final void onReceive(@NonNull android.content.Context, @NonNull android.content.Intent);
-  }
-
-  public final class DeviceAdminInfo implements android.os.Parcelable {
-    ctor public DeviceAdminInfo(android.content.Context, android.content.pm.ResolveInfo) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public int describeContents();
-    method public void dump(android.util.Printer, String);
-    method public android.content.pm.ActivityInfo getActivityInfo();
-    method @NonNull public android.content.ComponentName getComponent();
-    method public String getPackageName();
-    method public String getReceiverName();
-    method public String getTagForPolicy(int);
-    method public boolean isVisible();
-    method public CharSequence loadDescription(android.content.pm.PackageManager) throws android.content.res.Resources.NotFoundException;
-    method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
-    method public CharSequence loadLabel(android.content.pm.PackageManager);
-    method public boolean supportsTransferOwnership();
-    method public boolean usesPolicy(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.DeviceAdminInfo> CREATOR;
-    field public static final int USES_ENCRYPTED_STORAGE = 7; // 0x7
-    field public static final int USES_POLICY_DISABLE_CAMERA = 8; // 0x8
-    field public static final int USES_POLICY_DISABLE_KEYGUARD_FEATURES = 9; // 0x9
-    field public static final int USES_POLICY_EXPIRE_PASSWORD = 6; // 0x6
-    field public static final int USES_POLICY_FORCE_LOCK = 3; // 0x3
-    field public static final int USES_POLICY_LIMIT_PASSWORD = 0; // 0x0
-    field public static final int USES_POLICY_RESET_PASSWORD = 2; // 0x2
-    field public static final int USES_POLICY_WATCH_LOGIN = 1; // 0x1
-    field public static final int USES_POLICY_WIPE_DATA = 4; // 0x4
-  }
-
-  public class DeviceAdminReceiver extends android.content.BroadcastReceiver {
-    ctor public DeviceAdminReceiver();
-    method @NonNull public android.app.admin.DevicePolicyManager getManager(@NonNull android.content.Context);
-    method @NonNull public android.content.ComponentName getWho(@NonNull android.content.Context);
-    method public void onBugreportFailed(@NonNull android.content.Context, @NonNull android.content.Intent, int);
-    method public void onBugreportShared(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull String);
-    method public void onBugreportSharingDeclined(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method @Nullable public String onChoosePrivateKeyAlias(@NonNull android.content.Context, @NonNull android.content.Intent, int, @Nullable android.net.Uri, @Nullable String);
-    method @Nullable public CharSequence onDisableRequested(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method public void onDisabled(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method public void onEnabled(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method public void onLockTaskModeEntering(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull String);
-    method public void onLockTaskModeExiting(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method public void onNetworkLogsAvailable(@NonNull android.content.Context, @NonNull android.content.Intent, long, @IntRange(from=1) int);
-    method @Deprecated public void onPasswordChanged(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method public void onPasswordChanged(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
-    method @Deprecated public void onPasswordExpiring(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method public void onPasswordExpiring(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
-    method @Deprecated public void onPasswordFailed(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method public void onPasswordFailed(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
-    method @Deprecated public void onPasswordSucceeded(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method public void onPasswordSucceeded(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
-    method public void onProfileProvisioningComplete(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method @Deprecated public void onReadyForUserInitialization(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method public void onReceive(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method public void onSecurityLogsAvailable(@NonNull android.content.Context, @NonNull android.content.Intent);
-    method public void onSystemUpdatePending(@NonNull android.content.Context, @NonNull android.content.Intent, long);
-    method public void onTransferAffiliatedProfileOwnershipComplete(@NonNull android.content.Context, @NonNull android.os.UserHandle);
-    method public void onTransferOwnershipComplete(@NonNull android.content.Context, @Nullable android.os.PersistableBundle);
-    method public void onUserAdded(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
-    method public void onUserRemoved(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
-    method public void onUserStarted(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
-    method public void onUserStopped(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
-    method public void onUserSwitched(@NonNull android.content.Context, @NonNull android.content.Intent, @NonNull android.os.UserHandle);
-    field public static final String ACTION_CHOOSE_PRIVATE_KEY_ALIAS = "android.app.action.CHOOSE_PRIVATE_KEY_ALIAS";
-    field public static final String ACTION_DEVICE_ADMIN_DISABLED = "android.app.action.DEVICE_ADMIN_DISABLED";
-    field public static final String ACTION_DEVICE_ADMIN_DISABLE_REQUESTED = "android.app.action.DEVICE_ADMIN_DISABLE_REQUESTED";
-    field public static final String ACTION_DEVICE_ADMIN_ENABLED = "android.app.action.DEVICE_ADMIN_ENABLED";
-    field public static final String ACTION_LOCK_TASK_ENTERING = "android.app.action.LOCK_TASK_ENTERING";
-    field public static final String ACTION_LOCK_TASK_EXITING = "android.app.action.LOCK_TASK_EXITING";
-    field public static final String ACTION_NETWORK_LOGS_AVAILABLE = "android.app.action.NETWORK_LOGS_AVAILABLE";
-    field public static final String ACTION_PASSWORD_CHANGED = "android.app.action.ACTION_PASSWORD_CHANGED";
-    field public static final String ACTION_PASSWORD_EXPIRING = "android.app.action.ACTION_PASSWORD_EXPIRING";
-    field public static final String ACTION_PASSWORD_FAILED = "android.app.action.ACTION_PASSWORD_FAILED";
-    field public static final String ACTION_PASSWORD_SUCCEEDED = "android.app.action.ACTION_PASSWORD_SUCCEEDED";
-    field public static final String ACTION_PROFILE_PROVISIONING_COMPLETE = "android.app.action.PROFILE_PROVISIONING_COMPLETE";
-    field public static final int BUGREPORT_FAILURE_FAILED_COMPLETING = 0; // 0x0
-    field public static final int BUGREPORT_FAILURE_FILE_NO_LONGER_AVAILABLE = 1; // 0x1
-    field public static final String DEVICE_ADMIN_META_DATA = "android.app.device_admin";
-    field public static final String EXTRA_DISABLE_WARNING = "android.app.extra.DISABLE_WARNING";
-    field public static final String EXTRA_LOCK_TASK_PACKAGE = "android.app.extra.LOCK_TASK_PACKAGE";
-    field public static final String EXTRA_TRANSFER_OWNERSHIP_ADMIN_EXTRAS_BUNDLE = "android.app.extra.TRANSFER_OWNERSHIP_ADMIN_EXTRAS_BUNDLE";
-  }
-
-  public class DeviceAdminService extends android.app.Service {
-    ctor public DeviceAdminService();
-    method public final android.os.IBinder onBind(android.content.Intent);
-  }
-
-  public class DevicePolicyManager {
-    method public void addCrossProfileIntentFilter(@NonNull android.content.ComponentName, android.content.IntentFilter, int);
-    method public boolean addCrossProfileWidgetProvider(@NonNull android.content.ComponentName, String);
-    method public int addOverrideApn(@NonNull android.content.ComponentName, @NonNull android.telephony.data.ApnSetting);
-    method public void addPersistentPreferredActivity(@NonNull android.content.ComponentName, android.content.IntentFilter, @NonNull android.content.ComponentName);
-    method public void addUserRestriction(@NonNull android.content.ComponentName, String);
-    method public boolean bindDeviceAdminServiceAsUser(@NonNull android.content.ComponentName, android.content.Intent, @NonNull android.content.ServiceConnection, int, @NonNull android.os.UserHandle);
-    method public void clearApplicationUserData(@NonNull android.content.ComponentName, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.app.admin.DevicePolicyManager.OnClearApplicationUserDataListener);
-    method public void clearCrossProfileIntentFilters(@NonNull android.content.ComponentName);
-    method @Deprecated public void clearDeviceOwnerApp(String);
-    method public void clearPackagePersistentPreferredActivities(@NonNull android.content.ComponentName, String);
-    method @Deprecated public void clearProfileOwner(@NonNull android.content.ComponentName);
-    method public boolean clearResetPasswordToken(android.content.ComponentName);
-    method public void clearUserRestriction(@NonNull android.content.ComponentName, String);
-    method public android.content.Intent createAdminSupportIntent(@NonNull String);
-    method @Nullable public android.os.UserHandle createAndManageUser(@NonNull android.content.ComponentName, @NonNull String, @NonNull android.content.ComponentName, @Nullable android.os.PersistableBundle, int);
-    method public void enableSystemApp(@NonNull android.content.ComponentName, String);
-    method public int enableSystemApp(@NonNull android.content.ComponentName, android.content.Intent);
-    method public android.security.AttestedKeyPair generateKeyPair(@Nullable android.content.ComponentName, @NonNull String, @NonNull android.security.keystore.KeyGenParameterSpec, int);
-    method @Nullable public String[] getAccountTypesWithManagementDisabled();
-    method @Nullable public java.util.List<android.content.ComponentName> getActiveAdmins();
-    method @NonNull public java.util.Set<java.lang.String> getAffiliationIds(@NonNull android.content.ComponentName);
-    method @Nullable public java.util.Set<java.lang.String> getAlwaysOnVpnLockdownWhitelist(@NonNull android.content.ComponentName);
-    method @Nullable public String getAlwaysOnVpnPackage(@NonNull android.content.ComponentName);
-    method @NonNull @WorkerThread public android.os.Bundle getApplicationRestrictions(@Nullable android.content.ComponentName, String);
-    method @Deprecated @Nullable public String getApplicationRestrictionsManagingPackage(@NonNull android.content.ComponentName);
-    method public boolean getAutoTimeEnabled(@NonNull android.content.ComponentName);
-    method @Deprecated public boolean getAutoTimeRequired();
-    method public boolean getAutoTimeZoneEnabled(@NonNull android.content.ComponentName);
-    method @NonNull public java.util.List<android.os.UserHandle> getBindDeviceAdminTargetUsers(@NonNull android.content.ComponentName);
-    method public boolean getBluetoothContactSharingDisabled(@NonNull android.content.ComponentName);
-    method public boolean getCameraDisabled(@Nullable android.content.ComponentName);
-    method @Deprecated @Nullable public String getCertInstallerPackage(@NonNull android.content.ComponentName) throws java.lang.SecurityException;
-    method @Nullable public java.util.Set<java.lang.String> getCrossProfileCalendarPackages(@NonNull android.content.ComponentName);
-    method public boolean getCrossProfileCallerIdDisabled(@NonNull android.content.ComponentName);
-    method public boolean getCrossProfileContactsSearchDisabled(@NonNull android.content.ComponentName);
-    method @NonNull public java.util.Set<java.lang.String> getCrossProfilePackages(@NonNull android.content.ComponentName);
-    method @NonNull public java.util.List<java.lang.String> getCrossProfileWidgetProviders(@NonNull android.content.ComponentName);
-    method public int getCurrentFailedPasswordAttempts();
-    method @Nullable public java.util.List<java.lang.String> getDelegatePackages(@NonNull android.content.ComponentName, @NonNull String);
-    method @NonNull public java.util.List<java.lang.String> getDelegatedScopes(@Nullable android.content.ComponentName, @NonNull String);
-    method public CharSequence getDeviceOwnerLockScreenInfo();
-    method public CharSequence getEndUserSessionMessage(@NonNull android.content.ComponentName);
-    method @Nullable public android.app.admin.FactoryResetProtectionPolicy getFactoryResetProtectionPolicy(@Nullable android.content.ComponentName);
-    method @Nullable public String getGlobalPrivateDnsHost(@NonNull android.content.ComponentName);
-    method public int getGlobalPrivateDnsMode(@NonNull android.content.ComponentName);
-    method @NonNull public java.util.List<byte[]> getInstalledCaCerts(@Nullable android.content.ComponentName);
-    method @Nullable public java.util.List<java.lang.String> getKeepUninstalledPackages(@Nullable android.content.ComponentName);
-    method public int getKeyguardDisabledFeatures(@Nullable android.content.ComponentName);
-    method public int getLockTaskFeatures(@NonNull android.content.ComponentName);
-    method @NonNull public String[] getLockTaskPackages(@NonNull android.content.ComponentName);
-    method @Nullable public CharSequence getLongSupportMessage(@NonNull android.content.ComponentName);
-    method public long getManagedProfileMaximumTimeOff(@NonNull android.content.ComponentName);
-    method public int getMaximumFailedPasswordsForWipe(@Nullable android.content.ComponentName);
-    method public long getMaximumTimeToLock(@Nullable android.content.ComponentName);
-    method @NonNull public java.util.List<java.lang.String> getMeteredDataDisabledPackages(@NonNull android.content.ComponentName);
-    method @ColorInt public int getOrganizationColor(@NonNull android.content.ComponentName);
-    method @Nullable public CharSequence getOrganizationName(@NonNull android.content.ComponentName);
-    method public java.util.List<android.telephony.data.ApnSetting> getOverrideApns(@NonNull android.content.ComponentName);
-    method @NonNull public android.app.admin.DevicePolicyManager getParentProfileInstance(@NonNull android.content.ComponentName);
-    method @RequiresPermission(android.Manifest.permission.REQUEST_PASSWORD_COMPLEXITY) public int getPasswordComplexity();
-    method public long getPasswordExpiration(@Nullable android.content.ComponentName);
-    method public long getPasswordExpirationTimeout(@Nullable android.content.ComponentName);
-    method public int getPasswordHistoryLength(@Nullable android.content.ComponentName);
-    method public int getPasswordMaximumLength(int);
-    method public int getPasswordMinimumLength(@Nullable android.content.ComponentName);
-    method public int getPasswordMinimumLetters(@Nullable android.content.ComponentName);
-    method public int getPasswordMinimumLowerCase(@Nullable android.content.ComponentName);
-    method public int getPasswordMinimumNonLetter(@Nullable android.content.ComponentName);
-    method public int getPasswordMinimumNumeric(@Nullable android.content.ComponentName);
-    method public int getPasswordMinimumSymbols(@Nullable android.content.ComponentName);
-    method public int getPasswordMinimumUpperCase(@Nullable android.content.ComponentName);
-    method public int getPasswordQuality(@Nullable android.content.ComponentName);
-    method @Nullable public android.app.admin.SystemUpdateInfo getPendingSystemUpdate(@NonNull android.content.ComponentName);
-    method public int getPermissionGrantState(@Nullable android.content.ComponentName, @NonNull String, @NonNull String);
-    method public int getPermissionPolicy(android.content.ComponentName);
-    method @Nullable public java.util.List<java.lang.String> getPermittedAccessibilityServices(@NonNull android.content.ComponentName);
-    method @Nullable public java.util.List<java.lang.String> getPermittedCrossProfileNotificationListeners(@NonNull android.content.ComponentName);
-    method @Nullable public java.util.List<java.lang.String> getPermittedInputMethods(@NonNull android.content.ComponentName);
-    method public int getPersonalAppsSuspendedReasons(@NonNull android.content.ComponentName);
-    method public long getRequiredStrongAuthTimeout(@Nullable android.content.ComponentName);
-    method public boolean getScreenCaptureDisabled(@Nullable android.content.ComponentName);
-    method public java.util.List<android.os.UserHandle> getSecondaryUsers(@NonNull android.content.ComponentName);
-    method public CharSequence getShortSupportMessage(@NonNull android.content.ComponentName);
-    method public CharSequence getStartUserSessionMessage(@NonNull android.content.ComponentName);
-    method @Deprecated public boolean getStorageEncryption(@Nullable android.content.ComponentName);
-    method public int getStorageEncryptionStatus();
-    method @Nullable public android.app.admin.SystemUpdatePolicy getSystemUpdatePolicy();
-    method @Nullable public android.os.PersistableBundle getTransferOwnershipBundle();
-    method @Nullable public java.util.List<android.os.PersistableBundle> getTrustAgentConfiguration(@Nullable android.content.ComponentName, @NonNull android.content.ComponentName);
-    method @NonNull public java.util.List<java.lang.String> getUserControlDisabledPackages(@NonNull android.content.ComponentName);
-    method @NonNull public android.os.Bundle getUserRestrictions(@NonNull android.content.ComponentName);
-    method @Nullable public String getWifiMacAddress(@NonNull android.content.ComponentName);
-    method public boolean grantKeyPairToApp(@Nullable android.content.ComponentName, @NonNull String, @NonNull String);
-    method public boolean hasCaCertInstalled(@Nullable android.content.ComponentName, byte[]);
-    method public boolean hasGrantedPolicy(@NonNull android.content.ComponentName, int);
-    method public boolean hasLockdownAdminConfiguredNetworks(@NonNull android.content.ComponentName);
-    method public boolean installCaCert(@Nullable android.content.ComponentName, byte[]);
-    method public boolean installExistingPackage(@NonNull android.content.ComponentName, String);
-    method public boolean installKeyPair(@Nullable android.content.ComponentName, @NonNull java.security.PrivateKey, @NonNull java.security.cert.Certificate, @NonNull String);
-    method public boolean installKeyPair(@Nullable android.content.ComponentName, @NonNull java.security.PrivateKey, @NonNull java.security.cert.Certificate[], @NonNull String, boolean);
-    method public boolean installKeyPair(@Nullable android.content.ComponentName, @NonNull java.security.PrivateKey, @NonNull java.security.cert.Certificate[], @NonNull String, int);
-    method public void installSystemUpdate(@NonNull android.content.ComponentName, @NonNull android.net.Uri, @NonNull java.util.concurrent.Executor, @NonNull android.app.admin.DevicePolicyManager.InstallSystemUpdateCallback);
-    method public boolean isActivePasswordSufficient();
-    method public boolean isAdminActive(@NonNull android.content.ComponentName);
-    method public boolean isAffiliatedUser();
-    method public boolean isAlwaysOnVpnLockdownEnabled(@NonNull android.content.ComponentName);
-    method public boolean isApplicationHidden(@NonNull android.content.ComponentName, String);
-    method public boolean isBackupServiceEnabled(@NonNull android.content.ComponentName);
-    method @Deprecated public boolean isCallerApplicationRestrictionsManagingPackage();
-    method public boolean isCommonCriteriaModeEnabled(@Nullable android.content.ComponentName);
-    method public boolean isDeviceIdAttestationSupported();
-    method public boolean isDeviceOwnerApp(String);
-    method public boolean isEphemeralUser(@NonNull android.content.ComponentName);
-    method public boolean isLockTaskPermitted(String);
-    method public boolean isLogoutEnabled();
-    method public boolean isManagedProfile(@NonNull android.content.ComponentName);
-    method public boolean isMasterVolumeMuted(@NonNull android.content.ComponentName);
-    method public boolean isNetworkLoggingEnabled(@Nullable android.content.ComponentName);
-    method public boolean isOrganizationOwnedDeviceWithManagedProfile();
-    method public boolean isOverrideApnEnabled(@NonNull android.content.ComponentName);
-    method public boolean isPackageSuspended(@NonNull android.content.ComponentName, String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public boolean isProfileOwnerApp(String);
-    method public boolean isProvisioningAllowed(@NonNull String);
-    method public boolean isResetPasswordTokenActive(android.content.ComponentName);
-    method public boolean isSecurityLoggingEnabled(@Nullable android.content.ComponentName);
-    method public boolean isUninstallBlocked(@Nullable android.content.ComponentName, String);
-    method public boolean isUniqueDeviceAttestationSupported();
-    method public boolean isUsingUnifiedPassword(@NonNull android.content.ComponentName);
-    method public void lockNow();
-    method public void lockNow(int);
-    method public int logoutUser(@NonNull android.content.ComponentName);
-    method public void reboot(@NonNull android.content.ComponentName);
-    method public void removeActiveAdmin(@NonNull android.content.ComponentName);
-    method public boolean removeCrossProfileWidgetProvider(@NonNull android.content.ComponentName, String);
-    method public boolean removeKeyPair(@Nullable android.content.ComponentName, @NonNull String);
-    method public boolean removeOverrideApn(@NonNull android.content.ComponentName, int);
-    method public boolean removeUser(@NonNull android.content.ComponentName, @NonNull android.os.UserHandle);
-    method public boolean requestBugreport(@NonNull android.content.ComponentName);
-    method @Deprecated public boolean resetPassword(String, int);
-    method public boolean resetPasswordWithToken(@NonNull android.content.ComponentName, String, byte[], int);
-    method @Nullable public java.util.List<android.app.admin.NetworkEvent> retrieveNetworkLogs(@Nullable android.content.ComponentName, long);
-    method @Nullable public java.util.List<android.app.admin.SecurityLog.SecurityEvent> retrievePreRebootSecurityLogs(@NonNull android.content.ComponentName);
-    method @Nullable public java.util.List<android.app.admin.SecurityLog.SecurityEvent> retrieveSecurityLogs(@NonNull android.content.ComponentName);
-    method public boolean revokeKeyPairFromApp(@Nullable android.content.ComponentName, @NonNull String, @NonNull String);
-    method public void setAccountManagementDisabled(@NonNull android.content.ComponentName, String, boolean);
-    method public void setAffiliationIds(@NonNull android.content.ComponentName, @NonNull java.util.Set<java.lang.String>);
-    method public void setAlwaysOnVpnPackage(@NonNull android.content.ComponentName, @Nullable String, boolean) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public void setAlwaysOnVpnPackage(@NonNull android.content.ComponentName, @Nullable String, boolean, @Nullable java.util.Set<java.lang.String>) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public boolean setApplicationHidden(@NonNull android.content.ComponentName, String, boolean);
-    method @WorkerThread public void setApplicationRestrictions(@Nullable android.content.ComponentName, String, android.os.Bundle);
-    method @Deprecated public void setApplicationRestrictionsManagingPackage(@NonNull android.content.ComponentName, @Nullable String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public void setAutoTimeEnabled(@NonNull android.content.ComponentName, boolean);
-    method @Deprecated public void setAutoTimeRequired(@NonNull android.content.ComponentName, boolean);
-    method public void setAutoTimeZoneEnabled(@NonNull android.content.ComponentName, boolean);
-    method public void setBackupServiceEnabled(@NonNull android.content.ComponentName, boolean);
-    method public void setBluetoothContactSharingDisabled(@NonNull android.content.ComponentName, boolean);
-    method public void setCameraDisabled(@NonNull android.content.ComponentName, boolean);
-    method @Deprecated public void setCertInstallerPackage(@NonNull android.content.ComponentName, @Nullable String) throws java.lang.SecurityException;
-    method public void setCommonCriteriaModeEnabled(@NonNull android.content.ComponentName, boolean);
-    method public void setConfiguredNetworksLockdownState(@NonNull android.content.ComponentName, boolean);
-    method public void setCrossProfileCalendarPackages(@NonNull android.content.ComponentName, @Nullable java.util.Set<java.lang.String>);
-    method public void setCrossProfileCallerIdDisabled(@NonNull android.content.ComponentName, boolean);
-    method public void setCrossProfileContactsSearchDisabled(@NonNull android.content.ComponentName, boolean);
-    method public void setCrossProfilePackages(@NonNull android.content.ComponentName, @NonNull java.util.Set<java.lang.String>);
-    method public void setDefaultSmsApplication(@NonNull android.content.ComponentName, @NonNull String);
-    method public void setDelegatedScopes(@NonNull android.content.ComponentName, @NonNull String, @NonNull java.util.List<java.lang.String>);
-    method public void setDeviceOwnerLockScreenInfo(@NonNull android.content.ComponentName, CharSequence);
-    method public void setEndUserSessionMessage(@NonNull android.content.ComponentName, @Nullable CharSequence);
-    method public void setFactoryResetProtectionPolicy(@NonNull android.content.ComponentName, @Nullable android.app.admin.FactoryResetProtectionPolicy);
-    method public int setGlobalPrivateDnsModeOpportunistic(@NonNull android.content.ComponentName);
-    method @WorkerThread public int setGlobalPrivateDnsModeSpecifiedHost(@NonNull android.content.ComponentName, @NonNull String);
-    method public void setGlobalSetting(@NonNull android.content.ComponentName, String, String);
-    method public void setKeepUninstalledPackages(@Nullable android.content.ComponentName, @NonNull java.util.List<java.lang.String>);
-    method public boolean setKeyPairCertificate(@Nullable android.content.ComponentName, @NonNull String, @NonNull java.util.List<java.security.cert.Certificate>, boolean);
-    method public boolean setKeyguardDisabled(@NonNull android.content.ComponentName, boolean);
-    method public void setKeyguardDisabledFeatures(@NonNull android.content.ComponentName, int);
-    method public void setLocationEnabled(@NonNull android.content.ComponentName, boolean);
-    method public void setLockTaskFeatures(@NonNull android.content.ComponentName, int);
-    method public void setLockTaskPackages(@NonNull android.content.ComponentName, @NonNull String[]) throws java.lang.SecurityException;
-    method public void setLogoutEnabled(@NonNull android.content.ComponentName, boolean);
-    method public void setLongSupportMessage(@NonNull android.content.ComponentName, @Nullable CharSequence);
-    method public void setManagedProfileMaximumTimeOff(@NonNull android.content.ComponentName, long);
-    method public void setMasterVolumeMuted(@NonNull android.content.ComponentName, boolean);
-    method public void setMaximumFailedPasswordsForWipe(@NonNull android.content.ComponentName, int);
-    method public void setMaximumTimeToLock(@NonNull android.content.ComponentName, long);
-    method @NonNull public java.util.List<java.lang.String> setMeteredDataDisabledPackages(@NonNull android.content.ComponentName, @NonNull java.util.List<java.lang.String>);
-    method public void setNetworkLoggingEnabled(@Nullable android.content.ComponentName, boolean);
-    method public void setOrganizationColor(@NonNull android.content.ComponentName, int);
-    method public void setOrganizationName(@NonNull android.content.ComponentName, @Nullable CharSequence);
-    method public void setOverrideApnsEnabled(@NonNull android.content.ComponentName, boolean);
-    method @NonNull public String[] setPackagesSuspended(@NonNull android.content.ComponentName, @NonNull String[], boolean);
-    method public void setPasswordExpirationTimeout(@NonNull android.content.ComponentName, long);
-    method public void setPasswordHistoryLength(@NonNull android.content.ComponentName, int);
-    method public void setPasswordMinimumLength(@NonNull android.content.ComponentName, int);
-    method public void setPasswordMinimumLetters(@NonNull android.content.ComponentName, int);
-    method public void setPasswordMinimumLowerCase(@NonNull android.content.ComponentName, int);
-    method public void setPasswordMinimumNonLetter(@NonNull android.content.ComponentName, int);
-    method public void setPasswordMinimumNumeric(@NonNull android.content.ComponentName, int);
-    method public void setPasswordMinimumSymbols(@NonNull android.content.ComponentName, int);
-    method public void setPasswordMinimumUpperCase(@NonNull android.content.ComponentName, int);
-    method public void setPasswordQuality(@NonNull android.content.ComponentName, int);
-    method public boolean setPermissionGrantState(@NonNull android.content.ComponentName, @NonNull String, @NonNull String, int);
-    method public void setPermissionPolicy(@NonNull android.content.ComponentName, int);
-    method public boolean setPermittedAccessibilityServices(@NonNull android.content.ComponentName, java.util.List<java.lang.String>);
-    method public boolean setPermittedCrossProfileNotificationListeners(@NonNull android.content.ComponentName, @Nullable java.util.List<java.lang.String>);
-    method public boolean setPermittedInputMethods(@NonNull android.content.ComponentName, java.util.List<java.lang.String>);
-    method public void setPersonalAppsSuspended(@NonNull android.content.ComponentName, boolean);
-    method public void setProfileEnabled(@NonNull android.content.ComponentName);
-    method public void setProfileName(@NonNull android.content.ComponentName, String);
-    method public void setRecommendedGlobalProxy(@NonNull android.content.ComponentName, @Nullable android.net.ProxyInfo);
-    method public void setRequiredStrongAuthTimeout(@NonNull android.content.ComponentName, long);
-    method public boolean setResetPasswordToken(android.content.ComponentName, byte[]);
-    method public void setRestrictionsProvider(@NonNull android.content.ComponentName, @Nullable android.content.ComponentName);
-    method public void setScreenCaptureDisabled(@NonNull android.content.ComponentName, boolean);
-    method public void setSecureSetting(@NonNull android.content.ComponentName, String, String);
-    method public void setSecurityLoggingEnabled(@NonNull android.content.ComponentName, boolean);
-    method public void setShortSupportMessage(@NonNull android.content.ComponentName, @Nullable CharSequence);
-    method public void setStartUserSessionMessage(@NonNull android.content.ComponentName, @Nullable CharSequence);
-    method public boolean setStatusBarDisabled(@NonNull android.content.ComponentName, boolean);
-    method @Deprecated public int setStorageEncryption(@NonNull android.content.ComponentName, boolean);
-    method public void setSystemSetting(@NonNull android.content.ComponentName, @NonNull String, String);
-    method public void setSystemUpdatePolicy(@NonNull android.content.ComponentName, android.app.admin.SystemUpdatePolicy);
-    method public boolean setTime(@NonNull android.content.ComponentName, long);
-    method public boolean setTimeZone(@NonNull android.content.ComponentName, String);
-    method public void setTrustAgentConfiguration(@NonNull android.content.ComponentName, @NonNull android.content.ComponentName, android.os.PersistableBundle);
-    method public void setUninstallBlocked(@Nullable android.content.ComponentName, String, boolean);
-    method public void setUserControlDisabledPackages(@NonNull android.content.ComponentName, @NonNull java.util.List<java.lang.String>);
-    method public void setUserIcon(@NonNull android.content.ComponentName, android.graphics.Bitmap);
-    method public int startUserInBackground(@NonNull android.content.ComponentName, @NonNull android.os.UserHandle);
-    method public int stopUser(@NonNull android.content.ComponentName, @NonNull android.os.UserHandle);
-    method public boolean switchUser(@NonNull android.content.ComponentName, @Nullable android.os.UserHandle);
-    method public void transferOwnership(@NonNull android.content.ComponentName, @NonNull android.content.ComponentName, @Nullable android.os.PersistableBundle);
-    method public void uninstallAllUserCaCerts(@Nullable android.content.ComponentName);
-    method public void uninstallCaCert(@Nullable android.content.ComponentName, byte[]);
-    method public boolean updateOverrideApn(@NonNull android.content.ComponentName, int, @NonNull android.telephony.data.ApnSetting);
-    method public void wipeData(int);
-    method public void wipeData(int, @NonNull CharSequence);
-    field public static final String ACTION_ADD_DEVICE_ADMIN = "android.app.action.ADD_DEVICE_ADMIN";
-    field public static final String ACTION_ADMIN_POLICY_COMPLIANCE = "android.app.action.ADMIN_POLICY_COMPLIANCE";
-    field public static final String ACTION_APPLICATION_DELEGATION_SCOPES_CHANGED = "android.app.action.APPLICATION_DELEGATION_SCOPES_CHANGED";
-    field public static final String ACTION_CHECK_POLICY_COMPLIANCE = "android.app.action.CHECK_POLICY_COMPLIANCE";
-    field public static final String ACTION_DEVICE_ADMIN_SERVICE = "android.app.action.DEVICE_ADMIN_SERVICE";
-    field public static final String ACTION_DEVICE_OWNER_CHANGED = "android.app.action.DEVICE_OWNER_CHANGED";
-    field public static final String ACTION_GET_PROVISIONING_MODE = "android.app.action.GET_PROVISIONING_MODE";
-    field public static final String ACTION_MANAGED_PROFILE_PROVISIONED = "android.app.action.MANAGED_PROFILE_PROVISIONED";
-    field public static final String ACTION_PROFILE_OWNER_CHANGED = "android.app.action.PROFILE_OWNER_CHANGED";
-    field public static final String ACTION_PROVISIONING_SUCCESSFUL = "android.app.action.PROVISIONING_SUCCESSFUL";
-    field public static final String ACTION_PROVISION_MANAGED_DEVICE = "android.app.action.PROVISION_MANAGED_DEVICE";
-    field public static final String ACTION_PROVISION_MANAGED_PROFILE = "android.app.action.PROVISION_MANAGED_PROFILE";
-    field public static final String ACTION_SET_NEW_PARENT_PROFILE_PASSWORD = "android.app.action.SET_NEW_PARENT_PROFILE_PASSWORD";
-    field public static final String ACTION_SET_NEW_PASSWORD = "android.app.action.SET_NEW_PASSWORD";
-    field public static final String ACTION_START_ENCRYPTION = "android.app.action.START_ENCRYPTION";
-    field public static final String ACTION_SYSTEM_UPDATE_POLICY_CHANGED = "android.app.action.SYSTEM_UPDATE_POLICY_CHANGED";
-    field public static final String DELEGATION_APP_RESTRICTIONS = "delegation-app-restrictions";
-    field public static final String DELEGATION_BLOCK_UNINSTALL = "delegation-block-uninstall";
-    field public static final String DELEGATION_CERT_INSTALL = "delegation-cert-install";
-    field public static final String DELEGATION_CERT_SELECTION = "delegation-cert-selection";
-    field public static final String DELEGATION_ENABLE_SYSTEM_APP = "delegation-enable-system-app";
-    field public static final String DELEGATION_INSTALL_EXISTING_PACKAGE = "delegation-install-existing-package";
-    field public static final String DELEGATION_KEEP_UNINSTALLED_PACKAGES = "delegation-keep-uninstalled-packages";
-    field public static final String DELEGATION_NETWORK_LOGGING = "delegation-network-logging";
-    field public static final String DELEGATION_PACKAGE_ACCESS = "delegation-package-access";
-    field public static final String DELEGATION_PERMISSION_GRANT = "delegation-permission-grant";
-    field public static final int ENCRYPTION_STATUS_ACTIVATING = 2; // 0x2
-    field public static final int ENCRYPTION_STATUS_ACTIVE = 3; // 0x3
-    field public static final int ENCRYPTION_STATUS_ACTIVE_DEFAULT_KEY = 4; // 0x4
-    field public static final int ENCRYPTION_STATUS_ACTIVE_PER_USER = 5; // 0x5
-    field public static final int ENCRYPTION_STATUS_INACTIVE = 1; // 0x1
-    field public static final int ENCRYPTION_STATUS_UNSUPPORTED = 0; // 0x0
-    field public static final String EXTRA_ADD_EXPLANATION = "android.app.extra.ADD_EXPLANATION";
-    field public static final String EXTRA_DELEGATION_SCOPES = "android.app.extra.DELEGATION_SCOPES";
-    field public static final String EXTRA_DEVICE_ADMIN = "android.app.extra.DEVICE_ADMIN";
-    field @RequiresPermission(android.Manifest.permission.REQUEST_PASSWORD_COMPLEXITY) public static final String EXTRA_PASSWORD_COMPLEXITY = "android.app.extra.PASSWORD_COMPLEXITY";
-    field public static final String EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE = "android.app.extra.PROVISIONING_ACCOUNT_TO_MIGRATE";
-    field public static final String EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE = "android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE";
-    field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME = "android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME";
-    field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_MINIMUM_VERSION_CODE = "android.app.extra.PROVISIONING_DEVICE_ADMIN_MINIMUM_VERSION_CODE";
-    field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM";
-    field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER";
-    field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION";
-    field @Deprecated public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME";
-    field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM = "android.app.extra.PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM";
-    field public static final String EXTRA_PROVISIONING_DISCLAIMERS = "android.app.extra.PROVISIONING_DISCLAIMERS";
-    field public static final String EXTRA_PROVISIONING_DISCLAIMER_CONTENT = "android.app.extra.PROVISIONING_DISCLAIMER_CONTENT";
-    field public static final String EXTRA_PROVISIONING_DISCLAIMER_HEADER = "android.app.extra.PROVISIONING_DISCLAIMER_HEADER";
-    field @Deprecated public static final String EXTRA_PROVISIONING_EMAIL_ADDRESS = "android.app.extra.PROVISIONING_EMAIL_ADDRESS";
-    field public static final String EXTRA_PROVISIONING_IMEI = "android.app.extra.PROVISIONING_IMEI";
-    field public static final String EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION = "android.app.extra.PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION";
-    field public static final String EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED = "android.app.extra.PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED";
-    field public static final String EXTRA_PROVISIONING_LOCALE = "android.app.extra.PROVISIONING_LOCALE";
-    field public static final String EXTRA_PROVISIONING_LOCAL_TIME = "android.app.extra.PROVISIONING_LOCAL_TIME";
-    field public static final String EXTRA_PROVISIONING_LOGO_URI = "android.app.extra.PROVISIONING_LOGO_URI";
-    field public static final String EXTRA_PROVISIONING_MAIN_COLOR = "android.app.extra.PROVISIONING_MAIN_COLOR";
-    field public static final String EXTRA_PROVISIONING_MODE = "android.app.extra.PROVISIONING_MODE";
-    field public static final String EXTRA_PROVISIONING_SERIAL_NUMBER = "android.app.extra.PROVISIONING_SERIAL_NUMBER";
-    field public static final String EXTRA_PROVISIONING_SKIP_EDUCATION_SCREENS = "android.app.extra.PROVISIONING_SKIP_EDUCATION_SCREENS";
-    field public static final String EXTRA_PROVISIONING_SKIP_ENCRYPTION = "android.app.extra.PROVISIONING_SKIP_ENCRYPTION";
-    field public static final String EXTRA_PROVISIONING_SKIP_USER_CONSENT = "android.app.extra.PROVISIONING_SKIP_USER_CONSENT";
-    field public static final String EXTRA_PROVISIONING_TIME_ZONE = "android.app.extra.PROVISIONING_TIME_ZONE";
-    field public static final String EXTRA_PROVISIONING_WIFI_ANONYMOUS_IDENTITY = "android.app.extra.PROVISIONING_WIFI_ANONYMOUS_IDENTITY";
-    field public static final String EXTRA_PROVISIONING_WIFI_CA_CERTIFICATE = "android.app.extra.PROVISIONING_WIFI_CA_CERTIFICATE";
-    field public static final String EXTRA_PROVISIONING_WIFI_DOMAIN = "android.app.extra.PROVISIONING_WIFI_DOMAIN";
-    field public static final String EXTRA_PROVISIONING_WIFI_EAP_METHOD = "android.app.extra.PROVISIONING_WIFI_EAP_METHOD";
-    field public static final String EXTRA_PROVISIONING_WIFI_HIDDEN = "android.app.extra.PROVISIONING_WIFI_HIDDEN";
-    field public static final String EXTRA_PROVISIONING_WIFI_IDENTITY = "android.app.extra.PROVISIONING_WIFI_IDENTITY";
-    field public static final String EXTRA_PROVISIONING_WIFI_PAC_URL = "android.app.extra.PROVISIONING_WIFI_PAC_URL";
-    field public static final String EXTRA_PROVISIONING_WIFI_PASSWORD = "android.app.extra.PROVISIONING_WIFI_PASSWORD";
-    field public static final String EXTRA_PROVISIONING_WIFI_PHASE2_AUTH = "android.app.extra.PROVISIONING_WIFI_PHASE2_AUTH";
-    field public static final String EXTRA_PROVISIONING_WIFI_PROXY_BYPASS = "android.app.extra.PROVISIONING_WIFI_PROXY_BYPASS";
-    field public static final String EXTRA_PROVISIONING_WIFI_PROXY_HOST = "android.app.extra.PROVISIONING_WIFI_PROXY_HOST";
-    field public static final String EXTRA_PROVISIONING_WIFI_PROXY_PORT = "android.app.extra.PROVISIONING_WIFI_PROXY_PORT";
-    field public static final String EXTRA_PROVISIONING_WIFI_SECURITY_TYPE = "android.app.extra.PROVISIONING_WIFI_SECURITY_TYPE";
-    field public static final String EXTRA_PROVISIONING_WIFI_SSID = "android.app.extra.PROVISIONING_WIFI_SSID";
-    field public static final String EXTRA_PROVISIONING_WIFI_USER_CERTIFICATE = "android.app.extra.PROVISIONING_WIFI_USER_CERTIFICATE";
-    field public static final int FLAG_EVICT_CREDENTIAL_ENCRYPTION_KEY = 1; // 0x1
-    field public static final int FLAG_MANAGED_CAN_ACCESS_PARENT = 2; // 0x2
-    field public static final int FLAG_PARENT_CAN_ACCESS_MANAGED = 1; // 0x1
-    field public static final int ID_TYPE_BASE_INFO = 1; // 0x1
-    field public static final int ID_TYPE_IMEI = 4; // 0x4
-    field public static final int ID_TYPE_INDIVIDUAL_ATTESTATION = 16; // 0x10
-    field public static final int ID_TYPE_MEID = 8; // 0x8
-    field public static final int ID_TYPE_SERIAL = 2; // 0x2
-    field public static final int INSTALLKEY_REQUEST_CREDENTIALS_ACCESS = 1; // 0x1
-    field public static final int INSTALLKEY_SET_USER_SELECTABLE = 2; // 0x2
-    field public static final int KEYGUARD_DISABLE_BIOMETRICS = 416; // 0x1a0
-    field public static final int KEYGUARD_DISABLE_FACE = 128; // 0x80
-    field public static final int KEYGUARD_DISABLE_FEATURES_ALL = 2147483647; // 0x7fffffff
-    field public static final int KEYGUARD_DISABLE_FEATURES_NONE = 0; // 0x0
-    field public static final int KEYGUARD_DISABLE_FINGERPRINT = 32; // 0x20
-    field public static final int KEYGUARD_DISABLE_IRIS = 256; // 0x100
-    field public static final int KEYGUARD_DISABLE_REMOTE_INPUT = 64; // 0x40
-    field public static final int KEYGUARD_DISABLE_SECURE_CAMERA = 2; // 0x2
-    field public static final int KEYGUARD_DISABLE_SECURE_NOTIFICATIONS = 4; // 0x4
-    field public static final int KEYGUARD_DISABLE_TRUST_AGENTS = 16; // 0x10
-    field public static final int KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS = 8; // 0x8
-    field public static final int KEYGUARD_DISABLE_WIDGETS_ALL = 1; // 0x1
-    field public static final int LEAVE_ALL_SYSTEM_APPS_ENABLED = 16; // 0x10
-    field public static final int LOCK_TASK_FEATURE_BLOCK_ACTIVITY_START_IN_TASK = 64; // 0x40
-    field public static final int LOCK_TASK_FEATURE_GLOBAL_ACTIONS = 16; // 0x10
-    field public static final int LOCK_TASK_FEATURE_HOME = 4; // 0x4
-    field public static final int LOCK_TASK_FEATURE_KEYGUARD = 32; // 0x20
-    field public static final int LOCK_TASK_FEATURE_NONE = 0; // 0x0
-    field public static final int LOCK_TASK_FEATURE_NOTIFICATIONS = 2; // 0x2
-    field public static final int LOCK_TASK_FEATURE_OVERVIEW = 8; // 0x8
-    field public static final int LOCK_TASK_FEATURE_SYSTEM_INFO = 1; // 0x1
-    field public static final int MAKE_USER_EPHEMERAL = 2; // 0x2
-    field public static final String MIME_TYPE_PROVISIONING_NFC = "application/com.android.managedprovisioning";
-    field public static final int PASSWORD_COMPLEXITY_HIGH = 327680; // 0x50000
-    field public static final int PASSWORD_COMPLEXITY_LOW = 65536; // 0x10000
-    field public static final int PASSWORD_COMPLEXITY_MEDIUM = 196608; // 0x30000
-    field public static final int PASSWORD_COMPLEXITY_NONE = 0; // 0x0
-    field public static final int PASSWORD_QUALITY_ALPHABETIC = 262144; // 0x40000
-    field public static final int PASSWORD_QUALITY_ALPHANUMERIC = 327680; // 0x50000
-    field public static final int PASSWORD_QUALITY_BIOMETRIC_WEAK = 32768; // 0x8000
-    field public static final int PASSWORD_QUALITY_COMPLEX = 393216; // 0x60000
-    field public static final int PASSWORD_QUALITY_NUMERIC = 131072; // 0x20000
-    field public static final int PASSWORD_QUALITY_NUMERIC_COMPLEX = 196608; // 0x30000
-    field public static final int PASSWORD_QUALITY_SOMETHING = 65536; // 0x10000
-    field public static final int PASSWORD_QUALITY_UNSPECIFIED = 0; // 0x0
-    field public static final int PERMISSION_GRANT_STATE_DEFAULT = 0; // 0x0
-    field public static final int PERMISSION_GRANT_STATE_DENIED = 2; // 0x2
-    field public static final int PERMISSION_GRANT_STATE_GRANTED = 1; // 0x1
-    field public static final int PERMISSION_POLICY_AUTO_DENY = 2; // 0x2
-    field public static final int PERMISSION_POLICY_AUTO_GRANT = 1; // 0x1
-    field public static final int PERMISSION_POLICY_PROMPT = 0; // 0x0
-    field public static final int PERSONAL_APPS_NOT_SUSPENDED = 0; // 0x0
-    field public static final int PERSONAL_APPS_SUSPENDED_EXPLICITLY = 1; // 0x1
-    field public static final int PERSONAL_APPS_SUSPENDED_PROFILE_TIMEOUT = 2; // 0x2
-    field public static final String POLICY_DISABLE_CAMERA = "policy_disable_camera";
-    field public static final String POLICY_DISABLE_SCREEN_CAPTURE = "policy_disable_screen_capture";
-    field public static final int PRIVATE_DNS_MODE_OFF = 1; // 0x1
-    field public static final int PRIVATE_DNS_MODE_OPPORTUNISTIC = 2; // 0x2
-    field public static final int PRIVATE_DNS_MODE_PROVIDER_HOSTNAME = 3; // 0x3
-    field public static final int PRIVATE_DNS_MODE_UNKNOWN = 0; // 0x0
-    field public static final int PRIVATE_DNS_SET_ERROR_FAILURE_SETTING = 2; // 0x2
-    field public static final int PRIVATE_DNS_SET_ERROR_HOST_NOT_SERVING = 1; // 0x1
-    field public static final int PRIVATE_DNS_SET_NO_ERROR = 0; // 0x0
-    field public static final int PROVISIONING_MODE_FULLY_MANAGED_DEVICE = 1; // 0x1
-    field public static final int PROVISIONING_MODE_MANAGED_PROFILE = 2; // 0x2
-    field public static final int RESET_PASSWORD_DO_NOT_ASK_CREDENTIALS_ON_BOOT = 2; // 0x2
-    field public static final int RESET_PASSWORD_REQUIRE_ENTRY = 1; // 0x1
-    field public static final int SKIP_SETUP_WIZARD = 1; // 0x1
-    field public static final int WIPE_EUICC = 4; // 0x4
-    field public static final int WIPE_EXTERNAL_STORAGE = 1; // 0x1
-    field public static final int WIPE_RESET_PROTECTION_DATA = 2; // 0x2
-    field public static final int WIPE_SILENTLY = 8; // 0x8
-  }
-
-  public abstract static class DevicePolicyManager.InstallSystemUpdateCallback {
-    ctor public DevicePolicyManager.InstallSystemUpdateCallback();
-    method public void onInstallUpdateError(int, @NonNull String);
-    field public static final int UPDATE_ERROR_BATTERY_LOW = 5; // 0x5
-    field public static final int UPDATE_ERROR_FILE_NOT_FOUND = 4; // 0x4
-    field public static final int UPDATE_ERROR_INCORRECT_OS_VERSION = 2; // 0x2
-    field public static final int UPDATE_ERROR_UNKNOWN = 1; // 0x1
-    field public static final int UPDATE_ERROR_UPDATE_FILE_INVALID = 3; // 0x3
-  }
-
-  public static interface DevicePolicyManager.OnClearApplicationUserDataListener {
-    method public void onApplicationUserDataCleared(String, boolean);
-  }
-
-  public final class DnsEvent extends android.app.admin.NetworkEvent implements android.os.Parcelable {
-    method public String getHostname();
-    method public java.util.List<java.net.InetAddress> getInetAddresses();
-    method public int getTotalResolvedAddressCount();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.DnsEvent> CREATOR;
-  }
-
-  public final class FactoryResetProtectionPolicy implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public java.util.List<java.lang.String> getFactoryResetProtectionAccounts();
-    method public boolean isFactoryResetProtectionEnabled();
-    method public void writeToParcel(@NonNull android.os.Parcel, @Nullable int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.FactoryResetProtectionPolicy> CREATOR;
-  }
-
-  public static class FactoryResetProtectionPolicy.Builder {
-    ctor public FactoryResetProtectionPolicy.Builder();
-    method @NonNull public android.app.admin.FactoryResetProtectionPolicy build();
-    method @NonNull public android.app.admin.FactoryResetProtectionPolicy.Builder setFactoryResetProtectionAccounts(@NonNull java.util.List<java.lang.String>);
-    method @NonNull public android.app.admin.FactoryResetProtectionPolicy.Builder setFactoryResetProtectionEnabled(boolean);
-  }
-
-  public class FreezePeriod {
-    ctor public FreezePeriod(java.time.MonthDay, java.time.MonthDay);
-    method public java.time.MonthDay getEnd();
-    method public java.time.MonthDay getStart();
-  }
-
-  public abstract class NetworkEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getId();
-    method public String getPackageName();
-    method public long getTimestamp();
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.NetworkEvent> CREATOR;
-  }
-
-  public class SecurityLog {
-    ctor public SecurityLog();
-    field public static final int LEVEL_ERROR = 3; // 0x3
-    field public static final int LEVEL_INFO = 1; // 0x1
-    field public static final int LEVEL_WARNING = 2; // 0x2
-    field public static final int TAG_ADB_SHELL_CMD = 210002; // 0x33452
-    field public static final int TAG_ADB_SHELL_INTERACTIVE = 210001; // 0x33451
-    field public static final int TAG_APP_PROCESS_START = 210005; // 0x33455
-    field public static final int TAG_CAMERA_POLICY_SET = 210034; // 0x33472
-    field public static final int TAG_CERT_AUTHORITY_INSTALLED = 210029; // 0x3346d
-    field public static final int TAG_CERT_AUTHORITY_REMOVED = 210030; // 0x3346e
-    field public static final int TAG_CERT_VALIDATION_FAILURE = 210033; // 0x33471
-    field public static final int TAG_CRYPTO_SELF_TEST_COMPLETED = 210031; // 0x3346f
-    field public static final int TAG_KEYGUARD_DISABLED_FEATURES_SET = 210021; // 0x33465
-    field public static final int TAG_KEYGUARD_DISMISSED = 210006; // 0x33456
-    field public static final int TAG_KEYGUARD_DISMISS_AUTH_ATTEMPT = 210007; // 0x33457
-    field public static final int TAG_KEYGUARD_SECURED = 210008; // 0x33458
-    field public static final int TAG_KEY_DESTRUCTION = 210026; // 0x3346a
-    field public static final int TAG_KEY_GENERATED = 210024; // 0x33468
-    field public static final int TAG_KEY_IMPORT = 210025; // 0x33469
-    field public static final int TAG_KEY_INTEGRITY_VIOLATION = 210032; // 0x33470
-    field public static final int TAG_LOGGING_STARTED = 210011; // 0x3345b
-    field public static final int TAG_LOGGING_STOPPED = 210012; // 0x3345c
-    field public static final int TAG_LOG_BUFFER_SIZE_CRITICAL = 210015; // 0x3345f
-    field public static final int TAG_MAX_PASSWORD_ATTEMPTS_SET = 210020; // 0x33464
-    field public static final int TAG_MAX_SCREEN_LOCK_TIMEOUT_SET = 210019; // 0x33463
-    field public static final int TAG_MEDIA_MOUNT = 210013; // 0x3345d
-    field public static final int TAG_MEDIA_UNMOUNT = 210014; // 0x3345e
-    field public static final int TAG_OS_SHUTDOWN = 210010; // 0x3345a
-    field public static final int TAG_OS_STARTUP = 210009; // 0x33459
-    field public static final int TAG_PASSWORD_COMPLEXITY_SET = 210017; // 0x33461
-    field public static final int TAG_PASSWORD_EXPIRATION_SET = 210016; // 0x33460
-    field public static final int TAG_PASSWORD_HISTORY_LENGTH_SET = 210018; // 0x33462
-    field public static final int TAG_REMOTE_LOCK = 210022; // 0x33466
-    field public static final int TAG_SYNC_RECV_FILE = 210003; // 0x33453
-    field public static final int TAG_SYNC_SEND_FILE = 210004; // 0x33454
-    field public static final int TAG_USER_RESTRICTION_ADDED = 210027; // 0x3346b
-    field public static final int TAG_USER_RESTRICTION_REMOVED = 210028; // 0x3346c
-    field public static final int TAG_WIPE_FAILURE = 210023; // 0x33467
-  }
-
-  public static final class SecurityLog.SecurityEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method public Object getData();
-    method public long getId();
-    method public int getLogLevel();
-    method public int getTag();
-    method public long getTimeNanos();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.SecurityLog.SecurityEvent> CREATOR;
-  }
-
-  public final class SystemUpdateInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getReceivedTime();
-    method public int getSecurityPatchState();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.SystemUpdateInfo> CREATOR;
-    field public static final int SECURITY_PATCH_STATE_FALSE = 1; // 0x1
-    field public static final int SECURITY_PATCH_STATE_TRUE = 2; // 0x2
-    field public static final int SECURITY_PATCH_STATE_UNKNOWN = 0; // 0x0
-  }
-
-  public final class SystemUpdatePolicy implements android.os.Parcelable {
-    method public static android.app.admin.SystemUpdatePolicy createAutomaticInstallPolicy();
-    method public static android.app.admin.SystemUpdatePolicy createPostponeInstallPolicy();
-    method public static android.app.admin.SystemUpdatePolicy createWindowedInstallPolicy(int, int);
-    method public int describeContents();
-    method public java.util.List<android.app.admin.FreezePeriod> getFreezePeriods();
-    method public int getInstallWindowEnd();
-    method public int getInstallWindowStart();
-    method public int getPolicyType();
-    method public android.app.admin.SystemUpdatePolicy setFreezePeriods(java.util.List<android.app.admin.FreezePeriod>);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.SystemUpdatePolicy> CREATOR;
-    field public static final int TYPE_INSTALL_AUTOMATIC = 1; // 0x1
-    field public static final int TYPE_INSTALL_WINDOWED = 2; // 0x2
-    field public static final int TYPE_POSTPONE = 3; // 0x3
-  }
-
-  public static final class SystemUpdatePolicy.ValidationFailedException extends java.lang.IllegalArgumentException implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getErrorCode();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.SystemUpdatePolicy.ValidationFailedException> CREATOR;
-    field public static final int ERROR_COMBINED_FREEZE_PERIOD_TOO_CLOSE = 6; // 0x6
-    field public static final int ERROR_COMBINED_FREEZE_PERIOD_TOO_LONG = 5; // 0x5
-    field public static final int ERROR_DUPLICATE_OR_OVERLAP = 2; // 0x2
-    field public static final int ERROR_NEW_FREEZE_PERIOD_TOO_CLOSE = 4; // 0x4
-    field public static final int ERROR_NEW_FREEZE_PERIOD_TOO_LONG = 3; // 0x3
-    field public static final int ERROR_UNKNOWN = 1; // 0x1
-  }
-
-}
-
-package android.app.assist {
-
-  public class AssistContent implements android.os.Parcelable {
-    ctor public AssistContent();
-    method public int describeContents();
-    method public android.content.ClipData getClipData();
-    method public android.os.Bundle getExtras();
-    method public android.content.Intent getIntent();
-    method public String getStructuredData();
-    method public android.net.Uri getWebUri();
-    method public boolean isAppProvidedIntent();
-    method public boolean isAppProvidedWebUri();
-    method public void setClipData(android.content.ClipData);
-    method public void setIntent(android.content.Intent);
-    method public void setStructuredData(String);
-    method public void setWebUri(android.net.Uri);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.assist.AssistContent> CREATOR;
-  }
-
-  public class AssistStructure implements android.os.Parcelable {
-    ctor public AssistStructure();
-    method public int describeContents();
-    method public long getAcquisitionEndTime();
-    method public long getAcquisitionStartTime();
-    method public android.content.ComponentName getActivityComponent();
-    method public android.app.assist.AssistStructure.WindowNode getWindowNodeAt(int);
-    method public int getWindowNodeCount();
-    method public boolean isHomeActivity();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.assist.AssistStructure> CREATOR;
-  }
-
-  public static class AssistStructure.ViewNode {
-    method public float getAlpha();
-    method @Nullable public String[] getAutofillHints();
-    method @Nullable public android.view.autofill.AutofillId getAutofillId();
-    method @Nullable public CharSequence[] getAutofillOptions();
-    method public int getAutofillType();
-    method @Nullable public android.view.autofill.AutofillValue getAutofillValue();
-    method public android.app.assist.AssistStructure.ViewNode getChildAt(int);
-    method public int getChildCount();
-    method @Nullable public String getClassName();
-    method @Nullable public CharSequence getContentDescription();
-    method public float getElevation();
-    method @Nullable public android.os.Bundle getExtras();
-    method public int getHeight();
-    method @Nullable public String getHint();
-    method @Nullable public String getHintIdEntry();
-    method @Nullable public android.view.ViewStructure.HtmlInfo getHtmlInfo();
-    method public int getId();
-    method @Nullable public String getIdEntry();
-    method @Nullable public String getIdPackage();
-    method @Nullable public String getIdType();
-    method public int getImportantForAutofill();
-    method public int getInputType();
-    method public int getLeft();
-    method @Nullable public android.os.LocaleList getLocaleList();
-    method public int getMaxTextEms();
-    method public int getMaxTextLength();
-    method public int getMinTextEms();
-    method public int getScrollX();
-    method public int getScrollY();
-    method @Nullable public CharSequence getText();
-    method public int getTextBackgroundColor();
-    method public int getTextColor();
-    method @Nullable public String getTextIdEntry();
-    method @Nullable public int[] getTextLineBaselines();
-    method @Nullable public int[] getTextLineCharOffsets();
-    method public int getTextSelectionEnd();
-    method public int getTextSelectionStart();
-    method public float getTextSize();
-    method public int getTextStyle();
-    method public int getTop();
-    method public android.graphics.Matrix getTransformation();
-    method public int getVisibility();
-    method @Nullable public String getWebDomain();
-    method @Nullable public String getWebScheme();
-    method public int getWidth();
-    method public boolean isAccessibilityFocused();
-    method public boolean isActivated();
-    method public boolean isAssistBlocked();
-    method public boolean isCheckable();
-    method public boolean isChecked();
-    method public boolean isClickable();
-    method public boolean isContextClickable();
-    method public boolean isEnabled();
-    method public boolean isFocusable();
-    method public boolean isFocused();
-    method public boolean isLongClickable();
-    method public boolean isOpaque();
-    method public boolean isSelected();
-    field public static final int TEXT_COLOR_UNDEFINED = 1; // 0x1
-    field public static final int TEXT_STYLE_BOLD = 1; // 0x1
-    field public static final int TEXT_STYLE_ITALIC = 2; // 0x2
-    field public static final int TEXT_STYLE_STRIKE_THRU = 8; // 0x8
-    field public static final int TEXT_STYLE_UNDERLINE = 4; // 0x4
-  }
-
-  public static class AssistStructure.WindowNode {
-    method public int getDisplayId();
-    method public int getHeight();
-    method public int getLeft();
-    method public android.app.assist.AssistStructure.ViewNode getRootViewNode();
-    method public CharSequence getTitle();
-    method public int getTop();
-    method public int getWidth();
-  }
-
-}
-
-package android.app.backup {
-
-  public abstract class BackupAgent extends android.content.ContextWrapper {
-    ctor public BackupAgent();
-    method public final void fullBackupFile(java.io.File, android.app.backup.FullBackupDataOutput);
-    method public abstract void onBackup(android.os.ParcelFileDescriptor, android.app.backup.BackupDataOutput, android.os.ParcelFileDescriptor) throws java.io.IOException;
-    method public void onCreate();
-    method public void onDestroy();
-    method public void onFullBackup(android.app.backup.FullBackupDataOutput) throws java.io.IOException;
-    method public void onQuotaExceeded(long, long);
-    method public abstract void onRestore(android.app.backup.BackupDataInput, int, android.os.ParcelFileDescriptor) throws java.io.IOException;
-    method public void onRestore(android.app.backup.BackupDataInput, long, android.os.ParcelFileDescriptor) throws java.io.IOException;
-    method public void onRestoreFile(android.os.ParcelFileDescriptor, long, java.io.File, int, long, long) throws java.io.IOException;
-    method public void onRestoreFinished();
-    field public static final int FLAG_CLIENT_SIDE_ENCRYPTION_ENABLED = 1; // 0x1
-    field public static final int FLAG_DEVICE_TO_DEVICE_TRANSFER = 2; // 0x2
-    field public static final int TYPE_DIRECTORY = 2; // 0x2
-    field public static final int TYPE_FILE = 1; // 0x1
-  }
-
-  public class BackupAgentHelper extends android.app.backup.BackupAgent {
-    ctor public BackupAgentHelper();
-    method public void addHelper(String, android.app.backup.BackupHelper);
-    method public void onBackup(android.os.ParcelFileDescriptor, android.app.backup.BackupDataOutput, android.os.ParcelFileDescriptor) throws java.io.IOException;
-    method public void onRestore(android.app.backup.BackupDataInput, int, android.os.ParcelFileDescriptor) throws java.io.IOException;
-  }
-
-  public class BackupDataInput {
-    method public int getDataSize();
-    method public String getKey();
-    method public int readEntityData(byte[], int, int) throws java.io.IOException;
-    method public boolean readNextHeader() throws java.io.IOException;
-    method public void skipEntityData() throws java.io.IOException;
-  }
-
-  public class BackupDataInputStream extends java.io.InputStream {
-    method public String getKey();
-    method public int read() throws java.io.IOException;
-    method public int size();
-  }
-
-  public class BackupDataOutput {
-    method public long getQuota();
-    method public int getTransportFlags();
-    method public int writeEntityData(byte[], int) throws java.io.IOException;
-    method public int writeEntityHeader(String, int) throws java.io.IOException;
-  }
-
-  public interface BackupHelper {
-    method public void performBackup(android.os.ParcelFileDescriptor, android.app.backup.BackupDataOutput, android.os.ParcelFileDescriptor);
-    method public void restoreEntity(android.app.backup.BackupDataInputStream);
-    method public void writeNewStateDescription(android.os.ParcelFileDescriptor);
-  }
-
-  public class BackupManager {
-    ctor public BackupManager(android.content.Context);
-    method public void dataChanged();
-    method public static void dataChanged(String);
-    method @Nullable public android.os.UserHandle getUserForAncestralSerialNumber(long);
-    method @Deprecated public int requestRestore(android.app.backup.RestoreObserver);
-  }
-
-  public class FileBackupHelper implements android.app.backup.BackupHelper {
-    ctor public FileBackupHelper(android.content.Context, java.lang.String...);
-    method public void performBackup(android.os.ParcelFileDescriptor, android.app.backup.BackupDataOutput, android.os.ParcelFileDescriptor);
-    method public void restoreEntity(android.app.backup.BackupDataInputStream);
-    method public void writeNewStateDescription(android.os.ParcelFileDescriptor);
-  }
-
-  public class FullBackupDataOutput {
-    method public long getQuota();
-    method public int getTransportFlags();
-  }
-
-  public abstract class RestoreObserver {
-    ctor public RestoreObserver();
-    method public void onUpdate(int, String);
-    method public void restoreFinished(int);
-    method public void restoreStarting(int);
-  }
-
-  public class SharedPreferencesBackupHelper implements android.app.backup.BackupHelper {
-    ctor public SharedPreferencesBackupHelper(android.content.Context, java.lang.String...);
-    method public void performBackup(android.os.ParcelFileDescriptor, android.app.backup.BackupDataOutput, android.os.ParcelFileDescriptor);
-    method public void restoreEntity(android.app.backup.BackupDataInputStream);
-    method public void writeNewStateDescription(android.os.ParcelFileDescriptor);
-  }
-
-}
-
-package android.app.blob {
-
-  public final class BlobHandle implements android.os.Parcelable {
-    method @NonNull public static android.app.blob.BlobHandle createWithSha256(@NonNull byte[], @NonNull CharSequence, long, @NonNull String);
-    method public int describeContents();
-    method public long getExpiryTimeMillis();
-    method @NonNull public CharSequence getLabel();
-    method @NonNull public byte[] getSha256Digest();
-    method @NonNull public String getTag();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.blob.BlobHandle> CREATOR;
-  }
-
-  public class BlobStoreManager {
-    method public void abandonSession(@IntRange(from=1) long) throws java.io.IOException;
-    method public void acquireLease(@NonNull android.app.blob.BlobHandle, @IdRes int, long) throws java.io.IOException;
-    method public void acquireLease(@NonNull android.app.blob.BlobHandle, @NonNull CharSequence, long) throws java.io.IOException;
-    method public void acquireLease(@NonNull android.app.blob.BlobHandle, @IdRes int) throws java.io.IOException;
-    method public void acquireLease(@NonNull android.app.blob.BlobHandle, @NonNull CharSequence) throws java.io.IOException;
-    method @IntRange(from=1) public long createSession(@NonNull android.app.blob.BlobHandle) throws java.io.IOException;
-    method @NonNull public java.util.List<android.app.blob.BlobHandle> getLeasedBlobs() throws java.io.IOException;
-    method @IntRange(from=0) public long getRemainingLeaseQuotaBytes();
-    method @NonNull public android.os.ParcelFileDescriptor openBlob(@NonNull android.app.blob.BlobHandle) throws java.io.IOException;
-    method @NonNull public android.app.blob.BlobStoreManager.Session openSession(@IntRange(from=1) long) throws java.io.IOException;
-    method public void releaseLease(@NonNull android.app.blob.BlobHandle) throws java.io.IOException;
-  }
-
-  public static class BlobStoreManager.Session implements java.io.Closeable {
-    method public void abandon() throws java.io.IOException;
-    method public void allowPackageAccess(@NonNull String, @NonNull byte[]) throws java.io.IOException;
-    method public void allowPublicAccess() throws java.io.IOException;
-    method public void allowSameSignatureAccess() throws java.io.IOException;
-    method public void close() throws java.io.IOException;
-    method public void commit(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>) throws java.io.IOException;
-    method public long getSize() throws java.io.IOException;
-    method public boolean isPackageAccessAllowed(@NonNull String, @NonNull byte[]) throws java.io.IOException;
-    method public boolean isPublicAccessAllowed() throws java.io.IOException;
-    method public boolean isSameSignatureAccessAllowed() throws java.io.IOException;
-    method @NonNull public android.os.ParcelFileDescriptor openRead() throws java.io.IOException;
-    method @NonNull public android.os.ParcelFileDescriptor openWrite(long, long) throws java.io.IOException;
-  }
-
-}
-
-package android.app.job {
-
-  public class JobInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getBackoffPolicy();
-    method @Nullable public android.content.ClipData getClipData();
-    method public int getClipGrantFlags();
-    method public long getEstimatedNetworkDownloadBytes();
-    method public long getEstimatedNetworkUploadBytes();
-    method @NonNull public android.os.PersistableBundle getExtras();
-    method public long getFlexMillis();
-    method public int getId();
-    method public long getInitialBackoffMillis();
-    method public long getIntervalMillis();
-    method public long getMaxExecutionDelayMillis();
-    method public static final long getMinFlexMillis();
-    method public long getMinLatencyMillis();
-    method public static final long getMinPeriodMillis();
-    method @Deprecated public int getNetworkType();
-    method @Nullable public android.net.NetworkRequest getRequiredNetwork();
-    method @NonNull public android.content.ComponentName getService();
-    method @NonNull public android.os.Bundle getTransientExtras();
-    method public long getTriggerContentMaxDelay();
-    method public long getTriggerContentUpdateDelay();
-    method @Nullable public android.app.job.JobInfo.TriggerContentUri[] getTriggerContentUris();
-    method public boolean isImportantWhileForeground();
-    method public boolean isPeriodic();
-    method public boolean isPersisted();
-    method public boolean isPrefetch();
-    method public boolean isRequireBatteryNotLow();
-    method public boolean isRequireCharging();
-    method public boolean isRequireDeviceIdle();
-    method public boolean isRequireStorageNotLow();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int BACKOFF_POLICY_EXPONENTIAL = 1; // 0x1
-    field public static final int BACKOFF_POLICY_LINEAR = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.job.JobInfo> CREATOR;
-    field public static final long DEFAULT_INITIAL_BACKOFF_MILLIS = 30000L; // 0x7530L
-    field public static final long MAX_BACKOFF_DELAY_MILLIS = 18000000L; // 0x112a880L
-    field public static final int NETWORK_BYTES_UNKNOWN = -1; // 0xffffffff
-    field public static final int NETWORK_TYPE_ANY = 1; // 0x1
-    field public static final int NETWORK_TYPE_CELLULAR = 4; // 0x4
-    field @Deprecated public static final int NETWORK_TYPE_METERED = 4; // 0x4
-    field public static final int NETWORK_TYPE_NONE = 0; // 0x0
-    field public static final int NETWORK_TYPE_NOT_ROAMING = 3; // 0x3
-    field public static final int NETWORK_TYPE_UNMETERED = 2; // 0x2
-  }
-
-  public static final class JobInfo.Builder {
-    ctor public JobInfo.Builder(int, @NonNull android.content.ComponentName);
-    method public android.app.job.JobInfo.Builder addTriggerContentUri(@NonNull android.app.job.JobInfo.TriggerContentUri);
-    method public android.app.job.JobInfo build();
-    method public android.app.job.JobInfo.Builder setBackoffCriteria(long, int);
-    method public android.app.job.JobInfo.Builder setClipData(@Nullable android.content.ClipData, int);
-    method public android.app.job.JobInfo.Builder setEstimatedNetworkBytes(long, long);
-    method public android.app.job.JobInfo.Builder setExtras(@NonNull android.os.PersistableBundle);
-    method public android.app.job.JobInfo.Builder setImportantWhileForeground(boolean);
-    method public android.app.job.JobInfo.Builder setMinimumLatency(long);
-    method public android.app.job.JobInfo.Builder setOverrideDeadline(long);
-    method public android.app.job.JobInfo.Builder setPeriodic(long);
-    method public android.app.job.JobInfo.Builder setPeriodic(long, long);
-    method @RequiresPermission(android.Manifest.permission.RECEIVE_BOOT_COMPLETED) public android.app.job.JobInfo.Builder setPersisted(boolean);
-    method public android.app.job.JobInfo.Builder setPrefetch(boolean);
-    method public android.app.job.JobInfo.Builder setRequiredNetwork(@Nullable android.net.NetworkRequest);
-    method public android.app.job.JobInfo.Builder setRequiredNetworkType(int);
-    method public android.app.job.JobInfo.Builder setRequiresBatteryNotLow(boolean);
-    method public android.app.job.JobInfo.Builder setRequiresCharging(boolean);
-    method public android.app.job.JobInfo.Builder setRequiresDeviceIdle(boolean);
-    method public android.app.job.JobInfo.Builder setRequiresStorageNotLow(boolean);
-    method public android.app.job.JobInfo.Builder setTransientExtras(@NonNull android.os.Bundle);
-    method public android.app.job.JobInfo.Builder setTriggerContentMaxDelay(long);
-    method public android.app.job.JobInfo.Builder setTriggerContentUpdateDelay(long);
-  }
-
-  public static final class JobInfo.TriggerContentUri implements android.os.Parcelable {
-    ctor public JobInfo.TriggerContentUri(@NonNull android.net.Uri, int);
-    method public int describeContents();
-    method public int getFlags();
-    method public android.net.Uri getUri();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.job.JobInfo.TriggerContentUri> CREATOR;
-    field public static final int FLAG_NOTIFY_FOR_DESCENDANTS = 1; // 0x1
-  }
-
-  public class JobParameters implements android.os.Parcelable {
-    method public void completeWork(@NonNull android.app.job.JobWorkItem);
-    method @Nullable public android.app.job.JobWorkItem dequeueWork();
-    method public int describeContents();
-    method @Nullable public android.content.ClipData getClipData();
-    method public int getClipGrantFlags();
-    method @NonNull public android.os.PersistableBundle getExtras();
-    method public int getJobId();
-    method @Nullable public android.net.Network getNetwork();
-    method @NonNull public android.os.Bundle getTransientExtras();
-    method @Nullable public String[] getTriggeredContentAuthorities();
-    method @Nullable public android.net.Uri[] getTriggeredContentUris();
-    method public boolean isOverrideDeadlineExpired();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.job.JobParameters> CREATOR;
-  }
-
-  public abstract class JobScheduler {
-    ctor public JobScheduler();
-    method public abstract void cancel(int);
-    method public abstract void cancelAll();
-    method public abstract int enqueue(@NonNull android.app.job.JobInfo, @NonNull android.app.job.JobWorkItem);
-    method @NonNull public abstract java.util.List<android.app.job.JobInfo> getAllPendingJobs();
-    method @Nullable public abstract android.app.job.JobInfo getPendingJob(int);
-    method public abstract int schedule(@NonNull android.app.job.JobInfo);
-    field public static final int RESULT_FAILURE = 0; // 0x0
-    field public static final int RESULT_SUCCESS = 1; // 0x1
-  }
-
-  public abstract class JobService extends android.app.Service {
-    ctor public JobService();
-    method public final void jobFinished(android.app.job.JobParameters, boolean);
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method public abstract boolean onStartJob(android.app.job.JobParameters);
-    method public abstract boolean onStopJob(android.app.job.JobParameters);
-    field public static final String PERMISSION_BIND = "android.permission.BIND_JOB_SERVICE";
-  }
-
-  public abstract class JobServiceEngine {
-    ctor public JobServiceEngine(android.app.Service);
-    method public final android.os.IBinder getBinder();
-    method public void jobFinished(android.app.job.JobParameters, boolean);
-    method public abstract boolean onStartJob(android.app.job.JobParameters);
-    method public abstract boolean onStopJob(android.app.job.JobParameters);
-  }
-
-  public final class JobWorkItem implements android.os.Parcelable {
-    ctor public JobWorkItem(android.content.Intent);
-    ctor public JobWorkItem(android.content.Intent, long, long);
-    method public int describeContents();
-    method public int getDeliveryCount();
-    method public long getEstimatedNetworkDownloadBytes();
-    method public long getEstimatedNetworkUploadBytes();
-    method public android.content.Intent getIntent();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.job.JobWorkItem> CREATOR;
-  }
-
-}
-
-package android.app.role {
-
-  public final class RoleManager {
-    method @NonNull public android.content.Intent createRequestRoleIntent(@NonNull String);
-    method public boolean isRoleAvailable(@NonNull String);
-    method public boolean isRoleHeld(@NonNull String);
-    field public static final String ROLE_ASSISTANT = "android.app.role.ASSISTANT";
-    field public static final String ROLE_BROWSER = "android.app.role.BROWSER";
-    field public static final String ROLE_CALL_REDIRECTION = "android.app.role.CALL_REDIRECTION";
-    field public static final String ROLE_CALL_SCREENING = "android.app.role.CALL_SCREENING";
-    field public static final String ROLE_DIALER = "android.app.role.DIALER";
-    field public static final String ROLE_EMERGENCY = "android.app.role.EMERGENCY";
-    field public static final String ROLE_HOME = "android.app.role.HOME";
-    field public static final String ROLE_SMS = "android.app.role.SMS";
-  }
-
-}
-
-package android.app.slice {
-
-  public final class Slice implements android.os.Parcelable {
-    ctor protected Slice(android.os.Parcel);
-    method public int describeContents();
-    method public java.util.List<java.lang.String> getHints();
-    method public java.util.List<android.app.slice.SliceItem> getItems();
-    method @Nullable public android.app.slice.SliceSpec getSpec();
-    method public android.net.Uri getUri();
-    method public boolean isCallerNeeded();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.slice.Slice> CREATOR;
-    field public static final String EXTRA_RANGE_VALUE = "android.app.slice.extra.RANGE_VALUE";
-    field public static final String EXTRA_TOGGLE_STATE = "android.app.slice.extra.TOGGLE_STATE";
-    field public static final String HINT_ACTIONS = "actions";
-    field public static final String HINT_ERROR = "error";
-    field public static final String HINT_HORIZONTAL = "horizontal";
-    field public static final String HINT_KEYWORDS = "keywords";
-    field public static final String HINT_LARGE = "large";
-    field public static final String HINT_LAST_UPDATED = "last_updated";
-    field public static final String HINT_LIST = "list";
-    field public static final String HINT_LIST_ITEM = "list_item";
-    field public static final String HINT_NO_TINT = "no_tint";
-    field public static final String HINT_PARTIAL = "partial";
-    field public static final String HINT_PERMISSION_REQUEST = "permission_request";
-    field public static final String HINT_SEE_MORE = "see_more";
-    field public static final String HINT_SELECTED = "selected";
-    field public static final String HINT_SHORTCUT = "shortcut";
-    field public static final String HINT_SUMMARY = "summary";
-    field public static final String HINT_TITLE = "title";
-    field public static final String HINT_TTL = "ttl";
-    field public static final String SUBTYPE_COLOR = "color";
-    field public static final String SUBTYPE_CONTENT_DESCRIPTION = "content_description";
-    field public static final String SUBTYPE_LAYOUT_DIRECTION = "layout_direction";
-    field public static final String SUBTYPE_MAX = "max";
-    field public static final String SUBTYPE_MESSAGE = "message";
-    field public static final String SUBTYPE_MILLIS = "millis";
-    field public static final String SUBTYPE_PRIORITY = "priority";
-    field public static final String SUBTYPE_RANGE = "range";
-    field public static final String SUBTYPE_SOURCE = "source";
-    field public static final String SUBTYPE_TOGGLE = "toggle";
-    field public static final String SUBTYPE_VALUE = "value";
-  }
-
-  public static class Slice.Builder {
-    ctor public Slice.Builder(@NonNull android.net.Uri, android.app.slice.SliceSpec);
-    ctor public Slice.Builder(@NonNull android.app.slice.Slice.Builder);
-    method public android.app.slice.Slice.Builder addAction(@NonNull android.app.PendingIntent, @NonNull android.app.slice.Slice, @Nullable String);
-    method public android.app.slice.Slice.Builder addBundle(android.os.Bundle, @Nullable String, java.util.List<java.lang.String>);
-    method public android.app.slice.Slice.Builder addHints(java.util.List<java.lang.String>);
-    method public android.app.slice.Slice.Builder addIcon(android.graphics.drawable.Icon, @Nullable String, java.util.List<java.lang.String>);
-    method public android.app.slice.Slice.Builder addInt(int, @Nullable String, java.util.List<java.lang.String>);
-    method public android.app.slice.Slice.Builder addLong(long, @Nullable String, java.util.List<java.lang.String>);
-    method public android.app.slice.Slice.Builder addRemoteInput(android.app.RemoteInput, @Nullable String, java.util.List<java.lang.String>);
-    method public android.app.slice.Slice.Builder addSubSlice(@NonNull android.app.slice.Slice, @Nullable String);
-    method public android.app.slice.Slice.Builder addText(CharSequence, @Nullable String, java.util.List<java.lang.String>);
-    method public android.app.slice.Slice build();
-    method public android.app.slice.Slice.Builder setCallerNeeded(boolean);
-  }
-
-  public final class SliceItem implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.app.PendingIntent getAction();
-    method public android.os.Bundle getBundle();
-    method public String getFormat();
-    method @NonNull public java.util.List<java.lang.String> getHints();
-    method public android.graphics.drawable.Icon getIcon();
-    method public int getInt();
-    method public long getLong();
-    method public android.app.RemoteInput getRemoteInput();
-    method public android.app.slice.Slice getSlice();
-    method public String getSubType();
-    method public CharSequence getText();
-    method public boolean hasHint(String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.slice.SliceItem> CREATOR;
-    field public static final String FORMAT_ACTION = "action";
-    field public static final String FORMAT_BUNDLE = "bundle";
-    field public static final String FORMAT_IMAGE = "image";
-    field public static final String FORMAT_INT = "int";
-    field public static final String FORMAT_LONG = "long";
-    field public static final String FORMAT_REMOTE_INPUT = "input";
-    field public static final String FORMAT_SLICE = "slice";
-    field public static final String FORMAT_TEXT = "text";
-  }
-
-  public class SliceManager {
-    method @Nullable public android.app.slice.Slice bindSlice(@NonNull android.net.Uri, @NonNull java.util.Set<android.app.slice.SliceSpec>);
-    method @Nullable public android.app.slice.Slice bindSlice(@NonNull android.content.Intent, @NonNull java.util.Set<android.app.slice.SliceSpec>);
-    method public int checkSlicePermission(@NonNull android.net.Uri, int, int);
-    method @NonNull public java.util.List<android.net.Uri> getPinnedSlices();
-    method @NonNull public java.util.Set<android.app.slice.SliceSpec> getPinnedSpecs(android.net.Uri);
-    method @NonNull @WorkerThread public java.util.Collection<android.net.Uri> getSliceDescendants(@NonNull android.net.Uri);
-    method public void grantSlicePermission(@NonNull String, @NonNull android.net.Uri);
-    method @Nullable public android.net.Uri mapIntentToUri(@NonNull android.content.Intent);
-    method public void pinSlice(@NonNull android.net.Uri, @NonNull java.util.Set<android.app.slice.SliceSpec>);
-    method public void revokeSlicePermission(@NonNull String, @NonNull android.net.Uri);
-    method public void unpinSlice(@NonNull android.net.Uri);
-    field public static final String CATEGORY_SLICE = "android.app.slice.category.SLICE";
-    field public static final String SLICE_METADATA_KEY = "android.metadata.SLICE_URI";
-  }
-
-  public class SliceMetrics {
-    ctor public SliceMetrics(@NonNull android.content.Context, @NonNull android.net.Uri);
-    method public void logHidden();
-    method public void logTouch(int, @NonNull android.net.Uri);
-    method public void logVisible();
-  }
-
-  public abstract class SliceProvider extends android.content.ContentProvider {
-    ctor public SliceProvider(@NonNull java.lang.String...);
-    ctor public SliceProvider();
-    method public final int delete(android.net.Uri, String, String[]);
-    method public final String getType(android.net.Uri);
-    method public final android.net.Uri insert(android.net.Uri, android.content.ContentValues);
-    method public android.app.slice.Slice onBindSlice(android.net.Uri, java.util.Set<android.app.slice.SliceSpec>);
-    method @NonNull public android.app.PendingIntent onCreatePermissionRequest(android.net.Uri);
-    method @NonNull public java.util.Collection<android.net.Uri> onGetSliceDescendants(@NonNull android.net.Uri);
-    method @NonNull public android.net.Uri onMapIntentToUri(android.content.Intent);
-    method public void onSlicePinned(android.net.Uri);
-    method public void onSliceUnpinned(android.net.Uri);
-    method public final android.database.Cursor query(android.net.Uri, String[], String, String[], String);
-    method public final android.database.Cursor query(android.net.Uri, String[], String, String[], String, android.os.CancellationSignal);
-    method public final android.database.Cursor query(android.net.Uri, String[], android.os.Bundle, android.os.CancellationSignal);
-    method public final int update(android.net.Uri, android.content.ContentValues, String, String[]);
-    field public static final String SLICE_TYPE = "vnd.android.slice";
-  }
-
-  public final class SliceSpec implements android.os.Parcelable {
-    ctor public SliceSpec(@NonNull String, int);
-    method public boolean canRender(@NonNull android.app.slice.SliceSpec);
-    method public int describeContents();
-    method public int getRevision();
-    method public String getType();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.slice.SliceSpec> CREATOR;
-  }
-
-}
-
-package android.app.usage {
-
-  public final class ConfigurationStats implements android.os.Parcelable {
-    ctor public ConfigurationStats(android.app.usage.ConfigurationStats);
-    method public int describeContents();
-    method public int getActivationCount();
-    method public android.content.res.Configuration getConfiguration();
-    method public long getFirstTimeStamp();
-    method public long getLastTimeActive();
-    method public long getLastTimeStamp();
-    method public long getTotalTimeActive();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.usage.ConfigurationStats> CREATOR;
-  }
-
-  public final class EventStats implements android.os.Parcelable {
-    ctor public EventStats(android.app.usage.EventStats);
-    method public void add(android.app.usage.EventStats);
-    method public int describeContents();
-    method public int getCount();
-    method public int getEventType();
-    method public long getFirstTimeStamp();
-    method public long getLastEventTime();
-    method public long getLastTimeStamp();
-    method public long getTotalTime();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.usage.EventStats> CREATOR;
-  }
-
-  public final class ExternalStorageStats implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getAppBytes();
-    method public long getAudioBytes();
-    method public long getImageBytes();
-    method public long getTotalBytes();
-    method public long getVideoBytes();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.usage.ExternalStorageStats> CREATOR;
-  }
-
-  public final class NetworkStats implements java.lang.AutoCloseable {
-    method public void close();
-    method public boolean getNextBucket(android.app.usage.NetworkStats.Bucket);
-    method public boolean hasNextBucket();
-  }
-
-  public static class NetworkStats.Bucket {
-    ctor public NetworkStats.Bucket();
-    method public int getDefaultNetworkStatus();
-    method public long getEndTimeStamp();
-    method public int getMetered();
-    method public int getRoaming();
-    method public long getRxBytes();
-    method public long getRxPackets();
-    method public long getStartTimeStamp();
-    method public int getState();
-    method public int getTag();
-    method public long getTxBytes();
-    method public long getTxPackets();
-    method public int getUid();
-    field public static final int DEFAULT_NETWORK_ALL = -1; // 0xffffffff
-    field public static final int DEFAULT_NETWORK_NO = 1; // 0x1
-    field public static final int DEFAULT_NETWORK_YES = 2; // 0x2
-    field public static final int METERED_ALL = -1; // 0xffffffff
-    field public static final int METERED_NO = 1; // 0x1
-    field public static final int METERED_YES = 2; // 0x2
-    field public static final int ROAMING_ALL = -1; // 0xffffffff
-    field public static final int ROAMING_NO = 1; // 0x1
-    field public static final int ROAMING_YES = 2; // 0x2
-    field public static final int STATE_ALL = -1; // 0xffffffff
-    field public static final int STATE_DEFAULT = 1; // 0x1
-    field public static final int STATE_FOREGROUND = 2; // 0x2
-    field public static final int TAG_NONE = 0; // 0x0
-    field public static final int UID_ALL = -1; // 0xffffffff
-    field public static final int UID_REMOVED = -4; // 0xfffffffc
-    field public static final int UID_TETHERING = -5; // 0xfffffffb
-  }
-
-  public class NetworkStatsManager {
-    method public android.app.usage.NetworkStats queryDetails(int, String, long, long) throws android.os.RemoteException, java.lang.SecurityException;
-    method public android.app.usage.NetworkStats queryDetailsForUid(int, String, long, long, int) throws java.lang.SecurityException;
-    method public android.app.usage.NetworkStats queryDetailsForUidTag(int, String, long, long, int, int) throws java.lang.SecurityException;
-    method public android.app.usage.NetworkStats queryDetailsForUidTagState(int, String, long, long, int, int, int) throws java.lang.SecurityException;
-    method public android.app.usage.NetworkStats querySummary(int, String, long, long) throws android.os.RemoteException, java.lang.SecurityException;
-    method public android.app.usage.NetworkStats.Bucket querySummaryForDevice(int, String, long, long) throws android.os.RemoteException, java.lang.SecurityException;
-    method public android.app.usage.NetworkStats.Bucket querySummaryForUser(int, String, long, long) throws android.os.RemoteException, java.lang.SecurityException;
-    method public void registerUsageCallback(int, String, long, android.app.usage.NetworkStatsManager.UsageCallback);
-    method public void registerUsageCallback(int, String, long, android.app.usage.NetworkStatsManager.UsageCallback, @Nullable android.os.Handler);
-    method public void unregisterUsageCallback(android.app.usage.NetworkStatsManager.UsageCallback);
-  }
-
-  public abstract static class NetworkStatsManager.UsageCallback {
-    ctor public NetworkStatsManager.UsageCallback();
-    method public abstract void onThresholdReached(int, String);
-  }
-
-  public final class StorageStats implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getAppBytes();
-    method public long getCacheBytes();
-    method public long getDataBytes();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.usage.StorageStats> CREATOR;
-  }
-
-  public class StorageStatsManager {
-    method @WorkerThread public long getFreeBytes(@NonNull java.util.UUID) throws java.io.IOException;
-    method @WorkerThread public long getTotalBytes(@NonNull java.util.UUID) throws java.io.IOException;
-    method @NonNull @WorkerThread public android.app.usage.ExternalStorageStats queryExternalStatsForUser(@NonNull java.util.UUID, @NonNull android.os.UserHandle) throws java.io.IOException;
-    method @NonNull @WorkerThread public android.app.usage.StorageStats queryStatsForPackage(@NonNull java.util.UUID, @NonNull String, @NonNull android.os.UserHandle) throws java.io.IOException, android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull @WorkerThread public android.app.usage.StorageStats queryStatsForUid(@NonNull java.util.UUID, int) throws java.io.IOException;
-    method @NonNull @WorkerThread public android.app.usage.StorageStats queryStatsForUser(@NonNull java.util.UUID, @NonNull android.os.UserHandle) throws java.io.IOException;
-  }
-
-  public final class UsageEvents implements android.os.Parcelable {
-    method public int describeContents();
-    method public boolean getNextEvent(android.app.usage.UsageEvents.Event);
-    method public boolean hasNextEvent();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.usage.UsageEvents> CREATOR;
-  }
-
-  public static final class UsageEvents.Event {
-    ctor public UsageEvents.Event();
-    method public int getAppStandbyBucket();
-    method public String getClassName();
-    method public android.content.res.Configuration getConfiguration();
-    method public int getEventType();
-    method public String getPackageName();
-    method public String getShortcutId();
-    method public long getTimeStamp();
-    field public static final int ACTIVITY_PAUSED = 2; // 0x2
-    field public static final int ACTIVITY_RESUMED = 1; // 0x1
-    field public static final int ACTIVITY_STOPPED = 23; // 0x17
-    field public static final int CONFIGURATION_CHANGE = 5; // 0x5
-    field public static final int DEVICE_SHUTDOWN = 26; // 0x1a
-    field public static final int DEVICE_STARTUP = 27; // 0x1b
-    field public static final int FOREGROUND_SERVICE_START = 19; // 0x13
-    field public static final int FOREGROUND_SERVICE_STOP = 20; // 0x14
-    field public static final int KEYGUARD_HIDDEN = 18; // 0x12
-    field public static final int KEYGUARD_SHOWN = 17; // 0x11
-    field @Deprecated public static final int MOVE_TO_BACKGROUND = 2; // 0x2
-    field @Deprecated public static final int MOVE_TO_FOREGROUND = 1; // 0x1
-    field public static final int NONE = 0; // 0x0
-    field public static final int SCREEN_INTERACTIVE = 15; // 0xf
-    field public static final int SCREEN_NON_INTERACTIVE = 16; // 0x10
-    field public static final int SHORTCUT_INVOCATION = 8; // 0x8
-    field public static final int STANDBY_BUCKET_CHANGED = 11; // 0xb
-    field public static final int USER_INTERACTION = 7; // 0x7
-  }
-
-  public final class UsageStats implements android.os.Parcelable {
-    ctor public UsageStats(android.app.usage.UsageStats);
-    method public void add(android.app.usage.UsageStats);
-    method public int describeContents();
-    method public long getFirstTimeStamp();
-    method public long getLastTimeForegroundServiceUsed();
-    method public long getLastTimeStamp();
-    method public long getLastTimeUsed();
-    method public long getLastTimeVisible();
-    method public String getPackageName();
-    method public long getTotalTimeForegroundServiceUsed();
-    method public long getTotalTimeInForeground();
-    method public long getTotalTimeVisible();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.usage.UsageStats> CREATOR;
-  }
-
-  public final class UsageStatsManager {
-    method public int getAppStandbyBucket();
-    method public boolean isAppInactive(String);
-    method public java.util.Map<java.lang.String,android.app.usage.UsageStats> queryAndAggregateUsageStats(long, long);
-    method public java.util.List<android.app.usage.ConfigurationStats> queryConfigurations(int, long, long);
-    method public java.util.List<android.app.usage.EventStats> queryEventStats(int, long, long);
-    method public android.app.usage.UsageEvents queryEvents(long, long);
-    method public android.app.usage.UsageEvents queryEventsForSelf(long, long);
-    method public java.util.List<android.app.usage.UsageStats> queryUsageStats(int, long, long);
-    field public static final int INTERVAL_BEST = 4; // 0x4
-    field public static final int INTERVAL_DAILY = 0; // 0x0
-    field public static final int INTERVAL_MONTHLY = 2; // 0x2
-    field public static final int INTERVAL_WEEKLY = 1; // 0x1
-    field public static final int INTERVAL_YEARLY = 3; // 0x3
-    field public static final int STANDBY_BUCKET_ACTIVE = 10; // 0xa
-    field public static final int STANDBY_BUCKET_FREQUENT = 30; // 0x1e
-    field public static final int STANDBY_BUCKET_RARE = 40; // 0x28
-    field public static final int STANDBY_BUCKET_RESTRICTED = 45; // 0x2d
-    field public static final int STANDBY_BUCKET_WORKING_SET = 20; // 0x14
-  }
-
-}
-
-package android.appwidget {
-
-  public class AppWidgetHost {
-    ctor public AppWidgetHost(android.content.Context, int);
-    method public int allocateAppWidgetId();
-    method protected void clearViews();
-    method public final android.appwidget.AppWidgetHostView createView(android.content.Context, int, android.appwidget.AppWidgetProviderInfo);
-    method public static void deleteAllHosts();
-    method public void deleteAppWidgetId(int);
-    method public void deleteHost();
-    method public int[] getAppWidgetIds();
-    method public void onAppWidgetRemoved(int);
-    method protected android.appwidget.AppWidgetHostView onCreateView(android.content.Context, int, android.appwidget.AppWidgetProviderInfo);
-    method protected void onProviderChanged(int, android.appwidget.AppWidgetProviderInfo);
-    method protected void onProvidersChanged();
-    method public final void startAppWidgetConfigureActivityForResult(@NonNull android.app.Activity, int, int, int, @Nullable android.os.Bundle);
-    method public void startListening();
-    method public void stopListening();
-  }
-
-  public class AppWidgetHostView extends android.widget.FrameLayout {
-    ctor public AppWidgetHostView(android.content.Context);
-    ctor public AppWidgetHostView(android.content.Context, int, int);
-    method public int getAppWidgetId();
-    method public android.appwidget.AppWidgetProviderInfo getAppWidgetInfo();
-    method public static android.graphics.Rect getDefaultPaddingForWidget(android.content.Context, android.content.ComponentName, android.graphics.Rect);
-    method protected android.view.View getDefaultView();
-    method protected android.view.View getErrorView();
-    method protected void prepareView(android.view.View);
-    method public void setAppWidget(int, android.appwidget.AppWidgetProviderInfo);
-    method public void setExecutor(java.util.concurrent.Executor);
-    method public void setOnLightBackground(boolean);
-    method public void updateAppWidget(android.widget.RemoteViews);
-    method public void updateAppWidgetOptions(android.os.Bundle);
-    method public void updateAppWidgetSize(android.os.Bundle, int, int, int, int);
-  }
-
-  public class AppWidgetManager {
-    method public boolean bindAppWidgetIdIfAllowed(int, android.content.ComponentName);
-    method public boolean bindAppWidgetIdIfAllowed(int, android.content.ComponentName, android.os.Bundle);
-    method public boolean bindAppWidgetIdIfAllowed(int, android.os.UserHandle, android.content.ComponentName, android.os.Bundle);
-    method public int[] getAppWidgetIds(android.content.ComponentName);
-    method public android.appwidget.AppWidgetProviderInfo getAppWidgetInfo(int);
-    method public android.os.Bundle getAppWidgetOptions(int);
-    method public java.util.List<android.appwidget.AppWidgetProviderInfo> getInstalledProviders();
-    method @NonNull public java.util.List<android.appwidget.AppWidgetProviderInfo> getInstalledProvidersForPackage(@NonNull String, @Nullable android.os.UserHandle);
-    method @NonNull public java.util.List<android.appwidget.AppWidgetProviderInfo> getInstalledProvidersForProfile(@Nullable android.os.UserHandle);
-    method public static android.appwidget.AppWidgetManager getInstance(android.content.Context);
-    method public boolean isRequestPinAppWidgetSupported();
-    method public void notifyAppWidgetViewDataChanged(int[], int);
-    method public void notifyAppWidgetViewDataChanged(int, int);
-    method public void partiallyUpdateAppWidget(int[], android.widget.RemoteViews);
-    method public void partiallyUpdateAppWidget(int, android.widget.RemoteViews);
-    method public boolean requestPinAppWidget(@NonNull android.content.ComponentName, @Nullable android.os.Bundle, @Nullable android.app.PendingIntent);
-    method public void updateAppWidget(int[], android.widget.RemoteViews);
-    method public void updateAppWidget(int, android.widget.RemoteViews);
-    method public void updateAppWidget(android.content.ComponentName, android.widget.RemoteViews);
-    method public void updateAppWidgetOptions(int, android.os.Bundle);
-    method public void updateAppWidgetProviderInfo(android.content.ComponentName, @Nullable String);
-    field public static final String ACTION_APPWIDGET_BIND = "android.appwidget.action.APPWIDGET_BIND";
-    field public static final String ACTION_APPWIDGET_CONFIGURE = "android.appwidget.action.APPWIDGET_CONFIGURE";
-    field public static final String ACTION_APPWIDGET_DELETED = "android.appwidget.action.APPWIDGET_DELETED";
-    field public static final String ACTION_APPWIDGET_DISABLED = "android.appwidget.action.APPWIDGET_DISABLED";
-    field public static final String ACTION_APPWIDGET_ENABLED = "android.appwidget.action.APPWIDGET_ENABLED";
-    field public static final String ACTION_APPWIDGET_HOST_RESTORED = "android.appwidget.action.APPWIDGET_HOST_RESTORED";
-    field public static final String ACTION_APPWIDGET_OPTIONS_CHANGED = "android.appwidget.action.APPWIDGET_UPDATE_OPTIONS";
-    field public static final String ACTION_APPWIDGET_PICK = "android.appwidget.action.APPWIDGET_PICK";
-    field public static final String ACTION_APPWIDGET_RESTORED = "android.appwidget.action.APPWIDGET_RESTORED";
-    field public static final String ACTION_APPWIDGET_UPDATE = "android.appwidget.action.APPWIDGET_UPDATE";
-    field public static final String EXTRA_APPWIDGET_ID = "appWidgetId";
-    field public static final String EXTRA_APPWIDGET_IDS = "appWidgetIds";
-    field public static final String EXTRA_APPWIDGET_OLD_IDS = "appWidgetOldIds";
-    field public static final String EXTRA_APPWIDGET_OPTIONS = "appWidgetOptions";
-    field public static final String EXTRA_APPWIDGET_PREVIEW = "appWidgetPreview";
-    field public static final String EXTRA_APPWIDGET_PROVIDER = "appWidgetProvider";
-    field public static final String EXTRA_APPWIDGET_PROVIDER_PROFILE = "appWidgetProviderProfile";
-    field public static final String EXTRA_CUSTOM_EXTRAS = "customExtras";
-    field public static final String EXTRA_CUSTOM_INFO = "customInfo";
-    field public static final String EXTRA_HOST_ID = "hostId";
-    field public static final int INVALID_APPWIDGET_ID = 0; // 0x0
-    field public static final String META_DATA_APPWIDGET_PROVIDER = "android.appwidget.provider";
-    field public static final String OPTION_APPWIDGET_HOST_CATEGORY = "appWidgetCategory";
-    field public static final String OPTION_APPWIDGET_MAX_HEIGHT = "appWidgetMaxHeight";
-    field public static final String OPTION_APPWIDGET_MAX_WIDTH = "appWidgetMaxWidth";
-    field public static final String OPTION_APPWIDGET_MIN_HEIGHT = "appWidgetMinHeight";
-    field public static final String OPTION_APPWIDGET_MIN_WIDTH = "appWidgetMinWidth";
-    field public static final String OPTION_APPWIDGET_RESTORE_COMPLETED = "appWidgetRestoreCompleted";
-  }
-
-  public class AppWidgetProvider extends android.content.BroadcastReceiver {
-    ctor public AppWidgetProvider();
-    method public void onAppWidgetOptionsChanged(android.content.Context, android.appwidget.AppWidgetManager, int, android.os.Bundle);
-    method public void onDeleted(android.content.Context, int[]);
-    method public void onDisabled(android.content.Context);
-    method public void onEnabled(android.content.Context);
-    method public void onReceive(android.content.Context, android.content.Intent);
-    method public void onRestored(android.content.Context, int[], int[]);
-    method public void onUpdate(android.content.Context, android.appwidget.AppWidgetManager, int[]);
-  }
-
-  public class AppWidgetProviderInfo implements android.os.Parcelable {
-    ctor public AppWidgetProviderInfo();
-    ctor public AppWidgetProviderInfo(android.os.Parcel);
-    method public android.appwidget.AppWidgetProviderInfo clone();
-    method public int describeContents();
-    method public final android.os.UserHandle getProfile();
-    method public final android.graphics.drawable.Drawable loadIcon(@NonNull android.content.Context, int);
-    method public final String loadLabel(android.content.pm.PackageManager);
-    method public final android.graphics.drawable.Drawable loadPreviewImage(@NonNull android.content.Context, int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.appwidget.AppWidgetProviderInfo> CREATOR;
-    field public static final int RESIZE_BOTH = 3; // 0x3
-    field public static final int RESIZE_HORIZONTAL = 1; // 0x1
-    field public static final int RESIZE_NONE = 0; // 0x0
-    field public static final int RESIZE_VERTICAL = 2; // 0x2
-    field public static final int WIDGET_CATEGORY_HOME_SCREEN = 1; // 0x1
-    field public static final int WIDGET_CATEGORY_KEYGUARD = 2; // 0x2
-    field public static final int WIDGET_CATEGORY_SEARCHBOX = 4; // 0x4
-    field public static final int WIDGET_FEATURE_HIDE_FROM_PICKER = 2; // 0x2
-    field public static final int WIDGET_FEATURE_RECONFIGURABLE = 1; // 0x1
-    field public int autoAdvanceViewId;
-    field public android.content.ComponentName configure;
-    field public int icon;
-    field public int initialKeyguardLayout;
-    field public int initialLayout;
-    field @Deprecated public String label;
-    field public int minHeight;
-    field public int minResizeHeight;
-    field public int minResizeWidth;
-    field public int minWidth;
-    field public int previewImage;
-    field public android.content.ComponentName provider;
-    field public int resizeMode;
-    field public int updatePeriodMillis;
-    field public int widgetCategory;
-    field public int widgetFeatures;
-  }
-
-}
-
-package android.bluetooth {
-
-  public final class BluetoothA2dp implements android.bluetooth.BluetoothProfile {
-    method public void finalize();
-    method public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
-    method public int getConnectionState(android.bluetooth.BluetoothDevice);
-    method public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
-    method public boolean isA2dpPlaying(android.bluetooth.BluetoothDevice);
-    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.a2dp.profile.action.CONNECTION_STATE_CHANGED";
-    field public static final String ACTION_PLAYING_STATE_CHANGED = "android.bluetooth.a2dp.profile.action.PLAYING_STATE_CHANGED";
-    field public static final int STATE_NOT_PLAYING = 11; // 0xb
-    field public static final int STATE_PLAYING = 10; // 0xa
-  }
-
-  public final class BluetoothAdapter {
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean cancelDiscovery();
-    method public static boolean checkBluetoothAddress(String);
-    method public void closeProfileProxy(int, android.bluetooth.BluetoothProfile);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean disable();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean enable();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public String getAddress();
-    method public android.bluetooth.le.BluetoothLeAdvertiser getBluetoothLeAdvertiser();
-    method public android.bluetooth.le.BluetoothLeScanner getBluetoothLeScanner();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public java.util.Set<android.bluetooth.BluetoothDevice> getBondedDevices();
-    method public static android.bluetooth.BluetoothAdapter getDefaultAdapter();
-    method public int getLeMaximumAdvertisingDataLength();
-    method public String getName();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getProfileConnectionState(int);
-    method public boolean getProfileProxy(android.content.Context, android.bluetooth.BluetoothProfile.ServiceListener, int);
-    method public android.bluetooth.BluetoothDevice getRemoteDevice(String);
-    method public android.bluetooth.BluetoothDevice getRemoteDevice(byte[]);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getScanMode();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getState();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isDiscovering();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isEnabled();
-    method public boolean isLe2MPhySupported();
-    method public boolean isLeCodedPhySupported();
-    method public boolean isLeExtendedAdvertisingSupported();
-    method public boolean isLePeriodicAdvertisingSupported();
-    method public boolean isMultipleAdvertisementSupported();
-    method public boolean isOffloadedFilteringSupported();
-    method public boolean isOffloadedScanBatchingSupported();
-    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothServerSocket listenUsingInsecureL2capChannel() throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothServerSocket listenUsingInsecureRfcommWithServiceRecord(String, java.util.UUID) throws java.io.IOException;
-    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothServerSocket listenUsingL2capChannel() throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothServerSocket listenUsingRfcommWithServiceRecord(String, java.util.UUID) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean setName(String);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean startDiscovery();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean startLeScan(android.bluetooth.BluetoothAdapter.LeScanCallback);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean startLeScan(java.util.UUID[], android.bluetooth.BluetoothAdapter.LeScanCallback);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public void stopLeScan(android.bluetooth.BluetoothAdapter.LeScanCallback);
-    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.adapter.action.CONNECTION_STATE_CHANGED";
-    field public static final String ACTION_DISCOVERY_FINISHED = "android.bluetooth.adapter.action.DISCOVERY_FINISHED";
-    field public static final String ACTION_DISCOVERY_STARTED = "android.bluetooth.adapter.action.DISCOVERY_STARTED";
-    field public static final String ACTION_LOCAL_NAME_CHANGED = "android.bluetooth.adapter.action.LOCAL_NAME_CHANGED";
-    field public static final String ACTION_REQUEST_DISCOVERABLE = "android.bluetooth.adapter.action.REQUEST_DISCOVERABLE";
-    field public static final String ACTION_REQUEST_ENABLE = "android.bluetooth.adapter.action.REQUEST_ENABLE";
-    field public static final String ACTION_SCAN_MODE_CHANGED = "android.bluetooth.adapter.action.SCAN_MODE_CHANGED";
-    field public static final String ACTION_STATE_CHANGED = "android.bluetooth.adapter.action.STATE_CHANGED";
-    field public static final int ERROR = -2147483648; // 0x80000000
-    field public static final String EXTRA_CONNECTION_STATE = "android.bluetooth.adapter.extra.CONNECTION_STATE";
-    field public static final String EXTRA_DISCOVERABLE_DURATION = "android.bluetooth.adapter.extra.DISCOVERABLE_DURATION";
-    field public static final String EXTRA_LOCAL_NAME = "android.bluetooth.adapter.extra.LOCAL_NAME";
-    field public static final String EXTRA_PREVIOUS_CONNECTION_STATE = "android.bluetooth.adapter.extra.PREVIOUS_CONNECTION_STATE";
-    field public static final String EXTRA_PREVIOUS_SCAN_MODE = "android.bluetooth.adapter.extra.PREVIOUS_SCAN_MODE";
-    field public static final String EXTRA_PREVIOUS_STATE = "android.bluetooth.adapter.extra.PREVIOUS_STATE";
-    field public static final String EXTRA_SCAN_MODE = "android.bluetooth.adapter.extra.SCAN_MODE";
-    field public static final String EXTRA_STATE = "android.bluetooth.adapter.extra.STATE";
-    field public static final int SCAN_MODE_CONNECTABLE = 21; // 0x15
-    field public static final int SCAN_MODE_CONNECTABLE_DISCOVERABLE = 23; // 0x17
-    field public static final int SCAN_MODE_NONE = 20; // 0x14
-    field public static final int STATE_CONNECTED = 2; // 0x2
-    field public static final int STATE_CONNECTING = 1; // 0x1
-    field public static final int STATE_DISCONNECTED = 0; // 0x0
-    field public static final int STATE_DISCONNECTING = 3; // 0x3
-    field public static final int STATE_OFF = 10; // 0xa
-    field public static final int STATE_ON = 12; // 0xc
-    field public static final int STATE_TURNING_OFF = 13; // 0xd
-    field public static final int STATE_TURNING_ON = 11; // 0xb
-  }
-
-  public static interface BluetoothAdapter.LeScanCallback {
-    method public void onLeScan(android.bluetooth.BluetoothDevice, int, byte[]);
-  }
-
-  public class BluetoothAssignedNumbers {
-    field public static final int AAMP_OF_AMERICA = 190; // 0xbe
-    field public static final int ACCEL_SEMICONDUCTOR = 74; // 0x4a
-    field public static final int ACE_SENSOR = 188; // 0xbc
-    field public static final int ADIDAS = 195; // 0xc3
-    field public static final int ADVANCED_PANMOBIL_SYSTEMS = 145; // 0x91
-    field public static final int AIROHA_TECHNOLOGY = 148; // 0x94
-    field public static final int ALCATEL = 36; // 0x24
-    field public static final int ALPWISE = 154; // 0x9a
-    field public static final int AMICCOM_ELECTRONICS = 192; // 0xc0
-    field public static final int APLIX = 189; // 0xbd
-    field public static final int APPLE = 76; // 0x4c
-    field public static final int APT_LICENSING = 79; // 0x4f
-    field public static final int ARCHOS = 207; // 0xcf
-    field public static final int ARP_DEVICES = 168; // 0xa8
-    field public static final int ATHEROS_COMMUNICATIONS = 69; // 0x45
-    field public static final int ATMEL = 19; // 0x13
-    field public static final int AUSTCO_COMMUNICATION_SYSTEMS = 213; // 0xd5
-    field public static final int AUTONET_MOBILE = 127; // 0x7f
-    field public static final int AVAGO = 78; // 0x4e
-    field public static final int AVM_BERLIN = 31; // 0x1f
-    field public static final int A_AND_D_ENGINEERING = 105; // 0x69
-    field public static final int A_AND_R_CAMBRIDGE = 124; // 0x7c
-    field public static final int BANDSPEED = 32; // 0x20
-    field public static final int BAND_XI_INTERNATIONAL = 100; // 0x64
-    field public static final int BDE_TECHNOLOGY = 180; // 0xb4
-    field public static final int BEATS_ELECTRONICS = 204; // 0xcc
-    field public static final int BEAUTIFUL_ENTERPRISE = 108; // 0x6c
-    field public static final int BEKEY = 178; // 0xb2
-    field public static final int BELKIN_INTERNATIONAL = 92; // 0x5c
-    field public static final int BINAURIC = 203; // 0xcb
-    field public static final int BIOSENTRONICS = 219; // 0xdb
-    field public static final int BLUEGIGA = 71; // 0x47
-    field public static final int BLUERADIOS = 133; // 0x85
-    field public static final int BLUETOOTH_SIG = 63; // 0x3f
-    field public static final int BLUETREK_TECHNOLOGIES = 151; // 0x97
-    field public static final int BOSE = 158; // 0x9e
-    field public static final int BRIARTEK = 109; // 0x6d
-    field public static final int BROADCOM = 15; // 0xf
-    field public static final int CAEN_RFID = 170; // 0xaa
-    field public static final int CAMBRIDGE_SILICON_RADIO = 10; // 0xa
-    field public static final int CATC = 52; // 0x34
-    field public static final int CINETIX = 175; // 0xaf
-    field public static final int CLARINOX_TECHNOLOGIES = 179; // 0xb3
-    field public static final int COLORFY = 156; // 0x9c
-    field public static final int COMMIL = 51; // 0x33
-    field public static final int CONEXANT_SYSTEMS = 28; // 0x1c
-    field public static final int CONNECTBLUE = 113; // 0x71
-    field public static final int CONTINENTAL_AUTOMOTIVE = 75; // 0x4b
-    field public static final int CONWISE_TECHNOLOGY = 66; // 0x42
-    field public static final int CREATIVE_TECHNOLOGY = 118; // 0x76
-    field public static final int C_TECHNOLOGIES = 38; // 0x26
-    field public static final int DANLERS = 225; // 0xe1
-    field public static final int DELORME_PUBLISHING_COMPANY = 128; // 0x80
-    field public static final int DEXCOM = 208; // 0xd0
-    field public static final int DIALOG_SEMICONDUCTOR = 210; // 0xd2
-    field public static final int DIGIANSWER = 12; // 0xc
-    field public static final int ECLIPSE = 53; // 0x35
-    field public static final int ECOTEST = 136; // 0x88
-    field public static final int ELGATO_SYSTEMS = 206; // 0xce
-    field public static final int EM_MICROELECTRONIC_MARIN = 90; // 0x5a
-    field public static final int EQUINOX_AG = 134; // 0x86
-    field public static final int ERICSSON_TECHNOLOGY = 0; // 0x0
-    field public static final int EVLUMA = 201; // 0xc9
-    field public static final int FREE2MOVE = 83; // 0x53
-    field public static final int FUNAI_ELECTRIC = 144; // 0x90
-    field public static final int GARMIN_INTERNATIONAL = 135; // 0x87
-    field public static final int GCT_SEMICONDUCTOR = 45; // 0x2d
-    field public static final int GELO = 200; // 0xc8
-    field public static final int GENEQ = 194; // 0xc2
-    field public static final int GENERAL_MOTORS = 104; // 0x68
-    field public static final int GENNUM = 59; // 0x3b
-    field public static final int GEOFORCE = 157; // 0x9d
-    field public static final int GIBSON_GUITARS = 98; // 0x62
-    field public static final int GN_NETCOM = 103; // 0x67
-    field public static final int GN_RESOUND = 137; // 0x89
-    field public static final int GOOGLE = 224; // 0xe0
-    field public static final int GREEN_THROTTLE_GAMES = 172; // 0xac
-    field public static final int GROUP_SENSE = 115; // 0x73
-    field public static final int HANLYNN_TECHNOLOGIES = 123; // 0x7b
-    field public static final int HARMAN_INTERNATIONAL = 87; // 0x57
-    field public static final int HEWLETT_PACKARD = 101; // 0x65
-    field public static final int HITACHI = 41; // 0x29
-    field public static final int HOSIDEN = 221; // 0xdd
-    field public static final int IBM = 3; // 0x3
-    field public static final int INFINEON_TECHNOLOGIES = 9; // 0x9
-    field public static final int INGENIEUR_SYSTEMGRUPPE_ZAHN = 171; // 0xab
-    field public static final int INTEGRATED_SILICON_SOLUTION = 65; // 0x41
-    field public static final int INTEGRATED_SYSTEM_SOLUTION = 57; // 0x39
-    field public static final int INTEL = 2; // 0x2
-    field public static final int INVENTEL = 30; // 0x1e
-    field public static final int IPEXTREME = 61; // 0x3d
-    field public static final int I_TECH_DYNAMIC_GLOBAL_DISTRIBUTION = 153; // 0x99
-    field public static final int JAWBONE = 138; // 0x8a
-    field public static final int JIANGSU_TOPPOWER_AUTOMOTIVE_ELECTRONICS = 155; // 0x9b
-    field public static final int JOHNSON_CONTROLS = 185; // 0xb9
-    field public static final int J_AND_M = 82; // 0x52
-    field public static final int KAWANTECH = 212; // 0xd4
-    field public static final int KC_TECHNOLOGY = 22; // 0x16
-    field public static final int KENSINGTON_COMPUTER_PRODUCTS_GROUP = 160; // 0xa0
-    field public static final int LAIRD_TECHNOLOGIES = 119; // 0x77
-    field public static final int LESSWIRE = 121; // 0x79
-    field public static final int LG_ELECTRONICS = 196; // 0xc4
-    field public static final int LINAK = 164; // 0xa4
-    field public static final int LUCENT = 7; // 0x7
-    field public static final int LUDUS_HELSINKI = 132; // 0x84
-    field public static final int MACRONIX = 44; // 0x2c
-    field public static final int MAGNETI_MARELLI = 169; // 0xa9
-    field public static final int MANSELLA = 33; // 0x21
-    field public static final int MARVELL = 72; // 0x48
-    field public static final int MATSUSHITA_ELECTRIC = 58; // 0x3a
-    field public static final int MC10 = 202; // 0xca
-    field public static final int MEDIATEK = 70; // 0x46
-    field public static final int MESO_INTERNATIONAL = 182; // 0xb6
-    field public static final int META_WATCH = 163; // 0xa3
-    field public static final int MEWTEL_TECHNOLOGY = 47; // 0x2f
-    field public static final int MICOMMAND = 99; // 0x63
-    field public static final int MICROCHIP_TECHNOLOGY = 205; // 0xcd
-    field public static final int MICROSOFT = 6; // 0x6
-    field public static final int MINDTREE = 106; // 0x6a
-    field public static final int MISFIT_WEARABLES = 223; // 0xdf
-    field public static final int MITEL_SEMICONDUCTOR = 16; // 0x10
-    field public static final int MITSUBISHI_ELECTRIC = 20; // 0x14
-    field public static final int MOBILIAN_CORPORATION = 55; // 0x37
-    field public static final int MONSTER = 112; // 0x70
-    field public static final int MOTOROLA = 8; // 0x8
-    field public static final int MSTAR_SEMICONDUCTOR = 122; // 0x7a
-    field public static final int MUZIK = 222; // 0xde
-    field public static final int NEC = 34; // 0x22
-    field public static final int NEC_LIGHTING = 149; // 0x95
-    field public static final int NEWLOGIC = 23; // 0x17
-    field public static final int NIKE = 120; // 0x78
-    field public static final int NINE_SOLUTIONS = 102; // 0x66
-    field public static final int NOKIA_MOBILE_PHONES = 1; // 0x1
-    field public static final int NORDIC_SEMICONDUCTOR = 89; // 0x59
-    field public static final int NORWOOD_SYSTEMS = 46; // 0x2e
-    field public static final int ODM_TECHNOLOGY = 150; // 0x96
-    field public static final int OMEGAWAVE = 174; // 0xae
-    field public static final int ONSET_COMPUTER = 197; // 0xc5
-    field public static final int OPEN_INTERFACE = 39; // 0x27
-    field public static final int OTL_DYNAMICS = 165; // 0xa5
-    field public static final int PANDA_OCEAN = 166; // 0xa6
-    field public static final int PARROT = 67; // 0x43
-    field public static final int PARTHUS_TECHNOLOGIES = 14; // 0xe
-    field public static final int PASSIF_SEMICONDUCTOR = 176; // 0xb0
-    field public static final int PETER_SYSTEMTECHNIK = 173; // 0xad
-    field public static final int PHILIPS_SEMICONDUCTORS = 37; // 0x25
-    field public static final int PLANTRONICS = 85; // 0x55
-    field public static final int POLAR_ELECTRO = 107; // 0x6b
-    field public static final int POLAR_ELECTRO_EUROPE = 209; // 0xd1
-    field public static final int PROCTER_AND_GAMBLE = 220; // 0xdc
-    field public static final int QUALCOMM = 29; // 0x1d
-    field public static final int QUALCOMM_CONNECTED_EXPERIENCES = 216; // 0xd8
-    field public static final int QUALCOMM_INNOVATION_CENTER = 184; // 0xb8
-    field public static final int QUALCOMM_LABS = 140; // 0x8c
-    field public static final int QUALCOMM_TECHNOLOGIES = 215; // 0xd7
-    field public static final int QUINTIC = 142; // 0x8e
-    field public static final int QUUPPA = 199; // 0xc7
-    field public static final int RALINK_TECHNOLOGY = 91; // 0x5b
-    field public static final int RDA_MICROELECTRONICS = 97; // 0x61
-    field public static final int REALTEK_SEMICONDUCTOR = 93; // 0x5d
-    field public static final int RED_M = 50; // 0x32
-    field public static final int RENESAS_TECHNOLOGY = 54; // 0x36
-    field public static final int RESEARCH_IN_MOTION = 60; // 0x3c
-    field public static final int RF_MICRO_DEVICES = 40; // 0x28
-    field public static final int RIVIERAWAVES = 96; // 0x60
-    field public static final int ROHDE_AND_SCHWARZ = 25; // 0x19
-    field public static final int RTX_TELECOM = 21; // 0x15
-    field public static final int SAMSUNG_ELECTRONICS = 117; // 0x75
-    field public static final int SARIS_CYCLING_GROUP = 177; // 0xb1
-    field public static final int SEERS_TECHNOLOGY = 125; // 0x7d
-    field public static final int SEIKO_EPSON = 64; // 0x40
-    field public static final int SELFLY = 198; // 0xc6
-    field public static final int SEMILINK = 226; // 0xe2
-    field public static final int SENNHEISER_COMMUNICATIONS = 130; // 0x82
-    field public static final int SHANGHAI_SUPER_SMART_ELECTRONICS = 114; // 0x72
-    field public static final int SHENZHEN_EXCELSECU_DATA_TECHNOLOGY = 193; // 0xc1
-    field public static final int SIGNIA_TECHNOLOGIES = 27; // 0x1b
-    field public static final int SILICON_WAVE = 11; // 0xb
-    field public static final int SIRF_TECHNOLOGY = 80; // 0x50
-    field public static final int SOCKET_MOBILE = 68; // 0x44
-    field public static final int SONY_ERICSSON = 86; // 0x56
-    field public static final int SOUND_ID = 111; // 0x6f
-    field public static final int SPORTS_TRACKING_TECHNOLOGIES = 126; // 0x7e
-    field public static final int SR_MEDIZINELEKTRONIK = 161; // 0xa1
-    field public static final int STACCATO_COMMUNICATIONS = 77; // 0x4d
-    field public static final int STALMART_TECHNOLOGY = 191; // 0xbf
-    field public static final int STARKEY_LABORATORIES = 186; // 0xba
-    field public static final int STOLLMAN_E_PLUS_V = 143; // 0x8f
-    field public static final int STONESTREET_ONE = 94; // 0x5e
-    field public static final int ST_MICROELECTRONICS = 48; // 0x30
-    field public static final int SUMMIT_DATA_COMMUNICATIONS = 110; // 0x6e
-    field public static final int SUUNTO = 159; // 0x9f
-    field public static final int SWIRL_NETWORKS = 181; // 0xb5
-    field public static final int SYMBOL_TECHNOLOGIES = 42; // 0x2a
-    field public static final int SYNOPSYS = 49; // 0x31
-    field public static final int SYSTEMS_AND_CHIPS = 62; // 0x3e
-    field public static final int S_POWER_ELECTRONICS = 187; // 0xbb
-    field public static final int TAIXINGBANG_TECHNOLOGY = 211; // 0xd3
-    field public static final int TENOVIS = 43; // 0x2b
-    field public static final int TERAX = 56; // 0x38
-    field public static final int TEXAS_INSTRUMENTS = 13; // 0xd
-    field public static final int THINKOPTICS = 146; // 0x92
-    field public static final int THREECOM = 5; // 0x5
-    field public static final int THREE_DIJOY = 84; // 0x54
-    field public static final int THREE_DSP = 73; // 0x49
-    field public static final int TIMEKEEPING_SYSTEMS = 131; // 0x83
-    field public static final int TIMEX_GROUP_USA = 214; // 0xd6
-    field public static final int TOPCORN_POSITIONING_SYSTEMS = 139; // 0x8b
-    field public static final int TOSHIBA = 4; // 0x4
-    field public static final int TRANSILICA = 24; // 0x18
-    field public static final int TRELAB = 183; // 0xb7
-    field public static final int TTPCOM = 26; // 0x1a
-    field public static final int TXTR = 218; // 0xda
-    field public static final int TZERO_TECHNOLOGIES = 81; // 0x51
-    field public static final int UNIVERSAL_ELECTRONICS = 147; // 0x93
-    field public static final int VERTU = 162; // 0xa2
-    field public static final int VISTEON = 167; // 0xa7
-    field public static final int VIZIO = 88; // 0x58
-    field public static final int VOYETRA_TURTLE_BEACH = 217; // 0xd9
-    field public static final int WAVEPLUS_TECHNOLOGY = 35; // 0x23
-    field public static final int WICENTRIC = 95; // 0x5f
-    field public static final int WIDCOMM = 17; // 0x11
-    field public static final int WUXI_VIMICRO = 129; // 0x81
-    field public static final int ZEEVO = 18; // 0x12
-    field public static final int ZER01_TV = 152; // 0x98
-    field public static final int ZOMM = 116; // 0x74
-    field public static final int ZSCAN_SOFTWARE = 141; // 0x8d
-  }
-
-  public final class BluetoothClass implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getDeviceClass();
-    method public int getMajorDeviceClass();
-    method public boolean hasService(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothClass> CREATOR;
-  }
-
-  public static class BluetoothClass.Device {
-    ctor public BluetoothClass.Device();
-    field public static final int AUDIO_VIDEO_CAMCORDER = 1076; // 0x434
-    field public static final int AUDIO_VIDEO_CAR_AUDIO = 1056; // 0x420
-    field public static final int AUDIO_VIDEO_HANDSFREE = 1032; // 0x408
-    field public static final int AUDIO_VIDEO_HEADPHONES = 1048; // 0x418
-    field public static final int AUDIO_VIDEO_HIFI_AUDIO = 1064; // 0x428
-    field public static final int AUDIO_VIDEO_LOUDSPEAKER = 1044; // 0x414
-    field public static final int AUDIO_VIDEO_MICROPHONE = 1040; // 0x410
-    field public static final int AUDIO_VIDEO_PORTABLE_AUDIO = 1052; // 0x41c
-    field public static final int AUDIO_VIDEO_SET_TOP_BOX = 1060; // 0x424
-    field public static final int AUDIO_VIDEO_UNCATEGORIZED = 1024; // 0x400
-    field public static final int AUDIO_VIDEO_VCR = 1068; // 0x42c
-    field public static final int AUDIO_VIDEO_VIDEO_CAMERA = 1072; // 0x430
-    field public static final int AUDIO_VIDEO_VIDEO_CONFERENCING = 1088; // 0x440
-    field public static final int AUDIO_VIDEO_VIDEO_DISPLAY_AND_LOUDSPEAKER = 1084; // 0x43c
-    field public static final int AUDIO_VIDEO_VIDEO_GAMING_TOY = 1096; // 0x448
-    field public static final int AUDIO_VIDEO_VIDEO_MONITOR = 1080; // 0x438
-    field public static final int AUDIO_VIDEO_WEARABLE_HEADSET = 1028; // 0x404
-    field public static final int COMPUTER_DESKTOP = 260; // 0x104
-    field public static final int COMPUTER_HANDHELD_PC_PDA = 272; // 0x110
-    field public static final int COMPUTER_LAPTOP = 268; // 0x10c
-    field public static final int COMPUTER_PALM_SIZE_PC_PDA = 276; // 0x114
-    field public static final int COMPUTER_SERVER = 264; // 0x108
-    field public static final int COMPUTER_UNCATEGORIZED = 256; // 0x100
-    field public static final int COMPUTER_WEARABLE = 280; // 0x118
-    field public static final int HEALTH_BLOOD_PRESSURE = 2308; // 0x904
-    field public static final int HEALTH_DATA_DISPLAY = 2332; // 0x91c
-    field public static final int HEALTH_GLUCOSE = 2320; // 0x910
-    field public static final int HEALTH_PULSE_OXIMETER = 2324; // 0x914
-    field public static final int HEALTH_PULSE_RATE = 2328; // 0x918
-    field public static final int HEALTH_THERMOMETER = 2312; // 0x908
-    field public static final int HEALTH_UNCATEGORIZED = 2304; // 0x900
-    field public static final int HEALTH_WEIGHING = 2316; // 0x90c
-    field public static final int PHONE_CELLULAR = 516; // 0x204
-    field public static final int PHONE_CORDLESS = 520; // 0x208
-    field public static final int PHONE_ISDN = 532; // 0x214
-    field public static final int PHONE_MODEM_OR_GATEWAY = 528; // 0x210
-    field public static final int PHONE_SMART = 524; // 0x20c
-    field public static final int PHONE_UNCATEGORIZED = 512; // 0x200
-    field public static final int TOY_CONTROLLER = 2064; // 0x810
-    field public static final int TOY_DOLL_ACTION_FIGURE = 2060; // 0x80c
-    field public static final int TOY_GAME = 2068; // 0x814
-    field public static final int TOY_ROBOT = 2052; // 0x804
-    field public static final int TOY_UNCATEGORIZED = 2048; // 0x800
-    field public static final int TOY_VEHICLE = 2056; // 0x808
-    field public static final int WEARABLE_GLASSES = 1812; // 0x714
-    field public static final int WEARABLE_HELMET = 1808; // 0x710
-    field public static final int WEARABLE_JACKET = 1804; // 0x70c
-    field public static final int WEARABLE_PAGER = 1800; // 0x708
-    field public static final int WEARABLE_UNCATEGORIZED = 1792; // 0x700
-    field public static final int WEARABLE_WRIST_WATCH = 1796; // 0x704
-  }
-
-  public static class BluetoothClass.Device.Major {
-    ctor public BluetoothClass.Device.Major();
-    field public static final int AUDIO_VIDEO = 1024; // 0x400
-    field public static final int COMPUTER = 256; // 0x100
-    field public static final int HEALTH = 2304; // 0x900
-    field public static final int IMAGING = 1536; // 0x600
-    field public static final int MISC = 0; // 0x0
-    field public static final int NETWORKING = 768; // 0x300
-    field public static final int PERIPHERAL = 1280; // 0x500
-    field public static final int PHONE = 512; // 0x200
-    field public static final int TOY = 2048; // 0x800
-    field public static final int UNCATEGORIZED = 7936; // 0x1f00
-    field public static final int WEARABLE = 1792; // 0x700
-  }
-
-  public static final class BluetoothClass.Service {
-    ctor public BluetoothClass.Service();
-    field public static final int AUDIO = 2097152; // 0x200000
-    field public static final int CAPTURE = 524288; // 0x80000
-    field public static final int INFORMATION = 8388608; // 0x800000
-    field public static final int LIMITED_DISCOVERABILITY = 8192; // 0x2000
-    field public static final int NETWORKING = 131072; // 0x20000
-    field public static final int OBJECT_TRANSFER = 1048576; // 0x100000
-    field public static final int POSITIONING = 65536; // 0x10000
-    field public static final int RENDER = 262144; // 0x40000
-    field public static final int TELEPHONY = 4194304; // 0x400000
-  }
-
-  public final class BluetoothDevice implements android.os.Parcelable {
-    method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback);
-    method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback, int);
-    method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback, int, int);
-    method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback, int, int, android.os.Handler);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean createBond();
-    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothSocket createInsecureL2capChannel(int) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothSocket createInsecureRfcommSocketToServiceRecord(java.util.UUID) throws java.io.IOException;
-    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothSocket createL2capChannel(int) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothSocket createRfcommSocketToServiceRecord(java.util.UUID) throws java.io.IOException;
-    method public int describeContents();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean fetchUuidsWithSdp();
-    method public String getAddress();
-    method @Nullable @RequiresPermission(android.Manifest.permission.BLUETOOTH) public String getAlias();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.bluetooth.BluetoothClass getBluetoothClass();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getBondState();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public String getName();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getType();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public android.os.ParcelUuid[] getUuids();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setPairingConfirmation(boolean);
-    method public boolean setPin(byte[]);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final String ACTION_ACL_CONNECTED = "android.bluetooth.device.action.ACL_CONNECTED";
-    field public static final String ACTION_ACL_DISCONNECTED = "android.bluetooth.device.action.ACL_DISCONNECTED";
-    field public static final String ACTION_ACL_DISCONNECT_REQUESTED = "android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED";
-    field public static final String ACTION_ALIAS_CHANGED = "android.bluetooth.device.action.ALIAS_CHANGED";
-    field public static final String ACTION_BOND_STATE_CHANGED = "android.bluetooth.device.action.BOND_STATE_CHANGED";
-    field public static final String ACTION_CLASS_CHANGED = "android.bluetooth.device.action.CLASS_CHANGED";
-    field public static final String ACTION_FOUND = "android.bluetooth.device.action.FOUND";
-    field public static final String ACTION_NAME_CHANGED = "android.bluetooth.device.action.NAME_CHANGED";
-    field public static final String ACTION_PAIRING_REQUEST = "android.bluetooth.device.action.PAIRING_REQUEST";
-    field public static final String ACTION_UUID = "android.bluetooth.device.action.UUID";
-    field public static final int BOND_BONDED = 12; // 0xc
-    field public static final int BOND_BONDING = 11; // 0xb
-    field public static final int BOND_NONE = 10; // 0xa
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothDevice> CREATOR;
-    field public static final int DEVICE_TYPE_CLASSIC = 1; // 0x1
-    field public static final int DEVICE_TYPE_DUAL = 3; // 0x3
-    field public static final int DEVICE_TYPE_LE = 2; // 0x2
-    field public static final int DEVICE_TYPE_UNKNOWN = 0; // 0x0
-    field public static final int ERROR = -2147483648; // 0x80000000
-    field public static final String EXTRA_BOND_STATE = "android.bluetooth.device.extra.BOND_STATE";
-    field public static final String EXTRA_CLASS = "android.bluetooth.device.extra.CLASS";
-    field public static final String EXTRA_DEVICE = "android.bluetooth.device.extra.DEVICE";
-    field public static final String EXTRA_NAME = "android.bluetooth.device.extra.NAME";
-    field public static final String EXTRA_PAIRING_KEY = "android.bluetooth.device.extra.PAIRING_KEY";
-    field public static final String EXTRA_PAIRING_VARIANT = "android.bluetooth.device.extra.PAIRING_VARIANT";
-    field public static final String EXTRA_PREVIOUS_BOND_STATE = "android.bluetooth.device.extra.PREVIOUS_BOND_STATE";
-    field public static final String EXTRA_RSSI = "android.bluetooth.device.extra.RSSI";
-    field public static final String EXTRA_UUID = "android.bluetooth.device.extra.UUID";
-    field public static final int PAIRING_VARIANT_PASSKEY_CONFIRMATION = 2; // 0x2
-    field public static final int PAIRING_VARIANT_PIN = 0; // 0x0
-    field public static final int PHY_LE_1M = 1; // 0x1
-    field public static final int PHY_LE_1M_MASK = 1; // 0x1
-    field public static final int PHY_LE_2M = 2; // 0x2
-    field public static final int PHY_LE_2M_MASK = 2; // 0x2
-    field public static final int PHY_LE_CODED = 3; // 0x3
-    field public static final int PHY_LE_CODED_MASK = 4; // 0x4
-    field public static final int PHY_OPTION_NO_PREFERRED = 0; // 0x0
-    field public static final int PHY_OPTION_S2 = 1; // 0x1
-    field public static final int PHY_OPTION_S8 = 2; // 0x2
-    field public static final int TRANSPORT_AUTO = 0; // 0x0
-    field public static final int TRANSPORT_BREDR = 1; // 0x1
-    field public static final int TRANSPORT_LE = 2; // 0x2
-  }
-
-  public final class BluetoothGatt implements android.bluetooth.BluetoothProfile {
-    method public void abortReliableWrite();
-    method @Deprecated public void abortReliableWrite(android.bluetooth.BluetoothDevice);
-    method public boolean beginReliableWrite();
-    method public void close();
-    method public boolean connect();
-    method public void disconnect();
-    method public boolean discoverServices();
-    method public boolean executeReliableWrite();
-    method public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
-    method public int getConnectionState(android.bluetooth.BluetoothDevice);
-    method public android.bluetooth.BluetoothDevice getDevice();
-    method public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
-    method public android.bluetooth.BluetoothGattService getService(java.util.UUID);
-    method public java.util.List<android.bluetooth.BluetoothGattService> getServices();
-    method public boolean readCharacteristic(android.bluetooth.BluetoothGattCharacteristic);
-    method public boolean readDescriptor(android.bluetooth.BluetoothGattDescriptor);
-    method public void readPhy();
-    method public boolean readRemoteRssi();
-    method public boolean requestConnectionPriority(int);
-    method public boolean requestMtu(int);
-    method public boolean setCharacteristicNotification(android.bluetooth.BluetoothGattCharacteristic, boolean);
-    method public void setPreferredPhy(int, int, int);
-    method public boolean writeCharacteristic(android.bluetooth.BluetoothGattCharacteristic);
-    method public boolean writeDescriptor(android.bluetooth.BluetoothGattDescriptor);
-    field public static final int CONNECTION_PRIORITY_BALANCED = 0; // 0x0
-    field public static final int CONNECTION_PRIORITY_HIGH = 1; // 0x1
-    field public static final int CONNECTION_PRIORITY_LOW_POWER = 2; // 0x2
-    field public static final int GATT_CONNECTION_CONGESTED = 143; // 0x8f
-    field public static final int GATT_FAILURE = 257; // 0x101
-    field public static final int GATT_INSUFFICIENT_AUTHENTICATION = 5; // 0x5
-    field public static final int GATT_INSUFFICIENT_ENCRYPTION = 15; // 0xf
-    field public static final int GATT_INVALID_ATTRIBUTE_LENGTH = 13; // 0xd
-    field public static final int GATT_INVALID_OFFSET = 7; // 0x7
-    field public static final int GATT_READ_NOT_PERMITTED = 2; // 0x2
-    field public static final int GATT_REQUEST_NOT_SUPPORTED = 6; // 0x6
-    field public static final int GATT_SUCCESS = 0; // 0x0
-    field public static final int GATT_WRITE_NOT_PERMITTED = 3; // 0x3
-  }
-
-  public abstract class BluetoothGattCallback {
-    ctor public BluetoothGattCallback();
-    method public void onCharacteristicChanged(android.bluetooth.BluetoothGatt, android.bluetooth.BluetoothGattCharacteristic);
-    method public void onCharacteristicRead(android.bluetooth.BluetoothGatt, android.bluetooth.BluetoothGattCharacteristic, int);
-    method public void onCharacteristicWrite(android.bluetooth.BluetoothGatt, android.bluetooth.BluetoothGattCharacteristic, int);
-    method public void onConnectionStateChange(android.bluetooth.BluetoothGatt, int, int);
-    method public void onDescriptorRead(android.bluetooth.BluetoothGatt, android.bluetooth.BluetoothGattDescriptor, int);
-    method public void onDescriptorWrite(android.bluetooth.BluetoothGatt, android.bluetooth.BluetoothGattDescriptor, int);
-    method public void onMtuChanged(android.bluetooth.BluetoothGatt, int, int);
-    method public void onPhyRead(android.bluetooth.BluetoothGatt, int, int, int);
-    method public void onPhyUpdate(android.bluetooth.BluetoothGatt, int, int, int);
-    method public void onReadRemoteRssi(android.bluetooth.BluetoothGatt, int, int);
-    method public void onReliableWriteCompleted(android.bluetooth.BluetoothGatt, int);
-    method public void onServicesDiscovered(android.bluetooth.BluetoothGatt, int);
-  }
-
-  public class BluetoothGattCharacteristic implements android.os.Parcelable {
-    ctor public BluetoothGattCharacteristic(java.util.UUID, int, int);
-    method public boolean addDescriptor(android.bluetooth.BluetoothGattDescriptor);
-    method public int describeContents();
-    method public android.bluetooth.BluetoothGattDescriptor getDescriptor(java.util.UUID);
-    method public java.util.List<android.bluetooth.BluetoothGattDescriptor> getDescriptors();
-    method public Float getFloatValue(int, int);
-    method public int getInstanceId();
-    method public Integer getIntValue(int, int);
-    method public int getPermissions();
-    method public int getProperties();
-    method public android.bluetooth.BluetoothGattService getService();
-    method public String getStringValue(int);
-    method public java.util.UUID getUuid();
-    method public byte[] getValue();
-    method public int getWriteType();
-    method public boolean setValue(byte[]);
-    method public boolean setValue(int, int, int);
-    method public boolean setValue(int, int, int, int);
-    method public boolean setValue(String);
-    method public void setWriteType(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothGattCharacteristic> CREATOR;
-    field public static final int FORMAT_FLOAT = 52; // 0x34
-    field public static final int FORMAT_SFLOAT = 50; // 0x32
-    field public static final int FORMAT_SINT16 = 34; // 0x22
-    field public static final int FORMAT_SINT32 = 36; // 0x24
-    field public static final int FORMAT_SINT8 = 33; // 0x21
-    field public static final int FORMAT_UINT16 = 18; // 0x12
-    field public static final int FORMAT_UINT32 = 20; // 0x14
-    field public static final int FORMAT_UINT8 = 17; // 0x11
-    field public static final int PERMISSION_READ = 1; // 0x1
-    field public static final int PERMISSION_READ_ENCRYPTED = 2; // 0x2
-    field public static final int PERMISSION_READ_ENCRYPTED_MITM = 4; // 0x4
-    field public static final int PERMISSION_WRITE = 16; // 0x10
-    field public static final int PERMISSION_WRITE_ENCRYPTED = 32; // 0x20
-    field public static final int PERMISSION_WRITE_ENCRYPTED_MITM = 64; // 0x40
-    field public static final int PERMISSION_WRITE_SIGNED = 128; // 0x80
-    field public static final int PERMISSION_WRITE_SIGNED_MITM = 256; // 0x100
-    field public static final int PROPERTY_BROADCAST = 1; // 0x1
-    field public static final int PROPERTY_EXTENDED_PROPS = 128; // 0x80
-    field public static final int PROPERTY_INDICATE = 32; // 0x20
-    field public static final int PROPERTY_NOTIFY = 16; // 0x10
-    field public static final int PROPERTY_READ = 2; // 0x2
-    field public static final int PROPERTY_SIGNED_WRITE = 64; // 0x40
-    field public static final int PROPERTY_WRITE = 8; // 0x8
-    field public static final int PROPERTY_WRITE_NO_RESPONSE = 4; // 0x4
-    field public static final int WRITE_TYPE_DEFAULT = 2; // 0x2
-    field public static final int WRITE_TYPE_NO_RESPONSE = 1; // 0x1
-    field public static final int WRITE_TYPE_SIGNED = 4; // 0x4
-    field protected java.util.List<android.bluetooth.BluetoothGattDescriptor> mDescriptors;
-  }
-
-  public class BluetoothGattDescriptor implements android.os.Parcelable {
-    ctor public BluetoothGattDescriptor(java.util.UUID, int);
-    method public int describeContents();
-    method public android.bluetooth.BluetoothGattCharacteristic getCharacteristic();
-    method public int getPermissions();
-    method public java.util.UUID getUuid();
-    method public byte[] getValue();
-    method public boolean setValue(byte[]);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothGattDescriptor> CREATOR;
-    field public static final byte[] DISABLE_NOTIFICATION_VALUE;
-    field public static final byte[] ENABLE_INDICATION_VALUE;
-    field public static final byte[] ENABLE_NOTIFICATION_VALUE;
-    field public static final int PERMISSION_READ = 1; // 0x1
-    field public static final int PERMISSION_READ_ENCRYPTED = 2; // 0x2
-    field public static final int PERMISSION_READ_ENCRYPTED_MITM = 4; // 0x4
-    field public static final int PERMISSION_WRITE = 16; // 0x10
-    field public static final int PERMISSION_WRITE_ENCRYPTED = 32; // 0x20
-    field public static final int PERMISSION_WRITE_ENCRYPTED_MITM = 64; // 0x40
-    field public static final int PERMISSION_WRITE_SIGNED = 128; // 0x80
-    field public static final int PERMISSION_WRITE_SIGNED_MITM = 256; // 0x100
-  }
-
-  public final class BluetoothGattServer implements android.bluetooth.BluetoothProfile {
-    method public boolean addService(android.bluetooth.BluetoothGattService);
-    method public void cancelConnection(android.bluetooth.BluetoothDevice);
-    method public void clearServices();
-    method public void close();
-    method public boolean connect(android.bluetooth.BluetoothDevice, boolean);
-    method public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
-    method public int getConnectionState(android.bluetooth.BluetoothDevice);
-    method public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
-    method public android.bluetooth.BluetoothGattService getService(java.util.UUID);
-    method public java.util.List<android.bluetooth.BluetoothGattService> getServices();
-    method public boolean notifyCharacteristicChanged(android.bluetooth.BluetoothDevice, android.bluetooth.BluetoothGattCharacteristic, boolean);
-    method public void readPhy(android.bluetooth.BluetoothDevice);
-    method public boolean removeService(android.bluetooth.BluetoothGattService);
-    method public boolean sendResponse(android.bluetooth.BluetoothDevice, int, int, int, byte[]);
-    method public void setPreferredPhy(android.bluetooth.BluetoothDevice, int, int, int);
-  }
-
-  public abstract class BluetoothGattServerCallback {
-    ctor public BluetoothGattServerCallback();
-    method public void onCharacteristicReadRequest(android.bluetooth.BluetoothDevice, int, int, android.bluetooth.BluetoothGattCharacteristic);
-    method public void onCharacteristicWriteRequest(android.bluetooth.BluetoothDevice, int, android.bluetooth.BluetoothGattCharacteristic, boolean, boolean, int, byte[]);
-    method public void onConnectionStateChange(android.bluetooth.BluetoothDevice, int, int);
-    method public void onDescriptorReadRequest(android.bluetooth.BluetoothDevice, int, int, android.bluetooth.BluetoothGattDescriptor);
-    method public void onDescriptorWriteRequest(android.bluetooth.BluetoothDevice, int, android.bluetooth.BluetoothGattDescriptor, boolean, boolean, int, byte[]);
-    method public void onExecuteWrite(android.bluetooth.BluetoothDevice, int, boolean);
-    method public void onMtuChanged(android.bluetooth.BluetoothDevice, int);
-    method public void onNotificationSent(android.bluetooth.BluetoothDevice, int);
-    method public void onPhyRead(android.bluetooth.BluetoothDevice, int, int, int);
-    method public void onPhyUpdate(android.bluetooth.BluetoothDevice, int, int, int);
-    method public void onServiceAdded(int, android.bluetooth.BluetoothGattService);
-  }
-
-  public class BluetoothGattService implements android.os.Parcelable {
-    ctor public BluetoothGattService(java.util.UUID, int);
-    method public boolean addCharacteristic(android.bluetooth.BluetoothGattCharacteristic);
-    method public boolean addService(android.bluetooth.BluetoothGattService);
-    method public int describeContents();
-    method public android.bluetooth.BluetoothGattCharacteristic getCharacteristic(java.util.UUID);
-    method public java.util.List<android.bluetooth.BluetoothGattCharacteristic> getCharacteristics();
-    method public java.util.List<android.bluetooth.BluetoothGattService> getIncludedServices();
-    method public int getInstanceId();
-    method public int getType();
-    method public java.util.UUID getUuid();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothGattService> CREATOR;
-    field public static final int SERVICE_TYPE_PRIMARY = 0; // 0x0
-    field public static final int SERVICE_TYPE_SECONDARY = 1; // 0x1
-    field protected java.util.List<android.bluetooth.BluetoothGattCharacteristic> mCharacteristics;
-    field protected java.util.List<android.bluetooth.BluetoothGattService> mIncludedServices;
-  }
-
-  public final class BluetoothHeadset implements android.bluetooth.BluetoothProfile {
-    method public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
-    method public int getConnectionState(android.bluetooth.BluetoothDevice);
-    method public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
-    method public boolean isAudioConnected(android.bluetooth.BluetoothDevice);
-    method public boolean sendVendorSpecificResultCode(android.bluetooth.BluetoothDevice, String, String);
-    method public boolean startVoiceRecognition(android.bluetooth.BluetoothDevice);
-    method public boolean stopVoiceRecognition(android.bluetooth.BluetoothDevice);
-    field public static final String ACTION_AUDIO_STATE_CHANGED = "android.bluetooth.headset.profile.action.AUDIO_STATE_CHANGED";
-    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.headset.profile.action.CONNECTION_STATE_CHANGED";
-    field public static final String ACTION_VENDOR_SPECIFIC_HEADSET_EVENT = "android.bluetooth.headset.action.VENDOR_SPECIFIC_HEADSET_EVENT";
-    field public static final int AT_CMD_TYPE_ACTION = 4; // 0x4
-    field public static final int AT_CMD_TYPE_BASIC = 3; // 0x3
-    field public static final int AT_CMD_TYPE_READ = 0; // 0x0
-    field public static final int AT_CMD_TYPE_SET = 2; // 0x2
-    field public static final int AT_CMD_TYPE_TEST = 1; // 0x1
-    field public static final String EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_ARGS = "android.bluetooth.headset.extra.VENDOR_SPECIFIC_HEADSET_EVENT_ARGS";
-    field public static final String EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_CMD = "android.bluetooth.headset.extra.VENDOR_SPECIFIC_HEADSET_EVENT_CMD";
-    field public static final String EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_CMD_TYPE = "android.bluetooth.headset.extra.VENDOR_SPECIFIC_HEADSET_EVENT_CMD_TYPE";
-    field public static final int STATE_AUDIO_CONNECTED = 12; // 0xc
-    field public static final int STATE_AUDIO_CONNECTING = 11; // 0xb
-    field public static final int STATE_AUDIO_DISCONNECTED = 10; // 0xa
-    field public static final String VENDOR_RESULT_CODE_COMMAND_ANDROID = "+ANDROID";
-    field public static final String VENDOR_SPECIFIC_HEADSET_EVENT_COMPANY_ID_CATEGORY = "android.bluetooth.headset.intent.category.companyid";
-  }
-
-  @Deprecated public final class BluetoothHealth implements android.bluetooth.BluetoothProfile {
-    method @Deprecated public boolean connectChannelToSource(android.bluetooth.BluetoothDevice, android.bluetooth.BluetoothHealthAppConfiguration);
-    method @Deprecated public boolean disconnectChannel(android.bluetooth.BluetoothDevice, android.bluetooth.BluetoothHealthAppConfiguration, int);
-    method @Deprecated public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
-    method @Deprecated public int getConnectionState(android.bluetooth.BluetoothDevice);
-    method @Deprecated public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
-    method @Deprecated public android.os.ParcelFileDescriptor getMainChannelFd(android.bluetooth.BluetoothDevice, android.bluetooth.BluetoothHealthAppConfiguration);
-    method @Deprecated public boolean registerSinkAppConfiguration(String, int, android.bluetooth.BluetoothHealthCallback);
-    method @Deprecated public boolean unregisterAppConfiguration(android.bluetooth.BluetoothHealthAppConfiguration);
-    field @Deprecated public static final int APP_CONFIG_REGISTRATION_FAILURE = 1; // 0x1
-    field @Deprecated public static final int APP_CONFIG_REGISTRATION_SUCCESS = 0; // 0x0
-    field @Deprecated public static final int APP_CONFIG_UNREGISTRATION_FAILURE = 3; // 0x3
-    field @Deprecated public static final int APP_CONFIG_UNREGISTRATION_SUCCESS = 2; // 0x2
-    field @Deprecated public static final int CHANNEL_TYPE_RELIABLE = 10; // 0xa
-    field @Deprecated public static final int CHANNEL_TYPE_STREAMING = 11; // 0xb
-    field @Deprecated public static final int SINK_ROLE = 2; // 0x2
-    field @Deprecated public static final int SOURCE_ROLE = 1; // 0x1
-    field @Deprecated public static final int STATE_CHANNEL_CONNECTED = 2; // 0x2
-    field @Deprecated public static final int STATE_CHANNEL_CONNECTING = 1; // 0x1
-    field @Deprecated public static final int STATE_CHANNEL_DISCONNECTED = 0; // 0x0
-    field @Deprecated public static final int STATE_CHANNEL_DISCONNECTING = 3; // 0x3
-  }
-
-  @Deprecated public final class BluetoothHealthAppConfiguration implements android.os.Parcelable {
-    method @Deprecated public int describeContents();
-    method @Deprecated public int getDataType();
-    method @Deprecated public String getName();
-    method @Deprecated public int getRole();
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothHealthAppConfiguration> CREATOR;
-  }
-
-  @Deprecated public abstract class BluetoothHealthCallback {
-    ctor @Deprecated public BluetoothHealthCallback();
-    method @Deprecated @BinderThread public void onHealthAppConfigurationStatusChange(android.bluetooth.BluetoothHealthAppConfiguration, int);
-    method @Deprecated @BinderThread public void onHealthChannelStateChange(android.bluetooth.BluetoothHealthAppConfiguration, android.bluetooth.BluetoothDevice, int, int, android.os.ParcelFileDescriptor, int);
-  }
-
-  public final class BluetoothHearingAid implements android.bluetooth.BluetoothProfile {
-    method @NonNull public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
-    method public int getConnectionState(@NonNull android.bluetooth.BluetoothDevice);
-    method @NonNull public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(@NonNull int[]);
-    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.hearingaid.profile.action.CONNECTION_STATE_CHANGED";
-  }
-
-  public final class BluetoothHidDevice implements android.bluetooth.BluetoothProfile {
-    method public boolean connect(android.bluetooth.BluetoothDevice);
-    method public boolean disconnect(android.bluetooth.BluetoothDevice);
-    method public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
-    method public int getConnectionState(android.bluetooth.BluetoothDevice);
-    method public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
-    method public boolean registerApp(android.bluetooth.BluetoothHidDeviceAppSdpSettings, android.bluetooth.BluetoothHidDeviceAppQosSettings, android.bluetooth.BluetoothHidDeviceAppQosSettings, java.util.concurrent.Executor, android.bluetooth.BluetoothHidDevice.Callback);
-    method public boolean replyReport(android.bluetooth.BluetoothDevice, byte, byte, byte[]);
-    method public boolean reportError(android.bluetooth.BluetoothDevice, byte);
-    method public boolean sendReport(android.bluetooth.BluetoothDevice, int, byte[]);
-    method public boolean unregisterApp();
-    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.hiddevice.profile.action.CONNECTION_STATE_CHANGED";
-    field public static final byte ERROR_RSP_INVALID_PARAM = 4; // 0x4
-    field public static final byte ERROR_RSP_INVALID_RPT_ID = 2; // 0x2
-    field public static final byte ERROR_RSP_NOT_READY = 1; // 0x1
-    field public static final byte ERROR_RSP_SUCCESS = 0; // 0x0
-    field public static final byte ERROR_RSP_UNKNOWN = 14; // 0xe
-    field public static final byte ERROR_RSP_UNSUPPORTED_REQ = 3; // 0x3
-    field public static final byte PROTOCOL_BOOT_MODE = 0; // 0x0
-    field public static final byte PROTOCOL_REPORT_MODE = 1; // 0x1
-    field public static final byte REPORT_TYPE_FEATURE = 3; // 0x3
-    field public static final byte REPORT_TYPE_INPUT = 1; // 0x1
-    field public static final byte REPORT_TYPE_OUTPUT = 2; // 0x2
-    field public static final byte SUBCLASS1_COMBO = -64; // 0xffffffc0
-    field public static final byte SUBCLASS1_KEYBOARD = 64; // 0x40
-    field public static final byte SUBCLASS1_MOUSE = -128; // 0xffffff80
-    field public static final byte SUBCLASS1_NONE = 0; // 0x0
-    field public static final byte SUBCLASS2_CARD_READER = 6; // 0x6
-    field public static final byte SUBCLASS2_DIGITIZER_TABLET = 5; // 0x5
-    field public static final byte SUBCLASS2_GAMEPAD = 2; // 0x2
-    field public static final byte SUBCLASS2_JOYSTICK = 1; // 0x1
-    field public static final byte SUBCLASS2_REMOTE_CONTROL = 3; // 0x3
-    field public static final byte SUBCLASS2_SENSING_DEVICE = 4; // 0x4
-    field public static final byte SUBCLASS2_UNCATEGORIZED = 0; // 0x0
-  }
-
-  public abstract static class BluetoothHidDevice.Callback {
-    ctor public BluetoothHidDevice.Callback();
-    method public void onAppStatusChanged(android.bluetooth.BluetoothDevice, boolean);
-    method public void onConnectionStateChanged(android.bluetooth.BluetoothDevice, int);
-    method public void onGetReport(android.bluetooth.BluetoothDevice, byte, byte, int);
-    method public void onInterruptData(android.bluetooth.BluetoothDevice, byte, byte[]);
-    method public void onSetProtocol(android.bluetooth.BluetoothDevice, byte);
-    method public void onSetReport(android.bluetooth.BluetoothDevice, byte, byte, byte[]);
-    method public void onVirtualCableUnplug(android.bluetooth.BluetoothDevice);
-  }
-
-  public final class BluetoothHidDeviceAppQosSettings implements android.os.Parcelable {
-    ctor public BluetoothHidDeviceAppQosSettings(int, int, int, int, int, int);
-    method public int describeContents();
-    method public int getDelayVariation();
-    method public int getLatency();
-    method public int getPeakBandwidth();
-    method public int getServiceType();
-    method public int getTokenBucketSize();
-    method public int getTokenRate();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothHidDeviceAppQosSettings> CREATOR;
-    field public static final int MAX = -1; // 0xffffffff
-    field public static final int SERVICE_BEST_EFFORT = 1; // 0x1
-    field public static final int SERVICE_GUARANTEED = 2; // 0x2
-    field public static final int SERVICE_NO_TRAFFIC = 0; // 0x0
-  }
-
-  public final class BluetoothHidDeviceAppSdpSettings implements android.os.Parcelable {
-    ctor public BluetoothHidDeviceAppSdpSettings(String, String, String, byte, byte[]);
-    method public int describeContents();
-    method public String getDescription();
-    method public byte[] getDescriptors();
-    method public String getName();
-    method public String getProvider();
-    method public byte getSubclass();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothHidDeviceAppSdpSettings> CREATOR;
-  }
-
-  public final class BluetoothManager {
-    method public android.bluetooth.BluetoothAdapter getAdapter();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices(int);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getConnectionState(android.bluetooth.BluetoothDevice, int);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int, int[]);
-    method public android.bluetooth.BluetoothGattServer openGattServer(android.content.Context, android.bluetooth.BluetoothGattServerCallback);
-  }
-
-  public interface BluetoothProfile {
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getConnectionState(android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
-    field public static final int A2DP = 2; // 0x2
-    field public static final String EXTRA_PREVIOUS_STATE = "android.bluetooth.profile.extra.PREVIOUS_STATE";
-    field public static final String EXTRA_STATE = "android.bluetooth.profile.extra.STATE";
-    field public static final int GATT = 7; // 0x7
-    field public static final int GATT_SERVER = 8; // 0x8
-    field public static final int HEADSET = 1; // 0x1
-    field @Deprecated public static final int HEALTH = 3; // 0x3
-    field public static final int HEARING_AID = 21; // 0x15
-    field public static final int HID_DEVICE = 19; // 0x13
-    field public static final int SAP = 10; // 0xa
-    field public static final int STATE_CONNECTED = 2; // 0x2
-    field public static final int STATE_CONNECTING = 1; // 0x1
-    field public static final int STATE_DISCONNECTED = 0; // 0x0
-    field public static final int STATE_DISCONNECTING = 3; // 0x3
-  }
-
-  public static interface BluetoothProfile.ServiceListener {
-    method public void onServiceConnected(int, android.bluetooth.BluetoothProfile);
-    method public void onServiceDisconnected(int);
-  }
-
-  public final class BluetoothServerSocket implements java.io.Closeable {
-    method public android.bluetooth.BluetoothSocket accept() throws java.io.IOException;
-    method public android.bluetooth.BluetoothSocket accept(int) throws java.io.IOException;
-    method public void close() throws java.io.IOException;
-    method public int getPsm();
-  }
-
-  public final class BluetoothSocket implements java.io.Closeable {
-    method public void close() throws java.io.IOException;
-    method public void connect() throws java.io.IOException;
-    method public int getConnectionType();
-    method public java.io.InputStream getInputStream() throws java.io.IOException;
-    method public int getMaxReceivePacketSize();
-    method public int getMaxTransmitPacketSize();
-    method public java.io.OutputStream getOutputStream() throws java.io.IOException;
-    method public android.bluetooth.BluetoothDevice getRemoteDevice();
-    method public boolean isConnected();
-    field public static final int TYPE_L2CAP = 3; // 0x3
-    field public static final int TYPE_RFCOMM = 1; // 0x1
-    field public static final int TYPE_SCO = 2; // 0x2
-  }
-
-}
-
-package android.bluetooth.le {
-
-  public abstract class AdvertiseCallback {
-    ctor public AdvertiseCallback();
-    method public void onStartFailure(int);
-    method public void onStartSuccess(android.bluetooth.le.AdvertiseSettings);
-    field public static final int ADVERTISE_FAILED_ALREADY_STARTED = 3; // 0x3
-    field public static final int ADVERTISE_FAILED_DATA_TOO_LARGE = 1; // 0x1
-    field public static final int ADVERTISE_FAILED_FEATURE_UNSUPPORTED = 5; // 0x5
-    field public static final int ADVERTISE_FAILED_INTERNAL_ERROR = 4; // 0x4
-    field public static final int ADVERTISE_FAILED_TOO_MANY_ADVERTISERS = 2; // 0x2
-  }
-
-  public final class AdvertiseData implements android.os.Parcelable {
-    method public int describeContents();
-    method public boolean getIncludeDeviceName();
-    method public boolean getIncludeTxPowerLevel();
-    method public android.util.SparseArray<byte[]> getManufacturerSpecificData();
-    method public java.util.Map<android.os.ParcelUuid,byte[]> getServiceData();
-    method public java.util.List<android.os.ParcelUuid> getServiceUuids();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.AdvertiseData> CREATOR;
-  }
-
-  public static final class AdvertiseData.Builder {
-    ctor public AdvertiseData.Builder();
-    method public android.bluetooth.le.AdvertiseData.Builder addManufacturerData(int, byte[]);
-    method public android.bluetooth.le.AdvertiseData.Builder addServiceData(android.os.ParcelUuid, byte[]);
-    method public android.bluetooth.le.AdvertiseData.Builder addServiceUuid(android.os.ParcelUuid);
-    method public android.bluetooth.le.AdvertiseData build();
-    method public android.bluetooth.le.AdvertiseData.Builder setIncludeDeviceName(boolean);
-    method public android.bluetooth.le.AdvertiseData.Builder setIncludeTxPowerLevel(boolean);
-  }
-
-  public final class AdvertiseSettings implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getMode();
-    method public int getTimeout();
-    method public int getTxPowerLevel();
-    method public boolean isConnectable();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ADVERTISE_MODE_BALANCED = 1; // 0x1
-    field public static final int ADVERTISE_MODE_LOW_LATENCY = 2; // 0x2
-    field public static final int ADVERTISE_MODE_LOW_POWER = 0; // 0x0
-    field public static final int ADVERTISE_TX_POWER_HIGH = 3; // 0x3
-    field public static final int ADVERTISE_TX_POWER_LOW = 1; // 0x1
-    field public static final int ADVERTISE_TX_POWER_MEDIUM = 2; // 0x2
-    field public static final int ADVERTISE_TX_POWER_ULTRA_LOW = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.AdvertiseSettings> CREATOR;
-  }
-
-  public static final class AdvertiseSettings.Builder {
-    ctor public AdvertiseSettings.Builder();
-    method public android.bluetooth.le.AdvertiseSettings build();
-    method public android.bluetooth.le.AdvertiseSettings.Builder setAdvertiseMode(int);
-    method public android.bluetooth.le.AdvertiseSettings.Builder setConnectable(boolean);
-    method public android.bluetooth.le.AdvertiseSettings.Builder setTimeout(int);
-    method public android.bluetooth.le.AdvertiseSettings.Builder setTxPowerLevel(int);
-  }
-
-  public final class AdvertisingSet {
-    method public void enableAdvertising(boolean, int, int);
-    method public void setAdvertisingData(android.bluetooth.le.AdvertiseData);
-    method public void setAdvertisingParameters(android.bluetooth.le.AdvertisingSetParameters);
-    method public void setPeriodicAdvertisingData(android.bluetooth.le.AdvertiseData);
-    method public void setPeriodicAdvertisingEnabled(boolean);
-    method public void setPeriodicAdvertisingParameters(android.bluetooth.le.PeriodicAdvertisingParameters);
-    method public void setScanResponseData(android.bluetooth.le.AdvertiseData);
-  }
-
-  public abstract class AdvertisingSetCallback {
-    ctor public AdvertisingSetCallback();
-    method public void onAdvertisingDataSet(android.bluetooth.le.AdvertisingSet, int);
-    method public void onAdvertisingEnabled(android.bluetooth.le.AdvertisingSet, boolean, int);
-    method public void onAdvertisingParametersUpdated(android.bluetooth.le.AdvertisingSet, int, int);
-    method public void onAdvertisingSetStarted(android.bluetooth.le.AdvertisingSet, int, int);
-    method public void onAdvertisingSetStopped(android.bluetooth.le.AdvertisingSet);
-    method public void onPeriodicAdvertisingDataSet(android.bluetooth.le.AdvertisingSet, int);
-    method public void onPeriodicAdvertisingEnabled(android.bluetooth.le.AdvertisingSet, boolean, int);
-    method public void onPeriodicAdvertisingParametersUpdated(android.bluetooth.le.AdvertisingSet, int);
-    method public void onScanResponseDataSet(android.bluetooth.le.AdvertisingSet, int);
-    field public static final int ADVERTISE_FAILED_ALREADY_STARTED = 3; // 0x3
-    field public static final int ADVERTISE_FAILED_DATA_TOO_LARGE = 1; // 0x1
-    field public static final int ADVERTISE_FAILED_FEATURE_UNSUPPORTED = 5; // 0x5
-    field public static final int ADVERTISE_FAILED_INTERNAL_ERROR = 4; // 0x4
-    field public static final int ADVERTISE_FAILED_TOO_MANY_ADVERTISERS = 2; // 0x2
-    field public static final int ADVERTISE_SUCCESS = 0; // 0x0
-  }
-
-  public final class AdvertisingSetParameters implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getInterval();
-    method public int getPrimaryPhy();
-    method public int getSecondaryPhy();
-    method public int getTxPowerLevel();
-    method public boolean includeTxPower();
-    method public boolean isAnonymous();
-    method public boolean isConnectable();
-    method public boolean isLegacy();
-    method public boolean isScannable();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.AdvertisingSetParameters> CREATOR;
-    field public static final int INTERVAL_HIGH = 1600; // 0x640
-    field public static final int INTERVAL_LOW = 160; // 0xa0
-    field public static final int INTERVAL_MAX = 16777215; // 0xffffff
-    field public static final int INTERVAL_MEDIUM = 400; // 0x190
-    field public static final int INTERVAL_MIN = 160; // 0xa0
-    field public static final int TX_POWER_HIGH = 1; // 0x1
-    field public static final int TX_POWER_LOW = -15; // 0xfffffff1
-    field public static final int TX_POWER_MAX = 1; // 0x1
-    field public static final int TX_POWER_MEDIUM = -7; // 0xfffffff9
-    field public static final int TX_POWER_MIN = -127; // 0xffffff81
-    field public static final int TX_POWER_ULTRA_LOW = -21; // 0xffffffeb
-  }
-
-  public static final class AdvertisingSetParameters.Builder {
-    ctor public AdvertisingSetParameters.Builder();
-    method public android.bluetooth.le.AdvertisingSetParameters build();
-    method public android.bluetooth.le.AdvertisingSetParameters.Builder setAnonymous(boolean);
-    method public android.bluetooth.le.AdvertisingSetParameters.Builder setConnectable(boolean);
-    method public android.bluetooth.le.AdvertisingSetParameters.Builder setIncludeTxPower(boolean);
-    method public android.bluetooth.le.AdvertisingSetParameters.Builder setInterval(int);
-    method public android.bluetooth.le.AdvertisingSetParameters.Builder setLegacyMode(boolean);
-    method public android.bluetooth.le.AdvertisingSetParameters.Builder setPrimaryPhy(int);
-    method public android.bluetooth.le.AdvertisingSetParameters.Builder setScannable(boolean);
-    method public android.bluetooth.le.AdvertisingSetParameters.Builder setSecondaryPhy(int);
-    method public android.bluetooth.le.AdvertisingSetParameters.Builder setTxPowerLevel(int);
-  }
-
-  public final class BluetoothLeAdvertiser {
-    method public void startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback);
-    method public void startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback);
-    method public void startAdvertisingSet(android.bluetooth.le.AdvertisingSetParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.PeriodicAdvertisingParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertisingSetCallback);
-    method public void startAdvertisingSet(android.bluetooth.le.AdvertisingSetParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.PeriodicAdvertisingParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertisingSetCallback, android.os.Handler);
-    method public void startAdvertisingSet(android.bluetooth.le.AdvertisingSetParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.PeriodicAdvertisingParameters, android.bluetooth.le.AdvertiseData, int, int, android.bluetooth.le.AdvertisingSetCallback);
-    method public void startAdvertisingSet(android.bluetooth.le.AdvertisingSetParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.PeriodicAdvertisingParameters, android.bluetooth.le.AdvertiseData, int, int, android.bluetooth.le.AdvertisingSetCallback, android.os.Handler);
-    method public void stopAdvertising(android.bluetooth.le.AdvertiseCallback);
-    method public void stopAdvertisingSet(android.bluetooth.le.AdvertisingSetCallback);
-  }
-
-  public final class BluetoothLeScanner {
-    method public void flushPendingScanResults(android.bluetooth.le.ScanCallback);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public void startScan(android.bluetooth.le.ScanCallback);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public void startScan(java.util.List<android.bluetooth.le.ScanFilter>, android.bluetooth.le.ScanSettings, android.bluetooth.le.ScanCallback);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public int startScan(@Nullable java.util.List<android.bluetooth.le.ScanFilter>, @Nullable android.bluetooth.le.ScanSettings, @NonNull android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public void stopScan(android.bluetooth.le.ScanCallback);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public void stopScan(android.app.PendingIntent);
-    field public static final String EXTRA_CALLBACK_TYPE = "android.bluetooth.le.extra.CALLBACK_TYPE";
-    field public static final String EXTRA_ERROR_CODE = "android.bluetooth.le.extra.ERROR_CODE";
-    field public static final String EXTRA_LIST_SCAN_RESULT = "android.bluetooth.le.extra.LIST_SCAN_RESULT";
-  }
-
-  public final class PeriodicAdvertisingParameters implements android.os.Parcelable {
-    method public int describeContents();
-    method public boolean getIncludeTxPower();
-    method public int getInterval();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.bluetooth.le.PeriodicAdvertisingParameters> CREATOR;
-  }
-
-  public static final class PeriodicAdvertisingParameters.Builder {
-    ctor public PeriodicAdvertisingParameters.Builder();
-    method public android.bluetooth.le.PeriodicAdvertisingParameters build();
-    method public android.bluetooth.le.PeriodicAdvertisingParameters.Builder setIncludeTxPower(boolean);
-    method public android.bluetooth.le.PeriodicAdvertisingParameters.Builder setInterval(int);
-  }
-
-  public abstract class ScanCallback {
-    ctor public ScanCallback();
-    method public void onBatchScanResults(java.util.List<android.bluetooth.le.ScanResult>);
-    method public void onScanFailed(int);
-    method public void onScanResult(int, android.bluetooth.le.ScanResult);
-    field public static final int SCAN_FAILED_ALREADY_STARTED = 1; // 0x1
-    field public static final int SCAN_FAILED_APPLICATION_REGISTRATION_FAILED = 2; // 0x2
-    field public static final int SCAN_FAILED_FEATURE_UNSUPPORTED = 4; // 0x4
-    field public static final int SCAN_FAILED_INTERNAL_ERROR = 3; // 0x3
-  }
-
-  public final class ScanFilter implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getDeviceAddress();
-    method @Nullable public String getDeviceName();
-    method @Nullable public byte[] getManufacturerData();
-    method @Nullable public byte[] getManufacturerDataMask();
-    method public int getManufacturerId();
-    method @Nullable public byte[] getServiceData();
-    method @Nullable public byte[] getServiceDataMask();
-    method @Nullable public android.os.ParcelUuid getServiceDataUuid();
-    method @Nullable public android.os.ParcelUuid getServiceSolicitationUuid();
-    method @Nullable public android.os.ParcelUuid getServiceSolicitationUuidMask();
-    method @Nullable public android.os.ParcelUuid getServiceUuid();
-    method @Nullable public android.os.ParcelUuid getServiceUuidMask();
-    method public boolean matches(android.bluetooth.le.ScanResult);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.ScanFilter> CREATOR;
-  }
-
-  public static final class ScanFilter.Builder {
-    ctor public ScanFilter.Builder();
-    method public android.bluetooth.le.ScanFilter build();
-    method public android.bluetooth.le.ScanFilter.Builder setDeviceAddress(String);
-    method public android.bluetooth.le.ScanFilter.Builder setDeviceName(String);
-    method public android.bluetooth.le.ScanFilter.Builder setManufacturerData(int, byte[]);
-    method public android.bluetooth.le.ScanFilter.Builder setManufacturerData(int, byte[], byte[]);
-    method public android.bluetooth.le.ScanFilter.Builder setServiceData(android.os.ParcelUuid, byte[]);
-    method public android.bluetooth.le.ScanFilter.Builder setServiceData(android.os.ParcelUuid, byte[], byte[]);
-    method @NonNull public android.bluetooth.le.ScanFilter.Builder setServiceSolicitationUuid(@Nullable android.os.ParcelUuid);
-    method @NonNull public android.bluetooth.le.ScanFilter.Builder setServiceSolicitationUuid(@Nullable android.os.ParcelUuid, @Nullable android.os.ParcelUuid);
-    method public android.bluetooth.le.ScanFilter.Builder setServiceUuid(android.os.ParcelUuid);
-    method public android.bluetooth.le.ScanFilter.Builder setServiceUuid(android.os.ParcelUuid, android.os.ParcelUuid);
-  }
-
-  public final class ScanRecord {
-    method public int getAdvertiseFlags();
-    method public byte[] getBytes();
-    method @Nullable public String getDeviceName();
-    method public android.util.SparseArray<byte[]> getManufacturerSpecificData();
-    method @Nullable public byte[] getManufacturerSpecificData(int);
-    method public java.util.Map<android.os.ParcelUuid,byte[]> getServiceData();
-    method @Nullable public byte[] getServiceData(android.os.ParcelUuid);
-    method @NonNull public java.util.List<android.os.ParcelUuid> getServiceSolicitationUuids();
-    method public java.util.List<android.os.ParcelUuid> getServiceUuids();
-    method public int getTxPowerLevel();
-  }
-
-  public final class ScanResult implements android.os.Parcelable {
-    ctor @Deprecated public ScanResult(android.bluetooth.BluetoothDevice, android.bluetooth.le.ScanRecord, int, long);
-    ctor public ScanResult(android.bluetooth.BluetoothDevice, int, int, int, int, int, int, int, android.bluetooth.le.ScanRecord, long);
-    method public int describeContents();
-    method public int getAdvertisingSid();
-    method public int getDataStatus();
-    method public android.bluetooth.BluetoothDevice getDevice();
-    method public int getPeriodicAdvertisingInterval();
-    method public int getPrimaryPhy();
-    method public int getRssi();
-    method @Nullable public android.bluetooth.le.ScanRecord getScanRecord();
-    method public int getSecondaryPhy();
-    method public long getTimestampNanos();
-    method public int getTxPower();
-    method public boolean isConnectable();
-    method public boolean isLegacy();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.ScanResult> CREATOR;
-    field public static final int DATA_COMPLETE = 0; // 0x0
-    field public static final int DATA_TRUNCATED = 2; // 0x2
-    field public static final int PERIODIC_INTERVAL_NOT_PRESENT = 0; // 0x0
-    field public static final int PHY_UNUSED = 0; // 0x0
-    field public static final int SID_NOT_PRESENT = 255; // 0xff
-    field public static final int TX_POWER_NOT_PRESENT = 127; // 0x7f
-  }
-
-  public final class ScanSettings implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getCallbackType();
-    method public boolean getLegacy();
-    method public int getPhy();
-    method public long getReportDelayMillis();
-    method public int getScanMode();
-    method public int getScanResultType();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CALLBACK_TYPE_ALL_MATCHES = 1; // 0x1
-    field public static final int CALLBACK_TYPE_FIRST_MATCH = 2; // 0x2
-    field public static final int CALLBACK_TYPE_MATCH_LOST = 4; // 0x4
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.ScanSettings> CREATOR;
-    field public static final int MATCH_MODE_AGGRESSIVE = 1; // 0x1
-    field public static final int MATCH_MODE_STICKY = 2; // 0x2
-    field public static final int MATCH_NUM_FEW_ADVERTISEMENT = 2; // 0x2
-    field public static final int MATCH_NUM_MAX_ADVERTISEMENT = 3; // 0x3
-    field public static final int MATCH_NUM_ONE_ADVERTISEMENT = 1; // 0x1
-    field public static final int PHY_LE_ALL_SUPPORTED = 255; // 0xff
-    field public static final int SCAN_MODE_BALANCED = 1; // 0x1
-    field public static final int SCAN_MODE_LOW_LATENCY = 2; // 0x2
-    field public static final int SCAN_MODE_LOW_POWER = 0; // 0x0
-    field public static final int SCAN_MODE_OPPORTUNISTIC = -1; // 0xffffffff
-  }
-
-  public static final class ScanSettings.Builder {
-    ctor public ScanSettings.Builder();
-    method public android.bluetooth.le.ScanSettings build();
-    method public android.bluetooth.le.ScanSettings.Builder setCallbackType(int);
-    method public android.bluetooth.le.ScanSettings.Builder setLegacy(boolean);
-    method public android.bluetooth.le.ScanSettings.Builder setMatchMode(int);
-    method public android.bluetooth.le.ScanSettings.Builder setNumOfMatches(int);
-    method public android.bluetooth.le.ScanSettings.Builder setPhy(int);
-    method public android.bluetooth.le.ScanSettings.Builder setReportDelay(long);
-    method public android.bluetooth.le.ScanSettings.Builder setScanMode(int);
-  }
-
-}
-
-package android.companion {
-
-  public final class AssociationRequest implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.companion.AssociationRequest> CREATOR;
-  }
-
-  public static final class AssociationRequest.Builder {
-    ctor public AssociationRequest.Builder();
-    method @NonNull public android.companion.AssociationRequest.Builder addDeviceFilter(@Nullable android.companion.DeviceFilter<?>);
-    method @NonNull public android.companion.AssociationRequest build();
-    method @NonNull public android.companion.AssociationRequest.Builder setSingleDevice(boolean);
-  }
-
-  public final class BluetoothDeviceFilter implements android.companion.DeviceFilter<android.bluetooth.BluetoothDevice> {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.companion.BluetoothDeviceFilter> CREATOR;
-  }
-
-  public static final class BluetoothDeviceFilter.Builder {
-    ctor public BluetoothDeviceFilter.Builder();
-    method @NonNull public android.companion.BluetoothDeviceFilter.Builder addServiceUuid(@Nullable android.os.ParcelUuid, @Nullable android.os.ParcelUuid);
-    method @NonNull public android.companion.BluetoothDeviceFilter build();
-    method @NonNull public android.companion.BluetoothDeviceFilter.Builder setAddress(@Nullable String);
-    method public android.companion.BluetoothDeviceFilter.Builder setNamePattern(@Nullable java.util.regex.Pattern);
-  }
-
-  public final class BluetoothLeDeviceFilter implements android.companion.DeviceFilter<android.bluetooth.le.ScanResult> {
-    method public int describeContents();
-    method public static int getRenamePrefixLengthLimit();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.companion.BluetoothLeDeviceFilter> CREATOR;
-  }
-
-  public static final class BluetoothLeDeviceFilter.Builder {
-    ctor public BluetoothLeDeviceFilter.Builder();
-    method @NonNull public android.companion.BluetoothLeDeviceFilter build();
-    method public android.companion.BluetoothLeDeviceFilter.Builder setNamePattern(@Nullable java.util.regex.Pattern);
-    method @NonNull public android.companion.BluetoothLeDeviceFilter.Builder setRawDataFilter(@NonNull byte[], @Nullable byte[]);
-    method @NonNull public android.companion.BluetoothLeDeviceFilter.Builder setRenameFromBytes(@NonNull String, @NonNull String, int, int, java.nio.ByteOrder);
-    method @NonNull public android.companion.BluetoothLeDeviceFilter.Builder setRenameFromName(@NonNull String, @NonNull String, int, int);
-    method @NonNull public android.companion.BluetoothLeDeviceFilter.Builder setScanFilter(@Nullable android.bluetooth.le.ScanFilter);
-  }
-
-  public final class CompanionDeviceManager {
-    method public void associate(@NonNull android.companion.AssociationRequest, @NonNull android.companion.CompanionDeviceManager.Callback, @Nullable android.os.Handler);
-    method public void disassociate(@NonNull String);
-    method @NonNull public java.util.List<java.lang.String> getAssociations();
-    method public boolean hasNotificationAccess(android.content.ComponentName);
-    method public void requestNotificationAccess(android.content.ComponentName);
-    field public static final String EXTRA_DEVICE = "android.companion.extra.DEVICE";
-  }
-
-  public abstract static class CompanionDeviceManager.Callback {
-    ctor public CompanionDeviceManager.Callback();
-    method public abstract void onDeviceFound(android.content.IntentSender);
-    method public abstract void onFailure(CharSequence);
-  }
-
-  public interface DeviceFilter<D extends android.os.Parcelable> extends android.os.Parcelable {
-  }
-
-  public final class WifiDeviceFilter implements android.companion.DeviceFilter<android.net.wifi.ScanResult> {
-    method public int describeContents();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.companion.WifiDeviceFilter> CREATOR;
-  }
-
-  public static final class WifiDeviceFilter.Builder {
-    ctor public WifiDeviceFilter.Builder();
-    method @NonNull public android.companion.WifiDeviceFilter build();
-    method @NonNull public android.companion.WifiDeviceFilter.Builder setBssid(@NonNull android.net.MacAddress);
-    method @NonNull public android.companion.WifiDeviceFilter.Builder setBssidMask(@NonNull android.net.MacAddress);
-    method @NonNull public android.companion.WifiDeviceFilter.Builder setNamePattern(@Nullable java.util.regex.Pattern);
-  }
-
-}
-
-package android.content {
-
-  public abstract class AbstractThreadedSyncAdapter {
-    ctor public AbstractThreadedSyncAdapter(android.content.Context, boolean);
-    ctor public AbstractThreadedSyncAdapter(android.content.Context, boolean, boolean);
-    method public android.content.Context getContext();
-    method public final android.os.IBinder getSyncAdapterBinder();
-    method public abstract void onPerformSync(android.accounts.Account, android.os.Bundle, String, android.content.ContentProviderClient, android.content.SyncResult);
-    method public void onSecurityException(android.accounts.Account, android.os.Bundle, String, android.content.SyncResult);
-    method public void onSyncCanceled();
-    method public void onSyncCanceled(Thread);
-    method @MainThread public boolean onUnsyncableAccount();
-    field @Deprecated public static final int LOG_SYNC_DETAILS = 2743; // 0xab7
-  }
-
-  public class ActivityNotFoundException extends java.lang.RuntimeException {
-    ctor public ActivityNotFoundException();
-    ctor public ActivityNotFoundException(String);
-  }
-
-  public abstract class AsyncQueryHandler extends android.os.Handler {
-    ctor public AsyncQueryHandler(android.content.ContentResolver);
-    method public final void cancelOperation(int);
-    method protected android.os.Handler createHandler(android.os.Looper);
-    method protected void onDeleteComplete(int, Object, int);
-    method protected void onInsertComplete(int, Object, android.net.Uri);
-    method protected void onQueryComplete(int, Object, android.database.Cursor);
-    method protected void onUpdateComplete(int, Object, int);
-    method public final void startDelete(int, Object, android.net.Uri, String, String[]);
-    method public final void startInsert(int, Object, android.net.Uri, android.content.ContentValues);
-    method public void startQuery(int, Object, android.net.Uri, String[], String, String[], String);
-    method public final void startUpdate(int, Object, android.net.Uri, android.content.ContentValues, String, String[]);
-  }
-
-  protected static final class AsyncQueryHandler.WorkerArgs {
-    ctor protected AsyncQueryHandler.WorkerArgs();
-    field public Object cookie;
-    field public android.os.Handler handler;
-    field public String orderBy;
-    field public String[] projection;
-    field public Object result;
-    field public String selection;
-    field public String[] selectionArgs;
-    field public android.net.Uri uri;
-    field public android.content.ContentValues values;
-  }
-
-  protected class AsyncQueryHandler.WorkerHandler extends android.os.Handler {
-    ctor public AsyncQueryHandler.WorkerHandler(android.os.Looper);
-  }
-
-  @Deprecated public abstract class AsyncTaskLoader<D> extends android.content.Loader<D> {
-    ctor @Deprecated public AsyncTaskLoader(android.content.Context);
-    method @Deprecated public void cancelLoadInBackground();
-    method @Deprecated public boolean isLoadInBackgroundCanceled();
-    method @Deprecated public abstract D loadInBackground();
-    method @Deprecated public void onCanceled(D);
-    method @Deprecated protected D onLoadInBackground();
-    method @Deprecated public void setUpdateThrottle(long);
-  }
-
-  public abstract class BroadcastReceiver {
-    ctor public BroadcastReceiver();
-    method public final void abortBroadcast();
-    method public final void clearAbortBroadcast();
-    method public final boolean getAbortBroadcast();
-    method public final boolean getDebugUnregister();
-    method public final int getResultCode();
-    method public final String getResultData();
-    method public final android.os.Bundle getResultExtras(boolean);
-    method public final android.content.BroadcastReceiver.PendingResult goAsync();
-    method public final boolean isInitialStickyBroadcast();
-    method public final boolean isOrderedBroadcast();
-    method public abstract void onReceive(android.content.Context, android.content.Intent);
-    method public android.os.IBinder peekService(android.content.Context, android.content.Intent);
-    method public final void setDebugUnregister(boolean);
-    method public final void setOrderedHint(boolean);
-    method public final void setResult(int, String, android.os.Bundle);
-    method public final void setResultCode(int);
-    method public final void setResultData(String);
-    method public final void setResultExtras(android.os.Bundle);
-  }
-
-  public static class BroadcastReceiver.PendingResult {
-    method public final void abortBroadcast();
-    method public final void clearAbortBroadcast();
-    method public final void finish();
-    method public final boolean getAbortBroadcast();
-    method public final int getResultCode();
-    method public final String getResultData();
-    method public final android.os.Bundle getResultExtras(boolean);
-    method public final void setResult(int, String, android.os.Bundle);
-    method public final void setResultCode(int);
-    method public final void setResultData(String);
-    method public final void setResultExtras(android.os.Bundle);
-  }
-
-  public class ClipData implements android.os.Parcelable {
-    ctor public ClipData(CharSequence, String[], android.content.ClipData.Item);
-    ctor public ClipData(android.content.ClipDescription, android.content.ClipData.Item);
-    ctor public ClipData(android.content.ClipData);
-    method public void addItem(android.content.ClipData.Item);
-    method public void addItem(android.content.ContentResolver, android.content.ClipData.Item);
-    method public int describeContents();
-    method public android.content.ClipDescription getDescription();
-    method public android.content.ClipData.Item getItemAt(int);
-    method public int getItemCount();
-    method public static android.content.ClipData newHtmlText(CharSequence, CharSequence, String);
-    method public static android.content.ClipData newIntent(CharSequence, android.content.Intent);
-    method public static android.content.ClipData newPlainText(CharSequence, CharSequence);
-    method public static android.content.ClipData newRawUri(CharSequence, android.net.Uri);
-    method public static android.content.ClipData newUri(android.content.ContentResolver, CharSequence, android.net.Uri);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.ClipData> CREATOR;
-  }
-
-  public static class ClipData.Item {
-    ctor public ClipData.Item(CharSequence);
-    ctor public ClipData.Item(CharSequence, String);
-    ctor public ClipData.Item(android.content.Intent);
-    ctor public ClipData.Item(android.net.Uri);
-    ctor public ClipData.Item(CharSequence, android.content.Intent, android.net.Uri);
-    ctor public ClipData.Item(CharSequence, String, android.content.Intent, android.net.Uri);
-    method public String coerceToHtmlText(android.content.Context);
-    method public CharSequence coerceToStyledText(android.content.Context);
-    method public CharSequence coerceToText(android.content.Context);
-    method public String getHtmlText();
-    method public android.content.Intent getIntent();
-    method public CharSequence getText();
-    method public android.net.Uri getUri();
-  }
-
-  public class ClipDescription implements android.os.Parcelable {
-    ctor public ClipDescription(CharSequence, String[]);
-    ctor public ClipDescription(android.content.ClipDescription);
-    method public static boolean compareMimeTypes(String, String);
-    method public int describeContents();
-    method public String[] filterMimeTypes(String);
-    method public android.os.PersistableBundle getExtras();
-    method public CharSequence getLabel();
-    method public String getMimeType(int);
-    method public int getMimeTypeCount();
-    method public long getTimestamp();
-    method public boolean hasMimeType(String);
-    method public void setExtras(android.os.PersistableBundle);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.ClipDescription> CREATOR;
-    field public static final String MIMETYPE_TEXT_HTML = "text/html";
-    field public static final String MIMETYPE_TEXT_INTENT = "text/vnd.android.intent";
-    field public static final String MIMETYPE_TEXT_PLAIN = "text/plain";
-    field public static final String MIMETYPE_TEXT_URILIST = "text/uri-list";
-    field public static final String MIMETYPE_UNKNOWN = "application/octet-stream";
-  }
-
-  public class ClipboardManager extends android.text.ClipboardManager {
-    method public void addPrimaryClipChangedListener(android.content.ClipboardManager.OnPrimaryClipChangedListener);
-    method public void clearPrimaryClip();
-    method @Nullable public android.content.ClipData getPrimaryClip();
-    method @Nullable public android.content.ClipDescription getPrimaryClipDescription();
-    method @Deprecated public CharSequence getText();
-    method public boolean hasPrimaryClip();
-    method @Deprecated public boolean hasText();
-    method public void removePrimaryClipChangedListener(android.content.ClipboardManager.OnPrimaryClipChangedListener);
-    method public void setPrimaryClip(@NonNull android.content.ClipData);
-    method @Deprecated public void setText(CharSequence);
-  }
-
-  public static interface ClipboardManager.OnPrimaryClipChangedListener {
-    method public void onPrimaryClipChanged();
-  }
-
-  public interface ComponentCallbacks {
-    method public void onConfigurationChanged(@NonNull android.content.res.Configuration);
-    method public void onLowMemory();
-  }
-
-  public interface ComponentCallbacks2 extends android.content.ComponentCallbacks {
-    method public void onTrimMemory(int);
-    field public static final int TRIM_MEMORY_BACKGROUND = 40; // 0x28
-    field public static final int TRIM_MEMORY_COMPLETE = 80; // 0x50
-    field public static final int TRIM_MEMORY_MODERATE = 60; // 0x3c
-    field public static final int TRIM_MEMORY_RUNNING_CRITICAL = 15; // 0xf
-    field public static final int TRIM_MEMORY_RUNNING_LOW = 10; // 0xa
-    field public static final int TRIM_MEMORY_RUNNING_MODERATE = 5; // 0x5
-    field public static final int TRIM_MEMORY_UI_HIDDEN = 20; // 0x14
-  }
-
-  public final class ComponentName implements java.lang.Cloneable java.lang.Comparable<android.content.ComponentName> android.os.Parcelable {
-    ctor public ComponentName(@NonNull String, @NonNull String);
-    ctor public ComponentName(@NonNull android.content.Context, @NonNull String);
-    ctor public ComponentName(@NonNull android.content.Context, @NonNull Class<?>);
-    ctor public ComponentName(android.os.Parcel);
-    method public android.content.ComponentName clone();
-    method public int compareTo(android.content.ComponentName);
-    method @NonNull public static android.content.ComponentName createRelative(@NonNull String, @NonNull String);
-    method @NonNull public static android.content.ComponentName createRelative(@NonNull android.content.Context, @NonNull String);
-    method public int describeContents();
-    method @NonNull public String flattenToShortString();
-    method @NonNull public String flattenToString();
-    method @NonNull public String getClassName();
-    method @NonNull public String getPackageName();
-    method public String getShortClassName();
-    method public static android.content.ComponentName readFromParcel(android.os.Parcel);
-    method public String toShortString();
-    method @Nullable public static android.content.ComponentName unflattenFromString(@NonNull String);
-    method public void writeToParcel(android.os.Parcel, int);
-    method public static void writeToParcel(android.content.ComponentName, android.os.Parcel);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.ComponentName> CREATOR;
-  }
-
-  public abstract class ContentProvider implements android.content.ComponentCallbacks2 {
-    ctor public ContentProvider();
-    method @NonNull public android.content.ContentProviderResult[] applyBatch(@NonNull String, @NonNull java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException;
-    method @NonNull public android.content.ContentProviderResult[] applyBatch(@NonNull java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException;
-    method public void attachInfo(android.content.Context, android.content.pm.ProviderInfo);
-    method public int bulkInsert(@NonNull android.net.Uri, @NonNull android.content.ContentValues[]);
-    method @Nullable public android.os.Bundle call(@NonNull String, @NonNull String, @Nullable String, @Nullable android.os.Bundle);
-    method @Nullable public android.os.Bundle call(@NonNull String, @Nullable String, @Nullable android.os.Bundle);
-    method @Nullable public android.net.Uri canonicalize(@NonNull android.net.Uri);
-    method @NonNull public final android.content.ContentProvider.CallingIdentity clearCallingIdentity();
-    method public abstract int delete(@NonNull android.net.Uri, @Nullable String, @Nullable String[]);
-    method public int delete(@NonNull android.net.Uri, @Nullable android.os.Bundle);
-    method public void dump(java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method @Nullable public final String getCallingAttributionTag();
-    method @Nullable public final String getCallingPackage();
-    method @Nullable public final String getCallingPackageUnchecked();
-    method @Nullable public final android.content.Context getContext();
-    method @Nullable public final android.content.pm.PathPermission[] getPathPermissions();
-    method @Nullable public final String getReadPermission();
-    method @Nullable public String[] getStreamTypes(@NonNull android.net.Uri, @NonNull String);
-    method @Nullable public abstract String getType(@NonNull android.net.Uri);
-    method @Nullable public final String getWritePermission();
-    method @Nullable public abstract android.net.Uri insert(@NonNull android.net.Uri, @Nullable android.content.ContentValues);
-    method @Nullable public android.net.Uri insert(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable android.os.Bundle);
-    method protected boolean isTemporary();
-    method public void onCallingPackageChanged();
-    method public void onConfigurationChanged(android.content.res.Configuration);
-    method public abstract boolean onCreate();
-    method public void onLowMemory();
-    method public void onTrimMemory(int);
-    method @Nullable public android.content.res.AssetFileDescriptor openAssetFile(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
-    method @Nullable public android.content.res.AssetFileDescriptor openAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method @Nullable public android.os.ParcelFileDescriptor openFile(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
-    method @Nullable public android.os.ParcelFileDescriptor openFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method @NonNull protected final android.os.ParcelFileDescriptor openFileHelper(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
-    method @NonNull public <T> android.os.ParcelFileDescriptor openPipeHelper(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable T, @NonNull android.content.ContentProvider.PipeDataWriter<T>) throws java.io.FileNotFoundException;
-    method @Nullable public android.content.res.AssetFileDescriptor openTypedAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle) throws java.io.FileNotFoundException;
-    method @Nullable public android.content.res.AssetFileDescriptor openTypedAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method @Nullable public abstract android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String);
-    method @Nullable public android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String, @Nullable android.os.CancellationSignal);
-    method @Nullable public android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal);
-    method public boolean refresh(android.net.Uri, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal);
-    method @NonNull public final android.content.Context requireContext();
-    method public final void restoreCallingIdentity(@NonNull android.content.ContentProvider.CallingIdentity);
-    method protected final void setPathPermissions(@Nullable android.content.pm.PathPermission[]);
-    method protected final void setReadPermission(@Nullable String);
-    method protected final void setWritePermission(@Nullable String);
-    method public void shutdown();
-    method @Nullable public android.net.Uri uncanonicalize(@NonNull android.net.Uri);
-    method public abstract int update(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable String, @Nullable String[]);
-    method public int update(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable android.os.Bundle);
-  }
-
-  public final class ContentProvider.CallingIdentity {
-  }
-
-  public static interface ContentProvider.PipeDataWriter<T> {
-    method public void writeDataToPipe(@NonNull android.os.ParcelFileDescriptor, @NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable T);
-  }
-
-  public class ContentProviderClient implements java.lang.AutoCloseable {
-    method @NonNull public android.content.ContentProviderResult[] applyBatch(@NonNull java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException, android.os.RemoteException;
-    method @NonNull public android.content.ContentProviderResult[] applyBatch(@NonNull String, @NonNull java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException, android.os.RemoteException;
-    method public int bulkInsert(@NonNull android.net.Uri, @NonNull android.content.ContentValues[]) throws android.os.RemoteException;
-    method @Nullable public android.os.Bundle call(@NonNull String, @Nullable String, @Nullable android.os.Bundle) throws android.os.RemoteException;
-    method @Nullable public android.os.Bundle call(@NonNull String, @NonNull String, @Nullable String, @Nullable android.os.Bundle) throws android.os.RemoteException;
-    method @Nullable public final android.net.Uri canonicalize(@NonNull android.net.Uri) throws android.os.RemoteException;
-    method public void close();
-    method public int delete(@NonNull android.net.Uri, @Nullable String, @Nullable String[]) throws android.os.RemoteException;
-    method public int delete(@NonNull android.net.Uri, @Nullable android.os.Bundle) throws android.os.RemoteException;
-    method @Nullable public android.content.ContentProvider getLocalContentProvider();
-    method @Nullable public String[] getStreamTypes(@NonNull android.net.Uri, @NonNull String) throws android.os.RemoteException;
-    method @Nullable public String getType(@NonNull android.net.Uri) throws android.os.RemoteException;
-    method @Nullable public android.net.Uri insert(@NonNull android.net.Uri, @Nullable android.content.ContentValues) throws android.os.RemoteException;
-    method @Nullable public android.net.Uri insert(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable android.os.Bundle) throws android.os.RemoteException;
-    method @Nullable public android.content.res.AssetFileDescriptor openAssetFile(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException, android.os.RemoteException;
-    method @Nullable public android.content.res.AssetFileDescriptor openAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
-    method @Nullable public android.os.ParcelFileDescriptor openFile(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException, android.os.RemoteException;
-    method @Nullable public android.os.ParcelFileDescriptor openFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
-    method @Nullable public final android.content.res.AssetFileDescriptor openTypedAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
-    method @Nullable public final android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle) throws java.io.FileNotFoundException, android.os.RemoteException;
-    method @Nullable public final android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
-    method @Nullable public android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String) throws android.os.RemoteException;
-    method @Nullable public android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String, @Nullable android.os.CancellationSignal) throws android.os.RemoteException;
-    method @Nullable public android.database.Cursor query(@NonNull android.net.Uri, @Nullable String[], android.os.Bundle, @Nullable android.os.CancellationSignal) throws android.os.RemoteException;
-    method public boolean refresh(android.net.Uri, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws android.os.RemoteException;
-    method @Deprecated public boolean release();
-    method @Nullable public final android.net.Uri uncanonicalize(@NonNull android.net.Uri) throws android.os.RemoteException;
-    method public int update(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable String, @Nullable String[]) throws android.os.RemoteException;
-    method public int update(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable android.os.Bundle) throws android.os.RemoteException;
-  }
-
-  public class ContentProviderOperation implements android.os.Parcelable {
-    method @NonNull public android.content.ContentProviderResult apply(@NonNull android.content.ContentProvider, @NonNull android.content.ContentProviderResult[], int) throws android.content.OperationApplicationException;
-    method public int describeContents();
-    method @NonNull public android.net.Uri getUri();
-    method public boolean isAssertQuery();
-    method public boolean isCall();
-    method public boolean isDelete();
-    method public boolean isExceptionAllowed();
-    method public boolean isInsert();
-    method public boolean isReadOperation();
-    method public boolean isUpdate();
-    method public boolean isWriteOperation();
-    method public boolean isYieldAllowed();
-    method @NonNull public static android.content.ContentProviderOperation.Builder newAssertQuery(@NonNull android.net.Uri);
-    method @NonNull public static android.content.ContentProviderOperation.Builder newCall(@NonNull android.net.Uri, @Nullable String, @Nullable String);
-    method @NonNull public static android.content.ContentProviderOperation.Builder newDelete(@NonNull android.net.Uri);
-    method @NonNull public static android.content.ContentProviderOperation.Builder newInsert(@NonNull android.net.Uri);
-    method @NonNull public static android.content.ContentProviderOperation.Builder newUpdate(@NonNull android.net.Uri);
-    method @Nullable public android.os.Bundle resolveExtrasBackReferences(@NonNull android.content.ContentProviderResult[], int);
-    method @Nullable public String[] resolveSelectionArgsBackReferences(@NonNull android.content.ContentProviderResult[], int);
-    method @Nullable public android.content.ContentValues resolveValueBackReferences(@NonNull android.content.ContentProviderResult[], int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.ContentProviderOperation> CREATOR;
-  }
-
-  public static class ContentProviderOperation.Builder {
-    method @NonNull public android.content.ContentProviderOperation build();
-    method @NonNull public android.content.ContentProviderOperation.Builder withExceptionAllowed(boolean);
-    method @NonNull public android.content.ContentProviderOperation.Builder withExpectedCount(int);
-    method @NonNull public android.content.ContentProviderOperation.Builder withExtra(@NonNull String, @Nullable Object);
-    method @NonNull public android.content.ContentProviderOperation.Builder withExtraBackReference(@NonNull String, int);
-    method @NonNull public android.content.ContentProviderOperation.Builder withExtraBackReference(@NonNull String, int, @NonNull String);
-    method @NonNull public android.content.ContentProviderOperation.Builder withExtras(@NonNull android.os.Bundle);
-    method @NonNull public android.content.ContentProviderOperation.Builder withSelection(@Nullable String, @Nullable String[]);
-    method @NonNull public android.content.ContentProviderOperation.Builder withSelectionBackReference(int, int);
-    method @NonNull public android.content.ContentProviderOperation.Builder withSelectionBackReference(int, int, @NonNull String);
-    method @NonNull public android.content.ContentProviderOperation.Builder withValue(@NonNull String, @Nullable Object);
-    method @NonNull public android.content.ContentProviderOperation.Builder withValueBackReference(@NonNull String, int);
-    method @NonNull public android.content.ContentProviderOperation.Builder withValueBackReference(@NonNull String, int, @NonNull String);
-    method @NonNull public android.content.ContentProviderOperation.Builder withValueBackReferences(@NonNull android.content.ContentValues);
-    method @NonNull public android.content.ContentProviderOperation.Builder withValues(@NonNull android.content.ContentValues);
-    method @NonNull public android.content.ContentProviderOperation.Builder withYieldAllowed(boolean);
-  }
-
-  public class ContentProviderResult implements android.os.Parcelable {
-    ctor public ContentProviderResult(@NonNull android.net.Uri);
-    ctor public ContentProviderResult(int);
-    ctor public ContentProviderResult(@NonNull android.os.Bundle);
-    ctor public ContentProviderResult(@NonNull Throwable);
-    ctor public ContentProviderResult(android.os.Parcel);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.ContentProviderResult> CREATOR;
-    field @Nullable public final Integer count;
-    field @Nullable public final Throwable exception;
-    field @Nullable public final android.os.Bundle extras;
-    field @Nullable public final android.net.Uri uri;
-  }
-
-  public class ContentQueryMap extends java.util.Observable {
-    ctor public ContentQueryMap(android.database.Cursor, String, boolean, android.os.Handler);
-    method public void close();
-    method public java.util.Map<java.lang.String,android.content.ContentValues> getRows();
-    method public android.content.ContentValues getValues(String);
-    method public void requery();
-    method public void setKeepUpdated(boolean);
-  }
-
-  public abstract class ContentResolver {
-    ctor public ContentResolver(@Nullable android.content.Context);
-    method @Nullable public final android.content.ContentProviderClient acquireContentProviderClient(@NonNull android.net.Uri);
-    method @Nullable public final android.content.ContentProviderClient acquireContentProviderClient(@NonNull String);
-    method @Nullable public final android.content.ContentProviderClient acquireUnstableContentProviderClient(@NonNull android.net.Uri);
-    method @Nullable public final android.content.ContentProviderClient acquireUnstableContentProviderClient(@NonNull String);
-    method public static void addPeriodicSync(android.accounts.Account, String, android.os.Bundle, long);
-    method public static Object addStatusChangeListener(int, android.content.SyncStatusObserver);
-    method @NonNull public android.content.ContentProviderResult[] applyBatch(@NonNull String, @NonNull java.util.ArrayList<android.content.ContentProviderOperation>) throws android.content.OperationApplicationException, android.os.RemoteException;
-    method public final int bulkInsert(@NonNull @RequiresPermission.Write android.net.Uri, @NonNull android.content.ContentValues[]);
-    method @Nullable public final android.os.Bundle call(@NonNull android.net.Uri, @NonNull String, @Nullable String, @Nullable android.os.Bundle);
-    method @Nullable public final android.os.Bundle call(@NonNull String, @NonNull String, @Nullable String, @Nullable android.os.Bundle);
-    method @Deprecated public void cancelSync(android.net.Uri);
-    method public static void cancelSync(android.accounts.Account, String);
-    method public static void cancelSync(android.content.SyncRequest);
-    method @Nullable public final android.net.Uri canonicalize(@NonNull android.net.Uri);
-    method public final int delete(@NonNull @RequiresPermission.Write android.net.Uri, @Nullable String, @Nullable String[]);
-    method public final int delete(@NonNull @RequiresPermission.Write android.net.Uri, @Nullable android.os.Bundle);
-    method @Deprecated public static android.content.SyncInfo getCurrentSync();
-    method public static java.util.List<android.content.SyncInfo> getCurrentSyncs();
-    method public static int getIsSyncable(android.accounts.Account, String);
-    method public static boolean getMasterSyncAutomatically();
-    method @NonNull public java.util.List<android.content.UriPermission> getOutgoingPersistedUriPermissions();
-    method public static java.util.List<android.content.PeriodicSync> getPeriodicSyncs(android.accounts.Account, String);
-    method @NonNull public java.util.List<android.content.UriPermission> getPersistedUriPermissions();
-    method @Nullable public String[] getStreamTypes(@NonNull android.net.Uri, @NonNull String);
-    method public static android.content.SyncAdapterType[] getSyncAdapterTypes();
-    method public static boolean getSyncAutomatically(android.accounts.Account, String);
-    method @Nullable public final String getType(@NonNull android.net.Uri);
-    method @NonNull public final android.content.ContentResolver.MimeTypeInfo getTypeInfo(@NonNull String);
-    method @Nullable public final android.net.Uri insert(@NonNull @RequiresPermission.Write android.net.Uri, @Nullable android.content.ContentValues);
-    method @Nullable public final android.net.Uri insert(@NonNull @RequiresPermission.Write android.net.Uri, @Nullable android.content.ContentValues, @Nullable android.os.Bundle);
-    method public static boolean isSyncActive(android.accounts.Account, String);
-    method public static boolean isSyncPending(android.accounts.Account, String);
-    method @NonNull public android.graphics.Bitmap loadThumbnail(@NonNull android.net.Uri, @NonNull android.util.Size, @Nullable android.os.CancellationSignal) throws java.io.IOException;
-    method public void notifyChange(@NonNull android.net.Uri, @Nullable android.database.ContentObserver);
-    method @Deprecated public void notifyChange(@NonNull android.net.Uri, @Nullable android.database.ContentObserver, boolean);
-    method public void notifyChange(@NonNull android.net.Uri, @Nullable android.database.ContentObserver, int);
-    method public void notifyChange(@NonNull java.util.Collection<android.net.Uri>, @Nullable android.database.ContentObserver, int);
-    method @Nullable public final android.content.res.AssetFileDescriptor openAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method @Nullable public final android.content.res.AssetFileDescriptor openAssetFileDescriptor(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
-    method @Nullable public final android.content.res.AssetFileDescriptor openAssetFileDescriptor(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method @Nullable public final android.os.ParcelFileDescriptor openFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method @Nullable public final android.os.ParcelFileDescriptor openFileDescriptor(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
-    method @Nullable public final android.os.ParcelFileDescriptor openFileDescriptor(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method @Nullable public final java.io.InputStream openInputStream(@NonNull android.net.Uri) throws java.io.FileNotFoundException;
-    method @Nullable public final java.io.OutputStream openOutputStream(@NonNull android.net.Uri) throws java.io.FileNotFoundException;
-    method @Nullable public final java.io.OutputStream openOutputStream(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
-    method @Nullable public final android.content.res.AssetFileDescriptor openTypedAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method @Nullable public final android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle) throws java.io.FileNotFoundException;
-    method @Nullable public final android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method @Nullable public final android.database.Cursor query(@NonNull @RequiresPermission.Read android.net.Uri, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String);
-    method @Nullable public final android.database.Cursor query(@NonNull @RequiresPermission.Read android.net.Uri, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String, @Nullable android.os.CancellationSignal);
-    method @Nullable public final android.database.Cursor query(@NonNull @RequiresPermission.Read android.net.Uri, @Nullable String[], @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal);
-    method public final boolean refresh(@NonNull android.net.Uri, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal);
-    method public final void registerContentObserver(@NonNull android.net.Uri, boolean, @NonNull android.database.ContentObserver);
-    method public void releasePersistableUriPermission(@NonNull android.net.Uri, int);
-    method public static void removePeriodicSync(android.accounts.Account, String, android.os.Bundle);
-    method public static void removeStatusChangeListener(Object);
-    method public static void requestSync(android.accounts.Account, String, android.os.Bundle);
-    method public static void requestSync(android.content.SyncRequest);
-    method public static void setIsSyncable(android.accounts.Account, String, int);
-    method public static void setMasterSyncAutomatically(boolean);
-    method public static void setSyncAutomatically(android.accounts.Account, String, boolean);
-    method @Deprecated public void startSync(android.net.Uri, android.os.Bundle);
-    method public void takePersistableUriPermission(@NonNull android.net.Uri, int);
-    method @Nullable public final android.net.Uri uncanonicalize(@NonNull android.net.Uri);
-    method public final void unregisterContentObserver(@NonNull android.database.ContentObserver);
-    method public final int update(@NonNull @RequiresPermission.Write android.net.Uri, @Nullable android.content.ContentValues, @Nullable String, @Nullable String[]);
-    method public final int update(@NonNull @RequiresPermission.Write android.net.Uri, @Nullable android.content.ContentValues, @Nullable android.os.Bundle);
-    method public static void validateSyncExtrasBundle(android.os.Bundle);
-    method @NonNull public static android.content.ContentResolver wrap(@NonNull android.content.ContentProvider);
-    method @NonNull public static android.content.ContentResolver wrap(@NonNull android.content.ContentProviderClient);
-    field public static final String ANY_CURSOR_ITEM_TYPE = "vnd.android.cursor.item/*";
-    field public static final String CURSOR_DIR_BASE_TYPE = "vnd.android.cursor.dir";
-    field public static final String CURSOR_ITEM_BASE_TYPE = "vnd.android.cursor.item";
-    field public static final String EXTRA_HONORED_ARGS = "android.content.extra.HONORED_ARGS";
-    field public static final String EXTRA_REFRESH_SUPPORTED = "android.content.extra.REFRESH_SUPPORTED";
-    field public static final String EXTRA_SIZE = "android.content.extra.SIZE";
-    field public static final String EXTRA_TOTAL_COUNT = "android.content.extra.TOTAL_COUNT";
-    field public static final int NOTIFY_DELETE = 16; // 0x10
-    field public static final int NOTIFY_INSERT = 4; // 0x4
-    field public static final int NOTIFY_SKIP_NOTIFY_FOR_DESCENDANTS = 2; // 0x2
-    field public static final int NOTIFY_SYNC_TO_NETWORK = 1; // 0x1
-    field public static final int NOTIFY_UPDATE = 8; // 0x8
-    field public static final String QUERY_ARG_GROUP_COLUMNS = "android:query-arg-group-columns";
-    field public static final String QUERY_ARG_LIMIT = "android:query-arg-limit";
-    field public static final String QUERY_ARG_OFFSET = "android:query-arg-offset";
-    field public static final String QUERY_ARG_SORT_COLLATION = "android:query-arg-sort-collation";
-    field public static final String QUERY_ARG_SORT_COLUMNS = "android:query-arg-sort-columns";
-    field public static final String QUERY_ARG_SORT_DIRECTION = "android:query-arg-sort-direction";
-    field public static final String QUERY_ARG_SORT_LOCALE = "android:query-arg-sort-locale";
-    field public static final String QUERY_ARG_SQL_GROUP_BY = "android:query-arg-sql-group-by";
-    field public static final String QUERY_ARG_SQL_HAVING = "android:query-arg-sql-having";
-    field public static final String QUERY_ARG_SQL_LIMIT = "android:query-arg-sql-limit";
-    field public static final String QUERY_ARG_SQL_SELECTION = "android:query-arg-sql-selection";
-    field public static final String QUERY_ARG_SQL_SELECTION_ARGS = "android:query-arg-sql-selection-args";
-    field public static final String QUERY_ARG_SQL_SORT_ORDER = "android:query-arg-sql-sort-order";
-    field public static final int QUERY_SORT_DIRECTION_ASCENDING = 0; // 0x0
-    field public static final int QUERY_SORT_DIRECTION_DESCENDING = 1; // 0x1
-    field public static final String SCHEME_ANDROID_RESOURCE = "android.resource";
-    field public static final String SCHEME_CONTENT = "content";
-    field public static final String SCHEME_FILE = "file";
-    field @Deprecated public static final String SYNC_EXTRAS_ACCOUNT = "account";
-    field public static final String SYNC_EXTRAS_DISCARD_LOCAL_DELETIONS = "discard_deletions";
-    field public static final String SYNC_EXTRAS_DO_NOT_RETRY = "do_not_retry";
-    field public static final String SYNC_EXTRAS_EXPEDITED = "expedited";
-    field @Deprecated public static final String SYNC_EXTRAS_FORCE = "force";
-    field public static final String SYNC_EXTRAS_IGNORE_BACKOFF = "ignore_backoff";
-    field public static final String SYNC_EXTRAS_IGNORE_SETTINGS = "ignore_settings";
-    field public static final String SYNC_EXTRAS_INITIALIZE = "initialize";
-    field public static final String SYNC_EXTRAS_MANUAL = "force";
-    field public static final String SYNC_EXTRAS_OVERRIDE_TOO_MANY_DELETIONS = "deletions_override";
-    field public static final String SYNC_EXTRAS_REQUIRE_CHARGING = "require_charging";
-    field public static final String SYNC_EXTRAS_UPLOAD = "upload";
-    field public static final int SYNC_OBSERVER_TYPE_ACTIVE = 4; // 0x4
-    field public static final int SYNC_OBSERVER_TYPE_PENDING = 2; // 0x2
-    field public static final int SYNC_OBSERVER_TYPE_SETTINGS = 1; // 0x1
-  }
-
-  public static final class ContentResolver.MimeTypeInfo {
-    method @NonNull public CharSequence getContentDescription();
-    method @NonNull public android.graphics.drawable.Icon getIcon();
-    method @NonNull public CharSequence getLabel();
-  }
-
-  public class ContentUris {
-    ctor public ContentUris();
-    method @NonNull public static android.net.Uri.Builder appendId(@NonNull android.net.Uri.Builder, long);
-    method public static long parseId(@NonNull android.net.Uri);
-    method @NonNull public static android.net.Uri removeId(@NonNull android.net.Uri);
-    method @NonNull public static android.net.Uri withAppendedId(@NonNull android.net.Uri, long);
-  }
-
-  public final class ContentValues implements android.os.Parcelable {
-    ctor public ContentValues();
-    ctor public ContentValues(int);
-    ctor public ContentValues(android.content.ContentValues);
-    method public void clear();
-    method public boolean containsKey(String);
-    method public int describeContents();
-    method public Object get(String);
-    method public Boolean getAsBoolean(String);
-    method public Byte getAsByte(String);
-    method public byte[] getAsByteArray(String);
-    method public Double getAsDouble(String);
-    method public Float getAsFloat(String);
-    method public Integer getAsInteger(String);
-    method public Long getAsLong(String);
-    method public Short getAsShort(String);
-    method public String getAsString(String);
-    method public boolean isEmpty();
-    method public java.util.Set<java.lang.String> keySet();
-    method public void put(String, String);
-    method public void put(String, Byte);
-    method public void put(String, Short);
-    method public void put(String, Integer);
-    method public void put(String, Long);
-    method public void put(String, Float);
-    method public void put(String, Double);
-    method public void put(String, Boolean);
-    method public void put(String, byte[]);
-    method public void putAll(android.content.ContentValues);
-    method public void putNull(String);
-    method public void remove(String);
-    method public int size();
-    method public java.util.Set<java.util.Map.Entry<java.lang.String,java.lang.Object>> valueSet();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.ContentValues> CREATOR;
-    field public static final String TAG = "ContentValues";
-  }
-
-  public abstract class Context {
-    ctor public Context();
-    method public boolean bindIsolatedService(@NonNull @RequiresPermission android.content.Intent, int, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.content.ServiceConnection);
-    method public abstract boolean bindService(@RequiresPermission android.content.Intent, @NonNull android.content.ServiceConnection, int);
-    method public boolean bindService(@NonNull @RequiresPermission android.content.Intent, int, @NonNull java.util.concurrent.Executor, @NonNull android.content.ServiceConnection);
-    method @RequiresPermission(anyOf={"android.permission.INTERACT_ACROSS_USERS", android.Manifest.permission.INTERACT_ACROSS_PROFILES}) public boolean bindServiceAsUser(@NonNull @RequiresPermission android.content.Intent, @NonNull android.content.ServiceConnection, int, @NonNull android.os.UserHandle);
-    method @CheckResult(suggest="#enforceCallingOrSelfPermission(String,String)") public abstract int checkCallingOrSelfPermission(@NonNull String);
-    method @CheckResult(suggest="#enforceCallingOrSelfUriPermission(Uri,int,String)") public abstract int checkCallingOrSelfUriPermission(android.net.Uri, int);
-    method @CheckResult(suggest="#enforceCallingPermission(String,String)") public abstract int checkCallingPermission(@NonNull String);
-    method @CheckResult(suggest="#enforceCallingUriPermission(Uri,int,String)") public abstract int checkCallingUriPermission(android.net.Uri, int);
-    method @CheckResult(suggest="#enforcePermission(String,int,int,String)") public abstract int checkPermission(@NonNull String, int, int);
-    method public abstract int checkSelfPermission(@NonNull String);
-    method @CheckResult(suggest="#enforceUriPermission(Uri,int,int,String)") public abstract int checkUriPermission(android.net.Uri, int, int, int);
-    method @CheckResult(suggest="#enforceUriPermission(Uri,String,String,int,int,int,String)") public abstract int checkUriPermission(@Nullable android.net.Uri, @Nullable String, @Nullable String, int, int, int);
-    method @Deprecated public abstract void clearWallpaper() throws java.io.IOException;
-    method @NonNull public android.content.Context createAttributionContext(@Nullable String);
-    method public abstract android.content.Context createConfigurationContext(@NonNull android.content.res.Configuration);
-    method public abstract android.content.Context createContextForSplit(String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public abstract android.content.Context createDeviceProtectedStorageContext();
-    method public abstract android.content.Context createDisplayContext(@NonNull android.view.Display);
-    method public abstract android.content.Context createPackageContext(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public android.content.Context createWindowContext(int, @Nullable android.os.Bundle);
-    method public abstract String[] databaseList();
-    method public abstract boolean deleteDatabase(String);
-    method public abstract boolean deleteFile(String);
-    method public abstract boolean deleteSharedPreferences(String);
-    method public abstract void enforceCallingOrSelfPermission(@NonNull String, @Nullable String);
-    method public abstract void enforceCallingOrSelfUriPermission(android.net.Uri, int, String);
-    method public abstract void enforceCallingPermission(@NonNull String, @Nullable String);
-    method public abstract void enforceCallingUriPermission(android.net.Uri, int, String);
-    method public abstract void enforcePermission(@NonNull String, int, int, @Nullable String);
-    method public abstract void enforceUriPermission(android.net.Uri, int, int, int, String);
-    method public abstract void enforceUriPermission(@Nullable android.net.Uri, @Nullable String, @Nullable String, int, int, int, @Nullable String);
-    method public abstract String[] fileList();
-    method public abstract android.content.Context getApplicationContext();
-    method public abstract android.content.pm.ApplicationInfo getApplicationInfo();
-    method public abstract android.content.res.AssetManager getAssets();
-    method @Nullable public String getAttributionTag();
-    method public abstract java.io.File getCacheDir();
-    method public abstract ClassLoader getClassLoader();
-    method public abstract java.io.File getCodeCacheDir();
-    method @ColorInt public final int getColor(@ColorRes int);
-    method @NonNull public final android.content.res.ColorStateList getColorStateList(@ColorRes int);
-    method public abstract android.content.ContentResolver getContentResolver();
-    method public abstract java.io.File getDataDir();
-    method public abstract java.io.File getDatabasePath(String);
-    method public abstract java.io.File getDir(String, int);
-    method @Nullable public android.view.Display getDisplay();
-    method @Nullable public final android.graphics.drawable.Drawable getDrawable(@DrawableRes int);
-    method @Nullable public abstract java.io.File getExternalCacheDir();
-    method public abstract java.io.File[] getExternalCacheDirs();
-    method @Nullable public abstract java.io.File getExternalFilesDir(@Nullable String);
-    method public abstract java.io.File[] getExternalFilesDirs(String);
-    method @Deprecated public abstract java.io.File[] getExternalMediaDirs();
-    method public abstract java.io.File getFileStreamPath(String);
-    method public abstract java.io.File getFilesDir();
-    method public java.util.concurrent.Executor getMainExecutor();
-    method public abstract android.os.Looper getMainLooper();
-    method public abstract java.io.File getNoBackupFilesDir();
-    method public abstract java.io.File getObbDir();
-    method public abstract java.io.File[] getObbDirs();
-    method @NonNull public String getOpPackageName();
-    method public abstract String getPackageCodePath();
-    method public abstract android.content.pm.PackageManager getPackageManager();
-    method public abstract String getPackageName();
-    method public abstract String getPackageResourcePath();
-    method public abstract android.content.res.Resources getResources();
-    method public abstract android.content.SharedPreferences getSharedPreferences(String, int);
-    method @NonNull public final String getString(@StringRes int);
-    method @NonNull public final String getString(@StringRes int, java.lang.Object...);
-    method public abstract Object getSystemService(@NonNull String);
-    method public final <T> T getSystemService(@NonNull Class<T>);
-    method @Nullable public abstract String getSystemServiceName(@NonNull Class<?>);
-    method @NonNull public final CharSequence getText(@StringRes int);
-    method public abstract android.content.res.Resources.Theme getTheme();
-    method @Deprecated public abstract android.graphics.drawable.Drawable getWallpaper();
-    method @Deprecated public abstract int getWallpaperDesiredMinimumHeight();
-    method @Deprecated public abstract int getWallpaperDesiredMinimumWidth();
-    method public abstract void grantUriPermission(String, android.net.Uri, int);
-    method public abstract boolean isDeviceProtectedStorage();
-    method public boolean isRestricted();
-    method public abstract boolean moveDatabaseFrom(android.content.Context, String);
-    method public abstract boolean moveSharedPreferencesFrom(android.content.Context, String);
-    method @NonNull public final android.content.res.TypedArray obtainStyledAttributes(@NonNull @StyleableRes int[]);
-    method @NonNull public final android.content.res.TypedArray obtainStyledAttributes(@StyleRes int, @NonNull @StyleableRes int[]) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public final android.content.res.TypedArray obtainStyledAttributes(@Nullable android.util.AttributeSet, @NonNull @StyleableRes int[]);
-    method @NonNull public final android.content.res.TypedArray obtainStyledAttributes(@Nullable android.util.AttributeSet, @NonNull @StyleableRes int[], @AttrRes int, @StyleRes int);
-    method public abstract java.io.FileInputStream openFileInput(String) throws java.io.FileNotFoundException;
-    method public abstract java.io.FileOutputStream openFileOutput(String, int) throws java.io.FileNotFoundException;
-    method public abstract android.database.sqlite.SQLiteDatabase openOrCreateDatabase(String, int, android.database.sqlite.SQLiteDatabase.CursorFactory);
-    method public abstract android.database.sqlite.SQLiteDatabase openOrCreateDatabase(String, int, android.database.sqlite.SQLiteDatabase.CursorFactory, @Nullable android.database.DatabaseErrorHandler);
-    method @Deprecated public abstract android.graphics.drawable.Drawable peekWallpaper();
-    method public void registerComponentCallbacks(android.content.ComponentCallbacks);
-    method @Nullable public abstract android.content.Intent registerReceiver(@Nullable android.content.BroadcastReceiver, android.content.IntentFilter);
-    method @Nullable public abstract android.content.Intent registerReceiver(@Nullable android.content.BroadcastReceiver, android.content.IntentFilter, int);
-    method @Nullable public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, @Nullable String, @Nullable android.os.Handler);
-    method @Nullable public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, @Nullable String, @Nullable android.os.Handler, int);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.BROADCAST_STICKY) public abstract void removeStickyBroadcast(@RequiresPermission android.content.Intent);
-    method @Deprecated @RequiresPermission(allOf={"android.permission.INTERACT_ACROSS_USERS", android.Manifest.permission.BROADCAST_STICKY}) public abstract void removeStickyBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle);
-    method public abstract void revokeUriPermission(android.net.Uri, int);
-    method public abstract void revokeUriPermission(String, android.net.Uri, int);
-    method public abstract void sendBroadcast(@RequiresPermission android.content.Intent);
-    method public abstract void sendBroadcast(@RequiresPermission android.content.Intent, @Nullable String);
-    method @RequiresPermission("android.permission.INTERACT_ACROSS_USERS") public abstract void sendBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle);
-    method @RequiresPermission("android.permission.INTERACT_ACROSS_USERS") public abstract void sendBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle, @Nullable String);
-    method public void sendBroadcastWithMultiplePermissions(@NonNull android.content.Intent, @NonNull String[]);
-    method public abstract void sendOrderedBroadcast(@RequiresPermission android.content.Intent, @Nullable String);
-    method public abstract void sendOrderedBroadcast(@NonNull @RequiresPermission android.content.Intent, @Nullable String, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
-    method public void sendOrderedBroadcast(@NonNull android.content.Intent, @Nullable String, @Nullable String, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
-    method @RequiresPermission("android.permission.INTERACT_ACROSS_USERS") public abstract void sendOrderedBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle, @Nullable String, android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.BROADCAST_STICKY) public abstract void sendStickyBroadcast(@RequiresPermission android.content.Intent);
-    method @Deprecated @RequiresPermission(allOf={"android.permission.INTERACT_ACROSS_USERS", android.Manifest.permission.BROADCAST_STICKY}) public abstract void sendStickyBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.BROADCAST_STICKY) public abstract void sendStickyOrderedBroadcast(@RequiresPermission android.content.Intent, android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
-    method @Deprecated @RequiresPermission(allOf={"android.permission.INTERACT_ACROSS_USERS", android.Manifest.permission.BROADCAST_STICKY}) public abstract void sendStickyOrderedBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle, android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
-    method public abstract void setTheme(@StyleRes int);
-    method @Deprecated public abstract void setWallpaper(android.graphics.Bitmap) throws java.io.IOException;
-    method @Deprecated public abstract void setWallpaper(java.io.InputStream) throws java.io.IOException;
-    method public abstract void startActivities(@RequiresPermission android.content.Intent[]);
-    method public abstract void startActivities(@RequiresPermission android.content.Intent[], android.os.Bundle);
-    method public abstract void startActivity(@RequiresPermission android.content.Intent);
-    method public abstract void startActivity(@RequiresPermission android.content.Intent, @Nullable android.os.Bundle);
-    method @Nullable public abstract android.content.ComponentName startForegroundService(android.content.Intent);
-    method public abstract boolean startInstrumentation(@NonNull android.content.ComponentName, @Nullable String, @Nullable android.os.Bundle);
-    method public abstract void startIntentSender(android.content.IntentSender, @Nullable android.content.Intent, int, int, int) throws android.content.IntentSender.SendIntentException;
-    method public abstract void startIntentSender(android.content.IntentSender, @Nullable android.content.Intent, int, int, int, @Nullable android.os.Bundle) throws android.content.IntentSender.SendIntentException;
-    method @Nullable public abstract android.content.ComponentName startService(android.content.Intent);
-    method public abstract boolean stopService(android.content.Intent);
-    method public abstract void unbindService(@NonNull android.content.ServiceConnection);
-    method public void unregisterComponentCallbacks(android.content.ComponentCallbacks);
-    method public abstract void unregisterReceiver(android.content.BroadcastReceiver);
-    method public void updateServiceGroup(@NonNull android.content.ServiceConnection, int, int);
-    field public static final String ACCESSIBILITY_SERVICE = "accessibility";
-    field public static final String ACCOUNT_SERVICE = "account";
-    field public static final String ACTIVITY_SERVICE = "activity";
-    field public static final String ALARM_SERVICE = "alarm";
-    field public static final String APPWIDGET_SERVICE = "appwidget";
-    field public static final String APP_OPS_SERVICE = "appops";
-    field public static final String AUDIO_SERVICE = "audio";
-    field public static final String BATTERY_SERVICE = "batterymanager";
-    field public static final int BIND_ABOVE_CLIENT = 8; // 0x8
-    field public static final int BIND_ADJUST_WITH_ACTIVITY = 128; // 0x80
-    field public static final int BIND_ALLOW_OOM_MANAGEMENT = 16; // 0x10
-    field public static final int BIND_AUTO_CREATE = 1; // 0x1
-    field public static final int BIND_DEBUG_UNBIND = 2; // 0x2
-    field public static final int BIND_EXTERNAL_SERVICE = -2147483648; // 0x80000000
-    field public static final int BIND_IMPORTANT = 64; // 0x40
-    field public static final int BIND_INCLUDE_CAPABILITIES = 4096; // 0x1000
-    field public static final int BIND_NOT_FOREGROUND = 4; // 0x4
-    field public static final int BIND_NOT_PERCEPTIBLE = 256; // 0x100
-    field public static final int BIND_WAIVE_PRIORITY = 32; // 0x20
-    field public static final String BIOMETRIC_SERVICE = "biometric";
-    field public static final String BLOB_STORE_SERVICE = "blob_store";
-    field public static final String BLUETOOTH_SERVICE = "bluetooth";
-    field public static final String CAMERA_SERVICE = "camera";
-    field public static final String CAPTIONING_SERVICE = "captioning";
-    field public static final String CARRIER_CONFIG_SERVICE = "carrier_config";
-    field public static final String CLIPBOARD_SERVICE = "clipboard";
-    field public static final String COMPANION_DEVICE_SERVICE = "companiondevice";
-    field public static final String CONNECTIVITY_DIAGNOSTICS_SERVICE = "connectivity_diagnostics";
-    field public static final String CONNECTIVITY_SERVICE = "connectivity";
-    field public static final String CONSUMER_IR_SERVICE = "consumer_ir";
-    field public static final int CONTEXT_IGNORE_SECURITY = 2; // 0x2
-    field public static final int CONTEXT_INCLUDE_CODE = 1; // 0x1
-    field public static final int CONTEXT_RESTRICTED = 4; // 0x4
-    field public static final String CROSS_PROFILE_APPS_SERVICE = "crossprofileapps";
-    field public static final String DEVICE_POLICY_SERVICE = "device_policy";
-    field public static final String DISPLAY_SERVICE = "display";
-    field public static final String DOWNLOAD_SERVICE = "download";
-    field public static final String DROPBOX_SERVICE = "dropbox";
-    field public static final String EUICC_SERVICE = "euicc";
-    field public static final String FILE_INTEGRITY_SERVICE = "file_integrity";
-    field public static final String FINGERPRINT_SERVICE = "fingerprint";
-    field public static final String HARDWARE_PROPERTIES_SERVICE = "hardware_properties";
-    field public static final String INPUT_METHOD_SERVICE = "input_method";
-    field public static final String INPUT_SERVICE = "input";
-    field public static final String IPSEC_SERVICE = "ipsec";
-    field public static final String JOB_SCHEDULER_SERVICE = "jobscheduler";
-    field public static final String KEYGUARD_SERVICE = "keyguard";
-    field public static final String LAUNCHER_APPS_SERVICE = "launcherapps";
-    field public static final String LAYOUT_INFLATER_SERVICE = "layout_inflater";
-    field public static final String LOCATION_SERVICE = "location";
-    field public static final String MEDIA_PROJECTION_SERVICE = "media_projection";
-    field public static final String MEDIA_ROUTER_SERVICE = "media_router";
-    field public static final String MEDIA_SESSION_SERVICE = "media_session";
-    field public static final String MIDI_SERVICE = "midi";
-    field public static final int MODE_APPEND = 32768; // 0x8000
-    field public static final int MODE_ENABLE_WRITE_AHEAD_LOGGING = 8; // 0x8
-    field @Deprecated public static final int MODE_MULTI_PROCESS = 4; // 0x4
-    field public static final int MODE_NO_LOCALIZED_COLLATORS = 16; // 0x10
-    field public static final int MODE_PRIVATE = 0; // 0x0
-    field @Deprecated public static final int MODE_WORLD_READABLE = 1; // 0x1
-    field @Deprecated public static final int MODE_WORLD_WRITEABLE = 2; // 0x2
-    field public static final String NETWORK_STATS_SERVICE = "netstats";
-    field public static final String NFC_SERVICE = "nfc";
-    field public static final String NOTIFICATION_SERVICE = "notification";
-    field public static final String NSD_SERVICE = "servicediscovery";
-    field public static final String POWER_SERVICE = "power";
-    field public static final String PRINT_SERVICE = "print";
-    field public static final int RECEIVER_VISIBLE_TO_INSTANT_APPS = 1; // 0x1
-    field public static final String RESTRICTIONS_SERVICE = "restrictions";
-    field public static final String ROLE_SERVICE = "role";
-    field public static final String SEARCH_SERVICE = "search";
-    field public static final String SENSOR_SERVICE = "sensor";
-    field public static final String SHORTCUT_SERVICE = "shortcut";
-    field public static final String STORAGE_SERVICE = "storage";
-    field public static final String STORAGE_STATS_SERVICE = "storagestats";
-    field public static final String SYSTEM_HEALTH_SERVICE = "systemhealth";
-    field public static final String TELECOM_SERVICE = "telecom";
-    field public static final String TELEPHONY_IMS_SERVICE = "telephony_ims";
-    field public static final String TELEPHONY_SERVICE = "phone";
-    field public static final String TELEPHONY_SUBSCRIPTION_SERVICE = "telephony_subscription_service";
-    field public static final String TEXT_CLASSIFICATION_SERVICE = "textclassification";
-    field public static final String TEXT_SERVICES_MANAGER_SERVICE = "textservices";
-    field public static final String TV_INPUT_SERVICE = "tv_input";
-    field public static final String UI_MODE_SERVICE = "uimode";
-    field public static final String USAGE_STATS_SERVICE = "usagestats";
-    field public static final String USB_SERVICE = "usb";
-    field public static final String USER_SERVICE = "user";
-    field public static final String VIBRATOR_SERVICE = "vibrator";
-    field public static final String VPN_MANAGEMENT_SERVICE = "vpn_management";
-    field public static final String WALLPAPER_SERVICE = "wallpaper";
-    field public static final String WIFI_AWARE_SERVICE = "wifiaware";
-    field public static final String WIFI_P2P_SERVICE = "wifip2p";
-    field public static final String WIFI_RTT_RANGING_SERVICE = "wifirtt";
-    field public static final String WIFI_SERVICE = "wifi";
-    field public static final String WINDOW_SERVICE = "window";
-  }
-
-  public class ContextWrapper extends android.content.Context {
-    ctor public ContextWrapper(android.content.Context);
-    method protected void attachBaseContext(android.content.Context);
-    method public boolean bindService(android.content.Intent, android.content.ServiceConnection, int);
-    method public int checkCallingOrSelfPermission(String);
-    method public int checkCallingOrSelfUriPermission(android.net.Uri, int);
-    method public int checkCallingPermission(String);
-    method public int checkCallingUriPermission(android.net.Uri, int);
-    method public int checkPermission(String, int, int);
-    method public int checkSelfPermission(String);
-    method public int checkUriPermission(android.net.Uri, int, int, int);
-    method public int checkUriPermission(android.net.Uri, String, String, int, int, int);
-    method @Deprecated public void clearWallpaper() throws java.io.IOException;
-    method public android.content.Context createConfigurationContext(android.content.res.Configuration);
-    method public android.content.Context createContextForSplit(String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public android.content.Context createDeviceProtectedStorageContext();
-    method public android.content.Context createDisplayContext(android.view.Display);
-    method public android.content.Context createPackageContext(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public String[] databaseList();
-    method public boolean deleteDatabase(String);
-    method public boolean deleteFile(String);
-    method public boolean deleteSharedPreferences(String);
-    method public void enforceCallingOrSelfPermission(String, String);
-    method public void enforceCallingOrSelfUriPermission(android.net.Uri, int, String);
-    method public void enforceCallingPermission(String, String);
-    method public void enforceCallingUriPermission(android.net.Uri, int, String);
-    method public void enforcePermission(String, int, int, String);
-    method public void enforceUriPermission(android.net.Uri, int, int, int, String);
-    method public void enforceUriPermission(android.net.Uri, String, String, int, int, int, String);
-    method public String[] fileList();
-    method public android.content.Context getApplicationContext();
-    method public android.content.pm.ApplicationInfo getApplicationInfo();
-    method public android.content.res.AssetManager getAssets();
-    method public android.content.Context getBaseContext();
-    method public java.io.File getCacheDir();
-    method public ClassLoader getClassLoader();
-    method public java.io.File getCodeCacheDir();
-    method public android.content.ContentResolver getContentResolver();
-    method public java.io.File getDataDir();
-    method public java.io.File getDatabasePath(String);
-    method public java.io.File getDir(String, int);
-    method public java.io.File getExternalCacheDir();
-    method public java.io.File[] getExternalCacheDirs();
-    method public java.io.File getExternalFilesDir(String);
-    method public java.io.File[] getExternalFilesDirs(String);
-    method public java.io.File[] getExternalMediaDirs();
-    method public java.io.File getFileStreamPath(String);
-    method public java.io.File getFilesDir();
-    method public android.os.Looper getMainLooper();
-    method public java.io.File getNoBackupFilesDir();
-    method public java.io.File getObbDir();
-    method public java.io.File[] getObbDirs();
-    method public String getPackageCodePath();
-    method public android.content.pm.PackageManager getPackageManager();
-    method public String getPackageName();
-    method public String getPackageResourcePath();
-    method public android.content.res.Resources getResources();
-    method public android.content.SharedPreferences getSharedPreferences(String, int);
-    method public Object getSystemService(String);
-    method public String getSystemServiceName(Class<?>);
-    method public android.content.res.Resources.Theme getTheme();
-    method @Deprecated public android.graphics.drawable.Drawable getWallpaper();
-    method @Deprecated public int getWallpaperDesiredMinimumHeight();
-    method @Deprecated public int getWallpaperDesiredMinimumWidth();
-    method public void grantUriPermission(String, android.net.Uri, int);
-    method public boolean isDeviceProtectedStorage();
-    method public boolean moveDatabaseFrom(android.content.Context, String);
-    method public boolean moveSharedPreferencesFrom(android.content.Context, String);
-    method public java.io.FileInputStream openFileInput(String) throws java.io.FileNotFoundException;
-    method public java.io.FileOutputStream openFileOutput(String, int) throws java.io.FileNotFoundException;
-    method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(String, int, android.database.sqlite.SQLiteDatabase.CursorFactory);
-    method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(String, int, android.database.sqlite.SQLiteDatabase.CursorFactory, android.database.DatabaseErrorHandler);
-    method @Deprecated public android.graphics.drawable.Drawable peekWallpaper();
-    method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter);
-    method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, int);
-    method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, String, android.os.Handler);
-    method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, String, android.os.Handler, int);
-    method @Deprecated public void removeStickyBroadcast(android.content.Intent);
-    method @Deprecated public void removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle);
-    method public void revokeUriPermission(android.net.Uri, int);
-    method public void revokeUriPermission(String, android.net.Uri, int);
-    method public void sendBroadcast(android.content.Intent);
-    method public void sendBroadcast(android.content.Intent, String);
-    method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle);
-    method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, String);
-    method public void sendOrderedBroadcast(android.content.Intent, String);
-    method public void sendOrderedBroadcast(android.content.Intent, String, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
-    method public void sendOrderedBroadcast(@NonNull @RequiresPermission android.content.Intent, int, @Nullable String, @Nullable String, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, @Nullable String, @Nullable android.os.Bundle, @Nullable android.os.Bundle);
-    method public void sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, String, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
-    method @Deprecated public void sendStickyBroadcast(android.content.Intent);
-    method @Deprecated public void sendStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle);
-    method @Deprecated public void sendStickyOrderedBroadcast(android.content.Intent, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
-    method @Deprecated public void sendStickyOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
-    method public void setTheme(int);
-    method @Deprecated public void setWallpaper(android.graphics.Bitmap) throws java.io.IOException;
-    method @Deprecated public void setWallpaper(java.io.InputStream) throws java.io.IOException;
-    method public void startActivities(android.content.Intent[]);
-    method public void startActivities(android.content.Intent[], android.os.Bundle);
-    method public void startActivity(android.content.Intent);
-    method public void startActivity(android.content.Intent, android.os.Bundle);
-    method public android.content.ComponentName startForegroundService(android.content.Intent);
-    method public boolean startInstrumentation(android.content.ComponentName, String, android.os.Bundle);
-    method public void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int) throws android.content.IntentSender.SendIntentException;
-    method public void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException;
-    method public android.content.ComponentName startService(android.content.Intent);
-    method public boolean stopService(android.content.Intent);
-    method public void unbindService(android.content.ServiceConnection);
-    method public void unregisterReceiver(android.content.BroadcastReceiver);
-  }
-
-  @Deprecated public class CursorLoader extends android.content.AsyncTaskLoader<android.database.Cursor> {
-    ctor @Deprecated public CursorLoader(android.content.Context);
-    ctor @Deprecated public CursorLoader(android.content.Context, android.net.Uri, String[], String, String[], String);
-    method @Deprecated public void deliverResult(android.database.Cursor);
-    method @Deprecated public String[] getProjection();
-    method @Deprecated public String getSelection();
-    method @Deprecated public String[] getSelectionArgs();
-    method @Deprecated public String getSortOrder();
-    method @Deprecated public android.net.Uri getUri();
-    method @Deprecated public android.database.Cursor loadInBackground();
-    method @Deprecated public void onCanceled(android.database.Cursor);
-    method @Deprecated public void setProjection(String[]);
-    method @Deprecated public void setSelection(String);
-    method @Deprecated public void setSelectionArgs(String[]);
-    method @Deprecated public void setSortOrder(String);
-    method @Deprecated public void setUri(android.net.Uri);
-  }
-
-  public interface DialogInterface {
-    method public void cancel();
-    method public void dismiss();
-    field @Deprecated public static final int BUTTON1 = -1; // 0xffffffff
-    field @Deprecated public static final int BUTTON2 = -2; // 0xfffffffe
-    field @Deprecated public static final int BUTTON3 = -3; // 0xfffffffd
-    field public static final int BUTTON_NEGATIVE = -2; // 0xfffffffe
-    field public static final int BUTTON_NEUTRAL = -3; // 0xfffffffd
-    field public static final int BUTTON_POSITIVE = -1; // 0xffffffff
-  }
-
-  public static interface DialogInterface.OnCancelListener {
-    method public void onCancel(android.content.DialogInterface);
-  }
-
-  public static interface DialogInterface.OnClickListener {
-    method public void onClick(android.content.DialogInterface, int);
-  }
-
-  public static interface DialogInterface.OnDismissListener {
-    method public void onDismiss(android.content.DialogInterface);
-  }
-
-  public static interface DialogInterface.OnKeyListener {
-    method public boolean onKey(android.content.DialogInterface, int, android.view.KeyEvent);
-  }
-
-  public static interface DialogInterface.OnMultiChoiceClickListener {
-    method public void onClick(android.content.DialogInterface, int, boolean);
-  }
-
-  public static interface DialogInterface.OnShowListener {
-    method public void onShow(android.content.DialogInterface);
-  }
-
-  public final class Entity {
-    ctor public Entity(android.content.ContentValues);
-    method public void addSubValue(android.net.Uri, android.content.ContentValues);
-    method public android.content.ContentValues getEntityValues();
-    method public java.util.ArrayList<android.content.Entity.NamedContentValues> getSubValues();
-  }
-
-  public static class Entity.NamedContentValues {
-    ctor public Entity.NamedContentValues(android.net.Uri, android.content.ContentValues);
-    field public final android.net.Uri uri;
-    field public final android.content.ContentValues values;
-  }
-
-  public interface EntityIterator extends java.util.Iterator<android.content.Entity> {
-    method public void close();
-    method public void reset();
-  }
-
-  public class Intent implements java.lang.Cloneable android.os.Parcelable {
-    ctor public Intent();
-    ctor public Intent(android.content.Intent);
-    ctor public Intent(String);
-    ctor public Intent(String, android.net.Uri);
-    ctor public Intent(android.content.Context, Class<?>);
-    ctor public Intent(String, android.net.Uri, android.content.Context, Class<?>);
-    method @NonNull public android.content.Intent addCategory(String);
-    method @NonNull public android.content.Intent addFlags(int);
-    method public Object clone();
-    method @NonNull public android.content.Intent cloneFilter();
-    method public static android.content.Intent createChooser(android.content.Intent, CharSequence);
-    method public static android.content.Intent createChooser(android.content.Intent, CharSequence, android.content.IntentSender);
-    method public int describeContents();
-    method public int fillIn(@NonNull android.content.Intent, int);
-    method public boolean filterEquals(android.content.Intent);
-    method public int filterHashCode();
-    method @Nullable public String getAction();
-    method @Nullable public boolean[] getBooleanArrayExtra(String);
-    method public boolean getBooleanExtra(String, boolean);
-    method @Nullable public android.os.Bundle getBundleExtra(String);
-    method @Nullable public byte[] getByteArrayExtra(String);
-    method public byte getByteExtra(String, byte);
-    method public java.util.Set<java.lang.String> getCategories();
-    method @Nullable public char[] getCharArrayExtra(String);
-    method public char getCharExtra(String, char);
-    method @Nullable public CharSequence[] getCharSequenceArrayExtra(String);
-    method @Nullable public java.util.ArrayList<java.lang.CharSequence> getCharSequenceArrayListExtra(String);
-    method @Nullable public CharSequence getCharSequenceExtra(String);
-    method @Nullable public android.content.ClipData getClipData();
-    method @Nullable public android.content.ComponentName getComponent();
-    method @Nullable public android.net.Uri getData();
-    method @Nullable public String getDataString();
-    method @Nullable public double[] getDoubleArrayExtra(String);
-    method public double getDoubleExtra(String, double);
-    method @Nullable public android.os.Bundle getExtras();
-    method public int getFlags();
-    method @Nullable public float[] getFloatArrayExtra(String);
-    method public float getFloatExtra(String, float);
-    method @Nullable public String getIdentifier();
-    method @Nullable public int[] getIntArrayExtra(String);
-    method public int getIntExtra(String, int);
-    method @Nullable public java.util.ArrayList<java.lang.Integer> getIntegerArrayListExtra(String);
-    method @Deprecated public static android.content.Intent getIntent(String) throws java.net.URISyntaxException;
-    method public static android.content.Intent getIntentOld(String) throws java.net.URISyntaxException;
-    method @Nullable public long[] getLongArrayExtra(String);
-    method public long getLongExtra(String, long);
-    method @Nullable public String getPackage();
-    method @Nullable public android.os.Parcelable[] getParcelableArrayExtra(String);
-    method @Nullable public <T extends android.os.Parcelable> java.util.ArrayList<T> getParcelableArrayListExtra(String);
-    method @Nullable public <T extends android.os.Parcelable> T getParcelableExtra(String);
-    method @Nullable public String getScheme();
-    method @Nullable public android.content.Intent getSelector();
-    method @Nullable public java.io.Serializable getSerializableExtra(String);
-    method @Nullable public short[] getShortArrayExtra(String);
-    method public short getShortExtra(String, short);
-    method @Nullable public android.graphics.Rect getSourceBounds();
-    method @Nullable public String[] getStringArrayExtra(String);
-    method @Nullable public java.util.ArrayList<java.lang.String> getStringArrayListExtra(String);
-    method @Nullable public String getStringExtra(String);
-    method @Nullable public String getType();
-    method public boolean hasCategory(String);
-    method public boolean hasExtra(String);
-    method public boolean hasFileDescriptors();
-    method public static android.content.Intent makeMainActivity(android.content.ComponentName);
-    method public static android.content.Intent makeMainSelectorActivity(String, String);
-    method public static android.content.Intent makeRestartActivityTask(android.content.ComponentName);
-    method @Nullable public static String normalizeMimeType(@Nullable String);
-    method @NonNull public static android.content.Intent parseIntent(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, android.util.AttributeSet) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public static android.content.Intent parseUri(String, int) throws java.net.URISyntaxException;
-    method @NonNull public android.content.Intent putCharSequenceArrayListExtra(String, @Nullable java.util.ArrayList<java.lang.CharSequence>);
-    method @NonNull public android.content.Intent putExtra(String, boolean);
-    method @NonNull public android.content.Intent putExtra(String, byte);
-    method @NonNull public android.content.Intent putExtra(String, char);
-    method @NonNull public android.content.Intent putExtra(String, short);
-    method @NonNull public android.content.Intent putExtra(String, int);
-    method @NonNull public android.content.Intent putExtra(String, long);
-    method @NonNull public android.content.Intent putExtra(String, float);
-    method @NonNull public android.content.Intent putExtra(String, double);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable String);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable CharSequence);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable android.os.Parcelable);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable android.os.Parcelable[]);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable java.io.Serializable);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable boolean[]);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable byte[]);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable short[]);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable char[]);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable int[]);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable long[]);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable float[]);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable double[]);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable String[]);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable CharSequence[]);
-    method @NonNull public android.content.Intent putExtra(String, @Nullable android.os.Bundle);
-    method @NonNull public android.content.Intent putExtras(@NonNull android.content.Intent);
-    method @NonNull public android.content.Intent putExtras(@NonNull android.os.Bundle);
-    method @NonNull public android.content.Intent putIntegerArrayListExtra(String, @Nullable java.util.ArrayList<java.lang.Integer>);
-    method @NonNull public android.content.Intent putParcelableArrayListExtra(String, @Nullable java.util.ArrayList<? extends android.os.Parcelable>);
-    method @NonNull public android.content.Intent putStringArrayListExtra(String, @Nullable java.util.ArrayList<java.lang.String>);
-    method public void readFromParcel(android.os.Parcel);
-    method public void removeCategory(String);
-    method public void removeExtra(String);
-    method public void removeFlags(int);
-    method @NonNull public android.content.Intent replaceExtras(@NonNull android.content.Intent);
-    method @NonNull public android.content.Intent replaceExtras(@Nullable android.os.Bundle);
-    method public android.content.ComponentName resolveActivity(@NonNull android.content.pm.PackageManager);
-    method public android.content.pm.ActivityInfo resolveActivityInfo(@NonNull android.content.pm.PackageManager, int);
-    method @Nullable public String resolveType(@NonNull android.content.Context);
-    method @Nullable public String resolveType(@NonNull android.content.ContentResolver);
-    method @Nullable public String resolveTypeIfNeeded(@NonNull android.content.ContentResolver);
-    method @NonNull public android.content.Intent setAction(@Nullable String);
-    method @NonNull public android.content.Intent setClass(@NonNull android.content.Context, @NonNull Class<?>);
-    method @NonNull public android.content.Intent setClassName(@NonNull android.content.Context, @NonNull String);
-    method @NonNull public android.content.Intent setClassName(@NonNull String, @NonNull String);
-    method public void setClipData(@Nullable android.content.ClipData);
-    method @NonNull public android.content.Intent setComponent(@Nullable android.content.ComponentName);
-    method @NonNull public android.content.Intent setData(@Nullable android.net.Uri);
-    method @NonNull public android.content.Intent setDataAndNormalize(@NonNull android.net.Uri);
-    method @NonNull public android.content.Intent setDataAndType(@Nullable android.net.Uri, @Nullable String);
-    method @NonNull public android.content.Intent setDataAndTypeAndNormalize(@NonNull android.net.Uri, @Nullable String);
-    method public void setExtrasClassLoader(@Nullable ClassLoader);
-    method @NonNull public android.content.Intent setFlags(int);
-    method @NonNull public android.content.Intent setIdentifier(@Nullable String);
-    method @NonNull public android.content.Intent setPackage(@Nullable String);
-    method public void setSelector(@Nullable android.content.Intent);
-    method public void setSourceBounds(@Nullable android.graphics.Rect);
-    method @NonNull public android.content.Intent setType(@Nullable String);
-    method @NonNull public android.content.Intent setTypeAndNormalize(@Nullable String);
-    method @Deprecated public String toURI();
-    method public String toUri(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final String ACTION_AIRPLANE_MODE_CHANGED = "android.intent.action.AIRPLANE_MODE";
-    field public static final String ACTION_ALL_APPS = "android.intent.action.ALL_APPS";
-    field public static final String ACTION_ANSWER = "android.intent.action.ANSWER";
-    field public static final String ACTION_APPLICATION_PREFERENCES = "android.intent.action.APPLICATION_PREFERENCES";
-    field public static final String ACTION_APPLICATION_RESTRICTIONS_CHANGED = "android.intent.action.APPLICATION_RESTRICTIONS_CHANGED";
-    field public static final String ACTION_APP_ERROR = "android.intent.action.APP_ERROR";
-    field public static final String ACTION_ASSIST = "android.intent.action.ASSIST";
-    field public static final String ACTION_ATTACH_DATA = "android.intent.action.ATTACH_DATA";
-    field public static final String ACTION_AUTO_REVOKE_PERMISSIONS = "android.intent.action.AUTO_REVOKE_PERMISSIONS";
-    field public static final String ACTION_BATTERY_CHANGED = "android.intent.action.BATTERY_CHANGED";
-    field public static final String ACTION_BATTERY_LOW = "android.intent.action.BATTERY_LOW";
-    field public static final String ACTION_BATTERY_OKAY = "android.intent.action.BATTERY_OKAY";
-    field public static final String ACTION_BOOT_COMPLETED = "android.intent.action.BOOT_COMPLETED";
-    field public static final String ACTION_BUG_REPORT = "android.intent.action.BUG_REPORT";
-    field public static final String ACTION_CALL = "android.intent.action.CALL";
-    field public static final String ACTION_CALL_BUTTON = "android.intent.action.CALL_BUTTON";
-    field public static final String ACTION_CAMERA_BUTTON = "android.intent.action.CAMERA_BUTTON";
-    field public static final String ACTION_CARRIER_SETUP = "android.intent.action.CARRIER_SETUP";
-    field public static final String ACTION_CHOOSER = "android.intent.action.CHOOSER";
-    field public static final String ACTION_CLOSE_SYSTEM_DIALOGS = "android.intent.action.CLOSE_SYSTEM_DIALOGS";
-    field public static final String ACTION_CONFIGURATION_CHANGED = "android.intent.action.CONFIGURATION_CHANGED";
-    field public static final String ACTION_CREATE_DOCUMENT = "android.intent.action.CREATE_DOCUMENT";
-    field public static final String ACTION_CREATE_REMINDER = "android.intent.action.CREATE_REMINDER";
-    field public static final String ACTION_CREATE_SHORTCUT = "android.intent.action.CREATE_SHORTCUT";
-    field public static final String ACTION_DATE_CHANGED = "android.intent.action.DATE_CHANGED";
-    field public static final String ACTION_DEFAULT = "android.intent.action.VIEW";
-    field public static final String ACTION_DEFINE = "android.intent.action.DEFINE";
-    field public static final String ACTION_DELETE = "android.intent.action.DELETE";
-    field @Deprecated public static final String ACTION_DEVICE_STORAGE_LOW = "android.intent.action.DEVICE_STORAGE_LOW";
-    field @Deprecated public static final String ACTION_DEVICE_STORAGE_OK = "android.intent.action.DEVICE_STORAGE_OK";
-    field public static final String ACTION_DIAL = "android.intent.action.DIAL";
-    field public static final String ACTION_DOCK_EVENT = "android.intent.action.DOCK_EVENT";
-    field public static final String ACTION_DREAMING_STARTED = "android.intent.action.DREAMING_STARTED";
-    field public static final String ACTION_DREAMING_STOPPED = "android.intent.action.DREAMING_STOPPED";
-    field public static final String ACTION_EDIT = "android.intent.action.EDIT";
-    field public static final String ACTION_EXTERNAL_APPLICATIONS_AVAILABLE = "android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE";
-    field public static final String ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE = "android.intent.action.EXTERNAL_APPLICATIONS_UNAVAILABLE";
-    field public static final String ACTION_FACTORY_TEST = "android.intent.action.FACTORY_TEST";
-    field public static final String ACTION_GET_CONTENT = "android.intent.action.GET_CONTENT";
-    field public static final String ACTION_GET_RESTRICTION_ENTRIES = "android.intent.action.GET_RESTRICTION_ENTRIES";
-    field public static final String ACTION_GTALK_SERVICE_CONNECTED = "android.intent.action.GTALK_CONNECTED";
-    field public static final String ACTION_GTALK_SERVICE_DISCONNECTED = "android.intent.action.GTALK_DISCONNECTED";
-    field public static final String ACTION_HEADSET_PLUG = "android.intent.action.HEADSET_PLUG";
-    field public static final String ACTION_INPUT_METHOD_CHANGED = "android.intent.action.INPUT_METHOD_CHANGED";
-    field public static final String ACTION_INSERT = "android.intent.action.INSERT";
-    field public static final String ACTION_INSERT_OR_EDIT = "android.intent.action.INSERT_OR_EDIT";
-    field public static final String ACTION_INSTALL_FAILURE = "android.intent.action.INSTALL_FAILURE";
-    field @Deprecated public static final String ACTION_INSTALL_PACKAGE = "android.intent.action.INSTALL_PACKAGE";
-    field public static final String ACTION_LOCALE_CHANGED = "android.intent.action.LOCALE_CHANGED";
-    field public static final String ACTION_LOCKED_BOOT_COMPLETED = "android.intent.action.LOCKED_BOOT_COMPLETED";
-    field public static final String ACTION_MAIN = "android.intent.action.MAIN";
-    field public static final String ACTION_MANAGED_PROFILE_ADDED = "android.intent.action.MANAGED_PROFILE_ADDED";
-    field public static final String ACTION_MANAGED_PROFILE_AVAILABLE = "android.intent.action.MANAGED_PROFILE_AVAILABLE";
-    field public static final String ACTION_MANAGED_PROFILE_REMOVED = "android.intent.action.MANAGED_PROFILE_REMOVED";
-    field public static final String ACTION_MANAGED_PROFILE_UNAVAILABLE = "android.intent.action.MANAGED_PROFILE_UNAVAILABLE";
-    field public static final String ACTION_MANAGED_PROFILE_UNLOCKED = "android.intent.action.MANAGED_PROFILE_UNLOCKED";
-    field public static final String ACTION_MANAGE_NETWORK_USAGE = "android.intent.action.MANAGE_NETWORK_USAGE";
-    field public static final String ACTION_MANAGE_PACKAGE_STORAGE = "android.intent.action.MANAGE_PACKAGE_STORAGE";
-    field public static final String ACTION_MEDIA_BAD_REMOVAL = "android.intent.action.MEDIA_BAD_REMOVAL";
-    field public static final String ACTION_MEDIA_BUTTON = "android.intent.action.MEDIA_BUTTON";
-    field public static final String ACTION_MEDIA_CHECKING = "android.intent.action.MEDIA_CHECKING";
-    field public static final String ACTION_MEDIA_EJECT = "android.intent.action.MEDIA_EJECT";
-    field public static final String ACTION_MEDIA_MOUNTED = "android.intent.action.MEDIA_MOUNTED";
-    field public static final String ACTION_MEDIA_NOFS = "android.intent.action.MEDIA_NOFS";
-    field public static final String ACTION_MEDIA_REMOVED = "android.intent.action.MEDIA_REMOVED";
-    field public static final String ACTION_MEDIA_SCANNER_FINISHED = "android.intent.action.MEDIA_SCANNER_FINISHED";
-    field @Deprecated public static final String ACTION_MEDIA_SCANNER_SCAN_FILE = "android.intent.action.MEDIA_SCANNER_SCAN_FILE";
-    field public static final String ACTION_MEDIA_SCANNER_STARTED = "android.intent.action.MEDIA_SCANNER_STARTED";
-    field public static final String ACTION_MEDIA_SHARED = "android.intent.action.MEDIA_SHARED";
-    field public static final String ACTION_MEDIA_UNMOUNTABLE = "android.intent.action.MEDIA_UNMOUNTABLE";
-    field public static final String ACTION_MEDIA_UNMOUNTED = "android.intent.action.MEDIA_UNMOUNTED";
-    field public static final String ACTION_MY_PACKAGE_REPLACED = "android.intent.action.MY_PACKAGE_REPLACED";
-    field public static final String ACTION_MY_PACKAGE_SUSPENDED = "android.intent.action.MY_PACKAGE_SUSPENDED";
-    field public static final String ACTION_MY_PACKAGE_UNSUSPENDED = "android.intent.action.MY_PACKAGE_UNSUSPENDED";
-    field @Deprecated public static final String ACTION_NEW_OUTGOING_CALL = "android.intent.action.NEW_OUTGOING_CALL";
-    field public static final String ACTION_OPEN_DOCUMENT = "android.intent.action.OPEN_DOCUMENT";
-    field public static final String ACTION_OPEN_DOCUMENT_TREE = "android.intent.action.OPEN_DOCUMENT_TREE";
-    field public static final String ACTION_PACKAGES_SUSPENDED = "android.intent.action.PACKAGES_SUSPENDED";
-    field public static final String ACTION_PACKAGES_UNSUSPENDED = "android.intent.action.PACKAGES_UNSUSPENDED";
-    field public static final String ACTION_PACKAGE_ADDED = "android.intent.action.PACKAGE_ADDED";
-    field public static final String ACTION_PACKAGE_CHANGED = "android.intent.action.PACKAGE_CHANGED";
-    field public static final String ACTION_PACKAGE_DATA_CLEARED = "android.intent.action.PACKAGE_DATA_CLEARED";
-    field public static final String ACTION_PACKAGE_FIRST_LAUNCH = "android.intent.action.PACKAGE_FIRST_LAUNCH";
-    field public static final String ACTION_PACKAGE_FULLY_REMOVED = "android.intent.action.PACKAGE_FULLY_REMOVED";
-    field @Deprecated public static final String ACTION_PACKAGE_INSTALL = "android.intent.action.PACKAGE_INSTALL";
-    field public static final String ACTION_PACKAGE_NEEDS_VERIFICATION = "android.intent.action.PACKAGE_NEEDS_VERIFICATION";
-    field public static final String ACTION_PACKAGE_REMOVED = "android.intent.action.PACKAGE_REMOVED";
-    field public static final String ACTION_PACKAGE_REPLACED = "android.intent.action.PACKAGE_REPLACED";
-    field public static final String ACTION_PACKAGE_RESTARTED = "android.intent.action.PACKAGE_RESTARTED";
-    field public static final String ACTION_PACKAGE_VERIFIED = "android.intent.action.PACKAGE_VERIFIED";
-    field public static final String ACTION_PASTE = "android.intent.action.PASTE";
-    field public static final String ACTION_PICK = "android.intent.action.PICK";
-    field public static final String ACTION_PICK_ACTIVITY = "android.intent.action.PICK_ACTIVITY";
-    field public static final String ACTION_POWER_CONNECTED = "android.intent.action.ACTION_POWER_CONNECTED";
-    field public static final String ACTION_POWER_DISCONNECTED = "android.intent.action.ACTION_POWER_DISCONNECTED";
-    field public static final String ACTION_POWER_USAGE_SUMMARY = "android.intent.action.POWER_USAGE_SUMMARY";
-    field public static final String ACTION_PROCESS_TEXT = "android.intent.action.PROCESS_TEXT";
-    field public static final String ACTION_PROVIDER_CHANGED = "android.intent.action.PROVIDER_CHANGED";
-    field public static final String ACTION_QUICK_CLOCK = "android.intent.action.QUICK_CLOCK";
-    field public static final String ACTION_QUICK_VIEW = "android.intent.action.QUICK_VIEW";
-    field public static final String ACTION_REBOOT = "android.intent.action.REBOOT";
-    field public static final String ACTION_RUN = "android.intent.action.RUN";
-    field public static final String ACTION_SCREEN_OFF = "android.intent.action.SCREEN_OFF";
-    field public static final String ACTION_SCREEN_ON = "android.intent.action.SCREEN_ON";
-    field public static final String ACTION_SEARCH = "android.intent.action.SEARCH";
-    field public static final String ACTION_SEARCH_LONG_PRESS = "android.intent.action.SEARCH_LONG_PRESS";
-    field public static final String ACTION_SEND = "android.intent.action.SEND";
-    field public static final String ACTION_SENDTO = "android.intent.action.SENDTO";
-    field public static final String ACTION_SEND_MULTIPLE = "android.intent.action.SEND_MULTIPLE";
-    field public static final String ACTION_SET_WALLPAPER = "android.intent.action.SET_WALLPAPER";
-    field public static final String ACTION_SHOW_APP_INFO = "android.intent.action.SHOW_APP_INFO";
-    field public static final String ACTION_SHUTDOWN = "android.intent.action.ACTION_SHUTDOWN";
-    field public static final String ACTION_SYNC = "android.intent.action.SYNC";
-    field public static final String ACTION_SYSTEM_TUTORIAL = "android.intent.action.SYSTEM_TUTORIAL";
-    field public static final String ACTION_TIMEZONE_CHANGED = "android.intent.action.TIMEZONE_CHANGED";
-    field public static final String ACTION_TIME_CHANGED = "android.intent.action.TIME_SET";
-    field public static final String ACTION_TIME_TICK = "android.intent.action.TIME_TICK";
-    field public static final String ACTION_TRANSLATE = "android.intent.action.TRANSLATE";
-    field public static final String ACTION_UID_REMOVED = "android.intent.action.UID_REMOVED";
-    field @Deprecated public static final String ACTION_UMS_CONNECTED = "android.intent.action.UMS_CONNECTED";
-    field @Deprecated public static final String ACTION_UMS_DISCONNECTED = "android.intent.action.UMS_DISCONNECTED";
-    field @Deprecated public static final String ACTION_UNINSTALL_PACKAGE = "android.intent.action.UNINSTALL_PACKAGE";
-    field public static final String ACTION_USER_BACKGROUND = "android.intent.action.USER_BACKGROUND";
-    field public static final String ACTION_USER_FOREGROUND = "android.intent.action.USER_FOREGROUND";
-    field public static final String ACTION_USER_INITIALIZE = "android.intent.action.USER_INITIALIZE";
-    field public static final String ACTION_USER_PRESENT = "android.intent.action.USER_PRESENT";
-    field public static final String ACTION_USER_UNLOCKED = "android.intent.action.USER_UNLOCKED";
-    field public static final String ACTION_VIEW = "android.intent.action.VIEW";
-    field public static final String ACTION_VIEW_LOCUS = "android.intent.action.VIEW_LOCUS";
-    field @RequiresPermission(android.Manifest.permission.START_VIEW_PERMISSION_USAGE) public static final String ACTION_VIEW_PERMISSION_USAGE = "android.intent.action.VIEW_PERMISSION_USAGE";
-    field public static final String ACTION_VOICE_COMMAND = "android.intent.action.VOICE_COMMAND";
-    field @Deprecated public static final String ACTION_WALLPAPER_CHANGED = "android.intent.action.WALLPAPER_CHANGED";
-    field public static final String ACTION_WEB_SEARCH = "android.intent.action.WEB_SEARCH";
-    field public static final String CATEGORY_ACCESSIBILITY_SHORTCUT_TARGET = "android.intent.category.ACCESSIBILITY_SHORTCUT_TARGET";
-    field public static final String CATEGORY_ALTERNATIVE = "android.intent.category.ALTERNATIVE";
-    field public static final String CATEGORY_APP_BROWSER = "android.intent.category.APP_BROWSER";
-    field public static final String CATEGORY_APP_CALCULATOR = "android.intent.category.APP_CALCULATOR";
-    field public static final String CATEGORY_APP_CALENDAR = "android.intent.category.APP_CALENDAR";
-    field public static final String CATEGORY_APP_CONTACTS = "android.intent.category.APP_CONTACTS";
-    field public static final String CATEGORY_APP_EMAIL = "android.intent.category.APP_EMAIL";
-    field public static final String CATEGORY_APP_FILES = "android.intent.category.APP_FILES";
-    field public static final String CATEGORY_APP_GALLERY = "android.intent.category.APP_GALLERY";
-    field public static final String CATEGORY_APP_MAPS = "android.intent.category.APP_MAPS";
-    field public static final String CATEGORY_APP_MARKET = "android.intent.category.APP_MARKET";
-    field public static final String CATEGORY_APP_MESSAGING = "android.intent.category.APP_MESSAGING";
-    field public static final String CATEGORY_APP_MUSIC = "android.intent.category.APP_MUSIC";
-    field public static final String CATEGORY_BROWSABLE = "android.intent.category.BROWSABLE";
-    field public static final String CATEGORY_CAR_DOCK = "android.intent.category.CAR_DOCK";
-    field public static final String CATEGORY_CAR_MODE = "android.intent.category.CAR_MODE";
-    field public static final String CATEGORY_DEFAULT = "android.intent.category.DEFAULT";
-    field public static final String CATEGORY_DESK_DOCK = "android.intent.category.DESK_DOCK";
-    field public static final String CATEGORY_DEVELOPMENT_PREFERENCE = "android.intent.category.DEVELOPMENT_PREFERENCE";
-    field public static final String CATEGORY_EMBED = "android.intent.category.EMBED";
-    field public static final String CATEGORY_FRAMEWORK_INSTRUMENTATION_TEST = "android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST";
-    field public static final String CATEGORY_HE_DESK_DOCK = "android.intent.category.HE_DESK_DOCK";
-    field public static final String CATEGORY_HOME = "android.intent.category.HOME";
-    field public static final String CATEGORY_INFO = "android.intent.category.INFO";
-    field public static final String CATEGORY_LAUNCHER = "android.intent.category.LAUNCHER";
-    field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
-    field public static final String CATEGORY_LE_DESK_DOCK = "android.intent.category.LE_DESK_DOCK";
-    field public static final String CATEGORY_MONKEY = "android.intent.category.MONKEY";
-    field public static final String CATEGORY_OPENABLE = "android.intent.category.OPENABLE";
-    field public static final String CATEGORY_PREFERENCE = "android.intent.category.PREFERENCE";
-    field public static final String CATEGORY_SAMPLE_CODE = "android.intent.category.SAMPLE_CODE";
-    field public static final String CATEGORY_SECONDARY_HOME = "android.intent.category.SECONDARY_HOME";
-    field public static final String CATEGORY_SELECTED_ALTERNATIVE = "android.intent.category.SELECTED_ALTERNATIVE";
-    field public static final String CATEGORY_TAB = "android.intent.category.TAB";
-    field public static final String CATEGORY_TEST = "android.intent.category.TEST";
-    field public static final String CATEGORY_TYPED_OPENABLE = "android.intent.category.TYPED_OPENABLE";
-    field public static final String CATEGORY_UNIT_TEST = "android.intent.category.UNIT_TEST";
-    field public static final String CATEGORY_VOICE = "android.intent.category.VOICE";
-    field public static final String CATEGORY_VR_HOME = "android.intent.category.VR_HOME";
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.Intent> CREATOR;
-    field public static final String EXTRA_ALARM_COUNT = "android.intent.extra.ALARM_COUNT";
-    field public static final String EXTRA_ALLOW_MULTIPLE = "android.intent.extra.ALLOW_MULTIPLE";
-    field @Deprecated public static final String EXTRA_ALLOW_REPLACE = "android.intent.extra.ALLOW_REPLACE";
-    field public static final String EXTRA_ALTERNATE_INTENTS = "android.intent.extra.ALTERNATE_INTENTS";
-    field public static final String EXTRA_ASSIST_CONTEXT = "android.intent.extra.ASSIST_CONTEXT";
-    field public static final String EXTRA_ASSIST_INPUT_DEVICE_ID = "android.intent.extra.ASSIST_INPUT_DEVICE_ID";
-    field public static final String EXTRA_ASSIST_INPUT_HINT_KEYBOARD = "android.intent.extra.ASSIST_INPUT_HINT_KEYBOARD";
-    field public static final String EXTRA_ASSIST_PACKAGE = "android.intent.extra.ASSIST_PACKAGE";
-    field public static final String EXTRA_ASSIST_UID = "android.intent.extra.ASSIST_UID";
-    field public static final String EXTRA_AUTO_LAUNCH_SINGLE_CHOICE = "android.intent.extra.AUTO_LAUNCH_SINGLE_CHOICE";
-    field public static final String EXTRA_BCC = "android.intent.extra.BCC";
-    field public static final String EXTRA_BUG_REPORT = "android.intent.extra.BUG_REPORT";
-    field public static final String EXTRA_CC = "android.intent.extra.CC";
-    field @Deprecated public static final String EXTRA_CHANGED_COMPONENT_NAME = "android.intent.extra.changed_component_name";
-    field public static final String EXTRA_CHANGED_COMPONENT_NAME_LIST = "android.intent.extra.changed_component_name_list";
-    field public static final String EXTRA_CHANGED_PACKAGE_LIST = "android.intent.extra.changed_package_list";
-    field public static final String EXTRA_CHANGED_UID_LIST = "android.intent.extra.changed_uid_list";
-    field public static final String EXTRA_CHOOSER_REFINEMENT_INTENT_SENDER = "android.intent.extra.CHOOSER_REFINEMENT_INTENT_SENDER";
-    field public static final String EXTRA_CHOOSER_TARGETS = "android.intent.extra.CHOOSER_TARGETS";
-    field public static final String EXTRA_CHOSEN_COMPONENT = "android.intent.extra.CHOSEN_COMPONENT";
-    field public static final String EXTRA_CHOSEN_COMPONENT_INTENT_SENDER = "android.intent.extra.CHOSEN_COMPONENT_INTENT_SENDER";
-    field public static final String EXTRA_COMPONENT_NAME = "android.intent.extra.COMPONENT_NAME";
-    field public static final String EXTRA_CONTENT_ANNOTATIONS = "android.intent.extra.CONTENT_ANNOTATIONS";
-    field public static final String EXTRA_CONTENT_QUERY = "android.intent.extra.CONTENT_QUERY";
-    field public static final String EXTRA_DATA_REMOVED = "android.intent.extra.DATA_REMOVED";
-    field public static final String EXTRA_DOCK_STATE = "android.intent.extra.DOCK_STATE";
-    field public static final int EXTRA_DOCK_STATE_CAR = 2; // 0x2
-    field public static final int EXTRA_DOCK_STATE_DESK = 1; // 0x1
-    field public static final int EXTRA_DOCK_STATE_HE_DESK = 4; // 0x4
-    field public static final int EXTRA_DOCK_STATE_LE_DESK = 3; // 0x3
-    field public static final int EXTRA_DOCK_STATE_UNDOCKED = 0; // 0x0
-    field public static final String EXTRA_DONT_KILL_APP = "android.intent.extra.DONT_KILL_APP";
-    field public static final String EXTRA_DURATION_MILLIS = "android.intent.extra.DURATION_MILLIS";
-    field public static final String EXTRA_EMAIL = "android.intent.extra.EMAIL";
-    field public static final String EXTRA_EXCLUDE_COMPONENTS = "android.intent.extra.EXCLUDE_COMPONENTS";
-    field public static final String EXTRA_FROM_STORAGE = "android.intent.extra.FROM_STORAGE";
-    field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
-    field public static final String EXTRA_INDEX = "android.intent.extra.INDEX";
-    field public static final String EXTRA_INITIAL_INTENTS = "android.intent.extra.INITIAL_INTENTS";
-    field public static final String EXTRA_INSTALLER_PACKAGE_NAME = "android.intent.extra.INSTALLER_PACKAGE_NAME";
-    field public static final String EXTRA_INTENT = "android.intent.extra.INTENT";
-    field public static final String EXTRA_KEY_EVENT = "android.intent.extra.KEY_EVENT";
-    field public static final String EXTRA_LOCAL_ONLY = "android.intent.extra.LOCAL_ONLY";
-    field public static final String EXTRA_LOCUS_ID = "android.intent.extra.LOCUS_ID";
-    field public static final String EXTRA_MIME_TYPES = "android.intent.extra.MIME_TYPES";
-    field public static final String EXTRA_NOT_UNKNOWN_SOURCE = "android.intent.extra.NOT_UNKNOWN_SOURCE";
-    field public static final String EXTRA_ORIGINATING_URI = "android.intent.extra.ORIGINATING_URI";
-    field public static final String EXTRA_PACKAGE_NAME = "android.intent.extra.PACKAGE_NAME";
-    field public static final String EXTRA_PHONE_NUMBER = "android.intent.extra.PHONE_NUMBER";
-    field public static final String EXTRA_PROCESS_TEXT = "android.intent.extra.PROCESS_TEXT";
-    field public static final String EXTRA_PROCESS_TEXT_READONLY = "android.intent.extra.PROCESS_TEXT_READONLY";
-    field public static final String EXTRA_QUICK_VIEW_FEATURES = "android.intent.extra.QUICK_VIEW_FEATURES";
-    field public static final String EXTRA_QUIET_MODE = "android.intent.extra.QUIET_MODE";
-    field public static final String EXTRA_REFERRER = "android.intent.extra.REFERRER";
-    field public static final String EXTRA_REFERRER_NAME = "android.intent.extra.REFERRER_NAME";
-    field public static final String EXTRA_REMOTE_INTENT_TOKEN = "android.intent.extra.remote_intent_token";
-    field public static final String EXTRA_REPLACEMENT_EXTRAS = "android.intent.extra.REPLACEMENT_EXTRAS";
-    field public static final String EXTRA_REPLACING = "android.intent.extra.REPLACING";
-    field public static final String EXTRA_RESTRICTIONS_BUNDLE = "android.intent.extra.restrictions_bundle";
-    field public static final String EXTRA_RESTRICTIONS_INTENT = "android.intent.extra.restrictions_intent";
-    field public static final String EXTRA_RESTRICTIONS_LIST = "android.intent.extra.restrictions_list";
-    field public static final String EXTRA_RESULT_RECEIVER = "android.intent.extra.RESULT_RECEIVER";
-    field public static final String EXTRA_RETURN_RESULT = "android.intent.extra.RETURN_RESULT";
-    field @Deprecated public static final String EXTRA_SHORTCUT_ICON = "android.intent.extra.shortcut.ICON";
-    field @Deprecated public static final String EXTRA_SHORTCUT_ICON_RESOURCE = "android.intent.extra.shortcut.ICON_RESOURCE";
-    field public static final String EXTRA_SHORTCUT_ID = "android.intent.extra.shortcut.ID";
-    field @Deprecated public static final String EXTRA_SHORTCUT_INTENT = "android.intent.extra.shortcut.INTENT";
-    field @Deprecated public static final String EXTRA_SHORTCUT_NAME = "android.intent.extra.shortcut.NAME";
-    field public static final String EXTRA_SHUTDOWN_USERSPACE_ONLY = "android.intent.extra.SHUTDOWN_USERSPACE_ONLY";
-    field public static final String EXTRA_SPLIT_NAME = "android.intent.extra.SPLIT_NAME";
-    field public static final String EXTRA_STREAM = "android.intent.extra.STREAM";
-    field public static final String EXTRA_SUBJECT = "android.intent.extra.SUBJECT";
-    field public static final String EXTRA_SUSPENDED_PACKAGE_EXTRAS = "android.intent.extra.SUSPENDED_PACKAGE_EXTRAS";
-    field public static final String EXTRA_TEMPLATE = "android.intent.extra.TEMPLATE";
-    field public static final String EXTRA_TEXT = "android.intent.extra.TEXT";
-    field public static final String EXTRA_TIME = "android.intent.extra.TIME";
-    field public static final String EXTRA_TIMEZONE = "time-zone";
-    field public static final String EXTRA_TITLE = "android.intent.extra.TITLE";
-    field public static final String EXTRA_UID = "android.intent.extra.UID";
-    field public static final String EXTRA_USER = "android.intent.extra.USER";
-    field public static final int FILL_IN_ACTION = 1; // 0x1
-    field public static final int FILL_IN_CATEGORIES = 4; // 0x4
-    field public static final int FILL_IN_CLIP_DATA = 128; // 0x80
-    field public static final int FILL_IN_COMPONENT = 8; // 0x8
-    field public static final int FILL_IN_DATA = 2; // 0x2
-    field public static final int FILL_IN_IDENTIFIER = 256; // 0x100
-    field public static final int FILL_IN_PACKAGE = 16; // 0x10
-    field public static final int FILL_IN_SELECTOR = 64; // 0x40
-    field public static final int FILL_IN_SOURCE_BOUNDS = 32; // 0x20
-    field public static final int FLAG_ACTIVITY_BROUGHT_TO_FRONT = 4194304; // 0x400000
-    field public static final int FLAG_ACTIVITY_CLEAR_TASK = 32768; // 0x8000
-    field public static final int FLAG_ACTIVITY_CLEAR_TOP = 67108864; // 0x4000000
-    field @Deprecated public static final int FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET = 524288; // 0x80000
-    field public static final int FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS = 8388608; // 0x800000
-    field public static final int FLAG_ACTIVITY_FORWARD_RESULT = 33554432; // 0x2000000
-    field public static final int FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY = 1048576; // 0x100000
-    field public static final int FLAG_ACTIVITY_LAUNCH_ADJACENT = 4096; // 0x1000
-    field public static final int FLAG_ACTIVITY_MATCH_EXTERNAL = 2048; // 0x800
-    field public static final int FLAG_ACTIVITY_MULTIPLE_TASK = 134217728; // 0x8000000
-    field public static final int FLAG_ACTIVITY_NEW_DOCUMENT = 524288; // 0x80000
-    field public static final int FLAG_ACTIVITY_NEW_TASK = 268435456; // 0x10000000
-    field public static final int FLAG_ACTIVITY_NO_ANIMATION = 65536; // 0x10000
-    field public static final int FLAG_ACTIVITY_NO_HISTORY = 1073741824; // 0x40000000
-    field public static final int FLAG_ACTIVITY_NO_USER_ACTION = 262144; // 0x40000
-    field public static final int FLAG_ACTIVITY_PREVIOUS_IS_TOP = 16777216; // 0x1000000
-    field public static final int FLAG_ACTIVITY_REORDER_TO_FRONT = 131072; // 0x20000
-    field public static final int FLAG_ACTIVITY_REQUIRE_DEFAULT = 512; // 0x200
-    field public static final int FLAG_ACTIVITY_REQUIRE_NON_BROWSER = 1024; // 0x400
-    field public static final int FLAG_ACTIVITY_RESET_TASK_IF_NEEDED = 2097152; // 0x200000
-    field public static final int FLAG_ACTIVITY_RETAIN_IN_RECENTS = 8192; // 0x2000
-    field public static final int FLAG_ACTIVITY_SINGLE_TOP = 536870912; // 0x20000000
-    field public static final int FLAG_ACTIVITY_TASK_ON_HOME = 16384; // 0x4000
-    field public static final int FLAG_DEBUG_LOG_RESOLUTION = 8; // 0x8
-    field public static final int FLAG_DIRECT_BOOT_AUTO = 256; // 0x100
-    field public static final int FLAG_EXCLUDE_STOPPED_PACKAGES = 16; // 0x10
-    field public static final int FLAG_FROM_BACKGROUND = 4; // 0x4
-    field public static final int FLAG_GRANT_PERSISTABLE_URI_PERMISSION = 64; // 0x40
-    field public static final int FLAG_GRANT_PREFIX_URI_PERMISSION = 128; // 0x80
-    field public static final int FLAG_GRANT_READ_URI_PERMISSION = 1; // 0x1
-    field public static final int FLAG_GRANT_WRITE_URI_PERMISSION = 2; // 0x2
-    field public static final int FLAG_INCLUDE_STOPPED_PACKAGES = 32; // 0x20
-    field public static final int FLAG_RECEIVER_FOREGROUND = 268435456; // 0x10000000
-    field public static final int FLAG_RECEIVER_NO_ABORT = 134217728; // 0x8000000
-    field public static final int FLAG_RECEIVER_REGISTERED_ONLY = 1073741824; // 0x40000000
-    field public static final int FLAG_RECEIVER_REPLACE_PENDING = 536870912; // 0x20000000
-    field public static final int FLAG_RECEIVER_VISIBLE_TO_INSTANT_APPS = 2097152; // 0x200000
-    field public static final String METADATA_DOCK_HOME = "android.dock_home";
-    field public static final int URI_ALLOW_UNSAFE = 4; // 0x4
-    field public static final int URI_ANDROID_APP_SCHEME = 2; // 0x2
-    field public static final int URI_INTENT_SCHEME = 1; // 0x1
-  }
-
-  public static final class Intent.FilterComparison {
-    ctor public Intent.FilterComparison(android.content.Intent);
-    method public android.content.Intent getIntent();
-  }
-
-  public static class Intent.ShortcutIconResource implements android.os.Parcelable {
-    ctor public Intent.ShortcutIconResource();
-    method public int describeContents();
-    method public static android.content.Intent.ShortcutIconResource fromContext(android.content.Context, @AnyRes int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.Intent.ShortcutIconResource> CREATOR;
-    field public String packageName;
-    field public String resourceName;
-  }
-
-  public class IntentFilter implements android.os.Parcelable {
-    ctor public IntentFilter();
-    ctor public IntentFilter(String);
-    ctor public IntentFilter(String, String) throws android.content.IntentFilter.MalformedMimeTypeException;
-    ctor public IntentFilter(android.content.IntentFilter);
-    method public final java.util.Iterator<java.lang.String> actionsIterator();
-    method public final void addAction(String);
-    method public final void addCategory(String);
-    method public final void addDataAuthority(String, String);
-    method public final void addDataPath(String, int);
-    method public final void addDataScheme(String);
-    method public final void addDataSchemeSpecificPart(String, int);
-    method public final void addDataType(String) throws android.content.IntentFilter.MalformedMimeTypeException;
-    method public final java.util.Iterator<android.content.IntentFilter.AuthorityEntry> authoritiesIterator();
-    method public final java.util.Iterator<java.lang.String> categoriesIterator();
-    method public final int countActions();
-    method public final int countCategories();
-    method public final int countDataAuthorities();
-    method public final int countDataPaths();
-    method public final int countDataSchemeSpecificParts();
-    method public final int countDataSchemes();
-    method public final int countDataTypes();
-    method public static android.content.IntentFilter create(String, String);
-    method public final int describeContents();
-    method public void dump(android.util.Printer, String);
-    method public final String getAction(int);
-    method public final String getCategory(int);
-    method public final android.content.IntentFilter.AuthorityEntry getDataAuthority(int);
-    method public final android.os.PatternMatcher getDataPath(int);
-    method public final String getDataScheme(int);
-    method public final android.os.PatternMatcher getDataSchemeSpecificPart(int);
-    method public final String getDataType(int);
-    method public final int getPriority();
-    method public final boolean hasAction(String);
-    method public final boolean hasCategory(String);
-    method public final boolean hasDataAuthority(android.net.Uri);
-    method public final boolean hasDataPath(String);
-    method public final boolean hasDataScheme(String);
-    method public final boolean hasDataSchemeSpecificPart(String);
-    method public final boolean hasDataType(String);
-    method public final int match(android.content.ContentResolver, android.content.Intent, boolean, String);
-    method public final int match(String, String, String, android.net.Uri, java.util.Set<java.lang.String>, String);
-    method public final boolean matchAction(String);
-    method public final String matchCategories(java.util.Set<java.lang.String>);
-    method public final int matchData(String, String, android.net.Uri);
-    method public final int matchDataAuthority(android.net.Uri);
-    method public final java.util.Iterator<android.os.PatternMatcher> pathsIterator();
-    method public void readFromXml(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public final java.util.Iterator<android.os.PatternMatcher> schemeSpecificPartsIterator();
-    method public final java.util.Iterator<java.lang.String> schemesIterator();
-    method public final void setPriority(int);
-    method public final java.util.Iterator<java.lang.String> typesIterator();
-    method public final void writeToParcel(android.os.Parcel, int);
-    method public void writeToXml(org.xmlpull.v1.XmlSerializer) throws java.io.IOException;
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.IntentFilter> CREATOR;
-    field public static final int MATCH_ADJUSTMENT_MASK = 65535; // 0xffff
-    field public static final int MATCH_ADJUSTMENT_NORMAL = 32768; // 0x8000
-    field public static final int MATCH_CATEGORY_EMPTY = 1048576; // 0x100000
-    field public static final int MATCH_CATEGORY_HOST = 3145728; // 0x300000
-    field public static final int MATCH_CATEGORY_MASK = 268369920; // 0xfff0000
-    field public static final int MATCH_CATEGORY_PATH = 5242880; // 0x500000
-    field public static final int MATCH_CATEGORY_PORT = 4194304; // 0x400000
-    field public static final int MATCH_CATEGORY_SCHEME = 2097152; // 0x200000
-    field public static final int MATCH_CATEGORY_SCHEME_SPECIFIC_PART = 5767168; // 0x580000
-    field public static final int MATCH_CATEGORY_TYPE = 6291456; // 0x600000
-    field public static final int NO_MATCH_ACTION = -3; // 0xfffffffd
-    field public static final int NO_MATCH_CATEGORY = -4; // 0xfffffffc
-    field public static final int NO_MATCH_DATA = -2; // 0xfffffffe
-    field public static final int NO_MATCH_TYPE = -1; // 0xffffffff
-    field public static final int SYSTEM_HIGH_PRIORITY = 1000; // 0x3e8
-    field public static final int SYSTEM_LOW_PRIORITY = -1000; // 0xfffffc18
-  }
-
-  public static final class IntentFilter.AuthorityEntry {
-    ctor public IntentFilter.AuthorityEntry(String, String);
-    method public String getHost();
-    method public int getPort();
-    method public int match(android.net.Uri);
-  }
-
-  public static class IntentFilter.MalformedMimeTypeException extends android.util.AndroidException {
-    ctor public IntentFilter.MalformedMimeTypeException();
-    ctor public IntentFilter.MalformedMimeTypeException(String);
-  }
-
-  public class IntentSender implements android.os.Parcelable {
-    method public int describeContents();
-    method public String getCreatorPackage();
-    method public int getCreatorUid();
-    method public android.os.UserHandle getCreatorUserHandle();
-    method @Deprecated public String getTargetPackage();
-    method public static android.content.IntentSender readIntentSenderOrNullFromParcel(android.os.Parcel);
-    method public void sendIntent(android.content.Context, int, android.content.Intent, android.content.IntentSender.OnFinished, android.os.Handler) throws android.content.IntentSender.SendIntentException;
-    method public void sendIntent(android.content.Context, int, android.content.Intent, android.content.IntentSender.OnFinished, android.os.Handler, String) throws android.content.IntentSender.SendIntentException;
-    method public static void writeIntentSenderOrNullToParcel(android.content.IntentSender, android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.IntentSender> CREATOR;
-  }
-
-  public static interface IntentSender.OnFinished {
-    method public void onSendFinished(android.content.IntentSender, android.content.Intent, int, String, android.os.Bundle);
-  }
-
-  public static class IntentSender.SendIntentException extends android.util.AndroidException {
-    ctor public IntentSender.SendIntentException();
-    ctor public IntentSender.SendIntentException(String);
-    ctor public IntentSender.SendIntentException(Exception);
-  }
-
-  @Deprecated public class Loader<D> {
-    ctor @Deprecated public Loader(android.content.Context);
-    method @Deprecated public void abandon();
-    method @Deprecated public boolean cancelLoad();
-    method @Deprecated public void commitContentChanged();
-    method @Deprecated public String dataToString(D);
-    method @Deprecated public void deliverCancellation();
-    method @Deprecated public void deliverResult(D);
-    method @Deprecated public void dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method @Deprecated public void forceLoad();
-    method @Deprecated public android.content.Context getContext();
-    method @Deprecated public int getId();
-    method @Deprecated public boolean isAbandoned();
-    method @Deprecated public boolean isReset();
-    method @Deprecated public boolean isStarted();
-    method @Deprecated protected void onAbandon();
-    method @Deprecated protected boolean onCancelLoad();
-    method @Deprecated public void onContentChanged();
-    method @Deprecated protected void onForceLoad();
-    method @Deprecated protected void onReset();
-    method @Deprecated protected void onStartLoading();
-    method @Deprecated protected void onStopLoading();
-    method @Deprecated public void registerListener(int, android.content.Loader.OnLoadCompleteListener<D>);
-    method @Deprecated public void registerOnLoadCanceledListener(android.content.Loader.OnLoadCanceledListener<D>);
-    method @Deprecated public void reset();
-    method @Deprecated public void rollbackContentChanged();
-    method @Deprecated public final void startLoading();
-    method @Deprecated public void stopLoading();
-    method @Deprecated public boolean takeContentChanged();
-    method @Deprecated public void unregisterListener(android.content.Loader.OnLoadCompleteListener<D>);
-    method @Deprecated public void unregisterOnLoadCanceledListener(android.content.Loader.OnLoadCanceledListener<D>);
-  }
-
-  @Deprecated public final class Loader.ForceLoadContentObserver extends android.database.ContentObserver {
-    ctor @Deprecated public Loader.ForceLoadContentObserver();
-  }
-
-  @Deprecated public static interface Loader.OnLoadCanceledListener<D> {
-    method @Deprecated public void onLoadCanceled(android.content.Loader<D>);
-  }
-
-  @Deprecated public static interface Loader.OnLoadCompleteListener<D> {
-    method @Deprecated public void onLoadComplete(android.content.Loader<D>, D);
-  }
-
-  public final class LocusId implements android.os.Parcelable {
-    ctor public LocusId(@NonNull String);
-    method public int describeContents();
-    method @NonNull public String getId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.LocusId> CREATOR;
-  }
-
-  public class MutableContextWrapper extends android.content.ContextWrapper {
-    ctor public MutableContextWrapper(android.content.Context);
-    method public void setBaseContext(android.content.Context);
-  }
-
-  public class OperationApplicationException extends java.lang.Exception {
-    ctor public OperationApplicationException();
-    ctor public OperationApplicationException(String);
-    ctor public OperationApplicationException(String, Throwable);
-    ctor public OperationApplicationException(Throwable);
-    ctor public OperationApplicationException(int);
-    ctor public OperationApplicationException(String, int);
-    method public int getNumSuccessfulYieldPoints();
-  }
-
-  public class PeriodicSync implements android.os.Parcelable {
-    ctor public PeriodicSync(android.accounts.Account, String, android.os.Bundle, long);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.PeriodicSync> CREATOR;
-    field public final android.accounts.Account account;
-    field public final String authority;
-    field public final android.os.Bundle extras;
-    field public final long period;
-  }
-
-  public class QuickViewConstants {
-    field public static final String FEATURE_DELETE = "android:delete";
-    field public static final String FEATURE_DOWNLOAD = "android:download";
-    field public static final String FEATURE_EDIT = "android:edit";
-    field public static final String FEATURE_PRINT = "android:print";
-    field public static final String FEATURE_SEND = "android:send";
-    field public static final String FEATURE_VIEW = "android:view";
-  }
-
-  public class ReceiverCallNotAllowedException extends android.util.AndroidRuntimeException {
-    ctor public ReceiverCallNotAllowedException(String);
-  }
-
-  public class RestrictionEntry implements android.os.Parcelable {
-    ctor public RestrictionEntry(int, String);
-    ctor public RestrictionEntry(String, String);
-    ctor public RestrictionEntry(String, boolean);
-    ctor public RestrictionEntry(String, String[]);
-    ctor public RestrictionEntry(String, int);
-    ctor public RestrictionEntry(android.os.Parcel);
-    method public static android.content.RestrictionEntry createBundleArrayEntry(String, android.content.RestrictionEntry[]);
-    method public static android.content.RestrictionEntry createBundleEntry(String, android.content.RestrictionEntry[]);
-    method public int describeContents();
-    method public String[] getAllSelectedStrings();
-    method public String[] getChoiceEntries();
-    method public String[] getChoiceValues();
-    method public String getDescription();
-    method public int getIntValue();
-    method public String getKey();
-    method public android.content.RestrictionEntry[] getRestrictions();
-    method public boolean getSelectedState();
-    method public String getSelectedString();
-    method public String getTitle();
-    method public int getType();
-    method public void setAllSelectedStrings(String[]);
-    method public void setChoiceEntries(String[]);
-    method public void setChoiceEntries(android.content.Context, @ArrayRes int);
-    method public void setChoiceValues(String[]);
-    method public void setChoiceValues(android.content.Context, @ArrayRes int);
-    method public void setDescription(String);
-    method public void setIntValue(int);
-    method public void setRestrictions(android.content.RestrictionEntry[]);
-    method public void setSelectedState(boolean);
-    method public void setSelectedString(String);
-    method public void setTitle(String);
-    method public void setType(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.RestrictionEntry> CREATOR;
-    field public static final int TYPE_BOOLEAN = 1; // 0x1
-    field public static final int TYPE_BUNDLE = 7; // 0x7
-    field public static final int TYPE_BUNDLE_ARRAY = 8; // 0x8
-    field public static final int TYPE_CHOICE = 2; // 0x2
-    field public static final int TYPE_INTEGER = 5; // 0x5
-    field public static final int TYPE_MULTI_SELECT = 4; // 0x4
-    field public static final int TYPE_NULL = 0; // 0x0
-    field public static final int TYPE_STRING = 6; // 0x6
-  }
-
-  public class RestrictionsManager {
-    method public static android.os.Bundle convertRestrictionsToBundle(java.util.List<android.content.RestrictionEntry>);
-    method public android.content.Intent createLocalApprovalIntent();
-    method public android.os.Bundle getApplicationRestrictions();
-    method public java.util.List<android.content.RestrictionEntry> getManifestRestrictions(String);
-    method public boolean hasRestrictionsProvider();
-    method public void notifyPermissionResponse(String, android.os.PersistableBundle);
-    method public void requestPermission(String, String, android.os.PersistableBundle);
-    field public static final String ACTION_PERMISSION_RESPONSE_RECEIVED = "android.content.action.PERMISSION_RESPONSE_RECEIVED";
-    field public static final String ACTION_REQUEST_LOCAL_APPROVAL = "android.content.action.REQUEST_LOCAL_APPROVAL";
-    field public static final String ACTION_REQUEST_PERMISSION = "android.content.action.REQUEST_PERMISSION";
-    field public static final String EXTRA_PACKAGE_NAME = "android.content.extra.PACKAGE_NAME";
-    field public static final String EXTRA_REQUEST_BUNDLE = "android.content.extra.REQUEST_BUNDLE";
-    field public static final String EXTRA_REQUEST_ID = "android.content.extra.REQUEST_ID";
-    field public static final String EXTRA_REQUEST_TYPE = "android.content.extra.REQUEST_TYPE";
-    field public static final String EXTRA_RESPONSE_BUNDLE = "android.content.extra.RESPONSE_BUNDLE";
-    field public static final String META_DATA_APP_RESTRICTIONS = "android.content.APP_RESTRICTIONS";
-    field public static final String REQUEST_KEY_APPROVE_LABEL = "android.request.approve_label";
-    field public static final String REQUEST_KEY_DATA = "android.request.data";
-    field public static final String REQUEST_KEY_DENY_LABEL = "android.request.deny_label";
-    field public static final String REQUEST_KEY_ICON = "android.request.icon";
-    field public static final String REQUEST_KEY_ID = "android.request.id";
-    field public static final String REQUEST_KEY_MESSAGE = "android.request.mesg";
-    field public static final String REQUEST_KEY_NEW_REQUEST = "android.request.new_request";
-    field public static final String REQUEST_KEY_TITLE = "android.request.title";
-    field public static final String REQUEST_TYPE_APPROVAL = "android.request.type.approval";
-    field public static final String RESPONSE_KEY_ERROR_CODE = "android.response.errorcode";
-    field public static final String RESPONSE_KEY_MESSAGE = "android.response.msg";
-    field public static final String RESPONSE_KEY_RESPONSE_TIMESTAMP = "android.response.timestamp";
-    field public static final String RESPONSE_KEY_RESULT = "android.response.result";
-    field public static final int RESULT_APPROVED = 1; // 0x1
-    field public static final int RESULT_DENIED = 2; // 0x2
-    field public static final int RESULT_ERROR = 5; // 0x5
-    field public static final int RESULT_ERROR_BAD_REQUEST = 1; // 0x1
-    field public static final int RESULT_ERROR_INTERNAL = 3; // 0x3
-    field public static final int RESULT_ERROR_NETWORK = 2; // 0x2
-    field public static final int RESULT_NO_RESPONSE = 3; // 0x3
-    field public static final int RESULT_UNKNOWN_REQUEST = 4; // 0x4
-  }
-
-  public class SearchRecentSuggestionsProvider extends android.content.ContentProvider {
-    ctor public SearchRecentSuggestionsProvider();
-    method public int delete(android.net.Uri, String, String[]);
-    method public String getType(android.net.Uri);
-    method public android.net.Uri insert(android.net.Uri, android.content.ContentValues);
-    method public boolean onCreate();
-    method public android.database.Cursor query(android.net.Uri, String[], String, String[], String);
-    method protected void setupSuggestions(String, int);
-    method public int update(android.net.Uri, android.content.ContentValues, String, String[]);
-    field public static final int DATABASE_MODE_2LINES = 2; // 0x2
-    field public static final int DATABASE_MODE_QUERIES = 1; // 0x1
-  }
-
-  public interface ServiceConnection {
-    method public default void onBindingDied(android.content.ComponentName);
-    method public default void onNullBinding(android.content.ComponentName);
-    method public void onServiceConnected(android.content.ComponentName, android.os.IBinder);
-    method public void onServiceDisconnected(android.content.ComponentName);
-  }
-
-  public interface SharedPreferences {
-    method public boolean contains(String);
-    method public android.content.SharedPreferences.Editor edit();
-    method public java.util.Map<java.lang.String,?> getAll();
-    method public boolean getBoolean(String, boolean);
-    method public float getFloat(String, float);
-    method public int getInt(String, int);
-    method public long getLong(String, long);
-    method @Nullable public String getString(String, @Nullable String);
-    method @Nullable public java.util.Set<java.lang.String> getStringSet(String, @Nullable java.util.Set<java.lang.String>);
-    method public void registerOnSharedPreferenceChangeListener(android.content.SharedPreferences.OnSharedPreferenceChangeListener);
-    method public void unregisterOnSharedPreferenceChangeListener(android.content.SharedPreferences.OnSharedPreferenceChangeListener);
-  }
-
-  public static interface SharedPreferences.Editor {
-    method public void apply();
-    method public android.content.SharedPreferences.Editor clear();
-    method public boolean commit();
-    method public android.content.SharedPreferences.Editor putBoolean(String, boolean);
-    method public android.content.SharedPreferences.Editor putFloat(String, float);
-    method public android.content.SharedPreferences.Editor putInt(String, int);
-    method public android.content.SharedPreferences.Editor putLong(String, long);
-    method public android.content.SharedPreferences.Editor putString(String, @Nullable String);
-    method public android.content.SharedPreferences.Editor putStringSet(String, @Nullable java.util.Set<java.lang.String>);
-    method public android.content.SharedPreferences.Editor remove(String);
-  }
-
-  public static interface SharedPreferences.OnSharedPreferenceChangeListener {
-    method public void onSharedPreferenceChanged(android.content.SharedPreferences, String);
-  }
-
-  public class SyncAdapterType implements android.os.Parcelable {
-    ctor public SyncAdapterType(String, String, boolean, boolean);
-    ctor public SyncAdapterType(android.os.Parcel);
-    method public boolean allowParallelSyncs();
-    method public int describeContents();
-    method public String getSettingsActivity();
-    method public boolean isAlwaysSyncable();
-    method public boolean isUserVisible();
-    method public static android.content.SyncAdapterType newKey(String, String);
-    method public boolean supportsUploading();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.SyncAdapterType> CREATOR;
-    field public final String accountType;
-    field public final String authority;
-    field public final boolean isKey;
-  }
-
-  public class SyncContext {
-    method public android.os.IBinder getSyncContextBinder();
-    method public void onFinished(android.content.SyncResult);
-  }
-
-  public class SyncInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public final android.accounts.Account account;
-    field public final String authority;
-    field public final long startTime;
-  }
-
-  public class SyncRequest implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.SyncRequest> CREATOR;
-  }
-
-  public static class SyncRequest.Builder {
-    ctor public SyncRequest.Builder();
-    method public android.content.SyncRequest build();
-    method public android.content.SyncRequest.Builder setDisallowMetered(boolean);
-    method public android.content.SyncRequest.Builder setExpedited(boolean);
-    method public android.content.SyncRequest.Builder setExtras(android.os.Bundle);
-    method public android.content.SyncRequest.Builder setIgnoreBackoff(boolean);
-    method public android.content.SyncRequest.Builder setIgnoreSettings(boolean);
-    method public android.content.SyncRequest.Builder setManual(boolean);
-    method public android.content.SyncRequest.Builder setNoRetry(boolean);
-    method public android.content.SyncRequest.Builder setRequiresCharging(boolean);
-    method public android.content.SyncRequest.Builder setSyncAdapter(android.accounts.Account, String);
-    method public android.content.SyncRequest.Builder syncOnce();
-    method public android.content.SyncRequest.Builder syncPeriodic(long, long);
-  }
-
-  public final class SyncResult implements android.os.Parcelable {
-    ctor public SyncResult();
-    method public void clear();
-    method public int describeContents();
-    method public boolean hasError();
-    method public boolean hasHardError();
-    method public boolean hasSoftError();
-    method public boolean madeSomeProgress();
-    method public String toDebugString();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.content.SyncResult ALREADY_IN_PROGRESS;
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.SyncResult> CREATOR;
-    field public boolean databaseError;
-    field public long delayUntil;
-    field public boolean fullSyncRequested;
-    field public boolean moreRecordsToGet;
-    field public boolean partialSyncUnavailable;
-    field public final android.content.SyncStats stats;
-    field public final boolean syncAlreadyInProgress;
-    field public boolean tooManyDeletions;
-    field public boolean tooManyRetries;
-  }
-
-  public class SyncStats implements android.os.Parcelable {
-    ctor public SyncStats();
-    ctor public SyncStats(android.os.Parcel);
-    method public void clear();
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.SyncStats> CREATOR;
-    field public long numAuthExceptions;
-    field public long numConflictDetectedExceptions;
-    field public long numDeletes;
-    field public long numEntries;
-    field public long numInserts;
-    field public long numIoExceptions;
-    field public long numParseExceptions;
-    field public long numSkippedEntries;
-    field public long numUpdates;
-  }
-
-  public interface SyncStatusObserver {
-    method public void onStatusChanged(int);
-  }
-
-  public class UriMatcher {
-    ctor public UriMatcher(int);
-    method public void addURI(String, String, int);
-    method public int match(android.net.Uri);
-    field public static final int NO_MATCH = -1; // 0xffffffff
-  }
-
-  public final class UriPermission implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getPersistedTime();
-    method public android.net.Uri getUri();
-    method public boolean isReadPermission();
-    method public boolean isWritePermission();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.UriPermission> CREATOR;
-    field public static final long INVALID_TIME = -9223372036854775808L; // 0x8000000000000000L
-  }
-
-}
-
-package android.content.pm {
-
-  public class ActivityInfo extends android.content.pm.ComponentInfo implements android.os.Parcelable {
-    ctor public ActivityInfo();
-    ctor public ActivityInfo(android.content.pm.ActivityInfo);
-    method public int describeContents();
-    method public void dump(android.util.Printer, String);
-    method public final int getThemeResource();
-    field public static final int COLOR_MODE_DEFAULT = 0; // 0x0
-    field public static final int COLOR_MODE_HDR = 2; // 0x2
-    field public static final int COLOR_MODE_WIDE_COLOR_GAMUT = 1; // 0x1
-    field public static final int CONFIG_COLOR_MODE = 16384; // 0x4000
-    field public static final int CONFIG_DENSITY = 4096; // 0x1000
-    field public static final int CONFIG_FONT_SCALE = 1073741824; // 0x40000000
-    field public static final int CONFIG_KEYBOARD = 16; // 0x10
-    field public static final int CONFIG_KEYBOARD_HIDDEN = 32; // 0x20
-    field public static final int CONFIG_LAYOUT_DIRECTION = 8192; // 0x2000
-    field public static final int CONFIG_LOCALE = 4; // 0x4
-    field public static final int CONFIG_MCC = 1; // 0x1
-    field public static final int CONFIG_MNC = 2; // 0x2
-    field public static final int CONFIG_NAVIGATION = 64; // 0x40
-    field public static final int CONFIG_ORIENTATION = 128; // 0x80
-    field public static final int CONFIG_SCREEN_LAYOUT = 256; // 0x100
-    field public static final int CONFIG_SCREEN_SIZE = 1024; // 0x400
-    field public static final int CONFIG_SMALLEST_SCREEN_SIZE = 2048; // 0x800
-    field public static final int CONFIG_TOUCHSCREEN = 8; // 0x8
-    field public static final int CONFIG_UI_MODE = 512; // 0x200
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ActivityInfo> CREATOR;
-    field public static final int DOCUMENT_LAUNCH_ALWAYS = 2; // 0x2
-    field public static final int DOCUMENT_LAUNCH_INTO_EXISTING = 1; // 0x1
-    field public static final int DOCUMENT_LAUNCH_NEVER = 3; // 0x3
-    field public static final int DOCUMENT_LAUNCH_NONE = 0; // 0x0
-    field public static final int FLAG_ALLOW_TASK_REPARENTING = 64; // 0x40
-    field public static final int FLAG_ALWAYS_RETAIN_TASK_STATE = 8; // 0x8
-    field public static final int FLAG_AUTO_REMOVE_FROM_RECENTS = 8192; // 0x2000
-    field public static final int FLAG_CLEAR_TASK_ON_LAUNCH = 4; // 0x4
-    field public static final int FLAG_ENABLE_VR_MODE = 32768; // 0x8000
-    field public static final int FLAG_EXCLUDE_FROM_RECENTS = 32; // 0x20
-    field public static final int FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS = 256; // 0x100
-    field public static final int FLAG_FINISH_ON_TASK_LAUNCH = 2; // 0x2
-    field public static final int FLAG_HARDWARE_ACCELERATED = 512; // 0x200
-    field public static final int FLAG_IMMERSIVE = 2048; // 0x800
-    field public static final int FLAG_MULTIPROCESS = 1; // 0x1
-    field public static final int FLAG_NO_HISTORY = 128; // 0x80
-    field public static final int FLAG_PREFER_MINIMAL_POST_PROCESSING = 33554432; // 0x2000000
-    field public static final int FLAG_RELINQUISH_TASK_IDENTITY = 4096; // 0x1000
-    field public static final int FLAG_RESUME_WHILE_PAUSING = 16384; // 0x4000
-    field public static final int FLAG_SINGLE_USER = 1073741824; // 0x40000000
-    field public static final int FLAG_STATE_NOT_NEEDED = 16; // 0x10
-    field public static final int LAUNCH_MULTIPLE = 0; // 0x0
-    field public static final int LAUNCH_SINGLE_INSTANCE = 3; // 0x3
-    field public static final int LAUNCH_SINGLE_TASK = 2; // 0x2
-    field public static final int LAUNCH_SINGLE_TOP = 1; // 0x1
-    field public static final int PERSIST_ACROSS_REBOOTS = 2; // 0x2
-    field public static final int PERSIST_NEVER = 1; // 0x1
-    field public static final int PERSIST_ROOT_ONLY = 0; // 0x0
-    field public static final int SCREEN_ORIENTATION_BEHIND = 3; // 0x3
-    field public static final int SCREEN_ORIENTATION_FULL_SENSOR = 10; // 0xa
-    field public static final int SCREEN_ORIENTATION_FULL_USER = 13; // 0xd
-    field public static final int SCREEN_ORIENTATION_LANDSCAPE = 0; // 0x0
-    field public static final int SCREEN_ORIENTATION_LOCKED = 14; // 0xe
-    field public static final int SCREEN_ORIENTATION_NOSENSOR = 5; // 0x5
-    field public static final int SCREEN_ORIENTATION_PORTRAIT = 1; // 0x1
-    field public static final int SCREEN_ORIENTATION_REVERSE_LANDSCAPE = 8; // 0x8
-    field public static final int SCREEN_ORIENTATION_REVERSE_PORTRAIT = 9; // 0x9
-    field public static final int SCREEN_ORIENTATION_SENSOR = 4; // 0x4
-    field public static final int SCREEN_ORIENTATION_SENSOR_LANDSCAPE = 6; // 0x6
-    field public static final int SCREEN_ORIENTATION_SENSOR_PORTRAIT = 7; // 0x7
-    field public static final int SCREEN_ORIENTATION_UNSPECIFIED = -1; // 0xffffffff
-    field public static final int SCREEN_ORIENTATION_USER = 2; // 0x2
-    field public static final int SCREEN_ORIENTATION_USER_LANDSCAPE = 11; // 0xb
-    field public static final int SCREEN_ORIENTATION_USER_PORTRAIT = 12; // 0xc
-    field public static final int UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW = 1; // 0x1
-    field public int colorMode;
-    field public int configChanges;
-    field public int documentLaunchMode;
-    field public int flags;
-    field public int launchMode;
-    field public int maxRecents;
-    field public String parentActivityName;
-    field public String permission;
-    field public int persistableMode;
-    field public int screenOrientation;
-    field public int softInputMode;
-    field public String targetActivity;
-    field public String taskAffinity;
-    field public int theme;
-    field public int uiOptions;
-    field public android.content.pm.ActivityInfo.WindowLayout windowLayout;
-  }
-
-  public static final class ActivityInfo.WindowLayout {
-    ctor public ActivityInfo.WindowLayout(int, float, int, float, int, int, int);
-    field public final int gravity;
-    field public final int height;
-    field public final float heightFraction;
-    field public final int minHeight;
-    field public final int minWidth;
-    field public final int width;
-    field public final float widthFraction;
-  }
-
-  public class ApplicationInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
-    ctor public ApplicationInfo();
-    ctor public ApplicationInfo(android.content.pm.ApplicationInfo);
-    method public int describeContents();
-    method public void dump(android.util.Printer, String);
-    method public static CharSequence getCategoryTitle(android.content.Context, int);
-    method public int getGwpAsanMode();
-    method public boolean isProfileableByShell();
-    method public boolean isResourceOverlay();
-    method public boolean isVirtualPreload();
-    method public CharSequence loadDescription(android.content.pm.PackageManager);
-    field public static final int CATEGORY_AUDIO = 1; // 0x1
-    field public static final int CATEGORY_GAME = 0; // 0x0
-    field public static final int CATEGORY_IMAGE = 3; // 0x3
-    field public static final int CATEGORY_MAPS = 6; // 0x6
-    field public static final int CATEGORY_NEWS = 5; // 0x5
-    field public static final int CATEGORY_PRODUCTIVITY = 7; // 0x7
-    field public static final int CATEGORY_SOCIAL = 4; // 0x4
-    field public static final int CATEGORY_UNDEFINED = -1; // 0xffffffff
-    field public static final int CATEGORY_VIDEO = 2; // 0x2
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ApplicationInfo> CREATOR;
-    field public static final int FLAG_ALLOW_BACKUP = 32768; // 0x8000
-    field public static final int FLAG_ALLOW_CLEAR_USER_DATA = 64; // 0x40
-    field public static final int FLAG_ALLOW_TASK_REPARENTING = 32; // 0x20
-    field public static final int FLAG_DEBUGGABLE = 2; // 0x2
-    field public static final int FLAG_EXTERNAL_STORAGE = 262144; // 0x40000
-    field public static final int FLAG_EXTRACT_NATIVE_LIBS = 268435456; // 0x10000000
-    field public static final int FLAG_FACTORY_TEST = 16; // 0x10
-    field public static final int FLAG_FULL_BACKUP_ONLY = 67108864; // 0x4000000
-    field public static final int FLAG_HARDWARE_ACCELERATED = 536870912; // 0x20000000
-    field public static final int FLAG_HAS_CODE = 4; // 0x4
-    field public static final int FLAG_INSTALLED = 8388608; // 0x800000
-    field public static final int FLAG_IS_DATA_ONLY = 16777216; // 0x1000000
-    field @Deprecated public static final int FLAG_IS_GAME = 33554432; // 0x2000000
-    field public static final int FLAG_KILL_AFTER_RESTORE = 65536; // 0x10000
-    field public static final int FLAG_LARGE_HEAP = 1048576; // 0x100000
-    field public static final int FLAG_MULTIARCH = -2147483648; // 0x80000000
-    field public static final int FLAG_PERSISTENT = 8; // 0x8
-    field public static final int FLAG_RESIZEABLE_FOR_SCREENS = 4096; // 0x1000
-    field public static final int FLAG_RESTORE_ANY_VERSION = 131072; // 0x20000
-    field public static final int FLAG_STOPPED = 2097152; // 0x200000
-    field public static final int FLAG_SUPPORTS_LARGE_SCREENS = 2048; // 0x800
-    field public static final int FLAG_SUPPORTS_NORMAL_SCREENS = 1024; // 0x400
-    field public static final int FLAG_SUPPORTS_RTL = 4194304; // 0x400000
-    field @Deprecated public static final int FLAG_SUPPORTS_SCREEN_DENSITIES = 8192; // 0x2000
-    field public static final int FLAG_SUPPORTS_SMALL_SCREENS = 512; // 0x200
-    field public static final int FLAG_SUPPORTS_XLARGE_SCREENS = 524288; // 0x80000
-    field public static final int FLAG_SUSPENDED = 1073741824; // 0x40000000
-    field public static final int FLAG_SYSTEM = 1; // 0x1
-    field public static final int FLAG_TEST_ONLY = 256; // 0x100
-    field public static final int FLAG_UPDATED_SYSTEM_APP = 128; // 0x80
-    field public static final int FLAG_USES_CLEARTEXT_TRAFFIC = 134217728; // 0x8000000
-    field public static final int FLAG_VM_SAFE_MODE = 16384; // 0x4000
-    field public static final int GWP_ASAN_ALWAYS = 1; // 0x1
-    field public static final int GWP_ASAN_DEFAULT = -1; // 0xffffffff
-    field public static final int GWP_ASAN_NEVER = 0; // 0x0
-    field public String appComponentFactory;
-    field public String backupAgentName;
-    field public int category;
-    field public String className;
-    field public int compatibleWidthLimitDp;
-    field public String dataDir;
-    field public int descriptionRes;
-    field public String deviceProtectedDataDir;
-    field public boolean enabled;
-    field public int flags;
-    field public int largestWidthLimitDp;
-    field public String manageSpaceActivityName;
-    field public int minSdkVersion;
-    field public String nativeLibraryDir;
-    field public String permission;
-    field public String processName;
-    field public String publicSourceDir;
-    field public int requiresSmallestWidthDp;
-    field public String[] sharedLibraryFiles;
-    field public String sourceDir;
-    field public String[] splitNames;
-    field public String[] splitPublicSourceDirs;
-    field public String[] splitSourceDirs;
-    field public java.util.UUID storageUuid;
-    field public int targetSdkVersion;
-    field public String taskAffinity;
-    field public int theme;
-    field public int uiOptions;
-    field public int uid;
-  }
-
-  public static class ApplicationInfo.DisplayNameComparator implements java.util.Comparator<android.content.pm.ApplicationInfo> {
-    ctor public ApplicationInfo.DisplayNameComparator(android.content.pm.PackageManager);
-    method public final int compare(android.content.pm.ApplicationInfo, android.content.pm.ApplicationInfo);
-  }
-
-  public final class ChangedPackages implements android.os.Parcelable {
-    ctor public ChangedPackages(int, @NonNull java.util.List<java.lang.String>);
-    method public int describeContents();
-    method @NonNull public java.util.List<java.lang.String> getPackageNames();
-    method public int getSequenceNumber();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ChangedPackages> CREATOR;
-  }
-
-  public class ComponentInfo extends android.content.pm.PackageItemInfo {
-    ctor public ComponentInfo();
-    ctor public ComponentInfo(android.content.pm.ComponentInfo);
-    ctor protected ComponentInfo(android.os.Parcel);
-    method public final int getBannerResource();
-    method public final int getIconResource();
-    method public final int getLogoResource();
-    method public boolean isEnabled();
-    field public android.content.pm.ApplicationInfo applicationInfo;
-    field public int descriptionRes;
-    field public boolean directBootAware;
-    field public boolean enabled;
-    field public boolean exported;
-    field public String processName;
-    field public String splitName;
-  }
-
-  public class ConfigurationInfo implements android.os.Parcelable {
-    ctor public ConfigurationInfo();
-    ctor public ConfigurationInfo(android.content.pm.ConfigurationInfo);
-    method public int describeContents();
-    method public String getGlEsVersion();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ConfigurationInfo> CREATOR;
-    field public static final int GL_ES_VERSION_UNDEFINED = 0; // 0x0
-    field public static final int INPUT_FEATURE_FIVE_WAY_NAV = 2; // 0x2
-    field public static final int INPUT_FEATURE_HARD_KEYBOARD = 1; // 0x1
-    field public int reqGlEsVersion;
-    field public int reqInputFeatures;
-    field public int reqKeyboardType;
-    field public int reqNavigation;
-    field public int reqTouchScreen;
-  }
-
-  public class CrossProfileApps {
-    method public boolean canInteractAcrossProfiles();
-    method public boolean canRequestInteractAcrossProfiles();
-    method @NonNull public android.content.Intent createRequestInteractAcrossProfilesIntent();
-    method @NonNull public android.graphics.drawable.Drawable getProfileSwitchingIconDrawable(@NonNull android.os.UserHandle);
-    method @NonNull public CharSequence getProfileSwitchingLabel(@NonNull android.os.UserHandle);
-    method @NonNull public java.util.List<android.os.UserHandle> getTargetUserProfiles();
-    method @RequiresPermission(anyOf={android.Manifest.permission.INTERACT_ACROSS_PROFILES, "android.permission.INTERACT_ACROSS_USERS"}) public void startActivity(@NonNull android.content.Intent, @NonNull android.os.UserHandle, @Nullable android.app.Activity);
-    method @RequiresPermission(anyOf={android.Manifest.permission.INTERACT_ACROSS_PROFILES, "android.permission.INTERACT_ACROSS_USERS"}) public void startActivity(@NonNull android.content.Intent, @NonNull android.os.UserHandle, @Nullable android.app.Activity, @Nullable android.os.Bundle);
-    method public void startMainActivity(@NonNull android.content.ComponentName, @NonNull android.os.UserHandle);
-    field public static final String ACTION_CAN_INTERACT_ACROSS_PROFILES_CHANGED = "android.content.pm.action.CAN_INTERACT_ACROSS_PROFILES_CHANGED";
-  }
-
-  public final class FeatureGroupInfo implements android.os.Parcelable {
-    ctor public FeatureGroupInfo();
-    ctor public FeatureGroupInfo(android.content.pm.FeatureGroupInfo);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.FeatureGroupInfo> CREATOR;
-    field public android.content.pm.FeatureInfo[] features;
-  }
-
-  public class FeatureInfo implements android.os.Parcelable {
-    ctor public FeatureInfo();
-    ctor public FeatureInfo(android.content.pm.FeatureInfo);
-    method public int describeContents();
-    method public String getGlEsVersion();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.FeatureInfo> CREATOR;
-    field public static final int FLAG_REQUIRED = 1; // 0x1
-    field public static final int GL_ES_VERSION_UNDEFINED = 0; // 0x0
-    field public int flags;
-    field public String name;
-    field public int reqGlEsVersion;
-    field public int version;
-  }
-
-  public final class InstallSourceInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getInitiatingPackageName();
-    method @Nullable public android.content.pm.SigningInfo getInitiatingPackageSigningInfo();
-    method @Nullable public String getInstallingPackageName();
-    method @Nullable public String getOriginatingPackageName();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstallSourceInfo> CREATOR;
-  }
-
-  public class InstrumentationInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
-    ctor public InstrumentationInfo();
-    ctor public InstrumentationInfo(android.content.pm.InstrumentationInfo);
-    method public int describeContents();
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstrumentationInfo> CREATOR;
-    field public String dataDir;
-    field public boolean functionalTest;
-    field public boolean handleProfiling;
-    field public String publicSourceDir;
-    field public String sourceDir;
-    field public String[] splitNames;
-    field public String[] splitPublicSourceDirs;
-    field public String[] splitSourceDirs;
-    field public String targetPackage;
-    field public String targetProcesses;
-  }
-
-  public class LabeledIntent extends android.content.Intent {
-    ctor public LabeledIntent(android.content.Intent, String, int, int);
-    ctor public LabeledIntent(android.content.Intent, String, CharSequence, int);
-    ctor public LabeledIntent(String, int, int);
-    ctor public LabeledIntent(String, CharSequence, int);
-    method public int getIconResource();
-    method public int getLabelResource();
-    method public CharSequence getNonLocalizedLabel();
-    method public String getSourcePackage();
-    method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
-    method public CharSequence loadLabel(android.content.pm.PackageManager);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.LabeledIntent> CREATOR;
-  }
-
-  public class LauncherActivityInfo {
-    method public android.content.pm.ApplicationInfo getApplicationInfo();
-    method public android.graphics.drawable.Drawable getBadgedIcon(int);
-    method public android.content.ComponentName getComponentName();
-    method public long getFirstInstallTime();
-    method public android.graphics.drawable.Drawable getIcon(int);
-    method public CharSequence getLabel();
-    method public String getName();
-    method public android.os.UserHandle getUser();
-  }
-
-  public class LauncherApps {
-    method public java.util.List<android.content.pm.LauncherActivityInfo> getActivityList(String, android.os.UserHandle);
-    method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getAllPackageInstallerSessions();
-    method public android.content.pm.ApplicationInfo getApplicationInfo(@NonNull String, int, @NonNull android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public android.content.pm.LauncherApps.PinItemRequest getPinItemRequest(android.content.Intent);
-    method public java.util.List<android.os.UserHandle> getProfiles();
-    method public android.graphics.drawable.Drawable getShortcutBadgedIconDrawable(android.content.pm.ShortcutInfo, int);
-    method @Nullable public android.content.IntentSender getShortcutConfigActivityIntent(@NonNull android.content.pm.LauncherActivityInfo);
-    method public java.util.List<android.content.pm.LauncherActivityInfo> getShortcutConfigActivityList(@Nullable String, @NonNull android.os.UserHandle);
-    method public android.graphics.drawable.Drawable getShortcutIconDrawable(@NonNull android.content.pm.ShortcutInfo, int);
-    method @Nullable public java.util.List<android.content.pm.ShortcutInfo> getShortcuts(@NonNull android.content.pm.LauncherApps.ShortcutQuery, @NonNull android.os.UserHandle);
-    method @Nullable public android.os.Bundle getSuspendedPackageLauncherExtras(String, android.os.UserHandle);
-    method public boolean hasShortcutHostPermission();
-    method public boolean isActivityEnabled(android.content.ComponentName, android.os.UserHandle);
-    method public boolean isPackageEnabled(String, android.os.UserHandle);
-    method public void pinShortcuts(@NonNull String, @NonNull java.util.List<java.lang.String>, @NonNull android.os.UserHandle);
-    method public void registerCallback(android.content.pm.LauncherApps.Callback);
-    method public void registerCallback(android.content.pm.LauncherApps.Callback, android.os.Handler);
-    method public void registerPackageInstallerSessionCallback(@NonNull java.util.concurrent.Executor, @NonNull android.content.pm.PackageInstaller.SessionCallback);
-    method public android.content.pm.LauncherActivityInfo resolveActivity(android.content.Intent, android.os.UserHandle);
-    method public boolean shouldHideFromSuggestions(@NonNull String, @NonNull android.os.UserHandle);
-    method public void startAppDetailsActivity(android.content.ComponentName, android.os.UserHandle, android.graphics.Rect, android.os.Bundle);
-    method public void startMainActivity(android.content.ComponentName, android.os.UserHandle, android.graphics.Rect, android.os.Bundle);
-    method public void startPackageInstallerSessionDetailsActivity(@NonNull android.content.pm.PackageInstaller.SessionInfo, @Nullable android.graphics.Rect, @Nullable android.os.Bundle);
-    method public void startShortcut(@NonNull String, @NonNull String, @Nullable android.graphics.Rect, @Nullable android.os.Bundle, @NonNull android.os.UserHandle);
-    method public void startShortcut(@NonNull android.content.pm.ShortcutInfo, @Nullable android.graphics.Rect, @Nullable android.os.Bundle);
-    method public void unregisterCallback(android.content.pm.LauncherApps.Callback);
-    method public void unregisterPackageInstallerSessionCallback(@NonNull android.content.pm.PackageInstaller.SessionCallback);
-    field public static final String ACTION_CONFIRM_PIN_APPWIDGET = "android.content.pm.action.CONFIRM_PIN_APPWIDGET";
-    field public static final String ACTION_CONFIRM_PIN_SHORTCUT = "android.content.pm.action.CONFIRM_PIN_SHORTCUT";
-    field public static final String EXTRA_PIN_ITEM_REQUEST = "android.content.pm.extra.PIN_ITEM_REQUEST";
-  }
-
-  public abstract static class LauncherApps.Callback {
-    ctor public LauncherApps.Callback();
-    method public abstract void onPackageAdded(String, android.os.UserHandle);
-    method public abstract void onPackageChanged(String, android.os.UserHandle);
-    method public abstract void onPackageRemoved(String, android.os.UserHandle);
-    method public abstract void onPackagesAvailable(String[], android.os.UserHandle, boolean);
-    method public void onPackagesSuspended(String[], android.os.UserHandle);
-    method @Deprecated public void onPackagesSuspended(String[], android.os.UserHandle, @Nullable android.os.Bundle);
-    method public abstract void onPackagesUnavailable(String[], android.os.UserHandle, boolean);
-    method public void onPackagesUnsuspended(String[], android.os.UserHandle);
-    method public void onShortcutsChanged(@NonNull String, @NonNull java.util.List<android.content.pm.ShortcutInfo>, @NonNull android.os.UserHandle);
-  }
-
-  public static final class LauncherApps.PinItemRequest implements android.os.Parcelable {
-    method public boolean accept(@Nullable android.os.Bundle);
-    method public boolean accept();
-    method public int describeContents();
-    method @Nullable public android.appwidget.AppWidgetProviderInfo getAppWidgetProviderInfo(android.content.Context);
-    method @Nullable public android.os.Bundle getExtras();
-    method public int getRequestType();
-    method @Nullable public android.content.pm.ShortcutInfo getShortcutInfo();
-    method public boolean isValid();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.LauncherApps.PinItemRequest> CREATOR;
-    field public static final int REQUEST_TYPE_APPWIDGET = 2; // 0x2
-    field public static final int REQUEST_TYPE_SHORTCUT = 1; // 0x1
-  }
-
-  public static class LauncherApps.ShortcutQuery {
-    ctor public LauncherApps.ShortcutQuery();
-    method public android.content.pm.LauncherApps.ShortcutQuery setActivity(@Nullable android.content.ComponentName);
-    method public android.content.pm.LauncherApps.ShortcutQuery setChangedSince(long);
-    method @NonNull public android.content.pm.LauncherApps.ShortcutQuery setLocusIds(@Nullable java.util.List<android.content.LocusId>);
-    method public android.content.pm.LauncherApps.ShortcutQuery setPackage(@Nullable String);
-    method public android.content.pm.LauncherApps.ShortcutQuery setQueryFlags(int);
-    method public android.content.pm.LauncherApps.ShortcutQuery setShortcutIds(@Nullable java.util.List<java.lang.String>);
-    field public static final int FLAG_GET_KEY_FIELDS_ONLY = 4; // 0x4
-    field public static final int FLAG_MATCH_CACHED = 16; // 0x10
-    field public static final int FLAG_MATCH_DYNAMIC = 1; // 0x1
-    field public static final int FLAG_MATCH_MANIFEST = 8; // 0x8
-    field public static final int FLAG_MATCH_PINNED = 2; // 0x2
-    field public static final int FLAG_MATCH_PINNED_BY_ANY_LAUNCHER = 1024; // 0x400
-  }
-
-  public final class ModuleInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public CharSequence getName();
-    method @Nullable public String getPackageName();
-    method public boolean isHidden();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ModuleInfo> CREATOR;
-  }
-
-  public class PackageInfo implements android.os.Parcelable {
-    ctor public PackageInfo();
-    method public int describeContents();
-    method public long getLongVersionCode();
-    method public void setLongVersionCode(long);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.PackageInfo> CREATOR;
-    field public static final int INSTALL_LOCATION_AUTO = 0; // 0x0
-    field public static final int INSTALL_LOCATION_INTERNAL_ONLY = 1; // 0x1
-    field public static final int INSTALL_LOCATION_PREFER_EXTERNAL = 2; // 0x2
-    field public static final int REQUESTED_PERMISSION_GRANTED = 2; // 0x2
-    field public android.content.pm.ActivityInfo[] activities;
-    field public android.content.pm.ApplicationInfo applicationInfo;
-    field public int baseRevisionCode;
-    field public android.content.pm.ConfigurationInfo[] configPreferences;
-    field public android.content.pm.FeatureGroupInfo[] featureGroups;
-    field public long firstInstallTime;
-    field public int[] gids;
-    field public int installLocation;
-    field public android.content.pm.InstrumentationInfo[] instrumentation;
-    field public boolean isApex;
-    field public long lastUpdateTime;
-    field public String packageName;
-    field public android.content.pm.PermissionInfo[] permissions;
-    field public android.content.pm.ProviderInfo[] providers;
-    field public android.content.pm.ActivityInfo[] receivers;
-    field public android.content.pm.FeatureInfo[] reqFeatures;
-    field public String[] requestedPermissions;
-    field public int[] requestedPermissionsFlags;
-    field public android.content.pm.ServiceInfo[] services;
-    field public String sharedUserId;
-    field public int sharedUserLabel;
-    field @Deprecated public android.content.pm.Signature[] signatures;
-    field public android.content.pm.SigningInfo signingInfo;
-    field public String[] splitNames;
-    field public int[] splitRevisionCodes;
-    field @Deprecated public int versionCode;
-    field public String versionName;
-  }
-
-  public class PackageInstaller {
-    method public void abandonSession(int);
-    method public int createSession(@NonNull android.content.pm.PackageInstaller.SessionParams) throws java.io.IOException;
-    method @Deprecated @Nullable public android.content.pm.PackageInstaller.SessionInfo getActiveStagedSession();
-    method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getActiveStagedSessions();
-    method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getAllSessions();
-    method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getMySessions();
-    method @Nullable public android.content.pm.PackageInstaller.SessionInfo getSessionInfo(int);
-    method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getStagedSessions();
-    method @RequiresPermission(allOf={android.Manifest.permission.INSTALL_PACKAGES, "com.android.permission.INSTALL_EXISTING_PACKAGES"}) public void installExistingPackage(@NonNull String, int, @Nullable android.content.IntentSender);
-    method @NonNull public android.content.pm.PackageInstaller.Session openSession(int) throws java.io.IOException;
-    method public void registerSessionCallback(@NonNull android.content.pm.PackageInstaller.SessionCallback);
-    method public void registerSessionCallback(@NonNull android.content.pm.PackageInstaller.SessionCallback, @NonNull android.os.Handler);
-    method @RequiresPermission(anyOf={android.Manifest.permission.DELETE_PACKAGES, android.Manifest.permission.REQUEST_DELETE_PACKAGES}) public void uninstall(@NonNull String, @NonNull android.content.IntentSender);
-    method @RequiresPermission(anyOf={android.Manifest.permission.DELETE_PACKAGES, android.Manifest.permission.REQUEST_DELETE_PACKAGES}) public void uninstall(@NonNull android.content.pm.VersionedPackage, @NonNull android.content.IntentSender);
-    method public void unregisterSessionCallback(@NonNull android.content.pm.PackageInstaller.SessionCallback);
-    method public void updateSessionAppIcon(int, @Nullable android.graphics.Bitmap);
-    method public void updateSessionAppLabel(int, @Nullable CharSequence);
-    field public static final String ACTION_SESSION_COMMITTED = "android.content.pm.action.SESSION_COMMITTED";
-    field public static final String ACTION_SESSION_DETAILS = "android.content.pm.action.SESSION_DETAILS";
-    field public static final String ACTION_SESSION_UPDATED = "android.content.pm.action.SESSION_UPDATED";
-    field public static final String EXTRA_OTHER_PACKAGE_NAME = "android.content.pm.extra.OTHER_PACKAGE_NAME";
-    field public static final String EXTRA_PACKAGE_NAME = "android.content.pm.extra.PACKAGE_NAME";
-    field public static final String EXTRA_SESSION = "android.content.pm.extra.SESSION";
-    field public static final String EXTRA_SESSION_ID = "android.content.pm.extra.SESSION_ID";
-    field public static final String EXTRA_STATUS = "android.content.pm.extra.STATUS";
-    field public static final String EXTRA_STATUS_MESSAGE = "android.content.pm.extra.STATUS_MESSAGE";
-    field public static final String EXTRA_STORAGE_PATH = "android.content.pm.extra.STORAGE_PATH";
-    field public static final int STATUS_FAILURE = 1; // 0x1
-    field public static final int STATUS_FAILURE_ABORTED = 3; // 0x3
-    field public static final int STATUS_FAILURE_BLOCKED = 2; // 0x2
-    field public static final int STATUS_FAILURE_CONFLICT = 5; // 0x5
-    field public static final int STATUS_FAILURE_INCOMPATIBLE = 7; // 0x7
-    field public static final int STATUS_FAILURE_INVALID = 4; // 0x4
-    field public static final int STATUS_FAILURE_STORAGE = 6; // 0x6
-    field public static final int STATUS_PENDING_USER_ACTION = -1; // 0xffffffff
-    field public static final int STATUS_SUCCESS = 0; // 0x0
-  }
-
-  public static class PackageInstaller.Session implements java.io.Closeable {
-    method public void abandon();
-    method public void addChildSessionId(int);
-    method public void close();
-    method public void commit(@NonNull android.content.IntentSender);
-    method public void fsync(@NonNull java.io.OutputStream) throws java.io.IOException;
-    method @NonNull public int[] getChildSessionIds();
-    method @NonNull public String[] getNames() throws java.io.IOException;
-    method public int getParentSessionId();
-    method public boolean isMultiPackage();
-    method public boolean isStaged();
-    method @NonNull public java.io.InputStream openRead(@NonNull String) throws java.io.IOException;
-    method @NonNull public java.io.OutputStream openWrite(@NonNull String, long, long) throws java.io.IOException;
-    method public void removeChildSessionId(int);
-    method public void removeSplit(@NonNull String) throws java.io.IOException;
-    method public void setStagingProgress(float);
-    method public void transfer(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
-  }
-
-  public abstract static class PackageInstaller.SessionCallback {
-    ctor public PackageInstaller.SessionCallback();
-    method public abstract void onActiveChanged(int, boolean);
-    method public abstract void onBadgingChanged(int);
-    method public abstract void onCreated(int);
-    method public abstract void onFinished(int, boolean);
-    method public abstract void onProgressChanged(int, float);
-  }
-
-  public static class PackageInstaller.SessionInfo implements android.os.Parcelable {
-    method @Nullable public android.content.Intent createDetailsIntent();
-    method public int describeContents();
-    method @Nullable public android.graphics.Bitmap getAppIcon();
-    method @Nullable public CharSequence getAppLabel();
-    method @Nullable public String getAppPackageName();
-    method @NonNull public int[] getChildSessionIds();
-    method public long getCreatedMillis();
-    method public int getInstallLocation();
-    method public int getInstallReason();
-    method @Nullable public String getInstallerPackageName();
-    method public int getMode();
-    method public int getOriginatingUid();
-    method @Nullable public android.net.Uri getOriginatingUri();
-    method public int getParentSessionId();
-    method public float getProgress();
-    method @Nullable public android.net.Uri getReferrerUri();
-    method public int getSessionId();
-    method public long getSize();
-    method public int getStagedSessionErrorCode();
-    method @NonNull public String getStagedSessionErrorMessage();
-    method public long getUpdatedMillis();
-    method @NonNull public android.os.UserHandle getUser();
-    method public boolean hasParentSessionId();
-    method public boolean isActive();
-    method public boolean isCommitted();
-    method public boolean isMultiPackage();
-    method public boolean isSealed();
-    method public boolean isStaged();
-    method public boolean isStagedSessionActive();
-    method public boolean isStagedSessionApplied();
-    method public boolean isStagedSessionFailed();
-    method public boolean isStagedSessionReady();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.content.pm.PackageInstaller.SessionInfo> CREATOR;
-    field public static final int INVALID_ID = -1; // 0xffffffff
-    field public static final int STAGED_SESSION_ACTIVATION_FAILED = 2; // 0x2
-    field public static final int STAGED_SESSION_NO_ERROR = 0; // 0x0
-    field public static final int STAGED_SESSION_UNKNOWN = 3; // 0x3
-    field public static final int STAGED_SESSION_VERIFICATION_FAILED = 1; // 0x1
-  }
-
-  public static class PackageInstaller.SessionParams implements android.os.Parcelable {
-    ctor public PackageInstaller.SessionParams(int);
-    method public int describeContents();
-    method public void setAppIcon(@Nullable android.graphics.Bitmap);
-    method public void setAppLabel(@Nullable CharSequence);
-    method public void setAppPackageName(@Nullable String);
-    method public void setAutoRevokePermissionsMode(boolean);
-    method public void setInstallLocation(int);
-    method public void setInstallReason(int);
-    method public void setMultiPackage();
-    method public void setOriginatingUid(int);
-    method public void setOriginatingUri(@Nullable android.net.Uri);
-    method public void setReferrerUri(@Nullable android.net.Uri);
-    method public void setSize(long);
-    method public void setWhitelistedRestrictedPermissions(@Nullable java.util.Set<java.lang.String>);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.content.pm.PackageInstaller.SessionParams> CREATOR;
-    field public static final int MODE_FULL_INSTALL = 1; // 0x1
-    field public static final int MODE_INHERIT_EXISTING = 2; // 0x2
-    field @NonNull public static final java.util.Set<java.lang.String> RESTRICTED_PERMISSIONS_ALL;
-  }
-
-  public class PackageItemInfo {
-    ctor public PackageItemInfo();
-    ctor public PackageItemInfo(android.content.pm.PackageItemInfo);
-    ctor protected PackageItemInfo(android.os.Parcel);
-    method protected void dumpBack(android.util.Printer, String);
-    method protected void dumpFront(android.util.Printer, String);
-    method public android.graphics.drawable.Drawable loadBanner(android.content.pm.PackageManager);
-    method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
-    method @NonNull public CharSequence loadLabel(@NonNull android.content.pm.PackageManager);
-    method public android.graphics.drawable.Drawable loadLogo(android.content.pm.PackageManager);
-    method public android.graphics.drawable.Drawable loadUnbadgedIcon(android.content.pm.PackageManager);
-    method public android.content.res.XmlResourceParser loadXmlMetaData(android.content.pm.PackageManager, String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public int banner;
-    field public int icon;
-    field public int labelRes;
-    field public int logo;
-    field public android.os.Bundle metaData;
-    field public String name;
-    field public CharSequence nonLocalizedLabel;
-    field public String packageName;
-  }
-
-  public static class PackageItemInfo.DisplayNameComparator implements java.util.Comparator<android.content.pm.PackageItemInfo> {
-    ctor public PackageItemInfo.DisplayNameComparator(android.content.pm.PackageManager);
-    method public final int compare(android.content.pm.PackageItemInfo, android.content.pm.PackageItemInfo);
-  }
-
-  public abstract class PackageManager {
-    ctor @Deprecated public PackageManager();
-    method @Deprecated public abstract void addPackageToPreferred(@NonNull String);
-    method public abstract boolean addPermission(@NonNull android.content.pm.PermissionInfo);
-    method public abstract boolean addPermissionAsync(@NonNull android.content.pm.PermissionInfo);
-    method @Deprecated public abstract void addPreferredActivity(@NonNull android.content.IntentFilter, int, @Nullable android.content.ComponentName[], @NonNull android.content.ComponentName);
-    method @RequiresPermission(value="android.permission.WHITELIST_RESTRICTED_PERMISSIONS", conditional=true) public boolean addWhitelistedRestrictedPermission(@NonNull String, @NonNull String, int);
-    method public abstract boolean canRequestPackageInstalls();
-    method public abstract String[] canonicalToCurrentPackageNames(@NonNull String[]);
-    method @CheckResult public abstract int checkPermission(@NonNull String, @NonNull String);
-    method @CheckResult public abstract int checkSignatures(@NonNull String, @NonNull String);
-    method @CheckResult public abstract int checkSignatures(int, int);
-    method public abstract void clearInstantAppCookie();
-    method @Deprecated public abstract void clearPackagePreferredActivities(@NonNull String);
-    method public abstract String[] currentToCanonicalPackageNames(@NonNull String[]);
-    method public abstract void extendVerificationTimeout(int, int, long);
-    method @Nullable public abstract android.graphics.drawable.Drawable getActivityBanner(@NonNull android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @Nullable public abstract android.graphics.drawable.Drawable getActivityBanner(@NonNull android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract android.graphics.drawable.Drawable getActivityIcon(@NonNull android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract android.graphics.drawable.Drawable getActivityIcon(@NonNull android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract android.content.pm.ActivityInfo getActivityInfo(@NonNull android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @Nullable public abstract android.graphics.drawable.Drawable getActivityLogo(@NonNull android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @Nullable public abstract android.graphics.drawable.Drawable getActivityLogo(@NonNull android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract java.util.List<android.content.pm.PermissionGroupInfo> getAllPermissionGroups(int);
-    method @Nullable public abstract android.graphics.drawable.Drawable getApplicationBanner(@NonNull android.content.pm.ApplicationInfo);
-    method @Nullable public abstract android.graphics.drawable.Drawable getApplicationBanner(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public abstract int getApplicationEnabledSetting(@NonNull String);
-    method @NonNull public abstract android.graphics.drawable.Drawable getApplicationIcon(@NonNull android.content.pm.ApplicationInfo);
-    method @NonNull public abstract android.graphics.drawable.Drawable getApplicationIcon(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract android.content.pm.ApplicationInfo getApplicationInfo(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract CharSequence getApplicationLabel(@NonNull android.content.pm.ApplicationInfo);
-    method @Nullable public abstract android.graphics.drawable.Drawable getApplicationLogo(@NonNull android.content.pm.ApplicationInfo);
-    method @Nullable public abstract android.graphics.drawable.Drawable getApplicationLogo(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public CharSequence getBackgroundPermissionOptionLabel();
-    method @Nullable public abstract android.content.pm.ChangedPackages getChangedPackages(@IntRange(from=0) int);
-    method public abstract int getComponentEnabledSetting(@NonNull android.content.ComponentName);
-    method @NonNull public abstract android.graphics.drawable.Drawable getDefaultActivityIcon();
-    method @Nullable public abstract android.graphics.drawable.Drawable getDrawable(@NonNull String, @DrawableRes int, @Nullable android.content.pm.ApplicationInfo);
-    method @NonNull public android.content.pm.InstallSourceInfo getInstallSourceInfo(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract java.util.List<android.content.pm.ApplicationInfo> getInstalledApplications(int);
-    method @NonNull public java.util.List<android.content.pm.ModuleInfo> getInstalledModules(int);
-    method @NonNull public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int);
-    method @Deprecated @Nullable public abstract String getInstallerPackageName(@NonNull String);
-    method @NonNull public abstract byte[] getInstantAppCookie();
-    method public abstract int getInstantAppCookieMaxBytes();
-    method @NonNull public abstract android.content.pm.InstrumentationInfo getInstrumentationInfo(@NonNull android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @Nullable public abstract android.content.Intent getLaunchIntentForPackage(@NonNull String);
-    method @Nullable public abstract android.content.Intent getLeanbackLaunchIntentForPackage(@NonNull String);
-    method @NonNull public java.util.Set<java.lang.String> getMimeGroup(@NonNull String);
-    method @NonNull public android.content.pm.ModuleInfo getModuleInfo(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @Nullable public abstract String getNameForUid(int);
-    method @Nullable public android.content.pm.PackageInfo getPackageArchiveInfo(@NonNull String, int);
-    method public abstract int[] getPackageGids(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public abstract int[] getPackageGids(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public abstract android.content.pm.PackageInfo getPackageInfo(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public abstract android.content.pm.PackageInfo getPackageInfo(@NonNull android.content.pm.VersionedPackage, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract android.content.pm.PackageInstaller getPackageInstaller();
-    method public abstract int getPackageUid(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @Nullable public abstract String[] getPackagesForUid(int);
-    method @NonNull public abstract java.util.List<android.content.pm.PackageInfo> getPackagesHoldingPermissions(@NonNull String[], int);
-    method @NonNull public abstract android.content.pm.PermissionGroupInfo getPermissionGroupInfo(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public abstract android.content.pm.PermissionInfo getPermissionInfo(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @Deprecated public abstract int getPreferredActivities(@NonNull java.util.List<android.content.IntentFilter>, @NonNull java.util.List<android.content.ComponentName>, @Nullable String);
-    method @Deprecated @NonNull public abstract java.util.List<android.content.pm.PackageInfo> getPreferredPackages(int);
-    method @NonNull public abstract android.content.pm.ProviderInfo getProviderInfo(@NonNull android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract android.content.pm.ActivityInfo getReceiverInfo(@NonNull android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract android.content.res.Resources getResourcesForActivity(@NonNull android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract android.content.res.Resources getResourcesForApplication(@NonNull android.content.pm.ApplicationInfo) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract android.content.res.Resources getResourcesForApplication(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract android.content.pm.ServiceInfo getServiceInfo(@NonNull android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public abstract java.util.List<android.content.pm.SharedLibraryInfo> getSharedLibraries(int);
-    method @Nullable public android.os.Bundle getSuspendedPackageAppExtras();
-    method public boolean getSyntheticAppDetailsActivityEnabled(@NonNull String);
-    method @NonNull public abstract android.content.pm.FeatureInfo[] getSystemAvailableFeatures();
-    method @Nullable public abstract String[] getSystemSharedLibraryNames();
-    method @Nullable public abstract CharSequence getText(@NonNull String, @StringRes int, @Nullable android.content.pm.ApplicationInfo);
-    method @NonNull public abstract android.graphics.drawable.Drawable getUserBadgedDrawableForDensity(@NonNull android.graphics.drawable.Drawable, @NonNull android.os.UserHandle, @Nullable android.graphics.Rect, int);
-    method @NonNull public abstract android.graphics.drawable.Drawable getUserBadgedIcon(@NonNull android.graphics.drawable.Drawable, @NonNull android.os.UserHandle);
-    method @NonNull public abstract CharSequence getUserBadgedLabel(@NonNull CharSequence, @NonNull android.os.UserHandle);
-    method @NonNull @RequiresPermission(value="android.permission.WHITELIST_RESTRICTED_PERMISSIONS", conditional=true) public java.util.Set<java.lang.String> getWhitelistedRestrictedPermissions(@NonNull String, int);
-    method @Nullable public abstract android.content.res.XmlResourceParser getXml(@NonNull String, @XmlRes int, @Nullable android.content.pm.ApplicationInfo);
-    method public boolean hasSigningCertificate(@NonNull String, @NonNull byte[], int);
-    method public boolean hasSigningCertificate(int, @NonNull byte[], int);
-    method public abstract boolean hasSystemFeature(@NonNull String);
-    method public abstract boolean hasSystemFeature(@NonNull String, int);
-    method @RequiresPermission(value="android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS", conditional=true) public boolean isAutoRevokeWhitelisted(@NonNull String);
-    method public boolean isAutoRevokeWhitelisted();
-    method public boolean isDefaultApplicationIcon(@NonNull android.graphics.drawable.Drawable);
-    method public boolean isDeviceUpgrading();
-    method public abstract boolean isInstantApp();
-    method public abstract boolean isInstantApp(@NonNull String);
-    method public boolean isPackageSuspended(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public boolean isPackageSuspended();
-    method @CheckResult public abstract boolean isPermissionRevokedByPolicy(@NonNull String, @NonNull String);
-    method public abstract boolean isSafeMode();
-    method @NonNull public abstract java.util.List<android.content.pm.ResolveInfo> queryBroadcastReceivers(@NonNull android.content.Intent, int);
-    method @NonNull public abstract java.util.List<android.content.pm.ProviderInfo> queryContentProviders(@Nullable String, int, int);
-    method @NonNull public abstract java.util.List<android.content.pm.InstrumentationInfo> queryInstrumentation(@NonNull String, int);
-    method @NonNull public abstract java.util.List<android.content.pm.ResolveInfo> queryIntentActivities(@NonNull android.content.Intent, int);
-    method @NonNull public abstract java.util.List<android.content.pm.ResolveInfo> queryIntentActivityOptions(@Nullable android.content.ComponentName, @Nullable android.content.Intent[], @NonNull android.content.Intent, int);
-    method @NonNull public abstract java.util.List<android.content.pm.ResolveInfo> queryIntentContentProviders(@NonNull android.content.Intent, int);
-    method @NonNull public abstract java.util.List<android.content.pm.ResolveInfo> queryIntentServices(@NonNull android.content.Intent, int);
-    method @NonNull public abstract java.util.List<android.content.pm.PermissionInfo> queryPermissionsByGroup(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @Deprecated public abstract void removePackageFromPreferred(@NonNull String);
-    method public abstract void removePermission(@NonNull String);
-    method @RequiresPermission(value="android.permission.WHITELIST_RESTRICTED_PERMISSIONS", conditional=true) public boolean removeWhitelistedRestrictedPermission(@NonNull String, @NonNull String, int);
-    method @Nullable public abstract android.content.pm.ResolveInfo resolveActivity(@NonNull android.content.Intent, int);
-    method @Nullable public abstract android.content.pm.ProviderInfo resolveContentProvider(@NonNull String, int);
-    method @Nullable public abstract android.content.pm.ResolveInfo resolveService(@NonNull android.content.Intent, int);
-    method public abstract void setApplicationCategoryHint(@NonNull String, int);
-    method @RequiresPermission(value=android.Manifest.permission.CHANGE_COMPONENT_ENABLED_STATE, conditional=true) public abstract void setApplicationEnabledSetting(@NonNull String, int, int);
-    method @RequiresPermission(value="android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS", conditional=true) public boolean setAutoRevokeWhitelisted(@NonNull String, boolean);
-    method @RequiresPermission(value=android.Manifest.permission.CHANGE_COMPONENT_ENABLED_STATE, conditional=true) public abstract void setComponentEnabledSetting(@NonNull android.content.ComponentName, int, int);
-    method public abstract void setInstallerPackageName(@NonNull String, @Nullable String);
-    method public void setMimeGroup(@NonNull String, @NonNull java.util.Set<java.lang.String>);
-    method public abstract void updateInstantAppCookie(@Nullable byte[]);
-    method public abstract void verifyPendingInstall(int, int);
-    field public static final int CERT_INPUT_RAW_X509 = 0; // 0x0
-    field public static final int CERT_INPUT_SHA256 = 1; // 0x1
-    field public static final int COMPONENT_ENABLED_STATE_DEFAULT = 0; // 0x0
-    field public static final int COMPONENT_ENABLED_STATE_DISABLED = 2; // 0x2
-    field public static final int COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED = 4; // 0x4
-    field public static final int COMPONENT_ENABLED_STATE_DISABLED_USER = 3; // 0x3
-    field public static final int COMPONENT_ENABLED_STATE_ENABLED = 1; // 0x1
-    field public static final int DONT_KILL_APP = 1; // 0x1
-    field public static final String EXTRA_VERIFICATION_ID = "android.content.pm.extra.VERIFICATION_ID";
-    field public static final String EXTRA_VERIFICATION_RESULT = "android.content.pm.extra.VERIFICATION_RESULT";
-    field public static final String FEATURE_ACTIVITIES_ON_SECONDARY_DISPLAYS = "android.software.activities_on_secondary_displays";
-    field public static final String FEATURE_APP_WIDGETS = "android.software.app_widgets";
-    field public static final String FEATURE_AUDIO_LOW_LATENCY = "android.hardware.audio.low_latency";
-    field public static final String FEATURE_AUDIO_OUTPUT = "android.hardware.audio.output";
-    field public static final String FEATURE_AUDIO_PRO = "android.hardware.audio.pro";
-    field public static final String FEATURE_AUTOFILL = "android.software.autofill";
-    field public static final String FEATURE_AUTOMOTIVE = "android.hardware.type.automotive";
-    field public static final String FEATURE_BACKUP = "android.software.backup";
-    field public static final String FEATURE_BLUETOOTH = "android.hardware.bluetooth";
-    field public static final String FEATURE_BLUETOOTH_LE = "android.hardware.bluetooth_le";
-    field public static final String FEATURE_CAMERA = "android.hardware.camera";
-    field public static final String FEATURE_CAMERA_ANY = "android.hardware.camera.any";
-    field public static final String FEATURE_CAMERA_AR = "android.hardware.camera.ar";
-    field public static final String FEATURE_CAMERA_AUTOFOCUS = "android.hardware.camera.autofocus";
-    field public static final String FEATURE_CAMERA_CAPABILITY_MANUAL_POST_PROCESSING = "android.hardware.camera.capability.manual_post_processing";
-    field public static final String FEATURE_CAMERA_CAPABILITY_MANUAL_SENSOR = "android.hardware.camera.capability.manual_sensor";
-    field public static final String FEATURE_CAMERA_CAPABILITY_RAW = "android.hardware.camera.capability.raw";
-    field public static final String FEATURE_CAMERA_CONCURRENT = "android.hardware.camera.concurrent";
-    field public static final String FEATURE_CAMERA_EXTERNAL = "android.hardware.camera.external";
-    field public static final String FEATURE_CAMERA_FLASH = "android.hardware.camera.flash";
-    field public static final String FEATURE_CAMERA_FRONT = "android.hardware.camera.front";
-    field public static final String FEATURE_CAMERA_LEVEL_FULL = "android.hardware.camera.level.full";
-    field public static final String FEATURE_CANT_SAVE_STATE = "android.software.cant_save_state";
-    field public static final String FEATURE_COMPANION_DEVICE_SETUP = "android.software.companion_device_setup";
-    field public static final String FEATURE_CONNECTION_SERVICE = "android.software.connectionservice";
-    field public static final String FEATURE_CONSUMER_IR = "android.hardware.consumerir";
-    field public static final String FEATURE_CONTROLS = "android.software.controls";
-    field public static final String FEATURE_DEVICE_ADMIN = "android.software.device_admin";
-    field public static final String FEATURE_EMBEDDED = "android.hardware.type.embedded";
-    field public static final String FEATURE_ETHERNET = "android.hardware.ethernet";
-    field public static final String FEATURE_FACE = "android.hardware.biometrics.face";
-    field public static final String FEATURE_FAKETOUCH = "android.hardware.faketouch";
-    field public static final String FEATURE_FAKETOUCH_MULTITOUCH_DISTINCT = "android.hardware.faketouch.multitouch.distinct";
-    field public static final String FEATURE_FAKETOUCH_MULTITOUCH_JAZZHAND = "android.hardware.faketouch.multitouch.jazzhand";
-    field public static final String FEATURE_FINGERPRINT = "android.hardware.fingerprint";
-    field public static final String FEATURE_FREEFORM_WINDOW_MANAGEMENT = "android.software.freeform_window_management";
-    field public static final String FEATURE_GAMEPAD = "android.hardware.gamepad";
-    field public static final String FEATURE_HIFI_SENSORS = "android.hardware.sensor.hifi_sensors";
-    field public static final String FEATURE_HOME_SCREEN = "android.software.home_screen";
-    field public static final String FEATURE_INPUT_METHODS = "android.software.input_methods";
-    field public static final String FEATURE_IPSEC_TUNNELS = "android.software.ipsec_tunnels";
-    field public static final String FEATURE_IRIS = "android.hardware.biometrics.iris";
-    field public static final String FEATURE_LEANBACK = "android.software.leanback";
-    field public static final String FEATURE_LEANBACK_ONLY = "android.software.leanback_only";
-    field public static final String FEATURE_LIVE_TV = "android.software.live_tv";
-    field public static final String FEATURE_LIVE_WALLPAPER = "android.software.live_wallpaper";
-    field public static final String FEATURE_LOCATION = "android.hardware.location";
-    field public static final String FEATURE_LOCATION_GPS = "android.hardware.location.gps";
-    field public static final String FEATURE_LOCATION_NETWORK = "android.hardware.location.network";
-    field public static final String FEATURE_MANAGED_USERS = "android.software.managed_users";
-    field public static final String FEATURE_MICROPHONE = "android.hardware.microphone";
-    field public static final String FEATURE_MIDI = "android.software.midi";
-    field public static final String FEATURE_NFC = "android.hardware.nfc";
-    field public static final String FEATURE_NFC_BEAM = "android.sofware.nfc.beam";
-    field public static final String FEATURE_NFC_HOST_CARD_EMULATION = "android.hardware.nfc.hce";
-    field public static final String FEATURE_NFC_HOST_CARD_EMULATION_NFCF = "android.hardware.nfc.hcef";
-    field public static final String FEATURE_NFC_OFF_HOST_CARD_EMULATION_ESE = "android.hardware.nfc.ese";
-    field public static final String FEATURE_NFC_OFF_HOST_CARD_EMULATION_UICC = "android.hardware.nfc.uicc";
-    field public static final String FEATURE_OPENGLES_EXTENSION_PACK = "android.hardware.opengles.aep";
-    field public static final String FEATURE_PC = "android.hardware.type.pc";
-    field public static final String FEATURE_PICTURE_IN_PICTURE = "android.software.picture_in_picture";
-    field public static final String FEATURE_PRINTING = "android.software.print";
-    field public static final String FEATURE_RAM_LOW = "android.hardware.ram.low";
-    field public static final String FEATURE_RAM_NORMAL = "android.hardware.ram.normal";
-    field public static final String FEATURE_SCREEN_LANDSCAPE = "android.hardware.screen.landscape";
-    field public static final String FEATURE_SCREEN_PORTRAIT = "android.hardware.screen.portrait";
-    field public static final String FEATURE_SECURELY_REMOVES_USERS = "android.software.securely_removes_users";
-    field public static final String FEATURE_SECURE_LOCK_SCREEN = "android.software.secure_lock_screen";
-    field public static final String FEATURE_SENSOR_ACCELEROMETER = "android.hardware.sensor.accelerometer";
-    field public static final String FEATURE_SENSOR_AMBIENT_TEMPERATURE = "android.hardware.sensor.ambient_temperature";
-    field public static final String FEATURE_SENSOR_BAROMETER = "android.hardware.sensor.barometer";
-    field public static final String FEATURE_SENSOR_COMPASS = "android.hardware.sensor.compass";
-    field public static final String FEATURE_SENSOR_GYROSCOPE = "android.hardware.sensor.gyroscope";
-    field public static final String FEATURE_SENSOR_HEART_RATE = "android.hardware.sensor.heartrate";
-    field public static final String FEATURE_SENSOR_HEART_RATE_ECG = "android.hardware.sensor.heartrate.ecg";
-    field public static final String FEATURE_SENSOR_HINGE_ANGLE = "android.hardware.sensor.hinge_angle";
-    field public static final String FEATURE_SENSOR_LIGHT = "android.hardware.sensor.light";
-    field public static final String FEATURE_SENSOR_PROXIMITY = "android.hardware.sensor.proximity";
-    field public static final String FEATURE_SENSOR_RELATIVE_HUMIDITY = "android.hardware.sensor.relative_humidity";
-    field public static final String FEATURE_SENSOR_STEP_COUNTER = "android.hardware.sensor.stepcounter";
-    field public static final String FEATURE_SENSOR_STEP_DETECTOR = "android.hardware.sensor.stepdetector";
-    field public static final String FEATURE_SE_OMAPI_ESE = "android.hardware.se.omapi.ese";
-    field public static final String FEATURE_SE_OMAPI_SD = "android.hardware.se.omapi.sd";
-    field public static final String FEATURE_SE_OMAPI_UICC = "android.hardware.se.omapi.uicc";
-    field public static final String FEATURE_SIP = "android.software.sip";
-    field public static final String FEATURE_SIP_VOIP = "android.software.sip.voip";
-    field public static final String FEATURE_STRONGBOX_KEYSTORE = "android.hardware.strongbox_keystore";
-    field public static final String FEATURE_TELEPHONY = "android.hardware.telephony";
-    field public static final String FEATURE_TELEPHONY_CDMA = "android.hardware.telephony.cdma";
-    field public static final String FEATURE_TELEPHONY_EUICC = "android.hardware.telephony.euicc";
-    field public static final String FEATURE_TELEPHONY_GSM = "android.hardware.telephony.gsm";
-    field public static final String FEATURE_TELEPHONY_IMS = "android.hardware.telephony.ims";
-    field public static final String FEATURE_TELEPHONY_MBMS = "android.hardware.telephony.mbms";
-    field @Deprecated public static final String FEATURE_TELEVISION = "android.hardware.type.television";
-    field public static final String FEATURE_TOUCHSCREEN = "android.hardware.touchscreen";
-    field public static final String FEATURE_TOUCHSCREEN_MULTITOUCH = "android.hardware.touchscreen.multitouch";
-    field public static final String FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT = "android.hardware.touchscreen.multitouch.distinct";
-    field public static final String FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND = "android.hardware.touchscreen.multitouch.jazzhand";
-    field public static final String FEATURE_USB_ACCESSORY = "android.hardware.usb.accessory";
-    field public static final String FEATURE_USB_HOST = "android.hardware.usb.host";
-    field public static final String FEATURE_VERIFIED_BOOT = "android.software.verified_boot";
-    field public static final String FEATURE_VR_HEADTRACKING = "android.hardware.vr.headtracking";
-    field @Deprecated public static final String FEATURE_VR_MODE = "android.software.vr.mode";
-    field public static final String FEATURE_VR_MODE_HIGH_PERFORMANCE = "android.hardware.vr.high_performance";
-    field public static final String FEATURE_VULKAN_DEQP_LEVEL = "android.software.vulkan.deqp.level";
-    field public static final String FEATURE_VULKAN_HARDWARE_COMPUTE = "android.hardware.vulkan.compute";
-    field public static final String FEATURE_VULKAN_HARDWARE_LEVEL = "android.hardware.vulkan.level";
-    field public static final String FEATURE_VULKAN_HARDWARE_VERSION = "android.hardware.vulkan.version";
-    field public static final String FEATURE_WATCH = "android.hardware.type.watch";
-    field public static final String FEATURE_WEBVIEW = "android.software.webview";
-    field public static final String FEATURE_WIFI = "android.hardware.wifi";
-    field public static final String FEATURE_WIFI_AWARE = "android.hardware.wifi.aware";
-    field public static final String FEATURE_WIFI_DIRECT = "android.hardware.wifi.direct";
-    field public static final String FEATURE_WIFI_PASSPOINT = "android.hardware.wifi.passpoint";
-    field public static final String FEATURE_WIFI_RTT = "android.hardware.wifi.rtt";
-    field public static final int FLAG_PERMISSION_WHITELIST_INSTALLER = 2; // 0x2
-    field public static final int FLAG_PERMISSION_WHITELIST_SYSTEM = 1; // 0x1
-    field public static final int FLAG_PERMISSION_WHITELIST_UPGRADE = 4; // 0x4
-    field public static final int GET_ACTIVITIES = 1; // 0x1
-    field public static final int GET_CONFIGURATIONS = 16384; // 0x4000
-    field @Deprecated public static final int GET_DISABLED_COMPONENTS = 512; // 0x200
-    field @Deprecated public static final int GET_DISABLED_UNTIL_USED_COMPONENTS = 32768; // 0x8000
-    field public static final int GET_GIDS = 256; // 0x100
-    field public static final int GET_INSTRUMENTATION = 16; // 0x10
-    field public static final int GET_INTENT_FILTERS = 32; // 0x20
-    field public static final int GET_META_DATA = 128; // 0x80
-    field public static final int GET_PERMISSIONS = 4096; // 0x1000
-    field public static final int GET_PROVIDERS = 8; // 0x8
-    field public static final int GET_RECEIVERS = 2; // 0x2
-    field public static final int GET_RESOLVED_FILTER = 64; // 0x40
-    field public static final int GET_SERVICES = 4; // 0x4
-    field public static final int GET_SHARED_LIBRARY_FILES = 1024; // 0x400
-    field @Deprecated public static final int GET_SIGNATURES = 64; // 0x40
-    field public static final int GET_SIGNING_CERTIFICATES = 134217728; // 0x8000000
-    field @Deprecated public static final int GET_UNINSTALLED_PACKAGES = 8192; // 0x2000
-    field public static final int GET_URI_PERMISSION_PATTERNS = 2048; // 0x800
-    field public static final int INSTALL_REASON_DEVICE_RESTORE = 2; // 0x2
-    field public static final int INSTALL_REASON_DEVICE_SETUP = 3; // 0x3
-    field public static final int INSTALL_REASON_POLICY = 1; // 0x1
-    field public static final int INSTALL_REASON_UNKNOWN = 0; // 0x0
-    field public static final int INSTALL_REASON_USER = 4; // 0x4
-    field public static final int MATCH_ALL = 131072; // 0x20000
-    field public static final int MATCH_APEX = 1073741824; // 0x40000000
-    field public static final int MATCH_DEFAULT_ONLY = 65536; // 0x10000
-    field public static final int MATCH_DIRECT_BOOT_AUTO = 268435456; // 0x10000000
-    field public static final int MATCH_DIRECT_BOOT_AWARE = 524288; // 0x80000
-    field public static final int MATCH_DIRECT_BOOT_UNAWARE = 262144; // 0x40000
-    field public static final int MATCH_DISABLED_COMPONENTS = 512; // 0x200
-    field public static final int MATCH_DISABLED_UNTIL_USED_COMPONENTS = 32768; // 0x8000
-    field public static final int MATCH_SYSTEM_ONLY = 1048576; // 0x100000
-    field public static final int MATCH_UNINSTALLED_PACKAGES = 8192; // 0x2000
-    field public static final long MAXIMUM_VERIFICATION_TIMEOUT = 3600000L; // 0x36ee80L
-    field public static final int PERMISSION_DENIED = -1; // 0xffffffff
-    field public static final int PERMISSION_GRANTED = 0; // 0x0
-    field public static final int SIGNATURE_FIRST_NOT_SIGNED = -1; // 0xffffffff
-    field public static final int SIGNATURE_MATCH = 0; // 0x0
-    field public static final int SIGNATURE_NEITHER_SIGNED = 1; // 0x1
-    field public static final int SIGNATURE_NO_MATCH = -3; // 0xfffffffd
-    field public static final int SIGNATURE_SECOND_NOT_SIGNED = -2; // 0xfffffffe
-    field public static final int SIGNATURE_UNKNOWN_PACKAGE = -4; // 0xfffffffc
-    field public static final int SYNCHRONOUS = 2; // 0x2
-    field public static final int VERIFICATION_ALLOW = 1; // 0x1
-    field public static final int VERIFICATION_REJECT = -1; // 0xffffffff
-    field public static final int VERSION_CODE_HIGHEST = -1; // 0xffffffff
-  }
-
-  public static class PackageManager.NameNotFoundException extends android.util.AndroidException {
-    ctor public PackageManager.NameNotFoundException();
-    ctor public PackageManager.NameNotFoundException(String);
-  }
-
-  @Deprecated public class PackageStats implements android.os.Parcelable {
-    ctor @Deprecated public PackageStats(String);
-    ctor @Deprecated public PackageStats(android.os.Parcel);
-    ctor @Deprecated public PackageStats(android.content.pm.PackageStats);
-    method @Deprecated public int describeContents();
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.content.pm.PackageStats> CREATOR;
-    field @Deprecated public long cacheSize;
-    field @Deprecated public long codeSize;
-    field @Deprecated public long dataSize;
-    field @Deprecated public long externalCacheSize;
-    field @Deprecated public long externalCodeSize;
-    field @Deprecated public long externalDataSize;
-    field @Deprecated public long externalMediaSize;
-    field @Deprecated public long externalObbSize;
-    field @Deprecated public String packageName;
-  }
-
-  public class PathPermission extends android.os.PatternMatcher {
-    ctor public PathPermission(String, int, String, String);
-    ctor public PathPermission(android.os.Parcel);
-    method public String getReadPermission();
-    method public String getWritePermission();
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.PathPermission> CREATOR;
-  }
-
-  public class PermissionGroupInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
-    ctor @Deprecated public PermissionGroupInfo();
-    ctor @Deprecated public PermissionGroupInfo(@NonNull android.content.pm.PermissionGroupInfo);
-    method public int describeContents();
-    method @Nullable public CharSequence loadDescription(@NonNull android.content.pm.PackageManager);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.PermissionGroupInfo> CREATOR;
-    field public static final int FLAG_PERSONAL_INFO = 1; // 0x1
-    field @StringRes public int descriptionRes;
-    field public int flags;
-    field @Nullable public CharSequence nonLocalizedDescription;
-    field public int priority;
-  }
-
-  public class PermissionInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
-    ctor @Deprecated public PermissionInfo();
-    ctor @Deprecated public PermissionInfo(@NonNull android.content.pm.PermissionInfo);
-    method public int describeContents();
-    method public int getProtection();
-    method public int getProtectionFlags();
-    method @Nullable public CharSequence loadDescription(@NonNull android.content.pm.PackageManager);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.PermissionInfo> CREATOR;
-    field public static final int FLAG_COSTS_MONEY = 1; // 0x1
-    field public static final int FLAG_HARD_RESTRICTED = 4; // 0x4
-    field public static final int FLAG_IMMUTABLY_RESTRICTED = 16; // 0x10
-    field public static final int FLAG_INSTALLED = 1073741824; // 0x40000000
-    field public static final int FLAG_SOFT_RESTRICTED = 8; // 0x8
-    field public static final int PROTECTION_DANGEROUS = 1; // 0x1
-    field public static final int PROTECTION_FLAG_APPOP = 64; // 0x40
-    field public static final int PROTECTION_FLAG_DEVELOPMENT = 32; // 0x20
-    field public static final int PROTECTION_FLAG_INSTALLER = 256; // 0x100
-    field public static final int PROTECTION_FLAG_INSTANT = 4096; // 0x1000
-    field public static final int PROTECTION_FLAG_PRE23 = 128; // 0x80
-    field public static final int PROTECTION_FLAG_PREINSTALLED = 1024; // 0x400
-    field public static final int PROTECTION_FLAG_PRIVILEGED = 16; // 0x10
-    field public static final int PROTECTION_FLAG_RUNTIME_ONLY = 8192; // 0x2000
-    field public static final int PROTECTION_FLAG_SETUP = 2048; // 0x800
-    field @Deprecated public static final int PROTECTION_FLAG_SYSTEM = 16; // 0x10
-    field public static final int PROTECTION_FLAG_VERIFIER = 512; // 0x200
-    field @Deprecated public static final int PROTECTION_MASK_BASE = 15; // 0xf
-    field @Deprecated public static final int PROTECTION_MASK_FLAGS = 65520; // 0xfff0
-    field public static final int PROTECTION_NORMAL = 0; // 0x0
-    field public static final int PROTECTION_SIGNATURE = 2; // 0x2
-    field @Deprecated public static final int PROTECTION_SIGNATURE_OR_SYSTEM = 3; // 0x3
-    field @StringRes public int descriptionRes;
-    field public int flags;
-    field @Nullable public String group;
-    field @Nullable public CharSequence nonLocalizedDescription;
-    field @Deprecated public int protectionLevel;
-  }
-
-  public final class ProviderInfo extends android.content.pm.ComponentInfo implements android.os.Parcelable {
-    ctor public ProviderInfo();
-    ctor public ProviderInfo(android.content.pm.ProviderInfo);
-    method public int describeContents();
-    method public void dump(android.util.Printer, String);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ProviderInfo> CREATOR;
-    field public static final int FLAG_SINGLE_USER = 1073741824; // 0x40000000
-    field public String authority;
-    field public int flags;
-    field public boolean forceUriPermissions;
-    field public boolean grantUriPermissions;
-    field public int initOrder;
-    field @Deprecated public boolean isSyncable;
-    field public boolean multiprocess;
-    field public android.content.pm.PathPermission[] pathPermissions;
-    field public String readPermission;
-    field public android.os.PatternMatcher[] uriPermissionPatterns;
-    field public String writePermission;
-  }
-
-  public class ResolveInfo implements android.os.Parcelable {
-    ctor public ResolveInfo();
-    ctor public ResolveInfo(android.content.pm.ResolveInfo);
-    method public int describeContents();
-    method public void dump(android.util.Printer, String);
-    method public final int getIconResource();
-    method public boolean isCrossProfileIntentForwarderActivity();
-    method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
-    method public CharSequence loadLabel(android.content.pm.PackageManager);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ResolveInfo> CREATOR;
-    field public android.content.pm.ActivityInfo activityInfo;
-    field public android.content.IntentFilter filter;
-    field public int icon;
-    field public boolean isDefault;
-    field public boolean isInstantAppAvailable;
-    field public int labelRes;
-    field public int match;
-    field public CharSequence nonLocalizedLabel;
-    field public int preferredOrder;
-    field public int priority;
-    field public android.content.pm.ProviderInfo providerInfo;
-    field public String resolvePackageName;
-    field public android.content.pm.ServiceInfo serviceInfo;
-    field public int specificIndex;
-  }
-
-  public static class ResolveInfo.DisplayNameComparator implements java.util.Comparator<android.content.pm.ResolveInfo> {
-    ctor public ResolveInfo.DisplayNameComparator(android.content.pm.PackageManager);
-    method public final int compare(android.content.pm.ResolveInfo, android.content.pm.ResolveInfo);
-  }
-
-  public class ServiceInfo extends android.content.pm.ComponentInfo implements android.os.Parcelable {
-    ctor public ServiceInfo();
-    ctor public ServiceInfo(android.content.pm.ServiceInfo);
-    method public int describeContents();
-    method public void dump(android.util.Printer, String);
-    method public int getForegroundServiceType();
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ServiceInfo> CREATOR;
-    field public static final int FLAG_EXTERNAL_SERVICE = 4; // 0x4
-    field public static final int FLAG_ISOLATED_PROCESS = 2; // 0x2
-    field public static final int FLAG_SINGLE_USER = 1073741824; // 0x40000000
-    field public static final int FLAG_STOP_WITH_TASK = 1; // 0x1
-    field public static final int FLAG_USE_APP_ZYGOTE = 8; // 0x8
-    field public static final int FOREGROUND_SERVICE_TYPE_CAMERA = 64; // 0x40
-    field public static final int FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE = 16; // 0x10
-    field public static final int FOREGROUND_SERVICE_TYPE_DATA_SYNC = 1; // 0x1
-    field public static final int FOREGROUND_SERVICE_TYPE_LOCATION = 8; // 0x8
-    field public static final int FOREGROUND_SERVICE_TYPE_MANIFEST = -1; // 0xffffffff
-    field public static final int FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK = 2; // 0x2
-    field public static final int FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION = 32; // 0x20
-    field public static final int FOREGROUND_SERVICE_TYPE_MICROPHONE = 128; // 0x80
-    field public static final int FOREGROUND_SERVICE_TYPE_NONE = 0; // 0x0
-    field public static final int FOREGROUND_SERVICE_TYPE_PHONE_CALL = 4; // 0x4
-    field public int flags;
-    field public String permission;
-  }
-
-  public final class SharedLibraryInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.content.pm.VersionedPackage getDeclaringPackage();
-    method @NonNull public java.util.List<android.content.pm.VersionedPackage> getDependentPackages();
-    method @IntRange(from=0xffffffff) public long getLongVersion();
-    method public String getName();
-    method public int getType();
-    method @Deprecated @IntRange(from=0xffffffff) public int getVersion();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.SharedLibraryInfo> CREATOR;
-    field public static final int TYPE_BUILTIN = 0; // 0x0
-    field public static final int TYPE_DYNAMIC = 1; // 0x1
-    field public static final int TYPE_STATIC = 2; // 0x2
-    field public static final int VERSION_UNDEFINED = -1; // 0xffffffff
-  }
-
-  public final class ShortcutInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.content.ComponentName getActivity();
-    method @Nullable public java.util.Set<java.lang.String> getCategories();
-    method @Nullable public CharSequence getDisabledMessage();
-    method public int getDisabledReason();
-    method @Nullable public android.os.PersistableBundle getExtras();
-    method @NonNull public String getId();
-    method @Nullable public android.content.Intent getIntent();
-    method @Nullable public android.content.Intent[] getIntents();
-    method public long getLastChangedTimestamp();
-    method @Nullable public android.content.LocusId getLocusId();
-    method @Nullable public CharSequence getLongLabel();
-    method @NonNull public String getPackage();
-    method public int getRank();
-    method @Nullable public CharSequence getShortLabel();
-    method public android.os.UserHandle getUserHandle();
-    method public boolean hasKeyFieldsOnly();
-    method public boolean isCached();
-    method public boolean isDeclaredInManifest();
-    method public boolean isDynamic();
-    method public boolean isEnabled();
-    method public boolean isImmutable();
-    method public boolean isPinned();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ShortcutInfo> CREATOR;
-    field public static final int DISABLED_REASON_APP_CHANGED = 2; // 0x2
-    field public static final int DISABLED_REASON_BACKUP_NOT_SUPPORTED = 101; // 0x65
-    field public static final int DISABLED_REASON_BY_APP = 1; // 0x1
-    field public static final int DISABLED_REASON_NOT_DISABLED = 0; // 0x0
-    field public static final int DISABLED_REASON_OTHER_RESTORE_ISSUE = 103; // 0x67
-    field public static final int DISABLED_REASON_SIGNATURE_MISMATCH = 102; // 0x66
-    field public static final int DISABLED_REASON_UNKNOWN = 3; // 0x3
-    field public static final int DISABLED_REASON_VERSION_LOWER = 100; // 0x64
-    field public static final String SHORTCUT_CATEGORY_CONVERSATION = "android.shortcut.conversation";
-  }
-
-  public static class ShortcutInfo.Builder {
-    ctor public ShortcutInfo.Builder(android.content.Context, String);
-    method @NonNull public android.content.pm.ShortcutInfo build();
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setActivity(@NonNull android.content.ComponentName);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setCategories(java.util.Set<java.lang.String>);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setDisabledMessage(@NonNull CharSequence);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setExtras(@NonNull android.os.PersistableBundle);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setIcon(android.graphics.drawable.Icon);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setIntent(@NonNull android.content.Intent);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setIntents(@NonNull android.content.Intent[]);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setLocusId(@NonNull android.content.LocusId);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setLongLabel(@NonNull CharSequence);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setLongLived(boolean);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setPerson(@NonNull android.app.Person);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setPersons(@NonNull android.app.Person[]);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setRank(int);
-    method @NonNull public android.content.pm.ShortcutInfo.Builder setShortLabel(@NonNull CharSequence);
-  }
-
-  public class ShortcutManager {
-    method public boolean addDynamicShortcuts(@NonNull java.util.List<android.content.pm.ShortcutInfo>);
-    method public android.content.Intent createShortcutResultIntent(@NonNull android.content.pm.ShortcutInfo);
-    method public void disableShortcuts(@NonNull java.util.List<java.lang.String>);
-    method public void disableShortcuts(@NonNull java.util.List<java.lang.String>, CharSequence);
-    method public void enableShortcuts(@NonNull java.util.List<java.lang.String>);
-    method @NonNull public java.util.List<android.content.pm.ShortcutInfo> getDynamicShortcuts();
-    method public int getIconMaxHeight();
-    method public int getIconMaxWidth();
-    method @NonNull public java.util.List<android.content.pm.ShortcutInfo> getManifestShortcuts();
-    method public int getMaxShortcutCountPerActivity();
-    method @NonNull public java.util.List<android.content.pm.ShortcutInfo> getPinnedShortcuts();
-    method @NonNull public java.util.List<android.content.pm.ShortcutInfo> getShortcuts(int);
-    method public boolean isRateLimitingActive();
-    method public boolean isRequestPinShortcutSupported();
-    method public void pushDynamicShortcut(@NonNull android.content.pm.ShortcutInfo);
-    method public void removeAllDynamicShortcuts();
-    method public void removeDynamicShortcuts(@NonNull java.util.List<java.lang.String>);
-    method public void removeLongLivedShortcuts(@NonNull java.util.List<java.lang.String>);
-    method public void reportShortcutUsed(String);
-    method public boolean requestPinShortcut(@NonNull android.content.pm.ShortcutInfo, @Nullable android.content.IntentSender);
-    method public boolean setDynamicShortcuts(@NonNull java.util.List<android.content.pm.ShortcutInfo>);
-    method public boolean updateShortcuts(@NonNull java.util.List<android.content.pm.ShortcutInfo>);
-    field public static final int FLAG_MATCH_CACHED = 8; // 0x8
-    field public static final int FLAG_MATCH_DYNAMIC = 2; // 0x2
-    field public static final int FLAG_MATCH_MANIFEST = 1; // 0x1
-    field public static final int FLAG_MATCH_PINNED = 4; // 0x4
-  }
-
-  public class Signature implements android.os.Parcelable {
-    ctor public Signature(byte[]);
-    ctor public Signature(String);
-    method public int describeContents();
-    method public byte[] toByteArray();
-    method public char[] toChars();
-    method public char[] toChars(char[], int[]);
-    method public String toCharsString();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.Signature> CREATOR;
-  }
-
-  public final class SigningInfo implements android.os.Parcelable {
-    ctor public SigningInfo();
-    ctor public SigningInfo(android.content.pm.SigningInfo);
-    method public int describeContents();
-    method public android.content.pm.Signature[] getApkContentsSigners();
-    method public android.content.pm.Signature[] getSigningCertificateHistory();
-    method public boolean hasMultipleSigners();
-    method public boolean hasPastSigningCertificates();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.SigningInfo> CREATOR;
-  }
-
-  public final class VersionedPackage implements android.os.Parcelable {
-    ctor public VersionedPackage(@NonNull String, int);
-    ctor public VersionedPackage(@NonNull String, long);
-    method public int describeContents();
-    method public long getLongVersionCode();
-    method @NonNull public String getPackageName();
-    method @Deprecated public int getVersionCode();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.VersionedPackage> CREATOR;
-  }
-
-}
-
-package android.content.res {
-
-  public class AssetFileDescriptor implements java.io.Closeable android.os.Parcelable {
-    ctor public AssetFileDescriptor(android.os.ParcelFileDescriptor, long, long);
-    ctor public AssetFileDescriptor(android.os.ParcelFileDescriptor, long, long, android.os.Bundle);
-    method public void close() throws java.io.IOException;
-    method public java.io.FileInputStream createInputStream() throws java.io.IOException;
-    method public java.io.FileOutputStream createOutputStream() throws java.io.IOException;
-    method public int describeContents();
-    method public long getDeclaredLength();
-    method public android.os.Bundle getExtras();
-    method public java.io.FileDescriptor getFileDescriptor();
-    method public long getLength();
-    method public android.os.ParcelFileDescriptor getParcelFileDescriptor();
-    method public long getStartOffset();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.res.AssetFileDescriptor> CREATOR;
-    field public static final long UNKNOWN_LENGTH = -1L; // 0xffffffffffffffffL
-  }
-
-  public static class AssetFileDescriptor.AutoCloseInputStream extends android.os.ParcelFileDescriptor.AutoCloseInputStream {
-    ctor public AssetFileDescriptor.AutoCloseInputStream(android.content.res.AssetFileDescriptor) throws java.io.IOException;
-  }
-
-  public static class AssetFileDescriptor.AutoCloseOutputStream extends android.os.ParcelFileDescriptor.AutoCloseOutputStream {
-    ctor public AssetFileDescriptor.AutoCloseOutputStream(android.content.res.AssetFileDescriptor) throws java.io.IOException;
-  }
-
-  public final class AssetManager implements java.lang.AutoCloseable {
-    method public void close();
-    method public String[] getLocales();
-    method @Nullable public String[] list(@NonNull String) throws java.io.IOException;
-    method @NonNull public java.io.InputStream open(@NonNull String) throws java.io.IOException;
-    method @NonNull public java.io.InputStream open(@NonNull String, int) throws java.io.IOException;
-    method @NonNull public android.content.res.AssetFileDescriptor openFd(@NonNull String) throws java.io.IOException;
-    method @NonNull public android.content.res.AssetFileDescriptor openNonAssetFd(@NonNull String) throws java.io.IOException;
-    method @NonNull public android.content.res.AssetFileDescriptor openNonAssetFd(int, @NonNull String) throws java.io.IOException;
-    method @NonNull public android.content.res.XmlResourceParser openXmlResourceParser(@NonNull String) throws java.io.IOException;
-    method @NonNull public android.content.res.XmlResourceParser openXmlResourceParser(int, @NonNull String) throws java.io.IOException;
-    field public static final int ACCESS_BUFFER = 3; // 0x3
-    field public static final int ACCESS_RANDOM = 1; // 0x1
-    field public static final int ACCESS_STREAMING = 2; // 0x2
-    field public static final int ACCESS_UNKNOWN = 0; // 0x0
-  }
-
-  public final class AssetManager.AssetInputStream extends java.io.InputStream {
-    method public int read() throws java.io.IOException;
-  }
-
-  public class ColorStateList implements android.os.Parcelable {
-    ctor public ColorStateList(int[][], @ColorInt int[]);
-    method @Deprecated @NonNull public static android.content.res.ColorStateList createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method @NonNull public static android.content.res.ColorStateList createFromXml(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, @Nullable android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public int describeContents();
-    method public int getChangingConfigurations();
-    method public int getColorForState(@Nullable int[], int);
-    method @ColorInt public int getDefaultColor();
-    method public boolean isOpaque();
-    method public boolean isStateful();
-    method @NonNull public static android.content.res.ColorStateList valueOf(@ColorInt int);
-    method @NonNull public android.content.res.ColorStateList withAlpha(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.res.ColorStateList> CREATOR;
-  }
-
-  public final class Configuration implements java.lang.Comparable<android.content.res.Configuration> android.os.Parcelable {
-    ctor public Configuration();
-    ctor public Configuration(android.content.res.Configuration);
-    method public int compareTo(android.content.res.Configuration);
-    method public int describeContents();
-    method public int diff(android.content.res.Configuration);
-    method public boolean equals(android.content.res.Configuration);
-    method public int getLayoutDirection();
-    method @NonNull public android.os.LocaleList getLocales();
-    method public boolean isLayoutSizeAtLeast(int);
-    method public boolean isNightModeActive();
-    method public boolean isScreenHdr();
-    method public boolean isScreenRound();
-    method public boolean isScreenWideColorGamut();
-    method public static boolean needNewResources(int, int);
-    method public void readFromParcel(android.os.Parcel);
-    method public void setLayoutDirection(java.util.Locale);
-    method public void setLocale(@Nullable java.util.Locale);
-    method public void setLocales(@Nullable android.os.LocaleList);
-    method public void setTo(android.content.res.Configuration);
-    method public void setToDefaults();
-    method public int updateFrom(@NonNull android.content.res.Configuration);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int COLOR_MODE_HDR_MASK = 12; // 0xc
-    field public static final int COLOR_MODE_HDR_NO = 4; // 0x4
-    field public static final int COLOR_MODE_HDR_SHIFT = 2; // 0x2
-    field public static final int COLOR_MODE_HDR_UNDEFINED = 0; // 0x0
-    field public static final int COLOR_MODE_HDR_YES = 8; // 0x8
-    field public static final int COLOR_MODE_UNDEFINED = 0; // 0x0
-    field public static final int COLOR_MODE_WIDE_COLOR_GAMUT_MASK = 3; // 0x3
-    field public static final int COLOR_MODE_WIDE_COLOR_GAMUT_NO = 1; // 0x1
-    field public static final int COLOR_MODE_WIDE_COLOR_GAMUT_UNDEFINED = 0; // 0x0
-    field public static final int COLOR_MODE_WIDE_COLOR_GAMUT_YES = 2; // 0x2
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.res.Configuration> CREATOR;
-    field public static final int DENSITY_DPI_UNDEFINED = 0; // 0x0
-    field public static final int HARDKEYBOARDHIDDEN_NO = 1; // 0x1
-    field public static final int HARDKEYBOARDHIDDEN_UNDEFINED = 0; // 0x0
-    field public static final int HARDKEYBOARDHIDDEN_YES = 2; // 0x2
-    field public static final int KEYBOARDHIDDEN_NO = 1; // 0x1
-    field public static final int KEYBOARDHIDDEN_UNDEFINED = 0; // 0x0
-    field public static final int KEYBOARDHIDDEN_YES = 2; // 0x2
-    field public static final int KEYBOARD_12KEY = 3; // 0x3
-    field public static final int KEYBOARD_NOKEYS = 1; // 0x1
-    field public static final int KEYBOARD_QWERTY = 2; // 0x2
-    field public static final int KEYBOARD_UNDEFINED = 0; // 0x0
-    field public static final int MNC_ZERO = 65535; // 0xffff
-    field public static final int NAVIGATIONHIDDEN_NO = 1; // 0x1
-    field public static final int NAVIGATIONHIDDEN_UNDEFINED = 0; // 0x0
-    field public static final int NAVIGATIONHIDDEN_YES = 2; // 0x2
-    field public static final int NAVIGATION_DPAD = 2; // 0x2
-    field public static final int NAVIGATION_NONAV = 1; // 0x1
-    field public static final int NAVIGATION_TRACKBALL = 3; // 0x3
-    field public static final int NAVIGATION_UNDEFINED = 0; // 0x0
-    field public static final int NAVIGATION_WHEEL = 4; // 0x4
-    field public static final int ORIENTATION_LANDSCAPE = 2; // 0x2
-    field public static final int ORIENTATION_PORTRAIT = 1; // 0x1
-    field @Deprecated public static final int ORIENTATION_SQUARE = 3; // 0x3
-    field public static final int ORIENTATION_UNDEFINED = 0; // 0x0
-    field public static final int SCREENLAYOUT_LAYOUTDIR_LTR = 64; // 0x40
-    field public static final int SCREENLAYOUT_LAYOUTDIR_MASK = 192; // 0xc0
-    field public static final int SCREENLAYOUT_LAYOUTDIR_RTL = 128; // 0x80
-    field public static final int SCREENLAYOUT_LAYOUTDIR_SHIFT = 6; // 0x6
-    field public static final int SCREENLAYOUT_LAYOUTDIR_UNDEFINED = 0; // 0x0
-    field public static final int SCREENLAYOUT_LONG_MASK = 48; // 0x30
-    field public static final int SCREENLAYOUT_LONG_NO = 16; // 0x10
-    field public static final int SCREENLAYOUT_LONG_UNDEFINED = 0; // 0x0
-    field public static final int SCREENLAYOUT_LONG_YES = 32; // 0x20
-    field public static final int SCREENLAYOUT_ROUND_MASK = 768; // 0x300
-    field public static final int SCREENLAYOUT_ROUND_NO = 256; // 0x100
-    field public static final int SCREENLAYOUT_ROUND_UNDEFINED = 0; // 0x0
-    field public static final int SCREENLAYOUT_ROUND_YES = 512; // 0x200
-    field public static final int SCREENLAYOUT_SIZE_LARGE = 3; // 0x3
-    field public static final int SCREENLAYOUT_SIZE_MASK = 15; // 0xf
-    field public static final int SCREENLAYOUT_SIZE_NORMAL = 2; // 0x2
-    field public static final int SCREENLAYOUT_SIZE_SMALL = 1; // 0x1
-    field public static final int SCREENLAYOUT_SIZE_UNDEFINED = 0; // 0x0
-    field public static final int SCREENLAYOUT_SIZE_XLARGE = 4; // 0x4
-    field public static final int SCREENLAYOUT_UNDEFINED = 0; // 0x0
-    field public static final int SCREEN_HEIGHT_DP_UNDEFINED = 0; // 0x0
-    field public static final int SCREEN_WIDTH_DP_UNDEFINED = 0; // 0x0
-    field public static final int SMALLEST_SCREEN_WIDTH_DP_UNDEFINED = 0; // 0x0
-    field public static final int TOUCHSCREEN_FINGER = 3; // 0x3
-    field public static final int TOUCHSCREEN_NOTOUCH = 1; // 0x1
-    field @Deprecated public static final int TOUCHSCREEN_STYLUS = 2; // 0x2
-    field public static final int TOUCHSCREEN_UNDEFINED = 0; // 0x0
-    field public static final int UI_MODE_NIGHT_MASK = 48; // 0x30
-    field public static final int UI_MODE_NIGHT_NO = 16; // 0x10
-    field public static final int UI_MODE_NIGHT_UNDEFINED = 0; // 0x0
-    field public static final int UI_MODE_NIGHT_YES = 32; // 0x20
-    field public static final int UI_MODE_TYPE_APPLIANCE = 5; // 0x5
-    field public static final int UI_MODE_TYPE_CAR = 3; // 0x3
-    field public static final int UI_MODE_TYPE_DESK = 2; // 0x2
-    field public static final int UI_MODE_TYPE_MASK = 15; // 0xf
-    field public static final int UI_MODE_TYPE_NORMAL = 1; // 0x1
-    field public static final int UI_MODE_TYPE_TELEVISION = 4; // 0x4
-    field public static final int UI_MODE_TYPE_UNDEFINED = 0; // 0x0
-    field public static final int UI_MODE_TYPE_VR_HEADSET = 7; // 0x7
-    field public static final int UI_MODE_TYPE_WATCH = 6; // 0x6
-    field public int colorMode;
-    field public int densityDpi;
-    field public float fontScale;
-    field public int hardKeyboardHidden;
-    field public int keyboard;
-    field public int keyboardHidden;
-    field @Deprecated public java.util.Locale locale;
-    field public int mcc;
-    field public int mnc;
-    field public int navigation;
-    field public int navigationHidden;
-    field public int orientation;
-    field public int screenHeightDp;
-    field public int screenLayout;
-    field public int screenWidthDp;
-    field public int smallestScreenWidthDp;
-    field public int touchscreen;
-    field public int uiMode;
-  }
-
-  public class ObbInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.res.ObbInfo> CREATOR;
-    field public static final int OBB_OVERLAY = 1; // 0x1
-    field public String filename;
-    field public int flags;
-    field public String packageName;
-    field public int version;
-  }
-
-  public class ObbScanner {
-    method public static android.content.res.ObbInfo getObbInfo(String) throws java.io.IOException;
-  }
-
-  public class Resources {
-    ctor @Deprecated public Resources(android.content.res.AssetManager, android.util.DisplayMetrics, android.content.res.Configuration);
-    method public void addLoaders(@NonNull android.content.res.loader.ResourcesLoader...);
-    method public final void finishPreloading();
-    method public final void flushLayoutCache();
-    method @NonNull public android.content.res.XmlResourceParser getAnimation(@AnimRes @AnimatorRes int) throws android.content.res.Resources.NotFoundException;
-    method public final android.content.res.AssetManager getAssets();
-    method @AnyRes public static int getAttributeSetSourceResId(@Nullable android.util.AttributeSet);
-    method public boolean getBoolean(@BoolRes int) throws android.content.res.Resources.NotFoundException;
-    method @Deprecated @ColorInt public int getColor(@ColorRes int) throws android.content.res.Resources.NotFoundException;
-    method @ColorInt public int getColor(@ColorRes int, @Nullable android.content.res.Resources.Theme) throws android.content.res.Resources.NotFoundException;
-    method @Deprecated @NonNull public android.content.res.ColorStateList getColorStateList(@ColorRes int) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public android.content.res.ColorStateList getColorStateList(@ColorRes int, @Nullable android.content.res.Resources.Theme) throws android.content.res.Resources.NotFoundException;
-    method public android.content.res.Configuration getConfiguration();
-    method public float getDimension(@DimenRes int) throws android.content.res.Resources.NotFoundException;
-    method public int getDimensionPixelOffset(@DimenRes int) throws android.content.res.Resources.NotFoundException;
-    method public int getDimensionPixelSize(@DimenRes int) throws android.content.res.Resources.NotFoundException;
-    method public android.util.DisplayMetrics getDisplayMetrics();
-    method @Deprecated public android.graphics.drawable.Drawable getDrawable(@DrawableRes int) throws android.content.res.Resources.NotFoundException;
-    method public android.graphics.drawable.Drawable getDrawable(@DrawableRes int, @Nullable android.content.res.Resources.Theme) throws android.content.res.Resources.NotFoundException;
-    method @Deprecated @Nullable public android.graphics.drawable.Drawable getDrawableForDensity(@DrawableRes int, int) throws android.content.res.Resources.NotFoundException;
-    method @Nullable public android.graphics.drawable.Drawable getDrawableForDensity(@DrawableRes int, int, @Nullable android.content.res.Resources.Theme);
-    method public float getFloat(@DimenRes int);
-    method @NonNull public android.graphics.Typeface getFont(@FontRes int) throws android.content.res.Resources.NotFoundException;
-    method public float getFraction(@FractionRes int, int, int);
-    method public int getIdentifier(String, String, String);
-    method @NonNull public int[] getIntArray(@ArrayRes int) throws android.content.res.Resources.NotFoundException;
-    method public int getInteger(@IntegerRes int) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public android.content.res.XmlResourceParser getLayout(@LayoutRes int) throws android.content.res.Resources.NotFoundException;
-    method @Deprecated public android.graphics.Movie getMovie(@RawRes int) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public String getQuantityString(@PluralsRes int, int, java.lang.Object...) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public String getQuantityString(@PluralsRes int, int) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public CharSequence getQuantityText(@PluralsRes int, int) throws android.content.res.Resources.NotFoundException;
-    method public String getResourceEntryName(@AnyRes int) throws android.content.res.Resources.NotFoundException;
-    method public String getResourceName(@AnyRes int) throws android.content.res.Resources.NotFoundException;
-    method public String getResourcePackageName(@AnyRes int) throws android.content.res.Resources.NotFoundException;
-    method public String getResourceTypeName(@AnyRes int) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public String getString(@StringRes int) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public String getString(@StringRes int, java.lang.Object...) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public String[] getStringArray(@ArrayRes int) throws android.content.res.Resources.NotFoundException;
-    method public static android.content.res.Resources getSystem();
-    method @NonNull public CharSequence getText(@StringRes int) throws android.content.res.Resources.NotFoundException;
-    method public CharSequence getText(@StringRes int, CharSequence);
-    method @NonNull public CharSequence[] getTextArray(@ArrayRes int) throws android.content.res.Resources.NotFoundException;
-    method public void getValue(@AnyRes int, android.util.TypedValue, boolean) throws android.content.res.Resources.NotFoundException;
-    method public void getValue(String, android.util.TypedValue, boolean) throws android.content.res.Resources.NotFoundException;
-    method public void getValueForDensity(@AnyRes int, int, android.util.TypedValue, boolean) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public android.content.res.XmlResourceParser getXml(@XmlRes int) throws android.content.res.Resources.NotFoundException;
-    method public final android.content.res.Resources.Theme newTheme();
-    method public android.content.res.TypedArray obtainAttributes(android.util.AttributeSet, @StyleableRes int[]);
-    method @NonNull public android.content.res.TypedArray obtainTypedArray(@ArrayRes int) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public java.io.InputStream openRawResource(@RawRes int) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public java.io.InputStream openRawResource(@RawRes int, android.util.TypedValue) throws android.content.res.Resources.NotFoundException;
-    method public android.content.res.AssetFileDescriptor openRawResourceFd(@RawRes int) throws android.content.res.Resources.NotFoundException;
-    method public void parseBundleExtra(String, android.util.AttributeSet, android.os.Bundle) throws org.xmlpull.v1.XmlPullParserException;
-    method public void parseBundleExtras(android.content.res.XmlResourceParser, android.os.Bundle) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public void removeLoaders(@NonNull android.content.res.loader.ResourcesLoader...);
-    method @Deprecated public void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics);
-    field @AnyRes public static final int ID_NULL = 0; // 0x0
-  }
-
-  public static class Resources.NotFoundException extends java.lang.RuntimeException {
-    ctor public Resources.NotFoundException();
-    ctor public Resources.NotFoundException(String);
-    ctor public Resources.NotFoundException(String, Exception);
-  }
-
-  public final class Resources.Theme {
-    method public void applyStyle(int, boolean);
-    method public void dump(int, String, String);
-    method @NonNull public int[] getAttributeResolutionStack(@AttrRes int, @StyleRes int, @StyleRes int);
-    method public int getChangingConfigurations();
-    method public android.graphics.drawable.Drawable getDrawable(@DrawableRes int) throws android.content.res.Resources.NotFoundException;
-    method @StyleRes public int getExplicitStyle(@Nullable android.util.AttributeSet);
-    method public android.content.res.Resources getResources();
-    method @NonNull public android.content.res.TypedArray obtainStyledAttributes(@NonNull @StyleableRes int[]);
-    method @NonNull public android.content.res.TypedArray obtainStyledAttributes(@StyleRes int, @NonNull @StyleableRes int[]) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public android.content.res.TypedArray obtainStyledAttributes(@Nullable android.util.AttributeSet, @NonNull @StyleableRes int[], @AttrRes int, @StyleRes int);
-    method public void rebase();
-    method public boolean resolveAttribute(int, android.util.TypedValue, boolean);
-    method public void setTo(android.content.res.Resources.Theme);
-  }
-
-  public class TypedArray {
-    method public boolean getBoolean(@StyleableRes int, boolean);
-    method public int getChangingConfigurations();
-    method @ColorInt public int getColor(@StyleableRes int, @ColorInt int);
-    method @Nullable public android.content.res.ColorStateList getColorStateList(@StyleableRes int);
-    method public float getDimension(@StyleableRes int, float);
-    method public int getDimensionPixelOffset(@StyleableRes int, int);
-    method public int getDimensionPixelSize(@StyleableRes int, int);
-    method @Nullable public android.graphics.drawable.Drawable getDrawable(@StyleableRes int);
-    method public float getFloat(@StyleableRes int, float);
-    method @Nullable public android.graphics.Typeface getFont(@StyleableRes int);
-    method public float getFraction(@StyleableRes int, int, int, float);
-    method public int getIndex(int);
-    method public int getIndexCount();
-    method public int getInt(@StyleableRes int, int);
-    method public int getInteger(@StyleableRes int, int);
-    method public int getLayoutDimension(@StyleableRes int, String);
-    method public int getLayoutDimension(@StyleableRes int, int);
-    method public String getNonResourceString(@StyleableRes int);
-    method public String getPositionDescription();
-    method @AnyRes public int getResourceId(@StyleableRes int, int);
-    method public android.content.res.Resources getResources();
-    method @AnyRes public int getSourceResourceId(@StyleableRes int, @AnyRes int);
-    method @Nullable public String getString(@StyleableRes int);
-    method public CharSequence getText(@StyleableRes int);
-    method public CharSequence[] getTextArray(@StyleableRes int);
-    method public int getType(@StyleableRes int);
-    method public boolean getValue(@StyleableRes int, android.util.TypedValue);
-    method public boolean hasValue(@StyleableRes int);
-    method public boolean hasValueOrEmpty(@StyleableRes int);
-    method public int length();
-    method public android.util.TypedValue peekValue(@StyleableRes int);
-    method public void recycle();
-  }
-
-  public interface XmlResourceParser extends org.xmlpull.v1.XmlPullParser android.util.AttributeSet java.lang.AutoCloseable {
-    method public void close();
-  }
-
-}
-
-package android.content.res.loader {
-
-  public interface AssetsProvider {
-    method @Nullable public default android.content.res.AssetFileDescriptor loadAssetFd(@NonNull String, int);
-  }
-
-  public class ResourcesLoader {
-    ctor public ResourcesLoader();
-    method public void addProvider(@NonNull android.content.res.loader.ResourcesProvider);
-    method public void clearProviders();
-    method @NonNull public java.util.List<android.content.res.loader.ResourcesProvider> getProviders();
-    method public void removeProvider(@NonNull android.content.res.loader.ResourcesProvider);
-    method public void setProviders(@NonNull java.util.List<android.content.res.loader.ResourcesProvider>);
-  }
-
-  public class ResourcesProvider implements java.lang.AutoCloseable java.io.Closeable {
-    method public void close();
-    method @NonNull public static android.content.res.loader.ResourcesProvider empty(@NonNull android.content.res.loader.AssetsProvider);
-    method @NonNull public static android.content.res.loader.ResourcesProvider loadFromApk(@NonNull android.os.ParcelFileDescriptor) throws java.io.IOException;
-    method @NonNull public static android.content.res.loader.ResourcesProvider loadFromApk(@NonNull android.os.ParcelFileDescriptor, @Nullable android.content.res.loader.AssetsProvider) throws java.io.IOException;
-    method @NonNull public static android.content.res.loader.ResourcesProvider loadFromDirectory(@NonNull String, @Nullable android.content.res.loader.AssetsProvider) throws java.io.IOException;
-    method @NonNull public static android.content.res.loader.ResourcesProvider loadFromSplit(@NonNull android.content.Context, @NonNull String) throws java.io.IOException;
-    method @NonNull public static android.content.res.loader.ResourcesProvider loadFromTable(@NonNull android.os.ParcelFileDescriptor, @Nullable android.content.res.loader.AssetsProvider) throws java.io.IOException;
-  }
-
-}
-
-package android.database {
-
-  public abstract class AbstractCursor implements android.database.CrossProcessCursor {
-    ctor public AbstractCursor();
-    method protected void checkPosition();
-    method public void close();
-    method public void copyStringToBuffer(int, android.database.CharArrayBuffer);
-    method public void deactivate();
-    method public void fillWindow(int, android.database.CursorWindow);
-    method protected void finalize();
-    method public byte[] getBlob(int);
-    method public int getColumnCount();
-    method public int getColumnIndex(String);
-    method public int getColumnIndexOrThrow(String);
-    method public String getColumnName(int);
-    method public android.os.Bundle getExtras();
-    method public android.net.Uri getNotificationUri();
-    method public final int getPosition();
-    method public int getType(int);
-    method @Deprecated protected Object getUpdatedField(int);
-    method public boolean getWantsAllOnMoveCalls();
-    method public android.database.CursorWindow getWindow();
-    method public final boolean isAfterLast();
-    method public final boolean isBeforeFirst();
-    method public boolean isClosed();
-    method @Deprecated protected boolean isFieldUpdated(int);
-    method public final boolean isFirst();
-    method public final boolean isLast();
-    method public final boolean move(int);
-    method public final boolean moveToFirst();
-    method public final boolean moveToLast();
-    method public final boolean moveToNext();
-    method public final boolean moveToPosition(int);
-    method public final boolean moveToPrevious();
-    method protected void onChange(boolean);
-    method public boolean onMove(int, int);
-    method public void registerContentObserver(android.database.ContentObserver);
-    method public void registerDataSetObserver(android.database.DataSetObserver);
-    method public boolean requery();
-    method public android.os.Bundle respond(android.os.Bundle);
-    method public void setExtras(android.os.Bundle);
-    method public void setNotificationUri(android.content.ContentResolver, android.net.Uri);
-    method public void unregisterContentObserver(android.database.ContentObserver);
-    method public void unregisterDataSetObserver(android.database.DataSetObserver);
-    field @Deprecated protected boolean mClosed;
-    field @Deprecated protected android.content.ContentResolver mContentResolver;
-    field @Deprecated protected int mPos;
-  }
-
-  protected static class AbstractCursor.SelfContentObserver extends android.database.ContentObserver {
-    ctor public AbstractCursor.SelfContentObserver(android.database.AbstractCursor);
-  }
-
-  public abstract class AbstractWindowedCursor extends android.database.AbstractCursor {
-    ctor public AbstractWindowedCursor();
-    method public double getDouble(int);
-    method public float getFloat(int);
-    method public int getInt(int);
-    method public long getLong(int);
-    method public short getShort(int);
-    method public String getString(int);
-    method public boolean hasWindow();
-    method @Deprecated public boolean isBlob(int);
-    method @Deprecated public boolean isFloat(int);
-    method @Deprecated public boolean isLong(int);
-    method public boolean isNull(int);
-    method @Deprecated public boolean isString(int);
-    method public void setWindow(android.database.CursorWindow);
-    field protected android.database.CursorWindow mWindow;
-  }
-
-  public final class CharArrayBuffer {
-    ctor public CharArrayBuffer(int);
-    ctor public CharArrayBuffer(char[]);
-    field public char[] data;
-    field public int sizeCopied;
-  }
-
-  public class ContentObservable extends android.database.Observable<android.database.ContentObserver> {
-    ctor public ContentObservable();
-    method @Deprecated public void dispatchChange(boolean);
-    method public void dispatchChange(boolean, android.net.Uri);
-    method @Deprecated public void notifyChange(boolean);
-    method public void registerObserver(android.database.ContentObserver);
-  }
-
-  public abstract class ContentObserver {
-    ctor public ContentObserver(android.os.Handler);
-    method public boolean deliverSelfNotifications();
-    method @Deprecated public final void dispatchChange(boolean);
-    method public final void dispatchChange(boolean, @Nullable android.net.Uri);
-    method public final void dispatchChange(boolean, @Nullable android.net.Uri, int);
-    method public final void dispatchChange(boolean, @NonNull java.util.Collection<android.net.Uri>, int);
-    method public void onChange(boolean);
-    method public void onChange(boolean, @Nullable android.net.Uri);
-    method public void onChange(boolean, @Nullable android.net.Uri, int);
-    method public void onChange(boolean, @NonNull java.util.Collection<android.net.Uri>, int);
-  }
-
-  public interface CrossProcessCursor extends android.database.Cursor {
-    method public void fillWindow(int, android.database.CursorWindow);
-    method public android.database.CursorWindow getWindow();
-    method public boolean onMove(int, int);
-  }
-
-  public class CrossProcessCursorWrapper extends android.database.CursorWrapper implements android.database.CrossProcessCursor {
-    ctor public CrossProcessCursorWrapper(android.database.Cursor);
-    method public void fillWindow(int, android.database.CursorWindow);
-    method public android.database.CursorWindow getWindow();
-    method public boolean onMove(int, int);
-  }
-
-  public interface Cursor extends java.io.Closeable {
-    method public void close();
-    method public void copyStringToBuffer(int, android.database.CharArrayBuffer);
-    method @Deprecated public void deactivate();
-    method public byte[] getBlob(int);
-    method public int getColumnCount();
-    method public int getColumnIndex(String);
-    method public int getColumnIndexOrThrow(String) throws java.lang.IllegalArgumentException;
-    method public String getColumnName(int);
-    method public String[] getColumnNames();
-    method public int getCount();
-    method public double getDouble(int);
-    method public android.os.Bundle getExtras();
-    method public float getFloat(int);
-    method public int getInt(int);
-    method public long getLong(int);
-    method public android.net.Uri getNotificationUri();
-    method @Nullable public default java.util.List<android.net.Uri> getNotificationUris();
-    method public int getPosition();
-    method public short getShort(int);
-    method public String getString(int);
-    method public int getType(int);
-    method public boolean getWantsAllOnMoveCalls();
-    method public boolean isAfterLast();
-    method public boolean isBeforeFirst();
-    method public boolean isClosed();
-    method public boolean isFirst();
-    method public boolean isLast();
-    method public boolean isNull(int);
-    method public boolean move(int);
-    method public boolean moveToFirst();
-    method public boolean moveToLast();
-    method public boolean moveToNext();
-    method public boolean moveToPosition(int);
-    method public boolean moveToPrevious();
-    method public void registerContentObserver(android.database.ContentObserver);
-    method public void registerDataSetObserver(android.database.DataSetObserver);
-    method @Deprecated public boolean requery();
-    method public android.os.Bundle respond(android.os.Bundle);
-    method public void setExtras(android.os.Bundle);
-    method public void setNotificationUri(android.content.ContentResolver, android.net.Uri);
-    method public default void setNotificationUris(@NonNull android.content.ContentResolver, @NonNull java.util.List<android.net.Uri>);
-    method public void unregisterContentObserver(android.database.ContentObserver);
-    method public void unregisterDataSetObserver(android.database.DataSetObserver);
-    field public static final int FIELD_TYPE_BLOB = 4; // 0x4
-    field public static final int FIELD_TYPE_FLOAT = 2; // 0x2
-    field public static final int FIELD_TYPE_INTEGER = 1; // 0x1
-    field public static final int FIELD_TYPE_NULL = 0; // 0x0
-    field public static final int FIELD_TYPE_STRING = 3; // 0x3
-  }
-
-  public class CursorIndexOutOfBoundsException extends java.lang.IndexOutOfBoundsException {
-    ctor public CursorIndexOutOfBoundsException(int, int);
-    ctor public CursorIndexOutOfBoundsException(String);
-  }
-
-  public final class CursorJoiner implements java.lang.Iterable<android.database.CursorJoiner.Result> java.util.Iterator<android.database.CursorJoiner.Result> {
-    ctor public CursorJoiner(android.database.Cursor, String[], android.database.Cursor, String[]);
-    method public boolean hasNext();
-    method public java.util.Iterator<android.database.CursorJoiner.Result> iterator();
-    method public android.database.CursorJoiner.Result next();
-  }
-
-  public enum CursorJoiner.Result {
-    enum_constant public static final android.database.CursorJoiner.Result BOTH;
-    enum_constant public static final android.database.CursorJoiner.Result LEFT;
-    enum_constant public static final android.database.CursorJoiner.Result RIGHT;
-  }
-
-  public class CursorWindow extends android.database.sqlite.SQLiteClosable implements android.os.Parcelable {
-    ctor public CursorWindow(String);
-    ctor public CursorWindow(String, long);
-    ctor @Deprecated public CursorWindow(boolean);
-    method public boolean allocRow();
-    method public void clear();
-    method public void copyStringToBuffer(int, int, android.database.CharArrayBuffer);
-    method public int describeContents();
-    method public void freeLastRow();
-    method public byte[] getBlob(int, int);
-    method public double getDouble(int, int);
-    method public float getFloat(int, int);
-    method public int getInt(int, int);
-    method public long getLong(int, int);
-    method public int getNumRows();
-    method public short getShort(int, int);
-    method public int getStartPosition();
-    method public String getString(int, int);
-    method public int getType(int, int);
-    method @Deprecated public boolean isBlob(int, int);
-    method @Deprecated public boolean isFloat(int, int);
-    method @Deprecated public boolean isLong(int, int);
-    method @Deprecated public boolean isNull(int, int);
-    method @Deprecated public boolean isString(int, int);
-    method public static android.database.CursorWindow newFromParcel(android.os.Parcel);
-    method protected void onAllReferencesReleased();
-    method public boolean putBlob(byte[], int, int);
-    method public boolean putDouble(double, int, int);
-    method public boolean putLong(long, int, int);
-    method public boolean putNull(int, int);
-    method public boolean putString(String, int, int);
-    method public boolean setNumColumns(int);
-    method public void setStartPosition(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.database.CursorWindow> CREATOR;
-  }
-
-  public class CursorWrapper implements android.database.Cursor {
-    ctor public CursorWrapper(android.database.Cursor);
-    method public void close();
-    method public void copyStringToBuffer(int, android.database.CharArrayBuffer);
-    method @Deprecated public void deactivate();
-    method public byte[] getBlob(int);
-    method public int getColumnCount();
-    method public int getColumnIndex(String);
-    method public int getColumnIndexOrThrow(String) throws java.lang.IllegalArgumentException;
-    method public String getColumnName(int);
-    method public String[] getColumnNames();
-    method public int getCount();
-    method public double getDouble(int);
-    method public android.os.Bundle getExtras();
-    method public float getFloat(int);
-    method public int getInt(int);
-    method public long getLong(int);
-    method public android.net.Uri getNotificationUri();
-    method public int getPosition();
-    method public short getShort(int);
-    method public String getString(int);
-    method public int getType(int);
-    method public boolean getWantsAllOnMoveCalls();
-    method public android.database.Cursor getWrappedCursor();
-    method public boolean isAfterLast();
-    method public boolean isBeforeFirst();
-    method public boolean isClosed();
-    method public boolean isFirst();
-    method public boolean isLast();
-    method public boolean isNull(int);
-    method public boolean move(int);
-    method public boolean moveToFirst();
-    method public boolean moveToLast();
-    method public boolean moveToNext();
-    method public boolean moveToPosition(int);
-    method public boolean moveToPrevious();
-    method public void registerContentObserver(android.database.ContentObserver);
-    method public void registerDataSetObserver(android.database.DataSetObserver);
-    method @Deprecated public boolean requery();
-    method public android.os.Bundle respond(android.os.Bundle);
-    method public void setExtras(android.os.Bundle);
-    method public void setNotificationUri(android.content.ContentResolver, android.net.Uri);
-    method public void unregisterContentObserver(android.database.ContentObserver);
-    method public void unregisterDataSetObserver(android.database.DataSetObserver);
-  }
-
-  public class DataSetObservable extends android.database.Observable<android.database.DataSetObserver> {
-    ctor public DataSetObservable();
-    method public void notifyChanged();
-    method public void notifyInvalidated();
-  }
-
-  public abstract class DataSetObserver {
-    ctor public DataSetObserver();
-    method public void onChanged();
-    method public void onInvalidated();
-  }
-
-  public interface DatabaseErrorHandler {
-    method public void onCorruption(android.database.sqlite.SQLiteDatabase);
-  }
-
-  public class DatabaseUtils {
-    ctor public DatabaseUtils();
-    method public static void appendEscapedSQLString(StringBuilder, String);
-    method public static String[] appendSelectionArgs(String[], String[]);
-    method public static final void appendValueToSql(StringBuilder, Object);
-    method public static void bindObjectToProgram(android.database.sqlite.SQLiteProgram, int, Object);
-    method public static android.os.ParcelFileDescriptor blobFileDescriptorForQuery(android.database.sqlite.SQLiteDatabase, String, String[]);
-    method public static android.os.ParcelFileDescriptor blobFileDescriptorForQuery(android.database.sqlite.SQLiteStatement, String[]);
-    method public static String concatenateWhere(String, String);
-    method public static void createDbFromSqlStatements(android.content.Context, String, int, String);
-    method public static void cursorDoubleToContentValues(android.database.Cursor, String, android.content.ContentValues, String);
-    method public static void cursorDoubleToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, String);
-    method public static void cursorDoubleToCursorValues(android.database.Cursor, String, android.content.ContentValues);
-    method public static void cursorFloatToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, String);
-    method public static void cursorIntToContentValues(android.database.Cursor, String, android.content.ContentValues);
-    method public static void cursorIntToContentValues(android.database.Cursor, String, android.content.ContentValues, String);
-    method public static void cursorIntToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, String);
-    method public static void cursorLongToContentValues(android.database.Cursor, String, android.content.ContentValues);
-    method public static void cursorLongToContentValues(android.database.Cursor, String, android.content.ContentValues, String);
-    method public static void cursorLongToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, String);
-    method public static void cursorRowToContentValues(android.database.Cursor, android.content.ContentValues);
-    method public static void cursorShortToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, String);
-    method public static void cursorStringToContentValues(android.database.Cursor, String, android.content.ContentValues);
-    method public static void cursorStringToContentValues(android.database.Cursor, String, android.content.ContentValues, String);
-    method public static void cursorStringToContentValuesIfPresent(android.database.Cursor, android.content.ContentValues, String);
-    method public static void cursorStringToInsertHelper(android.database.Cursor, String, android.database.DatabaseUtils.InsertHelper, int);
-    method public static void dumpCurrentRow(android.database.Cursor);
-    method public static void dumpCurrentRow(android.database.Cursor, java.io.PrintStream);
-    method public static void dumpCurrentRow(android.database.Cursor, StringBuilder);
-    method public static String dumpCurrentRowToString(android.database.Cursor);
-    method public static void dumpCursor(android.database.Cursor);
-    method public static void dumpCursor(android.database.Cursor, java.io.PrintStream);
-    method public static void dumpCursor(android.database.Cursor, StringBuilder);
-    method public static String dumpCursorToString(android.database.Cursor);
-    method public static String getCollationKey(String);
-    method public static String getHexCollationKey(String);
-    method public static int getSqlStatementType(String);
-    method public static long longForQuery(android.database.sqlite.SQLiteDatabase, String, String[]);
-    method public static long longForQuery(android.database.sqlite.SQLiteStatement, String[]);
-    method public static long queryNumEntries(android.database.sqlite.SQLiteDatabase, String);
-    method public static long queryNumEntries(android.database.sqlite.SQLiteDatabase, String, String);
-    method public static long queryNumEntries(android.database.sqlite.SQLiteDatabase, String, String, String[]);
-    method public static final void readExceptionFromParcel(android.os.Parcel);
-    method public static void readExceptionWithFileNotFoundExceptionFromParcel(android.os.Parcel) throws java.io.FileNotFoundException;
-    method public static void readExceptionWithOperationApplicationExceptionFromParcel(android.os.Parcel) throws android.content.OperationApplicationException;
-    method public static String sqlEscapeString(String);
-    method public static String stringForQuery(android.database.sqlite.SQLiteDatabase, String, String[]);
-    method public static String stringForQuery(android.database.sqlite.SQLiteStatement, String[]);
-    method public static final void writeExceptionToParcel(android.os.Parcel, Exception);
-    field public static final int STATEMENT_ABORT = 6; // 0x6
-    field public static final int STATEMENT_ATTACH = 3; // 0x3
-    field public static final int STATEMENT_BEGIN = 4; // 0x4
-    field public static final int STATEMENT_COMMIT = 5; // 0x5
-    field public static final int STATEMENT_DDL = 8; // 0x8
-    field public static final int STATEMENT_OTHER = 99; // 0x63
-    field public static final int STATEMENT_PRAGMA = 7; // 0x7
-    field public static final int STATEMENT_SELECT = 1; // 0x1
-    field public static final int STATEMENT_UNPREPARED = 9; // 0x9
-    field public static final int STATEMENT_UPDATE = 2; // 0x2
-  }
-
-  @Deprecated public static class DatabaseUtils.InsertHelper {
-    ctor @Deprecated public DatabaseUtils.InsertHelper(android.database.sqlite.SQLiteDatabase, String);
-    method @Deprecated public void bind(int, double);
-    method @Deprecated public void bind(int, float);
-    method @Deprecated public void bind(int, long);
-    method @Deprecated public void bind(int, int);
-    method @Deprecated public void bind(int, boolean);
-    method @Deprecated public void bind(int, byte[]);
-    method @Deprecated public void bind(int, String);
-    method @Deprecated public void bindNull(int);
-    method @Deprecated public void close();
-    method @Deprecated public long execute();
-    method @Deprecated public int getColumnIndex(String);
-    method @Deprecated public long insert(android.content.ContentValues);
-    method @Deprecated public void prepareForInsert();
-    method @Deprecated public void prepareForReplace();
-    method @Deprecated public long replace(android.content.ContentValues);
-  }
-
-  public final class DefaultDatabaseErrorHandler implements android.database.DatabaseErrorHandler {
-    ctor public DefaultDatabaseErrorHandler();
-    method public void onCorruption(android.database.sqlite.SQLiteDatabase);
-  }
-
-  public class MatrixCursor extends android.database.AbstractCursor {
-    ctor public MatrixCursor(String[], int);
-    ctor public MatrixCursor(String[]);
-    method public void addRow(Object[]);
-    method public void addRow(Iterable<?>);
-    method public String[] getColumnNames();
-    method public int getCount();
-    method public double getDouble(int);
-    method public float getFloat(int);
-    method public int getInt(int);
-    method public long getLong(int);
-    method public short getShort(int);
-    method public String getString(int);
-    method public boolean isNull(int);
-    method public android.database.MatrixCursor.RowBuilder newRow();
-  }
-
-  public class MatrixCursor.RowBuilder {
-    method public android.database.MatrixCursor.RowBuilder add(Object);
-    method public android.database.MatrixCursor.RowBuilder add(String, Object);
-  }
-
-  public class MergeCursor extends android.database.AbstractCursor {
-    ctor public MergeCursor(android.database.Cursor[]);
-    method public String[] getColumnNames();
-    method public int getCount();
-    method public double getDouble(int);
-    method public float getFloat(int);
-    method public int getInt(int);
-    method public long getLong(int);
-    method public short getShort(int);
-    method public String getString(int);
-    method public boolean isNull(int);
-  }
-
-  public abstract class Observable<T> {
-    ctor public Observable();
-    method public void registerObserver(T);
-    method public void unregisterAll();
-    method public void unregisterObserver(T);
-    field protected final java.util.ArrayList<T> mObservers;
-  }
-
-  public class SQLException extends java.lang.RuntimeException {
-    ctor public SQLException();
-    ctor public SQLException(String);
-    ctor public SQLException(String, Throwable);
-  }
-
-  public class StaleDataException extends java.lang.RuntimeException {
-    ctor public StaleDataException();
-    ctor public StaleDataException(String);
-  }
-
-}
-
-package android.database.sqlite {
-
-  public class SQLiteAbortException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteAbortException();
-    ctor public SQLiteAbortException(String);
-  }
-
-  public class SQLiteAccessPermException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteAccessPermException();
-    ctor public SQLiteAccessPermException(String);
-  }
-
-  public class SQLiteBindOrColumnIndexOutOfRangeException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteBindOrColumnIndexOutOfRangeException();
-    ctor public SQLiteBindOrColumnIndexOutOfRangeException(String);
-  }
-
-  public class SQLiteBlobTooBigException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteBlobTooBigException();
-    ctor public SQLiteBlobTooBigException(String);
-  }
-
-  public class SQLiteCantOpenDatabaseException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteCantOpenDatabaseException();
-    ctor public SQLiteCantOpenDatabaseException(String);
-  }
-
-  public abstract class SQLiteClosable implements java.io.Closeable {
-    ctor public SQLiteClosable();
-    method public void acquireReference();
-    method public void close();
-    method protected abstract void onAllReferencesReleased();
-    method @Deprecated protected void onAllReferencesReleasedFromContainer();
-    method public void releaseReference();
-    method @Deprecated public void releaseReferenceFromContainer();
-  }
-
-  public class SQLiteConstraintException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteConstraintException();
-    ctor public SQLiteConstraintException(String);
-  }
-
-  public class SQLiteCursor extends android.database.AbstractWindowedCursor {
-    ctor @Deprecated public SQLiteCursor(android.database.sqlite.SQLiteDatabase, android.database.sqlite.SQLiteCursorDriver, String, android.database.sqlite.SQLiteQuery);
-    ctor public SQLiteCursor(android.database.sqlite.SQLiteCursorDriver, String, android.database.sqlite.SQLiteQuery);
-    method public String[] getColumnNames();
-    method public int getCount();
-    method public android.database.sqlite.SQLiteDatabase getDatabase();
-    method public void setFillWindowForwardOnly(boolean);
-    method public void setSelectionArguments(String[]);
-  }
-
-  public interface SQLiteCursorDriver {
-    method public void cursorClosed();
-    method public void cursorDeactivated();
-    method public void cursorRequeried(android.database.Cursor);
-    method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase.CursorFactory, String[]);
-    method public void setBindArguments(String[]);
-  }
-
-  public final class SQLiteDatabase extends android.database.sqlite.SQLiteClosable {
-    method public void beginTransaction();
-    method public void beginTransactionNonExclusive();
-    method public void beginTransactionWithListener(android.database.sqlite.SQLiteTransactionListener);
-    method public void beginTransactionWithListenerNonExclusive(android.database.sqlite.SQLiteTransactionListener);
-    method public android.database.sqlite.SQLiteStatement compileStatement(String) throws android.database.SQLException;
-    method @NonNull public static android.database.sqlite.SQLiteDatabase create(@Nullable android.database.sqlite.SQLiteDatabase.CursorFactory);
-    method @NonNull public static android.database.sqlite.SQLiteDatabase createInMemory(@NonNull android.database.sqlite.SQLiteDatabase.OpenParams);
-    method public int delete(String, String, String[]);
-    method public static boolean deleteDatabase(@NonNull java.io.File);
-    method public void disableWriteAheadLogging();
-    method public boolean enableWriteAheadLogging();
-    method public void endTransaction();
-    method public void execPerConnectionSQL(@NonNull String, @Nullable Object[]) throws android.database.SQLException;
-    method public void execSQL(String) throws android.database.SQLException;
-    method public void execSQL(String, Object[]) throws android.database.SQLException;
-    method public static String findEditTable(String);
-    method public java.util.List<android.util.Pair<java.lang.String,java.lang.String>> getAttachedDbs();
-    method public long getMaximumSize();
-    method public long getPageSize();
-    method public String getPath();
-    method @Deprecated public java.util.Map<java.lang.String,java.lang.String> getSyncedTables();
-    method public int getVersion();
-    method public boolean inTransaction();
-    method public long insert(String, String, android.content.ContentValues);
-    method public long insertOrThrow(String, String, android.content.ContentValues) throws android.database.SQLException;
-    method public long insertWithOnConflict(String, String, android.content.ContentValues, int);
-    method public boolean isDatabaseIntegrityOk();
-    method public boolean isDbLockedByCurrentThread();
-    method @Deprecated public boolean isDbLockedByOtherThreads();
-    method public boolean isOpen();
-    method public boolean isReadOnly();
-    method public boolean isWriteAheadLoggingEnabled();
-    method @Deprecated public void markTableSyncable(String, String);
-    method @Deprecated public void markTableSyncable(String, String, String);
-    method public boolean needUpgrade(int);
-    method protected void onAllReferencesReleased();
-    method public static android.database.sqlite.SQLiteDatabase openDatabase(@NonNull String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, int);
-    method public static android.database.sqlite.SQLiteDatabase openDatabase(@NonNull java.io.File, @NonNull android.database.sqlite.SQLiteDatabase.OpenParams);
-    method public static android.database.sqlite.SQLiteDatabase openDatabase(@NonNull String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, int, @Nullable android.database.DatabaseErrorHandler);
-    method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(@NonNull java.io.File, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory);
-    method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(@NonNull String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory);
-    method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(@NonNull String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, @Nullable android.database.DatabaseErrorHandler);
-    method public android.database.Cursor query(boolean, String, String[], String, String[], String, String, String, String);
-    method public android.database.Cursor query(boolean, String, String[], String, String[], String, String, String, String, android.os.CancellationSignal);
-    method public android.database.Cursor query(String, String[], String, String[], String, String, String);
-    method public android.database.Cursor query(String, String[], String, String[], String, String, String, String);
-    method public android.database.Cursor queryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, boolean, String, String[], String, String[], String, String, String, String);
-    method public android.database.Cursor queryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, boolean, String, String[], String, String[], String, String, String, String, android.os.CancellationSignal);
-    method public android.database.Cursor rawQuery(String, String[]);
-    method public android.database.Cursor rawQuery(String, String[], android.os.CancellationSignal);
-    method public android.database.Cursor rawQueryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, String, String[], String);
-    method public android.database.Cursor rawQueryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, String, String[], String, android.os.CancellationSignal);
-    method public static int releaseMemory();
-    method public long replace(String, String, android.content.ContentValues);
-    method public long replaceOrThrow(String, String, android.content.ContentValues) throws android.database.SQLException;
-    method public void setCustomAggregateFunction(@NonNull String, @NonNull java.util.function.BinaryOperator<java.lang.String>) throws android.database.sqlite.SQLiteException;
-    method public void setCustomScalarFunction(@NonNull String, @NonNull java.util.function.UnaryOperator<java.lang.String>) throws android.database.sqlite.SQLiteException;
-    method public void setForeignKeyConstraintsEnabled(boolean);
-    method public void setLocale(java.util.Locale);
-    method @Deprecated public void setLockingEnabled(boolean);
-    method public void setMaxSqlCacheSize(int);
-    method public long setMaximumSize(long);
-    method public void setPageSize(long);
-    method public void setTransactionSuccessful();
-    method public void setVersion(int);
-    method public int update(String, android.content.ContentValues, String, String[]);
-    method public int updateWithOnConflict(String, android.content.ContentValues, String, String[], int);
-    method public void validateSql(@NonNull String, @Nullable android.os.CancellationSignal);
-    method @Deprecated public boolean yieldIfContended();
-    method public boolean yieldIfContendedSafely();
-    method public boolean yieldIfContendedSafely(long);
-    field public static final int CONFLICT_ABORT = 2; // 0x2
-    field public static final int CONFLICT_FAIL = 3; // 0x3
-    field public static final int CONFLICT_IGNORE = 4; // 0x4
-    field public static final int CONFLICT_NONE = 0; // 0x0
-    field public static final int CONFLICT_REPLACE = 5; // 0x5
-    field public static final int CONFLICT_ROLLBACK = 1; // 0x1
-    field public static final int CREATE_IF_NECESSARY = 268435456; // 0x10000000
-    field public static final int ENABLE_WRITE_AHEAD_LOGGING = 536870912; // 0x20000000
-    field public static final int MAX_SQL_CACHE_SIZE = 100; // 0x64
-    field public static final int NO_LOCALIZED_COLLATORS = 16; // 0x10
-    field public static final int OPEN_READONLY = 1; // 0x1
-    field public static final int OPEN_READWRITE = 0; // 0x0
-    field public static final int SQLITE_MAX_LIKE_PATTERN_LENGTH = 50000; // 0xc350
-  }
-
-  public static interface SQLiteDatabase.CursorFactory {
-    method public android.database.Cursor newCursor(android.database.sqlite.SQLiteDatabase, android.database.sqlite.SQLiteCursorDriver, String, android.database.sqlite.SQLiteQuery);
-  }
-
-  public static final class SQLiteDatabase.OpenParams {
-    method @Nullable public android.database.sqlite.SQLiteDatabase.CursorFactory getCursorFactory();
-    method @Nullable public android.database.DatabaseErrorHandler getErrorHandler();
-    method public long getIdleConnectionTimeout();
-    method @Nullable public String getJournalMode();
-    method @IntRange(from=0xffffffff) public int getLookasideSlotCount();
-    method @IntRange(from=0xffffffff) public int getLookasideSlotSize();
-    method public int getOpenFlags();
-    method @Nullable public String getSynchronousMode();
-  }
-
-  public static final class SQLiteDatabase.OpenParams.Builder {
-    ctor public SQLiteDatabase.OpenParams.Builder();
-    ctor public SQLiteDatabase.OpenParams.Builder(android.database.sqlite.SQLiteDatabase.OpenParams);
-    method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder addOpenFlags(int);
-    method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams build();
-    method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder removeOpenFlags(int);
-    method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setCursorFactory(@Nullable android.database.sqlite.SQLiteDatabase.CursorFactory);
-    method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setErrorHandler(@Nullable android.database.DatabaseErrorHandler);
-    method @Deprecated @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setIdleConnectionTimeout(@IntRange(from=0) long);
-    method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setJournalMode(@NonNull String);
-    method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setLookasideConfig(@IntRange(from=0) int, @IntRange(from=0) int);
-    method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setOpenFlags(int);
-    method @NonNull public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setSynchronousMode(@NonNull String);
-  }
-
-  public class SQLiteDatabaseCorruptException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteDatabaseCorruptException();
-    ctor public SQLiteDatabaseCorruptException(String);
-  }
-
-  public class SQLiteDatabaseLockedException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteDatabaseLockedException();
-    ctor public SQLiteDatabaseLockedException(String);
-  }
-
-  public class SQLiteDatatypeMismatchException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteDatatypeMismatchException();
-    ctor public SQLiteDatatypeMismatchException(String);
-  }
-
-  public class SQLiteDiskIOException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteDiskIOException();
-    ctor public SQLiteDiskIOException(String);
-  }
-
-  public class SQLiteDoneException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteDoneException();
-    ctor public SQLiteDoneException(String);
-  }
-
-  public class SQLiteException extends android.database.SQLException {
-    ctor public SQLiteException();
-    ctor public SQLiteException(String);
-    ctor public SQLiteException(String, Throwable);
-  }
-
-  public class SQLiteFullException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteFullException();
-    ctor public SQLiteFullException(String);
-  }
-
-  public class SQLiteMisuseException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteMisuseException();
-    ctor public SQLiteMisuseException(String);
-  }
-
-  public abstract class SQLiteOpenHelper implements java.lang.AutoCloseable {
-    ctor public SQLiteOpenHelper(@Nullable android.content.Context, @Nullable String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, int);
-    ctor public SQLiteOpenHelper(@Nullable android.content.Context, @Nullable String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, int, @Nullable android.database.DatabaseErrorHandler);
-    ctor public SQLiteOpenHelper(@Nullable android.content.Context, @Nullable String, int, @NonNull android.database.sqlite.SQLiteDatabase.OpenParams);
-    method public void close();
-    method public String getDatabaseName();
-    method public android.database.sqlite.SQLiteDatabase getReadableDatabase();
-    method public android.database.sqlite.SQLiteDatabase getWritableDatabase();
-    method public void onConfigure(android.database.sqlite.SQLiteDatabase);
-    method public abstract void onCreate(android.database.sqlite.SQLiteDatabase);
-    method public void onDowngrade(android.database.sqlite.SQLiteDatabase, int, int);
-    method public void onOpen(android.database.sqlite.SQLiteDatabase);
-    method public abstract void onUpgrade(android.database.sqlite.SQLiteDatabase, int, int);
-    method @Deprecated public void setIdleConnectionTimeout(@IntRange(from=0) long);
-    method public void setLookasideConfig(@IntRange(from=0) int, @IntRange(from=0) int);
-    method public void setOpenParams(@NonNull android.database.sqlite.SQLiteDatabase.OpenParams);
-    method public void setWriteAheadLoggingEnabled(boolean);
-  }
-
-  public class SQLiteOutOfMemoryException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteOutOfMemoryException();
-    ctor public SQLiteOutOfMemoryException(String);
-  }
-
-  public abstract class SQLiteProgram extends android.database.sqlite.SQLiteClosable {
-    method public void bindAllArgsAsStrings(String[]);
-    method public void bindBlob(int, byte[]);
-    method public void bindDouble(int, double);
-    method public void bindLong(int, long);
-    method public void bindNull(int);
-    method public void bindString(int, String);
-    method public void clearBindings();
-    method @Deprecated public final int getUniqueId();
-    method protected void onAllReferencesReleased();
-  }
-
-  public final class SQLiteQuery extends android.database.sqlite.SQLiteProgram {
-  }
-
-  public class SQLiteQueryBuilder {
-    ctor public SQLiteQueryBuilder();
-    method public static void appendColumns(StringBuilder, String[]);
-    method public void appendWhere(@NonNull CharSequence);
-    method public void appendWhereEscapeString(@NonNull String);
-    method public void appendWhereStandalone(@NonNull CharSequence);
-    method public String buildQuery(String[], String, String, String, String, String);
-    method @Deprecated public String buildQuery(String[], String, String[], String, String, String, String);
-    method public static String buildQueryString(boolean, String, String[], String, String, String, String, String);
-    method public String buildUnionQuery(String[], String, String);
-    method public String buildUnionSubQuery(String, String[], java.util.Set<java.lang.String>, int, String, String, String, String);
-    method @Deprecated public String buildUnionSubQuery(String, String[], java.util.Set<java.lang.String>, int, String, String, String[], String, String);
-    method public int delete(@NonNull android.database.sqlite.SQLiteDatabase, @Nullable String, @Nullable String[]);
-    method @Nullable public android.database.sqlite.SQLiteDatabase.CursorFactory getCursorFactory();
-    method @Nullable public java.util.Collection<java.util.regex.Pattern> getProjectionGreylist();
-    method @Nullable public java.util.Map<java.lang.String,java.lang.String> getProjectionMap();
-    method @Nullable public String getTables();
-    method public long insert(@NonNull android.database.sqlite.SQLiteDatabase, @NonNull android.content.ContentValues);
-    method public boolean isDistinct();
-    method public boolean isStrict();
-    method public boolean isStrictColumns();
-    method public boolean isStrictGrammar();
-    method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase, String[], String, String[], String, String, String);
-    method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase, String[], String, String[], String, String, String, String);
-    method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase, String[], String, String[], String, String, String, String, android.os.CancellationSignal);
-    method public void setCursorFactory(@Nullable android.database.sqlite.SQLiteDatabase.CursorFactory);
-    method public void setDistinct(boolean);
-    method public void setProjectionGreylist(@Nullable java.util.Collection<java.util.regex.Pattern>);
-    method public void setProjectionMap(@Nullable java.util.Map<java.lang.String,java.lang.String>);
-    method public void setStrict(boolean);
-    method public void setStrictColumns(boolean);
-    method public void setStrictGrammar(boolean);
-    method public void setTables(@Nullable String);
-    method public int update(@NonNull android.database.sqlite.SQLiteDatabase, @NonNull android.content.ContentValues, @Nullable String, @Nullable String[]);
-  }
-
-  public class SQLiteReadOnlyDatabaseException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteReadOnlyDatabaseException();
-    ctor public SQLiteReadOnlyDatabaseException(String);
-  }
-
-  public final class SQLiteStatement extends android.database.sqlite.SQLiteProgram {
-    method public void execute();
-    method public long executeInsert();
-    method public int executeUpdateDelete();
-    method public android.os.ParcelFileDescriptor simpleQueryForBlobFileDescriptor();
-    method public long simpleQueryForLong();
-    method public String simpleQueryForString();
-  }
-
-  public class SQLiteTableLockedException extends android.database.sqlite.SQLiteException {
-    ctor public SQLiteTableLockedException();
-    ctor public SQLiteTableLockedException(String);
-  }
-
-  public interface SQLiteTransactionListener {
-    method public void onBegin();
-    method public void onCommit();
-    method public void onRollback();
-  }
-
-}
-
-package android.drm {
-
-  @Deprecated public class DrmConvertedStatus {
-    ctor @Deprecated public DrmConvertedStatus(int, byte[], int);
-    field @Deprecated public static final int STATUS_ERROR = 3; // 0x3
-    field @Deprecated public static final int STATUS_INPUTDATA_ERROR = 2; // 0x2
-    field @Deprecated public static final int STATUS_OK = 1; // 0x1
-    field @Deprecated public final byte[] convertedData;
-    field @Deprecated public final int offset;
-    field @Deprecated public final int statusCode;
-  }
-
-  @Deprecated public class DrmErrorEvent extends android.drm.DrmEvent {
-    ctor @Deprecated public DrmErrorEvent(int, int, String);
-    ctor @Deprecated public DrmErrorEvent(int, int, String, java.util.HashMap<java.lang.String,java.lang.Object>);
-    field @Deprecated public static final int TYPE_ACQUIRE_DRM_INFO_FAILED = 2008; // 0x7d8
-    field @Deprecated public static final int TYPE_NOT_SUPPORTED = 2003; // 0x7d3
-    field @Deprecated public static final int TYPE_NO_INTERNET_CONNECTION = 2005; // 0x7d5
-    field @Deprecated public static final int TYPE_OUT_OF_MEMORY = 2004; // 0x7d4
-    field @Deprecated public static final int TYPE_PROCESS_DRM_INFO_FAILED = 2006; // 0x7d6
-    field @Deprecated public static final int TYPE_REMOVE_ALL_RIGHTS_FAILED = 2007; // 0x7d7
-    field @Deprecated public static final int TYPE_RIGHTS_NOT_INSTALLED = 2001; // 0x7d1
-    field @Deprecated public static final int TYPE_RIGHTS_RENEWAL_NOT_ALLOWED = 2002; // 0x7d2
-  }
-
-  @Deprecated public class DrmEvent {
-    ctor @Deprecated protected DrmEvent(int, int, String, java.util.HashMap<java.lang.String,java.lang.Object>);
-    ctor @Deprecated protected DrmEvent(int, int, String);
-    method @Deprecated public Object getAttribute(String);
-    method @Deprecated public String getMessage();
-    method @Deprecated public int getType();
-    method @Deprecated public int getUniqueId();
-    field @Deprecated public static final String DRM_INFO_OBJECT = "drm_info_object";
-    field @Deprecated public static final String DRM_INFO_STATUS_OBJECT = "drm_info_status_object";
-    field @Deprecated public static final int TYPE_ALL_RIGHTS_REMOVED = 1001; // 0x3e9
-    field @Deprecated public static final int TYPE_DRM_INFO_PROCESSED = 1002; // 0x3ea
-  }
-
-  @Deprecated public class DrmInfo {
-    ctor @Deprecated public DrmInfo(int, byte[], String);
-    ctor @Deprecated public DrmInfo(int, String, String);
-    method @Deprecated public Object get(String);
-    method @Deprecated public byte[] getData();
-    method @Deprecated public int getInfoType();
-    method @Deprecated public String getMimeType();
-    method @Deprecated public java.util.Iterator<java.lang.Object> iterator();
-    method @Deprecated public java.util.Iterator<java.lang.String> keyIterator();
-    method @Deprecated public void put(String, Object);
-  }
-
-  @Deprecated public class DrmInfoEvent extends android.drm.DrmEvent {
-    ctor @Deprecated public DrmInfoEvent(int, int, String);
-    ctor @Deprecated public DrmInfoEvent(int, int, String, java.util.HashMap<java.lang.String,java.lang.Object>);
-    field @Deprecated public static final int TYPE_ACCOUNT_ALREADY_REGISTERED = 5; // 0x5
-    field @Deprecated public static final int TYPE_ALREADY_REGISTERED_BY_ANOTHER_ACCOUNT = 1; // 0x1
-    field @Deprecated public static final int TYPE_REMOVE_RIGHTS = 2; // 0x2
-    field @Deprecated public static final int TYPE_RIGHTS_INSTALLED = 3; // 0x3
-    field @Deprecated public static final int TYPE_RIGHTS_REMOVED = 6; // 0x6
-    field @Deprecated public static final int TYPE_WAIT_FOR_RIGHTS = 4; // 0x4
-  }
-
-  @Deprecated public class DrmInfoRequest {
-    ctor @Deprecated public DrmInfoRequest(int, String);
-    method @Deprecated public Object get(String);
-    method @Deprecated public int getInfoType();
-    method @Deprecated public String getMimeType();
-    method @Deprecated public java.util.Iterator<java.lang.Object> iterator();
-    method @Deprecated public java.util.Iterator<java.lang.String> keyIterator();
-    method @Deprecated public void put(String, Object);
-    field @Deprecated public static final String ACCOUNT_ID = "account_id";
-    field @Deprecated public static final String SUBSCRIPTION_ID = "subscription_id";
-    field @Deprecated public static final int TYPE_REGISTRATION_INFO = 1; // 0x1
-    field @Deprecated public static final int TYPE_RIGHTS_ACQUISITION_INFO = 3; // 0x3
-    field @Deprecated public static final int TYPE_RIGHTS_ACQUISITION_PROGRESS_INFO = 4; // 0x4
-    field @Deprecated public static final int TYPE_UNREGISTRATION_INFO = 2; // 0x2
-  }
-
-  @Deprecated public class DrmInfoStatus {
-    ctor @Deprecated public DrmInfoStatus(int, int, android.drm.ProcessedData, String);
-    field @Deprecated public static final int STATUS_ERROR = 2; // 0x2
-    field @Deprecated public static final int STATUS_OK = 1; // 0x1
-    field @Deprecated public final android.drm.ProcessedData data;
-    field @Deprecated public final int infoType;
-    field @Deprecated public final String mimeType;
-    field @Deprecated public final int statusCode;
-  }
-
-  @Deprecated public class DrmManagerClient implements java.lang.AutoCloseable {
-    ctor @Deprecated public DrmManagerClient(android.content.Context);
-    method @Deprecated public android.drm.DrmInfo acquireDrmInfo(android.drm.DrmInfoRequest);
-    method @Deprecated public int acquireRights(android.drm.DrmInfoRequest);
-    method @Deprecated public boolean canHandle(String, String);
-    method @Deprecated public boolean canHandle(android.net.Uri, String);
-    method @Deprecated public int checkRightsStatus(String);
-    method @Deprecated public int checkRightsStatus(android.net.Uri);
-    method @Deprecated public int checkRightsStatus(String, int);
-    method @Deprecated public int checkRightsStatus(android.net.Uri, int);
-    method @Deprecated public void close();
-    method @Deprecated public android.drm.DrmConvertedStatus closeConvertSession(int);
-    method @Deprecated public android.drm.DrmConvertedStatus convertData(int, byte[]);
-    method @Deprecated public String[] getAvailableDrmEngines();
-    method @Deprecated @NonNull public java.util.Collection<android.drm.DrmSupportInfo> getAvailableDrmSupportInfo();
-    method @Deprecated public android.content.ContentValues getConstraints(String, int);
-    method @Deprecated public android.content.ContentValues getConstraints(android.net.Uri, int);
-    method @Deprecated public int getDrmObjectType(String, String);
-    method @Deprecated public int getDrmObjectType(android.net.Uri, String);
-    method @Deprecated public android.content.ContentValues getMetadata(String);
-    method @Deprecated public android.content.ContentValues getMetadata(android.net.Uri);
-    method @Deprecated public String getOriginalMimeType(String);
-    method @Deprecated public String getOriginalMimeType(android.net.Uri);
-    method @Deprecated public int openConvertSession(String);
-    method @Deprecated public int processDrmInfo(android.drm.DrmInfo);
-    method @Deprecated public void release();
-    method @Deprecated public int removeAllRights();
-    method @Deprecated public int removeRights(String);
-    method @Deprecated public int removeRights(android.net.Uri);
-    method @Deprecated public int saveRights(android.drm.DrmRights, String, String) throws java.io.IOException;
-    method @Deprecated public void setOnErrorListener(android.drm.DrmManagerClient.OnErrorListener);
-    method @Deprecated public void setOnEventListener(android.drm.DrmManagerClient.OnEventListener);
-    method @Deprecated public void setOnInfoListener(android.drm.DrmManagerClient.OnInfoListener);
-    field @Deprecated public static final int ERROR_NONE = 0; // 0x0
-    field @Deprecated public static final int ERROR_UNKNOWN = -2000; // 0xfffff830
-  }
-
-  @Deprecated public static interface DrmManagerClient.OnErrorListener {
-    method @Deprecated public void onError(android.drm.DrmManagerClient, android.drm.DrmErrorEvent);
-  }
-
-  @Deprecated public static interface DrmManagerClient.OnEventListener {
-    method @Deprecated public void onEvent(android.drm.DrmManagerClient, android.drm.DrmEvent);
-  }
-
-  @Deprecated public static interface DrmManagerClient.OnInfoListener {
-    method @Deprecated public void onInfo(android.drm.DrmManagerClient, android.drm.DrmInfoEvent);
-  }
-
-  @Deprecated public class DrmRights {
-    ctor @Deprecated public DrmRights(String, String);
-    ctor @Deprecated public DrmRights(String, String, String);
-    ctor @Deprecated public DrmRights(String, String, String, String);
-    ctor @Deprecated public DrmRights(java.io.File, String);
-    ctor @Deprecated public DrmRights(android.drm.ProcessedData, String);
-    method @Deprecated public String getAccountId();
-    method @Deprecated public byte[] getData();
-    method @Deprecated public String getMimeType();
-    method @Deprecated public String getSubscriptionId();
-  }
-
-  @Deprecated public class DrmStore {
-    ctor @Deprecated public DrmStore();
-  }
-
-  @Deprecated public static class DrmStore.Action {
-    ctor @Deprecated public DrmStore.Action();
-    field @Deprecated public static final int DEFAULT = 0; // 0x0
-    field @Deprecated public static final int DISPLAY = 7; // 0x7
-    field @Deprecated public static final int EXECUTE = 6; // 0x6
-    field @Deprecated public static final int OUTPUT = 4; // 0x4
-    field @Deprecated public static final int PLAY = 1; // 0x1
-    field @Deprecated public static final int PREVIEW = 5; // 0x5
-    field @Deprecated public static final int RINGTONE = 2; // 0x2
-    field @Deprecated public static final int TRANSFER = 3; // 0x3
-  }
-
-  @Deprecated public static interface DrmStore.ConstraintsColumns {
-    field @Deprecated public static final String EXTENDED_METADATA = "extended_metadata";
-    field @Deprecated public static final String LICENSE_AVAILABLE_TIME = "license_available_time";
-    field @Deprecated public static final String LICENSE_EXPIRY_TIME = "license_expiry_time";
-    field @Deprecated public static final String LICENSE_START_TIME = "license_start_time";
-    field @Deprecated public static final String MAX_REPEAT_COUNT = "max_repeat_count";
-    field @Deprecated public static final String REMAINING_REPEAT_COUNT = "remaining_repeat_count";
-  }
-
-  @Deprecated public static class DrmStore.DrmObjectType {
-    ctor @Deprecated public DrmStore.DrmObjectType();
-    field @Deprecated public static final int CONTENT = 1; // 0x1
-    field @Deprecated public static final int RIGHTS_OBJECT = 2; // 0x2
-    field @Deprecated public static final int TRIGGER_OBJECT = 3; // 0x3
-    field @Deprecated public static final int UNKNOWN = 0; // 0x0
-  }
-
-  @Deprecated public static class DrmStore.Playback {
-    ctor @Deprecated public DrmStore.Playback();
-    field @Deprecated public static final int PAUSE = 2; // 0x2
-    field @Deprecated public static final int RESUME = 3; // 0x3
-    field @Deprecated public static final int START = 0; // 0x0
-    field @Deprecated public static final int STOP = 1; // 0x1
-  }
-
-  @Deprecated public static class DrmStore.RightsStatus {
-    ctor @Deprecated public DrmStore.RightsStatus();
-    field @Deprecated public static final int RIGHTS_EXPIRED = 2; // 0x2
-    field @Deprecated public static final int RIGHTS_INVALID = 1; // 0x1
-    field @Deprecated public static final int RIGHTS_NOT_ACQUIRED = 3; // 0x3
-    field @Deprecated public static final int RIGHTS_VALID = 0; // 0x0
-  }
-
-  @Deprecated public class DrmSupportInfo {
-    ctor @Deprecated public DrmSupportInfo();
-    method @Deprecated public void addFileSuffix(String);
-    method @Deprecated public void addMimeType(String);
-    method @Deprecated public String getDescriprition();
-    method @Deprecated public String getDescription();
-    method @Deprecated public java.util.Iterator<java.lang.String> getFileSuffixIterator();
-    method @Deprecated public java.util.Iterator<java.lang.String> getMimeTypeIterator();
-    method @Deprecated public void setDescription(String);
-  }
-
-  @Deprecated public class DrmUtils {
-    ctor @Deprecated public DrmUtils();
-    method @Deprecated public static android.drm.DrmUtils.ExtendedMetadataParser getExtendedMetadataParser(byte[]);
-  }
-
-  @Deprecated public static class DrmUtils.ExtendedMetadataParser {
-    method @Deprecated public String get(String);
-    method @Deprecated public java.util.Iterator<java.lang.String> iterator();
-    method @Deprecated public java.util.Iterator<java.lang.String> keyIterator();
-  }
-
-  @Deprecated public class ProcessedData {
-    method @Deprecated public String getAccountId();
-    method @Deprecated public byte[] getData();
-    method @Deprecated public String getSubscriptionId();
-  }
-
-}
-
-package android.gesture {
-
-  public class Gesture implements android.os.Parcelable {
-    ctor public Gesture();
-    method public void addStroke(android.gesture.GestureStroke);
-    method public Object clone();
-    method public int describeContents();
-    method public android.graphics.RectF getBoundingBox();
-    method public long getID();
-    method public float getLength();
-    method public java.util.ArrayList<android.gesture.GestureStroke> getStrokes();
-    method public int getStrokesCount();
-    method public android.graphics.Bitmap toBitmap(int, int, int, int, int);
-    method public android.graphics.Bitmap toBitmap(int, int, int, int);
-    method public android.graphics.Path toPath();
-    method public android.graphics.Path toPath(android.graphics.Path);
-    method public android.graphics.Path toPath(int, int, int, int);
-    method public android.graphics.Path toPath(android.graphics.Path, int, int, int, int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.gesture.Gesture> CREATOR;
-  }
-
-  public final class GestureLibraries {
-    method public static android.gesture.GestureLibrary fromFile(String);
-    method public static android.gesture.GestureLibrary fromFile(java.io.File);
-    method @NonNull public static android.gesture.GestureLibrary fromFileDescriptor(@NonNull android.os.ParcelFileDescriptor);
-    method public static android.gesture.GestureLibrary fromPrivateFile(android.content.Context, String);
-    method public static android.gesture.GestureLibrary fromRawResource(android.content.Context, @RawRes int);
-  }
-
-  public abstract class GestureLibrary {
-    ctor protected GestureLibrary();
-    method public void addGesture(String, android.gesture.Gesture);
-    method public java.util.Set<java.lang.String> getGestureEntries();
-    method public java.util.ArrayList<android.gesture.Gesture> getGestures(String);
-    method public int getOrientationStyle();
-    method public int getSequenceType();
-    method public boolean isReadOnly();
-    method public abstract boolean load();
-    method public java.util.ArrayList<android.gesture.Prediction> recognize(android.gesture.Gesture);
-    method public void removeEntry(String);
-    method public void removeGesture(String, android.gesture.Gesture);
-    method public abstract boolean save();
-    method public void setOrientationStyle(int);
-    method public void setSequenceType(int);
-    field protected final android.gesture.GestureStore mStore;
-  }
-
-  public class GestureOverlayView extends android.widget.FrameLayout {
-    ctor public GestureOverlayView(android.content.Context);
-    ctor public GestureOverlayView(android.content.Context, android.util.AttributeSet);
-    ctor public GestureOverlayView(android.content.Context, android.util.AttributeSet, int);
-    ctor public GestureOverlayView(android.content.Context, android.util.AttributeSet, int, int);
-    method public void addOnGestureListener(android.gesture.GestureOverlayView.OnGestureListener);
-    method public void addOnGesturePerformedListener(android.gesture.GestureOverlayView.OnGesturePerformedListener);
-    method public void addOnGesturingListener(android.gesture.GestureOverlayView.OnGesturingListener);
-    method public void cancelClearAnimation();
-    method public void cancelGesture();
-    method public void clear(boolean);
-    method public java.util.ArrayList<android.gesture.GesturePoint> getCurrentStroke();
-    method public long getFadeOffset();
-    method public android.gesture.Gesture getGesture();
-    method @ColorInt public int getGestureColor();
-    method public android.graphics.Path getGesturePath();
-    method public android.graphics.Path getGesturePath(android.graphics.Path);
-    method public float getGestureStrokeAngleThreshold();
-    method public float getGestureStrokeLengthThreshold();
-    method public float getGestureStrokeSquarenessTreshold();
-    method public int getGestureStrokeType();
-    method public float getGestureStrokeWidth();
-    method public int getOrientation();
-    method @ColorInt public int getUncertainGestureColor();
-    method public boolean isEventsInterceptionEnabled();
-    method public boolean isFadeEnabled();
-    method public boolean isGestureVisible();
-    method public boolean isGesturing();
-    method public void removeAllOnGestureListeners();
-    method public void removeAllOnGesturePerformedListeners();
-    method public void removeAllOnGesturingListeners();
-    method public void removeOnGestureListener(android.gesture.GestureOverlayView.OnGestureListener);
-    method public void removeOnGesturePerformedListener(android.gesture.GestureOverlayView.OnGesturePerformedListener);
-    method public void removeOnGesturingListener(android.gesture.GestureOverlayView.OnGesturingListener);
-    method public void setEventsInterceptionEnabled(boolean);
-    method public void setFadeEnabled(boolean);
-    method public void setFadeOffset(long);
-    method public void setGesture(android.gesture.Gesture);
-    method public void setGestureColor(@ColorInt int);
-    method public void setGestureStrokeAngleThreshold(float);
-    method public void setGestureStrokeLengthThreshold(float);
-    method public void setGestureStrokeSquarenessTreshold(float);
-    method public void setGestureStrokeType(int);
-    method public void setGestureStrokeWidth(float);
-    method public void setGestureVisible(boolean);
-    method public void setOrientation(int);
-    method public void setUncertainGestureColor(@ColorInt int);
-    field public static final int GESTURE_STROKE_TYPE_MULTIPLE = 1; // 0x1
-    field public static final int GESTURE_STROKE_TYPE_SINGLE = 0; // 0x0
-    field public static final int ORIENTATION_HORIZONTAL = 0; // 0x0
-    field public static final int ORIENTATION_VERTICAL = 1; // 0x1
-  }
-
-  public static interface GestureOverlayView.OnGestureListener {
-    method public void onGesture(android.gesture.GestureOverlayView, android.view.MotionEvent);
-    method public void onGestureCancelled(android.gesture.GestureOverlayView, android.view.MotionEvent);
-    method public void onGestureEnded(android.gesture.GestureOverlayView, android.view.MotionEvent);
-    method public void onGestureStarted(android.gesture.GestureOverlayView, android.view.MotionEvent);
-  }
-
-  public static interface GestureOverlayView.OnGesturePerformedListener {
-    method public void onGesturePerformed(android.gesture.GestureOverlayView, android.gesture.Gesture);
-  }
-
-  public static interface GestureOverlayView.OnGesturingListener {
-    method public void onGesturingEnded(android.gesture.GestureOverlayView);
-    method public void onGesturingStarted(android.gesture.GestureOverlayView);
-  }
-
-  public class GesturePoint {
-    ctor public GesturePoint(float, float, long);
-    method public Object clone();
-    field public final long timestamp;
-    field public final float x;
-    field public final float y;
-  }
-
-  public class GestureStore {
-    ctor public GestureStore();
-    method public void addGesture(String, android.gesture.Gesture);
-    method public java.util.Set<java.lang.String> getGestureEntries();
-    method public java.util.ArrayList<android.gesture.Gesture> getGestures(String);
-    method public int getOrientationStyle();
-    method public int getSequenceType();
-    method public boolean hasChanged();
-    method public void load(java.io.InputStream) throws java.io.IOException;
-    method public void load(java.io.InputStream, boolean) throws java.io.IOException;
-    method public java.util.ArrayList<android.gesture.Prediction> recognize(android.gesture.Gesture);
-    method public void removeEntry(String);
-    method public void removeGesture(String, android.gesture.Gesture);
-    method public void save(java.io.OutputStream) throws java.io.IOException;
-    method public void save(java.io.OutputStream, boolean) throws java.io.IOException;
-    method public void setOrientationStyle(int);
-    method public void setSequenceType(int);
-    field public static final int ORIENTATION_INVARIANT = 1; // 0x1
-    field public static final int ORIENTATION_SENSITIVE = 2; // 0x2
-    field public static final int SEQUENCE_INVARIANT = 1; // 0x1
-    field public static final int SEQUENCE_SENSITIVE = 2; // 0x2
-  }
-
-  public class GestureStroke {
-    ctor public GestureStroke(java.util.ArrayList<android.gesture.GesturePoint>);
-    method public void clearPath();
-    method public Object clone();
-    method public android.gesture.OrientedBoundingBox computeOrientedBoundingBox();
-    method public android.graphics.Path getPath();
-    method public android.graphics.Path toPath(float, float, int);
-    field public final android.graphics.RectF boundingBox;
-    field public final float length;
-    field public final float[] points;
-  }
-
-  public final class GestureUtils {
-    method public static android.gesture.OrientedBoundingBox computeOrientedBoundingBox(java.util.ArrayList<android.gesture.GesturePoint>);
-    method public static android.gesture.OrientedBoundingBox computeOrientedBoundingBox(float[]);
-    method public static float[] spatialSampling(android.gesture.Gesture, int);
-    method public static float[] spatialSampling(android.gesture.Gesture, int, boolean);
-    method public static float[] temporalSampling(android.gesture.GestureStroke, int);
-  }
-
-  public class OrientedBoundingBox {
-    field public final float centerX;
-    field public final float centerY;
-    field public final float height;
-    field public final float orientation;
-    field public final float squareness;
-    field public final float width;
-  }
-
-  public class Prediction {
-    field public final String name;
-    field public double score;
-  }
-
-}
-
-package android.graphics {
-
-  public final class Bitmap implements android.os.Parcelable {
-    method @WorkerThread public boolean compress(android.graphics.Bitmap.CompressFormat, int, java.io.OutputStream);
-    method public android.graphics.Bitmap copy(android.graphics.Bitmap.Config, boolean);
-    method public void copyPixelsFromBuffer(java.nio.Buffer);
-    method public void copyPixelsToBuffer(java.nio.Buffer);
-    method public static android.graphics.Bitmap createBitmap(@NonNull android.graphics.Bitmap);
-    method public static android.graphics.Bitmap createBitmap(@NonNull android.graphics.Bitmap, int, int, int, int);
-    method public static android.graphics.Bitmap createBitmap(@NonNull android.graphics.Bitmap, int, int, int, int, @Nullable android.graphics.Matrix, boolean);
-    method public static android.graphics.Bitmap createBitmap(int, int, @NonNull android.graphics.Bitmap.Config);
-    method public static android.graphics.Bitmap createBitmap(@Nullable android.util.DisplayMetrics, int, int, @NonNull android.graphics.Bitmap.Config);
-    method public static android.graphics.Bitmap createBitmap(int, int, @NonNull android.graphics.Bitmap.Config, boolean);
-    method public static android.graphics.Bitmap createBitmap(int, int, @NonNull android.graphics.Bitmap.Config, boolean, @NonNull android.graphics.ColorSpace);
-    method public static android.graphics.Bitmap createBitmap(@Nullable android.util.DisplayMetrics, int, int, @NonNull android.graphics.Bitmap.Config, boolean);
-    method public static android.graphics.Bitmap createBitmap(@Nullable android.util.DisplayMetrics, int, int, @NonNull android.graphics.Bitmap.Config, boolean, @NonNull android.graphics.ColorSpace);
-    method public static android.graphics.Bitmap createBitmap(@ColorInt @NonNull int[], int, int, int, int, @NonNull android.graphics.Bitmap.Config);
-    method public static android.graphics.Bitmap createBitmap(@NonNull android.util.DisplayMetrics, @ColorInt @NonNull int[], int, int, int, int, @NonNull android.graphics.Bitmap.Config);
-    method public static android.graphics.Bitmap createBitmap(@ColorInt @NonNull int[], int, int, android.graphics.Bitmap.Config);
-    method public static android.graphics.Bitmap createBitmap(@Nullable android.util.DisplayMetrics, @ColorInt @NonNull int[], int, int, @NonNull android.graphics.Bitmap.Config);
-    method @NonNull public static android.graphics.Bitmap createBitmap(@NonNull android.graphics.Picture);
-    method @NonNull public static android.graphics.Bitmap createBitmap(@NonNull android.graphics.Picture, int, int, @NonNull android.graphics.Bitmap.Config);
-    method public static android.graphics.Bitmap createScaledBitmap(@NonNull android.graphics.Bitmap, int, int, boolean);
-    method public int describeContents();
-    method public void eraseColor(@ColorInt int);
-    method public void eraseColor(@ColorLong long);
-    method @CheckResult public android.graphics.Bitmap extractAlpha();
-    method @CheckResult public android.graphics.Bitmap extractAlpha(android.graphics.Paint, int[]);
-    method public int getAllocationByteCount();
-    method public int getByteCount();
-    method @NonNull public android.graphics.Color getColor(int, int);
-    method @Nullable public android.graphics.ColorSpace getColorSpace();
-    method public android.graphics.Bitmap.Config getConfig();
-    method public int getDensity();
-    method public int getGenerationId();
-    method public int getHeight();
-    method public byte[] getNinePatchChunk();
-    method @ColorInt public int getPixel(int, int);
-    method public void getPixels(@ColorInt int[], int, int, int, int, int, int);
-    method public int getRowBytes();
-    method public int getScaledHeight(android.graphics.Canvas);
-    method public int getScaledHeight(android.util.DisplayMetrics);
-    method public int getScaledHeight(int);
-    method public int getScaledWidth(android.graphics.Canvas);
-    method public int getScaledWidth(android.util.DisplayMetrics);
-    method public int getScaledWidth(int);
-    method public int getWidth();
-    method public boolean hasAlpha();
-    method public boolean hasMipMap();
-    method public boolean isMutable();
-    method public boolean isPremultiplied();
-    method public boolean isRecycled();
-    method public void prepareToDraw();
-    method public void reconfigure(int, int, android.graphics.Bitmap.Config);
-    method public void recycle();
-    method public boolean sameAs(android.graphics.Bitmap);
-    method public void setColorSpace(@NonNull android.graphics.ColorSpace);
-    method public void setConfig(android.graphics.Bitmap.Config);
-    method public void setDensity(int);
-    method public void setHasAlpha(boolean);
-    method public void setHasMipMap(boolean);
-    method public void setHeight(int);
-    method public void setPixel(int, int, @ColorInt int);
-    method public void setPixels(@ColorInt int[], int, int, int, int, int, int);
-    method public void setPremultiplied(boolean);
-    method public void setWidth(int);
-    method @Nullable public static android.graphics.Bitmap wrapHardwareBuffer(@NonNull android.hardware.HardwareBuffer, @Nullable android.graphics.ColorSpace);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.graphics.Bitmap> CREATOR;
-    field public static final int DENSITY_NONE = 0; // 0x0
-  }
-
-  public enum Bitmap.CompressFormat {
-    enum_constant public static final android.graphics.Bitmap.CompressFormat JPEG;
-    enum_constant public static final android.graphics.Bitmap.CompressFormat PNG;
-    enum_constant @Deprecated public static final android.graphics.Bitmap.CompressFormat WEBP;
-    enum_constant public static final android.graphics.Bitmap.CompressFormat WEBP_LOSSLESS;
-    enum_constant public static final android.graphics.Bitmap.CompressFormat WEBP_LOSSY;
-  }
-
-  public enum Bitmap.Config {
-    enum_constant public static final android.graphics.Bitmap.Config ALPHA_8;
-    enum_constant @Deprecated public static final android.graphics.Bitmap.Config ARGB_4444;
-    enum_constant public static final android.graphics.Bitmap.Config ARGB_8888;
-    enum_constant public static final android.graphics.Bitmap.Config HARDWARE;
-    enum_constant public static final android.graphics.Bitmap.Config RGBA_F16;
-    enum_constant public static final android.graphics.Bitmap.Config RGB_565;
-  }
-
-  public class BitmapFactory {
-    ctor public BitmapFactory();
-    method public static android.graphics.Bitmap decodeByteArray(byte[], int, int, android.graphics.BitmapFactory.Options);
-    method public static android.graphics.Bitmap decodeByteArray(byte[], int, int);
-    method public static android.graphics.Bitmap decodeFile(String, android.graphics.BitmapFactory.Options);
-    method public static android.graphics.Bitmap decodeFile(String);
-    method public static android.graphics.Bitmap decodeFileDescriptor(java.io.FileDescriptor, android.graphics.Rect, android.graphics.BitmapFactory.Options);
-    method public static android.graphics.Bitmap decodeFileDescriptor(java.io.FileDescriptor);
-    method public static android.graphics.Bitmap decodeResource(android.content.res.Resources, int, android.graphics.BitmapFactory.Options);
-    method public static android.graphics.Bitmap decodeResource(android.content.res.Resources, int);
-    method @Nullable public static android.graphics.Bitmap decodeResourceStream(@Nullable android.content.res.Resources, @Nullable android.util.TypedValue, @Nullable java.io.InputStream, @Nullable android.graphics.Rect, @Nullable android.graphics.BitmapFactory.Options);
-    method @Nullable public static android.graphics.Bitmap decodeStream(@Nullable java.io.InputStream, @Nullable android.graphics.Rect, @Nullable android.graphics.BitmapFactory.Options);
-    method public static android.graphics.Bitmap decodeStream(java.io.InputStream);
-  }
-
-  public static class BitmapFactory.Options {
-    ctor public BitmapFactory.Options();
-    method @Deprecated public void requestCancelDecode();
-    field public android.graphics.Bitmap inBitmap;
-    field public int inDensity;
-    field @Deprecated public boolean inDither;
-    field @Deprecated public boolean inInputShareable;
-    field public boolean inJustDecodeBounds;
-    field public boolean inMutable;
-    field @Deprecated public boolean inPreferQualityOverSpeed;
-    field public android.graphics.ColorSpace inPreferredColorSpace;
-    field public android.graphics.Bitmap.Config inPreferredConfig;
-    field public boolean inPremultiplied;
-    field @Deprecated public boolean inPurgeable;
-    field public int inSampleSize;
-    field public boolean inScaled;
-    field public int inScreenDensity;
-    field public int inTargetDensity;
-    field public byte[] inTempStorage;
-    field @Deprecated public boolean mCancel;
-    field public android.graphics.ColorSpace outColorSpace;
-    field public android.graphics.Bitmap.Config outConfig;
-    field public int outHeight;
-    field public String outMimeType;
-    field public int outWidth;
-  }
-
-  public final class BitmapRegionDecoder {
-    method public android.graphics.Bitmap decodeRegion(android.graphics.Rect, android.graphics.BitmapFactory.Options);
-    method public int getHeight();
-    method public int getWidth();
-    method public boolean isRecycled();
-    method public static android.graphics.BitmapRegionDecoder newInstance(byte[], int, int, boolean) throws java.io.IOException;
-    method public static android.graphics.BitmapRegionDecoder newInstance(java.io.FileDescriptor, boolean) throws java.io.IOException;
-    method public static android.graphics.BitmapRegionDecoder newInstance(java.io.InputStream, boolean) throws java.io.IOException;
-    method public static android.graphics.BitmapRegionDecoder newInstance(String, boolean) throws java.io.IOException;
-    method public void recycle();
-  }
-
-  public class BitmapShader extends android.graphics.Shader {
-    ctor public BitmapShader(@NonNull android.graphics.Bitmap, @NonNull android.graphics.Shader.TileMode, @NonNull android.graphics.Shader.TileMode);
-  }
-
-  public enum BlendMode {
-    enum_constant public static final android.graphics.BlendMode CLEAR;
-    enum_constant public static final android.graphics.BlendMode COLOR;
-    enum_constant public static final android.graphics.BlendMode COLOR_BURN;
-    enum_constant public static final android.graphics.BlendMode COLOR_DODGE;
-    enum_constant public static final android.graphics.BlendMode DARKEN;
-    enum_constant public static final android.graphics.BlendMode DIFFERENCE;
-    enum_constant public static final android.graphics.BlendMode DST;
-    enum_constant public static final android.graphics.BlendMode DST_ATOP;
-    enum_constant public static final android.graphics.BlendMode DST_IN;
-    enum_constant public static final android.graphics.BlendMode DST_OUT;
-    enum_constant public static final android.graphics.BlendMode DST_OVER;
-    enum_constant public static final android.graphics.BlendMode EXCLUSION;
-    enum_constant public static final android.graphics.BlendMode HARD_LIGHT;
-    enum_constant public static final android.graphics.BlendMode HUE;
-    enum_constant public static final android.graphics.BlendMode LIGHTEN;
-    enum_constant public static final android.graphics.BlendMode LUMINOSITY;
-    enum_constant public static final android.graphics.BlendMode MODULATE;
-    enum_constant public static final android.graphics.BlendMode MULTIPLY;
-    enum_constant public static final android.graphics.BlendMode OVERLAY;
-    enum_constant public static final android.graphics.BlendMode PLUS;
-    enum_constant public static final android.graphics.BlendMode SATURATION;
-    enum_constant public static final android.graphics.BlendMode SCREEN;
-    enum_constant public static final android.graphics.BlendMode SOFT_LIGHT;
-    enum_constant public static final android.graphics.BlendMode SRC;
-    enum_constant public static final android.graphics.BlendMode SRC_ATOP;
-    enum_constant public static final android.graphics.BlendMode SRC_IN;
-    enum_constant public static final android.graphics.BlendMode SRC_OUT;
-    enum_constant public static final android.graphics.BlendMode SRC_OVER;
-    enum_constant public static final android.graphics.BlendMode XOR;
-  }
-
-  public final class BlendModeColorFilter extends android.graphics.ColorFilter {
-    ctor public BlendModeColorFilter(@ColorInt int, @NonNull android.graphics.BlendMode);
-    method @ColorInt public int getColor();
-    method public android.graphics.BlendMode getMode();
-  }
-
-  public class BlurMaskFilter extends android.graphics.MaskFilter {
-    ctor public BlurMaskFilter(float, android.graphics.BlurMaskFilter.Blur);
-  }
-
-  public enum BlurMaskFilter.Blur {
-    enum_constant public static final android.graphics.BlurMaskFilter.Blur INNER;
-    enum_constant public static final android.graphics.BlurMaskFilter.Blur NORMAL;
-    enum_constant public static final android.graphics.BlurMaskFilter.Blur OUTER;
-    enum_constant public static final android.graphics.BlurMaskFilter.Blur SOLID;
-  }
-
-  public class Camera {
-    ctor public Camera();
-    method public void applyToCanvas(android.graphics.Canvas);
-    method public float dotWithNormal(float, float, float);
-    method public float getLocationX();
-    method public float getLocationY();
-    method public float getLocationZ();
-    method public void getMatrix(android.graphics.Matrix);
-    method public void restore();
-    method public void rotate(float, float, float);
-    method public void rotateX(float);
-    method public void rotateY(float);
-    method public void rotateZ(float);
-    method public void save();
-    method public void setLocation(float, float, float);
-    method public void translate(float, float, float);
-  }
-
-  public class Canvas {
-    ctor public Canvas();
-    ctor public Canvas(@NonNull android.graphics.Bitmap);
-    method public boolean clipOutPath(@NonNull android.graphics.Path);
-    method public boolean clipOutRect(@NonNull android.graphics.RectF);
-    method public boolean clipOutRect(@NonNull android.graphics.Rect);
-    method public boolean clipOutRect(float, float, float, float);
-    method public boolean clipOutRect(int, int, int, int);
-    method @Deprecated public boolean clipPath(@NonNull android.graphics.Path, @NonNull android.graphics.Region.Op);
-    method public boolean clipPath(@NonNull android.graphics.Path);
-    method @Deprecated public boolean clipRect(@NonNull android.graphics.RectF, @NonNull android.graphics.Region.Op);
-    method @Deprecated public boolean clipRect(@NonNull android.graphics.Rect, @NonNull android.graphics.Region.Op);
-    method public boolean clipRect(@NonNull android.graphics.RectF);
-    method public boolean clipRect(@NonNull android.graphics.Rect);
-    method @Deprecated public boolean clipRect(float, float, float, float, @NonNull android.graphics.Region.Op);
-    method public boolean clipRect(float, float, float, float);
-    method public boolean clipRect(int, int, int, int);
-    method public void concat(@Nullable android.graphics.Matrix);
-    method public void disableZ();
-    method public void drawARGB(int, int, int, int);
-    method public void drawArc(@NonNull android.graphics.RectF, float, float, boolean, @NonNull android.graphics.Paint);
-    method public void drawArc(float, float, float, float, float, float, boolean, @NonNull android.graphics.Paint);
-    method public void drawBitmap(@NonNull android.graphics.Bitmap, float, float, @Nullable android.graphics.Paint);
-    method public void drawBitmap(@NonNull android.graphics.Bitmap, @Nullable android.graphics.Rect, @NonNull android.graphics.RectF, @Nullable android.graphics.Paint);
-    method public void drawBitmap(@NonNull android.graphics.Bitmap, @Nullable android.graphics.Rect, @NonNull android.graphics.Rect, @Nullable android.graphics.Paint);
-    method @Deprecated public void drawBitmap(@NonNull int[], int, int, float, float, int, int, boolean, @Nullable android.graphics.Paint);
-    method @Deprecated public void drawBitmap(@NonNull int[], int, int, int, int, int, int, boolean, @Nullable android.graphics.Paint);
-    method public void drawBitmap(@NonNull android.graphics.Bitmap, @NonNull android.graphics.Matrix, @Nullable android.graphics.Paint);
-    method public void drawBitmapMesh(@NonNull android.graphics.Bitmap, int, int, @NonNull float[], int, @Nullable int[], int, @Nullable android.graphics.Paint);
-    method public void drawCircle(float, float, float, @NonNull android.graphics.Paint);
-    method public void drawColor(@ColorInt int);
-    method public void drawColor(@ColorLong long);
-    method public void drawColor(@ColorInt int, @NonNull android.graphics.PorterDuff.Mode);
-    method public void drawColor(@ColorInt int, @NonNull android.graphics.BlendMode);
-    method public void drawColor(@ColorLong long, @NonNull android.graphics.BlendMode);
-    method public void drawDoubleRoundRect(@NonNull android.graphics.RectF, float, float, @NonNull android.graphics.RectF, float, float, @NonNull android.graphics.Paint);
-    method public void drawDoubleRoundRect(@NonNull android.graphics.RectF, @NonNull float[], @NonNull android.graphics.RectF, @NonNull float[], @NonNull android.graphics.Paint);
-    method public void drawLine(float, float, float, float, @NonNull android.graphics.Paint);
-    method public void drawLines(@NonNull @Size(multiple=4) float[], int, int, @NonNull android.graphics.Paint);
-    method public void drawLines(@NonNull @Size(multiple=4) float[], @NonNull android.graphics.Paint);
-    method public void drawOval(@NonNull android.graphics.RectF, @NonNull android.graphics.Paint);
-    method public void drawOval(float, float, float, float, @NonNull android.graphics.Paint);
-    method public void drawPaint(@NonNull android.graphics.Paint);
-    method public void drawPath(@NonNull android.graphics.Path, @NonNull android.graphics.Paint);
-    method public void drawPicture(@NonNull android.graphics.Picture);
-    method public void drawPicture(@NonNull android.graphics.Picture, @NonNull android.graphics.RectF);
-    method public void drawPicture(@NonNull android.graphics.Picture, @NonNull android.graphics.Rect);
-    method public void drawPoint(float, float, @NonNull android.graphics.Paint);
-    method public void drawPoints(@Size(multiple=2) float[], int, int, @NonNull android.graphics.Paint);
-    method public void drawPoints(@NonNull @Size(multiple=2) float[], @NonNull android.graphics.Paint);
-    method @Deprecated public void drawPosText(@NonNull char[], int, int, @NonNull @Size(multiple=2) float[], @NonNull android.graphics.Paint);
-    method @Deprecated public void drawPosText(@NonNull String, @NonNull @Size(multiple=2) float[], @NonNull android.graphics.Paint);
-    method public void drawRGB(int, int, int);
-    method public void drawRect(@NonNull android.graphics.RectF, @NonNull android.graphics.Paint);
-    method public void drawRect(@NonNull android.graphics.Rect, @NonNull android.graphics.Paint);
-    method public void drawRect(float, float, float, float, @NonNull android.graphics.Paint);
-    method public void drawRenderNode(@NonNull android.graphics.RenderNode);
-    method public void drawRoundRect(@NonNull android.graphics.RectF, float, float, @NonNull android.graphics.Paint);
-    method public void drawRoundRect(float, float, float, float, float, float, @NonNull android.graphics.Paint);
-    method public void drawText(@NonNull char[], int, int, float, float, @NonNull android.graphics.Paint);
-    method public void drawText(@NonNull String, float, float, @NonNull android.graphics.Paint);
-    method public void drawText(@NonNull String, int, int, float, float, @NonNull android.graphics.Paint);
-    method public void drawText(@NonNull CharSequence, int, int, float, float, @NonNull android.graphics.Paint);
-    method public void drawTextOnPath(@NonNull char[], int, int, @NonNull android.graphics.Path, float, float, @NonNull android.graphics.Paint);
-    method public void drawTextOnPath(@NonNull String, @NonNull android.graphics.Path, float, float, @NonNull android.graphics.Paint);
-    method public void drawTextRun(@NonNull char[], int, int, int, int, float, float, boolean, @NonNull android.graphics.Paint);
-    method public void drawTextRun(@NonNull CharSequence, int, int, int, int, float, float, boolean, @NonNull android.graphics.Paint);
-    method public void drawTextRun(@NonNull android.graphics.text.MeasuredText, int, int, int, int, float, float, boolean, @NonNull android.graphics.Paint);
-    method public void drawVertices(@NonNull android.graphics.Canvas.VertexMode, int, @NonNull float[], int, @Nullable float[], int, @Nullable int[], int, @Nullable short[], int, int, @NonNull android.graphics.Paint);
-    method public void enableZ();
-    method public boolean getClipBounds(@Nullable android.graphics.Rect);
-    method @NonNull public final android.graphics.Rect getClipBounds();
-    method public int getDensity();
-    method @Nullable public android.graphics.DrawFilter getDrawFilter();
-    method public int getHeight();
-    method @Deprecated public void getMatrix(@NonNull android.graphics.Matrix);
-    method @Deprecated @NonNull public final android.graphics.Matrix getMatrix();
-    method public int getMaximumBitmapHeight();
-    method public int getMaximumBitmapWidth();
-    method public int getSaveCount();
-    method public int getWidth();
-    method public boolean isHardwareAccelerated();
-    method public boolean isOpaque();
-    method @Deprecated public boolean quickReject(@NonNull android.graphics.RectF, @NonNull android.graphics.Canvas.EdgeType);
-    method public boolean quickReject(@NonNull android.graphics.RectF);
-    method @Deprecated public boolean quickReject(@NonNull android.graphics.Path, @NonNull android.graphics.Canvas.EdgeType);
-    method public boolean quickReject(@NonNull android.graphics.Path);
-    method @Deprecated public boolean quickReject(float, float, float, float, @NonNull android.graphics.Canvas.EdgeType);
-    method public boolean quickReject(float, float, float, float);
-    method public void restore();
-    method public void restoreToCount(int);
-    method public void rotate(float);
-    method public final void rotate(float, float, float);
-    method public int save();
-    method @Deprecated public int saveLayer(@Nullable android.graphics.RectF, @Nullable android.graphics.Paint, int);
-    method public int saveLayer(@Nullable android.graphics.RectF, @Nullable android.graphics.Paint);
-    method @Deprecated public int saveLayer(float, float, float, float, @Nullable android.graphics.Paint, int);
-    method public int saveLayer(float, float, float, float, @Nullable android.graphics.Paint);
-    method @Deprecated public int saveLayerAlpha(@Nullable android.graphics.RectF, int, int);
-    method public int saveLayerAlpha(@Nullable android.graphics.RectF, int);
-    method @Deprecated public int saveLayerAlpha(float, float, float, float, int, int);
-    method public int saveLayerAlpha(float, float, float, float, int);
-    method public void scale(float, float);
-    method public final void scale(float, float, float, float);
-    method public void setBitmap(@Nullable android.graphics.Bitmap);
-    method public void setDensity(int);
-    method public void setDrawFilter(@Nullable android.graphics.DrawFilter);
-    method public void setMatrix(@Nullable android.graphics.Matrix);
-    method public void skew(float, float);
-    method public void translate(float, float);
-    field public static final int ALL_SAVE_FLAG = 31; // 0x1f
-  }
-
-  @Deprecated public enum Canvas.EdgeType {
-    enum_constant @Deprecated public static final android.graphics.Canvas.EdgeType AA;
-    enum_constant @Deprecated public static final android.graphics.Canvas.EdgeType BW;
-  }
-
-  public enum Canvas.VertexMode {
-    enum_constant public static final android.graphics.Canvas.VertexMode TRIANGLES;
-    enum_constant public static final android.graphics.Canvas.VertexMode TRIANGLE_FAN;
-    enum_constant public static final android.graphics.Canvas.VertexMode TRIANGLE_STRIP;
-  }
-
-  @AnyThread public class Color {
-    ctor public Color();
-    method @ColorInt public static int HSVToColor(@Size(3) float[]);
-    method @ColorInt public static int HSVToColor(@IntRange(from=0, to=255) int, @Size(3) float[]);
-    method public static void RGBToHSV(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @Size(3) float[]);
-    method public float alpha();
-    method public static float alpha(@ColorLong long);
-    method @IntRange(from=0, to=255) public static int alpha(int);
-    method @ColorInt public static int argb(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int);
-    method @ColorInt public static int argb(float, float, float, float);
-    method public float blue();
-    method public static float blue(@ColorLong long);
-    method @IntRange(from=0, to=255) public static int blue(int);
-    method @NonNull public static android.graphics.ColorSpace colorSpace(@ColorLong long);
-    method public static void colorToHSV(@ColorInt int, @Size(3) float[]);
-    method @NonNull public android.graphics.Color convert(@NonNull android.graphics.ColorSpace);
-    method @ColorLong public static long convert(@ColorInt int, @NonNull android.graphics.ColorSpace);
-    method @ColorLong public static long convert(@ColorLong long, @NonNull android.graphics.ColorSpace);
-    method @ColorLong public static long convert(float, float, float, float, @NonNull android.graphics.ColorSpace, @NonNull android.graphics.ColorSpace);
-    method @ColorLong public static long convert(@ColorLong long, @NonNull android.graphics.ColorSpace.Connector);
-    method @ColorLong public static long convert(float, float, float, float, @NonNull android.graphics.ColorSpace.Connector);
-    method @NonNull public android.graphics.ColorSpace getColorSpace();
-    method public float getComponent(@IntRange(from=0, to=4) int);
-    method @IntRange(from=4, to=5) public int getComponentCount();
-    method @NonNull @Size(min=4, max=5) public float[] getComponents();
-    method @NonNull @Size(min=4) public float[] getComponents(@Nullable @Size(min=4) float[]);
-    method public android.graphics.ColorSpace.Model getModel();
-    method public float green();
-    method public static float green(@ColorLong long);
-    method @IntRange(from=0, to=255) public static int green(int);
-    method public static boolean isInColorSpace(@ColorLong long, @NonNull android.graphics.ColorSpace);
-    method public boolean isSrgb();
-    method public static boolean isSrgb(@ColorLong long);
-    method public boolean isWideGamut();
-    method public static boolean isWideGamut(@ColorLong long);
-    method public float luminance();
-    method public static float luminance(@ColorLong long);
-    method public static float luminance(@ColorInt int);
-    method @ColorLong public long pack();
-    method @ColorLong public static long pack(@ColorInt int);
-    method @ColorLong public static long pack(float, float, float);
-    method @ColorLong public static long pack(float, float, float, float);
-    method @ColorLong public static long pack(float, float, float, float, @NonNull android.graphics.ColorSpace);
-    method @ColorInt public static int parseColor(@Size(min=1) String);
-    method public float red();
-    method public static float red(@ColorLong long);
-    method @IntRange(from=0, to=255) public static int red(int);
-    method @ColorInt public static int rgb(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int);
-    method @ColorInt public static int rgb(float, float, float);
-    method @ColorInt public int toArgb();
-    method @ColorInt public static int toArgb(@ColorLong long);
-    method @NonNull public static android.graphics.Color valueOf(@ColorInt int);
-    method @NonNull public static android.graphics.Color valueOf(@ColorLong long);
-    method @NonNull public static android.graphics.Color valueOf(float, float, float);
-    method @NonNull public static android.graphics.Color valueOf(float, float, float, float);
-    method @NonNull public static android.graphics.Color valueOf(float, float, float, float, @NonNull android.graphics.ColorSpace);
-    method @NonNull public static android.graphics.Color valueOf(@NonNull @Size(min=4, max=5) float[], @NonNull android.graphics.ColorSpace);
-    field @ColorInt public static final int BLACK = -16777216; // 0xff000000
-    field @ColorInt public static final int BLUE = -16776961; // 0xff0000ff
-    field @ColorInt public static final int CYAN = -16711681; // 0xff00ffff
-    field @ColorInt public static final int DKGRAY = -12303292; // 0xff444444
-    field @ColorInt public static final int GRAY = -7829368; // 0xff888888
-    field @ColorInt public static final int GREEN = -16711936; // 0xff00ff00
-    field @ColorInt public static final int LTGRAY = -3355444; // 0xffcccccc
-    field @ColorInt public static final int MAGENTA = -65281; // 0xffff00ff
-    field @ColorInt public static final int RED = -65536; // 0xffff0000
-    field @ColorInt public static final int TRANSPARENT = 0; // 0x0
-    field @ColorInt public static final int WHITE = -1; // 0xffffffff
-    field @ColorInt public static final int YELLOW = -256; // 0xffffff00
-  }
-
-  public class ColorFilter {
-    ctor @Deprecated public ColorFilter();
-  }
-
-  public class ColorMatrix {
-    ctor public ColorMatrix();
-    ctor public ColorMatrix(float[]);
-    ctor public ColorMatrix(android.graphics.ColorMatrix);
-    method public final float[] getArray();
-    method public void postConcat(android.graphics.ColorMatrix);
-    method public void preConcat(android.graphics.ColorMatrix);
-    method public void reset();
-    method public void set(android.graphics.ColorMatrix);
-    method public void set(float[]);
-    method public void setConcat(android.graphics.ColorMatrix, android.graphics.ColorMatrix);
-    method public void setRGB2YUV();
-    method public void setRotate(int, float);
-    method public void setSaturation(float);
-    method public void setScale(float, float, float, float);
-    method public void setYUV2RGB();
-  }
-
-  public class ColorMatrixColorFilter extends android.graphics.ColorFilter {
-    ctor public ColorMatrixColorFilter(@NonNull android.graphics.ColorMatrix);
-    ctor public ColorMatrixColorFilter(@NonNull float[]);
-    method public void getColorMatrix(android.graphics.ColorMatrix);
-  }
-
-  @AnyThread public abstract class ColorSpace {
-    method @NonNull public static android.graphics.ColorSpace adapt(@NonNull android.graphics.ColorSpace, @NonNull @Size(min=2, max=3) float[]);
-    method @NonNull public static android.graphics.ColorSpace adapt(@NonNull android.graphics.ColorSpace, @NonNull @Size(min=2, max=3) float[], @NonNull android.graphics.ColorSpace.Adaptation);
-    method @NonNull public static android.graphics.ColorSpace.Connector connect(@NonNull android.graphics.ColorSpace, @NonNull android.graphics.ColorSpace);
-    method @NonNull public static android.graphics.ColorSpace.Connector connect(@NonNull android.graphics.ColorSpace, @NonNull android.graphics.ColorSpace, @NonNull android.graphics.ColorSpace.RenderIntent);
-    method @NonNull public static android.graphics.ColorSpace.Connector connect(@NonNull android.graphics.ColorSpace);
-    method @NonNull public static android.graphics.ColorSpace.Connector connect(@NonNull android.graphics.ColorSpace, @NonNull android.graphics.ColorSpace.RenderIntent);
-    method @NonNull @Size(min=3) public float[] fromXyz(float, float, float);
-    method @NonNull @Size(min=3) public abstract float[] fromXyz(@NonNull @Size(min=3) float[]);
-    method @NonNull public static android.graphics.ColorSpace get(@NonNull android.graphics.ColorSpace.Named);
-    method @IntRange(from=1, to=4) public int getComponentCount();
-    method @IntRange(from=android.graphics.ColorSpace.MIN_ID, to=android.graphics.ColorSpace.MAX_ID) public int getId();
-    method public abstract float getMaxValue(@IntRange(from=0, to=3) int);
-    method public abstract float getMinValue(@IntRange(from=0, to=3) int);
-    method @NonNull public android.graphics.ColorSpace.Model getModel();
-    method @NonNull public String getName();
-    method public boolean isSrgb();
-    method public abstract boolean isWideGamut();
-    method @Nullable public static android.graphics.ColorSpace match(@NonNull @Size(9) float[], @NonNull android.graphics.ColorSpace.Rgb.TransferParameters);
-    method @NonNull @Size(3) public float[] toXyz(float, float, float);
-    method @NonNull @Size(min=3) public abstract float[] toXyz(@NonNull @Size(min=3) float[]);
-    field public static final float[] ILLUMINANT_A;
-    field public static final float[] ILLUMINANT_B;
-    field public static final float[] ILLUMINANT_C;
-    field public static final float[] ILLUMINANT_D50;
-    field public static final float[] ILLUMINANT_D55;
-    field public static final float[] ILLUMINANT_D60;
-    field public static final float[] ILLUMINANT_D65;
-    field public static final float[] ILLUMINANT_D75;
-    field public static final float[] ILLUMINANT_E;
-    field public static final int MAX_ID = 63; // 0x3f
-    field public static final int MIN_ID = -1; // 0xffffffff
-  }
-
-  public enum ColorSpace.Adaptation {
-    enum_constant public static final android.graphics.ColorSpace.Adaptation BRADFORD;
-    enum_constant public static final android.graphics.ColorSpace.Adaptation CIECAT02;
-    enum_constant public static final android.graphics.ColorSpace.Adaptation VON_KRIES;
-  }
-
-  @AnyThread public static class ColorSpace.Connector {
-    method @NonNull public android.graphics.ColorSpace getDestination();
-    method public android.graphics.ColorSpace.RenderIntent getRenderIntent();
-    method @NonNull public android.graphics.ColorSpace getSource();
-    method @NonNull @Size(3) public float[] transform(float, float, float);
-    method @NonNull @Size(min=3) public float[] transform(@NonNull @Size(min=3) float[]);
-  }
-
-  public enum ColorSpace.Model {
-    method @IntRange(from=1, to=4) public int getComponentCount();
-    enum_constant public static final android.graphics.ColorSpace.Model CMYK;
-    enum_constant public static final android.graphics.ColorSpace.Model LAB;
-    enum_constant public static final android.graphics.ColorSpace.Model RGB;
-    enum_constant public static final android.graphics.ColorSpace.Model XYZ;
-  }
-
-  public enum ColorSpace.Named {
-    enum_constant public static final android.graphics.ColorSpace.Named ACES;
-    enum_constant public static final android.graphics.ColorSpace.Named ACESCG;
-    enum_constant public static final android.graphics.ColorSpace.Named ADOBE_RGB;
-    enum_constant public static final android.graphics.ColorSpace.Named BT2020;
-    enum_constant public static final android.graphics.ColorSpace.Named BT709;
-    enum_constant public static final android.graphics.ColorSpace.Named CIE_LAB;
-    enum_constant public static final android.graphics.ColorSpace.Named CIE_XYZ;
-    enum_constant public static final android.graphics.ColorSpace.Named DCI_P3;
-    enum_constant public static final android.graphics.ColorSpace.Named DISPLAY_P3;
-    enum_constant public static final android.graphics.ColorSpace.Named EXTENDED_SRGB;
-    enum_constant public static final android.graphics.ColorSpace.Named LINEAR_EXTENDED_SRGB;
-    enum_constant public static final android.graphics.ColorSpace.Named LINEAR_SRGB;
-    enum_constant public static final android.graphics.ColorSpace.Named NTSC_1953;
-    enum_constant public static final android.graphics.ColorSpace.Named PRO_PHOTO_RGB;
-    enum_constant public static final android.graphics.ColorSpace.Named SMPTE_C;
-    enum_constant public static final android.graphics.ColorSpace.Named SRGB;
-  }
-
-  public enum ColorSpace.RenderIntent {
-    enum_constant public static final android.graphics.ColorSpace.RenderIntent ABSOLUTE;
-    enum_constant public static final android.graphics.ColorSpace.RenderIntent PERCEPTUAL;
-    enum_constant public static final android.graphics.ColorSpace.RenderIntent RELATIVE;
-    enum_constant public static final android.graphics.ColorSpace.RenderIntent SATURATION;
-  }
-
-  @AnyThread public static class ColorSpace.Rgb extends android.graphics.ColorSpace {
-    ctor public ColorSpace.Rgb(@NonNull @Size(min=1) String, @NonNull @Size(9) float[], @NonNull java.util.function.DoubleUnaryOperator, @NonNull java.util.function.DoubleUnaryOperator);
-    ctor public ColorSpace.Rgb(@NonNull @Size(min=1) String, @NonNull @Size(min=6, max=9) float[], @NonNull @Size(min=2, max=3) float[], @NonNull java.util.function.DoubleUnaryOperator, @NonNull java.util.function.DoubleUnaryOperator, float, float);
-    ctor public ColorSpace.Rgb(@NonNull @Size(min=1) String, @NonNull @Size(9) float[], @NonNull android.graphics.ColorSpace.Rgb.TransferParameters);
-    ctor public ColorSpace.Rgb(@NonNull @Size(min=1) String, @NonNull @Size(min=6, max=9) float[], @NonNull @Size(min=2, max=3) float[], @NonNull android.graphics.ColorSpace.Rgb.TransferParameters);
-    ctor public ColorSpace.Rgb(@NonNull @Size(min=1) String, @NonNull @Size(9) float[], double);
-    ctor public ColorSpace.Rgb(@NonNull @Size(min=1) String, @NonNull @Size(min=6, max=9) float[], @NonNull @Size(min=2, max=3) float[], double);
-    method @NonNull @Size(3) public float[] fromLinear(float, float, float);
-    method @NonNull @Size(min=3) public float[] fromLinear(@NonNull @Size(min=3) float[]);
-    method @NonNull @Size(min=3) public float[] fromXyz(@NonNull @Size(min=3) float[]);
-    method @NonNull public java.util.function.DoubleUnaryOperator getEotf();
-    method @NonNull @Size(min=9) public float[] getInverseTransform(@NonNull @Size(min=9) float[]);
-    method @NonNull @Size(9) public float[] getInverseTransform();
-    method public float getMaxValue(int);
-    method public float getMinValue(int);
-    method @NonNull public java.util.function.DoubleUnaryOperator getOetf();
-    method @NonNull @Size(min=6) public float[] getPrimaries(@NonNull @Size(min=6) float[]);
-    method @NonNull @Size(6) public float[] getPrimaries();
-    method @Nullable public android.graphics.ColorSpace.Rgb.TransferParameters getTransferParameters();
-    method @NonNull @Size(min=9) public float[] getTransform(@NonNull @Size(min=9) float[]);
-    method @NonNull @Size(9) public float[] getTransform();
-    method @NonNull @Size(min=2) public float[] getWhitePoint(@NonNull @Size(min=2) float[]);
-    method @NonNull @Size(2) public float[] getWhitePoint();
-    method public boolean isWideGamut();
-    method @NonNull @Size(3) public float[] toLinear(float, float, float);
-    method @NonNull @Size(min=3) public float[] toLinear(@NonNull @Size(min=3) float[]);
-    method @NonNull @Size(min=3) public float[] toXyz(@NonNull @Size(min=3) float[]);
-  }
-
-  public static class ColorSpace.Rgb.TransferParameters {
-    ctor public ColorSpace.Rgb.TransferParameters(double, double, double, double, double);
-    ctor public ColorSpace.Rgb.TransferParameters(double, double, double, double, double, double, double);
-    field public final double a;
-    field public final double b;
-    field public final double c;
-    field public final double d;
-    field public final double e;
-    field public final double f;
-    field public final double g;
-  }
-
-  public class ComposePathEffect extends android.graphics.PathEffect {
-    ctor public ComposePathEffect(android.graphics.PathEffect, android.graphics.PathEffect);
-  }
-
-  public class ComposeShader extends android.graphics.Shader {
-    ctor @Deprecated public ComposeShader(@NonNull android.graphics.Shader, @NonNull android.graphics.Shader, @NonNull android.graphics.Xfermode);
-    ctor public ComposeShader(@NonNull android.graphics.Shader, @NonNull android.graphics.Shader, @NonNull android.graphics.PorterDuff.Mode);
-    ctor public ComposeShader(@NonNull android.graphics.Shader, @NonNull android.graphics.Shader, @NonNull android.graphics.BlendMode);
-  }
-
-  public class CornerPathEffect extends android.graphics.PathEffect {
-    ctor public CornerPathEffect(float);
-  }
-
-  public class DashPathEffect extends android.graphics.PathEffect {
-    ctor public DashPathEffect(float[], float);
-  }
-
-  public class DiscretePathEffect extends android.graphics.PathEffect {
-    ctor public DiscretePathEffect(float, float);
-  }
-
-  public class DrawFilter {
-    ctor public DrawFilter();
-  }
-
-  public class EmbossMaskFilter extends android.graphics.MaskFilter {
-    ctor @Deprecated public EmbossMaskFilter(float[], float, float, float);
-  }
-
-  public class HardwareRenderer {
-    ctor public HardwareRenderer();
-    method public void clearContent();
-    method @NonNull public android.graphics.HardwareRenderer.FrameRenderRequest createRenderRequest();
-    method public void destroy();
-    method public boolean isOpaque();
-    method public void notifyFramePending();
-    method public void setContentRoot(@Nullable android.graphics.RenderNode);
-    method public void setLightSourceAlpha(@FloatRange(from=0.0f, to=1.0f) float, @FloatRange(from=0.0f, to=1.0f) float);
-    method public void setLightSourceGeometry(float, float, float, float);
-    method public void setName(@NonNull String);
-    method public void setOpaque(boolean);
-    method public void setSurface(@Nullable android.view.Surface);
-    method public void start();
-    method public void stop();
-    field public static final int SYNC_CONTEXT_IS_STOPPED = 4; // 0x4
-    field public static final int SYNC_FRAME_DROPPED = 8; // 0x8
-    field public static final int SYNC_LOST_SURFACE_REWARD_IF_FOUND = 2; // 0x2
-    field public static final int SYNC_OK = 0; // 0x0
-    field public static final int SYNC_REDRAW_REQUESTED = 1; // 0x1
-  }
-
-  public final class HardwareRenderer.FrameRenderRequest {
-    method @NonNull public android.graphics.HardwareRenderer.FrameRenderRequest setFrameCommitCallback(@NonNull java.util.concurrent.Executor, @NonNull Runnable);
-    method @NonNull public android.graphics.HardwareRenderer.FrameRenderRequest setVsyncTime(long);
-    method @NonNull public android.graphics.HardwareRenderer.FrameRenderRequest setWaitForPresent(boolean);
-    method public int syncAndDraw();
-  }
-
-  public final class ImageDecoder implements java.lang.AutoCloseable {
-    method public void close();
-    method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull android.content.res.Resources, int);
-    method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull android.content.ContentResolver, @NonNull android.net.Uri);
-    method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull android.content.res.AssetManager, @NonNull String);
-    method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull java.nio.ByteBuffer);
-    method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull java.io.File);
-    method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull java.util.concurrent.Callable<android.content.res.AssetFileDescriptor>);
-    method @NonNull @WorkerThread public static android.graphics.Bitmap decodeBitmap(@NonNull android.graphics.ImageDecoder.Source, @NonNull android.graphics.ImageDecoder.OnHeaderDecodedListener) throws java.io.IOException;
-    method @NonNull @WorkerThread public static android.graphics.Bitmap decodeBitmap(@NonNull android.graphics.ImageDecoder.Source) throws java.io.IOException;
-    method @NonNull @WorkerThread public static android.graphics.drawable.Drawable decodeDrawable(@NonNull android.graphics.ImageDecoder.Source, @NonNull android.graphics.ImageDecoder.OnHeaderDecodedListener) throws java.io.IOException;
-    method @NonNull @WorkerThread public static android.graphics.drawable.Drawable decodeDrawable(@NonNull android.graphics.ImageDecoder.Source) throws java.io.IOException;
-    method public int getAllocator();
-    method @Nullable public android.graphics.Rect getCrop();
-    method public int getMemorySizePolicy();
-    method @Nullable public android.graphics.ImageDecoder.OnPartialImageListener getOnPartialImageListener();
-    method @Nullable public android.graphics.PostProcessor getPostProcessor();
-    method public boolean isDecodeAsAlphaMaskEnabled();
-    method public static boolean isMimeTypeSupported(@NonNull String);
-    method public boolean isMutableRequired();
-    method public boolean isUnpremultipliedRequired();
-    method public void setAllocator(int);
-    method public void setCrop(@Nullable android.graphics.Rect);
-    method public void setDecodeAsAlphaMaskEnabled(boolean);
-    method public void setMemorySizePolicy(int);
-    method public void setMutableRequired(boolean);
-    method public void setOnPartialImageListener(@Nullable android.graphics.ImageDecoder.OnPartialImageListener);
-    method public void setPostProcessor(@Nullable android.graphics.PostProcessor);
-    method public void setTargetColorSpace(android.graphics.ColorSpace);
-    method public void setTargetSampleSize(@IntRange(from=1) int);
-    method public void setTargetSize(@IntRange(from=1) @Px int, @IntRange(from=1) @Px int);
-    method public void setUnpremultipliedRequired(boolean);
-    field public static final int ALLOCATOR_DEFAULT = 0; // 0x0
-    field public static final int ALLOCATOR_HARDWARE = 3; // 0x3
-    field public static final int ALLOCATOR_SHARED_MEMORY = 2; // 0x2
-    field public static final int ALLOCATOR_SOFTWARE = 1; // 0x1
-    field public static final int MEMORY_POLICY_DEFAULT = 1; // 0x1
-    field public static final int MEMORY_POLICY_LOW_RAM = 0; // 0x0
-  }
-
-  public static final class ImageDecoder.DecodeException extends java.io.IOException {
-    method public int getError();
-    method @NonNull public android.graphics.ImageDecoder.Source getSource();
-    field public static final int SOURCE_EXCEPTION = 1; // 0x1
-    field public static final int SOURCE_INCOMPLETE = 2; // 0x2
-    field public static final int SOURCE_MALFORMED_DATA = 3; // 0x3
-  }
-
-  public static class ImageDecoder.ImageInfo {
-    method @Nullable public android.graphics.ColorSpace getColorSpace();
-    method @NonNull public String getMimeType();
-    method @NonNull public android.util.Size getSize();
-    method public boolean isAnimated();
-  }
-
-  public static interface ImageDecoder.OnHeaderDecodedListener {
-    method public void onHeaderDecoded(@NonNull android.graphics.ImageDecoder, @NonNull android.graphics.ImageDecoder.ImageInfo, @NonNull android.graphics.ImageDecoder.Source);
-  }
-
-  public static interface ImageDecoder.OnPartialImageListener {
-    method public boolean onPartialImage(@NonNull android.graphics.ImageDecoder.DecodeException);
-  }
-
-  public abstract static class ImageDecoder.Source {
-  }
-
-  public class ImageFormat {
-    ctor public ImageFormat();
-    method public static int getBitsPerPixel(int);
-    field public static final int DEPTH16 = 1144402265; // 0x44363159
-    field public static final int DEPTH_JPEG = 1768253795; // 0x69656963
-    field public static final int DEPTH_POINT_CLOUD = 257; // 0x101
-    field public static final int FLEX_RGBA_8888 = 42; // 0x2a
-    field public static final int FLEX_RGB_888 = 41; // 0x29
-    field public static final int HEIC = 1212500294; // 0x48454946
-    field public static final int JPEG = 256; // 0x100
-    field public static final int NV16 = 16; // 0x10
-    field public static final int NV21 = 17; // 0x11
-    field public static final int PRIVATE = 34; // 0x22
-    field public static final int RAW10 = 37; // 0x25
-    field public static final int RAW12 = 38; // 0x26
-    field public static final int RAW_PRIVATE = 36; // 0x24
-    field public static final int RAW_SENSOR = 32; // 0x20
-    field public static final int RGB_565 = 4; // 0x4
-    field public static final int UNKNOWN = 0; // 0x0
-    field public static final int Y8 = 538982489; // 0x20203859
-    field public static final int YUV_420_888 = 35; // 0x23
-    field public static final int YUV_422_888 = 39; // 0x27
-    field public static final int YUV_444_888 = 40; // 0x28
-    field public static final int YUY2 = 20; // 0x14
-    field public static final int YV12 = 842094169; // 0x32315659
-  }
-
-  public final class Insets implements android.os.Parcelable {
-    method @NonNull public static android.graphics.Insets add(@NonNull android.graphics.Insets, @NonNull android.graphics.Insets);
-    method public int describeContents();
-    method @NonNull public static android.graphics.Insets max(@NonNull android.graphics.Insets, @NonNull android.graphics.Insets);
-    method @NonNull public static android.graphics.Insets min(@NonNull android.graphics.Insets, @NonNull android.graphics.Insets);
-    method @NonNull public static android.graphics.Insets of(int, int, int, int);
-    method @NonNull public static android.graphics.Insets of(@Nullable android.graphics.Rect);
-    method @NonNull public static android.graphics.Insets subtract(@NonNull android.graphics.Insets, @NonNull android.graphics.Insets);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.graphics.Insets> CREATOR;
-    field @NonNull public static final android.graphics.Insets NONE;
-    field public final int bottom;
-    field public final int left;
-    field public final int right;
-    field public final int top;
-  }
-
-  public class Interpolator {
-    ctor public Interpolator(int);
-    ctor public Interpolator(int, int);
-    method public final int getKeyFrameCount();
-    method public final int getValueCount();
-    method public void reset(int);
-    method public void reset(int, int);
-    method public void setKeyFrame(int, int, float[]);
-    method public void setKeyFrame(int, int, float[], float[]);
-    method public void setRepeatMirror(float, boolean);
-    method public android.graphics.Interpolator.Result timeToValues(float[]);
-    method public android.graphics.Interpolator.Result timeToValues(int, float[]);
-  }
-
-  public enum Interpolator.Result {
-    enum_constant public static final android.graphics.Interpolator.Result FREEZE_END;
-    enum_constant public static final android.graphics.Interpolator.Result FREEZE_START;
-    enum_constant public static final android.graphics.Interpolator.Result NORMAL;
-  }
-
-  public class LightingColorFilter extends android.graphics.ColorFilter {
-    ctor public LightingColorFilter(@ColorInt int, @ColorInt int);
-    method @ColorInt public int getColorAdd();
-    method @ColorInt public int getColorMultiply();
-  }
-
-  public class LinearGradient extends android.graphics.Shader {
-    ctor public LinearGradient(float, float, float, float, @ColorInt @NonNull int[], @Nullable float[], @NonNull android.graphics.Shader.TileMode);
-    ctor public LinearGradient(float, float, float, float, @ColorLong @NonNull long[], @Nullable float[], @NonNull android.graphics.Shader.TileMode);
-    ctor public LinearGradient(float, float, float, float, @ColorInt int, @ColorInt int, @NonNull android.graphics.Shader.TileMode);
-    ctor public LinearGradient(float, float, float, float, @ColorLong long, @ColorLong long, @NonNull android.graphics.Shader.TileMode);
-  }
-
-  public class MaskFilter {
-    ctor public MaskFilter();
-  }
-
-  public class Matrix {
-    ctor public Matrix();
-    ctor public Matrix(android.graphics.Matrix);
-    method public void getValues(float[]);
-    method public boolean invert(android.graphics.Matrix);
-    method public boolean isAffine();
-    method public boolean isIdentity();
-    method public void mapPoints(float[], int, float[], int, int);
-    method public void mapPoints(float[], float[]);
-    method public void mapPoints(float[]);
-    method public float mapRadius(float);
-    method public boolean mapRect(android.graphics.RectF, android.graphics.RectF);
-    method public boolean mapRect(android.graphics.RectF);
-    method public void mapVectors(float[], int, float[], int, int);
-    method public void mapVectors(float[], float[]);
-    method public void mapVectors(float[]);
-    method public boolean postConcat(android.graphics.Matrix);
-    method public boolean postRotate(float, float, float);
-    method public boolean postRotate(float);
-    method public boolean postScale(float, float, float, float);
-    method public boolean postScale(float, float);
-    method public boolean postSkew(float, float, float, float);
-    method public boolean postSkew(float, float);
-    method public boolean postTranslate(float, float);
-    method public boolean preConcat(android.graphics.Matrix);
-    method public boolean preRotate(float, float, float);
-    method public boolean preRotate(float);
-    method public boolean preScale(float, float, float, float);
-    method public boolean preScale(float, float);
-    method public boolean preSkew(float, float, float, float);
-    method public boolean preSkew(float, float);
-    method public boolean preTranslate(float, float);
-    method public boolean rectStaysRect();
-    method public void reset();
-    method public void set(android.graphics.Matrix);
-    method public boolean setConcat(android.graphics.Matrix, android.graphics.Matrix);
-    method public boolean setPolyToPoly(float[], int, float[], int, int);
-    method public boolean setRectToRect(android.graphics.RectF, android.graphics.RectF, android.graphics.Matrix.ScaleToFit);
-    method public void setRotate(float, float, float);
-    method public void setRotate(float);
-    method public void setScale(float, float, float, float);
-    method public void setScale(float, float);
-    method public void setSinCos(float, float, float, float);
-    method public void setSinCos(float, float);
-    method public void setSkew(float, float, float, float);
-    method public void setSkew(float, float);
-    method public void setTranslate(float, float);
-    method public void setValues(float[]);
-    method public String toShortString();
-    field public static final int MPERSP_0 = 6; // 0x6
-    field public static final int MPERSP_1 = 7; // 0x7
-    field public static final int MPERSP_2 = 8; // 0x8
-    field public static final int MSCALE_X = 0; // 0x0
-    field public static final int MSCALE_Y = 4; // 0x4
-    field public static final int MSKEW_X = 1; // 0x1
-    field public static final int MSKEW_Y = 3; // 0x3
-    field public static final int MTRANS_X = 2; // 0x2
-    field public static final int MTRANS_Y = 5; // 0x5
-  }
-
-  public enum Matrix.ScaleToFit {
-    enum_constant public static final android.graphics.Matrix.ScaleToFit CENTER;
-    enum_constant public static final android.graphics.Matrix.ScaleToFit END;
-    enum_constant public static final android.graphics.Matrix.ScaleToFit FILL;
-    enum_constant public static final android.graphics.Matrix.ScaleToFit START;
-  }
-
-  @Deprecated public class Movie {
-    method @Deprecated public static android.graphics.Movie decodeByteArray(byte[], int, int);
-    method @Deprecated public static android.graphics.Movie decodeFile(String);
-    method @Deprecated public static android.graphics.Movie decodeStream(java.io.InputStream);
-    method @Deprecated public void draw(android.graphics.Canvas, float, float, android.graphics.Paint);
-    method @Deprecated public void draw(android.graphics.Canvas, float, float);
-    method @Deprecated public int duration();
-    method @Deprecated public int height();
-    method @Deprecated public boolean isOpaque();
-    method @Deprecated public boolean setTime(int);
-    method @Deprecated public int width();
-  }
-
-  public class NinePatch {
-    ctor public NinePatch(android.graphics.Bitmap, byte[]);
-    ctor public NinePatch(android.graphics.Bitmap, byte[], String);
-    method public void draw(android.graphics.Canvas, android.graphics.RectF);
-    method public void draw(android.graphics.Canvas, android.graphics.Rect);
-    method public void draw(android.graphics.Canvas, android.graphics.Rect, android.graphics.Paint);
-    method public android.graphics.Bitmap getBitmap();
-    method public int getDensity();
-    method public int getHeight();
-    method public String getName();
-    method public android.graphics.Paint getPaint();
-    method public final android.graphics.Region getTransparentRegion(android.graphics.Rect);
-    method public int getWidth();
-    method public final boolean hasAlpha();
-    method public static boolean isNinePatchChunk(byte[]);
-    method public void setPaint(android.graphics.Paint);
-  }
-
-  public final class Outline {
-    ctor public Outline();
-    ctor public Outline(@NonNull android.graphics.Outline);
-    method public boolean canClip();
-    method public float getAlpha();
-    method public float getRadius();
-    method public boolean getRect(@NonNull android.graphics.Rect);
-    method public boolean isEmpty();
-    method public void offset(int, int);
-    method public void set(@NonNull android.graphics.Outline);
-    method public void setAlpha(@FloatRange(from=0.0, to=1.0) float);
-    method @Deprecated public void setConvexPath(@NonNull android.graphics.Path);
-    method public void setEmpty();
-    method public void setOval(int, int, int, int);
-    method public void setOval(@NonNull android.graphics.Rect);
-    method public void setPath(@NonNull android.graphics.Path);
-    method public void setRect(int, int, int, int);
-    method public void setRect(@NonNull android.graphics.Rect);
-    method public void setRoundRect(int, int, int, int, float);
-    method public void setRoundRect(@NonNull android.graphics.Rect, float);
-  }
-
-  public class Paint {
-    ctor public Paint();
-    ctor public Paint(int);
-    ctor public Paint(android.graphics.Paint);
-    method public float ascent();
-    method public int breakText(char[], int, int, float, float[]);
-    method public int breakText(CharSequence, int, int, boolean, float, float[]);
-    method public int breakText(String, boolean, float, float[]);
-    method public void clearShadowLayer();
-    method public float descent();
-    method public boolean equalsForTextMeasurement(@NonNull android.graphics.Paint);
-    method public int getAlpha();
-    method @Nullable public android.graphics.BlendMode getBlendMode();
-    method @ColorInt public int getColor();
-    method public android.graphics.ColorFilter getColorFilter();
-    method @ColorLong public long getColorLong();
-    method public int getEndHyphenEdit();
-    method public boolean getFillPath(android.graphics.Path, android.graphics.Path);
-    method public int getFlags();
-    method public String getFontFeatureSettings();
-    method public float getFontMetrics(android.graphics.Paint.FontMetrics);
-    method public android.graphics.Paint.FontMetrics getFontMetrics();
-    method public int getFontMetricsInt(android.graphics.Paint.FontMetricsInt);
-    method public android.graphics.Paint.FontMetricsInt getFontMetricsInt();
-    method public float getFontSpacing();
-    method public String getFontVariationSettings();
-    method public int getHinting();
-    method public float getLetterSpacing();
-    method public android.graphics.MaskFilter getMaskFilter();
-    method public int getOffsetForAdvance(char[], int, int, int, int, boolean, float);
-    method public int getOffsetForAdvance(CharSequence, int, int, int, int, boolean, float);
-    method public android.graphics.PathEffect getPathEffect();
-    method public float getRunAdvance(char[], int, int, int, int, boolean, int);
-    method public float getRunAdvance(CharSequence, int, int, int, int, boolean, int);
-    method public android.graphics.Shader getShader();
-    method @ColorInt public int getShadowLayerColor();
-    method @ColorLong public long getShadowLayerColorLong();
-    method public float getShadowLayerDx();
-    method public float getShadowLayerDy();
-    method public float getShadowLayerRadius();
-    method public int getStartHyphenEdit();
-    method @Px public float getStrikeThruPosition();
-    method @Px public float getStrikeThruThickness();
-    method public android.graphics.Paint.Cap getStrokeCap();
-    method public android.graphics.Paint.Join getStrokeJoin();
-    method public float getStrokeMiter();
-    method public float getStrokeWidth();
-    method public android.graphics.Paint.Style getStyle();
-    method public android.graphics.Paint.Align getTextAlign();
-    method public void getTextBounds(String, int, int, android.graphics.Rect);
-    method public void getTextBounds(@NonNull CharSequence, int, int, @NonNull android.graphics.Rect);
-    method public void getTextBounds(char[], int, int, android.graphics.Rect);
-    method @NonNull public java.util.Locale getTextLocale();
-    method @NonNull @Size(min=1) public android.os.LocaleList getTextLocales();
-    method public void getTextPath(char[], int, int, float, float, android.graphics.Path);
-    method public void getTextPath(String, int, int, float, float, android.graphics.Path);
-    method public float getTextRunAdvances(@NonNull char[], @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int, boolean, @Nullable float[], @IntRange(from=0) int);
-    method public int getTextRunCursor(@NonNull char[], @IntRange(from=0) int, @IntRange(from=0) int, boolean, @IntRange(from=0) int, int);
-    method public int getTextRunCursor(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, boolean, @IntRange(from=0) int, int);
-    method public float getTextScaleX();
-    method public float getTextSize();
-    method public float getTextSkewX();
-    method public int getTextWidths(char[], int, int, float[]);
-    method public int getTextWidths(CharSequence, int, int, float[]);
-    method public int getTextWidths(String, int, int, float[]);
-    method public int getTextWidths(String, float[]);
-    method public android.graphics.Typeface getTypeface();
-    method @Px public float getUnderlinePosition();
-    method @Px public float getUnderlineThickness();
-    method @Px public float getWordSpacing();
-    method public android.graphics.Xfermode getXfermode();
-    method public boolean hasGlyph(String);
-    method public final boolean isAntiAlias();
-    method public final boolean isDither();
-    method public boolean isElegantTextHeight();
-    method public final boolean isFakeBoldText();
-    method public final boolean isFilterBitmap();
-    method public final boolean isLinearText();
-    method public final boolean isStrikeThruText();
-    method public final boolean isSubpixelText();
-    method public final boolean isUnderlineText();
-    method public float measureText(char[], int, int);
-    method public float measureText(String, int, int);
-    method public float measureText(String);
-    method public float measureText(CharSequence, int, int);
-    method public void reset();
-    method public void set(android.graphics.Paint);
-    method public void setARGB(int, int, int, int);
-    method public void setAlpha(int);
-    method public void setAntiAlias(boolean);
-    method public void setBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setColor(@ColorInt int);
-    method public void setColor(@ColorLong long);
-    method public android.graphics.ColorFilter setColorFilter(android.graphics.ColorFilter);
-    method public void setDither(boolean);
-    method public void setElegantTextHeight(boolean);
-    method public void setEndHyphenEdit(int);
-    method public void setFakeBoldText(boolean);
-    method public void setFilterBitmap(boolean);
-    method public void setFlags(int);
-    method public void setFontFeatureSettings(String);
-    method public boolean setFontVariationSettings(String);
-    method public void setHinting(int);
-    method public void setLetterSpacing(float);
-    method public void setLinearText(boolean);
-    method public android.graphics.MaskFilter setMaskFilter(android.graphics.MaskFilter);
-    method public android.graphics.PathEffect setPathEffect(android.graphics.PathEffect);
-    method public android.graphics.Shader setShader(android.graphics.Shader);
-    method public void setShadowLayer(float, float, float, @ColorInt int);
-    method public void setShadowLayer(float, float, float, @ColorLong long);
-    method public void setStartHyphenEdit(int);
-    method public void setStrikeThruText(boolean);
-    method public void setStrokeCap(android.graphics.Paint.Cap);
-    method public void setStrokeJoin(android.graphics.Paint.Join);
-    method public void setStrokeMiter(float);
-    method public void setStrokeWidth(float);
-    method public void setStyle(android.graphics.Paint.Style);
-    method public void setSubpixelText(boolean);
-    method public void setTextAlign(android.graphics.Paint.Align);
-    method public void setTextLocale(@NonNull java.util.Locale);
-    method public void setTextLocales(@NonNull @Size(min=1) android.os.LocaleList);
-    method public void setTextScaleX(float);
-    method public void setTextSize(float);
-    method public void setTextSkewX(float);
-    method public android.graphics.Typeface setTypeface(android.graphics.Typeface);
-    method public void setUnderlineText(boolean);
-    method public void setWordSpacing(@Px float);
-    method public android.graphics.Xfermode setXfermode(android.graphics.Xfermode);
-    field public static final int ANTI_ALIAS_FLAG = 1; // 0x1
-    field public static final int CURSOR_AFTER = 0; // 0x0
-    field public static final int CURSOR_AT = 4; // 0x4
-    field public static final int CURSOR_AT_OR_AFTER = 1; // 0x1
-    field public static final int CURSOR_AT_OR_BEFORE = 3; // 0x3
-    field public static final int CURSOR_BEFORE = 2; // 0x2
-    field public static final int DEV_KERN_TEXT_FLAG = 256; // 0x100
-    field public static final int DITHER_FLAG = 4; // 0x4
-    field public static final int EMBEDDED_BITMAP_TEXT_FLAG = 1024; // 0x400
-    field public static final int END_HYPHEN_EDIT_INSERT_ARMENIAN_HYPHEN = 3; // 0x3
-    field public static final int END_HYPHEN_EDIT_INSERT_HYPHEN = 2; // 0x2
-    field public static final int END_HYPHEN_EDIT_INSERT_MAQAF = 4; // 0x4
-    field public static final int END_HYPHEN_EDIT_INSERT_UCAS_HYPHEN = 5; // 0x5
-    field public static final int END_HYPHEN_EDIT_INSERT_ZWJ_AND_HYPHEN = 6; // 0x6
-    field public static final int END_HYPHEN_EDIT_NO_EDIT = 0; // 0x0
-    field public static final int END_HYPHEN_EDIT_REPLACE_WITH_HYPHEN = 1; // 0x1
-    field public static final int FAKE_BOLD_TEXT_FLAG = 32; // 0x20
-    field public static final int FILTER_BITMAP_FLAG = 2; // 0x2
-    field public static final int HINTING_OFF = 0; // 0x0
-    field public static final int HINTING_ON = 1; // 0x1
-    field public static final int LINEAR_TEXT_FLAG = 64; // 0x40
-    field public static final int START_HYPHEN_EDIT_INSERT_HYPHEN = 1; // 0x1
-    field public static final int START_HYPHEN_EDIT_INSERT_ZWJ = 2; // 0x2
-    field public static final int START_HYPHEN_EDIT_NO_EDIT = 0; // 0x0
-    field public static final int STRIKE_THRU_TEXT_FLAG = 16; // 0x10
-    field public static final int SUBPIXEL_TEXT_FLAG = 128; // 0x80
-    field public static final int UNDERLINE_TEXT_FLAG = 8; // 0x8
-  }
-
-  public enum Paint.Align {
-    enum_constant public static final android.graphics.Paint.Align CENTER;
-    enum_constant public static final android.graphics.Paint.Align LEFT;
-    enum_constant public static final android.graphics.Paint.Align RIGHT;
-  }
-
-  public enum Paint.Cap {
-    enum_constant public static final android.graphics.Paint.Cap BUTT;
-    enum_constant public static final android.graphics.Paint.Cap ROUND;
-    enum_constant public static final android.graphics.Paint.Cap SQUARE;
-  }
-
-  public static class Paint.FontMetrics {
-    ctor public Paint.FontMetrics();
-    field public float ascent;
-    field public float bottom;
-    field public float descent;
-    field public float leading;
-    field public float top;
-  }
-
-  public static class Paint.FontMetricsInt {
-    ctor public Paint.FontMetricsInt();
-    field public int ascent;
-    field public int bottom;
-    field public int descent;
-    field public int leading;
-    field public int top;
-  }
-
-  public enum Paint.Join {
-    enum_constant public static final android.graphics.Paint.Join BEVEL;
-    enum_constant public static final android.graphics.Paint.Join MITER;
-    enum_constant public static final android.graphics.Paint.Join ROUND;
-  }
-
-  public enum Paint.Style {
-    enum_constant public static final android.graphics.Paint.Style FILL;
-    enum_constant public static final android.graphics.Paint.Style FILL_AND_STROKE;
-    enum_constant public static final android.graphics.Paint.Style STROKE;
-  }
-
-  public class PaintFlagsDrawFilter extends android.graphics.DrawFilter {
-    ctor public PaintFlagsDrawFilter(int, int);
-  }
-
-  public class Path {
-    ctor public Path();
-    ctor public Path(@Nullable android.graphics.Path);
-    method public void addArc(@NonNull android.graphics.RectF, float, float);
-    method public void addArc(float, float, float, float, float, float);
-    method public void addCircle(float, float, float, @NonNull android.graphics.Path.Direction);
-    method public void addOval(@NonNull android.graphics.RectF, @NonNull android.graphics.Path.Direction);
-    method public void addOval(float, float, float, float, @NonNull android.graphics.Path.Direction);
-    method public void addPath(@NonNull android.graphics.Path, float, float);
-    method public void addPath(@NonNull android.graphics.Path);
-    method public void addPath(@NonNull android.graphics.Path, @NonNull android.graphics.Matrix);
-    method public void addRect(@NonNull android.graphics.RectF, @NonNull android.graphics.Path.Direction);
-    method public void addRect(float, float, float, float, @NonNull android.graphics.Path.Direction);
-    method public void addRoundRect(@NonNull android.graphics.RectF, float, float, @NonNull android.graphics.Path.Direction);
-    method public void addRoundRect(float, float, float, float, float, float, @NonNull android.graphics.Path.Direction);
-    method public void addRoundRect(@NonNull android.graphics.RectF, @NonNull float[], @NonNull android.graphics.Path.Direction);
-    method public void addRoundRect(float, float, float, float, @NonNull float[], @NonNull android.graphics.Path.Direction);
-    method @NonNull @Size(min=6, multiple=3) public float[] approximate(@FloatRange(from=0) float);
-    method public void arcTo(@NonNull android.graphics.RectF, float, float, boolean);
-    method public void arcTo(@NonNull android.graphics.RectF, float, float);
-    method public void arcTo(float, float, float, float, float, float, boolean);
-    method public void close();
-    method public void computeBounds(@NonNull android.graphics.RectF, boolean);
-    method public void cubicTo(float, float, float, float, float, float);
-    method @NonNull public android.graphics.Path.FillType getFillType();
-    method public void incReserve(int);
-    method @Deprecated public boolean isConvex();
-    method public boolean isEmpty();
-    method public boolean isInverseFillType();
-    method public boolean isRect(@Nullable android.graphics.RectF);
-    method public void lineTo(float, float);
-    method public void moveTo(float, float);
-    method public void offset(float, float, @Nullable android.graphics.Path);
-    method public void offset(float, float);
-    method public boolean op(@NonNull android.graphics.Path, @NonNull android.graphics.Path.Op);
-    method public boolean op(@NonNull android.graphics.Path, @NonNull android.graphics.Path, @NonNull android.graphics.Path.Op);
-    method public void quadTo(float, float, float, float);
-    method public void rCubicTo(float, float, float, float, float, float);
-    method public void rLineTo(float, float);
-    method public void rMoveTo(float, float);
-    method public void rQuadTo(float, float, float, float);
-    method public void reset();
-    method public void rewind();
-    method public void set(@NonNull android.graphics.Path);
-    method public void setFillType(@NonNull android.graphics.Path.FillType);
-    method public void setLastPoint(float, float);
-    method public void toggleInverseFillType();
-    method public void transform(@NonNull android.graphics.Matrix, @Nullable android.graphics.Path);
-    method public void transform(@NonNull android.graphics.Matrix);
-  }
-
-  public enum Path.Direction {
-    enum_constant public static final android.graphics.Path.Direction CCW;
-    enum_constant public static final android.graphics.Path.Direction CW;
-  }
-
-  public enum Path.FillType {
-    enum_constant public static final android.graphics.Path.FillType EVEN_ODD;
-    enum_constant public static final android.graphics.Path.FillType INVERSE_EVEN_ODD;
-    enum_constant public static final android.graphics.Path.FillType INVERSE_WINDING;
-    enum_constant public static final android.graphics.Path.FillType WINDING;
-  }
-
-  public enum Path.Op {
-    enum_constant public static final android.graphics.Path.Op DIFFERENCE;
-    enum_constant public static final android.graphics.Path.Op INTERSECT;
-    enum_constant public static final android.graphics.Path.Op REVERSE_DIFFERENCE;
-    enum_constant public static final android.graphics.Path.Op UNION;
-    enum_constant public static final android.graphics.Path.Op XOR;
-  }
-
-  public class PathDashPathEffect extends android.graphics.PathEffect {
-    ctor public PathDashPathEffect(android.graphics.Path, float, float, android.graphics.PathDashPathEffect.Style);
-  }
-
-  public enum PathDashPathEffect.Style {
-    enum_constant public static final android.graphics.PathDashPathEffect.Style MORPH;
-    enum_constant public static final android.graphics.PathDashPathEffect.Style ROTATE;
-    enum_constant public static final android.graphics.PathDashPathEffect.Style TRANSLATE;
-  }
-
-  public class PathEffect {
-    ctor public PathEffect();
-  }
-
-  public class PathMeasure {
-    ctor public PathMeasure();
-    ctor public PathMeasure(android.graphics.Path, boolean);
-    method public float getLength();
-    method public boolean getMatrix(float, android.graphics.Matrix, int);
-    method public boolean getPosTan(float, float[], float[]);
-    method public boolean getSegment(float, float, android.graphics.Path, boolean);
-    method public boolean isClosed();
-    method public boolean nextContour();
-    method public void setPath(android.graphics.Path, boolean);
-    field public static final int POSITION_MATRIX_FLAG = 1; // 0x1
-    field public static final int TANGENT_MATRIX_FLAG = 2; // 0x2
-  }
-
-  public class Picture {
-    ctor public Picture();
-    ctor public Picture(android.graphics.Picture);
-    method @NonNull public android.graphics.Canvas beginRecording(int, int);
-    method public void draw(@NonNull android.graphics.Canvas);
-    method public void endRecording();
-    method public int getHeight();
-    method public int getWidth();
-    method public boolean requiresHardwareAcceleration();
-  }
-
-  public class PixelFormat {
-    ctor public PixelFormat();
-    method public static boolean formatHasAlpha(int);
-    method public static void getPixelFormatInfo(int, android.graphics.PixelFormat);
-    field @Deprecated public static final int A_8 = 8; // 0x8
-    field @Deprecated public static final int JPEG = 256; // 0x100
-    field @Deprecated public static final int LA_88 = 10; // 0xa
-    field @Deprecated public static final int L_8 = 9; // 0x9
-    field public static final int OPAQUE = -1; // 0xffffffff
-    field public static final int RGBA_1010102 = 43; // 0x2b
-    field @Deprecated public static final int RGBA_4444 = 7; // 0x7
-    field @Deprecated public static final int RGBA_5551 = 6; // 0x6
-    field public static final int RGBA_8888 = 1; // 0x1
-    field public static final int RGBA_F16 = 22; // 0x16
-    field public static final int RGBX_8888 = 2; // 0x2
-    field @Deprecated public static final int RGB_332 = 11; // 0xb
-    field public static final int RGB_565 = 4; // 0x4
-    field public static final int RGB_888 = 3; // 0x3
-    field public static final int TRANSLUCENT = -3; // 0xfffffffd
-    field public static final int TRANSPARENT = -2; // 0xfffffffe
-    field public static final int UNKNOWN = 0; // 0x0
-    field @Deprecated public static final int YCbCr_420_SP = 17; // 0x11
-    field @Deprecated public static final int YCbCr_422_I = 20; // 0x14
-    field @Deprecated public static final int YCbCr_422_SP = 16; // 0x10
-    field public int bitsPerPixel;
-    field public int bytesPerPixel;
-  }
-
-  public class Point implements android.os.Parcelable {
-    ctor public Point();
-    ctor public Point(int, int);
-    ctor public Point(@NonNull android.graphics.Point);
-    method public int describeContents();
-    method public final boolean equals(int, int);
-    method public final void negate();
-    method public final void offset(int, int);
-    method public void readFromParcel(@NonNull android.os.Parcel);
-    method public void set(int, int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.graphics.Point> CREATOR;
-    field public int x;
-    field public int y;
-  }
-
-  public class PointF implements android.os.Parcelable {
-    ctor public PointF();
-    ctor public PointF(float, float);
-    ctor public PointF(@NonNull android.graphics.Point);
-    ctor public PointF(@NonNull android.graphics.PointF);
-    method public int describeContents();
-    method public final boolean equals(float, float);
-    method public final float length();
-    method public static float length(float, float);
-    method public final void negate();
-    method public final void offset(float, float);
-    method public void readFromParcel(@NonNull android.os.Parcel);
-    method public final void set(float, float);
-    method public final void set(@NonNull android.graphics.PointF);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.graphics.PointF> CREATOR;
-    field public float x;
-    field public float y;
-  }
-
-  public class PorterDuff {
-    ctor public PorterDuff();
-  }
-
-  public enum PorterDuff.Mode {
-    enum_constant public static final android.graphics.PorterDuff.Mode ADD;
-    enum_constant public static final android.graphics.PorterDuff.Mode CLEAR;
-    enum_constant public static final android.graphics.PorterDuff.Mode DARKEN;
-    enum_constant public static final android.graphics.PorterDuff.Mode DST;
-    enum_constant public static final android.graphics.PorterDuff.Mode DST_ATOP;
-    enum_constant public static final android.graphics.PorterDuff.Mode DST_IN;
-    enum_constant public static final android.graphics.PorterDuff.Mode DST_OUT;
-    enum_constant public static final android.graphics.PorterDuff.Mode DST_OVER;
-    enum_constant public static final android.graphics.PorterDuff.Mode LIGHTEN;
-    enum_constant public static final android.graphics.PorterDuff.Mode MULTIPLY;
-    enum_constant public static final android.graphics.PorterDuff.Mode OVERLAY;
-    enum_constant public static final android.graphics.PorterDuff.Mode SCREEN;
-    enum_constant public static final android.graphics.PorterDuff.Mode SRC;
-    enum_constant public static final android.graphics.PorterDuff.Mode SRC_ATOP;
-    enum_constant public static final android.graphics.PorterDuff.Mode SRC_IN;
-    enum_constant public static final android.graphics.PorterDuff.Mode SRC_OUT;
-    enum_constant public static final android.graphics.PorterDuff.Mode SRC_OVER;
-    enum_constant public static final android.graphics.PorterDuff.Mode XOR;
-  }
-
-  public class PorterDuffColorFilter extends android.graphics.ColorFilter {
-    ctor public PorterDuffColorFilter(@ColorInt int, @NonNull android.graphics.PorterDuff.Mode);
-  }
-
-  public class PorterDuffXfermode extends android.graphics.Xfermode {
-    ctor public PorterDuffXfermode(android.graphics.PorterDuff.Mode);
-  }
-
-  public interface PostProcessor {
-    method public int onPostProcess(@NonNull android.graphics.Canvas);
-  }
-
-  public class RadialGradient extends android.graphics.Shader {
-    ctor public RadialGradient(float, float, float, @ColorInt @NonNull int[], @Nullable float[], @NonNull android.graphics.Shader.TileMode);
-    ctor public RadialGradient(float, float, float, @ColorLong @NonNull long[], @Nullable float[], @NonNull android.graphics.Shader.TileMode);
-    ctor public RadialGradient(float, float, float, @ColorInt int, @ColorInt int, @NonNull android.graphics.Shader.TileMode);
-    ctor public RadialGradient(float, float, float, @ColorLong long, @ColorLong long, @NonNull android.graphics.Shader.TileMode);
-  }
-
-  public final class RecordingCanvas extends android.graphics.Canvas {
-    method public final void drawPatch(@NonNull android.graphics.NinePatch, @NonNull android.graphics.Rect, @Nullable android.graphics.Paint);
-    method public final void drawPatch(@NonNull android.graphics.NinePatch, @NonNull android.graphics.RectF, @Nullable android.graphics.Paint);
-  }
-
-  public final class Rect implements android.os.Parcelable {
-    ctor public Rect();
-    ctor public Rect(int, int, int, int);
-    ctor public Rect(@Nullable android.graphics.Rect);
-    method public int centerX();
-    method public int centerY();
-    method public boolean contains(int, int);
-    method public boolean contains(int, int, int, int);
-    method public boolean contains(@NonNull android.graphics.Rect);
-    method public int describeContents();
-    method public float exactCenterX();
-    method public float exactCenterY();
-    method @NonNull public String flattenToString();
-    method public int height();
-    method public void inset(int, int);
-    method @CheckResult public boolean intersect(int, int, int, int);
-    method @CheckResult public boolean intersect(@NonNull android.graphics.Rect);
-    method public boolean intersects(int, int, int, int);
-    method public static boolean intersects(@NonNull android.graphics.Rect, @NonNull android.graphics.Rect);
-    method public boolean isEmpty();
-    method public void offset(int, int);
-    method public void offsetTo(int, int);
-    method public void readFromParcel(@NonNull android.os.Parcel);
-    method public void set(int, int, int, int);
-    method public void set(@NonNull android.graphics.Rect);
-    method public void setEmpty();
-    method @CheckResult public boolean setIntersect(@NonNull android.graphics.Rect, @NonNull android.graphics.Rect);
-    method public void sort();
-    method @NonNull public String toShortString();
-    method @Nullable public static android.graphics.Rect unflattenFromString(@Nullable String);
-    method public void union(int, int, int, int);
-    method public void union(@NonNull android.graphics.Rect);
-    method public void union(int, int);
-    method public int width();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.graphics.Rect> CREATOR;
-    field public int bottom;
-    field public int left;
-    field public int right;
-    field public int top;
-  }
-
-  public class RectF implements android.os.Parcelable {
-    ctor public RectF();
-    ctor public RectF(float, float, float, float);
-    ctor public RectF(@Nullable android.graphics.RectF);
-    ctor public RectF(@Nullable android.graphics.Rect);
-    method public final float centerX();
-    method public final float centerY();
-    method public boolean contains(float, float);
-    method public boolean contains(float, float, float, float);
-    method public boolean contains(@NonNull android.graphics.RectF);
-    method public int describeContents();
-    method public final float height();
-    method public void inset(float, float);
-    method public boolean intersect(float, float, float, float);
-    method public boolean intersect(@NonNull android.graphics.RectF);
-    method public boolean intersects(float, float, float, float);
-    method public static boolean intersects(@NonNull android.graphics.RectF, @NonNull android.graphics.RectF);
-    method public final boolean isEmpty();
-    method public void offset(float, float);
-    method public void offsetTo(float, float);
-    method public void readFromParcel(@NonNull android.os.Parcel);
-    method public void round(@NonNull android.graphics.Rect);
-    method public void roundOut(@NonNull android.graphics.Rect);
-    method public void set(float, float, float, float);
-    method public void set(@NonNull android.graphics.RectF);
-    method public void set(@NonNull android.graphics.Rect);
-    method public void setEmpty();
-    method public boolean setIntersect(@NonNull android.graphics.RectF, @NonNull android.graphics.RectF);
-    method public void sort();
-    method @NonNull public String toShortString();
-    method public void union(float, float, float, float);
-    method public void union(@NonNull android.graphics.RectF);
-    method public void union(float, float);
-    method public final float width();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.graphics.RectF> CREATOR;
-    field public float bottom;
-    field public float left;
-    field public float right;
-    field public float top;
-  }
-
-  public class Region implements android.os.Parcelable {
-    ctor public Region();
-    ctor public Region(@NonNull android.graphics.Region);
-    ctor public Region(@NonNull android.graphics.Rect);
-    ctor public Region(int, int, int, int);
-    method public boolean contains(int, int);
-    method public int describeContents();
-    method @NonNull public android.graphics.Path getBoundaryPath();
-    method public boolean getBoundaryPath(@NonNull android.graphics.Path);
-    method @NonNull public android.graphics.Rect getBounds();
-    method public boolean getBounds(@NonNull android.graphics.Rect);
-    method public boolean isComplex();
-    method public boolean isEmpty();
-    method public boolean isRect();
-    method public boolean op(@NonNull android.graphics.Rect, @NonNull android.graphics.Region.Op);
-    method public boolean op(int, int, int, int, @NonNull android.graphics.Region.Op);
-    method public boolean op(@NonNull android.graphics.Region, @NonNull android.graphics.Region.Op);
-    method public boolean op(@NonNull android.graphics.Rect, @NonNull android.graphics.Region, @NonNull android.graphics.Region.Op);
-    method public boolean op(@NonNull android.graphics.Region, @NonNull android.graphics.Region, @NonNull android.graphics.Region.Op);
-    method public boolean quickContains(@NonNull android.graphics.Rect);
-    method public boolean quickContains(int, int, int, int);
-    method public boolean quickReject(@NonNull android.graphics.Rect);
-    method public boolean quickReject(int, int, int, int);
-    method public boolean quickReject(android.graphics.Region);
-    method public boolean set(@NonNull android.graphics.Region);
-    method public boolean set(@NonNull android.graphics.Rect);
-    method public boolean set(int, int, int, int);
-    method public void setEmpty();
-    method public boolean setPath(@NonNull android.graphics.Path, @NonNull android.graphics.Region);
-    method public void translate(int, int);
-    method public void translate(int, int, android.graphics.Region);
-    method public final boolean union(@NonNull android.graphics.Rect);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.graphics.Region> CREATOR;
-  }
-
-  public enum Region.Op {
-    enum_constant public static final android.graphics.Region.Op DIFFERENCE;
-    enum_constant public static final android.graphics.Region.Op INTERSECT;
-    enum_constant public static final android.graphics.Region.Op REPLACE;
-    enum_constant public static final android.graphics.Region.Op REVERSE_DIFFERENCE;
-    enum_constant public static final android.graphics.Region.Op UNION;
-    enum_constant public static final android.graphics.Region.Op XOR;
-  }
-
-  public class RegionIterator {
-    ctor public RegionIterator(android.graphics.Region);
-    method public final boolean next(android.graphics.Rect);
-  }
-
-  public final class RenderNode {
-    ctor public RenderNode(@Nullable String);
-    method @NonNull public android.graphics.RecordingCanvas beginRecording(int, int);
-    method @NonNull public android.graphics.RecordingCanvas beginRecording();
-    method public long computeApproximateMemoryUsage();
-    method public void discardDisplayList();
-    method public void endRecording();
-    method public float getAlpha();
-    method @ColorInt public int getAmbientShadowColor();
-    method public int getBottom();
-    method @FloatRange(from=0.0f, to=java.lang.Float.MAX_VALUE) public float getCameraDistance();
-    method public boolean getClipToBounds();
-    method public boolean getClipToOutline();
-    method public float getElevation();
-    method public int getHeight();
-    method public void getInverseMatrix(@NonNull android.graphics.Matrix);
-    method public int getLeft();
-    method public void getMatrix(@NonNull android.graphics.Matrix);
-    method public float getPivotX();
-    method public float getPivotY();
-    method public int getRight();
-    method public float getRotationX();
-    method public float getRotationY();
-    method public float getRotationZ();
-    method public float getScaleX();
-    method public float getScaleY();
-    method @ColorInt public int getSpotShadowColor();
-    method public int getTop();
-    method public float getTranslationX();
-    method public float getTranslationY();
-    method public float getTranslationZ();
-    method public long getUniqueId();
-    method public boolean getUseCompositingLayer();
-    method public int getWidth();
-    method public boolean hasDisplayList();
-    method public boolean hasIdentityMatrix();
-    method public boolean hasOverlappingRendering();
-    method public boolean hasShadow();
-    method public boolean isForceDarkAllowed();
-    method public boolean isPivotExplicitlySet();
-    method public boolean offsetLeftAndRight(int);
-    method public boolean offsetTopAndBottom(int);
-    method public boolean resetPivot();
-    method public boolean setAlpha(float);
-    method public boolean setAmbientShadowColor(@ColorInt int);
-    method public boolean setCameraDistance(@FloatRange(from=0.0f, to=java.lang.Float.MAX_VALUE) float);
-    method public boolean setClipRect(@Nullable android.graphics.Rect);
-    method public boolean setClipToBounds(boolean);
-    method public boolean setClipToOutline(boolean);
-    method public boolean setElevation(float);
-    method public boolean setForceDarkAllowed(boolean);
-    method public boolean setHasOverlappingRendering(boolean);
-    method public boolean setOutline(@Nullable android.graphics.Outline);
-    method public boolean setPivotX(float);
-    method public boolean setPivotY(float);
-    method public boolean setPosition(int, int, int, int);
-    method public boolean setPosition(@NonNull android.graphics.Rect);
-    method public boolean setProjectBackwards(boolean);
-    method public boolean setProjectionReceiver(boolean);
-    method public boolean setRotationX(float);
-    method public boolean setRotationY(float);
-    method public boolean setRotationZ(float);
-    method public boolean setScaleX(float);
-    method public boolean setScaleY(float);
-    method public boolean setSpotShadowColor(@ColorInt int);
-    method public boolean setTranslationX(float);
-    method public boolean setTranslationY(float);
-    method public boolean setTranslationZ(float);
-    method public boolean setUseCompositingLayer(boolean, @Nullable android.graphics.Paint);
-  }
-
-  public class Shader {
-    ctor @Deprecated public Shader();
-    method public boolean getLocalMatrix(@NonNull android.graphics.Matrix);
-    method public void setLocalMatrix(@Nullable android.graphics.Matrix);
-  }
-
-  public enum Shader.TileMode {
-    enum_constant public static final android.graphics.Shader.TileMode CLAMP;
-    enum_constant public static final android.graphics.Shader.TileMode MIRROR;
-    enum_constant public static final android.graphics.Shader.TileMode REPEAT;
-  }
-
-  public class SumPathEffect extends android.graphics.PathEffect {
-    ctor public SumPathEffect(android.graphics.PathEffect, android.graphics.PathEffect);
-  }
-
-  public class SurfaceTexture {
-    ctor public SurfaceTexture(int);
-    ctor public SurfaceTexture(int, boolean);
-    ctor public SurfaceTexture(boolean);
-    method public void attachToGLContext(int);
-    method public void detachFromGLContext();
-    method public long getTimestamp();
-    method public void getTransformMatrix(float[]);
-    method public boolean isReleased();
-    method public void release();
-    method public void releaseTexImage();
-    method public void setDefaultBufferSize(int, int);
-    method public void setOnFrameAvailableListener(@Nullable android.graphics.SurfaceTexture.OnFrameAvailableListener);
-    method public void setOnFrameAvailableListener(@Nullable android.graphics.SurfaceTexture.OnFrameAvailableListener, @Nullable android.os.Handler);
-    method public void updateTexImage();
-  }
-
-  public static interface SurfaceTexture.OnFrameAvailableListener {
-    method public void onFrameAvailable(android.graphics.SurfaceTexture);
-  }
-
-  @Deprecated public static class SurfaceTexture.OutOfResourcesException extends java.lang.Exception {
-    ctor @Deprecated public SurfaceTexture.OutOfResourcesException();
-    ctor @Deprecated public SurfaceTexture.OutOfResourcesException(String);
-  }
-
-  public class SweepGradient extends android.graphics.Shader {
-    ctor public SweepGradient(float, float, @ColorInt @NonNull int[], @Nullable float[]);
-    ctor public SweepGradient(float, float, @ColorLong @NonNull long[], @Nullable float[]);
-    ctor public SweepGradient(float, float, @ColorInt int, @ColorInt int);
-    ctor public SweepGradient(float, float, @ColorLong long, @ColorLong long);
-  }
-
-  public class Typeface {
-    method public static android.graphics.Typeface create(String, int);
-    method public static android.graphics.Typeface create(android.graphics.Typeface, int);
-    method @NonNull public static android.graphics.Typeface create(@Nullable android.graphics.Typeface, @IntRange(from=1, to=1000) int, boolean);
-    method public static android.graphics.Typeface createFromAsset(android.content.res.AssetManager, String);
-    method public static android.graphics.Typeface createFromFile(@Nullable java.io.File);
-    method public static android.graphics.Typeface createFromFile(@Nullable String);
-    method public static android.graphics.Typeface defaultFromStyle(int);
-    method public int getStyle();
-    method @IntRange(from=0, to=1000) public int getWeight();
-    method public final boolean isBold();
-    method public final boolean isItalic();
-    field public static final int BOLD = 1; // 0x1
-    field public static final int BOLD_ITALIC = 3; // 0x3
-    field public static final android.graphics.Typeface DEFAULT;
-    field public static final android.graphics.Typeface DEFAULT_BOLD;
-    field public static final int ITALIC = 2; // 0x2
-    field public static final android.graphics.Typeface MONOSPACE;
-    field public static final int NORMAL = 0; // 0x0
-    field public static final android.graphics.Typeface SANS_SERIF;
-    field public static final android.graphics.Typeface SERIF;
-  }
-
-  public static final class Typeface.Builder {
-    ctor public Typeface.Builder(@NonNull java.io.File);
-    ctor public Typeface.Builder(@NonNull java.io.FileDescriptor);
-    ctor public Typeface.Builder(@NonNull String);
-    ctor public Typeface.Builder(@NonNull android.content.res.AssetManager, @NonNull String);
-    method public android.graphics.Typeface build();
-    method public android.graphics.Typeface.Builder setFallback(@Nullable String);
-    method public android.graphics.Typeface.Builder setFontVariationSettings(@Nullable String);
-    method public android.graphics.Typeface.Builder setFontVariationSettings(@Nullable android.graphics.fonts.FontVariationAxis[]);
-    method public android.graphics.Typeface.Builder setItalic(boolean);
-    method public android.graphics.Typeface.Builder setTtcIndex(@IntRange(from=0) int);
-    method public android.graphics.Typeface.Builder setWeight(@IntRange(from=1, to=1000) int);
-  }
-
-  public static final class Typeface.CustomFallbackBuilder {
-    ctor public Typeface.CustomFallbackBuilder(@NonNull android.graphics.fonts.FontFamily);
-    method @NonNull public android.graphics.Typeface.CustomFallbackBuilder addCustomFallback(@NonNull android.graphics.fonts.FontFamily);
-    method @NonNull public android.graphics.Typeface build();
-    method @IntRange(from=64) public static int getMaxCustomFallbackCount();
-    method @NonNull public android.graphics.Typeface.CustomFallbackBuilder setStyle(@NonNull android.graphics.fonts.FontStyle);
-    method @NonNull public android.graphics.Typeface.CustomFallbackBuilder setSystemFallback(@NonNull String);
-  }
-
-  public class Xfermode {
-    ctor public Xfermode();
-  }
-
-  public class YuvImage {
-    ctor public YuvImage(byte[], int, int, int, int[]);
-    method public boolean compressToJpeg(android.graphics.Rect, int, java.io.OutputStream);
-    method public int getHeight();
-    method public int[] getStrides();
-    method public int getWidth();
-    method public byte[] getYuvData();
-    method public int getYuvFormat();
-  }
-
-}
-
-package android.graphics.drawable {
-
-  public class AdaptiveIconDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
-    ctor public AdaptiveIconDrawable(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable);
-    method public void draw(android.graphics.Canvas);
-    method public android.graphics.drawable.Drawable getBackground();
-    method public static float getExtraInsetFraction();
-    method public android.graphics.drawable.Drawable getForeground();
-    method public android.graphics.Path getIconMask();
-    method public int getOpacity();
-    method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
-    method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
-    method public void setAlpha(int);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void setDither(boolean);
-    method public void setOpacity(int);
-    method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
-  }
-
-  public interface Animatable {
-    method public boolean isRunning();
-    method public void start();
-    method public void stop();
-  }
-
-  public interface Animatable2 extends android.graphics.drawable.Animatable {
-    method public void clearAnimationCallbacks();
-    method public void registerAnimationCallback(@NonNull android.graphics.drawable.Animatable2.AnimationCallback);
-    method public boolean unregisterAnimationCallback(@NonNull android.graphics.drawable.Animatable2.AnimationCallback);
-  }
-
-  public abstract static class Animatable2.AnimationCallback {
-    ctor public Animatable2.AnimationCallback();
-    method public void onAnimationEnd(android.graphics.drawable.Drawable);
-    method public void onAnimationStart(android.graphics.drawable.Drawable);
-  }
-
-  public class AnimatedImageDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Animatable2 {
-    ctor public AnimatedImageDrawable();
-    method public void clearAnimationCallbacks();
-    method public void draw(@NonNull android.graphics.Canvas);
-    method public int getOpacity();
-    method public int getRepeatCount();
-    method public final boolean isAutoMirrored();
-    method public boolean isRunning();
-    method public void registerAnimationCallback(@NonNull android.graphics.drawable.Animatable2.AnimationCallback);
-    method public void setAlpha(@IntRange(from=0, to=255) int);
-    method public void setColorFilter(@Nullable android.graphics.ColorFilter);
-    method public void setRepeatCount(@IntRange(from=android.graphics.drawable.AnimatedImageDrawable.REPEAT_INFINITE) int);
-    method public void start();
-    method public void stop();
-    method public boolean unregisterAnimationCallback(@NonNull android.graphics.drawable.Animatable2.AnimationCallback);
-    field public static final int REPEAT_INFINITE = -1; // 0xffffffff
-  }
-
-  public class AnimatedStateListDrawable extends android.graphics.drawable.StateListDrawable {
-    ctor public AnimatedStateListDrawable();
-    method public void addState(@NonNull int[], @NonNull android.graphics.drawable.Drawable, int);
-    method public <T extends android.graphics.drawable.Drawable & android.graphics.drawable.Animatable> void addTransition(int, int, @NonNull T, boolean);
-  }
-
-  public class AnimatedVectorDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Animatable2 {
-    ctor public AnimatedVectorDrawable();
-    method public void clearAnimationCallbacks();
-    method public void draw(android.graphics.Canvas);
-    method public int getOpacity();
-    method public boolean isRunning();
-    method public void registerAnimationCallback(@NonNull android.graphics.drawable.Animatable2.AnimationCallback);
-    method public void reset();
-    method public void setAlpha(int);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void start();
-    method public void stop();
-    method public boolean unregisterAnimationCallback(@NonNull android.graphics.drawable.Animatable2.AnimationCallback);
-  }
-
-  public class AnimationDrawable extends android.graphics.drawable.DrawableContainer implements android.graphics.drawable.Animatable java.lang.Runnable {
-    ctor public AnimationDrawable();
-    method public void addFrame(@NonNull android.graphics.drawable.Drawable, int);
-    method public int getDuration(int);
-    method public android.graphics.drawable.Drawable getFrame(int);
-    method public int getNumberOfFrames();
-    method public boolean isOneShot();
-    method public boolean isRunning();
-    method public void run();
-    method public void setOneShot(boolean);
-    method public void start();
-    method public void stop();
-  }
-
-  public class BitmapDrawable extends android.graphics.drawable.Drawable {
-    ctor @Deprecated public BitmapDrawable();
-    ctor @Deprecated public BitmapDrawable(android.content.res.Resources);
-    ctor @Deprecated public BitmapDrawable(android.graphics.Bitmap);
-    ctor public BitmapDrawable(android.content.res.Resources, android.graphics.Bitmap);
-    ctor @Deprecated public BitmapDrawable(String);
-    ctor public BitmapDrawable(android.content.res.Resources, String);
-    ctor @Deprecated public BitmapDrawable(java.io.InputStream);
-    ctor public BitmapDrawable(android.content.res.Resources, java.io.InputStream);
-    method public void draw(android.graphics.Canvas);
-    method public final android.graphics.Bitmap getBitmap();
-    method public final android.graphics.drawable.Drawable.ConstantState getConstantState();
-    method public int getGravity();
-    method public int getOpacity();
-    method public final android.graphics.Paint getPaint();
-    method public android.graphics.Shader.TileMode getTileModeX();
-    method public android.graphics.Shader.TileMode getTileModeY();
-    method public boolean hasAntiAlias();
-    method public boolean hasMipMap();
-    method public final boolean isAutoMirrored();
-    method public void setAlpha(int);
-    method public void setAntiAlias(boolean);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void setDither(boolean);
-    method public void setGravity(int);
-    method public void setMipMap(boolean);
-    method public void setTargetDensity(android.graphics.Canvas);
-    method public void setTargetDensity(android.util.DisplayMetrics);
-    method public void setTargetDensity(int);
-    method public void setTileModeX(android.graphics.Shader.TileMode);
-    method public void setTileModeXY(android.graphics.Shader.TileMode, android.graphics.Shader.TileMode);
-    method public final void setTileModeY(android.graphics.Shader.TileMode);
-  }
-
-  public class ClipDrawable extends android.graphics.drawable.DrawableWrapper {
-    ctor public ClipDrawable(android.graphics.drawable.Drawable, int, int);
-    field public static final int HORIZONTAL = 1; // 0x1
-    field public static final int VERTICAL = 2; // 0x2
-  }
-
-  public class ColorDrawable extends android.graphics.drawable.Drawable {
-    ctor public ColorDrawable();
-    ctor public ColorDrawable(@ColorInt int);
-    method public void draw(android.graphics.Canvas);
-    method @ColorInt public int getColor();
-    method public int getOpacity();
-    method public void setAlpha(int);
-    method public void setColor(@ColorInt int);
-    method public void setColorFilter(android.graphics.ColorFilter);
-  }
-
-  public class ColorStateListDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
-    ctor public ColorStateListDrawable();
-    ctor public ColorStateListDrawable(@NonNull android.content.res.ColorStateList);
-    method public void clearAlpha();
-    method public void draw(@NonNull android.graphics.Canvas);
-    method @NonNull public android.content.res.ColorStateList getColorStateList();
-    method public int getOpacity();
-    method public boolean hasFocusStateSpecified();
-    method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
-    method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
-    method public void setAlpha(@IntRange(from=0, to=255) int);
-    method public void setColorFilter(@Nullable android.graphics.ColorFilter);
-    method public void setColorStateList(@NonNull android.content.res.ColorStateList);
-    method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
-  }
-
-  public abstract class Drawable {
-    ctor public Drawable();
-    method public void applyTheme(@NonNull android.content.res.Resources.Theme);
-    method public boolean canApplyTheme();
-    method public void clearColorFilter();
-    method public final void copyBounds(@NonNull android.graphics.Rect);
-    method @NonNull public final android.graphics.Rect copyBounds();
-    method @Nullable public static android.graphics.drawable.Drawable createFromPath(String);
-    method public static android.graphics.drawable.Drawable createFromResourceStream(android.content.res.Resources, android.util.TypedValue, java.io.InputStream, String);
-    method @Deprecated @Nullable public static android.graphics.drawable.Drawable createFromResourceStream(@Nullable android.content.res.Resources, @Nullable android.util.TypedValue, @Nullable java.io.InputStream, @Nullable String, @Nullable android.graphics.BitmapFactory.Options);
-    method public static android.graphics.drawable.Drawable createFromStream(java.io.InputStream, String);
-    method @NonNull public static android.graphics.drawable.Drawable createFromXml(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method @NonNull public static android.graphics.drawable.Drawable createFromXml(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, @Nullable android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method @NonNull public static android.graphics.drawable.Drawable createFromXmlInner(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, @NonNull android.util.AttributeSet) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method @NonNull public static android.graphics.drawable.Drawable createFromXmlInner(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, @NonNull android.util.AttributeSet, @Nullable android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public abstract void draw(@NonNull android.graphics.Canvas);
-    method @IntRange(from=0, to=255) public int getAlpha();
-    method @NonNull public final android.graphics.Rect getBounds();
-    method @Nullable public android.graphics.drawable.Drawable.Callback getCallback();
-    method public int getChangingConfigurations();
-    method @Nullable public android.graphics.ColorFilter getColorFilter();
-    method @Nullable public android.graphics.drawable.Drawable.ConstantState getConstantState();
-    method @NonNull public android.graphics.drawable.Drawable getCurrent();
-    method @NonNull public android.graphics.Rect getDirtyBounds();
-    method public void getHotspotBounds(@NonNull android.graphics.Rect);
-    method public int getIntrinsicHeight();
-    method public int getIntrinsicWidth();
-    method public int getLayoutDirection();
-    method @IntRange(from=0, to=10000) public final int getLevel();
-    method public int getMinimumHeight();
-    method public int getMinimumWidth();
-    method @Deprecated public abstract int getOpacity();
-    method @NonNull public android.graphics.Insets getOpticalInsets();
-    method public void getOutline(@NonNull android.graphics.Outline);
-    method public boolean getPadding(@NonNull android.graphics.Rect);
-    method @NonNull public int[] getState();
-    method @Nullable public android.graphics.Region getTransparentRegion();
-    method public void inflate(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, @NonNull android.util.AttributeSet) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public void inflate(@NonNull android.content.res.Resources, @NonNull org.xmlpull.v1.XmlPullParser, @NonNull android.util.AttributeSet, @Nullable android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public void invalidateSelf();
-    method public boolean isAutoMirrored();
-    method public boolean isFilterBitmap();
-    method public boolean isProjected();
-    method public boolean isStateful();
-    method public final boolean isVisible();
-    method public void jumpToCurrentState();
-    method @NonNull public android.graphics.drawable.Drawable mutate();
-    method protected void onBoundsChange(android.graphics.Rect);
-    method public boolean onLayoutDirectionChanged(int);
-    method protected boolean onLevelChange(int);
-    method protected boolean onStateChange(int[]);
-    method public static int resolveOpacity(int, int);
-    method public void scheduleSelf(@NonNull Runnable, long);
-    method public abstract void setAlpha(@IntRange(from=0, to=255) int);
-    method public void setAutoMirrored(boolean);
-    method public void setBounds(int, int, int, int);
-    method public void setBounds(@NonNull android.graphics.Rect);
-    method public final void setCallback(@Nullable android.graphics.drawable.Drawable.Callback);
-    method public void setChangingConfigurations(int);
-    method public abstract void setColorFilter(@Nullable android.graphics.ColorFilter);
-    method @Deprecated public void setColorFilter(@ColorInt int, @NonNull android.graphics.PorterDuff.Mode);
-    method @Deprecated public void setDither(boolean);
-    method public void setFilterBitmap(boolean);
-    method public void setHotspot(float, float);
-    method public void setHotspotBounds(int, int, int, int);
-    method public final boolean setLayoutDirection(int);
-    method public final boolean setLevel(@IntRange(from=0, to=10000) int);
-    method public boolean setState(@NonNull int[]);
-    method public void setTint(@ColorInt int);
-    method public void setTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setTintList(@Nullable android.content.res.ColorStateList);
-    method public void setTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public boolean setVisible(boolean, boolean);
-    method public void unscheduleSelf(@NonNull Runnable);
-  }
-
-  public static interface Drawable.Callback {
-    method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
-    method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
-    method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
-  }
-
-  public abstract static class Drawable.ConstantState {
-    ctor public Drawable.ConstantState();
-    method public boolean canApplyTheme();
-    method public abstract int getChangingConfigurations();
-    method @NonNull public abstract android.graphics.drawable.Drawable newDrawable();
-    method @NonNull public android.graphics.drawable.Drawable newDrawable(@Nullable android.content.res.Resources);
-    method @NonNull public android.graphics.drawable.Drawable newDrawable(@Nullable android.content.res.Resources, @Nullable android.content.res.Resources.Theme);
-  }
-
-  public class DrawableContainer extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
-    ctor public DrawableContainer();
-    method public void draw(android.graphics.Canvas);
-    method public int getOpacity();
-    method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
-    method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
-    method public boolean selectDrawable(int);
-    method public void setAlpha(int);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method protected void setConstantState(android.graphics.drawable.DrawableContainer.DrawableContainerState);
-    method public void setDither(boolean);
-    method public void setEnterFadeDuration(int);
-    method public void setExitFadeDuration(int);
-    method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
-  }
-
-  public abstract static class DrawableContainer.DrawableContainerState extends android.graphics.drawable.Drawable.ConstantState {
-    method public final int addChild(android.graphics.drawable.Drawable);
-    method public boolean canConstantState();
-    method protected void computeConstantSize();
-    method public int getChangingConfigurations();
-    method public final android.graphics.drawable.Drawable getChild(int);
-    method public final int getChildCount();
-    method public final android.graphics.drawable.Drawable[] getChildren();
-    method public final int getConstantHeight();
-    method public final int getConstantMinimumHeight();
-    method public final int getConstantMinimumWidth();
-    method public final android.graphics.Rect getConstantPadding();
-    method public final int getConstantWidth();
-    method public final int getEnterFadeDuration();
-    method public final int getExitFadeDuration();
-    method public final int getOpacity();
-    method public void growArray(int, int);
-    method public final boolean isConstantSize();
-    method public final boolean isStateful();
-    method public final void setConstantSize(boolean);
-    method public final void setEnterFadeDuration(int);
-    method public final void setExitFadeDuration(int);
-    method public final void setVariablePadding(boolean);
-  }
-
-  public abstract class DrawableWrapper extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
-    ctor public DrawableWrapper(@Nullable android.graphics.drawable.Drawable);
-    method public void draw(@NonNull android.graphics.Canvas);
-    method @Nullable public android.graphics.drawable.Drawable getDrawable();
-    method public int getOpacity();
-    method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
-    method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
-    method public void setAlpha(int);
-    method public void setColorFilter(@Nullable android.graphics.ColorFilter);
-    method public void setDrawable(@Nullable android.graphics.drawable.Drawable);
-    method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
-  }
-
-  public class GradientDrawable extends android.graphics.drawable.Drawable {
-    ctor public GradientDrawable();
-    ctor public GradientDrawable(android.graphics.drawable.GradientDrawable.Orientation, @ColorInt int[]);
-    method public void draw(android.graphics.Canvas);
-    method @Nullable public android.content.res.ColorStateList getColor();
-    method @Nullable public int[] getColors();
-    method @Nullable public float[] getCornerRadii();
-    method public float getCornerRadius();
-    method public float getGradientCenterX();
-    method public float getGradientCenterY();
-    method public float getGradientRadius();
-    method public int getGradientType();
-    method @Px public int getInnerRadius();
-    method public float getInnerRadiusRatio();
-    method public int getOpacity();
-    method public android.graphics.drawable.GradientDrawable.Orientation getOrientation();
-    method public int getShape();
-    method @Px public int getThickness();
-    method public float getThicknessRatio();
-    method public boolean getUseLevel();
-    method public void setAlpha(int);
-    method public void setColor(@ColorInt int);
-    method public void setColor(@Nullable android.content.res.ColorStateList);
-    method public void setColorFilter(@Nullable android.graphics.ColorFilter);
-    method public void setColors(@ColorInt @Nullable int[]);
-    method public void setColors(@ColorInt @Nullable int[], @Nullable float[]);
-    method public void setCornerRadii(@Nullable float[]);
-    method public void setCornerRadius(float);
-    method public void setDither(boolean);
-    method public void setGradientCenter(float, float);
-    method public void setGradientRadius(float);
-    method public void setGradientType(int);
-    method public void setInnerRadius(@Px int);
-    method public void setInnerRadiusRatio(@FloatRange(from=0.0f, fromInclusive=false) float);
-    method public void setOrientation(android.graphics.drawable.GradientDrawable.Orientation);
-    method public void setPadding(@Px int, @Px int, @Px int, @Px int);
-    method public void setShape(int);
-    method public void setSize(int, int);
-    method public void setStroke(int, @ColorInt int);
-    method public void setStroke(int, android.content.res.ColorStateList);
-    method public void setStroke(int, @ColorInt int, float, float);
-    method public void setStroke(int, android.content.res.ColorStateList, float, float);
-    method public void setThickness(@Px int);
-    method public void setThicknessRatio(@FloatRange(from=0.0f, fromInclusive=false) float);
-    method public void setUseLevel(boolean);
-    field public static final int LINE = 2; // 0x2
-    field public static final int LINEAR_GRADIENT = 0; // 0x0
-    field public static final int OVAL = 1; // 0x1
-    field public static final int RADIAL_GRADIENT = 1; // 0x1
-    field public static final int RECTANGLE = 0; // 0x0
-    field public static final int RING = 3; // 0x3
-    field public static final int SWEEP_GRADIENT = 2; // 0x2
-  }
-
-  public enum GradientDrawable.Orientation {
-    enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation BL_TR;
-    enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation BOTTOM_TOP;
-    enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation BR_TL;
-    enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation LEFT_RIGHT;
-    enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation RIGHT_LEFT;
-    enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation TL_BR;
-    enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation TOP_BOTTOM;
-    enum_constant public static final android.graphics.drawable.GradientDrawable.Orientation TR_BL;
-  }
-
-  public final class Icon implements android.os.Parcelable {
-    method public static android.graphics.drawable.Icon createWithAdaptiveBitmap(android.graphics.Bitmap);
-    method @NonNull public static android.graphics.drawable.Icon createWithAdaptiveBitmapContentUri(@NonNull String);
-    method @NonNull public static android.graphics.drawable.Icon createWithAdaptiveBitmapContentUri(@NonNull android.net.Uri);
-    method public static android.graphics.drawable.Icon createWithBitmap(android.graphics.Bitmap);
-    method public static android.graphics.drawable.Icon createWithContentUri(String);
-    method public static android.graphics.drawable.Icon createWithContentUri(android.net.Uri);
-    method public static android.graphics.drawable.Icon createWithData(byte[], int, int);
-    method public static android.graphics.drawable.Icon createWithFilePath(String);
-    method public static android.graphics.drawable.Icon createWithResource(android.content.Context, @DrawableRes int);
-    method public static android.graphics.drawable.Icon createWithResource(String, @DrawableRes int);
-    method public int describeContents();
-    method @IdRes public int getResId();
-    method @NonNull public String getResPackage();
-    method public int getType();
-    method @NonNull public android.net.Uri getUri();
-    method public android.graphics.drawable.Drawable loadDrawable(android.content.Context);
-    method public void loadDrawableAsync(android.content.Context, android.os.Message);
-    method public void loadDrawableAsync(android.content.Context, android.graphics.drawable.Icon.OnDrawableLoadedListener, android.os.Handler);
-    method public android.graphics.drawable.Icon setTint(@ColorInt int);
-    method @NonNull public android.graphics.drawable.Icon setTintBlendMode(@NonNull android.graphics.BlendMode);
-    method public android.graphics.drawable.Icon setTintList(android.content.res.ColorStateList);
-    method @NonNull public android.graphics.drawable.Icon setTintMode(@NonNull android.graphics.PorterDuff.Mode);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.graphics.drawable.Icon> CREATOR;
-    field public static final int TYPE_ADAPTIVE_BITMAP = 5; // 0x5
-    field public static final int TYPE_BITMAP = 1; // 0x1
-    field public static final int TYPE_DATA = 3; // 0x3
-    field public static final int TYPE_RESOURCE = 2; // 0x2
-    field public static final int TYPE_URI = 4; // 0x4
-    field public static final int TYPE_URI_ADAPTIVE_BITMAP = 6; // 0x6
-  }
-
-  public static interface Icon.OnDrawableLoadedListener {
-    method public void onDrawableLoaded(android.graphics.drawable.Drawable);
-  }
-
-  public class InsetDrawable extends android.graphics.drawable.DrawableWrapper {
-    ctor public InsetDrawable(@Nullable android.graphics.drawable.Drawable, int);
-    ctor public InsetDrawable(@Nullable android.graphics.drawable.Drawable, float);
-    ctor public InsetDrawable(@Nullable android.graphics.drawable.Drawable, int, int, int, int);
-    ctor public InsetDrawable(@Nullable android.graphics.drawable.Drawable, float, float, float, float);
-  }
-
-  public class LayerDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback {
-    ctor public LayerDrawable(@NonNull android.graphics.drawable.Drawable[]);
-    method public int addLayer(android.graphics.drawable.Drawable);
-    method public void draw(android.graphics.Canvas);
-    method public android.graphics.drawable.Drawable findDrawableByLayerId(int);
-    method public int findIndexByLayerId(int);
-    method public int getBottomPadding();
-    method public android.graphics.drawable.Drawable getDrawable(int);
-    method public int getEndPadding();
-    method public int getId(int);
-    method public int getLayerGravity(int);
-    method public int getLayerHeight(int);
-    method public int getLayerInsetBottom(int);
-    method public int getLayerInsetEnd(int);
-    method public int getLayerInsetLeft(int);
-    method public int getLayerInsetRight(int);
-    method public int getLayerInsetStart(int);
-    method public int getLayerInsetTop(int);
-    method public int getLayerWidth(int);
-    method public int getLeftPadding();
-    method public int getNumberOfLayers();
-    method public int getOpacity();
-    method public int getPaddingMode();
-    method public int getRightPadding();
-    method public int getStartPadding();
-    method public int getTopPadding();
-    method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
-    method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
-    method public void setAlpha(int);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void setDither(boolean);
-    method public void setDrawable(int, android.graphics.drawable.Drawable);
-    method public boolean setDrawableByLayerId(int, android.graphics.drawable.Drawable);
-    method public void setId(int, int);
-    method public void setLayerGravity(int, int);
-    method public void setLayerHeight(int, int);
-    method public void setLayerInset(int, int, int, int, int);
-    method public void setLayerInsetBottom(int, int);
-    method public void setLayerInsetEnd(int, int);
-    method public void setLayerInsetLeft(int, int);
-    method public void setLayerInsetRelative(int, int, int, int, int);
-    method public void setLayerInsetRight(int, int);
-    method public void setLayerInsetStart(int, int);
-    method public void setLayerInsetTop(int, int);
-    method public void setLayerSize(int, int, int);
-    method public void setLayerWidth(int, int);
-    method public void setOpacity(int);
-    method public void setPadding(int, int, int, int);
-    method public void setPaddingMode(int);
-    method public void setPaddingRelative(int, int, int, int);
-    method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
-    field public static final int INSET_UNDEFINED = -2147483648; // 0x80000000
-    field public static final int PADDING_MODE_NEST = 0; // 0x0
-    field public static final int PADDING_MODE_STACK = 1; // 0x1
-  }
-
-  public class LevelListDrawable extends android.graphics.drawable.DrawableContainer {
-    ctor public LevelListDrawable();
-    method public void addLevel(int, int, android.graphics.drawable.Drawable);
-  }
-
-  public class NinePatchDrawable extends android.graphics.drawable.Drawable {
-    ctor @Deprecated public NinePatchDrawable(android.graphics.Bitmap, byte[], android.graphics.Rect, String);
-    ctor public NinePatchDrawable(android.content.res.Resources, android.graphics.Bitmap, byte[], android.graphics.Rect, String);
-    ctor @Deprecated public NinePatchDrawable(@NonNull android.graphics.NinePatch);
-    ctor public NinePatchDrawable(@Nullable android.content.res.Resources, @NonNull android.graphics.NinePatch);
-    method public void draw(android.graphics.Canvas);
-    method public int getOpacity();
-    method @NonNull public android.graphics.Paint getPaint();
-    method public void setAlpha(int);
-    method public void setColorFilter(@Nullable android.graphics.ColorFilter);
-    method public void setDither(boolean);
-    method public void setTargetDensity(@NonNull android.graphics.Canvas);
-    method public void setTargetDensity(@NonNull android.util.DisplayMetrics);
-    method public void setTargetDensity(int);
-  }
-
-  public class PaintDrawable extends android.graphics.drawable.ShapeDrawable {
-    ctor public PaintDrawable();
-    ctor public PaintDrawable(int);
-    method public void setCornerRadii(float[]);
-    method public void setCornerRadius(float);
-  }
-
-  public class PictureDrawable extends android.graphics.drawable.Drawable {
-    ctor public PictureDrawable(android.graphics.Picture);
-    method public void draw(android.graphics.Canvas);
-    method public int getOpacity();
-    method public android.graphics.Picture getPicture();
-    method public void setAlpha(int);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void setPicture(android.graphics.Picture);
-  }
-
-  public class RippleDrawable extends android.graphics.drawable.LayerDrawable {
-    ctor public RippleDrawable(@NonNull android.content.res.ColorStateList, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable);
-    method public int getRadius();
-    method public void setColor(android.content.res.ColorStateList);
-    method public void setRadius(int);
-    field public static final int RADIUS_AUTO = -1; // 0xffffffff
-  }
-
-  public class RotateDrawable extends android.graphics.drawable.DrawableWrapper {
-    ctor public RotateDrawable();
-    method public float getFromDegrees();
-    method public float getPivotX();
-    method public float getPivotY();
-    method public float getToDegrees();
-    method public boolean isPivotXRelative();
-    method public boolean isPivotYRelative();
-    method public void setFromDegrees(float);
-    method public void setPivotX(float);
-    method public void setPivotXRelative(boolean);
-    method public void setPivotY(float);
-    method public void setPivotYRelative(boolean);
-    method public void setToDegrees(float);
-  }
-
-  public class ScaleDrawable extends android.graphics.drawable.DrawableWrapper {
-    ctor public ScaleDrawable(android.graphics.drawable.Drawable, int, float, float);
-  }
-
-  public class ShapeDrawable extends android.graphics.drawable.Drawable {
-    ctor public ShapeDrawable();
-    ctor public ShapeDrawable(android.graphics.drawable.shapes.Shape);
-    method public void draw(android.graphics.Canvas);
-    method public int getOpacity();
-    method public android.graphics.Paint getPaint();
-    method public android.graphics.drawable.ShapeDrawable.ShaderFactory getShaderFactory();
-    method public android.graphics.drawable.shapes.Shape getShape();
-    method protected boolean inflateTag(String, android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet);
-    method protected void onDraw(android.graphics.drawable.shapes.Shape, android.graphics.Canvas, android.graphics.Paint);
-    method public void setAlpha(int);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void setDither(boolean);
-    method public void setIntrinsicHeight(int);
-    method public void setIntrinsicWidth(int);
-    method public void setPadding(int, int, int, int);
-    method public void setPadding(android.graphics.Rect);
-    method public void setShaderFactory(android.graphics.drawable.ShapeDrawable.ShaderFactory);
-    method public void setShape(android.graphics.drawable.shapes.Shape);
-  }
-
-  public abstract static class ShapeDrawable.ShaderFactory {
-    ctor public ShapeDrawable.ShaderFactory();
-    method public abstract android.graphics.Shader resize(int, int);
-  }
-
-  public class StateListDrawable extends android.graphics.drawable.DrawableContainer {
-    ctor public StateListDrawable();
-    method public void addState(int[], android.graphics.drawable.Drawable);
-    method public int findStateDrawableIndex(@NonNull int[]);
-    method public int getStateCount();
-    method @Nullable public android.graphics.drawable.Drawable getStateDrawable(int);
-    method @NonNull public int[] getStateSet(int);
-  }
-
-  public class TransitionDrawable extends android.graphics.drawable.LayerDrawable implements android.graphics.drawable.Drawable.Callback {
-    ctor public TransitionDrawable(android.graphics.drawable.Drawable[]);
-    method public boolean isCrossFadeEnabled();
-    method public void resetTransition();
-    method public void reverseTransition(int);
-    method public void setCrossFadeEnabled(boolean);
-    method public void startTransition(int);
-  }
-
-  public class VectorDrawable extends android.graphics.drawable.Drawable {
-    ctor public VectorDrawable();
-    method public void draw(android.graphics.Canvas);
-    method public int getOpacity();
-    method public void setAlpha(int);
-    method public void setColorFilter(android.graphics.ColorFilter);
-  }
-
-}
-
-package android.graphics.drawable.shapes {
-
-  public class ArcShape extends android.graphics.drawable.shapes.RectShape {
-    ctor public ArcShape(float, float);
-    method public android.graphics.drawable.shapes.ArcShape clone() throws java.lang.CloneNotSupportedException;
-    method public final float getStartAngle();
-    method public final float getSweepAngle();
-  }
-
-  public class OvalShape extends android.graphics.drawable.shapes.RectShape {
-    ctor public OvalShape();
-    method public android.graphics.drawable.shapes.OvalShape clone() throws java.lang.CloneNotSupportedException;
-  }
-
-  public class PathShape extends android.graphics.drawable.shapes.Shape {
-    ctor public PathShape(@NonNull android.graphics.Path, float, float);
-    method public android.graphics.drawable.shapes.PathShape clone() throws java.lang.CloneNotSupportedException;
-    method public void draw(android.graphics.Canvas, android.graphics.Paint);
-  }
-
-  public class RectShape extends android.graphics.drawable.shapes.Shape {
-    ctor public RectShape();
-    method public android.graphics.drawable.shapes.RectShape clone() throws java.lang.CloneNotSupportedException;
-    method public void draw(android.graphics.Canvas, android.graphics.Paint);
-    method protected final android.graphics.RectF rect();
-  }
-
-  public class RoundRectShape extends android.graphics.drawable.shapes.RectShape {
-    ctor public RoundRectShape(@Nullable float[], @Nullable android.graphics.RectF, @Nullable float[]);
-    method public android.graphics.drawable.shapes.RoundRectShape clone() throws java.lang.CloneNotSupportedException;
-  }
-
-  public abstract class Shape implements java.lang.Cloneable {
-    ctor public Shape();
-    method public android.graphics.drawable.shapes.Shape clone() throws java.lang.CloneNotSupportedException;
-    method public abstract void draw(android.graphics.Canvas, android.graphics.Paint);
-    method public final float getHeight();
-    method public void getOutline(@NonNull android.graphics.Outline);
-    method public final float getWidth();
-    method public boolean hasAlpha();
-    method protected void onResize(float, float);
-    method public final void resize(float, float);
-  }
-
-}
-
-package android.graphics.fonts {
-
-  public final class Font {
-    method @Nullable public android.graphics.fonts.FontVariationAxis[] getAxes();
-    method @NonNull public java.nio.ByteBuffer getBuffer();
-    method @Nullable public java.io.File getFile();
-    method @NonNull public android.os.LocaleList getLocaleList();
-    method @NonNull public android.graphics.fonts.FontStyle getStyle();
-    method @IntRange(from=0) public int getTtcIndex();
-  }
-
-  public static final class Font.Builder {
-    ctor public Font.Builder(@NonNull java.nio.ByteBuffer);
-    ctor public Font.Builder(@NonNull java.io.File);
-    ctor public Font.Builder(@NonNull android.os.ParcelFileDescriptor);
-    ctor public Font.Builder(@NonNull android.os.ParcelFileDescriptor, @IntRange(from=0) long, @IntRange(from=0xffffffff) long);
-    ctor public Font.Builder(@NonNull android.content.res.AssetManager, @NonNull String);
-    ctor public Font.Builder(@NonNull android.content.res.Resources, int);
-    method @NonNull public android.graphics.fonts.Font build() throws java.io.IOException;
-    method @NonNull public android.graphics.fonts.Font.Builder setFontVariationSettings(@Nullable String);
-    method @NonNull public android.graphics.fonts.Font.Builder setFontVariationSettings(@Nullable android.graphics.fonts.FontVariationAxis[]);
-    method @NonNull public android.graphics.fonts.Font.Builder setSlant(int);
-    method @NonNull public android.graphics.fonts.Font.Builder setTtcIndex(@IntRange(from=0) int);
-    method @NonNull public android.graphics.fonts.Font.Builder setWeight(@IntRange(from=android.graphics.fonts.FontStyle.FONT_WEIGHT_MIN, to=android.graphics.fonts.FontStyle.FONT_WEIGHT_MAX) int);
-  }
-
-  public final class FontFamily {
-    method @NonNull public android.graphics.fonts.Font getFont(@IntRange(from=0) int);
-    method @IntRange(from=1) public int getSize();
-  }
-
-  public static final class FontFamily.Builder {
-    ctor public FontFamily.Builder(@NonNull android.graphics.fonts.Font);
-    method @NonNull public android.graphics.fonts.FontFamily.Builder addFont(@NonNull android.graphics.fonts.Font);
-    method @NonNull public android.graphics.fonts.FontFamily build();
-  }
-
-  public final class FontStyle {
-    ctor public FontStyle();
-    ctor public FontStyle(int, int);
-    method public int getSlant();
-    method @IntRange(from=0, to=1000) public int getWeight();
-    field public static final int FONT_SLANT_ITALIC = 1; // 0x1
-    field public static final int FONT_SLANT_UPRIGHT = 0; // 0x0
-    field public static final int FONT_WEIGHT_BLACK = 900; // 0x384
-    field public static final int FONT_WEIGHT_BOLD = 700; // 0x2bc
-    field public static final int FONT_WEIGHT_EXTRA_BOLD = 800; // 0x320
-    field public static final int FONT_WEIGHT_EXTRA_LIGHT = 200; // 0xc8
-    field public static final int FONT_WEIGHT_LIGHT = 300; // 0x12c
-    field public static final int FONT_WEIGHT_MAX = 1000; // 0x3e8
-    field public static final int FONT_WEIGHT_MEDIUM = 500; // 0x1f4
-    field public static final int FONT_WEIGHT_MIN = 1; // 0x1
-    field public static final int FONT_WEIGHT_NORMAL = 400; // 0x190
-    field public static final int FONT_WEIGHT_SEMI_BOLD = 600; // 0x258
-    field public static final int FONT_WEIGHT_THIN = 100; // 0x64
-  }
-
-  public final class FontVariationAxis {
-    ctor public FontVariationAxis(@NonNull String, float);
-    method @Nullable public static android.graphics.fonts.FontVariationAxis[] fromFontVariationSettings(@Nullable String);
-    method public float getStyleValue();
-    method public String getTag();
-    method @NonNull public static String toFontVariationSettings(@Nullable android.graphics.fonts.FontVariationAxis[]);
-  }
-
-  public final class SystemFonts {
-    method @NonNull public static java.util.Set<android.graphics.fonts.Font> getAvailableFonts();
-  }
-
-}
-
-package android.graphics.pdf {
-
-  public class PdfDocument {
-    ctor public PdfDocument();
-    method public void close();
-    method public void finishPage(android.graphics.pdf.PdfDocument.Page);
-    method public java.util.List<android.graphics.pdf.PdfDocument.PageInfo> getPages();
-    method public android.graphics.pdf.PdfDocument.Page startPage(android.graphics.pdf.PdfDocument.PageInfo);
-    method public void writeTo(java.io.OutputStream) throws java.io.IOException;
-  }
-
-  public static final class PdfDocument.Page {
-    method public android.graphics.Canvas getCanvas();
-    method public android.graphics.pdf.PdfDocument.PageInfo getInfo();
-  }
-
-  public static final class PdfDocument.PageInfo {
-    method public android.graphics.Rect getContentRect();
-    method public int getPageHeight();
-    method public int getPageNumber();
-    method public int getPageWidth();
-  }
-
-  public static final class PdfDocument.PageInfo.Builder {
-    ctor public PdfDocument.PageInfo.Builder(int, int, int);
-    method public android.graphics.pdf.PdfDocument.PageInfo create();
-    method public android.graphics.pdf.PdfDocument.PageInfo.Builder setContentRect(android.graphics.Rect);
-  }
-
-  public final class PdfRenderer implements java.lang.AutoCloseable {
-    ctor public PdfRenderer(@NonNull android.os.ParcelFileDescriptor) throws java.io.IOException;
-    method public void close();
-    method public int getPageCount();
-    method public android.graphics.pdf.PdfRenderer.Page openPage(int);
-    method public boolean shouldScaleForPrinting();
-  }
-
-  public final class PdfRenderer.Page implements java.lang.AutoCloseable {
-    method public void close();
-    method public int getHeight();
-    method public int getIndex();
-    method public int getWidth();
-    method public void render(@NonNull android.graphics.Bitmap, @Nullable android.graphics.Rect, @Nullable android.graphics.Matrix, int);
-    field public static final int RENDER_MODE_FOR_DISPLAY = 1; // 0x1
-    field public static final int RENDER_MODE_FOR_PRINT = 2; // 0x2
-  }
-
-}
-
-package android.graphics.text {
-
-  public class LineBreaker {
-    method @NonNull public android.graphics.text.LineBreaker.Result computeLineBreaks(@NonNull android.graphics.text.MeasuredText, @NonNull android.graphics.text.LineBreaker.ParagraphConstraints, @IntRange(from=0) int);
-    field public static final int BREAK_STRATEGY_BALANCED = 2; // 0x2
-    field public static final int BREAK_STRATEGY_HIGH_QUALITY = 1; // 0x1
-    field public static final int BREAK_STRATEGY_SIMPLE = 0; // 0x0
-    field public static final int HYPHENATION_FREQUENCY_FULL = 2; // 0x2
-    field public static final int HYPHENATION_FREQUENCY_NONE = 0; // 0x0
-    field public static final int HYPHENATION_FREQUENCY_NORMAL = 1; // 0x1
-    field public static final int JUSTIFICATION_MODE_INTER_WORD = 1; // 0x1
-    field public static final int JUSTIFICATION_MODE_NONE = 0; // 0x0
-  }
-
-  public static final class LineBreaker.Builder {
-    ctor public LineBreaker.Builder();
-    method @NonNull public android.graphics.text.LineBreaker build();
-    method @NonNull public android.graphics.text.LineBreaker.Builder setBreakStrategy(int);
-    method @NonNull public android.graphics.text.LineBreaker.Builder setHyphenationFrequency(int);
-    method @NonNull public android.graphics.text.LineBreaker.Builder setIndents(@Nullable int[]);
-    method @NonNull public android.graphics.text.LineBreaker.Builder setJustificationMode(int);
-  }
-
-  public static class LineBreaker.ParagraphConstraints {
-    ctor public LineBreaker.ParagraphConstraints();
-    method @FloatRange(from=0) @Px public float getDefaultTabStop();
-    method @FloatRange(from=0.0f) @Px public float getFirstWidth();
-    method @IntRange(from=0) @Px public int getFirstWidthLineCount();
-    method @Nullable public float[] getTabStops();
-    method @FloatRange(from=0.0f) @Px public float getWidth();
-    method public void setIndent(@FloatRange(from=0.0f) @Px float, @IntRange(from=0) @Px int);
-    method public void setTabStops(@Nullable float[], @FloatRange(from=0) @Px float);
-    method public void setWidth(@FloatRange(from=0.0f) @Px float);
-  }
-
-  public static class LineBreaker.Result {
-    method public int getEndLineHyphenEdit(int);
-    method @Px public float getLineAscent(@IntRange(from=0) int);
-    method @IntRange(from=0) public int getLineBreakOffset(@IntRange(from=0) int);
-    method @IntRange(from=0) public int getLineCount();
-    method @Px public float getLineDescent(@IntRange(from=0) int);
-    method @Px public float getLineWidth(@IntRange(from=0) int);
-    method public int getStartLineHyphenEdit(int);
-    method public boolean hasLineTab(int);
-  }
-
-  public class MeasuredText {
-    method public void getBounds(@IntRange(from=0) int, @IntRange(from=0) int, @NonNull android.graphics.Rect);
-    method @FloatRange(from=0.0f) @Px public float getCharWidthAt(@IntRange(from=0) int);
-    method @FloatRange(from=0.0) @Px public float getWidth(@IntRange(from=0) int, @IntRange(from=0) int);
-  }
-
-  public static final class MeasuredText.Builder {
-    ctor public MeasuredText.Builder(@NonNull char[]);
-    ctor public MeasuredText.Builder(@NonNull android.graphics.text.MeasuredText);
-    method @NonNull public android.graphics.text.MeasuredText.Builder appendReplacementRun(@NonNull android.graphics.Paint, @IntRange(from=0) int, @FloatRange(from=0) @Px float);
-    method @NonNull public android.graphics.text.MeasuredText.Builder appendStyleRun(@NonNull android.graphics.Paint, @IntRange(from=0) int, boolean);
-    method @NonNull public android.graphics.text.MeasuredText build();
-    method @NonNull public android.graphics.text.MeasuredText.Builder setComputeHyphenation(boolean);
-    method @NonNull public android.graphics.text.MeasuredText.Builder setComputeLayout(boolean);
-  }
-
-}
-
-package android.hardware {
-
-  @Deprecated public class Camera {
-    method @Deprecated public final void addCallbackBuffer(byte[]);
-    method @Deprecated public final void autoFocus(android.hardware.Camera.AutoFocusCallback);
-    method @Deprecated public final void cancelAutoFocus();
-    method @Deprecated public final boolean enableShutterSound(boolean);
-    method @Deprecated protected void finalize();
-    method @Deprecated public static void getCameraInfo(int, android.hardware.Camera.CameraInfo);
-    method @Deprecated public static int getNumberOfCameras();
-    method @Deprecated public android.hardware.Camera.Parameters getParameters();
-    method @Deprecated public final void lock();
-    method @Deprecated public static android.hardware.Camera open(int);
-    method @Deprecated public static android.hardware.Camera open();
-    method @Deprecated public final void reconnect() throws java.io.IOException;
-    method @Deprecated public final void release();
-    method @Deprecated public void setAutoFocusMoveCallback(android.hardware.Camera.AutoFocusMoveCallback);
-    method @Deprecated public final void setDisplayOrientation(int);
-    method @Deprecated public final void setErrorCallback(android.hardware.Camera.ErrorCallback);
-    method @Deprecated public final void setFaceDetectionListener(android.hardware.Camera.FaceDetectionListener);
-    method @Deprecated public final void setOneShotPreviewCallback(android.hardware.Camera.PreviewCallback);
-    method @Deprecated public void setParameters(android.hardware.Camera.Parameters);
-    method @Deprecated public final void setPreviewCallback(android.hardware.Camera.PreviewCallback);
-    method @Deprecated public final void setPreviewCallbackWithBuffer(android.hardware.Camera.PreviewCallback);
-    method @Deprecated public final void setPreviewDisplay(android.view.SurfaceHolder) throws java.io.IOException;
-    method @Deprecated public final void setPreviewTexture(android.graphics.SurfaceTexture) throws java.io.IOException;
-    method @Deprecated public final void setZoomChangeListener(android.hardware.Camera.OnZoomChangeListener);
-    method @Deprecated public final void startFaceDetection();
-    method @Deprecated public final void startPreview();
-    method @Deprecated public final void startSmoothZoom(int);
-    method @Deprecated public final void stopFaceDetection();
-    method @Deprecated public final void stopPreview();
-    method @Deprecated public final void stopSmoothZoom();
-    method @Deprecated public final void takePicture(android.hardware.Camera.ShutterCallback, android.hardware.Camera.PictureCallback, android.hardware.Camera.PictureCallback);
-    method @Deprecated public final void takePicture(android.hardware.Camera.ShutterCallback, android.hardware.Camera.PictureCallback, android.hardware.Camera.PictureCallback, android.hardware.Camera.PictureCallback);
-    method @Deprecated public final void unlock();
-    field @Deprecated public static final String ACTION_NEW_PICTURE = "android.hardware.action.NEW_PICTURE";
-    field @Deprecated public static final String ACTION_NEW_VIDEO = "android.hardware.action.NEW_VIDEO";
-    field @Deprecated public static final int CAMERA_ERROR_EVICTED = 2; // 0x2
-    field @Deprecated public static final int CAMERA_ERROR_SERVER_DIED = 100; // 0x64
-    field @Deprecated public static final int CAMERA_ERROR_UNKNOWN = 1; // 0x1
-  }
-
-  @Deprecated public static class Camera.Area {
-    ctor @Deprecated public Camera.Area(android.graphics.Rect, int);
-    field @Deprecated public android.graphics.Rect rect;
-    field @Deprecated public int weight;
-  }
-
-  @Deprecated public static interface Camera.AutoFocusCallback {
-    method @Deprecated public void onAutoFocus(boolean, android.hardware.Camera);
-  }
-
-  @Deprecated public static interface Camera.AutoFocusMoveCallback {
-    method @Deprecated public void onAutoFocusMoving(boolean, android.hardware.Camera);
-  }
-
-  @Deprecated public static class Camera.CameraInfo {
-    ctor @Deprecated public Camera.CameraInfo();
-    field @Deprecated public static final int CAMERA_FACING_BACK = 0; // 0x0
-    field @Deprecated public static final int CAMERA_FACING_FRONT = 1; // 0x1
-    field @Deprecated public boolean canDisableShutterSound;
-    field @Deprecated public int facing;
-    field @Deprecated public int orientation;
-  }
-
-  @Deprecated public static interface Camera.ErrorCallback {
-    method @Deprecated public void onError(int, android.hardware.Camera);
-  }
-
-  @Deprecated public static class Camera.Face {
-    ctor @Deprecated public Camera.Face();
-    field @Deprecated public int id;
-    field @Deprecated public android.graphics.Point leftEye;
-    field @Deprecated public android.graphics.Point mouth;
-    field @Deprecated public android.graphics.Rect rect;
-    field @Deprecated public android.graphics.Point rightEye;
-    field @Deprecated public int score;
-  }
-
-  @Deprecated public static interface Camera.FaceDetectionListener {
-    method @Deprecated public void onFaceDetection(android.hardware.Camera.Face[], android.hardware.Camera);
-  }
-
-  @Deprecated public static interface Camera.OnZoomChangeListener {
-    method @Deprecated public void onZoomChange(int, boolean, android.hardware.Camera);
-  }
-
-  @Deprecated public class Camera.Parameters {
-    method @Deprecated public String flatten();
-    method @Deprecated public String get(String);
-    method @Deprecated public String getAntibanding();
-    method @Deprecated public boolean getAutoExposureLock();
-    method @Deprecated public boolean getAutoWhiteBalanceLock();
-    method @Deprecated public String getColorEffect();
-    method @Deprecated public int getExposureCompensation();
-    method @Deprecated public float getExposureCompensationStep();
-    method @Deprecated public String getFlashMode();
-    method @Deprecated public float getFocalLength();
-    method @Deprecated public java.util.List<android.hardware.Camera.Area> getFocusAreas();
-    method @Deprecated public void getFocusDistances(float[]);
-    method @Deprecated public String getFocusMode();
-    method @Deprecated public float getHorizontalViewAngle();
-    method @Deprecated public int getInt(String);
-    method @Deprecated public int getJpegQuality();
-    method @Deprecated public int getJpegThumbnailQuality();
-    method @Deprecated public android.hardware.Camera.Size getJpegThumbnailSize();
-    method @Deprecated public int getMaxExposureCompensation();
-    method @Deprecated public int getMaxNumDetectedFaces();
-    method @Deprecated public int getMaxNumFocusAreas();
-    method @Deprecated public int getMaxNumMeteringAreas();
-    method @Deprecated public int getMaxZoom();
-    method @Deprecated public java.util.List<android.hardware.Camera.Area> getMeteringAreas();
-    method @Deprecated public int getMinExposureCompensation();
-    method @Deprecated public int getPictureFormat();
-    method @Deprecated public android.hardware.Camera.Size getPictureSize();
-    method @Deprecated public android.hardware.Camera.Size getPreferredPreviewSizeForVideo();
-    method @Deprecated public int getPreviewFormat();
-    method @Deprecated public void getPreviewFpsRange(int[]);
-    method @Deprecated public int getPreviewFrameRate();
-    method @Deprecated public android.hardware.Camera.Size getPreviewSize();
-    method @Deprecated public String getSceneMode();
-    method @Deprecated public java.util.List<java.lang.String> getSupportedAntibanding();
-    method @Deprecated public java.util.List<java.lang.String> getSupportedColorEffects();
-    method @Deprecated public java.util.List<java.lang.String> getSupportedFlashModes();
-    method @Deprecated public java.util.List<java.lang.String> getSupportedFocusModes();
-    method @Deprecated public java.util.List<android.hardware.Camera.Size> getSupportedJpegThumbnailSizes();
-    method @Deprecated public java.util.List<java.lang.Integer> getSupportedPictureFormats();
-    method @Deprecated public java.util.List<android.hardware.Camera.Size> getSupportedPictureSizes();
-    method @Deprecated public java.util.List<java.lang.Integer> getSupportedPreviewFormats();
-    method @Deprecated public java.util.List<int[]> getSupportedPreviewFpsRange();
-    method @Deprecated public java.util.List<java.lang.Integer> getSupportedPreviewFrameRates();
-    method @Deprecated public java.util.List<android.hardware.Camera.Size> getSupportedPreviewSizes();
-    method @Deprecated public java.util.List<java.lang.String> getSupportedSceneModes();
-    method @Deprecated public java.util.List<android.hardware.Camera.Size> getSupportedVideoSizes();
-    method @Deprecated public java.util.List<java.lang.String> getSupportedWhiteBalance();
-    method @Deprecated public float getVerticalViewAngle();
-    method @Deprecated public boolean getVideoStabilization();
-    method @Deprecated public String getWhiteBalance();
-    method @Deprecated public int getZoom();
-    method @Deprecated public java.util.List<java.lang.Integer> getZoomRatios();
-    method @Deprecated public boolean isAutoExposureLockSupported();
-    method @Deprecated public boolean isAutoWhiteBalanceLockSupported();
-    method @Deprecated public boolean isSmoothZoomSupported();
-    method @Deprecated public boolean isVideoSnapshotSupported();
-    method @Deprecated public boolean isVideoStabilizationSupported();
-    method @Deprecated public boolean isZoomSupported();
-    method @Deprecated public void remove(String);
-    method @Deprecated public void removeGpsData();
-    method @Deprecated public void set(String, String);
-    method @Deprecated public void set(String, int);
-    method @Deprecated public void setAntibanding(String);
-    method @Deprecated public void setAutoExposureLock(boolean);
-    method @Deprecated public void setAutoWhiteBalanceLock(boolean);
-    method @Deprecated public void setColorEffect(String);
-    method @Deprecated public void setExposureCompensation(int);
-    method @Deprecated public void setFlashMode(String);
-    method @Deprecated public void setFocusAreas(java.util.List<android.hardware.Camera.Area>);
-    method @Deprecated public void setFocusMode(String);
-    method @Deprecated public void setGpsAltitude(double);
-    method @Deprecated public void setGpsLatitude(double);
-    method @Deprecated public void setGpsLongitude(double);
-    method @Deprecated public void setGpsProcessingMethod(String);
-    method @Deprecated public void setGpsTimestamp(long);
-    method @Deprecated public void setJpegQuality(int);
-    method @Deprecated public void setJpegThumbnailQuality(int);
-    method @Deprecated public void setJpegThumbnailSize(int, int);
-    method @Deprecated public void setMeteringAreas(java.util.List<android.hardware.Camera.Area>);
-    method @Deprecated public void setPictureFormat(int);
-    method @Deprecated public void setPictureSize(int, int);
-    method @Deprecated public void setPreviewFormat(int);
-    method @Deprecated public void setPreviewFpsRange(int, int);
-    method @Deprecated public void setPreviewFrameRate(int);
-    method @Deprecated public void setPreviewSize(int, int);
-    method @Deprecated public void setRecordingHint(boolean);
-    method @Deprecated public void setRotation(int);
-    method @Deprecated public void setSceneMode(String);
-    method @Deprecated public void setVideoStabilization(boolean);
-    method @Deprecated public void setWhiteBalance(String);
-    method @Deprecated public void setZoom(int);
-    method @Deprecated public void unflatten(String);
-    field @Deprecated public static final String ANTIBANDING_50HZ = "50hz";
-    field @Deprecated public static final String ANTIBANDING_60HZ = "60hz";
-    field @Deprecated public static final String ANTIBANDING_AUTO = "auto";
-    field @Deprecated public static final String ANTIBANDING_OFF = "off";
-    field @Deprecated public static final String EFFECT_AQUA = "aqua";
-    field @Deprecated public static final String EFFECT_BLACKBOARD = "blackboard";
-    field @Deprecated public static final String EFFECT_MONO = "mono";
-    field @Deprecated public static final String EFFECT_NEGATIVE = "negative";
-    field @Deprecated public static final String EFFECT_NONE = "none";
-    field @Deprecated public static final String EFFECT_POSTERIZE = "posterize";
-    field @Deprecated public static final String EFFECT_SEPIA = "sepia";
-    field @Deprecated public static final String EFFECT_SOLARIZE = "solarize";
-    field @Deprecated public static final String EFFECT_WHITEBOARD = "whiteboard";
-    field @Deprecated public static final String FLASH_MODE_AUTO = "auto";
-    field @Deprecated public static final String FLASH_MODE_OFF = "off";
-    field @Deprecated public static final String FLASH_MODE_ON = "on";
-    field @Deprecated public static final String FLASH_MODE_RED_EYE = "red-eye";
-    field @Deprecated public static final String FLASH_MODE_TORCH = "torch";
-    field @Deprecated public static final int FOCUS_DISTANCE_FAR_INDEX = 2; // 0x2
-    field @Deprecated public static final int FOCUS_DISTANCE_NEAR_INDEX = 0; // 0x0
-    field @Deprecated public static final int FOCUS_DISTANCE_OPTIMAL_INDEX = 1; // 0x1
-    field @Deprecated public static final String FOCUS_MODE_AUTO = "auto";
-    field @Deprecated public static final String FOCUS_MODE_CONTINUOUS_PICTURE = "continuous-picture";
-    field @Deprecated public static final String FOCUS_MODE_CONTINUOUS_VIDEO = "continuous-video";
-    field @Deprecated public static final String FOCUS_MODE_EDOF = "edof";
-    field @Deprecated public static final String FOCUS_MODE_FIXED = "fixed";
-    field @Deprecated public static final String FOCUS_MODE_INFINITY = "infinity";
-    field @Deprecated public static final String FOCUS_MODE_MACRO = "macro";
-    field @Deprecated public static final int PREVIEW_FPS_MAX_INDEX = 1; // 0x1
-    field @Deprecated public static final int PREVIEW_FPS_MIN_INDEX = 0; // 0x0
-    field @Deprecated public static final String SCENE_MODE_ACTION = "action";
-    field @Deprecated public static final String SCENE_MODE_AUTO = "auto";
-    field @Deprecated public static final String SCENE_MODE_BARCODE = "barcode";
-    field @Deprecated public static final String SCENE_MODE_BEACH = "beach";
-    field @Deprecated public static final String SCENE_MODE_CANDLELIGHT = "candlelight";
-    field @Deprecated public static final String SCENE_MODE_FIREWORKS = "fireworks";
-    field @Deprecated public static final String SCENE_MODE_HDR = "hdr";
-    field @Deprecated public static final String SCENE_MODE_LANDSCAPE = "landscape";
-    field @Deprecated public static final String SCENE_MODE_NIGHT = "night";
-    field @Deprecated public static final String SCENE_MODE_NIGHT_PORTRAIT = "night-portrait";
-    field @Deprecated public static final String SCENE_MODE_PARTY = "party";
-    field @Deprecated public static final String SCENE_MODE_PORTRAIT = "portrait";
-    field @Deprecated public static final String SCENE_MODE_SNOW = "snow";
-    field @Deprecated public static final String SCENE_MODE_SPORTS = "sports";
-    field @Deprecated public static final String SCENE_MODE_STEADYPHOTO = "steadyphoto";
-    field @Deprecated public static final String SCENE_MODE_SUNSET = "sunset";
-    field @Deprecated public static final String SCENE_MODE_THEATRE = "theatre";
-    field @Deprecated public static final String WHITE_BALANCE_AUTO = "auto";
-    field @Deprecated public static final String WHITE_BALANCE_CLOUDY_DAYLIGHT = "cloudy-daylight";
-    field @Deprecated public static final String WHITE_BALANCE_DAYLIGHT = "daylight";
-    field @Deprecated public static final String WHITE_BALANCE_FLUORESCENT = "fluorescent";
-    field @Deprecated public static final String WHITE_BALANCE_INCANDESCENT = "incandescent";
-    field @Deprecated public static final String WHITE_BALANCE_SHADE = "shade";
-    field @Deprecated public static final String WHITE_BALANCE_TWILIGHT = "twilight";
-    field @Deprecated public static final String WHITE_BALANCE_WARM_FLUORESCENT = "warm-fluorescent";
-  }
-
-  @Deprecated public static interface Camera.PictureCallback {
-    method @Deprecated public void onPictureTaken(byte[], android.hardware.Camera);
-  }
-
-  @Deprecated public static interface Camera.PreviewCallback {
-    method @Deprecated public void onPreviewFrame(byte[], android.hardware.Camera);
-  }
-
-  @Deprecated public static interface Camera.ShutterCallback {
-    method @Deprecated public void onShutter();
-  }
-
-  @Deprecated public class Camera.Size {
-    ctor @Deprecated public Camera.Size(int, int);
-    field @Deprecated public int height;
-    field @Deprecated public int width;
-  }
-
-  public final class ConsumerIrManager {
-    method public android.hardware.ConsumerIrManager.CarrierFrequencyRange[] getCarrierFrequencies();
-    method public boolean hasIrEmitter();
-    method public void transmit(int, int[]);
-  }
-
-  public final class ConsumerIrManager.CarrierFrequencyRange {
-    ctor public ConsumerIrManager.CarrierFrequencyRange(int, int);
-    method public int getMaxFrequency();
-    method public int getMinFrequency();
-  }
-
-  public class GeomagneticField {
-    ctor public GeomagneticField(float, float, float, long);
-    method public float getDeclination();
-    method public float getFieldStrength();
-    method public float getHorizontalStrength();
-    method public float getInclination();
-    method public float getX();
-    method public float getY();
-    method public float getZ();
-  }
-
-  public final class HardwareBuffer implements java.lang.AutoCloseable android.os.Parcelable {
-    method public void close();
-    method @NonNull public static android.hardware.HardwareBuffer create(@IntRange(from=1) int, @IntRange(from=1) int, int, @IntRange(from=1) int, long);
-    method public int describeContents();
-    method public int getFormat();
-    method public int getHeight();
-    method public int getLayers();
-    method public long getUsage();
-    method public int getWidth();
-    method public boolean isClosed();
-    method public static boolean isSupported(@IntRange(from=1) int, @IntRange(from=1) int, int, @IntRange(from=1) int, long);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int BLOB = 33; // 0x21
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.HardwareBuffer> CREATOR;
-    field public static final int DS_24UI8 = 50; // 0x32
-    field public static final int DS_FP32UI8 = 52; // 0x34
-    field public static final int D_16 = 48; // 0x30
-    field public static final int D_24 = 49; // 0x31
-    field public static final int D_FP32 = 51; // 0x33
-    field public static final int RGBA_1010102 = 43; // 0x2b
-    field public static final int RGBA_8888 = 1; // 0x1
-    field public static final int RGBA_FP16 = 22; // 0x16
-    field public static final int RGBX_8888 = 2; // 0x2
-    field public static final int RGB_565 = 4; // 0x4
-    field public static final int RGB_888 = 3; // 0x3
-    field public static final int S_UI8 = 53; // 0x35
-    field public static final long USAGE_CPU_READ_OFTEN = 3L; // 0x3L
-    field public static final long USAGE_CPU_READ_RARELY = 2L; // 0x2L
-    field public static final long USAGE_CPU_WRITE_OFTEN = 48L; // 0x30L
-    field public static final long USAGE_CPU_WRITE_RARELY = 32L; // 0x20L
-    field public static final long USAGE_GPU_COLOR_OUTPUT = 512L; // 0x200L
-    field public static final long USAGE_GPU_CUBE_MAP = 33554432L; // 0x2000000L
-    field public static final long USAGE_GPU_DATA_BUFFER = 16777216L; // 0x1000000L
-    field public static final long USAGE_GPU_MIPMAP_COMPLETE = 67108864L; // 0x4000000L
-    field public static final long USAGE_GPU_SAMPLED_IMAGE = 256L; // 0x100L
-    field public static final long USAGE_PROTECTED_CONTENT = 16384L; // 0x4000L
-    field public static final long USAGE_SENSOR_DIRECT_DATA = 8388608L; // 0x800000L
-    field public static final long USAGE_VIDEO_ENCODE = 65536L; // 0x10000L
-    field public static final int YCBCR_420_888 = 35; // 0x23
-  }
-
-  public final class Sensor {
-    method public int getFifoMaxEventCount();
-    method public int getFifoReservedEventCount();
-    method public int getHighestDirectReportRateLevel();
-    method public int getId();
-    method public int getMaxDelay();
-    method public float getMaximumRange();
-    method public int getMinDelay();
-    method public String getName();
-    method public float getPower();
-    method public int getReportingMode();
-    method public float getResolution();
-    method public String getStringType();
-    method public int getType();
-    method public String getVendor();
-    method public int getVersion();
-    method public boolean isAdditionalInfoSupported();
-    method public boolean isDirectChannelTypeSupported(int);
-    method public boolean isDynamicSensor();
-    method public boolean isWakeUpSensor();
-    field public static final int REPORTING_MODE_CONTINUOUS = 0; // 0x0
-    field public static final int REPORTING_MODE_ONE_SHOT = 2; // 0x2
-    field public static final int REPORTING_MODE_ON_CHANGE = 1; // 0x1
-    field public static final int REPORTING_MODE_SPECIAL_TRIGGER = 3; // 0x3
-    field public static final String STRING_TYPE_ACCELEROMETER = "android.sensor.accelerometer";
-    field public static final String STRING_TYPE_ACCELEROMETER_UNCALIBRATED = "android.sensor.accelerometer_uncalibrated";
-    field public static final String STRING_TYPE_AMBIENT_TEMPERATURE = "android.sensor.ambient_temperature";
-    field public static final String STRING_TYPE_GAME_ROTATION_VECTOR = "android.sensor.game_rotation_vector";
-    field public static final String STRING_TYPE_GEOMAGNETIC_ROTATION_VECTOR = "android.sensor.geomagnetic_rotation_vector";
-    field public static final String STRING_TYPE_GRAVITY = "android.sensor.gravity";
-    field public static final String STRING_TYPE_GYROSCOPE = "android.sensor.gyroscope";
-    field public static final String STRING_TYPE_GYROSCOPE_UNCALIBRATED = "android.sensor.gyroscope_uncalibrated";
-    field public static final String STRING_TYPE_HEART_BEAT = "android.sensor.heart_beat";
-    field public static final String STRING_TYPE_HEART_RATE = "android.sensor.heart_rate";
-    field public static final String STRING_TYPE_HINGE_ANGLE = "android.sensor.hinge_angle";
-    field public static final String STRING_TYPE_LIGHT = "android.sensor.light";
-    field public static final String STRING_TYPE_LINEAR_ACCELERATION = "android.sensor.linear_acceleration";
-    field public static final String STRING_TYPE_LOW_LATENCY_OFFBODY_DETECT = "android.sensor.low_latency_offbody_detect";
-    field public static final String STRING_TYPE_MAGNETIC_FIELD = "android.sensor.magnetic_field";
-    field public static final String STRING_TYPE_MAGNETIC_FIELD_UNCALIBRATED = "android.sensor.magnetic_field_uncalibrated";
-    field public static final String STRING_TYPE_MOTION_DETECT = "android.sensor.motion_detect";
-    field @Deprecated public static final String STRING_TYPE_ORIENTATION = "android.sensor.orientation";
-    field public static final String STRING_TYPE_POSE_6DOF = "android.sensor.pose_6dof";
-    field public static final String STRING_TYPE_PRESSURE = "android.sensor.pressure";
-    field public static final String STRING_TYPE_PROXIMITY = "android.sensor.proximity";
-    field public static final String STRING_TYPE_RELATIVE_HUMIDITY = "android.sensor.relative_humidity";
-    field public static final String STRING_TYPE_ROTATION_VECTOR = "android.sensor.rotation_vector";
-    field public static final String STRING_TYPE_SIGNIFICANT_MOTION = "android.sensor.significant_motion";
-    field public static final String STRING_TYPE_STATIONARY_DETECT = "android.sensor.stationary_detect";
-    field public static final String STRING_TYPE_STEP_COUNTER = "android.sensor.step_counter";
-    field public static final String STRING_TYPE_STEP_DETECTOR = "android.sensor.step_detector";
-    field @Deprecated public static final String STRING_TYPE_TEMPERATURE = "android.sensor.temperature";
-    field public static final int TYPE_ACCELEROMETER = 1; // 0x1
-    field public static final int TYPE_ACCELEROMETER_UNCALIBRATED = 35; // 0x23
-    field public static final int TYPE_ALL = -1; // 0xffffffff
-    field public static final int TYPE_AMBIENT_TEMPERATURE = 13; // 0xd
-    field public static final int TYPE_DEVICE_PRIVATE_BASE = 65536; // 0x10000
-    field public static final int TYPE_GAME_ROTATION_VECTOR = 15; // 0xf
-    field public static final int TYPE_GEOMAGNETIC_ROTATION_VECTOR = 20; // 0x14
-    field public static final int TYPE_GRAVITY = 9; // 0x9
-    field public static final int TYPE_GYROSCOPE = 4; // 0x4
-    field public static final int TYPE_GYROSCOPE_UNCALIBRATED = 16; // 0x10
-    field public static final int TYPE_HEART_BEAT = 31; // 0x1f
-    field public static final int TYPE_HEART_RATE = 21; // 0x15
-    field public static final int TYPE_HINGE_ANGLE = 36; // 0x24
-    field public static final int TYPE_LIGHT = 5; // 0x5
-    field public static final int TYPE_LINEAR_ACCELERATION = 10; // 0xa
-    field public static final int TYPE_LOW_LATENCY_OFFBODY_DETECT = 34; // 0x22
-    field public static final int TYPE_MAGNETIC_FIELD = 2; // 0x2
-    field public static final int TYPE_MAGNETIC_FIELD_UNCALIBRATED = 14; // 0xe
-    field public static final int TYPE_MOTION_DETECT = 30; // 0x1e
-    field @Deprecated public static final int TYPE_ORIENTATION = 3; // 0x3
-    field public static final int TYPE_POSE_6DOF = 28; // 0x1c
-    field public static final int TYPE_PRESSURE = 6; // 0x6
-    field public static final int TYPE_PROXIMITY = 8; // 0x8
-    field public static final int TYPE_RELATIVE_HUMIDITY = 12; // 0xc
-    field public static final int TYPE_ROTATION_VECTOR = 11; // 0xb
-    field public static final int TYPE_SIGNIFICANT_MOTION = 17; // 0x11
-    field public static final int TYPE_STATIONARY_DETECT = 29; // 0x1d
-    field public static final int TYPE_STEP_COUNTER = 19; // 0x13
-    field public static final int TYPE_STEP_DETECTOR = 18; // 0x12
-    field @Deprecated public static final int TYPE_TEMPERATURE = 7; // 0x7
-  }
-
-  public class SensorAdditionalInfo {
-    field public static final int TYPE_FRAME_BEGIN = 0; // 0x0
-    field public static final int TYPE_FRAME_END = 1; // 0x1
-    field public static final int TYPE_INTERNAL_TEMPERATURE = 65537; // 0x10001
-    field public static final int TYPE_SAMPLING = 65540; // 0x10004
-    field public static final int TYPE_SENSOR_PLACEMENT = 65539; // 0x10003
-    field public static final int TYPE_UNTRACKED_DELAY = 65536; // 0x10000
-    field public static final int TYPE_VEC3_CALIBRATION = 65538; // 0x10002
-    field public final float[] floatValues;
-    field public final int[] intValues;
-    field public final android.hardware.Sensor sensor;
-    field public final int serial;
-    field public final int type;
-  }
-
-  public final class SensorDirectChannel implements java.nio.channels.Channel {
-    method public void close();
-    method public int configure(android.hardware.Sensor, int);
-    method public boolean isOpen();
-    field public static final int RATE_FAST = 2; // 0x2
-    field public static final int RATE_NORMAL = 1; // 0x1
-    field public static final int RATE_STOP = 0; // 0x0
-    field public static final int RATE_VERY_FAST = 3; // 0x3
-    field public static final int TYPE_HARDWARE_BUFFER = 2; // 0x2
-    field public static final int TYPE_MEMORY_FILE = 1; // 0x1
-  }
-
-  public class SensorEvent {
-    field public int accuracy;
-    field public android.hardware.Sensor sensor;
-    field public long timestamp;
-    field public final float[] values;
-  }
-
-  public abstract class SensorEventCallback implements android.hardware.SensorEventListener2 {
-    ctor public SensorEventCallback();
-    method public void onAccuracyChanged(android.hardware.Sensor, int);
-    method public void onFlushCompleted(android.hardware.Sensor);
-    method public void onSensorAdditionalInfo(android.hardware.SensorAdditionalInfo);
-    method public void onSensorChanged(android.hardware.SensorEvent);
-  }
-
-  public interface SensorEventListener {
-    method public void onAccuracyChanged(android.hardware.Sensor, int);
-    method public void onSensorChanged(android.hardware.SensorEvent);
-  }
-
-  public interface SensorEventListener2 extends android.hardware.SensorEventListener {
-    method public void onFlushCompleted(android.hardware.Sensor);
-  }
-
-  @Deprecated public interface SensorListener {
-    method @Deprecated public void onAccuracyChanged(int, int);
-    method @Deprecated public void onSensorChanged(int, float[]);
-  }
-
-  public abstract class SensorManager {
-    method public boolean cancelTriggerSensor(android.hardware.TriggerEventListener, android.hardware.Sensor);
-    method public android.hardware.SensorDirectChannel createDirectChannel(android.os.MemoryFile);
-    method public android.hardware.SensorDirectChannel createDirectChannel(android.hardware.HardwareBuffer);
-    method public boolean flush(android.hardware.SensorEventListener);
-    method public static float getAltitude(float, float);
-    method public static void getAngleChange(float[], float[], float[]);
-    method public android.hardware.Sensor getDefaultSensor(int);
-    method public android.hardware.Sensor getDefaultSensor(int, boolean);
-    method public java.util.List<android.hardware.Sensor> getDynamicSensorList(int);
-    method public static float getInclination(float[]);
-    method public static float[] getOrientation(float[], float[]);
-    method public static void getQuaternionFromVector(float[], float[]);
-    method public static boolean getRotationMatrix(float[], float[], float[], float[]);
-    method public static void getRotationMatrixFromVector(float[], float[]);
-    method public java.util.List<android.hardware.Sensor> getSensorList(int);
-    method @Deprecated public int getSensors();
-    method public boolean isDynamicSensorDiscoverySupported();
-    method public void registerDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorCallback);
-    method public void registerDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorCallback, android.os.Handler);
-    method @Deprecated public boolean registerListener(android.hardware.SensorListener, int);
-    method @Deprecated public boolean registerListener(android.hardware.SensorListener, int, int);
-    method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int);
-    method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int, int);
-    method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int, android.os.Handler);
-    method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int, int, android.os.Handler);
-    method public static boolean remapCoordinateSystem(float[], int, int, float[]);
-    method public boolean requestTriggerSensor(android.hardware.TriggerEventListener, android.hardware.Sensor);
-    method public void unregisterDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorCallback);
-    method @Deprecated public void unregisterListener(android.hardware.SensorListener);
-    method @Deprecated public void unregisterListener(android.hardware.SensorListener, int);
-    method public void unregisterListener(android.hardware.SensorEventListener, android.hardware.Sensor);
-    method public void unregisterListener(android.hardware.SensorEventListener);
-    field public static final int AXIS_MINUS_X = 129; // 0x81
-    field public static final int AXIS_MINUS_Y = 130; // 0x82
-    field public static final int AXIS_MINUS_Z = 131; // 0x83
-    field public static final int AXIS_X = 1; // 0x1
-    field public static final int AXIS_Y = 2; // 0x2
-    field public static final int AXIS_Z = 3; // 0x3
-    field @Deprecated public static final int DATA_X = 0; // 0x0
-    field @Deprecated public static final int DATA_Y = 1; // 0x1
-    field @Deprecated public static final int DATA_Z = 2; // 0x2
-    field public static final float GRAVITY_DEATH_STAR_I = 3.5303614E-7f;
-    field public static final float GRAVITY_EARTH = 9.80665f;
-    field public static final float GRAVITY_JUPITER = 23.12f;
-    field public static final float GRAVITY_MARS = 3.71f;
-    field public static final float GRAVITY_MERCURY = 3.7f;
-    field public static final float GRAVITY_MOON = 1.6f;
-    field public static final float GRAVITY_NEPTUNE = 11.0f;
-    field public static final float GRAVITY_PLUTO = 0.6f;
-    field public static final float GRAVITY_SATURN = 8.96f;
-    field public static final float GRAVITY_SUN = 275.0f;
-    field public static final float GRAVITY_THE_ISLAND = 4.815162f;
-    field public static final float GRAVITY_URANUS = 8.69f;
-    field public static final float GRAVITY_VENUS = 8.87f;
-    field public static final float LIGHT_CLOUDY = 100.0f;
-    field public static final float LIGHT_FULLMOON = 0.25f;
-    field public static final float LIGHT_NO_MOON = 0.001f;
-    field public static final float LIGHT_OVERCAST = 10000.0f;
-    field public static final float LIGHT_SHADE = 20000.0f;
-    field public static final float LIGHT_SUNLIGHT = 110000.0f;
-    field public static final float LIGHT_SUNLIGHT_MAX = 120000.0f;
-    field public static final float LIGHT_SUNRISE = 400.0f;
-    field public static final float MAGNETIC_FIELD_EARTH_MAX = 60.0f;
-    field public static final float MAGNETIC_FIELD_EARTH_MIN = 30.0f;
-    field public static final float PRESSURE_STANDARD_ATMOSPHERE = 1013.25f;
-    field @Deprecated public static final int RAW_DATA_INDEX = 3; // 0x3
-    field @Deprecated public static final int RAW_DATA_X = 3; // 0x3
-    field @Deprecated public static final int RAW_DATA_Y = 4; // 0x4
-    field @Deprecated public static final int RAW_DATA_Z = 5; // 0x5
-    field @Deprecated public static final int SENSOR_ACCELEROMETER = 2; // 0x2
-    field @Deprecated public static final int SENSOR_ALL = 127; // 0x7f
-    field public static final int SENSOR_DELAY_FASTEST = 0; // 0x0
-    field public static final int SENSOR_DELAY_GAME = 1; // 0x1
-    field public static final int SENSOR_DELAY_NORMAL = 3; // 0x3
-    field public static final int SENSOR_DELAY_UI = 2; // 0x2
-    field @Deprecated public static final int SENSOR_LIGHT = 16; // 0x10
-    field @Deprecated public static final int SENSOR_MAGNETIC_FIELD = 8; // 0x8
-    field @Deprecated public static final int SENSOR_MAX = 64; // 0x40
-    field @Deprecated public static final int SENSOR_MIN = 1; // 0x1
-    field @Deprecated public static final int SENSOR_ORIENTATION = 1; // 0x1
-    field @Deprecated public static final int SENSOR_ORIENTATION_RAW = 128; // 0x80
-    field @Deprecated public static final int SENSOR_PROXIMITY = 32; // 0x20
-    field public static final int SENSOR_STATUS_ACCURACY_HIGH = 3; // 0x3
-    field public static final int SENSOR_STATUS_ACCURACY_LOW = 1; // 0x1
-    field public static final int SENSOR_STATUS_ACCURACY_MEDIUM = 2; // 0x2
-    field public static final int SENSOR_STATUS_NO_CONTACT = -1; // 0xffffffff
-    field public static final int SENSOR_STATUS_UNRELIABLE = 0; // 0x0
-    field @Deprecated public static final int SENSOR_TEMPERATURE = 4; // 0x4
-    field @Deprecated public static final int SENSOR_TRICORDER = 64; // 0x40
-    field public static final float STANDARD_GRAVITY = 9.80665f;
-  }
-
-  public abstract static class SensorManager.DynamicSensorCallback {
-    ctor public SensorManager.DynamicSensorCallback();
-    method public void onDynamicSensorConnected(android.hardware.Sensor);
-    method public void onDynamicSensorDisconnected(android.hardware.Sensor);
-  }
-
-  public final class TriggerEvent {
-    field public android.hardware.Sensor sensor;
-    field public long timestamp;
-    field public final float[] values;
-  }
-
-  public abstract class TriggerEventListener {
-    ctor public TriggerEventListener();
-    method public abstract void onTrigger(android.hardware.TriggerEvent);
-  }
-
-}
-
-package android.hardware.biometrics {
-
-  public class BiometricManager {
-    method @Deprecated @RequiresPermission(android.Manifest.permission.USE_BIOMETRIC) public int canAuthenticate();
-    method @RequiresPermission(android.Manifest.permission.USE_BIOMETRIC) public int canAuthenticate(int);
-    field public static final int BIOMETRIC_ERROR_HW_UNAVAILABLE = 1; // 0x1
-    field public static final int BIOMETRIC_ERROR_NONE_ENROLLED = 11; // 0xb
-    field public static final int BIOMETRIC_ERROR_NO_HARDWARE = 12; // 0xc
-    field public static final int BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED = 15; // 0xf
-    field public static final int BIOMETRIC_SUCCESS = 0; // 0x0
-  }
-
-  public static interface BiometricManager.Authenticators {
-    field public static final int BIOMETRIC_STRONG = 15; // 0xf
-    field public static final int BIOMETRIC_WEAK = 255; // 0xff
-    field public static final int DEVICE_CREDENTIAL = 32768; // 0x8000
-  }
-
-  public class BiometricPrompt {
-    method @RequiresPermission(android.Manifest.permission.USE_BIOMETRIC) public void authenticate(@NonNull android.hardware.biometrics.BiometricPrompt.CryptoObject, @NonNull android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.biometrics.BiometricPrompt.AuthenticationCallback);
-    method @RequiresPermission(android.Manifest.permission.USE_BIOMETRIC) public void authenticate(@NonNull android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.biometrics.BiometricPrompt.AuthenticationCallback);
-    method @Nullable public int getAllowedAuthenticators();
-    method @Nullable public CharSequence getDescription();
-    method @Nullable public CharSequence getNegativeButtonText();
-    method @Nullable public CharSequence getSubtitle();
-    method @NonNull public CharSequence getTitle();
-    method public boolean isConfirmationRequired();
-    field public static final int AUTHENTICATION_RESULT_TYPE_BIOMETRIC = 2; // 0x2
-    field public static final int AUTHENTICATION_RESULT_TYPE_DEVICE_CREDENTIAL = 1; // 0x1
-    field public static final int BIOMETRIC_ACQUIRED_GOOD = 0; // 0x0
-    field public static final int BIOMETRIC_ACQUIRED_IMAGER_DIRTY = 3; // 0x3
-    field public static final int BIOMETRIC_ACQUIRED_INSUFFICIENT = 2; // 0x2
-    field public static final int BIOMETRIC_ACQUIRED_PARTIAL = 1; // 0x1
-    field public static final int BIOMETRIC_ACQUIRED_TOO_FAST = 5; // 0x5
-    field public static final int BIOMETRIC_ACQUIRED_TOO_SLOW = 4; // 0x4
-    field public static final int BIOMETRIC_ERROR_CANCELED = 5; // 0x5
-    field public static final int BIOMETRIC_ERROR_HW_NOT_PRESENT = 12; // 0xc
-    field public static final int BIOMETRIC_ERROR_HW_UNAVAILABLE = 1; // 0x1
-    field public static final int BIOMETRIC_ERROR_LOCKOUT = 7; // 0x7
-    field public static final int BIOMETRIC_ERROR_LOCKOUT_PERMANENT = 9; // 0x9
-    field public static final int BIOMETRIC_ERROR_NO_BIOMETRICS = 11; // 0xb
-    field public static final int BIOMETRIC_ERROR_NO_DEVICE_CREDENTIAL = 14; // 0xe
-    field public static final int BIOMETRIC_ERROR_NO_SPACE = 4; // 0x4
-    field public static final int BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED = 15; // 0xf
-    field public static final int BIOMETRIC_ERROR_TIMEOUT = 3; // 0x3
-    field public static final int BIOMETRIC_ERROR_UNABLE_TO_PROCESS = 2; // 0x2
-    field public static final int BIOMETRIC_ERROR_USER_CANCELED = 10; // 0xa
-    field public static final int BIOMETRIC_ERROR_VENDOR = 8; // 0x8
-  }
-
-  public abstract static class BiometricPrompt.AuthenticationCallback {
-    ctor public BiometricPrompt.AuthenticationCallback();
-    method public void onAuthenticationError(int, CharSequence);
-    method public void onAuthenticationFailed();
-    method public void onAuthenticationHelp(int, CharSequence);
-    method public void onAuthenticationSucceeded(android.hardware.biometrics.BiometricPrompt.AuthenticationResult);
-  }
-
-  public static class BiometricPrompt.AuthenticationResult {
-    method public int getAuthenticationType();
-    method public android.hardware.biometrics.BiometricPrompt.CryptoObject getCryptoObject();
-  }
-
-  public static class BiometricPrompt.Builder {
-    ctor public BiometricPrompt.Builder(android.content.Context);
-    method @NonNull public android.hardware.biometrics.BiometricPrompt build();
-    method @NonNull public android.hardware.biometrics.BiometricPrompt.Builder setAllowedAuthenticators(int);
-    method @NonNull public android.hardware.biometrics.BiometricPrompt.Builder setConfirmationRequired(boolean);
-    method @NonNull public android.hardware.biometrics.BiometricPrompt.Builder setDescription(@NonNull CharSequence);
-    method @Deprecated @NonNull public android.hardware.biometrics.BiometricPrompt.Builder setDeviceCredentialAllowed(boolean);
-    method @NonNull public android.hardware.biometrics.BiometricPrompt.Builder setNegativeButton(@NonNull CharSequence, @NonNull java.util.concurrent.Executor, @NonNull android.content.DialogInterface.OnClickListener);
-    method @NonNull public android.hardware.biometrics.BiometricPrompt.Builder setSubtitle(@NonNull CharSequence);
-    method @NonNull public android.hardware.biometrics.BiometricPrompt.Builder setTitle(@NonNull CharSequence);
-  }
-
-  public static final class BiometricPrompt.CryptoObject {
-    ctor public BiometricPrompt.CryptoObject(@NonNull java.security.Signature);
-    ctor public BiometricPrompt.CryptoObject(@NonNull javax.crypto.Cipher);
-    ctor public BiometricPrompt.CryptoObject(@NonNull javax.crypto.Mac);
-    ctor public BiometricPrompt.CryptoObject(@NonNull android.security.identity.IdentityCredential);
-    method public javax.crypto.Cipher getCipher();
-    method @Nullable public android.security.identity.IdentityCredential getIdentityCredential();
-    method public javax.crypto.Mac getMac();
-    method public java.security.Signature getSignature();
-  }
-
-}
-
-package android.hardware.camera2 {
-
-  public class CameraAccessException extends android.util.AndroidException {
-    ctor public CameraAccessException(int);
-    ctor public CameraAccessException(int, String);
-    ctor public CameraAccessException(int, String, Throwable);
-    ctor public CameraAccessException(int, Throwable);
-    method public final int getReason();
-    field public static final int CAMERA_DISABLED = 1; // 0x1
-    field public static final int CAMERA_DISCONNECTED = 2; // 0x2
-    field public static final int CAMERA_ERROR = 3; // 0x3
-    field public static final int CAMERA_IN_USE = 4; // 0x4
-    field public static final int MAX_CAMERAS_IN_USE = 5; // 0x5
-  }
-
-  public abstract class CameraCaptureSession implements java.lang.AutoCloseable {
-    ctor public CameraCaptureSession();
-    method public abstract void abortCaptures() throws android.hardware.camera2.CameraAccessException;
-    method public abstract int capture(@NonNull android.hardware.camera2.CaptureRequest, @Nullable android.hardware.camera2.CameraCaptureSession.CaptureCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
-    method public abstract int captureBurst(@NonNull java.util.List<android.hardware.camera2.CaptureRequest>, @Nullable android.hardware.camera2.CameraCaptureSession.CaptureCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
-    method public int captureBurstRequests(@NonNull java.util.List<android.hardware.camera2.CaptureRequest>, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraCaptureSession.CaptureCallback) throws android.hardware.camera2.CameraAccessException;
-    method public int captureSingleRequest(@NonNull android.hardware.camera2.CaptureRequest, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraCaptureSession.CaptureCallback) throws android.hardware.camera2.CameraAccessException;
-    method public abstract void close();
-    method public abstract void finalizeOutputConfigurations(java.util.List<android.hardware.camera2.params.OutputConfiguration>) throws android.hardware.camera2.CameraAccessException;
-    method @NonNull public abstract android.hardware.camera2.CameraDevice getDevice();
-    method @Nullable public abstract android.view.Surface getInputSurface();
-    method public abstract boolean isReprocessable();
-    method public abstract void prepare(@NonNull android.view.Surface) throws android.hardware.camera2.CameraAccessException;
-    method public abstract int setRepeatingBurst(@NonNull java.util.List<android.hardware.camera2.CaptureRequest>, @Nullable android.hardware.camera2.CameraCaptureSession.CaptureCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
-    method public int setRepeatingBurstRequests(@NonNull java.util.List<android.hardware.camera2.CaptureRequest>, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraCaptureSession.CaptureCallback) throws android.hardware.camera2.CameraAccessException;
-    method public abstract int setRepeatingRequest(@NonNull android.hardware.camera2.CaptureRequest, @Nullable android.hardware.camera2.CameraCaptureSession.CaptureCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
-    method public int setSingleRepeatingRequest(@NonNull android.hardware.camera2.CaptureRequest, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraCaptureSession.CaptureCallback) throws android.hardware.camera2.CameraAccessException;
-    method public abstract void stopRepeating() throws android.hardware.camera2.CameraAccessException;
-    method public boolean supportsOfflineProcessing(@NonNull android.view.Surface);
-    method @Nullable public android.hardware.camera2.CameraOfflineSession switchToOffline(@NonNull java.util.Collection<android.view.Surface>, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraOfflineSession.CameraOfflineSessionCallback) throws android.hardware.camera2.CameraAccessException;
-    method public void updateOutputConfiguration(android.hardware.camera2.params.OutputConfiguration) throws android.hardware.camera2.CameraAccessException;
-  }
-
-  public abstract static class CameraCaptureSession.CaptureCallback {
-    ctor public CameraCaptureSession.CaptureCallback();
-    method public void onCaptureBufferLost(@NonNull android.hardware.camera2.CameraCaptureSession, @NonNull android.hardware.camera2.CaptureRequest, @NonNull android.view.Surface, long);
-    method public void onCaptureCompleted(@NonNull android.hardware.camera2.CameraCaptureSession, @NonNull android.hardware.camera2.CaptureRequest, @NonNull android.hardware.camera2.TotalCaptureResult);
-    method public void onCaptureFailed(@NonNull android.hardware.camera2.CameraCaptureSession, @NonNull android.hardware.camera2.CaptureRequest, @NonNull android.hardware.camera2.CaptureFailure);
-    method public void onCaptureProgressed(@NonNull android.hardware.camera2.CameraCaptureSession, @NonNull android.hardware.camera2.CaptureRequest, @NonNull android.hardware.camera2.CaptureResult);
-    method public void onCaptureSequenceAborted(@NonNull android.hardware.camera2.CameraCaptureSession, int);
-    method public void onCaptureSequenceCompleted(@NonNull android.hardware.camera2.CameraCaptureSession, int, long);
-    method public void onCaptureStarted(@NonNull android.hardware.camera2.CameraCaptureSession, @NonNull android.hardware.camera2.CaptureRequest, long, long);
-  }
-
-  public abstract static class CameraCaptureSession.StateCallback {
-    ctor public CameraCaptureSession.StateCallback();
-    method public void onActive(@NonNull android.hardware.camera2.CameraCaptureSession);
-    method public void onCaptureQueueEmpty(@NonNull android.hardware.camera2.CameraCaptureSession);
-    method public void onClosed(@NonNull android.hardware.camera2.CameraCaptureSession);
-    method public abstract void onConfigureFailed(@NonNull android.hardware.camera2.CameraCaptureSession);
-    method public abstract void onConfigured(@NonNull android.hardware.camera2.CameraCaptureSession);
-    method public void onReady(@NonNull android.hardware.camera2.CameraCaptureSession);
-    method public void onSurfacePrepared(@NonNull android.hardware.camera2.CameraCaptureSession, @NonNull android.view.Surface);
-  }
-
-  public final class CameraCharacteristics extends android.hardware.camera2.CameraMetadata<android.hardware.camera2.CameraCharacteristics.Key<?>> {
-    method @Nullable public <T> T get(android.hardware.camera2.CameraCharacteristics.Key<T>);
-    method @NonNull public java.util.List<android.hardware.camera2.CaptureRequest.Key<?>> getAvailableCaptureRequestKeys();
-    method @NonNull public java.util.List<android.hardware.camera2.CaptureResult.Key<?>> getAvailableCaptureResultKeys();
-    method public java.util.List<android.hardware.camera2.CaptureRequest.Key<?>> getAvailablePhysicalCameraRequestKeys();
-    method public java.util.List<android.hardware.camera2.CaptureRequest.Key<?>> getAvailableSessionKeys();
-    method @NonNull public java.util.List<android.hardware.camera2.CameraCharacteristics.Key<?>> getKeys();
-    method @NonNull public java.util.List<android.hardware.camera2.CameraCharacteristics.Key<?>> getKeysNeedingPermission();
-    method @NonNull public java.util.Set<java.lang.String> getPhysicalCameraIds();
-    method @Nullable public android.hardware.camera2.params.RecommendedStreamConfigurationMap getRecommendedStreamConfigurationMap(int);
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AE_AVAILABLE_ANTIBANDING_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AE_AVAILABLE_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Range<java.lang.Integer>[]> CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Range<java.lang.Integer>> CONTROL_AE_COMPENSATION_RANGE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Rational> CONTROL_AE_COMPENSATION_STEP;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Boolean> CONTROL_AE_LOCK_AVAILABLE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AF_AVAILABLE_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AVAILABLE_EFFECTS;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.Capability[]> CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_CAPABILITIES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AVAILABLE_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AVAILABLE_SCENE_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> CONTROL_AWB_AVAILABLE_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Boolean> CONTROL_AWB_LOCK_AVAILABLE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> CONTROL_MAX_REGIONS_AE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> CONTROL_MAX_REGIONS_AF;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> CONTROL_MAX_REGIONS_AWB;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Range<java.lang.Integer>> CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Range<java.lang.Float>> CONTROL_ZOOM_RATIO_RANGE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Boolean> DEPTH_DEPTH_IS_EXCLUSIVE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> DISTORTION_CORRECTION_AVAILABLE_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> EDGE_AVAILABLE_EDGE_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Boolean> FLASH_INFO_AVAILABLE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> INFO_SUPPORTED_HARDWARE_LEVEL;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.String> INFO_VERSION;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Size[]> JPEG_AVAILABLE_THUMBNAIL_SIZES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_DISTORTION;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> LENS_FACING;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_INFO_AVAILABLE_APERTURES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_INFO_AVAILABLE_FILTER_DENSITIES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_INFO_AVAILABLE_FOCAL_LENGTHS;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> LENS_INFO_FOCUS_DISTANCE_CALIBRATION;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Float> LENS_INFO_HYPERFOCAL_DISTANCE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Float> LENS_INFO_MINIMUM_FOCUS_DISTANCE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_INTRINSIC_CALIBRATION;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> LENS_POSE_REFERENCE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_POSE_ROTATION;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_POSE_TRANSLATION;
-    field @Deprecated @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<float[]> LENS_RADIAL_DISTORTION;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> REPROCESS_MAX_CAPTURE_STALL;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> REQUEST_AVAILABLE_CAPABILITIES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> REQUEST_MAX_NUM_INPUT_STREAMS;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> REQUEST_MAX_NUM_OUTPUT_PROC;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> REQUEST_MAX_NUM_OUTPUT_PROC_STALLING;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> REQUEST_MAX_NUM_OUTPUT_RAW;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> REQUEST_PARTIAL_RESULT_COUNT;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Byte> REQUEST_PIPELINE_MAX_DEPTH;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Float> SCALER_AVAILABLE_MAX_DIGITAL_ZOOM;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> SCALER_CROPPING_TYPE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.MandatoryStreamCombination[]> SCALER_MANDATORY_CONCURRENT_STREAM_COMBINATIONS;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.MandatoryStreamCombination[]> SCALER_MANDATORY_STREAM_COMBINATIONS;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.StreamConfigurationMap> SCALER_STREAM_CONFIGURATION_MAP;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> SENSOR_AVAILABLE_TEST_PATTERN_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.BlackLevelPattern> SENSOR_BLACK_LEVEL_PATTERN;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.ColorSpaceTransform> SENSOR_CALIBRATION_TRANSFORM1;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.ColorSpaceTransform> SENSOR_CALIBRATION_TRANSFORM2;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.ColorSpaceTransform> SENSOR_COLOR_TRANSFORM1;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.ColorSpaceTransform> SENSOR_COLOR_TRANSFORM2;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.ColorSpaceTransform> SENSOR_FORWARD_MATRIX1;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.hardware.camera2.params.ColorSpaceTransform> SENSOR_FORWARD_MATRIX2;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.graphics.Rect> SENSOR_INFO_ACTIVE_ARRAY_SIZE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> SENSOR_INFO_COLOR_FILTER_ARRANGEMENT;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Range<java.lang.Long>> SENSOR_INFO_EXPOSURE_TIME_RANGE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Boolean> SENSOR_INFO_LENS_SHADING_APPLIED;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Long> SENSOR_INFO_MAX_FRAME_DURATION;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.SizeF> SENSOR_INFO_PHYSICAL_SIZE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Size> SENSOR_INFO_PIXEL_ARRAY_SIZE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.graphics.Rect> SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Range<java.lang.Integer>> SENSOR_INFO_SENSITIVITY_RANGE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> SENSOR_INFO_TIMESTAMP_SOURCE;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> SENSOR_INFO_WHITE_LEVEL;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> SENSOR_MAX_ANALOG_SENSITIVITY;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.graphics.Rect[]> SENSOR_OPTICAL_BLACK_REGIONS;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> SENSOR_ORIENTATION;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> SENSOR_REFERENCE_ILLUMINANT1;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Byte> SENSOR_REFERENCE_ILLUMINANT2;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> SHADING_AVAILABLE_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<boolean[]> STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> STATISTICS_INFO_AVAILABLE_OIS_DATA_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> STATISTICS_INFO_MAX_FACE_COUNT;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> SYNC_MAX_LATENCY;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<int[]> TONEMAP_AVAILABLE_TONE_MAP_MODES;
-    field @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<java.lang.Integer> TONEMAP_MAX_CURVE_POINTS;
-  }
-
-  public static final class CameraCharacteristics.Key<T> {
-    ctor public CameraCharacteristics.Key(@NonNull String, @NonNull Class<T>);
-    method @NonNull public String getName();
-  }
-
-  public abstract class CameraConstrainedHighSpeedCaptureSession extends android.hardware.camera2.CameraCaptureSession {
-    ctor public CameraConstrainedHighSpeedCaptureSession();
-    method @NonNull public abstract java.util.List<android.hardware.camera2.CaptureRequest> createHighSpeedRequestList(@NonNull android.hardware.camera2.CaptureRequest) throws android.hardware.camera2.CameraAccessException;
-  }
-
-  public abstract class CameraDevice implements java.lang.AutoCloseable {
-    method public abstract void close();
-    method @NonNull public abstract android.hardware.camera2.CaptureRequest.Builder createCaptureRequest(int) throws android.hardware.camera2.CameraAccessException;
-    method @NonNull public android.hardware.camera2.CaptureRequest.Builder createCaptureRequest(int, java.util.Set<java.lang.String>) throws android.hardware.camera2.CameraAccessException;
-    method @Deprecated public abstract void createCaptureSession(@NonNull java.util.List<android.view.Surface>, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
-    method public void createCaptureSession(android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException;
-    method @Deprecated public abstract void createCaptureSessionByOutputConfigurations(java.util.List<android.hardware.camera2.params.OutputConfiguration>, android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
-    method @Deprecated public abstract void createConstrainedHighSpeedCaptureSession(@NonNull java.util.List<android.view.Surface>, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
-    method @NonNull public abstract android.hardware.camera2.CaptureRequest.Builder createReprocessCaptureRequest(@NonNull android.hardware.camera2.TotalCaptureResult) throws android.hardware.camera2.CameraAccessException;
-    method @Deprecated public abstract void createReprocessableCaptureSession(@NonNull android.hardware.camera2.params.InputConfiguration, @NonNull java.util.List<android.view.Surface>, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
-    method @Deprecated public abstract void createReprocessableCaptureSessionByConfigurations(@NonNull android.hardware.camera2.params.InputConfiguration, @NonNull java.util.List<android.hardware.camera2.params.OutputConfiguration>, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
-    method public int getCameraAudioRestriction() throws android.hardware.camera2.CameraAccessException;
-    method @NonNull public abstract String getId();
-    method public boolean isSessionConfigurationSupported(@NonNull android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException;
-    method public void setCameraAudioRestriction(int) throws android.hardware.camera2.CameraAccessException;
-    field public static final int AUDIO_RESTRICTION_NONE = 0; // 0x0
-    field public static final int AUDIO_RESTRICTION_VIBRATION = 1; // 0x1
-    field public static final int AUDIO_RESTRICTION_VIBRATION_SOUND = 3; // 0x3
-    field public static final int TEMPLATE_MANUAL = 6; // 0x6
-    field public static final int TEMPLATE_PREVIEW = 1; // 0x1
-    field public static final int TEMPLATE_RECORD = 3; // 0x3
-    field public static final int TEMPLATE_STILL_CAPTURE = 2; // 0x2
-    field public static final int TEMPLATE_VIDEO_SNAPSHOT = 4; // 0x4
-    field public static final int TEMPLATE_ZERO_SHUTTER_LAG = 5; // 0x5
-  }
-
-  public abstract static class CameraDevice.StateCallback {
-    ctor public CameraDevice.StateCallback();
-    method public void onClosed(@NonNull android.hardware.camera2.CameraDevice);
-    method public abstract void onDisconnected(@NonNull android.hardware.camera2.CameraDevice);
-    method public abstract void onError(@NonNull android.hardware.camera2.CameraDevice, int);
-    method public abstract void onOpened(@NonNull android.hardware.camera2.CameraDevice);
-    field public static final int ERROR_CAMERA_DEVICE = 4; // 0x4
-    field public static final int ERROR_CAMERA_DISABLED = 3; // 0x3
-    field public static final int ERROR_CAMERA_IN_USE = 1; // 0x1
-    field public static final int ERROR_CAMERA_SERVICE = 5; // 0x5
-    field public static final int ERROR_MAX_CAMERAS_IN_USE = 2; // 0x2
-  }
-
-  public final class CameraManager {
-    method @NonNull public android.hardware.camera2.CameraCharacteristics getCameraCharacteristics(@NonNull String) throws android.hardware.camera2.CameraAccessException;
-    method @NonNull public String[] getCameraIdList() throws android.hardware.camera2.CameraAccessException;
-    method @NonNull public java.util.Set<java.util.Set<java.lang.String>> getConcurrentCameraIds() throws android.hardware.camera2.CameraAccessException;
-    method @RequiresPermission(android.Manifest.permission.CAMERA) public boolean isConcurrentSessionConfigurationSupported(@NonNull java.util.Map<java.lang.String,android.hardware.camera2.params.SessionConfiguration>) throws android.hardware.camera2.CameraAccessException;
-    method @RequiresPermission(android.Manifest.permission.CAMERA) public void openCamera(@NonNull String, @NonNull android.hardware.camera2.CameraDevice.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
-    method @RequiresPermission(android.Manifest.permission.CAMERA) public void openCamera(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraDevice.StateCallback) throws android.hardware.camera2.CameraAccessException;
-    method public void registerAvailabilityCallback(@NonNull android.hardware.camera2.CameraManager.AvailabilityCallback, @Nullable android.os.Handler);
-    method public void registerAvailabilityCallback(@NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraManager.AvailabilityCallback);
-    method public void registerTorchCallback(@NonNull android.hardware.camera2.CameraManager.TorchCallback, @Nullable android.os.Handler);
-    method public void registerTorchCallback(@NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraManager.TorchCallback);
-    method public void setTorchMode(@NonNull String, boolean) throws android.hardware.camera2.CameraAccessException;
-    method public void unregisterAvailabilityCallback(@NonNull android.hardware.camera2.CameraManager.AvailabilityCallback);
-    method public void unregisterTorchCallback(@NonNull android.hardware.camera2.CameraManager.TorchCallback);
-  }
-
-  public abstract static class CameraManager.AvailabilityCallback {
-    ctor public CameraManager.AvailabilityCallback();
-    method public void onCameraAccessPrioritiesChanged();
-    method public void onCameraAvailable(@NonNull String);
-    method public void onCameraUnavailable(@NonNull String);
-    method public void onPhysicalCameraAvailable(@NonNull String, @NonNull String);
-    method public void onPhysicalCameraUnavailable(@NonNull String, @NonNull String);
-  }
-
-  public abstract static class CameraManager.TorchCallback {
-    ctor public CameraManager.TorchCallback();
-    method public void onTorchModeChanged(@NonNull String, boolean);
-    method public void onTorchModeUnavailable(@NonNull String);
-  }
-
-  public abstract class CameraMetadata<TKey> {
-    method @NonNull public java.util.List<TKey> getKeys();
-    field public static final int COLOR_CORRECTION_ABERRATION_MODE_FAST = 1; // 0x1
-    field public static final int COLOR_CORRECTION_ABERRATION_MODE_HIGH_QUALITY = 2; // 0x2
-    field public static final int COLOR_CORRECTION_ABERRATION_MODE_OFF = 0; // 0x0
-    field public static final int COLOR_CORRECTION_MODE_FAST = 1; // 0x1
-    field public static final int COLOR_CORRECTION_MODE_HIGH_QUALITY = 2; // 0x2
-    field public static final int COLOR_CORRECTION_MODE_TRANSFORM_MATRIX = 0; // 0x0
-    field public static final int CONTROL_AE_ANTIBANDING_MODE_50HZ = 1; // 0x1
-    field public static final int CONTROL_AE_ANTIBANDING_MODE_60HZ = 2; // 0x2
-    field public static final int CONTROL_AE_ANTIBANDING_MODE_AUTO = 3; // 0x3
-    field public static final int CONTROL_AE_ANTIBANDING_MODE_OFF = 0; // 0x0
-    field public static final int CONTROL_AE_MODE_OFF = 0; // 0x0
-    field public static final int CONTROL_AE_MODE_ON = 1; // 0x1
-    field public static final int CONTROL_AE_MODE_ON_ALWAYS_FLASH = 3; // 0x3
-    field public static final int CONTROL_AE_MODE_ON_AUTO_FLASH = 2; // 0x2
-    field public static final int CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE = 4; // 0x4
-    field public static final int CONTROL_AE_MODE_ON_EXTERNAL_FLASH = 5; // 0x5
-    field public static final int CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL = 2; // 0x2
-    field public static final int CONTROL_AE_PRECAPTURE_TRIGGER_IDLE = 0; // 0x0
-    field public static final int CONTROL_AE_PRECAPTURE_TRIGGER_START = 1; // 0x1
-    field public static final int CONTROL_AE_STATE_CONVERGED = 2; // 0x2
-    field public static final int CONTROL_AE_STATE_FLASH_REQUIRED = 4; // 0x4
-    field public static final int CONTROL_AE_STATE_INACTIVE = 0; // 0x0
-    field public static final int CONTROL_AE_STATE_LOCKED = 3; // 0x3
-    field public static final int CONTROL_AE_STATE_PRECAPTURE = 5; // 0x5
-    field public static final int CONTROL_AE_STATE_SEARCHING = 1; // 0x1
-    field public static final int CONTROL_AF_MODE_AUTO = 1; // 0x1
-    field public static final int CONTROL_AF_MODE_CONTINUOUS_PICTURE = 4; // 0x4
-    field public static final int CONTROL_AF_MODE_CONTINUOUS_VIDEO = 3; // 0x3
-    field public static final int CONTROL_AF_MODE_EDOF = 5; // 0x5
-    field public static final int CONTROL_AF_MODE_MACRO = 2; // 0x2
-    field public static final int CONTROL_AF_MODE_OFF = 0; // 0x0
-    field public static final int CONTROL_AF_SCENE_CHANGE_DETECTED = 1; // 0x1
-    field public static final int CONTROL_AF_SCENE_CHANGE_NOT_DETECTED = 0; // 0x0
-    field public static final int CONTROL_AF_STATE_ACTIVE_SCAN = 3; // 0x3
-    field public static final int CONTROL_AF_STATE_FOCUSED_LOCKED = 4; // 0x4
-    field public static final int CONTROL_AF_STATE_INACTIVE = 0; // 0x0
-    field public static final int CONTROL_AF_STATE_NOT_FOCUSED_LOCKED = 5; // 0x5
-    field public static final int CONTROL_AF_STATE_PASSIVE_FOCUSED = 2; // 0x2
-    field public static final int CONTROL_AF_STATE_PASSIVE_SCAN = 1; // 0x1
-    field public static final int CONTROL_AF_STATE_PASSIVE_UNFOCUSED = 6; // 0x6
-    field public static final int CONTROL_AF_TRIGGER_CANCEL = 2; // 0x2
-    field public static final int CONTROL_AF_TRIGGER_IDLE = 0; // 0x0
-    field public static final int CONTROL_AF_TRIGGER_START = 1; // 0x1
-    field public static final int CONTROL_AWB_MODE_AUTO = 1; // 0x1
-    field public static final int CONTROL_AWB_MODE_CLOUDY_DAYLIGHT = 6; // 0x6
-    field public static final int CONTROL_AWB_MODE_DAYLIGHT = 5; // 0x5
-    field public static final int CONTROL_AWB_MODE_FLUORESCENT = 3; // 0x3
-    field public static final int CONTROL_AWB_MODE_INCANDESCENT = 2; // 0x2
-    field public static final int CONTROL_AWB_MODE_OFF = 0; // 0x0
-    field public static final int CONTROL_AWB_MODE_SHADE = 8; // 0x8
-    field public static final int CONTROL_AWB_MODE_TWILIGHT = 7; // 0x7
-    field public static final int CONTROL_AWB_MODE_WARM_FLUORESCENT = 4; // 0x4
-    field public static final int CONTROL_AWB_STATE_CONVERGED = 2; // 0x2
-    field public static final int CONTROL_AWB_STATE_INACTIVE = 0; // 0x0
-    field public static final int CONTROL_AWB_STATE_LOCKED = 3; // 0x3
-    field public static final int CONTROL_AWB_STATE_SEARCHING = 1; // 0x1
-    field public static final int CONTROL_CAPTURE_INTENT_CUSTOM = 0; // 0x0
-    field public static final int CONTROL_CAPTURE_INTENT_MANUAL = 6; // 0x6
-    field public static final int CONTROL_CAPTURE_INTENT_MOTION_TRACKING = 7; // 0x7
-    field public static final int CONTROL_CAPTURE_INTENT_PREVIEW = 1; // 0x1
-    field public static final int CONTROL_CAPTURE_INTENT_STILL_CAPTURE = 2; // 0x2
-    field public static final int CONTROL_CAPTURE_INTENT_VIDEO_RECORD = 3; // 0x3
-    field public static final int CONTROL_CAPTURE_INTENT_VIDEO_SNAPSHOT = 4; // 0x4
-    field public static final int CONTROL_CAPTURE_INTENT_ZERO_SHUTTER_LAG = 5; // 0x5
-    field public static final int CONTROL_EFFECT_MODE_AQUA = 8; // 0x8
-    field public static final int CONTROL_EFFECT_MODE_BLACKBOARD = 7; // 0x7
-    field public static final int CONTROL_EFFECT_MODE_MONO = 1; // 0x1
-    field public static final int CONTROL_EFFECT_MODE_NEGATIVE = 2; // 0x2
-    field public static final int CONTROL_EFFECT_MODE_OFF = 0; // 0x0
-    field public static final int CONTROL_EFFECT_MODE_POSTERIZE = 5; // 0x5
-    field public static final int CONTROL_EFFECT_MODE_SEPIA = 4; // 0x4
-    field public static final int CONTROL_EFFECT_MODE_SOLARIZE = 3; // 0x3
-    field public static final int CONTROL_EFFECT_MODE_WHITEBOARD = 6; // 0x6
-    field public static final int CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUS = 2; // 0x2
-    field public static final int CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTURE = 1; // 0x1
-    field public static final int CONTROL_EXTENDED_SCENE_MODE_DISABLED = 0; // 0x0
-    field public static final int CONTROL_MODE_AUTO = 1; // 0x1
-    field public static final int CONTROL_MODE_OFF = 0; // 0x0
-    field public static final int CONTROL_MODE_OFF_KEEP_STATE = 3; // 0x3
-    field public static final int CONTROL_MODE_USE_EXTENDED_SCENE_MODE = 4; // 0x4
-    field public static final int CONTROL_MODE_USE_SCENE_MODE = 2; // 0x2
-    field public static final int CONTROL_SCENE_MODE_ACTION = 2; // 0x2
-    field public static final int CONTROL_SCENE_MODE_BARCODE = 16; // 0x10
-    field public static final int CONTROL_SCENE_MODE_BEACH = 8; // 0x8
-    field public static final int CONTROL_SCENE_MODE_CANDLELIGHT = 15; // 0xf
-    field public static final int CONTROL_SCENE_MODE_DISABLED = 0; // 0x0
-    field public static final int CONTROL_SCENE_MODE_FACE_PRIORITY = 1; // 0x1
-    field public static final int CONTROL_SCENE_MODE_FIREWORKS = 12; // 0xc
-    field public static final int CONTROL_SCENE_MODE_HDR = 18; // 0x12
-    field @Deprecated public static final int CONTROL_SCENE_MODE_HIGH_SPEED_VIDEO = 17; // 0x11
-    field public static final int CONTROL_SCENE_MODE_LANDSCAPE = 4; // 0x4
-    field public static final int CONTROL_SCENE_MODE_NIGHT = 5; // 0x5
-    field public static final int CONTROL_SCENE_MODE_NIGHT_PORTRAIT = 6; // 0x6
-    field public static final int CONTROL_SCENE_MODE_PARTY = 14; // 0xe
-    field public static final int CONTROL_SCENE_MODE_PORTRAIT = 3; // 0x3
-    field public static final int CONTROL_SCENE_MODE_SNOW = 9; // 0x9
-    field public static final int CONTROL_SCENE_MODE_SPORTS = 13; // 0xd
-    field public static final int CONTROL_SCENE_MODE_STEADYPHOTO = 11; // 0xb
-    field public static final int CONTROL_SCENE_MODE_SUNSET = 10; // 0xa
-    field public static final int CONTROL_SCENE_MODE_THEATRE = 7; // 0x7
-    field public static final int CONTROL_VIDEO_STABILIZATION_MODE_OFF = 0; // 0x0
-    field public static final int CONTROL_VIDEO_STABILIZATION_MODE_ON = 1; // 0x1
-    field public static final int DISTORTION_CORRECTION_MODE_FAST = 1; // 0x1
-    field public static final int DISTORTION_CORRECTION_MODE_HIGH_QUALITY = 2; // 0x2
-    field public static final int DISTORTION_CORRECTION_MODE_OFF = 0; // 0x0
-    field public static final int EDGE_MODE_FAST = 1; // 0x1
-    field public static final int EDGE_MODE_HIGH_QUALITY = 2; // 0x2
-    field public static final int EDGE_MODE_OFF = 0; // 0x0
-    field public static final int EDGE_MODE_ZERO_SHUTTER_LAG = 3; // 0x3
-    field public static final int FLASH_MODE_OFF = 0; // 0x0
-    field public static final int FLASH_MODE_SINGLE = 1; // 0x1
-    field public static final int FLASH_MODE_TORCH = 2; // 0x2
-    field public static final int FLASH_STATE_CHARGING = 1; // 0x1
-    field public static final int FLASH_STATE_FIRED = 3; // 0x3
-    field public static final int FLASH_STATE_PARTIAL = 4; // 0x4
-    field public static final int FLASH_STATE_READY = 2; // 0x2
-    field public static final int FLASH_STATE_UNAVAILABLE = 0; // 0x0
-    field public static final int HOT_PIXEL_MODE_FAST = 1; // 0x1
-    field public static final int HOT_PIXEL_MODE_HIGH_QUALITY = 2; // 0x2
-    field public static final int HOT_PIXEL_MODE_OFF = 0; // 0x0
-    field public static final int INFO_SUPPORTED_HARDWARE_LEVEL_3 = 3; // 0x3
-    field public static final int INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL = 4; // 0x4
-    field public static final int INFO_SUPPORTED_HARDWARE_LEVEL_FULL = 1; // 0x1
-    field public static final int INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY = 2; // 0x2
-    field public static final int INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED = 0; // 0x0
-    field public static final int LENS_FACING_BACK = 1; // 0x1
-    field public static final int LENS_FACING_EXTERNAL = 2; // 0x2
-    field public static final int LENS_FACING_FRONT = 0; // 0x0
-    field public static final int LENS_INFO_FOCUS_DISTANCE_CALIBRATION_APPROXIMATE = 1; // 0x1
-    field public static final int LENS_INFO_FOCUS_DISTANCE_CALIBRATION_CALIBRATED = 2; // 0x2
-    field public static final int LENS_INFO_FOCUS_DISTANCE_CALIBRATION_UNCALIBRATED = 0; // 0x0
-    field public static final int LENS_OPTICAL_STABILIZATION_MODE_OFF = 0; // 0x0
-    field public static final int LENS_OPTICAL_STABILIZATION_MODE_ON = 1; // 0x1
-    field public static final int LENS_POSE_REFERENCE_GYROSCOPE = 1; // 0x1
-    field public static final int LENS_POSE_REFERENCE_PRIMARY_CAMERA = 0; // 0x0
-    field public static final int LENS_POSE_REFERENCE_UNDEFINED = 2; // 0x2
-    field public static final int LENS_STATE_MOVING = 1; // 0x1
-    field public static final int LENS_STATE_STATIONARY = 0; // 0x0
-    field public static final int LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE = 0; // 0x0
-    field public static final int LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED = 1; // 0x1
-    field public static final int NOISE_REDUCTION_MODE_FAST = 1; // 0x1
-    field public static final int NOISE_REDUCTION_MODE_HIGH_QUALITY = 2; // 0x2
-    field public static final int NOISE_REDUCTION_MODE_MINIMAL = 3; // 0x3
-    field public static final int NOISE_REDUCTION_MODE_OFF = 0; // 0x0
-    field public static final int NOISE_REDUCTION_MODE_ZERO_SHUTTER_LAG = 4; // 0x4
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE = 0; // 0x0
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_BURST_CAPTURE = 6; // 0x6
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_CONSTRAINED_HIGH_SPEED_VIDEO = 9; // 0x9
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_DEPTH_OUTPUT = 8; // 0x8
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA = 11; // 0xb
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING = 2; // 0x2
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR = 1; // 0x1
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_MONOCHROME = 12; // 0xc
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_MOTION_TRACKING = 10; // 0xa
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_OFFLINE_PROCESSING = 15; // 0xf
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_PRIVATE_REPROCESSING = 4; // 0x4
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_RAW = 3; // 0x3
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_READ_SENSOR_SETTINGS = 5; // 0x5
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_SECURE_IMAGE_DATA = 13; // 0xd
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_SYSTEM_CAMERA = 14; // 0xe
-    field public static final int REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING = 7; // 0x7
-    field public static final int SCALER_CROPPING_TYPE_CENTER_ONLY = 0; // 0x0
-    field public static final int SCALER_CROPPING_TYPE_FREEFORM = 1; // 0x1
-    field public static final int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_BGGR = 3; // 0x3
-    field public static final int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GBRG = 2; // 0x2
-    field public static final int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GRBG = 1; // 0x1
-    field public static final int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_MONO = 5; // 0x5
-    field public static final int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_NIR = 6; // 0x6
-    field public static final int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGB = 4; // 0x4
-    field public static final int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGGB = 0; // 0x0
-    field public static final int SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME = 1; // 0x1
-    field public static final int SENSOR_INFO_TIMESTAMP_SOURCE_UNKNOWN = 0; // 0x0
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_CLOUDY_WEATHER = 10; // 0xa
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_COOL_WHITE_FLUORESCENT = 14; // 0xe
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_D50 = 23; // 0x17
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_D55 = 20; // 0x14
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_D65 = 21; // 0x15
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_D75 = 22; // 0x16
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT = 1; // 0x1
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT_FLUORESCENT = 12; // 0xc
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_DAY_WHITE_FLUORESCENT = 13; // 0xd
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_FINE_WEATHER = 9; // 0x9
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_FLASH = 4; // 0x4
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_FLUORESCENT = 2; // 0x2
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_ISO_STUDIO_TUNGSTEN = 24; // 0x18
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_SHADE = 11; // 0xb
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_STANDARD_A = 17; // 0x11
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_STANDARD_B = 18; // 0x12
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_STANDARD_C = 19; // 0x13
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_TUNGSTEN = 3; // 0x3
-    field public static final int SENSOR_REFERENCE_ILLUMINANT1_WHITE_FLUORESCENT = 15; // 0xf
-    field public static final int SENSOR_TEST_PATTERN_MODE_COLOR_BARS = 2; // 0x2
-    field public static final int SENSOR_TEST_PATTERN_MODE_COLOR_BARS_FADE_TO_GRAY = 3; // 0x3
-    field public static final int SENSOR_TEST_PATTERN_MODE_CUSTOM1 = 256; // 0x100
-    field public static final int SENSOR_TEST_PATTERN_MODE_OFF = 0; // 0x0
-    field public static final int SENSOR_TEST_PATTERN_MODE_PN9 = 4; // 0x4
-    field public static final int SENSOR_TEST_PATTERN_MODE_SOLID_COLOR = 1; // 0x1
-    field public static final int SHADING_MODE_FAST = 1; // 0x1
-    field public static final int SHADING_MODE_HIGH_QUALITY = 2; // 0x2
-    field public static final int SHADING_MODE_OFF = 0; // 0x0
-    field public static final int STATISTICS_FACE_DETECT_MODE_FULL = 2; // 0x2
-    field public static final int STATISTICS_FACE_DETECT_MODE_OFF = 0; // 0x0
-    field public static final int STATISTICS_FACE_DETECT_MODE_SIMPLE = 1; // 0x1
-    field public static final int STATISTICS_LENS_SHADING_MAP_MODE_OFF = 0; // 0x0
-    field public static final int STATISTICS_LENS_SHADING_MAP_MODE_ON = 1; // 0x1
-    field public static final int STATISTICS_OIS_DATA_MODE_OFF = 0; // 0x0
-    field public static final int STATISTICS_OIS_DATA_MODE_ON = 1; // 0x1
-    field public static final int STATISTICS_SCENE_FLICKER_50HZ = 1; // 0x1
-    field public static final int STATISTICS_SCENE_FLICKER_60HZ = 2; // 0x2
-    field public static final int STATISTICS_SCENE_FLICKER_NONE = 0; // 0x0
-    field public static final int SYNC_MAX_LATENCY_PER_FRAME_CONTROL = 0; // 0x0
-    field public static final int SYNC_MAX_LATENCY_UNKNOWN = -1; // 0xffffffff
-    field public static final int TONEMAP_MODE_CONTRAST_CURVE = 0; // 0x0
-    field public static final int TONEMAP_MODE_FAST = 1; // 0x1
-    field public static final int TONEMAP_MODE_GAMMA_VALUE = 3; // 0x3
-    field public static final int TONEMAP_MODE_HIGH_QUALITY = 2; // 0x2
-    field public static final int TONEMAP_MODE_PRESET_CURVE = 4; // 0x4
-    field public static final int TONEMAP_PRESET_CURVE_REC709 = 1; // 0x1
-    field public static final int TONEMAP_PRESET_CURVE_SRGB = 0; // 0x0
-  }
-
-  public abstract class CameraOfflineSession extends android.hardware.camera2.CameraCaptureSession {
-    ctor public CameraOfflineSession();
-  }
-
-  public abstract static class CameraOfflineSession.CameraOfflineSessionCallback {
-    ctor public CameraOfflineSession.CameraOfflineSessionCallback();
-    method public abstract void onClosed(@NonNull android.hardware.camera2.CameraOfflineSession);
-    method public abstract void onError(@NonNull android.hardware.camera2.CameraOfflineSession, int);
-    method public abstract void onIdle(@NonNull android.hardware.camera2.CameraOfflineSession);
-    method public abstract void onReady(@NonNull android.hardware.camera2.CameraOfflineSession);
-    method public abstract void onSwitchFailed(@NonNull android.hardware.camera2.CameraOfflineSession);
-    field public static final int STATUS_INTERNAL_ERROR = 0; // 0x0
-  }
-
-  public class CaptureFailure {
-    method public long getFrameNumber();
-    method @Nullable public String getPhysicalCameraId();
-    method public int getReason();
-    method @NonNull public android.hardware.camera2.CaptureRequest getRequest();
-    method public int getSequenceId();
-    method public boolean wasImageCaptured();
-    field public static final int REASON_ERROR = 0; // 0x0
-    field public static final int REASON_FLUSHED = 1; // 0x1
-  }
-
-  public final class CaptureRequest extends android.hardware.camera2.CameraMetadata<android.hardware.camera2.CaptureRequest.Key<?>> implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public <T> T get(android.hardware.camera2.CaptureRequest.Key<T>);
-    method @NonNull public java.util.List<android.hardware.camera2.CaptureRequest.Key<?>> getKeys();
-    method @Nullable public Object getTag();
-    method public boolean isReprocess();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Boolean> BLACK_LEVEL_LOCK;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> COLOR_CORRECTION_ABERRATION_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.hardware.camera2.params.RggbChannelVector> COLOR_CORRECTION_GAINS;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> COLOR_CORRECTION_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.hardware.camera2.params.ColorSpaceTransform> COLOR_CORRECTION_TRANSFORM;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_AE_ANTIBANDING_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_AE_EXPOSURE_COMPENSATION;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Boolean> CONTROL_AE_LOCK;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_AE_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_AE_PRECAPTURE_TRIGGER;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.hardware.camera2.params.MeteringRectangle[]> CONTROL_AE_REGIONS;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.util.Range<java.lang.Integer>> CONTROL_AE_TARGET_FPS_RANGE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_AF_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.hardware.camera2.params.MeteringRectangle[]> CONTROL_AF_REGIONS;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_AF_TRIGGER;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Boolean> CONTROL_AWB_LOCK;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_AWB_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.hardware.camera2.params.MeteringRectangle[]> CONTROL_AWB_REGIONS;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_CAPTURE_INTENT;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_EFFECT_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Boolean> CONTROL_ENABLE_ZSL;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_EXTENDED_SCENE_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_POST_RAW_SENSITIVITY_BOOST;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_SCENE_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> CONTROL_VIDEO_STABILIZATION_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> CONTROL_ZOOM_RATIO;
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.camera2.CaptureRequest> CREATOR;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> DISTORTION_CORRECTION_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> EDGE_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> FLASH_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> HOT_PIXEL_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.location.Location> JPEG_GPS_LOCATION;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> JPEG_ORIENTATION;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Byte> JPEG_QUALITY;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Byte> JPEG_THUMBNAIL_QUALITY;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.util.Size> JPEG_THUMBNAIL_SIZE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> LENS_APERTURE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> LENS_FILTER_DENSITY;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> LENS_FOCAL_LENGTH;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> LENS_FOCUS_DISTANCE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> LENS_OPTICAL_STABILIZATION_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> NOISE_REDUCTION_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> REPROCESS_EFFECTIVE_EXPOSURE_FACTOR;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.graphics.Rect> SCALER_CROP_REGION;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Long> SENSOR_EXPOSURE_TIME;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Long> SENSOR_FRAME_DURATION;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> SENSOR_SENSITIVITY;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<int[]> SENSOR_TEST_PATTERN_DATA;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> SENSOR_TEST_PATTERN_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> SHADING_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> STATISTICS_FACE_DETECT_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Boolean> STATISTICS_HOT_PIXEL_MAP_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> STATISTICS_LENS_SHADING_MAP_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> STATISTICS_OIS_DATA_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.hardware.camera2.params.TonemapCurve> TONEMAP_CURVE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> TONEMAP_GAMMA;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> TONEMAP_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> TONEMAP_PRESET_CURVE;
-  }
-
-  public static final class CaptureRequest.Builder {
-    method public void addTarget(@NonNull android.view.Surface);
-    method @NonNull public android.hardware.camera2.CaptureRequest build();
-    method @Nullable public <T> T get(android.hardware.camera2.CaptureRequest.Key<T>);
-    method @Nullable public <T> T getPhysicalCameraKey(android.hardware.camera2.CaptureRequest.Key<T>, @NonNull String);
-    method public void removeTarget(@NonNull android.view.Surface);
-    method public <T> void set(@NonNull android.hardware.camera2.CaptureRequest.Key<T>, T);
-    method public <T> android.hardware.camera2.CaptureRequest.Builder setPhysicalCameraKey(@NonNull android.hardware.camera2.CaptureRequest.Key<T>, T, @NonNull String);
-    method public void setTag(@Nullable Object);
-  }
-
-  public static final class CaptureRequest.Key<T> {
-    ctor public CaptureRequest.Key(@NonNull String, @NonNull Class<T>);
-    method @NonNull public String getName();
-  }
-
-  public class CaptureResult extends android.hardware.camera2.CameraMetadata<android.hardware.camera2.CaptureResult.Key<?>> {
-    method @Nullable public <T> T get(android.hardware.camera2.CaptureResult.Key<T>);
-    method public long getFrameNumber();
-    method @NonNull public java.util.List<android.hardware.camera2.CaptureResult.Key<?>> getKeys();
-    method @NonNull public android.hardware.camera2.CaptureRequest getRequest();
-    method public int getSequenceId();
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Boolean> BLACK_LEVEL_LOCK;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> COLOR_CORRECTION_ABERRATION_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.RggbChannelVector> COLOR_CORRECTION_GAINS;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> COLOR_CORRECTION_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.ColorSpaceTransform> COLOR_CORRECTION_TRANSFORM;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AE_ANTIBANDING_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AE_EXPOSURE_COMPENSATION;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Boolean> CONTROL_AE_LOCK;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AE_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AE_PRECAPTURE_TRIGGER;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.MeteringRectangle[]> CONTROL_AE_REGIONS;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AE_STATE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.util.Range<java.lang.Integer>> CONTROL_AE_TARGET_FPS_RANGE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AF_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.MeteringRectangle[]> CONTROL_AF_REGIONS;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AF_SCENE_CHANGE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AF_STATE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AF_TRIGGER;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Boolean> CONTROL_AWB_LOCK;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AWB_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.MeteringRectangle[]> CONTROL_AWB_REGIONS;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_AWB_STATE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_CAPTURE_INTENT;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_EFFECT_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Boolean> CONTROL_ENABLE_ZSL;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_EXTENDED_SCENE_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_POST_RAW_SENSITIVITY_BOOST;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_SCENE_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> CONTROL_VIDEO_STABILIZATION_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> CONTROL_ZOOM_RATIO;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> DISTORTION_CORRECTION_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> EDGE_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> FLASH_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> FLASH_STATE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> HOT_PIXEL_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.location.Location> JPEG_GPS_LOCATION;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> JPEG_ORIENTATION;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Byte> JPEG_QUALITY;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Byte> JPEG_THUMBNAIL_QUALITY;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.util.Size> JPEG_THUMBNAIL_SIZE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> LENS_APERTURE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<float[]> LENS_DISTORTION;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> LENS_FILTER_DENSITY;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> LENS_FOCAL_LENGTH;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> LENS_FOCUS_DISTANCE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.util.Pair<java.lang.Float,java.lang.Float>> LENS_FOCUS_RANGE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<float[]> LENS_INTRINSIC_CALIBRATION;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> LENS_OPTICAL_STABILIZATION_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<float[]> LENS_POSE_ROTATION;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<float[]> LENS_POSE_TRANSLATION;
-    field @Deprecated @NonNull public static final android.hardware.camera2.CaptureResult.Key<float[]> LENS_RADIAL_DISTORTION;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> LENS_STATE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.String> LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> NOISE_REDUCTION_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> REPROCESS_EFFECTIVE_EXPOSURE_FACTOR;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Byte> REQUEST_PIPELINE_DEPTH;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.graphics.Rect> SCALER_CROP_REGION;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<float[]> SENSOR_DYNAMIC_BLACK_LEVEL;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> SENSOR_DYNAMIC_WHITE_LEVEL;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Long> SENSOR_EXPOSURE_TIME;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Long> SENSOR_FRAME_DURATION;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> SENSOR_GREEN_SPLIT;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.util.Rational[]> SENSOR_NEUTRAL_COLOR_POINT;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.util.Pair<java.lang.Double,java.lang.Double>[]> SENSOR_NOISE_PROFILE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Long> SENSOR_ROLLING_SHUTTER_SKEW;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> SENSOR_SENSITIVITY;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<int[]> SENSOR_TEST_PATTERN_DATA;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> SENSOR_TEST_PATTERN_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Long> SENSOR_TIMESTAMP;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> SHADING_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.Face[]> STATISTICS_FACES;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> STATISTICS_FACE_DETECT_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.graphics.Point[]> STATISTICS_HOT_PIXEL_MAP;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Boolean> STATISTICS_HOT_PIXEL_MAP_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.LensShadingMap> STATISTICS_LENS_SHADING_CORRECTION_MAP;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> STATISTICS_LENS_SHADING_MAP_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> STATISTICS_OIS_DATA_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.OisSample[]> STATISTICS_OIS_SAMPLES;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> STATISTICS_SCENE_FLICKER;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.TonemapCurve> TONEMAP_CURVE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> TONEMAP_GAMMA;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> TONEMAP_MODE;
-    field @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> TONEMAP_PRESET_CURVE;
-  }
-
-  public static final class CaptureResult.Key<T> {
-    ctor public CaptureResult.Key(@NonNull String, @NonNull Class<T>);
-    method @NonNull public String getName();
-  }
-
-  public final class DngCreator implements java.lang.AutoCloseable {
-    ctor public DngCreator(@NonNull android.hardware.camera2.CameraCharacteristics, @NonNull android.hardware.camera2.CaptureResult);
-    method public void close();
-    method @NonNull public android.hardware.camera2.DngCreator setDescription(@NonNull String);
-    method @NonNull public android.hardware.camera2.DngCreator setLocation(@NonNull android.location.Location);
-    method @NonNull public android.hardware.camera2.DngCreator setOrientation(int);
-    method @NonNull public android.hardware.camera2.DngCreator setThumbnail(@NonNull android.graphics.Bitmap);
-    method @NonNull public android.hardware.camera2.DngCreator setThumbnail(@NonNull android.media.Image);
-    method public void writeByteBuffer(@NonNull java.io.OutputStream, @NonNull android.util.Size, @NonNull java.nio.ByteBuffer, @IntRange(from=0) long) throws java.io.IOException;
-    method public void writeImage(@NonNull java.io.OutputStream, @NonNull android.media.Image) throws java.io.IOException;
-    method public void writeInputStream(@NonNull java.io.OutputStream, @NonNull android.util.Size, @NonNull java.io.InputStream, @IntRange(from=0) long) throws java.io.IOException;
-    field public static final int MAX_THUMBNAIL_DIMENSION = 256; // 0x100
-  }
-
-  public final class TotalCaptureResult extends android.hardware.camera2.CaptureResult {
-    method @NonNull public java.util.List<android.hardware.camera2.CaptureResult> getPartialResults();
-    method public java.util.Map<java.lang.String,android.hardware.camera2.CaptureResult> getPhysicalCameraResults();
-  }
-
-}
-
-package android.hardware.camera2.params {
-
-  public final class BlackLevelPattern {
-    method public void copyTo(int[], int);
-    method public int getOffsetForIndex(int, int);
-    field public static final int COUNT = 4; // 0x4
-  }
-
-  public final class Capability {
-    method @NonNull public android.util.Size getMaxStreamingSize();
-    method public int getMode();
-    method @NonNull public android.util.Range<java.lang.Float> getZoomRatioRange();
-  }
-
-  public final class ColorSpaceTransform {
-    ctor public ColorSpaceTransform(android.util.Rational[]);
-    ctor public ColorSpaceTransform(int[]);
-    method public void copyElements(android.util.Rational[], int);
-    method public void copyElements(int[], int);
-    method public android.util.Rational getElement(int, int);
-  }
-
-  public final class Face {
-    method public android.graphics.Rect getBounds();
-    method public int getId();
-    method public android.graphics.Point getLeftEyePosition();
-    method public android.graphics.Point getMouthPosition();
-    method public android.graphics.Point getRightEyePosition();
-    method public int getScore();
-    field public static final int ID_UNSUPPORTED = -1; // 0xffffffff
-    field public static final int SCORE_MAX = 100; // 0x64
-    field public static final int SCORE_MIN = 1; // 0x1
-  }
-
-  public final class InputConfiguration {
-    ctor public InputConfiguration(int, int, int);
-    method public int getFormat();
-    method public int getHeight();
-    method public int getWidth();
-  }
-
-  public final class LensShadingMap {
-    method public void copyGainFactors(float[], int);
-    method public int getColumnCount();
-    method public float getGainFactor(int, int, int);
-    method public int getGainFactorCount();
-    method public android.hardware.camera2.params.RggbChannelVector getGainFactorVector(int, int);
-    method public int getRowCount();
-    field public static final float MINIMUM_GAIN_FACTOR = 1.0f;
-  }
-
-  public final class MandatoryStreamCombination {
-    method @NonNull public CharSequence getDescription();
-    method @NonNull public java.util.List<android.hardware.camera2.params.MandatoryStreamCombination.MandatoryStreamInformation> getStreamsInformation();
-    method public boolean isReprocessable();
-  }
-
-  public static final class MandatoryStreamCombination.MandatoryStreamInformation {
-    method @NonNull public java.util.List<android.util.Size> getAvailableSizes();
-    method public int getFormat();
-    method public boolean isInput();
-  }
-
-  public final class MeteringRectangle {
-    ctor public MeteringRectangle(int, int, int, int, int);
-    ctor public MeteringRectangle(android.graphics.Point, android.util.Size, int);
-    ctor public MeteringRectangle(android.graphics.Rect, int);
-    method public boolean equals(android.hardware.camera2.params.MeteringRectangle);
-    method public int getHeight();
-    method public int getMeteringWeight();
-    method public android.graphics.Rect getRect();
-    method public android.util.Size getSize();
-    method public android.graphics.Point getUpperLeftPoint();
-    method public int getWidth();
-    method public int getX();
-    method public int getY();
-    field public static final int METERING_WEIGHT_DONT_CARE = 0; // 0x0
-    field public static final int METERING_WEIGHT_MAX = 1000; // 0x3e8
-    field public static final int METERING_WEIGHT_MIN = 0; // 0x0
-  }
-
-  public final class OisSample {
-    ctor public OisSample(long, float, float);
-    method public long getTimestamp();
-    method public float getXshift();
-    method public float getYshift();
-  }
-
-  public final class OutputConfiguration implements android.os.Parcelable {
-    ctor public OutputConfiguration(@NonNull android.view.Surface);
-    ctor public OutputConfiguration(int, @NonNull android.view.Surface);
-    ctor public OutputConfiguration(@NonNull android.util.Size, @NonNull Class<T>);
-    method public void addSurface(@NonNull android.view.Surface);
-    method public int describeContents();
-    method public void enableSurfaceSharing();
-    method public int getMaxSharedSurfaceCount();
-    method @Nullable public android.view.Surface getSurface();
-    method public int getSurfaceGroupId();
-    method @NonNull public java.util.List<android.view.Surface> getSurfaces();
-    method public void removeSurface(@NonNull android.view.Surface);
-    method public void setPhysicalCameraId(@Nullable String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.camera2.params.OutputConfiguration> CREATOR;
-    field public static final int SURFACE_GROUP_ID_NONE = -1; // 0xffffffff
-  }
-
-  public final class RecommendedStreamConfigurationMap {
-    method @Nullable public java.util.Set<android.util.Size> getHighResolutionOutputSizes(int);
-    method @Nullable public java.util.Set<android.util.Range<java.lang.Integer>> getHighSpeedVideoFpsRanges();
-    method @Nullable public java.util.Set<android.util.Range<java.lang.Integer>> getHighSpeedVideoFpsRangesFor(@NonNull android.util.Size);
-    method @Nullable public java.util.Set<android.util.Size> getHighSpeedVideoSizes();
-    method @Nullable public java.util.Set<android.util.Size> getHighSpeedVideoSizesFor(@NonNull android.util.Range<java.lang.Integer>);
-    method @Nullable public java.util.Set<java.lang.Integer> getInputFormats();
-    method @Nullable public java.util.Set<android.util.Size> getInputSizes(int);
-    method @NonNull public java.util.Set<java.lang.Integer> getOutputFormats();
-    method @IntRange(from=0) public long getOutputMinFrameDuration(int, @NonNull android.util.Size);
-    method @IntRange(from=0) public <T> long getOutputMinFrameDuration(@NonNull Class<T>, @NonNull android.util.Size);
-    method @Nullable public java.util.Set<android.util.Size> getOutputSizes(int);
-    method @Nullable public <T> java.util.Set<android.util.Size> getOutputSizes(@NonNull Class<T>);
-    method @IntRange(from=0) public long getOutputStallDuration(int, @NonNull android.util.Size);
-    method @IntRange(from=0) public <T> long getOutputStallDuration(@NonNull Class<T>, @NonNull android.util.Size);
-    method public int getRecommendedUseCase();
-    method @Nullable public java.util.Set<java.lang.Integer> getValidOutputFormatsForInput(int);
-    method public boolean isOutputSupportedFor(int);
-    method public boolean isOutputSupportedFor(@NonNull android.view.Surface);
-    field public static final int USECASE_LOW_LATENCY_SNAPSHOT = 6; // 0x6
-    field public static final int USECASE_PREVIEW = 0; // 0x0
-    field public static final int USECASE_RAW = 5; // 0x5
-    field public static final int USECASE_RECORD = 1; // 0x1
-    field public static final int USECASE_SNAPSHOT = 3; // 0x3
-    field public static final int USECASE_VIDEO_SNAPSHOT = 2; // 0x2
-    field public static final int USECASE_ZSL = 4; // 0x4
-  }
-
-  public final class RggbChannelVector {
-    ctor public RggbChannelVector(float, float, float, float);
-    method public void copyTo(float[], int);
-    method public float getBlue();
-    method public float getComponent(int);
-    method public float getGreenEven();
-    method public float getGreenOdd();
-    method public float getRed();
-    field public static final int BLUE = 3; // 0x3
-    field public static final int COUNT = 4; // 0x4
-    field public static final int GREEN_EVEN = 1; // 0x1
-    field public static final int GREEN_ODD = 2; // 0x2
-    field public static final int RED = 0; // 0x0
-  }
-
-  public final class SessionConfiguration implements android.os.Parcelable {
-    ctor public SessionConfiguration(int, @NonNull java.util.List<android.hardware.camera2.params.OutputConfiguration>, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback);
-    method public int describeContents();
-    method public java.util.concurrent.Executor getExecutor();
-    method public android.hardware.camera2.params.InputConfiguration getInputConfiguration();
-    method public java.util.List<android.hardware.camera2.params.OutputConfiguration> getOutputConfigurations();
-    method public android.hardware.camera2.CaptureRequest getSessionParameters();
-    method public int getSessionType();
-    method public android.hardware.camera2.CameraCaptureSession.StateCallback getStateCallback();
-    method public void setInputConfiguration(@NonNull android.hardware.camera2.params.InputConfiguration);
-    method public void setSessionParameters(android.hardware.camera2.CaptureRequest);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.camera2.params.SessionConfiguration> CREATOR;
-    field public static final int SESSION_HIGH_SPEED = 1; // 0x1
-    field public static final int SESSION_REGULAR = 0; // 0x0
-  }
-
-  public final class StreamConfigurationMap {
-    method public android.util.Size[] getHighResolutionOutputSizes(int);
-    method public android.util.Range<java.lang.Integer>[] getHighSpeedVideoFpsRanges();
-    method public android.util.Range<java.lang.Integer>[] getHighSpeedVideoFpsRangesFor(android.util.Size);
-    method public android.util.Size[] getHighSpeedVideoSizes();
-    method public android.util.Size[] getHighSpeedVideoSizesFor(android.util.Range<java.lang.Integer>);
-    method public int[] getInputFormats();
-    method public android.util.Size[] getInputSizes(int);
-    method public int[] getOutputFormats();
-    method public long getOutputMinFrameDuration(int, android.util.Size);
-    method public <T> long getOutputMinFrameDuration(Class<T>, android.util.Size);
-    method public <T> android.util.Size[] getOutputSizes(Class<T>);
-    method public android.util.Size[] getOutputSizes(int);
-    method public long getOutputStallDuration(int, android.util.Size);
-    method public <T> long getOutputStallDuration(Class<T>, android.util.Size);
-    method public int[] getValidOutputFormatsForInput(int);
-    method public boolean isOutputSupportedFor(int);
-    method public static <T> boolean isOutputSupportedFor(Class<T>);
-    method public boolean isOutputSupportedFor(android.view.Surface);
-  }
-
-  public final class TonemapCurve {
-    ctor public TonemapCurve(float[], float[], float[]);
-    method public void copyColorCurve(int, float[], int);
-    method public android.graphics.PointF getPoint(int, int);
-    method public int getPointCount(int);
-    field public static final int CHANNEL_BLUE = 2; // 0x2
-    field public static final int CHANNEL_GREEN = 1; // 0x1
-    field public static final int CHANNEL_RED = 0; // 0x0
-    field public static final float LEVEL_BLACK = 0.0f;
-    field public static final float LEVEL_WHITE = 1.0f;
-    field public static final int POINT_SIZE = 2; // 0x2
-  }
-
-}
-
-package android.hardware.display {
-
-  public final class DisplayManager {
-    method public android.hardware.display.VirtualDisplay createVirtualDisplay(@NonNull String, int, int, int, @Nullable android.view.Surface, int);
-    method public android.hardware.display.VirtualDisplay createVirtualDisplay(@NonNull String, int, int, int, @Nullable android.view.Surface, int, @Nullable android.hardware.display.VirtualDisplay.Callback, @Nullable android.os.Handler);
-    method public android.view.Display getDisplay(int);
-    method public android.view.Display[] getDisplays();
-    method public android.view.Display[] getDisplays(String);
-    method public void registerDisplayListener(android.hardware.display.DisplayManager.DisplayListener, android.os.Handler);
-    method public void unregisterDisplayListener(android.hardware.display.DisplayManager.DisplayListener);
-    field public static final String DISPLAY_CATEGORY_PRESENTATION = "android.hardware.display.category.PRESENTATION";
-    field public static final int VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR = 16; // 0x10
-    field public static final int VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY = 8; // 0x8
-    field public static final int VIRTUAL_DISPLAY_FLAG_PRESENTATION = 2; // 0x2
-    field public static final int VIRTUAL_DISPLAY_FLAG_PUBLIC = 1; // 0x1
-    field public static final int VIRTUAL_DISPLAY_FLAG_SECURE = 4; // 0x4
-  }
-
-  public static interface DisplayManager.DisplayListener {
-    method public void onDisplayAdded(int);
-    method public void onDisplayChanged(int);
-    method public void onDisplayRemoved(int);
-  }
-
-  public final class VirtualDisplay {
-    method public android.view.Display getDisplay();
-    method public android.view.Surface getSurface();
-    method public void release();
-    method public void resize(int, int, int);
-    method public void setSurface(android.view.Surface);
-  }
-
-  public abstract static class VirtualDisplay.Callback {
-    ctor public VirtualDisplay.Callback();
-    method public void onPaused();
-    method public void onResumed();
-    method public void onStopped();
-  }
-
-}
-
-package android.hardware.fingerprint {
-
-  @Deprecated public class FingerprintManager {
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.USE_BIOMETRIC, android.Manifest.permission.USE_FINGERPRINT}) public void authenticate(@Nullable android.hardware.fingerprint.FingerprintManager.CryptoObject, @Nullable android.os.CancellationSignal, int, @NonNull android.hardware.fingerprint.FingerprintManager.AuthenticationCallback, @Nullable android.os.Handler);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public boolean hasEnrolledFingerprints();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public boolean isHardwareDetected();
-    field public static final int FINGERPRINT_ACQUIRED_GOOD = 0; // 0x0
-    field public static final int FINGERPRINT_ACQUIRED_IMAGER_DIRTY = 3; // 0x3
-    field public static final int FINGERPRINT_ACQUIRED_INSUFFICIENT = 2; // 0x2
-    field public static final int FINGERPRINT_ACQUIRED_PARTIAL = 1; // 0x1
-    field public static final int FINGERPRINT_ACQUIRED_TOO_FAST = 5; // 0x5
-    field public static final int FINGERPRINT_ACQUIRED_TOO_SLOW = 4; // 0x4
-    field public static final int FINGERPRINT_ERROR_CANCELED = 5; // 0x5
-    field public static final int FINGERPRINT_ERROR_HW_NOT_PRESENT = 12; // 0xc
-    field public static final int FINGERPRINT_ERROR_HW_UNAVAILABLE = 1; // 0x1
-    field public static final int FINGERPRINT_ERROR_LOCKOUT = 7; // 0x7
-    field public static final int FINGERPRINT_ERROR_LOCKOUT_PERMANENT = 9; // 0x9
-    field public static final int FINGERPRINT_ERROR_NO_FINGERPRINTS = 11; // 0xb
-    field public static final int FINGERPRINT_ERROR_NO_SPACE = 4; // 0x4
-    field public static final int FINGERPRINT_ERROR_TIMEOUT = 3; // 0x3
-    field public static final int FINGERPRINT_ERROR_UNABLE_TO_PROCESS = 2; // 0x2
-    field public static final int FINGERPRINT_ERROR_USER_CANCELED = 10; // 0xa
-    field public static final int FINGERPRINT_ERROR_VENDOR = 8; // 0x8
-  }
-
-  @Deprecated public abstract static class FingerprintManager.AuthenticationCallback {
-    ctor @Deprecated public FingerprintManager.AuthenticationCallback();
-    method @Deprecated public void onAuthenticationError(int, CharSequence);
-    method @Deprecated public void onAuthenticationFailed();
-    method @Deprecated public void onAuthenticationHelp(int, CharSequence);
-    method @Deprecated public void onAuthenticationSucceeded(android.hardware.fingerprint.FingerprintManager.AuthenticationResult);
-  }
-
-  @Deprecated public static class FingerprintManager.AuthenticationResult {
-    method @Deprecated public android.hardware.fingerprint.FingerprintManager.CryptoObject getCryptoObject();
-  }
-
-  @Deprecated public static final class FingerprintManager.CryptoObject {
-    ctor @Deprecated public FingerprintManager.CryptoObject(@NonNull java.security.Signature);
-    ctor @Deprecated public FingerprintManager.CryptoObject(@NonNull javax.crypto.Cipher);
-    ctor @Deprecated public FingerprintManager.CryptoObject(@NonNull javax.crypto.Mac);
-    method @Deprecated public javax.crypto.Cipher getCipher();
-    method @Deprecated public javax.crypto.Mac getMac();
-    method @Deprecated public java.security.Signature getSignature();
-  }
-
-}
-
-package android.hardware.input {
-
-  public final class InputManager {
-    method public android.view.InputDevice getInputDevice(int);
-    method public int[] getInputDeviceIds();
-    method public void registerInputDeviceListener(android.hardware.input.InputManager.InputDeviceListener, android.os.Handler);
-    method public void unregisterInputDeviceListener(android.hardware.input.InputManager.InputDeviceListener);
-    method @Nullable public android.view.VerifiedInputEvent verifyInputEvent(@NonNull android.view.InputEvent);
-    field public static final String ACTION_QUERY_KEYBOARD_LAYOUTS = "android.hardware.input.action.QUERY_KEYBOARD_LAYOUTS";
-    field public static final String META_DATA_KEYBOARD_LAYOUTS = "android.hardware.input.metadata.KEYBOARD_LAYOUTS";
-  }
-
-  public static interface InputManager.InputDeviceListener {
-    method public void onInputDeviceAdded(int);
-    method public void onInputDeviceChanged(int);
-    method public void onInputDeviceRemoved(int);
-  }
-
-}
-
-package android.hardware.usb {
-
-  public class UsbAccessory implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getDescription();
-    method @NonNull public String getManufacturer();
-    method @NonNull public String getModel();
-    method @Nullable public String getSerial();
-    method @Nullable public String getUri();
-    method @Nullable public String getVersion();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.usb.UsbAccessory> CREATOR;
-  }
-
-  public class UsbConfiguration implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getId();
-    method @NonNull public android.hardware.usb.UsbInterface getInterface(int);
-    method public int getInterfaceCount();
-    method public int getMaxPower();
-    method @Nullable public String getName();
-    method public boolean isRemoteWakeup();
-    method public boolean isSelfPowered();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.usb.UsbConfiguration> CREATOR;
-  }
-
-  public final class UsbConstants {
-    ctor public UsbConstants();
-    field public static final int USB_CLASS_APP_SPEC = 254; // 0xfe
-    field public static final int USB_CLASS_AUDIO = 1; // 0x1
-    field public static final int USB_CLASS_CDC_DATA = 10; // 0xa
-    field public static final int USB_CLASS_COMM = 2; // 0x2
-    field public static final int USB_CLASS_CONTENT_SEC = 13; // 0xd
-    field public static final int USB_CLASS_CSCID = 11; // 0xb
-    field public static final int USB_CLASS_HID = 3; // 0x3
-    field public static final int USB_CLASS_HUB = 9; // 0x9
-    field public static final int USB_CLASS_MASS_STORAGE = 8; // 0x8
-    field public static final int USB_CLASS_MISC = 239; // 0xef
-    field public static final int USB_CLASS_PER_INTERFACE = 0; // 0x0
-    field public static final int USB_CLASS_PHYSICA = 5; // 0x5
-    field public static final int USB_CLASS_PRINTER = 7; // 0x7
-    field public static final int USB_CLASS_STILL_IMAGE = 6; // 0x6
-    field public static final int USB_CLASS_VENDOR_SPEC = 255; // 0xff
-    field public static final int USB_CLASS_VIDEO = 14; // 0xe
-    field public static final int USB_CLASS_WIRELESS_CONTROLLER = 224; // 0xe0
-    field public static final int USB_DIR_IN = 128; // 0x80
-    field public static final int USB_DIR_OUT = 0; // 0x0
-    field public static final int USB_ENDPOINT_DIR_MASK = 128; // 0x80
-    field public static final int USB_ENDPOINT_NUMBER_MASK = 15; // 0xf
-    field public static final int USB_ENDPOINT_XFERTYPE_MASK = 3; // 0x3
-    field public static final int USB_ENDPOINT_XFER_BULK = 2; // 0x2
-    field public static final int USB_ENDPOINT_XFER_CONTROL = 0; // 0x0
-    field public static final int USB_ENDPOINT_XFER_INT = 3; // 0x3
-    field public static final int USB_ENDPOINT_XFER_ISOC = 1; // 0x1
-    field public static final int USB_INTERFACE_SUBCLASS_BOOT = 1; // 0x1
-    field public static final int USB_SUBCLASS_VENDOR_SPEC = 255; // 0xff
-    field public static final int USB_TYPE_CLASS = 32; // 0x20
-    field public static final int USB_TYPE_MASK = 96; // 0x60
-    field public static final int USB_TYPE_RESERVED = 96; // 0x60
-    field public static final int USB_TYPE_STANDARD = 0; // 0x0
-    field public static final int USB_TYPE_VENDOR = 64; // 0x40
-  }
-
-  public class UsbDevice implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.hardware.usb.UsbConfiguration getConfiguration(int);
-    method public int getConfigurationCount();
-    method public int getDeviceClass();
-    method public int getDeviceId();
-    method public static int getDeviceId(String);
-    method @NonNull public String getDeviceName();
-    method public static String getDeviceName(int);
-    method public int getDeviceProtocol();
-    method public int getDeviceSubclass();
-    method @NonNull public android.hardware.usb.UsbInterface getInterface(int);
-    method public int getInterfaceCount();
-    method @Nullable public String getManufacturerName();
-    method public int getProductId();
-    method @Nullable public String getProductName();
-    method @Nullable public String getSerialNumber();
-    method public int getVendorId();
-    method @NonNull public String getVersion();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.usb.UsbDevice> CREATOR;
-  }
-
-  public class UsbDeviceConnection {
-    method public int bulkTransfer(android.hardware.usb.UsbEndpoint, byte[], int, int);
-    method public int bulkTransfer(android.hardware.usb.UsbEndpoint, byte[], int, int, int);
-    method public boolean claimInterface(android.hardware.usb.UsbInterface, boolean);
-    method public void close();
-    method public int controlTransfer(int, int, int, int, byte[], int, int);
-    method public int controlTransfer(int, int, int, int, byte[], int, int, int);
-    method public int getFileDescriptor();
-    method public byte[] getRawDescriptors();
-    method public String getSerial();
-    method public boolean releaseInterface(android.hardware.usb.UsbInterface);
-    method public android.hardware.usb.UsbRequest requestWait();
-    method public android.hardware.usb.UsbRequest requestWait(long) throws java.util.concurrent.TimeoutException;
-    method public boolean setConfiguration(android.hardware.usb.UsbConfiguration);
-    method public boolean setInterface(android.hardware.usb.UsbInterface);
-  }
-
-  public class UsbEndpoint implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAddress();
-    method public int getAttributes();
-    method public int getDirection();
-    method public int getEndpointNumber();
-    method public int getInterval();
-    method public int getMaxPacketSize();
-    method public int getType();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.usb.UsbEndpoint> CREATOR;
-  }
-
-  public class UsbInterface implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAlternateSetting();
-    method public android.hardware.usb.UsbEndpoint getEndpoint(int);
-    method public int getEndpointCount();
-    method public int getId();
-    method public int getInterfaceClass();
-    method public int getInterfaceProtocol();
-    method public int getInterfaceSubclass();
-    method @Nullable public String getName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.usb.UsbInterface> CREATOR;
-  }
-
-  public class UsbManager {
-    method public android.hardware.usb.UsbAccessory[] getAccessoryList();
-    method public java.util.HashMap<java.lang.String,android.hardware.usb.UsbDevice> getDeviceList();
-    method public boolean hasPermission(android.hardware.usb.UsbDevice);
-    method public boolean hasPermission(android.hardware.usb.UsbAccessory);
-    method public android.os.ParcelFileDescriptor openAccessory(android.hardware.usb.UsbAccessory);
-    method public android.hardware.usb.UsbDeviceConnection openDevice(android.hardware.usb.UsbDevice);
-    method public void requestPermission(android.hardware.usb.UsbDevice, android.app.PendingIntent);
-    method public void requestPermission(android.hardware.usb.UsbAccessory, android.app.PendingIntent);
-    field public static final String ACTION_USB_ACCESSORY_ATTACHED = "android.hardware.usb.action.USB_ACCESSORY_ATTACHED";
-    field public static final String ACTION_USB_ACCESSORY_DETACHED = "android.hardware.usb.action.USB_ACCESSORY_DETACHED";
-    field public static final String ACTION_USB_DEVICE_ATTACHED = "android.hardware.usb.action.USB_DEVICE_ATTACHED";
-    field public static final String ACTION_USB_DEVICE_DETACHED = "android.hardware.usb.action.USB_DEVICE_DETACHED";
-    field public static final String EXTRA_ACCESSORY = "accessory";
-    field public static final String EXTRA_DEVICE = "device";
-    field public static final String EXTRA_PERMISSION_GRANTED = "permission";
-  }
-
-  public class UsbRequest {
-    ctor public UsbRequest();
-    method public boolean cancel();
-    method public void close();
-    method public Object getClientData();
-    method public android.hardware.usb.UsbEndpoint getEndpoint();
-    method public boolean initialize(android.hardware.usb.UsbDeviceConnection, android.hardware.usb.UsbEndpoint);
-    method @Deprecated public boolean queue(java.nio.ByteBuffer, int);
-    method public boolean queue(@Nullable java.nio.ByteBuffer);
-    method public void setClientData(Object);
-  }
-
-}
-
-package android.icu.lang {
-
-  public final class UCharacter implements android.icu.lang.UCharacterEnums.ECharacterCategory android.icu.lang.UCharacterEnums.ECharacterDirection {
-    method public static int charCount(int);
-    method public static int codePointAt(CharSequence, int);
-    method public static int codePointAt(char[], int);
-    method public static int codePointAt(char[], int, int);
-    method public static int codePointBefore(CharSequence, int);
-    method public static int codePointBefore(char[], int);
-    method public static int codePointBefore(char[], int, int);
-    method public static int codePointCount(CharSequence, int, int);
-    method public static int codePointCount(char[], int, int);
-    method public static int digit(int, int);
-    method public static int digit(int);
-    method public static int foldCase(int, boolean);
-    method public static String foldCase(String, boolean);
-    method public static int foldCase(int, int);
-    method public static String foldCase(String, int);
-    method public static char forDigit(int, int);
-    method public static android.icu.util.VersionInfo getAge(int);
-    method public static int getBidiPairedBracket(int);
-    method public static int getCharFromExtendedName(String);
-    method public static int getCharFromName(String);
-    method public static int getCharFromNameAlias(String);
-    method public static int getCodePoint(char, char);
-    method public static int getCodePoint(char);
-    method public static int getCombiningClass(int);
-    method public static int getDirection(int);
-    method public static byte getDirectionality(int);
-    method public static String getExtendedName(int);
-    method public static android.icu.util.ValueIterator getExtendedNameIterator();
-    method public static int getHanNumericValue(int);
-    method public static int getIntPropertyMaxValue(int);
-    method public static int getIntPropertyMinValue(int);
-    method public static int getIntPropertyValue(int, int);
-    method public static int getMirror(int);
-    method public static String getName(int);
-    method public static String getName(String, String);
-    method public static String getNameAlias(int);
-    method public static android.icu.util.ValueIterator getNameIterator();
-    method public static int getNumericValue(int);
-    method public static int getPropertyEnum(CharSequence);
-    method public static String getPropertyName(int, int);
-    method public static int getPropertyValueEnum(int, CharSequence);
-    method public static String getPropertyValueName(int, int, int);
-    method public static int getType(int);
-    method public static android.icu.util.RangeValueIterator getTypeIterator();
-    method public static double getUnicodeNumericValue(int);
-    method public static android.icu.util.VersionInfo getUnicodeVersion();
-    method public static boolean hasBinaryProperty(int, int);
-    method public static boolean isBMP(int);
-    method public static boolean isBaseForm(int);
-    method public static boolean isDefined(int);
-    method public static boolean isDigit(int);
-    method public static boolean isHighSurrogate(char);
-    method public static boolean isISOControl(int);
-    method public static boolean isIdentifierIgnorable(int);
-    method public static boolean isJavaIdentifierPart(int);
-    method public static boolean isJavaIdentifierStart(int);
-    method public static boolean isLegal(int);
-    method public static boolean isLegal(String);
-    method public static boolean isLetter(int);
-    method public static boolean isLetterOrDigit(int);
-    method public static boolean isLowSurrogate(char);
-    method public static boolean isLowerCase(int);
-    method public static boolean isMirrored(int);
-    method public static boolean isPrintable(int);
-    method public static boolean isSpaceChar(int);
-    method public static boolean isSupplementary(int);
-    method public static boolean isSupplementaryCodePoint(int);
-    method public static boolean isSurrogatePair(char, char);
-    method public static boolean isTitleCase(int);
-    method public static boolean isUAlphabetic(int);
-    method public static boolean isULowercase(int);
-    method public static boolean isUUppercase(int);
-    method public static boolean isUWhiteSpace(int);
-    method public static boolean isUnicodeIdentifierPart(int);
-    method public static boolean isUnicodeIdentifierStart(int);
-    method public static boolean isUpperCase(int);
-    method public static boolean isValidCodePoint(int);
-    method public static boolean isWhitespace(int);
-    method public static int offsetByCodePoints(CharSequence, int, int);
-    method public static int offsetByCodePoints(char[], int, int, int, int);
-    method public static int toChars(int, char[], int);
-    method public static char[] toChars(int);
-    method public static int toCodePoint(char, char);
-    method public static int toLowerCase(int);
-    method public static String toLowerCase(String);
-    method public static String toLowerCase(java.util.Locale, String);
-    method public static String toLowerCase(android.icu.util.ULocale, String);
-    method public static String toString(int);
-    method public static int toTitleCase(int);
-    method public static String toTitleCase(String, android.icu.text.BreakIterator);
-    method public static String toTitleCase(java.util.Locale, String, android.icu.text.BreakIterator);
-    method public static String toTitleCase(android.icu.util.ULocale, String, android.icu.text.BreakIterator);
-    method public static String toTitleCase(android.icu.util.ULocale, String, android.icu.text.BreakIterator, int);
-    method public static String toTitleCase(java.util.Locale, String, android.icu.text.BreakIterator, int);
-    method public static int toUpperCase(int);
-    method public static String toUpperCase(String);
-    method public static String toUpperCase(java.util.Locale, String);
-    method public static String toUpperCase(android.icu.util.ULocale, String);
-    field public static final int FOLD_CASE_DEFAULT = 0; // 0x0
-    field public static final int FOLD_CASE_EXCLUDE_SPECIAL_I = 1; // 0x1
-    field public static final int MAX_CODE_POINT = 1114111; // 0x10ffff
-    field public static final char MAX_HIGH_SURROGATE = 56319; // 0xdbff '\udbff'
-    field public static final char MAX_LOW_SURROGATE = 57343; // 0xdfff '\udfff'
-    field public static final int MAX_RADIX = 36; // 0x24
-    field public static final char MAX_SURROGATE = 57343; // 0xdfff '\udfff'
-    field public static final int MAX_VALUE = 1114111; // 0x10ffff
-    field public static final int MIN_CODE_POINT = 0; // 0x0
-    field public static final char MIN_HIGH_SURROGATE = 55296; // 0xd800 '\ud800'
-    field public static final char MIN_LOW_SURROGATE = 56320; // 0xdc00 '\udc00'
-    field public static final int MIN_RADIX = 2; // 0x2
-    field public static final int MIN_SUPPLEMENTARY_CODE_POINT = 65536; // 0x10000
-    field public static final char MIN_SURROGATE = 55296; // 0xd800 '\ud800'
-    field public static final int MIN_VALUE = 0; // 0x0
-    field public static final double NO_NUMERIC_VALUE = -1.23456789E8;
-    field public static final int REPLACEMENT_CHAR = 65533; // 0xfffd
-    field public static final int SUPPLEMENTARY_MIN_VALUE = 65536; // 0x10000
-    field public static final int TITLECASE_NO_BREAK_ADJUSTMENT = 512; // 0x200
-    field public static final int TITLECASE_NO_LOWERCASE = 256; // 0x100
-  }
-
-  public static interface UCharacter.BidiPairedBracketType {
-    field public static final int CLOSE = 2; // 0x2
-    field public static final int NONE = 0; // 0x0
-    field public static final int OPEN = 1; // 0x1
-  }
-
-  public static interface UCharacter.DecompositionType {
-    field public static final int CANONICAL = 1; // 0x1
-    field public static final int CIRCLE = 3; // 0x3
-    field public static final int COMPAT = 2; // 0x2
-    field public static final int FINAL = 4; // 0x4
-    field public static final int FONT = 5; // 0x5
-    field public static final int FRACTION = 6; // 0x6
-    field public static final int INITIAL = 7; // 0x7
-    field public static final int ISOLATED = 8; // 0x8
-    field public static final int MEDIAL = 9; // 0x9
-    field public static final int NARROW = 10; // 0xa
-    field public static final int NOBREAK = 11; // 0xb
-    field public static final int NONE = 0; // 0x0
-    field public static final int SMALL = 12; // 0xc
-    field public static final int SQUARE = 13; // 0xd
-    field public static final int SUB = 14; // 0xe
-    field public static final int SUPER = 15; // 0xf
-    field public static final int VERTICAL = 16; // 0x10
-    field public static final int WIDE = 17; // 0x11
-  }
-
-  public static interface UCharacter.EastAsianWidth {
-    field public static final int AMBIGUOUS = 1; // 0x1
-    field public static final int FULLWIDTH = 3; // 0x3
-    field public static final int HALFWIDTH = 2; // 0x2
-    field public static final int NARROW = 4; // 0x4
-    field public static final int NEUTRAL = 0; // 0x0
-    field public static final int WIDE = 5; // 0x5
-  }
-
-  public static interface UCharacter.GraphemeClusterBreak {
-    field public static final int CONTROL = 1; // 0x1
-    field public static final int CR = 2; // 0x2
-    field public static final int EXTEND = 3; // 0x3
-    field public static final int E_BASE = 13; // 0xd
-    field public static final int E_BASE_GAZ = 14; // 0xe
-    field public static final int E_MODIFIER = 15; // 0xf
-    field public static final int GLUE_AFTER_ZWJ = 16; // 0x10
-    field public static final int L = 4; // 0x4
-    field public static final int LF = 5; // 0x5
-    field public static final int LV = 6; // 0x6
-    field public static final int LVT = 7; // 0x7
-    field public static final int OTHER = 0; // 0x0
-    field public static final int PREPEND = 11; // 0xb
-    field public static final int REGIONAL_INDICATOR = 12; // 0xc
-    field public static final int SPACING_MARK = 10; // 0xa
-    field public static final int T = 8; // 0x8
-    field public static final int V = 9; // 0x9
-    field public static final int ZWJ = 17; // 0x11
-  }
-
-  public static interface UCharacter.HangulSyllableType {
-    field public static final int LEADING_JAMO = 1; // 0x1
-    field public static final int LVT_SYLLABLE = 5; // 0x5
-    field public static final int LV_SYLLABLE = 4; // 0x4
-    field public static final int NOT_APPLICABLE = 0; // 0x0
-    field public static final int TRAILING_JAMO = 3; // 0x3
-    field public static final int VOWEL_JAMO = 2; // 0x2
-  }
-
-  public static interface UCharacter.IndicPositionalCategory {
-    field public static final int BOTTOM = 1; // 0x1
-    field public static final int BOTTOM_AND_LEFT = 2; // 0x2
-    field public static final int BOTTOM_AND_RIGHT = 3; // 0x3
-    field public static final int LEFT = 4; // 0x4
-    field public static final int LEFT_AND_RIGHT = 5; // 0x5
-    field public static final int NA = 0; // 0x0
-    field public static final int OVERSTRUCK = 6; // 0x6
-    field public static final int RIGHT = 7; // 0x7
-    field public static final int TOP = 8; // 0x8
-    field public static final int TOP_AND_BOTTOM = 9; // 0x9
-    field public static final int TOP_AND_BOTTOM_AND_LEFT = 15; // 0xf
-    field public static final int TOP_AND_BOTTOM_AND_RIGHT = 10; // 0xa
-    field public static final int TOP_AND_LEFT = 11; // 0xb
-    field public static final int TOP_AND_LEFT_AND_RIGHT = 12; // 0xc
-    field public static final int TOP_AND_RIGHT = 13; // 0xd
-    field public static final int VISUAL_ORDER_LEFT = 14; // 0xe
-  }
-
-  public static interface UCharacter.IndicSyllabicCategory {
-    field public static final int AVAGRAHA = 1; // 0x1
-    field public static final int BINDU = 2; // 0x2
-    field public static final int BRAHMI_JOINING_NUMBER = 3; // 0x3
-    field public static final int CANTILLATION_MARK = 4; // 0x4
-    field public static final int CONSONANT = 5; // 0x5
-    field public static final int CONSONANT_DEAD = 6; // 0x6
-    field public static final int CONSONANT_FINAL = 7; // 0x7
-    field public static final int CONSONANT_HEAD_LETTER = 8; // 0x8
-    field public static final int CONSONANT_INITIAL_POSTFIXED = 9; // 0x9
-    field public static final int CONSONANT_KILLER = 10; // 0xa
-    field public static final int CONSONANT_MEDIAL = 11; // 0xb
-    field public static final int CONSONANT_PLACEHOLDER = 12; // 0xc
-    field public static final int CONSONANT_PRECEDING_REPHA = 13; // 0xd
-    field public static final int CONSONANT_PREFIXED = 14; // 0xe
-    field public static final int CONSONANT_SUBJOINED = 15; // 0xf
-    field public static final int CONSONANT_SUCCEEDING_REPHA = 16; // 0x10
-    field public static final int CONSONANT_WITH_STACKER = 17; // 0x11
-    field public static final int GEMINATION_MARK = 18; // 0x12
-    field public static final int INVISIBLE_STACKER = 19; // 0x13
-    field public static final int JOINER = 20; // 0x14
-    field public static final int MODIFYING_LETTER = 21; // 0x15
-    field public static final int NON_JOINER = 22; // 0x16
-    field public static final int NUKTA = 23; // 0x17
-    field public static final int NUMBER = 24; // 0x18
-    field public static final int NUMBER_JOINER = 25; // 0x19
-    field public static final int OTHER = 0; // 0x0
-    field public static final int PURE_KILLER = 26; // 0x1a
-    field public static final int REGISTER_SHIFTER = 27; // 0x1b
-    field public static final int SYLLABLE_MODIFIER = 28; // 0x1c
-    field public static final int TONE_LETTER = 29; // 0x1d
-    field public static final int TONE_MARK = 30; // 0x1e
-    field public static final int VIRAMA = 31; // 0x1f
-    field public static final int VISARGA = 32; // 0x20
-    field public static final int VOWEL = 33; // 0x21
-    field public static final int VOWEL_DEPENDENT = 34; // 0x22
-    field public static final int VOWEL_INDEPENDENT = 35; // 0x23
-  }
-
-  public static interface UCharacter.JoiningGroup {
-    field public static final int AFRICAN_FEH = 86; // 0x56
-    field public static final int AFRICAN_NOON = 87; // 0x57
-    field public static final int AFRICAN_QAF = 88; // 0x58
-    field public static final int AIN = 1; // 0x1
-    field public static final int ALAPH = 2; // 0x2
-    field public static final int ALEF = 3; // 0x3
-    field public static final int BEH = 4; // 0x4
-    field public static final int BETH = 5; // 0x5
-    field public static final int BURUSHASKI_YEH_BARREE = 54; // 0x36
-    field public static final int DAL = 6; // 0x6
-    field public static final int DALATH_RISH = 7; // 0x7
-    field public static final int E = 8; // 0x8
-    field public static final int FARSI_YEH = 55; // 0x37
-    field public static final int FE = 51; // 0x33
-    field public static final int FEH = 9; // 0x9
-    field public static final int FINAL_SEMKATH = 10; // 0xa
-    field public static final int GAF = 11; // 0xb
-    field public static final int GAMAL = 12; // 0xc
-    field public static final int HAH = 13; // 0xd
-    field public static final int HAMZA_ON_HEH_GOAL = 14; // 0xe
-    field public static final int HANIFI_ROHINGYA_KINNA_YA = 100; // 0x64
-    field public static final int HANIFI_ROHINGYA_PA = 101; // 0x65
-    field public static final int HE = 15; // 0xf
-    field public static final int HEH = 16; // 0x10
-    field public static final int HEH_GOAL = 17; // 0x11
-    field public static final int HETH = 18; // 0x12
-    field public static final int KAF = 19; // 0x13
-    field public static final int KAPH = 20; // 0x14
-    field public static final int KHAPH = 52; // 0x34
-    field public static final int KNOTTED_HEH = 21; // 0x15
-    field public static final int LAM = 22; // 0x16
-    field public static final int LAMADH = 23; // 0x17
-    field public static final int MALAYALAM_BHA = 89; // 0x59
-    field public static final int MALAYALAM_JA = 90; // 0x5a
-    field public static final int MALAYALAM_LLA = 91; // 0x5b
-    field public static final int MALAYALAM_LLLA = 92; // 0x5c
-    field public static final int MALAYALAM_NGA = 93; // 0x5d
-    field public static final int MALAYALAM_NNA = 94; // 0x5e
-    field public static final int MALAYALAM_NNNA = 95; // 0x5f
-    field public static final int MALAYALAM_NYA = 96; // 0x60
-    field public static final int MALAYALAM_RA = 97; // 0x61
-    field public static final int MALAYALAM_SSA = 98; // 0x62
-    field public static final int MALAYALAM_TTA = 99; // 0x63
-    field public static final int MANICHAEAN_ALEPH = 58; // 0x3a
-    field public static final int MANICHAEAN_AYIN = 59; // 0x3b
-    field public static final int MANICHAEAN_BETH = 60; // 0x3c
-    field public static final int MANICHAEAN_DALETH = 61; // 0x3d
-    field public static final int MANICHAEAN_DHAMEDH = 62; // 0x3e
-    field public static final int MANICHAEAN_FIVE = 63; // 0x3f
-    field public static final int MANICHAEAN_GIMEL = 64; // 0x40
-    field public static final int MANICHAEAN_HETH = 65; // 0x41
-    field public static final int MANICHAEAN_HUNDRED = 66; // 0x42
-    field public static final int MANICHAEAN_KAPH = 67; // 0x43
-    field public static final int MANICHAEAN_LAMEDH = 68; // 0x44
-    field public static final int MANICHAEAN_MEM = 69; // 0x45
-    field public static final int MANICHAEAN_NUN = 70; // 0x46
-    field public static final int MANICHAEAN_ONE = 71; // 0x47
-    field public static final int MANICHAEAN_PE = 72; // 0x48
-    field public static final int MANICHAEAN_QOPH = 73; // 0x49
-    field public static final int MANICHAEAN_RESH = 74; // 0x4a
-    field public static final int MANICHAEAN_SADHE = 75; // 0x4b
-    field public static final int MANICHAEAN_SAMEKH = 76; // 0x4c
-    field public static final int MANICHAEAN_TAW = 77; // 0x4d
-    field public static final int MANICHAEAN_TEN = 78; // 0x4e
-    field public static final int MANICHAEAN_TETH = 79; // 0x4f
-    field public static final int MANICHAEAN_THAMEDH = 80; // 0x50
-    field public static final int MANICHAEAN_TWENTY = 81; // 0x51
-    field public static final int MANICHAEAN_WAW = 82; // 0x52
-    field public static final int MANICHAEAN_YODH = 83; // 0x53
-    field public static final int MANICHAEAN_ZAYIN = 84; // 0x54
-    field public static final int MEEM = 24; // 0x18
-    field public static final int MIM = 25; // 0x19
-    field public static final int NOON = 26; // 0x1a
-    field public static final int NO_JOINING_GROUP = 0; // 0x0
-    field public static final int NUN = 27; // 0x1b
-    field public static final int NYA = 56; // 0x38
-    field public static final int PE = 28; // 0x1c
-    field public static final int QAF = 29; // 0x1d
-    field public static final int QAPH = 30; // 0x1e
-    field public static final int REH = 31; // 0x1f
-    field public static final int REVERSED_PE = 32; // 0x20
-    field public static final int ROHINGYA_YEH = 57; // 0x39
-    field public static final int SAD = 33; // 0x21
-    field public static final int SADHE = 34; // 0x22
-    field public static final int SEEN = 35; // 0x23
-    field public static final int SEMKATH = 36; // 0x24
-    field public static final int SHIN = 37; // 0x25
-    field public static final int STRAIGHT_WAW = 85; // 0x55
-    field public static final int SWASH_KAF = 38; // 0x26
-    field public static final int SYRIAC_WAW = 39; // 0x27
-    field public static final int TAH = 40; // 0x28
-    field public static final int TAW = 41; // 0x29
-    field public static final int TEH_MARBUTA = 42; // 0x2a
-    field public static final int TEH_MARBUTA_GOAL = 14; // 0xe
-    field public static final int TETH = 43; // 0x2b
-    field public static final int WAW = 44; // 0x2c
-    field public static final int YEH = 45; // 0x2d
-    field public static final int YEH_BARREE = 46; // 0x2e
-    field public static final int YEH_WITH_TAIL = 47; // 0x2f
-    field public static final int YUDH = 48; // 0x30
-    field public static final int YUDH_HE = 49; // 0x31
-    field public static final int ZAIN = 50; // 0x32
-    field public static final int ZHAIN = 53; // 0x35
-  }
-
-  public static interface UCharacter.JoiningType {
-    field public static final int DUAL_JOINING = 2; // 0x2
-    field public static final int JOIN_CAUSING = 1; // 0x1
-    field public static final int LEFT_JOINING = 3; // 0x3
-    field public static final int NON_JOINING = 0; // 0x0
-    field public static final int RIGHT_JOINING = 4; // 0x4
-    field public static final int TRANSPARENT = 5; // 0x5
-  }
-
-  public static interface UCharacter.LineBreak {
-    field public static final int ALPHABETIC = 2; // 0x2
-    field public static final int AMBIGUOUS = 1; // 0x1
-    field public static final int BREAK_AFTER = 4; // 0x4
-    field public static final int BREAK_BEFORE = 5; // 0x5
-    field public static final int BREAK_BOTH = 3; // 0x3
-    field public static final int BREAK_SYMBOLS = 27; // 0x1b
-    field public static final int CARRIAGE_RETURN = 10; // 0xa
-    field public static final int CLOSE_PARENTHESIS = 36; // 0x24
-    field public static final int CLOSE_PUNCTUATION = 8; // 0x8
-    field public static final int COMBINING_MARK = 9; // 0x9
-    field public static final int COMPLEX_CONTEXT = 24; // 0x18
-    field public static final int CONDITIONAL_JAPANESE_STARTER = 37; // 0x25
-    field public static final int CONTINGENT_BREAK = 7; // 0x7
-    field public static final int EXCLAMATION = 11; // 0xb
-    field public static final int E_BASE = 40; // 0x28
-    field public static final int E_MODIFIER = 41; // 0x29
-    field public static final int GLUE = 12; // 0xc
-    field public static final int H2 = 31; // 0x1f
-    field public static final int H3 = 32; // 0x20
-    field public static final int HEBREW_LETTER = 38; // 0x26
-    field public static final int HYPHEN = 13; // 0xd
-    field public static final int IDEOGRAPHIC = 14; // 0xe
-    field public static final int INFIX_NUMERIC = 16; // 0x10
-    field public static final int INSEPARABLE = 15; // 0xf
-    field public static final int INSEPERABLE = 15; // 0xf
-    field public static final int JL = 33; // 0x21
-    field public static final int JT = 34; // 0x22
-    field public static final int JV = 35; // 0x23
-    field public static final int LINE_FEED = 17; // 0x11
-    field public static final int MANDATORY_BREAK = 6; // 0x6
-    field public static final int NEXT_LINE = 29; // 0x1d
-    field public static final int NONSTARTER = 18; // 0x12
-    field public static final int NUMERIC = 19; // 0x13
-    field public static final int OPEN_PUNCTUATION = 20; // 0x14
-    field public static final int POSTFIX_NUMERIC = 21; // 0x15
-    field public static final int PREFIX_NUMERIC = 22; // 0x16
-    field public static final int QUOTATION = 23; // 0x17
-    field public static final int REGIONAL_INDICATOR = 39; // 0x27
-    field public static final int SPACE = 26; // 0x1a
-    field public static final int SURROGATE = 25; // 0x19
-    field public static final int UNKNOWN = 0; // 0x0
-    field public static final int WORD_JOINER = 30; // 0x1e
-    field public static final int ZWJ = 42; // 0x2a
-    field public static final int ZWSPACE = 28; // 0x1c
-  }
-
-  public static interface UCharacter.NumericType {
-    field public static final int DECIMAL = 1; // 0x1
-    field public static final int DIGIT = 2; // 0x2
-    field public static final int NONE = 0; // 0x0
-    field public static final int NUMERIC = 3; // 0x3
-  }
-
-  public static interface UCharacter.SentenceBreak {
-    field public static final int ATERM = 1; // 0x1
-    field public static final int CLOSE = 2; // 0x2
-    field public static final int CR = 11; // 0xb
-    field public static final int EXTEND = 12; // 0xc
-    field public static final int FORMAT = 3; // 0x3
-    field public static final int LF = 13; // 0xd
-    field public static final int LOWER = 4; // 0x4
-    field public static final int NUMERIC = 5; // 0x5
-    field public static final int OLETTER = 6; // 0x6
-    field public static final int OTHER = 0; // 0x0
-    field public static final int SCONTINUE = 14; // 0xe
-    field public static final int SEP = 7; // 0x7
-    field public static final int SP = 8; // 0x8
-    field public static final int STERM = 9; // 0x9
-    field public static final int UPPER = 10; // 0xa
-  }
-
-  public static final class UCharacter.UnicodeBlock extends java.lang.Character.Subset {
-    method public static android.icu.lang.UCharacter.UnicodeBlock forName(String);
-    method public int getID();
-    method public static android.icu.lang.UCharacter.UnicodeBlock getInstance(int);
-    method public static android.icu.lang.UCharacter.UnicodeBlock of(int);
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ADLAM;
-    field public static final int ADLAM_ID = 263; // 0x107
-    field public static final android.icu.lang.UCharacter.UnicodeBlock AEGEAN_NUMBERS;
-    field public static final int AEGEAN_NUMBERS_ID = 119; // 0x77
-    field public static final android.icu.lang.UCharacter.UnicodeBlock AHOM;
-    field public static final int AHOM_ID = 253; // 0xfd
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ALCHEMICAL_SYMBOLS;
-    field public static final int ALCHEMICAL_SYMBOLS_ID = 208; // 0xd0
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ALPHABETIC_PRESENTATION_FORMS;
-    field public static final int ALPHABETIC_PRESENTATION_FORMS_ID = 80; // 0x50
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ANATOLIAN_HIEROGLYPHS;
-    field public static final int ANATOLIAN_HIEROGLYPHS_ID = 254; // 0xfe
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ANCIENT_GREEK_MUSICAL_NOTATION;
-    field public static final int ANCIENT_GREEK_MUSICAL_NOTATION_ID = 126; // 0x7e
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ANCIENT_GREEK_NUMBERS;
-    field public static final int ANCIENT_GREEK_NUMBERS_ID = 127; // 0x7f
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ANCIENT_SYMBOLS;
-    field public static final int ANCIENT_SYMBOLS_ID = 165; // 0xa5
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ARABIC;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ARABIC_EXTENDED_A;
-    field public static final int ARABIC_EXTENDED_A_ID = 210; // 0xd2
-    field public static final int ARABIC_ID = 12; // 0xc
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS;
-    field public static final int ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS_ID = 211; // 0xd3
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ARABIC_PRESENTATION_FORMS_A;
-    field public static final int ARABIC_PRESENTATION_FORMS_A_ID = 81; // 0x51
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ARABIC_PRESENTATION_FORMS_B;
-    field public static final int ARABIC_PRESENTATION_FORMS_B_ID = 85; // 0x55
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ARABIC_SUPPLEMENT;
-    field public static final int ARABIC_SUPPLEMENT_ID = 128; // 0x80
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ARMENIAN;
-    field public static final int ARMENIAN_ID = 10; // 0xa
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ARROWS;
-    field public static final int ARROWS_ID = 46; // 0x2e
-    field public static final android.icu.lang.UCharacter.UnicodeBlock AVESTAN;
-    field public static final int AVESTAN_ID = 188; // 0xbc
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BALINESE;
-    field public static final int BALINESE_ID = 147; // 0x93
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BAMUM;
-    field public static final int BAMUM_ID = 177; // 0xb1
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BAMUM_SUPPLEMENT;
-    field public static final int BAMUM_SUPPLEMENT_ID = 202; // 0xca
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BASIC_LATIN;
-    field public static final int BASIC_LATIN_ID = 1; // 0x1
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BASSA_VAH;
-    field public static final int BASSA_VAH_ID = 221; // 0xdd
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BATAK;
-    field public static final int BATAK_ID = 199; // 0xc7
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BENGALI;
-    field public static final int BENGALI_ID = 16; // 0x10
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BHAIKSUKI;
-    field public static final int BHAIKSUKI_ID = 264; // 0x108
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BLOCK_ELEMENTS;
-    field public static final int BLOCK_ELEMENTS_ID = 53; // 0x35
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BOPOMOFO;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BOPOMOFO_EXTENDED;
-    field public static final int BOPOMOFO_EXTENDED_ID = 67; // 0x43
-    field public static final int BOPOMOFO_ID = 64; // 0x40
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BOX_DRAWING;
-    field public static final int BOX_DRAWING_ID = 52; // 0x34
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BRAHMI;
-    field public static final int BRAHMI_ID = 201; // 0xc9
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BRAILLE_PATTERNS;
-    field public static final int BRAILLE_PATTERNS_ID = 57; // 0x39
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BUGINESE;
-    field public static final int BUGINESE_ID = 129; // 0x81
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BUHID;
-    field public static final int BUHID_ID = 100; // 0x64
-    field public static final android.icu.lang.UCharacter.UnicodeBlock BYZANTINE_MUSICAL_SYMBOLS;
-    field public static final int BYZANTINE_MUSICAL_SYMBOLS_ID = 91; // 0x5b
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CARIAN;
-    field public static final int CARIAN_ID = 168; // 0xa8
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CAUCASIAN_ALBANIAN;
-    field public static final int CAUCASIAN_ALBANIAN_ID = 222; // 0xde
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CHAKMA;
-    field public static final int CHAKMA_ID = 212; // 0xd4
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CHAM;
-    field public static final int CHAM_ID = 164; // 0xa4
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CHEROKEE;
-    field public static final int CHEROKEE_ID = 32; // 0x20
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CHEROKEE_SUPPLEMENT;
-    field public static final int CHEROKEE_SUPPLEMENT_ID = 255; // 0xff
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CHESS_SYMBOLS;
-    field public static final int CHESS_SYMBOLS_ID = 281; // 0x119
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CHORASMIAN;
-    field public static final int CHORASMIAN_ID = 301; // 0x12d
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_COMPATIBILITY;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_COMPATIBILITY_FORMS;
-    field public static final int CJK_COMPATIBILITY_FORMS_ID = 83; // 0x53
-    field public static final int CJK_COMPATIBILITY_ID = 69; // 0x45
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS;
-    field public static final int CJK_COMPATIBILITY_IDEOGRAPHS_ID = 79; // 0x4f
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT;
-    field public static final int CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_ID = 95; // 0x5f
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_RADICALS_SUPPLEMENT;
-    field public static final int CJK_RADICALS_SUPPLEMENT_ID = 58; // 0x3a
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_STROKES;
-    field public static final int CJK_STROKES_ID = 130; // 0x82
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_SYMBOLS_AND_PUNCTUATION;
-    field public static final int CJK_SYMBOLS_AND_PUNCTUATION_ID = 61; // 0x3d
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A;
-    field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_ID = 70; // 0x46
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B;
-    field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_ID = 94; // 0x5e
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C;
-    field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_ID = 197; // 0xc5
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D;
-    field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_ID = 209; // 0xd1
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E;
-    field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E_ID = 256; // 0x100
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F;
-    field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F_ID = 274; // 0x112
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G;
-    field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G_ID = 302; // 0x12e
-    field public static final int CJK_UNIFIED_IDEOGRAPHS_ID = 71; // 0x47
-    field public static final android.icu.lang.UCharacter.UnicodeBlock COMBINING_DIACRITICAL_MARKS;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock COMBINING_DIACRITICAL_MARKS_EXTENDED;
-    field public static final int COMBINING_DIACRITICAL_MARKS_EXTENDED_ID = 224; // 0xe0
-    field public static final int COMBINING_DIACRITICAL_MARKS_ID = 7; // 0x7
-    field public static final android.icu.lang.UCharacter.UnicodeBlock COMBINING_DIACRITICAL_MARKS_SUPPLEMENT;
-    field public static final int COMBINING_DIACRITICAL_MARKS_SUPPLEMENT_ID = 131; // 0x83
-    field public static final android.icu.lang.UCharacter.UnicodeBlock COMBINING_HALF_MARKS;
-    field public static final int COMBINING_HALF_MARKS_ID = 82; // 0x52
-    field public static final android.icu.lang.UCharacter.UnicodeBlock COMBINING_MARKS_FOR_SYMBOLS;
-    field public static final int COMBINING_MARKS_FOR_SYMBOLS_ID = 43; // 0x2b
-    field public static final android.icu.lang.UCharacter.UnicodeBlock COMMON_INDIC_NUMBER_FORMS;
-    field public static final int COMMON_INDIC_NUMBER_FORMS_ID = 178; // 0xb2
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CONTROL_PICTURES;
-    field public static final int CONTROL_PICTURES_ID = 49; // 0x31
-    field public static final android.icu.lang.UCharacter.UnicodeBlock COPTIC;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock COPTIC_EPACT_NUMBERS;
-    field public static final int COPTIC_EPACT_NUMBERS_ID = 223; // 0xdf
-    field public static final int COPTIC_ID = 132; // 0x84
-    field public static final android.icu.lang.UCharacter.UnicodeBlock COUNTING_ROD_NUMERALS;
-    field public static final int COUNTING_ROD_NUMERALS_ID = 154; // 0x9a
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CUNEIFORM;
-    field public static final int CUNEIFORM_ID = 152; // 0x98
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CUNEIFORM_NUMBERS_AND_PUNCTUATION;
-    field public static final int CUNEIFORM_NUMBERS_AND_PUNCTUATION_ID = 153; // 0x99
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CURRENCY_SYMBOLS;
-    field public static final int CURRENCY_SYMBOLS_ID = 42; // 0x2a
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CYPRIOT_SYLLABARY;
-    field public static final int CYPRIOT_SYLLABARY_ID = 123; // 0x7b
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CYRILLIC;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CYRILLIC_EXTENDED_A;
-    field public static final int CYRILLIC_EXTENDED_A_ID = 158; // 0x9e
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CYRILLIC_EXTENDED_B;
-    field public static final int CYRILLIC_EXTENDED_B_ID = 160; // 0xa0
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CYRILLIC_EXTENDED_C;
-    field public static final int CYRILLIC_EXTENDED_C_ID = 265; // 0x109
-    field public static final int CYRILLIC_ID = 9; // 0x9
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CYRILLIC_SUPPLEMENT;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock CYRILLIC_SUPPLEMENTARY;
-    field public static final int CYRILLIC_SUPPLEMENTARY_ID = 97; // 0x61
-    field public static final int CYRILLIC_SUPPLEMENT_ID = 97; // 0x61
-    field public static final android.icu.lang.UCharacter.UnicodeBlock DESERET;
-    field public static final int DESERET_ID = 90; // 0x5a
-    field public static final android.icu.lang.UCharacter.UnicodeBlock DEVANAGARI;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock DEVANAGARI_EXTENDED;
-    field public static final int DEVANAGARI_EXTENDED_ID = 179; // 0xb3
-    field public static final int DEVANAGARI_ID = 15; // 0xf
-    field public static final android.icu.lang.UCharacter.UnicodeBlock DINGBATS;
-    field public static final int DINGBATS_ID = 56; // 0x38
-    field public static final android.icu.lang.UCharacter.UnicodeBlock DIVES_AKURU;
-    field public static final int DIVES_AKURU_ID = 303; // 0x12f
-    field public static final android.icu.lang.UCharacter.UnicodeBlock DOGRA;
-    field public static final int DOGRA_ID = 282; // 0x11a
-    field public static final android.icu.lang.UCharacter.UnicodeBlock DOMINO_TILES;
-    field public static final int DOMINO_TILES_ID = 171; // 0xab
-    field public static final android.icu.lang.UCharacter.UnicodeBlock DUPLOYAN;
-    field public static final int DUPLOYAN_ID = 225; // 0xe1
-    field public static final android.icu.lang.UCharacter.UnicodeBlock EARLY_DYNASTIC_CUNEIFORM;
-    field public static final int EARLY_DYNASTIC_CUNEIFORM_ID = 257; // 0x101
-    field public static final android.icu.lang.UCharacter.UnicodeBlock EGYPTIAN_HIEROGLYPHS;
-    field public static final int EGYPTIAN_HIEROGLYPHS_ID = 194; // 0xc2
-    field public static final android.icu.lang.UCharacter.UnicodeBlock EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS;
-    field public static final int EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS_ID = 292; // 0x124
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ELBASAN;
-    field public static final int ELBASAN_ID = 226; // 0xe2
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ELYMAIC;
-    field public static final int ELYMAIC_ID = 293; // 0x125
-    field public static final android.icu.lang.UCharacter.UnicodeBlock EMOTICONS;
-    field public static final int EMOTICONS_ID = 206; // 0xce
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ENCLOSED_ALPHANUMERICS;
-    field public static final int ENCLOSED_ALPHANUMERICS_ID = 51; // 0x33
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ENCLOSED_ALPHANUMERIC_SUPPLEMENT;
-    field public static final int ENCLOSED_ALPHANUMERIC_SUPPLEMENT_ID = 195; // 0xc3
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ENCLOSED_CJK_LETTERS_AND_MONTHS;
-    field public static final int ENCLOSED_CJK_LETTERS_AND_MONTHS_ID = 68; // 0x44
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ENCLOSED_IDEOGRAPHIC_SUPPLEMENT;
-    field public static final int ENCLOSED_IDEOGRAPHIC_SUPPLEMENT_ID = 196; // 0xc4
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ETHIOPIC;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ETHIOPIC_EXTENDED;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ETHIOPIC_EXTENDED_A;
-    field public static final int ETHIOPIC_EXTENDED_A_ID = 200; // 0xc8
-    field public static final int ETHIOPIC_EXTENDED_ID = 133; // 0x85
-    field public static final int ETHIOPIC_ID = 31; // 0x1f
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ETHIOPIC_SUPPLEMENT;
-    field public static final int ETHIOPIC_SUPPLEMENT_ID = 134; // 0x86
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GENERAL_PUNCTUATION;
-    field public static final int GENERAL_PUNCTUATION_ID = 40; // 0x28
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GEOMETRIC_SHAPES;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GEOMETRIC_SHAPES_EXTENDED;
-    field public static final int GEOMETRIC_SHAPES_EXTENDED_ID = 227; // 0xe3
-    field public static final int GEOMETRIC_SHAPES_ID = 54; // 0x36
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GEORGIAN;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GEORGIAN_EXTENDED;
-    field public static final int GEORGIAN_EXTENDED_ID = 283; // 0x11b
-    field public static final int GEORGIAN_ID = 29; // 0x1d
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GEORGIAN_SUPPLEMENT;
-    field public static final int GEORGIAN_SUPPLEMENT_ID = 135; // 0x87
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GLAGOLITIC;
-    field public static final int GLAGOLITIC_ID = 136; // 0x88
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GLAGOLITIC_SUPPLEMENT;
-    field public static final int GLAGOLITIC_SUPPLEMENT_ID = 266; // 0x10a
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GOTHIC;
-    field public static final int GOTHIC_ID = 89; // 0x59
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GRANTHA;
-    field public static final int GRANTHA_ID = 228; // 0xe4
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GREEK;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GREEK_EXTENDED;
-    field public static final int GREEK_EXTENDED_ID = 39; // 0x27
-    field public static final int GREEK_ID = 8; // 0x8
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GUJARATI;
-    field public static final int GUJARATI_ID = 18; // 0x12
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GUNJALA_GONDI;
-    field public static final int GUNJALA_GONDI_ID = 284; // 0x11c
-    field public static final android.icu.lang.UCharacter.UnicodeBlock GURMUKHI;
-    field public static final int GURMUKHI_ID = 17; // 0x11
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HALFWIDTH_AND_FULLWIDTH_FORMS;
-    field public static final int HALFWIDTH_AND_FULLWIDTH_FORMS_ID = 87; // 0x57
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HANGUL_COMPATIBILITY_JAMO;
-    field public static final int HANGUL_COMPATIBILITY_JAMO_ID = 65; // 0x41
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HANGUL_JAMO;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HANGUL_JAMO_EXTENDED_A;
-    field public static final int HANGUL_JAMO_EXTENDED_A_ID = 180; // 0xb4
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HANGUL_JAMO_EXTENDED_B;
-    field public static final int HANGUL_JAMO_EXTENDED_B_ID = 185; // 0xb9
-    field public static final int HANGUL_JAMO_ID = 30; // 0x1e
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HANGUL_SYLLABLES;
-    field public static final int HANGUL_SYLLABLES_ID = 74; // 0x4a
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HANIFI_ROHINGYA;
-    field public static final int HANIFI_ROHINGYA_ID = 285; // 0x11d
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HANUNOO;
-    field public static final int HANUNOO_ID = 99; // 0x63
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HATRAN;
-    field public static final int HATRAN_ID = 258; // 0x102
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HEBREW;
-    field public static final int HEBREW_ID = 11; // 0xb
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HIGH_PRIVATE_USE_SURROGATES;
-    field public static final int HIGH_PRIVATE_USE_SURROGATES_ID = 76; // 0x4c
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HIGH_SURROGATES;
-    field public static final int HIGH_SURROGATES_ID = 75; // 0x4b
-    field public static final android.icu.lang.UCharacter.UnicodeBlock HIRAGANA;
-    field public static final int HIRAGANA_ID = 62; // 0x3e
-    field public static final android.icu.lang.UCharacter.UnicodeBlock IDEOGRAPHIC_DESCRIPTION_CHARACTERS;
-    field public static final int IDEOGRAPHIC_DESCRIPTION_CHARACTERS_ID = 60; // 0x3c
-    field public static final android.icu.lang.UCharacter.UnicodeBlock IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION;
-    field public static final int IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION_ID = 267; // 0x10b
-    field public static final android.icu.lang.UCharacter.UnicodeBlock IMPERIAL_ARAMAIC;
-    field public static final int IMPERIAL_ARAMAIC_ID = 186; // 0xba
-    field public static final android.icu.lang.UCharacter.UnicodeBlock INDIC_SIYAQ_NUMBERS;
-    field public static final int INDIC_SIYAQ_NUMBERS_ID = 286; // 0x11e
-    field public static final android.icu.lang.UCharacter.UnicodeBlock INSCRIPTIONAL_PAHLAVI;
-    field public static final int INSCRIPTIONAL_PAHLAVI_ID = 190; // 0xbe
-    field public static final android.icu.lang.UCharacter.UnicodeBlock INSCRIPTIONAL_PARTHIAN;
-    field public static final int INSCRIPTIONAL_PARTHIAN_ID = 189; // 0xbd
-    field public static final android.icu.lang.UCharacter.UnicodeBlock INVALID_CODE;
-    field public static final int INVALID_CODE_ID = -1; // 0xffffffff
-    field public static final android.icu.lang.UCharacter.UnicodeBlock IPA_EXTENSIONS;
-    field public static final int IPA_EXTENSIONS_ID = 5; // 0x5
-    field public static final android.icu.lang.UCharacter.UnicodeBlock JAVANESE;
-    field public static final int JAVANESE_ID = 181; // 0xb5
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KAITHI;
-    field public static final int KAITHI_ID = 193; // 0xc1
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KANA_EXTENDED_A;
-    field public static final int KANA_EXTENDED_A_ID = 275; // 0x113
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KANA_SUPPLEMENT;
-    field public static final int KANA_SUPPLEMENT_ID = 203; // 0xcb
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KANBUN;
-    field public static final int KANBUN_ID = 66; // 0x42
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KANGXI_RADICALS;
-    field public static final int KANGXI_RADICALS_ID = 59; // 0x3b
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KANNADA;
-    field public static final int KANNADA_ID = 22; // 0x16
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KATAKANA;
-    field public static final int KATAKANA_ID = 63; // 0x3f
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KATAKANA_PHONETIC_EXTENSIONS;
-    field public static final int KATAKANA_PHONETIC_EXTENSIONS_ID = 107; // 0x6b
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KAYAH_LI;
-    field public static final int KAYAH_LI_ID = 162; // 0xa2
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KHAROSHTHI;
-    field public static final int KHAROSHTHI_ID = 137; // 0x89
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KHITAN_SMALL_SCRIPT;
-    field public static final int KHITAN_SMALL_SCRIPT_ID = 304; // 0x130
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KHMER;
-    field public static final int KHMER_ID = 36; // 0x24
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KHMER_SYMBOLS;
-    field public static final int KHMER_SYMBOLS_ID = 113; // 0x71
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KHOJKI;
-    field public static final int KHOJKI_ID = 229; // 0xe5
-    field public static final android.icu.lang.UCharacter.UnicodeBlock KHUDAWADI;
-    field public static final int KHUDAWADI_ID = 230; // 0xe6
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LAO;
-    field public static final int LAO_ID = 26; // 0x1a
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LATIN_1_SUPPLEMENT;
-    field public static final int LATIN_1_SUPPLEMENT_ID = 2; // 0x2
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LATIN_EXTENDED_A;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LATIN_EXTENDED_ADDITIONAL;
-    field public static final int LATIN_EXTENDED_ADDITIONAL_ID = 38; // 0x26
-    field public static final int LATIN_EXTENDED_A_ID = 3; // 0x3
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LATIN_EXTENDED_B;
-    field public static final int LATIN_EXTENDED_B_ID = 4; // 0x4
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LATIN_EXTENDED_C;
-    field public static final int LATIN_EXTENDED_C_ID = 148; // 0x94
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LATIN_EXTENDED_D;
-    field public static final int LATIN_EXTENDED_D_ID = 149; // 0x95
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LATIN_EXTENDED_E;
-    field public static final int LATIN_EXTENDED_E_ID = 231; // 0xe7
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LEPCHA;
-    field public static final int LEPCHA_ID = 156; // 0x9c
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LETTERLIKE_SYMBOLS;
-    field public static final int LETTERLIKE_SYMBOLS_ID = 44; // 0x2c
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LIMBU;
-    field public static final int LIMBU_ID = 111; // 0x6f
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LINEAR_A;
-    field public static final int LINEAR_A_ID = 232; // 0xe8
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LINEAR_B_IDEOGRAMS;
-    field public static final int LINEAR_B_IDEOGRAMS_ID = 118; // 0x76
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LINEAR_B_SYLLABARY;
-    field public static final int LINEAR_B_SYLLABARY_ID = 117; // 0x75
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LISU;
-    field public static final int LISU_ID = 176; // 0xb0
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LISU_SUPPLEMENT;
-    field public static final int LISU_SUPPLEMENT_ID = 305; // 0x131
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LOW_SURROGATES;
-    field public static final int LOW_SURROGATES_ID = 77; // 0x4d
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LYCIAN;
-    field public static final int LYCIAN_ID = 167; // 0xa7
-    field public static final android.icu.lang.UCharacter.UnicodeBlock LYDIAN;
-    field public static final int LYDIAN_ID = 169; // 0xa9
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MAHAJANI;
-    field public static final int MAHAJANI_ID = 233; // 0xe9
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MAHJONG_TILES;
-    field public static final int MAHJONG_TILES_ID = 170; // 0xaa
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MAKASAR;
-    field public static final int MAKASAR_ID = 287; // 0x11f
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MALAYALAM;
-    field public static final int MALAYALAM_ID = 23; // 0x17
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MANDAIC;
-    field public static final int MANDAIC_ID = 198; // 0xc6
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MANICHAEAN;
-    field public static final int MANICHAEAN_ID = 234; // 0xea
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MARCHEN;
-    field public static final int MARCHEN_ID = 268; // 0x10c
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MASARAM_GONDI;
-    field public static final int MASARAM_GONDI_ID = 276; // 0x114
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MATHEMATICAL_ALPHANUMERIC_SYMBOLS;
-    field public static final int MATHEMATICAL_ALPHANUMERIC_SYMBOLS_ID = 93; // 0x5d
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MATHEMATICAL_OPERATORS;
-    field public static final int MATHEMATICAL_OPERATORS_ID = 47; // 0x2f
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MAYAN_NUMERALS;
-    field public static final int MAYAN_NUMERALS_ID = 288; // 0x120
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MEDEFAIDRIN;
-    field public static final int MEDEFAIDRIN_ID = 289; // 0x121
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MEETEI_MAYEK;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MEETEI_MAYEK_EXTENSIONS;
-    field public static final int MEETEI_MAYEK_EXTENSIONS_ID = 213; // 0xd5
-    field public static final int MEETEI_MAYEK_ID = 184; // 0xb8
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MENDE_KIKAKUI;
-    field public static final int MENDE_KIKAKUI_ID = 235; // 0xeb
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MEROITIC_CURSIVE;
-    field public static final int MEROITIC_CURSIVE_ID = 214; // 0xd6
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MEROITIC_HIEROGLYPHS;
-    field public static final int MEROITIC_HIEROGLYPHS_ID = 215; // 0xd7
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MIAO;
-    field public static final int MIAO_ID = 216; // 0xd8
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A;
-    field public static final int MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A_ID = 102; // 0x66
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B;
-    field public static final int MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B_ID = 105; // 0x69
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MISCELLANEOUS_SYMBOLS;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_ARROWS;
-    field public static final int MISCELLANEOUS_SYMBOLS_AND_ARROWS_ID = 115; // 0x73
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS;
-    field public static final int MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS_ID = 205; // 0xcd
-    field public static final int MISCELLANEOUS_SYMBOLS_ID = 55; // 0x37
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MISCELLANEOUS_TECHNICAL;
-    field public static final int MISCELLANEOUS_TECHNICAL_ID = 48; // 0x30
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MODI;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MODIFIER_TONE_LETTERS;
-    field public static final int MODIFIER_TONE_LETTERS_ID = 138; // 0x8a
-    field public static final int MODI_ID = 236; // 0xec
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MONGOLIAN;
-    field public static final int MONGOLIAN_ID = 37; // 0x25
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MONGOLIAN_SUPPLEMENT;
-    field public static final int MONGOLIAN_SUPPLEMENT_ID = 269; // 0x10d
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MRO;
-    field public static final int MRO_ID = 237; // 0xed
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MULTANI;
-    field public static final int MULTANI_ID = 259; // 0x103
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MUSICAL_SYMBOLS;
-    field public static final int MUSICAL_SYMBOLS_ID = 92; // 0x5c
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MYANMAR;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MYANMAR_EXTENDED_A;
-    field public static final int MYANMAR_EXTENDED_A_ID = 182; // 0xb6
-    field public static final android.icu.lang.UCharacter.UnicodeBlock MYANMAR_EXTENDED_B;
-    field public static final int MYANMAR_EXTENDED_B_ID = 238; // 0xee
-    field public static final int MYANMAR_ID = 28; // 0x1c
-    field public static final android.icu.lang.UCharacter.UnicodeBlock NABATAEAN;
-    field public static final int NABATAEAN_ID = 239; // 0xef
-    field public static final android.icu.lang.UCharacter.UnicodeBlock NANDINAGARI;
-    field public static final int NANDINAGARI_ID = 294; // 0x126
-    field public static final android.icu.lang.UCharacter.UnicodeBlock NEWA;
-    field public static final int NEWA_ID = 270; // 0x10e
-    field public static final android.icu.lang.UCharacter.UnicodeBlock NEW_TAI_LUE;
-    field public static final int NEW_TAI_LUE_ID = 139; // 0x8b
-    field public static final android.icu.lang.UCharacter.UnicodeBlock NKO;
-    field public static final int NKO_ID = 146; // 0x92
-    field public static final android.icu.lang.UCharacter.UnicodeBlock NO_BLOCK;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock NUMBER_FORMS;
-    field public static final int NUMBER_FORMS_ID = 45; // 0x2d
-    field public static final android.icu.lang.UCharacter.UnicodeBlock NUSHU;
-    field public static final int NUSHU_ID = 277; // 0x115
-    field public static final android.icu.lang.UCharacter.UnicodeBlock NYIAKENG_PUACHUE_HMONG;
-    field public static final int NYIAKENG_PUACHUE_HMONG_ID = 295; // 0x127
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OGHAM;
-    field public static final int OGHAM_ID = 34; // 0x22
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OLD_HUNGARIAN;
-    field public static final int OLD_HUNGARIAN_ID = 260; // 0x104
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OLD_ITALIC;
-    field public static final int OLD_ITALIC_ID = 88; // 0x58
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OLD_NORTH_ARABIAN;
-    field public static final int OLD_NORTH_ARABIAN_ID = 240; // 0xf0
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OLD_PERMIC;
-    field public static final int OLD_PERMIC_ID = 241; // 0xf1
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OLD_PERSIAN;
-    field public static final int OLD_PERSIAN_ID = 140; // 0x8c
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OLD_SOGDIAN;
-    field public static final int OLD_SOGDIAN_ID = 290; // 0x122
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OLD_SOUTH_ARABIAN;
-    field public static final int OLD_SOUTH_ARABIAN_ID = 187; // 0xbb
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OLD_TURKIC;
-    field public static final int OLD_TURKIC_ID = 191; // 0xbf
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OL_CHIKI;
-    field public static final int OL_CHIKI_ID = 157; // 0x9d
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OPTICAL_CHARACTER_RECOGNITION;
-    field public static final int OPTICAL_CHARACTER_RECOGNITION_ID = 50; // 0x32
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ORIYA;
-    field public static final int ORIYA_ID = 19; // 0x13
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ORNAMENTAL_DINGBATS;
-    field public static final int ORNAMENTAL_DINGBATS_ID = 242; // 0xf2
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OSAGE;
-    field public static final int OSAGE_ID = 271; // 0x10f
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OSMANYA;
-    field public static final int OSMANYA_ID = 122; // 0x7a
-    field public static final android.icu.lang.UCharacter.UnicodeBlock OTTOMAN_SIYAQ_NUMBERS;
-    field public static final int OTTOMAN_SIYAQ_NUMBERS_ID = 296; // 0x128
-    field public static final android.icu.lang.UCharacter.UnicodeBlock PAHAWH_HMONG;
-    field public static final int PAHAWH_HMONG_ID = 243; // 0xf3
-    field public static final android.icu.lang.UCharacter.UnicodeBlock PALMYRENE;
-    field public static final int PALMYRENE_ID = 244; // 0xf4
-    field public static final android.icu.lang.UCharacter.UnicodeBlock PAU_CIN_HAU;
-    field public static final int PAU_CIN_HAU_ID = 245; // 0xf5
-    field public static final android.icu.lang.UCharacter.UnicodeBlock PHAGS_PA;
-    field public static final int PHAGS_PA_ID = 150; // 0x96
-    field public static final android.icu.lang.UCharacter.UnicodeBlock PHAISTOS_DISC;
-    field public static final int PHAISTOS_DISC_ID = 166; // 0xa6
-    field public static final android.icu.lang.UCharacter.UnicodeBlock PHOENICIAN;
-    field public static final int PHOENICIAN_ID = 151; // 0x97
-    field public static final android.icu.lang.UCharacter.UnicodeBlock PHONETIC_EXTENSIONS;
-    field public static final int PHONETIC_EXTENSIONS_ID = 114; // 0x72
-    field public static final android.icu.lang.UCharacter.UnicodeBlock PHONETIC_EXTENSIONS_SUPPLEMENT;
-    field public static final int PHONETIC_EXTENSIONS_SUPPLEMENT_ID = 141; // 0x8d
-    field public static final android.icu.lang.UCharacter.UnicodeBlock PLAYING_CARDS;
-    field public static final int PLAYING_CARDS_ID = 204; // 0xcc
-    field public static final android.icu.lang.UCharacter.UnicodeBlock PRIVATE_USE;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock PRIVATE_USE_AREA;
-    field public static final int PRIVATE_USE_AREA_ID = 78; // 0x4e
-    field public static final int PRIVATE_USE_ID = 78; // 0x4e
-    field public static final android.icu.lang.UCharacter.UnicodeBlock PSALTER_PAHLAVI;
-    field public static final int PSALTER_PAHLAVI_ID = 246; // 0xf6
-    field public static final android.icu.lang.UCharacter.UnicodeBlock REJANG;
-    field public static final int REJANG_ID = 163; // 0xa3
-    field public static final android.icu.lang.UCharacter.UnicodeBlock RUMI_NUMERAL_SYMBOLS;
-    field public static final int RUMI_NUMERAL_SYMBOLS_ID = 192; // 0xc0
-    field public static final android.icu.lang.UCharacter.UnicodeBlock RUNIC;
-    field public static final int RUNIC_ID = 35; // 0x23
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SAMARITAN;
-    field public static final int SAMARITAN_ID = 172; // 0xac
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SAURASHTRA;
-    field public static final int SAURASHTRA_ID = 161; // 0xa1
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SHARADA;
-    field public static final int SHARADA_ID = 217; // 0xd9
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SHAVIAN;
-    field public static final int SHAVIAN_ID = 121; // 0x79
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SHORTHAND_FORMAT_CONTROLS;
-    field public static final int SHORTHAND_FORMAT_CONTROLS_ID = 247; // 0xf7
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SIDDHAM;
-    field public static final int SIDDHAM_ID = 248; // 0xf8
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SINHALA;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SINHALA_ARCHAIC_NUMBERS;
-    field public static final int SINHALA_ARCHAIC_NUMBERS_ID = 249; // 0xf9
-    field public static final int SINHALA_ID = 24; // 0x18
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SMALL_FORM_VARIANTS;
-    field public static final int SMALL_FORM_VARIANTS_ID = 84; // 0x54
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SMALL_KANA_EXTENSION;
-    field public static final int SMALL_KANA_EXTENSION_ID = 297; // 0x129
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SOGDIAN;
-    field public static final int SOGDIAN_ID = 291; // 0x123
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SORA_SOMPENG;
-    field public static final int SORA_SOMPENG_ID = 218; // 0xda
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SOYOMBO;
-    field public static final int SOYOMBO_ID = 278; // 0x116
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SPACING_MODIFIER_LETTERS;
-    field public static final int SPACING_MODIFIER_LETTERS_ID = 6; // 0x6
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SPECIALS;
-    field public static final int SPECIALS_ID = 86; // 0x56
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SUNDANESE;
-    field public static final int SUNDANESE_ID = 155; // 0x9b
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SUNDANESE_SUPPLEMENT;
-    field public static final int SUNDANESE_SUPPLEMENT_ID = 219; // 0xdb
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPERSCRIPTS_AND_SUBSCRIPTS;
-    field public static final int SUPERSCRIPTS_AND_SUBSCRIPTS_ID = 41; // 0x29
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPPLEMENTAL_ARROWS_A;
-    field public static final int SUPPLEMENTAL_ARROWS_A_ID = 103; // 0x67
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPPLEMENTAL_ARROWS_B;
-    field public static final int SUPPLEMENTAL_ARROWS_B_ID = 104; // 0x68
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPPLEMENTAL_ARROWS_C;
-    field public static final int SUPPLEMENTAL_ARROWS_C_ID = 250; // 0xfa
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPPLEMENTAL_MATHEMATICAL_OPERATORS;
-    field public static final int SUPPLEMENTAL_MATHEMATICAL_OPERATORS_ID = 106; // 0x6a
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPPLEMENTAL_PUNCTUATION;
-    field public static final int SUPPLEMENTAL_PUNCTUATION_ID = 142; // 0x8e
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS;
-    field public static final int SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS_ID = 261; // 0x105
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_A;
-    field public static final int SUPPLEMENTARY_PRIVATE_USE_AREA_A_ID = 109; // 0x6d
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_B;
-    field public static final int SUPPLEMENTARY_PRIVATE_USE_AREA_B_ID = 110; // 0x6e
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SUTTON_SIGNWRITING;
-    field public static final int SUTTON_SIGNWRITING_ID = 262; // 0x106
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SYLOTI_NAGRI;
-    field public static final int SYLOTI_NAGRI_ID = 143; // 0x8f
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A;
-    field public static final int SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A_ID = 298; // 0x12a
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SYMBOLS_FOR_LEGACY_COMPUTING;
-    field public static final int SYMBOLS_FOR_LEGACY_COMPUTING_ID = 306; // 0x132
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SYRIAC;
-    field public static final int SYRIAC_ID = 13; // 0xd
-    field public static final android.icu.lang.UCharacter.UnicodeBlock SYRIAC_SUPPLEMENT;
-    field public static final int SYRIAC_SUPPLEMENT_ID = 279; // 0x117
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TAGALOG;
-    field public static final int TAGALOG_ID = 98; // 0x62
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TAGBANWA;
-    field public static final int TAGBANWA_ID = 101; // 0x65
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TAGS;
-    field public static final int TAGS_ID = 96; // 0x60
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TAI_LE;
-    field public static final int TAI_LE_ID = 112; // 0x70
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TAI_THAM;
-    field public static final int TAI_THAM_ID = 174; // 0xae
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TAI_VIET;
-    field public static final int TAI_VIET_ID = 183; // 0xb7
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TAI_XUAN_JING_SYMBOLS;
-    field public static final int TAI_XUAN_JING_SYMBOLS_ID = 124; // 0x7c
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TAKRI;
-    field public static final int TAKRI_ID = 220; // 0xdc
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TAMIL;
-    field public static final int TAMIL_ID = 20; // 0x14
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TAMIL_SUPPLEMENT;
-    field public static final int TAMIL_SUPPLEMENT_ID = 299; // 0x12b
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TANGUT;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TANGUT_COMPONENTS;
-    field public static final int TANGUT_COMPONENTS_ID = 273; // 0x111
-    field public static final int TANGUT_ID = 272; // 0x110
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TANGUT_SUPPLEMENT;
-    field public static final int TANGUT_SUPPLEMENT_ID = 307; // 0x133
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TELUGU;
-    field public static final int TELUGU_ID = 21; // 0x15
-    field public static final android.icu.lang.UCharacter.UnicodeBlock THAANA;
-    field public static final int THAANA_ID = 14; // 0xe
-    field public static final android.icu.lang.UCharacter.UnicodeBlock THAI;
-    field public static final int THAI_ID = 25; // 0x19
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TIBETAN;
-    field public static final int TIBETAN_ID = 27; // 0x1b
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TIFINAGH;
-    field public static final int TIFINAGH_ID = 144; // 0x90
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TIRHUTA;
-    field public static final int TIRHUTA_ID = 251; // 0xfb
-    field public static final android.icu.lang.UCharacter.UnicodeBlock TRANSPORT_AND_MAP_SYMBOLS;
-    field public static final int TRANSPORT_AND_MAP_SYMBOLS_ID = 207; // 0xcf
-    field public static final android.icu.lang.UCharacter.UnicodeBlock UGARITIC;
-    field public static final int UGARITIC_ID = 120; // 0x78
-    field public static final android.icu.lang.UCharacter.UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS;
-    field public static final android.icu.lang.UCharacter.UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED;
-    field public static final int UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_ID = 173; // 0xad
-    field public static final int UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_ID = 33; // 0x21
-    field public static final android.icu.lang.UCharacter.UnicodeBlock VAI;
-    field public static final int VAI_ID = 159; // 0x9f
-    field public static final android.icu.lang.UCharacter.UnicodeBlock VARIATION_SELECTORS;
-    field public static final int VARIATION_SELECTORS_ID = 108; // 0x6c
-    field public static final android.icu.lang.UCharacter.UnicodeBlock VARIATION_SELECTORS_SUPPLEMENT;
-    field public static final int VARIATION_SELECTORS_SUPPLEMENT_ID = 125; // 0x7d
-    field public static final android.icu.lang.UCharacter.UnicodeBlock VEDIC_EXTENSIONS;
-    field public static final int VEDIC_EXTENSIONS_ID = 175; // 0xaf
-    field public static final android.icu.lang.UCharacter.UnicodeBlock VERTICAL_FORMS;
-    field public static final int VERTICAL_FORMS_ID = 145; // 0x91
-    field public static final android.icu.lang.UCharacter.UnicodeBlock WANCHO;
-    field public static final int WANCHO_ID = 300; // 0x12c
-    field public static final android.icu.lang.UCharacter.UnicodeBlock WARANG_CITI;
-    field public static final int WARANG_CITI_ID = 252; // 0xfc
-    field public static final android.icu.lang.UCharacter.UnicodeBlock YEZIDI;
-    field public static final int YEZIDI_ID = 308; // 0x134
-    field public static final android.icu.lang.UCharacter.UnicodeBlock YIJING_HEXAGRAM_SYMBOLS;
-    field public static final int YIJING_HEXAGRAM_SYMBOLS_ID = 116; // 0x74
-    field public static final android.icu.lang.UCharacter.UnicodeBlock YI_RADICALS;
-    field public static final int YI_RADICALS_ID = 73; // 0x49
-    field public static final android.icu.lang.UCharacter.UnicodeBlock YI_SYLLABLES;
-    field public static final int YI_SYLLABLES_ID = 72; // 0x48
-    field public static final android.icu.lang.UCharacter.UnicodeBlock ZANABAZAR_SQUARE;
-    field public static final int ZANABAZAR_SQUARE_ID = 280; // 0x118
-  }
-
-  public static interface UCharacter.VerticalOrientation {
-    field public static final int ROTATED = 0; // 0x0
-    field public static final int TRANSFORMED_ROTATED = 1; // 0x1
-    field public static final int TRANSFORMED_UPRIGHT = 2; // 0x2
-    field public static final int UPRIGHT = 3; // 0x3
-  }
-
-  public static interface UCharacter.WordBreak {
-    field public static final int ALETTER = 1; // 0x1
-    field public static final int CR = 8; // 0x8
-    field public static final int DOUBLE_QUOTE = 16; // 0x10
-    field public static final int EXTEND = 9; // 0x9
-    field public static final int EXTENDNUMLET = 7; // 0x7
-    field public static final int E_BASE = 17; // 0x11
-    field public static final int E_BASE_GAZ = 18; // 0x12
-    field public static final int E_MODIFIER = 19; // 0x13
-    field public static final int FORMAT = 2; // 0x2
-    field public static final int GLUE_AFTER_ZWJ = 20; // 0x14
-    field public static final int HEBREW_LETTER = 14; // 0xe
-    field public static final int KATAKANA = 3; // 0x3
-    field public static final int LF = 10; // 0xa
-    field public static final int MIDLETTER = 4; // 0x4
-    field public static final int MIDNUM = 5; // 0x5
-    field public static final int MIDNUMLET = 11; // 0xb
-    field public static final int NEWLINE = 12; // 0xc
-    field public static final int NUMERIC = 6; // 0x6
-    field public static final int OTHER = 0; // 0x0
-    field public static final int REGIONAL_INDICATOR = 13; // 0xd
-    field public static final int SINGLE_QUOTE = 15; // 0xf
-    field public static final int WSEGSPACE = 22; // 0x16
-    field public static final int ZWJ = 21; // 0x15
-  }
-
-  public final class UCharacterCategory implements android.icu.lang.UCharacterEnums.ECharacterCategory {
-    method public static String toString(int);
-  }
-
-  public final class UCharacterDirection implements android.icu.lang.UCharacterEnums.ECharacterDirection {
-    method public static String toString(int);
-  }
-
-  public class UCharacterEnums {
-  }
-
-  public static interface UCharacterEnums.ECharacterCategory {
-    field public static final byte COMBINING_SPACING_MARK = 8; // 0x8
-    field public static final byte CONNECTOR_PUNCTUATION = 22; // 0x16
-    field public static final byte CONTROL = 15; // 0xf
-    field public static final byte CURRENCY_SYMBOL = 25; // 0x19
-    field public static final byte DASH_PUNCTUATION = 19; // 0x13
-    field public static final byte DECIMAL_DIGIT_NUMBER = 9; // 0x9
-    field public static final byte ENCLOSING_MARK = 7; // 0x7
-    field public static final byte END_PUNCTUATION = 21; // 0x15
-    field public static final byte FINAL_PUNCTUATION = 29; // 0x1d
-    field public static final byte FINAL_QUOTE_PUNCTUATION = 29; // 0x1d
-    field public static final byte FORMAT = 16; // 0x10
-    field public static final byte GENERAL_OTHER_TYPES = 0; // 0x0
-    field public static final byte INITIAL_PUNCTUATION = 28; // 0x1c
-    field public static final byte INITIAL_QUOTE_PUNCTUATION = 28; // 0x1c
-    field public static final byte LETTER_NUMBER = 10; // 0xa
-    field public static final byte LINE_SEPARATOR = 13; // 0xd
-    field public static final byte LOWERCASE_LETTER = 2; // 0x2
-    field public static final byte MATH_SYMBOL = 24; // 0x18
-    field public static final byte MODIFIER_LETTER = 4; // 0x4
-    field public static final byte MODIFIER_SYMBOL = 26; // 0x1a
-    field public static final byte NON_SPACING_MARK = 6; // 0x6
-    field public static final byte OTHER_LETTER = 5; // 0x5
-    field public static final byte OTHER_NUMBER = 11; // 0xb
-    field public static final byte OTHER_PUNCTUATION = 23; // 0x17
-    field public static final byte OTHER_SYMBOL = 27; // 0x1b
-    field public static final byte PARAGRAPH_SEPARATOR = 14; // 0xe
-    field public static final byte PRIVATE_USE = 17; // 0x11
-    field public static final byte SPACE_SEPARATOR = 12; // 0xc
-    field public static final byte START_PUNCTUATION = 20; // 0x14
-    field public static final byte SURROGATE = 18; // 0x12
-    field public static final byte TITLECASE_LETTER = 3; // 0x3
-    field public static final byte UNASSIGNED = 0; // 0x0
-    field public static final byte UPPERCASE_LETTER = 1; // 0x1
-  }
-
-  public static interface UCharacterEnums.ECharacterDirection {
-    field public static final int ARABIC_NUMBER = 5; // 0x5
-    field public static final int BLOCK_SEPARATOR = 7; // 0x7
-    field public static final int BOUNDARY_NEUTRAL = 18; // 0x12
-    field public static final int COMMON_NUMBER_SEPARATOR = 6; // 0x6
-    field public static final byte DIRECTIONALITY_ARABIC_NUMBER = 5; // 0x5
-    field public static final byte DIRECTIONALITY_BOUNDARY_NEUTRAL = 18; // 0x12
-    field public static final byte DIRECTIONALITY_COMMON_NUMBER_SEPARATOR = 6; // 0x6
-    field public static final byte DIRECTIONALITY_EUROPEAN_NUMBER = 2; // 0x2
-    field public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR = 3; // 0x3
-    field public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR = 4; // 0x4
-    field public static final byte DIRECTIONALITY_LEFT_TO_RIGHT = 0; // 0x0
-    field public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING = 11; // 0xb
-    field public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE = 12; // 0xc
-    field public static final byte DIRECTIONALITY_NONSPACING_MARK = 17; // 0x11
-    field public static final byte DIRECTIONALITY_OTHER_NEUTRALS = 10; // 0xa
-    field public static final byte DIRECTIONALITY_PARAGRAPH_SEPARATOR = 7; // 0x7
-    field public static final byte DIRECTIONALITY_POP_DIRECTIONAL_FORMAT = 16; // 0x10
-    field public static final byte DIRECTIONALITY_RIGHT_TO_LEFT = 1; // 0x1
-    field public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC = 13; // 0xd
-    field public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING = 14; // 0xe
-    field public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE = 15; // 0xf
-    field public static final byte DIRECTIONALITY_SEGMENT_SEPARATOR = 8; // 0x8
-    field public static final byte DIRECTIONALITY_UNDEFINED = -1; // 0xffffffff
-    field public static final byte DIRECTIONALITY_WHITESPACE = 9; // 0x9
-    field public static final int DIR_NON_SPACING_MARK = 17; // 0x11
-    field public static final int EUROPEAN_NUMBER = 2; // 0x2
-    field public static final int EUROPEAN_NUMBER_SEPARATOR = 3; // 0x3
-    field public static final int EUROPEAN_NUMBER_TERMINATOR = 4; // 0x4
-    field public static final byte FIRST_STRONG_ISOLATE = 19; // 0x13
-    field public static final int LEFT_TO_RIGHT = 0; // 0x0
-    field public static final int LEFT_TO_RIGHT_EMBEDDING = 11; // 0xb
-    field public static final byte LEFT_TO_RIGHT_ISOLATE = 20; // 0x14
-    field public static final int LEFT_TO_RIGHT_OVERRIDE = 12; // 0xc
-    field public static final int OTHER_NEUTRAL = 10; // 0xa
-    field public static final int POP_DIRECTIONAL_FORMAT = 16; // 0x10
-    field public static final byte POP_DIRECTIONAL_ISOLATE = 22; // 0x16
-    field public static final int RIGHT_TO_LEFT = 1; // 0x1
-    field public static final int RIGHT_TO_LEFT_ARABIC = 13; // 0xd
-    field public static final int RIGHT_TO_LEFT_EMBEDDING = 14; // 0xe
-    field public static final byte RIGHT_TO_LEFT_ISOLATE = 21; // 0x15
-    field public static final int RIGHT_TO_LEFT_OVERRIDE = 15; // 0xf
-    field public static final int SEGMENT_SEPARATOR = 8; // 0x8
-    field public static final int WHITE_SPACE_NEUTRAL = 9; // 0x9
-  }
-
-  public interface UProperty {
-    field public static final int AGE = 16384; // 0x4000
-    field public static final int ALPHABETIC = 0; // 0x0
-    field public static final int ASCII_HEX_DIGIT = 1; // 0x1
-    field public static final int BIDI_CLASS = 4096; // 0x1000
-    field public static final int BIDI_CONTROL = 2; // 0x2
-    field public static final int BIDI_MIRRORED = 3; // 0x3
-    field public static final int BIDI_MIRRORING_GLYPH = 16385; // 0x4001
-    field public static final int BIDI_PAIRED_BRACKET = 16397; // 0x400d
-    field public static final int BIDI_PAIRED_BRACKET_TYPE = 4117; // 0x1015
-    field public static final int BINARY_START = 0; // 0x0
-    field public static final int BLOCK = 4097; // 0x1001
-    field public static final int CANONICAL_COMBINING_CLASS = 4098; // 0x1002
-    field public static final int CASED = 49; // 0x31
-    field public static final int CASE_FOLDING = 16386; // 0x4002
-    field public static final int CASE_IGNORABLE = 50; // 0x32
-    field public static final int CASE_SENSITIVE = 34; // 0x22
-    field public static final int CHANGES_WHEN_CASEFOLDED = 54; // 0x36
-    field public static final int CHANGES_WHEN_CASEMAPPED = 55; // 0x37
-    field public static final int CHANGES_WHEN_LOWERCASED = 51; // 0x33
-    field public static final int CHANGES_WHEN_NFKC_CASEFOLDED = 56; // 0x38
-    field public static final int CHANGES_WHEN_TITLECASED = 53; // 0x35
-    field public static final int CHANGES_WHEN_UPPERCASED = 52; // 0x34
-    field public static final int DASH = 4; // 0x4
-    field public static final int DECOMPOSITION_TYPE = 4099; // 0x1003
-    field public static final int DEFAULT_IGNORABLE_CODE_POINT = 5; // 0x5
-    field public static final int DEPRECATED = 6; // 0x6
-    field public static final int DIACRITIC = 7; // 0x7
-    field public static final int DOUBLE_START = 12288; // 0x3000
-    field public static final int EAST_ASIAN_WIDTH = 4100; // 0x1004
-    field public static final int EMOJI = 57; // 0x39
-    field public static final int EMOJI_COMPONENT = 61; // 0x3d
-    field public static final int EMOJI_MODIFIER = 59; // 0x3b
-    field public static final int EMOJI_MODIFIER_BASE = 60; // 0x3c
-    field public static final int EMOJI_PRESENTATION = 58; // 0x3a
-    field public static final int EXTENDED_PICTOGRAPHIC = 64; // 0x40
-    field public static final int EXTENDER = 8; // 0x8
-    field public static final int FULL_COMPOSITION_EXCLUSION = 9; // 0x9
-    field public static final int GENERAL_CATEGORY = 4101; // 0x1005
-    field public static final int GENERAL_CATEGORY_MASK = 8192; // 0x2000
-    field public static final int GRAPHEME_BASE = 10; // 0xa
-    field public static final int GRAPHEME_CLUSTER_BREAK = 4114; // 0x1012
-    field public static final int GRAPHEME_EXTEND = 11; // 0xb
-    field public static final int GRAPHEME_LINK = 12; // 0xc
-    field public static final int HANGUL_SYLLABLE_TYPE = 4107; // 0x100b
-    field public static final int HEX_DIGIT = 13; // 0xd
-    field public static final int HYPHEN = 14; // 0xe
-    field public static final int IDEOGRAPHIC = 17; // 0x11
-    field public static final int IDS_BINARY_OPERATOR = 18; // 0x12
-    field public static final int IDS_TRINARY_OPERATOR = 19; // 0x13
-    field public static final int ID_CONTINUE = 15; // 0xf
-    field public static final int ID_START = 16; // 0x10
-    field public static final int INDIC_POSITIONAL_CATEGORY = 4118; // 0x1016
-    field public static final int INDIC_SYLLABIC_CATEGORY = 4119; // 0x1017
-    field public static final int INT_START = 4096; // 0x1000
-    field public static final int JOINING_GROUP = 4102; // 0x1006
-    field public static final int JOINING_TYPE = 4103; // 0x1007
-    field public static final int JOIN_CONTROL = 20; // 0x14
-    field public static final int LEAD_CANONICAL_COMBINING_CLASS = 4112; // 0x1010
-    field public static final int LINE_BREAK = 4104; // 0x1008
-    field public static final int LOGICAL_ORDER_EXCEPTION = 21; // 0x15
-    field public static final int LOWERCASE = 22; // 0x16
-    field public static final int LOWERCASE_MAPPING = 16388; // 0x4004
-    field public static final int MASK_START = 8192; // 0x2000
-    field public static final int MATH = 23; // 0x17
-    field public static final int NAME = 16389; // 0x4005
-    field public static final int NFC_INERT = 39; // 0x27
-    field public static final int NFC_QUICK_CHECK = 4110; // 0x100e
-    field public static final int NFD_INERT = 37; // 0x25
-    field public static final int NFD_QUICK_CHECK = 4108; // 0x100c
-    field public static final int NFKC_INERT = 40; // 0x28
-    field public static final int NFKC_QUICK_CHECK = 4111; // 0x100f
-    field public static final int NFKD_INERT = 38; // 0x26
-    field public static final int NFKD_QUICK_CHECK = 4109; // 0x100d
-    field public static final int NONCHARACTER_CODE_POINT = 24; // 0x18
-    field public static final int NUMERIC_TYPE = 4105; // 0x1009
-    field public static final int NUMERIC_VALUE = 12288; // 0x3000
-    field public static final int OTHER_PROPERTY_START = 28672; // 0x7000
-    field public static final int PATTERN_SYNTAX = 42; // 0x2a
-    field public static final int PATTERN_WHITE_SPACE = 43; // 0x2b
-    field public static final int POSIX_ALNUM = 44; // 0x2c
-    field public static final int POSIX_BLANK = 45; // 0x2d
-    field public static final int POSIX_GRAPH = 46; // 0x2e
-    field public static final int POSIX_PRINT = 47; // 0x2f
-    field public static final int POSIX_XDIGIT = 48; // 0x30
-    field public static final int PREPENDED_CONCATENATION_MARK = 63; // 0x3f
-    field public static final int QUOTATION_MARK = 25; // 0x19
-    field public static final int RADICAL = 26; // 0x1a
-    field public static final int REGIONAL_INDICATOR = 62; // 0x3e
-    field public static final int SCRIPT = 4106; // 0x100a
-    field public static final int SCRIPT_EXTENSIONS = 28672; // 0x7000
-    field public static final int SEGMENT_STARTER = 41; // 0x29
-    field public static final int SENTENCE_BREAK = 4115; // 0x1013
-    field public static final int SIMPLE_CASE_FOLDING = 16390; // 0x4006
-    field public static final int SIMPLE_LOWERCASE_MAPPING = 16391; // 0x4007
-    field public static final int SIMPLE_TITLECASE_MAPPING = 16392; // 0x4008
-    field public static final int SIMPLE_UPPERCASE_MAPPING = 16393; // 0x4009
-    field public static final int SOFT_DOTTED = 27; // 0x1b
-    field public static final int STRING_START = 16384; // 0x4000
-    field public static final int S_TERM = 35; // 0x23
-    field public static final int TERMINAL_PUNCTUATION = 28; // 0x1c
-    field public static final int TITLECASE_MAPPING = 16394; // 0x400a
-    field public static final int TRAIL_CANONICAL_COMBINING_CLASS = 4113; // 0x1011
-    field public static final int UNIFIED_IDEOGRAPH = 29; // 0x1d
-    field public static final int UPPERCASE = 30; // 0x1e
-    field public static final int UPPERCASE_MAPPING = 16396; // 0x400c
-    field public static final int VARIATION_SELECTOR = 36; // 0x24
-    field public static final int VERTICAL_ORIENTATION = 4120; // 0x1018
-    field public static final int WHITE_SPACE = 31; // 0x1f
-    field public static final int WORD_BREAK = 4116; // 0x1014
-    field public static final int XID_CONTINUE = 32; // 0x20
-    field public static final int XID_START = 33; // 0x21
-  }
-
-  public static interface UProperty.NameChoice {
-    field public static final int LONG = 1; // 0x1
-    field public static final int SHORT = 0; // 0x0
-  }
-
-  public final class UScript {
-    method public static boolean breaksBetweenLetters(int);
-    method public static int[] getCode(java.util.Locale);
-    method public static int[] getCode(android.icu.util.ULocale);
-    method public static int[] getCode(String);
-    method public static int getCodeFromName(String);
-    method public static String getName(int);
-    method public static String getSampleString(int);
-    method public static int getScript(int);
-    method public static int getScriptExtensions(int, java.util.BitSet);
-    method public static String getShortName(int);
-    method public static android.icu.lang.UScript.ScriptUsage getUsage(int);
-    method public static boolean hasScript(int, int);
-    method public static boolean isCased(int);
-    method public static boolean isRightToLeft(int);
-    field public static final int ADLAM = 167; // 0xa7
-    field public static final int AFAKA = 147; // 0x93
-    field public static final int AHOM = 161; // 0xa1
-    field public static final int ANATOLIAN_HIEROGLYPHS = 156; // 0x9c
-    field public static final int ARABIC = 2; // 0x2
-    field public static final int ARMENIAN = 3; // 0x3
-    field public static final int AVESTAN = 117; // 0x75
-    field public static final int BALINESE = 62; // 0x3e
-    field public static final int BAMUM = 130; // 0x82
-    field public static final int BASSA_VAH = 134; // 0x86
-    field public static final int BATAK = 63; // 0x3f
-    field public static final int BENGALI = 4; // 0x4
-    field public static final int BHAIKSUKI = 168; // 0xa8
-    field public static final int BLISSYMBOLS = 64; // 0x40
-    field public static final int BOOK_PAHLAVI = 124; // 0x7c
-    field public static final int BOPOMOFO = 5; // 0x5
-    field public static final int BRAHMI = 65; // 0x41
-    field public static final int BRAILLE = 46; // 0x2e
-    field public static final int BUGINESE = 55; // 0x37
-    field public static final int BUHID = 44; // 0x2c
-    field public static final int CANADIAN_ABORIGINAL = 40; // 0x28
-    field public static final int CARIAN = 104; // 0x68
-    field public static final int CAUCASIAN_ALBANIAN = 159; // 0x9f
-    field public static final int CHAKMA = 118; // 0x76
-    field public static final int CHAM = 66; // 0x42
-    field public static final int CHEROKEE = 6; // 0x6
-    field public static final int CHORASMIAN = 189; // 0xbd
-    field public static final int CIRTH = 67; // 0x43
-    field public static final int COMMON = 0; // 0x0
-    field public static final int COPTIC = 7; // 0x7
-    field public static final int CUNEIFORM = 101; // 0x65
-    field public static final int CYPRIOT = 47; // 0x2f
-    field public static final int CYRILLIC = 8; // 0x8
-    field public static final int DEMOTIC_EGYPTIAN = 69; // 0x45
-    field public static final int DESERET = 9; // 0x9
-    field public static final int DEVANAGARI = 10; // 0xa
-    field public static final int DIVES_AKURU = 190; // 0xbe
-    field public static final int DOGRA = 178; // 0xb2
-    field public static final int DUPLOYAN = 135; // 0x87
-    field public static final int EASTERN_SYRIAC = 97; // 0x61
-    field public static final int EGYPTIAN_HIEROGLYPHS = 71; // 0x47
-    field public static final int ELBASAN = 136; // 0x88
-    field public static final int ELYMAIC = 185; // 0xb9
-    field public static final int ESTRANGELO_SYRIAC = 95; // 0x5f
-    field public static final int ETHIOPIC = 11; // 0xb
-    field public static final int GEORGIAN = 12; // 0xc
-    field public static final int GLAGOLITIC = 56; // 0x38
-    field public static final int GOTHIC = 13; // 0xd
-    field public static final int GRANTHA = 137; // 0x89
-    field public static final int GREEK = 14; // 0xe
-    field public static final int GUJARATI = 15; // 0xf
-    field public static final int GUNJALA_GONDI = 179; // 0xb3
-    field public static final int GURMUKHI = 16; // 0x10
-    field public static final int HAN = 17; // 0x11
-    field public static final int HANGUL = 18; // 0x12
-    field public static final int HANIFI_ROHINGYA = 182; // 0xb6
-    field public static final int HANUNOO = 43; // 0x2b
-    field public static final int HAN_WITH_BOPOMOFO = 172; // 0xac
-    field public static final int HARAPPAN_INDUS = 77; // 0x4d
-    field public static final int HATRAN = 162; // 0xa2
-    field public static final int HEBREW = 19; // 0x13
-    field public static final int HIERATIC_EGYPTIAN = 70; // 0x46
-    field public static final int HIRAGANA = 20; // 0x14
-    field public static final int IMPERIAL_ARAMAIC = 116; // 0x74
-    field public static final int INHERITED = 1; // 0x1
-    field public static final int INSCRIPTIONAL_PAHLAVI = 122; // 0x7a
-    field public static final int INSCRIPTIONAL_PARTHIAN = 125; // 0x7d
-    field public static final int INVALID_CODE = -1; // 0xffffffff
-    field public static final int JAMO = 173; // 0xad
-    field public static final int JAPANESE = 105; // 0x69
-    field public static final int JAVANESE = 78; // 0x4e
-    field public static final int JURCHEN = 148; // 0x94
-    field public static final int KAITHI = 120; // 0x78
-    field public static final int KANNADA = 21; // 0x15
-    field public static final int KATAKANA = 22; // 0x16
-    field public static final int KATAKANA_OR_HIRAGANA = 54; // 0x36
-    field public static final int KAYAH_LI = 79; // 0x4f
-    field public static final int KHAROSHTHI = 57; // 0x39
-    field public static final int KHITAN_SMALL_SCRIPT = 191; // 0xbf
-    field public static final int KHMER = 23; // 0x17
-    field public static final int KHOJKI = 157; // 0x9d
-    field public static final int KHUDAWADI = 145; // 0x91
-    field public static final int KHUTSURI = 72; // 0x48
-    field public static final int KOREAN = 119; // 0x77
-    field public static final int KPELLE = 138; // 0x8a
-    field public static final int LANNA = 106; // 0x6a
-    field public static final int LAO = 24; // 0x18
-    field public static final int LATIN = 25; // 0x19
-    field public static final int LATIN_FRAKTUR = 80; // 0x50
-    field public static final int LATIN_GAELIC = 81; // 0x51
-    field public static final int LEPCHA = 82; // 0x52
-    field public static final int LIMBU = 48; // 0x30
-    field public static final int LINEAR_A = 83; // 0x53
-    field public static final int LINEAR_B = 49; // 0x31
-    field public static final int LISU = 131; // 0x83
-    field public static final int LOMA = 139; // 0x8b
-    field public static final int LYCIAN = 107; // 0x6b
-    field public static final int LYDIAN = 108; // 0x6c
-    field public static final int MAHAJANI = 160; // 0xa0
-    field public static final int MAKASAR = 180; // 0xb4
-    field public static final int MALAYALAM = 26; // 0x1a
-    field public static final int MANDAEAN = 84; // 0x54
-    field public static final int MANDAIC = 84; // 0x54
-    field public static final int MANICHAEAN = 121; // 0x79
-    field public static final int MARCHEN = 169; // 0xa9
-    field public static final int MASARAM_GONDI = 175; // 0xaf
-    field public static final int MATHEMATICAL_NOTATION = 128; // 0x80
-    field public static final int MAYAN_HIEROGLYPHS = 85; // 0x55
-    field public static final int MEDEFAIDRIN = 181; // 0xb5
-    field public static final int MEITEI_MAYEK = 115; // 0x73
-    field public static final int MENDE = 140; // 0x8c
-    field public static final int MEROITIC = 86; // 0x56
-    field public static final int MEROITIC_CURSIVE = 141; // 0x8d
-    field public static final int MEROITIC_HIEROGLYPHS = 86; // 0x56
-    field public static final int MIAO = 92; // 0x5c
-    field public static final int MODI = 163; // 0xa3
-    field public static final int MONGOLIAN = 27; // 0x1b
-    field public static final int MOON = 114; // 0x72
-    field public static final int MRO = 149; // 0x95
-    field public static final int MULTANI = 164; // 0xa4
-    field public static final int MYANMAR = 28; // 0x1c
-    field public static final int NABATAEAN = 143; // 0x8f
-    field public static final int NAKHI_GEBA = 132; // 0x84
-    field public static final int NANDINAGARI = 187; // 0xbb
-    field public static final int NEWA = 170; // 0xaa
-    field public static final int NEW_TAI_LUE = 59; // 0x3b
-    field public static final int NKO = 87; // 0x57
-    field public static final int NUSHU = 150; // 0x96
-    field public static final int NYIAKENG_PUACHUE_HMONG = 186; // 0xba
-    field public static final int OGHAM = 29; // 0x1d
-    field public static final int OLD_CHURCH_SLAVONIC_CYRILLIC = 68; // 0x44
-    field public static final int OLD_HUNGARIAN = 76; // 0x4c
-    field public static final int OLD_ITALIC = 30; // 0x1e
-    field public static final int OLD_NORTH_ARABIAN = 142; // 0x8e
-    field public static final int OLD_PERMIC = 89; // 0x59
-    field public static final int OLD_PERSIAN = 61; // 0x3d
-    field public static final int OLD_SOGDIAN = 184; // 0xb8
-    field public static final int OLD_SOUTH_ARABIAN = 133; // 0x85
-    field public static final int OL_CHIKI = 109; // 0x6d
-    field public static final int ORIYA = 31; // 0x1f
-    field public static final int ORKHON = 88; // 0x58
-    field public static final int OSAGE = 171; // 0xab
-    field public static final int OSMANYA = 50; // 0x32
-    field public static final int PAHAWH_HMONG = 75; // 0x4b
-    field public static final int PALMYRENE = 144; // 0x90
-    field public static final int PAU_CIN_HAU = 165; // 0xa5
-    field public static final int PHAGS_PA = 90; // 0x5a
-    field public static final int PHOENICIAN = 91; // 0x5b
-    field public static final int PHONETIC_POLLARD = 92; // 0x5c
-    field public static final int PSALTER_PAHLAVI = 123; // 0x7b
-    field public static final int REJANG = 110; // 0x6e
-    field public static final int RONGORONGO = 93; // 0x5d
-    field public static final int RUNIC = 32; // 0x20
-    field public static final int SAMARITAN = 126; // 0x7e
-    field public static final int SARATI = 94; // 0x5e
-    field public static final int SAURASHTRA = 111; // 0x6f
-    field public static final int SHARADA = 151; // 0x97
-    field public static final int SHAVIAN = 51; // 0x33
-    field public static final int SIDDHAM = 166; // 0xa6
-    field public static final int SIGN_WRITING = 112; // 0x70
-    field public static final int SIMPLIFIED_HAN = 73; // 0x49
-    field public static final int SINDHI = 145; // 0x91
-    field public static final int SINHALA = 33; // 0x21
-    field public static final int SOGDIAN = 183; // 0xb7
-    field public static final int SORA_SOMPENG = 152; // 0x98
-    field public static final int SOYOMBO = 176; // 0xb0
-    field public static final int SUNDANESE = 113; // 0x71
-    field public static final int SYLOTI_NAGRI = 58; // 0x3a
-    field public static final int SYMBOLS = 129; // 0x81
-    field public static final int SYMBOLS_EMOJI = 174; // 0xae
-    field public static final int SYRIAC = 34; // 0x22
-    field public static final int TAGALOG = 42; // 0x2a
-    field public static final int TAGBANWA = 45; // 0x2d
-    field public static final int TAI_LE = 52; // 0x34
-    field public static final int TAI_VIET = 127; // 0x7f
-    field public static final int TAKRI = 153; // 0x99
-    field public static final int TAMIL = 35; // 0x23
-    field public static final int TANGUT = 154; // 0x9a
-    field public static final int TELUGU = 36; // 0x24
-    field public static final int TENGWAR = 98; // 0x62
-    field public static final int THAANA = 37; // 0x25
-    field public static final int THAI = 38; // 0x26
-    field public static final int TIBETAN = 39; // 0x27
-    field public static final int TIFINAGH = 60; // 0x3c
-    field public static final int TIRHUTA = 158; // 0x9e
-    field public static final int TRADITIONAL_HAN = 74; // 0x4a
-    field public static final int UCAS = 40; // 0x28
-    field public static final int UGARITIC = 53; // 0x35
-    field public static final int UNKNOWN = 103; // 0x67
-    field public static final int UNWRITTEN_LANGUAGES = 102; // 0x66
-    field public static final int VAI = 99; // 0x63
-    field public static final int VISIBLE_SPEECH = 100; // 0x64
-    field public static final int WANCHO = 188; // 0xbc
-    field public static final int WARANG_CITI = 146; // 0x92
-    field public static final int WESTERN_SYRIAC = 96; // 0x60
-    field public static final int WOLEAI = 155; // 0x9b
-    field public static final int YEZIDI = 192; // 0xc0
-    field public static final int YI = 41; // 0x29
-    field public static final int ZANABAZAR_SQUARE = 177; // 0xb1
-  }
-
-  public enum UScript.ScriptUsage {
-    enum_constant public static final android.icu.lang.UScript.ScriptUsage ASPIRATIONAL;
-    enum_constant public static final android.icu.lang.UScript.ScriptUsage EXCLUDED;
-    enum_constant public static final android.icu.lang.UScript.ScriptUsage LIMITED_USE;
-    enum_constant public static final android.icu.lang.UScript.ScriptUsage NOT_ENCODED;
-    enum_constant public static final android.icu.lang.UScript.ScriptUsage RECOMMENDED;
-    enum_constant public static final android.icu.lang.UScript.ScriptUsage UNKNOWN;
-  }
-
-}
-
-package android.icu.math {
-
-  public class BigDecimal extends java.lang.Number implements java.lang.Comparable<android.icu.math.BigDecimal> java.io.Serializable {
-    ctor public BigDecimal(java.math.BigDecimal);
-    ctor public BigDecimal(java.math.BigInteger);
-    ctor public BigDecimal(java.math.BigInteger, int);
-    ctor public BigDecimal(char[]);
-    ctor public BigDecimal(char[], int, int);
-    ctor public BigDecimal(double);
-    ctor public BigDecimal(int);
-    ctor public BigDecimal(long);
-    ctor public BigDecimal(String);
-    method public android.icu.math.BigDecimal abs();
-    method public android.icu.math.BigDecimal abs(android.icu.math.MathContext);
-    method public android.icu.math.BigDecimal add(android.icu.math.BigDecimal);
-    method public android.icu.math.BigDecimal add(android.icu.math.BigDecimal, android.icu.math.MathContext);
-    method public byte byteValueExact();
-    method public int compareTo(android.icu.math.BigDecimal);
-    method public int compareTo(android.icu.math.BigDecimal, android.icu.math.MathContext);
-    method public android.icu.math.BigDecimal divide(android.icu.math.BigDecimal);
-    method public android.icu.math.BigDecimal divide(android.icu.math.BigDecimal, int);
-    method public android.icu.math.BigDecimal divide(android.icu.math.BigDecimal, int, int);
-    method public android.icu.math.BigDecimal divide(android.icu.math.BigDecimal, android.icu.math.MathContext);
-    method public android.icu.math.BigDecimal divideInteger(android.icu.math.BigDecimal);
-    method public android.icu.math.BigDecimal divideInteger(android.icu.math.BigDecimal, android.icu.math.MathContext);
-    method public double doubleValue();
-    method public float floatValue();
-    method public String format(int, int);
-    method public String format(int, int, int, int, int, int);
-    method public int intValue();
-    method public int intValueExact();
-    method public long longValue();
-    method public long longValueExact();
-    method public android.icu.math.BigDecimal max(android.icu.math.BigDecimal);
-    method public android.icu.math.BigDecimal max(android.icu.math.BigDecimal, android.icu.math.MathContext);
-    method public android.icu.math.BigDecimal min(android.icu.math.BigDecimal);
-    method public android.icu.math.BigDecimal min(android.icu.math.BigDecimal, android.icu.math.MathContext);
-    method public android.icu.math.BigDecimal movePointLeft(int);
-    method public android.icu.math.BigDecimal movePointRight(int);
-    method public android.icu.math.BigDecimal multiply(android.icu.math.BigDecimal);
-    method public android.icu.math.BigDecimal multiply(android.icu.math.BigDecimal, android.icu.math.MathContext);
-    method public android.icu.math.BigDecimal negate();
-    method public android.icu.math.BigDecimal negate(android.icu.math.MathContext);
-    method public android.icu.math.BigDecimal plus();
-    method public android.icu.math.BigDecimal plus(android.icu.math.MathContext);
-    method public android.icu.math.BigDecimal pow(android.icu.math.BigDecimal);
-    method public android.icu.math.BigDecimal pow(android.icu.math.BigDecimal, android.icu.math.MathContext);
-    method public android.icu.math.BigDecimal remainder(android.icu.math.BigDecimal);
-    method public android.icu.math.BigDecimal remainder(android.icu.math.BigDecimal, android.icu.math.MathContext);
-    method public int scale();
-    method public android.icu.math.BigDecimal setScale(int);
-    method public android.icu.math.BigDecimal setScale(int, int);
-    method public short shortValueExact();
-    method public int signum();
-    method public android.icu.math.BigDecimal subtract(android.icu.math.BigDecimal);
-    method public android.icu.math.BigDecimal subtract(android.icu.math.BigDecimal, android.icu.math.MathContext);
-    method public java.math.BigDecimal toBigDecimal();
-    method public java.math.BigInteger toBigInteger();
-    method public java.math.BigInteger toBigIntegerExact();
-    method public char[] toCharArray();
-    method public java.math.BigInteger unscaledValue();
-    method public static android.icu.math.BigDecimal valueOf(double);
-    method public static android.icu.math.BigDecimal valueOf(long);
-    method public static android.icu.math.BigDecimal valueOf(long, int);
-    field public static final android.icu.math.BigDecimal ONE;
-    field public static final int ROUND_CEILING = 2; // 0x2
-    field public static final int ROUND_DOWN = 1; // 0x1
-    field public static final int ROUND_FLOOR = 3; // 0x3
-    field public static final int ROUND_HALF_DOWN = 5; // 0x5
-    field public static final int ROUND_HALF_EVEN = 6; // 0x6
-    field public static final int ROUND_HALF_UP = 4; // 0x4
-    field public static final int ROUND_UNNECESSARY = 7; // 0x7
-    field public static final int ROUND_UP = 0; // 0x0
-    field public static final android.icu.math.BigDecimal TEN;
-    field public static final android.icu.math.BigDecimal ZERO;
-  }
-
-  public final class MathContext implements java.io.Serializable {
-    ctor public MathContext(int);
-    ctor public MathContext(int, int);
-    ctor public MathContext(int, int, boolean);
-    ctor public MathContext(int, int, boolean, int);
-    method public int getDigits();
-    method public int getForm();
-    method public boolean getLostDigits();
-    method public int getRoundingMode();
-    field public static final android.icu.math.MathContext DEFAULT;
-    field public static final int ENGINEERING = 2; // 0x2
-    field public static final int PLAIN = 0; // 0x0
-    field public static final int ROUND_CEILING = 2; // 0x2
-    field public static final int ROUND_DOWN = 1; // 0x1
-    field public static final int ROUND_FLOOR = 3; // 0x3
-    field public static final int ROUND_HALF_DOWN = 5; // 0x5
-    field public static final int ROUND_HALF_EVEN = 6; // 0x6
-    field public static final int ROUND_HALF_UP = 4; // 0x4
-    field public static final int ROUND_UNNECESSARY = 7; // 0x7
-    field public static final int ROUND_UP = 0; // 0x0
-    field public static final int SCIENTIFIC = 1; // 0x1
-  }
-
-}
-
-package android.icu.number {
-
-  public class CompactNotation extends android.icu.number.Notation {
-  }
-
-  public abstract class CurrencyPrecision extends android.icu.number.Precision {
-    method public android.icu.number.Precision withCurrency(android.icu.util.Currency);
-  }
-
-  public class FormattedNumber implements java.lang.CharSequence {
-    method public char charAt(int);
-    method public int length();
-    method public CharSequence subSequence(int, int);
-    method public java.math.BigDecimal toBigDecimal();
-    method public java.text.AttributedCharacterIterator toCharacterIterator();
-  }
-
-  public class FormattedNumberRange implements java.lang.CharSequence {
-    method public char charAt(int);
-    method public java.math.BigDecimal getFirstBigDecimal();
-    method public android.icu.number.NumberRangeFormatter.RangeIdentityResult getIdentityResult();
-    method public java.math.BigDecimal getSecondBigDecimal();
-    method public int length();
-    method public CharSequence subSequence(int, int);
-    method public java.text.AttributedCharacterIterator toCharacterIterator();
-  }
-
-  public abstract class FractionPrecision extends android.icu.number.Precision {
-    method public android.icu.number.Precision withMaxDigits(int);
-    method public android.icu.number.Precision withMinDigits(int);
-  }
-
-  public class IntegerWidth {
-    method public android.icu.number.IntegerWidth truncateAt(int);
-    method public static android.icu.number.IntegerWidth zeroFillTo(int);
-  }
-
-  public class LocalizedNumberFormatter extends android.icu.number.NumberFormatterSettings<android.icu.number.LocalizedNumberFormatter> {
-    method public android.icu.number.FormattedNumber format(long);
-    method public android.icu.number.FormattedNumber format(double);
-    method public android.icu.number.FormattedNumber format(Number);
-    method public android.icu.number.FormattedNumber format(android.icu.util.Measure);
-    method public java.text.Format toFormat();
-  }
-
-  public class LocalizedNumberRangeFormatter extends android.icu.number.NumberRangeFormatterSettings<android.icu.number.LocalizedNumberRangeFormatter> {
-    method public android.icu.number.FormattedNumberRange formatRange(int, int);
-    method public android.icu.number.FormattedNumberRange formatRange(double, double);
-    method public android.icu.number.FormattedNumberRange formatRange(Number, Number);
-  }
-
-  public class Notation {
-    method public static android.icu.number.CompactNotation compactLong();
-    method public static android.icu.number.CompactNotation compactShort();
-    method public static android.icu.number.ScientificNotation engineering();
-    method public static android.icu.number.ScientificNotation scientific();
-    method public static android.icu.number.SimpleNotation simple();
-  }
-
-  public final class NumberFormatter {
-    method public static android.icu.number.UnlocalizedNumberFormatter with();
-    method public static android.icu.number.LocalizedNumberFormatter withLocale(java.util.Locale);
-    method public static android.icu.number.LocalizedNumberFormatter withLocale(android.icu.util.ULocale);
-  }
-
-  public enum NumberFormatter.DecimalSeparatorDisplay {
-    enum_constant public static final android.icu.number.NumberFormatter.DecimalSeparatorDisplay ALWAYS;
-    enum_constant public static final android.icu.number.NumberFormatter.DecimalSeparatorDisplay AUTO;
-  }
-
-  public enum NumberFormatter.GroupingStrategy {
-    enum_constant public static final android.icu.number.NumberFormatter.GroupingStrategy AUTO;
-    enum_constant public static final android.icu.number.NumberFormatter.GroupingStrategy MIN2;
-    enum_constant public static final android.icu.number.NumberFormatter.GroupingStrategy OFF;
-    enum_constant public static final android.icu.number.NumberFormatter.GroupingStrategy ON_ALIGNED;
-    enum_constant public static final android.icu.number.NumberFormatter.GroupingStrategy THOUSANDS;
-  }
-
-  public enum NumberFormatter.SignDisplay {
-    enum_constant public static final android.icu.number.NumberFormatter.SignDisplay ACCOUNTING;
-    enum_constant public static final android.icu.number.NumberFormatter.SignDisplay ACCOUNTING_ALWAYS;
-    enum_constant public static final android.icu.number.NumberFormatter.SignDisplay ACCOUNTING_EXCEPT_ZERO;
-    enum_constant public static final android.icu.number.NumberFormatter.SignDisplay ALWAYS;
-    enum_constant public static final android.icu.number.NumberFormatter.SignDisplay AUTO;
-    enum_constant public static final android.icu.number.NumberFormatter.SignDisplay EXCEPT_ZERO;
-    enum_constant public static final android.icu.number.NumberFormatter.SignDisplay NEVER;
-  }
-
-  public enum NumberFormatter.UnitWidth {
-    enum_constant public static final android.icu.number.NumberFormatter.UnitWidth FULL_NAME;
-    enum_constant public static final android.icu.number.NumberFormatter.UnitWidth HIDDEN;
-    enum_constant public static final android.icu.number.NumberFormatter.UnitWidth ISO_CODE;
-    enum_constant public static final android.icu.number.NumberFormatter.UnitWidth NARROW;
-    enum_constant public static final android.icu.number.NumberFormatter.UnitWidth SHORT;
-  }
-
-  public abstract class NumberFormatterSettings<T extends android.icu.number.NumberFormatterSettings<?>> {
-    method public T decimal(android.icu.number.NumberFormatter.DecimalSeparatorDisplay);
-    method public T grouping(android.icu.number.NumberFormatter.GroupingStrategy);
-    method public T integerWidth(android.icu.number.IntegerWidth);
-    method public T notation(android.icu.number.Notation);
-    method public T perUnit(android.icu.util.MeasureUnit);
-    method public T precision(android.icu.number.Precision);
-    method public T roundingMode(java.math.RoundingMode);
-    method public T scale(android.icu.number.Scale);
-    method public T sign(android.icu.number.NumberFormatter.SignDisplay);
-    method public T symbols(android.icu.text.DecimalFormatSymbols);
-    method public T symbols(android.icu.text.NumberingSystem);
-    method public T unit(android.icu.util.MeasureUnit);
-    method public T unitWidth(android.icu.number.NumberFormatter.UnitWidth);
-  }
-
-  public abstract class NumberRangeFormatter {
-    method public static android.icu.number.UnlocalizedNumberRangeFormatter with();
-    method public static android.icu.number.LocalizedNumberRangeFormatter withLocale(java.util.Locale);
-    method public static android.icu.number.LocalizedNumberRangeFormatter withLocale(android.icu.util.ULocale);
-  }
-
-  public enum NumberRangeFormatter.RangeCollapse {
-    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeCollapse ALL;
-    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeCollapse AUTO;
-    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeCollapse NONE;
-    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeCollapse UNIT;
-  }
-
-  public enum NumberRangeFormatter.RangeIdentityFallback {
-    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeIdentityFallback APPROXIMATELY;
-    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeIdentityFallback APPROXIMATELY_OR_SINGLE_VALUE;
-    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeIdentityFallback RANGE;
-    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeIdentityFallback SINGLE_VALUE;
-  }
-
-  public enum NumberRangeFormatter.RangeIdentityResult {
-    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeIdentityResult EQUAL_AFTER_ROUNDING;
-    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeIdentityResult EQUAL_BEFORE_ROUNDING;
-    enum_constant public static final android.icu.number.NumberRangeFormatter.RangeIdentityResult NOT_EQUAL;
-  }
-
-  public abstract class NumberRangeFormatterSettings<T extends android.icu.number.NumberRangeFormatterSettings<?>> {
-    method public T collapse(android.icu.number.NumberRangeFormatter.RangeCollapse);
-    method public T identityFallback(android.icu.number.NumberRangeFormatter.RangeIdentityFallback);
-    method public T numberFormatterBoth(android.icu.number.UnlocalizedNumberFormatter);
-    method public T numberFormatterFirst(android.icu.number.UnlocalizedNumberFormatter);
-    method public T numberFormatterSecond(android.icu.number.UnlocalizedNumberFormatter);
-  }
-
-  public abstract class Precision {
-    method public static android.icu.number.CurrencyPrecision currency(android.icu.util.Currency.CurrencyUsage);
-    method public static android.icu.number.FractionPrecision fixedFraction(int);
-    method public static android.icu.number.Precision fixedSignificantDigits(int);
-    method public static android.icu.number.Precision increment(java.math.BigDecimal);
-    method public static android.icu.number.FractionPrecision integer();
-    method public static android.icu.number.FractionPrecision maxFraction(int);
-    method public static android.icu.number.Precision maxSignificantDigits(int);
-    method public static android.icu.number.FractionPrecision minFraction(int);
-    method public static android.icu.number.FractionPrecision minMaxFraction(int, int);
-    method public static android.icu.number.Precision minMaxSignificantDigits(int, int);
-    method public static android.icu.number.Precision minSignificantDigits(int);
-    method public static android.icu.number.Precision unlimited();
-  }
-
-  public class Scale {
-    method public static android.icu.number.Scale byBigDecimal(java.math.BigDecimal);
-    method public static android.icu.number.Scale byDouble(double);
-    method public static android.icu.number.Scale byDoubleAndPowerOfTen(double, int);
-    method public static android.icu.number.Scale none();
-    method public static android.icu.number.Scale powerOfTen(int);
-  }
-
-  public class ScientificNotation extends android.icu.number.Notation {
-    method public android.icu.number.ScientificNotation withExponentSignDisplay(android.icu.number.NumberFormatter.SignDisplay);
-    method public android.icu.number.ScientificNotation withMinExponentDigits(int);
-  }
-
-  public class SimpleNotation extends android.icu.number.Notation {
-  }
-
-  public class UnlocalizedNumberFormatter extends android.icu.number.NumberFormatterSettings<android.icu.number.UnlocalizedNumberFormatter> {
-    method public android.icu.number.LocalizedNumberFormatter locale(java.util.Locale);
-    method public android.icu.number.LocalizedNumberFormatter locale(android.icu.util.ULocale);
-  }
-
-  public class UnlocalizedNumberRangeFormatter extends android.icu.number.NumberRangeFormatterSettings<android.icu.number.UnlocalizedNumberRangeFormatter> {
-    method public android.icu.number.LocalizedNumberRangeFormatter locale(java.util.Locale);
-    method public android.icu.number.LocalizedNumberRangeFormatter locale(android.icu.util.ULocale);
-  }
-
-}
-
-package android.icu.text {
-
-  public final class AlphabeticIndex<V> implements java.lang.Iterable<android.icu.text.AlphabeticIndex.Bucket<V>> {
-    ctor public AlphabeticIndex(android.icu.util.ULocale);
-    ctor public AlphabeticIndex(java.util.Locale);
-    ctor public AlphabeticIndex(android.icu.text.RuleBasedCollator);
-    method public android.icu.text.AlphabeticIndex<V> addLabels(android.icu.text.UnicodeSet);
-    method public android.icu.text.AlphabeticIndex<V> addLabels(android.icu.util.ULocale...);
-    method public android.icu.text.AlphabeticIndex<V> addLabels(java.util.Locale...);
-    method public android.icu.text.AlphabeticIndex<V> addRecord(CharSequence, V);
-    method public android.icu.text.AlphabeticIndex.ImmutableIndex<V> buildImmutableIndex();
-    method public android.icu.text.AlphabeticIndex<V> clearRecords();
-    method public int getBucketCount();
-    method public int getBucketIndex(CharSequence);
-    method public java.util.List<java.lang.String> getBucketLabels();
-    method public android.icu.text.RuleBasedCollator getCollator();
-    method public String getInflowLabel();
-    method public int getMaxLabelCount();
-    method public String getOverflowLabel();
-    method public int getRecordCount();
-    method public String getUnderflowLabel();
-    method public java.util.Iterator<android.icu.text.AlphabeticIndex.Bucket<V>> iterator();
-    method public android.icu.text.AlphabeticIndex<V> setInflowLabel(String);
-    method public android.icu.text.AlphabeticIndex<V> setMaxLabelCount(int);
-    method public android.icu.text.AlphabeticIndex<V> setOverflowLabel(String);
-    method public android.icu.text.AlphabeticIndex<V> setUnderflowLabel(String);
-  }
-
-  public static class AlphabeticIndex.Bucket<V> implements java.lang.Iterable<android.icu.text.AlphabeticIndex.Record<V>> {
-    method public String getLabel();
-    method public android.icu.text.AlphabeticIndex.Bucket.LabelType getLabelType();
-    method public java.util.Iterator<android.icu.text.AlphabeticIndex.Record<V>> iterator();
-    method public int size();
-  }
-
-  public enum AlphabeticIndex.Bucket.LabelType {
-    enum_constant public static final android.icu.text.AlphabeticIndex.Bucket.LabelType INFLOW;
-    enum_constant public static final android.icu.text.AlphabeticIndex.Bucket.LabelType NORMAL;
-    enum_constant public static final android.icu.text.AlphabeticIndex.Bucket.LabelType OVERFLOW;
-    enum_constant public static final android.icu.text.AlphabeticIndex.Bucket.LabelType UNDERFLOW;
-  }
-
-  public static final class AlphabeticIndex.ImmutableIndex<V> implements java.lang.Iterable<android.icu.text.AlphabeticIndex.Bucket<V>> {
-    method public android.icu.text.AlphabeticIndex.Bucket<V> getBucket(int);
-    method public int getBucketCount();
-    method public int getBucketIndex(CharSequence);
-    method public java.util.Iterator<android.icu.text.AlphabeticIndex.Bucket<V>> iterator();
-  }
-
-  public static class AlphabeticIndex.Record<V> {
-    method public V getData();
-    method public CharSequence getName();
-  }
-
-  public class Bidi {
-    ctor public Bidi();
-    ctor public Bidi(int, int);
-    ctor public Bidi(String, int);
-    ctor public Bidi(java.text.AttributedCharacterIterator);
-    ctor public Bidi(char[], int, byte[], int, int, int);
-    method public boolean baseIsLeftToRight();
-    method public int countParagraphs();
-    method public int countRuns();
-    method public android.icu.text.Bidi createLineBidi(int, int);
-    method public static byte getBaseDirection(CharSequence);
-    method public int getBaseLevel();
-    method public android.icu.text.BidiClassifier getCustomClassifier();
-    method public int getCustomizedClass(int);
-    method public byte getDirection();
-    method public int getLength();
-    method public byte getLevelAt(int);
-    method public byte[] getLevels();
-    method public int getLogicalIndex(int);
-    method public int[] getLogicalMap();
-    method public android.icu.text.BidiRun getLogicalRun(int);
-    method public byte getParaLevel();
-    method public android.icu.text.BidiRun getParagraph(int);
-    method public android.icu.text.BidiRun getParagraphByIndex(int);
-    method public int getParagraphIndex(int);
-    method public int getProcessedLength();
-    method public int getReorderingMode();
-    method public int getReorderingOptions();
-    method public int getResultLength();
-    method public int getRunCount();
-    method public int getRunLevel(int);
-    method public int getRunLimit(int);
-    method public int getRunStart(int);
-    method public char[] getText();
-    method public String getTextAsString();
-    method public int getVisualIndex(int);
-    method public int[] getVisualMap();
-    method public android.icu.text.BidiRun getVisualRun(int);
-    method public static int[] invertMap(int[]);
-    method public boolean isInverse();
-    method public boolean isLeftToRight();
-    method public boolean isMixed();
-    method public boolean isOrderParagraphsLTR();
-    method public boolean isRightToLeft();
-    method public void orderParagraphsLTR(boolean);
-    method public static int[] reorderLogical(byte[]);
-    method public static int[] reorderVisual(byte[]);
-    method public static void reorderVisually(byte[], int, Object[], int, int);
-    method public static boolean requiresBidi(char[], int, int);
-    method public void setContext(String, String);
-    method public void setCustomClassifier(android.icu.text.BidiClassifier);
-    method public void setInverse(boolean);
-    method public android.icu.text.Bidi setLine(int, int);
-    method public void setPara(String, byte, byte[]);
-    method public void setPara(char[], byte, byte[]);
-    method public void setPara(java.text.AttributedCharacterIterator);
-    method public void setReorderingMode(int);
-    method public void setReorderingOptions(int);
-    method public String writeReordered(int);
-    method public static String writeReverse(String, int);
-    field public static final int DIRECTION_DEFAULT_LEFT_TO_RIGHT = 126; // 0x7e
-    field public static final int DIRECTION_DEFAULT_RIGHT_TO_LEFT = 127; // 0x7f
-    field public static final int DIRECTION_LEFT_TO_RIGHT = 0; // 0x0
-    field public static final int DIRECTION_RIGHT_TO_LEFT = 1; // 0x1
-    field public static final short DO_MIRRORING = 2; // 0x2
-    field public static final short INSERT_LRM_FOR_NUMERIC = 4; // 0x4
-    field public static final short KEEP_BASE_COMBINING = 1; // 0x1
-    field public static final byte LEVEL_DEFAULT_LTR = 126; // 0x7e
-    field public static final byte LEVEL_DEFAULT_RTL = 127; // 0x7f
-    field public static final byte LEVEL_OVERRIDE = -128; // 0xffffff80
-    field public static final byte LTR = 0; // 0x0
-    field public static final int MAP_NOWHERE = -1; // 0xffffffff
-    field public static final byte MAX_EXPLICIT_LEVEL = 125; // 0x7d
-    field public static final byte MIXED = 2; // 0x2
-    field public static final byte NEUTRAL = 3; // 0x3
-    field public static final int OPTION_DEFAULT = 0; // 0x0
-    field public static final int OPTION_INSERT_MARKS = 1; // 0x1
-    field public static final int OPTION_REMOVE_CONTROLS = 2; // 0x2
-    field public static final int OPTION_STREAMING = 4; // 0x4
-    field public static final short OUTPUT_REVERSE = 16; // 0x10
-    field public static final short REMOVE_BIDI_CONTROLS = 8; // 0x8
-    field public static final short REORDER_DEFAULT = 0; // 0x0
-    field public static final short REORDER_GROUP_NUMBERS_WITH_R = 2; // 0x2
-    field public static final short REORDER_INVERSE_FOR_NUMBERS_SPECIAL = 6; // 0x6
-    field public static final short REORDER_INVERSE_LIKE_DIRECT = 5; // 0x5
-    field public static final short REORDER_INVERSE_NUMBERS_AS_L = 4; // 0x4
-    field public static final short REORDER_NUMBERS_SPECIAL = 1; // 0x1
-    field public static final short REORDER_RUNS_ONLY = 3; // 0x3
-    field public static final byte RTL = 1; // 0x1
-  }
-
-  public class BidiClassifier {
-    ctor public BidiClassifier(Object);
-    method public int classify(int);
-    method public Object getContext();
-    method public void setContext(Object);
-  }
-
-  public class BidiRun {
-    method public byte getDirection();
-    method public byte getEmbeddingLevel();
-    method public int getLength();
-    method public int getLimit();
-    method public int getStart();
-    method public boolean isEvenRun();
-    method public boolean isOddRun();
-  }
-
-  public abstract class BreakIterator implements java.lang.Cloneable {
-    ctor protected BreakIterator();
-    method public Object clone();
-    method public abstract int current();
-    method public abstract int first();
-    method public abstract int following(int);
-    method public static java.util.Locale[] getAvailableLocales();
-    method public static android.icu.text.BreakIterator getCharacterInstance();
-    method public static android.icu.text.BreakIterator getCharacterInstance(java.util.Locale);
-    method public static android.icu.text.BreakIterator getCharacterInstance(android.icu.util.ULocale);
-    method public static android.icu.text.BreakIterator getLineInstance();
-    method public static android.icu.text.BreakIterator getLineInstance(java.util.Locale);
-    method public static android.icu.text.BreakIterator getLineInstance(android.icu.util.ULocale);
-    method public int getRuleStatus();
-    method public int getRuleStatusVec(int[]);
-    method public static android.icu.text.BreakIterator getSentenceInstance();
-    method public static android.icu.text.BreakIterator getSentenceInstance(java.util.Locale);
-    method public static android.icu.text.BreakIterator getSentenceInstance(android.icu.util.ULocale);
-    method public abstract java.text.CharacterIterator getText();
-    method @Deprecated public static android.icu.text.BreakIterator getTitleInstance();
-    method @Deprecated public static android.icu.text.BreakIterator getTitleInstance(java.util.Locale);
-    method @Deprecated public static android.icu.text.BreakIterator getTitleInstance(android.icu.util.ULocale);
-    method public static android.icu.text.BreakIterator getWordInstance();
-    method public static android.icu.text.BreakIterator getWordInstance(java.util.Locale);
-    method public static android.icu.text.BreakIterator getWordInstance(android.icu.util.ULocale);
-    method public boolean isBoundary(int);
-    method public abstract int last();
-    method public abstract int next(int);
-    method public abstract int next();
-    method public int preceding(int);
-    method public abstract int previous();
-    method public void setText(String);
-    method public void setText(CharSequence);
-    method public abstract void setText(java.text.CharacterIterator);
-    field public static final int DONE = -1; // 0xffffffff
-    field public static final int KIND_CHARACTER = 0; // 0x0
-    field public static final int KIND_LINE = 2; // 0x2
-    field public static final int KIND_SENTENCE = 3; // 0x3
-    field @Deprecated public static final int KIND_TITLE = 4; // 0x4
-    field public static final int KIND_WORD = 1; // 0x1
-    field public static final int WORD_IDEO = 400; // 0x190
-    field public static final int WORD_IDEO_LIMIT = 500; // 0x1f4
-    field public static final int WORD_KANA = 300; // 0x12c
-    field public static final int WORD_KANA_LIMIT = 400; // 0x190
-    field public static final int WORD_LETTER = 200; // 0xc8
-    field public static final int WORD_LETTER_LIMIT = 300; // 0x12c
-    field public static final int WORD_NONE = 0; // 0x0
-    field public static final int WORD_NONE_LIMIT = 100; // 0x64
-    field public static final int WORD_NUMBER = 100; // 0x64
-    field public static final int WORD_NUMBER_LIMIT = 200; // 0xc8
-  }
-
-  public abstract class CaseMap {
-    method public static android.icu.text.CaseMap.Fold fold();
-    method public abstract android.icu.text.CaseMap omitUnchangedText();
-    method public static android.icu.text.CaseMap.Lower toLower();
-    method public static android.icu.text.CaseMap.Title toTitle();
-    method public static android.icu.text.CaseMap.Upper toUpper();
-  }
-
-  public static final class CaseMap.Fold extends android.icu.text.CaseMap {
-    method public String apply(CharSequence);
-    method public <A extends java.lang.Appendable> A apply(CharSequence, A, android.icu.text.Edits);
-    method public android.icu.text.CaseMap.Fold omitUnchangedText();
-    method public android.icu.text.CaseMap.Fold turkic();
-  }
-
-  public static final class CaseMap.Lower extends android.icu.text.CaseMap {
-    method public String apply(java.util.Locale, CharSequence);
-    method public <A extends java.lang.Appendable> A apply(java.util.Locale, CharSequence, A, android.icu.text.Edits);
-    method public android.icu.text.CaseMap.Lower omitUnchangedText();
-  }
-
-  public static final class CaseMap.Title extends android.icu.text.CaseMap {
-    method public android.icu.text.CaseMap.Title adjustToCased();
-    method public String apply(java.util.Locale, android.icu.text.BreakIterator, CharSequence);
-    method public <A extends java.lang.Appendable> A apply(java.util.Locale, android.icu.text.BreakIterator, CharSequence, A, android.icu.text.Edits);
-    method public android.icu.text.CaseMap.Title noBreakAdjustment();
-    method public android.icu.text.CaseMap.Title noLowercase();
-    method public android.icu.text.CaseMap.Title omitUnchangedText();
-    method public android.icu.text.CaseMap.Title sentences();
-    method public android.icu.text.CaseMap.Title wholeString();
-  }
-
-  public static final class CaseMap.Upper extends android.icu.text.CaseMap {
-    method public String apply(java.util.Locale, CharSequence);
-    method public <A extends java.lang.Appendable> A apply(java.util.Locale, CharSequence, A, android.icu.text.Edits);
-    method public android.icu.text.CaseMap.Upper omitUnchangedText();
-  }
-
-  public final class CollationElementIterator {
-    method public int getMaxExpansion(int);
-    method public int getOffset();
-    method public int next();
-    method public int previous();
-    method public static int primaryOrder(int);
-    method public void reset();
-    method public static int secondaryOrder(int);
-    method public void setOffset(int);
-    method public void setText(String);
-    method public void setText(android.icu.text.UCharacterIterator);
-    method public void setText(java.text.CharacterIterator);
-    method public static int tertiaryOrder(int);
-    field public static final int IGNORABLE = 0; // 0x0
-    field public static final int NULLORDER = -1; // 0xffffffff
-  }
-
-  public final class CollationKey implements java.lang.Comparable<android.icu.text.CollationKey> {
-    ctor public CollationKey(String, byte[]);
-    method public int compareTo(android.icu.text.CollationKey);
-    method public boolean equals(android.icu.text.CollationKey);
-    method public android.icu.text.CollationKey getBound(int, int);
-    method public String getSourceString();
-    method public android.icu.text.CollationKey merge(android.icu.text.CollationKey);
-    method public byte[] toByteArray();
-  }
-
-  public static final class CollationKey.BoundMode {
-    field public static final int LOWER = 0; // 0x0
-    field public static final int UPPER = 1; // 0x1
-    field public static final int UPPER_LONG = 2; // 0x2
-  }
-
-  public abstract class Collator implements java.lang.Cloneable java.util.Comparator<java.lang.Object> android.icu.util.Freezable<android.icu.text.Collator> {
-    ctor protected Collator();
-    method public Object clone() throws java.lang.CloneNotSupportedException;
-    method public android.icu.text.Collator cloneAsThawed();
-    method public abstract int compare(String, String);
-    method public int compare(Object, Object);
-    method public boolean equals(String, String);
-    method public android.icu.text.Collator freeze();
-    method public static java.util.Locale[] getAvailableLocales();
-    method public static final android.icu.util.ULocale[] getAvailableULocales();
-    method public abstract android.icu.text.CollationKey getCollationKey(String);
-    method public int getDecomposition();
-    method public static String getDisplayName(java.util.Locale, java.util.Locale);
-    method public static String getDisplayName(android.icu.util.ULocale, android.icu.util.ULocale);
-    method public static String getDisplayName(java.util.Locale);
-    method public static String getDisplayName(android.icu.util.ULocale);
-    method public static int[] getEquivalentReorderCodes(int);
-    method public static final android.icu.util.ULocale getFunctionalEquivalent(String, android.icu.util.ULocale, boolean[]);
-    method public static final android.icu.util.ULocale getFunctionalEquivalent(String, android.icu.util.ULocale);
-    method public static final android.icu.text.Collator getInstance();
-    method public static final android.icu.text.Collator getInstance(android.icu.util.ULocale);
-    method public static final android.icu.text.Collator getInstance(java.util.Locale);
-    method public static final String[] getKeywordValues(String);
-    method public static final String[] getKeywordValuesForLocale(String, android.icu.util.ULocale, boolean);
-    method public static final String[] getKeywords();
-    method public int getMaxVariable();
-    method public int[] getReorderCodes();
-    method public int getStrength();
-    method public android.icu.text.UnicodeSet getTailoredSet();
-    method public abstract android.icu.util.VersionInfo getUCAVersion();
-    method public abstract int getVariableTop();
-    method public abstract android.icu.util.VersionInfo getVersion();
-    method public boolean isFrozen();
-    method public void setDecomposition(int);
-    method public android.icu.text.Collator setMaxVariable(int);
-    method public void setReorderCodes(int...);
-    method public void setStrength(int);
-    field public static final int CANONICAL_DECOMPOSITION = 17; // 0x11
-    field public static final int FULL_DECOMPOSITION = 15; // 0xf
-    field public static final int IDENTICAL = 15; // 0xf
-    field public static final int NO_DECOMPOSITION = 16; // 0x10
-    field public static final int PRIMARY = 0; // 0x0
-    field public static final int QUATERNARY = 3; // 0x3
-    field public static final int SECONDARY = 1; // 0x1
-    field public static final int TERTIARY = 2; // 0x2
-  }
-
-  public static interface Collator.ReorderCodes {
-    field public static final int CURRENCY = 4099; // 0x1003
-    field public static final int DEFAULT = -1; // 0xffffffff
-    field public static final int DIGIT = 4100; // 0x1004
-    field public static final int FIRST = 4096; // 0x1000
-    field public static final int NONE = 103; // 0x67
-    field public static final int OTHERS = 103; // 0x67
-    field public static final int PUNCTUATION = 4097; // 0x1001
-    field public static final int SPACE = 4096; // 0x1000
-    field public static final int SYMBOL = 4098; // 0x1002
-  }
-
-  public class CompactDecimalFormat extends android.icu.text.DecimalFormat {
-    method public static android.icu.text.CompactDecimalFormat getInstance(android.icu.util.ULocale, android.icu.text.CompactDecimalFormat.CompactStyle);
-    method public static android.icu.text.CompactDecimalFormat getInstance(java.util.Locale, android.icu.text.CompactDecimalFormat.CompactStyle);
-  }
-
-  public enum CompactDecimalFormat.CompactStyle {
-    enum_constant public static final android.icu.text.CompactDecimalFormat.CompactStyle LONG;
-    enum_constant public static final android.icu.text.CompactDecimalFormat.CompactStyle SHORT;
-  }
-
-  public class CurrencyPluralInfo implements java.lang.Cloneable java.io.Serializable {
-    ctor public CurrencyPluralInfo();
-    ctor public CurrencyPluralInfo(java.util.Locale);
-    ctor public CurrencyPluralInfo(android.icu.util.ULocale);
-    method public Object clone();
-    method public String getCurrencyPluralPattern(String);
-    method public static android.icu.text.CurrencyPluralInfo getInstance();
-    method public static android.icu.text.CurrencyPluralInfo getInstance(java.util.Locale);
-    method public static android.icu.text.CurrencyPluralInfo getInstance(android.icu.util.ULocale);
-    method public android.icu.util.ULocale getLocale();
-    method public android.icu.text.PluralRules getPluralRules();
-    method public void setCurrencyPluralPattern(String, String);
-    method public void setLocale(android.icu.util.ULocale);
-    method public void setPluralRules(String);
-  }
-
-  public abstract class DateFormat extends android.icu.text.UFormat {
-    ctor protected DateFormat();
-    method public final StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
-    method public abstract StringBuffer format(android.icu.util.Calendar, StringBuffer, java.text.FieldPosition);
-    method public StringBuffer format(java.util.Date, StringBuffer, java.text.FieldPosition);
-    method public final String format(java.util.Date);
-    method public static java.util.Locale[] getAvailableLocales();
-    method public boolean getBooleanAttribute(android.icu.text.DateFormat.BooleanAttribute);
-    method public android.icu.util.Calendar getCalendar();
-    method public android.icu.text.DisplayContext getContext(android.icu.text.DisplayContext.Type);
-    method public static final android.icu.text.DateFormat getDateInstance();
-    method public static final android.icu.text.DateFormat getDateInstance(int);
-    method public static final android.icu.text.DateFormat getDateInstance(int, java.util.Locale);
-    method public static final android.icu.text.DateFormat getDateInstance(int, android.icu.util.ULocale);
-    method public static final android.icu.text.DateFormat getDateInstance(android.icu.util.Calendar, int, java.util.Locale);
-    method public static final android.icu.text.DateFormat getDateInstance(android.icu.util.Calendar, int, android.icu.util.ULocale);
-    method public static final android.icu.text.DateFormat getDateInstance(android.icu.util.Calendar, int);
-    method public static final android.icu.text.DateFormat getDateTimeInstance();
-    method public static final android.icu.text.DateFormat getDateTimeInstance(int, int);
-    method public static final android.icu.text.DateFormat getDateTimeInstance(int, int, java.util.Locale);
-    method public static final android.icu.text.DateFormat getDateTimeInstance(int, int, android.icu.util.ULocale);
-    method public static final android.icu.text.DateFormat getDateTimeInstance(android.icu.util.Calendar, int, int, java.util.Locale);
-    method public static final android.icu.text.DateFormat getDateTimeInstance(android.icu.util.Calendar, int, int, android.icu.util.ULocale);
-    method public static final android.icu.text.DateFormat getDateTimeInstance(android.icu.util.Calendar, int, int);
-    method public static final android.icu.text.DateFormat getInstance();
-    method public static final android.icu.text.DateFormat getInstance(android.icu.util.Calendar, java.util.Locale);
-    method public static final android.icu.text.DateFormat getInstance(android.icu.util.Calendar);
-    method public static final android.icu.text.DateFormat getInstanceForSkeleton(String);
-    method public static final android.icu.text.DateFormat getInstanceForSkeleton(String, java.util.Locale);
-    method public static final android.icu.text.DateFormat getInstanceForSkeleton(String, android.icu.util.ULocale);
-    method public static final android.icu.text.DateFormat getInstanceForSkeleton(android.icu.util.Calendar, String, java.util.Locale);
-    method public static final android.icu.text.DateFormat getInstanceForSkeleton(android.icu.util.Calendar, String, android.icu.util.ULocale);
-    method public android.icu.text.NumberFormat getNumberFormat();
-    method public static final android.icu.text.DateFormat getPatternInstance(String);
-    method public static final android.icu.text.DateFormat getPatternInstance(String, java.util.Locale);
-    method public static final android.icu.text.DateFormat getPatternInstance(String, android.icu.util.ULocale);
-    method public static final android.icu.text.DateFormat getPatternInstance(android.icu.util.Calendar, String, java.util.Locale);
-    method public static final android.icu.text.DateFormat getPatternInstance(android.icu.util.Calendar, String, android.icu.util.ULocale);
-    method public static final android.icu.text.DateFormat getTimeInstance();
-    method public static final android.icu.text.DateFormat getTimeInstance(int);
-    method public static final android.icu.text.DateFormat getTimeInstance(int, java.util.Locale);
-    method public static final android.icu.text.DateFormat getTimeInstance(int, android.icu.util.ULocale);
-    method public static final android.icu.text.DateFormat getTimeInstance(android.icu.util.Calendar, int, java.util.Locale);
-    method public static final android.icu.text.DateFormat getTimeInstance(android.icu.util.Calendar, int, android.icu.util.ULocale);
-    method public static final android.icu.text.DateFormat getTimeInstance(android.icu.util.Calendar, int);
-    method public android.icu.util.TimeZone getTimeZone();
-    method public boolean isCalendarLenient();
-    method public boolean isLenient();
-    method public java.util.Date parse(String) throws java.text.ParseException;
-    method public abstract void parse(String, android.icu.util.Calendar, java.text.ParsePosition);
-    method public java.util.Date parse(String, java.text.ParsePosition);
-    method public Object parseObject(String, java.text.ParsePosition);
-    method public android.icu.text.DateFormat setBooleanAttribute(android.icu.text.DateFormat.BooleanAttribute, boolean);
-    method public void setCalendar(android.icu.util.Calendar);
-    method public void setCalendarLenient(boolean);
-    method public void setContext(android.icu.text.DisplayContext);
-    method public void setLenient(boolean);
-    method public void setNumberFormat(android.icu.text.NumberFormat);
-    method public void setTimeZone(android.icu.util.TimeZone);
-    field public static final String ABBR_GENERIC_TZ = "v";
-    field public static final String ABBR_MONTH = "MMM";
-    field public static final String ABBR_MONTH_DAY = "MMMd";
-    field public static final String ABBR_MONTH_WEEKDAY_DAY = "MMMEd";
-    field public static final String ABBR_QUARTER = "QQQ";
-    field public static final String ABBR_SPECIFIC_TZ = "z";
-    field public static final String ABBR_UTC_TZ = "ZZZZ";
-    field public static final String ABBR_WEEKDAY = "E";
-    field public static final int AM_PM_FIELD = 14; // 0xe
-    field public static final int AM_PM_MIDNIGHT_NOON_FIELD = 35; // 0x23
-    field public static final int DATE_FIELD = 3; // 0x3
-    field public static final String DAY = "d";
-    field public static final int DAY_OF_WEEK_FIELD = 9; // 0x9
-    field public static final int DAY_OF_WEEK_IN_MONTH_FIELD = 11; // 0xb
-    field public static final int DAY_OF_YEAR_FIELD = 10; // 0xa
-    field public static final int DEFAULT = 2; // 0x2
-    field public static final int DOW_LOCAL_FIELD = 19; // 0x13
-    field public static final int ERA_FIELD = 0; // 0x0
-    field public static final int EXTENDED_YEAR_FIELD = 20; // 0x14
-    field public static final int FLEXIBLE_DAY_PERIOD_FIELD = 36; // 0x24
-    field public static final int FRACTIONAL_SECOND_FIELD = 8; // 0x8
-    field public static final int FULL = 0; // 0x0
-    field public static final String GENERIC_TZ = "vvvv";
-    field public static final String HOUR = "j";
-    field public static final int HOUR0_FIELD = 16; // 0x10
-    field public static final int HOUR1_FIELD = 15; // 0xf
-    field public static final String HOUR24 = "H";
-    field public static final String HOUR24_MINUTE = "Hm";
-    field public static final String HOUR24_MINUTE_SECOND = "Hms";
-    field public static final String HOUR_MINUTE = "jm";
-    field public static final String HOUR_MINUTE_SECOND = "jms";
-    field public static final int HOUR_OF_DAY0_FIELD = 5; // 0x5
-    field public static final int HOUR_OF_DAY1_FIELD = 4; // 0x4
-    field public static final int JULIAN_DAY_FIELD = 21; // 0x15
-    field public static final String LOCATION_TZ = "VVVV";
-    field public static final int LONG = 1; // 0x1
-    field public static final int MEDIUM = 2; // 0x2
-    field public static final int MILLISECONDS_IN_DAY_FIELD = 22; // 0x16
-    field public static final int MILLISECOND_FIELD = 8; // 0x8
-    field public static final String MINUTE = "m";
-    field public static final int MINUTE_FIELD = 6; // 0x6
-    field public static final String MINUTE_SECOND = "ms";
-    field public static final String MONTH = "MMMM";
-    field public static final String MONTH_DAY = "MMMMd";
-    field public static final int MONTH_FIELD = 2; // 0x2
-    field public static final String MONTH_WEEKDAY_DAY = "MMMMEEEEd";
-    field public static final int NONE = -1; // 0xffffffff
-    field public static final String NUM_MONTH = "M";
-    field public static final String NUM_MONTH_DAY = "Md";
-    field public static final String NUM_MONTH_WEEKDAY_DAY = "MEd";
-    field public static final String QUARTER = "QQQQ";
-    field public static final int QUARTER_FIELD = 27; // 0x1b
-    field public static final int RELATIVE = 128; // 0x80
-    field public static final int RELATIVE_DEFAULT = 130; // 0x82
-    field public static final int RELATIVE_FULL = 128; // 0x80
-    field public static final int RELATIVE_LONG = 129; // 0x81
-    field public static final int RELATIVE_MEDIUM = 130; // 0x82
-    field public static final int RELATIVE_SHORT = 131; // 0x83
-    field public static final String SECOND = "s";
-    field public static final int SECOND_FIELD = 7; // 0x7
-    field public static final int SHORT = 3; // 0x3
-    field public static final String SPECIFIC_TZ = "zzzz";
-    field public static final int STANDALONE_DAY_FIELD = 25; // 0x19
-    field public static final int STANDALONE_MONTH_FIELD = 26; // 0x1a
-    field public static final int STANDALONE_QUARTER_FIELD = 28; // 0x1c
-    field public static final int TIMEZONE_FIELD = 17; // 0x11
-    field public static final int TIMEZONE_GENERIC_FIELD = 24; // 0x18
-    field public static final int TIMEZONE_ISO_FIELD = 32; // 0x20
-    field public static final int TIMEZONE_ISO_LOCAL_FIELD = 33; // 0x21
-    field public static final int TIMEZONE_LOCALIZED_GMT_OFFSET_FIELD = 31; // 0x1f
-    field public static final int TIMEZONE_RFC_FIELD = 23; // 0x17
-    field public static final int TIMEZONE_SPECIAL_FIELD = 29; // 0x1d
-    field public static final String WEEKDAY = "EEEE";
-    field public static final int WEEK_OF_MONTH_FIELD = 13; // 0xd
-    field public static final int WEEK_OF_YEAR_FIELD = 12; // 0xc
-    field public static final String YEAR = "y";
-    field public static final String YEAR_ABBR_MONTH = "yMMM";
-    field public static final String YEAR_ABBR_MONTH_DAY = "yMMMd";
-    field public static final String YEAR_ABBR_MONTH_WEEKDAY_DAY = "yMMMEd";
-    field public static final String YEAR_ABBR_QUARTER = "yQQQ";
-    field public static final int YEAR_FIELD = 1; // 0x1
-    field public static final String YEAR_MONTH = "yMMMM";
-    field public static final String YEAR_MONTH_DAY = "yMMMMd";
-    field public static final String YEAR_MONTH_WEEKDAY_DAY = "yMMMMEEEEd";
-    field public static final int YEAR_NAME_FIELD = 30; // 0x1e
-    field public static final String YEAR_NUM_MONTH = "yM";
-    field public static final String YEAR_NUM_MONTH_DAY = "yMd";
-    field public static final String YEAR_NUM_MONTH_WEEKDAY_DAY = "yMEd";
-    field public static final String YEAR_QUARTER = "yQQQQ";
-    field public static final int YEAR_WOY_FIELD = 18; // 0x12
-    field protected android.icu.util.Calendar calendar;
-    field protected android.icu.text.NumberFormat numberFormat;
-  }
-
-  public enum DateFormat.BooleanAttribute {
-    enum_constant public static final android.icu.text.DateFormat.BooleanAttribute PARSE_ALLOW_NUMERIC;
-    enum_constant public static final android.icu.text.DateFormat.BooleanAttribute PARSE_ALLOW_WHITESPACE;
-    enum_constant public static final android.icu.text.DateFormat.BooleanAttribute PARSE_MULTIPLE_PATTERNS_FOR_MATCH;
-    enum_constant public static final android.icu.text.DateFormat.BooleanAttribute PARSE_PARTIAL_LITERAL_MATCH;
-  }
-
-  public static class DateFormat.Field extends java.text.Format.Field {
-    ctor protected DateFormat.Field(String, int);
-    method public int getCalendarField();
-    method public static android.icu.text.DateFormat.Field ofCalendarField(int);
-    field public static final android.icu.text.DateFormat.Field AM_PM;
-    field public static final android.icu.text.DateFormat.Field AM_PM_MIDNIGHT_NOON;
-    field public static final android.icu.text.DateFormat.Field DAY_OF_MONTH;
-    field public static final android.icu.text.DateFormat.Field DAY_OF_WEEK;
-    field public static final android.icu.text.DateFormat.Field DAY_OF_WEEK_IN_MONTH;
-    field public static final android.icu.text.DateFormat.Field DAY_OF_YEAR;
-    field public static final android.icu.text.DateFormat.Field DOW_LOCAL;
-    field public static final android.icu.text.DateFormat.Field ERA;
-    field public static final android.icu.text.DateFormat.Field EXTENDED_YEAR;
-    field public static final android.icu.text.DateFormat.Field FLEXIBLE_DAY_PERIOD;
-    field public static final android.icu.text.DateFormat.Field HOUR0;
-    field public static final android.icu.text.DateFormat.Field HOUR1;
-    field public static final android.icu.text.DateFormat.Field HOUR_OF_DAY0;
-    field public static final android.icu.text.DateFormat.Field HOUR_OF_DAY1;
-    field public static final android.icu.text.DateFormat.Field JULIAN_DAY;
-    field public static final android.icu.text.DateFormat.Field MILLISECOND;
-    field public static final android.icu.text.DateFormat.Field MILLISECONDS_IN_DAY;
-    field public static final android.icu.text.DateFormat.Field MINUTE;
-    field public static final android.icu.text.DateFormat.Field MONTH;
-    field public static final android.icu.text.DateFormat.Field QUARTER;
-    field public static final android.icu.text.DateFormat.Field SECOND;
-    field public static final android.icu.text.DateFormat.Field TIME_ZONE;
-    field public static final android.icu.text.DateFormat.Field WEEK_OF_MONTH;
-    field public static final android.icu.text.DateFormat.Field WEEK_OF_YEAR;
-    field public static final android.icu.text.DateFormat.Field YEAR;
-    field public static final android.icu.text.DateFormat.Field YEAR_WOY;
-  }
-
-  public class DateFormatSymbols implements java.lang.Cloneable java.io.Serializable {
-    ctor public DateFormatSymbols();
-    ctor public DateFormatSymbols(java.util.Locale);
-    ctor public DateFormatSymbols(android.icu.util.ULocale);
-    ctor public DateFormatSymbols(android.icu.util.Calendar, java.util.Locale);
-    ctor public DateFormatSymbols(android.icu.util.Calendar, android.icu.util.ULocale);
-    ctor public DateFormatSymbols(Class<? extends android.icu.util.Calendar>, java.util.Locale);
-    ctor public DateFormatSymbols(Class<? extends android.icu.util.Calendar>, android.icu.util.ULocale);
-    ctor public DateFormatSymbols(java.util.ResourceBundle, java.util.Locale);
-    ctor public DateFormatSymbols(java.util.ResourceBundle, android.icu.util.ULocale);
-    method public Object clone();
-    method public String[] getAmPmStrings();
-    method public static java.util.Locale[] getAvailableLocales();
-    method public String[] getEraNames();
-    method public String[] getEras();
-    method public static android.icu.text.DateFormatSymbols getInstance();
-    method public static android.icu.text.DateFormatSymbols getInstance(java.util.Locale);
-    method public static android.icu.text.DateFormatSymbols getInstance(android.icu.util.ULocale);
-    method public String getLocalPatternChars();
-    method public String[] getMonths();
-    method public String[] getMonths(int, int);
-    method public String[] getQuarters(int, int);
-    method public String[] getShortMonths();
-    method public String[] getShortWeekdays();
-    method public String[] getWeekdays();
-    method public String[] getWeekdays(int, int);
-    method public String[] getYearNames(int, int);
-    method public String[] getZodiacNames(int, int);
-    method public String[][] getZoneStrings();
-    method protected void initializeData(android.icu.util.ULocale, String);
-    method public void setAmPmStrings(String[]);
-    method public void setEraNames(String[]);
-    method public void setEras(String[]);
-    method public void setLocalPatternChars(String);
-    method public void setMonths(String[]);
-    method public void setMonths(String[], int, int);
-    method public void setQuarters(String[], int, int);
-    method public void setShortMonths(String[]);
-    method public void setShortWeekdays(String[]);
-    method public void setWeekdays(String[], int, int);
-    method public void setWeekdays(String[]);
-    method public void setYearNames(String[], int, int);
-    method public void setZodiacNames(String[], int, int);
-    method public void setZoneStrings(String[][]);
-    field public static final int ABBREVIATED = 0; // 0x0
-    field public static final int FORMAT = 0; // 0x0
-    field public static final int NARROW = 2; // 0x2
-    field public static final int SHORT = 3; // 0x3
-    field public static final int STANDALONE = 1; // 0x1
-    field public static final int WIDE = 1; // 0x1
-  }
-
-  public class DateIntervalFormat extends android.icu.text.UFormat {
-    method public final StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
-    method public final StringBuffer format(android.icu.util.DateInterval, StringBuffer, java.text.FieldPosition);
-    method public final StringBuffer format(android.icu.util.Calendar, android.icu.util.Calendar, StringBuffer, java.text.FieldPosition);
-    method public android.icu.text.DateFormat getDateFormat();
-    method public android.icu.text.DateIntervalInfo getDateIntervalInfo();
-    method public static final android.icu.text.DateIntervalFormat getInstance(String);
-    method public static final android.icu.text.DateIntervalFormat getInstance(String, java.util.Locale);
-    method public static final android.icu.text.DateIntervalFormat getInstance(String, android.icu.util.ULocale);
-    method public static final android.icu.text.DateIntervalFormat getInstance(String, android.icu.text.DateIntervalInfo);
-    method public static final android.icu.text.DateIntervalFormat getInstance(String, java.util.Locale, android.icu.text.DateIntervalInfo);
-    method public static final android.icu.text.DateIntervalFormat getInstance(String, android.icu.util.ULocale, android.icu.text.DateIntervalInfo);
-    method public android.icu.util.TimeZone getTimeZone();
-    method @Deprecated public Object parseObject(String, java.text.ParsePosition);
-    method public void setDateIntervalInfo(android.icu.text.DateIntervalInfo);
-    method public void setTimeZone(android.icu.util.TimeZone);
-  }
-
-  public class DateIntervalInfo implements java.lang.Cloneable android.icu.util.Freezable<android.icu.text.DateIntervalInfo> java.io.Serializable {
-    ctor public DateIntervalInfo(android.icu.util.ULocale);
-    ctor public DateIntervalInfo(java.util.Locale);
-    method public Object clone();
-    method public android.icu.text.DateIntervalInfo cloneAsThawed();
-    method public android.icu.text.DateIntervalInfo freeze();
-    method public boolean getDefaultOrder();
-    method public String getFallbackIntervalPattern();
-    method public android.icu.text.DateIntervalInfo.PatternInfo getIntervalPattern(String, int);
-    method public boolean isFrozen();
-    method public void setFallbackIntervalPattern(String);
-    method public void setIntervalPattern(String, int, String);
-  }
-
-  public static final class DateIntervalInfo.PatternInfo implements java.lang.Cloneable java.io.Serializable {
-    ctor public DateIntervalInfo.PatternInfo(String, String, boolean);
-    method public boolean firstDateInPtnIsLaterDate();
-    method public String getFirstPart();
-    method public String getSecondPart();
-  }
-
-  public class DateTimePatternGenerator implements java.lang.Cloneable android.icu.util.Freezable<android.icu.text.DateTimePatternGenerator> {
-    ctor protected DateTimePatternGenerator();
-    method public android.icu.text.DateTimePatternGenerator addPattern(String, boolean, android.icu.text.DateTimePatternGenerator.PatternInfo);
-    method public Object clone();
-    method public android.icu.text.DateTimePatternGenerator cloneAsThawed();
-    method public android.icu.text.DateTimePatternGenerator freeze();
-    method public String getAppendItemFormat(int);
-    method public String getAppendItemName(int);
-    method public String getBaseSkeleton(String);
-    method public java.util.Set<java.lang.String> getBaseSkeletons(java.util.Set<java.lang.String>);
-    method public String getBestPattern(String);
-    method public String getBestPattern(String, int);
-    method public String getDateTimeFormat();
-    method public String getDecimal();
-    method public static android.icu.text.DateTimePatternGenerator getEmptyInstance();
-    method public String getFieldDisplayName(int, android.icu.text.DateTimePatternGenerator.DisplayWidth);
-    method public static android.icu.text.DateTimePatternGenerator getInstance();
-    method public static android.icu.text.DateTimePatternGenerator getInstance(android.icu.util.ULocale);
-    method public static android.icu.text.DateTimePatternGenerator getInstance(java.util.Locale);
-    method public String getSkeleton(String);
-    method public java.util.Map<java.lang.String,java.lang.String> getSkeletons(java.util.Map<java.lang.String,java.lang.String>);
-    method public boolean isFrozen();
-    method public String replaceFieldTypes(String, String);
-    method public String replaceFieldTypes(String, String, int);
-    method public void setAppendItemFormat(int, String);
-    method public void setAppendItemName(int, String);
-    method public void setDateTimeFormat(String);
-    method public void setDecimal(String);
-    field public static final int DAY = 7; // 0x7
-    field public static final int DAYPERIOD = 10; // 0xa
-    field public static final int DAY_OF_WEEK_IN_MONTH = 9; // 0x9
-    field public static final int DAY_OF_YEAR = 8; // 0x8
-    field public static final int ERA = 0; // 0x0
-    field public static final int FRACTIONAL_SECOND = 14; // 0xe
-    field public static final int HOUR = 11; // 0xb
-    field public static final int MATCH_ALL_FIELDS_LENGTH = 65535; // 0xffff
-    field public static final int MATCH_HOUR_FIELD_LENGTH = 2048; // 0x800
-    field public static final int MATCH_NO_OPTIONS = 0; // 0x0
-    field public static final int MINUTE = 12; // 0xc
-    field public static final int MONTH = 3; // 0x3
-    field public static final int QUARTER = 2; // 0x2
-    field public static final int SECOND = 13; // 0xd
-    field public static final int WEEKDAY = 6; // 0x6
-    field public static final int WEEK_OF_MONTH = 5; // 0x5
-    field public static final int WEEK_OF_YEAR = 4; // 0x4
-    field public static final int YEAR = 1; // 0x1
-    field public static final int ZONE = 15; // 0xf
-  }
-
-  public enum DateTimePatternGenerator.DisplayWidth {
-    enum_constant public static final android.icu.text.DateTimePatternGenerator.DisplayWidth ABBREVIATED;
-    enum_constant public static final android.icu.text.DateTimePatternGenerator.DisplayWidth NARROW;
-    enum_constant public static final android.icu.text.DateTimePatternGenerator.DisplayWidth WIDE;
-  }
-
-  public static final class DateTimePatternGenerator.PatternInfo {
-    ctor public DateTimePatternGenerator.PatternInfo();
-    field public static final int BASE_CONFLICT = 1; // 0x1
-    field public static final int CONFLICT = 2; // 0x2
-    field public static final int OK = 0; // 0x0
-    field public String conflictingPattern;
-    field public int status;
-  }
-
-  public class DecimalFormat extends android.icu.text.NumberFormat {
-    ctor public DecimalFormat();
-    ctor public DecimalFormat(String);
-    ctor public DecimalFormat(String, android.icu.text.DecimalFormatSymbols);
-    ctor public DecimalFormat(String, android.icu.text.DecimalFormatSymbols, android.icu.text.CurrencyPluralInfo, int);
-    method public void applyLocalizedPattern(String);
-    method public void applyPattern(String);
-    method public boolean areSignificantDigitsUsed();
-    method public StringBuffer format(double, StringBuffer, java.text.FieldPosition);
-    method public StringBuffer format(long, StringBuffer, java.text.FieldPosition);
-    method public StringBuffer format(java.math.BigInteger, StringBuffer, java.text.FieldPosition);
-    method public StringBuffer format(java.math.BigDecimal, StringBuffer, java.text.FieldPosition);
-    method public StringBuffer format(android.icu.math.BigDecimal, StringBuffer, java.text.FieldPosition);
-    method public android.icu.text.CurrencyPluralInfo getCurrencyPluralInfo();
-    method public android.icu.util.Currency.CurrencyUsage getCurrencyUsage();
-    method public android.icu.text.DecimalFormatSymbols getDecimalFormatSymbols();
-    method public int getFormatWidth();
-    method public int getGroupingSize();
-    method public java.math.MathContext getMathContext();
-    method public android.icu.math.MathContext getMathContextICU();
-    method public int getMaximumSignificantDigits();
-    method public byte getMinimumExponentDigits();
-    method public int getMinimumSignificantDigits();
-    method public int getMultiplier();
-    method public String getNegativePrefix();
-    method public String getNegativeSuffix();
-    method public char getPadCharacter();
-    method public int getPadPosition();
-    method @Deprecated public int getParseMaxDigits();
-    method public String getPositivePrefix();
-    method public String getPositiveSuffix();
-    method public java.math.BigDecimal getRoundingIncrement();
-    method public int getSecondaryGroupingSize();
-    method public boolean isDecimalPatternMatchRequired();
-    method public boolean isDecimalSeparatorAlwaysShown();
-    method public boolean isExponentSignAlwaysShown();
-    method public boolean isParseBigDecimal();
-    method public boolean isScientificNotation();
-    method public Number parse(String, java.text.ParsePosition);
-    method public void setCurrencyPluralInfo(android.icu.text.CurrencyPluralInfo);
-    method public void setCurrencyUsage(android.icu.util.Currency.CurrencyUsage);
-    method public void setDecimalFormatSymbols(android.icu.text.DecimalFormatSymbols);
-    method public void setDecimalPatternMatchRequired(boolean);
-    method public void setDecimalSeparatorAlwaysShown(boolean);
-    method public void setExponentSignAlwaysShown(boolean);
-    method public void setFormatWidth(int);
-    method public void setGroupingSize(int);
-    method public void setMathContext(java.math.MathContext);
-    method public void setMathContextICU(android.icu.math.MathContext);
-    method public void setMaximumSignificantDigits(int);
-    method public void setMinimumExponentDigits(byte);
-    method public void setMinimumSignificantDigits(int);
-    method public void setMultiplier(int);
-    method public void setNegativePrefix(String);
-    method public void setNegativeSuffix(String);
-    method public void setPadCharacter(char);
-    method public void setPadPosition(int);
-    method public void setParseBigDecimal(boolean);
-    method @Deprecated public void setParseMaxDigits(int);
-    method public void setPositivePrefix(String);
-    method public void setPositiveSuffix(String);
-    method public void setRoundingIncrement(java.math.BigDecimal);
-    method public void setRoundingIncrement(android.icu.math.BigDecimal);
-    method public void setRoundingIncrement(double);
-    method public void setScientificNotation(boolean);
-    method public void setSecondaryGroupingSize(int);
-    method public void setSignificantDigitsUsed(boolean);
-    method public String toLocalizedPattern();
-    method public String toPattern();
-    field public static final int PAD_AFTER_PREFIX = 1; // 0x1
-    field public static final int PAD_AFTER_SUFFIX = 3; // 0x3
-    field public static final int PAD_BEFORE_PREFIX = 0; // 0x0
-    field public static final int PAD_BEFORE_SUFFIX = 2; // 0x2
-  }
-
-  public class DecimalFormatSymbols implements java.lang.Cloneable java.io.Serializable {
-    ctor public DecimalFormatSymbols();
-    ctor public DecimalFormatSymbols(java.util.Locale);
-    ctor public DecimalFormatSymbols(android.icu.util.ULocale);
-    method public Object clone();
-    method public static android.icu.text.DecimalFormatSymbols forNumberingSystem(java.util.Locale, android.icu.text.NumberingSystem);
-    method public static android.icu.text.DecimalFormatSymbols forNumberingSystem(android.icu.util.ULocale, android.icu.text.NumberingSystem);
-    method public static java.util.Locale[] getAvailableLocales();
-    method public android.icu.util.Currency getCurrency();
-    method public String getCurrencySymbol();
-    method public char getDecimalSeparator();
-    method public String getDecimalSeparatorString();
-    method public char getDigit();
-    method public String[] getDigitStrings();
-    method public char[] getDigits();
-    method public String getExponentMultiplicationSign();
-    method public String getExponentSeparator();
-    method public char getGroupingSeparator();
-    method public String getGroupingSeparatorString();
-    method public String getInfinity();
-    method public static android.icu.text.DecimalFormatSymbols getInstance();
-    method public static android.icu.text.DecimalFormatSymbols getInstance(java.util.Locale);
-    method public static android.icu.text.DecimalFormatSymbols getInstance(android.icu.util.ULocale);
-    method public String getInternationalCurrencySymbol();
-    method public java.util.Locale getLocale();
-    method public char getMinusSign();
-    method public String getMinusSignString();
-    method public char getMonetaryDecimalSeparator();
-    method public String getMonetaryDecimalSeparatorString();
-    method public char getMonetaryGroupingSeparator();
-    method public String getMonetaryGroupingSeparatorString();
-    method public String getNaN();
-    method public char getPadEscape();
-    method public String getPatternForCurrencySpacing(int, boolean);
-    method public char getPatternSeparator();
-    method public char getPerMill();
-    method public String getPerMillString();
-    method public char getPercent();
-    method public String getPercentString();
-    method public char getPlusSign();
-    method public String getPlusSignString();
-    method public char getSignificantDigit();
-    method public android.icu.util.ULocale getULocale();
-    method public char getZeroDigit();
-    method public void setCurrency(android.icu.util.Currency);
-    method public void setCurrencySymbol(String);
-    method public void setDecimalSeparator(char);
-    method public void setDecimalSeparatorString(String);
-    method public void setDigit(char);
-    method public void setDigitStrings(String[]);
-    method public void setExponentMultiplicationSign(String);
-    method public void setExponentSeparator(String);
-    method public void setGroupingSeparator(char);
-    method public void setGroupingSeparatorString(String);
-    method public void setInfinity(String);
-    method public void setInternationalCurrencySymbol(String);
-    method public void setMinusSign(char);
-    method public void setMinusSignString(String);
-    method public void setMonetaryDecimalSeparator(char);
-    method public void setMonetaryDecimalSeparatorString(String);
-    method public void setMonetaryGroupingSeparator(char);
-    method public void setMonetaryGroupingSeparatorString(String);
-    method public void setNaN(String);
-    method public void setPadEscape(char);
-    method public void setPatternForCurrencySpacing(int, boolean, String);
-    method public void setPatternSeparator(char);
-    method public void setPerMill(char);
-    method public void setPerMillString(String);
-    method public void setPercent(char);
-    method public void setPercentString(String);
-    method public void setPlusSign(char);
-    method public void setPlusSignString(String);
-    method public void setSignificantDigit(char);
-    method public void setZeroDigit(char);
-    field public static final int CURRENCY_SPC_CURRENCY_MATCH = 0; // 0x0
-    field public static final int CURRENCY_SPC_INSERT = 2; // 0x2
-    field public static final int CURRENCY_SPC_SURROUNDING_MATCH = 1; // 0x1
-  }
-
-  public enum DisplayContext {
-    method public android.icu.text.DisplayContext.Type type();
-    method public int value();
-    enum_constant public static final android.icu.text.DisplayContext CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE;
-    enum_constant public static final android.icu.text.DisplayContext CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE;
-    enum_constant public static final android.icu.text.DisplayContext CAPITALIZATION_FOR_STANDALONE;
-    enum_constant public static final android.icu.text.DisplayContext CAPITALIZATION_FOR_UI_LIST_OR_MENU;
-    enum_constant public static final android.icu.text.DisplayContext CAPITALIZATION_NONE;
-    enum_constant public static final android.icu.text.DisplayContext DIALECT_NAMES;
-    enum_constant public static final android.icu.text.DisplayContext LENGTH_FULL;
-    enum_constant public static final android.icu.text.DisplayContext LENGTH_SHORT;
-    enum_constant public static final android.icu.text.DisplayContext NO_SUBSTITUTE;
-    enum_constant public static final android.icu.text.DisplayContext STANDARD_NAMES;
-    enum_constant public static final android.icu.text.DisplayContext SUBSTITUTE;
-  }
-
-  public enum DisplayContext.Type {
-    enum_constant public static final android.icu.text.DisplayContext.Type CAPITALIZATION;
-    enum_constant public static final android.icu.text.DisplayContext.Type DIALECT_HANDLING;
-    enum_constant public static final android.icu.text.DisplayContext.Type DISPLAY_LENGTH;
-    enum_constant public static final android.icu.text.DisplayContext.Type SUBSTITUTE_HANDLING;
-  }
-
-  public final class Edits {
-    ctor public Edits();
-    method public void addReplace(int, int);
-    method public void addUnchanged(int);
-    method public android.icu.text.Edits.Iterator getCoarseChangesIterator();
-    method public android.icu.text.Edits.Iterator getCoarseIterator();
-    method public android.icu.text.Edits.Iterator getFineChangesIterator();
-    method public android.icu.text.Edits.Iterator getFineIterator();
-    method public boolean hasChanges();
-    method public int lengthDelta();
-    method public android.icu.text.Edits mergeAndAppend(android.icu.text.Edits, android.icu.text.Edits);
-    method public int numberOfChanges();
-    method public void reset();
-  }
-
-  public static final class Edits.Iterator {
-    method public int destinationIndex();
-    method public int destinationIndexFromSourceIndex(int);
-    method public boolean findDestinationIndex(int);
-    method public boolean findSourceIndex(int);
-    method public boolean hasChange();
-    method public int newLength();
-    method public boolean next();
-    method public int oldLength();
-    method public int replacementIndex();
-    method public int sourceIndex();
-    method public int sourceIndexFromDestinationIndex(int);
-  }
-
-  public abstract class IDNA {
-    method public static android.icu.text.IDNA getUTS46Instance(int);
-    method public abstract StringBuilder labelToASCII(CharSequence, StringBuilder, android.icu.text.IDNA.Info);
-    method public abstract StringBuilder labelToUnicode(CharSequence, StringBuilder, android.icu.text.IDNA.Info);
-    method public abstract StringBuilder nameToASCII(CharSequence, StringBuilder, android.icu.text.IDNA.Info);
-    method public abstract StringBuilder nameToUnicode(CharSequence, StringBuilder, android.icu.text.IDNA.Info);
-    field public static final int CHECK_BIDI = 4; // 0x4
-    field public static final int CHECK_CONTEXTJ = 8; // 0x8
-    field public static final int CHECK_CONTEXTO = 64; // 0x40
-    field public static final int DEFAULT = 0; // 0x0
-    field public static final int NONTRANSITIONAL_TO_ASCII = 16; // 0x10
-    field public static final int NONTRANSITIONAL_TO_UNICODE = 32; // 0x20
-    field public static final int USE_STD3_RULES = 2; // 0x2
-  }
-
-  public enum IDNA.Error {
-    enum_constant public static final android.icu.text.IDNA.Error BIDI;
-    enum_constant public static final android.icu.text.IDNA.Error CONTEXTJ;
-    enum_constant public static final android.icu.text.IDNA.Error CONTEXTO_DIGITS;
-    enum_constant public static final android.icu.text.IDNA.Error CONTEXTO_PUNCTUATION;
-    enum_constant public static final android.icu.text.IDNA.Error DISALLOWED;
-    enum_constant public static final android.icu.text.IDNA.Error DOMAIN_NAME_TOO_LONG;
-    enum_constant public static final android.icu.text.IDNA.Error EMPTY_LABEL;
-    enum_constant public static final android.icu.text.IDNA.Error HYPHEN_3_4;
-    enum_constant public static final android.icu.text.IDNA.Error INVALID_ACE_LABEL;
-    enum_constant public static final android.icu.text.IDNA.Error LABEL_HAS_DOT;
-    enum_constant public static final android.icu.text.IDNA.Error LABEL_TOO_LONG;
-    enum_constant public static final android.icu.text.IDNA.Error LEADING_COMBINING_MARK;
-    enum_constant public static final android.icu.text.IDNA.Error LEADING_HYPHEN;
-    enum_constant public static final android.icu.text.IDNA.Error PUNYCODE;
-    enum_constant public static final android.icu.text.IDNA.Error TRAILING_HYPHEN;
-  }
-
-  public static final class IDNA.Info {
-    ctor public IDNA.Info();
-    method public java.util.Set<android.icu.text.IDNA.Error> getErrors();
-    method public boolean hasErrors();
-    method public boolean isTransitionalDifferent();
-  }
-
-  public final class ListFormatter {
-    method public String format(java.lang.Object...);
-    method public String format(java.util.Collection<?>);
-    method public static android.icu.text.ListFormatter getInstance(android.icu.util.ULocale);
-    method public static android.icu.text.ListFormatter getInstance(java.util.Locale);
-    method public static android.icu.text.ListFormatter getInstance();
-    method public String getPatternForNumItems(int);
-  }
-
-  public abstract class LocaleDisplayNames {
-    method public abstract android.icu.text.DisplayContext getContext(android.icu.text.DisplayContext.Type);
-    method public abstract android.icu.text.LocaleDisplayNames.DialectHandling getDialectHandling();
-    method public static android.icu.text.LocaleDisplayNames getInstance(android.icu.util.ULocale);
-    method public static android.icu.text.LocaleDisplayNames getInstance(java.util.Locale);
-    method public static android.icu.text.LocaleDisplayNames getInstance(android.icu.util.ULocale, android.icu.text.LocaleDisplayNames.DialectHandling);
-    method public static android.icu.text.LocaleDisplayNames getInstance(android.icu.util.ULocale, android.icu.text.DisplayContext...);
-    method public static android.icu.text.LocaleDisplayNames getInstance(java.util.Locale, android.icu.text.DisplayContext...);
-    method public abstract android.icu.util.ULocale getLocale();
-    method public java.util.List<android.icu.text.LocaleDisplayNames.UiListItem> getUiList(java.util.Set<android.icu.util.ULocale>, boolean, java.util.Comparator<java.lang.Object>);
-    method public abstract java.util.List<android.icu.text.LocaleDisplayNames.UiListItem> getUiListCompareWholeItems(java.util.Set<android.icu.util.ULocale>, java.util.Comparator<android.icu.text.LocaleDisplayNames.UiListItem>);
-    method public abstract String keyDisplayName(String);
-    method public abstract String keyValueDisplayName(String, String);
-    method public abstract String languageDisplayName(String);
-    method public abstract String localeDisplayName(android.icu.util.ULocale);
-    method public abstract String localeDisplayName(java.util.Locale);
-    method public abstract String localeDisplayName(String);
-    method public abstract String regionDisplayName(String);
-    method public abstract String scriptDisplayName(String);
-    method public abstract String scriptDisplayName(int);
-    method public abstract String variantDisplayName(String);
-  }
-
-  public enum LocaleDisplayNames.DialectHandling {
-    enum_constant public static final android.icu.text.LocaleDisplayNames.DialectHandling DIALECT_NAMES;
-    enum_constant public static final android.icu.text.LocaleDisplayNames.DialectHandling STANDARD_NAMES;
-  }
-
-  public static class LocaleDisplayNames.UiListItem {
-    ctor public LocaleDisplayNames.UiListItem(android.icu.util.ULocale, android.icu.util.ULocale, String, String);
-    method public static java.util.Comparator<android.icu.text.LocaleDisplayNames.UiListItem> getComparator(java.util.Comparator<java.lang.Object>, boolean);
-    field public final android.icu.util.ULocale minimized;
-    field public final android.icu.util.ULocale modified;
-    field public final String nameInDisplayLocale;
-    field public final String nameInSelf;
-  }
-
-  public class MeasureFormat extends android.icu.text.UFormat {
-    method public final boolean equals(Object);
-    method public StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
-    method public StringBuilder formatMeasurePerUnit(android.icu.util.Measure, android.icu.util.MeasureUnit, StringBuilder, java.text.FieldPosition);
-    method public final String formatMeasures(android.icu.util.Measure...);
-    method public StringBuilder formatMeasures(StringBuilder, java.text.FieldPosition, android.icu.util.Measure...);
-    method public static android.icu.text.MeasureFormat getCurrencyFormat(android.icu.util.ULocale);
-    method public static android.icu.text.MeasureFormat getCurrencyFormat(java.util.Locale);
-    method public static android.icu.text.MeasureFormat getCurrencyFormat();
-    method public static android.icu.text.MeasureFormat getInstance(android.icu.util.ULocale, android.icu.text.MeasureFormat.FormatWidth);
-    method public static android.icu.text.MeasureFormat getInstance(java.util.Locale, android.icu.text.MeasureFormat.FormatWidth);
-    method public static android.icu.text.MeasureFormat getInstance(android.icu.util.ULocale, android.icu.text.MeasureFormat.FormatWidth, android.icu.text.NumberFormat);
-    method public static android.icu.text.MeasureFormat getInstance(java.util.Locale, android.icu.text.MeasureFormat.FormatWidth, android.icu.text.NumberFormat);
-    method public final android.icu.util.ULocale getLocale();
-    method public android.icu.text.NumberFormat getNumberFormat();
-    method public String getUnitDisplayName(android.icu.util.MeasureUnit);
-    method public android.icu.text.MeasureFormat.FormatWidth getWidth();
-    method public final int hashCode();
-    method public android.icu.util.Measure parseObject(String, java.text.ParsePosition);
-  }
-
-  public enum MeasureFormat.FormatWidth {
-    enum_constant public static final android.icu.text.MeasureFormat.FormatWidth NARROW;
-    enum_constant public static final android.icu.text.MeasureFormat.FormatWidth NUMERIC;
-    enum_constant public static final android.icu.text.MeasureFormat.FormatWidth SHORT;
-    enum_constant public static final android.icu.text.MeasureFormat.FormatWidth WIDE;
-  }
-
-  public class MessageFormat extends android.icu.text.UFormat {
-    ctor public MessageFormat(String);
-    ctor public MessageFormat(String, java.util.Locale);
-    ctor public MessageFormat(String, android.icu.util.ULocale);
-    method public void applyPattern(String);
-    method public void applyPattern(String, android.icu.text.MessagePattern.ApostropheMode);
-    method public static String autoQuoteApostrophe(String);
-    method public final StringBuffer format(Object[], StringBuffer, java.text.FieldPosition);
-    method public final StringBuffer format(java.util.Map<java.lang.String,java.lang.Object>, StringBuffer, java.text.FieldPosition);
-    method public static String format(String, java.lang.Object...);
-    method public static String format(String, java.util.Map<java.lang.String,java.lang.Object>);
-    method public final StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
-    method public android.icu.text.MessagePattern.ApostropheMode getApostropheMode();
-    method public java.util.Set<java.lang.String> getArgumentNames();
-    method public java.text.Format getFormatByArgumentName(String);
-    method public java.text.Format[] getFormats();
-    method public java.text.Format[] getFormatsByArgumentIndex();
-    method public java.util.Locale getLocale();
-    method public android.icu.util.ULocale getULocale();
-    method public Object[] parse(String, java.text.ParsePosition);
-    method public Object[] parse(String) throws java.text.ParseException;
-    method public Object parseObject(String, java.text.ParsePosition);
-    method public java.util.Map<java.lang.String,java.lang.Object> parseToMap(String, java.text.ParsePosition);
-    method public java.util.Map<java.lang.String,java.lang.Object> parseToMap(String) throws java.text.ParseException;
-    method public void setFormat(int, java.text.Format);
-    method public void setFormatByArgumentIndex(int, java.text.Format);
-    method public void setFormatByArgumentName(String, java.text.Format);
-    method public void setFormats(java.text.Format[]);
-    method public void setFormatsByArgumentIndex(java.text.Format[]);
-    method public void setFormatsByArgumentName(java.util.Map<java.lang.String,java.text.Format>);
-    method public void setLocale(java.util.Locale);
-    method public void setLocale(android.icu.util.ULocale);
-    method public String toPattern();
-    method public boolean usesNamedArguments();
-  }
-
-  public static class MessageFormat.Field extends java.text.Format.Field {
-    ctor protected MessageFormat.Field(String);
-    field public static final android.icu.text.MessageFormat.Field ARGUMENT;
-  }
-
-  public final class MessagePattern implements java.lang.Cloneable android.icu.util.Freezable<android.icu.text.MessagePattern> {
-    ctor public MessagePattern();
-    ctor public MessagePattern(android.icu.text.MessagePattern.ApostropheMode);
-    ctor public MessagePattern(String);
-    method public String autoQuoteApostropheDeep();
-    method public void clear();
-    method public void clearPatternAndSetApostropheMode(android.icu.text.MessagePattern.ApostropheMode);
-    method public Object clone();
-    method public android.icu.text.MessagePattern cloneAsThawed();
-    method public int countParts();
-    method public android.icu.text.MessagePattern freeze();
-    method public android.icu.text.MessagePattern.ApostropheMode getApostropheMode();
-    method public int getLimitPartIndex(int);
-    method public double getNumericValue(android.icu.text.MessagePattern.Part);
-    method public android.icu.text.MessagePattern.Part getPart(int);
-    method public android.icu.text.MessagePattern.Part.Type getPartType(int);
-    method public int getPatternIndex(int);
-    method public String getPatternString();
-    method public double getPluralOffset(int);
-    method public String getSubstring(android.icu.text.MessagePattern.Part);
-    method public boolean hasNamedArguments();
-    method public boolean hasNumberedArguments();
-    method public boolean isFrozen();
-    method public android.icu.text.MessagePattern parse(String);
-    method public android.icu.text.MessagePattern parseChoiceStyle(String);
-    method public android.icu.text.MessagePattern parsePluralStyle(String);
-    method public android.icu.text.MessagePattern parseSelectStyle(String);
-    method public boolean partSubstringMatches(android.icu.text.MessagePattern.Part, String);
-    method public static int validateArgumentName(String);
-    field public static final int ARG_NAME_NOT_NUMBER = -1; // 0xffffffff
-    field public static final int ARG_NAME_NOT_VALID = -2; // 0xfffffffe
-    field public static final double NO_NUMERIC_VALUE = -1.23456789E8;
-  }
-
-  public enum MessagePattern.ApostropheMode {
-    enum_constant public static final android.icu.text.MessagePattern.ApostropheMode DOUBLE_OPTIONAL;
-    enum_constant public static final android.icu.text.MessagePattern.ApostropheMode DOUBLE_REQUIRED;
-  }
-
-  public enum MessagePattern.ArgType {
-    method public boolean hasPluralStyle();
-    enum_constant public static final android.icu.text.MessagePattern.ArgType CHOICE;
-    enum_constant public static final android.icu.text.MessagePattern.ArgType NONE;
-    enum_constant public static final android.icu.text.MessagePattern.ArgType PLURAL;
-    enum_constant public static final android.icu.text.MessagePattern.ArgType SELECT;
-    enum_constant public static final android.icu.text.MessagePattern.ArgType SELECTORDINAL;
-    enum_constant public static final android.icu.text.MessagePattern.ArgType SIMPLE;
-  }
-
-  public static final class MessagePattern.Part {
-    method public android.icu.text.MessagePattern.ArgType getArgType();
-    method public int getIndex();
-    method public int getLength();
-    method public int getLimit();
-    method public android.icu.text.MessagePattern.Part.Type getType();
-    method public int getValue();
-  }
-
-  public enum MessagePattern.Part.Type {
-    method public boolean hasNumericValue();
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_DOUBLE;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_INT;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_LIMIT;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_NAME;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_NUMBER;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_SELECTOR;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_START;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_STYLE;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type ARG_TYPE;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type INSERT_CHAR;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type MSG_LIMIT;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type MSG_START;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type REPLACE_NUMBER;
-    enum_constant public static final android.icu.text.MessagePattern.Part.Type SKIP_SYNTAX;
-  }
-
-  public final class Normalizer implements java.lang.Cloneable {
-    method @Deprecated public Object clone();
-    method public static int compare(char[], int, int, char[], int, int, int);
-    method public static int compare(String, String, int);
-    method public static int compare(char[], char[], int);
-    method public static int compare(int, int, int);
-    method public static int compare(int, String, int);
-    field public static final int COMPARE_CODE_POINT_ORDER = 32768; // 0x8000
-    field public static final int COMPARE_IGNORE_CASE = 65536; // 0x10000
-    field public static final int FOLD_CASE_DEFAULT = 0; // 0x0
-    field public static final int FOLD_CASE_EXCLUDE_SPECIAL_I = 1; // 0x1
-    field public static final int INPUT_IS_FCD = 131072; // 0x20000
-    field public static final android.icu.text.Normalizer.QuickCheckResult MAYBE;
-    field public static final android.icu.text.Normalizer.QuickCheckResult NO;
-    field public static final android.icu.text.Normalizer.QuickCheckResult YES;
-  }
-
-  public static final class Normalizer.QuickCheckResult {
-  }
-
-  public abstract class Normalizer2 {
-    method public abstract StringBuilder append(StringBuilder, CharSequence);
-    method public int composePair(int, int);
-    method public int getCombiningClass(int);
-    method public abstract String getDecomposition(int);
-    method public static android.icu.text.Normalizer2 getInstance(java.io.InputStream, String, android.icu.text.Normalizer2.Mode);
-    method public static android.icu.text.Normalizer2 getNFCInstance();
-    method public static android.icu.text.Normalizer2 getNFDInstance();
-    method public static android.icu.text.Normalizer2 getNFKCCasefoldInstance();
-    method public static android.icu.text.Normalizer2 getNFKCInstance();
-    method public static android.icu.text.Normalizer2 getNFKDInstance();
-    method public String getRawDecomposition(int);
-    method public abstract boolean hasBoundaryAfter(int);
-    method public abstract boolean hasBoundaryBefore(int);
-    method public abstract boolean isInert(int);
-    method public abstract boolean isNormalized(CharSequence);
-    method public String normalize(CharSequence);
-    method public abstract StringBuilder normalize(CharSequence, StringBuilder);
-    method public abstract Appendable normalize(CharSequence, Appendable);
-    method public abstract StringBuilder normalizeSecondAndAppend(StringBuilder, CharSequence);
-    method public abstract android.icu.text.Normalizer.QuickCheckResult quickCheck(CharSequence);
-    method public abstract int spanQuickCheckYes(CharSequence);
-  }
-
-  public enum Normalizer2.Mode {
-    enum_constant public static final android.icu.text.Normalizer2.Mode COMPOSE;
-    enum_constant public static final android.icu.text.Normalizer2.Mode COMPOSE_CONTIGUOUS;
-    enum_constant public static final android.icu.text.Normalizer2.Mode DECOMPOSE;
-    enum_constant public static final android.icu.text.Normalizer2.Mode FCD;
-  }
-
-  public abstract class NumberFormat extends android.icu.text.UFormat {
-    ctor public NumberFormat();
-    method public StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
-    method public final String format(double);
-    method public final String format(long);
-    method public final String format(java.math.BigInteger);
-    method public final String format(java.math.BigDecimal);
-    method public final String format(android.icu.math.BigDecimal);
-    method public final String format(android.icu.util.CurrencyAmount);
-    method public abstract StringBuffer format(double, StringBuffer, java.text.FieldPosition);
-    method public abstract StringBuffer format(long, StringBuffer, java.text.FieldPosition);
-    method public abstract StringBuffer format(java.math.BigInteger, StringBuffer, java.text.FieldPosition);
-    method public abstract StringBuffer format(java.math.BigDecimal, StringBuffer, java.text.FieldPosition);
-    method public abstract StringBuffer format(android.icu.math.BigDecimal, StringBuffer, java.text.FieldPosition);
-    method public StringBuffer format(android.icu.util.CurrencyAmount, StringBuffer, java.text.FieldPosition);
-    method public static java.util.Locale[] getAvailableLocales();
-    method public android.icu.text.DisplayContext getContext(android.icu.text.DisplayContext.Type);
-    method public android.icu.util.Currency getCurrency();
-    method public static final android.icu.text.NumberFormat getCurrencyInstance();
-    method public static android.icu.text.NumberFormat getCurrencyInstance(java.util.Locale);
-    method public static android.icu.text.NumberFormat getCurrencyInstance(android.icu.util.ULocale);
-    method public static final android.icu.text.NumberFormat getInstance();
-    method public static android.icu.text.NumberFormat getInstance(java.util.Locale);
-    method public static android.icu.text.NumberFormat getInstance(android.icu.util.ULocale);
-    method public static final android.icu.text.NumberFormat getInstance(int);
-    method public static android.icu.text.NumberFormat getInstance(java.util.Locale, int);
-    method public static android.icu.text.NumberFormat getInstance(android.icu.util.ULocale, int);
-    method public static final android.icu.text.NumberFormat getIntegerInstance();
-    method public static android.icu.text.NumberFormat getIntegerInstance(java.util.Locale);
-    method public static android.icu.text.NumberFormat getIntegerInstance(android.icu.util.ULocale);
-    method public int getMaximumFractionDigits();
-    method public int getMaximumIntegerDigits();
-    method public int getMinimumFractionDigits();
-    method public int getMinimumIntegerDigits();
-    method public static final android.icu.text.NumberFormat getNumberInstance();
-    method public static android.icu.text.NumberFormat getNumberInstance(java.util.Locale);
-    method public static android.icu.text.NumberFormat getNumberInstance(android.icu.util.ULocale);
-    method protected static String getPattern(android.icu.util.ULocale, int);
-    method public static final android.icu.text.NumberFormat getPercentInstance();
-    method public static android.icu.text.NumberFormat getPercentInstance(java.util.Locale);
-    method public static android.icu.text.NumberFormat getPercentInstance(android.icu.util.ULocale);
-    method public int getRoundingMode();
-    method public static final android.icu.text.NumberFormat getScientificInstance();
-    method public static android.icu.text.NumberFormat getScientificInstance(java.util.Locale);
-    method public static android.icu.text.NumberFormat getScientificInstance(android.icu.util.ULocale);
-    method public boolean isGroupingUsed();
-    method public boolean isParseIntegerOnly();
-    method public boolean isParseStrict();
-    method public abstract Number parse(String, java.text.ParsePosition);
-    method public Number parse(String) throws java.text.ParseException;
-    method public android.icu.util.CurrencyAmount parseCurrency(CharSequence, java.text.ParsePosition);
-    method public final Object parseObject(String, java.text.ParsePosition);
-    method public void setContext(android.icu.text.DisplayContext);
-    method public void setCurrency(android.icu.util.Currency);
-    method public void setGroupingUsed(boolean);
-    method public void setMaximumFractionDigits(int);
-    method public void setMaximumIntegerDigits(int);
-    method public void setMinimumFractionDigits(int);
-    method public void setMinimumIntegerDigits(int);
-    method public void setParseIntegerOnly(boolean);
-    method public void setParseStrict(boolean);
-    method public void setRoundingMode(int);
-    field public static final int ACCOUNTINGCURRENCYSTYLE = 7; // 0x7
-    field public static final int CASHCURRENCYSTYLE = 8; // 0x8
-    field public static final int CURRENCYSTYLE = 1; // 0x1
-    field public static final int FRACTION_FIELD = 1; // 0x1
-    field public static final int INTEGERSTYLE = 4; // 0x4
-    field public static final int INTEGER_FIELD = 0; // 0x0
-    field public static final int ISOCURRENCYSTYLE = 5; // 0x5
-    field public static final int NUMBERSTYLE = 0; // 0x0
-    field public static final int PERCENTSTYLE = 2; // 0x2
-    field public static final int PLURALCURRENCYSTYLE = 6; // 0x6
-    field public static final int SCIENTIFICSTYLE = 3; // 0x3
-    field public static final int STANDARDCURRENCYSTYLE = 9; // 0x9
-  }
-
-  public static class NumberFormat.Field extends java.text.Format.Field {
-    ctor protected NumberFormat.Field(String);
-    field public static final android.icu.text.NumberFormat.Field CURRENCY;
-    field public static final android.icu.text.NumberFormat.Field DECIMAL_SEPARATOR;
-    field public static final android.icu.text.NumberFormat.Field EXPONENT;
-    field public static final android.icu.text.NumberFormat.Field EXPONENT_SIGN;
-    field public static final android.icu.text.NumberFormat.Field EXPONENT_SYMBOL;
-    field public static final android.icu.text.NumberFormat.Field FRACTION;
-    field public static final android.icu.text.NumberFormat.Field GROUPING_SEPARATOR;
-    field public static final android.icu.text.NumberFormat.Field INTEGER;
-    field public static final android.icu.text.NumberFormat.Field PERCENT;
-    field public static final android.icu.text.NumberFormat.Field PERMILLE;
-    field public static final android.icu.text.NumberFormat.Field SIGN;
-  }
-
-  public class NumberingSystem {
-    ctor public NumberingSystem();
-    method public static String[] getAvailableNames();
-    method public String getDescription();
-    method public static android.icu.text.NumberingSystem getInstance(int, boolean, String);
-    method public static android.icu.text.NumberingSystem getInstance(java.util.Locale);
-    method public static android.icu.text.NumberingSystem getInstance(android.icu.util.ULocale);
-    method public static android.icu.text.NumberingSystem getInstance();
-    method public static android.icu.text.NumberingSystem getInstanceByName(String);
-    method public String getName();
-    method public int getRadix();
-    method public boolean isAlgorithmic();
-    method public static boolean isValidDigitString(String);
-    field public static final android.icu.text.NumberingSystem LATIN;
-  }
-
-  public class PluralFormat extends android.icu.text.UFormat {
-    ctor public PluralFormat();
-    ctor public PluralFormat(android.icu.util.ULocale);
-    ctor public PluralFormat(java.util.Locale);
-    ctor public PluralFormat(android.icu.text.PluralRules);
-    ctor public PluralFormat(android.icu.util.ULocale, android.icu.text.PluralRules);
-    ctor public PluralFormat(java.util.Locale, android.icu.text.PluralRules);
-    ctor public PluralFormat(android.icu.util.ULocale, android.icu.text.PluralRules.PluralType);
-    ctor public PluralFormat(java.util.Locale, android.icu.text.PluralRules.PluralType);
-    ctor public PluralFormat(String);
-    ctor public PluralFormat(android.icu.util.ULocale, String);
-    ctor public PluralFormat(android.icu.text.PluralRules, String);
-    ctor public PluralFormat(android.icu.util.ULocale, android.icu.text.PluralRules, String);
-    ctor public PluralFormat(android.icu.util.ULocale, android.icu.text.PluralRules.PluralType, String);
-    method public void applyPattern(String);
-    method public boolean equals(android.icu.text.PluralFormat);
-    method public final String format(double);
-    method public StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
-    method public Number parse(String, java.text.ParsePosition);
-    method public Object parseObject(String, java.text.ParsePosition);
-    method public void setNumberFormat(android.icu.text.NumberFormat);
-    method public String toPattern();
-  }
-
-  public class PluralRules implements java.io.Serializable {
-    method public static android.icu.text.PluralRules createRules(String);
-    method public boolean equals(android.icu.text.PluralRules);
-    method public static android.icu.text.PluralRules forLocale(android.icu.util.ULocale);
-    method public static android.icu.text.PluralRules forLocale(java.util.Locale);
-    method public static android.icu.text.PluralRules forLocale(android.icu.util.ULocale, android.icu.text.PluralRules.PluralType);
-    method public static android.icu.text.PluralRules forLocale(java.util.Locale, android.icu.text.PluralRules.PluralType);
-    method public java.util.Collection<java.lang.Double> getAllKeywordValues(String);
-    method public java.util.Set<java.lang.String> getKeywords();
-    method public java.util.Collection<java.lang.Double> getSamples(String);
-    method public double getUniqueKeywordValue(String);
-    method public static android.icu.text.PluralRules parseDescription(String) throws java.text.ParseException;
-    method public String select(double);
-    field public static final android.icu.text.PluralRules DEFAULT;
-    field public static final String KEYWORD_FEW = "few";
-    field public static final String KEYWORD_MANY = "many";
-    field public static final String KEYWORD_ONE = "one";
-    field public static final String KEYWORD_OTHER = "other";
-    field public static final String KEYWORD_TWO = "two";
-    field public static final String KEYWORD_ZERO = "zero";
-    field public static final double NO_UNIQUE_VALUE = -0.00123456777;
-  }
-
-  public enum PluralRules.PluralType {
-    enum_constant public static final android.icu.text.PluralRules.PluralType CARDINAL;
-    enum_constant public static final android.icu.text.PluralRules.PluralType ORDINAL;
-  }
-
-  public final class RelativeDateTimeFormatter {
-    method public String combineDateAndTime(String, String);
-    method public String format(double, android.icu.text.RelativeDateTimeFormatter.Direction, android.icu.text.RelativeDateTimeFormatter.RelativeUnit);
-    method public String format(android.icu.text.RelativeDateTimeFormatter.Direction, android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit);
-    method public String format(double, android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit);
-    method public String formatNumeric(double, android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit);
-    method public android.icu.text.DisplayContext getCapitalizationContext();
-    method public android.icu.text.RelativeDateTimeFormatter.Style getFormatStyle();
-    method public static android.icu.text.RelativeDateTimeFormatter getInstance();
-    method public static android.icu.text.RelativeDateTimeFormatter getInstance(android.icu.util.ULocale);
-    method public static android.icu.text.RelativeDateTimeFormatter getInstance(java.util.Locale);
-    method public static android.icu.text.RelativeDateTimeFormatter getInstance(android.icu.util.ULocale, android.icu.text.NumberFormat);
-    method public static android.icu.text.RelativeDateTimeFormatter getInstance(android.icu.util.ULocale, android.icu.text.NumberFormat, android.icu.text.RelativeDateTimeFormatter.Style, android.icu.text.DisplayContext);
-    method public static android.icu.text.RelativeDateTimeFormatter getInstance(java.util.Locale, android.icu.text.NumberFormat);
-    method public android.icu.text.NumberFormat getNumberFormat();
-  }
-
-  public enum RelativeDateTimeFormatter.AbsoluteUnit {
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit DAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit FRIDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit MONDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit MONTH;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit NOW;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit SATURDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit SUNDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit THURSDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit TUESDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit WEDNESDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit WEEK;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.AbsoluteUnit YEAR;
-  }
-
-  public enum RelativeDateTimeFormatter.Direction {
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Direction LAST;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Direction LAST_2;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Direction NEXT;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Direction NEXT_2;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Direction PLAIN;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Direction THIS;
-  }
-
-  public enum RelativeDateTimeFormatter.RelativeDateTimeUnit {
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit DAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit FRIDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit HOUR;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit MINUTE;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit MONDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit MONTH;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit QUARTER;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit SATURDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit SECOND;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit SUNDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit THURSDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit TUESDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit WEDNESDAY;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit WEEK;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeDateTimeUnit YEAR;
-  }
-
-  public enum RelativeDateTimeFormatter.RelativeUnit {
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit DAYS;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit HOURS;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit MINUTES;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit MONTHS;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit SECONDS;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit WEEKS;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.RelativeUnit YEARS;
-  }
-
-  public enum RelativeDateTimeFormatter.Style {
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Style LONG;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Style NARROW;
-    enum_constant public static final android.icu.text.RelativeDateTimeFormatter.Style SHORT;
-  }
-
-  public interface Replaceable {
-    method public int char32At(int);
-    method public char charAt(int);
-    method public void copy(int, int, int);
-    method public void getChars(int, int, char[], int);
-    method public boolean hasMetaData();
-    method public int length();
-    method public void replace(int, int, String);
-    method public void replace(int, int, char[], int, int);
-  }
-
-  public final class RuleBasedCollator extends android.icu.text.Collator {
-    ctor public RuleBasedCollator(String) throws java.lang.Exception;
-    method public android.icu.text.RuleBasedCollator cloneAsThawed();
-    method public int compare(String, String);
-    method public android.icu.text.CollationElementIterator getCollationElementIterator(String);
-    method public android.icu.text.CollationElementIterator getCollationElementIterator(java.text.CharacterIterator);
-    method public android.icu.text.CollationElementIterator getCollationElementIterator(android.icu.text.UCharacterIterator);
-    method public android.icu.text.CollationKey getCollationKey(String);
-    method public void getContractionsAndExpansions(android.icu.text.UnicodeSet, android.icu.text.UnicodeSet, boolean) throws java.lang.Exception;
-    method public boolean getNumericCollation();
-    method public String getRules();
-    method public String getRules(boolean);
-    method public android.icu.util.VersionInfo getUCAVersion();
-    method public int getVariableTop();
-    method public android.icu.util.VersionInfo getVersion();
-    method public boolean isAlternateHandlingShifted();
-    method public boolean isCaseLevel();
-    method public boolean isFrenchCollation();
-    method public boolean isLowerCaseFirst();
-    method public boolean isUpperCaseFirst();
-    method public void setAlternateHandlingDefault();
-    method public void setAlternateHandlingShifted(boolean);
-    method public void setCaseFirstDefault();
-    method public void setCaseLevel(boolean);
-    method public void setCaseLevelDefault();
-    method public void setDecompositionDefault();
-    method public void setFrenchCollation(boolean);
-    method public void setFrenchCollationDefault();
-    method public void setLowerCaseFirst(boolean);
-    method public android.icu.text.RuleBasedCollator setMaxVariable(int);
-    method public void setNumericCollation(boolean);
-    method public void setNumericCollationDefault();
-    method public void setStrengthDefault();
-    method public void setUpperCaseFirst(boolean);
-  }
-
-  public final class ScientificNumberFormatter {
-    method public String format(Object);
-    method public static android.icu.text.ScientificNumberFormatter getMarkupInstance(android.icu.util.ULocale, String, String);
-    method public static android.icu.text.ScientificNumberFormatter getMarkupInstance(android.icu.text.DecimalFormat, String, String);
-    method public static android.icu.text.ScientificNumberFormatter getSuperscriptInstance(android.icu.util.ULocale);
-    method public static android.icu.text.ScientificNumberFormatter getSuperscriptInstance(android.icu.text.DecimalFormat);
-  }
-
-  public abstract class SearchIterator {
-    ctor protected SearchIterator(java.text.CharacterIterator, android.icu.text.BreakIterator);
-    method public final int first();
-    method public final int following(int);
-    method public android.icu.text.BreakIterator getBreakIterator();
-    method public android.icu.text.SearchIterator.ElementComparisonType getElementComparisonType();
-    method public abstract int getIndex();
-    method public int getMatchLength();
-    method public int getMatchStart();
-    method public String getMatchedText();
-    method public java.text.CharacterIterator getTarget();
-    method protected abstract int handleNext(int);
-    method protected abstract int handlePrevious(int);
-    method public boolean isOverlapping();
-    method public final int last();
-    method public int next();
-    method public final int preceding(int);
-    method public int previous();
-    method public void reset();
-    method public void setBreakIterator(android.icu.text.BreakIterator);
-    method public void setElementComparisonType(android.icu.text.SearchIterator.ElementComparisonType);
-    method public void setIndex(int);
-    method protected void setMatchLength(int);
-    method public void setOverlapping(boolean);
-    method public void setTarget(java.text.CharacterIterator);
-    field public static final int DONE = -1; // 0xffffffff
-    field protected android.icu.text.BreakIterator breakIterator;
-    field protected int matchLength;
-    field protected java.text.CharacterIterator targetText;
-  }
-
-  public enum SearchIterator.ElementComparisonType {
-    enum_constant public static final android.icu.text.SearchIterator.ElementComparisonType ANY_BASE_WEIGHT_IS_WILDCARD;
-    enum_constant public static final android.icu.text.SearchIterator.ElementComparisonType PATTERN_BASE_WEIGHT_IS_WILDCARD;
-    enum_constant public static final android.icu.text.SearchIterator.ElementComparisonType STANDARD_ELEMENT_COMPARISON;
-  }
-
-  public class SelectFormat extends java.text.Format {
-    ctor public SelectFormat(String);
-    method public void applyPattern(String);
-    method public final String format(String);
-    method public StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
-    method public Object parseObject(String, java.text.ParsePosition);
-    method public String toPattern();
-  }
-
-  public class SimpleDateFormat extends android.icu.text.DateFormat {
-    ctor public SimpleDateFormat();
-    ctor public SimpleDateFormat(String);
-    ctor public SimpleDateFormat(String, java.util.Locale);
-    ctor public SimpleDateFormat(String, android.icu.util.ULocale);
-    ctor public SimpleDateFormat(String, String, android.icu.util.ULocale);
-    ctor public SimpleDateFormat(String, android.icu.text.DateFormatSymbols);
-    method public void applyLocalizedPattern(String);
-    method public void applyPattern(String);
-    method public StringBuffer format(android.icu.util.Calendar, StringBuffer, java.text.FieldPosition);
-    method public java.util.Date get2DigitYearStart();
-    method public android.icu.text.DateFormatSymbols getDateFormatSymbols();
-    method public android.icu.text.NumberFormat getNumberFormat(char);
-    method protected android.icu.text.DateFormatSymbols getSymbols();
-    method public android.icu.text.TimeZoneFormat getTimeZoneFormat();
-    method protected int matchQuarterString(String, int, int, String[], android.icu.util.Calendar);
-    method protected int matchString(String, int, int, String[], android.icu.util.Calendar);
-    method public void parse(String, android.icu.util.Calendar, java.text.ParsePosition);
-    method protected android.icu.text.DateFormat.Field patternCharToDateFormatField(char);
-    method public void set2DigitYearStart(java.util.Date);
-    method public void setDateFormatSymbols(android.icu.text.DateFormatSymbols);
-    method public void setNumberFormat(String, android.icu.text.NumberFormat);
-    method public void setTimeZoneFormat(android.icu.text.TimeZoneFormat);
-    method protected String subFormat(char, int, int, java.text.FieldPosition, android.icu.text.DateFormatSymbols, android.icu.util.Calendar) throws java.lang.IllegalArgumentException;
-    method protected int subParse(String, int, char, int, boolean, boolean, boolean[], android.icu.util.Calendar);
-    method public String toLocalizedPattern();
-    method public String toPattern();
-    method protected String zeroPaddingNumber(long, int, int);
-  }
-
-  public class StringPrepParseException extends java.text.ParseException {
-    ctor public StringPrepParseException(String, int);
-    ctor public StringPrepParseException(String, int, String, int);
-    ctor public StringPrepParseException(String, int, String, int, int);
-    method public int getError();
-    field public static final int ACE_PREFIX_ERROR = 6; // 0x6
-    field public static final int BUFFER_OVERFLOW_ERROR = 9; // 0x9
-    field public static final int CHECK_BIDI_ERROR = 4; // 0x4
-    field public static final int DOMAIN_NAME_TOO_LONG_ERROR = 11; // 0xb
-    field public static final int ILLEGAL_CHAR_FOUND = 1; // 0x1
-    field public static final int INVALID_CHAR_FOUND = 0; // 0x0
-    field public static final int LABEL_TOO_LONG_ERROR = 8; // 0x8
-    field public static final int PROHIBITED_ERROR = 2; // 0x2
-    field public static final int STD3_ASCII_RULES_ERROR = 5; // 0x5
-    field public static final int UNASSIGNED_ERROR = 3; // 0x3
-    field public static final int VERIFICATION_ERROR = 7; // 0x7
-    field public static final int ZERO_LENGTH_LABEL = 10; // 0xa
-  }
-
-  public final class StringSearch extends android.icu.text.SearchIterator {
-    ctor public StringSearch(String, java.text.CharacterIterator, android.icu.text.RuleBasedCollator, android.icu.text.BreakIterator);
-    ctor public StringSearch(String, java.text.CharacterIterator, android.icu.text.RuleBasedCollator);
-    ctor public StringSearch(String, java.text.CharacterIterator, java.util.Locale);
-    ctor public StringSearch(String, java.text.CharacterIterator, android.icu.util.ULocale);
-    ctor public StringSearch(String, String);
-    method public android.icu.text.RuleBasedCollator getCollator();
-    method public int getIndex();
-    method public String getPattern();
-    method protected int handleNext(int);
-    method protected int handlePrevious(int);
-    method public boolean isCanonical();
-    method public void setCanonical(boolean);
-    method public void setCollator(android.icu.text.RuleBasedCollator);
-    method public void setPattern(String);
-  }
-
-  public interface SymbolTable {
-    method public char[] lookup(String);
-    method public android.icu.text.UnicodeMatcher lookupMatcher(int);
-    method public String parseReference(String, java.text.ParsePosition, int);
-    field public static final char SYMBOL_REF = 36; // 0x0024 '$'
-  }
-
-  public class TimeZoneFormat extends android.icu.text.UFormat implements android.icu.util.Freezable<android.icu.text.TimeZoneFormat> java.io.Serializable {
-    ctor protected TimeZoneFormat(android.icu.util.ULocale);
-    method public android.icu.text.TimeZoneFormat cloneAsThawed();
-    method public final String format(android.icu.text.TimeZoneFormat.Style, android.icu.util.TimeZone, long);
-    method public String format(android.icu.text.TimeZoneFormat.Style, android.icu.util.TimeZone, long, android.icu.util.Output<android.icu.text.TimeZoneFormat.TimeType>);
-    method public StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
-    method public final String formatOffsetISO8601Basic(int, boolean, boolean, boolean);
-    method public final String formatOffsetISO8601Extended(int, boolean, boolean, boolean);
-    method public String formatOffsetLocalizedGMT(int);
-    method public String formatOffsetShortLocalizedGMT(int);
-    method public android.icu.text.TimeZoneFormat freeze();
-    method public java.util.EnumSet<android.icu.text.TimeZoneFormat.ParseOption> getDefaultParseOptions();
-    method public String getGMTOffsetDigits();
-    method public String getGMTOffsetPattern(android.icu.text.TimeZoneFormat.GMTOffsetPatternType);
-    method public String getGMTPattern();
-    method public String getGMTZeroFormat();
-    method public static android.icu.text.TimeZoneFormat getInstance(android.icu.util.ULocale);
-    method public static android.icu.text.TimeZoneFormat getInstance(java.util.Locale);
-    method public android.icu.text.TimeZoneNames getTimeZoneNames();
-    method public boolean isFrozen();
-    method public android.icu.util.TimeZone parse(android.icu.text.TimeZoneFormat.Style, String, java.text.ParsePosition, java.util.EnumSet<android.icu.text.TimeZoneFormat.ParseOption>, android.icu.util.Output<android.icu.text.TimeZoneFormat.TimeType>);
-    method public android.icu.util.TimeZone parse(android.icu.text.TimeZoneFormat.Style, String, java.text.ParsePosition, android.icu.util.Output<android.icu.text.TimeZoneFormat.TimeType>);
-    method public final android.icu.util.TimeZone parse(String, java.text.ParsePosition);
-    method public final android.icu.util.TimeZone parse(String) throws java.text.ParseException;
-    method public Object parseObject(String, java.text.ParsePosition);
-    method public final int parseOffsetISO8601(String, java.text.ParsePosition);
-    method public int parseOffsetLocalizedGMT(String, java.text.ParsePosition);
-    method public int parseOffsetShortLocalizedGMT(String, java.text.ParsePosition);
-    method public android.icu.text.TimeZoneFormat setDefaultParseOptions(java.util.EnumSet<android.icu.text.TimeZoneFormat.ParseOption>);
-    method public android.icu.text.TimeZoneFormat setGMTOffsetDigits(String);
-    method public android.icu.text.TimeZoneFormat setGMTOffsetPattern(android.icu.text.TimeZoneFormat.GMTOffsetPatternType, String);
-    method public android.icu.text.TimeZoneFormat setGMTPattern(String);
-    method public android.icu.text.TimeZoneFormat setGMTZeroFormat(String);
-    method public android.icu.text.TimeZoneFormat setTimeZoneNames(android.icu.text.TimeZoneNames);
-  }
-
-  public enum TimeZoneFormat.GMTOffsetPatternType {
-    enum_constant public static final android.icu.text.TimeZoneFormat.GMTOffsetPatternType NEGATIVE_H;
-    enum_constant public static final android.icu.text.TimeZoneFormat.GMTOffsetPatternType NEGATIVE_HM;
-    enum_constant public static final android.icu.text.TimeZoneFormat.GMTOffsetPatternType NEGATIVE_HMS;
-    enum_constant public static final android.icu.text.TimeZoneFormat.GMTOffsetPatternType POSITIVE_H;
-    enum_constant public static final android.icu.text.TimeZoneFormat.GMTOffsetPatternType POSITIVE_HM;
-    enum_constant public static final android.icu.text.TimeZoneFormat.GMTOffsetPatternType POSITIVE_HMS;
-  }
-
-  public enum TimeZoneFormat.ParseOption {
-    enum_constant public static final android.icu.text.TimeZoneFormat.ParseOption ALL_STYLES;
-    enum_constant public static final android.icu.text.TimeZoneFormat.ParseOption TZ_DATABASE_ABBREVIATIONS;
-  }
-
-  public enum TimeZoneFormat.Style {
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style EXEMPLAR_LOCATION;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style GENERIC_LOCATION;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style GENERIC_LONG;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style GENERIC_SHORT;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_BASIC_FIXED;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_BASIC_FULL;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_BASIC_LOCAL_FIXED;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_BASIC_LOCAL_FULL;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_BASIC_LOCAL_SHORT;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_BASIC_SHORT;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_EXTENDED_FIXED;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_EXTENDED_FULL;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_EXTENDED_LOCAL_FIXED;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style ISO_EXTENDED_LOCAL_FULL;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style LOCALIZED_GMT;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style LOCALIZED_GMT_SHORT;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style SPECIFIC_LONG;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style SPECIFIC_SHORT;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style ZONE_ID;
-    enum_constant public static final android.icu.text.TimeZoneFormat.Style ZONE_ID_SHORT;
-  }
-
-  public enum TimeZoneFormat.TimeType {
-    enum_constant public static final android.icu.text.TimeZoneFormat.TimeType DAYLIGHT;
-    enum_constant public static final android.icu.text.TimeZoneFormat.TimeType STANDARD;
-    enum_constant public static final android.icu.text.TimeZoneFormat.TimeType UNKNOWN;
-  }
-
-  public abstract class TimeZoneNames implements java.io.Serializable {
-    method public abstract java.util.Set<java.lang.String> getAvailableMetaZoneIDs();
-    method public abstract java.util.Set<java.lang.String> getAvailableMetaZoneIDs(String);
-    method public final String getDisplayName(String, android.icu.text.TimeZoneNames.NameType, long);
-    method public String getExemplarLocationName(String);
-    method public static android.icu.text.TimeZoneNames getInstance(android.icu.util.ULocale);
-    method public static android.icu.text.TimeZoneNames getInstance(java.util.Locale);
-    method public abstract String getMetaZoneDisplayName(String, android.icu.text.TimeZoneNames.NameType);
-    method public abstract String getMetaZoneID(String, long);
-    method public abstract String getReferenceZoneID(String, String);
-    method public static android.icu.text.TimeZoneNames getTZDBInstance(android.icu.util.ULocale);
-    method public abstract String getTimeZoneDisplayName(String, android.icu.text.TimeZoneNames.NameType);
-  }
-
-  public enum TimeZoneNames.NameType {
-    enum_constant public static final android.icu.text.TimeZoneNames.NameType EXEMPLAR_LOCATION;
-    enum_constant public static final android.icu.text.TimeZoneNames.NameType LONG_DAYLIGHT;
-    enum_constant public static final android.icu.text.TimeZoneNames.NameType LONG_GENERIC;
-    enum_constant public static final android.icu.text.TimeZoneNames.NameType LONG_STANDARD;
-    enum_constant public static final android.icu.text.TimeZoneNames.NameType SHORT_DAYLIGHT;
-    enum_constant public static final android.icu.text.TimeZoneNames.NameType SHORT_GENERIC;
-    enum_constant public static final android.icu.text.TimeZoneNames.NameType SHORT_STANDARD;
-  }
-
-  public abstract class Transliterator {
-    method public static final android.icu.text.Transliterator createFromRules(String, String, int);
-    method public void filteredTransliterate(android.icu.text.Replaceable, android.icu.text.Transliterator.Position, boolean);
-    method public final void finishTransliteration(android.icu.text.Replaceable, android.icu.text.Transliterator.Position);
-    method public static final java.util.Enumeration<java.lang.String> getAvailableIDs();
-    method public static final java.util.Enumeration<java.lang.String> getAvailableSources();
-    method public static final java.util.Enumeration<java.lang.String> getAvailableTargets(String);
-    method public static final java.util.Enumeration<java.lang.String> getAvailableVariants(String, String);
-    method public static final String getDisplayName(String);
-    method public static String getDisplayName(String, java.util.Locale);
-    method public static String getDisplayName(String, android.icu.util.ULocale);
-    method public android.icu.text.Transliterator[] getElements();
-    method public final android.icu.text.UnicodeFilter getFilter();
-    method public final String getID();
-    method public static final android.icu.text.Transliterator getInstance(String);
-    method public static android.icu.text.Transliterator getInstance(String, int);
-    method public final android.icu.text.Transliterator getInverse();
-    method public final int getMaximumContextLength();
-    method public final android.icu.text.UnicodeSet getSourceSet();
-    method public android.icu.text.UnicodeSet getTargetSet();
-    method public void setFilter(android.icu.text.UnicodeFilter);
-    method public String toRules(boolean);
-    method public final int transliterate(android.icu.text.Replaceable, int, int);
-    method public final void transliterate(android.icu.text.Replaceable);
-    method public final String transliterate(String);
-    method public final void transliterate(android.icu.text.Replaceable, android.icu.text.Transliterator.Position, String);
-    method public final void transliterate(android.icu.text.Replaceable, android.icu.text.Transliterator.Position, int);
-    method public final void transliterate(android.icu.text.Replaceable, android.icu.text.Transliterator.Position);
-    field public static final int FORWARD = 0; // 0x0
-    field public static final int REVERSE = 1; // 0x1
-  }
-
-  public static class Transliterator.Position {
-    ctor public Transliterator.Position();
-    ctor public Transliterator.Position(int, int, int);
-    ctor public Transliterator.Position(int, int, int, int);
-    ctor public Transliterator.Position(android.icu.text.Transliterator.Position);
-    method public void set(android.icu.text.Transliterator.Position);
-    method public final void validate(int);
-    field public int contextLimit;
-    field public int contextStart;
-    field public int limit;
-    field public int start;
-  }
-
-  public abstract class UCharacterIterator implements java.lang.Cloneable {
-    ctor protected UCharacterIterator();
-    method public Object clone() throws java.lang.CloneNotSupportedException;
-    method public abstract int current();
-    method public int currentCodePoint();
-    method public java.text.CharacterIterator getCharacterIterator();
-    method public abstract int getIndex();
-    method public static final android.icu.text.UCharacterIterator getInstance(android.icu.text.Replaceable);
-    method public static final android.icu.text.UCharacterIterator getInstance(String);
-    method public static final android.icu.text.UCharacterIterator getInstance(char[]);
-    method public static final android.icu.text.UCharacterIterator getInstance(char[], int, int);
-    method public static final android.icu.text.UCharacterIterator getInstance(StringBuffer);
-    method public static final android.icu.text.UCharacterIterator getInstance(java.text.CharacterIterator);
-    method public abstract int getLength();
-    method public abstract int getText(char[], int);
-    method public final int getText(char[]);
-    method public String getText();
-    method public int moveCodePointIndex(int);
-    method public int moveIndex(int);
-    method public abstract int next();
-    method public int nextCodePoint();
-    method public abstract int previous();
-    method public int previousCodePoint();
-    method public abstract void setIndex(int);
-    method public void setToLimit();
-    method public void setToStart();
-    field public static final int DONE = -1; // 0xffffffff
-  }
-
-  public abstract class UFormat extends java.text.Format {
-    ctor public UFormat();
-  }
-
-  public abstract class UnicodeFilter implements android.icu.text.UnicodeMatcher {
-    method public abstract boolean contains(int);
-    method public int matches(android.icu.text.Replaceable, int[], int, boolean);
-  }
-
-  public interface UnicodeMatcher {
-    method public void addMatchSetTo(android.icu.text.UnicodeSet);
-    method public int matches(android.icu.text.Replaceable, int[], int, boolean);
-    method public boolean matchesIndexValue(int);
-    method public String toPattern(boolean);
-    field public static final char ETHER = 65535; // 0xffff '\uffff'
-    field public static final int U_MATCH = 2; // 0x2
-    field public static final int U_MISMATCH = 0; // 0x0
-    field public static final int U_PARTIAL_MATCH = 1; // 0x1
-  }
-
-  public class UnicodeSet extends android.icu.text.UnicodeFilter implements java.lang.Comparable<android.icu.text.UnicodeSet> android.icu.util.Freezable<android.icu.text.UnicodeSet> java.lang.Iterable<java.lang.String> {
-    ctor public UnicodeSet();
-    ctor public UnicodeSet(android.icu.text.UnicodeSet);
-    ctor public UnicodeSet(int, int);
-    ctor public UnicodeSet(int...);
-    ctor public UnicodeSet(String);
-    ctor public UnicodeSet(String, boolean);
-    ctor public UnicodeSet(String, int);
-    ctor public UnicodeSet(String, java.text.ParsePosition, android.icu.text.SymbolTable);
-    ctor public UnicodeSet(String, java.text.ParsePosition, android.icu.text.SymbolTable, int);
-    method public StringBuffer _generatePattern(StringBuffer, boolean);
-    method public StringBuffer _generatePattern(StringBuffer, boolean, boolean);
-    method public android.icu.text.UnicodeSet add(int, int);
-    method public final android.icu.text.UnicodeSet add(int);
-    method public final android.icu.text.UnicodeSet add(CharSequence);
-    method public android.icu.text.UnicodeSet add(Iterable<?>);
-    method public android.icu.text.UnicodeSet addAll(int, int);
-    method public final android.icu.text.UnicodeSet addAll(CharSequence);
-    method public android.icu.text.UnicodeSet addAll(android.icu.text.UnicodeSet);
-    method public android.icu.text.UnicodeSet addAll(Iterable<?>);
-    method public <T extends java.lang.CharSequence> android.icu.text.UnicodeSet addAll(T...);
-    method public <T extends java.util.Collection<java.lang.String>> T addAllTo(T);
-    method public void addMatchSetTo(android.icu.text.UnicodeSet);
-    method public android.icu.text.UnicodeSet applyIntPropertyValue(int, int);
-    method public final android.icu.text.UnicodeSet applyPattern(String);
-    method public android.icu.text.UnicodeSet applyPattern(String, boolean);
-    method public android.icu.text.UnicodeSet applyPattern(String, int);
-    method public android.icu.text.UnicodeSet applyPropertyAlias(String, String);
-    method public android.icu.text.UnicodeSet applyPropertyAlias(String, String, android.icu.text.SymbolTable);
-    method public int charAt(int);
-    method public android.icu.text.UnicodeSet clear();
-    method public Object clone();
-    method public android.icu.text.UnicodeSet cloneAsThawed();
-    method public android.icu.text.UnicodeSet closeOver(int);
-    method public android.icu.text.UnicodeSet compact();
-    method public int compareTo(android.icu.text.UnicodeSet);
-    method public int compareTo(android.icu.text.UnicodeSet, android.icu.text.UnicodeSet.ComparisonStyle);
-    method public int compareTo(Iterable<java.lang.String>);
-    method public android.icu.text.UnicodeSet complement(int, int);
-    method public final android.icu.text.UnicodeSet complement(int);
-    method public android.icu.text.UnicodeSet complement();
-    method public final android.icu.text.UnicodeSet complement(CharSequence);
-    method public final android.icu.text.UnicodeSet complementAll(CharSequence);
-    method public android.icu.text.UnicodeSet complementAll(android.icu.text.UnicodeSet);
-    method public boolean contains(int);
-    method public boolean contains(int, int);
-    method public final boolean contains(CharSequence);
-    method public boolean containsAll(android.icu.text.UnicodeSet);
-    method public boolean containsAll(String);
-    method public <T extends java.lang.CharSequence> boolean containsAll(Iterable<T>);
-    method public boolean containsNone(int, int);
-    method public boolean containsNone(android.icu.text.UnicodeSet);
-    method public boolean containsNone(CharSequence);
-    method public <T extends java.lang.CharSequence> boolean containsNone(Iterable<T>);
-    method public final boolean containsSome(int, int);
-    method public final boolean containsSome(android.icu.text.UnicodeSet);
-    method public final boolean containsSome(CharSequence);
-    method public final <T extends java.lang.CharSequence> boolean containsSome(Iterable<T>);
-    method public android.icu.text.UnicodeSet freeze();
-    method public static android.icu.text.UnicodeSet from(CharSequence);
-    method public static android.icu.text.UnicodeSet fromAll(CharSequence);
-    method public int getRangeCount();
-    method public int getRangeEnd(int);
-    method public int getRangeStart(int);
-    method public int indexOf(int);
-    method public boolean isEmpty();
-    method public boolean isFrozen();
-    method public java.util.Iterator<java.lang.String> iterator();
-    method public boolean matchesIndexValue(int);
-    method public Iterable<android.icu.text.UnicodeSet.EntryRange> ranges();
-    method public android.icu.text.UnicodeSet remove(int, int);
-    method public final android.icu.text.UnicodeSet remove(int);
-    method public final android.icu.text.UnicodeSet remove(CharSequence);
-    method public final android.icu.text.UnicodeSet removeAll(CharSequence);
-    method public android.icu.text.UnicodeSet removeAll(android.icu.text.UnicodeSet);
-    method public <T extends java.lang.CharSequence> android.icu.text.UnicodeSet removeAll(Iterable<T>);
-    method public final android.icu.text.UnicodeSet removeAllStrings();
-    method public android.icu.text.UnicodeSet retain(int, int);
-    method public final android.icu.text.UnicodeSet retain(int);
-    method public final android.icu.text.UnicodeSet retain(CharSequence);
-    method public final android.icu.text.UnicodeSet retainAll(CharSequence);
-    method public android.icu.text.UnicodeSet retainAll(android.icu.text.UnicodeSet);
-    method public <T extends java.lang.CharSequence> android.icu.text.UnicodeSet retainAll(Iterable<T>);
-    method public android.icu.text.UnicodeSet set(int, int);
-    method public android.icu.text.UnicodeSet set(android.icu.text.UnicodeSet);
-    method public int size();
-    method public int span(CharSequence, android.icu.text.UnicodeSet.SpanCondition);
-    method public int span(CharSequence, int, android.icu.text.UnicodeSet.SpanCondition);
-    method public int spanBack(CharSequence, android.icu.text.UnicodeSet.SpanCondition);
-    method public int spanBack(CharSequence, int, android.icu.text.UnicodeSet.SpanCondition);
-    method public java.util.Collection<java.lang.String> strings();
-    method public String toPattern(boolean);
-    field public static final int ADD_CASE_MAPPINGS = 4; // 0x4
-    field public static final android.icu.text.UnicodeSet ALL_CODE_POINTS;
-    field public static final int CASE = 2; // 0x2
-    field public static final int CASE_INSENSITIVE = 2; // 0x2
-    field public static final android.icu.text.UnicodeSet EMPTY;
-    field public static final int IGNORE_SPACE = 1; // 0x1
-    field public static final int MAX_VALUE = 1114111; // 0x10ffff
-    field public static final int MIN_VALUE = 0; // 0x0
-  }
-
-  public enum UnicodeSet.ComparisonStyle {
-    enum_constant public static final android.icu.text.UnicodeSet.ComparisonStyle LEXICOGRAPHIC;
-    enum_constant public static final android.icu.text.UnicodeSet.ComparisonStyle LONGER_FIRST;
-    enum_constant public static final android.icu.text.UnicodeSet.ComparisonStyle SHORTER_FIRST;
-  }
-
-  public static class UnicodeSet.EntryRange {
-    field public int codepoint;
-    field public int codepointEnd;
-  }
-
-  public enum UnicodeSet.SpanCondition {
-    enum_constant public static final android.icu.text.UnicodeSet.SpanCondition CONDITION_COUNT;
-    enum_constant public static final android.icu.text.UnicodeSet.SpanCondition CONTAINED;
-    enum_constant public static final android.icu.text.UnicodeSet.SpanCondition NOT_CONTAINED;
-    enum_constant public static final android.icu.text.UnicodeSet.SpanCondition SIMPLE;
-  }
-
-  public class UnicodeSetIterator {
-    ctor public UnicodeSetIterator(android.icu.text.UnicodeSet);
-    ctor public UnicodeSetIterator();
-    method public String getString();
-    method public boolean next();
-    method public boolean nextRange();
-    method public void reset(android.icu.text.UnicodeSet);
-    method public void reset();
-    field public static int IS_STRING;
-    field public int codepoint;
-    field public int codepointEnd;
-    field public String string;
-  }
-
-  public class UnicodeSetSpanner {
-    ctor public UnicodeSetSpanner(android.icu.text.UnicodeSet);
-    method public int countIn(CharSequence);
-    method public int countIn(CharSequence, android.icu.text.UnicodeSetSpanner.CountMethod);
-    method public int countIn(CharSequence, android.icu.text.UnicodeSetSpanner.CountMethod, android.icu.text.UnicodeSet.SpanCondition);
-    method public String deleteFrom(CharSequence);
-    method public String deleteFrom(CharSequence, android.icu.text.UnicodeSet.SpanCondition);
-    method public android.icu.text.UnicodeSet getUnicodeSet();
-    method public String replaceFrom(CharSequence, CharSequence);
-    method public String replaceFrom(CharSequence, CharSequence, android.icu.text.UnicodeSetSpanner.CountMethod);
-    method public String replaceFrom(CharSequence, CharSequence, android.icu.text.UnicodeSetSpanner.CountMethod, android.icu.text.UnicodeSet.SpanCondition);
-    method public CharSequence trim(CharSequence);
-    method public CharSequence trim(CharSequence, android.icu.text.UnicodeSetSpanner.TrimOption);
-    method public CharSequence trim(CharSequence, android.icu.text.UnicodeSetSpanner.TrimOption, android.icu.text.UnicodeSet.SpanCondition);
-  }
-
-  public enum UnicodeSetSpanner.CountMethod {
-    enum_constant public static final android.icu.text.UnicodeSetSpanner.CountMethod MIN_ELEMENTS;
-    enum_constant public static final android.icu.text.UnicodeSetSpanner.CountMethod WHOLE_SPAN;
-  }
-
-  public enum UnicodeSetSpanner.TrimOption {
-    enum_constant public static final android.icu.text.UnicodeSetSpanner.TrimOption BOTH;
-    enum_constant public static final android.icu.text.UnicodeSetSpanner.TrimOption LEADING;
-    enum_constant public static final android.icu.text.UnicodeSetSpanner.TrimOption TRAILING;
-  }
-
-}
-
-package android.icu.util {
-
-  public class BuddhistCalendar extends android.icu.util.GregorianCalendar {
-    ctor public BuddhistCalendar();
-    ctor public BuddhistCalendar(android.icu.util.TimeZone);
-    ctor public BuddhistCalendar(java.util.Locale);
-    ctor public BuddhistCalendar(android.icu.util.ULocale);
-    ctor public BuddhistCalendar(android.icu.util.TimeZone, java.util.Locale);
-    ctor public BuddhistCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
-    ctor public BuddhistCalendar(java.util.Date);
-    ctor public BuddhistCalendar(int, int, int);
-    ctor public BuddhistCalendar(int, int, int, int, int, int);
-    field public static final int BE = 0; // 0x0
-  }
-
-  public abstract class Calendar implements java.lang.Cloneable java.lang.Comparable<android.icu.util.Calendar> java.io.Serializable {
-    ctor protected Calendar();
-    ctor protected Calendar(android.icu.util.TimeZone, java.util.Locale);
-    ctor protected Calendar(android.icu.util.TimeZone, android.icu.util.ULocale);
-    method public void add(int, int);
-    method public boolean after(Object);
-    method public boolean before(Object);
-    method public final void clear();
-    method public final void clear(int);
-    method public Object clone();
-    method public int compareTo(android.icu.util.Calendar);
-    method protected void complete();
-    method protected void computeFields();
-    method protected final void computeGregorianFields(int);
-    method protected int computeGregorianMonthStart(int, int);
-    method protected int computeJulianDay();
-    method @Deprecated protected int computeMillisInDay();
-    method protected void computeTime();
-    method @Deprecated protected int computeZoneOffset(long, int);
-    method public int fieldDifference(java.util.Date, int);
-    method protected String fieldName(int);
-    method protected static final long floorDivide(long, long);
-    method protected static final int floorDivide(int, int);
-    method protected static final int floorDivide(int, int, int[]);
-    method protected static final int floorDivide(long, int, int[]);
-    method public final int get(int);
-    method public int getActualMaximum(int);
-    method public int getActualMinimum(int);
-    method public static java.util.Locale[] getAvailableLocales();
-    method public android.icu.text.DateFormat getDateTimeFormat(int, int, java.util.Locale);
-    method public android.icu.text.DateFormat getDateTimeFormat(int, int, android.icu.util.ULocale);
-    method public String getDisplayName(java.util.Locale);
-    method public String getDisplayName(android.icu.util.ULocale);
-    method public final int getFieldCount();
-    method protected int[][][] getFieldResolutionTable();
-    method public int getFirstDayOfWeek();
-    method public final int getGreatestMinimum(int);
-    method protected final int getGregorianDayOfMonth();
-    method protected final int getGregorianDayOfYear();
-    method protected final int getGregorianMonth();
-    method protected final int getGregorianYear();
-    method public static android.icu.util.Calendar getInstance();
-    method public static android.icu.util.Calendar getInstance(android.icu.util.TimeZone);
-    method public static android.icu.util.Calendar getInstance(java.util.Locale);
-    method public static android.icu.util.Calendar getInstance(android.icu.util.ULocale);
-    method public static android.icu.util.Calendar getInstance(android.icu.util.TimeZone, java.util.Locale);
-    method public static android.icu.util.Calendar getInstance(android.icu.util.TimeZone, android.icu.util.ULocale);
-    method public static final String[] getKeywordValuesForLocale(String, android.icu.util.ULocale, boolean);
-    method public final int getLeastMaximum(int);
-    method protected int getLimit(int, int);
-    method public final int getMaximum(int);
-    method public int getMinimalDaysInFirstWeek();
-    method public final int getMinimum(int);
-    method public int getRepeatedWallTimeOption();
-    method public int getSkippedWallTimeOption();
-    method protected final int getStamp(int);
-    method public final java.util.Date getTime();
-    method public long getTimeInMillis();
-    method public android.icu.util.TimeZone getTimeZone();
-    method public String getType();
-    method public android.icu.util.Calendar.WeekData getWeekData();
-    method public static android.icu.util.Calendar.WeekData getWeekDataForRegion(String);
-    method protected static final int gregorianMonthLength(int, int);
-    method protected static final int gregorianPreviousMonthLength(int, int);
-    method protected void handleComputeFields(int);
-    method protected int handleComputeJulianDay(int);
-    method protected abstract int handleComputeMonthStart(int, int, boolean);
-    method protected int[] handleCreateFields();
-    method protected android.icu.text.DateFormat handleGetDateFormat(String, java.util.Locale);
-    method protected android.icu.text.DateFormat handleGetDateFormat(String, String, java.util.Locale);
-    method protected android.icu.text.DateFormat handleGetDateFormat(String, android.icu.util.ULocale);
-    method protected abstract int handleGetExtendedYear();
-    method protected abstract int handleGetLimit(int, int);
-    method protected int handleGetMonthLength(int, int);
-    method protected int handleGetYearLength(int);
-    method protected final int internalGet(int);
-    method protected final int internalGet(int, int);
-    method protected final long internalGetTimeInMillis();
-    method protected final void internalSet(int, int);
-    method public boolean isEquivalentTo(android.icu.util.Calendar);
-    method protected static final boolean isGregorianLeapYear(int);
-    method public boolean isLenient();
-    method public final boolean isSet(int);
-    method public boolean isWeekend(java.util.Date);
-    method public boolean isWeekend();
-    method protected static final int julianDayToDayOfWeek(int);
-    method protected static final long julianDayToMillis(int);
-    method protected static final int millisToJulianDay(long);
-    method protected int newerField(int, int);
-    method protected int newestStamp(int, int, int);
-    method protected void pinField(int);
-    method protected void prepareGetActual(int, boolean);
-    method protected int resolveFields(int[][][]);
-    method public final void roll(int, boolean);
-    method public void roll(int, int);
-    method public final void set(int, int);
-    method public final void set(int, int, int);
-    method public final void set(int, int, int, int, int);
-    method public final void set(int, int, int, int, int, int);
-    method public void setFirstDayOfWeek(int);
-    method public void setLenient(boolean);
-    method public void setMinimalDaysInFirstWeek(int);
-    method public void setRepeatedWallTimeOption(int);
-    method public void setSkippedWallTimeOption(int);
-    method public final void setTime(java.util.Date);
-    method public void setTimeInMillis(long);
-    method public void setTimeZone(android.icu.util.TimeZone);
-    method public android.icu.util.Calendar setWeekData(android.icu.util.Calendar.WeekData);
-    method protected void validateField(int);
-    method protected final void validateField(int, int, int);
-    method protected void validateFields();
-    method protected int weekNumber(int, int, int);
-    method protected final int weekNumber(int, int);
-    field public static final int AM = 0; // 0x0
-    field public static final int AM_PM = 9; // 0x9
-    field public static final int APRIL = 3; // 0x3
-    field public static final int AUGUST = 7; // 0x7
-    field @Deprecated protected static final int BASE_FIELD_COUNT = 23; // 0x17
-    field public static final int DATE = 5; // 0x5
-    field public static final int DAY_OF_MONTH = 5; // 0x5
-    field public static final int DAY_OF_WEEK = 7; // 0x7
-    field public static final int DAY_OF_WEEK_IN_MONTH = 8; // 0x8
-    field public static final int DAY_OF_YEAR = 6; // 0x6
-    field public static final int DECEMBER = 11; // 0xb
-    field public static final int DOW_LOCAL = 18; // 0x12
-    field public static final int DST_OFFSET = 16; // 0x10
-    field protected static final int EPOCH_JULIAN_DAY = 2440588; // 0x253d8c
-    field public static final int ERA = 0; // 0x0
-    field public static final int EXTENDED_YEAR = 19; // 0x13
-    field public static final int FEBRUARY = 1; // 0x1
-    field public static final int FRIDAY = 6; // 0x6
-    field protected static final int GREATEST_MINIMUM = 1; // 0x1
-    field public static final int HOUR = 10; // 0xa
-    field public static final int HOUR_OF_DAY = 11; // 0xb
-    field protected static final int INTERNALLY_SET = 1; // 0x1
-    field public static final int IS_LEAP_MONTH = 22; // 0x16
-    field public static final int JANUARY = 0; // 0x0
-    field protected static final int JAN_1_1_JULIAN_DAY = 1721426; // 0x1a4452
-    field public static final int JULIAN_DAY = 20; // 0x14
-    field public static final int JULY = 6; // 0x6
-    field public static final int JUNE = 5; // 0x5
-    field protected static final int LEAST_MAXIMUM = 2; // 0x2
-    field public static final int MARCH = 2; // 0x2
-    field protected static final int MAXIMUM = 3; // 0x3
-    field protected static final java.util.Date MAX_DATE;
-    field @Deprecated protected static final int MAX_FIELD_COUNT = 32; // 0x20
-    field protected static final int MAX_JULIAN = 2130706432; // 0x7f000000
-    field protected static final long MAX_MILLIS = 183882168921600000L; // 0x28d47dbbf19b000L
-    field public static final int MAY = 4; // 0x4
-    field public static final int MILLISECOND = 14; // 0xe
-    field public static final int MILLISECONDS_IN_DAY = 21; // 0x15
-    field protected static final int MINIMUM = 0; // 0x0
-    field protected static final int MINIMUM_USER_STAMP = 2; // 0x2
-    field public static final int MINUTE = 12; // 0xc
-    field protected static final java.util.Date MIN_DATE;
-    field protected static final int MIN_JULIAN = -2130706432; // 0x81000000
-    field protected static final long MIN_MILLIS = -184303902528000000L; // 0xfd713893bf19b000L
-    field public static final int MONDAY = 2; // 0x2
-    field public static final int MONTH = 2; // 0x2
-    field public static final int NOVEMBER = 10; // 0xa
-    field public static final int OCTOBER = 9; // 0x9
-    field protected static final long ONE_DAY = 86400000L; // 0x5265c00L
-    field protected static final int ONE_HOUR = 3600000; // 0x36ee80
-    field protected static final int ONE_MINUTE = 60000; // 0xea60
-    field protected static final int ONE_SECOND = 1000; // 0x3e8
-    field protected static final long ONE_WEEK = 604800000L; // 0x240c8400L
-    field public static final int PM = 1; // 0x1
-    field protected static final int RESOLVE_REMAP = 32; // 0x20
-    field public static final int SATURDAY = 7; // 0x7
-    field public static final int SECOND = 13; // 0xd
-    field public static final int SEPTEMBER = 8; // 0x8
-    field public static final int SUNDAY = 1; // 0x1
-    field public static final int THURSDAY = 5; // 0x5
-    field public static final int TUESDAY = 3; // 0x3
-    field public static final int UNDECIMBER = 12; // 0xc
-    field protected static final int UNSET = 0; // 0x0
-    field public static final int WALLTIME_FIRST = 1; // 0x1
-    field public static final int WALLTIME_LAST = 0; // 0x0
-    field public static final int WALLTIME_NEXT_VALID = 2; // 0x2
-    field public static final int WEDNESDAY = 4; // 0x4
-    field public static final int WEEK_OF_MONTH = 4; // 0x4
-    field public static final int WEEK_OF_YEAR = 3; // 0x3
-    field public static final int YEAR = 1; // 0x1
-    field public static final int YEAR_WOY = 17; // 0x11
-    field public static final int ZONE_OFFSET = 15; // 0xf
-  }
-
-  public static final class Calendar.WeekData {
-    ctor public Calendar.WeekData(int, int, int, int, int, int);
-    field public final int firstDayOfWeek;
-    field public final int minimalDaysInFirstWeek;
-    field public final int weekendCease;
-    field public final int weekendCeaseMillis;
-    field public final int weekendOnset;
-    field public final int weekendOnsetMillis;
-  }
-
-  public class ChineseCalendar extends android.icu.util.Calendar {
-    ctor public ChineseCalendar();
-    ctor public ChineseCalendar(java.util.Date);
-    ctor public ChineseCalendar(int, int, int, int);
-    ctor public ChineseCalendar(int, int, int, int, int, int, int);
-    ctor public ChineseCalendar(int, int, int, int, int);
-    ctor public ChineseCalendar(int, int, int, int, int, int, int, int);
-    ctor public ChineseCalendar(java.util.Locale);
-    ctor public ChineseCalendar(android.icu.util.TimeZone);
-    ctor public ChineseCalendar(android.icu.util.TimeZone, java.util.Locale);
-    ctor public ChineseCalendar(android.icu.util.ULocale);
-    ctor public ChineseCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
-    method protected int handleComputeMonthStart(int, int, boolean);
-    method protected android.icu.text.DateFormat handleGetDateFormat(String, String, android.icu.util.ULocale);
-    method protected int handleGetExtendedYear();
-    method protected int handleGetLimit(int, int);
-  }
-
-  public final class CopticCalendar extends android.icu.util.Calendar {
-    ctor public CopticCalendar();
-    ctor public CopticCalendar(android.icu.util.TimeZone);
-    ctor public CopticCalendar(java.util.Locale);
-    ctor public CopticCalendar(android.icu.util.ULocale);
-    ctor public CopticCalendar(android.icu.util.TimeZone, java.util.Locale);
-    ctor public CopticCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
-    ctor public CopticCalendar(int, int, int);
-    ctor public CopticCalendar(java.util.Date);
-    ctor public CopticCalendar(int, int, int, int, int, int);
-    method @Deprecated protected void handleComputeFields(int);
-    method protected int handleComputeMonthStart(int, int, boolean);
-    method @Deprecated protected int handleGetExtendedYear();
-    method protected int handleGetLimit(int, int);
-    field public static final int AMSHIR = 5; // 0x5
-    field public static final int BABA = 1; // 0x1
-    field public static final int BARAMHAT = 6; // 0x6
-    field public static final int BARAMOUDA = 7; // 0x7
-    field public static final int BASHANS = 8; // 0x8
-    field public static final int EPEP = 10; // 0xa
-    field public static final int HATOR = 2; // 0x2
-    field public static final int KIAHK = 3; // 0x3
-    field public static final int MESRA = 11; // 0xb
-    field public static final int NASIE = 12; // 0xc
-    field public static final int PAONA = 9; // 0x9
-    field public static final int TOBA = 4; // 0x4
-    field public static final int TOUT = 0; // 0x0
-  }
-
-  public class Currency extends android.icu.util.MeasureUnit {
-    ctor protected Currency(String);
-    method public static android.icu.util.Currency fromJavaCurrency(java.util.Currency);
-    method public static java.util.Set<android.icu.util.Currency> getAvailableCurrencies();
-    method public static String[] getAvailableCurrencyCodes(android.icu.util.ULocale, java.util.Date);
-    method public static String[] getAvailableCurrencyCodes(java.util.Locale, java.util.Date);
-    method public static java.util.Locale[] getAvailableLocales();
-    method public static android.icu.util.ULocale[] getAvailableULocales();
-    method public String getCurrencyCode();
-    method public int getDefaultFractionDigits();
-    method public int getDefaultFractionDigits(android.icu.util.Currency.CurrencyUsage);
-    method public String getDisplayName();
-    method public String getDisplayName(java.util.Locale);
-    method public static android.icu.util.Currency getInstance(java.util.Locale);
-    method public static android.icu.util.Currency getInstance(android.icu.util.ULocale);
-    method public static android.icu.util.Currency getInstance(String);
-    method public static final String[] getKeywordValuesForLocale(String, android.icu.util.ULocale, boolean);
-    method public String getName(java.util.Locale, int, boolean[]);
-    method public String getName(android.icu.util.ULocale, int, boolean[]);
-    method public String getName(java.util.Locale, int, String, boolean[]);
-    method public String getName(android.icu.util.ULocale, int, String, boolean[]);
-    method public int getNumericCode();
-    method public double getRoundingIncrement();
-    method public double getRoundingIncrement(android.icu.util.Currency.CurrencyUsage);
-    method public String getSymbol();
-    method public String getSymbol(java.util.Locale);
-    method public String getSymbol(android.icu.util.ULocale);
-    method public static boolean isAvailable(String, java.util.Date, java.util.Date);
-    method public java.util.Currency toJavaCurrency();
-    field public static final int LONG_NAME = 1; // 0x1
-    field public static final int NARROW_SYMBOL_NAME = 3; // 0x3
-    field public static final int PLURAL_LONG_NAME = 2; // 0x2
-    field public static final int SYMBOL_NAME = 0; // 0x0
-  }
-
-  public enum Currency.CurrencyUsage {
-    enum_constant public static final android.icu.util.Currency.CurrencyUsage CASH;
-    enum_constant public static final android.icu.util.Currency.CurrencyUsage STANDARD;
-  }
-
-  public class CurrencyAmount extends android.icu.util.Measure {
-    ctor public CurrencyAmount(Number, android.icu.util.Currency);
-    ctor public CurrencyAmount(double, android.icu.util.Currency);
-    ctor public CurrencyAmount(Number, java.util.Currency);
-    ctor public CurrencyAmount(double, java.util.Currency);
-    method public android.icu.util.Currency getCurrency();
-  }
-
-  public final class DateInterval implements java.io.Serializable {
-    ctor public DateInterval(long, long);
-    method public long getFromDate();
-    method public long getToDate();
-  }
-
-  public final class EthiopicCalendar extends android.icu.util.Calendar {
-    ctor public EthiopicCalendar();
-    ctor public EthiopicCalendar(android.icu.util.TimeZone);
-    ctor public EthiopicCalendar(java.util.Locale);
-    ctor public EthiopicCalendar(android.icu.util.ULocale);
-    ctor public EthiopicCalendar(android.icu.util.TimeZone, java.util.Locale);
-    ctor public EthiopicCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
-    ctor public EthiopicCalendar(int, int, int);
-    ctor public EthiopicCalendar(java.util.Date);
-    ctor public EthiopicCalendar(int, int, int, int, int, int);
-    method @Deprecated protected void handleComputeFields(int);
-    method protected int handleComputeMonthStart(int, int, boolean);
-    method @Deprecated protected int handleGetExtendedYear();
-    method @Deprecated protected int handleGetLimit(int, int);
-    method public boolean isAmeteAlemEra();
-    method public void setAmeteAlemEra(boolean);
-    field public static final int GENBOT = 8; // 0x8
-    field public static final int HAMLE = 10; // 0xa
-    field public static final int HEDAR = 2; // 0x2
-    field public static final int MEGABIT = 6; // 0x6
-    field public static final int MESKEREM = 0; // 0x0
-    field public static final int MIAZIA = 7; // 0x7
-    field public static final int NEHASSE = 11; // 0xb
-    field public static final int PAGUMEN = 12; // 0xc
-    field public static final int SENE = 9; // 0x9
-    field public static final int TAHSAS = 3; // 0x3
-    field public static final int TEKEMT = 1; // 0x1
-    field public static final int TER = 4; // 0x4
-    field public static final int YEKATIT = 5; // 0x5
-  }
-
-  public interface Freezable<T> extends java.lang.Cloneable {
-    method public T cloneAsThawed();
-    method public T freeze();
-    method public boolean isFrozen();
-  }
-
-  public class GregorianCalendar extends android.icu.util.Calendar {
-    ctor public GregorianCalendar();
-    ctor public GregorianCalendar(android.icu.util.TimeZone);
-    ctor public GregorianCalendar(java.util.Locale);
-    ctor public GregorianCalendar(android.icu.util.ULocale);
-    ctor public GregorianCalendar(android.icu.util.TimeZone, java.util.Locale);
-    ctor public GregorianCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
-    ctor public GregorianCalendar(int, int, int);
-    ctor public GregorianCalendar(int, int, int, int, int);
-    ctor public GregorianCalendar(int, int, int, int, int, int);
-    method public final java.util.Date getGregorianChange();
-    method protected int handleComputeMonthStart(int, int, boolean);
-    method protected int handleGetExtendedYear();
-    method protected int handleGetLimit(int, int);
-    method public boolean isLeapYear(int);
-    method public void setGregorianChange(java.util.Date);
-    field public static final int AD = 1; // 0x1
-    field public static final int BC = 0; // 0x0
-    field protected transient boolean invertGregorian;
-    field protected transient boolean isGregorian;
-  }
-
-  public class HebrewCalendar extends android.icu.util.Calendar {
-    ctor public HebrewCalendar();
-    ctor public HebrewCalendar(android.icu.util.TimeZone);
-    ctor public HebrewCalendar(java.util.Locale);
-    ctor public HebrewCalendar(android.icu.util.ULocale);
-    ctor public HebrewCalendar(android.icu.util.TimeZone, java.util.Locale);
-    ctor public HebrewCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
-    ctor public HebrewCalendar(int, int, int);
-    ctor public HebrewCalendar(java.util.Date);
-    ctor public HebrewCalendar(int, int, int, int, int, int);
-    method protected int handleComputeMonthStart(int, int, boolean);
-    method protected int handleGetExtendedYear();
-    method protected int handleGetLimit(int, int);
-    method @Deprecated protected void validateField(int);
-    field public static final int ADAR = 6; // 0x6
-    field public static final int ADAR_1 = 5; // 0x5
-    field public static final int AV = 11; // 0xb
-    field public static final int ELUL = 12; // 0xc
-    field public static final int HESHVAN = 1; // 0x1
-    field public static final int IYAR = 8; // 0x8
-    field public static final int KISLEV = 2; // 0x2
-    field public static final int NISAN = 7; // 0x7
-    field public static final int SHEVAT = 4; // 0x4
-    field public static final int SIVAN = 9; // 0x9
-    field public static final int TAMUZ = 10; // 0xa
-    field public static final int TEVET = 3; // 0x3
-    field public static final int TISHRI = 0; // 0x0
-  }
-
-  public class ICUUncheckedIOException extends java.lang.RuntimeException {
-    ctor public ICUUncheckedIOException();
-    ctor public ICUUncheckedIOException(String);
-    ctor public ICUUncheckedIOException(Throwable);
-    ctor public ICUUncheckedIOException(String, Throwable);
-  }
-
-  public class IllformedLocaleException extends java.lang.RuntimeException {
-    ctor public IllformedLocaleException();
-    ctor public IllformedLocaleException(String);
-    ctor public IllformedLocaleException(String, int);
-    method public int getErrorIndex();
-  }
-
-  public class IndianCalendar extends android.icu.util.Calendar {
-    ctor public IndianCalendar();
-    ctor public IndianCalendar(android.icu.util.TimeZone);
-    ctor public IndianCalendar(java.util.Locale);
-    ctor public IndianCalendar(android.icu.util.ULocale);
-    ctor public IndianCalendar(android.icu.util.TimeZone, java.util.Locale);
-    ctor public IndianCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
-    ctor public IndianCalendar(java.util.Date);
-    ctor public IndianCalendar(int, int, int);
-    ctor public IndianCalendar(int, int, int, int, int, int);
-    method protected int handleComputeMonthStart(int, int, boolean);
-    method protected int handleGetExtendedYear();
-    method protected int handleGetLimit(int, int);
-    field public static final int AGRAHAYANA = 8; // 0x8
-    field public static final int ASADHA = 3; // 0x3
-    field public static final int ASVINA = 6; // 0x6
-    field public static final int BHADRA = 5; // 0x5
-    field public static final int CHAITRA = 0; // 0x0
-    field public static final int IE = 0; // 0x0
-    field public static final int JYAISTHA = 2; // 0x2
-    field public static final int KARTIKA = 7; // 0x7
-    field public static final int MAGHA = 10; // 0xa
-    field public static final int PAUSA = 9; // 0x9
-    field public static final int PHALGUNA = 11; // 0xb
-    field public static final int SRAVANA = 4; // 0x4
-    field public static final int VAISAKHA = 1; // 0x1
-  }
-
-  public class IslamicCalendar extends android.icu.util.Calendar {
-    ctor public IslamicCalendar();
-    ctor public IslamicCalendar(android.icu.util.TimeZone);
-    ctor public IslamicCalendar(java.util.Locale);
-    ctor public IslamicCalendar(android.icu.util.ULocale);
-    ctor public IslamicCalendar(android.icu.util.TimeZone, java.util.Locale);
-    ctor public IslamicCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
-    ctor public IslamicCalendar(java.util.Date);
-    ctor public IslamicCalendar(int, int, int);
-    ctor public IslamicCalendar(int, int, int, int, int, int);
-    method public android.icu.util.IslamicCalendar.CalculationType getCalculationType();
-    method protected int handleComputeMonthStart(int, int, boolean);
-    method protected int handleGetExtendedYear();
-    method protected int handleGetLimit(int, int);
-    method public void setCalculationType(android.icu.util.IslamicCalendar.CalculationType);
-    field public static final int DHU_AL_HIJJAH = 11; // 0xb
-    field public static final int DHU_AL_QIDAH = 10; // 0xa
-    field public static final int JUMADA_1 = 4; // 0x4
-    field public static final int JUMADA_2 = 5; // 0x5
-    field public static final int MUHARRAM = 0; // 0x0
-    field public static final int RABI_1 = 2; // 0x2
-    field public static final int RABI_2 = 3; // 0x3
-    field public static final int RAJAB = 6; // 0x6
-    field public static final int RAMADAN = 8; // 0x8
-    field public static final int SAFAR = 1; // 0x1
-    field public static final int SHABAN = 7; // 0x7
-    field public static final int SHAWWAL = 9; // 0x9
-  }
-
-  public enum IslamicCalendar.CalculationType {
-    enum_constant public static final android.icu.util.IslamicCalendar.CalculationType ISLAMIC;
-    enum_constant public static final android.icu.util.IslamicCalendar.CalculationType ISLAMIC_CIVIL;
-    enum_constant public static final android.icu.util.IslamicCalendar.CalculationType ISLAMIC_TBLA;
-    enum_constant public static final android.icu.util.IslamicCalendar.CalculationType ISLAMIC_UMALQURA;
-  }
-
-  public class JapaneseCalendar extends android.icu.util.GregorianCalendar {
-    ctor public JapaneseCalendar();
-    ctor public JapaneseCalendar(android.icu.util.TimeZone);
-    ctor public JapaneseCalendar(java.util.Locale);
-    ctor public JapaneseCalendar(android.icu.util.ULocale);
-    ctor public JapaneseCalendar(android.icu.util.TimeZone, java.util.Locale);
-    ctor public JapaneseCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
-    ctor public JapaneseCalendar(java.util.Date);
-    ctor public JapaneseCalendar(int, int, int, int);
-    ctor public JapaneseCalendar(int, int, int);
-    ctor public JapaneseCalendar(int, int, int, int, int, int);
-    field public static final int HEISEI;
-    field public static final int MEIJI;
-    field public static final int REIWA;
-    field public static final int SHOWA;
-    field public static final int TAISHO;
-  }
-
-  public final class LocaleData {
-    method public static android.icu.util.VersionInfo getCLDRVersion();
-    method public String getDelimiter(int);
-    method public static android.icu.util.LocaleData getInstance(android.icu.util.ULocale);
-    method public static android.icu.util.LocaleData getInstance();
-    method public static android.icu.util.LocaleData.MeasurementSystem getMeasurementSystem(android.icu.util.ULocale);
-    method public boolean getNoSubstitute();
-    method public static android.icu.util.LocaleData.PaperSize getPaperSize(android.icu.util.ULocale);
-    method public void setNoSubstitute(boolean);
-    field public static final int ALT_QUOTATION_END = 3; // 0x3
-    field public static final int ALT_QUOTATION_START = 2; // 0x2
-    field public static final int QUOTATION_END = 1; // 0x1
-    field public static final int QUOTATION_START = 0; // 0x0
-  }
-
-  public static final class LocaleData.MeasurementSystem {
-    field public static final android.icu.util.LocaleData.MeasurementSystem SI;
-    field public static final android.icu.util.LocaleData.MeasurementSystem UK;
-    field public static final android.icu.util.LocaleData.MeasurementSystem US;
-  }
-
-  public static final class LocaleData.PaperSize {
-    method public int getHeight();
-    method public int getWidth();
-  }
-
-  public class Measure {
-    ctor public Measure(Number, android.icu.util.MeasureUnit);
-    method public Number getNumber();
-    method public android.icu.util.MeasureUnit getUnit();
-  }
-
-  public class MeasureUnit implements java.io.Serializable {
-    method public static java.util.Set<android.icu.util.MeasureUnit> getAvailable(String);
-    method public static java.util.Set<android.icu.util.MeasureUnit> getAvailable();
-    method public static java.util.Set<java.lang.String> getAvailableTypes();
-    method public String getSubtype();
-    method public String getType();
-    field public static final android.icu.util.MeasureUnit ACRE;
-    field public static final android.icu.util.MeasureUnit ACRE_FOOT;
-    field public static final android.icu.util.MeasureUnit AMPERE;
-    field public static final android.icu.util.MeasureUnit ARC_MINUTE;
-    field public static final android.icu.util.MeasureUnit ARC_SECOND;
-    field public static final android.icu.util.MeasureUnit ASTRONOMICAL_UNIT;
-    field public static final android.icu.util.MeasureUnit ATMOSPHERE;
-    field public static final android.icu.util.MeasureUnit BIT;
-    field public static final android.icu.util.MeasureUnit BUSHEL;
-    field public static final android.icu.util.MeasureUnit BYTE;
-    field public static final android.icu.util.MeasureUnit CALORIE;
-    field public static final android.icu.util.MeasureUnit CARAT;
-    field public static final android.icu.util.MeasureUnit CELSIUS;
-    field public static final android.icu.util.MeasureUnit CENTILITER;
-    field public static final android.icu.util.MeasureUnit CENTIMETER;
-    field public static final android.icu.util.MeasureUnit CENTURY;
-    field public static final android.icu.util.MeasureUnit CUBIC_CENTIMETER;
-    field public static final android.icu.util.MeasureUnit CUBIC_FOOT;
-    field public static final android.icu.util.MeasureUnit CUBIC_INCH;
-    field public static final android.icu.util.MeasureUnit CUBIC_KILOMETER;
-    field public static final android.icu.util.MeasureUnit CUBIC_METER;
-    field public static final android.icu.util.MeasureUnit CUBIC_MILE;
-    field public static final android.icu.util.MeasureUnit CUBIC_YARD;
-    field public static final android.icu.util.MeasureUnit CUP;
-    field public static final android.icu.util.MeasureUnit CUP_METRIC;
-    field public static final android.icu.util.TimeUnit DAY;
-    field public static final android.icu.util.MeasureUnit DECILITER;
-    field public static final android.icu.util.MeasureUnit DECIMETER;
-    field public static final android.icu.util.MeasureUnit DEGREE;
-    field public static final android.icu.util.MeasureUnit FAHRENHEIT;
-    field public static final android.icu.util.MeasureUnit FATHOM;
-    field public static final android.icu.util.MeasureUnit FLUID_OUNCE;
-    field public static final android.icu.util.MeasureUnit FOODCALORIE;
-    field public static final android.icu.util.MeasureUnit FOOT;
-    field public static final android.icu.util.MeasureUnit FURLONG;
-    field public static final android.icu.util.MeasureUnit GALLON;
-    field public static final android.icu.util.MeasureUnit GALLON_IMPERIAL;
-    field public static final android.icu.util.MeasureUnit GENERIC_TEMPERATURE;
-    field public static final android.icu.util.MeasureUnit GIGABIT;
-    field public static final android.icu.util.MeasureUnit GIGABYTE;
-    field public static final android.icu.util.MeasureUnit GIGAHERTZ;
-    field public static final android.icu.util.MeasureUnit GIGAWATT;
-    field public static final android.icu.util.MeasureUnit GRAM;
-    field public static final android.icu.util.MeasureUnit G_FORCE;
-    field public static final android.icu.util.MeasureUnit HECTARE;
-    field public static final android.icu.util.MeasureUnit HECTOLITER;
-    field public static final android.icu.util.MeasureUnit HECTOPASCAL;
-    field public static final android.icu.util.MeasureUnit HERTZ;
-    field public static final android.icu.util.MeasureUnit HORSEPOWER;
-    field public static final android.icu.util.TimeUnit HOUR;
-    field public static final android.icu.util.MeasureUnit INCH;
-    field public static final android.icu.util.MeasureUnit INCH_HG;
-    field public static final android.icu.util.MeasureUnit JOULE;
-    field public static final android.icu.util.MeasureUnit KARAT;
-    field public static final android.icu.util.MeasureUnit KELVIN;
-    field public static final android.icu.util.MeasureUnit KILOBIT;
-    field public static final android.icu.util.MeasureUnit KILOBYTE;
-    field public static final android.icu.util.MeasureUnit KILOCALORIE;
-    field public static final android.icu.util.MeasureUnit KILOGRAM;
-    field public static final android.icu.util.MeasureUnit KILOHERTZ;
-    field public static final android.icu.util.MeasureUnit KILOJOULE;
-    field public static final android.icu.util.MeasureUnit KILOMETER;
-    field public static final android.icu.util.MeasureUnit KILOMETER_PER_HOUR;
-    field public static final android.icu.util.MeasureUnit KILOWATT;
-    field public static final android.icu.util.MeasureUnit KILOWATT_HOUR;
-    field public static final android.icu.util.MeasureUnit KNOT;
-    field public static final android.icu.util.MeasureUnit LIGHT_YEAR;
-    field public static final android.icu.util.MeasureUnit LITER;
-    field public static final android.icu.util.MeasureUnit LITER_PER_100KILOMETERS;
-    field public static final android.icu.util.MeasureUnit LITER_PER_KILOMETER;
-    field public static final android.icu.util.MeasureUnit LUX;
-    field public static final android.icu.util.MeasureUnit MEGABIT;
-    field public static final android.icu.util.MeasureUnit MEGABYTE;
-    field public static final android.icu.util.MeasureUnit MEGAHERTZ;
-    field public static final android.icu.util.MeasureUnit MEGALITER;
-    field public static final android.icu.util.MeasureUnit MEGAWATT;
-    field public static final android.icu.util.MeasureUnit METER;
-    field public static final android.icu.util.MeasureUnit METER_PER_SECOND;
-    field public static final android.icu.util.MeasureUnit METER_PER_SECOND_SQUARED;
-    field public static final android.icu.util.MeasureUnit METRIC_TON;
-    field public static final android.icu.util.MeasureUnit MICROGRAM;
-    field public static final android.icu.util.MeasureUnit MICROMETER;
-    field public static final android.icu.util.MeasureUnit MICROSECOND;
-    field public static final android.icu.util.MeasureUnit MILE;
-    field public static final android.icu.util.MeasureUnit MILE_PER_GALLON;
-    field public static final android.icu.util.MeasureUnit MILE_PER_GALLON_IMPERIAL;
-    field public static final android.icu.util.MeasureUnit MILE_PER_HOUR;
-    field public static final android.icu.util.MeasureUnit MILE_SCANDINAVIAN;
-    field public static final android.icu.util.MeasureUnit MILLIAMPERE;
-    field public static final android.icu.util.MeasureUnit MILLIBAR;
-    field public static final android.icu.util.MeasureUnit MILLIGRAM;
-    field public static final android.icu.util.MeasureUnit MILLIGRAM_PER_DECILITER;
-    field public static final android.icu.util.MeasureUnit MILLILITER;
-    field public static final android.icu.util.MeasureUnit MILLIMETER;
-    field public static final android.icu.util.MeasureUnit MILLIMETER_OF_MERCURY;
-    field public static final android.icu.util.MeasureUnit MILLIMOLE_PER_LITER;
-    field public static final android.icu.util.MeasureUnit MILLISECOND;
-    field public static final android.icu.util.MeasureUnit MILLIWATT;
-    field public static final android.icu.util.TimeUnit MINUTE;
-    field public static final android.icu.util.TimeUnit MONTH;
-    field public static final android.icu.util.MeasureUnit NANOMETER;
-    field public static final android.icu.util.MeasureUnit NANOSECOND;
-    field public static final android.icu.util.MeasureUnit NAUTICAL_MILE;
-    field public static final android.icu.util.MeasureUnit OHM;
-    field public static final android.icu.util.MeasureUnit OUNCE;
-    field public static final android.icu.util.MeasureUnit OUNCE_TROY;
-    field public static final android.icu.util.MeasureUnit PARSEC;
-    field public static final android.icu.util.MeasureUnit PART_PER_MILLION;
-    field public static final android.icu.util.MeasureUnit PERCENT;
-    field public static final android.icu.util.MeasureUnit PERMILLE;
-    field public static final android.icu.util.MeasureUnit PETABYTE;
-    field public static final android.icu.util.MeasureUnit PICOMETER;
-    field public static final android.icu.util.MeasureUnit PINT;
-    field public static final android.icu.util.MeasureUnit PINT_METRIC;
-    field public static final android.icu.util.MeasureUnit POINT;
-    field public static final android.icu.util.MeasureUnit POUND;
-    field public static final android.icu.util.MeasureUnit POUND_PER_SQUARE_INCH;
-    field public static final android.icu.util.MeasureUnit QUART;
-    field public static final android.icu.util.MeasureUnit RADIAN;
-    field public static final android.icu.util.MeasureUnit REVOLUTION_ANGLE;
-    field public static final android.icu.util.TimeUnit SECOND;
-    field public static final android.icu.util.MeasureUnit SQUARE_CENTIMETER;
-    field public static final android.icu.util.MeasureUnit SQUARE_FOOT;
-    field public static final android.icu.util.MeasureUnit SQUARE_INCH;
-    field public static final android.icu.util.MeasureUnit SQUARE_KILOMETER;
-    field public static final android.icu.util.MeasureUnit SQUARE_METER;
-    field public static final android.icu.util.MeasureUnit SQUARE_MILE;
-    field public static final android.icu.util.MeasureUnit SQUARE_YARD;
-    field public static final android.icu.util.MeasureUnit STONE;
-    field public static final android.icu.util.MeasureUnit TABLESPOON;
-    field public static final android.icu.util.MeasureUnit TEASPOON;
-    field public static final android.icu.util.MeasureUnit TERABIT;
-    field public static final android.icu.util.MeasureUnit TERABYTE;
-    field public static final android.icu.util.MeasureUnit TON;
-    field public static final android.icu.util.MeasureUnit VOLT;
-    field public static final android.icu.util.MeasureUnit WATT;
-    field public static final android.icu.util.TimeUnit WEEK;
-    field public static final android.icu.util.MeasureUnit YARD;
-    field public static final android.icu.util.TimeUnit YEAR;
-  }
-
-  public class Output<T> {
-    ctor public Output();
-    ctor public Output(T);
-    field public T value;
-  }
-
-  public interface RangeValueIterator {
-    method public boolean next(android.icu.util.RangeValueIterator.Element);
-    method public void reset();
-  }
-
-  public static class RangeValueIterator.Element {
-    ctor public RangeValueIterator.Element();
-    field public int limit;
-    field public int start;
-    field public int value;
-  }
-
-  public class TaiwanCalendar extends android.icu.util.GregorianCalendar {
-    ctor public TaiwanCalendar();
-    ctor public TaiwanCalendar(android.icu.util.TimeZone);
-    ctor public TaiwanCalendar(java.util.Locale);
-    ctor public TaiwanCalendar(android.icu.util.ULocale);
-    ctor public TaiwanCalendar(android.icu.util.TimeZone, java.util.Locale);
-    ctor public TaiwanCalendar(android.icu.util.TimeZone, android.icu.util.ULocale);
-    ctor public TaiwanCalendar(java.util.Date);
-    ctor public TaiwanCalendar(int, int, int);
-    ctor public TaiwanCalendar(int, int, int, int, int, int);
-    field public static final int BEFORE_MINGUO = 0; // 0x0
-    field public static final int MINGUO = 1; // 0x1
-  }
-
-  public class TimeUnit extends android.icu.util.MeasureUnit {
-    method public static android.icu.util.TimeUnit[] values();
-  }
-
-  public abstract class TimeZone implements java.lang.Cloneable android.icu.util.Freezable<android.icu.util.TimeZone> java.io.Serializable {
-    ctor public TimeZone();
-    method public Object clone();
-    method public android.icu.util.TimeZone cloneAsThawed();
-    method public static int countEquivalentIDs(String);
-    method public android.icu.util.TimeZone freeze();
-    method public static java.util.Set<java.lang.String> getAvailableIDs(android.icu.util.TimeZone.SystemTimeZoneType, String, Integer);
-    method public static String[] getAvailableIDs(int);
-    method public static String[] getAvailableIDs(String);
-    method public static String[] getAvailableIDs();
-    method public static String getCanonicalID(String);
-    method public static String getCanonicalID(String, boolean[]);
-    method public int getDSTSavings();
-    method public static android.icu.util.TimeZone getDefault();
-    method public final String getDisplayName();
-    method public final String getDisplayName(java.util.Locale);
-    method public final String getDisplayName(android.icu.util.ULocale);
-    method public final String getDisplayName(boolean, int);
-    method public String getDisplayName(boolean, int, java.util.Locale);
-    method public String getDisplayName(boolean, int, android.icu.util.ULocale);
-    method public static String getEquivalentID(String, int);
-    method public static android.icu.util.TimeZone getFrozenTimeZone(String);
-    method public String getID();
-    method public static String getIDForWindowsID(String, String);
-    method public abstract int getOffset(int, int, int, int, int, int);
-    method public int getOffset(long);
-    method public void getOffset(long, boolean, int[]);
-    method public abstract int getRawOffset();
-    method public static String getRegion(String);
-    method public static String getTZDataVersion();
-    method public static android.icu.util.TimeZone getTimeZone(String);
-    method public static android.icu.util.TimeZone getTimeZone(String, int);
-    method public static String getWindowsID(String);
-    method public boolean hasSameRules(android.icu.util.TimeZone);
-    method public abstract boolean inDaylightTime(java.util.Date);
-    method public boolean isFrozen();
-    method public boolean observesDaylightTime();
-    method public void setID(String);
-    method public abstract void setRawOffset(int);
-    method public abstract boolean useDaylightTime();
-    field public static final int GENERIC_LOCATION = 7; // 0x7
-    field public static final android.icu.util.TimeZone GMT_ZONE;
-    field public static final int LONG = 1; // 0x1
-    field public static final int LONG_GENERIC = 3; // 0x3
-    field public static final int LONG_GMT = 5; // 0x5
-    field public static final int SHORT = 0; // 0x0
-    field public static final int SHORT_COMMONLY_USED = 6; // 0x6
-    field public static final int SHORT_GENERIC = 2; // 0x2
-    field public static final int SHORT_GMT = 4; // 0x4
-    field public static final int TIMEZONE_ICU = 0; // 0x0
-    field public static final int TIMEZONE_JDK = 1; // 0x1
-    field public static final android.icu.util.TimeZone UNKNOWN_ZONE;
-    field public static final String UNKNOWN_ZONE_ID = "Etc/Unknown";
-  }
-
-  public enum TimeZone.SystemTimeZoneType {
-    enum_constant public static final android.icu.util.TimeZone.SystemTimeZoneType ANY;
-    enum_constant public static final android.icu.util.TimeZone.SystemTimeZoneType CANONICAL;
-    enum_constant public static final android.icu.util.TimeZone.SystemTimeZoneType CANONICAL_LOCATION;
-  }
-
-  public final class ULocale implements java.lang.Comparable<android.icu.util.ULocale> java.io.Serializable {
-    ctor public ULocale(String);
-    ctor public ULocale(String, String);
-    ctor public ULocale(String, String, String);
-    method public static android.icu.util.ULocale acceptLanguage(String, android.icu.util.ULocale[], boolean[]);
-    method public static android.icu.util.ULocale acceptLanguage(android.icu.util.ULocale[], android.icu.util.ULocale[], boolean[]);
-    method public static android.icu.util.ULocale acceptLanguage(String, boolean[]);
-    method public static android.icu.util.ULocale acceptLanguage(android.icu.util.ULocale[], boolean[]);
-    method public static android.icu.util.ULocale addLikelySubtags(android.icu.util.ULocale);
-    method public static String canonicalize(String);
-    method public Object clone();
-    method public int compareTo(android.icu.util.ULocale);
-    method public static android.icu.util.ULocale createCanonical(String);
-    method public static android.icu.util.ULocale forLanguageTag(String);
-    method public static android.icu.util.ULocale forLocale(java.util.Locale);
-    method public static android.icu.util.ULocale[] getAvailableLocales();
-    method public String getBaseName();
-    method public static String getBaseName(String);
-    method public String getCharacterOrientation();
-    method public String getCountry();
-    method public static String getCountry(String);
-    method public static android.icu.util.ULocale getDefault();
-    method public static android.icu.util.ULocale getDefault(android.icu.util.ULocale.Category);
-    method public String getDisplayCountry();
-    method public String getDisplayCountry(android.icu.util.ULocale);
-    method public static String getDisplayCountry(String, String);
-    method public static String getDisplayCountry(String, android.icu.util.ULocale);
-    method public static String getDisplayKeyword(String);
-    method public static String getDisplayKeyword(String, String);
-    method public static String getDisplayKeyword(String, android.icu.util.ULocale);
-    method public String getDisplayKeywordValue(String);
-    method public String getDisplayKeywordValue(String, android.icu.util.ULocale);
-    method public static String getDisplayKeywordValue(String, String, String);
-    method public static String getDisplayKeywordValue(String, String, android.icu.util.ULocale);
-    method public String getDisplayLanguage();
-    method public String getDisplayLanguage(android.icu.util.ULocale);
-    method public static String getDisplayLanguage(String, String);
-    method public static String getDisplayLanguage(String, android.icu.util.ULocale);
-    method public String getDisplayLanguageWithDialect();
-    method public String getDisplayLanguageWithDialect(android.icu.util.ULocale);
-    method public static String getDisplayLanguageWithDialect(String, String);
-    method public static String getDisplayLanguageWithDialect(String, android.icu.util.ULocale);
-    method public String getDisplayName();
-    method public String getDisplayName(android.icu.util.ULocale);
-    method public static String getDisplayName(String, String);
-    method public static String getDisplayName(String, android.icu.util.ULocale);
-    method public String getDisplayNameWithDialect();
-    method public String getDisplayNameWithDialect(android.icu.util.ULocale);
-    method public static String getDisplayNameWithDialect(String, String);
-    method public static String getDisplayNameWithDialect(String, android.icu.util.ULocale);
-    method public String getDisplayScript();
-    method public String getDisplayScript(android.icu.util.ULocale);
-    method public static String getDisplayScript(String, String);
-    method public static String getDisplayScript(String, android.icu.util.ULocale);
-    method public String getDisplayVariant();
-    method public String getDisplayVariant(android.icu.util.ULocale);
-    method public static String getDisplayVariant(String, String);
-    method public static String getDisplayVariant(String, android.icu.util.ULocale);
-    method public String getExtension(char);
-    method public java.util.Set<java.lang.Character> getExtensionKeys();
-    method public static String getFallback(String);
-    method public android.icu.util.ULocale getFallback();
-    method public String getISO3Country();
-    method public static String getISO3Country(String);
-    method public String getISO3Language();
-    method public static String getISO3Language(String);
-    method public static String[] getISOCountries();
-    method public static String[] getISOLanguages();
-    method public String getKeywordValue(String);
-    method public static String getKeywordValue(String, String);
-    method public java.util.Iterator<java.lang.String> getKeywords();
-    method public static java.util.Iterator<java.lang.String> getKeywords(String);
-    method public String getLanguage();
-    method public static String getLanguage(String);
-    method public String getLineOrientation();
-    method public String getName();
-    method public static String getName(String);
-    method public String getScript();
-    method public static String getScript(String);
-    method public java.util.Set<java.lang.String> getUnicodeLocaleAttributes();
-    method public java.util.Set<java.lang.String> getUnicodeLocaleKeys();
-    method public String getUnicodeLocaleType(String);
-    method public String getVariant();
-    method public static String getVariant(String);
-    method public boolean isRightToLeft();
-    method public static android.icu.util.ULocale minimizeSubtags(android.icu.util.ULocale);
-    method public android.icu.util.ULocale setKeywordValue(String, String);
-    method public static String setKeywordValue(String, String, String);
-    method public String toLanguageTag();
-    method public static String toLegacyKey(String);
-    method public static String toLegacyType(String, String);
-    method public java.util.Locale toLocale();
-    method public static String toUnicodeLocaleKey(String);
-    method public static String toUnicodeLocaleType(String, String);
-    field public static final android.icu.util.ULocale CANADA;
-    field public static final android.icu.util.ULocale CANADA_FRENCH;
-    field public static final android.icu.util.ULocale CHINA;
-    field public static final android.icu.util.ULocale CHINESE;
-    field public static final android.icu.util.ULocale ENGLISH;
-    field public static final android.icu.util.ULocale FRANCE;
-    field public static final android.icu.util.ULocale FRENCH;
-    field public static final android.icu.util.ULocale GERMAN;
-    field public static final android.icu.util.ULocale GERMANY;
-    field public static final android.icu.util.ULocale ITALIAN;
-    field public static final android.icu.util.ULocale ITALY;
-    field public static final android.icu.util.ULocale JAPAN;
-    field public static final android.icu.util.ULocale JAPANESE;
-    field public static final android.icu.util.ULocale KOREA;
-    field public static final android.icu.util.ULocale KOREAN;
-    field public static final android.icu.util.ULocale PRC;
-    field public static final char PRIVATE_USE_EXTENSION = 120; // 0x0078 'x'
-    field public static final android.icu.util.ULocale ROOT;
-    field public static final android.icu.util.ULocale SIMPLIFIED_CHINESE;
-    field public static final android.icu.util.ULocale TAIWAN;
-    field public static final android.icu.util.ULocale TRADITIONAL_CHINESE;
-    field public static final android.icu.util.ULocale UK;
-    field public static final char UNICODE_LOCALE_EXTENSION = 117; // 0x0075 'u'
-    field public static final android.icu.util.ULocale US;
-  }
-
-  public static final class ULocale.Builder {
-    ctor public ULocale.Builder();
-    method public android.icu.util.ULocale.Builder addUnicodeLocaleAttribute(String);
-    method public android.icu.util.ULocale build();
-    method public android.icu.util.ULocale.Builder clear();
-    method public android.icu.util.ULocale.Builder clearExtensions();
-    method public android.icu.util.ULocale.Builder removeUnicodeLocaleAttribute(String);
-    method public android.icu.util.ULocale.Builder setExtension(char, String);
-    method public android.icu.util.ULocale.Builder setLanguage(String);
-    method public android.icu.util.ULocale.Builder setLanguageTag(String);
-    method public android.icu.util.ULocale.Builder setLocale(android.icu.util.ULocale);
-    method public android.icu.util.ULocale.Builder setRegion(String);
-    method public android.icu.util.ULocale.Builder setScript(String);
-    method public android.icu.util.ULocale.Builder setUnicodeLocaleKeyword(String, String);
-    method public android.icu.util.ULocale.Builder setVariant(String);
-  }
-
-  public enum ULocale.Category {
-    enum_constant public static final android.icu.util.ULocale.Category DISPLAY;
-    enum_constant public static final android.icu.util.ULocale.Category FORMAT;
-  }
-
-  public final class UniversalTimeScale {
-    method public static android.icu.math.BigDecimal bigDecimalFrom(double, int);
-    method public static android.icu.math.BigDecimal bigDecimalFrom(long, int);
-    method public static android.icu.math.BigDecimal bigDecimalFrom(android.icu.math.BigDecimal, int);
-    method public static long from(long, int);
-    method public static long getTimeScaleValue(int, int);
-    method public static android.icu.math.BigDecimal toBigDecimal(long, int);
-    method public static android.icu.math.BigDecimal toBigDecimal(android.icu.math.BigDecimal, int);
-    method public static long toLong(long, int);
-    field public static final int DB2_TIME = 8; // 0x8
-    field public static final int DOTNET_DATE_TIME = 4; // 0x4
-    field public static final int EPOCH_OFFSET_PLUS_1_VALUE = 6; // 0x6
-    field public static final int EPOCH_OFFSET_VALUE = 1; // 0x1
-    field public static final int EXCEL_TIME = 7; // 0x7
-    field public static final int FROM_MAX_VALUE = 3; // 0x3
-    field public static final int FROM_MIN_VALUE = 2; // 0x2
-    field public static final int ICU4C_TIME = 2; // 0x2
-    field public static final int JAVA_TIME = 0; // 0x0
-    field public static final int MAC_OLD_TIME = 5; // 0x5
-    field public static final int MAC_TIME = 6; // 0x6
-    field @Deprecated public static final int MAX_SCALE = 10; // 0xa
-    field public static final int TO_MAX_VALUE = 5; // 0x5
-    field public static final int TO_MIN_VALUE = 4; // 0x4
-    field public static final int UNITS_VALUE = 0; // 0x0
-    field public static final int UNIX_MICROSECONDS_TIME = 9; // 0x9
-    field public static final int UNIX_TIME = 1; // 0x1
-    field public static final int WINDOWS_FILE_TIME = 3; // 0x3
-  }
-
-  public interface ValueIterator {
-    method public boolean next(android.icu.util.ValueIterator.Element);
-    method public void reset();
-    method public void setRange(int, int);
-  }
-
-  public static final class ValueIterator.Element {
-    ctor public ValueIterator.Element();
-    field public int integer;
-    field public Object value;
-  }
-
-  public final class VersionInfo implements java.lang.Comparable<android.icu.util.VersionInfo> {
-    method public int compareTo(android.icu.util.VersionInfo);
-    method public static android.icu.util.VersionInfo getInstance(String);
-    method public static android.icu.util.VersionInfo getInstance(int, int, int, int);
-    method public static android.icu.util.VersionInfo getInstance(int, int, int);
-    method public static android.icu.util.VersionInfo getInstance(int, int);
-    method public static android.icu.util.VersionInfo getInstance(int);
-    method public int getMajor();
-    method public int getMicro();
-    method public int getMilli();
-    method public int getMinor();
-    field public static final android.icu.util.VersionInfo ICU_VERSION;
-    field public static final android.icu.util.VersionInfo UCOL_BUILDER_VERSION;
-    field public static final android.icu.util.VersionInfo UCOL_RUNTIME_VERSION;
-    field public static final android.icu.util.VersionInfo UNICODE_10_0;
-    field public static final android.icu.util.VersionInfo UNICODE_11_0;
-    field public static final android.icu.util.VersionInfo UNICODE_12_0;
-    field public static final android.icu.util.VersionInfo UNICODE_12_1;
-    field public static final android.icu.util.VersionInfo UNICODE_13_0;
-    field public static final android.icu.util.VersionInfo UNICODE_1_0;
-    field public static final android.icu.util.VersionInfo UNICODE_1_0_1;
-    field public static final android.icu.util.VersionInfo UNICODE_1_1_0;
-    field public static final android.icu.util.VersionInfo UNICODE_1_1_5;
-    field public static final android.icu.util.VersionInfo UNICODE_2_0;
-    field public static final android.icu.util.VersionInfo UNICODE_2_1_2;
-    field public static final android.icu.util.VersionInfo UNICODE_2_1_5;
-    field public static final android.icu.util.VersionInfo UNICODE_2_1_8;
-    field public static final android.icu.util.VersionInfo UNICODE_2_1_9;
-    field public static final android.icu.util.VersionInfo UNICODE_3_0;
-    field public static final android.icu.util.VersionInfo UNICODE_3_0_1;
-    field public static final android.icu.util.VersionInfo UNICODE_3_1_0;
-    field public static final android.icu.util.VersionInfo UNICODE_3_1_1;
-    field public static final android.icu.util.VersionInfo UNICODE_3_2;
-    field public static final android.icu.util.VersionInfo UNICODE_4_0;
-    field public static final android.icu.util.VersionInfo UNICODE_4_0_1;
-    field public static final android.icu.util.VersionInfo UNICODE_4_1;
-    field public static final android.icu.util.VersionInfo UNICODE_5_0;
-    field public static final android.icu.util.VersionInfo UNICODE_5_1;
-    field public static final android.icu.util.VersionInfo UNICODE_5_2;
-    field public static final android.icu.util.VersionInfo UNICODE_6_0;
-    field public static final android.icu.util.VersionInfo UNICODE_6_1;
-    field public static final android.icu.util.VersionInfo UNICODE_6_2;
-    field public static final android.icu.util.VersionInfo UNICODE_6_3;
-    field public static final android.icu.util.VersionInfo UNICODE_7_0;
-    field public static final android.icu.util.VersionInfo UNICODE_8_0;
-    field public static final android.icu.util.VersionInfo UNICODE_9_0;
-  }
-
-}
-
-package android.inputmethodservice {
-
-  public abstract class AbstractInputMethodService extends android.app.Service implements android.view.KeyEvent.Callback {
-    ctor public AbstractInputMethodService();
-    method public android.view.KeyEvent.DispatcherState getKeyDispatcherState();
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method public abstract android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodImpl onCreateInputMethodInterface();
-    method public abstract android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodSessionImpl onCreateInputMethodSessionInterface();
-    method public boolean onGenericMotionEvent(android.view.MotionEvent);
-    method public boolean onTrackballEvent(android.view.MotionEvent);
-  }
-
-  public abstract class AbstractInputMethodService.AbstractInputMethodImpl implements android.view.inputmethod.InputMethod {
-    ctor public AbstractInputMethodService.AbstractInputMethodImpl();
-    method @MainThread public void createSession(android.view.inputmethod.InputMethod.SessionCallback);
-    method @MainThread public void revokeSession(android.view.inputmethod.InputMethodSession);
-    method @MainThread public void setSessionEnabled(android.view.inputmethod.InputMethodSession, boolean);
-  }
-
-  public abstract class AbstractInputMethodService.AbstractInputMethodSessionImpl implements android.view.inputmethod.InputMethodSession {
-    ctor public AbstractInputMethodService.AbstractInputMethodSessionImpl();
-    method public void dispatchGenericMotionEvent(int, android.view.MotionEvent, android.view.inputmethod.InputMethodSession.EventCallback);
-    method public void dispatchKeyEvent(int, android.view.KeyEvent, android.view.inputmethod.InputMethodSession.EventCallback);
-    method public void dispatchTrackballEvent(int, android.view.MotionEvent, android.view.inputmethod.InputMethodSession.EventCallback);
-    method public boolean isEnabled();
-    method public boolean isRevoked();
-    method public void revokeSelf();
-    method public void setEnabled(boolean);
-  }
-
-  public class ExtractEditText extends android.widget.EditText {
-    ctor public ExtractEditText(android.content.Context);
-    ctor public ExtractEditText(android.content.Context, android.util.AttributeSet);
-    ctor public ExtractEditText(android.content.Context, android.util.AttributeSet, int);
-    ctor public ExtractEditText(android.content.Context, android.util.AttributeSet, int, int);
-    method public void finishInternalChanges();
-    method public boolean hasVerticalScrollBar();
-    method public void startInternalChanges();
-  }
-
-  public class InputMethodService extends android.inputmethodservice.AbstractInputMethodService {
-    ctor public InputMethodService();
-    method @Deprecated public boolean enableHardwareAcceleration();
-    method public int getBackDisposition();
-    method public int getCandidatesHiddenVisibility();
-    method public android.view.inputmethod.InputBinding getCurrentInputBinding();
-    method public android.view.inputmethod.InputConnection getCurrentInputConnection();
-    method public android.view.inputmethod.EditorInfo getCurrentInputEditorInfo();
-    method public boolean getCurrentInputStarted();
-    method @Deprecated public int getInputMethodWindowRecommendedHeight();
-    method public android.view.LayoutInflater getLayoutInflater();
-    method public int getMaxWidth();
-    method public CharSequence getTextForImeAction(int);
-    method public android.app.Dialog getWindow();
-    method public void hideStatusIcon();
-    method public void hideWindow();
-    method public boolean isExtractViewShown();
-    method public boolean isFullscreenMode();
-    method public boolean isInputViewShown();
-    method public boolean isShowInputRequested();
-    method public void onAppPrivateCommand(String, android.os.Bundle);
-    method public void onBindInput();
-    method public void onComputeInsets(android.inputmethodservice.InputMethodService.Insets);
-    method public void onConfigureWindow(android.view.Window, boolean, boolean);
-    method public android.view.View onCreateCandidatesView();
-    method public android.view.View onCreateExtractTextView();
-    method @Nullable public android.view.inputmethod.InlineSuggestionsRequest onCreateInlineSuggestionsRequest(@NonNull android.os.Bundle);
-    method public android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodImpl onCreateInputMethodInterface();
-    method public android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodSessionImpl onCreateInputMethodSessionInterface();
-    method public android.view.View onCreateInputView();
-    method protected void onCurrentInputMethodSubtypeChanged(android.view.inputmethod.InputMethodSubtype);
-    method public void onDisplayCompletions(android.view.inputmethod.CompletionInfo[]);
-    method public boolean onEvaluateFullscreenMode();
-    method @CallSuper public boolean onEvaluateInputViewShown();
-    method public boolean onExtractTextContextMenuItem(int);
-    method public void onExtractedCursorMovement(int, int);
-    method public void onExtractedSelectionChanged(int, int);
-    method public void onExtractedTextClicked();
-    method public void onExtractingInputChanged(android.view.inputmethod.EditorInfo);
-    method public void onFinishCandidatesView(boolean);
-    method public void onFinishInput();
-    method public void onFinishInputView(boolean);
-    method public void onInitializeInterface();
-    method public boolean onInlineSuggestionsResponse(@NonNull android.view.inputmethod.InlineSuggestionsResponse);
-    method public boolean onKeyDown(int, android.view.KeyEvent);
-    method public boolean onKeyLongPress(int, android.view.KeyEvent);
-    method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
-    method public boolean onKeyUp(int, android.view.KeyEvent);
-    method public boolean onShowInputRequested(int, boolean);
-    method public void onStartCandidatesView(android.view.inputmethod.EditorInfo, boolean);
-    method public void onStartInput(android.view.inputmethod.EditorInfo, boolean);
-    method public void onStartInputView(android.view.inputmethod.EditorInfo, boolean);
-    method public void onUnbindInput();
-    method @Deprecated public void onUpdateCursor(android.graphics.Rect);
-    method public void onUpdateCursorAnchorInfo(android.view.inputmethod.CursorAnchorInfo);
-    method public void onUpdateExtractedText(int, android.view.inputmethod.ExtractedText);
-    method public void onUpdateExtractingViews(android.view.inputmethod.EditorInfo);
-    method public void onUpdateExtractingVisibility(android.view.inputmethod.EditorInfo);
-    method public void onUpdateSelection(int, int, int, int, int, int);
-    method @Deprecated public void onViewClicked(boolean);
-    method public void onWindowHidden();
-    method public void onWindowShown();
-    method public void requestHideSelf(int);
-    method public final void requestShowSelf(int);
-    method public boolean sendDefaultEditorAction(boolean);
-    method public void sendDownUpKeyEvents(int);
-    method public void sendKeyChar(char);
-    method public void setBackDisposition(int);
-    method public void setCandidatesView(android.view.View);
-    method public void setCandidatesViewShown(boolean);
-    method public void setExtractView(android.view.View);
-    method public void setExtractViewShown(boolean);
-    method public void setInputView(android.view.View);
-    method public final boolean shouldOfferSwitchingToNextInputMethod();
-    method public void showStatusIcon(@DrawableRes int);
-    method public void showWindow(boolean);
-    method public void switchInputMethod(String);
-    method public final void switchInputMethod(String, android.view.inputmethod.InputMethodSubtype);
-    method public final boolean switchToNextInputMethod(boolean);
-    method public final boolean switchToPreviousInputMethod();
-    method public void updateFullscreenMode();
-    method public void updateInputViewShown();
-    field public static final int BACK_DISPOSITION_ADJUST_NOTHING = 3; // 0x3
-    field public static final int BACK_DISPOSITION_DEFAULT = 0; // 0x0
-    field @Deprecated public static final int BACK_DISPOSITION_WILL_DISMISS = 2; // 0x2
-    field @Deprecated public static final int BACK_DISPOSITION_WILL_NOT_DISMISS = 1; // 0x1
-  }
-
-  public class InputMethodService.InputMethodImpl extends android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodImpl {
-    ctor public InputMethodService.InputMethodImpl();
-    method @MainThread public void attachToken(android.os.IBinder);
-    method @MainThread public void bindInput(android.view.inputmethod.InputBinding);
-    method @MainThread public void changeInputMethodSubtype(android.view.inputmethod.InputMethodSubtype);
-    method @MainThread public void hideSoftInput(int, android.os.ResultReceiver);
-    method @MainThread public void restartInput(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo);
-    method @MainThread public void showSoftInput(int, android.os.ResultReceiver);
-    method @MainThread public void startInput(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo);
-    method @MainThread public void unbindInput();
-  }
-
-  public class InputMethodService.InputMethodSessionImpl extends android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodSessionImpl {
-    ctor public InputMethodService.InputMethodSessionImpl();
-    method public void appPrivateCommand(String, android.os.Bundle);
-    method public void displayCompletions(android.view.inputmethod.CompletionInfo[]);
-    method public void finishInput();
-    method public void toggleSoftInput(int, int);
-    method public void updateCursor(android.graphics.Rect);
-    method public void updateCursorAnchorInfo(android.view.inputmethod.CursorAnchorInfo);
-    method public void updateExtractedText(int, android.view.inputmethod.ExtractedText);
-    method public void updateSelection(int, int, int, int, int, int);
-    method public void viewClicked(boolean);
-  }
-
-  public static final class InputMethodService.Insets {
-    ctor public InputMethodService.Insets();
-    field public static final int TOUCHABLE_INSETS_CONTENT = 1; // 0x1
-    field public static final int TOUCHABLE_INSETS_FRAME = 0; // 0x0
-    field public static final int TOUCHABLE_INSETS_REGION = 3; // 0x3
-    field public static final int TOUCHABLE_INSETS_VISIBLE = 2; // 0x2
-    field public int contentTopInsets;
-    field public int touchableInsets;
-    field public final android.graphics.Region touchableRegion;
-    field public int visibleTopInsets;
-  }
-
-  @Deprecated public class Keyboard {
-    ctor @Deprecated public Keyboard(android.content.Context, int);
-    ctor @Deprecated public Keyboard(android.content.Context, @XmlRes int, int, int, int);
-    ctor @Deprecated public Keyboard(android.content.Context, @XmlRes int, int);
-    ctor @Deprecated public Keyboard(android.content.Context, int, CharSequence, int, int);
-    method @Deprecated protected android.inputmethodservice.Keyboard.Key createKeyFromXml(android.content.res.Resources, android.inputmethodservice.Keyboard.Row, int, int, android.content.res.XmlResourceParser);
-    method @Deprecated protected android.inputmethodservice.Keyboard.Row createRowFromXml(android.content.res.Resources, android.content.res.XmlResourceParser);
-    method @Deprecated public int getHeight();
-    method @Deprecated protected int getHorizontalGap();
-    method @Deprecated protected int getKeyHeight();
-    method @Deprecated protected int getKeyWidth();
-    method @Deprecated public java.util.List<android.inputmethodservice.Keyboard.Key> getKeys();
-    method @Deprecated public int getMinWidth();
-    method @Deprecated public java.util.List<android.inputmethodservice.Keyboard.Key> getModifierKeys();
-    method @Deprecated public int[] getNearestKeys(int, int);
-    method @Deprecated public int getShiftKeyIndex();
-    method @Deprecated protected int getVerticalGap();
-    method @Deprecated public boolean isShifted();
-    method @Deprecated protected void setHorizontalGap(int);
-    method @Deprecated protected void setKeyHeight(int);
-    method @Deprecated protected void setKeyWidth(int);
-    method @Deprecated public boolean setShifted(boolean);
-    method @Deprecated protected void setVerticalGap(int);
-    field @Deprecated public static final int EDGE_BOTTOM = 8; // 0x8
-    field @Deprecated public static final int EDGE_LEFT = 1; // 0x1
-    field @Deprecated public static final int EDGE_RIGHT = 2; // 0x2
-    field @Deprecated public static final int EDGE_TOP = 4; // 0x4
-    field @Deprecated public static final int KEYCODE_ALT = -6; // 0xfffffffa
-    field @Deprecated public static final int KEYCODE_CANCEL = -3; // 0xfffffffd
-    field @Deprecated public static final int KEYCODE_DELETE = -5; // 0xfffffffb
-    field @Deprecated public static final int KEYCODE_DONE = -4; // 0xfffffffc
-    field @Deprecated public static final int KEYCODE_MODE_CHANGE = -2; // 0xfffffffe
-    field @Deprecated public static final int KEYCODE_SHIFT = -1; // 0xffffffff
-  }
-
-  @Deprecated public static class Keyboard.Key {
-    ctor @Deprecated public Keyboard.Key(android.inputmethodservice.Keyboard.Row);
-    ctor @Deprecated public Keyboard.Key(android.content.res.Resources, android.inputmethodservice.Keyboard.Row, int, int, android.content.res.XmlResourceParser);
-    method @Deprecated public int[] getCurrentDrawableState();
-    method @Deprecated public boolean isInside(int, int);
-    method @Deprecated public void onPressed();
-    method @Deprecated public void onReleased(boolean);
-    method @Deprecated public int squaredDistanceFrom(int, int);
-    field @Deprecated public int[] codes;
-    field @Deprecated public int edgeFlags;
-    field @Deprecated public int gap;
-    field @Deprecated public int height;
-    field @Deprecated public android.graphics.drawable.Drawable icon;
-    field @Deprecated public android.graphics.drawable.Drawable iconPreview;
-    field @Deprecated public CharSequence label;
-    field @Deprecated public boolean modifier;
-    field @Deprecated public boolean on;
-    field @Deprecated public CharSequence popupCharacters;
-    field @Deprecated public int popupResId;
-    field @Deprecated public boolean pressed;
-    field @Deprecated public boolean repeatable;
-    field @Deprecated public boolean sticky;
-    field @Deprecated public CharSequence text;
-    field @Deprecated public int width;
-    field @Deprecated public int x;
-    field @Deprecated public int y;
-  }
-
-  @Deprecated public static class Keyboard.Row {
-    ctor @Deprecated public Keyboard.Row(android.inputmethodservice.Keyboard);
-    ctor @Deprecated public Keyboard.Row(android.content.res.Resources, android.inputmethodservice.Keyboard, android.content.res.XmlResourceParser);
-    field @Deprecated public int defaultHeight;
-    field @Deprecated public int defaultHorizontalGap;
-    field @Deprecated public int defaultWidth;
-    field @Deprecated public int mode;
-    field @Deprecated public int rowEdgeFlags;
-    field @Deprecated public int verticalGap;
-  }
-
-  @Deprecated public class KeyboardView extends android.view.View implements android.view.View.OnClickListener {
-    ctor @Deprecated public KeyboardView(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public KeyboardView(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public KeyboardView(android.content.Context, android.util.AttributeSet, int, int);
-    method @Deprecated public void closing();
-    method @Deprecated public android.inputmethodservice.Keyboard getKeyboard();
-    method @Deprecated protected android.inputmethodservice.KeyboardView.OnKeyboardActionListener getOnKeyboardActionListener();
-    method @Deprecated public boolean handleBack();
-    method @Deprecated public void invalidateAllKeys();
-    method @Deprecated public void invalidateKey(int);
-    method @Deprecated public boolean isPreviewEnabled();
-    method @Deprecated public boolean isProximityCorrectionEnabled();
-    method @Deprecated public boolean isShifted();
-    method public void onClick(android.view.View);
-    method @Deprecated public void onDetachedFromWindow();
-    method @Deprecated public void onDraw(android.graphics.Canvas);
-    method @Deprecated protected boolean onLongPress(android.inputmethodservice.Keyboard.Key);
-    method @Deprecated public void onMeasure(int, int);
-    method @Deprecated public void onSizeChanged(int, int, int, int);
-    method @Deprecated public void setKeyboard(android.inputmethodservice.Keyboard);
-    method @Deprecated public void setOnKeyboardActionListener(android.inputmethodservice.KeyboardView.OnKeyboardActionListener);
-    method @Deprecated public void setPopupOffset(int, int);
-    method @Deprecated public void setPopupParent(android.view.View);
-    method @Deprecated public void setPreviewEnabled(boolean);
-    method @Deprecated public void setProximityCorrectionEnabled(boolean);
-    method @Deprecated public boolean setShifted(boolean);
-    method @Deprecated public void setVerticalCorrection(int);
-    method @Deprecated protected void swipeDown();
-    method @Deprecated protected void swipeLeft();
-    method @Deprecated protected void swipeRight();
-    method @Deprecated protected void swipeUp();
-  }
-
-  @Deprecated public static interface KeyboardView.OnKeyboardActionListener {
-    method @Deprecated public void onKey(int, int[]);
-    method @Deprecated public void onPress(int);
-    method @Deprecated public void onRelease(int);
-    method @Deprecated public void onText(CharSequence);
-    method @Deprecated public void swipeDown();
-    method @Deprecated public void swipeLeft();
-    method @Deprecated public void swipeRight();
-    method @Deprecated public void swipeUp();
-  }
-
-}
-
-package android.location {
-
-  public class Address implements android.os.Parcelable {
-    ctor public Address(java.util.Locale);
-    method public void clearLatitude();
-    method public void clearLongitude();
-    method public int describeContents();
-    method public String getAddressLine(int);
-    method public String getAdminArea();
-    method public String getCountryCode();
-    method public String getCountryName();
-    method public android.os.Bundle getExtras();
-    method public String getFeatureName();
-    method public double getLatitude();
-    method public java.util.Locale getLocale();
-    method public String getLocality();
-    method public double getLongitude();
-    method public int getMaxAddressLineIndex();
-    method public String getPhone();
-    method public String getPostalCode();
-    method public String getPremises();
-    method public String getSubAdminArea();
-    method public String getSubLocality();
-    method public String getSubThoroughfare();
-    method public String getThoroughfare();
-    method public String getUrl();
-    method public boolean hasLatitude();
-    method public boolean hasLongitude();
-    method public void setAddressLine(int, String);
-    method public void setAdminArea(String);
-    method public void setCountryCode(String);
-    method public void setCountryName(String);
-    method public void setExtras(android.os.Bundle);
-    method public void setFeatureName(String);
-    method public void setLatitude(double);
-    method public void setLocality(String);
-    method public void setLongitude(double);
-    method public void setPhone(String);
-    method public void setPostalCode(String);
-    method public void setPremises(String);
-    method public void setSubAdminArea(String);
-    method public void setSubLocality(String);
-    method public void setSubThoroughfare(String);
-    method public void setThoroughfare(String);
-    method public void setUrl(String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.Address> CREATOR;
-  }
-
-  public class Criteria implements android.os.Parcelable {
-    ctor public Criteria();
-    ctor public Criteria(android.location.Criteria);
-    method public int describeContents();
-    method public int getAccuracy();
-    method public int getBearingAccuracy();
-    method public int getHorizontalAccuracy();
-    method public int getPowerRequirement();
-    method public int getSpeedAccuracy();
-    method public int getVerticalAccuracy();
-    method public boolean isAltitudeRequired();
-    method public boolean isBearingRequired();
-    method public boolean isCostAllowed();
-    method public boolean isSpeedRequired();
-    method public void setAccuracy(int);
-    method public void setAltitudeRequired(boolean);
-    method public void setBearingAccuracy(int);
-    method public void setBearingRequired(boolean);
-    method public void setCostAllowed(boolean);
-    method public void setHorizontalAccuracy(int);
-    method public void setPowerRequirement(int);
-    method public void setSpeedAccuracy(int);
-    method public void setSpeedRequired(boolean);
-    method public void setVerticalAccuracy(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ACCURACY_COARSE = 2; // 0x2
-    field public static final int ACCURACY_FINE = 1; // 0x1
-    field public static final int ACCURACY_HIGH = 3; // 0x3
-    field public static final int ACCURACY_LOW = 1; // 0x1
-    field public static final int ACCURACY_MEDIUM = 2; // 0x2
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.Criteria> CREATOR;
-    field public static final int NO_REQUIREMENT = 0; // 0x0
-    field public static final int POWER_HIGH = 3; // 0x3
-    field public static final int POWER_LOW = 1; // 0x1
-    field public static final int POWER_MEDIUM = 2; // 0x2
-  }
-
-  public final class Geocoder {
-    ctor public Geocoder(android.content.Context, java.util.Locale);
-    ctor public Geocoder(android.content.Context);
-    method public java.util.List<android.location.Address> getFromLocation(double, double, int) throws java.io.IOException;
-    method public java.util.List<android.location.Address> getFromLocationName(String, int) throws java.io.IOException;
-    method public java.util.List<android.location.Address> getFromLocationName(String, int, double, double, double, double) throws java.io.IOException;
-    method public static boolean isPresent();
-  }
-
-  public final class GnssAntennaInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @FloatRange(from=0.0f) public double getCarrierFrequencyMHz();
-    method @NonNull public android.location.GnssAntennaInfo.PhaseCenterOffset getPhaseCenterOffset();
-    method @Nullable public android.location.GnssAntennaInfo.SphericalCorrections getPhaseCenterVariationCorrections();
-    method @Nullable public android.location.GnssAntennaInfo.SphericalCorrections getSignalGainCorrections();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssAntennaInfo> CREATOR;
-  }
-
-  public static class GnssAntennaInfo.Builder {
-    ctor public GnssAntennaInfo.Builder();
-    method @NonNull public android.location.GnssAntennaInfo build();
-    method @NonNull public android.location.GnssAntennaInfo.Builder setCarrierFrequencyMHz(@FloatRange(from=0.0f) double);
-    method @NonNull public android.location.GnssAntennaInfo.Builder setPhaseCenterOffset(@NonNull android.location.GnssAntennaInfo.PhaseCenterOffset);
-    method @NonNull public android.location.GnssAntennaInfo.Builder setPhaseCenterVariationCorrections(@Nullable android.location.GnssAntennaInfo.SphericalCorrections);
-    method @NonNull public android.location.GnssAntennaInfo.Builder setSignalGainCorrections(@Nullable android.location.GnssAntennaInfo.SphericalCorrections);
-  }
-
-  public static interface GnssAntennaInfo.Listener {
-    method public void onGnssAntennaInfoReceived(@NonNull java.util.List<android.location.GnssAntennaInfo>);
-  }
-
-  public static final class GnssAntennaInfo.PhaseCenterOffset implements android.os.Parcelable {
-    ctor public GnssAntennaInfo.PhaseCenterOffset(double, double, double, double, double, double);
-    method public int describeContents();
-    method @FloatRange public double getXOffsetMm();
-    method @FloatRange public double getXOffsetUncertaintyMm();
-    method @FloatRange public double getYOffsetMm();
-    method @FloatRange public double getYOffsetUncertaintyMm();
-    method @FloatRange public double getZOffsetMm();
-    method @FloatRange public double getZOffsetUncertaintyMm();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssAntennaInfo.PhaseCenterOffset> CREATOR;
-  }
-
-  public static final class GnssAntennaInfo.SphericalCorrections implements android.os.Parcelable {
-    ctor public GnssAntennaInfo.SphericalCorrections(@NonNull double[][], @NonNull double[][]);
-    method public int describeContents();
-    method @NonNull public double[][] getCorrectionUncertaintiesArray();
-    method @NonNull public double[][] getCorrectionsArray();
-    method @FloatRange(from=0.0f, to=180.0f) public double getDeltaPhi();
-    method @FloatRange(from=0.0f, to=360.0f) public double getDeltaTheta();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssAntennaInfo.SphericalCorrections> CREATOR;
-  }
-
-  public final class GnssCapabilities {
-    method public boolean hasGnssAntennaInfo();
-  }
-
-  public final class GnssClock implements android.os.Parcelable {
-    method public int describeContents();
-    method public double getBiasNanos();
-    method @FloatRange(from=0.0f) public double getBiasUncertaintyNanos();
-    method public double getDriftNanosPerSecond();
-    method @FloatRange(from=0.0f) public double getDriftUncertaintyNanosPerSecond();
-    method public long getElapsedRealtimeNanos();
-    method @FloatRange(from=0.0f) public double getElapsedRealtimeUncertaintyNanos();
-    method public long getFullBiasNanos();
-    method public int getHardwareClockDiscontinuityCount();
-    method public int getLeapSecond();
-    method @FloatRange(from=0.0) public double getReferenceCarrierFrequencyHzForIsb();
-    method @NonNull public String getReferenceCodeTypeForIsb();
-    method public int getReferenceConstellationTypeForIsb();
-    method public long getTimeNanos();
-    method @FloatRange(from=0.0f) public double getTimeUncertaintyNanos();
-    method public boolean hasBiasNanos();
-    method public boolean hasBiasUncertaintyNanos();
-    method public boolean hasDriftNanosPerSecond();
-    method public boolean hasDriftUncertaintyNanosPerSecond();
-    method public boolean hasElapsedRealtimeNanos();
-    method public boolean hasElapsedRealtimeUncertaintyNanos();
-    method public boolean hasFullBiasNanos();
-    method public boolean hasLeapSecond();
-    method public boolean hasReferenceCarrierFrequencyHzForIsb();
-    method public boolean hasReferenceCodeTypeForIsb();
-    method public boolean hasReferenceConstellationTypeForIsb();
-    method public boolean hasTimeUncertaintyNanos();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssClock> CREATOR;
-  }
-
-  public final class GnssMeasurement implements android.os.Parcelable {
-    method public int describeContents();
-    method public double getAccumulatedDeltaRangeMeters();
-    method public int getAccumulatedDeltaRangeState();
-    method public double getAccumulatedDeltaRangeUncertaintyMeters();
-    method public double getAutomaticGainControlLevelDb();
-    method @FloatRange(from=0, to=63) public double getBasebandCn0DbHz();
-    method @Deprecated public long getCarrierCycles();
-    method public float getCarrierFrequencyHz();
-    method @Deprecated public double getCarrierPhase();
-    method @Deprecated public double getCarrierPhaseUncertainty();
-    method @FloatRange(from=0, to=63) public double getCn0DbHz();
-    method @NonNull public String getCodeType();
-    method public int getConstellationType();
-    method public double getFullInterSignalBiasNanos();
-    method @FloatRange(from=0.0) public double getFullInterSignalBiasUncertaintyNanos();
-    method public int getMultipathIndicator();
-    method public double getPseudorangeRateMetersPerSecond();
-    method public double getPseudorangeRateUncertaintyMetersPerSecond();
-    method public long getReceivedSvTimeNanos();
-    method public long getReceivedSvTimeUncertaintyNanos();
-    method public double getSatelliteInterSignalBiasNanos();
-    method @FloatRange(from=0.0) public double getSatelliteInterSignalBiasUncertaintyNanos();
-    method public double getSnrInDb();
-    method public int getState();
-    method public int getSvid();
-    method public double getTimeOffsetNanos();
-    method public boolean hasAutomaticGainControlLevelDb();
-    method public boolean hasBasebandCn0DbHz();
-    method @Deprecated public boolean hasCarrierCycles();
-    method public boolean hasCarrierFrequencyHz();
-    method @Deprecated public boolean hasCarrierPhase();
-    method @Deprecated public boolean hasCarrierPhaseUncertainty();
-    method public boolean hasCodeType();
-    method public boolean hasFullInterSignalBiasNanos();
-    method public boolean hasFullInterSignalBiasUncertaintyNanos();
-    method public boolean hasSatelliteInterSignalBiasNanos();
-    method public boolean hasSatelliteInterSignalBiasUncertaintyNanos();
-    method public boolean hasSnrInDb();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ADR_STATE_CYCLE_SLIP = 4; // 0x4
-    field public static final int ADR_STATE_HALF_CYCLE_REPORTED = 16; // 0x10
-    field public static final int ADR_STATE_HALF_CYCLE_RESOLVED = 8; // 0x8
-    field public static final int ADR_STATE_RESET = 2; // 0x2
-    field public static final int ADR_STATE_UNKNOWN = 0; // 0x0
-    field public static final int ADR_STATE_VALID = 1; // 0x1
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssMeasurement> CREATOR;
-    field public static final int MULTIPATH_INDICATOR_DETECTED = 1; // 0x1
-    field public static final int MULTIPATH_INDICATOR_NOT_DETECTED = 2; // 0x2
-    field public static final int MULTIPATH_INDICATOR_UNKNOWN = 0; // 0x0
-    field public static final int STATE_2ND_CODE_LOCK = 65536; // 0x10000
-    field public static final int STATE_BDS_D2_BIT_SYNC = 256; // 0x100
-    field public static final int STATE_BDS_D2_SUBFRAME_SYNC = 512; // 0x200
-    field public static final int STATE_BIT_SYNC = 2; // 0x2
-    field public static final int STATE_CODE_LOCK = 1; // 0x1
-    field public static final int STATE_GAL_E1BC_CODE_LOCK = 1024; // 0x400
-    field public static final int STATE_GAL_E1B_PAGE_SYNC = 4096; // 0x1000
-    field public static final int STATE_GAL_E1C_2ND_CODE_LOCK = 2048; // 0x800
-    field public static final int STATE_GLO_STRING_SYNC = 64; // 0x40
-    field public static final int STATE_GLO_TOD_DECODED = 128; // 0x80
-    field public static final int STATE_GLO_TOD_KNOWN = 32768; // 0x8000
-    field public static final int STATE_MSEC_AMBIGUOUS = 16; // 0x10
-    field public static final int STATE_SBAS_SYNC = 8192; // 0x2000
-    field public static final int STATE_SUBFRAME_SYNC = 4; // 0x4
-    field public static final int STATE_SYMBOL_SYNC = 32; // 0x20
-    field public static final int STATE_TOW_DECODED = 8; // 0x8
-    field public static final int STATE_TOW_KNOWN = 16384; // 0x4000
-    field public static final int STATE_UNKNOWN = 0; // 0x0
-  }
-
-  public final class GnssMeasurementsEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.location.GnssClock getClock();
-    method @NonNull public java.util.Collection<android.location.GnssMeasurement> getMeasurements();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssMeasurementsEvent> CREATOR;
-  }
-
-  public abstract static class GnssMeasurementsEvent.Callback {
-    ctor public GnssMeasurementsEvent.Callback();
-    method public void onGnssMeasurementsReceived(android.location.GnssMeasurementsEvent);
-    method public void onStatusChanged(int);
-    field public static final int STATUS_LOCATION_DISABLED = 2; // 0x2
-    field public static final int STATUS_NOT_ALLOWED = 3; // 0x3
-    field public static final int STATUS_NOT_SUPPORTED = 0; // 0x0
-    field public static final int STATUS_READY = 1; // 0x1
-  }
-
-  public final class GnssNavigationMessage implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public byte[] getData();
-    method public int getMessageId();
-    method public int getStatus();
-    method public int getSubmessageId();
-    method public int getSvid();
-    method public int getType();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssNavigationMessage> CREATOR;
-    field public static final int STATUS_PARITY_PASSED = 1; // 0x1
-    field public static final int STATUS_PARITY_REBUILT = 2; // 0x2
-    field public static final int STATUS_UNKNOWN = 0; // 0x0
-    field public static final int TYPE_BDS_CNAV1 = 1283; // 0x503
-    field public static final int TYPE_BDS_CNAV2 = 1284; // 0x504
-    field public static final int TYPE_BDS_D1 = 1281; // 0x501
-    field public static final int TYPE_BDS_D2 = 1282; // 0x502
-    field public static final int TYPE_GAL_F = 1538; // 0x602
-    field public static final int TYPE_GAL_I = 1537; // 0x601
-    field public static final int TYPE_GLO_L1CA = 769; // 0x301
-    field public static final int TYPE_GPS_CNAV2 = 260; // 0x104
-    field public static final int TYPE_GPS_L1CA = 257; // 0x101
-    field public static final int TYPE_GPS_L2CNAV = 258; // 0x102
-    field public static final int TYPE_GPS_L5CNAV = 259; // 0x103
-    field public static final int TYPE_IRN_L5CA = 1793; // 0x701
-    field public static final int TYPE_QZS_L1CA = 1025; // 0x401
-    field public static final int TYPE_SBS = 513; // 0x201
-    field public static final int TYPE_UNKNOWN = 0; // 0x0
-  }
-
-  public abstract static class GnssNavigationMessage.Callback {
-    ctor public GnssNavigationMessage.Callback();
-    method public void onGnssNavigationMessageReceived(android.location.GnssNavigationMessage);
-    method public void onStatusChanged(int);
-    field public static final int STATUS_LOCATION_DISABLED = 2; // 0x2
-    field public static final int STATUS_NOT_SUPPORTED = 0; // 0x0
-    field public static final int STATUS_READY = 1; // 0x1
-  }
-
-  public final class GnssStatus {
-    method @FloatRange(from=0, to=360) public float getAzimuthDegrees(@IntRange(from=0) int);
-    method @FloatRange(from=0, to=63) public float getBasebandCn0DbHz(@IntRange(from=0) int);
-    method @FloatRange(from=0) public float getCarrierFrequencyHz(@IntRange(from=0) int);
-    method @FloatRange(from=0, to=63) public float getCn0DbHz(@IntRange(from=0) int);
-    method public int getConstellationType(@IntRange(from=0) int);
-    method @FloatRange(from=0xffffffa6, to=90) public float getElevationDegrees(@IntRange(from=0) int);
-    method @IntRange(from=0) public int getSatelliteCount();
-    method @IntRange(from=1, to=200) public int getSvid(@IntRange(from=0) int);
-    method public boolean hasAlmanacData(@IntRange(from=0) int);
-    method public boolean hasBasebandCn0DbHz(@IntRange(from=0) int);
-    method public boolean hasCarrierFrequencyHz(@IntRange(from=0) int);
-    method public boolean hasEphemerisData(@IntRange(from=0) int);
-    method public boolean usedInFix(@IntRange(from=0) int);
-    field public static final int CONSTELLATION_BEIDOU = 5; // 0x5
-    field public static final int CONSTELLATION_GALILEO = 6; // 0x6
-    field public static final int CONSTELLATION_GLONASS = 3; // 0x3
-    field public static final int CONSTELLATION_GPS = 1; // 0x1
-    field public static final int CONSTELLATION_IRNSS = 7; // 0x7
-    field public static final int CONSTELLATION_QZSS = 4; // 0x4
-    field public static final int CONSTELLATION_SBAS = 2; // 0x2
-    field public static final int CONSTELLATION_UNKNOWN = 0; // 0x0
-  }
-
-  public static final class GnssStatus.Builder {
-    ctor public GnssStatus.Builder();
-    method @NonNull public android.location.GnssStatus.Builder addSatellite(int, @IntRange(from=1, to=200) int, @FloatRange(from=0, to=63) float, @FloatRange(from=0xffffffa6, to=90) float, @FloatRange(from=0, to=360) float, boolean, boolean, boolean, boolean, @FloatRange(from=0) float, boolean, @FloatRange(from=0, to=63) float);
-    method @NonNull public android.location.GnssStatus build();
-    method @NonNull public android.location.GnssStatus.Builder clearSatellites();
-  }
-
-  public abstract static class GnssStatus.Callback {
-    ctor public GnssStatus.Callback();
-    method public void onFirstFix(int);
-    method public void onSatelliteStatusChanged(@NonNull android.location.GnssStatus);
-    method public void onStarted();
-    method public void onStopped();
-  }
-
-  @Deprecated public final class GpsSatellite {
-    method @Deprecated public float getAzimuth();
-    method @Deprecated public float getElevation();
-    method @Deprecated public int getPrn();
-    method @Deprecated public float getSnr();
-    method @Deprecated public boolean hasAlmanac();
-    method @Deprecated public boolean hasEphemeris();
-    method @Deprecated public boolean usedInFix();
-  }
-
-  @Deprecated public final class GpsStatus {
-    method @Deprecated @NonNull public static android.location.GpsStatus create(@NonNull android.location.GnssStatus, int);
-    method @Deprecated public int getMaxSatellites();
-    method @Deprecated public Iterable<android.location.GpsSatellite> getSatellites();
-    method @Deprecated public int getTimeToFirstFix();
-    field @Deprecated public static final int GPS_EVENT_FIRST_FIX = 3; // 0x3
-    field @Deprecated public static final int GPS_EVENT_SATELLITE_STATUS = 4; // 0x4
-    field @Deprecated public static final int GPS_EVENT_STARTED = 1; // 0x1
-    field @Deprecated public static final int GPS_EVENT_STOPPED = 2; // 0x2
-  }
-
-  @Deprecated public static interface GpsStatus.Listener {
-    method @Deprecated public void onGpsStatusChanged(int);
-  }
-
-  @Deprecated public static interface GpsStatus.NmeaListener {
-    method @Deprecated public void onNmeaReceived(long, String);
-  }
-
-  public class Location implements android.os.Parcelable {
-    ctor public Location(String);
-    ctor public Location(android.location.Location);
-    method public float bearingTo(android.location.Location);
-    method public static String convert(double, int);
-    method public static double convert(String);
-    method public int describeContents();
-    method public static void distanceBetween(double, double, double, double, float[]);
-    method public float distanceTo(android.location.Location);
-    method public void dump(android.util.Printer, String);
-    method public float getAccuracy();
-    method public double getAltitude();
-    method public float getBearing();
-    method public float getBearingAccuracyDegrees();
-    method public long getElapsedRealtimeNanos();
-    method public double getElapsedRealtimeUncertaintyNanos();
-    method public android.os.Bundle getExtras();
-    method public double getLatitude();
-    method public double getLongitude();
-    method public String getProvider();
-    method public float getSpeed();
-    method public float getSpeedAccuracyMetersPerSecond();
-    method public long getTime();
-    method public float getVerticalAccuracyMeters();
-    method public boolean hasAccuracy();
-    method public boolean hasAltitude();
-    method public boolean hasBearing();
-    method public boolean hasBearingAccuracy();
-    method public boolean hasElapsedRealtimeUncertaintyNanos();
-    method public boolean hasSpeed();
-    method public boolean hasSpeedAccuracy();
-    method public boolean hasVerticalAccuracy();
-    method public boolean isFromMockProvider();
-    method @Deprecated public void removeAccuracy();
-    method @Deprecated public void removeAltitude();
-    method @Deprecated public void removeBearing();
-    method @Deprecated public void removeSpeed();
-    method public void reset();
-    method public void set(android.location.Location);
-    method public void setAccuracy(float);
-    method public void setAltitude(double);
-    method public void setBearing(float);
-    method public void setBearingAccuracyDegrees(float);
-    method public void setElapsedRealtimeNanos(long);
-    method public void setElapsedRealtimeUncertaintyNanos(double);
-    method public void setExtras(android.os.Bundle);
-    method public void setLatitude(double);
-    method public void setLongitude(double);
-    method public void setProvider(String);
-    method public void setSpeed(float);
-    method public void setSpeedAccuracyMetersPerSecond(float);
-    method public void setTime(long);
-    method public void setVerticalAccuracyMeters(float);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.Location> CREATOR;
-    field public static final int FORMAT_DEGREES = 0; // 0x0
-    field public static final int FORMAT_MINUTES = 1; // 0x1
-    field public static final int FORMAT_SECONDS = 2; // 0x2
-  }
-
-  public interface LocationListener {
-    method public void onLocationChanged(@NonNull android.location.Location);
-    method public default void onProviderDisabled(@NonNull String);
-    method public default void onProviderEnabled(@NonNull String);
-    method @Deprecated public default void onStatusChanged(String, int, android.os.Bundle);
-  }
-
-  public class LocationManager {
-    method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addGpsStatusListener(android.location.GpsStatus.Listener);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(@NonNull android.location.GpsStatus.NmeaListener);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(@NonNull android.location.OnNmeaMessageListener);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(@NonNull android.location.OnNmeaMessageListener, @Nullable android.os.Handler);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(@NonNull java.util.concurrent.Executor, @NonNull android.location.OnNmeaMessageListener);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void addProximityAlert(double, double, float, long, @NonNull android.app.PendingIntent);
-    method public void addTestProvider(@NonNull String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int);
-    method @Deprecated public void clearTestProviderEnabled(@NonNull String);
-    method @Deprecated public void clearTestProviderLocation(@NonNull String);
-    method @Deprecated public void clearTestProviderStatus(@NonNull String);
-    method @NonNull public java.util.List<java.lang.String> getAllProviders();
-    method @Nullable public String getBestProvider(@NonNull android.location.Criteria, boolean);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void getCurrentLocation(@NonNull String, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.location.Location>);
-    method @NonNull public android.location.GnssCapabilities getGnssCapabilities();
-    method @Nullable public String getGnssHardwareModelName();
-    method public int getGnssYearOfHardware();
-    method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public android.location.GpsStatus getGpsStatus(@Nullable android.location.GpsStatus);
-    method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public android.location.Location getLastKnownLocation(@NonNull String);
-    method @Nullable public android.location.LocationProvider getProvider(@NonNull String);
-    method @NonNull public java.util.List<java.lang.String> getProviders(boolean);
-    method @NonNull public java.util.List<java.lang.String> getProviders(@NonNull android.location.Criteria, boolean);
-    method public boolean isLocationEnabled();
-    method public boolean isProviderEnabled(@NonNull String);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerAntennaInfoListener(@NonNull java.util.concurrent.Executor, @NonNull android.location.GnssAntennaInfo.Listener);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(@NonNull android.location.GnssMeasurementsEvent.Callback);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(@NonNull android.location.GnssMeasurementsEvent.Callback, @Nullable android.os.Handler);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(@NonNull java.util.concurrent.Executor, @NonNull android.location.GnssMeasurementsEvent.Callback);
-    method @Deprecated public boolean registerGnssNavigationMessageCallback(@NonNull android.location.GnssNavigationMessage.Callback);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssNavigationMessageCallback(@NonNull android.location.GnssNavigationMessage.Callback, @Nullable android.os.Handler);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssNavigationMessageCallback(@NonNull java.util.concurrent.Executor, @NonNull android.location.GnssNavigationMessage.Callback);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssStatusCallback(@NonNull android.location.GnssStatus.Callback);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssStatusCallback(@NonNull android.location.GnssStatus.Callback, @Nullable android.os.Handler);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssStatusCallback(@NonNull java.util.concurrent.Executor, @NonNull android.location.GnssStatus.Callback);
-    method @Deprecated public void removeGpsStatusListener(android.location.GpsStatus.Listener);
-    method @Deprecated public void removeNmeaListener(@NonNull android.location.GpsStatus.NmeaListener);
-    method public void removeNmeaListener(@NonNull android.location.OnNmeaMessageListener);
-    method @RequiresPermission(anyOf={"android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION"}, apis="..22") public void removeProximityAlert(@NonNull android.app.PendingIntent);
-    method public void removeTestProvider(@NonNull String);
-    method @RequiresPermission(anyOf={"android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION"}, apis="..22") public void removeUpdates(@NonNull android.location.LocationListener);
-    method public void removeUpdates(@NonNull android.app.PendingIntent);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull String, long, float, @NonNull android.location.LocationListener);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull String, long, float, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull String, long, float, @NonNull java.util.concurrent.Executor, @NonNull android.location.LocationListener);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(long, float, @NonNull android.location.Criteria, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(long, float, @NonNull android.location.Criteria, @NonNull java.util.concurrent.Executor, @NonNull android.location.LocationListener);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull String, long, float, @NonNull android.app.PendingIntent);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(long, float, @NonNull android.location.Criteria, @NonNull android.app.PendingIntent);
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(@NonNull String, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(@NonNull android.location.Criteria, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(@NonNull String, @NonNull android.app.PendingIntent);
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(@NonNull android.location.Criteria, @NonNull android.app.PendingIntent);
-    method public boolean sendExtraCommand(@NonNull String, @NonNull String, @Nullable android.os.Bundle);
-    method public void setTestProviderEnabled(@NonNull String, boolean);
-    method public void setTestProviderLocation(@NonNull String, @NonNull android.location.Location);
-    method @Deprecated public void setTestProviderStatus(@NonNull String, int, @Nullable android.os.Bundle, long);
-    method public void unregisterAntennaInfoListener(@NonNull android.location.GnssAntennaInfo.Listener);
-    method public void unregisterGnssMeasurementsCallback(@NonNull android.location.GnssMeasurementsEvent.Callback);
-    method public void unregisterGnssNavigationMessageCallback(@NonNull android.location.GnssNavigationMessage.Callback);
-    method public void unregisterGnssStatusCallback(@NonNull android.location.GnssStatus.Callback);
-    field public static final String EXTRA_LOCATION_ENABLED = "android.location.extra.LOCATION_ENABLED";
-    field public static final String EXTRA_PROVIDER_ENABLED = "android.location.extra.PROVIDER_ENABLED";
-    field public static final String EXTRA_PROVIDER_NAME = "android.location.extra.PROVIDER_NAME";
-    field public static final String GPS_PROVIDER = "gps";
-    field public static final String KEY_LOCATION_CHANGED = "location";
-    field public static final String KEY_PROVIDER_ENABLED = "providerEnabled";
-    field public static final String KEY_PROXIMITY_ENTERING = "entering";
-    field @Deprecated public static final String KEY_STATUS_CHANGED = "status";
-    field public static final String MODE_CHANGED_ACTION = "android.location.MODE_CHANGED";
-    field public static final String NETWORK_PROVIDER = "network";
-    field public static final String PASSIVE_PROVIDER = "passive";
-    field public static final String PROVIDERS_CHANGED_ACTION = "android.location.PROVIDERS_CHANGED";
-  }
-
-  public class LocationProvider {
-    method public int getAccuracy();
-    method public String getName();
-    method public int getPowerRequirement();
-    method public boolean hasMonetaryCost();
-    method public boolean meetsCriteria(android.location.Criteria);
-    method public boolean requiresCell();
-    method public boolean requiresNetwork();
-    method public boolean requiresSatellite();
-    method public boolean supportsAltitude();
-    method public boolean supportsBearing();
-    method public boolean supportsSpeed();
-    field @Deprecated public static final int AVAILABLE = 2; // 0x2
-    field @Deprecated public static final int OUT_OF_SERVICE = 0; // 0x0
-    field @Deprecated public static final int TEMPORARILY_UNAVAILABLE = 1; // 0x1
-  }
-
-  public interface OnNmeaMessageListener {
-    method public void onNmeaMessage(String, long);
-  }
-
-  public abstract class SettingInjectorService extends android.app.Service {
-    ctor public SettingInjectorService(String);
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method protected abstract boolean onGetEnabled();
-    method protected abstract String onGetSummary();
-    method public final void onStart(android.content.Intent, int);
-    method public final int onStartCommand(android.content.Intent, int, int);
-    method public static final void refreshSettings(@NonNull android.content.Context);
-    field public static final String ACTION_INJECTED_SETTING_CHANGED = "android.location.InjectedSettingChanged";
-    field public static final String ACTION_SERVICE_INTENT = "android.location.SettingInjectorService";
-    field public static final String ATTRIBUTES_NAME = "injected-location-setting";
-    field public static final String META_DATA_NAME = "android.location.SettingInjectorService";
-  }
-
-}
-
-package android.media {
-
-  public class AsyncPlayer {
-    ctor public AsyncPlayer(String);
-    method @Deprecated public void play(android.content.Context, android.net.Uri, boolean, int);
-    method public void play(@NonNull android.content.Context, @NonNull android.net.Uri, boolean, @NonNull android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
-    method public void stop();
-  }
-
-  public final class AudioAttributes implements android.os.Parcelable {
-    method public boolean areHapticChannelsMuted();
-    method public int describeContents();
-    method public int getAllowedCapturePolicy();
-    method public int getContentType();
-    method public int getFlags();
-    method public int getUsage();
-    method public int getVolumeControlStream();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ALLOW_CAPTURE_BY_ALL = 1; // 0x1
-    field public static final int ALLOW_CAPTURE_BY_NONE = 3; // 0x3
-    field public static final int ALLOW_CAPTURE_BY_SYSTEM = 2; // 0x2
-    field public static final int CONTENT_TYPE_MOVIE = 3; // 0x3
-    field public static final int CONTENT_TYPE_MUSIC = 2; // 0x2
-    field public static final int CONTENT_TYPE_SONIFICATION = 4; // 0x4
-    field public static final int CONTENT_TYPE_SPEECH = 1; // 0x1
-    field public static final int CONTENT_TYPE_UNKNOWN = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.AudioAttributes> CREATOR;
-    field public static final int FLAG_AUDIBILITY_ENFORCED = 1; // 0x1
-    field public static final int FLAG_HW_AV_SYNC = 16; // 0x10
-    field @Deprecated public static final int FLAG_LOW_LATENCY = 256; // 0x100
-    field public static final int USAGE_ALARM = 4; // 0x4
-    field public static final int USAGE_ASSISTANCE_ACCESSIBILITY = 11; // 0xb
-    field public static final int USAGE_ASSISTANCE_NAVIGATION_GUIDANCE = 12; // 0xc
-    field public static final int USAGE_ASSISTANCE_SONIFICATION = 13; // 0xd
-    field public static final int USAGE_ASSISTANT = 16; // 0x10
-    field public static final int USAGE_GAME = 14; // 0xe
-    field public static final int USAGE_MEDIA = 1; // 0x1
-    field public static final int USAGE_NOTIFICATION = 5; // 0x5
-    field public static final int USAGE_NOTIFICATION_COMMUNICATION_DELAYED = 9; // 0x9
-    field public static final int USAGE_NOTIFICATION_COMMUNICATION_INSTANT = 8; // 0x8
-    field public static final int USAGE_NOTIFICATION_COMMUNICATION_REQUEST = 7; // 0x7
-    field public static final int USAGE_NOTIFICATION_EVENT = 10; // 0xa
-    field public static final int USAGE_NOTIFICATION_RINGTONE = 6; // 0x6
-    field public static final int USAGE_UNKNOWN = 0; // 0x0
-    field public static final int USAGE_VOICE_COMMUNICATION = 2; // 0x2
-    field public static final int USAGE_VOICE_COMMUNICATION_SIGNALLING = 3; // 0x3
-  }
-
-  public static class AudioAttributes.Builder {
-    ctor public AudioAttributes.Builder();
-    ctor public AudioAttributes.Builder(android.media.AudioAttributes);
-    method public android.media.AudioAttributes build();
-    method @NonNull public android.media.AudioAttributes.Builder setAllowedCapturePolicy(int);
-    method public android.media.AudioAttributes.Builder setContentType(int);
-    method public android.media.AudioAttributes.Builder setFlags(int);
-    method @NonNull public android.media.AudioAttributes.Builder setHapticChannelsMuted(boolean);
-    method public android.media.AudioAttributes.Builder setLegacyStreamType(int);
-    method public android.media.AudioAttributes.Builder setUsage(int);
-  }
-
-  public abstract class AudioDeviceCallback {
-    ctor public AudioDeviceCallback();
-    method public void onAudioDevicesAdded(android.media.AudioDeviceInfo[]);
-    method public void onAudioDevicesRemoved(android.media.AudioDeviceInfo[]);
-  }
-
-  public final class AudioDeviceInfo {
-    method @NonNull public String getAddress();
-    method @NonNull public int[] getChannelCounts();
-    method @NonNull public int[] getChannelIndexMasks();
-    method @NonNull public int[] getChannelMasks();
-    method @NonNull public int[] getEncapsulationMetadataTypes();
-    method @NonNull public int[] getEncapsulationModes();
-    method @NonNull public int[] getEncodings();
-    method public int getId();
-    method public CharSequence getProductName();
-    method @NonNull public int[] getSampleRates();
-    method public int getType();
-    method public boolean isSink();
-    method public boolean isSource();
-    field public static final int TYPE_AUX_LINE = 19; // 0x13
-    field public static final int TYPE_BLE_HEADSET = 26; // 0x1a
-    field public static final int TYPE_BLE_SPEAKER = 27; // 0x1b
-    field public static final int TYPE_BLUETOOTH_A2DP = 8; // 0x8
-    field public static final int TYPE_BLUETOOTH_SCO = 7; // 0x7
-    field public static final int TYPE_BUILTIN_EARPIECE = 1; // 0x1
-    field public static final int TYPE_BUILTIN_MIC = 15; // 0xf
-    field public static final int TYPE_BUILTIN_SPEAKER = 2; // 0x2
-    field public static final int TYPE_BUILTIN_SPEAKER_SAFE = 24; // 0x18
-    field public static final int TYPE_BUS = 21; // 0x15
-    field public static final int TYPE_DOCK = 13; // 0xd
-    field public static final int TYPE_FM = 14; // 0xe
-    field public static final int TYPE_FM_TUNER = 16; // 0x10
-    field public static final int TYPE_HDMI = 9; // 0x9
-    field public static final int TYPE_HDMI_ARC = 10; // 0xa
-    field public static final int TYPE_HEARING_AID = 23; // 0x17
-    field public static final int TYPE_IP = 20; // 0x14
-    field public static final int TYPE_LINE_ANALOG = 5; // 0x5
-    field public static final int TYPE_LINE_DIGITAL = 6; // 0x6
-    field public static final int TYPE_TELEPHONY = 18; // 0x12
-    field public static final int TYPE_TV_TUNER = 17; // 0x11
-    field public static final int TYPE_UNKNOWN = 0; // 0x0
-    field public static final int TYPE_USB_ACCESSORY = 12; // 0xc
-    field public static final int TYPE_USB_DEVICE = 11; // 0xb
-    field public static final int TYPE_USB_HEADSET = 22; // 0x16
-    field public static final int TYPE_WIRED_HEADPHONES = 4; // 0x4
-    field public static final int TYPE_WIRED_HEADSET = 3; // 0x3
-  }
-
-  public final class AudioFocusRequest {
-    method public boolean acceptsDelayedFocusGain();
-    method @NonNull public android.media.AudioAttributes getAudioAttributes();
-    method public int getFocusGain();
-    method public boolean willPauseWhenDucked();
-  }
-
-  public static final class AudioFocusRequest.Builder {
-    ctor public AudioFocusRequest.Builder(int);
-    ctor public AudioFocusRequest.Builder(@NonNull android.media.AudioFocusRequest);
-    method public android.media.AudioFocusRequest build();
-    method @NonNull public android.media.AudioFocusRequest.Builder setAcceptsDelayedFocusGain(boolean);
-    method @NonNull public android.media.AudioFocusRequest.Builder setAudioAttributes(@NonNull android.media.AudioAttributes);
-    method @NonNull public android.media.AudioFocusRequest.Builder setFocusGain(int);
-    method @NonNull public android.media.AudioFocusRequest.Builder setForceDucking(boolean);
-    method @NonNull public android.media.AudioFocusRequest.Builder setOnAudioFocusChangeListener(@NonNull android.media.AudioManager.OnAudioFocusChangeListener);
-    method @NonNull public android.media.AudioFocusRequest.Builder setOnAudioFocusChangeListener(@NonNull android.media.AudioManager.OnAudioFocusChangeListener, @NonNull android.os.Handler);
-    method @NonNull public android.media.AudioFocusRequest.Builder setWillPauseWhenDucked(boolean);
-  }
-
-  public final class AudioFormat implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getChannelCount();
-    method public int getChannelIndexMask();
-    method public int getChannelMask();
-    method public int getEncoding();
-    method @IntRange(from=1) public int getFrameSizeInBytes();
-    method public int getSampleRate();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated public static final int CHANNEL_CONFIGURATION_DEFAULT = 1; // 0x1
-    field @Deprecated public static final int CHANNEL_CONFIGURATION_INVALID = 0; // 0x0
-    field @Deprecated public static final int CHANNEL_CONFIGURATION_MONO = 2; // 0x2
-    field @Deprecated public static final int CHANNEL_CONFIGURATION_STEREO = 3; // 0x3
-    field public static final int CHANNEL_INVALID = 0; // 0x0
-    field public static final int CHANNEL_IN_BACK = 32; // 0x20
-    field public static final int CHANNEL_IN_BACK_PROCESSED = 512; // 0x200
-    field public static final int CHANNEL_IN_DEFAULT = 1; // 0x1
-    field public static final int CHANNEL_IN_FRONT = 16; // 0x10
-    field public static final int CHANNEL_IN_FRONT_PROCESSED = 256; // 0x100
-    field public static final int CHANNEL_IN_LEFT = 4; // 0x4
-    field public static final int CHANNEL_IN_LEFT_PROCESSED = 64; // 0x40
-    field public static final int CHANNEL_IN_MONO = 16; // 0x10
-    field public static final int CHANNEL_IN_PRESSURE = 1024; // 0x400
-    field public static final int CHANNEL_IN_RIGHT = 8; // 0x8
-    field public static final int CHANNEL_IN_RIGHT_PROCESSED = 128; // 0x80
-    field public static final int CHANNEL_IN_STEREO = 12; // 0xc
-    field public static final int CHANNEL_IN_VOICE_DNLINK = 32768; // 0x8000
-    field public static final int CHANNEL_IN_VOICE_UPLINK = 16384; // 0x4000
-    field public static final int CHANNEL_IN_X_AXIS = 2048; // 0x800
-    field public static final int CHANNEL_IN_Y_AXIS = 4096; // 0x1000
-    field public static final int CHANNEL_IN_Z_AXIS = 8192; // 0x2000
-    field public static final int CHANNEL_OUT_5POINT1 = 252; // 0xfc
-    field @Deprecated public static final int CHANNEL_OUT_7POINT1 = 1020; // 0x3fc
-    field public static final int CHANNEL_OUT_7POINT1_SURROUND = 6396; // 0x18fc
-    field public static final int CHANNEL_OUT_BACK_CENTER = 1024; // 0x400
-    field public static final int CHANNEL_OUT_BACK_LEFT = 64; // 0x40
-    field public static final int CHANNEL_OUT_BACK_RIGHT = 128; // 0x80
-    field public static final int CHANNEL_OUT_DEFAULT = 1; // 0x1
-    field public static final int CHANNEL_OUT_FRONT_CENTER = 16; // 0x10
-    field public static final int CHANNEL_OUT_FRONT_LEFT = 4; // 0x4
-    field public static final int CHANNEL_OUT_FRONT_LEFT_OF_CENTER = 256; // 0x100
-    field public static final int CHANNEL_OUT_FRONT_RIGHT = 8; // 0x8
-    field public static final int CHANNEL_OUT_FRONT_RIGHT_OF_CENTER = 512; // 0x200
-    field public static final int CHANNEL_OUT_LOW_FREQUENCY = 32; // 0x20
-    field public static final int CHANNEL_OUT_MONO = 4; // 0x4
-    field public static final int CHANNEL_OUT_QUAD = 204; // 0xcc
-    field public static final int CHANNEL_OUT_SIDE_LEFT = 2048; // 0x800
-    field public static final int CHANNEL_OUT_SIDE_RIGHT = 4096; // 0x1000
-    field public static final int CHANNEL_OUT_STEREO = 12; // 0xc
-    field public static final int CHANNEL_OUT_SURROUND = 1052; // 0x41c
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.AudioFormat> CREATOR;
-    field public static final int ENCODING_AAC_ELD = 15; // 0xf
-    field public static final int ENCODING_AAC_HE_V1 = 11; // 0xb
-    field public static final int ENCODING_AAC_HE_V2 = 12; // 0xc
-    field public static final int ENCODING_AAC_LC = 10; // 0xa
-    field public static final int ENCODING_AAC_XHE = 16; // 0x10
-    field public static final int ENCODING_AC3 = 5; // 0x5
-    field public static final int ENCODING_AC4 = 17; // 0x11
-    field public static final int ENCODING_DEFAULT = 1; // 0x1
-    field public static final int ENCODING_DOLBY_MAT = 19; // 0x13
-    field public static final int ENCODING_DOLBY_TRUEHD = 14; // 0xe
-    field public static final int ENCODING_DTS = 7; // 0x7
-    field public static final int ENCODING_DTS_HD = 8; // 0x8
-    field public static final int ENCODING_E_AC3 = 6; // 0x6
-    field public static final int ENCODING_E_AC3_JOC = 18; // 0x12
-    field public static final int ENCODING_IEC61937 = 13; // 0xd
-    field public static final int ENCODING_INVALID = 0; // 0x0
-    field public static final int ENCODING_MP3 = 9; // 0x9
-    field public static final int ENCODING_OPUS = 20; // 0x14
-    field public static final int ENCODING_PCM_16BIT = 2; // 0x2
-    field public static final int ENCODING_PCM_8BIT = 3; // 0x3
-    field public static final int ENCODING_PCM_FLOAT = 4; // 0x4
-    field public static final int SAMPLE_RATE_UNSPECIFIED = 0; // 0x0
-  }
-
-  public static class AudioFormat.Builder {
-    ctor public AudioFormat.Builder();
-    ctor public AudioFormat.Builder(android.media.AudioFormat);
-    method public android.media.AudioFormat build();
-    method @NonNull public android.media.AudioFormat.Builder setChannelIndexMask(int);
-    method @NonNull public android.media.AudioFormat.Builder setChannelMask(int);
-    method public android.media.AudioFormat.Builder setEncoding(int) throws java.lang.IllegalArgumentException;
-    method public android.media.AudioFormat.Builder setSampleRate(int) throws java.lang.IllegalArgumentException;
-  }
-
-  public class AudioManager {
-    method @Deprecated public int abandonAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener);
-    method public int abandonAudioFocusRequest(@NonNull android.media.AudioFocusRequest);
-    method public void adjustStreamVolume(int, int, int);
-    method public void adjustSuggestedStreamVolume(int, int, int);
-    method public void adjustVolume(int, int);
-    method public void dispatchMediaKeyEvent(android.view.KeyEvent);
-    method public int generateAudioSessionId();
-    method @NonNull public java.util.List<android.media.AudioPlaybackConfiguration> getActivePlaybackConfigurations();
-    method @NonNull public java.util.List<android.media.AudioRecordingConfiguration> getActiveRecordingConfigurations();
-    method public int getAllowedCapturePolicy();
-    method public android.media.AudioDeviceInfo[] getDevices(int);
-    method public java.util.List<android.media.MicrophoneInfo> getMicrophones() throws java.io.IOException;
-    method public int getMode();
-    method public String getParameters(String);
-    method public String getProperty(String);
-    method public int getRingerMode();
-    method @Deprecated public int getRouting(int);
-    method public int getStreamMaxVolume(int);
-    method public int getStreamMinVolume(int);
-    method public int getStreamVolume(int);
-    method public float getStreamVolumeDb(int, int, int);
-    method @Deprecated public int getVibrateSetting(int);
-    method @Deprecated public boolean isBluetoothA2dpOn();
-    method public boolean isBluetoothScoAvailableOffCall();
-    method public boolean isBluetoothScoOn();
-    method public boolean isCallScreeningModeSupported();
-    method public static boolean isHapticPlaybackSupported();
-    method public boolean isMicrophoneMute();
-    method public boolean isMusicActive();
-    method public static boolean isOffloadedPlaybackSupported(@NonNull android.media.AudioFormat, @NonNull android.media.AudioAttributes);
-    method public boolean isSpeakerphoneOn();
-    method public boolean isStreamMute(int);
-    method public boolean isVolumeFixed();
-    method @Deprecated public boolean isWiredHeadsetOn();
-    method public void loadSoundEffects();
-    method public void playSoundEffect(int);
-    method public void playSoundEffect(int, float);
-    method public void registerAudioDeviceCallback(android.media.AudioDeviceCallback, @Nullable android.os.Handler);
-    method public void registerAudioPlaybackCallback(@NonNull android.media.AudioManager.AudioPlaybackCallback, @Nullable android.os.Handler);
-    method public void registerAudioRecordingCallback(@NonNull android.media.AudioManager.AudioRecordingCallback, @Nullable android.os.Handler);
-    method @Deprecated public void registerMediaButtonEventReceiver(android.content.ComponentName);
-    method @Deprecated public void registerMediaButtonEventReceiver(android.app.PendingIntent);
-    method @Deprecated public void registerRemoteControlClient(android.media.RemoteControlClient);
-    method @Deprecated public boolean registerRemoteController(android.media.RemoteController);
-    method @Deprecated public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, int, int);
-    method public int requestAudioFocus(@NonNull android.media.AudioFocusRequest);
-    method public void setAllowedCapturePolicy(int);
-    method @Deprecated public void setBluetoothA2dpOn(boolean);
-    method public void setBluetoothScoOn(boolean);
-    method public void setMicrophoneMute(boolean);
-    method public void setMode(int);
-    method public void setParameters(String);
-    method public void setRingerMode(int);
-    method @Deprecated public void setRouting(int, int, int);
-    method public void setSpeakerphoneOn(boolean);
-    method @Deprecated public void setStreamMute(int, boolean);
-    method @Deprecated public void setStreamSolo(int, boolean);
-    method public void setStreamVolume(int, int, int);
-    method @Deprecated public void setVibrateSetting(int, int);
-    method @Deprecated public void setWiredHeadsetOn(boolean);
-    method @Deprecated public boolean shouldVibrate(int);
-    method public void startBluetoothSco();
-    method public void stopBluetoothSco();
-    method public void unloadSoundEffects();
-    method public void unregisterAudioDeviceCallback(android.media.AudioDeviceCallback);
-    method public void unregisterAudioPlaybackCallback(@NonNull android.media.AudioManager.AudioPlaybackCallback);
-    method public void unregisterAudioRecordingCallback(@NonNull android.media.AudioManager.AudioRecordingCallback);
-    method @Deprecated public void unregisterMediaButtonEventReceiver(android.content.ComponentName);
-    method @Deprecated public void unregisterMediaButtonEventReceiver(android.app.PendingIntent);
-    method @Deprecated public void unregisterRemoteControlClient(android.media.RemoteControlClient);
-    method @Deprecated public void unregisterRemoteController(android.media.RemoteController);
-    field public static final String ACTION_AUDIO_BECOMING_NOISY = "android.media.AUDIO_BECOMING_NOISY";
-    field public static final String ACTION_HDMI_AUDIO_PLUG = "android.media.action.HDMI_AUDIO_PLUG";
-    field public static final String ACTION_HEADSET_PLUG = "android.intent.action.HEADSET_PLUG";
-    field public static final String ACTION_MICROPHONE_MUTE_CHANGED = "android.media.action.MICROPHONE_MUTE_CHANGED";
-    field @Deprecated public static final String ACTION_SCO_AUDIO_STATE_CHANGED = "android.media.SCO_AUDIO_STATE_CHANGED";
-    field public static final String ACTION_SCO_AUDIO_STATE_UPDATED = "android.media.ACTION_SCO_AUDIO_STATE_UPDATED";
-    field public static final String ACTION_SPEAKERPHONE_STATE_CHANGED = "android.media.action.SPEAKERPHONE_STATE_CHANGED";
-    field public static final int ADJUST_LOWER = -1; // 0xffffffff
-    field public static final int ADJUST_MUTE = -100; // 0xffffff9c
-    field public static final int ADJUST_RAISE = 1; // 0x1
-    field public static final int ADJUST_SAME = 0; // 0x0
-    field public static final int ADJUST_TOGGLE_MUTE = 101; // 0x65
-    field public static final int ADJUST_UNMUTE = 100; // 0x64
-    field public static final int AUDIOFOCUS_GAIN = 1; // 0x1
-    field public static final int AUDIOFOCUS_GAIN_TRANSIENT = 2; // 0x2
-    field public static final int AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE = 4; // 0x4
-    field public static final int AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK = 3; // 0x3
-    field public static final int AUDIOFOCUS_LOSS = -1; // 0xffffffff
-    field public static final int AUDIOFOCUS_LOSS_TRANSIENT = -2; // 0xfffffffe
-    field public static final int AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK = -3; // 0xfffffffd
-    field public static final int AUDIOFOCUS_NONE = 0; // 0x0
-    field public static final int AUDIOFOCUS_REQUEST_DELAYED = 2; // 0x2
-    field public static final int AUDIOFOCUS_REQUEST_FAILED = 0; // 0x0
-    field public static final int AUDIOFOCUS_REQUEST_GRANTED = 1; // 0x1
-    field public static final int AUDIO_SESSION_ID_GENERATE = 0; // 0x0
-    field public static final int ERROR = -1; // 0xffffffff
-    field public static final int ERROR_DEAD_OBJECT = -6; // 0xfffffffa
-    field public static final String EXTRA_AUDIO_PLUG_STATE = "android.media.extra.AUDIO_PLUG_STATE";
-    field public static final String EXTRA_ENCODINGS = "android.media.extra.ENCODINGS";
-    field public static final String EXTRA_MAX_CHANNEL_COUNT = "android.media.extra.MAX_CHANNEL_COUNT";
-    field public static final String EXTRA_RINGER_MODE = "android.media.EXTRA_RINGER_MODE";
-    field public static final String EXTRA_SCO_AUDIO_PREVIOUS_STATE = "android.media.extra.SCO_AUDIO_PREVIOUS_STATE";
-    field public static final String EXTRA_SCO_AUDIO_STATE = "android.media.extra.SCO_AUDIO_STATE";
-    field @Deprecated public static final String EXTRA_VIBRATE_SETTING = "android.media.EXTRA_VIBRATE_SETTING";
-    field @Deprecated public static final String EXTRA_VIBRATE_TYPE = "android.media.EXTRA_VIBRATE_TYPE";
-    field public static final int FLAG_ALLOW_RINGER_MODES = 2; // 0x2
-    field public static final int FLAG_PLAY_SOUND = 4; // 0x4
-    field public static final int FLAG_REMOVE_SOUND_AND_VIBRATE = 8; // 0x8
-    field public static final int FLAG_SHOW_UI = 1; // 0x1
-    field public static final int FLAG_VIBRATE = 16; // 0x10
-    field public static final int FX_FOCUS_NAVIGATION_DOWN = 2; // 0x2
-    field public static final int FX_FOCUS_NAVIGATION_LEFT = 3; // 0x3
-    field public static final int FX_FOCUS_NAVIGATION_RIGHT = 4; // 0x4
-    field public static final int FX_FOCUS_NAVIGATION_UP = 1; // 0x1
-    field public static final int FX_KEYPRESS_DELETE = 7; // 0x7
-    field public static final int FX_KEYPRESS_INVALID = 9; // 0x9
-    field public static final int FX_KEYPRESS_RETURN = 8; // 0x8
-    field public static final int FX_KEYPRESS_SPACEBAR = 6; // 0x6
-    field public static final int FX_KEYPRESS_STANDARD = 5; // 0x5
-    field public static final int FX_KEY_CLICK = 0; // 0x0
-    field public static final int GET_DEVICES_ALL = 3; // 0x3
-    field public static final int GET_DEVICES_INPUTS = 1; // 0x1
-    field public static final int GET_DEVICES_OUTPUTS = 2; // 0x2
-    field public static final int MODE_CALL_SCREENING = 4; // 0x4
-    field public static final int MODE_CURRENT = -1; // 0xffffffff
-    field public static final int MODE_INVALID = -2; // 0xfffffffe
-    field public static final int MODE_IN_CALL = 2; // 0x2
-    field public static final int MODE_IN_COMMUNICATION = 3; // 0x3
-    field public static final int MODE_NORMAL = 0; // 0x0
-    field public static final int MODE_RINGTONE = 1; // 0x1
-    field @Deprecated public static final int NUM_STREAMS = 5; // 0x5
-    field public static final String PROPERTY_OUTPUT_FRAMES_PER_BUFFER = "android.media.property.OUTPUT_FRAMES_PER_BUFFER";
-    field public static final String PROPERTY_OUTPUT_SAMPLE_RATE = "android.media.property.OUTPUT_SAMPLE_RATE";
-    field public static final String PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED = "android.media.property.SUPPORT_AUDIO_SOURCE_UNPROCESSED";
-    field public static final String PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND = "android.media.property.SUPPORT_MIC_NEAR_ULTRASOUND";
-    field public static final String PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND = "android.media.property.SUPPORT_SPEAKER_NEAR_ULTRASOUND";
-    field public static final String RINGER_MODE_CHANGED_ACTION = "android.media.RINGER_MODE_CHANGED";
-    field public static final int RINGER_MODE_NORMAL = 2; // 0x2
-    field public static final int RINGER_MODE_SILENT = 0; // 0x0
-    field public static final int RINGER_MODE_VIBRATE = 1; // 0x1
-    field @Deprecated public static final int ROUTE_ALL = -1; // 0xffffffff
-    field @Deprecated public static final int ROUTE_BLUETOOTH = 4; // 0x4
-    field @Deprecated public static final int ROUTE_BLUETOOTH_A2DP = 16; // 0x10
-    field @Deprecated public static final int ROUTE_BLUETOOTH_SCO = 4; // 0x4
-    field @Deprecated public static final int ROUTE_EARPIECE = 1; // 0x1
-    field @Deprecated public static final int ROUTE_HEADSET = 8; // 0x8
-    field @Deprecated public static final int ROUTE_SPEAKER = 2; // 0x2
-    field public static final int SCO_AUDIO_STATE_CONNECTED = 1; // 0x1
-    field public static final int SCO_AUDIO_STATE_CONNECTING = 2; // 0x2
-    field public static final int SCO_AUDIO_STATE_DISCONNECTED = 0; // 0x0
-    field public static final int SCO_AUDIO_STATE_ERROR = -1; // 0xffffffff
-    field public static final int STREAM_ACCESSIBILITY = 10; // 0xa
-    field public static final int STREAM_ALARM = 4; // 0x4
-    field public static final int STREAM_DTMF = 8; // 0x8
-    field public static final int STREAM_MUSIC = 3; // 0x3
-    field public static final int STREAM_NOTIFICATION = 5; // 0x5
-    field public static final int STREAM_RING = 2; // 0x2
-    field public static final int STREAM_SYSTEM = 1; // 0x1
-    field public static final int STREAM_VOICE_CALL = 0; // 0x0
-    field public static final int USE_DEFAULT_STREAM_TYPE = -2147483648; // 0x80000000
-    field @Deprecated public static final String VIBRATE_SETTING_CHANGED_ACTION = "android.media.VIBRATE_SETTING_CHANGED";
-    field @Deprecated public static final int VIBRATE_SETTING_OFF = 0; // 0x0
-    field @Deprecated public static final int VIBRATE_SETTING_ON = 1; // 0x1
-    field @Deprecated public static final int VIBRATE_SETTING_ONLY_SILENT = 2; // 0x2
-    field @Deprecated public static final int VIBRATE_TYPE_NOTIFICATION = 1; // 0x1
-    field @Deprecated public static final int VIBRATE_TYPE_RINGER = 0; // 0x0
-  }
-
-  public abstract static class AudioManager.AudioPlaybackCallback {
-    ctor public AudioManager.AudioPlaybackCallback();
-    method public void onPlaybackConfigChanged(java.util.List<android.media.AudioPlaybackConfiguration>);
-  }
-
-  public abstract static class AudioManager.AudioRecordingCallback {
-    ctor public AudioManager.AudioRecordingCallback();
-    method public void onRecordingConfigChanged(java.util.List<android.media.AudioRecordingConfiguration>);
-  }
-
-  public static interface AudioManager.OnAudioFocusChangeListener {
-    method public void onAudioFocusChange(int);
-  }
-
-  public final class AudioMetadata {
-    method @NonNull public static android.media.AudioMetadataMap createMap();
-  }
-
-  public static class AudioMetadata.Format {
-    field @NonNull public static final android.media.AudioMetadata.Key<java.lang.Boolean> KEY_ATMOS_PRESENT;
-    field @NonNull public static final android.media.AudioMetadata.Key<java.lang.Integer> KEY_AUDIO_ENCODING;
-    field @NonNull public static final android.media.AudioMetadata.Key<java.lang.Integer> KEY_BIT_RATE;
-    field @NonNull public static final android.media.AudioMetadata.Key<java.lang.Integer> KEY_BIT_WIDTH;
-    field @NonNull public static final android.media.AudioMetadata.Key<java.lang.Integer> KEY_CHANNEL_MASK;
-    field @NonNull public static final android.media.AudioMetadata.Key<java.lang.String> KEY_MIME;
-    field @NonNull public static final android.media.AudioMetadata.Key<java.lang.Integer> KEY_SAMPLE_RATE;
-  }
-
-  public static interface AudioMetadata.Key<T> {
-    method @NonNull public String getName();
-    method @NonNull public Class<T> getValueClass();
-  }
-
-  public interface AudioMetadataMap extends android.media.AudioMetadataReadMap {
-    method @Nullable public <T> T remove(@NonNull android.media.AudioMetadata.Key<T>);
-    method @Nullable public <T> T set(@NonNull android.media.AudioMetadata.Key<T>, @NonNull T);
-  }
-
-  public interface AudioMetadataReadMap {
-    method public <T> boolean containsKey(@NonNull android.media.AudioMetadata.Key<T>);
-    method @NonNull public android.media.AudioMetadataMap dup();
-    method @Nullable public <T> T get(@NonNull android.media.AudioMetadata.Key<T>);
-    method @IntRange(from=0) public int size();
-  }
-
-  public final class AudioPlaybackCaptureConfiguration {
-    method @NonNull public int[] getExcludeUids();
-    method @NonNull public int[] getExcludeUsages();
-    method @NonNull public int[] getMatchingUids();
-    method @NonNull public int[] getMatchingUsages();
-    method @NonNull public android.media.projection.MediaProjection getMediaProjection();
-  }
-
-  public static final class AudioPlaybackCaptureConfiguration.Builder {
-    ctor public AudioPlaybackCaptureConfiguration.Builder(@NonNull android.media.projection.MediaProjection);
-    method @NonNull public android.media.AudioPlaybackCaptureConfiguration.Builder addMatchingUid(int);
-    method @NonNull public android.media.AudioPlaybackCaptureConfiguration.Builder addMatchingUsage(int);
-    method @NonNull public android.media.AudioPlaybackCaptureConfiguration build();
-    method @NonNull public android.media.AudioPlaybackCaptureConfiguration.Builder excludeUid(int);
-    method @NonNull public android.media.AudioPlaybackCaptureConfiguration.Builder excludeUsage(int);
-  }
-
-  public final class AudioPlaybackConfiguration implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.media.AudioAttributes getAudioAttributes();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.AudioPlaybackConfiguration> CREATOR;
-  }
-
-  public final class AudioPresentation {
-    method public java.util.Map<java.util.Locale,java.lang.String> getLabels();
-    method public java.util.Locale getLocale();
-    method public int getMasteringIndication();
-    method public int getPresentationId();
-    method public int getProgramId();
-    method public boolean hasAudioDescription();
-    method public boolean hasDialogueEnhancement();
-    method public boolean hasSpokenSubtitles();
-    field public static final int MASTERED_FOR_3D = 3; // 0x3
-    field public static final int MASTERED_FOR_HEADPHONE = 4; // 0x4
-    field public static final int MASTERED_FOR_STEREO = 1; // 0x1
-    field public static final int MASTERED_FOR_SURROUND = 2; // 0x2
-    field public static final int MASTERING_NOT_INDICATED = 0; // 0x0
-  }
-
-  public static final class AudioPresentation.Builder {
-    ctor public AudioPresentation.Builder(int);
-    method @NonNull public android.media.AudioPresentation build();
-    method @NonNull public android.media.AudioPresentation.Builder setHasAudioDescription(boolean);
-    method @NonNull public android.media.AudioPresentation.Builder setHasDialogueEnhancement(boolean);
-    method @NonNull public android.media.AudioPresentation.Builder setHasSpokenSubtitles(boolean);
-    method @NonNull public android.media.AudioPresentation.Builder setLabels(@NonNull java.util.Map<android.icu.util.ULocale,java.lang.CharSequence>);
-    method @NonNull public android.media.AudioPresentation.Builder setLocale(@NonNull android.icu.util.ULocale);
-    method @NonNull public android.media.AudioPresentation.Builder setMasteringIndication(int);
-    method @NonNull public android.media.AudioPresentation.Builder setProgramId(int);
-  }
-
-  public class AudioRecord implements android.media.AudioRecordingMonitor android.media.AudioRouting android.media.MicrophoneDirection {
-    ctor public AudioRecord(int, int, int, int, int) throws java.lang.IllegalArgumentException;
-    method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
-    method @Deprecated public void addOnRoutingChangedListener(android.media.AudioRecord.OnRoutingChangedListener, android.os.Handler);
-    method protected void finalize();
-    method public java.util.List<android.media.MicrophoneInfo> getActiveMicrophones() throws java.io.IOException;
-    method @Nullable public android.media.AudioRecordingConfiguration getActiveRecordingConfiguration();
-    method public int getAudioFormat();
-    method public int getAudioSessionId();
-    method public int getAudioSource();
-    method public int getBufferSizeInFrames();
-    method public int getChannelConfiguration();
-    method public int getChannelCount();
-    method @NonNull public android.media.AudioFormat getFormat();
-    method public android.os.PersistableBundle getMetrics();
-    method public static int getMinBufferSize(int, int, int);
-    method public int getNotificationMarkerPosition();
-    method public int getPositionNotificationPeriod();
-    method public android.media.AudioDeviceInfo getPreferredDevice();
-    method public int getRecordingState();
-    method public android.media.AudioDeviceInfo getRoutedDevice();
-    method public int getSampleRate();
-    method public int getState();
-    method public int getTimestamp(@NonNull android.media.AudioTimestamp, int);
-    method public boolean isPrivacySensitive();
-    method public int read(@NonNull byte[], int, int);
-    method public int read(@NonNull byte[], int, int, int);
-    method public int read(@NonNull short[], int, int);
-    method public int read(@NonNull short[], int, int, int);
-    method public int read(@NonNull float[], int, int, int);
-    method public int read(@NonNull java.nio.ByteBuffer, int);
-    method public int read(@NonNull java.nio.ByteBuffer, int, int);
-    method public void registerAudioRecordingCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.AudioRecordingCallback);
-    method public void release();
-    method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
-    method @Deprecated public void removeOnRoutingChangedListener(android.media.AudioRecord.OnRoutingChangedListener);
-    method public int setNotificationMarkerPosition(int);
-    method public int setPositionNotificationPeriod(int);
-    method public boolean setPreferredDevice(android.media.AudioDeviceInfo);
-    method public boolean setPreferredMicrophoneDirection(int);
-    method public boolean setPreferredMicrophoneFieldDimension(@FloatRange(from=-1.0, to=1.0) float);
-    method public void setRecordPositionUpdateListener(android.media.AudioRecord.OnRecordPositionUpdateListener);
-    method public void setRecordPositionUpdateListener(android.media.AudioRecord.OnRecordPositionUpdateListener, android.os.Handler);
-    method public void startRecording() throws java.lang.IllegalStateException;
-    method public void startRecording(android.media.MediaSyncEvent) throws java.lang.IllegalStateException;
-    method public void stop() throws java.lang.IllegalStateException;
-    method public void unregisterAudioRecordingCallback(@NonNull android.media.AudioManager.AudioRecordingCallback);
-    field public static final int ERROR = -1; // 0xffffffff
-    field public static final int ERROR_BAD_VALUE = -2; // 0xfffffffe
-    field public static final int ERROR_DEAD_OBJECT = -6; // 0xfffffffa
-    field public static final int ERROR_INVALID_OPERATION = -3; // 0xfffffffd
-    field public static final int READ_BLOCKING = 0; // 0x0
-    field public static final int READ_NON_BLOCKING = 1; // 0x1
-    field public static final int RECORDSTATE_RECORDING = 3; // 0x3
-    field public static final int RECORDSTATE_STOPPED = 1; // 0x1
-    field public static final int STATE_INITIALIZED = 1; // 0x1
-    field public static final int STATE_UNINITIALIZED = 0; // 0x0
-    field public static final int SUCCESS = 0; // 0x0
-  }
-
-  public static class AudioRecord.Builder {
-    ctor public AudioRecord.Builder();
-    method public android.media.AudioRecord build() throws java.lang.UnsupportedOperationException;
-    method public android.media.AudioRecord.Builder setAudioFormat(@NonNull android.media.AudioFormat) throws java.lang.IllegalArgumentException;
-    method @NonNull public android.media.AudioRecord.Builder setAudioPlaybackCaptureConfig(@NonNull android.media.AudioPlaybackCaptureConfiguration);
-    method public android.media.AudioRecord.Builder setAudioSource(int) throws java.lang.IllegalArgumentException;
-    method public android.media.AudioRecord.Builder setBufferSizeInBytes(int) throws java.lang.IllegalArgumentException;
-    method @NonNull public android.media.AudioRecord.Builder setPrivacySensitive(boolean);
-  }
-
-  public static final class AudioRecord.MetricsConstants {
-    field public static final String CHANNELS = "android.media.audiorecord.channels";
-    field public static final String ENCODING = "android.media.audiorecord.encoding";
-    field @Deprecated public static final String LATENCY = "android.media.audiorecord.latency";
-    field public static final String SAMPLERATE = "android.media.audiorecord.samplerate";
-    field public static final String SOURCE = "android.media.audiorecord.source";
-  }
-
-  public static interface AudioRecord.OnRecordPositionUpdateListener {
-    method public void onMarkerReached(android.media.AudioRecord);
-    method public void onPeriodicNotification(android.media.AudioRecord);
-  }
-
-  @Deprecated public static interface AudioRecord.OnRoutingChangedListener extends android.media.AudioRouting.OnRoutingChangedListener {
-    method @Deprecated public void onRoutingChanged(android.media.AudioRecord);
-    method @Deprecated public default void onRoutingChanged(android.media.AudioRouting);
-  }
-
-  public final class AudioRecordingConfiguration implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.media.AudioDeviceInfo getAudioDevice();
-    method public int getAudioSource();
-    method public int getClientAudioSessionId();
-    method public int getClientAudioSource();
-    method @NonNull public java.util.List<android.media.audiofx.AudioEffect.Descriptor> getClientEffects();
-    method public android.media.AudioFormat getClientFormat();
-    method @NonNull public java.util.List<android.media.audiofx.AudioEffect.Descriptor> getEffects();
-    method public android.media.AudioFormat getFormat();
-    method public boolean isClientSilenced();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.AudioRecordingConfiguration> CREATOR;
-  }
-
-  public interface AudioRecordingMonitor {
-    method @Nullable public android.media.AudioRecordingConfiguration getActiveRecordingConfiguration();
-    method public void registerAudioRecordingCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.AudioRecordingCallback);
-    method public void unregisterAudioRecordingCallback(@NonNull android.media.AudioManager.AudioRecordingCallback);
-  }
-
-  public interface AudioRouting {
-    method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
-    method public android.media.AudioDeviceInfo getPreferredDevice();
-    method public android.media.AudioDeviceInfo getRoutedDevice();
-    method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
-    method public boolean setPreferredDevice(android.media.AudioDeviceInfo);
-  }
-
-  public static interface AudioRouting.OnRoutingChangedListener {
-    method public void onRoutingChanged(android.media.AudioRouting);
-  }
-
-  public final class AudioTimestamp {
-    ctor public AudioTimestamp();
-    field public static final int TIMEBASE_BOOTTIME = 1; // 0x1
-    field public static final int TIMEBASE_MONOTONIC = 0; // 0x0
-    field public long framePosition;
-    field public long nanoTime;
-  }
-
-  public class AudioTrack implements android.media.AudioRouting android.media.VolumeAutomation {
-    ctor @Deprecated public AudioTrack(int, int, int, int, int, int) throws java.lang.IllegalArgumentException;
-    ctor @Deprecated public AudioTrack(int, int, int, int, int, int, int) throws java.lang.IllegalArgumentException;
-    ctor public AudioTrack(android.media.AudioAttributes, android.media.AudioFormat, int, int, int) throws java.lang.IllegalArgumentException;
-    method public void addOnCodecFormatChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioTrack.OnCodecFormatChangedListener);
-    method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
-    method @Deprecated public void addOnRoutingChangedListener(android.media.AudioTrack.OnRoutingChangedListener, android.os.Handler);
-    method public int attachAuxEffect(int);
-    method @NonNull public android.media.VolumeShaper createVolumeShaper(@NonNull android.media.VolumeShaper.Configuration);
-    method protected void finalize();
-    method public void flush();
-    method @NonNull public android.media.AudioAttributes getAudioAttributes();
-    method public float getAudioDescriptionMixLeveldB();
-    method public int getAudioFormat();
-    method public int getAudioSessionId();
-    method @IntRange(from=0) public int getBufferCapacityInFrames();
-    method @IntRange(from=0) public int getBufferSizeInFrames();
-    method public int getChannelConfiguration();
-    method public int getChannelCount();
-    method public int getDualMonoMode();
-    method @NonNull public android.media.AudioFormat getFormat();
-    method public static float getMaxVolume();
-    method public android.os.PersistableBundle getMetrics();
-    method public static int getMinBufferSize(int, int, int);
-    method public static float getMinVolume();
-    method @Deprecated protected int getNativeFrameCount();
-    method public static int getNativeOutputSampleRate(int);
-    method public int getNotificationMarkerPosition();
-    method @IntRange(from=0) public int getOffloadDelay();
-    method @IntRange(from=0) public int getOffloadPadding();
-    method public int getPerformanceMode();
-    method public int getPlayState();
-    method public int getPlaybackHeadPosition();
-    method @NonNull public android.media.PlaybackParams getPlaybackParams();
-    method public int getPlaybackRate();
-    method public int getPositionNotificationPeriod();
-    method public android.media.AudioDeviceInfo getPreferredDevice();
-    method public android.media.AudioDeviceInfo getRoutedDevice();
-    method public int getSampleRate();
-    method public int getState();
-    method public int getStreamType();
-    method public boolean getTimestamp(android.media.AudioTimestamp);
-    method public int getUnderrunCount();
-    method public static boolean isDirectPlaybackSupported(@NonNull android.media.AudioFormat, @NonNull android.media.AudioAttributes);
-    method public boolean isOffloadedPlayback();
-    method public void pause() throws java.lang.IllegalStateException;
-    method public void play() throws java.lang.IllegalStateException;
-    method public void registerStreamEventCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioTrack.StreamEventCallback);
-    method public void release();
-    method public int reloadStaticData();
-    method public void removeOnCodecFormatChangedListener(@NonNull android.media.AudioTrack.OnCodecFormatChangedListener);
-    method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
-    method @Deprecated public void removeOnRoutingChangedListener(android.media.AudioTrack.OnRoutingChangedListener);
-    method public boolean setAudioDescriptionMixLeveldB(@FloatRange(to=48.0f, toInclusive=true) float);
-    method public int setAuxEffectSendLevel(@FloatRange(from=0.0) float);
-    method public int setBufferSizeInFrames(@IntRange(from=0) int);
-    method public boolean setDualMonoMode(int);
-    method public int setLoopPoints(@IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0xffffffff) int);
-    method public int setNotificationMarkerPosition(int);
-    method public void setOffloadDelayPadding(@IntRange(from=0) int, @IntRange(from=0) int);
-    method public void setOffloadEndOfStream();
-    method public int setPlaybackHeadPosition(@IntRange(from=0) int);
-    method public void setPlaybackParams(@NonNull android.media.PlaybackParams);
-    method public void setPlaybackPositionUpdateListener(android.media.AudioTrack.OnPlaybackPositionUpdateListener);
-    method public void setPlaybackPositionUpdateListener(android.media.AudioTrack.OnPlaybackPositionUpdateListener, android.os.Handler);
-    method public int setPlaybackRate(int);
-    method public int setPositionNotificationPeriod(int);
-    method public boolean setPreferredDevice(android.media.AudioDeviceInfo);
-    method public int setPresentation(@NonNull android.media.AudioPresentation);
-    method @Deprecated protected void setState(int);
-    method @Deprecated public int setStereoVolume(float, float);
-    method public int setVolume(float);
-    method public void stop() throws java.lang.IllegalStateException;
-    method public void unregisterStreamEventCallback(@NonNull android.media.AudioTrack.StreamEventCallback);
-    method public int write(@NonNull byte[], int, int);
-    method public int write(@NonNull byte[], int, int, int);
-    method public int write(@NonNull short[], int, int);
-    method public int write(@NonNull short[], int, int, int);
-    method public int write(@NonNull float[], int, int, int);
-    method public int write(@NonNull java.nio.ByteBuffer, int, int);
-    method public int write(@NonNull java.nio.ByteBuffer, int, int, long);
-    field public static final int DUAL_MONO_MODE_LL = 2; // 0x2
-    field public static final int DUAL_MONO_MODE_LR = 1; // 0x1
-    field public static final int DUAL_MONO_MODE_OFF = 0; // 0x0
-    field public static final int DUAL_MONO_MODE_RR = 3; // 0x3
-    field public static final int ENCAPSULATION_METADATA_TYPE_DVB_AD_DESCRIPTOR = 2; // 0x2
-    field public static final int ENCAPSULATION_METADATA_TYPE_FRAMEWORK_TUNER = 1; // 0x1
-    field public static final int ENCAPSULATION_MODE_ELEMENTARY_STREAM = 1; // 0x1
-    field public static final int ENCAPSULATION_MODE_NONE = 0; // 0x0
-    field public static final int ERROR = -1; // 0xffffffff
-    field public static final int ERROR_BAD_VALUE = -2; // 0xfffffffe
-    field public static final int ERROR_DEAD_OBJECT = -6; // 0xfffffffa
-    field public static final int ERROR_INVALID_OPERATION = -3; // 0xfffffffd
-    field public static final int MODE_STATIC = 0; // 0x0
-    field public static final int MODE_STREAM = 1; // 0x1
-    field public static final int PERFORMANCE_MODE_LOW_LATENCY = 1; // 0x1
-    field public static final int PERFORMANCE_MODE_NONE = 0; // 0x0
-    field public static final int PERFORMANCE_MODE_POWER_SAVING = 2; // 0x2
-    field public static final int PLAYSTATE_PAUSED = 2; // 0x2
-    field public static final int PLAYSTATE_PLAYING = 3; // 0x3
-    field public static final int PLAYSTATE_STOPPED = 1; // 0x1
-    field public static final int STATE_INITIALIZED = 1; // 0x1
-    field public static final int STATE_NO_STATIC_DATA = 2; // 0x2
-    field public static final int STATE_UNINITIALIZED = 0; // 0x0
-    field public static final int SUCCESS = 0; // 0x0
-    field public static final int WRITE_BLOCKING = 0; // 0x0
-    field public static final int WRITE_NON_BLOCKING = 1; // 0x1
-  }
-
-  public static class AudioTrack.Builder {
-    ctor public AudioTrack.Builder();
-    method @NonNull public android.media.AudioTrack build() throws java.lang.UnsupportedOperationException;
-    method @NonNull public android.media.AudioTrack.Builder setAudioAttributes(@NonNull android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
-    method @NonNull public android.media.AudioTrack.Builder setAudioFormat(@NonNull android.media.AudioFormat) throws java.lang.IllegalArgumentException;
-    method @NonNull public android.media.AudioTrack.Builder setBufferSizeInBytes(@IntRange(from=0) int) throws java.lang.IllegalArgumentException;
-    method @NonNull public android.media.AudioTrack.Builder setEncapsulationMode(int);
-    method @NonNull public android.media.AudioTrack.Builder setOffloadedPlayback(boolean);
-    method @NonNull public android.media.AudioTrack.Builder setPerformanceMode(int);
-    method @NonNull public android.media.AudioTrack.Builder setSessionId(@IntRange(from=1) int) throws java.lang.IllegalArgumentException;
-    method @NonNull public android.media.AudioTrack.Builder setTransferMode(int) throws java.lang.IllegalArgumentException;
-  }
-
-  public static final class AudioTrack.MetricsConstants {
-    field @Deprecated public static final String CHANNELMASK = "android.media.audiorecord.channelmask";
-    field public static final String CONTENTTYPE = "android.media.audiotrack.type";
-    field @Deprecated public static final String SAMPLERATE = "android.media.audiorecord.samplerate";
-    field public static final String STREAMTYPE = "android.media.audiotrack.streamtype";
-    field public static final String USAGE = "android.media.audiotrack.usage";
-  }
-
-  public static interface AudioTrack.OnCodecFormatChangedListener {
-    method public void onCodecFormatChanged(@NonNull android.media.AudioTrack, @Nullable android.media.AudioMetadataReadMap);
-  }
-
-  public static interface AudioTrack.OnPlaybackPositionUpdateListener {
-    method public void onMarkerReached(android.media.AudioTrack);
-    method public void onPeriodicNotification(android.media.AudioTrack);
-  }
-
-  @Deprecated public static interface AudioTrack.OnRoutingChangedListener extends android.media.AudioRouting.OnRoutingChangedListener {
-    method @Deprecated public void onRoutingChanged(android.media.AudioTrack);
-    method @Deprecated public default void onRoutingChanged(android.media.AudioRouting);
-  }
-
-  public abstract static class AudioTrack.StreamEventCallback {
-    ctor public AudioTrack.StreamEventCallback();
-    method public void onDataRequest(@NonNull android.media.AudioTrack, @IntRange(from=0) int);
-    method public void onPresentationEnded(@NonNull android.media.AudioTrack);
-    method public void onTearDown(@NonNull android.media.AudioTrack);
-  }
-
-  public class CamcorderProfile {
-    method public static android.media.CamcorderProfile get(int);
-    method public static android.media.CamcorderProfile get(int, int);
-    method public static boolean hasProfile(int);
-    method public static boolean hasProfile(int, int);
-    field public static final int QUALITY_1080P = 6; // 0x6
-    field public static final int QUALITY_2160P = 8; // 0x8
-    field public static final int QUALITY_2K = 12; // 0xc
-    field public static final int QUALITY_480P = 4; // 0x4
-    field public static final int QUALITY_4KDCI = 10; // 0xa
-    field public static final int QUALITY_720P = 5; // 0x5
-    field public static final int QUALITY_CIF = 3; // 0x3
-    field public static final int QUALITY_HIGH = 1; // 0x1
-    field public static final int QUALITY_HIGH_SPEED_1080P = 2004; // 0x7d4
-    field public static final int QUALITY_HIGH_SPEED_2160P = 2005; // 0x7d5
-    field public static final int QUALITY_HIGH_SPEED_480P = 2002; // 0x7d2
-    field public static final int QUALITY_HIGH_SPEED_4KDCI = 2008; // 0x7d8
-    field public static final int QUALITY_HIGH_SPEED_720P = 2003; // 0x7d3
-    field public static final int QUALITY_HIGH_SPEED_CIF = 2006; // 0x7d6
-    field public static final int QUALITY_HIGH_SPEED_HIGH = 2001; // 0x7d1
-    field public static final int QUALITY_HIGH_SPEED_LOW = 2000; // 0x7d0
-    field public static final int QUALITY_HIGH_SPEED_VGA = 2007; // 0x7d7
-    field public static final int QUALITY_LOW = 0; // 0x0
-    field public static final int QUALITY_QCIF = 2; // 0x2
-    field public static final int QUALITY_QHD = 11; // 0xb
-    field public static final int QUALITY_QVGA = 7; // 0x7
-    field public static final int QUALITY_TIME_LAPSE_1080P = 1006; // 0x3ee
-    field public static final int QUALITY_TIME_LAPSE_2160P = 1008; // 0x3f0
-    field public static final int QUALITY_TIME_LAPSE_2K = 1012; // 0x3f4
-    field public static final int QUALITY_TIME_LAPSE_480P = 1004; // 0x3ec
-    field public static final int QUALITY_TIME_LAPSE_4KDCI = 1010; // 0x3f2
-    field public static final int QUALITY_TIME_LAPSE_720P = 1005; // 0x3ed
-    field public static final int QUALITY_TIME_LAPSE_CIF = 1003; // 0x3eb
-    field public static final int QUALITY_TIME_LAPSE_HIGH = 1001; // 0x3e9
-    field public static final int QUALITY_TIME_LAPSE_LOW = 1000; // 0x3e8
-    field public static final int QUALITY_TIME_LAPSE_QCIF = 1002; // 0x3ea
-    field public static final int QUALITY_TIME_LAPSE_QHD = 1011; // 0x3f3
-    field public static final int QUALITY_TIME_LAPSE_QVGA = 1007; // 0x3ef
-    field public static final int QUALITY_TIME_LAPSE_VGA = 1009; // 0x3f1
-    field public static final int QUALITY_VGA = 9; // 0x9
-    field public int audioBitRate;
-    field public int audioChannels;
-    field public int audioCodec;
-    field public int audioSampleRate;
-    field public int duration;
-    field public int fileFormat;
-    field public int quality;
-    field public int videoBitRate;
-    field public int videoCodec;
-    field public int videoFrameHeight;
-    field public int videoFrameRate;
-    field public int videoFrameWidth;
-  }
-
-  public class CameraProfile {
-    ctor public CameraProfile();
-    method public static int getJpegEncodingQualityParameter(int);
-    method public static int getJpegEncodingQualityParameter(int, int);
-    field public static final int QUALITY_HIGH = 2; // 0x2
-    field public static final int QUALITY_LOW = 0; // 0x0
-    field public static final int QUALITY_MEDIUM = 1; // 0x1
-  }
-
-  public final class DeniedByServerException extends android.media.MediaDrmException {
-    ctor public DeniedByServerException(String);
-  }
-
-  public abstract class DrmInitData {
-    method @Deprecated public abstract android.media.DrmInitData.SchemeInitData get(java.util.UUID);
-    method @NonNull public android.media.DrmInitData.SchemeInitData getSchemeInitDataAt(int);
-    method public int getSchemeInitDataCount();
-  }
-
-  public static final class DrmInitData.SchemeInitData {
-    field @NonNull public static final java.util.UUID UUID_NIL;
-    field public final byte[] data;
-    field public final String mimeType;
-    field @NonNull public final java.util.UUID uuid;
-  }
-
-  public class ExifInterface {
-    ctor public ExifInterface(@NonNull java.io.File) throws java.io.IOException;
-    ctor public ExifInterface(@NonNull String) throws java.io.IOException;
-    ctor public ExifInterface(@NonNull java.io.FileDescriptor) throws java.io.IOException;
-    ctor public ExifInterface(@NonNull java.io.InputStream) throws java.io.IOException;
-    ctor public ExifInterface(@NonNull java.io.InputStream, int) throws java.io.IOException;
-    method public double getAltitude(double);
-    method @Nullable public String getAttribute(@NonNull String);
-    method @Nullable public byte[] getAttributeBytes(@NonNull String);
-    method public double getAttributeDouble(@NonNull String, double);
-    method public int getAttributeInt(@NonNull String, int);
-    method @Nullable public long[] getAttributeRange(@NonNull String);
-    method public boolean getLatLong(float[]);
-    method public byte[] getThumbnail();
-    method public android.graphics.Bitmap getThumbnailBitmap();
-    method public byte[] getThumbnailBytes();
-    method @Nullable public long[] getThumbnailRange();
-    method public boolean hasAttribute(@NonNull String);
-    method public boolean hasThumbnail();
-    method public static boolean isSupportedMimeType(@NonNull String);
-    method public boolean isThumbnailCompressed();
-    method public void saveAttributes() throws java.io.IOException;
-    method public void setAttribute(@NonNull String, @Nullable String);
-    field public static final int ORIENTATION_FLIP_HORIZONTAL = 2; // 0x2
-    field public static final int ORIENTATION_FLIP_VERTICAL = 4; // 0x4
-    field public static final int ORIENTATION_NORMAL = 1; // 0x1
-    field public static final int ORIENTATION_ROTATE_180 = 3; // 0x3
-    field public static final int ORIENTATION_ROTATE_270 = 8; // 0x8
-    field public static final int ORIENTATION_ROTATE_90 = 6; // 0x6
-    field public static final int ORIENTATION_TRANSPOSE = 5; // 0x5
-    field public static final int ORIENTATION_TRANSVERSE = 7; // 0x7
-    field public static final int ORIENTATION_UNDEFINED = 0; // 0x0
-    field public static final int STREAM_TYPE_EXIF_DATA_ONLY = 1; // 0x1
-    field public static final int STREAM_TYPE_FULL_IMAGE_DATA = 0; // 0x0
-    field @Deprecated public static final String TAG_APERTURE = "FNumber";
-    field public static final String TAG_APERTURE_VALUE = "ApertureValue";
-    field public static final String TAG_ARTIST = "Artist";
-    field public static final String TAG_BITS_PER_SAMPLE = "BitsPerSample";
-    field public static final String TAG_BRIGHTNESS_VALUE = "BrightnessValue";
-    field public static final String TAG_CFA_PATTERN = "CFAPattern";
-    field public static final String TAG_COLOR_SPACE = "ColorSpace";
-    field public static final String TAG_COMPONENTS_CONFIGURATION = "ComponentsConfiguration";
-    field public static final String TAG_COMPRESSED_BITS_PER_PIXEL = "CompressedBitsPerPixel";
-    field public static final String TAG_COMPRESSION = "Compression";
-    field public static final String TAG_CONTRAST = "Contrast";
-    field public static final String TAG_COPYRIGHT = "Copyright";
-    field public static final String TAG_CUSTOM_RENDERED = "CustomRendered";
-    field public static final String TAG_DATETIME = "DateTime";
-    field public static final String TAG_DATETIME_DIGITIZED = "DateTimeDigitized";
-    field public static final String TAG_DATETIME_ORIGINAL = "DateTimeOriginal";
-    field public static final String TAG_DEFAULT_CROP_SIZE = "DefaultCropSize";
-    field public static final String TAG_DEVICE_SETTING_DESCRIPTION = "DeviceSettingDescription";
-    field public static final String TAG_DIGITAL_ZOOM_RATIO = "DigitalZoomRatio";
-    field public static final String TAG_DNG_VERSION = "DNGVersion";
-    field public static final String TAG_EXIF_VERSION = "ExifVersion";
-    field public static final String TAG_EXPOSURE_BIAS_VALUE = "ExposureBiasValue";
-    field public static final String TAG_EXPOSURE_INDEX = "ExposureIndex";
-    field public static final String TAG_EXPOSURE_MODE = "ExposureMode";
-    field public static final String TAG_EXPOSURE_PROGRAM = "ExposureProgram";
-    field public static final String TAG_EXPOSURE_TIME = "ExposureTime";
-    field public static final String TAG_FILE_SOURCE = "FileSource";
-    field public static final String TAG_FLASH = "Flash";
-    field public static final String TAG_FLASHPIX_VERSION = "FlashpixVersion";
-    field public static final String TAG_FLASH_ENERGY = "FlashEnergy";
-    field public static final String TAG_FOCAL_LENGTH = "FocalLength";
-    field public static final String TAG_FOCAL_LENGTH_IN_35MM_FILM = "FocalLengthIn35mmFilm";
-    field public static final String TAG_FOCAL_PLANE_RESOLUTION_UNIT = "FocalPlaneResolutionUnit";
-    field public static final String TAG_FOCAL_PLANE_X_RESOLUTION = "FocalPlaneXResolution";
-    field public static final String TAG_FOCAL_PLANE_Y_RESOLUTION = "FocalPlaneYResolution";
-    field public static final String TAG_F_NUMBER = "FNumber";
-    field public static final String TAG_GAIN_CONTROL = "GainControl";
-    field public static final String TAG_GPS_ALTITUDE = "GPSAltitude";
-    field public static final String TAG_GPS_ALTITUDE_REF = "GPSAltitudeRef";
-    field public static final String TAG_GPS_AREA_INFORMATION = "GPSAreaInformation";
-    field public static final String TAG_GPS_DATESTAMP = "GPSDateStamp";
-    field public static final String TAG_GPS_DEST_BEARING = "GPSDestBearing";
-    field public static final String TAG_GPS_DEST_BEARING_REF = "GPSDestBearingRef";
-    field public static final String TAG_GPS_DEST_DISTANCE = "GPSDestDistance";
-    field public static final String TAG_GPS_DEST_DISTANCE_REF = "GPSDestDistanceRef";
-    field public static final String TAG_GPS_DEST_LATITUDE = "GPSDestLatitude";
-    field public static final String TAG_GPS_DEST_LATITUDE_REF = "GPSDestLatitudeRef";
-    field public static final String TAG_GPS_DEST_LONGITUDE = "GPSDestLongitude";
-    field public static final String TAG_GPS_DEST_LONGITUDE_REF = "GPSDestLongitudeRef";
-    field public static final String TAG_GPS_DIFFERENTIAL = "GPSDifferential";
-    field public static final String TAG_GPS_DOP = "GPSDOP";
-    field public static final String TAG_GPS_IMG_DIRECTION = "GPSImgDirection";
-    field public static final String TAG_GPS_IMG_DIRECTION_REF = "GPSImgDirectionRef";
-    field public static final String TAG_GPS_LATITUDE = "GPSLatitude";
-    field public static final String TAG_GPS_LATITUDE_REF = "GPSLatitudeRef";
-    field public static final String TAG_GPS_LONGITUDE = "GPSLongitude";
-    field public static final String TAG_GPS_LONGITUDE_REF = "GPSLongitudeRef";
-    field public static final String TAG_GPS_MAP_DATUM = "GPSMapDatum";
-    field public static final String TAG_GPS_MEASURE_MODE = "GPSMeasureMode";
-    field public static final String TAG_GPS_PROCESSING_METHOD = "GPSProcessingMethod";
-    field public static final String TAG_GPS_SATELLITES = "GPSSatellites";
-    field public static final String TAG_GPS_SPEED = "GPSSpeed";
-    field public static final String TAG_GPS_SPEED_REF = "GPSSpeedRef";
-    field public static final String TAG_GPS_STATUS = "GPSStatus";
-    field public static final String TAG_GPS_TIMESTAMP = "GPSTimeStamp";
-    field public static final String TAG_GPS_TRACK = "GPSTrack";
-    field public static final String TAG_GPS_TRACK_REF = "GPSTrackRef";
-    field public static final String TAG_GPS_VERSION_ID = "GPSVersionID";
-    field public static final String TAG_IMAGE_DESCRIPTION = "ImageDescription";
-    field public static final String TAG_IMAGE_LENGTH = "ImageLength";
-    field public static final String TAG_IMAGE_UNIQUE_ID = "ImageUniqueID";
-    field public static final String TAG_IMAGE_WIDTH = "ImageWidth";
-    field public static final String TAG_INTEROPERABILITY_INDEX = "InteroperabilityIndex";
-    field @Deprecated public static final String TAG_ISO = "ISOSpeedRatings";
-    field public static final String TAG_ISO_SPEED_RATINGS = "ISOSpeedRatings";
-    field public static final String TAG_JPEG_INTERCHANGE_FORMAT = "JPEGInterchangeFormat";
-    field public static final String TAG_JPEG_INTERCHANGE_FORMAT_LENGTH = "JPEGInterchangeFormatLength";
-    field public static final String TAG_LIGHT_SOURCE = "LightSource";
-    field public static final String TAG_MAKE = "Make";
-    field public static final String TAG_MAKER_NOTE = "MakerNote";
-    field public static final String TAG_MAX_APERTURE_VALUE = "MaxApertureValue";
-    field public static final String TAG_METERING_MODE = "MeteringMode";
-    field public static final String TAG_MODEL = "Model";
-    field public static final String TAG_NEW_SUBFILE_TYPE = "NewSubfileType";
-    field public static final String TAG_OECF = "OECF";
-    field public static final String TAG_OFFSET_TIME = "OffsetTime";
-    field public static final String TAG_OFFSET_TIME_DIGITIZED = "OffsetTimeDigitized";
-    field public static final String TAG_OFFSET_TIME_ORIGINAL = "OffsetTimeOriginal";
-    field public static final String TAG_ORF_ASPECT_FRAME = "AspectFrame";
-    field public static final String TAG_ORF_PREVIEW_IMAGE_LENGTH = "PreviewImageLength";
-    field public static final String TAG_ORF_PREVIEW_IMAGE_START = "PreviewImageStart";
-    field public static final String TAG_ORF_THUMBNAIL_IMAGE = "ThumbnailImage";
-    field public static final String TAG_ORIENTATION = "Orientation";
-    field public static final String TAG_PHOTOMETRIC_INTERPRETATION = "PhotometricInterpretation";
-    field public static final String TAG_PIXEL_X_DIMENSION = "PixelXDimension";
-    field public static final String TAG_PIXEL_Y_DIMENSION = "PixelYDimension";
-    field public static final String TAG_PLANAR_CONFIGURATION = "PlanarConfiguration";
-    field public static final String TAG_PRIMARY_CHROMATICITIES = "PrimaryChromaticities";
-    field public static final String TAG_REFERENCE_BLACK_WHITE = "ReferenceBlackWhite";
-    field public static final String TAG_RELATED_SOUND_FILE = "RelatedSoundFile";
-    field public static final String TAG_RESOLUTION_UNIT = "ResolutionUnit";
-    field public static final String TAG_ROWS_PER_STRIP = "RowsPerStrip";
-    field public static final String TAG_RW2_ISO = "ISO";
-    field public static final String TAG_RW2_JPG_FROM_RAW = "JpgFromRaw";
-    field public static final String TAG_RW2_SENSOR_BOTTOM_BORDER = "SensorBottomBorder";
-    field public static final String TAG_RW2_SENSOR_LEFT_BORDER = "SensorLeftBorder";
-    field public static final String TAG_RW2_SENSOR_RIGHT_BORDER = "SensorRightBorder";
-    field public static final String TAG_RW2_SENSOR_TOP_BORDER = "SensorTopBorder";
-    field public static final String TAG_SAMPLES_PER_PIXEL = "SamplesPerPixel";
-    field public static final String TAG_SATURATION = "Saturation";
-    field public static final String TAG_SCENE_CAPTURE_TYPE = "SceneCaptureType";
-    field public static final String TAG_SCENE_TYPE = "SceneType";
-    field public static final String TAG_SENSING_METHOD = "SensingMethod";
-    field public static final String TAG_SHARPNESS = "Sharpness";
-    field public static final String TAG_SHUTTER_SPEED_VALUE = "ShutterSpeedValue";
-    field public static final String TAG_SOFTWARE = "Software";
-    field public static final String TAG_SPATIAL_FREQUENCY_RESPONSE = "SpatialFrequencyResponse";
-    field public static final String TAG_SPECTRAL_SENSITIVITY = "SpectralSensitivity";
-    field public static final String TAG_STRIP_BYTE_COUNTS = "StripByteCounts";
-    field public static final String TAG_STRIP_OFFSETS = "StripOffsets";
-    field public static final String TAG_SUBFILE_TYPE = "SubfileType";
-    field public static final String TAG_SUBJECT_AREA = "SubjectArea";
-    field public static final String TAG_SUBJECT_DISTANCE = "SubjectDistance";
-    field public static final String TAG_SUBJECT_DISTANCE_RANGE = "SubjectDistanceRange";
-    field public static final String TAG_SUBJECT_LOCATION = "SubjectLocation";
-    field public static final String TAG_SUBSEC_TIME = "SubSecTime";
-    field @Deprecated public static final String TAG_SUBSEC_TIME_DIG = "SubSecTimeDigitized";
-    field public static final String TAG_SUBSEC_TIME_DIGITIZED = "SubSecTimeDigitized";
-    field @Deprecated public static final String TAG_SUBSEC_TIME_ORIG = "SubSecTimeOriginal";
-    field public static final String TAG_SUBSEC_TIME_ORIGINAL = "SubSecTimeOriginal";
-    field public static final String TAG_THUMBNAIL_IMAGE_LENGTH = "ThumbnailImageLength";
-    field public static final String TAG_THUMBNAIL_IMAGE_WIDTH = "ThumbnailImageWidth";
-    field public static final String TAG_THUMBNAIL_ORIENTATION = "ThumbnailOrientation";
-    field public static final String TAG_TRANSFER_FUNCTION = "TransferFunction";
-    field public static final String TAG_USER_COMMENT = "UserComment";
-    field public static final String TAG_WHITE_BALANCE = "WhiteBalance";
-    field public static final String TAG_WHITE_POINT = "WhitePoint";
-    field public static final String TAG_XMP = "Xmp";
-    field public static final String TAG_X_RESOLUTION = "XResolution";
-    field public static final String TAG_Y_CB_CR_COEFFICIENTS = "YCbCrCoefficients";
-    field public static final String TAG_Y_CB_CR_POSITIONING = "YCbCrPositioning";
-    field public static final String TAG_Y_CB_CR_SUB_SAMPLING = "YCbCrSubSampling";
-    field public static final String TAG_Y_RESOLUTION = "YResolution";
-    field public static final int WHITEBALANCE_AUTO = 0; // 0x0
-    field public static final int WHITEBALANCE_MANUAL = 1; // 0x1
-  }
-
-  public class FaceDetector {
-    ctor public FaceDetector(int, int, int);
-    method public int findFaces(android.graphics.Bitmap, android.media.FaceDetector.Face[]);
-  }
-
-  public class FaceDetector.Face {
-    method public float confidence();
-    method public float eyesDistance();
-    method public void getMidPoint(android.graphics.PointF);
-    method public float pose(int);
-    field public static final float CONFIDENCE_THRESHOLD = 0.4f;
-    field public static final int EULER_X = 0; // 0x0
-    field public static final int EULER_Y = 1; // 0x1
-    field public static final int EULER_Z = 2; // 0x2
-  }
-
-  public abstract class Image implements java.lang.AutoCloseable {
-    method public abstract void close();
-    method public android.graphics.Rect getCropRect();
-    method public abstract int getFormat();
-    method @Nullable public android.hardware.HardwareBuffer getHardwareBuffer();
-    method public abstract int getHeight();
-    method public abstract android.media.Image.Plane[] getPlanes();
-    method public abstract long getTimestamp();
-    method public abstract int getWidth();
-    method public void setCropRect(android.graphics.Rect);
-    method public void setTimestamp(long);
-  }
-
-  public abstract static class Image.Plane {
-    method public abstract java.nio.ByteBuffer getBuffer();
-    method public abstract int getPixelStride();
-    method public abstract int getRowStride();
-  }
-
-  public class ImageReader implements java.lang.AutoCloseable {
-    method public android.media.Image acquireLatestImage();
-    method public android.media.Image acquireNextImage();
-    method public void close();
-    method public void discardFreeBuffers();
-    method public int getHeight();
-    method public int getImageFormat();
-    method public int getMaxImages();
-    method public android.view.Surface getSurface();
-    method public int getWidth();
-    method @NonNull public static android.media.ImageReader newInstance(@IntRange(from=1) int, @IntRange(from=1) int, int, @IntRange(from=1) int);
-    method @NonNull public static android.media.ImageReader newInstance(@IntRange(from=1) int, @IntRange(from=1) int, int, @IntRange(from=1) int, long);
-    method public void setOnImageAvailableListener(android.media.ImageReader.OnImageAvailableListener, android.os.Handler);
-  }
-
-  public static interface ImageReader.OnImageAvailableListener {
-    method public void onImageAvailable(android.media.ImageReader);
-  }
-
-  public class ImageWriter implements java.lang.AutoCloseable {
-    method public void close();
-    method public android.media.Image dequeueInputImage();
-    method public int getFormat();
-    method public int getMaxImages();
-    method @NonNull public static android.media.ImageWriter newInstance(@NonNull android.view.Surface, @IntRange(from=1) int);
-    method @NonNull public static android.media.ImageWriter newInstance(@NonNull android.view.Surface, @IntRange(from=1) int, int);
-    method public void queueInputImage(android.media.Image);
-    method public void setOnImageReleasedListener(android.media.ImageWriter.OnImageReleasedListener, android.os.Handler);
-  }
-
-  public static interface ImageWriter.OnImageReleasedListener {
-    method public void onImageReleased(android.media.ImageWriter);
-  }
-
-  public class JetPlayer {
-    method public boolean clearQueue();
-    method public Object clone() throws java.lang.CloneNotSupportedException;
-    method public boolean closeJetFile();
-    method protected void finalize();
-    method public static android.media.JetPlayer getJetPlayer();
-    method public static int getMaxTracks();
-    method public boolean loadJetFile(String);
-    method public boolean loadJetFile(android.content.res.AssetFileDescriptor);
-    method public boolean pause();
-    method public boolean play();
-    method public boolean queueJetSegment(int, int, int, int, int, byte);
-    method public boolean queueJetSegmentMuteArray(int, int, int, int, boolean[], byte);
-    method public void release();
-    method public void setEventListener(android.media.JetPlayer.OnJetEventListener);
-    method public void setEventListener(android.media.JetPlayer.OnJetEventListener, android.os.Handler);
-    method public boolean setMuteArray(boolean[], boolean);
-    method public boolean setMuteFlag(int, boolean, boolean);
-    method public boolean setMuteFlags(int, boolean);
-    method public boolean triggerClip(int);
-  }
-
-  public static interface JetPlayer.OnJetEventListener {
-    method public void onJetEvent(android.media.JetPlayer, short, byte, byte, byte, byte);
-    method public void onJetNumQueuedSegmentUpdate(android.media.JetPlayer, int);
-    method public void onJetPauseUpdate(android.media.JetPlayer, int);
-    method public void onJetUserIdUpdate(android.media.JetPlayer, int, int);
-  }
-
-  public class MediaActionSound {
-    ctor public MediaActionSound();
-    method public void load(int);
-    method public void play(int);
-    method public void release();
-    field public static final int FOCUS_COMPLETE = 1; // 0x1
-    field public static final int SHUTTER_CLICK = 0; // 0x0
-    field public static final int START_VIDEO_RECORDING = 2; // 0x2
-    field public static final int STOP_VIDEO_RECORDING = 3; // 0x3
-  }
-
-  public final class MediaCas implements java.lang.AutoCloseable {
-    ctor public MediaCas(int) throws android.media.MediaCasException.UnsupportedCasException;
-    ctor public MediaCas(@NonNull android.content.Context, int, @Nullable String, int) throws android.media.MediaCasException.UnsupportedCasException;
-    method public void close();
-    method public static android.media.MediaCas.PluginDescriptor[] enumeratePlugins();
-    method protected void finalize();
-    method public static boolean isSystemIdSupported(int);
-    method public android.media.MediaCas.Session openSession() throws android.media.MediaCasException;
-    method @Nullable public android.media.MediaCas.Session openSession(int, int) throws android.media.MediaCasException;
-    method public void processEmm(@NonNull byte[], int, int) throws android.media.MediaCasException;
-    method public void processEmm(@NonNull byte[]) throws android.media.MediaCasException;
-    method public void provision(@NonNull String) throws android.media.MediaCasException;
-    method public void refreshEntitlements(int, @Nullable byte[]) throws android.media.MediaCasException;
-    method public void sendEvent(int, int, @Nullable byte[]) throws android.media.MediaCasException;
-    method public void setEventListener(@Nullable android.media.MediaCas.EventListener, @Nullable android.os.Handler);
-    method public void setPrivateData(@NonNull byte[]) throws android.media.MediaCasException;
-    field public static final int PLUGIN_STATUS_PHYSICAL_MODULE_CHANGED = 0; // 0x0
-    field public static final int PLUGIN_STATUS_SESSION_NUMBER_CHANGED = 1; // 0x1
-    field public static final int SCRAMBLING_MODE_AES128 = 9; // 0x9
-    field public static final int SCRAMBLING_MODE_AES_ECB = 10; // 0xa
-    field public static final int SCRAMBLING_MODE_AES_SCTE52 = 11; // 0xb
-    field public static final int SCRAMBLING_MODE_DVB_CISSA_V1 = 6; // 0x6
-    field public static final int SCRAMBLING_MODE_DVB_CSA1 = 1; // 0x1
-    field public static final int SCRAMBLING_MODE_DVB_CSA2 = 2; // 0x2
-    field public static final int SCRAMBLING_MODE_DVB_CSA3_ENHANCE = 5; // 0x5
-    field public static final int SCRAMBLING_MODE_DVB_CSA3_MINIMAL = 4; // 0x4
-    field public static final int SCRAMBLING_MODE_DVB_CSA3_STANDARD = 3; // 0x3
-    field public static final int SCRAMBLING_MODE_DVB_IDSA = 7; // 0x7
-    field public static final int SCRAMBLING_MODE_MULTI2 = 8; // 0x8
-    field public static final int SCRAMBLING_MODE_RESERVED = 0; // 0x0
-    field public static final int SCRAMBLING_MODE_TDES_ECB = 12; // 0xc
-    field public static final int SCRAMBLING_MODE_TDES_SCTE52 = 13; // 0xd
-    field public static final int SESSION_USAGE_LIVE = 0; // 0x0
-    field public static final int SESSION_USAGE_PLAYBACK = 1; // 0x1
-    field public static final int SESSION_USAGE_RECORD = 2; // 0x2
-    field public static final int SESSION_USAGE_TIMESHIFT = 3; // 0x3
-  }
-
-  public static interface MediaCas.EventListener {
-    method public void onEvent(@NonNull android.media.MediaCas, int, int, @Nullable byte[]);
-    method public default void onPluginStatusUpdate(@NonNull android.media.MediaCas, int, int);
-    method public default void onResourceLost(@NonNull android.media.MediaCas);
-    method public default void onSessionEvent(@NonNull android.media.MediaCas, @NonNull android.media.MediaCas.Session, int, int, @Nullable byte[]);
-  }
-
-  public static class MediaCas.PluginDescriptor {
-    method @NonNull public String getName();
-    method public int getSystemId();
-  }
-
-  public final class MediaCas.Session implements java.lang.AutoCloseable {
-    method public void close();
-    method @NonNull public byte[] getSessionId();
-    method public void processEcm(@NonNull byte[], int, int) throws android.media.MediaCasException;
-    method public void processEcm(@NonNull byte[]) throws android.media.MediaCasException;
-    method public void sendSessionEvent(int, int, @Nullable byte[]) throws android.media.MediaCasException;
-    method public void setPrivateData(@NonNull byte[]) throws android.media.MediaCasException;
-  }
-
-  public class MediaCasException extends java.lang.Exception {
-  }
-
-  public static final class MediaCasException.DeniedByServerException extends android.media.MediaCasException {
-  }
-
-  public static final class MediaCasException.InsufficientResourceException extends android.media.MediaCasException {
-  }
-
-  public static final class MediaCasException.NotProvisionedException extends android.media.MediaCasException {
-  }
-
-  public static final class MediaCasException.ResourceBusyException extends android.media.MediaCasException {
-  }
-
-  public static final class MediaCasException.UnsupportedCasException extends android.media.MediaCasException {
-  }
-
-  public class MediaCasStateException extends java.lang.IllegalStateException {
-    method @NonNull public String getDiagnosticInfo();
-  }
-
-  public final class MediaCodec {
-    method public void configure(@Nullable android.media.MediaFormat, @Nullable android.view.Surface, @Nullable android.media.MediaCrypto, int);
-    method public void configure(@Nullable android.media.MediaFormat, @Nullable android.view.Surface, int, @Nullable android.media.MediaDescrambler);
-    method @NonNull public static android.media.MediaCodec createByCodecName(@NonNull String) throws java.io.IOException;
-    method @NonNull public static android.media.MediaCodec createDecoderByType(@NonNull String) throws java.io.IOException;
-    method @NonNull public static android.media.MediaCodec createEncoderByType(@NonNull String) throws java.io.IOException;
-    method @NonNull public android.view.Surface createInputSurface();
-    method @NonNull public static android.view.Surface createPersistentInputSurface();
-    method public int dequeueInputBuffer(long);
-    method public int dequeueOutputBuffer(@NonNull android.media.MediaCodec.BufferInfo, long);
-    method protected void finalize();
-    method public void flush();
-    method @NonNull public String getCanonicalName();
-    method @NonNull public android.media.MediaCodecInfo getCodecInfo();
-    method @Nullable public java.nio.ByteBuffer getInputBuffer(int);
-    method @Deprecated @NonNull public java.nio.ByteBuffer[] getInputBuffers();
-    method @NonNull public android.media.MediaFormat getInputFormat();
-    method @Nullable public android.media.Image getInputImage(int);
-    method public android.os.PersistableBundle getMetrics();
-    method @NonNull public String getName();
-    method @Nullable public java.nio.ByteBuffer getOutputBuffer(int);
-    method @Deprecated @NonNull public java.nio.ByteBuffer[] getOutputBuffers();
-    method @NonNull public android.media.MediaFormat getOutputFormat();
-    method @NonNull public android.media.MediaFormat getOutputFormat(int);
-    method @NonNull public android.media.MediaCodec.OutputFrame getOutputFrame(int);
-    method @Nullable public android.media.Image getOutputImage(int);
-    method @NonNull public android.media.MediaCodec.QueueRequest getQueueRequest(int);
-    method @Nullable public static android.media.Image mapHardwareBuffer(@NonNull android.hardware.HardwareBuffer);
-    method public void queueInputBuffer(int, int, int, long, int) throws android.media.MediaCodec.CryptoException;
-    method public void queueSecureInputBuffer(int, int, @NonNull android.media.MediaCodec.CryptoInfo, long, int) throws android.media.MediaCodec.CryptoException;
-    method public void release();
-    method public void releaseOutputBuffer(int, boolean);
-    method public void releaseOutputBuffer(int, long);
-    method public void reset();
-    method public void setAudioPresentation(@NonNull android.media.AudioPresentation);
-    method public void setCallback(@Nullable android.media.MediaCodec.Callback, @Nullable android.os.Handler);
-    method public void setCallback(@Nullable android.media.MediaCodec.Callback);
-    method public void setInputSurface(@NonNull android.view.Surface);
-    method public void setOnFrameRenderedListener(@Nullable android.media.MediaCodec.OnFrameRenderedListener, @Nullable android.os.Handler);
-    method public void setOutputSurface(@NonNull android.view.Surface);
-    method public void setParameters(@Nullable android.os.Bundle);
-    method public void setVideoScalingMode(int);
-    method public void signalEndOfInputStream();
-    method public void start();
-    method public void stop();
-    field public static final int BUFFER_FLAG_CODEC_CONFIG = 2; // 0x2
-    field public static final int BUFFER_FLAG_END_OF_STREAM = 4; // 0x4
-    field public static final int BUFFER_FLAG_KEY_FRAME = 1; // 0x1
-    field public static final int BUFFER_FLAG_PARTIAL_FRAME = 8; // 0x8
-    field @Deprecated public static final int BUFFER_FLAG_SYNC_FRAME = 1; // 0x1
-    field public static final int CONFIGURE_FLAG_ENCODE = 1; // 0x1
-    field public static final int CONFIGURE_FLAG_USE_BLOCK_MODEL = 2; // 0x2
-    field public static final int CRYPTO_MODE_AES_CBC = 2; // 0x2
-    field public static final int CRYPTO_MODE_AES_CTR = 1; // 0x1
-    field public static final int CRYPTO_MODE_UNENCRYPTED = 0; // 0x0
-    field @Deprecated public static final int INFO_OUTPUT_BUFFERS_CHANGED = -3; // 0xfffffffd
-    field public static final int INFO_OUTPUT_FORMAT_CHANGED = -2; // 0xfffffffe
-    field public static final int INFO_TRY_AGAIN_LATER = -1; // 0xffffffff
-    field public static final String PARAMETER_KEY_HDR10_PLUS_INFO = "hdr10-plus-info";
-    field public static final String PARAMETER_KEY_LOW_LATENCY = "low-latency";
-    field public static final String PARAMETER_KEY_OFFSET_TIME = "time-offset-us";
-    field public static final String PARAMETER_KEY_REQUEST_SYNC_FRAME = "request-sync";
-    field public static final String PARAMETER_KEY_SUSPEND = "drop-input-frames";
-    field public static final String PARAMETER_KEY_SUSPEND_TIME = "drop-start-time-us";
-    field public static final String PARAMETER_KEY_VIDEO_BITRATE = "video-bitrate";
-    field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT = 1; // 0x1
-    field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING = 2; // 0x2
-  }
-
-  public static final class MediaCodec.BufferInfo {
-    ctor public MediaCodec.BufferInfo();
-    method public void set(int, int, long, int);
-    field public int flags;
-    field public int offset;
-    field public long presentationTimeUs;
-    field public int size;
-  }
-
-  public abstract static class MediaCodec.Callback {
-    ctor public MediaCodec.Callback();
-    method public abstract void onError(@NonNull android.media.MediaCodec, @NonNull android.media.MediaCodec.CodecException);
-    method public abstract void onInputBufferAvailable(@NonNull android.media.MediaCodec, int);
-    method public abstract void onOutputBufferAvailable(@NonNull android.media.MediaCodec, int, @NonNull android.media.MediaCodec.BufferInfo);
-    method public abstract void onOutputFormatChanged(@NonNull android.media.MediaCodec, @NonNull android.media.MediaFormat);
-  }
-
-  public static final class MediaCodec.CodecException extends java.lang.IllegalStateException {
-    method @NonNull public String getDiagnosticInfo();
-    method public int getErrorCode();
-    method public boolean isRecoverable();
-    method public boolean isTransient();
-    field public static final int ERROR_INSUFFICIENT_RESOURCE = 1100; // 0x44c
-    field public static final int ERROR_RECLAIMED = 1101; // 0x44d
-  }
-
-  public static final class MediaCodec.CryptoException extends java.lang.RuntimeException {
-    ctor public MediaCodec.CryptoException(int, @Nullable String);
-    method public int getErrorCode();
-    field public static final int ERROR_FRAME_TOO_LARGE = 8; // 0x8
-    field public static final int ERROR_INSUFFICIENT_OUTPUT_PROTECTION = 4; // 0x4
-    field public static final int ERROR_INSUFFICIENT_SECURITY = 7; // 0x7
-    field public static final int ERROR_KEY_EXPIRED = 2; // 0x2
-    field public static final int ERROR_LOST_STATE = 9; // 0x9
-    field public static final int ERROR_NO_KEY = 1; // 0x1
-    field public static final int ERROR_RESOURCE_BUSY = 3; // 0x3
-    field public static final int ERROR_SESSION_NOT_OPENED = 5; // 0x5
-    field public static final int ERROR_UNSUPPORTED_OPERATION = 6; // 0x6
-  }
-
-  public static final class MediaCodec.CryptoInfo {
-    ctor public MediaCodec.CryptoInfo();
-    method public void set(int, @NonNull int[], @NonNull int[], @NonNull byte[], @NonNull byte[], int);
-    method public void setPattern(android.media.MediaCodec.CryptoInfo.Pattern);
-    field public byte[] iv;
-    field public byte[] key;
-    field public int mode;
-    field public int[] numBytesOfClearData;
-    field public int[] numBytesOfEncryptedData;
-    field public int numSubSamples;
-  }
-
-  public static final class MediaCodec.CryptoInfo.Pattern {
-    ctor public MediaCodec.CryptoInfo.Pattern(int, int);
-    method public int getEncryptBlocks();
-    method public int getSkipBlocks();
-    method public void set(int, int);
-  }
-
-  public class MediaCodec.IncompatibleWithBlockModelException extends java.lang.RuntimeException {
-  }
-
-  public static final class MediaCodec.LinearBlock {
-    method protected void finalize();
-    method public static boolean isCodecCopyFreeCompatible(@NonNull String[]);
-    method public boolean isMappable();
-    method @NonNull public java.nio.ByteBuffer map();
-    method @Nullable public static android.media.MediaCodec.LinearBlock obtain(int, @NonNull String[]);
-    method public void recycle();
-  }
-
-  public static final class MediaCodec.MetricsConstants {
-    field public static final String CODEC = "android.media.mediacodec.codec";
-    field public static final String ENCODER = "android.media.mediacodec.encoder";
-    field public static final String HEIGHT = "android.media.mediacodec.height";
-    field public static final String MIME_TYPE = "android.media.mediacodec.mime";
-    field public static final String MODE = "android.media.mediacodec.mode";
-    field public static final String MODE_AUDIO = "audio";
-    field public static final String MODE_VIDEO = "video";
-    field public static final String ROTATION = "android.media.mediacodec.rotation";
-    field public static final String SECURE = "android.media.mediacodec.secure";
-    field public static final String WIDTH = "android.media.mediacodec.width";
-  }
-
-  public static interface MediaCodec.OnFrameRenderedListener {
-    method public void onFrameRendered(@NonNull android.media.MediaCodec, long, long);
-  }
-
-  public static final class MediaCodec.OutputFrame {
-    method @NonNull public java.util.Set<java.lang.String> getChangedKeys();
-    method public int getFlags();
-    method @NonNull public android.media.MediaFormat getFormat();
-    method @Nullable public android.hardware.HardwareBuffer getHardwareBuffer();
-    method @Nullable public android.media.MediaCodec.LinearBlock getLinearBlock();
-    method public long getPresentationTimeUs();
-  }
-
-  public final class MediaCodec.QueueRequest {
-    method public void queue();
-    method @NonNull public android.media.MediaCodec.QueueRequest setByteBufferParameter(@NonNull String, @NonNull java.nio.ByteBuffer);
-    method @NonNull public android.media.MediaCodec.QueueRequest setEncryptedLinearBlock(@NonNull android.media.MediaCodec.LinearBlock, int, int, @NonNull android.media.MediaCodec.CryptoInfo);
-    method @NonNull public android.media.MediaCodec.QueueRequest setFlags(int);
-    method @NonNull public android.media.MediaCodec.QueueRequest setFloatParameter(@NonNull String, float);
-    method @NonNull public android.media.MediaCodec.QueueRequest setHardwareBuffer(@NonNull android.hardware.HardwareBuffer);
-    method @NonNull public android.media.MediaCodec.QueueRequest setIntegerParameter(@NonNull String, int);
-    method @NonNull public android.media.MediaCodec.QueueRequest setLinearBlock(@NonNull android.media.MediaCodec.LinearBlock, int, int);
-    method @NonNull public android.media.MediaCodec.QueueRequest setLongParameter(@NonNull String, long);
-    method @NonNull public android.media.MediaCodec.QueueRequest setPresentationTimeUs(long);
-    method @NonNull public android.media.MediaCodec.QueueRequest setStringParameter(@NonNull String, @NonNull String);
-  }
-
-  public final class MediaCodecInfo {
-    method @NonNull public String getCanonicalName();
-    method public android.media.MediaCodecInfo.CodecCapabilities getCapabilitiesForType(String);
-    method @NonNull public String getName();
-    method public String[] getSupportedTypes();
-    method public boolean isAlias();
-    method public boolean isEncoder();
-    method public boolean isHardwareAccelerated();
-    method public boolean isSoftwareOnly();
-    method public boolean isVendor();
-  }
-
-  public static final class MediaCodecInfo.AudioCapabilities {
-    method public android.util.Range<java.lang.Integer> getBitrateRange();
-    method public int getMaxInputChannelCount();
-    method public android.util.Range<java.lang.Integer>[] getSupportedSampleRateRanges();
-    method public int[] getSupportedSampleRates();
-    method public boolean isSampleRateSupported(int);
-  }
-
-  public static final class MediaCodecInfo.CodecCapabilities {
-    ctor public MediaCodecInfo.CodecCapabilities();
-    method public static android.media.MediaCodecInfo.CodecCapabilities createFromProfileLevel(String, int, int);
-    method public android.media.MediaCodecInfo.AudioCapabilities getAudioCapabilities();
-    method public android.media.MediaFormat getDefaultFormat();
-    method public android.media.MediaCodecInfo.EncoderCapabilities getEncoderCapabilities();
-    method public int getMaxSupportedInstances();
-    method public String getMimeType();
-    method public android.media.MediaCodecInfo.VideoCapabilities getVideoCapabilities();
-    method public boolean isFeatureRequired(String);
-    method public boolean isFeatureSupported(String);
-    method public boolean isFormatSupported(android.media.MediaFormat);
-    field @Deprecated public static final int COLOR_Format12bitRGB444 = 3; // 0x3
-    field @Deprecated public static final int COLOR_Format16bitARGB1555 = 5; // 0x5
-    field @Deprecated public static final int COLOR_Format16bitARGB4444 = 4; // 0x4
-    field @Deprecated public static final int COLOR_Format16bitBGR565 = 7; // 0x7
-    field public static final int COLOR_Format16bitRGB565 = 6; // 0x6
-    field @Deprecated public static final int COLOR_Format18BitBGR666 = 41; // 0x29
-    field @Deprecated public static final int COLOR_Format18bitARGB1665 = 9; // 0x9
-    field @Deprecated public static final int COLOR_Format18bitRGB666 = 8; // 0x8
-    field @Deprecated public static final int COLOR_Format19bitARGB1666 = 10; // 0xa
-    field @Deprecated public static final int COLOR_Format24BitABGR6666 = 43; // 0x2b
-    field @Deprecated public static final int COLOR_Format24BitARGB6666 = 42; // 0x2a
-    field @Deprecated public static final int COLOR_Format24bitARGB1887 = 13; // 0xd
-    field public static final int COLOR_Format24bitBGR888 = 12; // 0xc
-    field @Deprecated public static final int COLOR_Format24bitRGB888 = 11; // 0xb
-    field @Deprecated public static final int COLOR_Format25bitARGB1888 = 14; // 0xe
-    field public static final int COLOR_Format32bitABGR8888 = 2130747392; // 0x7f00a000
-    field @Deprecated public static final int COLOR_Format32bitARGB8888 = 16; // 0x10
-    field @Deprecated public static final int COLOR_Format32bitBGRA8888 = 15; // 0xf
-    field @Deprecated public static final int COLOR_Format8bitRGB332 = 2; // 0x2
-    field @Deprecated public static final int COLOR_FormatCbYCrY = 27; // 0x1b
-    field @Deprecated public static final int COLOR_FormatCrYCbY = 28; // 0x1c
-    field public static final int COLOR_FormatL16 = 36; // 0x24
-    field @Deprecated public static final int COLOR_FormatL2 = 33; // 0x21
-    field @Deprecated public static final int COLOR_FormatL24 = 37; // 0x25
-    field @Deprecated public static final int COLOR_FormatL32 = 38; // 0x26
-    field @Deprecated public static final int COLOR_FormatL4 = 34; // 0x22
-    field public static final int COLOR_FormatL8 = 35; // 0x23
-    field @Deprecated public static final int COLOR_FormatMonochrome = 1; // 0x1
-    field public static final int COLOR_FormatRGBAFlexible = 2134288520; // 0x7f36a888
-    field public static final int COLOR_FormatRGBFlexible = 2134292616; // 0x7f36b888
-    field public static final int COLOR_FormatRawBayer10bit = 31; // 0x1f
-    field public static final int COLOR_FormatRawBayer8bit = 30; // 0x1e
-    field public static final int COLOR_FormatRawBayer8bitcompressed = 32; // 0x20
-    field public static final int COLOR_FormatSurface = 2130708361; // 0x7f000789
-    field @Deprecated public static final int COLOR_FormatYCbYCr = 25; // 0x19
-    field @Deprecated public static final int COLOR_FormatYCrYCb = 26; // 0x1a
-    field @Deprecated public static final int COLOR_FormatYUV411PackedPlanar = 18; // 0x12
-    field @Deprecated public static final int COLOR_FormatYUV411Planar = 17; // 0x11
-    field public static final int COLOR_FormatYUV420Flexible = 2135033992; // 0x7f420888
-    field @Deprecated public static final int COLOR_FormatYUV420PackedPlanar = 20; // 0x14
-    field @Deprecated public static final int COLOR_FormatYUV420PackedSemiPlanar = 39; // 0x27
-    field @Deprecated public static final int COLOR_FormatYUV420Planar = 19; // 0x13
-    field @Deprecated public static final int COLOR_FormatYUV420SemiPlanar = 21; // 0x15
-    field public static final int COLOR_FormatYUV422Flexible = 2135042184; // 0x7f422888
-    field @Deprecated public static final int COLOR_FormatYUV422PackedPlanar = 23; // 0x17
-    field @Deprecated public static final int COLOR_FormatYUV422PackedSemiPlanar = 40; // 0x28
-    field @Deprecated public static final int COLOR_FormatYUV422Planar = 22; // 0x16
-    field @Deprecated public static final int COLOR_FormatYUV422SemiPlanar = 24; // 0x18
-    field public static final int COLOR_FormatYUV444Flexible = 2135181448; // 0x7f444888
-    field @Deprecated public static final int COLOR_FormatYUV444Interleaved = 29; // 0x1d
-    field @Deprecated public static final int COLOR_QCOM_FormatYUV420SemiPlanar = 2141391872; // 0x7fa30c00
-    field @Deprecated public static final int COLOR_TI_FormatYUV420PackedSemiPlanar = 2130706688; // 0x7f000100
-    field public static final String FEATURE_AdaptivePlayback = "adaptive-playback";
-    field public static final String FEATURE_DynamicTimestamp = "dynamic-timestamp";
-    field public static final String FEATURE_FrameParsing = "frame-parsing";
-    field public static final String FEATURE_IntraRefresh = "intra-refresh";
-    field public static final String FEATURE_LowLatency = "low-latency";
-    field public static final String FEATURE_MultipleFrames = "multiple-frames";
-    field public static final String FEATURE_PartialFrame = "partial-frame";
-    field public static final String FEATURE_SecurePlayback = "secure-playback";
-    field public static final String FEATURE_TunneledPlayback = "tunneled-playback";
-    field public int[] colorFormats;
-    field public android.media.MediaCodecInfo.CodecProfileLevel[] profileLevels;
-  }
-
-  public static final class MediaCodecInfo.CodecProfileLevel {
-    ctor public MediaCodecInfo.CodecProfileLevel();
-    field public static final int AACObjectELD = 39; // 0x27
-    field public static final int AACObjectERLC = 17; // 0x11
-    field public static final int AACObjectERScalable = 20; // 0x14
-    field public static final int AACObjectHE = 5; // 0x5
-    field public static final int AACObjectHE_PS = 29; // 0x1d
-    field public static final int AACObjectLC = 2; // 0x2
-    field public static final int AACObjectLD = 23; // 0x17
-    field public static final int AACObjectLTP = 4; // 0x4
-    field public static final int AACObjectMain = 1; // 0x1
-    field public static final int AACObjectSSR = 3; // 0x3
-    field public static final int AACObjectScalable = 6; // 0x6
-    field public static final int AACObjectXHE = 42; // 0x2a
-    field public static final int AV1Level2 = 1; // 0x1
-    field public static final int AV1Level21 = 2; // 0x2
-    field public static final int AV1Level22 = 4; // 0x4
-    field public static final int AV1Level23 = 8; // 0x8
-    field public static final int AV1Level3 = 16; // 0x10
-    field public static final int AV1Level31 = 32; // 0x20
-    field public static final int AV1Level32 = 64; // 0x40
-    field public static final int AV1Level33 = 128; // 0x80
-    field public static final int AV1Level4 = 256; // 0x100
-    field public static final int AV1Level41 = 512; // 0x200
-    field public static final int AV1Level42 = 1024; // 0x400
-    field public static final int AV1Level43 = 2048; // 0x800
-    field public static final int AV1Level5 = 4096; // 0x1000
-    field public static final int AV1Level51 = 8192; // 0x2000
-    field public static final int AV1Level52 = 16384; // 0x4000
-    field public static final int AV1Level53 = 32768; // 0x8000
-    field public static final int AV1Level6 = 65536; // 0x10000
-    field public static final int AV1Level61 = 131072; // 0x20000
-    field public static final int AV1Level62 = 262144; // 0x40000
-    field public static final int AV1Level63 = 524288; // 0x80000
-    field public static final int AV1Level7 = 1048576; // 0x100000
-    field public static final int AV1Level71 = 2097152; // 0x200000
-    field public static final int AV1Level72 = 4194304; // 0x400000
-    field public static final int AV1Level73 = 8388608; // 0x800000
-    field public static final int AV1ProfileMain10 = 2; // 0x2
-    field public static final int AV1ProfileMain10HDR10 = 4096; // 0x1000
-    field public static final int AV1ProfileMain10HDR10Plus = 8192; // 0x2000
-    field public static final int AV1ProfileMain8 = 1; // 0x1
-    field public static final int AVCLevel1 = 1; // 0x1
-    field public static final int AVCLevel11 = 4; // 0x4
-    field public static final int AVCLevel12 = 8; // 0x8
-    field public static final int AVCLevel13 = 16; // 0x10
-    field public static final int AVCLevel1b = 2; // 0x2
-    field public static final int AVCLevel2 = 32; // 0x20
-    field public static final int AVCLevel21 = 64; // 0x40
-    field public static final int AVCLevel22 = 128; // 0x80
-    field public static final int AVCLevel3 = 256; // 0x100
-    field public static final int AVCLevel31 = 512; // 0x200
-    field public static final int AVCLevel32 = 1024; // 0x400
-    field public static final int AVCLevel4 = 2048; // 0x800
-    field public static final int AVCLevel41 = 4096; // 0x1000
-    field public static final int AVCLevel42 = 8192; // 0x2000
-    field public static final int AVCLevel5 = 16384; // 0x4000
-    field public static final int AVCLevel51 = 32768; // 0x8000
-    field public static final int AVCLevel52 = 65536; // 0x10000
-    field public static final int AVCLevel6 = 131072; // 0x20000
-    field public static final int AVCLevel61 = 262144; // 0x40000
-    field public static final int AVCLevel62 = 524288; // 0x80000
-    field public static final int AVCProfileBaseline = 1; // 0x1
-    field public static final int AVCProfileConstrainedBaseline = 65536; // 0x10000
-    field public static final int AVCProfileConstrainedHigh = 524288; // 0x80000
-    field public static final int AVCProfileExtended = 4; // 0x4
-    field public static final int AVCProfileHigh = 8; // 0x8
-    field public static final int AVCProfileHigh10 = 16; // 0x10
-    field public static final int AVCProfileHigh422 = 32; // 0x20
-    field public static final int AVCProfileHigh444 = 64; // 0x40
-    field public static final int AVCProfileMain = 2; // 0x2
-    field public static final int DolbyVisionLevelFhd24 = 4; // 0x4
-    field public static final int DolbyVisionLevelFhd30 = 8; // 0x8
-    field public static final int DolbyVisionLevelFhd60 = 16; // 0x10
-    field public static final int DolbyVisionLevelHd24 = 1; // 0x1
-    field public static final int DolbyVisionLevelHd30 = 2; // 0x2
-    field public static final int DolbyVisionLevelUhd24 = 32; // 0x20
-    field public static final int DolbyVisionLevelUhd30 = 64; // 0x40
-    field public static final int DolbyVisionLevelUhd48 = 128; // 0x80
-    field public static final int DolbyVisionLevelUhd60 = 256; // 0x100
-    field public static final int DolbyVisionProfileDvav110 = 1024; // 0x400
-    field public static final int DolbyVisionProfileDvavPen = 2; // 0x2
-    field public static final int DolbyVisionProfileDvavPer = 1; // 0x1
-    field public static final int DolbyVisionProfileDvavSe = 512; // 0x200
-    field public static final int DolbyVisionProfileDvheDen = 8; // 0x8
-    field public static final int DolbyVisionProfileDvheDer = 4; // 0x4
-    field public static final int DolbyVisionProfileDvheDtb = 128; // 0x80
-    field public static final int DolbyVisionProfileDvheDth = 64; // 0x40
-    field public static final int DolbyVisionProfileDvheDtr = 16; // 0x10
-    field public static final int DolbyVisionProfileDvheSt = 256; // 0x100
-    field public static final int DolbyVisionProfileDvheStn = 32; // 0x20
-    field public static final int H263Level10 = 1; // 0x1
-    field public static final int H263Level20 = 2; // 0x2
-    field public static final int H263Level30 = 4; // 0x4
-    field public static final int H263Level40 = 8; // 0x8
-    field public static final int H263Level45 = 16; // 0x10
-    field public static final int H263Level50 = 32; // 0x20
-    field public static final int H263Level60 = 64; // 0x40
-    field public static final int H263Level70 = 128; // 0x80
-    field public static final int H263ProfileBackwardCompatible = 4; // 0x4
-    field public static final int H263ProfileBaseline = 1; // 0x1
-    field public static final int H263ProfileH320Coding = 2; // 0x2
-    field public static final int H263ProfileHighCompression = 32; // 0x20
-    field public static final int H263ProfileHighLatency = 256; // 0x100
-    field public static final int H263ProfileISWV2 = 8; // 0x8
-    field public static final int H263ProfileISWV3 = 16; // 0x10
-    field public static final int H263ProfileInterlace = 128; // 0x80
-    field public static final int H263ProfileInternet = 64; // 0x40
-    field public static final int HEVCHighTierLevel1 = 2; // 0x2
-    field public static final int HEVCHighTierLevel2 = 8; // 0x8
-    field public static final int HEVCHighTierLevel21 = 32; // 0x20
-    field public static final int HEVCHighTierLevel3 = 128; // 0x80
-    field public static final int HEVCHighTierLevel31 = 512; // 0x200
-    field public static final int HEVCHighTierLevel4 = 2048; // 0x800
-    field public static final int HEVCHighTierLevel41 = 8192; // 0x2000
-    field public static final int HEVCHighTierLevel5 = 32768; // 0x8000
-    field public static final int HEVCHighTierLevel51 = 131072; // 0x20000
-    field public static final int HEVCHighTierLevel52 = 524288; // 0x80000
-    field public static final int HEVCHighTierLevel6 = 2097152; // 0x200000
-    field public static final int HEVCHighTierLevel61 = 8388608; // 0x800000
-    field public static final int HEVCHighTierLevel62 = 33554432; // 0x2000000
-    field public static final int HEVCMainTierLevel1 = 1; // 0x1
-    field public static final int HEVCMainTierLevel2 = 4; // 0x4
-    field public static final int HEVCMainTierLevel21 = 16; // 0x10
-    field public static final int HEVCMainTierLevel3 = 64; // 0x40
-    field public static final int HEVCMainTierLevel31 = 256; // 0x100
-    field public static final int HEVCMainTierLevel4 = 1024; // 0x400
-    field public static final int HEVCMainTierLevel41 = 4096; // 0x1000
-    field public static final int HEVCMainTierLevel5 = 16384; // 0x4000
-    field public static final int HEVCMainTierLevel51 = 65536; // 0x10000
-    field public static final int HEVCMainTierLevel52 = 262144; // 0x40000
-    field public static final int HEVCMainTierLevel6 = 1048576; // 0x100000
-    field public static final int HEVCMainTierLevel61 = 4194304; // 0x400000
-    field public static final int HEVCMainTierLevel62 = 16777216; // 0x1000000
-    field public static final int HEVCProfileMain = 1; // 0x1
-    field public static final int HEVCProfileMain10 = 2; // 0x2
-    field public static final int HEVCProfileMain10HDR10 = 4096; // 0x1000
-    field public static final int HEVCProfileMain10HDR10Plus = 8192; // 0x2000
-    field public static final int HEVCProfileMainStill = 4; // 0x4
-    field public static final int MPEG2LevelH14 = 2; // 0x2
-    field public static final int MPEG2LevelHL = 3; // 0x3
-    field public static final int MPEG2LevelHP = 4; // 0x4
-    field public static final int MPEG2LevelLL = 0; // 0x0
-    field public static final int MPEG2LevelML = 1; // 0x1
-    field public static final int MPEG2Profile422 = 2; // 0x2
-    field public static final int MPEG2ProfileHigh = 5; // 0x5
-    field public static final int MPEG2ProfileMain = 1; // 0x1
-    field public static final int MPEG2ProfileSNR = 3; // 0x3
-    field public static final int MPEG2ProfileSimple = 0; // 0x0
-    field public static final int MPEG2ProfileSpatial = 4; // 0x4
-    field public static final int MPEG4Level0 = 1; // 0x1
-    field public static final int MPEG4Level0b = 2; // 0x2
-    field public static final int MPEG4Level1 = 4; // 0x4
-    field public static final int MPEG4Level2 = 8; // 0x8
-    field public static final int MPEG4Level3 = 16; // 0x10
-    field public static final int MPEG4Level3b = 24; // 0x18
-    field public static final int MPEG4Level4 = 32; // 0x20
-    field public static final int MPEG4Level4a = 64; // 0x40
-    field public static final int MPEG4Level5 = 128; // 0x80
-    field public static final int MPEG4Level6 = 256; // 0x100
-    field public static final int MPEG4ProfileAdvancedCoding = 4096; // 0x1000
-    field public static final int MPEG4ProfileAdvancedCore = 8192; // 0x2000
-    field public static final int MPEG4ProfileAdvancedRealTime = 1024; // 0x400
-    field public static final int MPEG4ProfileAdvancedScalable = 16384; // 0x4000
-    field public static final int MPEG4ProfileAdvancedSimple = 32768; // 0x8000
-    field public static final int MPEG4ProfileBasicAnimated = 256; // 0x100
-    field public static final int MPEG4ProfileCore = 4; // 0x4
-    field public static final int MPEG4ProfileCoreScalable = 2048; // 0x800
-    field public static final int MPEG4ProfileHybrid = 512; // 0x200
-    field public static final int MPEG4ProfileMain = 8; // 0x8
-    field public static final int MPEG4ProfileNbit = 16; // 0x10
-    field public static final int MPEG4ProfileScalableTexture = 32; // 0x20
-    field public static final int MPEG4ProfileSimple = 1; // 0x1
-    field public static final int MPEG4ProfileSimpleFBA = 128; // 0x80
-    field public static final int MPEG4ProfileSimpleFace = 64; // 0x40
-    field public static final int MPEG4ProfileSimpleScalable = 2; // 0x2
-    field public static final int VP8Level_Version0 = 1; // 0x1
-    field public static final int VP8Level_Version1 = 2; // 0x2
-    field public static final int VP8Level_Version2 = 4; // 0x4
-    field public static final int VP8Level_Version3 = 8; // 0x8
-    field public static final int VP8ProfileMain = 1; // 0x1
-    field public static final int VP9Level1 = 1; // 0x1
-    field public static final int VP9Level11 = 2; // 0x2
-    field public static final int VP9Level2 = 4; // 0x4
-    field public static final int VP9Level21 = 8; // 0x8
-    field public static final int VP9Level3 = 16; // 0x10
-    field public static final int VP9Level31 = 32; // 0x20
-    field public static final int VP9Level4 = 64; // 0x40
-    field public static final int VP9Level41 = 128; // 0x80
-    field public static final int VP9Level5 = 256; // 0x100
-    field public static final int VP9Level51 = 512; // 0x200
-    field public static final int VP9Level52 = 1024; // 0x400
-    field public static final int VP9Level6 = 2048; // 0x800
-    field public static final int VP9Level61 = 4096; // 0x1000
-    field public static final int VP9Level62 = 8192; // 0x2000
-    field public static final int VP9Profile0 = 1; // 0x1
-    field public static final int VP9Profile1 = 2; // 0x2
-    field public static final int VP9Profile2 = 4; // 0x4
-    field public static final int VP9Profile2HDR = 4096; // 0x1000
-    field public static final int VP9Profile2HDR10Plus = 16384; // 0x4000
-    field public static final int VP9Profile3 = 8; // 0x8
-    field public static final int VP9Profile3HDR = 8192; // 0x2000
-    field public static final int VP9Profile3HDR10Plus = 32768; // 0x8000
-    field public int level;
-    field public int profile;
-  }
-
-  public static final class MediaCodecInfo.EncoderCapabilities {
-    method public android.util.Range<java.lang.Integer> getComplexityRange();
-    method public android.util.Range<java.lang.Integer> getQualityRange();
-    method public boolean isBitrateModeSupported(int);
-    field public static final int BITRATE_MODE_CBR = 2; // 0x2
-    field public static final int BITRATE_MODE_CQ = 0; // 0x0
-    field public static final int BITRATE_MODE_VBR = 1; // 0x1
-  }
-
-  public static final class MediaCodecInfo.VideoCapabilities {
-    method public boolean areSizeAndRateSupported(int, int, double);
-    method @Nullable public android.util.Range<java.lang.Double> getAchievableFrameRatesFor(int, int);
-    method public android.util.Range<java.lang.Integer> getBitrateRange();
-    method public int getHeightAlignment();
-    method public android.util.Range<java.lang.Integer> getSupportedFrameRates();
-    method public android.util.Range<java.lang.Double> getSupportedFrameRatesFor(int, int);
-    method public android.util.Range<java.lang.Integer> getSupportedHeights();
-    method public android.util.Range<java.lang.Integer> getSupportedHeightsFor(int);
-    method @Nullable public java.util.List<android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint> getSupportedPerformancePoints();
-    method public android.util.Range<java.lang.Integer> getSupportedWidths();
-    method public android.util.Range<java.lang.Integer> getSupportedWidthsFor(int);
-    method public int getWidthAlignment();
-    method public boolean isSizeSupported(int, int);
-  }
-
-  public static final class MediaCodecInfo.VideoCapabilities.PerformancePoint {
-    ctor public MediaCodecInfo.VideoCapabilities.PerformancePoint(int, int, int);
-    method public boolean covers(@NonNull android.media.MediaFormat);
-    method public boolean covers(@NonNull android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint);
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_100;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_120;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_200;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_24;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_240;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_25;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_30;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_50;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_60;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_100;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_120;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_200;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_24;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_240;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_25;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_30;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_50;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_60;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_24;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_25;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_30;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_48;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_50;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_60;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_100;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_120;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_200;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_24;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_240;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_25;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_30;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_50;
-    field @NonNull public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_60;
-  }
-
-  public final class MediaCodecList {
-    ctor public MediaCodecList(int);
-    method public String findDecoderForFormat(android.media.MediaFormat);
-    method public String findEncoderForFormat(android.media.MediaFormat);
-    method @Deprecated public static int getCodecCount();
-    method @Deprecated public static android.media.MediaCodecInfo getCodecInfoAt(int);
-    method public android.media.MediaCodecInfo[] getCodecInfos();
-    field public static final int ALL_CODECS = 1; // 0x1
-    field public static final int REGULAR_CODECS = 0; // 0x0
-  }
-
-  public final class MediaCrypto {
-    ctor public MediaCrypto(@NonNull java.util.UUID, @NonNull byte[]) throws android.media.MediaCryptoException;
-    method protected void finalize();
-    method public static boolean isCryptoSchemeSupported(@NonNull java.util.UUID);
-    method public void release();
-    method public boolean requiresSecureDecoderComponent(@NonNull String);
-    method public void setMediaDrmSession(@NonNull byte[]) throws android.media.MediaCryptoException;
-  }
-
-  public final class MediaCryptoException extends java.lang.Exception {
-    ctor public MediaCryptoException(@Nullable String);
-  }
-
-  public abstract class MediaDataSource implements java.io.Closeable {
-    ctor public MediaDataSource();
-    method public abstract long getSize() throws java.io.IOException;
-    method public abstract int readAt(long, byte[], int, int) throws java.io.IOException;
-  }
-
-  public final class MediaDescrambler implements java.lang.AutoCloseable {
-    ctor public MediaDescrambler(int) throws android.media.MediaCasException.UnsupportedCasException;
-    method public void close();
-    method public int descramble(@NonNull java.nio.ByteBuffer, @NonNull java.nio.ByteBuffer, @NonNull android.media.MediaCodec.CryptoInfo);
-    method protected void finalize();
-    method public boolean requiresSecureDecoderComponent(@NonNull String);
-    method public void setMediaCasSession(@NonNull android.media.MediaCas.Session);
-    field public static final byte SCRAMBLE_CONTROL_EVEN_KEY = 2; // 0x2
-    field public static final byte SCRAMBLE_CONTROL_ODD_KEY = 3; // 0x3
-    field public static final byte SCRAMBLE_CONTROL_RESERVED = 1; // 0x1
-    field public static final byte SCRAMBLE_CONTROL_UNSCRAMBLED = 0; // 0x0
-    field public static final byte SCRAMBLE_FLAG_PES_HEADER = 1; // 0x1
-  }
-
-  public class MediaDescription implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public CharSequence getDescription();
-    method @Nullable public android.os.Bundle getExtras();
-    method @Nullable public android.graphics.Bitmap getIconBitmap();
-    method @Nullable public android.net.Uri getIconUri();
-    method @Nullable public String getMediaId();
-    method @Nullable public android.net.Uri getMediaUri();
-    method @Nullable public CharSequence getSubtitle();
-    method @Nullable public CharSequence getTitle();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final long BT_FOLDER_TYPE_ALBUMS = 2L; // 0x2L
-    field public static final long BT_FOLDER_TYPE_ARTISTS = 3L; // 0x3L
-    field public static final long BT_FOLDER_TYPE_GENRES = 4L; // 0x4L
-    field public static final long BT_FOLDER_TYPE_MIXED = 0L; // 0x0L
-    field public static final long BT_FOLDER_TYPE_PLAYLISTS = 5L; // 0x5L
-    field public static final long BT_FOLDER_TYPE_TITLES = 1L; // 0x1L
-    field public static final long BT_FOLDER_TYPE_YEARS = 6L; // 0x6L
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.MediaDescription> CREATOR;
-    field public static final String EXTRA_BT_FOLDER_TYPE = "android.media.extra.BT_FOLDER_TYPE";
-  }
-
-  public static class MediaDescription.Builder {
-    ctor public MediaDescription.Builder();
-    method public android.media.MediaDescription build();
-    method public android.media.MediaDescription.Builder setDescription(@Nullable CharSequence);
-    method public android.media.MediaDescription.Builder setExtras(@Nullable android.os.Bundle);
-    method public android.media.MediaDescription.Builder setIconBitmap(@Nullable android.graphics.Bitmap);
-    method public android.media.MediaDescription.Builder setIconUri(@Nullable android.net.Uri);
-    method public android.media.MediaDescription.Builder setMediaId(@Nullable String);
-    method public android.media.MediaDescription.Builder setMediaUri(@Nullable android.net.Uri);
-    method public android.media.MediaDescription.Builder setSubtitle(@Nullable CharSequence);
-    method public android.media.MediaDescription.Builder setTitle(@Nullable CharSequence);
-  }
-
-  public final class MediaDrm implements java.lang.AutoCloseable {
-    ctor public MediaDrm(@NonNull java.util.UUID) throws android.media.UnsupportedSchemeException;
-    method public void clearOnEventListener();
-    method public void clearOnExpirationUpdateListener();
-    method public void clearOnKeyStatusChangeListener();
-    method public void clearOnSessionLostStateListener();
-    method public void close();
-    method public void closeSession(@NonNull byte[]);
-    method @android.media.MediaDrm.HdcpLevel public int getConnectedHdcpLevel();
-    method public android.media.MediaDrm.CryptoSession getCryptoSession(@NonNull byte[], @NonNull String, @NonNull String);
-    method @NonNull public android.media.MediaDrm.KeyRequest getKeyRequest(@NonNull byte[], @Nullable byte[], @Nullable String, int, @Nullable java.util.HashMap<java.lang.String,java.lang.String>) throws android.media.NotProvisionedException;
-    method @android.media.MediaDrm.HdcpLevel public int getMaxHdcpLevel();
-    method public static int getMaxSecurityLevel();
-    method public int getMaxSessionCount();
-    method public android.os.PersistableBundle getMetrics();
-    method @NonNull public java.util.List<byte[]> getOfflineLicenseKeySetIds();
-    method public int getOfflineLicenseState(@NonNull byte[]);
-    method public int getOpenSessionCount();
-    method @NonNull public byte[] getPropertyByteArray(String);
-    method @NonNull public String getPropertyString(@NonNull String);
-    method @NonNull public android.media.MediaDrm.ProvisionRequest getProvisionRequest();
-    method @NonNull public byte[] getSecureStop(@NonNull byte[]);
-    method @NonNull public java.util.List<byte[]> getSecureStopIds();
-    method @NonNull public java.util.List<byte[]> getSecureStops();
-    method @android.media.MediaDrm.SecurityLevel public int getSecurityLevel(@NonNull byte[]);
-    method @NonNull public static java.util.List<java.util.UUID> getSupportedCryptoSchemes();
-    method public static boolean isCryptoSchemeSupported(@NonNull java.util.UUID);
-    method public static boolean isCryptoSchemeSupported(@NonNull java.util.UUID, @NonNull String);
-    method public static boolean isCryptoSchemeSupported(@NonNull java.util.UUID, @NonNull String, @android.media.MediaDrm.SecurityLevel int);
-    method @NonNull public byte[] openSession() throws android.media.NotProvisionedException, android.media.ResourceBusyException;
-    method @NonNull public byte[] openSession(@android.media.MediaDrm.SecurityLevel int) throws android.media.NotProvisionedException, android.media.ResourceBusyException;
-    method @Nullable public byte[] provideKeyResponse(@NonNull byte[], @NonNull byte[]) throws android.media.DeniedByServerException, android.media.NotProvisionedException;
-    method public void provideProvisionResponse(@NonNull byte[]) throws android.media.DeniedByServerException;
-    method @NonNull public java.util.HashMap<java.lang.String,java.lang.String> queryKeyStatus(@NonNull byte[]);
-    method @Deprecated public void release();
-    method @Deprecated public void releaseAllSecureStops();
-    method public void releaseSecureStops(@NonNull byte[]);
-    method public void removeAllSecureStops();
-    method public void removeKeys(@NonNull byte[]);
-    method public void removeOfflineLicense(@NonNull byte[]);
-    method public void removeSecureStop(@NonNull byte[]);
-    method public void restoreKeys(@NonNull byte[], @NonNull byte[]);
-    method public void setOnEventListener(@Nullable android.media.MediaDrm.OnEventListener);
-    method public void setOnEventListener(@Nullable android.media.MediaDrm.OnEventListener, @Nullable android.os.Handler);
-    method public void setOnEventListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaDrm.OnEventListener);
-    method public void setOnExpirationUpdateListener(@Nullable android.media.MediaDrm.OnExpirationUpdateListener, @Nullable android.os.Handler);
-    method public void setOnExpirationUpdateListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaDrm.OnExpirationUpdateListener);
-    method public void setOnKeyStatusChangeListener(@Nullable android.media.MediaDrm.OnKeyStatusChangeListener, @Nullable android.os.Handler);
-    method public void setOnKeyStatusChangeListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaDrm.OnKeyStatusChangeListener);
-    method public void setOnSessionLostStateListener(@Nullable android.media.MediaDrm.OnSessionLostStateListener, @Nullable android.os.Handler);
-    method public void setOnSessionLostStateListener(@NonNull java.util.concurrent.Executor, @Nullable android.media.MediaDrm.OnSessionLostStateListener);
-    method public void setPropertyByteArray(@NonNull String, @NonNull byte[]);
-    method public void setPropertyString(@NonNull String, @NonNull String);
-    field @Deprecated public static final int EVENT_KEY_EXPIRED = 3; // 0x3
-    field public static final int EVENT_KEY_REQUIRED = 2; // 0x2
-    field @Deprecated public static final int EVENT_PROVISION_REQUIRED = 1; // 0x1
-    field public static final int EVENT_SESSION_RECLAIMED = 5; // 0x5
-    field public static final int EVENT_VENDOR_DEFINED = 4; // 0x4
-    field public static final int HDCP_LEVEL_UNKNOWN = 0; // 0x0
-    field public static final int HDCP_NONE = 1; // 0x1
-    field public static final int HDCP_NO_DIGITAL_OUTPUT = 2147483647; // 0x7fffffff
-    field public static final int HDCP_V1 = 2; // 0x2
-    field public static final int HDCP_V2 = 3; // 0x3
-    field public static final int HDCP_V2_1 = 4; // 0x4
-    field public static final int HDCP_V2_2 = 5; // 0x5
-    field public static final int HDCP_V2_3 = 6; // 0x6
-    field public static final int KEY_TYPE_OFFLINE = 2; // 0x2
-    field public static final int KEY_TYPE_RELEASE = 3; // 0x3
-    field public static final int KEY_TYPE_STREAMING = 1; // 0x1
-    field public static final int OFFLINE_LICENSE_STATE_RELEASED = 2; // 0x2
-    field public static final int OFFLINE_LICENSE_STATE_UNKNOWN = 0; // 0x0
-    field public static final int OFFLINE_LICENSE_STATE_USABLE = 1; // 0x1
-    field public static final String PROPERTY_ALGORITHMS = "algorithms";
-    field public static final String PROPERTY_DESCRIPTION = "description";
-    field public static final String PROPERTY_DEVICE_UNIQUE_ID = "deviceUniqueId";
-    field public static final String PROPERTY_VENDOR = "vendor";
-    field public static final String PROPERTY_VERSION = "version";
-    field public static final int SECURITY_LEVEL_HW_SECURE_ALL = 5; // 0x5
-    field public static final int SECURITY_LEVEL_HW_SECURE_CRYPTO = 3; // 0x3
-    field public static final int SECURITY_LEVEL_HW_SECURE_DECODE = 4; // 0x4
-    field public static final int SECURITY_LEVEL_SW_SECURE_CRYPTO = 1; // 0x1
-    field public static final int SECURITY_LEVEL_SW_SECURE_DECODE = 2; // 0x2
-    field public static final int SECURITY_LEVEL_UNKNOWN = 0; // 0x0
-  }
-
-  public final class MediaDrm.CryptoSession {
-    method @NonNull public byte[] decrypt(@NonNull byte[], @NonNull byte[], @NonNull byte[]);
-    method @NonNull public byte[] encrypt(@NonNull byte[], @NonNull byte[], @NonNull byte[]);
-    method @NonNull public byte[] sign(@NonNull byte[], @NonNull byte[]);
-    method public boolean verify(@NonNull byte[], @NonNull byte[], @NonNull byte[]);
-  }
-
-  @Deprecated @IntDef({android.media.MediaDrm.HDCP_LEVEL_UNKNOWN, android.media.MediaDrm.HDCP_NONE, android.media.MediaDrm.HDCP_V1, android.media.MediaDrm.HDCP_V2, android.media.MediaDrm.HDCP_V2_1, android.media.MediaDrm.HDCP_V2_2, android.media.MediaDrm.HDCP_V2_3, android.media.MediaDrm.HDCP_NO_DIGITAL_OUTPUT}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface MediaDrm.HdcpLevel {
-  }
-
-  public static final class MediaDrm.KeyRequest {
-    method @NonNull public byte[] getData();
-    method @NonNull public String getDefaultUrl();
-    method public int getRequestType();
-    field public static final int REQUEST_TYPE_INITIAL = 0; // 0x0
-    field public static final int REQUEST_TYPE_NONE = 3; // 0x3
-    field public static final int REQUEST_TYPE_RELEASE = 2; // 0x2
-    field public static final int REQUEST_TYPE_RENEWAL = 1; // 0x1
-    field public static final int REQUEST_TYPE_UPDATE = 4; // 0x4
-  }
-
-  public static final class MediaDrm.KeyStatus {
-    method @NonNull public byte[] getKeyId();
-    method public int getStatusCode();
-    field public static final int STATUS_EXPIRED = 1; // 0x1
-    field public static final int STATUS_INTERNAL_ERROR = 4; // 0x4
-    field public static final int STATUS_OUTPUT_NOT_ALLOWED = 2; // 0x2
-    field public static final int STATUS_PENDING = 3; // 0x3
-    field public static final int STATUS_USABLE = 0; // 0x0
-    field public static final int STATUS_USABLE_IN_FUTURE = 5; // 0x5
-  }
-
-  public static final class MediaDrm.MediaDrmStateException extends java.lang.IllegalStateException {
-    method @NonNull public String getDiagnosticInfo();
-  }
-
-  public static final class MediaDrm.MetricsConstants {
-    field public static final String CLOSE_SESSION_ERROR_COUNT = "drm.mediadrm.close_session.error.count";
-    field public static final String CLOSE_SESSION_ERROR_LIST = "drm.mediadrm.close_session.error.list";
-    field public static final String CLOSE_SESSION_OK_COUNT = "drm.mediadrm.close_session.ok.count";
-    field public static final String EVENT_KEY_EXPIRED_COUNT = "drm.mediadrm.event.KEY_EXPIRED.count";
-    field public static final String EVENT_KEY_NEEDED_COUNT = "drm.mediadrm.event.KEY_NEEDED.count";
-    field public static final String EVENT_PROVISION_REQUIRED_COUNT = "drm.mediadrm.event.PROVISION_REQUIRED.count";
-    field public static final String EVENT_SESSION_RECLAIMED_COUNT = "drm.mediadrm.event.SESSION_RECLAIMED.count";
-    field public static final String EVENT_VENDOR_DEFINED_COUNT = "drm.mediadrm.event.VENDOR_DEFINED.count";
-    field public static final String GET_DEVICE_UNIQUE_ID_ERROR_COUNT = "drm.mediadrm.get_device_unique_id.error.count";
-    field public static final String GET_DEVICE_UNIQUE_ID_ERROR_LIST = "drm.mediadrm.get_device_unique_id.error.list";
-    field public static final String GET_DEVICE_UNIQUE_ID_OK_COUNT = "drm.mediadrm.get_device_unique_id.ok.count";
-    field public static final String GET_KEY_REQUEST_ERROR_COUNT = "drm.mediadrm.get_key_request.error.count";
-    field public static final String GET_KEY_REQUEST_ERROR_LIST = "drm.mediadrm.get_key_request.error.list";
-    field public static final String GET_KEY_REQUEST_OK_COUNT = "drm.mediadrm.get_key_request.ok.count";
-    field public static final String GET_KEY_REQUEST_OK_TIME_MICROS = "drm.mediadrm.get_key_request.ok.average_time_micros";
-    field public static final String GET_PROVISION_REQUEST_ERROR_COUNT = "drm.mediadrm.get_provision_request.error.count";
-    field public static final String GET_PROVISION_REQUEST_ERROR_LIST = "drm.mediadrm.get_provision_request.error.list";
-    field public static final String GET_PROVISION_REQUEST_OK_COUNT = "drm.mediadrm.get_provision_request.ok.count";
-    field public static final String KEY_STATUS_EXPIRED_COUNT = "drm.mediadrm.key_status.EXPIRED.count";
-    field public static final String KEY_STATUS_INTERNAL_ERROR_COUNT = "drm.mediadrm.key_status.INTERNAL_ERROR.count";
-    field public static final String KEY_STATUS_OUTPUT_NOT_ALLOWED_COUNT = "drm.mediadrm.key_status_change.OUTPUT_NOT_ALLOWED.count";
-    field public static final String KEY_STATUS_PENDING_COUNT = "drm.mediadrm.key_status_change.PENDING.count";
-    field public static final String KEY_STATUS_USABLE_COUNT = "drm.mediadrm.key_status_change.USABLE.count";
-    field public static final String OPEN_SESSION_ERROR_COUNT = "drm.mediadrm.open_session.error.count";
-    field public static final String OPEN_SESSION_ERROR_LIST = "drm.mediadrm.open_session.error.list";
-    field public static final String OPEN_SESSION_OK_COUNT = "drm.mediadrm.open_session.ok.count";
-    field public static final String PROVIDE_KEY_RESPONSE_ERROR_COUNT = "drm.mediadrm.provide_key_response.error.count";
-    field public static final String PROVIDE_KEY_RESPONSE_ERROR_LIST = "drm.mediadrm.provide_key_response.error.list";
-    field public static final String PROVIDE_KEY_RESPONSE_OK_COUNT = "drm.mediadrm.provide_key_response.ok.count";
-    field public static final String PROVIDE_KEY_RESPONSE_OK_TIME_MICROS = "drm.mediadrm.provide_key_response.ok.average_time_micros";
-    field public static final String PROVIDE_PROVISION_RESPONSE_ERROR_COUNT = "drm.mediadrm.provide_provision_response.error.count";
-    field public static final String PROVIDE_PROVISION_RESPONSE_ERROR_LIST = "drm.mediadrm.provide_provision_response.error.list";
-    field public static final String PROVIDE_PROVISION_RESPONSE_OK_COUNT = "drm.mediadrm.provide_provision_response.ok.count";
-    field public static final String SESSION_END_TIMES_MS = "drm.mediadrm.session_end_times_ms";
-    field public static final String SESSION_START_TIMES_MS = "drm.mediadrm.session_start_times_ms";
-  }
-
-  public static interface MediaDrm.OnEventListener {
-    method public void onEvent(@NonNull android.media.MediaDrm, @Nullable byte[], int, int, @Nullable byte[]);
-  }
-
-  public static interface MediaDrm.OnExpirationUpdateListener {
-    method public void onExpirationUpdate(@NonNull android.media.MediaDrm, @NonNull byte[], long);
-  }
-
-  public static interface MediaDrm.OnKeyStatusChangeListener {
-    method public void onKeyStatusChange(@NonNull android.media.MediaDrm, @NonNull byte[], @NonNull java.util.List<android.media.MediaDrm.KeyStatus>, boolean);
-  }
-
-  public static interface MediaDrm.OnSessionLostStateListener {
-    method public void onSessionLostState(@NonNull android.media.MediaDrm, @NonNull byte[]);
-  }
-
-  public static final class MediaDrm.ProvisionRequest {
-    method @NonNull public byte[] getData();
-    method @NonNull public String getDefaultUrl();
-  }
-
-  @Deprecated @IntDef({android.media.MediaDrm.SECURITY_LEVEL_UNKNOWN, android.media.MediaDrm.SECURITY_LEVEL_SW_SECURE_CRYPTO, android.media.MediaDrm.SECURITY_LEVEL_SW_SECURE_DECODE, android.media.MediaDrm.SECURITY_LEVEL_HW_SECURE_CRYPTO, android.media.MediaDrm.SECURITY_LEVEL_HW_SECURE_DECODE, android.media.MediaDrm.SECURITY_LEVEL_HW_SECURE_ALL}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface MediaDrm.SecurityLevel {
-  }
-
-  public static final class MediaDrm.SessionException extends java.lang.RuntimeException {
-    ctor public MediaDrm.SessionException(int, @Nullable String);
-    method public int getErrorCode();
-    field public static final int ERROR_RESOURCE_CONTENTION = 1; // 0x1
-    field public static final int ERROR_UNKNOWN = 0; // 0x0
-  }
-
-  public class MediaDrmException extends java.lang.Exception {
-    ctor public MediaDrmException(String);
-  }
-
-  public class MediaDrmResetException extends java.lang.IllegalStateException {
-    ctor public MediaDrmResetException(String);
-  }
-
-  public final class MediaExtractor {
-    ctor public MediaExtractor();
-    method public boolean advance();
-    method protected void finalize();
-    method @NonNull public java.util.List<android.media.AudioPresentation> getAudioPresentations(int);
-    method public long getCachedDuration();
-    method public android.media.MediaExtractor.CasInfo getCasInfo(int);
-    method public android.media.DrmInitData getDrmInitData();
-    method public android.os.PersistableBundle getMetrics();
-    method @Nullable public java.util.Map<java.util.UUID,byte[]> getPsshInfo();
-    method public boolean getSampleCryptoInfo(@NonNull android.media.MediaCodec.CryptoInfo);
-    method public int getSampleFlags();
-    method public long getSampleSize();
-    method public long getSampleTime();
-    method public int getSampleTrackIndex();
-    method public int getTrackCount();
-    method @NonNull public android.media.MediaFormat getTrackFormat(int);
-    method public boolean hasCacheReachedEndOfStream();
-    method public int readSampleData(@NonNull java.nio.ByteBuffer, int);
-    method public void release();
-    method public void seekTo(long, int);
-    method public void selectTrack(int);
-    method public void setDataSource(@NonNull android.media.MediaDataSource) throws java.io.IOException;
-    method public void setDataSource(@NonNull android.content.Context, @NonNull android.net.Uri, @Nullable java.util.Map<java.lang.String,java.lang.String>) throws java.io.IOException;
-    method public void setDataSource(@NonNull String, @Nullable java.util.Map<java.lang.String,java.lang.String>) throws java.io.IOException;
-    method public void setDataSource(@NonNull String) throws java.io.IOException;
-    method public void setDataSource(@NonNull android.content.res.AssetFileDescriptor) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void setDataSource(@NonNull java.io.FileDescriptor) throws java.io.IOException;
-    method public void setDataSource(@NonNull java.io.FileDescriptor, long, long) throws java.io.IOException;
-    method public void setMediaCas(@NonNull android.media.MediaCas);
-    method public void unselectTrack(int);
-    field public static final int SAMPLE_FLAG_ENCRYPTED = 2; // 0x2
-    field public static final int SAMPLE_FLAG_PARTIAL_FRAME = 4; // 0x4
-    field public static final int SAMPLE_FLAG_SYNC = 1; // 0x1
-    field public static final int SEEK_TO_CLOSEST_SYNC = 2; // 0x2
-    field public static final int SEEK_TO_NEXT_SYNC = 1; // 0x1
-    field public static final int SEEK_TO_PREVIOUS_SYNC = 0; // 0x0
-  }
-
-  public static final class MediaExtractor.CasInfo {
-    method @Nullable public byte[] getPrivateData();
-    method public android.media.MediaCas.Session getSession();
-    method public int getSystemId();
-  }
-
-  public static final class MediaExtractor.MetricsConstants {
-    field public static final String FORMAT = "android.media.mediaextractor.fmt";
-    field public static final String MIME_TYPE = "android.media.mediaextractor.mime";
-    field public static final String TRACKS = "android.media.mediaextractor.ntrk";
-  }
-
-  public final class MediaFormat {
-    ctor public MediaFormat();
-    ctor public MediaFormat(@NonNull android.media.MediaFormat);
-    method public boolean containsFeature(@NonNull String);
-    method public boolean containsKey(@NonNull String);
-    method @NonNull public static android.media.MediaFormat createAudioFormat(@NonNull String, int, int);
-    method @NonNull public static android.media.MediaFormat createSubtitleFormat(@NonNull String, String);
-    method @NonNull public static android.media.MediaFormat createVideoFormat(@NonNull String, int, int);
-    method @Nullable public java.nio.ByteBuffer getByteBuffer(@NonNull String);
-    method @NonNull public java.nio.ByteBuffer getByteBuffer(@NonNull String, @NonNull java.nio.ByteBuffer);
-    method public boolean getFeatureEnabled(@NonNull String);
-    method @NonNull public java.util.Set<java.lang.String> getFeatures();
-    method public float getFloat(@NonNull String);
-    method public float getFloat(@NonNull String, float);
-    method public int getInteger(@NonNull String);
-    method public int getInteger(@NonNull String, int);
-    method @NonNull public java.util.Set<java.lang.String> getKeys();
-    method public long getLong(@NonNull String);
-    method public long getLong(@NonNull String, long);
-    method @Nullable public Number getNumber(@NonNull String);
-    method @NonNull public Number getNumber(@NonNull String, @NonNull Number);
-    method @Nullable public String getString(@NonNull String);
-    method @NonNull public String getString(@NonNull String, @NonNull String);
-    method public int getValueTypeForKey(@NonNull String);
-    method public void removeFeature(@NonNull String);
-    method public void removeKey(@NonNull String);
-    method public void setByteBuffer(@NonNull String, @Nullable java.nio.ByteBuffer);
-    method public void setFeatureEnabled(@NonNull String, boolean);
-    method public void setFloat(@NonNull String, float);
-    method public void setInteger(@NonNull String, int);
-    method public void setLong(@NonNull String, long);
-    method public void setString(@NonNull String, @Nullable String);
-    field public static final int COLOR_RANGE_FULL = 1; // 0x1
-    field public static final int COLOR_RANGE_LIMITED = 2; // 0x2
-    field public static final int COLOR_STANDARD_BT2020 = 6; // 0x6
-    field public static final int COLOR_STANDARD_BT601_NTSC = 4; // 0x4
-    field public static final int COLOR_STANDARD_BT601_PAL = 2; // 0x2
-    field public static final int COLOR_STANDARD_BT709 = 1; // 0x1
-    field public static final int COLOR_TRANSFER_HLG = 7; // 0x7
-    field public static final int COLOR_TRANSFER_LINEAR = 1; // 0x1
-    field public static final int COLOR_TRANSFER_SDR_VIDEO = 3; // 0x3
-    field public static final int COLOR_TRANSFER_ST2084 = 6; // 0x6
-    field public static final String KEY_AAC_DRC_ALBUM_MODE = "aac-drc-album-mode";
-    field public static final String KEY_AAC_DRC_ATTENUATION_FACTOR = "aac-drc-cut-level";
-    field public static final String KEY_AAC_DRC_BOOST_FACTOR = "aac-drc-boost-level";
-    field public static final String KEY_AAC_DRC_EFFECT_TYPE = "aac-drc-effect-type";
-    field public static final String KEY_AAC_DRC_HEAVY_COMPRESSION = "aac-drc-heavy-compression";
-    field public static final String KEY_AAC_DRC_OUTPUT_LOUDNESS = "aac-drc-output-loudness";
-    field public static final String KEY_AAC_DRC_TARGET_REFERENCE_LEVEL = "aac-target-ref-level";
-    field public static final String KEY_AAC_ENCODED_TARGET_LEVEL = "aac-encoded-target-level";
-    field public static final String KEY_AAC_MAX_OUTPUT_CHANNEL_COUNT = "aac-max-output-channel_count";
-    field public static final String KEY_AAC_PROFILE = "aac-profile";
-    field public static final String KEY_AAC_SBR_MODE = "aac-sbr-mode";
-    field public static final String KEY_AUDIO_SESSION_ID = "audio-session-id";
-    field public static final String KEY_BITRATE_MODE = "bitrate-mode";
-    field public static final String KEY_BIT_RATE = "bitrate";
-    field public static final String KEY_CAPTION_SERVICE_NUMBER = "caption-service-number";
-    field public static final String KEY_CAPTURE_RATE = "capture-rate";
-    field public static final String KEY_CHANNEL_COUNT = "channel-count";
-    field public static final String KEY_CHANNEL_MASK = "channel-mask";
-    field public static final String KEY_CODECS_STRING = "codecs-string";
-    field public static final String KEY_COLOR_FORMAT = "color-format";
-    field public static final String KEY_COLOR_RANGE = "color-range";
-    field public static final String KEY_COLOR_STANDARD = "color-standard";
-    field public static final String KEY_COLOR_TRANSFER = "color-transfer";
-    field public static final String KEY_COMPLEXITY = "complexity";
-    field public static final String KEY_CREATE_INPUT_SURFACE_SUSPENDED = "create-input-buffers-suspended";
-    field public static final String KEY_DURATION = "durationUs";
-    field public static final String KEY_ENCODER_DELAY = "encoder-delay";
-    field public static final String KEY_ENCODER_PADDING = "encoder-padding";
-    field public static final String KEY_FLAC_COMPRESSION_LEVEL = "flac-compression-level";
-    field public static final String KEY_FRAME_RATE = "frame-rate";
-    field public static final String KEY_GRID_COLUMNS = "grid-cols";
-    field public static final String KEY_GRID_ROWS = "grid-rows";
-    field public static final String KEY_HAPTIC_CHANNEL_COUNT = "haptic-channel-count";
-    field public static final String KEY_HARDWARE_AV_SYNC_ID = "hw-av-sync-id";
-    field public static final String KEY_HDR10_PLUS_INFO = "hdr10-plus-info";
-    field public static final String KEY_HDR_STATIC_INFO = "hdr-static-info";
-    field public static final String KEY_HEIGHT = "height";
-    field public static final String KEY_INTRA_REFRESH_PERIOD = "intra-refresh-period";
-    field public static final String KEY_IS_ADTS = "is-adts";
-    field public static final String KEY_IS_AUTOSELECT = "is-autoselect";
-    field public static final String KEY_IS_DEFAULT = "is-default";
-    field public static final String KEY_IS_FORCED_SUBTITLE = "is-forced-subtitle";
-    field public static final String KEY_I_FRAME_INTERVAL = "i-frame-interval";
-    field public static final String KEY_LANGUAGE = "language";
-    field public static final String KEY_LATENCY = "latency";
-    field public static final String KEY_LEVEL = "level";
-    field public static final String KEY_LOW_LATENCY = "low-latency";
-    field public static final String KEY_MAX_B_FRAMES = "max-bframes";
-    field public static final String KEY_MAX_FPS_TO_ENCODER = "max-fps-to-encoder";
-    field public static final String KEY_MAX_HEIGHT = "max-height";
-    field public static final String KEY_MAX_INPUT_SIZE = "max-input-size";
-    field public static final String KEY_MAX_PTS_GAP_TO_ENCODER = "max-pts-gap-to-encoder";
-    field public static final String KEY_MAX_WIDTH = "max-width";
-    field public static final String KEY_MIME = "mime";
-    field public static final String KEY_OPERATING_RATE = "operating-rate";
-    field public static final String KEY_OUTPUT_REORDER_DEPTH = "output-reorder-depth";
-    field public static final String KEY_PCM_ENCODING = "pcm-encoding";
-    field public static final String KEY_PIXEL_ASPECT_RATIO_HEIGHT = "sar-height";
-    field public static final String KEY_PIXEL_ASPECT_RATIO_WIDTH = "sar-width";
-    field public static final String KEY_PREPEND_HEADER_TO_SYNC_FRAMES = "prepend-sps-pps-to-idr-frames";
-    field public static final String KEY_PRIORITY = "priority";
-    field public static final String KEY_PROFILE = "profile";
-    field public static final String KEY_PUSH_BLANK_BUFFERS_ON_STOP = "push-blank-buffers-on-shutdown";
-    field public static final String KEY_QUALITY = "quality";
-    field public static final String KEY_REPEAT_PREVIOUS_FRAME_AFTER = "repeat-previous-frame-after";
-    field public static final String KEY_ROTATION = "rotation-degrees";
-    field public static final String KEY_SAMPLE_RATE = "sample-rate";
-    field public static final String KEY_SLICE_HEIGHT = "slice-height";
-    field public static final String KEY_STRIDE = "stride";
-    field public static final String KEY_TEMPORAL_LAYERING = "ts-schema";
-    field public static final String KEY_TILE_HEIGHT = "tile-height";
-    field public static final String KEY_TILE_WIDTH = "tile-width";
-    field public static final String KEY_TRACK_ID = "track-id";
-    field public static final String KEY_WIDTH = "width";
-    field public static final String MIMETYPE_AUDIO_AAC = "audio/mp4a-latm";
-    field public static final String MIMETYPE_AUDIO_AC3 = "audio/ac3";
-    field public static final String MIMETYPE_AUDIO_AC4 = "audio/ac4";
-    field public static final String MIMETYPE_AUDIO_AMR_NB = "audio/3gpp";
-    field public static final String MIMETYPE_AUDIO_AMR_WB = "audio/amr-wb";
-    field public static final String MIMETYPE_AUDIO_EAC3 = "audio/eac3";
-    field public static final String MIMETYPE_AUDIO_EAC3_JOC = "audio/eac3-joc";
-    field public static final String MIMETYPE_AUDIO_FLAC = "audio/flac";
-    field public static final String MIMETYPE_AUDIO_G711_ALAW = "audio/g711-alaw";
-    field public static final String MIMETYPE_AUDIO_G711_MLAW = "audio/g711-mlaw";
-    field public static final String MIMETYPE_AUDIO_MPEG = "audio/mpeg";
-    field public static final String MIMETYPE_AUDIO_MSGSM = "audio/gsm";
-    field public static final String MIMETYPE_AUDIO_OPUS = "audio/opus";
-    field public static final String MIMETYPE_AUDIO_QCELP = "audio/qcelp";
-    field public static final String MIMETYPE_AUDIO_RAW = "audio/raw";
-    field public static final String MIMETYPE_AUDIO_SCRAMBLED = "audio/scrambled";
-    field public static final String MIMETYPE_AUDIO_VORBIS = "audio/vorbis";
-    field public static final String MIMETYPE_IMAGE_ANDROID_HEIC = "image/vnd.android.heic";
-    field public static final String MIMETYPE_TEXT_CEA_608 = "text/cea-608";
-    field public static final String MIMETYPE_TEXT_CEA_708 = "text/cea-708";
-    field public static final String MIMETYPE_TEXT_SUBRIP = "application/x-subrip";
-    field public static final String MIMETYPE_TEXT_VTT = "text/vtt";
-    field public static final String MIMETYPE_VIDEO_AV1 = "video/av01";
-    field public static final String MIMETYPE_VIDEO_AVC = "video/avc";
-    field public static final String MIMETYPE_VIDEO_DOLBY_VISION = "video/dolby-vision";
-    field public static final String MIMETYPE_VIDEO_H263 = "video/3gpp";
-    field public static final String MIMETYPE_VIDEO_HEVC = "video/hevc";
-    field public static final String MIMETYPE_VIDEO_MPEG2 = "video/mpeg2";
-    field public static final String MIMETYPE_VIDEO_MPEG4 = "video/mp4v-es";
-    field public static final String MIMETYPE_VIDEO_RAW = "video/raw";
-    field public static final String MIMETYPE_VIDEO_SCRAMBLED = "video/scrambled";
-    field public static final String MIMETYPE_VIDEO_VP8 = "video/x-vnd.on2.vp8";
-    field public static final String MIMETYPE_VIDEO_VP9 = "video/x-vnd.on2.vp9";
-    field public static final int TYPE_BYTE_BUFFER = 5; // 0x5
-    field public static final int TYPE_FLOAT = 3; // 0x3
-    field public static final int TYPE_INTEGER = 1; // 0x1
-    field public static final int TYPE_LONG = 2; // 0x2
-    field public static final int TYPE_NULL = 0; // 0x0
-    field public static final int TYPE_STRING = 4; // 0x4
-  }
-
-  public final class MediaMetadata implements android.os.Parcelable {
-    method public boolean containsKey(String);
-    method public int describeContents();
-    method public android.graphics.Bitmap getBitmap(String);
-    method @NonNull public android.media.MediaDescription getDescription();
-    method public long getLong(String);
-    method public android.media.Rating getRating(String);
-    method public String getString(String);
-    method public CharSequence getText(String);
-    method public java.util.Set<java.lang.String> keySet();
-    method public int size();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.MediaMetadata> CREATOR;
-    field public static final String METADATA_KEY_ALBUM = "android.media.metadata.ALBUM";
-    field public static final String METADATA_KEY_ALBUM_ART = "android.media.metadata.ALBUM_ART";
-    field public static final String METADATA_KEY_ALBUM_ARTIST = "android.media.metadata.ALBUM_ARTIST";
-    field public static final String METADATA_KEY_ALBUM_ART_URI = "android.media.metadata.ALBUM_ART_URI";
-    field public static final String METADATA_KEY_ART = "android.media.metadata.ART";
-    field public static final String METADATA_KEY_ARTIST = "android.media.metadata.ARTIST";
-    field public static final String METADATA_KEY_ART_URI = "android.media.metadata.ART_URI";
-    field public static final String METADATA_KEY_AUTHOR = "android.media.metadata.AUTHOR";
-    field public static final String METADATA_KEY_BT_FOLDER_TYPE = "android.media.metadata.BT_FOLDER_TYPE";
-    field public static final String METADATA_KEY_COMPILATION = "android.media.metadata.COMPILATION";
-    field public static final String METADATA_KEY_COMPOSER = "android.media.metadata.COMPOSER";
-    field public static final String METADATA_KEY_DATE = "android.media.metadata.DATE";
-    field public static final String METADATA_KEY_DISC_NUMBER = "android.media.metadata.DISC_NUMBER";
-    field public static final String METADATA_KEY_DISPLAY_DESCRIPTION = "android.media.metadata.DISPLAY_DESCRIPTION";
-    field public static final String METADATA_KEY_DISPLAY_ICON = "android.media.metadata.DISPLAY_ICON";
-    field public static final String METADATA_KEY_DISPLAY_ICON_URI = "android.media.metadata.DISPLAY_ICON_URI";
-    field public static final String METADATA_KEY_DISPLAY_SUBTITLE = "android.media.metadata.DISPLAY_SUBTITLE";
-    field public static final String METADATA_KEY_DISPLAY_TITLE = "android.media.metadata.DISPLAY_TITLE";
-    field public static final String METADATA_KEY_DURATION = "android.media.metadata.DURATION";
-    field public static final String METADATA_KEY_GENRE = "android.media.metadata.GENRE";
-    field public static final String METADATA_KEY_MEDIA_ID = "android.media.metadata.MEDIA_ID";
-    field public static final String METADATA_KEY_MEDIA_URI = "android.media.metadata.MEDIA_URI";
-    field public static final String METADATA_KEY_NUM_TRACKS = "android.media.metadata.NUM_TRACKS";
-    field public static final String METADATA_KEY_RATING = "android.media.metadata.RATING";
-    field public static final String METADATA_KEY_TITLE = "android.media.metadata.TITLE";
-    field public static final String METADATA_KEY_TRACK_NUMBER = "android.media.metadata.TRACK_NUMBER";
-    field public static final String METADATA_KEY_USER_RATING = "android.media.metadata.USER_RATING";
-    field public static final String METADATA_KEY_WRITER = "android.media.metadata.WRITER";
-    field public static final String METADATA_KEY_YEAR = "android.media.metadata.YEAR";
-  }
-
-  public static final class MediaMetadata.Builder {
-    ctor public MediaMetadata.Builder();
-    ctor public MediaMetadata.Builder(android.media.MediaMetadata);
-    method public android.media.MediaMetadata build();
-    method public android.media.MediaMetadata.Builder putBitmap(String, android.graphics.Bitmap);
-    method public android.media.MediaMetadata.Builder putLong(String, long);
-    method public android.media.MediaMetadata.Builder putRating(String, android.media.Rating);
-    method public android.media.MediaMetadata.Builder putString(String, String);
-    method public android.media.MediaMetadata.Builder putText(String, CharSequence);
-  }
-
-  @Deprecated public abstract class MediaMetadataEditor {
-    method @Deprecated public void addEditableKey(int);
-    method @Deprecated public abstract void apply();
-    method @Deprecated public void clear();
-    method @Deprecated public android.graphics.Bitmap getBitmap(int, android.graphics.Bitmap) throws java.lang.IllegalArgumentException;
-    method @Deprecated public int[] getEditableKeys();
-    method @Deprecated public long getLong(int, long) throws java.lang.IllegalArgumentException;
-    method @Deprecated public Object getObject(int, Object) throws java.lang.IllegalArgumentException;
-    method @Deprecated public String getString(int, String) throws java.lang.IllegalArgumentException;
-    method @Deprecated public android.media.MediaMetadataEditor putBitmap(int, android.graphics.Bitmap) throws java.lang.IllegalArgumentException;
-    method @Deprecated public android.media.MediaMetadataEditor putLong(int, long) throws java.lang.IllegalArgumentException;
-    method @Deprecated public android.media.MediaMetadataEditor putObject(int, Object) throws java.lang.IllegalArgumentException;
-    method @Deprecated public android.media.MediaMetadataEditor putString(int, String) throws java.lang.IllegalArgumentException;
-    method @Deprecated public void removeEditableKeys();
-    field @Deprecated public static final int BITMAP_KEY_ARTWORK = 100; // 0x64
-    field @Deprecated public static final int RATING_KEY_BY_OTHERS = 101; // 0x65
-    field @Deprecated public static final int RATING_KEY_BY_USER = 268435457; // 0x10000001
-  }
-
-  public class MediaMetadataRetriever implements java.lang.AutoCloseable {
-    ctor public MediaMetadataRetriever();
-    method public void close();
-    method @Nullable public String extractMetadata(int);
-    method @Nullable public byte[] getEmbeddedPicture();
-    method @Nullable public android.graphics.Bitmap getFrameAtIndex(int, @NonNull android.media.MediaMetadataRetriever.BitmapParams);
-    method @Nullable public android.graphics.Bitmap getFrameAtIndex(int);
-    method @Nullable public android.graphics.Bitmap getFrameAtTime(long, int);
-    method @Nullable public android.graphics.Bitmap getFrameAtTime(long, int, @NonNull android.media.MediaMetadataRetriever.BitmapParams);
-    method @Nullable public android.graphics.Bitmap getFrameAtTime(long);
-    method @Nullable public android.graphics.Bitmap getFrameAtTime();
-    method @NonNull public java.util.List<android.graphics.Bitmap> getFramesAtIndex(int, int, @NonNull android.media.MediaMetadataRetriever.BitmapParams);
-    method @NonNull public java.util.List<android.graphics.Bitmap> getFramesAtIndex(int, int);
-    method @Nullable public android.graphics.Bitmap getImageAtIndex(int, @NonNull android.media.MediaMetadataRetriever.BitmapParams);
-    method @Nullable public android.graphics.Bitmap getImageAtIndex(int);
-    method @Nullable public android.graphics.Bitmap getPrimaryImage(@NonNull android.media.MediaMetadataRetriever.BitmapParams);
-    method @Nullable public android.graphics.Bitmap getPrimaryImage();
-    method @Nullable public android.graphics.Bitmap getScaledFrameAtTime(long, int, @IntRange(from=1) int, @IntRange(from=1) int);
-    method @Nullable public android.graphics.Bitmap getScaledFrameAtTime(long, int, @IntRange(from=1) int, @IntRange(from=1) int, @NonNull android.media.MediaMetadataRetriever.BitmapParams);
-    method public void release();
-    method public void setDataSource(String) throws java.lang.IllegalArgumentException;
-    method public void setDataSource(String, java.util.Map<java.lang.String,java.lang.String>) throws java.lang.IllegalArgumentException;
-    method public void setDataSource(java.io.FileDescriptor, long, long) throws java.lang.IllegalArgumentException;
-    method public void setDataSource(java.io.FileDescriptor) throws java.lang.IllegalArgumentException;
-    method public void setDataSource(android.content.Context, android.net.Uri) throws java.lang.IllegalArgumentException, java.lang.SecurityException;
-    method public void setDataSource(android.media.MediaDataSource) throws java.lang.IllegalArgumentException;
-    field public static final int METADATA_KEY_ALBUM = 1; // 0x1
-    field public static final int METADATA_KEY_ALBUMARTIST = 13; // 0xd
-    field public static final int METADATA_KEY_ARTIST = 2; // 0x2
-    field public static final int METADATA_KEY_AUTHOR = 3; // 0x3
-    field public static final int METADATA_KEY_BITRATE = 20; // 0x14
-    field public static final int METADATA_KEY_CAPTURE_FRAMERATE = 25; // 0x19
-    field public static final int METADATA_KEY_CD_TRACK_NUMBER = 0; // 0x0
-    field public static final int METADATA_KEY_COLOR_RANGE = 37; // 0x25
-    field public static final int METADATA_KEY_COLOR_STANDARD = 35; // 0x23
-    field public static final int METADATA_KEY_COLOR_TRANSFER = 36; // 0x24
-    field public static final int METADATA_KEY_COMPILATION = 15; // 0xf
-    field public static final int METADATA_KEY_COMPOSER = 4; // 0x4
-    field public static final int METADATA_KEY_DATE = 5; // 0x5
-    field public static final int METADATA_KEY_DISC_NUMBER = 14; // 0xe
-    field public static final int METADATA_KEY_DURATION = 9; // 0x9
-    field public static final int METADATA_KEY_EXIF_LENGTH = 34; // 0x22
-    field public static final int METADATA_KEY_EXIF_OFFSET = 33; // 0x21
-    field public static final int METADATA_KEY_GENRE = 6; // 0x6
-    field public static final int METADATA_KEY_HAS_AUDIO = 16; // 0x10
-    field public static final int METADATA_KEY_HAS_IMAGE = 26; // 0x1a
-    field public static final int METADATA_KEY_HAS_VIDEO = 17; // 0x11
-    field public static final int METADATA_KEY_IMAGE_COUNT = 27; // 0x1b
-    field public static final int METADATA_KEY_IMAGE_HEIGHT = 30; // 0x1e
-    field public static final int METADATA_KEY_IMAGE_PRIMARY = 28; // 0x1c
-    field public static final int METADATA_KEY_IMAGE_ROTATION = 31; // 0x1f
-    field public static final int METADATA_KEY_IMAGE_WIDTH = 29; // 0x1d
-    field public static final int METADATA_KEY_LOCATION = 23; // 0x17
-    field public static final int METADATA_KEY_MIMETYPE = 12; // 0xc
-    field public static final int METADATA_KEY_NUM_TRACKS = 10; // 0xa
-    field public static final int METADATA_KEY_TITLE = 7; // 0x7
-    field public static final int METADATA_KEY_VIDEO_FRAME_COUNT = 32; // 0x20
-    field public static final int METADATA_KEY_VIDEO_HEIGHT = 19; // 0x13
-    field public static final int METADATA_KEY_VIDEO_ROTATION = 24; // 0x18
-    field public static final int METADATA_KEY_VIDEO_WIDTH = 18; // 0x12
-    field public static final int METADATA_KEY_WRITER = 11; // 0xb
-    field public static final int METADATA_KEY_YEAR = 8; // 0x8
-    field public static final int OPTION_CLOSEST = 3; // 0x3
-    field public static final int OPTION_CLOSEST_SYNC = 2; // 0x2
-    field public static final int OPTION_NEXT_SYNC = 1; // 0x1
-    field public static final int OPTION_PREVIOUS_SYNC = 0; // 0x0
-  }
-
-  public static final class MediaMetadataRetriever.BitmapParams {
-    ctor public MediaMetadataRetriever.BitmapParams();
-    method @NonNull public android.graphics.Bitmap.Config getActualConfig();
-    method @NonNull public android.graphics.Bitmap.Config getPreferredConfig();
-    method public void setPreferredConfig(@NonNull android.graphics.Bitmap.Config);
-  }
-
-  public final class MediaMuxer {
-    ctor public MediaMuxer(@NonNull String, int) throws java.io.IOException;
-    ctor public MediaMuxer(@NonNull java.io.FileDescriptor, int) throws java.io.IOException;
-    method public int addTrack(@NonNull android.media.MediaFormat);
-    method public void release();
-    method public void setLocation(float, float);
-    method public void setOrientationHint(int);
-    method public void start();
-    method public void stop();
-    method public void writeSampleData(int, @NonNull java.nio.ByteBuffer, @NonNull android.media.MediaCodec.BufferInfo);
-  }
-
-  public static final class MediaMuxer.OutputFormat {
-    field public static final int MUXER_OUTPUT_3GPP = 2; // 0x2
-    field public static final int MUXER_OUTPUT_HEIF = 3; // 0x3
-    field public static final int MUXER_OUTPUT_MPEG_4 = 0; // 0x0
-    field public static final int MUXER_OUTPUT_OGG = 4; // 0x4
-    field public static final int MUXER_OUTPUT_WEBM = 1; // 0x1
-  }
-
-  public class MediaPlayer implements android.media.AudioRouting android.media.VolumeAutomation {
-    ctor public MediaPlayer();
-    method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
-    method public void addTimedTextSource(String, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void addTimedTextSource(android.content.Context, android.net.Uri, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void addTimedTextSource(java.io.FileDescriptor, String) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void addTimedTextSource(java.io.FileDescriptor, long, long, String) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void attachAuxEffect(int);
-    method public void clearOnMediaTimeDiscontinuityListener();
-    method public void clearOnSubtitleDataListener();
-    method public static android.media.MediaPlayer create(android.content.Context, android.net.Uri);
-    method public static android.media.MediaPlayer create(android.content.Context, android.net.Uri, android.view.SurfaceHolder);
-    method public static android.media.MediaPlayer create(android.content.Context, android.net.Uri, android.view.SurfaceHolder, android.media.AudioAttributes, int);
-    method public static android.media.MediaPlayer create(android.content.Context, int);
-    method public static android.media.MediaPlayer create(android.content.Context, int, android.media.AudioAttributes, int);
-    method @NonNull public android.media.VolumeShaper createVolumeShaper(@NonNull android.media.VolumeShaper.Configuration);
-    method public void deselectTrack(int) throws java.lang.IllegalStateException;
-    method protected void finalize();
-    method public int getAudioSessionId();
-    method public int getCurrentPosition();
-    method public android.media.MediaPlayer.DrmInfo getDrmInfo();
-    method @NonNull public String getDrmPropertyString(@NonNull String) throws android.media.MediaPlayer.NoDrmSchemeException;
-    method public int getDuration();
-    method @NonNull public android.media.MediaDrm.KeyRequest getKeyRequest(@Nullable byte[], @Nullable byte[], @Nullable String, int, @Nullable java.util.Map<java.lang.String,java.lang.String>) throws android.media.MediaPlayer.NoDrmSchemeException;
-    method public android.os.PersistableBundle getMetrics();
-    method @NonNull public android.media.PlaybackParams getPlaybackParams();
-    method public android.media.AudioDeviceInfo getPreferredDevice();
-    method public android.media.AudioDeviceInfo getRoutedDevice();
-    method public int getSelectedTrack(int) throws java.lang.IllegalStateException;
-    method @NonNull public android.media.SyncParams getSyncParams();
-    method @Nullable public android.media.MediaTimestamp getTimestamp();
-    method public android.media.MediaPlayer.TrackInfo[] getTrackInfo() throws java.lang.IllegalStateException;
-    method public int getVideoHeight();
-    method public int getVideoWidth();
-    method public boolean isLooping();
-    method public boolean isPlaying();
-    method public void pause() throws java.lang.IllegalStateException;
-    method public void prepare() throws java.io.IOException, java.lang.IllegalStateException;
-    method public void prepareAsync() throws java.lang.IllegalStateException;
-    method public void prepareDrm(@NonNull java.util.UUID) throws android.media.MediaPlayer.ProvisioningNetworkErrorException, android.media.MediaPlayer.ProvisioningServerErrorException, android.media.ResourceBusyException, android.media.UnsupportedSchemeException;
-    method public byte[] provideKeyResponse(@Nullable byte[], @NonNull byte[]) throws android.media.DeniedByServerException, android.media.MediaPlayer.NoDrmSchemeException;
-    method public void release();
-    method public void releaseDrm() throws android.media.MediaPlayer.NoDrmSchemeException;
-    method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
-    method public void reset();
-    method public void restoreKeys(@NonNull byte[]) throws android.media.MediaPlayer.NoDrmSchemeException;
-    method public void seekTo(long, int);
-    method public void seekTo(int) throws java.lang.IllegalStateException;
-    method public void selectTrack(int) throws java.lang.IllegalStateException;
-    method public void setAudioAttributes(android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
-    method public void setAudioSessionId(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method @Deprecated public void setAudioStreamType(int);
-    method public void setAuxEffectSendLevel(float);
-    method public void setDataSource(@NonNull android.content.Context, @NonNull android.net.Uri) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException;
-    method public void setDataSource(@NonNull android.content.Context, @NonNull android.net.Uri, @Nullable java.util.Map<java.lang.String,java.lang.String>, @Nullable java.util.List<java.net.HttpCookie>) throws java.io.IOException;
-    method public void setDataSource(@NonNull android.content.Context, @NonNull android.net.Uri, @Nullable java.util.Map<java.lang.String,java.lang.String>) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException;
-    method public void setDataSource(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException;
-    method public void setDataSource(@NonNull android.content.res.AssetFileDescriptor) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void setDataSource(java.io.FileDescriptor) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void setDataSource(java.io.FileDescriptor, long, long) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void setDataSource(android.media.MediaDataSource) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void setDisplay(android.view.SurfaceHolder);
-    method public void setDrmPropertyString(@NonNull String, @NonNull String) throws android.media.MediaPlayer.NoDrmSchemeException;
-    method public void setLooping(boolean);
-    method public void setNextMediaPlayer(android.media.MediaPlayer);
-    method public void setOnBufferingUpdateListener(android.media.MediaPlayer.OnBufferingUpdateListener);
-    method public void setOnCompletionListener(android.media.MediaPlayer.OnCompletionListener);
-    method public void setOnDrmConfigHelper(android.media.MediaPlayer.OnDrmConfigHelper);
-    method public void setOnDrmInfoListener(android.media.MediaPlayer.OnDrmInfoListener);
-    method public void setOnDrmInfoListener(android.media.MediaPlayer.OnDrmInfoListener, android.os.Handler);
-    method public void setOnDrmPreparedListener(android.media.MediaPlayer.OnDrmPreparedListener);
-    method public void setOnDrmPreparedListener(android.media.MediaPlayer.OnDrmPreparedListener, android.os.Handler);
-    method public void setOnErrorListener(android.media.MediaPlayer.OnErrorListener);
-    method public void setOnInfoListener(android.media.MediaPlayer.OnInfoListener);
-    method public void setOnMediaTimeDiscontinuityListener(@NonNull android.media.MediaPlayer.OnMediaTimeDiscontinuityListener, @NonNull android.os.Handler);
-    method public void setOnMediaTimeDiscontinuityListener(@NonNull android.media.MediaPlayer.OnMediaTimeDiscontinuityListener);
-    method public void setOnPreparedListener(android.media.MediaPlayer.OnPreparedListener);
-    method public void setOnSeekCompleteListener(android.media.MediaPlayer.OnSeekCompleteListener);
-    method public void setOnSubtitleDataListener(@NonNull android.media.MediaPlayer.OnSubtitleDataListener, @NonNull android.os.Handler);
-    method public void setOnSubtitleDataListener(@NonNull android.media.MediaPlayer.OnSubtitleDataListener);
-    method public void setOnTimedMetaDataAvailableListener(android.media.MediaPlayer.OnTimedMetaDataAvailableListener);
-    method public void setOnTimedTextListener(android.media.MediaPlayer.OnTimedTextListener);
-    method public void setOnVideoSizeChangedListener(android.media.MediaPlayer.OnVideoSizeChangedListener);
-    method public void setPlaybackParams(@NonNull android.media.PlaybackParams);
-    method public boolean setPreferredDevice(android.media.AudioDeviceInfo);
-    method public void setScreenOnWhilePlaying(boolean);
-    method public void setSurface(android.view.Surface);
-    method public void setSyncParams(@NonNull android.media.SyncParams);
-    method public void setVideoScalingMode(int);
-    method public void setVolume(float, float);
-    method public void setWakeMode(android.content.Context, int);
-    method public void start() throws java.lang.IllegalStateException;
-    method public void stop() throws java.lang.IllegalStateException;
-    field public static final int MEDIA_ERROR_IO = -1004; // 0xfffffc14
-    field public static final int MEDIA_ERROR_MALFORMED = -1007; // 0xfffffc11
-    field public static final int MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK = 200; // 0xc8
-    field public static final int MEDIA_ERROR_SERVER_DIED = 100; // 0x64
-    field public static final int MEDIA_ERROR_TIMED_OUT = -110; // 0xffffff92
-    field public static final int MEDIA_ERROR_UNKNOWN = 1; // 0x1
-    field public static final int MEDIA_ERROR_UNSUPPORTED = -1010; // 0xfffffc0e
-    field public static final int MEDIA_INFO_AUDIO_NOT_PLAYING = 804; // 0x324
-    field public static final int MEDIA_INFO_BAD_INTERLEAVING = 800; // 0x320
-    field public static final int MEDIA_INFO_BUFFERING_END = 702; // 0x2be
-    field public static final int MEDIA_INFO_BUFFERING_START = 701; // 0x2bd
-    field public static final int MEDIA_INFO_METADATA_UPDATE = 802; // 0x322
-    field public static final int MEDIA_INFO_NOT_SEEKABLE = 801; // 0x321
-    field public static final int MEDIA_INFO_STARTED_AS_NEXT = 2; // 0x2
-    field public static final int MEDIA_INFO_SUBTITLE_TIMED_OUT = 902; // 0x386
-    field public static final int MEDIA_INFO_UNKNOWN = 1; // 0x1
-    field public static final int MEDIA_INFO_UNSUPPORTED_SUBTITLE = 901; // 0x385
-    field public static final int MEDIA_INFO_VIDEO_NOT_PLAYING = 805; // 0x325
-    field public static final int MEDIA_INFO_VIDEO_RENDERING_START = 3; // 0x3
-    field public static final int MEDIA_INFO_VIDEO_TRACK_LAGGING = 700; // 0x2bc
-    field @Deprecated public static final String MEDIA_MIMETYPE_TEXT_SUBRIP = "application/x-subrip";
-    field public static final int PREPARE_DRM_STATUS_PREPARATION_ERROR = 3; // 0x3
-    field public static final int PREPARE_DRM_STATUS_PROVISIONING_NETWORK_ERROR = 1; // 0x1
-    field public static final int PREPARE_DRM_STATUS_PROVISIONING_SERVER_ERROR = 2; // 0x2
-    field public static final int PREPARE_DRM_STATUS_SUCCESS = 0; // 0x0
-    field public static final int SEEK_CLOSEST = 3; // 0x3
-    field public static final int SEEK_CLOSEST_SYNC = 2; // 0x2
-    field public static final int SEEK_NEXT_SYNC = 1; // 0x1
-    field public static final int SEEK_PREVIOUS_SYNC = 0; // 0x0
-    field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT = 1; // 0x1
-    field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING = 2; // 0x2
-  }
-
-  public static final class MediaPlayer.DrmInfo {
-    method public java.util.Map<java.util.UUID,byte[]> getPssh();
-    method public java.util.UUID[] getSupportedSchemes();
-  }
-
-  public static final class MediaPlayer.MetricsConstants {
-    field public static final String CODEC_AUDIO = "android.media.mediaplayer.audio.codec";
-    field public static final String CODEC_VIDEO = "android.media.mediaplayer.video.codec";
-    field public static final String DURATION = "android.media.mediaplayer.durationMs";
-    field public static final String ERRORS = "android.media.mediaplayer.err";
-    field public static final String ERROR_CODE = "android.media.mediaplayer.errcode";
-    field public static final String FRAMES = "android.media.mediaplayer.frames";
-    field public static final String FRAMES_DROPPED = "android.media.mediaplayer.dropped";
-    field public static final String HEIGHT = "android.media.mediaplayer.height";
-    field public static final String MIME_TYPE_AUDIO = "android.media.mediaplayer.audio.mime";
-    field public static final String MIME_TYPE_VIDEO = "android.media.mediaplayer.video.mime";
-    field public static final String PLAYING = "android.media.mediaplayer.playingMs";
-    field public static final String WIDTH = "android.media.mediaplayer.width";
-  }
-
-  public static final class MediaPlayer.NoDrmSchemeException extends android.media.MediaDrmException {
-    ctor public MediaPlayer.NoDrmSchemeException(String);
-  }
-
-  public static interface MediaPlayer.OnBufferingUpdateListener {
-    method public void onBufferingUpdate(android.media.MediaPlayer, int);
-  }
-
-  public static interface MediaPlayer.OnCompletionListener {
-    method public void onCompletion(android.media.MediaPlayer);
-  }
-
-  public static interface MediaPlayer.OnDrmConfigHelper {
-    method public void onDrmConfig(android.media.MediaPlayer);
-  }
-
-  public static interface MediaPlayer.OnDrmInfoListener {
-    method public void onDrmInfo(android.media.MediaPlayer, android.media.MediaPlayer.DrmInfo);
-  }
-
-  public static interface MediaPlayer.OnDrmPreparedListener {
-    method public void onDrmPrepared(android.media.MediaPlayer, int);
-  }
-
-  public static interface MediaPlayer.OnErrorListener {
-    method public boolean onError(android.media.MediaPlayer, int, int);
-  }
-
-  public static interface MediaPlayer.OnInfoListener {
-    method public boolean onInfo(android.media.MediaPlayer, int, int);
-  }
-
-  public static interface MediaPlayer.OnMediaTimeDiscontinuityListener {
-    method public void onMediaTimeDiscontinuity(@NonNull android.media.MediaPlayer, @NonNull android.media.MediaTimestamp);
-  }
-
-  public static interface MediaPlayer.OnPreparedListener {
-    method public void onPrepared(android.media.MediaPlayer);
-  }
-
-  public static interface MediaPlayer.OnSeekCompleteListener {
-    method public void onSeekComplete(android.media.MediaPlayer);
-  }
-
-  public static interface MediaPlayer.OnSubtitleDataListener {
-    method public void onSubtitleData(@NonNull android.media.MediaPlayer, @NonNull android.media.SubtitleData);
-  }
-
-  public static interface MediaPlayer.OnTimedMetaDataAvailableListener {
-    method public void onTimedMetaDataAvailable(android.media.MediaPlayer, android.media.TimedMetaData);
-  }
-
-  public static interface MediaPlayer.OnTimedTextListener {
-    method public void onTimedText(android.media.MediaPlayer, android.media.TimedText);
-  }
-
-  public static interface MediaPlayer.OnVideoSizeChangedListener {
-    method public void onVideoSizeChanged(android.media.MediaPlayer, int, int);
-  }
-
-  public static final class MediaPlayer.ProvisioningNetworkErrorException extends android.media.MediaDrmException {
-    ctor public MediaPlayer.ProvisioningNetworkErrorException(String);
-  }
-
-  public static final class MediaPlayer.ProvisioningServerErrorException extends android.media.MediaDrmException {
-    ctor public MediaPlayer.ProvisioningServerErrorException(String);
-  }
-
-  public static class MediaPlayer.TrackInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.media.MediaFormat getFormat();
-    method public String getLanguage();
-    method public int getTrackType();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int MEDIA_TRACK_TYPE_AUDIO = 2; // 0x2
-    field public static final int MEDIA_TRACK_TYPE_METADATA = 5; // 0x5
-    field public static final int MEDIA_TRACK_TYPE_SUBTITLE = 4; // 0x4
-    field public static final int MEDIA_TRACK_TYPE_TIMEDTEXT = 3; // 0x3
-    field public static final int MEDIA_TRACK_TYPE_UNKNOWN = 0; // 0x0
-    field public static final int MEDIA_TRACK_TYPE_VIDEO = 1; // 0x1
-  }
-
-  public class MediaRecorder implements android.media.AudioRecordingMonitor android.media.AudioRouting android.media.MicrophoneDirection {
-    ctor public MediaRecorder();
-    method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
-    method protected void finalize();
-    method public java.util.List<android.media.MicrophoneInfo> getActiveMicrophones() throws java.io.IOException;
-    method @Nullable public android.media.AudioRecordingConfiguration getActiveRecordingConfiguration();
-    method public static final int getAudioSourceMax();
-    method public int getMaxAmplitude() throws java.lang.IllegalStateException;
-    method public android.os.PersistableBundle getMetrics();
-    method public android.media.AudioDeviceInfo getPreferredDevice();
-    method public android.media.AudioDeviceInfo getRoutedDevice();
-    method public android.view.Surface getSurface();
-    method public boolean isPrivacySensitive();
-    method public void pause() throws java.lang.IllegalStateException;
-    method public void prepare() throws java.io.IOException, java.lang.IllegalStateException;
-    method public void registerAudioRecordingCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.AudioRecordingCallback);
-    method public void release();
-    method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
-    method public void reset();
-    method public void resume() throws java.lang.IllegalStateException;
-    method public void setAudioChannels(int);
-    method public void setAudioEncoder(int) throws java.lang.IllegalStateException;
-    method public void setAudioEncodingBitRate(int);
-    method public void setAudioSamplingRate(int);
-    method public void setAudioSource(int) throws java.lang.IllegalStateException;
-    method @Deprecated public void setCamera(android.hardware.Camera);
-    method public void setCaptureRate(double);
-    method public void setInputSurface(@NonNull android.view.Surface);
-    method public void setLocation(float, float);
-    method public void setMaxDuration(int) throws java.lang.IllegalArgumentException;
-    method public void setMaxFileSize(long) throws java.lang.IllegalArgumentException;
-    method public void setNextOutputFile(java.io.FileDescriptor) throws java.io.IOException;
-    method public void setNextOutputFile(java.io.File) throws java.io.IOException;
-    method public void setOnErrorListener(android.media.MediaRecorder.OnErrorListener);
-    method public void setOnInfoListener(android.media.MediaRecorder.OnInfoListener);
-    method public void setOrientationHint(int);
-    method public void setOutputFile(java.io.FileDescriptor) throws java.lang.IllegalStateException;
-    method public void setOutputFile(java.io.File);
-    method public void setOutputFile(String) throws java.lang.IllegalStateException;
-    method public void setOutputFormat(int) throws java.lang.IllegalStateException;
-    method public boolean setPreferredDevice(android.media.AudioDeviceInfo);
-    method public boolean setPreferredMicrophoneDirection(int);
-    method public boolean setPreferredMicrophoneFieldDimension(@FloatRange(from=-1.0, to=1.0) float);
-    method public void setPreviewDisplay(android.view.Surface);
-    method public void setPrivacySensitive(boolean);
-    method public void setProfile(android.media.CamcorderProfile);
-    method public void setVideoEncoder(int) throws java.lang.IllegalStateException;
-    method public void setVideoEncodingBitRate(int);
-    method public void setVideoEncodingProfileLevel(int, int);
-    method public void setVideoFrameRate(int) throws java.lang.IllegalStateException;
-    method public void setVideoSize(int, int) throws java.lang.IllegalStateException;
-    method public void setVideoSource(int) throws java.lang.IllegalStateException;
-    method public void start() throws java.lang.IllegalStateException;
-    method public void stop() throws java.lang.IllegalStateException;
-    method public void unregisterAudioRecordingCallback(@NonNull android.media.AudioManager.AudioRecordingCallback);
-    field public static final int MEDIA_ERROR_SERVER_DIED = 100; // 0x64
-    field public static final int MEDIA_RECORDER_ERROR_UNKNOWN = 1; // 0x1
-    field public static final int MEDIA_RECORDER_INFO_MAX_DURATION_REACHED = 800; // 0x320
-    field public static final int MEDIA_RECORDER_INFO_MAX_FILESIZE_APPROACHING = 802; // 0x322
-    field public static final int MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED = 801; // 0x321
-    field public static final int MEDIA_RECORDER_INFO_NEXT_OUTPUT_FILE_STARTED = 803; // 0x323
-    field public static final int MEDIA_RECORDER_INFO_UNKNOWN = 1; // 0x1
-  }
-
-  public final class MediaRecorder.AudioEncoder {
-    field public static final int AAC = 3; // 0x3
-    field public static final int AAC_ELD = 5; // 0x5
-    field public static final int AMR_NB = 1; // 0x1
-    field public static final int AMR_WB = 2; // 0x2
-    field public static final int DEFAULT = 0; // 0x0
-    field public static final int HE_AAC = 4; // 0x4
-    field public static final int OPUS = 7; // 0x7
-    field public static final int VORBIS = 6; // 0x6
-  }
-
-  public final class MediaRecorder.AudioSource {
-    field public static final int CAMCORDER = 5; // 0x5
-    field public static final int DEFAULT = 0; // 0x0
-    field public static final int MIC = 1; // 0x1
-    field @RequiresPermission(android.Manifest.permission.CAPTURE_AUDIO_OUTPUT) public static final int REMOTE_SUBMIX = 8; // 0x8
-    field public static final int UNPROCESSED = 9; // 0x9
-    field public static final int VOICE_CALL = 4; // 0x4
-    field public static final int VOICE_COMMUNICATION = 7; // 0x7
-    field public static final int VOICE_DOWNLINK = 3; // 0x3
-    field public static final int VOICE_PERFORMANCE = 10; // 0xa
-    field public static final int VOICE_RECOGNITION = 6; // 0x6
-    field public static final int VOICE_UPLINK = 2; // 0x2
-  }
-
-  public static final class MediaRecorder.MetricsConstants {
-    field public static final String AUDIO_BITRATE = "android.media.mediarecorder.audio-bitrate";
-    field public static final String AUDIO_CHANNELS = "android.media.mediarecorder.audio-channels";
-    field public static final String AUDIO_SAMPLERATE = "android.media.mediarecorder.audio-samplerate";
-    field public static final String AUDIO_TIMESCALE = "android.media.mediarecorder.audio-timescale";
-    field public static final String CAPTURE_FPS = "android.media.mediarecorder.capture-fps";
-    field public static final String CAPTURE_FPS_ENABLE = "android.media.mediarecorder.capture-fpsenable";
-    field public static final String FRAMERATE = "android.media.mediarecorder.frame-rate";
-    field public static final String HEIGHT = "android.media.mediarecorder.height";
-    field public static final String MOVIE_TIMESCALE = "android.media.mediarecorder.movie-timescale";
-    field public static final String ROTATION = "android.media.mediarecorder.rotation";
-    field public static final String VIDEO_BITRATE = "android.media.mediarecorder.video-bitrate";
-    field public static final String VIDEO_IFRAME_INTERVAL = "android.media.mediarecorder.video-iframe-interval";
-    field public static final String VIDEO_LEVEL = "android.media.mediarecorder.video-encoder-level";
-    field public static final String VIDEO_PROFILE = "android.media.mediarecorder.video-encoder-profile";
-    field public static final String VIDEO_TIMESCALE = "android.media.mediarecorder.video-timescale";
-    field public static final String WIDTH = "android.media.mediarecorder.width";
-  }
-
-  public static interface MediaRecorder.OnErrorListener {
-    method public void onError(android.media.MediaRecorder, int, int);
-  }
-
-  public static interface MediaRecorder.OnInfoListener {
-    method public void onInfo(android.media.MediaRecorder, int, int);
-  }
-
-  public final class MediaRecorder.OutputFormat {
-    field public static final int AAC_ADTS = 6; // 0x6
-    field public static final int AMR_NB = 3; // 0x3
-    field public static final int AMR_WB = 4; // 0x4
-    field public static final int DEFAULT = 0; // 0x0
-    field public static final int MPEG_2_TS = 8; // 0x8
-    field public static final int MPEG_4 = 2; // 0x2
-    field public static final int OGG = 11; // 0xb
-    field @Deprecated public static final int RAW_AMR = 3; // 0x3
-    field public static final int THREE_GPP = 1; // 0x1
-    field public static final int WEBM = 9; // 0x9
-  }
-
-  public final class MediaRecorder.VideoEncoder {
-    field public static final int DEFAULT = 0; // 0x0
-    field public static final int H263 = 1; // 0x1
-    field public static final int H264 = 2; // 0x2
-    field public static final int HEVC = 5; // 0x5
-    field public static final int MPEG_4_SP = 3; // 0x3
-    field public static final int VP8 = 4; // 0x4
-  }
-
-  public final class MediaRecorder.VideoSource {
-    field public static final int CAMERA = 1; // 0x1
-    field public static final int DEFAULT = 0; // 0x0
-    field public static final int SURFACE = 2; // 0x2
-  }
-
-  public final class MediaRoute2Info implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getClientPackageName();
-    method public int getConnectionState();
-    method @Nullable public CharSequence getDescription();
-    method @Nullable public android.os.Bundle getExtras();
-    method @NonNull public java.util.List<java.lang.String> getFeatures();
-    method @Nullable public android.net.Uri getIconUri();
-    method @NonNull public String getId();
-    method @NonNull public CharSequence getName();
-    method public int getVolume();
-    method public int getVolumeHandling();
-    method public int getVolumeMax();
-    method public boolean isSystemRoute();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final int CONNECTION_STATE_CONNECTED = 2; // 0x2
-    field public static final int CONNECTION_STATE_CONNECTING = 1; // 0x1
-    field public static final int CONNECTION_STATE_DISCONNECTED = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.MediaRoute2Info> CREATOR;
-    field public static final String FEATURE_LIVE_AUDIO = "android.media.route.feature.LIVE_AUDIO";
-    field public static final String FEATURE_LIVE_VIDEO = "android.media.route.feature.LIVE_VIDEO";
-    field public static final String FEATURE_REMOTE_AUDIO_PLAYBACK = "android.media.route.feature.REMOTE_AUDIO_PLAYBACK";
-    field public static final String FEATURE_REMOTE_PLAYBACK = "android.media.route.feature.REMOTE_PLAYBACK";
-    field public static final String FEATURE_REMOTE_VIDEO_PLAYBACK = "android.media.route.feature.REMOTE_VIDEO_PLAYBACK";
-    field public static final int PLAYBACK_VOLUME_FIXED = 0; // 0x0
-    field public static final int PLAYBACK_VOLUME_VARIABLE = 1; // 0x1
-  }
-
-  public static final class MediaRoute2Info.Builder {
-    ctor public MediaRoute2Info.Builder(@NonNull String, @NonNull CharSequence);
-    ctor public MediaRoute2Info.Builder(@NonNull android.media.MediaRoute2Info);
-    method @NonNull public android.media.MediaRoute2Info.Builder addFeature(@NonNull String);
-    method @NonNull public android.media.MediaRoute2Info.Builder addFeatures(@NonNull java.util.Collection<java.lang.String>);
-    method @NonNull public android.media.MediaRoute2Info build();
-    method @NonNull public android.media.MediaRoute2Info.Builder clearFeatures();
-    method @NonNull public android.media.MediaRoute2Info.Builder setClientPackageName(@Nullable String);
-    method @NonNull public android.media.MediaRoute2Info.Builder setConnectionState(int);
-    method @NonNull public android.media.MediaRoute2Info.Builder setDescription(@Nullable CharSequence);
-    method @NonNull public android.media.MediaRoute2Info.Builder setExtras(@Nullable android.os.Bundle);
-    method @NonNull public android.media.MediaRoute2Info.Builder setIconUri(@Nullable android.net.Uri);
-    method @NonNull public android.media.MediaRoute2Info.Builder setVolume(int);
-    method @NonNull public android.media.MediaRoute2Info.Builder setVolumeHandling(int);
-    method @NonNull public android.media.MediaRoute2Info.Builder setVolumeMax(int);
-  }
-
-  public abstract class MediaRoute2ProviderService extends android.app.Service {
-    ctor public MediaRoute2ProviderService();
-    method @NonNull public final java.util.List<android.media.RoutingSessionInfo> getAllSessionInfo();
-    method @Nullable public final android.media.RoutingSessionInfo getSessionInfo(@NonNull String);
-    method public final void notifyRequestFailed(long, int);
-    method public final void notifyRoutes(@NonNull java.util.Collection<android.media.MediaRoute2Info>);
-    method public final void notifySessionCreated(long, @NonNull android.media.RoutingSessionInfo);
-    method public final void notifySessionReleased(@NonNull String);
-    method public final void notifySessionUpdated(@NonNull android.media.RoutingSessionInfo);
-    method @CallSuper @Nullable public android.os.IBinder onBind(@NonNull android.content.Intent);
-    method public abstract void onCreateSession(long, @NonNull String, @NonNull String, @Nullable android.os.Bundle);
-    method public abstract void onDeselectRoute(long, @NonNull String, @NonNull String);
-    method public void onDiscoveryPreferenceChanged(@NonNull android.media.RouteDiscoveryPreference);
-    method public abstract void onReleaseSession(long, @NonNull String);
-    method public abstract void onSelectRoute(long, @NonNull String, @NonNull String);
-    method public abstract void onSetRouteVolume(long, @NonNull String, int);
-    method public abstract void onSetSessionVolume(long, @NonNull String, int);
-    method public abstract void onTransferToRoute(long, @NonNull String, @NonNull String);
-    field public static final int REASON_INVALID_COMMAND = 4; // 0x4
-    field public static final int REASON_NETWORK_ERROR = 2; // 0x2
-    field public static final int REASON_REJECTED = 1; // 0x1
-    field public static final int REASON_ROUTE_NOT_AVAILABLE = 3; // 0x3
-    field public static final int REASON_UNKNOWN_ERROR = 0; // 0x0
-    field public static final long REQUEST_ID_NONE = 0L; // 0x0L
-    field public static final String SERVICE_INTERFACE = "android.media.MediaRoute2ProviderService";
-  }
-
-  public class MediaRouter {
-    method public void addCallback(int, android.media.MediaRouter.Callback);
-    method public void addCallback(int, android.media.MediaRouter.Callback, int);
-    method public void addUserRoute(android.media.MediaRouter.UserRouteInfo);
-    method public void clearUserRoutes();
-    method public android.media.MediaRouter.RouteCategory createRouteCategory(CharSequence, boolean);
-    method public android.media.MediaRouter.RouteCategory createRouteCategory(int, boolean);
-    method public android.media.MediaRouter.UserRouteInfo createUserRoute(android.media.MediaRouter.RouteCategory);
-    method public android.media.MediaRouter.RouteCategory getCategoryAt(int);
-    method public int getCategoryCount();
-    method public android.media.MediaRouter.RouteInfo getDefaultRoute();
-    method public android.media.MediaRouter.RouteInfo getRouteAt(int);
-    method public int getRouteCount();
-    method public android.media.MediaRouter.RouteInfo getSelectedRoute(int);
-    method public void removeCallback(android.media.MediaRouter.Callback);
-    method public void removeUserRoute(android.media.MediaRouter.UserRouteInfo);
-    method public void selectRoute(int, @NonNull android.media.MediaRouter.RouteInfo);
-    field public static final int CALLBACK_FLAG_PERFORM_ACTIVE_SCAN = 1; // 0x1
-    field public static final int CALLBACK_FLAG_UNFILTERED_EVENTS = 2; // 0x2
-    field public static final int ROUTE_TYPE_LIVE_AUDIO = 1; // 0x1
-    field public static final int ROUTE_TYPE_LIVE_VIDEO = 2; // 0x2
-    field public static final int ROUTE_TYPE_USER = 8388608; // 0x800000
-  }
-
-  public abstract static class MediaRouter.Callback {
-    ctor public MediaRouter.Callback();
-    method public abstract void onRouteAdded(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
-    method public abstract void onRouteChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
-    method public abstract void onRouteGrouped(android.media.MediaRouter, android.media.MediaRouter.RouteInfo, android.media.MediaRouter.RouteGroup, int);
-    method public void onRoutePresentationDisplayChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
-    method public abstract void onRouteRemoved(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
-    method public abstract void onRouteSelected(android.media.MediaRouter, int, android.media.MediaRouter.RouteInfo);
-    method public abstract void onRouteUngrouped(android.media.MediaRouter, android.media.MediaRouter.RouteInfo, android.media.MediaRouter.RouteGroup);
-    method public abstract void onRouteUnselected(android.media.MediaRouter, int, android.media.MediaRouter.RouteInfo);
-    method public abstract void onRouteVolumeChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
-  }
-
-  public static class MediaRouter.RouteCategory {
-    method public CharSequence getName();
-    method public CharSequence getName(android.content.Context);
-    method public java.util.List<android.media.MediaRouter.RouteInfo> getRoutes(java.util.List<android.media.MediaRouter.RouteInfo>);
-    method public int getSupportedTypes();
-    method public boolean isGroupable();
-  }
-
-  public static class MediaRouter.RouteGroup extends android.media.MediaRouter.RouteInfo {
-    method public void addRoute(android.media.MediaRouter.RouteInfo);
-    method public void addRoute(android.media.MediaRouter.RouteInfo, int);
-    method public android.media.MediaRouter.RouteInfo getRouteAt(int);
-    method public int getRouteCount();
-    method public void removeRoute(android.media.MediaRouter.RouteInfo);
-    method public void removeRoute(int);
-    method public void setIconDrawable(android.graphics.drawable.Drawable);
-    method public void setIconResource(@DrawableRes int);
-  }
-
-  public static class MediaRouter.RouteInfo {
-    method public android.media.MediaRouter.RouteCategory getCategory();
-    method public CharSequence getDescription();
-    method public int getDeviceType();
-    method public android.media.MediaRouter.RouteGroup getGroup();
-    method public android.graphics.drawable.Drawable getIconDrawable();
-    method public CharSequence getName();
-    method public CharSequence getName(android.content.Context);
-    method public int getPlaybackStream();
-    method public int getPlaybackType();
-    method public android.view.Display getPresentationDisplay();
-    method public CharSequence getStatus();
-    method public int getSupportedTypes();
-    method public Object getTag();
-    method public int getVolume();
-    method public int getVolumeHandling();
-    method public int getVolumeMax();
-    method public boolean isConnecting();
-    method public boolean isEnabled();
-    method public void requestSetVolume(int);
-    method public void requestUpdateVolume(int);
-    method public void setTag(Object);
-    field public static final int DEVICE_TYPE_BLUETOOTH = 3; // 0x3
-    field public static final int DEVICE_TYPE_SPEAKER = 2; // 0x2
-    field public static final int DEVICE_TYPE_TV = 1; // 0x1
-    field public static final int DEVICE_TYPE_UNKNOWN = 0; // 0x0
-    field public static final int PLAYBACK_TYPE_LOCAL = 0; // 0x0
-    field public static final int PLAYBACK_TYPE_REMOTE = 1; // 0x1
-    field public static final int PLAYBACK_VOLUME_FIXED = 0; // 0x0
-    field public static final int PLAYBACK_VOLUME_VARIABLE = 1; // 0x1
-  }
-
-  public static class MediaRouter.SimpleCallback extends android.media.MediaRouter.Callback {
-    ctor public MediaRouter.SimpleCallback();
-    method public void onRouteAdded(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
-    method public void onRouteChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
-    method public void onRouteGrouped(android.media.MediaRouter, android.media.MediaRouter.RouteInfo, android.media.MediaRouter.RouteGroup, int);
-    method public void onRouteRemoved(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
-    method public void onRouteSelected(android.media.MediaRouter, int, android.media.MediaRouter.RouteInfo);
-    method public void onRouteUngrouped(android.media.MediaRouter, android.media.MediaRouter.RouteInfo, android.media.MediaRouter.RouteGroup);
-    method public void onRouteUnselected(android.media.MediaRouter, int, android.media.MediaRouter.RouteInfo);
-    method public void onRouteVolumeChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo);
-  }
-
-  public static class MediaRouter.UserRouteInfo extends android.media.MediaRouter.RouteInfo {
-    method public android.media.RemoteControlClient getRemoteControlClient();
-    method public void setDescription(CharSequence);
-    method public void setIconDrawable(android.graphics.drawable.Drawable);
-    method public void setIconResource(@DrawableRes int);
-    method public void setName(CharSequence);
-    method public void setName(int);
-    method public void setPlaybackStream(int);
-    method public void setPlaybackType(int);
-    method public void setRemoteControlClient(android.media.RemoteControlClient);
-    method public void setStatus(CharSequence);
-    method public void setVolume(int);
-    method public void setVolumeCallback(android.media.MediaRouter.VolumeCallback);
-    method public void setVolumeHandling(int);
-    method public void setVolumeMax(int);
-  }
-
-  public abstract static class MediaRouter.VolumeCallback {
-    ctor public MediaRouter.VolumeCallback();
-    method public abstract void onVolumeSetRequest(android.media.MediaRouter.RouteInfo, int);
-    method public abstract void onVolumeUpdateRequest(android.media.MediaRouter.RouteInfo, int);
-  }
-
-  public final class MediaRouter2 {
-    method @NonNull public java.util.List<android.media.MediaRouter2.RoutingController> getControllers();
-    method @NonNull public static android.media.MediaRouter2 getInstance(@NonNull android.content.Context);
-    method @NonNull public java.util.List<android.media.MediaRoute2Info> getRoutes();
-    method @NonNull public android.media.MediaRouter2.RoutingController getSystemController();
-    method public void registerControllerCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.ControllerCallback);
-    method public void registerRouteCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.RouteCallback, @NonNull android.media.RouteDiscoveryPreference);
-    method public void registerTransferCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.TransferCallback);
-    method public void setOnGetControllerHintsListener(@Nullable android.media.MediaRouter2.OnGetControllerHintsListener);
-    method public void stop();
-    method public void transferTo(@NonNull android.media.MediaRoute2Info);
-    method public void unregisterControllerCallback(@NonNull android.media.MediaRouter2.ControllerCallback);
-    method public void unregisterRouteCallback(@NonNull android.media.MediaRouter2.RouteCallback);
-    method public void unregisterTransferCallback(@NonNull android.media.MediaRouter2.TransferCallback);
-  }
-
-  public abstract static class MediaRouter2.ControllerCallback {
-    ctor public MediaRouter2.ControllerCallback();
-    method public void onControllerUpdated(@NonNull android.media.MediaRouter2.RoutingController);
-  }
-
-  public static interface MediaRouter2.OnGetControllerHintsListener {
-    method @Nullable public android.os.Bundle onGetControllerHints(@NonNull android.media.MediaRoute2Info);
-  }
-
-  public abstract static class MediaRouter2.RouteCallback {
-    ctor public MediaRouter2.RouteCallback();
-    method public void onRoutesAdded(@NonNull java.util.List<android.media.MediaRoute2Info>);
-    method public void onRoutesChanged(@NonNull java.util.List<android.media.MediaRoute2Info>);
-    method public void onRoutesRemoved(@NonNull java.util.List<android.media.MediaRoute2Info>);
-  }
-
-  public class MediaRouter2.RoutingController {
-    method public void deselectRoute(@NonNull android.media.MediaRoute2Info);
-    method @Nullable public android.os.Bundle getControlHints();
-    method @NonNull public java.util.List<android.media.MediaRoute2Info> getDeselectableRoutes();
-    method @NonNull public String getId();
-    method @NonNull public java.util.List<android.media.MediaRoute2Info> getSelectableRoutes();
-    method @NonNull public java.util.List<android.media.MediaRoute2Info> getSelectedRoutes();
-    method public int getVolume();
-    method public int getVolumeHandling();
-    method public int getVolumeMax();
-    method public boolean isReleased();
-    method public void release();
-    method public void selectRoute(@NonNull android.media.MediaRoute2Info);
-    method public void setVolume(int);
-  }
-
-  public abstract static class MediaRouter2.TransferCallback {
-    ctor public MediaRouter2.TransferCallback();
-    method public void onStop(@NonNull android.media.MediaRouter2.RoutingController);
-    method public void onTransfer(@NonNull android.media.MediaRouter2.RoutingController, @NonNull android.media.MediaRouter2.RoutingController);
-    method public void onTransferFailure(@NonNull android.media.MediaRoute2Info);
-  }
-
-  public class MediaScannerConnection implements android.content.ServiceConnection {
-    ctor public MediaScannerConnection(android.content.Context, android.media.MediaScannerConnection.MediaScannerConnectionClient);
-    method public void connect();
-    method public void disconnect();
-    method public boolean isConnected();
-    method public void onServiceConnected(android.content.ComponentName, android.os.IBinder);
-    method public void onServiceDisconnected(android.content.ComponentName);
-    method public void scanFile(String, String);
-    method public static void scanFile(android.content.Context, String[], String[], android.media.MediaScannerConnection.OnScanCompletedListener);
-  }
-
-  public static interface MediaScannerConnection.MediaScannerConnectionClient extends android.media.MediaScannerConnection.OnScanCompletedListener {
-    method public void onMediaScannerConnected();
-  }
-
-  public static interface MediaScannerConnection.OnScanCompletedListener {
-    method public void onScanCompleted(String, android.net.Uri);
-  }
-
-  public final class MediaSync {
-    ctor public MediaSync();
-    method @NonNull public android.view.Surface createInputSurface();
-    method protected void finalize();
-    method public void flush();
-    method @NonNull public android.media.PlaybackParams getPlaybackParams();
-    method @NonNull public android.media.SyncParams getSyncParams();
-    method @Nullable public android.media.MediaTimestamp getTimestamp();
-    method public void queueAudio(@NonNull java.nio.ByteBuffer, int, long);
-    method public void release();
-    method public void setAudioTrack(@Nullable android.media.AudioTrack);
-    method public void setCallback(@Nullable android.media.MediaSync.Callback, @Nullable android.os.Handler);
-    method public void setOnErrorListener(@Nullable android.media.MediaSync.OnErrorListener, @Nullable android.os.Handler);
-    method public void setPlaybackParams(@NonNull android.media.PlaybackParams);
-    method public void setSurface(@Nullable android.view.Surface);
-    method public void setSyncParams(@NonNull android.media.SyncParams);
-    field public static final int MEDIASYNC_ERROR_AUDIOTRACK_FAIL = 1; // 0x1
-    field public static final int MEDIASYNC_ERROR_SURFACE_FAIL = 2; // 0x2
-  }
-
-  public abstract static class MediaSync.Callback {
-    ctor public MediaSync.Callback();
-    method public abstract void onAudioBufferConsumed(@NonNull android.media.MediaSync, @NonNull java.nio.ByteBuffer, int);
-  }
-
-  public static interface MediaSync.OnErrorListener {
-    method public void onError(@NonNull android.media.MediaSync, int, int);
-  }
-
-  public class MediaSyncEvent {
-    method public static android.media.MediaSyncEvent createEvent(int) throws java.lang.IllegalArgumentException;
-    method public int getAudioSessionId();
-    method public int getType();
-    method public android.media.MediaSyncEvent setAudioSessionId(int) throws java.lang.IllegalArgumentException;
-    field public static final int SYNC_EVENT_NONE = 0; // 0x0
-    field public static final int SYNC_EVENT_PRESENTATION_COMPLETE = 1; // 0x1
-  }
-
-  public final class MediaTimestamp {
-    ctor public MediaTimestamp(long, long, @FloatRange(from=0.0f, to=java.lang.Float.MAX_VALUE) float);
-    method public long getAnchorMediaTimeUs();
-    method public long getAnchorSystemNanoTime();
-    method @Deprecated public long getAnchorSytemNanoTime();
-    method @FloatRange(from=0.0f, to=java.lang.Float.MAX_VALUE) public float getMediaClockRate();
-    field public static final android.media.MediaTimestamp TIMESTAMP_UNKNOWN;
-  }
-
-  public interface MicrophoneDirection {
-    method public boolean setPreferredMicrophoneDirection(int);
-    method public boolean setPreferredMicrophoneFieldDimension(@FloatRange(from=-1.0, to=1.0) float);
-    field public static final int MIC_DIRECTION_AWAY_FROM_USER = 2; // 0x2
-    field public static final int MIC_DIRECTION_EXTERNAL = 3; // 0x3
-    field public static final int MIC_DIRECTION_TOWARDS_USER = 1; // 0x1
-    field public static final int MIC_DIRECTION_UNSPECIFIED = 0; // 0x0
-  }
-
-  public final class MicrophoneInfo {
-    method @NonNull public String getAddress();
-    method public java.util.List<android.util.Pair<java.lang.Integer,java.lang.Integer>> getChannelMapping();
-    method public String getDescription();
-    method public int getDirectionality();
-    method public java.util.List<android.util.Pair<java.lang.Float,java.lang.Float>> getFrequencyResponse();
-    method public int getGroup();
-    method public int getId();
-    method public int getIndexInTheGroup();
-    method public int getLocation();
-    method public float getMaxSpl();
-    method public float getMinSpl();
-    method public android.media.MicrophoneInfo.Coordinate3F getOrientation();
-    method public android.media.MicrophoneInfo.Coordinate3F getPosition();
-    method public float getSensitivity();
-    method public int getType();
-    field public static final int CHANNEL_MAPPING_DIRECT = 1; // 0x1
-    field public static final int CHANNEL_MAPPING_PROCESSED = 2; // 0x2
-    field public static final int DIRECTIONALITY_BI_DIRECTIONAL = 2; // 0x2
-    field public static final int DIRECTIONALITY_CARDIOID = 3; // 0x3
-    field public static final int DIRECTIONALITY_HYPER_CARDIOID = 4; // 0x4
-    field public static final int DIRECTIONALITY_OMNI = 1; // 0x1
-    field public static final int DIRECTIONALITY_SUPER_CARDIOID = 5; // 0x5
-    field public static final int DIRECTIONALITY_UNKNOWN = 0; // 0x0
-    field public static final int GROUP_UNKNOWN = -1; // 0xffffffff
-    field public static final int INDEX_IN_THE_GROUP_UNKNOWN = -1; // 0xffffffff
-    field public static final int LOCATION_MAINBODY = 1; // 0x1
-    field public static final int LOCATION_MAINBODY_MOVABLE = 2; // 0x2
-    field public static final int LOCATION_PERIPHERAL = 3; // 0x3
-    field public static final int LOCATION_UNKNOWN = 0; // 0x0
-    field public static final android.media.MicrophoneInfo.Coordinate3F ORIENTATION_UNKNOWN;
-    field public static final android.media.MicrophoneInfo.Coordinate3F POSITION_UNKNOWN;
-    field public static final float SENSITIVITY_UNKNOWN = -3.4028235E38f;
-    field public static final float SPL_UNKNOWN = -3.4028235E38f;
-  }
-
-  public static final class MicrophoneInfo.Coordinate3F {
-    field public final float x;
-    field public final float y;
-    field public final float z;
-  }
-
-  public final class NotProvisionedException extends android.media.MediaDrmException {
-    ctor public NotProvisionedException(String);
-  }
-
-  public final class PlaybackParams implements android.os.Parcelable {
-    ctor public PlaybackParams();
-    method public android.media.PlaybackParams allowDefaults();
-    method public int describeContents();
-    method public int getAudioFallbackMode();
-    method public float getPitch();
-    method public float getSpeed();
-    method public android.media.PlaybackParams setAudioFallbackMode(int);
-    method public android.media.PlaybackParams setPitch(float);
-    method public android.media.PlaybackParams setSpeed(float);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int AUDIO_FALLBACK_MODE_DEFAULT = 0; // 0x0
-    field public static final int AUDIO_FALLBACK_MODE_FAIL = 2; // 0x2
-    field public static final int AUDIO_FALLBACK_MODE_MUTE = 1; // 0x1
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.PlaybackParams> CREATOR;
-  }
-
-  public final class Rating implements android.os.Parcelable {
-    method public int describeContents();
-    method public float getPercentRating();
-    method public int getRatingStyle();
-    method public float getStarRating();
-    method public boolean hasHeart();
-    method public boolean isRated();
-    method public boolean isThumbUp();
-    method public static android.media.Rating newHeartRating(boolean);
-    method public static android.media.Rating newPercentageRating(float);
-    method public static android.media.Rating newStarRating(int, float);
-    method public static android.media.Rating newThumbRating(boolean);
-    method public static android.media.Rating newUnratedRating(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.Rating> CREATOR;
-    field public static final int RATING_3_STARS = 3; // 0x3
-    field public static final int RATING_4_STARS = 4; // 0x4
-    field public static final int RATING_5_STARS = 5; // 0x5
-    field public static final int RATING_HEART = 1; // 0x1
-    field public static final int RATING_NONE = 0; // 0x0
-    field public static final int RATING_PERCENTAGE = 6; // 0x6
-    field public static final int RATING_THUMB_UP_DOWN = 2; // 0x2
-  }
-
-  @Deprecated public class RemoteControlClient {
-    ctor @Deprecated public RemoteControlClient(android.app.PendingIntent);
-    ctor @Deprecated public RemoteControlClient(android.app.PendingIntent, android.os.Looper);
-    method @Deprecated public android.media.RemoteControlClient.MetadataEditor editMetadata(boolean);
-    method @Deprecated public android.media.session.MediaSession getMediaSession();
-    method @Deprecated public void setMetadataUpdateListener(android.media.RemoteControlClient.OnMetadataUpdateListener);
-    method @Deprecated public void setOnGetPlaybackPositionListener(android.media.RemoteControlClient.OnGetPlaybackPositionListener);
-    method @Deprecated public void setPlaybackPositionUpdateListener(android.media.RemoteControlClient.OnPlaybackPositionUpdateListener);
-    method @Deprecated public void setPlaybackState(int);
-    method @Deprecated public void setPlaybackState(int, long, float);
-    method @Deprecated public void setTransportControlFlags(int);
-    field @Deprecated public static final int FLAG_KEY_MEDIA_FAST_FORWARD = 64; // 0x40
-    field @Deprecated public static final int FLAG_KEY_MEDIA_NEXT = 128; // 0x80
-    field @Deprecated public static final int FLAG_KEY_MEDIA_PAUSE = 16; // 0x10
-    field @Deprecated public static final int FLAG_KEY_MEDIA_PLAY = 4; // 0x4
-    field @Deprecated public static final int FLAG_KEY_MEDIA_PLAY_PAUSE = 8; // 0x8
-    field @Deprecated public static final int FLAG_KEY_MEDIA_POSITION_UPDATE = 256; // 0x100
-    field @Deprecated public static final int FLAG_KEY_MEDIA_PREVIOUS = 1; // 0x1
-    field @Deprecated public static final int FLAG_KEY_MEDIA_RATING = 512; // 0x200
-    field @Deprecated public static final int FLAG_KEY_MEDIA_REWIND = 2; // 0x2
-    field @Deprecated public static final int FLAG_KEY_MEDIA_STOP = 32; // 0x20
-    field @Deprecated public static final int PLAYSTATE_BUFFERING = 8; // 0x8
-    field @Deprecated public static final int PLAYSTATE_ERROR = 9; // 0x9
-    field @Deprecated public static final int PLAYSTATE_FAST_FORWARDING = 4; // 0x4
-    field @Deprecated public static final int PLAYSTATE_PAUSED = 2; // 0x2
-    field @Deprecated public static final int PLAYSTATE_PLAYING = 3; // 0x3
-    field @Deprecated public static final int PLAYSTATE_REWINDING = 5; // 0x5
-    field @Deprecated public static final int PLAYSTATE_SKIPPING_BACKWARDS = 7; // 0x7
-    field @Deprecated public static final int PLAYSTATE_SKIPPING_FORWARDS = 6; // 0x6
-    field @Deprecated public static final int PLAYSTATE_STOPPED = 1; // 0x1
-  }
-
-  @Deprecated public class RemoteControlClient.MetadataEditor extends android.media.MediaMetadataEditor {
-    method @Deprecated public void apply();
-    method public Object clone() throws java.lang.CloneNotSupportedException;
-    method @Deprecated public android.media.RemoteControlClient.MetadataEditor putBitmap(int, android.graphics.Bitmap) throws java.lang.IllegalArgumentException;
-    method @Deprecated public android.media.RemoteControlClient.MetadataEditor putLong(int, long) throws java.lang.IllegalArgumentException;
-    method @Deprecated public android.media.RemoteControlClient.MetadataEditor putObject(int, Object) throws java.lang.IllegalArgumentException;
-    method @Deprecated public android.media.RemoteControlClient.MetadataEditor putString(int, String) throws java.lang.IllegalArgumentException;
-    field @Deprecated public static final int BITMAP_KEY_ARTWORK = 100; // 0x64
-  }
-
-  @Deprecated public static interface RemoteControlClient.OnGetPlaybackPositionListener {
-    method @Deprecated public long onGetPlaybackPosition();
-  }
-
-  @Deprecated public static interface RemoteControlClient.OnMetadataUpdateListener {
-    method @Deprecated public void onMetadataUpdate(int, Object);
-  }
-
-  @Deprecated public static interface RemoteControlClient.OnPlaybackPositionUpdateListener {
-    method @Deprecated public void onPlaybackPositionUpdate(long);
-  }
-
-  @Deprecated public final class RemoteController {
-    ctor @Deprecated public RemoteController(android.content.Context, android.media.RemoteController.OnClientUpdateListener) throws java.lang.IllegalArgumentException;
-    ctor @Deprecated public RemoteController(android.content.Context, android.media.RemoteController.OnClientUpdateListener, android.os.Looper) throws java.lang.IllegalArgumentException;
-    method @Deprecated public boolean clearArtworkConfiguration();
-    method @Deprecated public android.media.RemoteController.MetadataEditor editMetadata();
-    method @Deprecated public long getEstimatedMediaPosition();
-    method @Deprecated public boolean seekTo(long) throws java.lang.IllegalArgumentException;
-    method @Deprecated public boolean sendMediaKeyEvent(android.view.KeyEvent) throws java.lang.IllegalArgumentException;
-    method @Deprecated public boolean setArtworkConfiguration(int, int) throws java.lang.IllegalArgumentException;
-    method @Deprecated public boolean setSynchronizationMode(int) throws java.lang.IllegalArgumentException;
-    field @Deprecated public static final int POSITION_SYNCHRONIZATION_CHECK = 1; // 0x1
-    field @Deprecated public static final int POSITION_SYNCHRONIZATION_NONE = 0; // 0x0
-  }
-
-  @Deprecated public class RemoteController.MetadataEditor extends android.media.MediaMetadataEditor {
-    method @Deprecated public void apply();
-  }
-
-  @Deprecated public static interface RemoteController.OnClientUpdateListener {
-    method @Deprecated public void onClientChange(boolean);
-    method @Deprecated public void onClientMetadataUpdate(android.media.RemoteController.MetadataEditor);
-    method @Deprecated public void onClientPlaybackStateUpdate(int);
-    method @Deprecated public void onClientPlaybackStateUpdate(int, long, long, float);
-    method @Deprecated public void onClientTransportControlUpdate(int);
-  }
-
-  public final class ResourceBusyException extends android.media.MediaDrmException {
-    ctor public ResourceBusyException(String);
-  }
-
-  public class Ringtone {
-    method protected void finalize();
-    method public android.media.AudioAttributes getAudioAttributes();
-    method @Deprecated public int getStreamType();
-    method public String getTitle(android.content.Context);
-    method public float getVolume();
-    method public boolean isLooping();
-    method public boolean isPlaying();
-    method public void play();
-    method public void setAudioAttributes(android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
-    method public void setLooping(boolean);
-    method @Deprecated public void setStreamType(int);
-    method public void setVolume(float);
-    method public void stop();
-  }
-
-  public class RingtoneManager {
-    ctor public RingtoneManager(android.app.Activity);
-    ctor public RingtoneManager(android.content.Context);
-    method public static android.net.Uri getActualDefaultRingtoneUri(android.content.Context, int);
-    method public android.database.Cursor getCursor();
-    method public static int getDefaultType(android.net.Uri);
-    method public static android.net.Uri getDefaultUri(int);
-    method @Deprecated public boolean getIncludeDrm();
-    method public android.media.Ringtone getRingtone(int);
-    method public static android.media.Ringtone getRingtone(android.content.Context, android.net.Uri);
-    method public int getRingtonePosition(android.net.Uri);
-    method public android.net.Uri getRingtoneUri(int);
-    method public boolean getStopPreviousRingtone();
-    method public static android.net.Uri getValidRingtoneUri(android.content.Context);
-    method public boolean hasHapticChannels(int);
-    method public static boolean hasHapticChannels(@NonNull android.net.Uri);
-    method public int inferStreamType();
-    method public static boolean isDefault(android.net.Uri);
-    method @Nullable public static android.content.res.AssetFileDescriptor openDefaultRingtoneUri(@NonNull android.content.Context, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
-    method public static void setActualDefaultRingtoneUri(android.content.Context, int, android.net.Uri);
-    method @Deprecated public void setIncludeDrm(boolean);
-    method public void setStopPreviousRingtone(boolean);
-    method public void setType(int);
-    method public void stopPreviousRingtone();
-    field public static final String ACTION_RINGTONE_PICKER = "android.intent.action.RINGTONE_PICKER";
-    field public static final String EXTRA_RINGTONE_DEFAULT_URI = "android.intent.extra.ringtone.DEFAULT_URI";
-    field public static final String EXTRA_RINGTONE_EXISTING_URI = "android.intent.extra.ringtone.EXISTING_URI";
-    field @Deprecated public static final String EXTRA_RINGTONE_INCLUDE_DRM = "android.intent.extra.ringtone.INCLUDE_DRM";
-    field public static final String EXTRA_RINGTONE_PICKED_URI = "android.intent.extra.ringtone.PICKED_URI";
-    field public static final String EXTRA_RINGTONE_SHOW_DEFAULT = "android.intent.extra.ringtone.SHOW_DEFAULT";
-    field public static final String EXTRA_RINGTONE_SHOW_SILENT = "android.intent.extra.ringtone.SHOW_SILENT";
-    field public static final String EXTRA_RINGTONE_TITLE = "android.intent.extra.ringtone.TITLE";
-    field public static final String EXTRA_RINGTONE_TYPE = "android.intent.extra.ringtone.TYPE";
-    field public static final int ID_COLUMN_INDEX = 0; // 0x0
-    field public static final int TITLE_COLUMN_INDEX = 1; // 0x1
-    field public static final int TYPE_ALARM = 4; // 0x4
-    field public static final int TYPE_ALL = 7; // 0x7
-    field public static final int TYPE_NOTIFICATION = 2; // 0x2
-    field public static final int TYPE_RINGTONE = 1; // 0x1
-    field public static final int URI_COLUMN_INDEX = 2; // 0x2
-  }
-
-  public final class RouteDiscoveryPreference implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public java.util.List<java.lang.String> getPreferredFeatures();
-    method public boolean shouldPerformActiveScan();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.RouteDiscoveryPreference> CREATOR;
-  }
-
-  public static final class RouteDiscoveryPreference.Builder {
-    ctor public RouteDiscoveryPreference.Builder(@NonNull java.util.List<java.lang.String>, boolean);
-    ctor public RouteDiscoveryPreference.Builder(@NonNull android.media.RouteDiscoveryPreference);
-    method @NonNull public android.media.RouteDiscoveryPreference build();
-    method @NonNull public android.media.RouteDiscoveryPreference.Builder setPreferredFeatures(@NonNull java.util.List<java.lang.String>);
-    method @NonNull public android.media.RouteDiscoveryPreference.Builder setShouldPerformActiveScan(boolean);
-  }
-
-  public final class RoutingSessionInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public String getClientPackageName();
-    method @Nullable public android.os.Bundle getControlHints();
-    method @NonNull public java.util.List<java.lang.String> getDeselectableRoutes();
-    method @NonNull public String getId();
-    method @Nullable public CharSequence getName();
-    method @NonNull public java.util.List<java.lang.String> getSelectableRoutes();
-    method @NonNull public java.util.List<java.lang.String> getSelectedRoutes();
-    method @NonNull public java.util.List<java.lang.String> getTransferableRoutes();
-    method public int getVolume();
-    method public int getVolumeHandling();
-    method public int getVolumeMax();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.RoutingSessionInfo> CREATOR;
-  }
-
-  public static final class RoutingSessionInfo.Builder {
-    ctor public RoutingSessionInfo.Builder(@NonNull String, @NonNull String);
-    ctor public RoutingSessionInfo.Builder(@NonNull android.media.RoutingSessionInfo);
-    method @NonNull public android.media.RoutingSessionInfo.Builder addDeselectableRoute(@NonNull String);
-    method @NonNull public android.media.RoutingSessionInfo.Builder addSelectableRoute(@NonNull String);
-    method @NonNull public android.media.RoutingSessionInfo.Builder addSelectedRoute(@NonNull String);
-    method @NonNull public android.media.RoutingSessionInfo.Builder addTransferableRoute(@NonNull String);
-    method @NonNull public android.media.RoutingSessionInfo build();
-    method @NonNull public android.media.RoutingSessionInfo.Builder clearDeselectableRoutes();
-    method @NonNull public android.media.RoutingSessionInfo.Builder clearSelectableRoutes();
-    method @NonNull public android.media.RoutingSessionInfo.Builder clearSelectedRoutes();
-    method @NonNull public android.media.RoutingSessionInfo.Builder clearTransferableRoutes();
-    method @NonNull public android.media.RoutingSessionInfo.Builder removeDeselectableRoute(@NonNull String);
-    method @NonNull public android.media.RoutingSessionInfo.Builder removeSelectableRoute(@NonNull String);
-    method @NonNull public android.media.RoutingSessionInfo.Builder removeSelectedRoute(@NonNull String);
-    method @NonNull public android.media.RoutingSessionInfo.Builder removeTransferableRoute(@NonNull String);
-    method @NonNull public android.media.RoutingSessionInfo.Builder setControlHints(@Nullable android.os.Bundle);
-    method @NonNull public android.media.RoutingSessionInfo.Builder setName(@Nullable CharSequence);
-    method @NonNull public android.media.RoutingSessionInfo.Builder setVolume(int);
-    method @NonNull public android.media.RoutingSessionInfo.Builder setVolumeHandling(int);
-    method @NonNull public android.media.RoutingSessionInfo.Builder setVolumeMax(int);
-  }
-
-  public class SoundPool {
-    ctor @Deprecated public SoundPool(int, int, int);
-    method public final void autoPause();
-    method public final void autoResume();
-    method protected void finalize();
-    method public int load(String, int);
-    method public int load(android.content.Context, int, int);
-    method public int load(android.content.res.AssetFileDescriptor, int);
-    method public int load(java.io.FileDescriptor, long, long, int);
-    method public final void pause(int);
-    method public final int play(int, float, float, int, int, float);
-    method public final void release();
-    method public final void resume(int);
-    method public final void setLoop(int, int);
-    method public void setOnLoadCompleteListener(android.media.SoundPool.OnLoadCompleteListener);
-    method public final void setPriority(int, int);
-    method public final void setRate(int, float);
-    method public final void setVolume(int, float, float);
-    method public final void stop(int);
-    method public final boolean unload(int);
-  }
-
-  public static class SoundPool.Builder {
-    ctor public SoundPool.Builder();
-    method public android.media.SoundPool build();
-    method public android.media.SoundPool.Builder setAudioAttributes(android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
-    method public android.media.SoundPool.Builder setMaxStreams(int) throws java.lang.IllegalArgumentException;
-  }
-
-  public static interface SoundPool.OnLoadCompleteListener {
-    method public void onLoadComplete(android.media.SoundPool, int, int);
-  }
-
-  public final class SubtitleData {
-    ctor public SubtitleData(int, long, long, @NonNull byte[]);
-    method @NonNull public byte[] getData();
-    method public long getDurationUs();
-    method public long getStartTimeUs();
-    method public int getTrackIndex();
-  }
-
-  public final class SyncParams {
-    ctor public SyncParams();
-    method public android.media.SyncParams allowDefaults();
-    method public int getAudioAdjustMode();
-    method public float getFrameRate();
-    method public int getSyncSource();
-    method public float getTolerance();
-    method public android.media.SyncParams setAudioAdjustMode(int);
-    method public android.media.SyncParams setFrameRate(float);
-    method public android.media.SyncParams setSyncSource(int);
-    method public android.media.SyncParams setTolerance(float);
-    field public static final int AUDIO_ADJUST_MODE_DEFAULT = 0; // 0x0
-    field public static final int AUDIO_ADJUST_MODE_RESAMPLE = 2; // 0x2
-    field public static final int AUDIO_ADJUST_MODE_STRETCH = 1; // 0x1
-    field public static final int SYNC_SOURCE_AUDIO = 2; // 0x2
-    field public static final int SYNC_SOURCE_DEFAULT = 0; // 0x0
-    field public static final int SYNC_SOURCE_SYSTEM_CLOCK = 1; // 0x1
-    field public static final int SYNC_SOURCE_VSYNC = 3; // 0x3
-  }
-
-  public class ThumbnailUtils {
-    ctor public ThumbnailUtils();
-    method @Deprecated @Nullable public static android.graphics.Bitmap createAudioThumbnail(@NonNull String, int);
-    method @NonNull public static android.graphics.Bitmap createAudioThumbnail(@NonNull java.io.File, @NonNull android.util.Size, @Nullable android.os.CancellationSignal) throws java.io.IOException;
-    method @Deprecated @Nullable public static android.graphics.Bitmap createImageThumbnail(@NonNull String, int);
-    method @NonNull public static android.graphics.Bitmap createImageThumbnail(@NonNull java.io.File, @NonNull android.util.Size, @Nullable android.os.CancellationSignal) throws java.io.IOException;
-    method @Deprecated @Nullable public static android.graphics.Bitmap createVideoThumbnail(@NonNull String, int);
-    method @NonNull public static android.graphics.Bitmap createVideoThumbnail(@NonNull java.io.File, @NonNull android.util.Size, @Nullable android.os.CancellationSignal) throws java.io.IOException;
-    method public static android.graphics.Bitmap extractThumbnail(android.graphics.Bitmap, int, int);
-    method public static android.graphics.Bitmap extractThumbnail(android.graphics.Bitmap, int, int, int);
-    field public static final int OPTIONS_RECYCLE_INPUT = 2; // 0x2
-  }
-
-  public final class TimedMetaData {
-    ctor public TimedMetaData(long, @NonNull byte[]);
-    method public byte[] getMetaData();
-    method public long getTimestamp();
-  }
-
-  public final class TimedText {
-    method public android.graphics.Rect getBounds();
-    method public String getText();
-  }
-
-  public class ToneGenerator {
-    ctor public ToneGenerator(int, int);
-    method protected void finalize();
-    method public final int getAudioSessionId();
-    method public void release();
-    method public boolean startTone(int);
-    method public boolean startTone(int, int);
-    method public void stopTone();
-    field public static final int MAX_VOLUME = 100; // 0x64
-    field public static final int MIN_VOLUME = 0; // 0x0
-    field public static final int TONE_CDMA_ABBR_ALERT = 97; // 0x61
-    field public static final int TONE_CDMA_ABBR_INTERCEPT = 37; // 0x25
-    field public static final int TONE_CDMA_ABBR_REORDER = 39; // 0x27
-    field public static final int TONE_CDMA_ALERT_AUTOREDIAL_LITE = 87; // 0x57
-    field public static final int TONE_CDMA_ALERT_CALL_GUARD = 93; // 0x5d
-    field public static final int TONE_CDMA_ALERT_INCALL_LITE = 91; // 0x5b
-    field public static final int TONE_CDMA_ALERT_NETWORK_LITE = 86; // 0x56
-    field public static final int TONE_CDMA_ANSWER = 42; // 0x2a
-    field public static final int TONE_CDMA_CALLDROP_LITE = 95; // 0x5f
-    field public static final int TONE_CDMA_CALL_SIGNAL_ISDN_INTERGROUP = 46; // 0x2e
-    field public static final int TONE_CDMA_CALL_SIGNAL_ISDN_NORMAL = 45; // 0x2d
-    field public static final int TONE_CDMA_CALL_SIGNAL_ISDN_PAT3 = 48; // 0x30
-    field public static final int TONE_CDMA_CALL_SIGNAL_ISDN_PAT5 = 50; // 0x32
-    field public static final int TONE_CDMA_CALL_SIGNAL_ISDN_PAT6 = 51; // 0x33
-    field public static final int TONE_CDMA_CALL_SIGNAL_ISDN_PAT7 = 52; // 0x34
-    field public static final int TONE_CDMA_CALL_SIGNAL_ISDN_PING_RING = 49; // 0x31
-    field public static final int TONE_CDMA_CALL_SIGNAL_ISDN_SP_PRI = 47; // 0x2f
-    field public static final int TONE_CDMA_CONFIRM = 41; // 0x29
-    field public static final int TONE_CDMA_DIAL_TONE_LITE = 34; // 0x22
-    field public static final int TONE_CDMA_EMERGENCY_RINGBACK = 92; // 0x5c
-    field public static final int TONE_CDMA_HIGH_L = 53; // 0x35
-    field public static final int TONE_CDMA_HIGH_PBX_L = 71; // 0x47
-    field public static final int TONE_CDMA_HIGH_PBX_SLS = 80; // 0x50
-    field public static final int TONE_CDMA_HIGH_PBX_SS = 74; // 0x4a
-    field public static final int TONE_CDMA_HIGH_PBX_SSL = 77; // 0x4d
-    field public static final int TONE_CDMA_HIGH_PBX_S_X4 = 83; // 0x53
-    field public static final int TONE_CDMA_HIGH_SLS = 65; // 0x41
-    field public static final int TONE_CDMA_HIGH_SS = 56; // 0x38
-    field public static final int TONE_CDMA_HIGH_SSL = 59; // 0x3b
-    field public static final int TONE_CDMA_HIGH_SS_2 = 62; // 0x3e
-    field public static final int TONE_CDMA_HIGH_S_X4 = 68; // 0x44
-    field public static final int TONE_CDMA_INTERCEPT = 36; // 0x24
-    field public static final int TONE_CDMA_KEYPAD_VOLUME_KEY_LITE = 89; // 0x59
-    field public static final int TONE_CDMA_LOW_L = 55; // 0x37
-    field public static final int TONE_CDMA_LOW_PBX_L = 73; // 0x49
-    field public static final int TONE_CDMA_LOW_PBX_SLS = 82; // 0x52
-    field public static final int TONE_CDMA_LOW_PBX_SS = 76; // 0x4c
-    field public static final int TONE_CDMA_LOW_PBX_SSL = 79; // 0x4f
-    field public static final int TONE_CDMA_LOW_PBX_S_X4 = 85; // 0x55
-    field public static final int TONE_CDMA_LOW_SLS = 67; // 0x43
-    field public static final int TONE_CDMA_LOW_SS = 58; // 0x3a
-    field public static final int TONE_CDMA_LOW_SSL = 61; // 0x3d
-    field public static final int TONE_CDMA_LOW_SS_2 = 64; // 0x40
-    field public static final int TONE_CDMA_LOW_S_X4 = 70; // 0x46
-    field public static final int TONE_CDMA_MED_L = 54; // 0x36
-    field public static final int TONE_CDMA_MED_PBX_L = 72; // 0x48
-    field public static final int TONE_CDMA_MED_PBX_SLS = 81; // 0x51
-    field public static final int TONE_CDMA_MED_PBX_SS = 75; // 0x4b
-    field public static final int TONE_CDMA_MED_PBX_SSL = 78; // 0x4e
-    field public static final int TONE_CDMA_MED_PBX_S_X4 = 84; // 0x54
-    field public static final int TONE_CDMA_MED_SLS = 66; // 0x42
-    field public static final int TONE_CDMA_MED_SS = 57; // 0x39
-    field public static final int TONE_CDMA_MED_SSL = 60; // 0x3c
-    field public static final int TONE_CDMA_MED_SS_2 = 63; // 0x3f
-    field public static final int TONE_CDMA_MED_S_X4 = 69; // 0x45
-    field public static final int TONE_CDMA_NETWORK_BUSY = 40; // 0x28
-    field public static final int TONE_CDMA_NETWORK_BUSY_ONE_SHOT = 96; // 0x60
-    field public static final int TONE_CDMA_NETWORK_CALLWAITING = 43; // 0x2b
-    field public static final int TONE_CDMA_NETWORK_USA_RINGBACK = 35; // 0x23
-    field public static final int TONE_CDMA_ONE_MIN_BEEP = 88; // 0x58
-    field public static final int TONE_CDMA_PIP = 44; // 0x2c
-    field public static final int TONE_CDMA_PRESSHOLDKEY_LITE = 90; // 0x5a
-    field public static final int TONE_CDMA_REORDER = 38; // 0x26
-    field public static final int TONE_CDMA_SIGNAL_OFF = 98; // 0x62
-    field public static final int TONE_CDMA_SOFT_ERROR_LITE = 94; // 0x5e
-    field public static final int TONE_DTMF_0 = 0; // 0x0
-    field public static final int TONE_DTMF_1 = 1; // 0x1
-    field public static final int TONE_DTMF_2 = 2; // 0x2
-    field public static final int TONE_DTMF_3 = 3; // 0x3
-    field public static final int TONE_DTMF_4 = 4; // 0x4
-    field public static final int TONE_DTMF_5 = 5; // 0x5
-    field public static final int TONE_DTMF_6 = 6; // 0x6
-    field public static final int TONE_DTMF_7 = 7; // 0x7
-    field public static final int TONE_DTMF_8 = 8; // 0x8
-    field public static final int TONE_DTMF_9 = 9; // 0x9
-    field public static final int TONE_DTMF_A = 12; // 0xc
-    field public static final int TONE_DTMF_B = 13; // 0xd
-    field public static final int TONE_DTMF_C = 14; // 0xe
-    field public static final int TONE_DTMF_D = 15; // 0xf
-    field public static final int TONE_DTMF_P = 11; // 0xb
-    field public static final int TONE_DTMF_S = 10; // 0xa
-    field public static final int TONE_PROP_ACK = 25; // 0x19
-    field public static final int TONE_PROP_BEEP = 24; // 0x18
-    field public static final int TONE_PROP_BEEP2 = 28; // 0x1c
-    field public static final int TONE_PROP_NACK = 26; // 0x1a
-    field public static final int TONE_PROP_PROMPT = 27; // 0x1b
-    field public static final int TONE_SUP_BUSY = 17; // 0x11
-    field public static final int TONE_SUP_CALL_WAITING = 22; // 0x16
-    field public static final int TONE_SUP_CONFIRM = 32; // 0x20
-    field public static final int TONE_SUP_CONGESTION = 18; // 0x12
-    field public static final int TONE_SUP_CONGESTION_ABBREV = 31; // 0x1f
-    field public static final int TONE_SUP_DIAL = 16; // 0x10
-    field public static final int TONE_SUP_ERROR = 21; // 0x15
-    field public static final int TONE_SUP_INTERCEPT = 29; // 0x1d
-    field public static final int TONE_SUP_INTERCEPT_ABBREV = 30; // 0x1e
-    field public static final int TONE_SUP_PIP = 33; // 0x21
-    field public static final int TONE_SUP_RADIO_ACK = 19; // 0x13
-    field public static final int TONE_SUP_RADIO_NOTAVAIL = 20; // 0x14
-    field public static final int TONE_SUP_RINGTONE = 23; // 0x17
-  }
-
-  public final class UnsupportedSchemeException extends android.media.MediaDrmException {
-    ctor public UnsupportedSchemeException(String);
-  }
-
-  public interface VolumeAutomation {
-    method @NonNull public android.media.VolumeShaper createVolumeShaper(@NonNull android.media.VolumeShaper.Configuration);
-  }
-
-  public abstract class VolumeProvider {
-    ctor public VolumeProvider(int, int, int);
-    ctor public VolumeProvider(int, int, int, @Nullable String);
-    method public final int getCurrentVolume();
-    method public final int getMaxVolume();
-    method public final int getVolumeControl();
-    method @Nullable public final String getVolumeControlId();
-    method public void onAdjustVolume(int);
-    method public void onSetVolumeTo(int);
-    method public final void setCurrentVolume(int);
-    field public static final int VOLUME_CONTROL_ABSOLUTE = 2; // 0x2
-    field public static final int VOLUME_CONTROL_FIXED = 0; // 0x0
-    field public static final int VOLUME_CONTROL_RELATIVE = 1; // 0x1
-  }
-
-  public final class VolumeShaper implements java.lang.AutoCloseable {
-    method public void apply(@NonNull android.media.VolumeShaper.Operation);
-    method public void close();
-    method protected void finalize();
-    method public float getVolume();
-    method public void replace(@NonNull android.media.VolumeShaper.Configuration, @NonNull android.media.VolumeShaper.Operation, boolean);
-  }
-
-  public static final class VolumeShaper.Configuration implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getDuration();
-    method public int getInterpolatorType();
-    method public static int getMaximumCurvePoints();
-    method public float[] getTimes();
-    method public float[] getVolumes();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.VolumeShaper.Configuration> CREATOR;
-    field public static final android.media.VolumeShaper.Configuration CUBIC_RAMP;
-    field public static final int INTERPOLATOR_TYPE_CUBIC = 2; // 0x2
-    field public static final int INTERPOLATOR_TYPE_CUBIC_MONOTONIC = 3; // 0x3
-    field public static final int INTERPOLATOR_TYPE_LINEAR = 1; // 0x1
-    field public static final int INTERPOLATOR_TYPE_STEP = 0; // 0x0
-    field public static final android.media.VolumeShaper.Configuration LINEAR_RAMP;
-    field public static final android.media.VolumeShaper.Configuration SCURVE_RAMP;
-    field public static final android.media.VolumeShaper.Configuration SINE_RAMP;
-  }
-
-  public static final class VolumeShaper.Configuration.Builder {
-    ctor public VolumeShaper.Configuration.Builder();
-    ctor public VolumeShaper.Configuration.Builder(@NonNull android.media.VolumeShaper.Configuration);
-    method @NonNull public android.media.VolumeShaper.Configuration build();
-    method @NonNull public android.media.VolumeShaper.Configuration.Builder invertVolumes();
-    method @NonNull public android.media.VolumeShaper.Configuration.Builder reflectTimes();
-    method @NonNull public android.media.VolumeShaper.Configuration.Builder scaleToEndVolume(float);
-    method @NonNull public android.media.VolumeShaper.Configuration.Builder scaleToStartVolume(float);
-    method @NonNull public android.media.VolumeShaper.Configuration.Builder setCurve(@NonNull float[], @NonNull float[]);
-    method @NonNull public android.media.VolumeShaper.Configuration.Builder setDuration(long);
-    method @NonNull public android.media.VolumeShaper.Configuration.Builder setInterpolatorType(int);
-  }
-
-  public static final class VolumeShaper.Operation implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.VolumeShaper.Operation> CREATOR;
-    field public static final android.media.VolumeShaper.Operation PLAY;
-    field public static final android.media.VolumeShaper.Operation REVERSE;
-  }
-
-}
-
-package android.media.audiofx {
-
-  public class AcousticEchoCanceler extends android.media.audiofx.AudioEffect {
-    method public static android.media.audiofx.AcousticEchoCanceler create(int);
-    method public static boolean isAvailable();
-  }
-
-  public class AudioEffect {
-    method protected void finalize();
-    method public android.media.audiofx.AudioEffect.Descriptor getDescriptor() throws java.lang.IllegalStateException;
-    method public boolean getEnabled() throws java.lang.IllegalStateException;
-    method public int getId() throws java.lang.IllegalStateException;
-    method public boolean hasControl() throws java.lang.IllegalStateException;
-    method public static android.media.audiofx.AudioEffect.Descriptor[] queryEffects();
-    method public void release();
-    method public void setControlStatusListener(android.media.audiofx.AudioEffect.OnControlStatusChangeListener);
-    method public void setEnableStatusListener(android.media.audiofx.AudioEffect.OnEnableStatusChangeListener);
-    method public int setEnabled(boolean) throws java.lang.IllegalStateException;
-    field public static final String ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION = "android.media.action.CLOSE_AUDIO_EFFECT_CONTROL_SESSION";
-    field public static final String ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL = "android.media.action.DISPLAY_AUDIO_EFFECT_CONTROL_PANEL";
-    field public static final String ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION = "android.media.action.OPEN_AUDIO_EFFECT_CONTROL_SESSION";
-    field public static final int ALREADY_EXISTS = -2; // 0xfffffffe
-    field public static final int CONTENT_TYPE_GAME = 2; // 0x2
-    field public static final int CONTENT_TYPE_MOVIE = 1; // 0x1
-    field public static final int CONTENT_TYPE_MUSIC = 0; // 0x0
-    field public static final int CONTENT_TYPE_VOICE = 3; // 0x3
-    field public static final String EFFECT_AUXILIARY = "Auxiliary";
-    field public static final String EFFECT_INSERT = "Insert";
-    field public static final String EFFECT_POST_PROCESSING = "Post Processing";
-    field public static final String EFFECT_PRE_PROCESSING = "Pre Processing";
-    field public static final java.util.UUID EFFECT_TYPE_AEC;
-    field public static final java.util.UUID EFFECT_TYPE_AGC;
-    field public static final java.util.UUID EFFECT_TYPE_BASS_BOOST;
-    field public static final java.util.UUID EFFECT_TYPE_DYNAMICS_PROCESSING;
-    field public static final java.util.UUID EFFECT_TYPE_ENV_REVERB;
-    field public static final java.util.UUID EFFECT_TYPE_EQUALIZER;
-    field public static final java.util.UUID EFFECT_TYPE_LOUDNESS_ENHANCER;
-    field public static final java.util.UUID EFFECT_TYPE_NS;
-    field public static final java.util.UUID EFFECT_TYPE_PRESET_REVERB;
-    field public static final java.util.UUID EFFECT_TYPE_VIRTUALIZER;
-    field public static final int ERROR = -1; // 0xffffffff
-    field public static final int ERROR_BAD_VALUE = -4; // 0xfffffffc
-    field public static final int ERROR_DEAD_OBJECT = -7; // 0xfffffff9
-    field public static final int ERROR_INVALID_OPERATION = -5; // 0xfffffffb
-    field public static final int ERROR_NO_INIT = -3; // 0xfffffffd
-    field public static final int ERROR_NO_MEMORY = -6; // 0xfffffffa
-    field public static final String EXTRA_AUDIO_SESSION = "android.media.extra.AUDIO_SESSION";
-    field public static final String EXTRA_CONTENT_TYPE = "android.media.extra.CONTENT_TYPE";
-    field public static final String EXTRA_PACKAGE_NAME = "android.media.extra.PACKAGE_NAME";
-    field public static final int SUCCESS = 0; // 0x0
-  }
-
-  public static class AudioEffect.Descriptor {
-    ctor public AudioEffect.Descriptor();
-    ctor public AudioEffect.Descriptor(String, String, String, String, String);
-    field public String connectMode;
-    field public String implementor;
-    field public String name;
-    field public java.util.UUID type;
-    field public java.util.UUID uuid;
-  }
-
-  public static interface AudioEffect.OnControlStatusChangeListener {
-    method public void onControlStatusChange(android.media.audiofx.AudioEffect, boolean);
-  }
-
-  public static interface AudioEffect.OnEnableStatusChangeListener {
-    method public void onEnableStatusChange(android.media.audiofx.AudioEffect, boolean);
-  }
-
-  public class AutomaticGainControl extends android.media.audiofx.AudioEffect {
-    method public static android.media.audiofx.AutomaticGainControl create(int);
-    method public static boolean isAvailable();
-  }
-
-  public class BassBoost extends android.media.audiofx.AudioEffect {
-    ctor public BassBoost(int, int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.RuntimeException, java.lang.UnsupportedOperationException;
-    method public android.media.audiofx.BassBoost.Settings getProperties() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short getRoundedStrength() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public boolean getStrengthSupported();
-    method public void setParameterListener(android.media.audiofx.BassBoost.OnParameterChangeListener);
-    method public void setProperties(android.media.audiofx.BassBoost.Settings) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setStrength(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    field public static final int PARAM_STRENGTH = 1; // 0x1
-    field public static final int PARAM_STRENGTH_SUPPORTED = 0; // 0x0
-  }
-
-  public static interface BassBoost.OnParameterChangeListener {
-    method public void onParameterChange(android.media.audiofx.BassBoost, int, int, short);
-  }
-
-  public static class BassBoost.Settings {
-    ctor public BassBoost.Settings();
-    ctor public BassBoost.Settings(String);
-    field public short strength;
-  }
-
-  public final class DynamicsProcessing extends android.media.audiofx.AudioEffect {
-    ctor public DynamicsProcessing(int);
-    ctor public DynamicsProcessing(int, int, @Nullable android.media.audiofx.DynamicsProcessing.Config);
-    method public android.media.audiofx.DynamicsProcessing.Channel getChannelByChannelIndex(int);
-    method public int getChannelCount();
-    method public android.media.audiofx.DynamicsProcessing.Config getConfig();
-    method public float getInputGainByChannelIndex(int);
-    method public android.media.audiofx.DynamicsProcessing.Limiter getLimiterByChannelIndex(int);
-    method public android.media.audiofx.DynamicsProcessing.MbcBand getMbcBandByChannelIndex(int, int);
-    method public android.media.audiofx.DynamicsProcessing.Mbc getMbcByChannelIndex(int);
-    method public android.media.audiofx.DynamicsProcessing.EqBand getPostEqBandByChannelIndex(int, int);
-    method public android.media.audiofx.DynamicsProcessing.Eq getPostEqByChannelIndex(int);
-    method public android.media.audiofx.DynamicsProcessing.EqBand getPreEqBandByChannelIndex(int, int);
-    method public android.media.audiofx.DynamicsProcessing.Eq getPreEqByChannelIndex(int);
-    method public void setAllChannelsTo(android.media.audiofx.DynamicsProcessing.Channel);
-    method public void setChannelTo(int, android.media.audiofx.DynamicsProcessing.Channel);
-    method public void setInputGainAllChannelsTo(float);
-    method public void setInputGainbyChannel(int, float);
-    method public void setLimiterAllChannelsTo(android.media.audiofx.DynamicsProcessing.Limiter);
-    method public void setLimiterByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Limiter);
-    method public void setMbcAllChannelsTo(android.media.audiofx.DynamicsProcessing.Mbc);
-    method public void setMbcBandAllChannelsTo(int, android.media.audiofx.DynamicsProcessing.MbcBand);
-    method public void setMbcBandByChannelIndex(int, int, android.media.audiofx.DynamicsProcessing.MbcBand);
-    method public void setMbcByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Mbc);
-    method public void setPostEqAllChannelsTo(android.media.audiofx.DynamicsProcessing.Eq);
-    method public void setPostEqBandAllChannelsTo(int, android.media.audiofx.DynamicsProcessing.EqBand);
-    method public void setPostEqBandByChannelIndex(int, int, android.media.audiofx.DynamicsProcessing.EqBand);
-    method public void setPostEqByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Eq);
-    method public void setPreEqAllChannelsTo(android.media.audiofx.DynamicsProcessing.Eq);
-    method public void setPreEqBandAllChannelsTo(int, android.media.audiofx.DynamicsProcessing.EqBand);
-    method public void setPreEqBandByChannelIndex(int, int, android.media.audiofx.DynamicsProcessing.EqBand);
-    method public void setPreEqByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Eq);
-    field public static final int VARIANT_FAVOR_FREQUENCY_RESOLUTION = 0; // 0x0
-    field public static final int VARIANT_FAVOR_TIME_RESOLUTION = 1; // 0x1
-  }
-
-  public static class DynamicsProcessing.BandBase {
-    ctor public DynamicsProcessing.BandBase(boolean, float);
-    method public float getCutoffFrequency();
-    method public boolean isEnabled();
-    method public void setCutoffFrequency(float);
-    method public void setEnabled(boolean);
-  }
-
-  public static class DynamicsProcessing.BandStage extends android.media.audiofx.DynamicsProcessing.Stage {
-    ctor public DynamicsProcessing.BandStage(boolean, boolean, int);
-    method public int getBandCount();
-  }
-
-  public static final class DynamicsProcessing.Channel {
-    ctor public DynamicsProcessing.Channel(float, boolean, int, boolean, int, boolean, int, boolean);
-    ctor public DynamicsProcessing.Channel(android.media.audiofx.DynamicsProcessing.Channel);
-    method public float getInputGain();
-    method public android.media.audiofx.DynamicsProcessing.Limiter getLimiter();
-    method public android.media.audiofx.DynamicsProcessing.Mbc getMbc();
-    method public android.media.audiofx.DynamicsProcessing.MbcBand getMbcBand(int);
-    method public android.media.audiofx.DynamicsProcessing.Eq getPostEq();
-    method public android.media.audiofx.DynamicsProcessing.EqBand getPostEqBand(int);
-    method public android.media.audiofx.DynamicsProcessing.Eq getPreEq();
-    method public android.media.audiofx.DynamicsProcessing.EqBand getPreEqBand(int);
-    method public void setInputGain(float);
-    method public void setLimiter(android.media.audiofx.DynamicsProcessing.Limiter);
-    method public void setMbc(android.media.audiofx.DynamicsProcessing.Mbc);
-    method public void setMbcBand(int, android.media.audiofx.DynamicsProcessing.MbcBand);
-    method public void setPostEq(android.media.audiofx.DynamicsProcessing.Eq);
-    method public void setPostEqBand(int, android.media.audiofx.DynamicsProcessing.EqBand);
-    method public void setPreEq(android.media.audiofx.DynamicsProcessing.Eq);
-    method public void setPreEqBand(int, android.media.audiofx.DynamicsProcessing.EqBand);
-  }
-
-  public static final class DynamicsProcessing.Config {
-    method public android.media.audiofx.DynamicsProcessing.Channel getChannelByChannelIndex(int);
-    method public float getInputGainByChannelIndex(int);
-    method public android.media.audiofx.DynamicsProcessing.Limiter getLimiterByChannelIndex(int);
-    method public android.media.audiofx.DynamicsProcessing.MbcBand getMbcBandByChannelIndex(int, int);
-    method public int getMbcBandCount();
-    method public android.media.audiofx.DynamicsProcessing.Mbc getMbcByChannelIndex(int);
-    method public android.media.audiofx.DynamicsProcessing.EqBand getPostEqBandByChannelIndex(int, int);
-    method public int getPostEqBandCount();
-    method public android.media.audiofx.DynamicsProcessing.Eq getPostEqByChannelIndex(int);
-    method public android.media.audiofx.DynamicsProcessing.EqBand getPreEqBandByChannelIndex(int, int);
-    method public int getPreEqBandCount();
-    method public android.media.audiofx.DynamicsProcessing.Eq getPreEqByChannelIndex(int);
-    method public float getPreferredFrameDuration();
-    method public int getVariant();
-    method public boolean isLimiterInUse();
-    method public boolean isMbcInUse();
-    method public boolean isPostEqInUse();
-    method public boolean isPreEqInUse();
-    method public void setAllChannelsTo(android.media.audiofx.DynamicsProcessing.Channel);
-    method public void setChannelTo(int, android.media.audiofx.DynamicsProcessing.Channel);
-    method public void setInputGainAllChannelsTo(float);
-    method public void setInputGainByChannelIndex(int, float);
-    method public void setLimiterAllChannelsTo(android.media.audiofx.DynamicsProcessing.Limiter);
-    method public void setLimiterByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Limiter);
-    method public void setMbcAllChannelsTo(android.media.audiofx.DynamicsProcessing.Mbc);
-    method public void setMbcBandAllChannelsTo(int, android.media.audiofx.DynamicsProcessing.MbcBand);
-    method public void setMbcBandByChannelIndex(int, int, android.media.audiofx.DynamicsProcessing.MbcBand);
-    method public void setMbcByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Mbc);
-    method public void setPostEqAllChannelsTo(android.media.audiofx.DynamicsProcessing.Eq);
-    method public void setPostEqBandAllChannelsTo(int, android.media.audiofx.DynamicsProcessing.EqBand);
-    method public void setPostEqBandByChannelIndex(int, int, android.media.audiofx.DynamicsProcessing.EqBand);
-    method public void setPostEqByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Eq);
-    method public void setPreEqAllChannelsTo(android.media.audiofx.DynamicsProcessing.Eq);
-    method public void setPreEqBandAllChannelsTo(int, android.media.audiofx.DynamicsProcessing.EqBand);
-    method public void setPreEqBandByChannelIndex(int, int, android.media.audiofx.DynamicsProcessing.EqBand);
-    method public void setPreEqByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Eq);
-  }
-
-  public static final class DynamicsProcessing.Config.Builder {
-    ctor public DynamicsProcessing.Config.Builder(int, int, boolean, int, boolean, int, boolean, int, boolean);
-    method public android.media.audiofx.DynamicsProcessing.Config build();
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setAllChannelsTo(android.media.audiofx.DynamicsProcessing.Channel);
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setChannelTo(int, android.media.audiofx.DynamicsProcessing.Channel);
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setInputGainAllChannelsTo(float);
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setInputGainByChannelIndex(int, float);
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setLimiterAllChannelsTo(android.media.audiofx.DynamicsProcessing.Limiter);
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setLimiterByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Limiter);
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setMbcAllChannelsTo(android.media.audiofx.DynamicsProcessing.Mbc);
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setMbcByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Mbc);
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setPostEqAllChannelsTo(android.media.audiofx.DynamicsProcessing.Eq);
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setPostEqByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Eq);
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setPreEqAllChannelsTo(android.media.audiofx.DynamicsProcessing.Eq);
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setPreEqByChannelIndex(int, android.media.audiofx.DynamicsProcessing.Eq);
-    method public android.media.audiofx.DynamicsProcessing.Config.Builder setPreferredFrameDuration(float);
-  }
-
-  public static final class DynamicsProcessing.Eq extends android.media.audiofx.DynamicsProcessing.BandStage {
-    ctor public DynamicsProcessing.Eq(boolean, boolean, int);
-    ctor public DynamicsProcessing.Eq(android.media.audiofx.DynamicsProcessing.Eq);
-    method public android.media.audiofx.DynamicsProcessing.EqBand getBand(int);
-    method public void setBand(int, android.media.audiofx.DynamicsProcessing.EqBand);
-  }
-
-  public static final class DynamicsProcessing.EqBand extends android.media.audiofx.DynamicsProcessing.BandBase {
-    ctor public DynamicsProcessing.EqBand(boolean, float, float);
-    ctor public DynamicsProcessing.EqBand(android.media.audiofx.DynamicsProcessing.EqBand);
-    method public float getGain();
-    method public void setGain(float);
-  }
-
-  public static final class DynamicsProcessing.Limiter extends android.media.audiofx.DynamicsProcessing.Stage {
-    ctor public DynamicsProcessing.Limiter(boolean, boolean, int, float, float, float, float, float);
-    ctor public DynamicsProcessing.Limiter(android.media.audiofx.DynamicsProcessing.Limiter);
-    method public float getAttackTime();
-    method public int getLinkGroup();
-    method public float getPostGain();
-    method public float getRatio();
-    method public float getReleaseTime();
-    method public float getThreshold();
-    method public void setAttackTime(float);
-    method public void setLinkGroup(int);
-    method public void setPostGain(float);
-    method public void setRatio(float);
-    method public void setReleaseTime(float);
-    method public void setThreshold(float);
-  }
-
-  public static final class DynamicsProcessing.Mbc extends android.media.audiofx.DynamicsProcessing.BandStage {
-    ctor public DynamicsProcessing.Mbc(boolean, boolean, int);
-    ctor public DynamicsProcessing.Mbc(android.media.audiofx.DynamicsProcessing.Mbc);
-    method public android.media.audiofx.DynamicsProcessing.MbcBand getBand(int);
-    method public void setBand(int, android.media.audiofx.DynamicsProcessing.MbcBand);
-  }
-
-  public static final class DynamicsProcessing.MbcBand extends android.media.audiofx.DynamicsProcessing.BandBase {
-    ctor public DynamicsProcessing.MbcBand(boolean, float, float, float, float, float, float, float, float, float, float);
-    ctor public DynamicsProcessing.MbcBand(android.media.audiofx.DynamicsProcessing.MbcBand);
-    method public float getAttackTime();
-    method public float getExpanderRatio();
-    method public float getKneeWidth();
-    method public float getNoiseGateThreshold();
-    method public float getPostGain();
-    method public float getPreGain();
-    method public float getRatio();
-    method public float getReleaseTime();
-    method public float getThreshold();
-    method public void setAttackTime(float);
-    method public void setExpanderRatio(float);
-    method public void setKneeWidth(float);
-    method public void setNoiseGateThreshold(float);
-    method public void setPostGain(float);
-    method public void setPreGain(float);
-    method public void setRatio(float);
-    method public void setReleaseTime(float);
-    method public void setThreshold(float);
-  }
-
-  public static class DynamicsProcessing.Stage {
-    ctor public DynamicsProcessing.Stage(boolean, boolean);
-    method public boolean isEnabled();
-    method public boolean isInUse();
-    method public void setEnabled(boolean);
-  }
-
-  public class EnvironmentalReverb extends android.media.audiofx.AudioEffect {
-    ctor public EnvironmentalReverb(int, int) throws java.lang.IllegalArgumentException, java.lang.RuntimeException, java.lang.UnsupportedOperationException;
-    method public short getDecayHFRatio() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public int getDecayTime() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short getDensity() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short getDiffusion() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public android.media.audiofx.EnvironmentalReverb.Settings getProperties() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public int getReflectionsDelay() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short getReflectionsLevel() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public int getReverbDelay() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short getReverbLevel() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short getRoomHFLevel() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short getRoomLevel() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setDecayHFRatio(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setDecayTime(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setDensity(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setDiffusion(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setParameterListener(android.media.audiofx.EnvironmentalReverb.OnParameterChangeListener);
-    method public void setProperties(android.media.audiofx.EnvironmentalReverb.Settings) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setReflectionsDelay(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setReflectionsLevel(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setReverbDelay(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setReverbLevel(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setRoomHFLevel(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setRoomLevel(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    field public static final int PARAM_DECAY_HF_RATIO = 3; // 0x3
-    field public static final int PARAM_DECAY_TIME = 2; // 0x2
-    field public static final int PARAM_DENSITY = 9; // 0x9
-    field public static final int PARAM_DIFFUSION = 8; // 0x8
-    field public static final int PARAM_REFLECTIONS_DELAY = 5; // 0x5
-    field public static final int PARAM_REFLECTIONS_LEVEL = 4; // 0x4
-    field public static final int PARAM_REVERB_DELAY = 7; // 0x7
-    field public static final int PARAM_REVERB_LEVEL = 6; // 0x6
-    field public static final int PARAM_ROOM_HF_LEVEL = 1; // 0x1
-    field public static final int PARAM_ROOM_LEVEL = 0; // 0x0
-  }
-
-  public static interface EnvironmentalReverb.OnParameterChangeListener {
-    method public void onParameterChange(android.media.audiofx.EnvironmentalReverb, int, int, int);
-  }
-
-  public static class EnvironmentalReverb.Settings {
-    ctor public EnvironmentalReverb.Settings();
-    ctor public EnvironmentalReverb.Settings(String);
-    field public short decayHFRatio;
-    field public int decayTime;
-    field public short density;
-    field public short diffusion;
-    field public int reflectionsDelay;
-    field public short reflectionsLevel;
-    field public int reverbDelay;
-    field public short reverbLevel;
-    field public short roomHFLevel;
-    field public short roomLevel;
-  }
-
-  public class Equalizer extends android.media.audiofx.AudioEffect {
-    ctor public Equalizer(int, int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.RuntimeException, java.lang.UnsupportedOperationException;
-    method public short getBand(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public int[] getBandFreqRange(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short getBandLevel(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short[] getBandLevelRange() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public int getCenterFreq(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short getCurrentPreset() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short getNumberOfBands() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short getNumberOfPresets() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public String getPresetName(short);
-    method public android.media.audiofx.Equalizer.Settings getProperties() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setBandLevel(short, short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setParameterListener(android.media.audiofx.Equalizer.OnParameterChangeListener);
-    method public void setProperties(android.media.audiofx.Equalizer.Settings) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void usePreset(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    field public static final int PARAM_BAND_FREQ_RANGE = 4; // 0x4
-    field public static final int PARAM_BAND_LEVEL = 2; // 0x2
-    field public static final int PARAM_CENTER_FREQ = 3; // 0x3
-    field public static final int PARAM_CURRENT_PRESET = 6; // 0x6
-    field public static final int PARAM_GET_BAND = 5; // 0x5
-    field public static final int PARAM_GET_NUM_OF_PRESETS = 7; // 0x7
-    field public static final int PARAM_GET_PRESET_NAME = 8; // 0x8
-    field public static final int PARAM_LEVEL_RANGE = 1; // 0x1
-    field public static final int PARAM_NUM_BANDS = 0; // 0x0
-    field public static final int PARAM_STRING_SIZE_MAX = 32; // 0x20
-  }
-
-  public static interface Equalizer.OnParameterChangeListener {
-    method public void onParameterChange(android.media.audiofx.Equalizer, int, int, int, int);
-  }
-
-  public static class Equalizer.Settings {
-    ctor public Equalizer.Settings();
-    ctor public Equalizer.Settings(String);
-    field public short[] bandLevels;
-    field public short curPreset;
-    field public short numBands;
-  }
-
-  public class LoudnessEnhancer extends android.media.audiofx.AudioEffect {
-    ctor public LoudnessEnhancer(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.RuntimeException, java.lang.UnsupportedOperationException;
-    method public float getTargetGain() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setTargetGain(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    field public static final int PARAM_TARGET_GAIN_MB = 0; // 0x0
-  }
-
-  public class NoiseSuppressor extends android.media.audiofx.AudioEffect {
-    method public static android.media.audiofx.NoiseSuppressor create(int);
-    method public static boolean isAvailable();
-  }
-
-  public class PresetReverb extends android.media.audiofx.AudioEffect {
-    ctor public PresetReverb(int, int) throws java.lang.IllegalArgumentException, java.lang.RuntimeException, java.lang.UnsupportedOperationException;
-    method public short getPreset() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public android.media.audiofx.PresetReverb.Settings getProperties() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setParameterListener(android.media.audiofx.PresetReverb.OnParameterChangeListener);
-    method public void setPreset(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setProperties(android.media.audiofx.PresetReverb.Settings) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    field public static final int PARAM_PRESET = 0; // 0x0
-    field public static final short PRESET_LARGEHALL = 5; // 0x5
-    field public static final short PRESET_LARGEROOM = 3; // 0x3
-    field public static final short PRESET_MEDIUMHALL = 4; // 0x4
-    field public static final short PRESET_MEDIUMROOM = 2; // 0x2
-    field public static final short PRESET_NONE = 0; // 0x0
-    field public static final short PRESET_PLATE = 6; // 0x6
-    field public static final short PRESET_SMALLROOM = 1; // 0x1
-  }
-
-  public static interface PresetReverb.OnParameterChangeListener {
-    method public void onParameterChange(android.media.audiofx.PresetReverb, int, int, short);
-  }
-
-  public static class PresetReverb.Settings {
-    ctor public PresetReverb.Settings();
-    ctor public PresetReverb.Settings(String);
-    field public short preset;
-  }
-
-  public class Virtualizer extends android.media.audiofx.AudioEffect {
-    ctor public Virtualizer(int, int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.RuntimeException, java.lang.UnsupportedOperationException;
-    method public boolean canVirtualize(int, int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public boolean forceVirtualizationMode(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public android.media.audiofx.Virtualizer.Settings getProperties() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public short getRoundedStrength() throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public boolean getSpeakerAngles(int, int, int[]) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public boolean getStrengthSupported();
-    method public int getVirtualizationMode() throws java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setParameterListener(android.media.audiofx.Virtualizer.OnParameterChangeListener);
-    method public void setProperties(android.media.audiofx.Virtualizer.Settings) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    method public void setStrength(short) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.UnsupportedOperationException;
-    field public static final int PARAM_STRENGTH = 1; // 0x1
-    field public static final int PARAM_STRENGTH_SUPPORTED = 0; // 0x0
-    field public static final int VIRTUALIZATION_MODE_AUTO = 1; // 0x1
-    field public static final int VIRTUALIZATION_MODE_BINAURAL = 2; // 0x2
-    field public static final int VIRTUALIZATION_MODE_OFF = 0; // 0x0
-    field public static final int VIRTUALIZATION_MODE_TRANSAURAL = 3; // 0x3
-  }
-
-  public static interface Virtualizer.OnParameterChangeListener {
-    method public void onParameterChange(android.media.audiofx.Virtualizer, int, int, short);
-  }
-
-  public static class Virtualizer.Settings {
-    ctor public Virtualizer.Settings();
-    ctor public Virtualizer.Settings(String);
-    field public short strength;
-  }
-
-  public class Visualizer {
-    ctor public Visualizer(int) throws java.lang.RuntimeException, java.lang.UnsupportedOperationException;
-    method protected void finalize();
-    method public int getCaptureSize() throws java.lang.IllegalStateException;
-    method public static int[] getCaptureSizeRange();
-    method public boolean getEnabled();
-    method public int getFft(byte[]) throws java.lang.IllegalStateException;
-    method public static int getMaxCaptureRate();
-    method public int getMeasurementMode() throws java.lang.IllegalStateException;
-    method public int getMeasurementPeakRms(android.media.audiofx.Visualizer.MeasurementPeakRms);
-    method public int getSamplingRate() throws java.lang.IllegalStateException;
-    method public int getScalingMode() throws java.lang.IllegalStateException;
-    method public int getWaveForm(byte[]) throws java.lang.IllegalStateException;
-    method public void release();
-    method public int setCaptureSize(int) throws java.lang.IllegalStateException;
-    method public int setDataCaptureListener(android.media.audiofx.Visualizer.OnDataCaptureListener, int, boolean, boolean);
-    method public int setEnabled(boolean) throws java.lang.IllegalStateException;
-    method public int setMeasurementMode(int) throws java.lang.IllegalStateException;
-    method public int setScalingMode(int) throws java.lang.IllegalStateException;
-    field public static final int ALREADY_EXISTS = -2; // 0xfffffffe
-    field public static final int ERROR = -1; // 0xffffffff
-    field public static final int ERROR_BAD_VALUE = -4; // 0xfffffffc
-    field public static final int ERROR_DEAD_OBJECT = -7; // 0xfffffff9
-    field public static final int ERROR_INVALID_OPERATION = -5; // 0xfffffffb
-    field public static final int ERROR_NO_INIT = -3; // 0xfffffffd
-    field public static final int ERROR_NO_MEMORY = -6; // 0xfffffffa
-    field public static final int MEASUREMENT_MODE_NONE = 0; // 0x0
-    field public static final int MEASUREMENT_MODE_PEAK_RMS = 1; // 0x1
-    field public static final int SCALING_MODE_AS_PLAYED = 1; // 0x1
-    field public static final int SCALING_MODE_NORMALIZED = 0; // 0x0
-    field public static final int STATE_ENABLED = 2; // 0x2
-    field public static final int STATE_INITIALIZED = 1; // 0x1
-    field public static final int STATE_UNINITIALIZED = 0; // 0x0
-    field public static final int SUCCESS = 0; // 0x0
-  }
-
-  public static final class Visualizer.MeasurementPeakRms {
-    ctor public Visualizer.MeasurementPeakRms();
-    field public int mPeak;
-    field public int mRms;
-  }
-
-  public static interface Visualizer.OnDataCaptureListener {
-    method public void onFftDataCapture(android.media.audiofx.Visualizer, byte[], int);
-    method public void onWaveFormDataCapture(android.media.audiofx.Visualizer, byte[], int);
-  }
-
-}
-
-package android.media.browse {
-
-  public final class MediaBrowser {
-    ctor public MediaBrowser(android.content.Context, android.content.ComponentName, android.media.browse.MediaBrowser.ConnectionCallback, android.os.Bundle);
-    method public void connect();
-    method public void disconnect();
-    method @Nullable public android.os.Bundle getExtras();
-    method public void getItem(@NonNull String, @NonNull android.media.browse.MediaBrowser.ItemCallback);
-    method @NonNull public String getRoot();
-    method @NonNull public android.content.ComponentName getServiceComponent();
-    method @NonNull public android.media.session.MediaSession.Token getSessionToken();
-    method public boolean isConnected();
-    method public void subscribe(@NonNull String, @NonNull android.media.browse.MediaBrowser.SubscriptionCallback);
-    method public void subscribe(@NonNull String, @NonNull android.os.Bundle, @NonNull android.media.browse.MediaBrowser.SubscriptionCallback);
-    method public void unsubscribe(@NonNull String);
-    method public void unsubscribe(@NonNull String, @NonNull android.media.browse.MediaBrowser.SubscriptionCallback);
-    field public static final String EXTRA_PAGE = "android.media.browse.extra.PAGE";
-    field public static final String EXTRA_PAGE_SIZE = "android.media.browse.extra.PAGE_SIZE";
-  }
-
-  public static class MediaBrowser.ConnectionCallback {
-    ctor public MediaBrowser.ConnectionCallback();
-    method public void onConnected();
-    method public void onConnectionFailed();
-    method public void onConnectionSuspended();
-  }
-
-  public abstract static class MediaBrowser.ItemCallback {
-    ctor public MediaBrowser.ItemCallback();
-    method public void onError(@NonNull String);
-    method public void onItemLoaded(android.media.browse.MediaBrowser.MediaItem);
-  }
-
-  public static class MediaBrowser.MediaItem implements android.os.Parcelable {
-    ctor public MediaBrowser.MediaItem(@NonNull android.media.MediaDescription, int);
-    method public int describeContents();
-    method @NonNull public android.media.MediaDescription getDescription();
-    method public int getFlags();
-    method @Nullable public String getMediaId();
-    method public boolean isBrowsable();
-    method public boolean isPlayable();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.browse.MediaBrowser.MediaItem> CREATOR;
-    field public static final int FLAG_BROWSABLE = 1; // 0x1
-    field public static final int FLAG_PLAYABLE = 2; // 0x2
-  }
-
-  public abstract static class MediaBrowser.SubscriptionCallback {
-    ctor public MediaBrowser.SubscriptionCallback();
-    method public void onChildrenLoaded(@NonNull String, @NonNull java.util.List<android.media.browse.MediaBrowser.MediaItem>);
-    method public void onChildrenLoaded(@NonNull String, @NonNull java.util.List<android.media.browse.MediaBrowser.MediaItem>, @NonNull android.os.Bundle);
-    method public void onError(@NonNull String);
-    method public void onError(@NonNull String, @NonNull android.os.Bundle);
-  }
-
-}
-
-package android.media.effect {
-
-  public abstract class Effect {
-    ctor public Effect();
-    method public abstract void apply(int, int, int, int);
-    method public abstract String getName();
-    method public abstract void release();
-    method public abstract void setParameter(String, Object);
-    method public void setUpdateListener(android.media.effect.EffectUpdateListener);
-  }
-
-  public class EffectContext {
-    method public static android.media.effect.EffectContext createWithCurrentGlContext();
-    method public android.media.effect.EffectFactory getFactory();
-    method public void release();
-  }
-
-  public class EffectFactory {
-    method public android.media.effect.Effect createEffect(String);
-    method public static boolean isEffectSupported(String);
-    field public static final String EFFECT_AUTOFIX = "android.media.effect.effects.AutoFixEffect";
-    field public static final String EFFECT_BACKDROPPER = "android.media.effect.effects.BackDropperEffect";
-    field public static final String EFFECT_BITMAPOVERLAY = "android.media.effect.effects.BitmapOverlayEffect";
-    field public static final String EFFECT_BLACKWHITE = "android.media.effect.effects.BlackWhiteEffect";
-    field public static final String EFFECT_BRIGHTNESS = "android.media.effect.effects.BrightnessEffect";
-    field public static final String EFFECT_CONTRAST = "android.media.effect.effects.ContrastEffect";
-    field public static final String EFFECT_CROP = "android.media.effect.effects.CropEffect";
-    field public static final String EFFECT_CROSSPROCESS = "android.media.effect.effects.CrossProcessEffect";
-    field public static final String EFFECT_DOCUMENTARY = "android.media.effect.effects.DocumentaryEffect";
-    field public static final String EFFECT_DUOTONE = "android.media.effect.effects.DuotoneEffect";
-    field public static final String EFFECT_FILLLIGHT = "android.media.effect.effects.FillLightEffect";
-    field public static final String EFFECT_FISHEYE = "android.media.effect.effects.FisheyeEffect";
-    field public static final String EFFECT_FLIP = "android.media.effect.effects.FlipEffect";
-    field public static final String EFFECT_GRAIN = "android.media.effect.effects.GrainEffect";
-    field public static final String EFFECT_GRAYSCALE = "android.media.effect.effects.GrayscaleEffect";
-    field public static final String EFFECT_LOMOISH = "android.media.effect.effects.LomoishEffect";
-    field public static final String EFFECT_NEGATIVE = "android.media.effect.effects.NegativeEffect";
-    field public static final String EFFECT_POSTERIZE = "android.media.effect.effects.PosterizeEffect";
-    field public static final String EFFECT_REDEYE = "android.media.effect.effects.RedEyeEffect";
-    field public static final String EFFECT_ROTATE = "android.media.effect.effects.RotateEffect";
-    field public static final String EFFECT_SATURATE = "android.media.effect.effects.SaturateEffect";
-    field public static final String EFFECT_SEPIA = "android.media.effect.effects.SepiaEffect";
-    field public static final String EFFECT_SHARPEN = "android.media.effect.effects.SharpenEffect";
-    field public static final String EFFECT_STRAIGHTEN = "android.media.effect.effects.StraightenEffect";
-    field public static final String EFFECT_TEMPERATURE = "android.media.effect.effects.ColorTemperatureEffect";
-    field public static final String EFFECT_TINT = "android.media.effect.effects.TintEffect";
-    field public static final String EFFECT_VIGNETTE = "android.media.effect.effects.VignetteEffect";
-  }
-
-  public interface EffectUpdateListener {
-    method public void onEffectUpdated(android.media.effect.Effect, Object);
-  }
-
-}
-
-package android.media.midi {
-
-  public final class MidiDevice implements java.io.Closeable {
-    method public void close() throws java.io.IOException;
-    method public android.media.midi.MidiDevice.MidiConnection connectPorts(android.media.midi.MidiInputPort, int);
-    method public android.media.midi.MidiDeviceInfo getInfo();
-    method public android.media.midi.MidiInputPort openInputPort(int);
-    method public android.media.midi.MidiOutputPort openOutputPort(int);
-  }
-
-  public class MidiDevice.MidiConnection implements java.io.Closeable {
-    method public void close() throws java.io.IOException;
-  }
-
-  public final class MidiDeviceInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getId();
-    method public int getInputPortCount();
-    method public int getOutputPortCount();
-    method public android.media.midi.MidiDeviceInfo.PortInfo[] getPorts();
-    method public android.os.Bundle getProperties();
-    method public int getType();
-    method public boolean isPrivate();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.midi.MidiDeviceInfo> CREATOR;
-    field public static final String PROPERTY_BLUETOOTH_DEVICE = "bluetooth_device";
-    field public static final String PROPERTY_MANUFACTURER = "manufacturer";
-    field public static final String PROPERTY_NAME = "name";
-    field public static final String PROPERTY_PRODUCT = "product";
-    field public static final String PROPERTY_SERIAL_NUMBER = "serial_number";
-    field public static final String PROPERTY_USB_DEVICE = "usb_device";
-    field public static final String PROPERTY_VERSION = "version";
-    field public static final int TYPE_BLUETOOTH = 3; // 0x3
-    field public static final int TYPE_USB = 1; // 0x1
-    field public static final int TYPE_VIRTUAL = 2; // 0x2
-  }
-
-  public static final class MidiDeviceInfo.PortInfo {
-    method public String getName();
-    method public int getPortNumber();
-    method public int getType();
-    field public static final int TYPE_INPUT = 1; // 0x1
-    field public static final int TYPE_OUTPUT = 2; // 0x2
-  }
-
-  public abstract class MidiDeviceService extends android.app.Service {
-    ctor public MidiDeviceService();
-    method public final android.media.midi.MidiDeviceInfo getDeviceInfo();
-    method public final android.media.midi.MidiReceiver[] getOutputPortReceivers();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public void onClose();
-    method public void onDeviceStatusChanged(android.media.midi.MidiDeviceStatus);
-    method public abstract android.media.midi.MidiReceiver[] onGetInputPortReceivers();
-    field public static final String SERVICE_INTERFACE = "android.media.midi.MidiDeviceService";
-  }
-
-  public final class MidiDeviceStatus implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.media.midi.MidiDeviceInfo getDeviceInfo();
-    method public int getOutputPortOpenCount(int);
-    method public boolean isInputPortOpen(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.midi.MidiDeviceStatus> CREATOR;
-  }
-
-  public final class MidiInputPort extends android.media.midi.MidiReceiver implements java.io.Closeable {
-    method public void close() throws java.io.IOException;
-    method public int getPortNumber();
-    method public void onSend(byte[], int, int, long) throws java.io.IOException;
-  }
-
-  public final class MidiManager {
-    method public android.media.midi.MidiDeviceInfo[] getDevices();
-    method public void openBluetoothDevice(android.bluetooth.BluetoothDevice, android.media.midi.MidiManager.OnDeviceOpenedListener, android.os.Handler);
-    method public void openDevice(android.media.midi.MidiDeviceInfo, android.media.midi.MidiManager.OnDeviceOpenedListener, android.os.Handler);
-    method public void registerDeviceCallback(android.media.midi.MidiManager.DeviceCallback, android.os.Handler);
-    method public void unregisterDeviceCallback(android.media.midi.MidiManager.DeviceCallback);
-  }
-
-  public static class MidiManager.DeviceCallback {
-    ctor public MidiManager.DeviceCallback();
-    method public void onDeviceAdded(android.media.midi.MidiDeviceInfo);
-    method public void onDeviceRemoved(android.media.midi.MidiDeviceInfo);
-    method public void onDeviceStatusChanged(android.media.midi.MidiDeviceStatus);
-  }
-
-  public static interface MidiManager.OnDeviceOpenedListener {
-    method public void onDeviceOpened(android.media.midi.MidiDevice);
-  }
-
-  public final class MidiOutputPort extends android.media.midi.MidiSender implements java.io.Closeable {
-    method public void close() throws java.io.IOException;
-    method public int getPortNumber();
-    method public void onConnect(android.media.midi.MidiReceiver);
-    method public void onDisconnect(android.media.midi.MidiReceiver);
-  }
-
-  public abstract class MidiReceiver {
-    ctor public MidiReceiver();
-    ctor public MidiReceiver(int);
-    method public void flush() throws java.io.IOException;
-    method public final int getMaxMessageSize();
-    method public void onFlush() throws java.io.IOException;
-    method public abstract void onSend(byte[], int, int, long) throws java.io.IOException;
-    method public void send(byte[], int, int) throws java.io.IOException;
-    method public void send(byte[], int, int, long) throws java.io.IOException;
-  }
-
-  public abstract class MidiSender {
-    ctor public MidiSender();
-    method public void connect(android.media.midi.MidiReceiver);
-    method public void disconnect(android.media.midi.MidiReceiver);
-    method public abstract void onConnect(android.media.midi.MidiReceiver);
-    method public abstract void onDisconnect(android.media.midi.MidiReceiver);
-  }
-
-}
-
-package android.media.projection {
-
-  public final class MediaProjection {
-    method public android.hardware.display.VirtualDisplay createVirtualDisplay(@NonNull String, int, int, int, int, @Nullable android.view.Surface, @Nullable android.hardware.display.VirtualDisplay.Callback, @Nullable android.os.Handler);
-    method public void registerCallback(android.media.projection.MediaProjection.Callback, android.os.Handler);
-    method public void stop();
-    method public void unregisterCallback(android.media.projection.MediaProjection.Callback);
-  }
-
-  public abstract static class MediaProjection.Callback {
-    ctor public MediaProjection.Callback();
-    method public void onStop();
-  }
-
-  public final class MediaProjectionManager {
-    method public android.content.Intent createScreenCaptureIntent();
-    method public android.media.projection.MediaProjection getMediaProjection(int, @NonNull android.content.Intent);
-  }
-
-}
-
-package android.media.session {
-
-  public final class MediaController {
-    ctor public MediaController(@NonNull android.content.Context, @NonNull android.media.session.MediaSession.Token);
-    method public void adjustVolume(int, int);
-    method public boolean dispatchMediaButtonEvent(@NonNull android.view.KeyEvent);
-    method @Nullable public android.os.Bundle getExtras();
-    method public long getFlags();
-    method @Nullable public android.media.MediaMetadata getMetadata();
-    method public String getPackageName();
-    method @Nullable public android.media.session.MediaController.PlaybackInfo getPlaybackInfo();
-    method @Nullable public android.media.session.PlaybackState getPlaybackState();
-    method @Nullable public java.util.List<android.media.session.MediaSession.QueueItem> getQueue();
-    method @Nullable public CharSequence getQueueTitle();
-    method public int getRatingType();
-    method @Nullable public android.app.PendingIntent getSessionActivity();
-    method @NonNull public android.os.Bundle getSessionInfo();
-    method @NonNull public android.media.session.MediaSession.Token getSessionToken();
-    method @NonNull public String getTag();
-    method @NonNull public android.media.session.MediaController.TransportControls getTransportControls();
-    method public void registerCallback(@NonNull android.media.session.MediaController.Callback);
-    method public void registerCallback(@NonNull android.media.session.MediaController.Callback, @Nullable android.os.Handler);
-    method public void sendCommand(@NonNull String, @Nullable android.os.Bundle, @Nullable android.os.ResultReceiver);
-    method public void setVolumeTo(int, int);
-    method public void unregisterCallback(@NonNull android.media.session.MediaController.Callback);
-  }
-
-  public abstract static class MediaController.Callback {
-    ctor public MediaController.Callback();
-    method public void onAudioInfoChanged(android.media.session.MediaController.PlaybackInfo);
-    method public void onExtrasChanged(@Nullable android.os.Bundle);
-    method public void onMetadataChanged(@Nullable android.media.MediaMetadata);
-    method public void onPlaybackStateChanged(@Nullable android.media.session.PlaybackState);
-    method public void onQueueChanged(@Nullable java.util.List<android.media.session.MediaSession.QueueItem>);
-    method public void onQueueTitleChanged(@Nullable CharSequence);
-    method public void onSessionDestroyed();
-    method public void onSessionEvent(@NonNull String, @Nullable android.os.Bundle);
-  }
-
-  public static final class MediaController.PlaybackInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.media.AudioAttributes getAudioAttributes();
-    method public int getCurrentVolume();
-    method public int getMaxVolume();
-    method public int getPlaybackType();
-    method public int getVolumeControl();
-    method @Nullable public String getVolumeControlId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.session.MediaController.PlaybackInfo> CREATOR;
-    field public static final int PLAYBACK_TYPE_LOCAL = 1; // 0x1
-    field public static final int PLAYBACK_TYPE_REMOTE = 2; // 0x2
-  }
-
-  public final class MediaController.TransportControls {
-    method public void fastForward();
-    method public void pause();
-    method public void play();
-    method public void playFromMediaId(String, android.os.Bundle);
-    method public void playFromSearch(String, android.os.Bundle);
-    method public void playFromUri(android.net.Uri, android.os.Bundle);
-    method public void prepare();
-    method public void prepareFromMediaId(String, android.os.Bundle);
-    method public void prepareFromSearch(String, android.os.Bundle);
-    method public void prepareFromUri(android.net.Uri, android.os.Bundle);
-    method public void rewind();
-    method public void seekTo(long);
-    method public void sendCustomAction(@NonNull android.media.session.PlaybackState.CustomAction, @Nullable android.os.Bundle);
-    method public void sendCustomAction(@NonNull String, @Nullable android.os.Bundle);
-    method public void setPlaybackSpeed(float);
-    method public void setRating(android.media.Rating);
-    method public void skipToNext();
-    method public void skipToPrevious();
-    method public void skipToQueueItem(long);
-    method public void stop();
-  }
-
-  public final class MediaSession {
-    ctor public MediaSession(@NonNull android.content.Context, @NonNull String);
-    ctor public MediaSession(@NonNull android.content.Context, @NonNull String, @Nullable android.os.Bundle);
-    method @NonNull public android.media.session.MediaController getController();
-    method @NonNull public android.media.session.MediaSessionManager.RemoteUserInfo getCurrentControllerInfo();
-    method @NonNull public android.media.session.MediaSession.Token getSessionToken();
-    method public boolean isActive();
-    method public void release();
-    method public void sendSessionEvent(@NonNull String, @Nullable android.os.Bundle);
-    method public void setActive(boolean);
-    method public void setCallback(@Nullable android.media.session.MediaSession.Callback);
-    method public void setCallback(@Nullable android.media.session.MediaSession.Callback, @Nullable android.os.Handler);
-    method public void setExtras(@Nullable android.os.Bundle);
-    method public void setFlags(int);
-    method public void setMediaButtonReceiver(@Nullable android.app.PendingIntent);
-    method public void setMetadata(@Nullable android.media.MediaMetadata);
-    method public void setPlaybackState(@Nullable android.media.session.PlaybackState);
-    method public void setPlaybackToLocal(android.media.AudioAttributes);
-    method public void setPlaybackToRemote(@NonNull android.media.VolumeProvider);
-    method public void setQueue(@Nullable java.util.List<android.media.session.MediaSession.QueueItem>);
-    method public void setQueueTitle(@Nullable CharSequence);
-    method public void setRatingType(int);
-    method public void setSessionActivity(@Nullable android.app.PendingIntent);
-    field @Deprecated public static final int FLAG_HANDLES_MEDIA_BUTTONS = 1; // 0x1
-    field @Deprecated public static final int FLAG_HANDLES_TRANSPORT_CONTROLS = 2; // 0x2
-  }
-
-  public abstract static class MediaSession.Callback {
-    ctor public MediaSession.Callback();
-    method public void onCommand(@NonNull String, @Nullable android.os.Bundle, @Nullable android.os.ResultReceiver);
-    method public void onCustomAction(@NonNull String, @Nullable android.os.Bundle);
-    method public void onFastForward();
-    method public boolean onMediaButtonEvent(@NonNull android.content.Intent);
-    method public void onPause();
-    method public void onPlay();
-    method public void onPlayFromMediaId(String, android.os.Bundle);
-    method public void onPlayFromSearch(String, android.os.Bundle);
-    method public void onPlayFromUri(android.net.Uri, android.os.Bundle);
-    method public void onPrepare();
-    method public void onPrepareFromMediaId(String, android.os.Bundle);
-    method public void onPrepareFromSearch(String, android.os.Bundle);
-    method public void onPrepareFromUri(android.net.Uri, android.os.Bundle);
-    method public void onRewind();
-    method public void onSeekTo(long);
-    method public void onSetPlaybackSpeed(float);
-    method public void onSetRating(@NonNull android.media.Rating);
-    method public void onSkipToNext();
-    method public void onSkipToPrevious();
-    method public void onSkipToQueueItem(long);
-    method public void onStop();
-  }
-
-  public static final class MediaSession.QueueItem implements android.os.Parcelable {
-    ctor public MediaSession.QueueItem(android.media.MediaDescription, long);
-    method public int describeContents();
-    method public android.media.MediaDescription getDescription();
-    method public long getQueueId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.session.MediaSession.QueueItem> CREATOR;
-    field public static final int UNKNOWN_ID = -1; // 0xffffffff
-  }
-
-  public static final class MediaSession.Token implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.session.MediaSession.Token> CREATOR;
-  }
-
-  public final class MediaSessionManager {
-    method public void addOnActiveSessionsChangedListener(@NonNull android.media.session.MediaSessionManager.OnActiveSessionsChangedListener, @Nullable android.content.ComponentName);
-    method public void addOnActiveSessionsChangedListener(@NonNull android.media.session.MediaSessionManager.OnActiveSessionsChangedListener, @Nullable android.content.ComponentName, @Nullable android.os.Handler);
-    method public void addOnSession2TokensChangedListener(@NonNull android.media.session.MediaSessionManager.OnSession2TokensChangedListener);
-    method public void addOnSession2TokensChangedListener(@NonNull android.media.session.MediaSessionManager.OnSession2TokensChangedListener, @NonNull android.os.Handler);
-    method @NonNull public java.util.List<android.media.session.MediaController> getActiveSessions(@Nullable android.content.ComponentName);
-    method @NonNull public java.util.List<android.media.Session2Token> getSession2Tokens();
-    method public boolean isTrustedForMediaControl(@NonNull android.media.session.MediaSessionManager.RemoteUserInfo);
-    method public void notifySession2Created(@NonNull android.media.Session2Token);
-    method public void removeOnActiveSessionsChangedListener(@NonNull android.media.session.MediaSessionManager.OnActiveSessionsChangedListener);
-    method public void removeOnSession2TokensChangedListener(@NonNull android.media.session.MediaSessionManager.OnSession2TokensChangedListener);
-  }
-
-  public static interface MediaSessionManager.OnActiveSessionsChangedListener {
-    method public void onActiveSessionsChanged(@Nullable java.util.List<android.media.session.MediaController>);
-  }
-
-  public static interface MediaSessionManager.OnSession2TokensChangedListener {
-    method public void onSession2TokensChanged(@NonNull java.util.List<android.media.Session2Token>);
-  }
-
-  public static final class MediaSessionManager.RemoteUserInfo {
-    ctor public MediaSessionManager.RemoteUserInfo(@NonNull String, int, int);
-    method public String getPackageName();
-    method public int getPid();
-    method public int getUid();
-  }
-
-  public final class PlaybackState implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getActions();
-    method public long getActiveQueueItemId();
-    method public long getBufferedPosition();
-    method public java.util.List<android.media.session.PlaybackState.CustomAction> getCustomActions();
-    method public CharSequence getErrorMessage();
-    method @Nullable public android.os.Bundle getExtras();
-    method public long getLastPositionUpdateTime();
-    method public float getPlaybackSpeed();
-    method public long getPosition();
-    method public int getState();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final long ACTION_FAST_FORWARD = 64L; // 0x40L
-    field public static final long ACTION_PAUSE = 2L; // 0x2L
-    field public static final long ACTION_PLAY = 4L; // 0x4L
-    field public static final long ACTION_PLAY_FROM_MEDIA_ID = 1024L; // 0x400L
-    field public static final long ACTION_PLAY_FROM_SEARCH = 2048L; // 0x800L
-    field public static final long ACTION_PLAY_FROM_URI = 8192L; // 0x2000L
-    field public static final long ACTION_PLAY_PAUSE = 512L; // 0x200L
-    field public static final long ACTION_PREPARE = 16384L; // 0x4000L
-    field public static final long ACTION_PREPARE_FROM_MEDIA_ID = 32768L; // 0x8000L
-    field public static final long ACTION_PREPARE_FROM_SEARCH = 65536L; // 0x10000L
-    field public static final long ACTION_PREPARE_FROM_URI = 131072L; // 0x20000L
-    field public static final long ACTION_REWIND = 8L; // 0x8L
-    field public static final long ACTION_SEEK_TO = 256L; // 0x100L
-    field public static final long ACTION_SET_RATING = 128L; // 0x80L
-    field public static final long ACTION_SKIP_TO_NEXT = 32L; // 0x20L
-    field public static final long ACTION_SKIP_TO_PREVIOUS = 16L; // 0x10L
-    field public static final long ACTION_SKIP_TO_QUEUE_ITEM = 4096L; // 0x1000L
-    field public static final long ACTION_STOP = 1L; // 0x1L
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.session.PlaybackState> CREATOR;
-    field public static final long PLAYBACK_POSITION_UNKNOWN = -1L; // 0xffffffffffffffffL
-    field public static final int STATE_BUFFERING = 6; // 0x6
-    field public static final int STATE_CONNECTING = 8; // 0x8
-    field public static final int STATE_ERROR = 7; // 0x7
-    field public static final int STATE_FAST_FORWARDING = 4; // 0x4
-    field public static final int STATE_NONE = 0; // 0x0
-    field public static final int STATE_PAUSED = 2; // 0x2
-    field public static final int STATE_PLAYING = 3; // 0x3
-    field public static final int STATE_REWINDING = 5; // 0x5
-    field public static final int STATE_SKIPPING_TO_NEXT = 10; // 0xa
-    field public static final int STATE_SKIPPING_TO_PREVIOUS = 9; // 0x9
-    field public static final int STATE_SKIPPING_TO_QUEUE_ITEM = 11; // 0xb
-    field public static final int STATE_STOPPED = 1; // 0x1
-  }
-
-  public static final class PlaybackState.Builder {
-    ctor public PlaybackState.Builder();
-    ctor public PlaybackState.Builder(android.media.session.PlaybackState);
-    method public android.media.session.PlaybackState.Builder addCustomAction(String, String, int);
-    method public android.media.session.PlaybackState.Builder addCustomAction(android.media.session.PlaybackState.CustomAction);
-    method public android.media.session.PlaybackState build();
-    method public android.media.session.PlaybackState.Builder setActions(long);
-    method public android.media.session.PlaybackState.Builder setActiveQueueItemId(long);
-    method public android.media.session.PlaybackState.Builder setBufferedPosition(long);
-    method public android.media.session.PlaybackState.Builder setErrorMessage(CharSequence);
-    method public android.media.session.PlaybackState.Builder setExtras(android.os.Bundle);
-    method public android.media.session.PlaybackState.Builder setState(int, long, float, long);
-    method public android.media.session.PlaybackState.Builder setState(int, long, float);
-  }
-
-  public static final class PlaybackState.CustomAction implements android.os.Parcelable {
-    method public int describeContents();
-    method public String getAction();
-    method public android.os.Bundle getExtras();
-    method public int getIcon();
-    method public CharSequence getName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.session.PlaybackState.CustomAction> CREATOR;
-  }
-
-  public static final class PlaybackState.CustomAction.Builder {
-    ctor public PlaybackState.CustomAction.Builder(String, CharSequence, @DrawableRes int);
-    method public android.media.session.PlaybackState.CustomAction build();
-    method public android.media.session.PlaybackState.CustomAction.Builder setExtras(android.os.Bundle);
-  }
-
-}
-
-package android.media.tv {
-
-  public final class TvContentRating {
-    method public boolean contains(@NonNull android.media.tv.TvContentRating);
-    method public static android.media.tv.TvContentRating createRating(String, String, String, java.lang.String...);
-    method public String flattenToString();
-    method public String getDomain();
-    method public String getMainRating();
-    method public String getRatingSystem();
-    method public java.util.List<java.lang.String> getSubRatings();
-    method public static android.media.tv.TvContentRating unflattenFromString(String);
-    field public static final android.media.tv.TvContentRating UNRATED;
-  }
-
-  public final class TvContract {
-    method public static android.net.Uri buildChannelLogoUri(long);
-    method public static android.net.Uri buildChannelLogoUri(android.net.Uri);
-    method public static android.net.Uri buildChannelUri(long);
-    method public static android.net.Uri buildChannelUriForPassthroughInput(String);
-    method public static android.net.Uri buildChannelsUriForInput(@Nullable String);
-    method public static String buildInputId(android.content.ComponentName);
-    method public static android.net.Uri buildPreviewProgramUri(long);
-    method public static android.net.Uri buildPreviewProgramsUriForChannel(long);
-    method public static android.net.Uri buildPreviewProgramsUriForChannel(android.net.Uri);
-    method public static android.net.Uri buildProgramUri(long);
-    method public static android.net.Uri buildProgramsUriForChannel(long);
-    method public static android.net.Uri buildProgramsUriForChannel(android.net.Uri);
-    method public static android.net.Uri buildProgramsUriForChannel(long, long, long);
-    method public static android.net.Uri buildProgramsUriForChannel(android.net.Uri, long, long);
-    method public static android.net.Uri buildRecordedProgramUri(long);
-    method public static android.net.Uri buildWatchNextProgramUri(long);
-    method public static boolean isChannelUri(@NonNull android.net.Uri);
-    method public static boolean isChannelUriForPassthroughInput(@NonNull android.net.Uri);
-    method public static boolean isChannelUriForTunerInput(@NonNull android.net.Uri);
-    method public static boolean isProgramUri(@NonNull android.net.Uri);
-    method public static boolean isRecordedProgramUri(@NonNull android.net.Uri);
-    method public static void requestChannelBrowsable(android.content.Context, long);
-    field public static final String ACTION_INITIALIZE_PROGRAMS = "android.media.tv.action.INITIALIZE_PROGRAMS";
-    field public static final String ACTION_PREVIEW_PROGRAM_ADDED_TO_WATCH_NEXT = "android.media.tv.action.PREVIEW_PROGRAM_ADDED_TO_WATCH_NEXT";
-    field public static final String ACTION_PREVIEW_PROGRAM_BROWSABLE_DISABLED = "android.media.tv.action.PREVIEW_PROGRAM_BROWSABLE_DISABLED";
-    field public static final String ACTION_REQUEST_CHANNEL_BROWSABLE = "android.media.tv.action.REQUEST_CHANNEL_BROWSABLE";
-    field public static final String ACTION_WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED = "android.media.tv.action.WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED";
-    field public static final String AUTHORITY = "android.media.tv";
-    field public static final String EXTRA_CHANNEL_ID = "android.media.tv.extra.CHANNEL_ID";
-    field public static final String EXTRA_PREVIEW_PROGRAM_ID = "android.media.tv.extra.PREVIEW_PROGRAM_ID";
-    field public static final String EXTRA_WATCH_NEXT_PROGRAM_ID = "android.media.tv.extra.WATCH_NEXT_PROGRAM_ID";
-  }
-
-  public static interface TvContract.BaseTvColumns extends android.provider.BaseColumns {
-    field public static final String COLUMN_PACKAGE_NAME = "package_name";
-  }
-
-  public static final class TvContract.Channels implements android.media.tv.TvContract.BaseTvColumns {
-    method @Nullable public static String getVideoResolution(String);
-    field public static final String COLUMN_APP_LINK_COLOR = "app_link_color";
-    field public static final String COLUMN_APP_LINK_ICON_URI = "app_link_icon_uri";
-    field public static final String COLUMN_APP_LINK_INTENT_URI = "app_link_intent_uri";
-    field public static final String COLUMN_APP_LINK_POSTER_ART_URI = "app_link_poster_art_uri";
-    field public static final String COLUMN_APP_LINK_TEXT = "app_link_text";
-    field public static final String COLUMN_BROWSABLE = "browsable";
-    field public static final String COLUMN_DESCRIPTION = "description";
-    field public static final String COLUMN_DISPLAY_NAME = "display_name";
-    field public static final String COLUMN_DISPLAY_NUMBER = "display_number";
-    field public static final String COLUMN_GLOBAL_CONTENT_ID = "global_content_id";
-    field public static final String COLUMN_INPUT_ID = "input_id";
-    field public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
-    field public static final String COLUMN_INTERNAL_PROVIDER_ID = "internal_provider_id";
-    field public static final String COLUMN_LOCKED = "locked";
-    field public static final String COLUMN_NETWORK_AFFILIATION = "network_affiliation";
-    field public static final String COLUMN_ORIGINAL_NETWORK_ID = "original_network_id";
-    field public static final String COLUMN_SEARCHABLE = "searchable";
-    field public static final String COLUMN_SERVICE_ID = "service_id";
-    field public static final String COLUMN_SERVICE_TYPE = "service_type";
-    field public static final String COLUMN_TRANSIENT = "transient";
-    field public static final String COLUMN_TRANSPORT_STREAM_ID = "transport_stream_id";
-    field public static final String COLUMN_TYPE = "type";
-    field public static final String COLUMN_VERSION_NUMBER = "version_number";
-    field public static final String COLUMN_VIDEO_FORMAT = "video_format";
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/channel";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/channel";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String SERVICE_TYPE_AUDIO = "SERVICE_TYPE_AUDIO";
-    field public static final String SERVICE_TYPE_AUDIO_VIDEO = "SERVICE_TYPE_AUDIO_VIDEO";
-    field public static final String SERVICE_TYPE_OTHER = "SERVICE_TYPE_OTHER";
-    field public static final String TYPE_1SEG = "TYPE_1SEG";
-    field public static final String TYPE_ATSC3_T = "TYPE_ATSC3_T";
-    field public static final String TYPE_ATSC_C = "TYPE_ATSC_C";
-    field public static final String TYPE_ATSC_M_H = "TYPE_ATSC_M_H";
-    field public static final String TYPE_ATSC_T = "TYPE_ATSC_T";
-    field public static final String TYPE_CMMB = "TYPE_CMMB";
-    field public static final String TYPE_DTMB = "TYPE_DTMB";
-    field public static final String TYPE_DVB_C = "TYPE_DVB_C";
-    field public static final String TYPE_DVB_C2 = "TYPE_DVB_C2";
-    field public static final String TYPE_DVB_H = "TYPE_DVB_H";
-    field public static final String TYPE_DVB_S = "TYPE_DVB_S";
-    field public static final String TYPE_DVB_S2 = "TYPE_DVB_S2";
-    field public static final String TYPE_DVB_SH = "TYPE_DVB_SH";
-    field public static final String TYPE_DVB_T = "TYPE_DVB_T";
-    field public static final String TYPE_DVB_T2 = "TYPE_DVB_T2";
-    field public static final String TYPE_ISDB_C = "TYPE_ISDB_C";
-    field public static final String TYPE_ISDB_S = "TYPE_ISDB_S";
-    field public static final String TYPE_ISDB_S3 = "TYPE_ISDB_S3";
-    field public static final String TYPE_ISDB_T = "TYPE_ISDB_T";
-    field public static final String TYPE_ISDB_TB = "TYPE_ISDB_TB";
-    field public static final String TYPE_NTSC = "TYPE_NTSC";
-    field public static final String TYPE_OTHER = "TYPE_OTHER";
-    field public static final String TYPE_PAL = "TYPE_PAL";
-    field public static final String TYPE_PREVIEW = "TYPE_PREVIEW";
-    field public static final String TYPE_SECAM = "TYPE_SECAM";
-    field public static final String TYPE_S_DMB = "TYPE_S_DMB";
-    field public static final String TYPE_T_DMB = "TYPE_T_DMB";
-    field public static final String VIDEO_FORMAT_1080I = "VIDEO_FORMAT_1080I";
-    field public static final String VIDEO_FORMAT_1080P = "VIDEO_FORMAT_1080P";
-    field public static final String VIDEO_FORMAT_2160P = "VIDEO_FORMAT_2160P";
-    field public static final String VIDEO_FORMAT_240P = "VIDEO_FORMAT_240P";
-    field public static final String VIDEO_FORMAT_360P = "VIDEO_FORMAT_360P";
-    field public static final String VIDEO_FORMAT_4320P = "VIDEO_FORMAT_4320P";
-    field public static final String VIDEO_FORMAT_480I = "VIDEO_FORMAT_480I";
-    field public static final String VIDEO_FORMAT_480P = "VIDEO_FORMAT_480P";
-    field public static final String VIDEO_FORMAT_576I = "VIDEO_FORMAT_576I";
-    field public static final String VIDEO_FORMAT_576P = "VIDEO_FORMAT_576P";
-    field public static final String VIDEO_FORMAT_720P = "VIDEO_FORMAT_720P";
-    field public static final String VIDEO_RESOLUTION_ED = "VIDEO_RESOLUTION_ED";
-    field public static final String VIDEO_RESOLUTION_FHD = "VIDEO_RESOLUTION_FHD";
-    field public static final String VIDEO_RESOLUTION_HD = "VIDEO_RESOLUTION_HD";
-    field public static final String VIDEO_RESOLUTION_SD = "VIDEO_RESOLUTION_SD";
-    field public static final String VIDEO_RESOLUTION_UHD = "VIDEO_RESOLUTION_UHD";
-  }
-
-  public static final class TvContract.Channels.Logo {
-    field public static final String CONTENT_DIRECTORY = "logo";
-  }
-
-  public static final class TvContract.PreviewPrograms implements android.media.tv.TvContract.BaseTvColumns {
-    field public static final int ASPECT_RATIO_16_9 = 0; // 0x0
-    field public static final int ASPECT_RATIO_1_1 = 3; // 0x3
-    field public static final int ASPECT_RATIO_2_3 = 4; // 0x4
-    field public static final int ASPECT_RATIO_3_2 = 1; // 0x1
-    field public static final int ASPECT_RATIO_4_3 = 2; // 0x2
-    field public static final int AVAILABILITY_AVAILABLE = 0; // 0x0
-    field public static final int AVAILABILITY_FREE_WITH_SUBSCRIPTION = 1; // 0x1
-    field public static final int AVAILABILITY_PAID_CONTENT = 2; // 0x2
-    field public static final String COLUMN_AUDIO_LANGUAGE = "audio_language";
-    field public static final String COLUMN_AUTHOR = "author";
-    field public static final String COLUMN_AVAILABILITY = "availability";
-    field public static final String COLUMN_BROWSABLE = "browsable";
-    field public static final String COLUMN_CANONICAL_GENRE = "canonical_genre";
-    field public static final String COLUMN_CHANNEL_ID = "channel_id";
-    field public static final String COLUMN_CONTENT_ID = "content_id";
-    field public static final String COLUMN_CONTENT_RATING = "content_rating";
-    field public static final String COLUMN_DURATION_MILLIS = "duration_millis";
-    field public static final String COLUMN_EPISODE_DISPLAY_NUMBER = "episode_display_number";
-    field public static final String COLUMN_EPISODE_TITLE = "episode_title";
-    field public static final String COLUMN_INTENT_URI = "intent_uri";
-    field public static final String COLUMN_INTERACTION_COUNT = "interaction_count";
-    field public static final String COLUMN_INTERACTION_TYPE = "interaction_type";
-    field public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
-    field public static final String COLUMN_INTERNAL_PROVIDER_ID = "internal_provider_id";
-    field public static final String COLUMN_ITEM_COUNT = "item_count";
-    field public static final String COLUMN_LAST_PLAYBACK_POSITION_MILLIS = "last_playback_position_millis";
-    field public static final String COLUMN_LIVE = "live";
-    field public static final String COLUMN_LOGO_URI = "logo_uri";
-    field public static final String COLUMN_LONG_DESCRIPTION = "long_description";
-    field public static final String COLUMN_OFFER_PRICE = "offer_price";
-    field public static final String COLUMN_POSTER_ART_ASPECT_RATIO = "poster_art_aspect_ratio";
-    field public static final String COLUMN_POSTER_ART_URI = "poster_art_uri";
-    field public static final String COLUMN_PREVIEW_VIDEO_URI = "preview_video_uri";
-    field public static final String COLUMN_RELEASE_DATE = "release_date";
-    field public static final String COLUMN_REVIEW_RATING = "review_rating";
-    field public static final String COLUMN_REVIEW_RATING_STYLE = "review_rating_style";
-    field public static final String COLUMN_SEARCHABLE = "searchable";
-    field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
-    field public static final String COLUMN_SEASON_TITLE = "season_title";
-    field public static final String COLUMN_SERIES_ID = "series_id";
-    field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
-    field public static final String COLUMN_SPLIT_ID = "split_id";
-    field public static final String COLUMN_STARTING_PRICE = "starting_price";
-    field public static final String COLUMN_THUMBNAIL_ASPECT_RATIO = "poster_thumbnail_aspect_ratio";
-    field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
-    field public static final String COLUMN_TITLE = "title";
-    field public static final String COLUMN_TRANSIENT = "transient";
-    field public static final String COLUMN_TYPE = "type";
-    field public static final String COLUMN_VERSION_NUMBER = "version_number";
-    field public static final String COLUMN_VIDEO_HEIGHT = "video_height";
-    field public static final String COLUMN_VIDEO_WIDTH = "video_width";
-    field public static final String COLUMN_WEIGHT = "weight";
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/preview_program";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/preview_program";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final int INTERACTION_TYPE_FANS = 3; // 0x3
-    field public static final int INTERACTION_TYPE_FOLLOWERS = 2; // 0x2
-    field public static final int INTERACTION_TYPE_LIKES = 4; // 0x4
-    field public static final int INTERACTION_TYPE_LISTENS = 1; // 0x1
-    field public static final int INTERACTION_TYPE_THUMBS = 5; // 0x5
-    field public static final int INTERACTION_TYPE_VIEWERS = 6; // 0x6
-    field public static final int INTERACTION_TYPE_VIEWS = 0; // 0x0
-    field public static final int REVIEW_RATING_STYLE_PERCENTAGE = 2; // 0x2
-    field public static final int REVIEW_RATING_STYLE_STARS = 0; // 0x0
-    field public static final int REVIEW_RATING_STYLE_THUMBS_UP_DOWN = 1; // 0x1
-    field public static final int TYPE_ALBUM = 8; // 0x8
-    field public static final int TYPE_ARTIST = 9; // 0x9
-    field public static final int TYPE_CHANNEL = 6; // 0x6
-    field public static final int TYPE_CLIP = 4; // 0x4
-    field public static final int TYPE_EVENT = 5; // 0x5
-    field public static final int TYPE_MOVIE = 0; // 0x0
-    field public static final int TYPE_PLAYLIST = 10; // 0xa
-    field public static final int TYPE_STATION = 11; // 0xb
-    field public static final int TYPE_TRACK = 7; // 0x7
-    field public static final int TYPE_TV_EPISODE = 3; // 0x3
-    field public static final int TYPE_TV_SEASON = 2; // 0x2
-    field public static final int TYPE_TV_SERIES = 1; // 0x1
-  }
-
-  public static final class TvContract.Programs implements android.media.tv.TvContract.BaseTvColumns {
-    field public static final String COLUMN_AUDIO_LANGUAGE = "audio_language";
-    field public static final String COLUMN_BROADCAST_GENRE = "broadcast_genre";
-    field public static final String COLUMN_CANONICAL_GENRE = "canonical_genre";
-    field public static final String COLUMN_CHANNEL_ID = "channel_id";
-    field public static final String COLUMN_CONTENT_RATING = "content_rating";
-    field public static final String COLUMN_END_TIME_UTC_MILLIS = "end_time_utc_millis";
-    field public static final String COLUMN_EPISODE_DISPLAY_NUMBER = "episode_display_number";
-    field @Deprecated public static final String COLUMN_EPISODE_NUMBER = "episode_number";
-    field public static final String COLUMN_EPISODE_TITLE = "episode_title";
-    field public static final String COLUMN_EVENT_ID = "event_id";
-    field public static final String COLUMN_GLOBAL_CONTENT_ID = "global_content_id";
-    field public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
-    field public static final String COLUMN_LONG_DESCRIPTION = "long_description";
-    field public static final String COLUMN_POSTER_ART_URI = "poster_art_uri";
-    field public static final String COLUMN_RECORDING_PROHIBITED = "recording_prohibited";
-    field public static final String COLUMN_REVIEW_RATING = "review_rating";
-    field public static final String COLUMN_REVIEW_RATING_STYLE = "review_rating_style";
-    field public static final String COLUMN_SEARCHABLE = "searchable";
-    field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
-    field @Deprecated public static final String COLUMN_SEASON_NUMBER = "season_number";
-    field public static final String COLUMN_SEASON_TITLE = "season_title";
-    field public static final String COLUMN_SERIES_ID = "series_id";
-    field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
-    field public static final String COLUMN_SPLIT_ID = "split_id";
-    field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
-    field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
-    field public static final String COLUMN_TITLE = "title";
-    field public static final String COLUMN_VERSION_NUMBER = "version_number";
-    field public static final String COLUMN_VIDEO_HEIGHT = "video_height";
-    field public static final String COLUMN_VIDEO_WIDTH = "video_width";
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/program";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/program";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final int REVIEW_RATING_STYLE_PERCENTAGE = 2; // 0x2
-    field public static final int REVIEW_RATING_STYLE_STARS = 0; // 0x0
-    field public static final int REVIEW_RATING_STYLE_THUMBS_UP_DOWN = 1; // 0x1
-  }
-
-  public static final class TvContract.Programs.Genres {
-    method public static String[] decode(@NonNull String);
-    method public static String encode(@NonNull java.lang.String...);
-    method public static boolean isCanonical(String);
-    field public static final String ANIMAL_WILDLIFE = "ANIMAL_WILDLIFE";
-    field public static final String ARTS = "ARTS";
-    field public static final String COMEDY = "COMEDY";
-    field public static final String DRAMA = "DRAMA";
-    field public static final String EDUCATION = "EDUCATION";
-    field public static final String ENTERTAINMENT = "ENTERTAINMENT";
-    field public static final String FAMILY_KIDS = "FAMILY_KIDS";
-    field public static final String GAMING = "GAMING";
-    field public static final String LIFE_STYLE = "LIFE_STYLE";
-    field public static final String MOVIES = "MOVIES";
-    field public static final String MUSIC = "MUSIC";
-    field public static final String NEWS = "NEWS";
-    field public static final String PREMIER = "PREMIER";
-    field public static final String SHOPPING = "SHOPPING";
-    field public static final String SPORTS = "SPORTS";
-    field public static final String TECH_SCIENCE = "TECH_SCIENCE";
-    field public static final String TRAVEL = "TRAVEL";
-  }
-
-  public static final class TvContract.RecordedPrograms implements android.media.tv.TvContract.BaseTvColumns {
-    field public static final String COLUMN_AUDIO_LANGUAGE = "audio_language";
-    field public static final String COLUMN_BROADCAST_GENRE = "broadcast_genre";
-    field public static final String COLUMN_CANONICAL_GENRE = "canonical_genre";
-    field public static final String COLUMN_CHANNEL_ID = "channel_id";
-    field public static final String COLUMN_CONTENT_RATING = "content_rating";
-    field public static final String COLUMN_END_TIME_UTC_MILLIS = "end_time_utc_millis";
-    field public static final String COLUMN_EPISODE_DISPLAY_NUMBER = "episode_display_number";
-    field public static final String COLUMN_EPISODE_TITLE = "episode_title";
-    field public static final String COLUMN_INPUT_ID = "input_id";
-    field public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
-    field public static final String COLUMN_LONG_DESCRIPTION = "long_description";
-    field public static final String COLUMN_POSTER_ART_URI = "poster_art_uri";
-    field public static final String COLUMN_RECORDING_DATA_BYTES = "recording_data_bytes";
-    field public static final String COLUMN_RECORDING_DATA_URI = "recording_data_uri";
-    field public static final String COLUMN_RECORDING_DURATION_MILLIS = "recording_duration_millis";
-    field public static final String COLUMN_RECORDING_EXPIRE_TIME_UTC_MILLIS = "recording_expire_time_utc_millis";
-    field public static final String COLUMN_REVIEW_RATING = "review_rating";
-    field public static final String COLUMN_REVIEW_RATING_STYLE = "review_rating_style";
-    field public static final String COLUMN_SEARCHABLE = "searchable";
-    field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
-    field public static final String COLUMN_SEASON_TITLE = "season_title";
-    field public static final String COLUMN_SERIES_ID = "series_id";
-    field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
-    field public static final String COLUMN_SPLIT_ID = "split_id";
-    field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
-    field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
-    field public static final String COLUMN_TITLE = "title";
-    field public static final String COLUMN_VERSION_NUMBER = "version_number";
-    field public static final String COLUMN_VIDEO_HEIGHT = "video_height";
-    field public static final String COLUMN_VIDEO_WIDTH = "video_width";
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/recorded_program";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/recorded_program";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final int REVIEW_RATING_STYLE_PERCENTAGE = 2; // 0x2
-    field public static final int REVIEW_RATING_STYLE_STARS = 0; // 0x0
-    field public static final int REVIEW_RATING_STYLE_THUMBS_UP_DOWN = 1; // 0x1
-  }
-
-  public static final class TvContract.WatchNextPrograms implements android.media.tv.TvContract.BaseTvColumns {
-    field public static final int ASPECT_RATIO_16_9 = 0; // 0x0
-    field public static final int ASPECT_RATIO_1_1 = 3; // 0x3
-    field public static final int ASPECT_RATIO_2_3 = 4; // 0x4
-    field public static final int ASPECT_RATIO_3_2 = 1; // 0x1
-    field public static final int ASPECT_RATIO_4_3 = 2; // 0x2
-    field public static final int AVAILABILITY_AVAILABLE = 0; // 0x0
-    field public static final int AVAILABILITY_FREE_WITH_SUBSCRIPTION = 1; // 0x1
-    field public static final int AVAILABILITY_PAID_CONTENT = 2; // 0x2
-    field public static final String COLUMN_AUDIO_LANGUAGE = "audio_language";
-    field public static final String COLUMN_AUTHOR = "author";
-    field public static final String COLUMN_AVAILABILITY = "availability";
-    field public static final String COLUMN_BROWSABLE = "browsable";
-    field public static final String COLUMN_CANONICAL_GENRE = "canonical_genre";
-    field public static final String COLUMN_CONTENT_ID = "content_id";
-    field public static final String COLUMN_CONTENT_RATING = "content_rating";
-    field public static final String COLUMN_DURATION_MILLIS = "duration_millis";
-    field public static final String COLUMN_EPISODE_DISPLAY_NUMBER = "episode_display_number";
-    field public static final String COLUMN_EPISODE_TITLE = "episode_title";
-    field public static final String COLUMN_INTENT_URI = "intent_uri";
-    field public static final String COLUMN_INTERACTION_COUNT = "interaction_count";
-    field public static final String COLUMN_INTERACTION_TYPE = "interaction_type";
-    field public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
-    field public static final String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
-    field public static final String COLUMN_INTERNAL_PROVIDER_ID = "internal_provider_id";
-    field public static final String COLUMN_ITEM_COUNT = "item_count";
-    field public static final String COLUMN_LAST_ENGAGEMENT_TIME_UTC_MILLIS = "last_engagement_time_utc_millis";
-    field public static final String COLUMN_LAST_PLAYBACK_POSITION_MILLIS = "last_playback_position_millis";
-    field public static final String COLUMN_LIVE = "live";
-    field public static final String COLUMN_LOGO_URI = "logo_uri";
-    field public static final String COLUMN_LONG_DESCRIPTION = "long_description";
-    field public static final String COLUMN_OFFER_PRICE = "offer_price";
-    field public static final String COLUMN_POSTER_ART_ASPECT_RATIO = "poster_art_aspect_ratio";
-    field public static final String COLUMN_POSTER_ART_URI = "poster_art_uri";
-    field public static final String COLUMN_PREVIEW_VIDEO_URI = "preview_video_uri";
-    field public static final String COLUMN_RELEASE_DATE = "release_date";
-    field public static final String COLUMN_REVIEW_RATING = "review_rating";
-    field public static final String COLUMN_REVIEW_RATING_STYLE = "review_rating_style";
-    field public static final String COLUMN_SEARCHABLE = "searchable";
-    field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
-    field public static final String COLUMN_SEASON_TITLE = "season_title";
-    field public static final String COLUMN_SERIES_ID = "series_id";
-    field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
-    field public static final String COLUMN_SPLIT_ID = "split_id";
-    field public static final String COLUMN_STARTING_PRICE = "starting_price";
-    field public static final String COLUMN_THUMBNAIL_ASPECT_RATIO = "poster_thumbnail_aspect_ratio";
-    field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
-    field public static final String COLUMN_TITLE = "title";
-    field public static final String COLUMN_TRANSIENT = "transient";
-    field public static final String COLUMN_TYPE = "type";
-    field public static final String COLUMN_VERSION_NUMBER = "version_number";
-    field public static final String COLUMN_VIDEO_HEIGHT = "video_height";
-    field public static final String COLUMN_VIDEO_WIDTH = "video_width";
-    field public static final String COLUMN_WATCH_NEXT_TYPE = "watch_next_type";
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/watch_next_program";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/watch_next_program";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final int INTERACTION_TYPE_FANS = 3; // 0x3
-    field public static final int INTERACTION_TYPE_FOLLOWERS = 2; // 0x2
-    field public static final int INTERACTION_TYPE_LIKES = 4; // 0x4
-    field public static final int INTERACTION_TYPE_LISTENS = 1; // 0x1
-    field public static final int INTERACTION_TYPE_THUMBS = 5; // 0x5
-    field public static final int INTERACTION_TYPE_VIEWERS = 6; // 0x6
-    field public static final int INTERACTION_TYPE_VIEWS = 0; // 0x0
-    field public static final int REVIEW_RATING_STYLE_PERCENTAGE = 2; // 0x2
-    field public static final int REVIEW_RATING_STYLE_STARS = 0; // 0x0
-    field public static final int REVIEW_RATING_STYLE_THUMBS_UP_DOWN = 1; // 0x1
-    field public static final int TYPE_ALBUM = 8; // 0x8
-    field public static final int TYPE_ARTIST = 9; // 0x9
-    field public static final int TYPE_CHANNEL = 6; // 0x6
-    field public static final int TYPE_CLIP = 4; // 0x4
-    field public static final int TYPE_EVENT = 5; // 0x5
-    field public static final int TYPE_MOVIE = 0; // 0x0
-    field public static final int TYPE_PLAYLIST = 10; // 0xa
-    field public static final int TYPE_STATION = 11; // 0xb
-    field public static final int TYPE_TRACK = 7; // 0x7
-    field public static final int TYPE_TV_EPISODE = 3; // 0x3
-    field public static final int TYPE_TV_SEASON = 2; // 0x2
-    field public static final int TYPE_TV_SERIES = 1; // 0x1
-    field public static final int WATCH_NEXT_TYPE_CONTINUE = 0; // 0x0
-    field public static final int WATCH_NEXT_TYPE_NEW = 2; // 0x2
-    field public static final int WATCH_NEXT_TYPE_NEXT = 1; // 0x1
-    field public static final int WATCH_NEXT_TYPE_WATCHLIST = 3; // 0x3
-  }
-
-  public final class TvInputInfo implements android.os.Parcelable {
-    method public boolean canRecord();
-    method @Deprecated public android.content.Intent createSettingsIntent();
-    method public android.content.Intent createSetupIntent();
-    method public int describeContents();
-    method public android.os.Bundle getExtras();
-    method public String getId();
-    method public String getParentId();
-    method public android.content.pm.ServiceInfo getServiceInfo();
-    method public int getTunerCount();
-    method public int getType();
-    method public boolean isHidden(android.content.Context);
-    method public boolean isPassthroughInput();
-    method public CharSequence loadCustomLabel(android.content.Context);
-    method public android.graphics.drawable.Drawable loadIcon(@NonNull android.content.Context);
-    method public CharSequence loadLabel(@NonNull android.content.Context);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.TvInputInfo> CREATOR;
-    field public static final String EXTRA_INPUT_ID = "android.media.tv.extra.INPUT_ID";
-    field public static final int TYPE_COMPONENT = 1004; // 0x3ec
-    field public static final int TYPE_COMPOSITE = 1001; // 0x3e9
-    field public static final int TYPE_DISPLAY_PORT = 1008; // 0x3f0
-    field public static final int TYPE_DVI = 1006; // 0x3ee
-    field public static final int TYPE_HDMI = 1007; // 0x3ef
-    field public static final int TYPE_OTHER = 1000; // 0x3e8
-    field public static final int TYPE_SCART = 1003; // 0x3eb
-    field public static final int TYPE_SVIDEO = 1002; // 0x3ea
-    field public static final int TYPE_TUNER = 0; // 0x0
-    field public static final int TYPE_VGA = 1005; // 0x3ed
-  }
-
-  public static final class TvInputInfo.Builder {
-    ctor public TvInputInfo.Builder(android.content.Context, android.content.ComponentName);
-    method public android.media.tv.TvInputInfo build();
-    method public android.media.tv.TvInputInfo.Builder setCanRecord(boolean);
-    method public android.media.tv.TvInputInfo.Builder setExtras(android.os.Bundle);
-    method public android.media.tv.TvInputInfo.Builder setTunerCount(int);
-  }
-
-  public final class TvInputManager {
-    method public java.util.List<android.media.tv.TvContentRating> getBlockedRatings();
-    method public int getInputState(@NonNull String);
-    method @Nullable public android.media.tv.TvInputInfo getTvInputInfo(@NonNull String);
-    method public java.util.List<android.media.tv.TvInputInfo> getTvInputList();
-    method public boolean isParentalControlsEnabled();
-    method public boolean isRatingBlocked(@NonNull android.media.tv.TvContentRating);
-    method public void registerCallback(@NonNull android.media.tv.TvInputManager.TvInputCallback, @NonNull android.os.Handler);
-    method public void unregisterCallback(@NonNull android.media.tv.TvInputManager.TvInputCallback);
-    method public void updateTvInputInfo(@NonNull android.media.tv.TvInputInfo);
-    field public static final String ACTION_BLOCKED_RATINGS_CHANGED = "android.media.tv.action.BLOCKED_RATINGS_CHANGED";
-    field public static final String ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED = "android.media.tv.action.PARENTAL_CONTROLS_ENABLED_CHANGED";
-    field public static final String ACTION_QUERY_CONTENT_RATING_SYSTEMS = "android.media.tv.action.QUERY_CONTENT_RATING_SYSTEMS";
-    field public static final String ACTION_SETUP_INPUTS = "android.media.tv.action.SETUP_INPUTS";
-    field public static final String ACTION_VIEW_RECORDING_SCHEDULES = "android.media.tv.action.VIEW_RECORDING_SCHEDULES";
-    field public static final int INPUT_STATE_CONNECTED = 0; // 0x0
-    field public static final int INPUT_STATE_CONNECTED_STANDBY = 1; // 0x1
-    field public static final int INPUT_STATE_DISCONNECTED = 2; // 0x2
-    field public static final String META_DATA_CONTENT_RATING_SYSTEMS = "android.media.tv.metadata.CONTENT_RATING_SYSTEMS";
-    field public static final int RECORDING_ERROR_INSUFFICIENT_SPACE = 1; // 0x1
-    field public static final int RECORDING_ERROR_RESOURCE_BUSY = 2; // 0x2
-    field public static final int RECORDING_ERROR_UNKNOWN = 0; // 0x0
-    field public static final long TIME_SHIFT_INVALID_TIME = -9223372036854775808L; // 0x8000000000000000L
-    field public static final int TIME_SHIFT_STATUS_AVAILABLE = 3; // 0x3
-    field public static final int TIME_SHIFT_STATUS_UNAVAILABLE = 2; // 0x2
-    field public static final int TIME_SHIFT_STATUS_UNKNOWN = 0; // 0x0
-    field public static final int TIME_SHIFT_STATUS_UNSUPPORTED = 1; // 0x1
-    field public static final int VIDEO_UNAVAILABLE_REASON_AUDIO_ONLY = 4; // 0x4
-    field public static final int VIDEO_UNAVAILABLE_REASON_BUFFERING = 3; // 0x3
-    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_BLACKOUT = 16; // 0x10
-    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_CARD_INVALID = 15; // 0xf
-    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_CARD_MUTE = 14; // 0xe
-    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_INSUFFICIENT_OUTPUT_PROTECTION = 7; // 0x7
-    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_LICENSE_EXPIRED = 10; // 0xa
-    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_NEED_ACTIVATION = 11; // 0xb
-    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_NEED_PAIRING = 12; // 0xc
-    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_NO_CARD = 13; // 0xd
-    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_PVR_RECORDING_NOT_ALLOWED = 8; // 0x8
-    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_REBOOTING = 17; // 0x11
-    field public static final int VIDEO_UNAVAILABLE_REASON_CAS_UNKNOWN = 18; // 0x12
-    field public static final int VIDEO_UNAVAILABLE_REASON_INSUFFICIENT_RESOURCE = 6; // 0x6
-    field public static final int VIDEO_UNAVAILABLE_REASON_NOT_CONNECTED = 5; // 0x5
-    field public static final int VIDEO_UNAVAILABLE_REASON_TUNING = 1; // 0x1
-    field public static final int VIDEO_UNAVAILABLE_REASON_UNKNOWN = 0; // 0x0
-    field public static final int VIDEO_UNAVAILABLE_REASON_WEAK_SIGNAL = 2; // 0x2
-  }
-
-  public abstract static class TvInputManager.TvInputCallback {
-    ctor public TvInputManager.TvInputCallback();
-    method public void onInputAdded(String);
-    method public void onInputRemoved(String);
-    method public void onInputStateChanged(String, int);
-    method public void onInputUpdated(String);
-    method public void onTvInputInfoUpdated(android.media.tv.TvInputInfo);
-  }
-
-  public abstract class TvInputService extends android.app.Service {
-    ctor public TvInputService();
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method @Nullable public android.media.tv.TvInputService.RecordingSession onCreateRecordingSession(@NonNull String);
-    method @Nullable public android.media.tv.TvInputService.RecordingSession onCreateRecordingSession(@NonNull String, @NonNull String);
-    method @Nullable public abstract android.media.tv.TvInputService.Session onCreateSession(@NonNull String);
-    method @Nullable public android.media.tv.TvInputService.Session onCreateSession(@NonNull String, @NonNull String);
-    field public static final int PRIORITY_HINT_USE_CASE_TYPE_BACKGROUND = 100; // 0x64
-    field public static final int PRIORITY_HINT_USE_CASE_TYPE_LIVE = 400; // 0x190
-    field public static final int PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK = 300; // 0x12c
-    field public static final int PRIORITY_HINT_USE_CASE_TYPE_RECORD = 500; // 0x1f4
-    field public static final int PRIORITY_HINT_USE_CASE_TYPE_SCAN = 200; // 0xc8
-    field public static final String SERVICE_INTERFACE = "android.media.tv.TvInputService";
-    field public static final String SERVICE_META_DATA = "android.media.tv.input";
-  }
-
-  public abstract static class TvInputService.HardwareSession extends android.media.tv.TvInputService.Session {
-    ctor public TvInputService.HardwareSession(android.content.Context);
-    method public abstract String getHardwareInputId();
-    method public void onHardwareVideoAvailable();
-    method public void onHardwareVideoUnavailable(int);
-    method public final boolean onSetSurface(android.view.Surface);
-  }
-
-  public abstract static class TvInputService.RecordingSession {
-    ctor public TvInputService.RecordingSession(android.content.Context);
-    method public void notifyError(int);
-    method public void notifyRecordingStopped(android.net.Uri);
-    method public void notifyTuned(android.net.Uri);
-    method public void onAppPrivateCommand(@NonNull String, android.os.Bundle);
-    method public abstract void onRelease();
-    method public abstract void onStartRecording(@Nullable android.net.Uri);
-    method public void onStartRecording(@Nullable android.net.Uri, @NonNull android.os.Bundle);
-    method public abstract void onStopRecording();
-    method public abstract void onTune(android.net.Uri);
-    method public void onTune(android.net.Uri, android.os.Bundle);
-  }
-
-  public abstract static class TvInputService.Session implements android.view.KeyEvent.Callback {
-    ctor public TvInputService.Session(android.content.Context);
-    method public void layoutSurface(int, int, int, int);
-    method public void notifyChannelRetuned(android.net.Uri);
-    method public void notifyContentAllowed();
-    method public void notifyContentBlocked(@NonNull android.media.tv.TvContentRating);
-    method public void notifyTimeShiftStatusChanged(int);
-    method public void notifyTrackSelected(int, String);
-    method public void notifyTracksChanged(java.util.List<android.media.tv.TvTrackInfo>);
-    method public void notifyVideoAvailable();
-    method public void notifyVideoUnavailable(int);
-    method public void onAppPrivateCommand(@NonNull String, android.os.Bundle);
-    method public android.view.View onCreateOverlayView();
-    method public boolean onGenericMotionEvent(android.view.MotionEvent);
-    method public boolean onKeyDown(int, android.view.KeyEvent);
-    method public boolean onKeyLongPress(int, android.view.KeyEvent);
-    method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
-    method public boolean onKeyUp(int, android.view.KeyEvent);
-    method public void onOverlayViewSizeChanged(int, int);
-    method public abstract void onRelease();
-    method public boolean onSelectTrack(int, @Nullable String);
-    method public abstract void onSetCaptionEnabled(boolean);
-    method public abstract void onSetStreamVolume(@FloatRange(from=0.0, to=1.0) float);
-    method public abstract boolean onSetSurface(@Nullable android.view.Surface);
-    method public void onSurfaceChanged(int, int, int);
-    method public long onTimeShiftGetCurrentPosition();
-    method public long onTimeShiftGetStartPosition();
-    method public void onTimeShiftPause();
-    method public void onTimeShiftPlay(android.net.Uri);
-    method public void onTimeShiftResume();
-    method public void onTimeShiftSeekTo(long);
-    method public void onTimeShiftSetPlaybackParams(android.media.PlaybackParams);
-    method public boolean onTouchEvent(android.view.MotionEvent);
-    method public boolean onTrackballEvent(android.view.MotionEvent);
-    method public abstract boolean onTune(android.net.Uri);
-    method public boolean onTune(android.net.Uri, android.os.Bundle);
-    method public void onUnblockContent(android.media.tv.TvContentRating);
-    method public void setOverlayViewEnabled(boolean);
-  }
-
-  public class TvRecordingClient {
-    ctor public TvRecordingClient(android.content.Context, String, @NonNull android.media.tv.TvRecordingClient.RecordingCallback, android.os.Handler);
-    method public void release();
-    method public void sendAppPrivateCommand(@NonNull String, android.os.Bundle);
-    method public void startRecording(@Nullable android.net.Uri);
-    method public void startRecording(@Nullable android.net.Uri, @NonNull android.os.Bundle);
-    method public void stopRecording();
-    method public void tune(String, android.net.Uri);
-    method public void tune(String, android.net.Uri, android.os.Bundle);
-  }
-
-  public abstract static class TvRecordingClient.RecordingCallback {
-    ctor public TvRecordingClient.RecordingCallback();
-    method public void onConnectionFailed(String);
-    method public void onDisconnected(String);
-    method public void onError(int);
-    method public void onRecordingStopped(android.net.Uri);
-    method public void onTuned(android.net.Uri);
-  }
-
-  public final class TvTrackInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAudioChannelCount();
-    method public int getAudioSampleRate();
-    method public CharSequence getDescription();
-    method @Nullable public String getEncoding();
-    method public android.os.Bundle getExtra();
-    method public String getId();
-    method public String getLanguage();
-    method public int getType();
-    method public byte getVideoActiveFormatDescription();
-    method public float getVideoFrameRate();
-    method public int getVideoHeight();
-    method public float getVideoPixelAspectRatio();
-    method public int getVideoWidth();
-    method public boolean isAudioDescription();
-    method public boolean isEncrypted();
-    method public boolean isHardOfHearing();
-    method public boolean isSpokenSubtitle();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.TvTrackInfo> CREATOR;
-    field public static final int TYPE_AUDIO = 0; // 0x0
-    field public static final int TYPE_SUBTITLE = 2; // 0x2
-    field public static final int TYPE_VIDEO = 1; // 0x1
-  }
-
-  public static final class TvTrackInfo.Builder {
-    ctor public TvTrackInfo.Builder(int, @NonNull String);
-    method @NonNull public android.media.tv.TvTrackInfo build();
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setAudioChannelCount(int);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setAudioDescription(boolean);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setAudioSampleRate(int);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setDescription(@NonNull CharSequence);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setEncoding(@Nullable String);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setEncrypted(boolean);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setExtra(@NonNull android.os.Bundle);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setHardOfHearing(boolean);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setLanguage(@NonNull String);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setSpokenSubtitle(boolean);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setVideoActiveFormatDescription(byte);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setVideoFrameRate(float);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setVideoHeight(int);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setVideoPixelAspectRatio(float);
-    method @NonNull public android.media.tv.TvTrackInfo.Builder setVideoWidth(int);
-  }
-
-  public class TvView extends android.view.ViewGroup {
-    ctor public TvView(android.content.Context);
-    ctor public TvView(android.content.Context, android.util.AttributeSet);
-    ctor public TvView(android.content.Context, android.util.AttributeSet, int);
-    method public boolean dispatchUnhandledInputEvent(android.view.InputEvent);
-    method public String getSelectedTrack(int);
-    method public java.util.List<android.media.tv.TvTrackInfo> getTracks(int);
-    method public boolean onUnhandledInputEvent(android.view.InputEvent);
-    method public void reset();
-    method public void selectTrack(int, String);
-    method public void sendAppPrivateCommand(@NonNull String, android.os.Bundle);
-    method public void setCallback(@Nullable android.media.tv.TvView.TvInputCallback);
-    method public void setCaptionEnabled(boolean);
-    method public void setOnUnhandledInputEventListener(android.media.tv.TvView.OnUnhandledInputEventListener);
-    method public void setStreamVolume(@FloatRange(from=0.0, to=1.0) float);
-    method public void setTimeShiftPositionCallback(@Nullable android.media.tv.TvView.TimeShiftPositionCallback);
-    method public void setZOrderMediaOverlay(boolean);
-    method public void setZOrderOnTop(boolean);
-    method public void timeShiftPause();
-    method public void timeShiftPlay(String, android.net.Uri);
-    method public void timeShiftResume();
-    method public void timeShiftSeekTo(long);
-    method public void timeShiftSetPlaybackParams(@NonNull android.media.PlaybackParams);
-    method public void tune(@NonNull String, android.net.Uri);
-    method public void tune(String, android.net.Uri, android.os.Bundle);
-  }
-
-  public static interface TvView.OnUnhandledInputEventListener {
-    method public boolean onUnhandledInputEvent(android.view.InputEvent);
-  }
-
-  public abstract static class TvView.TimeShiftPositionCallback {
-    ctor public TvView.TimeShiftPositionCallback();
-    method public void onTimeShiftCurrentPositionChanged(String, long);
-    method public void onTimeShiftStartPositionChanged(String, long);
-  }
-
-  public abstract static class TvView.TvInputCallback {
-    ctor public TvView.TvInputCallback();
-    method public void onChannelRetuned(String, android.net.Uri);
-    method public void onConnectionFailed(String);
-    method public void onContentAllowed(String);
-    method public void onContentBlocked(String, android.media.tv.TvContentRating);
-    method public void onDisconnected(String);
-    method public void onTimeShiftStatusChanged(String, int);
-    method public void onTrackSelected(String, int, String);
-    method public void onTracksChanged(String, java.util.List<android.media.tv.TvTrackInfo>);
-    method public void onVideoAvailable(String);
-    method public void onVideoSizeChanged(String, int, int);
-    method public void onVideoUnavailable(String, int);
-  }
-
-}
-
-package android.mtp {
-
-  public final class MtpConstants {
-    ctor public MtpConstants();
-    method public static boolean isAbstractObject(int);
-    field public static final int ASSOCIATION_TYPE_GENERIC_FOLDER = 1; // 0x1
-    field public static final int FORMAT_3GP_CONTAINER = 47492; // 0xb984
-    field public static final int FORMAT_AAC = 47363; // 0xb903
-    field public static final int FORMAT_ABSTRACT_AUDIO_ALBUM = 47619; // 0xba03
-    field public static final int FORMAT_ABSTRACT_AUDIO_PLAYLIST = 47625; // 0xba09
-    field public static final int FORMAT_ABSTRACT_AV_PLAYLIST = 47621; // 0xba05
-    field public static final int FORMAT_ABSTRACT_DOCUMENT = 47745; // 0xba81
-    field public static final int FORMAT_ABSTRACT_IMAGE_ALBUM = 47618; // 0xba02
-    field public static final int FORMAT_ABSTRACT_MEDIACAST = 47627; // 0xba0b
-    field public static final int FORMAT_ABSTRACT_MULTIMEDIA_ALBUM = 47617; // 0xba01
-    field public static final int FORMAT_ABSTRACT_VIDEO_ALBUM = 47620; // 0xba04
-    field public static final int FORMAT_ABSTRACT_VIDEO_PLAYLIST = 47626; // 0xba0a
-    field public static final int FORMAT_AIFF = 12295; // 0x3007
-    field public static final int FORMAT_ASF = 12300; // 0x300c
-    field public static final int FORMAT_ASSOCIATION = 12289; // 0x3001
-    field public static final int FORMAT_ASX_PLAYLIST = 47635; // 0xba13
-    field public static final int FORMAT_AUDIBLE = 47364; // 0xb904
-    field public static final int FORMAT_AVI = 12298; // 0x300a
-    field public static final int FORMAT_BMP = 14340; // 0x3804
-    field public static final int FORMAT_DEFINED = 14336; // 0x3800
-    field public static final int FORMAT_DNG = 14353; // 0x3811
-    field public static final int FORMAT_DPOF = 12294; // 0x3006
-    field public static final int FORMAT_EXECUTABLE = 12291; // 0x3003
-    field public static final int FORMAT_EXIF_JPEG = 14337; // 0x3801
-    field public static final int FORMAT_FLAC = 47366; // 0xb906
-    field public static final int FORMAT_GIF = 14343; // 0x3807
-    field public static final int FORMAT_HTML = 12293; // 0x3005
-    field public static final int FORMAT_JFIF = 14344; // 0x3808
-    field public static final int FORMAT_JP2 = 14351; // 0x380f
-    field public static final int FORMAT_JPX = 14352; // 0x3810
-    field public static final int FORMAT_M3U_PLAYLIST = 47633; // 0xba11
-    field public static final int FORMAT_MP2 = 47491; // 0xb983
-    field public static final int FORMAT_MP3 = 12297; // 0x3009
-    field public static final int FORMAT_MP4_CONTAINER = 47490; // 0xb982
-    field public static final int FORMAT_MPEG = 12299; // 0x300b
-    field public static final int FORMAT_MPL_PLAYLIST = 47634; // 0xba12
-    field public static final int FORMAT_MS_EXCEL_SPREADSHEET = 47749; // 0xba85
-    field public static final int FORMAT_MS_POWERPOINT_PRESENTATION = 47750; // 0xba86
-    field public static final int FORMAT_MS_WORD_DOCUMENT = 47747; // 0xba83
-    field public static final int FORMAT_OGG = 47362; // 0xb902
-    field public static final int FORMAT_PICT = 14346; // 0x380a
-    field public static final int FORMAT_PLS_PLAYLIST = 47636; // 0xba14
-    field public static final int FORMAT_PNG = 14347; // 0x380b
-    field public static final int FORMAT_SCRIPT = 12290; // 0x3002
-    field public static final int FORMAT_TEXT = 12292; // 0x3004
-    field public static final int FORMAT_TIFF = 14349; // 0x380d
-    field public static final int FORMAT_TIFF_EP = 14338; // 0x3802
-    field public static final int FORMAT_UNDEFINED = 12288; // 0x3000
-    field public static final int FORMAT_UNDEFINED_AUDIO = 47360; // 0xb900
-    field public static final int FORMAT_UNDEFINED_COLLECTION = 47616; // 0xba00
-    field public static final int FORMAT_UNDEFINED_DOCUMENT = 47744; // 0xba80
-    field public static final int FORMAT_UNDEFINED_FIRMWARE = 47106; // 0xb802
-    field public static final int FORMAT_UNDEFINED_VIDEO = 47488; // 0xb980
-    field public static final int FORMAT_WAV = 12296; // 0x3008
-    field public static final int FORMAT_WINDOWS_IMAGE_FORMAT = 47233; // 0xb881
-    field public static final int FORMAT_WMA = 47361; // 0xb901
-    field public static final int FORMAT_WMV = 47489; // 0xb981
-    field public static final int FORMAT_WPL_PLAYLIST = 47632; // 0xba10
-    field public static final int FORMAT_XML_DOCUMENT = 47746; // 0xba82
-    field public static final int OPERATION_CLOSE_SESSION = 4099; // 0x1003
-    field public static final int OPERATION_COPY_OBJECT = 4122; // 0x101a
-    field public static final int OPERATION_DELETE_OBJECT = 4107; // 0x100b
-    field public static final int OPERATION_FORMAT_STORE = 4111; // 0x100f
-    field public static final int OPERATION_GET_DEVICE_INFO = 4097; // 0x1001
-    field public static final int OPERATION_GET_DEVICE_PROP_DESC = 4116; // 0x1014
-    field public static final int OPERATION_GET_DEVICE_PROP_VALUE = 4117; // 0x1015
-    field public static final int OPERATION_GET_NUM_OBJECTS = 4102; // 0x1006
-    field public static final int OPERATION_GET_OBJECT = 4105; // 0x1009
-    field public static final int OPERATION_GET_OBJECT_HANDLES = 4103; // 0x1007
-    field public static final int OPERATION_GET_OBJECT_INFO = 4104; // 0x1008
-    field public static final int OPERATION_GET_OBJECT_PROPS_SUPPORTED = 38913; // 0x9801
-    field public static final int OPERATION_GET_OBJECT_PROP_DESC = 38914; // 0x9802
-    field public static final int OPERATION_GET_OBJECT_PROP_VALUE = 38915; // 0x9803
-    field public static final int OPERATION_GET_OBJECT_REFERENCES = 38928; // 0x9810
-    field public static final int OPERATION_GET_PARTIAL_OBJECT = 4123; // 0x101b
-    field public static final int OPERATION_GET_PARTIAL_OBJECT_64 = 38337; // 0x95c1
-    field public static final int OPERATION_GET_STORAGE_INFO = 4101; // 0x1005
-    field public static final int OPERATION_GET_STORAGE_I_DS = 4100; // 0x1004
-    field public static final int OPERATION_GET_THUMB = 4106; // 0x100a
-    field public static final int OPERATION_INITIATE_CAPTURE = 4110; // 0x100e
-    field public static final int OPERATION_INITIATE_OPEN_CAPTURE = 4124; // 0x101c
-    field public static final int OPERATION_MOVE_OBJECT = 4121; // 0x1019
-    field public static final int OPERATION_OPEN_SESSION = 4098; // 0x1002
-    field public static final int OPERATION_POWER_DOWN = 4115; // 0x1013
-    field public static final int OPERATION_RESET_DEVICE = 4112; // 0x1010
-    field public static final int OPERATION_RESET_DEVICE_PROP_VALUE = 4119; // 0x1017
-    field public static final int OPERATION_SELF_TEST = 4113; // 0x1011
-    field public static final int OPERATION_SEND_OBJECT = 4109; // 0x100d
-    field public static final int OPERATION_SEND_OBJECT_INFO = 4108; // 0x100c
-    field public static final int OPERATION_SET_DEVICE_PROP_VALUE = 4118; // 0x1016
-    field public static final int OPERATION_SET_OBJECT_PROP_VALUE = 38916; // 0x9804
-    field public static final int OPERATION_SET_OBJECT_PROTECTION = 4114; // 0x1012
-    field public static final int OPERATION_SET_OBJECT_REFERENCES = 38929; // 0x9811
-    field public static final int OPERATION_SKIP = 38944; // 0x9820
-    field public static final int OPERATION_TERMINATE_OPEN_CAPTURE = 4120; // 0x1018
-    field public static final int PROTECTION_STATUS_NONE = 0; // 0x0
-    field public static final int PROTECTION_STATUS_NON_TRANSFERABLE_DATA = 32771; // 0x8003
-    field public static final int PROTECTION_STATUS_READ_ONLY = 32769; // 0x8001
-    field public static final int PROTECTION_STATUS_READ_ONLY_DATA = 32770; // 0x8002
-  }
-
-  public final class MtpDevice {
-    ctor public MtpDevice(@NonNull android.hardware.usb.UsbDevice);
-    method public void close();
-    method public boolean deleteObject(int);
-    method public int getDeviceId();
-    method @Nullable public android.mtp.MtpDeviceInfo getDeviceInfo();
-    method @NonNull public String getDeviceName();
-    method @Nullable public byte[] getObject(int, int);
-    method @Nullable public int[] getObjectHandles(int, int, int);
-    method @Nullable public android.mtp.MtpObjectInfo getObjectInfo(int);
-    method public long getParent(int);
-    method public long getPartialObject(int, long, long, @NonNull byte[]) throws java.io.IOException;
-    method public long getPartialObject64(int, long, long, @NonNull byte[]) throws java.io.IOException;
-    method public long getStorageId(int);
-    method @Nullable public int[] getStorageIds();
-    method @Nullable public android.mtp.MtpStorageInfo getStorageInfo(int);
-    method @Nullable public byte[] getThumbnail(int);
-    method public boolean importFile(int, @NonNull String);
-    method public boolean importFile(int, @NonNull android.os.ParcelFileDescriptor);
-    method public boolean open(@NonNull android.hardware.usb.UsbDeviceConnection);
-    method @NonNull public android.mtp.MtpEvent readEvent(@Nullable android.os.CancellationSignal) throws java.io.IOException;
-    method public boolean sendObject(int, long, @NonNull android.os.ParcelFileDescriptor);
-    method @Nullable public android.mtp.MtpObjectInfo sendObjectInfo(@NonNull android.mtp.MtpObjectInfo);
-  }
-
-  public class MtpDeviceInfo {
-    method @NonNull public final int[] getEventsSupported();
-    method @NonNull public final String getManufacturer();
-    method @NonNull public final String getModel();
-    method @NonNull public final int[] getOperationsSupported();
-    method @NonNull public final String getSerialNumber();
-    method @NonNull public final String getVersion();
-    method public boolean isEventSupported(int);
-    method public boolean isOperationSupported(int);
-  }
-
-  public class MtpEvent {
-    method public int getDevicePropCode();
-    method public int getEventCode();
-    method public int getObjectFormatCode();
-    method public int getObjectHandle();
-    method public int getObjectPropCode();
-    method public int getParameter1();
-    method public int getParameter2();
-    method public int getParameter3();
-    method public int getStorageId();
-    method public int getTransactionId();
-    field public static final int EVENT_CANCEL_TRANSACTION = 16385; // 0x4001
-    field public static final int EVENT_CAPTURE_COMPLETE = 16397; // 0x400d
-    field public static final int EVENT_DEVICE_INFO_CHANGED = 16392; // 0x4008
-    field public static final int EVENT_DEVICE_PROP_CHANGED = 16390; // 0x4006
-    field public static final int EVENT_DEVICE_RESET = 16395; // 0x400b
-    field public static final int EVENT_OBJECT_ADDED = 16386; // 0x4002
-    field public static final int EVENT_OBJECT_INFO_CHANGED = 16391; // 0x4007
-    field public static final int EVENT_OBJECT_PROP_CHANGED = 51201; // 0xc801
-    field public static final int EVENT_OBJECT_PROP_DESC_CHANGED = 51202; // 0xc802
-    field public static final int EVENT_OBJECT_REFERENCES_CHANGED = 51203; // 0xc803
-    field public static final int EVENT_OBJECT_REMOVED = 16387; // 0x4003
-    field public static final int EVENT_REQUEST_OBJECT_TRANSFER = 16393; // 0x4009
-    field public static final int EVENT_STORAGE_INFO_CHANGED = 16396; // 0x400c
-    field public static final int EVENT_STORE_ADDED = 16388; // 0x4004
-    field public static final int EVENT_STORE_FULL = 16394; // 0x400a
-    field public static final int EVENT_STORE_REMOVED = 16389; // 0x4005
-    field public static final int EVENT_UNDEFINED = 16384; // 0x4000
-    field public static final int EVENT_UNREPORTED_STATUS = 16398; // 0x400e
-  }
-
-  public final class MtpObjectInfo {
-    method public int getAssociationDesc();
-    method public int getAssociationType();
-    method public int getCompressedSize();
-    method public long getCompressedSizeLong();
-    method public long getDateCreated();
-    method public long getDateModified();
-    method public int getFormat();
-    method public int getImagePixDepth();
-    method public long getImagePixDepthLong();
-    method public int getImagePixHeight();
-    method public long getImagePixHeightLong();
-    method public int getImagePixWidth();
-    method public long getImagePixWidthLong();
-    method @NonNull public String getKeywords();
-    method @NonNull public String getName();
-    method public int getObjectHandle();
-    method public int getParent();
-    method public int getProtectionStatus();
-    method public int getSequenceNumber();
-    method public long getSequenceNumberLong();
-    method public int getStorageId();
-    method public int getThumbCompressedSize();
-    method public long getThumbCompressedSizeLong();
-    method public int getThumbFormat();
-    method public int getThumbPixHeight();
-    method public long getThumbPixHeightLong();
-    method public int getThumbPixWidth();
-    method public long getThumbPixWidthLong();
-  }
-
-  public static class MtpObjectInfo.Builder {
-    ctor public MtpObjectInfo.Builder();
-    ctor public MtpObjectInfo.Builder(android.mtp.MtpObjectInfo);
-    method public android.mtp.MtpObjectInfo build();
-    method public android.mtp.MtpObjectInfo.Builder setAssociationDesc(int);
-    method public android.mtp.MtpObjectInfo.Builder setAssociationType(int);
-    method public android.mtp.MtpObjectInfo.Builder setCompressedSize(long);
-    method public android.mtp.MtpObjectInfo.Builder setDateCreated(long);
-    method public android.mtp.MtpObjectInfo.Builder setDateModified(long);
-    method public android.mtp.MtpObjectInfo.Builder setFormat(int);
-    method public android.mtp.MtpObjectInfo.Builder setImagePixDepth(long);
-    method public android.mtp.MtpObjectInfo.Builder setImagePixHeight(long);
-    method public android.mtp.MtpObjectInfo.Builder setImagePixWidth(long);
-    method public android.mtp.MtpObjectInfo.Builder setKeywords(@NonNull String);
-    method public android.mtp.MtpObjectInfo.Builder setName(@NonNull String);
-    method public android.mtp.MtpObjectInfo.Builder setObjectHandle(int);
-    method public android.mtp.MtpObjectInfo.Builder setParent(int);
-    method public android.mtp.MtpObjectInfo.Builder setProtectionStatus(int);
-    method public android.mtp.MtpObjectInfo.Builder setSequenceNumber(long);
-    method public android.mtp.MtpObjectInfo.Builder setStorageId(int);
-    method public android.mtp.MtpObjectInfo.Builder setThumbCompressedSize(long);
-    method public android.mtp.MtpObjectInfo.Builder setThumbFormat(int);
-    method public android.mtp.MtpObjectInfo.Builder setThumbPixHeight(long);
-    method public android.mtp.MtpObjectInfo.Builder setThumbPixWidth(long);
-  }
-
-  public final class MtpStorageInfo {
-    method @NonNull public String getDescription();
-    method public long getFreeSpace();
-    method public long getMaxCapacity();
-    method public int getStorageId();
-    method @NonNull public String getVolumeIdentifier();
-  }
-
-}
-
-package android.net {
-
-  public class CaptivePortal implements android.os.Parcelable {
-    method public int describeContents();
-    method public void ignoreNetwork();
-    method public void reportCaptivePortalDismissed();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.CaptivePortal> CREATOR;
-  }
-
-  public class ConnectivityDiagnosticsManager {
-    method public void registerConnectivityDiagnosticsCallback(@NonNull android.net.NetworkRequest, @NonNull java.util.concurrent.Executor, @NonNull android.net.ConnectivityDiagnosticsManager.ConnectivityDiagnosticsCallback);
-    method public void unregisterConnectivityDiagnosticsCallback(@NonNull android.net.ConnectivityDiagnosticsManager.ConnectivityDiagnosticsCallback);
-  }
-
-  public abstract static class ConnectivityDiagnosticsManager.ConnectivityDiagnosticsCallback {
-    ctor public ConnectivityDiagnosticsManager.ConnectivityDiagnosticsCallback();
-    method public void onConnectivityReportAvailable(@NonNull android.net.ConnectivityDiagnosticsManager.ConnectivityReport);
-    method public void onDataStallSuspected(@NonNull android.net.ConnectivityDiagnosticsManager.DataStallReport);
-    method public void onNetworkConnectivityReported(@NonNull android.net.Network, boolean);
-  }
-
-  public static final class ConnectivityDiagnosticsManager.ConnectivityReport implements android.os.Parcelable {
-    ctor public ConnectivityDiagnosticsManager.ConnectivityReport(@NonNull android.net.Network, long, @NonNull android.net.LinkProperties, @NonNull android.net.NetworkCapabilities, @NonNull android.os.PersistableBundle);
-    method public int describeContents();
-    method @NonNull public android.os.PersistableBundle getAdditionalInfo();
-    method @NonNull public android.net.LinkProperties getLinkProperties();
-    method @NonNull public android.net.Network getNetwork();
-    method @NonNull public android.net.NetworkCapabilities getNetworkCapabilities();
-    method public long getReportTimestamp();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.ConnectivityDiagnosticsManager.ConnectivityReport> CREATOR;
-    field public static final String KEY_NETWORK_PROBES_ATTEMPTED_BITMASK = "networkProbesAttempted";
-    field public static final String KEY_NETWORK_PROBES_SUCCEEDED_BITMASK = "networkProbesSucceeded";
-    field public static final String KEY_NETWORK_VALIDATION_RESULT = "networkValidationResult";
-    field public static final int NETWORK_PROBE_DNS = 4; // 0x4
-    field public static final int NETWORK_PROBE_FALLBACK = 32; // 0x20
-    field public static final int NETWORK_PROBE_HTTP = 8; // 0x8
-    field public static final int NETWORK_PROBE_HTTPS = 16; // 0x10
-    field public static final int NETWORK_PROBE_PRIVATE_DNS = 64; // 0x40
-    field public static final int NETWORK_VALIDATION_RESULT_INVALID = 0; // 0x0
-    field public static final int NETWORK_VALIDATION_RESULT_PARTIALLY_VALID = 2; // 0x2
-    field public static final int NETWORK_VALIDATION_RESULT_SKIPPED = 3; // 0x3
-    field public static final int NETWORK_VALIDATION_RESULT_VALID = 1; // 0x1
-  }
-
-  public static final class ConnectivityDiagnosticsManager.DataStallReport implements android.os.Parcelable {
-    ctor public ConnectivityDiagnosticsManager.DataStallReport(@NonNull android.net.Network, long, int, @NonNull android.net.LinkProperties, @NonNull android.net.NetworkCapabilities, @NonNull android.os.PersistableBundle);
-    method public int describeContents();
-    method public int getDetectionMethod();
-    method @NonNull public android.net.LinkProperties getLinkProperties();
-    method @NonNull public android.net.Network getNetwork();
-    method @NonNull public android.net.NetworkCapabilities getNetworkCapabilities();
-    method public long getReportTimestamp();
-    method @NonNull public android.os.PersistableBundle getStallDetails();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.ConnectivityDiagnosticsManager.DataStallReport> CREATOR;
-    field public static final int DETECTION_METHOD_DNS_EVENTS = 1; // 0x1
-    field public static final int DETECTION_METHOD_TCP_METRICS = 2; // 0x2
-    field public static final String KEY_DNS_CONSECUTIVE_TIMEOUTS = "dnsConsecutiveTimeouts";
-    field public static final String KEY_TCP_METRICS_COLLECTION_PERIOD_MILLIS = "tcpMetricsCollectionPeriodMillis";
-    field public static final String KEY_TCP_PACKET_FAIL_RATE = "tcpPacketFailRate";
-  }
-
-  public class ConnectivityManager {
-    method public void addDefaultNetworkActiveListener(android.net.ConnectivityManager.OnNetworkActiveListener);
-    method public boolean bindProcessToNetwork(@Nullable android.net.Network);
-    method @NonNull public android.net.SocketKeepalive createSocketKeepalive(@NonNull android.net.Network, @NonNull android.net.IpSecManager.UdpEncapsulationSocket, @NonNull java.net.InetAddress, @NonNull java.net.InetAddress, @NonNull java.util.concurrent.Executor, @NonNull android.net.SocketKeepalive.Callback);
-    method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.Network getActiveNetwork();
-    method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.NetworkInfo getActiveNetworkInfo();
-    method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.NetworkInfo[] getAllNetworkInfo();
-    method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.Network[] getAllNetworks();
-    method @Deprecated public boolean getBackgroundDataSetting();
-    method @Nullable public android.net.Network getBoundNetworkForProcess();
-    method public int getConnectionOwnerUid(int, @NonNull java.net.InetSocketAddress, @NonNull java.net.InetSocketAddress);
-    method @Nullable public android.net.ProxyInfo getDefaultProxy();
-    method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.LinkProperties getLinkProperties(@Nullable android.net.Network);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public int getMultipathPreference(@Nullable android.net.Network);
-    method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.NetworkCapabilities getNetworkCapabilities(@Nullable android.net.Network);
-    method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.NetworkInfo getNetworkInfo(int);
-    method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public android.net.NetworkInfo getNetworkInfo(@Nullable android.net.Network);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public int getNetworkPreference();
-    method @Nullable public byte[] getNetworkWatchlistConfigHash();
-    method @Deprecated @Nullable public static android.net.Network getProcessDefaultNetwork();
-    method public int getRestrictBackgroundStatus();
-    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public boolean isActiveNetworkMetered();
-    method public boolean isDefaultNetworkActive();
-    method @Deprecated public static boolean isNetworkTypeValid(int);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerDefaultNetworkCallback(@NonNull android.net.ConnectivityManager.NetworkCallback);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerDefaultNetworkCallback(@NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerNetworkCallback(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerNetworkCallback(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerNetworkCallback(@NonNull android.net.NetworkRequest, @NonNull android.app.PendingIntent);
-    method public void releaseNetworkRequest(@NonNull android.app.PendingIntent);
-    method public void removeDefaultNetworkActiveListener(@NonNull android.net.ConnectivityManager.OnNetworkActiveListener);
-    method @Deprecated public void reportBadNetwork(@Nullable android.net.Network);
-    method public void reportNetworkConnectivity(@Nullable android.net.Network, boolean);
-    method public boolean requestBandwidthUpdate(@NonNull android.net.Network);
-    method public void requestNetwork(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback);
-    method public void requestNetwork(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
-    method public void requestNetwork(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback, int);
-    method public void requestNetwork(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler, int);
-    method public void requestNetwork(@NonNull android.net.NetworkRequest, @NonNull android.app.PendingIntent);
-    method @Deprecated public void setNetworkPreference(int);
-    method @Deprecated public static boolean setProcessDefaultNetwork(@Nullable android.net.Network);
-    method public void unregisterNetworkCallback(@NonNull android.net.ConnectivityManager.NetworkCallback);
-    method public void unregisterNetworkCallback(@NonNull android.app.PendingIntent);
-    field @Deprecated public static final String ACTION_BACKGROUND_DATA_SETTING_CHANGED = "android.net.conn.BACKGROUND_DATA_SETTING_CHANGED";
-    field public static final String ACTION_CAPTIVE_PORTAL_SIGN_IN = "android.net.conn.CAPTIVE_PORTAL";
-    field public static final String ACTION_RESTRICT_BACKGROUND_CHANGED = "android.net.conn.RESTRICT_BACKGROUND_CHANGED";
-    field @Deprecated public static final String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
-    field @Deprecated public static final int DEFAULT_NETWORK_PREFERENCE = 1; // 0x1
-    field public static final String EXTRA_CAPTIVE_PORTAL = "android.net.extra.CAPTIVE_PORTAL";
-    field public static final String EXTRA_CAPTIVE_PORTAL_URL = "android.net.extra.CAPTIVE_PORTAL_URL";
-    field @Deprecated public static final String EXTRA_EXTRA_INFO = "extraInfo";
-    field @Deprecated public static final String EXTRA_IS_FAILOVER = "isFailover";
-    field public static final String EXTRA_NETWORK = "android.net.extra.NETWORK";
-    field @Deprecated public static final String EXTRA_NETWORK_INFO = "networkInfo";
-    field public static final String EXTRA_NETWORK_REQUEST = "android.net.extra.NETWORK_REQUEST";
-    field @Deprecated public static final String EXTRA_NETWORK_TYPE = "networkType";
-    field public static final String EXTRA_NO_CONNECTIVITY = "noConnectivity";
-    field @Deprecated public static final String EXTRA_OTHER_NETWORK_INFO = "otherNetwork";
-    field public static final String EXTRA_REASON = "reason";
-    field public static final int MULTIPATH_PREFERENCE_HANDOVER = 1; // 0x1
-    field public static final int MULTIPATH_PREFERENCE_PERFORMANCE = 4; // 0x4
-    field public static final int MULTIPATH_PREFERENCE_RELIABILITY = 2; // 0x2
-    field public static final int RESTRICT_BACKGROUND_STATUS_DISABLED = 1; // 0x1
-    field public static final int RESTRICT_BACKGROUND_STATUS_ENABLED = 3; // 0x3
-    field public static final int RESTRICT_BACKGROUND_STATUS_WHITELISTED = 2; // 0x2
-    field @Deprecated public static final int TYPE_BLUETOOTH = 7; // 0x7
-    field @Deprecated public static final int TYPE_DUMMY = 8; // 0x8
-    field @Deprecated public static final int TYPE_ETHERNET = 9; // 0x9
-    field @Deprecated public static final int TYPE_MOBILE = 0; // 0x0
-    field @Deprecated public static final int TYPE_MOBILE_DUN = 4; // 0x4
-    field @Deprecated public static final int TYPE_MOBILE_HIPRI = 5; // 0x5
-    field @Deprecated public static final int TYPE_MOBILE_MMS = 2; // 0x2
-    field @Deprecated public static final int TYPE_MOBILE_SUPL = 3; // 0x3
-    field @Deprecated public static final int TYPE_VPN = 17; // 0x11
-    field @Deprecated public static final int TYPE_WIFI = 1; // 0x1
-    field @Deprecated public static final int TYPE_WIMAX = 6; // 0x6
-  }
-
-  public static class ConnectivityManager.NetworkCallback {
-    ctor public ConnectivityManager.NetworkCallback();
-    method public void onAvailable(@NonNull android.net.Network);
-    method public void onBlockedStatusChanged(@NonNull android.net.Network, boolean);
-    method public void onCapabilitiesChanged(@NonNull android.net.Network, @NonNull android.net.NetworkCapabilities);
-    method public void onLinkPropertiesChanged(@NonNull android.net.Network, @NonNull android.net.LinkProperties);
-    method public void onLosing(@NonNull android.net.Network, int);
-    method public void onLost(@NonNull android.net.Network);
-    method public void onUnavailable();
-  }
-
-  public static interface ConnectivityManager.OnNetworkActiveListener {
-    method public void onNetworkActive();
-  }
-
-  public class Credentials {
-    ctor public Credentials(int, int, int);
-    method public int getGid();
-    method public int getPid();
-    method public int getUid();
-  }
-
-  public class DhcpInfo implements android.os.Parcelable {
-    ctor public DhcpInfo();
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.DhcpInfo> CREATOR;
-    field public int dns1;
-    field public int dns2;
-    field public int gateway;
-    field public int ipAddress;
-    field public int leaseDuration;
-    field public int netmask;
-    field public int serverAddress;
-  }
-
-  public final class DnsResolver {
-    method @NonNull public static android.net.DnsResolver getInstance();
-    method public void query(@Nullable android.net.Network, @NonNull String, int, @NonNull java.util.concurrent.Executor, @Nullable android.os.CancellationSignal, @NonNull android.net.DnsResolver.Callback<? super java.util.List<java.net.InetAddress>>);
-    method public void query(@Nullable android.net.Network, @NonNull String, int, int, @NonNull java.util.concurrent.Executor, @Nullable android.os.CancellationSignal, @NonNull android.net.DnsResolver.Callback<? super java.util.List<java.net.InetAddress>>);
-    method public void rawQuery(@Nullable android.net.Network, @NonNull byte[], int, @NonNull java.util.concurrent.Executor, @Nullable android.os.CancellationSignal, @NonNull android.net.DnsResolver.Callback<? super byte[]>);
-    method public void rawQuery(@Nullable android.net.Network, @NonNull String, int, int, int, @NonNull java.util.concurrent.Executor, @Nullable android.os.CancellationSignal, @NonNull android.net.DnsResolver.Callback<? super byte[]>);
-    field public static final int CLASS_IN = 1; // 0x1
-    field public static final int ERROR_PARSE = 0; // 0x0
-    field public static final int ERROR_SYSTEM = 1; // 0x1
-    field public static final int FLAG_EMPTY = 0; // 0x0
-    field public static final int FLAG_NO_CACHE_LOOKUP = 4; // 0x4
-    field public static final int FLAG_NO_CACHE_STORE = 2; // 0x2
-    field public static final int FLAG_NO_RETRY = 1; // 0x1
-    field public static final int TYPE_A = 1; // 0x1
-    field public static final int TYPE_AAAA = 28; // 0x1c
-  }
-
-  public static interface DnsResolver.Callback<T> {
-    method public void onAnswer(@NonNull T, int);
-    method public void onError(@NonNull android.net.DnsResolver.DnsException);
-  }
-
-  public static class DnsResolver.DnsException extends java.lang.Exception {
-    field public final int code;
-  }
-
-  public final class Ikev2VpnProfile extends android.net.PlatformVpnProfile {
-    method @NonNull public java.util.List<java.lang.String> getAllowedAlgorithms();
-    method public int getMaxMtu();
-    method @Nullable public String getPassword();
-    method @Nullable public byte[] getPresharedKey();
-    method @Nullable public android.net.ProxyInfo getProxyInfo();
-    method @Nullable public java.security.PrivateKey getRsaPrivateKey();
-    method @NonNull public String getServerAddr();
-    method @Nullable public java.security.cert.X509Certificate getServerRootCaCert();
-    method @Nullable public java.security.cert.X509Certificate getUserCert();
-    method @NonNull public String getUserIdentity();
-    method @Nullable public String getUsername();
-    method public boolean isBypassable();
-    method public boolean isMetered();
-  }
-
-  public static final class Ikev2VpnProfile.Builder {
-    ctor public Ikev2VpnProfile.Builder(@NonNull String, @NonNull String);
-    method @NonNull public android.net.Ikev2VpnProfile build();
-    method @NonNull public android.net.Ikev2VpnProfile.Builder setAllowedAlgorithms(@NonNull java.util.List<java.lang.String>);
-    method @NonNull public android.net.Ikev2VpnProfile.Builder setAuthDigitalSignature(@NonNull java.security.cert.X509Certificate, @NonNull java.security.PrivateKey, @Nullable java.security.cert.X509Certificate);
-    method @NonNull public android.net.Ikev2VpnProfile.Builder setAuthPsk(@NonNull byte[]);
-    method @NonNull public android.net.Ikev2VpnProfile.Builder setAuthUsernamePassword(@NonNull String, @NonNull String, @Nullable java.security.cert.X509Certificate);
-    method @NonNull public android.net.Ikev2VpnProfile.Builder setBypassable(boolean);
-    method @NonNull public android.net.Ikev2VpnProfile.Builder setMaxMtu(int);
-    method @NonNull public android.net.Ikev2VpnProfile.Builder setMetered(boolean);
-    method @NonNull public android.net.Ikev2VpnProfile.Builder setProxy(@Nullable android.net.ProxyInfo);
-  }
-
-  public class InetAddresses {
-    method public static boolean isNumericAddress(@NonNull String);
-    method @NonNull public static java.net.InetAddress parseNumericAddress(@NonNull String);
-  }
-
-  public final class IpPrefix implements android.os.Parcelable {
-    method public boolean contains(@NonNull java.net.InetAddress);
-    method public int describeContents();
-    method @NonNull public java.net.InetAddress getAddress();
-    method @IntRange(from=0, to=128) public int getPrefixLength();
-    method @NonNull public byte[] getRawAddress();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.IpPrefix> CREATOR;
-  }
-
-  public final class IpSecAlgorithm implements android.os.Parcelable {
-    ctor public IpSecAlgorithm(@NonNull String, @NonNull byte[]);
-    ctor public IpSecAlgorithm(@NonNull String, @NonNull byte[], int);
-    method public int describeContents();
-    method @NonNull public byte[] getKey();
-    method @NonNull public String getName();
-    method public int getTruncationLengthBits();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final String AUTH_CRYPT_AES_GCM = "rfc4106(gcm(aes))";
-    field public static final String AUTH_HMAC_MD5 = "hmac(md5)";
-    field public static final String AUTH_HMAC_SHA1 = "hmac(sha1)";
-    field public static final String AUTH_HMAC_SHA256 = "hmac(sha256)";
-    field public static final String AUTH_HMAC_SHA384 = "hmac(sha384)";
-    field public static final String AUTH_HMAC_SHA512 = "hmac(sha512)";
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.IpSecAlgorithm> CREATOR;
-    field public static final String CRYPT_AES_CBC = "cbc(aes)";
-  }
-
-  public final class IpSecManager {
-    method @NonNull public android.net.IpSecManager.SecurityParameterIndex allocateSecurityParameterIndex(@NonNull java.net.InetAddress) throws android.net.IpSecManager.ResourceUnavailableException;
-    method @NonNull public android.net.IpSecManager.SecurityParameterIndex allocateSecurityParameterIndex(@NonNull java.net.InetAddress, int) throws android.net.IpSecManager.ResourceUnavailableException, android.net.IpSecManager.SpiUnavailableException;
-    method public void applyTransportModeTransform(@NonNull java.net.Socket, int, @NonNull android.net.IpSecTransform) throws java.io.IOException;
-    method public void applyTransportModeTransform(@NonNull java.net.DatagramSocket, int, @NonNull android.net.IpSecTransform) throws java.io.IOException;
-    method public void applyTransportModeTransform(@NonNull java.io.FileDescriptor, int, @NonNull android.net.IpSecTransform) throws java.io.IOException;
-    method @NonNull public android.net.IpSecManager.UdpEncapsulationSocket openUdpEncapsulationSocket(int) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException;
-    method @NonNull public android.net.IpSecManager.UdpEncapsulationSocket openUdpEncapsulationSocket() throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException;
-    method public void removeTransportModeTransforms(@NonNull java.net.Socket) throws java.io.IOException;
-    method public void removeTransportModeTransforms(@NonNull java.net.DatagramSocket) throws java.io.IOException;
-    method public void removeTransportModeTransforms(@NonNull java.io.FileDescriptor) throws java.io.IOException;
-    field public static final int DIRECTION_IN = 0; // 0x0
-    field public static final int DIRECTION_OUT = 1; // 0x1
-  }
-
-  public static final class IpSecManager.ResourceUnavailableException extends android.util.AndroidException {
-  }
-
-  public static final class IpSecManager.SecurityParameterIndex implements java.lang.AutoCloseable {
-    method public void close();
-    method public int getSpi();
-  }
-
-  public static final class IpSecManager.SpiUnavailableException extends android.util.AndroidException {
-    method public int getSpi();
-  }
-
-  public static final class IpSecManager.UdpEncapsulationSocket implements java.lang.AutoCloseable {
-    method public void close() throws java.io.IOException;
-    method public java.io.FileDescriptor getFileDescriptor();
-    method public int getPort();
-  }
-
-  public final class IpSecTransform implements java.lang.AutoCloseable {
-    method public void close();
-  }
-
-  public static class IpSecTransform.Builder {
-    ctor public IpSecTransform.Builder(@NonNull android.content.Context);
-    method @NonNull public android.net.IpSecTransform buildTransportModeTransform(@NonNull java.net.InetAddress, @NonNull android.net.IpSecManager.SecurityParameterIndex) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException, android.net.IpSecManager.SpiUnavailableException;
-    method @NonNull public android.net.IpSecTransform.Builder setAuthenticatedEncryption(@NonNull android.net.IpSecAlgorithm);
-    method @NonNull public android.net.IpSecTransform.Builder setAuthentication(@NonNull android.net.IpSecAlgorithm);
-    method @NonNull public android.net.IpSecTransform.Builder setEncryption(@NonNull android.net.IpSecAlgorithm);
-    method @NonNull public android.net.IpSecTransform.Builder setIpv4Encapsulation(@NonNull android.net.IpSecManager.UdpEncapsulationSocket, int);
-  }
-
-  public class LinkAddress implements android.os.Parcelable {
-    method public int describeContents();
-    method public java.net.InetAddress getAddress();
-    method public int getFlags();
-    method @IntRange(from=0, to=128) public int getPrefixLength();
-    method public int getScope();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.LinkAddress> CREATOR;
-  }
-
-  public final class LinkProperties implements android.os.Parcelable {
-    ctor public LinkProperties();
-    method public boolean addRoute(@NonNull android.net.RouteInfo);
-    method public void clear();
-    method public int describeContents();
-    method @Nullable public java.net.Inet4Address getDhcpServerAddress();
-    method @NonNull public java.util.List<java.net.InetAddress> getDnsServers();
-    method @Nullable public String getDomains();
-    method @Nullable public android.net.ProxyInfo getHttpProxy();
-    method @Nullable public String getInterfaceName();
-    method @NonNull public java.util.List<android.net.LinkAddress> getLinkAddresses();
-    method public int getMtu();
-    method @Nullable public android.net.IpPrefix getNat64Prefix();
-    method @Nullable public String getPrivateDnsServerName();
-    method @NonNull public java.util.List<android.net.RouteInfo> getRoutes();
-    method public boolean isPrivateDnsActive();
-    method public boolean isWakeOnLanSupported();
-    method public void setDhcpServerAddress(@Nullable java.net.Inet4Address);
-    method public void setDnsServers(@NonNull java.util.Collection<java.net.InetAddress>);
-    method public void setDomains(@Nullable String);
-    method public void setHttpProxy(@Nullable android.net.ProxyInfo);
-    method public void setInterfaceName(@Nullable String);
-    method public void setLinkAddresses(@NonNull java.util.Collection<android.net.LinkAddress>);
-    method public void setMtu(int);
-    method public void setNat64Prefix(@Nullable android.net.IpPrefix);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.LinkProperties> CREATOR;
-  }
-
-  public class LocalServerSocket implements java.io.Closeable {
-    ctor public LocalServerSocket(String) throws java.io.IOException;
-    ctor public LocalServerSocket(java.io.FileDescriptor) throws java.io.IOException;
-    method public android.net.LocalSocket accept() throws java.io.IOException;
-    method public void close() throws java.io.IOException;
-    method public java.io.FileDescriptor getFileDescriptor();
-    method public android.net.LocalSocketAddress getLocalSocketAddress();
-  }
-
-  public class LocalSocket implements java.io.Closeable {
-    ctor public LocalSocket();
-    ctor public LocalSocket(int);
-    method public void bind(android.net.LocalSocketAddress) throws java.io.IOException;
-    method public void close() throws java.io.IOException;
-    method public void connect(android.net.LocalSocketAddress) throws java.io.IOException;
-    method public void connect(android.net.LocalSocketAddress, int) throws java.io.IOException;
-    method public java.io.FileDescriptor[] getAncillaryFileDescriptors() throws java.io.IOException;
-    method public java.io.FileDescriptor getFileDescriptor();
-    method public java.io.InputStream getInputStream() throws java.io.IOException;
-    method public android.net.LocalSocketAddress getLocalSocketAddress();
-    method public java.io.OutputStream getOutputStream() throws java.io.IOException;
-    method public android.net.Credentials getPeerCredentials() throws java.io.IOException;
-    method public int getReceiveBufferSize() throws java.io.IOException;
-    method public android.net.LocalSocketAddress getRemoteSocketAddress();
-    method public int getSendBufferSize() throws java.io.IOException;
-    method public int getSoTimeout() throws java.io.IOException;
-    method public boolean isBound();
-    method public boolean isClosed();
-    method public boolean isConnected();
-    method public boolean isInputShutdown();
-    method public boolean isOutputShutdown();
-    method public void setFileDescriptorsForSend(java.io.FileDescriptor[]);
-    method public void setReceiveBufferSize(int) throws java.io.IOException;
-    method public void setSendBufferSize(int) throws java.io.IOException;
-    method public void setSoTimeout(int) throws java.io.IOException;
-    method public void shutdownInput() throws java.io.IOException;
-    method public void shutdownOutput() throws java.io.IOException;
-    field public static final int SOCKET_DGRAM = 1; // 0x1
-    field public static final int SOCKET_SEQPACKET = 3; // 0x3
-    field public static final int SOCKET_STREAM = 2; // 0x2
-  }
-
-  public class LocalSocketAddress {
-    ctor public LocalSocketAddress(String, android.net.LocalSocketAddress.Namespace);
-    ctor public LocalSocketAddress(String);
-    method public String getName();
-    method public android.net.LocalSocketAddress.Namespace getNamespace();
-  }
-
-  public enum LocalSocketAddress.Namespace {
-    enum_constant public static final android.net.LocalSocketAddress.Namespace ABSTRACT;
-    enum_constant public static final android.net.LocalSocketAddress.Namespace FILESYSTEM;
-    enum_constant public static final android.net.LocalSocketAddress.Namespace RESERVED;
-  }
-
-  public final class MacAddress implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public static android.net.MacAddress fromBytes(@NonNull byte[]);
-    method @NonNull public static android.net.MacAddress fromString(@NonNull String);
-    method public int getAddressType();
-    method @Nullable public java.net.Inet6Address getLinkLocalIpv6FromEui48Mac();
-    method public boolean isLocallyAssigned();
-    method public boolean matches(@NonNull android.net.MacAddress, @NonNull android.net.MacAddress);
-    method @NonNull public byte[] toByteArray();
-    method @NonNull public String toOuiString();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.net.MacAddress BROADCAST_ADDRESS;
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.MacAddress> CREATOR;
-    field public static final int TYPE_BROADCAST = 3; // 0x3
-    field public static final int TYPE_MULTICAST = 2; // 0x2
-    field public static final int TYPE_UNICAST = 1; // 0x1
-  }
-
-  public class MailTo {
-    method public String getBody();
-    method public String getCc();
-    method public java.util.Map<java.lang.String,java.lang.String> getHeaders();
-    method public String getSubject();
-    method public String getTo();
-    method public static boolean isMailTo(String);
-    method public static android.net.MailTo parse(String) throws android.net.ParseException;
-    field public static final String MAILTO_SCHEME = "mailto:";
-  }
-
-  public class Network implements android.os.Parcelable {
-    method public void bindSocket(java.net.DatagramSocket) throws java.io.IOException;
-    method public void bindSocket(java.net.Socket) throws java.io.IOException;
-    method public void bindSocket(java.io.FileDescriptor) throws java.io.IOException;
-    method public int describeContents();
-    method public static android.net.Network fromNetworkHandle(long);
-    method public java.net.InetAddress[] getAllByName(String) throws java.net.UnknownHostException;
-    method public java.net.InetAddress getByName(String) throws java.net.UnknownHostException;
-    method public long getNetworkHandle();
-    method public javax.net.SocketFactory getSocketFactory();
-    method public java.net.URLConnection openConnection(java.net.URL) throws java.io.IOException;
-    method public java.net.URLConnection openConnection(java.net.URL, java.net.Proxy) throws java.io.IOException;
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.Network> CREATOR;
-  }
-
-  public final class NetworkCapabilities implements android.os.Parcelable {
-    ctor public NetworkCapabilities();
-    ctor public NetworkCapabilities(android.net.NetworkCapabilities);
-    method public int describeContents();
-    method public int getLinkDownstreamBandwidthKbps();
-    method public int getLinkUpstreamBandwidthKbps();
-    method @Nullable public android.net.NetworkSpecifier getNetworkSpecifier();
-    method public int getOwnerUid();
-    method public int getSignalStrength();
-    method @Nullable public android.net.TransportInfo getTransportInfo();
-    method public boolean hasCapability(int);
-    method public boolean hasTransport(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkCapabilities> CREATOR;
-    field public static final int NET_CAPABILITY_CAPTIVE_PORTAL = 17; // 0x11
-    field public static final int NET_CAPABILITY_CBS = 5; // 0x5
-    field public static final int NET_CAPABILITY_DUN = 2; // 0x2
-    field public static final int NET_CAPABILITY_EIMS = 10; // 0xa
-    field public static final int NET_CAPABILITY_FOREGROUND = 19; // 0x13
-    field public static final int NET_CAPABILITY_FOTA = 3; // 0x3
-    field public static final int NET_CAPABILITY_IA = 7; // 0x7
-    field public static final int NET_CAPABILITY_IMS = 4; // 0x4
-    field public static final int NET_CAPABILITY_INTERNET = 12; // 0xc
-    field public static final int NET_CAPABILITY_MCX = 23; // 0x17
-    field public static final int NET_CAPABILITY_MMS = 0; // 0x0
-    field public static final int NET_CAPABILITY_NOT_CONGESTED = 20; // 0x14
-    field public static final int NET_CAPABILITY_NOT_METERED = 11; // 0xb
-    field public static final int NET_CAPABILITY_NOT_RESTRICTED = 13; // 0xd
-    field public static final int NET_CAPABILITY_NOT_ROAMING = 18; // 0x12
-    field public static final int NET_CAPABILITY_NOT_SUSPENDED = 21; // 0x15
-    field public static final int NET_CAPABILITY_NOT_VPN = 15; // 0xf
-    field public static final int NET_CAPABILITY_RCS = 8; // 0x8
-    field public static final int NET_CAPABILITY_SUPL = 1; // 0x1
-    field public static final int NET_CAPABILITY_TEMPORARILY_NOT_METERED = 25; // 0x19
-    field public static final int NET_CAPABILITY_TRUSTED = 14; // 0xe
-    field public static final int NET_CAPABILITY_VALIDATED = 16; // 0x10
-    field public static final int NET_CAPABILITY_WIFI_P2P = 6; // 0x6
-    field public static final int NET_CAPABILITY_XCAP = 9; // 0x9
-    field public static final int SIGNAL_STRENGTH_UNSPECIFIED = -2147483648; // 0x80000000
-    field public static final int TRANSPORT_BLUETOOTH = 2; // 0x2
-    field public static final int TRANSPORT_CELLULAR = 0; // 0x0
-    field public static final int TRANSPORT_ETHERNET = 3; // 0x3
-    field public static final int TRANSPORT_LOWPAN = 6; // 0x6
-    field public static final int TRANSPORT_VPN = 4; // 0x4
-    field public static final int TRANSPORT_WIFI = 1; // 0x1
-    field public static final int TRANSPORT_WIFI_AWARE = 5; // 0x5
-  }
-
-  @Deprecated public class NetworkInfo implements android.os.Parcelable {
-    ctor @Deprecated public NetworkInfo(int, int, @Nullable String, @Nullable String);
-    method @Deprecated public int describeContents();
-    method @Deprecated @NonNull public android.net.NetworkInfo.DetailedState getDetailedState();
-    method @Deprecated public String getExtraInfo();
-    method @Deprecated public String getReason();
-    method @Deprecated public android.net.NetworkInfo.State getState();
-    method @Deprecated public int getSubtype();
-    method @Deprecated public String getSubtypeName();
-    method @Deprecated public int getType();
-    method @Deprecated public String getTypeName();
-    method @Deprecated public boolean isAvailable();
-    method @Deprecated public boolean isConnected();
-    method @Deprecated public boolean isConnectedOrConnecting();
-    method @Deprecated public boolean isFailover();
-    method @Deprecated public boolean isRoaming();
-    method @Deprecated public void setDetailedState(@NonNull android.net.NetworkInfo.DetailedState, @Nullable String, @Nullable String);
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkInfo> CREATOR;
-  }
-
-  @Deprecated public enum NetworkInfo.DetailedState {
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState AUTHENTICATING;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState BLOCKED;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState CAPTIVE_PORTAL_CHECK;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState CONNECTED;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState CONNECTING;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState DISCONNECTED;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState DISCONNECTING;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState FAILED;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState IDLE;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState OBTAINING_IPADDR;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState SCANNING;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState SUSPENDED;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.DetailedState VERIFYING_POOR_LINK;
-  }
-
-  @Deprecated public enum NetworkInfo.State {
-    enum_constant @Deprecated public static final android.net.NetworkInfo.State CONNECTED;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.State CONNECTING;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.State DISCONNECTED;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.State DISCONNECTING;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.State SUSPENDED;
-    enum_constant @Deprecated public static final android.net.NetworkInfo.State UNKNOWN;
-  }
-
-  public class NetworkRequest implements android.os.Parcelable {
-    method public boolean canBeSatisfiedBy(@Nullable android.net.NetworkCapabilities);
-    method public int describeContents();
-    method @Nullable public android.net.NetworkSpecifier getNetworkSpecifier();
-    method public boolean hasCapability(int);
-    method public boolean hasTransport(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkRequest> CREATOR;
-  }
-
-  public static class NetworkRequest.Builder {
-    ctor public NetworkRequest.Builder();
-    method public android.net.NetworkRequest.Builder addCapability(int);
-    method public android.net.NetworkRequest.Builder addTransportType(int);
-    method public android.net.NetworkRequest build();
-    method @NonNull public android.net.NetworkRequest.Builder clearCapabilities();
-    method public android.net.NetworkRequest.Builder removeCapability(int);
-    method public android.net.NetworkRequest.Builder removeTransportType(int);
-    method @Deprecated public android.net.NetworkRequest.Builder setNetworkSpecifier(String);
-    method public android.net.NetworkRequest.Builder setNetworkSpecifier(android.net.NetworkSpecifier);
-  }
-
-  public abstract class NetworkSpecifier {
-    ctor public NetworkSpecifier();
-  }
-
-  public class ParseException extends java.lang.RuntimeException {
-    field public String response;
-  }
-
-  public abstract class PlatformVpnProfile {
-    method public final int getType();
-    method @NonNull public final String getTypeString();
-    field public static final int TYPE_IKEV2_IPSEC_PSK = 7; // 0x7
-    field public static final int TYPE_IKEV2_IPSEC_RSA = 8; // 0x8
-    field public static final int TYPE_IKEV2_IPSEC_USER_PASS = 6; // 0x6
-  }
-
-  public final class Proxy {
-    ctor public Proxy();
-    method @Deprecated public static String getDefaultHost();
-    method @Deprecated public static int getDefaultPort();
-    method @Deprecated public static String getHost(android.content.Context);
-    method @Deprecated public static int getPort(android.content.Context);
-    field @Deprecated public static final String EXTRA_PROXY_INFO = "android.intent.extra.PROXY_INFO";
-    field public static final String PROXY_CHANGE_ACTION = "android.intent.action.PROXY_CHANGE";
-  }
-
-  public class ProxyInfo implements android.os.Parcelable {
-    ctor public ProxyInfo(@Nullable android.net.ProxyInfo);
-    method public static android.net.ProxyInfo buildDirectProxy(String, int);
-    method public static android.net.ProxyInfo buildDirectProxy(String, int, java.util.List<java.lang.String>);
-    method public static android.net.ProxyInfo buildPacProxy(android.net.Uri);
-    method @NonNull public static android.net.ProxyInfo buildPacProxy(@NonNull android.net.Uri, int);
-    method public int describeContents();
-    method public String[] getExclusionList();
-    method public String getHost();
-    method public android.net.Uri getPacFileUrl();
-    method public int getPort();
-    method public boolean isValid();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.ProxyInfo> CREATOR;
-  }
-
-  public final class RouteInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.net.IpPrefix getDestination();
-    method @Nullable public java.net.InetAddress getGateway();
-    method @Nullable public String getInterface();
-    method public boolean hasGateway();
-    method public boolean isDefaultRoute();
-    method public boolean matches(java.net.InetAddress);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.RouteInfo> CREATOR;
-  }
-
-  @Deprecated public class SSLCertificateSocketFactory extends javax.net.ssl.SSLSocketFactory {
-    ctor @Deprecated public SSLCertificateSocketFactory(int);
-    method @Deprecated public java.net.Socket createSocket(java.net.Socket, String, int, boolean) throws java.io.IOException;
-    method @Deprecated public java.net.Socket createSocket(java.net.InetAddress, int, java.net.InetAddress, int) throws java.io.IOException;
-    method @Deprecated public java.net.Socket createSocket(java.net.InetAddress, int) throws java.io.IOException;
-    method @Deprecated public java.net.Socket createSocket(String, int, java.net.InetAddress, int) throws java.io.IOException;
-    method @Deprecated public java.net.Socket createSocket(String, int) throws java.io.IOException;
-    method @Deprecated public static javax.net.SocketFactory getDefault(int);
-    method @Deprecated public static javax.net.ssl.SSLSocketFactory getDefault(int, android.net.SSLSessionCache);
-    method @Deprecated public String[] getDefaultCipherSuites();
-    method @Deprecated public static javax.net.ssl.SSLSocketFactory getInsecure(int, android.net.SSLSessionCache);
-    method @Deprecated public byte[] getNpnSelectedProtocol(java.net.Socket);
-    method @Deprecated public String[] getSupportedCipherSuites();
-    method @Deprecated public void setHostname(java.net.Socket, String);
-    method @Deprecated public void setKeyManagers(javax.net.ssl.KeyManager[]);
-    method @Deprecated public void setNpnProtocols(byte[][]);
-    method @Deprecated public void setTrustManagers(javax.net.ssl.TrustManager[]);
-    method @Deprecated public void setUseSessionTickets(java.net.Socket, boolean);
-  }
-
-  public final class SSLSessionCache {
-    ctor public SSLSessionCache(java.io.File) throws java.io.IOException;
-    ctor public SSLSessionCache(android.content.Context);
-  }
-
-  public abstract class SocketKeepalive implements java.lang.AutoCloseable {
-    method public final void close();
-    method public final void start(@IntRange(from=0xa, to=0xe10) int);
-    method public final void stop();
-    field public static final int ERROR_HARDWARE_ERROR = -31; // 0xffffffe1
-    field public static final int ERROR_INSUFFICIENT_RESOURCES = -32; // 0xffffffe0
-    field public static final int ERROR_INVALID_INTERVAL = -24; // 0xffffffe8
-    field public static final int ERROR_INVALID_IP_ADDRESS = -21; // 0xffffffeb
-    field public static final int ERROR_INVALID_LENGTH = -23; // 0xffffffe9
-    field public static final int ERROR_INVALID_NETWORK = -20; // 0xffffffec
-    field public static final int ERROR_INVALID_PORT = -22; // 0xffffffea
-    field public static final int ERROR_INVALID_SOCKET = -25; // 0xffffffe7
-    field public static final int ERROR_SOCKET_NOT_IDLE = -26; // 0xffffffe6
-    field public static final int ERROR_UNSUPPORTED = -30; // 0xffffffe2
-  }
-
-  public static class SocketKeepalive.Callback {
-    ctor public SocketKeepalive.Callback();
-    method public void onDataReceived();
-    method public void onError(int);
-    method public void onStarted();
-    method public void onStopped();
-  }
-
-  public final class TelephonyNetworkSpecifier extends android.net.NetworkSpecifier implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getSubscriptionId();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.TelephonyNetworkSpecifier> CREATOR;
-  }
-
-  public static final class TelephonyNetworkSpecifier.Builder {
-    ctor public TelephonyNetworkSpecifier.Builder();
-    method @NonNull public android.net.TelephonyNetworkSpecifier build();
-    method @NonNull public android.net.TelephonyNetworkSpecifier.Builder setSubscriptionId(int);
-  }
-
-  public class TrafficStats {
-    ctor public TrafficStats();
-    method public static void clearThreadStatsTag();
-    method public static void clearThreadStatsUid();
-    method public static int getAndSetThreadStatsTag(int);
-    method public static long getMobileRxBytes();
-    method public static long getMobileRxPackets();
-    method public static long getMobileTxBytes();
-    method public static long getMobileTxPackets();
-    method public static long getRxPackets(@NonNull String);
-    method public static int getThreadStatsTag();
-    method public static int getThreadStatsUid();
-    method public static long getTotalRxBytes();
-    method public static long getTotalRxPackets();
-    method public static long getTotalTxBytes();
-    method public static long getTotalTxPackets();
-    method public static long getTxPackets(@NonNull String);
-    method public static long getUidRxBytes(int);
-    method public static long getUidRxPackets(int);
-    method @Deprecated public static long getUidTcpRxBytes(int);
-    method @Deprecated public static long getUidTcpRxSegments(int);
-    method @Deprecated public static long getUidTcpTxBytes(int);
-    method @Deprecated public static long getUidTcpTxSegments(int);
-    method public static long getUidTxBytes(int);
-    method public static long getUidTxPackets(int);
-    method @Deprecated public static long getUidUdpRxBytes(int);
-    method @Deprecated public static long getUidUdpRxPackets(int);
-    method @Deprecated public static long getUidUdpTxBytes(int);
-    method @Deprecated public static long getUidUdpTxPackets(int);
-    method public static void incrementOperationCount(int);
-    method public static void incrementOperationCount(int, int);
-    method public static void setThreadStatsTag(int);
-    method public static void setThreadStatsUid(int);
-    method public static void tagDatagramSocket(java.net.DatagramSocket) throws java.net.SocketException;
-    method public static void tagFileDescriptor(java.io.FileDescriptor) throws java.io.IOException;
-    method public static void tagSocket(java.net.Socket) throws java.net.SocketException;
-    method public static void untagDatagramSocket(java.net.DatagramSocket) throws java.net.SocketException;
-    method public static void untagFileDescriptor(java.io.FileDescriptor) throws java.io.IOException;
-    method public static void untagSocket(java.net.Socket) throws java.net.SocketException;
-    field public static final int UNSUPPORTED = -1; // 0xffffffff
-  }
-
-  public interface TransportInfo {
-  }
-
-  public abstract class Uri implements java.lang.Comparable<android.net.Uri> android.os.Parcelable {
-    method public abstract android.net.Uri.Builder buildUpon();
-    method public int compareTo(android.net.Uri);
-    method public static String decode(String);
-    method public static String encode(String);
-    method public static String encode(String, String);
-    method public static android.net.Uri fromFile(java.io.File);
-    method public static android.net.Uri fromParts(String, String, String);
-    method @Nullable public abstract String getAuthority();
-    method public boolean getBooleanQueryParameter(String, boolean);
-    method @Nullable public abstract String getEncodedAuthority();
-    method @Nullable public abstract String getEncodedFragment();
-    method @Nullable public abstract String getEncodedPath();
-    method @Nullable public abstract String getEncodedQuery();
-    method public abstract String getEncodedSchemeSpecificPart();
-    method @Nullable public abstract String getEncodedUserInfo();
-    method @Nullable public abstract String getFragment();
-    method @Nullable public abstract String getHost();
-    method @Nullable public abstract String getLastPathSegment();
-    method @Nullable public abstract String getPath();
-    method public abstract java.util.List<java.lang.String> getPathSegments();
-    method public abstract int getPort();
-    method @Nullable public abstract String getQuery();
-    method @Nullable public String getQueryParameter(String);
-    method public java.util.Set<java.lang.String> getQueryParameterNames();
-    method public java.util.List<java.lang.String> getQueryParameters(String);
-    method @Nullable public abstract String getScheme();
-    method public abstract String getSchemeSpecificPart();
-    method @Nullable public abstract String getUserInfo();
-    method public boolean isAbsolute();
-    method public abstract boolean isHierarchical();
-    method public boolean isOpaque();
-    method public abstract boolean isRelative();
-    method public android.net.Uri normalizeScheme();
-    method public static android.net.Uri parse(String);
-    method public abstract String toString();
-    method public static android.net.Uri withAppendedPath(android.net.Uri, String);
-    method public static void writeToParcel(android.os.Parcel, android.net.Uri);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.Uri> CREATOR;
-    field public static final android.net.Uri EMPTY;
-  }
-
-  public static final class Uri.Builder {
-    ctor public Uri.Builder();
-    method public android.net.Uri.Builder appendEncodedPath(String);
-    method public android.net.Uri.Builder appendPath(String);
-    method public android.net.Uri.Builder appendQueryParameter(String, String);
-    method public android.net.Uri.Builder authority(String);
-    method public android.net.Uri build();
-    method public android.net.Uri.Builder clearQuery();
-    method public android.net.Uri.Builder encodedAuthority(String);
-    method public android.net.Uri.Builder encodedFragment(String);
-    method public android.net.Uri.Builder encodedOpaquePart(String);
-    method public android.net.Uri.Builder encodedPath(String);
-    method public android.net.Uri.Builder encodedQuery(String);
-    method public android.net.Uri.Builder fragment(String);
-    method public android.net.Uri.Builder opaquePart(String);
-    method public android.net.Uri.Builder path(String);
-    method public android.net.Uri.Builder query(String);
-    method public android.net.Uri.Builder scheme(String);
-  }
-
-  public class UrlQuerySanitizer {
-    ctor public UrlQuerySanitizer();
-    ctor public UrlQuerySanitizer(String);
-    method protected void addSanitizedEntry(String, String);
-    method protected void clear();
-    method protected int decodeHexDigit(char);
-    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getAllButNulAndAngleBracketsLegal();
-    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getAllButNulLegal();
-    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getAllButWhitespaceLegal();
-    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getAllIllegal();
-    method public boolean getAllowUnregisteredParamaters();
-    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getAmpAndSpaceLegal();
-    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getAmpLegal();
-    method public android.net.UrlQuerySanitizer.ValueSanitizer getEffectiveValueSanitizer(String);
-    method public java.util.List<android.net.UrlQuerySanitizer.ParameterValuePair> getParameterList();
-    method public java.util.Set<java.lang.String> getParameterSet();
-    method public boolean getPreferFirstRepeatedParameter();
-    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getSpaceLegal();
-    method public android.net.UrlQuerySanitizer.ValueSanitizer getUnregisteredParameterValueSanitizer();
-    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getUrlAndSpaceLegal();
-    method public static final android.net.UrlQuerySanitizer.ValueSanitizer getUrlLegal();
-    method public String getValue(String);
-    method public android.net.UrlQuerySanitizer.ValueSanitizer getValueSanitizer(String);
-    method public boolean hasParameter(String);
-    method protected boolean isHexDigit(char);
-    method protected void parseEntry(String, String);
-    method public void parseQuery(String);
-    method public void parseUrl(String);
-    method public void registerParameter(String, android.net.UrlQuerySanitizer.ValueSanitizer);
-    method public void registerParameters(String[], android.net.UrlQuerySanitizer.ValueSanitizer);
-    method public void setAllowUnregisteredParamaters(boolean);
-    method public void setPreferFirstRepeatedParameter(boolean);
-    method public void setUnregisteredParameterValueSanitizer(android.net.UrlQuerySanitizer.ValueSanitizer);
-    method public String unescape(String);
-  }
-
-  public static class UrlQuerySanitizer.IllegalCharacterValueSanitizer implements android.net.UrlQuerySanitizer.ValueSanitizer {
-    ctor public UrlQuerySanitizer.IllegalCharacterValueSanitizer(int);
-    method public String sanitize(String);
-    field public static final int ALL_BUT_NUL_AND_ANGLE_BRACKETS_LEGAL = 1439; // 0x59f
-    field public static final int ALL_BUT_NUL_LEGAL = 1535; // 0x5ff
-    field public static final int ALL_BUT_WHITESPACE_LEGAL = 1532; // 0x5fc
-    field public static final int ALL_ILLEGAL = 0; // 0x0
-    field public static final int ALL_OK = 2047; // 0x7ff
-    field public static final int ALL_WHITESPACE_OK = 3; // 0x3
-    field public static final int AMP_AND_SPACE_LEGAL = 129; // 0x81
-    field public static final int AMP_LEGAL = 128; // 0x80
-    field public static final int AMP_OK = 128; // 0x80
-    field public static final int DQUOTE_OK = 8; // 0x8
-    field public static final int GT_OK = 64; // 0x40
-    field public static final int LT_OK = 32; // 0x20
-    field public static final int NON_7_BIT_ASCII_OK = 4; // 0x4
-    field public static final int NUL_OK = 512; // 0x200
-    field public static final int OTHER_WHITESPACE_OK = 2; // 0x2
-    field public static final int PCT_OK = 256; // 0x100
-    field public static final int SCRIPT_URL_OK = 1024; // 0x400
-    field public static final int SPACE_LEGAL = 1; // 0x1
-    field public static final int SPACE_OK = 1; // 0x1
-    field public static final int SQUOTE_OK = 16; // 0x10
-    field public static final int URL_AND_SPACE_LEGAL = 405; // 0x195
-    field public static final int URL_LEGAL = 404; // 0x194
-  }
-
-  public class UrlQuerySanitizer.ParameterValuePair {
-    ctor public UrlQuerySanitizer.ParameterValuePair(String, String);
-    field public String mParameter;
-    field public String mValue;
-  }
-
-  public static interface UrlQuerySanitizer.ValueSanitizer {
-    method public String sanitize(String);
-  }
-
-  public class VpnManager {
-    method public void deleteProvisionedVpnProfile();
-    method @Nullable public android.content.Intent provisionVpnProfile(@NonNull android.net.PlatformVpnProfile);
-    method public void startProvisionedVpnProfile();
-    method public void stopProvisionedVpnProfile();
-  }
-
-  public class VpnService extends android.app.Service {
-    ctor public VpnService();
-    method public final boolean isAlwaysOn();
-    method public final boolean isLockdownEnabled();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public void onRevoke();
-    method public static android.content.Intent prepare(android.content.Context);
-    method public boolean protect(int);
-    method public boolean protect(java.net.Socket);
-    method public boolean protect(java.net.DatagramSocket);
-    method public boolean setUnderlyingNetworks(android.net.Network[]);
-    field public static final String SERVICE_INTERFACE = "android.net.VpnService";
-    field public static final String SERVICE_META_DATA_SUPPORTS_ALWAYS_ON = "android.net.VpnService.SUPPORTS_ALWAYS_ON";
-  }
-
-  public class VpnService.Builder {
-    ctor public VpnService.Builder();
-    method @NonNull public android.net.VpnService.Builder addAddress(@NonNull java.net.InetAddress, int);
-    method @NonNull public android.net.VpnService.Builder addAddress(@NonNull String, int);
-    method @NonNull public android.net.VpnService.Builder addAllowedApplication(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public android.net.VpnService.Builder addDisallowedApplication(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public android.net.VpnService.Builder addDnsServer(@NonNull java.net.InetAddress);
-    method @NonNull public android.net.VpnService.Builder addDnsServer(@NonNull String);
-    method @NonNull public android.net.VpnService.Builder addRoute(@NonNull java.net.InetAddress, int);
-    method @NonNull public android.net.VpnService.Builder addRoute(@NonNull String, int);
-    method @NonNull public android.net.VpnService.Builder addSearchDomain(@NonNull String);
-    method @NonNull public android.net.VpnService.Builder allowBypass();
-    method @NonNull public android.net.VpnService.Builder allowFamily(int);
-    method @Nullable public android.os.ParcelFileDescriptor establish();
-    method @NonNull public android.net.VpnService.Builder setBlocking(boolean);
-    method @NonNull public android.net.VpnService.Builder setConfigureIntent(@NonNull android.app.PendingIntent);
-    method @NonNull public android.net.VpnService.Builder setHttpProxy(@NonNull android.net.ProxyInfo);
-    method @NonNull public android.net.VpnService.Builder setMetered(boolean);
-    method @NonNull public android.net.VpnService.Builder setMtu(int);
-    method @NonNull public android.net.VpnService.Builder setSession(@NonNull String);
-    method @NonNull public android.net.VpnService.Builder setUnderlyingNetworks(@Nullable android.net.Network[]);
-  }
-
-}
-
-package android.net.http {
-
-  public final class HttpResponseCache extends java.net.ResponseCache implements java.io.Closeable {
-    method public void close() throws java.io.IOException;
-    method public void delete() throws java.io.IOException;
-    method public void flush();
-    method public java.net.CacheResponse get(java.net.URI, String, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
-    method public int getHitCount();
-    method public static android.net.http.HttpResponseCache getInstalled();
-    method public int getNetworkCount();
-    method public int getRequestCount();
-    method public static android.net.http.HttpResponseCache install(java.io.File, long) throws java.io.IOException;
-    method public long maxSize();
-    method public java.net.CacheRequest put(java.net.URI, java.net.URLConnection) throws java.io.IOException;
-    method public long size();
-  }
-
-  public class SslCertificate {
-    ctor @Deprecated public SslCertificate(String, String, String, String);
-    ctor @Deprecated public SslCertificate(String, String, java.util.Date, java.util.Date);
-    ctor public SslCertificate(java.security.cert.X509Certificate);
-    method public android.net.http.SslCertificate.DName getIssuedBy();
-    method public android.net.http.SslCertificate.DName getIssuedTo();
-    method @Deprecated public String getValidNotAfter();
-    method public java.util.Date getValidNotAfterDate();
-    method @Deprecated public String getValidNotBefore();
-    method public java.util.Date getValidNotBeforeDate();
-    method @Nullable public java.security.cert.X509Certificate getX509Certificate();
-    method public static android.net.http.SslCertificate restoreState(android.os.Bundle);
-    method public static android.os.Bundle saveState(android.net.http.SslCertificate);
-  }
-
-  public class SslCertificate.DName {
-    ctor public SslCertificate.DName(String);
-    method public String getCName();
-    method public String getDName();
-    method public String getOName();
-    method public String getUName();
-  }
-
-  public class SslError {
-    ctor @Deprecated public SslError(int, android.net.http.SslCertificate);
-    ctor @Deprecated public SslError(int, java.security.cert.X509Certificate);
-    ctor public SslError(int, android.net.http.SslCertificate, String);
-    ctor public SslError(int, java.security.cert.X509Certificate, String);
-    method public boolean addError(int);
-    method public android.net.http.SslCertificate getCertificate();
-    method public int getPrimaryError();
-    method public String getUrl();
-    method public boolean hasError(int);
-    field public static final int SSL_DATE_INVALID = 4; // 0x4
-    field public static final int SSL_EXPIRED = 1; // 0x1
-    field public static final int SSL_IDMISMATCH = 2; // 0x2
-    field public static final int SSL_INVALID = 5; // 0x5
-    field @Deprecated public static final int SSL_MAX_ERROR = 6; // 0x6
-    field public static final int SSL_NOTYETVALID = 0; // 0x0
-    field public static final int SSL_UNTRUSTED = 3; // 0x3
-  }
-
-  public class X509TrustManagerExtensions {
-    ctor public X509TrustManagerExtensions(javax.net.ssl.X509TrustManager) throws java.lang.IllegalArgumentException;
-    method public java.util.List<java.security.cert.X509Certificate> checkServerTrusted(java.security.cert.X509Certificate[], String, String) throws java.security.cert.CertificateException;
-    method public boolean isSameTrustConfiguration(String, String);
-    method public boolean isUserAddedCertificate(java.security.cert.X509Certificate);
-  }
-
-}
-
-package android.net.nsd {
-
-  public final class NsdManager {
-    method public void discoverServices(String, int, android.net.nsd.NsdManager.DiscoveryListener);
-    method public void registerService(android.net.nsd.NsdServiceInfo, int, android.net.nsd.NsdManager.RegistrationListener);
-    method public void resolveService(android.net.nsd.NsdServiceInfo, android.net.nsd.NsdManager.ResolveListener);
-    method public void stopServiceDiscovery(android.net.nsd.NsdManager.DiscoveryListener);
-    method public void unregisterService(android.net.nsd.NsdManager.RegistrationListener);
-    field public static final String ACTION_NSD_STATE_CHANGED = "android.net.nsd.STATE_CHANGED";
-    field public static final String EXTRA_NSD_STATE = "nsd_state";
-    field public static final int FAILURE_ALREADY_ACTIVE = 3; // 0x3
-    field public static final int FAILURE_INTERNAL_ERROR = 0; // 0x0
-    field public static final int FAILURE_MAX_LIMIT = 4; // 0x4
-    field public static final int NSD_STATE_DISABLED = 1; // 0x1
-    field public static final int NSD_STATE_ENABLED = 2; // 0x2
-    field public static final int PROTOCOL_DNS_SD = 1; // 0x1
-  }
-
-  public static interface NsdManager.DiscoveryListener {
-    method public void onDiscoveryStarted(String);
-    method public void onDiscoveryStopped(String);
-    method public void onServiceFound(android.net.nsd.NsdServiceInfo);
-    method public void onServiceLost(android.net.nsd.NsdServiceInfo);
-    method public void onStartDiscoveryFailed(String, int);
-    method public void onStopDiscoveryFailed(String, int);
-  }
-
-  public static interface NsdManager.RegistrationListener {
-    method public void onRegistrationFailed(android.net.nsd.NsdServiceInfo, int);
-    method public void onServiceRegistered(android.net.nsd.NsdServiceInfo);
-    method public void onServiceUnregistered(android.net.nsd.NsdServiceInfo);
-    method public void onUnregistrationFailed(android.net.nsd.NsdServiceInfo, int);
-  }
-
-  public static interface NsdManager.ResolveListener {
-    method public void onResolveFailed(android.net.nsd.NsdServiceInfo, int);
-    method public void onServiceResolved(android.net.nsd.NsdServiceInfo);
-  }
-
-  public final class NsdServiceInfo implements android.os.Parcelable {
-    ctor public NsdServiceInfo();
-    method public int describeContents();
-    method public java.util.Map<java.lang.String,byte[]> getAttributes();
-    method public java.net.InetAddress getHost();
-    method public int getPort();
-    method public String getServiceName();
-    method public String getServiceType();
-    method public void removeAttribute(String);
-    method public void setAttribute(String, String);
-    method public void setHost(java.net.InetAddress);
-    method public void setPort(int);
-    method public void setServiceName(String);
-    method public void setServiceType(String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.nsd.NsdServiceInfo> CREATOR;
-  }
-
-}
-
-package android.net.rtp {
-
-  public class AudioCodec {
-    method public static android.net.rtp.AudioCodec getCodec(int, String, String);
-    method public static android.net.rtp.AudioCodec[] getCodecs();
-    field public static final android.net.rtp.AudioCodec AMR;
-    field public static final android.net.rtp.AudioCodec GSM;
-    field public static final android.net.rtp.AudioCodec GSM_EFR;
-    field public static final android.net.rtp.AudioCodec PCMA;
-    field public static final android.net.rtp.AudioCodec PCMU;
-    field public final String fmtp;
-    field public final String rtpmap;
-    field public final int type;
-  }
-
-  public class AudioGroup {
-    ctor @Deprecated public AudioGroup();
-    ctor public AudioGroup(@NonNull android.content.Context);
-    method public void clear();
-    method public int getMode();
-    method public android.net.rtp.AudioStream[] getStreams();
-    method public void sendDtmf(int);
-    method public void setMode(int);
-    field public static final int MODE_ECHO_SUPPRESSION = 3; // 0x3
-    field public static final int MODE_MUTED = 1; // 0x1
-    field public static final int MODE_NORMAL = 2; // 0x2
-    field public static final int MODE_ON_HOLD = 0; // 0x0
-  }
-
-  public class AudioStream extends android.net.rtp.RtpStream {
-    ctor public AudioStream(java.net.InetAddress) throws java.net.SocketException;
-    method public android.net.rtp.AudioCodec getCodec();
-    method public int getDtmfType();
-    method public android.net.rtp.AudioGroup getGroup();
-    method public final boolean isBusy();
-    method public void join(android.net.rtp.AudioGroup);
-    method public void setCodec(android.net.rtp.AudioCodec);
-    method public void setDtmfType(int);
-  }
-
-  public class RtpStream {
-    method public void associate(java.net.InetAddress, int);
-    method public java.net.InetAddress getLocalAddress();
-    method public int getLocalPort();
-    method public int getMode();
-    method public java.net.InetAddress getRemoteAddress();
-    method public int getRemotePort();
-    method public boolean isBusy();
-    method public void release();
-    method public void setMode(int);
-    field public static final int MODE_NORMAL = 0; // 0x0
-    field public static final int MODE_RECEIVE_ONLY = 2; // 0x2
-    field public static final int MODE_SEND_ONLY = 1; // 0x1
-  }
-
-}
-
-package android.net.sip {
-
-  public class SipAudioCall {
-    ctor public SipAudioCall(android.content.Context, android.net.sip.SipProfile);
-    method public void answerCall(int) throws android.net.sip.SipException;
-    method public void attachCall(android.net.sip.SipSession, String) throws android.net.sip.SipException;
-    method public void close();
-    method public void continueCall(int) throws android.net.sip.SipException;
-    method public void endCall() throws android.net.sip.SipException;
-    method public android.net.sip.SipProfile getLocalProfile();
-    method public android.net.sip.SipProfile getPeerProfile();
-    method public int getState();
-    method public void holdCall(int) throws android.net.sip.SipException;
-    method public boolean isInCall();
-    method public boolean isMuted();
-    method public boolean isOnHold();
-    method public void makeCall(android.net.sip.SipProfile, android.net.sip.SipSession, int) throws android.net.sip.SipException;
-    method public void sendDtmf(int);
-    method public void sendDtmf(int, android.os.Message);
-    method public void setListener(android.net.sip.SipAudioCall.Listener);
-    method public void setListener(android.net.sip.SipAudioCall.Listener, boolean);
-    method public void setSpeakerMode(boolean);
-    method public void startAudio();
-    method public void toggleMute();
-  }
-
-  public static class SipAudioCall.Listener {
-    ctor public SipAudioCall.Listener();
-    method public void onCallBusy(android.net.sip.SipAudioCall);
-    method public void onCallEnded(android.net.sip.SipAudioCall);
-    method public void onCallEstablished(android.net.sip.SipAudioCall);
-    method public void onCallHeld(android.net.sip.SipAudioCall);
-    method public void onCalling(android.net.sip.SipAudioCall);
-    method public void onChanged(android.net.sip.SipAudioCall);
-    method public void onError(android.net.sip.SipAudioCall, int, String);
-    method public void onReadyToCall(android.net.sip.SipAudioCall);
-    method public void onRinging(android.net.sip.SipAudioCall, android.net.sip.SipProfile);
-    method public void onRingingBack(android.net.sip.SipAudioCall);
-  }
-
-  public class SipErrorCode {
-    method public static String toString(int);
-    field public static final int CLIENT_ERROR = -4; // 0xfffffffc
-    field public static final int CROSS_DOMAIN_AUTHENTICATION = -11; // 0xfffffff5
-    field public static final int DATA_CONNECTION_LOST = -10; // 0xfffffff6
-    field public static final int INVALID_CREDENTIALS = -8; // 0xfffffff8
-    field public static final int INVALID_REMOTE_URI = -6; // 0xfffffffa
-    field public static final int IN_PROGRESS = -9; // 0xfffffff7
-    field public static final int NO_ERROR = 0; // 0x0
-    field public static final int PEER_NOT_REACHABLE = -7; // 0xfffffff9
-    field public static final int SERVER_ERROR = -2; // 0xfffffffe
-    field public static final int SERVER_UNREACHABLE = -12; // 0xfffffff4
-    field public static final int SOCKET_ERROR = -1; // 0xffffffff
-    field public static final int TIME_OUT = -5; // 0xfffffffb
-    field public static final int TRANSACTION_TERMINTED = -3; // 0xfffffffd
-  }
-
-  public class SipException extends java.lang.Exception {
-    ctor public SipException();
-    ctor public SipException(String);
-    ctor public SipException(String, Throwable);
-  }
-
-  public class SipManager {
-    method public void close(String) throws android.net.sip.SipException;
-    method public android.net.sip.SipSession createSipSession(android.net.sip.SipProfile, android.net.sip.SipSession.Listener) throws android.net.sip.SipException;
-    method public static String getCallId(android.content.Intent);
-    method public static String getOfferSessionDescription(android.content.Intent);
-    method public android.net.sip.SipSession getSessionFor(android.content.Intent) throws android.net.sip.SipException;
-    method public static boolean isApiSupported(android.content.Context);
-    method public static boolean isIncomingCallIntent(android.content.Intent);
-    method public boolean isOpened(String) throws android.net.sip.SipException;
-    method public boolean isRegistered(String) throws android.net.sip.SipException;
-    method public static boolean isSipWifiOnly(android.content.Context);
-    method public static boolean isVoipSupported(android.content.Context);
-    method public android.net.sip.SipAudioCall makeAudioCall(android.net.sip.SipProfile, android.net.sip.SipProfile, android.net.sip.SipAudioCall.Listener, int) throws android.net.sip.SipException;
-    method public android.net.sip.SipAudioCall makeAudioCall(String, String, android.net.sip.SipAudioCall.Listener, int) throws android.net.sip.SipException;
-    method public static android.net.sip.SipManager newInstance(android.content.Context);
-    method public void open(android.net.sip.SipProfile) throws android.net.sip.SipException;
-    method public void open(android.net.sip.SipProfile, android.app.PendingIntent, android.net.sip.SipRegistrationListener) throws android.net.sip.SipException;
-    method public void register(android.net.sip.SipProfile, int, android.net.sip.SipRegistrationListener) throws android.net.sip.SipException;
-    method public void setRegistrationListener(String, android.net.sip.SipRegistrationListener) throws android.net.sip.SipException;
-    method public android.net.sip.SipAudioCall takeAudioCall(android.content.Intent, android.net.sip.SipAudioCall.Listener) throws android.net.sip.SipException;
-    method public void unregister(android.net.sip.SipProfile, android.net.sip.SipRegistrationListener) throws android.net.sip.SipException;
-    field public static final String EXTRA_CALL_ID = "android:sipCallID";
-    field public static final String EXTRA_OFFER_SD = "android:sipOfferSD";
-    field public static final int INCOMING_CALL_RESULT_CODE = 101; // 0x65
-  }
-
-  public class SipProfile implements java.lang.Cloneable android.os.Parcelable java.io.Serializable {
-    method public int describeContents();
-    method public String getAuthUserName();
-    method public boolean getAutoRegistration();
-    method public String getDisplayName();
-    method public String getPassword();
-    method public int getPort();
-    method public String getProfileName();
-    method public String getProtocol();
-    method public String getProxyAddress();
-    method public boolean getSendKeepAlive();
-    method public String getSipDomain();
-    method public String getUriString();
-    method public String getUserName();
-    method public void setCallingUid(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.net.sip.SipProfile> CREATOR;
-  }
-
-  public static class SipProfile.Builder {
-    ctor public SipProfile.Builder(android.net.sip.SipProfile);
-    ctor public SipProfile.Builder(String) throws java.text.ParseException;
-    ctor public SipProfile.Builder(String, String) throws java.text.ParseException;
-    method public android.net.sip.SipProfile build();
-    method public android.net.sip.SipProfile.Builder setAuthUserName(String);
-    method public android.net.sip.SipProfile.Builder setAutoRegistration(boolean);
-    method public android.net.sip.SipProfile.Builder setDisplayName(String);
-    method public android.net.sip.SipProfile.Builder setOutboundProxy(String);
-    method public android.net.sip.SipProfile.Builder setPassword(String);
-    method public android.net.sip.SipProfile.Builder setPort(int) throws java.lang.IllegalArgumentException;
-    method public android.net.sip.SipProfile.Builder setProfileName(String);
-    method public android.net.sip.SipProfile.Builder setProtocol(String) throws java.lang.IllegalArgumentException;
-    method public android.net.sip.SipProfile.Builder setSendKeepAlive(boolean);
-  }
-
-  public interface SipRegistrationListener {
-    method public void onRegistering(String);
-    method public void onRegistrationDone(String, long);
-    method public void onRegistrationFailed(String, int, String);
-  }
-
-  public final class SipSession {
-    method public void answerCall(String, int);
-    method public void changeCall(String, int);
-    method public void endCall();
-    method public String getCallId();
-    method public String getLocalIp();
-    method public android.net.sip.SipProfile getLocalProfile();
-    method public android.net.sip.SipProfile getPeerProfile();
-    method public int getState();
-    method public boolean isInCall();
-    method public void makeCall(android.net.sip.SipProfile, String, int);
-    method public void register(int);
-    method public void setListener(android.net.sip.SipSession.Listener);
-    method public void unregister();
-  }
-
-  public static class SipSession.Listener {
-    ctor public SipSession.Listener();
-    method public void onCallBusy(android.net.sip.SipSession);
-    method public void onCallChangeFailed(android.net.sip.SipSession, int, String);
-    method public void onCallEnded(android.net.sip.SipSession);
-    method public void onCallEstablished(android.net.sip.SipSession, String);
-    method public void onCalling(android.net.sip.SipSession);
-    method public void onError(android.net.sip.SipSession, int, String);
-    method public void onRegistering(android.net.sip.SipSession);
-    method public void onRegistrationDone(android.net.sip.SipSession, int);
-    method public void onRegistrationFailed(android.net.sip.SipSession, int, String);
-    method public void onRegistrationTimeout(android.net.sip.SipSession);
-    method public void onRinging(android.net.sip.SipSession, android.net.sip.SipProfile, String);
-    method public void onRingingBack(android.net.sip.SipSession);
-  }
-
-  public static class SipSession.State {
-    method public static String toString(int);
-    field public static final int DEREGISTERING = 2; // 0x2
-    field public static final int INCOMING_CALL = 3; // 0x3
-    field public static final int INCOMING_CALL_ANSWERING = 4; // 0x4
-    field public static final int IN_CALL = 8; // 0x8
-    field public static final int NOT_DEFINED = 101; // 0x65
-    field public static final int OUTGOING_CALL = 5; // 0x5
-    field public static final int OUTGOING_CALL_CANCELING = 7; // 0x7
-    field public static final int OUTGOING_CALL_RING_BACK = 6; // 0x6
-    field public static final int PINGING = 9; // 0x9
-    field public static final int READY_TO_CALL = 0; // 0x0
-    field public static final int REGISTERING = 1; // 0x1
-  }
-
-}
-
-package android.nfc {
-
-  public class FormatException extends java.lang.Exception {
-    ctor public FormatException();
-    ctor public FormatException(String);
-    ctor public FormatException(String, Throwable);
-  }
-
-  public final class NdefMessage implements android.os.Parcelable {
-    ctor public NdefMessage(byte[]) throws android.nfc.FormatException;
-    ctor public NdefMessage(android.nfc.NdefRecord, android.nfc.NdefRecord...);
-    ctor public NdefMessage(android.nfc.NdefRecord[]);
-    method public int describeContents();
-    method public int getByteArrayLength();
-    method public android.nfc.NdefRecord[] getRecords();
-    method public byte[] toByteArray();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.nfc.NdefMessage> CREATOR;
-  }
-
-  public final class NdefRecord implements android.os.Parcelable {
-    ctor public NdefRecord(short, byte[], byte[], byte[]);
-    ctor @Deprecated public NdefRecord(byte[]) throws android.nfc.FormatException;
-    method public static android.nfc.NdefRecord createApplicationRecord(String);
-    method public static android.nfc.NdefRecord createExternal(String, String, byte[]);
-    method public static android.nfc.NdefRecord createMime(String, byte[]);
-    method public static android.nfc.NdefRecord createTextRecord(String, String);
-    method public static android.nfc.NdefRecord createUri(android.net.Uri);
-    method public static android.nfc.NdefRecord createUri(String);
-    method public int describeContents();
-    method public byte[] getId();
-    method public byte[] getPayload();
-    method public short getTnf();
-    method public byte[] getType();
-    method @Deprecated public byte[] toByteArray();
-    method public String toMimeType();
-    method public android.net.Uri toUri();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.nfc.NdefRecord> CREATOR;
-    field public static final byte[] RTD_ALTERNATIVE_CARRIER;
-    field public static final byte[] RTD_HANDOVER_CARRIER;
-    field public static final byte[] RTD_HANDOVER_REQUEST;
-    field public static final byte[] RTD_HANDOVER_SELECT;
-    field public static final byte[] RTD_SMART_POSTER;
-    field public static final byte[] RTD_TEXT;
-    field public static final byte[] RTD_URI;
-    field public static final short TNF_ABSOLUTE_URI = 3; // 0x3
-    field public static final short TNF_EMPTY = 0; // 0x0
-    field public static final short TNF_EXTERNAL_TYPE = 4; // 0x4
-    field public static final short TNF_MIME_MEDIA = 2; // 0x2
-    field public static final short TNF_UNCHANGED = 6; // 0x6
-    field public static final short TNF_UNKNOWN = 5; // 0x5
-    field public static final short TNF_WELL_KNOWN = 1; // 0x1
-  }
-
-  public final class NfcAdapter {
-    method public void disableForegroundDispatch(android.app.Activity);
-    method @Deprecated public void disableForegroundNdefPush(android.app.Activity);
-    method public void disableReaderMode(android.app.Activity);
-    method public void enableForegroundDispatch(android.app.Activity, android.app.PendingIntent, android.content.IntentFilter[], String[][]);
-    method @Deprecated public void enableForegroundNdefPush(android.app.Activity, android.nfc.NdefMessage);
-    method public void enableReaderMode(android.app.Activity, android.nfc.NfcAdapter.ReaderCallback, int, android.os.Bundle);
-    method public static android.nfc.NfcAdapter getDefaultAdapter(android.content.Context);
-    method public boolean ignore(android.nfc.Tag, int, android.nfc.NfcAdapter.OnTagRemovedListener, android.os.Handler);
-    method @Deprecated public boolean invokeBeam(android.app.Activity);
-    method public boolean isEnabled();
-    method @Deprecated public boolean isNdefPushEnabled();
-    method public boolean isSecureNfcEnabled();
-    method public boolean isSecureNfcSupported();
-    method @Deprecated public void setBeamPushUris(android.net.Uri[], android.app.Activity);
-    method @Deprecated public void setBeamPushUrisCallback(android.nfc.NfcAdapter.CreateBeamUrisCallback, android.app.Activity);
-    method @Deprecated public void setNdefPushMessage(android.nfc.NdefMessage, android.app.Activity, android.app.Activity...);
-    method @Deprecated public void setNdefPushMessageCallback(android.nfc.NfcAdapter.CreateNdefMessageCallback, android.app.Activity, android.app.Activity...);
-    method @Deprecated public void setOnNdefPushCompleteCallback(android.nfc.NfcAdapter.OnNdefPushCompleteCallback, android.app.Activity, android.app.Activity...);
-    field public static final String ACTION_ADAPTER_STATE_CHANGED = "android.nfc.action.ADAPTER_STATE_CHANGED";
-    field public static final String ACTION_NDEF_DISCOVERED = "android.nfc.action.NDEF_DISCOVERED";
-    field @RequiresPermission(android.Manifest.permission.NFC_PREFERRED_PAYMENT_INFO) public static final String ACTION_PREFERRED_PAYMENT_CHANGED = "android.nfc.action.PREFERRED_PAYMENT_CHANGED";
-    field public static final String ACTION_TAG_DISCOVERED = "android.nfc.action.TAG_DISCOVERED";
-    field public static final String ACTION_TECH_DISCOVERED = "android.nfc.action.TECH_DISCOVERED";
-    field @RequiresPermission(android.Manifest.permission.NFC_TRANSACTION_EVENT) public static final String ACTION_TRANSACTION_DETECTED = "android.nfc.action.TRANSACTION_DETECTED";
-    field public static final String EXTRA_ADAPTER_STATE = "android.nfc.extra.ADAPTER_STATE";
-    field public static final String EXTRA_AID = "android.nfc.extra.AID";
-    field public static final String EXTRA_DATA = "android.nfc.extra.DATA";
-    field public static final String EXTRA_ID = "android.nfc.extra.ID";
-    field public static final String EXTRA_NDEF_MESSAGES = "android.nfc.extra.NDEF_MESSAGES";
-    field public static final String EXTRA_PREFERRED_PAYMENT_CHANGED_REASON = "android.nfc.extra.PREFERRED_PAYMENT_CHANGED_REASON";
-    field public static final String EXTRA_READER_PRESENCE_CHECK_DELAY = "presence";
-    field public static final String EXTRA_SECURE_ELEMENT_NAME = "android.nfc.extra.SECURE_ELEMENT_NAME";
-    field public static final String EXTRA_TAG = "android.nfc.extra.TAG";
-    field public static final int FLAG_READER_NFC_A = 1; // 0x1
-    field public static final int FLAG_READER_NFC_B = 2; // 0x2
-    field public static final int FLAG_READER_NFC_BARCODE = 16; // 0x10
-    field public static final int FLAG_READER_NFC_F = 4; // 0x4
-    field public static final int FLAG_READER_NFC_V = 8; // 0x8
-    field public static final int FLAG_READER_NO_PLATFORM_SOUNDS = 256; // 0x100
-    field public static final int FLAG_READER_SKIP_NDEF_CHECK = 128; // 0x80
-    field public static final int PREFERRED_PAYMENT_CHANGED = 2; // 0x2
-    field public static final int PREFERRED_PAYMENT_LOADED = 1; // 0x1
-    field public static final int PREFERRED_PAYMENT_UPDATED = 3; // 0x3
-    field public static final int STATE_OFF = 1; // 0x1
-    field public static final int STATE_ON = 3; // 0x3
-    field public static final int STATE_TURNING_OFF = 4; // 0x4
-    field public static final int STATE_TURNING_ON = 2; // 0x2
-  }
-
-  @Deprecated public static interface NfcAdapter.CreateBeamUrisCallback {
-    method @Deprecated public android.net.Uri[] createBeamUris(android.nfc.NfcEvent);
-  }
-
-  @Deprecated public static interface NfcAdapter.CreateNdefMessageCallback {
-    method @Deprecated public android.nfc.NdefMessage createNdefMessage(android.nfc.NfcEvent);
-  }
-
-  @Deprecated public static interface NfcAdapter.OnNdefPushCompleteCallback {
-    method @Deprecated public void onNdefPushComplete(android.nfc.NfcEvent);
-  }
-
-  public static interface NfcAdapter.OnTagRemovedListener {
-    method public void onTagRemoved();
-  }
-
-  public static interface NfcAdapter.ReaderCallback {
-    method public void onTagDiscovered(android.nfc.Tag);
-  }
-
-  public final class NfcEvent {
-    field public final android.nfc.NfcAdapter nfcAdapter;
-    field public final int peerLlcpMajorVersion;
-    field public final int peerLlcpMinorVersion;
-  }
-
-  public final class NfcManager {
-    method public android.nfc.NfcAdapter getDefaultAdapter();
-  }
-
-  public final class Tag implements android.os.Parcelable {
-    method public int describeContents();
-    method public byte[] getId();
-    method public String[] getTechList();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.nfc.Tag> CREATOR;
-  }
-
-  public class TagLostException extends java.io.IOException {
-    ctor public TagLostException();
-    ctor public TagLostException(String);
-  }
-
-}
-
-package android.nfc.cardemulation {
-
-  public final class CardEmulation {
-    method public boolean categoryAllowsForegroundPreference(String);
-    method @Nullable @RequiresPermission(android.Manifest.permission.NFC_PREFERRED_PAYMENT_INFO) public java.util.List<java.lang.String> getAidsForPreferredPaymentService();
-    method public java.util.List<java.lang.String> getAidsForService(android.content.ComponentName, String);
-    method @Nullable @RequiresPermission(android.Manifest.permission.NFC_PREFERRED_PAYMENT_INFO) public CharSequence getDescriptionForPreferredPaymentService();
-    method public static android.nfc.cardemulation.CardEmulation getInstance(android.nfc.NfcAdapter);
-    method @Nullable @RequiresPermission(android.Manifest.permission.NFC_PREFERRED_PAYMENT_INFO) public String getRouteDestinationForPreferredPaymentService();
-    method public int getSelectionModeForCategory(String);
-    method public boolean isDefaultServiceForAid(android.content.ComponentName, String);
-    method public boolean isDefaultServiceForCategory(android.content.ComponentName, String);
-    method public boolean registerAidsForService(android.content.ComponentName, String, java.util.List<java.lang.String>);
-    method public boolean removeAidsForService(android.content.ComponentName, String);
-    method @NonNull @RequiresPermission(android.Manifest.permission.NFC) public boolean setOffHostForService(@NonNull android.content.ComponentName, @NonNull String);
-    method public boolean setPreferredService(android.app.Activity, android.content.ComponentName);
-    method public boolean supportsAidPrefixRegistration();
-    method @NonNull @RequiresPermission(android.Manifest.permission.NFC) public boolean unsetOffHostForService(@NonNull android.content.ComponentName);
-    method public boolean unsetPreferredService(android.app.Activity);
-    field public static final String ACTION_CHANGE_DEFAULT = "android.nfc.cardemulation.action.ACTION_CHANGE_DEFAULT";
-    field public static final String CATEGORY_OTHER = "other";
-    field public static final String CATEGORY_PAYMENT = "payment";
-    field public static final String EXTRA_CATEGORY = "category";
-    field public static final String EXTRA_SERVICE_COMPONENT = "component";
-    field public static final int SELECTION_MODE_ALWAYS_ASK = 1; // 0x1
-    field public static final int SELECTION_MODE_ASK_IF_CONFLICT = 2; // 0x2
-    field public static final int SELECTION_MODE_PREFER_DEFAULT = 0; // 0x0
-  }
-
-  public abstract class HostApduService extends android.app.Service {
-    ctor public HostApduService();
-    method public final void notifyUnhandled();
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method public abstract void onDeactivated(int);
-    method public abstract byte[] processCommandApdu(byte[], android.os.Bundle);
-    method public final void sendResponseApdu(byte[]);
-    field public static final int DEACTIVATION_DESELECTED = 1; // 0x1
-    field public static final int DEACTIVATION_LINK_LOSS = 0; // 0x0
-    field public static final String SERVICE_INTERFACE = "android.nfc.cardemulation.action.HOST_APDU_SERVICE";
-    field public static final String SERVICE_META_DATA = "android.nfc.cardemulation.host_apdu_service";
-  }
-
-  public abstract class HostNfcFService extends android.app.Service {
-    ctor public HostNfcFService();
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method public abstract void onDeactivated(int);
-    method public abstract byte[] processNfcFPacket(byte[], android.os.Bundle);
-    method public final void sendResponsePacket(byte[]);
-    field public static final int DEACTIVATION_LINK_LOSS = 0; // 0x0
-    field public static final String SERVICE_INTERFACE = "android.nfc.cardemulation.action.HOST_NFCF_SERVICE";
-    field public static final String SERVICE_META_DATA = "android.nfc.cardemulation.host_nfcf_service";
-  }
-
-  public final class NfcFCardEmulation {
-    method public boolean disableService(android.app.Activity) throws java.lang.RuntimeException;
-    method public boolean enableService(android.app.Activity, android.content.ComponentName) throws java.lang.RuntimeException;
-    method public static android.nfc.cardemulation.NfcFCardEmulation getInstance(android.nfc.NfcAdapter);
-    method public String getNfcid2ForService(android.content.ComponentName) throws java.lang.RuntimeException;
-    method public String getSystemCodeForService(android.content.ComponentName) throws java.lang.RuntimeException;
-    method public boolean registerSystemCodeForService(android.content.ComponentName, String) throws java.lang.RuntimeException;
-    method public boolean setNfcid2ForService(android.content.ComponentName, String) throws java.lang.RuntimeException;
-    method public boolean unregisterSystemCodeForService(android.content.ComponentName) throws java.lang.RuntimeException;
-  }
-
-  public abstract class OffHostApduService extends android.app.Service {
-    ctor public OffHostApduService();
-    field public static final String SERVICE_INTERFACE = "android.nfc.cardemulation.action.OFF_HOST_APDU_SERVICE";
-    field public static final String SERVICE_META_DATA = "android.nfc.cardemulation.off_host_apdu_service";
-  }
-
-}
-
-package android.nfc.tech {
-
-  public final class IsoDep implements android.nfc.tech.TagTechnology {
-    method public void close() throws java.io.IOException;
-    method public void connect() throws java.io.IOException;
-    method public static android.nfc.tech.IsoDep get(android.nfc.Tag);
-    method public byte[] getHiLayerResponse();
-    method public byte[] getHistoricalBytes();
-    method public int getMaxTransceiveLength();
-    method public android.nfc.Tag getTag();
-    method public int getTimeout();
-    method public boolean isConnected();
-    method public boolean isExtendedLengthApduSupported();
-    method public void setTimeout(int);
-    method public byte[] transceive(byte[]) throws java.io.IOException;
-  }
-
-  public final class MifareClassic implements android.nfc.tech.TagTechnology {
-    method public boolean authenticateSectorWithKeyA(int, byte[]) throws java.io.IOException;
-    method public boolean authenticateSectorWithKeyB(int, byte[]) throws java.io.IOException;
-    method public int blockToSector(int);
-    method public void close() throws java.io.IOException;
-    method public void connect() throws java.io.IOException;
-    method public void decrement(int, int) throws java.io.IOException;
-    method public static android.nfc.tech.MifareClassic get(android.nfc.Tag);
-    method public int getBlockCount();
-    method public int getBlockCountInSector(int);
-    method public int getMaxTransceiveLength();
-    method public int getSectorCount();
-    method public int getSize();
-    method public android.nfc.Tag getTag();
-    method public int getTimeout();
-    method public int getType();
-    method public void increment(int, int) throws java.io.IOException;
-    method public boolean isConnected();
-    method public byte[] readBlock(int) throws java.io.IOException;
-    method public void restore(int) throws java.io.IOException;
-    method public int sectorToBlock(int);
-    method public void setTimeout(int);
-    method public byte[] transceive(byte[]) throws java.io.IOException;
-    method public void transfer(int) throws java.io.IOException;
-    method public void writeBlock(int, byte[]) throws java.io.IOException;
-    field public static final int BLOCK_SIZE = 16; // 0x10
-    field public static final byte[] KEY_DEFAULT;
-    field public static final byte[] KEY_MIFARE_APPLICATION_DIRECTORY;
-    field public static final byte[] KEY_NFC_FORUM;
-    field public static final int SIZE_1K = 1024; // 0x400
-    field public static final int SIZE_2K = 2048; // 0x800
-    field public static final int SIZE_4K = 4096; // 0x1000
-    field public static final int SIZE_MINI = 320; // 0x140
-    field public static final int TYPE_CLASSIC = 0; // 0x0
-    field public static final int TYPE_PLUS = 1; // 0x1
-    field public static final int TYPE_PRO = 2; // 0x2
-    field public static final int TYPE_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public final class MifareUltralight implements android.nfc.tech.TagTechnology {
-    method public void close() throws java.io.IOException;
-    method public void connect() throws java.io.IOException;
-    method public static android.nfc.tech.MifareUltralight get(android.nfc.Tag);
-    method public int getMaxTransceiveLength();
-    method public android.nfc.Tag getTag();
-    method public int getTimeout();
-    method public int getType();
-    method public boolean isConnected();
-    method public byte[] readPages(int) throws java.io.IOException;
-    method public void setTimeout(int);
-    method public byte[] transceive(byte[]) throws java.io.IOException;
-    method public void writePage(int, byte[]) throws java.io.IOException;
-    field public static final int PAGE_SIZE = 4; // 0x4
-    field public static final int TYPE_ULTRALIGHT = 1; // 0x1
-    field public static final int TYPE_ULTRALIGHT_C = 2; // 0x2
-    field public static final int TYPE_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public final class Ndef implements android.nfc.tech.TagTechnology {
-    method public boolean canMakeReadOnly();
-    method public void close() throws java.io.IOException;
-    method public void connect() throws java.io.IOException;
-    method public static android.nfc.tech.Ndef get(android.nfc.Tag);
-    method public android.nfc.NdefMessage getCachedNdefMessage();
-    method public int getMaxSize();
-    method public android.nfc.NdefMessage getNdefMessage() throws android.nfc.FormatException, java.io.IOException;
-    method public android.nfc.Tag getTag();
-    method public String getType();
-    method public boolean isConnected();
-    method public boolean isWritable();
-    method public boolean makeReadOnly() throws java.io.IOException;
-    method public void writeNdefMessage(android.nfc.NdefMessage) throws android.nfc.FormatException, java.io.IOException;
-    field public static final String MIFARE_CLASSIC = "com.nxp.ndef.mifareclassic";
-    field public static final String NFC_FORUM_TYPE_1 = "org.nfcforum.ndef.type1";
-    field public static final String NFC_FORUM_TYPE_2 = "org.nfcforum.ndef.type2";
-    field public static final String NFC_FORUM_TYPE_3 = "org.nfcforum.ndef.type3";
-    field public static final String NFC_FORUM_TYPE_4 = "org.nfcforum.ndef.type4";
-  }
-
-  public final class NdefFormatable implements android.nfc.tech.TagTechnology {
-    method public void close() throws java.io.IOException;
-    method public void connect() throws java.io.IOException;
-    method public void format(android.nfc.NdefMessage) throws android.nfc.FormatException, java.io.IOException;
-    method public void formatReadOnly(android.nfc.NdefMessage) throws android.nfc.FormatException, java.io.IOException;
-    method public static android.nfc.tech.NdefFormatable get(android.nfc.Tag);
-    method public android.nfc.Tag getTag();
-    method public boolean isConnected();
-  }
-
-  public final class NfcA implements android.nfc.tech.TagTechnology {
-    method public void close() throws java.io.IOException;
-    method public void connect() throws java.io.IOException;
-    method public static android.nfc.tech.NfcA get(android.nfc.Tag);
-    method public byte[] getAtqa();
-    method public int getMaxTransceiveLength();
-    method public short getSak();
-    method public android.nfc.Tag getTag();
-    method public int getTimeout();
-    method public boolean isConnected();
-    method public void setTimeout(int);
-    method public byte[] transceive(byte[]) throws java.io.IOException;
-  }
-
-  public final class NfcB implements android.nfc.tech.TagTechnology {
-    method public void close() throws java.io.IOException;
-    method public void connect() throws java.io.IOException;
-    method public static android.nfc.tech.NfcB get(android.nfc.Tag);
-    method public byte[] getApplicationData();
-    method public int getMaxTransceiveLength();
-    method public byte[] getProtocolInfo();
-    method public android.nfc.Tag getTag();
-    method public boolean isConnected();
-    method public byte[] transceive(byte[]) throws java.io.IOException;
-  }
-
-  public final class NfcBarcode implements android.nfc.tech.TagTechnology {
-    method public void close() throws java.io.IOException;
-    method public void connect() throws java.io.IOException;
-    method public static android.nfc.tech.NfcBarcode get(android.nfc.Tag);
-    method public byte[] getBarcode();
-    method public android.nfc.Tag getTag();
-    method public int getType();
-    method public boolean isConnected();
-    field public static final int TYPE_KOVIO = 1; // 0x1
-    field public static final int TYPE_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public final class NfcF implements android.nfc.tech.TagTechnology {
-    method public void close() throws java.io.IOException;
-    method public void connect() throws java.io.IOException;
-    method public static android.nfc.tech.NfcF get(android.nfc.Tag);
-    method public byte[] getManufacturer();
-    method public int getMaxTransceiveLength();
-    method public byte[] getSystemCode();
-    method public android.nfc.Tag getTag();
-    method public int getTimeout();
-    method public boolean isConnected();
-    method public void setTimeout(int);
-    method public byte[] transceive(byte[]) throws java.io.IOException;
-  }
-
-  public final class NfcV implements android.nfc.tech.TagTechnology {
-    method public void close() throws java.io.IOException;
-    method public void connect() throws java.io.IOException;
-    method public static android.nfc.tech.NfcV get(android.nfc.Tag);
-    method public byte getDsfId();
-    method public int getMaxTransceiveLength();
-    method public byte getResponseFlags();
-    method public android.nfc.Tag getTag();
-    method public boolean isConnected();
-    method public byte[] transceive(byte[]) throws java.io.IOException;
-  }
-
-  public interface TagTechnology extends java.io.Closeable {
-    method public void connect() throws java.io.IOException;
-    method public android.nfc.Tag getTag();
-    method public boolean isConnected();
-  }
-
-}
-
-package android.opengl {
-
-  public class EGL14 {
-    ctor public EGL14();
-    method public static boolean eglBindAPI(int);
-    method public static boolean eglBindTexImage(android.opengl.EGLDisplay, android.opengl.EGLSurface, int);
-    method public static boolean eglChooseConfig(android.opengl.EGLDisplay, int[], int, android.opengl.EGLConfig[], int, int, int[], int);
-    method public static boolean eglCopyBuffers(android.opengl.EGLDisplay, android.opengl.EGLSurface, int);
-    method public static android.opengl.EGLContext eglCreateContext(android.opengl.EGLDisplay, android.opengl.EGLConfig, android.opengl.EGLContext, int[], int);
-    method public static android.opengl.EGLSurface eglCreatePbufferFromClientBuffer(android.opengl.EGLDisplay, int, int, android.opengl.EGLConfig, int[], int);
-    method public static android.opengl.EGLSurface eglCreatePbufferSurface(android.opengl.EGLDisplay, android.opengl.EGLConfig, int[], int);
-    method @Deprecated public static android.opengl.EGLSurface eglCreatePixmapSurface(android.opengl.EGLDisplay, android.opengl.EGLConfig, int, int[], int);
-    method public static android.opengl.EGLSurface eglCreateWindowSurface(android.opengl.EGLDisplay, android.opengl.EGLConfig, Object, int[], int);
-    method public static boolean eglDestroyContext(android.opengl.EGLDisplay, android.opengl.EGLContext);
-    method public static boolean eglDestroySurface(android.opengl.EGLDisplay, android.opengl.EGLSurface);
-    method public static boolean eglGetConfigAttrib(android.opengl.EGLDisplay, android.opengl.EGLConfig, int, int[], int);
-    method public static boolean eglGetConfigs(android.opengl.EGLDisplay, android.opengl.EGLConfig[], int, int, int[], int);
-    method public static android.opengl.EGLContext eglGetCurrentContext();
-    method public static android.opengl.EGLDisplay eglGetCurrentDisplay();
-    method public static android.opengl.EGLSurface eglGetCurrentSurface(int);
-    method public static android.opengl.EGLDisplay eglGetDisplay(int);
-    method public static int eglGetError();
-    method public static boolean eglInitialize(android.opengl.EGLDisplay, int[], int, int[], int);
-    method public static boolean eglMakeCurrent(android.opengl.EGLDisplay, android.opengl.EGLSurface, android.opengl.EGLSurface, android.opengl.EGLContext);
-    method public static int eglQueryAPI();
-    method public static boolean eglQueryContext(android.opengl.EGLDisplay, android.opengl.EGLContext, int, int[], int);
-    method public static String eglQueryString(android.opengl.EGLDisplay, int);
-    method public static boolean eglQuerySurface(android.opengl.EGLDisplay, android.opengl.EGLSurface, int, int[], int);
-    method public static boolean eglReleaseTexImage(android.opengl.EGLDisplay, android.opengl.EGLSurface, int);
-    method public static boolean eglReleaseThread();
-    method public static boolean eglSurfaceAttrib(android.opengl.EGLDisplay, android.opengl.EGLSurface, int, int);
-    method public static boolean eglSwapBuffers(android.opengl.EGLDisplay, android.opengl.EGLSurface);
-    method public static boolean eglSwapInterval(android.opengl.EGLDisplay, int);
-    method public static boolean eglTerminate(android.opengl.EGLDisplay);
-    method public static boolean eglWaitClient();
-    method public static boolean eglWaitGL();
-    method public static boolean eglWaitNative(int);
-    field public static final int EGL_ALPHA_MASK_SIZE = 12350; // 0x303e
-    field public static final int EGL_ALPHA_SIZE = 12321; // 0x3021
-    field public static final int EGL_BACK_BUFFER = 12420; // 0x3084
-    field public static final int EGL_BAD_ACCESS = 12290; // 0x3002
-    field public static final int EGL_BAD_ALLOC = 12291; // 0x3003
-    field public static final int EGL_BAD_ATTRIBUTE = 12292; // 0x3004
-    field public static final int EGL_BAD_CONFIG = 12293; // 0x3005
-    field public static final int EGL_BAD_CONTEXT = 12294; // 0x3006
-    field public static final int EGL_BAD_CURRENT_SURFACE = 12295; // 0x3007
-    field public static final int EGL_BAD_DISPLAY = 12296; // 0x3008
-    field public static final int EGL_BAD_MATCH = 12297; // 0x3009
-    field public static final int EGL_BAD_NATIVE_PIXMAP = 12298; // 0x300a
-    field public static final int EGL_BAD_NATIVE_WINDOW = 12299; // 0x300b
-    field public static final int EGL_BAD_PARAMETER = 12300; // 0x300c
-    field public static final int EGL_BAD_SURFACE = 12301; // 0x300d
-    field public static final int EGL_BIND_TO_TEXTURE_RGB = 12345; // 0x3039
-    field public static final int EGL_BIND_TO_TEXTURE_RGBA = 12346; // 0x303a
-    field public static final int EGL_BLUE_SIZE = 12322; // 0x3022
-    field public static final int EGL_BUFFER_DESTROYED = 12437; // 0x3095
-    field public static final int EGL_BUFFER_PRESERVED = 12436; // 0x3094
-    field public static final int EGL_BUFFER_SIZE = 12320; // 0x3020
-    field public static final int EGL_CLIENT_APIS = 12429; // 0x308d
-    field public static final int EGL_COLOR_BUFFER_TYPE = 12351; // 0x303f
-    field public static final int EGL_CONFIG_CAVEAT = 12327; // 0x3027
-    field public static final int EGL_CONFIG_ID = 12328; // 0x3028
-    field public static final int EGL_CONFORMANT = 12354; // 0x3042
-    field public static final int EGL_CONTEXT_CLIENT_TYPE = 12439; // 0x3097
-    field public static final int EGL_CONTEXT_CLIENT_VERSION = 12440; // 0x3098
-    field public static final int EGL_CONTEXT_LOST = 12302; // 0x300e
-    field public static final int EGL_CORE_NATIVE_ENGINE = 12379; // 0x305b
-    field public static final int EGL_DEFAULT_DISPLAY = 0; // 0x0
-    field public static final int EGL_DEPTH_SIZE = 12325; // 0x3025
-    field public static final int EGL_DISPLAY_SCALING = 10000; // 0x2710
-    field public static final int EGL_DRAW = 12377; // 0x3059
-    field public static final int EGL_EXTENSIONS = 12373; // 0x3055
-    field public static final int EGL_FALSE = 0; // 0x0
-    field public static final int EGL_GREEN_SIZE = 12323; // 0x3023
-    field public static final int EGL_HEIGHT = 12374; // 0x3056
-    field public static final int EGL_HORIZONTAL_RESOLUTION = 12432; // 0x3090
-    field public static final int EGL_LARGEST_PBUFFER = 12376; // 0x3058
-    field public static final int EGL_LEVEL = 12329; // 0x3029
-    field public static final int EGL_LUMINANCE_BUFFER = 12431; // 0x308f
-    field public static final int EGL_LUMINANCE_SIZE = 12349; // 0x303d
-    field public static final int EGL_MATCH_NATIVE_PIXMAP = 12353; // 0x3041
-    field public static final int EGL_MAX_PBUFFER_HEIGHT = 12330; // 0x302a
-    field public static final int EGL_MAX_PBUFFER_PIXELS = 12331; // 0x302b
-    field public static final int EGL_MAX_PBUFFER_WIDTH = 12332; // 0x302c
-    field public static final int EGL_MAX_SWAP_INTERVAL = 12348; // 0x303c
-    field public static final int EGL_MIN_SWAP_INTERVAL = 12347; // 0x303b
-    field public static final int EGL_MIPMAP_LEVEL = 12419; // 0x3083
-    field public static final int EGL_MIPMAP_TEXTURE = 12418; // 0x3082
-    field public static final int EGL_MULTISAMPLE_RESOLVE = 12441; // 0x3099
-    field public static final int EGL_MULTISAMPLE_RESOLVE_BOX = 12443; // 0x309b
-    field public static final int EGL_MULTISAMPLE_RESOLVE_BOX_BIT = 512; // 0x200
-    field public static final int EGL_MULTISAMPLE_RESOLVE_DEFAULT = 12442; // 0x309a
-    field public static final int EGL_NATIVE_RENDERABLE = 12333; // 0x302d
-    field public static final int EGL_NATIVE_VISUAL_ID = 12334; // 0x302e
-    field public static final int EGL_NATIVE_VISUAL_TYPE = 12335; // 0x302f
-    field public static final int EGL_NONE = 12344; // 0x3038
-    field public static final int EGL_NON_CONFORMANT_CONFIG = 12369; // 0x3051
-    field public static final int EGL_NOT_INITIALIZED = 12289; // 0x3001
-    field public static android.opengl.EGLContext EGL_NO_CONTEXT;
-    field public static android.opengl.EGLDisplay EGL_NO_DISPLAY;
-    field public static android.opengl.EGLSurface EGL_NO_SURFACE;
-    field public static final int EGL_NO_TEXTURE = 12380; // 0x305c
-    field public static final int EGL_OPENGL_API = 12450; // 0x30a2
-    field public static final int EGL_OPENGL_BIT = 8; // 0x8
-    field public static final int EGL_OPENGL_ES2_BIT = 4; // 0x4
-    field public static final int EGL_OPENGL_ES_API = 12448; // 0x30a0
-    field public static final int EGL_OPENGL_ES_BIT = 1; // 0x1
-    field public static final int EGL_OPENVG_API = 12449; // 0x30a1
-    field public static final int EGL_OPENVG_BIT = 2; // 0x2
-    field public static final int EGL_OPENVG_IMAGE = 12438; // 0x3096
-    field public static final int EGL_PBUFFER_BIT = 1; // 0x1
-    field public static final int EGL_PIXEL_ASPECT_RATIO = 12434; // 0x3092
-    field public static final int EGL_PIXMAP_BIT = 2; // 0x2
-    field public static final int EGL_READ = 12378; // 0x305a
-    field public static final int EGL_RED_SIZE = 12324; // 0x3024
-    field public static final int EGL_RENDERABLE_TYPE = 12352; // 0x3040
-    field public static final int EGL_RENDER_BUFFER = 12422; // 0x3086
-    field public static final int EGL_RGB_BUFFER = 12430; // 0x308e
-    field public static final int EGL_SAMPLES = 12337; // 0x3031
-    field public static final int EGL_SAMPLE_BUFFERS = 12338; // 0x3032
-    field public static final int EGL_SINGLE_BUFFER = 12421; // 0x3085
-    field public static final int EGL_SLOW_CONFIG = 12368; // 0x3050
-    field public static final int EGL_STENCIL_SIZE = 12326; // 0x3026
-    field public static final int EGL_SUCCESS = 12288; // 0x3000
-    field public static final int EGL_SURFACE_TYPE = 12339; // 0x3033
-    field public static final int EGL_SWAP_BEHAVIOR = 12435; // 0x3093
-    field public static final int EGL_SWAP_BEHAVIOR_PRESERVED_BIT = 1024; // 0x400
-    field public static final int EGL_TEXTURE_2D = 12383; // 0x305f
-    field public static final int EGL_TEXTURE_FORMAT = 12416; // 0x3080
-    field public static final int EGL_TEXTURE_RGB = 12381; // 0x305d
-    field public static final int EGL_TEXTURE_RGBA = 12382; // 0x305e
-    field public static final int EGL_TEXTURE_TARGET = 12417; // 0x3081
-    field public static final int EGL_TRANSPARENT_BLUE_VALUE = 12341; // 0x3035
-    field public static final int EGL_TRANSPARENT_GREEN_VALUE = 12342; // 0x3036
-    field public static final int EGL_TRANSPARENT_RED_VALUE = 12343; // 0x3037
-    field public static final int EGL_TRANSPARENT_RGB = 12370; // 0x3052
-    field public static final int EGL_TRANSPARENT_TYPE = 12340; // 0x3034
-    field public static final int EGL_TRUE = 1; // 0x1
-    field public static final int EGL_VENDOR = 12371; // 0x3053
-    field public static final int EGL_VERSION = 12372; // 0x3054
-    field public static final int EGL_VERTICAL_RESOLUTION = 12433; // 0x3091
-    field public static final int EGL_VG_ALPHA_FORMAT = 12424; // 0x3088
-    field public static final int EGL_VG_ALPHA_FORMAT_NONPRE = 12427; // 0x308b
-    field public static final int EGL_VG_ALPHA_FORMAT_PRE = 12428; // 0x308c
-    field public static final int EGL_VG_ALPHA_FORMAT_PRE_BIT = 64; // 0x40
-    field public static final int EGL_VG_COLORSPACE = 12423; // 0x3087
-    field public static final int EGL_VG_COLORSPACE_LINEAR = 12426; // 0x308a
-    field public static final int EGL_VG_COLORSPACE_LINEAR_BIT = 32; // 0x20
-    field public static final int EGL_VG_COLORSPACE_sRGB = 12425; // 0x3089
-    field public static final int EGL_WIDTH = 12375; // 0x3057
-    field public static final int EGL_WINDOW_BIT = 4; // 0x4
-  }
-
-  public final class EGL15 {
-    method public static int eglClientWaitSync(android.opengl.EGLDisplay, android.opengl.EGLSync, int, long);
-    method public static android.opengl.EGLImage eglCreateImage(android.opengl.EGLDisplay, android.opengl.EGLContext, int, long, long[], int);
-    method public static android.opengl.EGLSurface eglCreatePlatformPixmapSurface(android.opengl.EGLDisplay, android.opengl.EGLConfig, java.nio.Buffer, long[], int);
-    method public static android.opengl.EGLSurface eglCreatePlatformWindowSurface(android.opengl.EGLDisplay, android.opengl.EGLConfig, java.nio.Buffer, long[], int);
-    method public static android.opengl.EGLSync eglCreateSync(android.opengl.EGLDisplay, int, long[], int);
-    method public static boolean eglDestroyImage(android.opengl.EGLDisplay, android.opengl.EGLImage);
-    method public static boolean eglDestroySync(android.opengl.EGLDisplay, android.opengl.EGLSync);
-    method public static android.opengl.EGLDisplay eglGetPlatformDisplay(int, long, long[], int);
-    method public static boolean eglGetSyncAttrib(android.opengl.EGLDisplay, android.opengl.EGLSync, int, long[], int);
-    method public static boolean eglWaitSync(android.opengl.EGLDisplay, android.opengl.EGLSync, int);
-    field public static final int EGL_CL_EVENT_HANDLE = 12444; // 0x309c
-    field public static final int EGL_CONDITION_SATISFIED = 12534; // 0x30f6
-    field public static final int EGL_CONTEXT_MAJOR_VERSION = 12440; // 0x3098
-    field public static final int EGL_CONTEXT_MINOR_VERSION = 12539; // 0x30fb
-    field public static final int EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT = 2; // 0x2
-    field public static final int EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT = 1; // 0x1
-    field public static final int EGL_CONTEXT_OPENGL_DEBUG = 12720; // 0x31b0
-    field public static final int EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE = 12721; // 0x31b1
-    field public static final int EGL_CONTEXT_OPENGL_PROFILE_MASK = 12541; // 0x30fd
-    field public static final int EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY = 12733; // 0x31bd
-    field public static final int EGL_CONTEXT_OPENGL_ROBUST_ACCESS = 12722; // 0x31b2
-    field public static final long EGL_FOREVER = -1L; // 0xffffffffffffffffL
-    field public static final int EGL_GL_COLORSPACE = 12445; // 0x309d
-    field public static final int EGL_GL_COLORSPACE_LINEAR = 12426; // 0x308a
-    field public static final int EGL_GL_COLORSPACE_SRGB = 12425; // 0x3089
-    field public static final int EGL_GL_RENDERBUFFER = 12473; // 0x30b9
-    field public static final int EGL_GL_TEXTURE_2D = 12465; // 0x30b1
-    field public static final int EGL_GL_TEXTURE_3D = 12466; // 0x30b2
-    field public static final int EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 12468; // 0x30b4
-    field public static final int EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 12470; // 0x30b6
-    field public static final int EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 12472; // 0x30b8
-    field public static final int EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X = 12467; // 0x30b3
-    field public static final int EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 12469; // 0x30b5
-    field public static final int EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 12471; // 0x30b7
-    field public static final int EGL_GL_TEXTURE_LEVEL = 12476; // 0x30bc
-    field public static final int EGL_GL_TEXTURE_ZOFFSET = 12477; // 0x30bd
-    field public static final int EGL_IMAGE_PRESERVED = 12498; // 0x30d2
-    field public static final int EGL_LOSE_CONTEXT_ON_RESET = 12735; // 0x31bf
-    field public static final android.opengl.EGLContext EGL_NO_CONTEXT;
-    field public static final android.opengl.EGLDisplay EGL_NO_DISPLAY;
-    field public static final android.opengl.EGLImage EGL_NO_IMAGE;
-    field public static final int EGL_NO_RESET_NOTIFICATION = 12734; // 0x31be
-    field public static final android.opengl.EGLSurface EGL_NO_SURFACE;
-    field public static final android.opengl.EGLSync EGL_NO_SYNC;
-    field public static final int EGL_OPENGL_ES3_BIT = 64; // 0x40
-    field public static final int EGL_PLATFORM_ANDROID_KHR = 12609; // 0x3141
-    field public static final int EGL_SIGNALED = 12530; // 0x30f2
-    field public static final int EGL_SYNC_CL_EVENT = 12542; // 0x30fe
-    field public static final int EGL_SYNC_CL_EVENT_COMPLETE = 12543; // 0x30ff
-    field public static final int EGL_SYNC_CONDITION = 12536; // 0x30f8
-    field public static final int EGL_SYNC_FENCE = 12537; // 0x30f9
-    field public static final int EGL_SYNC_FLUSH_COMMANDS_BIT = 1; // 0x1
-    field public static final int EGL_SYNC_PRIOR_COMMANDS_COMPLETE = 12528; // 0x30f0
-    field public static final int EGL_SYNC_STATUS = 12529; // 0x30f1
-    field public static final int EGL_SYNC_TYPE = 12535; // 0x30f7
-    field public static final int EGL_TIMEOUT_EXPIRED = 12533; // 0x30f5
-    field public static final int EGL_UNSIGNALED = 12531; // 0x30f3
-  }
-
-  public class EGLConfig extends android.opengl.EGLObjectHandle {
-  }
-
-  public class EGLContext extends android.opengl.EGLObjectHandle {
-  }
-
-  public class EGLDisplay extends android.opengl.EGLObjectHandle {
-  }
-
-  public class EGLExt {
-    ctor public EGLExt();
-    method public static boolean eglPresentationTimeANDROID(android.opengl.EGLDisplay, android.opengl.EGLSurface, long);
-    field public static final int EGL_CONTEXT_FLAGS_KHR = 12540; // 0x30fc
-    field public static final int EGL_CONTEXT_MAJOR_VERSION_KHR = 12440; // 0x3098
-    field public static final int EGL_CONTEXT_MINOR_VERSION_KHR = 12539; // 0x30fb
-    field public static final int EGL_OPENGL_ES3_BIT_KHR = 64; // 0x40
-    field public static final int EGL_RECORDABLE_ANDROID = 12610; // 0x3142
-  }
-
-  public class EGLImage extends android.opengl.EGLObjectHandle {
-  }
-
-  public abstract class EGLObjectHandle {
-    ctor @Deprecated protected EGLObjectHandle(int);
-    ctor protected EGLObjectHandle(long);
-    method @Deprecated public int getHandle();
-    method public long getNativeHandle();
-  }
-
-  public class EGLSurface extends android.opengl.EGLObjectHandle {
-  }
-
-  public class EGLSync extends android.opengl.EGLObjectHandle {
-  }
-
-  public class ETC1 {
-    ctor public ETC1();
-    method public static void decodeBlock(java.nio.Buffer, java.nio.Buffer);
-    method public static void decodeImage(java.nio.Buffer, java.nio.Buffer, int, int, int, int);
-    method public static void encodeBlock(java.nio.Buffer, int, java.nio.Buffer);
-    method public static void encodeImage(java.nio.Buffer, int, int, int, int, java.nio.Buffer);
-    method public static void formatHeader(java.nio.Buffer, int, int);
-    method public static int getEncodedDataSize(int, int);
-    method public static int getHeight(java.nio.Buffer);
-    method public static int getWidth(java.nio.Buffer);
-    method public static boolean isValid(java.nio.Buffer);
-    field public static final int DECODED_BLOCK_SIZE = 48; // 0x30
-    field public static final int ENCODED_BLOCK_SIZE = 8; // 0x8
-    field public static final int ETC1_RGB8_OES = 36196; // 0x8d64
-    field public static final int ETC_PKM_HEADER_SIZE = 16; // 0x10
-  }
-
-  public class ETC1Util {
-    ctor public ETC1Util();
-    method public static android.opengl.ETC1Util.ETC1Texture compressTexture(java.nio.Buffer, int, int, int, int);
-    method public static android.opengl.ETC1Util.ETC1Texture createTexture(java.io.InputStream) throws java.io.IOException;
-    method public static boolean isETC1Supported();
-    method public static void loadTexture(int, int, int, int, int, java.io.InputStream) throws java.io.IOException;
-    method public static void loadTexture(int, int, int, int, int, android.opengl.ETC1Util.ETC1Texture);
-    method public static void writeTexture(android.opengl.ETC1Util.ETC1Texture, java.io.OutputStream) throws java.io.IOException;
-  }
-
-  public static class ETC1Util.ETC1Texture {
-    ctor public ETC1Util.ETC1Texture(int, int, java.nio.ByteBuffer);
-    method public java.nio.ByteBuffer getData();
-    method public int getHeight();
-    method public int getWidth();
-  }
-
-  public class GLDebugHelper {
-    ctor public GLDebugHelper();
-    method public static javax.microedition.khronos.opengles.GL wrap(javax.microedition.khronos.opengles.GL, int, java.io.Writer);
-    method public static javax.microedition.khronos.egl.EGL wrap(javax.microedition.khronos.egl.EGL, int, java.io.Writer);
-    field public static final int CONFIG_CHECK_GL_ERROR = 1; // 0x1
-    field public static final int CONFIG_CHECK_THREAD = 2; // 0x2
-    field public static final int CONFIG_LOG_ARGUMENT_NAMES = 4; // 0x4
-    field public static final int ERROR_WRONG_THREAD = 28672; // 0x7000
-  }
-
-  public class GLES10 {
-    ctor public GLES10();
-    method public static void glActiveTexture(int);
-    method public static void glAlphaFunc(int, float);
-    method public static void glAlphaFuncx(int, int);
-    method public static void glBindTexture(int, int);
-    method public static void glBlendFunc(int, int);
-    method public static void glClear(int);
-    method public static void glClearColor(float, float, float, float);
-    method public static void glClearColorx(int, int, int, int);
-    method public static void glClearDepthf(float);
-    method public static void glClearDepthx(int);
-    method public static void glClearStencil(int);
-    method public static void glClientActiveTexture(int);
-    method public static void glColor4f(float, float, float, float);
-    method public static void glColor4x(int, int, int, int);
-    method public static void glColorMask(boolean, boolean, boolean, boolean);
-    method public static void glColorPointer(int, int, int, java.nio.Buffer);
-    method public static void glCompressedTexImage2D(int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glCompressedTexSubImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glCopyTexImage2D(int, int, int, int, int, int, int, int);
-    method public static void glCopyTexSubImage2D(int, int, int, int, int, int, int, int);
-    method public static void glCullFace(int);
-    method public static void glDeleteTextures(int, int[], int);
-    method public static void glDeleteTextures(int, java.nio.IntBuffer);
-    method public static void glDepthFunc(int);
-    method public static void glDepthMask(boolean);
-    method public static void glDepthRangef(float, float);
-    method public static void glDepthRangex(int, int);
-    method public static void glDisable(int);
-    method public static void glDisableClientState(int);
-    method public static void glDrawArrays(int, int, int);
-    method public static void glDrawElements(int, int, int, java.nio.Buffer);
-    method public static void glEnable(int);
-    method public static void glEnableClientState(int);
-    method public static void glFinish();
-    method public static void glFlush();
-    method public static void glFogf(int, float);
-    method public static void glFogfv(int, float[], int);
-    method public static void glFogfv(int, java.nio.FloatBuffer);
-    method public static void glFogx(int, int);
-    method public static void glFogxv(int, int[], int);
-    method public static void glFogxv(int, java.nio.IntBuffer);
-    method public static void glFrontFace(int);
-    method public static void glFrustumf(float, float, float, float, float, float);
-    method public static void glFrustumx(int, int, int, int, int, int);
-    method public static void glGenTextures(int, int[], int);
-    method public static void glGenTextures(int, java.nio.IntBuffer);
-    method public static int glGetError();
-    method public static void glGetIntegerv(int, int[], int);
-    method public static void glGetIntegerv(int, java.nio.IntBuffer);
-    method public static String glGetString(int);
-    method public static void glHint(int, int);
-    method public static void glLightModelf(int, float);
-    method public static void glLightModelfv(int, float[], int);
-    method public static void glLightModelfv(int, java.nio.FloatBuffer);
-    method public static void glLightModelx(int, int);
-    method public static void glLightModelxv(int, int[], int);
-    method public static void glLightModelxv(int, java.nio.IntBuffer);
-    method public static void glLightf(int, int, float);
-    method public static void glLightfv(int, int, float[], int);
-    method public static void glLightfv(int, int, java.nio.FloatBuffer);
-    method public static void glLightx(int, int, int);
-    method public static void glLightxv(int, int, int[], int);
-    method public static void glLightxv(int, int, java.nio.IntBuffer);
-    method public static void glLineWidth(float);
-    method public static void glLineWidthx(int);
-    method public static void glLoadIdentity();
-    method public static void glLoadMatrixf(float[], int);
-    method public static void glLoadMatrixf(java.nio.FloatBuffer);
-    method public static void glLoadMatrixx(int[], int);
-    method public static void glLoadMatrixx(java.nio.IntBuffer);
-    method public static void glLogicOp(int);
-    method public static void glMaterialf(int, int, float);
-    method public static void glMaterialfv(int, int, float[], int);
-    method public static void glMaterialfv(int, int, java.nio.FloatBuffer);
-    method public static void glMaterialx(int, int, int);
-    method public static void glMaterialxv(int, int, int[], int);
-    method public static void glMaterialxv(int, int, java.nio.IntBuffer);
-    method public static void glMatrixMode(int);
-    method public static void glMultMatrixf(float[], int);
-    method public static void glMultMatrixf(java.nio.FloatBuffer);
-    method public static void glMultMatrixx(int[], int);
-    method public static void glMultMatrixx(java.nio.IntBuffer);
-    method public static void glMultiTexCoord4f(int, float, float, float, float);
-    method public static void glMultiTexCoord4x(int, int, int, int, int);
-    method public static void glNormal3f(float, float, float);
-    method public static void glNormal3x(int, int, int);
-    method public static void glNormalPointer(int, int, java.nio.Buffer);
-    method public static void glOrthof(float, float, float, float, float, float);
-    method public static void glOrthox(int, int, int, int, int, int);
-    method public static void glPixelStorei(int, int);
-    method public static void glPointSize(float);
-    method public static void glPointSizex(int);
-    method public static void glPolygonOffset(float, float);
-    method public static void glPolygonOffsetx(int, int);
-    method public static void glPopMatrix();
-    method public static void glPushMatrix();
-    method public static void glReadPixels(int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glRotatef(float, float, float, float);
-    method public static void glRotatex(int, int, int, int);
-    method public static void glSampleCoverage(float, boolean);
-    method public static void glSampleCoveragex(int, boolean);
-    method public static void glScalef(float, float, float);
-    method public static void glScalex(int, int, int);
-    method public static void glScissor(int, int, int, int);
-    method public static void glShadeModel(int);
-    method public static void glStencilFunc(int, int, int);
-    method public static void glStencilMask(int);
-    method public static void glStencilOp(int, int, int);
-    method public static void glTexCoordPointer(int, int, int, java.nio.Buffer);
-    method public static void glTexEnvf(int, int, float);
-    method public static void glTexEnvfv(int, int, float[], int);
-    method public static void glTexEnvfv(int, int, java.nio.FloatBuffer);
-    method public static void glTexEnvx(int, int, int);
-    method public static void glTexEnvxv(int, int, int[], int);
-    method public static void glTexEnvxv(int, int, java.nio.IntBuffer);
-    method public static void glTexImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glTexParameterf(int, int, float);
-    method public static void glTexParameterx(int, int, int);
-    method public static void glTexSubImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glTranslatef(float, float, float);
-    method public static void glTranslatex(int, int, int);
-    method public static void glVertexPointer(int, int, int, java.nio.Buffer);
-    method public static void glViewport(int, int, int, int);
-    field public static final int GL_ADD = 260; // 0x104
-    field public static final int GL_ALIASED_LINE_WIDTH_RANGE = 33902; // 0x846e
-    field public static final int GL_ALIASED_POINT_SIZE_RANGE = 33901; // 0x846d
-    field public static final int GL_ALPHA = 6406; // 0x1906
-    field public static final int GL_ALPHA_BITS = 3413; // 0xd55
-    field public static final int GL_ALPHA_TEST = 3008; // 0xbc0
-    field public static final int GL_ALWAYS = 519; // 0x207
-    field public static final int GL_AMBIENT = 4608; // 0x1200
-    field public static final int GL_AMBIENT_AND_DIFFUSE = 5634; // 0x1602
-    field public static final int GL_AND = 5377; // 0x1501
-    field public static final int GL_AND_INVERTED = 5380; // 0x1504
-    field public static final int GL_AND_REVERSE = 5378; // 0x1502
-    field public static final int GL_BACK = 1029; // 0x405
-    field public static final int GL_BLEND = 3042; // 0xbe2
-    field public static final int GL_BLUE_BITS = 3412; // 0xd54
-    field public static final int GL_BYTE = 5120; // 0x1400
-    field public static final int GL_CCW = 2305; // 0x901
-    field public static final int GL_CLAMP_TO_EDGE = 33071; // 0x812f
-    field public static final int GL_CLEAR = 5376; // 0x1500
-    field public static final int GL_COLOR_ARRAY = 32886; // 0x8076
-    field public static final int GL_COLOR_BUFFER_BIT = 16384; // 0x4000
-    field public static final int GL_COLOR_LOGIC_OP = 3058; // 0xbf2
-    field public static final int GL_COLOR_MATERIAL = 2903; // 0xb57
-    field public static final int GL_COMPRESSED_TEXTURE_FORMATS = 34467; // 0x86a3
-    field public static final int GL_CONSTANT_ATTENUATION = 4615; // 0x1207
-    field public static final int GL_COPY = 5379; // 0x1503
-    field public static final int GL_COPY_INVERTED = 5388; // 0x150c
-    field public static final int GL_CULL_FACE = 2884; // 0xb44
-    field public static final int GL_CW = 2304; // 0x900
-    field public static final int GL_DECAL = 8449; // 0x2101
-    field public static final int GL_DECR = 7683; // 0x1e03
-    field public static final int GL_DEPTH_BITS = 3414; // 0xd56
-    field public static final int GL_DEPTH_BUFFER_BIT = 256; // 0x100
-    field public static final int GL_DEPTH_TEST = 2929; // 0xb71
-    field public static final int GL_DIFFUSE = 4609; // 0x1201
-    field public static final int GL_DITHER = 3024; // 0xbd0
-    field public static final int GL_DONT_CARE = 4352; // 0x1100
-    field public static final int GL_DST_ALPHA = 772; // 0x304
-    field public static final int GL_DST_COLOR = 774; // 0x306
-    field public static final int GL_EMISSION = 5632; // 0x1600
-    field public static final int GL_EQUAL = 514; // 0x202
-    field public static final int GL_EQUIV = 5385; // 0x1509
-    field public static final int GL_EXP = 2048; // 0x800
-    field public static final int GL_EXP2 = 2049; // 0x801
-    field public static final int GL_EXTENSIONS = 7939; // 0x1f03
-    field public static final int GL_FALSE = 0; // 0x0
-    field public static final int GL_FASTEST = 4353; // 0x1101
-    field public static final int GL_FIXED = 5132; // 0x140c
-    field public static final int GL_FLAT = 7424; // 0x1d00
-    field public static final int GL_FLOAT = 5126; // 0x1406
-    field public static final int GL_FOG = 2912; // 0xb60
-    field public static final int GL_FOG_COLOR = 2918; // 0xb66
-    field public static final int GL_FOG_DENSITY = 2914; // 0xb62
-    field public static final int GL_FOG_END = 2916; // 0xb64
-    field public static final int GL_FOG_HINT = 3156; // 0xc54
-    field public static final int GL_FOG_MODE = 2917; // 0xb65
-    field public static final int GL_FOG_START = 2915; // 0xb63
-    field public static final int GL_FRONT = 1028; // 0x404
-    field public static final int GL_FRONT_AND_BACK = 1032; // 0x408
-    field public static final int GL_GEQUAL = 518; // 0x206
-    field public static final int GL_GREATER = 516; // 0x204
-    field public static final int GL_GREEN_BITS = 3411; // 0xd53
-    field public static final int GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES = 35739; // 0x8b9b
-    field public static final int GL_IMPLEMENTATION_COLOR_READ_TYPE_OES = 35738; // 0x8b9a
-    field public static final int GL_INCR = 7682; // 0x1e02
-    field public static final int GL_INVALID_ENUM = 1280; // 0x500
-    field public static final int GL_INVALID_OPERATION = 1282; // 0x502
-    field public static final int GL_INVALID_VALUE = 1281; // 0x501
-    field public static final int GL_INVERT = 5386; // 0x150a
-    field public static final int GL_KEEP = 7680; // 0x1e00
-    field public static final int GL_LEQUAL = 515; // 0x203
-    field public static final int GL_LESS = 513; // 0x201
-    field public static final int GL_LIGHT0 = 16384; // 0x4000
-    field public static final int GL_LIGHT1 = 16385; // 0x4001
-    field public static final int GL_LIGHT2 = 16386; // 0x4002
-    field public static final int GL_LIGHT3 = 16387; // 0x4003
-    field public static final int GL_LIGHT4 = 16388; // 0x4004
-    field public static final int GL_LIGHT5 = 16389; // 0x4005
-    field public static final int GL_LIGHT6 = 16390; // 0x4006
-    field public static final int GL_LIGHT7 = 16391; // 0x4007
-    field public static final int GL_LIGHTING = 2896; // 0xb50
-    field public static final int GL_LIGHT_MODEL_AMBIENT = 2899; // 0xb53
-    field public static final int GL_LIGHT_MODEL_TWO_SIDE = 2898; // 0xb52
-    field public static final int GL_LINEAR = 9729; // 0x2601
-    field public static final int GL_LINEAR_ATTENUATION = 4616; // 0x1208
-    field public static final int GL_LINEAR_MIPMAP_LINEAR = 9987; // 0x2703
-    field public static final int GL_LINEAR_MIPMAP_NEAREST = 9985; // 0x2701
-    field public static final int GL_LINES = 1; // 0x1
-    field public static final int GL_LINE_LOOP = 2; // 0x2
-    field public static final int GL_LINE_SMOOTH = 2848; // 0xb20
-    field public static final int GL_LINE_SMOOTH_HINT = 3154; // 0xc52
-    field public static final int GL_LINE_STRIP = 3; // 0x3
-    field public static final int GL_LUMINANCE = 6409; // 0x1909
-    field public static final int GL_LUMINANCE_ALPHA = 6410; // 0x190a
-    field public static final int GL_MAX_ELEMENTS_INDICES = 33001; // 0x80e9
-    field public static final int GL_MAX_ELEMENTS_VERTICES = 33000; // 0x80e8
-    field public static final int GL_MAX_LIGHTS = 3377; // 0xd31
-    field public static final int GL_MAX_MODELVIEW_STACK_DEPTH = 3382; // 0xd36
-    field public static final int GL_MAX_PROJECTION_STACK_DEPTH = 3384; // 0xd38
-    field public static final int GL_MAX_TEXTURE_SIZE = 3379; // 0xd33
-    field public static final int GL_MAX_TEXTURE_STACK_DEPTH = 3385; // 0xd39
-    field public static final int GL_MAX_TEXTURE_UNITS = 34018; // 0x84e2
-    field public static final int GL_MAX_VIEWPORT_DIMS = 3386; // 0xd3a
-    field public static final int GL_MODELVIEW = 5888; // 0x1700
-    field public static final int GL_MODULATE = 8448; // 0x2100
-    field public static final int GL_MULTISAMPLE = 32925; // 0x809d
-    field public static final int GL_NAND = 5390; // 0x150e
-    field public static final int GL_NEAREST = 9728; // 0x2600
-    field public static final int GL_NEAREST_MIPMAP_LINEAR = 9986; // 0x2702
-    field public static final int GL_NEAREST_MIPMAP_NEAREST = 9984; // 0x2700
-    field public static final int GL_NEVER = 512; // 0x200
-    field public static final int GL_NICEST = 4354; // 0x1102
-    field public static final int GL_NOOP = 5381; // 0x1505
-    field public static final int GL_NOR = 5384; // 0x1508
-    field public static final int GL_NORMALIZE = 2977; // 0xba1
-    field public static final int GL_NORMAL_ARRAY = 32885; // 0x8075
-    field public static final int GL_NOTEQUAL = 517; // 0x205
-    field public static final int GL_NO_ERROR = 0; // 0x0
-    field public static final int GL_NUM_COMPRESSED_TEXTURE_FORMATS = 34466; // 0x86a2
-    field public static final int GL_ONE = 1; // 0x1
-    field public static final int GL_ONE_MINUS_DST_ALPHA = 773; // 0x305
-    field public static final int GL_ONE_MINUS_DST_COLOR = 775; // 0x307
-    field public static final int GL_ONE_MINUS_SRC_ALPHA = 771; // 0x303
-    field public static final int GL_ONE_MINUS_SRC_COLOR = 769; // 0x301
-    field public static final int GL_OR = 5383; // 0x1507
-    field public static final int GL_OR_INVERTED = 5389; // 0x150d
-    field public static final int GL_OR_REVERSE = 5387; // 0x150b
-    field public static final int GL_OUT_OF_MEMORY = 1285; // 0x505
-    field public static final int GL_PACK_ALIGNMENT = 3333; // 0xd05
-    field public static final int GL_PALETTE4_R5_G6_B5_OES = 35730; // 0x8b92
-    field public static final int GL_PALETTE4_RGB5_A1_OES = 35732; // 0x8b94
-    field public static final int GL_PALETTE4_RGB8_OES = 35728; // 0x8b90
-    field public static final int GL_PALETTE4_RGBA4_OES = 35731; // 0x8b93
-    field public static final int GL_PALETTE4_RGBA8_OES = 35729; // 0x8b91
-    field public static final int GL_PALETTE8_R5_G6_B5_OES = 35735; // 0x8b97
-    field public static final int GL_PALETTE8_RGB5_A1_OES = 35737; // 0x8b99
-    field public static final int GL_PALETTE8_RGB8_OES = 35733; // 0x8b95
-    field public static final int GL_PALETTE8_RGBA4_OES = 35736; // 0x8b98
-    field public static final int GL_PALETTE8_RGBA8_OES = 35734; // 0x8b96
-    field public static final int GL_PERSPECTIVE_CORRECTION_HINT = 3152; // 0xc50
-    field public static final int GL_POINTS = 0; // 0x0
-    field public static final int GL_POINT_FADE_THRESHOLD_SIZE = 33064; // 0x8128
-    field public static final int GL_POINT_SIZE = 2833; // 0xb11
-    field public static final int GL_POINT_SMOOTH = 2832; // 0xb10
-    field public static final int GL_POINT_SMOOTH_HINT = 3153; // 0xc51
-    field public static final int GL_POLYGON_OFFSET_FILL = 32823; // 0x8037
-    field public static final int GL_POLYGON_SMOOTH_HINT = 3155; // 0xc53
-    field public static final int GL_POSITION = 4611; // 0x1203
-    field public static final int GL_PROJECTION = 5889; // 0x1701
-    field public static final int GL_QUADRATIC_ATTENUATION = 4617; // 0x1209
-    field public static final int GL_RED_BITS = 3410; // 0xd52
-    field public static final int GL_RENDERER = 7937; // 0x1f01
-    field public static final int GL_REPEAT = 10497; // 0x2901
-    field public static final int GL_REPLACE = 7681; // 0x1e01
-    field public static final int GL_RESCALE_NORMAL = 32826; // 0x803a
-    field public static final int GL_RGB = 6407; // 0x1907
-    field public static final int GL_RGBA = 6408; // 0x1908
-    field public static final int GL_SAMPLE_ALPHA_TO_COVERAGE = 32926; // 0x809e
-    field public static final int GL_SAMPLE_ALPHA_TO_ONE = 32927; // 0x809f
-    field public static final int GL_SAMPLE_COVERAGE = 32928; // 0x80a0
-    field public static final int GL_SCISSOR_TEST = 3089; // 0xc11
-    field public static final int GL_SET = 5391; // 0x150f
-    field public static final int GL_SHININESS = 5633; // 0x1601
-    field public static final int GL_SHORT = 5122; // 0x1402
-    field public static final int GL_SMOOTH = 7425; // 0x1d01
-    field public static final int GL_SMOOTH_LINE_WIDTH_RANGE = 2850; // 0xb22
-    field public static final int GL_SMOOTH_POINT_SIZE_RANGE = 2834; // 0xb12
-    field public static final int GL_SPECULAR = 4610; // 0x1202
-    field public static final int GL_SPOT_CUTOFF = 4614; // 0x1206
-    field public static final int GL_SPOT_DIRECTION = 4612; // 0x1204
-    field public static final int GL_SPOT_EXPONENT = 4613; // 0x1205
-    field public static final int GL_SRC_ALPHA = 770; // 0x302
-    field public static final int GL_SRC_ALPHA_SATURATE = 776; // 0x308
-    field public static final int GL_SRC_COLOR = 768; // 0x300
-    field public static final int GL_STACK_OVERFLOW = 1283; // 0x503
-    field public static final int GL_STACK_UNDERFLOW = 1284; // 0x504
-    field public static final int GL_STENCIL_BITS = 3415; // 0xd57
-    field public static final int GL_STENCIL_BUFFER_BIT = 1024; // 0x400
-    field public static final int GL_STENCIL_TEST = 2960; // 0xb90
-    field public static final int GL_SUBPIXEL_BITS = 3408; // 0xd50
-    field public static final int GL_TEXTURE = 5890; // 0x1702
-    field public static final int GL_TEXTURE0 = 33984; // 0x84c0
-    field public static final int GL_TEXTURE1 = 33985; // 0x84c1
-    field public static final int GL_TEXTURE10 = 33994; // 0x84ca
-    field public static final int GL_TEXTURE11 = 33995; // 0x84cb
-    field public static final int GL_TEXTURE12 = 33996; // 0x84cc
-    field public static final int GL_TEXTURE13 = 33997; // 0x84cd
-    field public static final int GL_TEXTURE14 = 33998; // 0x84ce
-    field public static final int GL_TEXTURE15 = 33999; // 0x84cf
-    field public static final int GL_TEXTURE16 = 34000; // 0x84d0
-    field public static final int GL_TEXTURE17 = 34001; // 0x84d1
-    field public static final int GL_TEXTURE18 = 34002; // 0x84d2
-    field public static final int GL_TEXTURE19 = 34003; // 0x84d3
-    field public static final int GL_TEXTURE2 = 33986; // 0x84c2
-    field public static final int GL_TEXTURE20 = 34004; // 0x84d4
-    field public static final int GL_TEXTURE21 = 34005; // 0x84d5
-    field public static final int GL_TEXTURE22 = 34006; // 0x84d6
-    field public static final int GL_TEXTURE23 = 34007; // 0x84d7
-    field public static final int GL_TEXTURE24 = 34008; // 0x84d8
-    field public static final int GL_TEXTURE25 = 34009; // 0x84d9
-    field public static final int GL_TEXTURE26 = 34010; // 0x84da
-    field public static final int GL_TEXTURE27 = 34011; // 0x84db
-    field public static final int GL_TEXTURE28 = 34012; // 0x84dc
-    field public static final int GL_TEXTURE29 = 34013; // 0x84dd
-    field public static final int GL_TEXTURE3 = 33987; // 0x84c3
-    field public static final int GL_TEXTURE30 = 34014; // 0x84de
-    field public static final int GL_TEXTURE31 = 34015; // 0x84df
-    field public static final int GL_TEXTURE4 = 33988; // 0x84c4
-    field public static final int GL_TEXTURE5 = 33989; // 0x84c5
-    field public static final int GL_TEXTURE6 = 33990; // 0x84c6
-    field public static final int GL_TEXTURE7 = 33991; // 0x84c7
-    field public static final int GL_TEXTURE8 = 33992; // 0x84c8
-    field public static final int GL_TEXTURE9 = 33993; // 0x84c9
-    field public static final int GL_TEXTURE_2D = 3553; // 0xde1
-    field public static final int GL_TEXTURE_COORD_ARRAY = 32888; // 0x8078
-    field public static final int GL_TEXTURE_ENV = 8960; // 0x2300
-    field public static final int GL_TEXTURE_ENV_COLOR = 8705; // 0x2201
-    field public static final int GL_TEXTURE_ENV_MODE = 8704; // 0x2200
-    field public static final int GL_TEXTURE_MAG_FILTER = 10240; // 0x2800
-    field public static final int GL_TEXTURE_MIN_FILTER = 10241; // 0x2801
-    field public static final int GL_TEXTURE_WRAP_S = 10242; // 0x2802
-    field public static final int GL_TEXTURE_WRAP_T = 10243; // 0x2803
-    field public static final int GL_TRIANGLES = 4; // 0x4
-    field public static final int GL_TRIANGLE_FAN = 6; // 0x6
-    field public static final int GL_TRIANGLE_STRIP = 5; // 0x5
-    field public static final int GL_TRUE = 1; // 0x1
-    field public static final int GL_UNPACK_ALIGNMENT = 3317; // 0xcf5
-    field public static final int GL_UNSIGNED_BYTE = 5121; // 0x1401
-    field public static final int GL_UNSIGNED_SHORT = 5123; // 0x1403
-    field public static final int GL_UNSIGNED_SHORT_4_4_4_4 = 32819; // 0x8033
-    field public static final int GL_UNSIGNED_SHORT_5_5_5_1 = 32820; // 0x8034
-    field public static final int GL_UNSIGNED_SHORT_5_6_5 = 33635; // 0x8363
-    field public static final int GL_VENDOR = 7936; // 0x1f00
-    field public static final int GL_VERSION = 7938; // 0x1f02
-    field public static final int GL_VERTEX_ARRAY = 32884; // 0x8074
-    field public static final int GL_XOR = 5382; // 0x1506
-    field public static final int GL_ZERO = 0; // 0x0
-  }
-
-  public class GLES10Ext {
-    ctor public GLES10Ext();
-    method public static int glQueryMatrixxOES(int[], int, int[], int);
-    method public static int glQueryMatrixxOES(java.nio.IntBuffer, java.nio.IntBuffer);
-  }
-
-  public class GLES11 extends android.opengl.GLES10 {
-    ctor public GLES11();
-    method public static void glBindBuffer(int, int);
-    method public static void glBufferData(int, int, java.nio.Buffer, int);
-    method public static void glBufferSubData(int, int, int, java.nio.Buffer);
-    method public static void glClipPlanef(int, float[], int);
-    method public static void glClipPlanef(int, java.nio.FloatBuffer);
-    method public static void glClipPlanex(int, int[], int);
-    method public static void glClipPlanex(int, java.nio.IntBuffer);
-    method public static void glColor4ub(byte, byte, byte, byte);
-    method public static void glColorPointer(int, int, int, int);
-    method public static void glDeleteBuffers(int, int[], int);
-    method public static void glDeleteBuffers(int, java.nio.IntBuffer);
-    method public static void glDrawElements(int, int, int, int);
-    method public static void glGenBuffers(int, int[], int);
-    method public static void glGenBuffers(int, java.nio.IntBuffer);
-    method public static void glGetBooleanv(int, boolean[], int);
-    method public static void glGetBooleanv(int, java.nio.IntBuffer);
-    method public static void glGetBufferParameteriv(int, int, int[], int);
-    method public static void glGetBufferParameteriv(int, int, java.nio.IntBuffer);
-    method public static void glGetClipPlanef(int, float[], int);
-    method public static void glGetClipPlanef(int, java.nio.FloatBuffer);
-    method public static void glGetClipPlanex(int, int[], int);
-    method public static void glGetClipPlanex(int, java.nio.IntBuffer);
-    method public static void glGetFixedv(int, int[], int);
-    method public static void glGetFixedv(int, java.nio.IntBuffer);
-    method public static void glGetFloatv(int, float[], int);
-    method public static void glGetFloatv(int, java.nio.FloatBuffer);
-    method public static void glGetLightfv(int, int, float[], int);
-    method public static void glGetLightfv(int, int, java.nio.FloatBuffer);
-    method public static void glGetLightxv(int, int, int[], int);
-    method public static void glGetLightxv(int, int, java.nio.IntBuffer);
-    method public static void glGetMaterialfv(int, int, float[], int);
-    method public static void glGetMaterialfv(int, int, java.nio.FloatBuffer);
-    method public static void glGetMaterialxv(int, int, int[], int);
-    method public static void glGetMaterialxv(int, int, java.nio.IntBuffer);
-    method public static void glGetTexEnvfv(int, int, float[], int);
-    method public static void glGetTexEnvfv(int, int, java.nio.FloatBuffer);
-    method public static void glGetTexEnviv(int, int, int[], int);
-    method public static void glGetTexEnviv(int, int, java.nio.IntBuffer);
-    method public static void glGetTexEnvxv(int, int, int[], int);
-    method public static void glGetTexEnvxv(int, int, java.nio.IntBuffer);
-    method public static void glGetTexParameterfv(int, int, float[], int);
-    method public static void glGetTexParameterfv(int, int, java.nio.FloatBuffer);
-    method public static void glGetTexParameteriv(int, int, int[], int);
-    method public static void glGetTexParameteriv(int, int, java.nio.IntBuffer);
-    method public static void glGetTexParameterxv(int, int, int[], int);
-    method public static void glGetTexParameterxv(int, int, java.nio.IntBuffer);
-    method public static boolean glIsBuffer(int);
-    method public static boolean glIsEnabled(int);
-    method public static boolean glIsTexture(int);
-    method public static void glNormalPointer(int, int, int);
-    method public static void glPointParameterf(int, float);
-    method public static void glPointParameterfv(int, float[], int);
-    method public static void glPointParameterfv(int, java.nio.FloatBuffer);
-    method public static void glPointParameterx(int, int);
-    method public static void glPointParameterxv(int, int[], int);
-    method public static void glPointParameterxv(int, java.nio.IntBuffer);
-    method public static void glPointSizePointerOES(int, int, java.nio.Buffer);
-    method public static void glTexCoordPointer(int, int, int, int);
-    method public static void glTexEnvi(int, int, int);
-    method public static void glTexEnviv(int, int, int[], int);
-    method public static void glTexEnviv(int, int, java.nio.IntBuffer);
-    method public static void glTexParameterfv(int, int, float[], int);
-    method public static void glTexParameterfv(int, int, java.nio.FloatBuffer);
-    method public static void glTexParameteri(int, int, int);
-    method public static void glTexParameteriv(int, int, int[], int);
-    method public static void glTexParameteriv(int, int, java.nio.IntBuffer);
-    method public static void glTexParameterxv(int, int, int[], int);
-    method public static void glTexParameterxv(int, int, java.nio.IntBuffer);
-    method public static void glVertexPointer(int, int, int, int);
-    field public static final int GL_ACTIVE_TEXTURE = 34016; // 0x84e0
-    field public static final int GL_ADD_SIGNED = 34164; // 0x8574
-    field public static final int GL_ALPHA_SCALE = 3356; // 0xd1c
-    field public static final int GL_ALPHA_TEST_FUNC = 3009; // 0xbc1
-    field public static final int GL_ALPHA_TEST_REF = 3010; // 0xbc2
-    field public static final int GL_ARRAY_BUFFER = 34962; // 0x8892
-    field public static final int GL_ARRAY_BUFFER_BINDING = 34964; // 0x8894
-    field public static final int GL_BLEND_DST = 3040; // 0xbe0
-    field public static final int GL_BLEND_SRC = 3041; // 0xbe1
-    field public static final int GL_BUFFER_ACCESS = 35003; // 0x88bb
-    field public static final int GL_BUFFER_SIZE = 34660; // 0x8764
-    field public static final int GL_BUFFER_USAGE = 34661; // 0x8765
-    field public static final int GL_CLIENT_ACTIVE_TEXTURE = 34017; // 0x84e1
-    field public static final int GL_CLIP_PLANE0 = 12288; // 0x3000
-    field public static final int GL_CLIP_PLANE1 = 12289; // 0x3001
-    field public static final int GL_CLIP_PLANE2 = 12290; // 0x3002
-    field public static final int GL_CLIP_PLANE3 = 12291; // 0x3003
-    field public static final int GL_CLIP_PLANE4 = 12292; // 0x3004
-    field public static final int GL_CLIP_PLANE5 = 12293; // 0x3005
-    field public static final int GL_COLOR_ARRAY_BUFFER_BINDING = 34968; // 0x8898
-    field public static final int GL_COLOR_ARRAY_POINTER = 32912; // 0x8090
-    field public static final int GL_COLOR_ARRAY_SIZE = 32897; // 0x8081
-    field public static final int GL_COLOR_ARRAY_STRIDE = 32899; // 0x8083
-    field public static final int GL_COLOR_ARRAY_TYPE = 32898; // 0x8082
-    field public static final int GL_COLOR_CLEAR_VALUE = 3106; // 0xc22
-    field public static final int GL_COLOR_WRITEMASK = 3107; // 0xc23
-    field public static final int GL_COMBINE = 34160; // 0x8570
-    field public static final int GL_COMBINE_ALPHA = 34162; // 0x8572
-    field public static final int GL_COMBINE_RGB = 34161; // 0x8571
-    field public static final int GL_CONSTANT = 34166; // 0x8576
-    field public static final int GL_COORD_REPLACE_OES = 34914; // 0x8862
-    field public static final int GL_CULL_FACE_MODE = 2885; // 0xb45
-    field public static final int GL_CURRENT_COLOR = 2816; // 0xb00
-    field public static final int GL_CURRENT_NORMAL = 2818; // 0xb02
-    field public static final int GL_CURRENT_TEXTURE_COORDS = 2819; // 0xb03
-    field public static final int GL_DEPTH_CLEAR_VALUE = 2931; // 0xb73
-    field public static final int GL_DEPTH_FUNC = 2932; // 0xb74
-    field public static final int GL_DEPTH_RANGE = 2928; // 0xb70
-    field public static final int GL_DEPTH_WRITEMASK = 2930; // 0xb72
-    field public static final int GL_DOT3_RGB = 34478; // 0x86ae
-    field public static final int GL_DOT3_RGBA = 34479; // 0x86af
-    field public static final int GL_DYNAMIC_DRAW = 35048; // 0x88e8
-    field public static final int GL_ELEMENT_ARRAY_BUFFER = 34963; // 0x8893
-    field public static final int GL_ELEMENT_ARRAY_BUFFER_BINDING = 34965; // 0x8895
-    field public static final int GL_FRONT_FACE = 2886; // 0xb46
-    field public static final int GL_GENERATE_MIPMAP = 33169; // 0x8191
-    field public static final int GL_GENERATE_MIPMAP_HINT = 33170; // 0x8192
-    field public static final int GL_INTERPOLATE = 34165; // 0x8575
-    field public static final int GL_LINE_WIDTH = 2849; // 0xb21
-    field public static final int GL_LOGIC_OP_MODE = 3056; // 0xbf0
-    field public static final int GL_MATRIX_MODE = 2976; // 0xba0
-    field public static final int GL_MAX_CLIP_PLANES = 3378; // 0xd32
-    field public static final int GL_MODELVIEW_MATRIX = 2982; // 0xba6
-    field public static final int GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES = 35213; // 0x898d
-    field public static final int GL_MODELVIEW_STACK_DEPTH = 2979; // 0xba3
-    field public static final int GL_NORMAL_ARRAY_BUFFER_BINDING = 34967; // 0x8897
-    field public static final int GL_NORMAL_ARRAY_POINTER = 32911; // 0x808f
-    field public static final int GL_NORMAL_ARRAY_STRIDE = 32895; // 0x807f
-    field public static final int GL_NORMAL_ARRAY_TYPE = 32894; // 0x807e
-    field public static final int GL_OPERAND0_ALPHA = 34200; // 0x8598
-    field public static final int GL_OPERAND0_RGB = 34192; // 0x8590
-    field public static final int GL_OPERAND1_ALPHA = 34201; // 0x8599
-    field public static final int GL_OPERAND1_RGB = 34193; // 0x8591
-    field public static final int GL_OPERAND2_ALPHA = 34202; // 0x859a
-    field public static final int GL_OPERAND2_RGB = 34194; // 0x8592
-    field public static final int GL_POINT_DISTANCE_ATTENUATION = 33065; // 0x8129
-    field public static final int GL_POINT_FADE_THRESHOLD_SIZE = 33064; // 0x8128
-    field public static final int GL_POINT_SIZE = 2833; // 0xb11
-    field public static final int GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES = 35743; // 0x8b9f
-    field public static final int GL_POINT_SIZE_ARRAY_OES = 35740; // 0x8b9c
-    field public static final int GL_POINT_SIZE_ARRAY_POINTER_OES = 35212; // 0x898c
-    field public static final int GL_POINT_SIZE_ARRAY_STRIDE_OES = 35211; // 0x898b
-    field public static final int GL_POINT_SIZE_ARRAY_TYPE_OES = 35210; // 0x898a
-    field public static final int GL_POINT_SIZE_MAX = 33063; // 0x8127
-    field public static final int GL_POINT_SIZE_MIN = 33062; // 0x8126
-    field public static final int GL_POINT_SPRITE_OES = 34913; // 0x8861
-    field public static final int GL_POLYGON_OFFSET_FACTOR = 32824; // 0x8038
-    field public static final int GL_POLYGON_OFFSET_UNITS = 10752; // 0x2a00
-    field public static final int GL_PREVIOUS = 34168; // 0x8578
-    field public static final int GL_PRIMARY_COLOR = 34167; // 0x8577
-    field public static final int GL_PROJECTION_MATRIX = 2983; // 0xba7
-    field public static final int GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES = 35214; // 0x898e
-    field public static final int GL_PROJECTION_STACK_DEPTH = 2980; // 0xba4
-    field public static final int GL_RGB_SCALE = 34163; // 0x8573
-    field public static final int GL_SAMPLES = 32937; // 0x80a9
-    field public static final int GL_SAMPLE_BUFFERS = 32936; // 0x80a8
-    field public static final int GL_SAMPLE_COVERAGE_INVERT = 32939; // 0x80ab
-    field public static final int GL_SAMPLE_COVERAGE_VALUE = 32938; // 0x80aa
-    field public static final int GL_SCISSOR_BOX = 3088; // 0xc10
-    field public static final int GL_SHADE_MODEL = 2900; // 0xb54
-    field public static final int GL_SRC0_ALPHA = 34184; // 0x8588
-    field public static final int GL_SRC0_RGB = 34176; // 0x8580
-    field public static final int GL_SRC1_ALPHA = 34185; // 0x8589
-    field public static final int GL_SRC1_RGB = 34177; // 0x8581
-    field public static final int GL_SRC2_ALPHA = 34186; // 0x858a
-    field public static final int GL_SRC2_RGB = 34178; // 0x8582
-    field public static final int GL_STATIC_DRAW = 35044; // 0x88e4
-    field public static final int GL_STENCIL_CLEAR_VALUE = 2961; // 0xb91
-    field public static final int GL_STENCIL_FAIL = 2964; // 0xb94
-    field public static final int GL_STENCIL_FUNC = 2962; // 0xb92
-    field public static final int GL_STENCIL_PASS_DEPTH_FAIL = 2965; // 0xb95
-    field public static final int GL_STENCIL_PASS_DEPTH_PASS = 2966; // 0xb96
-    field public static final int GL_STENCIL_REF = 2967; // 0xb97
-    field public static final int GL_STENCIL_VALUE_MASK = 2963; // 0xb93
-    field public static final int GL_STENCIL_WRITEMASK = 2968; // 0xb98
-    field public static final int GL_SUBTRACT = 34023; // 0x84e7
-    field public static final int GL_TEXTURE_BINDING_2D = 32873; // 0x8069
-    field public static final int GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING = 34970; // 0x889a
-    field public static final int GL_TEXTURE_COORD_ARRAY_POINTER = 32914; // 0x8092
-    field public static final int GL_TEXTURE_COORD_ARRAY_SIZE = 32904; // 0x8088
-    field public static final int GL_TEXTURE_COORD_ARRAY_STRIDE = 32906; // 0x808a
-    field public static final int GL_TEXTURE_COORD_ARRAY_TYPE = 32905; // 0x8089
-    field public static final int GL_TEXTURE_MATRIX = 2984; // 0xba8
-    field public static final int GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES = 35215; // 0x898f
-    field public static final int GL_TEXTURE_STACK_DEPTH = 2981; // 0xba5
-    field public static final int GL_VERTEX_ARRAY_BUFFER_BINDING = 34966; // 0x8896
-    field public static final int GL_VERTEX_ARRAY_POINTER = 32910; // 0x808e
-    field public static final int GL_VERTEX_ARRAY_SIZE = 32890; // 0x807a
-    field public static final int GL_VERTEX_ARRAY_STRIDE = 32892; // 0x807c
-    field public static final int GL_VERTEX_ARRAY_TYPE = 32891; // 0x807b
-    field public static final int GL_VIEWPORT = 2978; // 0xba2
-    field public static final int GL_WRITE_ONLY = 35001; // 0x88b9
-  }
-
-  public class GLES11Ext {
-    ctor public GLES11Ext();
-    method public static void glAlphaFuncxOES(int, int);
-    method public static void glBindFramebufferOES(int, int);
-    method public static void glBindRenderbufferOES(int, int);
-    method public static void glBlendEquationOES(int);
-    method public static void glBlendEquationSeparateOES(int, int);
-    method public static void glBlendFuncSeparateOES(int, int, int, int);
-    method public static int glCheckFramebufferStatusOES(int);
-    method public static void glClearColorxOES(int, int, int, int);
-    method public static void glClearDepthfOES(float);
-    method public static void glClearDepthxOES(int);
-    method public static void glClipPlanefOES(int, float[], int);
-    method public static void glClipPlanefOES(int, java.nio.FloatBuffer);
-    method public static void glClipPlanexOES(int, int[], int);
-    method public static void glClipPlanexOES(int, java.nio.IntBuffer);
-    method public static void glColor4xOES(int, int, int, int);
-    method public static void glCurrentPaletteMatrixOES(int);
-    method public static void glDeleteFramebuffersOES(int, int[], int);
-    method public static void glDeleteFramebuffersOES(int, java.nio.IntBuffer);
-    method public static void glDeleteRenderbuffersOES(int, int[], int);
-    method public static void glDeleteRenderbuffersOES(int, java.nio.IntBuffer);
-    method public static void glDepthRangefOES(float, float);
-    method public static void glDepthRangexOES(int, int);
-    method public static void glDrawTexfOES(float, float, float, float, float);
-    method public static void glDrawTexfvOES(float[], int);
-    method public static void glDrawTexfvOES(java.nio.FloatBuffer);
-    method public static void glDrawTexiOES(int, int, int, int, int);
-    method public static void glDrawTexivOES(int[], int);
-    method public static void glDrawTexivOES(java.nio.IntBuffer);
-    method public static void glDrawTexsOES(short, short, short, short, short);
-    method public static void glDrawTexsvOES(short[], int);
-    method public static void glDrawTexsvOES(java.nio.ShortBuffer);
-    method public static void glDrawTexxOES(int, int, int, int, int);
-    method public static void glDrawTexxvOES(int[], int);
-    method public static void glDrawTexxvOES(java.nio.IntBuffer);
-    method public static void glEGLImageTargetRenderbufferStorageOES(int, java.nio.Buffer);
-    method public static void glEGLImageTargetTexture2DOES(int, java.nio.Buffer);
-    method public static void glFogxOES(int, int);
-    method public static void glFogxvOES(int, int[], int);
-    method public static void glFogxvOES(int, java.nio.IntBuffer);
-    method public static void glFramebufferRenderbufferOES(int, int, int, int);
-    method public static void glFramebufferTexture2DOES(int, int, int, int, int);
-    method public static void glFrustumfOES(float, float, float, float, float, float);
-    method public static void glFrustumxOES(int, int, int, int, int, int);
-    method public static void glGenFramebuffersOES(int, int[], int);
-    method public static void glGenFramebuffersOES(int, java.nio.IntBuffer);
-    method public static void glGenRenderbuffersOES(int, int[], int);
-    method public static void glGenRenderbuffersOES(int, java.nio.IntBuffer);
-    method public static void glGenerateMipmapOES(int);
-    method public static void glGetClipPlanefOES(int, float[], int);
-    method public static void glGetClipPlanefOES(int, java.nio.FloatBuffer);
-    method public static void glGetClipPlanexOES(int, int[], int);
-    method public static void glGetClipPlanexOES(int, java.nio.IntBuffer);
-    method public static void glGetFixedvOES(int, int[], int);
-    method public static void glGetFixedvOES(int, java.nio.IntBuffer);
-    method public static void glGetFramebufferAttachmentParameterivOES(int, int, int, int[], int);
-    method public static void glGetFramebufferAttachmentParameterivOES(int, int, int, java.nio.IntBuffer);
-    method public static void glGetLightxvOES(int, int, int[], int);
-    method public static void glGetLightxvOES(int, int, java.nio.IntBuffer);
-    method public static void glGetMaterialxvOES(int, int, int[], int);
-    method public static void glGetMaterialxvOES(int, int, java.nio.IntBuffer);
-    method public static void glGetRenderbufferParameterivOES(int, int, int[], int);
-    method public static void glGetRenderbufferParameterivOES(int, int, java.nio.IntBuffer);
-    method public static void glGetTexEnvxvOES(int, int, int[], int);
-    method public static void glGetTexEnvxvOES(int, int, java.nio.IntBuffer);
-    method public static void glGetTexGenfvOES(int, int, float[], int);
-    method public static void glGetTexGenfvOES(int, int, java.nio.FloatBuffer);
-    method public static void glGetTexGenivOES(int, int, int[], int);
-    method public static void glGetTexGenivOES(int, int, java.nio.IntBuffer);
-    method public static void glGetTexGenxvOES(int, int, int[], int);
-    method public static void glGetTexGenxvOES(int, int, java.nio.IntBuffer);
-    method public static void glGetTexParameterxvOES(int, int, int[], int);
-    method public static void glGetTexParameterxvOES(int, int, java.nio.IntBuffer);
-    method public static boolean glIsFramebufferOES(int);
-    method public static boolean glIsRenderbufferOES(int);
-    method public static void glLightModelxOES(int, int);
-    method public static void glLightModelxvOES(int, int[], int);
-    method public static void glLightModelxvOES(int, java.nio.IntBuffer);
-    method public static void glLightxOES(int, int, int);
-    method public static void glLightxvOES(int, int, int[], int);
-    method public static void glLightxvOES(int, int, java.nio.IntBuffer);
-    method public static void glLineWidthxOES(int);
-    method public static void glLoadMatrixxOES(int[], int);
-    method public static void glLoadMatrixxOES(java.nio.IntBuffer);
-    method public static void glLoadPaletteFromModelViewMatrixOES();
-    method public static void glMaterialxOES(int, int, int);
-    method public static void glMaterialxvOES(int, int, int[], int);
-    method public static void glMaterialxvOES(int, int, java.nio.IntBuffer);
-    method public static void glMatrixIndexPointerOES(int, int, int, java.nio.Buffer);
-    method public static void glMultMatrixxOES(int[], int);
-    method public static void glMultMatrixxOES(java.nio.IntBuffer);
-    method public static void glMultiTexCoord4xOES(int, int, int, int, int);
-    method public static void glNormal3xOES(int, int, int);
-    method public static void glOrthofOES(float, float, float, float, float, float);
-    method public static void glOrthoxOES(int, int, int, int, int, int);
-    method public static void glPointParameterxOES(int, int);
-    method public static void glPointParameterxvOES(int, int[], int);
-    method public static void glPointParameterxvOES(int, java.nio.IntBuffer);
-    method public static void glPointSizexOES(int);
-    method public static void glPolygonOffsetxOES(int, int);
-    method public static void glRenderbufferStorageOES(int, int, int, int);
-    method public static void glRotatexOES(int, int, int, int);
-    method public static void glSampleCoveragexOES(int, boolean);
-    method public static void glScalexOES(int, int, int);
-    method public static void glTexEnvxOES(int, int, int);
-    method public static void glTexEnvxvOES(int, int, int[], int);
-    method public static void glTexEnvxvOES(int, int, java.nio.IntBuffer);
-    method public static void glTexGenfOES(int, int, float);
-    method public static void glTexGenfvOES(int, int, float[], int);
-    method public static void glTexGenfvOES(int, int, java.nio.FloatBuffer);
-    method public static void glTexGeniOES(int, int, int);
-    method public static void glTexGenivOES(int, int, int[], int);
-    method public static void glTexGenivOES(int, int, java.nio.IntBuffer);
-    method public static void glTexGenxOES(int, int, int);
-    method public static void glTexGenxvOES(int, int, int[], int);
-    method public static void glTexGenxvOES(int, int, java.nio.IntBuffer);
-    method public static void glTexParameterxOES(int, int, int);
-    method public static void glTexParameterxvOES(int, int, int[], int);
-    method public static void glTexParameterxvOES(int, int, java.nio.IntBuffer);
-    method public static void glTranslatexOES(int, int, int);
-    method public static void glWeightPointerOES(int, int, int, java.nio.Buffer);
-    field public static final int GL_3DC_XY_AMD = 34810; // 0x87fa
-    field public static final int GL_3DC_X_AMD = 34809; // 0x87f9
-    field public static final int GL_ATC_RGBA_EXPLICIT_ALPHA_AMD = 35987; // 0x8c93
-    field public static final int GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD = 34798; // 0x87ee
-    field public static final int GL_ATC_RGB_AMD = 35986; // 0x8c92
-    field public static final int GL_BGRA = 32993; // 0x80e1
-    field public static final int GL_BLEND_DST_ALPHA_OES = 32970; // 0x80ca
-    field public static final int GL_BLEND_DST_RGB_OES = 32968; // 0x80c8
-    field public static final int GL_BLEND_EQUATION_ALPHA_OES = 34877; // 0x883d
-    field public static final int GL_BLEND_EQUATION_OES = 32777; // 0x8009
-    field public static final int GL_BLEND_EQUATION_RGB_OES = 32777; // 0x8009
-    field public static final int GL_BLEND_SRC_ALPHA_OES = 32971; // 0x80cb
-    field public static final int GL_BLEND_SRC_RGB_OES = 32969; // 0x80c9
-    field public static final int GL_BUFFER_ACCESS_OES = 35003; // 0x88bb
-    field public static final int GL_BUFFER_MAPPED_OES = 35004; // 0x88bc
-    field public static final int GL_BUFFER_MAP_POINTER_OES = 35005; // 0x88bd
-    field public static final int GL_COLOR_ATTACHMENT0_OES = 36064; // 0x8ce0
-    field public static final int GL_CURRENT_PALETTE_MATRIX_OES = 34883; // 0x8843
-    field public static final int GL_DECR_WRAP_OES = 34056; // 0x8508
-    field public static final int GL_DEPTH24_STENCIL8_OES = 35056; // 0x88f0
-    field public static final int GL_DEPTH_ATTACHMENT_OES = 36096; // 0x8d00
-    field public static final int GL_DEPTH_COMPONENT16_OES = 33189; // 0x81a5
-    field public static final int GL_DEPTH_COMPONENT24_OES = 33190; // 0x81a6
-    field public static final int GL_DEPTH_COMPONENT32_OES = 33191; // 0x81a7
-    field public static final int GL_DEPTH_STENCIL_OES = 34041; // 0x84f9
-    field public static final int GL_ETC1_RGB8_OES = 36196; // 0x8d64
-    field public static final int GL_FIXED_OES = 5132; // 0x140c
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES = 36049; // 0x8cd1
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES = 36048; // 0x8cd0
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES = 36051; // 0x8cd3
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES = 36050; // 0x8cd2
-    field public static final int GL_FRAMEBUFFER_BINDING_OES = 36006; // 0x8ca6
-    field public static final int GL_FRAMEBUFFER_COMPLETE_OES = 36053; // 0x8cd5
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES = 36054; // 0x8cd6
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES = 36057; // 0x8cd9
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES = 36058; // 0x8cda
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES = 36055; // 0x8cd7
-    field public static final int GL_FRAMEBUFFER_OES = 36160; // 0x8d40
-    field public static final int GL_FRAMEBUFFER_UNSUPPORTED_OES = 36061; // 0x8cdd
-    field public static final int GL_FUNC_ADD_OES = 32774; // 0x8006
-    field public static final int GL_FUNC_REVERSE_SUBTRACT_OES = 32779; // 0x800b
-    field public static final int GL_FUNC_SUBTRACT_OES = 32778; // 0x800a
-    field public static final int GL_INCR_WRAP_OES = 34055; // 0x8507
-    field public static final int GL_INVALID_FRAMEBUFFER_OPERATION_OES = 1286; // 0x506
-    field public static final int GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES = 35742; // 0x8b9e
-    field public static final int GL_MATRIX_INDEX_ARRAY_OES = 34884; // 0x8844
-    field public static final int GL_MATRIX_INDEX_ARRAY_POINTER_OES = 34889; // 0x8849
-    field public static final int GL_MATRIX_INDEX_ARRAY_SIZE_OES = 34886; // 0x8846
-    field public static final int GL_MATRIX_INDEX_ARRAY_STRIDE_OES = 34888; // 0x8848
-    field public static final int GL_MATRIX_INDEX_ARRAY_TYPE_OES = 34887; // 0x8847
-    field public static final int GL_MATRIX_PALETTE_OES = 34880; // 0x8840
-    field public static final int GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES = 34076; // 0x851c
-    field public static final int GL_MAX_PALETTE_MATRICES_OES = 34882; // 0x8842
-    field public static final int GL_MAX_RENDERBUFFER_SIZE_OES = 34024; // 0x84e8
-    field public static final int GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 34047; // 0x84ff
-    field public static final int GL_MAX_VERTEX_UNITS_OES = 34468; // 0x86a4
-    field public static final int GL_MIRRORED_REPEAT_OES = 33648; // 0x8370
-    field public static final int GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES = 35213; // 0x898d
-    field public static final int GL_NONE_OES = 0; // 0x0
-    field public static final int GL_NORMAL_MAP_OES = 34065; // 0x8511
-    field public static final int GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES = 35214; // 0x898e
-    field public static final int GL_REFLECTION_MAP_OES = 34066; // 0x8512
-    field public static final int GL_RENDERBUFFER_ALPHA_SIZE_OES = 36179; // 0x8d53
-    field public static final int GL_RENDERBUFFER_BINDING_OES = 36007; // 0x8ca7
-    field public static final int GL_RENDERBUFFER_BLUE_SIZE_OES = 36178; // 0x8d52
-    field public static final int GL_RENDERBUFFER_DEPTH_SIZE_OES = 36180; // 0x8d54
-    field public static final int GL_RENDERBUFFER_GREEN_SIZE_OES = 36177; // 0x8d51
-    field public static final int GL_RENDERBUFFER_HEIGHT_OES = 36163; // 0x8d43
-    field public static final int GL_RENDERBUFFER_INTERNAL_FORMAT_OES = 36164; // 0x8d44
-    field public static final int GL_RENDERBUFFER_OES = 36161; // 0x8d41
-    field public static final int GL_RENDERBUFFER_RED_SIZE_OES = 36176; // 0x8d50
-    field public static final int GL_RENDERBUFFER_STENCIL_SIZE_OES = 36181; // 0x8d55
-    field public static final int GL_RENDERBUFFER_WIDTH_OES = 36162; // 0x8d42
-    field public static final int GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES = 36200; // 0x8d68
-    field public static final int GL_RGB565_OES = 36194; // 0x8d62
-    field public static final int GL_RGB5_A1_OES = 32855; // 0x8057
-    field public static final int GL_RGB8_OES = 32849; // 0x8051
-    field public static final int GL_RGBA4_OES = 32854; // 0x8056
-    field public static final int GL_RGBA8_OES = 32856; // 0x8058
-    field public static final int GL_SAMPLER_EXTERNAL_OES = 36198; // 0x8d66
-    field public static final int GL_STENCIL_ATTACHMENT_OES = 36128; // 0x8d20
-    field public static final int GL_STENCIL_INDEX1_OES = 36166; // 0x8d46
-    field public static final int GL_STENCIL_INDEX4_OES = 36167; // 0x8d47
-    field public static final int GL_STENCIL_INDEX8_OES = 36168; // 0x8d48
-    field public static final int GL_TEXTURE_BINDING_CUBE_MAP_OES = 34068; // 0x8514
-    field public static final int GL_TEXTURE_BINDING_EXTERNAL_OES = 36199; // 0x8d67
-    field public static final int GL_TEXTURE_CROP_RECT_OES = 35741; // 0x8b9d
-    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES = 34070; // 0x8516
-    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES = 34072; // 0x8518
-    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES = 34074; // 0x851a
-    field public static final int GL_TEXTURE_CUBE_MAP_OES = 34067; // 0x8513
-    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES = 34069; // 0x8515
-    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES = 34071; // 0x8517
-    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES = 34073; // 0x8519
-    field public static final int GL_TEXTURE_EXTERNAL_OES = 36197; // 0x8d65
-    field public static final int GL_TEXTURE_GEN_MODE_OES = 9472; // 0x2500
-    field public static final int GL_TEXTURE_GEN_STR_OES = 36192; // 0x8d60
-    field public static final int GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES = 35215; // 0x898f
-    field public static final int GL_TEXTURE_MAX_ANISOTROPY_EXT = 34046; // 0x84fe
-    field public static final int GL_UNSIGNED_INT_24_8_OES = 34042; // 0x84fa
-    field public static final int GL_WEIGHT_ARRAY_BUFFER_BINDING_OES = 34974; // 0x889e
-    field public static final int GL_WEIGHT_ARRAY_OES = 34477; // 0x86ad
-    field public static final int GL_WEIGHT_ARRAY_POINTER_OES = 34476; // 0x86ac
-    field public static final int GL_WEIGHT_ARRAY_SIZE_OES = 34475; // 0x86ab
-    field public static final int GL_WEIGHT_ARRAY_STRIDE_OES = 34474; // 0x86aa
-    field public static final int GL_WEIGHT_ARRAY_TYPE_OES = 34473; // 0x86a9
-    field public static final int GL_WRITE_ONLY_OES = 35001; // 0x88b9
-  }
-
-  public class GLES20 {
-    ctor public GLES20();
-    method public static void glActiveTexture(int);
-    method public static void glAttachShader(int, int);
-    method public static void glBindAttribLocation(int, int, String);
-    method public static void glBindBuffer(int, int);
-    method public static void glBindFramebuffer(int, int);
-    method public static void glBindRenderbuffer(int, int);
-    method public static void glBindTexture(int, int);
-    method public static void glBlendColor(float, float, float, float);
-    method public static void glBlendEquation(int);
-    method public static void glBlendEquationSeparate(int, int);
-    method public static void glBlendFunc(int, int);
-    method public static void glBlendFuncSeparate(int, int, int, int);
-    method public static void glBufferData(int, int, java.nio.Buffer, int);
-    method public static void glBufferSubData(int, int, int, java.nio.Buffer);
-    method public static int glCheckFramebufferStatus(int);
-    method public static void glClear(int);
-    method public static void glClearColor(float, float, float, float);
-    method public static void glClearDepthf(float);
-    method public static void glClearStencil(int);
-    method public static void glColorMask(boolean, boolean, boolean, boolean);
-    method public static void glCompileShader(int);
-    method public static void glCompressedTexImage2D(int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glCompressedTexSubImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glCopyTexImage2D(int, int, int, int, int, int, int, int);
-    method public static void glCopyTexSubImage2D(int, int, int, int, int, int, int, int);
-    method public static int glCreateProgram();
-    method public static int glCreateShader(int);
-    method public static void glCullFace(int);
-    method public static void glDeleteBuffers(int, int[], int);
-    method public static void glDeleteBuffers(int, java.nio.IntBuffer);
-    method public static void glDeleteFramebuffers(int, int[], int);
-    method public static void glDeleteFramebuffers(int, java.nio.IntBuffer);
-    method public static void glDeleteProgram(int);
-    method public static void glDeleteRenderbuffers(int, int[], int);
-    method public static void glDeleteRenderbuffers(int, java.nio.IntBuffer);
-    method public static void glDeleteShader(int);
-    method public static void glDeleteTextures(int, int[], int);
-    method public static void glDeleteTextures(int, java.nio.IntBuffer);
-    method public static void glDepthFunc(int);
-    method public static void glDepthMask(boolean);
-    method public static void glDepthRangef(float, float);
-    method public static void glDetachShader(int, int);
-    method public static void glDisable(int);
-    method public static void glDisableVertexAttribArray(int);
-    method public static void glDrawArrays(int, int, int);
-    method public static void glDrawElements(int, int, int, int);
-    method public static void glDrawElements(int, int, int, java.nio.Buffer);
-    method public static void glEnable(int);
-    method public static void glEnableVertexAttribArray(int);
-    method public static void glFinish();
-    method public static void glFlush();
-    method public static void glFramebufferRenderbuffer(int, int, int, int);
-    method public static void glFramebufferTexture2D(int, int, int, int, int);
-    method public static void glFrontFace(int);
-    method public static void glGenBuffers(int, int[], int);
-    method public static void glGenBuffers(int, java.nio.IntBuffer);
-    method public static void glGenFramebuffers(int, int[], int);
-    method public static void glGenFramebuffers(int, java.nio.IntBuffer);
-    method public static void glGenRenderbuffers(int, int[], int);
-    method public static void glGenRenderbuffers(int, java.nio.IntBuffer);
-    method public static void glGenTextures(int, int[], int);
-    method public static void glGenTextures(int, java.nio.IntBuffer);
-    method public static void glGenerateMipmap(int);
-    method public static void glGetActiveAttrib(int, int, int, int[], int, int[], int, int[], int, byte[], int);
-    method public static String glGetActiveAttrib(int, int, int[], int, int[], int);
-    method public static String glGetActiveAttrib(int, int, java.nio.IntBuffer, java.nio.IntBuffer);
-    method public static void glGetActiveUniform(int, int, int, int[], int, int[], int, int[], int, byte[], int);
-    method public static String glGetActiveUniform(int, int, int[], int, int[], int);
-    method public static String glGetActiveUniform(int, int, java.nio.IntBuffer, java.nio.IntBuffer);
-    method public static void glGetAttachedShaders(int, int, int[], int, int[], int);
-    method public static void glGetAttachedShaders(int, int, java.nio.IntBuffer, java.nio.IntBuffer);
-    method public static int glGetAttribLocation(int, String);
-    method public static void glGetBooleanv(int, boolean[], int);
-    method public static void glGetBooleanv(int, java.nio.IntBuffer);
-    method public static void glGetBufferParameteriv(int, int, int[], int);
-    method public static void glGetBufferParameteriv(int, int, java.nio.IntBuffer);
-    method public static int glGetError();
-    method public static void glGetFloatv(int, float[], int);
-    method public static void glGetFloatv(int, java.nio.FloatBuffer);
-    method public static void glGetFramebufferAttachmentParameteriv(int, int, int, int[], int);
-    method public static void glGetFramebufferAttachmentParameteriv(int, int, int, java.nio.IntBuffer);
-    method public static void glGetIntegerv(int, int[], int);
-    method public static void glGetIntegerv(int, java.nio.IntBuffer);
-    method public static String glGetProgramInfoLog(int);
-    method public static void glGetProgramiv(int, int, int[], int);
-    method public static void glGetProgramiv(int, int, java.nio.IntBuffer);
-    method public static void glGetRenderbufferParameteriv(int, int, int[], int);
-    method public static void glGetRenderbufferParameteriv(int, int, java.nio.IntBuffer);
-    method public static String glGetShaderInfoLog(int);
-    method public static void glGetShaderPrecisionFormat(int, int, int[], int, int[], int);
-    method public static void glGetShaderPrecisionFormat(int, int, java.nio.IntBuffer, java.nio.IntBuffer);
-    method public static void glGetShaderSource(int, int, int[], int, byte[], int);
-    method public static String glGetShaderSource(int);
-    method public static void glGetShaderiv(int, int, int[], int);
-    method public static void glGetShaderiv(int, int, java.nio.IntBuffer);
-    method public static String glGetString(int);
-    method public static void glGetTexParameterfv(int, int, float[], int);
-    method public static void glGetTexParameterfv(int, int, java.nio.FloatBuffer);
-    method public static void glGetTexParameteriv(int, int, int[], int);
-    method public static void glGetTexParameteriv(int, int, java.nio.IntBuffer);
-    method public static int glGetUniformLocation(int, String);
-    method public static void glGetUniformfv(int, int, float[], int);
-    method public static void glGetUniformfv(int, int, java.nio.FloatBuffer);
-    method public static void glGetUniformiv(int, int, int[], int);
-    method public static void glGetUniformiv(int, int, java.nio.IntBuffer);
-    method public static void glGetVertexAttribfv(int, int, float[], int);
-    method public static void glGetVertexAttribfv(int, int, java.nio.FloatBuffer);
-    method public static void glGetVertexAttribiv(int, int, int[], int);
-    method public static void glGetVertexAttribiv(int, int, java.nio.IntBuffer);
-    method public static void glHint(int, int);
-    method public static boolean glIsBuffer(int);
-    method public static boolean glIsEnabled(int);
-    method public static boolean glIsFramebuffer(int);
-    method public static boolean glIsProgram(int);
-    method public static boolean glIsRenderbuffer(int);
-    method public static boolean glIsShader(int);
-    method public static boolean glIsTexture(int);
-    method public static void glLineWidth(float);
-    method public static void glLinkProgram(int);
-    method public static void glPixelStorei(int, int);
-    method public static void glPolygonOffset(float, float);
-    method public static void glReadPixels(int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glReleaseShaderCompiler();
-    method public static void glRenderbufferStorage(int, int, int, int);
-    method public static void glSampleCoverage(float, boolean);
-    method public static void glScissor(int, int, int, int);
-    method public static void glShaderBinary(int, int[], int, int, java.nio.Buffer, int);
-    method public static void glShaderBinary(int, java.nio.IntBuffer, int, java.nio.Buffer, int);
-    method public static void glShaderSource(int, String);
-    method public static void glStencilFunc(int, int, int);
-    method public static void glStencilFuncSeparate(int, int, int, int);
-    method public static void glStencilMask(int);
-    method public static void glStencilMaskSeparate(int, int);
-    method public static void glStencilOp(int, int, int);
-    method public static void glStencilOpSeparate(int, int, int, int);
-    method public static void glTexImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glTexParameterf(int, int, float);
-    method public static void glTexParameterfv(int, int, float[], int);
-    method public static void glTexParameterfv(int, int, java.nio.FloatBuffer);
-    method public static void glTexParameteri(int, int, int);
-    method public static void glTexParameteriv(int, int, int[], int);
-    method public static void glTexParameteriv(int, int, java.nio.IntBuffer);
-    method public static void glTexSubImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glUniform1f(int, float);
-    method public static void glUniform1fv(int, int, float[], int);
-    method public static void glUniform1fv(int, int, java.nio.FloatBuffer);
-    method public static void glUniform1i(int, int);
-    method public static void glUniform1iv(int, int, int[], int);
-    method public static void glUniform1iv(int, int, java.nio.IntBuffer);
-    method public static void glUniform2f(int, float, float);
-    method public static void glUniform2fv(int, int, float[], int);
-    method public static void glUniform2fv(int, int, java.nio.FloatBuffer);
-    method public static void glUniform2i(int, int, int);
-    method public static void glUniform2iv(int, int, int[], int);
-    method public static void glUniform2iv(int, int, java.nio.IntBuffer);
-    method public static void glUniform3f(int, float, float, float);
-    method public static void glUniform3fv(int, int, float[], int);
-    method public static void glUniform3fv(int, int, java.nio.FloatBuffer);
-    method public static void glUniform3i(int, int, int, int);
-    method public static void glUniform3iv(int, int, int[], int);
-    method public static void glUniform3iv(int, int, java.nio.IntBuffer);
-    method public static void glUniform4f(int, float, float, float, float);
-    method public static void glUniform4fv(int, int, float[], int);
-    method public static void glUniform4fv(int, int, java.nio.FloatBuffer);
-    method public static void glUniform4i(int, int, int, int, int);
-    method public static void glUniform4iv(int, int, int[], int);
-    method public static void glUniform4iv(int, int, java.nio.IntBuffer);
-    method public static void glUniformMatrix2fv(int, int, boolean, float[], int);
-    method public static void glUniformMatrix2fv(int, int, boolean, java.nio.FloatBuffer);
-    method public static void glUniformMatrix3fv(int, int, boolean, float[], int);
-    method public static void glUniformMatrix3fv(int, int, boolean, java.nio.FloatBuffer);
-    method public static void glUniformMatrix4fv(int, int, boolean, float[], int);
-    method public static void glUniformMatrix4fv(int, int, boolean, java.nio.FloatBuffer);
-    method public static void glUseProgram(int);
-    method public static void glValidateProgram(int);
-    method public static void glVertexAttrib1f(int, float);
-    method public static void glVertexAttrib1fv(int, float[], int);
-    method public static void glVertexAttrib1fv(int, java.nio.FloatBuffer);
-    method public static void glVertexAttrib2f(int, float, float);
-    method public static void glVertexAttrib2fv(int, float[], int);
-    method public static void glVertexAttrib2fv(int, java.nio.FloatBuffer);
-    method public static void glVertexAttrib3f(int, float, float, float);
-    method public static void glVertexAttrib3fv(int, float[], int);
-    method public static void glVertexAttrib3fv(int, java.nio.FloatBuffer);
-    method public static void glVertexAttrib4f(int, float, float, float, float);
-    method public static void glVertexAttrib4fv(int, float[], int);
-    method public static void glVertexAttrib4fv(int, java.nio.FloatBuffer);
-    method public static void glVertexAttribPointer(int, int, int, boolean, int, int);
-    method public static void glVertexAttribPointer(int, int, int, boolean, int, java.nio.Buffer);
-    method public static void glViewport(int, int, int, int);
-    field public static final int GL_ACTIVE_ATTRIBUTES = 35721; // 0x8b89
-    field public static final int GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = 35722; // 0x8b8a
-    field public static final int GL_ACTIVE_TEXTURE = 34016; // 0x84e0
-    field public static final int GL_ACTIVE_UNIFORMS = 35718; // 0x8b86
-    field public static final int GL_ACTIVE_UNIFORM_MAX_LENGTH = 35719; // 0x8b87
-    field public static final int GL_ALIASED_LINE_WIDTH_RANGE = 33902; // 0x846e
-    field public static final int GL_ALIASED_POINT_SIZE_RANGE = 33901; // 0x846d
-    field public static final int GL_ALPHA = 6406; // 0x1906
-    field public static final int GL_ALPHA_BITS = 3413; // 0xd55
-    field public static final int GL_ALWAYS = 519; // 0x207
-    field public static final int GL_ARRAY_BUFFER = 34962; // 0x8892
-    field public static final int GL_ARRAY_BUFFER_BINDING = 34964; // 0x8894
-    field public static final int GL_ATTACHED_SHADERS = 35717; // 0x8b85
-    field public static final int GL_BACK = 1029; // 0x405
-    field public static final int GL_BLEND = 3042; // 0xbe2
-    field public static final int GL_BLEND_COLOR = 32773; // 0x8005
-    field public static final int GL_BLEND_DST_ALPHA = 32970; // 0x80ca
-    field public static final int GL_BLEND_DST_RGB = 32968; // 0x80c8
-    field public static final int GL_BLEND_EQUATION = 32777; // 0x8009
-    field public static final int GL_BLEND_EQUATION_ALPHA = 34877; // 0x883d
-    field public static final int GL_BLEND_EQUATION_RGB = 32777; // 0x8009
-    field public static final int GL_BLEND_SRC_ALPHA = 32971; // 0x80cb
-    field public static final int GL_BLEND_SRC_RGB = 32969; // 0x80c9
-    field public static final int GL_BLUE_BITS = 3412; // 0xd54
-    field public static final int GL_BOOL = 35670; // 0x8b56
-    field public static final int GL_BOOL_VEC2 = 35671; // 0x8b57
-    field public static final int GL_BOOL_VEC3 = 35672; // 0x8b58
-    field public static final int GL_BOOL_VEC4 = 35673; // 0x8b59
-    field public static final int GL_BUFFER_SIZE = 34660; // 0x8764
-    field public static final int GL_BUFFER_USAGE = 34661; // 0x8765
-    field public static final int GL_BYTE = 5120; // 0x1400
-    field public static final int GL_CCW = 2305; // 0x901
-    field public static final int GL_CLAMP_TO_EDGE = 33071; // 0x812f
-    field public static final int GL_COLOR_ATTACHMENT0 = 36064; // 0x8ce0
-    field public static final int GL_COLOR_BUFFER_BIT = 16384; // 0x4000
-    field public static final int GL_COLOR_CLEAR_VALUE = 3106; // 0xc22
-    field public static final int GL_COLOR_WRITEMASK = 3107; // 0xc23
-    field public static final int GL_COMPILE_STATUS = 35713; // 0x8b81
-    field public static final int GL_COMPRESSED_TEXTURE_FORMATS = 34467; // 0x86a3
-    field public static final int GL_CONSTANT_ALPHA = 32771; // 0x8003
-    field public static final int GL_CONSTANT_COLOR = 32769; // 0x8001
-    field public static final int GL_CULL_FACE = 2884; // 0xb44
-    field public static final int GL_CULL_FACE_MODE = 2885; // 0xb45
-    field public static final int GL_CURRENT_PROGRAM = 35725; // 0x8b8d
-    field public static final int GL_CURRENT_VERTEX_ATTRIB = 34342; // 0x8626
-    field public static final int GL_CW = 2304; // 0x900
-    field public static final int GL_DECR = 7683; // 0x1e03
-    field public static final int GL_DECR_WRAP = 34056; // 0x8508
-    field public static final int GL_DELETE_STATUS = 35712; // 0x8b80
-    field public static final int GL_DEPTH_ATTACHMENT = 36096; // 0x8d00
-    field public static final int GL_DEPTH_BITS = 3414; // 0xd56
-    field public static final int GL_DEPTH_BUFFER_BIT = 256; // 0x100
-    field public static final int GL_DEPTH_CLEAR_VALUE = 2931; // 0xb73
-    field public static final int GL_DEPTH_COMPONENT = 6402; // 0x1902
-    field public static final int GL_DEPTH_COMPONENT16 = 33189; // 0x81a5
-    field public static final int GL_DEPTH_FUNC = 2932; // 0xb74
-    field public static final int GL_DEPTH_RANGE = 2928; // 0xb70
-    field public static final int GL_DEPTH_TEST = 2929; // 0xb71
-    field public static final int GL_DEPTH_WRITEMASK = 2930; // 0xb72
-    field public static final int GL_DITHER = 3024; // 0xbd0
-    field public static final int GL_DONT_CARE = 4352; // 0x1100
-    field public static final int GL_DST_ALPHA = 772; // 0x304
-    field public static final int GL_DST_COLOR = 774; // 0x306
-    field public static final int GL_DYNAMIC_DRAW = 35048; // 0x88e8
-    field public static final int GL_ELEMENT_ARRAY_BUFFER = 34963; // 0x8893
-    field public static final int GL_ELEMENT_ARRAY_BUFFER_BINDING = 34965; // 0x8895
-    field public static final int GL_EQUAL = 514; // 0x202
-    field public static final int GL_EXTENSIONS = 7939; // 0x1f03
-    field public static final int GL_FALSE = 0; // 0x0
-    field public static final int GL_FASTEST = 4353; // 0x1101
-    field public static final int GL_FIXED = 5132; // 0x140c
-    field public static final int GL_FLOAT = 5126; // 0x1406
-    field public static final int GL_FLOAT_MAT2 = 35674; // 0x8b5a
-    field public static final int GL_FLOAT_MAT3 = 35675; // 0x8b5b
-    field public static final int GL_FLOAT_MAT4 = 35676; // 0x8b5c
-    field public static final int GL_FLOAT_VEC2 = 35664; // 0x8b50
-    field public static final int GL_FLOAT_VEC3 = 35665; // 0x8b51
-    field public static final int GL_FLOAT_VEC4 = 35666; // 0x8b52
-    field public static final int GL_FRAGMENT_SHADER = 35632; // 0x8b30
-    field public static final int GL_FRAMEBUFFER = 36160; // 0x8d40
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 36049; // 0x8cd1
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 36048; // 0x8cd0
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 36051; // 0x8cd3
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 36050; // 0x8cd2
-    field public static final int GL_FRAMEBUFFER_BINDING = 36006; // 0x8ca6
-    field public static final int GL_FRAMEBUFFER_COMPLETE = 36053; // 0x8cd5
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 36054; // 0x8cd6
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 36057; // 0x8cd9
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 36055; // 0x8cd7
-    field public static final int GL_FRAMEBUFFER_UNSUPPORTED = 36061; // 0x8cdd
-    field public static final int GL_FRONT = 1028; // 0x404
-    field public static final int GL_FRONT_AND_BACK = 1032; // 0x408
-    field public static final int GL_FRONT_FACE = 2886; // 0xb46
-    field public static final int GL_FUNC_ADD = 32774; // 0x8006
-    field public static final int GL_FUNC_REVERSE_SUBTRACT = 32779; // 0x800b
-    field public static final int GL_FUNC_SUBTRACT = 32778; // 0x800a
-    field public static final int GL_GENERATE_MIPMAP_HINT = 33170; // 0x8192
-    field public static final int GL_GEQUAL = 518; // 0x206
-    field public static final int GL_GREATER = 516; // 0x204
-    field public static final int GL_GREEN_BITS = 3411; // 0xd53
-    field public static final int GL_HIGH_FLOAT = 36338; // 0x8df2
-    field public static final int GL_HIGH_INT = 36341; // 0x8df5
-    field public static final int GL_IMPLEMENTATION_COLOR_READ_FORMAT = 35739; // 0x8b9b
-    field public static final int GL_IMPLEMENTATION_COLOR_READ_TYPE = 35738; // 0x8b9a
-    field public static final int GL_INCR = 7682; // 0x1e02
-    field public static final int GL_INCR_WRAP = 34055; // 0x8507
-    field public static final int GL_INFO_LOG_LENGTH = 35716; // 0x8b84
-    field public static final int GL_INT = 5124; // 0x1404
-    field public static final int GL_INT_VEC2 = 35667; // 0x8b53
-    field public static final int GL_INT_VEC3 = 35668; // 0x8b54
-    field public static final int GL_INT_VEC4 = 35669; // 0x8b55
-    field public static final int GL_INVALID_ENUM = 1280; // 0x500
-    field public static final int GL_INVALID_FRAMEBUFFER_OPERATION = 1286; // 0x506
-    field public static final int GL_INVALID_OPERATION = 1282; // 0x502
-    field public static final int GL_INVALID_VALUE = 1281; // 0x501
-    field public static final int GL_INVERT = 5386; // 0x150a
-    field public static final int GL_KEEP = 7680; // 0x1e00
-    field public static final int GL_LEQUAL = 515; // 0x203
-    field public static final int GL_LESS = 513; // 0x201
-    field public static final int GL_LINEAR = 9729; // 0x2601
-    field public static final int GL_LINEAR_MIPMAP_LINEAR = 9987; // 0x2703
-    field public static final int GL_LINEAR_MIPMAP_NEAREST = 9985; // 0x2701
-    field public static final int GL_LINES = 1; // 0x1
-    field public static final int GL_LINE_LOOP = 2; // 0x2
-    field public static final int GL_LINE_STRIP = 3; // 0x3
-    field public static final int GL_LINE_WIDTH = 2849; // 0xb21
-    field public static final int GL_LINK_STATUS = 35714; // 0x8b82
-    field public static final int GL_LOW_FLOAT = 36336; // 0x8df0
-    field public static final int GL_LOW_INT = 36339; // 0x8df3
-    field public static final int GL_LUMINANCE = 6409; // 0x1909
-    field public static final int GL_LUMINANCE_ALPHA = 6410; // 0x190a
-    field public static final int GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 35661; // 0x8b4d
-    field public static final int GL_MAX_CUBE_MAP_TEXTURE_SIZE = 34076; // 0x851c
-    field public static final int GL_MAX_FRAGMENT_UNIFORM_VECTORS = 36349; // 0x8dfd
-    field public static final int GL_MAX_RENDERBUFFER_SIZE = 34024; // 0x84e8
-    field public static final int GL_MAX_TEXTURE_IMAGE_UNITS = 34930; // 0x8872
-    field public static final int GL_MAX_TEXTURE_SIZE = 3379; // 0xd33
-    field public static final int GL_MAX_VARYING_VECTORS = 36348; // 0x8dfc
-    field public static final int GL_MAX_VERTEX_ATTRIBS = 34921; // 0x8869
-    field public static final int GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 35660; // 0x8b4c
-    field public static final int GL_MAX_VERTEX_UNIFORM_VECTORS = 36347; // 0x8dfb
-    field public static final int GL_MAX_VIEWPORT_DIMS = 3386; // 0xd3a
-    field public static final int GL_MEDIUM_FLOAT = 36337; // 0x8df1
-    field public static final int GL_MEDIUM_INT = 36340; // 0x8df4
-    field public static final int GL_MIRRORED_REPEAT = 33648; // 0x8370
-    field public static final int GL_NEAREST = 9728; // 0x2600
-    field public static final int GL_NEAREST_MIPMAP_LINEAR = 9986; // 0x2702
-    field public static final int GL_NEAREST_MIPMAP_NEAREST = 9984; // 0x2700
-    field public static final int GL_NEVER = 512; // 0x200
-    field public static final int GL_NICEST = 4354; // 0x1102
-    field public static final int GL_NONE = 0; // 0x0
-    field public static final int GL_NOTEQUAL = 517; // 0x205
-    field public static final int GL_NO_ERROR = 0; // 0x0
-    field public static final int GL_NUM_COMPRESSED_TEXTURE_FORMATS = 34466; // 0x86a2
-    field public static final int GL_NUM_SHADER_BINARY_FORMATS = 36345; // 0x8df9
-    field public static final int GL_ONE = 1; // 0x1
-    field public static final int GL_ONE_MINUS_CONSTANT_ALPHA = 32772; // 0x8004
-    field public static final int GL_ONE_MINUS_CONSTANT_COLOR = 32770; // 0x8002
-    field public static final int GL_ONE_MINUS_DST_ALPHA = 773; // 0x305
-    field public static final int GL_ONE_MINUS_DST_COLOR = 775; // 0x307
-    field public static final int GL_ONE_MINUS_SRC_ALPHA = 771; // 0x303
-    field public static final int GL_ONE_MINUS_SRC_COLOR = 769; // 0x301
-    field public static final int GL_OUT_OF_MEMORY = 1285; // 0x505
-    field public static final int GL_PACK_ALIGNMENT = 3333; // 0xd05
-    field public static final int GL_POINTS = 0; // 0x0
-    field public static final int GL_POLYGON_OFFSET_FACTOR = 32824; // 0x8038
-    field public static final int GL_POLYGON_OFFSET_FILL = 32823; // 0x8037
-    field public static final int GL_POLYGON_OFFSET_UNITS = 10752; // 0x2a00
-    field public static final int GL_RED_BITS = 3410; // 0xd52
-    field public static final int GL_RENDERBUFFER = 36161; // 0x8d41
-    field public static final int GL_RENDERBUFFER_ALPHA_SIZE = 36179; // 0x8d53
-    field public static final int GL_RENDERBUFFER_BINDING = 36007; // 0x8ca7
-    field public static final int GL_RENDERBUFFER_BLUE_SIZE = 36178; // 0x8d52
-    field public static final int GL_RENDERBUFFER_DEPTH_SIZE = 36180; // 0x8d54
-    field public static final int GL_RENDERBUFFER_GREEN_SIZE = 36177; // 0x8d51
-    field public static final int GL_RENDERBUFFER_HEIGHT = 36163; // 0x8d43
-    field public static final int GL_RENDERBUFFER_INTERNAL_FORMAT = 36164; // 0x8d44
-    field public static final int GL_RENDERBUFFER_RED_SIZE = 36176; // 0x8d50
-    field public static final int GL_RENDERBUFFER_STENCIL_SIZE = 36181; // 0x8d55
-    field public static final int GL_RENDERBUFFER_WIDTH = 36162; // 0x8d42
-    field public static final int GL_RENDERER = 7937; // 0x1f01
-    field public static final int GL_REPEAT = 10497; // 0x2901
-    field public static final int GL_REPLACE = 7681; // 0x1e01
-    field public static final int GL_RGB = 6407; // 0x1907
-    field public static final int GL_RGB565 = 36194; // 0x8d62
-    field public static final int GL_RGB5_A1 = 32855; // 0x8057
-    field public static final int GL_RGBA = 6408; // 0x1908
-    field public static final int GL_RGBA4 = 32854; // 0x8056
-    field public static final int GL_SAMPLER_2D = 35678; // 0x8b5e
-    field public static final int GL_SAMPLER_CUBE = 35680; // 0x8b60
-    field public static final int GL_SAMPLES = 32937; // 0x80a9
-    field public static final int GL_SAMPLE_ALPHA_TO_COVERAGE = 32926; // 0x809e
-    field public static final int GL_SAMPLE_BUFFERS = 32936; // 0x80a8
-    field public static final int GL_SAMPLE_COVERAGE = 32928; // 0x80a0
-    field public static final int GL_SAMPLE_COVERAGE_INVERT = 32939; // 0x80ab
-    field public static final int GL_SAMPLE_COVERAGE_VALUE = 32938; // 0x80aa
-    field public static final int GL_SCISSOR_BOX = 3088; // 0xc10
-    field public static final int GL_SCISSOR_TEST = 3089; // 0xc11
-    field public static final int GL_SHADER_BINARY_FORMATS = 36344; // 0x8df8
-    field public static final int GL_SHADER_COMPILER = 36346; // 0x8dfa
-    field public static final int GL_SHADER_SOURCE_LENGTH = 35720; // 0x8b88
-    field public static final int GL_SHADER_TYPE = 35663; // 0x8b4f
-    field public static final int GL_SHADING_LANGUAGE_VERSION = 35724; // 0x8b8c
-    field public static final int GL_SHORT = 5122; // 0x1402
-    field public static final int GL_SRC_ALPHA = 770; // 0x302
-    field public static final int GL_SRC_ALPHA_SATURATE = 776; // 0x308
-    field public static final int GL_SRC_COLOR = 768; // 0x300
-    field public static final int GL_STATIC_DRAW = 35044; // 0x88e4
-    field public static final int GL_STENCIL_ATTACHMENT = 36128; // 0x8d20
-    field public static final int GL_STENCIL_BACK_FAIL = 34817; // 0x8801
-    field public static final int GL_STENCIL_BACK_FUNC = 34816; // 0x8800
-    field public static final int GL_STENCIL_BACK_PASS_DEPTH_FAIL = 34818; // 0x8802
-    field public static final int GL_STENCIL_BACK_PASS_DEPTH_PASS = 34819; // 0x8803
-    field public static final int GL_STENCIL_BACK_REF = 36003; // 0x8ca3
-    field public static final int GL_STENCIL_BACK_VALUE_MASK = 36004; // 0x8ca4
-    field public static final int GL_STENCIL_BACK_WRITEMASK = 36005; // 0x8ca5
-    field public static final int GL_STENCIL_BITS = 3415; // 0xd57
-    field public static final int GL_STENCIL_BUFFER_BIT = 1024; // 0x400
-    field public static final int GL_STENCIL_CLEAR_VALUE = 2961; // 0xb91
-    field public static final int GL_STENCIL_FAIL = 2964; // 0xb94
-    field public static final int GL_STENCIL_FUNC = 2962; // 0xb92
-    field @Deprecated public static final int GL_STENCIL_INDEX = 6401; // 0x1901
-    field public static final int GL_STENCIL_INDEX8 = 36168; // 0x8d48
-    field public static final int GL_STENCIL_PASS_DEPTH_FAIL = 2965; // 0xb95
-    field public static final int GL_STENCIL_PASS_DEPTH_PASS = 2966; // 0xb96
-    field public static final int GL_STENCIL_REF = 2967; // 0xb97
-    field public static final int GL_STENCIL_TEST = 2960; // 0xb90
-    field public static final int GL_STENCIL_VALUE_MASK = 2963; // 0xb93
-    field public static final int GL_STENCIL_WRITEMASK = 2968; // 0xb98
-    field public static final int GL_STREAM_DRAW = 35040; // 0x88e0
-    field public static final int GL_SUBPIXEL_BITS = 3408; // 0xd50
-    field public static final int GL_TEXTURE = 5890; // 0x1702
-    field public static final int GL_TEXTURE0 = 33984; // 0x84c0
-    field public static final int GL_TEXTURE1 = 33985; // 0x84c1
-    field public static final int GL_TEXTURE10 = 33994; // 0x84ca
-    field public static final int GL_TEXTURE11 = 33995; // 0x84cb
-    field public static final int GL_TEXTURE12 = 33996; // 0x84cc
-    field public static final int GL_TEXTURE13 = 33997; // 0x84cd
-    field public static final int GL_TEXTURE14 = 33998; // 0x84ce
-    field public static final int GL_TEXTURE15 = 33999; // 0x84cf
-    field public static final int GL_TEXTURE16 = 34000; // 0x84d0
-    field public static final int GL_TEXTURE17 = 34001; // 0x84d1
-    field public static final int GL_TEXTURE18 = 34002; // 0x84d2
-    field public static final int GL_TEXTURE19 = 34003; // 0x84d3
-    field public static final int GL_TEXTURE2 = 33986; // 0x84c2
-    field public static final int GL_TEXTURE20 = 34004; // 0x84d4
-    field public static final int GL_TEXTURE21 = 34005; // 0x84d5
-    field public static final int GL_TEXTURE22 = 34006; // 0x84d6
-    field public static final int GL_TEXTURE23 = 34007; // 0x84d7
-    field public static final int GL_TEXTURE24 = 34008; // 0x84d8
-    field public static final int GL_TEXTURE25 = 34009; // 0x84d9
-    field public static final int GL_TEXTURE26 = 34010; // 0x84da
-    field public static final int GL_TEXTURE27 = 34011; // 0x84db
-    field public static final int GL_TEXTURE28 = 34012; // 0x84dc
-    field public static final int GL_TEXTURE29 = 34013; // 0x84dd
-    field public static final int GL_TEXTURE3 = 33987; // 0x84c3
-    field public static final int GL_TEXTURE30 = 34014; // 0x84de
-    field public static final int GL_TEXTURE31 = 34015; // 0x84df
-    field public static final int GL_TEXTURE4 = 33988; // 0x84c4
-    field public static final int GL_TEXTURE5 = 33989; // 0x84c5
-    field public static final int GL_TEXTURE6 = 33990; // 0x84c6
-    field public static final int GL_TEXTURE7 = 33991; // 0x84c7
-    field public static final int GL_TEXTURE8 = 33992; // 0x84c8
-    field public static final int GL_TEXTURE9 = 33993; // 0x84c9
-    field public static final int GL_TEXTURE_2D = 3553; // 0xde1
-    field public static final int GL_TEXTURE_BINDING_2D = 32873; // 0x8069
-    field public static final int GL_TEXTURE_BINDING_CUBE_MAP = 34068; // 0x8514
-    field public static final int GL_TEXTURE_CUBE_MAP = 34067; // 0x8513
-    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 34070; // 0x8516
-    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072; // 0x8518
-    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074; // 0x851a
-    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_X = 34069; // 0x8515
-    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 34071; // 0x8517
-    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 34073; // 0x8519
-    field public static final int GL_TEXTURE_MAG_FILTER = 10240; // 0x2800
-    field public static final int GL_TEXTURE_MIN_FILTER = 10241; // 0x2801
-    field public static final int GL_TEXTURE_WRAP_S = 10242; // 0x2802
-    field public static final int GL_TEXTURE_WRAP_T = 10243; // 0x2803
-    field public static final int GL_TRIANGLES = 4; // 0x4
-    field public static final int GL_TRIANGLE_FAN = 6; // 0x6
-    field public static final int GL_TRIANGLE_STRIP = 5; // 0x5
-    field public static final int GL_TRUE = 1; // 0x1
-    field public static final int GL_UNPACK_ALIGNMENT = 3317; // 0xcf5
-    field public static final int GL_UNSIGNED_BYTE = 5121; // 0x1401
-    field public static final int GL_UNSIGNED_INT = 5125; // 0x1405
-    field public static final int GL_UNSIGNED_SHORT = 5123; // 0x1403
-    field public static final int GL_UNSIGNED_SHORT_4_4_4_4 = 32819; // 0x8033
-    field public static final int GL_UNSIGNED_SHORT_5_5_5_1 = 32820; // 0x8034
-    field public static final int GL_UNSIGNED_SHORT_5_6_5 = 33635; // 0x8363
-    field public static final int GL_VALIDATE_STATUS = 35715; // 0x8b83
-    field public static final int GL_VENDOR = 7936; // 0x1f00
-    field public static final int GL_VERSION = 7938; // 0x1f02
-    field public static final int GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 34975; // 0x889f
-    field public static final int GL_VERTEX_ATTRIB_ARRAY_ENABLED = 34338; // 0x8622
-    field public static final int GL_VERTEX_ATTRIB_ARRAY_NORMALIZED = 34922; // 0x886a
-    field public static final int GL_VERTEX_ATTRIB_ARRAY_POINTER = 34373; // 0x8645
-    field public static final int GL_VERTEX_ATTRIB_ARRAY_SIZE = 34339; // 0x8623
-    field public static final int GL_VERTEX_ATTRIB_ARRAY_STRIDE = 34340; // 0x8624
-    field public static final int GL_VERTEX_ATTRIB_ARRAY_TYPE = 34341; // 0x8625
-    field public static final int GL_VERTEX_SHADER = 35633; // 0x8b31
-    field public static final int GL_VIEWPORT = 2978; // 0xba2
-    field public static final int GL_ZERO = 0; // 0x0
-  }
-
-  public class GLES30 extends android.opengl.GLES20 {
-    ctor public GLES30();
-    method public static void glBeginQuery(int, int);
-    method public static void glBeginTransformFeedback(int);
-    method public static void glBindBufferBase(int, int, int);
-    method public static void glBindBufferRange(int, int, int, int, int);
-    method public static void glBindSampler(int, int);
-    method public static void glBindTransformFeedback(int, int);
-    method public static void glBindVertexArray(int);
-    method public static void glBlitFramebuffer(int, int, int, int, int, int, int, int, int, int);
-    method public static void glClearBufferfi(int, int, float, int);
-    method public static void glClearBufferfv(int, int, float[], int);
-    method public static void glClearBufferfv(int, int, java.nio.FloatBuffer);
-    method public static void glClearBufferiv(int, int, int[], int);
-    method public static void glClearBufferiv(int, int, java.nio.IntBuffer);
-    method public static void glClearBufferuiv(int, int, int[], int);
-    method public static void glClearBufferuiv(int, int, java.nio.IntBuffer);
-    method public static int glClientWaitSync(long, int, long);
-    method public static void glCompressedTexImage3D(int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glCompressedTexImage3D(int, int, int, int, int, int, int, int, int);
-    method public static void glCompressedTexSubImage3D(int, int, int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glCompressedTexSubImage3D(int, int, int, int, int, int, int, int, int, int, int);
-    method public static void glCopyBufferSubData(int, int, int, int, int);
-    method public static void glCopyTexSubImage3D(int, int, int, int, int, int, int, int, int);
-    method public static void glDeleteQueries(int, int[], int);
-    method public static void glDeleteQueries(int, java.nio.IntBuffer);
-    method public static void glDeleteSamplers(int, int[], int);
-    method public static void glDeleteSamplers(int, java.nio.IntBuffer);
-    method public static void glDeleteSync(long);
-    method public static void glDeleteTransformFeedbacks(int, int[], int);
-    method public static void glDeleteTransformFeedbacks(int, java.nio.IntBuffer);
-    method public static void glDeleteVertexArrays(int, int[], int);
-    method public static void glDeleteVertexArrays(int, java.nio.IntBuffer);
-    method public static void glDrawArraysInstanced(int, int, int, int);
-    method public static void glDrawBuffers(int, int[], int);
-    method public static void glDrawBuffers(int, java.nio.IntBuffer);
-    method public static void glDrawElementsInstanced(int, int, int, java.nio.Buffer, int);
-    method public static void glDrawElementsInstanced(int, int, int, int, int);
-    method public static void glDrawRangeElements(int, int, int, int, int, java.nio.Buffer);
-    method public static void glDrawRangeElements(int, int, int, int, int, int);
-    method public static void glEndQuery(int);
-    method public static void glEndTransformFeedback();
-    method public static long glFenceSync(int, int);
-    method public static void glFlushMappedBufferRange(int, int, int);
-    method public static void glFramebufferTextureLayer(int, int, int, int, int);
-    method public static void glGenQueries(int, int[], int);
-    method public static void glGenQueries(int, java.nio.IntBuffer);
-    method public static void glGenSamplers(int, int[], int);
-    method public static void glGenSamplers(int, java.nio.IntBuffer);
-    method public static void glGenTransformFeedbacks(int, int[], int);
-    method public static void glGenTransformFeedbacks(int, java.nio.IntBuffer);
-    method public static void glGenVertexArrays(int, int[], int);
-    method public static void glGenVertexArrays(int, java.nio.IntBuffer);
-    method public static void glGetActiveUniformBlockName(int, int, int, int[], int, byte[], int);
-    method public static void glGetActiveUniformBlockName(int, int, java.nio.Buffer, java.nio.Buffer);
-    method public static String glGetActiveUniformBlockName(int, int);
-    method public static void glGetActiveUniformBlockiv(int, int, int, int[], int);
-    method public static void glGetActiveUniformBlockiv(int, int, int, java.nio.IntBuffer);
-    method public static void glGetActiveUniformsiv(int, int, int[], int, int, int[], int);
-    method public static void glGetActiveUniformsiv(int, int, java.nio.IntBuffer, int, java.nio.IntBuffer);
-    method public static void glGetBufferParameteri64v(int, int, long[], int);
-    method public static void glGetBufferParameteri64v(int, int, java.nio.LongBuffer);
-    method public static java.nio.Buffer glGetBufferPointerv(int, int);
-    method public static int glGetFragDataLocation(int, String);
-    method public static void glGetInteger64i_v(int, int, long[], int);
-    method public static void glGetInteger64i_v(int, int, java.nio.LongBuffer);
-    method public static void glGetInteger64v(int, long[], int);
-    method public static void glGetInteger64v(int, java.nio.LongBuffer);
-    method public static void glGetIntegeri_v(int, int, int[], int);
-    method public static void glGetIntegeri_v(int, int, java.nio.IntBuffer);
-    method public static void glGetInternalformativ(int, int, int, int, int[], int);
-    method public static void glGetInternalformativ(int, int, int, int, java.nio.IntBuffer);
-    method public static void glGetProgramBinary(int, int, int[], int, int[], int, java.nio.Buffer);
-    method public static void glGetProgramBinary(int, int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.Buffer);
-    method public static void glGetQueryObjectuiv(int, int, int[], int);
-    method public static void glGetQueryObjectuiv(int, int, java.nio.IntBuffer);
-    method public static void glGetQueryiv(int, int, int[], int);
-    method public static void glGetQueryiv(int, int, java.nio.IntBuffer);
-    method public static void glGetSamplerParameterfv(int, int, float[], int);
-    method public static void glGetSamplerParameterfv(int, int, java.nio.FloatBuffer);
-    method public static void glGetSamplerParameteriv(int, int, int[], int);
-    method public static void glGetSamplerParameteriv(int, int, java.nio.IntBuffer);
-    method public static String glGetStringi(int, int);
-    method public static void glGetSynciv(long, int, int, int[], int, int[], int);
-    method public static void glGetSynciv(long, int, int, java.nio.IntBuffer, java.nio.IntBuffer);
-    method public static void glGetTransformFeedbackVarying(int, int, int, int[], int, int[], int, int[], int, byte[], int);
-    method @Deprecated public static void glGetTransformFeedbackVarying(int, int, int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, byte);
-    method public static void glGetTransformFeedbackVarying(int, int, int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.ByteBuffer);
-    method public static String glGetTransformFeedbackVarying(int, int, int[], int, int[], int);
-    method public static String glGetTransformFeedbackVarying(int, int, java.nio.IntBuffer, java.nio.IntBuffer);
-    method public static int glGetUniformBlockIndex(int, String);
-    method public static void glGetUniformIndices(int, String[], int[], int);
-    method public static void glGetUniformIndices(int, String[], java.nio.IntBuffer);
-    method public static void glGetUniformuiv(int, int, int[], int);
-    method public static void glGetUniformuiv(int, int, java.nio.IntBuffer);
-    method public static void glGetVertexAttribIiv(int, int, int[], int);
-    method public static void glGetVertexAttribIiv(int, int, java.nio.IntBuffer);
-    method public static void glGetVertexAttribIuiv(int, int, int[], int);
-    method public static void glGetVertexAttribIuiv(int, int, java.nio.IntBuffer);
-    method public static void glInvalidateFramebuffer(int, int, int[], int);
-    method public static void glInvalidateFramebuffer(int, int, java.nio.IntBuffer);
-    method public static void glInvalidateSubFramebuffer(int, int, int[], int, int, int, int, int);
-    method public static void glInvalidateSubFramebuffer(int, int, java.nio.IntBuffer, int, int, int, int);
-    method public static boolean glIsQuery(int);
-    method public static boolean glIsSampler(int);
-    method public static boolean glIsSync(long);
-    method public static boolean glIsTransformFeedback(int);
-    method public static boolean glIsVertexArray(int);
-    method public static java.nio.Buffer glMapBufferRange(int, int, int, int);
-    method public static void glPauseTransformFeedback();
-    method public static void glProgramBinary(int, int, java.nio.Buffer, int);
-    method public static void glProgramParameteri(int, int, int);
-    method public static void glReadBuffer(int);
-    method public static void glReadPixels(int, int, int, int, int, int, int);
-    method public static void glRenderbufferStorageMultisample(int, int, int, int, int);
-    method public static void glResumeTransformFeedback();
-    method public static void glSamplerParameterf(int, int, float);
-    method public static void glSamplerParameterfv(int, int, float[], int);
-    method public static void glSamplerParameterfv(int, int, java.nio.FloatBuffer);
-    method public static void glSamplerParameteri(int, int, int);
-    method public static void glSamplerParameteriv(int, int, int[], int);
-    method public static void glSamplerParameteriv(int, int, java.nio.IntBuffer);
-    method public static void glTexImage3D(int, int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glTexImage3D(int, int, int, int, int, int, int, int, int, int);
-    method public static void glTexStorage2D(int, int, int, int, int);
-    method public static void glTexStorage3D(int, int, int, int, int, int);
-    method public static void glTexSubImage3D(int, int, int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glTexSubImage3D(int, int, int, int, int, int, int, int, int, int, int);
-    method public static void glTransformFeedbackVaryings(int, String[], int);
-    method public static void glUniform1ui(int, int);
-    method public static void glUniform1uiv(int, int, int[], int);
-    method public static void glUniform1uiv(int, int, java.nio.IntBuffer);
-    method public static void glUniform2ui(int, int, int);
-    method public static void glUniform2uiv(int, int, int[], int);
-    method public static void glUniform2uiv(int, int, java.nio.IntBuffer);
-    method public static void glUniform3ui(int, int, int, int);
-    method public static void glUniform3uiv(int, int, int[], int);
-    method public static void glUniform3uiv(int, int, java.nio.IntBuffer);
-    method public static void glUniform4ui(int, int, int, int, int);
-    method public static void glUniform4uiv(int, int, int[], int);
-    method public static void glUniform4uiv(int, int, java.nio.IntBuffer);
-    method public static void glUniformBlockBinding(int, int, int);
-    method public static void glUniformMatrix2x3fv(int, int, boolean, float[], int);
-    method public static void glUniformMatrix2x3fv(int, int, boolean, java.nio.FloatBuffer);
-    method public static void glUniformMatrix2x4fv(int, int, boolean, float[], int);
-    method public static void glUniformMatrix2x4fv(int, int, boolean, java.nio.FloatBuffer);
-    method public static void glUniformMatrix3x2fv(int, int, boolean, float[], int);
-    method public static void glUniformMatrix3x2fv(int, int, boolean, java.nio.FloatBuffer);
-    method public static void glUniformMatrix3x4fv(int, int, boolean, float[], int);
-    method public static void glUniformMatrix3x4fv(int, int, boolean, java.nio.FloatBuffer);
-    method public static void glUniformMatrix4x2fv(int, int, boolean, float[], int);
-    method public static void glUniformMatrix4x2fv(int, int, boolean, java.nio.FloatBuffer);
-    method public static void glUniformMatrix4x3fv(int, int, boolean, float[], int);
-    method public static void glUniformMatrix4x3fv(int, int, boolean, java.nio.FloatBuffer);
-    method public static boolean glUnmapBuffer(int);
-    method public static void glVertexAttribDivisor(int, int);
-    method public static void glVertexAttribI4i(int, int, int, int, int);
-    method public static void glVertexAttribI4iv(int, int[], int);
-    method public static void glVertexAttribI4iv(int, java.nio.IntBuffer);
-    method public static void glVertexAttribI4ui(int, int, int, int, int);
-    method public static void glVertexAttribI4uiv(int, int[], int);
-    method public static void glVertexAttribI4uiv(int, java.nio.IntBuffer);
-    method public static void glVertexAttribIPointer(int, int, int, int, java.nio.Buffer);
-    method public static void glVertexAttribIPointer(int, int, int, int, int);
-    method public static void glWaitSync(long, int, long);
-    field public static final int GL_ACTIVE_UNIFORM_BLOCKS = 35382; // 0x8a36
-    field public static final int GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = 35381; // 0x8a35
-    field public static final int GL_ALREADY_SIGNALED = 37146; // 0x911a
-    field public static final int GL_ANY_SAMPLES_PASSED = 35887; // 0x8c2f
-    field public static final int GL_ANY_SAMPLES_PASSED_CONSERVATIVE = 36202; // 0x8d6a
-    field public static final int GL_BLUE = 6405; // 0x1905
-    field public static final int GL_BUFFER_ACCESS_FLAGS = 37151; // 0x911f
-    field public static final int GL_BUFFER_MAPPED = 35004; // 0x88bc
-    field public static final int GL_BUFFER_MAP_LENGTH = 37152; // 0x9120
-    field public static final int GL_BUFFER_MAP_OFFSET = 37153; // 0x9121
-    field public static final int GL_BUFFER_MAP_POINTER = 35005; // 0x88bd
-    field public static final int GL_COLOR = 6144; // 0x1800
-    field public static final int GL_COLOR_ATTACHMENT1 = 36065; // 0x8ce1
-    field public static final int GL_COLOR_ATTACHMENT10 = 36074; // 0x8cea
-    field public static final int GL_COLOR_ATTACHMENT11 = 36075; // 0x8ceb
-    field public static final int GL_COLOR_ATTACHMENT12 = 36076; // 0x8cec
-    field public static final int GL_COLOR_ATTACHMENT13 = 36077; // 0x8ced
-    field public static final int GL_COLOR_ATTACHMENT14 = 36078; // 0x8cee
-    field public static final int GL_COLOR_ATTACHMENT15 = 36079; // 0x8cef
-    field public static final int GL_COLOR_ATTACHMENT2 = 36066; // 0x8ce2
-    field public static final int GL_COLOR_ATTACHMENT3 = 36067; // 0x8ce3
-    field public static final int GL_COLOR_ATTACHMENT4 = 36068; // 0x8ce4
-    field public static final int GL_COLOR_ATTACHMENT5 = 36069; // 0x8ce5
-    field public static final int GL_COLOR_ATTACHMENT6 = 36070; // 0x8ce6
-    field public static final int GL_COLOR_ATTACHMENT7 = 36071; // 0x8ce7
-    field public static final int GL_COLOR_ATTACHMENT8 = 36072; // 0x8ce8
-    field public static final int GL_COLOR_ATTACHMENT9 = 36073; // 0x8ce9
-    field public static final int GL_COMPARE_REF_TO_TEXTURE = 34894; // 0x884e
-    field public static final int GL_COMPRESSED_R11_EAC = 37488; // 0x9270
-    field public static final int GL_COMPRESSED_RG11_EAC = 37490; // 0x9272
-    field public static final int GL_COMPRESSED_RGB8_ETC2 = 37492; // 0x9274
-    field public static final int GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37494; // 0x9276
-    field public static final int GL_COMPRESSED_RGBA8_ETC2_EAC = 37496; // 0x9278
-    field public static final int GL_COMPRESSED_SIGNED_R11_EAC = 37489; // 0x9271
-    field public static final int GL_COMPRESSED_SIGNED_RG11_EAC = 37491; // 0x9273
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 37497; // 0x9279
-    field public static final int GL_COMPRESSED_SRGB8_ETC2 = 37493; // 0x9275
-    field public static final int GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37495; // 0x9277
-    field public static final int GL_CONDITION_SATISFIED = 37148; // 0x911c
-    field public static final int GL_COPY_READ_BUFFER = 36662; // 0x8f36
-    field public static final int GL_COPY_READ_BUFFER_BINDING = 36662; // 0x8f36
-    field public static final int GL_COPY_WRITE_BUFFER = 36663; // 0x8f37
-    field public static final int GL_COPY_WRITE_BUFFER_BINDING = 36663; // 0x8f37
-    field public static final int GL_CURRENT_QUERY = 34917; // 0x8865
-    field public static final int GL_DEPTH = 6145; // 0x1801
-    field public static final int GL_DEPTH24_STENCIL8 = 35056; // 0x88f0
-    field public static final int GL_DEPTH32F_STENCIL8 = 36013; // 0x8cad
-    field public static final int GL_DEPTH_COMPONENT24 = 33190; // 0x81a6
-    field public static final int GL_DEPTH_COMPONENT32F = 36012; // 0x8cac
-    field public static final int GL_DEPTH_STENCIL = 34041; // 0x84f9
-    field public static final int GL_DEPTH_STENCIL_ATTACHMENT = 33306; // 0x821a
-    field public static final int GL_DRAW_BUFFER0 = 34853; // 0x8825
-    field public static final int GL_DRAW_BUFFER1 = 34854; // 0x8826
-    field public static final int GL_DRAW_BUFFER10 = 34863; // 0x882f
-    field public static final int GL_DRAW_BUFFER11 = 34864; // 0x8830
-    field public static final int GL_DRAW_BUFFER12 = 34865; // 0x8831
-    field public static final int GL_DRAW_BUFFER13 = 34866; // 0x8832
-    field public static final int GL_DRAW_BUFFER14 = 34867; // 0x8833
-    field public static final int GL_DRAW_BUFFER15 = 34868; // 0x8834
-    field public static final int GL_DRAW_BUFFER2 = 34855; // 0x8827
-    field public static final int GL_DRAW_BUFFER3 = 34856; // 0x8828
-    field public static final int GL_DRAW_BUFFER4 = 34857; // 0x8829
-    field public static final int GL_DRAW_BUFFER5 = 34858; // 0x882a
-    field public static final int GL_DRAW_BUFFER6 = 34859; // 0x882b
-    field public static final int GL_DRAW_BUFFER7 = 34860; // 0x882c
-    field public static final int GL_DRAW_BUFFER8 = 34861; // 0x882d
-    field public static final int GL_DRAW_BUFFER9 = 34862; // 0x882e
-    field public static final int GL_DRAW_FRAMEBUFFER = 36009; // 0x8ca9
-    field public static final int GL_DRAW_FRAMEBUFFER_BINDING = 36006; // 0x8ca6
-    field public static final int GL_DYNAMIC_COPY = 35050; // 0x88ea
-    field public static final int GL_DYNAMIC_READ = 35049; // 0x88e9
-    field public static final int GL_FLOAT_32_UNSIGNED_INT_24_8_REV = 36269; // 0x8dad
-    field public static final int GL_FLOAT_MAT2x3 = 35685; // 0x8b65
-    field public static final int GL_FLOAT_MAT2x4 = 35686; // 0x8b66
-    field public static final int GL_FLOAT_MAT3x2 = 35687; // 0x8b67
-    field public static final int GL_FLOAT_MAT3x4 = 35688; // 0x8b68
-    field public static final int GL_FLOAT_MAT4x2 = 35689; // 0x8b69
-    field public static final int GL_FLOAT_MAT4x3 = 35690; // 0x8b6a
-    field public static final int GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 35723; // 0x8b8b
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 33301; // 0x8215
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 33300; // 0x8214
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 33296; // 0x8210
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 33297; // 0x8211
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 33302; // 0x8216
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 33299; // 0x8213
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE = 33298; // 0x8212
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 33303; // 0x8217
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 36052; // 0x8cd4
-    field public static final int GL_FRAMEBUFFER_DEFAULT = 33304; // 0x8218
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 36182; // 0x8d56
-    field public static final int GL_FRAMEBUFFER_UNDEFINED = 33305; // 0x8219
-    field public static final int GL_GREEN = 6404; // 0x1904
-    field public static final int GL_HALF_FLOAT = 5131; // 0x140b
-    field public static final int GL_INTERLEAVED_ATTRIBS = 35980; // 0x8c8c
-    field public static final int GL_INT_2_10_10_10_REV = 36255; // 0x8d9f
-    field public static final int GL_INT_SAMPLER_2D = 36298; // 0x8dca
-    field public static final int GL_INT_SAMPLER_2D_ARRAY = 36303; // 0x8dcf
-    field public static final int GL_INT_SAMPLER_3D = 36299; // 0x8dcb
-    field public static final int GL_INT_SAMPLER_CUBE = 36300; // 0x8dcc
-    field public static final int GL_INVALID_INDEX = -1; // 0xffffffff
-    field public static final int GL_MAJOR_VERSION = 33307; // 0x821b
-    field public static final int GL_MAP_FLUSH_EXPLICIT_BIT = 16; // 0x10
-    field public static final int GL_MAP_INVALIDATE_BUFFER_BIT = 8; // 0x8
-    field public static final int GL_MAP_INVALIDATE_RANGE_BIT = 4; // 0x4
-    field public static final int GL_MAP_READ_BIT = 1; // 0x1
-    field public static final int GL_MAP_UNSYNCHRONIZED_BIT = 32; // 0x20
-    field public static final int GL_MAP_WRITE_BIT = 2; // 0x2
-    field public static final int GL_MAX = 32776; // 0x8008
-    field public static final int GL_MAX_3D_TEXTURE_SIZE = 32883; // 0x8073
-    field public static final int GL_MAX_ARRAY_TEXTURE_LAYERS = 35071; // 0x88ff
-    field public static final int GL_MAX_COLOR_ATTACHMENTS = 36063; // 0x8cdf
-    field public static final int GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 35379; // 0x8a33
-    field public static final int GL_MAX_COMBINED_UNIFORM_BLOCKS = 35374; // 0x8a2e
-    field public static final int GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 35377; // 0x8a31
-    field public static final int GL_MAX_DRAW_BUFFERS = 34852; // 0x8824
-    field public static final int GL_MAX_ELEMENTS_INDICES = 33001; // 0x80e9
-    field public static final int GL_MAX_ELEMENTS_VERTICES = 33000; // 0x80e8
-    field public static final int GL_MAX_ELEMENT_INDEX = 36203; // 0x8d6b
-    field public static final int GL_MAX_FRAGMENT_INPUT_COMPONENTS = 37157; // 0x9125
-    field public static final int GL_MAX_FRAGMENT_UNIFORM_BLOCKS = 35373; // 0x8a2d
-    field public static final int GL_MAX_FRAGMENT_UNIFORM_COMPONENTS = 35657; // 0x8b49
-    field public static final int GL_MAX_PROGRAM_TEXEL_OFFSET = 35077; // 0x8905
-    field public static final int GL_MAX_SAMPLES = 36183; // 0x8d57
-    field public static final int GL_MAX_SERVER_WAIT_TIMEOUT = 37137; // 0x9111
-    field public static final int GL_MAX_TEXTURE_LOD_BIAS = 34045; // 0x84fd
-    field public static final int GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 35978; // 0x8c8a
-    field public static final int GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 35979; // 0x8c8b
-    field public static final int GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 35968; // 0x8c80
-    field public static final int GL_MAX_UNIFORM_BLOCK_SIZE = 35376; // 0x8a30
-    field public static final int GL_MAX_UNIFORM_BUFFER_BINDINGS = 35375; // 0x8a2f
-    field public static final int GL_MAX_VARYING_COMPONENTS = 35659; // 0x8b4b
-    field public static final int GL_MAX_VERTEX_OUTPUT_COMPONENTS = 37154; // 0x9122
-    field public static final int GL_MAX_VERTEX_UNIFORM_BLOCKS = 35371; // 0x8a2b
-    field public static final int GL_MAX_VERTEX_UNIFORM_COMPONENTS = 35658; // 0x8b4a
-    field public static final int GL_MIN = 32775; // 0x8007
-    field public static final int GL_MINOR_VERSION = 33308; // 0x821c
-    field public static final int GL_MIN_PROGRAM_TEXEL_OFFSET = 35076; // 0x8904
-    field public static final int GL_NUM_EXTENSIONS = 33309; // 0x821d
-    field public static final int GL_NUM_PROGRAM_BINARY_FORMATS = 34814; // 0x87fe
-    field public static final int GL_NUM_SAMPLE_COUNTS = 37760; // 0x9380
-    field public static final int GL_OBJECT_TYPE = 37138; // 0x9112
-    field public static final int GL_PACK_ROW_LENGTH = 3330; // 0xd02
-    field public static final int GL_PACK_SKIP_PIXELS = 3332; // 0xd04
-    field public static final int GL_PACK_SKIP_ROWS = 3331; // 0xd03
-    field public static final int GL_PIXEL_PACK_BUFFER = 35051; // 0x88eb
-    field public static final int GL_PIXEL_PACK_BUFFER_BINDING = 35053; // 0x88ed
-    field public static final int GL_PIXEL_UNPACK_BUFFER = 35052; // 0x88ec
-    field public static final int GL_PIXEL_UNPACK_BUFFER_BINDING = 35055; // 0x88ef
-    field public static final int GL_PRIMITIVE_RESTART_FIXED_INDEX = 36201; // 0x8d69
-    field public static final int GL_PROGRAM_BINARY_FORMATS = 34815; // 0x87ff
-    field public static final int GL_PROGRAM_BINARY_LENGTH = 34625; // 0x8741
-    field public static final int GL_PROGRAM_BINARY_RETRIEVABLE_HINT = 33367; // 0x8257
-    field public static final int GL_QUERY_RESULT = 34918; // 0x8866
-    field public static final int GL_QUERY_RESULT_AVAILABLE = 34919; // 0x8867
-    field public static final int GL_R11F_G11F_B10F = 35898; // 0x8c3a
-    field public static final int GL_R16F = 33325; // 0x822d
-    field public static final int GL_R16I = 33331; // 0x8233
-    field public static final int GL_R16UI = 33332; // 0x8234
-    field public static final int GL_R32F = 33326; // 0x822e
-    field public static final int GL_R32I = 33333; // 0x8235
-    field public static final int GL_R32UI = 33334; // 0x8236
-    field public static final int GL_R8 = 33321; // 0x8229
-    field public static final int GL_R8I = 33329; // 0x8231
-    field public static final int GL_R8UI = 33330; // 0x8232
-    field public static final int GL_R8_SNORM = 36756; // 0x8f94
-    field public static final int GL_RASTERIZER_DISCARD = 35977; // 0x8c89
-    field public static final int GL_READ_BUFFER = 3074; // 0xc02
-    field public static final int GL_READ_FRAMEBUFFER = 36008; // 0x8ca8
-    field public static final int GL_READ_FRAMEBUFFER_BINDING = 36010; // 0x8caa
-    field public static final int GL_RED = 6403; // 0x1903
-    field public static final int GL_RED_INTEGER = 36244; // 0x8d94
-    field public static final int GL_RENDERBUFFER_SAMPLES = 36011; // 0x8cab
-    field public static final int GL_RG = 33319; // 0x8227
-    field public static final int GL_RG16F = 33327; // 0x822f
-    field public static final int GL_RG16I = 33337; // 0x8239
-    field public static final int GL_RG16UI = 33338; // 0x823a
-    field public static final int GL_RG32F = 33328; // 0x8230
-    field public static final int GL_RG32I = 33339; // 0x823b
-    field public static final int GL_RG32UI = 33340; // 0x823c
-    field public static final int GL_RG8 = 33323; // 0x822b
-    field public static final int GL_RG8I = 33335; // 0x8237
-    field public static final int GL_RG8UI = 33336; // 0x8238
-    field public static final int GL_RG8_SNORM = 36757; // 0x8f95
-    field public static final int GL_RGB10_A2 = 32857; // 0x8059
-    field public static final int GL_RGB10_A2UI = 36975; // 0x906f
-    field public static final int GL_RGB16F = 34843; // 0x881b
-    field public static final int GL_RGB16I = 36233; // 0x8d89
-    field public static final int GL_RGB16UI = 36215; // 0x8d77
-    field public static final int GL_RGB32F = 34837; // 0x8815
-    field public static final int GL_RGB32I = 36227; // 0x8d83
-    field public static final int GL_RGB32UI = 36209; // 0x8d71
-    field public static final int GL_RGB8 = 32849; // 0x8051
-    field public static final int GL_RGB8I = 36239; // 0x8d8f
-    field public static final int GL_RGB8UI = 36221; // 0x8d7d
-    field public static final int GL_RGB8_SNORM = 36758; // 0x8f96
-    field public static final int GL_RGB9_E5 = 35901; // 0x8c3d
-    field public static final int GL_RGBA16F = 34842; // 0x881a
-    field public static final int GL_RGBA16I = 36232; // 0x8d88
-    field public static final int GL_RGBA16UI = 36214; // 0x8d76
-    field public static final int GL_RGBA32F = 34836; // 0x8814
-    field public static final int GL_RGBA32I = 36226; // 0x8d82
-    field public static final int GL_RGBA32UI = 36208; // 0x8d70
-    field public static final int GL_RGBA8 = 32856; // 0x8058
-    field public static final int GL_RGBA8I = 36238; // 0x8d8e
-    field public static final int GL_RGBA8UI = 36220; // 0x8d7c
-    field public static final int GL_RGBA8_SNORM = 36759; // 0x8f97
-    field public static final int GL_RGBA_INTEGER = 36249; // 0x8d99
-    field public static final int GL_RGB_INTEGER = 36248; // 0x8d98
-    field public static final int GL_RG_INTEGER = 33320; // 0x8228
-    field public static final int GL_SAMPLER_2D_ARRAY = 36289; // 0x8dc1
-    field public static final int GL_SAMPLER_2D_ARRAY_SHADOW = 36292; // 0x8dc4
-    field public static final int GL_SAMPLER_2D_SHADOW = 35682; // 0x8b62
-    field public static final int GL_SAMPLER_3D = 35679; // 0x8b5f
-    field public static final int GL_SAMPLER_BINDING = 35097; // 0x8919
-    field public static final int GL_SAMPLER_CUBE_SHADOW = 36293; // 0x8dc5
-    field public static final int GL_SEPARATE_ATTRIBS = 35981; // 0x8c8d
-    field public static final int GL_SIGNALED = 37145; // 0x9119
-    field public static final int GL_SIGNED_NORMALIZED = 36764; // 0x8f9c
-    field public static final int GL_SRGB = 35904; // 0x8c40
-    field public static final int GL_SRGB8 = 35905; // 0x8c41
-    field public static final int GL_SRGB8_ALPHA8 = 35907; // 0x8c43
-    field public static final int GL_STATIC_COPY = 35046; // 0x88e6
-    field public static final int GL_STATIC_READ = 35045; // 0x88e5
-    field public static final int GL_STENCIL = 6146; // 0x1802
-    field public static final int GL_STREAM_COPY = 35042; // 0x88e2
-    field public static final int GL_STREAM_READ = 35041; // 0x88e1
-    field public static final int GL_SYNC_CONDITION = 37139; // 0x9113
-    field public static final int GL_SYNC_FENCE = 37142; // 0x9116
-    field public static final int GL_SYNC_FLAGS = 37141; // 0x9115
-    field public static final int GL_SYNC_FLUSH_COMMANDS_BIT = 1; // 0x1
-    field public static final int GL_SYNC_GPU_COMMANDS_COMPLETE = 37143; // 0x9117
-    field public static final int GL_SYNC_STATUS = 37140; // 0x9114
-    field public static final int GL_TEXTURE_2D_ARRAY = 35866; // 0x8c1a
-    field public static final int GL_TEXTURE_3D = 32879; // 0x806f
-    field public static final int GL_TEXTURE_BASE_LEVEL = 33084; // 0x813c
-    field public static final int GL_TEXTURE_BINDING_2D_ARRAY = 35869; // 0x8c1d
-    field public static final int GL_TEXTURE_BINDING_3D = 32874; // 0x806a
-    field public static final int GL_TEXTURE_COMPARE_FUNC = 34893; // 0x884d
-    field public static final int GL_TEXTURE_COMPARE_MODE = 34892; // 0x884c
-    field public static final int GL_TEXTURE_IMMUTABLE_FORMAT = 37167; // 0x912f
-    field public static final int GL_TEXTURE_IMMUTABLE_LEVELS = 33503; // 0x82df
-    field public static final int GL_TEXTURE_MAX_LEVEL = 33085; // 0x813d
-    field public static final int GL_TEXTURE_MAX_LOD = 33083; // 0x813b
-    field public static final int GL_TEXTURE_MIN_LOD = 33082; // 0x813a
-    field public static final int GL_TEXTURE_SWIZZLE_A = 36421; // 0x8e45
-    field public static final int GL_TEXTURE_SWIZZLE_B = 36420; // 0x8e44
-    field public static final int GL_TEXTURE_SWIZZLE_G = 36419; // 0x8e43
-    field public static final int GL_TEXTURE_SWIZZLE_R = 36418; // 0x8e42
-    field public static final int GL_TEXTURE_WRAP_R = 32882; // 0x8072
-    field public static final int GL_TIMEOUT_EXPIRED = 37147; // 0x911b
-    field public static final long GL_TIMEOUT_IGNORED = -1L; // 0xffffffffffffffffL
-    field public static final int GL_TRANSFORM_FEEDBACK = 36386; // 0x8e22
-    field public static final int GL_TRANSFORM_FEEDBACK_ACTIVE = 36388; // 0x8e24
-    field public static final int GL_TRANSFORM_FEEDBACK_BINDING = 36389; // 0x8e25
-    field public static final int GL_TRANSFORM_FEEDBACK_BUFFER = 35982; // 0x8c8e
-    field public static final int GL_TRANSFORM_FEEDBACK_BUFFER_BINDING = 35983; // 0x8c8f
-    field public static final int GL_TRANSFORM_FEEDBACK_BUFFER_MODE = 35967; // 0x8c7f
-    field public static final int GL_TRANSFORM_FEEDBACK_BUFFER_SIZE = 35973; // 0x8c85
-    field public static final int GL_TRANSFORM_FEEDBACK_BUFFER_START = 35972; // 0x8c84
-    field public static final int GL_TRANSFORM_FEEDBACK_PAUSED = 36387; // 0x8e23
-    field public static final int GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 35976; // 0x8c88
-    field public static final int GL_TRANSFORM_FEEDBACK_VARYINGS = 35971; // 0x8c83
-    field public static final int GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = 35958; // 0x8c76
-    field public static final int GL_UNIFORM_ARRAY_STRIDE = 35388; // 0x8a3c
-    field public static final int GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS = 35394; // 0x8a42
-    field public static final int GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 35395; // 0x8a43
-    field public static final int GL_UNIFORM_BLOCK_BINDING = 35391; // 0x8a3f
-    field public static final int GL_UNIFORM_BLOCK_DATA_SIZE = 35392; // 0x8a40
-    field public static final int GL_UNIFORM_BLOCK_INDEX = 35386; // 0x8a3a
-    field public static final int GL_UNIFORM_BLOCK_NAME_LENGTH = 35393; // 0x8a41
-    field public static final int GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 35398; // 0x8a46
-    field public static final int GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 35396; // 0x8a44
-    field public static final int GL_UNIFORM_BUFFER = 35345; // 0x8a11
-    field public static final int GL_UNIFORM_BUFFER_BINDING = 35368; // 0x8a28
-    field public static final int GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT = 35380; // 0x8a34
-    field public static final int GL_UNIFORM_BUFFER_SIZE = 35370; // 0x8a2a
-    field public static final int GL_UNIFORM_BUFFER_START = 35369; // 0x8a29
-    field public static final int GL_UNIFORM_IS_ROW_MAJOR = 35390; // 0x8a3e
-    field public static final int GL_UNIFORM_MATRIX_STRIDE = 35389; // 0x8a3d
-    field public static final int GL_UNIFORM_NAME_LENGTH = 35385; // 0x8a39
-    field public static final int GL_UNIFORM_OFFSET = 35387; // 0x8a3b
-    field public static final int GL_UNIFORM_SIZE = 35384; // 0x8a38
-    field public static final int GL_UNIFORM_TYPE = 35383; // 0x8a37
-    field public static final int GL_UNPACK_IMAGE_HEIGHT = 32878; // 0x806e
-    field public static final int GL_UNPACK_ROW_LENGTH = 3314; // 0xcf2
-    field public static final int GL_UNPACK_SKIP_IMAGES = 32877; // 0x806d
-    field public static final int GL_UNPACK_SKIP_PIXELS = 3316; // 0xcf4
-    field public static final int GL_UNPACK_SKIP_ROWS = 3315; // 0xcf3
-    field public static final int GL_UNSIGNALED = 37144; // 0x9118
-    field public static final int GL_UNSIGNED_INT_10F_11F_11F_REV = 35899; // 0x8c3b
-    field public static final int GL_UNSIGNED_INT_24_8 = 34042; // 0x84fa
-    field public static final int GL_UNSIGNED_INT_2_10_10_10_REV = 33640; // 0x8368
-    field public static final int GL_UNSIGNED_INT_5_9_9_9_REV = 35902; // 0x8c3e
-    field public static final int GL_UNSIGNED_INT_SAMPLER_2D = 36306; // 0x8dd2
-    field public static final int GL_UNSIGNED_INT_SAMPLER_2D_ARRAY = 36311; // 0x8dd7
-    field public static final int GL_UNSIGNED_INT_SAMPLER_3D = 36307; // 0x8dd3
-    field public static final int GL_UNSIGNED_INT_SAMPLER_CUBE = 36308; // 0x8dd4
-    field public static final int GL_UNSIGNED_INT_VEC2 = 36294; // 0x8dc6
-    field public static final int GL_UNSIGNED_INT_VEC3 = 36295; // 0x8dc7
-    field public static final int GL_UNSIGNED_INT_VEC4 = 36296; // 0x8dc8
-    field public static final int GL_UNSIGNED_NORMALIZED = 35863; // 0x8c17
-    field public static final int GL_VERTEX_ARRAY_BINDING = 34229; // 0x85b5
-    field public static final int GL_VERTEX_ATTRIB_ARRAY_DIVISOR = 35070; // 0x88fe
-    field public static final int GL_VERTEX_ATTRIB_ARRAY_INTEGER = 35069; // 0x88fd
-    field public static final int GL_WAIT_FAILED = 37149; // 0x911d
-  }
-
-  public class GLES31 extends android.opengl.GLES30 {
-    method public static void glActiveShaderProgram(int, int);
-    method public static void glBindImageTexture(int, int, int, boolean, int, int, int);
-    method public static void glBindProgramPipeline(int);
-    method public static void glBindVertexBuffer(int, int, long, int);
-    method public static int glCreateShaderProgramv(int, String[]);
-    method public static void glDeleteProgramPipelines(int, int[], int);
-    method public static void glDeleteProgramPipelines(int, java.nio.IntBuffer);
-    method public static void glDispatchCompute(int, int, int);
-    method public static void glDispatchComputeIndirect(long);
-    method public static void glDrawArraysIndirect(int, long);
-    method public static void glDrawElementsIndirect(int, int, long);
-    method public static void glFramebufferParameteri(int, int, int);
-    method public static void glGenProgramPipelines(int, int[], int);
-    method public static void glGenProgramPipelines(int, java.nio.IntBuffer);
-    method public static void glGetBooleani_v(int, int, boolean[], int);
-    method public static void glGetBooleani_v(int, int, java.nio.IntBuffer);
-    method public static void glGetFramebufferParameteriv(int, int, int[], int);
-    method public static void glGetFramebufferParameteriv(int, int, java.nio.IntBuffer);
-    method public static void glGetMultisamplefv(int, int, float[], int);
-    method public static void glGetMultisamplefv(int, int, java.nio.FloatBuffer);
-    method public static void glGetProgramInterfaceiv(int, int, int, int[], int);
-    method public static void glGetProgramInterfaceiv(int, int, int, java.nio.IntBuffer);
-    method public static String glGetProgramPipelineInfoLog(int);
-    method public static void glGetProgramPipelineiv(int, int, int[], int);
-    method public static void glGetProgramPipelineiv(int, int, java.nio.IntBuffer);
-    method public static int glGetProgramResourceIndex(int, int, String);
-    method public static int glGetProgramResourceLocation(int, int, String);
-    method public static String glGetProgramResourceName(int, int, int);
-    method public static void glGetProgramResourceiv(int, int, int, int, int[], int, int, int[], int, int[], int);
-    method public static void glGetProgramResourceiv(int, int, int, int, java.nio.IntBuffer, int, java.nio.IntBuffer, java.nio.IntBuffer);
-    method public static void glGetTexLevelParameterfv(int, int, int, float[], int);
-    method public static void glGetTexLevelParameterfv(int, int, int, java.nio.FloatBuffer);
-    method public static void glGetTexLevelParameteriv(int, int, int, int[], int);
-    method public static void glGetTexLevelParameteriv(int, int, int, java.nio.IntBuffer);
-    method public static boolean glIsProgramPipeline(int);
-    method public static void glMemoryBarrier(int);
-    method public static void glMemoryBarrierByRegion(int);
-    method public static void glProgramUniform1f(int, int, float);
-    method public static void glProgramUniform1fv(int, int, int, float[], int);
-    method public static void glProgramUniform1fv(int, int, int, java.nio.FloatBuffer);
-    method public static void glProgramUniform1i(int, int, int);
-    method public static void glProgramUniform1iv(int, int, int, int[], int);
-    method public static void glProgramUniform1iv(int, int, int, java.nio.IntBuffer);
-    method public static void glProgramUniform1ui(int, int, int);
-    method public static void glProgramUniform1uiv(int, int, int, int[], int);
-    method public static void glProgramUniform1uiv(int, int, int, java.nio.IntBuffer);
-    method public static void glProgramUniform2f(int, int, float, float);
-    method public static void glProgramUniform2fv(int, int, int, float[], int);
-    method public static void glProgramUniform2fv(int, int, int, java.nio.FloatBuffer);
-    method public static void glProgramUniform2i(int, int, int, int);
-    method public static void glProgramUniform2iv(int, int, int, int[], int);
-    method public static void glProgramUniform2iv(int, int, int, java.nio.IntBuffer);
-    method public static void glProgramUniform2ui(int, int, int, int);
-    method public static void glProgramUniform2uiv(int, int, int, int[], int);
-    method public static void glProgramUniform2uiv(int, int, int, java.nio.IntBuffer);
-    method public static void glProgramUniform3f(int, int, float, float, float);
-    method public static void glProgramUniform3fv(int, int, int, float[], int);
-    method public static void glProgramUniform3fv(int, int, int, java.nio.FloatBuffer);
-    method public static void glProgramUniform3i(int, int, int, int, int);
-    method public static void glProgramUniform3iv(int, int, int, int[], int);
-    method public static void glProgramUniform3iv(int, int, int, java.nio.IntBuffer);
-    method public static void glProgramUniform3ui(int, int, int, int, int);
-    method public static void glProgramUniform3uiv(int, int, int, int[], int);
-    method public static void glProgramUniform3uiv(int, int, int, java.nio.IntBuffer);
-    method public static void glProgramUniform4f(int, int, float, float, float, float);
-    method public static void glProgramUniform4fv(int, int, int, float[], int);
-    method public static void glProgramUniform4fv(int, int, int, java.nio.FloatBuffer);
-    method public static void glProgramUniform4i(int, int, int, int, int, int);
-    method public static void glProgramUniform4iv(int, int, int, int[], int);
-    method public static void glProgramUniform4iv(int, int, int, java.nio.IntBuffer);
-    method public static void glProgramUniform4ui(int, int, int, int, int, int);
-    method public static void glProgramUniform4uiv(int, int, int, int[], int);
-    method public static void glProgramUniform4uiv(int, int, int, java.nio.IntBuffer);
-    method public static void glProgramUniformMatrix2fv(int, int, int, boolean, float[], int);
-    method public static void glProgramUniformMatrix2fv(int, int, int, boolean, java.nio.FloatBuffer);
-    method public static void glProgramUniformMatrix2x3fv(int, int, int, boolean, float[], int);
-    method public static void glProgramUniformMatrix2x3fv(int, int, int, boolean, java.nio.FloatBuffer);
-    method public static void glProgramUniformMatrix2x4fv(int, int, int, boolean, float[], int);
-    method public static void glProgramUniformMatrix2x4fv(int, int, int, boolean, java.nio.FloatBuffer);
-    method public static void glProgramUniformMatrix3fv(int, int, int, boolean, float[], int);
-    method public static void glProgramUniformMatrix3fv(int, int, int, boolean, java.nio.FloatBuffer);
-    method public static void glProgramUniformMatrix3x2fv(int, int, int, boolean, float[], int);
-    method public static void glProgramUniformMatrix3x2fv(int, int, int, boolean, java.nio.FloatBuffer);
-    method public static void glProgramUniformMatrix3x4fv(int, int, int, boolean, float[], int);
-    method public static void glProgramUniformMatrix3x4fv(int, int, int, boolean, java.nio.FloatBuffer);
-    method public static void glProgramUniformMatrix4fv(int, int, int, boolean, float[], int);
-    method public static void glProgramUniformMatrix4fv(int, int, int, boolean, java.nio.FloatBuffer);
-    method public static void glProgramUniformMatrix4x2fv(int, int, int, boolean, float[], int);
-    method public static void glProgramUniformMatrix4x2fv(int, int, int, boolean, java.nio.FloatBuffer);
-    method public static void glProgramUniformMatrix4x3fv(int, int, int, boolean, float[], int);
-    method public static void glProgramUniformMatrix4x3fv(int, int, int, boolean, java.nio.FloatBuffer);
-    method public static void glSampleMaski(int, int);
-    method public static void glTexStorage2DMultisample(int, int, int, int, int, boolean);
-    method public static void glUseProgramStages(int, int, int);
-    method public static void glValidateProgramPipeline(int);
-    method public static void glVertexAttribBinding(int, int);
-    method public static void glVertexAttribFormat(int, int, int, boolean, int);
-    method public static void glVertexAttribIFormat(int, int, int, int);
-    method public static void glVertexBindingDivisor(int, int);
-    field public static final int GL_ACTIVE_ATOMIC_COUNTER_BUFFERS = 37593; // 0x92d9
-    field public static final int GL_ACTIVE_PROGRAM = 33369; // 0x8259
-    field public static final int GL_ACTIVE_RESOURCES = 37621; // 0x92f5
-    field public static final int GL_ACTIVE_VARIABLES = 37637; // 0x9305
-    field public static final int GL_ALL_BARRIER_BITS = -1; // 0xffffffff
-    field public static final int GL_ALL_SHADER_BITS = -1; // 0xffffffff
-    field public static final int GL_ARRAY_SIZE = 37627; // 0x92fb
-    field public static final int GL_ARRAY_STRIDE = 37630; // 0x92fe
-    field public static final int GL_ATOMIC_COUNTER_BARRIER_BIT = 4096; // 0x1000
-    field public static final int GL_ATOMIC_COUNTER_BUFFER = 37568; // 0x92c0
-    field public static final int GL_ATOMIC_COUNTER_BUFFER_BINDING = 37569; // 0x92c1
-    field public static final int GL_ATOMIC_COUNTER_BUFFER_INDEX = 37633; // 0x9301
-    field public static final int GL_ATOMIC_COUNTER_BUFFER_SIZE = 37571; // 0x92c3
-    field public static final int GL_ATOMIC_COUNTER_BUFFER_START = 37570; // 0x92c2
-    field public static final int GL_BLOCK_INDEX = 37629; // 0x92fd
-    field public static final int GL_BUFFER_BINDING = 37634; // 0x9302
-    field public static final int GL_BUFFER_DATA_SIZE = 37635; // 0x9303
-    field public static final int GL_BUFFER_UPDATE_BARRIER_BIT = 512; // 0x200
-    field public static final int GL_BUFFER_VARIABLE = 37605; // 0x92e5
-    field public static final int GL_COMMAND_BARRIER_BIT = 64; // 0x40
-    field public static final int GL_COMPUTE_SHADER = 37305; // 0x91b9
-    field public static final int GL_COMPUTE_SHADER_BIT = 32; // 0x20
-    field public static final int GL_COMPUTE_WORK_GROUP_SIZE = 33383; // 0x8267
-    field public static final int GL_DEPTH_STENCIL_TEXTURE_MODE = 37098; // 0x90ea
-    field public static final int GL_DISPATCH_INDIRECT_BUFFER = 37102; // 0x90ee
-    field public static final int GL_DISPATCH_INDIRECT_BUFFER_BINDING = 37103; // 0x90ef
-    field public static final int GL_DRAW_INDIRECT_BUFFER = 36671; // 0x8f3f
-    field public static final int GL_DRAW_INDIRECT_BUFFER_BINDING = 36675; // 0x8f43
-    field public static final int GL_ELEMENT_ARRAY_BARRIER_BIT = 2; // 0x2
-    field public static final int GL_FRAGMENT_SHADER_BIT = 2; // 0x2
-    field public static final int GL_FRAMEBUFFER_BARRIER_BIT = 1024; // 0x400
-    field public static final int GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS = 37652; // 0x9314
-    field public static final int GL_FRAMEBUFFER_DEFAULT_HEIGHT = 37649; // 0x9311
-    field public static final int GL_FRAMEBUFFER_DEFAULT_SAMPLES = 37651; // 0x9313
-    field public static final int GL_FRAMEBUFFER_DEFAULT_WIDTH = 37648; // 0x9310
-    field public static final int GL_IMAGE_2D = 36941; // 0x904d
-    field public static final int GL_IMAGE_2D_ARRAY = 36947; // 0x9053
-    field public static final int GL_IMAGE_3D = 36942; // 0x904e
-    field public static final int GL_IMAGE_BINDING_ACCESS = 36670; // 0x8f3e
-    field public static final int GL_IMAGE_BINDING_FORMAT = 36974; // 0x906e
-    field public static final int GL_IMAGE_BINDING_LAYER = 36669; // 0x8f3d
-    field public static final int GL_IMAGE_BINDING_LAYERED = 36668; // 0x8f3c
-    field public static final int GL_IMAGE_BINDING_LEVEL = 36667; // 0x8f3b
-    field public static final int GL_IMAGE_BINDING_NAME = 36666; // 0x8f3a
-    field public static final int GL_IMAGE_CUBE = 36944; // 0x9050
-    field public static final int GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS = 37065; // 0x90c9
-    field public static final int GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE = 37064; // 0x90c8
-    field public static final int GL_IMAGE_FORMAT_COMPATIBILITY_TYPE = 37063; // 0x90c7
-    field public static final int GL_INT_IMAGE_2D = 36952; // 0x9058
-    field public static final int GL_INT_IMAGE_2D_ARRAY = 36958; // 0x905e
-    field public static final int GL_INT_IMAGE_3D = 36953; // 0x9059
-    field public static final int GL_INT_IMAGE_CUBE = 36955; // 0x905b
-    field public static final int GL_INT_SAMPLER_2D_MULTISAMPLE = 37129; // 0x9109
-    field public static final int GL_IS_ROW_MAJOR = 37632; // 0x9300
-    field public static final int GL_LOCATION = 37646; // 0x930e
-    field public static final int GL_MATRIX_STRIDE = 37631; // 0x92ff
-    field public static final int GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS = 37596; // 0x92dc
-    field public static final int GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE = 37592; // 0x92d8
-    field public static final int GL_MAX_COLOR_TEXTURE_SAMPLES = 37134; // 0x910e
-    field public static final int GL_MAX_COMBINED_ATOMIC_COUNTERS = 37591; // 0x92d7
-    field public static final int GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS = 37585; // 0x92d1
-    field public static final int GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS = 33382; // 0x8266
-    field public static final int GL_MAX_COMBINED_IMAGE_UNIFORMS = 37071; // 0x90cf
-    field public static final int GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES = 36665; // 0x8f39
-    field public static final int GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS = 37084; // 0x90dc
-    field public static final int GL_MAX_COMPUTE_ATOMIC_COUNTERS = 33381; // 0x8265
-    field public static final int GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS = 33380; // 0x8264
-    field public static final int GL_MAX_COMPUTE_IMAGE_UNIFORMS = 37309; // 0x91bd
-    field public static final int GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS = 37083; // 0x90db
-    field public static final int GL_MAX_COMPUTE_SHARED_MEMORY_SIZE = 33378; // 0x8262
-    field public static final int GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS = 37308; // 0x91bc
-    field public static final int GL_MAX_COMPUTE_UNIFORM_BLOCKS = 37307; // 0x91bb
-    field public static final int GL_MAX_COMPUTE_UNIFORM_COMPONENTS = 33379; // 0x8263
-    field public static final int GL_MAX_COMPUTE_WORK_GROUP_COUNT = 37310; // 0x91be
-    field public static final int GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS = 37099; // 0x90eb
-    field public static final int GL_MAX_COMPUTE_WORK_GROUP_SIZE = 37311; // 0x91bf
-    field public static final int GL_MAX_DEPTH_TEXTURE_SAMPLES = 37135; // 0x910f
-    field public static final int GL_MAX_FRAGMENT_ATOMIC_COUNTERS = 37590; // 0x92d6
-    field public static final int GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS = 37584; // 0x92d0
-    field public static final int GL_MAX_FRAGMENT_IMAGE_UNIFORMS = 37070; // 0x90ce
-    field public static final int GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS = 37082; // 0x90da
-    field public static final int GL_MAX_FRAMEBUFFER_HEIGHT = 37654; // 0x9316
-    field public static final int GL_MAX_FRAMEBUFFER_SAMPLES = 37656; // 0x9318
-    field public static final int GL_MAX_FRAMEBUFFER_WIDTH = 37653; // 0x9315
-    field public static final int GL_MAX_IMAGE_UNITS = 36664; // 0x8f38
-    field public static final int GL_MAX_INTEGER_SAMPLES = 37136; // 0x9110
-    field public static final int GL_MAX_NAME_LENGTH = 37622; // 0x92f6
-    field public static final int GL_MAX_NUM_ACTIVE_VARIABLES = 37623; // 0x92f7
-    field public static final int GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET = 36447; // 0x8e5f
-    field public static final int GL_MAX_SAMPLE_MASK_WORDS = 36441; // 0x8e59
-    field public static final int GL_MAX_SHADER_STORAGE_BLOCK_SIZE = 37086; // 0x90de
-    field public static final int GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS = 37085; // 0x90dd
-    field public static final int GL_MAX_UNIFORM_LOCATIONS = 33390; // 0x826e
-    field public static final int GL_MAX_VERTEX_ATOMIC_COUNTERS = 37586; // 0x92d2
-    field public static final int GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS = 37580; // 0x92cc
-    field public static final int GL_MAX_VERTEX_ATTRIB_BINDINGS = 33498; // 0x82da
-    field public static final int GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET = 33497; // 0x82d9
-    field public static final int GL_MAX_VERTEX_ATTRIB_STRIDE = 33509; // 0x82e5
-    field public static final int GL_MAX_VERTEX_IMAGE_UNIFORMS = 37066; // 0x90ca
-    field public static final int GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS = 37078; // 0x90d6
-    field public static final int GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET = 36446; // 0x8e5e
-    field public static final int GL_NAME_LENGTH = 37625; // 0x92f9
-    field public static final int GL_NUM_ACTIVE_VARIABLES = 37636; // 0x9304
-    field public static final int GL_OFFSET = 37628; // 0x92fc
-    field public static final int GL_PIXEL_BUFFER_BARRIER_BIT = 128; // 0x80
-    field public static final int GL_PROGRAM_INPUT = 37603; // 0x92e3
-    field public static final int GL_PROGRAM_OUTPUT = 37604; // 0x92e4
-    field public static final int GL_PROGRAM_PIPELINE_BINDING = 33370; // 0x825a
-    field public static final int GL_PROGRAM_SEPARABLE = 33368; // 0x8258
-    field public static final int GL_READ_ONLY = 35000; // 0x88b8
-    field public static final int GL_READ_WRITE = 35002; // 0x88ba
-    field public static final int GL_REFERENCED_BY_COMPUTE_SHADER = 37643; // 0x930b
-    field public static final int GL_REFERENCED_BY_FRAGMENT_SHADER = 37642; // 0x930a
-    field public static final int GL_REFERENCED_BY_VERTEX_SHADER = 37638; // 0x9306
-    field public static final int GL_SAMPLER_2D_MULTISAMPLE = 37128; // 0x9108
-    field public static final int GL_SAMPLE_MASK = 36433; // 0x8e51
-    field public static final int GL_SAMPLE_MASK_VALUE = 36434; // 0x8e52
-    field public static final int GL_SAMPLE_POSITION = 36432; // 0x8e50
-    field public static final int GL_SHADER_IMAGE_ACCESS_BARRIER_BIT = 32; // 0x20
-    field public static final int GL_SHADER_STORAGE_BARRIER_BIT = 8192; // 0x2000
-    field public static final int GL_SHADER_STORAGE_BLOCK = 37606; // 0x92e6
-    field public static final int GL_SHADER_STORAGE_BUFFER = 37074; // 0x90d2
-    field public static final int GL_SHADER_STORAGE_BUFFER_BINDING = 37075; // 0x90d3
-    field public static final int GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT = 37087; // 0x90df
-    field public static final int GL_SHADER_STORAGE_BUFFER_SIZE = 37077; // 0x90d5
-    field public static final int GL_SHADER_STORAGE_BUFFER_START = 37076; // 0x90d4
-    field public static final int GL_STENCIL_INDEX = 6401; // 0x1901
-    field public static final int GL_TEXTURE_2D_MULTISAMPLE = 37120; // 0x9100
-    field public static final int GL_TEXTURE_ALPHA_SIZE = 32863; // 0x805f
-    field public static final int GL_TEXTURE_ALPHA_TYPE = 35859; // 0x8c13
-    field public static final int GL_TEXTURE_BINDING_2D_MULTISAMPLE = 37124; // 0x9104
-    field public static final int GL_TEXTURE_BLUE_SIZE = 32862; // 0x805e
-    field public static final int GL_TEXTURE_BLUE_TYPE = 35858; // 0x8c12
-    field public static final int GL_TEXTURE_COMPRESSED = 34465; // 0x86a1
-    field public static final int GL_TEXTURE_DEPTH = 32881; // 0x8071
-    field public static final int GL_TEXTURE_DEPTH_SIZE = 34890; // 0x884a
-    field public static final int GL_TEXTURE_DEPTH_TYPE = 35862; // 0x8c16
-    field public static final int GL_TEXTURE_FETCH_BARRIER_BIT = 8; // 0x8
-    field public static final int GL_TEXTURE_FIXED_SAMPLE_LOCATIONS = 37127; // 0x9107
-    field public static final int GL_TEXTURE_GREEN_SIZE = 32861; // 0x805d
-    field public static final int GL_TEXTURE_GREEN_TYPE = 35857; // 0x8c11
-    field public static final int GL_TEXTURE_HEIGHT = 4097; // 0x1001
-    field public static final int GL_TEXTURE_INTERNAL_FORMAT = 4099; // 0x1003
-    field public static final int GL_TEXTURE_RED_SIZE = 32860; // 0x805c
-    field public static final int GL_TEXTURE_RED_TYPE = 35856; // 0x8c10
-    field public static final int GL_TEXTURE_SAMPLES = 37126; // 0x9106
-    field public static final int GL_TEXTURE_SHARED_SIZE = 35903; // 0x8c3f
-    field public static final int GL_TEXTURE_STENCIL_SIZE = 35057; // 0x88f1
-    field public static final int GL_TEXTURE_UPDATE_BARRIER_BIT = 256; // 0x100
-    field public static final int GL_TEXTURE_WIDTH = 4096; // 0x1000
-    field public static final int GL_TOP_LEVEL_ARRAY_SIZE = 37644; // 0x930c
-    field public static final int GL_TOP_LEVEL_ARRAY_STRIDE = 37645; // 0x930d
-    field public static final int GL_TRANSFORM_FEEDBACK_BARRIER_BIT = 2048; // 0x800
-    field public static final int GL_TRANSFORM_FEEDBACK_VARYING = 37620; // 0x92f4
-    field public static final int GL_TYPE = 37626; // 0x92fa
-    field public static final int GL_UNIFORM = 37601; // 0x92e1
-    field public static final int GL_UNIFORM_BARRIER_BIT = 4; // 0x4
-    field public static final int GL_UNIFORM_BLOCK = 37602; // 0x92e2
-    field public static final int GL_UNSIGNED_INT_ATOMIC_COUNTER = 37595; // 0x92db
-    field public static final int GL_UNSIGNED_INT_IMAGE_2D = 36963; // 0x9063
-    field public static final int GL_UNSIGNED_INT_IMAGE_2D_ARRAY = 36969; // 0x9069
-    field public static final int GL_UNSIGNED_INT_IMAGE_3D = 36964; // 0x9064
-    field public static final int GL_UNSIGNED_INT_IMAGE_CUBE = 36966; // 0x9066
-    field public static final int GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = 37130; // 0x910a
-    field public static final int GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT = 1; // 0x1
-    field public static final int GL_VERTEX_ATTRIB_BINDING = 33492; // 0x82d4
-    field public static final int GL_VERTEX_ATTRIB_RELATIVE_OFFSET = 33493; // 0x82d5
-    field public static final int GL_VERTEX_BINDING_BUFFER = 36687; // 0x8f4f
-    field public static final int GL_VERTEX_BINDING_DIVISOR = 33494; // 0x82d6
-    field public static final int GL_VERTEX_BINDING_OFFSET = 33495; // 0x82d7
-    field public static final int GL_VERTEX_BINDING_STRIDE = 33496; // 0x82d8
-    field public static final int GL_VERTEX_SHADER_BIT = 1; // 0x1
-    field public static final int GL_WRITE_ONLY = 35001; // 0x88b9
-  }
-
-  public class GLES31Ext {
-    method public static void glBlendBarrierKHR();
-    method public static void glBlendEquationSeparateiEXT(int, int, int);
-    method public static void glBlendEquationiEXT(int, int);
-    method public static void glBlendFuncSeparateiEXT(int, int, int, int, int);
-    method public static void glBlendFunciEXT(int, int, int);
-    method public static void glColorMaskiEXT(int, boolean, boolean, boolean, boolean);
-    method public static void glCopyImageSubDataEXT(int, int, int, int, int, int, int, int, int, int, int, int, int, int, int);
-    method public static void glDebugMessageCallbackKHR(android.opengl.GLES31Ext.DebugProcKHR);
-    method public static void glDebugMessageControlKHR(int, int, int, int, int[], int, boolean);
-    method public static void glDebugMessageControlKHR(int, int, int, int, java.nio.IntBuffer, boolean);
-    method public static void glDebugMessageInsertKHR(int, int, int, int, String);
-    method public static void glDisableiEXT(int, int);
-    method public static void glEnableiEXT(int, int);
-    method public static void glFramebufferTextureEXT(int, int, int, int);
-    method public static android.opengl.GLES31Ext.DebugProcKHR glGetDebugMessageCallbackKHR();
-    method public static int glGetDebugMessageLogKHR(int, int, int[], int, int[], int, int[], int, int[], int, int[], int, byte[], int);
-    method public static int glGetDebugMessageLogKHR(int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.ByteBuffer);
-    method public static String[] glGetDebugMessageLogKHR(int, int[], int, int[], int, int[], int, int[], int);
-    method public static String[] glGetDebugMessageLogKHR(int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer);
-    method public static String glGetObjectLabelKHR(int, int);
-    method public static String glGetObjectPtrLabelKHR(long);
-    method public static void glGetSamplerParameterIivEXT(int, int, int[], int);
-    method public static void glGetSamplerParameterIivEXT(int, int, java.nio.IntBuffer);
-    method public static void glGetSamplerParameterIuivEXT(int, int, int[], int);
-    method public static void glGetSamplerParameterIuivEXT(int, int, java.nio.IntBuffer);
-    method public static void glGetTexParameterIivEXT(int, int, int[], int);
-    method public static void glGetTexParameterIivEXT(int, int, java.nio.IntBuffer);
-    method public static void glGetTexParameterIuivEXT(int, int, int[], int);
-    method public static void glGetTexParameterIuivEXT(int, int, java.nio.IntBuffer);
-    method public static boolean glIsEnablediEXT(int, int);
-    method public static void glMinSampleShadingOES(float);
-    method public static void glObjectLabelKHR(int, int, int, String);
-    method public static void glObjectPtrLabelKHR(long, String);
-    method public static void glPatchParameteriEXT(int, int);
-    method public static void glPopDebugGroupKHR();
-    method public static void glPrimitiveBoundingBoxEXT(float, float, float, float, float, float, float, float);
-    method public static void glPushDebugGroupKHR(int, int, int, String);
-    method public static void glSamplerParameterIivEXT(int, int, int[], int);
-    method public static void glSamplerParameterIivEXT(int, int, java.nio.IntBuffer);
-    method public static void glSamplerParameterIuivEXT(int, int, int[], int);
-    method public static void glSamplerParameterIuivEXT(int, int, java.nio.IntBuffer);
-    method public static void glTexBufferEXT(int, int, int);
-    method public static void glTexBufferRangeEXT(int, int, int, int, int);
-    method public static void glTexParameterIivEXT(int, int, int[], int);
-    method public static void glTexParameterIivEXT(int, int, java.nio.IntBuffer);
-    method public static void glTexParameterIuivEXT(int, int, int[], int);
-    method public static void glTexParameterIuivEXT(int, int, java.nio.IntBuffer);
-    method public static void glTexStorage3DMultisampleOES(int, int, int, int, int, int, boolean);
-    field public static final int GL_BLEND_ADVANCED_COHERENT_KHR = 37509; // 0x9285
-    field public static final int GL_BUFFER_KHR = 33504; // 0x82e0
-    field public static final int GL_CLAMP_TO_BORDER_EXT = 33069; // 0x812d
-    field public static final int GL_COLORBURN_KHR = 37530; // 0x929a
-    field public static final int GL_COLORDODGE_KHR = 37529; // 0x9299
-    field public static final int GL_COMPRESSED_RGBA_ASTC_10x10_KHR = 37819; // 0x93bb
-    field public static final int GL_COMPRESSED_RGBA_ASTC_10x5_KHR = 37816; // 0x93b8
-    field public static final int GL_COMPRESSED_RGBA_ASTC_10x6_KHR = 37817; // 0x93b9
-    field public static final int GL_COMPRESSED_RGBA_ASTC_10x8_KHR = 37818; // 0x93ba
-    field public static final int GL_COMPRESSED_RGBA_ASTC_12x10_KHR = 37820; // 0x93bc
-    field public static final int GL_COMPRESSED_RGBA_ASTC_12x12_KHR = 37821; // 0x93bd
-    field public static final int GL_COMPRESSED_RGBA_ASTC_4x4_KHR = 37808; // 0x93b0
-    field public static final int GL_COMPRESSED_RGBA_ASTC_5x4_KHR = 37809; // 0x93b1
-    field public static final int GL_COMPRESSED_RGBA_ASTC_5x5_KHR = 37810; // 0x93b2
-    field public static final int GL_COMPRESSED_RGBA_ASTC_6x5_KHR = 37811; // 0x93b3
-    field public static final int GL_COMPRESSED_RGBA_ASTC_6x6_KHR = 37812; // 0x93b4
-    field public static final int GL_COMPRESSED_RGBA_ASTC_8x5_KHR = 37813; // 0x93b5
-    field public static final int GL_COMPRESSED_RGBA_ASTC_8x6_KHR = 37814; // 0x93b6
-    field public static final int GL_COMPRESSED_RGBA_ASTC_8x8_KHR = 37815; // 0x93b7
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR = 37851; // 0x93db
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR = 37848; // 0x93d8
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR = 37849; // 0x93d9
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR = 37850; // 0x93da
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR = 37852; // 0x93dc
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR = 37853; // 0x93dd
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR = 37840; // 0x93d0
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR = 37841; // 0x93d1
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR = 37842; // 0x93d2
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR = 37843; // 0x93d3
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR = 37844; // 0x93d4
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR = 37845; // 0x93d5
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR = 37846; // 0x93d6
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR = 37847; // 0x93d7
-    field public static final int GL_CONTEXT_FLAG_DEBUG_BIT_KHR = 2; // 0x2
-    field public static final int GL_DARKEN_KHR = 37527; // 0x9297
-    field public static final int GL_DEBUG_CALLBACK_FUNCTION_KHR = 33348; // 0x8244
-    field public static final int GL_DEBUG_CALLBACK_USER_PARAM_KHR = 33349; // 0x8245
-    field public static final int GL_DEBUG_GROUP_STACK_DEPTH_KHR = 33389; // 0x826d
-    field public static final int GL_DEBUG_LOGGED_MESSAGES_KHR = 37189; // 0x9145
-    field public static final int GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR = 33347; // 0x8243
-    field public static final int GL_DEBUG_OUTPUT_KHR = 37600; // 0x92e0
-    field public static final int GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR = 33346; // 0x8242
-    field public static final int GL_DEBUG_SEVERITY_HIGH_KHR = 37190; // 0x9146
-    field public static final int GL_DEBUG_SEVERITY_LOW_KHR = 37192; // 0x9148
-    field public static final int GL_DEBUG_SEVERITY_MEDIUM_KHR = 37191; // 0x9147
-    field public static final int GL_DEBUG_SEVERITY_NOTIFICATION_KHR = 33387; // 0x826b
-    field public static final int GL_DEBUG_SOURCE_API_KHR = 33350; // 0x8246
-    field public static final int GL_DEBUG_SOURCE_APPLICATION_KHR = 33354; // 0x824a
-    field public static final int GL_DEBUG_SOURCE_OTHER_KHR = 33355; // 0x824b
-    field public static final int GL_DEBUG_SOURCE_SHADER_COMPILER_KHR = 33352; // 0x8248
-    field public static final int GL_DEBUG_SOURCE_THIRD_PARTY_KHR = 33353; // 0x8249
-    field public static final int GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR = 33351; // 0x8247
-    field public static final int GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR = 33357; // 0x824d
-    field public static final int GL_DEBUG_TYPE_ERROR_KHR = 33356; // 0x824c
-    field public static final int GL_DEBUG_TYPE_MARKER_KHR = 33384; // 0x8268
-    field public static final int GL_DEBUG_TYPE_OTHER_KHR = 33361; // 0x8251
-    field public static final int GL_DEBUG_TYPE_PERFORMANCE_KHR = 33360; // 0x8250
-    field public static final int GL_DEBUG_TYPE_POP_GROUP_KHR = 33386; // 0x826a
-    field public static final int GL_DEBUG_TYPE_PORTABILITY_KHR = 33359; // 0x824f
-    field public static final int GL_DEBUG_TYPE_PUSH_GROUP_KHR = 33385; // 0x8269
-    field public static final int GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR = 33358; // 0x824e
-    field public static final int GL_DECODE_EXT = 35401; // 0x8a49
-    field public static final int GL_DIFFERENCE_KHR = 37534; // 0x929e
-    field public static final int GL_EXCLUSION_KHR = 37536; // 0x92a0
-    field public static final int GL_FIRST_VERTEX_CONVENTION_EXT = 36429; // 0x8e4d
-    field public static final int GL_FRACTIONAL_EVEN_EXT = 36476; // 0x8e7c
-    field public static final int GL_FRACTIONAL_ODD_EXT = 36475; // 0x8e7b
-    field public static final int GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES = 36445; // 0x8e5d
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT = 36263; // 0x8da7
-    field public static final int GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT = 37650; // 0x9312
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT = 36264; // 0x8da8
-    field public static final int GL_GEOMETRY_LINKED_INPUT_TYPE_EXT = 35095; // 0x8917
-    field public static final int GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT = 35096; // 0x8918
-    field public static final int GL_GEOMETRY_LINKED_VERTICES_OUT_EXT = 35094; // 0x8916
-    field public static final int GL_GEOMETRY_SHADER_BIT_EXT = 4; // 0x4
-    field public static final int GL_GEOMETRY_SHADER_EXT = 36313; // 0x8dd9
-    field public static final int GL_GEOMETRY_SHADER_INVOCATIONS_EXT = 34943; // 0x887f
-    field public static final int GL_HARDLIGHT_KHR = 37531; // 0x929b
-    field public static final int GL_HSL_COLOR_KHR = 37551; // 0x92af
-    field public static final int GL_HSL_HUE_KHR = 37549; // 0x92ad
-    field public static final int GL_HSL_LUMINOSITY_KHR = 37552; // 0x92b0
-    field public static final int GL_HSL_SATURATION_KHR = 37550; // 0x92ae
-    field public static final int GL_IMAGE_BUFFER_EXT = 36945; // 0x9051
-    field public static final int GL_IMAGE_CUBE_MAP_ARRAY_EXT = 36948; // 0x9054
-    field public static final int GL_INT_IMAGE_BUFFER_EXT = 36956; // 0x905c
-    field public static final int GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT = 36959; // 0x905f
-    field public static final int GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = 37132; // 0x910c
-    field public static final int GL_INT_SAMPLER_BUFFER_EXT = 36304; // 0x8dd0
-    field public static final int GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT = 36878; // 0x900e
-    field public static final int GL_ISOLINES_EXT = 36474; // 0x8e7a
-    field public static final int GL_IS_PER_PATCH_EXT = 37607; // 0x92e7
-    field public static final int GL_LAST_VERTEX_CONVENTION_EXT = 36430; // 0x8e4e
-    field public static final int GL_LAYER_PROVOKING_VERTEX_EXT = 33374; // 0x825e
-    field public static final int GL_LIGHTEN_KHR = 37528; // 0x9298
-    field public static final int GL_LINES_ADJACENCY_EXT = 10; // 0xa
-    field public static final int GL_LINE_STRIP_ADJACENCY_EXT = 11; // 0xb
-    field public static final int GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT = 35378; // 0x8a32
-    field public static final int GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT = 36382; // 0x8e1e
-    field public static final int GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT = 36383; // 0x8e1f
-    field public static final int GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR = 33388; // 0x826c
-    field public static final int GL_MAX_DEBUG_LOGGED_MESSAGES_KHR = 37188; // 0x9144
-    field public static final int GL_MAX_DEBUG_MESSAGE_LENGTH_KHR = 37187; // 0x9143
-    field public static final int GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES = 36444; // 0x8e5c
-    field public static final int GL_MAX_FRAMEBUFFER_LAYERS_EXT = 37655; // 0x9317
-    field public static final int GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT = 37589; // 0x92d5
-    field public static final int GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT = 37583; // 0x92cf
-    field public static final int GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT = 37069; // 0x90cd
-    field public static final int GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT = 37155; // 0x9123
-    field public static final int GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT = 37156; // 0x9124
-    field public static final int GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT = 36320; // 0x8de0
-    field public static final int GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT = 36442; // 0x8e5a
-    field public static final int GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT = 37079; // 0x90d7
-    field public static final int GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT = 35881; // 0x8c29
-    field public static final int GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT = 36321; // 0x8de1
-    field public static final int GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT = 35372; // 0x8a2c
-    field public static final int GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT = 36319; // 0x8ddf
-    field public static final int GL_MAX_LABEL_LENGTH_KHR = 33512; // 0x82e8
-    field public static final int GL_MAX_PATCH_VERTICES_EXT = 36477; // 0x8e7d
-    field public static final int GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT = 37587; // 0x92d3
-    field public static final int GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT = 37581; // 0x92cd
-    field public static final int GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT = 37067; // 0x90cb
-    field public static final int GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT = 34924; // 0x886c
-    field public static final int GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT = 36483; // 0x8e83
-    field public static final int GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT = 37080; // 0x90d8
-    field public static final int GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT = 36481; // 0x8e81
-    field public static final int GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT = 36485; // 0x8e85
-    field public static final int GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT = 36489; // 0x8e89
-    field public static final int GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT = 36479; // 0x8e7f
-    field public static final int GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT = 37588; // 0x92d4
-    field public static final int GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT = 37582; // 0x92ce
-    field public static final int GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT = 37068; // 0x90cc
-    field public static final int GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT = 34925; // 0x886d
-    field public static final int GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT = 36486; // 0x8e86
-    field public static final int GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT = 37081; // 0x90d9
-    field public static final int GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT = 36482; // 0x8e82
-    field public static final int GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT = 36490; // 0x8e8a
-    field public static final int GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT = 36480; // 0x8e80
-    field public static final int GL_MAX_TESS_GEN_LEVEL_EXT = 36478; // 0x8e7e
-    field public static final int GL_MAX_TESS_PATCH_COMPONENTS_EXT = 36484; // 0x8e84
-    field public static final int GL_MAX_TEXTURE_BUFFER_SIZE_EXT = 35883; // 0x8c2b
-    field public static final int GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES = 36443; // 0x8e5b
-    field public static final int GL_MIN_SAMPLE_SHADING_VALUE_OES = 35895; // 0x8c37
-    field public static final int GL_MULTIPLY_KHR = 37524; // 0x9294
-    field public static final int GL_OVERLAY_KHR = 37526; // 0x9296
-    field public static final int GL_PATCHES_EXT = 14; // 0xe
-    field public static final int GL_PATCH_VERTICES_EXT = 36466; // 0x8e72
-    field public static final int GL_PRIMITIVES_GENERATED_EXT = 35975; // 0x8c87
-    field public static final int GL_PRIMITIVE_BOUNDING_BOX_EXT = 37566; // 0x92be
-    field public static final int GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED = 33313; // 0x8221
-    field public static final int GL_PROGRAM_KHR = 33506; // 0x82e2
-    field public static final int GL_QUADS_EXT = 7; // 0x7
-    field public static final int GL_QUERY_KHR = 33507; // 0x82e3
-    field public static final int GL_REFERENCED_BY_GEOMETRY_SHADER_EXT = 37641; // 0x9309
-    field public static final int GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT = 37639; // 0x9307
-    field public static final int GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT = 37640; // 0x9308
-    field public static final int GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = 37131; // 0x910b
-    field public static final int GL_SAMPLER_BUFFER_EXT = 36290; // 0x8dc2
-    field public static final int GL_SAMPLER_CUBE_MAP_ARRAY_EXT = 36876; // 0x900c
-    field public static final int GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT = 36877; // 0x900d
-    field public static final int GL_SAMPLER_KHR = 33510; // 0x82e6
-    field public static final int GL_SAMPLE_SHADING_OES = 35894; // 0x8c36
-    field public static final int GL_SCREEN_KHR = 37525; // 0x9295
-    field public static final int GL_SHADER_KHR = 33505; // 0x82e1
-    field public static final int GL_SKIP_DECODE_EXT = 35402; // 0x8a4a
-    field public static final int GL_SOFTLIGHT_KHR = 37532; // 0x929c
-    field public static final int GL_STACK_OVERFLOW_KHR = 1283; // 0x503
-    field public static final int GL_STACK_UNDERFLOW_KHR = 1284; // 0x504
-    field public static final int GL_STENCIL_INDEX8_OES = 36168; // 0x8d48
-    field public static final int GL_STENCIL_INDEX_OES = 6401; // 0x1901
-    field public static final int GL_TESS_CONTROL_OUTPUT_VERTICES_EXT = 36469; // 0x8e75
-    field public static final int GL_TESS_CONTROL_SHADER_BIT_EXT = 8; // 0x8
-    field public static final int GL_TESS_CONTROL_SHADER_EXT = 36488; // 0x8e88
-    field public static final int GL_TESS_EVALUATION_SHADER_BIT_EXT = 16; // 0x10
-    field public static final int GL_TESS_EVALUATION_SHADER_EXT = 36487; // 0x8e87
-    field public static final int GL_TESS_GEN_MODE_EXT = 36470; // 0x8e76
-    field public static final int GL_TESS_GEN_POINT_MODE_EXT = 36473; // 0x8e79
-    field public static final int GL_TESS_GEN_SPACING_EXT = 36471; // 0x8e77
-    field public static final int GL_TESS_GEN_VERTEX_ORDER_EXT = 36472; // 0x8e78
-    field public static final int GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES = 37122; // 0x9102
-    field public static final int GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES = 37125; // 0x9105
-    field public static final int GL_TEXTURE_BINDING_BUFFER_EXT = 35884; // 0x8c2c
-    field public static final int GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT = 36874; // 0x900a
-    field public static final int GL_TEXTURE_BORDER_COLOR_EXT = 4100; // 0x1004
-    field public static final int GL_TEXTURE_BUFFER_BINDING_EXT = 35882; // 0x8c2a
-    field public static final int GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT = 35885; // 0x8c2d
-    field public static final int GL_TEXTURE_BUFFER_EXT = 35882; // 0x8c2a
-    field public static final int GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT = 37279; // 0x919f
-    field public static final int GL_TEXTURE_BUFFER_OFFSET_EXT = 37277; // 0x919d
-    field public static final int GL_TEXTURE_BUFFER_SIZE_EXT = 37278; // 0x919e
-    field public static final int GL_TEXTURE_CUBE_MAP_ARRAY_EXT = 36873; // 0x9009
-    field public static final int GL_TEXTURE_SRGB_DECODE_EXT = 35400; // 0x8a48
-    field public static final int GL_TRIANGLES_ADJACENCY_EXT = 12; // 0xc
-    field public static final int GL_TRIANGLE_STRIP_ADJACENCY_EXT = 13; // 0xd
-    field public static final int GL_UNDEFINED_VERTEX_EXT = 33376; // 0x8260
-    field public static final int GL_UNSIGNED_INT_IMAGE_BUFFER_EXT = 36967; // 0x9067
-    field public static final int GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT = 36970; // 0x906a
-    field public static final int GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = 37133; // 0x910d
-    field public static final int GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT = 36312; // 0x8dd8
-    field public static final int GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT = 36879; // 0x900f
-    field public static final int GL_VERTEX_ARRAY_KHR = 32884; // 0x8074
-  }
-
-  public static interface GLES31Ext.DebugProcKHR {
-    method public void onMessage(int, int, int, int, String);
-  }
-
-  public class GLES32 extends android.opengl.GLES31 {
-    method public static void glBlendBarrier();
-    method public static void glBlendEquationSeparatei(int, int, int);
-    method public static void glBlendEquationi(int, int);
-    method public static void glBlendFuncSeparatei(int, int, int, int, int);
-    method public static void glBlendFunci(int, int, int);
-    method public static void glColorMaski(int, boolean, boolean, boolean, boolean);
-    method public static void glCopyImageSubData(int, int, int, int, int, int, int, int, int, int, int, int, int, int, int);
-    method public static void glDebugMessageCallback(android.opengl.GLES32.DebugProc);
-    method public static void glDebugMessageControl(int, int, int, int, int[], int, boolean);
-    method public static void glDebugMessageControl(int, int, int, int, java.nio.IntBuffer, boolean);
-    method public static void glDebugMessageInsert(int, int, int, int, int, String);
-    method public static void glDisablei(int, int);
-    method public static void glDrawElementsBaseVertex(int, int, int, java.nio.Buffer, int);
-    method public static void glDrawElementsInstancedBaseVertex(int, int, int, java.nio.Buffer, int, int);
-    method public static void glDrawElementsInstancedBaseVertex(int, int, int, int, int, int);
-    method public static void glDrawRangeElementsBaseVertex(int, int, int, int, int, java.nio.Buffer, int);
-    method public static void glEnablei(int, int);
-    method public static void glFramebufferTexture(int, int, int, int);
-    method public static int glGetDebugMessageLog(int, int, int[], int, int[], int, int[], int, int[], int, int[], int, byte[], int);
-    method public static int glGetDebugMessageLog(int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.ByteBuffer);
-    method public static String[] glGetDebugMessageLog(int, int[], int, int[], int, int[], int, int[], int);
-    method public static String[] glGetDebugMessageLog(int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer);
-    method public static int glGetGraphicsResetStatus();
-    method public static String glGetObjectLabel(int, int);
-    method public static String glGetObjectPtrLabel(long);
-    method public static long glGetPointerv(int);
-    method public static void glGetSamplerParameterIiv(int, int, int[], int);
-    method public static void glGetSamplerParameterIiv(int, int, java.nio.IntBuffer);
-    method public static void glGetSamplerParameterIuiv(int, int, int[], int);
-    method public static void glGetSamplerParameterIuiv(int, int, java.nio.IntBuffer);
-    method public static void glGetTexParameterIiv(int, int, int[], int);
-    method public static void glGetTexParameterIiv(int, int, java.nio.IntBuffer);
-    method public static void glGetTexParameterIuiv(int, int, int[], int);
-    method public static void glGetTexParameterIuiv(int, int, java.nio.IntBuffer);
-    method public static void glGetnUniformfv(int, int, int, float[], int);
-    method public static void glGetnUniformfv(int, int, int, java.nio.FloatBuffer);
-    method public static void glGetnUniformiv(int, int, int, int[], int);
-    method public static void glGetnUniformiv(int, int, int, java.nio.IntBuffer);
-    method public static void glGetnUniformuiv(int, int, int, int[], int);
-    method public static void glGetnUniformuiv(int, int, int, java.nio.IntBuffer);
-    method public static boolean glIsEnabledi(int, int);
-    method public static void glMinSampleShading(float);
-    method public static void glObjectLabel(int, int, int, String);
-    method public static void glObjectPtrLabel(long, String);
-    method public static void glPatchParameteri(int, int);
-    method public static void glPopDebugGroup();
-    method public static void glPrimitiveBoundingBox(float, float, float, float, float, float, float, float);
-    method public static void glPushDebugGroup(int, int, int, String);
-    method public static void glReadnPixels(int, int, int, int, int, int, int, java.nio.Buffer);
-    method public static void glSamplerParameterIiv(int, int, int[], int);
-    method public static void glSamplerParameterIiv(int, int, java.nio.IntBuffer);
-    method public static void glSamplerParameterIuiv(int, int, int[], int);
-    method public static void glSamplerParameterIuiv(int, int, java.nio.IntBuffer);
-    method public static void glTexBuffer(int, int, int);
-    method public static void glTexBufferRange(int, int, int, int, int);
-    method public static void glTexParameterIiv(int, int, int[], int);
-    method public static void glTexParameterIiv(int, int, java.nio.IntBuffer);
-    method public static void glTexParameterIuiv(int, int, int[], int);
-    method public static void glTexParameterIuiv(int, int, java.nio.IntBuffer);
-    method public static void glTexStorage3DMultisample(int, int, int, int, int, int, boolean);
-    field public static final int GL_BUFFER = 33504; // 0x82e0
-    field public static final int GL_CLAMP_TO_BORDER = 33069; // 0x812d
-    field public static final int GL_COLORBURN = 37530; // 0x929a
-    field public static final int GL_COLORDODGE = 37529; // 0x9299
-    field public static final int GL_COMPRESSED_RGBA_ASTC_10x10 = 37819; // 0x93bb
-    field public static final int GL_COMPRESSED_RGBA_ASTC_10x5 = 37816; // 0x93b8
-    field public static final int GL_COMPRESSED_RGBA_ASTC_10x6 = 37817; // 0x93b9
-    field public static final int GL_COMPRESSED_RGBA_ASTC_10x8 = 37818; // 0x93ba
-    field public static final int GL_COMPRESSED_RGBA_ASTC_12x10 = 37820; // 0x93bc
-    field public static final int GL_COMPRESSED_RGBA_ASTC_12x12 = 37821; // 0x93bd
-    field public static final int GL_COMPRESSED_RGBA_ASTC_4x4 = 37808; // 0x93b0
-    field public static final int GL_COMPRESSED_RGBA_ASTC_5x4 = 37809; // 0x93b1
-    field public static final int GL_COMPRESSED_RGBA_ASTC_5x5 = 37810; // 0x93b2
-    field public static final int GL_COMPRESSED_RGBA_ASTC_6x5 = 37811; // 0x93b3
-    field public static final int GL_COMPRESSED_RGBA_ASTC_6x6 = 37812; // 0x93b4
-    field public static final int GL_COMPRESSED_RGBA_ASTC_8x5 = 37813; // 0x93b5
-    field public static final int GL_COMPRESSED_RGBA_ASTC_8x6 = 37814; // 0x93b6
-    field public static final int GL_COMPRESSED_RGBA_ASTC_8x8 = 37815; // 0x93b7
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10 = 37851; // 0x93db
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5 = 37848; // 0x93d8
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6 = 37849; // 0x93d9
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8 = 37850; // 0x93da
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10 = 37852; // 0x93dc
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12 = 37853; // 0x93dd
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4 = 37840; // 0x93d0
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4 = 37841; // 0x93d1
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5 = 37842; // 0x93d2
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5 = 37843; // 0x93d3
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6 = 37844; // 0x93d4
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5 = 37845; // 0x93d5
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6 = 37846; // 0x93d6
-    field public static final int GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8 = 37847; // 0x93d7
-    field public static final int GL_CONTEXT_FLAGS = 33310; // 0x821e
-    field public static final int GL_CONTEXT_FLAG_DEBUG_BIT = 2; // 0x2
-    field public static final int GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT = 4; // 0x4
-    field public static final int GL_CONTEXT_LOST = 1287; // 0x507
-    field public static final int GL_DARKEN = 37527; // 0x9297
-    field public static final int GL_DEBUG_CALLBACK_FUNCTION = 33348; // 0x8244
-    field public static final int GL_DEBUG_CALLBACK_USER_PARAM = 33349; // 0x8245
-    field public static final int GL_DEBUG_GROUP_STACK_DEPTH = 33389; // 0x826d
-    field public static final int GL_DEBUG_LOGGED_MESSAGES = 37189; // 0x9145
-    field public static final int GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH = 33347; // 0x8243
-    field public static final int GL_DEBUG_OUTPUT = 37600; // 0x92e0
-    field public static final int GL_DEBUG_OUTPUT_SYNCHRONOUS = 33346; // 0x8242
-    field public static final int GL_DEBUG_SEVERITY_HIGH = 37190; // 0x9146
-    field public static final int GL_DEBUG_SEVERITY_LOW = 37192; // 0x9148
-    field public static final int GL_DEBUG_SEVERITY_MEDIUM = 37191; // 0x9147
-    field public static final int GL_DEBUG_SEVERITY_NOTIFICATION = 33387; // 0x826b
-    field public static final int GL_DEBUG_SOURCE_API = 33350; // 0x8246
-    field public static final int GL_DEBUG_SOURCE_APPLICATION = 33354; // 0x824a
-    field public static final int GL_DEBUG_SOURCE_OTHER = 33355; // 0x824b
-    field public static final int GL_DEBUG_SOURCE_SHADER_COMPILER = 33352; // 0x8248
-    field public static final int GL_DEBUG_SOURCE_THIRD_PARTY = 33353; // 0x8249
-    field public static final int GL_DEBUG_SOURCE_WINDOW_SYSTEM = 33351; // 0x8247
-    field public static final int GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR = 33357; // 0x824d
-    field public static final int GL_DEBUG_TYPE_ERROR = 33356; // 0x824c
-    field public static final int GL_DEBUG_TYPE_MARKER = 33384; // 0x8268
-    field public static final int GL_DEBUG_TYPE_OTHER = 33361; // 0x8251
-    field public static final int GL_DEBUG_TYPE_PERFORMANCE = 33360; // 0x8250
-    field public static final int GL_DEBUG_TYPE_POP_GROUP = 33386; // 0x826a
-    field public static final int GL_DEBUG_TYPE_PORTABILITY = 33359; // 0x824f
-    field public static final int GL_DEBUG_TYPE_PUSH_GROUP = 33385; // 0x8269
-    field public static final int GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR = 33358; // 0x824e
-    field public static final int GL_DIFFERENCE = 37534; // 0x929e
-    field public static final int GL_EXCLUSION = 37536; // 0x92a0
-    field public static final int GL_FIRST_VERTEX_CONVENTION = 36429; // 0x8e4d
-    field public static final int GL_FRACTIONAL_EVEN = 36476; // 0x8e7c
-    field public static final int GL_FRACTIONAL_ODD = 36475; // 0x8e7b
-    field public static final int GL_FRAGMENT_INTERPOLATION_OFFSET_BITS = 36445; // 0x8e5d
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_LAYERED = 36263; // 0x8da7
-    field public static final int GL_FRAMEBUFFER_DEFAULT_LAYERS = 37650; // 0x9312
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = 36264; // 0x8da8
-    field public static final int GL_GEOMETRY_INPUT_TYPE = 35095; // 0x8917
-    field public static final int GL_GEOMETRY_OUTPUT_TYPE = 35096; // 0x8918
-    field public static final int GL_GEOMETRY_SHADER = 36313; // 0x8dd9
-    field public static final int GL_GEOMETRY_SHADER_BIT = 4; // 0x4
-    field public static final int GL_GEOMETRY_SHADER_INVOCATIONS = 34943; // 0x887f
-    field public static final int GL_GEOMETRY_VERTICES_OUT = 35094; // 0x8916
-    field public static final int GL_GUILTY_CONTEXT_RESET = 33363; // 0x8253
-    field public static final int GL_HARDLIGHT = 37531; // 0x929b
-    field public static final int GL_HSL_COLOR = 37551; // 0x92af
-    field public static final int GL_HSL_HUE = 37549; // 0x92ad
-    field public static final int GL_HSL_LUMINOSITY = 37552; // 0x92b0
-    field public static final int GL_HSL_SATURATION = 37550; // 0x92ae
-    field public static final int GL_IMAGE_BUFFER = 36945; // 0x9051
-    field public static final int GL_IMAGE_CUBE_MAP_ARRAY = 36948; // 0x9054
-    field public static final int GL_INNOCENT_CONTEXT_RESET = 33364; // 0x8254
-    field public static final int GL_INT_IMAGE_BUFFER = 36956; // 0x905c
-    field public static final int GL_INT_IMAGE_CUBE_MAP_ARRAY = 36959; // 0x905f
-    field public static final int GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 37132; // 0x910c
-    field public static final int GL_INT_SAMPLER_BUFFER = 36304; // 0x8dd0
-    field public static final int GL_INT_SAMPLER_CUBE_MAP_ARRAY = 36878; // 0x900e
-    field public static final int GL_ISOLINES = 36474; // 0x8e7a
-    field public static final int GL_IS_PER_PATCH = 37607; // 0x92e7
-    field public static final int GL_LAST_VERTEX_CONVENTION = 36430; // 0x8e4e
-    field public static final int GL_LAYER_PROVOKING_VERTEX = 33374; // 0x825e
-    field public static final int GL_LIGHTEN = 37528; // 0x9298
-    field public static final int GL_LINES_ADJACENCY = 10; // 0xa
-    field public static final int GL_LINE_STRIP_ADJACENCY = 11; // 0xb
-    field public static final int GL_LOSE_CONTEXT_ON_RESET = 33362; // 0x8252
-    field public static final int GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS = 35378; // 0x8a32
-    field public static final int GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS = 36382; // 0x8e1e
-    field public static final int GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS = 36383; // 0x8e1f
-    field public static final int GL_MAX_DEBUG_GROUP_STACK_DEPTH = 33388; // 0x826c
-    field public static final int GL_MAX_DEBUG_LOGGED_MESSAGES = 37188; // 0x9144
-    field public static final int GL_MAX_DEBUG_MESSAGE_LENGTH = 37187; // 0x9143
-    field public static final int GL_MAX_FRAGMENT_INTERPOLATION_OFFSET = 36444; // 0x8e5c
-    field public static final int GL_MAX_FRAMEBUFFER_LAYERS = 37655; // 0x9317
-    field public static final int GL_MAX_GEOMETRY_ATOMIC_COUNTERS = 37589; // 0x92d5
-    field public static final int GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS = 37583; // 0x92cf
-    field public static final int GL_MAX_GEOMETRY_IMAGE_UNIFORMS = 37069; // 0x90cd
-    field public static final int GL_MAX_GEOMETRY_INPUT_COMPONENTS = 37155; // 0x9123
-    field public static final int GL_MAX_GEOMETRY_OUTPUT_COMPONENTS = 37156; // 0x9124
-    field public static final int GL_MAX_GEOMETRY_OUTPUT_VERTICES = 36320; // 0x8de0
-    field public static final int GL_MAX_GEOMETRY_SHADER_INVOCATIONS = 36442; // 0x8e5a
-    field public static final int GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS = 37079; // 0x90d7
-    field public static final int GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = 35881; // 0x8c29
-    field public static final int GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 36321; // 0x8de1
-    field public static final int GL_MAX_GEOMETRY_UNIFORM_BLOCKS = 35372; // 0x8a2c
-    field public static final int GL_MAX_GEOMETRY_UNIFORM_COMPONENTS = 36319; // 0x8ddf
-    field public static final int GL_MAX_LABEL_LENGTH = 33512; // 0x82e8
-    field public static final int GL_MAX_PATCH_VERTICES = 36477; // 0x8e7d
-    field public static final int GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS = 37587; // 0x92d3
-    field public static final int GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS = 37581; // 0x92cd
-    field public static final int GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS = 37067; // 0x90cb
-    field public static final int GL_MAX_TESS_CONTROL_INPUT_COMPONENTS = 34924; // 0x886c
-    field public static final int GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS = 36483; // 0x8e83
-    field public static final int GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS = 37080; // 0x90d8
-    field public static final int GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS = 36481; // 0x8e81
-    field public static final int GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS = 36485; // 0x8e85
-    field public static final int GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS = 36489; // 0x8e89
-    field public static final int GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS = 36479; // 0x8e7f
-    field public static final int GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS = 37588; // 0x92d4
-    field public static final int GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS = 37582; // 0x92ce
-    field public static final int GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS = 37068; // 0x90cc
-    field public static final int GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS = 34925; // 0x886d
-    field public static final int GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS = 36486; // 0x8e86
-    field public static final int GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS = 37081; // 0x90d9
-    field public static final int GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS = 36482; // 0x8e82
-    field public static final int GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS = 36490; // 0x8e8a
-    field public static final int GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS = 36480; // 0x8e80
-    field public static final int GL_MAX_TESS_GEN_LEVEL = 36478; // 0x8e7e
-    field public static final int GL_MAX_TESS_PATCH_COMPONENTS = 36484; // 0x8e84
-    field public static final int GL_MAX_TEXTURE_BUFFER_SIZE = 35883; // 0x8c2b
-    field public static final int GL_MIN_FRAGMENT_INTERPOLATION_OFFSET = 36443; // 0x8e5b
-    field public static final int GL_MIN_SAMPLE_SHADING_VALUE = 35895; // 0x8c37
-    field public static final int GL_MULTIPLY = 37524; // 0x9294
-    field public static final int GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY = 37762; // 0x9382
-    field public static final int GL_MULTISAMPLE_LINE_WIDTH_RANGE = 37761; // 0x9381
-    field public static final int GL_NO_RESET_NOTIFICATION = 33377; // 0x8261
-    field public static final int GL_OVERLAY = 37526; // 0x9296
-    field public static final int GL_PATCHES = 14; // 0xe
-    field public static final int GL_PATCH_VERTICES = 36466; // 0x8e72
-    field public static final int GL_PRIMITIVES_GENERATED = 35975; // 0x8c87
-    field public static final int GL_PRIMITIVE_BOUNDING_BOX = 37566; // 0x92be
-    field public static final int GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED = 33313; // 0x8221
-    field public static final int GL_PROGRAM = 33506; // 0x82e2
-    field public static final int GL_PROGRAM_PIPELINE = 33508; // 0x82e4
-    field public static final int GL_QUADS = 7; // 0x7
-    field public static final int GL_QUERY = 33507; // 0x82e3
-    field public static final int GL_REFERENCED_BY_GEOMETRY_SHADER = 37641; // 0x9309
-    field public static final int GL_REFERENCED_BY_TESS_CONTROL_SHADER = 37639; // 0x9307
-    field public static final int GL_REFERENCED_BY_TESS_EVALUATION_SHADER = 37640; // 0x9308
-    field public static final int GL_RESET_NOTIFICATION_STRATEGY = 33366; // 0x8256
-    field public static final int GL_SAMPLER = 33510; // 0x82e6
-    field public static final int GL_SAMPLER_2D_MULTISAMPLE_ARRAY = 37131; // 0x910b
-    field public static final int GL_SAMPLER_BUFFER = 36290; // 0x8dc2
-    field public static final int GL_SAMPLER_CUBE_MAP_ARRAY = 36876; // 0x900c
-    field public static final int GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW = 36877; // 0x900d
-    field public static final int GL_SAMPLE_SHADING = 35894; // 0x8c36
-    field public static final int GL_SCREEN = 37525; // 0x9295
-    field public static final int GL_SHADER = 33505; // 0x82e1
-    field public static final int GL_SOFTLIGHT = 37532; // 0x929c
-    field public static final int GL_STACK_OVERFLOW = 1283; // 0x503
-    field public static final int GL_STACK_UNDERFLOW = 1284; // 0x504
-    field public static final int GL_TESS_CONTROL_OUTPUT_VERTICES = 36469; // 0x8e75
-    field public static final int GL_TESS_CONTROL_SHADER = 36488; // 0x8e88
-    field public static final int GL_TESS_CONTROL_SHADER_BIT = 8; // 0x8
-    field public static final int GL_TESS_EVALUATION_SHADER = 36487; // 0x8e87
-    field public static final int GL_TESS_EVALUATION_SHADER_BIT = 16; // 0x10
-    field public static final int GL_TESS_GEN_MODE = 36470; // 0x8e76
-    field public static final int GL_TESS_GEN_POINT_MODE = 36473; // 0x8e79
-    field public static final int GL_TESS_GEN_SPACING = 36471; // 0x8e77
-    field public static final int GL_TESS_GEN_VERTEX_ORDER = 36472; // 0x8e78
-    field public static final int GL_TEXTURE_2D_MULTISAMPLE_ARRAY = 37122; // 0x9102
-    field public static final int GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY = 37125; // 0x9105
-    field public static final int GL_TEXTURE_BINDING_BUFFER = 35884; // 0x8c2c
-    field public static final int GL_TEXTURE_BINDING_CUBE_MAP_ARRAY = 36874; // 0x900a
-    field public static final int GL_TEXTURE_BORDER_COLOR = 4100; // 0x1004
-    field public static final int GL_TEXTURE_BUFFER = 35882; // 0x8c2a
-    field public static final int GL_TEXTURE_BUFFER_BINDING = 35882; // 0x8c2a
-    field public static final int GL_TEXTURE_BUFFER_DATA_STORE_BINDING = 35885; // 0x8c2d
-    field public static final int GL_TEXTURE_BUFFER_OFFSET = 37277; // 0x919d
-    field public static final int GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT = 37279; // 0x919f
-    field public static final int GL_TEXTURE_BUFFER_SIZE = 37278; // 0x919e
-    field public static final int GL_TEXTURE_CUBE_MAP_ARRAY = 36873; // 0x9009
-    field public static final int GL_TRIANGLES_ADJACENCY = 12; // 0xc
-    field public static final int GL_TRIANGLE_STRIP_ADJACENCY = 13; // 0xd
-    field public static final int GL_UNDEFINED_VERTEX = 33376; // 0x8260
-    field public static final int GL_UNKNOWN_CONTEXT_RESET = 33365; // 0x8255
-    field public static final int GL_UNSIGNED_INT_IMAGE_BUFFER = 36967; // 0x9067
-    field public static final int GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY = 36970; // 0x906a
-    field public static final int GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 37133; // 0x910d
-    field public static final int GL_UNSIGNED_INT_SAMPLER_BUFFER = 36312; // 0x8dd8
-    field public static final int GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY = 36879; // 0x900f
-    field public static final int GL_VERTEX_ARRAY = 32884; // 0x8074
-  }
-
-  public static interface GLES32.DebugProc {
-    method public void onMessage(int, int, int, int, String);
-  }
-
-  public class GLException extends java.lang.RuntimeException {
-    ctor public GLException(int);
-    ctor public GLException(int, String);
-  }
-
-  public class GLSurfaceView extends android.view.SurfaceView implements android.view.SurfaceHolder.Callback2 {
-    ctor public GLSurfaceView(android.content.Context);
-    ctor public GLSurfaceView(android.content.Context, android.util.AttributeSet);
-    method public int getDebugFlags();
-    method public boolean getPreserveEGLContextOnPause();
-    method public int getRenderMode();
-    method public void onPause();
-    method public void onResume();
-    method public void queueEvent(Runnable);
-    method public void requestRender();
-    method public void setDebugFlags(int);
-    method public void setEGLConfigChooser(android.opengl.GLSurfaceView.EGLConfigChooser);
-    method public void setEGLConfigChooser(boolean);
-    method public void setEGLConfigChooser(int, int, int, int, int, int);
-    method public void setEGLContextClientVersion(int);
-    method public void setEGLContextFactory(android.opengl.GLSurfaceView.EGLContextFactory);
-    method public void setEGLWindowSurfaceFactory(android.opengl.GLSurfaceView.EGLWindowSurfaceFactory);
-    method public void setGLWrapper(android.opengl.GLSurfaceView.GLWrapper);
-    method public void setPreserveEGLContextOnPause(boolean);
-    method public void setRenderMode(int);
-    method public void setRenderer(android.opengl.GLSurfaceView.Renderer);
-    method public void surfaceChanged(android.view.SurfaceHolder, int, int, int);
-    method public void surfaceCreated(android.view.SurfaceHolder);
-    method public void surfaceDestroyed(android.view.SurfaceHolder);
-    method @Deprecated public void surfaceRedrawNeeded(android.view.SurfaceHolder);
-    field public static final int DEBUG_CHECK_GL_ERROR = 1; // 0x1
-    field public static final int DEBUG_LOG_GL_CALLS = 2; // 0x2
-    field public static final int RENDERMODE_CONTINUOUSLY = 1; // 0x1
-    field public static final int RENDERMODE_WHEN_DIRTY = 0; // 0x0
-  }
-
-  public static interface GLSurfaceView.EGLConfigChooser {
-    method public javax.microedition.khronos.egl.EGLConfig chooseConfig(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay);
-  }
-
-  public static interface GLSurfaceView.EGLContextFactory {
-    method public javax.microedition.khronos.egl.EGLContext createContext(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig);
-    method public void destroyContext(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLContext);
-  }
-
-  public static interface GLSurfaceView.EGLWindowSurfaceFactory {
-    method public javax.microedition.khronos.egl.EGLSurface createWindowSurface(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, Object);
-    method public void destroySurface(javax.microedition.khronos.egl.EGL10, javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface);
-  }
-
-  public static interface GLSurfaceView.GLWrapper {
-    method public javax.microedition.khronos.opengles.GL wrap(javax.microedition.khronos.opengles.GL);
-  }
-
-  public static interface GLSurfaceView.Renderer {
-    method public void onDrawFrame(javax.microedition.khronos.opengles.GL10);
-    method public void onSurfaceChanged(javax.microedition.khronos.opengles.GL10, int, int);
-    method public void onSurfaceCreated(javax.microedition.khronos.opengles.GL10, javax.microedition.khronos.egl.EGLConfig);
-  }
-
-  public class GLU {
-    ctor public GLU();
-    method public static String gluErrorString(int);
-    method public static void gluLookAt(javax.microedition.khronos.opengles.GL10, float, float, float, float, float, float, float, float, float);
-    method public static void gluOrtho2D(javax.microedition.khronos.opengles.GL10, float, float, float, float);
-    method public static void gluPerspective(javax.microedition.khronos.opengles.GL10, float, float, float, float);
-    method public static int gluProject(float, float, float, float[], int, float[], int, int[], int, float[], int);
-    method public static int gluUnProject(float, float, float, float[], int, float[], int, int[], int, float[], int);
-  }
-
-  public final class GLUtils {
-    method public static String getEGLErrorString(int);
-    method public static int getInternalFormat(android.graphics.Bitmap);
-    method public static int getType(android.graphics.Bitmap);
-    method public static void texImage2D(int, int, int, android.graphics.Bitmap, int);
-    method public static void texImage2D(int, int, int, android.graphics.Bitmap, int, int);
-    method public static void texImage2D(int, int, android.graphics.Bitmap, int);
-    method public static void texSubImage2D(int, int, int, int, android.graphics.Bitmap);
-    method public static void texSubImage2D(int, int, int, int, android.graphics.Bitmap, int, int);
-  }
-
-  public class Matrix {
-    ctor @Deprecated public Matrix();
-    method public static void frustumM(float[], int, float, float, float, float, float, float);
-    method public static boolean invertM(float[], int, float[], int);
-    method public static float length(float, float, float);
-    method public static void multiplyMM(float[], int, float[], int, float[], int);
-    method public static void multiplyMV(float[], int, float[], int, float[], int);
-    method public static void orthoM(float[], int, float, float, float, float, float, float);
-    method public static void perspectiveM(float[], int, float, float, float, float);
-    method public static void rotateM(float[], int, float[], int, float, float, float, float);
-    method public static void rotateM(float[], int, float, float, float, float);
-    method public static void scaleM(float[], int, float[], int, float, float, float);
-    method public static void scaleM(float[], int, float, float, float);
-    method public static void setIdentityM(float[], int);
-    method public static void setLookAtM(float[], int, float, float, float, float, float, float, float, float, float);
-    method public static void setRotateEulerM(float[], int, float, float, float);
-    method public static void setRotateM(float[], int, float, float, float, float);
-    method public static void translateM(float[], int, float[], int, float, float, float);
-    method public static void translateM(float[], int, float, float, float);
-    method public static void transposeM(float[], int, float[], int);
-  }
-
-  public class Visibility {
-    ctor public Visibility();
-    method public static void computeBoundingSphere(float[], int, int, float[], int);
-    method public static int frustumCullSpheres(float[], int, float[], int, int, int[], int, int);
-    method public static int visibilityTest(float[], int, float[], int, char[], int, int);
-  }
-
-}
-
-package android.os {
-
-  @Deprecated public abstract class AsyncTask<Params, Progress, Result> {
-    ctor @Deprecated public AsyncTask();
-    method @Deprecated public final boolean cancel(boolean);
-    method @Deprecated @WorkerThread protected abstract Result doInBackground(Params...);
-    method @Deprecated @MainThread public final android.os.AsyncTask<Params,Progress,Result> execute(Params...);
-    method @Deprecated @MainThread public static void execute(Runnable);
-    method @Deprecated @MainThread public final android.os.AsyncTask<Params,Progress,Result> executeOnExecutor(java.util.concurrent.Executor, Params...);
-    method @Deprecated public final Result get() throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
-    method @Deprecated public final Result get(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
-    method @Deprecated public final android.os.AsyncTask.Status getStatus();
-    method @Deprecated public final boolean isCancelled();
-    method @Deprecated @MainThread protected void onCancelled(Result);
-    method @Deprecated @MainThread protected void onCancelled();
-    method @Deprecated @MainThread protected void onPostExecute(Result);
-    method @Deprecated @MainThread protected void onPreExecute();
-    method @Deprecated @MainThread protected void onProgressUpdate(Progress...);
-    method @Deprecated @WorkerThread protected final void publishProgress(Progress...);
-    field @Deprecated public static final java.util.concurrent.Executor SERIAL_EXECUTOR;
-    field @Deprecated public static final java.util.concurrent.Executor THREAD_POOL_EXECUTOR;
-  }
-
-  @Deprecated public enum AsyncTask.Status {
-    enum_constant @Deprecated public static final android.os.AsyncTask.Status FINISHED;
-    enum_constant @Deprecated public static final android.os.AsyncTask.Status PENDING;
-    enum_constant @Deprecated public static final android.os.AsyncTask.Status RUNNING;
-  }
-
-  public class BadParcelableException extends android.util.AndroidRuntimeException {
-    ctor public BadParcelableException(String);
-    ctor public BadParcelableException(Exception);
-  }
-
-  public class BaseBundle {
-    method public void clear();
-    method public boolean containsKey(String);
-    method @Nullable public Object get(String);
-    method public boolean getBoolean(String);
-    method public boolean getBoolean(String, boolean);
-    method @Nullable public boolean[] getBooleanArray(@Nullable String);
-    method public double getDouble(String);
-    method public double getDouble(String, double);
-    method @Nullable public double[] getDoubleArray(@Nullable String);
-    method public int getInt(String);
-    method public int getInt(String, int);
-    method @Nullable public int[] getIntArray(@Nullable String);
-    method public long getLong(String);
-    method public long getLong(String, long);
-    method @Nullable public long[] getLongArray(@Nullable String);
-    method @Nullable public String getString(@Nullable String);
-    method public String getString(@Nullable String, String);
-    method @Nullable public String[] getStringArray(@Nullable String);
-    method public boolean isEmpty();
-    method public java.util.Set<java.lang.String> keySet();
-    method public void putAll(android.os.PersistableBundle);
-    method public void putBoolean(@Nullable String, boolean);
-    method public void putBooleanArray(@Nullable String, @Nullable boolean[]);
-    method public void putDouble(@Nullable String, double);
-    method public void putDoubleArray(@Nullable String, @Nullable double[]);
-    method public void putInt(@Nullable String, int);
-    method public void putIntArray(@Nullable String, @Nullable int[]);
-    method public void putLong(@Nullable String, long);
-    method public void putLongArray(@Nullable String, @Nullable long[]);
-    method public void putString(@Nullable String, @Nullable String);
-    method public void putStringArray(@Nullable String, @Nullable String[]);
-    method public void remove(String);
-    method public int size();
-  }
-
-  public class BatteryManager {
-    method public long computeChargeTimeRemaining();
-    method public int getIntProperty(int);
-    method public long getLongProperty(int);
-    method public boolean isCharging();
-    field public static final String ACTION_CHARGING = "android.os.action.CHARGING";
-    field public static final String ACTION_DISCHARGING = "android.os.action.DISCHARGING";
-    field public static final int BATTERY_HEALTH_COLD = 7; // 0x7
-    field public static final int BATTERY_HEALTH_DEAD = 4; // 0x4
-    field public static final int BATTERY_HEALTH_GOOD = 2; // 0x2
-    field public static final int BATTERY_HEALTH_OVERHEAT = 3; // 0x3
-    field public static final int BATTERY_HEALTH_OVER_VOLTAGE = 5; // 0x5
-    field public static final int BATTERY_HEALTH_UNKNOWN = 1; // 0x1
-    field public static final int BATTERY_HEALTH_UNSPECIFIED_FAILURE = 6; // 0x6
-    field public static final int BATTERY_PLUGGED_AC = 1; // 0x1
-    field public static final int BATTERY_PLUGGED_USB = 2; // 0x2
-    field public static final int BATTERY_PLUGGED_WIRELESS = 4; // 0x4
-    field public static final int BATTERY_PROPERTY_CAPACITY = 4; // 0x4
-    field public static final int BATTERY_PROPERTY_CHARGE_COUNTER = 1; // 0x1
-    field public static final int BATTERY_PROPERTY_CURRENT_AVERAGE = 3; // 0x3
-    field public static final int BATTERY_PROPERTY_CURRENT_NOW = 2; // 0x2
-    field public static final int BATTERY_PROPERTY_ENERGY_COUNTER = 5; // 0x5
-    field public static final int BATTERY_PROPERTY_STATUS = 6; // 0x6
-    field public static final int BATTERY_STATUS_CHARGING = 2; // 0x2
-    field public static final int BATTERY_STATUS_DISCHARGING = 3; // 0x3
-    field public static final int BATTERY_STATUS_FULL = 5; // 0x5
-    field public static final int BATTERY_STATUS_NOT_CHARGING = 4; // 0x4
-    field public static final int BATTERY_STATUS_UNKNOWN = 1; // 0x1
-    field public static final String EXTRA_BATTERY_LOW = "battery_low";
-    field public static final String EXTRA_HEALTH = "health";
-    field public static final String EXTRA_ICON_SMALL = "icon-small";
-    field public static final String EXTRA_LEVEL = "level";
-    field public static final String EXTRA_PLUGGED = "plugged";
-    field public static final String EXTRA_PRESENT = "present";
-    field public static final String EXTRA_SCALE = "scale";
-    field public static final String EXTRA_STATUS = "status";
-    field public static final String EXTRA_TECHNOLOGY = "technology";
-    field public static final String EXTRA_TEMPERATURE = "temperature";
-    field public static final String EXTRA_VOLTAGE = "voltage";
-  }
-
-  public class Binder implements android.os.IBinder {
-    ctor public Binder();
-    ctor public Binder(@Nullable String);
-    method public void attachInterface(@Nullable android.os.IInterface, @Nullable String);
-    method public static final long clearCallingIdentity();
-    method public static final long clearCallingWorkSource();
-    method public void dump(@NonNull java.io.FileDescriptor, @Nullable String[]);
-    method protected void dump(@NonNull java.io.FileDescriptor, @NonNull java.io.PrintWriter, @Nullable String[]);
-    method public void dumpAsync(@NonNull java.io.FileDescriptor, @Nullable String[]);
-    method public static final void flushPendingCommands();
-    method public static final int getCallingPid();
-    method public static final int getCallingUid();
-    method public static final int getCallingUidOrThrow();
-    method @NonNull public static final android.os.UserHandle getCallingUserHandle();
-    method public static final int getCallingWorkSourceUid();
-    method @Nullable public String getInterfaceDescriptor();
-    method public boolean isBinderAlive();
-    method public static final void joinThreadPool();
-    method public void linkToDeath(@NonNull android.os.IBinder.DeathRecipient, int);
-    method protected boolean onTransact(int, @NonNull android.os.Parcel, @Nullable android.os.Parcel, int) throws android.os.RemoteException;
-    method public boolean pingBinder();
-    method @Nullable public android.os.IInterface queryLocalInterface(@NonNull String);
-    method public static final void restoreCallingIdentity(long);
-    method public static final void restoreCallingWorkSource(long);
-    method public static final long setCallingWorkSourceUid(int);
-    method public final boolean transact(int, @NonNull android.os.Parcel, @Nullable android.os.Parcel, int) throws android.os.RemoteException;
-    method public boolean unlinkToDeath(@NonNull android.os.IBinder.DeathRecipient, int);
-  }
-
-  public class Build {
-    ctor public Build();
-    method @NonNull public static java.util.List<android.os.Build.Partition> getFingerprintedPartitions();
-    method public static String getRadioVersion();
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public static String getSerial();
-    field public static final String BOARD;
-    field public static final String BOOTLOADER;
-    field public static final String BRAND;
-    field @Deprecated public static final String CPU_ABI;
-    field @Deprecated public static final String CPU_ABI2;
-    field public static final String DEVICE;
-    field public static final String DISPLAY;
-    field public static final String FINGERPRINT;
-    field public static final String HARDWARE;
-    field public static final String HOST;
-    field public static final String ID;
-    field public static final String MANUFACTURER;
-    field public static final String MODEL;
-    field public static final String PRODUCT;
-    field @Deprecated public static final String RADIO;
-    field @Deprecated public static final String SERIAL;
-    field @NonNull public static final String SKU;
-    field public static final String[] SUPPORTED_32_BIT_ABIS;
-    field public static final String[] SUPPORTED_64_BIT_ABIS;
-    field public static final String[] SUPPORTED_ABIS;
-    field public static final String TAGS;
-    field public static final long TIME;
-    field public static final String TYPE;
-    field public static final String UNKNOWN = "unknown";
-    field public static final String USER;
-  }
-
-  public static class Build.Partition {
-    method public long getBuildTimeMillis();
-    method @NonNull public String getFingerprint();
-    method @NonNull public String getName();
-    field public static final String PARTITION_NAME_SYSTEM = "system";
-  }
-
-  public static class Build.VERSION {
-    ctor public Build.VERSION();
-    field public static final String BASE_OS;
-    field public static final String CODENAME;
-    field public static final String INCREMENTAL;
-    field public static final int PREVIEW_SDK_INT;
-    field public static final String RELEASE;
-    field @NonNull public static final String RELEASE_OR_CODENAME;
-    field @Deprecated public static final String SDK;
-    field public static final int SDK_INT;
-    field public static final String SECURITY_PATCH;
-  }
-
-  public static class Build.VERSION_CODES {
-    ctor public Build.VERSION_CODES();
-    field public static final int BASE = 1; // 0x1
-    field public static final int BASE_1_1 = 2; // 0x2
-    field public static final int CUPCAKE = 3; // 0x3
-    field public static final int CUR_DEVELOPMENT = 10000; // 0x2710
-    field public static final int DONUT = 4; // 0x4
-    field public static final int ECLAIR = 5; // 0x5
-    field public static final int ECLAIR_0_1 = 6; // 0x6
-    field public static final int ECLAIR_MR1 = 7; // 0x7
-    field public static final int FROYO = 8; // 0x8
-    field public static final int GINGERBREAD = 9; // 0x9
-    field public static final int GINGERBREAD_MR1 = 10; // 0xa
-    field public static final int HONEYCOMB = 11; // 0xb
-    field public static final int HONEYCOMB_MR1 = 12; // 0xc
-    field public static final int HONEYCOMB_MR2 = 13; // 0xd
-    field public static final int ICE_CREAM_SANDWICH = 14; // 0xe
-    field public static final int ICE_CREAM_SANDWICH_MR1 = 15; // 0xf
-    field public static final int JELLY_BEAN = 16; // 0x10
-    field public static final int JELLY_BEAN_MR1 = 17; // 0x11
-    field public static final int JELLY_BEAN_MR2 = 18; // 0x12
-    field public static final int KITKAT = 19; // 0x13
-    field public static final int KITKAT_WATCH = 20; // 0x14
-    field public static final int LOLLIPOP = 21; // 0x15
-    field public static final int LOLLIPOP_MR1 = 22; // 0x16
-    field public static final int M = 23; // 0x17
-    field public static final int N = 24; // 0x18
-    field public static final int N_MR1 = 25; // 0x19
-    field public static final int O = 26; // 0x1a
-    field public static final int O_MR1 = 27; // 0x1b
-    field public static final int P = 28; // 0x1c
-    field public static final int Q = 29; // 0x1d
-    field public static final int R = 30; // 0x1e
-  }
-
-  public final class Bundle extends android.os.BaseBundle implements java.lang.Cloneable android.os.Parcelable {
-    ctor public Bundle();
-    ctor public Bundle(ClassLoader);
-    ctor public Bundle(int);
-    ctor public Bundle(android.os.Bundle);
-    ctor public Bundle(android.os.PersistableBundle);
-    method public Object clone();
-    method public android.os.Bundle deepCopy();
-    method public int describeContents();
-    method @Nullable public android.os.IBinder getBinder(@Nullable String);
-    method @Nullable public android.os.Bundle getBundle(@Nullable String);
-    method public byte getByte(String);
-    method public Byte getByte(String, byte);
-    method @Nullable public byte[] getByteArray(@Nullable String);
-    method public char getChar(String);
-    method public char getChar(String, char);
-    method @Nullable public char[] getCharArray(@Nullable String);
-    method @Nullable public CharSequence getCharSequence(@Nullable String);
-    method public CharSequence getCharSequence(@Nullable String, CharSequence);
-    method @Nullable public CharSequence[] getCharSequenceArray(@Nullable String);
-    method @Nullable public java.util.ArrayList<java.lang.CharSequence> getCharSequenceArrayList(@Nullable String);
-    method public ClassLoader getClassLoader();
-    method public float getFloat(String);
-    method public float getFloat(String, float);
-    method @Nullable public float[] getFloatArray(@Nullable String);
-    method @Nullable public java.util.ArrayList<java.lang.Integer> getIntegerArrayList(@Nullable String);
-    method @Nullable public <T extends android.os.Parcelable> T getParcelable(@Nullable String);
-    method @Nullable public android.os.Parcelable[] getParcelableArray(@Nullable String);
-    method @Nullable public <T extends android.os.Parcelable> java.util.ArrayList<T> getParcelableArrayList(@Nullable String);
-    method @Nullable public java.io.Serializable getSerializable(@Nullable String);
-    method public short getShort(String);
-    method public short getShort(String, short);
-    method @Nullable public short[] getShortArray(@Nullable String);
-    method @Nullable public android.util.Size getSize(@Nullable String);
-    method @Nullable public android.util.SizeF getSizeF(@Nullable String);
-    method @Nullable public <T extends android.os.Parcelable> android.util.SparseArray<T> getSparseParcelableArray(@Nullable String);
-    method @Nullable public java.util.ArrayList<java.lang.String> getStringArrayList(@Nullable String);
-    method public boolean hasFileDescriptors();
-    method public void putAll(android.os.Bundle);
-    method public void putBinder(@Nullable String, @Nullable android.os.IBinder);
-    method public void putBundle(@Nullable String, @Nullable android.os.Bundle);
-    method public void putByte(@Nullable String, byte);
-    method public void putByteArray(@Nullable String, @Nullable byte[]);
-    method public void putChar(@Nullable String, char);
-    method public void putCharArray(@Nullable String, @Nullable char[]);
-    method public void putCharSequence(@Nullable String, @Nullable CharSequence);
-    method public void putCharSequenceArray(@Nullable String, @Nullable CharSequence[]);
-    method public void putCharSequenceArrayList(@Nullable String, @Nullable java.util.ArrayList<java.lang.CharSequence>);
-    method public void putFloat(@Nullable String, float);
-    method public void putFloatArray(@Nullable String, @Nullable float[]);
-    method public void putIntegerArrayList(@Nullable String, @Nullable java.util.ArrayList<java.lang.Integer>);
-    method public void putParcelable(@Nullable String, @Nullable android.os.Parcelable);
-    method public void putParcelableArray(@Nullable String, @Nullable android.os.Parcelable[]);
-    method public void putParcelableArrayList(@Nullable String, @Nullable java.util.ArrayList<? extends android.os.Parcelable>);
-    method public void putSerializable(@Nullable String, @Nullable java.io.Serializable);
-    method public void putShort(@Nullable String, short);
-    method public void putShortArray(@Nullable String, @Nullable short[]);
-    method public void putSize(@Nullable String, @Nullable android.util.Size);
-    method public void putSizeF(@Nullable String, @Nullable android.util.SizeF);
-    method public void putSparseParcelableArray(@Nullable String, @Nullable android.util.SparseArray<? extends android.os.Parcelable>);
-    method public void putStringArrayList(@Nullable String, @Nullable java.util.ArrayList<java.lang.String>);
-    method public void readFromParcel(android.os.Parcel);
-    method public void setClassLoader(ClassLoader);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.Bundle> CREATOR;
-    field public static final android.os.Bundle EMPTY;
-  }
-
-  public final class CancellationSignal {
-    ctor public CancellationSignal();
-    method public void cancel();
-    method public boolean isCanceled();
-    method public void setOnCancelListener(android.os.CancellationSignal.OnCancelListener);
-    method public void throwIfCanceled();
-  }
-
-  public static interface CancellationSignal.OnCancelListener {
-    method public void onCancel();
-  }
-
-  public class ConditionVariable {
-    ctor public ConditionVariable();
-    ctor public ConditionVariable(boolean);
-    method public void block();
-    method public boolean block(long);
-    method public void close();
-    method public void open();
-  }
-
-  public abstract class CountDownTimer {
-    ctor public CountDownTimer(long, long);
-    method public final void cancel();
-    method public abstract void onFinish();
-    method public abstract void onTick(long);
-    method public final android.os.CountDownTimer start();
-  }
-
-  public final class CpuUsageInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getActive();
-    method public long getTotal();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.CpuUsageInfo> CREATOR;
-  }
-
-  public class DeadObjectException extends android.os.RemoteException {
-    ctor public DeadObjectException();
-    ctor public DeadObjectException(String);
-  }
-
-  public class DeadSystemException extends android.os.DeadObjectException {
-    ctor public DeadSystemException();
-  }
-
-  public final class Debug {
-    method public static void attachJvmtiAgent(@NonNull String, @Nullable String, @Nullable ClassLoader) throws java.io.IOException;
-    method @Deprecated public static void changeDebugPort(int);
-    method public static void dumpHprofData(String) throws java.io.IOException;
-    method public static boolean dumpService(String, java.io.FileDescriptor, String[]);
-    method public static void enableEmulatorTraceOutput();
-    method public static int getBinderDeathObjectCount();
-    method public static int getBinderLocalObjectCount();
-    method public static int getBinderProxyObjectCount();
-    method public static int getBinderReceivedTransactions();
-    method public static int getBinderSentTransactions();
-    method @Deprecated public static int getGlobalAllocCount();
-    method @Deprecated public static int getGlobalAllocSize();
-    method @Deprecated public static int getGlobalClassInitCount();
-    method @Deprecated public static int getGlobalClassInitTime();
-    method @Deprecated public static int getGlobalExternalAllocCount();
-    method @Deprecated public static int getGlobalExternalAllocSize();
-    method @Deprecated public static int getGlobalExternalFreedCount();
-    method @Deprecated public static int getGlobalExternalFreedSize();
-    method @Deprecated public static int getGlobalFreedCount();
-    method @Deprecated public static int getGlobalFreedSize();
-    method @Deprecated public static int getGlobalGcInvocationCount();
-    method public static int getLoadedClassCount();
-    method public static void getMemoryInfo(android.os.Debug.MemoryInfo);
-    method public static long getNativeHeapAllocatedSize();
-    method public static long getNativeHeapFreeSize();
-    method public static long getNativeHeapSize();
-    method public static long getPss();
-    method public static String getRuntimeStat(String);
-    method public static java.util.Map<java.lang.String,java.lang.String> getRuntimeStats();
-    method @Deprecated public static int getThreadAllocCount();
-    method @Deprecated public static int getThreadAllocSize();
-    method @Deprecated public static int getThreadExternalAllocCount();
-    method @Deprecated public static int getThreadExternalAllocSize();
-    method @Deprecated public static int getThreadGcInvocationCount();
-    method public static boolean isDebuggerConnected();
-    method public static void printLoadedClasses(int);
-    method @Deprecated public static void resetAllCounts();
-    method @Deprecated public static void resetGlobalAllocCount();
-    method @Deprecated public static void resetGlobalAllocSize();
-    method @Deprecated public static void resetGlobalClassInitCount();
-    method @Deprecated public static void resetGlobalClassInitTime();
-    method @Deprecated public static void resetGlobalExternalAllocCount();
-    method @Deprecated public static void resetGlobalExternalAllocSize();
-    method @Deprecated public static void resetGlobalExternalFreedCount();
-    method @Deprecated public static void resetGlobalExternalFreedSize();
-    method @Deprecated public static void resetGlobalFreedCount();
-    method @Deprecated public static void resetGlobalFreedSize();
-    method @Deprecated public static void resetGlobalGcInvocationCount();
-    method @Deprecated public static void resetThreadAllocCount();
-    method @Deprecated public static void resetThreadAllocSize();
-    method @Deprecated public static void resetThreadExternalAllocCount();
-    method @Deprecated public static void resetThreadExternalAllocSize();
-    method @Deprecated public static void resetThreadGcInvocationCount();
-    method @Deprecated public static int setAllocationLimit(int);
-    method @Deprecated public static int setGlobalAllocationLimit(int);
-    method @Deprecated public static void startAllocCounting();
-    method public static void startMethodTracing();
-    method public static void startMethodTracing(String);
-    method public static void startMethodTracing(String, int);
-    method public static void startMethodTracing(String, int, int);
-    method public static void startMethodTracingSampling(String, int, int);
-    method public static void startNativeTracing();
-    method @Deprecated public static void stopAllocCounting();
-    method public static void stopMethodTracing();
-    method public static void stopNativeTracing();
-    method public static long threadCpuTimeNanos();
-    method public static void waitForDebugger();
-    method public static boolean waitingForDebugger();
-    field public static final int SHOW_CLASSLOADER = 2; // 0x2
-    field public static final int SHOW_FULL_DETAIL = 1; // 0x1
-    field public static final int SHOW_INITIALIZED = 4; // 0x4
-    field @Deprecated public static final int TRACE_COUNT_ALLOCS = 1; // 0x1
-  }
-
-  @Deprecated public static class Debug.InstructionCount {
-    ctor @Deprecated public Debug.InstructionCount();
-    method @Deprecated public boolean collect();
-    method @Deprecated public int globalMethodInvocations();
-    method @Deprecated public int globalTotal();
-    method @Deprecated public boolean resetAndStart();
-  }
-
-  public static class Debug.MemoryInfo implements android.os.Parcelable {
-    ctor public Debug.MemoryInfo();
-    method public int describeContents();
-    method public String getMemoryStat(String);
-    method public java.util.Map<java.lang.String,java.lang.String> getMemoryStats();
-    method public int getTotalPrivateClean();
-    method public int getTotalPrivateDirty();
-    method public int getTotalPss();
-    method public int getTotalSharedClean();
-    method public int getTotalSharedDirty();
-    method public int getTotalSwappablePss();
-    method public void readFromParcel(android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.Debug.MemoryInfo> CREATOR;
-    field public int dalvikPrivateDirty;
-    field public int dalvikPss;
-    field public int dalvikSharedDirty;
-    field public int nativePrivateDirty;
-    field public int nativePss;
-    field public int nativeSharedDirty;
-    field public int otherPrivateDirty;
-    field public int otherPss;
-    field public int otherSharedDirty;
-  }
-
-  public class DropBoxManager {
-    ctor protected DropBoxManager();
-    method public void addData(String, byte[], int);
-    method public void addFile(String, java.io.File, int) throws java.io.IOException;
-    method public void addText(String, String);
-    method @Nullable @RequiresPermission(allOf={android.Manifest.permission.READ_LOGS, android.Manifest.permission.PACKAGE_USAGE_STATS}) public android.os.DropBoxManager.Entry getNextEntry(String, long);
-    method public boolean isTagEnabled(String);
-    field public static final String ACTION_DROPBOX_ENTRY_ADDED = "android.intent.action.DROPBOX_ENTRY_ADDED";
-    field public static final String EXTRA_DROPPED_COUNT = "android.os.extra.DROPPED_COUNT";
-    field public static final String EXTRA_TAG = "tag";
-    field public static final String EXTRA_TIME = "time";
-    field public static final int IS_EMPTY = 1; // 0x1
-    field public static final int IS_GZIPPED = 4; // 0x4
-    field public static final int IS_TEXT = 2; // 0x2
-  }
-
-  public static class DropBoxManager.Entry implements java.io.Closeable android.os.Parcelable {
-    ctor public DropBoxManager.Entry(String, long);
-    ctor public DropBoxManager.Entry(String, long, String);
-    ctor public DropBoxManager.Entry(String, long, byte[], int);
-    ctor public DropBoxManager.Entry(String, long, android.os.ParcelFileDescriptor, int);
-    ctor public DropBoxManager.Entry(String, long, java.io.File, int) throws java.io.IOException;
-    method public void close();
-    method public int describeContents();
-    method public int getFlags();
-    method public java.io.InputStream getInputStream() throws java.io.IOException;
-    method public String getTag();
-    method public String getText(int);
-    method public long getTimeMillis();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.DropBoxManager.Entry> CREATOR;
-  }
-
-  public class Environment {
-    ctor public Environment();
-    method public static java.io.File getDataDirectory();
-    method public static java.io.File getDownloadCacheDirectory();
-    method @Deprecated public static java.io.File getExternalStorageDirectory();
-    method @Deprecated public static java.io.File getExternalStoragePublicDirectory(String);
-    method public static String getExternalStorageState();
-    method public static String getExternalStorageState(java.io.File);
-    method @NonNull public static java.io.File getRootDirectory();
-    method @NonNull public static java.io.File getStorageDirectory();
-    method @Deprecated public static String getStorageState(java.io.File);
-    method public static boolean isExternalStorageEmulated();
-    method public static boolean isExternalStorageEmulated(@NonNull java.io.File);
-    method public static boolean isExternalStorageLegacy();
-    method public static boolean isExternalStorageLegacy(@NonNull java.io.File);
-    method public static boolean isExternalStorageManager();
-    method public static boolean isExternalStorageManager(@NonNull java.io.File);
-    method public static boolean isExternalStorageRemovable();
-    method public static boolean isExternalStorageRemovable(@NonNull java.io.File);
-    field public static String DIRECTORY_ALARMS;
-    field public static String DIRECTORY_AUDIOBOOKS;
-    field public static String DIRECTORY_DCIM;
-    field public static String DIRECTORY_DOCUMENTS;
-    field public static String DIRECTORY_DOWNLOADS;
-    field public static String DIRECTORY_MOVIES;
-    field public static String DIRECTORY_MUSIC;
-    field public static String DIRECTORY_NOTIFICATIONS;
-    field public static String DIRECTORY_PICTURES;
-    field public static String DIRECTORY_PODCASTS;
-    field public static String DIRECTORY_RINGTONES;
-    field public static String DIRECTORY_SCREENSHOTS;
-    field public static final String MEDIA_BAD_REMOVAL = "bad_removal";
-    field public static final String MEDIA_CHECKING = "checking";
-    field public static final String MEDIA_EJECTING = "ejecting";
-    field public static final String MEDIA_MOUNTED = "mounted";
-    field public static final String MEDIA_MOUNTED_READ_ONLY = "mounted_ro";
-    field public static final String MEDIA_NOFS = "nofs";
-    field public static final String MEDIA_REMOVED = "removed";
-    field public static final String MEDIA_SHARED = "shared";
-    field public static final String MEDIA_UNKNOWN = "unknown";
-    field public static final String MEDIA_UNMOUNTABLE = "unmountable";
-    field public static final String MEDIA_UNMOUNTED = "unmounted";
-  }
-
-  public abstract class FileObserver {
-    ctor @Deprecated public FileObserver(String);
-    ctor public FileObserver(@NonNull java.io.File);
-    ctor public FileObserver(@NonNull java.util.List<java.io.File>);
-    ctor @Deprecated public FileObserver(String, int);
-    ctor public FileObserver(@NonNull java.io.File, int);
-    ctor public FileObserver(@NonNull java.util.List<java.io.File>, int);
-    method protected void finalize();
-    method public abstract void onEvent(int, @Nullable String);
-    method public void startWatching();
-    method public void stopWatching();
-    field public static final int ACCESS = 1; // 0x1
-    field public static final int ALL_EVENTS = 4095; // 0xfff
-    field public static final int ATTRIB = 4; // 0x4
-    field public static final int CLOSE_NOWRITE = 16; // 0x10
-    field public static final int CLOSE_WRITE = 8; // 0x8
-    field public static final int CREATE = 256; // 0x100
-    field public static final int DELETE = 512; // 0x200
-    field public static final int DELETE_SELF = 1024; // 0x400
-    field public static final int MODIFY = 2; // 0x2
-    field public static final int MOVED_FROM = 64; // 0x40
-    field public static final int MOVED_TO = 128; // 0x80
-    field public static final int MOVE_SELF = 2048; // 0x800
-    field public static final int OPEN = 32; // 0x20
-  }
-
-  public class FileUriExposedException extends java.lang.RuntimeException {
-    ctor public FileUriExposedException(String);
-  }
-
-  public final class FileUtils {
-    method @Deprecated public static void closeQuietly(@Nullable AutoCloseable);
-    method @Deprecated public static void closeQuietly(@Nullable java.io.FileDescriptor);
-    method public static long copy(@NonNull java.io.InputStream, @NonNull java.io.OutputStream) throws java.io.IOException;
-    method public static long copy(@NonNull java.io.InputStream, @NonNull java.io.OutputStream, @Nullable android.os.CancellationSignal, @Nullable java.util.concurrent.Executor, @Nullable android.os.FileUtils.ProgressListener) throws java.io.IOException;
-    method public static long copy(@NonNull java.io.FileDescriptor, @NonNull java.io.FileDescriptor) throws java.io.IOException;
-    method public static long copy(@NonNull java.io.FileDescriptor, @NonNull java.io.FileDescriptor, @Nullable android.os.CancellationSignal, @Nullable java.util.concurrent.Executor, @Nullable android.os.FileUtils.ProgressListener) throws java.io.IOException;
-  }
-
-  public static interface FileUtils.ProgressListener {
-    method public void onProgress(long);
-  }
-
-  public class Handler {
-    ctor @Deprecated public Handler();
-    ctor @Deprecated public Handler(@Nullable android.os.Handler.Callback);
-    ctor public Handler(@NonNull android.os.Looper);
-    ctor public Handler(@NonNull android.os.Looper, @Nullable android.os.Handler.Callback);
-    method @NonNull public static android.os.Handler createAsync(@NonNull android.os.Looper);
-    method @NonNull public static android.os.Handler createAsync(@NonNull android.os.Looper, @NonNull android.os.Handler.Callback);
-    method public void dispatchMessage(@NonNull android.os.Message);
-    method public final void dump(@NonNull android.util.Printer, @NonNull String);
-    method @NonNull public final android.os.Looper getLooper();
-    method @NonNull public String getMessageName(@NonNull android.os.Message);
-    method public void handleMessage(@NonNull android.os.Message);
-    method public final boolean hasCallbacks(@NonNull Runnable);
-    method public final boolean hasMessages(int);
-    method public final boolean hasMessages(int, @Nullable Object);
-    method @NonNull public final android.os.Message obtainMessage();
-    method @NonNull public final android.os.Message obtainMessage(int);
-    method @NonNull public final android.os.Message obtainMessage(int, @Nullable Object);
-    method @NonNull public final android.os.Message obtainMessage(int, int, int);
-    method @NonNull public final android.os.Message obtainMessage(int, int, int, @Nullable Object);
-    method public final boolean post(@NonNull Runnable);
-    method public final boolean postAtFrontOfQueue(@NonNull Runnable);
-    method public final boolean postAtTime(@NonNull Runnable, long);
-    method public final boolean postAtTime(@NonNull Runnable, @Nullable Object, long);
-    method public final boolean postDelayed(@NonNull Runnable, long);
-    method public final boolean postDelayed(@NonNull Runnable, @Nullable Object, long);
-    method public final void removeCallbacks(@NonNull Runnable);
-    method public final void removeCallbacks(@NonNull Runnable, @Nullable Object);
-    method public final void removeCallbacksAndMessages(@Nullable Object);
-    method public final void removeMessages(int);
-    method public final void removeMessages(int, @Nullable Object);
-    method public final boolean sendEmptyMessage(int);
-    method public final boolean sendEmptyMessageAtTime(int, long);
-    method public final boolean sendEmptyMessageDelayed(int, long);
-    method public final boolean sendMessage(@NonNull android.os.Message);
-    method public final boolean sendMessageAtFrontOfQueue(@NonNull android.os.Message);
-    method public boolean sendMessageAtTime(@NonNull android.os.Message, long);
-    method public final boolean sendMessageDelayed(@NonNull android.os.Message, long);
-  }
-
-  public static interface Handler.Callback {
-    method public boolean handleMessage(@NonNull android.os.Message);
-  }
-
-  public class HandlerThread extends java.lang.Thread {
-    ctor public HandlerThread(String);
-    ctor public HandlerThread(String, int);
-    method public android.os.Looper getLooper();
-    method public int getThreadId();
-    method protected void onLooperPrepared();
-    method public boolean quit();
-    method public boolean quitSafely();
-  }
-
-  public class HardwarePropertiesManager {
-    method @NonNull public android.os.CpuUsageInfo[] getCpuUsages();
-    method @NonNull public float[] getDeviceTemperatures(int, int);
-    method @NonNull public float[] getFanSpeeds();
-    field public static final int DEVICE_TEMPERATURE_BATTERY = 2; // 0x2
-    field public static final int DEVICE_TEMPERATURE_CPU = 0; // 0x0
-    field public static final int DEVICE_TEMPERATURE_GPU = 1; // 0x1
-    field public static final int DEVICE_TEMPERATURE_SKIN = 3; // 0x3
-    field public static final int TEMPERATURE_CURRENT = 0; // 0x0
-    field public static final int TEMPERATURE_SHUTDOWN = 2; // 0x2
-    field public static final int TEMPERATURE_THROTTLING = 1; // 0x1
-    field public static final int TEMPERATURE_THROTTLING_BELOW_VR_MIN = 3; // 0x3
-    field public static final float UNDEFINED_TEMPERATURE = -3.4028235E38f;
-  }
-
-  public interface IBinder {
-    method public void dump(@NonNull java.io.FileDescriptor, @Nullable String[]) throws android.os.RemoteException;
-    method public void dumpAsync(@NonNull java.io.FileDescriptor, @Nullable String[]) throws android.os.RemoteException;
-    method @Nullable public String getInterfaceDescriptor() throws android.os.RemoteException;
-    method public static int getSuggestedMaxIpcSizeBytes();
-    method public boolean isBinderAlive();
-    method public void linkToDeath(@NonNull android.os.IBinder.DeathRecipient, int) throws android.os.RemoteException;
-    method public boolean pingBinder();
-    method @Nullable public android.os.IInterface queryLocalInterface(@NonNull String);
-    method public boolean transact(int, @NonNull android.os.Parcel, @Nullable android.os.Parcel, int) throws android.os.RemoteException;
-    method public boolean unlinkToDeath(@NonNull android.os.IBinder.DeathRecipient, int);
-    field public static final int DUMP_TRANSACTION = 1598311760; // 0x5f444d50
-    field public static final int FIRST_CALL_TRANSACTION = 1; // 0x1
-    field public static final int FLAG_ONEWAY = 1; // 0x1
-    field public static final int INTERFACE_TRANSACTION = 1598968902; // 0x5f4e5446
-    field public static final int LAST_CALL_TRANSACTION = 16777215; // 0xffffff
-    field public static final int LIKE_TRANSACTION = 1598835019; // 0x5f4c494b
-    field public static final int PING_TRANSACTION = 1599098439; // 0x5f504e47
-    field public static final int TWEET_TRANSACTION = 1599362900; // 0x5f545754
-  }
-
-  public static interface IBinder.DeathRecipient {
-    method public void binderDied();
-  }
-
-  public interface IInterface {
-    method public android.os.IBinder asBinder();
-  }
-
-  public class LimitExceededException extends java.lang.IllegalStateException {
-    ctor public LimitExceededException();
-    ctor public LimitExceededException(@NonNull String);
-  }
-
-  public final class LocaleList implements android.os.Parcelable {
-    ctor public LocaleList(@NonNull java.util.Locale...);
-    method public int describeContents();
-    method @NonNull public static android.os.LocaleList forLanguageTags(@Nullable String);
-    method public java.util.Locale get(int);
-    method @NonNull @Size(min=1) public static android.os.LocaleList getAdjustedDefault();
-    method @NonNull @Size(min=1) public static android.os.LocaleList getDefault();
-    method @NonNull public static android.os.LocaleList getEmptyLocaleList();
-    method @Nullable public java.util.Locale getFirstMatch(String[]);
-    method @IntRange(from=0xffffffff) public int indexOf(java.util.Locale);
-    method public boolean isEmpty();
-    method public static boolean isPseudoLocale(@Nullable android.icu.util.ULocale);
-    method public static void setDefault(@NonNull @Size(min=1) android.os.LocaleList);
-    method @IntRange(from=0) public int size();
-    method @NonNull public String toLanguageTags();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.LocaleList> CREATOR;
-  }
-
-  public final class Looper {
-    method public void dump(@NonNull android.util.Printer, @NonNull String);
-    method public static android.os.Looper getMainLooper();
-    method @NonNull public android.os.MessageQueue getQueue();
-    method @NonNull public Thread getThread();
-    method public boolean isCurrentThread();
-    method public static void loop();
-    method @Nullable public static android.os.Looper myLooper();
-    method @NonNull public static android.os.MessageQueue myQueue();
-    method public static void prepare();
-    method @Deprecated public static void prepareMainLooper();
-    method public void quit();
-    method public void quitSafely();
-    method public void setMessageLogging(@Nullable android.util.Printer);
-  }
-
-  public class MemoryFile {
-    ctor public MemoryFile(String, int) throws java.io.IOException;
-    method @Deprecated public boolean allowPurging(boolean) throws java.io.IOException;
-    method public void close();
-    method public java.io.InputStream getInputStream();
-    method public java.io.OutputStream getOutputStream();
-    method @Deprecated public boolean isPurgingAllowed();
-    method public int length();
-    method public int readBytes(byte[], int, int, int) throws java.io.IOException;
-    method public void writeBytes(byte[], int, int, int) throws java.io.IOException;
-  }
-
-  public final class Message implements android.os.Parcelable {
-    ctor public Message();
-    method public void copyFrom(android.os.Message);
-    method public int describeContents();
-    method public Runnable getCallback();
-    method public android.os.Bundle getData();
-    method public android.os.Handler getTarget();
-    method public long getWhen();
-    method public boolean isAsynchronous();
-    method public static android.os.Message obtain();
-    method public static android.os.Message obtain(android.os.Message);
-    method public static android.os.Message obtain(android.os.Handler);
-    method public static android.os.Message obtain(android.os.Handler, Runnable);
-    method public static android.os.Message obtain(android.os.Handler, int);
-    method public static android.os.Message obtain(android.os.Handler, int, Object);
-    method public static android.os.Message obtain(android.os.Handler, int, int, int);
-    method public static android.os.Message obtain(android.os.Handler, int, int, int, Object);
-    method public android.os.Bundle peekData();
-    method public void recycle();
-    method public void sendToTarget();
-    method public void setAsynchronous(boolean);
-    method public void setData(android.os.Bundle);
-    method public void setTarget(android.os.Handler);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.Message> CREATOR;
-    field public int arg1;
-    field public int arg2;
-    field public Object obj;
-    field public android.os.Messenger replyTo;
-    field public int sendingUid;
-    field public int what;
-  }
-
-  public final class MessageQueue {
-    method public void addIdleHandler(@NonNull android.os.MessageQueue.IdleHandler);
-    method public void addOnFileDescriptorEventListener(@NonNull java.io.FileDescriptor, int, @NonNull android.os.MessageQueue.OnFileDescriptorEventListener);
-    method public boolean isIdle();
-    method public void removeIdleHandler(@NonNull android.os.MessageQueue.IdleHandler);
-    method public void removeOnFileDescriptorEventListener(@NonNull java.io.FileDescriptor);
-  }
-
-  public static interface MessageQueue.IdleHandler {
-    method public boolean queueIdle();
-  }
-
-  public static interface MessageQueue.OnFileDescriptorEventListener {
-    method public int onFileDescriptorEvents(@NonNull java.io.FileDescriptor, int);
-    field public static final int EVENT_ERROR = 4; // 0x4
-    field public static final int EVENT_INPUT = 1; // 0x1
-    field public static final int EVENT_OUTPUT = 2; // 0x2
-  }
-
-  public final class Messenger implements android.os.Parcelable {
-    ctor public Messenger(android.os.Handler);
-    ctor public Messenger(android.os.IBinder);
-    method public int describeContents();
-    method public android.os.IBinder getBinder();
-    method public static android.os.Messenger readMessengerOrNullFromParcel(android.os.Parcel);
-    method public void send(android.os.Message) throws android.os.RemoteException;
-    method public static void writeMessengerOrNullToParcel(android.os.Messenger, android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.Messenger> CREATOR;
-  }
-
-  public class NetworkOnMainThreadException extends java.lang.RuntimeException {
-    ctor public NetworkOnMainThreadException();
-  }
-
-  public class OperationCanceledException extends java.lang.RuntimeException {
-    ctor public OperationCanceledException();
-    ctor public OperationCanceledException(String);
-  }
-
-  public final class Parcel {
-    method public void appendFrom(android.os.Parcel, int, int);
-    method @Nullable public android.os.IBinder[] createBinderArray();
-    method @Nullable public java.util.ArrayList<android.os.IBinder> createBinderArrayList();
-    method @Nullable public boolean[] createBooleanArray();
-    method @Nullable public byte[] createByteArray();
-    method @Nullable public char[] createCharArray();
-    method @Nullable public double[] createDoubleArray();
-    method @Nullable public float[] createFloatArray();
-    method @Nullable public int[] createIntArray();
-    method @Nullable public long[] createLongArray();
-    method @Nullable public String[] createStringArray();
-    method @Nullable public java.util.ArrayList<java.lang.String> createStringArrayList();
-    method @Nullable public <T> T[] createTypedArray(@NonNull android.os.Parcelable.Creator<T>);
-    method @Nullable public <T> java.util.ArrayList<T> createTypedArrayList(@NonNull android.os.Parcelable.Creator<T>);
-    method @Nullable public <T extends android.os.Parcelable> android.util.ArrayMap<java.lang.String,T> createTypedArrayMap(@NonNull android.os.Parcelable.Creator<T>);
-    method @Nullable public <T extends android.os.Parcelable> android.util.SparseArray<T> createTypedSparseArray(@NonNull android.os.Parcelable.Creator<T>);
-    method public int dataAvail();
-    method public int dataCapacity();
-    method public int dataPosition();
-    method public int dataSize();
-    method public void enforceInterface(String);
-    method public boolean hasFileDescriptors();
-    method public byte[] marshall();
-    method @NonNull public static android.os.Parcel obtain();
-    method @Nullable public Object[] readArray(@Nullable ClassLoader);
-    method @Nullable public java.util.ArrayList readArrayList(@Nullable ClassLoader);
-    method public void readBinderArray(@NonNull android.os.IBinder[]);
-    method public void readBinderList(@NonNull java.util.List<android.os.IBinder>);
-    method public boolean readBoolean();
-    method public void readBooleanArray(@NonNull boolean[]);
-    method @Nullable public android.os.Bundle readBundle();
-    method @Nullable public android.os.Bundle readBundle(@Nullable ClassLoader);
-    method public byte readByte();
-    method public void readByteArray(@NonNull byte[]);
-    method public void readCharArray(@NonNull char[]);
-    method public double readDouble();
-    method public void readDoubleArray(@NonNull double[]);
-    method public void readException();
-    method public void readException(int, String);
-    method public android.os.ParcelFileDescriptor readFileDescriptor();
-    method public float readFloat();
-    method public void readFloatArray(@NonNull float[]);
-    method @Nullable public java.util.HashMap readHashMap(@Nullable ClassLoader);
-    method public int readInt();
-    method public void readIntArray(@NonNull int[]);
-    method public void readList(@NonNull java.util.List, @Nullable ClassLoader);
-    method public long readLong();
-    method public void readLongArray(@NonNull long[]);
-    method public void readMap(@NonNull java.util.Map, @Nullable ClassLoader);
-    method @Nullable public <T extends android.os.Parcelable> T readParcelable(@Nullable ClassLoader);
-    method @Nullable public android.os.Parcelable[] readParcelableArray(@Nullable ClassLoader);
-    method @Nullable public android.os.Parcelable.Creator<?> readParcelableCreator(@Nullable ClassLoader);
-    method @NonNull public <T extends android.os.Parcelable> java.util.List<T> readParcelableList(@NonNull java.util.List<T>, @Nullable ClassLoader);
-    method @Nullable public android.os.PersistableBundle readPersistableBundle();
-    method @Nullable public android.os.PersistableBundle readPersistableBundle(@Nullable ClassLoader);
-    method @Nullable public java.io.Serializable readSerializable();
-    method @NonNull public android.util.Size readSize();
-    method @NonNull public android.util.SizeF readSizeF();
-    method @Nullable public <T> android.util.SparseArray<T> readSparseArray(@Nullable ClassLoader);
-    method @Nullable public android.util.SparseBooleanArray readSparseBooleanArray();
-    method @Nullable public String readString();
-    method public void readStringArray(@NonNull String[]);
-    method public void readStringList(@NonNull java.util.List<java.lang.String>);
-    method public android.os.IBinder readStrongBinder();
-    method public <T> void readTypedArray(@NonNull T[], @NonNull android.os.Parcelable.Creator<T>);
-    method public <T> void readTypedList(@NonNull java.util.List<T>, @NonNull android.os.Parcelable.Creator<T>);
-    method @Nullable public <T> T readTypedObject(@NonNull android.os.Parcelable.Creator<T>);
-    method @Nullable public Object readValue(@Nullable ClassLoader);
-    method public void recycle();
-    method public void setDataCapacity(int);
-    method public void setDataPosition(int);
-    method public void setDataSize(int);
-    method public void unmarshall(@NonNull byte[], int, int);
-    method public void writeArray(@Nullable Object[]);
-    method public void writeBinderArray(@Nullable android.os.IBinder[]);
-    method public void writeBinderList(@Nullable java.util.List<android.os.IBinder>);
-    method public void writeBoolean(boolean);
-    method public void writeBooleanArray(@Nullable boolean[]);
-    method public void writeBundle(@Nullable android.os.Bundle);
-    method public void writeByte(byte);
-    method public void writeByteArray(@Nullable byte[]);
-    method public void writeByteArray(@Nullable byte[], int, int);
-    method public void writeCharArray(@Nullable char[]);
-    method public void writeDouble(double);
-    method public void writeDoubleArray(@Nullable double[]);
-    method public void writeException(@NonNull Exception);
-    method public void writeFileDescriptor(@NonNull java.io.FileDescriptor);
-    method public void writeFloat(float);
-    method public void writeFloatArray(@Nullable float[]);
-    method public void writeInt(int);
-    method public void writeIntArray(@Nullable int[]);
-    method public void writeInterfaceToken(String);
-    method public void writeList(@Nullable java.util.List);
-    method public void writeLong(long);
-    method public void writeLongArray(@Nullable long[]);
-    method public void writeMap(@Nullable java.util.Map);
-    method public void writeNoException();
-    method public void writeParcelable(@Nullable android.os.Parcelable, int);
-    method public <T extends android.os.Parcelable> void writeParcelableArray(@Nullable T[], int);
-    method public void writeParcelableCreator(@NonNull android.os.Parcelable);
-    method public <T extends android.os.Parcelable> void writeParcelableList(@Nullable java.util.List<T>, int);
-    method public void writePersistableBundle(@Nullable android.os.PersistableBundle);
-    method public void writeSerializable(@Nullable java.io.Serializable);
-    method public void writeSize(@NonNull android.util.Size);
-    method public void writeSizeF(@NonNull android.util.SizeF);
-    method public <T> void writeSparseArray(@Nullable android.util.SparseArray<T>);
-    method public void writeSparseBooleanArray(@Nullable android.util.SparseBooleanArray);
-    method public void writeString(@Nullable String);
-    method public void writeStringArray(@Nullable String[]);
-    method public void writeStringList(@Nullable java.util.List<java.lang.String>);
-    method public void writeStrongBinder(android.os.IBinder);
-    method public void writeStrongInterface(android.os.IInterface);
-    method public <T extends android.os.Parcelable> void writeTypedArray(@Nullable T[], int);
-    method public <T extends android.os.Parcelable> void writeTypedArrayMap(@Nullable android.util.ArrayMap<java.lang.String,T>, int);
-    method public <T extends android.os.Parcelable> void writeTypedList(@Nullable java.util.List<T>);
-    method public <T extends android.os.Parcelable> void writeTypedObject(@Nullable T, int);
-    method public <T extends android.os.Parcelable> void writeTypedSparseArray(@Nullable android.util.SparseArray<T>, int);
-    method public void writeValue(@Nullable Object);
-    field public static final android.os.Parcelable.Creator<java.lang.String> STRING_CREATOR;
-  }
-
-  public class ParcelFileDescriptor implements java.io.Closeable android.os.Parcelable {
-    ctor public ParcelFileDescriptor(android.os.ParcelFileDescriptor);
-    method public static android.os.ParcelFileDescriptor adoptFd(int);
-    method public boolean canDetectErrors();
-    method public void checkError() throws java.io.IOException;
-    method public void close() throws java.io.IOException;
-    method public void closeWithError(String) throws java.io.IOException;
-    method public static android.os.ParcelFileDescriptor[] createPipe() throws java.io.IOException;
-    method public static android.os.ParcelFileDescriptor[] createReliablePipe() throws java.io.IOException;
-    method public static android.os.ParcelFileDescriptor[] createReliableSocketPair() throws java.io.IOException;
-    method public static android.os.ParcelFileDescriptor[] createSocketPair() throws java.io.IOException;
-    method public int describeContents();
-    method public int detachFd();
-    method public static android.os.ParcelFileDescriptor dup(java.io.FileDescriptor) throws java.io.IOException;
-    method public android.os.ParcelFileDescriptor dup() throws java.io.IOException;
-    method public static android.os.ParcelFileDescriptor fromDatagramSocket(java.net.DatagramSocket);
-    method public static android.os.ParcelFileDescriptor fromFd(int) throws java.io.IOException;
-    method public static android.os.ParcelFileDescriptor fromSocket(java.net.Socket);
-    method public int getFd();
-    method public java.io.FileDescriptor getFileDescriptor();
-    method public long getStatSize();
-    method public static android.os.ParcelFileDescriptor open(java.io.File, int) throws java.io.FileNotFoundException;
-    method public static android.os.ParcelFileDescriptor open(java.io.File, int, android.os.Handler, android.os.ParcelFileDescriptor.OnCloseListener) throws java.io.IOException;
-    method public static int parseMode(String);
-    method @NonNull public static android.os.ParcelFileDescriptor wrap(@NonNull android.os.ParcelFileDescriptor, @NonNull android.os.Handler, @NonNull android.os.ParcelFileDescriptor.OnCloseListener) throws java.io.IOException;
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.ParcelFileDescriptor> CREATOR;
-    field public static final int MODE_APPEND = 33554432; // 0x2000000
-    field public static final int MODE_CREATE = 134217728; // 0x8000000
-    field public static final int MODE_READ_ONLY = 268435456; // 0x10000000
-    field public static final int MODE_READ_WRITE = 805306368; // 0x30000000
-    field public static final int MODE_TRUNCATE = 67108864; // 0x4000000
-    field @Deprecated public static final int MODE_WORLD_READABLE = 1; // 0x1
-    field @Deprecated public static final int MODE_WORLD_WRITEABLE = 2; // 0x2
-    field public static final int MODE_WRITE_ONLY = 536870912; // 0x20000000
-  }
-
-  public static class ParcelFileDescriptor.AutoCloseInputStream extends java.io.FileInputStream {
-    ctor public ParcelFileDescriptor.AutoCloseInputStream(android.os.ParcelFileDescriptor);
-  }
-
-  public static class ParcelFileDescriptor.AutoCloseOutputStream extends java.io.FileOutputStream {
-    ctor public ParcelFileDescriptor.AutoCloseOutputStream(android.os.ParcelFileDescriptor);
-  }
-
-  public static class ParcelFileDescriptor.FileDescriptorDetachedException extends java.io.IOException {
-    ctor public ParcelFileDescriptor.FileDescriptorDetachedException();
-  }
-
-  public static interface ParcelFileDescriptor.OnCloseListener {
-    method public void onClose(java.io.IOException);
-  }
-
-  public class ParcelFormatException extends java.lang.RuntimeException {
-    ctor public ParcelFormatException();
-    ctor public ParcelFormatException(String);
-  }
-
-  public final class ParcelUuid implements android.os.Parcelable {
-    ctor public ParcelUuid(java.util.UUID);
-    method public int describeContents();
-    method public static android.os.ParcelUuid fromString(String);
-    method public java.util.UUID getUuid();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.ParcelUuid> CREATOR;
-  }
-
-  public interface Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CONTENTS_FILE_DESCRIPTOR = 1; // 0x1
-    field public static final int PARCELABLE_WRITE_RETURN_VALUE = 1; // 0x1
-  }
-
-  public static interface Parcelable.ClassLoaderCreator<T> extends android.os.Parcelable.Creator<T> {
-    method public T createFromParcel(android.os.Parcel, ClassLoader);
-  }
-
-  public static interface Parcelable.Creator<T> {
-    method public T createFromParcel(android.os.Parcel);
-    method public T[] newArray(int);
-  }
-
-  public class PatternMatcher implements android.os.Parcelable {
-    ctor public PatternMatcher(String, int);
-    ctor public PatternMatcher(android.os.Parcel);
-    method public int describeContents();
-    method public final String getPath();
-    method public final int getType();
-    method public boolean match(String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.PatternMatcher> CREATOR;
-    field public static final int PATTERN_ADVANCED_GLOB = 3; // 0x3
-    field public static final int PATTERN_LITERAL = 0; // 0x0
-    field public static final int PATTERN_PREFIX = 1; // 0x1
-    field public static final int PATTERN_SIMPLE_GLOB = 2; // 0x2
-  }
-
-  public final class PersistableBundle extends android.os.BaseBundle implements java.lang.Cloneable android.os.Parcelable {
-    ctor public PersistableBundle();
-    ctor public PersistableBundle(int);
-    ctor public PersistableBundle(android.os.PersistableBundle);
-    method public Object clone();
-    method public android.os.PersistableBundle deepCopy();
-    method public int describeContents();
-    method @Nullable public android.os.PersistableBundle getPersistableBundle(@Nullable String);
-    method public void putPersistableBundle(@Nullable String, @Nullable android.os.PersistableBundle);
-    method @NonNull public static android.os.PersistableBundle readFromStream(@NonNull java.io.InputStream) throws java.io.IOException;
-    method public void writeToParcel(android.os.Parcel, int);
-    method public void writeToStream(@NonNull java.io.OutputStream) throws java.io.IOException;
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.PersistableBundle> CREATOR;
-    field public static final android.os.PersistableBundle EMPTY;
-  }
-
-  public final class PowerManager {
-    method public void addThermalStatusListener(@NonNull android.os.PowerManager.OnThermalStatusChangedListener);
-    method public void addThermalStatusListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.PowerManager.OnThermalStatusChangedListener);
-    method public int getCurrentThermalStatus();
-    method public int getLocationPowerSaveMode();
-    method public float getThermalHeadroom(@IntRange(from=0, to=60) int);
-    method public boolean isDeviceIdleMode();
-    method public boolean isIgnoringBatteryOptimizations(String);
-    method public boolean isInteractive();
-    method public boolean isPowerSaveMode();
-    method public boolean isRebootingUserspaceSupported();
-    method @Deprecated public boolean isScreenOn();
-    method public boolean isSustainedPerformanceModeSupported();
-    method public boolean isWakeLockLevelSupported(int);
-    method public android.os.PowerManager.WakeLock newWakeLock(int, String);
-    method @RequiresPermission(android.Manifest.permission.REBOOT) public void reboot(@Nullable String);
-    method public void removeThermalStatusListener(@NonNull android.os.PowerManager.OnThermalStatusChangedListener);
-    field public static final int ACQUIRE_CAUSES_WAKEUP = 268435456; // 0x10000000
-    field public static final String ACTION_DEVICE_IDLE_MODE_CHANGED = "android.os.action.DEVICE_IDLE_MODE_CHANGED";
-    field public static final String ACTION_POWER_SAVE_MODE_CHANGED = "android.os.action.POWER_SAVE_MODE_CHANGED";
-    field @Deprecated public static final int FULL_WAKE_LOCK = 26; // 0x1a
-    field public static final int LOCATION_MODE_ALL_DISABLED_WHEN_SCREEN_OFF = 2; // 0x2
-    field public static final int LOCATION_MODE_FOREGROUND_ONLY = 3; // 0x3
-    field public static final int LOCATION_MODE_GPS_DISABLED_WHEN_SCREEN_OFF = 1; // 0x1
-    field public static final int LOCATION_MODE_NO_CHANGE = 0; // 0x0
-    field public static final int LOCATION_MODE_THROTTLE_REQUESTS_WHEN_SCREEN_OFF = 4; // 0x4
-    field public static final int ON_AFTER_RELEASE = 536870912; // 0x20000000
-    field public static final int PARTIAL_WAKE_LOCK = 1; // 0x1
-    field public static final int PROXIMITY_SCREEN_OFF_WAKE_LOCK = 32; // 0x20
-    field public static final int RELEASE_FLAG_WAIT_FOR_NO_PROXIMITY = 1; // 0x1
-    field @Deprecated public static final int SCREEN_BRIGHT_WAKE_LOCK = 10; // 0xa
-    field @Deprecated public static final int SCREEN_DIM_WAKE_LOCK = 6; // 0x6
-    field public static final int THERMAL_STATUS_CRITICAL = 4; // 0x4
-    field public static final int THERMAL_STATUS_EMERGENCY = 5; // 0x5
-    field public static final int THERMAL_STATUS_LIGHT = 1; // 0x1
-    field public static final int THERMAL_STATUS_MODERATE = 2; // 0x2
-    field public static final int THERMAL_STATUS_NONE = 0; // 0x0
-    field public static final int THERMAL_STATUS_SEVERE = 3; // 0x3
-    field public static final int THERMAL_STATUS_SHUTDOWN = 6; // 0x6
-  }
-
-  public static interface PowerManager.OnThermalStatusChangedListener {
-    method public void onThermalStatusChanged(int);
-  }
-
-  public final class PowerManager.WakeLock {
-    method public void acquire();
-    method public void acquire(long);
-    method public boolean isHeld();
-    method public void release();
-    method public void release(int);
-    method public void setReferenceCounted(boolean);
-    method public void setWorkSource(android.os.WorkSource);
-  }
-
-  public class Process {
-    ctor public Process();
-    method public static final long getElapsedCpuTime();
-    method public static final int[] getExclusiveCores();
-    method public static final int getGidForName(String);
-    method public static final long getStartElapsedRealtime();
-    method public static final long getStartUptimeMillis();
-    method public static final int getThreadPriority(int) throws java.lang.IllegalArgumentException;
-    method public static final int getUidForName(String);
-    method public static final boolean is64Bit();
-    method public static boolean isApplicationUid(int);
-    method public static final boolean isIsolated();
-    method public static final void killProcess(int);
-    method public static final int myPid();
-    method public static final int myTid();
-    method public static final int myUid();
-    method public static android.os.UserHandle myUserHandle();
-    method public static final void sendSignal(int, int);
-    method public static final void setThreadPriority(int, int) throws java.lang.IllegalArgumentException, java.lang.SecurityException;
-    method public static final void setThreadPriority(int) throws java.lang.IllegalArgumentException, java.lang.SecurityException;
-    method @Deprecated public static final boolean supportsProcesses();
-    field public static final int BLUETOOTH_UID = 1002; // 0x3ea
-    field public static final int FIRST_APPLICATION_UID = 10000; // 0x2710
-    field public static final int INVALID_UID = -1; // 0xffffffff
-    field public static final int LAST_APPLICATION_UID = 19999; // 0x4e1f
-    field public static final int PHONE_UID = 1001; // 0x3e9
-    field public static final int ROOT_UID = 0; // 0x0
-    field public static final int SHELL_UID = 2000; // 0x7d0
-    field public static final int SIGNAL_KILL = 9; // 0x9
-    field public static final int SIGNAL_QUIT = 3; // 0x3
-    field public static final int SIGNAL_USR1 = 10; // 0xa
-    field public static final int SYSTEM_UID = 1000; // 0x3e8
-    field public static final int THREAD_PRIORITY_AUDIO = -16; // 0xfffffff0
-    field public static final int THREAD_PRIORITY_BACKGROUND = 10; // 0xa
-    field public static final int THREAD_PRIORITY_DEFAULT = 0; // 0x0
-    field public static final int THREAD_PRIORITY_DISPLAY = -4; // 0xfffffffc
-    field public static final int THREAD_PRIORITY_FOREGROUND = -2; // 0xfffffffe
-    field public static final int THREAD_PRIORITY_LESS_FAVORABLE = 1; // 0x1
-    field public static final int THREAD_PRIORITY_LOWEST = 19; // 0x13
-    field public static final int THREAD_PRIORITY_MORE_FAVORABLE = -1; // 0xffffffff
-    field public static final int THREAD_PRIORITY_URGENT_AUDIO = -19; // 0xffffffed
-    field public static final int THREAD_PRIORITY_URGENT_DISPLAY = -8; // 0xfffffff8
-    field public static final int THREAD_PRIORITY_VIDEO = -10; // 0xfffffff6
-    field public static final int WIFI_UID = 1010; // 0x3f2
-  }
-
-  public abstract class ProxyFileDescriptorCallback {
-    ctor public ProxyFileDescriptorCallback();
-    method public void onFsync() throws android.system.ErrnoException;
-    method public long onGetSize() throws android.system.ErrnoException;
-    method public int onRead(long, int, byte[]) throws android.system.ErrnoException;
-    method public abstract void onRelease();
-    method public int onWrite(long, int, byte[]) throws android.system.ErrnoException;
-  }
-
-  public class RecoverySystem {
-    method @RequiresPermission("android.permission.RECOVERY") public static void installPackage(android.content.Context, java.io.File) throws java.io.IOException;
-    method public static void rebootWipeCache(android.content.Context) throws java.io.IOException;
-    method public static void rebootWipeUserData(android.content.Context) throws java.io.IOException;
-    method public static void verifyPackage(java.io.File, android.os.RecoverySystem.ProgressListener, java.io.File) throws java.security.GeneralSecurityException, java.io.IOException;
-  }
-
-  public static interface RecoverySystem.ProgressListener {
-    method public void onProgress(int);
-  }
-
-  public class RemoteCallbackList<E extends android.os.IInterface> {
-    ctor public RemoteCallbackList();
-    method public int beginBroadcast();
-    method public void finishBroadcast();
-    method public Object getBroadcastCookie(int);
-    method public E getBroadcastItem(int);
-    method public Object getRegisteredCallbackCookie(int);
-    method public int getRegisteredCallbackCount();
-    method public E getRegisteredCallbackItem(int);
-    method public void kill();
-    method public void onCallbackDied(E);
-    method public void onCallbackDied(E, Object);
-    method public boolean register(E);
-    method public boolean register(E, Object);
-    method public boolean unregister(E);
-  }
-
-  public class RemoteException extends android.util.AndroidException {
-    ctor public RemoteException();
-    ctor public RemoteException(String);
-    method @NonNull public RuntimeException rethrowAsRuntimeException();
-    method @NonNull public RuntimeException rethrowFromSystemServer();
-  }
-
-  public class ResultReceiver implements android.os.Parcelable {
-    ctor public ResultReceiver(android.os.Handler);
-    method public int describeContents();
-    method protected void onReceiveResult(int, android.os.Bundle);
-    method public void send(int, android.os.Bundle);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.ResultReceiver> CREATOR;
-  }
-
-  public final class SharedMemory implements java.io.Closeable android.os.Parcelable {
-    method public void close();
-    method @NonNull public static android.os.SharedMemory create(@Nullable String, int) throws android.system.ErrnoException;
-    method public int describeContents();
-    method public int getSize();
-    method @NonNull public java.nio.ByteBuffer map(int, int, int) throws android.system.ErrnoException;
-    method @NonNull public java.nio.ByteBuffer mapReadOnly() throws android.system.ErrnoException;
-    method @NonNull public java.nio.ByteBuffer mapReadWrite() throws android.system.ErrnoException;
-    method public boolean setProtect(int);
-    method public static void unmap(@NonNull java.nio.ByteBuffer);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.SharedMemory> CREATOR;
-  }
-
-  public class StatFs {
-    ctor public StatFs(String);
-    method @Deprecated public int getAvailableBlocks();
-    method public long getAvailableBlocksLong();
-    method public long getAvailableBytes();
-    method @Deprecated public int getBlockCount();
-    method public long getBlockCountLong();
-    method @Deprecated public int getBlockSize();
-    method public long getBlockSizeLong();
-    method @Deprecated public int getFreeBlocks();
-    method public long getFreeBlocksLong();
-    method public long getFreeBytes();
-    method public long getTotalBytes();
-    method public void restat(String);
-  }
-
-  public final class StrictMode {
-    method public static android.os.StrictMode.ThreadPolicy allowThreadDiskReads();
-    method public static android.os.StrictMode.ThreadPolicy allowThreadDiskWrites();
-    method public static void enableDefaults();
-    method public static android.os.StrictMode.ThreadPolicy getThreadPolicy();
-    method public static android.os.StrictMode.VmPolicy getVmPolicy();
-    method public static void noteSlowCall(String);
-    method public static void setThreadPolicy(android.os.StrictMode.ThreadPolicy);
-    method public static void setVmPolicy(android.os.StrictMode.VmPolicy);
-  }
-
-  public static interface StrictMode.OnThreadViolationListener {
-    method public void onThreadViolation(android.os.strictmode.Violation);
-  }
-
-  public static interface StrictMode.OnVmViolationListener {
-    method public void onVmViolation(android.os.strictmode.Violation);
-  }
-
-  public static final class StrictMode.ThreadPolicy {
-    field public static final android.os.StrictMode.ThreadPolicy LAX;
-  }
-
-  public static final class StrictMode.ThreadPolicy.Builder {
-    ctor public StrictMode.ThreadPolicy.Builder();
-    ctor public StrictMode.ThreadPolicy.Builder(android.os.StrictMode.ThreadPolicy);
-    method public android.os.StrictMode.ThreadPolicy build();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectAll();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectCustomSlowCalls();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectDiskReads();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectDiskWrites();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectNetwork();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectResourceMismatches();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectUnbufferedIo();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder penaltyDeath();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder penaltyDeathOnNetwork();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder penaltyDialog();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder penaltyDropBox();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder penaltyFlashScreen();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder penaltyListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.StrictMode.OnThreadViolationListener);
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder penaltyLog();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitAll();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitCustomSlowCalls();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitDiskReads();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitDiskWrites();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitNetwork();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitResourceMismatches();
-    method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitUnbufferedIo();
-  }
-
-  public static final class StrictMode.VmPolicy {
-    field public static final android.os.StrictMode.VmPolicy LAX;
-  }
-
-  public static final class StrictMode.VmPolicy.Builder {
-    ctor public StrictMode.VmPolicy.Builder();
-    ctor public StrictMode.VmPolicy.Builder(android.os.StrictMode.VmPolicy);
-    method public android.os.StrictMode.VmPolicy build();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectActivityLeaks();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectAll();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectCleartextNetwork();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectContentUriWithoutPermission();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectCredentialProtectedWhileLocked();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectFileUriExposure();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectImplicitDirectBoot();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectLeakedClosableObjects();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectLeakedRegistrationObjects();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectLeakedSqlLiteObjects();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectNonSdkApiUsage();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder detectUntaggedSockets();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder penaltyDeath();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder penaltyDeathOnCleartextNetwork();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder penaltyDeathOnFileUriExposure();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder penaltyDropBox();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder penaltyListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.StrictMode.OnVmViolationListener);
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder penaltyLog();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder permitNonSdkApiUsage();
-    method @NonNull public android.os.StrictMode.VmPolicy.Builder setClassInstanceLimit(Class, int);
-  }
-
-  public final class SystemClock {
-    method @NonNull public static java.time.Clock currentGnssTimeClock();
-    method public static long currentThreadTimeMillis();
-    method public static long elapsedRealtime();
-    method public static long elapsedRealtimeNanos();
-    method public static boolean setCurrentTimeMillis(long);
-    method public static void sleep(long);
-    method public static long uptimeMillis();
-  }
-
-  public class TestLooperManager {
-    method public void execute(android.os.Message);
-    method public android.os.MessageQueue getMessageQueue();
-    method public boolean hasMessages(android.os.Handler, Object, int);
-    method public boolean hasMessages(android.os.Handler, Object, Runnable);
-    method public android.os.Message next();
-    method public void recycle(android.os.Message);
-    method public void release();
-  }
-
-  public abstract class TokenWatcher {
-    ctor public TokenWatcher(android.os.Handler, String);
-    method public void acquire(android.os.IBinder, String);
-    method public abstract void acquired();
-    method public void cleanup(android.os.IBinder, boolean);
-    method public void dump();
-    method public void dump(java.io.PrintWriter);
-    method public boolean isAcquired();
-    method public void release(android.os.IBinder);
-    method public abstract void released();
-  }
-
-  public final class Trace {
-    method public static void beginAsyncSection(@NonNull String, int);
-    method public static void beginSection(@NonNull String);
-    method public static void endAsyncSection(@NonNull String, int);
-    method public static void endSection();
-    method public static boolean isEnabled();
-    method public static void setCounter(@NonNull String, long);
-  }
-
-  public class TransactionTooLargeException extends android.os.RemoteException {
-    ctor public TransactionTooLargeException();
-    ctor public TransactionTooLargeException(String);
-  }
-
-  public final class UserHandle implements android.os.Parcelable {
-    ctor public UserHandle(android.os.Parcel);
-    method public int describeContents();
-    method public static android.os.UserHandle getUserHandleForUid(int);
-    method public static android.os.UserHandle readFromParcel(android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    method public static void writeToParcel(android.os.UserHandle, android.os.Parcel);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.UserHandle> CREATOR;
-  }
-
-  public class UserManager {
-    method public static android.content.Intent createUserCreationIntent(@Nullable String, @Nullable String, @Nullable String, @Nullable android.os.PersistableBundle);
-    method @WorkerThread public android.os.Bundle getApplicationRestrictions(String);
-    method public long getSerialNumberForUser(android.os.UserHandle);
-    method @RequiresPermission("android.permission.MANAGE_USERS") public int getUserCount();
-    method public long getUserCreationTime(android.os.UserHandle);
-    method public android.os.UserHandle getUserForSerialNumber(long);
-    method @NonNull @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", android.Manifest.permission.GET_ACCOUNTS_PRIVILEGED}, conditional=true) public String getUserName();
-    method public java.util.List<android.os.UserHandle> getUserProfiles();
-    method public android.os.Bundle getUserRestrictions();
-    method @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.INTERACT_ACROSS_USERS"}, conditional=true) public android.os.Bundle getUserRestrictions(android.os.UserHandle);
-    method public boolean hasUserRestriction(String);
-    method public boolean isDemoUser();
-    method public boolean isManagedProfile();
-    method public boolean isQuietModeEnabled(android.os.UserHandle);
-    method public boolean isSystemUser();
-    method public boolean isUserAGoat();
-    method @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.INTERACT_ACROSS_USERS"}, conditional=true) public boolean isUserRunning(android.os.UserHandle);
-    method @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.INTERACT_ACROSS_USERS"}, conditional=true) public boolean isUserRunningOrStopping(android.os.UserHandle);
-    method public boolean isUserUnlocked();
-    method @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.INTERACT_ACROSS_USERS"}, conditional=true) public boolean isUserUnlocked(android.os.UserHandle);
-    method @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.MODIFY_QUIET_MODE"}, conditional=true) public boolean requestQuietModeEnabled(boolean, @NonNull android.os.UserHandle);
-    method public boolean requestQuietModeEnabled(boolean, @NonNull android.os.UserHandle, int);
-    method @Deprecated public boolean setRestrictionsChallenge(String);
-    method @Deprecated @RequiresPermission("android.permission.MANAGE_USERS") public void setUserRestriction(String, boolean);
-    method @Deprecated public void setUserRestrictions(android.os.Bundle);
-    method @Deprecated public void setUserRestrictions(android.os.Bundle, android.os.UserHandle);
-    method public static boolean supportsMultipleUsers();
-    field public static final String ALLOW_PARENT_PROFILE_APP_LINKING = "allow_parent_profile_app_linking";
-    field @Deprecated public static final String DISALLOW_ADD_MANAGED_PROFILE = "no_add_managed_profile";
-    field public static final String DISALLOW_ADD_USER = "no_add_user";
-    field public static final String DISALLOW_ADJUST_VOLUME = "no_adjust_volume";
-    field public static final String DISALLOW_AIRPLANE_MODE = "no_airplane_mode";
-    field public static final String DISALLOW_AMBIENT_DISPLAY = "no_ambient_display";
-    field public static final String DISALLOW_APPS_CONTROL = "no_control_apps";
-    field public static final String DISALLOW_AUTOFILL = "no_autofill";
-    field public static final String DISALLOW_BLUETOOTH = "no_bluetooth";
-    field public static final String DISALLOW_BLUETOOTH_SHARING = "no_bluetooth_sharing";
-    field public static final String DISALLOW_CONFIG_BLUETOOTH = "no_config_bluetooth";
-    field public static final String DISALLOW_CONFIG_BRIGHTNESS = "no_config_brightness";
-    field public static final String DISALLOW_CONFIG_CELL_BROADCASTS = "no_config_cell_broadcasts";
-    field public static final String DISALLOW_CONFIG_CREDENTIALS = "no_config_credentials";
-    field public static final String DISALLOW_CONFIG_DATE_TIME = "no_config_date_time";
-    field public static final String DISALLOW_CONFIG_LOCALE = "no_config_locale";
-    field public static final String DISALLOW_CONFIG_LOCATION = "no_config_location";
-    field public static final String DISALLOW_CONFIG_MOBILE_NETWORKS = "no_config_mobile_networks";
-    field public static final String DISALLOW_CONFIG_PRIVATE_DNS = "disallow_config_private_dns";
-    field public static final String DISALLOW_CONFIG_SCREEN_TIMEOUT = "no_config_screen_timeout";
-    field public static final String DISALLOW_CONFIG_TETHERING = "no_config_tethering";
-    field public static final String DISALLOW_CONFIG_VPN = "no_config_vpn";
-    field public static final String DISALLOW_CONFIG_WIFI = "no_config_wifi";
-    field public static final String DISALLOW_CONTENT_CAPTURE = "no_content_capture";
-    field public static final String DISALLOW_CONTENT_SUGGESTIONS = "no_content_suggestions";
-    field public static final String DISALLOW_CREATE_WINDOWS = "no_create_windows";
-    field public static final String DISALLOW_CROSS_PROFILE_COPY_PASTE = "no_cross_profile_copy_paste";
-    field public static final String DISALLOW_DATA_ROAMING = "no_data_roaming";
-    field public static final String DISALLOW_DEBUGGING_FEATURES = "no_debugging_features";
-    field public static final String DISALLOW_FACTORY_RESET = "no_factory_reset";
-    field public static final String DISALLOW_FUN = "no_fun";
-    field public static final String DISALLOW_INSTALL_APPS = "no_install_apps";
-    field public static final String DISALLOW_INSTALL_UNKNOWN_SOURCES = "no_install_unknown_sources";
-    field public static final String DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY = "no_install_unknown_sources_globally";
-    field public static final String DISALLOW_MODIFY_ACCOUNTS = "no_modify_accounts";
-    field public static final String DISALLOW_MOUNT_PHYSICAL_MEDIA = "no_physical_media";
-    field public static final String DISALLOW_NETWORK_RESET = "no_network_reset";
-    field public static final String DISALLOW_OUTGOING_BEAM = "no_outgoing_beam";
-    field public static final String DISALLOW_OUTGOING_CALLS = "no_outgoing_calls";
-    field public static final String DISALLOW_PRINTING = "no_printing";
-    field @Deprecated public static final String DISALLOW_REMOVE_MANAGED_PROFILE = "no_remove_managed_profile";
-    field public static final String DISALLOW_REMOVE_USER = "no_remove_user";
-    field public static final String DISALLOW_SAFE_BOOT = "no_safe_boot";
-    field public static final String DISALLOW_SET_USER_ICON = "no_set_user_icon";
-    field public static final String DISALLOW_SET_WALLPAPER = "no_set_wallpaper";
-    field public static final String DISALLOW_SHARE_INTO_MANAGED_PROFILE = "no_sharing_into_profile";
-    field public static final String DISALLOW_SHARE_LOCATION = "no_share_location";
-    field public static final String DISALLOW_SMS = "no_sms";
-    field public static final String DISALLOW_SYSTEM_ERROR_DIALOGS = "no_system_error_dialogs";
-    field public static final String DISALLOW_UNIFIED_PASSWORD = "no_unified_password";
-    field public static final String DISALLOW_UNINSTALL_APPS = "no_uninstall_apps";
-    field public static final String DISALLOW_UNMUTE_MICROPHONE = "no_unmute_microphone";
-    field public static final String DISALLOW_USB_FILE_TRANSFER = "no_usb_file_transfer";
-    field public static final String DISALLOW_USER_SWITCH = "no_user_switch";
-    field public static final String ENSURE_VERIFY_APPS = "ensure_verify_apps";
-    field public static final String KEY_RESTRICTIONS_PENDING = "restrictions_pending";
-    field public static final int QUIET_MODE_DISABLE_ONLY_IF_CREDENTIAL_NOT_REQUIRED = 1; // 0x1
-    field public static final int USER_CREATION_FAILED_NOT_PERMITTED = 1; // 0x1
-    field public static final int USER_CREATION_FAILED_NO_MORE_USERS = 2; // 0x2
-    field public static final int USER_OPERATION_ERROR_CURRENT_USER = 4; // 0x4
-    field public static final int USER_OPERATION_ERROR_LOW_STORAGE = 5; // 0x5
-    field public static final int USER_OPERATION_ERROR_MANAGED_PROFILE = 2; // 0x2
-    field public static final int USER_OPERATION_ERROR_MAX_RUNNING_USERS = 3; // 0x3
-    field public static final int USER_OPERATION_ERROR_MAX_USERS = 6; // 0x6
-    field public static final int USER_OPERATION_ERROR_UNKNOWN = 1; // 0x1
-    field public static final int USER_OPERATION_SUCCESS = 0; // 0x0
-  }
-
-  public static class UserManager.UserOperationException extends java.lang.RuntimeException {
-    method public int getUserOperationResult();
-  }
-
-  public final class VibrationAttributes implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getFlags();
-    method public int getUsage();
-    method public int getUsageClass();
-    method public boolean isFlagSet(int);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.VibrationAttributes> CREATOR;
-    field public static final int FLAG_BYPASS_INTERRUPTION_POLICY = 1; // 0x1
-    field public static final int USAGE_ALARM = 17; // 0x11
-    field public static final int USAGE_CLASS_ALARM = 1; // 0x1
-    field public static final int USAGE_CLASS_FEEDBACK = 2; // 0x2
-    field public static final int USAGE_CLASS_MASK = 15; // 0xf
-    field public static final int USAGE_CLASS_UNKNOWN = 0; // 0x0
-    field public static final int USAGE_COMMUNICATION_REQUEST = 65; // 0x41
-    field public static final int USAGE_HARDWARE_FEEDBACK = 50; // 0x32
-    field public static final int USAGE_NOTIFICATION = 49; // 0x31
-    field public static final int USAGE_PHYSICAL_EMULATION = 34; // 0x22
-    field public static final int USAGE_RINGTONE = 33; // 0x21
-    field public static final int USAGE_TOUCH = 18; // 0x12
-    field public static final int USAGE_UNKNOWN = 0; // 0x0
-  }
-
-  public static final class VibrationAttributes.Builder {
-    ctor public VibrationAttributes.Builder();
-    ctor public VibrationAttributes.Builder(@Nullable android.os.VibrationAttributes);
-    method @NonNull public android.os.VibrationAttributes build();
-    method @NonNull public android.os.VibrationAttributes.Builder setFlags(int, int);
-    method @NonNull public android.os.VibrationAttributes.Builder setUsage(int);
-  }
-
-  public abstract class VibrationEffect implements android.os.Parcelable {
-    method public static android.os.VibrationEffect createOneShot(long, int);
-    method @NonNull public static android.os.VibrationEffect createPredefined(int);
-    method public static android.os.VibrationEffect createWaveform(long[], int);
-    method public static android.os.VibrationEffect createWaveform(long[], int[], int);
-    method public int describeContents();
-    method @NonNull public static android.os.VibrationEffect.Composition startComposition();
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.VibrationEffect> CREATOR;
-    field public static final int DEFAULT_AMPLITUDE = -1; // 0xffffffff
-    field public static final int EFFECT_CLICK = 0; // 0x0
-    field public static final int EFFECT_DOUBLE_CLICK = 1; // 0x1
-    field public static final int EFFECT_HEAVY_CLICK = 5; // 0x5
-    field public static final int EFFECT_TICK = 2; // 0x2
-  }
-
-  public static final class VibrationEffect.Composition {
-    method @NonNull public android.os.VibrationEffect.Composition addPrimitive(int);
-    method @NonNull public android.os.VibrationEffect.Composition addPrimitive(int, @FloatRange(from=0.0f, to=1.0f) float);
-    method @NonNull public android.os.VibrationEffect.Composition addPrimitive(int, @FloatRange(from=0.0f, to=1.0f) float, @IntRange(from=0) int);
-    method @NonNull public android.os.VibrationEffect compose();
-    field public static final int PRIMITIVE_CLICK = 1; // 0x1
-    field public static final int PRIMITIVE_QUICK_FALL = 6; // 0x6
-    field public static final int PRIMITIVE_QUICK_RISE = 4; // 0x4
-    field public static final int PRIMITIVE_SLOW_RISE = 5; // 0x5
-    field public static final int PRIMITIVE_TICK = 7; // 0x7
-  }
-
-  public abstract class Vibrator {
-    method public final int areAllEffectsSupported(@NonNull int...);
-    method public final boolean areAllPrimitivesSupported(@NonNull int...);
-    method @NonNull public int[] areEffectsSupported(@NonNull int...);
-    method @NonNull public boolean[] arePrimitivesSupported(@NonNull int...);
-    method @RequiresPermission(android.Manifest.permission.VIBRATE) public abstract void cancel();
-    method public abstract boolean hasAmplitudeControl();
-    method public abstract boolean hasVibrator();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(long);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(long, android.media.AudioAttributes);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(long[], int);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(long[], int, android.media.AudioAttributes);
-    method @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(android.os.VibrationEffect);
-    method @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(android.os.VibrationEffect, android.media.AudioAttributes);
-    field public static final int VIBRATION_EFFECT_SUPPORT_NO = 2; // 0x2
-    field public static final int VIBRATION_EFFECT_SUPPORT_UNKNOWN = 0; // 0x0
-    field public static final int VIBRATION_EFFECT_SUPPORT_YES = 1; // 0x1
-  }
-
-  public class WorkSource implements android.os.Parcelable {
-    ctor public WorkSource();
-    ctor public WorkSource(android.os.WorkSource);
-    method public boolean add(android.os.WorkSource);
-    method public void clear();
-    method public int describeContents();
-    method public boolean diff(android.os.WorkSource);
-    method public boolean remove(android.os.WorkSource);
-    method public void set(android.os.WorkSource);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.WorkSource> CREATOR;
-  }
-
-}
-
-package android.os.health {
-
-  public class HealthStats {
-    method public String getDataType();
-    method public long getMeasurement(int);
-    method public int getMeasurementKeyAt(int);
-    method public int getMeasurementKeyCount();
-    method public java.util.Map<java.lang.String,java.lang.Long> getMeasurements(int);
-    method public int getMeasurementsKeyAt(int);
-    method public int getMeasurementsKeyCount();
-    method public java.util.Map<java.lang.String,android.os.health.HealthStats> getStats(int);
-    method public int getStatsKeyAt(int);
-    method public int getStatsKeyCount();
-    method public android.os.health.TimerStat getTimer(int);
-    method public int getTimerCount(int);
-    method public int getTimerKeyAt(int);
-    method public int getTimerKeyCount();
-    method public long getTimerTime(int);
-    method public java.util.Map<java.lang.String,android.os.health.TimerStat> getTimers(int);
-    method public int getTimersKeyAt(int);
-    method public int getTimersKeyCount();
-    method public boolean hasMeasurement(int);
-    method public boolean hasMeasurements(int);
-    method public boolean hasStats(int);
-    method public boolean hasTimer(int);
-    method public boolean hasTimers(int);
-  }
-
-  public final class PackageHealthStats {
-    field public static final int MEASUREMENTS_WAKEUP_ALARMS_COUNT = 40002; // 0x9c42
-    field public static final int STATS_SERVICES = 40001; // 0x9c41
-  }
-
-  public final class PidHealthStats {
-    field public static final int MEASUREMENT_WAKE_NESTING_COUNT = 20001; // 0x4e21
-    field public static final int MEASUREMENT_WAKE_START_MS = 20003; // 0x4e23
-    field public static final int MEASUREMENT_WAKE_SUM_MS = 20002; // 0x4e22
-  }
-
-  public final class ProcessHealthStats {
-    field public static final int MEASUREMENT_ANR_COUNT = 30005; // 0x7535
-    field public static final int MEASUREMENT_CRASHES_COUNT = 30004; // 0x7534
-    field public static final int MEASUREMENT_FOREGROUND_MS = 30006; // 0x7536
-    field public static final int MEASUREMENT_STARTS_COUNT = 30003; // 0x7533
-    field public static final int MEASUREMENT_SYSTEM_TIME_MS = 30002; // 0x7532
-    field public static final int MEASUREMENT_USER_TIME_MS = 30001; // 0x7531
-  }
-
-  public final class ServiceHealthStats {
-    field public static final int MEASUREMENT_LAUNCH_COUNT = 50002; // 0xc352
-    field public static final int MEASUREMENT_START_SERVICE_COUNT = 50001; // 0xc351
-  }
-
-  public class SystemHealthManager {
-    method public android.os.health.HealthStats takeMyUidSnapshot();
-    method public android.os.health.HealthStats takeUidSnapshot(int);
-    method public android.os.health.HealthStats[] takeUidSnapshots(int[]);
-  }
-
-  public final class TimerStat implements android.os.Parcelable {
-    ctor public TimerStat();
-    ctor public TimerStat(int, long);
-    ctor public TimerStat(android.os.Parcel);
-    method public int describeContents();
-    method public int getCount();
-    method public long getTime();
-    method public void setCount(int);
-    method public void setTime(long);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.health.TimerStat> CREATOR;
-  }
-
-  public final class UidHealthStats {
-    field public static final int MEASUREMENT_BLUETOOTH_IDLE_MS = 10020; // 0x2724
-    field public static final int MEASUREMENT_BLUETOOTH_POWER_MAMS = 10023; // 0x2727
-    field public static final int MEASUREMENT_BLUETOOTH_RX_BYTES = 10052; // 0x2744
-    field public static final int MEASUREMENT_BLUETOOTH_RX_MS = 10021; // 0x2725
-    field public static final int MEASUREMENT_BLUETOOTH_RX_PACKETS = 10058; // 0x274a
-    field public static final int MEASUREMENT_BLUETOOTH_TX_BYTES = 10053; // 0x2745
-    field public static final int MEASUREMENT_BLUETOOTH_TX_MS = 10022; // 0x2726
-    field public static final int MEASUREMENT_BLUETOOTH_TX_PACKETS = 10059; // 0x274b
-    field public static final int MEASUREMENT_BUTTON_USER_ACTIVITY_COUNT = 10046; // 0x273e
-    field @Deprecated public static final int MEASUREMENT_CPU_POWER_MAMS = 10064; // 0x2750
-    field public static final int MEASUREMENT_MOBILE_IDLE_MS = 10024; // 0x2728
-    field public static final int MEASUREMENT_MOBILE_POWER_MAMS = 10027; // 0x272b
-    field public static final int MEASUREMENT_MOBILE_RX_BYTES = 10048; // 0x2740
-    field public static final int MEASUREMENT_MOBILE_RX_MS = 10025; // 0x2729
-    field public static final int MEASUREMENT_MOBILE_RX_PACKETS = 10054; // 0x2746
-    field public static final int MEASUREMENT_MOBILE_TX_BYTES = 10049; // 0x2741
-    field public static final int MEASUREMENT_MOBILE_TX_MS = 10026; // 0x272a
-    field public static final int MEASUREMENT_MOBILE_TX_PACKETS = 10055; // 0x2747
-    field public static final int MEASUREMENT_OTHER_USER_ACTIVITY_COUNT = 10045; // 0x273d
-    field public static final int MEASUREMENT_REALTIME_BATTERY_MS = 10001; // 0x2711
-    field public static final int MEASUREMENT_REALTIME_SCREEN_OFF_BATTERY_MS = 10003; // 0x2713
-    field public static final int MEASUREMENT_SYSTEM_CPU_TIME_MS = 10063; // 0x274f
-    field public static final int MEASUREMENT_TOUCH_USER_ACTIVITY_COUNT = 10047; // 0x273f
-    field public static final int MEASUREMENT_UPTIME_BATTERY_MS = 10002; // 0x2712
-    field public static final int MEASUREMENT_UPTIME_SCREEN_OFF_BATTERY_MS = 10004; // 0x2714
-    field public static final int MEASUREMENT_USER_CPU_TIME_MS = 10062; // 0x274e
-    field public static final int MEASUREMENT_WIFI_FULL_LOCK_MS = 10029; // 0x272d
-    field public static final int MEASUREMENT_WIFI_IDLE_MS = 10016; // 0x2720
-    field public static final int MEASUREMENT_WIFI_MULTICAST_MS = 10031; // 0x272f
-    field public static final int MEASUREMENT_WIFI_POWER_MAMS = 10019; // 0x2723
-    field public static final int MEASUREMENT_WIFI_RUNNING_MS = 10028; // 0x272c
-    field public static final int MEASUREMENT_WIFI_RX_BYTES = 10050; // 0x2742
-    field public static final int MEASUREMENT_WIFI_RX_MS = 10017; // 0x2721
-    field public static final int MEASUREMENT_WIFI_RX_PACKETS = 10056; // 0x2748
-    field public static final int MEASUREMENT_WIFI_TX_BYTES = 10051; // 0x2743
-    field public static final int MEASUREMENT_WIFI_TX_MS = 10018; // 0x2722
-    field public static final int MEASUREMENT_WIFI_TX_PACKETS = 10057; // 0x2749
-    field public static final int STATS_PACKAGES = 10015; // 0x271f
-    field public static final int STATS_PIDS = 10013; // 0x271d
-    field public static final int STATS_PROCESSES = 10014; // 0x271e
-    field public static final int TIMERS_JOBS = 10010; // 0x271a
-    field public static final int TIMERS_SENSORS = 10012; // 0x271c
-    field public static final int TIMERS_SYNCS = 10009; // 0x2719
-    field public static final int TIMERS_WAKELOCKS_DRAW = 10008; // 0x2718
-    field public static final int TIMERS_WAKELOCKS_FULL = 10005; // 0x2715
-    field public static final int TIMERS_WAKELOCKS_PARTIAL = 10006; // 0x2716
-    field public static final int TIMERS_WAKELOCKS_WINDOW = 10007; // 0x2717
-    field public static final int TIMER_AUDIO = 10032; // 0x2730
-    field public static final int TIMER_BLUETOOTH_SCAN = 10037; // 0x2735
-    field public static final int TIMER_CAMERA = 10035; // 0x2733
-    field public static final int TIMER_FLASHLIGHT = 10034; // 0x2732
-    field public static final int TIMER_FOREGROUND_ACTIVITY = 10036; // 0x2734
-    field public static final int TIMER_GPS_SENSOR = 10011; // 0x271b
-    field public static final int TIMER_MOBILE_RADIO_ACTIVE = 10061; // 0x274d
-    field public static final int TIMER_PROCESS_STATE_BACKGROUND_MS = 10042; // 0x273a
-    field public static final int TIMER_PROCESS_STATE_CACHED_MS = 10043; // 0x273b
-    field public static final int TIMER_PROCESS_STATE_FOREGROUND_MS = 10041; // 0x2739
-    field public static final int TIMER_PROCESS_STATE_FOREGROUND_SERVICE_MS = 10039; // 0x2737
-    field public static final int TIMER_PROCESS_STATE_TOP_MS = 10038; // 0x2736
-    field public static final int TIMER_PROCESS_STATE_TOP_SLEEPING_MS = 10040; // 0x2738
-    field public static final int TIMER_VIBRATOR = 10044; // 0x273c
-    field public static final int TIMER_VIDEO = 10033; // 0x2731
-    field public static final int TIMER_WIFI_SCAN = 10030; // 0x272e
-  }
-
-}
-
-package android.os.storage {
-
-  public abstract class OnObbStateChangeListener {
-    ctor public OnObbStateChangeListener();
-    method public void onObbStateChange(String, int);
-    field public static final int ERROR_ALREADY_MOUNTED = 24; // 0x18
-    field public static final int ERROR_COULD_NOT_MOUNT = 21; // 0x15
-    field public static final int ERROR_COULD_NOT_UNMOUNT = 22; // 0x16
-    field public static final int ERROR_INTERNAL = 20; // 0x14
-    field public static final int ERROR_NOT_MOUNTED = 23; // 0x17
-    field public static final int ERROR_PERMISSION_DENIED = 25; // 0x19
-    field public static final int MOUNTED = 1; // 0x1
-    field public static final int UNMOUNTED = 2; // 0x2
-  }
-
-  public class StorageManager {
-    method @WorkerThread public void allocateBytes(@NonNull java.util.UUID, long) throws java.io.IOException;
-    method @WorkerThread public void allocateBytes(java.io.FileDescriptor, long) throws java.io.IOException;
-    method @WorkerThread public long getAllocatableBytes(@NonNull java.util.UUID) throws java.io.IOException;
-    method @WorkerThread public long getCacheQuotaBytes(@NonNull java.util.UUID) throws java.io.IOException;
-    method @WorkerThread public long getCacheSizeBytes(@NonNull java.util.UUID) throws java.io.IOException;
-    method public String getMountedObbPath(String);
-    method @NonNull public android.os.storage.StorageVolume getPrimaryStorageVolume();
-    method @NonNull public java.util.List<android.os.storage.StorageVolume> getRecentStorageVolumes();
-    method @Nullable public android.os.storage.StorageVolume getStorageVolume(@NonNull java.io.File);
-    method @NonNull public android.os.storage.StorageVolume getStorageVolume(@NonNull android.net.Uri);
-    method @NonNull public java.util.List<android.os.storage.StorageVolume> getStorageVolumes();
-    method @NonNull public java.util.UUID getUuidForPath(@NonNull java.io.File) throws java.io.IOException;
-    method public boolean isAllocationSupported(@NonNull java.io.FileDescriptor);
-    method public boolean isCacheBehaviorGroup(java.io.File) throws java.io.IOException;
-    method public boolean isCacheBehaviorTombstone(java.io.File) throws java.io.IOException;
-    method public boolean isCheckpointSupported();
-    method public boolean isEncrypted(java.io.File);
-    method public boolean isObbMounted(String);
-    method public boolean mountObb(String, String, android.os.storage.OnObbStateChangeListener);
-    method @NonNull public android.os.ParcelFileDescriptor openProxyFileDescriptor(int, android.os.ProxyFileDescriptorCallback, android.os.Handler) throws java.io.IOException;
-    method public void registerStorageVolumeCallback(@NonNull java.util.concurrent.Executor, @NonNull android.os.storage.StorageManager.StorageVolumeCallback);
-    method public void setCacheBehaviorGroup(java.io.File, boolean) throws java.io.IOException;
-    method public void setCacheBehaviorTombstone(java.io.File, boolean) throws java.io.IOException;
-    method public boolean unmountObb(String, boolean, android.os.storage.OnObbStateChangeListener);
-    method public void unregisterStorageVolumeCallback(@NonNull android.os.storage.StorageManager.StorageVolumeCallback);
-    field @RequiresPermission(android.Manifest.permission.MANAGE_EXTERNAL_STORAGE) public static final String ACTION_CLEAR_APP_CACHE = "android.os.storage.action.CLEAR_APP_CACHE";
-    field public static final String ACTION_MANAGE_STORAGE = "android.os.storage.action.MANAGE_STORAGE";
-    field public static final String EXTRA_REQUESTED_BYTES = "android.os.storage.extra.REQUESTED_BYTES";
-    field public static final String EXTRA_UUID = "android.os.storage.extra.UUID";
-    field public static final java.util.UUID UUID_DEFAULT;
-  }
-
-  public static class StorageManager.StorageVolumeCallback {
-    ctor public StorageManager.StorageVolumeCallback();
-    method public void onStateChanged(@NonNull android.os.storage.StorageVolume);
-  }
-
-  public final class StorageVolume implements android.os.Parcelable {
-    method @Deprecated @Nullable public android.content.Intent createAccessIntent(String);
-    method @NonNull public android.content.Intent createOpenDocumentTreeIntent();
-    method public int describeContents();
-    method public String getDescription(android.content.Context);
-    method @Nullable public java.io.File getDirectory();
-    method @Nullable public String getMediaStoreVolumeName();
-    method public String getState();
-    method @Nullable public String getUuid();
-    method public boolean isEmulated();
-    method public boolean isPrimary();
-    method public boolean isRemovable();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.storage.StorageVolume> CREATOR;
-    field public static final String EXTRA_STORAGE_VOLUME = "android.os.storage.extra.STORAGE_VOLUME";
-  }
-
-}
-
-package android.os.strictmode {
-
-  public final class CleartextNetworkViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class ContentUriWithoutPermissionViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class CredentialProtectedWhileLockedViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class CustomViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class DiskReadViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class DiskWriteViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class FileUriExposedViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class ImplicitDirectBootViolation extends android.os.strictmode.Violation {
-  }
-
-  public class InstanceCountViolation extends android.os.strictmode.Violation {
-    method public long getNumberOfInstances();
-  }
-
-  public final class IntentReceiverLeakedViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class LeakedClosableViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class NetworkViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class NonSdkApiUsedViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class ResourceMismatchViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class ServiceConnectionLeakedViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class SqliteObjectLeakedViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class UnbufferedIoViolation extends android.os.strictmode.Violation {
-  }
-
-  public final class UntaggedSocketViolation extends android.os.strictmode.Violation {
-  }
-
-  public abstract class Violation extends java.lang.Throwable {
-  }
-
-  public final class WebViewMethodCalledOnWrongThreadViolation extends android.os.strictmode.Violation {
-  }
-
-}
-
-package android.preference {
-
-  @Deprecated public class CheckBoxPreference extends android.preference.TwoStatePreference {
-    ctor @Deprecated public CheckBoxPreference(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public CheckBoxPreference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor @Deprecated public CheckBoxPreference(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public CheckBoxPreference(android.content.Context);
-  }
-
-  @Deprecated public abstract class DialogPreference extends android.preference.Preference implements android.content.DialogInterface.OnClickListener android.content.DialogInterface.OnDismissListener android.preference.PreferenceManager.OnActivityDestroyListener {
-    ctor @Deprecated public DialogPreference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor @Deprecated public DialogPreference(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public DialogPreference(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public DialogPreference(android.content.Context);
-    method @Deprecated public android.app.Dialog getDialog();
-    method @Deprecated public android.graphics.drawable.Drawable getDialogIcon();
-    method @Deprecated public int getDialogLayoutResource();
-    method @Deprecated public CharSequence getDialogMessage();
-    method @Deprecated public CharSequence getDialogTitle();
-    method @Deprecated public CharSequence getNegativeButtonText();
-    method @Deprecated public CharSequence getPositiveButtonText();
-    method @Deprecated public void onActivityDestroy();
-    method @Deprecated @CallSuper protected void onBindDialogView(android.view.View);
-    method @Deprecated public void onClick(android.content.DialogInterface, int);
-    method @Deprecated protected android.view.View onCreateDialogView();
-    method @Deprecated protected void onDialogClosed(boolean);
-    method @Deprecated public void onDismiss(android.content.DialogInterface);
-    method @Deprecated protected void onPrepareDialogBuilder(android.app.AlertDialog.Builder);
-    method @Deprecated public void setDialogIcon(android.graphics.drawable.Drawable);
-    method @Deprecated public void setDialogIcon(@DrawableRes int);
-    method @Deprecated public void setDialogLayoutResource(int);
-    method @Deprecated public void setDialogMessage(CharSequence);
-    method @Deprecated public void setDialogMessage(int);
-    method @Deprecated public void setDialogTitle(CharSequence);
-    method @Deprecated public void setDialogTitle(int);
-    method @Deprecated public void setNegativeButtonText(CharSequence);
-    method @Deprecated public void setNegativeButtonText(@StringRes int);
-    method @Deprecated public void setPositiveButtonText(CharSequence);
-    method @Deprecated public void setPositiveButtonText(@StringRes int);
-    method @Deprecated protected void showDialog(android.os.Bundle);
-  }
-
-  @Deprecated public class EditTextPreference extends android.preference.DialogPreference {
-    ctor @Deprecated public EditTextPreference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor @Deprecated public EditTextPreference(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public EditTextPreference(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public EditTextPreference(android.content.Context);
-    method @Deprecated public android.widget.EditText getEditText();
-    method @Deprecated public String getText();
-    method @Deprecated protected void onAddEditTextToDialogView(android.view.View, android.widget.EditText);
-    method @Deprecated public void setText(String);
-  }
-
-  @Deprecated public class ListPreference extends android.preference.DialogPreference {
-    ctor @Deprecated public ListPreference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor @Deprecated public ListPreference(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public ListPreference(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public ListPreference(android.content.Context);
-    method @Deprecated public int findIndexOfValue(String);
-    method @Deprecated public CharSequence[] getEntries();
-    method @Deprecated public CharSequence getEntry();
-    method @Deprecated public CharSequence[] getEntryValues();
-    method @Deprecated public String getValue();
-    method @Deprecated public void setEntries(CharSequence[]);
-    method @Deprecated public void setEntries(@ArrayRes int);
-    method @Deprecated public void setEntryValues(CharSequence[]);
-    method @Deprecated public void setEntryValues(@ArrayRes int);
-    method @Deprecated public void setValue(String);
-    method @Deprecated public void setValueIndex(int);
-  }
-
-  @Deprecated public class MultiSelectListPreference extends android.preference.DialogPreference {
-    ctor @Deprecated public MultiSelectListPreference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor @Deprecated public MultiSelectListPreference(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public MultiSelectListPreference(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public MultiSelectListPreference(android.content.Context);
-    method @Deprecated public int findIndexOfValue(String);
-    method @Deprecated public CharSequence[] getEntries();
-    method @Deprecated public CharSequence[] getEntryValues();
-    method @Deprecated public java.util.Set<java.lang.String> getValues();
-    method @Deprecated public void setEntries(CharSequence[]);
-    method @Deprecated public void setEntries(@ArrayRes int);
-    method @Deprecated public void setEntryValues(CharSequence[]);
-    method @Deprecated public void setEntryValues(@ArrayRes int);
-    method @Deprecated public void setValues(java.util.Set<java.lang.String>);
-  }
-
-  @Deprecated public class Preference implements java.lang.Comparable<android.preference.Preference> {
-    ctor @Deprecated public Preference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor @Deprecated public Preference(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public Preference(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public Preference(android.content.Context);
-    method @Deprecated protected boolean callChangeListener(Object);
-    method @Deprecated public int compareTo(android.preference.Preference);
-    method @Deprecated protected android.preference.Preference findPreferenceInHierarchy(String);
-    method @Deprecated public android.content.Context getContext();
-    method @Deprecated public String getDependency();
-    method @Deprecated public android.content.SharedPreferences.Editor getEditor();
-    method @Deprecated public android.os.Bundle getExtras();
-    method @Deprecated public String getFragment();
-    method @Deprecated public android.graphics.drawable.Drawable getIcon();
-    method @Deprecated public android.content.Intent getIntent();
-    method @Deprecated public String getKey();
-    method @Deprecated @LayoutRes public int getLayoutResource();
-    method @Deprecated public android.preference.Preference.OnPreferenceChangeListener getOnPreferenceChangeListener();
-    method @Deprecated public android.preference.Preference.OnPreferenceClickListener getOnPreferenceClickListener();
-    method @Deprecated public int getOrder();
-    method @Deprecated @Nullable public android.preference.PreferenceGroup getParent();
-    method @Deprecated protected boolean getPersistedBoolean(boolean);
-    method @Deprecated protected float getPersistedFloat(float);
-    method @Deprecated protected int getPersistedInt(int);
-    method @Deprecated protected long getPersistedLong(long);
-    method @Deprecated protected String getPersistedString(String);
-    method @Deprecated public java.util.Set<java.lang.String> getPersistedStringSet(java.util.Set<java.lang.String>);
-    method @Deprecated @Nullable public android.preference.PreferenceDataStore getPreferenceDataStore();
-    method @Deprecated public android.preference.PreferenceManager getPreferenceManager();
-    method @Deprecated public android.content.SharedPreferences getSharedPreferences();
-    method @Deprecated public boolean getShouldDisableView();
-    method @Deprecated public CharSequence getSummary();
-    method @Deprecated public CharSequence getTitle();
-    method @Deprecated @StringRes public int getTitleRes();
-    method @Deprecated public android.view.View getView(android.view.View, android.view.ViewGroup);
-    method @Deprecated @LayoutRes public int getWidgetLayoutResource();
-    method @Deprecated public boolean hasKey();
-    method @Deprecated public boolean isEnabled();
-    method @Deprecated public boolean isIconSpaceReserved();
-    method @Deprecated public boolean isPersistent();
-    method @Deprecated public boolean isRecycleEnabled();
-    method @Deprecated public boolean isSelectable();
-    method @Deprecated public boolean isSingleLineTitle();
-    method @Deprecated protected void notifyChanged();
-    method @Deprecated public void notifyDependencyChange(boolean);
-    method @Deprecated protected void notifyHierarchyChanged();
-    method @Deprecated protected void onAttachedToActivity();
-    method @Deprecated protected void onAttachedToHierarchy(android.preference.PreferenceManager);
-    method @Deprecated @CallSuper protected void onBindView(android.view.View);
-    method @Deprecated protected void onClick();
-    method @Deprecated @CallSuper protected android.view.View onCreateView(android.view.ViewGroup);
-    method @Deprecated public void onDependencyChanged(android.preference.Preference, boolean);
-    method @Deprecated protected Object onGetDefaultValue(android.content.res.TypedArray, int);
-    method @Deprecated public void onParentChanged(android.preference.Preference, boolean);
-    method @Deprecated @CallSuper protected void onPrepareForRemoval();
-    method @Deprecated protected void onRestoreInstanceState(android.os.Parcelable);
-    method @Deprecated protected android.os.Parcelable onSaveInstanceState();
-    method @Deprecated protected void onSetInitialValue(boolean, Object);
-    method @Deprecated public android.os.Bundle peekExtras();
-    method @Deprecated protected boolean persistBoolean(boolean);
-    method @Deprecated protected boolean persistFloat(float);
-    method @Deprecated protected boolean persistInt(int);
-    method @Deprecated protected boolean persistLong(long);
-    method @Deprecated protected boolean persistString(String);
-    method @Deprecated public boolean persistStringSet(java.util.Set<java.lang.String>);
-    method @Deprecated public void restoreHierarchyState(android.os.Bundle);
-    method @Deprecated public void saveHierarchyState(android.os.Bundle);
-    method @Deprecated public void setDefaultValue(Object);
-    method @Deprecated public void setDependency(String);
-    method @Deprecated public void setEnabled(boolean);
-    method @Deprecated public void setFragment(String);
-    method @Deprecated public void setIcon(android.graphics.drawable.Drawable);
-    method @Deprecated public void setIcon(@DrawableRes int);
-    method @Deprecated public void setIconSpaceReserved(boolean);
-    method @Deprecated public void setIntent(android.content.Intent);
-    method @Deprecated public void setKey(String);
-    method @Deprecated public void setLayoutResource(@LayoutRes int);
-    method @Deprecated public void setOnPreferenceChangeListener(android.preference.Preference.OnPreferenceChangeListener);
-    method @Deprecated public void setOnPreferenceClickListener(android.preference.Preference.OnPreferenceClickListener);
-    method @Deprecated public void setOrder(int);
-    method @Deprecated public void setPersistent(boolean);
-    method @Deprecated public void setPreferenceDataStore(android.preference.PreferenceDataStore);
-    method @Deprecated @CallSuper public void setRecycleEnabled(boolean);
-    method @Deprecated public void setSelectable(boolean);
-    method @Deprecated public void setShouldDisableView(boolean);
-    method @Deprecated public void setSingleLineTitle(boolean);
-    method @Deprecated public void setSummary(CharSequence);
-    method @Deprecated public void setSummary(@StringRes int);
-    method @Deprecated public void setTitle(CharSequence);
-    method @Deprecated public void setTitle(@StringRes int);
-    method @Deprecated public void setWidgetLayoutResource(@LayoutRes int);
-    method @Deprecated public boolean shouldCommit();
-    method @Deprecated public boolean shouldDisableDependents();
-    method @Deprecated protected boolean shouldPersist();
-    field @Deprecated public static final int DEFAULT_ORDER = 2147483647; // 0x7fffffff
-  }
-
-  @Deprecated public static class Preference.BaseSavedState extends android.view.AbsSavedState {
-    ctor @Deprecated public Preference.BaseSavedState(android.os.Parcel);
-    ctor @Deprecated public Preference.BaseSavedState(android.os.Parcelable);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.preference.Preference.BaseSavedState> CREATOR;
-  }
-
-  @Deprecated public static interface Preference.OnPreferenceChangeListener {
-    method @Deprecated public boolean onPreferenceChange(android.preference.Preference, Object);
-  }
-
-  @Deprecated public static interface Preference.OnPreferenceClickListener {
-    method @Deprecated public boolean onPreferenceClick(android.preference.Preference);
-  }
-
-  @Deprecated public abstract class PreferenceActivity extends android.app.ListActivity implements android.preference.PreferenceFragment.OnPreferenceStartFragmentCallback {
-    ctor @Deprecated public PreferenceActivity();
-    method @Deprecated public void addPreferencesFromIntent(android.content.Intent);
-    method @Deprecated public void addPreferencesFromResource(int);
-    method @Deprecated public android.preference.Preference findPreference(CharSequence);
-    method @Deprecated public void finishPreferencePanel(android.app.Fragment, int, android.content.Intent);
-    method @Deprecated public android.preference.PreferenceManager getPreferenceManager();
-    method @Deprecated public android.preference.PreferenceScreen getPreferenceScreen();
-    method @Deprecated public boolean hasHeaders();
-    method @Deprecated public void invalidateHeaders();
-    method @Deprecated public boolean isMultiPane();
-    method @Deprecated protected boolean isValidFragment(String);
-    method @Deprecated public void loadHeadersFromResource(@XmlRes int, java.util.List<android.preference.PreferenceActivity.Header>);
-    method @Deprecated public void onBuildHeaders(java.util.List<android.preference.PreferenceActivity.Header>);
-    method @Deprecated public android.content.Intent onBuildStartFragmentIntent(String, android.os.Bundle, @StringRes int, int);
-    method @Deprecated public android.preference.PreferenceActivity.Header onGetInitialHeader();
-    method @Deprecated public android.preference.PreferenceActivity.Header onGetNewHeader();
-    method @Deprecated public void onHeaderClick(android.preference.PreferenceActivity.Header, int);
-    method @Deprecated public boolean onIsHidingHeaders();
-    method @Deprecated public boolean onIsMultiPane();
-    method @Deprecated public boolean onPreferenceStartFragment(android.preference.PreferenceFragment, android.preference.Preference);
-    method @Deprecated public boolean onPreferenceTreeClick(android.preference.PreferenceScreen, android.preference.Preference);
-    method @Deprecated public void setListFooter(android.view.View);
-    method @Deprecated public void setParentTitle(CharSequence, CharSequence, android.view.View.OnClickListener);
-    method @Deprecated public void setPreferenceScreen(android.preference.PreferenceScreen);
-    method @Deprecated public void showBreadCrumbs(CharSequence, CharSequence);
-    method @Deprecated public void startPreferenceFragment(android.app.Fragment, boolean);
-    method @Deprecated public void startPreferencePanel(String, android.os.Bundle, @StringRes int, CharSequence, android.app.Fragment, int);
-    method @Deprecated public void startWithFragment(String, android.os.Bundle, android.app.Fragment, int);
-    method @Deprecated public void startWithFragment(String, android.os.Bundle, android.app.Fragment, int, @StringRes int, @StringRes int);
-    method @Deprecated public void switchToHeader(String, android.os.Bundle);
-    method @Deprecated public void switchToHeader(android.preference.PreferenceActivity.Header);
-    field @Deprecated public static final String EXTRA_NO_HEADERS = ":android:no_headers";
-    field @Deprecated public static final String EXTRA_SHOW_FRAGMENT = ":android:show_fragment";
-    field @Deprecated public static final String EXTRA_SHOW_FRAGMENT_ARGUMENTS = ":android:show_fragment_args";
-    field @Deprecated public static final String EXTRA_SHOW_FRAGMENT_SHORT_TITLE = ":android:show_fragment_short_title";
-    field @Deprecated public static final String EXTRA_SHOW_FRAGMENT_TITLE = ":android:show_fragment_title";
-    field @Deprecated public static final long HEADER_ID_UNDEFINED = -1L; // 0xffffffffffffffffL
-  }
-
-  @Deprecated public static final class PreferenceActivity.Header implements android.os.Parcelable {
-    ctor @Deprecated public PreferenceActivity.Header();
-    method @Deprecated public int describeContents();
-    method @Deprecated public CharSequence getBreadCrumbShortTitle(android.content.res.Resources);
-    method @Deprecated public CharSequence getBreadCrumbTitle(android.content.res.Resources);
-    method @Deprecated public CharSequence getSummary(android.content.res.Resources);
-    method @Deprecated public CharSequence getTitle(android.content.res.Resources);
-    method @Deprecated public void readFromParcel(android.os.Parcel);
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.preference.PreferenceActivity.Header> CREATOR;
-    field @Deprecated public CharSequence breadCrumbShortTitle;
-    field @Deprecated @StringRes public int breadCrumbShortTitleRes;
-    field @Deprecated public CharSequence breadCrumbTitle;
-    field @Deprecated @StringRes public int breadCrumbTitleRes;
-    field @Deprecated public android.os.Bundle extras;
-    field @Deprecated public String fragment;
-    field @Deprecated public android.os.Bundle fragmentArguments;
-    field @Deprecated public int iconRes;
-    field @Deprecated public long id;
-    field @Deprecated public android.content.Intent intent;
-    field @Deprecated public CharSequence summary;
-    field @Deprecated @StringRes public int summaryRes;
-    field @Deprecated public CharSequence title;
-    field @Deprecated @StringRes public int titleRes;
-  }
-
-  @Deprecated public class PreferenceCategory extends android.preference.PreferenceGroup {
-    ctor @Deprecated public PreferenceCategory(android.content.Context, android.util.AttributeSet, int, int);
-    ctor @Deprecated public PreferenceCategory(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public PreferenceCategory(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public PreferenceCategory(android.content.Context);
-  }
-
-  @Deprecated public interface PreferenceDataStore {
-    method @Deprecated public default boolean getBoolean(String, boolean);
-    method @Deprecated public default float getFloat(String, float);
-    method @Deprecated public default int getInt(String, int);
-    method @Deprecated public default long getLong(String, long);
-    method @Deprecated @Nullable public default String getString(String, @Nullable String);
-    method @Deprecated @Nullable public default java.util.Set<java.lang.String> getStringSet(String, @Nullable java.util.Set<java.lang.String>);
-    method @Deprecated public default void putBoolean(String, boolean);
-    method @Deprecated public default void putFloat(String, float);
-    method @Deprecated public default void putInt(String, int);
-    method @Deprecated public default void putLong(String, long);
-    method @Deprecated public default void putString(String, @Nullable String);
-    method @Deprecated public default void putStringSet(String, @Nullable java.util.Set<java.lang.String>);
-  }
-
-  @Deprecated public abstract class PreferenceFragment extends android.app.Fragment {
-    ctor @Deprecated public PreferenceFragment();
-    method @Deprecated public void addPreferencesFromIntent(android.content.Intent);
-    method @Deprecated public void addPreferencesFromResource(@XmlRes int);
-    method @Deprecated public android.preference.Preference findPreference(CharSequence);
-    method @Deprecated public android.preference.PreferenceManager getPreferenceManager();
-    method @Deprecated public android.preference.PreferenceScreen getPreferenceScreen();
-    method @Deprecated public boolean onPreferenceTreeClick(android.preference.PreferenceScreen, android.preference.Preference);
-    method @Deprecated public void setPreferenceScreen(android.preference.PreferenceScreen);
-  }
-
-  @Deprecated public static interface PreferenceFragment.OnPreferenceStartFragmentCallback {
-    method @Deprecated public boolean onPreferenceStartFragment(android.preference.PreferenceFragment, android.preference.Preference);
-  }
-
-  @Deprecated public abstract class PreferenceGroup extends android.preference.Preference {
-    ctor @Deprecated public PreferenceGroup(android.content.Context, android.util.AttributeSet, int, int);
-    ctor @Deprecated public PreferenceGroup(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public PreferenceGroup(android.content.Context, android.util.AttributeSet);
-    method @Deprecated public void addItemFromInflater(android.preference.Preference);
-    method @Deprecated public boolean addPreference(android.preference.Preference);
-    method @Deprecated protected void dispatchRestoreInstanceState(android.os.Bundle);
-    method @Deprecated protected void dispatchSaveInstanceState(android.os.Bundle);
-    method @Deprecated public android.preference.Preference findPreference(CharSequence);
-    method @Deprecated public android.preference.Preference getPreference(int);
-    method @Deprecated public int getPreferenceCount();
-    method @Deprecated protected boolean isOnSameScreenAsChildren();
-    method @Deprecated public boolean isOrderingAsAdded();
-    method @Deprecated protected boolean onPrepareAddPreference(android.preference.Preference);
-    method @Deprecated public void removeAll();
-    method @Deprecated public boolean removePreference(android.preference.Preference);
-    method @Deprecated public void setOrderingAsAdded(boolean);
-  }
-
-  @Deprecated public class PreferenceManager {
-    method @Deprecated public android.preference.PreferenceScreen createPreferenceScreen(android.content.Context);
-    method @Deprecated @Nullable public android.preference.Preference findPreference(CharSequence);
-    method @Deprecated public static android.content.SharedPreferences getDefaultSharedPreferences(android.content.Context);
-    method @Deprecated public static String getDefaultSharedPreferencesName(android.content.Context);
-    method @Deprecated @Nullable public android.preference.PreferenceDataStore getPreferenceDataStore();
-    method @Deprecated public android.content.SharedPreferences getSharedPreferences();
-    method @Deprecated public int getSharedPreferencesMode();
-    method @Deprecated public String getSharedPreferencesName();
-    method @Deprecated public boolean isStorageDefault();
-    method @Deprecated public boolean isStorageDeviceProtected();
-    method @Deprecated public static void setDefaultValues(android.content.Context, @XmlRes int, boolean);
-    method @Deprecated public static void setDefaultValues(android.content.Context, String, int, int, boolean);
-    method @Deprecated public void setPreferenceDataStore(android.preference.PreferenceDataStore);
-    method @Deprecated public void setSharedPreferencesMode(int);
-    method @Deprecated public void setSharedPreferencesName(String);
-    method @Deprecated public void setStorageDefault();
-    method @Deprecated public void setStorageDeviceProtected();
-    field @Deprecated public static final String KEY_HAS_SET_DEFAULT_VALUES = "_has_set_default_values";
-    field @Deprecated public static final String METADATA_KEY_PREFERENCES = "android.preference";
-  }
-
-  @Deprecated public static interface PreferenceManager.OnActivityDestroyListener {
-    method @Deprecated public void onActivityDestroy();
-  }
-
-  @Deprecated public static interface PreferenceManager.OnActivityResultListener {
-    method @Deprecated public boolean onActivityResult(int, int, android.content.Intent);
-  }
-
-  @Deprecated public static interface PreferenceManager.OnActivityStopListener {
-    method @Deprecated public void onActivityStop();
-  }
-
-  @Deprecated public final class PreferenceScreen extends android.preference.PreferenceGroup implements android.widget.AdapterView.OnItemClickListener android.content.DialogInterface.OnDismissListener {
-    method @Deprecated public void bind(android.widget.ListView);
-    method @Deprecated public android.app.Dialog getDialog();
-    method @Deprecated public android.widget.ListAdapter getRootAdapter();
-    method @Deprecated protected android.widget.ListAdapter onCreateRootAdapter();
-    method @Deprecated public void onDismiss(android.content.DialogInterface);
-    method @Deprecated public void onItemClick(android.widget.AdapterView, android.view.View, int, long);
-  }
-
-  @Deprecated public class RingtonePreference extends android.preference.Preference implements android.preference.PreferenceManager.OnActivityResultListener {
-    ctor @Deprecated public RingtonePreference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor @Deprecated public RingtonePreference(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public RingtonePreference(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public RingtonePreference(android.content.Context);
-    method @Deprecated public int getRingtoneType();
-    method @Deprecated public boolean getShowDefault();
-    method @Deprecated public boolean getShowSilent();
-    method @Deprecated public boolean onActivityResult(int, int, android.content.Intent);
-    method @Deprecated protected void onPrepareRingtonePickerIntent(android.content.Intent);
-    method @Deprecated protected android.net.Uri onRestoreRingtone();
-    method @Deprecated protected void onSaveRingtone(android.net.Uri);
-    method @Deprecated public void setRingtoneType(int);
-    method @Deprecated public void setShowDefault(boolean);
-    method @Deprecated public void setShowSilent(boolean);
-  }
-
-  @Deprecated public class SwitchPreference extends android.preference.TwoStatePreference {
-    ctor @Deprecated public SwitchPreference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor @Deprecated public SwitchPreference(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public SwitchPreference(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public SwitchPreference(android.content.Context);
-    method @Deprecated public CharSequence getSwitchTextOff();
-    method @Deprecated public CharSequence getSwitchTextOn();
-    method @Deprecated public void setSwitchTextOff(CharSequence);
-    method @Deprecated public void setSwitchTextOff(@StringRes int);
-    method @Deprecated public void setSwitchTextOn(CharSequence);
-    method @Deprecated public void setSwitchTextOn(@StringRes int);
-  }
-
-  @Deprecated public abstract class TwoStatePreference extends android.preference.Preference {
-    ctor @Deprecated public TwoStatePreference(android.content.Context, android.util.AttributeSet, int, int);
-    ctor @Deprecated public TwoStatePreference(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public TwoStatePreference(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public TwoStatePreference(android.content.Context);
-    method @Deprecated public boolean getDisableDependentsState();
-    method @Deprecated public CharSequence getSummaryOff();
-    method @Deprecated public CharSequence getSummaryOn();
-    method @Deprecated public boolean isChecked();
-    method @Deprecated public void setChecked(boolean);
-    method @Deprecated public void setDisableDependentsState(boolean);
-    method @Deprecated public void setSummaryOff(CharSequence);
-    method @Deprecated public void setSummaryOff(@StringRes int);
-    method @Deprecated public void setSummaryOn(CharSequence);
-    method @Deprecated public void setSummaryOn(@StringRes int);
-  }
-
-}
-
-package android.print {
-
-  public final class PageRange implements android.os.Parcelable {
-    ctor public PageRange(@IntRange(from=0) int, @IntRange(from=0) int);
-    method public int describeContents();
-    method @IntRange(from=0) public int getEnd();
-    method @IntRange(from=0) public int getStart();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.print.PageRange ALL_PAGES;
-    field @NonNull public static final android.os.Parcelable.Creator<android.print.PageRange> CREATOR;
-  }
-
-  public final class PrintAttributes implements android.os.Parcelable {
-    method public int describeContents();
-    method @IntRange(from=0) public int getColorMode();
-    method @IntRange(from=0) public int getDuplexMode();
-    method @Nullable public android.print.PrintAttributes.MediaSize getMediaSize();
-    method @Nullable public android.print.PrintAttributes.Margins getMinMargins();
-    method @Nullable public android.print.PrintAttributes.Resolution getResolution();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int COLOR_MODE_COLOR = 2; // 0x2
-    field public static final int COLOR_MODE_MONOCHROME = 1; // 0x1
-    field @NonNull public static final android.os.Parcelable.Creator<android.print.PrintAttributes> CREATOR;
-    field public static final int DUPLEX_MODE_LONG_EDGE = 2; // 0x2
-    field public static final int DUPLEX_MODE_NONE = 1; // 0x1
-    field public static final int DUPLEX_MODE_SHORT_EDGE = 4; // 0x4
-  }
-
-  public static final class PrintAttributes.Builder {
-    ctor public PrintAttributes.Builder();
-    method @NonNull public android.print.PrintAttributes build();
-    method @NonNull public android.print.PrintAttributes.Builder setColorMode(int);
-    method @NonNull public android.print.PrintAttributes.Builder setDuplexMode(int);
-    method @NonNull public android.print.PrintAttributes.Builder setMediaSize(@NonNull android.print.PrintAttributes.MediaSize);
-    method @NonNull public android.print.PrintAttributes.Builder setMinMargins(@NonNull android.print.PrintAttributes.Margins);
-    method @NonNull public android.print.PrintAttributes.Builder setResolution(@NonNull android.print.PrintAttributes.Resolution);
-  }
-
-  public static final class PrintAttributes.Margins {
-    ctor public PrintAttributes.Margins(int, int, int, int);
-    method public int getBottomMils();
-    method public int getLeftMils();
-    method public int getRightMils();
-    method public int getTopMils();
-    field public static final android.print.PrintAttributes.Margins NO_MARGINS;
-  }
-
-  public static final class PrintAttributes.MediaSize {
-    ctor public PrintAttributes.MediaSize(@NonNull String, @NonNull String, @IntRange(from=1) int, @IntRange(from=1) int);
-    method @NonNull public android.print.PrintAttributes.MediaSize asLandscape();
-    method @NonNull public android.print.PrintAttributes.MediaSize asPortrait();
-    method @IntRange(from=1) public int getHeightMils();
-    method @NonNull public String getId();
-    method @NonNull public String getLabel(@NonNull android.content.pm.PackageManager);
-    method @IntRange(from=1) public int getWidthMils();
-    method public boolean isPortrait();
-    field public static final android.print.PrintAttributes.MediaSize ISO_A0;
-    field public static final android.print.PrintAttributes.MediaSize ISO_A1;
-    field public static final android.print.PrintAttributes.MediaSize ISO_A10;
-    field public static final android.print.PrintAttributes.MediaSize ISO_A2;
-    field public static final android.print.PrintAttributes.MediaSize ISO_A3;
-    field public static final android.print.PrintAttributes.MediaSize ISO_A4;
-    field public static final android.print.PrintAttributes.MediaSize ISO_A5;
-    field public static final android.print.PrintAttributes.MediaSize ISO_A6;
-    field public static final android.print.PrintAttributes.MediaSize ISO_A7;
-    field public static final android.print.PrintAttributes.MediaSize ISO_A8;
-    field public static final android.print.PrintAttributes.MediaSize ISO_A9;
-    field public static final android.print.PrintAttributes.MediaSize ISO_B0;
-    field public static final android.print.PrintAttributes.MediaSize ISO_B1;
-    field public static final android.print.PrintAttributes.MediaSize ISO_B10;
-    field public static final android.print.PrintAttributes.MediaSize ISO_B2;
-    field public static final android.print.PrintAttributes.MediaSize ISO_B3;
-    field public static final android.print.PrintAttributes.MediaSize ISO_B4;
-    field public static final android.print.PrintAttributes.MediaSize ISO_B5;
-    field public static final android.print.PrintAttributes.MediaSize ISO_B6;
-    field public static final android.print.PrintAttributes.MediaSize ISO_B7;
-    field public static final android.print.PrintAttributes.MediaSize ISO_B8;
-    field public static final android.print.PrintAttributes.MediaSize ISO_B9;
-    field public static final android.print.PrintAttributes.MediaSize ISO_C0;
-    field public static final android.print.PrintAttributes.MediaSize ISO_C1;
-    field public static final android.print.PrintAttributes.MediaSize ISO_C10;
-    field public static final android.print.PrintAttributes.MediaSize ISO_C2;
-    field public static final android.print.PrintAttributes.MediaSize ISO_C3;
-    field public static final android.print.PrintAttributes.MediaSize ISO_C4;
-    field public static final android.print.PrintAttributes.MediaSize ISO_C5;
-    field public static final android.print.PrintAttributes.MediaSize ISO_C6;
-    field public static final android.print.PrintAttributes.MediaSize ISO_C7;
-    field public static final android.print.PrintAttributes.MediaSize ISO_C8;
-    field public static final android.print.PrintAttributes.MediaSize ISO_C9;
-    field public static final android.print.PrintAttributes.MediaSize JIS_B0;
-    field public static final android.print.PrintAttributes.MediaSize JIS_B1;
-    field public static final android.print.PrintAttributes.MediaSize JIS_B10;
-    field public static final android.print.PrintAttributes.MediaSize JIS_B2;
-    field public static final android.print.PrintAttributes.MediaSize JIS_B3;
-    field public static final android.print.PrintAttributes.MediaSize JIS_B4;
-    field public static final android.print.PrintAttributes.MediaSize JIS_B5;
-    field public static final android.print.PrintAttributes.MediaSize JIS_B6;
-    field public static final android.print.PrintAttributes.MediaSize JIS_B7;
-    field public static final android.print.PrintAttributes.MediaSize JIS_B8;
-    field public static final android.print.PrintAttributes.MediaSize JIS_B9;
-    field public static final android.print.PrintAttributes.MediaSize JIS_EXEC;
-    field public static final android.print.PrintAttributes.MediaSize JPN_CHOU2;
-    field public static final android.print.PrintAttributes.MediaSize JPN_CHOU3;
-    field public static final android.print.PrintAttributes.MediaSize JPN_CHOU4;
-    field public static final android.print.PrintAttributes.MediaSize JPN_HAGAKI;
-    field public static final android.print.PrintAttributes.MediaSize JPN_KAHU;
-    field public static final android.print.PrintAttributes.MediaSize JPN_KAKU2;
-    field public static final android.print.PrintAttributes.MediaSize JPN_OUFUKU;
-    field public static final android.print.PrintAttributes.MediaSize JPN_YOU4;
-    field public static final android.print.PrintAttributes.MediaSize NA_FOOLSCAP;
-    field public static final android.print.PrintAttributes.MediaSize NA_GOVT_LETTER;
-    field public static final android.print.PrintAttributes.MediaSize NA_INDEX_3X5;
-    field public static final android.print.PrintAttributes.MediaSize NA_INDEX_4X6;
-    field public static final android.print.PrintAttributes.MediaSize NA_INDEX_5X8;
-    field public static final android.print.PrintAttributes.MediaSize NA_JUNIOR_LEGAL;
-    field public static final android.print.PrintAttributes.MediaSize NA_LEDGER;
-    field public static final android.print.PrintAttributes.MediaSize NA_LEGAL;
-    field public static final android.print.PrintAttributes.MediaSize NA_LETTER;
-    field public static final android.print.PrintAttributes.MediaSize NA_MONARCH;
-    field public static final android.print.PrintAttributes.MediaSize NA_QUARTO;
-    field public static final android.print.PrintAttributes.MediaSize NA_TABLOID;
-    field public static final android.print.PrintAttributes.MediaSize OM_DAI_PA_KAI;
-    field public static final android.print.PrintAttributes.MediaSize OM_JUURO_KU_KAI;
-    field public static final android.print.PrintAttributes.MediaSize OM_PA_KAI;
-    field public static final android.print.PrintAttributes.MediaSize PRC_1;
-    field public static final android.print.PrintAttributes.MediaSize PRC_10;
-    field public static final android.print.PrintAttributes.MediaSize PRC_16K;
-    field public static final android.print.PrintAttributes.MediaSize PRC_2;
-    field public static final android.print.PrintAttributes.MediaSize PRC_3;
-    field public static final android.print.PrintAttributes.MediaSize PRC_4;
-    field public static final android.print.PrintAttributes.MediaSize PRC_5;
-    field public static final android.print.PrintAttributes.MediaSize PRC_6;
-    field public static final android.print.PrintAttributes.MediaSize PRC_7;
-    field public static final android.print.PrintAttributes.MediaSize PRC_8;
-    field public static final android.print.PrintAttributes.MediaSize PRC_9;
-    field public static final android.print.PrintAttributes.MediaSize ROC_16K;
-    field public static final android.print.PrintAttributes.MediaSize ROC_8K;
-    field public static final android.print.PrintAttributes.MediaSize UNKNOWN_LANDSCAPE;
-    field public static final android.print.PrintAttributes.MediaSize UNKNOWN_PORTRAIT;
-  }
-
-  public static final class PrintAttributes.Resolution {
-    ctor public PrintAttributes.Resolution(@NonNull String, @NonNull String, @IntRange(from=1) int, @IntRange(from=1) int);
-    method @IntRange(from=1) public int getHorizontalDpi();
-    method @NonNull public String getId();
-    method @NonNull public String getLabel();
-    method @IntRange(from=1) public int getVerticalDpi();
-  }
-
-  public abstract class PrintDocumentAdapter {
-    ctor public PrintDocumentAdapter();
-    method public void onFinish();
-    method public abstract void onLayout(android.print.PrintAttributes, android.print.PrintAttributes, android.os.CancellationSignal, android.print.PrintDocumentAdapter.LayoutResultCallback, android.os.Bundle);
-    method public void onStart();
-    method public abstract void onWrite(android.print.PageRange[], android.os.ParcelFileDescriptor, android.os.CancellationSignal, android.print.PrintDocumentAdapter.WriteResultCallback);
-    field public static final String EXTRA_PRINT_PREVIEW = "EXTRA_PRINT_PREVIEW";
-  }
-
-  public abstract static class PrintDocumentAdapter.LayoutResultCallback {
-    method public void onLayoutCancelled();
-    method public void onLayoutFailed(CharSequence);
-    method public void onLayoutFinished(android.print.PrintDocumentInfo, boolean);
-  }
-
-  public abstract static class PrintDocumentAdapter.WriteResultCallback {
-    method public void onWriteCancelled();
-    method public void onWriteFailed(CharSequence);
-    method public void onWriteFinished(android.print.PageRange[]);
-  }
-
-  public final class PrintDocumentInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getContentType();
-    method @IntRange(from=0) public long getDataSize();
-    method @NonNull public String getName();
-    method @IntRange(from=0xffffffff) public int getPageCount();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CONTENT_TYPE_DOCUMENT = 0; // 0x0
-    field public static final int CONTENT_TYPE_PHOTO = 1; // 0x1
-    field public static final int CONTENT_TYPE_UNKNOWN = -1; // 0xffffffff
-    field @NonNull public static final android.os.Parcelable.Creator<android.print.PrintDocumentInfo> CREATOR;
-    field public static final int PAGE_COUNT_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public static final class PrintDocumentInfo.Builder {
-    ctor public PrintDocumentInfo.Builder(@NonNull String);
-    method @NonNull public android.print.PrintDocumentInfo build();
-    method @NonNull public android.print.PrintDocumentInfo.Builder setContentType(int);
-    method @NonNull public android.print.PrintDocumentInfo.Builder setPageCount(@IntRange(from=0xffffffff) int);
-  }
-
-  public final class PrintJob {
-    method public void cancel();
-    method @Nullable public android.print.PrintJobId getId();
-    method @NonNull public android.print.PrintJobInfo getInfo();
-    method public boolean isBlocked();
-    method public boolean isCancelled();
-    method public boolean isCompleted();
-    method public boolean isFailed();
-    method public boolean isQueued();
-    method public boolean isStarted();
-    method public void restart();
-  }
-
-  public final class PrintJobId implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.print.PrintJobId> CREATOR;
-  }
-
-  public final class PrintJobInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAdvancedIntOption(String);
-    method public String getAdvancedStringOption(String);
-    method @NonNull public android.print.PrintAttributes getAttributes();
-    method @IntRange(from=0) public int getCopies();
-    method public long getCreationTime();
-    method @Nullable public android.print.PrintJobId getId();
-    method @NonNull public String getLabel();
-    method @Nullable public android.print.PageRange[] getPages();
-    method @Nullable public android.print.PrinterId getPrinterId();
-    method public int getState();
-    method public boolean hasAdvancedOption(String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.print.PrintJobInfo> CREATOR;
-    field public static final int STATE_BLOCKED = 4; // 0x4
-    field public static final int STATE_CANCELED = 7; // 0x7
-    field public static final int STATE_COMPLETED = 5; // 0x5
-    field public static final int STATE_CREATED = 1; // 0x1
-    field public static final int STATE_FAILED = 6; // 0x6
-    field public static final int STATE_QUEUED = 2; // 0x2
-    field public static final int STATE_STARTED = 3; // 0x3
-  }
-
-  public static final class PrintJobInfo.Builder {
-    ctor public PrintJobInfo.Builder(@Nullable android.print.PrintJobInfo);
-    method @NonNull public android.print.PrintJobInfo build();
-    method public void putAdvancedOption(@NonNull String, @Nullable String);
-    method public void putAdvancedOption(@NonNull String, int);
-    method public void setAttributes(@NonNull android.print.PrintAttributes);
-    method public void setCopies(@IntRange(from=1) int);
-    method public void setPages(@NonNull android.print.PageRange[]);
-  }
-
-  public final class PrintManager {
-    method @NonNull public java.util.List<android.print.PrintJob> getPrintJobs();
-    method @NonNull public android.print.PrintJob print(@NonNull String, @NonNull android.print.PrintDocumentAdapter, @Nullable android.print.PrintAttributes);
-  }
-
-  public final class PrinterCapabilitiesInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getColorModes();
-    method @NonNull public android.print.PrintAttributes getDefaults();
-    method public int getDuplexModes();
-    method @NonNull public java.util.List<android.print.PrintAttributes.MediaSize> getMediaSizes();
-    method @NonNull public android.print.PrintAttributes.Margins getMinMargins();
-    method @NonNull public java.util.List<android.print.PrintAttributes.Resolution> getResolutions();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.print.PrinterCapabilitiesInfo> CREATOR;
-  }
-
-  public static final class PrinterCapabilitiesInfo.Builder {
-    ctor public PrinterCapabilitiesInfo.Builder(@NonNull android.print.PrinterId);
-    method @NonNull public android.print.PrinterCapabilitiesInfo.Builder addMediaSize(@NonNull android.print.PrintAttributes.MediaSize, boolean);
-    method @NonNull public android.print.PrinterCapabilitiesInfo.Builder addResolution(@NonNull android.print.PrintAttributes.Resolution, boolean);
-    method @NonNull public android.print.PrinterCapabilitiesInfo build();
-    method @NonNull public android.print.PrinterCapabilitiesInfo.Builder setColorModes(int, int);
-    method @NonNull public android.print.PrinterCapabilitiesInfo.Builder setDuplexModes(int, int);
-    method @NonNull public android.print.PrinterCapabilitiesInfo.Builder setMinMargins(@NonNull android.print.PrintAttributes.Margins);
-  }
-
-  public final class PrinterId implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public String getLocalId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.print.PrinterId> CREATOR;
-  }
-
-  public final class PrinterInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.print.PrinterCapabilitiesInfo getCapabilities();
-    method @Nullable public String getDescription();
-    method @NonNull public android.print.PrinterId getId();
-    method @NonNull public String getName();
-    method public int getStatus();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.print.PrinterInfo> CREATOR;
-    field public static final int STATUS_BUSY = 2; // 0x2
-    field public static final int STATUS_IDLE = 1; // 0x1
-    field public static final int STATUS_UNAVAILABLE = 3; // 0x3
-  }
-
-  public static final class PrinterInfo.Builder {
-    ctor public PrinterInfo.Builder(@NonNull android.print.PrinterId, @NonNull String, int);
-    ctor public PrinterInfo.Builder(@NonNull android.print.PrinterInfo);
-    method @NonNull public android.print.PrinterInfo build();
-    method @NonNull public android.print.PrinterInfo.Builder setCapabilities(@NonNull android.print.PrinterCapabilitiesInfo);
-    method @NonNull public android.print.PrinterInfo.Builder setDescription(@NonNull String);
-    method @NonNull public android.print.PrinterInfo.Builder setHasCustomPrinterIcon(boolean);
-    method @NonNull public android.print.PrinterInfo.Builder setIconResourceId(@DrawableRes int);
-    method @NonNull public android.print.PrinterInfo.Builder setInfoIntent(@NonNull android.app.PendingIntent);
-    method @NonNull public android.print.PrinterInfo.Builder setName(@NonNull String);
-    method @NonNull public android.print.PrinterInfo.Builder setStatus(int);
-  }
-
-}
-
-package android.print.pdf {
-
-  public class PrintedPdfDocument extends android.graphics.pdf.PdfDocument {
-    ctor public PrintedPdfDocument(@NonNull android.content.Context, @NonNull android.print.PrintAttributes);
-    method @NonNull public android.graphics.Rect getPageContentRect();
-    method @IntRange(from=0) public int getPageHeight();
-    method @IntRange(from=0) public int getPageWidth();
-    method @NonNull public android.graphics.pdf.PdfDocument.Page startPage(@IntRange(from=0) int);
-  }
-
-}
-
-package android.printservice {
-
-  public final class CustomPrinterIconCallback {
-    method public boolean onCustomPrinterIconLoaded(@Nullable android.graphics.drawable.Icon);
-  }
-
-  public final class PrintDocument {
-    method @Nullable public android.os.ParcelFileDescriptor getData();
-    method @NonNull public android.print.PrintDocumentInfo getInfo();
-  }
-
-  public final class PrintJob {
-    method @MainThread public boolean block(@Nullable String);
-    method @MainThread public boolean cancel();
-    method @MainThread public boolean complete();
-    method @MainThread public boolean fail(@Nullable String);
-    method @MainThread public int getAdvancedIntOption(String);
-    method @MainThread public String getAdvancedStringOption(String);
-    method @MainThread @NonNull public android.printservice.PrintDocument getDocument();
-    method @MainThread public android.print.PrintJobId getId();
-    method @MainThread @NonNull public android.print.PrintJobInfo getInfo();
-    method @MainThread @Nullable public String getTag();
-    method @MainThread public boolean hasAdvancedOption(String);
-    method @MainThread public boolean isBlocked();
-    method @MainThread public boolean isCancelled();
-    method @MainThread public boolean isCompleted();
-    method @MainThread public boolean isFailed();
-    method @MainThread public boolean isQueued();
-    method @MainThread public boolean isStarted();
-    method @MainThread public void setProgress(@FloatRange(from=0.0, to=1.0) float);
-    method @MainThread public void setStatus(@Nullable CharSequence);
-    method @MainThread public void setStatus(@StringRes int);
-    method @MainThread public boolean setTag(@NonNull String);
-    method @MainThread public boolean start();
-  }
-
-  public abstract class PrintService extends android.app.Service {
-    ctor public PrintService();
-    method protected final void attachBaseContext(android.content.Context);
-    method @NonNull public final android.print.PrinterId generatePrinterId(String);
-    method public final java.util.List<android.printservice.PrintJob> getActivePrintJobs();
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method protected void onConnected();
-    method @Nullable protected abstract android.printservice.PrinterDiscoverySession onCreatePrinterDiscoverySession();
-    method protected void onDisconnected();
-    method protected abstract void onPrintJobQueued(android.printservice.PrintJob);
-    method protected abstract void onRequestCancelPrintJob(android.printservice.PrintJob);
-    field public static final String EXTRA_CAN_SELECT_PRINTER = "android.printservice.extra.CAN_SELECT_PRINTER";
-    field public static final String EXTRA_PRINTER_INFO = "android.intent.extra.print.EXTRA_PRINTER_INFO";
-    field public static final String EXTRA_PRINT_DOCUMENT_INFO = "android.printservice.extra.PRINT_DOCUMENT_INFO";
-    field public static final String EXTRA_PRINT_JOB_INFO = "android.intent.extra.print.PRINT_JOB_INFO";
-    field public static final String EXTRA_SELECT_PRINTER = "android.printservice.extra.SELECT_PRINTER";
-    field public static final String SERVICE_INTERFACE = "android.printservice.PrintService";
-    field public static final String SERVICE_META_DATA = "android.printservice";
-  }
-
-  public abstract class PrinterDiscoverySession {
-    ctor public PrinterDiscoverySession();
-    method public final void addPrinters(@NonNull java.util.List<android.print.PrinterInfo>);
-    method @NonNull public final java.util.List<android.print.PrinterInfo> getPrinters();
-    method @NonNull public final java.util.List<android.print.PrinterId> getTrackedPrinters();
-    method public final boolean isDestroyed();
-    method public final boolean isPrinterDiscoveryStarted();
-    method public abstract void onDestroy();
-    method public void onRequestCustomPrinterIcon(@NonNull android.print.PrinterId, @NonNull android.os.CancellationSignal, @NonNull android.printservice.CustomPrinterIconCallback);
-    method public abstract void onStartPrinterDiscovery(@NonNull java.util.List<android.print.PrinterId>);
-    method public abstract void onStartPrinterStateTracking(@NonNull android.print.PrinterId);
-    method public abstract void onStopPrinterDiscovery();
-    method public abstract void onStopPrinterStateTracking(@NonNull android.print.PrinterId);
-    method public abstract void onValidatePrinters(@NonNull java.util.List<android.print.PrinterId>);
-    method public final void removePrinters(@NonNull java.util.List<android.print.PrinterId>);
-  }
-
-}
-
-package android.provider {
-
-  public final class AlarmClock {
-    ctor public AlarmClock();
-    field public static final String ACTION_DISMISS_ALARM = "android.intent.action.DISMISS_ALARM";
-    field public static final String ACTION_DISMISS_TIMER = "android.intent.action.DISMISS_TIMER";
-    field public static final String ACTION_SET_ALARM = "android.intent.action.SET_ALARM";
-    field public static final String ACTION_SET_TIMER = "android.intent.action.SET_TIMER";
-    field public static final String ACTION_SHOW_ALARMS = "android.intent.action.SHOW_ALARMS";
-    field public static final String ACTION_SHOW_TIMERS = "android.intent.action.SHOW_TIMERS";
-    field public static final String ACTION_SNOOZE_ALARM = "android.intent.action.SNOOZE_ALARM";
-    field public static final String ALARM_SEARCH_MODE_ALL = "android.all";
-    field public static final String ALARM_SEARCH_MODE_LABEL = "android.label";
-    field public static final String ALARM_SEARCH_MODE_NEXT = "android.next";
-    field public static final String ALARM_SEARCH_MODE_TIME = "android.time";
-    field public static final String EXTRA_ALARM_SEARCH_MODE = "android.intent.extra.alarm.SEARCH_MODE";
-    field public static final String EXTRA_ALARM_SNOOZE_DURATION = "android.intent.extra.alarm.SNOOZE_DURATION";
-    field public static final String EXTRA_DAYS = "android.intent.extra.alarm.DAYS";
-    field public static final String EXTRA_HOUR = "android.intent.extra.alarm.HOUR";
-    field public static final String EXTRA_IS_PM = "android.intent.extra.alarm.IS_PM";
-    field public static final String EXTRA_LENGTH = "android.intent.extra.alarm.LENGTH";
-    field public static final String EXTRA_MESSAGE = "android.intent.extra.alarm.MESSAGE";
-    field public static final String EXTRA_MINUTES = "android.intent.extra.alarm.MINUTES";
-    field public static final String EXTRA_RINGTONE = "android.intent.extra.alarm.RINGTONE";
-    field public static final String EXTRA_SKIP_UI = "android.intent.extra.alarm.SKIP_UI";
-    field public static final String EXTRA_VIBRATE = "android.intent.extra.alarm.VIBRATE";
-    field public static final String VALUE_RINGTONE_SILENT = "silent";
-  }
-
-  public interface BaseColumns {
-    field public static final String _COUNT = "_count";
-    field public static final String _ID = "_id";
-  }
-
-  public class BlockedNumberContract {
-    method public static boolean canCurrentUserBlockNumbers(android.content.Context);
-    method @WorkerThread public static boolean isBlocked(android.content.Context, String);
-    method @WorkerThread public static int unblock(android.content.Context, String);
-    field public static final String AUTHORITY = "com.android.blockednumber";
-    field public static final android.net.Uri AUTHORITY_URI;
-  }
-
-  public static class BlockedNumberContract.BlockedNumbers {
-    field public static final String COLUMN_E164_NUMBER = "e164_number";
-    field public static final String COLUMN_ID = "_id";
-    field public static final String COLUMN_ORIGINAL_NUMBER = "original_number";
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/blocked_number";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/blocked_number";
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  public class Browser {
-    ctor public Browser();
-    method public static final void sendString(android.content.Context, String);
-    field public static final String EXTRA_APPLICATION_ID = "com.android.browser.application_id";
-    field public static final String EXTRA_CREATE_NEW_TAB = "create_new_tab";
-    field public static final String EXTRA_HEADERS = "com.android.browser.headers";
-    field public static final String INITIAL_ZOOM_LEVEL = "browser.initialZoomLevel";
-  }
-
-  public final class CalendarContract {
-    method public static boolean startViewCalendarEventInManagedProfile(@NonNull android.content.Context, long, long, long, boolean, int);
-    field public static final String ACCOUNT_TYPE_LOCAL = "LOCAL";
-    field public static final String ACTION_EVENT_REMINDER = "android.intent.action.EVENT_REMINDER";
-    field public static final String ACTION_HANDLE_CUSTOM_EVENT = "android.provider.calendar.action.HANDLE_CUSTOM_EVENT";
-    field public static final String ACTION_VIEW_MANAGED_PROFILE_CALENDAR_EVENT = "android.provider.calendar.action.VIEW_MANAGED_PROFILE_CALENDAR_EVENT";
-    field public static final String AUTHORITY = "com.android.calendar";
-    field public static final String CALLER_IS_SYNCADAPTER = "caller_is_syncadapter";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String EXTRA_CUSTOM_APP_URI = "customAppUri";
-    field public static final String EXTRA_EVENT_ALL_DAY = "allDay";
-    field public static final String EXTRA_EVENT_BEGIN_TIME = "beginTime";
-    field public static final String EXTRA_EVENT_END_TIME = "endTime";
-    field public static final String EXTRA_EVENT_ID = "id";
-  }
-
-  public static final class CalendarContract.Attendees implements android.provider.BaseColumns android.provider.CalendarContract.AttendeesColumns android.provider.CalendarContract.EventsColumns {
-    method public static android.database.Cursor query(android.content.ContentResolver, long, String[]);
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  protected static interface CalendarContract.AttendeesColumns {
-    field public static final String ATTENDEE_EMAIL = "attendeeEmail";
-    field public static final String ATTENDEE_IDENTITY = "attendeeIdentity";
-    field public static final String ATTENDEE_ID_NAMESPACE = "attendeeIdNamespace";
-    field public static final String ATTENDEE_NAME = "attendeeName";
-    field public static final String ATTENDEE_RELATIONSHIP = "attendeeRelationship";
-    field public static final String ATTENDEE_STATUS = "attendeeStatus";
-    field public static final int ATTENDEE_STATUS_ACCEPTED = 1; // 0x1
-    field public static final int ATTENDEE_STATUS_DECLINED = 2; // 0x2
-    field public static final int ATTENDEE_STATUS_INVITED = 3; // 0x3
-    field public static final int ATTENDEE_STATUS_NONE = 0; // 0x0
-    field public static final int ATTENDEE_STATUS_TENTATIVE = 4; // 0x4
-    field public static final String ATTENDEE_TYPE = "attendeeType";
-    field public static final String EVENT_ID = "event_id";
-    field public static final int RELATIONSHIP_ATTENDEE = 1; // 0x1
-    field public static final int RELATIONSHIP_NONE = 0; // 0x0
-    field public static final int RELATIONSHIP_ORGANIZER = 2; // 0x2
-    field public static final int RELATIONSHIP_PERFORMER = 3; // 0x3
-    field public static final int RELATIONSHIP_SPEAKER = 4; // 0x4
-    field public static final int TYPE_NONE = 0; // 0x0
-    field public static final int TYPE_OPTIONAL = 2; // 0x2
-    field public static final int TYPE_REQUIRED = 1; // 0x1
-    field public static final int TYPE_RESOURCE = 3; // 0x3
-  }
-
-  public static final class CalendarContract.CalendarAlerts implements android.provider.BaseColumns android.provider.CalendarContract.CalendarAlertsColumns android.provider.CalendarContract.CalendarColumns android.provider.CalendarContract.EventsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final android.net.Uri CONTENT_URI_BY_INSTANCE;
-  }
-
-  protected static interface CalendarContract.CalendarAlertsColumns {
-    field public static final String ALARM_TIME = "alarmTime";
-    field public static final String BEGIN = "begin";
-    field public static final String CREATION_TIME = "creationTime";
-    field public static final String DEFAULT_SORT_ORDER = "begin ASC,title ASC";
-    field public static final String END = "end";
-    field public static final String EVENT_ID = "event_id";
-    field public static final String MINUTES = "minutes";
-    field public static final String NOTIFY_TIME = "notifyTime";
-    field public static final String RECEIVED_TIME = "receivedTime";
-    field public static final String STATE = "state";
-    field public static final int STATE_DISMISSED = 2; // 0x2
-    field public static final int STATE_FIRED = 1; // 0x1
-    field public static final int STATE_SCHEDULED = 0; // 0x0
-  }
-
-  public static final class CalendarContract.CalendarCache implements android.provider.CalendarContract.CalendarCacheColumns {
-    field public static final String KEY_TIMEZONE_INSTANCES = "timezoneInstances";
-    field public static final String KEY_TIMEZONE_INSTANCES_PREVIOUS = "timezoneInstancesPrevious";
-    field public static final String KEY_TIMEZONE_TYPE = "timezoneType";
-    field public static final String TIMEZONE_TYPE_AUTO = "auto";
-    field public static final String TIMEZONE_TYPE_HOME = "home";
-    field public static final android.net.Uri URI;
-  }
-
-  protected static interface CalendarContract.CalendarCacheColumns {
-    field public static final String KEY = "key";
-    field public static final String VALUE = "value";
-  }
-
-  protected static interface CalendarContract.CalendarColumns {
-    field public static final String ALLOWED_ATTENDEE_TYPES = "allowedAttendeeTypes";
-    field public static final String ALLOWED_AVAILABILITY = "allowedAvailability";
-    field public static final String ALLOWED_REMINDERS = "allowedReminders";
-    field public static final String CALENDAR_ACCESS_LEVEL = "calendar_access_level";
-    field public static final String CALENDAR_COLOR = "calendar_color";
-    field public static final String CALENDAR_COLOR_KEY = "calendar_color_index";
-    field public static final String CALENDAR_DISPLAY_NAME = "calendar_displayName";
-    field public static final String CALENDAR_TIME_ZONE = "calendar_timezone";
-    field public static final int CAL_ACCESS_CONTRIBUTOR = 500; // 0x1f4
-    field public static final int CAL_ACCESS_EDITOR = 600; // 0x258
-    field public static final int CAL_ACCESS_FREEBUSY = 100; // 0x64
-    field public static final int CAL_ACCESS_NONE = 0; // 0x0
-    field public static final int CAL_ACCESS_OVERRIDE = 400; // 0x190
-    field public static final int CAL_ACCESS_OWNER = 700; // 0x2bc
-    field public static final int CAL_ACCESS_READ = 200; // 0xc8
-    field public static final int CAL_ACCESS_RESPOND = 300; // 0x12c
-    field public static final int CAL_ACCESS_ROOT = 800; // 0x320
-    field public static final String CAN_MODIFY_TIME_ZONE = "canModifyTimeZone";
-    field public static final String CAN_ORGANIZER_RESPOND = "canOrganizerRespond";
-    field public static final String IS_PRIMARY = "isPrimary";
-    field public static final String MAX_REMINDERS = "maxReminders";
-    field public static final String OWNER_ACCOUNT = "ownerAccount";
-    field public static final String SYNC_EVENTS = "sync_events";
-    field public static final String VISIBLE = "visible";
-  }
-
-  public static final class CalendarContract.CalendarEntity implements android.provider.BaseColumns android.provider.CalendarContract.CalendarColumns android.provider.CalendarContract.SyncColumns {
-    method public static android.content.EntityIterator newEntityIterator(android.database.Cursor);
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  protected static interface CalendarContract.CalendarSyncColumns {
-    field public static final String CAL_SYNC1 = "cal_sync1";
-    field public static final String CAL_SYNC10 = "cal_sync10";
-    field public static final String CAL_SYNC2 = "cal_sync2";
-    field public static final String CAL_SYNC3 = "cal_sync3";
-    field public static final String CAL_SYNC4 = "cal_sync4";
-    field public static final String CAL_SYNC5 = "cal_sync5";
-    field public static final String CAL_SYNC6 = "cal_sync6";
-    field public static final String CAL_SYNC7 = "cal_sync7";
-    field public static final String CAL_SYNC8 = "cal_sync8";
-    field public static final String CAL_SYNC9 = "cal_sync9";
-  }
-
-  public static final class CalendarContract.Calendars implements android.provider.BaseColumns android.provider.CalendarContract.CalendarColumns android.provider.CalendarContract.SyncColumns {
-    field public static final String CALENDAR_LOCATION = "calendar_location";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "calendar_displayName";
-    field @NonNull public static final android.net.Uri ENTERPRISE_CONTENT_URI;
-    field public static final String NAME = "name";
-  }
-
-  public static final class CalendarContract.Colors implements android.provider.CalendarContract.ColorsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  protected static interface CalendarContract.ColorsColumns extends android.provider.SyncStateContract.Columns {
-    field public static final String COLOR = "color";
-    field public static final String COLOR_KEY = "color_index";
-    field public static final String COLOR_TYPE = "color_type";
-    field public static final int TYPE_CALENDAR = 0; // 0x0
-    field public static final int TYPE_EVENT = 1; // 0x1
-  }
-
-  public static final class CalendarContract.EventDays implements android.provider.CalendarContract.EventDaysColumns {
-    method public static android.database.Cursor query(android.content.ContentResolver, int, int, String[]);
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  protected static interface CalendarContract.EventDaysColumns {
-    field public static final String ENDDAY = "endDay";
-    field public static final String STARTDAY = "startDay";
-  }
-
-  public static final class CalendarContract.Events implements android.provider.BaseColumns android.provider.CalendarContract.CalendarColumns android.provider.CalendarContract.EventsColumns android.provider.CalendarContract.SyncColumns {
-    field public static final android.net.Uri CONTENT_EXCEPTION_URI;
-    field public static final android.net.Uri CONTENT_URI;
-    field @NonNull public static final android.net.Uri ENTERPRISE_CONTENT_URI;
-  }
-
-  protected static interface CalendarContract.EventsColumns {
-    field public static final int ACCESS_CONFIDENTIAL = 1; // 0x1
-    field public static final int ACCESS_DEFAULT = 0; // 0x0
-    field public static final String ACCESS_LEVEL = "accessLevel";
-    field public static final int ACCESS_PRIVATE = 2; // 0x2
-    field public static final int ACCESS_PUBLIC = 3; // 0x3
-    field public static final String ALL_DAY = "allDay";
-    field public static final String AVAILABILITY = "availability";
-    field public static final int AVAILABILITY_BUSY = 0; // 0x0
-    field public static final int AVAILABILITY_FREE = 1; // 0x1
-    field public static final int AVAILABILITY_TENTATIVE = 2; // 0x2
-    field public static final String CALENDAR_ID = "calendar_id";
-    field public static final String CAN_INVITE_OTHERS = "canInviteOthers";
-    field public static final String CUSTOM_APP_PACKAGE = "customAppPackage";
-    field public static final String CUSTOM_APP_URI = "customAppUri";
-    field public static final String DESCRIPTION = "description";
-    field public static final String DISPLAY_COLOR = "displayColor";
-    field public static final String DTEND = "dtend";
-    field public static final String DTSTART = "dtstart";
-    field public static final String DURATION = "duration";
-    field public static final String EVENT_COLOR = "eventColor";
-    field public static final String EVENT_COLOR_KEY = "eventColor_index";
-    field public static final String EVENT_END_TIMEZONE = "eventEndTimezone";
-    field public static final String EVENT_LOCATION = "eventLocation";
-    field public static final String EVENT_TIMEZONE = "eventTimezone";
-    field public static final String EXDATE = "exdate";
-    field public static final String EXRULE = "exrule";
-    field public static final String GUESTS_CAN_INVITE_OTHERS = "guestsCanInviteOthers";
-    field public static final String GUESTS_CAN_MODIFY = "guestsCanModify";
-    field public static final String GUESTS_CAN_SEE_GUESTS = "guestsCanSeeGuests";
-    field public static final String HAS_ALARM = "hasAlarm";
-    field public static final String HAS_ATTENDEE_DATA = "hasAttendeeData";
-    field public static final String HAS_EXTENDED_PROPERTIES = "hasExtendedProperties";
-    field public static final String IS_ORGANIZER = "isOrganizer";
-    field public static final String LAST_DATE = "lastDate";
-    field public static final String LAST_SYNCED = "lastSynced";
-    field public static final String ORGANIZER = "organizer";
-    field public static final String ORIGINAL_ALL_DAY = "originalAllDay";
-    field public static final String ORIGINAL_ID = "original_id";
-    field public static final String ORIGINAL_INSTANCE_TIME = "originalInstanceTime";
-    field public static final String ORIGINAL_SYNC_ID = "original_sync_id";
-    field public static final String RDATE = "rdate";
-    field public static final String RRULE = "rrule";
-    field public static final String SELF_ATTENDEE_STATUS = "selfAttendeeStatus";
-    field public static final String STATUS = "eventStatus";
-    field public static final int STATUS_CANCELED = 2; // 0x2
-    field public static final int STATUS_CONFIRMED = 1; // 0x1
-    field public static final int STATUS_TENTATIVE = 0; // 0x0
-    field public static final String SYNC_DATA1 = "sync_data1";
-    field public static final String SYNC_DATA10 = "sync_data10";
-    field public static final String SYNC_DATA2 = "sync_data2";
-    field public static final String SYNC_DATA3 = "sync_data3";
-    field public static final String SYNC_DATA4 = "sync_data4";
-    field public static final String SYNC_DATA5 = "sync_data5";
-    field public static final String SYNC_DATA6 = "sync_data6";
-    field public static final String SYNC_DATA7 = "sync_data7";
-    field public static final String SYNC_DATA8 = "sync_data8";
-    field public static final String SYNC_DATA9 = "sync_data9";
-    field public static final String TITLE = "title";
-    field public static final String UID_2445 = "uid2445";
-  }
-
-  public static final class CalendarContract.EventsEntity implements android.provider.BaseColumns android.provider.CalendarContract.EventsColumns android.provider.CalendarContract.SyncColumns {
-    method public static android.content.EntityIterator newEntityIterator(android.database.Cursor, android.content.ContentResolver);
-    method public static android.content.EntityIterator newEntityIterator(android.database.Cursor, android.content.ContentProviderClient);
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  public static final class CalendarContract.ExtendedProperties implements android.provider.BaseColumns android.provider.CalendarContract.EventsColumns android.provider.CalendarContract.ExtendedPropertiesColumns {
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  protected static interface CalendarContract.ExtendedPropertiesColumns {
-    field public static final String EVENT_ID = "event_id";
-    field public static final String NAME = "name";
-    field public static final String VALUE = "value";
-  }
-
-  public static final class CalendarContract.Instances implements android.provider.BaseColumns android.provider.CalendarContract.CalendarColumns android.provider.CalendarContract.EventsColumns {
-    method public static android.database.Cursor query(android.content.ContentResolver, String[], long, long);
-    method public static android.database.Cursor query(android.content.ContentResolver, String[], long, long, String);
-    field public static final String BEGIN = "begin";
-    field public static final android.net.Uri CONTENT_BY_DAY_URI;
-    field public static final android.net.Uri CONTENT_SEARCH_BY_DAY_URI;
-    field public static final android.net.Uri CONTENT_SEARCH_URI;
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String END = "end";
-    field public static final String END_DAY = "endDay";
-    field public static final String END_MINUTE = "endMinute";
-    field @NonNull public static final android.net.Uri ENTERPRISE_CONTENT_BY_DAY_URI;
-    field @NonNull public static final android.net.Uri ENTERPRISE_CONTENT_SEARCH_BY_DAY_URI;
-    field @NonNull public static final android.net.Uri ENTERPRISE_CONTENT_SEARCH_URI;
-    field @NonNull public static final android.net.Uri ENTERPRISE_CONTENT_URI;
-    field public static final String EVENT_ID = "event_id";
-    field public static final String START_DAY = "startDay";
-    field public static final String START_MINUTE = "startMinute";
-  }
-
-  public static final class CalendarContract.Reminders implements android.provider.BaseColumns android.provider.CalendarContract.EventsColumns android.provider.CalendarContract.RemindersColumns {
-    method public static android.database.Cursor query(android.content.ContentResolver, long, String[]);
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  protected static interface CalendarContract.RemindersColumns {
-    field public static final String EVENT_ID = "event_id";
-    field public static final String METHOD = "method";
-    field public static final int METHOD_ALARM = 4; // 0x4
-    field public static final int METHOD_ALERT = 1; // 0x1
-    field public static final int METHOD_DEFAULT = 0; // 0x0
-    field public static final int METHOD_EMAIL = 2; // 0x2
-    field public static final int METHOD_SMS = 3; // 0x3
-    field public static final String MINUTES = "minutes";
-    field public static final int MINUTES_DEFAULT = -1; // 0xffffffff
-  }
-
-  protected static interface CalendarContract.SyncColumns extends android.provider.CalendarContract.CalendarSyncColumns {
-    field public static final String ACCOUNT_NAME = "account_name";
-    field public static final String ACCOUNT_TYPE = "account_type";
-    field public static final String CAN_PARTIALLY_UPDATE = "canPartiallyUpdate";
-    field public static final String DELETED = "deleted";
-    field public static final String DIRTY = "dirty";
-    field public static final String MUTATORS = "mutators";
-    field public static final String _SYNC_ID = "_sync_id";
-  }
-
-  public static final class CalendarContract.SyncState implements android.provider.SyncStateContract.Columns {
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  public class CallLog {
-    ctor public CallLog();
-    field public static final String AUTHORITY = "call_log";
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  public static class CallLog.Calls implements android.provider.BaseColumns {
-    ctor public CallLog.Calls();
-    method public static String getLastOutgoingCall(android.content.Context);
-    field public static final int ANSWERED_EXTERNALLY_TYPE = 7; // 0x7
-    field public static final int BLOCKED_TYPE = 6; // 0x6
-    field public static final String BLOCK_REASON = "block_reason";
-    field public static final int BLOCK_REASON_BLOCKED_NUMBER = 3; // 0x3
-    field public static final int BLOCK_REASON_CALL_SCREENING_SERVICE = 1; // 0x1
-    field public static final int BLOCK_REASON_DIRECT_TO_VOICEMAIL = 2; // 0x2
-    field public static final int BLOCK_REASON_NOT_BLOCKED = 0; // 0x0
-    field public static final int BLOCK_REASON_NOT_IN_CONTACTS = 7; // 0x7
-    field public static final int BLOCK_REASON_PAY_PHONE = 6; // 0x6
-    field public static final int BLOCK_REASON_RESTRICTED_NUMBER = 5; // 0x5
-    field public static final int BLOCK_REASON_UNKNOWN_NUMBER = 4; // 0x4
-    field public static final String CACHED_FORMATTED_NUMBER = "formatted_number";
-    field public static final String CACHED_LOOKUP_URI = "lookup_uri";
-    field public static final String CACHED_MATCHED_NUMBER = "matched_number";
-    field public static final String CACHED_NAME = "name";
-    field public static final String CACHED_NORMALIZED_NUMBER = "normalized_number";
-    field public static final String CACHED_NUMBER_LABEL = "numberlabel";
-    field public static final String CACHED_NUMBER_TYPE = "numbertype";
-    field public static final String CACHED_PHOTO_ID = "photo_id";
-    field public static final String CACHED_PHOTO_URI = "photo_uri";
-    field public static final String CALL_SCREENING_APP_NAME = "call_screening_app_name";
-    field public static final String CALL_SCREENING_COMPONENT_NAME = "call_screening_component_name";
-    field public static final android.net.Uri CONTENT_FILTER_URI;
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/calls";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/calls";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final android.net.Uri CONTENT_URI_WITH_VOICEMAIL;
-    field public static final String COUNTRY_ISO = "countryiso";
-    field public static final String DATA_USAGE = "data_usage";
-    field public static final String DATE = "date";
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-    field public static final String DURATION = "duration";
-    field public static final String EXTRA_CALL_TYPE_FILTER = "android.provider.extra.CALL_TYPE_FILTER";
-    field public static final String FEATURES = "features";
-    field public static final int FEATURES_ASSISTED_DIALING_USED = 16; // 0x10
-    field public static final int FEATURES_HD_CALL = 4; // 0x4
-    field public static final int FEATURES_PULLED_EXTERNALLY = 2; // 0x2
-    field public static final int FEATURES_RTT = 32; // 0x20
-    field public static final int FEATURES_VIDEO = 1; // 0x1
-    field public static final int FEATURES_VOLTE = 64; // 0x40
-    field public static final int FEATURES_WIFI = 8; // 0x8
-    field public static final String GEOCODED_LOCATION = "geocoded_location";
-    field public static final int INCOMING_TYPE = 1; // 0x1
-    field public static final String IS_READ = "is_read";
-    field public static final String LAST_MODIFIED = "last_modified";
-    field public static final String LIMIT_PARAM_KEY = "limit";
-    field public static final int MISSED_TYPE = 3; // 0x3
-    field public static final String NEW = "new";
-    field public static final String NUMBER = "number";
-    field public static final String NUMBER_PRESENTATION = "presentation";
-    field public static final String OFFSET_PARAM_KEY = "offset";
-    field public static final int OUTGOING_TYPE = 2; // 0x2
-    field public static final String PHONE_ACCOUNT_COMPONENT_NAME = "subscription_component_name";
-    field public static final String PHONE_ACCOUNT_ID = "subscription_id";
-    field public static final String POST_DIAL_DIGITS = "post_dial_digits";
-    field public static final int PRESENTATION_ALLOWED = 1; // 0x1
-    field public static final int PRESENTATION_PAYPHONE = 4; // 0x4
-    field public static final int PRESENTATION_RESTRICTED = 2; // 0x2
-    field public static final int PRESENTATION_UNKNOWN = 3; // 0x3
-    field public static final int REJECTED_TYPE = 5; // 0x5
-    field public static final String TRANSCRIPTION = "transcription";
-    field public static final String TYPE = "type";
-    field public static final String VIA_NUMBER = "via_number";
-    field public static final int VOICEMAIL_TYPE = 4; // 0x4
-    field public static final String VOICEMAIL_URI = "voicemail_uri";
-  }
-
-  @Deprecated public class Contacts {
-    field @Deprecated public static final String AUTHORITY = "contacts";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final int KIND_EMAIL = 1; // 0x1
-    field @Deprecated public static final int KIND_IM = 3; // 0x3
-    field @Deprecated public static final int KIND_ORGANIZATION = 4; // 0x4
-    field @Deprecated public static final int KIND_PHONE = 5; // 0x5
-    field @Deprecated public static final int KIND_POSTAL = 2; // 0x2
-  }
-
-  @Deprecated public static final class Contacts.ContactMethods implements android.provider.BaseColumns android.provider.Contacts.ContactMethodsColumns android.provider.Contacts.PeopleColumns {
-    method @Deprecated public void addPostalLocation(android.content.Context, long, double, double);
-    method @Deprecated public static Object decodeImProtocol(String);
-    method @Deprecated public static String encodeCustomImProtocol(String);
-    method @Deprecated public static String encodePredefinedImProtocol(int);
-    method @Deprecated public static CharSequence getDisplayLabel(android.content.Context, int, int, CharSequence);
-    field @Deprecated public static final String CONTENT_EMAIL_ITEM_TYPE = "vnd.android.cursor.item/email";
-    field @Deprecated public static final String CONTENT_EMAIL_TYPE = "vnd.android.cursor.dir/email";
-    field @Deprecated public static final android.net.Uri CONTENT_EMAIL_URI;
-    field @Deprecated public static final String CONTENT_IM_ITEM_TYPE = "vnd.android.cursor.item/jabber-im";
-    field @Deprecated public static final String CONTENT_POSTAL_ITEM_TYPE = "vnd.android.cursor.item/postal-address";
-    field @Deprecated public static final String CONTENT_POSTAL_TYPE = "vnd.android.cursor.dir/postal-address";
-    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact-methods";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "name ASC";
-    field @Deprecated public static final String PERSON_ID = "person";
-    field @Deprecated public static final String POSTAL_LOCATION_LATITUDE = "data";
-    field @Deprecated public static final String POSTAL_LOCATION_LONGITUDE = "aux_data";
-    field @Deprecated public static final int PROTOCOL_AIM = 0; // 0x0
-    field @Deprecated public static final int PROTOCOL_GOOGLE_TALK = 5; // 0x5
-    field @Deprecated public static final int PROTOCOL_ICQ = 6; // 0x6
-    field @Deprecated public static final int PROTOCOL_JABBER = 7; // 0x7
-    field @Deprecated public static final int PROTOCOL_MSN = 1; // 0x1
-    field @Deprecated public static final int PROTOCOL_QQ = 4; // 0x4
-    field @Deprecated public static final int PROTOCOL_SKYPE = 3; // 0x3
-    field @Deprecated public static final int PROTOCOL_YAHOO = 2; // 0x2
-  }
-
-  @Deprecated public static interface Contacts.ContactMethodsColumns {
-    field @Deprecated public static final String AUX_DATA = "aux_data";
-    field @Deprecated public static final String DATA = "data";
-    field @Deprecated public static final String ISPRIMARY = "isprimary";
-    field @Deprecated public static final String KIND = "kind";
-    field @Deprecated public static final String LABEL = "label";
-    field @Deprecated public static final String TYPE = "type";
-    field @Deprecated public static final int TYPE_CUSTOM = 0; // 0x0
-    field @Deprecated public static final int TYPE_HOME = 1; // 0x1
-    field @Deprecated public static final int TYPE_OTHER = 3; // 0x3
-    field @Deprecated public static final int TYPE_WORK = 2; // 0x2
-  }
-
-  @Deprecated public static final class Contacts.Extensions implements android.provider.BaseColumns android.provider.Contacts.ExtensionsColumns {
-    field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_extensions";
-    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact_extensions";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "person, name ASC";
-    field @Deprecated public static final String PERSON_ID = "person";
-  }
-
-  @Deprecated public static interface Contacts.ExtensionsColumns {
-    field @Deprecated public static final String NAME = "name";
-    field @Deprecated public static final String VALUE = "value";
-  }
-
-  @Deprecated public static final class Contacts.GroupMembership implements android.provider.BaseColumns android.provider.Contacts.GroupsColumns {
-    field @Deprecated public static final String CONTENT_DIRECTORY = "groupmembership";
-    field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contactsgroupmembership";
-    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contactsgroupmembership";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "group_id ASC";
-    field @Deprecated public static final String GROUP_ID = "group_id";
-    field @Deprecated public static final String GROUP_SYNC_ACCOUNT = "group_sync_account";
-    field @Deprecated public static final String GROUP_SYNC_ACCOUNT_TYPE = "group_sync_account_type";
-    field @Deprecated public static final String GROUP_SYNC_ID = "group_sync_id";
-    field @Deprecated public static final String PERSON_ID = "person";
-    field @Deprecated public static final android.net.Uri RAW_CONTENT_URI;
-  }
-
-  @Deprecated public static final class Contacts.Groups implements android.provider.BaseColumns android.provider.Contacts.GroupsColumns {
-    field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contactsgroup";
-    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contactsgroup";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "name ASC";
-    field @Deprecated public static final android.net.Uri DELETED_CONTENT_URI;
-    field @Deprecated public static final String GROUP_ANDROID_STARRED = "Starred in Android";
-    field @Deprecated public static final String GROUP_MY_CONTACTS = "Contacts";
-  }
-
-  @Deprecated public static interface Contacts.GroupsColumns {
-    field @Deprecated public static final String NAME = "name";
-    field @Deprecated public static final String NOTES = "notes";
-    field @Deprecated public static final String SHOULD_SYNC = "should_sync";
-    field @Deprecated public static final String SYSTEM_ID = "system_id";
-  }
-
-  @Deprecated public static final class Contacts.Intents {
-    ctor @Deprecated public Contacts.Intents();
-    field @Deprecated public static final String ATTACH_IMAGE = "com.android.contacts.action.ATTACH_IMAGE";
-    field @Deprecated public static final String EXTRA_CREATE_DESCRIPTION = "com.android.contacts.action.CREATE_DESCRIPTION";
-    field @Deprecated public static final String EXTRA_FORCE_CREATE = "com.android.contacts.action.FORCE_CREATE";
-    field @Deprecated public static final String SEARCH_SUGGESTION_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CLICKED";
-    field @Deprecated public static final String SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED";
-    field @Deprecated public static final String SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED";
-    field @Deprecated public static final String SHOW_OR_CREATE_CONTACT = "com.android.contacts.action.SHOW_OR_CREATE_CONTACT";
-  }
-
-  @Deprecated public static final class Contacts.Intents.Insert {
-    ctor @Deprecated public Contacts.Intents.Insert();
-    field @Deprecated public static final String ACTION = "android.intent.action.INSERT";
-    field @Deprecated public static final String COMPANY = "company";
-    field @Deprecated public static final String EMAIL = "email";
-    field @Deprecated public static final String EMAIL_ISPRIMARY = "email_isprimary";
-    field @Deprecated public static final String EMAIL_TYPE = "email_type";
-    field @Deprecated public static final String FULL_MODE = "full_mode";
-    field @Deprecated public static final String IM_HANDLE = "im_handle";
-    field @Deprecated public static final String IM_ISPRIMARY = "im_isprimary";
-    field @Deprecated public static final String IM_PROTOCOL = "im_protocol";
-    field @Deprecated public static final String JOB_TITLE = "job_title";
-    field @Deprecated public static final String NAME = "name";
-    field @Deprecated public static final String NOTES = "notes";
-    field @Deprecated public static final String PHONE = "phone";
-    field @Deprecated public static final String PHONETIC_NAME = "phonetic_name";
-    field @Deprecated public static final String PHONE_ISPRIMARY = "phone_isprimary";
-    field @Deprecated public static final String PHONE_TYPE = "phone_type";
-    field @Deprecated public static final String POSTAL = "postal";
-    field @Deprecated public static final String POSTAL_ISPRIMARY = "postal_isprimary";
-    field @Deprecated public static final String POSTAL_TYPE = "postal_type";
-    field @Deprecated public static final String SECONDARY_EMAIL = "secondary_email";
-    field @Deprecated public static final String SECONDARY_EMAIL_TYPE = "secondary_email_type";
-    field @Deprecated public static final String SECONDARY_PHONE = "secondary_phone";
-    field @Deprecated public static final String SECONDARY_PHONE_TYPE = "secondary_phone_type";
-    field @Deprecated public static final String TERTIARY_EMAIL = "tertiary_email";
-    field @Deprecated public static final String TERTIARY_EMAIL_TYPE = "tertiary_email_type";
-    field @Deprecated public static final String TERTIARY_PHONE = "tertiary_phone";
-    field @Deprecated public static final String TERTIARY_PHONE_TYPE = "tertiary_phone_type";
-  }
-
-  @Deprecated public static final class Contacts.Intents.UI {
-    ctor @Deprecated public Contacts.Intents.UI();
-    field @Deprecated public static final String FILTER_CONTACTS_ACTION = "com.android.contacts.action.FILTER_CONTACTS";
-    field @Deprecated public static final String FILTER_TEXT_EXTRA_KEY = "com.android.contacts.extra.FILTER_TEXT";
-    field @Deprecated public static final String GROUP_NAME_EXTRA_KEY = "com.android.contacts.extra.GROUP";
-    field @Deprecated public static final String LIST_ALL_CONTACTS_ACTION = "com.android.contacts.action.LIST_ALL_CONTACTS";
-    field @Deprecated public static final String LIST_CONTACTS_WITH_PHONES_ACTION = "com.android.contacts.action.LIST_CONTACTS_WITH_PHONES";
-    field @Deprecated public static final String LIST_DEFAULT = "com.android.contacts.action.LIST_DEFAULT";
-    field @Deprecated public static final String LIST_FREQUENT_ACTION = "com.android.contacts.action.LIST_FREQUENT";
-    field @Deprecated public static final String LIST_GROUP_ACTION = "com.android.contacts.action.LIST_GROUP";
-    field @Deprecated public static final String LIST_STARRED_ACTION = "com.android.contacts.action.LIST_STARRED";
-    field @Deprecated public static final String LIST_STREQUENT_ACTION = "com.android.contacts.action.LIST_STREQUENT";
-    field @Deprecated public static final String TITLE_EXTRA_KEY = "com.android.contacts.extra.TITLE_EXTRA";
-  }
-
-  @Deprecated public static interface Contacts.OrganizationColumns {
-    field @Deprecated public static final String COMPANY = "company";
-    field @Deprecated public static final String ISPRIMARY = "isprimary";
-    field @Deprecated public static final String LABEL = "label";
-    field @Deprecated public static final String PERSON_ID = "person";
-    field @Deprecated public static final String TITLE = "title";
-    field @Deprecated public static final String TYPE = "type";
-    field @Deprecated public static final int TYPE_CUSTOM = 0; // 0x0
-    field @Deprecated public static final int TYPE_OTHER = 2; // 0x2
-    field @Deprecated public static final int TYPE_WORK = 1; // 0x1
-  }
-
-  @Deprecated public static final class Contacts.Organizations implements android.provider.BaseColumns android.provider.Contacts.OrganizationColumns {
-    method @Deprecated public static CharSequence getDisplayLabel(android.content.Context, int, CharSequence);
-    field @Deprecated public static final String CONTENT_DIRECTORY = "organizations";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "company, title, isprimary ASC";
-  }
-
-  @Deprecated public static final class Contacts.People implements android.provider.BaseColumns android.provider.Contacts.PeopleColumns android.provider.Contacts.PhonesColumns android.provider.Contacts.PresenceColumns {
-    method @Deprecated public static android.net.Uri addToGroup(android.content.ContentResolver, long, String);
-    method @Deprecated public static android.net.Uri addToGroup(android.content.ContentResolver, long, long);
-    method @Deprecated public static android.net.Uri addToMyContactsGroup(android.content.ContentResolver, long);
-    method @Deprecated public static android.net.Uri createPersonInMyContactsGroup(android.content.ContentResolver, android.content.ContentValues);
-    method @Deprecated public static android.graphics.Bitmap loadContactPhoto(android.content.Context, android.net.Uri, int, android.graphics.BitmapFactory.Options);
-    method @Deprecated public static void markAsContacted(android.content.ContentResolver, long);
-    method @Deprecated public static java.io.InputStream openContactPhotoInputStream(android.content.ContentResolver, android.net.Uri);
-    method @Deprecated public static android.database.Cursor queryGroups(android.content.ContentResolver, long);
-    method @Deprecated public static void setPhotoData(android.content.ContentResolver, android.net.Uri, byte[]);
-    field @Deprecated public static final android.net.Uri CONTENT_FILTER_URI;
-    field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/person";
-    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/person";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "name ASC";
-    field @Deprecated public static final android.net.Uri DELETED_CONTENT_URI;
-    field @Deprecated public static final String PRIMARY_EMAIL_ID = "primary_email";
-    field @Deprecated public static final String PRIMARY_ORGANIZATION_ID = "primary_organization";
-    field @Deprecated public static final String PRIMARY_PHONE_ID = "primary_phone";
-  }
-
-  @Deprecated public static final class Contacts.People.ContactMethods implements android.provider.BaseColumns android.provider.Contacts.ContactMethodsColumns android.provider.Contacts.PeopleColumns {
-    field @Deprecated public static final String CONTENT_DIRECTORY = "contact_methods";
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "data ASC";
-  }
-
-  @Deprecated public static class Contacts.People.Extensions implements android.provider.BaseColumns android.provider.Contacts.ExtensionsColumns {
-    field @Deprecated public static final String CONTENT_DIRECTORY = "extensions";
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "name ASC";
-    field @Deprecated public static final String PERSON_ID = "person";
-  }
-
-  @Deprecated public static final class Contacts.People.Phones implements android.provider.BaseColumns android.provider.Contacts.PeopleColumns android.provider.Contacts.PhonesColumns {
-    field @Deprecated public static final String CONTENT_DIRECTORY = "phones";
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "number ASC";
-  }
-
-  @Deprecated public static interface Contacts.PeopleColumns {
-    field @Deprecated public static final String CUSTOM_RINGTONE = "custom_ringtone";
-    field @Deprecated public static final String DISPLAY_NAME = "display_name";
-    field @Deprecated public static final String LAST_TIME_CONTACTED = "last_time_contacted";
-    field @Deprecated public static final String NAME = "name";
-    field @Deprecated public static final String NOTES = "notes";
-    field @Deprecated public static final String PHONETIC_NAME = "phonetic_name";
-    field @Deprecated public static final String PHOTO_VERSION = "photo_version";
-    field @Deprecated public static final String SEND_TO_VOICEMAIL = "send_to_voicemail";
-    field @Deprecated public static final String STARRED = "starred";
-    field @Deprecated public static final String TIMES_CONTACTED = "times_contacted";
-  }
-
-  @Deprecated public static final class Contacts.Phones implements android.provider.BaseColumns android.provider.Contacts.PeopleColumns android.provider.Contacts.PhonesColumns {
-    method @Deprecated public static CharSequence getDisplayLabel(android.content.Context, int, CharSequence, CharSequence[]);
-    method @Deprecated public static CharSequence getDisplayLabel(android.content.Context, int, CharSequence);
-    field @Deprecated public static final android.net.Uri CONTENT_FILTER_URL;
-    field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/phone";
-    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/phone";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "name ASC";
-    field @Deprecated public static final String PERSON_ID = "person";
-  }
-
-  @Deprecated public static interface Contacts.PhonesColumns {
-    field @Deprecated public static final String ISPRIMARY = "isprimary";
-    field @Deprecated public static final String LABEL = "label";
-    field @Deprecated public static final String NUMBER = "number";
-    field @Deprecated public static final String NUMBER_KEY = "number_key";
-    field @Deprecated public static final String TYPE = "type";
-    field @Deprecated public static final int TYPE_CUSTOM = 0; // 0x0
-    field @Deprecated public static final int TYPE_FAX_HOME = 5; // 0x5
-    field @Deprecated public static final int TYPE_FAX_WORK = 4; // 0x4
-    field @Deprecated public static final int TYPE_HOME = 1; // 0x1
-    field @Deprecated public static final int TYPE_MOBILE = 2; // 0x2
-    field @Deprecated public static final int TYPE_OTHER = 7; // 0x7
-    field @Deprecated public static final int TYPE_PAGER = 6; // 0x6
-    field @Deprecated public static final int TYPE_WORK = 3; // 0x3
-  }
-
-  @Deprecated public static final class Contacts.Photos implements android.provider.BaseColumns android.provider.Contacts.PhotosColumns {
-    field @Deprecated public static final String CONTENT_DIRECTORY = "photo";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "person ASC";
-  }
-
-  @Deprecated public static interface Contacts.PhotosColumns {
-    field @Deprecated public static final String DATA = "data";
-    field @Deprecated public static final String DOWNLOAD_REQUIRED = "download_required";
-    field @Deprecated public static final String EXISTS_ON_SERVER = "exists_on_server";
-    field @Deprecated public static final String LOCAL_VERSION = "local_version";
-    field @Deprecated public static final String PERSON_ID = "person";
-    field @Deprecated public static final String SYNC_ERROR = "sync_error";
-  }
-
-  @Deprecated public static interface Contacts.PresenceColumns {
-    field @Deprecated public static final int AVAILABLE = 5; // 0x5
-    field @Deprecated public static final int AWAY = 2; // 0x2
-    field @Deprecated public static final int DO_NOT_DISTURB = 4; // 0x4
-    field @Deprecated public static final int IDLE = 3; // 0x3
-    field @Deprecated public static final String IM_ACCOUNT = "im_account";
-    field @Deprecated public static final String IM_HANDLE = "im_handle";
-    field @Deprecated public static final String IM_PROTOCOL = "im_protocol";
-    field @Deprecated public static final int INVISIBLE = 1; // 0x1
-    field @Deprecated public static final int OFFLINE = 0; // 0x0
-    field @Deprecated public static final String PRESENCE_CUSTOM_STATUS = "status";
-    field @Deprecated public static final String PRESENCE_STATUS = "mode";
-    field @Deprecated public static final String PRIORITY = "priority";
-  }
-
-  @Deprecated public static final class Contacts.Settings implements android.provider.BaseColumns android.provider.Contacts.SettingsColumns {
-    method @Deprecated public static String getSetting(android.content.ContentResolver, String, String);
-    method @Deprecated public static void setSetting(android.content.ContentResolver, String, String, String);
-    field @Deprecated public static final String CONTENT_DIRECTORY = "settings";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String DEFAULT_SORT_ORDER = "key ASC";
-    field @Deprecated public static final String SYNC_EVERYTHING = "syncEverything";
-  }
-
-  @Deprecated public static interface Contacts.SettingsColumns {
-    field @Deprecated public static final String KEY = "key";
-    field @Deprecated public static final String VALUE = "value";
-    field @Deprecated public static final String _SYNC_ACCOUNT = "_sync_account";
-    field @Deprecated public static final String _SYNC_ACCOUNT_TYPE = "_sync_account_type";
-  }
-
-  public final class ContactsContract {
-    ctor public ContactsContract();
-    method public static boolean isProfileId(long);
-    field public static final String AUTHORITY = "com.android.contacts";
-    field public static final android.net.Uri AUTHORITY_URI;
-    field public static final String CALLER_IS_SYNCADAPTER = "caller_is_syncadapter";
-    field public static final String DEFERRED_SNIPPETING = "deferred_snippeting";
-    field public static final String DEFERRED_SNIPPETING_QUERY = "deferred_snippeting_query";
-    field public static final String DIRECTORY_PARAM_KEY = "directory";
-    field public static final String LIMIT_PARAM_KEY = "limit";
-    field public static final String PRIMARY_ACCOUNT_NAME = "name_for_primary_account";
-    field public static final String PRIMARY_ACCOUNT_TYPE = "type_for_primary_account";
-    field public static final String REMOVE_DUPLICATE_ENTRIES = "remove_duplicate_entries";
-    field public static final String STREQUENT_PHONE_ONLY = "strequent_phone_only";
-  }
-
-  public static final class ContactsContract.AggregationExceptions implements android.provider.BaseColumns {
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/aggregation_exception";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/aggregation_exception";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String RAW_CONTACT_ID1 = "raw_contact_id1";
-    field public static final String RAW_CONTACT_ID2 = "raw_contact_id2";
-    field public static final String TYPE = "type";
-    field public static final int TYPE_AUTOMATIC = 0; // 0x0
-    field public static final int TYPE_KEEP_SEPARATE = 2; // 0x2
-    field public static final int TYPE_KEEP_TOGETHER = 1; // 0x1
-  }
-
-  protected static interface ContactsContract.BaseSyncColumns {
-    field public static final String SYNC1 = "sync1";
-    field public static final String SYNC2 = "sync2";
-    field public static final String SYNC3 = "sync3";
-    field public static final String SYNC4 = "sync4";
-  }
-
-  public static final class ContactsContract.CommonDataKinds {
-  }
-
-  public static interface ContactsContract.CommonDataKinds.BaseTypes {
-    field public static final int TYPE_CUSTOM = 0; // 0x0
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Callable implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    ctor public ContactsContract.CommonDataKinds.Callable();
-    field public static final android.net.Uri CONTENT_FILTER_URI;
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final android.net.Uri ENTERPRISE_CONTENT_FILTER_URI;
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-  }
-
-  protected static interface ContactsContract.CommonDataKinds.CommonColumns extends android.provider.ContactsContract.CommonDataKinds.BaseTypes {
-    field public static final String DATA = "data1";
-    field public static final String LABEL = "data3";
-    field public static final String TYPE = "data2";
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Contactables implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    ctor public ContactsContract.CommonDataKinds.Contactables();
-    field public static final android.net.Uri CONTENT_FILTER_URI;
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String VISIBLE_CONTACTS_ONLY = "visible_contacts_only";
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Email implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
-    method public static int getTypeLabelResource(int);
-    field public static final String ADDRESS = "data1";
-    field public static final android.net.Uri CONTENT_FILTER_URI;
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/email_v2";
-    field public static final android.net.Uri CONTENT_LOOKUP_URI;
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/email_v2";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DISPLAY_NAME = "data4";
-    field public static final android.net.Uri ENTERPRISE_CONTENT_FILTER_URI;
-    field public static final android.net.Uri ENTERPRISE_CONTENT_LOOKUP_URI;
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final int TYPE_HOME = 1; // 0x1
-    field public static final int TYPE_MOBILE = 4; // 0x4
-    field public static final int TYPE_OTHER = 3; // 0x3
-    field public static final int TYPE_WORK = 2; // 0x2
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Event implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
-    method public static int getTypeResource(Integer);
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_event";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String START_DATE = "data1";
-    field public static final int TYPE_ANNIVERSARY = 1; // 0x1
-    field public static final int TYPE_BIRTHDAY = 3; // 0x3
-    field public static final int TYPE_OTHER = 2; // 0x2
-  }
-
-  public static final class ContactsContract.CommonDataKinds.GroupMembership implements android.provider.ContactsContract.DataColumnsWithJoins {
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/group_membership";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String GROUP_ROW_ID = "data1";
-    field public static final String GROUP_SOURCE_ID = "group_sourceid";
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Identity implements android.provider.ContactsContract.DataColumnsWithJoins {
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/identity";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String IDENTITY = "data1";
-    field public static final String NAMESPACE = "data2";
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Im implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    method public static CharSequence getProtocolLabel(android.content.res.Resources, int, CharSequence);
-    method public static int getProtocolLabelResource(int);
-    method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
-    method public static int getTypeLabelResource(int);
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/im";
-    field public static final String CUSTOM_PROTOCOL = "data6";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String PROTOCOL = "data5";
-    field public static final int PROTOCOL_AIM = 0; // 0x0
-    field public static final int PROTOCOL_CUSTOM = -1; // 0xffffffff
-    field public static final int PROTOCOL_GOOGLE_TALK = 5; // 0x5
-    field public static final int PROTOCOL_ICQ = 6; // 0x6
-    field public static final int PROTOCOL_JABBER = 7; // 0x7
-    field public static final int PROTOCOL_MSN = 1; // 0x1
-    field public static final int PROTOCOL_NETMEETING = 8; // 0x8
-    field public static final int PROTOCOL_QQ = 4; // 0x4
-    field public static final int PROTOCOL_SKYPE = 3; // 0x3
-    field public static final int PROTOCOL_YAHOO = 2; // 0x2
-    field public static final int TYPE_HOME = 1; // 0x1
-    field public static final int TYPE_OTHER = 3; // 0x3
-    field public static final int TYPE_WORK = 2; // 0x2
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Nickname implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/nickname";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String NAME = "data1";
-    field public static final int TYPE_DEFAULT = 1; // 0x1
-    field public static final int TYPE_INITIALS = 5; // 0x5
-    field public static final int TYPE_MAIDEN_NAME = 3; // 0x3
-    field @Deprecated public static final int TYPE_MAINDEN_NAME = 3; // 0x3
-    field public static final int TYPE_OTHER_NAME = 2; // 0x2
-    field public static final int TYPE_SHORT_NAME = 4; // 0x4
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Note implements android.provider.ContactsContract.DataColumnsWithJoins {
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/note";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String NOTE = "data1";
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Organization implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
-    method public static int getTypeLabelResource(int);
-    field public static final String COMPANY = "data1";
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/organization";
-    field public static final String DEPARTMENT = "data5";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String JOB_DESCRIPTION = "data6";
-    field public static final String OFFICE_LOCATION = "data9";
-    field public static final String PHONETIC_NAME = "data8";
-    field public static final String PHONETIC_NAME_STYLE = "data10";
-    field public static final String SYMBOL = "data7";
-    field public static final String TITLE = "data4";
-    field public static final int TYPE_OTHER = 2; // 0x2
-    field public static final int TYPE_WORK = 1; // 0x1
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Phone implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
-    method public static int getTypeLabelResource(int);
-    field public static final android.net.Uri CONTENT_FILTER_URI;
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/phone_v2";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/phone_v2";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final android.net.Uri ENTERPRISE_CONTENT_FILTER_URI;
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String NORMALIZED_NUMBER = "data4";
-    field public static final String NUMBER = "data1";
-    field public static final String SEARCH_DISPLAY_NAME_KEY = "search_display_name";
-    field public static final String SEARCH_PHONE_NUMBER_KEY = "search_phone_number";
-    field public static final int TYPE_ASSISTANT = 19; // 0x13
-    field public static final int TYPE_CALLBACK = 8; // 0x8
-    field public static final int TYPE_CAR = 9; // 0x9
-    field public static final int TYPE_COMPANY_MAIN = 10; // 0xa
-    field public static final int TYPE_FAX_HOME = 5; // 0x5
-    field public static final int TYPE_FAX_WORK = 4; // 0x4
-    field public static final int TYPE_HOME = 1; // 0x1
-    field public static final int TYPE_ISDN = 11; // 0xb
-    field public static final int TYPE_MAIN = 12; // 0xc
-    field public static final int TYPE_MMS = 20; // 0x14
-    field public static final int TYPE_MOBILE = 2; // 0x2
-    field public static final int TYPE_OTHER = 7; // 0x7
-    field public static final int TYPE_OTHER_FAX = 13; // 0xd
-    field public static final int TYPE_PAGER = 6; // 0x6
-    field public static final int TYPE_RADIO = 14; // 0xe
-    field public static final int TYPE_TELEX = 15; // 0xf
-    field public static final int TYPE_TTY_TDD = 16; // 0x10
-    field public static final int TYPE_WORK = 3; // 0x3
-    field public static final int TYPE_WORK_MOBILE = 17; // 0x11
-    field public static final int TYPE_WORK_PAGER = 18; // 0x12
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Photo implements android.provider.ContactsContract.DataColumnsWithJoins {
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/photo";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String PHOTO = "data15";
-    field public static final String PHOTO_FILE_ID = "data14";
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Relation implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
-    method public static int getTypeLabelResource(int);
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/relation";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String NAME = "data1";
-    field public static final int TYPE_ASSISTANT = 1; // 0x1
-    field public static final int TYPE_BROTHER = 2; // 0x2
-    field public static final int TYPE_CHILD = 3; // 0x3
-    field public static final int TYPE_DOMESTIC_PARTNER = 4; // 0x4
-    field public static final int TYPE_FATHER = 5; // 0x5
-    field public static final int TYPE_FRIEND = 6; // 0x6
-    field public static final int TYPE_MANAGER = 7; // 0x7
-    field public static final int TYPE_MOTHER = 8; // 0x8
-    field public static final int TYPE_PARENT = 9; // 0x9
-    field public static final int TYPE_PARTNER = 10; // 0xa
-    field public static final int TYPE_REFERRED_BY = 11; // 0xb
-    field public static final int TYPE_RELATIVE = 12; // 0xc
-    field public static final int TYPE_SISTER = 13; // 0xd
-    field public static final int TYPE_SPOUSE = 14; // 0xe
-  }
-
-  public static final class ContactsContract.CommonDataKinds.SipAddress implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
-    method public static int getTypeLabelResource(int);
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/sip_address";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String SIP_ADDRESS = "data1";
-    field public static final int TYPE_HOME = 1; // 0x1
-    field public static final int TYPE_OTHER = 3; // 0x3
-    field public static final int TYPE_WORK = 2; // 0x2
-  }
-
-  public static final class ContactsContract.CommonDataKinds.StructuredName implements android.provider.ContactsContract.DataColumnsWithJoins {
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/name";
-    field public static final String DISPLAY_NAME = "data1";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String FAMILY_NAME = "data3";
-    field public static final String FULL_NAME_STYLE = "data10";
-    field public static final String GIVEN_NAME = "data2";
-    field public static final String MIDDLE_NAME = "data5";
-    field public static final String PHONETIC_FAMILY_NAME = "data9";
-    field public static final String PHONETIC_GIVEN_NAME = "data7";
-    field public static final String PHONETIC_MIDDLE_NAME = "data8";
-    field public static final String PHONETIC_NAME_STYLE = "data11";
-    field public static final String PREFIX = "data4";
-    field public static final String SUFFIX = "data6";
-  }
-
-  public static final class ContactsContract.CommonDataKinds.StructuredPostal implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    method public static CharSequence getTypeLabel(android.content.res.Resources, int, CharSequence);
-    method public static int getTypeLabelResource(int);
-    field public static final String CITY = "data7";
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/postal-address_v2";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/postal-address_v2";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String COUNTRY = "data10";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String FORMATTED_ADDRESS = "data1";
-    field public static final String NEIGHBORHOOD = "data6";
-    field public static final String POBOX = "data5";
-    field public static final String POSTCODE = "data9";
-    field public static final String REGION = "data8";
-    field public static final String STREET = "data4";
-    field public static final int TYPE_HOME = 1; // 0x1
-    field public static final int TYPE_OTHER = 3; // 0x3
-    field public static final int TYPE_WORK = 2; // 0x2
-  }
-
-  public static final class ContactsContract.CommonDataKinds.Website implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/website";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final int TYPE_BLOG = 2; // 0x2
-    field public static final int TYPE_FTP = 6; // 0x6
-    field public static final int TYPE_HOME = 4; // 0x4
-    field public static final int TYPE_HOMEPAGE = 1; // 0x1
-    field public static final int TYPE_OTHER = 7; // 0x7
-    field public static final int TYPE_PROFILE = 3; // 0x3
-    field public static final int TYPE_WORK = 5; // 0x5
-    field public static final String URL = "data1";
-  }
-
-  protected static interface ContactsContract.ContactNameColumns {
-    field public static final String DISPLAY_NAME_ALTERNATIVE = "display_name_alt";
-    field public static final String DISPLAY_NAME_PRIMARY = "display_name";
-    field public static final String DISPLAY_NAME_SOURCE = "display_name_source";
-    field public static final String PHONETIC_NAME = "phonetic_name";
-    field public static final String PHONETIC_NAME_STYLE = "phonetic_name_style";
-    field public static final String SORT_KEY_ALTERNATIVE = "sort_key_alt";
-    field public static final String SORT_KEY_PRIMARY = "sort_key";
-  }
-
-  protected static interface ContactsContract.ContactOptionsColumns {
-    field public static final String CUSTOM_RINGTONE = "custom_ringtone";
-    field @Deprecated public static final String LAST_TIME_CONTACTED = "last_time_contacted";
-    field public static final String PINNED = "pinned";
-    field public static final String SEND_TO_VOICEMAIL = "send_to_voicemail";
-    field public static final String STARRED = "starred";
-    field @Deprecated public static final String TIMES_CONTACTED = "times_contacted";
-  }
-
-  protected static interface ContactsContract.ContactStatusColumns {
-    field public static final String CONTACT_CHAT_CAPABILITY = "contact_chat_capability";
-    field public static final String CONTACT_PRESENCE = "contact_presence";
-    field public static final String CONTACT_STATUS = "contact_status";
-    field public static final String CONTACT_STATUS_ICON = "contact_status_icon";
-    field public static final String CONTACT_STATUS_LABEL = "contact_status_label";
-    field public static final String CONTACT_STATUS_RES_PACKAGE = "contact_status_res_package";
-    field public static final String CONTACT_STATUS_TIMESTAMP = "contact_status_ts";
-  }
-
-  public static class ContactsContract.Contacts implements android.provider.BaseColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.ContactsColumns {
-    method public static android.net.Uri getLookupUri(android.content.ContentResolver, android.net.Uri);
-    method public static android.net.Uri getLookupUri(long, String);
-    method public static boolean isEnterpriseContactId(long);
-    method public static android.net.Uri lookupContact(android.content.ContentResolver, android.net.Uri);
-    method @Deprecated public static void markAsContacted(android.content.ContentResolver, long);
-    method public static java.io.InputStream openContactPhotoInputStream(android.content.ContentResolver, android.net.Uri, boolean);
-    method public static java.io.InputStream openContactPhotoInputStream(android.content.ContentResolver, android.net.Uri);
-    field public static final android.net.Uri CONTENT_FILTER_URI;
-    field @Deprecated public static final android.net.Uri CONTENT_FREQUENT_URI;
-    field public static final android.net.Uri CONTENT_GROUP_URI;
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact";
-    field public static final android.net.Uri CONTENT_LOOKUP_URI;
-    field public static final android.net.Uri CONTENT_MULTI_VCARD_URI;
-    field public static final android.net.Uri CONTENT_STREQUENT_FILTER_URI;
-    field public static final android.net.Uri CONTENT_STREQUENT_URI;
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String CONTENT_VCARD_TYPE = "text/x-vcard";
-    field public static final android.net.Uri CONTENT_VCARD_URI;
-    field public static final android.net.Uri ENTERPRISE_CONTENT_FILTER_URI;
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String QUERY_PARAMETER_VCARD_NO_PHOTO = "no_photo";
-  }
-
-  public static final class ContactsContract.Contacts.AggregationSuggestions implements android.provider.BaseColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.ContactsColumns {
-    field public static final String CONTENT_DIRECTORY = "suggestions";
-  }
-
-  public static final class ContactsContract.Contacts.AggregationSuggestions.Builder {
-    ctor public ContactsContract.Contacts.AggregationSuggestions.Builder();
-    method public android.provider.ContactsContract.Contacts.AggregationSuggestions.Builder addNameParameter(String);
-    method public android.net.Uri build();
-    method public android.provider.ContactsContract.Contacts.AggregationSuggestions.Builder setContactId(long);
-    method public android.provider.ContactsContract.Contacts.AggregationSuggestions.Builder setLimit(int);
-  }
-
-  public static final class ContactsContract.Contacts.Data implements android.provider.BaseColumns android.provider.ContactsContract.DataColumns {
-    field public static final String CONTENT_DIRECTORY = "data";
-  }
-
-  public static final class ContactsContract.Contacts.Entity implements android.provider.BaseColumns android.provider.ContactsContract.BaseSyncColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.ContactsColumns android.provider.ContactsContract.DataColumns android.provider.ContactsContract.DataUsageStatColumns android.provider.ContactsContract.RawContactsColumns android.provider.ContactsContract.StatusColumns android.provider.ContactsContract.SyncColumns {
-    field public static final String CONTENT_DIRECTORY = "entities";
-    field public static final String DATA_ID = "data_id";
-    field public static final String RAW_CONTACT_ID = "raw_contact_id";
-  }
-
-  public static final class ContactsContract.Contacts.Photo implements android.provider.BaseColumns android.provider.ContactsContract.DataColumnsWithJoins {
-    field public static final String CONTENT_DIRECTORY = "photo";
-    field public static final String DISPLAY_PHOTO = "display_photo";
-    field public static final String PHOTO = "data15";
-    field public static final String PHOTO_FILE_ID = "data14";
-  }
-
-  protected static interface ContactsContract.ContactsColumns {
-    field public static final String CONTACT_LAST_UPDATED_TIMESTAMP = "contact_last_updated_timestamp";
-    field public static final String DISPLAY_NAME = "display_name";
-    field public static final String HAS_PHONE_NUMBER = "has_phone_number";
-    field public static final String IN_DEFAULT_DIRECTORY = "in_default_directory";
-    field public static final String IN_VISIBLE_GROUP = "in_visible_group";
-    field public static final String IS_USER_PROFILE = "is_user_profile";
-    field public static final String LOOKUP_KEY = "lookup";
-    field public static final String NAME_RAW_CONTACT_ID = "name_raw_contact_id";
-    field public static final String PHOTO_FILE_ID = "photo_file_id";
-    field public static final String PHOTO_ID = "photo_id";
-    field public static final String PHOTO_THUMBNAIL_URI = "photo_thumb_uri";
-    field public static final String PHOTO_URI = "photo_uri";
-  }
-
-  public static final class ContactsContract.Data implements android.provider.ContactsContract.DataColumnsWithJoins {
-    method public static android.net.Uri getContactLookupUri(android.content.ContentResolver, android.net.Uri);
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/data";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX = "android.provider.extra.ADDRESS_BOOK_INDEX";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_COUNTS = "android.provider.extra.ADDRESS_BOOK_INDEX_COUNTS";
-    field public static final String EXTRA_ADDRESS_BOOK_INDEX_TITLES = "android.provider.extra.ADDRESS_BOOK_INDEX_TITLES";
-    field public static final String VISIBLE_CONTACTS_ONLY = "visible_contacts_only";
-  }
-
-  protected static interface ContactsContract.DataColumns {
-    field public static final String CARRIER_PRESENCE = "carrier_presence";
-    field public static final int CARRIER_PRESENCE_VT_CAPABLE = 1; // 0x1
-    field public static final String DATA1 = "data1";
-    field public static final String DATA10 = "data10";
-    field public static final String DATA11 = "data11";
-    field public static final String DATA12 = "data12";
-    field public static final String DATA13 = "data13";
-    field public static final String DATA14 = "data14";
-    field public static final String DATA15 = "data15";
-    field public static final String DATA2 = "data2";
-    field public static final String DATA3 = "data3";
-    field public static final String DATA4 = "data4";
-    field public static final String DATA5 = "data5";
-    field public static final String DATA6 = "data6";
-    field public static final String DATA7 = "data7";
-    field public static final String DATA8 = "data8";
-    field public static final String DATA9 = "data9";
-    field public static final String DATA_VERSION = "data_version";
-    field public static final String IS_PRIMARY = "is_primary";
-    field public static final String IS_READ_ONLY = "is_read_only";
-    field public static final String IS_SUPER_PRIMARY = "is_super_primary";
-    field public static final String MIMETYPE = "mimetype";
-    field public static final String PREFERRED_PHONE_ACCOUNT_COMPONENT_NAME = "preferred_phone_account_component_name";
-    field public static final String PREFERRED_PHONE_ACCOUNT_ID = "preferred_phone_account_id";
-    field public static final String RAW_CONTACT_ID = "raw_contact_id";
-    field public static final String RES_PACKAGE = "res_package";
-    field public static final String SYNC1 = "data_sync1";
-    field public static final String SYNC2 = "data_sync2";
-    field public static final String SYNC3 = "data_sync3";
-    field public static final String SYNC4 = "data_sync4";
-  }
-
-  protected static interface ContactsContract.DataColumnsWithJoins extends android.provider.BaseColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.ContactsColumns android.provider.ContactsContract.DataColumns android.provider.ContactsContract.DataUsageStatColumns android.provider.ContactsContract.RawContactsColumns android.provider.ContactsContract.StatusColumns {
-  }
-
-  @Deprecated public static final class ContactsContract.DataUsageFeedback {
-    ctor @Deprecated public ContactsContract.DataUsageFeedback();
-    field @Deprecated public static final android.net.Uri DELETE_USAGE_URI;
-    field @Deprecated public static final android.net.Uri FEEDBACK_URI;
-    field @Deprecated public static final String USAGE_TYPE = "type";
-    field @Deprecated public static final String USAGE_TYPE_CALL = "call";
-    field @Deprecated public static final String USAGE_TYPE_LONG_TEXT = "long_text";
-    field @Deprecated public static final String USAGE_TYPE_SHORT_TEXT = "short_text";
-  }
-
-  protected static interface ContactsContract.DataUsageStatColumns {
-    field @Deprecated public static final String LAST_TIME_USED = "last_time_used";
-    field @Deprecated public static final String TIMES_USED = "times_used";
-  }
-
-  public static final class ContactsContract.DeletedContacts implements android.provider.ContactsContract.DeletedContactsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final long DAYS_KEPT_MILLISECONDS = 2592000000L; // 0x9a7ec800L
-  }
-
-  protected static interface ContactsContract.DeletedContactsColumns {
-    field public static final String CONTACT_DELETED_TIMESTAMP = "contact_deleted_timestamp";
-    field public static final String CONTACT_ID = "contact_id";
-  }
-
-  public static final class ContactsContract.Directory implements android.provider.BaseColumns {
-    method public static boolean isEnterpriseDirectoryId(long);
-    method public static boolean isRemoteDirectoryId(long);
-    method public static void notifyDirectoryChange(android.content.ContentResolver);
-    field public static final String ACCOUNT_NAME = "accountName";
-    field public static final String ACCOUNT_TYPE = "accountType";
-    field public static final String CALLER_PACKAGE_PARAM_KEY = "callerPackage";
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_directory";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact_directories";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final long DEFAULT = 0L; // 0x0L
-    field public static final String DIRECTORY_AUTHORITY = "authority";
-    field public static final String DISPLAY_NAME = "displayName";
-    field public static final android.net.Uri ENTERPRISE_CONTENT_URI;
-    field public static final long ENTERPRISE_DEFAULT = 1000000000L; // 0x3b9aca00L
-    field public static final long ENTERPRISE_LOCAL_INVISIBLE = 1000000001L; // 0x3b9aca01L
-    field public static final String EXPORT_SUPPORT = "exportSupport";
-    field public static final int EXPORT_SUPPORT_ANY_ACCOUNT = 2; // 0x2
-    field public static final int EXPORT_SUPPORT_NONE = 0; // 0x0
-    field public static final int EXPORT_SUPPORT_SAME_ACCOUNT_ONLY = 1; // 0x1
-    field public static final long LOCAL_INVISIBLE = 1L; // 0x1L
-    field public static final String PACKAGE_NAME = "packageName";
-    field public static final String PHOTO_SUPPORT = "photoSupport";
-    field public static final int PHOTO_SUPPORT_FULL = 3; // 0x3
-    field public static final int PHOTO_SUPPORT_FULL_SIZE_ONLY = 2; // 0x2
-    field public static final int PHOTO_SUPPORT_NONE = 0; // 0x0
-    field public static final int PHOTO_SUPPORT_THUMBNAIL_ONLY = 1; // 0x1
-    field public static final String SHORTCUT_SUPPORT = "shortcutSupport";
-    field public static final int SHORTCUT_SUPPORT_DATA_ITEMS_ONLY = 1; // 0x1
-    field public static final int SHORTCUT_SUPPORT_FULL = 2; // 0x2
-    field public static final int SHORTCUT_SUPPORT_NONE = 0; // 0x0
-    field public static final String TYPE_RESOURCE_ID = "typeResourceId";
-  }
-
-  public static interface ContactsContract.DisplayNameSources {
-    field public static final int EMAIL = 10; // 0xa
-    field public static final int NICKNAME = 35; // 0x23
-    field public static final int ORGANIZATION = 30; // 0x1e
-    field public static final int PHONE = 20; // 0x14
-    field public static final int STRUCTURED_NAME = 40; // 0x28
-    field public static final int STRUCTURED_PHONETIC_NAME = 37; // 0x25
-    field public static final int UNDEFINED = 0; // 0x0
-  }
-
-  public static final class ContactsContract.DisplayPhoto {
-    field public static final android.net.Uri CONTENT_MAX_DIMENSIONS_URI;
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DISPLAY_MAX_DIM = "display_max_dim";
-    field public static final String THUMBNAIL_MAX_DIM = "thumbnail_max_dim";
-  }
-
-  public static interface ContactsContract.FullNameStyle {
-    field public static final int CHINESE = 3; // 0x3
-    field public static final int CJK = 2; // 0x2
-    field public static final int JAPANESE = 4; // 0x4
-    field public static final int KOREAN = 5; // 0x5
-    field public static final int UNDEFINED = 0; // 0x0
-    field public static final int WESTERN = 1; // 0x1
-  }
-
-  public static final class ContactsContract.Groups implements android.provider.BaseColumns android.provider.ContactsContract.GroupsColumns android.provider.ContactsContract.SyncColumns {
-    method public static android.content.EntityIterator newEntityIterator(android.database.Cursor);
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/group";
-    field public static final android.net.Uri CONTENT_SUMMARY_URI;
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/group";
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  protected static interface ContactsContract.GroupsColumns {
-    field public static final String AUTO_ADD = "auto_add";
-    field public static final String DATA_SET = "data_set";
-    field public static final String DELETED = "deleted";
-    field public static final String FAVORITES = "favorites";
-    field public static final String GROUP_IS_READ_ONLY = "group_is_read_only";
-    field public static final String GROUP_VISIBLE = "group_visible";
-    field public static final String NOTES = "notes";
-    field public static final String RES_PACKAGE = "res_package";
-    field public static final String SHOULD_SYNC = "should_sync";
-    field public static final String SUMMARY_COUNT = "summ_count";
-    field public static final String SUMMARY_WITH_PHONES = "summ_phones";
-    field public static final String SYSTEM_ID = "system_id";
-    field public static final String TITLE = "title";
-    field public static final String TITLE_RES = "title_res";
-  }
-
-  public static final class ContactsContract.Intents {
-    ctor public ContactsContract.Intents();
-    field public static final String ACTION_VOICE_SEND_MESSAGE_TO_CONTACTS = "android.provider.action.VOICE_SEND_MESSAGE_TO_CONTACTS";
-    field public static final String ATTACH_IMAGE = "com.android.contacts.action.ATTACH_IMAGE";
-    field public static final String CONTACTS_DATABASE_CREATED = "android.provider.Contacts.DATABASE_CREATED";
-    field public static final String EXTRA_CREATE_DESCRIPTION = "com.android.contacts.action.CREATE_DESCRIPTION";
-    field public static final String EXTRA_FORCE_CREATE = "com.android.contacts.action.FORCE_CREATE";
-    field public static final String EXTRA_RECIPIENT_CONTACT_CHAT_ID = "android.provider.extra.RECIPIENT_CONTACT_CHAT_ID";
-    field public static final String EXTRA_RECIPIENT_CONTACT_NAME = "android.provider.extra.RECIPIENT_CONTACT_NAME";
-    field public static final String EXTRA_RECIPIENT_CONTACT_URI = "android.provider.extra.RECIPIENT_CONTACT_URI";
-    field public static final String INVITE_CONTACT = "com.android.contacts.action.INVITE_CONTACT";
-    field public static final String METADATA_ACCOUNT_TYPE = "android.provider.account_type";
-    field public static final String METADATA_MIMETYPE = "android.provider.mimetype";
-    field public static final String SEARCH_SUGGESTION_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CLICKED";
-    field public static final String SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED";
-    field public static final String SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED";
-    field public static final String SHOW_OR_CREATE_CONTACT = "com.android.contacts.action.SHOW_OR_CREATE_CONTACT";
-  }
-
-  public static final class ContactsContract.Intents.Insert {
-    ctor public ContactsContract.Intents.Insert();
-    field public static final String ACTION = "android.intent.action.INSERT";
-    field public static final String COMPANY = "company";
-    field public static final String DATA = "data";
-    field public static final String EMAIL = "email";
-    field public static final String EMAIL_ISPRIMARY = "email_isprimary";
-    field public static final String EMAIL_TYPE = "email_type";
-    field public static final String EXTRA_ACCOUNT = "android.provider.extra.ACCOUNT";
-    field public static final String EXTRA_DATA_SET = "android.provider.extra.DATA_SET";
-    field public static final String FULL_MODE = "full_mode";
-    field public static final String IM_HANDLE = "im_handle";
-    field public static final String IM_ISPRIMARY = "im_isprimary";
-    field public static final String IM_PROTOCOL = "im_protocol";
-    field public static final String JOB_TITLE = "job_title";
-    field public static final String NAME = "name";
-    field public static final String NOTES = "notes";
-    field public static final String PHONE = "phone";
-    field public static final String PHONETIC_NAME = "phonetic_name";
-    field public static final String PHONE_ISPRIMARY = "phone_isprimary";
-    field public static final String PHONE_TYPE = "phone_type";
-    field public static final String POSTAL = "postal";
-    field public static final String POSTAL_ISPRIMARY = "postal_isprimary";
-    field public static final String POSTAL_TYPE = "postal_type";
-    field public static final String SECONDARY_EMAIL = "secondary_email";
-    field public static final String SECONDARY_EMAIL_TYPE = "secondary_email_type";
-    field public static final String SECONDARY_PHONE = "secondary_phone";
-    field public static final String SECONDARY_PHONE_TYPE = "secondary_phone_type";
-    field public static final String TERTIARY_EMAIL = "tertiary_email";
-    field public static final String TERTIARY_EMAIL_TYPE = "tertiary_email_type";
-    field public static final String TERTIARY_PHONE = "tertiary_phone";
-    field public static final String TERTIARY_PHONE_TYPE = "tertiary_phone_type";
-  }
-
-  public static final class ContactsContract.PhoneLookup implements android.provider.BaseColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactsColumns android.provider.ContactsContract.PhoneLookupColumns {
-    field public static final android.net.Uri CONTENT_FILTER_URI;
-    field public static final android.net.Uri ENTERPRISE_CONTENT_FILTER_URI;
-    field public static final String QUERY_PARAMETER_SIP_ADDRESS = "sip";
-  }
-
-  protected static interface ContactsContract.PhoneLookupColumns {
-    field public static final String CONTACT_ID = "contact_id";
-    field public static final String DATA_ID = "data_id";
-    field public static final String LABEL = "label";
-    field public static final String NORMALIZED_NUMBER = "normalized_number";
-    field public static final String NUMBER = "number";
-    field public static final String TYPE = "type";
-  }
-
-  public static interface ContactsContract.PhoneticNameStyle {
-    field public static final int JAPANESE = 4; // 0x4
-    field public static final int KOREAN = 5; // 0x5
-    field public static final int PINYIN = 3; // 0x3
-    field public static final int UNDEFINED = 0; // 0x0
-  }
-
-  public static final class ContactsContract.PinnedPositions {
-    ctor public ContactsContract.PinnedPositions();
-    method public static void pin(android.content.ContentResolver, long, int);
-    method public static void undemote(android.content.ContentResolver, long);
-    field public static final int DEMOTED = -1; // 0xffffffff
-    field public static final int UNPINNED = 0; // 0x0
-  }
-
-  @Deprecated public static final class ContactsContract.Presence extends android.provider.ContactsContract.StatusUpdates {
-    ctor @Deprecated public ContactsContract.Presence();
-  }
-
-  protected static interface ContactsContract.PresenceColumns {
-    field public static final String CUSTOM_PROTOCOL = "custom_protocol";
-    field public static final String DATA_ID = "presence_data_id";
-    field public static final String IM_ACCOUNT = "im_account";
-    field public static final String IM_HANDLE = "im_handle";
-    field public static final String PROTOCOL = "protocol";
-  }
-
-  public static final class ContactsContract.Profile implements android.provider.BaseColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.ContactsColumns {
-    field public static final android.net.Uri CONTENT_RAW_CONTACTS_URI;
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final android.net.Uri CONTENT_VCARD_URI;
-    field public static final long MIN_ID = 9223372034707292160L; // 0x7fffffff80000000L
-  }
-
-  public static final class ContactsContract.ProfileSyncState implements android.provider.SyncStateContract.Columns {
-    method public static byte[] get(android.content.ContentProviderClient, android.accounts.Account) throws android.os.RemoteException;
-    method public static android.util.Pair<android.net.Uri,byte[]> getWithUri(android.content.ContentProviderClient, android.accounts.Account) throws android.os.RemoteException;
-    method public static android.content.ContentProviderOperation newSetOperation(android.accounts.Account, byte[]);
-    method public static void set(android.content.ContentProviderClient, android.accounts.Account, byte[]) throws android.os.RemoteException;
-    field public static final String CONTENT_DIRECTORY = "syncstate";
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  public static final class ContactsContract.ProviderStatus {
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/provider_status";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DATABASE_CREATION_TIMESTAMP = "database_creation_timestamp";
-    field public static final String STATUS = "status";
-    field public static final int STATUS_BUSY = 1; // 0x1
-    field public static final int STATUS_EMPTY = 2; // 0x2
-    field public static final int STATUS_NORMAL = 0; // 0x0
-  }
-
-  public static final class ContactsContract.QuickContact {
-    ctor public ContactsContract.QuickContact();
-    method public static void showQuickContact(android.content.Context, android.view.View, android.net.Uri, int, String[]);
-    method public static void showQuickContact(android.content.Context, android.graphics.Rect, android.net.Uri, int, String[]);
-    method public static void showQuickContact(android.content.Context, android.view.View, android.net.Uri, String[], String);
-    method public static void showQuickContact(android.content.Context, android.graphics.Rect, android.net.Uri, String[], String);
-    field public static final String ACTION_QUICK_CONTACT = "android.provider.action.QUICK_CONTACT";
-    field public static final String EXTRA_EXCLUDE_MIMES = "android.provider.extra.EXCLUDE_MIMES";
-    field public static final String EXTRA_MODE = "android.provider.extra.MODE";
-    field public static final String EXTRA_PRIORITIZED_MIMETYPE = "android.provider.extra.PRIORITIZED_MIMETYPE";
-    field public static final int MODE_LARGE = 3; // 0x3
-    field public static final int MODE_MEDIUM = 2; // 0x2
-    field public static final int MODE_SMALL = 1; // 0x1
-  }
-
-  public static final class ContactsContract.RawContacts implements android.provider.BaseColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.RawContactsColumns android.provider.ContactsContract.SyncColumns {
-    method public static android.net.Uri getContactLookupUri(android.content.ContentResolver, android.net.Uri);
-    method @Nullable public static String getLocalAccountName(@NonNull android.content.Context);
-    method @Nullable public static String getLocalAccountType(@NonNull android.content.Context);
-    method public static android.content.EntityIterator newEntityIterator(android.database.Cursor);
-    field public static final int AGGREGATION_MODE_DEFAULT = 0; // 0x0
-    field public static final int AGGREGATION_MODE_DISABLED = 3; // 0x3
-    field @Deprecated public static final int AGGREGATION_MODE_IMMEDIATE = 1; // 0x1
-    field public static final int AGGREGATION_MODE_SUSPENDED = 2; // 0x2
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/raw_contact";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/raw_contact";
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  public static final class ContactsContract.RawContacts.Data implements android.provider.BaseColumns android.provider.ContactsContract.DataColumns {
-    field public static final String CONTENT_DIRECTORY = "data";
-  }
-
-  public static final class ContactsContract.RawContacts.DisplayPhoto {
-    field public static final String CONTENT_DIRECTORY = "display_photo";
-  }
-
-  public static final class ContactsContract.RawContacts.Entity implements android.provider.BaseColumns android.provider.ContactsContract.DataColumns {
-    field public static final String CONTENT_DIRECTORY = "entity";
-    field public static final String DATA_ID = "data_id";
-  }
-
-  protected static interface ContactsContract.RawContactsColumns {
-    field public static final String ACCOUNT_TYPE_AND_DATA_SET = "account_type_and_data_set";
-    field public static final String AGGREGATION_MODE = "aggregation_mode";
-    field public static final String BACKUP_ID = "backup_id";
-    field public static final String CONTACT_ID = "contact_id";
-    field public static final String DATA_SET = "data_set";
-    field public static final String DELETED = "deleted";
-    field @Deprecated public static final String METADATA_DIRTY = "metadata_dirty";
-    field public static final String RAW_CONTACT_IS_READ_ONLY = "raw_contact_is_read_only";
-    field public static final String RAW_CONTACT_IS_USER_PROFILE = "raw_contact_is_user_profile";
-  }
-
-  public static final class ContactsContract.RawContactsEntity implements android.provider.BaseColumns android.provider.ContactsContract.DataColumns android.provider.ContactsContract.RawContactsColumns {
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/raw_contact_entity";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DATA_ID = "data_id";
-    field public static final android.net.Uri PROFILE_CONTENT_URI;
-  }
-
-  public static class ContactsContract.SearchSnippets {
-    ctor public ContactsContract.SearchSnippets();
-    field public static final String DEFERRED_SNIPPETING_KEY = "deferred_snippeting";
-    field public static final String SNIPPET = "snippet";
-  }
-
-  public static final class ContactsContract.Settings implements android.provider.ContactsContract.SettingsColumns {
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/setting";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/setting";
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  protected static interface ContactsContract.SettingsColumns {
-    field public static final String ACCOUNT_NAME = "account_name";
-    field public static final String ACCOUNT_TYPE = "account_type";
-    field public static final String ANY_UNSYNCED = "any_unsynced";
-    field public static final String DATA_SET = "data_set";
-    field public static final String SHOULD_SYNC = "should_sync";
-    field public static final String UNGROUPED_COUNT = "summ_count";
-    field public static final String UNGROUPED_VISIBLE = "ungrouped_visible";
-    field public static final String UNGROUPED_WITH_PHONES = "summ_phones";
-  }
-
-  protected static interface ContactsContract.StatusColumns {
-    field public static final int AVAILABLE = 5; // 0x5
-    field public static final int AWAY = 2; // 0x2
-    field public static final int CAPABILITY_HAS_CAMERA = 4; // 0x4
-    field public static final int CAPABILITY_HAS_VIDEO = 2; // 0x2
-    field public static final int CAPABILITY_HAS_VOICE = 1; // 0x1
-    field public static final String CHAT_CAPABILITY = "chat_capability";
-    field public static final int DO_NOT_DISTURB = 4; // 0x4
-    field public static final int IDLE = 3; // 0x3
-    field public static final int INVISIBLE = 1; // 0x1
-    field public static final int OFFLINE = 0; // 0x0
-    field public static final String PRESENCE = "mode";
-    field @Deprecated public static final String PRESENCE_CUSTOM_STATUS = "status";
-    field @Deprecated public static final String PRESENCE_STATUS = "mode";
-    field public static final String STATUS = "status";
-    field public static final String STATUS_ICON = "status_icon";
-    field public static final String STATUS_LABEL = "status_label";
-    field public static final String STATUS_RES_PACKAGE = "status_res_package";
-    field public static final String STATUS_TIMESTAMP = "status_ts";
-  }
-
-  public static class ContactsContract.StatusUpdates implements android.provider.ContactsContract.PresenceColumns android.provider.ContactsContract.StatusColumns {
-    method public static final int getPresenceIconResourceId(int);
-    method public static final int getPresencePrecedence(int);
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/status-update";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/status-update";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final android.net.Uri PROFILE_CONTENT_URI;
-  }
-
-  protected static interface ContactsContract.SyncColumns extends android.provider.ContactsContract.BaseSyncColumns {
-    field public static final String ACCOUNT_NAME = "account_name";
-    field public static final String ACCOUNT_TYPE = "account_type";
-    field public static final String DIRTY = "dirty";
-    field public static final String SOURCE_ID = "sourceid";
-    field public static final String VERSION = "version";
-  }
-
-  public static final class ContactsContract.SyncState implements android.provider.SyncStateContract.Columns {
-    method public static byte[] get(android.content.ContentProviderClient, android.accounts.Account) throws android.os.RemoteException;
-    method public static android.util.Pair<android.net.Uri,byte[]> getWithUri(android.content.ContentProviderClient, android.accounts.Account) throws android.os.RemoteException;
-    method public static android.content.ContentProviderOperation newSetOperation(android.accounts.Account, byte[]);
-    method public static void set(android.content.ContentProviderClient, android.accounts.Account, byte[]) throws android.os.RemoteException;
-    field public static final String CONTENT_DIRECTORY = "syncstate";
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  public final class DocumentsContract {
-    method public static android.net.Uri buildChildDocumentsUri(String, String);
-    method public static android.net.Uri buildChildDocumentsUriUsingTree(android.net.Uri, String);
-    method public static android.net.Uri buildDocumentUri(String, String);
-    method public static android.net.Uri buildDocumentUriUsingTree(android.net.Uri, String);
-    method public static android.net.Uri buildRecentDocumentsUri(String, String);
-    method public static android.net.Uri buildRootUri(String, String);
-    method public static android.net.Uri buildRootsUri(String);
-    method public static android.net.Uri buildSearchDocumentsUri(String, String, String);
-    method public static android.net.Uri buildTreeDocumentUri(String, String);
-    method @Nullable public static android.net.Uri copyDocument(@NonNull android.content.ContentResolver, @NonNull android.net.Uri, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
-    method @Nullable public static android.net.Uri createDocument(@NonNull android.content.ContentResolver, @NonNull android.net.Uri, @NonNull String, @NonNull String) throws java.io.FileNotFoundException;
-    method @Nullable public static android.content.IntentSender createWebLinkIntent(@NonNull android.content.ContentResolver, @NonNull android.net.Uri, @Nullable android.os.Bundle) throws java.io.FileNotFoundException;
-    method public static boolean deleteDocument(@NonNull android.content.ContentResolver, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
-    method public static void ejectRoot(@NonNull android.content.ContentResolver, @NonNull android.net.Uri);
-    method @Nullable public static android.provider.DocumentsContract.Path findDocumentPath(@NonNull android.content.ContentResolver, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
-    method public static String getDocumentId(android.net.Uri);
-    method @Nullable public static android.os.Bundle getDocumentMetadata(@NonNull android.content.ContentResolver, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
-    method @Nullable public static android.graphics.Bitmap getDocumentThumbnail(@NonNull android.content.ContentResolver, @NonNull android.net.Uri, @NonNull android.graphics.Point, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method public static String getRootId(android.net.Uri);
-    method public static String getSearchDocumentsQuery(android.net.Uri);
-    method public static String getTreeDocumentId(android.net.Uri);
-    method public static boolean isChildDocument(@NonNull android.content.ContentResolver, @NonNull android.net.Uri, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
-    method public static boolean isDocumentUri(android.content.Context, @Nullable android.net.Uri);
-    method public static boolean isRootUri(@NonNull android.content.Context, @Nullable android.net.Uri);
-    method public static boolean isRootsUri(@NonNull android.content.Context, @Nullable android.net.Uri);
-    method public static boolean isTreeUri(android.net.Uri);
-    method @Nullable public static android.net.Uri moveDocument(@NonNull android.content.ContentResolver, @NonNull android.net.Uri, @NonNull android.net.Uri, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
-    method public static boolean removeDocument(@NonNull android.content.ContentResolver, @NonNull android.net.Uri, @NonNull android.net.Uri) throws java.io.FileNotFoundException;
-    method @Nullable public static android.net.Uri renameDocument(@NonNull android.content.ContentResolver, @NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException;
-    field public static final String ACTION_DOCUMENT_SETTINGS = "android.provider.action.DOCUMENT_SETTINGS";
-    field public static final String EXTRA_ERROR = "error";
-    field public static final String EXTRA_EXCLUDE_SELF = "android.provider.extra.EXCLUDE_SELF";
-    field public static final String EXTRA_INFO = "info";
-    field public static final String EXTRA_INITIAL_URI = "android.provider.extra.INITIAL_URI";
-    field public static final String EXTRA_LOADING = "loading";
-    field public static final String EXTRA_ORIENTATION = "android.provider.extra.ORIENTATION";
-    field public static final String EXTRA_PROMPT = "android.provider.extra.PROMPT";
-    field public static final String METADATA_EXIF = "android:documentExif";
-    field public static final String METADATA_TREE_COUNT = "android:metadataTreeCount";
-    field public static final String METADATA_TREE_SIZE = "android:metadataTreeSize";
-    field public static final String METADATA_TYPES = "android:documentMetadataTypes";
-    field public static final String PROVIDER_INTERFACE = "android.content.action.DOCUMENTS_PROVIDER";
-    field public static final String QUERY_ARG_DISPLAY_NAME = "android:query-arg-display-name";
-    field public static final String QUERY_ARG_EXCLUDE_MEDIA = "android:query-arg-exclude-media";
-    field public static final String QUERY_ARG_FILE_SIZE_OVER = "android:query-arg-file-size-over";
-    field public static final String QUERY_ARG_LAST_MODIFIED_AFTER = "android:query-arg-last-modified-after";
-    field public static final String QUERY_ARG_MIME_TYPES = "android:query-arg-mime-types";
-  }
-
-  public static final class DocumentsContract.Document {
-    field public static final String COLUMN_DISPLAY_NAME = "_display_name";
-    field public static final String COLUMN_DOCUMENT_ID = "document_id";
-    field public static final String COLUMN_FLAGS = "flags";
-    field public static final String COLUMN_ICON = "icon";
-    field public static final String COLUMN_LAST_MODIFIED = "last_modified";
-    field public static final String COLUMN_MIME_TYPE = "mime_type";
-    field public static final String COLUMN_SIZE = "_size";
-    field public static final String COLUMN_SUMMARY = "summary";
-    field public static final int FLAG_DIR_BLOCKS_OPEN_DOCUMENT_TREE = 32768; // 0x8000
-    field public static final int FLAG_DIR_PREFERS_GRID = 16; // 0x10
-    field public static final int FLAG_DIR_PREFERS_LAST_MODIFIED = 32; // 0x20
-    field public static final int FLAG_DIR_SUPPORTS_CREATE = 8; // 0x8
-    field public static final int FLAG_PARTIAL = 8192; // 0x2000
-    field public static final int FLAG_SUPPORTS_COPY = 128; // 0x80
-    field public static final int FLAG_SUPPORTS_DELETE = 4; // 0x4
-    field public static final int FLAG_SUPPORTS_METADATA = 16384; // 0x4000
-    field public static final int FLAG_SUPPORTS_MOVE = 256; // 0x100
-    field public static final int FLAG_SUPPORTS_REMOVE = 1024; // 0x400
-    field public static final int FLAG_SUPPORTS_RENAME = 64; // 0x40
-    field public static final int FLAG_SUPPORTS_SETTINGS = 2048; // 0x800
-    field public static final int FLAG_SUPPORTS_THUMBNAIL = 1; // 0x1
-    field public static final int FLAG_SUPPORTS_WRITE = 2; // 0x2
-    field public static final int FLAG_VIRTUAL_DOCUMENT = 512; // 0x200
-    field public static final int FLAG_WEB_LINKABLE = 4096; // 0x1000
-    field public static final String MIME_TYPE_DIR = "vnd.android.document/directory";
-  }
-
-  public static final class DocumentsContract.Path implements android.os.Parcelable {
-    ctor public DocumentsContract.Path(@Nullable String, java.util.List<java.lang.String>);
-    method public int describeContents();
-    method public java.util.List<java.lang.String> getPath();
-    method @Nullable public String getRootId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.provider.DocumentsContract.Path> CREATOR;
-  }
-
-  public static final class DocumentsContract.Root {
-    field public static final String COLUMN_AVAILABLE_BYTES = "available_bytes";
-    field public static final String COLUMN_CAPACITY_BYTES = "capacity_bytes";
-    field public static final String COLUMN_DOCUMENT_ID = "document_id";
-    field public static final String COLUMN_FLAGS = "flags";
-    field public static final String COLUMN_ICON = "icon";
-    field public static final String COLUMN_MIME_TYPES = "mime_types";
-    field public static final String COLUMN_QUERY_ARGS = "query_args";
-    field public static final String COLUMN_ROOT_ID = "root_id";
-    field public static final String COLUMN_SUMMARY = "summary";
-    field public static final String COLUMN_TITLE = "title";
-    field public static final int FLAG_EMPTY = 64; // 0x40
-    field public static final int FLAG_LOCAL_ONLY = 2; // 0x2
-    field public static final int FLAG_SUPPORTS_CREATE = 1; // 0x1
-    field public static final int FLAG_SUPPORTS_EJECT = 32; // 0x20
-    field public static final int FLAG_SUPPORTS_IS_CHILD = 16; // 0x10
-    field public static final int FLAG_SUPPORTS_RECENTS = 4; // 0x4
-    field public static final int FLAG_SUPPORTS_SEARCH = 8; // 0x8
-    field public static final String MIME_TYPE_ITEM = "vnd.android.document/root";
-  }
-
-  public abstract class DocumentsProvider extends android.content.ContentProvider {
-    ctor public DocumentsProvider();
-    method public String copyDocument(String, String) throws java.io.FileNotFoundException;
-    method public String createDocument(String, String, String) throws java.io.FileNotFoundException;
-    method public android.content.IntentSender createWebLinkIntent(String, @Nullable android.os.Bundle) throws java.io.FileNotFoundException;
-    method public final int delete(android.net.Uri, String, String[]);
-    method public void deleteDocument(String) throws java.io.FileNotFoundException;
-    method public void ejectRoot(String);
-    method public android.provider.DocumentsContract.Path findDocumentPath(@Nullable String, String) throws java.io.FileNotFoundException;
-    method @Nullable public android.os.Bundle getDocumentMetadata(@NonNull String) throws java.io.FileNotFoundException;
-    method public String[] getDocumentStreamTypes(String, String);
-    method public String getDocumentType(String) throws java.io.FileNotFoundException;
-    method public final String getType(android.net.Uri);
-    method public final android.net.Uri insert(android.net.Uri, android.content.ContentValues);
-    method public boolean isChildDocument(String, String);
-    method public String moveDocument(String, String, String) throws java.io.FileNotFoundException;
-    method public final android.content.res.AssetFileDescriptor openAssetFile(android.net.Uri, String) throws java.io.FileNotFoundException;
-    method public final android.content.res.AssetFileDescriptor openAssetFile(android.net.Uri, String, android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method public abstract android.os.ParcelFileDescriptor openDocument(String, String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method public android.content.res.AssetFileDescriptor openDocumentThumbnail(String, android.graphics.Point, android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method public final android.os.ParcelFileDescriptor openFile(android.net.Uri, String) throws java.io.FileNotFoundException;
-    method public final android.os.ParcelFileDescriptor openFile(android.net.Uri, String, android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method public final android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, String, android.os.Bundle) throws java.io.FileNotFoundException;
-    method public final android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, String, android.os.Bundle, android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method public android.content.res.AssetFileDescriptor openTypedDocument(String, String, android.os.Bundle, android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method public final android.database.Cursor query(android.net.Uri, String[], String, String[], String);
-    method public final android.database.Cursor query(android.net.Uri, String[], android.os.Bundle, android.os.CancellationSignal);
-    method public abstract android.database.Cursor queryChildDocuments(String, String[], String) throws java.io.FileNotFoundException;
-    method public android.database.Cursor queryChildDocuments(String, @Nullable String[], @Nullable android.os.Bundle) throws java.io.FileNotFoundException;
-    method public abstract android.database.Cursor queryDocument(String, String[]) throws java.io.FileNotFoundException;
-    method public android.database.Cursor queryRecentDocuments(String, String[]) throws java.io.FileNotFoundException;
-    method @Nullable public android.database.Cursor queryRecentDocuments(@NonNull String, @Nullable String[], @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException;
-    method public abstract android.database.Cursor queryRoots(String[]) throws java.io.FileNotFoundException;
-    method public android.database.Cursor querySearchDocuments(String, String, String[]) throws java.io.FileNotFoundException;
-    method @Nullable public android.database.Cursor querySearchDocuments(@NonNull String, @Nullable String[], @NonNull android.os.Bundle) throws java.io.FileNotFoundException;
-    method public void removeDocument(String, String) throws java.io.FileNotFoundException;
-    method public String renameDocument(String, String) throws java.io.FileNotFoundException;
-    method public final void revokeDocumentPermission(String);
-    method public final int update(android.net.Uri, android.content.ContentValues, String, String[]);
-  }
-
-  public final class FontRequest {
-    ctor public FontRequest(@NonNull String, @NonNull String, @NonNull String);
-    ctor public FontRequest(@NonNull String, @NonNull String, @NonNull String, @NonNull java.util.List<java.util.List<byte[]>>);
-    method public java.util.List<java.util.List<byte[]>> getCertificates();
-    method public String getProviderAuthority();
-    method public String getProviderPackage();
-    method public String getQuery();
-  }
-
-  public class FontsContract {
-    method public static android.graphics.Typeface buildTypeface(@NonNull android.content.Context, @Nullable android.os.CancellationSignal, @NonNull android.provider.FontsContract.FontInfo[]);
-    method @NonNull public static android.provider.FontsContract.FontFamilyResult fetchFonts(@NonNull android.content.Context, @Nullable android.os.CancellationSignal, @NonNull android.provider.FontRequest) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public static void requestFonts(@NonNull android.content.Context, @NonNull android.provider.FontRequest, @NonNull android.os.Handler, @Nullable android.os.CancellationSignal, @NonNull android.provider.FontsContract.FontRequestCallback);
-  }
-
-  public static final class FontsContract.Columns implements android.provider.BaseColumns {
-    field public static final String FILE_ID = "file_id";
-    field public static final String ITALIC = "font_italic";
-    field public static final String RESULT_CODE = "result_code";
-    field public static final int RESULT_CODE_FONT_NOT_FOUND = 1; // 0x1
-    field public static final int RESULT_CODE_FONT_UNAVAILABLE = 2; // 0x2
-    field public static final int RESULT_CODE_MALFORMED_QUERY = 3; // 0x3
-    field public static final int RESULT_CODE_OK = 0; // 0x0
-    field public static final String TTC_INDEX = "font_ttc_index";
-    field public static final String VARIATION_SETTINGS = "font_variation_settings";
-    field public static final String WEIGHT = "font_weight";
-  }
-
-  public static class FontsContract.FontFamilyResult {
-    method @NonNull public android.provider.FontsContract.FontInfo[] getFonts();
-    method public int getStatusCode();
-    field public static final int STATUS_OK = 0; // 0x0
-    field public static final int STATUS_REJECTED = 3; // 0x3
-    field public static final int STATUS_UNEXPECTED_DATA_PROVIDED = 2; // 0x2
-    field public static final int STATUS_WRONG_CERTIFICATES = 1; // 0x1
-  }
-
-  public static class FontsContract.FontInfo {
-    method @Nullable public android.graphics.fonts.FontVariationAxis[] getAxes();
-    method public int getResultCode();
-    method @IntRange(from=0) public int getTtcIndex();
-    method @NonNull public android.net.Uri getUri();
-    method @IntRange(from=1, to=1000) public int getWeight();
-    method public boolean isItalic();
-  }
-
-  public static class FontsContract.FontRequestCallback {
-    ctor public FontsContract.FontRequestCallback();
-    method public void onTypefaceRequestFailed(int);
-    method public void onTypefaceRetrieved(android.graphics.Typeface);
-    field public static final int FAIL_REASON_FONT_LOAD_ERROR = -3; // 0xfffffffd
-    field public static final int FAIL_REASON_FONT_NOT_FOUND = 1; // 0x1
-    field public static final int FAIL_REASON_FONT_UNAVAILABLE = 2; // 0x2
-    field public static final int FAIL_REASON_MALFORMED_QUERY = 3; // 0x3
-    field public static final int FAIL_REASON_PROVIDER_NOT_FOUND = -1; // 0xffffffff
-    field public static final int FAIL_REASON_WRONG_CERTIFICATES = -2; // 0xfffffffe
-  }
-
-  @Deprecated public final class LiveFolders implements android.provider.BaseColumns {
-    field @Deprecated public static final String ACTION_CREATE_LIVE_FOLDER = "android.intent.action.CREATE_LIVE_FOLDER";
-    field @Deprecated public static final String DESCRIPTION = "description";
-    field @Deprecated public static final int DISPLAY_MODE_GRID = 1; // 0x1
-    field @Deprecated public static final int DISPLAY_MODE_LIST = 2; // 0x2
-    field @Deprecated public static final String EXTRA_LIVE_FOLDER_BASE_INTENT = "android.intent.extra.livefolder.BASE_INTENT";
-    field @Deprecated public static final String EXTRA_LIVE_FOLDER_DISPLAY_MODE = "android.intent.extra.livefolder.DISPLAY_MODE";
-    field @Deprecated public static final String EXTRA_LIVE_FOLDER_ICON = "android.intent.extra.livefolder.ICON";
-    field @Deprecated public static final String EXTRA_LIVE_FOLDER_NAME = "android.intent.extra.livefolder.NAME";
-    field @Deprecated public static final String ICON_BITMAP = "icon_bitmap";
-    field @Deprecated public static final String ICON_PACKAGE = "icon_package";
-    field @Deprecated public static final String ICON_RESOURCE = "icon_resource";
-    field @Deprecated public static final String INTENT = "intent";
-    field @Deprecated public static final String NAME = "name";
-  }
-
-  public interface OpenableColumns {
-    field public static final String DISPLAY_NAME = "_display_name";
-    field public static final String SIZE = "_size";
-  }
-
-  public class SearchRecentSuggestions {
-    ctor public SearchRecentSuggestions(android.content.Context, String, int);
-    method public void clearHistory();
-    method public void saveRecentQuery(String, String);
-    method protected void truncateHistory(android.content.ContentResolver, int);
-    field public static final String[] QUERIES_PROJECTION_1LINE;
-    field public static final String[] QUERIES_PROJECTION_2LINE;
-    field public static final int QUERIES_PROJECTION_DATE_INDEX = 1; // 0x1
-    field public static final int QUERIES_PROJECTION_DISPLAY1_INDEX = 3; // 0x3
-    field public static final int QUERIES_PROJECTION_DISPLAY2_INDEX = 4; // 0x4
-    field public static final int QUERIES_PROJECTION_QUERY_INDEX = 2; // 0x2
-  }
-
-  public final class Settings {
-    ctor public Settings();
-    method public static boolean canDrawOverlays(android.content.Context);
-    field public static final String ACTION_ACCESSIBILITY_SETTINGS = "android.settings.ACCESSIBILITY_SETTINGS";
-    field public static final String ACTION_ADD_ACCOUNT = "android.settings.ADD_ACCOUNT_SETTINGS";
-    field public static final String ACTION_AIRPLANE_MODE_SETTINGS = "android.settings.AIRPLANE_MODE_SETTINGS";
-    field public static final String ACTION_APN_SETTINGS = "android.settings.APN_SETTINGS";
-    field public static final String ACTION_APPLICATION_DETAILS_SETTINGS = "android.settings.APPLICATION_DETAILS_SETTINGS";
-    field public static final String ACTION_APPLICATION_DEVELOPMENT_SETTINGS = "android.settings.APPLICATION_DEVELOPMENT_SETTINGS";
-    field public static final String ACTION_APPLICATION_SETTINGS = "android.settings.APPLICATION_SETTINGS";
-    field public static final String ACTION_APP_NOTIFICATION_BUBBLE_SETTINGS = "android.settings.APP_NOTIFICATION_BUBBLE_SETTINGS";
-    field public static final String ACTION_APP_NOTIFICATION_SETTINGS = "android.settings.APP_NOTIFICATION_SETTINGS";
-    field public static final String ACTION_APP_SEARCH_SETTINGS = "android.settings.APP_SEARCH_SETTINGS";
-    field public static final String ACTION_APP_USAGE_SETTINGS = "android.settings.action.APP_USAGE_SETTINGS";
-    field public static final String ACTION_BATTERY_SAVER_SETTINGS = "android.settings.BATTERY_SAVER_SETTINGS";
-    field public static final String ACTION_BIOMETRIC_ENROLL = "android.settings.BIOMETRIC_ENROLL";
-    field public static final String ACTION_BLUETOOTH_SETTINGS = "android.settings.BLUETOOTH_SETTINGS";
-    field public static final String ACTION_CAPTIONING_SETTINGS = "android.settings.CAPTIONING_SETTINGS";
-    field public static final String ACTION_CAST_SETTINGS = "android.settings.CAST_SETTINGS";
-    field public static final String ACTION_CHANNEL_NOTIFICATION_SETTINGS = "android.settings.CHANNEL_NOTIFICATION_SETTINGS";
-    field public static final String ACTION_CONDITION_PROVIDER_SETTINGS = "android.settings.ACTION_CONDITION_PROVIDER_SETTINGS";
-    field public static final String ACTION_DATA_ROAMING_SETTINGS = "android.settings.DATA_ROAMING_SETTINGS";
-    field public static final String ACTION_DATA_USAGE_SETTINGS = "android.settings.DATA_USAGE_SETTINGS";
-    field public static final String ACTION_DATE_SETTINGS = "android.settings.DATE_SETTINGS";
-    field public static final String ACTION_DEVICE_INFO_SETTINGS = "android.settings.DEVICE_INFO_SETTINGS";
-    field public static final String ACTION_DISPLAY_SETTINGS = "android.settings.DISPLAY_SETTINGS";
-    field public static final String ACTION_DREAM_SETTINGS = "android.settings.DREAM_SETTINGS";
-    field @Deprecated public static final String ACTION_FINGERPRINT_ENROLL = "android.settings.FINGERPRINT_ENROLL";
-    field public static final String ACTION_HARD_KEYBOARD_SETTINGS = "android.settings.HARD_KEYBOARD_SETTINGS";
-    field public static final String ACTION_HOME_SETTINGS = "android.settings.HOME_SETTINGS";
-    field public static final String ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS = "android.settings.IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS";
-    field public static final String ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS = "android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS";
-    field public static final String ACTION_INPUT_METHOD_SETTINGS = "android.settings.INPUT_METHOD_SETTINGS";
-    field public static final String ACTION_INPUT_METHOD_SUBTYPE_SETTINGS = "android.settings.INPUT_METHOD_SUBTYPE_SETTINGS";
-    field public static final String ACTION_INTERNAL_STORAGE_SETTINGS = "android.settings.INTERNAL_STORAGE_SETTINGS";
-    field public static final String ACTION_LOCALE_SETTINGS = "android.settings.LOCALE_SETTINGS";
-    field public static final String ACTION_LOCATION_SOURCE_SETTINGS = "android.settings.LOCATION_SOURCE_SETTINGS";
-    field public static final String ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS = "android.settings.MANAGE_ALL_APPLICATIONS_SETTINGS";
-    field public static final String ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION = "android.settings.MANAGE_ALL_FILES_ACCESS_PERMISSION";
-    field public static final String ACTION_MANAGE_APPLICATIONS_SETTINGS = "android.settings.MANAGE_APPLICATIONS_SETTINGS";
-    field public static final String ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION = "android.settings.MANAGE_APP_ALL_FILES_ACCESS_PERMISSION";
-    field public static final String ACTION_MANAGE_DEFAULT_APPS_SETTINGS = "android.settings.MANAGE_DEFAULT_APPS_SETTINGS";
-    field public static final String ACTION_MANAGE_OVERLAY_PERMISSION = "android.settings.action.MANAGE_OVERLAY_PERMISSION";
-    field public static final String ACTION_MANAGE_UNKNOWN_APP_SOURCES = "android.settings.MANAGE_UNKNOWN_APP_SOURCES";
-    field public static final String ACTION_MANAGE_WRITE_SETTINGS = "android.settings.action.MANAGE_WRITE_SETTINGS";
-    field public static final String ACTION_MEMORY_CARD_SETTINGS = "android.settings.MEMORY_CARD_SETTINGS";
-    field public static final String ACTION_NETWORK_OPERATOR_SETTINGS = "android.settings.NETWORK_OPERATOR_SETTINGS";
-    field public static final String ACTION_NFCSHARING_SETTINGS = "android.settings.NFCSHARING_SETTINGS";
-    field public static final String ACTION_NFC_PAYMENT_SETTINGS = "android.settings.NFC_PAYMENT_SETTINGS";
-    field public static final String ACTION_NFC_SETTINGS = "android.settings.NFC_SETTINGS";
-    field public static final String ACTION_NIGHT_DISPLAY_SETTINGS = "android.settings.NIGHT_DISPLAY_SETTINGS";
-    field public static final String ACTION_NOTIFICATION_ASSISTANT_SETTINGS = "android.settings.NOTIFICATION_ASSISTANT_SETTINGS";
-    field public static final String ACTION_NOTIFICATION_LISTENER_DETAIL_SETTINGS = "android.settings.NOTIFICATION_LISTENER_DETAIL_SETTINGS";
-    field public static final String ACTION_NOTIFICATION_LISTENER_SETTINGS = "android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS";
-    field public static final String ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS = "android.settings.NOTIFICATION_POLICY_ACCESS_SETTINGS";
-    field public static final String ACTION_PRINT_SETTINGS = "android.settings.ACTION_PRINT_SETTINGS";
-    field public static final String ACTION_PRIVACY_SETTINGS = "android.settings.PRIVACY_SETTINGS";
-    field public static final String ACTION_PROCESS_WIFI_EASY_CONNECT_URI = "android.settings.PROCESS_WIFI_EASY_CONNECT_URI";
-    field public static final String ACTION_QUICK_ACCESS_WALLET_SETTINGS = "android.settings.QUICK_ACCESS_WALLET_SETTINGS";
-    field public static final String ACTION_QUICK_LAUNCH_SETTINGS = "android.settings.QUICK_LAUNCH_SETTINGS";
-    field public static final String ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS = "android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS";
-    field public static final String ACTION_REQUEST_SET_AUTOFILL_SERVICE = "android.settings.REQUEST_SET_AUTOFILL_SERVICE";
-    field public static final String ACTION_SEARCH_SETTINGS = "android.search.action.SEARCH_SETTINGS";
-    field public static final String ACTION_SECURITY_SETTINGS = "android.settings.SECURITY_SETTINGS";
-    field public static final String ACTION_SETTINGS = "android.settings.SETTINGS";
-    field public static final String ACTION_SHOW_REGULATORY_INFO = "android.settings.SHOW_REGULATORY_INFO";
-    field public static final String ACTION_SHOW_WORK_POLICY_INFO = "android.settings.SHOW_WORK_POLICY_INFO";
-    field public static final String ACTION_SOUND_SETTINGS = "android.settings.SOUND_SETTINGS";
-    field @Deprecated public static final String ACTION_STORAGE_VOLUME_ACCESS_SETTINGS = "android.settings.STORAGE_VOLUME_ACCESS_SETTINGS";
-    field public static final String ACTION_SYNC_SETTINGS = "android.settings.SYNC_SETTINGS";
-    field public static final String ACTION_USAGE_ACCESS_SETTINGS = "android.settings.USAGE_ACCESS_SETTINGS";
-    field public static final String ACTION_USER_DICTIONARY_SETTINGS = "android.settings.USER_DICTIONARY_SETTINGS";
-    field public static final String ACTION_VOICE_CONTROL_AIRPLANE_MODE = "android.settings.VOICE_CONTROL_AIRPLANE_MODE";
-    field public static final String ACTION_VOICE_CONTROL_BATTERY_SAVER_MODE = "android.settings.VOICE_CONTROL_BATTERY_SAVER_MODE";
-    field public static final String ACTION_VOICE_CONTROL_DO_NOT_DISTURB_MODE = "android.settings.VOICE_CONTROL_DO_NOT_DISTURB_MODE";
-    field public static final String ACTION_VOICE_INPUT_SETTINGS = "android.settings.VOICE_INPUT_SETTINGS";
-    field public static final String ACTION_VPN_SETTINGS = "android.settings.VPN_SETTINGS";
-    field public static final String ACTION_VR_LISTENER_SETTINGS = "android.settings.VR_LISTENER_SETTINGS";
-    field public static final String ACTION_WEBVIEW_SETTINGS = "android.settings.WEBVIEW_SETTINGS";
-    field public static final String ACTION_WIFI_ADD_NETWORKS = "android.settings.WIFI_ADD_NETWORKS";
-    field public static final String ACTION_WIFI_IP_SETTINGS = "android.settings.WIFI_IP_SETTINGS";
-    field public static final String ACTION_WIFI_SETTINGS = "android.settings.WIFI_SETTINGS";
-    field public static final String ACTION_WIRELESS_SETTINGS = "android.settings.WIRELESS_SETTINGS";
-    field public static final String ACTION_ZEN_MODE_PRIORITY_SETTINGS = "android.settings.ZEN_MODE_PRIORITY_SETTINGS";
-    field public static final int ADD_WIFI_RESULT_ADD_OR_UPDATE_FAILED = 1; // 0x1
-    field public static final int ADD_WIFI_RESULT_ALREADY_EXISTS = 2; // 0x2
-    field public static final int ADD_WIFI_RESULT_SUCCESS = 0; // 0x0
-    field public static final String AUTHORITY = "settings";
-    field public static final String EXTRA_ACCOUNT_TYPES = "account_types";
-    field public static final String EXTRA_AIRPLANE_MODE_ENABLED = "airplane_mode_enabled";
-    field public static final String EXTRA_APP_PACKAGE = "android.provider.extra.APP_PACKAGE";
-    field public static final String EXTRA_AUTHORITIES = "authorities";
-    field public static final String EXTRA_BATTERY_SAVER_MODE_ENABLED = "android.settings.extra.battery_saver_mode_enabled";
-    field public static final String EXTRA_BIOMETRIC_AUTHENTICATORS_ALLOWED = "android.provider.extra.BIOMETRIC_AUTHENTICATORS_ALLOWED";
-    field public static final String EXTRA_CHANNEL_ID = "android.provider.extra.CHANNEL_ID";
-    field public static final String EXTRA_CONVERSATION_ID = "android.provider.extra.CONVERSATION_ID";
-    field public static final String EXTRA_DO_NOT_DISTURB_MODE_ENABLED = "android.settings.extra.do_not_disturb_mode_enabled";
-    field public static final String EXTRA_DO_NOT_DISTURB_MODE_MINUTES = "android.settings.extra.do_not_disturb_mode_minutes";
-    field public static final String EXTRA_EASY_CONNECT_ATTEMPTED_SSID = "android.provider.extra.EASY_CONNECT_ATTEMPTED_SSID";
-    field public static final String EXTRA_EASY_CONNECT_BAND_LIST = "android.provider.extra.EASY_CONNECT_BAND_LIST";
-    field public static final String EXTRA_EASY_CONNECT_CHANNEL_LIST = "android.provider.extra.EASY_CONNECT_CHANNEL_LIST";
-    field public static final String EXTRA_EASY_CONNECT_ERROR_CODE = "android.provider.extra.EASY_CONNECT_ERROR_CODE";
-    field public static final String EXTRA_INPUT_METHOD_ID = "input_method_id";
-    field public static final String EXTRA_NOTIFICATION_LISTENER_COMPONENT_NAME = "android.provider.extra.NOTIFICATION_LISTENER_COMPONENT_NAME";
-    field public static final String EXTRA_SUB_ID = "android.provider.extra.SUB_ID";
-    field public static final String EXTRA_WIFI_NETWORK_LIST = "android.provider.extra.WIFI_NETWORK_LIST";
-    field public static final String EXTRA_WIFI_NETWORK_RESULT_LIST = "android.provider.extra.WIFI_NETWORK_RESULT_LIST";
-    field public static final String INTENT_CATEGORY_USAGE_ACCESS_CONFIG = "android.intent.category.USAGE_ACCESS_CONFIG";
-    field public static final String METADATA_USAGE_ACCESS_REASON = "android.settings.metadata.USAGE_ACCESS_REASON";
-  }
-
-  public static final class Settings.Global extends android.provider.Settings.NameValueTable {
-    ctor public Settings.Global();
-    method public static float getFloat(android.content.ContentResolver, String, float);
-    method public static float getFloat(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
-    method public static int getInt(android.content.ContentResolver, String, int);
-    method public static int getInt(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
-    method public static long getLong(android.content.ContentResolver, String, long);
-    method public static long getLong(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
-    method public static String getString(android.content.ContentResolver, String);
-    method public static android.net.Uri getUriFor(String);
-    method public static boolean putFloat(android.content.ContentResolver, String, float);
-    method public static boolean putInt(android.content.ContentResolver, String, int);
-    method public static boolean putLong(android.content.ContentResolver, String, long);
-    method public static boolean putString(android.content.ContentResolver, String, String);
-    field public static final String ADB_ENABLED = "adb_enabled";
-    field public static final String AIRPLANE_MODE_ON = "airplane_mode_on";
-    field public static final String AIRPLANE_MODE_RADIOS = "airplane_mode_radios";
-    field public static final String ALWAYS_FINISH_ACTIVITIES = "always_finish_activities";
-    field public static final String ANIMATOR_DURATION_SCALE = "animator_duration_scale";
-    field public static final String APPLY_RAMPING_RINGER = "apply_ramping_ringer";
-    field public static final String AUTO_TIME = "auto_time";
-    field public static final String AUTO_TIME_ZONE = "auto_time_zone";
-    field public static final String BLUETOOTH_ON = "bluetooth_on";
-    field public static final String BOOT_COUNT = "boot_count";
-    field public static final String CONTACT_METADATA_SYNC_ENABLED = "contact_metadata_sync_enabled";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DATA_ROAMING = "data_roaming";
-    field public static final String DEBUG_APP = "debug_app";
-    field public static final String DEVELOPMENT_SETTINGS_ENABLED = "development_settings_enabled";
-    field public static final String DEVICE_NAME = "device_name";
-    field public static final String DEVICE_PROVISIONED = "device_provisioned";
-    field public static final String HTTP_PROXY = "http_proxy";
-    field @Deprecated public static final String INSTALL_NON_MARKET_APPS = "install_non_market_apps";
-    field public static final String MODE_RINGER = "mode_ringer";
-    field public static final String NETWORK_PREFERENCE = "network_preference";
-    field public static final String RADIO_BLUETOOTH = "bluetooth";
-    field public static final String RADIO_CELL = "cell";
-    field public static final String RADIO_NFC = "nfc";
-    field public static final String RADIO_WIFI = "wifi";
-    field @Deprecated public static final String SHOW_PROCESSES = "show_processes";
-    field public static final String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
-    field public static final String TRANSITION_ANIMATION_SCALE = "transition_animation_scale";
-    field public static final String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
-    field public static final String USE_GOOGLE_MAIL = "use_google_mail";
-    field public static final String WAIT_FOR_DEBUGGER = "wait_for_debugger";
-    field public static final String WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN = "wifi_device_owner_configs_lockdown";
-    field public static final String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count";
-    field public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = "wifi_mobile_data_transition_wakelock_timeout_ms";
-    field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = "wifi_networks_available_notification_on";
-    field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = "wifi_networks_available_repeat_delay";
-    field @Deprecated public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept";
-    field public static final String WIFI_ON = "wifi_on";
-    field @Deprecated public static final String WIFI_SLEEP_POLICY = "wifi_sleep_policy";
-    field @Deprecated public static final int WIFI_SLEEP_POLICY_DEFAULT = 0; // 0x0
-    field @Deprecated public static final int WIFI_SLEEP_POLICY_NEVER = 2; // 0x2
-    field @Deprecated public static final int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED = 1; // 0x1
-    field public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on";
-    field public static final String WINDOW_ANIMATION_SCALE = "window_animation_scale";
-  }
-
-  public static class Settings.NameValueTable implements android.provider.BaseColumns {
-    ctor public Settings.NameValueTable();
-    method public static android.net.Uri getUriFor(android.net.Uri, String);
-    method protected static boolean putString(android.content.ContentResolver, android.net.Uri, String, String);
-    field public static final String NAME = "name";
-    field public static final String VALUE = "value";
-  }
-
-  public static final class Settings.Panel {
-    field public static final String ACTION_INTERNET_CONNECTIVITY = "android.settings.panel.action.INTERNET_CONNECTIVITY";
-    field public static final String ACTION_NFC = "android.settings.panel.action.NFC";
-    field public static final String ACTION_VOLUME = "android.settings.panel.action.VOLUME";
-    field public static final String ACTION_WIFI = "android.settings.panel.action.WIFI";
-  }
-
-  public static final class Settings.Secure extends android.provider.Settings.NameValueTable {
-    ctor public Settings.Secure();
-    method public static float getFloat(android.content.ContentResolver, String, float);
-    method public static float getFloat(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
-    method public static int getInt(android.content.ContentResolver, String, int);
-    method public static int getInt(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
-    method public static long getLong(android.content.ContentResolver, String, long);
-    method public static long getLong(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
-    method public static String getString(android.content.ContentResolver, String);
-    method public static android.net.Uri getUriFor(String);
-    method @Deprecated public static boolean isLocationProviderEnabled(android.content.ContentResolver, String);
-    method public static boolean putFloat(android.content.ContentResolver, String, float);
-    method public static boolean putInt(android.content.ContentResolver, String, int);
-    method public static boolean putLong(android.content.ContentResolver, String, long);
-    method public static boolean putString(android.content.ContentResolver, String, String);
-    method @Deprecated public static void setLocationProviderEnabled(android.content.ContentResolver, String, boolean);
-    field public static final String ACCESSIBILITY_DISPLAY_INVERSION_ENABLED = "accessibility_display_inversion_enabled";
-    field public static final String ACCESSIBILITY_ENABLED = "accessibility_enabled";
-    field @Deprecated public static final String ACCESSIBILITY_SPEAK_PASSWORD = "speak_password";
-    field @Deprecated public static final String ADB_ENABLED = "adb_enabled";
-    field public static final String ALLOWED_GEOLOCATION_ORIGINS = "allowed_geolocation_origins";
-    field @Deprecated public static final String ALLOW_MOCK_LOCATION = "mock_location";
-    field public static final String ANDROID_ID = "android_id";
-    field @Deprecated public static final String BACKGROUND_DATA = "background_data";
-    field @Deprecated public static final String BLUETOOTH_ON = "bluetooth_on";
-    field public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String DATA_ROAMING = "data_roaming";
-    field public static final String DEFAULT_INPUT_METHOD = "default_input_method";
-    field @Deprecated public static final String DEVELOPMENT_SETTINGS_ENABLED = "development_settings_enabled";
-    field @Deprecated public static final String DEVICE_PROVISIONED = "device_provisioned";
-    field public static final String ENABLED_ACCESSIBILITY_SERVICES = "enabled_accessibility_services";
-    field public static final String ENABLED_INPUT_METHODS = "enabled_input_methods";
-    field @Deprecated public static final String HTTP_PROXY = "http_proxy";
-    field public static final String INPUT_METHOD_SELECTOR_VISIBILITY = "input_method_selector_visibility";
-    field @Deprecated public static final String INSTALL_NON_MARKET_APPS = "install_non_market_apps";
-    field @Deprecated public static final String LOCATION_MODE = "location_mode";
-    field @Deprecated public static final int LOCATION_MODE_BATTERY_SAVING = 2; // 0x2
-    field @Deprecated public static final int LOCATION_MODE_HIGH_ACCURACY = 3; // 0x3
-    field public static final int LOCATION_MODE_OFF = 0; // 0x0
-    field @Deprecated public static final int LOCATION_MODE_SENSORS_ONLY = 1; // 0x1
-    field @Deprecated public static final String LOCATION_PROVIDERS_ALLOWED = "location_providers_allowed";
-    field @Deprecated public static final String LOCK_PATTERN_ENABLED = "lock_pattern_autolock";
-    field @Deprecated public static final String LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED = "lock_pattern_tactile_feedback_enabled";
-    field @Deprecated public static final String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern";
-    field @Deprecated public static final String LOGGING_ID = "logging_id";
-    field @Deprecated public static final String NETWORK_PREFERENCE = "network_preference";
-    field public static final String PARENTAL_CONTROL_ENABLED = "parental_control_enabled";
-    field public static final String PARENTAL_CONTROL_LAST_UPDATE = "parental_control_last_update";
-    field public static final String PARENTAL_CONTROL_REDIRECT_URL = "parental_control_redirect_url";
-    field public static final String RTT_CALLING_MODE = "rtt_calling_mode";
-    field public static final String SECURE_FRP_MODE = "secure_frp_mode";
-    field public static final String SELECTED_INPUT_METHOD_SUBTYPE = "selected_input_method_subtype";
-    field public static final String SETTINGS_CLASSNAME = "settings_classname";
-    field public static final String SKIP_FIRST_USE_HINTS = "skip_first_use_hints";
-    field public static final String TOUCH_EXPLORATION_ENABLED = "touch_exploration_enabled";
-    field @Deprecated public static final String TTS_DEFAULT_COUNTRY = "tts_default_country";
-    field @Deprecated public static final String TTS_DEFAULT_LANG = "tts_default_lang";
-    field public static final String TTS_DEFAULT_PITCH = "tts_default_pitch";
-    field public static final String TTS_DEFAULT_RATE = "tts_default_rate";
-    field public static final String TTS_DEFAULT_SYNTH = "tts_default_synth";
-    field @Deprecated public static final String TTS_DEFAULT_VARIANT = "tts_default_variant";
-    field public static final String TTS_ENABLED_PLUGINS = "tts_enabled_plugins";
-    field @Deprecated public static final String TTS_USE_DEFAULTS = "tts_use_defaults";
-    field @Deprecated public static final String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
-    field @Deprecated public static final String USE_GOOGLE_MAIL = "use_google_mail";
-    field @Deprecated public static final String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count";
-    field @Deprecated public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = "wifi_mobile_data_transition_wakelock_timeout_ms";
-    field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = "wifi_networks_available_notification_on";
-    field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = "wifi_networks_available_repeat_delay";
-    field @Deprecated public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept";
-    field @Deprecated public static final String WIFI_ON = "wifi_on";
-    field @Deprecated public static final String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE = "wifi_watchdog_acceptable_packet_loss_percentage";
-    field @Deprecated public static final String WIFI_WATCHDOG_AP_COUNT = "wifi_watchdog_ap_count";
-    field @Deprecated public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS = "wifi_watchdog_background_check_delay_ms";
-    field @Deprecated public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED = "wifi_watchdog_background_check_enabled";
-    field @Deprecated public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS = "wifi_watchdog_background_check_timeout_ms";
-    field @Deprecated public static final String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT = "wifi_watchdog_initial_ignored_ping_count";
-    field @Deprecated public static final String WIFI_WATCHDOG_MAX_AP_CHECKS = "wifi_watchdog_max_ap_checks";
-    field @Deprecated public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on";
-    field @Deprecated public static final String WIFI_WATCHDOG_PING_COUNT = "wifi_watchdog_ping_count";
-    field @Deprecated public static final String WIFI_WATCHDOG_PING_DELAY_MS = "wifi_watchdog_ping_delay_ms";
-    field @Deprecated public static final String WIFI_WATCHDOG_PING_TIMEOUT_MS = "wifi_watchdog_ping_timeout_ms";
-    field @Deprecated public static final String WIFI_WATCHDOG_WATCH_LIST = "wifi_watchdog_watch_list";
-  }
-
-  public static class Settings.SettingNotFoundException extends android.util.AndroidException {
-    ctor public Settings.SettingNotFoundException(String);
-  }
-
-  public static final class Settings.System extends android.provider.Settings.NameValueTable {
-    ctor public Settings.System();
-    method public static boolean canWrite(android.content.Context);
-    method public static void getConfiguration(android.content.ContentResolver, android.content.res.Configuration);
-    method public static float getFloat(android.content.ContentResolver, String, float);
-    method public static float getFloat(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
-    method public static int getInt(android.content.ContentResolver, String, int);
-    method public static int getInt(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
-    method public static long getLong(android.content.ContentResolver, String, long);
-    method public static long getLong(android.content.ContentResolver, String) throws android.provider.Settings.SettingNotFoundException;
-    method @Deprecated public static boolean getShowGTalkServiceStatus(android.content.ContentResolver);
-    method public static String getString(android.content.ContentResolver, String);
-    method public static android.net.Uri getUriFor(String);
-    method public static boolean putConfiguration(android.content.ContentResolver, android.content.res.Configuration);
-    method public static boolean putFloat(android.content.ContentResolver, String, float);
-    method public static boolean putInt(android.content.ContentResolver, String, int);
-    method public static boolean putLong(android.content.ContentResolver, String, long);
-    method public static boolean putString(android.content.ContentResolver, String, String);
-    method @Deprecated public static void setShowGTalkServiceStatus(android.content.ContentResolver, boolean);
-    field public static final String ACCELEROMETER_ROTATION = "accelerometer_rotation";
-    field @Deprecated public static final String ADB_ENABLED = "adb_enabled";
-    field @Deprecated public static final String AIRPLANE_MODE_ON = "airplane_mode_on";
-    field @Deprecated public static final String AIRPLANE_MODE_RADIOS = "airplane_mode_radios";
-    field public static final String ALARM_ALERT = "alarm_alert";
-    field @Deprecated public static final String ALWAYS_FINISH_ACTIVITIES = "always_finish_activities";
-    field @Deprecated public static final String ANDROID_ID = "android_id";
-    field @Deprecated public static final String ANIMATOR_DURATION_SCALE = "animator_duration_scale";
-    field @Deprecated public static final String AUTO_TIME = "auto_time";
-    field @Deprecated public static final String AUTO_TIME_ZONE = "auto_time_zone";
-    field public static final String BLUETOOTH_DISCOVERABILITY = "bluetooth_discoverability";
-    field public static final String BLUETOOTH_DISCOVERABILITY_TIMEOUT = "bluetooth_discoverability_timeout";
-    field @Deprecated public static final String BLUETOOTH_ON = "bluetooth_on";
-    field public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String DATA_ROAMING = "data_roaming";
-    field public static final String DATE_FORMAT = "date_format";
-    field @Deprecated public static final String DEBUG_APP = "debug_app";
-    field public static final android.net.Uri DEFAULT_ALARM_ALERT_URI;
-    field public static final android.net.Uri DEFAULT_NOTIFICATION_URI;
-    field public static final android.net.Uri DEFAULT_RINGTONE_URI;
-    field @Deprecated public static final String DEVICE_PROVISIONED = "device_provisioned";
-    field @Deprecated public static final String DIM_SCREEN = "dim_screen";
-    field public static final String DTMF_TONE_TYPE_WHEN_DIALING = "dtmf_tone_type";
-    field public static final String DTMF_TONE_WHEN_DIALING = "dtmf_tone";
-    field public static final String END_BUTTON_BEHAVIOR = "end_button_behavior";
-    field public static final String FONT_SCALE = "font_scale";
-    field public static final String HAPTIC_FEEDBACK_ENABLED = "haptic_feedback_enabled";
-    field @Deprecated public static final String HTTP_PROXY = "http_proxy";
-    field @Deprecated public static final String INSTALL_NON_MARKET_APPS = "install_non_market_apps";
-    field @Deprecated public static final String LOCATION_PROVIDERS_ALLOWED = "location_providers_allowed";
-    field @Deprecated public static final String LOCK_PATTERN_ENABLED = "lock_pattern_autolock";
-    field @Deprecated public static final String LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED = "lock_pattern_tactile_feedback_enabled";
-    field @Deprecated public static final String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern";
-    field @Deprecated public static final String LOGGING_ID = "logging_id";
-    field @Deprecated public static final String MODE_RINGER = "mode_ringer";
-    field public static final String MODE_RINGER_STREAMS_AFFECTED = "mode_ringer_streams_affected";
-    field public static final String MUTE_STREAMS_AFFECTED = "mute_streams_affected";
-    field @Deprecated public static final String NETWORK_PREFERENCE = "network_preference";
-    field @Deprecated public static final String NEXT_ALARM_FORMATTED = "next_alarm_formatted";
-    field public static final String NOTIFICATION_SOUND = "notification_sound";
-    field @Deprecated public static final String PARENTAL_CONTROL_ENABLED = "parental_control_enabled";
-    field @Deprecated public static final String PARENTAL_CONTROL_LAST_UPDATE = "parental_control_last_update";
-    field @Deprecated public static final String PARENTAL_CONTROL_REDIRECT_URL = "parental_control_redirect_url";
-    field @Deprecated public static final String RADIO_BLUETOOTH = "bluetooth";
-    field @Deprecated public static final String RADIO_CELL = "cell";
-    field @Deprecated public static final String RADIO_NFC = "nfc";
-    field @Deprecated public static final String RADIO_WIFI = "wifi";
-    field public static final String RINGTONE = "ringtone";
-    field public static final String SCREEN_BRIGHTNESS = "screen_brightness";
-    field public static final String SCREEN_BRIGHTNESS_MODE = "screen_brightness_mode";
-    field public static final int SCREEN_BRIGHTNESS_MODE_AUTOMATIC = 1; // 0x1
-    field public static final int SCREEN_BRIGHTNESS_MODE_MANUAL = 0; // 0x0
-    field public static final String SCREEN_OFF_TIMEOUT = "screen_off_timeout";
-    field @Deprecated public static final String SETTINGS_CLASSNAME = "settings_classname";
-    field public static final String SETUP_WIZARD_HAS_RUN = "setup_wizard_has_run";
-    field public static final String SHOW_GTALK_SERVICE_STATUS = "SHOW_GTALK_SERVICE_STATUS";
-    field @Deprecated public static final String SHOW_PROCESSES = "show_processes";
-    field @Deprecated public static final String SHOW_WEB_SUGGESTIONS = "show_web_suggestions";
-    field public static final String SOUND_EFFECTS_ENABLED = "sound_effects_enabled";
-    field @Deprecated public static final String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
-    field public static final String TEXT_AUTO_CAPS = "auto_caps";
-    field public static final String TEXT_AUTO_PUNCTUATE = "auto_punctuate";
-    field public static final String TEXT_AUTO_REPLACE = "auto_replace";
-    field public static final String TEXT_SHOW_PASSWORD = "show_password";
-    field public static final String TIME_12_24 = "time_12_24";
-    field @Deprecated public static final String TRANSITION_ANIMATION_SCALE = "transition_animation_scale";
-    field @Deprecated public static final String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
-    field public static final String USER_ROTATION = "user_rotation";
-    field @Deprecated public static final String USE_GOOGLE_MAIL = "use_google_mail";
-    field public static final String VIBRATE_ON = "vibrate_on";
-    field public static final String VIBRATE_WHEN_RINGING = "vibrate_when_ringing";
-    field @Deprecated public static final String WAIT_FOR_DEBUGGER = "wait_for_debugger";
-    field @Deprecated public static final String WALLPAPER_ACTIVITY = "wallpaper_activity";
-    field @Deprecated public static final String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count";
-    field @Deprecated public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = "wifi_mobile_data_transition_wakelock_timeout_ms";
-    field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = "wifi_networks_available_notification_on";
-    field @Deprecated public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = "wifi_networks_available_repeat_delay";
-    field @Deprecated public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept";
-    field @Deprecated public static final String WIFI_ON = "wifi_on";
-    field @Deprecated public static final String WIFI_SLEEP_POLICY = "wifi_sleep_policy";
-    field @Deprecated public static final int WIFI_SLEEP_POLICY_DEFAULT = 0; // 0x0
-    field @Deprecated public static final int WIFI_SLEEP_POLICY_NEVER = 2; // 0x2
-    field @Deprecated public static final int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED = 1; // 0x1
-    field @Deprecated public static final String WIFI_STATIC_DNS1 = "wifi_static_dns1";
-    field @Deprecated public static final String WIFI_STATIC_DNS2 = "wifi_static_dns2";
-    field @Deprecated public static final String WIFI_STATIC_GATEWAY = "wifi_static_gateway";
-    field @Deprecated public static final String WIFI_STATIC_IP = "wifi_static_ip";
-    field @Deprecated public static final String WIFI_STATIC_NETMASK = "wifi_static_netmask";
-    field @Deprecated public static final String WIFI_USE_STATIC_IP = "wifi_use_static_ip";
-    field @Deprecated public static final String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE = "wifi_watchdog_acceptable_packet_loss_percentage";
-    field @Deprecated public static final String WIFI_WATCHDOG_AP_COUNT = "wifi_watchdog_ap_count";
-    field @Deprecated public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS = "wifi_watchdog_background_check_delay_ms";
-    field @Deprecated public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED = "wifi_watchdog_background_check_enabled";
-    field @Deprecated public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS = "wifi_watchdog_background_check_timeout_ms";
-    field @Deprecated public static final String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT = "wifi_watchdog_initial_ignored_ping_count";
-    field @Deprecated public static final String WIFI_WATCHDOG_MAX_AP_CHECKS = "wifi_watchdog_max_ap_checks";
-    field @Deprecated public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on";
-    field @Deprecated public static final String WIFI_WATCHDOG_PING_COUNT = "wifi_watchdog_ping_count";
-    field @Deprecated public static final String WIFI_WATCHDOG_PING_DELAY_MS = "wifi_watchdog_ping_delay_ms";
-    field @Deprecated public static final String WIFI_WATCHDOG_PING_TIMEOUT_MS = "wifi_watchdog_ping_timeout_ms";
-    field @Deprecated public static final String WINDOW_ANIMATION_SCALE = "window_animation_scale";
-  }
-
-  public class SettingsSlicesContract {
-    field public static final String AUTHORITY = "android.settings.slices";
-    field public static final android.net.Uri BASE_URI;
-    field public static final String KEY_AIRPLANE_MODE = "airplane_mode";
-    field public static final String KEY_BATTERY_SAVER = "battery_saver";
-    field public static final String KEY_BLUETOOTH = "bluetooth";
-    field public static final String KEY_LOCATION = "location";
-    field public static final String KEY_WIFI = "wifi";
-    field public static final String PATH_SETTING_ACTION = "action";
-    field public static final String PATH_SETTING_INTENT = "intent";
-  }
-
-  public class SyncStateContract {
-    ctor public SyncStateContract();
-  }
-
-  public static interface SyncStateContract.Columns extends android.provider.BaseColumns {
-    field public static final String ACCOUNT_NAME = "account_name";
-    field public static final String ACCOUNT_TYPE = "account_type";
-    field public static final String DATA = "data";
-  }
-
-  public static class SyncStateContract.Constants implements android.provider.SyncStateContract.Columns {
-    ctor public SyncStateContract.Constants();
-    field public static final String CONTENT_DIRECTORY = "syncstate";
-  }
-
-  public static final class SyncStateContract.Helpers {
-    ctor public SyncStateContract.Helpers();
-    method public static byte[] get(android.content.ContentProviderClient, android.net.Uri, android.accounts.Account) throws android.os.RemoteException;
-    method public static android.util.Pair<android.net.Uri,byte[]> getWithUri(android.content.ContentProviderClient, android.net.Uri, android.accounts.Account) throws android.os.RemoteException;
-    method public static android.net.Uri insert(android.content.ContentProviderClient, android.net.Uri, android.accounts.Account, byte[]) throws android.os.RemoteException;
-    method public static android.content.ContentProviderOperation newSetOperation(android.net.Uri, android.accounts.Account, byte[]);
-    method public static android.content.ContentProviderOperation newUpdateOperation(android.net.Uri, byte[]);
-    method public static void set(android.content.ContentProviderClient, android.net.Uri, android.accounts.Account, byte[]) throws android.os.RemoteException;
-    method public static void update(android.content.ContentProviderClient, android.net.Uri, byte[]) throws android.os.RemoteException;
-  }
-
-  public final class Telephony {
-  }
-
-  public static interface Telephony.BaseMmsColumns extends android.provider.BaseColumns {
-    field public static final String CONTENT_CLASS = "ct_cls";
-    field public static final String CONTENT_LOCATION = "ct_l";
-    field public static final String CONTENT_TYPE = "ct_t";
-    field public static final String CREATOR = "creator";
-    field public static final String DATE = "date";
-    field public static final String DATE_SENT = "date_sent";
-    field public static final String DELIVERY_REPORT = "d_rpt";
-    field public static final String DELIVERY_TIME = "d_tm";
-    field public static final String EXPIRY = "exp";
-    field public static final String LOCKED = "locked";
-    field public static final String MESSAGE_BOX = "msg_box";
-    field public static final int MESSAGE_BOX_ALL = 0; // 0x0
-    field public static final int MESSAGE_BOX_DRAFTS = 3; // 0x3
-    field public static final int MESSAGE_BOX_FAILED = 5; // 0x5
-    field public static final int MESSAGE_BOX_INBOX = 1; // 0x1
-    field public static final int MESSAGE_BOX_OUTBOX = 4; // 0x4
-    field public static final int MESSAGE_BOX_SENT = 2; // 0x2
-    field public static final String MESSAGE_CLASS = "m_cls";
-    field public static final String MESSAGE_ID = "m_id";
-    field public static final String MESSAGE_SIZE = "m_size";
-    field public static final String MESSAGE_TYPE = "m_type";
-    field public static final String MMS_VERSION = "v";
-    field public static final String PRIORITY = "pri";
-    field public static final String READ = "read";
-    field public static final String READ_REPORT = "rr";
-    field public static final String READ_STATUS = "read_status";
-    field public static final String REPORT_ALLOWED = "rpt_a";
-    field public static final String RESPONSE_STATUS = "resp_st";
-    field public static final String RESPONSE_TEXT = "resp_txt";
-    field public static final String RETRIEVE_STATUS = "retr_st";
-    field public static final String RETRIEVE_TEXT = "retr_txt";
-    field public static final String RETRIEVE_TEXT_CHARSET = "retr_txt_cs";
-    field public static final String SEEN = "seen";
-    field public static final String STATUS = "st";
-    field public static final String SUBJECT = "sub";
-    field public static final String SUBJECT_CHARSET = "sub_cs";
-    field public static final String SUBSCRIPTION_ID = "sub_id";
-    field public static final String TEXT_ONLY = "text_only";
-    field public static final String THREAD_ID = "thread_id";
-    field public static final String TRANSACTION_ID = "tr_id";
-  }
-
-  public static interface Telephony.CanonicalAddressesColumns extends android.provider.BaseColumns {
-    field public static final String ADDRESS = "address";
-  }
-
-  public static final class Telephony.CarrierId implements android.provider.BaseColumns {
-    method @NonNull public static android.net.Uri getSpecificCarrierIdUriForSubscriptionId(int);
-    method public static android.net.Uri getUriForSubscriptionId(int);
-    field public static final String CARRIER_ID = "carrier_id";
-    field public static final String CARRIER_NAME = "carrier_name";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String SPECIFIC_CARRIER_ID = "specific_carrier_id";
-    field public static final String SPECIFIC_CARRIER_ID_NAME = "specific_carrier_id_name";
-  }
-
-  public static final class Telephony.Carriers implements android.provider.BaseColumns {
-    field public static final String APN = "apn";
-    field public static final String AUTH_TYPE = "authtype";
-    field @Deprecated public static final String BEARER = "bearer";
-    field public static final String CARRIER_ENABLED = "carrier_enabled";
-    field public static final String CARRIER_ID = "carrier_id";
-    field @NonNull public static final android.net.Uri CONTENT_URI;
-    field public static final String CURRENT = "current";
-    field public static final String DEFAULT_SORT_ORDER = "name ASC";
-    field @Deprecated public static final String MCC = "mcc";
-    field public static final String MMSC = "mmsc";
-    field public static final String MMSPORT = "mmsport";
-    field public static final String MMSPROXY = "mmsproxy";
-    field @Deprecated public static final String MNC = "mnc";
-    field @Deprecated public static final String MVNO_MATCH_DATA = "mvno_match_data";
-    field @Deprecated public static final String MVNO_TYPE = "mvno_type";
-    field public static final String NAME = "name";
-    field public static final String NETWORK_TYPE_BITMASK = "network_type_bitmask";
-    field @Deprecated public static final String NUMERIC = "numeric";
-    field public static final String PASSWORD = "password";
-    field public static final String PORT = "port";
-    field public static final String PROTOCOL = "protocol";
-    field public static final String PROXY = "proxy";
-    field public static final String ROAMING_PROTOCOL = "roaming_protocol";
-    field public static final String SERVER = "server";
-    field @NonNull public static final android.net.Uri SIM_APN_URI;
-    field public static final String SUBSCRIPTION_ID = "sub_id";
-    field public static final String TYPE = "type";
-    field public static final String USER = "user";
-  }
-
-  public static final class Telephony.Mms implements android.provider.Telephony.BaseMmsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-    field public static final android.net.Uri REPORT_REQUEST_URI;
-    field public static final android.net.Uri REPORT_STATUS_URI;
-  }
-
-  public static final class Telephony.Mms.Addr implements android.provider.BaseColumns {
-    method @NonNull public static android.net.Uri getAddrUriForMessage(@NonNull String);
-    field public static final String ADDRESS = "address";
-    field public static final String CHARSET = "charset";
-    field public static final String CONTACT_ID = "contact_id";
-    field public static final String MSG_ID = "msg_id";
-    field public static final String TYPE = "type";
-  }
-
-  public static final class Telephony.Mms.Draft implements android.provider.Telephony.BaseMmsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-  }
-
-  public static final class Telephony.Mms.Inbox implements android.provider.Telephony.BaseMmsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-  }
-
-  public static final class Telephony.Mms.Intents {
-    field public static final String CONTENT_CHANGED_ACTION = "android.intent.action.CONTENT_CHANGED";
-    field public static final String DELETED_CONTENTS = "deleted_contents";
-  }
-
-  public static final class Telephony.Mms.Outbox implements android.provider.Telephony.BaseMmsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-  }
-
-  public static final class Telephony.Mms.Part implements android.provider.BaseColumns {
-    method @NonNull public static android.net.Uri getPartUriForMessage(@NonNull String);
-    field public static final String CHARSET = "chset";
-    field public static final String CONTENT_DISPOSITION = "cd";
-    field public static final String CONTENT_ID = "cid";
-    field public static final String CONTENT_LOCATION = "cl";
-    field public static final String CONTENT_TYPE = "ct";
-    field @NonNull public static final android.net.Uri CONTENT_URI;
-    field public static final String CT_START = "ctt_s";
-    field public static final String CT_TYPE = "ctt_t";
-    field public static final String FILENAME = "fn";
-    field public static final String MSG_ID = "mid";
-    field public static final String NAME = "name";
-    field public static final String SEQ = "seq";
-    field public static final String TEXT = "text";
-    field public static final String _DATA = "_data";
-  }
-
-  public static final class Telephony.Mms.Rate {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String SENT_TIME = "sent_time";
-  }
-
-  public static final class Telephony.Mms.Sent implements android.provider.Telephony.BaseMmsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-  }
-
-  public static final class Telephony.MmsSms implements android.provider.BaseColumns {
-    field public static final android.net.Uri CONTENT_CONVERSATIONS_URI;
-    field public static final android.net.Uri CONTENT_DRAFT_URI;
-    field public static final android.net.Uri CONTENT_FILTER_BYPHONE_URI;
-    field public static final android.net.Uri CONTENT_LOCKED_URI;
-    field public static final android.net.Uri CONTENT_UNDELIVERED_URI;
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final int ERR_TYPE_GENERIC = 1; // 0x1
-    field public static final int ERR_TYPE_GENERIC_PERMANENT = 10; // 0xa
-    field public static final int ERR_TYPE_MMS_PROTO_PERMANENT = 12; // 0xc
-    field public static final int ERR_TYPE_MMS_PROTO_TRANSIENT = 3; // 0x3
-    field public static final int ERR_TYPE_SMS_PROTO_PERMANENT = 11; // 0xb
-    field public static final int ERR_TYPE_SMS_PROTO_TRANSIENT = 2; // 0x2
-    field public static final int ERR_TYPE_TRANSPORT_FAILURE = 4; // 0x4
-    field public static final int MMS_PROTO = 1; // 0x1
-    field public static final int NO_ERROR = 0; // 0x0
-    field public static final android.net.Uri SEARCH_URI;
-    field public static final int SMS_PROTO = 0; // 0x0
-    field public static final String TYPE_DISCRIMINATOR_COLUMN = "transport_type";
-  }
-
-  public static final class Telephony.MmsSms.PendingMessages implements android.provider.BaseColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DUE_TIME = "due_time";
-    field public static final String ERROR_CODE = "err_code";
-    field public static final String ERROR_TYPE = "err_type";
-    field public static final String LAST_TRY = "last_try";
-    field public static final String MSG_ID = "msg_id";
-    field public static final String MSG_TYPE = "msg_type";
-    field public static final String PROTO_TYPE = "proto_type";
-    field public static final String RETRY_INDEX = "retry_index";
-    field public static final String SUBSCRIPTION_ID = "pending_sub_id";
-  }
-
-  public static final class Telephony.ServiceStateTable {
-    method public static android.net.Uri getUriForSubscriptionId(int);
-    method public static android.net.Uri getUriForSubscriptionIdAndField(int, String);
-    field public static final String AUTHORITY = "service-state";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String IS_MANUAL_NETWORK_SELECTION = "is_manual_network_selection";
-    field public static final String VOICE_OPERATOR_NUMERIC = "voice_operator_numeric";
-    field public static final String VOICE_REG_STATE = "voice_reg_state";
-  }
-
-  public static final class Telephony.Sms implements android.provider.BaseColumns android.provider.Telephony.TextBasedSmsColumns {
-    method public static String getDefaultSmsPackage(android.content.Context);
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-  }
-
-  public static final class Telephony.Sms.Conversations implements android.provider.BaseColumns android.provider.Telephony.TextBasedSmsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-    field public static final String MESSAGE_COUNT = "msg_count";
-    field public static final String SNIPPET = "snippet";
-  }
-
-  public static final class Telephony.Sms.Draft implements android.provider.BaseColumns android.provider.Telephony.TextBasedSmsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-  }
-
-  public static final class Telephony.Sms.Inbox implements android.provider.BaseColumns android.provider.Telephony.TextBasedSmsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-  }
-
-  public static final class Telephony.Sms.Intents {
-    method public static android.telephony.SmsMessage[] getMessagesFromIntent(android.content.Intent);
-    field public static final String ACTION_CHANGE_DEFAULT = "android.provider.Telephony.ACTION_CHANGE_DEFAULT";
-    field public static final String ACTION_DEFAULT_SMS_PACKAGE_CHANGED = "android.provider.action.DEFAULT_SMS_PACKAGE_CHANGED";
-    field public static final String ACTION_EXTERNAL_PROVIDER_CHANGE = "android.provider.action.EXTERNAL_PROVIDER_CHANGE";
-    field public static final String DATA_SMS_RECEIVED_ACTION = "android.intent.action.DATA_SMS_RECEIVED";
-    field public static final String EXTRA_IS_DEFAULT_SMS_APP = "android.provider.extra.IS_DEFAULT_SMS_APP";
-    field public static final String EXTRA_PACKAGE_NAME = "package";
-    field public static final int RESULT_SMS_DATABASE_ERROR = 10; // 0xa
-    field public static final int RESULT_SMS_DISPATCH_FAILURE = 6; // 0x6
-    field public static final int RESULT_SMS_DUPLICATED = 5; // 0x5
-    field public static final int RESULT_SMS_GENERIC_ERROR = 2; // 0x2
-    field public static final int RESULT_SMS_HANDLED = 1; // 0x1
-    field public static final int RESULT_SMS_INVALID_URI = 11; // 0xb
-    field public static final int RESULT_SMS_NULL_MESSAGE = 8; // 0x8
-    field public static final int RESULT_SMS_NULL_PDU = 7; // 0x7
-    field public static final int RESULT_SMS_OUT_OF_MEMORY = 3; // 0x3
-    field public static final int RESULT_SMS_RECEIVED_WHILE_ENCRYPTED = 9; // 0x9
-    field public static final int RESULT_SMS_UNSUPPORTED = 4; // 0x4
-    field @Deprecated public static final String SECRET_CODE_ACTION = "android.provider.Telephony.SECRET_CODE";
-    field public static final String SIM_FULL_ACTION = "android.provider.Telephony.SIM_FULL";
-    field public static final String SMS_CB_RECEIVED_ACTION = "android.provider.Telephony.SMS_CB_RECEIVED";
-    field public static final String SMS_DELIVER_ACTION = "android.provider.Telephony.SMS_DELIVER";
-    field public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
-    field public static final String SMS_REJECTED_ACTION = "android.provider.Telephony.SMS_REJECTED";
-    field public static final String SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED_ACTION = "android.provider.Telephony.SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED";
-    field public static final String WAP_PUSH_DELIVER_ACTION = "android.provider.Telephony.WAP_PUSH_DELIVER";
-    field public static final String WAP_PUSH_RECEIVED_ACTION = "android.provider.Telephony.WAP_PUSH_RECEIVED";
-  }
-
-  public static final class Telephony.Sms.Outbox implements android.provider.BaseColumns android.provider.Telephony.TextBasedSmsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-  }
-
-  public static final class Telephony.Sms.Sent implements android.provider.BaseColumns android.provider.Telephony.TextBasedSmsColumns {
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-  }
-
-  public static interface Telephony.TextBasedSmsColumns {
-    field public static final String ADDRESS = "address";
-    field public static final String BODY = "body";
-    field public static final String CREATOR = "creator";
-    field public static final String DATE = "date";
-    field public static final String DATE_SENT = "date_sent";
-    field public static final String ERROR_CODE = "error_code";
-    field public static final String LOCKED = "locked";
-    field public static final int MESSAGE_TYPE_ALL = 0; // 0x0
-    field public static final int MESSAGE_TYPE_DRAFT = 3; // 0x3
-    field public static final int MESSAGE_TYPE_FAILED = 5; // 0x5
-    field public static final int MESSAGE_TYPE_INBOX = 1; // 0x1
-    field public static final int MESSAGE_TYPE_OUTBOX = 4; // 0x4
-    field public static final int MESSAGE_TYPE_QUEUED = 6; // 0x6
-    field public static final int MESSAGE_TYPE_SENT = 2; // 0x2
-    field public static final String PERSON = "person";
-    field public static final String PROTOCOL = "protocol";
-    field public static final String READ = "read";
-    field public static final String REPLY_PATH_PRESENT = "reply_path_present";
-    field public static final String SEEN = "seen";
-    field public static final String SERVICE_CENTER = "service_center";
-    field public static final String STATUS = "status";
-    field public static final int STATUS_COMPLETE = 0; // 0x0
-    field public static final int STATUS_FAILED = 64; // 0x40
-    field public static final int STATUS_NONE = -1; // 0xffffffff
-    field public static final int STATUS_PENDING = 32; // 0x20
-    field public static final String SUBJECT = "subject";
-    field public static final String SUBSCRIPTION_ID = "sub_id";
-    field public static final String THREAD_ID = "thread_id";
-    field public static final String TYPE = "type";
-  }
-
-  public static final class Telephony.Threads implements android.provider.Telephony.ThreadsColumns {
-    method public static long getOrCreateThreadId(android.content.Context, String);
-    method public static long getOrCreateThreadId(android.content.Context, java.util.Set<java.lang.String>);
-    field public static final int BROADCAST_THREAD = 1; // 0x1
-    field public static final int COMMON_THREAD = 0; // 0x0
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final android.net.Uri OBSOLETE_THREADS_URI;
-  }
-
-  public static interface Telephony.ThreadsColumns extends android.provider.BaseColumns {
-    field public static final String ARCHIVED = "archived";
-    field public static final String DATE = "date";
-    field public static final String ERROR = "error";
-    field public static final String HAS_ATTACHMENT = "has_attachment";
-    field public static final String MESSAGE_COUNT = "message_count";
-    field public static final String READ = "read";
-    field public static final String RECIPIENT_IDS = "recipient_ids";
-    field public static final String SNIPPET = "snippet";
-    field public static final String SNIPPET_CHARSET = "snippet_cs";
-    field public static final String TYPE = "type";
-  }
-
-  public class UserDictionary {
-    ctor public UserDictionary();
-    field public static final String AUTHORITY = "user_dictionary";
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  public static class UserDictionary.Words implements android.provider.BaseColumns {
-    ctor public UserDictionary.Words();
-    method @Deprecated public static void addWord(android.content.Context, String, int, int);
-    method public static void addWord(android.content.Context, String, int, String, java.util.Locale);
-    field public static final String APP_ID = "appid";
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/vnd.google.userword";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.google.userword";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DEFAULT_SORT_ORDER = "frequency DESC";
-    field public static final String FREQUENCY = "frequency";
-    field public static final String LOCALE = "locale";
-    field @Deprecated public static final int LOCALE_TYPE_ALL = 0; // 0x0
-    field @Deprecated public static final int LOCALE_TYPE_CURRENT = 1; // 0x1
-    field public static final String SHORTCUT = "shortcut";
-    field public static final String WORD = "word";
-    field public static final String _ID = "_id";
-  }
-
-  public class VoicemailContract {
-    field public static final String ACTION_FETCH_VOICEMAIL = "android.intent.action.FETCH_VOICEMAIL";
-    field public static final String ACTION_NEW_VOICEMAIL = "android.intent.action.NEW_VOICEMAIL";
-    field public static final String ACTION_SYNC_VOICEMAIL = "android.provider.action.SYNC_VOICEMAIL";
-    field public static final String AUTHORITY = "com.android.voicemail";
-    field public static final String EXTRA_PHONE_ACCOUNT_HANDLE = "android.provider.extra.PHONE_ACCOUNT_HANDLE";
-    field public static final String EXTRA_SELF_CHANGE = "com.android.voicemail.extra.SELF_CHANGE";
-    field public static final String PARAM_KEY_SOURCE_PACKAGE = "source_package";
-  }
-
-  public static final class VoicemailContract.Status implements android.provider.BaseColumns {
-    method public static android.net.Uri buildSourceUri(String);
-    field public static final String CONFIGURATION_STATE = "configuration_state";
-    field public static final int CONFIGURATION_STATE_CAN_BE_CONFIGURED = 2; // 0x2
-    field public static final int CONFIGURATION_STATE_CONFIGURING = 3; // 0x3
-    field public static final int CONFIGURATION_STATE_DISABLED = 5; // 0x5
-    field public static final int CONFIGURATION_STATE_FAILED = 4; // 0x4
-    field public static final int CONFIGURATION_STATE_NOT_CONFIGURED = 1; // 0x1
-    field public static final int CONFIGURATION_STATE_OK = 0; // 0x0
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DATA_CHANNEL_STATE = "data_channel_state";
-    field public static final int DATA_CHANNEL_STATE_BAD_CONFIGURATION = 3; // 0x3
-    field public static final int DATA_CHANNEL_STATE_COMMUNICATION_ERROR = 4; // 0x4
-    field public static final int DATA_CHANNEL_STATE_NO_CONNECTION = 1; // 0x1
-    field public static final int DATA_CHANNEL_STATE_NO_CONNECTION_CELLULAR_REQUIRED = 2; // 0x2
-    field public static final int DATA_CHANNEL_STATE_OK = 0; // 0x0
-    field public static final int DATA_CHANNEL_STATE_SERVER_CONNECTION_ERROR = 6; // 0x6
-    field public static final int DATA_CHANNEL_STATE_SERVER_ERROR = 5; // 0x5
-    field public static final String DIR_TYPE = "vnd.android.cursor.dir/voicemail.source.status";
-    field public static final String ITEM_TYPE = "vnd.android.cursor.item/voicemail.source.status";
-    field public static final String NOTIFICATION_CHANNEL_STATE = "notification_channel_state";
-    field public static final int NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING = 2; // 0x2
-    field public static final int NOTIFICATION_CHANNEL_STATE_NO_CONNECTION = 1; // 0x1
-    field public static final int NOTIFICATION_CHANNEL_STATE_OK = 0; // 0x0
-    field public static final String PHONE_ACCOUNT_COMPONENT_NAME = "phone_account_component_name";
-    field public static final String PHONE_ACCOUNT_ID = "phone_account_id";
-    field public static final String QUOTA_OCCUPIED = "quota_occupied";
-    field public static final String QUOTA_TOTAL = "quota_total";
-    field public static final int QUOTA_UNAVAILABLE = -1; // 0xffffffff
-    field public static final String SETTINGS_URI = "settings_uri";
-    field public static final String SOURCE_PACKAGE = "source_package";
-    field public static final String SOURCE_TYPE = "source_type";
-    field public static final String VOICEMAIL_ACCESS_URI = "voicemail_access_uri";
-  }
-
-  public static final class VoicemailContract.Voicemails implements android.provider.BaseColumns android.provider.OpenableColumns {
-    method public static android.net.Uri buildSourceUri(String);
-    field public static final String ARCHIVED = "archived";
-    field public static final String BACKED_UP = "backed_up";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String DATE = "date";
-    field public static final String DELETED = "deleted";
-    field public static final String DIRTY = "dirty";
-    field public static final int DIRTY_RETAIN = -1; // 0xffffffff
-    field public static final String DIR_TYPE = "vnd.android.cursor.dir/voicemails";
-    field public static final String DURATION = "duration";
-    field public static final String HAS_CONTENT = "has_content";
-    field public static final String IS_OMTP_VOICEMAIL = "is_omtp_voicemail";
-    field public static final String IS_READ = "is_read";
-    field public static final String ITEM_TYPE = "vnd.android.cursor.item/voicemail";
-    field public static final String LAST_MODIFIED = "last_modified";
-    field public static final String MIME_TYPE = "mime_type";
-    field public static final String NEW = "new";
-    field public static final String NUMBER = "number";
-    field public static final String PHONE_ACCOUNT_COMPONENT_NAME = "subscription_component_name";
-    field public static final String PHONE_ACCOUNT_ID = "subscription_id";
-    field public static final String RESTORED = "restored";
-    field public static final String SOURCE_DATA = "source_data";
-    field public static final String SOURCE_PACKAGE = "source_package";
-    field public static final String TRANSCRIPTION = "transcription";
-  }
-
-}
-
-package android.renderscript {
-
-  public class Allocation extends android.renderscript.BaseObj {
-    method public void copy1DRangeFrom(int, int, Object);
-    method public void copy1DRangeFrom(int, int, int[]);
-    method public void copy1DRangeFrom(int, int, short[]);
-    method public void copy1DRangeFrom(int, int, byte[]);
-    method public void copy1DRangeFrom(int, int, float[]);
-    method public void copy1DRangeFrom(int, int, android.renderscript.Allocation, int);
-    method public void copy1DRangeFromUnchecked(int, int, Object);
-    method public void copy1DRangeFromUnchecked(int, int, int[]);
-    method public void copy1DRangeFromUnchecked(int, int, short[]);
-    method public void copy1DRangeFromUnchecked(int, int, byte[]);
-    method public void copy1DRangeFromUnchecked(int, int, float[]);
-    method public void copy1DRangeTo(int, int, Object);
-    method public void copy1DRangeTo(int, int, int[]);
-    method public void copy1DRangeTo(int, int, short[]);
-    method public void copy1DRangeTo(int, int, byte[]);
-    method public void copy1DRangeTo(int, int, float[]);
-    method public void copy1DRangeToUnchecked(int, int, Object);
-    method public void copy1DRangeToUnchecked(int, int, int[]);
-    method public void copy1DRangeToUnchecked(int, int, short[]);
-    method public void copy1DRangeToUnchecked(int, int, byte[]);
-    method public void copy1DRangeToUnchecked(int, int, float[]);
-    method public void copy2DRangeFrom(int, int, int, int, Object);
-    method public void copy2DRangeFrom(int, int, int, int, byte[]);
-    method public void copy2DRangeFrom(int, int, int, int, short[]);
-    method public void copy2DRangeFrom(int, int, int, int, int[]);
-    method public void copy2DRangeFrom(int, int, int, int, float[]);
-    method public void copy2DRangeFrom(int, int, int, int, android.renderscript.Allocation, int, int);
-    method public void copy2DRangeFrom(int, int, android.graphics.Bitmap);
-    method public void copy2DRangeTo(int, int, int, int, Object);
-    method public void copy2DRangeTo(int, int, int, int, byte[]);
-    method public void copy2DRangeTo(int, int, int, int, short[]);
-    method public void copy2DRangeTo(int, int, int, int, int[]);
-    method public void copy2DRangeTo(int, int, int, int, float[]);
-    method public void copy3DRangeFrom(int, int, int, int, int, int, Object);
-    method public void copy3DRangeFrom(int, int, int, int, int, int, android.renderscript.Allocation, int, int, int);
-    method public void copy3DRangeTo(int, int, int, int, int, int, Object);
-    method public void copyFrom(android.renderscript.BaseObj[]);
-    method public void copyFrom(Object);
-    method public void copyFrom(int[]);
-    method public void copyFrom(short[]);
-    method public void copyFrom(byte[]);
-    method public void copyFrom(float[]);
-    method public void copyFrom(android.graphics.Bitmap);
-    method public void copyFrom(android.renderscript.Allocation);
-    method public void copyFromUnchecked(Object);
-    method public void copyFromUnchecked(int[]);
-    method public void copyFromUnchecked(short[]);
-    method public void copyFromUnchecked(byte[]);
-    method public void copyFromUnchecked(float[]);
-    method public void copyTo(android.graphics.Bitmap);
-    method public void copyTo(Object);
-    method public void copyTo(byte[]);
-    method public void copyTo(short[]);
-    method public void copyTo(int[]);
-    method public void copyTo(float[]);
-    method public static android.renderscript.Allocation[] createAllocations(android.renderscript.RenderScript, android.renderscript.Type, int, int);
-    method public static android.renderscript.Allocation createCubemapFromBitmap(android.renderscript.RenderScript, android.graphics.Bitmap, android.renderscript.Allocation.MipmapControl, int);
-    method public static android.renderscript.Allocation createCubemapFromBitmap(android.renderscript.RenderScript, android.graphics.Bitmap);
-    method public static android.renderscript.Allocation createCubemapFromCubeFaces(android.renderscript.RenderScript, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.renderscript.Allocation.MipmapControl, int);
-    method public static android.renderscript.Allocation createCubemapFromCubeFaces(android.renderscript.RenderScript, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap);
-    method public static android.renderscript.Allocation createFromBitmap(android.renderscript.RenderScript, android.graphics.Bitmap, android.renderscript.Allocation.MipmapControl, int);
-    method public static android.renderscript.Allocation createFromBitmap(android.renderscript.RenderScript, android.graphics.Bitmap);
-    method public static android.renderscript.Allocation createFromBitmapResource(android.renderscript.RenderScript, android.content.res.Resources, int, android.renderscript.Allocation.MipmapControl, int);
-    method public static android.renderscript.Allocation createFromBitmapResource(android.renderscript.RenderScript, android.content.res.Resources, int);
-    method public static android.renderscript.Allocation createFromString(android.renderscript.RenderScript, String, int);
-    method public static android.renderscript.Allocation createSized(android.renderscript.RenderScript, android.renderscript.Element, int, int);
-    method public static android.renderscript.Allocation createSized(android.renderscript.RenderScript, android.renderscript.Element, int);
-    method public static android.renderscript.Allocation createTyped(android.renderscript.RenderScript, android.renderscript.Type, android.renderscript.Allocation.MipmapControl, int);
-    method public static android.renderscript.Allocation createTyped(android.renderscript.RenderScript, android.renderscript.Type, int);
-    method public static android.renderscript.Allocation createTyped(android.renderscript.RenderScript, android.renderscript.Type);
-    method public void generateMipmaps();
-    method public java.nio.ByteBuffer getByteBuffer();
-    method public int getBytesSize();
-    method public android.renderscript.Element getElement();
-    method public long getStride();
-    method public android.view.Surface getSurface();
-    method public long getTimeStamp();
-    method public android.renderscript.Type getType();
-    method public int getUsage();
-    method public void ioReceive();
-    method public void ioSend();
-    method @Deprecated public void resize(int);
-    method public void setAutoPadding(boolean);
-    method public void setFromFieldPacker(int, android.renderscript.FieldPacker);
-    method public void setFromFieldPacker(int, int, android.renderscript.FieldPacker);
-    method public void setFromFieldPacker(int, int, int, int, android.renderscript.FieldPacker);
-    method public void setOnBufferAvailableListener(android.renderscript.Allocation.OnBufferAvailableListener);
-    method public void setSurface(android.view.Surface);
-    method public void syncAll(int);
-    field public static final int USAGE_GRAPHICS_CONSTANTS = 8; // 0x8
-    field public static final int USAGE_GRAPHICS_RENDER_TARGET = 16; // 0x10
-    field public static final int USAGE_GRAPHICS_TEXTURE = 2; // 0x2
-    field public static final int USAGE_GRAPHICS_VERTEX = 4; // 0x4
-    field public static final int USAGE_IO_INPUT = 32; // 0x20
-    field public static final int USAGE_IO_OUTPUT = 64; // 0x40
-    field public static final int USAGE_SCRIPT = 1; // 0x1
-    field public static final int USAGE_SHARED = 128; // 0x80
-  }
-
-  public enum Allocation.MipmapControl {
-    enum_constant public static final android.renderscript.Allocation.MipmapControl MIPMAP_FULL;
-    enum_constant public static final android.renderscript.Allocation.MipmapControl MIPMAP_NONE;
-    enum_constant public static final android.renderscript.Allocation.MipmapControl MIPMAP_ON_SYNC_TO_TEXTURE;
-  }
-
-  public static interface Allocation.OnBufferAvailableListener {
-    method public void onBufferAvailable(android.renderscript.Allocation);
-  }
-
-  public class AllocationAdapter extends android.renderscript.Allocation {
-    method public static android.renderscript.AllocationAdapter create1D(android.renderscript.RenderScript, android.renderscript.Allocation);
-    method public static android.renderscript.AllocationAdapter create2D(android.renderscript.RenderScript, android.renderscript.Allocation);
-    method public static android.renderscript.AllocationAdapter createTyped(android.renderscript.RenderScript, android.renderscript.Allocation, android.renderscript.Type);
-    method public void resize(int);
-    method public void setFace(android.renderscript.Type.CubemapFace);
-    method public void setLOD(int);
-    method public void setX(int);
-    method public void setY(int);
-    method public void setZ(int);
-  }
-
-  public class BaseObj {
-    method public void destroy();
-    method public String getName();
-    method public void setName(String);
-  }
-
-  public class Byte2 {
-    ctor public Byte2();
-    ctor public Byte2(byte, byte);
-    field public byte x;
-    field public byte y;
-  }
-
-  public class Byte3 {
-    ctor public Byte3();
-    ctor public Byte3(byte, byte, byte);
-    field public byte x;
-    field public byte y;
-    field public byte z;
-  }
-
-  public class Byte4 {
-    ctor public Byte4();
-    ctor public Byte4(byte, byte, byte, byte);
-    field public byte w;
-    field public byte x;
-    field public byte y;
-    field public byte z;
-  }
-
-  public class Double2 {
-    ctor public Double2();
-    ctor public Double2(double, double);
-    field public double x;
-    field public double y;
-  }
-
-  public class Double3 {
-    ctor public Double3();
-    ctor public Double3(double, double, double);
-    field public double x;
-    field public double y;
-    field public double z;
-  }
-
-  public class Double4 {
-    ctor public Double4();
-    ctor public Double4(double, double, double, double);
-    field public double w;
-    field public double x;
-    field public double y;
-    field public double z;
-  }
-
-  public class Element extends android.renderscript.BaseObj {
-    method public static android.renderscript.Element ALLOCATION(android.renderscript.RenderScript);
-    method public static android.renderscript.Element A_8(android.renderscript.RenderScript);
-    method public static android.renderscript.Element BOOLEAN(android.renderscript.RenderScript);
-    method public static android.renderscript.Element ELEMENT(android.renderscript.RenderScript);
-    method public static android.renderscript.Element F16(android.renderscript.RenderScript);
-    method public static android.renderscript.Element F16_2(android.renderscript.RenderScript);
-    method public static android.renderscript.Element F16_3(android.renderscript.RenderScript);
-    method public static android.renderscript.Element F16_4(android.renderscript.RenderScript);
-    method public static android.renderscript.Element F32(android.renderscript.RenderScript);
-    method public static android.renderscript.Element F32_2(android.renderscript.RenderScript);
-    method public static android.renderscript.Element F32_3(android.renderscript.RenderScript);
-    method public static android.renderscript.Element F32_4(android.renderscript.RenderScript);
-    method public static android.renderscript.Element F64(android.renderscript.RenderScript);
-    method public static android.renderscript.Element F64_2(android.renderscript.RenderScript);
-    method public static android.renderscript.Element F64_3(android.renderscript.RenderScript);
-    method public static android.renderscript.Element F64_4(android.renderscript.RenderScript);
-    method public static android.renderscript.Element FONT(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I16(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I16_2(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I16_3(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I16_4(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I32(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I32_2(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I32_3(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I32_4(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I64(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I64_2(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I64_3(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I64_4(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I8(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I8_2(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I8_3(android.renderscript.RenderScript);
-    method public static android.renderscript.Element I8_4(android.renderscript.RenderScript);
-    method @Deprecated public static android.renderscript.Element MATRIX4X4(android.renderscript.RenderScript);
-    method public static android.renderscript.Element MATRIX_2X2(android.renderscript.RenderScript);
-    method public static android.renderscript.Element MATRIX_3X3(android.renderscript.RenderScript);
-    method public static android.renderscript.Element MATRIX_4X4(android.renderscript.RenderScript);
-    method public static android.renderscript.Element MESH(android.renderscript.RenderScript);
-    method public static android.renderscript.Element PROGRAM_FRAGMENT(android.renderscript.RenderScript);
-    method public static android.renderscript.Element PROGRAM_RASTER(android.renderscript.RenderScript);
-    method public static android.renderscript.Element PROGRAM_STORE(android.renderscript.RenderScript);
-    method public static android.renderscript.Element PROGRAM_VERTEX(android.renderscript.RenderScript);
-    method public static android.renderscript.Element RGBA_4444(android.renderscript.RenderScript);
-    method public static android.renderscript.Element RGBA_5551(android.renderscript.RenderScript);
-    method public static android.renderscript.Element RGBA_8888(android.renderscript.RenderScript);
-    method public static android.renderscript.Element RGB_565(android.renderscript.RenderScript);
-    method public static android.renderscript.Element RGB_888(android.renderscript.RenderScript);
-    method public static android.renderscript.Element SAMPLER(android.renderscript.RenderScript);
-    method public static android.renderscript.Element SCRIPT(android.renderscript.RenderScript);
-    method public static android.renderscript.Element TYPE(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U16(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U16_2(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U16_3(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U16_4(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U32(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U32_2(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U32_3(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U32_4(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U64(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U64_2(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U64_3(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U64_4(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U8(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U8_2(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U8_3(android.renderscript.RenderScript);
-    method public static android.renderscript.Element U8_4(android.renderscript.RenderScript);
-    method public static android.renderscript.Element YUV(android.renderscript.RenderScript);
-    method public static android.renderscript.Element createPixel(android.renderscript.RenderScript, android.renderscript.Element.DataType, android.renderscript.Element.DataKind);
-    method public static android.renderscript.Element createVector(android.renderscript.RenderScript, android.renderscript.Element.DataType, int);
-    method public int getBytesSize();
-    method public android.renderscript.Element.DataKind getDataKind();
-    method public android.renderscript.Element.DataType getDataType();
-    method public android.renderscript.Element getSubElement(int);
-    method public int getSubElementArraySize(int);
-    method public int getSubElementCount();
-    method public String getSubElementName(int);
-    method public int getSubElementOffsetBytes(int);
-    method public int getVectorSize();
-    method public boolean isCompatible(android.renderscript.Element);
-    method public boolean isComplex();
-  }
-
-  public static class Element.Builder {
-    ctor public Element.Builder(android.renderscript.RenderScript);
-    method public android.renderscript.Element.Builder add(android.renderscript.Element, String, int);
-    method public android.renderscript.Element.Builder add(android.renderscript.Element, String);
-    method public android.renderscript.Element create();
-  }
-
-  public enum Element.DataKind {
-    enum_constant public static final android.renderscript.Element.DataKind PIXEL_A;
-    enum_constant public static final android.renderscript.Element.DataKind PIXEL_DEPTH;
-    enum_constant public static final android.renderscript.Element.DataKind PIXEL_L;
-    enum_constant public static final android.renderscript.Element.DataKind PIXEL_LA;
-    enum_constant public static final android.renderscript.Element.DataKind PIXEL_RGB;
-    enum_constant public static final android.renderscript.Element.DataKind PIXEL_RGBA;
-    enum_constant public static final android.renderscript.Element.DataKind PIXEL_YUV;
-    enum_constant public static final android.renderscript.Element.DataKind USER;
-  }
-
-  public enum Element.DataType {
-    enum_constant public static final android.renderscript.Element.DataType BOOLEAN;
-    enum_constant public static final android.renderscript.Element.DataType FLOAT_16;
-    enum_constant public static final android.renderscript.Element.DataType FLOAT_32;
-    enum_constant public static final android.renderscript.Element.DataType FLOAT_64;
-    enum_constant public static final android.renderscript.Element.DataType MATRIX_2X2;
-    enum_constant public static final android.renderscript.Element.DataType MATRIX_3X3;
-    enum_constant public static final android.renderscript.Element.DataType MATRIX_4X4;
-    enum_constant public static final android.renderscript.Element.DataType NONE;
-    enum_constant public static final android.renderscript.Element.DataType RS_ALLOCATION;
-    enum_constant public static final android.renderscript.Element.DataType RS_ELEMENT;
-    enum_constant public static final android.renderscript.Element.DataType RS_FONT;
-    enum_constant public static final android.renderscript.Element.DataType RS_MESH;
-    enum_constant public static final android.renderscript.Element.DataType RS_PROGRAM_FRAGMENT;
-    enum_constant public static final android.renderscript.Element.DataType RS_PROGRAM_RASTER;
-    enum_constant public static final android.renderscript.Element.DataType RS_PROGRAM_STORE;
-    enum_constant public static final android.renderscript.Element.DataType RS_PROGRAM_VERTEX;
-    enum_constant public static final android.renderscript.Element.DataType RS_SAMPLER;
-    enum_constant public static final android.renderscript.Element.DataType RS_SCRIPT;
-    enum_constant public static final android.renderscript.Element.DataType RS_TYPE;
-    enum_constant public static final android.renderscript.Element.DataType SIGNED_16;
-    enum_constant public static final android.renderscript.Element.DataType SIGNED_32;
-    enum_constant public static final android.renderscript.Element.DataType SIGNED_64;
-    enum_constant public static final android.renderscript.Element.DataType SIGNED_8;
-    enum_constant public static final android.renderscript.Element.DataType UNSIGNED_16;
-    enum_constant public static final android.renderscript.Element.DataType UNSIGNED_32;
-    enum_constant public static final android.renderscript.Element.DataType UNSIGNED_4_4_4_4;
-    enum_constant public static final android.renderscript.Element.DataType UNSIGNED_5_5_5_1;
-    enum_constant public static final android.renderscript.Element.DataType UNSIGNED_5_6_5;
-    enum_constant public static final android.renderscript.Element.DataType UNSIGNED_64;
-    enum_constant public static final android.renderscript.Element.DataType UNSIGNED_8;
-  }
-
-  public class FieldPacker {
-    ctor public FieldPacker(int);
-    ctor public FieldPacker(byte[]);
-    method public void addBoolean(boolean);
-    method public void addF32(float);
-    method public void addF32(android.renderscript.Float2);
-    method public void addF32(android.renderscript.Float3);
-    method public void addF32(android.renderscript.Float4);
-    method public void addF64(double);
-    method public void addF64(android.renderscript.Double2);
-    method public void addF64(android.renderscript.Double3);
-    method public void addF64(android.renderscript.Double4);
-    method public void addI16(short);
-    method public void addI16(android.renderscript.Short2);
-    method public void addI16(android.renderscript.Short3);
-    method public void addI16(android.renderscript.Short4);
-    method public void addI32(int);
-    method public void addI32(android.renderscript.Int2);
-    method public void addI32(android.renderscript.Int3);
-    method public void addI32(android.renderscript.Int4);
-    method public void addI64(long);
-    method public void addI64(android.renderscript.Long2);
-    method public void addI64(android.renderscript.Long3);
-    method public void addI64(android.renderscript.Long4);
-    method public void addI8(byte);
-    method public void addI8(android.renderscript.Byte2);
-    method public void addI8(android.renderscript.Byte3);
-    method public void addI8(android.renderscript.Byte4);
-    method public void addMatrix(android.renderscript.Matrix4f);
-    method public void addMatrix(android.renderscript.Matrix3f);
-    method public void addMatrix(android.renderscript.Matrix2f);
-    method public void addObj(android.renderscript.BaseObj);
-    method public void addU16(int);
-    method public void addU16(android.renderscript.Int2);
-    method public void addU16(android.renderscript.Int3);
-    method public void addU16(android.renderscript.Int4);
-    method public void addU32(long);
-    method public void addU32(android.renderscript.Long2);
-    method public void addU32(android.renderscript.Long3);
-    method public void addU32(android.renderscript.Long4);
-    method public void addU64(long);
-    method public void addU64(android.renderscript.Long2);
-    method public void addU64(android.renderscript.Long3);
-    method public void addU64(android.renderscript.Long4);
-    method public void addU8(short);
-    method public void addU8(android.renderscript.Short2);
-    method public void addU8(android.renderscript.Short3);
-    method public void addU8(android.renderscript.Short4);
-    method public void align(int);
-    method public final byte[] getData();
-    method public void reset();
-    method public void reset(int);
-    method public void skip(int);
-    method public boolean subBoolean();
-    method public android.renderscript.Byte2 subByte2();
-    method public android.renderscript.Byte3 subByte3();
-    method public android.renderscript.Byte4 subByte4();
-    method public android.renderscript.Double2 subDouble2();
-    method public android.renderscript.Double3 subDouble3();
-    method public android.renderscript.Double4 subDouble4();
-    method public float subF32();
-    method public double subF64();
-    method public android.renderscript.Float2 subFloat2();
-    method public android.renderscript.Float3 subFloat3();
-    method public android.renderscript.Float4 subFloat4();
-    method public short subI16();
-    method public int subI32();
-    method public long subI64();
-    method public byte subI8();
-    method public android.renderscript.Int2 subInt2();
-    method public android.renderscript.Int3 subInt3();
-    method public android.renderscript.Int4 subInt4();
-    method public android.renderscript.Long2 subLong2();
-    method public android.renderscript.Long3 subLong3();
-    method public android.renderscript.Long4 subLong4();
-    method public android.renderscript.Matrix2f subMatrix2f();
-    method public android.renderscript.Matrix3f subMatrix3f();
-    method public android.renderscript.Matrix4f subMatrix4f();
-    method public android.renderscript.Short2 subShort2();
-    method public android.renderscript.Short3 subShort3();
-    method public android.renderscript.Short4 subShort4();
-    method public void subalign(int);
-  }
-
-  public class Float2 {
-    ctor public Float2();
-    ctor public Float2(float, float);
-    field public float x;
-    field public float y;
-  }
-
-  public class Float3 {
-    ctor public Float3();
-    ctor public Float3(float, float, float);
-    field public float x;
-    field public float y;
-    field public float z;
-  }
-
-  public class Float4 {
-    ctor public Float4();
-    ctor public Float4(float, float, float, float);
-    field public float w;
-    field public float x;
-    field public float y;
-    field public float z;
-  }
-
-  public class Int2 {
-    ctor public Int2();
-    ctor public Int2(int, int);
-    field public int x;
-    field public int y;
-  }
-
-  public class Int3 {
-    ctor public Int3();
-    ctor public Int3(int, int, int);
-    field public int x;
-    field public int y;
-    field public int z;
-  }
-
-  public class Int4 {
-    ctor public Int4();
-    ctor public Int4(int, int, int, int);
-    field public int w;
-    field public int x;
-    field public int y;
-    field public int z;
-  }
-
-  public class Long2 {
-    ctor public Long2();
-    ctor public Long2(long, long);
-    field public long x;
-    field public long y;
-  }
-
-  public class Long3 {
-    ctor public Long3();
-    ctor public Long3(long, long, long);
-    field public long x;
-    field public long y;
-    field public long z;
-  }
-
-  public class Long4 {
-    ctor public Long4();
-    ctor public Long4(long, long, long, long);
-    field public long w;
-    field public long x;
-    field public long y;
-    field public long z;
-  }
-
-  public class Matrix2f {
-    ctor public Matrix2f();
-    ctor public Matrix2f(float[]);
-    method public float get(int, int);
-    method public float[] getArray();
-    method public void load(android.renderscript.Matrix2f);
-    method public void loadIdentity();
-    method public void loadMultiply(android.renderscript.Matrix2f, android.renderscript.Matrix2f);
-    method public void loadRotate(float);
-    method public void loadScale(float, float);
-    method public void multiply(android.renderscript.Matrix2f);
-    method public void rotate(float);
-    method public void scale(float, float);
-    method public void set(int, int, float);
-    method public void transpose();
-  }
-
-  public class Matrix3f {
-    ctor public Matrix3f();
-    ctor public Matrix3f(float[]);
-    method public float get(int, int);
-    method public float[] getArray();
-    method public void load(android.renderscript.Matrix3f);
-    method public void loadIdentity();
-    method public void loadMultiply(android.renderscript.Matrix3f, android.renderscript.Matrix3f);
-    method public void loadRotate(float, float, float, float);
-    method public void loadRotate(float);
-    method public void loadScale(float, float);
-    method public void loadScale(float, float, float);
-    method public void loadTranslate(float, float);
-    method public void multiply(android.renderscript.Matrix3f);
-    method public void rotate(float, float, float, float);
-    method public void rotate(float);
-    method public void scale(float, float);
-    method public void scale(float, float, float);
-    method public void set(int, int, float);
-    method public void translate(float, float);
-    method public void transpose();
-  }
-
-  public class Matrix4f {
-    ctor public Matrix4f();
-    ctor public Matrix4f(float[]);
-    method public float get(int, int);
-    method public float[] getArray();
-    method public boolean inverse();
-    method public boolean inverseTranspose();
-    method public void load(android.renderscript.Matrix4f);
-    method public void loadFrustum(float, float, float, float, float, float);
-    method public void loadIdentity();
-    method public void loadMultiply(android.renderscript.Matrix4f, android.renderscript.Matrix4f);
-    method public void loadOrtho(float, float, float, float, float, float);
-    method public void loadOrthoWindow(int, int);
-    method public void loadPerspective(float, float, float, float);
-    method public void loadProjectionNormalized(int, int);
-    method public void loadRotate(float, float, float, float);
-    method public void loadScale(float, float, float);
-    method public void loadTranslate(float, float, float);
-    method public void multiply(android.renderscript.Matrix4f);
-    method public void rotate(float, float, float, float);
-    method public void scale(float, float, float);
-    method public void set(int, int, float);
-    method public void translate(float, float, float);
-    method public void transpose();
-  }
-
-  public class RSDriverException extends android.renderscript.RSRuntimeException {
-    ctor public RSDriverException(String);
-  }
-
-  public class RSIllegalArgumentException extends android.renderscript.RSRuntimeException {
-    ctor public RSIllegalArgumentException(String);
-  }
-
-  public class RSInvalidStateException extends android.renderscript.RSRuntimeException {
-    ctor public RSInvalidStateException(String);
-  }
-
-  public class RSRuntimeException extends java.lang.RuntimeException {
-    ctor public RSRuntimeException(String);
-  }
-
-  public class RenderScript {
-    method public void contextDump();
-    method public static android.renderscript.RenderScript create(android.content.Context);
-    method public static android.renderscript.RenderScript create(android.content.Context, android.renderscript.RenderScript.ContextType);
-    method public static android.renderscript.RenderScript create(android.content.Context, android.renderscript.RenderScript.ContextType, int);
-    method public static android.renderscript.RenderScript createMultiContext(android.content.Context, android.renderscript.RenderScript.ContextType, int, int);
-    method public void destroy();
-    method public void finish();
-    method public final android.content.Context getApplicationContext();
-    method public android.renderscript.RenderScript.RSErrorHandler getErrorHandler();
-    method public android.renderscript.RenderScript.RSMessageHandler getMessageHandler();
-    method public static long getMinorVersion();
-    method public static void releaseAllContexts();
-    method public void sendMessage(int, int[]);
-    method public void setErrorHandler(android.renderscript.RenderScript.RSErrorHandler);
-    method public void setMessageHandler(android.renderscript.RenderScript.RSMessageHandler);
-    method public void setPriority(android.renderscript.RenderScript.Priority);
-    field public static final int CREATE_FLAG_LOW_LATENCY = 2; // 0x2
-    field public static final int CREATE_FLAG_LOW_POWER = 4; // 0x4
-    field public static final int CREATE_FLAG_NONE = 0; // 0x0
-  }
-
-  public enum RenderScript.ContextType {
-    enum_constant public static final android.renderscript.RenderScript.ContextType DEBUG;
-    enum_constant public static final android.renderscript.RenderScript.ContextType NORMAL;
-    enum_constant public static final android.renderscript.RenderScript.ContextType PROFILE;
-  }
-
-  public enum RenderScript.Priority {
-    enum_constant public static final android.renderscript.RenderScript.Priority LOW;
-    enum_constant public static final android.renderscript.RenderScript.Priority NORMAL;
-  }
-
-  public static class RenderScript.RSErrorHandler implements java.lang.Runnable {
-    ctor public RenderScript.RSErrorHandler();
-    method public void run();
-    field protected String mErrorMessage;
-    field protected int mErrorNum;
-  }
-
-  public static class RenderScript.RSMessageHandler implements java.lang.Runnable {
-    ctor public RenderScript.RSMessageHandler();
-    method public void run();
-    field protected int[] mData;
-    field protected int mID;
-    field protected int mLength;
-  }
-
-  public class Sampler extends android.renderscript.BaseObj {
-    method public static android.renderscript.Sampler CLAMP_LINEAR(android.renderscript.RenderScript);
-    method public static android.renderscript.Sampler CLAMP_LINEAR_MIP_LINEAR(android.renderscript.RenderScript);
-    method public static android.renderscript.Sampler CLAMP_NEAREST(android.renderscript.RenderScript);
-    method public static android.renderscript.Sampler MIRRORED_REPEAT_LINEAR(android.renderscript.RenderScript);
-    method public static android.renderscript.Sampler MIRRORED_REPEAT_LINEAR_MIP_LINEAR(android.renderscript.RenderScript);
-    method public static android.renderscript.Sampler MIRRORED_REPEAT_NEAREST(android.renderscript.RenderScript);
-    method public static android.renderscript.Sampler WRAP_LINEAR(android.renderscript.RenderScript);
-    method public static android.renderscript.Sampler WRAP_LINEAR_MIP_LINEAR(android.renderscript.RenderScript);
-    method public static android.renderscript.Sampler WRAP_NEAREST(android.renderscript.RenderScript);
-    method public float getAnisotropy();
-    method public android.renderscript.Sampler.Value getMagnification();
-    method public android.renderscript.Sampler.Value getMinification();
-    method public android.renderscript.Sampler.Value getWrapS();
-    method public android.renderscript.Sampler.Value getWrapT();
-  }
-
-  public static class Sampler.Builder {
-    ctor public Sampler.Builder(android.renderscript.RenderScript);
-    method public android.renderscript.Sampler create();
-    method public void setAnisotropy(float);
-    method public void setMagnification(android.renderscript.Sampler.Value);
-    method public void setMinification(android.renderscript.Sampler.Value);
-    method public void setWrapS(android.renderscript.Sampler.Value);
-    method public void setWrapT(android.renderscript.Sampler.Value);
-  }
-
-  public enum Sampler.Value {
-    enum_constant public static final android.renderscript.Sampler.Value CLAMP;
-    enum_constant public static final android.renderscript.Sampler.Value LINEAR;
-    enum_constant public static final android.renderscript.Sampler.Value LINEAR_MIP_LINEAR;
-    enum_constant public static final android.renderscript.Sampler.Value LINEAR_MIP_NEAREST;
-    enum_constant public static final android.renderscript.Sampler.Value MIRRORED_REPEAT;
-    enum_constant public static final android.renderscript.Sampler.Value NEAREST;
-    enum_constant public static final android.renderscript.Sampler.Value WRAP;
-  }
-
-  public class Script extends android.renderscript.BaseObj {
-    method public void bindAllocation(android.renderscript.Allocation, int);
-    method protected android.renderscript.Script.FieldID createFieldID(int, android.renderscript.Element);
-    method protected android.renderscript.Script.InvokeID createInvokeID(int);
-    method protected android.renderscript.Script.KernelID createKernelID(int, int, android.renderscript.Element, android.renderscript.Element);
-    method protected void forEach(int, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.FieldPacker);
-    method protected void forEach(int, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.FieldPacker, android.renderscript.Script.LaunchOptions);
-    method protected void forEach(int, android.renderscript.Allocation[], android.renderscript.Allocation, android.renderscript.FieldPacker);
-    method protected void forEach(int, android.renderscript.Allocation[], android.renderscript.Allocation, android.renderscript.FieldPacker, android.renderscript.Script.LaunchOptions);
-    method public boolean getVarB(int);
-    method public double getVarD(int);
-    method public float getVarF(int);
-    method public int getVarI(int);
-    method public long getVarJ(int);
-    method public void getVarV(int, android.renderscript.FieldPacker);
-    method protected void invoke(int);
-    method protected void invoke(int, android.renderscript.FieldPacker);
-    method protected void reduce(int, android.renderscript.Allocation[], android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void setTimeZone(String);
-    method public void setVar(int, float);
-    method public void setVar(int, double);
-    method public void setVar(int, int);
-    method public void setVar(int, long);
-    method public void setVar(int, boolean);
-    method public void setVar(int, android.renderscript.BaseObj);
-    method public void setVar(int, android.renderscript.FieldPacker);
-    method public void setVar(int, android.renderscript.FieldPacker, android.renderscript.Element, int[]);
-  }
-
-  public static class Script.Builder {
-  }
-
-  public static class Script.FieldBase {
-    ctor protected Script.FieldBase();
-    method public android.renderscript.Allocation getAllocation();
-    method public android.renderscript.Element getElement();
-    method public android.renderscript.Type getType();
-    method protected void init(android.renderscript.RenderScript, int);
-    method protected void init(android.renderscript.RenderScript, int, int);
-    method public void updateAllocation();
-    field protected android.renderscript.Allocation mAllocation;
-    field protected android.renderscript.Element mElement;
-  }
-
-  public static final class Script.FieldID extends android.renderscript.BaseObj {
-  }
-
-  public static final class Script.InvokeID extends android.renderscript.BaseObj {
-  }
-
-  public static final class Script.KernelID extends android.renderscript.BaseObj {
-  }
-
-  public static final class Script.LaunchOptions {
-    ctor public Script.LaunchOptions();
-    method public int getXEnd();
-    method public int getXStart();
-    method public int getYEnd();
-    method public int getYStart();
-    method public int getZEnd();
-    method public int getZStart();
-    method public android.renderscript.Script.LaunchOptions setX(int, int);
-    method public android.renderscript.Script.LaunchOptions setY(int, int);
-    method public android.renderscript.Script.LaunchOptions setZ(int, int);
-  }
-
-  public class ScriptC extends android.renderscript.Script {
-    ctor protected ScriptC(int, android.renderscript.RenderScript);
-    ctor protected ScriptC(long, android.renderscript.RenderScript);
-    ctor protected ScriptC(android.renderscript.RenderScript, android.content.res.Resources, int);
-    ctor protected ScriptC(android.renderscript.RenderScript, String, byte[], byte[]);
-  }
-
-  public final class ScriptGroup extends android.renderscript.BaseObj {
-    method public Object[] execute(java.lang.Object...);
-    method @Deprecated public void execute();
-    method @Deprecated public void setInput(android.renderscript.Script.KernelID, android.renderscript.Allocation);
-    method @Deprecated public void setOutput(android.renderscript.Script.KernelID, android.renderscript.Allocation);
-  }
-
-  public static final class ScriptGroup.Binding {
-    ctor public ScriptGroup.Binding(android.renderscript.Script.FieldID, Object);
-  }
-
-  @Deprecated public static final class ScriptGroup.Builder {
-    ctor @Deprecated public ScriptGroup.Builder(android.renderscript.RenderScript);
-    method @Deprecated public android.renderscript.ScriptGroup.Builder addConnection(android.renderscript.Type, android.renderscript.Script.KernelID, android.renderscript.Script.FieldID);
-    method @Deprecated public android.renderscript.ScriptGroup.Builder addConnection(android.renderscript.Type, android.renderscript.Script.KernelID, android.renderscript.Script.KernelID);
-    method @Deprecated public android.renderscript.ScriptGroup.Builder addKernel(android.renderscript.Script.KernelID);
-    method @Deprecated public android.renderscript.ScriptGroup create();
-  }
-
-  public static final class ScriptGroup.Builder2 {
-    ctor public ScriptGroup.Builder2(android.renderscript.RenderScript);
-    method public android.renderscript.ScriptGroup.Input addInput();
-    method public android.renderscript.ScriptGroup.Closure addInvoke(android.renderscript.Script.InvokeID, java.lang.Object...);
-    method public android.renderscript.ScriptGroup.Closure addKernel(android.renderscript.Script.KernelID, android.renderscript.Type, java.lang.Object...);
-    method public android.renderscript.ScriptGroup create(String, android.renderscript.ScriptGroup.Future...);
-  }
-
-  public static final class ScriptGroup.Closure extends android.renderscript.BaseObj {
-    method public android.renderscript.ScriptGroup.Future getGlobal(android.renderscript.Script.FieldID);
-    method public android.renderscript.ScriptGroup.Future getReturn();
-  }
-
-  public static final class ScriptGroup.Future {
-  }
-
-  public static final class ScriptGroup.Input {
-  }
-
-  public abstract class ScriptIntrinsic extends android.renderscript.Script {
-  }
-
-  public final class ScriptIntrinsic3DLUT extends android.renderscript.ScriptIntrinsic {
-    method public static android.renderscript.ScriptIntrinsic3DLUT create(android.renderscript.RenderScript, android.renderscript.Element);
-    method public void forEach(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEach(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public android.renderscript.Script.KernelID getKernelID();
-    method public void setLUT(android.renderscript.Allocation);
-  }
-
-  public final class ScriptIntrinsicBLAS extends android.renderscript.ScriptIntrinsic {
-    method public void BNNM(android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation, int, int);
-    method public void CGBMV(int, int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Float2, android.renderscript.Allocation, int);
-    method public void CGEMM(int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Float2, android.renderscript.Allocation);
-    method public void CGEMV(int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Float2, android.renderscript.Allocation, int);
-    method public void CGERC(android.renderscript.Float2, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void CGERU(android.renderscript.Float2, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void CHBMV(int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Float2, android.renderscript.Allocation, int);
-    method public void CHEMM(int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Float2, android.renderscript.Allocation);
-    method public void CHEMV(int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Float2, android.renderscript.Allocation, int);
-    method public void CHER(int, float, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void CHER2(int, android.renderscript.Float2, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void CHER2K(int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, float, android.renderscript.Allocation);
-    method public void CHERK(int, int, float, android.renderscript.Allocation, float, android.renderscript.Allocation);
-    method public void CHPMV(int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Float2, android.renderscript.Allocation, int);
-    method public void CHPR(int, float, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void CHPR2(int, android.renderscript.Float2, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void CSYMM(int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Float2, android.renderscript.Allocation);
-    method public void CSYR2K(int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Float2, android.renderscript.Allocation);
-    method public void CSYRK(int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Float2, android.renderscript.Allocation);
-    method public void CTBMV(int, int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void CTBSV(int, int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void CTPMV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void CTPSV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void CTRMM(int, int, int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void CTRMV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void CTRSM(int, int, int, int, android.renderscript.Float2, android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void CTRSV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void DGBMV(int, int, int, double, android.renderscript.Allocation, android.renderscript.Allocation, int, double, android.renderscript.Allocation, int);
-    method public void DGEMM(int, int, double, android.renderscript.Allocation, android.renderscript.Allocation, double, android.renderscript.Allocation);
-    method public void DGEMV(int, double, android.renderscript.Allocation, android.renderscript.Allocation, int, double, android.renderscript.Allocation, int);
-    method public void DGER(double, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void DSBMV(int, int, double, android.renderscript.Allocation, android.renderscript.Allocation, int, double, android.renderscript.Allocation, int);
-    method public void DSPMV(int, double, android.renderscript.Allocation, android.renderscript.Allocation, int, double, android.renderscript.Allocation, int);
-    method public void DSPR(int, double, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void DSPR2(int, double, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void DSYMM(int, int, double, android.renderscript.Allocation, android.renderscript.Allocation, double, android.renderscript.Allocation);
-    method public void DSYMV(int, double, android.renderscript.Allocation, android.renderscript.Allocation, int, double, android.renderscript.Allocation, int);
-    method public void DSYR(int, double, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void DSYR2(int, double, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void DSYR2K(int, int, double, android.renderscript.Allocation, android.renderscript.Allocation, double, android.renderscript.Allocation);
-    method public void DSYRK(int, int, double, android.renderscript.Allocation, double, android.renderscript.Allocation);
-    method public void DTBMV(int, int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void DTBSV(int, int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void DTPMV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void DTPSV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void DTRMM(int, int, int, int, double, android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void DTRMV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void DTRSM(int, int, int, int, double, android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void DTRSV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void SGBMV(int, int, int, float, android.renderscript.Allocation, android.renderscript.Allocation, int, float, android.renderscript.Allocation, int);
-    method public void SGEMM(int, int, float, android.renderscript.Allocation, android.renderscript.Allocation, float, android.renderscript.Allocation);
-    method public void SGEMV(int, float, android.renderscript.Allocation, android.renderscript.Allocation, int, float, android.renderscript.Allocation, int);
-    method public void SGER(float, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void SSBMV(int, int, float, android.renderscript.Allocation, android.renderscript.Allocation, int, float, android.renderscript.Allocation, int);
-    method public void SSPMV(int, float, android.renderscript.Allocation, android.renderscript.Allocation, int, float, android.renderscript.Allocation, int);
-    method public void SSPR(int, float, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void SSPR2(int, float, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void SSYMM(int, int, float, android.renderscript.Allocation, android.renderscript.Allocation, float, android.renderscript.Allocation);
-    method public void SSYMV(int, float, android.renderscript.Allocation, android.renderscript.Allocation, int, float, android.renderscript.Allocation, int);
-    method public void SSYR(int, float, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void SSYR2(int, float, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void SSYR2K(int, int, float, android.renderscript.Allocation, android.renderscript.Allocation, float, android.renderscript.Allocation);
-    method public void SSYRK(int, int, float, android.renderscript.Allocation, float, android.renderscript.Allocation);
-    method public void STBMV(int, int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void STBSV(int, int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void STPMV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void STPSV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void STRMM(int, int, int, int, float, android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void STRMV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void STRSM(int, int, int, int, float, android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void STRSV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void ZGBMV(int, int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Double2, android.renderscript.Allocation, int);
-    method public void ZGEMM(int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Double2, android.renderscript.Allocation);
-    method public void ZGEMV(int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Double2, android.renderscript.Allocation, int);
-    method public void ZGERC(android.renderscript.Double2, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void ZGERU(android.renderscript.Double2, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void ZHBMV(int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Double2, android.renderscript.Allocation, int);
-    method public void ZHEMM(int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Double2, android.renderscript.Allocation);
-    method public void ZHEMV(int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Double2, android.renderscript.Allocation, int);
-    method public void ZHER(int, double, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void ZHER2(int, android.renderscript.Double2, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void ZHER2K(int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, double, android.renderscript.Allocation);
-    method public void ZHERK(int, int, double, android.renderscript.Allocation, double, android.renderscript.Allocation);
-    method public void ZHPMV(int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, int, android.renderscript.Double2, android.renderscript.Allocation, int);
-    method public void ZHPR(int, double, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void ZHPR2(int, android.renderscript.Double2, android.renderscript.Allocation, int, android.renderscript.Allocation, int, android.renderscript.Allocation);
-    method public void ZSYMM(int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Double2, android.renderscript.Allocation);
-    method public void ZSYR2K(int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Double2, android.renderscript.Allocation);
-    method public void ZSYRK(int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Double2, android.renderscript.Allocation);
-    method public void ZTBMV(int, int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void ZTBSV(int, int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void ZTPMV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void ZTPSV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void ZTRMM(int, int, int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void ZTRMV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public void ZTRSM(int, int, int, int, android.renderscript.Double2, android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void ZTRSV(int, int, int, android.renderscript.Allocation, android.renderscript.Allocation, int);
-    method public static android.renderscript.ScriptIntrinsicBLAS create(android.renderscript.RenderScript);
-    field public static final int CONJ_TRANSPOSE = 113; // 0x71
-    field public static final int LEFT = 141; // 0x8d
-    field public static final int LOWER = 122; // 0x7a
-    field public static final int NON_UNIT = 131; // 0x83
-    field public static final int NO_TRANSPOSE = 111; // 0x6f
-    field public static final int RIGHT = 142; // 0x8e
-    field public static final int TRANSPOSE = 112; // 0x70
-    field public static final int UNIT = 132; // 0x84
-    field public static final int UPPER = 121; // 0x79
-  }
-
-  public class ScriptIntrinsicBlend extends android.renderscript.ScriptIntrinsic {
-    method public static android.renderscript.ScriptIntrinsicBlend create(android.renderscript.RenderScript, android.renderscript.Element);
-    method public void forEachAdd(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachAdd(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachClear(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachClear(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachDst(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachDst(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachDstAtop(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachDstAtop(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachDstIn(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachDstIn(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachDstOut(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachDstOut(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachDstOver(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachDstOver(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachMultiply(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachMultiply(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachSrc(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachSrc(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachSrcAtop(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachSrcAtop(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachSrcIn(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachSrcIn(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachSrcOut(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachSrcOut(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachSrcOver(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachSrcOver(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachSubtract(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachSubtract(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEachXor(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEachXor(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public android.renderscript.Script.KernelID getKernelIDAdd();
-    method public android.renderscript.Script.KernelID getKernelIDClear();
-    method public android.renderscript.Script.KernelID getKernelIDDst();
-    method public android.renderscript.Script.KernelID getKernelIDDstAtop();
-    method public android.renderscript.Script.KernelID getKernelIDDstIn();
-    method public android.renderscript.Script.KernelID getKernelIDDstOut();
-    method public android.renderscript.Script.KernelID getKernelIDDstOver();
-    method public android.renderscript.Script.KernelID getKernelIDMultiply();
-    method public android.renderscript.Script.KernelID getKernelIDSrc();
-    method public android.renderscript.Script.KernelID getKernelIDSrcAtop();
-    method public android.renderscript.Script.KernelID getKernelIDSrcIn();
-    method public android.renderscript.Script.KernelID getKernelIDSrcOut();
-    method public android.renderscript.Script.KernelID getKernelIDSrcOver();
-    method public android.renderscript.Script.KernelID getKernelIDSubtract();
-    method public android.renderscript.Script.KernelID getKernelIDXor();
-  }
-
-  public final class ScriptIntrinsicBlur extends android.renderscript.ScriptIntrinsic {
-    method public static android.renderscript.ScriptIntrinsicBlur create(android.renderscript.RenderScript, android.renderscript.Element);
-    method public void forEach(android.renderscript.Allocation);
-    method public void forEach(android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public android.renderscript.Script.FieldID getFieldID_Input();
-    method public android.renderscript.Script.KernelID getKernelID();
-    method public void setInput(android.renderscript.Allocation);
-    method public void setRadius(float);
-  }
-
-  public final class ScriptIntrinsicColorMatrix extends android.renderscript.ScriptIntrinsic {
-    method @Deprecated public static android.renderscript.ScriptIntrinsicColorMatrix create(android.renderscript.RenderScript, android.renderscript.Element);
-    method public static android.renderscript.ScriptIntrinsicColorMatrix create(android.renderscript.RenderScript);
-    method public void forEach(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEach(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public android.renderscript.Script.KernelID getKernelID();
-    method public void setAdd(android.renderscript.Float4);
-    method public void setAdd(float, float, float, float);
-    method public void setColorMatrix(android.renderscript.Matrix4f);
-    method public void setColorMatrix(android.renderscript.Matrix3f);
-    method public void setGreyscale();
-    method public void setRGBtoYUV();
-    method public void setYUVtoRGB();
-  }
-
-  public final class ScriptIntrinsicConvolve3x3 extends android.renderscript.ScriptIntrinsic {
-    method public static android.renderscript.ScriptIntrinsicConvolve3x3 create(android.renderscript.RenderScript, android.renderscript.Element);
-    method public void forEach(android.renderscript.Allocation);
-    method public void forEach(android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public android.renderscript.Script.FieldID getFieldID_Input();
-    method public android.renderscript.Script.KernelID getKernelID();
-    method public void setCoefficients(float[]);
-    method public void setInput(android.renderscript.Allocation);
-  }
-
-  public final class ScriptIntrinsicConvolve5x5 extends android.renderscript.ScriptIntrinsic {
-    method public static android.renderscript.ScriptIntrinsicConvolve5x5 create(android.renderscript.RenderScript, android.renderscript.Element);
-    method public void forEach(android.renderscript.Allocation);
-    method public void forEach(android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public android.renderscript.Script.FieldID getFieldID_Input();
-    method public android.renderscript.Script.KernelID getKernelID();
-    method public void setCoefficients(float[]);
-    method public void setInput(android.renderscript.Allocation);
-  }
-
-  public final class ScriptIntrinsicHistogram extends android.renderscript.ScriptIntrinsic {
-    method public static android.renderscript.ScriptIntrinsicHistogram create(android.renderscript.RenderScript, android.renderscript.Element);
-    method public void forEach(android.renderscript.Allocation);
-    method public void forEach(android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public void forEach_Dot(android.renderscript.Allocation);
-    method public void forEach_Dot(android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public android.renderscript.Script.FieldID getFieldID_Input();
-    method public android.renderscript.Script.KernelID getKernelID_Separate();
-    method public void setDotCoefficients(float, float, float, float);
-    method public void setOutput(android.renderscript.Allocation);
-  }
-
-  public final class ScriptIntrinsicLUT extends android.renderscript.ScriptIntrinsic {
-    method public static android.renderscript.ScriptIntrinsicLUT create(android.renderscript.RenderScript, android.renderscript.Element);
-    method public void forEach(android.renderscript.Allocation, android.renderscript.Allocation);
-    method public void forEach(android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public android.renderscript.Script.KernelID getKernelID();
-    method public void setAlpha(int, int);
-    method public void setBlue(int, int);
-    method public void setGreen(int, int);
-    method public void setRed(int, int);
-  }
-
-  public final class ScriptIntrinsicResize extends android.renderscript.ScriptIntrinsic {
-    method public static android.renderscript.ScriptIntrinsicResize create(android.renderscript.RenderScript);
-    method public void forEach_bicubic(android.renderscript.Allocation);
-    method public void forEach_bicubic(android.renderscript.Allocation, android.renderscript.Script.LaunchOptions);
-    method public android.renderscript.Script.FieldID getFieldID_Input();
-    method public android.renderscript.Script.KernelID getKernelID_bicubic();
-    method public void setInput(android.renderscript.Allocation);
-  }
-
-  public final class ScriptIntrinsicYuvToRGB extends android.renderscript.ScriptIntrinsic {
-    method public static android.renderscript.ScriptIntrinsicYuvToRGB create(android.renderscript.RenderScript, android.renderscript.Element);
-    method public void forEach(android.renderscript.Allocation);
-    method public android.renderscript.Script.FieldID getFieldID_Input();
-    method public android.renderscript.Script.KernelID getKernelID();
-    method public void setInput(android.renderscript.Allocation);
-  }
-
-  public class Short2 {
-    ctor public Short2();
-    ctor public Short2(short, short);
-    field public short x;
-    field public short y;
-  }
-
-  public class Short3 {
-    ctor public Short3();
-    ctor public Short3(short, short, short);
-    field public short x;
-    field public short y;
-    field public short z;
-  }
-
-  public class Short4 {
-    ctor public Short4();
-    ctor public Short4(short, short, short, short);
-    field public short w;
-    field public short x;
-    field public short y;
-    field public short z;
-  }
-
-  public class Type extends android.renderscript.BaseObj {
-    method public static android.renderscript.Type createX(android.renderscript.RenderScript, android.renderscript.Element, int);
-    method public static android.renderscript.Type createXY(android.renderscript.RenderScript, android.renderscript.Element, int, int);
-    method public static android.renderscript.Type createXYZ(android.renderscript.RenderScript, android.renderscript.Element, int, int, int);
-    method public int getCount();
-    method public android.renderscript.Element getElement();
-    method public int getX();
-    method public int getY();
-    method public int getYuv();
-    method public int getZ();
-    method public boolean hasFaces();
-    method public boolean hasMipmaps();
-  }
-
-  public static class Type.Builder {
-    ctor public Type.Builder(android.renderscript.RenderScript, android.renderscript.Element);
-    method public android.renderscript.Type create();
-    method public android.renderscript.Type.Builder setFaces(boolean);
-    method public android.renderscript.Type.Builder setMipmaps(boolean);
-    method public android.renderscript.Type.Builder setX(int);
-    method public android.renderscript.Type.Builder setY(int);
-    method public android.renderscript.Type.Builder setYuvFormat(int);
-    method public android.renderscript.Type.Builder setZ(int);
-  }
-
-  public enum Type.CubemapFace {
-    enum_constant public static final android.renderscript.Type.CubemapFace NEGATIVE_X;
-    enum_constant public static final android.renderscript.Type.CubemapFace NEGATIVE_Y;
-    enum_constant public static final android.renderscript.Type.CubemapFace NEGATIVE_Z;
-    enum_constant public static final android.renderscript.Type.CubemapFace POSITIVE_X;
-    enum_constant public static final android.renderscript.Type.CubemapFace POSITIVE_Y;
-    enum_constant public static final android.renderscript.Type.CubemapFace POSITIVE_Z;
-    enum_constant @Deprecated public static final android.renderscript.Type.CubemapFace POSITVE_X;
-    enum_constant @Deprecated public static final android.renderscript.Type.CubemapFace POSITVE_Y;
-    enum_constant @Deprecated public static final android.renderscript.Type.CubemapFace POSITVE_Z;
-  }
-
-}
-
-package android.sax {
-
-  public class Element {
-    method public android.sax.Element getChild(String);
-    method public android.sax.Element getChild(String, String);
-    method public android.sax.Element requireChild(String);
-    method public android.sax.Element requireChild(String, String);
-    method public void setElementListener(android.sax.ElementListener);
-    method public void setEndElementListener(android.sax.EndElementListener);
-    method public void setEndTextElementListener(android.sax.EndTextElementListener);
-    method public void setStartElementListener(android.sax.StartElementListener);
-    method public void setTextElementListener(android.sax.TextElementListener);
-  }
-
-  public interface ElementListener extends android.sax.StartElementListener android.sax.EndElementListener {
-  }
-
-  public interface EndElementListener {
-    method public void end();
-  }
-
-  public interface EndTextElementListener {
-    method public void end(String);
-  }
-
-  public class RootElement extends android.sax.Element {
-    ctor public RootElement(String, String);
-    ctor public RootElement(String);
-    method public org.xml.sax.ContentHandler getContentHandler();
-  }
-
-  public interface StartElementListener {
-    method public void start(org.xml.sax.Attributes);
-  }
-
-  public interface TextElementListener extends android.sax.StartElementListener android.sax.EndTextElementListener {
-  }
-
-}
-
-package android.se.omapi {
-
-  public final class Channel implements java.nio.channels.Channel {
-    method public void close();
-    method @Nullable public byte[] getSelectResponse();
-    method @NonNull public android.se.omapi.Session getSession();
-    method public boolean isBasicChannel();
-    method public boolean isOpen();
-    method public boolean selectNext() throws java.io.IOException;
-    method @NonNull public byte[] transmit(@NonNull byte[]) throws java.io.IOException;
-  }
-
-  public final class Reader {
-    method public void closeSessions();
-    method @NonNull public String getName();
-    method @NonNull public android.se.omapi.SEService getSEService();
-    method public boolean isSecureElementPresent();
-    method @NonNull public android.se.omapi.Session openSession() throws java.io.IOException;
-  }
-
-  public final class SEService {
-    ctor public SEService(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, @NonNull android.se.omapi.SEService.OnConnectedListener);
-    method @NonNull public android.se.omapi.Reader[] getReaders();
-    method @NonNull public android.se.omapi.Reader getUiccReader(int);
-    method @NonNull public String getVersion();
-    method public boolean isConnected();
-    method public void shutdown();
-  }
-
-  public static interface SEService.OnConnectedListener {
-    method public void onConnected();
-  }
-
-  public final class Session {
-    method public void close();
-    method public void closeChannels();
-    method @Nullable public byte[] getATR();
-    method @NonNull public android.se.omapi.Reader getReader();
-    method public boolean isClosed();
-    method @Nullable public android.se.omapi.Channel openBasicChannel(@Nullable byte[], @Nullable byte) throws java.io.IOException;
-    method @Nullable public android.se.omapi.Channel openBasicChannel(@Nullable byte[]) throws java.io.IOException;
-    method @Nullable public android.se.omapi.Channel openLogicalChannel(@Nullable byte[], @Nullable byte) throws java.io.IOException;
-    method @Nullable public android.se.omapi.Channel openLogicalChannel(@Nullable byte[]) throws java.io.IOException;
-  }
-
-}
-
-package android.security {
-
-  public final class AttestedKeyPair {
-    ctor public AttestedKeyPair(@Nullable java.security.KeyPair, @NonNull java.util.List<java.security.cert.Certificate>);
-    method @NonNull public java.util.List<java.security.cert.Certificate> getAttestationRecord();
-    method @Nullable public java.security.KeyPair getKeyPair();
-  }
-
-  public class ConfirmationAlreadyPresentingException extends java.lang.Exception {
-    ctor public ConfirmationAlreadyPresentingException();
-    ctor public ConfirmationAlreadyPresentingException(String);
-  }
-
-  public abstract class ConfirmationCallback {
-    ctor public ConfirmationCallback();
-    method public void onCanceled();
-    method public void onConfirmed(@NonNull byte[]);
-    method public void onDismissed();
-    method public void onError(Throwable);
-  }
-
-  public class ConfirmationNotAvailableException extends java.lang.Exception {
-    ctor public ConfirmationNotAvailableException();
-    ctor public ConfirmationNotAvailableException(String);
-  }
-
-  public class ConfirmationPrompt {
-    method public void cancelPrompt();
-    method public static boolean isSupported(android.content.Context);
-    method public void presentPrompt(@NonNull java.util.concurrent.Executor, @NonNull android.security.ConfirmationCallback) throws android.security.ConfirmationAlreadyPresentingException, android.security.ConfirmationNotAvailableException;
-  }
-
-  public static final class ConfirmationPrompt.Builder {
-    ctor public ConfirmationPrompt.Builder(android.content.Context);
-    method public android.security.ConfirmationPrompt build();
-    method public android.security.ConfirmationPrompt.Builder setExtraData(byte[]);
-    method public android.security.ConfirmationPrompt.Builder setPromptText(CharSequence);
-  }
-
-  public final class FileIntegrityManager {
-    method public boolean isApkVeritySupported();
-    method @RequiresPermission(anyOf={android.Manifest.permission.INSTALL_PACKAGES, android.Manifest.permission.REQUEST_INSTALL_PACKAGES}) public boolean isAppSourceCertificateTrusted(@NonNull java.security.cert.X509Certificate) throws java.security.cert.CertificateEncodingException;
-  }
-
-  public final class KeyChain {
-    ctor public KeyChain();
-    method public static void choosePrivateKeyAlias(@NonNull android.app.Activity, @NonNull android.security.KeyChainAliasCallback, @Nullable String[], @Nullable java.security.Principal[], @Nullable String, int, @Nullable String);
-    method public static void choosePrivateKeyAlias(@NonNull android.app.Activity, @NonNull android.security.KeyChainAliasCallback, @Nullable String[], @Nullable java.security.Principal[], @Nullable android.net.Uri, @Nullable String);
-    method @NonNull public static android.content.Intent createInstallIntent();
-    method @Nullable @WorkerThread public static java.security.cert.X509Certificate[] getCertificateChain(@NonNull android.content.Context, @NonNull String) throws java.lang.InterruptedException, android.security.KeyChainException;
-    method @Nullable @WorkerThread public static java.security.PrivateKey getPrivateKey(@NonNull android.content.Context, @NonNull String) throws java.lang.InterruptedException, android.security.KeyChainException;
-    method @Deprecated public static boolean isBoundKeyAlgorithm(@NonNull String);
-    method public static boolean isKeyAlgorithmSupported(@NonNull String);
-    field public static final String ACTION_KEYCHAIN_CHANGED = "android.security.action.KEYCHAIN_CHANGED";
-    field public static final String ACTION_KEY_ACCESS_CHANGED = "android.security.action.KEY_ACCESS_CHANGED";
-    field @Deprecated public static final String ACTION_STORAGE_CHANGED = "android.security.STORAGE_CHANGED";
-    field public static final String ACTION_TRUST_STORE_CHANGED = "android.security.action.TRUST_STORE_CHANGED";
-    field public static final String EXTRA_CERTIFICATE = "CERT";
-    field public static final String EXTRA_KEY_ACCESSIBLE = "android.security.extra.KEY_ACCESSIBLE";
-    field public static final String EXTRA_KEY_ALIAS = "android.security.extra.KEY_ALIAS";
-    field public static final String EXTRA_NAME = "name";
-    field public static final String EXTRA_PKCS12 = "PKCS12";
-    field public static final String KEY_ALIAS_SELECTION_DENIED = "android:alias-selection-denied";
-  }
-
-  public interface KeyChainAliasCallback {
-    method public void alias(@Nullable String);
-  }
-
-  public class KeyChainException extends java.lang.Exception {
-    ctor public KeyChainException();
-    ctor public KeyChainException(String);
-    ctor public KeyChainException(String, Throwable);
-    ctor public KeyChainException(Throwable);
-  }
-
-  @Deprecated public final class KeyPairGeneratorSpec implements java.security.spec.AlgorithmParameterSpec {
-    method @Deprecated @NonNull public java.security.spec.AlgorithmParameterSpec getAlgorithmParameterSpec();
-    method @Deprecated public android.content.Context getContext();
-    method @Deprecated @NonNull public java.util.Date getEndDate();
-    method @Deprecated public int getKeySize();
-    method @Deprecated @Nullable public String getKeyType();
-    method @Deprecated public String getKeystoreAlias();
-    method @Deprecated @NonNull public java.math.BigInteger getSerialNumber();
-    method @Deprecated @NonNull public java.util.Date getStartDate();
-    method @Deprecated @NonNull public javax.security.auth.x500.X500Principal getSubjectDN();
-    method @Deprecated public boolean isEncryptionRequired();
-  }
-
-  @Deprecated public static final class KeyPairGeneratorSpec.Builder {
-    ctor @Deprecated public KeyPairGeneratorSpec.Builder(@NonNull android.content.Context);
-    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec build();
-    method @Deprecated public android.security.KeyPairGeneratorSpec.Builder setAlgorithmParameterSpec(@NonNull java.security.spec.AlgorithmParameterSpec);
-    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setAlias(@NonNull String);
-    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setEncryptionRequired();
-    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setEndDate(@NonNull java.util.Date);
-    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setKeySize(int);
-    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setKeyType(@NonNull String) throws java.security.NoSuchAlgorithmException;
-    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setSerialNumber(@NonNull java.math.BigInteger);
-    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setStartDate(@NonNull java.util.Date);
-    method @Deprecated @NonNull public android.security.KeyPairGeneratorSpec.Builder setSubject(@NonNull javax.security.auth.x500.X500Principal);
-  }
-
-  @Deprecated public final class KeyStoreParameter implements java.security.KeyStore.ProtectionParameter {
-    method @Deprecated public boolean isEncryptionRequired();
-  }
-
-  @Deprecated public static final class KeyStoreParameter.Builder {
-    ctor @Deprecated public KeyStoreParameter.Builder(@NonNull android.content.Context);
-    method @Deprecated @NonNull public android.security.KeyStoreParameter build();
-    method @Deprecated @NonNull public android.security.KeyStoreParameter.Builder setEncryptionRequired(boolean);
-  }
-
-  public class NetworkSecurityPolicy {
-    method public static android.security.NetworkSecurityPolicy getInstance();
-    method public boolean isCleartextTrafficPermitted();
-    method public boolean isCleartextTrafficPermitted(String);
-  }
-
-}
-
-package android.security.identity {
-
-  public class AccessControlProfile {
-  }
-
-  public static final class AccessControlProfile.Builder {
-    ctor public AccessControlProfile.Builder(@NonNull android.security.identity.AccessControlProfileId);
-    method @NonNull public android.security.identity.AccessControlProfile build();
-    method @NonNull public android.security.identity.AccessControlProfile.Builder setReaderCertificate(@NonNull java.security.cert.X509Certificate);
-    method @NonNull public android.security.identity.AccessControlProfile.Builder setUserAuthenticationRequired(boolean);
-    method @NonNull public android.security.identity.AccessControlProfile.Builder setUserAuthenticationTimeout(long);
-  }
-
-  public class AccessControlProfileId {
-    ctor public AccessControlProfileId(int);
-    method public int getId();
-  }
-
-  public class AlreadyPersonalizedException extends android.security.identity.IdentityCredentialException {
-    ctor public AlreadyPersonalizedException(@NonNull String);
-    ctor public AlreadyPersonalizedException(@NonNull String, @NonNull Throwable);
-  }
-
-  public class CipherSuiteNotSupportedException extends android.security.identity.IdentityCredentialException {
-    ctor public CipherSuiteNotSupportedException(@NonNull String);
-    ctor public CipherSuiteNotSupportedException(@NonNull String, @NonNull Throwable);
-  }
-
-  public class DocTypeNotSupportedException extends android.security.identity.IdentityCredentialException {
-    ctor public DocTypeNotSupportedException(@NonNull String);
-    ctor public DocTypeNotSupportedException(@NonNull String, @NonNull Throwable);
-  }
-
-  public class EphemeralPublicKeyNotFoundException extends android.security.identity.IdentityCredentialException {
-    ctor public EphemeralPublicKeyNotFoundException(@NonNull String);
-    ctor public EphemeralPublicKeyNotFoundException(@NonNull String, @NonNull Throwable);
-  }
-
-  public abstract class IdentityCredential {
-    method @NonNull public abstract java.security.KeyPair createEphemeralKeyPair();
-    method @NonNull public abstract byte[] decryptMessageFromReader(@NonNull byte[]) throws android.security.identity.MessageDecryptionException;
-    method @NonNull public abstract byte[] encryptMessageToReader(@NonNull byte[]);
-    method @NonNull public abstract java.util.Collection<java.security.cert.X509Certificate> getAuthKeysNeedingCertification();
-    method @NonNull public abstract int[] getAuthenticationDataUsageCount();
-    method @NonNull public abstract java.util.Collection<java.security.cert.X509Certificate> getCredentialKeyCertificateChain();
-    method @NonNull public abstract android.security.identity.ResultData getEntries(@Nullable byte[], @NonNull java.util.Map<java.lang.String,java.util.Collection<java.lang.String>>, @Nullable byte[], @Nullable byte[]) throws android.security.identity.EphemeralPublicKeyNotFoundException, android.security.identity.InvalidReaderSignatureException, android.security.identity.InvalidRequestMessageException, android.security.identity.NoAuthenticationKeyAvailableException, android.security.identity.SessionTranscriptMismatchException;
-    method public abstract void setAllowUsingExhaustedKeys(boolean);
-    method public abstract void setAvailableAuthenticationKeys(int, int);
-    method public abstract void setReaderEphemeralPublicKey(@NonNull java.security.PublicKey) throws java.security.InvalidKeyException;
-    method public abstract void storeStaticAuthenticationData(@NonNull java.security.cert.X509Certificate, @NonNull byte[]) throws android.security.identity.UnknownAuthenticationKeyException;
-  }
-
-  public class IdentityCredentialException extends java.lang.Exception {
-    ctor public IdentityCredentialException(@NonNull String);
-    ctor public IdentityCredentialException(@NonNull String, @NonNull Throwable);
-  }
-
-  public abstract class IdentityCredentialStore {
-    method @NonNull public abstract android.security.identity.WritableIdentityCredential createCredential(@NonNull String, @NonNull String) throws android.security.identity.AlreadyPersonalizedException, android.security.identity.DocTypeNotSupportedException;
-    method @Nullable public abstract byte[] deleteCredentialByName(@NonNull String);
-    method @Nullable public abstract android.security.identity.IdentityCredential getCredentialByName(@NonNull String, int) throws android.security.identity.CipherSuiteNotSupportedException;
-    method @Nullable public static android.security.identity.IdentityCredentialStore getDirectAccessInstance(@NonNull android.content.Context);
-    method @Nullable public static android.security.identity.IdentityCredentialStore getInstance(@NonNull android.content.Context);
-    method @NonNull public abstract String[] getSupportedDocTypes();
-    field public static final int CIPHERSUITE_ECDHE_HKDF_ECDSA_WITH_AES_256_GCM_SHA256 = 1; // 0x1
-  }
-
-  public class InvalidReaderSignatureException extends android.security.identity.IdentityCredentialException {
-    ctor public InvalidReaderSignatureException(@NonNull String);
-    ctor public InvalidReaderSignatureException(@NonNull String, @NonNull Throwable);
-  }
-
-  public class InvalidRequestMessageException extends android.security.identity.IdentityCredentialException {
-    ctor public InvalidRequestMessageException(@NonNull String);
-    ctor public InvalidRequestMessageException(@NonNull String, @NonNull Throwable);
-  }
-
-  public class MessageDecryptionException extends android.security.identity.IdentityCredentialException {
-    ctor public MessageDecryptionException(@NonNull String);
-    ctor public MessageDecryptionException(@NonNull String, @NonNull Throwable);
-  }
-
-  public class NoAuthenticationKeyAvailableException extends android.security.identity.IdentityCredentialException {
-    ctor public NoAuthenticationKeyAvailableException(@NonNull String);
-    ctor public NoAuthenticationKeyAvailableException(@NonNull String, @NonNull Throwable);
-  }
-
-  public class PersonalizationData {
-  }
-
-  public static final class PersonalizationData.Builder {
-    ctor public PersonalizationData.Builder();
-    method @NonNull public android.security.identity.PersonalizationData.Builder addAccessControlProfile(@NonNull android.security.identity.AccessControlProfile);
-    method @NonNull public android.security.identity.PersonalizationData build();
-    method @NonNull public android.security.identity.PersonalizationData.Builder putEntry(@NonNull String, @NonNull String, @NonNull java.util.Collection<android.security.identity.AccessControlProfileId>, @NonNull byte[]);
-  }
-
-  public abstract class ResultData {
-    method @NonNull public abstract byte[] getAuthenticatedData();
-    method @Nullable public abstract byte[] getEntry(@NonNull String, @NonNull String);
-    method @Nullable public abstract java.util.Collection<java.lang.String> getEntryNames(@NonNull String);
-    method @Nullable public abstract byte[] getMessageAuthenticationCode();
-    method @NonNull public abstract java.util.Collection<java.lang.String> getNamespaces();
-    method @Nullable public abstract java.util.Collection<java.lang.String> getRetrievedEntryNames(@NonNull String);
-    method @NonNull public abstract byte[] getStaticAuthenticationData();
-    method public abstract int getStatus(@NonNull String, @NonNull String);
-    field public static final int STATUS_NOT_IN_REQUEST_MESSAGE = 3; // 0x3
-    field public static final int STATUS_NOT_REQUESTED = 2; // 0x2
-    field public static final int STATUS_NO_ACCESS_CONTROL_PROFILES = 6; // 0x6
-    field public static final int STATUS_NO_SUCH_ENTRY = 1; // 0x1
-    field public static final int STATUS_OK = 0; // 0x0
-    field public static final int STATUS_READER_AUTHENTICATION_FAILED = 5; // 0x5
-    field public static final int STATUS_USER_AUTHENTICATION_FAILED = 4; // 0x4
-  }
-
-  public class SessionTranscriptMismatchException extends android.security.identity.IdentityCredentialException {
-    ctor public SessionTranscriptMismatchException(@NonNull String);
-    ctor public SessionTranscriptMismatchException(@NonNull String, @NonNull Throwable);
-  }
-
-  public class UnknownAuthenticationKeyException extends android.security.identity.IdentityCredentialException {
-    ctor public UnknownAuthenticationKeyException(@NonNull String);
-    ctor public UnknownAuthenticationKeyException(@NonNull String, @NonNull Throwable);
-  }
-
-  public abstract class WritableIdentityCredential {
-    method @NonNull public abstract java.util.Collection<java.security.cert.X509Certificate> getCredentialKeyCertificateChain(@NonNull byte[]);
-    method @NonNull public abstract byte[] personalize(@NonNull android.security.identity.PersonalizationData);
-  }
-
-}
-
-package android.security.keystore {
-
-  public class KeyExpiredException extends java.security.InvalidKeyException {
-    ctor public KeyExpiredException();
-    ctor public KeyExpiredException(String);
-    ctor public KeyExpiredException(String, Throwable);
-  }
-
-  public final class KeyGenParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    method @Nullable public java.security.spec.AlgorithmParameterSpec getAlgorithmParameterSpec();
-    method public byte[] getAttestationChallenge();
-    method @NonNull public String[] getBlockModes();
-    method @NonNull public java.util.Date getCertificateNotAfter();
-    method @NonNull public java.util.Date getCertificateNotBefore();
-    method @NonNull public java.math.BigInteger getCertificateSerialNumber();
-    method @NonNull public javax.security.auth.x500.X500Principal getCertificateSubject();
-    method @NonNull public String[] getDigests();
-    method @NonNull public String[] getEncryptionPaddings();
-    method public int getKeySize();
-    method @Nullable public java.util.Date getKeyValidityForConsumptionEnd();
-    method @Nullable public java.util.Date getKeyValidityForOriginationEnd();
-    method @Nullable public java.util.Date getKeyValidityStart();
-    method @NonNull public String getKeystoreAlias();
-    method public int getPurposes();
-    method @NonNull public String[] getSignaturePaddings();
-    method public int getUserAuthenticationType();
-    method public int getUserAuthenticationValidityDurationSeconds();
-    method public boolean isDevicePropertiesAttestationIncluded();
-    method @NonNull public boolean isDigestsSpecified();
-    method public boolean isInvalidatedByBiometricEnrollment();
-    method public boolean isRandomizedEncryptionRequired();
-    method public boolean isStrongBoxBacked();
-    method public boolean isUnlockedDeviceRequired();
-    method public boolean isUserAuthenticationRequired();
-    method public boolean isUserAuthenticationValidWhileOnBody();
-    method public boolean isUserConfirmationRequired();
-    method public boolean isUserPresenceRequired();
-  }
-
-  public static final class KeyGenParameterSpec.Builder {
-    ctor public KeyGenParameterSpec.Builder(@NonNull String, int);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec build();
-    method public android.security.keystore.KeyGenParameterSpec.Builder setAlgorithmParameterSpec(@NonNull java.security.spec.AlgorithmParameterSpec);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setAttestationChallenge(byte[]);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setBlockModes(java.lang.String...);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setCertificateNotAfter(@NonNull java.util.Date);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setCertificateNotBefore(@NonNull java.util.Date);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setCertificateSerialNumber(@NonNull java.math.BigInteger);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setCertificateSubject(@NonNull javax.security.auth.x500.X500Principal);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setDevicePropertiesAttestationIncluded(boolean);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setDigests(java.lang.String...);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setEncryptionPaddings(java.lang.String...);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setInvalidatedByBiometricEnrollment(boolean);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setIsStrongBoxBacked(boolean);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setKeySize(int);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setKeyValidityEnd(java.util.Date);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setKeyValidityForConsumptionEnd(java.util.Date);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setKeyValidityForOriginationEnd(java.util.Date);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setKeyValidityStart(java.util.Date);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setRandomizedEncryptionRequired(boolean);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setSignaturePaddings(java.lang.String...);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUnlockedDeviceRequired(boolean);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserAuthenticationParameters(@IntRange(from=0) int, int);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserAuthenticationRequired(boolean);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserAuthenticationValidWhileOnBody(boolean);
-    method @Deprecated @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserAuthenticationValidityDurationSeconds(@IntRange(from=0xffffffff) int);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserConfirmationRequired(boolean);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserPresenceRequired(boolean);
-  }
-
-  public class KeyInfo implements java.security.spec.KeySpec {
-    method @NonNull public String[] getBlockModes();
-    method @NonNull public String[] getDigests();
-    method @NonNull public String[] getEncryptionPaddings();
-    method public int getKeySize();
-    method @Nullable public java.util.Date getKeyValidityForConsumptionEnd();
-    method @Nullable public java.util.Date getKeyValidityForOriginationEnd();
-    method @Nullable public java.util.Date getKeyValidityStart();
-    method public String getKeystoreAlias();
-    method public int getOrigin();
-    method public int getPurposes();
-    method @NonNull public String[] getSignaturePaddings();
-    method public int getUserAuthenticationType();
-    method public int getUserAuthenticationValidityDurationSeconds();
-    method public boolean isInsideSecureHardware();
-    method public boolean isInvalidatedByBiometricEnrollment();
-    method public boolean isTrustedUserPresenceRequired();
-    method public boolean isUserAuthenticationRequired();
-    method public boolean isUserAuthenticationRequirementEnforcedBySecureHardware();
-    method public boolean isUserAuthenticationValidWhileOnBody();
-    method public boolean isUserConfirmationRequired();
-  }
-
-  public class KeyNotYetValidException extends java.security.InvalidKeyException {
-    ctor public KeyNotYetValidException();
-    ctor public KeyNotYetValidException(String);
-    ctor public KeyNotYetValidException(String, Throwable);
-  }
-
-  public class KeyPermanentlyInvalidatedException extends java.security.InvalidKeyException {
-    ctor public KeyPermanentlyInvalidatedException();
-    ctor public KeyPermanentlyInvalidatedException(String);
-    ctor public KeyPermanentlyInvalidatedException(String, Throwable);
-  }
-
-  public abstract class KeyProperties {
-    field public static final int AUTH_BIOMETRIC_STRONG = 2; // 0x2
-    field public static final int AUTH_DEVICE_CREDENTIAL = 1; // 0x1
-    field public static final String BLOCK_MODE_CBC = "CBC";
-    field public static final String BLOCK_MODE_CTR = "CTR";
-    field public static final String BLOCK_MODE_ECB = "ECB";
-    field public static final String BLOCK_MODE_GCM = "GCM";
-    field public static final String DIGEST_MD5 = "MD5";
-    field public static final String DIGEST_NONE = "NONE";
-    field public static final String DIGEST_SHA1 = "SHA-1";
-    field public static final String DIGEST_SHA224 = "SHA-224";
-    field public static final String DIGEST_SHA256 = "SHA-256";
-    field public static final String DIGEST_SHA384 = "SHA-384";
-    field public static final String DIGEST_SHA512 = "SHA-512";
-    field public static final String ENCRYPTION_PADDING_NONE = "NoPadding";
-    field public static final String ENCRYPTION_PADDING_PKCS7 = "PKCS7Padding";
-    field public static final String ENCRYPTION_PADDING_RSA_OAEP = "OAEPPadding";
-    field public static final String ENCRYPTION_PADDING_RSA_PKCS1 = "PKCS1Padding";
-    field @Deprecated public static final String KEY_ALGORITHM_3DES = "DESede";
-    field public static final String KEY_ALGORITHM_AES = "AES";
-    field public static final String KEY_ALGORITHM_EC = "EC";
-    field public static final String KEY_ALGORITHM_HMAC_SHA1 = "HmacSHA1";
-    field public static final String KEY_ALGORITHM_HMAC_SHA224 = "HmacSHA224";
-    field public static final String KEY_ALGORITHM_HMAC_SHA256 = "HmacSHA256";
-    field public static final String KEY_ALGORITHM_HMAC_SHA384 = "HmacSHA384";
-    field public static final String KEY_ALGORITHM_HMAC_SHA512 = "HmacSHA512";
-    field public static final String KEY_ALGORITHM_RSA = "RSA";
-    field public static final int ORIGIN_GENERATED = 1; // 0x1
-    field public static final int ORIGIN_IMPORTED = 2; // 0x2
-    field public static final int ORIGIN_SECURELY_IMPORTED = 8; // 0x8
-    field public static final int ORIGIN_UNKNOWN = 4; // 0x4
-    field public static final int PURPOSE_DECRYPT = 2; // 0x2
-    field public static final int PURPOSE_ENCRYPT = 1; // 0x1
-    field public static final int PURPOSE_SIGN = 4; // 0x4
-    field public static final int PURPOSE_VERIFY = 8; // 0x8
-    field public static final int PURPOSE_WRAP_KEY = 32; // 0x20
-    field public static final String SIGNATURE_PADDING_RSA_PKCS1 = "PKCS1";
-    field public static final String SIGNATURE_PADDING_RSA_PSS = "PSS";
-  }
-
-  public final class KeyProtection implements java.security.KeyStore.ProtectionParameter {
-    method @NonNull public String[] getBlockModes();
-    method @NonNull public String[] getDigests();
-    method @NonNull public String[] getEncryptionPaddings();
-    method @Nullable public java.util.Date getKeyValidityForConsumptionEnd();
-    method @Nullable public java.util.Date getKeyValidityForOriginationEnd();
-    method @Nullable public java.util.Date getKeyValidityStart();
-    method public int getPurposes();
-    method @NonNull public String[] getSignaturePaddings();
-    method public int getUserAuthenticationType();
-    method public int getUserAuthenticationValidityDurationSeconds();
-    method public boolean isDigestsSpecified();
-    method public boolean isInvalidatedByBiometricEnrollment();
-    method public boolean isRandomizedEncryptionRequired();
-    method public boolean isUnlockedDeviceRequired();
-    method public boolean isUserAuthenticationRequired();
-    method public boolean isUserAuthenticationValidWhileOnBody();
-    method public boolean isUserConfirmationRequired();
-    method public boolean isUserPresenceRequired();
-  }
-
-  public static final class KeyProtection.Builder {
-    ctor public KeyProtection.Builder(int);
-    method @NonNull public android.security.keystore.KeyProtection build();
-    method @NonNull public android.security.keystore.KeyProtection.Builder setBlockModes(java.lang.String...);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setDigests(java.lang.String...);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setEncryptionPaddings(java.lang.String...);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setInvalidatedByBiometricEnrollment(boolean);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setKeyValidityEnd(java.util.Date);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setKeyValidityForConsumptionEnd(java.util.Date);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setKeyValidityForOriginationEnd(java.util.Date);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setKeyValidityStart(java.util.Date);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setRandomizedEncryptionRequired(boolean);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setSignaturePaddings(java.lang.String...);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setUnlockedDeviceRequired(boolean);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setUserAuthenticationParameters(@IntRange(from=0) int, int);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setUserAuthenticationRequired(boolean);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setUserAuthenticationValidWhileOnBody(boolean);
-    method @Deprecated @NonNull public android.security.keystore.KeyProtection.Builder setUserAuthenticationValidityDurationSeconds(@IntRange(from=0xffffffff) int);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setUserConfirmationRequired(boolean);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setUserPresenceRequired(boolean);
-  }
-
-  public class SecureKeyImportUnavailableException extends java.security.ProviderException {
-    ctor public SecureKeyImportUnavailableException();
-    ctor public SecureKeyImportUnavailableException(String);
-    ctor public SecureKeyImportUnavailableException(String, Throwable);
-    ctor public SecureKeyImportUnavailableException(Throwable);
-  }
-
-  public class StrongBoxUnavailableException extends java.security.ProviderException {
-    ctor public StrongBoxUnavailableException();
-    ctor public StrongBoxUnavailableException(String);
-    ctor public StrongBoxUnavailableException(String, Throwable);
-    ctor public StrongBoxUnavailableException(Throwable);
-  }
-
-  public class UserNotAuthenticatedException extends java.security.InvalidKeyException {
-    ctor public UserNotAuthenticatedException();
-    ctor public UserNotAuthenticatedException(String);
-    ctor public UserNotAuthenticatedException(String, Throwable);
-  }
-
-  public class UserPresenceUnavailableException extends java.security.InvalidKeyException {
-    ctor public UserPresenceUnavailableException();
-    ctor public UserPresenceUnavailableException(String);
-    ctor public UserPresenceUnavailableException(String, Throwable);
-  }
-
-  public class WrappedKeyEntry implements java.security.KeyStore.Entry {
-    ctor public WrappedKeyEntry(byte[], String, String, java.security.spec.AlgorithmParameterSpec);
-    method public java.security.spec.AlgorithmParameterSpec getAlgorithmParameterSpec();
-    method public String getTransformation();
-    method public byte[] getWrappedKeyBytes();
-    method public String getWrappingKeyAlias();
-  }
-
-}
-
-package android.service.autofill {
-
-  public abstract class AutofillService extends android.app.Service {
-    ctor public AutofillService();
-    method @Nullable public final android.service.autofill.FillEventHistory getFillEventHistory();
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method public void onConnected();
-    method public void onDisconnected();
-    method public abstract void onFillRequest(@NonNull android.service.autofill.FillRequest, @NonNull android.os.CancellationSignal, @NonNull android.service.autofill.FillCallback);
-    method public abstract void onSaveRequest(@NonNull android.service.autofill.SaveRequest, @NonNull android.service.autofill.SaveCallback);
-    field public static final String SERVICE_INTERFACE = "android.service.autofill.AutofillService";
-    field public static final String SERVICE_META_DATA = "android.autofill";
-  }
-
-  public final class BatchUpdates implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.BatchUpdates> CREATOR;
-  }
-
-  public static class BatchUpdates.Builder {
-    ctor public BatchUpdates.Builder();
-    method public android.service.autofill.BatchUpdates build();
-    method public android.service.autofill.BatchUpdates.Builder transformChild(int, @NonNull android.service.autofill.Transformation);
-    method public android.service.autofill.BatchUpdates.Builder updateTemplate(@NonNull android.widget.RemoteViews);
-  }
-
-  public final class CharSequenceTransformation implements android.os.Parcelable android.service.autofill.Transformation {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.CharSequenceTransformation> CREATOR;
-  }
-
-  public static class CharSequenceTransformation.Builder {
-    ctor public CharSequenceTransformation.Builder(@NonNull android.view.autofill.AutofillId, @NonNull java.util.regex.Pattern, @NonNull String);
-    method public android.service.autofill.CharSequenceTransformation.Builder addField(@NonNull android.view.autofill.AutofillId, @NonNull java.util.regex.Pattern, @NonNull String);
-    method public android.service.autofill.CharSequenceTransformation build();
-  }
-
-  public final class CustomDescription implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.CustomDescription> CREATOR;
-  }
-
-  public static class CustomDescription.Builder {
-    ctor public CustomDescription.Builder(@NonNull android.widget.RemoteViews);
-    method @NonNull public android.service.autofill.CustomDescription.Builder addChild(int, @NonNull android.service.autofill.Transformation);
-    method @NonNull public android.service.autofill.CustomDescription.Builder addOnClickAction(int, @NonNull android.service.autofill.OnClickAction);
-    method @NonNull public android.service.autofill.CustomDescription.Builder batchUpdate(@NonNull android.service.autofill.Validator, @NonNull android.service.autofill.BatchUpdates);
-    method @NonNull public android.service.autofill.CustomDescription build();
-  }
-
-  public final class Dataset implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.Dataset> CREATOR;
-  }
-
-  public static final class Dataset.Builder {
-    ctor public Dataset.Builder(@NonNull android.widget.RemoteViews);
-    ctor public Dataset.Builder();
-    method @NonNull public android.service.autofill.Dataset build();
-    method @NonNull public android.service.autofill.Dataset.Builder setAuthentication(@Nullable android.content.IntentSender);
-    method @NonNull public android.service.autofill.Dataset.Builder setId(@Nullable String);
-    method @NonNull public android.service.autofill.Dataset.Builder setInlinePresentation(@NonNull android.service.autofill.InlinePresentation);
-    method @NonNull public android.service.autofill.Dataset.Builder setValue(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue);
-    method @NonNull public android.service.autofill.Dataset.Builder setValue(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue, @NonNull android.widget.RemoteViews);
-    method @NonNull public android.service.autofill.Dataset.Builder setValue(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue, @Nullable java.util.regex.Pattern);
-    method @NonNull public android.service.autofill.Dataset.Builder setValue(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue, @Nullable java.util.regex.Pattern, @NonNull android.widget.RemoteViews);
-    method @NonNull public android.service.autofill.Dataset.Builder setValue(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue, @NonNull android.widget.RemoteViews, @NonNull android.service.autofill.InlinePresentation);
-    method @NonNull public android.service.autofill.Dataset.Builder setValue(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue, @Nullable java.util.regex.Pattern, @NonNull android.widget.RemoteViews, @NonNull android.service.autofill.InlinePresentation);
-  }
-
-  public final class DateTransformation implements android.os.Parcelable android.service.autofill.Transformation {
-    ctor public DateTransformation(@NonNull android.view.autofill.AutofillId, @NonNull android.icu.text.DateFormat);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.DateTransformation> CREATOR;
-  }
-
-  public final class DateValueSanitizer implements android.os.Parcelable android.service.autofill.Sanitizer {
-    ctor public DateValueSanitizer(@NonNull android.icu.text.DateFormat);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.DateValueSanitizer> CREATOR;
-  }
-
-  public final class FieldClassification {
-    method @NonNull public java.util.List<android.service.autofill.FieldClassification.Match> getMatches();
-  }
-
-  public static final class FieldClassification.Match {
-    method @NonNull public String getCategoryId();
-    method public float getScore();
-  }
-
-  public final class FillCallback {
-    method public void onFailure(@Nullable CharSequence);
-    method public void onSuccess(@Nullable android.service.autofill.FillResponse);
-  }
-
-  public final class FillContext implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.view.autofill.AutofillId getFocusedId();
-    method public int getRequestId();
-    method @NonNull public android.app.assist.AssistStructure getStructure();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.FillContext> CREATOR;
-  }
-
-  public final class FillEventHistory implements android.os.Parcelable {
-    method public int describeContents();
-    method @Deprecated @Nullable public android.os.Bundle getClientState();
-    method @Nullable public java.util.List<android.service.autofill.FillEventHistory.Event> getEvents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.FillEventHistory> CREATOR;
-  }
-
-  public static final class FillEventHistory.Event {
-    method @NonNull public java.util.Map<android.view.autofill.AutofillId,java.lang.String> getChangedFields();
-    method @Nullable public android.os.Bundle getClientState();
-    method @Nullable public String getDatasetId();
-    method @NonNull public java.util.Map<android.view.autofill.AutofillId,android.service.autofill.FieldClassification> getFieldsClassification();
-    method @NonNull public java.util.Set<java.lang.String> getIgnoredDatasetIds();
-    method @NonNull public java.util.Map<android.view.autofill.AutofillId,java.util.Set<java.lang.String>> getManuallyEnteredField();
-    method @NonNull public java.util.Set<java.lang.String> getSelectedDatasetIds();
-    method public int getType();
-    field public static final int TYPE_AUTHENTICATION_SELECTED = 2; // 0x2
-    field public static final int TYPE_CONTEXT_COMMITTED = 4; // 0x4
-    field public static final int TYPE_DATASETS_SHOWN = 5; // 0x5
-    field public static final int TYPE_DATASET_AUTHENTICATION_SELECTED = 1; // 0x1
-    field public static final int TYPE_DATASET_SELECTED = 0; // 0x0
-    field public static final int TYPE_SAVE_SHOWN = 3; // 0x3
-  }
-
-  public final class FillRequest implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.os.Bundle getClientState();
-    method @NonNull public java.util.List<android.service.autofill.FillContext> getFillContexts();
-    method public int getFlags();
-    method public int getId();
-    method @Nullable public android.view.inputmethod.InlineSuggestionsRequest getInlineSuggestionsRequest();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.FillRequest> CREATOR;
-    field public static final int FLAG_COMPATIBILITY_MODE_REQUEST = 2; // 0x2
-    field public static final int FLAG_MANUAL_REQUEST = 1; // 0x1
-  }
-
-  public final class FillResponse implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.FillResponse> CREATOR;
-    field public static final int FLAG_DISABLE_ACTIVITY_ONLY = 2; // 0x2
-    field public static final int FLAG_TRACK_CONTEXT_COMMITED = 1; // 0x1
-  }
-
-  public static final class FillResponse.Builder {
-    ctor public FillResponse.Builder();
-    method @NonNull public android.service.autofill.FillResponse.Builder addDataset(@Nullable android.service.autofill.Dataset);
-    method @NonNull public android.service.autofill.FillResponse build();
-    method @NonNull public android.service.autofill.FillResponse.Builder disableAutofill(long);
-    method @NonNull public android.service.autofill.FillResponse.Builder setAuthentication(@NonNull android.view.autofill.AutofillId[], @Nullable android.content.IntentSender, @Nullable android.widget.RemoteViews);
-    method @NonNull public android.service.autofill.FillResponse.Builder setAuthentication(@NonNull android.view.autofill.AutofillId[], @Nullable android.content.IntentSender, @Nullable android.widget.RemoteViews, @Nullable android.service.autofill.InlinePresentation);
-    method @NonNull public android.service.autofill.FillResponse.Builder setClientState(@Nullable android.os.Bundle);
-    method @NonNull public android.service.autofill.FillResponse.Builder setFieldClassificationIds(@NonNull android.view.autofill.AutofillId...);
-    method @NonNull public android.service.autofill.FillResponse.Builder setFlags(int);
-    method @NonNull public android.service.autofill.FillResponse.Builder setFooter(@NonNull android.widget.RemoteViews);
-    method @NonNull public android.service.autofill.FillResponse.Builder setHeader(@NonNull android.widget.RemoteViews);
-    method @NonNull public android.service.autofill.FillResponse.Builder setIgnoredIds(android.view.autofill.AutofillId...);
-    method @NonNull public android.service.autofill.FillResponse.Builder setPresentationCancelIds(@Nullable int[]);
-    method @NonNull public android.service.autofill.FillResponse.Builder setSaveInfo(@NonNull android.service.autofill.SaveInfo);
-    method @NonNull public android.service.autofill.FillResponse.Builder setUserData(@NonNull android.service.autofill.UserData);
-  }
-
-  public final class ImageTransformation implements android.os.Parcelable android.service.autofill.Transformation {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.ImageTransformation> CREATOR;
-  }
-
-  public static class ImageTransformation.Builder {
-    ctor @Deprecated public ImageTransformation.Builder(@NonNull android.view.autofill.AutofillId, @NonNull java.util.regex.Pattern, @DrawableRes int);
-    ctor public ImageTransformation.Builder(@NonNull android.view.autofill.AutofillId, @NonNull java.util.regex.Pattern, @DrawableRes int, @NonNull CharSequence);
-    method @Deprecated public android.service.autofill.ImageTransformation.Builder addOption(@NonNull java.util.regex.Pattern, @DrawableRes int);
-    method public android.service.autofill.ImageTransformation.Builder addOption(@NonNull java.util.regex.Pattern, @DrawableRes int, @NonNull CharSequence);
-    method public android.service.autofill.ImageTransformation build();
-  }
-
-  public final class InlinePresentation implements android.os.Parcelable {
-    ctor public InlinePresentation(@NonNull android.app.slice.Slice, @NonNull android.widget.inline.InlinePresentationSpec, boolean);
-    method public int describeContents();
-    method @NonNull public android.widget.inline.InlinePresentationSpec getInlinePresentationSpec();
-    method @NonNull public android.app.slice.Slice getSlice();
-    method public boolean isPinned();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.InlinePresentation> CREATOR;
-  }
-
-  public final class LuhnChecksumValidator implements android.os.Parcelable android.service.autofill.Validator {
-    ctor public LuhnChecksumValidator(@NonNull android.view.autofill.AutofillId...);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.LuhnChecksumValidator> CREATOR;
-  }
-
-  public interface OnClickAction {
-  }
-
-  public final class RegexValidator implements android.os.Parcelable android.service.autofill.Validator {
-    ctor public RegexValidator(@NonNull android.view.autofill.AutofillId, @NonNull java.util.regex.Pattern);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.RegexValidator> CREATOR;
-  }
-
-  public interface Sanitizer {
-  }
-
-  public final class SaveCallback {
-    method public void onFailure(CharSequence);
-    method public void onSuccess();
-    method public void onSuccess(@NonNull android.content.IntentSender);
-  }
-
-  public final class SaveInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.SaveInfo> CREATOR;
-    field public static final int FLAG_DELAY_SAVE = 4; // 0x4
-    field public static final int FLAG_DONT_SAVE_ON_FINISH = 2; // 0x2
-    field public static final int FLAG_SAVE_ON_ALL_VIEWS_INVISIBLE = 1; // 0x1
-    field public static final int NEGATIVE_BUTTON_STYLE_CANCEL = 0; // 0x0
-    field public static final int NEGATIVE_BUTTON_STYLE_NEVER = 2; // 0x2
-    field public static final int NEGATIVE_BUTTON_STYLE_REJECT = 1; // 0x1
-    field public static final int POSITIVE_BUTTON_STYLE_CONTINUE = 1; // 0x1
-    field public static final int POSITIVE_BUTTON_STYLE_SAVE = 0; // 0x0
-    field public static final int SAVE_DATA_TYPE_ADDRESS = 2; // 0x2
-    field public static final int SAVE_DATA_TYPE_CREDIT_CARD = 4; // 0x4
-    field public static final int SAVE_DATA_TYPE_DEBIT_CARD = 32; // 0x20
-    field public static final int SAVE_DATA_TYPE_EMAIL_ADDRESS = 16; // 0x10
-    field public static final int SAVE_DATA_TYPE_GENERIC = 0; // 0x0
-    field public static final int SAVE_DATA_TYPE_GENERIC_CARD = 128; // 0x80
-    field public static final int SAVE_DATA_TYPE_PASSWORD = 1; // 0x1
-    field public static final int SAVE_DATA_TYPE_PAYMENT_CARD = 64; // 0x40
-    field public static final int SAVE_DATA_TYPE_USERNAME = 8; // 0x8
-  }
-
-  public static final class SaveInfo.Builder {
-    ctor public SaveInfo.Builder(int, @NonNull android.view.autofill.AutofillId[]);
-    ctor public SaveInfo.Builder(int);
-    method @NonNull public android.service.autofill.SaveInfo.Builder addSanitizer(@NonNull android.service.autofill.Sanitizer, @NonNull android.view.autofill.AutofillId...);
-    method public android.service.autofill.SaveInfo build();
-    method @NonNull public android.service.autofill.SaveInfo.Builder setCustomDescription(@NonNull android.service.autofill.CustomDescription);
-    method @NonNull public android.service.autofill.SaveInfo.Builder setDescription(@Nullable CharSequence);
-    method @NonNull public android.service.autofill.SaveInfo.Builder setFlags(int);
-    method @NonNull public android.service.autofill.SaveInfo.Builder setNegativeAction(int, @Nullable android.content.IntentSender);
-    method @NonNull public android.service.autofill.SaveInfo.Builder setOptionalIds(@NonNull android.view.autofill.AutofillId[]);
-    method @NonNull public android.service.autofill.SaveInfo.Builder setPositiveAction(int);
-    method @NonNull public android.service.autofill.SaveInfo.Builder setTriggerId(@NonNull android.view.autofill.AutofillId);
-    method @NonNull public android.service.autofill.SaveInfo.Builder setValidator(@NonNull android.service.autofill.Validator);
-  }
-
-  public final class SaveRequest implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.os.Bundle getClientState();
-    method @Nullable public java.util.List<java.lang.String> getDatasetIds();
-    method @NonNull public java.util.List<android.service.autofill.FillContext> getFillContexts();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.SaveRequest> CREATOR;
-  }
-
-  public final class TextValueSanitizer implements android.os.Parcelable android.service.autofill.Sanitizer {
-    ctor public TextValueSanitizer(@NonNull java.util.regex.Pattern, @NonNull String);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.TextValueSanitizer> CREATOR;
-  }
-
-  public interface Transformation {
-  }
-
-  public final class UserData implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getFieldClassificationAlgorithm();
-    method @Nullable public String getFieldClassificationAlgorithmForCategory(@NonNull String);
-    method public String getId();
-    method public static int getMaxCategoryCount();
-    method public static int getMaxFieldClassificationIdsSize();
-    method public static int getMaxUserDataSize();
-    method public static int getMaxValueLength();
-    method public static int getMinValueLength();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.UserData> CREATOR;
-  }
-
-  public static final class UserData.Builder {
-    ctor public UserData.Builder(@NonNull String, @NonNull String, @NonNull String);
-    method @NonNull public android.service.autofill.UserData.Builder add(@NonNull String, @NonNull String);
-    method @NonNull public android.service.autofill.UserData build();
-    method @NonNull public android.service.autofill.UserData.Builder setFieldClassificationAlgorithm(@Nullable String, @Nullable android.os.Bundle);
-    method @NonNull public android.service.autofill.UserData.Builder setFieldClassificationAlgorithmForCategory(@NonNull String, @Nullable String, @Nullable android.os.Bundle);
-  }
-
-  public interface Validator {
-  }
-
-  public final class Validators {
-    method @NonNull public static android.service.autofill.Validator and(@NonNull android.service.autofill.Validator...);
-    method @NonNull public static android.service.autofill.Validator not(@NonNull android.service.autofill.Validator);
-    method @NonNull public static android.service.autofill.Validator or(@NonNull android.service.autofill.Validator...);
-  }
-
-  public final class VisibilitySetterAction implements android.service.autofill.OnClickAction android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.autofill.VisibilitySetterAction> CREATOR;
-  }
-
-  public static final class VisibilitySetterAction.Builder {
-    ctor public VisibilitySetterAction.Builder(@IdRes int, int);
-    method @NonNull public android.service.autofill.VisibilitySetterAction build();
-    method @NonNull public android.service.autofill.VisibilitySetterAction.Builder setVisibility(@IdRes int, int);
-  }
-
-}
-
-package android.service.carrier {
-
-  public class CarrierIdentifier implements android.os.Parcelable {
-    ctor public CarrierIdentifier(String, String, @Nullable String, @Nullable String, @Nullable String, @Nullable String);
-    ctor public CarrierIdentifier(@NonNull String, @NonNull String, @Nullable String, @Nullable String, @Nullable String, @Nullable String, int, int);
-    ctor public CarrierIdentifier(byte[], @Nullable String, @Nullable String);
-    method public int describeContents();
-    method public int getCarrierId();
-    method @Nullable public String getGid1();
-    method @Nullable public String getGid2();
-    method @Nullable public String getImsi();
-    method public String getMcc();
-    method public String getMnc();
-    method public int getSpecificCarrierId();
-    method @Nullable public String getSpn();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.carrier.CarrierIdentifier> CREATOR;
-  }
-
-  public class CarrierMessagingClientService extends android.app.Service {
-    ctor public CarrierMessagingClientService();
-    method @NonNull public final android.os.IBinder onBind(@Nullable android.content.Intent);
-  }
-
-  public abstract class CarrierMessagingService extends android.app.Service {
-    ctor public CarrierMessagingService();
-    method @Nullable public android.os.IBinder onBind(@NonNull android.content.Intent);
-    method public void onDownloadMms(@NonNull android.net.Uri, int, @NonNull android.net.Uri, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<java.lang.Integer>);
-    method @Deprecated public void onFilterSms(@NonNull android.service.carrier.MessagePdu, @NonNull String, int, int, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<java.lang.Boolean>);
-    method public void onReceiveTextSms(@NonNull android.service.carrier.MessagePdu, @NonNull String, int, int, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<java.lang.Integer>);
-    method @Deprecated public void onSendDataSms(@NonNull byte[], int, @NonNull String, int, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendSmsResult>);
-    method public void onSendDataSms(@NonNull byte[], int, @NonNull String, int, int, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendSmsResult>);
-    method public void onSendMms(@NonNull android.net.Uri, int, @Nullable android.net.Uri, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendMmsResult>);
-    method @Deprecated public void onSendMultipartTextSms(@NonNull java.util.List<java.lang.String>, int, @NonNull String, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendMultipartSmsResult>);
-    method public void onSendMultipartTextSms(@NonNull java.util.List<java.lang.String>, int, @NonNull String, int, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendMultipartSmsResult>);
-    method @Deprecated public void onSendTextSms(@NonNull String, int, @NonNull String, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendSmsResult>);
-    method public void onSendTextSms(@NonNull String, int, @NonNull String, int, @NonNull android.service.carrier.CarrierMessagingService.ResultCallback<android.service.carrier.CarrierMessagingService.SendSmsResult>);
-    field public static final int DOWNLOAD_STATUS_ERROR = 2; // 0x2
-    field public static final int DOWNLOAD_STATUS_OK = 0; // 0x0
-    field public static final int DOWNLOAD_STATUS_RETRY_ON_CARRIER_NETWORK = 1; // 0x1
-    field public static final int RECEIVE_OPTIONS_DEFAULT = 0; // 0x0
-    field public static final int RECEIVE_OPTIONS_DROP = 1; // 0x1
-    field public static final int RECEIVE_OPTIONS_SKIP_NOTIFY_WHEN_CREDENTIAL_PROTECTED_STORAGE_UNAVAILABLE = 2; // 0x2
-    field public static final int SEND_FLAG_REQUEST_DELIVERY_STATUS = 1; // 0x1
-    field public static final int SEND_STATUS_ERROR = 2; // 0x2
-    field public static final int SEND_STATUS_OK = 0; // 0x0
-    field public static final int SEND_STATUS_RETRY_ON_CARRIER_NETWORK = 1; // 0x1
-    field public static final String SERVICE_INTERFACE = "android.service.carrier.CarrierMessagingService";
-  }
-
-  public static interface CarrierMessagingService.ResultCallback<T> {
-    method public void onReceiveResult(@NonNull T) throws android.os.RemoteException;
-  }
-
-  public static final class CarrierMessagingService.SendMmsResult {
-    ctor public CarrierMessagingService.SendMmsResult(int, @Nullable byte[]);
-    method @Nullable public byte[] getSendConfPdu();
-    method public int getSendStatus();
-  }
-
-  public static final class CarrierMessagingService.SendMultipartSmsResult {
-    ctor public CarrierMessagingService.SendMultipartSmsResult(int, @Nullable int[]);
-    method @Nullable public int[] getMessageRefs();
-    method public int getSendStatus();
-  }
-
-  public static final class CarrierMessagingService.SendSmsResult {
-    ctor public CarrierMessagingService.SendSmsResult(int, int);
-    method public int getMessageRef();
-    method public int getSendStatus();
-  }
-
-  public abstract class CarrierService extends android.app.Service {
-    ctor public CarrierService();
-    method public final void notifyCarrierNetworkChange(boolean);
-    method @CallSuper public android.os.IBinder onBind(android.content.Intent);
-    method public abstract android.os.PersistableBundle onLoadConfig(android.service.carrier.CarrierIdentifier);
-    field public static final String CARRIER_SERVICE_INTERFACE = "android.service.carrier.CarrierService";
-  }
-
-  public final class MessagePdu implements android.os.Parcelable {
-    ctor public MessagePdu(@NonNull java.util.List<byte[]>);
-    method public int describeContents();
-    method @NonNull public java.util.List<byte[]> getPdus();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.carrier.MessagePdu> CREATOR;
-  }
-
-}
-
-package android.service.chooser {
-
-  @Deprecated public final class ChooserTarget implements android.os.Parcelable {
-    ctor @Deprecated public ChooserTarget(CharSequence, android.graphics.drawable.Icon, float, android.content.ComponentName, @Nullable android.os.Bundle);
-    method @Deprecated public int describeContents();
-    method @Deprecated public android.content.ComponentName getComponentName();
-    method @Deprecated public android.graphics.drawable.Icon getIcon();
-    method @Deprecated public android.os.Bundle getIntentExtras();
-    method @Deprecated public float getScore();
-    method @Deprecated public CharSequence getTitle();
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.service.chooser.ChooserTarget> CREATOR;
-  }
-
-  @Deprecated public abstract class ChooserTargetService extends android.app.Service {
-    ctor @Deprecated public ChooserTargetService();
-    method @Deprecated public android.os.IBinder onBind(android.content.Intent);
-    method @Deprecated public abstract java.util.List<android.service.chooser.ChooserTarget> onGetChooserTargets(android.content.ComponentName, android.content.IntentFilter);
-    field @Deprecated public static final String BIND_PERMISSION = "android.permission.BIND_CHOOSER_TARGET_SERVICE";
-    field @Deprecated public static final String META_DATA_NAME = "android.service.chooser.chooser_target_service";
-    field @Deprecated public static final String SERVICE_INTERFACE = "android.service.chooser.ChooserTargetService";
-  }
-
-}
-
-package android.service.controls {
-
-  public final class Control implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.app.PendingIntent getAppIntent();
-    method @NonNull public String getControlId();
-    method @NonNull public android.service.controls.templates.ControlTemplate getControlTemplate();
-    method @Nullable public android.content.res.ColorStateList getCustomColor();
-    method @Nullable public android.graphics.drawable.Icon getCustomIcon();
-    method public int getDeviceType();
-    method public int getStatus();
-    method @NonNull public CharSequence getStatusText();
-    method @Nullable public CharSequence getStructure();
-    method @NonNull public CharSequence getSubtitle();
-    method @NonNull public CharSequence getTitle();
-    method @Nullable public CharSequence getZone();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.controls.Control> CREATOR;
-    field public static final int STATUS_DISABLED = 4; // 0x4
-    field public static final int STATUS_ERROR = 3; // 0x3
-    field public static final int STATUS_NOT_FOUND = 2; // 0x2
-    field public static final int STATUS_OK = 1; // 0x1
-    field public static final int STATUS_UNKNOWN = 0; // 0x0
-  }
-
-  public static final class Control.StatefulBuilder {
-    ctor public Control.StatefulBuilder(@NonNull String, @NonNull android.app.PendingIntent);
-    ctor public Control.StatefulBuilder(@NonNull android.service.controls.Control);
-    method @NonNull public android.service.controls.Control build();
-    method @NonNull public android.service.controls.Control.StatefulBuilder setAppIntent(@NonNull android.app.PendingIntent);
-    method @NonNull public android.service.controls.Control.StatefulBuilder setControlId(@NonNull String);
-    method @NonNull public android.service.controls.Control.StatefulBuilder setControlTemplate(@NonNull android.service.controls.templates.ControlTemplate);
-    method @NonNull public android.service.controls.Control.StatefulBuilder setCustomColor(@Nullable android.content.res.ColorStateList);
-    method @NonNull public android.service.controls.Control.StatefulBuilder setCustomIcon(@Nullable android.graphics.drawable.Icon);
-    method @NonNull public android.service.controls.Control.StatefulBuilder setDeviceType(int);
-    method @NonNull public android.service.controls.Control.StatefulBuilder setStatus(int);
-    method @NonNull public android.service.controls.Control.StatefulBuilder setStatusText(@NonNull CharSequence);
-    method @NonNull public android.service.controls.Control.StatefulBuilder setStructure(@Nullable CharSequence);
-    method @NonNull public android.service.controls.Control.StatefulBuilder setSubtitle(@NonNull CharSequence);
-    method @NonNull public android.service.controls.Control.StatefulBuilder setTitle(@NonNull CharSequence);
-    method @NonNull public android.service.controls.Control.StatefulBuilder setZone(@Nullable CharSequence);
-  }
-
-  public static final class Control.StatelessBuilder {
-    ctor public Control.StatelessBuilder(@NonNull String, @NonNull android.app.PendingIntent);
-    ctor public Control.StatelessBuilder(@NonNull android.service.controls.Control);
-    method @NonNull public android.service.controls.Control build();
-    method @NonNull public android.service.controls.Control.StatelessBuilder setAppIntent(@NonNull android.app.PendingIntent);
-    method @NonNull public android.service.controls.Control.StatelessBuilder setControlId(@NonNull String);
-    method @NonNull public android.service.controls.Control.StatelessBuilder setCustomColor(@Nullable android.content.res.ColorStateList);
-    method @NonNull public android.service.controls.Control.StatelessBuilder setCustomIcon(@Nullable android.graphics.drawable.Icon);
-    method @NonNull public android.service.controls.Control.StatelessBuilder setDeviceType(int);
-    method @NonNull public android.service.controls.Control.StatelessBuilder setStructure(@Nullable CharSequence);
-    method @NonNull public android.service.controls.Control.StatelessBuilder setSubtitle(@NonNull CharSequence);
-    method @NonNull public android.service.controls.Control.StatelessBuilder setTitle(@NonNull CharSequence);
-    method @NonNull public android.service.controls.Control.StatelessBuilder setZone(@Nullable CharSequence);
-  }
-
-  public abstract class ControlsProviderService extends android.app.Service {
-    ctor public ControlsProviderService();
-    method @NonNull public abstract java.util.concurrent.Flow.Publisher<android.service.controls.Control> createPublisherFor(@NonNull java.util.List<java.lang.String>);
-    method @NonNull public abstract java.util.concurrent.Flow.Publisher<android.service.controls.Control> createPublisherForAllAvailable();
-    method @Nullable public java.util.concurrent.Flow.Publisher<android.service.controls.Control> createPublisherForSuggested();
-    method @NonNull public final android.os.IBinder onBind(@NonNull android.content.Intent);
-    method public final boolean onUnbind(@NonNull android.content.Intent);
-    method public abstract void performControlAction(@NonNull String, @NonNull android.service.controls.actions.ControlAction, @NonNull java.util.function.Consumer<java.lang.Integer>);
-    method public static void requestAddControl(@NonNull android.content.Context, @NonNull android.content.ComponentName, @NonNull android.service.controls.Control);
-    field public static final String SERVICE_CONTROLS = "android.service.controls.ControlsProviderService";
-    field @NonNull public static final String TAG = "ControlsProviderService";
-  }
-
-  public class DeviceTypes {
-    method public static boolean validDeviceType(int);
-    field public static final int TYPE_AC_HEATER = 1; // 0x1
-    field public static final int TYPE_AC_UNIT = 2; // 0x2
-    field public static final int TYPE_AIR_FRESHENER = 3; // 0x3
-    field public static final int TYPE_AIR_PURIFIER = 4; // 0x4
-    field public static final int TYPE_AWNING = 33; // 0x21
-    field public static final int TYPE_BLINDS = 34; // 0x22
-    field public static final int TYPE_CAMERA = 50; // 0x32
-    field public static final int TYPE_CLOSET = 35; // 0x23
-    field public static final int TYPE_COFFEE_MAKER = 5; // 0x5
-    field public static final int TYPE_CURTAIN = 36; // 0x24
-    field public static final int TYPE_DEHUMIDIFIER = 6; // 0x6
-    field public static final int TYPE_DISHWASHER = 24; // 0x18
-    field public static final int TYPE_DISPLAY = 7; // 0x7
-    field public static final int TYPE_DOOR = 37; // 0x25
-    field public static final int TYPE_DOORBELL = 51; // 0x33
-    field public static final int TYPE_DRAWER = 38; // 0x26
-    field public static final int TYPE_DRYER = 25; // 0x19
-    field public static final int TYPE_FAN = 8; // 0x8
-    field public static final int TYPE_GARAGE = 39; // 0x27
-    field public static final int TYPE_GATE = 40; // 0x28
-    field public static final int TYPE_GENERIC_ARM_DISARM = -5; // 0xfffffffb
-    field public static final int TYPE_GENERIC_LOCK_UNLOCK = -4; // 0xfffffffc
-    field public static final int TYPE_GENERIC_ON_OFF = -1; // 0xffffffff
-    field public static final int TYPE_GENERIC_OPEN_CLOSE = -3; // 0xfffffffd
-    field public static final int TYPE_GENERIC_START_STOP = -2; // 0xfffffffe
-    field public static final int TYPE_GENERIC_TEMP_SETTING = -6; // 0xfffffffa
-    field public static final int TYPE_GENERIC_VIEWSTREAM = -7; // 0xfffffff9
-    field public static final int TYPE_HEATER = 47; // 0x2f
-    field public static final int TYPE_HOOD = 10; // 0xa
-    field public static final int TYPE_HUMIDIFIER = 11; // 0xb
-    field public static final int TYPE_KETTLE = 12; // 0xc
-    field public static final int TYPE_LIGHT = 13; // 0xd
-    field public static final int TYPE_LOCK = 45; // 0x2d
-    field public static final int TYPE_MICROWAVE = 14; // 0xe
-    field public static final int TYPE_MOP = 26; // 0x1a
-    field public static final int TYPE_MOWER = 27; // 0x1b
-    field public static final int TYPE_MULTICOOKER = 28; // 0x1c
-    field public static final int TYPE_OUTLET = 15; // 0xf
-    field public static final int TYPE_PERGOLA = 41; // 0x29
-    field public static final int TYPE_RADIATOR = 16; // 0x10
-    field public static final int TYPE_REFRIGERATOR = 48; // 0x30
-    field public static final int TYPE_REMOTE_CONTROL = 17; // 0x11
-    field public static final int TYPE_ROUTINE = 52; // 0x34
-    field public static final int TYPE_SECURITY_SYSTEM = 46; // 0x2e
-    field public static final int TYPE_SET_TOP = 18; // 0x12
-    field public static final int TYPE_SHOWER = 29; // 0x1d
-    field public static final int TYPE_SHUTTER = 42; // 0x2a
-    field public static final int TYPE_SPRINKLER = 30; // 0x1e
-    field public static final int TYPE_STANDMIXER = 19; // 0x13
-    field public static final int TYPE_STYLER = 20; // 0x14
-    field public static final int TYPE_SWITCH = 21; // 0x15
-    field public static final int TYPE_THERMOSTAT = 49; // 0x31
-    field public static final int TYPE_TV = 22; // 0x16
-    field public static final int TYPE_UNKNOWN = 0; // 0x0
-    field public static final int TYPE_VACUUM = 32; // 0x20
-    field public static final int TYPE_VALVE = 44; // 0x2c
-    field public static final int TYPE_WASHER = 31; // 0x1f
-    field public static final int TYPE_WATER_HEATER = 23; // 0x17
-    field public static final int TYPE_WINDOW = 43; // 0x2b
-  }
-
-}
-
-package android.service.controls.actions {
-
-  public final class BooleanAction extends android.service.controls.actions.ControlAction {
-    ctor public BooleanAction(@NonNull String, boolean);
-    ctor public BooleanAction(@NonNull String, boolean, @Nullable String);
-    method public int getActionType();
-    method public boolean getNewState();
-  }
-
-  public final class CommandAction extends android.service.controls.actions.ControlAction {
-    ctor public CommandAction(@NonNull String, @Nullable String);
-    ctor public CommandAction(@NonNull String);
-    method public int getActionType();
-  }
-
-  public abstract class ControlAction {
-    method public abstract int getActionType();
-    method @Nullable public String getChallengeValue();
-    method @NonNull public static android.service.controls.actions.ControlAction getErrorAction();
-    method @NonNull public String getTemplateId();
-    method public static final boolean isValidResponse(int);
-    field public static final int RESPONSE_CHALLENGE_ACK = 3; // 0x3
-    field public static final int RESPONSE_CHALLENGE_PASSPHRASE = 5; // 0x5
-    field public static final int RESPONSE_CHALLENGE_PIN = 4; // 0x4
-    field public static final int RESPONSE_FAIL = 2; // 0x2
-    field public static final int RESPONSE_OK = 1; // 0x1
-    field public static final int RESPONSE_UNKNOWN = 0; // 0x0
-    field public static final int TYPE_BOOLEAN = 1; // 0x1
-    field public static final int TYPE_COMMAND = 5; // 0x5
-    field public static final int TYPE_ERROR = -1; // 0xffffffff
-    field public static final int TYPE_FLOAT = 2; // 0x2
-    field public static final int TYPE_MODE = 4; // 0x4
-  }
-
-  public final class FloatAction extends android.service.controls.actions.ControlAction {
-    ctor public FloatAction(@NonNull String, float);
-    ctor public FloatAction(@NonNull String, float, @Nullable String);
-    method public int getActionType();
-    method public float getNewValue();
-  }
-
-  public final class ModeAction extends android.service.controls.actions.ControlAction {
-    ctor public ModeAction(@NonNull String, int, @Nullable String);
-    ctor public ModeAction(@NonNull String, int);
-    method public int getActionType();
-    method public int getNewMode();
-  }
-
-}
-
-package android.service.controls.templates {
-
-  public final class ControlButton implements android.os.Parcelable {
-    ctor public ControlButton(boolean, @NonNull CharSequence);
-    method public int describeContents();
-    method @NonNull public CharSequence getActionDescription();
-    method public boolean isChecked();
-    method @NonNull public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.controls.templates.ControlButton> CREATOR;
-  }
-
-  public abstract class ControlTemplate {
-    method @NonNull public static android.service.controls.templates.ControlTemplate getErrorTemplate();
-    method @NonNull public static android.service.controls.templates.ControlTemplate getNoTemplateObject();
-    method @NonNull public String getTemplateId();
-    method public abstract int getTemplateType();
-    field public static final int TYPE_ERROR = -1; // 0xffffffff
-    field public static final int TYPE_NO_TEMPLATE = 0; // 0x0
-    field public static final int TYPE_RANGE = 2; // 0x2
-    field public static final int TYPE_STATELESS = 8; // 0x8
-    field public static final int TYPE_TEMPERATURE = 7; // 0x7
-    field public static final int TYPE_TOGGLE = 1; // 0x1
-    field public static final int TYPE_TOGGLE_RANGE = 6; // 0x6
-  }
-
-  public final class RangeTemplate extends android.service.controls.templates.ControlTemplate {
-    ctor public RangeTemplate(@NonNull String, float, float, float, float, @Nullable CharSequence);
-    method public float getCurrentValue();
-    method @NonNull public CharSequence getFormatString();
-    method public float getMaxValue();
-    method public float getMinValue();
-    method public float getStepValue();
-    method public int getTemplateType();
-  }
-
-  public final class StatelessTemplate extends android.service.controls.templates.ControlTemplate {
-    ctor public StatelessTemplate(@NonNull String);
-    method public int getTemplateType();
-  }
-
-  public final class TemperatureControlTemplate extends android.service.controls.templates.ControlTemplate {
-    ctor public TemperatureControlTemplate(@NonNull String, @NonNull android.service.controls.templates.ControlTemplate, int, int, int);
-    method public int getCurrentActiveMode();
-    method public int getCurrentMode();
-    method public int getModes();
-    method @NonNull public android.service.controls.templates.ControlTemplate getTemplate();
-    method public int getTemplateType();
-    field public static final int FLAG_MODE_COOL = 8; // 0x8
-    field public static final int FLAG_MODE_ECO = 32; // 0x20
-    field public static final int FLAG_MODE_HEAT = 4; // 0x4
-    field public static final int FLAG_MODE_HEAT_COOL = 16; // 0x10
-    field public static final int FLAG_MODE_OFF = 2; // 0x2
-    field public static final int MODE_COOL = 3; // 0x3
-    field public static final int MODE_ECO = 5; // 0x5
-    field public static final int MODE_HEAT = 2; // 0x2
-    field public static final int MODE_HEAT_COOL = 4; // 0x4
-    field public static final int MODE_OFF = 1; // 0x1
-    field public static final int MODE_UNKNOWN = 0; // 0x0
-  }
-
-  public final class ToggleRangeTemplate extends android.service.controls.templates.ControlTemplate {
-    ctor public ToggleRangeTemplate(@NonNull String, @NonNull android.service.controls.templates.ControlButton, @NonNull android.service.controls.templates.RangeTemplate);
-    ctor public ToggleRangeTemplate(@NonNull String, boolean, @NonNull CharSequence, @NonNull android.service.controls.templates.RangeTemplate);
-    method @NonNull public CharSequence getActionDescription();
-    method @NonNull public android.service.controls.templates.RangeTemplate getRange();
-    method public int getTemplateType();
-    method public boolean isChecked();
-  }
-
-  public final class ToggleTemplate extends android.service.controls.templates.ControlTemplate {
-    ctor public ToggleTemplate(@NonNull String, @NonNull android.service.controls.templates.ControlButton);
-    method @NonNull public CharSequence getContentDescription();
-    method public int getTemplateType();
-    method public boolean isChecked();
-  }
-
-}
-
-package android.service.dreams {
-
-  public class DreamService extends android.app.Service implements android.view.Window.Callback {
-    ctor public DreamService();
-    method public void addContentView(android.view.View, android.view.ViewGroup.LayoutParams);
-    method public boolean dispatchGenericMotionEvent(android.view.MotionEvent);
-    method public boolean dispatchKeyEvent(android.view.KeyEvent);
-    method public boolean dispatchKeyShortcutEvent(android.view.KeyEvent);
-    method public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    method public boolean dispatchTouchEvent(android.view.MotionEvent);
-    method public boolean dispatchTrackballEvent(android.view.MotionEvent);
-    method public <T extends android.view.View> T findViewById(@IdRes int);
-    method public final void finish();
-    method public android.view.Window getWindow();
-    method public android.view.WindowManager getWindowManager();
-    method public boolean isFullscreen();
-    method public boolean isInteractive();
-    method public boolean isScreenBright();
-    method public void onActionModeFinished(android.view.ActionMode);
-    method public void onActionModeStarted(android.view.ActionMode);
-    method public void onAttachedToWindow();
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method public void onContentChanged();
-    method public boolean onCreatePanelMenu(int, android.view.Menu);
-    method public android.view.View onCreatePanelView(int);
-    method public void onDetachedFromWindow();
-    method public void onDreamingStarted();
-    method public void onDreamingStopped();
-    method public boolean onMenuItemSelected(int, android.view.MenuItem);
-    method public boolean onMenuOpened(int, android.view.Menu);
-    method public void onPanelClosed(int, android.view.Menu);
-    method public boolean onPreparePanel(int, android.view.View, android.view.Menu);
-    method public boolean onSearchRequested(android.view.SearchEvent);
-    method public boolean onSearchRequested();
-    method public void onWakeUp();
-    method public void onWindowAttributesChanged(android.view.WindowManager.LayoutParams);
-    method public void onWindowFocusChanged(boolean);
-    method public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback);
-    method public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback, int);
-    method @NonNull public final <T extends android.view.View> T requireViewById(@IdRes int);
-    method public void setContentView(@LayoutRes int);
-    method public void setContentView(android.view.View);
-    method public void setContentView(android.view.View, android.view.ViewGroup.LayoutParams);
-    method public void setFullscreen(boolean);
-    method public void setInteractive(boolean);
-    method public void setScreenBright(boolean);
-    method public final void wakeUp();
-    field public static final String DREAM_META_DATA = "android.service.dream";
-    field public static final String SERVICE_INTERFACE = "android.service.dreams.DreamService";
-  }
-
-}
-
-package android.service.media {
-
-  public abstract class CameraPrewarmService extends android.app.Service {
-    ctor public CameraPrewarmService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public abstract void onCooldown(boolean);
-    method public abstract void onPrewarm();
-  }
-
-  public abstract class MediaBrowserService extends android.app.Service {
-    ctor public MediaBrowserService();
-    method public void dump(java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method public final android.os.Bundle getBrowserRootHints();
-    method public final android.media.session.MediaSessionManager.RemoteUserInfo getCurrentBrowserInfo();
-    method @Nullable public android.media.session.MediaSession.Token getSessionToken();
-    method public void notifyChildrenChanged(@NonNull String);
-    method public void notifyChildrenChanged(@NonNull String, @NonNull android.os.Bundle);
-    method public android.os.IBinder onBind(android.content.Intent);
-    method @Nullable public abstract android.service.media.MediaBrowserService.BrowserRoot onGetRoot(@NonNull String, int, @Nullable android.os.Bundle);
-    method public abstract void onLoadChildren(@NonNull String, @NonNull android.service.media.MediaBrowserService.Result<java.util.List<android.media.browse.MediaBrowser.MediaItem>>);
-    method public void onLoadChildren(@NonNull String, @NonNull android.service.media.MediaBrowserService.Result<java.util.List<android.media.browse.MediaBrowser.MediaItem>>, @NonNull android.os.Bundle);
-    method public void onLoadItem(String, android.service.media.MediaBrowserService.Result<android.media.browse.MediaBrowser.MediaItem>);
-    method public void setSessionToken(android.media.session.MediaSession.Token);
-    field public static final String SERVICE_INTERFACE = "android.media.browse.MediaBrowserService";
-  }
-
-  public static final class MediaBrowserService.BrowserRoot {
-    ctor public MediaBrowserService.BrowserRoot(@NonNull String, @Nullable android.os.Bundle);
-    method public android.os.Bundle getExtras();
-    method public String getRootId();
-    field public static final String EXTRA_OFFLINE = "android.service.media.extra.OFFLINE";
-    field public static final String EXTRA_RECENT = "android.service.media.extra.RECENT";
-    field public static final String EXTRA_SUGGESTED = "android.service.media.extra.SUGGESTED";
-  }
-
-  public class MediaBrowserService.Result<T> {
-    method public void detach();
-    method public void sendResult(T);
-  }
-
-}
-
-package android.service.notification {
-
-  public final class Condition implements android.os.Parcelable {
-    ctor public Condition(android.net.Uri, String, int);
-    ctor public Condition(android.net.Uri, String, String, String, int, int, int);
-    ctor public Condition(android.os.Parcel);
-    method public android.service.notification.Condition copy();
-    method public int describeContents();
-    method public static boolean isValidId(android.net.Uri, String);
-    method public static android.net.Uri.Builder newId(android.content.Context);
-    method public static String relevanceToString(int);
-    method public static String stateToString(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.Condition> CREATOR;
-    field public static final int FLAG_RELEVANT_ALWAYS = 2; // 0x2
-    field public static final int FLAG_RELEVANT_NOW = 1; // 0x1
-    field public static final String SCHEME = "condition";
-    field public static final int STATE_ERROR = 3; // 0x3
-    field public static final int STATE_FALSE = 0; // 0x0
-    field public static final int STATE_TRUE = 1; // 0x1
-    field public static final int STATE_UNKNOWN = 2; // 0x2
-    field public final int flags;
-    field public final int icon;
-    field public final android.net.Uri id;
-    field public final String line1;
-    field public final String line2;
-    field public final int state;
-    field public final String summary;
-  }
-
-  @Deprecated public abstract class ConditionProviderService extends android.app.Service {
-    ctor @Deprecated public ConditionProviderService();
-    method @Deprecated public final void notifyCondition(android.service.notification.Condition);
-    method @Deprecated public final void notifyConditions(android.service.notification.Condition...);
-    method @Deprecated public android.os.IBinder onBind(android.content.Intent);
-    method @Deprecated public abstract void onConnected();
-    method @Deprecated public void onRequestConditions(int);
-    method @Deprecated public abstract void onSubscribe(android.net.Uri);
-    method @Deprecated public abstract void onUnsubscribe(android.net.Uri);
-    method @Deprecated public static final void requestRebind(android.content.ComponentName);
-    method @Deprecated public final void requestUnbind();
-    field @Deprecated public static final String EXTRA_RULE_ID = "android.service.notification.extra.RULE_ID";
-    field @Deprecated public static final String META_DATA_CONFIGURATION_ACTIVITY = "android.service.zen.automatic.configurationActivity";
-    field @Deprecated public static final String META_DATA_RULE_INSTANCE_LIMIT = "android.service.zen.automatic.ruleInstanceLimit";
-    field @Deprecated public static final String META_DATA_RULE_TYPE = "android.service.zen.automatic.ruleType";
-    field @Deprecated public static final String SERVICE_INTERFACE = "android.service.notification.ConditionProviderService";
-  }
-
-  public abstract class NotificationListenerService extends android.app.Service {
-    ctor public NotificationListenerService();
-    method public final void cancelAllNotifications();
-    method @Deprecated public final void cancelNotification(String, String, int);
-    method public final void cancelNotification(String);
-    method public final void cancelNotifications(String[]);
-    method public final void clearRequestedListenerHints();
-    method public android.service.notification.StatusBarNotification[] getActiveNotifications();
-    method public android.service.notification.StatusBarNotification[] getActiveNotifications(String[]);
-    method public final int getCurrentInterruptionFilter();
-    method public final int getCurrentListenerHints();
-    method public android.service.notification.NotificationListenerService.RankingMap getCurrentRanking();
-    method public final java.util.List<android.app.NotificationChannelGroup> getNotificationChannelGroups(@NonNull String, @NonNull android.os.UserHandle);
-    method public final java.util.List<android.app.NotificationChannel> getNotificationChannels(@NonNull String, @NonNull android.os.UserHandle);
-    method public final android.service.notification.StatusBarNotification[] getSnoozedNotifications();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public void onInterruptionFilterChanged(int);
-    method public void onListenerConnected();
-    method public void onListenerDisconnected();
-    method public void onListenerHintsChanged(int);
-    method public void onNotificationChannelGroupModified(String, android.os.UserHandle, android.app.NotificationChannelGroup, int);
-    method public void onNotificationChannelModified(String, android.os.UserHandle, android.app.NotificationChannel, int);
-    method public void onNotificationPosted(android.service.notification.StatusBarNotification);
-    method public void onNotificationPosted(android.service.notification.StatusBarNotification, android.service.notification.NotificationListenerService.RankingMap);
-    method public void onNotificationRankingUpdate(android.service.notification.NotificationListenerService.RankingMap);
-    method public void onNotificationRemoved(android.service.notification.StatusBarNotification);
-    method public void onNotificationRemoved(android.service.notification.StatusBarNotification, android.service.notification.NotificationListenerService.RankingMap);
-    method public void onNotificationRemoved(android.service.notification.StatusBarNotification, android.service.notification.NotificationListenerService.RankingMap, int);
-    method public void onSilentStatusBarIconsVisibilityChanged(boolean);
-    method public final void requestInterruptionFilter(int);
-    method public final void requestListenerHints(int);
-    method public static void requestRebind(android.content.ComponentName);
-    method public final void requestUnbind();
-    method public final void setNotificationsShown(String[]);
-    method public final void snoozeNotification(String, long);
-    method public final void updateNotificationChannel(@NonNull String, @NonNull android.os.UserHandle, @NonNull android.app.NotificationChannel);
-    field public static final int HINT_HOST_DISABLE_CALL_EFFECTS = 4; // 0x4
-    field public static final int HINT_HOST_DISABLE_EFFECTS = 1; // 0x1
-    field public static final int HINT_HOST_DISABLE_NOTIFICATION_EFFECTS = 2; // 0x2
-    field public static final int INTERRUPTION_FILTER_ALARMS = 4; // 0x4
-    field public static final int INTERRUPTION_FILTER_ALL = 1; // 0x1
-    field public static final int INTERRUPTION_FILTER_NONE = 3; // 0x3
-    field public static final int INTERRUPTION_FILTER_PRIORITY = 2; // 0x2
-    field public static final int INTERRUPTION_FILTER_UNKNOWN = 0; // 0x0
-    field public static final int NOTIFICATION_CHANNEL_OR_GROUP_ADDED = 1; // 0x1
-    field public static final int NOTIFICATION_CHANNEL_OR_GROUP_DELETED = 3; // 0x3
-    field public static final int NOTIFICATION_CHANNEL_OR_GROUP_UPDATED = 2; // 0x2
-    field public static final int REASON_APP_CANCEL = 8; // 0x8
-    field public static final int REASON_APP_CANCEL_ALL = 9; // 0x9
-    field public static final int REASON_CANCEL = 2; // 0x2
-    field public static final int REASON_CANCEL_ALL = 3; // 0x3
-    field public static final int REASON_CHANNEL_BANNED = 17; // 0x11
-    field public static final int REASON_CLICK = 1; // 0x1
-    field public static final int REASON_ERROR = 4; // 0x4
-    field public static final int REASON_GROUP_OPTIMIZATION = 13; // 0xd
-    field public static final int REASON_GROUP_SUMMARY_CANCELED = 12; // 0xc
-    field public static final int REASON_LISTENER_CANCEL = 10; // 0xa
-    field public static final int REASON_LISTENER_CANCEL_ALL = 11; // 0xb
-    field public static final int REASON_PACKAGE_BANNED = 7; // 0x7
-    field public static final int REASON_PACKAGE_CHANGED = 5; // 0x5
-    field public static final int REASON_PACKAGE_SUSPENDED = 14; // 0xe
-    field public static final int REASON_PROFILE_TURNED_OFF = 15; // 0xf
-    field public static final int REASON_SNOOZED = 18; // 0x12
-    field public static final int REASON_TIMEOUT = 19; // 0x13
-    field public static final int REASON_UNAUTOBUNDLED = 16; // 0x10
-    field public static final int REASON_USER_STOPPED = 6; // 0x6
-    field public static final String SERVICE_INTERFACE = "android.service.notification.NotificationListenerService";
-    field @Deprecated public static final int SUPPRESSED_EFFECT_SCREEN_OFF = 1; // 0x1
-    field @Deprecated public static final int SUPPRESSED_EFFECT_SCREEN_ON = 2; // 0x2
-  }
-
-  public static class NotificationListenerService.Ranking {
-    ctor public NotificationListenerService.Ranking();
-    method public boolean canBubble();
-    method public boolean canShowBadge();
-    method public android.app.NotificationChannel getChannel();
-    method public int getImportance();
-    method public CharSequence getImportanceExplanation();
-    method public String getKey();
-    method public long getLastAudiblyAlertedMillis();
-    method public String getOverrideGroupKey();
-    method public int getRank();
-    method @NonNull public java.util.List<android.app.Notification.Action> getSmartActions();
-    method @NonNull public java.util.List<java.lang.CharSequence> getSmartReplies();
-    method public int getSuppressedVisualEffects();
-    method public int getUserSentiment();
-    method public boolean isAmbient();
-    method public boolean isSuspended();
-    method public boolean matchesInterruptionFilter();
-    field public static final int USER_SENTIMENT_NEGATIVE = -1; // 0xffffffff
-    field public static final int USER_SENTIMENT_NEUTRAL = 0; // 0x0
-    field public static final int USER_SENTIMENT_POSITIVE = 1; // 0x1
-  }
-
-  public static class NotificationListenerService.RankingMap implements android.os.Parcelable {
-    method public int describeContents();
-    method public String[] getOrderedKeys();
-    method public boolean getRanking(String, android.service.notification.NotificationListenerService.Ranking);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.NotificationListenerService.RankingMap> CREATOR;
-  }
-
-  public class StatusBarNotification implements android.os.Parcelable {
-    ctor @Deprecated public StatusBarNotification(String, String, int, String, int, int, int, android.app.Notification, android.os.UserHandle, long);
-    ctor public StatusBarNotification(android.os.Parcel);
-    method public android.service.notification.StatusBarNotification clone();
-    method public int describeContents();
-    method public String getGroupKey();
-    method public int getId();
-    method public String getKey();
-    method public android.app.Notification getNotification();
-    method @NonNull public String getOpPkg();
-    method public String getOverrideGroupKey();
-    method public String getPackageName();
-    method public long getPostTime();
-    method public String getTag();
-    method public int getUid();
-    method public android.os.UserHandle getUser();
-    method @Deprecated public int getUserId();
-    method public boolean isAppGroup();
-    method public boolean isClearable();
-    method public boolean isGroup();
-    method public boolean isOngoing();
-    method public void setOverrideGroupKey(String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.StatusBarNotification> CREATOR;
-  }
-
-  public final class ZenPolicy implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getPriorityCallSenders();
-    method public int getPriorityCategoryAlarms();
-    method public int getPriorityCategoryCalls();
-    method public int getPriorityCategoryConversations();
-    method public int getPriorityCategoryEvents();
-    method public int getPriorityCategoryMedia();
-    method public int getPriorityCategoryMessages();
-    method public int getPriorityCategoryReminders();
-    method public int getPriorityCategoryRepeatCallers();
-    method public int getPriorityCategorySystem();
-    method public int getPriorityConversationSenders();
-    method public int getPriorityMessageSenders();
-    method public int getVisualEffectAmbient();
-    method public int getVisualEffectBadge();
-    method public int getVisualEffectFullScreenIntent();
-    method public int getVisualEffectLights();
-    method public int getVisualEffectNotificationList();
-    method public int getVisualEffectPeek();
-    method public int getVisualEffectStatusBar();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CONVERSATION_SENDERS_ANYONE = 1; // 0x1
-    field public static final int CONVERSATION_SENDERS_IMPORTANT = 2; // 0x2
-    field public static final int CONVERSATION_SENDERS_NONE = 3; // 0x3
-    field public static final int CONVERSATION_SENDERS_UNSET = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.ZenPolicy> CREATOR;
-    field public static final int PEOPLE_TYPE_ANYONE = 1; // 0x1
-    field public static final int PEOPLE_TYPE_CONTACTS = 2; // 0x2
-    field public static final int PEOPLE_TYPE_NONE = 4; // 0x4
-    field public static final int PEOPLE_TYPE_STARRED = 3; // 0x3
-    field public static final int PEOPLE_TYPE_UNSET = 0; // 0x0
-    field public static final int STATE_ALLOW = 1; // 0x1
-    field public static final int STATE_DISALLOW = 2; // 0x2
-    field public static final int STATE_UNSET = 0; // 0x0
-  }
-
-  public static final class ZenPolicy.Builder {
-    ctor public ZenPolicy.Builder();
-    method @NonNull public android.service.notification.ZenPolicy.Builder allowAlarms(boolean);
-    method @NonNull public android.service.notification.ZenPolicy.Builder allowAllSounds();
-    method @NonNull public android.service.notification.ZenPolicy.Builder allowCalls(int);
-    method @NonNull public android.service.notification.ZenPolicy.Builder allowConversations(int);
-    method @NonNull public android.service.notification.ZenPolicy.Builder allowEvents(boolean);
-    method @NonNull public android.service.notification.ZenPolicy.Builder allowMedia(boolean);
-    method @NonNull public android.service.notification.ZenPolicy.Builder allowMessages(int);
-    method @NonNull public android.service.notification.ZenPolicy.Builder allowReminders(boolean);
-    method @NonNull public android.service.notification.ZenPolicy.Builder allowRepeatCallers(boolean);
-    method @NonNull public android.service.notification.ZenPolicy.Builder allowSystem(boolean);
-    method @NonNull public android.service.notification.ZenPolicy build();
-    method @NonNull public android.service.notification.ZenPolicy.Builder disallowAllSounds();
-    method @NonNull public android.service.notification.ZenPolicy.Builder hideAllVisualEffects();
-    method @NonNull public android.service.notification.ZenPolicy.Builder showAllVisualEffects();
-    method @NonNull public android.service.notification.ZenPolicy.Builder showBadges(boolean);
-    method @NonNull public android.service.notification.ZenPolicy.Builder showFullScreenIntent(boolean);
-    method @NonNull public android.service.notification.ZenPolicy.Builder showInAmbientDisplay(boolean);
-    method @NonNull public android.service.notification.ZenPolicy.Builder showInNotificationList(boolean);
-    method @NonNull public android.service.notification.ZenPolicy.Builder showLights(boolean);
-    method @NonNull public android.service.notification.ZenPolicy.Builder showPeeking(boolean);
-    method @NonNull public android.service.notification.ZenPolicy.Builder showStatusBarIcons(boolean);
-  }
-
-}
-
-package android.service.quickaccesswallet {
-
-  public interface GetWalletCardsCallback {
-    method public void onFailure(@NonNull android.service.quickaccesswallet.GetWalletCardsError);
-    method public void onSuccess(@NonNull android.service.quickaccesswallet.GetWalletCardsResponse);
-  }
-
-  public final class GetWalletCardsError implements android.os.Parcelable {
-    ctor public GetWalletCardsError(@Nullable android.graphics.drawable.Icon, @Nullable CharSequence);
-    method public int describeContents();
-    method @Nullable public android.graphics.drawable.Icon getIcon();
-    method @Nullable public CharSequence getMessage();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.quickaccesswallet.GetWalletCardsError> CREATOR;
-  }
-
-  public final class GetWalletCardsRequest implements android.os.Parcelable {
-    ctor public GetWalletCardsRequest(int, int, int, int);
-    method public int describeContents();
-    method public int getCardHeightPx();
-    method public int getCardWidthPx();
-    method public int getIconSizePx();
-    method public int getMaxCards();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.quickaccesswallet.GetWalletCardsRequest> CREATOR;
-  }
-
-  public final class GetWalletCardsResponse implements android.os.Parcelable {
-    ctor public GetWalletCardsResponse(@NonNull java.util.List<android.service.quickaccesswallet.WalletCard>, int);
-    method public int describeContents();
-    method public int getSelectedIndex();
-    method @NonNull public java.util.List<android.service.quickaccesswallet.WalletCard> getWalletCards();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.quickaccesswallet.GetWalletCardsResponse> CREATOR;
-  }
-
-  public abstract class QuickAccessWalletService extends android.app.Service {
-    ctor public QuickAccessWalletService();
-    method @Nullable public android.os.IBinder onBind(@NonNull android.content.Intent);
-    method public abstract void onWalletCardSelected(@NonNull android.service.quickaccesswallet.SelectWalletCardRequest);
-    method public abstract void onWalletCardsRequested(@NonNull android.service.quickaccesswallet.GetWalletCardsRequest, @NonNull android.service.quickaccesswallet.GetWalletCardsCallback);
-    method public abstract void onWalletDismissed();
-    method public final void sendWalletServiceEvent(@NonNull android.service.quickaccesswallet.WalletServiceEvent);
-    field public static final String ACTION_VIEW_WALLET = "android.service.quickaccesswallet.action.VIEW_WALLET";
-    field public static final String ACTION_VIEW_WALLET_SETTINGS = "android.service.quickaccesswallet.action.VIEW_WALLET_SETTINGS";
-    field public static final String SERVICE_INTERFACE = "android.service.quickaccesswallet.QuickAccessWalletService";
-    field public static final String SERVICE_META_DATA = "android.quickaccesswallet";
-  }
-
-  public final class SelectWalletCardRequest implements android.os.Parcelable {
-    ctor public SelectWalletCardRequest(@NonNull String);
-    method public int describeContents();
-    method @NonNull public String getCardId();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.quickaccesswallet.SelectWalletCardRequest> CREATOR;
-  }
-
-  public final class WalletCard implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.graphics.drawable.Icon getCardIcon();
-    method @NonNull public String getCardId();
-    method @NonNull public android.graphics.drawable.Icon getCardImage();
-    method @Nullable public CharSequence getCardLabel();
-    method @NonNull public CharSequence getContentDescription();
-    method @NonNull public android.app.PendingIntent getPendingIntent();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.quickaccesswallet.WalletCard> CREATOR;
-  }
-
-  public static final class WalletCard.Builder {
-    ctor public WalletCard.Builder(@NonNull String, @NonNull android.graphics.drawable.Icon, @NonNull CharSequence, @NonNull android.app.PendingIntent);
-    method @NonNull public android.service.quickaccesswallet.WalletCard build();
-    method @NonNull public android.service.quickaccesswallet.WalletCard.Builder setCardIcon(@Nullable android.graphics.drawable.Icon);
-    method @NonNull public android.service.quickaccesswallet.WalletCard.Builder setCardLabel(@Nullable CharSequence);
-  }
-
-  public final class WalletServiceEvent implements android.os.Parcelable {
-    ctor public WalletServiceEvent(int);
-    method public int describeContents();
-    method public int getEventType();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.quickaccesswallet.WalletServiceEvent> CREATOR;
-    field public static final int TYPE_NFC_PAYMENT_STARTED = 1; // 0x1
-  }
-
-}
-
-package android.service.quicksettings {
-
-  public final class Tile implements android.os.Parcelable {
-    method public int describeContents();
-    method public CharSequence getContentDescription();
-    method public android.graphics.drawable.Icon getIcon();
-    method public CharSequence getLabel();
-    method public int getState();
-    method @Nullable public CharSequence getStateDescription();
-    method @Nullable public CharSequence getSubtitle();
-    method public void setContentDescription(CharSequence);
-    method public void setIcon(android.graphics.drawable.Icon);
-    method public void setLabel(CharSequence);
-    method public void setState(int);
-    method public void setStateDescription(@Nullable CharSequence);
-    method public void setSubtitle(@Nullable CharSequence);
-    method public void updateTile();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.quicksettings.Tile> CREATOR;
-    field public static final int STATE_ACTIVE = 2; // 0x2
-    field public static final int STATE_INACTIVE = 1; // 0x1
-    field public static final int STATE_UNAVAILABLE = 0; // 0x0
-  }
-
-  public class TileService extends android.app.Service {
-    ctor public TileService();
-    method public final android.service.quicksettings.Tile getQsTile();
-    method public final boolean isLocked();
-    method public final boolean isSecure();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public void onClick();
-    method public void onStartListening();
-    method public void onStopListening();
-    method public void onTileAdded();
-    method public void onTileRemoved();
-    method public static final void requestListeningState(android.content.Context, android.content.ComponentName);
-    method public final void showDialog(android.app.Dialog);
-    method public final void startActivityAndCollapse(android.content.Intent);
-    method public final void unlockAndRun(Runnable);
-    field public static final String ACTION_QS_TILE = "android.service.quicksettings.action.QS_TILE";
-    field public static final String ACTION_QS_TILE_PREFERENCES = "android.service.quicksettings.action.QS_TILE_PREFERENCES";
-    field public static final String META_DATA_ACTIVE_TILE = "android.service.quicksettings.ACTIVE_TILE";
-    field public static final String META_DATA_TOGGLEABLE_TILE = "android.service.quicksettings.TOGGLEABLE_TILE";
-  }
-
-}
-
-package android.service.restrictions {
-
-  public abstract class RestrictionsReceiver extends android.content.BroadcastReceiver {
-    ctor public RestrictionsReceiver();
-    method public void onReceive(android.content.Context, android.content.Intent);
-    method public abstract void onRequestPermission(android.content.Context, String, String, String, android.os.PersistableBundle);
-  }
-
-}
-
-package android.service.textservice {
-
-  public abstract class SpellCheckerService extends android.app.Service {
-    ctor public SpellCheckerService();
-    method public abstract android.service.textservice.SpellCheckerService.Session createSession();
-    method public final android.os.IBinder onBind(android.content.Intent);
-    field public static final String SERVICE_INTERFACE = "android.service.textservice.SpellCheckerService";
-  }
-
-  public abstract static class SpellCheckerService.Session {
-    ctor public SpellCheckerService.Session();
-    method public android.os.Bundle getBundle();
-    method public String getLocale();
-    method public void onCancel();
-    method public void onClose();
-    method public abstract void onCreate();
-    method public android.view.textservice.SentenceSuggestionsInfo[] onGetSentenceSuggestionsMultiple(android.view.textservice.TextInfo[], int);
-    method public abstract android.view.textservice.SuggestionsInfo onGetSuggestions(android.view.textservice.TextInfo, int);
-    method public android.view.textservice.SuggestionsInfo[] onGetSuggestionsMultiple(android.view.textservice.TextInfo[], int, boolean);
-  }
-
-}
-
-package android.service.voice {
-
-  public class AlwaysOnHotwordDetector {
-    method public android.content.Intent createEnrollIntent();
-    method public android.content.Intent createReEnrollIntent();
-    method public android.content.Intent createUnEnrollIntent();
-    method public int getParameter(int);
-    method public int getSupportedAudioCapabilities();
-    method public int getSupportedRecognitionModes();
-    method @Nullable public android.service.voice.AlwaysOnHotwordDetector.ModelParamRange queryParameter(int);
-    method public int setParameter(int, int);
-    method public boolean startRecognition(int);
-    method public boolean stopRecognition();
-    field public static final int AUDIO_CAPABILITY_ECHO_CANCELLATION = 1; // 0x1
-    field public static final int AUDIO_CAPABILITY_NOISE_SUPPRESSION = 2; // 0x2
-    field public static final int MODEL_PARAM_THRESHOLD_FACTOR = 0; // 0x0
-    field public static final int RECOGNITION_FLAG_ALLOW_MULTIPLE_TRIGGERS = 2; // 0x2
-    field public static final int RECOGNITION_FLAG_CAPTURE_TRIGGER_AUDIO = 1; // 0x1
-    field public static final int RECOGNITION_FLAG_ENABLE_AUDIO_ECHO_CANCELLATION = 4; // 0x4
-    field public static final int RECOGNITION_FLAG_ENABLE_AUDIO_NOISE_SUPPRESSION = 8; // 0x8
-    field public static final int RECOGNITION_MODE_USER_IDENTIFICATION = 2; // 0x2
-    field public static final int RECOGNITION_MODE_VOICE_TRIGGER = 1; // 0x1
-    field public static final int STATE_HARDWARE_UNAVAILABLE = -2; // 0xfffffffe
-    field public static final int STATE_KEYPHRASE_ENROLLED = 2; // 0x2
-    field public static final int STATE_KEYPHRASE_UNENROLLED = 1; // 0x1
-    field @Deprecated public static final int STATE_KEYPHRASE_UNSUPPORTED = -1; // 0xffffffff
-  }
-
-  public abstract static class AlwaysOnHotwordDetector.Callback {
-    ctor public AlwaysOnHotwordDetector.Callback();
-    method public abstract void onAvailabilityChanged(int);
-    method public abstract void onDetected(@NonNull android.service.voice.AlwaysOnHotwordDetector.EventPayload);
-    method public abstract void onError();
-    method public abstract void onRecognitionPaused();
-    method public abstract void onRecognitionResumed();
-  }
-
-  public static class AlwaysOnHotwordDetector.EventPayload {
-    method @Nullable public android.media.AudioFormat getCaptureAudioFormat();
-    method @Nullable public byte[] getTriggerAudio();
-  }
-
-  public static final class AlwaysOnHotwordDetector.ModelParamRange {
-    method public int getEnd();
-    method public int getStart();
-  }
-
-  public class VoiceInteractionService extends android.app.Service {
-    ctor public VoiceInteractionService();
-    method public final android.service.voice.AlwaysOnHotwordDetector createAlwaysOnHotwordDetector(String, java.util.Locale, android.service.voice.AlwaysOnHotwordDetector.Callback);
-    method public int getDisabledShowContext();
-    method public static boolean isActiveService(android.content.Context, android.content.ComponentName);
-    method public android.os.IBinder onBind(android.content.Intent);
-    method @NonNull public java.util.Set<java.lang.String> onGetSupportedVoiceActions(@NonNull java.util.Set<java.lang.String>);
-    method public void onLaunchVoiceAssistFromKeyguard();
-    method public void onReady();
-    method public void onShutdown();
-    method public void setDisabledShowContext(int);
-    method public final void setUiHints(@NonNull android.os.Bundle);
-    method public void showSession(android.os.Bundle, int);
-    field public static final String SERVICE_INTERFACE = "android.service.voice.VoiceInteractionService";
-    field public static final String SERVICE_META_DATA = "android.voice_interaction";
-  }
-
-  public class VoiceInteractionSession implements android.content.ComponentCallbacks2 android.view.KeyEvent.Callback {
-    ctor public VoiceInteractionSession(android.content.Context);
-    ctor public VoiceInteractionSession(android.content.Context, android.os.Handler);
-    method public void closeSystemDialogs();
-    method public void dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method public void finish();
-    method public android.content.Context getContext();
-    method public int getDisabledShowContext();
-    method public android.view.LayoutInflater getLayoutInflater();
-    method public int getUserDisabledShowContext();
-    method public android.app.Dialog getWindow();
-    method public void hide();
-    method public void onAssistStructureFailure(Throwable);
-    method public void onBackPressed();
-    method public void onCancelRequest(android.service.voice.VoiceInteractionSession.Request);
-    method public void onCloseSystemDialogs();
-    method public void onComputeInsets(android.service.voice.VoiceInteractionSession.Insets);
-    method public void onConfigurationChanged(android.content.res.Configuration);
-    method public void onCreate();
-    method public android.view.View onCreateContentView();
-    method public void onDestroy();
-    method public void onDirectActionsInvalidated(@NonNull android.service.voice.VoiceInteractionSession.ActivityId);
-    method public boolean[] onGetSupportedCommands(String[]);
-    method @Deprecated public void onHandleAssist(@Nullable android.os.Bundle, @Nullable android.app.assist.AssistStructure, @Nullable android.app.assist.AssistContent);
-    method public void onHandleAssist(@NonNull android.service.voice.VoiceInteractionSession.AssistState);
-    method @Deprecated public void onHandleAssistSecondary(@Nullable android.os.Bundle, @Nullable android.app.assist.AssistStructure, @Nullable android.app.assist.AssistContent, int, int);
-    method public void onHandleScreenshot(@Nullable android.graphics.Bitmap);
-    method public void onHide();
-    method public boolean onKeyDown(int, android.view.KeyEvent);
-    method public boolean onKeyLongPress(int, android.view.KeyEvent);
-    method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
-    method public boolean onKeyUp(int, android.view.KeyEvent);
-    method public void onLockscreenShown();
-    method public void onLowMemory();
-    method public void onPrepareShow(android.os.Bundle, int);
-    method public void onRequestAbortVoice(android.service.voice.VoiceInteractionSession.AbortVoiceRequest);
-    method public void onRequestCommand(android.service.voice.VoiceInteractionSession.CommandRequest);
-    method public void onRequestCompleteVoice(android.service.voice.VoiceInteractionSession.CompleteVoiceRequest);
-    method public void onRequestConfirmation(android.service.voice.VoiceInteractionSession.ConfirmationRequest);
-    method public void onRequestPickOption(android.service.voice.VoiceInteractionSession.PickOptionRequest);
-    method public void onShow(android.os.Bundle, int);
-    method public void onTaskFinished(android.content.Intent, int);
-    method public void onTaskStarted(android.content.Intent, int);
-    method public void onTrimMemory(int);
-    method public final void performDirectAction(@NonNull android.app.DirectAction, @Nullable android.os.Bundle, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.os.Bundle>);
-    method public final void requestDirectActions(@NonNull android.service.voice.VoiceInteractionSession.ActivityId, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.util.List<android.app.DirectAction>>);
-    method public void setContentView(android.view.View);
-    method public void setDisabledShowContext(int);
-    method public void setKeepAwake(boolean);
-    method public void setTheme(int);
-    method public void setUiEnabled(boolean);
-    method public void show(android.os.Bundle, int);
-    method public void startAssistantActivity(android.content.Intent);
-    method public void startVoiceActivity(android.content.Intent);
-    field public static final int SHOW_SOURCE_ACTIVITY = 16; // 0x10
-    field public static final int SHOW_SOURCE_APPLICATION = 8; // 0x8
-    field public static final int SHOW_SOURCE_ASSIST_GESTURE = 4; // 0x4
-    field public static final int SHOW_SOURCE_AUTOMOTIVE_SYSTEM_UI = 128; // 0x80
-    field public static final int SHOW_SOURCE_NOTIFICATION = 64; // 0x40
-    field public static final int SHOW_SOURCE_PUSH_TO_TALK = 32; // 0x20
-    field public static final int SHOW_WITH_ASSIST = 1; // 0x1
-    field public static final int SHOW_WITH_SCREENSHOT = 2; // 0x2
-  }
-
-  public static final class VoiceInteractionSession.AbortVoiceRequest extends android.service.voice.VoiceInteractionSession.Request {
-    method @Deprecated @Nullable public CharSequence getMessage();
-    method @Nullable public android.app.VoiceInteractor.Prompt getVoicePrompt();
-    method public void sendAbortResult(android.os.Bundle);
-  }
-
-  public static class VoiceInteractionSession.ActivityId {
-  }
-
-  public static final class VoiceInteractionSession.AssistState {
-    method @NonNull public android.service.voice.VoiceInteractionSession.ActivityId getActivityId();
-    method @Nullable public android.app.assist.AssistContent getAssistContent();
-    method @Nullable public android.os.Bundle getAssistData();
-    method @Nullable public android.app.assist.AssistStructure getAssistStructure();
-    method @IntRange(from=0) public int getCount();
-    method @IntRange(from=0xffffffff) public int getIndex();
-    method public boolean isFocused();
-  }
-
-  public static final class VoiceInteractionSession.CommandRequest extends android.service.voice.VoiceInteractionSession.Request {
-    method public String getCommand();
-    method public void sendIntermediateResult(android.os.Bundle);
-    method public void sendResult(android.os.Bundle);
-  }
-
-  public static final class VoiceInteractionSession.CompleteVoiceRequest extends android.service.voice.VoiceInteractionSession.Request {
-    method @Deprecated @Nullable public CharSequence getMessage();
-    method @Nullable public android.app.VoiceInteractor.Prompt getVoicePrompt();
-    method public void sendCompleteResult(android.os.Bundle);
-  }
-
-  public static final class VoiceInteractionSession.ConfirmationRequest extends android.service.voice.VoiceInteractionSession.Request {
-    method @Deprecated @Nullable public CharSequence getPrompt();
-    method @Nullable public android.app.VoiceInteractor.Prompt getVoicePrompt();
-    method public void sendConfirmationResult(boolean, android.os.Bundle);
-  }
-
-  public static final class VoiceInteractionSession.Insets {
-    ctor public VoiceInteractionSession.Insets();
-    field public static final int TOUCHABLE_INSETS_CONTENT = 1; // 0x1
-    field public static final int TOUCHABLE_INSETS_FRAME = 0; // 0x0
-    field public static final int TOUCHABLE_INSETS_REGION = 3; // 0x3
-    field public final android.graphics.Rect contentInsets;
-    field public int touchableInsets;
-    field public final android.graphics.Region touchableRegion;
-  }
-
-  public static final class VoiceInteractionSession.PickOptionRequest extends android.service.voice.VoiceInteractionSession.Request {
-    method public android.app.VoiceInteractor.PickOptionRequest.Option[] getOptions();
-    method @Deprecated @Nullable public CharSequence getPrompt();
-    method @Nullable public android.app.VoiceInteractor.Prompt getVoicePrompt();
-    method public void sendIntermediatePickOptionResult(android.app.VoiceInteractor.PickOptionRequest.Option[], android.os.Bundle);
-    method public void sendPickOptionResult(android.app.VoiceInteractor.PickOptionRequest.Option[], android.os.Bundle);
-  }
-
-  public static class VoiceInteractionSession.Request {
-    method public void cancel();
-    method public String getCallingPackage();
-    method public int getCallingUid();
-    method public android.os.Bundle getExtras();
-    method public boolean isActive();
-  }
-
-  public abstract class VoiceInteractionSessionService extends android.app.Service {
-    ctor public VoiceInteractionSessionService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public abstract android.service.voice.VoiceInteractionSession onNewSession(android.os.Bundle);
-  }
-
-}
-
-package android.service.vr {
-
-  public abstract class VrListenerService extends android.app.Service {
-    ctor public VrListenerService();
-    method public static final boolean isVrModePackageEnabled(@NonNull android.content.Context, @NonNull android.content.ComponentName);
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public void onCurrentVrActivityChanged(android.content.ComponentName);
-    field public static final String SERVICE_INTERFACE = "android.service.vr.VrListenerService";
-  }
-
-}
-
-package android.service.wallpaper {
-
-  public abstract class WallpaperService extends android.app.Service {
-    ctor public WallpaperService();
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method public abstract android.service.wallpaper.WallpaperService.Engine onCreateEngine();
-    field public static final String SERVICE_INTERFACE = "android.service.wallpaper.WallpaperService";
-    field public static final String SERVICE_META_DATA = "android.service.wallpaper";
-  }
-
-  public class WallpaperService.Engine {
-    ctor public WallpaperService.Engine();
-    method protected void dump(String, java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method public int getDesiredMinimumHeight();
-    method public int getDesiredMinimumWidth();
-    method @Nullable public android.content.Context getDisplayContext();
-    method public android.view.SurfaceHolder getSurfaceHolder();
-    method public boolean isPreview();
-    method public boolean isVisible();
-    method public void notifyColorsChanged();
-    method public void onApplyWindowInsets(android.view.WindowInsets);
-    method public android.os.Bundle onCommand(String, int, int, int, android.os.Bundle, boolean);
-    method @Nullable public android.app.WallpaperColors onComputeColors();
-    method public void onCreate(android.view.SurfaceHolder);
-    method public void onDesiredSizeChanged(int, int);
-    method public void onDestroy();
-    method public void onOffsetsChanged(float, float, float, float, int, int);
-    method public void onSurfaceChanged(android.view.SurfaceHolder, int, int, int);
-    method public void onSurfaceCreated(android.view.SurfaceHolder);
-    method public void onSurfaceDestroyed(android.view.SurfaceHolder);
-    method public void onSurfaceRedrawNeeded(android.view.SurfaceHolder);
-    method public void onTouchEvent(android.view.MotionEvent);
-    method public void onVisibilityChanged(boolean);
-    method public void onZoomChanged(@FloatRange(from=0.0f, to=1.0f) float);
-    method public void setOffsetNotificationsEnabled(boolean);
-    method public void setTouchEventsEnabled(boolean);
-  }
-
-}
-
-package android.speech {
-
-  public interface RecognitionListener {
-    method public void onBeginningOfSpeech();
-    method public void onBufferReceived(byte[]);
-    method public void onEndOfSpeech();
-    method public void onError(int);
-    method public void onEvent(int, android.os.Bundle);
-    method public void onPartialResults(android.os.Bundle);
-    method public void onReadyForSpeech(android.os.Bundle);
-    method public void onResults(android.os.Bundle);
-    method public void onRmsChanged(float);
-  }
-
-  public abstract class RecognitionService extends android.app.Service {
-    ctor public RecognitionService();
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method protected abstract void onCancel(android.speech.RecognitionService.Callback);
-    method protected abstract void onStartListening(android.content.Intent, android.speech.RecognitionService.Callback);
-    method protected abstract void onStopListening(android.speech.RecognitionService.Callback);
-    field public static final String SERVICE_INTERFACE = "android.speech.RecognitionService";
-    field public static final String SERVICE_META_DATA = "android.speech";
-  }
-
-  public class RecognitionService.Callback {
-    method public void beginningOfSpeech() throws android.os.RemoteException;
-    method public void bufferReceived(byte[]) throws android.os.RemoteException;
-    method public void endOfSpeech() throws android.os.RemoteException;
-    method public void error(int) throws android.os.RemoteException;
-    method public int getCallingUid();
-    method public void partialResults(android.os.Bundle) throws android.os.RemoteException;
-    method public void readyForSpeech(android.os.Bundle) throws android.os.RemoteException;
-    method public void results(android.os.Bundle) throws android.os.RemoteException;
-    method public void rmsChanged(float) throws android.os.RemoteException;
-  }
-
-  public class RecognizerIntent {
-    method public static final android.content.Intent getVoiceDetailsIntent(android.content.Context);
-    field public static final String ACTION_GET_LANGUAGE_DETAILS = "android.speech.action.GET_LANGUAGE_DETAILS";
-    field public static final String ACTION_RECOGNIZE_SPEECH = "android.speech.action.RECOGNIZE_SPEECH";
-    field public static final String ACTION_VOICE_SEARCH_HANDS_FREE = "android.speech.action.VOICE_SEARCH_HANDS_FREE";
-    field public static final String ACTION_WEB_SEARCH = "android.speech.action.WEB_SEARCH";
-    field public static final String DETAILS_META_DATA = "android.speech.DETAILS";
-    field public static final String EXTRA_CALLING_PACKAGE = "calling_package";
-    field public static final String EXTRA_CONFIDENCE_SCORES = "android.speech.extra.CONFIDENCE_SCORES";
-    field public static final String EXTRA_LANGUAGE = "android.speech.extra.LANGUAGE";
-    field public static final String EXTRA_LANGUAGE_MODEL = "android.speech.extra.LANGUAGE_MODEL";
-    field public static final String EXTRA_LANGUAGE_PREFERENCE = "android.speech.extra.LANGUAGE_PREFERENCE";
-    field public static final String EXTRA_MAX_RESULTS = "android.speech.extra.MAX_RESULTS";
-    field public static final String EXTRA_ONLY_RETURN_LANGUAGE_PREFERENCE = "android.speech.extra.ONLY_RETURN_LANGUAGE_PREFERENCE";
-    field public static final String EXTRA_ORIGIN = "android.speech.extra.ORIGIN";
-    field public static final String EXTRA_PARTIAL_RESULTS = "android.speech.extra.PARTIAL_RESULTS";
-    field public static final String EXTRA_PREFER_OFFLINE = "android.speech.extra.PREFER_OFFLINE";
-    field public static final String EXTRA_PROMPT = "android.speech.extra.PROMPT";
-    field public static final String EXTRA_RESULTS = "android.speech.extra.RESULTS";
-    field public static final String EXTRA_RESULTS_PENDINGINTENT = "android.speech.extra.RESULTS_PENDINGINTENT";
-    field public static final String EXTRA_RESULTS_PENDINGINTENT_BUNDLE = "android.speech.extra.RESULTS_PENDINGINTENT_BUNDLE";
-    field public static final String EXTRA_SECURE = "android.speech.extras.EXTRA_SECURE";
-    field public static final String EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS = "android.speech.extras.SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS";
-    field public static final String EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS = "android.speech.extras.SPEECH_INPUT_MINIMUM_LENGTH_MILLIS";
-    field public static final String EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS = "android.speech.extras.SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS";
-    field public static final String EXTRA_SUPPORTED_LANGUAGES = "android.speech.extra.SUPPORTED_LANGUAGES";
-    field public static final String EXTRA_WEB_SEARCH_ONLY = "android.speech.extra.WEB_SEARCH_ONLY";
-    field public static final String LANGUAGE_MODEL_FREE_FORM = "free_form";
-    field public static final String LANGUAGE_MODEL_WEB_SEARCH = "web_search";
-    field public static final int RESULT_AUDIO_ERROR = 5; // 0x5
-    field public static final int RESULT_CLIENT_ERROR = 2; // 0x2
-    field public static final int RESULT_NETWORK_ERROR = 4; // 0x4
-    field public static final int RESULT_NO_MATCH = 1; // 0x1
-    field public static final int RESULT_SERVER_ERROR = 3; // 0x3
-  }
-
-  public class RecognizerResultsIntent {
-    field public static final String ACTION_VOICE_SEARCH_RESULTS = "android.speech.action.VOICE_SEARCH_RESULTS";
-    field public static final String EXTRA_VOICE_SEARCH_RESULT_HTML = "android.speech.extras.VOICE_SEARCH_RESULT_HTML";
-    field public static final String EXTRA_VOICE_SEARCH_RESULT_HTML_BASE_URLS = "android.speech.extras.VOICE_SEARCH_RESULT_HTML_BASE_URLS";
-    field public static final String EXTRA_VOICE_SEARCH_RESULT_HTTP_HEADERS = "android.speech.extras.EXTRA_VOICE_SEARCH_RESULT_HTTP_HEADERS";
-    field public static final String EXTRA_VOICE_SEARCH_RESULT_STRINGS = "android.speech.extras.VOICE_SEARCH_RESULT_STRINGS";
-    field public static final String EXTRA_VOICE_SEARCH_RESULT_URLS = "android.speech.extras.VOICE_SEARCH_RESULT_URLS";
-    field public static final String URI_SCHEME_INLINE = "inline";
-  }
-
-  public class SpeechRecognizer {
-    method public void cancel();
-    method public static android.speech.SpeechRecognizer createSpeechRecognizer(android.content.Context);
-    method public static android.speech.SpeechRecognizer createSpeechRecognizer(android.content.Context, android.content.ComponentName);
-    method public void destroy();
-    method public static boolean isRecognitionAvailable(android.content.Context);
-    method public void setRecognitionListener(android.speech.RecognitionListener);
-    method public void startListening(android.content.Intent);
-    method public void stopListening();
-    field public static final String CONFIDENCE_SCORES = "confidence_scores";
-    field public static final int ERROR_AUDIO = 3; // 0x3
-    field public static final int ERROR_CLIENT = 5; // 0x5
-    field public static final int ERROR_INSUFFICIENT_PERMISSIONS = 9; // 0x9
-    field public static final int ERROR_NETWORK = 2; // 0x2
-    field public static final int ERROR_NETWORK_TIMEOUT = 1; // 0x1
-    field public static final int ERROR_NO_MATCH = 7; // 0x7
-    field public static final int ERROR_RECOGNIZER_BUSY = 8; // 0x8
-    field public static final int ERROR_SERVER = 4; // 0x4
-    field public static final int ERROR_SPEECH_TIMEOUT = 6; // 0x6
-    field public static final String RESULTS_RECOGNITION = "results_recognition";
-  }
-
-}
-
-package android.speech.tts {
-
-  public interface SynthesisCallback {
-    method public int audioAvailable(byte[], int, int);
-    method public int done();
-    method public void error();
-    method public void error(int);
-    method public int getMaxBufferSize();
-    method public boolean hasFinished();
-    method public boolean hasStarted();
-    method public default void rangeStart(int, int, int);
-    method public int start(int, int, @IntRange(from=1, to=2) int);
-  }
-
-  public final class SynthesisRequest {
-    ctor public SynthesisRequest(String, android.os.Bundle);
-    ctor public SynthesisRequest(CharSequence, android.os.Bundle);
-    method public int getCallerUid();
-    method public CharSequence getCharSequenceText();
-    method public String getCountry();
-    method public String getLanguage();
-    method public android.os.Bundle getParams();
-    method public int getPitch();
-    method public int getSpeechRate();
-    method @Deprecated public String getText();
-    method public String getVariant();
-    method public String getVoiceName();
-  }
-
-  public class TextToSpeech {
-    ctor public TextToSpeech(android.content.Context, android.speech.tts.TextToSpeech.OnInitListener);
-    ctor public TextToSpeech(android.content.Context, android.speech.tts.TextToSpeech.OnInitListener, String);
-    method public int addEarcon(String, String, @RawRes int);
-    method @Deprecated public int addEarcon(String, String);
-    method public int addEarcon(String, java.io.File);
-    method public int addSpeech(String, String, @RawRes int);
-    method public int addSpeech(CharSequence, String, @RawRes int);
-    method public int addSpeech(String, String);
-    method public int addSpeech(CharSequence, java.io.File);
-    method @Deprecated public boolean areDefaultsEnforced();
-    method public java.util.Set<java.util.Locale> getAvailableLanguages();
-    method public String getDefaultEngine();
-    method @Deprecated public java.util.Locale getDefaultLanguage();
-    method public android.speech.tts.Voice getDefaultVoice();
-    method public java.util.List<android.speech.tts.TextToSpeech.EngineInfo> getEngines();
-    method @Deprecated public java.util.Set<java.lang.String> getFeatures(java.util.Locale);
-    method @Deprecated public java.util.Locale getLanguage();
-    method public static int getMaxSpeechInputLength();
-    method public android.speech.tts.Voice getVoice();
-    method public java.util.Set<android.speech.tts.Voice> getVoices();
-    method public int isLanguageAvailable(java.util.Locale);
-    method public boolean isSpeaking();
-    method public int playEarcon(String, int, android.os.Bundle, String);
-    method @Deprecated public int playEarcon(String, int, java.util.HashMap<java.lang.String,java.lang.String>);
-    method @Deprecated public int playSilence(long, int, java.util.HashMap<java.lang.String,java.lang.String>);
-    method public int playSilentUtterance(long, int, String);
-    method public int setAudioAttributes(android.media.AudioAttributes);
-    method @Deprecated public int setEngineByPackageName(String);
-    method public int setLanguage(java.util.Locale);
-    method @Deprecated public int setOnUtteranceCompletedListener(android.speech.tts.TextToSpeech.OnUtteranceCompletedListener);
-    method public int setOnUtteranceProgressListener(android.speech.tts.UtteranceProgressListener);
-    method public int setPitch(float);
-    method public int setSpeechRate(float);
-    method public int setVoice(android.speech.tts.Voice);
-    method public void shutdown();
-    method public int speak(CharSequence, int, android.os.Bundle, String);
-    method @Deprecated public int speak(String, int, java.util.HashMap<java.lang.String,java.lang.String>);
-    method public int stop();
-    method public int synthesizeToFile(@NonNull CharSequence, @NonNull android.os.Bundle, @NonNull android.os.ParcelFileDescriptor, @NonNull String);
-    method public int synthesizeToFile(CharSequence, android.os.Bundle, java.io.File, String);
-    method @Deprecated public int synthesizeToFile(String, java.util.HashMap<java.lang.String,java.lang.String>, String);
-    field public static final String ACTION_TTS_QUEUE_PROCESSING_COMPLETED = "android.speech.tts.TTS_QUEUE_PROCESSING_COMPLETED";
-    field public static final int ERROR = -1; // 0xffffffff
-    field public static final int ERROR_INVALID_REQUEST = -8; // 0xfffffff8
-    field public static final int ERROR_NETWORK = -6; // 0xfffffffa
-    field public static final int ERROR_NETWORK_TIMEOUT = -7; // 0xfffffff9
-    field public static final int ERROR_NOT_INSTALLED_YET = -9; // 0xfffffff7
-    field public static final int ERROR_OUTPUT = -5; // 0xfffffffb
-    field public static final int ERROR_SERVICE = -4; // 0xfffffffc
-    field public static final int ERROR_SYNTHESIS = -3; // 0xfffffffd
-    field public static final int LANG_AVAILABLE = 0; // 0x0
-    field public static final int LANG_COUNTRY_AVAILABLE = 1; // 0x1
-    field public static final int LANG_COUNTRY_VAR_AVAILABLE = 2; // 0x2
-    field public static final int LANG_MISSING_DATA = -1; // 0xffffffff
-    field public static final int LANG_NOT_SUPPORTED = -2; // 0xfffffffe
-    field public static final int QUEUE_ADD = 1; // 0x1
-    field public static final int QUEUE_FLUSH = 0; // 0x0
-    field public static final int STOPPED = -2; // 0xfffffffe
-    field public static final int SUCCESS = 0; // 0x0
-  }
-
-  public class TextToSpeech.Engine {
-    ctor public TextToSpeech.Engine();
-    field public static final String ACTION_CHECK_TTS_DATA = "android.speech.tts.engine.CHECK_TTS_DATA";
-    field public static final String ACTION_GET_SAMPLE_TEXT = "android.speech.tts.engine.GET_SAMPLE_TEXT";
-    field public static final String ACTION_INSTALL_TTS_DATA = "android.speech.tts.engine.INSTALL_TTS_DATA";
-    field public static final String ACTION_TTS_DATA_INSTALLED = "android.speech.tts.engine.TTS_DATA_INSTALLED";
-    field @Deprecated public static final int CHECK_VOICE_DATA_BAD_DATA = -1; // 0xffffffff
-    field public static final int CHECK_VOICE_DATA_FAIL = 0; // 0x0
-    field @Deprecated public static final int CHECK_VOICE_DATA_MISSING_DATA = -2; // 0xfffffffe
-    field @Deprecated public static final int CHECK_VOICE_DATA_MISSING_VOLUME = -3; // 0xfffffffd
-    field public static final int CHECK_VOICE_DATA_PASS = 1; // 0x1
-    field public static final int DEFAULT_STREAM = 3; // 0x3
-    field public static final String EXTRA_AVAILABLE_VOICES = "availableVoices";
-    field @Deprecated public static final String EXTRA_CHECK_VOICE_DATA_FOR = "checkVoiceDataFor";
-    field public static final String EXTRA_SAMPLE_TEXT = "sampleText";
-    field @Deprecated public static final String EXTRA_TTS_DATA_INSTALLED = "dataInstalled";
-    field public static final String EXTRA_UNAVAILABLE_VOICES = "unavailableVoices";
-    field @Deprecated public static final String EXTRA_VOICE_DATA_FILES = "dataFiles";
-    field @Deprecated public static final String EXTRA_VOICE_DATA_FILES_INFO = "dataFilesInfo";
-    field @Deprecated public static final String EXTRA_VOICE_DATA_ROOT_DIRECTORY = "dataRoot";
-    field public static final String INTENT_ACTION_TTS_SERVICE = "android.intent.action.TTS_SERVICE";
-    field @Deprecated public static final String KEY_FEATURE_EMBEDDED_SYNTHESIS = "embeddedTts";
-    field public static final String KEY_FEATURE_NETWORK_RETRIES_COUNT = "networkRetriesCount";
-    field @Deprecated public static final String KEY_FEATURE_NETWORK_SYNTHESIS = "networkTts";
-    field public static final String KEY_FEATURE_NETWORK_TIMEOUT_MS = "networkTimeoutMs";
-    field public static final String KEY_FEATURE_NOT_INSTALLED = "notInstalled";
-    field public static final String KEY_PARAM_PAN = "pan";
-    field public static final String KEY_PARAM_SESSION_ID = "sessionId";
-    field public static final String KEY_PARAM_STREAM = "streamType";
-    field public static final String KEY_PARAM_UTTERANCE_ID = "utteranceId";
-    field public static final String KEY_PARAM_VOLUME = "volume";
-    field public static final String SERVICE_META_DATA = "android.speech.tts";
-  }
-
-  public static class TextToSpeech.EngineInfo {
-    ctor public TextToSpeech.EngineInfo();
-    field public int icon;
-    field public String label;
-    field public String name;
-  }
-
-  public static interface TextToSpeech.OnInitListener {
-    method public void onInit(int);
-  }
-
-  @Deprecated public static interface TextToSpeech.OnUtteranceCompletedListener {
-    method @Deprecated public void onUtteranceCompleted(String);
-  }
-
-  public abstract class TextToSpeechService extends android.app.Service {
-    ctor public TextToSpeechService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public String onGetDefaultVoiceNameFor(String, String, String);
-    method protected java.util.Set<java.lang.String> onGetFeaturesForLanguage(String, String, String);
-    method protected abstract String[] onGetLanguage();
-    method public java.util.List<android.speech.tts.Voice> onGetVoices();
-    method protected abstract int onIsLanguageAvailable(String, String, String);
-    method public int onIsValidVoiceName(String);
-    method protected abstract int onLoadLanguage(String, String, String);
-    method public int onLoadVoice(String);
-    method protected abstract void onStop();
-    method protected abstract void onSynthesizeText(android.speech.tts.SynthesisRequest, android.speech.tts.SynthesisCallback);
-  }
-
-  public abstract class UtteranceProgressListener {
-    ctor public UtteranceProgressListener();
-    method public void onAudioAvailable(String, byte[]);
-    method public void onBeginSynthesis(String, int, int, int);
-    method public abstract void onDone(String);
-    method @Deprecated public abstract void onError(String);
-    method public void onError(String, int);
-    method public void onRangeStart(String, int, int, int);
-    method public abstract void onStart(String);
-    method public void onStop(String, boolean);
-  }
-
-  public class Voice implements android.os.Parcelable {
-    ctor public Voice(String, java.util.Locale, int, int, boolean, java.util.Set<java.lang.String>);
-    method public int describeContents();
-    method public java.util.Set<java.lang.String> getFeatures();
-    method public int getLatency();
-    method public java.util.Locale getLocale();
-    method public String getName();
-    method public int getQuality();
-    method public boolean isNetworkConnectionRequired();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.speech.tts.Voice> CREATOR;
-    field public static final int LATENCY_HIGH = 400; // 0x190
-    field public static final int LATENCY_LOW = 200; // 0xc8
-    field public static final int LATENCY_NORMAL = 300; // 0x12c
-    field public static final int LATENCY_VERY_HIGH = 500; // 0x1f4
-    field public static final int LATENCY_VERY_LOW = 100; // 0x64
-    field public static final int QUALITY_HIGH = 400; // 0x190
-    field public static final int QUALITY_LOW = 200; // 0xc8
-    field public static final int QUALITY_NORMAL = 300; // 0x12c
-    field public static final int QUALITY_VERY_HIGH = 500; // 0x1f4
-    field public static final int QUALITY_VERY_LOW = 100; // 0x64
-  }
-
-}
-
-package android.system {
-
-  public final class ErrnoException extends java.lang.Exception {
-    ctor public ErrnoException(String, int);
-    ctor public ErrnoException(String, int, Throwable);
-    method @NonNull public java.io.IOException rethrowAsIOException() throws java.io.IOException;
-    method @NonNull public java.net.SocketException rethrowAsSocketException() throws java.net.SocketException;
-    field public final int errno;
-  }
-
-  public class Int64Ref {
-    ctor public Int64Ref(long);
-    field public long value;
-  }
-
-  public final class Os {
-    method public static java.io.FileDescriptor accept(java.io.FileDescriptor, java.net.InetSocketAddress) throws android.system.ErrnoException, java.net.SocketException;
-    method public static boolean access(String, int) throws android.system.ErrnoException;
-    method public static void bind(java.io.FileDescriptor, java.net.InetAddress, int) throws android.system.ErrnoException, java.net.SocketException;
-    method public static void bind(@NonNull java.io.FileDescriptor, @NonNull java.net.SocketAddress) throws android.system.ErrnoException, java.net.SocketException;
-    method public static void chmod(String, int) throws android.system.ErrnoException;
-    method public static void chown(String, int, int) throws android.system.ErrnoException;
-    method public static void close(java.io.FileDescriptor) throws android.system.ErrnoException;
-    method public static void connect(java.io.FileDescriptor, java.net.InetAddress, int) throws android.system.ErrnoException, java.net.SocketException;
-    method public static void connect(@NonNull java.io.FileDescriptor, @NonNull java.net.SocketAddress) throws android.system.ErrnoException, java.net.SocketException;
-    method public static java.io.FileDescriptor dup(java.io.FileDescriptor) throws android.system.ErrnoException;
-    method public static java.io.FileDescriptor dup2(java.io.FileDescriptor, int) throws android.system.ErrnoException;
-    method public static String[] environ();
-    method public static void execv(String, String[]) throws android.system.ErrnoException;
-    method public static void execve(String, String[], String[]) throws android.system.ErrnoException;
-    method public static void fchmod(java.io.FileDescriptor, int) throws android.system.ErrnoException;
-    method public static void fchown(java.io.FileDescriptor, int, int) throws android.system.ErrnoException;
-    method public static int fcntlInt(@NonNull java.io.FileDescriptor, int, int) throws android.system.ErrnoException;
-    method public static void fdatasync(java.io.FileDescriptor) throws android.system.ErrnoException;
-    method public static android.system.StructStat fstat(java.io.FileDescriptor) throws android.system.ErrnoException;
-    method public static android.system.StructStatVfs fstatvfs(java.io.FileDescriptor) throws android.system.ErrnoException;
-    method public static void fsync(java.io.FileDescriptor) throws android.system.ErrnoException;
-    method public static void ftruncate(java.io.FileDescriptor, long) throws android.system.ErrnoException;
-    method public static String gai_strerror(int);
-    method public static int getegid();
-    method public static String getenv(String);
-    method public static int geteuid();
-    method public static int getgid();
-    method public static java.net.SocketAddress getpeername(java.io.FileDescriptor) throws android.system.ErrnoException;
-    method public static int getpid();
-    method public static int getppid();
-    method public static java.net.SocketAddress getsockname(java.io.FileDescriptor) throws android.system.ErrnoException;
-    method @NonNull public static android.system.StructTimeval getsockoptTimeval(@NonNull java.io.FileDescriptor, int, int) throws android.system.ErrnoException;
-    method public static int gettid();
-    method public static int getuid();
-    method public static byte[] getxattr(String, String) throws android.system.ErrnoException;
-    method public static String if_indextoname(int);
-    method public static int if_nametoindex(String);
-    method public static java.net.InetAddress inet_pton(int, String);
-    method public static boolean isatty(java.io.FileDescriptor);
-    method public static void kill(int, int) throws android.system.ErrnoException;
-    method public static void lchown(String, int, int) throws android.system.ErrnoException;
-    method public static void link(String, String) throws android.system.ErrnoException;
-    method public static void listen(java.io.FileDescriptor, int) throws android.system.ErrnoException;
-    method public static String[] listxattr(String) throws android.system.ErrnoException;
-    method public static long lseek(java.io.FileDescriptor, long, int) throws android.system.ErrnoException;
-    method public static android.system.StructStat lstat(String) throws android.system.ErrnoException;
-    method @NonNull public static java.io.FileDescriptor memfd_create(@NonNull String, int) throws android.system.ErrnoException;
-    method public static void mincore(long, long, byte[]) throws android.system.ErrnoException;
-    method public static void mkdir(String, int) throws android.system.ErrnoException;
-    method public static void mkfifo(String, int) throws android.system.ErrnoException;
-    method public static void mlock(long, long) throws android.system.ErrnoException;
-    method public static long mmap(long, long, int, int, java.io.FileDescriptor, long) throws android.system.ErrnoException;
-    method public static void msync(long, long, int) throws android.system.ErrnoException;
-    method public static void munlock(long, long) throws android.system.ErrnoException;
-    method public static void munmap(long, long) throws android.system.ErrnoException;
-    method public static java.io.FileDescriptor open(String, int, int) throws android.system.ErrnoException;
-    method public static java.io.FileDescriptor[] pipe() throws android.system.ErrnoException;
-    method public static int poll(android.system.StructPollfd[], int) throws android.system.ErrnoException;
-    method public static void posix_fallocate(java.io.FileDescriptor, long, long) throws android.system.ErrnoException;
-    method public static int prctl(int, long, long, long, long) throws android.system.ErrnoException;
-    method public static int pread(java.io.FileDescriptor, java.nio.ByteBuffer, long) throws android.system.ErrnoException, java.io.InterruptedIOException;
-    method public static int pread(java.io.FileDescriptor, byte[], int, int, long) throws android.system.ErrnoException, java.io.InterruptedIOException;
-    method public static int pwrite(java.io.FileDescriptor, java.nio.ByteBuffer, long) throws android.system.ErrnoException, java.io.InterruptedIOException;
-    method public static int pwrite(java.io.FileDescriptor, byte[], int, int, long) throws android.system.ErrnoException, java.io.InterruptedIOException;
-    method public static int read(java.io.FileDescriptor, java.nio.ByteBuffer) throws android.system.ErrnoException, java.io.InterruptedIOException;
-    method public static int read(java.io.FileDescriptor, byte[], int, int) throws android.system.ErrnoException, java.io.InterruptedIOException;
-    method public static String readlink(String) throws android.system.ErrnoException;
-    method public static int readv(java.io.FileDescriptor, Object[], int[], int[]) throws android.system.ErrnoException, java.io.InterruptedIOException;
-    method public static int recvfrom(java.io.FileDescriptor, java.nio.ByteBuffer, int, java.net.InetSocketAddress) throws android.system.ErrnoException, java.net.SocketException;
-    method public static int recvfrom(java.io.FileDescriptor, byte[], int, int, int, java.net.InetSocketAddress) throws android.system.ErrnoException, java.net.SocketException;
-    method public static void remove(String) throws android.system.ErrnoException;
-    method public static void removexattr(String, String) throws android.system.ErrnoException;
-    method public static void rename(String, String) throws android.system.ErrnoException;
-    method public static long sendfile(java.io.FileDescriptor, java.io.FileDescriptor, android.system.Int64Ref, long) throws android.system.ErrnoException;
-    method public static int sendto(java.io.FileDescriptor, java.nio.ByteBuffer, int, java.net.InetAddress, int) throws android.system.ErrnoException, java.net.SocketException;
-    method public static int sendto(java.io.FileDescriptor, byte[], int, int, int, java.net.InetAddress, int) throws android.system.ErrnoException, java.net.SocketException;
-    method public static int sendto(@NonNull java.io.FileDescriptor, @NonNull byte[], int, int, int, @Nullable java.net.SocketAddress) throws android.system.ErrnoException, java.net.SocketException;
-    method @Deprecated public static void setegid(int) throws android.system.ErrnoException;
-    method public static void setenv(String, String, boolean) throws android.system.ErrnoException;
-    method @Deprecated public static void seteuid(int) throws android.system.ErrnoException;
-    method @Deprecated public static void setgid(int) throws android.system.ErrnoException;
-    method public static int setsid() throws android.system.ErrnoException;
-    method public static void setsockoptInt(java.io.FileDescriptor, int, int, int) throws android.system.ErrnoException;
-    method public static void setsockoptTimeval(@NonNull java.io.FileDescriptor, int, int, @NonNull android.system.StructTimeval) throws android.system.ErrnoException;
-    method @Deprecated public static void setuid(int) throws android.system.ErrnoException;
-    method public static void setxattr(String, String, byte[], int) throws android.system.ErrnoException;
-    method public static void shutdown(java.io.FileDescriptor, int) throws android.system.ErrnoException;
-    method public static java.io.FileDescriptor socket(int, int, int) throws android.system.ErrnoException;
-    method public static void socketpair(int, int, int, java.io.FileDescriptor, java.io.FileDescriptor) throws android.system.ErrnoException;
-    method public static android.system.StructStat stat(String) throws android.system.ErrnoException;
-    method public static android.system.StructStatVfs statvfs(String) throws android.system.ErrnoException;
-    method public static String strerror(int);
-    method public static String strsignal(int);
-    method public static void symlink(String, String) throws android.system.ErrnoException;
-    method public static long sysconf(int);
-    method public static void tcdrain(java.io.FileDescriptor) throws android.system.ErrnoException;
-    method public static void tcsendbreak(java.io.FileDescriptor, int) throws android.system.ErrnoException;
-    method public static int umask(int);
-    method public static android.system.StructUtsname uname();
-    method public static void unsetenv(String) throws android.system.ErrnoException;
-    method public static int write(java.io.FileDescriptor, java.nio.ByteBuffer) throws android.system.ErrnoException, java.io.InterruptedIOException;
-    method public static int write(java.io.FileDescriptor, byte[], int, int) throws android.system.ErrnoException, java.io.InterruptedIOException;
-    method public static int writev(java.io.FileDescriptor, Object[], int[], int[]) throws android.system.ErrnoException, java.io.InterruptedIOException;
-  }
-
-  public final class OsConstants {
-    method public static boolean S_ISBLK(int);
-    method public static boolean S_ISCHR(int);
-    method public static boolean S_ISDIR(int);
-    method public static boolean S_ISFIFO(int);
-    method public static boolean S_ISLNK(int);
-    method public static boolean S_ISREG(int);
-    method public static boolean S_ISSOCK(int);
-    method public static boolean WCOREDUMP(int);
-    method public static int WEXITSTATUS(int);
-    method public static boolean WIFEXITED(int);
-    method public static boolean WIFSIGNALED(int);
-    method public static boolean WIFSTOPPED(int);
-    method public static int WSTOPSIG(int);
-    method public static int WTERMSIG(int);
-    method public static String errnoName(int);
-    method public static String gaiName(int);
-    field public static final int AF_INET;
-    field public static final int AF_INET6;
-    field public static final int AF_NETLINK;
-    field public static final int AF_PACKET;
-    field public static final int AF_UNIX;
-    field public static final int AF_UNSPEC;
-    field public static final int AI_ADDRCONFIG;
-    field public static final int AI_ALL;
-    field public static final int AI_CANONNAME;
-    field public static final int AI_NUMERICHOST;
-    field public static final int AI_NUMERICSERV;
-    field public static final int AI_PASSIVE;
-    field public static final int AI_V4MAPPED;
-    field public static final int ARPHRD_ETHER;
-    field public static final int CAP_AUDIT_CONTROL;
-    field public static final int CAP_AUDIT_WRITE;
-    field public static final int CAP_BLOCK_SUSPEND;
-    field public static final int CAP_CHOWN;
-    field public static final int CAP_DAC_OVERRIDE;
-    field public static final int CAP_DAC_READ_SEARCH;
-    field public static final int CAP_FOWNER;
-    field public static final int CAP_FSETID;
-    field public static final int CAP_IPC_LOCK;
-    field public static final int CAP_IPC_OWNER;
-    field public static final int CAP_KILL;
-    field public static final int CAP_LAST_CAP;
-    field public static final int CAP_LEASE;
-    field public static final int CAP_LINUX_IMMUTABLE;
-    field public static final int CAP_MAC_ADMIN;
-    field public static final int CAP_MAC_OVERRIDE;
-    field public static final int CAP_MKNOD;
-    field public static final int CAP_NET_ADMIN;
-    field public static final int CAP_NET_BIND_SERVICE;
-    field public static final int CAP_NET_BROADCAST;
-    field public static final int CAP_NET_RAW;
-    field public static final int CAP_SETFCAP;
-    field public static final int CAP_SETGID;
-    field public static final int CAP_SETPCAP;
-    field public static final int CAP_SETUID;
-    field public static final int CAP_SYSLOG;
-    field public static final int CAP_SYS_ADMIN;
-    field public static final int CAP_SYS_BOOT;
-    field public static final int CAP_SYS_CHROOT;
-    field public static final int CAP_SYS_MODULE;
-    field public static final int CAP_SYS_NICE;
-    field public static final int CAP_SYS_PACCT;
-    field public static final int CAP_SYS_PTRACE;
-    field public static final int CAP_SYS_RAWIO;
-    field public static final int CAP_SYS_RESOURCE;
-    field public static final int CAP_SYS_TIME;
-    field public static final int CAP_SYS_TTY_CONFIG;
-    field public static final int CAP_WAKE_ALARM;
-    field public static final int E2BIG;
-    field public static final int EACCES;
-    field public static final int EADDRINUSE;
-    field public static final int EADDRNOTAVAIL;
-    field public static final int EAFNOSUPPORT;
-    field public static final int EAGAIN;
-    field public static final int EAI_AGAIN;
-    field public static final int EAI_BADFLAGS;
-    field public static final int EAI_FAIL;
-    field public static final int EAI_FAMILY;
-    field public static final int EAI_MEMORY;
-    field public static final int EAI_NODATA;
-    field public static final int EAI_NONAME;
-    field public static final int EAI_OVERFLOW;
-    field public static final int EAI_SERVICE;
-    field public static final int EAI_SOCKTYPE;
-    field public static final int EAI_SYSTEM;
-    field public static final int EALREADY;
-    field public static final int EBADF;
-    field public static final int EBADMSG;
-    field public static final int EBUSY;
-    field public static final int ECANCELED;
-    field public static final int ECHILD;
-    field public static final int ECONNABORTED;
-    field public static final int ECONNREFUSED;
-    field public static final int ECONNRESET;
-    field public static final int EDEADLK;
-    field public static final int EDESTADDRREQ;
-    field public static final int EDOM;
-    field public static final int EDQUOT;
-    field public static final int EEXIST;
-    field public static final int EFAULT;
-    field public static final int EFBIG;
-    field public static final int EHOSTUNREACH;
-    field public static final int EIDRM;
-    field public static final int EILSEQ;
-    field public static final int EINPROGRESS;
-    field public static final int EINTR;
-    field public static final int EINVAL;
-    field public static final int EIO;
-    field public static final int EISCONN;
-    field public static final int EISDIR;
-    field public static final int ELOOP;
-    field public static final int EMFILE;
-    field public static final int EMLINK;
-    field public static final int EMSGSIZE;
-    field public static final int EMULTIHOP;
-    field public static final int ENAMETOOLONG;
-    field public static final int ENETDOWN;
-    field public static final int ENETRESET;
-    field public static final int ENETUNREACH;
-    field public static final int ENFILE;
-    field public static final int ENOBUFS;
-    field public static final int ENODATA;
-    field public static final int ENODEV;
-    field public static final int ENOENT;
-    field public static final int ENOEXEC;
-    field public static final int ENOLCK;
-    field public static final int ENOLINK;
-    field public static final int ENOMEM;
-    field public static final int ENOMSG;
-    field public static final int ENOPROTOOPT;
-    field public static final int ENOSPC;
-    field public static final int ENOSR;
-    field public static final int ENOSTR;
-    field public static final int ENOSYS;
-    field public static final int ENOTCONN;
-    field public static final int ENOTDIR;
-    field public static final int ENOTEMPTY;
-    field public static final int ENOTSOCK;
-    field public static final int ENOTSUP;
-    field public static final int ENOTTY;
-    field public static final int ENXIO;
-    field public static final int EOPNOTSUPP;
-    field public static final int EOVERFLOW;
-    field public static final int EPERM;
-    field public static final int EPIPE;
-    field public static final int EPROTO;
-    field public static final int EPROTONOSUPPORT;
-    field public static final int EPROTOTYPE;
-    field public static final int ERANGE;
-    field public static final int EROFS;
-    field public static final int ESPIPE;
-    field public static final int ESRCH;
-    field public static final int ESTALE;
-    field public static final int ETH_P_ALL;
-    field public static final int ETH_P_ARP;
-    field public static final int ETH_P_IP;
-    field public static final int ETH_P_IPV6;
-    field public static final int ETIME;
-    field public static final int ETIMEDOUT;
-    field public static final int ETXTBSY;
-    field public static final int EXDEV;
-    field public static final int EXIT_FAILURE;
-    field public static final int EXIT_SUCCESS;
-    field public static final int FD_CLOEXEC;
-    field public static final int FIONREAD;
-    field public static final int F_DUPFD;
-    field public static final int F_DUPFD_CLOEXEC;
-    field public static final int F_GETFD;
-    field public static final int F_GETFL;
-    field public static final int F_GETLK;
-    field public static final int F_GETLK64;
-    field public static final int F_GETOWN;
-    field public static final int F_OK;
-    field public static final int F_RDLCK;
-    field public static final int F_SETFD;
-    field public static final int F_SETFL;
-    field public static final int F_SETLK;
-    field public static final int F_SETLK64;
-    field public static final int F_SETLKW;
-    field public static final int F_SETLKW64;
-    field public static final int F_SETOWN;
-    field public static final int F_UNLCK;
-    field public static final int F_WRLCK;
-    field public static final int ICMP6_ECHO_REPLY;
-    field public static final int ICMP6_ECHO_REQUEST;
-    field public static final int ICMP_ECHO;
-    field public static final int ICMP_ECHOREPLY;
-    field public static final int IFA_F_DADFAILED;
-    field public static final int IFA_F_DEPRECATED;
-    field public static final int IFA_F_HOMEADDRESS;
-    field public static final int IFA_F_NODAD;
-    field public static final int IFA_F_OPTIMISTIC;
-    field public static final int IFA_F_PERMANENT;
-    field public static final int IFA_F_SECONDARY;
-    field public static final int IFA_F_TEMPORARY;
-    field public static final int IFA_F_TENTATIVE;
-    field public static final int IFF_ALLMULTI;
-    field public static final int IFF_AUTOMEDIA;
-    field public static final int IFF_BROADCAST;
-    field public static final int IFF_DEBUG;
-    field public static final int IFF_DYNAMIC;
-    field public static final int IFF_LOOPBACK;
-    field public static final int IFF_MASTER;
-    field public static final int IFF_MULTICAST;
-    field public static final int IFF_NOARP;
-    field public static final int IFF_NOTRAILERS;
-    field public static final int IFF_POINTOPOINT;
-    field public static final int IFF_PORTSEL;
-    field public static final int IFF_PROMISC;
-    field public static final int IFF_RUNNING;
-    field public static final int IFF_SLAVE;
-    field public static final int IFF_UP;
-    field public static final int IPPROTO_ICMP;
-    field public static final int IPPROTO_ICMPV6;
-    field public static final int IPPROTO_IP;
-    field public static final int IPPROTO_IPV6;
-    field public static final int IPPROTO_RAW;
-    field public static final int IPPROTO_TCP;
-    field public static final int IPPROTO_UDP;
-    field public static final int IPV6_CHECKSUM;
-    field public static final int IPV6_MULTICAST_HOPS;
-    field public static final int IPV6_MULTICAST_IF;
-    field public static final int IPV6_MULTICAST_LOOP;
-    field public static final int IPV6_RECVDSTOPTS;
-    field public static final int IPV6_RECVHOPLIMIT;
-    field public static final int IPV6_RECVHOPOPTS;
-    field public static final int IPV6_RECVPKTINFO;
-    field public static final int IPV6_RECVRTHDR;
-    field public static final int IPV6_RECVTCLASS;
-    field public static final int IPV6_TCLASS;
-    field public static final int IPV6_UNICAST_HOPS;
-    field public static final int IPV6_V6ONLY;
-    field public static final int IP_MULTICAST_IF;
-    field public static final int IP_MULTICAST_LOOP;
-    field public static final int IP_MULTICAST_TTL;
-    field public static final int IP_TOS;
-    field public static final int IP_TTL;
-    field public static final int MAP_ANONYMOUS;
-    field public static final int MAP_FIXED;
-    field public static final int MAP_PRIVATE;
-    field public static final int MAP_SHARED;
-    field public static final int MCAST_BLOCK_SOURCE;
-    field public static final int MCAST_JOIN_GROUP;
-    field public static final int MCAST_JOIN_SOURCE_GROUP;
-    field public static final int MCAST_LEAVE_GROUP;
-    field public static final int MCAST_LEAVE_SOURCE_GROUP;
-    field public static final int MCAST_UNBLOCK_SOURCE;
-    field public static final int MCL_CURRENT;
-    field public static final int MCL_FUTURE;
-    field public static final int MFD_CLOEXEC;
-    field public static final int MSG_CTRUNC;
-    field public static final int MSG_DONTROUTE;
-    field public static final int MSG_EOR;
-    field public static final int MSG_OOB;
-    field public static final int MSG_PEEK;
-    field public static final int MSG_TRUNC;
-    field public static final int MSG_WAITALL;
-    field public static final int MS_ASYNC;
-    field public static final int MS_INVALIDATE;
-    field public static final int MS_SYNC;
-    field public static final int NETLINK_INET_DIAG;
-    field public static final int NETLINK_NETFILTER;
-    field public static final int NETLINK_ROUTE;
-    field public static final int NI_DGRAM;
-    field public static final int NI_NAMEREQD;
-    field public static final int NI_NOFQDN;
-    field public static final int NI_NUMERICHOST;
-    field public static final int NI_NUMERICSERV;
-    field public static final int O_ACCMODE;
-    field public static final int O_APPEND;
-    field public static final int O_CLOEXEC;
-    field public static final int O_CREAT;
-    field public static final int O_DSYNC;
-    field public static final int O_EXCL;
-    field public static final int O_NOCTTY;
-    field public static final int O_NOFOLLOW;
-    field public static final int O_NONBLOCK;
-    field public static final int O_RDONLY;
-    field public static final int O_RDWR;
-    field public static final int O_SYNC;
-    field public static final int O_TRUNC;
-    field public static final int O_WRONLY;
-    field public static final int POLLERR;
-    field public static final int POLLHUP;
-    field public static final int POLLIN;
-    field public static final int POLLNVAL;
-    field public static final int POLLOUT;
-    field public static final int POLLPRI;
-    field public static final int POLLRDBAND;
-    field public static final int POLLRDNORM;
-    field public static final int POLLWRBAND;
-    field public static final int POLLWRNORM;
-    field public static final int PROT_EXEC;
-    field public static final int PROT_NONE;
-    field public static final int PROT_READ;
-    field public static final int PROT_WRITE;
-    field public static final int PR_GET_DUMPABLE;
-    field public static final int PR_SET_DUMPABLE;
-    field public static final int PR_SET_NO_NEW_PRIVS;
-    field public static final int RTMGRP_NEIGH;
-    field public static final int RT_SCOPE_HOST;
-    field public static final int RT_SCOPE_LINK;
-    field public static final int RT_SCOPE_NOWHERE;
-    field public static final int RT_SCOPE_SITE;
-    field public static final int RT_SCOPE_UNIVERSE;
-    field public static final int R_OK;
-    field public static final int SEEK_CUR;
-    field public static final int SEEK_END;
-    field public static final int SEEK_SET;
-    field public static final int SHUT_RD;
-    field public static final int SHUT_RDWR;
-    field public static final int SHUT_WR;
-    field public static final int SIGABRT;
-    field public static final int SIGALRM;
-    field public static final int SIGBUS;
-    field public static final int SIGCHLD;
-    field public static final int SIGCONT;
-    field public static final int SIGFPE;
-    field public static final int SIGHUP;
-    field public static final int SIGILL;
-    field public static final int SIGINT;
-    field public static final int SIGIO;
-    field public static final int SIGKILL;
-    field public static final int SIGPIPE;
-    field public static final int SIGPROF;
-    field public static final int SIGPWR;
-    field public static final int SIGQUIT;
-    field public static final int SIGRTMAX;
-    field public static final int SIGRTMIN;
-    field public static final int SIGSEGV;
-    field public static final int SIGSTKFLT;
-    field public static final int SIGSTOP;
-    field public static final int SIGSYS;
-    field public static final int SIGTERM;
-    field public static final int SIGTRAP;
-    field public static final int SIGTSTP;
-    field public static final int SIGTTIN;
-    field public static final int SIGTTOU;
-    field public static final int SIGURG;
-    field public static final int SIGUSR1;
-    field public static final int SIGUSR2;
-    field public static final int SIGVTALRM;
-    field public static final int SIGWINCH;
-    field public static final int SIGXCPU;
-    field public static final int SIGXFSZ;
-    field public static final int SIOCGIFADDR;
-    field public static final int SIOCGIFBRDADDR;
-    field public static final int SIOCGIFDSTADDR;
-    field public static final int SIOCGIFNETMASK;
-    field public static final int SOCK_CLOEXEC;
-    field public static final int SOCK_DGRAM;
-    field public static final int SOCK_NONBLOCK;
-    field public static final int SOCK_RAW;
-    field public static final int SOCK_SEQPACKET;
-    field public static final int SOCK_STREAM;
-    field public static final int SOL_SOCKET;
-    field public static final int SO_BINDTODEVICE;
-    field public static final int SO_BROADCAST;
-    field public static final int SO_DEBUG;
-    field public static final int SO_DONTROUTE;
-    field public static final int SO_ERROR;
-    field public static final int SO_KEEPALIVE;
-    field public static final int SO_LINGER;
-    field public static final int SO_OOBINLINE;
-    field public static final int SO_PASSCRED;
-    field public static final int SO_PEERCRED;
-    field public static final int SO_RCVBUF;
-    field public static final int SO_RCVLOWAT;
-    field public static final int SO_RCVTIMEO;
-    field public static final int SO_REUSEADDR;
-    field public static final int SO_SNDBUF;
-    field public static final int SO_SNDLOWAT;
-    field public static final int SO_SNDTIMEO;
-    field public static final int SO_TYPE;
-    field public static final int STDERR_FILENO;
-    field public static final int STDIN_FILENO;
-    field public static final int STDOUT_FILENO;
-    field public static final int ST_MANDLOCK;
-    field public static final int ST_NOATIME;
-    field public static final int ST_NODEV;
-    field public static final int ST_NODIRATIME;
-    field public static final int ST_NOEXEC;
-    field public static final int ST_NOSUID;
-    field public static final int ST_RDONLY;
-    field public static final int ST_RELATIME;
-    field public static final int ST_SYNCHRONOUS;
-    field public static final int S_IFBLK;
-    field public static final int S_IFCHR;
-    field public static final int S_IFDIR;
-    field public static final int S_IFIFO;
-    field public static final int S_IFLNK;
-    field public static final int S_IFMT;
-    field public static final int S_IFREG;
-    field public static final int S_IFSOCK;
-    field public static final int S_IRGRP;
-    field public static final int S_IROTH;
-    field public static final int S_IRUSR;
-    field public static final int S_IRWXG;
-    field public static final int S_IRWXO;
-    field public static final int S_IRWXU;
-    field public static final int S_ISGID;
-    field public static final int S_ISUID;
-    field public static final int S_ISVTX;
-    field public static final int S_IWGRP;
-    field public static final int S_IWOTH;
-    field public static final int S_IWUSR;
-    field public static final int S_IXGRP;
-    field public static final int S_IXOTH;
-    field public static final int S_IXUSR;
-    field public static final int TCP_NODELAY;
-    field public static final int TCP_USER_TIMEOUT;
-    field public static final int WCONTINUED;
-    field public static final int WEXITED;
-    field public static final int WNOHANG;
-    field public static final int WNOWAIT;
-    field public static final int WSTOPPED;
-    field public static final int WUNTRACED;
-    field public static final int W_OK;
-    field public static final int X_OK;
-    field public static final int _SC_2_CHAR_TERM;
-    field public static final int _SC_2_C_BIND;
-    field public static final int _SC_2_C_DEV;
-    field public static final int _SC_2_C_VERSION;
-    field public static final int _SC_2_FORT_DEV;
-    field public static final int _SC_2_FORT_RUN;
-    field public static final int _SC_2_LOCALEDEF;
-    field public static final int _SC_2_SW_DEV;
-    field public static final int _SC_2_UPE;
-    field public static final int _SC_2_VERSION;
-    field public static final int _SC_AIO_LISTIO_MAX;
-    field public static final int _SC_AIO_MAX;
-    field public static final int _SC_AIO_PRIO_DELTA_MAX;
-    field public static final int _SC_ARG_MAX;
-    field public static final int _SC_ASYNCHRONOUS_IO;
-    field public static final int _SC_ATEXIT_MAX;
-    field public static final int _SC_AVPHYS_PAGES;
-    field public static final int _SC_BC_BASE_MAX;
-    field public static final int _SC_BC_DIM_MAX;
-    field public static final int _SC_BC_SCALE_MAX;
-    field public static final int _SC_BC_STRING_MAX;
-    field public static final int _SC_CHILD_MAX;
-    field public static final int _SC_CLK_TCK;
-    field public static final int _SC_COLL_WEIGHTS_MAX;
-    field public static final int _SC_DELAYTIMER_MAX;
-    field public static final int _SC_EXPR_NEST_MAX;
-    field public static final int _SC_FSYNC;
-    field public static final int _SC_GETGR_R_SIZE_MAX;
-    field public static final int _SC_GETPW_R_SIZE_MAX;
-    field public static final int _SC_IOV_MAX;
-    field public static final int _SC_JOB_CONTROL;
-    field public static final int _SC_LINE_MAX;
-    field public static final int _SC_LOGIN_NAME_MAX;
-    field public static final int _SC_MAPPED_FILES;
-    field public static final int _SC_MEMLOCK;
-    field public static final int _SC_MEMLOCK_RANGE;
-    field public static final int _SC_MEMORY_PROTECTION;
-    field public static final int _SC_MESSAGE_PASSING;
-    field public static final int _SC_MQ_OPEN_MAX;
-    field public static final int _SC_MQ_PRIO_MAX;
-    field public static final int _SC_NGROUPS_MAX;
-    field public static final int _SC_NPROCESSORS_CONF;
-    field public static final int _SC_NPROCESSORS_ONLN;
-    field public static final int _SC_OPEN_MAX;
-    field public static final int _SC_PAGESIZE;
-    field public static final int _SC_PAGE_SIZE;
-    field public static final int _SC_PASS_MAX;
-    field public static final int _SC_PHYS_PAGES;
-    field public static final int _SC_PRIORITIZED_IO;
-    field public static final int _SC_PRIORITY_SCHEDULING;
-    field public static final int _SC_REALTIME_SIGNALS;
-    field public static final int _SC_RE_DUP_MAX;
-    field public static final int _SC_RTSIG_MAX;
-    field public static final int _SC_SAVED_IDS;
-    field public static final int _SC_SEMAPHORES;
-    field public static final int _SC_SEM_NSEMS_MAX;
-    field public static final int _SC_SEM_VALUE_MAX;
-    field public static final int _SC_SHARED_MEMORY_OBJECTS;
-    field public static final int _SC_SIGQUEUE_MAX;
-    field public static final int _SC_STREAM_MAX;
-    field public static final int _SC_SYNCHRONIZED_IO;
-    field public static final int _SC_THREADS;
-    field public static final int _SC_THREAD_ATTR_STACKADDR;
-    field public static final int _SC_THREAD_ATTR_STACKSIZE;
-    field public static final int _SC_THREAD_DESTRUCTOR_ITERATIONS;
-    field public static final int _SC_THREAD_KEYS_MAX;
-    field public static final int _SC_THREAD_PRIORITY_SCHEDULING;
-    field public static final int _SC_THREAD_PRIO_INHERIT;
-    field public static final int _SC_THREAD_PRIO_PROTECT;
-    field public static final int _SC_THREAD_SAFE_FUNCTIONS;
-    field public static final int _SC_THREAD_STACK_MIN;
-    field public static final int _SC_THREAD_THREADS_MAX;
-    field public static final int _SC_TIMERS;
-    field public static final int _SC_TIMER_MAX;
-    field public static final int _SC_TTY_NAME_MAX;
-    field public static final int _SC_TZNAME_MAX;
-    field public static final int _SC_VERSION;
-    field public static final int _SC_XBS5_ILP32_OFF32;
-    field public static final int _SC_XBS5_ILP32_OFFBIG;
-    field public static final int _SC_XBS5_LP64_OFF64;
-    field public static final int _SC_XBS5_LPBIG_OFFBIG;
-    field public static final int _SC_XOPEN_CRYPT;
-    field public static final int _SC_XOPEN_ENH_I18N;
-    field public static final int _SC_XOPEN_LEGACY;
-    field public static final int _SC_XOPEN_REALTIME;
-    field public static final int _SC_XOPEN_REALTIME_THREADS;
-    field public static final int _SC_XOPEN_SHM;
-    field public static final int _SC_XOPEN_UNIX;
-    field public static final int _SC_XOPEN_VERSION;
-    field public static final int _SC_XOPEN_XCU_VERSION;
-  }
-
-  public final class StructPollfd {
-    ctor public StructPollfd();
-    field public short events;
-    field public java.io.FileDescriptor fd;
-    field public short revents;
-    field public Object userData;
-  }
-
-  public final class StructStat {
-    ctor public StructStat(long, long, int, long, int, int, long, long, long, long, long, long, long);
-    ctor public StructStat(long, long, int, long, int, int, long, long, android.system.StructTimespec, android.system.StructTimespec, android.system.StructTimespec, long, long);
-    field public final android.system.StructTimespec st_atim;
-    field public final long st_atime;
-    field public final long st_blksize;
-    field public final long st_blocks;
-    field public final android.system.StructTimespec st_ctim;
-    field public final long st_ctime;
-    field public final long st_dev;
-    field public final int st_gid;
-    field public final long st_ino;
-    field public final int st_mode;
-    field public final android.system.StructTimespec st_mtim;
-    field public final long st_mtime;
-    field public final long st_nlink;
-    field public final long st_rdev;
-    field public final long st_size;
-    field public final int st_uid;
-  }
-
-  public final class StructStatVfs {
-    ctor public StructStatVfs(long, long, long, long, long, long, long, long, long, long, long);
-    field public final long f_bavail;
-    field public final long f_bfree;
-    field public final long f_blocks;
-    field public final long f_bsize;
-    field public final long f_favail;
-    field public final long f_ffree;
-    field public final long f_files;
-    field public final long f_flag;
-    field public final long f_frsize;
-    field public final long f_fsid;
-    field public final long f_namemax;
-  }
-
-  public final class StructTimespec implements java.lang.Comparable<android.system.StructTimespec> {
-    ctor public StructTimespec(long, long);
-    method public int compareTo(android.system.StructTimespec);
-    field public final long tv_nsec;
-    field public final long tv_sec;
-  }
-
-  public final class StructTimeval {
-    method @NonNull public static android.system.StructTimeval fromMillis(long);
-    method public long toMillis();
-    field public final long tv_sec;
-    field public final long tv_usec;
-  }
-
-  public final class StructUtsname {
-    ctor public StructUtsname(String, String, String, String, String);
-    field public final String machine;
-    field public final String nodename;
-    field public final String release;
-    field public final String sysname;
-    field public final String version;
-  }
-
-}
-
-package android.telecom {
-
-  public final class Call {
-    method public void addConferenceParticipants(@NonNull java.util.List<android.net.Uri>);
-    method public void answer(int);
-    method public void conference(android.telecom.Call);
-    method public void deflect(android.net.Uri);
-    method public void disconnect();
-    method public java.util.List<java.lang.String> getCannedTextResponses();
-    method public java.util.List<android.telecom.Call> getChildren();
-    method public java.util.List<android.telecom.Call> getConferenceableCalls();
-    method public android.telecom.Call.Details getDetails();
-    method @Nullable public android.telecom.Call getGenericConferenceActiveChildCall();
-    method public android.telecom.Call getParent();
-    method public String getRemainingPostDialSequence();
-    method @Nullable public android.telecom.Call.RttCall getRttCall();
-    method public int getState();
-    method public android.telecom.InCallService.VideoCall getVideoCall();
-    method public void handoverTo(android.telecom.PhoneAccountHandle, int, android.os.Bundle);
-    method public void hold();
-    method public boolean isRttActive();
-    method public void mergeConference();
-    method public void phoneAccountSelected(android.telecom.PhoneAccountHandle, boolean);
-    method public void playDtmfTone(char);
-    method public void postDialContinue(boolean);
-    method public void pullExternalCall();
-    method public void putExtras(android.os.Bundle);
-    method public void registerCallback(android.telecom.Call.Callback);
-    method public void registerCallback(android.telecom.Call.Callback, android.os.Handler);
-    method public void reject(boolean, String);
-    method public void reject(int);
-    method public void removeExtras(java.util.List<java.lang.String>);
-    method public void removeExtras(java.lang.String...);
-    method public void respondToRttRequest(int, boolean);
-    method public void sendCallEvent(String, android.os.Bundle);
-    method public void sendRttRequest();
-    method public void splitFromConference();
-    method public void stopDtmfTone();
-    method public void stopRtt();
-    method public void swapConference();
-    method public void unhold();
-    method public void unregisterCallback(android.telecom.Call.Callback);
-    field @Deprecated public static final String AVAILABLE_PHONE_ACCOUNTS = "selectPhoneAccountAccounts";
-    field public static final String EXTRA_LAST_EMERGENCY_CALLBACK_TIME_MILLIS = "android.telecom.extra.LAST_EMERGENCY_CALLBACK_TIME_MILLIS";
-    field public static final String EXTRA_SILENT_RINGING_REQUESTED = "android.telecom.extra.SILENT_RINGING_REQUESTED";
-    field public static final String EXTRA_SUGGESTED_PHONE_ACCOUNTS = "android.telecom.extra.SUGGESTED_PHONE_ACCOUNTS";
-    field public static final int REJECT_REASON_DECLINED = 1; // 0x1
-    field public static final int REJECT_REASON_UNWANTED = 2; // 0x2
-    field public static final int STATE_ACTIVE = 4; // 0x4
-    field public static final int STATE_AUDIO_PROCESSING = 12; // 0xc
-    field public static final int STATE_CONNECTING = 9; // 0x9
-    field public static final int STATE_DIALING = 1; // 0x1
-    field public static final int STATE_DISCONNECTED = 7; // 0x7
-    field public static final int STATE_DISCONNECTING = 10; // 0xa
-    field public static final int STATE_HOLDING = 3; // 0x3
-    field public static final int STATE_NEW = 0; // 0x0
-    field public static final int STATE_PULLING_CALL = 11; // 0xb
-    field public static final int STATE_RINGING = 2; // 0x2
-    field public static final int STATE_SELECT_PHONE_ACCOUNT = 8; // 0x8
-    field public static final int STATE_SIMULATED_RINGING = 13; // 0xd
-  }
-
-  public abstract static class Call.Callback {
-    ctor public Call.Callback();
-    method public void onCallDestroyed(android.telecom.Call);
-    method public void onCannedTextResponsesLoaded(android.telecom.Call, java.util.List<java.lang.String>);
-    method public void onChildrenChanged(android.telecom.Call, java.util.List<android.telecom.Call>);
-    method public void onConferenceableCallsChanged(android.telecom.Call, java.util.List<android.telecom.Call>);
-    method public void onConnectionEvent(android.telecom.Call, String, android.os.Bundle);
-    method public void onDetailsChanged(android.telecom.Call, android.telecom.Call.Details);
-    method public void onHandoverComplete(android.telecom.Call);
-    method public void onHandoverFailed(android.telecom.Call, int);
-    method public void onParentChanged(android.telecom.Call, android.telecom.Call);
-    method public void onPostDialWait(android.telecom.Call, String);
-    method public void onRttInitiationFailure(android.telecom.Call, int);
-    method public void onRttModeChanged(android.telecom.Call, int);
-    method public void onRttRequest(android.telecom.Call, int);
-    method public void onRttStatusChanged(android.telecom.Call, boolean, android.telecom.Call.RttCall);
-    method public void onStateChanged(android.telecom.Call, int);
-    method public void onVideoCallChanged(android.telecom.Call, android.telecom.InCallService.VideoCall);
-    field public static final int HANDOVER_FAILURE_DEST_APP_REJECTED = 1; // 0x1
-    field public static final int HANDOVER_FAILURE_NOT_SUPPORTED = 2; // 0x2
-    field public static final int HANDOVER_FAILURE_ONGOING_EMERGENCY_CALL = 4; // 0x4
-    field public static final int HANDOVER_FAILURE_UNKNOWN = 5; // 0x5
-    field public static final int HANDOVER_FAILURE_USER_REJECTED = 3; // 0x3
-  }
-
-  public static class Call.Details {
-    method public static boolean can(int, int);
-    method public boolean can(int);
-    method public static String capabilitiesToString(int);
-    method public android.telecom.PhoneAccountHandle getAccountHandle();
-    method public int getCallCapabilities();
-    method public int getCallDirection();
-    method public int getCallProperties();
-    method public String getCallerDisplayName();
-    method public int getCallerDisplayNamePresentation();
-    method public int getCallerNumberVerificationStatus();
-    method public final long getConnectTimeMillis();
-    method @Nullable public String getContactDisplayName();
-    method public long getCreationTimeMillis();
-    method public android.telecom.DisconnectCause getDisconnectCause();
-    method public android.os.Bundle getExtras();
-    method public android.telecom.GatewayInfo getGatewayInfo();
-    method public android.net.Uri getHandle();
-    method public int getHandlePresentation();
-    method public android.os.Bundle getIntentExtras();
-    method public android.telecom.StatusHints getStatusHints();
-    method public int getVideoState();
-    method public static boolean hasProperty(int, int);
-    method public boolean hasProperty(int);
-    method public static String propertiesToString(int);
-    field public static final int CAPABILITY_ADD_PARTICIPANT = 33554432; // 0x2000000
-    field public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 4194304; // 0x400000
-    field public static final int CAPABILITY_CAN_PAUSE_VIDEO = 1048576; // 0x100000
-    field public static final int CAPABILITY_CAN_PULL_CALL = 8388608; // 0x800000
-    field public static final int CAPABILITY_DISCONNECT_FROM_CONFERENCE = 8192; // 0x2000
-    field public static final int CAPABILITY_HOLD = 1; // 0x1
-    field public static final int CAPABILITY_MANAGE_CONFERENCE = 128; // 0x80
-    field public static final int CAPABILITY_MERGE_CONFERENCE = 4; // 0x4
-    field public static final int CAPABILITY_MUTE = 64; // 0x40
-    field public static final int CAPABILITY_RESPOND_VIA_TEXT = 32; // 0x20
-    field public static final int CAPABILITY_SEPARATE_FROM_CONFERENCE = 4096; // 0x1000
-    field public static final int CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL = 768; // 0x300
-    field public static final int CAPABILITY_SUPPORTS_VT_LOCAL_RX = 256; // 0x100
-    field public static final int CAPABILITY_SUPPORTS_VT_LOCAL_TX = 512; // 0x200
-    field public static final int CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL = 3072; // 0xc00
-    field public static final int CAPABILITY_SUPPORTS_VT_REMOTE_RX = 1024; // 0x400
-    field public static final int CAPABILITY_SUPPORTS_VT_REMOTE_TX = 2048; // 0x800
-    field public static final int CAPABILITY_SUPPORT_DEFLECT = 16777216; // 0x1000000
-    field public static final int CAPABILITY_SUPPORT_HOLD = 2; // 0x2
-    field public static final int CAPABILITY_SWAP_CONFERENCE = 8; // 0x8
-    field public static final int DIRECTION_INCOMING = 0; // 0x0
-    field public static final int DIRECTION_OUTGOING = 1; // 0x1
-    field public static final int DIRECTION_UNKNOWN = -1; // 0xffffffff
-    field public static final int PROPERTY_ASSISTED_DIALING = 512; // 0x200
-    field public static final int PROPERTY_CONFERENCE = 1; // 0x1
-    field public static final int PROPERTY_EMERGENCY_CALLBACK_MODE = 4; // 0x4
-    field public static final int PROPERTY_ENTERPRISE_CALL = 32; // 0x20
-    field public static final int PROPERTY_GENERIC_CONFERENCE = 2; // 0x2
-    field public static final int PROPERTY_HAS_CDMA_VOICE_PRIVACY = 128; // 0x80
-    field public static final int PROPERTY_HIGH_DEF_AUDIO = 16; // 0x10
-    field public static final int PROPERTY_IS_ADHOC_CONFERENCE = 8192; // 0x2000
-    field public static final int PROPERTY_IS_EXTERNAL_CALL = 64; // 0x40
-    field public static final int PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL = 2048; // 0x800
-    field public static final int PROPERTY_RTT = 1024; // 0x400
-    field public static final int PROPERTY_SELF_MANAGED = 256; // 0x100
-    field public static final int PROPERTY_VOIP_AUDIO_MODE = 4096; // 0x1000
-    field public static final int PROPERTY_WIFI = 8; // 0x8
-  }
-
-  public static final class Call.RttCall {
-    method public int getRttAudioMode();
-    method public String read();
-    method public String readImmediately() throws java.io.IOException;
-    method public void setRttMode(int);
-    method public void write(String) throws java.io.IOException;
-    field public static final int RTT_MODE_FULL = 1; // 0x1
-    field public static final int RTT_MODE_HCO = 2; // 0x2
-    field public static final int RTT_MODE_VCO = 3; // 0x3
-  }
-
-  public final class CallAudioState implements android.os.Parcelable {
-    ctor public CallAudioState(boolean, int, int);
-    method public static String audioRouteToString(int);
-    method public int describeContents();
-    method public android.bluetooth.BluetoothDevice getActiveBluetoothDevice();
-    method public int getRoute();
-    method public java.util.Collection<android.bluetooth.BluetoothDevice> getSupportedBluetoothDevices();
-    method public int getSupportedRouteMask();
-    method public boolean isMuted();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.CallAudioState> CREATOR;
-    field public static final int ROUTE_BLUETOOTH = 2; // 0x2
-    field public static final int ROUTE_EARPIECE = 1; // 0x1
-    field public static final int ROUTE_SPEAKER = 8; // 0x8
-    field public static final int ROUTE_WIRED_HEADSET = 4; // 0x4
-    field public static final int ROUTE_WIRED_OR_EARPIECE = 5; // 0x5
-  }
-
-  public abstract class CallRedirectionService extends android.app.Service {
-    ctor public CallRedirectionService();
-    method public final void cancelCall();
-    method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
-    method public abstract void onPlaceCall(@NonNull android.net.Uri, @NonNull android.telecom.PhoneAccountHandle, boolean);
-    method public final boolean onUnbind(@NonNull android.content.Intent);
-    method public final void placeCallUnmodified();
-    method public final void redirectCall(@NonNull android.net.Uri, @NonNull android.telecom.PhoneAccountHandle, boolean);
-    field public static final String SERVICE_INTERFACE = "android.telecom.CallRedirectionService";
-  }
-
-  public abstract class CallScreeningService extends android.app.Service {
-    ctor public CallScreeningService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public abstract void onScreenCall(@NonNull android.telecom.Call.Details);
-    method public final void respondToCall(@NonNull android.telecom.Call.Details, @NonNull android.telecom.CallScreeningService.CallResponse);
-    field public static final String SERVICE_INTERFACE = "android.telecom.CallScreeningService";
-  }
-
-  public static class CallScreeningService.CallResponse {
-    method public boolean getDisallowCall();
-    method public boolean getRejectCall();
-    method public boolean getSilenceCall();
-    method public boolean getSkipCallLog();
-    method public boolean getSkipNotification();
-  }
-
-  public static class CallScreeningService.CallResponse.Builder {
-    ctor public CallScreeningService.CallResponse.Builder();
-    method public android.telecom.CallScreeningService.CallResponse build();
-    method public android.telecom.CallScreeningService.CallResponse.Builder setDisallowCall(boolean);
-    method public android.telecom.CallScreeningService.CallResponse.Builder setRejectCall(boolean);
-    method @NonNull public android.telecom.CallScreeningService.CallResponse.Builder setSilenceCall(boolean);
-    method public android.telecom.CallScreeningService.CallResponse.Builder setSkipCallLog(boolean);
-    method public android.telecom.CallScreeningService.CallResponse.Builder setSkipNotification(boolean);
-  }
-
-  public abstract class Conference extends android.telecom.Conferenceable {
-    ctor public Conference(android.telecom.PhoneAccountHandle);
-    method public final boolean addConnection(android.telecom.Connection);
-    method @NonNull public static android.telecom.Conference createFailedConference(@NonNull android.telecom.DisconnectCause, @NonNull android.telecom.PhoneAccountHandle);
-    method public final void destroy();
-    method public final android.telecom.CallAudioState getCallAudioState();
-    method public final java.util.List<android.telecom.Connection> getConferenceableConnections();
-    method public final int getConnectionCapabilities();
-    method public final int getConnectionProperties();
-    method public final long getConnectionStartElapsedRealtimeMillis();
-    method @IntRange(from=0) public final long getConnectionTime();
-    method public final java.util.List<android.telecom.Connection> getConnections();
-    method public final android.telecom.DisconnectCause getDisconnectCause();
-    method public final android.os.Bundle getExtras();
-    method public final android.telecom.PhoneAccountHandle getPhoneAccountHandle();
-    method public final int getState();
-    method public final android.telecom.StatusHints getStatusHints();
-    method public android.telecom.Connection.VideoProvider getVideoProvider();
-    method public int getVideoState();
-    method public final boolean isRingbackRequested();
-    method public void onAddConferenceParticipants(@NonNull java.util.List<android.net.Uri>);
-    method public void onAnswer(int);
-    method public void onCallAudioStateChanged(android.telecom.CallAudioState);
-    method public void onConnectionAdded(android.telecom.Connection);
-    method public void onDisconnect();
-    method public void onExtrasChanged(android.os.Bundle);
-    method public void onHold();
-    method public void onMerge(android.telecom.Connection);
-    method public void onMerge();
-    method public void onPlayDtmfTone(char);
-    method public void onReject();
-    method public void onSeparate(android.telecom.Connection);
-    method public void onStopDtmfTone();
-    method public void onSwap();
-    method public void onUnhold();
-    method public final void putExtras(@NonNull android.os.Bundle);
-    method public final void removeConnection(android.telecom.Connection);
-    method public final void removeExtras(java.util.List<java.lang.String>);
-    method public final void removeExtras(java.lang.String...);
-    method public void sendConferenceEvent(@NonNull String, @Nullable android.os.Bundle);
-    method public final void setActive();
-    method public final void setConferenceableConnections(java.util.List<android.telecom.Connection>);
-    method public final void setConnectionCapabilities(int);
-    method public final void setConnectionProperties(int);
-    method @Deprecated public final void setConnectionStartElapsedRealTime(long);
-    method public final void setConnectionStartElapsedRealtimeMillis(long);
-    method public final void setConnectionTime(@IntRange(from=0) long);
-    method public final void setDialing();
-    method public final void setDisconnected(android.telecom.DisconnectCause);
-    method public final void setExtras(@Nullable android.os.Bundle);
-    method public final void setOnHold();
-    method public final void setRingbackRequested(boolean);
-    method public final void setRinging();
-    method public final void setStatusHints(android.telecom.StatusHints);
-    method public final void setVideoProvider(android.telecom.Connection, android.telecom.Connection.VideoProvider);
-    method public final void setVideoState(android.telecom.Connection, int);
-    field public static final long CONNECT_TIME_NOT_SPECIFIED = 0L; // 0x0L
-  }
-
-  public abstract class Conferenceable {
-  }
-
-  public abstract class Connection extends android.telecom.Conferenceable {
-    ctor public Connection();
-    method public static String capabilitiesToString(int);
-    method public static android.telecom.Connection createCanceledConnection();
-    method public static android.telecom.Connection createFailedConnection(android.telecom.DisconnectCause);
-    method public final void destroy();
-    method public final android.net.Uri getAddress();
-    method public final int getAddressPresentation();
-    method public final boolean getAudioModeIsVoip();
-    method public final android.telecom.CallAudioState getCallAudioState();
-    method public final String getCallerDisplayName();
-    method public final int getCallerDisplayNamePresentation();
-    method public final int getCallerNumberVerificationStatus();
-    method public final android.telecom.Conference getConference();
-    method public final java.util.List<android.telecom.Conferenceable> getConferenceables();
-    method public final int getConnectionCapabilities();
-    method public final int getConnectionProperties();
-    method public final android.telecom.DisconnectCause getDisconnectCause();
-    method public final android.os.Bundle getExtras();
-    method public final int getState();
-    method public final android.telecom.StatusHints getStatusHints();
-    method public final android.telecom.Connection.VideoProvider getVideoProvider();
-    method public final int getVideoState();
-    method public void handleRttUpgradeResponse(@Nullable android.telecom.Connection.RttTextStream);
-    method public final boolean isRingbackRequested();
-    method public final void notifyConferenceMergeFailed();
-    method public void onAbort();
-    method public void onAddConferenceParticipants(@NonNull java.util.List<android.net.Uri>);
-    method public void onAnswer(int);
-    method public void onAnswer();
-    method public void onCallAudioStateChanged(android.telecom.CallAudioState);
-    method public void onCallEvent(String, android.os.Bundle);
-    method public void onDeflect(android.net.Uri);
-    method public void onDisconnect();
-    method public void onExtrasChanged(android.os.Bundle);
-    method public void onHandoverComplete();
-    method public void onHold();
-    method public void onPlayDtmfTone(char);
-    method public void onPostDialContinue(boolean);
-    method public void onPullExternalCall();
-    method public void onReject();
-    method public void onReject(int);
-    method public void onReject(String);
-    method public void onSeparate();
-    method public void onShowIncomingCallUi();
-    method public void onSilence();
-    method public void onStartRtt(@NonNull android.telecom.Connection.RttTextStream);
-    method public void onStateChanged(int);
-    method public void onStopDtmfTone();
-    method public void onStopRtt();
-    method public void onUnhold();
-    method public static String propertiesToString(int);
-    method public final void putExtras(@NonNull android.os.Bundle);
-    method public final void removeExtras(java.util.List<java.lang.String>);
-    method public final void removeExtras(java.lang.String...);
-    method public void requestBluetoothAudio(@NonNull android.bluetooth.BluetoothDevice);
-    method public void sendConnectionEvent(String, android.os.Bundle);
-    method public final void sendRemoteRttRequest();
-    method public final void sendRttInitiationFailure(int);
-    method public final void sendRttInitiationSuccess();
-    method public final void sendRttSessionRemotelyTerminated();
-    method public final void setActive();
-    method public final void setAddress(android.net.Uri, int);
-    method public final void setAudioModeIsVoip(boolean);
-    method public final void setAudioRoute(int);
-    method public final void setCallerDisplayName(String, int);
-    method public final void setCallerNumberVerificationStatus(int);
-    method public final void setConferenceableConnections(java.util.List<android.telecom.Connection>);
-    method public final void setConferenceables(java.util.List<android.telecom.Conferenceable>);
-    method public final void setConnectionCapabilities(int);
-    method public final void setConnectionProperties(int);
-    method public final void setDialing();
-    method public final void setDisconnected(android.telecom.DisconnectCause);
-    method public final void setExtras(@Nullable android.os.Bundle);
-    method public final void setInitialized();
-    method public final void setInitializing();
-    method public final void setNextPostDialChar(char);
-    method public final void setOnHold();
-    method public final void setPostDialWait(String);
-    method public final void setPulling();
-    method public final void setRingbackRequested(boolean);
-    method public final void setRinging();
-    method public final void setStatusHints(android.telecom.StatusHints);
-    method public final void setVideoProvider(android.telecom.Connection.VideoProvider);
-    method public final void setVideoState(int);
-    method public static String stateToString(int);
-    field public static final int AUDIO_CODEC_AMR = 1; // 0x1
-    field public static final int AUDIO_CODEC_AMR_WB = 2; // 0x2
-    field public static final int AUDIO_CODEC_EVRC = 4; // 0x4
-    field public static final int AUDIO_CODEC_EVRC_B = 5; // 0x5
-    field public static final int AUDIO_CODEC_EVRC_NW = 7; // 0x7
-    field public static final int AUDIO_CODEC_EVRC_WB = 6; // 0x6
-    field public static final int AUDIO_CODEC_EVS_FB = 20; // 0x14
-    field public static final int AUDIO_CODEC_EVS_NB = 17; // 0x11
-    field public static final int AUDIO_CODEC_EVS_SWB = 19; // 0x13
-    field public static final int AUDIO_CODEC_EVS_WB = 18; // 0x12
-    field public static final int AUDIO_CODEC_G711A = 13; // 0xd
-    field public static final int AUDIO_CODEC_G711AB = 15; // 0xf
-    field public static final int AUDIO_CODEC_G711U = 11; // 0xb
-    field public static final int AUDIO_CODEC_G722 = 14; // 0xe
-    field public static final int AUDIO_CODEC_G723 = 12; // 0xc
-    field public static final int AUDIO_CODEC_G729 = 16; // 0x10
-    field public static final int AUDIO_CODEC_GSM_EFR = 8; // 0x8
-    field public static final int AUDIO_CODEC_GSM_FR = 9; // 0x9
-    field public static final int AUDIO_CODEC_GSM_HR = 10; // 0xa
-    field public static final int AUDIO_CODEC_NONE = 0; // 0x0
-    field public static final int AUDIO_CODEC_QCELP13K = 3; // 0x3
-    field public static final int CAPABILITY_ADD_PARTICIPANT = 67108864; // 0x4000000
-    field public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 8388608; // 0x800000
-    field public static final int CAPABILITY_CAN_PAUSE_VIDEO = 1048576; // 0x100000
-    field public static final int CAPABILITY_CAN_PULL_CALL = 16777216; // 0x1000000
-    field public static final int CAPABILITY_CAN_SEND_RESPONSE_VIA_CONNECTION = 4194304; // 0x400000
-    field @Deprecated public static final int CAPABILITY_CAN_UPGRADE_TO_VIDEO = 524288; // 0x80000
-    field public static final int CAPABILITY_DISCONNECT_FROM_CONFERENCE = 8192; // 0x2000
-    field public static final int CAPABILITY_HOLD = 1; // 0x1
-    field public static final int CAPABILITY_MANAGE_CONFERENCE = 128; // 0x80
-    field public static final int CAPABILITY_MERGE_CONFERENCE = 4; // 0x4
-    field public static final int CAPABILITY_MUTE = 64; // 0x40
-    field public static final int CAPABILITY_RESPOND_VIA_TEXT = 32; // 0x20
-    field public static final int CAPABILITY_SEPARATE_FROM_CONFERENCE = 4096; // 0x1000
-    field public static final int CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL = 768; // 0x300
-    field public static final int CAPABILITY_SUPPORTS_VT_LOCAL_RX = 256; // 0x100
-    field public static final int CAPABILITY_SUPPORTS_VT_LOCAL_TX = 512; // 0x200
-    field public static final int CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL = 3072; // 0xc00
-    field public static final int CAPABILITY_SUPPORTS_VT_REMOTE_RX = 1024; // 0x400
-    field public static final int CAPABILITY_SUPPORTS_VT_REMOTE_TX = 2048; // 0x800
-    field public static final int CAPABILITY_SUPPORT_DEFLECT = 33554432; // 0x2000000
-    field public static final int CAPABILITY_SUPPORT_HOLD = 2; // 0x2
-    field public static final int CAPABILITY_SWAP_CONFERENCE = 8; // 0x8
-    field public static final String EVENT_CALL_HOLD_FAILED = "android.telecom.event.CALL_HOLD_FAILED";
-    field public static final String EVENT_CALL_MERGE_FAILED = "android.telecom.event.CALL_MERGE_FAILED";
-    field public static final String EVENT_CALL_PULL_FAILED = "android.telecom.event.CALL_PULL_FAILED";
-    field public static final String EVENT_CALL_REMOTELY_HELD = "android.telecom.event.CALL_REMOTELY_HELD";
-    field public static final String EVENT_CALL_REMOTELY_UNHELD = "android.telecom.event.CALL_REMOTELY_UNHELD";
-    field public static final String EVENT_CALL_SWITCH_FAILED = "android.telecom.event.CALL_SWITCH_FAILED";
-    field public static final String EVENT_MERGE_COMPLETE = "android.telecom.event.MERGE_COMPLETE";
-    field public static final String EVENT_MERGE_START = "android.telecom.event.MERGE_START";
-    field public static final String EVENT_ON_HOLD_TONE_END = "android.telecom.event.ON_HOLD_TONE_END";
-    field public static final String EVENT_ON_HOLD_TONE_START = "android.telecom.event.ON_HOLD_TONE_START";
-    field public static final String EVENT_RTT_AUDIO_INDICATION_CHANGED = "android.telecom.event.RTT_AUDIO_INDICATION_CHANGED";
-    field public static final String EXTRA_ANSWERING_DROPS_FG_CALL = "android.telecom.extra.ANSWERING_DROPS_FG_CALL";
-    field public static final String EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME = "android.telecom.extra.ANSWERING_DROPS_FG_CALL_APP_NAME";
-    field public static final String EXTRA_AUDIO_CODEC = "android.telecom.extra.AUDIO_CODEC";
-    field public static final String EXTRA_CALL_SUBJECT = "android.telecom.extra.CALL_SUBJECT";
-    field public static final String EXTRA_CHILD_ADDRESS = "android.telecom.extra.CHILD_ADDRESS";
-    field public static final String EXTRA_IS_RTT_AUDIO_PRESENT = "android.telecom.extra.IS_RTT_AUDIO_PRESENT";
-    field public static final String EXTRA_LAST_FORWARDED_NUMBER = "android.telecom.extra.LAST_FORWARDED_NUMBER";
-    field public static final String EXTRA_SIP_INVITE = "android.telecom.extra.SIP_INVITE";
-    field public static final int PROPERTY_ASSISTED_DIALING = 512; // 0x200
-    field public static final int PROPERTY_HAS_CDMA_VOICE_PRIVACY = 32; // 0x20
-    field public static final int PROPERTY_HIGH_DEF_AUDIO = 4; // 0x4
-    field public static final int PROPERTY_IS_ADHOC_CONFERENCE = 4096; // 0x1000
-    field public static final int PROPERTY_IS_EXTERNAL_CALL = 16; // 0x10
-    field public static final int PROPERTY_IS_RTT = 256; // 0x100
-    field public static final int PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL = 1024; // 0x400
-    field public static final int PROPERTY_SELF_MANAGED = 128; // 0x80
-    field public static final int PROPERTY_WIFI = 8; // 0x8
-    field public static final int STATE_ACTIVE = 4; // 0x4
-    field public static final int STATE_DIALING = 3; // 0x3
-    field public static final int STATE_DISCONNECTED = 6; // 0x6
-    field public static final int STATE_HOLDING = 5; // 0x5
-    field public static final int STATE_INITIALIZING = 0; // 0x0
-    field public static final int STATE_NEW = 1; // 0x1
-    field public static final int STATE_PULLING_CALL = 7; // 0x7
-    field public static final int STATE_RINGING = 2; // 0x2
-    field public static final int VERIFICATION_STATUS_FAILED = 2; // 0x2
-    field public static final int VERIFICATION_STATUS_NOT_VERIFIED = 0; // 0x0
-    field public static final int VERIFICATION_STATUS_PASSED = 1; // 0x1
-  }
-
-  public static final class Connection.RttModifyStatus {
-    field public static final int SESSION_MODIFY_REQUEST_FAIL = 2; // 0x2
-    field public static final int SESSION_MODIFY_REQUEST_INVALID = 3; // 0x3
-    field public static final int SESSION_MODIFY_REQUEST_REJECTED_BY_REMOTE = 5; // 0x5
-    field public static final int SESSION_MODIFY_REQUEST_SUCCESS = 1; // 0x1
-    field public static final int SESSION_MODIFY_REQUEST_TIMED_OUT = 4; // 0x4
-  }
-
-  public static final class Connection.RttTextStream {
-    method public String read() throws java.io.IOException;
-    method public String readImmediately() throws java.io.IOException;
-    method public void write(String) throws java.io.IOException;
-  }
-
-  public abstract static class Connection.VideoProvider {
-    ctor public Connection.VideoProvider();
-    method public void changeCameraCapabilities(android.telecom.VideoProfile.CameraCapabilities);
-    method public void changePeerDimensions(int, int);
-    method public void changeVideoQuality(int);
-    method public void handleCallSessionEvent(int);
-    method public abstract void onRequestCameraCapabilities();
-    method public abstract void onRequestConnectionDataUsage();
-    method public abstract void onSendSessionModifyRequest(android.telecom.VideoProfile, android.telecom.VideoProfile);
-    method public abstract void onSendSessionModifyResponse(android.telecom.VideoProfile);
-    method public abstract void onSetCamera(String);
-    method public abstract void onSetDeviceOrientation(int);
-    method public abstract void onSetDisplaySurface(android.view.Surface);
-    method public abstract void onSetPauseImage(android.net.Uri);
-    method public abstract void onSetPreviewSurface(android.view.Surface);
-    method public abstract void onSetZoom(float);
-    method public void receiveSessionModifyRequest(android.telecom.VideoProfile);
-    method public void receiveSessionModifyResponse(int, android.telecom.VideoProfile, android.telecom.VideoProfile);
-    method public void setCallDataUsage(long);
-    field public static final int SESSION_EVENT_CAMERA_FAILURE = 5; // 0x5
-    field public static final int SESSION_EVENT_CAMERA_PERMISSION_ERROR = 7; // 0x7
-    field public static final int SESSION_EVENT_CAMERA_READY = 6; // 0x6
-    field public static final int SESSION_EVENT_RX_PAUSE = 1; // 0x1
-    field public static final int SESSION_EVENT_RX_RESUME = 2; // 0x2
-    field public static final int SESSION_EVENT_TX_START = 3; // 0x3
-    field public static final int SESSION_EVENT_TX_STOP = 4; // 0x4
-    field public static final int SESSION_MODIFY_REQUEST_FAIL = 2; // 0x2
-    field public static final int SESSION_MODIFY_REQUEST_INVALID = 3; // 0x3
-    field public static final int SESSION_MODIFY_REQUEST_REJECTED_BY_REMOTE = 5; // 0x5
-    field public static final int SESSION_MODIFY_REQUEST_SUCCESS = 1; // 0x1
-    field public static final int SESSION_MODIFY_REQUEST_TIMED_OUT = 4; // 0x4
-  }
-
-  public final class ConnectionRequest implements android.os.Parcelable {
-    ctor public ConnectionRequest(android.telecom.PhoneAccountHandle, android.net.Uri, android.os.Bundle);
-    ctor public ConnectionRequest(android.telecom.PhoneAccountHandle, android.net.Uri, android.os.Bundle, int);
-    method public int describeContents();
-    method public android.telecom.PhoneAccountHandle getAccountHandle();
-    method public android.net.Uri getAddress();
-    method public android.os.Bundle getExtras();
-    method @Nullable public java.util.List<android.net.Uri> getParticipants();
-    method public android.telecom.Connection.RttTextStream getRttTextStream();
-    method public int getVideoState();
-    method public boolean isAdhocConferenceCall();
-    method public boolean isRequestingRtt();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.ConnectionRequest> CREATOR;
-  }
-
-  public abstract class ConnectionService extends android.app.Service {
-    ctor public ConnectionService();
-    method public final void addConference(android.telecom.Conference);
-    method public final void addExistingConnection(android.telecom.PhoneAccountHandle, android.telecom.Connection);
-    method public final void conferenceRemoteConnections(android.telecom.RemoteConnection, android.telecom.RemoteConnection);
-    method public final void connectionServiceFocusReleased();
-    method @Nullable public final android.telecom.RemoteConference createRemoteIncomingConference(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest);
-    method public final android.telecom.RemoteConnection createRemoteIncomingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
-    method @Nullable public final android.telecom.RemoteConference createRemoteOutgoingConference(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest);
-    method public final android.telecom.RemoteConnection createRemoteOutgoingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
-    method public final java.util.Collection<android.telecom.Conference> getAllConferences();
-    method public final java.util.Collection<android.telecom.Connection> getAllConnections();
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method public void onConference(android.telecom.Connection, android.telecom.Connection);
-    method public void onConnectionServiceFocusGained();
-    method public void onConnectionServiceFocusLost();
-    method @Nullable public android.telecom.Conference onCreateIncomingConference(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest);
-    method public void onCreateIncomingConferenceFailed(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest);
-    method public android.telecom.Connection onCreateIncomingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
-    method public void onCreateIncomingConnectionFailed(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
-    method public android.telecom.Connection onCreateIncomingHandoverConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
-    method @Nullable public android.telecom.Conference onCreateOutgoingConference(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest);
-    method public void onCreateOutgoingConferenceFailed(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest);
-    method public android.telecom.Connection onCreateOutgoingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
-    method public void onCreateOutgoingConnectionFailed(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
-    method public android.telecom.Connection onCreateOutgoingHandoverConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
-    method public void onHandoverFailed(android.telecom.ConnectionRequest, int);
-    method public void onRemoteConferenceAdded(android.telecom.RemoteConference);
-    method public void onRemoteExistingConnectionAdded(android.telecom.RemoteConnection);
-    field public static final String SERVICE_INTERFACE = "android.telecom.ConnectionService";
-  }
-
-  public final class DisconnectCause implements android.os.Parcelable {
-    ctor public DisconnectCause(int);
-    ctor public DisconnectCause(int, String);
-    ctor public DisconnectCause(int, CharSequence, CharSequence, String);
-    ctor public DisconnectCause(int, CharSequence, CharSequence, String, int);
-    method public int describeContents();
-    method public int getCode();
-    method public CharSequence getDescription();
-    method public CharSequence getLabel();
-    method public String getReason();
-    method public int getTone();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ANSWERED_ELSEWHERE = 11; // 0xb
-    field public static final int BUSY = 7; // 0x7
-    field public static final int CALL_PULLED = 12; // 0xc
-    field public static final int CANCELED = 4; // 0x4
-    field public static final int CONNECTION_MANAGER_NOT_SUPPORTED = 10; // 0xa
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.DisconnectCause> CREATOR;
-    field public static final int ERROR = 1; // 0x1
-    field public static final int LOCAL = 2; // 0x2
-    field public static final int MISSED = 5; // 0x5
-    field public static final int OTHER = 9; // 0x9
-    field public static final String REASON_EMERGENCY_CALL_PLACED = "REASON_EMERGENCY_CALL_PLACED";
-    field public static final String REASON_IMS_ACCESS_BLOCKED = "REASON_IMS_ACCESS_BLOCKED";
-    field public static final String REASON_WIFI_ON_BUT_WFC_OFF = "REASON_WIFI_ON_BUT_WFC_OFF";
-    field public static final int REJECTED = 6; // 0x6
-    field public static final int REMOTE = 3; // 0x3
-    field public static final int RESTRICTED = 8; // 0x8
-    field public static final int UNKNOWN = 0; // 0x0
-  }
-
-  public class GatewayInfo implements android.os.Parcelable {
-    ctor public GatewayInfo(String, android.net.Uri, android.net.Uri);
-    method public int describeContents();
-    method public android.net.Uri getGatewayAddress();
-    method public String getGatewayProviderPackageName();
-    method public android.net.Uri getOriginalAddress();
-    method public boolean isEmpty();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.GatewayInfo> CREATOR;
-  }
-
-  public abstract class InCallService extends android.app.Service {
-    ctor public InCallService();
-    method public final boolean canAddCall();
-    method public final android.telecom.CallAudioState getCallAudioState();
-    method public final java.util.List<android.telecom.Call> getCalls();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public void onBringToForeground(boolean);
-    method public void onCallAdded(android.telecom.Call);
-    method public void onCallAudioStateChanged(android.telecom.CallAudioState);
-    method public void onCallRemoved(android.telecom.Call);
-    method public void onCanAddCallChanged(boolean);
-    method public void onConnectionEvent(android.telecom.Call, String, android.os.Bundle);
-    method public void onSilenceRinger();
-    method public final void requestBluetoothAudio(@NonNull android.bluetooth.BluetoothDevice);
-    method public final void setAudioRoute(int);
-    method public final void setMuted(boolean);
-    field public static final String SERVICE_INTERFACE = "android.telecom.InCallService";
-  }
-
-  public abstract static class InCallService.VideoCall {
-    ctor public InCallService.VideoCall();
-    method public abstract void registerCallback(android.telecom.InCallService.VideoCall.Callback);
-    method public abstract void registerCallback(android.telecom.InCallService.VideoCall.Callback, android.os.Handler);
-    method public abstract void requestCallDataUsage();
-    method public abstract void requestCameraCapabilities();
-    method public abstract void sendSessionModifyRequest(android.telecom.VideoProfile);
-    method public abstract void sendSessionModifyResponse(android.telecom.VideoProfile);
-    method public abstract void setCamera(String);
-    method public abstract void setDeviceOrientation(int);
-    method public abstract void setDisplaySurface(android.view.Surface);
-    method public abstract void setPauseImage(android.net.Uri);
-    method public abstract void setPreviewSurface(android.view.Surface);
-    method public abstract void setZoom(float);
-    method public abstract void unregisterCallback(android.telecom.InCallService.VideoCall.Callback);
-  }
-
-  public abstract static class InCallService.VideoCall.Callback {
-    ctor public InCallService.VideoCall.Callback();
-    method public abstract void onCallDataUsageChanged(long);
-    method public abstract void onCallSessionEvent(int);
-    method public abstract void onCameraCapabilitiesChanged(android.telecom.VideoProfile.CameraCapabilities);
-    method public abstract void onPeerDimensionsChanged(int, int);
-    method public abstract void onSessionModifyRequestReceived(android.telecom.VideoProfile);
-    method public abstract void onSessionModifyResponseReceived(int, android.telecom.VideoProfile, android.telecom.VideoProfile);
-    method public abstract void onVideoQualityChanged(int);
-  }
-
-  public final class PhoneAccount implements android.os.Parcelable {
-    method public static android.telecom.PhoneAccount.Builder builder(android.telecom.PhoneAccountHandle, CharSequence);
-    method public int describeContents();
-    method public android.telecom.PhoneAccountHandle getAccountHandle();
-    method public android.net.Uri getAddress();
-    method public int getCapabilities();
-    method public android.os.Bundle getExtras();
-    method public int getHighlightColor();
-    method public android.graphics.drawable.Icon getIcon();
-    method public CharSequence getLabel();
-    method public CharSequence getShortDescription();
-    method public android.net.Uri getSubscriptionAddress();
-    method public java.util.List<java.lang.String> getSupportedUriSchemes();
-    method public boolean hasCapabilities(int);
-    method public boolean isEnabled();
-    method public boolean supportsUriScheme(String);
-    method public android.telecom.PhoneAccount.Builder toBuilder();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CAPABILITY_ADHOC_CONFERENCE_CALLING = 16384; // 0x4000
-    field public static final int CAPABILITY_CALL_PROVIDER = 2; // 0x2
-    field public static final int CAPABILITY_CALL_SUBJECT = 64; // 0x40
-    field public static final int CAPABILITY_CONNECTION_MANAGER = 1; // 0x1
-    field public static final int CAPABILITY_PLACE_EMERGENCY_CALLS = 16; // 0x10
-    field public static final int CAPABILITY_RTT = 4096; // 0x1000
-    field public static final int CAPABILITY_SELF_MANAGED = 2048; // 0x800
-    field public static final int CAPABILITY_SIM_SUBSCRIPTION = 4; // 0x4
-    field public static final int CAPABILITY_SUPPORTS_VIDEO_CALLING = 1024; // 0x400
-    field public static final int CAPABILITY_VIDEO_CALLING = 8; // 0x8
-    field public static final int CAPABILITY_VIDEO_CALLING_RELIES_ON_PRESENCE = 256; // 0x100
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.PhoneAccount> CREATOR;
-    field public static final String EXTRA_ALWAYS_USE_VOIP_AUDIO_MODE = "android.telecom.extra.ALWAYS_USE_VOIP_AUDIO_MODE";
-    field public static final String EXTRA_CALL_SUBJECT_CHARACTER_ENCODING = "android.telecom.extra.CALL_SUBJECT_CHARACTER_ENCODING";
-    field public static final String EXTRA_CALL_SUBJECT_MAX_LENGTH = "android.telecom.extra.CALL_SUBJECT_MAX_LENGTH";
-    field public static final String EXTRA_LOG_SELF_MANAGED_CALLS = "android.telecom.extra.LOG_SELF_MANAGED_CALLS";
-    field public static final String EXTRA_SUPPORTS_HANDOVER_FROM = "android.telecom.extra.SUPPORTS_HANDOVER_FROM";
-    field public static final String EXTRA_SUPPORTS_HANDOVER_TO = "android.telecom.extra.SUPPORTS_HANDOVER_TO";
-    field public static final int NO_HIGHLIGHT_COLOR = 0; // 0x0
-    field public static final int NO_RESOURCE_ID = -1; // 0xffffffff
-    field public static final String SCHEME_SIP = "sip";
-    field public static final String SCHEME_TEL = "tel";
-    field public static final String SCHEME_VOICEMAIL = "voicemail";
-  }
-
-  public static class PhoneAccount.Builder {
-    ctor public PhoneAccount.Builder(android.telecom.PhoneAccountHandle, CharSequence);
-    ctor public PhoneAccount.Builder(android.telecom.PhoneAccount);
-    method public android.telecom.PhoneAccount.Builder addSupportedUriScheme(String);
-    method public android.telecom.PhoneAccount build();
-    method public android.telecom.PhoneAccount.Builder setAddress(android.net.Uri);
-    method public android.telecom.PhoneAccount.Builder setCapabilities(int);
-    method public android.telecom.PhoneAccount.Builder setExtras(android.os.Bundle);
-    method public android.telecom.PhoneAccount.Builder setHighlightColor(int);
-    method public android.telecom.PhoneAccount.Builder setIcon(android.graphics.drawable.Icon);
-    method public android.telecom.PhoneAccount.Builder setShortDescription(CharSequence);
-    method public android.telecom.PhoneAccount.Builder setSubscriptionAddress(android.net.Uri);
-    method public android.telecom.PhoneAccount.Builder setSupportedUriSchemes(java.util.List<java.lang.String>);
-  }
-
-  public final class PhoneAccountHandle implements android.os.Parcelable {
-    ctor public PhoneAccountHandle(@NonNull android.content.ComponentName, @NonNull String);
-    ctor public PhoneAccountHandle(@NonNull android.content.ComponentName, @NonNull String, @NonNull android.os.UserHandle);
-    method public int describeContents();
-    method public android.content.ComponentName getComponentName();
-    method public String getId();
-    method public android.os.UserHandle getUserHandle();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.PhoneAccountHandle> CREATOR;
-  }
-
-  public final class PhoneAccountSuggestion implements android.os.Parcelable {
-    ctor public PhoneAccountSuggestion(@NonNull android.telecom.PhoneAccountHandle, int, boolean);
-    method public int describeContents();
-    method @NonNull public android.telecom.PhoneAccountHandle getPhoneAccountHandle();
-    method public int getReason();
-    method public boolean shouldAutoSelect();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.PhoneAccountSuggestion> CREATOR;
-    field public static final int REASON_FREQUENT = 2; // 0x2
-    field public static final int REASON_INTRA_CARRIER = 1; // 0x1
-    field public static final int REASON_NONE = 0; // 0x0
-    field public static final int REASON_OTHER = 4; // 0x4
-    field public static final int REASON_USER_SET = 3; // 0x3
-  }
-
-  public final class RemoteConference {
-    method public void disconnect();
-    method public java.util.List<android.telecom.RemoteConnection> getConferenceableConnections();
-    method public int getConnectionCapabilities();
-    method public int getConnectionProperties();
-    method public java.util.List<android.telecom.RemoteConnection> getConnections();
-    method public android.telecom.DisconnectCause getDisconnectCause();
-    method public android.os.Bundle getExtras();
-    method public int getState();
-    method public void hold();
-    method public void merge();
-    method public void playDtmfTone(char);
-    method public void registerCallback(android.telecom.RemoteConference.Callback);
-    method public void registerCallback(android.telecom.RemoteConference.Callback, android.os.Handler);
-    method public void separate(android.telecom.RemoteConnection);
-    method public void setCallAudioState(android.telecom.CallAudioState);
-    method public void stopDtmfTone();
-    method public void swap();
-    method public void unhold();
-    method public void unregisterCallback(android.telecom.RemoteConference.Callback);
-  }
-
-  public abstract static class RemoteConference.Callback {
-    ctor public RemoteConference.Callback();
-    method public void onConferenceableConnectionsChanged(android.telecom.RemoteConference, java.util.List<android.telecom.RemoteConnection>);
-    method public void onConnectionAdded(android.telecom.RemoteConference, android.telecom.RemoteConnection);
-    method public void onConnectionCapabilitiesChanged(android.telecom.RemoteConference, int);
-    method public void onConnectionPropertiesChanged(android.telecom.RemoteConference, int);
-    method public void onConnectionRemoved(android.telecom.RemoteConference, android.telecom.RemoteConnection);
-    method public void onDestroyed(android.telecom.RemoteConference);
-    method public void onDisconnected(android.telecom.RemoteConference, android.telecom.DisconnectCause);
-    method public void onExtrasChanged(android.telecom.RemoteConference, @Nullable android.os.Bundle);
-    method public void onStateChanged(android.telecom.RemoteConference, int, int);
-  }
-
-  public final class RemoteConnection {
-    method public void abort();
-    method public void addConferenceParticipants(@NonNull java.util.List<android.net.Uri>);
-    method public void answer();
-    method public void disconnect();
-    method public android.net.Uri getAddress();
-    method public int getAddressPresentation();
-    method public CharSequence getCallerDisplayName();
-    method public int getCallerDisplayNamePresentation();
-    method public android.telecom.RemoteConference getConference();
-    method public java.util.List<android.telecom.RemoteConnection> getConferenceableConnections();
-    method public int getConnectionCapabilities();
-    method public int getConnectionProperties();
-    method public android.telecom.DisconnectCause getDisconnectCause();
-    method public android.os.Bundle getExtras();
-    method public int getState();
-    method public android.telecom.StatusHints getStatusHints();
-    method public android.telecom.RemoteConnection.VideoProvider getVideoProvider();
-    method public int getVideoState();
-    method public void hold();
-    method public boolean isRingbackRequested();
-    method public boolean isVoipAudioMode();
-    method public void playDtmfTone(char);
-    method public void postDialContinue(boolean);
-    method public void pullExternalCall();
-    method public void registerCallback(android.telecom.RemoteConnection.Callback);
-    method public void registerCallback(android.telecom.RemoteConnection.Callback, android.os.Handler);
-    method public void reject();
-    method public void setCallAudioState(android.telecom.CallAudioState);
-    method public void stopDtmfTone();
-    method public void unhold();
-    method public void unregisterCallback(android.telecom.RemoteConnection.Callback);
-  }
-
-  public abstract static class RemoteConnection.Callback {
-    ctor public RemoteConnection.Callback();
-    method public void onAddressChanged(android.telecom.RemoteConnection, android.net.Uri, int);
-    method public void onCallerDisplayNameChanged(android.telecom.RemoteConnection, String, int);
-    method public void onConferenceChanged(android.telecom.RemoteConnection, android.telecom.RemoteConference);
-    method public void onConferenceableConnectionsChanged(android.telecom.RemoteConnection, java.util.List<android.telecom.RemoteConnection>);
-    method public void onConnectionCapabilitiesChanged(android.telecom.RemoteConnection, int);
-    method public void onConnectionEvent(android.telecom.RemoteConnection, String, android.os.Bundle);
-    method public void onConnectionPropertiesChanged(android.telecom.RemoteConnection, int);
-    method public void onDestroyed(android.telecom.RemoteConnection);
-    method public void onDisconnected(android.telecom.RemoteConnection, android.telecom.DisconnectCause);
-    method public void onExtrasChanged(android.telecom.RemoteConnection, @Nullable android.os.Bundle);
-    method public void onPostDialChar(android.telecom.RemoteConnection, char);
-    method public void onPostDialWait(android.telecom.RemoteConnection, String);
-    method public void onRingbackRequested(android.telecom.RemoteConnection, boolean);
-    method public void onStateChanged(android.telecom.RemoteConnection, int);
-    method public void onStatusHintsChanged(android.telecom.RemoteConnection, android.telecom.StatusHints);
-    method public void onVideoProviderChanged(android.telecom.RemoteConnection, android.telecom.RemoteConnection.VideoProvider);
-    method public void onVideoStateChanged(android.telecom.RemoteConnection, int);
-    method public void onVoipAudioChanged(android.telecom.RemoteConnection, boolean);
-  }
-
-  public static class RemoteConnection.VideoProvider {
-    method public void registerCallback(android.telecom.RemoteConnection.VideoProvider.Callback);
-    method public void requestCallDataUsage();
-    method public void requestCameraCapabilities();
-    method public void sendSessionModifyRequest(android.telecom.VideoProfile, android.telecom.VideoProfile);
-    method public void sendSessionModifyResponse(android.telecom.VideoProfile);
-    method public void setCamera(String);
-    method public void setDeviceOrientation(int);
-    method public void setDisplaySurface(android.view.Surface);
-    method public void setPauseImage(android.net.Uri);
-    method public void setPreviewSurface(android.view.Surface);
-    method public void setZoom(float);
-    method public void unregisterCallback(android.telecom.RemoteConnection.VideoProvider.Callback);
-  }
-
-  public abstract static class RemoteConnection.VideoProvider.Callback {
-    ctor public RemoteConnection.VideoProvider.Callback();
-    method public void onCallDataUsageChanged(android.telecom.RemoteConnection.VideoProvider, long);
-    method public void onCallSessionEvent(android.telecom.RemoteConnection.VideoProvider, int);
-    method public void onCameraCapabilitiesChanged(android.telecom.RemoteConnection.VideoProvider, android.telecom.VideoProfile.CameraCapabilities);
-    method public void onPeerDimensionsChanged(android.telecom.RemoteConnection.VideoProvider, int, int);
-    method public void onSessionModifyRequestReceived(android.telecom.RemoteConnection.VideoProvider, android.telecom.VideoProfile);
-    method public void onSessionModifyResponseReceived(android.telecom.RemoteConnection.VideoProvider, int, android.telecom.VideoProfile, android.telecom.VideoProfile);
-    method public void onVideoQualityChanged(android.telecom.RemoteConnection.VideoProvider, int);
-  }
-
-  public final class StatusHints implements android.os.Parcelable {
-    ctor public StatusHints(CharSequence, android.graphics.drawable.Icon, android.os.Bundle);
-    method public int describeContents();
-    method public android.os.Bundle getExtras();
-    method public android.graphics.drawable.Icon getIcon();
-    method public CharSequence getLabel();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.StatusHints> CREATOR;
-  }
-
-  public class TelecomManager {
-    method public void acceptHandover(android.net.Uri, int, android.telecom.PhoneAccountHandle);
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ANSWER_PHONE_CALLS, android.Manifest.permission.MODIFY_PHONE_STATE}) public void acceptRingingCall();
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ANSWER_PHONE_CALLS, android.Manifest.permission.MODIFY_PHONE_STATE}) public void acceptRingingCall(int);
-    method public void addNewIncomingCall(android.telecom.PhoneAccountHandle, android.os.Bundle);
-    method public void addNewIncomingConference(@NonNull android.telecom.PhoneAccountHandle, @NonNull android.os.Bundle);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void cancelMissedCallsNotification();
-    method public android.content.Intent createManageBlockedNumbersIntent();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.ANSWER_PHONE_CALLS) public boolean endCall();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.net.Uri getAdnUriForPhoneAccount(android.telecom.PhoneAccountHandle);
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<android.telecom.PhoneAccountHandle> getCallCapablePhoneAccounts();
-    method public String getDefaultDialerPackage();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public android.telecom.PhoneAccountHandle getDefaultOutgoingPhoneAccount(String);
-    method @RequiresPermission(anyOf={android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.READ_SMS, android.Manifest.permission.READ_PHONE_NUMBERS}, conditional=true) public String getLine1Number(android.telecom.PhoneAccountHandle);
-    method public android.telecom.PhoneAccount getPhoneAccount(android.telecom.PhoneAccountHandle);
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<android.telecom.PhoneAccountHandle> getSelfManagedPhoneAccounts();
-    method public android.telecom.PhoneAccountHandle getSimCallManager();
-    method @Nullable public android.telecom.PhoneAccountHandle getSimCallManagerForSubscription(int);
-    method @Nullable public String getSystemDialerPackage();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public android.telecom.PhoneAccountHandle getUserSelectedOutgoingPhoneAccount();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getVoiceMailNumber(android.telecom.PhoneAccountHandle);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handleMmi(String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handleMmi(String, android.telecom.PhoneAccountHandle);
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isInCall();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isInManagedCall();
-    method public boolean isIncomingCallPermitted(android.telecom.PhoneAccountHandle);
-    method public boolean isOutgoingCallPermitted(android.telecom.PhoneAccountHandle);
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PHONE_STATE}) public boolean isTtySupported();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isVoiceMailNumber(android.telecom.PhoneAccountHandle, String);
-    method @RequiresPermission(anyOf={android.Manifest.permission.CALL_PHONE, android.Manifest.permission.MANAGE_OWN_CALLS}) public void placeCall(android.net.Uri, android.os.Bundle);
-    method public void registerPhoneAccount(android.telecom.PhoneAccount);
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public void showInCallScreen(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void silenceRinger();
-    method @RequiresPermission(android.Manifest.permission.CALL_PHONE) public void startConference(@NonNull java.util.List<android.net.Uri>, @NonNull android.os.Bundle);
-    method public void unregisterPhoneAccount(android.telecom.PhoneAccountHandle);
-    field public static final String ACTION_CHANGE_DEFAULT_DIALER = "android.telecom.action.CHANGE_DEFAULT_DIALER";
-    field public static final String ACTION_CHANGE_PHONE_ACCOUNTS = "android.telecom.action.CHANGE_PHONE_ACCOUNTS";
-    field public static final String ACTION_CONFIGURE_PHONE_ACCOUNT = "android.telecom.action.CONFIGURE_PHONE_ACCOUNT";
-    field public static final String ACTION_DEFAULT_CALL_SCREENING_APP_CHANGED = "android.telecom.action.DEFAULT_CALL_SCREENING_APP_CHANGED";
-    field public static final String ACTION_DEFAULT_DIALER_CHANGED = "android.telecom.action.DEFAULT_DIALER_CHANGED";
-    field @Deprecated public static final String ACTION_INCOMING_CALL = "android.telecom.action.INCOMING_CALL";
-    field public static final String ACTION_PHONE_ACCOUNT_REGISTERED = "android.telecom.action.PHONE_ACCOUNT_REGISTERED";
-    field public static final String ACTION_PHONE_ACCOUNT_UNREGISTERED = "android.telecom.action.PHONE_ACCOUNT_UNREGISTERED";
-    field public static final String ACTION_POST_CALL = "android.telecom.action.POST_CALL";
-    field public static final String ACTION_SHOW_CALL_ACCESSIBILITY_SETTINGS = "android.telecom.action.SHOW_CALL_ACCESSIBILITY_SETTINGS";
-    field public static final String ACTION_SHOW_CALL_SETTINGS = "android.telecom.action.SHOW_CALL_SETTINGS";
-    field public static final String ACTION_SHOW_MISSED_CALLS_NOTIFICATION = "android.telecom.action.SHOW_MISSED_CALLS_NOTIFICATION";
-    field public static final String ACTION_SHOW_RESPOND_VIA_SMS_SETTINGS = "android.telecom.action.SHOW_RESPOND_VIA_SMS_SETTINGS";
-    field public static final char DTMF_CHARACTER_PAUSE = 44; // 0x002c ','
-    field public static final char DTMF_CHARACTER_WAIT = 59; // 0x003b ';'
-    field public static final int DURATION_LONG = 3; // 0x3
-    field public static final int DURATION_MEDIUM = 2; // 0x2
-    field public static final int DURATION_SHORT = 1; // 0x1
-    field public static final int DURATION_VERY_SHORT = 0; // 0x0
-    field public static final String EXTRA_CALL_BACK_NUMBER = "android.telecom.extra.CALL_BACK_NUMBER";
-    field public static final String EXTRA_CALL_DISCONNECT_CAUSE = "android.telecom.extra.CALL_DISCONNECT_CAUSE";
-    field public static final String EXTRA_CALL_DISCONNECT_MESSAGE = "android.telecom.extra.CALL_DISCONNECT_MESSAGE";
-    field public static final String EXTRA_CALL_DURATION = "android.telecom.extra.CALL_DURATION";
-    field public static final String EXTRA_CALL_NETWORK_TYPE = "android.telecom.extra.CALL_NETWORK_TYPE";
-    field public static final String EXTRA_CALL_SUBJECT = "android.telecom.extra.CALL_SUBJECT";
-    field public static final String EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME = "android.telecom.extra.CHANGE_DEFAULT_DIALER_PACKAGE_NAME";
-    field public static final String EXTRA_DEFAULT_CALL_SCREENING_APP_COMPONENT_NAME = "android.telecom.extra.DEFAULT_CALL_SCREENING_APP_COMPONENT_NAME";
-    field public static final String EXTRA_DISCONNECT_CAUSE = "android.telecom.extra.DISCONNECT_CAUSE";
-    field public static final String EXTRA_HANDLE = "android.telecom.extra.HANDLE";
-    field public static final String EXTRA_INCOMING_CALL_ADDRESS = "android.telecom.extra.INCOMING_CALL_ADDRESS";
-    field public static final String EXTRA_INCOMING_CALL_EXTRAS = "android.telecom.extra.INCOMING_CALL_EXTRAS";
-    field public static final String EXTRA_INCOMING_VIDEO_STATE = "android.telecom.extra.INCOMING_VIDEO_STATE";
-    field public static final String EXTRA_IS_DEFAULT_CALL_SCREENING_APP = "android.telecom.extra.IS_DEFAULT_CALL_SCREENING_APP";
-    field public static final String EXTRA_NOTIFICATION_COUNT = "android.telecom.extra.NOTIFICATION_COUNT";
-    field public static final String EXTRA_NOTIFICATION_PHONE_NUMBER = "android.telecom.extra.NOTIFICATION_PHONE_NUMBER";
-    field public static final String EXTRA_OUTGOING_CALL_EXTRAS = "android.telecom.extra.OUTGOING_CALL_EXTRAS";
-    field public static final String EXTRA_PHONE_ACCOUNT_HANDLE = "android.telecom.extra.PHONE_ACCOUNT_HANDLE";
-    field public static final String EXTRA_START_CALL_WITH_RTT = "android.telecom.extra.START_CALL_WITH_RTT";
-    field public static final String EXTRA_START_CALL_WITH_SPEAKERPHONE = "android.telecom.extra.START_CALL_WITH_SPEAKERPHONE";
-    field public static final String EXTRA_START_CALL_WITH_VIDEO_STATE = "android.telecom.extra.START_CALL_WITH_VIDEO_STATE";
-    field public static final String EXTRA_USE_ASSISTED_DIALING = "android.telecom.extra.USE_ASSISTED_DIALING";
-    field public static final String GATEWAY_ORIGINAL_ADDRESS = "android.telecom.extra.GATEWAY_ORIGINAL_ADDRESS";
-    field public static final String GATEWAY_PROVIDER_PACKAGE = "android.telecom.extra.GATEWAY_PROVIDER_PACKAGE";
-    field public static final String METADATA_INCLUDE_EXTERNAL_CALLS = "android.telecom.INCLUDE_EXTERNAL_CALLS";
-    field public static final String METADATA_INCLUDE_SELF_MANAGED_CALLS = "android.telecom.INCLUDE_SELF_MANAGED_CALLS";
-    field public static final String METADATA_IN_CALL_SERVICE_CAR_MODE_UI = "android.telecom.IN_CALL_SERVICE_CAR_MODE_UI";
-    field public static final String METADATA_IN_CALL_SERVICE_RINGING = "android.telecom.IN_CALL_SERVICE_RINGING";
-    field public static final String METADATA_IN_CALL_SERVICE_UI = "android.telecom.IN_CALL_SERVICE_UI";
-    field public static final int PRESENTATION_ALLOWED = 1; // 0x1
-    field public static final int PRESENTATION_PAYPHONE = 4; // 0x4
-    field public static final int PRESENTATION_RESTRICTED = 2; // 0x2
-    field public static final int PRESENTATION_UNKNOWN = 3; // 0x3
-  }
-
-  public class VideoProfile implements android.os.Parcelable {
-    ctor public VideoProfile(int);
-    ctor public VideoProfile(int, int);
-    method public int describeContents();
-    method public int getQuality();
-    method public int getVideoState();
-    method public static boolean isAudioOnly(int);
-    method public static boolean isBidirectional(int);
-    method public static boolean isPaused(int);
-    method public static boolean isReceptionEnabled(int);
-    method public static boolean isTransmissionEnabled(int);
-    method public static boolean isVideo(int);
-    method public static String videoStateToString(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.VideoProfile> CREATOR;
-    field public static final int QUALITY_DEFAULT = 4; // 0x4
-    field public static final int QUALITY_HIGH = 1; // 0x1
-    field public static final int QUALITY_LOW = 3; // 0x3
-    field public static final int QUALITY_MEDIUM = 2; // 0x2
-    field public static final int STATE_AUDIO_ONLY = 0; // 0x0
-    field public static final int STATE_BIDIRECTIONAL = 3; // 0x3
-    field public static final int STATE_PAUSED = 4; // 0x4
-    field public static final int STATE_RX_ENABLED = 2; // 0x2
-    field public static final int STATE_TX_ENABLED = 1; // 0x1
-  }
-
-  public static final class VideoProfile.CameraCapabilities implements android.os.Parcelable {
-    ctor public VideoProfile.CameraCapabilities(@IntRange(from=0) int, @IntRange(from=0) int);
-    ctor public VideoProfile.CameraCapabilities(@IntRange(from=0) int, @IntRange(from=0) int, boolean, @FloatRange(from=1.0f) float);
-    method public int describeContents();
-    method public int getHeight();
-    method public float getMaxZoom();
-    method public int getWidth();
-    method public boolean isZoomSupported();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.VideoProfile.CameraCapabilities> CREATOR;
-  }
-
-}
-
-package android.telephony {
-
-  public final class AccessNetworkConstants {
-    field public static final int TRANSPORT_TYPE_WLAN = 2; // 0x2
-    field public static final int TRANSPORT_TYPE_WWAN = 1; // 0x1
-  }
-
-  public static final class AccessNetworkConstants.AccessNetworkType {
-    field public static final int CDMA2000 = 4; // 0x4
-    field public static final int EUTRAN = 3; // 0x3
-    field public static final int GERAN = 1; // 0x1
-    field public static final int IWLAN = 5; // 0x5
-    field public static final int NGRAN = 6; // 0x6
-    field public static final int UNKNOWN = 0; // 0x0
-    field public static final int UTRAN = 2; // 0x2
-  }
-
-  public static final class AccessNetworkConstants.EutranBand {
-    field public static final int BAND_1 = 1; // 0x1
-    field public static final int BAND_10 = 10; // 0xa
-    field public static final int BAND_11 = 11; // 0xb
-    field public static final int BAND_12 = 12; // 0xc
-    field public static final int BAND_13 = 13; // 0xd
-    field public static final int BAND_14 = 14; // 0xe
-    field public static final int BAND_17 = 17; // 0x11
-    field public static final int BAND_18 = 18; // 0x12
-    field public static final int BAND_19 = 19; // 0x13
-    field public static final int BAND_2 = 2; // 0x2
-    field public static final int BAND_20 = 20; // 0x14
-    field public static final int BAND_21 = 21; // 0x15
-    field public static final int BAND_22 = 22; // 0x16
-    field public static final int BAND_23 = 23; // 0x17
-    field public static final int BAND_24 = 24; // 0x18
-    field public static final int BAND_25 = 25; // 0x19
-    field public static final int BAND_26 = 26; // 0x1a
-    field public static final int BAND_27 = 27; // 0x1b
-    field public static final int BAND_28 = 28; // 0x1c
-    field public static final int BAND_3 = 3; // 0x3
-    field public static final int BAND_30 = 30; // 0x1e
-    field public static final int BAND_31 = 31; // 0x1f
-    field public static final int BAND_33 = 33; // 0x21
-    field public static final int BAND_34 = 34; // 0x22
-    field public static final int BAND_35 = 35; // 0x23
-    field public static final int BAND_36 = 36; // 0x24
-    field public static final int BAND_37 = 37; // 0x25
-    field public static final int BAND_38 = 38; // 0x26
-    field public static final int BAND_39 = 39; // 0x27
-    field public static final int BAND_4 = 4; // 0x4
-    field public static final int BAND_40 = 40; // 0x28
-    field public static final int BAND_41 = 41; // 0x29
-    field public static final int BAND_42 = 42; // 0x2a
-    field public static final int BAND_43 = 43; // 0x2b
-    field public static final int BAND_44 = 44; // 0x2c
-    field public static final int BAND_45 = 45; // 0x2d
-    field public static final int BAND_46 = 46; // 0x2e
-    field public static final int BAND_47 = 47; // 0x2f
-    field public static final int BAND_48 = 48; // 0x30
-    field public static final int BAND_49 = 49; // 0x31
-    field public static final int BAND_5 = 5; // 0x5
-    field public static final int BAND_50 = 50; // 0x32
-    field public static final int BAND_51 = 51; // 0x33
-    field public static final int BAND_52 = 52; // 0x34
-    field public static final int BAND_53 = 53; // 0x35
-    field public static final int BAND_6 = 6; // 0x6
-    field public static final int BAND_65 = 65; // 0x41
-    field public static final int BAND_66 = 66; // 0x42
-    field public static final int BAND_68 = 68; // 0x44
-    field public static final int BAND_7 = 7; // 0x7
-    field public static final int BAND_70 = 70; // 0x46
-    field public static final int BAND_71 = 71; // 0x47
-    field public static final int BAND_72 = 72; // 0x48
-    field public static final int BAND_73 = 73; // 0x49
-    field public static final int BAND_74 = 74; // 0x4a
-    field public static final int BAND_8 = 8; // 0x8
-    field public static final int BAND_85 = 85; // 0x55
-    field public static final int BAND_87 = 87; // 0x57
-    field public static final int BAND_88 = 88; // 0x58
-    field public static final int BAND_9 = 9; // 0x9
-  }
-
-  public static final class AccessNetworkConstants.GeranBand {
-    field public static final int BAND_450 = 3; // 0x3
-    field public static final int BAND_480 = 4; // 0x4
-    field public static final int BAND_710 = 5; // 0x5
-    field public static final int BAND_750 = 6; // 0x6
-    field public static final int BAND_850 = 8; // 0x8
-    field public static final int BAND_DCS1800 = 12; // 0xc
-    field public static final int BAND_E900 = 10; // 0xa
-    field public static final int BAND_ER900 = 14; // 0xe
-    field public static final int BAND_P900 = 9; // 0x9
-    field public static final int BAND_PCS1900 = 13; // 0xd
-    field public static final int BAND_R900 = 11; // 0xb
-    field public static final int BAND_T380 = 1; // 0x1
-    field public static final int BAND_T410 = 2; // 0x2
-    field public static final int BAND_T810 = 7; // 0x7
-  }
-
-  public static final class AccessNetworkConstants.NgranBands {
-    field public static final int BAND_1 = 1; // 0x1
-    field public static final int BAND_12 = 12; // 0xc
-    field public static final int BAND_14 = 14; // 0xe
-    field public static final int BAND_18 = 18; // 0x12
-    field public static final int BAND_2 = 2; // 0x2
-    field public static final int BAND_20 = 20; // 0x14
-    field public static final int BAND_25 = 25; // 0x19
-    field public static final int BAND_257 = 257; // 0x101
-    field public static final int BAND_258 = 258; // 0x102
-    field public static final int BAND_260 = 260; // 0x104
-    field public static final int BAND_261 = 261; // 0x105
-    field public static final int BAND_28 = 28; // 0x1c
-    field public static final int BAND_29 = 29; // 0x1d
-    field public static final int BAND_3 = 3; // 0x3
-    field public static final int BAND_30 = 30; // 0x1e
-    field public static final int BAND_34 = 34; // 0x22
-    field public static final int BAND_38 = 38; // 0x26
-    field public static final int BAND_39 = 39; // 0x27
-    field public static final int BAND_40 = 40; // 0x28
-    field public static final int BAND_41 = 41; // 0x29
-    field public static final int BAND_48 = 48; // 0x30
-    field public static final int BAND_5 = 5; // 0x5
-    field public static final int BAND_50 = 50; // 0x32
-    field public static final int BAND_51 = 51; // 0x33
-    field public static final int BAND_65 = 65; // 0x41
-    field public static final int BAND_66 = 66; // 0x42
-    field public static final int BAND_7 = 7; // 0x7
-    field public static final int BAND_70 = 70; // 0x46
-    field public static final int BAND_71 = 71; // 0x47
-    field public static final int BAND_74 = 74; // 0x4a
-    field public static final int BAND_75 = 75; // 0x4b
-    field public static final int BAND_76 = 76; // 0x4c
-    field public static final int BAND_77 = 77; // 0x4d
-    field public static final int BAND_78 = 78; // 0x4e
-    field public static final int BAND_79 = 79; // 0x4f
-    field public static final int BAND_8 = 8; // 0x8
-    field public static final int BAND_80 = 80; // 0x50
-    field public static final int BAND_81 = 81; // 0x51
-    field public static final int BAND_82 = 82; // 0x52
-    field public static final int BAND_83 = 83; // 0x53
-    field public static final int BAND_84 = 84; // 0x54
-    field public static final int BAND_86 = 86; // 0x56
-    field public static final int BAND_89 = 89; // 0x59
-    field public static final int BAND_90 = 90; // 0x5a
-    field public static final int BAND_91 = 91; // 0x5b
-    field public static final int BAND_92 = 92; // 0x5c
-    field public static final int BAND_93 = 93; // 0x5d
-    field public static final int BAND_94 = 94; // 0x5e
-    field public static final int BAND_95 = 95; // 0x5f
-  }
-
-  public static final class AccessNetworkConstants.UtranBand {
-    field public static final int BAND_1 = 1; // 0x1
-    field public static final int BAND_10 = 10; // 0xa
-    field public static final int BAND_11 = 11; // 0xb
-    field public static final int BAND_12 = 12; // 0xc
-    field public static final int BAND_13 = 13; // 0xd
-    field public static final int BAND_14 = 14; // 0xe
-    field public static final int BAND_19 = 19; // 0x13
-    field public static final int BAND_2 = 2; // 0x2
-    field public static final int BAND_20 = 20; // 0x14
-    field public static final int BAND_21 = 21; // 0x15
-    field public static final int BAND_22 = 22; // 0x16
-    field public static final int BAND_25 = 25; // 0x19
-    field public static final int BAND_26 = 26; // 0x1a
-    field public static final int BAND_3 = 3; // 0x3
-    field public static final int BAND_4 = 4; // 0x4
-    field public static final int BAND_5 = 5; // 0x5
-    field public static final int BAND_6 = 6; // 0x6
-    field public static final int BAND_7 = 7; // 0x7
-    field public static final int BAND_8 = 8; // 0x8
-    field public static final int BAND_9 = 9; // 0x9
-    field public static final int BAND_A = 101; // 0x65
-    field public static final int BAND_B = 102; // 0x66
-    field public static final int BAND_C = 103; // 0x67
-    field public static final int BAND_D = 104; // 0x68
-    field public static final int BAND_E = 105; // 0x69
-    field public static final int BAND_F = 106; // 0x6a
-  }
-
-  public final class AvailableNetworkInfo implements android.os.Parcelable {
-    ctor public AvailableNetworkInfo(int, int, @NonNull java.util.List<java.lang.String>, @NonNull java.util.List<java.lang.Integer>);
-    method public int describeContents();
-    method @NonNull public java.util.List<java.lang.Integer> getBands();
-    method @NonNull public java.util.List<java.lang.String> getMccMncs();
-    method public int getPriority();
-    method public int getSubId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.AvailableNetworkInfo> CREATOR;
-    field public static final int PRIORITY_HIGH = 1; // 0x1
-    field public static final int PRIORITY_LOW = 3; // 0x3
-    field public static final int PRIORITY_MED = 2; // 0x2
-  }
-
-  public final class BarringInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.telephony.BarringInfo.BarringServiceInfo getBarringServiceInfo(int);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final int BARRING_SERVICE_TYPE_CS_FALLBACK = 5; // 0x5
-    field public static final int BARRING_SERVICE_TYPE_CS_SERVICE = 0; // 0x0
-    field public static final int BARRING_SERVICE_TYPE_CS_VOICE = 2; // 0x2
-    field public static final int BARRING_SERVICE_TYPE_EMERGENCY = 8; // 0x8
-    field public static final int BARRING_SERVICE_TYPE_MMTEL_VIDEO = 7; // 0x7
-    field public static final int BARRING_SERVICE_TYPE_MMTEL_VOICE = 6; // 0x6
-    field public static final int BARRING_SERVICE_TYPE_MO_DATA = 4; // 0x4
-    field public static final int BARRING_SERVICE_TYPE_MO_SIGNALLING = 3; // 0x3
-    field public static final int BARRING_SERVICE_TYPE_PS_SERVICE = 1; // 0x1
-    field public static final int BARRING_SERVICE_TYPE_SMS = 9; // 0x9
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.BarringInfo> CREATOR;
-  }
-
-  public static final class BarringInfo.BarringServiceInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getBarringType();
-    method public int getConditionalBarringFactor();
-    method public int getConditionalBarringTimeSeconds();
-    method public boolean isBarred();
-    method public boolean isConditionallyBarred();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final int BARRING_TYPE_CONDITIONAL = 1; // 0x1
-    field public static final int BARRING_TYPE_NONE = 0; // 0x0
-    field public static final int BARRING_TYPE_UNCONDITIONAL = 2; // 0x2
-    field public static final int BARRING_TYPE_UNKNOWN = -1; // 0xffffffff
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.BarringInfo.BarringServiceInfo> CREATOR;
-  }
-
-  public class CarrierConfigManager {
-    method @Nullable public android.os.PersistableBundle getConfig();
-    method @Nullable public android.os.PersistableBundle getConfigByComponentForSubId(@NonNull String, int);
-    method @Nullable public android.os.PersistableBundle getConfigForSubId(int);
-    method public static boolean isConfigForIdentifiedCarrier(android.os.PersistableBundle);
-    method public void notifyConfigChangedForSubId(int);
-    field public static final String ACTION_CARRIER_CONFIG_CHANGED = "android.telephony.action.CARRIER_CONFIG_CHANGED";
-    field public static final int DATA_CYCLE_THRESHOLD_DISABLED = -2; // 0xfffffffe
-    field public static final int DATA_CYCLE_USE_PLATFORM_DEFAULT = -1; // 0xffffffff
-    field public static final String ENABLE_EAP_METHOD_PREFIX_BOOL = "enable_eap_method_prefix_bool";
-    field public static final String EXTRA_SLOT_INDEX = "android.telephony.extra.SLOT_INDEX";
-    field public static final String EXTRA_SUBSCRIPTION_INDEX = "android.telephony.extra.SUBSCRIPTION_INDEX";
-    field public static final String IMSI_KEY_AVAILABILITY_INT = "imsi_key_availability_int";
-    field public static final String KEY_5G_NR_SSRSRP_THRESHOLDS_INT_ARRAY = "5g_nr_ssrsrp_thresholds_int_array";
-    field public static final String KEY_5G_NR_SSRSRQ_THRESHOLDS_INT_ARRAY = "5g_nr_ssrsrq_thresholds_int_array";
-    field public static final String KEY_5G_NR_SSSINR_THRESHOLDS_INT_ARRAY = "5g_nr_sssinr_thresholds_int_array";
-    field public static final String KEY_ADDITIONAL_CALL_SETTING_BOOL = "additional_call_setting_bool";
-    field public static final String KEY_ALLOW_ADDING_APNS_BOOL = "allow_adding_apns_bool";
-    field public static final String KEY_ALLOW_ADD_CALL_DURING_VIDEO_CALL_BOOL = "allow_add_call_during_video_call";
-    field public static final String KEY_ALLOW_EMERGENCY_NUMBERS_IN_CALL_LOG_BOOL = "allow_emergency_numbers_in_call_log_bool";
-    field public static final String KEY_ALLOW_EMERGENCY_VIDEO_CALLS_BOOL = "allow_emergency_video_calls_bool";
-    field public static final String KEY_ALLOW_HOLD_CALL_DURING_EMERGENCY_BOOL = "allow_hold_call_during_emergency_bool";
-    field public static final String KEY_ALLOW_HOLD_VIDEO_CALL_BOOL = "allow_hold_video_call_bool";
-    field public static final String KEY_ALLOW_LOCAL_DTMF_TONES_BOOL = "allow_local_dtmf_tones_bool";
-    field public static final String KEY_ALLOW_MERGE_WIFI_CALLS_WHEN_VOWIFI_OFF_BOOL = "allow_merge_wifi_calls_when_vowifi_off_bool";
-    field public static final String KEY_ALLOW_NON_EMERGENCY_CALLS_IN_ECM_BOOL = "allow_non_emergency_calls_in_ecm_bool";
-    field public static final String KEY_ALLOW_VIDEO_CALLING_FALLBACK_BOOL = "allow_video_calling_fallback_bool";
-    field public static final String KEY_ALWAYS_SHOW_DATA_RAT_ICON_BOOL = "always_show_data_rat_icon_bool";
-    field @Deprecated public static final String KEY_ALWAYS_SHOW_EMERGENCY_ALERT_ONOFF_BOOL = "always_show_emergency_alert_onoff_bool";
-    field public static final String KEY_ALWAYS_SHOW_PRIMARY_SIGNAL_BAR_IN_OPPORTUNISTIC_NETWORK_BOOLEAN = "always_show_primary_signal_bar_in_opportunistic_network_boolean";
-    field public static final String KEY_APN_EXPAND_BOOL = "apn_expand_bool";
-    field public static final String KEY_APN_SETTINGS_DEFAULT_APN_TYPES_STRING_ARRAY = "apn_settings_default_apn_types_string_array";
-    field public static final String KEY_AUTO_RETRY_ENABLED_BOOL = "auto_retry_enabled_bool";
-    field public static final String KEY_CALL_BARRING_DEFAULT_SERVICE_CLASS_INT = "call_barring_default_service_class_int";
-    field public static final String KEY_CALL_BARRING_SUPPORTS_DEACTIVATE_ALL_BOOL = "call_barring_supports_deactivate_all_bool";
-    field public static final String KEY_CALL_BARRING_SUPPORTS_PASSWORD_CHANGE_BOOL = "call_barring_supports_password_change_bool";
-    field public static final String KEY_CALL_BARRING_VISIBILITY_BOOL = "call_barring_visibility_bool";
-    field public static final String KEY_CALL_FORWARDING_BLOCKS_WHILE_ROAMING_STRING_ARRAY = "call_forwarding_blocks_while_roaming_string_array";
-    field public static final String KEY_CALL_REDIRECTION_SERVICE_COMPONENT_NAME_STRING = "call_redirection_service_component_name_string";
-    field public static final String KEY_CARRIER_ALLOW_DEFLECT_IMS_CALL_BOOL = "carrier_allow_deflect_ims_call_bool";
-    field public static final String KEY_CARRIER_ALLOW_TURNOFF_IMS_BOOL = "carrier_allow_turnoff_ims_bool";
-    field public static final String KEY_CARRIER_APP_REQUIRED_DURING_SIM_SETUP_BOOL = "carrier_app_required_during_setup_bool";
-    field public static final String KEY_CARRIER_CALL_SCREENING_APP_STRING = "call_screening_app";
-    field public static final String KEY_CARRIER_CERTIFICATE_STRING_ARRAY = "carrier_certificate_string_array";
-    field public static final String KEY_CARRIER_CONFIG_APPLIED_BOOL = "carrier_config_applied_bool";
-    field public static final String KEY_CARRIER_CONFIG_VERSION_STRING = "carrier_config_version_string";
-    field public static final String KEY_CARRIER_DATA_CALL_PERMANENT_FAILURE_STRINGS = "carrier_data_call_permanent_failure_strings";
-    field public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_DCFAILURE_STRING_ARRAY = "carrier_default_actions_on_dcfailure_string_array";
-    field public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_DEFAULT_NETWORK_AVAILABLE = "carrier_default_actions_on_default_network_available_string_array";
-    field public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY = "carrier_default_actions_on_redirection_string_array";
-    field public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_RESET = "carrier_default_actions_on_reset_string_array";
-    field public static final String KEY_CARRIER_DEFAULT_REDIRECTION_URL_STRING_ARRAY = "carrier_default_redirection_url_string_array";
-    field public static final String KEY_CARRIER_DEFAULT_WFC_IMS_ENABLED_BOOL = "carrier_default_wfc_ims_enabled_bool";
-    field public static final String KEY_CARRIER_DEFAULT_WFC_IMS_MODE_INT = "carrier_default_wfc_ims_mode_int";
-    field public static final String KEY_CARRIER_DEFAULT_WFC_IMS_ROAMING_MODE_INT = "carrier_default_wfc_ims_roaming_mode_int";
-    field @Deprecated public static final String KEY_CARRIER_FORCE_DISABLE_ETWS_CMAS_TEST_BOOL = "carrier_force_disable_etws_cmas_test_bool";
-    field public static final String KEY_CARRIER_IMS_GBA_REQUIRED_BOOL = "carrier_ims_gba_required_bool";
-    field public static final String KEY_CARRIER_INSTANT_LETTERING_AVAILABLE_BOOL = "carrier_instant_lettering_available_bool";
-    field public static final String KEY_CARRIER_INSTANT_LETTERING_ENCODING_STRING = "carrier_instant_lettering_encoding_string";
-    field public static final String KEY_CARRIER_INSTANT_LETTERING_ESCAPED_CHARS_STRING = "carrier_instant_lettering_escaped_chars_string";
-    field public static final String KEY_CARRIER_INSTANT_LETTERING_INVALID_CHARS_STRING = "carrier_instant_lettering_invalid_chars_string";
-    field public static final String KEY_CARRIER_INSTANT_LETTERING_LENGTH_LIMIT_INT = "carrier_instant_lettering_length_limit_int";
-    field public static final String KEY_CARRIER_NAME_OVERRIDE_BOOL = "carrier_name_override_bool";
-    field public static final String KEY_CARRIER_NAME_STRING = "carrier_name_string";
-    field public static final String KEY_CARRIER_RCS_PROVISIONING_REQUIRED_BOOL = "carrier_rcs_provisioning_required_bool";
-    field public static final String KEY_CARRIER_SETTINGS_ACTIVITY_COMPONENT_NAME_STRING = "carrier_settings_activity_component_name_string";
-    field public static final String KEY_CARRIER_SETTINGS_ENABLE_BOOL = "carrier_settings_enable_bool";
-    field public static final String KEY_CARRIER_SUPPORTS_SS_OVER_UT_BOOL = "carrier_supports_ss_over_ut_bool";
-    field public static final String KEY_CARRIER_USE_IMS_FIRST_FOR_EMERGENCY_BOOL = "carrier_use_ims_first_for_emergency_bool";
-    field public static final String KEY_CARRIER_UT_PROVISIONING_REQUIRED_BOOL = "carrier_ut_provisioning_required_bool";
-    field public static final String KEY_CARRIER_VOLTE_AVAILABLE_BOOL = "carrier_volte_available_bool";
-    field public static final String KEY_CARRIER_VOLTE_OVERRIDE_WFC_PROVISIONING_BOOL = "carrier_volte_override_wfc_provisioning_bool";
-    field public static final String KEY_CARRIER_VOLTE_PROVISIONED_BOOL = "carrier_volte_provisioned_bool";
-    field public static final String KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL = "carrier_volte_provisioning_required_bool";
-    field public static final String KEY_CARRIER_VOLTE_TTY_SUPPORTED_BOOL = "carrier_volte_tty_supported_bool";
-    field public static final String KEY_CARRIER_VT_AVAILABLE_BOOL = "carrier_vt_available_bool";
-    field @Deprecated public static final String KEY_CARRIER_VVM_PACKAGE_NAME_STRING = "carrier_vvm_package_name_string";
-    field public static final String KEY_CARRIER_VVM_PACKAGE_NAME_STRING_ARRAY = "carrier_vvm_package_name_string_array";
-    field public static final String KEY_CARRIER_WFC_IMS_AVAILABLE_BOOL = "carrier_wfc_ims_available_bool";
-    field public static final String KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL = "carrier_wfc_supports_wifi_only_bool";
-    field public static final String KEY_CDMA_3WAYCALL_FLASH_DELAY_INT = "cdma_3waycall_flash_delay_int";
-    field public static final String KEY_CDMA_DTMF_TONE_DELAY_INT = "cdma_dtmf_tone_delay_int";
-    field public static final String KEY_CDMA_NONROAMING_NETWORKS_STRING_ARRAY = "cdma_nonroaming_networks_string_array";
-    field public static final String KEY_CDMA_ROAMING_MODE_INT = "cdma_roaming_mode_int";
-    field public static final String KEY_CDMA_ROAMING_NETWORKS_STRING_ARRAY = "cdma_roaming_networks_string_array";
-    field public static final String KEY_CHECK_PRICING_WITH_CARRIER_FOR_DATA_ROAMING_BOOL = "check_pricing_with_carrier_data_roaming_bool";
-    field public static final String KEY_CI_ACTION_ON_SYS_UPDATE_BOOL = "ci_action_on_sys_update_bool";
-    field public static final String KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_STRING = "ci_action_on_sys_update_extra_string";
-    field public static final String KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_VAL_STRING = "ci_action_on_sys_update_extra_val_string";
-    field public static final String KEY_CI_ACTION_ON_SYS_UPDATE_INTENT_STRING = "ci_action_on_sys_update_intent_string";
-    field public static final String KEY_CONFIG_IMS_MMTEL_PACKAGE_OVERRIDE_STRING = "config_ims_mmtel_package_override_string";
-    field @Deprecated public static final String KEY_CONFIG_IMS_PACKAGE_OVERRIDE_STRING = "config_ims_package_override_string";
-    field public static final String KEY_CONFIG_IMS_RCS_PACKAGE_OVERRIDE_STRING = "config_ims_rcs_package_override_string";
-    field public static final String KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING = "config_plans_package_override_string";
-    field public static final String KEY_CONFIG_TELEPHONY_USE_OWN_NUMBER_FOR_VOICEMAIL_BOOL = "config_telephony_use_own_number_for_voicemail_bool";
-    field public static final String KEY_CONFIG_WIFI_DISABLE_IN_ECBM = "config_wifi_disable_in_ecbm";
-    field public static final String KEY_CSP_ENABLED_BOOL = "csp_enabled_bool";
-    field public static final String KEY_DATA_LIMIT_NOTIFICATION_BOOL = "data_limit_notification_bool";
-    field public static final String KEY_DATA_LIMIT_THRESHOLD_BYTES_LONG = "data_limit_threshold_bytes_long";
-    field public static final String KEY_DATA_RAPID_NOTIFICATION_BOOL = "data_rapid_notification_bool";
-    field public static final String KEY_DATA_SWITCH_VALIDATION_TIMEOUT_LONG = "data_switch_validation_timeout_long";
-    field public static final String KEY_DATA_WARNING_NOTIFICATION_BOOL = "data_warning_notification_bool";
-    field public static final String KEY_DATA_WARNING_THRESHOLD_BYTES_LONG = "data_warning_threshold_bytes_long";
-    field public static final String KEY_DEFAULT_SIM_CALL_MANAGER_STRING = "default_sim_call_manager_string";
-    field public static final String KEY_DEFAULT_VM_NUMBER_ROAMING_AND_IMS_UNREGISTERED_STRING = "default_vm_number_roaming_and_ims_unregistered_string";
-    field public static final String KEY_DEFAULT_VM_NUMBER_STRING = "default_vm_number_string";
-    field public static final String KEY_DIAL_STRING_REPLACE_STRING_ARRAY = "dial_string_replace_string_array";
-    field public static final String KEY_DISABLE_CDMA_ACTIVATION_CODE_BOOL = "disable_cdma_activation_code_bool";
-    field public static final String KEY_DISABLE_CHARGE_INDICATION_BOOL = "disable_charge_indication_bool";
-    field public static final String KEY_DISABLE_SUPPLEMENTARY_SERVICES_IN_AIRPLANE_MODE_BOOL = "disable_supplementary_services_in_airplane_mode_bool";
-    field public static final String KEY_DISCONNECT_CAUSE_PLAY_BUSYTONE_INT_ARRAY = "disconnect_cause_play_busytone_int_array";
-    field public static final String KEY_DISPLAY_HD_AUDIO_PROPERTY_BOOL = "display_hd_audio_property_bool";
-    field public static final String KEY_DROP_VIDEO_CALL_WHEN_ANSWERING_AUDIO_CALL_BOOL = "drop_video_call_when_answering_audio_call_bool";
-    field public static final String KEY_DTMF_TYPE_ENABLED_BOOL = "dtmf_type_enabled_bool";
-    field public static final String KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT = "duration_blocking_disabled_after_emergency_int";
-    field public static final String KEY_EDITABLE_ENHANCED_4G_LTE_BOOL = "editable_enhanced_4g_lte_bool";
-    field public static final String KEY_EDITABLE_VOICEMAIL_NUMBER_BOOL = "editable_voicemail_number_bool";
-    field public static final String KEY_EDITABLE_VOICEMAIL_NUMBER_SETTING_BOOL = "editable_voicemail_number_setting_bool";
-    field public static final String KEY_EDITABLE_WFC_MODE_BOOL = "editable_wfc_mode_bool";
-    field public static final String KEY_EDITABLE_WFC_ROAMING_MODE_BOOL = "editable_wfc_roaming_mode_bool";
-    field public static final String KEY_EMERGENCY_NOTIFICATION_DELAY_INT = "emergency_notification_delay_int";
-    field public static final String KEY_EMERGENCY_NUMBER_PREFIX_STRING_ARRAY = "emergency_number_prefix_string_array";
-    field public static final String KEY_ENABLE_DIALER_KEY_VIBRATION_BOOL = "enable_dialer_key_vibration_bool";
-    field public static final String KEY_ENHANCED_4G_LTE_ON_BY_DEFAULT_BOOL = "enhanced_4g_lte_on_by_default_bool";
-    field public static final String KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT = "enhanced_4g_lte_title_variant_int";
-    field public static final String KEY_FORCE_HOME_NETWORK_BOOL = "force_home_network_bool";
-    field public static final String KEY_GSM_DTMF_TONE_DELAY_INT = "gsm_dtmf_tone_delay_int";
-    field public static final String KEY_GSM_NONROAMING_NETWORKS_STRING_ARRAY = "gsm_nonroaming_networks_string_array";
-    field public static final String KEY_GSM_ROAMING_NETWORKS_STRING_ARRAY = "gsm_roaming_networks_string_array";
-    field public static final String KEY_HAS_IN_CALL_NOISE_SUPPRESSION_BOOL = "has_in_call_noise_suppression_bool";
-    field public static final String KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL = "hide_carrier_network_settings_bool";
-    field public static final String KEY_HIDE_ENHANCED_4G_LTE_BOOL = "hide_enhanced_4g_lte_bool";
-    field public static final String KEY_HIDE_IMS_APN_BOOL = "hide_ims_apn_bool";
-    field public static final String KEY_HIDE_LTE_PLUS_DATA_ICON_BOOL = "hide_lte_plus_data_icon_bool";
-    field public static final String KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL = "hide_preferred_network_type_bool";
-    field public static final String KEY_HIDE_PRESET_APN_DETAILS_BOOL = "hide_preset_apn_details_bool";
-    field public static final String KEY_HIDE_SIM_LOCK_SETTINGS_BOOL = "hide_sim_lock_settings_bool";
-    field public static final String KEY_HIDE_TTY_HCO_VCO_WITH_RTT_BOOL = "hide_tty_hco_vco_with_rtt";
-    field public static final String KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS = "ignore_data_enabled_changed_for_video_calls";
-    field public static final String KEY_IGNORE_RTT_MODE_SETTING_BOOL = "ignore_rtt_mode_setting_bool";
-    field public static final String KEY_IGNORE_SIM_NETWORK_LOCKED_EVENTS_BOOL = "ignore_sim_network_locked_events_bool";
-    field public static final String KEY_IMS_CONFERENCE_SIZE_LIMIT_INT = "ims_conference_size_limit_int";
-    field public static final String KEY_IMS_DTMF_TONE_DELAY_INT = "ims_dtmf_tone_delay_int";
-    field public static final String KEY_IS_IMS_CONFERENCE_SIZE_ENFORCED_BOOL = "is_ims_conference_size_enforced_bool";
-    field public static final String KEY_LTE_ENABLED_BOOL = "lte_enabled_bool";
-    field public static final String KEY_LTE_RSRQ_THRESHOLDS_INT_ARRAY = "lte_rsrq_thresholds_int_array";
-    field public static final String KEY_LTE_RSSNR_THRESHOLDS_INT_ARRAY = "lte_rssnr_thresholds_int_array";
-    field public static final String KEY_MDN_IS_ADDITIONAL_VOICEMAIL_NUMBER_BOOL = "mdn_is_additional_voicemail_number_bool";
-    field public static final String KEY_MMS_ALIAS_ENABLED_BOOL = "aliasEnabled";
-    field public static final String KEY_MMS_ALIAS_MAX_CHARS_INT = "aliasMaxChars";
-    field public static final String KEY_MMS_ALIAS_MIN_CHARS_INT = "aliasMinChars";
-    field public static final String KEY_MMS_ALLOW_ATTACH_AUDIO_BOOL = "allowAttachAudio";
-    field public static final String KEY_MMS_APPEND_TRANSACTION_ID_BOOL = "enabledTransID";
-    field public static final String KEY_MMS_CLOSE_CONNECTION_BOOL = "mmsCloseConnection";
-    field public static final String KEY_MMS_EMAIL_GATEWAY_NUMBER_STRING = "emailGatewayNumber";
-    field public static final String KEY_MMS_GROUP_MMS_ENABLED_BOOL = "enableGroupMms";
-    field public static final String KEY_MMS_HTTP_PARAMS_STRING = "httpParams";
-    field public static final String KEY_MMS_HTTP_SOCKET_TIMEOUT_INT = "httpSocketTimeout";
-    field public static final String KEY_MMS_MAX_IMAGE_HEIGHT_INT = "maxImageHeight";
-    field public static final String KEY_MMS_MAX_IMAGE_WIDTH_INT = "maxImageWidth";
-    field public static final String KEY_MMS_MAX_MESSAGE_SIZE_INT = "maxMessageSize";
-    field public static final String KEY_MMS_MESSAGE_TEXT_MAX_SIZE_INT = "maxMessageTextSize";
-    field public static final String KEY_MMS_MMS_DELIVERY_REPORT_ENABLED_BOOL = "enableMMSDeliveryReports";
-    field public static final String KEY_MMS_MMS_ENABLED_BOOL = "enabledMMS";
-    field public static final String KEY_MMS_MMS_READ_REPORT_ENABLED_BOOL = "enableMMSReadReports";
-    field public static final String KEY_MMS_MULTIPART_SMS_ENABLED_BOOL = "enableMultipartSMS";
-    field public static final String KEY_MMS_NAI_SUFFIX_STRING = "naiSuffix";
-    field public static final String KEY_MMS_NOTIFY_WAP_MMSC_ENABLED_BOOL = "enabledNotifyWapMMSC";
-    field public static final String KEY_MMS_RECIPIENT_LIMIT_INT = "recipientLimit";
-    field public static final String KEY_MMS_SEND_MULTIPART_SMS_AS_SEPARATE_MESSAGES_BOOL = "sendMultipartSmsAsSeparateMessages";
-    field public static final String KEY_MMS_SHOW_CELL_BROADCAST_APP_LINKS_BOOL = "config_cellBroadcastAppLinks";
-    field public static final String KEY_MMS_SMS_DELIVERY_REPORT_ENABLED_BOOL = "enableSMSDeliveryReports";
-    field public static final String KEY_MMS_SMS_TO_MMS_TEXT_LENGTH_THRESHOLD_INT = "smsToMmsTextLengthThreshold";
-    field public static final String KEY_MMS_SMS_TO_MMS_TEXT_THRESHOLD_INT = "smsToMmsTextThreshold";
-    field public static final String KEY_MMS_SUBJECT_MAX_LENGTH_INT = "maxSubjectLength";
-    field public static final String KEY_MMS_SUPPORT_HTTP_CHARSET_HEADER_BOOL = "supportHttpCharsetHeader";
-    field public static final String KEY_MMS_SUPPORT_MMS_CONTENT_DISPOSITION_BOOL = "supportMmsContentDisposition";
-    field public static final String KEY_MMS_UA_PROF_TAG_NAME_STRING = "uaProfTagName";
-    field public static final String KEY_MMS_UA_PROF_URL_STRING = "uaProfUrl";
-    field public static final String KEY_MMS_USER_AGENT_STRING = "userAgent";
-    field public static final String KEY_MONTHLY_DATA_CYCLE_DAY_INT = "monthly_data_cycle_day_int";
-    field public static final String KEY_ONLY_AUTO_SELECT_IN_HOME_NETWORK_BOOL = "only_auto_select_in_home_network";
-    field public static final String KEY_ONLY_SINGLE_DC_ALLOWED_INT_ARRAY = "only_single_dc_allowed_int_array";
-    field public static final String KEY_OPERATOR_SELECTION_EXPAND_BOOL = "operator_selection_expand_bool";
-    field public static final String KEY_OPPORTUNISTIC_NETWORK_BACKOFF_TIME_LONG = "opportunistic_network_backoff_time_long";
-    field public static final String KEY_OPPORTUNISTIC_NETWORK_DATA_SWITCH_EXIT_HYSTERESIS_TIME_LONG = "opportunistic_network_data_switch_exit_hysteresis_time_long";
-    field public static final String KEY_OPPORTUNISTIC_NETWORK_DATA_SWITCH_HYSTERESIS_TIME_LONG = "opportunistic_network_data_switch_hysteresis_time_long";
-    field public static final String KEY_OPPORTUNISTIC_NETWORK_ENTRY_OR_EXIT_HYSTERESIS_TIME_LONG = "opportunistic_network_entry_or_exit_hysteresis_time_long";
-    field public static final String KEY_OPPORTUNISTIC_NETWORK_ENTRY_THRESHOLD_BANDWIDTH_INT = "opportunistic_network_entry_threshold_bandwidth_int";
-    field public static final String KEY_OPPORTUNISTIC_NETWORK_ENTRY_THRESHOLD_RSRP_INT = "opportunistic_network_entry_threshold_rsrp_int";
-    field public static final String KEY_OPPORTUNISTIC_NETWORK_ENTRY_THRESHOLD_RSSNR_INT = "opportunistic_network_entry_threshold_rssnr_int";
-    field public static final String KEY_OPPORTUNISTIC_NETWORK_EXIT_THRESHOLD_RSRP_INT = "opportunistic_network_exit_threshold_rsrp_int";
-    field public static final String KEY_OPPORTUNISTIC_NETWORK_EXIT_THRESHOLD_RSSNR_INT = "opportunistic_network_exit_threshold_rssnr_int";
-    field public static final String KEY_OPPORTUNISTIC_NETWORK_MAX_BACKOFF_TIME_LONG = "opportunistic_network_max_backoff_time_long";
-    field public static final String KEY_OPPORTUNISTIC_NETWORK_PING_PONG_TIME_LONG = "opportunistic_network_ping_pong_time_long";
-    field public static final String KEY_PING_TEST_BEFORE_DATA_SWITCH_BOOL = "ping_test_before_data_switch_bool";
-    field public static final String KEY_PREFER_2G_BOOL = "prefer_2g_bool";
-    field public static final String KEY_PREVENT_CLIR_ACTIVATION_AND_DEACTIVATION_CODE_BOOL = "prevent_clir_activation_and_deactivation_code_bool";
-    field public static final String KEY_RADIO_RESTART_FAILURE_CAUSES_INT_ARRAY = "radio_restart_failure_causes_int_array";
-    field public static final String KEY_RCS_CONFIG_SERVER_URL_STRING = "rcs_config_server_url_string";
-    field public static final String KEY_READ_ONLY_APN_FIELDS_STRING_ARRAY = "read_only_apn_fields_string_array";
-    field public static final String KEY_READ_ONLY_APN_TYPES_STRING_ARRAY = "read_only_apn_types_string_array";
-    field public static final String KEY_REQUIRE_ENTITLEMENT_CHECKS_BOOL = "require_entitlement_checks_bool";
-    field @Deprecated public static final String KEY_RESTART_RADIO_ON_PDP_FAIL_REGULAR_DEACTIVATION_BOOL = "restart_radio_on_pdp_fail_regular_deactivation_bool";
-    field public static final String KEY_RTT_AUTO_UPGRADE_BOOL = "rtt_auto_upgrade_bool";
-    field public static final String KEY_RTT_DOWNGRADE_SUPPORTED_BOOL = "rtt_downgrade_supported_bool";
-    field public static final String KEY_RTT_SUPPORTED_BOOL = "rtt_supported_bool";
-    field public static final String KEY_RTT_SUPPORTED_FOR_VT_BOOL = "rtt_supported_for_vt_bool";
-    field public static final String KEY_RTT_UPGRADE_SUPPORTED_BOOL = "rtt_upgrade_supported_bool";
-    field public static final String KEY_SHOW_4G_FOR_3G_DATA_ICON_BOOL = "show_4g_for_3g_data_icon_bool";
-    field public static final String KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL = "show_4g_for_lte_data_icon_bool";
-    field public static final String KEY_SHOW_APN_SETTING_CDMA_BOOL = "show_apn_setting_cdma_bool";
-    field public static final String KEY_SHOW_BLOCKING_PAY_PHONE_OPTION_BOOL = "show_blocking_pay_phone_option_bool";
-    field public static final String KEY_SHOW_CALL_BLOCKING_DISABLED_NOTIFICATION_ALWAYS_BOOL = "show_call_blocking_disabled_notification_always_bool";
-    field public static final String KEY_SHOW_CDMA_CHOICES_BOOL = "show_cdma_choices_bool";
-    field public static final String KEY_SHOW_FORWARDED_NUMBER_BOOL = "show_forwarded_number_bool";
-    field public static final String KEY_SHOW_ICCID_IN_SIM_STATUS_BOOL = "show_iccid_in_sim_status_bool";
-    field public static final String KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL = "show_ims_registration_status_bool";
-    field public static final String KEY_SHOW_ONSCREEN_DIAL_BUTTON_BOOL = "show_onscreen_dial_button_bool";
-    field public static final String KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL = "show_signal_strength_in_sim_status_bool";
-    field public static final String KEY_SHOW_VIDEO_CALL_CHARGES_ALERT_DIALOG_BOOL = "show_video_call_charges_alert_dialog_bool";
-    field public static final String KEY_SHOW_WFC_LOCATION_PRIVACY_POLICY_BOOL = "show_wfc_location_privacy_policy_bool";
-    field public static final String KEY_SIMPLIFIED_NETWORK_SETTINGS_BOOL = "simplified_network_settings_bool";
-    field public static final String KEY_SIM_NETWORK_UNLOCK_ALLOW_DISMISS_BOOL = "sim_network_unlock_allow_dismiss_bool";
-    field public static final String KEY_SMS_REQUIRES_DESTINATION_NUMBER_CONVERSION_BOOL = "sms_requires_destination_number_conversion_bool";
-    field public static final String KEY_SUPPORT_3GPP_CALL_FORWARDING_WHILE_ROAMING_BOOL = "support_3gpp_call_forwarding_while_roaming_bool";
-    field public static final String KEY_SUPPORT_ADD_CONFERENCE_PARTICIPANTS_BOOL = "support_add_conference_participants_bool";
-    field public static final String KEY_SUPPORT_ADHOC_CONFERENCE_CALLS_BOOL = "support_adhoc_conference_calls_bool";
-    field public static final String KEY_SUPPORT_CLIR_NETWORK_DEFAULT_BOOL = "support_clir_network_default_bool";
-    field public static final String KEY_SUPPORT_CONFERENCE_CALL_BOOL = "support_conference_call_bool";
-    field public static final String KEY_SUPPORT_EMERGENCY_SMS_OVER_IMS_BOOL = "support_emergency_sms_over_ims_bool";
-    field public static final String KEY_SUPPORT_ENHANCED_CALL_BLOCKING_BOOL = "support_enhanced_call_blocking_bool";
-    field public static final String KEY_SUPPORT_IMS_CONFERENCE_EVENT_PACKAGE_BOOL = "support_ims_conference_event_package_bool";
-    field public static final String KEY_SUPPORT_PAUSE_IMS_VIDEO_CALLS_BOOL = "support_pause_ims_video_calls_bool";
-    field public static final String KEY_SUPPORT_SWAP_AFTER_MERGE_BOOL = "support_swap_after_merge_bool";
-    field public static final String KEY_SUPPORT_TDSCDMA_BOOL = "support_tdscdma_bool";
-    field public static final String KEY_SUPPORT_TDSCDMA_ROAMING_NETWORKS_STRING_ARRAY = "support_tdscdma_roaming_networks_string_array";
-    field public static final String KEY_SWITCH_DATA_TO_PRIMARY_IF_PRIMARY_IS_OOS_BOOL = "switch_data_to_primary_if_primary_is_oos_bool";
-    field public static final String KEY_TREAT_DOWNGRADED_VIDEO_CALLS_AS_VIDEO_CALLS_BOOL = "treat_downgraded_video_calls_as_video_calls_bool";
-    field public static final String KEY_TTY_SUPPORTED_BOOL = "tty_supported_bool";
-    field public static final String KEY_UNLOGGABLE_NUMBERS_STRING_ARRAY = "unloggable_numbers_string_array";
-    field public static final String KEY_USE_HFA_FOR_PROVISIONING_BOOL = "use_hfa_for_provisioning_bool";
-    field public static final String KEY_USE_OTASP_FOR_PROVISIONING_BOOL = "use_otasp_for_provisioning_bool";
-    field public static final String KEY_USE_RCS_PRESENCE_BOOL = "use_rcs_presence_bool";
-    field public static final String KEY_USE_RCS_SIP_OPTIONS_BOOL = "use_rcs_sip_options_bool";
-    field public static final String KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL = "use_wfc_home_network_mode_in_roaming_network_bool";
-    field public static final String KEY_VOICEMAIL_NOTIFICATION_PERSISTENT_BOOL = "voicemail_notification_persistent_bool";
-    field public static final String KEY_VOICE_PRIVACY_DISABLE_UI_BOOL = "voice_privacy_disable_ui_bool";
-    field public static final String KEY_VOLTE_REPLACEMENT_RAT_INT = "volte_replacement_rat_int";
-    field public static final String KEY_VVM_CELLULAR_DATA_REQUIRED_BOOL = "vvm_cellular_data_required_bool";
-    field public static final String KEY_VVM_CLIENT_PREFIX_STRING = "vvm_client_prefix_string";
-    field public static final String KEY_VVM_DESTINATION_NUMBER_STRING = "vvm_destination_number_string";
-    field public static final String KEY_VVM_DISABLED_CAPABILITIES_STRING_ARRAY = "vvm_disabled_capabilities_string_array";
-    field public static final String KEY_VVM_LEGACY_MODE_ENABLED_BOOL = "vvm_legacy_mode_enabled_bool";
-    field public static final String KEY_VVM_PORT_NUMBER_INT = "vvm_port_number_int";
-    field public static final String KEY_VVM_PREFETCH_BOOL = "vvm_prefetch_bool";
-    field public static final String KEY_VVM_SSL_ENABLED_BOOL = "vvm_ssl_enabled_bool";
-    field public static final String KEY_VVM_TYPE_STRING = "vvm_type_string";
-    field public static final String KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING = "wfc_emergency_address_carrier_app_string";
-    field public static final String KEY_WORLD_MODE_ENABLED_BOOL = "world_mode_enabled_bool";
-    field public static final String KEY_WORLD_PHONE_BOOL = "world_phone_bool";
-    field public static final int SERVICE_CLASS_NONE = 0; // 0x0
-    field public static final int SERVICE_CLASS_VOICE = 1; // 0x1
-  }
-
-  public static final class CarrierConfigManager.Apn {
-    field public static final String KEY_PREFIX = "apn.";
-    field public static final String KEY_SETTINGS_DEFAULT_PROTOCOL_STRING = "apn.settings_default_protocol_string";
-    field public static final String KEY_SETTINGS_DEFAULT_ROAMING_PROTOCOL_STRING = "apn.settings_default_roaming_protocol_string";
-    field public static final String PROTOCOL_IPV4 = "IP";
-    field public static final String PROTOCOL_IPV4V6 = "IPV4V6";
-    field public static final String PROTOCOL_IPV6 = "IPV6";
-  }
-
-  public static final class CarrierConfigManager.Gps {
-    field public static final String KEY_PERSIST_LPP_MODE_BOOL = "gps.persist_lpp_mode_bool";
-    field public static final String KEY_PREFIX = "gps.";
-  }
-
-  public static final class CarrierConfigManager.Ims {
-    field public static final String KEY_PREFIX = "ims.";
-    field public static final String KEY_WIFI_OFF_DEFERRING_TIME_MILLIS_INT = "ims.wifi_off_deferring_time_millis_int";
-  }
-
-  public abstract class CellIdentity implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public CharSequence getOperatorAlphaLong();
-    method @Nullable public CharSequence getOperatorAlphaShort();
-    method @CallSuper public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellIdentity> CREATOR;
-  }
-
-  public final class CellIdentityCdma extends android.telephony.CellIdentity {
-    method public int getBasestationId();
-    method public int getLatitude();
-    method public int getLongitude();
-    method public int getNetworkId();
-    method public int getSystemId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellIdentityCdma> CREATOR;
-  }
-
-  public final class CellIdentityGsm extends android.telephony.CellIdentity {
-    method @NonNull public java.util.Set<java.lang.String> getAdditionalPlmns();
-    method public int getArfcn();
-    method public int getBsic();
-    method public int getCid();
-    method public int getLac();
-    method @Deprecated public int getMcc();
-    method @Nullable public String getMccString();
-    method @Deprecated public int getMnc();
-    method @Nullable public String getMncString();
-    method @Nullable public String getMobileNetworkOperator();
-    method @Deprecated public int getPsc();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellIdentityGsm> CREATOR;
-  }
-
-  public final class CellIdentityLte extends android.telephony.CellIdentity {
-    method @NonNull public java.util.Set<java.lang.String> getAdditionalPlmns();
-    method @NonNull public int[] getBands();
-    method public int getBandwidth();
-    method public int getCi();
-    method @Nullable public android.telephony.ClosedSubscriberGroupInfo getClosedSubscriberGroupInfo();
-    method public int getEarfcn();
-    method @Deprecated public int getMcc();
-    method @Nullable public String getMccString();
-    method @Deprecated public int getMnc();
-    method @Nullable public String getMncString();
-    method @Nullable public String getMobileNetworkOperator();
-    method public int getPci();
-    method public int getTac();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellIdentityLte> CREATOR;
-  }
-
-  public final class CellIdentityNr extends android.telephony.CellIdentity {
-    method @NonNull public java.util.Set<java.lang.String> getAdditionalPlmns();
-    method @NonNull public int[] getBands();
-    method @Nullable public String getMccString();
-    method @Nullable public String getMncString();
-    method public long getNci();
-    method @IntRange(from=0, to=3279165) public int getNrarfcn();
-    method @IntRange(from=0, to=1007) public int getPci();
-    method @IntRange(from=0, to=65535) public int getTac();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellIdentityNr> CREATOR;
-  }
-
-  public final class CellIdentityTdscdma extends android.telephony.CellIdentity {
-    method @NonNull public java.util.Set<java.lang.String> getAdditionalPlmns();
-    method public int getCid();
-    method @Nullable public android.telephony.ClosedSubscriberGroupInfo getClosedSubscriberGroupInfo();
-    method public int getCpid();
-    method public int getLac();
-    method @Nullable public String getMccString();
-    method @Nullable public String getMncString();
-    method @Nullable public String getMobileNetworkOperator();
-    method public int getUarfcn();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellIdentityTdscdma> CREATOR;
-  }
-
-  public final class CellIdentityWcdma extends android.telephony.CellIdentity {
-    method @NonNull public java.util.Set<java.lang.String> getAdditionalPlmns();
-    method public int getCid();
-    method @Nullable public android.telephony.ClosedSubscriberGroupInfo getClosedSubscriberGroupInfo();
-    method public int getLac();
-    method @Deprecated public int getMcc();
-    method @Nullable public String getMccString();
-    method @Deprecated public int getMnc();
-    method @Nullable public String getMncString();
-    method @Nullable public String getMobileNetworkOperator();
-    method public int getPsc();
-    method public int getUarfcn();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellIdentityWcdma> CREATOR;
-  }
-
-  public abstract class CellInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getCellConnectionStatus();
-    method @NonNull public abstract android.telephony.CellIdentity getCellIdentity();
-    method @NonNull public abstract android.telephony.CellSignalStrength getCellSignalStrength();
-    method @Deprecated public long getTimeStamp();
-    method public long getTimestampMillis();
-    method public boolean isRegistered();
-    field public static final int CONNECTION_NONE = 0; // 0x0
-    field public static final int CONNECTION_PRIMARY_SERVING = 1; // 0x1
-    field public static final int CONNECTION_SECONDARY_SERVING = 2; // 0x2
-    field public static final int CONNECTION_UNKNOWN = 2147483647; // 0x7fffffff
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellInfo> CREATOR;
-    field public static final int UNAVAILABLE = 2147483647; // 0x7fffffff
-    field public static final long UNAVAILABLE_LONG = 9223372036854775807L; // 0x7fffffffffffffffL
-  }
-
-  public final class CellInfoCdma extends android.telephony.CellInfo implements android.os.Parcelable {
-    method @NonNull public android.telephony.CellIdentityCdma getCellIdentity();
-    method @NonNull public android.telephony.CellSignalStrengthCdma getCellSignalStrength();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellInfoCdma> CREATOR;
-  }
-
-  public final class CellInfoGsm extends android.telephony.CellInfo implements android.os.Parcelable {
-    method @NonNull public android.telephony.CellIdentityGsm getCellIdentity();
-    method @NonNull public android.telephony.CellSignalStrengthGsm getCellSignalStrength();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellInfoGsm> CREATOR;
-  }
-
-  public final class CellInfoLte extends android.telephony.CellInfo implements android.os.Parcelable {
-    method @NonNull public android.telephony.CellIdentityLte getCellIdentity();
-    method @NonNull public android.telephony.CellSignalStrengthLte getCellSignalStrength();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellInfoLte> CREATOR;
-  }
-
-  public final class CellInfoNr extends android.telephony.CellInfo {
-    method @NonNull public android.telephony.CellIdentity getCellIdentity();
-    method @NonNull public android.telephony.CellSignalStrength getCellSignalStrength();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellInfoNr> CREATOR;
-  }
-
-  public final class CellInfoTdscdma extends android.telephony.CellInfo implements android.os.Parcelable {
-    method @NonNull public android.telephony.CellIdentityTdscdma getCellIdentity();
-    method @NonNull public android.telephony.CellSignalStrengthTdscdma getCellSignalStrength();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellInfoTdscdma> CREATOR;
-  }
-
-  public final class CellInfoWcdma extends android.telephony.CellInfo implements android.os.Parcelable {
-    method public android.telephony.CellIdentityWcdma getCellIdentity();
-    method public android.telephony.CellSignalStrengthWcdma getCellSignalStrength();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellInfoWcdma> CREATOR;
-  }
-
-  public abstract class CellLocation {
-    ctor public CellLocation();
-    method public static android.telephony.CellLocation getEmpty();
-    method @Deprecated public static void requestLocationUpdate();
-  }
-
-  public abstract class CellSignalStrength {
-    method public abstract boolean equals(Object);
-    method public abstract int getAsuLevel();
-    method public abstract int getDbm();
-    method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public abstract int getLevel();
-    method public abstract int hashCode();
-    field public static final int SIGNAL_STRENGTH_GOOD = 3; // 0x3
-    field public static final int SIGNAL_STRENGTH_GREAT = 4; // 0x4
-    field public static final int SIGNAL_STRENGTH_MODERATE = 2; // 0x2
-    field public static final int SIGNAL_STRENGTH_NONE_OR_UNKNOWN = 0; // 0x0
-    field public static final int SIGNAL_STRENGTH_POOR = 1; // 0x1
-  }
-
-  public final class CellSignalStrengthCdma extends android.telephony.CellSignalStrength implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAsuLevel();
-    method public int getCdmaDbm();
-    method public int getCdmaEcio();
-    method public int getCdmaLevel();
-    method public int getDbm();
-    method public int getEvdoDbm();
-    method public int getEvdoEcio();
-    method public int getEvdoLevel();
-    method public int getEvdoSnr();
-    method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public int getLevel();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthCdma> CREATOR;
-  }
-
-  public final class CellSignalStrengthGsm extends android.telephony.CellSignalStrength implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAsuLevel();
-    method public int getBitErrorRate();
-    method public int getDbm();
-    method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public int getLevel();
-    method public int getRssi();
-    method public int getTimingAdvance();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthGsm> CREATOR;
-  }
-
-  public final class CellSignalStrengthLte extends android.telephony.CellSignalStrength implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAsuLevel();
-    method public int getCqi();
-    method public int getDbm();
-    method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public int getLevel();
-    method public int getRsrp();
-    method public int getRsrq();
-    method public int getRssi();
-    method public int getRssnr();
-    method public int getTimingAdvance();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthLte> CREATOR;
-  }
-
-  public final class CellSignalStrengthNr extends android.telephony.CellSignalStrength implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAsuLevel();
-    method public int getCsiRsrp();
-    method public int getCsiRsrq();
-    method public int getCsiSinr();
-    method public int getDbm();
-    method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public int getLevel();
-    method public int getSsRsrp();
-    method public int getSsRsrq();
-    method public int getSsSinr();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthNr> CREATOR;
-  }
-
-  public final class CellSignalStrengthTdscdma extends android.telephony.CellSignalStrength implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAsuLevel();
-    method public int getDbm();
-    method @IntRange(from=0, to=4) public int getLevel();
-    method public int getRscp();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthTdscdma> CREATOR;
-  }
-
-  public final class CellSignalStrengthWcdma extends android.telephony.CellSignalStrength implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAsuLevel();
-    method public int getDbm();
-    method public int getEcNo();
-    method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public int getLevel();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthWcdma> CREATOR;
-  }
-
-  public final class ClosedSubscriberGroupInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @IntRange(from=0, to=134217727) public int getCsgIdentity();
-    method public boolean getCsgIndicator();
-    method @NonNull public String getHomeNodebName();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ClosedSubscriberGroupInfo> CREATOR;
-  }
-
-  public final class DataFailCause {
-    field public static final int ACCESS_ATTEMPT_ALREADY_IN_PROGRESS = 2219; // 0x8ab
-    field public static final int ACCESS_BLOCK = 2087; // 0x827
-    field public static final int ACCESS_BLOCK_ALL = 2088; // 0x828
-    field public static final int ACCESS_CLASS_DSAC_REJECTION = 2108; // 0x83c
-    field public static final int ACCESS_CONTROL_LIST_CHECK_FAILURE = 2128; // 0x850
-    field public static final int ACTIVATION_REJECTED_BCM_VIOLATION = 48; // 0x30
-    field public static final int ACTIVATION_REJECT_GGSN = 30; // 0x1e
-    field public static final int ACTIVATION_REJECT_UNSPECIFIED = 31; // 0x1f
-    field public static final int ACTIVE_PDP_CONTEXT_MAX_NUMBER_REACHED = 65; // 0x41
-    field public static final int APN_DISABLED = 2045; // 0x7fd
-    field public static final int APN_DISALLOWED_ON_ROAMING = 2059; // 0x80b
-    field public static final int APN_MISMATCH = 2054; // 0x806
-    field public static final int APN_PARAMETERS_CHANGED = 2060; // 0x80c
-    field public static final int APN_PENDING_HANDOVER = 2041; // 0x7f9
-    field public static final int APN_TYPE_CONFLICT = 112; // 0x70
-    field public static final int AUTH_FAILURE_ON_EMERGENCY_CALL = 122; // 0x7a
-    field public static final int BEARER_HANDLING_NOT_SUPPORTED = 60; // 0x3c
-    field public static final int CALL_DISALLOWED_IN_ROAMING = 2068; // 0x814
-    field public static final int CALL_PREEMPT_BY_EMERGENCY_APN = 127; // 0x7f
-    field public static final int CANNOT_ENCODE_OTA_MESSAGE = 2159; // 0x86f
-    field public static final int CDMA_ALERT_STOP = 2077; // 0x81d
-    field public static final int CDMA_INCOMING_CALL = 2076; // 0x81c
-    field public static final int CDMA_INTERCEPT = 2073; // 0x819
-    field public static final int CDMA_LOCK = 2072; // 0x818
-    field public static final int CDMA_RELEASE_DUE_TO_SO_REJECTION = 2075; // 0x81b
-    field public static final int CDMA_REORDER = 2074; // 0x81a
-    field public static final int CDMA_RETRY_ORDER = 2086; // 0x826
-    field public static final int CHANNEL_ACQUISITION_FAILURE = 2078; // 0x81e
-    field public static final int CLOSE_IN_PROGRESS = 2030; // 0x7ee
-    field public static final int COLLISION_WITH_NETWORK_INITIATED_REQUEST = 56; // 0x38
-    field public static final int COMPANION_IFACE_IN_USE = 118; // 0x76
-    field public static final int CONCURRENT_SERVICES_INCOMPATIBLE = 2083; // 0x823
-    field public static final int CONCURRENT_SERVICES_NOT_ALLOWED = 2091; // 0x82b
-    field public static final int CONCURRENT_SERVICE_NOT_SUPPORTED_BY_BASE_STATION = 2080; // 0x820
-    field public static final int CONDITIONAL_IE_ERROR = 100; // 0x64
-    field public static final int CONGESTION = 2106; // 0x83a
-    field public static final int CONNECTION_RELEASED = 2113; // 0x841
-    field public static final int CS_DOMAIN_NOT_AVAILABLE = 2181; // 0x885
-    field public static final int CS_FALLBACK_CALL_ESTABLISHMENT_NOT_ALLOWED = 2188; // 0x88c
-    field public static final int DATA_PLAN_EXPIRED = 2198; // 0x896
-    field public static final int DATA_ROAMING_SETTINGS_DISABLED = 2064; // 0x810
-    field public static final int DATA_SETTINGS_DISABLED = 2063; // 0x80f
-    field public static final int DBM_OR_SMS_IN_PROGRESS = 2211; // 0x8a3
-    field public static final int DDS_SWITCHED = 2065; // 0x811
-    field public static final int DDS_SWITCH_IN_PROGRESS = 2067; // 0x813
-    field public static final int DRB_RELEASED_BY_RRC = 2112; // 0x840
-    field public static final int DS_EXPLICIT_DEACTIVATION = 2125; // 0x84d
-    field public static final int DUAL_SWITCH = 2227; // 0x8b3
-    field public static final int DUN_CALL_DISALLOWED = 2056; // 0x808
-    field public static final int DUPLICATE_BEARER_ID = 2118; // 0x846
-    field public static final int EHRPD_TO_HRPD_FALLBACK = 2049; // 0x801
-    field public static final int EMBMS_NOT_ENABLED = 2193; // 0x891
-    field public static final int EMBMS_REGULAR_DEACTIVATION = 2195; // 0x893
-    field public static final int EMERGENCY_IFACE_ONLY = 116; // 0x74
-    field public static final int EMERGENCY_MODE = 2221; // 0x8ad
-    field public static final int EMM_ACCESS_BARRED = 115; // 0x73
-    field public static final int EMM_ACCESS_BARRED_INFINITE_RETRY = 121; // 0x79
-    field public static final int EMM_ATTACH_FAILED = 2115; // 0x843
-    field public static final int EMM_ATTACH_STARTED = 2116; // 0x844
-    field public static final int EMM_DETACHED = 2114; // 0x842
-    field public static final int EMM_T3417_EXPIRED = 2130; // 0x852
-    field public static final int EMM_T3417_EXT_EXPIRED = 2131; // 0x853
-    field public static final int EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED = 2178; // 0x882
-    field public static final int EPS_SERVICES_NOT_ALLOWED_IN_PLMN = 2179; // 0x883
-    field public static final int ERROR_UNSPECIFIED = 65535; // 0xffff
-    field public static final int ESM_BAD_OTA_MESSAGE = 2122; // 0x84a
-    field public static final int ESM_BEARER_DEACTIVATED_TO_SYNC_WITH_NETWORK = 2120; // 0x848
-    field public static final int ESM_COLLISION_SCENARIOS = 2119; // 0x847
-    field public static final int ESM_CONTEXT_TRANSFERRED_DUE_TO_IRAT = 2124; // 0x84c
-    field public static final int ESM_DOWNLOAD_SERVER_REJECTED_THE_CALL = 2123; // 0x84b
-    field public static final int ESM_FAILURE = 2182; // 0x886
-    field public static final int ESM_INFO_NOT_RECEIVED = 53; // 0x35
-    field public static final int ESM_LOCAL_CAUSE_NONE = 2126; // 0x84e
-    field public static final int ESM_NW_ACTIVATED_DED_BEARER_WITH_ID_OF_DEF_BEARER = 2121; // 0x849
-    field public static final int ESM_PROCEDURE_TIME_OUT = 2155; // 0x86b
-    field public static final int ESM_UNKNOWN_EPS_BEARER_CONTEXT = 2111; // 0x83f
-    field public static final int EVDO_CONNECTION_DENY_BY_BILLING_OR_AUTHENTICATION_FAILURE = 2201; // 0x899
-    field public static final int EVDO_CONNECTION_DENY_BY_GENERAL_OR_NETWORK_BUSY = 2200; // 0x898
-    field public static final int EVDO_HDR_CHANGED = 2202; // 0x89a
-    field public static final int EVDO_HDR_CONNECTION_SETUP_TIMEOUT = 2206; // 0x89e
-    field public static final int EVDO_HDR_EXITED = 2203; // 0x89b
-    field public static final int EVDO_HDR_NO_SESSION = 2204; // 0x89c
-    field public static final int EVDO_USING_GPS_FIX_INSTEAD_OF_HDR_CALL = 2205; // 0x89d
-    field public static final int FADE = 2217; // 0x8a9
-    field public static final int FAILED_TO_ACQUIRE_COLOCATED_HDR = 2207; // 0x89f
-    field public static final int FEATURE_NOT_SUPP = 40; // 0x28
-    field public static final int FILTER_SEMANTIC_ERROR = 44; // 0x2c
-    field public static final int FILTER_SYTAX_ERROR = 45; // 0x2d
-    field public static final int FORBIDDEN_APN_NAME = 2066; // 0x812
-    field public static final int GPRS_REGISTRATION_FAIL = -2; // 0xfffffffe
-    field public static final int GPRS_SERVICES_AND_NON_GPRS_SERVICES_NOT_ALLOWED = 2097; // 0x831
-    field public static final int GPRS_SERVICES_NOT_ALLOWED = 2098; // 0x832
-    field public static final int GPRS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN = 2103; // 0x837
-    field public static final int HANDOFF_PREFERENCE_CHANGED = 2251; // 0x8cb
-    field public static final int HDR_ACCESS_FAILURE = 2213; // 0x8a5
-    field public static final int HDR_FADE = 2212; // 0x8a4
-    field public static final int HDR_NO_LOCK_GRANTED = 2210; // 0x8a2
-    field public static final int IFACE_AND_POL_FAMILY_MISMATCH = 120; // 0x78
-    field public static final int IFACE_MISMATCH = 117; // 0x75
-    field public static final int ILLEGAL_ME = 2096; // 0x830
-    field public static final int ILLEGAL_MS = 2095; // 0x82f
-    field public static final int IMEI_NOT_ACCEPTED = 2177; // 0x881
-    field public static final int IMPLICITLY_DETACHED = 2100; // 0x834
-    field public static final int IMSI_UNKNOWN_IN_HOME_SUBSCRIBER_SERVER = 2176; // 0x880
-    field public static final int INCOMING_CALL_REJECTED = 2092; // 0x82c
-    field public static final int INSUFFICIENT_RESOURCES = 26; // 0x1a
-    field public static final int INTERFACE_IN_USE = 2058; // 0x80a
-    field public static final int INTERNAL_CALL_PREEMPT_BY_HIGH_PRIO_APN = 114; // 0x72
-    field public static final int INTERNAL_EPC_NONEPC_TRANSITION = 2057; // 0x809
-    field public static final int INVALID_CONNECTION_ID = 2156; // 0x86c
-    field public static final int INVALID_DNS_ADDR = 123; // 0x7b
-    field public static final int INVALID_EMM_STATE = 2190; // 0x88e
-    field public static final int INVALID_MANDATORY_INFO = 96; // 0x60
-    field public static final int INVALID_MODE = 2223; // 0x8af
-    field public static final int INVALID_PCSCF_ADDR = 113; // 0x71
-    field public static final int INVALID_PCSCF_OR_DNS_ADDRESS = 124; // 0x7c
-    field public static final int INVALID_PRIMARY_NSAPI = 2158; // 0x86e
-    field public static final int INVALID_SIM_STATE = 2224; // 0x8b0
-    field public static final int INVALID_TRANSACTION_ID = 81; // 0x51
-    field public static final int IPV6_ADDRESS_TRANSFER_FAILED = 2047; // 0x7ff
-    field public static final int IPV6_PREFIX_UNAVAILABLE = 2250; // 0x8ca
-    field public static final int IP_ADDRESS_MISMATCH = 119; // 0x77
-    field public static final int IP_VERSION_MISMATCH = 2055; // 0x807
-    field public static final int IRAT_HANDOVER_FAILED = 2194; // 0x892
-    field public static final int IS707B_MAX_ACCESS_PROBES = 2089; // 0x829
-    field public static final int LIMITED_TO_IPV4 = 2234; // 0x8ba
-    field public static final int LIMITED_TO_IPV6 = 2235; // 0x8bb
-    field public static final int LLC_SNDCP = 25; // 0x19
-    field public static final int LOCAL_END = 2215; // 0x8a7
-    field public static final int LOCATION_AREA_NOT_ALLOWED = 2102; // 0x836
-    field public static final int LOST_CONNECTION = 65540; // 0x10004
-    field public static final int LOWER_LAYER_REGISTRATION_FAILURE = 2197; // 0x895
-    field public static final int LOW_POWER_MODE_OR_POWERING_DOWN = 2044; // 0x7fc
-    field public static final int LTE_NAS_SERVICE_REQUEST_FAILED = 2117; // 0x845
-    field public static final int LTE_THROTTLING_NOT_REQUIRED = 2127; // 0x84f
-    field public static final int MAC_FAILURE = 2183; // 0x887
-    field public static final int MAXIMIUM_NSAPIS_EXCEEDED = 2157; // 0x86d
-    field public static final int MAXINUM_SIZE_OF_L2_MESSAGE_EXCEEDED = 2166; // 0x876
-    field public static final int MAX_ACCESS_PROBE = 2079; // 0x81f
-    field public static final int MAX_IPV4_CONNECTIONS = 2052; // 0x804
-    field public static final int MAX_IPV6_CONNECTIONS = 2053; // 0x805
-    field public static final int MAX_PPP_INACTIVITY_TIMER_EXPIRED = 2046; // 0x7fe
-    field public static final int MESSAGE_INCORRECT_SEMANTIC = 95; // 0x5f
-    field public static final int MESSAGE_TYPE_UNSUPPORTED = 97; // 0x61
-    field public static final int MIP_CONFIG_FAILURE = 2050; // 0x802
-    field public static final int MIP_FA_ADMIN_PROHIBITED = 2001; // 0x7d1
-    field public static final int MIP_FA_DELIVERY_STYLE_NOT_SUPPORTED = 2012; // 0x7dc
-    field public static final int MIP_FA_ENCAPSULATION_UNAVAILABLE = 2008; // 0x7d8
-    field public static final int MIP_FA_HOME_AGENT_AUTHENTICATION_FAILURE = 2004; // 0x7d4
-    field public static final int MIP_FA_INSUFFICIENT_RESOURCES = 2002; // 0x7d2
-    field public static final int MIP_FA_MALFORMED_REPLY = 2007; // 0x7d7
-    field public static final int MIP_FA_MALFORMED_REQUEST = 2006; // 0x7d6
-    field public static final int MIP_FA_MISSING_CHALLENGE = 2017; // 0x7e1
-    field public static final int MIP_FA_MISSING_HOME_ADDRESS = 2015; // 0x7df
-    field public static final int MIP_FA_MISSING_HOME_AGENT = 2014; // 0x7de
-    field public static final int MIP_FA_MISSING_NAI = 2013; // 0x7dd
-    field public static final int MIP_FA_MOBILE_NODE_AUTHENTICATION_FAILURE = 2003; // 0x7d3
-    field public static final int MIP_FA_REASON_UNSPECIFIED = 2000; // 0x7d0
-    field public static final int MIP_FA_REQUESTED_LIFETIME_TOO_LONG = 2005; // 0x7d5
-    field public static final int MIP_FA_REVERSE_TUNNEL_IS_MANDATORY = 2011; // 0x7db
-    field public static final int MIP_FA_REVERSE_TUNNEL_UNAVAILABLE = 2010; // 0x7da
-    field public static final int MIP_FA_STALE_CHALLENGE = 2018; // 0x7e2
-    field public static final int MIP_FA_UNKNOWN_CHALLENGE = 2016; // 0x7e0
-    field public static final int MIP_FA_VJ_HEADER_COMPRESSION_UNAVAILABLE = 2009; // 0x7d9
-    field public static final int MIP_HA_ADMIN_PROHIBITED = 2020; // 0x7e4
-    field public static final int MIP_HA_ENCAPSULATION_UNAVAILABLE = 2029; // 0x7ed
-    field public static final int MIP_HA_FOREIGN_AGENT_AUTHENTICATION_FAILURE = 2023; // 0x7e7
-    field public static final int MIP_HA_INSUFFICIENT_RESOURCES = 2021; // 0x7e5
-    field public static final int MIP_HA_MALFORMED_REQUEST = 2025; // 0x7e9
-    field public static final int MIP_HA_MOBILE_NODE_AUTHENTICATION_FAILURE = 2022; // 0x7e6
-    field public static final int MIP_HA_REASON_UNSPECIFIED = 2019; // 0x7e3
-    field public static final int MIP_HA_REGISTRATION_ID_MISMATCH = 2024; // 0x7e8
-    field public static final int MIP_HA_REVERSE_TUNNEL_IS_MANDATORY = 2028; // 0x7ec
-    field public static final int MIP_HA_REVERSE_TUNNEL_UNAVAILABLE = 2027; // 0x7eb
-    field public static final int MIP_HA_UNKNOWN_HOME_AGENT_ADDRESS = 2026; // 0x7ea
-    field public static final int MISSING_UNKNOWN_APN = 27; // 0x1b
-    field public static final int MODEM_APP_PREEMPTED = 2032; // 0x7f0
-    field public static final int MODEM_RESTART = 2037; // 0x7f5
-    field public static final int MSC_TEMPORARILY_NOT_REACHABLE = 2180; // 0x884
-    field public static final int MSG_AND_PROTOCOL_STATE_UNCOMPATIBLE = 101; // 0x65
-    field public static final int MSG_TYPE_NONCOMPATIBLE_STATE = 98; // 0x62
-    field public static final int MS_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK = 2099; // 0x833
-    field public static final int MULTIPLE_PDP_CALL_NOT_ALLOWED = 2192; // 0x890
-    field public static final int MULTI_CONN_TO_SAME_PDN_NOT_ALLOWED = 55; // 0x37
-    field public static final int NAS_LAYER_FAILURE = 2191; // 0x88f
-    field public static final int NAS_REQUEST_REJECTED_BY_NETWORK = 2167; // 0x877
-    field public static final int NAS_SIGNALLING = 14; // 0xe
-    field public static final int NETWORK_FAILURE = 38; // 0x26
-    field public static final int NETWORK_INITIATED_DETACH_NO_AUTO_REATTACH = 2154; // 0x86a
-    field public static final int NETWORK_INITIATED_DETACH_WITH_AUTO_REATTACH = 2153; // 0x869
-    field public static final int NETWORK_INITIATED_TERMINATION = 2031; // 0x7ef
-    field public static final int NONE = 0; // 0x0
-    field public static final int NON_IP_NOT_SUPPORTED = 2069; // 0x815
-    field public static final int NORMAL_RELEASE = 2218; // 0x8aa
-    field public static final int NO_CDMA_SERVICE = 2084; // 0x824
-    field public static final int NO_COLLOCATED_HDR = 2225; // 0x8b1
-    field public static final int NO_EPS_BEARER_CONTEXT_ACTIVATED = 2189; // 0x88d
-    field public static final int NO_GPRS_CONTEXT = 2094; // 0x82e
-    field public static final int NO_HYBRID_HDR_SERVICE = 2209; // 0x8a1
-    field public static final int NO_PDP_CONTEXT_ACTIVATED = 2107; // 0x83b
-    field public static final int NO_RESPONSE_FROM_BASE_STATION = 2081; // 0x821
-    field public static final int NO_SERVICE = 2216; // 0x8a8
-    field public static final int NO_SERVICE_ON_GATEWAY = 2093; // 0x82d
-    field public static final int NSAPI_IN_USE = 35; // 0x23
-    field public static final int NULL_APN_DISALLOWED = 2061; // 0x80d
-    field public static final int OEM_DCFAILCAUSE_1 = 4097; // 0x1001
-    field public static final int OEM_DCFAILCAUSE_10 = 4106; // 0x100a
-    field public static final int OEM_DCFAILCAUSE_11 = 4107; // 0x100b
-    field public static final int OEM_DCFAILCAUSE_12 = 4108; // 0x100c
-    field public static final int OEM_DCFAILCAUSE_13 = 4109; // 0x100d
-    field public static final int OEM_DCFAILCAUSE_14 = 4110; // 0x100e
-    field public static final int OEM_DCFAILCAUSE_15 = 4111; // 0x100f
-    field public static final int OEM_DCFAILCAUSE_2 = 4098; // 0x1002
-    field public static final int OEM_DCFAILCAUSE_3 = 4099; // 0x1003
-    field public static final int OEM_DCFAILCAUSE_4 = 4100; // 0x1004
-    field public static final int OEM_DCFAILCAUSE_5 = 4101; // 0x1005
-    field public static final int OEM_DCFAILCAUSE_6 = 4102; // 0x1006
-    field public static final int OEM_DCFAILCAUSE_7 = 4103; // 0x1007
-    field public static final int OEM_DCFAILCAUSE_8 = 4104; // 0x1008
-    field public static final int OEM_DCFAILCAUSE_9 = 4105; // 0x1009
-    field public static final int ONLY_IPV4V6_ALLOWED = 57; // 0x39
-    field public static final int ONLY_IPV4_ALLOWED = 50; // 0x32
-    field public static final int ONLY_IPV6_ALLOWED = 51; // 0x33
-    field public static final int ONLY_NON_IP_ALLOWED = 58; // 0x3a
-    field public static final int ONLY_SINGLE_BEARER_ALLOWED = 52; // 0x34
-    field public static final int OPERATOR_BARRED = 8; // 0x8
-    field public static final int OTASP_COMMIT_IN_PROGRESS = 2208; // 0x8a0
-    field public static final int PDN_CONN_DOES_NOT_EXIST = 54; // 0x36
-    field public static final int PDN_INACTIVITY_TIMER_EXPIRED = 2051; // 0x803
-    field public static final int PDN_IPV4_CALL_DISALLOWED = 2033; // 0x7f1
-    field public static final int PDN_IPV4_CALL_THROTTLED = 2034; // 0x7f2
-    field public static final int PDN_IPV6_CALL_DISALLOWED = 2035; // 0x7f3
-    field public static final int PDN_IPV6_CALL_THROTTLED = 2036; // 0x7f4
-    field public static final int PDN_NON_IP_CALL_DISALLOWED = 2071; // 0x817
-    field public static final int PDN_NON_IP_CALL_THROTTLED = 2070; // 0x816
-    field public static final int PDP_ACTIVATE_MAX_RETRY_FAILED = 2109; // 0x83d
-    field public static final int PDP_DUPLICATE = 2104; // 0x838
-    field public static final int PDP_ESTABLISH_TIMEOUT_EXPIRED = 2161; // 0x871
-    field public static final int PDP_INACTIVE_TIMEOUT_EXPIRED = 2163; // 0x873
-    field public static final int PDP_LOWERLAYER_ERROR = 2164; // 0x874
-    field public static final int PDP_MODIFY_COLLISION = 2165; // 0x875
-    field public static final int PDP_MODIFY_TIMEOUT_EXPIRED = 2162; // 0x872
-    field public static final int PDP_PPP_NOT_SUPPORTED = 2038; // 0x7f6
-    field public static final int PDP_WITHOUT_ACTIVE_TFT = 46; // 0x2e
-    field public static final int PHONE_IN_USE = 2222; // 0x8ae
-    field public static final int PHYSICAL_LINK_CLOSE_IN_PROGRESS = 2040; // 0x7f8
-    field public static final int PLMN_NOT_ALLOWED = 2101; // 0x835
-    field public static final int PPP_AUTH_FAILURE = 2229; // 0x8b5
-    field public static final int PPP_CHAP_FAILURE = 2232; // 0x8b8
-    field public static final int PPP_CLOSE_IN_PROGRESS = 2233; // 0x8b9
-    field public static final int PPP_OPTION_MISMATCH = 2230; // 0x8b6
-    field public static final int PPP_PAP_FAILURE = 2231; // 0x8b7
-    field public static final int PPP_TIMEOUT = 2228; // 0x8b4
-    field public static final int PREF_RADIO_TECH_CHANGED = -4; // 0xfffffffc
-    field public static final int PROFILE_BEARER_INCOMPATIBLE = 2042; // 0x7fa
-    field public static final int PROTOCOL_ERRORS = 111; // 0x6f
-    field public static final int QOS_NOT_ACCEPTED = 37; // 0x25
-    field public static final int RADIO_ACCESS_BEARER_FAILURE = 2110; // 0x83e
-    field public static final int RADIO_ACCESS_BEARER_SETUP_FAILURE = 2160; // 0x870
-    field public static final int RADIO_NOT_AVAILABLE = 65537; // 0x10001
-    field public static final int RADIO_POWER_OFF = -5; // 0xfffffffb
-    field public static final int REDIRECTION_OR_HANDOFF_IN_PROGRESS = 2220; // 0x8ac
-    field public static final int REGISTRATION_FAIL = -1; // 0xffffffff
-    field public static final int REGULAR_DEACTIVATION = 36; // 0x24
-    field public static final int REJECTED_BY_BASE_STATION = 2082; // 0x822
-    field public static final int RRC_CONNECTION_ABORTED_AFTER_HANDOVER = 2173; // 0x87d
-    field public static final int RRC_CONNECTION_ABORTED_AFTER_IRAT_CELL_CHANGE = 2174; // 0x87e
-    field public static final int RRC_CONNECTION_ABORTED_DUE_TO_IRAT_CHANGE = 2171; // 0x87b
-    field public static final int RRC_CONNECTION_ABORTED_DURING_IRAT_CELL_CHANGE = 2175; // 0x87f
-    field public static final int RRC_CONNECTION_ABORT_REQUEST = 2151; // 0x867
-    field public static final int RRC_CONNECTION_ACCESS_BARRED = 2139; // 0x85b
-    field public static final int RRC_CONNECTION_ACCESS_STRATUM_FAILURE = 2137; // 0x859
-    field public static final int RRC_CONNECTION_ANOTHER_PROCEDURE_IN_PROGRESS = 2138; // 0x85a
-    field public static final int RRC_CONNECTION_CELL_NOT_CAMPED = 2144; // 0x860
-    field public static final int RRC_CONNECTION_CELL_RESELECTION = 2140; // 0x85c
-    field public static final int RRC_CONNECTION_CONFIG_FAILURE = 2141; // 0x85d
-    field public static final int RRC_CONNECTION_INVALID_REQUEST = 2168; // 0x878
-    field public static final int RRC_CONNECTION_LINK_FAILURE = 2143; // 0x85f
-    field public static final int RRC_CONNECTION_NORMAL_RELEASE = 2147; // 0x863
-    field public static final int RRC_CONNECTION_OUT_OF_SERVICE_DURING_CELL_REGISTER = 2150; // 0x866
-    field public static final int RRC_CONNECTION_RADIO_LINK_FAILURE = 2148; // 0x864
-    field public static final int RRC_CONNECTION_REESTABLISHMENT_FAILURE = 2149; // 0x865
-    field public static final int RRC_CONNECTION_REJECT_BY_NETWORK = 2146; // 0x862
-    field public static final int RRC_CONNECTION_RELEASED_SECURITY_NOT_ACTIVE = 2172; // 0x87c
-    field public static final int RRC_CONNECTION_RF_UNAVAILABLE = 2170; // 0x87a
-    field public static final int RRC_CONNECTION_SYSTEM_INFORMATION_BLOCK_READ_ERROR = 2152; // 0x868
-    field public static final int RRC_CONNECTION_SYSTEM_INTERVAL_FAILURE = 2145; // 0x861
-    field public static final int RRC_CONNECTION_TIMER_EXPIRED = 2142; // 0x85e
-    field public static final int RRC_CONNECTION_TRACKING_AREA_ID_CHANGED = 2169; // 0x879
-    field public static final int RRC_UPLINK_CONNECTION_RELEASE = 2134; // 0x856
-    field public static final int RRC_UPLINK_DATA_TRANSMISSION_FAILURE = 2132; // 0x854
-    field public static final int RRC_UPLINK_DELIVERY_FAILED_DUE_TO_HANDOVER = 2133; // 0x855
-    field public static final int RRC_UPLINK_ERROR_REQUEST_FROM_NAS = 2136; // 0x858
-    field public static final int RRC_UPLINK_RADIO_LINK_FAILURE = 2135; // 0x857
-    field public static final int RUIM_NOT_PRESENT = 2085; // 0x825
-    field public static final int SECURITY_MODE_REJECTED = 2186; // 0x88a
-    field public static final int SERVICE_NOT_ALLOWED_ON_PLMN = 2129; // 0x851
-    field public static final int SERVICE_OPTION_NOT_SUBSCRIBED = 33; // 0x21
-    field public static final int SERVICE_OPTION_NOT_SUPPORTED = 32; // 0x20
-    field public static final int SERVICE_OPTION_OUT_OF_ORDER = 34; // 0x22
-    field public static final int SIGNAL_LOST = -3; // 0xfffffffd
-    field public static final int SIM_CARD_CHANGED = 2043; // 0x7fb
-    field public static final int SYNCHRONIZATION_FAILURE = 2184; // 0x888
-    field public static final int TEST_LOOPBACK_REGULAR_DEACTIVATION = 2196; // 0x894
-    field public static final int TETHERED_CALL_ACTIVE = -6; // 0xfffffffa
-    field public static final int TFT_SEMANTIC_ERROR = 41; // 0x29
-    field public static final int TFT_SYTAX_ERROR = 42; // 0x2a
-    field public static final int THERMAL_EMERGENCY = 2090; // 0x82a
-    field public static final int THERMAL_MITIGATION = 2062; // 0x80e
-    field public static final int TRAT_SWAP_FAILED = 2048; // 0x800
-    field public static final int UE_INITIATED_DETACH_OR_DISCONNECT = 128; // 0x80
-    field public static final int UE_IS_ENTERING_POWERSAVE_MODE = 2226; // 0x8b2
-    field public static final int UE_RAT_CHANGE = 2105; // 0x839
-    field public static final int UE_SECURITY_CAPABILITIES_MISMATCH = 2185; // 0x889
-    field public static final int UMTS_HANDOVER_TO_IWLAN = 2199; // 0x897
-    field public static final int UMTS_REACTIVATION_REQ = 39; // 0x27
-    field public static final int UNACCEPTABLE_NETWORK_PARAMETER = 65538; // 0x10002
-    field public static final int UNACCEPTABLE_NON_EPS_AUTHENTICATION = 2187; // 0x88b
-    field public static final int UNKNOWN = 65536; // 0x10000
-    field public static final int UNKNOWN_INFO_ELEMENT = 99; // 0x63
-    field public static final int UNKNOWN_PDP_ADDRESS_TYPE = 28; // 0x1c
-    field public static final int UNKNOWN_PDP_CONTEXT = 43; // 0x2b
-    field public static final int UNPREFERRED_RAT = 2039; // 0x7f7
-    field public static final int UNSUPPORTED_1X_PREV = 2214; // 0x8a6
-    field public static final int UNSUPPORTED_APN_IN_CURRENT_PLMN = 66; // 0x42
-    field public static final int UNSUPPORTED_QCI_VALUE = 59; // 0x3b
-    field public static final int USER_AUTHENTICATION = 29; // 0x1d
-    field public static final int VSNCP_ADMINISTRATIVELY_PROHIBITED = 2245; // 0x8c5
-    field public static final int VSNCP_APN_UNAUTHORIZED = 2238; // 0x8be
-    field public static final int VSNCP_GEN_ERROR = 2237; // 0x8bd
-    field public static final int VSNCP_INSUFFICIENT_PARAMETERS = 2243; // 0x8c3
-    field public static final int VSNCP_NO_PDN_GATEWAY_ADDRESS = 2240; // 0x8c0
-    field public static final int VSNCP_PDN_EXISTS_FOR_THIS_APN = 2248; // 0x8c8
-    field public static final int VSNCP_PDN_GATEWAY_REJECT = 2242; // 0x8c2
-    field public static final int VSNCP_PDN_GATEWAY_UNREACHABLE = 2241; // 0x8c1
-    field public static final int VSNCP_PDN_ID_IN_USE = 2246; // 0x8c6
-    field public static final int VSNCP_PDN_LIMIT_EXCEEDED = 2239; // 0x8bf
-    field public static final int VSNCP_RECONNECT_NOT_ALLOWED = 2249; // 0x8c9
-    field public static final int VSNCP_RESOURCE_UNAVAILABLE = 2244; // 0x8c4
-    field public static final int VSNCP_SUBSCRIBER_LIMITATION = 2247; // 0x8c7
-    field public static final int VSNCP_TIMEOUT = 2236; // 0x8bc
-  }
-
-  public final class DisconnectCause {
-    field public static final int ALREADY_DIALING = 72; // 0x48
-    field public static final int ANSWERED_ELSEWHERE = 52; // 0x34
-    field public static final int BUSY = 4; // 0x4
-    field public static final int CALLING_DISABLED = 74; // 0x4a
-    field public static final int CALL_BARRED = 20; // 0x14
-    field public static final int CALL_PULLED = 51; // 0x33
-    field public static final int CANT_CALL_WHILE_RINGING = 73; // 0x49
-    field public static final int CDMA_ACCESS_BLOCKED = 35; // 0x23
-    field public static final int CDMA_ACCESS_FAILURE = 32; // 0x20
-    field public static final int CDMA_ALREADY_ACTIVATED = 49; // 0x31
-    field public static final int CDMA_DROP = 27; // 0x1b
-    field public static final int CDMA_INTERCEPT = 28; // 0x1c
-    field public static final int CDMA_LOCKED_UNTIL_POWER_CYCLE = 26; // 0x1a
-    field public static final int CDMA_NOT_EMERGENCY = 34; // 0x22
-    field public static final int CDMA_PREEMPTED = 33; // 0x21
-    field public static final int CDMA_REORDER = 29; // 0x1d
-    field public static final int CDMA_RETRY_ORDER = 31; // 0x1f
-    field public static final int CDMA_SO_REJECT = 30; // 0x1e
-    field public static final int CONGESTION = 5; // 0x5
-    field public static final int CS_RESTRICTED = 22; // 0x16
-    field public static final int CS_RESTRICTED_EMERGENCY = 24; // 0x18
-    field public static final int CS_RESTRICTED_NORMAL = 23; // 0x17
-    field public static final int DATA_DISABLED = 54; // 0x36
-    field public static final int DATA_LIMIT_REACHED = 55; // 0x37
-    field public static final int DIALED_CALL_FORWARDING_WHILE_ROAMING = 57; // 0x39
-    field public static final int DIALED_MMI = 39; // 0x27
-    field public static final int DIAL_LOW_BATTERY = 62; // 0x3e
-    field public static final int DIAL_MODIFIED_TO_DIAL = 48; // 0x30
-    field public static final int DIAL_MODIFIED_TO_DIAL_VIDEO = 66; // 0x42
-    field public static final int DIAL_MODIFIED_TO_SS = 47; // 0x2f
-    field public static final int DIAL_MODIFIED_TO_USSD = 46; // 0x2e
-    field public static final int DIAL_VIDEO_MODIFIED_TO_DIAL = 69; // 0x45
-    field public static final int DIAL_VIDEO_MODIFIED_TO_DIAL_VIDEO = 70; // 0x46
-    field public static final int DIAL_VIDEO_MODIFIED_TO_SS = 67; // 0x43
-    field public static final int DIAL_VIDEO_MODIFIED_TO_USSD = 68; // 0x44
-    field public static final int EMERGENCY_CALL_OVER_WFC_NOT_AVAILABLE = 78; // 0x4e
-    field public static final int EMERGENCY_PERM_FAILURE = 64; // 0x40
-    field public static final int EMERGENCY_TEMP_FAILURE = 63; // 0x3f
-    field public static final int ERROR_UNSPECIFIED = 36; // 0x24
-    field public static final int FDN_BLOCKED = 21; // 0x15
-    field public static final int ICC_ERROR = 19; // 0x13
-    field public static final int IMEI_NOT_ACCEPTED = 58; // 0x3a
-    field public static final int IMS_ACCESS_BLOCKED = 60; // 0x3c
-    field public static final int IMS_MERGED_SUCCESSFULLY = 45; // 0x2d
-    field public static final int IMS_SIP_ALTERNATE_EMERGENCY_CALL = 71; // 0x47
-    field public static final int INCOMING_AUTO_REJECTED = 81; // 0x51
-    field public static final int INCOMING_MISSED = 1; // 0x1
-    field public static final int INCOMING_REJECTED = 16; // 0x10
-    field public static final int INVALID_CREDENTIALS = 10; // 0xa
-    field public static final int INVALID_NUMBER = 7; // 0x7
-    field public static final int LIMIT_EXCEEDED = 15; // 0xf
-    field public static final int LOCAL = 3; // 0x3
-    field public static final int LOST_SIGNAL = 14; // 0xe
-    field public static final int LOW_BATTERY = 61; // 0x3d
-    field public static final int MAXIMUM_NUMBER_OF_CALLS_REACHED = 53; // 0x35
-    field public static final int MEDIA_TIMEOUT = 77; // 0x4d
-    field public static final int MMI = 6; // 0x6
-    field public static final int NORMAL = 2; // 0x2
-    field public static final int NORMAL_UNSPECIFIED = 65; // 0x41
-    field public static final int NOT_DISCONNECTED = 0; // 0x0
-    field public static final int NOT_VALID = -1; // 0xffffffff
-    field public static final int NO_PHONE_NUMBER_SUPPLIED = 38; // 0x26
-    field public static final int NUMBER_UNREACHABLE = 8; // 0x8
-    field public static final int OTASP_PROVISIONING_IN_PROCESS = 76; // 0x4c
-    field public static final int OUTGOING_CANCELED = 44; // 0x2c
-    field public static final int OUTGOING_EMERGENCY_CALL_PLACED = 80; // 0x50
-    field public static final int OUTGOING_FAILURE = 43; // 0x2b
-    field public static final int OUT_OF_NETWORK = 11; // 0xb
-    field public static final int OUT_OF_SERVICE = 18; // 0x12
-    field public static final int POWER_OFF = 17; // 0x11
-    field public static final int SERVER_ERROR = 12; // 0xc
-    field public static final int SERVER_UNREACHABLE = 9; // 0x9
-    field public static final int TIMED_OUT = 13; // 0xd
-    field public static final int TOO_MANY_ONGOING_CALLS = 75; // 0x4b
-    field public static final int UNOBTAINABLE_NUMBER = 25; // 0x19
-    field public static final int VIDEO_CALL_NOT_ALLOWED_WHILE_TTY_ENABLED = 50; // 0x32
-    field public static final int VOICEMAIL_NUMBER_MISSING = 40; // 0x28
-    field public static final int WFC_SERVICE_NOT_AVAILABLE_IN_THIS_LOCATION = 79; // 0x4f
-    field public static final int WIFI_LOST = 59; // 0x3b
-  }
-
-  public class IccOpenLogicalChannelResponse implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getChannel();
-    method public byte[] getSelectResponse();
-    method public int getStatus();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.IccOpenLogicalChannelResponse> CREATOR;
-    field public static final int INVALID_CHANNEL = -1; // 0xffffffff
-    field public static final int STATUS_MISSING_RESOURCE = 2; // 0x2
-    field public static final int STATUS_NO_ERROR = 1; // 0x1
-    field public static final int STATUS_NO_SUCH_ELEMENT = 3; // 0x3
-    field public static final int STATUS_UNKNOWN_ERROR = 4; // 0x4
-  }
-
-  public class MbmsDownloadSession implements java.lang.AutoCloseable {
-    method public void addProgressListener(@NonNull android.telephony.mbms.DownloadRequest, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.DownloadProgressListener);
-    method public void addServiceAnnouncement(@NonNull byte[]);
-    method public void addStatusListener(@NonNull android.telephony.mbms.DownloadRequest, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.DownloadStatusListener);
-    method public void cancelDownload(@NonNull android.telephony.mbms.DownloadRequest);
-    method public void close();
-    method public static android.telephony.MbmsDownloadSession create(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.MbmsDownloadSessionCallback);
-    method @Nullable public static android.telephony.MbmsDownloadSession create(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, int, @NonNull android.telephony.mbms.MbmsDownloadSessionCallback);
-    method public void download(@NonNull android.telephony.mbms.DownloadRequest);
-    method public static int getMaximumServiceAnnouncementSize();
-    method @Nullable public java.io.File getTempFileRootDirectory();
-    method @NonNull public java.util.List<android.telephony.mbms.DownloadRequest> listPendingDownloads();
-    method public void removeProgressListener(@NonNull android.telephony.mbms.DownloadRequest, @NonNull android.telephony.mbms.DownloadProgressListener);
-    method public void removeStatusListener(@NonNull android.telephony.mbms.DownloadRequest, @NonNull android.telephony.mbms.DownloadStatusListener);
-    method public void requestDownloadState(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo);
-    method public void requestUpdateFileServices(@NonNull java.util.List<java.lang.String>);
-    method public void resetDownloadKnowledge(android.telephony.mbms.DownloadRequest);
-    method public void setTempFileRootDirectory(@NonNull java.io.File);
-    field public static final String DEFAULT_TOP_LEVEL_TEMP_DIRECTORY = "androidMbmsTempFileRoot";
-    field public static final String EXTRA_MBMS_COMPLETED_FILE_URI = "android.telephony.extra.MBMS_COMPLETED_FILE_URI";
-    field public static final String EXTRA_MBMS_DOWNLOAD_REQUEST = "android.telephony.extra.MBMS_DOWNLOAD_REQUEST";
-    field public static final String EXTRA_MBMS_DOWNLOAD_RESULT = "android.telephony.extra.MBMS_DOWNLOAD_RESULT";
-    field public static final String EXTRA_MBMS_FILE_INFO = "android.telephony.extra.MBMS_FILE_INFO";
-    field public static final int RESULT_CANCELLED = 2; // 0x2
-    field public static final int RESULT_DOWNLOAD_FAILURE = 6; // 0x6
-    field public static final int RESULT_EXPIRED = 3; // 0x3
-    field public static final int RESULT_FILE_ROOT_UNREACHABLE = 8; // 0x8
-    field public static final int RESULT_IO_ERROR = 4; // 0x4
-    field public static final int RESULT_OUT_OF_STORAGE = 7; // 0x7
-    field public static final int RESULT_SERVICE_ID_NOT_DEFINED = 5; // 0x5
-    field public static final int RESULT_SUCCESSFUL = 1; // 0x1
-    field public static final int STATUS_ACTIVELY_DOWNLOADING = 1; // 0x1
-    field public static final int STATUS_PENDING_DOWNLOAD = 2; // 0x2
-    field public static final int STATUS_PENDING_DOWNLOAD_WINDOW = 4; // 0x4
-    field public static final int STATUS_PENDING_REPAIR = 3; // 0x3
-    field public static final int STATUS_UNKNOWN = 0; // 0x0
-  }
-
-  public class MbmsGroupCallSession implements java.lang.AutoCloseable {
-    method public void close();
-    method @Nullable public static android.telephony.MbmsGroupCallSession create(@NonNull android.content.Context, int, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.MbmsGroupCallSessionCallback);
-    method @Nullable public static android.telephony.MbmsGroupCallSession create(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.MbmsGroupCallSessionCallback);
-    method @Nullable public android.telephony.mbms.GroupCall startGroupCall(long, @NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.lang.Integer>, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.GroupCallCallback);
-  }
-
-  public class MbmsStreamingSession implements java.lang.AutoCloseable {
-    method public void close();
-    method @Nullable public static android.telephony.MbmsStreamingSession create(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, int, @NonNull android.telephony.mbms.MbmsStreamingSessionCallback);
-    method public static android.telephony.MbmsStreamingSession create(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.mbms.MbmsStreamingSessionCallback);
-    method public void requestUpdateStreamingServices(java.util.List<java.lang.String>);
-    method @Nullable public android.telephony.mbms.StreamingService startStreaming(android.telephony.mbms.StreamingServiceInfo, @NonNull java.util.concurrent.Executor, android.telephony.mbms.StreamingServiceCallback);
-  }
-
-  @Deprecated public class NeighboringCellInfo implements android.os.Parcelable {
-    ctor @Deprecated public NeighboringCellInfo();
-    ctor @Deprecated public NeighboringCellInfo(int, int);
-    ctor @Deprecated public NeighboringCellInfo(int, String, int);
-    ctor @Deprecated public NeighboringCellInfo(android.os.Parcel);
-    method @Deprecated public int describeContents();
-    method @Deprecated public int getCid();
-    method @Deprecated public int getLac();
-    method @Deprecated public int getNetworkType();
-    method @Deprecated public int getPsc();
-    method @Deprecated public int getRssi();
-    method @Deprecated public void setCid(int);
-    method @Deprecated public void setRssi(int);
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.telephony.NeighboringCellInfo> CREATOR;
-    field @Deprecated public static final int UNKNOWN_CID = -1; // 0xffffffff
-    field @Deprecated public static final int UNKNOWN_RSSI = 99; // 0x63
-  }
-
-  public final class NetworkRegistrationInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAccessNetworkTechnology();
-    method @NonNull public java.util.List<java.lang.Integer> getAvailableServices();
-    method @Nullable public android.telephony.CellIdentity getCellIdentity();
-    method public int getDomain();
-    method @Nullable public String getRegisteredPlmn();
-    method public int getTransportType();
-    method public boolean isRegistered();
-    method public boolean isRoaming();
-    method public boolean isSearching();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.NetworkRegistrationInfo> CREATOR;
-    field public static final int DOMAIN_CS = 1; // 0x1
-    field public static final int DOMAIN_CS_PS = 3; // 0x3
-    field public static final int DOMAIN_PS = 2; // 0x2
-    field public static final int DOMAIN_UNKNOWN = 0; // 0x0
-    field public static final int NR_STATE_CONNECTED = 3; // 0x3
-    field public static final int NR_STATE_NONE = 0; // 0x0
-    field public static final int NR_STATE_NOT_RESTRICTED = 2; // 0x2
-    field public static final int NR_STATE_RESTRICTED = 1; // 0x1
-    field public static final int SERVICE_TYPE_DATA = 2; // 0x2
-    field public static final int SERVICE_TYPE_EMERGENCY = 5; // 0x5
-    field public static final int SERVICE_TYPE_SMS = 3; // 0x3
-    field public static final int SERVICE_TYPE_UNKNOWN = 0; // 0x0
-    field public static final int SERVICE_TYPE_VIDEO = 4; // 0x4
-    field public static final int SERVICE_TYPE_VOICE = 1; // 0x1
-  }
-
-  public class NetworkScan {
-    method public void stopScan();
-    field public static final int ERROR_INTERRUPTED = 10002; // 0x2712
-    field public static final int ERROR_INVALID_SCAN = 2; // 0x2
-    field public static final int ERROR_INVALID_SCANID = 10001; // 0x2711
-    field public static final int ERROR_MODEM_ERROR = 1; // 0x1
-    field public static final int ERROR_MODEM_UNAVAILABLE = 3; // 0x3
-    field public static final int ERROR_RADIO_INTERFACE_ERROR = 10000; // 0x2710
-    field public static final int ERROR_UNSUPPORTED = 4; // 0x4
-    field public static final int SUCCESS = 0; // 0x0
-  }
-
-  public final class NetworkScanRequest implements android.os.Parcelable {
-    ctor public NetworkScanRequest(int, android.telephony.RadioAccessSpecifier[], int, int, boolean, int, java.util.ArrayList<java.lang.String>);
-    method public int describeContents();
-    method public boolean getIncrementalResults();
-    method public int getIncrementalResultsPeriodicity();
-    method public int getMaxSearchTime();
-    method public java.util.ArrayList<java.lang.String> getPlmns();
-    method public int getScanType();
-    method public int getSearchPeriodicity();
-    method public android.telephony.RadioAccessSpecifier[] getSpecifiers();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.NetworkScanRequest> CREATOR;
-    field public static final int SCAN_TYPE_ONE_SHOT = 0; // 0x0
-    field public static final int SCAN_TYPE_PERIODIC = 1; // 0x1
-  }
-
-  public class PhoneNumberFormattingTextWatcher implements android.text.TextWatcher {
-    ctor public PhoneNumberFormattingTextWatcher();
-    ctor public PhoneNumberFormattingTextWatcher(String);
-    method public void afterTextChanged(android.text.Editable);
-    method public void beforeTextChanged(CharSequence, int, int, int);
-    method public void onTextChanged(CharSequence, int, int, int);
-  }
-
-  public class PhoneNumberUtils {
-    ctor public PhoneNumberUtils();
-    method public static void addTtsSpan(android.text.Spannable, int, int);
-    method @Deprecated public static String calledPartyBCDFragmentToString(byte[], int, int);
-    method public static String calledPartyBCDFragmentToString(byte[], int, int, int);
-    method @Deprecated public static String calledPartyBCDToString(byte[], int, int);
-    method public static String calledPartyBCDToString(byte[], int, int, int);
-    method public static boolean compare(String, String);
-    method public static boolean compare(android.content.Context, String, String);
-    method public static String convertKeypadLettersToDigits(String);
-    method public static android.text.style.TtsSpan createTtsSpan(String);
-    method public static CharSequence createTtsSpannable(CharSequence);
-    method public static String extractNetworkPortion(String);
-    method public static String extractPostDialPortion(String);
-    method @Deprecated public static void formatJapaneseNumber(android.text.Editable);
-    method @Deprecated public static void formatNanpNumber(android.text.Editable);
-    method @Deprecated public static String formatNumber(String);
-    method @Deprecated public static void formatNumber(android.text.Editable, int);
-    method public static String formatNumber(String, String);
-    method public static String formatNumber(String, String, String);
-    method public static String formatNumberToE164(String, String);
-    method public static String formatNumberToRFC3966(String, String);
-    method @Deprecated public static int getFormatTypeForLocale(java.util.Locale);
-    method public static String getNumberFromIntent(android.content.Intent, android.content.Context);
-    method public static String getStrippedReversed(String);
-    method public static final boolean is12Key(char);
-    method public static final boolean isDialable(char);
-    method @Deprecated public static boolean isEmergencyNumber(String);
-    method public static boolean isGlobalPhoneNumber(String);
-    method public static boolean isISODigit(char);
-    method @Deprecated public static boolean isLocalEmergencyNumber(android.content.Context, String);
-    method public static final boolean isNonSeparator(char);
-    method public static final boolean isReallyDialable(char);
-    method public static final boolean isStartsPostDial(char);
-    method public static boolean isVoiceMailNumber(String);
-    method public static boolean isWellFormedSmsAddress(String);
-    method public static byte[] networkPortionToCalledPartyBCD(String);
-    method public static byte[] networkPortionToCalledPartyBCDWithLength(String);
-    method public static String normalizeNumber(String);
-    method @Deprecated public static byte[] numberToCalledPartyBCD(String);
-    method public static byte[] numberToCalledPartyBCD(String, int);
-    method public static String replaceUnicodeDigits(String);
-    method public static String stringFromStringAndTOA(String, int);
-    method public static String stripSeparators(String);
-    method public static String toCallerIDMinMatch(String);
-    method public static int toaFromString(String);
-    field public static final int BCD_EXTENDED_TYPE_CALLED_PARTY = 2; // 0x2
-    field public static final int BCD_EXTENDED_TYPE_EF_ADN = 1; // 0x1
-    field public static final int FORMAT_JAPAN = 2; // 0x2
-    field public static final int FORMAT_NANP = 1; // 0x1
-    field public static final int FORMAT_UNKNOWN = 0; // 0x0
-    field public static final char PAUSE = 44; // 0x002c ','
-    field public static final int TOA_International = 145; // 0x91
-    field public static final int TOA_Unknown = 129; // 0x81
-    field public static final char WAIT = 59; // 0x003b ';'
-    field public static final char WILD = 78; // 0x004e 'N'
-  }
-
-  public class PhoneStateListener {
-    ctor public PhoneStateListener();
-    ctor public PhoneStateListener(@NonNull java.util.concurrent.Executor);
-    method public void onActiveDataSubscriptionIdChanged(int);
-    method public void onBarringInfoChanged(@NonNull android.telephony.BarringInfo);
-    method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onCallDisconnectCauseChanged(int, int);
-    method public void onCallForwardingIndicatorChanged(boolean);
-    method public void onCallStateChanged(int, String);
-    method public void onCellInfoChanged(java.util.List<android.telephony.CellInfo>);
-    method public void onCellLocationChanged(android.telephony.CellLocation);
-    method public void onDataActivity(int);
-    method public void onDataConnectionStateChanged(int);
-    method public void onDataConnectionStateChanged(int, int);
-    method @RequiresPermission("android.permission.READ_PHONE_STATE") public void onDisplayInfoChanged(@NonNull android.telephony.TelephonyDisplayInfo);
-    method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onImsCallDisconnectCauseChanged(@NonNull android.telephony.ims.ImsReasonInfo);
-    method public void onMessageWaitingIndicatorChanged(boolean);
-    method @RequiresPermission("android.permission.MODIFY_PHONE_STATE") public void onPreciseDataConnectionStateChanged(@NonNull android.telephony.PreciseDataConnectionState);
-    method public void onRegistrationFailed(@NonNull android.telephony.CellIdentity, @NonNull String, int, int, int);
-    method public void onServiceStateChanged(android.telephony.ServiceState);
-    method @Deprecated public void onSignalStrengthChanged(int);
-    method public void onSignalStrengthsChanged(android.telephony.SignalStrength);
-    method public void onUserMobileDataStateChanged(boolean);
-    field public static final int LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE = 4194304; // 0x400000
-    field @RequiresPermission(android.Manifest.permission.READ_PRECISE_PHONE_STATE) public static final int LISTEN_BARRING_INFO = -2147483648; // 0x80000000
-    field @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public static final int LISTEN_CALL_DISCONNECT_CAUSES = 33554432; // 0x2000000
-    field public static final int LISTEN_CALL_FORWARDING_INDICATOR = 8; // 0x8
-    field public static final int LISTEN_CALL_STATE = 32; // 0x20
-    field public static final int LISTEN_CELL_INFO = 1024; // 0x400
-    field public static final int LISTEN_CELL_LOCATION = 16; // 0x10
-    field public static final int LISTEN_DATA_ACTIVITY = 128; // 0x80
-    field public static final int LISTEN_DATA_CONNECTION_STATE = 64; // 0x40
-    field public static final int LISTEN_DISPLAY_INFO_CHANGED = 1048576; // 0x100000
-    field public static final int LISTEN_EMERGENCY_NUMBER_LIST = 16777216; // 0x1000000
-    field @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public static final int LISTEN_IMS_CALL_DISCONNECT_CAUSES = 134217728; // 0x8000000
-    field public static final int LISTEN_MESSAGE_WAITING_INDICATOR = 4; // 0x4
-    field public static final int LISTEN_NONE = 0; // 0x0
-    field @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public static final int LISTEN_PRECISE_DATA_CONNECTION_STATE = 4096; // 0x1000
-    field @RequiresPermission(android.Manifest.permission.READ_PRECISE_PHONE_STATE) public static final int LISTEN_REGISTRATION_FAILURE = 1073741824; // 0x40000000
-    field public static final int LISTEN_SERVICE_STATE = 1; // 0x1
-    field @Deprecated public static final int LISTEN_SIGNAL_STRENGTH = 2; // 0x2
-    field public static final int LISTEN_SIGNAL_STRENGTHS = 256; // 0x100
-    field public static final int LISTEN_USER_MOBILE_DATA_STATE = 524288; // 0x80000
-  }
-
-  public final class PreciseDataConnectionState implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.telephony.data.ApnSetting getApnSetting();
-    method public int getLastCauseCode();
-    method @Nullable public android.net.LinkProperties getLinkProperties();
-    method public int getNetworkType();
-    method public int getState();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.PreciseDataConnectionState> CREATOR;
-  }
-
-  public final class RadioAccessSpecifier implements android.os.Parcelable {
-    ctor public RadioAccessSpecifier(int, int[], int[]);
-    method public int describeContents();
-    method public int[] getBands();
-    method public int[] getChannels();
-    method public int getRadioAccessNetwork();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.RadioAccessSpecifier> CREATOR;
-  }
-
-  public class ServiceState implements android.os.Parcelable {
-    ctor public ServiceState();
-    ctor public ServiceState(android.telephony.ServiceState);
-    ctor @Deprecated public ServiceState(android.os.Parcel);
-    method protected void copyFrom(android.telephony.ServiceState);
-    method public int describeContents();
-    method public int getCdmaNetworkId();
-    method public int getCdmaSystemId();
-    method public int[] getCellBandwidths();
-    method public int getChannelNumber();
-    method public int getDuplexMode();
-    method public boolean getIsManualSelection();
-    method @NonNull public java.util.List<android.telephony.NetworkRegistrationInfo> getNetworkRegistrationInfoList();
-    method public String getOperatorAlphaLong();
-    method public String getOperatorAlphaShort();
-    method public String getOperatorNumeric();
-    method public boolean getRoaming();
-    method public int getState();
-    method public boolean isSearching();
-    method public void setIsManualSelection(boolean);
-    method public void setOperatorName(String, String, String);
-    method public void setRoaming(boolean);
-    method public void setState(int);
-    method public void setStateOff();
-    method public void setStateOutOfService();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ServiceState> CREATOR;
-    field public static final int DUPLEX_MODE_FDD = 1; // 0x1
-    field public static final int DUPLEX_MODE_TDD = 2; // 0x2
-    field public static final int DUPLEX_MODE_UNKNOWN = 0; // 0x0
-    field public static final int STATE_EMERGENCY_ONLY = 2; // 0x2
-    field public static final int STATE_IN_SERVICE = 0; // 0x0
-    field public static final int STATE_OUT_OF_SERVICE = 1; // 0x1
-    field public static final int STATE_POWER_OFF = 3; // 0x3
-    field public static final int UNKNOWN_ID = -1; // 0xffffffff
-  }
-
-  public class SignalStrength implements android.os.Parcelable {
-    method public int describeContents();
-    method @Deprecated public int getCdmaDbm();
-    method @Deprecated public int getCdmaEcio();
-    method @NonNull public java.util.List<android.telephony.CellSignalStrength> getCellSignalStrengths();
-    method @NonNull public <T extends android.telephony.CellSignalStrength> java.util.List<T> getCellSignalStrengths(@NonNull Class<T>);
-    method @Deprecated public int getEvdoDbm();
-    method @Deprecated public int getEvdoEcio();
-    method @Deprecated public int getEvdoSnr();
-    method @Deprecated public int getGsmBitErrorRate();
-    method @Deprecated public int getGsmSignalStrength();
-    method public int getLevel();
-    method public long getTimestampMillis();
-    method @Deprecated public boolean isGsm();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SignalStrength> CREATOR;
-    field public static final int INVALID = 2147483647; // 0x7fffffff
-  }
-
-  public final class SmsManager {
-    method public String createAppSpecificSmsToken(android.app.PendingIntent);
-    method @Nullable public String createAppSpecificSmsTokenWithPackageInfo(@Nullable String, @NonNull android.app.PendingIntent);
-    method public java.util.ArrayList<java.lang.String> divideMessage(String);
-    method public void downloadMultimediaMessage(android.content.Context, String, android.net.Uri, android.os.Bundle, android.app.PendingIntent);
-    method @NonNull public android.os.Bundle getCarrierConfigValues();
-    method public static android.telephony.SmsManager getDefault();
-    method public static int getDefaultSmsSubscriptionId();
-    method public static android.telephony.SmsManager getSmsManagerForSubscriptionId(int);
-    method @RequiresPermission(android.Manifest.permission.SMS_FINANCIAL_TRANSACTIONS) public void getSmsMessagesForFinancialApp(android.os.Bundle, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.SmsManager.FinancialSmsCallback);
-    method @Nullable @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getSmscAddress();
-    method public int getSubscriptionId();
-    method public void injectSmsPdu(byte[], String, android.app.PendingIntent);
-    method public void sendDataMessage(String, String, short, byte[], android.app.PendingIntent, android.app.PendingIntent);
-    method public void sendMultimediaMessage(android.content.Context, android.net.Uri, String, android.os.Bundle, android.app.PendingIntent);
-    method public void sendMultipartTextMessage(String, String, java.util.ArrayList<java.lang.String>, java.util.ArrayList<android.app.PendingIntent>, java.util.ArrayList<android.app.PendingIntent>);
-    method public void sendMultipartTextMessage(@NonNull String, @Nullable String, @NonNull java.util.List<java.lang.String>, @Nullable java.util.List<android.app.PendingIntent>, @Nullable java.util.List<android.app.PendingIntent>, long);
-    method public void sendMultipartTextMessage(@NonNull String, @Nullable String, @NonNull java.util.List<java.lang.String>, @Nullable java.util.List<android.app.PendingIntent>, @Nullable java.util.List<android.app.PendingIntent>, @NonNull String, @Nullable String);
-    method public void sendTextMessage(String, String, String, android.app.PendingIntent, android.app.PendingIntent);
-    method public void sendTextMessage(@NonNull String, @Nullable String, @NonNull String, @Nullable android.app.PendingIntent, @Nullable android.app.PendingIntent, long);
-    method @RequiresPermission(allOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.SEND_SMS}) public void sendTextMessageWithoutPersisting(String, String, String, android.app.PendingIntent, android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setSmscAddress(@NonNull String);
-    field public static final String EXTRA_MMS_DATA = "android.telephony.extra.MMS_DATA";
-    field public static final String EXTRA_MMS_HTTP_STATUS = "android.telephony.extra.MMS_HTTP_STATUS";
-    field public static final String MMS_CONFIG_ALIAS_ENABLED = "aliasEnabled";
-    field public static final String MMS_CONFIG_ALIAS_MAX_CHARS = "aliasMaxChars";
-    field public static final String MMS_CONFIG_ALIAS_MIN_CHARS = "aliasMinChars";
-    field public static final String MMS_CONFIG_ALLOW_ATTACH_AUDIO = "allowAttachAudio";
-    field public static final String MMS_CONFIG_APPEND_TRANSACTION_ID = "enabledTransID";
-    field public static final String MMS_CONFIG_EMAIL_GATEWAY_NUMBER = "emailGatewayNumber";
-    field public static final String MMS_CONFIG_GROUP_MMS_ENABLED = "enableGroupMms";
-    field public static final String MMS_CONFIG_HTTP_PARAMS = "httpParams";
-    field public static final String MMS_CONFIG_HTTP_SOCKET_TIMEOUT = "httpSocketTimeout";
-    field public static final String MMS_CONFIG_MAX_IMAGE_HEIGHT = "maxImageHeight";
-    field public static final String MMS_CONFIG_MAX_IMAGE_WIDTH = "maxImageWidth";
-    field public static final String MMS_CONFIG_MAX_MESSAGE_SIZE = "maxMessageSize";
-    field public static final String MMS_CONFIG_MESSAGE_TEXT_MAX_SIZE = "maxMessageTextSize";
-    field public static final String MMS_CONFIG_MMS_DELIVERY_REPORT_ENABLED = "enableMMSDeliveryReports";
-    field public static final String MMS_CONFIG_MMS_ENABLED = "enabledMMS";
-    field public static final String MMS_CONFIG_MMS_READ_REPORT_ENABLED = "enableMMSReadReports";
-    field public static final String MMS_CONFIG_MULTIPART_SMS_ENABLED = "enableMultipartSMS";
-    field public static final String MMS_CONFIG_NAI_SUFFIX = "naiSuffix";
-    field public static final String MMS_CONFIG_NOTIFY_WAP_MMSC_ENABLED = "enabledNotifyWapMMSC";
-    field public static final String MMS_CONFIG_RECIPIENT_LIMIT = "recipientLimit";
-    field public static final String MMS_CONFIG_SEND_MULTIPART_SMS_AS_SEPARATE_MESSAGES = "sendMultipartSmsAsSeparateMessages";
-    field public static final String MMS_CONFIG_SHOW_CELL_BROADCAST_APP_LINKS = "config_cellBroadcastAppLinks";
-    field public static final String MMS_CONFIG_SMS_DELIVERY_REPORT_ENABLED = "enableSMSDeliveryReports";
-    field public static final String MMS_CONFIG_SMS_TO_MMS_TEXT_LENGTH_THRESHOLD = "smsToMmsTextLengthThreshold";
-    field public static final String MMS_CONFIG_SMS_TO_MMS_TEXT_THRESHOLD = "smsToMmsTextThreshold";
-    field public static final String MMS_CONFIG_SUBJECT_MAX_LENGTH = "maxSubjectLength";
-    field public static final String MMS_CONFIG_SUPPORT_HTTP_CHARSET_HEADER = "supportHttpCharsetHeader";
-    field public static final String MMS_CONFIG_SUPPORT_MMS_CONTENT_DISPOSITION = "supportMmsContentDisposition";
-    field public static final String MMS_CONFIG_UA_PROF_TAG_NAME = "uaProfTagName";
-    field public static final String MMS_CONFIG_UA_PROF_URL = "uaProfUrl";
-    field public static final String MMS_CONFIG_USER_AGENT = "userAgent";
-    field public static final int MMS_ERROR_CONFIGURATION_ERROR = 7; // 0x7
-    field public static final int MMS_ERROR_HTTP_FAILURE = 4; // 0x4
-    field public static final int MMS_ERROR_INVALID_APN = 2; // 0x2
-    field public static final int MMS_ERROR_IO_ERROR = 5; // 0x5
-    field public static final int MMS_ERROR_NO_DATA_NETWORK = 8; // 0x8
-    field public static final int MMS_ERROR_RETRY = 6; // 0x6
-    field public static final int MMS_ERROR_UNABLE_CONNECT_MMS = 3; // 0x3
-    field public static final int MMS_ERROR_UNSPECIFIED = 1; // 0x1
-    field public static final int RESULT_BLUETOOTH_DISCONNECTED = 27; // 0x1b
-    field public static final int RESULT_CANCELLED = 23; // 0x17
-    field public static final int RESULT_ENCODING_ERROR = 18; // 0x12
-    field public static final int RESULT_ERROR_FDN_CHECK_FAILURE = 6; // 0x6
-    field public static final int RESULT_ERROR_GENERIC_FAILURE = 1; // 0x1
-    field public static final int RESULT_ERROR_LIMIT_EXCEEDED = 5; // 0x5
-    field public static final int RESULT_ERROR_NONE = 0; // 0x0
-    field public static final int RESULT_ERROR_NO_SERVICE = 4; // 0x4
-    field public static final int RESULT_ERROR_NULL_PDU = 3; // 0x3
-    field public static final int RESULT_ERROR_RADIO_OFF = 2; // 0x2
-    field public static final int RESULT_ERROR_SHORT_CODE_NEVER_ALLOWED = 8; // 0x8
-    field public static final int RESULT_ERROR_SHORT_CODE_NOT_ALLOWED = 7; // 0x7
-    field public static final int RESULT_INTERNAL_ERROR = 21; // 0x15
-    field public static final int RESULT_INVALID_ARGUMENTS = 11; // 0xb
-    field public static final int RESULT_INVALID_BLUETOOTH_ADDRESS = 26; // 0x1a
-    field public static final int RESULT_INVALID_SMSC_ADDRESS = 19; // 0x13
-    field public static final int RESULT_INVALID_SMS_FORMAT = 14; // 0xe
-    field public static final int RESULT_INVALID_STATE = 12; // 0xc
-    field public static final int RESULT_MODEM_ERROR = 16; // 0x10
-    field public static final int RESULT_NETWORK_ERROR = 17; // 0x11
-    field public static final int RESULT_NETWORK_REJECT = 10; // 0xa
-    field public static final int RESULT_NO_BLUETOOTH_SERVICE = 25; // 0x19
-    field public static final int RESULT_NO_DEFAULT_SMS_APP = 32; // 0x20
-    field public static final int RESULT_NO_MEMORY = 13; // 0xd
-    field public static final int RESULT_NO_RESOURCES = 22; // 0x16
-    field public static final int RESULT_OPERATION_NOT_ALLOWED = 20; // 0x14
-    field public static final int RESULT_RADIO_NOT_AVAILABLE = 9; // 0x9
-    field public static final int RESULT_RECEIVE_DISPATCH_FAILURE = 500; // 0x1f4
-    field public static final int RESULT_RECEIVE_INJECTED_NULL_PDU = 501; // 0x1f5
-    field public static final int RESULT_RECEIVE_NULL_MESSAGE_FROM_RIL = 503; // 0x1f7
-    field public static final int RESULT_RECEIVE_RUNTIME_EXCEPTION = 502; // 0x1f6
-    field public static final int RESULT_RECEIVE_SQL_EXCEPTION = 505; // 0x1f9
-    field public static final int RESULT_RECEIVE_URI_EXCEPTION = 506; // 0x1fa
-    field public static final int RESULT_RECEIVE_WHILE_ENCRYPTED = 504; // 0x1f8
-    field public static final int RESULT_REMOTE_EXCEPTION = 31; // 0x1f
-    field public static final int RESULT_REQUEST_NOT_SUPPORTED = 24; // 0x18
-    field public static final int RESULT_RIL_CANCELLED = 119; // 0x77
-    field public static final int RESULT_RIL_ENCODING_ERR = 109; // 0x6d
-    field public static final int RESULT_RIL_INTERNAL_ERR = 113; // 0x71
-    field public static final int RESULT_RIL_INVALID_ARGUMENTS = 104; // 0x68
-    field public static final int RESULT_RIL_INVALID_MODEM_STATE = 115; // 0x73
-    field public static final int RESULT_RIL_INVALID_SMSC_ADDRESS = 110; // 0x6e
-    field public static final int RESULT_RIL_INVALID_SMS_FORMAT = 107; // 0x6b
-    field public static final int RESULT_RIL_INVALID_STATE = 103; // 0x67
-    field public static final int RESULT_RIL_MODEM_ERR = 111; // 0x6f
-    field public static final int RESULT_RIL_NETWORK_ERR = 112; // 0x70
-    field public static final int RESULT_RIL_NETWORK_NOT_READY = 116; // 0x74
-    field public static final int RESULT_RIL_NETWORK_REJECT = 102; // 0x66
-    field public static final int RESULT_RIL_NO_MEMORY = 105; // 0x69
-    field public static final int RESULT_RIL_NO_RESOURCES = 118; // 0x76
-    field public static final int RESULT_RIL_OPERATION_NOT_ALLOWED = 117; // 0x75
-    field public static final int RESULT_RIL_RADIO_NOT_AVAILABLE = 100; // 0x64
-    field public static final int RESULT_RIL_REQUEST_NOT_SUPPORTED = 114; // 0x72
-    field public static final int RESULT_RIL_REQUEST_RATE_LIMITED = 106; // 0x6a
-    field public static final int RESULT_RIL_SIM_ABSENT = 120; // 0x78
-    field public static final int RESULT_RIL_SMS_SEND_FAIL_RETRY = 101; // 0x65
-    field public static final int RESULT_RIL_SYSTEM_ERR = 108; // 0x6c
-    field public static final int RESULT_SMS_BLOCKED_DURING_EMERGENCY = 29; // 0x1d
-    field public static final int RESULT_SMS_SEND_RETRY_FAILED = 30; // 0x1e
-    field public static final int RESULT_SYSTEM_ERROR = 15; // 0xf
-    field public static final int RESULT_UNEXPECTED_EVENT_STOP_SENDING = 28; // 0x1c
-    field public static final int STATUS_ON_ICC_FREE = 0; // 0x0
-    field public static final int STATUS_ON_ICC_READ = 1; // 0x1
-    field public static final int STATUS_ON_ICC_SENT = 5; // 0x5
-    field public static final int STATUS_ON_ICC_UNREAD = 3; // 0x3
-    field public static final int STATUS_ON_ICC_UNSENT = 7; // 0x7
-  }
-
-  public abstract static class SmsManager.FinancialSmsCallback {
-    ctor public SmsManager.FinancialSmsCallback();
-    method public abstract void onFinancialSmsMessages(android.database.CursorWindow);
-  }
-
-  public class SmsMessage {
-    method public static int[] calculateLength(CharSequence, boolean);
-    method public static int[] calculateLength(String, boolean);
-    method @Deprecated public static android.telephony.SmsMessage createFromPdu(byte[]);
-    method public static android.telephony.SmsMessage createFromPdu(byte[], String);
-    method @Nullable public static android.telephony.SmsMessage createSmsSubmitPdu(@NonNull byte[], boolean);
-    method public String getDisplayMessageBody();
-    method public String getDisplayOriginatingAddress();
-    method public String getEmailBody();
-    method public String getEmailFrom();
-    method public int getIndexOnIcc();
-    method @Deprecated public int getIndexOnSim();
-    method public String getMessageBody();
-    method public android.telephony.SmsMessage.MessageClass getMessageClass();
-    method @Nullable public String getOriginatingAddress();
-    method public byte[] getPdu();
-    method public int getProtocolIdentifier();
-    method public String getPseudoSubject();
-    method public String getServiceCenterAddress();
-    method public int getStatus();
-    method public int getStatusOnIcc();
-    method @Deprecated public int getStatusOnSim();
-    method public static android.telephony.SmsMessage.SubmitPdu getSubmitPdu(String, String, String, boolean);
-    method public static android.telephony.SmsMessage.SubmitPdu getSubmitPdu(String, String, short, byte[], boolean);
-    method public static int getTPLayerLengthForPDU(String);
-    method public long getTimestampMillis();
-    method public byte[] getUserData();
-    method public boolean isCphsMwiMessage();
-    method public boolean isEmail();
-    method public boolean isMWIClearMessage();
-    method public boolean isMWISetMessage();
-    method public boolean isMwiDontStore();
-    method public boolean isReplace();
-    method public boolean isReplyPathPresent();
-    method public boolean isStatusReportMessage();
-    field public static final int ENCODING_16BIT = 3; // 0x3
-    field public static final int ENCODING_7BIT = 1; // 0x1
-    field public static final int ENCODING_8BIT = 2; // 0x2
-    field public static final int ENCODING_UNKNOWN = 0; // 0x0
-    field public static final String FORMAT_3GPP = "3gpp";
-    field public static final String FORMAT_3GPP2 = "3gpp2";
-    field public static final int MAX_USER_DATA_BYTES = 140; // 0x8c
-    field public static final int MAX_USER_DATA_BYTES_WITH_HEADER = 134; // 0x86
-    field public static final int MAX_USER_DATA_SEPTETS = 160; // 0xa0
-    field public static final int MAX_USER_DATA_SEPTETS_WITH_HEADER = 153; // 0x99
-  }
-
-  public enum SmsMessage.MessageClass {
-    enum_constant public static final android.telephony.SmsMessage.MessageClass CLASS_0;
-    enum_constant public static final android.telephony.SmsMessage.MessageClass CLASS_1;
-    enum_constant public static final android.telephony.SmsMessage.MessageClass CLASS_2;
-    enum_constant public static final android.telephony.SmsMessage.MessageClass CLASS_3;
-    enum_constant public static final android.telephony.SmsMessage.MessageClass UNKNOWN;
-  }
-
-  public static class SmsMessage.SubmitPdu {
-    field public byte[] encodedMessage;
-    field public byte[] encodedScAddress;
-  }
-
-  public class SubscriptionInfo implements android.os.Parcelable {
-    method public android.graphics.Bitmap createIconBitmap(android.content.Context);
-    method public int describeContents();
-    method public int getCardId();
-    method public int getCarrierId();
-    method public CharSequence getCarrierName();
-    method public String getCountryIso();
-    method public int getDataRoaming();
-    method public CharSequence getDisplayName();
-    method @Nullable public android.os.ParcelUuid getGroupUuid();
-    method public String getIccId();
-    method public int getIconTint();
-    method @Deprecated public int getMcc();
-    method @Nullable public String getMccString();
-    method @Deprecated public int getMnc();
-    method @Nullable public String getMncString();
-    method public String getNumber();
-    method public int getSimSlotIndex();
-    method public int getSubscriptionId();
-    method public int getSubscriptionType();
-    method public boolean isEmbedded();
-    method public boolean isOpportunistic();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SubscriptionInfo> CREATOR;
-  }
-
-  public class SubscriptionManager {
-    method public void addOnOpportunisticSubscriptionsChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.SubscriptionManager.OnOpportunisticSubscriptionsChangedListener);
-    method @Deprecated public void addOnSubscriptionsChangedListener(android.telephony.SubscriptionManager.OnSubscriptionsChangedListener);
-    method public void addOnSubscriptionsChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.SubscriptionManager.OnSubscriptionsChangedListener);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void addSubscriptionsIntoGroup(@NonNull java.util.List<java.lang.Integer>, @NonNull android.os.ParcelUuid);
-    method public boolean canManageSubscription(android.telephony.SubscriptionInfo);
-    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.os.ParcelUuid createSubscriptionGroup(@NonNull java.util.List<java.lang.Integer>);
-    method @Deprecated public static android.telephony.SubscriptionManager from(android.content.Context);
-    method public java.util.List<android.telephony.SubscriptionInfo> getAccessibleSubscriptionInfoList();
-    method public static int getActiveDataSubscriptionId();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public android.telephony.SubscriptionInfo getActiveSubscriptionInfo(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getActiveSubscriptionInfoCount();
-    method public int getActiveSubscriptionInfoCountMax();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public android.telephony.SubscriptionInfo getActiveSubscriptionInfoForSimSlotIndex(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<android.telephony.SubscriptionInfo> getActiveSubscriptionInfoList();
-    method @NonNull public java.util.List<android.telephony.SubscriptionInfo> getCompleteActiveSubscriptionInfoList();
-    method public static int getDefaultDataSubscriptionId();
-    method public static int getDefaultSmsSubscriptionId();
-    method public static int getDefaultSubscriptionId();
-    method public static int getDefaultVoiceSubscriptionId();
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<android.telephony.SubscriptionInfo> getOpportunisticSubscriptions();
-    method public static int getSlotIndex(int);
-    method @Nullable public int[] getSubscriptionIds(int);
-    method @NonNull public java.util.List<android.telephony.SubscriptionPlan> getSubscriptionPlans(int);
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<android.telephony.SubscriptionInfo> getSubscriptionsInGroup(@NonNull android.os.ParcelUuid);
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isActiveSubscriptionId(int);
-    method public boolean isNetworkRoaming(int);
-    method public static boolean isUsableSubscriptionId(int);
-    method public static boolean isValidSubscriptionId(int);
-    method public void removeOnOpportunisticSubscriptionsChangedListener(@NonNull android.telephony.SubscriptionManager.OnOpportunisticSubscriptionsChangedListener);
-    method public void removeOnSubscriptionsChangedListener(android.telephony.SubscriptionManager.OnSubscriptionsChangedListener);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void removeSubscriptionsFromGroup(@NonNull java.util.List<java.lang.Integer>, @NonNull android.os.ParcelUuid);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setOpportunistic(boolean, int);
-    method public void setSubscriptionOverrideCongested(int, boolean, long);
-    method public void setSubscriptionOverrideUnmetered(int, boolean, long);
-    method public void setSubscriptionPlans(int, @NonNull java.util.List<android.telephony.SubscriptionPlan>);
-    method @RequiresPermission("android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS") public void switchToSubscription(int, @NonNull android.app.PendingIntent);
-    field public static final String ACTION_DEFAULT_SMS_SUBSCRIPTION_CHANGED = "android.telephony.action.DEFAULT_SMS_SUBSCRIPTION_CHANGED";
-    field public static final String ACTION_DEFAULT_SUBSCRIPTION_CHANGED = "android.telephony.action.DEFAULT_SUBSCRIPTION_CHANGED";
-    field public static final String ACTION_MANAGE_SUBSCRIPTION_PLANS = "android.telephony.action.MANAGE_SUBSCRIPTION_PLANS";
-    field public static final String ACTION_REFRESH_SUBSCRIPTION_PLANS = "android.telephony.action.REFRESH_SUBSCRIPTION_PLANS";
-    field public static final int DATA_ROAMING_DISABLE = 0; // 0x0
-    field public static final int DATA_ROAMING_ENABLE = 1; // 0x1
-    field public static final int DEFAULT_SUBSCRIPTION_ID = 2147483647; // 0x7fffffff
-    field public static final String EXTRA_SLOT_INDEX = "android.telephony.extra.SLOT_INDEX";
-    field public static final String EXTRA_SUBSCRIPTION_INDEX = "android.telephony.extra.SUBSCRIPTION_INDEX";
-    field public static final int INVALID_SIM_SLOT_INDEX = -1; // 0xffffffff
-    field public static final int INVALID_SUBSCRIPTION_ID = -1; // 0xffffffff
-    field public static final int SUBSCRIPTION_TYPE_LOCAL_SIM = 0; // 0x0
-    field public static final int SUBSCRIPTION_TYPE_REMOTE_SIM = 1; // 0x1
-  }
-
-  public static class SubscriptionManager.OnOpportunisticSubscriptionsChangedListener {
-    ctor public SubscriptionManager.OnOpportunisticSubscriptionsChangedListener();
-    method public void onOpportunisticSubscriptionsChanged();
-  }
-
-  public static class SubscriptionManager.OnSubscriptionsChangedListener {
-    ctor public SubscriptionManager.OnSubscriptionsChangedListener();
-    method public void onSubscriptionsChanged();
-  }
-
-  public final class SubscriptionPlan implements android.os.Parcelable {
-    method public java.util.Iterator<android.util.Range<java.time.ZonedDateTime>> cycleIterator();
-    method public int describeContents();
-    method public int getDataLimitBehavior();
-    method public long getDataLimitBytes();
-    method public long getDataUsageBytes();
-    method public long getDataUsageTime();
-    method @NonNull public int[] getNetworkTypes();
-    method @Nullable public CharSequence getSummary();
-    method @Nullable public CharSequence getTitle();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final long BYTES_UNKNOWN = -1L; // 0xffffffffffffffffL
-    field public static final long BYTES_UNLIMITED = 9223372036854775807L; // 0x7fffffffffffffffL
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SubscriptionPlan> CREATOR;
-    field public static final int LIMIT_BEHAVIOR_BILLED = 1; // 0x1
-    field public static final int LIMIT_BEHAVIOR_DISABLED = 0; // 0x0
-    field public static final int LIMIT_BEHAVIOR_THROTTLED = 2; // 0x2
-    field public static final int LIMIT_BEHAVIOR_UNKNOWN = -1; // 0xffffffff
-    field public static final long TIME_UNKNOWN = -1L; // 0xffffffffffffffffL
-  }
-
-  public static class SubscriptionPlan.Builder {
-    method public android.telephony.SubscriptionPlan build();
-    method public static android.telephony.SubscriptionPlan.Builder createNonrecurring(java.time.ZonedDateTime, java.time.ZonedDateTime);
-    method public static android.telephony.SubscriptionPlan.Builder createRecurring(java.time.ZonedDateTime, java.time.Period);
-    method @NonNull public android.telephony.SubscriptionPlan.Builder resetNetworkTypes();
-    method public android.telephony.SubscriptionPlan.Builder setDataLimit(long, int);
-    method public android.telephony.SubscriptionPlan.Builder setDataUsage(long, long);
-    method @NonNull public android.telephony.SubscriptionPlan.Builder setNetworkTypes(@NonNull int[]);
-    method public android.telephony.SubscriptionPlan.Builder setSummary(@Nullable CharSequence);
-    method public android.telephony.SubscriptionPlan.Builder setTitle(@Nullable CharSequence);
-  }
-
-  public final class TelephonyDisplayInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getNetworkType();
-    method public int getOverrideNetworkType();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.TelephonyDisplayInfo> CREATOR;
-    field public static final int OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO = 2; // 0x2
-    field public static final int OVERRIDE_NETWORK_TYPE_LTE_CA = 1; // 0x1
-    field public static final int OVERRIDE_NETWORK_TYPE_NONE = 0; // 0x0
-    field public static final int OVERRIDE_NETWORK_TYPE_NR_NSA = 3; // 0x3
-    field public static final int OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE = 4; // 0x4
-  }
-
-  public class TelephonyManager {
-    method public boolean canChangeDtmfToneLength();
-    method @Nullable public android.telephony.TelephonyManager createForPhoneAccountHandle(android.telecom.PhoneAccountHandle);
-    method public android.telephony.TelephonyManager createForSubscriptionId(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean doesSwitchMultiSimConfigTriggerReboot();
-    method public int getActiveModemCount();
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public java.util.List<android.telephony.CellInfo> getAllCellInfo();
-    method public int getCallState();
-    method public int getCardIdForDefaultEuicc();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) @WorkerThread public android.os.PersistableBundle getCarrierConfig();
-    method public int getCarrierIdFromSimMccMnc();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public android.telephony.CellLocation getCellLocation();
-    method public int getDataActivity();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getDataNetworkType();
-    method public int getDataState();
-    method @Deprecated @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getDeviceId();
-    method @Deprecated @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getDeviceId(int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getDeviceSoftwareVersion();
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.Map<java.lang.Integer,java.util.List<android.telephony.emergency.EmergencyNumber>> getEmergencyNumberList();
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.Map<java.lang.Integer,java.util.List<android.telephony.emergency.EmergencyNumber>> getEmergencyNumberList(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String[] getForbiddenPlmns();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getGroupIdLevel1();
-    method public String getIccAuthentication(int, int, String);
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getImei();
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getImei(int);
-    method @RequiresPermission(anyOf={android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.READ_SMS, android.Manifest.permission.READ_PHONE_NUMBERS}) public String getLine1Number();
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRECISE_PHONE_STATE) public String getManualNetworkSelectionPlmn();
-    method @Nullable public String getManufacturerCode();
-    method @Nullable public String getManufacturerCode(int);
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getMeid();
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getMeid(int);
-    method public String getMmsUAProfUrl();
-    method public String getMmsUserAgent();
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getNai();
-    method public String getNetworkCountryIso();
-    method @NonNull public String getNetworkCountryIso(int);
-    method public String getNetworkOperator();
-    method public String getNetworkOperatorName();
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public int getNetworkSelectionMode();
-    method public String getNetworkSpecifier();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getNetworkType();
-    method @Deprecated public int getPhoneCount();
-    method public int getPhoneType();
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PHONE_STATE}) public int getPreferredOpportunisticDataSubscription();
-    method @RequiresPermission(allOf={android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.ACCESS_COARSE_LOCATION}) public android.telephony.ServiceState getServiceState();
-    method @Nullable public android.telephony.SignalStrength getSignalStrength();
-    method public int getSimCarrierId();
-    method @Nullable public CharSequence getSimCarrierIdName();
-    method public String getSimCountryIso();
-    method public String getSimOperator();
-    method public String getSimOperatorName();
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getSimSerialNumber();
-    method public int getSimSpecificCarrierId();
-    method @Nullable public CharSequence getSimSpecificCarrierIdName();
-    method public int getSimState();
-    method public int getSimState(int);
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getSubscriberId();
-    method public int getSubscriptionId();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getSubscriptionId(@NonNull android.telecom.PhoneAccountHandle);
-    method public int getSupportedModemCount();
-    method @Nullable public String getTypeAllocationCode();
-    method @Nullable public String getTypeAllocationCode(int);
-    method @NonNull @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public java.util.List<android.telephony.UiccCardInfo> getUiccCardsInfo();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getVisualVoicemailPackageName();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getVoiceMailAlphaTag();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getVoiceMailNumber();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getVoiceNetworkType();
-    method public android.net.Uri getVoicemailRingtoneUri(android.telecom.PhoneAccountHandle);
-    method public boolean hasCarrierPrivileges();
-    method public boolean hasIccCard();
-    method @Deprecated public boolean iccCloseLogicalChannel(int);
-    method @Deprecated public byte[] iccExchangeSimIO(int, int, int, int, int, String);
-    method @Deprecated public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(String);
-    method @Deprecated public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(String, int);
-    method @Deprecated public String iccTransmitApduBasicChannel(int, int, int, int, int, String);
-    method @Deprecated public String iccTransmitApduLogicalChannel(int, int, int, int, int, int, String);
-    method public boolean isConcurrentVoiceAndDataSupported();
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.MODIFY_PHONE_STATE}) public boolean isDataEnabled();
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isDataRoamingEnabled();
-    method public boolean isEmergencyNumber(@NonNull String);
-    method public boolean isHearingAidCompatibilitySupported();
-    method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRECISE_PHONE_STATE, "android.permission.READ_PRIVILEGED_PHONE_STATE"}) public boolean isManualNetworkSelectionAllowed();
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isModemEnabledForSlot(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int isMultiSimSupported();
-    method public boolean isNetworkRoaming();
-    method public boolean isRttSupported();
-    method public boolean isSmsCapable();
-    method @Deprecated public boolean isTtyModeSupported();
-    method public boolean isVoiceCapable();
-    method public boolean isVoicemailVibrationEnabled(android.telecom.PhoneAccountHandle);
-    method public boolean isWorldPhone();
-    method public void listen(android.telephony.PhoneStateListener, int);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public void requestCellInfoUpdate(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.TelephonyManager.CellInfoCallback);
-    method @RequiresPermission(allOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.ACCESS_FINE_LOCATION}) public android.telephony.NetworkScan requestNetworkScan(android.telephony.NetworkScanRequest, java.util.concurrent.Executor, android.telephony.TelephonyScanManager.NetworkScanCallback);
-    method public void sendDialerSpecialCode(String);
-    method @Deprecated public String sendEnvelopeWithStatus(String);
-    method @RequiresPermission(android.Manifest.permission.CALL_PHONE) public void sendUssdRequest(String, android.telephony.TelephonyManager.UssdResponseCallback, android.os.Handler);
-    method public void sendVisualVoicemailSms(String, int, String, android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int setForbiddenPlmns(@NonNull java.util.List<java.lang.String>);
-    method public boolean setLine1NumberForDisplay(String, String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setNetworkSelectionModeAutomatic();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setNetworkSelectionModeManual(String, boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setNetworkSelectionModeManual(@NonNull String, boolean, int);
-    method public boolean setOperatorBrandOverride(String);
-    method public boolean setPreferredNetworkTypeToGlobal();
-    method public void setPreferredOpportunisticDataSubscription(int, boolean, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<java.lang.Integer>);
-    method public void setVisualVoicemailSmsFilterSettings(android.telephony.VisualVoicemailSmsFilterSettings);
-    method public boolean setVoiceMailNumber(String, String);
-    method @Deprecated public void setVoicemailRingtoneUri(android.telecom.PhoneAccountHandle, android.net.Uri);
-    method @Deprecated public void setVoicemailVibrationEnabled(android.telecom.PhoneAccountHandle, boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void switchMultiSimConfig(int);
-    method public void updateAvailableNetworks(@NonNull java.util.List<android.telephony.AvailableNetworkInfo>, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<java.lang.Integer>);
-    field public static final String ACTION_CARRIER_MESSAGING_CLIENT_SERVICE = "android.telephony.action.CARRIER_MESSAGING_CLIENT_SERVICE";
-    field public static final String ACTION_CONFIGURE_VOICEMAIL = "android.telephony.action.CONFIGURE_VOICEMAIL";
-    field public static final String ACTION_MULTI_SIM_CONFIG_CHANGED = "android.telephony.action.MULTI_SIM_CONFIG_CHANGED";
-    field public static final String ACTION_NETWORK_COUNTRY_CHANGED = "android.telephony.action.NETWORK_COUNTRY_CHANGED";
-    field @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public static final String ACTION_PHONE_STATE_CHANGED = "android.intent.action.PHONE_STATE";
-    field public static final String ACTION_RESPOND_VIA_MESSAGE = "android.intent.action.RESPOND_VIA_MESSAGE";
-    field public static final String ACTION_SECRET_CODE = "android.telephony.action.SECRET_CODE";
-    field public static final String ACTION_SHOW_VOICEMAIL_NOTIFICATION = "android.telephony.action.SHOW_VOICEMAIL_NOTIFICATION";
-    field public static final String ACTION_SUBSCRIPTION_CARRIER_IDENTITY_CHANGED = "android.telephony.action.SUBSCRIPTION_CARRIER_IDENTITY_CHANGED";
-    field public static final String ACTION_SUBSCRIPTION_SPECIFIC_CARRIER_IDENTITY_CHANGED = "android.telephony.action.SUBSCRIPTION_SPECIFIC_CARRIER_IDENTITY_CHANGED";
-    field public static final int APPTYPE_CSIM = 4; // 0x4
-    field public static final int APPTYPE_ISIM = 5; // 0x5
-    field public static final int APPTYPE_RUIM = 3; // 0x3
-    field public static final int APPTYPE_SIM = 1; // 0x1
-    field public static final int APPTYPE_USIM = 2; // 0x2
-    field public static final int AUTHTYPE_EAP_AKA = 129; // 0x81
-    field public static final int AUTHTYPE_EAP_SIM = 128; // 0x80
-    field public static final int CALL_STATE_IDLE = 0; // 0x0
-    field public static final int CALL_STATE_OFFHOOK = 2; // 0x2
-    field public static final int CALL_STATE_RINGING = 1; // 0x1
-    field public static final int CDMA_ROAMING_MODE_AFFILIATED = 1; // 0x1
-    field public static final int CDMA_ROAMING_MODE_ANY = 2; // 0x2
-    field public static final int CDMA_ROAMING_MODE_HOME = 0; // 0x0
-    field public static final int CDMA_ROAMING_MODE_RADIO_DEFAULT = -1; // 0xffffffff
-    field public static final int DATA_ACTIVITY_DORMANT = 4; // 0x4
-    field public static final int DATA_ACTIVITY_IN = 1; // 0x1
-    field public static final int DATA_ACTIVITY_INOUT = 3; // 0x3
-    field public static final int DATA_ACTIVITY_NONE = 0; // 0x0
-    field public static final int DATA_ACTIVITY_OUT = 2; // 0x2
-    field public static final int DATA_CONNECTED = 2; // 0x2
-    field public static final int DATA_CONNECTING = 1; // 0x1
-    field public static final int DATA_DISCONNECTED = 0; // 0x0
-    field public static final int DATA_DISCONNECTING = 4; // 0x4
-    field public static final int DATA_SUSPENDED = 3; // 0x3
-    field public static final int DATA_UNKNOWN = -1; // 0xffffffff
-    field public static final String EXTRA_ACTIVE_SIM_SUPPORTED_COUNT = "android.telephony.extra.ACTIVE_SIM_SUPPORTED_COUNT";
-    field public static final String EXTRA_CALL_VOICEMAIL_INTENT = "android.telephony.extra.CALL_VOICEMAIL_INTENT";
-    field public static final String EXTRA_CARRIER_ID = "android.telephony.extra.CARRIER_ID";
-    field public static final String EXTRA_CARRIER_NAME = "android.telephony.extra.CARRIER_NAME";
-    field public static final String EXTRA_HIDE_PUBLIC_SETTINGS = "android.telephony.extra.HIDE_PUBLIC_SETTINGS";
-    field @Deprecated public static final String EXTRA_INCOMING_NUMBER = "incoming_number";
-    field public static final String EXTRA_IS_REFRESH = "android.telephony.extra.IS_REFRESH";
-    field public static final String EXTRA_LAUNCH_VOICEMAIL_SETTINGS_INTENT = "android.telephony.extra.LAUNCH_VOICEMAIL_SETTINGS_INTENT";
-    field public static final String EXTRA_NETWORK_COUNTRY = "android.telephony.extra.NETWORK_COUNTRY";
-    field public static final String EXTRA_NOTIFICATION_COUNT = "android.telephony.extra.NOTIFICATION_COUNT";
-    field public static final String EXTRA_PHONE_ACCOUNT_HANDLE = "android.telephony.extra.PHONE_ACCOUNT_HANDLE";
-    field public static final String EXTRA_SPECIFIC_CARRIER_ID = "android.telephony.extra.SPECIFIC_CARRIER_ID";
-    field public static final String EXTRA_SPECIFIC_CARRIER_NAME = "android.telephony.extra.SPECIFIC_CARRIER_NAME";
-    field public static final String EXTRA_STATE = "state";
-    field public static final String EXTRA_STATE_IDLE;
-    field public static final String EXTRA_STATE_OFFHOOK;
-    field public static final String EXTRA_STATE_RINGING;
-    field public static final String EXTRA_SUBSCRIPTION_ID = "android.telephony.extra.SUBSCRIPTION_ID";
-    field public static final String EXTRA_VOICEMAIL_NUMBER = "android.telephony.extra.VOICEMAIL_NUMBER";
-    field public static final String METADATA_HIDE_VOICEMAIL_SETTINGS_MENU = "android.telephony.HIDE_VOICEMAIL_SETTINGS_MENU";
-    field public static final int MULTISIM_ALLOWED = 0; // 0x0
-    field public static final int MULTISIM_NOT_SUPPORTED_BY_CARRIER = 2; // 0x2
-    field public static final int MULTISIM_NOT_SUPPORTED_BY_HARDWARE = 1; // 0x1
-    field public static final int NETWORK_SELECTION_MODE_AUTO = 1; // 0x1
-    field public static final int NETWORK_SELECTION_MODE_MANUAL = 2; // 0x2
-    field public static final int NETWORK_SELECTION_MODE_UNKNOWN = 0; // 0x0
-    field public static final int NETWORK_TYPE_1xRTT = 7; // 0x7
-    field public static final int NETWORK_TYPE_CDMA = 4; // 0x4
-    field public static final int NETWORK_TYPE_EDGE = 2; // 0x2
-    field public static final int NETWORK_TYPE_EHRPD = 14; // 0xe
-    field public static final int NETWORK_TYPE_EVDO_0 = 5; // 0x5
-    field public static final int NETWORK_TYPE_EVDO_A = 6; // 0x6
-    field public static final int NETWORK_TYPE_EVDO_B = 12; // 0xc
-    field public static final int NETWORK_TYPE_GPRS = 1; // 0x1
-    field public static final int NETWORK_TYPE_GSM = 16; // 0x10
-    field public static final int NETWORK_TYPE_HSDPA = 8; // 0x8
-    field public static final int NETWORK_TYPE_HSPA = 10; // 0xa
-    field public static final int NETWORK_TYPE_HSPAP = 15; // 0xf
-    field public static final int NETWORK_TYPE_HSUPA = 9; // 0x9
-    field public static final int NETWORK_TYPE_IDEN = 11; // 0xb
-    field public static final int NETWORK_TYPE_IWLAN = 18; // 0x12
-    field public static final int NETWORK_TYPE_LTE = 13; // 0xd
-    field public static final int NETWORK_TYPE_NR = 20; // 0x14
-    field public static final int NETWORK_TYPE_TD_SCDMA = 17; // 0x11
-    field public static final int NETWORK_TYPE_UMTS = 3; // 0x3
-    field public static final int NETWORK_TYPE_UNKNOWN = 0; // 0x0
-    field public static final int PHONE_TYPE_CDMA = 2; // 0x2
-    field public static final int PHONE_TYPE_GSM = 1; // 0x1
-    field public static final int PHONE_TYPE_NONE = 0; // 0x0
-    field public static final int PHONE_TYPE_SIP = 3; // 0x3
-    field public static final int SET_OPPORTUNISTIC_SUB_INACTIVE_SUBSCRIPTION = 2; // 0x2
-    field public static final int SET_OPPORTUNISTIC_SUB_NO_OPPORTUNISTIC_SUB_AVAILABLE = 3; // 0x3
-    field public static final int SET_OPPORTUNISTIC_SUB_REMOTE_SERVICE_EXCEPTION = 4; // 0x4
-    field public static final int SET_OPPORTUNISTIC_SUB_SUCCESS = 0; // 0x0
-    field public static final int SET_OPPORTUNISTIC_SUB_VALIDATION_FAILED = 1; // 0x1
-    field public static final int SIM_STATE_ABSENT = 1; // 0x1
-    field public static final int SIM_STATE_CARD_IO_ERROR = 8; // 0x8
-    field public static final int SIM_STATE_CARD_RESTRICTED = 9; // 0x9
-    field public static final int SIM_STATE_NETWORK_LOCKED = 4; // 0x4
-    field public static final int SIM_STATE_NOT_READY = 6; // 0x6
-    field public static final int SIM_STATE_PERM_DISABLED = 7; // 0x7
-    field public static final int SIM_STATE_PIN_REQUIRED = 2; // 0x2
-    field public static final int SIM_STATE_PUK_REQUIRED = 3; // 0x3
-    field public static final int SIM_STATE_READY = 5; // 0x5
-    field public static final int SIM_STATE_UNKNOWN = 0; // 0x0
-    field public static final int UNINITIALIZED_CARD_ID = -2; // 0xfffffffe
-    field public static final int UNKNOWN_CARRIER_ID = -1; // 0xffffffff
-    field public static final int UNSUPPORTED_CARD_ID = -1; // 0xffffffff
-    field public static final int UPDATE_AVAILABLE_NETWORKS_ABORTED = 2; // 0x2
-    field public static final int UPDATE_AVAILABLE_NETWORKS_DISABLE_MODEM_FAIL = 5; // 0x5
-    field public static final int UPDATE_AVAILABLE_NETWORKS_ENABLE_MODEM_FAIL = 6; // 0x6
-    field public static final int UPDATE_AVAILABLE_NETWORKS_INVALID_ARGUMENTS = 3; // 0x3
-    field public static final int UPDATE_AVAILABLE_NETWORKS_MULTIPLE_NETWORKS_NOT_SUPPORTED = 7; // 0x7
-    field public static final int UPDATE_AVAILABLE_NETWORKS_NO_CARRIER_PRIVILEGE = 4; // 0x4
-    field public static final int UPDATE_AVAILABLE_NETWORKS_NO_OPPORTUNISTIC_SUB_AVAILABLE = 8; // 0x8
-    field public static final int UPDATE_AVAILABLE_NETWORKS_REMOTE_SERVICE_EXCEPTION = 9; // 0x9
-    field public static final int UPDATE_AVAILABLE_NETWORKS_SERVICE_IS_DISABLED = 10; // 0xa
-    field public static final int UPDATE_AVAILABLE_NETWORKS_SUCCESS = 0; // 0x0
-    field public static final int UPDATE_AVAILABLE_NETWORKS_UNKNOWN_FAILURE = 1; // 0x1
-    field public static final int USSD_ERROR_SERVICE_UNAVAIL = -2; // 0xfffffffe
-    field public static final int USSD_RETURN_FAILURE = -1; // 0xffffffff
-    field public static final String VVM_TYPE_CVVM = "vvm_type_cvvm";
-    field public static final String VVM_TYPE_OMTP = "vvm_type_omtp";
-  }
-
-  public abstract static class TelephonyManager.CellInfoCallback {
-    ctor public TelephonyManager.CellInfoCallback();
-    method public abstract void onCellInfo(@NonNull java.util.List<android.telephony.CellInfo>);
-    method public void onError(int, @Nullable Throwable);
-    field public static final int ERROR_MODEM_ERROR = 2; // 0x2
-    field public static final int ERROR_TIMEOUT = 1; // 0x1
-  }
-
-  public abstract static class TelephonyManager.UssdResponseCallback {
-    ctor public TelephonyManager.UssdResponseCallback();
-    method public void onReceiveUssdResponse(android.telephony.TelephonyManager, String, CharSequence);
-    method public void onReceiveUssdResponseFailed(android.telephony.TelephonyManager, String, int);
-  }
-
-  public final class TelephonyScanManager {
-    ctor public TelephonyScanManager();
-  }
-
-  public abstract static class TelephonyScanManager.NetworkScanCallback {
-    ctor public TelephonyScanManager.NetworkScanCallback();
-    method public void onComplete();
-    method public void onError(int);
-    method public void onResults(java.util.List<android.telephony.CellInfo>);
-  }
-
-  public final class UiccCardInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getCardId();
-    method @Nullable public String getEid();
-    method @Nullable public String getIccId();
-    method public int getSlotIndex();
-    method public boolean isEuicc();
-    method public boolean isRemovable();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.UiccCardInfo> CREATOR;
-  }
-
-  public abstract class VisualVoicemailService extends android.app.Service {
-    ctor public VisualVoicemailService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method @MainThread public abstract void onCellServiceConnected(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telecom.PhoneAccountHandle);
-    method @MainThread public abstract void onSimRemoved(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telecom.PhoneAccountHandle);
-    method @MainThread public abstract void onSmsReceived(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telephony.VisualVoicemailSms);
-    method @MainThread public abstract void onStopped(android.telephony.VisualVoicemailService.VisualVoicemailTask);
-    field public static final String SERVICE_INTERFACE = "android.telephony.VisualVoicemailService";
-  }
-
-  public static class VisualVoicemailService.VisualVoicemailTask {
-    method public final void finish();
-  }
-
-  public final class VisualVoicemailSms implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.os.Bundle getFields();
-    method public String getMessageBody();
-    method public android.telecom.PhoneAccountHandle getPhoneAccountHandle();
-    method public String getPrefix();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.VisualVoicemailSms> CREATOR;
-  }
-
-  public final class VisualVoicemailSmsFilterSettings implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.VisualVoicemailSmsFilterSettings> CREATOR;
-    field public static final int DESTINATION_PORT_ANY = -1; // 0xffffffff
-    field public static final int DESTINATION_PORT_DATA_SMS = -2; // 0xfffffffe
-    field public final String clientPrefix;
-    field public final int destinationPort;
-    field public final java.util.List<java.lang.String> originatingNumbers;
-  }
-
-  public static class VisualVoicemailSmsFilterSettings.Builder {
-    ctor public VisualVoicemailSmsFilterSettings.Builder();
-    method public android.telephony.VisualVoicemailSmsFilterSettings build();
-    method public android.telephony.VisualVoicemailSmsFilterSettings.Builder setClientPrefix(String);
-    method public android.telephony.VisualVoicemailSmsFilterSettings.Builder setDestinationPort(int);
-    method public android.telephony.VisualVoicemailSmsFilterSettings.Builder setOriginatingNumbers(java.util.List<java.lang.String>);
-  }
-
-}
-
-package android.telephony.cdma {
-
-  public class CdmaCellLocation extends android.telephony.CellLocation {
-    ctor public CdmaCellLocation();
-    ctor public CdmaCellLocation(android.os.Bundle);
-    method public static double convertQuartSecToDecDegrees(int);
-    method public void fillInNotifierBundle(android.os.Bundle);
-    method public int getBaseStationId();
-    method public int getBaseStationLatitude();
-    method public int getBaseStationLongitude();
-    method public int getNetworkId();
-    method public int getSystemId();
-    method public void setCellLocationData(int, int, int);
-    method public void setCellLocationData(int, int, int, int, int);
-    method public void setStateInvalid();
-  }
-
-}
-
-package android.telephony.data {
-
-  public class ApnSetting implements android.os.Parcelable {
-    method public int describeContents();
-    method public String getApnName();
-    method public int getApnTypeBitmask();
-    method public int getAuthType();
-    method public int getCarrierId();
-    method public String getEntryName();
-    method public int getId();
-    method @Deprecated public java.net.InetAddress getMmsProxyAddress();
-    method public String getMmsProxyAddressAsString();
-    method public int getMmsProxyPort();
-    method public android.net.Uri getMmsc();
-    method public int getMvnoType();
-    method public int getNetworkTypeBitmask();
-    method public String getOperatorNumeric();
-    method public String getPassword();
-    method public int getProtocol();
-    method @Deprecated public java.net.InetAddress getProxyAddress();
-    method public String getProxyAddressAsString();
-    method public int getProxyPort();
-    method public int getRoamingProtocol();
-    method public String getUser();
-    method public boolean isEnabled();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final int AUTH_TYPE_CHAP = 2; // 0x2
-    field public static final int AUTH_TYPE_NONE = 0; // 0x0
-    field public static final int AUTH_TYPE_PAP = 1; // 0x1
-    field public static final int AUTH_TYPE_PAP_OR_CHAP = 3; // 0x3
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.ApnSetting> CREATOR;
-    field public static final int MVNO_TYPE_GID = 2; // 0x2
-    field public static final int MVNO_TYPE_ICCID = 3; // 0x3
-    field public static final int MVNO_TYPE_IMSI = 1; // 0x1
-    field public static final int MVNO_TYPE_SPN = 0; // 0x0
-    field public static final int PROTOCOL_IP = 0; // 0x0
-    field public static final int PROTOCOL_IPV4V6 = 2; // 0x2
-    field public static final int PROTOCOL_IPV6 = 1; // 0x1
-    field public static final int PROTOCOL_NON_IP = 4; // 0x4
-    field public static final int PROTOCOL_PPP = 3; // 0x3
-    field public static final int PROTOCOL_UNSTRUCTURED = 5; // 0x5
-    field public static final int TYPE_CBS = 128; // 0x80
-    field public static final int TYPE_DEFAULT = 17; // 0x11
-    field public static final int TYPE_DUN = 8; // 0x8
-    field public static final int TYPE_EMERGENCY = 512; // 0x200
-    field public static final int TYPE_FOTA = 32; // 0x20
-    field public static final int TYPE_HIPRI = 16; // 0x10
-    field public static final int TYPE_IA = 256; // 0x100
-    field public static final int TYPE_IMS = 64; // 0x40
-    field public static final int TYPE_MCX = 1024; // 0x400
-    field public static final int TYPE_MMS = 2; // 0x2
-    field public static final int TYPE_SUPL = 4; // 0x4
-    field public static final int TYPE_XCAP = 2048; // 0x800
-  }
-
-  public static class ApnSetting.Builder {
-    ctor public ApnSetting.Builder();
-    method public android.telephony.data.ApnSetting build();
-    method @NonNull public android.telephony.data.ApnSetting.Builder setApnName(@Nullable String);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setApnTypeBitmask(int);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setAuthType(int);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setCarrierEnabled(boolean);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setCarrierId(int);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setEntryName(@Nullable String);
-    method @Deprecated public android.telephony.data.ApnSetting.Builder setMmsProxyAddress(java.net.InetAddress);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setMmsProxyAddress(@Nullable String);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setMmsProxyPort(int);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setMmsc(@Nullable android.net.Uri);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setMvnoType(int);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setNetworkTypeBitmask(int);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setOperatorNumeric(@Nullable String);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setPassword(@Nullable String);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setProtocol(int);
-    method @Deprecated public android.telephony.data.ApnSetting.Builder setProxyAddress(java.net.InetAddress);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setProxyAddress(@Nullable String);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setProxyPort(int);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setRoamingProtocol(int);
-    method @NonNull public android.telephony.data.ApnSetting.Builder setUser(@Nullable String);
-  }
-
-}
-
-package android.telephony.emergency {
-
-  public final class EmergencyNumber implements java.lang.Comparable<android.telephony.emergency.EmergencyNumber> android.os.Parcelable {
-    method public int compareTo(@NonNull android.telephony.emergency.EmergencyNumber);
-    method public int describeContents();
-    method @NonNull public String getCountryIso();
-    method public int getEmergencyCallRouting();
-    method @NonNull public java.util.List<java.lang.Integer> getEmergencyNumberSources();
-    method @NonNull public java.util.List<java.lang.Integer> getEmergencyServiceCategories();
-    method @NonNull public java.util.List<java.lang.String> getEmergencyUrns();
-    method @NonNull public String getMnc();
-    method @NonNull public String getNumber();
-    method public boolean isFromSources(int);
-    method public boolean isInEmergencyServiceCategories(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.emergency.EmergencyNumber> CREATOR;
-    field public static final int EMERGENCY_CALL_ROUTING_EMERGENCY = 1; // 0x1
-    field public static final int EMERGENCY_CALL_ROUTING_NORMAL = 2; // 0x2
-    field public static final int EMERGENCY_CALL_ROUTING_UNKNOWN = 0; // 0x0
-    field public static final int EMERGENCY_NUMBER_SOURCE_DATABASE = 16; // 0x10
-    field public static final int EMERGENCY_NUMBER_SOURCE_DEFAULT = 8; // 0x8
-    field public static final int EMERGENCY_NUMBER_SOURCE_MODEM_CONFIG = 4; // 0x4
-    field public static final int EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING = 1; // 0x1
-    field public static final int EMERGENCY_NUMBER_SOURCE_SIM = 2; // 0x2
-    field public static final int EMERGENCY_SERVICE_CATEGORY_AIEC = 64; // 0x40
-    field public static final int EMERGENCY_SERVICE_CATEGORY_AMBULANCE = 2; // 0x2
-    field public static final int EMERGENCY_SERVICE_CATEGORY_FIRE_BRIGADE = 4; // 0x4
-    field public static final int EMERGENCY_SERVICE_CATEGORY_MARINE_GUARD = 8; // 0x8
-    field public static final int EMERGENCY_SERVICE_CATEGORY_MIEC = 32; // 0x20
-    field public static final int EMERGENCY_SERVICE_CATEGORY_MOUNTAIN_RESCUE = 16; // 0x10
-    field public static final int EMERGENCY_SERVICE_CATEGORY_POLICE = 1; // 0x1
-    field public static final int EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED = 0; // 0x0
-  }
-
-}
-
-package android.telephony.euicc {
-
-  public final class DownloadableSubscription implements android.os.Parcelable {
-    method public int describeContents();
-    method public static android.telephony.euicc.DownloadableSubscription forActivationCode(String);
-    method @Nullable public String getConfirmationCode();
-    method @Nullable public String getEncodedActivationCode();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.euicc.DownloadableSubscription> CREATOR;
-  }
-
-  public final class EuiccInfo implements android.os.Parcelable {
-    ctor public EuiccInfo(@Nullable String);
-    method public int describeContents();
-    method @Nullable public String getOsVersion();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.euicc.EuiccInfo> CREATOR;
-  }
-
-  public class EuiccManager {
-    method @NonNull public android.telephony.euicc.EuiccManager createForCardId(int);
-    method @RequiresPermission("android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS") public void deleteSubscription(int, android.app.PendingIntent);
-    method @RequiresPermission("android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS") public void downloadSubscription(android.telephony.euicc.DownloadableSubscription, boolean, android.app.PendingIntent);
-    method @Nullable public String getEid();
-    method @Nullable public android.telephony.euicc.EuiccInfo getEuiccInfo();
-    method public boolean isEnabled();
-    method public void startResolutionActivity(android.app.Activity, int, android.content.Intent, android.app.PendingIntent) throws android.content.IntentSender.SendIntentException;
-    method @RequiresPermission("android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS") public void switchToSubscription(int, android.app.PendingIntent);
-    method @RequiresPermission("android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS") public void updateSubscriptionNickname(int, @Nullable String, @NonNull android.app.PendingIntent);
-    field public static final String ACTION_MANAGE_EMBEDDED_SUBSCRIPTIONS = "android.telephony.euicc.action.MANAGE_EMBEDDED_SUBSCRIPTIONS";
-    field public static final String ACTION_NOTIFY_CARRIER_SETUP_INCOMPLETE = "android.telephony.euicc.action.NOTIFY_CARRIER_SETUP_INCOMPLETE";
-    field public static final String ACTION_START_EUICC_ACTIVATION = "android.telephony.euicc.action.START_EUICC_ACTIVATION";
-    field public static final int EMBEDDED_SUBSCRIPTION_RESULT_ERROR = 2; // 0x2
-    field public static final int EMBEDDED_SUBSCRIPTION_RESULT_OK = 0; // 0x0
-    field public static final int EMBEDDED_SUBSCRIPTION_RESULT_RESOLVABLE_ERROR = 1; // 0x1
-    field public static final int ERROR_ADDRESS_MISSING = 10011; // 0x271b
-    field public static final int ERROR_CARRIER_LOCKED = 10000; // 0x2710
-    field public static final int ERROR_CERTIFICATE_ERROR = 10012; // 0x271c
-    field public static final int ERROR_CONNECTION_ERROR = 10014; // 0x271e
-    field public static final int ERROR_DISALLOWED_BY_PPR = 10010; // 0x271a
-    field public static final int ERROR_EUICC_INSUFFICIENT_MEMORY = 10004; // 0x2714
-    field public static final int ERROR_EUICC_MISSING = 10006; // 0x2716
-    field public static final int ERROR_INCOMPATIBLE_CARRIER = 10003; // 0x2713
-    field public static final int ERROR_INSTALL_PROFILE = 10009; // 0x2719
-    field public static final int ERROR_INVALID_ACTIVATION_CODE = 10001; // 0x2711
-    field public static final int ERROR_INVALID_CONFIRMATION_CODE = 10002; // 0x2712
-    field public static final int ERROR_INVALID_RESPONSE = 10015; // 0x271f
-    field public static final int ERROR_NO_PROFILES_AVAILABLE = 10013; // 0x271d
-    field public static final int ERROR_OPERATION_BUSY = 10016; // 0x2720
-    field public static final int ERROR_SIM_MISSING = 10008; // 0x2718
-    field public static final int ERROR_TIME_OUT = 10005; // 0x2715
-    field public static final int ERROR_UNSUPPORTED_VERSION = 10007; // 0x2717
-    field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_DETAILED_CODE";
-    field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_DOWNLOADABLE_SUBSCRIPTION = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_DOWNLOADABLE_SUBSCRIPTION";
-    field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_ERROR_CODE = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_ERROR_CODE";
-    field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_OPERATION_CODE";
-    field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE";
-    field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE";
-    field public static final String EXTRA_USE_QR_SCANNER = "android.telephony.euicc.extra.USE_QR_SCANNER";
-    field public static final String META_DATA_CARRIER_ICON = "android.telephony.euicc.carriericon";
-    field public static final int OPERATION_APDU = 8; // 0x8
-    field public static final int OPERATION_DOWNLOAD = 5; // 0x5
-    field public static final int OPERATION_EUICC_CARD = 3; // 0x3
-    field public static final int OPERATION_EUICC_GSMA = 7; // 0x7
-    field public static final int OPERATION_HTTP = 11; // 0xb
-    field public static final int OPERATION_METADATA = 6; // 0x6
-    field public static final int OPERATION_SIM_SLOT = 2; // 0x2
-    field public static final int OPERATION_SMDX = 9; // 0x9
-    field public static final int OPERATION_SMDX_SUBJECT_REASON_CODE = 10; // 0xa
-    field public static final int OPERATION_SWITCH = 4; // 0x4
-    field public static final int OPERATION_SYSTEM = 1; // 0x1
-  }
-
-}
-
-package android.telephony.gsm {
-
-  public class GsmCellLocation extends android.telephony.CellLocation {
-    ctor public GsmCellLocation();
-    ctor public GsmCellLocation(android.os.Bundle);
-    method public void fillInNotifierBundle(android.os.Bundle);
-    method public int getCid();
-    method public int getLac();
-    method public int getPsc();
-    method public void setLacAndCid(int, int);
-    method public void setStateInvalid();
-  }
-
-  @Deprecated public final class SmsManager {
-    method @Deprecated public java.util.ArrayList<java.lang.String> divideMessage(String);
-    method @Deprecated public static android.telephony.gsm.SmsManager getDefault();
-    method @Deprecated public void sendDataMessage(String, String, short, byte[], android.app.PendingIntent, android.app.PendingIntent);
-    method @Deprecated public void sendMultipartTextMessage(String, String, java.util.ArrayList<java.lang.String>, java.util.ArrayList<android.app.PendingIntent>, java.util.ArrayList<android.app.PendingIntent>);
-    method @Deprecated public void sendTextMessage(String, String, String, android.app.PendingIntent, android.app.PendingIntent);
-    field @Deprecated public static final int RESULT_ERROR_GENERIC_FAILURE = 1; // 0x1
-    field @Deprecated public static final int RESULT_ERROR_NO_SERVICE = 4; // 0x4
-    field @Deprecated public static final int RESULT_ERROR_NULL_PDU = 3; // 0x3
-    field @Deprecated public static final int RESULT_ERROR_RADIO_OFF = 2; // 0x2
-    field @Deprecated public static final int STATUS_ON_SIM_FREE = 0; // 0x0
-    field @Deprecated public static final int STATUS_ON_SIM_READ = 1; // 0x1
-    field @Deprecated public static final int STATUS_ON_SIM_SENT = 5; // 0x5
-    field @Deprecated public static final int STATUS_ON_SIM_UNREAD = 3; // 0x3
-    field @Deprecated public static final int STATUS_ON_SIM_UNSENT = 7; // 0x7
-  }
-
-  @Deprecated public class SmsMessage {
-    ctor @Deprecated public SmsMessage();
-    method @Deprecated public static int[] calculateLength(CharSequence, boolean);
-    method @Deprecated public static int[] calculateLength(String, boolean);
-    method @Deprecated public static android.telephony.gsm.SmsMessage createFromPdu(byte[]);
-    method @Deprecated public String getDisplayMessageBody();
-    method @Deprecated public String getDisplayOriginatingAddress();
-    method @Deprecated public String getEmailBody();
-    method @Deprecated public String getEmailFrom();
-    method @Deprecated public int getIndexOnSim();
-    method @Deprecated public String getMessageBody();
-    method @Deprecated public android.telephony.gsm.SmsMessage.MessageClass getMessageClass();
-    method @Deprecated public String getOriginatingAddress();
-    method @Deprecated public byte[] getPdu();
-    method @Deprecated public int getProtocolIdentifier();
-    method @Deprecated public String getPseudoSubject();
-    method @Deprecated public String getServiceCenterAddress();
-    method @Deprecated public int getStatus();
-    method @Deprecated public int getStatusOnSim();
-    method @Deprecated public static android.telephony.gsm.SmsMessage.SubmitPdu getSubmitPdu(String, String, String, boolean);
-    method @Deprecated public static android.telephony.gsm.SmsMessage.SubmitPdu getSubmitPdu(String, String, short, byte[], boolean);
-    method @Deprecated public static int getTPLayerLengthForPDU(String);
-    method @Deprecated public long getTimestampMillis();
-    method @Deprecated public byte[] getUserData();
-    method @Deprecated public boolean isCphsMwiMessage();
-    method @Deprecated public boolean isEmail();
-    method @Deprecated public boolean isMWIClearMessage();
-    method @Deprecated public boolean isMWISetMessage();
-    method @Deprecated public boolean isMwiDontStore();
-    method @Deprecated public boolean isReplace();
-    method @Deprecated public boolean isReplyPathPresent();
-    method @Deprecated public boolean isStatusReportMessage();
-    field @Deprecated public static final int ENCODING_16BIT = 3; // 0x3
-    field @Deprecated public static final int ENCODING_7BIT = 1; // 0x1
-    field @Deprecated public static final int ENCODING_8BIT = 2; // 0x2
-    field @Deprecated public static final int ENCODING_UNKNOWN = 0; // 0x0
-    field @Deprecated public static final int MAX_USER_DATA_BYTES = 140; // 0x8c
-    field @Deprecated public static final int MAX_USER_DATA_SEPTETS = 160; // 0xa0
-    field @Deprecated public static final int MAX_USER_DATA_SEPTETS_WITH_HEADER = 153; // 0x99
-  }
-
-  @Deprecated public enum SmsMessage.MessageClass {
-    enum_constant @Deprecated public static final android.telephony.gsm.SmsMessage.MessageClass CLASS_0;
-    enum_constant @Deprecated public static final android.telephony.gsm.SmsMessage.MessageClass CLASS_1;
-    enum_constant @Deprecated public static final android.telephony.gsm.SmsMessage.MessageClass CLASS_2;
-    enum_constant @Deprecated public static final android.telephony.gsm.SmsMessage.MessageClass CLASS_3;
-    enum_constant @Deprecated public static final android.telephony.gsm.SmsMessage.MessageClass UNKNOWN;
-  }
-
-  @Deprecated public static class SmsMessage.SubmitPdu {
-    ctor @Deprecated public SmsMessage.SubmitPdu();
-    field @Deprecated public byte[] encodedMessage;
-    field @Deprecated public byte[] encodedScAddress;
-  }
-
-}
-
-package android.telephony.ims {
-
-  public final class ImsException extends java.lang.Exception {
-    method public int getCode();
-    field public static final int CODE_ERROR_INVALID_SUBSCRIPTION = 3; // 0x3
-    field public static final int CODE_ERROR_SERVICE_UNAVAILABLE = 1; // 0x1
-    field public static final int CODE_ERROR_UNSPECIFIED = 0; // 0x0
-    field public static final int CODE_ERROR_UNSUPPORTED_OPERATION = 2; // 0x2
-  }
-
-  public class ImsManager {
-    method @NonNull public android.telephony.ims.ImsMmTelManager getImsMmTelManager(int);
-    method @NonNull public android.telephony.ims.ImsRcsManager getImsRcsManager(int);
-    field public static final String ACTION_WFC_IMS_REGISTRATION_ERROR = "android.telephony.ims.action.WFC_IMS_REGISTRATION_ERROR";
-    field public static final String EXTRA_WFC_REGISTRATION_FAILURE_MESSAGE = "android.telephony.ims.extra.WFC_REGISTRATION_FAILURE_MESSAGE";
-    field public static final String EXTRA_WFC_REGISTRATION_FAILURE_TITLE = "android.telephony.ims.extra.WFC_REGISTRATION_FAILURE_TITLE";
-  }
-
-  public class ImsMmTelManager implements android.telephony.ims.RegistrationManager {
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getRegistrationState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public void getRegistrationTransportType(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public int getVoWiFiModeSetting();
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public boolean isAdvancedCallingSettingEnabled();
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public boolean isTtyOverVolteEnabled();
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public boolean isVoWiFiRoamingSettingEnabled();
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public boolean isVoWiFiSettingEnabled();
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public boolean isVtSettingEnabled();
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public void registerImsRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.RegistrationManager.RegistrationCallback) throws android.telephony.ims.ImsException;
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public void registerMmTelCapabilityCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ImsMmTelManager.CapabilityCallback) throws android.telephony.ims.ImsException;
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.RegistrationManager.RegistrationCallback);
-    method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public void unregisterMmTelCapabilityCallback(@NonNull android.telephony.ims.ImsMmTelManager.CapabilityCallback);
-    field public static final int WIFI_MODE_CELLULAR_PREFERRED = 1; // 0x1
-    field public static final int WIFI_MODE_WIFI_ONLY = 0; // 0x0
-    field public static final int WIFI_MODE_WIFI_PREFERRED = 2; // 0x2
-  }
-
-  public static class ImsMmTelManager.CapabilityCallback {
-    ctor public ImsMmTelManager.CapabilityCallback();
-    method public void onCapabilitiesStatusChanged(@NonNull android.telephony.ims.feature.MmTelFeature.MmTelCapabilities);
-  }
-
-  public class ImsRcsManager {
-    method @NonNull public android.telephony.ims.RcsUceAdapter getUceAdapter();
-    field public static final String ACTION_SHOW_CAPABILITY_DISCOVERY_OPT_IN = "android.telephony.ims.action.SHOW_CAPABILITY_DISCOVERY_OPT_IN";
-  }
-
-  public final class ImsReasonInfo implements android.os.Parcelable {
-    ctor public ImsReasonInfo(int, int, @Nullable String);
-    method public int describeContents();
-    method public int getCode();
-    method public int getExtraCode();
-    method @Nullable public String getExtraMessage();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final int CODE_ACCESS_CLASS_BLOCKED = 1512; // 0x5e8
-    field public static final int CODE_ANSWERED_ELSEWHERE = 1014; // 0x3f6
-    field public static final int CODE_BLACKLISTED_CALL_ID = 506; // 0x1fa
-    field public static final int CODE_CALL_BARRED = 240; // 0xf0
-    field public static final int CODE_CALL_DROP_IWLAN_TO_LTE_UNAVAILABLE = 1100; // 0x44c
-    field public static final int CODE_CALL_END_CAUSE_CALL_PULL = 1016; // 0x3f8
-    field public static final int CODE_CALL_PULL_OUT_OF_SYNC = 1015; // 0x3f7
-    field public static final int CODE_DATA_DISABLED = 1406; // 0x57e
-    field public static final int CODE_DATA_LIMIT_REACHED = 1405; // 0x57d
-    field public static final int CODE_DIAL_MODIFIED_TO_DIAL = 246; // 0xf6
-    field public static final int CODE_DIAL_MODIFIED_TO_DIAL_VIDEO = 247; // 0xf7
-    field public static final int CODE_DIAL_MODIFIED_TO_SS = 245; // 0xf5
-    field public static final int CODE_DIAL_MODIFIED_TO_USSD = 244; // 0xf4
-    field public static final int CODE_DIAL_VIDEO_MODIFIED_TO_DIAL = 248; // 0xf8
-    field public static final int CODE_DIAL_VIDEO_MODIFIED_TO_DIAL_VIDEO = 249; // 0xf9
-    field public static final int CODE_DIAL_VIDEO_MODIFIED_TO_SS = 250; // 0xfa
-    field public static final int CODE_DIAL_VIDEO_MODIFIED_TO_USSD = 251; // 0xfb
-    field public static final int CODE_ECBM_NOT_SUPPORTED = 901; // 0x385
-    field public static final int CODE_EMERGENCY_PERM_FAILURE = 364; // 0x16c
-    field public static final int CODE_EMERGENCY_TEMP_FAILURE = 363; // 0x16b
-    field public static final int CODE_EPDG_TUNNEL_ESTABLISH_FAILURE = 1400; // 0x578
-    field public static final int CODE_EPDG_TUNNEL_LOST_CONNECTION = 1402; // 0x57a
-    field public static final int CODE_EPDG_TUNNEL_REKEY_FAILURE = 1401; // 0x579
-    field public static final int CODE_FDN_BLOCKED = 241; // 0xf1
-    field public static final int CODE_IKEV2_AUTH_FAILURE = 1408; // 0x580
-    field public static final int CODE_IMEI_NOT_ACCEPTED = 243; // 0xf3
-    field public static final int CODE_IWLAN_DPD_FAILURE = 1300; // 0x514
-    field public static final int CODE_LOCAL_CALL_BUSY = 142; // 0x8e
-    field public static final int CODE_LOCAL_CALL_CS_RETRY_REQUIRED = 146; // 0x92
-    field public static final int CODE_LOCAL_CALL_DECLINE = 143; // 0x8f
-    field public static final int CODE_LOCAL_CALL_EXCEEDED = 141; // 0x8d
-    field public static final int CODE_LOCAL_CALL_RESOURCE_RESERVATION_FAILED = 145; // 0x91
-    field public static final int CODE_LOCAL_CALL_TERMINATED = 148; // 0x94
-    field public static final int CODE_LOCAL_CALL_VCC_ON_PROGRESSING = 144; // 0x90
-    field public static final int CODE_LOCAL_CALL_VOLTE_RETRY_REQUIRED = 147; // 0x93
-    field public static final int CODE_LOCAL_ENDED_BY_CONFERENCE_MERGE = 108; // 0x6c
-    field public static final int CODE_LOCAL_HO_NOT_FEASIBLE = 149; // 0x95
-    field public static final int CODE_LOCAL_ILLEGAL_ARGUMENT = 101; // 0x65
-    field public static final int CODE_LOCAL_ILLEGAL_STATE = 102; // 0x66
-    field public static final int CODE_LOCAL_IMS_SERVICE_DOWN = 106; // 0x6a
-    field public static final int CODE_LOCAL_INTERNAL_ERROR = 103; // 0x67
-    field public static final int CODE_LOCAL_LOW_BATTERY = 112; // 0x70
-    field public static final int CODE_LOCAL_NETWORK_IP_CHANGED = 124; // 0x7c
-    field public static final int CODE_LOCAL_NETWORK_NO_LTE_COVERAGE = 122; // 0x7a
-    field public static final int CODE_LOCAL_NETWORK_NO_SERVICE = 121; // 0x79
-    field public static final int CODE_LOCAL_NETWORK_ROAMING = 123; // 0x7b
-    field public static final int CODE_LOCAL_NOT_REGISTERED = 132; // 0x84
-    field public static final int CODE_LOCAL_NO_PENDING_CALL = 107; // 0x6b
-    field public static final int CODE_LOCAL_POWER_OFF = 111; // 0x6f
-    field public static final int CODE_LOCAL_SERVICE_UNAVAILABLE = 131; // 0x83
-    field public static final int CODE_LOW_BATTERY = 505; // 0x1f9
-    field public static final int CODE_MAXIMUM_NUMBER_OF_CALLS_REACHED = 1403; // 0x57b
-    field public static final int CODE_MEDIA_INIT_FAILED = 401; // 0x191
-    field public static final int CODE_MEDIA_NOT_ACCEPTABLE = 403; // 0x193
-    field public static final int CODE_MEDIA_NO_DATA = 402; // 0x192
-    field public static final int CODE_MEDIA_UNSPECIFIED = 404; // 0x194
-    field public static final int CODE_MULTIENDPOINT_NOT_SUPPORTED = 902; // 0x386
-    field public static final int CODE_NETWORK_DETACH = 1513; // 0x5e9
-    field public static final int CODE_NETWORK_REJECT = 1504; // 0x5e0
-    field public static final int CODE_NETWORK_RESP_TIMEOUT = 1503; // 0x5df
-    field public static final int CODE_NO_CSFB_IN_CS_ROAM = 1516; // 0x5ec
-    field public static final int CODE_NO_VALID_SIM = 1501; // 0x5dd
-    field public static final int CODE_OEM_CAUSE_1 = 61441; // 0xf001
-    field public static final int CODE_OEM_CAUSE_10 = 61450; // 0xf00a
-    field public static final int CODE_OEM_CAUSE_11 = 61451; // 0xf00b
-    field public static final int CODE_OEM_CAUSE_12 = 61452; // 0xf00c
-    field public static final int CODE_OEM_CAUSE_13 = 61453; // 0xf00d
-    field public static final int CODE_OEM_CAUSE_14 = 61454; // 0xf00e
-    field public static final int CODE_OEM_CAUSE_15 = 61455; // 0xf00f
-    field public static final int CODE_OEM_CAUSE_2 = 61442; // 0xf002
-    field public static final int CODE_OEM_CAUSE_3 = 61443; // 0xf003
-    field public static final int CODE_OEM_CAUSE_4 = 61444; // 0xf004
-    field public static final int CODE_OEM_CAUSE_5 = 61445; // 0xf005
-    field public static final int CODE_OEM_CAUSE_6 = 61446; // 0xf006
-    field public static final int CODE_OEM_CAUSE_7 = 61447; // 0xf007
-    field public static final int CODE_OEM_CAUSE_8 = 61448; // 0xf008
-    field public static final int CODE_OEM_CAUSE_9 = 61449; // 0xf009
-    field public static final int CODE_RADIO_ACCESS_FAILURE = 1505; // 0x5e1
-    field public static final int CODE_RADIO_INTERNAL_ERROR = 1502; // 0x5de
-    field public static final int CODE_RADIO_LINK_FAILURE = 1506; // 0x5e2
-    field public static final int CODE_RADIO_LINK_LOST = 1507; // 0x5e3
-    field public static final int CODE_RADIO_OFF = 1500; // 0x5dc
-    field public static final int CODE_RADIO_RELEASE_ABNORMAL = 1511; // 0x5e7
-    field public static final int CODE_RADIO_RELEASE_NORMAL = 1510; // 0x5e6
-    field public static final int CODE_RADIO_SETUP_FAILURE = 1509; // 0x5e5
-    field public static final int CODE_RADIO_UPLINK_FAILURE = 1508; // 0x5e4
-    field public static final int CODE_REGISTRATION_ERROR = 1000; // 0x3e8
-    field public static final int CODE_REJECTED_ELSEWHERE = 1017; // 0x3f9
-    field public static final int CODE_REJECT_1X_COLLISION = 1603; // 0x643
-    field public static final int CODE_REJECT_CALL_ON_OTHER_SUB = 1602; // 0x642
-    field public static final int CODE_REJECT_CALL_TYPE_NOT_ALLOWED = 1605; // 0x645
-    field public static final int CODE_REJECT_CONFERENCE_TTY_NOT_ALLOWED = 1617; // 0x651
-    field public static final int CODE_REJECT_INTERNAL_ERROR = 1612; // 0x64c
-    field public static final int CODE_REJECT_MAX_CALL_LIMIT_REACHED = 1608; // 0x648
-    field public static final int CODE_REJECT_ONGOING_CALL_SETUP = 1607; // 0x647
-    field public static final int CODE_REJECT_ONGOING_CALL_TRANSFER = 1611; // 0x64b
-    field public static final int CODE_REJECT_ONGOING_CALL_UPGRADE = 1616; // 0x650
-    field public static final int CODE_REJECT_ONGOING_CALL_WAITING_DISABLED = 1601; // 0x641
-    field public static final int CODE_REJECT_ONGOING_CONFERENCE_CALL = 1618; // 0x652
-    field public static final int CODE_REJECT_ONGOING_CS_CALL = 1621; // 0x655
-    field public static final int CODE_REJECT_ONGOING_E911_CALL = 1606; // 0x646
-    field public static final int CODE_REJECT_ONGOING_ENCRYPTED_CALL = 1620; // 0x654
-    field public static final int CODE_REJECT_ONGOING_HANDOVER = 1614; // 0x64e
-    field public static final int CODE_REJECT_QOS_FAILURE = 1613; // 0x64d
-    field public static final int CODE_REJECT_SERVICE_NOT_REGISTERED = 1604; // 0x644
-    field public static final int CODE_REJECT_UNKNOWN = 1600; // 0x640
-    field public static final int CODE_REJECT_UNSUPPORTED_SDP_HEADERS = 1610; // 0x64a
-    field public static final int CODE_REJECT_UNSUPPORTED_SIP_HEADERS = 1609; // 0x649
-    field public static final int CODE_REJECT_VT_AVPF_NOT_ALLOWED = 1619; // 0x653
-    field public static final int CODE_REJECT_VT_TTY_NOT_ALLOWED = 1615; // 0x64f
-    field public static final int CODE_REMOTE_CALL_DECLINE = 1404; // 0x57c
-    field public static final int CODE_SESSION_MODIFICATION_FAILED = 1517; // 0x5ed
-    field public static final int CODE_SIP_ALTERNATE_EMERGENCY_CALL = 1514; // 0x5ea
-    field public static final int CODE_SIP_AMBIGUOUS = 376; // 0x178
-    field public static final int CODE_SIP_BAD_ADDRESS = 337; // 0x151
-    field public static final int CODE_SIP_BAD_REQUEST = 331; // 0x14b
-    field public static final int CODE_SIP_BUSY = 338; // 0x152
-    field public static final int CODE_SIP_CALL_OR_TRANS_DOES_NOT_EXIST = 372; // 0x174
-    field public static final int CODE_SIP_CLIENT_ERROR = 342; // 0x156
-    field public static final int CODE_SIP_EXTENSION_REQUIRED = 370; // 0x172
-    field public static final int CODE_SIP_FORBIDDEN = 332; // 0x14c
-    field public static final int CODE_SIP_GLOBAL_ERROR = 362; // 0x16a
-    field public static final int CODE_SIP_INTERVAL_TOO_BRIEF = 371; // 0x173
-    field public static final int CODE_SIP_LOOP_DETECTED = 373; // 0x175
-    field public static final int CODE_SIP_METHOD_NOT_ALLOWED = 366; // 0x16e
-    field public static final int CODE_SIP_NOT_ACCEPTABLE = 340; // 0x154
-    field public static final int CODE_SIP_NOT_FOUND = 333; // 0x14d
-    field public static final int CODE_SIP_NOT_REACHABLE = 341; // 0x155
-    field public static final int CODE_SIP_NOT_SUPPORTED = 334; // 0x14e
-    field public static final int CODE_SIP_PROXY_AUTHENTICATION_REQUIRED = 367; // 0x16f
-    field public static final int CODE_SIP_REDIRECTED = 321; // 0x141
-    field public static final int CODE_SIP_REQUEST_CANCELLED = 339; // 0x153
-    field public static final int CODE_SIP_REQUEST_ENTITY_TOO_LARGE = 368; // 0x170
-    field public static final int CODE_SIP_REQUEST_PENDING = 377; // 0x179
-    field public static final int CODE_SIP_REQUEST_TIMEOUT = 335; // 0x14f
-    field public static final int CODE_SIP_REQUEST_URI_TOO_LARGE = 369; // 0x171
-    field public static final int CODE_SIP_SERVER_ERROR = 354; // 0x162
-    field public static final int CODE_SIP_SERVER_INTERNAL_ERROR = 351; // 0x15f
-    field public static final int CODE_SIP_SERVER_TIMEOUT = 353; // 0x161
-    field public static final int CODE_SIP_SERVICE_UNAVAILABLE = 352; // 0x160
-    field public static final int CODE_SIP_TEMPRARILY_UNAVAILABLE = 336; // 0x150
-    field public static final int CODE_SIP_TOO_MANY_HOPS = 374; // 0x176
-    field public static final int CODE_SIP_TRANSACTION_DOES_NOT_EXIST = 343; // 0x157
-    field public static final int CODE_SIP_UNDECIPHERABLE = 378; // 0x17a
-    field public static final int CODE_SIP_USER_MARKED_UNWANTED = 365; // 0x16d
-    field public static final int CODE_SIP_USER_REJECTED = 361; // 0x169
-    field public static final int CODE_SUPP_SVC_CANCELLED = 1202; // 0x4b2
-    field public static final int CODE_SUPP_SVC_FAILED = 1201; // 0x4b1
-    field public static final int CODE_SUPP_SVC_REINVITE_COLLISION = 1203; // 0x4b3
-    field public static final int CODE_TIMEOUT_1XX_WAITING = 201; // 0xc9
-    field public static final int CODE_TIMEOUT_NO_ANSWER = 202; // 0xca
-    field public static final int CODE_TIMEOUT_NO_ANSWER_CALL_UPDATE = 203; // 0xcb
-    field public static final int CODE_UNSPECIFIED = 0; // 0x0
-    field public static final int CODE_USER_CANCELLED_SESSION_MODIFICATION = 512; // 0x200
-    field public static final int CODE_USER_DECLINE = 504; // 0x1f8
-    field public static final int CODE_USER_IGNORE = 503; // 0x1f7
-    field public static final int CODE_USER_NOANSWER = 502; // 0x1f6
-    field public static final int CODE_USER_REJECTED_SESSION_MODIFICATION = 511; // 0x1ff
-    field public static final int CODE_USER_TERMINATED = 501; // 0x1f5
-    field public static final int CODE_USER_TERMINATED_BY_REMOTE = 510; // 0x1fe
-    field public static final int CODE_UT_CB_PASSWORD_MISMATCH = 821; // 0x335
-    field public static final int CODE_UT_NETWORK_ERROR = 804; // 0x324
-    field public static final int CODE_UT_NOT_SUPPORTED = 801; // 0x321
-    field public static final int CODE_UT_OPERATION_NOT_ALLOWED = 803; // 0x323
-    field public static final int CODE_UT_SERVICE_UNAVAILABLE = 802; // 0x322
-    field public static final int CODE_UT_SS_MODIFIED_TO_DIAL = 822; // 0x336
-    field public static final int CODE_UT_SS_MODIFIED_TO_DIAL_VIDEO = 825; // 0x339
-    field public static final int CODE_UT_SS_MODIFIED_TO_SS = 824; // 0x338
-    field public static final int CODE_UT_SS_MODIFIED_TO_USSD = 823; // 0x337
-    field public static final int CODE_WIFI_LOST = 1407; // 0x57f
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsReasonInfo> CREATOR;
-    field public static final int EXTRA_CODE_CALL_RETRY_BY_SETTINGS = 3; // 0x3
-    field public static final int EXTRA_CODE_CALL_RETRY_NORMAL = 1; // 0x1
-    field public static final int EXTRA_CODE_CALL_RETRY_SILENT_REDIAL = 2; // 0x2
-  }
-
-  public class RcsUceAdapter {
-    method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isUceSettingEnabled() throws android.telephony.ims.ImsException;
-  }
-
-  public interface RegistrationManager {
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getRegistrationState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getRegistrationTransportType(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void registerImsRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.RegistrationManager.RegistrationCallback) throws android.telephony.ims.ImsException;
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.RegistrationManager.RegistrationCallback);
-    field public static final int REGISTRATION_STATE_NOT_REGISTERED = 0; // 0x0
-    field public static final int REGISTRATION_STATE_REGISTERED = 2; // 0x2
-    field public static final int REGISTRATION_STATE_REGISTERING = 1; // 0x1
-  }
-
-  public static class RegistrationManager.RegistrationCallback {
-    ctor public RegistrationManager.RegistrationCallback();
-    method public void onRegistered(int);
-    method public void onRegistering(int);
-    method public void onTechnologyChangeFailed(int, @NonNull android.telephony.ims.ImsReasonInfo);
-    method public void onUnregistered(@NonNull android.telephony.ims.ImsReasonInfo);
-  }
-
-}
-
-package android.telephony.ims.feature {
-
-  public class MmTelFeature {
-  }
-
-  public static class MmTelFeature.MmTelCapabilities {
-    field public static final int CAPABILITY_TYPE_SMS = 8; // 0x8
-    field public static final int CAPABILITY_TYPE_UT = 4; // 0x4
-    field public static final int CAPABILITY_TYPE_VIDEO = 2; // 0x2
-    field public static final int CAPABILITY_TYPE_VOICE = 1; // 0x1
-  }
-
-}
-
-package android.telephony.mbms {
-
-  public class DownloadProgressListener {
-    ctor public DownloadProgressListener();
-    method public void onProgressUpdated(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo, int, int, int, int);
-  }
-
-  public final class DownloadRequest implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.net.Uri getDestinationUri();
-    method public String getFileServiceId();
-    method public static int getMaxAppIntentSize();
-    method public static int getMaxDestinationUriSize();
-    method public android.net.Uri getSourceUri();
-    method public int getSubscriptionId();
-    method public byte[] toByteArray();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.mbms.DownloadRequest> CREATOR;
-  }
-
-  public static class DownloadRequest.Builder {
-    ctor public DownloadRequest.Builder(@NonNull android.net.Uri, @NonNull android.net.Uri);
-    method public android.telephony.mbms.DownloadRequest build();
-    method public static android.telephony.mbms.DownloadRequest.Builder fromDownloadRequest(android.telephony.mbms.DownloadRequest);
-    method public static android.telephony.mbms.DownloadRequest.Builder fromSerializedRequest(byte[]);
-    method public android.telephony.mbms.DownloadRequest.Builder setAppIntent(android.content.Intent);
-    method public android.telephony.mbms.DownloadRequest.Builder setServiceInfo(android.telephony.mbms.FileServiceInfo);
-    method public android.telephony.mbms.DownloadRequest.Builder setSubscriptionId(int);
-  }
-
-  public class DownloadStatusListener {
-    ctor public DownloadStatusListener();
-    method public void onStatusUpdated(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo, int);
-  }
-
-  public final class FileInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public String getMimeType();
-    method public android.net.Uri getUri();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.mbms.FileInfo> CREATOR;
-  }
-
-  public final class FileServiceInfo extends android.telephony.mbms.ServiceInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public java.util.List<android.telephony.mbms.FileInfo> getFiles();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.mbms.FileServiceInfo> CREATOR;
-  }
-
-  public class GroupCall implements java.lang.AutoCloseable {
-    method public void close();
-    method public long getTmgi();
-    method public void updateGroupCall(@NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.lang.Integer>);
-    field public static final int REASON_BY_USER_REQUEST = 1; // 0x1
-    field public static final int REASON_FREQUENCY_CONFLICT = 3; // 0x3
-    field public static final int REASON_LEFT_MBMS_BROADCAST_AREA = 6; // 0x6
-    field public static final int REASON_NONE = 0; // 0x0
-    field public static final int REASON_NOT_CONNECTED_TO_HOMECARRIER_LTE = 5; // 0x5
-    field public static final int REASON_OUT_OF_MEMORY = 4; // 0x4
-    field public static final int STATE_STALLED = 3; // 0x3
-    field public static final int STATE_STARTED = 2; // 0x2
-    field public static final int STATE_STOPPED = 1; // 0x1
-  }
-
-  public interface GroupCallCallback {
-    method public default void onBroadcastSignalStrengthUpdated(@IntRange(from=0xffffffff, to=4) int);
-    method public default void onError(int, @Nullable String);
-    method public default void onGroupCallStateChanged(int, int);
-    field public static final int SIGNAL_STRENGTH_UNAVAILABLE = -1; // 0xffffffff
-  }
-
-  public class MbmsDownloadReceiver extends android.content.BroadcastReceiver {
-    ctor public MbmsDownloadReceiver();
-    method public void onReceive(android.content.Context, android.content.Intent);
-  }
-
-  public class MbmsDownloadSessionCallback {
-    ctor public MbmsDownloadSessionCallback();
-    method public void onError(int, String);
-    method public void onFileServicesUpdated(java.util.List<android.telephony.mbms.FileServiceInfo>);
-    method public void onMiddlewareReady();
-  }
-
-  public class MbmsErrors {
-    field public static final int ERROR_MIDDLEWARE_LOST = 3; // 0x3
-    field public static final int ERROR_MIDDLEWARE_NOT_BOUND = 2; // 0x2
-    field public static final int ERROR_NO_UNIQUE_MIDDLEWARE = 1; // 0x1
-    field public static final int SUCCESS = 0; // 0x0
-    field public static final int UNKNOWN = -1; // 0xffffffff
-  }
-
-  public static class MbmsErrors.DownloadErrors {
-    field public static final int ERROR_CANNOT_CHANGE_TEMP_FILE_ROOT = 401; // 0x191
-    field public static final int ERROR_MALFORMED_SERVICE_ANNOUNCEMENT = 404; // 0x194
-    field public static final int ERROR_UNKNOWN_DOWNLOAD_REQUEST = 402; // 0x192
-    field public static final int ERROR_UNKNOWN_FILE_INFO = 403; // 0x193
-  }
-
-  public static class MbmsErrors.GeneralErrors {
-    field public static final int ERROR_CARRIER_CHANGE_NOT_ALLOWED = 207; // 0xcf
-    field public static final int ERROR_IN_E911 = 204; // 0xcc
-    field public static final int ERROR_MIDDLEWARE_NOT_YET_READY = 201; // 0xc9
-    field public static final int ERROR_MIDDLEWARE_TEMPORARILY_UNAVAILABLE = 203; // 0xcb
-    field public static final int ERROR_NOT_CONNECTED_TO_HOME_CARRIER_LTE = 205; // 0xcd
-    field public static final int ERROR_OUT_OF_MEMORY = 202; // 0xca
-    field public static final int ERROR_UNABLE_TO_READ_SIM = 206; // 0xce
-  }
-
-  public static class MbmsErrors.GroupCallErrors {
-    field public static final int ERROR_DUPLICATE_START_GROUP_CALL = 502; // 0x1f6
-    field public static final int ERROR_UNABLE_TO_START_SERVICE = 501; // 0x1f5
-  }
-
-  public static class MbmsErrors.InitializationErrors {
-    field public static final int ERROR_APP_PERMISSIONS_NOT_GRANTED = 102; // 0x66
-    field public static final int ERROR_DUPLICATE_INITIALIZE = 101; // 0x65
-    field public static final int ERROR_UNABLE_TO_INITIALIZE = 103; // 0x67
-  }
-
-  public static class MbmsErrors.StreamingErrors {
-    field public static final int ERROR_CONCURRENT_SERVICE_LIMIT_REACHED = 301; // 0x12d
-    field public static final int ERROR_DUPLICATE_START_STREAM = 303; // 0x12f
-    field public static final int ERROR_UNABLE_TO_START_SERVICE = 302; // 0x12e
-  }
-
-  public interface MbmsGroupCallSessionCallback {
-    method public default void onAvailableSaisUpdated(@NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.util.List<java.lang.Integer>>);
-    method public default void onError(int, @Nullable String);
-    method public default void onMiddlewareReady();
-    method public default void onServiceInterfaceAvailable(@NonNull String, int);
-  }
-
-  public class MbmsStreamingSessionCallback {
-    ctor public MbmsStreamingSessionCallback();
-    method public void onError(int, @Nullable String);
-    method public void onMiddlewareReady();
-    method public void onStreamingServicesUpdated(java.util.List<android.telephony.mbms.StreamingServiceInfo>);
-  }
-
-  public class ServiceInfo {
-    method public java.util.List<java.util.Locale> getLocales();
-    method @NonNull public CharSequence getNameForLocale(@NonNull java.util.Locale);
-    method @NonNull public java.util.Set<java.util.Locale> getNamedContentLocales();
-    method public String getServiceClassName();
-    method public String getServiceId();
-    method public java.util.Date getSessionEndTime();
-    method public java.util.Date getSessionStartTime();
-  }
-
-  public class StreamingService implements java.lang.AutoCloseable {
-    method public void close();
-    method public android.telephony.mbms.StreamingServiceInfo getInfo();
-    method @Nullable public android.net.Uri getPlaybackUri();
-    field public static final int BROADCAST_METHOD = 1; // 0x1
-    field public static final int REASON_BY_USER_REQUEST = 1; // 0x1
-    field public static final int REASON_END_OF_SESSION = 2; // 0x2
-    field public static final int REASON_FREQUENCY_CONFLICT = 3; // 0x3
-    field public static final int REASON_LEFT_MBMS_BROADCAST_AREA = 6; // 0x6
-    field public static final int REASON_NONE = 0; // 0x0
-    field public static final int REASON_NOT_CONNECTED_TO_HOMECARRIER_LTE = 5; // 0x5
-    field public static final int REASON_OUT_OF_MEMORY = 4; // 0x4
-    field public static final int STATE_STALLED = 3; // 0x3
-    field public static final int STATE_STARTED = 2; // 0x2
-    field public static final int STATE_STOPPED = 1; // 0x1
-    field public static final int UNICAST_METHOD = 2; // 0x2
-  }
-
-  public class StreamingServiceCallback {
-    ctor public StreamingServiceCallback();
-    method public void onBroadcastSignalStrengthUpdated(int);
-    method public void onError(int, @Nullable String);
-    method public void onMediaDescriptionUpdated();
-    method public void onStreamMethodUpdated(int);
-    method public void onStreamStateUpdated(int, int);
-    field public static final int SIGNAL_STRENGTH_UNAVAILABLE = -1; // 0xffffffff
-  }
-
-  public final class StreamingServiceInfo extends android.telephony.mbms.ServiceInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.mbms.StreamingServiceInfo> CREATOR;
-  }
-
-}
-
-package android.text {
-
-  @Deprecated public class AlteredCharSequence implements java.lang.CharSequence android.text.GetChars {
-    method @Deprecated public char charAt(int);
-    method @Deprecated public void getChars(int, int, char[], int);
-    method @Deprecated public int length();
-    method @Deprecated public static android.text.AlteredCharSequence make(CharSequence, char[], int, int);
-    method @Deprecated public CharSequence subSequence(int, int);
-  }
-
-  @Deprecated public class AndroidCharacter {
-    ctor @Deprecated public AndroidCharacter();
-    method @Deprecated public static void getDirectionalities(char[], byte[], int);
-    method @Deprecated public static int getEastAsianWidth(char);
-    method @Deprecated public static void getEastAsianWidths(char[], int, int, byte[]);
-    method @Deprecated public static char getMirror(char);
-    method @Deprecated public static boolean mirror(char[], int, int);
-    field @Deprecated public static final int EAST_ASIAN_WIDTH_AMBIGUOUS = 1; // 0x1
-    field @Deprecated public static final int EAST_ASIAN_WIDTH_FULL_WIDTH = 3; // 0x3
-    field @Deprecated public static final int EAST_ASIAN_WIDTH_HALF_WIDTH = 2; // 0x2
-    field @Deprecated public static final int EAST_ASIAN_WIDTH_NARROW = 4; // 0x4
-    field @Deprecated public static final int EAST_ASIAN_WIDTH_NEUTRAL = 0; // 0x0
-    field @Deprecated public static final int EAST_ASIAN_WIDTH_WIDE = 5; // 0x5
-  }
-
-  public class Annotation implements android.text.ParcelableSpan {
-    ctor public Annotation(String, String);
-    ctor public Annotation(android.os.Parcel);
-    method public int describeContents();
-    method public String getKey();
-    method public int getSpanTypeId();
-    method public String getValue();
-    method public void writeToParcel(android.os.Parcel, int);
-  }
-
-  public class AutoText {
-    method public static String get(CharSequence, int, int, android.view.View);
-    method public static int getSize(android.view.View);
-  }
-
-  public final class BidiFormatter {
-    method public static android.text.BidiFormatter getInstance();
-    method public static android.text.BidiFormatter getInstance(boolean);
-    method public static android.text.BidiFormatter getInstance(java.util.Locale);
-    method public boolean getStereoReset();
-    method public boolean isRtl(String);
-    method public boolean isRtl(CharSequence);
-    method public boolean isRtlContext();
-    method @Nullable public String unicodeWrap(@Nullable String, android.text.TextDirectionHeuristic, boolean);
-    method @Nullable public CharSequence unicodeWrap(@Nullable CharSequence, android.text.TextDirectionHeuristic, boolean);
-    method public String unicodeWrap(String, android.text.TextDirectionHeuristic);
-    method public CharSequence unicodeWrap(CharSequence, android.text.TextDirectionHeuristic);
-    method public String unicodeWrap(String, boolean);
-    method public CharSequence unicodeWrap(CharSequence, boolean);
-    method public String unicodeWrap(String);
-    method public CharSequence unicodeWrap(CharSequence);
-  }
-
-  public static final class BidiFormatter.Builder {
-    ctor public BidiFormatter.Builder();
-    ctor public BidiFormatter.Builder(boolean);
-    ctor public BidiFormatter.Builder(java.util.Locale);
-    method public android.text.BidiFormatter build();
-    method public android.text.BidiFormatter.Builder setTextDirectionHeuristic(android.text.TextDirectionHeuristic);
-    method public android.text.BidiFormatter.Builder stereoReset(boolean);
-  }
-
-  public class BoringLayout extends android.text.Layout implements android.text.TextUtils.EllipsizeCallback {
-    ctor public BoringLayout(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean);
-    ctor public BoringLayout(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean, android.text.TextUtils.TruncateAt, int);
-    method public void ellipsized(int, int);
-    method public int getBottomPadding();
-    method public int getEllipsisCount(int);
-    method public int getEllipsisStart(int);
-    method public boolean getLineContainsTab(int);
-    method public int getLineCount();
-    method public int getLineDescent(int);
-    method public final android.text.Layout.Directions getLineDirections(int);
-    method public int getLineStart(int);
-    method public int getLineTop(int);
-    method public int getParagraphDirection(int);
-    method public int getTopPadding();
-    method public static android.text.BoringLayout.Metrics isBoring(CharSequence, android.text.TextPaint);
-    method public static android.text.BoringLayout.Metrics isBoring(CharSequence, android.text.TextPaint, android.text.BoringLayout.Metrics);
-    method public static android.text.BoringLayout make(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean);
-    method public static android.text.BoringLayout make(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean, android.text.TextUtils.TruncateAt, int);
-    method public android.text.BoringLayout replaceOrMake(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean);
-    method public android.text.BoringLayout replaceOrMake(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean, android.text.TextUtils.TruncateAt, int);
-  }
-
-  public static class BoringLayout.Metrics extends android.graphics.Paint.FontMetricsInt {
-    ctor public BoringLayout.Metrics();
-    field public int width;
-  }
-
-  @Deprecated public abstract class ClipboardManager {
-    ctor @Deprecated public ClipboardManager();
-    method @Deprecated public abstract CharSequence getText();
-    method @Deprecated public abstract boolean hasText();
-    method @Deprecated public abstract void setText(CharSequence);
-  }
-
-  public class DynamicLayout extends android.text.Layout {
-    ctor @Deprecated public DynamicLayout(@NonNull CharSequence, @NonNull android.text.TextPaint, @IntRange(from=0) int, @NonNull android.text.Layout.Alignment, @FloatRange(from=0.0) float, float, boolean);
-    ctor @Deprecated public DynamicLayout(@NonNull CharSequence, @NonNull CharSequence, @NonNull android.text.TextPaint, @IntRange(from=0) int, @NonNull android.text.Layout.Alignment, @FloatRange(from=0.0) float, float, boolean);
-    ctor @Deprecated public DynamicLayout(@NonNull CharSequence, @NonNull CharSequence, @NonNull android.text.TextPaint, @IntRange(from=0) int, @NonNull android.text.Layout.Alignment, @FloatRange(from=0.0) float, float, boolean, @Nullable android.text.TextUtils.TruncateAt, @IntRange(from=0) int);
-    method public int getBottomPadding();
-    method public int getEllipsisCount(int);
-    method public int getEllipsisStart(int);
-    method public boolean getLineContainsTab(int);
-    method public int getLineCount();
-    method public int getLineDescent(int);
-    method public final android.text.Layout.Directions getLineDirections(int);
-    method public int getLineStart(int);
-    method public int getLineTop(int);
-    method public int getParagraphDirection(int);
-    method public int getTopPadding();
-  }
-
-  public static final class DynamicLayout.Builder {
-    method @NonNull public android.text.DynamicLayout build();
-    method @NonNull public static android.text.DynamicLayout.Builder obtain(@NonNull CharSequence, @NonNull android.text.TextPaint, @IntRange(from=0) int);
-    method @NonNull public android.text.DynamicLayout.Builder setAlignment(@NonNull android.text.Layout.Alignment);
-    method @NonNull public android.text.DynamicLayout.Builder setBreakStrategy(int);
-    method @NonNull public android.text.DynamicLayout.Builder setDisplayText(@NonNull CharSequence);
-    method public android.text.DynamicLayout.Builder setEllipsize(@Nullable android.text.TextUtils.TruncateAt);
-    method @NonNull public android.text.DynamicLayout.Builder setEllipsizedWidth(@IntRange(from=0) int);
-    method @NonNull public android.text.DynamicLayout.Builder setHyphenationFrequency(int);
-    method @NonNull public android.text.DynamicLayout.Builder setIncludePad(boolean);
-    method @NonNull public android.text.DynamicLayout.Builder setJustificationMode(int);
-    method @NonNull public android.text.DynamicLayout.Builder setLineSpacing(float, @FloatRange(from=0.0) float);
-    method @NonNull public android.text.DynamicLayout.Builder setTextDirection(@NonNull android.text.TextDirectionHeuristic);
-    method @NonNull public android.text.DynamicLayout.Builder setUseLineSpacingFromFallbacks(boolean);
-  }
-
-  public interface Editable extends java.lang.CharSequence java.lang.Appendable android.text.GetChars android.text.Spannable {
-    method public android.text.Editable append(CharSequence);
-    method public android.text.Editable append(CharSequence, int, int);
-    method public android.text.Editable append(char);
-    method public void clear();
-    method public void clearSpans();
-    method public android.text.Editable delete(int, int);
-    method public android.text.InputFilter[] getFilters();
-    method public android.text.Editable insert(int, CharSequence, int, int);
-    method public android.text.Editable insert(int, CharSequence);
-    method public android.text.Editable replace(int, int, CharSequence, int, int);
-    method public android.text.Editable replace(int, int, CharSequence);
-    method public void setFilters(android.text.InputFilter[]);
-  }
-
-  public static class Editable.Factory {
-    ctor public Editable.Factory();
-    method public static android.text.Editable.Factory getInstance();
-    method public android.text.Editable newEditable(CharSequence);
-  }
-
-  public interface GetChars extends java.lang.CharSequence {
-    method public void getChars(int, int, char[], int);
-  }
-
-  public class Html {
-    method public static String escapeHtml(CharSequence);
-    method @Deprecated public static android.text.Spanned fromHtml(String);
-    method public static android.text.Spanned fromHtml(String, int);
-    method @Deprecated public static android.text.Spanned fromHtml(String, android.text.Html.ImageGetter, android.text.Html.TagHandler);
-    method public static android.text.Spanned fromHtml(String, int, android.text.Html.ImageGetter, android.text.Html.TagHandler);
-    method @Deprecated public static String toHtml(android.text.Spanned);
-    method public static String toHtml(android.text.Spanned, int);
-    field public static final int FROM_HTML_MODE_COMPACT = 63; // 0x3f
-    field public static final int FROM_HTML_MODE_LEGACY = 0; // 0x0
-    field public static final int FROM_HTML_OPTION_USE_CSS_COLORS = 256; // 0x100
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_BLOCKQUOTE = 32; // 0x20
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_DIV = 16; // 0x10
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_HEADING = 2; // 0x2
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_LIST = 8; // 0x8
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_LIST_ITEM = 4; // 0x4
-    field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_PARAGRAPH = 1; // 0x1
-    field public static final int TO_HTML_PARAGRAPH_LINES_CONSECUTIVE = 0; // 0x0
-    field public static final int TO_HTML_PARAGRAPH_LINES_INDIVIDUAL = 1; // 0x1
-  }
-
-  public static interface Html.ImageGetter {
-    method public android.graphics.drawable.Drawable getDrawable(String);
-  }
-
-  public static interface Html.TagHandler {
-    method public void handleTag(boolean, String, android.text.Editable, org.xml.sax.XMLReader);
-  }
-
-  public interface InputFilter {
-    method public CharSequence filter(CharSequence, int, int, android.text.Spanned, int, int);
-  }
-
-  public static class InputFilter.AllCaps implements android.text.InputFilter {
-    ctor public InputFilter.AllCaps();
-    ctor public InputFilter.AllCaps(@NonNull java.util.Locale);
-    method public CharSequence filter(CharSequence, int, int, android.text.Spanned, int, int);
-  }
-
-  public static class InputFilter.LengthFilter implements android.text.InputFilter {
-    ctor public InputFilter.LengthFilter(int);
-    method public CharSequence filter(CharSequence, int, int, android.text.Spanned, int, int);
-    method public int getMax();
-  }
-
-  public interface InputType {
-    field public static final int TYPE_CLASS_DATETIME = 4; // 0x4
-    field public static final int TYPE_CLASS_NUMBER = 2; // 0x2
-    field public static final int TYPE_CLASS_PHONE = 3; // 0x3
-    field public static final int TYPE_CLASS_TEXT = 1; // 0x1
-    field public static final int TYPE_DATETIME_VARIATION_DATE = 16; // 0x10
-    field public static final int TYPE_DATETIME_VARIATION_NORMAL = 0; // 0x0
-    field public static final int TYPE_DATETIME_VARIATION_TIME = 32; // 0x20
-    field public static final int TYPE_MASK_CLASS = 15; // 0xf
-    field public static final int TYPE_MASK_FLAGS = 16773120; // 0xfff000
-    field public static final int TYPE_MASK_VARIATION = 4080; // 0xff0
-    field public static final int TYPE_NULL = 0; // 0x0
-    field public static final int TYPE_NUMBER_FLAG_DECIMAL = 8192; // 0x2000
-    field public static final int TYPE_NUMBER_FLAG_SIGNED = 4096; // 0x1000
-    field public static final int TYPE_NUMBER_VARIATION_NORMAL = 0; // 0x0
-    field public static final int TYPE_NUMBER_VARIATION_PASSWORD = 16; // 0x10
-    field public static final int TYPE_TEXT_FLAG_AUTO_COMPLETE = 65536; // 0x10000
-    field public static final int TYPE_TEXT_FLAG_AUTO_CORRECT = 32768; // 0x8000
-    field public static final int TYPE_TEXT_FLAG_CAP_CHARACTERS = 4096; // 0x1000
-    field public static final int TYPE_TEXT_FLAG_CAP_SENTENCES = 16384; // 0x4000
-    field public static final int TYPE_TEXT_FLAG_CAP_WORDS = 8192; // 0x2000
-    field public static final int TYPE_TEXT_FLAG_IME_MULTI_LINE = 262144; // 0x40000
-    field public static final int TYPE_TEXT_FLAG_MULTI_LINE = 131072; // 0x20000
-    field public static final int TYPE_TEXT_FLAG_NO_SUGGESTIONS = 524288; // 0x80000
-    field public static final int TYPE_TEXT_VARIATION_EMAIL_ADDRESS = 32; // 0x20
-    field public static final int TYPE_TEXT_VARIATION_EMAIL_SUBJECT = 48; // 0x30
-    field public static final int TYPE_TEXT_VARIATION_FILTER = 176; // 0xb0
-    field public static final int TYPE_TEXT_VARIATION_LONG_MESSAGE = 80; // 0x50
-    field public static final int TYPE_TEXT_VARIATION_NORMAL = 0; // 0x0
-    field public static final int TYPE_TEXT_VARIATION_PASSWORD = 128; // 0x80
-    field public static final int TYPE_TEXT_VARIATION_PERSON_NAME = 96; // 0x60
-    field public static final int TYPE_TEXT_VARIATION_PHONETIC = 192; // 0xc0
-    field public static final int TYPE_TEXT_VARIATION_POSTAL_ADDRESS = 112; // 0x70
-    field public static final int TYPE_TEXT_VARIATION_SHORT_MESSAGE = 64; // 0x40
-    field public static final int TYPE_TEXT_VARIATION_URI = 16; // 0x10
-    field public static final int TYPE_TEXT_VARIATION_VISIBLE_PASSWORD = 144; // 0x90
-    field public static final int TYPE_TEXT_VARIATION_WEB_EDIT_TEXT = 160; // 0xa0
-    field public static final int TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS = 208; // 0xd0
-    field public static final int TYPE_TEXT_VARIATION_WEB_PASSWORD = 224; // 0xe0
-  }
-
-  public abstract class Layout {
-    ctor protected Layout(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float);
-    method public void draw(android.graphics.Canvas);
-    method public void draw(android.graphics.Canvas, android.graphics.Path, android.graphics.Paint, int);
-    method public final android.text.Layout.Alignment getAlignment();
-    method public abstract int getBottomPadding();
-    method public void getCursorPath(int, android.graphics.Path, CharSequence);
-    method public static float getDesiredWidth(CharSequence, android.text.TextPaint);
-    method public static float getDesiredWidth(CharSequence, int, int, android.text.TextPaint);
-    method public abstract int getEllipsisCount(int);
-    method public abstract int getEllipsisStart(int);
-    method public int getEllipsizedWidth();
-    method public int getHeight();
-    method public final int getLineAscent(int);
-    method public final int getLineBaseline(int);
-    method public final int getLineBottom(int);
-    method public int getLineBounds(int, android.graphics.Rect);
-    method public abstract boolean getLineContainsTab(int);
-    method public abstract int getLineCount();
-    method public abstract int getLineDescent(int);
-    method public abstract android.text.Layout.Directions getLineDirections(int);
-    method public final int getLineEnd(int);
-    method public int getLineForOffset(int);
-    method public int getLineForVertical(int);
-    method public float getLineLeft(int);
-    method public float getLineMax(int);
-    method public float getLineRight(int);
-    method public abstract int getLineStart(int);
-    method public abstract int getLineTop(int);
-    method public int getLineVisibleEnd(int);
-    method public float getLineWidth(int);
-    method public int getOffsetForHorizontal(int, float);
-    method public int getOffsetToLeftOf(int);
-    method public int getOffsetToRightOf(int);
-    method public final android.text.TextPaint getPaint();
-    method public final android.text.Layout.Alignment getParagraphAlignment(int);
-    method public abstract int getParagraphDirection(int);
-    method public final int getParagraphLeft(int);
-    method public final int getParagraphRight(int);
-    method public float getPrimaryHorizontal(int);
-    method public float getSecondaryHorizontal(int);
-    method public void getSelectionPath(int, int, android.graphics.Path);
-    method public final float getSpacingAdd();
-    method public final float getSpacingMultiplier();
-    method public final CharSequence getText();
-    method public abstract int getTopPadding();
-    method public final int getWidth();
-    method public final void increaseWidthTo(int);
-    method public boolean isRtlCharAt(int);
-    method protected final boolean isSpanned();
-    field public static final int BREAK_STRATEGY_BALANCED = 2; // 0x2
-    field public static final int BREAK_STRATEGY_HIGH_QUALITY = 1; // 0x1
-    field public static final int BREAK_STRATEGY_SIMPLE = 0; // 0x0
-    field public static final float DEFAULT_LINESPACING_ADDITION = 0.0f;
-    field public static final float DEFAULT_LINESPACING_MULTIPLIER = 1.0f;
-    field public static final int DIR_LEFT_TO_RIGHT = 1; // 0x1
-    field public static final int DIR_RIGHT_TO_LEFT = -1; // 0xffffffff
-    field public static final int HYPHENATION_FREQUENCY_FULL = 2; // 0x2
-    field public static final int HYPHENATION_FREQUENCY_NONE = 0; // 0x0
-    field public static final int HYPHENATION_FREQUENCY_NORMAL = 1; // 0x1
-    field public static final int JUSTIFICATION_MODE_INTER_WORD = 1; // 0x1
-    field public static final int JUSTIFICATION_MODE_NONE = 0; // 0x0
-  }
-
-  public enum Layout.Alignment {
-    enum_constant public static final android.text.Layout.Alignment ALIGN_CENTER;
-    enum_constant public static final android.text.Layout.Alignment ALIGN_NORMAL;
-    enum_constant public static final android.text.Layout.Alignment ALIGN_OPPOSITE;
-  }
-
-  public static class Layout.Directions {
-  }
-
-  @Deprecated public abstract class LoginFilter implements android.text.InputFilter {
-    method @Deprecated public CharSequence filter(CharSequence, int, int, android.text.Spanned, int, int);
-    method @Deprecated public abstract boolean isAllowed(char);
-    method @Deprecated public void onInvalidCharacter(char);
-    method @Deprecated public void onStart();
-    method @Deprecated public void onStop();
-  }
-
-  @Deprecated public static class LoginFilter.PasswordFilterGMail extends android.text.LoginFilter {
-    ctor @Deprecated public LoginFilter.PasswordFilterGMail();
-    ctor @Deprecated public LoginFilter.PasswordFilterGMail(boolean);
-    method @Deprecated public boolean isAllowed(char);
-  }
-
-  @Deprecated public static class LoginFilter.UsernameFilterGMail extends android.text.LoginFilter {
-    ctor @Deprecated public LoginFilter.UsernameFilterGMail();
-    ctor @Deprecated public LoginFilter.UsernameFilterGMail(boolean);
-    method @Deprecated public boolean isAllowed(char);
-  }
-
-  @Deprecated public static class LoginFilter.UsernameFilterGeneric extends android.text.LoginFilter {
-    ctor @Deprecated public LoginFilter.UsernameFilterGeneric();
-    ctor @Deprecated public LoginFilter.UsernameFilterGeneric(boolean);
-    method @Deprecated public boolean isAllowed(char);
-  }
-
-  public interface NoCopySpan {
-  }
-
-  public static class NoCopySpan.Concrete implements android.text.NoCopySpan {
-    ctor public NoCopySpan.Concrete();
-  }
-
-  public interface ParcelableSpan extends android.os.Parcelable {
-    method public int getSpanTypeId();
-  }
-
-  public class PrecomputedText implements android.text.Spannable {
-    method public char charAt(int);
-    method public static android.text.PrecomputedText create(@NonNull CharSequence, @NonNull android.text.PrecomputedText.Params);
-    method public void getBounds(@IntRange(from=0) int, @IntRange(from=0) int, @NonNull android.graphics.Rect);
-    method @IntRange(from=0) public int getParagraphCount();
-    method @IntRange(from=0) public int getParagraphEnd(@IntRange(from=0) int);
-    method @IntRange(from=0) public int getParagraphStart(@IntRange(from=0) int);
-    method @NonNull public android.text.PrecomputedText.Params getParams();
-    method public int getSpanEnd(Object);
-    method public int getSpanFlags(Object);
-    method public int getSpanStart(Object);
-    method public <T> T[] getSpans(int, int, Class<T>);
-    method @FloatRange(from=0) public float getWidth(@IntRange(from=0) int, @IntRange(from=0) int);
-    method public int length();
-    method public int nextSpanTransition(int, int, Class);
-    method public void removeSpan(Object);
-    method public void setSpan(Object, int, int, int);
-    method public CharSequence subSequence(int, int);
-  }
-
-  public static final class PrecomputedText.Params {
-    method public int getBreakStrategy();
-    method public int getHyphenationFrequency();
-    method @NonNull public android.text.TextDirectionHeuristic getTextDirection();
-    method @NonNull public android.text.TextPaint getTextPaint();
-  }
-
-  public static class PrecomputedText.Params.Builder {
-    ctor public PrecomputedText.Params.Builder(@NonNull android.text.TextPaint);
-    ctor public PrecomputedText.Params.Builder(@NonNull android.text.PrecomputedText.Params);
-    method @NonNull public android.text.PrecomputedText.Params build();
-    method public android.text.PrecomputedText.Params.Builder setBreakStrategy(int);
-    method public android.text.PrecomputedText.Params.Builder setHyphenationFrequency(int);
-    method public android.text.PrecomputedText.Params.Builder setTextDirection(@NonNull android.text.TextDirectionHeuristic);
-  }
-
-  public class Selection {
-    method public static boolean extendDown(android.text.Spannable, android.text.Layout);
-    method public static boolean extendLeft(android.text.Spannable, android.text.Layout);
-    method public static boolean extendRight(android.text.Spannable, android.text.Layout);
-    method public static final void extendSelection(android.text.Spannable, int);
-    method public static boolean extendToLeftEdge(android.text.Spannable, android.text.Layout);
-    method public static boolean extendToRightEdge(android.text.Spannable, android.text.Layout);
-    method public static boolean extendUp(android.text.Spannable, android.text.Layout);
-    method public static final int getSelectionEnd(CharSequence);
-    method public static final int getSelectionStart(CharSequence);
-    method public static boolean moveDown(android.text.Spannable, android.text.Layout);
-    method public static boolean moveLeft(android.text.Spannable, android.text.Layout);
-    method public static boolean moveRight(android.text.Spannable, android.text.Layout);
-    method public static boolean moveToLeftEdge(android.text.Spannable, android.text.Layout);
-    method public static boolean moveToRightEdge(android.text.Spannable, android.text.Layout);
-    method public static boolean moveUp(android.text.Spannable, android.text.Layout);
-    method public static final void removeSelection(android.text.Spannable);
-    method public static final void selectAll(android.text.Spannable);
-    method public static void setSelection(android.text.Spannable, int, int);
-    method public static final void setSelection(android.text.Spannable, int);
-    field public static final Object SELECTION_END;
-    field public static final Object SELECTION_START;
-  }
-
-  public interface SpanWatcher extends android.text.NoCopySpan {
-    method public void onSpanAdded(android.text.Spannable, Object, int, int);
-    method public void onSpanChanged(android.text.Spannable, Object, int, int, int, int);
-    method public void onSpanRemoved(android.text.Spannable, Object, int, int);
-  }
-
-  public interface Spannable extends android.text.Spanned {
-    method public void removeSpan(Object);
-    method public void setSpan(Object, int, int, int);
-  }
-
-  public static class Spannable.Factory {
-    ctor public Spannable.Factory();
-    method public static android.text.Spannable.Factory getInstance();
-    method public android.text.Spannable newSpannable(CharSequence);
-  }
-
-  public class SpannableString implements java.lang.CharSequence android.text.GetChars android.text.Spannable {
-    ctor public SpannableString(CharSequence);
-    method public final char charAt(int);
-    method public final void getChars(int, int, char[], int);
-    method public int getSpanEnd(Object);
-    method public int getSpanFlags(Object);
-    method public int getSpanStart(Object);
-    method public <T> T[] getSpans(int, int, Class<T>);
-    method public final int length();
-    method public int nextSpanTransition(int, int, Class);
-    method public void removeSpan(Object);
-    method public void setSpan(Object, int, int, int);
-    method public final CharSequence subSequence(int, int);
-    method public final String toString();
-    method public static android.text.SpannableString valueOf(CharSequence);
-  }
-
-  public class SpannableStringBuilder implements java.lang.Appendable java.lang.CharSequence android.text.Editable android.text.GetChars android.text.Spannable {
-    ctor public SpannableStringBuilder();
-    ctor public SpannableStringBuilder(CharSequence);
-    ctor public SpannableStringBuilder(CharSequence, int, int);
-    method public android.text.SpannableStringBuilder append(CharSequence);
-    method public android.text.SpannableStringBuilder append(CharSequence, Object, int);
-    method public android.text.SpannableStringBuilder append(CharSequence, int, int);
-    method public android.text.SpannableStringBuilder append(char);
-    method public char charAt(int);
-    method public void clear();
-    method public void clearSpans();
-    method public android.text.SpannableStringBuilder delete(int, int);
-    method public void getChars(int, int, char[], int);
-    method public android.text.InputFilter[] getFilters();
-    method public int getSpanEnd(Object);
-    method public int getSpanFlags(Object);
-    method public int getSpanStart(Object);
-    method public <T> T[] getSpans(int, int, @Nullable Class<T>);
-    method @Deprecated public int getTextRunCursor(int, int, int, int, int, android.graphics.Paint);
-    method public int getTextWatcherDepth();
-    method public android.text.SpannableStringBuilder insert(int, CharSequence, int, int);
-    method public android.text.SpannableStringBuilder insert(int, CharSequence);
-    method public int length();
-    method public int nextSpanTransition(int, int, Class);
-    method public void removeSpan(Object);
-    method public android.text.SpannableStringBuilder replace(int, int, CharSequence);
-    method public android.text.SpannableStringBuilder replace(int, int, CharSequence, int, int);
-    method public void setFilters(android.text.InputFilter[]);
-    method public void setSpan(Object, int, int, int);
-    method public CharSequence subSequence(int, int);
-    method public static android.text.SpannableStringBuilder valueOf(CharSequence);
-  }
-
-  public interface Spanned extends java.lang.CharSequence {
-    method public int getSpanEnd(Object);
-    method public int getSpanFlags(Object);
-    method public int getSpanStart(Object);
-    method public <T> T[] getSpans(int, int, Class<T>);
-    method public int nextSpanTransition(int, int, Class);
-    field public static final int SPAN_COMPOSING = 256; // 0x100
-    field public static final int SPAN_EXCLUSIVE_EXCLUSIVE = 33; // 0x21
-    field public static final int SPAN_EXCLUSIVE_INCLUSIVE = 34; // 0x22
-    field public static final int SPAN_INCLUSIVE_EXCLUSIVE = 17; // 0x11
-    field public static final int SPAN_INCLUSIVE_INCLUSIVE = 18; // 0x12
-    field public static final int SPAN_INTERMEDIATE = 512; // 0x200
-    field public static final int SPAN_MARK_MARK = 17; // 0x11
-    field public static final int SPAN_MARK_POINT = 18; // 0x12
-    field public static final int SPAN_PARAGRAPH = 51; // 0x33
-    field public static final int SPAN_POINT_MARK = 33; // 0x21
-    field public static final int SPAN_POINT_MARK_MASK = 51; // 0x33
-    field public static final int SPAN_POINT_POINT = 34; // 0x22
-    field public static final int SPAN_PRIORITY = 16711680; // 0xff0000
-    field public static final int SPAN_PRIORITY_SHIFT = 16; // 0x10
-    field public static final int SPAN_USER = -16777216; // 0xff000000
-    field public static final int SPAN_USER_SHIFT = 24; // 0x18
-  }
-
-  public final class SpannedString implements java.lang.CharSequence android.text.GetChars android.text.Spanned {
-    ctor public SpannedString(CharSequence);
-    method public final char charAt(int);
-    method public final void getChars(int, int, char[], int);
-    method public int getSpanEnd(Object);
-    method public int getSpanFlags(Object);
-    method public int getSpanStart(Object);
-    method public <T> T[] getSpans(int, int, Class<T>);
-    method public final int length();
-    method public int nextSpanTransition(int, int, Class);
-    method public CharSequence subSequence(int, int);
-    method public static android.text.SpannedString valueOf(CharSequence);
-  }
-
-  public class StaticLayout extends android.text.Layout {
-    ctor @Deprecated public StaticLayout(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, boolean);
-    ctor @Deprecated public StaticLayout(CharSequence, int, int, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, boolean);
-    ctor @Deprecated public StaticLayout(CharSequence, int, int, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, boolean, android.text.TextUtils.TruncateAt, int);
-    method public int getBottomPadding();
-    method public int getEllipsisCount(int);
-    method public int getEllipsisStart(int);
-    method public boolean getLineContainsTab(int);
-    method public int getLineCount();
-    method public int getLineDescent(int);
-    method public final android.text.Layout.Directions getLineDirections(int);
-    method public int getLineStart(int);
-    method public int getLineTop(int);
-    method public int getParagraphDirection(int);
-    method public int getTopPadding();
-  }
-
-  public static final class StaticLayout.Builder {
-    method @NonNull public android.text.StaticLayout build();
-    method @NonNull public static android.text.StaticLayout.Builder obtain(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @NonNull android.text.TextPaint, @IntRange(from=0) int);
-    method @NonNull public android.text.StaticLayout.Builder setAlignment(@NonNull android.text.Layout.Alignment);
-    method @NonNull public android.text.StaticLayout.Builder setBreakStrategy(int);
-    method @NonNull public android.text.StaticLayout.Builder setEllipsize(@Nullable android.text.TextUtils.TruncateAt);
-    method @NonNull public android.text.StaticLayout.Builder setEllipsizedWidth(@IntRange(from=0) int);
-    method @NonNull public android.text.StaticLayout.Builder setHyphenationFrequency(int);
-    method @NonNull public android.text.StaticLayout.Builder setIncludePad(boolean);
-    method @NonNull public android.text.StaticLayout.Builder setIndents(@Nullable int[], @Nullable int[]);
-    method @NonNull public android.text.StaticLayout.Builder setJustificationMode(int);
-    method @NonNull public android.text.StaticLayout.Builder setLineSpacing(float, @FloatRange(from=0.0) float);
-    method @NonNull public android.text.StaticLayout.Builder setMaxLines(@IntRange(from=0) int);
-    method public android.text.StaticLayout.Builder setText(CharSequence);
-    method @NonNull public android.text.StaticLayout.Builder setTextDirection(@NonNull android.text.TextDirectionHeuristic);
-    method @NonNull public android.text.StaticLayout.Builder setUseLineSpacingFromFallbacks(boolean);
-  }
-
-  public interface TextDirectionHeuristic {
-    method public boolean isRtl(char[], int, int);
-    method public boolean isRtl(CharSequence, int, int);
-  }
-
-  public class TextDirectionHeuristics {
-    ctor public TextDirectionHeuristics();
-    field public static final android.text.TextDirectionHeuristic ANYRTL_LTR;
-    field public static final android.text.TextDirectionHeuristic FIRSTSTRONG_LTR;
-    field public static final android.text.TextDirectionHeuristic FIRSTSTRONG_RTL;
-    field public static final android.text.TextDirectionHeuristic LOCALE;
-    field public static final android.text.TextDirectionHeuristic LTR;
-    field public static final android.text.TextDirectionHeuristic RTL;
-  }
-
-  public class TextPaint extends android.graphics.Paint {
-    ctor public TextPaint();
-    ctor public TextPaint(int);
-    ctor public TextPaint(android.graphics.Paint);
-    method public void set(android.text.TextPaint);
-    field public int baselineShift;
-    field @ColorInt public int bgColor;
-    field public float density;
-    field public int[] drawableState;
-    field @ColorInt public int linkColor;
-    field @ColorInt public int underlineColor;
-    field @Px public float underlineThickness;
-  }
-
-  public class TextUtils {
-    method @Deprecated public static CharSequence commaEllipsize(CharSequence, android.text.TextPaint, float, String, String);
-    method public static CharSequence concat(java.lang.CharSequence...);
-    method public static void copySpansFrom(android.text.Spanned, int, int, Class, android.text.Spannable, int);
-    method public static void dumpSpans(CharSequence, android.util.Printer, String);
-    method public static CharSequence ellipsize(CharSequence, android.text.TextPaint, float, android.text.TextUtils.TruncateAt);
-    method public static CharSequence ellipsize(CharSequence, android.text.TextPaint, float, android.text.TextUtils.TruncateAt, boolean, @Nullable android.text.TextUtils.EllipsizeCallback);
-    method public static boolean equals(CharSequence, CharSequence);
-    method public static CharSequence expandTemplate(CharSequence, java.lang.CharSequence...);
-    method public static int getCapsMode(CharSequence, int, int);
-    method public static void getChars(CharSequence, int, int, char[], int);
-    method public static int getLayoutDirectionFromLocale(java.util.Locale);
-    method public static int getOffsetAfter(CharSequence, int);
-    method public static int getOffsetBefore(CharSequence, int);
-    method @Deprecated public static CharSequence getReverse(CharSequence, int, int);
-    method public static int getTrimmedLength(CharSequence);
-    method public static String htmlEncode(String);
-    method public static int indexOf(CharSequence, char);
-    method public static int indexOf(CharSequence, char, int);
-    method public static int indexOf(CharSequence, char, int, int);
-    method public static int indexOf(CharSequence, CharSequence);
-    method public static int indexOf(CharSequence, CharSequence, int);
-    method public static int indexOf(CharSequence, CharSequence, int, int);
-    method public static boolean isDigitsOnly(CharSequence);
-    method public static boolean isEmpty(@Nullable CharSequence);
-    method public static boolean isGraphic(CharSequence);
-    method @Deprecated public static boolean isGraphic(char);
-    method public static String join(@NonNull CharSequence, @NonNull Object[]);
-    method public static String join(@NonNull CharSequence, @NonNull Iterable);
-    method public static int lastIndexOf(CharSequence, char);
-    method public static int lastIndexOf(CharSequence, char, int);
-    method public static int lastIndexOf(CharSequence, char, int, int);
-    method public static CharSequence listEllipsize(@Nullable android.content.Context, @Nullable java.util.List<java.lang.CharSequence>, @NonNull String, @NonNull android.text.TextPaint, @FloatRange(from=0.0, fromInclusive=false) float, @PluralsRes int);
-    method @NonNull public static CharSequence makeSafeForPresentation(@NonNull String, @IntRange(from=0) int, @FloatRange(from=0) float, int);
-    method public static boolean regionMatches(CharSequence, int, CharSequence, int, int);
-    method public static CharSequence replace(CharSequence, String[], CharSequence[]);
-    method public static String[] split(String, String);
-    method public static String[] split(String, java.util.regex.Pattern);
-    method public static CharSequence stringOrSpannedString(CharSequence);
-    method public static String substring(CharSequence, int, int);
-    method public static void writeToParcel(@Nullable CharSequence, @NonNull android.os.Parcel, int);
-    field public static final int CAP_MODE_CHARACTERS = 4096; // 0x1000
-    field public static final int CAP_MODE_SENTENCES = 16384; // 0x4000
-    field public static final int CAP_MODE_WORDS = 8192; // 0x2000
-    field public static final android.os.Parcelable.Creator<java.lang.CharSequence> CHAR_SEQUENCE_CREATOR;
-    field public static final int SAFE_STRING_FLAG_FIRST_LINE = 4; // 0x4
-    field public static final int SAFE_STRING_FLAG_SINGLE_LINE = 2; // 0x2
-    field public static final int SAFE_STRING_FLAG_TRIM = 1; // 0x1
-  }
-
-  public static interface TextUtils.EllipsizeCallback {
-    method public void ellipsized(int, int);
-  }
-
-  public static class TextUtils.SimpleStringSplitter implements java.util.Iterator<java.lang.String> android.text.TextUtils.StringSplitter {
-    ctor public TextUtils.SimpleStringSplitter(char);
-    method public boolean hasNext();
-    method public java.util.Iterator<java.lang.String> iterator();
-    method public String next();
-    method public void setString(String);
-  }
-
-  public static interface TextUtils.StringSplitter extends java.lang.Iterable<java.lang.String> {
-    method public void setString(String);
-  }
-
-  public enum TextUtils.TruncateAt {
-    enum_constant public static final android.text.TextUtils.TruncateAt END;
-    enum_constant public static final android.text.TextUtils.TruncateAt MARQUEE;
-    enum_constant public static final android.text.TextUtils.TruncateAt MIDDLE;
-    enum_constant public static final android.text.TextUtils.TruncateAt START;
-  }
-
-  public interface TextWatcher extends android.text.NoCopySpan {
-    method public void afterTextChanged(android.text.Editable);
-    method public void beforeTextChanged(CharSequence, int, int, int);
-    method public void onTextChanged(CharSequence, int, int, int);
-  }
-
-}
-
-package android.text.format {
-
-  public class DateFormat {
-    ctor public DateFormat();
-    method public static CharSequence format(CharSequence, long);
-    method public static CharSequence format(CharSequence, java.util.Date);
-    method public static CharSequence format(CharSequence, java.util.Calendar);
-    method public static String getBestDateTimePattern(java.util.Locale, String);
-    method public static java.text.DateFormat getDateFormat(android.content.Context);
-    method public static char[] getDateFormatOrder(android.content.Context);
-    method public static java.text.DateFormat getLongDateFormat(android.content.Context);
-    method public static java.text.DateFormat getMediumDateFormat(android.content.Context);
-    method public static java.text.DateFormat getTimeFormat(android.content.Context);
-    method public static boolean is24HourFormat(android.content.Context);
-  }
-
-  public class DateUtils {
-    ctor public DateUtils();
-    method public static String formatDateRange(android.content.Context, long, long, int);
-    method public static java.util.Formatter formatDateRange(android.content.Context, java.util.Formatter, long, long, int);
-    method public static java.util.Formatter formatDateRange(android.content.Context, java.util.Formatter, long, long, int, String);
-    method public static String formatDateTime(android.content.Context, long, int);
-    method public static String formatElapsedTime(long);
-    method public static String formatElapsedTime(StringBuilder, long);
-    method public static final CharSequence formatSameDayTime(long, long, int, int);
-    method @Deprecated public static String getAMPMString(int);
-    method @Deprecated public static String getDayOfWeekString(int, int);
-    method @Deprecated public static String getMonthString(int, int);
-    method public static CharSequence getRelativeDateTimeString(android.content.Context, long, long, long, int);
-    method public static CharSequence getRelativeTimeSpanString(long);
-    method public static CharSequence getRelativeTimeSpanString(long, long, long);
-    method public static CharSequence getRelativeTimeSpanString(long, long, long, int);
-    method public static CharSequence getRelativeTimeSpanString(android.content.Context, long, boolean);
-    method public static CharSequence getRelativeTimeSpanString(android.content.Context, long);
-    method public static boolean isToday(long);
-    field @Deprecated public static final String ABBREV_MONTH_FORMAT = "%b";
-    field public static final String ABBREV_WEEKDAY_FORMAT = "%a";
-    field public static final long DAY_IN_MILLIS = 86400000L; // 0x5265c00L
-    field @Deprecated public static final int FORMAT_12HOUR = 64; // 0x40
-    field @Deprecated public static final int FORMAT_24HOUR = 128; // 0x80
-    field public static final int FORMAT_ABBREV_ALL = 524288; // 0x80000
-    field public static final int FORMAT_ABBREV_MONTH = 65536; // 0x10000
-    field public static final int FORMAT_ABBREV_RELATIVE = 262144; // 0x40000
-    field public static final int FORMAT_ABBREV_TIME = 16384; // 0x4000
-    field public static final int FORMAT_ABBREV_WEEKDAY = 32768; // 0x8000
-    field @Deprecated public static final int FORMAT_CAP_AMPM = 256; // 0x100
-    field @Deprecated public static final int FORMAT_CAP_MIDNIGHT = 4096; // 0x1000
-    field @Deprecated public static final int FORMAT_CAP_NOON = 1024; // 0x400
-    field @Deprecated public static final int FORMAT_CAP_NOON_MIDNIGHT = 5120; // 0x1400
-    field public static final int FORMAT_NO_MIDNIGHT = 2048; // 0x800
-    field public static final int FORMAT_NO_MONTH_DAY = 32; // 0x20
-    field public static final int FORMAT_NO_NOON = 512; // 0x200
-    field @Deprecated public static final int FORMAT_NO_NOON_MIDNIGHT = 2560; // 0xa00
-    field public static final int FORMAT_NO_YEAR = 8; // 0x8
-    field public static final int FORMAT_NUMERIC_DATE = 131072; // 0x20000
-    field public static final int FORMAT_SHOW_DATE = 16; // 0x10
-    field public static final int FORMAT_SHOW_TIME = 1; // 0x1
-    field public static final int FORMAT_SHOW_WEEKDAY = 2; // 0x2
-    field public static final int FORMAT_SHOW_YEAR = 4; // 0x4
-    field @Deprecated public static final int FORMAT_UTC = 8192; // 0x2000
-    field public static final long HOUR_IN_MILLIS = 3600000L; // 0x36ee80L
-    field @Deprecated public static final String HOUR_MINUTE_24 = "%H:%M";
-    field @Deprecated public static final int LENGTH_LONG = 10; // 0xa
-    field @Deprecated public static final int LENGTH_MEDIUM = 20; // 0x14
-    field @Deprecated public static final int LENGTH_SHORT = 30; // 0x1e
-    field @Deprecated public static final int LENGTH_SHORTER = 40; // 0x28
-    field @Deprecated public static final int LENGTH_SHORTEST = 50; // 0x32
-    field public static final long MINUTE_IN_MILLIS = 60000L; // 0xea60L
-    field public static final String MONTH_DAY_FORMAT = "%-d";
-    field public static final String MONTH_FORMAT = "%B";
-    field public static final String NUMERIC_MONTH_FORMAT = "%m";
-    field public static final long SECOND_IN_MILLIS = 1000L; // 0x3e8L
-    field public static final String WEEKDAY_FORMAT = "%A";
-    field public static final long WEEK_IN_MILLIS = 604800000L; // 0x240c8400L
-    field public static final String YEAR_FORMAT = "%Y";
-    field public static final String YEAR_FORMAT_TWO_DIGITS = "%g";
-    field @Deprecated public static final long YEAR_IN_MILLIS = 31449600000L; // 0x7528ad000L
-    field @Deprecated public static final int[] sameMonthTable;
-    field @Deprecated public static final int[] sameYearTable;
-  }
-
-  public final class Formatter {
-    ctor public Formatter();
-    method public static String formatFileSize(@Nullable android.content.Context, long);
-    method @Deprecated public static String formatIpAddress(int);
-    method public static String formatShortFileSize(@Nullable android.content.Context, long);
-  }
-
-  @Deprecated public class Time {
-    ctor @Deprecated public Time(String);
-    ctor @Deprecated public Time();
-    ctor @Deprecated public Time(android.text.format.Time);
-    method @Deprecated public boolean after(android.text.format.Time);
-    method @Deprecated public boolean before(android.text.format.Time);
-    method @Deprecated public void clear(String);
-    method @Deprecated public static int compare(android.text.format.Time, android.text.format.Time);
-    method @Deprecated public String format(String);
-    method @Deprecated public String format2445();
-    method @Deprecated public String format3339(boolean);
-    method @Deprecated public int getActualMaximum(int);
-    method @Deprecated public static String getCurrentTimezone();
-    method @Deprecated public static int getJulianDay(long, long);
-    method @Deprecated public static int getJulianMondayFromWeeksSinceEpoch(int);
-    method @Deprecated public int getWeekNumber();
-    method @Deprecated public static int getWeeksSinceEpochFromJulianDay(int, int);
-    method @Deprecated public static boolean isEpoch(android.text.format.Time);
-    method @Deprecated public long normalize(boolean);
-    method @Deprecated public boolean parse(String);
-    method @Deprecated public boolean parse3339(String);
-    method @Deprecated public void set(long);
-    method @Deprecated public void set(android.text.format.Time);
-    method @Deprecated public void set(int, int, int, int, int, int);
-    method @Deprecated public void set(int, int, int);
-    method @Deprecated public long setJulianDay(int);
-    method @Deprecated public void setToNow();
-    method @Deprecated public void switchTimezone(String);
-    method @Deprecated public long toMillis(boolean);
-    field @Deprecated public static final int EPOCH_JULIAN_DAY = 2440588; // 0x253d8c
-    field @Deprecated public static final int FRIDAY = 5; // 0x5
-    field @Deprecated public static final int HOUR = 3; // 0x3
-    field @Deprecated public static final int MINUTE = 2; // 0x2
-    field @Deprecated public static final int MONDAY = 1; // 0x1
-    field @Deprecated public static final int MONDAY_BEFORE_JULIAN_EPOCH = 2440585; // 0x253d89
-    field @Deprecated public static final int MONTH = 5; // 0x5
-    field @Deprecated public static final int MONTH_DAY = 4; // 0x4
-    field @Deprecated public static final int SATURDAY = 6; // 0x6
-    field @Deprecated public static final int SECOND = 1; // 0x1
-    field @Deprecated public static final int SUNDAY = 0; // 0x0
-    field @Deprecated public static final int THURSDAY = 4; // 0x4
-    field @Deprecated public static final String TIMEZONE_UTC = "UTC";
-    field @Deprecated public static final int TUESDAY = 2; // 0x2
-    field @Deprecated public static final int WEDNESDAY = 3; // 0x3
-    field @Deprecated public static final int WEEK_DAY = 7; // 0x7
-    field @Deprecated public static final int WEEK_NUM = 9; // 0x9
-    field @Deprecated public static final int YEAR = 6; // 0x6
-    field @Deprecated public static final int YEAR_DAY = 8; // 0x8
-    field @Deprecated public boolean allDay;
-    field @Deprecated public long gmtoff;
-    field @Deprecated public int hour;
-    field @Deprecated public int isDst;
-    field @Deprecated public int minute;
-    field @Deprecated public int month;
-    field @Deprecated public int monthDay;
-    field @Deprecated public int second;
-    field @Deprecated public String timezone;
-    field @Deprecated public int weekDay;
-    field @Deprecated public int year;
-    field @Deprecated public int yearDay;
-  }
-
-}
-
-package android.text.method {
-
-  public class ArrowKeyMovementMethod extends android.text.method.BaseMovementMethod implements android.text.method.MovementMethod {
-    ctor public ArrowKeyMovementMethod();
-    method public static android.text.method.MovementMethod getInstance();
-  }
-
-  public abstract class BaseKeyListener extends android.text.method.MetaKeyKeyListener implements android.text.method.KeyListener {
-    ctor public BaseKeyListener();
-    method public boolean backspace(android.view.View, android.text.Editable, int, android.view.KeyEvent);
-    method public boolean forwardDelete(android.view.View, android.text.Editable, int, android.view.KeyEvent);
-    method public boolean onKeyOther(android.view.View, android.text.Editable, android.view.KeyEvent);
-  }
-
-  public class BaseMovementMethod implements android.text.method.MovementMethod {
-    ctor public BaseMovementMethod();
-    method protected boolean bottom(android.widget.TextView, android.text.Spannable);
-    method public boolean canSelectArbitrarily();
-    method protected boolean down(android.widget.TextView, android.text.Spannable);
-    method protected boolean end(android.widget.TextView, android.text.Spannable);
-    method protected int getMovementMetaState(android.text.Spannable, android.view.KeyEvent);
-    method protected boolean handleMovementKey(android.widget.TextView, android.text.Spannable, int, int, android.view.KeyEvent);
-    method protected boolean home(android.widget.TextView, android.text.Spannable);
-    method public void initialize(android.widget.TextView, android.text.Spannable);
-    method protected boolean left(android.widget.TextView, android.text.Spannable);
-    method protected boolean lineEnd(android.widget.TextView, android.text.Spannable);
-    method protected boolean lineStart(android.widget.TextView, android.text.Spannable);
-    method public boolean onGenericMotionEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
-    method public boolean onKeyDown(android.widget.TextView, android.text.Spannable, int, android.view.KeyEvent);
-    method public boolean onKeyOther(android.widget.TextView, android.text.Spannable, android.view.KeyEvent);
-    method public boolean onKeyUp(android.widget.TextView, android.text.Spannable, int, android.view.KeyEvent);
-    method public void onTakeFocus(android.widget.TextView, android.text.Spannable, int);
-    method public boolean onTouchEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
-    method public boolean onTrackballEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
-    method protected boolean pageDown(android.widget.TextView, android.text.Spannable);
-    method protected boolean pageUp(android.widget.TextView, android.text.Spannable);
-    method protected boolean right(android.widget.TextView, android.text.Spannable);
-    method protected boolean top(android.widget.TextView, android.text.Spannable);
-    method protected boolean up(android.widget.TextView, android.text.Spannable);
-  }
-
-  public class CharacterPickerDialog extends android.app.Dialog implements android.widget.AdapterView.OnItemClickListener android.view.View.OnClickListener {
-    ctor public CharacterPickerDialog(android.content.Context, android.view.View, android.text.Editable, String, boolean);
-    method public void onClick(android.view.View);
-    method public void onItemClick(android.widget.AdapterView, android.view.View, int, long);
-  }
-
-  public class DateKeyListener extends android.text.method.NumberKeyListener {
-    ctor @Deprecated public DateKeyListener();
-    ctor public DateKeyListener(@Nullable java.util.Locale);
-    method @NonNull protected char[] getAcceptedChars();
-    method public int getInputType();
-    method @Deprecated @NonNull public static android.text.method.DateKeyListener getInstance();
-    method @NonNull public static android.text.method.DateKeyListener getInstance(@Nullable java.util.Locale);
-    field @Deprecated public static final char[] CHARACTERS;
-  }
-
-  public class DateTimeKeyListener extends android.text.method.NumberKeyListener {
-    ctor @Deprecated public DateTimeKeyListener();
-    ctor public DateTimeKeyListener(@Nullable java.util.Locale);
-    method @NonNull protected char[] getAcceptedChars();
-    method public int getInputType();
-    method @Deprecated @NonNull public static android.text.method.DateTimeKeyListener getInstance();
-    method @NonNull public static android.text.method.DateTimeKeyListener getInstance(@Nullable java.util.Locale);
-    field @Deprecated public static final char[] CHARACTERS;
-  }
-
-  public class DialerKeyListener extends android.text.method.NumberKeyListener {
-    ctor public DialerKeyListener();
-    method protected char[] getAcceptedChars();
-    method public int getInputType();
-    method public static android.text.method.DialerKeyListener getInstance();
-    field public static final char[] CHARACTERS;
-  }
-
-  public class DigitsKeyListener extends android.text.method.NumberKeyListener {
-    ctor @Deprecated public DigitsKeyListener();
-    ctor @Deprecated public DigitsKeyListener(boolean, boolean);
-    ctor public DigitsKeyListener(@Nullable java.util.Locale);
-    ctor public DigitsKeyListener(@Nullable java.util.Locale, boolean, boolean);
-    method protected char[] getAcceptedChars();
-    method public int getInputType();
-    method @Deprecated @NonNull public static android.text.method.DigitsKeyListener getInstance();
-    method @Deprecated @NonNull public static android.text.method.DigitsKeyListener getInstance(boolean, boolean);
-    method @NonNull public static android.text.method.DigitsKeyListener getInstance(@Nullable java.util.Locale);
-    method @NonNull public static android.text.method.DigitsKeyListener getInstance(@Nullable java.util.Locale, boolean, boolean);
-    method @NonNull public static android.text.method.DigitsKeyListener getInstance(@NonNull String);
-  }
-
-  public class HideReturnsTransformationMethod extends android.text.method.ReplacementTransformationMethod {
-    ctor public HideReturnsTransformationMethod();
-    method public static android.text.method.HideReturnsTransformationMethod getInstance();
-    method protected char[] getOriginal();
-    method protected char[] getReplacement();
-  }
-
-  public interface KeyListener {
-    method public void clearMetaKeyState(android.view.View, android.text.Editable, int);
-    method public int getInputType();
-    method public boolean onKeyDown(android.view.View, android.text.Editable, int, android.view.KeyEvent);
-    method public boolean onKeyOther(android.view.View, android.text.Editable, android.view.KeyEvent);
-    method public boolean onKeyUp(android.view.View, android.text.Editable, int, android.view.KeyEvent);
-  }
-
-  public class LinkMovementMethod extends android.text.method.ScrollingMovementMethod {
-    ctor public LinkMovementMethod();
-    method public static android.text.method.MovementMethod getInstance();
-  }
-
-  public abstract class MetaKeyKeyListener {
-    ctor public MetaKeyKeyListener();
-    method public static void adjustMetaAfterKeypress(android.text.Spannable);
-    method public static long adjustMetaAfterKeypress(long);
-    method public void clearMetaKeyState(android.view.View, android.text.Editable, int);
-    method public static void clearMetaKeyState(android.text.Editable, int);
-    method public long clearMetaKeyState(long, int);
-    method public static final int getMetaState(CharSequence);
-    method public static final int getMetaState(CharSequence, android.view.KeyEvent);
-    method public static final int getMetaState(CharSequence, int);
-    method public static final int getMetaState(CharSequence, int, android.view.KeyEvent);
-    method public static final int getMetaState(long);
-    method public static final int getMetaState(long, int);
-    method public static long handleKeyDown(long, int, android.view.KeyEvent);
-    method public static long handleKeyUp(long, int, android.view.KeyEvent);
-    method public static boolean isMetaTracker(CharSequence, Object);
-    method public static boolean isSelectingMetaTracker(CharSequence, Object);
-    method public boolean onKeyDown(android.view.View, android.text.Editable, int, android.view.KeyEvent);
-    method public boolean onKeyUp(android.view.View, android.text.Editable, int, android.view.KeyEvent);
-    method protected static void resetLockedMeta(android.text.Spannable);
-    method public static long resetLockedMeta(long);
-    method public static void resetMetaState(android.text.Spannable);
-    field public static final int META_ALT_LOCKED = 512; // 0x200
-    field public static final int META_ALT_ON = 2; // 0x2
-    field public static final int META_CAP_LOCKED = 256; // 0x100
-    field public static final int META_SHIFT_ON = 1; // 0x1
-    field public static final int META_SYM_LOCKED = 1024; // 0x400
-    field public static final int META_SYM_ON = 4; // 0x4
-  }
-
-  public interface MovementMethod {
-    method public boolean canSelectArbitrarily();
-    method public void initialize(android.widget.TextView, android.text.Spannable);
-    method public boolean onGenericMotionEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
-    method public boolean onKeyDown(android.widget.TextView, android.text.Spannable, int, android.view.KeyEvent);
-    method public boolean onKeyOther(android.widget.TextView, android.text.Spannable, android.view.KeyEvent);
-    method public boolean onKeyUp(android.widget.TextView, android.text.Spannable, int, android.view.KeyEvent);
-    method public void onTakeFocus(android.widget.TextView, android.text.Spannable, int);
-    method public boolean onTouchEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
-    method public boolean onTrackballEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
-  }
-
-  public class MultiTapKeyListener extends android.text.method.BaseKeyListener implements android.text.SpanWatcher {
-    ctor public MultiTapKeyListener(android.text.method.TextKeyListener.Capitalize, boolean);
-    method public int getInputType();
-    method public static android.text.method.MultiTapKeyListener getInstance(boolean, android.text.method.TextKeyListener.Capitalize);
-    method public void onSpanAdded(android.text.Spannable, Object, int, int);
-    method public void onSpanChanged(android.text.Spannable, Object, int, int, int, int);
-    method public void onSpanRemoved(android.text.Spannable, Object, int, int);
-  }
-
-  public abstract class NumberKeyListener extends android.text.method.BaseKeyListener implements android.text.InputFilter {
-    ctor public NumberKeyListener();
-    method public CharSequence filter(CharSequence, int, int, android.text.Spanned, int, int);
-    method @NonNull protected abstract char[] getAcceptedChars();
-    method protected int lookup(android.view.KeyEvent, android.text.Spannable);
-    method protected static boolean ok(char[], char);
-  }
-
-  public class PasswordTransformationMethod implements android.text.TextWatcher android.text.method.TransformationMethod {
-    ctor public PasswordTransformationMethod();
-    method public void afterTextChanged(android.text.Editable);
-    method public void beforeTextChanged(CharSequence, int, int, int);
-    method public static android.text.method.PasswordTransformationMethod getInstance();
-    method public CharSequence getTransformation(CharSequence, android.view.View);
-    method public void onFocusChanged(android.view.View, CharSequence, boolean, int, android.graphics.Rect);
-    method public void onTextChanged(CharSequence, int, int, int);
-  }
-
-  public class QwertyKeyListener extends android.text.method.BaseKeyListener {
-    ctor public QwertyKeyListener(android.text.method.TextKeyListener.Capitalize, boolean);
-    method public int getInputType();
-    method public static android.text.method.QwertyKeyListener getInstance(boolean, android.text.method.TextKeyListener.Capitalize);
-    method public static android.text.method.QwertyKeyListener getInstanceForFullKeyboard();
-    method public static void markAsReplaced(android.text.Spannable, int, int, String);
-  }
-
-  public abstract class ReplacementTransformationMethod implements android.text.method.TransformationMethod {
-    ctor public ReplacementTransformationMethod();
-    method protected abstract char[] getOriginal();
-    method protected abstract char[] getReplacement();
-    method public CharSequence getTransformation(CharSequence, android.view.View);
-    method public void onFocusChanged(android.view.View, CharSequence, boolean, int, android.graphics.Rect);
-  }
-
-  public class ScrollingMovementMethod extends android.text.method.BaseMovementMethod implements android.text.method.MovementMethod {
-    ctor public ScrollingMovementMethod();
-    method public static android.text.method.MovementMethod getInstance();
-  }
-
-  public class SingleLineTransformationMethod extends android.text.method.ReplacementTransformationMethod {
-    ctor public SingleLineTransformationMethod();
-    method public static android.text.method.SingleLineTransformationMethod getInstance();
-    method protected char[] getOriginal();
-    method protected char[] getReplacement();
-  }
-
-  public class TextKeyListener extends android.text.method.BaseKeyListener implements android.text.SpanWatcher {
-    ctor public TextKeyListener(android.text.method.TextKeyListener.Capitalize, boolean);
-    method public static void clear(android.text.Editable);
-    method public int getInputType();
-    method public static android.text.method.TextKeyListener getInstance(boolean, android.text.method.TextKeyListener.Capitalize);
-    method public static android.text.method.TextKeyListener getInstance();
-    method public void onSpanAdded(android.text.Spannable, Object, int, int);
-    method public void onSpanChanged(android.text.Spannable, Object, int, int, int, int);
-    method public void onSpanRemoved(android.text.Spannable, Object, int, int);
-    method public void release();
-    method public static boolean shouldCap(android.text.method.TextKeyListener.Capitalize, CharSequence, int);
-  }
-
-  public enum TextKeyListener.Capitalize {
-    enum_constant public static final android.text.method.TextKeyListener.Capitalize CHARACTERS;
-    enum_constant public static final android.text.method.TextKeyListener.Capitalize NONE;
-    enum_constant public static final android.text.method.TextKeyListener.Capitalize SENTENCES;
-    enum_constant public static final android.text.method.TextKeyListener.Capitalize WORDS;
-  }
-
-  public class TimeKeyListener extends android.text.method.NumberKeyListener {
-    ctor @Deprecated public TimeKeyListener();
-    ctor public TimeKeyListener(@Nullable java.util.Locale);
-    method @NonNull protected char[] getAcceptedChars();
-    method public int getInputType();
-    method @Deprecated @NonNull public static android.text.method.TimeKeyListener getInstance();
-    method @NonNull public static android.text.method.TimeKeyListener getInstance(@Nullable java.util.Locale);
-    field @Deprecated public static final char[] CHARACTERS;
-  }
-
-  public class Touch {
-    method public static int getInitialScrollX(android.widget.TextView, android.text.Spannable);
-    method public static int getInitialScrollY(android.widget.TextView, android.text.Spannable);
-    method public static boolean onTouchEvent(android.widget.TextView, android.text.Spannable, android.view.MotionEvent);
-    method public static void scrollTo(android.widget.TextView, android.text.Layout, int, int);
-  }
-
-  public interface TransformationMethod {
-    method public CharSequence getTransformation(CharSequence, android.view.View);
-    method public void onFocusChanged(android.view.View, CharSequence, boolean, int, android.graphics.Rect);
-  }
-
-}
-
-package android.text.style {
-
-  public class AbsoluteSizeSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
-    ctor public AbsoluteSizeSpan(int);
-    ctor public AbsoluteSizeSpan(int, boolean);
-    ctor public AbsoluteSizeSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public boolean getDip();
-    method public int getSize();
-    method public int getSpanTypeId();
-    method public void updateDrawState(@NonNull android.text.TextPaint);
-    method public void updateMeasureState(@NonNull android.text.TextPaint);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-  }
-
-  public interface AlignmentSpan extends android.text.style.ParagraphStyle {
-    method public android.text.Layout.Alignment getAlignment();
-  }
-
-  public static class AlignmentSpan.Standard implements android.text.style.AlignmentSpan android.text.ParcelableSpan {
-    ctor public AlignmentSpan.Standard(@NonNull android.text.Layout.Alignment);
-    ctor public AlignmentSpan.Standard(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public android.text.Layout.Alignment getAlignment();
-    method public int getSpanTypeId();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-  }
-
-  public class BackgroundColorSpan extends android.text.style.CharacterStyle implements android.text.ParcelableSpan android.text.style.UpdateAppearance {
-    ctor public BackgroundColorSpan(@ColorInt int);
-    ctor public BackgroundColorSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method @ColorInt public int getBackgroundColor();
-    method public int getSpanTypeId();
-    method public void updateDrawState(@NonNull android.text.TextPaint);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-  }
-
-  public class BulletSpan implements android.text.style.LeadingMarginSpan android.text.ParcelableSpan {
-    ctor public BulletSpan();
-    ctor public BulletSpan(int);
-    ctor public BulletSpan(int, @ColorInt int);
-    ctor public BulletSpan(int, @ColorInt int, @IntRange(from=0) int);
-    ctor public BulletSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public void drawLeadingMargin(@NonNull android.graphics.Canvas, @NonNull android.graphics.Paint, int, int, int, int, int, @NonNull CharSequence, int, int, boolean, @Nullable android.text.Layout);
-    method public int getBulletRadius();
-    method public int getColor();
-    method public int getGapWidth();
-    method public int getLeadingMargin(boolean);
-    method public int getSpanTypeId();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final int STANDARD_GAP_WIDTH = 2; // 0x2
-  }
-
-  public abstract class CharacterStyle {
-    ctor public CharacterStyle();
-    method public android.text.style.CharacterStyle getUnderlying();
-    method public abstract void updateDrawState(android.text.TextPaint);
-    method public static android.text.style.CharacterStyle wrap(android.text.style.CharacterStyle);
-  }
-
-  public abstract class ClickableSpan extends android.text.style.CharacterStyle implements android.text.style.UpdateAppearance {
-    ctor public ClickableSpan();
-    method public abstract void onClick(@NonNull android.view.View);
-    method public void updateDrawState(@NonNull android.text.TextPaint);
-  }
-
-  public class DrawableMarginSpan implements android.text.style.LeadingMarginSpan android.text.style.LineHeightSpan {
-    ctor public DrawableMarginSpan(@NonNull android.graphics.drawable.Drawable);
-    ctor public DrawableMarginSpan(@NonNull android.graphics.drawable.Drawable, int);
-    method public void chooseHeight(@NonNull CharSequence, int, int, int, int, @NonNull android.graphics.Paint.FontMetricsInt);
-    method public void drawLeadingMargin(@NonNull android.graphics.Canvas, @NonNull android.graphics.Paint, int, int, int, int, int, @NonNull CharSequence, int, int, boolean, @NonNull android.text.Layout);
-    method public int getLeadingMargin(boolean);
-  }
-
-  public abstract class DynamicDrawableSpan extends android.text.style.ReplacementSpan {
-    ctor public DynamicDrawableSpan();
-    ctor protected DynamicDrawableSpan(int);
-    method public void draw(@NonNull android.graphics.Canvas, CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, float, int, int, int, @NonNull android.graphics.Paint);
-    method public abstract android.graphics.drawable.Drawable getDrawable();
-    method public int getSize(@NonNull android.graphics.Paint, CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @Nullable android.graphics.Paint.FontMetricsInt);
-    method public int getVerticalAlignment();
-    field public static final int ALIGN_BASELINE = 1; // 0x1
-    field public static final int ALIGN_BOTTOM = 0; // 0x0
-    field public static final int ALIGN_CENTER = 2; // 0x2
-    field protected final int mVerticalAlignment;
-  }
-
-  public class EasyEditSpan implements android.text.ParcelableSpan {
-    ctor public EasyEditSpan();
-    ctor public EasyEditSpan(android.app.PendingIntent);
-    ctor public EasyEditSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public int getSpanTypeId();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final String EXTRA_TEXT_CHANGED_TYPE = "android.text.style.EXTRA_TEXT_CHANGED_TYPE";
-    field public static final int TEXT_DELETED = 1; // 0x1
-    field public static final int TEXT_MODIFIED = 2; // 0x2
-  }
-
-  public class ForegroundColorSpan extends android.text.style.CharacterStyle implements android.text.ParcelableSpan android.text.style.UpdateAppearance {
-    ctor public ForegroundColorSpan(@ColorInt int);
-    ctor public ForegroundColorSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method @ColorInt public int getForegroundColor();
-    method public int getSpanTypeId();
-    method public void updateDrawState(@NonNull android.text.TextPaint);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-  }
-
-  public class IconMarginSpan implements android.text.style.LeadingMarginSpan android.text.style.LineHeightSpan {
-    ctor public IconMarginSpan(@NonNull android.graphics.Bitmap);
-    ctor public IconMarginSpan(@NonNull android.graphics.Bitmap, @IntRange(from=0) int);
-    method public void chooseHeight(CharSequence, int, int, int, int, android.graphics.Paint.FontMetricsInt);
-    method public void drawLeadingMargin(android.graphics.Canvas, android.graphics.Paint, int, int, int, int, int, CharSequence, int, int, boolean, android.text.Layout);
-    method public int getLeadingMargin(boolean);
-  }
-
-  public class ImageSpan extends android.text.style.DynamicDrawableSpan {
-    ctor @Deprecated public ImageSpan(@NonNull android.graphics.Bitmap);
-    ctor @Deprecated public ImageSpan(@NonNull android.graphics.Bitmap, int);
-    ctor public ImageSpan(@NonNull android.content.Context, @NonNull android.graphics.Bitmap);
-    ctor public ImageSpan(@NonNull android.content.Context, @NonNull android.graphics.Bitmap, int);
-    ctor public ImageSpan(@NonNull android.graphics.drawable.Drawable);
-    ctor public ImageSpan(@NonNull android.graphics.drawable.Drawable, int);
-    ctor public ImageSpan(@NonNull android.graphics.drawable.Drawable, @NonNull String);
-    ctor public ImageSpan(@NonNull android.graphics.drawable.Drawable, @NonNull String, int);
-    ctor public ImageSpan(@NonNull android.content.Context, @NonNull android.net.Uri);
-    ctor public ImageSpan(@NonNull android.content.Context, @NonNull android.net.Uri, int);
-    ctor public ImageSpan(@NonNull android.content.Context, @DrawableRes int);
-    ctor public ImageSpan(@NonNull android.content.Context, @DrawableRes int, int);
-    method public android.graphics.drawable.Drawable getDrawable();
-    method @Nullable public String getSource();
-  }
-
-  public interface LeadingMarginSpan extends android.text.style.ParagraphStyle {
-    method public void drawLeadingMargin(android.graphics.Canvas, android.graphics.Paint, int, int, int, int, int, CharSequence, int, int, boolean, android.text.Layout);
-    method public int getLeadingMargin(boolean);
-  }
-
-  public static interface LeadingMarginSpan.LeadingMarginSpan2 extends android.text.style.LeadingMarginSpan android.text.style.WrapTogetherSpan {
-    method public int getLeadingMarginLineCount();
-  }
-
-  public static class LeadingMarginSpan.Standard implements android.text.style.LeadingMarginSpan android.text.ParcelableSpan {
-    ctor public LeadingMarginSpan.Standard(int, int);
-    ctor public LeadingMarginSpan.Standard(int);
-    ctor public LeadingMarginSpan.Standard(android.os.Parcel);
-    method public int describeContents();
-    method public void drawLeadingMargin(android.graphics.Canvas, android.graphics.Paint, int, int, int, int, int, CharSequence, int, int, boolean, android.text.Layout);
-    method public int getLeadingMargin(boolean);
-    method public int getSpanTypeId();
-    method public void writeToParcel(android.os.Parcel, int);
-  }
-
-  public interface LineBackgroundSpan extends android.text.style.ParagraphStyle {
-    method public void drawBackground(@NonNull android.graphics.Canvas, @NonNull android.graphics.Paint, @Px int, @Px int, @Px int, @Px int, @Px int, @NonNull CharSequence, int, int, int);
-  }
-
-  public static class LineBackgroundSpan.Standard implements android.text.style.LineBackgroundSpan android.text.ParcelableSpan {
-    ctor public LineBackgroundSpan.Standard(@ColorInt int);
-    ctor public LineBackgroundSpan.Standard(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public void drawBackground(@NonNull android.graphics.Canvas, @NonNull android.graphics.Paint, @Px int, @Px int, @Px int, @Px int, @Px int, @NonNull CharSequence, int, int, int);
-    method @ColorInt public final int getColor();
-    method public int getSpanTypeId();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-  }
-
-  public interface LineHeightSpan extends android.text.style.ParagraphStyle android.text.style.WrapTogetherSpan {
-    method public void chooseHeight(CharSequence, int, int, int, int, android.graphics.Paint.FontMetricsInt);
-  }
-
-  public static class LineHeightSpan.Standard implements android.text.style.LineHeightSpan android.text.ParcelableSpan {
-    ctor public LineHeightSpan.Standard(@IntRange(from=1) @Px int);
-    ctor public LineHeightSpan.Standard(@NonNull android.os.Parcel);
-    method public void chooseHeight(@NonNull CharSequence, int, int, int, int, @NonNull android.graphics.Paint.FontMetricsInt);
-    method public int describeContents();
-    method @Px public int getHeight();
-    method public int getSpanTypeId();
-    method public void writeToParcel(android.os.Parcel, int);
-  }
-
-  public static interface LineHeightSpan.WithDensity extends android.text.style.LineHeightSpan {
-    method public void chooseHeight(CharSequence, int, int, int, int, android.graphics.Paint.FontMetricsInt, android.text.TextPaint);
-  }
-
-  public class LocaleSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
-    ctor public LocaleSpan(@Nullable java.util.Locale);
-    ctor public LocaleSpan(@NonNull android.os.LocaleList);
-    ctor public LocaleSpan(android.os.Parcel);
-    method public int describeContents();
-    method @Nullable public java.util.Locale getLocale();
-    method @NonNull public android.os.LocaleList getLocales();
-    method public int getSpanTypeId();
-    method public void updateDrawState(android.text.TextPaint);
-    method public void updateMeasureState(android.text.TextPaint);
-    method public void writeToParcel(android.os.Parcel, int);
-  }
-
-  public class MaskFilterSpan extends android.text.style.CharacterStyle implements android.text.style.UpdateAppearance {
-    ctor public MaskFilterSpan(android.graphics.MaskFilter);
-    method public android.graphics.MaskFilter getMaskFilter();
-    method public void updateDrawState(android.text.TextPaint);
-  }
-
-  public abstract class MetricAffectingSpan extends android.text.style.CharacterStyle implements android.text.style.UpdateLayout {
-    ctor public MetricAffectingSpan();
-    method public android.text.style.MetricAffectingSpan getUnderlying();
-    method public abstract void updateMeasureState(@NonNull android.text.TextPaint);
-  }
-
-  public interface ParagraphStyle {
-  }
-
-  public class QuoteSpan implements android.text.style.LeadingMarginSpan android.text.ParcelableSpan {
-    ctor public QuoteSpan();
-    ctor public QuoteSpan(@ColorInt int);
-    ctor public QuoteSpan(@ColorInt int, @IntRange(from=0) int, @IntRange(from=0) int);
-    ctor public QuoteSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public void drawLeadingMargin(@NonNull android.graphics.Canvas, @NonNull android.graphics.Paint, int, int, int, int, int, @NonNull CharSequence, int, int, boolean, @NonNull android.text.Layout);
-    method @ColorInt public int getColor();
-    method public int getGapWidth();
-    method public int getLeadingMargin(boolean);
-    method public int getSpanTypeId();
-    method public int getStripeWidth();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @ColorInt public static final int STANDARD_COLOR = -16776961; // 0xff0000ff
-    field public static final int STANDARD_GAP_WIDTH_PX = 2; // 0x2
-    field public static final int STANDARD_STRIPE_WIDTH_PX = 2; // 0x2
-  }
-
-  public class RelativeSizeSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
-    ctor public RelativeSizeSpan(@FloatRange(from=0) float);
-    ctor public RelativeSizeSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public float getSizeChange();
-    method public int getSpanTypeId();
-    method public void updateDrawState(@NonNull android.text.TextPaint);
-    method public void updateMeasureState(@NonNull android.text.TextPaint);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-  }
-
-  public abstract class ReplacementSpan extends android.text.style.MetricAffectingSpan {
-    ctor public ReplacementSpan();
-    method public abstract void draw(@NonNull android.graphics.Canvas, CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, float, int, int, int, @NonNull android.graphics.Paint);
-    method @Nullable public CharSequence getContentDescription();
-    method public abstract int getSize(@NonNull android.graphics.Paint, CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @Nullable android.graphics.Paint.FontMetricsInt);
-    method public void setContentDescription(@Nullable CharSequence);
-    method public void updateDrawState(android.text.TextPaint);
-    method public void updateMeasureState(android.text.TextPaint);
-  }
-
-  public class ScaleXSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
-    ctor public ScaleXSpan(@FloatRange(from=0) float);
-    ctor public ScaleXSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public float getScaleX();
-    method public int getSpanTypeId();
-    method public void updateDrawState(android.text.TextPaint);
-    method public void updateMeasureState(android.text.TextPaint);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-  }
-
-  public class StrikethroughSpan extends android.text.style.CharacterStyle implements android.text.ParcelableSpan android.text.style.UpdateAppearance {
-    ctor public StrikethroughSpan();
-    ctor public StrikethroughSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public int getSpanTypeId();
-    method public void updateDrawState(@NonNull android.text.TextPaint);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-  }
-
-  public class StyleSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
-    ctor public StyleSpan(int);
-    ctor public StyleSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public int getSpanTypeId();
-    method public int getStyle();
-    method public void updateDrawState(android.text.TextPaint);
-    method public void updateMeasureState(android.text.TextPaint);
-    method public void writeToParcel(android.os.Parcel, int);
-  }
-
-  public class SubscriptSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
-    ctor public SubscriptSpan();
-    ctor public SubscriptSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public int getSpanTypeId();
-    method public void updateDrawState(@NonNull android.text.TextPaint);
-    method public void updateMeasureState(@NonNull android.text.TextPaint);
-    method public void writeToParcel(android.os.Parcel, int);
-  }
-
-  public class SuggestionSpan extends android.text.style.CharacterStyle implements android.text.ParcelableSpan {
-    ctor public SuggestionSpan(android.content.Context, String[], int);
-    ctor public SuggestionSpan(java.util.Locale, String[], int);
-    ctor public SuggestionSpan(android.content.Context, java.util.Locale, String[], int, Class<?>);
-    ctor public SuggestionSpan(android.os.Parcel);
-    method public int describeContents();
-    method public int getFlags();
-    method @Deprecated @NonNull public String getLocale();
-    method @Nullable public java.util.Locale getLocaleObject();
-    method public int getSpanTypeId();
-    method public String[] getSuggestions();
-    method @ColorInt public int getUnderlineColor();
-    method public void setFlags(int);
-    method public void updateDrawState(android.text.TextPaint);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated public static final String ACTION_SUGGESTION_PICKED = "android.text.style.SUGGESTION_PICKED";
-    field @NonNull public static final android.os.Parcelable.Creator<android.text.style.SuggestionSpan> CREATOR;
-    field public static final int FLAG_AUTO_CORRECTION = 4; // 0x4
-    field public static final int FLAG_EASY_CORRECT = 1; // 0x1
-    field public static final int FLAG_MISSPELLED = 2; // 0x2
-    field public static final int SUGGESTIONS_MAX_SIZE = 5; // 0x5
-    field @Deprecated public static final String SUGGESTION_SPAN_PICKED_AFTER = "after";
-    field @Deprecated public static final String SUGGESTION_SPAN_PICKED_BEFORE = "before";
-    field @Deprecated public static final String SUGGESTION_SPAN_PICKED_HASHCODE = "hashcode";
-  }
-
-  public class SuperscriptSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
-    ctor public SuperscriptSpan();
-    ctor public SuperscriptSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public int getSpanTypeId();
-    method public void updateDrawState(@NonNull android.text.TextPaint);
-    method public void updateMeasureState(@NonNull android.text.TextPaint);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-  }
-
-  public interface TabStopSpan extends android.text.style.ParagraphStyle {
-    method public int getTabStop();
-  }
-
-  public static class TabStopSpan.Standard implements android.text.style.TabStopSpan {
-    ctor public TabStopSpan.Standard(@IntRange(from=0) int);
-    method public int getTabStop();
-  }
-
-  public class TextAppearanceSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
-    ctor public TextAppearanceSpan(android.content.Context, int);
-    ctor public TextAppearanceSpan(android.content.Context, int, int);
-    ctor public TextAppearanceSpan(String, int, int, android.content.res.ColorStateList, android.content.res.ColorStateList);
-    ctor public TextAppearanceSpan(android.os.Parcel);
-    method public int describeContents();
-    method public String getFamily();
-    method @Nullable public String getFontFeatureSettings();
-    method @Nullable public String getFontVariationSettings();
-    method public android.content.res.ColorStateList getLinkTextColor();
-    method public int getShadowColor();
-    method public float getShadowDx();
-    method public float getShadowDy();
-    method public float getShadowRadius();
-    method public int getSpanTypeId();
-    method public android.content.res.ColorStateList getTextColor();
-    method public int getTextFontWeight();
-    method @Nullable public android.os.LocaleList getTextLocales();
-    method public int getTextSize();
-    method public int getTextStyle();
-    method @Nullable public android.graphics.Typeface getTypeface();
-    method public boolean isElegantTextHeight();
-    method public void updateDrawState(android.text.TextPaint);
-    method public void updateMeasureState(android.text.TextPaint);
-    method public void writeToParcel(android.os.Parcel, int);
-  }
-
-  public class TtsSpan implements android.text.ParcelableSpan {
-    ctor public TtsSpan(String, android.os.PersistableBundle);
-    ctor public TtsSpan(android.os.Parcel);
-    method public int describeContents();
-    method public android.os.PersistableBundle getArgs();
-    method public int getSpanTypeId();
-    method public String getType();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final String ANIMACY_ANIMATE = "android.animate";
-    field public static final String ANIMACY_INANIMATE = "android.inanimate";
-    field public static final String ARG_ANIMACY = "android.arg.animacy";
-    field public static final String ARG_CASE = "android.arg.case";
-    field public static final String ARG_COUNTRY_CODE = "android.arg.country_code";
-    field public static final String ARG_CURRENCY = "android.arg.money";
-    field public static final String ARG_DAY = "android.arg.day";
-    field public static final String ARG_DENOMINATOR = "android.arg.denominator";
-    field public static final String ARG_DIGITS = "android.arg.digits";
-    field public static final String ARG_DOMAIN = "android.arg.domain";
-    field public static final String ARG_EXTENSION = "android.arg.extension";
-    field public static final String ARG_FRACTIONAL_PART = "android.arg.fractional_part";
-    field public static final String ARG_FRAGMENT_ID = "android.arg.fragment_id";
-    field public static final String ARG_GENDER = "android.arg.gender";
-    field public static final String ARG_HOURS = "android.arg.hours";
-    field public static final String ARG_INTEGER_PART = "android.arg.integer_part";
-    field public static final String ARG_MINUTES = "android.arg.minutes";
-    field public static final String ARG_MONTH = "android.arg.month";
-    field public static final String ARG_MULTIPLICITY = "android.arg.multiplicity";
-    field public static final String ARG_NUMBER = "android.arg.number";
-    field public static final String ARG_NUMBER_PARTS = "android.arg.number_parts";
-    field public static final String ARG_NUMERATOR = "android.arg.numerator";
-    field public static final String ARG_PASSWORD = "android.arg.password";
-    field public static final String ARG_PATH = "android.arg.path";
-    field public static final String ARG_PORT = "android.arg.port";
-    field public static final String ARG_PROTOCOL = "android.arg.protocol";
-    field public static final String ARG_QUANTITY = "android.arg.quantity";
-    field public static final String ARG_QUERY_STRING = "android.arg.query_string";
-    field public static final String ARG_TEXT = "android.arg.text";
-    field public static final String ARG_UNIT = "android.arg.unit";
-    field public static final String ARG_USERNAME = "android.arg.username";
-    field public static final String ARG_VERBATIM = "android.arg.verbatim";
-    field public static final String ARG_WEEKDAY = "android.arg.weekday";
-    field public static final String ARG_YEAR = "android.arg.year";
-    field public static final String CASE_ABLATIVE = "android.ablative";
-    field public static final String CASE_ACCUSATIVE = "android.accusative";
-    field public static final String CASE_DATIVE = "android.dative";
-    field public static final String CASE_GENITIVE = "android.genitive";
-    field public static final String CASE_INSTRUMENTAL = "android.instrumental";
-    field public static final String CASE_LOCATIVE = "android.locative";
-    field public static final String CASE_NOMINATIVE = "android.nominative";
-    field public static final String CASE_VOCATIVE = "android.vocative";
-    field public static final String GENDER_FEMALE = "android.female";
-    field public static final String GENDER_MALE = "android.male";
-    field public static final String GENDER_NEUTRAL = "android.neutral";
-    field public static final int MONTH_APRIL = 3; // 0x3
-    field public static final int MONTH_AUGUST = 7; // 0x7
-    field public static final int MONTH_DECEMBER = 11; // 0xb
-    field public static final int MONTH_FEBRUARY = 1; // 0x1
-    field public static final int MONTH_JANUARY = 0; // 0x0
-    field public static final int MONTH_JULY = 6; // 0x6
-    field public static final int MONTH_JUNE = 5; // 0x5
-    field public static final int MONTH_MARCH = 2; // 0x2
-    field public static final int MONTH_MAY = 4; // 0x4
-    field public static final int MONTH_NOVEMBER = 10; // 0xa
-    field public static final int MONTH_OCTOBER = 9; // 0x9
-    field public static final int MONTH_SEPTEMBER = 8; // 0x8
-    field public static final String MULTIPLICITY_DUAL = "android.dual";
-    field public static final String MULTIPLICITY_PLURAL = "android.plural";
-    field public static final String MULTIPLICITY_SINGLE = "android.single";
-    field public static final String TYPE_CARDINAL = "android.type.cardinal";
-    field public static final String TYPE_DATE = "android.type.date";
-    field public static final String TYPE_DECIMAL = "android.type.decimal";
-    field public static final String TYPE_DIGITS = "android.type.digits";
-    field public static final String TYPE_ELECTRONIC = "android.type.electronic";
-    field public static final String TYPE_FRACTION = "android.type.fraction";
-    field public static final String TYPE_MEASURE = "android.type.measure";
-    field public static final String TYPE_MONEY = "android.type.money";
-    field public static final String TYPE_ORDINAL = "android.type.ordinal";
-    field public static final String TYPE_TELEPHONE = "android.type.telephone";
-    field public static final String TYPE_TEXT = "android.type.text";
-    field public static final String TYPE_TIME = "android.type.time";
-    field public static final String TYPE_VERBATIM = "android.type.verbatim";
-    field public static final int WEEKDAY_FRIDAY = 6; // 0x6
-    field public static final int WEEKDAY_MONDAY = 2; // 0x2
-    field public static final int WEEKDAY_SATURDAY = 7; // 0x7
-    field public static final int WEEKDAY_SUNDAY = 1; // 0x1
-    field public static final int WEEKDAY_THURSDAY = 5; // 0x5
-    field public static final int WEEKDAY_TUESDAY = 3; // 0x3
-    field public static final int WEEKDAY_WEDNESDAY = 4; // 0x4
-  }
-
-  public static class TtsSpan.Builder<C extends android.text.style.TtsSpan.Builder<?>> {
-    ctor public TtsSpan.Builder(String);
-    method public android.text.style.TtsSpan build();
-    method public C setIntArgument(String, int);
-    method public C setLongArgument(String, long);
-    method public C setStringArgument(String, String);
-  }
-
-  public static class TtsSpan.CardinalBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.CardinalBuilder> {
-    ctor public TtsSpan.CardinalBuilder();
-    ctor public TtsSpan.CardinalBuilder(long);
-    ctor public TtsSpan.CardinalBuilder(String);
-    method public android.text.style.TtsSpan.CardinalBuilder setNumber(long);
-    method public android.text.style.TtsSpan.CardinalBuilder setNumber(String);
-  }
-
-  public static class TtsSpan.DateBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.DateBuilder> {
-    ctor public TtsSpan.DateBuilder();
-    ctor public TtsSpan.DateBuilder(Integer, Integer, Integer, Integer);
-    method public android.text.style.TtsSpan.DateBuilder setDay(int);
-    method public android.text.style.TtsSpan.DateBuilder setMonth(int);
-    method public android.text.style.TtsSpan.DateBuilder setWeekday(int);
-    method public android.text.style.TtsSpan.DateBuilder setYear(int);
-  }
-
-  public static class TtsSpan.DecimalBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.DecimalBuilder> {
-    ctor public TtsSpan.DecimalBuilder();
-    ctor public TtsSpan.DecimalBuilder(double, int, int);
-    ctor public TtsSpan.DecimalBuilder(String, String);
-    method public android.text.style.TtsSpan.DecimalBuilder setArgumentsFromDouble(double, int, int);
-    method public android.text.style.TtsSpan.DecimalBuilder setFractionalPart(String);
-    method public android.text.style.TtsSpan.DecimalBuilder setIntegerPart(long);
-    method public android.text.style.TtsSpan.DecimalBuilder setIntegerPart(String);
-  }
-
-  public static class TtsSpan.DigitsBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.DigitsBuilder> {
-    ctor public TtsSpan.DigitsBuilder();
-    ctor public TtsSpan.DigitsBuilder(String);
-    method public android.text.style.TtsSpan.DigitsBuilder setDigits(String);
-  }
-
-  public static class TtsSpan.ElectronicBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.ElectronicBuilder> {
-    ctor public TtsSpan.ElectronicBuilder();
-    method public android.text.style.TtsSpan.ElectronicBuilder setDomain(String);
-    method public android.text.style.TtsSpan.ElectronicBuilder setEmailArguments(String, String);
-    method public android.text.style.TtsSpan.ElectronicBuilder setFragmentId(String);
-    method public android.text.style.TtsSpan.ElectronicBuilder setPassword(String);
-    method public android.text.style.TtsSpan.ElectronicBuilder setPath(String);
-    method public android.text.style.TtsSpan.ElectronicBuilder setPort(int);
-    method public android.text.style.TtsSpan.ElectronicBuilder setProtocol(String);
-    method public android.text.style.TtsSpan.ElectronicBuilder setQueryString(String);
-    method public android.text.style.TtsSpan.ElectronicBuilder setUsername(String);
-  }
-
-  public static class TtsSpan.FractionBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.FractionBuilder> {
-    ctor public TtsSpan.FractionBuilder();
-    ctor public TtsSpan.FractionBuilder(long, long, long);
-    method public android.text.style.TtsSpan.FractionBuilder setDenominator(long);
-    method public android.text.style.TtsSpan.FractionBuilder setDenominator(String);
-    method public android.text.style.TtsSpan.FractionBuilder setIntegerPart(long);
-    method public android.text.style.TtsSpan.FractionBuilder setIntegerPart(String);
-    method public android.text.style.TtsSpan.FractionBuilder setNumerator(long);
-    method public android.text.style.TtsSpan.FractionBuilder setNumerator(String);
-  }
-
-  public static class TtsSpan.MeasureBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.MeasureBuilder> {
-    ctor public TtsSpan.MeasureBuilder();
-    method public android.text.style.TtsSpan.MeasureBuilder setDenominator(long);
-    method public android.text.style.TtsSpan.MeasureBuilder setDenominator(String);
-    method public android.text.style.TtsSpan.MeasureBuilder setFractionalPart(String);
-    method public android.text.style.TtsSpan.MeasureBuilder setIntegerPart(long);
-    method public android.text.style.TtsSpan.MeasureBuilder setIntegerPart(String);
-    method public android.text.style.TtsSpan.MeasureBuilder setNumber(long);
-    method public android.text.style.TtsSpan.MeasureBuilder setNumber(String);
-    method public android.text.style.TtsSpan.MeasureBuilder setNumerator(long);
-    method public android.text.style.TtsSpan.MeasureBuilder setNumerator(String);
-    method public android.text.style.TtsSpan.MeasureBuilder setUnit(String);
-  }
-
-  public static class TtsSpan.MoneyBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.MoneyBuilder> {
-    ctor public TtsSpan.MoneyBuilder();
-    method public android.text.style.TtsSpan.MoneyBuilder setCurrency(String);
-    method public android.text.style.TtsSpan.MoneyBuilder setFractionalPart(String);
-    method public android.text.style.TtsSpan.MoneyBuilder setIntegerPart(long);
-    method public android.text.style.TtsSpan.MoneyBuilder setIntegerPart(String);
-    method public android.text.style.TtsSpan.MoneyBuilder setQuantity(String);
-  }
-
-  public static class TtsSpan.OrdinalBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.OrdinalBuilder> {
-    ctor public TtsSpan.OrdinalBuilder();
-    ctor public TtsSpan.OrdinalBuilder(long);
-    ctor public TtsSpan.OrdinalBuilder(String);
-    method public android.text.style.TtsSpan.OrdinalBuilder setNumber(long);
-    method public android.text.style.TtsSpan.OrdinalBuilder setNumber(String);
-  }
-
-  public static class TtsSpan.SemioticClassBuilder<C extends android.text.style.TtsSpan.SemioticClassBuilder<?>> extends android.text.style.TtsSpan.Builder<C> {
-    ctor public TtsSpan.SemioticClassBuilder(String);
-    method public C setAnimacy(String);
-    method public C setCase(String);
-    method public C setGender(String);
-    method public C setMultiplicity(String);
-  }
-
-  public static class TtsSpan.TelephoneBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.TelephoneBuilder> {
-    ctor public TtsSpan.TelephoneBuilder();
-    ctor public TtsSpan.TelephoneBuilder(String);
-    method public android.text.style.TtsSpan.TelephoneBuilder setCountryCode(String);
-    method public android.text.style.TtsSpan.TelephoneBuilder setExtension(String);
-    method public android.text.style.TtsSpan.TelephoneBuilder setNumberParts(String);
-  }
-
-  public static class TtsSpan.TextBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.TextBuilder> {
-    ctor public TtsSpan.TextBuilder();
-    ctor public TtsSpan.TextBuilder(String);
-    method public android.text.style.TtsSpan.TextBuilder setText(String);
-  }
-
-  public static class TtsSpan.TimeBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.TimeBuilder> {
-    ctor public TtsSpan.TimeBuilder();
-    ctor public TtsSpan.TimeBuilder(int, int);
-    method public android.text.style.TtsSpan.TimeBuilder setHours(int);
-    method public android.text.style.TtsSpan.TimeBuilder setMinutes(int);
-  }
-
-  public static class TtsSpan.VerbatimBuilder extends android.text.style.TtsSpan.SemioticClassBuilder<android.text.style.TtsSpan.VerbatimBuilder> {
-    ctor public TtsSpan.VerbatimBuilder();
-    ctor public TtsSpan.VerbatimBuilder(String);
-    method public android.text.style.TtsSpan.VerbatimBuilder setVerbatim(String);
-  }
-
-  public class TypefaceSpan extends android.text.style.MetricAffectingSpan implements android.text.ParcelableSpan {
-    ctor public TypefaceSpan(@Nullable String);
-    ctor public TypefaceSpan(@NonNull android.graphics.Typeface);
-    ctor public TypefaceSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method @Nullable public String getFamily();
-    method public int getSpanTypeId();
-    method @Nullable public android.graphics.Typeface getTypeface();
-    method public void updateDrawState(@NonNull android.text.TextPaint);
-    method public void updateMeasureState(@NonNull android.text.TextPaint);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-  }
-
-  public class URLSpan extends android.text.style.ClickableSpan implements android.text.ParcelableSpan {
-    ctor public URLSpan(String);
-    ctor public URLSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public int getSpanTypeId();
-    method public String getURL();
-    method public void onClick(android.view.View);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-  }
-
-  public class UnderlineSpan extends android.text.style.CharacterStyle implements android.text.ParcelableSpan android.text.style.UpdateAppearance {
-    ctor public UnderlineSpan();
-    ctor public UnderlineSpan(@NonNull android.os.Parcel);
-    method public int describeContents();
-    method public int getSpanTypeId();
-    method public void updateDrawState(@NonNull android.text.TextPaint);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-  }
-
-  public interface UpdateAppearance {
-  }
-
-  public interface UpdateLayout extends android.text.style.UpdateAppearance {
-  }
-
-  public interface WrapTogetherSpan extends android.text.style.ParagraphStyle {
-  }
-
-}
-
-package android.text.util {
-
-  public class Linkify {
-    ctor public Linkify();
-    method public static final boolean addLinks(@NonNull android.text.Spannable, int);
-    method public static final boolean addLinks(@NonNull android.text.Spannable, int, @Nullable java.util.function.Function<java.lang.String,android.text.style.URLSpan>);
-    method public static final boolean addLinks(@NonNull android.widget.TextView, int);
-    method public static final void addLinks(@NonNull android.widget.TextView, @NonNull java.util.regex.Pattern, @Nullable String);
-    method public static final void addLinks(@NonNull android.widget.TextView, @NonNull java.util.regex.Pattern, @Nullable String, @Nullable android.text.util.Linkify.MatchFilter, @Nullable android.text.util.Linkify.TransformFilter);
-    method public static final void addLinks(@NonNull android.widget.TextView, @NonNull java.util.regex.Pattern, @Nullable String, @Nullable String[], @Nullable android.text.util.Linkify.MatchFilter, @Nullable android.text.util.Linkify.TransformFilter);
-    method public static final boolean addLinks(@NonNull android.text.Spannable, @NonNull java.util.regex.Pattern, @Nullable String);
-    method public static final boolean addLinks(@NonNull android.text.Spannable, @NonNull java.util.regex.Pattern, @Nullable String, @Nullable android.text.util.Linkify.MatchFilter, @Nullable android.text.util.Linkify.TransformFilter);
-    method public static final boolean addLinks(@NonNull android.text.Spannable, @NonNull java.util.regex.Pattern, @Nullable String, @Nullable String[], @Nullable android.text.util.Linkify.MatchFilter, @Nullable android.text.util.Linkify.TransformFilter);
-    method public static final boolean addLinks(@NonNull android.text.Spannable, @NonNull java.util.regex.Pattern, @Nullable String, @Nullable String[], @Nullable android.text.util.Linkify.MatchFilter, @Nullable android.text.util.Linkify.TransformFilter, @Nullable java.util.function.Function<java.lang.String,android.text.style.URLSpan>);
-    field public static final int ALL = 15; // 0xf
-    field public static final int EMAIL_ADDRESSES = 2; // 0x2
-    field @Deprecated public static final int MAP_ADDRESSES = 8; // 0x8
-    field public static final int PHONE_NUMBERS = 4; // 0x4
-    field public static final int WEB_URLS = 1; // 0x1
-    field public static final android.text.util.Linkify.MatchFilter sPhoneNumberMatchFilter;
-    field public static final android.text.util.Linkify.TransformFilter sPhoneNumberTransformFilter;
-    field public static final android.text.util.Linkify.MatchFilter sUrlMatchFilter;
-  }
-
-  public static interface Linkify.MatchFilter {
-    method public boolean acceptMatch(CharSequence, int, int);
-  }
-
-  public static interface Linkify.TransformFilter {
-    method public String transformUrl(java.util.regex.Matcher, String);
-  }
-
-  public class Rfc822Token {
-    ctor public Rfc822Token(@Nullable String, @Nullable String, @Nullable String);
-    method @Nullable public String getAddress();
-    method @Nullable public String getComment();
-    method @Nullable public String getName();
-    method public static String quoteComment(String);
-    method public static String quoteName(String);
-    method public static String quoteNameIfNecessary(String);
-    method public void setAddress(@Nullable String);
-    method public void setComment(@Nullable String);
-    method public void setName(@Nullable String);
-  }
-
-  public class Rfc822Tokenizer implements android.widget.MultiAutoCompleteTextView.Tokenizer {
-    ctor public Rfc822Tokenizer();
-    method public int findTokenEnd(CharSequence, int);
-    method public int findTokenStart(CharSequence, int);
-    method public CharSequence terminateToken(CharSequence);
-    method public static void tokenize(CharSequence, java.util.Collection<android.text.util.Rfc822Token>);
-    method public static android.text.util.Rfc822Token[] tokenize(CharSequence);
-  }
-
-}
-
-package android.transition {
-
-  public class ArcMotion extends android.transition.PathMotion {
-    ctor public ArcMotion();
-    ctor public ArcMotion(android.content.Context, android.util.AttributeSet);
-    method public float getMaximumAngle();
-    method public float getMinimumHorizontalAngle();
-    method public float getMinimumVerticalAngle();
-    method public android.graphics.Path getPath(float, float, float, float);
-    method public void setMaximumAngle(float);
-    method public void setMinimumHorizontalAngle(float);
-    method public void setMinimumVerticalAngle(float);
-  }
-
-  public class AutoTransition extends android.transition.TransitionSet {
-    ctor public AutoTransition();
-    ctor public AutoTransition(android.content.Context, android.util.AttributeSet);
-  }
-
-  public class ChangeBounds extends android.transition.Transition {
-    ctor public ChangeBounds();
-    ctor public ChangeBounds(android.content.Context, android.util.AttributeSet);
-    method public void captureEndValues(android.transition.TransitionValues);
-    method public void captureStartValues(android.transition.TransitionValues);
-    method public boolean getResizeClip();
-    method @Deprecated public void setReparent(boolean);
-    method public void setResizeClip(boolean);
-  }
-
-  public class ChangeClipBounds extends android.transition.Transition {
-    ctor public ChangeClipBounds();
-    ctor public ChangeClipBounds(android.content.Context, android.util.AttributeSet);
-    method public void captureEndValues(android.transition.TransitionValues);
-    method public void captureStartValues(android.transition.TransitionValues);
-  }
-
-  public class ChangeImageTransform extends android.transition.Transition {
-    ctor public ChangeImageTransform();
-    ctor public ChangeImageTransform(android.content.Context, android.util.AttributeSet);
-    method public void captureEndValues(android.transition.TransitionValues);
-    method public void captureStartValues(android.transition.TransitionValues);
-  }
-
-  public class ChangeScroll extends android.transition.Transition {
-    ctor public ChangeScroll();
-    ctor public ChangeScroll(android.content.Context, android.util.AttributeSet);
-    method public void captureEndValues(android.transition.TransitionValues);
-    method public void captureStartValues(android.transition.TransitionValues);
-  }
-
-  public class ChangeTransform extends android.transition.Transition {
-    ctor public ChangeTransform();
-    ctor public ChangeTransform(android.content.Context, android.util.AttributeSet);
-    method public void captureEndValues(android.transition.TransitionValues);
-    method public void captureStartValues(android.transition.TransitionValues);
-    method public boolean getReparent();
-    method public boolean getReparentWithOverlay();
-    method public void setReparent(boolean);
-    method public void setReparentWithOverlay(boolean);
-  }
-
-  public class CircularPropagation extends android.transition.VisibilityPropagation {
-    ctor public CircularPropagation();
-    method public long getStartDelay(android.view.ViewGroup, android.transition.Transition, android.transition.TransitionValues, android.transition.TransitionValues);
-    method public void setPropagationSpeed(float);
-  }
-
-  public class Explode extends android.transition.Visibility {
-    ctor public Explode();
-    ctor public Explode(android.content.Context, android.util.AttributeSet);
-  }
-
-  public class Fade extends android.transition.Visibility {
-    ctor public Fade();
-    ctor public Fade(int);
-    ctor public Fade(android.content.Context, android.util.AttributeSet);
-    field public static final int IN = 1; // 0x1
-    field public static final int OUT = 2; // 0x2
-  }
-
-  public abstract class PathMotion {
-    ctor public PathMotion();
-    ctor public PathMotion(android.content.Context, android.util.AttributeSet);
-    method public abstract android.graphics.Path getPath(float, float, float, float);
-  }
-
-  public class PatternPathMotion extends android.transition.PathMotion {
-    ctor public PatternPathMotion();
-    ctor public PatternPathMotion(android.content.Context, android.util.AttributeSet);
-    ctor public PatternPathMotion(android.graphics.Path);
-    method public android.graphics.Path getPath(float, float, float, float);
-    method public android.graphics.Path getPatternPath();
-    method public void setPatternPath(android.graphics.Path);
-  }
-
-  public final class Scene {
-    ctor public Scene(android.view.ViewGroup);
-    ctor public Scene(android.view.ViewGroup, android.view.View);
-    ctor @Deprecated public Scene(android.view.ViewGroup, android.view.ViewGroup);
-    method public void enter();
-    method public void exit();
-    method @Nullable public static android.transition.Scene getCurrentScene(@NonNull android.view.ViewGroup);
-    method public static android.transition.Scene getSceneForLayout(android.view.ViewGroup, int, android.content.Context);
-    method public android.view.ViewGroup getSceneRoot();
-    method public void setEnterAction(Runnable);
-    method public void setExitAction(Runnable);
-  }
-
-  public class SidePropagation extends android.transition.VisibilityPropagation {
-    ctor public SidePropagation();
-    method public long getStartDelay(android.view.ViewGroup, android.transition.Transition, android.transition.TransitionValues, android.transition.TransitionValues);
-    method public void setPropagationSpeed(float);
-    method public void setSide(int);
-  }
-
-  public class Slide extends android.transition.Visibility {
-    ctor public Slide();
-    ctor public Slide(int);
-    ctor public Slide(android.content.Context, android.util.AttributeSet);
-    method public int getSlideEdge();
-    method public void setSlideEdge(int);
-  }
-
-  public abstract class Transition implements java.lang.Cloneable {
-    ctor public Transition();
-    ctor public Transition(android.content.Context, android.util.AttributeSet);
-    method public android.transition.Transition addListener(android.transition.Transition.TransitionListener);
-    method public android.transition.Transition addTarget(int);
-    method public android.transition.Transition addTarget(String);
-    method public android.transition.Transition addTarget(Class);
-    method public android.transition.Transition addTarget(android.view.View);
-    method public boolean canRemoveViews();
-    method public abstract void captureEndValues(android.transition.TransitionValues);
-    method public abstract void captureStartValues(android.transition.TransitionValues);
-    method public android.transition.Transition clone();
-    method public android.animation.Animator createAnimator(android.view.ViewGroup, android.transition.TransitionValues, android.transition.TransitionValues);
-    method public android.transition.Transition excludeChildren(int, boolean);
-    method public android.transition.Transition excludeChildren(android.view.View, boolean);
-    method public android.transition.Transition excludeChildren(Class, boolean);
-    method public android.transition.Transition excludeTarget(int, boolean);
-    method public android.transition.Transition excludeTarget(String, boolean);
-    method public android.transition.Transition excludeTarget(android.view.View, boolean);
-    method public android.transition.Transition excludeTarget(Class, boolean);
-    method public long getDuration();
-    method public android.graphics.Rect getEpicenter();
-    method public android.transition.Transition.EpicenterCallback getEpicenterCallback();
-    method public android.animation.TimeInterpolator getInterpolator();
-    method public String getName();
-    method public android.transition.PathMotion getPathMotion();
-    method public android.transition.TransitionPropagation getPropagation();
-    method public long getStartDelay();
-    method public java.util.List<java.lang.Integer> getTargetIds();
-    method public java.util.List<java.lang.String> getTargetNames();
-    method public java.util.List<java.lang.Class> getTargetTypes();
-    method public java.util.List<android.view.View> getTargets();
-    method public String[] getTransitionProperties();
-    method public android.transition.TransitionValues getTransitionValues(android.view.View, boolean);
-    method public boolean isTransitionRequired(@Nullable android.transition.TransitionValues, @Nullable android.transition.TransitionValues);
-    method public android.transition.Transition removeListener(android.transition.Transition.TransitionListener);
-    method public android.transition.Transition removeTarget(int);
-    method public android.transition.Transition removeTarget(String);
-    method public android.transition.Transition removeTarget(android.view.View);
-    method public android.transition.Transition removeTarget(Class);
-    method public android.transition.Transition setDuration(long);
-    method public void setEpicenterCallback(android.transition.Transition.EpicenterCallback);
-    method public android.transition.Transition setInterpolator(android.animation.TimeInterpolator);
-    method public void setMatchOrder(int...);
-    method public void setPathMotion(android.transition.PathMotion);
-    method public void setPropagation(android.transition.TransitionPropagation);
-    method public android.transition.Transition setStartDelay(long);
-    field public static final int MATCH_ID = 3; // 0x3
-    field public static final int MATCH_INSTANCE = 1; // 0x1
-    field public static final int MATCH_ITEM_ID = 4; // 0x4
-    field public static final int MATCH_NAME = 2; // 0x2
-  }
-
-  public abstract static class Transition.EpicenterCallback {
-    ctor public Transition.EpicenterCallback();
-    method public abstract android.graphics.Rect onGetEpicenter(android.transition.Transition);
-  }
-
-  public static interface Transition.TransitionListener {
-    method public void onTransitionCancel(android.transition.Transition);
-    method public void onTransitionEnd(android.transition.Transition);
-    method public void onTransitionPause(android.transition.Transition);
-    method public void onTransitionResume(android.transition.Transition);
-    method public void onTransitionStart(android.transition.Transition);
-  }
-
-  public class TransitionInflater {
-    method public static android.transition.TransitionInflater from(android.content.Context);
-    method public android.transition.Transition inflateTransition(@TransitionRes int);
-    method public android.transition.TransitionManager inflateTransitionManager(@TransitionRes int, android.view.ViewGroup);
-  }
-
-  public abstract class TransitionListenerAdapter implements android.transition.Transition.TransitionListener {
-    ctor public TransitionListenerAdapter();
-    method public void onTransitionCancel(android.transition.Transition);
-    method public void onTransitionEnd(android.transition.Transition);
-    method public void onTransitionPause(android.transition.Transition);
-    method public void onTransitionResume(android.transition.Transition);
-    method public void onTransitionStart(android.transition.Transition);
-  }
-
-  public class TransitionManager {
-    ctor public TransitionManager();
-    method public static void beginDelayedTransition(android.view.ViewGroup);
-    method public static void beginDelayedTransition(android.view.ViewGroup, android.transition.Transition);
-    method public static void endTransitions(android.view.ViewGroup);
-    method public static void go(android.transition.Scene);
-    method public static void go(android.transition.Scene, android.transition.Transition);
-    method public void setTransition(android.transition.Scene, android.transition.Transition);
-    method public void setTransition(android.transition.Scene, android.transition.Scene, android.transition.Transition);
-    method public void transitionTo(android.transition.Scene);
-  }
-
-  public abstract class TransitionPropagation {
-    ctor public TransitionPropagation();
-    method public abstract void captureValues(android.transition.TransitionValues);
-    method public abstract String[] getPropagationProperties();
-    method public abstract long getStartDelay(android.view.ViewGroup, android.transition.Transition, android.transition.TransitionValues, android.transition.TransitionValues);
-  }
-
-  public class TransitionSet extends android.transition.Transition {
-    ctor public TransitionSet();
-    ctor public TransitionSet(android.content.Context, android.util.AttributeSet);
-    method public android.transition.TransitionSet addListener(android.transition.Transition.TransitionListener);
-    method public android.transition.TransitionSet addTarget(android.view.View);
-    method public android.transition.TransitionSet addTarget(int);
-    method public android.transition.TransitionSet addTarget(String);
-    method public android.transition.TransitionSet addTarget(Class);
-    method public android.transition.TransitionSet addTransition(android.transition.Transition);
-    method public void captureEndValues(android.transition.TransitionValues);
-    method public void captureStartValues(android.transition.TransitionValues);
-    method public android.transition.TransitionSet clone();
-    method public int getOrdering();
-    method public android.transition.Transition getTransitionAt(int);
-    method public int getTransitionCount();
-    method public android.transition.TransitionSet removeListener(android.transition.Transition.TransitionListener);
-    method public android.transition.TransitionSet removeTarget(int);
-    method public android.transition.TransitionSet removeTarget(android.view.View);
-    method public android.transition.TransitionSet removeTarget(Class);
-    method public android.transition.TransitionSet removeTarget(String);
-    method public android.transition.TransitionSet removeTransition(android.transition.Transition);
-    method public android.transition.TransitionSet setDuration(long);
-    method public android.transition.TransitionSet setInterpolator(android.animation.TimeInterpolator);
-    method public android.transition.TransitionSet setOrdering(int);
-    method public android.transition.TransitionSet setStartDelay(long);
-    field public static final int ORDERING_SEQUENTIAL = 1; // 0x1
-    field public static final int ORDERING_TOGETHER = 0; // 0x0
-  }
-
-  public class TransitionValues {
-    ctor @Deprecated public TransitionValues();
-    ctor public TransitionValues(@NonNull android.view.View);
-    field @NonNull public final java.util.Map<java.lang.String,java.lang.Object> values;
-    field @NonNull public android.view.View view;
-  }
-
-  public abstract class Visibility extends android.transition.Transition {
-    ctor public Visibility();
-    ctor public Visibility(android.content.Context, android.util.AttributeSet);
-    method public void captureEndValues(android.transition.TransitionValues);
-    method public void captureStartValues(android.transition.TransitionValues);
-    method public int getMode();
-    method public boolean isVisible(android.transition.TransitionValues);
-    method public android.animation.Animator onAppear(android.view.ViewGroup, android.transition.TransitionValues, int, android.transition.TransitionValues, int);
-    method public android.animation.Animator onAppear(android.view.ViewGroup, android.view.View, android.transition.TransitionValues, android.transition.TransitionValues);
-    method public android.animation.Animator onDisappear(android.view.ViewGroup, android.transition.TransitionValues, int, android.transition.TransitionValues, int);
-    method public android.animation.Animator onDisappear(android.view.ViewGroup, android.view.View, android.transition.TransitionValues, android.transition.TransitionValues);
-    method public void setMode(int);
-    field public static final int MODE_IN = 1; // 0x1
-    field public static final int MODE_OUT = 2; // 0x2
-  }
-
-  public abstract class VisibilityPropagation extends android.transition.TransitionPropagation {
-    ctor public VisibilityPropagation();
-    method public void captureValues(android.transition.TransitionValues);
-    method public String[] getPropagationProperties();
-    method public int getViewVisibility(android.transition.TransitionValues);
-    method public int getViewX(android.transition.TransitionValues);
-    method public int getViewY(android.transition.TransitionValues);
-  }
-
-}
-
-package android.util {
-
-  public class AndroidException extends java.lang.Exception {
-    ctor public AndroidException();
-    ctor public AndroidException(String);
-    ctor public AndroidException(String, Throwable);
-    ctor public AndroidException(Exception);
-  }
-
-  public class AndroidRuntimeException extends java.lang.RuntimeException {
-    ctor public AndroidRuntimeException();
-    ctor public AndroidRuntimeException(String);
-    ctor public AndroidRuntimeException(String, Throwable);
-    ctor public AndroidRuntimeException(Exception);
-  }
-
-  public final class ArrayMap<K, V> implements java.util.Map<K,V> {
-    ctor public ArrayMap();
-    ctor public ArrayMap(int);
-    ctor public ArrayMap(android.util.ArrayMap<K,V>);
-    method public void clear();
-    method public boolean containsAll(java.util.Collection<?>);
-    method public boolean containsKey(Object);
-    method public boolean containsValue(Object);
-    method public void ensureCapacity(int);
-    method public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
-    method public V get(Object);
-    method public int indexOfKey(Object);
-    method public int indexOfValue(Object);
-    method public boolean isEmpty();
-    method public K keyAt(int);
-    method public java.util.Set<K> keySet();
-    method public V put(K, V);
-    method public void putAll(android.util.ArrayMap<? extends K,? extends V>);
-    method public void putAll(java.util.Map<? extends K,? extends V>);
-    method public V remove(Object);
-    method public boolean removeAll(java.util.Collection<?>);
-    method public V removeAt(int);
-    method public boolean retainAll(java.util.Collection<?>);
-    method public V setValueAt(int, V);
-    method public int size();
-    method public V valueAt(int);
-    method public java.util.Collection<V> values();
-  }
-
-  public final class ArraySet<E> implements java.util.Collection<E> java.util.Set<E> {
-    ctor public ArraySet();
-    ctor public ArraySet(int);
-    ctor public ArraySet(android.util.ArraySet<E>);
-    ctor public ArraySet(java.util.Collection<? extends E>);
-    ctor public ArraySet(@Nullable E[]);
-    method public boolean add(E);
-    method public void addAll(android.util.ArraySet<? extends E>);
-    method public boolean addAll(java.util.Collection<? extends E>);
-    method public void clear();
-    method public boolean contains(Object);
-    method public boolean containsAll(java.util.Collection<?>);
-    method public void ensureCapacity(int);
-    method public int indexOf(Object);
-    method public boolean isEmpty();
-    method public java.util.Iterator<E> iterator();
-    method public boolean remove(Object);
-    method public boolean removeAll(android.util.ArraySet<? extends E>);
-    method public boolean removeAll(java.util.Collection<?>);
-    method public E removeAt(int);
-    method public boolean retainAll(java.util.Collection<?>);
-    method public int size();
-    method public Object[] toArray();
-    method public <T> T[] toArray(T[]);
-    method public E valueAt(int);
-  }
-
-  public class AtomicFile {
-    ctor public AtomicFile(java.io.File);
-    method public void delete();
-    method public void failWrite(java.io.FileOutputStream);
-    method public void finishWrite(java.io.FileOutputStream);
-    method public java.io.File getBaseFile();
-    method public java.io.FileInputStream openRead() throws java.io.FileNotFoundException;
-    method public byte[] readFully() throws java.io.IOException;
-    method public java.io.FileOutputStream startWrite() throws java.io.IOException;
-  }
-
-  public interface AttributeSet {
-    method public boolean getAttributeBooleanValue(String, String, boolean);
-    method public boolean getAttributeBooleanValue(int, boolean);
-    method public int getAttributeCount();
-    method public float getAttributeFloatValue(String, String, float);
-    method public float getAttributeFloatValue(int, float);
-    method public int getAttributeIntValue(String, String, int);
-    method public int getAttributeIntValue(int, int);
-    method public int getAttributeListValue(String, String, String[], int);
-    method public int getAttributeListValue(int, String[], int);
-    method public String getAttributeName(int);
-    method public int getAttributeNameResource(int);
-    method public default String getAttributeNamespace(int);
-    method public int getAttributeResourceValue(String, String, int);
-    method public int getAttributeResourceValue(int, int);
-    method public int getAttributeUnsignedIntValue(String, String, int);
-    method public int getAttributeUnsignedIntValue(int, int);
-    method public String getAttributeValue(int);
-    method public String getAttributeValue(String, String);
-    method public String getClassAttribute();
-    method public String getIdAttribute();
-    method public int getIdAttributeResourceValue(int);
-    method public String getPositionDescription();
-    method public int getStyleAttribute();
-  }
-
-  public class Base64 {
-    method public static byte[] decode(String, int);
-    method public static byte[] decode(byte[], int);
-    method public static byte[] decode(byte[], int, int, int);
-    method public static byte[] encode(byte[], int);
-    method public static byte[] encode(byte[], int, int, int);
-    method public static String encodeToString(byte[], int);
-    method public static String encodeToString(byte[], int, int, int);
-    field public static final int CRLF = 4; // 0x4
-    field public static final int DEFAULT = 0; // 0x0
-    field public static final int NO_CLOSE = 16; // 0x10
-    field public static final int NO_PADDING = 1; // 0x1
-    field public static final int NO_WRAP = 2; // 0x2
-    field public static final int URL_SAFE = 8; // 0x8
-  }
-
-  public class Base64DataException extends java.io.IOException {
-    ctor public Base64DataException(String);
-  }
-
-  public class Base64InputStream extends java.io.FilterInputStream {
-    ctor public Base64InputStream(java.io.InputStream, int);
-    method public int available();
-    method public void reset();
-  }
-
-  public class Base64OutputStream extends java.io.FilterOutputStream {
-    ctor public Base64OutputStream(java.io.OutputStream, int);
-  }
-
-  public final class CloseGuard {
-    ctor public CloseGuard();
-    method public void close();
-    method public void open(@NonNull String);
-    method public void warnIfOpen();
-  }
-
-  @Deprecated public final class Config {
-    field @Deprecated public static final boolean DEBUG = false;
-    field @Deprecated public static final boolean LOGD = true;
-    field @Deprecated public static final boolean LOGV = false;
-    field @Deprecated public static final boolean PROFILE = false;
-    field @Deprecated public static final boolean RELEASE = true;
-  }
-
-  public class DebugUtils {
-    method public static boolean isObjectSelected(Object);
-  }
-
-  public class DisplayMetrics {
-    ctor public DisplayMetrics();
-    method public boolean equals(android.util.DisplayMetrics);
-    method public void setTo(android.util.DisplayMetrics);
-    method public void setToDefaults();
-    field public static final int DENSITY_140 = 140; // 0x8c
-    field public static final int DENSITY_180 = 180; // 0xb4
-    field public static final int DENSITY_200 = 200; // 0xc8
-    field public static final int DENSITY_220 = 220; // 0xdc
-    field public static final int DENSITY_260 = 260; // 0x104
-    field public static final int DENSITY_280 = 280; // 0x118
-    field public static final int DENSITY_300 = 300; // 0x12c
-    field public static final int DENSITY_340 = 340; // 0x154
-    field public static final int DENSITY_360 = 360; // 0x168
-    field public static final int DENSITY_400 = 400; // 0x190
-    field public static final int DENSITY_420 = 420; // 0x1a4
-    field public static final int DENSITY_440 = 440; // 0x1b8
-    field public static final int DENSITY_450 = 450; // 0x1c2
-    field public static final int DENSITY_560 = 560; // 0x230
-    field public static final int DENSITY_600 = 600; // 0x258
-    field public static final int DENSITY_DEFAULT = 160; // 0xa0
-    field public static final int DENSITY_DEVICE_STABLE;
-    field public static final int DENSITY_HIGH = 240; // 0xf0
-    field public static final int DENSITY_LOW = 120; // 0x78
-    field public static final int DENSITY_MEDIUM = 160; // 0xa0
-    field public static final int DENSITY_TV = 213; // 0xd5
-    field public static final int DENSITY_XHIGH = 320; // 0x140
-    field public static final int DENSITY_XXHIGH = 480; // 0x1e0
-    field public static final int DENSITY_XXXHIGH = 640; // 0x280
-    field public float density;
-    field public int densityDpi;
-    field public int heightPixels;
-    field public float scaledDensity;
-    field public int widthPixels;
-    field public float xdpi;
-    field public float ydpi;
-  }
-
-  public class EventLog {
-    method public static int getTagCode(String);
-    method public static String getTagName(int);
-    method public static void readEvents(int[], java.util.Collection<android.util.EventLog.Event>) throws java.io.IOException;
-    method public static int writeEvent(int, int);
-    method public static int writeEvent(int, long);
-    method public static int writeEvent(int, float);
-    method public static int writeEvent(int, String);
-    method public static int writeEvent(int, java.lang.Object...);
-  }
-
-  public static final class EventLog.Event {
-    method public Object getData();
-    method public int getProcessId();
-    method public int getTag();
-    method public int getThreadId();
-    method public long getTimeNanos();
-  }
-
-  @Deprecated public class EventLogTags {
-    ctor @Deprecated public EventLogTags() throws java.io.IOException;
-    ctor @Deprecated public EventLogTags(java.io.BufferedReader) throws java.io.IOException;
-    method @Deprecated public android.util.EventLogTags.Description get(String);
-    method @Deprecated public android.util.EventLogTags.Description get(int);
-  }
-
-  @Deprecated public static class EventLogTags.Description {
-    field @Deprecated public final String mName;
-    field @Deprecated public final int mTag;
-  }
-
-  @Deprecated public class FloatMath {
-  }
-
-  public abstract class FloatProperty<T> extends android.util.Property<T,java.lang.Float> {
-    ctor public FloatProperty(String);
-    method public final void set(T, Float);
-    method public abstract void setValue(T, float);
-  }
-
-  public final class Half extends java.lang.Number implements java.lang.Comparable<android.util.Half> {
-    ctor public Half(@HalfFloat short);
-    ctor public Half(float);
-    ctor public Half(double);
-    ctor public Half(@NonNull String) throws java.lang.NumberFormatException;
-    method @HalfFloat public static short abs(@HalfFloat short);
-    method @HalfFloat public static short ceil(@HalfFloat short);
-    method public static int compare(@HalfFloat short, @HalfFloat short);
-    method public int compareTo(@NonNull android.util.Half);
-    method @HalfFloat public static short copySign(@HalfFloat short, @HalfFloat short);
-    method public double doubleValue();
-    method public static boolean equals(@HalfFloat short, @HalfFloat short);
-    method public float floatValue();
-    method @HalfFloat public static short floor(@HalfFloat short);
-    method public static int getExponent(@HalfFloat short);
-    method public static int getSign(@HalfFloat short);
-    method public static int getSignificand(@HalfFloat short);
-    method public static boolean greater(@HalfFloat short, @HalfFloat short);
-    method public static boolean greaterEquals(@HalfFloat short, @HalfFloat short);
-    method public static int halfToIntBits(@HalfFloat short);
-    method public static int halfToRawIntBits(@HalfFloat short);
-    method @HalfFloat public static short halfToShortBits(@HalfFloat short);
-    method @HalfFloat public short halfValue();
-    method public static int hashCode(@HalfFloat short);
-    method @HalfFloat public static short intBitsToHalf(int);
-    method public int intValue();
-    method public static boolean isInfinite(@HalfFloat short);
-    method public boolean isNaN();
-    method public static boolean isNaN(@HalfFloat short);
-    method public static boolean isNormalized(@HalfFloat short);
-    method public static boolean less(@HalfFloat short, @HalfFloat short);
-    method public static boolean lessEquals(@HalfFloat short, @HalfFloat short);
-    method public long longValue();
-    method @HalfFloat public static short max(@HalfFloat short, @HalfFloat short);
-    method @HalfFloat public static short min(@HalfFloat short, @HalfFloat short);
-    method @HalfFloat public static short parseHalf(@NonNull String) throws java.lang.NumberFormatException;
-    method @HalfFloat public static short round(@HalfFloat short);
-    method public static float toFloat(@HalfFloat short);
-    method @HalfFloat public static short toHalf(float);
-    method @NonNull public static String toHexString(@HalfFloat short);
-    method @NonNull public static String toString(@HalfFloat short);
-    method @HalfFloat public static short trunc(@HalfFloat short);
-    method @NonNull public static android.util.Half valueOf(@HalfFloat short);
-    method @NonNull public static android.util.Half valueOf(float);
-    method @NonNull public static android.util.Half valueOf(@NonNull String);
-    field @HalfFloat public static final short EPSILON = 5120; // 0x1400
-    field @HalfFloat public static final short LOWEST_VALUE = -1025; // 0xfffffbff
-    field public static final int MAX_EXPONENT = 15; // 0xf
-    field @HalfFloat public static final short MAX_VALUE = 31743; // 0x7bff
-    field public static final int MIN_EXPONENT = -14; // 0xfffffff2
-    field @HalfFloat public static final short MIN_NORMAL = 1024; // 0x400
-    field @HalfFloat public static final short MIN_VALUE = 1; // 0x1
-    field @HalfFloat public static final short NEGATIVE_INFINITY = -1024; // 0xfffffc00
-    field @HalfFloat public static final short NEGATIVE_ZERO = -32768; // 0xffff8000
-    field @HalfFloat public static final short NaN = 32256; // 0x7e00
-    field @HalfFloat public static final short POSITIVE_INFINITY = 31744; // 0x7c00
-    field @HalfFloat public static final short POSITIVE_ZERO = 0; // 0x0
-    field public static final int SIZE = 16; // 0x10
-  }
-
-  public abstract class IntProperty<T> extends android.util.Property<T,java.lang.Integer> {
-    ctor public IntProperty(String);
-    method public final void set(T, Integer);
-    method public abstract void setValue(T, int);
-  }
-
-  public final class JsonReader implements java.io.Closeable {
-    ctor public JsonReader(java.io.Reader);
-    method public void beginArray() throws java.io.IOException;
-    method public void beginObject() throws java.io.IOException;
-    method public void close() throws java.io.IOException;
-    method public void endArray() throws java.io.IOException;
-    method public void endObject() throws java.io.IOException;
-    method public boolean hasNext() throws java.io.IOException;
-    method public boolean isLenient();
-    method public boolean nextBoolean() throws java.io.IOException;
-    method public double nextDouble() throws java.io.IOException;
-    method public int nextInt() throws java.io.IOException;
-    method public long nextLong() throws java.io.IOException;
-    method public String nextName() throws java.io.IOException;
-    method public void nextNull() throws java.io.IOException;
-    method public String nextString() throws java.io.IOException;
-    method public android.util.JsonToken peek() throws java.io.IOException;
-    method public void setLenient(boolean);
-    method public void skipValue() throws java.io.IOException;
-  }
-
-  public enum JsonToken {
-    enum_constant public static final android.util.JsonToken BEGIN_ARRAY;
-    enum_constant public static final android.util.JsonToken BEGIN_OBJECT;
-    enum_constant public static final android.util.JsonToken BOOLEAN;
-    enum_constant public static final android.util.JsonToken END_ARRAY;
-    enum_constant public static final android.util.JsonToken END_DOCUMENT;
-    enum_constant public static final android.util.JsonToken END_OBJECT;
-    enum_constant public static final android.util.JsonToken NAME;
-    enum_constant public static final android.util.JsonToken NULL;
-    enum_constant public static final android.util.JsonToken NUMBER;
-    enum_constant public static final android.util.JsonToken STRING;
-  }
-
-  public final class JsonWriter implements java.io.Closeable {
-    ctor public JsonWriter(java.io.Writer);
-    method public android.util.JsonWriter beginArray() throws java.io.IOException;
-    method public android.util.JsonWriter beginObject() throws java.io.IOException;
-    method public void close() throws java.io.IOException;
-    method public android.util.JsonWriter endArray() throws java.io.IOException;
-    method public android.util.JsonWriter endObject() throws java.io.IOException;
-    method public void flush() throws java.io.IOException;
-    method public boolean isLenient();
-    method public android.util.JsonWriter name(String) throws java.io.IOException;
-    method public android.util.JsonWriter nullValue() throws java.io.IOException;
-    method public void setIndent(String);
-    method public void setLenient(boolean);
-    method public android.util.JsonWriter value(String) throws java.io.IOException;
-    method public android.util.JsonWriter value(boolean) throws java.io.IOException;
-    method public android.util.JsonWriter value(double) throws java.io.IOException;
-    method public android.util.JsonWriter value(long) throws java.io.IOException;
-    method public android.util.JsonWriter value(Number) throws java.io.IOException;
-  }
-
-  public final class LayoutDirection {
-    field public static final int INHERIT = 2; // 0x2
-    field public static final int LOCALE = 3; // 0x3
-    field public static final int LTR = 0; // 0x0
-    field public static final int RTL = 1; // 0x1
-  }
-
-  public final class Log {
-    method public static int d(@Nullable String, @NonNull String);
-    method public static int d(@Nullable String, @Nullable String, @Nullable Throwable);
-    method public static int e(@Nullable String, @NonNull String);
-    method public static int e(@Nullable String, @Nullable String, @Nullable Throwable);
-    method @NonNull public static String getStackTraceString(@Nullable Throwable);
-    method public static int i(@Nullable String, @NonNull String);
-    method public static int i(@Nullable String, @Nullable String, @Nullable Throwable);
-    method public static boolean isLoggable(@Nullable @Size(max=23, apis="..23") String, int);
-    method public static int println(int, @Nullable String, @NonNull String);
-    method public static int v(@Nullable String, @NonNull String);
-    method public static int v(@Nullable String, @Nullable String, @Nullable Throwable);
-    method public static int w(@Nullable String, @NonNull String);
-    method public static int w(@Nullable String, @Nullable String, @Nullable Throwable);
-    method public static int w(@Nullable String, @Nullable Throwable);
-    method public static int wtf(@Nullable String, @Nullable String);
-    method public static int wtf(@Nullable String, @NonNull Throwable);
-    method public static int wtf(@Nullable String, @Nullable String, @Nullable Throwable);
-    field public static final int ASSERT = 7; // 0x7
-    field public static final int DEBUG = 3; // 0x3
-    field public static final int ERROR = 6; // 0x6
-    field public static final int INFO = 4; // 0x4
-    field public static final int VERBOSE = 2; // 0x2
-    field public static final int WARN = 5; // 0x5
-  }
-
-  public class LogPrinter implements android.util.Printer {
-    ctor public LogPrinter(int, String);
-    method public void println(String);
-  }
-
-  public class LongSparseArray<E> implements java.lang.Cloneable {
-    ctor public LongSparseArray();
-    ctor public LongSparseArray(int);
-    method public void append(long, E);
-    method public void clear();
-    method public android.util.LongSparseArray<E> clone();
-    method public void delete(long);
-    method public E get(long);
-    method public E get(long, E);
-    method public int indexOfKey(long);
-    method public int indexOfValue(E);
-    method public long keyAt(int);
-    method public void put(long, E);
-    method public void remove(long);
-    method public void removeAt(int);
-    method public void setValueAt(int, E);
-    method public int size();
-    method public E valueAt(int);
-  }
-
-  public class LruCache<K, V> {
-    ctor public LruCache(int);
-    method protected V create(K);
-    method public final int createCount();
-    method protected void entryRemoved(boolean, K, V, V);
-    method public final void evictAll();
-    method public final int evictionCount();
-    method public final V get(K);
-    method public final int hitCount();
-    method public final int maxSize();
-    method public final int missCount();
-    method public final V put(K, V);
-    method public final int putCount();
-    method public final V remove(K);
-    method public void resize(int);
-    method public final int size();
-    method protected int sizeOf(K, V);
-    method public final java.util.Map<K,V> snapshot();
-    method public final String toString();
-    method public void trimToSize(int);
-  }
-
-  public final class MalformedJsonException extends java.io.IOException {
-    ctor public MalformedJsonException(String);
-  }
-
-  public class MonthDisplayHelper {
-    ctor public MonthDisplayHelper(int, int, int);
-    ctor public MonthDisplayHelper(int, int);
-    method public int getColumnOf(int);
-    method public int getDayAt(int, int);
-    method public int[] getDigitsForRow(int);
-    method public int getFirstDayOfMonth();
-    method public int getMonth();
-    method public int getNumberOfDaysInMonth();
-    method public int getOffset();
-    method public int getRowOf(int);
-    method public int getWeekStartDay();
-    method public int getYear();
-    method public boolean isWithinCurrentMonth(int, int);
-    method public void nextMonth();
-    method public void previousMonth();
-  }
-
-  @Deprecated public final class MutableBoolean {
-    ctor @Deprecated public MutableBoolean(boolean);
-    field @Deprecated public boolean value;
-  }
-
-  @Deprecated public final class MutableByte {
-    ctor @Deprecated public MutableByte(byte);
-    field @Deprecated public byte value;
-  }
-
-  @Deprecated public final class MutableChar {
-    ctor @Deprecated public MutableChar(char);
-    field @Deprecated public char value;
-  }
-
-  @Deprecated public final class MutableDouble {
-    ctor @Deprecated public MutableDouble(double);
-    field @Deprecated public double value;
-  }
-
-  @Deprecated public final class MutableFloat {
-    ctor @Deprecated public MutableFloat(float);
-    field @Deprecated public float value;
-  }
-
-  @Deprecated public final class MutableInt {
-    ctor @Deprecated public MutableInt(int);
-    field @Deprecated public int value;
-  }
-
-  @Deprecated public final class MutableLong {
-    ctor @Deprecated public MutableLong(long);
-    field @Deprecated public long value;
-  }
-
-  @Deprecated public final class MutableShort {
-    ctor @Deprecated public MutableShort(short);
-    field @Deprecated public short value;
-  }
-
-  public class NoSuchPropertyException extends java.lang.RuntimeException {
-    ctor public NoSuchPropertyException(String);
-  }
-
-  public class Pair<F, S> {
-    ctor public Pair(F, S);
-    method public static <A, B> android.util.Pair<A,B> create(A, B);
-    field public final F first;
-    field public final S second;
-  }
-
-  public class Patterns {
-    method public static final String concatGroups(java.util.regex.Matcher);
-    method public static final String digitsAndPlusOnly(java.util.regex.Matcher);
-    field public static final java.util.regex.Pattern DOMAIN_NAME;
-    field public static final java.util.regex.Pattern EMAIL_ADDRESS;
-    field @Deprecated public static final String GOOD_IRI_CHAR = "a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef";
-    field public static final java.util.regex.Pattern IP_ADDRESS;
-    field public static final java.util.regex.Pattern PHONE;
-    field @Deprecated public static final java.util.regex.Pattern TOP_LEVEL_DOMAIN;
-    field @Deprecated public static final String TOP_LEVEL_DOMAIN_STR = "((aero|arpa|asia|a[cdefgilmnoqrstuwxz])|(biz|b[abdefghijmnorstvwyz])|(cat|com|coop|c[acdfghiklmnoruvxyz])|d[ejkmoz]|(edu|e[cegrstu])|f[ijkmor]|(gov|g[abdefghilmnpqrstuwy])|h[kmnrtu]|(info|int|i[delmnoqrst])|(jobs|j[emop])|k[eghimnprwyz]|l[abcikrstuvy]|(mil|mobi|museum|m[acdeghklmnopqrstuvwxyz])|(name|net|n[acefgilopruz])|(org|om)|(pro|p[aefghklmnrstwy])|qa|r[eosuw]|s[abcdeghijklmnortuvyz]|(tel|travel|t[cdfghjklmnoprtvwz])|u[agksyz]|v[aceginu]|w[fs]|(\u03b4\u03bf\u03ba\u03b9\u03bc\u03ae|\u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0435|\u0440\u0444|\u0441\u0440\u0431|\u05d8\u05e2\u05e1\u05d8|\u0622\u0632\u0645\u0627\u06cc\u0634\u06cc|\u0625\u062e\u062a\u0628\u0627\u0631|\u0627\u0644\u0627\u0631\u062f\u0646|\u0627\u0644\u062c\u0632\u0627\u0626\u0631|\u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629|\u0627\u0644\u0645\u063a\u0631\u0628|\u0627\u0645\u0627\u0631\u0627\u062a|\u0628\u06be\u0627\u0631\u062a|\u062a\u0648\u0646\u0633|\u0633\u0648\u0631\u064a\u0629|\u0641\u0644\u0633\u0637\u064a\u0646|\u0642\u0637\u0631|\u0645\u0635\u0631|\u092a\u0930\u0940\u0915\u094d\u0937\u093e|\u092d\u093e\u0930\u0924|\u09ad\u09be\u09b0\u09a4|\u0a2d\u0a3e\u0a30\u0a24|\u0aad\u0abe\u0ab0\u0aa4|\u0b87\u0ba8\u0bcd\u0ba4\u0bbf\u0baf\u0bbe|\u0b87\u0bb2\u0b99\u0bcd\u0b95\u0bc8|\u0b9a\u0bbf\u0b99\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0bc2\u0bb0\u0bcd|\u0baa\u0bb0\u0bbf\u0b9f\u0bcd\u0b9a\u0bc8|\u0c2d\u0c3e\u0c30\u0c24\u0c4d|\u0dbd\u0d82\u0d9a\u0dcf|\u0e44\u0e17\u0e22|\u30c6\u30b9\u30c8|\u4e2d\u56fd|\u4e2d\u570b|\u53f0\u6e7e|\u53f0\u7063|\u65b0\u52a0\u5761|\u6d4b\u8bd5|\u6e2c\u8a66|\u9999\u6e2f|\ud14c\uc2a4\ud2b8|\ud55c\uad6d|xn\\-\\-0zwm56d|xn\\-\\-11b5bs3a9aj6g|xn\\-\\-3e0b707e|xn\\-\\-45brj9c|xn\\-\\-80akhbyknj4f|xn\\-\\-90a3ac|xn\\-\\-9t4b11yi5a|xn\\-\\-clchc0ea0b2g2a9gcd|xn\\-\\-deba0ad|xn\\-\\-fiqs8s|xn\\-\\-fiqz9s|xn\\-\\-fpcrj9c3d|xn\\-\\-fzc2c9e2c|xn\\-\\-g6w251d|xn\\-\\-gecrj9c|xn\\-\\-h2brj9c|xn\\-\\-hgbk6aj7f53bba|xn\\-\\-hlcj6aya9esc7a|xn\\-\\-j6w193g|xn\\-\\-jxalpdlp|xn\\-\\-kgbechtv|xn\\-\\-kprw13d|xn\\-\\-kpry57d|xn\\-\\-lgbbat1ad8j|xn\\-\\-mgbaam7a8h|xn\\-\\-mgbayh7gpa|xn\\-\\-mgbbh1a71e|xn\\-\\-mgbc0a9azcg|xn\\-\\-mgberp4a5d4ar|xn\\-\\-o3cw4h|xn\\-\\-ogbpf8fl|xn\\-\\-p1ai|xn\\-\\-pgbs0dh|xn\\-\\-s9brj9c|xn\\-\\-wgbh1c|xn\\-\\-wgbl6a|xn\\-\\-xkc2al3hye2a|xn\\-\\-xkc2dl3a5ee0h|xn\\-\\-yfro4i67o|xn\\-\\-ygbi2ammx|xn\\-\\-zckzah|xxx)|y[et]|z[amw])";
-    field @Deprecated public static final String TOP_LEVEL_DOMAIN_STR_FOR_WEB_URL = "(?:(?:aero|arpa|asia|a[cdefgilmnoqrstuwxz])|(?:biz|b[abdefghijmnorstvwyz])|(?:cat|com|coop|c[acdfghiklmnoruvxyz])|d[ejkmoz]|(?:edu|e[cegrstu])|f[ijkmor]|(?:gov|g[abdefghilmnpqrstuwy])|h[kmnrtu]|(?:info|int|i[delmnoqrst])|(?:jobs|j[emop])|k[eghimnprwyz]|l[abcikrstuvy]|(?:mil|mobi|museum|m[acdeghklmnopqrstuvwxyz])|(?:name|net|n[acefgilopruz])|(?:org|om)|(?:pro|p[aefghklmnrstwy])|qa|r[eosuw]|s[abcdeghijklmnortuvyz]|(?:tel|travel|t[cdfghjklmnoprtvwz])|u[agksyz]|v[aceginu]|w[fs]|(?:\u03b4\u03bf\u03ba\u03b9\u03bc\u03ae|\u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0435|\u0440\u0444|\u0441\u0440\u0431|\u05d8\u05e2\u05e1\u05d8|\u0622\u0632\u0645\u0627\u06cc\u0634\u06cc|\u0625\u062e\u062a\u0628\u0627\u0631|\u0627\u0644\u0627\u0631\u062f\u0646|\u0627\u0644\u062c\u0632\u0627\u0626\u0631|\u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629|\u0627\u0644\u0645\u063a\u0631\u0628|\u0627\u0645\u0627\u0631\u0627\u062a|\u0628\u06be\u0627\u0631\u062a|\u062a\u0648\u0646\u0633|\u0633\u0648\u0631\u064a\u0629|\u0641\u0644\u0633\u0637\u064a\u0646|\u0642\u0637\u0631|\u0645\u0635\u0631|\u092a\u0930\u0940\u0915\u094d\u0937\u093e|\u092d\u093e\u0930\u0924|\u09ad\u09be\u09b0\u09a4|\u0a2d\u0a3e\u0a30\u0a24|\u0aad\u0abe\u0ab0\u0aa4|\u0b87\u0ba8\u0bcd\u0ba4\u0bbf\u0baf\u0bbe|\u0b87\u0bb2\u0b99\u0bcd\u0b95\u0bc8|\u0b9a\u0bbf\u0b99\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0bc2\u0bb0\u0bcd|\u0baa\u0bb0\u0bbf\u0b9f\u0bcd\u0b9a\u0bc8|\u0c2d\u0c3e\u0c30\u0c24\u0c4d|\u0dbd\u0d82\u0d9a\u0dcf|\u0e44\u0e17\u0e22|\u30c6\u30b9\u30c8|\u4e2d\u56fd|\u4e2d\u570b|\u53f0\u6e7e|\u53f0\u7063|\u65b0\u52a0\u5761|\u6d4b\u8bd5|\u6e2c\u8a66|\u9999\u6e2f|\ud14c\uc2a4\ud2b8|\ud55c\uad6d|xn\\-\\-0zwm56d|xn\\-\\-11b5bs3a9aj6g|xn\\-\\-3e0b707e|xn\\-\\-45brj9c|xn\\-\\-80akhbyknj4f|xn\\-\\-90a3ac|xn\\-\\-9t4b11yi5a|xn\\-\\-clchc0ea0b2g2a9gcd|xn\\-\\-deba0ad|xn\\-\\-fiqs8s|xn\\-\\-fiqz9s|xn\\-\\-fpcrj9c3d|xn\\-\\-fzc2c9e2c|xn\\-\\-g6w251d|xn\\-\\-gecrj9c|xn\\-\\-h2brj9c|xn\\-\\-hgbk6aj7f53bba|xn\\-\\-hlcj6aya9esc7a|xn\\-\\-j6w193g|xn\\-\\-jxalpdlp|xn\\-\\-kgbechtv|xn\\-\\-kprw13d|xn\\-\\-kpry57d|xn\\-\\-lgbbat1ad8j|xn\\-\\-mgbaam7a8h|xn\\-\\-mgbayh7gpa|xn\\-\\-mgbbh1a71e|xn\\-\\-mgbc0a9azcg|xn\\-\\-mgberp4a5d4ar|xn\\-\\-o3cw4h|xn\\-\\-ogbpf8fl|xn\\-\\-p1ai|xn\\-\\-pgbs0dh|xn\\-\\-s9brj9c|xn\\-\\-wgbh1c|xn\\-\\-wgbl6a|xn\\-\\-xkc2al3hye2a|xn\\-\\-xkc2dl3a5ee0h|xn\\-\\-yfro4i67o|xn\\-\\-ygbi2ammx|xn\\-\\-zckzah|xxx)|y[et]|z[amw]))";
-    field public static final java.util.regex.Pattern WEB_URL;
-  }
-
-  public class PrintStreamPrinter implements android.util.Printer {
-    ctor public PrintStreamPrinter(java.io.PrintStream);
-    method public void println(String);
-  }
-
-  public class PrintWriterPrinter implements android.util.Printer {
-    ctor public PrintWriterPrinter(java.io.PrintWriter);
-    method public void println(String);
-  }
-
-  public interface Printer {
-    method public void println(String);
-  }
-
-  public abstract class Property<T, V> {
-    ctor public Property(Class<V>, String);
-    method public abstract V get(T);
-    method public String getName();
-    method public Class<V> getType();
-    method public boolean isReadOnly();
-    method public static <T, V> android.util.Property<T,V> of(Class<T>, Class<V>, String);
-    method public void set(T, V);
-  }
-
-  public final class Range<T extends java.lang.Comparable<? super T>> {
-    ctor public Range(T, T);
-    method public T clamp(T);
-    method public boolean contains(T);
-    method public boolean contains(android.util.Range<T>);
-    method public static <T extends java.lang.Comparable<? super T>> android.util.Range<T> create(T, T);
-    method public android.util.Range<T> extend(android.util.Range<T>);
-    method public android.util.Range<T> extend(T, T);
-    method public android.util.Range<T> extend(T);
-    method public T getLower();
-    method public T getUpper();
-    method public android.util.Range<T> intersect(android.util.Range<T>);
-    method public android.util.Range<T> intersect(T, T);
-  }
-
-  public final class Rational extends java.lang.Number implements java.lang.Comparable<android.util.Rational> {
-    ctor public Rational(int, int);
-    method public int compareTo(android.util.Rational);
-    method public double doubleValue();
-    method public float floatValue();
-    method public int getDenominator();
-    method public int getNumerator();
-    method public int intValue();
-    method public boolean isFinite();
-    method public boolean isInfinite();
-    method public boolean isNaN();
-    method public boolean isZero();
-    method public long longValue();
-    method public static android.util.Rational parseRational(String) throws java.lang.NumberFormatException;
-    field public static final android.util.Rational NEGATIVE_INFINITY;
-    field public static final android.util.Rational NaN;
-    field public static final android.util.Rational POSITIVE_INFINITY;
-    field public static final android.util.Rational ZERO;
-  }
-
-  public final class Size {
-    ctor public Size(int, int);
-    method public int getHeight();
-    method public int getWidth();
-    method public static android.util.Size parseSize(String) throws java.lang.NumberFormatException;
-  }
-
-  public final class SizeF {
-    ctor public SizeF(float, float);
-    method public float getHeight();
-    method public float getWidth();
-    method public static android.util.SizeF parseSizeF(String) throws java.lang.NumberFormatException;
-  }
-
-  public class SparseArray<E> implements java.lang.Cloneable {
-    ctor public SparseArray();
-    ctor public SparseArray(int);
-    method public void append(int, E);
-    method public void clear();
-    method public android.util.SparseArray<E> clone();
-    method public boolean contains(int);
-    method public void delete(int);
-    method public E get(int);
-    method public E get(int, E);
-    method public int indexOfKey(int);
-    method public int indexOfValue(E);
-    method public int keyAt(int);
-    method public void put(int, E);
-    method public void remove(int);
-    method public void removeAt(int);
-    method public void removeAtRange(int, int);
-    method public void setValueAt(int, E);
-    method public int size();
-    method public E valueAt(int);
-  }
-
-  public class SparseBooleanArray implements java.lang.Cloneable {
-    ctor public SparseBooleanArray();
-    ctor public SparseBooleanArray(int);
-    method public void append(int, boolean);
-    method public void clear();
-    method public android.util.SparseBooleanArray clone();
-    method public void delete(int);
-    method public boolean get(int);
-    method public boolean get(int, boolean);
-    method public int indexOfKey(int);
-    method public int indexOfValue(boolean);
-    method public int keyAt(int);
-    method public void put(int, boolean);
-    method public void removeAt(int);
-    method public void setValueAt(int, boolean);
-    method public int size();
-    method public boolean valueAt(int);
-  }
-
-  public class SparseIntArray implements java.lang.Cloneable {
-    ctor public SparseIntArray();
-    ctor public SparseIntArray(int);
-    method public void append(int, int);
-    method public void clear();
-    method public android.util.SparseIntArray clone();
-    method public void delete(int);
-    method public int get(int);
-    method public int get(int, int);
-    method public int indexOfKey(int);
-    method public int indexOfValue(int);
-    method public int keyAt(int);
-    method public void put(int, int);
-    method public void removeAt(int);
-    method public void setValueAt(int, int);
-    method public int size();
-    method public int valueAt(int);
-  }
-
-  public class SparseLongArray implements java.lang.Cloneable {
-    ctor public SparseLongArray();
-    ctor public SparseLongArray(int);
-    method public void append(int, long);
-    method public void clear();
-    method public android.util.SparseLongArray clone();
-    method public void delete(int);
-    method public long get(int);
-    method public long get(int, long);
-    method public int indexOfKey(int);
-    method public int indexOfValue(long);
-    method public int keyAt(int);
-    method public void put(int, long);
-    method public void removeAt(int);
-    method public int size();
-    method public long valueAt(int);
-  }
-
-  public class StateSet {
-    method public static String dump(int[]);
-    method public static boolean isWildCard(int[]);
-    method public static boolean stateSetMatches(int[], int[]);
-    method public static boolean stateSetMatches(int[], int);
-    method public static int[] trimStateSet(int[], int);
-    field public static final int[] NOTHING;
-    field public static final int[] WILD_CARD;
-  }
-
-  public class StringBuilderPrinter implements android.util.Printer {
-    ctor public StringBuilderPrinter(StringBuilder);
-    method public void println(String);
-  }
-
-  public class TimeFormatException extends java.lang.RuntimeException {
-  }
-
-  public class TimeUtils {
-    method public static java.util.TimeZone getTimeZone(int, boolean, long, String);
-    method public static String getTimeZoneDatabaseVersion();
-    method @Nullable public static java.util.List<java.lang.String> getTimeZoneIdsForCountryCode(@NonNull String);
-    method public static boolean isTimeBetween(@NonNull java.time.LocalTime, @NonNull java.time.LocalTime, @NonNull java.time.LocalTime);
-  }
-
-  @Deprecated public class TimingLogger {
-    ctor @Deprecated public TimingLogger(String, String);
-    method @Deprecated public void addSplit(String);
-    method @Deprecated public void dumpToLog();
-    method @Deprecated public void reset(String, String);
-    method @Deprecated public void reset();
-  }
-
-  public class TypedValue {
-    ctor public TypedValue();
-    method public static float applyDimension(int, float, android.util.DisplayMetrics);
-    method public final CharSequence coerceToString();
-    method public static final String coerceToString(int, int);
-    method public static float complexToDimension(int, android.util.DisplayMetrics);
-    method public static int complexToDimensionPixelOffset(int, android.util.DisplayMetrics);
-    method public static int complexToDimensionPixelSize(int, android.util.DisplayMetrics);
-    method public static float complexToFloat(int);
-    method public static float complexToFraction(int, float, float);
-    method public int getComplexUnit();
-    method public float getDimension(android.util.DisplayMetrics);
-    method public final float getFloat();
-    method public float getFraction(float, float);
-    method public boolean isColorType();
-    method public void setTo(android.util.TypedValue);
-    field public static final int COMPLEX_MANTISSA_MASK = 16777215; // 0xffffff
-    field public static final int COMPLEX_MANTISSA_SHIFT = 8; // 0x8
-    field public static final int COMPLEX_RADIX_0p23 = 3; // 0x3
-    field public static final int COMPLEX_RADIX_16p7 = 1; // 0x1
-    field public static final int COMPLEX_RADIX_23p0 = 0; // 0x0
-    field public static final int COMPLEX_RADIX_8p15 = 2; // 0x2
-    field public static final int COMPLEX_RADIX_MASK = 3; // 0x3
-    field public static final int COMPLEX_RADIX_SHIFT = 4; // 0x4
-    field public static final int COMPLEX_UNIT_DIP = 1; // 0x1
-    field public static final int COMPLEX_UNIT_FRACTION = 0; // 0x0
-    field public static final int COMPLEX_UNIT_FRACTION_PARENT = 1; // 0x1
-    field public static final int COMPLEX_UNIT_IN = 4; // 0x4
-    field public static final int COMPLEX_UNIT_MASK = 15; // 0xf
-    field public static final int COMPLEX_UNIT_MM = 5; // 0x5
-    field public static final int COMPLEX_UNIT_PT = 3; // 0x3
-    field public static final int COMPLEX_UNIT_PX = 0; // 0x0
-    field public static final int COMPLEX_UNIT_SHIFT = 0; // 0x0
-    field public static final int COMPLEX_UNIT_SP = 2; // 0x2
-    field public static final int DATA_NULL_EMPTY = 1; // 0x1
-    field public static final int DATA_NULL_UNDEFINED = 0; // 0x0
-    field public static final int DENSITY_DEFAULT = 0; // 0x0
-    field public static final int DENSITY_NONE = 65535; // 0xffff
-    field public static final int TYPE_ATTRIBUTE = 2; // 0x2
-    field public static final int TYPE_DIMENSION = 5; // 0x5
-    field public static final int TYPE_FIRST_COLOR_INT = 28; // 0x1c
-    field public static final int TYPE_FIRST_INT = 16; // 0x10
-    field public static final int TYPE_FLOAT = 4; // 0x4
-    field public static final int TYPE_FRACTION = 6; // 0x6
-    field public static final int TYPE_INT_BOOLEAN = 18; // 0x12
-    field public static final int TYPE_INT_COLOR_ARGB4 = 30; // 0x1e
-    field public static final int TYPE_INT_COLOR_ARGB8 = 28; // 0x1c
-    field public static final int TYPE_INT_COLOR_RGB4 = 31; // 0x1f
-    field public static final int TYPE_INT_COLOR_RGB8 = 29; // 0x1d
-    field public static final int TYPE_INT_DEC = 16; // 0x10
-    field public static final int TYPE_INT_HEX = 17; // 0x11
-    field public static final int TYPE_LAST_COLOR_INT = 31; // 0x1f
-    field public static final int TYPE_LAST_INT = 31; // 0x1f
-    field public static final int TYPE_NULL = 0; // 0x0
-    field public static final int TYPE_REFERENCE = 1; // 0x1
-    field public static final int TYPE_STRING = 3; // 0x3
-    field public int assetCookie;
-    field public int changingConfigurations;
-    field public int data;
-    field public int density;
-    field @AnyRes public int resourceId;
-    field public int sourceResourceId;
-    field public CharSequence string;
-    field public int type;
-  }
-
-  public class Xml {
-    method public static android.util.AttributeSet asAttributeSet(org.xmlpull.v1.XmlPullParser);
-    method public static android.util.Xml.Encoding findEncodingByName(String) throws java.io.UnsupportedEncodingException;
-    method public static org.xmlpull.v1.XmlPullParser newPullParser();
-    method public static org.xmlpull.v1.XmlSerializer newSerializer();
-    method public static void parse(String, org.xml.sax.ContentHandler) throws org.xml.sax.SAXException;
-    method public static void parse(java.io.Reader, org.xml.sax.ContentHandler) throws java.io.IOException, org.xml.sax.SAXException;
-    method public static void parse(java.io.InputStream, android.util.Xml.Encoding, org.xml.sax.ContentHandler) throws java.io.IOException, org.xml.sax.SAXException;
-    field public static String FEATURE_RELAXED;
-  }
-
-  public enum Xml.Encoding {
-    enum_constant public static final android.util.Xml.Encoding ISO_8859_1;
-    enum_constant public static final android.util.Xml.Encoding US_ASCII;
-    enum_constant public static final android.util.Xml.Encoding UTF_16;
-    enum_constant public static final android.util.Xml.Encoding UTF_8;
-  }
-
-}
-
-package android.util.proto {
-
-  public final class ProtoOutputStream {
-    ctor public ProtoOutputStream();
-    ctor public ProtoOutputStream(int);
-    ctor public ProtoOutputStream(@NonNull java.io.OutputStream);
-    method public static int checkFieldId(long, long);
-    method public void dump(@NonNull String);
-    method public void end(long);
-    method public void flush();
-    method @NonNull public byte[] getBytes();
-    method @Nullable public static String getFieldCountString(long);
-    method @NonNull public static String getFieldIdString(long);
-    method @Nullable public static String getFieldTypeString(long);
-    method public int getRawSize();
-    method @Nullable public static String getWireTypeString(int);
-    method public static long makeFieldId(int, long);
-    method public static long makeToken(int, boolean, int, int, int);
-    method public long start(long);
-    method @NonNull public static String token2String(long);
-    method public void write(long, double);
-    method public void write(long, float);
-    method public void write(long, int);
-    method public void write(long, long);
-    method public void write(long, boolean);
-    method public void write(long, @Nullable String);
-    method public void write(long, @Nullable byte[]);
-    method public void writeTag(int, int);
-    field public static final long FIELD_COUNT_MASK = 16492674416640L; // 0xf0000000000L
-    field public static final long FIELD_COUNT_PACKED = 5497558138880L; // 0x50000000000L
-    field public static final long FIELD_COUNT_REPEATED = 2199023255552L; // 0x20000000000L
-    field public static final int FIELD_COUNT_SHIFT = 40; // 0x28
-    field public static final long FIELD_COUNT_SINGLE = 1099511627776L; // 0x10000000000L
-    field public static final long FIELD_COUNT_UNKNOWN = 0L; // 0x0L
-    field public static final int FIELD_ID_SHIFT = 3; // 0x3
-    field public static final long FIELD_TYPE_BOOL = 34359738368L; // 0x800000000L
-    field public static final long FIELD_TYPE_BYTES = 51539607552L; // 0xc00000000L
-    field public static final long FIELD_TYPE_DOUBLE = 4294967296L; // 0x100000000L
-    field public static final long FIELD_TYPE_ENUM = 60129542144L; // 0xe00000000L
-    field public static final long FIELD_TYPE_FIXED32 = 30064771072L; // 0x700000000L
-    field public static final long FIELD_TYPE_FIXED64 = 25769803776L; // 0x600000000L
-    field public static final long FIELD_TYPE_FLOAT = 8589934592L; // 0x200000000L
-    field public static final long FIELD_TYPE_INT32 = 21474836480L; // 0x500000000L
-    field public static final long FIELD_TYPE_INT64 = 12884901888L; // 0x300000000L
-    field public static final long FIELD_TYPE_MASK = 1095216660480L; // 0xff00000000L
-    field public static final long FIELD_TYPE_MESSAGE = 47244640256L; // 0xb00000000L
-    field public static final long FIELD_TYPE_SFIXED32 = 64424509440L; // 0xf00000000L
-    field public static final long FIELD_TYPE_SFIXED64 = 68719476736L; // 0x1000000000L
-    field public static final int FIELD_TYPE_SHIFT = 32; // 0x20
-    field public static final long FIELD_TYPE_SINT32 = 73014444032L; // 0x1100000000L
-    field public static final long FIELD_TYPE_SINT64 = 77309411328L; // 0x1200000000L
-    field public static final long FIELD_TYPE_STRING = 38654705664L; // 0x900000000L
-    field public static final long FIELD_TYPE_UINT32 = 55834574848L; // 0xd00000000L
-    field public static final long FIELD_TYPE_UINT64 = 17179869184L; // 0x400000000L
-    field public static final int WIRE_TYPE_END_GROUP = 4; // 0x4
-    field public static final int WIRE_TYPE_FIXED32 = 5; // 0x5
-    field public static final int WIRE_TYPE_FIXED64 = 1; // 0x1
-    field public static final int WIRE_TYPE_LENGTH_DELIMITED = 2; // 0x2
-    field public static final int WIRE_TYPE_MASK = 7; // 0x7
-    field public static final int WIRE_TYPE_START_GROUP = 3; // 0x3
-    field public static final int WIRE_TYPE_VARINT = 0; // 0x0
-  }
-
-}
-
-package android.view {
-
-  public abstract class AbsSavedState implements android.os.Parcelable {
-    ctor protected AbsSavedState(android.os.Parcelable);
-    ctor protected AbsSavedState(android.os.Parcel);
-    ctor protected AbsSavedState(android.os.Parcel, ClassLoader);
-    method public int describeContents();
-    method public final android.os.Parcelable getSuperState();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.AbsSavedState> CREATOR;
-    field public static final android.view.AbsSavedState EMPTY_STATE;
-  }
-
-  public abstract class ActionMode {
-    ctor public ActionMode();
-    method public abstract void finish();
-    method public abstract android.view.View getCustomView();
-    method public abstract android.view.Menu getMenu();
-    method public abstract android.view.MenuInflater getMenuInflater();
-    method public abstract CharSequence getSubtitle();
-    method public Object getTag();
-    method public abstract CharSequence getTitle();
-    method public boolean getTitleOptionalHint();
-    method public int getType();
-    method public void hide(long);
-    method public abstract void invalidate();
-    method public void invalidateContentRect();
-    method public boolean isTitleOptional();
-    method public void onWindowFocusChanged(boolean);
-    method public abstract void setCustomView(android.view.View);
-    method public abstract void setSubtitle(CharSequence);
-    method public abstract void setSubtitle(@StringRes int);
-    method public void setTag(Object);
-    method public abstract void setTitle(CharSequence);
-    method public abstract void setTitle(@StringRes int);
-    method public void setTitleOptionalHint(boolean);
-    method public void setType(int);
-    field public static final int DEFAULT_HIDE_DURATION = -1; // 0xffffffff
-    field public static final int TYPE_FLOATING = 1; // 0x1
-    field public static final int TYPE_PRIMARY = 0; // 0x0
-  }
-
-  public static interface ActionMode.Callback {
-    method public boolean onActionItemClicked(android.view.ActionMode, android.view.MenuItem);
-    method public boolean onCreateActionMode(android.view.ActionMode, android.view.Menu);
-    method public void onDestroyActionMode(android.view.ActionMode);
-    method public boolean onPrepareActionMode(android.view.ActionMode, android.view.Menu);
-  }
-
-  public abstract static class ActionMode.Callback2 implements android.view.ActionMode.Callback {
-    ctor public ActionMode.Callback2();
-    method public void onGetContentRect(android.view.ActionMode, android.view.View, android.graphics.Rect);
-  }
-
-  public abstract class ActionProvider {
-    ctor public ActionProvider(android.content.Context);
-    method public boolean hasSubMenu();
-    method public boolean isVisible();
-    method @Deprecated public abstract android.view.View onCreateActionView();
-    method public android.view.View onCreateActionView(android.view.MenuItem);
-    method public boolean onPerformDefaultAction();
-    method public void onPrepareSubMenu(android.view.SubMenu);
-    method public boolean overridesItemVisibility();
-    method public void refreshVisibility();
-    method public void setVisibilityListener(android.view.ActionProvider.VisibilityListener);
-  }
-
-  public static interface ActionProvider.VisibilityListener {
-    method public void onActionProviderVisibilityChanged(boolean);
-  }
-
-  public final class Choreographer {
-    method public static android.view.Choreographer getInstance();
-    method public void postFrameCallback(android.view.Choreographer.FrameCallback);
-    method public void postFrameCallbackDelayed(android.view.Choreographer.FrameCallback, long);
-    method public void removeFrameCallback(android.view.Choreographer.FrameCallback);
-  }
-
-  public static interface Choreographer.FrameCallback {
-    method public void doFrame(long);
-  }
-
-  public interface CollapsibleActionView {
-    method public void onActionViewCollapsed();
-    method public void onActionViewExpanded();
-  }
-
-  public interface ContextMenu extends android.view.Menu {
-    method public void clearHeader();
-    method public android.view.ContextMenu setHeaderIcon(@DrawableRes int);
-    method public android.view.ContextMenu setHeaderIcon(android.graphics.drawable.Drawable);
-    method public android.view.ContextMenu setHeaderTitle(@StringRes int);
-    method public android.view.ContextMenu setHeaderTitle(CharSequence);
-    method public android.view.ContextMenu setHeaderView(android.view.View);
-  }
-
-  public static interface ContextMenu.ContextMenuInfo {
-  }
-
-  public class ContextThemeWrapper extends android.content.ContextWrapper {
-    ctor public ContextThemeWrapper();
-    ctor public ContextThemeWrapper(android.content.Context, @StyleRes int);
-    ctor public ContextThemeWrapper(android.content.Context, android.content.res.Resources.Theme);
-    method public void applyOverrideConfiguration(android.content.res.Configuration);
-    method protected void onApplyThemeResource(android.content.res.Resources.Theme, int, boolean);
-    method public void setTheme(@Nullable android.content.res.Resources.Theme);
-  }
-
-  public final class Display {
-    method public long getAppVsyncOffsetNanos();
-    method public void getCurrentSizeRange(android.graphics.Point, android.graphics.Point);
-    method @Nullable public android.view.DisplayCutout getCutout();
-    method public int getDisplayId();
-    method public int getFlags();
-    method public android.view.Display.HdrCapabilities getHdrCapabilities();
-    method @Deprecated public int getHeight();
-    method @Deprecated public void getMetrics(android.util.DisplayMetrics);
-    method public android.view.Display.Mode getMode();
-    method public String getName();
-    method @Deprecated public int getOrientation();
-    method @Deprecated public int getPixelFormat();
-    method @Nullable public android.graphics.ColorSpace getPreferredWideGamutColorSpace();
-    method public long getPresentationDeadlineNanos();
-    method public void getRealMetrics(android.util.DisplayMetrics);
-    method public void getRealSize(android.graphics.Point);
-    method @Deprecated public void getRectSize(android.graphics.Rect);
-    method public float getRefreshRate();
-    method public int getRotation();
-    method @Deprecated public void getSize(android.graphics.Point);
-    method public int getState();
-    method public android.view.Display.Mode[] getSupportedModes();
-    method @Deprecated public float[] getSupportedRefreshRates();
-    method @Deprecated public int getWidth();
-    method public boolean isHdr();
-    method public boolean isMinimalPostProcessingSupported();
-    method public boolean isValid();
-    method public boolean isWideColorGamut();
-    field public static final int DEFAULT_DISPLAY = 0; // 0x0
-    field public static final int FLAG_PRESENTATION = 8; // 0x8
-    field public static final int FLAG_PRIVATE = 4; // 0x4
-    field public static final int FLAG_ROUND = 16; // 0x10
-    field public static final int FLAG_SECURE = 2; // 0x2
-    field public static final int FLAG_SUPPORTS_PROTECTED_BUFFERS = 1; // 0x1
-    field public static final int INVALID_DISPLAY = -1; // 0xffffffff
-    field public static final int STATE_DOZE = 3; // 0x3
-    field public static final int STATE_DOZE_SUSPEND = 4; // 0x4
-    field public static final int STATE_OFF = 1; // 0x1
-    field public static final int STATE_ON = 2; // 0x2
-    field public static final int STATE_ON_SUSPEND = 6; // 0x6
-    field public static final int STATE_UNKNOWN = 0; // 0x0
-    field public static final int STATE_VR = 5; // 0x5
-  }
-
-  public static final class Display.HdrCapabilities implements android.os.Parcelable {
-    method public int describeContents();
-    method public float getDesiredMaxAverageLuminance();
-    method public float getDesiredMaxLuminance();
-    method public float getDesiredMinLuminance();
-    method public int[] getSupportedHdrTypes();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.Display.HdrCapabilities> CREATOR;
-    field public static final int HDR_TYPE_DOLBY_VISION = 1; // 0x1
-    field public static final int HDR_TYPE_HDR10 = 2; // 0x2
-    field public static final int HDR_TYPE_HDR10_PLUS = 4; // 0x4
-    field public static final int HDR_TYPE_HLG = 3; // 0x3
-    field public static final float INVALID_LUMINANCE = -1.0f;
-  }
-
-  public static final class Display.Mode implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getModeId();
-    method public int getPhysicalHeight();
-    method public int getPhysicalWidth();
-    method public float getRefreshRate();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.Display.Mode> CREATOR;
-  }
-
-  public final class DisplayCutout {
-    ctor public DisplayCutout(@NonNull android.graphics.Insets, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect);
-    ctor public DisplayCutout(@NonNull android.graphics.Insets, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect, @NonNull android.graphics.Insets);
-    ctor @Deprecated public DisplayCutout(@Nullable android.graphics.Rect, @Nullable java.util.List<android.graphics.Rect>);
-    method @NonNull public android.graphics.Rect getBoundingRectBottom();
-    method @NonNull public android.graphics.Rect getBoundingRectLeft();
-    method @NonNull public android.graphics.Rect getBoundingRectRight();
-    method @NonNull public android.graphics.Rect getBoundingRectTop();
-    method @NonNull public java.util.List<android.graphics.Rect> getBoundingRects();
-    method public int getSafeInsetBottom();
-    method public int getSafeInsetLeft();
-    method public int getSafeInsetRight();
-    method public int getSafeInsetTop();
-    method @NonNull public android.graphics.Insets getWaterfallInsets();
-  }
-
-  public final class DragAndDropPermissions implements android.os.Parcelable {
-    method public int describeContents();
-    method public void release();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.DragAndDropPermissions> CREATOR;
-  }
-
-  public class DragEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAction();
-    method public android.content.ClipData getClipData();
-    method public android.content.ClipDescription getClipDescription();
-    method public Object getLocalState();
-    method public boolean getResult();
-    method public float getX();
-    method public float getY();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ACTION_DRAG_ENDED = 4; // 0x4
-    field public static final int ACTION_DRAG_ENTERED = 5; // 0x5
-    field public static final int ACTION_DRAG_EXITED = 6; // 0x6
-    field public static final int ACTION_DRAG_LOCATION = 2; // 0x2
-    field public static final int ACTION_DRAG_STARTED = 1; // 0x1
-    field public static final int ACTION_DROP = 3; // 0x3
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.DragEvent> CREATOR;
-  }
-
-  public class FocusFinder {
-    method public android.view.View findNearestTouchable(android.view.ViewGroup, int, int, int, int[]);
-    method public final android.view.View findNextFocus(android.view.ViewGroup, android.view.View, int);
-    method public android.view.View findNextFocusFromRect(android.view.ViewGroup, android.graphics.Rect, int);
-    method public android.view.View findNextKeyboardNavigationCluster(@NonNull android.view.View, @Nullable android.view.View, int);
-    method public static android.view.FocusFinder getInstance();
-  }
-
-  public final class FrameMetrics {
-    ctor public FrameMetrics(android.view.FrameMetrics);
-    method public long getMetric(int);
-    field public static final int ANIMATION_DURATION = 2; // 0x2
-    field public static final int COMMAND_ISSUE_DURATION = 6; // 0x6
-    field public static final int DRAW_DURATION = 4; // 0x4
-    field public static final int FIRST_DRAW_FRAME = 9; // 0x9
-    field public static final int INPUT_HANDLING_DURATION = 1; // 0x1
-    field public static final int INTENDED_VSYNC_TIMESTAMP = 10; // 0xa
-    field public static final int LAYOUT_MEASURE_DURATION = 3; // 0x3
-    field public static final int SWAP_BUFFERS_DURATION = 7; // 0x7
-    field public static final int SYNC_DURATION = 5; // 0x5
-    field public static final int TOTAL_DURATION = 8; // 0x8
-    field public static final int UNKNOWN_DELAY_DURATION = 0; // 0x0
-    field public static final int VSYNC_TIMESTAMP = 11; // 0xb
-  }
-
-  public abstract class FrameStats {
-    ctor public FrameStats();
-    method public final long getEndTimeNano();
-    method public final int getFrameCount();
-    method public final long getFramePresentedTimeNano(int);
-    method public final long getRefreshPeriodNano();
-    method public final long getStartTimeNano();
-    field public static final long UNDEFINED_TIME_NANO = -1L; // 0xffffffffffffffffL
-  }
-
-  public class GestureDetector {
-    ctor @Deprecated public GestureDetector(android.view.GestureDetector.OnGestureListener, android.os.Handler);
-    ctor @Deprecated public GestureDetector(android.view.GestureDetector.OnGestureListener);
-    ctor public GestureDetector(android.content.Context, android.view.GestureDetector.OnGestureListener);
-    ctor public GestureDetector(android.content.Context, android.view.GestureDetector.OnGestureListener, android.os.Handler);
-    ctor public GestureDetector(android.content.Context, android.view.GestureDetector.OnGestureListener, android.os.Handler, boolean);
-    method public boolean isLongpressEnabled();
-    method public boolean onGenericMotionEvent(android.view.MotionEvent);
-    method public boolean onTouchEvent(android.view.MotionEvent);
-    method public void setContextClickListener(android.view.GestureDetector.OnContextClickListener);
-    method public void setIsLongpressEnabled(boolean);
-    method public void setOnDoubleTapListener(android.view.GestureDetector.OnDoubleTapListener);
-  }
-
-  public static interface GestureDetector.OnContextClickListener {
-    method public boolean onContextClick(android.view.MotionEvent);
-  }
-
-  public static interface GestureDetector.OnDoubleTapListener {
-    method public boolean onDoubleTap(android.view.MotionEvent);
-    method public boolean onDoubleTapEvent(android.view.MotionEvent);
-    method public boolean onSingleTapConfirmed(android.view.MotionEvent);
-  }
-
-  public static interface GestureDetector.OnGestureListener {
-    method public boolean onDown(android.view.MotionEvent);
-    method public boolean onFling(android.view.MotionEvent, android.view.MotionEvent, float, float);
-    method public void onLongPress(android.view.MotionEvent);
-    method public boolean onScroll(android.view.MotionEvent, android.view.MotionEvent, float, float);
-    method public void onShowPress(android.view.MotionEvent);
-    method public boolean onSingleTapUp(android.view.MotionEvent);
-  }
-
-  public static class GestureDetector.SimpleOnGestureListener implements android.view.GestureDetector.OnContextClickListener android.view.GestureDetector.OnDoubleTapListener android.view.GestureDetector.OnGestureListener {
-    ctor public GestureDetector.SimpleOnGestureListener();
-    method public boolean onContextClick(android.view.MotionEvent);
-    method public boolean onDoubleTap(android.view.MotionEvent);
-    method public boolean onDoubleTapEvent(android.view.MotionEvent);
-    method public boolean onDown(android.view.MotionEvent);
-    method public boolean onFling(android.view.MotionEvent, android.view.MotionEvent, float, float);
-    method public void onLongPress(android.view.MotionEvent);
-    method public boolean onScroll(android.view.MotionEvent, android.view.MotionEvent, float, float);
-    method public void onShowPress(android.view.MotionEvent);
-    method public boolean onSingleTapConfirmed(android.view.MotionEvent);
-    method public boolean onSingleTapUp(android.view.MotionEvent);
-  }
-
-  public class Gravity {
-    ctor public Gravity();
-    method public static void apply(int, int, int, android.graphics.Rect, android.graphics.Rect);
-    method public static void apply(int, int, int, android.graphics.Rect, android.graphics.Rect, int);
-    method public static void apply(int, int, int, android.graphics.Rect, int, int, android.graphics.Rect);
-    method public static void apply(int, int, int, android.graphics.Rect, int, int, android.graphics.Rect, int);
-    method public static void applyDisplay(int, android.graphics.Rect, android.graphics.Rect);
-    method public static void applyDisplay(int, android.graphics.Rect, android.graphics.Rect, int);
-    method public static int getAbsoluteGravity(int, int);
-    method public static boolean isHorizontal(int);
-    method public static boolean isVertical(int);
-    field public static final int AXIS_CLIP = 8; // 0x8
-    field public static final int AXIS_PULL_AFTER = 4; // 0x4
-    field public static final int AXIS_PULL_BEFORE = 2; // 0x2
-    field public static final int AXIS_SPECIFIED = 1; // 0x1
-    field public static final int AXIS_X_SHIFT = 0; // 0x0
-    field public static final int AXIS_Y_SHIFT = 4; // 0x4
-    field public static final int BOTTOM = 80; // 0x50
-    field public static final int CENTER = 17; // 0x11
-    field public static final int CENTER_HORIZONTAL = 1; // 0x1
-    field public static final int CENTER_VERTICAL = 16; // 0x10
-    field public static final int CLIP_HORIZONTAL = 8; // 0x8
-    field public static final int CLIP_VERTICAL = 128; // 0x80
-    field public static final int DISPLAY_CLIP_HORIZONTAL = 16777216; // 0x1000000
-    field public static final int DISPLAY_CLIP_VERTICAL = 268435456; // 0x10000000
-    field public static final int END = 8388613; // 0x800005
-    field public static final int FILL = 119; // 0x77
-    field public static final int FILL_HORIZONTAL = 7; // 0x7
-    field public static final int FILL_VERTICAL = 112; // 0x70
-    field public static final int HORIZONTAL_GRAVITY_MASK = 7; // 0x7
-    field public static final int LEFT = 3; // 0x3
-    field public static final int NO_GRAVITY = 0; // 0x0
-    field public static final int RELATIVE_HORIZONTAL_GRAVITY_MASK = 8388615; // 0x800007
-    field public static final int RELATIVE_LAYOUT_DIRECTION = 8388608; // 0x800000
-    field public static final int RIGHT = 5; // 0x5
-    field public static final int START = 8388611; // 0x800003
-    field public static final int TOP = 48; // 0x30
-    field public static final int VERTICAL_GRAVITY_MASK = 112; // 0x70
-  }
-
-  public class HapticFeedbackConstants {
-    field public static final int CLOCK_TICK = 4; // 0x4
-    field public static final int CONFIRM = 16; // 0x10
-    field public static final int CONTEXT_CLICK = 6; // 0x6
-    field public static final int FLAG_IGNORE_GLOBAL_SETTING = 2; // 0x2
-    field public static final int FLAG_IGNORE_VIEW_SETTING = 1; // 0x1
-    field public static final int GESTURE_END = 13; // 0xd
-    field public static final int GESTURE_START = 12; // 0xc
-    field public static final int KEYBOARD_PRESS = 3; // 0x3
-    field public static final int KEYBOARD_RELEASE = 7; // 0x7
-    field public static final int KEYBOARD_TAP = 3; // 0x3
-    field public static final int LONG_PRESS = 0; // 0x0
-    field public static final int REJECT = 17; // 0x11
-    field public static final int TEXT_HANDLE_MOVE = 9; // 0x9
-    field public static final int VIRTUAL_KEY = 1; // 0x1
-    field public static final int VIRTUAL_KEY_RELEASE = 8; // 0x8
-  }
-
-  public class InflateException extends java.lang.RuntimeException {
-    ctor public InflateException();
-    ctor public InflateException(String, Throwable);
-    ctor public InflateException(String);
-    ctor public InflateException(Throwable);
-  }
-
-  public final class InputDevice implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getControllerNumber();
-    method public String getDescriptor();
-    method public static android.view.InputDevice getDevice(int);
-    method public static int[] getDeviceIds();
-    method public int getId();
-    method public android.view.KeyCharacterMap getKeyCharacterMap();
-    method public int getKeyboardType();
-    method public android.view.InputDevice.MotionRange getMotionRange(int);
-    method public android.view.InputDevice.MotionRange getMotionRange(int, int);
-    method public java.util.List<android.view.InputDevice.MotionRange> getMotionRanges();
-    method public String getName();
-    method public int getProductId();
-    method public int getSources();
-    method public int getVendorId();
-    method public android.os.Vibrator getVibrator();
-    method public boolean[] hasKeys(int...);
-    method public boolean hasMicrophone();
-    method public boolean isEnabled();
-    method public boolean isExternal();
-    method public boolean isVirtual();
-    method public boolean supportsSource(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.InputDevice> CREATOR;
-    field public static final int KEYBOARD_TYPE_ALPHABETIC = 2; // 0x2
-    field public static final int KEYBOARD_TYPE_NONE = 0; // 0x0
-    field public static final int KEYBOARD_TYPE_NON_ALPHABETIC = 1; // 0x1
-    field @Deprecated public static final int MOTION_RANGE_ORIENTATION = 8; // 0x8
-    field @Deprecated public static final int MOTION_RANGE_PRESSURE = 2; // 0x2
-    field @Deprecated public static final int MOTION_RANGE_SIZE = 3; // 0x3
-    field @Deprecated public static final int MOTION_RANGE_TOOL_MAJOR = 6; // 0x6
-    field @Deprecated public static final int MOTION_RANGE_TOOL_MINOR = 7; // 0x7
-    field @Deprecated public static final int MOTION_RANGE_TOUCH_MAJOR = 4; // 0x4
-    field @Deprecated public static final int MOTION_RANGE_TOUCH_MINOR = 5; // 0x5
-    field @Deprecated public static final int MOTION_RANGE_X = 0; // 0x0
-    field @Deprecated public static final int MOTION_RANGE_Y = 1; // 0x1
-    field public static final int SOURCE_ANY = -256; // 0xffffff00
-    field public static final int SOURCE_BLUETOOTH_STYLUS = 49154; // 0xc002
-    field public static final int SOURCE_CLASS_BUTTON = 1; // 0x1
-    field public static final int SOURCE_CLASS_JOYSTICK = 16; // 0x10
-    field public static final int SOURCE_CLASS_MASK = 255; // 0xff
-    field public static final int SOURCE_CLASS_NONE = 0; // 0x0
-    field public static final int SOURCE_CLASS_POINTER = 2; // 0x2
-    field public static final int SOURCE_CLASS_POSITION = 8; // 0x8
-    field public static final int SOURCE_CLASS_TRACKBALL = 4; // 0x4
-    field public static final int SOURCE_DPAD = 513; // 0x201
-    field public static final int SOURCE_GAMEPAD = 1025; // 0x401
-    field public static final int SOURCE_HDMI = 33554433; // 0x2000001
-    field public static final int SOURCE_JOYSTICK = 16777232; // 0x1000010
-    field public static final int SOURCE_KEYBOARD = 257; // 0x101
-    field public static final int SOURCE_MOUSE = 8194; // 0x2002
-    field public static final int SOURCE_MOUSE_RELATIVE = 131076; // 0x20004
-    field public static final int SOURCE_ROTARY_ENCODER = 4194304; // 0x400000
-    field public static final int SOURCE_STYLUS = 16386; // 0x4002
-    field public static final int SOURCE_TOUCHPAD = 1048584; // 0x100008
-    field public static final int SOURCE_TOUCHSCREEN = 4098; // 0x1002
-    field public static final int SOURCE_TOUCH_NAVIGATION = 2097152; // 0x200000
-    field public static final int SOURCE_TRACKBALL = 65540; // 0x10004
-    field public static final int SOURCE_UNKNOWN = 0; // 0x0
-  }
-
-  public static final class InputDevice.MotionRange {
-    method public int getAxis();
-    method public float getFlat();
-    method public float getFuzz();
-    method public float getMax();
-    method public float getMin();
-    method public float getRange();
-    method public float getResolution();
-    method public int getSource();
-    method public boolean isFromSource(int);
-  }
-
-  public abstract class InputEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method public final android.view.InputDevice getDevice();
-    method public abstract int getDeviceId();
-    method public abstract long getEventTime();
-    method public abstract int getSource();
-    method public boolean isFromSource(int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.InputEvent> CREATOR;
-  }
-
-  public final class InputQueue {
-  }
-
-  public static interface InputQueue.Callback {
-    method public void onInputQueueCreated(android.view.InputQueue);
-    method public void onInputQueueDestroyed(android.view.InputQueue);
-  }
-
-  public class KeyCharacterMap implements android.os.Parcelable {
-    method public int describeContents();
-    method public static boolean deviceHasKey(int);
-    method public static boolean[] deviceHasKeys(int[]);
-    method public int get(int, int);
-    method public static int getDeadChar(int, int);
-    method public char getDisplayLabel(int);
-    method public android.view.KeyEvent[] getEvents(char[]);
-    method @Deprecated public boolean getKeyData(int, android.view.KeyCharacterMap.KeyData);
-    method public int getKeyboardType();
-    method public char getMatch(int, char[]);
-    method public char getMatch(int, char[], int);
-    method public int getModifierBehavior();
-    method public char getNumber(int);
-    method public boolean isPrintingKey(int);
-    method public static android.view.KeyCharacterMap load(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ALPHA = 3; // 0x3
-    field @Deprecated public static final int BUILT_IN_KEYBOARD = 0; // 0x0
-    field public static final int COMBINING_ACCENT = -2147483648; // 0x80000000
-    field public static final int COMBINING_ACCENT_MASK = 2147483647; // 0x7fffffff
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.KeyCharacterMap> CREATOR;
-    field public static final int FULL = 4; // 0x4
-    field public static final char HEX_INPUT = 61184; // 0xef00 '\uef00'
-    field public static final int MODIFIER_BEHAVIOR_CHORDED = 0; // 0x0
-    field public static final int MODIFIER_BEHAVIOR_CHORDED_OR_TOGGLED = 1; // 0x1
-    field public static final int NUMERIC = 1; // 0x1
-    field public static final char PICKER_DIALOG_INPUT = 61185; // 0xef01 '\uef01'
-    field public static final int PREDICTIVE = 2; // 0x2
-    field public static final int SPECIAL_FUNCTION = 5; // 0x5
-    field public static final int VIRTUAL_KEYBOARD = -1; // 0xffffffff
-  }
-
-  @Deprecated public static class KeyCharacterMap.KeyData {
-    ctor @Deprecated public KeyCharacterMap.KeyData();
-    field @Deprecated public static final int META_LENGTH = 4; // 0x4
-    field @Deprecated public char displayLabel;
-    field @Deprecated public char[] meta;
-    field @Deprecated public char number;
-  }
-
-  public static class KeyCharacterMap.UnavailableException extends android.util.AndroidRuntimeException {
-    ctor public KeyCharacterMap.UnavailableException(String);
-  }
-
-  public class KeyEvent extends android.view.InputEvent implements android.os.Parcelable {
-    ctor public KeyEvent(int, int);
-    ctor public KeyEvent(long, long, int, int, int);
-    ctor public KeyEvent(long, long, int, int, int, int);
-    ctor public KeyEvent(long, long, int, int, int, int, int, int);
-    ctor public KeyEvent(long, long, int, int, int, int, int, int, int);
-    ctor public KeyEvent(long, long, int, int, int, int, int, int, int, int);
-    ctor public KeyEvent(long, String, int, int);
-    ctor public KeyEvent(android.view.KeyEvent);
-    ctor @Deprecated public KeyEvent(android.view.KeyEvent, long, int);
-    method public static android.view.KeyEvent changeAction(android.view.KeyEvent, int);
-    method public static android.view.KeyEvent changeFlags(android.view.KeyEvent, int);
-    method public static android.view.KeyEvent changeTimeRepeat(android.view.KeyEvent, long, int);
-    method public static android.view.KeyEvent changeTimeRepeat(android.view.KeyEvent, long, int, int);
-    method @Deprecated public final boolean dispatch(android.view.KeyEvent.Callback);
-    method public final boolean dispatch(android.view.KeyEvent.Callback, android.view.KeyEvent.DispatcherState, Object);
-    method public final int getAction();
-    method @Deprecated public final String getCharacters();
-    method public static int getDeadChar(int, int);
-    method public final int getDeviceId();
-    method public char getDisplayLabel();
-    method public final long getDownTime();
-    method public final long getEventTime();
-    method public final int getFlags();
-    method public final android.view.KeyCharacterMap getKeyCharacterMap();
-    method public final int getKeyCode();
-    method @Deprecated public boolean getKeyData(android.view.KeyCharacterMap.KeyData);
-    method public char getMatch(char[]);
-    method public char getMatch(char[], int);
-    method public static int getMaxKeyCode();
-    method public final int getMetaState();
-    method public static int getModifierMetaStateMask();
-    method public final int getModifiers();
-    method public char getNumber();
-    method public final int getRepeatCount();
-    method public final int getScanCode();
-    method public final int getSource();
-    method public int getUnicodeChar();
-    method public int getUnicodeChar(int);
-    method public final boolean hasModifiers(int);
-    method public final boolean hasNoModifiers();
-    method public final boolean isAltPressed();
-    method public final boolean isCanceled();
-    method public final boolean isCapsLockOn();
-    method public final boolean isCtrlPressed();
-    method public final boolean isFunctionPressed();
-    method public static final boolean isGamepadButton(int);
-    method public final boolean isLongPress();
-    method public final boolean isMetaPressed();
-    method public static boolean isModifierKey(int);
-    method public final boolean isNumLockOn();
-    method public boolean isPrintingKey();
-    method public final boolean isScrollLockOn();
-    method public final boolean isShiftPressed();
-    method public final boolean isSymPressed();
-    method public final boolean isSystem();
-    method public final boolean isTracking();
-    method public static int keyCodeFromString(@NonNull String);
-    method public static String keyCodeToString(int);
-    method public static boolean metaStateHasModifiers(int, int);
-    method public static boolean metaStateHasNoModifiers(int);
-    method public static int normalizeMetaState(int);
-    method public final void setSource(int);
-    method public final void startTracking();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ACTION_DOWN = 0; // 0x0
-    field @Deprecated public static final int ACTION_MULTIPLE = 2; // 0x2
-    field public static final int ACTION_UP = 1; // 0x1
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.KeyEvent> CREATOR;
-    field public static final int FLAG_CANCELED = 32; // 0x20
-    field public static final int FLAG_CANCELED_LONG_PRESS = 256; // 0x100
-    field public static final int FLAG_EDITOR_ACTION = 16; // 0x10
-    field public static final int FLAG_FALLBACK = 1024; // 0x400
-    field public static final int FLAG_FROM_SYSTEM = 8; // 0x8
-    field public static final int FLAG_KEEP_TOUCH_MODE = 4; // 0x4
-    field public static final int FLAG_LONG_PRESS = 128; // 0x80
-    field public static final int FLAG_SOFT_KEYBOARD = 2; // 0x2
-    field public static final int FLAG_TRACKING = 512; // 0x200
-    field public static final int FLAG_VIRTUAL_HARD_KEY = 64; // 0x40
-    field @Deprecated public static final int FLAG_WOKE_HERE = 1; // 0x1
-    field public static final int KEYCODE_0 = 7; // 0x7
-    field public static final int KEYCODE_1 = 8; // 0x8
-    field public static final int KEYCODE_11 = 227; // 0xe3
-    field public static final int KEYCODE_12 = 228; // 0xe4
-    field public static final int KEYCODE_2 = 9; // 0x9
-    field public static final int KEYCODE_3 = 10; // 0xa
-    field public static final int KEYCODE_3D_MODE = 206; // 0xce
-    field public static final int KEYCODE_4 = 11; // 0xb
-    field public static final int KEYCODE_5 = 12; // 0xc
-    field public static final int KEYCODE_6 = 13; // 0xd
-    field public static final int KEYCODE_7 = 14; // 0xe
-    field public static final int KEYCODE_8 = 15; // 0xf
-    field public static final int KEYCODE_9 = 16; // 0x10
-    field public static final int KEYCODE_A = 29; // 0x1d
-    field public static final int KEYCODE_ALL_APPS = 284; // 0x11c
-    field public static final int KEYCODE_ALT_LEFT = 57; // 0x39
-    field public static final int KEYCODE_ALT_RIGHT = 58; // 0x3a
-    field public static final int KEYCODE_APOSTROPHE = 75; // 0x4b
-    field public static final int KEYCODE_APP_SWITCH = 187; // 0xbb
-    field public static final int KEYCODE_ASSIST = 219; // 0xdb
-    field public static final int KEYCODE_AT = 77; // 0x4d
-    field public static final int KEYCODE_AVR_INPUT = 182; // 0xb6
-    field public static final int KEYCODE_AVR_POWER = 181; // 0xb5
-    field public static final int KEYCODE_B = 30; // 0x1e
-    field public static final int KEYCODE_BACK = 4; // 0x4
-    field public static final int KEYCODE_BACKSLASH = 73; // 0x49
-    field public static final int KEYCODE_BOOKMARK = 174; // 0xae
-    field public static final int KEYCODE_BREAK = 121; // 0x79
-    field public static final int KEYCODE_BRIGHTNESS_DOWN = 220; // 0xdc
-    field public static final int KEYCODE_BRIGHTNESS_UP = 221; // 0xdd
-    field public static final int KEYCODE_BUTTON_1 = 188; // 0xbc
-    field public static final int KEYCODE_BUTTON_10 = 197; // 0xc5
-    field public static final int KEYCODE_BUTTON_11 = 198; // 0xc6
-    field public static final int KEYCODE_BUTTON_12 = 199; // 0xc7
-    field public static final int KEYCODE_BUTTON_13 = 200; // 0xc8
-    field public static final int KEYCODE_BUTTON_14 = 201; // 0xc9
-    field public static final int KEYCODE_BUTTON_15 = 202; // 0xca
-    field public static final int KEYCODE_BUTTON_16 = 203; // 0xcb
-    field public static final int KEYCODE_BUTTON_2 = 189; // 0xbd
-    field public static final int KEYCODE_BUTTON_3 = 190; // 0xbe
-    field public static final int KEYCODE_BUTTON_4 = 191; // 0xbf
-    field public static final int KEYCODE_BUTTON_5 = 192; // 0xc0
-    field public static final int KEYCODE_BUTTON_6 = 193; // 0xc1
-    field public static final int KEYCODE_BUTTON_7 = 194; // 0xc2
-    field public static final int KEYCODE_BUTTON_8 = 195; // 0xc3
-    field public static final int KEYCODE_BUTTON_9 = 196; // 0xc4
-    field public static final int KEYCODE_BUTTON_A = 96; // 0x60
-    field public static final int KEYCODE_BUTTON_B = 97; // 0x61
-    field public static final int KEYCODE_BUTTON_C = 98; // 0x62
-    field public static final int KEYCODE_BUTTON_L1 = 102; // 0x66
-    field public static final int KEYCODE_BUTTON_L2 = 104; // 0x68
-    field public static final int KEYCODE_BUTTON_MODE = 110; // 0x6e
-    field public static final int KEYCODE_BUTTON_R1 = 103; // 0x67
-    field public static final int KEYCODE_BUTTON_R2 = 105; // 0x69
-    field public static final int KEYCODE_BUTTON_SELECT = 109; // 0x6d
-    field public static final int KEYCODE_BUTTON_START = 108; // 0x6c
-    field public static final int KEYCODE_BUTTON_THUMBL = 106; // 0x6a
-    field public static final int KEYCODE_BUTTON_THUMBR = 107; // 0x6b
-    field public static final int KEYCODE_BUTTON_X = 99; // 0x63
-    field public static final int KEYCODE_BUTTON_Y = 100; // 0x64
-    field public static final int KEYCODE_BUTTON_Z = 101; // 0x65
-    field public static final int KEYCODE_C = 31; // 0x1f
-    field public static final int KEYCODE_CALCULATOR = 210; // 0xd2
-    field public static final int KEYCODE_CALENDAR = 208; // 0xd0
-    field public static final int KEYCODE_CALL = 5; // 0x5
-    field public static final int KEYCODE_CAMERA = 27; // 0x1b
-    field public static final int KEYCODE_CAPS_LOCK = 115; // 0x73
-    field public static final int KEYCODE_CAPTIONS = 175; // 0xaf
-    field public static final int KEYCODE_CHANNEL_DOWN = 167; // 0xa7
-    field public static final int KEYCODE_CHANNEL_UP = 166; // 0xa6
-    field public static final int KEYCODE_CLEAR = 28; // 0x1c
-    field public static final int KEYCODE_COMMA = 55; // 0x37
-    field public static final int KEYCODE_CONTACTS = 207; // 0xcf
-    field public static final int KEYCODE_COPY = 278; // 0x116
-    field public static final int KEYCODE_CTRL_LEFT = 113; // 0x71
-    field public static final int KEYCODE_CTRL_RIGHT = 114; // 0x72
-    field public static final int KEYCODE_CUT = 277; // 0x115
-    field public static final int KEYCODE_D = 32; // 0x20
-    field public static final int KEYCODE_DEL = 67; // 0x43
-    field public static final int KEYCODE_DPAD_CENTER = 23; // 0x17
-    field public static final int KEYCODE_DPAD_DOWN = 20; // 0x14
-    field public static final int KEYCODE_DPAD_DOWN_LEFT = 269; // 0x10d
-    field public static final int KEYCODE_DPAD_DOWN_RIGHT = 271; // 0x10f
-    field public static final int KEYCODE_DPAD_LEFT = 21; // 0x15
-    field public static final int KEYCODE_DPAD_RIGHT = 22; // 0x16
-    field public static final int KEYCODE_DPAD_UP = 19; // 0x13
-    field public static final int KEYCODE_DPAD_UP_LEFT = 268; // 0x10c
-    field public static final int KEYCODE_DPAD_UP_RIGHT = 270; // 0x10e
-    field public static final int KEYCODE_DVR = 173; // 0xad
-    field public static final int KEYCODE_E = 33; // 0x21
-    field public static final int KEYCODE_EISU = 212; // 0xd4
-    field public static final int KEYCODE_ENDCALL = 6; // 0x6
-    field public static final int KEYCODE_ENTER = 66; // 0x42
-    field public static final int KEYCODE_ENVELOPE = 65; // 0x41
-    field public static final int KEYCODE_EQUALS = 70; // 0x46
-    field public static final int KEYCODE_ESCAPE = 111; // 0x6f
-    field public static final int KEYCODE_EXPLORER = 64; // 0x40
-    field public static final int KEYCODE_F = 34; // 0x22
-    field public static final int KEYCODE_F1 = 131; // 0x83
-    field public static final int KEYCODE_F10 = 140; // 0x8c
-    field public static final int KEYCODE_F11 = 141; // 0x8d
-    field public static final int KEYCODE_F12 = 142; // 0x8e
-    field public static final int KEYCODE_F2 = 132; // 0x84
-    field public static final int KEYCODE_F3 = 133; // 0x85
-    field public static final int KEYCODE_F4 = 134; // 0x86
-    field public static final int KEYCODE_F5 = 135; // 0x87
-    field public static final int KEYCODE_F6 = 136; // 0x88
-    field public static final int KEYCODE_F7 = 137; // 0x89
-    field public static final int KEYCODE_F8 = 138; // 0x8a
-    field public static final int KEYCODE_F9 = 139; // 0x8b
-    field public static final int KEYCODE_FOCUS = 80; // 0x50
-    field public static final int KEYCODE_FORWARD = 125; // 0x7d
-    field public static final int KEYCODE_FORWARD_DEL = 112; // 0x70
-    field public static final int KEYCODE_FUNCTION = 119; // 0x77
-    field public static final int KEYCODE_G = 35; // 0x23
-    field public static final int KEYCODE_GRAVE = 68; // 0x44
-    field public static final int KEYCODE_GUIDE = 172; // 0xac
-    field public static final int KEYCODE_H = 36; // 0x24
-    field public static final int KEYCODE_HEADSETHOOK = 79; // 0x4f
-    field public static final int KEYCODE_HELP = 259; // 0x103
-    field public static final int KEYCODE_HENKAN = 214; // 0xd6
-    field public static final int KEYCODE_HOME = 3; // 0x3
-    field public static final int KEYCODE_I = 37; // 0x25
-    field public static final int KEYCODE_INFO = 165; // 0xa5
-    field public static final int KEYCODE_INSERT = 124; // 0x7c
-    field public static final int KEYCODE_J = 38; // 0x26
-    field public static final int KEYCODE_K = 39; // 0x27
-    field public static final int KEYCODE_KANA = 218; // 0xda
-    field public static final int KEYCODE_KATAKANA_HIRAGANA = 215; // 0xd7
-    field public static final int KEYCODE_L = 40; // 0x28
-    field public static final int KEYCODE_LANGUAGE_SWITCH = 204; // 0xcc
-    field public static final int KEYCODE_LAST_CHANNEL = 229; // 0xe5
-    field public static final int KEYCODE_LEFT_BRACKET = 71; // 0x47
-    field public static final int KEYCODE_M = 41; // 0x29
-    field public static final int KEYCODE_MANNER_MODE = 205; // 0xcd
-    field public static final int KEYCODE_MEDIA_AUDIO_TRACK = 222; // 0xde
-    field public static final int KEYCODE_MEDIA_CLOSE = 128; // 0x80
-    field public static final int KEYCODE_MEDIA_EJECT = 129; // 0x81
-    field public static final int KEYCODE_MEDIA_FAST_FORWARD = 90; // 0x5a
-    field public static final int KEYCODE_MEDIA_NEXT = 87; // 0x57
-    field public static final int KEYCODE_MEDIA_PAUSE = 127; // 0x7f
-    field public static final int KEYCODE_MEDIA_PLAY = 126; // 0x7e
-    field public static final int KEYCODE_MEDIA_PLAY_PAUSE = 85; // 0x55
-    field public static final int KEYCODE_MEDIA_PREVIOUS = 88; // 0x58
-    field public static final int KEYCODE_MEDIA_RECORD = 130; // 0x82
-    field public static final int KEYCODE_MEDIA_REWIND = 89; // 0x59
-    field public static final int KEYCODE_MEDIA_SKIP_BACKWARD = 273; // 0x111
-    field public static final int KEYCODE_MEDIA_SKIP_FORWARD = 272; // 0x110
-    field public static final int KEYCODE_MEDIA_STEP_BACKWARD = 275; // 0x113
-    field public static final int KEYCODE_MEDIA_STEP_FORWARD = 274; // 0x112
-    field public static final int KEYCODE_MEDIA_STOP = 86; // 0x56
-    field public static final int KEYCODE_MEDIA_TOP_MENU = 226; // 0xe2
-    field public static final int KEYCODE_MENU = 82; // 0x52
-    field public static final int KEYCODE_META_LEFT = 117; // 0x75
-    field public static final int KEYCODE_META_RIGHT = 118; // 0x76
-    field public static final int KEYCODE_MINUS = 69; // 0x45
-    field public static final int KEYCODE_MOVE_END = 123; // 0x7b
-    field public static final int KEYCODE_MOVE_HOME = 122; // 0x7a
-    field public static final int KEYCODE_MUHENKAN = 213; // 0xd5
-    field public static final int KEYCODE_MUSIC = 209; // 0xd1
-    field public static final int KEYCODE_MUTE = 91; // 0x5b
-    field public static final int KEYCODE_N = 42; // 0x2a
-    field public static final int KEYCODE_NAVIGATE_IN = 262; // 0x106
-    field public static final int KEYCODE_NAVIGATE_NEXT = 261; // 0x105
-    field public static final int KEYCODE_NAVIGATE_OUT = 263; // 0x107
-    field public static final int KEYCODE_NAVIGATE_PREVIOUS = 260; // 0x104
-    field public static final int KEYCODE_NOTIFICATION = 83; // 0x53
-    field public static final int KEYCODE_NUM = 78; // 0x4e
-    field public static final int KEYCODE_NUMPAD_0 = 144; // 0x90
-    field public static final int KEYCODE_NUMPAD_1 = 145; // 0x91
-    field public static final int KEYCODE_NUMPAD_2 = 146; // 0x92
-    field public static final int KEYCODE_NUMPAD_3 = 147; // 0x93
-    field public static final int KEYCODE_NUMPAD_4 = 148; // 0x94
-    field public static final int KEYCODE_NUMPAD_5 = 149; // 0x95
-    field public static final int KEYCODE_NUMPAD_6 = 150; // 0x96
-    field public static final int KEYCODE_NUMPAD_7 = 151; // 0x97
-    field public static final int KEYCODE_NUMPAD_8 = 152; // 0x98
-    field public static final int KEYCODE_NUMPAD_9 = 153; // 0x99
-    field public static final int KEYCODE_NUMPAD_ADD = 157; // 0x9d
-    field public static final int KEYCODE_NUMPAD_COMMA = 159; // 0x9f
-    field public static final int KEYCODE_NUMPAD_DIVIDE = 154; // 0x9a
-    field public static final int KEYCODE_NUMPAD_DOT = 158; // 0x9e
-    field public static final int KEYCODE_NUMPAD_ENTER = 160; // 0xa0
-    field public static final int KEYCODE_NUMPAD_EQUALS = 161; // 0xa1
-    field public static final int KEYCODE_NUMPAD_LEFT_PAREN = 162; // 0xa2
-    field public static final int KEYCODE_NUMPAD_MULTIPLY = 155; // 0x9b
-    field public static final int KEYCODE_NUMPAD_RIGHT_PAREN = 163; // 0xa3
-    field public static final int KEYCODE_NUMPAD_SUBTRACT = 156; // 0x9c
-    field public static final int KEYCODE_NUM_LOCK = 143; // 0x8f
-    field public static final int KEYCODE_O = 43; // 0x2b
-    field public static final int KEYCODE_P = 44; // 0x2c
-    field public static final int KEYCODE_PAGE_DOWN = 93; // 0x5d
-    field public static final int KEYCODE_PAGE_UP = 92; // 0x5c
-    field public static final int KEYCODE_PAIRING = 225; // 0xe1
-    field public static final int KEYCODE_PASTE = 279; // 0x117
-    field public static final int KEYCODE_PERIOD = 56; // 0x38
-    field public static final int KEYCODE_PICTSYMBOLS = 94; // 0x5e
-    field public static final int KEYCODE_PLUS = 81; // 0x51
-    field public static final int KEYCODE_POUND = 18; // 0x12
-    field public static final int KEYCODE_POWER = 26; // 0x1a
-    field public static final int KEYCODE_PROFILE_SWITCH = 288; // 0x120
-    field public static final int KEYCODE_PROG_BLUE = 186; // 0xba
-    field public static final int KEYCODE_PROG_GREEN = 184; // 0xb8
-    field public static final int KEYCODE_PROG_RED = 183; // 0xb7
-    field public static final int KEYCODE_PROG_YELLOW = 185; // 0xb9
-    field public static final int KEYCODE_Q = 45; // 0x2d
-    field public static final int KEYCODE_R = 46; // 0x2e
-    field public static final int KEYCODE_REFRESH = 285; // 0x11d
-    field public static final int KEYCODE_RIGHT_BRACKET = 72; // 0x48
-    field public static final int KEYCODE_RO = 217; // 0xd9
-    field public static final int KEYCODE_S = 47; // 0x2f
-    field public static final int KEYCODE_SCROLL_LOCK = 116; // 0x74
-    field public static final int KEYCODE_SEARCH = 84; // 0x54
-    field public static final int KEYCODE_SEMICOLON = 74; // 0x4a
-    field public static final int KEYCODE_SETTINGS = 176; // 0xb0
-    field public static final int KEYCODE_SHIFT_LEFT = 59; // 0x3b
-    field public static final int KEYCODE_SHIFT_RIGHT = 60; // 0x3c
-    field public static final int KEYCODE_SLASH = 76; // 0x4c
-    field public static final int KEYCODE_SLEEP = 223; // 0xdf
-    field public static final int KEYCODE_SOFT_LEFT = 1; // 0x1
-    field public static final int KEYCODE_SOFT_RIGHT = 2; // 0x2
-    field public static final int KEYCODE_SOFT_SLEEP = 276; // 0x114
-    field public static final int KEYCODE_SPACE = 62; // 0x3e
-    field public static final int KEYCODE_STAR = 17; // 0x11
-    field public static final int KEYCODE_STB_INPUT = 180; // 0xb4
-    field public static final int KEYCODE_STB_POWER = 179; // 0xb3
-    field public static final int KEYCODE_STEM_1 = 265; // 0x109
-    field public static final int KEYCODE_STEM_2 = 266; // 0x10a
-    field public static final int KEYCODE_STEM_3 = 267; // 0x10b
-    field public static final int KEYCODE_STEM_PRIMARY = 264; // 0x108
-    field public static final int KEYCODE_SWITCH_CHARSET = 95; // 0x5f
-    field public static final int KEYCODE_SYM = 63; // 0x3f
-    field public static final int KEYCODE_SYSRQ = 120; // 0x78
-    field public static final int KEYCODE_SYSTEM_NAVIGATION_DOWN = 281; // 0x119
-    field public static final int KEYCODE_SYSTEM_NAVIGATION_LEFT = 282; // 0x11a
-    field public static final int KEYCODE_SYSTEM_NAVIGATION_RIGHT = 283; // 0x11b
-    field public static final int KEYCODE_SYSTEM_NAVIGATION_UP = 280; // 0x118
-    field public static final int KEYCODE_T = 48; // 0x30
-    field public static final int KEYCODE_TAB = 61; // 0x3d
-    field public static final int KEYCODE_THUMBS_DOWN = 287; // 0x11f
-    field public static final int KEYCODE_THUMBS_UP = 286; // 0x11e
-    field public static final int KEYCODE_TV = 170; // 0xaa
-    field public static final int KEYCODE_TV_ANTENNA_CABLE = 242; // 0xf2
-    field public static final int KEYCODE_TV_AUDIO_DESCRIPTION = 252; // 0xfc
-    field public static final int KEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN = 254; // 0xfe
-    field public static final int KEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP = 253; // 0xfd
-    field public static final int KEYCODE_TV_CONTENTS_MENU = 256; // 0x100
-    field public static final int KEYCODE_TV_DATA_SERVICE = 230; // 0xe6
-    field public static final int KEYCODE_TV_INPUT = 178; // 0xb2
-    field public static final int KEYCODE_TV_INPUT_COMPONENT_1 = 249; // 0xf9
-    field public static final int KEYCODE_TV_INPUT_COMPONENT_2 = 250; // 0xfa
-    field public static final int KEYCODE_TV_INPUT_COMPOSITE_1 = 247; // 0xf7
-    field public static final int KEYCODE_TV_INPUT_COMPOSITE_2 = 248; // 0xf8
-    field public static final int KEYCODE_TV_INPUT_HDMI_1 = 243; // 0xf3
-    field public static final int KEYCODE_TV_INPUT_HDMI_2 = 244; // 0xf4
-    field public static final int KEYCODE_TV_INPUT_HDMI_3 = 245; // 0xf5
-    field public static final int KEYCODE_TV_INPUT_HDMI_4 = 246; // 0xf6
-    field public static final int KEYCODE_TV_INPUT_VGA_1 = 251; // 0xfb
-    field public static final int KEYCODE_TV_MEDIA_CONTEXT_MENU = 257; // 0x101
-    field public static final int KEYCODE_TV_NETWORK = 241; // 0xf1
-    field public static final int KEYCODE_TV_NUMBER_ENTRY = 234; // 0xea
-    field public static final int KEYCODE_TV_POWER = 177; // 0xb1
-    field public static final int KEYCODE_TV_RADIO_SERVICE = 232; // 0xe8
-    field public static final int KEYCODE_TV_SATELLITE = 237; // 0xed
-    field public static final int KEYCODE_TV_SATELLITE_BS = 238; // 0xee
-    field public static final int KEYCODE_TV_SATELLITE_CS = 239; // 0xef
-    field public static final int KEYCODE_TV_SATELLITE_SERVICE = 240; // 0xf0
-    field public static final int KEYCODE_TV_TELETEXT = 233; // 0xe9
-    field public static final int KEYCODE_TV_TERRESTRIAL_ANALOG = 235; // 0xeb
-    field public static final int KEYCODE_TV_TERRESTRIAL_DIGITAL = 236; // 0xec
-    field public static final int KEYCODE_TV_TIMER_PROGRAMMING = 258; // 0x102
-    field public static final int KEYCODE_TV_ZOOM_MODE = 255; // 0xff
-    field public static final int KEYCODE_U = 49; // 0x31
-    field public static final int KEYCODE_UNKNOWN = 0; // 0x0
-    field public static final int KEYCODE_V = 50; // 0x32
-    field public static final int KEYCODE_VOICE_ASSIST = 231; // 0xe7
-    field public static final int KEYCODE_VOLUME_DOWN = 25; // 0x19
-    field public static final int KEYCODE_VOLUME_MUTE = 164; // 0xa4
-    field public static final int KEYCODE_VOLUME_UP = 24; // 0x18
-    field public static final int KEYCODE_W = 51; // 0x33
-    field public static final int KEYCODE_WAKEUP = 224; // 0xe0
-    field public static final int KEYCODE_WINDOW = 171; // 0xab
-    field public static final int KEYCODE_X = 52; // 0x34
-    field public static final int KEYCODE_Y = 53; // 0x35
-    field public static final int KEYCODE_YEN = 216; // 0xd8
-    field public static final int KEYCODE_Z = 54; // 0x36
-    field public static final int KEYCODE_ZENKAKU_HANKAKU = 211; // 0xd3
-    field public static final int KEYCODE_ZOOM_IN = 168; // 0xa8
-    field public static final int KEYCODE_ZOOM_OUT = 169; // 0xa9
-    field @Deprecated public static final int MAX_KEYCODE = 84; // 0x54
-    field public static final int META_ALT_LEFT_ON = 16; // 0x10
-    field public static final int META_ALT_MASK = 50; // 0x32
-    field public static final int META_ALT_ON = 2; // 0x2
-    field public static final int META_ALT_RIGHT_ON = 32; // 0x20
-    field public static final int META_CAPS_LOCK_ON = 1048576; // 0x100000
-    field public static final int META_CTRL_LEFT_ON = 8192; // 0x2000
-    field public static final int META_CTRL_MASK = 28672; // 0x7000
-    field public static final int META_CTRL_ON = 4096; // 0x1000
-    field public static final int META_CTRL_RIGHT_ON = 16384; // 0x4000
-    field public static final int META_FUNCTION_ON = 8; // 0x8
-    field public static final int META_META_LEFT_ON = 131072; // 0x20000
-    field public static final int META_META_MASK = 458752; // 0x70000
-    field public static final int META_META_ON = 65536; // 0x10000
-    field public static final int META_META_RIGHT_ON = 262144; // 0x40000
-    field public static final int META_NUM_LOCK_ON = 2097152; // 0x200000
-    field public static final int META_SCROLL_LOCK_ON = 4194304; // 0x400000
-    field public static final int META_SHIFT_LEFT_ON = 64; // 0x40
-    field public static final int META_SHIFT_MASK = 193; // 0xc1
-    field public static final int META_SHIFT_ON = 1; // 0x1
-    field public static final int META_SHIFT_RIGHT_ON = 128; // 0x80
-    field public static final int META_SYM_ON = 4; // 0x4
-  }
-
-  public static interface KeyEvent.Callback {
-    method public boolean onKeyDown(int, android.view.KeyEvent);
-    method public boolean onKeyLongPress(int, android.view.KeyEvent);
-    method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
-    method public boolean onKeyUp(int, android.view.KeyEvent);
-  }
-
-  public static class KeyEvent.DispatcherState {
-    ctor public KeyEvent.DispatcherState();
-    method public void handleUpEvent(android.view.KeyEvent);
-    method public boolean isTracking(android.view.KeyEvent);
-    method public void performedLongPress(android.view.KeyEvent);
-    method public void reset();
-    method public void reset(Object);
-    method public void startTracking(android.view.KeyEvent, Object);
-  }
-
-  public final class KeyboardShortcutGroup implements android.os.Parcelable {
-    ctor public KeyboardShortcutGroup(@Nullable CharSequence, @NonNull java.util.List<android.view.KeyboardShortcutInfo>);
-    ctor public KeyboardShortcutGroup(@Nullable CharSequence);
-    method public void addItem(android.view.KeyboardShortcutInfo);
-    method public int describeContents();
-    method public java.util.List<android.view.KeyboardShortcutInfo> getItems();
-    method public CharSequence getLabel();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.KeyboardShortcutGroup> CREATOR;
-  }
-
-  public final class KeyboardShortcutInfo implements android.os.Parcelable {
-    ctor public KeyboardShortcutInfo(CharSequence, int, int);
-    ctor public KeyboardShortcutInfo(CharSequence, char, int);
-    method public int describeContents();
-    method public char getBaseCharacter();
-    method public int getKeycode();
-    method @Nullable public CharSequence getLabel();
-    method public int getModifiers();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.KeyboardShortcutInfo> CREATOR;
-  }
-
-  public abstract class LayoutInflater {
-    ctor protected LayoutInflater(android.content.Context);
-    ctor protected LayoutInflater(android.view.LayoutInflater, android.content.Context);
-    method public abstract android.view.LayoutInflater cloneInContext(android.content.Context);
-    method public final android.view.View createView(String, String, android.util.AttributeSet) throws java.lang.ClassNotFoundException, android.view.InflateException;
-    method @Nullable public final android.view.View createView(@NonNull android.content.Context, @NonNull String, @Nullable String, @Nullable android.util.AttributeSet) throws java.lang.ClassNotFoundException, android.view.InflateException;
-    method public static android.view.LayoutInflater from(android.content.Context);
-    method public android.content.Context getContext();
-    method public final android.view.LayoutInflater.Factory getFactory();
-    method public final android.view.LayoutInflater.Factory2 getFactory2();
-    method public android.view.LayoutInflater.Filter getFilter();
-    method public android.view.View inflate(@LayoutRes int, @Nullable android.view.ViewGroup);
-    method public android.view.View inflate(org.xmlpull.v1.XmlPullParser, @Nullable android.view.ViewGroup);
-    method public android.view.View inflate(@LayoutRes int, @Nullable android.view.ViewGroup, boolean);
-    method public android.view.View inflate(org.xmlpull.v1.XmlPullParser, @Nullable android.view.ViewGroup, boolean);
-    method protected android.view.View onCreateView(String, android.util.AttributeSet) throws java.lang.ClassNotFoundException;
-    method protected android.view.View onCreateView(android.view.View, String, android.util.AttributeSet) throws java.lang.ClassNotFoundException;
-    method @Nullable public android.view.View onCreateView(@NonNull android.content.Context, @Nullable android.view.View, @NonNull String, @Nullable android.util.AttributeSet) throws java.lang.ClassNotFoundException;
-    method public void setFactory(android.view.LayoutInflater.Factory);
-    method public void setFactory2(android.view.LayoutInflater.Factory2);
-    method public void setFilter(android.view.LayoutInflater.Filter);
-  }
-
-  public static interface LayoutInflater.Factory {
-    method @Nullable public android.view.View onCreateView(@NonNull String, @NonNull android.content.Context, @NonNull android.util.AttributeSet);
-  }
-
-  public static interface LayoutInflater.Factory2 extends android.view.LayoutInflater.Factory {
-    method @Nullable public android.view.View onCreateView(@Nullable android.view.View, @NonNull String, @NonNull android.content.Context, @NonNull android.util.AttributeSet);
-  }
-
-  public static interface LayoutInflater.Filter {
-    method public boolean onLoadClass(Class);
-  }
-
-  public interface Menu {
-    method public android.view.MenuItem add(CharSequence);
-    method public android.view.MenuItem add(@StringRes int);
-    method public android.view.MenuItem add(int, int, int, CharSequence);
-    method public android.view.MenuItem add(int, int, int, @StringRes int);
-    method public int addIntentOptions(int, int, int, android.content.ComponentName, android.content.Intent[], android.content.Intent, int, android.view.MenuItem[]);
-    method public android.view.SubMenu addSubMenu(CharSequence);
-    method public android.view.SubMenu addSubMenu(@StringRes int);
-    method public android.view.SubMenu addSubMenu(int, int, int, CharSequence);
-    method public android.view.SubMenu addSubMenu(int, int, int, @StringRes int);
-    method public void clear();
-    method public void close();
-    method public android.view.MenuItem findItem(int);
-    method public android.view.MenuItem getItem(int);
-    method public boolean hasVisibleItems();
-    method public boolean isShortcutKey(int, android.view.KeyEvent);
-    method public boolean performIdentifierAction(int, int);
-    method public boolean performShortcut(int, android.view.KeyEvent, int);
-    method public void removeGroup(int);
-    method public void removeItem(int);
-    method public void setGroupCheckable(int, boolean, boolean);
-    method public default void setGroupDividerEnabled(boolean);
-    method public void setGroupEnabled(int, boolean);
-    method public void setGroupVisible(int, boolean);
-    method public void setQwertyMode(boolean);
-    method public int size();
-    field public static final int CATEGORY_ALTERNATIVE = 262144; // 0x40000
-    field public static final int CATEGORY_CONTAINER = 65536; // 0x10000
-    field public static final int CATEGORY_SECONDARY = 196608; // 0x30000
-    field public static final int CATEGORY_SYSTEM = 131072; // 0x20000
-    field public static final int FIRST = 1; // 0x1
-    field public static final int FLAG_ALWAYS_PERFORM_CLOSE = 2; // 0x2
-    field public static final int FLAG_APPEND_TO_GROUP = 1; // 0x1
-    field public static final int FLAG_PERFORM_NO_CLOSE = 1; // 0x1
-    field public static final int NONE = 0; // 0x0
-    field public static final int SUPPORTED_MODIFIERS_MASK = 69647; // 0x1100f
-  }
-
-  public class MenuInflater {
-    ctor public MenuInflater(android.content.Context);
-    method public void inflate(@MenuRes int, android.view.Menu);
-  }
-
-  public interface MenuItem {
-    method public boolean collapseActionView();
-    method public boolean expandActionView();
-    method public android.view.ActionProvider getActionProvider();
-    method public android.view.View getActionView();
-    method public default int getAlphabeticModifiers();
-    method public char getAlphabeticShortcut();
-    method public default CharSequence getContentDescription();
-    method public int getGroupId();
-    method public android.graphics.drawable.Drawable getIcon();
-    method @Nullable public default android.graphics.BlendMode getIconTintBlendMode();
-    method @Nullable public default android.content.res.ColorStateList getIconTintList();
-    method @Nullable public default android.graphics.PorterDuff.Mode getIconTintMode();
-    method public android.content.Intent getIntent();
-    method public int getItemId();
-    method public android.view.ContextMenu.ContextMenuInfo getMenuInfo();
-    method public default int getNumericModifiers();
-    method public char getNumericShortcut();
-    method public int getOrder();
-    method public android.view.SubMenu getSubMenu();
-    method public CharSequence getTitle();
-    method public CharSequence getTitleCondensed();
-    method public default CharSequence getTooltipText();
-    method public boolean hasSubMenu();
-    method public boolean isActionViewExpanded();
-    method public boolean isCheckable();
-    method public boolean isChecked();
-    method public boolean isEnabled();
-    method public boolean isVisible();
-    method public android.view.MenuItem setActionProvider(android.view.ActionProvider);
-    method public android.view.MenuItem setActionView(android.view.View);
-    method public android.view.MenuItem setActionView(@LayoutRes int);
-    method public android.view.MenuItem setAlphabeticShortcut(char);
-    method public default android.view.MenuItem setAlphabeticShortcut(char, int);
-    method public android.view.MenuItem setCheckable(boolean);
-    method public android.view.MenuItem setChecked(boolean);
-    method public default android.view.MenuItem setContentDescription(CharSequence);
-    method public android.view.MenuItem setEnabled(boolean);
-    method public android.view.MenuItem setIcon(android.graphics.drawable.Drawable);
-    method public android.view.MenuItem setIcon(@DrawableRes int);
-    method @NonNull public default android.view.MenuItem setIconTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public default android.view.MenuItem setIconTintList(@Nullable android.content.res.ColorStateList);
-    method @NonNull public default android.view.MenuItem setIconTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public android.view.MenuItem setIntent(android.content.Intent);
-    method public android.view.MenuItem setNumericShortcut(char);
-    method public default android.view.MenuItem setNumericShortcut(char, int);
-    method public android.view.MenuItem setOnActionExpandListener(android.view.MenuItem.OnActionExpandListener);
-    method public android.view.MenuItem setOnMenuItemClickListener(android.view.MenuItem.OnMenuItemClickListener);
-    method public android.view.MenuItem setShortcut(char, char);
-    method public default android.view.MenuItem setShortcut(char, char, int, int);
-    method public void setShowAsAction(int);
-    method public android.view.MenuItem setShowAsActionFlags(int);
-    method public android.view.MenuItem setTitle(CharSequence);
-    method public android.view.MenuItem setTitle(@StringRes int);
-    method public android.view.MenuItem setTitleCondensed(CharSequence);
-    method public default android.view.MenuItem setTooltipText(CharSequence);
-    method public android.view.MenuItem setVisible(boolean);
-    field public static final int SHOW_AS_ACTION_ALWAYS = 2; // 0x2
-    field public static final int SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW = 8; // 0x8
-    field public static final int SHOW_AS_ACTION_IF_ROOM = 1; // 0x1
-    field public static final int SHOW_AS_ACTION_NEVER = 0; // 0x0
-    field public static final int SHOW_AS_ACTION_WITH_TEXT = 4; // 0x4
-  }
-
-  public static interface MenuItem.OnActionExpandListener {
-    method public boolean onMenuItemActionCollapse(android.view.MenuItem);
-    method public boolean onMenuItemActionExpand(android.view.MenuItem);
-  }
-
-  public static interface MenuItem.OnMenuItemClickListener {
-    method public boolean onMenuItemClick(android.view.MenuItem);
-  }
-
-  public final class MotionEvent extends android.view.InputEvent implements android.os.Parcelable {
-    method public static String actionToString(int);
-    method public void addBatch(long, float, float, float, float, int);
-    method public void addBatch(long, android.view.MotionEvent.PointerCoords[], int);
-    method public static int axisFromString(String);
-    method public static String axisToString(int);
-    method public int findPointerIndex(int);
-    method public int getAction();
-    method public int getActionButton();
-    method public int getActionIndex();
-    method public int getActionMasked();
-    method public float getAxisValue(int);
-    method public float getAxisValue(int, int);
-    method public int getButtonState();
-    method public int getClassification();
-    method public int getDeviceId();
-    method public long getDownTime();
-    method public int getEdgeFlags();
-    method public long getEventTime();
-    method public int getFlags();
-    method public float getHistoricalAxisValue(int, int);
-    method public float getHistoricalAxisValue(int, int, int);
-    method public long getHistoricalEventTime(int);
-    method public float getHistoricalOrientation(int);
-    method public float getHistoricalOrientation(int, int);
-    method public void getHistoricalPointerCoords(int, int, android.view.MotionEvent.PointerCoords);
-    method public float getHistoricalPressure(int);
-    method public float getHistoricalPressure(int, int);
-    method public float getHistoricalSize(int);
-    method public float getHistoricalSize(int, int);
-    method public float getHistoricalToolMajor(int);
-    method public float getHistoricalToolMajor(int, int);
-    method public float getHistoricalToolMinor(int);
-    method public float getHistoricalToolMinor(int, int);
-    method public float getHistoricalTouchMajor(int);
-    method public float getHistoricalTouchMajor(int, int);
-    method public float getHistoricalTouchMinor(int);
-    method public float getHistoricalTouchMinor(int, int);
-    method public float getHistoricalX(int);
-    method public float getHistoricalX(int, int);
-    method public float getHistoricalY(int);
-    method public float getHistoricalY(int, int);
-    method public int getHistorySize();
-    method public int getMetaState();
-    method public float getOrientation();
-    method public float getOrientation(int);
-    method public void getPointerCoords(int, android.view.MotionEvent.PointerCoords);
-    method public int getPointerCount();
-    method public int getPointerId(int);
-    method public void getPointerProperties(int, android.view.MotionEvent.PointerProperties);
-    method public float getPressure();
-    method public float getPressure(int);
-    method public float getRawX();
-    method public float getRawX(int);
-    method public float getRawY();
-    method public float getRawY(int);
-    method public float getSize();
-    method public float getSize(int);
-    method public int getSource();
-    method public float getToolMajor();
-    method public float getToolMajor(int);
-    method public float getToolMinor();
-    method public float getToolMinor(int);
-    method public int getToolType(int);
-    method public float getTouchMajor();
-    method public float getTouchMajor(int);
-    method public float getTouchMinor();
-    method public float getTouchMinor(int);
-    method public float getX();
-    method public float getX(int);
-    method public float getXPrecision();
-    method public float getY();
-    method public float getY(int);
-    method public float getYPrecision();
-    method public boolean isButtonPressed(int);
-    method public static android.view.MotionEvent obtain(long, long, int, int, android.view.MotionEvent.PointerProperties[], android.view.MotionEvent.PointerCoords[], int, int, float, float, int, int, int, int);
-    method @Deprecated public static android.view.MotionEvent obtain(long, long, int, int, int[], android.view.MotionEvent.PointerCoords[], int, float, float, int, int, int, int);
-    method public static android.view.MotionEvent obtain(long, long, int, float, float, float, float, int, float, float, int, int);
-    method @Deprecated public static android.view.MotionEvent obtain(long, long, int, int, float, float, float, float, int, float, float, int, int);
-    method public static android.view.MotionEvent obtain(long, long, int, float, float, int);
-    method public static android.view.MotionEvent obtain(android.view.MotionEvent);
-    method public static android.view.MotionEvent obtainNoHistory(android.view.MotionEvent);
-    method public void offsetLocation(float, float);
-    method public void recycle();
-    method public void setAction(int);
-    method public void setEdgeFlags(int);
-    method public void setLocation(float, float);
-    method public void setSource(int);
-    method public void transform(android.graphics.Matrix);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ACTION_BUTTON_PRESS = 11; // 0xb
-    field public static final int ACTION_BUTTON_RELEASE = 12; // 0xc
-    field public static final int ACTION_CANCEL = 3; // 0x3
-    field public static final int ACTION_DOWN = 0; // 0x0
-    field public static final int ACTION_HOVER_ENTER = 9; // 0x9
-    field public static final int ACTION_HOVER_EXIT = 10; // 0xa
-    field public static final int ACTION_HOVER_MOVE = 7; // 0x7
-    field public static final int ACTION_MASK = 255; // 0xff
-    field public static final int ACTION_MOVE = 2; // 0x2
-    field public static final int ACTION_OUTSIDE = 4; // 0x4
-    field @Deprecated public static final int ACTION_POINTER_1_DOWN = 5; // 0x5
-    field @Deprecated public static final int ACTION_POINTER_1_UP = 6; // 0x6
-    field @Deprecated public static final int ACTION_POINTER_2_DOWN = 261; // 0x105
-    field @Deprecated public static final int ACTION_POINTER_2_UP = 262; // 0x106
-    field @Deprecated public static final int ACTION_POINTER_3_DOWN = 517; // 0x205
-    field @Deprecated public static final int ACTION_POINTER_3_UP = 518; // 0x206
-    field public static final int ACTION_POINTER_DOWN = 5; // 0x5
-    field @Deprecated public static final int ACTION_POINTER_ID_MASK = 65280; // 0xff00
-    field @Deprecated public static final int ACTION_POINTER_ID_SHIFT = 8; // 0x8
-    field public static final int ACTION_POINTER_INDEX_MASK = 65280; // 0xff00
-    field public static final int ACTION_POINTER_INDEX_SHIFT = 8; // 0x8
-    field public static final int ACTION_POINTER_UP = 6; // 0x6
-    field public static final int ACTION_SCROLL = 8; // 0x8
-    field public static final int ACTION_UP = 1; // 0x1
-    field public static final int AXIS_BRAKE = 23; // 0x17
-    field public static final int AXIS_DISTANCE = 24; // 0x18
-    field public static final int AXIS_GAS = 22; // 0x16
-    field public static final int AXIS_GENERIC_1 = 32; // 0x20
-    field public static final int AXIS_GENERIC_10 = 41; // 0x29
-    field public static final int AXIS_GENERIC_11 = 42; // 0x2a
-    field public static final int AXIS_GENERIC_12 = 43; // 0x2b
-    field public static final int AXIS_GENERIC_13 = 44; // 0x2c
-    field public static final int AXIS_GENERIC_14 = 45; // 0x2d
-    field public static final int AXIS_GENERIC_15 = 46; // 0x2e
-    field public static final int AXIS_GENERIC_16 = 47; // 0x2f
-    field public static final int AXIS_GENERIC_2 = 33; // 0x21
-    field public static final int AXIS_GENERIC_3 = 34; // 0x22
-    field public static final int AXIS_GENERIC_4 = 35; // 0x23
-    field public static final int AXIS_GENERIC_5 = 36; // 0x24
-    field public static final int AXIS_GENERIC_6 = 37; // 0x25
-    field public static final int AXIS_GENERIC_7 = 38; // 0x26
-    field public static final int AXIS_GENERIC_8 = 39; // 0x27
-    field public static final int AXIS_GENERIC_9 = 40; // 0x28
-    field public static final int AXIS_HAT_X = 15; // 0xf
-    field public static final int AXIS_HAT_Y = 16; // 0x10
-    field public static final int AXIS_HSCROLL = 10; // 0xa
-    field public static final int AXIS_LTRIGGER = 17; // 0x11
-    field public static final int AXIS_ORIENTATION = 8; // 0x8
-    field public static final int AXIS_PRESSURE = 2; // 0x2
-    field public static final int AXIS_RELATIVE_X = 27; // 0x1b
-    field public static final int AXIS_RELATIVE_Y = 28; // 0x1c
-    field public static final int AXIS_RTRIGGER = 18; // 0x12
-    field public static final int AXIS_RUDDER = 20; // 0x14
-    field public static final int AXIS_RX = 12; // 0xc
-    field public static final int AXIS_RY = 13; // 0xd
-    field public static final int AXIS_RZ = 14; // 0xe
-    field public static final int AXIS_SCROLL = 26; // 0x1a
-    field public static final int AXIS_SIZE = 3; // 0x3
-    field public static final int AXIS_THROTTLE = 19; // 0x13
-    field public static final int AXIS_TILT = 25; // 0x19
-    field public static final int AXIS_TOOL_MAJOR = 6; // 0x6
-    field public static final int AXIS_TOOL_MINOR = 7; // 0x7
-    field public static final int AXIS_TOUCH_MAJOR = 4; // 0x4
-    field public static final int AXIS_TOUCH_MINOR = 5; // 0x5
-    field public static final int AXIS_VSCROLL = 9; // 0x9
-    field public static final int AXIS_WHEEL = 21; // 0x15
-    field public static final int AXIS_X = 0; // 0x0
-    field public static final int AXIS_Y = 1; // 0x1
-    field public static final int AXIS_Z = 11; // 0xb
-    field public static final int BUTTON_BACK = 8; // 0x8
-    field public static final int BUTTON_FORWARD = 16; // 0x10
-    field public static final int BUTTON_PRIMARY = 1; // 0x1
-    field public static final int BUTTON_SECONDARY = 2; // 0x2
-    field public static final int BUTTON_STYLUS_PRIMARY = 32; // 0x20
-    field public static final int BUTTON_STYLUS_SECONDARY = 64; // 0x40
-    field public static final int BUTTON_TERTIARY = 4; // 0x4
-    field public static final int CLASSIFICATION_AMBIGUOUS_GESTURE = 1; // 0x1
-    field public static final int CLASSIFICATION_DEEP_PRESS = 2; // 0x2
-    field public static final int CLASSIFICATION_NONE = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.MotionEvent> CREATOR;
-    field public static final int EDGE_BOTTOM = 2; // 0x2
-    field public static final int EDGE_LEFT = 4; // 0x4
-    field public static final int EDGE_RIGHT = 8; // 0x8
-    field public static final int EDGE_TOP = 1; // 0x1
-    field public static final int FLAG_WINDOW_IS_OBSCURED = 1; // 0x1
-    field public static final int FLAG_WINDOW_IS_PARTIALLY_OBSCURED = 2; // 0x2
-    field public static final int INVALID_POINTER_ID = -1; // 0xffffffff
-    field public static final int TOOL_TYPE_ERASER = 4; // 0x4
-    field public static final int TOOL_TYPE_FINGER = 1; // 0x1
-    field public static final int TOOL_TYPE_MOUSE = 3; // 0x3
-    field public static final int TOOL_TYPE_STYLUS = 2; // 0x2
-    field public static final int TOOL_TYPE_UNKNOWN = 0; // 0x0
-  }
-
-  public static final class MotionEvent.PointerCoords {
-    ctor public MotionEvent.PointerCoords();
-    ctor public MotionEvent.PointerCoords(android.view.MotionEvent.PointerCoords);
-    method public void clear();
-    method public void copyFrom(android.view.MotionEvent.PointerCoords);
-    method public float getAxisValue(int);
-    method public void setAxisValue(int, float);
-    field public float orientation;
-    field public float pressure;
-    field public float size;
-    field public float toolMajor;
-    field public float toolMinor;
-    field public float touchMajor;
-    field public float touchMinor;
-    field public float x;
-    field public float y;
-  }
-
-  public static final class MotionEvent.PointerProperties {
-    ctor public MotionEvent.PointerProperties();
-    ctor public MotionEvent.PointerProperties(android.view.MotionEvent.PointerProperties);
-    method public void clear();
-    method public void copyFrom(android.view.MotionEvent.PointerProperties);
-    field public int id;
-    field public int toolType;
-  }
-
-  public abstract class OrientationEventListener {
-    ctor public OrientationEventListener(android.content.Context);
-    ctor public OrientationEventListener(android.content.Context, int);
-    method public boolean canDetectOrientation();
-    method public void disable();
-    method public void enable();
-    method public abstract void onOrientationChanged(int);
-    field public static final int ORIENTATION_UNKNOWN = -1; // 0xffffffff
-  }
-
-  @Deprecated public abstract class OrientationListener implements android.hardware.SensorListener {
-    ctor @Deprecated public OrientationListener(android.content.Context);
-    ctor @Deprecated public OrientationListener(android.content.Context, int);
-    method @Deprecated public void disable();
-    method @Deprecated public void enable();
-    method @Deprecated public void onAccuracyChanged(int, int);
-    method @Deprecated public abstract void onOrientationChanged(int);
-    method @Deprecated public void onSensorChanged(int, float[]);
-    field @Deprecated public static final int ORIENTATION_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public final class PixelCopy {
-    method public static void request(@NonNull android.view.SurfaceView, @NonNull android.graphics.Bitmap, @NonNull android.view.PixelCopy.OnPixelCopyFinishedListener, @NonNull android.os.Handler);
-    method public static void request(@NonNull android.view.SurfaceView, @Nullable android.graphics.Rect, @NonNull android.graphics.Bitmap, @NonNull android.view.PixelCopy.OnPixelCopyFinishedListener, @NonNull android.os.Handler);
-    method public static void request(@NonNull android.view.Surface, @NonNull android.graphics.Bitmap, @NonNull android.view.PixelCopy.OnPixelCopyFinishedListener, @NonNull android.os.Handler);
-    method public static void request(@NonNull android.view.Surface, @Nullable android.graphics.Rect, @NonNull android.graphics.Bitmap, @NonNull android.view.PixelCopy.OnPixelCopyFinishedListener, @NonNull android.os.Handler);
-    method public static void request(@NonNull android.view.Window, @NonNull android.graphics.Bitmap, @NonNull android.view.PixelCopy.OnPixelCopyFinishedListener, @NonNull android.os.Handler);
-    method public static void request(@NonNull android.view.Window, @Nullable android.graphics.Rect, @NonNull android.graphics.Bitmap, @NonNull android.view.PixelCopy.OnPixelCopyFinishedListener, @NonNull android.os.Handler);
-    field public static final int ERROR_DESTINATION_INVALID = 5; // 0x5
-    field public static final int ERROR_SOURCE_INVALID = 4; // 0x4
-    field public static final int ERROR_SOURCE_NO_DATA = 3; // 0x3
-    field public static final int ERROR_TIMEOUT = 2; // 0x2
-    field public static final int ERROR_UNKNOWN = 1; // 0x1
-    field public static final int SUCCESS = 0; // 0x0
-  }
-
-  public static interface PixelCopy.OnPixelCopyFinishedListener {
-    method public void onPixelCopyFinished(int);
-  }
-
-  public final class PointerIcon implements android.os.Parcelable {
-    method public static android.view.PointerIcon create(@NonNull android.graphics.Bitmap, float, float);
-    method public int describeContents();
-    method public static android.view.PointerIcon getSystemIcon(@NonNull android.content.Context, int);
-    method public static android.view.PointerIcon load(@NonNull android.content.res.Resources, @XmlRes int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.PointerIcon> CREATOR;
-    field public static final int TYPE_ALIAS = 1010; // 0x3f2
-    field public static final int TYPE_ALL_SCROLL = 1013; // 0x3f5
-    field public static final int TYPE_ARROW = 1000; // 0x3e8
-    field public static final int TYPE_CELL = 1006; // 0x3ee
-    field public static final int TYPE_CONTEXT_MENU = 1001; // 0x3e9
-    field public static final int TYPE_COPY = 1011; // 0x3f3
-    field public static final int TYPE_CROSSHAIR = 1007; // 0x3ef
-    field public static final int TYPE_DEFAULT = 1000; // 0x3e8
-    field public static final int TYPE_GRAB = 1020; // 0x3fc
-    field public static final int TYPE_GRABBING = 1021; // 0x3fd
-    field public static final int TYPE_HAND = 1002; // 0x3ea
-    field public static final int TYPE_HELP = 1003; // 0x3eb
-    field public static final int TYPE_HORIZONTAL_DOUBLE_ARROW = 1014; // 0x3f6
-    field public static final int TYPE_NO_DROP = 1012; // 0x3f4
-    field public static final int TYPE_NULL = 0; // 0x0
-    field public static final int TYPE_TEXT = 1008; // 0x3f0
-    field public static final int TYPE_TOP_LEFT_DIAGONAL_DOUBLE_ARROW = 1017; // 0x3f9
-    field public static final int TYPE_TOP_RIGHT_DIAGONAL_DOUBLE_ARROW = 1016; // 0x3f8
-    field public static final int TYPE_VERTICAL_DOUBLE_ARROW = 1015; // 0x3f7
-    field public static final int TYPE_VERTICAL_TEXT = 1009; // 0x3f1
-    field public static final int TYPE_WAIT = 1004; // 0x3ec
-    field public static final int TYPE_ZOOM_IN = 1018; // 0x3fa
-    field public static final int TYPE_ZOOM_OUT = 1019; // 0x3fb
-  }
-
-  public class ScaleGestureDetector {
-    ctor public ScaleGestureDetector(android.content.Context, android.view.ScaleGestureDetector.OnScaleGestureListener);
-    ctor public ScaleGestureDetector(android.content.Context, android.view.ScaleGestureDetector.OnScaleGestureListener, android.os.Handler);
-    method public float getCurrentSpan();
-    method public float getCurrentSpanX();
-    method public float getCurrentSpanY();
-    method public long getEventTime();
-    method public float getFocusX();
-    method public float getFocusY();
-    method public float getPreviousSpan();
-    method public float getPreviousSpanX();
-    method public float getPreviousSpanY();
-    method public float getScaleFactor();
-    method public long getTimeDelta();
-    method public boolean isInProgress();
-    method public boolean isQuickScaleEnabled();
-    method public boolean isStylusScaleEnabled();
-    method public boolean onTouchEvent(android.view.MotionEvent);
-    method public void setQuickScaleEnabled(boolean);
-    method public void setStylusScaleEnabled(boolean);
-  }
-
-  public static interface ScaleGestureDetector.OnScaleGestureListener {
-    method public boolean onScale(android.view.ScaleGestureDetector);
-    method public boolean onScaleBegin(android.view.ScaleGestureDetector);
-    method public void onScaleEnd(android.view.ScaleGestureDetector);
-  }
-
-  public static class ScaleGestureDetector.SimpleOnScaleGestureListener implements android.view.ScaleGestureDetector.OnScaleGestureListener {
-    ctor public ScaleGestureDetector.SimpleOnScaleGestureListener();
-    method public boolean onScale(android.view.ScaleGestureDetector);
-    method public boolean onScaleBegin(android.view.ScaleGestureDetector);
-    method public void onScaleEnd(android.view.ScaleGestureDetector);
-  }
-
-  public class SearchEvent {
-    ctor public SearchEvent(android.view.InputDevice);
-    method public android.view.InputDevice getInputDevice();
-  }
-
-  public class SoundEffectConstants {
-    method public static int getContantForFocusDirection(int);
-    field public static final int CLICK = 0; // 0x0
-    field public static final int NAVIGATION_DOWN = 4; // 0x4
-    field public static final int NAVIGATION_LEFT = 1; // 0x1
-    field public static final int NAVIGATION_RIGHT = 3; // 0x3
-    field public static final int NAVIGATION_UP = 2; // 0x2
-  }
-
-  public interface SubMenu extends android.view.Menu {
-    method public void clearHeader();
-    method public android.view.MenuItem getItem();
-    method public android.view.SubMenu setHeaderIcon(@DrawableRes int);
-    method public android.view.SubMenu setHeaderIcon(android.graphics.drawable.Drawable);
-    method public android.view.SubMenu setHeaderTitle(@StringRes int);
-    method public android.view.SubMenu setHeaderTitle(CharSequence);
-    method public android.view.SubMenu setHeaderView(android.view.View);
-    method public android.view.SubMenu setIcon(@DrawableRes int);
-    method public android.view.SubMenu setIcon(android.graphics.drawable.Drawable);
-  }
-
-  public class Surface implements android.os.Parcelable {
-    ctor public Surface(@NonNull android.view.SurfaceControl);
-    ctor public Surface(android.graphics.SurfaceTexture);
-    method public int describeContents();
-    method public boolean isValid();
-    method public android.graphics.Canvas lockCanvas(android.graphics.Rect) throws java.lang.IllegalArgumentException, android.view.Surface.OutOfResourcesException;
-    method public android.graphics.Canvas lockHardwareCanvas();
-    method public void readFromParcel(android.os.Parcel);
-    method public void release();
-    method public void setFrameRate(@FloatRange(from=0.0) float, int);
-    method @Deprecated public void unlockCanvas(android.graphics.Canvas);
-    method public void unlockCanvasAndPost(android.graphics.Canvas);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.Surface> CREATOR;
-    field public static final int FRAME_RATE_COMPATIBILITY_DEFAULT = 0; // 0x0
-    field public static final int FRAME_RATE_COMPATIBILITY_FIXED_SOURCE = 1; // 0x1
-    field public static final int ROTATION_0 = 0; // 0x0
-    field public static final int ROTATION_180 = 2; // 0x2
-    field public static final int ROTATION_270 = 3; // 0x3
-    field public static final int ROTATION_90 = 1; // 0x1
-  }
-
-  public static class Surface.OutOfResourcesException extends java.lang.RuntimeException {
-    ctor public Surface.OutOfResourcesException();
-    ctor public Surface.OutOfResourcesException(String);
-  }
-
-  public final class SurfaceControl implements android.os.Parcelable {
-    method public int describeContents();
-    method public boolean isValid();
-    method public void readFromParcel(android.os.Parcel);
-    method public void release();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.SurfaceControl> CREATOR;
-  }
-
-  public static class SurfaceControl.Builder {
-    ctor public SurfaceControl.Builder();
-    method @NonNull public android.view.SurfaceControl build();
-    method @NonNull public android.view.SurfaceControl.Builder setBufferSize(@IntRange(from=0) int, @IntRange(from=0) int);
-    method @NonNull public android.view.SurfaceControl.Builder setFormat(int);
-    method @NonNull public android.view.SurfaceControl.Builder setName(@NonNull String);
-    method @NonNull public android.view.SurfaceControl.Builder setOpaque(boolean);
-    method @NonNull public android.view.SurfaceControl.Builder setParent(@Nullable android.view.SurfaceControl);
-  }
-
-  public static class SurfaceControl.Transaction implements java.io.Closeable android.os.Parcelable {
-    ctor public SurfaceControl.Transaction();
-    method public void apply();
-    method public void close();
-    method public int describeContents();
-    method @NonNull public android.view.SurfaceControl.Transaction merge(@NonNull android.view.SurfaceControl.Transaction);
-    method @NonNull public android.view.SurfaceControl.Transaction reparent(@NonNull android.view.SurfaceControl, @Nullable android.view.SurfaceControl);
-    method @NonNull public android.view.SurfaceControl.Transaction setAlpha(@NonNull android.view.SurfaceControl, @FloatRange(from=0.0, to=1.0) float);
-    method @NonNull public android.view.SurfaceControl.Transaction setBufferSize(@NonNull android.view.SurfaceControl, @IntRange(from=0) int, @IntRange(from=0) int);
-    method @NonNull public android.view.SurfaceControl.Transaction setFrameRate(@NonNull android.view.SurfaceControl, @FloatRange(from=0.0) float, int);
-    method @NonNull public android.view.SurfaceControl.Transaction setGeometry(@NonNull android.view.SurfaceControl, @Nullable android.graphics.Rect, @Nullable android.graphics.Rect, int);
-    method @NonNull public android.view.SurfaceControl.Transaction setLayer(@NonNull android.view.SurfaceControl, @IntRange(from=java.lang.Integer.MIN_VALUE, to=java.lang.Integer.MAX_VALUE) int);
-    method @NonNull public android.view.SurfaceControl.Transaction setVisibility(@NonNull android.view.SurfaceControl, boolean);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.SurfaceControl.Transaction> CREATOR;
-  }
-
-  public class SurfaceControlViewHost {
-    ctor public SurfaceControlViewHost(@NonNull android.content.Context, @NonNull android.view.Display, @Nullable android.os.IBinder);
-    method @Nullable public android.view.SurfaceControlViewHost.SurfacePackage getSurfacePackage();
-    method @Nullable public android.view.View getView();
-    method public void relayout(int, int);
-    method public void release();
-    method public void setView(@NonNull android.view.View, int, int);
-  }
-
-  public static final class SurfaceControlViewHost.SurfacePackage implements android.os.Parcelable {
-    method public int describeContents();
-    method public void release();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.SurfaceControlViewHost.SurfacePackage> CREATOR;
-  }
-
-  public interface SurfaceHolder {
-    method public void addCallback(android.view.SurfaceHolder.Callback);
-    method public android.view.Surface getSurface();
-    method public android.graphics.Rect getSurfaceFrame();
-    method public boolean isCreating();
-    method public android.graphics.Canvas lockCanvas();
-    method public android.graphics.Canvas lockCanvas(android.graphics.Rect);
-    method public default android.graphics.Canvas lockHardwareCanvas();
-    method public void removeCallback(android.view.SurfaceHolder.Callback);
-    method public void setFixedSize(int, int);
-    method public void setFormat(int);
-    method public void setKeepScreenOn(boolean);
-    method public void setSizeFromLayout();
-    method @Deprecated public void setType(int);
-    method public void unlockCanvasAndPost(android.graphics.Canvas);
-    field @Deprecated public static final int SURFACE_TYPE_GPU = 2; // 0x2
-    field @Deprecated public static final int SURFACE_TYPE_HARDWARE = 1; // 0x1
-    field @Deprecated public static final int SURFACE_TYPE_NORMAL = 0; // 0x0
-    field @Deprecated public static final int SURFACE_TYPE_PUSH_BUFFERS = 3; // 0x3
-  }
-
-  public static class SurfaceHolder.BadSurfaceTypeException extends java.lang.RuntimeException {
-    ctor public SurfaceHolder.BadSurfaceTypeException();
-    ctor public SurfaceHolder.BadSurfaceTypeException(String);
-  }
-
-  public static interface SurfaceHolder.Callback {
-    method public void surfaceChanged(@NonNull android.view.SurfaceHolder, int, @IntRange(from=0) int, @IntRange(from=0) int);
-    method public void surfaceCreated(@NonNull android.view.SurfaceHolder);
-    method public void surfaceDestroyed(@NonNull android.view.SurfaceHolder);
-  }
-
-  public static interface SurfaceHolder.Callback2 extends android.view.SurfaceHolder.Callback {
-    method public void surfaceRedrawNeeded(@NonNull android.view.SurfaceHolder);
-    method public default void surfaceRedrawNeededAsync(@NonNull android.view.SurfaceHolder, @NonNull Runnable);
-  }
-
-  public class SurfaceView extends android.view.View {
-    ctor public SurfaceView(android.content.Context);
-    ctor public SurfaceView(android.content.Context, android.util.AttributeSet);
-    ctor public SurfaceView(android.content.Context, android.util.AttributeSet, int);
-    ctor public SurfaceView(android.content.Context, android.util.AttributeSet, int, int);
-    method public boolean gatherTransparentRegion(android.graphics.Region);
-    method public android.view.SurfaceHolder getHolder();
-    method @Nullable public android.os.IBinder getHostToken();
-    method public android.view.SurfaceControl getSurfaceControl();
-    method public void setChildSurfacePackage(@NonNull android.view.SurfaceControlViewHost.SurfacePackage);
-    method public void setSecure(boolean);
-    method public void setZOrderMediaOverlay(boolean);
-    method public void setZOrderOnTop(boolean);
-  }
-
-  public class TextureView extends android.view.View {
-    ctor public TextureView(@NonNull android.content.Context);
-    ctor public TextureView(@NonNull android.content.Context, @Nullable android.util.AttributeSet);
-    ctor public TextureView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, int);
-    ctor public TextureView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, int, int);
-    method public final void draw(android.graphics.Canvas);
-    method @Nullable public android.graphics.Bitmap getBitmap();
-    method @Nullable public android.graphics.Bitmap getBitmap(int, int);
-    method @NonNull public android.graphics.Bitmap getBitmap(@NonNull android.graphics.Bitmap);
-    method @Nullable public android.graphics.SurfaceTexture getSurfaceTexture();
-    method @Nullable public android.view.TextureView.SurfaceTextureListener getSurfaceTextureListener();
-    method @NonNull public android.graphics.Matrix getTransform(@Nullable android.graphics.Matrix);
-    method public boolean isAvailable();
-    method @Nullable public android.graphics.Canvas lockCanvas();
-    method @Nullable public android.graphics.Canvas lockCanvas(@Nullable android.graphics.Rect);
-    method protected final void onDraw(android.graphics.Canvas);
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setOpaque(boolean);
-    method public void setSurfaceTexture(@NonNull android.graphics.SurfaceTexture);
-    method public void setSurfaceTextureListener(@Nullable android.view.TextureView.SurfaceTextureListener);
-    method public void setTransform(@Nullable android.graphics.Matrix);
-    method public void unlockCanvasAndPost(@NonNull android.graphics.Canvas);
-  }
-
-  public static interface TextureView.SurfaceTextureListener {
-    method public void onSurfaceTextureAvailable(@NonNull android.graphics.SurfaceTexture, int, int);
-    method public boolean onSurfaceTextureDestroyed(@NonNull android.graphics.SurfaceTexture);
-    method public void onSurfaceTextureSizeChanged(@NonNull android.graphics.SurfaceTexture, int, int);
-    method public void onSurfaceTextureUpdated(@NonNull android.graphics.SurfaceTexture);
-  }
-
-  public class TouchDelegate {
-    ctor public TouchDelegate(android.graphics.Rect, android.view.View);
-    method @NonNull public android.view.accessibility.AccessibilityNodeInfo.TouchDelegateInfo getTouchDelegateInfo();
-    method public boolean onTouchEvent(@NonNull android.view.MotionEvent);
-    method public boolean onTouchExplorationHoverEvent(@NonNull android.view.MotionEvent);
-    field public static final int ABOVE = 1; // 0x1
-    field public static final int BELOW = 2; // 0x2
-    field public static final int TO_LEFT = 4; // 0x4
-    field public static final int TO_RIGHT = 8; // 0x8
-  }
-
-  public final class VelocityTracker {
-    method public void addMovement(android.view.MotionEvent);
-    method public void clear();
-    method public void computeCurrentVelocity(int);
-    method public void computeCurrentVelocity(int, float);
-    method public float getXVelocity();
-    method public float getXVelocity(int);
-    method public float getYVelocity();
-    method public float getYVelocity(int);
-    method public static android.view.VelocityTracker obtain();
-    method public void recycle();
-  }
-
-  public abstract class VerifiedInputEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getDeviceId();
-    method public int getDisplayId();
-    method public long getEventTimeNanos();
-    method public int getSource();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.VerifiedInputEvent> CREATOR;
-  }
-
-  public final class VerifiedKeyEvent extends android.view.VerifiedInputEvent implements android.os.Parcelable {
-    method public int getAction();
-    method public long getDownTimeNanos();
-    method @Nullable public Boolean getFlag(int);
-    method public int getKeyCode();
-    method public int getMetaState();
-    method public int getRepeatCount();
-    method public int getScanCode();
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.VerifiedKeyEvent> CREATOR;
-  }
-
-  public final class VerifiedMotionEvent extends android.view.VerifiedInputEvent implements android.os.Parcelable {
-    method public int getActionMasked();
-    method public int getButtonState();
-    method public long getDownTimeNanos();
-    method @Nullable public Boolean getFlag(int);
-    method public int getMetaState();
-    method public float getRawX();
-    method public float getRawY();
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.VerifiedMotionEvent> CREATOR;
-  }
-
-  @UiThread public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.view.KeyEvent.Callback {
-    ctor public View(android.content.Context);
-    ctor public View(android.content.Context, @Nullable android.util.AttributeSet);
-    ctor public View(android.content.Context, @Nullable android.util.AttributeSet, int);
-    ctor public View(android.content.Context, @Nullable android.util.AttributeSet, int, int);
-    method public void addChildrenForAccessibility(java.util.ArrayList<android.view.View>);
-    method public void addExtraDataToAccessibilityNodeInfo(@NonNull android.view.accessibility.AccessibilityNodeInfo, @NonNull String, @Nullable android.os.Bundle);
-    method public void addFocusables(java.util.ArrayList<android.view.View>, int);
-    method public void addFocusables(java.util.ArrayList<android.view.View>, int, int);
-    method public void addKeyboardNavigationClusters(@NonNull java.util.Collection<android.view.View>, int);
-    method public void addOnAttachStateChangeListener(android.view.View.OnAttachStateChangeListener);
-    method public void addOnLayoutChangeListener(android.view.View.OnLayoutChangeListener);
-    method public void addOnUnhandledKeyEventListener(android.view.View.OnUnhandledKeyEventListener);
-    method public void addTouchables(java.util.ArrayList<android.view.View>);
-    method public android.view.ViewPropertyAnimator animate();
-    method public void announceForAccessibility(CharSequence);
-    method public void autofill(android.view.autofill.AutofillValue);
-    method public void autofill(@NonNull android.util.SparseArray<android.view.autofill.AutofillValue>);
-    method protected boolean awakenScrollBars();
-    method protected boolean awakenScrollBars(int);
-    method protected boolean awakenScrollBars(int, boolean);
-    method public void bringToFront();
-    method @Deprecated public void buildDrawingCache();
-    method @Deprecated public void buildDrawingCache(boolean);
-    method public void buildLayer();
-    method public boolean callOnClick();
-    method public boolean canResolveLayoutDirection();
-    method public boolean canResolveTextAlignment();
-    method public boolean canResolveTextDirection();
-    method public boolean canScrollHorizontally(int);
-    method public boolean canScrollVertically(int);
-    method public final void cancelDragAndDrop();
-    method public void cancelLongPress();
-    method public final void cancelPendingInputEvents();
-    method public boolean checkInputConnectionProxy(android.view.View);
-    method public void clearAnimation();
-    method public void clearFocus();
-    method public static int combineMeasuredStates(int, int);
-    method protected int computeHorizontalScrollExtent();
-    method protected int computeHorizontalScrollOffset();
-    method protected int computeHorizontalScrollRange();
-    method public void computeScroll();
-    method public android.view.WindowInsets computeSystemWindowInsets(android.view.WindowInsets, android.graphics.Rect);
-    method protected int computeVerticalScrollExtent();
-    method protected int computeVerticalScrollOffset();
-    method protected int computeVerticalScrollRange();
-    method public android.view.accessibility.AccessibilityNodeInfo createAccessibilityNodeInfo();
-    method public void createContextMenu(android.view.ContextMenu);
-    method @Deprecated public void destroyDrawingCache();
-    method public android.view.WindowInsets dispatchApplyWindowInsets(android.view.WindowInsets);
-    method public boolean dispatchCapturedPointerEvent(android.view.MotionEvent);
-    method public void dispatchConfigurationChanged(android.content.res.Configuration);
-    method public void dispatchDisplayHint(int);
-    method public boolean dispatchDragEvent(android.view.DragEvent);
-    method protected void dispatchDraw(android.graphics.Canvas);
-    method public void dispatchDrawableHotspotChanged(float, float);
-    method @CallSuper public void dispatchFinishTemporaryDetach();
-    method protected boolean dispatchGenericFocusedEvent(android.view.MotionEvent);
-    method public boolean dispatchGenericMotionEvent(android.view.MotionEvent);
-    method protected boolean dispatchGenericPointerEvent(android.view.MotionEvent);
-    method protected boolean dispatchHoverEvent(android.view.MotionEvent);
-    method public boolean dispatchKeyEvent(android.view.KeyEvent);
-    method public boolean dispatchKeyEventPreIme(android.view.KeyEvent);
-    method public boolean dispatchKeyShortcutEvent(android.view.KeyEvent);
-    method public boolean dispatchNestedFling(float, float, boolean);
-    method public boolean dispatchNestedPreFling(float, float);
-    method public boolean dispatchNestedPrePerformAccessibilityAction(int, android.os.Bundle);
-    method public boolean dispatchNestedPreScroll(int, int, @Nullable @Size(2) int[], @Nullable @Size(2) int[]);
-    method public boolean dispatchNestedScroll(int, int, int, int, @Nullable @Size(2) int[]);
-    method public void dispatchPointerCaptureChanged(boolean);
-    method public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    method public void dispatchProvideAutofillStructure(@NonNull android.view.ViewStructure, int);
-    method public void dispatchProvideStructure(android.view.ViewStructure);
-    method protected void dispatchRestoreInstanceState(android.util.SparseArray<android.os.Parcelable>);
-    method protected void dispatchSaveInstanceState(android.util.SparseArray<android.os.Parcelable>);
-    method protected void dispatchSetActivated(boolean);
-    method protected void dispatchSetPressed(boolean);
-    method protected void dispatchSetSelected(boolean);
-    method @CallSuper public void dispatchStartTemporaryDetach();
-    method @Deprecated public void dispatchSystemUiVisibilityChanged(int);
-    method public boolean dispatchTouchEvent(android.view.MotionEvent);
-    method public boolean dispatchTrackballEvent(android.view.MotionEvent);
-    method public boolean dispatchUnhandledMove(android.view.View, int);
-    method protected void dispatchVisibilityChanged(@NonNull android.view.View, int);
-    method public void dispatchWindowFocusChanged(boolean);
-    method public void dispatchWindowInsetsAnimationEnd(@NonNull android.view.WindowInsetsAnimation);
-    method public void dispatchWindowInsetsAnimationPrepare(@NonNull android.view.WindowInsetsAnimation);
-    method @NonNull public android.view.WindowInsets dispatchWindowInsetsAnimationProgress(@NonNull android.view.WindowInsets, @NonNull java.util.List<android.view.WindowInsetsAnimation>);
-    method @NonNull public android.view.WindowInsetsAnimation.Bounds dispatchWindowInsetsAnimationStart(@NonNull android.view.WindowInsetsAnimation, @NonNull android.view.WindowInsetsAnimation.Bounds);
-    method @Deprecated public void dispatchWindowSystemUiVisiblityChanged(int);
-    method public void dispatchWindowVisibilityChanged(int);
-    method @CallSuper public void draw(android.graphics.Canvas);
-    method @CallSuper public void drawableHotspotChanged(float, float);
-    method @CallSuper protected void drawableStateChanged();
-    method public android.view.View findFocus();
-    method public final <T extends android.view.View> T findViewById(@IdRes int);
-    method public final <T extends android.view.View> T findViewWithTag(Object);
-    method public void findViewsWithText(java.util.ArrayList<android.view.View>, CharSequence, int);
-    method @Deprecated protected boolean fitSystemWindows(android.graphics.Rect);
-    method public android.view.View focusSearch(int);
-    method public void forceHasOverlappingRendering(boolean);
-    method public void forceLayout();
-    method public static int generateViewId();
-    method public CharSequence getAccessibilityClassName();
-    method public android.view.View.AccessibilityDelegate getAccessibilityDelegate();
-    method public int getAccessibilityLiveRegion();
-    method public android.view.accessibility.AccessibilityNodeProvider getAccessibilityNodeProvider();
-    method @Nullable public CharSequence getAccessibilityPaneTitle();
-    method @IdRes public int getAccessibilityTraversalAfter();
-    method @IdRes public int getAccessibilityTraversalBefore();
-    method public float getAlpha();
-    method public android.view.animation.Animation getAnimation();
-    method @Nullable public android.graphics.Matrix getAnimationMatrix();
-    method public android.os.IBinder getApplicationWindowToken();
-    method @NonNull public int[] getAttributeResolutionStack(@AttrRes int);
-    method @NonNull public java.util.Map<java.lang.Integer,java.lang.Integer> getAttributeSourceResourceMap();
-    method @Nullable public String[] getAutofillHints();
-    method public final android.view.autofill.AutofillId getAutofillId();
-    method public int getAutofillType();
-    method @Nullable public android.view.autofill.AutofillValue getAutofillValue();
-    method public android.graphics.drawable.Drawable getBackground();
-    method @Nullable public android.graphics.BlendMode getBackgroundTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getBackgroundTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getBackgroundTintMode();
-    method public int getBaseline();
-    method public final int getBottom();
-    method protected float getBottomFadingEdgeStrength();
-    method protected int getBottomPaddingOffset();
-    method public float getCameraDistance();
-    method public android.graphics.Rect getClipBounds();
-    method public boolean getClipBounds(android.graphics.Rect);
-    method public final boolean getClipToOutline();
-    method @Nullable public final android.view.contentcapture.ContentCaptureSession getContentCaptureSession();
-    method public CharSequence getContentDescription();
-    method public final android.content.Context getContext();
-    method protected android.view.ContextMenu.ContextMenuInfo getContextMenuInfo();
-    method public final boolean getDefaultFocusHighlightEnabled();
-    method public static int getDefaultSize(int, int);
-    method public android.view.Display getDisplay();
-    method public final int[] getDrawableState();
-    method @Deprecated public android.graphics.Bitmap getDrawingCache();
-    method @Deprecated public android.graphics.Bitmap getDrawingCache(boolean);
-    method @Deprecated @ColorInt public int getDrawingCacheBackgroundColor();
-    method @Deprecated public int getDrawingCacheQuality();
-    method public void getDrawingRect(android.graphics.Rect);
-    method public long getDrawingTime();
-    method public float getElevation();
-    method @StyleRes public int getExplicitStyle();
-    method public boolean getFilterTouchesWhenObscured();
-    method public boolean getFitsSystemWindows();
-    method public int getFocusable();
-    method public java.util.ArrayList<android.view.View> getFocusables(int);
-    method public void getFocusedRect(android.graphics.Rect);
-    method public android.graphics.drawable.Drawable getForeground();
-    method public int getForegroundGravity();
-    method @Nullable public android.graphics.BlendMode getForegroundTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getForegroundTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getForegroundTintMode();
-    method public boolean getGlobalVisibleRect(android.graphics.Rect, android.graphics.Point);
-    method public final boolean getGlobalVisibleRect(android.graphics.Rect);
-    method public android.os.Handler getHandler();
-    method public final boolean getHasOverlappingRendering();
-    method public final int getHeight();
-    method public void getHitRect(android.graphics.Rect);
-    method public int getHorizontalFadingEdgeLength();
-    method protected int getHorizontalScrollbarHeight();
-    method @Nullable public android.graphics.drawable.Drawable getHorizontalScrollbarThumbDrawable();
-    method @Nullable public android.graphics.drawable.Drawable getHorizontalScrollbarTrackDrawable();
-    method @IdRes public int getId();
-    method public int getImportantForAccessibility();
-    method public int getImportantForAutofill();
-    method public int getImportantForContentCapture();
-    method public boolean getKeepScreenOn();
-    method public android.view.KeyEvent.DispatcherState getKeyDispatcherState();
-    method @IdRes public int getLabelFor();
-    method public int getLayerType();
-    method public int getLayoutDirection();
-    method public android.view.ViewGroup.LayoutParams getLayoutParams();
-    method public final int getLeft();
-    method protected float getLeftFadingEdgeStrength();
-    method protected int getLeftPaddingOffset();
-    method public final boolean getLocalVisibleRect(android.graphics.Rect);
-    method public void getLocationInSurface(@NonNull @Size(2) int[]);
-    method public void getLocationInWindow(@Size(2) int[]);
-    method public void getLocationOnScreen(@Size(2) int[]);
-    method public android.graphics.Matrix getMatrix();
-    method public final int getMeasuredHeight();
-    method public final int getMeasuredHeightAndState();
-    method public final int getMeasuredState();
-    method public final int getMeasuredWidth();
-    method public final int getMeasuredWidthAndState();
-    method public int getMinimumHeight();
-    method public int getMinimumWidth();
-    method @IdRes public int getNextClusterForwardId();
-    method @IdRes public int getNextFocusDownId();
-    method @IdRes public int getNextFocusForwardId();
-    method @IdRes public int getNextFocusLeftId();
-    method @IdRes public int getNextFocusRightId();
-    method @IdRes public int getNextFocusUpId();
-    method public android.view.View.OnFocusChangeListener getOnFocusChangeListener();
-    method @ColorInt public int getOutlineAmbientShadowColor();
-    method public android.view.ViewOutlineProvider getOutlineProvider();
-    method @ColorInt public int getOutlineSpotShadowColor();
-    method public int getOverScrollMode();
-    method public android.view.ViewOverlay getOverlay();
-    method public int getPaddingBottom();
-    method public int getPaddingEnd();
-    method public int getPaddingLeft();
-    method public int getPaddingRight();
-    method public int getPaddingStart();
-    method public int getPaddingTop();
-    method public final android.view.ViewParent getParent();
-    method public android.view.ViewParent getParentForAccessibility();
-    method public float getPivotX();
-    method public float getPivotY();
-    method public android.view.PointerIcon getPointerIcon();
-    method public android.content.res.Resources getResources();
-    method public final boolean getRevealOnFocusHint();
-    method public final int getRight();
-    method protected float getRightFadingEdgeStrength();
-    method protected int getRightPaddingOffset();
-    method public android.view.View getRootView();
-    method public android.view.WindowInsets getRootWindowInsets();
-    method public float getRotation();
-    method public float getRotationX();
-    method public float getRotationY();
-    method public float getScaleX();
-    method public float getScaleY();
-    method public int getScrollBarDefaultDelayBeforeFade();
-    method public int getScrollBarFadeDuration();
-    method public int getScrollBarSize();
-    method public int getScrollBarStyle();
-    method public int getScrollIndicators();
-    method public final int getScrollX();
-    method public final int getScrollY();
-    method @ColorInt public int getSolidColor();
-    method @LayoutRes public int getSourceLayoutResId();
-    method @Nullable public final CharSequence getStateDescription();
-    method public android.animation.StateListAnimator getStateListAnimator();
-    method protected int getSuggestedMinimumHeight();
-    method protected int getSuggestedMinimumWidth();
-    method @NonNull public java.util.List<android.graphics.Rect> getSystemGestureExclusionRects();
-    method @Deprecated public int getSystemUiVisibility();
-    method public Object getTag();
-    method public Object getTag(int);
-    method public int getTextAlignment();
-    method public int getTextDirection();
-    method @Nullable public CharSequence getTooltipText();
-    method public final int getTop();
-    method protected float getTopFadingEdgeStrength();
-    method protected int getTopPaddingOffset();
-    method public android.view.TouchDelegate getTouchDelegate();
-    method public java.util.ArrayList<android.view.View> getTouchables();
-    method public float getTransitionAlpha();
-    method public String getTransitionName();
-    method public float getTranslationX();
-    method public float getTranslationY();
-    method public float getTranslationZ();
-    method public long getUniqueDrawingId();
-    method public int getVerticalFadingEdgeLength();
-    method public int getVerticalScrollbarPosition();
-    method @Nullable public android.graphics.drawable.Drawable getVerticalScrollbarThumbDrawable();
-    method @Nullable public android.graphics.drawable.Drawable getVerticalScrollbarTrackDrawable();
-    method public int getVerticalScrollbarWidth();
-    method public android.view.ViewTreeObserver getViewTreeObserver();
-    method public int getVisibility();
-    method public final int getWidth();
-    method protected int getWindowAttachCount();
-    method public android.view.WindowId getWindowId();
-    method @Nullable public android.view.WindowInsetsController getWindowInsetsController();
-    method @Deprecated public int getWindowSystemUiVisibility();
-    method public android.os.IBinder getWindowToken();
-    method public int getWindowVisibility();
-    method public void getWindowVisibleDisplayFrame(android.graphics.Rect);
-    method public float getX();
-    method public float getY();
-    method public float getZ();
-    method public boolean hasExplicitFocusable();
-    method public boolean hasFocus();
-    method public boolean hasFocusable();
-    method public boolean hasNestedScrollingParent();
-    method public boolean hasOnClickListeners();
-    method public boolean hasOnLongClickListeners();
-    method public boolean hasOverlappingRendering();
-    method public boolean hasPointerCapture();
-    method public boolean hasTransientState();
-    method public boolean hasWindowFocus();
-    method public static android.view.View inflate(android.content.Context, @LayoutRes int, android.view.ViewGroup);
-    method @Deprecated public void invalidate(android.graphics.Rect);
-    method @Deprecated public void invalidate(int, int, int, int);
-    method public void invalidate();
-    method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable);
-    method public void invalidateOutline();
-    method public boolean isAccessibilityFocused();
-    method public boolean isAccessibilityHeading();
-    method public boolean isActivated();
-    method public boolean isAttachedToWindow();
-    method public boolean isClickable();
-    method public boolean isContextClickable();
-    method public boolean isDirty();
-    method @Deprecated public boolean isDrawingCacheEnabled();
-    method public boolean isDuplicateParentStateEnabled();
-    method public boolean isEnabled();
-    method public final boolean isFocusable();
-    method public final boolean isFocusableInTouchMode();
-    method public boolean isFocused();
-    method public final boolean isFocusedByDefault();
-    method public boolean isForceDarkAllowed();
-    method public boolean isHapticFeedbackEnabled();
-    method public boolean isHardwareAccelerated();
-    method public boolean isHorizontalFadingEdgeEnabled();
-    method public boolean isHorizontalScrollBarEnabled();
-    method public boolean isHovered();
-    method public boolean isImportantForAccessibility();
-    method public final boolean isImportantForAutofill();
-    method public final boolean isImportantForContentCapture();
-    method public boolean isInEditMode();
-    method public boolean isInLayout();
-    method public boolean isInTouchMode();
-    method public final boolean isKeyboardNavigationCluster();
-    method public boolean isLaidOut();
-    method public boolean isLayoutDirectionResolved();
-    method public boolean isLayoutRequested();
-    method public boolean isLongClickable();
-    method public boolean isNestedScrollingEnabled();
-    method public boolean isOpaque();
-    method protected boolean isPaddingOffsetRequired();
-    method public boolean isPaddingRelative();
-    method public boolean isPivotSet();
-    method public boolean isPressed();
-    method public boolean isSaveEnabled();
-    method public boolean isSaveFromParentEnabled();
-    method public boolean isScreenReaderFocusable();
-    method public boolean isScrollContainer();
-    method public boolean isScrollbarFadingEnabled();
-    method public boolean isSelected();
-    method public final boolean isShowingLayoutBounds();
-    method public boolean isShown();
-    method public boolean isSoundEffectsEnabled();
-    method public final boolean isTemporarilyDetached();
-    method public boolean isTextAlignmentResolved();
-    method public boolean isTextDirectionResolved();
-    method public boolean isVerticalFadingEdgeEnabled();
-    method public boolean isVerticalScrollBarEnabled();
-    method public boolean isVisibleToUserForAutofill(int);
-    method @CallSuper public void jumpDrawablesToCurrentState();
-    method public android.view.View keyboardNavigationClusterSearch(android.view.View, int);
-    method public void layout(int, int, int, int);
-    method public final void measure(int, int);
-    method protected static int[] mergeDrawableStates(int[], int[]);
-    method public void offsetLeftAndRight(int);
-    method public void offsetTopAndBottom(int);
-    method @CallSuper protected void onAnimationEnd();
-    method @CallSuper protected void onAnimationStart();
-    method public android.view.WindowInsets onApplyWindowInsets(android.view.WindowInsets);
-    method @CallSuper protected void onAttachedToWindow();
-    method public void onCancelPendingInputEvents();
-    method public boolean onCapturedPointerEvent(android.view.MotionEvent);
-    method public boolean onCheckIsTextEditor();
-    method protected void onConfigurationChanged(android.content.res.Configuration);
-    method protected void onCreateContextMenu(android.view.ContextMenu);
-    method protected int[] onCreateDrawableState(int);
-    method public android.view.inputmethod.InputConnection onCreateInputConnection(android.view.inputmethod.EditorInfo);
-    method @CallSuper protected void onDetachedFromWindow();
-    method protected void onDisplayHint(int);
-    method public boolean onDragEvent(android.view.DragEvent);
-    method protected void onDraw(android.graphics.Canvas);
-    method public void onDrawForeground(android.graphics.Canvas);
-    method protected final void onDrawScrollBars(android.graphics.Canvas);
-    method public boolean onFilterTouchEventForSecurity(android.view.MotionEvent);
-    method @CallSuper protected void onFinishInflate();
-    method public void onFinishTemporaryDetach();
-    method @CallSuper protected void onFocusChanged(boolean, int, @Nullable android.graphics.Rect);
-    method public boolean onGenericMotionEvent(android.view.MotionEvent);
-    method public void onHoverChanged(boolean);
-    method public boolean onHoverEvent(android.view.MotionEvent);
-    method @CallSuper public void onInitializeAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    method @CallSuper public void onInitializeAccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo);
-    method public boolean onKeyDown(int, android.view.KeyEvent);
-    method public boolean onKeyLongPress(int, android.view.KeyEvent);
-    method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
-    method public boolean onKeyPreIme(int, android.view.KeyEvent);
-    method public boolean onKeyShortcut(int, android.view.KeyEvent);
-    method public boolean onKeyUp(int, android.view.KeyEvent);
-    method protected void onLayout(boolean, int, int, int, int);
-    method protected void onMeasure(int, int);
-    method protected void onOverScrolled(int, int, boolean, boolean);
-    method @CallSuper public void onPointerCaptureChange(boolean);
-    method @CallSuper public void onPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    method public void onProvideAutofillStructure(android.view.ViewStructure, int);
-    method public void onProvideAutofillVirtualStructure(android.view.ViewStructure, int);
-    method public void onProvideContentCaptureStructure(@NonNull android.view.ViewStructure, int);
-    method public void onProvideStructure(android.view.ViewStructure);
-    method public void onProvideVirtualStructure(android.view.ViewStructure);
-    method public android.view.PointerIcon onResolvePointerIcon(android.view.MotionEvent, int);
-    method @CallSuper protected void onRestoreInstanceState(android.os.Parcelable);
-    method public void onRtlPropertiesChanged(int);
-    method @CallSuper @Nullable protected android.os.Parcelable onSaveInstanceState();
-    method public void onScreenStateChanged(int);
-    method protected void onScrollChanged(int, int, int, int);
-    method protected boolean onSetAlpha(int);
-    method protected void onSizeChanged(int, int, int, int);
-    method public void onStartTemporaryDetach();
-    method public boolean onTouchEvent(android.view.MotionEvent);
-    method public boolean onTrackballEvent(android.view.MotionEvent);
-    method @CallSuper public void onVisibilityAggregated(boolean);
-    method protected void onVisibilityChanged(@NonNull android.view.View, int);
-    method public void onWindowFocusChanged(boolean);
-    method @Deprecated public void onWindowSystemUiVisibilityChanged(int);
-    method protected void onWindowVisibilityChanged(int);
-    method protected boolean overScrollBy(int, int, int, int, int, int, int, int, boolean);
-    method public boolean performAccessibilityAction(int, android.os.Bundle);
-    method public boolean performClick();
-    method public boolean performContextClick(float, float);
-    method public boolean performContextClick();
-    method public boolean performHapticFeedback(int);
-    method public boolean performHapticFeedback(int, int);
-    method public boolean performLongClick();
-    method public boolean performLongClick(float, float);
-    method public void playSoundEffect(int);
-    method public boolean post(Runnable);
-    method public boolean postDelayed(Runnable, long);
-    method public void postInvalidate();
-    method public void postInvalidate(int, int, int, int);
-    method public void postInvalidateDelayed(long);
-    method public void postInvalidateDelayed(long, int, int, int, int);
-    method public void postInvalidateOnAnimation();
-    method public void postInvalidateOnAnimation(int, int, int, int);
-    method public void postOnAnimation(Runnable);
-    method public void postOnAnimationDelayed(Runnable, long);
-    method public void refreshDrawableState();
-    method public void releasePointerCapture();
-    method public boolean removeCallbacks(Runnable);
-    method public void removeOnAttachStateChangeListener(android.view.View.OnAttachStateChangeListener);
-    method public void removeOnLayoutChangeListener(android.view.View.OnLayoutChangeListener);
-    method public void removeOnUnhandledKeyEventListener(android.view.View.OnUnhandledKeyEventListener);
-    method public void requestApplyInsets();
-    method @Deprecated public void requestFitSystemWindows();
-    method public final boolean requestFocus();
-    method public final boolean requestFocus(int);
-    method public boolean requestFocus(int, android.graphics.Rect);
-    method public final boolean requestFocusFromTouch();
-    method @CallSuper public void requestLayout();
-    method public void requestPointerCapture();
-    method public boolean requestRectangleOnScreen(android.graphics.Rect);
-    method public boolean requestRectangleOnScreen(android.graphics.Rect, boolean);
-    method public final void requestUnbufferedDispatch(android.view.MotionEvent);
-    method public final void requestUnbufferedDispatch(int);
-    method @NonNull public final <T extends android.view.View> T requireViewById(@IdRes int);
-    method public void resetPivot();
-    method public static int resolveSize(int, int);
-    method public static int resolveSizeAndState(int, int, int);
-    method public boolean restoreDefaultFocus();
-    method public void restoreHierarchyState(android.util.SparseArray<android.os.Parcelable>);
-    method public final void saveAttributeDataForStyleable(@NonNull android.content.Context, @NonNull int[], @Nullable android.util.AttributeSet, @NonNull android.content.res.TypedArray, int, int);
-    method public void saveHierarchyState(android.util.SparseArray<android.os.Parcelable>);
-    method public void scheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable, long);
-    method public void scrollBy(int, int);
-    method public void scrollTo(int, int);
-    method public void sendAccessibilityEvent(int);
-    method public void sendAccessibilityEventUnchecked(android.view.accessibility.AccessibilityEvent);
-    method public void setAccessibilityDelegate(@Nullable android.view.View.AccessibilityDelegate);
-    method public void setAccessibilityHeading(boolean);
-    method public void setAccessibilityLiveRegion(int);
-    method public void setAccessibilityPaneTitle(@Nullable CharSequence);
-    method public void setAccessibilityTraversalAfter(@IdRes int);
-    method public void setAccessibilityTraversalBefore(@IdRes int);
-    method public void setActivated(boolean);
-    method public void setAlpha(@FloatRange(from=0.0, to=1.0) float);
-    method public void setAnimation(android.view.animation.Animation);
-    method public void setAnimationMatrix(@Nullable android.graphics.Matrix);
-    method public void setAutofillHints(@Nullable java.lang.String...);
-    method public void setAutofillId(@Nullable android.view.autofill.AutofillId);
-    method public void setBackground(android.graphics.drawable.Drawable);
-    method public void setBackgroundColor(@ColorInt int);
-    method @Deprecated public void setBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setBackgroundResource(@DrawableRes int);
-    method public void setBackgroundTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setBackgroundTintList(@Nullable android.content.res.ColorStateList);
-    method public void setBackgroundTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public final void setBottom(int);
-    method public void setCameraDistance(float);
-    method public void setClickable(boolean);
-    method public void setClipBounds(android.graphics.Rect);
-    method public void setClipToOutline(boolean);
-    method public void setContentCaptureSession(@Nullable android.view.contentcapture.ContentCaptureSession);
-    method public void setContentDescription(CharSequence);
-    method public void setContextClickable(boolean);
-    method public void setDefaultFocusHighlightEnabled(boolean);
-    method @Deprecated public void setDrawingCacheBackgroundColor(@ColorInt int);
-    method @Deprecated public void setDrawingCacheEnabled(boolean);
-    method @Deprecated public void setDrawingCacheQuality(int);
-    method public void setDuplicateParentStateEnabled(boolean);
-    method public void setElevation(float);
-    method public void setEnabled(boolean);
-    method public void setFadingEdgeLength(int);
-    method public void setFilterTouchesWhenObscured(boolean);
-    method public void setFitsSystemWindows(boolean);
-    method public void setFocusable(boolean);
-    method public void setFocusable(int);
-    method public void setFocusableInTouchMode(boolean);
-    method public void setFocusedByDefault(boolean);
-    method public void setForceDarkAllowed(boolean);
-    method public void setForeground(android.graphics.drawable.Drawable);
-    method public void setForegroundGravity(int);
-    method public void setForegroundTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setForegroundTintList(@Nullable android.content.res.ColorStateList);
-    method public void setForegroundTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public void setHapticFeedbackEnabled(boolean);
-    method public void setHasTransientState(boolean);
-    method public void setHorizontalFadingEdgeEnabled(boolean);
-    method public void setHorizontalScrollBarEnabled(boolean);
-    method public void setHorizontalScrollbarThumbDrawable(@Nullable android.graphics.drawable.Drawable);
-    method public void setHorizontalScrollbarTrackDrawable(@Nullable android.graphics.drawable.Drawable);
-    method public void setHovered(boolean);
-    method public void setId(@IdRes int);
-    method public void setImportantForAccessibility(int);
-    method public void setImportantForAutofill(int);
-    method public void setImportantForContentCapture(int);
-    method public void setKeepScreenOn(boolean);
-    method public void setKeyboardNavigationCluster(boolean);
-    method public void setLabelFor(@IdRes int);
-    method public void setLayerPaint(@Nullable android.graphics.Paint);
-    method public void setLayerType(int, @Nullable android.graphics.Paint);
-    method public void setLayoutDirection(int);
-    method public void setLayoutParams(android.view.ViewGroup.LayoutParams);
-    method public final void setLeft(int);
-    method public final void setLeftTopRightBottom(int, int, int, int);
-    method public void setLongClickable(boolean);
-    method protected final void setMeasuredDimension(int, int);
-    method public void setMinimumHeight(int);
-    method public void setMinimumWidth(int);
-    method public void setNestedScrollingEnabled(boolean);
-    method public void setNextClusterForwardId(@IdRes int);
-    method public void setNextFocusDownId(@IdRes int);
-    method public void setNextFocusForwardId(@IdRes int);
-    method public void setNextFocusLeftId(@IdRes int);
-    method public void setNextFocusRightId(@IdRes int);
-    method public void setNextFocusUpId(@IdRes int);
-    method public void setOnApplyWindowInsetsListener(android.view.View.OnApplyWindowInsetsListener);
-    method public void setOnCapturedPointerListener(android.view.View.OnCapturedPointerListener);
-    method public void setOnClickListener(@Nullable android.view.View.OnClickListener);
-    method public void setOnContextClickListener(@Nullable android.view.View.OnContextClickListener);
-    method public void setOnCreateContextMenuListener(android.view.View.OnCreateContextMenuListener);
-    method public void setOnDragListener(android.view.View.OnDragListener);
-    method public void setOnFocusChangeListener(android.view.View.OnFocusChangeListener);
-    method public void setOnGenericMotionListener(android.view.View.OnGenericMotionListener);
-    method public void setOnHoverListener(android.view.View.OnHoverListener);
-    method public void setOnKeyListener(android.view.View.OnKeyListener);
-    method public void setOnLongClickListener(@Nullable android.view.View.OnLongClickListener);
-    method public void setOnScrollChangeListener(android.view.View.OnScrollChangeListener);
-    method @Deprecated public void setOnSystemUiVisibilityChangeListener(android.view.View.OnSystemUiVisibilityChangeListener);
-    method public void setOnTouchListener(android.view.View.OnTouchListener);
-    method public void setOutlineAmbientShadowColor(@ColorInt int);
-    method public void setOutlineProvider(android.view.ViewOutlineProvider);
-    method public void setOutlineSpotShadowColor(@ColorInt int);
-    method public void setOverScrollMode(int);
-    method public void setPadding(int, int, int, int);
-    method public void setPaddingRelative(int, int, int, int);
-    method public void setPivotX(float);
-    method public void setPivotY(float);
-    method public void setPointerIcon(android.view.PointerIcon);
-    method public void setPressed(boolean);
-    method public final void setRevealOnFocusHint(boolean);
-    method public final void setRight(int);
-    method public void setRotation(float);
-    method public void setRotationX(float);
-    method public void setRotationY(float);
-    method public void setSaveEnabled(boolean);
-    method public void setSaveFromParentEnabled(boolean);
-    method public void setScaleX(float);
-    method public void setScaleY(float);
-    method public void setScreenReaderFocusable(boolean);
-    method public void setScrollBarDefaultDelayBeforeFade(int);
-    method public void setScrollBarFadeDuration(int);
-    method public void setScrollBarSize(int);
-    method public void setScrollBarStyle(int);
-    method public void setScrollContainer(boolean);
-    method public void setScrollIndicators(int);
-    method public void setScrollIndicators(int, int);
-    method public void setScrollX(int);
-    method public void setScrollY(int);
-    method public void setScrollbarFadingEnabled(boolean);
-    method public void setSelected(boolean);
-    method public void setSoundEffectsEnabled(boolean);
-    method public void setStateDescription(@Nullable CharSequence);
-    method public void setStateListAnimator(android.animation.StateListAnimator);
-    method public void setSystemGestureExclusionRects(@NonNull java.util.List<android.graphics.Rect>);
-    method @Deprecated public void setSystemUiVisibility(int);
-    method public void setTag(Object);
-    method public void setTag(int, Object);
-    method public void setTextAlignment(int);
-    method public void setTextDirection(int);
-    method public void setTooltipText(@Nullable CharSequence);
-    method public final void setTop(int);
-    method public void setTouchDelegate(android.view.TouchDelegate);
-    method public void setTransitionAlpha(float);
-    method public final void setTransitionName(String);
-    method public void setTransitionVisibility(int);
-    method public void setTranslationX(float);
-    method public void setTranslationY(float);
-    method public void setTranslationZ(float);
-    method public void setVerticalFadingEdgeEnabled(boolean);
-    method public void setVerticalScrollBarEnabled(boolean);
-    method public void setVerticalScrollbarPosition(int);
-    method public void setVerticalScrollbarThumbDrawable(@Nullable android.graphics.drawable.Drawable);
-    method public void setVerticalScrollbarTrackDrawable(@Nullable android.graphics.drawable.Drawable);
-    method public void setVisibility(int);
-    method @Deprecated public void setWillNotCacheDrawing(boolean);
-    method public void setWillNotDraw(boolean);
-    method public void setWindowInsetsAnimationCallback(@Nullable android.view.WindowInsetsAnimation.Callback);
-    method public void setX(float);
-    method public void setY(float);
-    method public void setZ(float);
-    method public boolean showContextMenu();
-    method public boolean showContextMenu(float, float);
-    method public android.view.ActionMode startActionMode(android.view.ActionMode.Callback);
-    method public android.view.ActionMode startActionMode(android.view.ActionMode.Callback, int);
-    method public void startAnimation(android.view.animation.Animation);
-    method @Deprecated public final boolean startDrag(android.content.ClipData, android.view.View.DragShadowBuilder, Object, int);
-    method public final boolean startDragAndDrop(android.content.ClipData, android.view.View.DragShadowBuilder, Object, int);
-    method public boolean startNestedScroll(int);
-    method public void stopNestedScroll();
-    method public void transformMatrixToGlobal(@NonNull android.graphics.Matrix);
-    method public void transformMatrixToLocal(@NonNull android.graphics.Matrix);
-    method public void unscheduleDrawable(@NonNull android.graphics.drawable.Drawable, @NonNull Runnable);
-    method public void unscheduleDrawable(android.graphics.drawable.Drawable);
-    method public final void updateDragShadow(android.view.View.DragShadowBuilder);
-    method @CallSuper protected boolean verifyDrawable(@NonNull android.graphics.drawable.Drawable);
-    method @Deprecated public boolean willNotCacheDrawing();
-    method public boolean willNotDraw();
-    field public static final int ACCESSIBILITY_LIVE_REGION_ASSERTIVE = 2; // 0x2
-    field public static final int ACCESSIBILITY_LIVE_REGION_NONE = 0; // 0x0
-    field public static final int ACCESSIBILITY_LIVE_REGION_POLITE = 1; // 0x1
-    field public static final android.util.Property<android.view.View,java.lang.Float> ALPHA;
-    field public static final int AUTOFILL_FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 1; // 0x1
-    field public static final String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE = "creditCardExpirationDate";
-    field public static final String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DAY = "creditCardExpirationDay";
-    field public static final String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH = "creditCardExpirationMonth";
-    field public static final String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR = "creditCardExpirationYear";
-    field public static final String AUTOFILL_HINT_CREDIT_CARD_NUMBER = "creditCardNumber";
-    field public static final String AUTOFILL_HINT_CREDIT_CARD_SECURITY_CODE = "creditCardSecurityCode";
-    field public static final String AUTOFILL_HINT_EMAIL_ADDRESS = "emailAddress";
-    field public static final String AUTOFILL_HINT_NAME = "name";
-    field public static final String AUTOFILL_HINT_PASSWORD = "password";
-    field public static final String AUTOFILL_HINT_PHONE = "phone";
-    field public static final String AUTOFILL_HINT_POSTAL_ADDRESS = "postalAddress";
-    field public static final String AUTOFILL_HINT_POSTAL_CODE = "postalCode";
-    field public static final String AUTOFILL_HINT_USERNAME = "username";
-    field public static final int AUTOFILL_TYPE_DATE = 4; // 0x4
-    field public static final int AUTOFILL_TYPE_LIST = 3; // 0x3
-    field public static final int AUTOFILL_TYPE_NONE = 0; // 0x0
-    field public static final int AUTOFILL_TYPE_TEXT = 1; // 0x1
-    field public static final int AUTOFILL_TYPE_TOGGLE = 2; // 0x2
-    field public static final int DRAG_FLAG_GLOBAL = 256; // 0x100
-    field public static final int DRAG_FLAG_GLOBAL_PERSISTABLE_URI_PERMISSION = 64; // 0x40
-    field public static final int DRAG_FLAG_GLOBAL_PREFIX_URI_PERMISSION = 128; // 0x80
-    field public static final int DRAG_FLAG_GLOBAL_URI_READ = 1; // 0x1
-    field public static final int DRAG_FLAG_GLOBAL_URI_WRITE = 2; // 0x2
-    field public static final int DRAG_FLAG_OPAQUE = 512; // 0x200
-    field @Deprecated public static final int DRAWING_CACHE_QUALITY_AUTO = 0; // 0x0
-    field @Deprecated public static final int DRAWING_CACHE_QUALITY_HIGH = 1048576; // 0x100000
-    field @Deprecated public static final int DRAWING_CACHE_QUALITY_LOW = 524288; // 0x80000
-    field protected static final int[] EMPTY_STATE_SET;
-    field protected static final int[] ENABLED_FOCUSED_SELECTED_STATE_SET;
-    field protected static final int[] ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
-    field protected static final int[] ENABLED_FOCUSED_STATE_SET;
-    field protected static final int[] ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET;
-    field protected static final int[] ENABLED_SELECTED_STATE_SET;
-    field protected static final int[] ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET;
-    field protected static final int[] ENABLED_STATE_SET;
-    field protected static final int[] ENABLED_WINDOW_FOCUSED_STATE_SET;
-    field public static final int FIND_VIEWS_WITH_CONTENT_DESCRIPTION = 2; // 0x2
-    field public static final int FIND_VIEWS_WITH_TEXT = 1; // 0x1
-    field public static final int FOCUSABLE = 1; // 0x1
-    field public static final int FOCUSABLES_ALL = 0; // 0x0
-    field public static final int FOCUSABLES_TOUCH_MODE = 1; // 0x1
-    field public static final int FOCUSABLE_AUTO = 16; // 0x10
-    field protected static final int[] FOCUSED_SELECTED_STATE_SET;
-    field protected static final int[] FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
-    field protected static final int[] FOCUSED_STATE_SET;
-    field protected static final int[] FOCUSED_WINDOW_FOCUSED_STATE_SET;
-    field public static final int FOCUS_BACKWARD = 1; // 0x1
-    field public static final int FOCUS_DOWN = 130; // 0x82
-    field public static final int FOCUS_FORWARD = 2; // 0x2
-    field public static final int FOCUS_LEFT = 17; // 0x11
-    field public static final int FOCUS_RIGHT = 66; // 0x42
-    field public static final int FOCUS_UP = 33; // 0x21
-    field public static final int GONE = 8; // 0x8
-    field public static final int HAPTIC_FEEDBACK_ENABLED = 268435456; // 0x10000000
-    field public static final int IMPORTANT_FOR_ACCESSIBILITY_AUTO = 0; // 0x0
-    field public static final int IMPORTANT_FOR_ACCESSIBILITY_NO = 2; // 0x2
-    field public static final int IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS = 4; // 0x4
-    field public static final int IMPORTANT_FOR_ACCESSIBILITY_YES = 1; // 0x1
-    field public static final int IMPORTANT_FOR_AUTOFILL_AUTO = 0; // 0x0
-    field public static final int IMPORTANT_FOR_AUTOFILL_NO = 2; // 0x2
-    field public static final int IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS = 8; // 0x8
-    field public static final int IMPORTANT_FOR_AUTOFILL_YES = 1; // 0x1
-    field public static final int IMPORTANT_FOR_AUTOFILL_YES_EXCLUDE_DESCENDANTS = 4; // 0x4
-    field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_AUTO = 0; // 0x0
-    field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_NO = 2; // 0x2
-    field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS = 8; // 0x8
-    field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_YES = 1; // 0x1
-    field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS = 4; // 0x4
-    field public static final int INVISIBLE = 4; // 0x4
-    field public static final int KEEP_SCREEN_ON = 67108864; // 0x4000000
-    field public static final int LAYER_TYPE_HARDWARE = 2; // 0x2
-    field public static final int LAYER_TYPE_NONE = 0; // 0x0
-    field public static final int LAYER_TYPE_SOFTWARE = 1; // 0x1
-    field public static final int LAYOUT_DIRECTION_INHERIT = 2; // 0x2
-    field public static final int LAYOUT_DIRECTION_LOCALE = 3; // 0x3
-    field public static final int LAYOUT_DIRECTION_LTR = 0; // 0x0
-    field public static final int LAYOUT_DIRECTION_RTL = 1; // 0x1
-    field public static final int MEASURED_HEIGHT_STATE_SHIFT = 16; // 0x10
-    field public static final int MEASURED_SIZE_MASK = 16777215; // 0xffffff
-    field public static final int MEASURED_STATE_MASK = -16777216; // 0xff000000
-    field public static final int MEASURED_STATE_TOO_SMALL = 16777216; // 0x1000000
-    field public static final int NOT_FOCUSABLE = 0; // 0x0
-    field public static final int NO_ID = -1; // 0xffffffff
-    field public static final int OVER_SCROLL_ALWAYS = 0; // 0x0
-    field public static final int OVER_SCROLL_IF_CONTENT_SCROLLS = 1; // 0x1
-    field public static final int OVER_SCROLL_NEVER = 2; // 0x2
-    field protected static final int[] PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET;
-    field protected static final int[] PRESSED_ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
-    field protected static final int[] PRESSED_ENABLED_FOCUSED_STATE_SET;
-    field protected static final int[] PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET;
-    field protected static final int[] PRESSED_ENABLED_SELECTED_STATE_SET;
-    field protected static final int[] PRESSED_ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET;
-    field protected static final int[] PRESSED_ENABLED_STATE_SET;
-    field protected static final int[] PRESSED_ENABLED_WINDOW_FOCUSED_STATE_SET;
-    field protected static final int[] PRESSED_FOCUSED_SELECTED_STATE_SET;
-    field protected static final int[] PRESSED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
-    field protected static final int[] PRESSED_FOCUSED_STATE_SET;
-    field protected static final int[] PRESSED_FOCUSED_WINDOW_FOCUSED_STATE_SET;
-    field protected static final int[] PRESSED_SELECTED_STATE_SET;
-    field protected static final int[] PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
-    field protected static final int[] PRESSED_STATE_SET;
-    field protected static final int[] PRESSED_WINDOW_FOCUSED_STATE_SET;
-    field public static final android.util.Property<android.view.View,java.lang.Float> ROTATION;
-    field public static final android.util.Property<android.view.View,java.lang.Float> ROTATION_X;
-    field public static final android.util.Property<android.view.View,java.lang.Float> ROTATION_Y;
-    field public static final android.util.Property<android.view.View,java.lang.Float> SCALE_X;
-    field public static final android.util.Property<android.view.View,java.lang.Float> SCALE_Y;
-    field public static final int SCREEN_STATE_OFF = 0; // 0x0
-    field public static final int SCREEN_STATE_ON = 1; // 0x1
-    field public static final int SCROLLBARS_INSIDE_INSET = 16777216; // 0x1000000
-    field public static final int SCROLLBARS_INSIDE_OVERLAY = 0; // 0x0
-    field public static final int SCROLLBARS_OUTSIDE_INSET = 50331648; // 0x3000000
-    field public static final int SCROLLBARS_OUTSIDE_OVERLAY = 33554432; // 0x2000000
-    field public static final int SCROLLBAR_POSITION_DEFAULT = 0; // 0x0
-    field public static final int SCROLLBAR_POSITION_LEFT = 1; // 0x1
-    field public static final int SCROLLBAR_POSITION_RIGHT = 2; // 0x2
-    field public static final int SCROLL_AXIS_HORIZONTAL = 1; // 0x1
-    field public static final int SCROLL_AXIS_NONE = 0; // 0x0
-    field public static final int SCROLL_AXIS_VERTICAL = 2; // 0x2
-    field public static final int SCROLL_INDICATOR_BOTTOM = 2; // 0x2
-    field public static final int SCROLL_INDICATOR_END = 32; // 0x20
-    field public static final int SCROLL_INDICATOR_LEFT = 4; // 0x4
-    field public static final int SCROLL_INDICATOR_RIGHT = 8; // 0x8
-    field public static final int SCROLL_INDICATOR_START = 16; // 0x10
-    field public static final int SCROLL_INDICATOR_TOP = 1; // 0x1
-    field protected static final int[] SELECTED_STATE_SET;
-    field protected static final int[] SELECTED_WINDOW_FOCUSED_STATE_SET;
-    field public static final int SOUND_EFFECTS_ENABLED = 134217728; // 0x8000000
-    field @Deprecated public static final int STATUS_BAR_HIDDEN = 1; // 0x1
-    field @Deprecated public static final int STATUS_BAR_VISIBLE = 0; // 0x0
-    field @Deprecated public static final int SYSTEM_UI_FLAG_FULLSCREEN = 4; // 0x4
-    field @Deprecated public static final int SYSTEM_UI_FLAG_HIDE_NAVIGATION = 2; // 0x2
-    field @Deprecated public static final int SYSTEM_UI_FLAG_IMMERSIVE = 2048; // 0x800
-    field @Deprecated public static final int SYSTEM_UI_FLAG_IMMERSIVE_STICKY = 4096; // 0x1000
-    field @Deprecated public static final int SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN = 1024; // 0x400
-    field @Deprecated public static final int SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION = 512; // 0x200
-    field @Deprecated public static final int SYSTEM_UI_FLAG_LAYOUT_STABLE = 256; // 0x100
-    field @Deprecated public static final int SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR = 16; // 0x10
-    field @Deprecated public static final int SYSTEM_UI_FLAG_LIGHT_STATUS_BAR = 8192; // 0x2000
-    field @Deprecated public static final int SYSTEM_UI_FLAG_LOW_PROFILE = 1; // 0x1
-    field @Deprecated public static final int SYSTEM_UI_FLAG_VISIBLE = 0; // 0x0
-    field @Deprecated public static final int SYSTEM_UI_LAYOUT_FLAGS = 1536; // 0x600
-    field public static final int TEXT_ALIGNMENT_CENTER = 4; // 0x4
-    field public static final int TEXT_ALIGNMENT_GRAVITY = 1; // 0x1
-    field public static final int TEXT_ALIGNMENT_INHERIT = 0; // 0x0
-    field public static final int TEXT_ALIGNMENT_TEXT_END = 3; // 0x3
-    field public static final int TEXT_ALIGNMENT_TEXT_START = 2; // 0x2
-    field public static final int TEXT_ALIGNMENT_VIEW_END = 6; // 0x6
-    field public static final int TEXT_ALIGNMENT_VIEW_START = 5; // 0x5
-    field public static final int TEXT_DIRECTION_ANY_RTL = 2; // 0x2
-    field public static final int TEXT_DIRECTION_FIRST_STRONG = 1; // 0x1
-    field public static final int TEXT_DIRECTION_FIRST_STRONG_LTR = 6; // 0x6
-    field public static final int TEXT_DIRECTION_FIRST_STRONG_RTL = 7; // 0x7
-    field public static final int TEXT_DIRECTION_INHERIT = 0; // 0x0
-    field public static final int TEXT_DIRECTION_LOCALE = 5; // 0x5
-    field public static final int TEXT_DIRECTION_LTR = 3; // 0x3
-    field public static final int TEXT_DIRECTION_RTL = 4; // 0x4
-    field public static final android.util.Property<android.view.View,java.lang.Float> TRANSLATION_X;
-    field public static final android.util.Property<android.view.View,java.lang.Float> TRANSLATION_Y;
-    field public static final android.util.Property<android.view.View,java.lang.Float> TRANSLATION_Z;
-    field protected static final String VIEW_LOG_TAG = "View";
-    field public static final int VISIBLE = 0; // 0x0
-    field protected static final int[] WINDOW_FOCUSED_STATE_SET;
-    field public static final android.util.Property<android.view.View,java.lang.Float> X;
-    field public static final android.util.Property<android.view.View,java.lang.Float> Y;
-    field public static final android.util.Property<android.view.View,java.lang.Float> Z;
-  }
-
-  public static class View.AccessibilityDelegate {
-    ctor public View.AccessibilityDelegate();
-    method public void addExtraDataToAccessibilityNodeInfo(@NonNull android.view.View, @NonNull android.view.accessibility.AccessibilityNodeInfo, @NonNull String, @Nullable android.os.Bundle);
-    method public boolean dispatchPopulateAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
-    method public android.view.accessibility.AccessibilityNodeProvider getAccessibilityNodeProvider(android.view.View);
-    method public void onInitializeAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
-    method public void onInitializeAccessibilityNodeInfo(android.view.View, android.view.accessibility.AccessibilityNodeInfo);
-    method public void onPopulateAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
-    method public boolean onRequestSendAccessibilityEvent(android.view.ViewGroup, android.view.View, android.view.accessibility.AccessibilityEvent);
-    method public boolean performAccessibilityAction(android.view.View, int, android.os.Bundle);
-    method public void sendAccessibilityEvent(android.view.View, int);
-    method public void sendAccessibilityEventUnchecked(android.view.View, android.view.accessibility.AccessibilityEvent);
-  }
-
-  public static class View.BaseSavedState extends android.view.AbsSavedState {
-    ctor public View.BaseSavedState(android.os.Parcel);
-    ctor public View.BaseSavedState(android.os.Parcel, ClassLoader);
-    ctor public View.BaseSavedState(android.os.Parcelable);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.View.BaseSavedState> CREATOR;
-  }
-
-  public static class View.DragShadowBuilder {
-    ctor public View.DragShadowBuilder(android.view.View);
-    ctor public View.DragShadowBuilder();
-    method public final android.view.View getView();
-    method public void onDrawShadow(android.graphics.Canvas);
-    method public void onProvideShadowMetrics(android.graphics.Point, android.graphics.Point);
-  }
-
-  public static class View.MeasureSpec {
-    ctor public View.MeasureSpec();
-    method public static int getMode(int);
-    method public static int getSize(int);
-    method public static int makeMeasureSpec(@IntRange(from=0, to=0x40000000 - 1) int, int);
-    method public static String toString(int);
-    field public static final int AT_MOST = -2147483648; // 0x80000000
-    field public static final int EXACTLY = 1073741824; // 0x40000000
-    field public static final int UNSPECIFIED = 0; // 0x0
-  }
-
-  public static interface View.OnApplyWindowInsetsListener {
-    method public android.view.WindowInsets onApplyWindowInsets(android.view.View, android.view.WindowInsets);
-  }
-
-  public static interface View.OnAttachStateChangeListener {
-    method public void onViewAttachedToWindow(android.view.View);
-    method public void onViewDetachedFromWindow(android.view.View);
-  }
-
-  public static interface View.OnCapturedPointerListener {
-    method public boolean onCapturedPointer(android.view.View, android.view.MotionEvent);
-  }
-
-  public static interface View.OnClickListener {
-    method public void onClick(android.view.View);
-  }
-
-  public static interface View.OnContextClickListener {
-    method public boolean onContextClick(android.view.View);
-  }
-
-  public static interface View.OnCreateContextMenuListener {
-    method public void onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo);
-  }
-
-  public static interface View.OnDragListener {
-    method public boolean onDrag(android.view.View, android.view.DragEvent);
-  }
-
-  public static interface View.OnFocusChangeListener {
-    method public void onFocusChange(android.view.View, boolean);
-  }
-
-  public static interface View.OnGenericMotionListener {
-    method public boolean onGenericMotion(android.view.View, android.view.MotionEvent);
-  }
-
-  public static interface View.OnHoverListener {
-    method public boolean onHover(android.view.View, android.view.MotionEvent);
-  }
-
-  public static interface View.OnKeyListener {
-    method public boolean onKey(android.view.View, int, android.view.KeyEvent);
-  }
-
-  public static interface View.OnLayoutChangeListener {
-    method public void onLayoutChange(android.view.View, int, int, int, int, int, int, int, int);
-  }
-
-  public static interface View.OnLongClickListener {
-    method public boolean onLongClick(android.view.View);
-  }
-
-  public static interface View.OnScrollChangeListener {
-    method public void onScrollChange(android.view.View, int, int, int, int);
-  }
-
-  @Deprecated public static interface View.OnSystemUiVisibilityChangeListener {
-    method @Deprecated public void onSystemUiVisibilityChange(int);
-  }
-
-  public static interface View.OnTouchListener {
-    method public boolean onTouch(android.view.View, android.view.MotionEvent);
-  }
-
-  public static interface View.OnUnhandledKeyEventListener {
-    method public boolean onUnhandledKeyEvent(android.view.View, android.view.KeyEvent);
-  }
-
-  public final class ViewAnimationUtils {
-    method public static android.animation.Animator createCircularReveal(android.view.View, int, int, float, float);
-  }
-
-  public class ViewConfiguration {
-    ctor @Deprecated public ViewConfiguration();
-    method public static android.view.ViewConfiguration get(android.content.Context);
-    method @Deprecated @FloatRange(from=1.0) public static float getAmbiguousGestureMultiplier();
-    method public static long getDefaultActionModeHideDuration();
-    method public static int getDoubleTapTimeout();
-    method @Deprecated public static int getEdgeSlop();
-    method @Deprecated public static int getFadingEdgeLength();
-    method @Deprecated public static long getGlobalActionKeyTimeout();
-    method public static int getJumpTapTimeout();
-    method public static int getKeyRepeatDelay();
-    method public static int getKeyRepeatTimeout();
-    method public static int getLongPressTimeout();
-    method @Deprecated public static int getMaximumDrawingCacheSize();
-    method @Deprecated public static int getMaximumFlingVelocity();
-    method @Deprecated public static int getMinimumFlingVelocity();
-    method public static int getPressedStateDuration();
-    method @FloatRange(from=1.0) public float getScaledAmbiguousGestureMultiplier();
-    method public int getScaledDoubleTapSlop();
-    method public int getScaledEdgeSlop();
-    method public int getScaledFadingEdgeLength();
-    method public float getScaledHorizontalScrollFactor();
-    method public int getScaledHoverSlop();
-    method public int getScaledMaximumDrawingCacheSize();
-    method public int getScaledMaximumFlingVelocity();
-    method public int getScaledMinimumFlingVelocity();
-    method public int getScaledMinimumScalingSpan();
-    method public int getScaledOverflingDistance();
-    method public int getScaledOverscrollDistance();
-    method public int getScaledPagingTouchSlop();
-    method public int getScaledScrollBarSize();
-    method public int getScaledTouchSlop();
-    method public float getScaledVerticalScrollFactor();
-    method public int getScaledWindowTouchSlop();
-    method public static int getScrollBarFadeDuration();
-    method @Deprecated public static int getScrollBarSize();
-    method public static int getScrollDefaultDelay();
-    method public static float getScrollFriction();
-    method public static int getTapTimeout();
-    method @Deprecated public static int getTouchSlop();
-    method @Deprecated public static int getWindowTouchSlop();
-    method public static long getZoomControlsTimeout();
-    method public boolean hasPermanentMenuKey();
-    method public boolean shouldShowMenuShortcutsWhenKeyboardPresent();
-  }
-
-  public class ViewDebug {
-    ctor public ViewDebug();
-    method public static void dumpCapturedView(String, Object);
-    method @Deprecated public static void startHierarchyTracing(String, android.view.View);
-    method @Deprecated public static void startRecyclerTracing(String, android.view.View);
-    method @Deprecated public static void stopHierarchyTracing();
-    method @Deprecated public static void stopRecyclerTracing();
-    method @Deprecated public static void trace(android.view.View, android.view.ViewDebug.RecyclerTraceType, int...);
-    method @Deprecated public static void trace(android.view.View, android.view.ViewDebug.HierarchyTraceType);
-    field @Deprecated public static final boolean TRACE_HIERARCHY = false;
-    field @Deprecated public static final boolean TRACE_RECYCLER = false;
-  }
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD}) public static @interface ViewDebug.CapturedViewProperty {
-    method public abstract boolean retrieveReturn() default false;
-  }
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD}) public static @interface ViewDebug.ExportedProperty {
-    method public abstract String category() default "";
-    method public abstract boolean deepExport() default false;
-    method public abstract android.view.ViewDebug.FlagToString[] flagMapping() default {};
-    method public abstract boolean formatToHexString() default false;
-    method public abstract boolean hasAdjacentMapping() default false;
-    method public abstract android.view.ViewDebug.IntToString[] indexMapping() default {};
-    method public abstract android.view.ViewDebug.IntToString[] mapping() default {};
-    method public abstract String prefix() default "";
-    method public abstract boolean resolveId() default false;
-  }
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE}) public static @interface ViewDebug.FlagToString {
-    method public abstract int equals();
-    method public abstract int mask();
-    method public abstract String name();
-    method public abstract boolean outputIf() default true;
-  }
-
-  @Deprecated public enum ViewDebug.HierarchyTraceType {
-    enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType BUILD_CACHE;
-    enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType DRAW;
-    enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType INVALIDATE;
-    enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType INVALIDATE_CHILD;
-    enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType INVALIDATE_CHILD_IN_PARENT;
-    enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType ON_LAYOUT;
-    enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType ON_MEASURE;
-    enum_constant @Deprecated public static final android.view.ViewDebug.HierarchyTraceType REQUEST_LAYOUT;
-  }
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE}) public static @interface ViewDebug.IntToString {
-    method public abstract int from();
-    method public abstract String to();
-  }
-
-  @Deprecated public enum ViewDebug.RecyclerTraceType {
-    enum_constant @Deprecated public static final android.view.ViewDebug.RecyclerTraceType BIND_VIEW;
-    enum_constant @Deprecated public static final android.view.ViewDebug.RecyclerTraceType MOVE_FROM_ACTIVE_TO_SCRAP_HEAP;
-    enum_constant @Deprecated public static final android.view.ViewDebug.RecyclerTraceType MOVE_TO_SCRAP_HEAP;
-    enum_constant @Deprecated public static final android.view.ViewDebug.RecyclerTraceType NEW_VIEW;
-    enum_constant @Deprecated public static final android.view.ViewDebug.RecyclerTraceType RECYCLE_FROM_ACTIVE_HEAP;
-    enum_constant @Deprecated public static final android.view.ViewDebug.RecyclerTraceType RECYCLE_FROM_SCRAP_HEAP;
-  }
-
-  @UiThread public abstract class ViewGroup extends android.view.View implements android.view.ViewManager android.view.ViewParent {
-    ctor public ViewGroup(android.content.Context);
-    ctor public ViewGroup(android.content.Context, android.util.AttributeSet);
-    ctor public ViewGroup(android.content.Context, android.util.AttributeSet, int);
-    ctor public ViewGroup(android.content.Context, android.util.AttributeSet, int, int);
-    method public boolean addStatesFromChildren();
-    method public void addView(android.view.View);
-    method public void addView(android.view.View, int);
-    method public void addView(android.view.View, int, int);
-    method public void addView(android.view.View, android.view.ViewGroup.LayoutParams);
-    method public void addView(android.view.View, int, android.view.ViewGroup.LayoutParams);
-    method protected boolean addViewInLayout(android.view.View, int, android.view.ViewGroup.LayoutParams);
-    method protected boolean addViewInLayout(android.view.View, int, android.view.ViewGroup.LayoutParams, boolean);
-    method protected void attachLayoutAnimationParameters(android.view.View, android.view.ViewGroup.LayoutParams, int, int);
-    method protected void attachViewToParent(android.view.View, int, android.view.ViewGroup.LayoutParams);
-    method public void bringChildToFront(android.view.View);
-    method protected boolean canAnimate();
-    method protected boolean checkLayoutParams(android.view.ViewGroup.LayoutParams);
-    method public void childDrawableStateChanged(android.view.View);
-    method public void childHasTransientStateChanged(android.view.View, boolean);
-    method protected void cleanupLayoutState(android.view.View);
-    method public void clearChildFocus(android.view.View);
-    method public void clearDisappearingChildren();
-    method protected void debug(int);
-    method protected void detachAllViewsFromParent();
-    method protected void detachViewFromParent(android.view.View);
-    method protected void detachViewFromParent(int);
-    method protected void detachViewsFromParent(int, int);
-    method protected void dispatchFreezeSelfOnly(android.util.SparseArray<android.os.Parcelable>);
-    method public void dispatchSetActivated(boolean);
-    method public void dispatchSetSelected(boolean);
-    method protected void dispatchThawSelfOnly(android.util.SparseArray<android.os.Parcelable>);
-    method protected boolean drawChild(android.graphics.Canvas, android.view.View, long);
-    method public void endViewTransition(android.view.View);
-    method public android.view.View focusSearch(android.view.View, int);
-    method public void focusableViewAvailable(android.view.View);
-    method public boolean gatherTransparentRegion(android.graphics.Region);
-    method protected android.view.ViewGroup.LayoutParams generateDefaultLayoutParams();
-    method public android.view.ViewGroup.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method protected android.view.ViewGroup.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams);
-    method public android.view.View getChildAt(int);
-    method public int getChildCount();
-    method protected int getChildDrawingOrder(int, int);
-    method public final int getChildDrawingOrder(int);
-    method public static int getChildMeasureSpec(int, int, int);
-    method protected boolean getChildStaticTransformation(android.view.View, android.view.animation.Transformation);
-    method public boolean getChildVisibleRect(android.view.View, android.graphics.Rect, android.graphics.Point);
-    method public boolean getClipChildren();
-    method public boolean getClipToPadding();
-    method public int getDescendantFocusability();
-    method public android.view.View getFocusedChild();
-    method public android.view.animation.LayoutAnimationController getLayoutAnimation();
-    method public android.view.animation.Animation.AnimationListener getLayoutAnimationListener();
-    method public int getLayoutMode();
-    method public android.animation.LayoutTransition getLayoutTransition();
-    method public int getNestedScrollAxes();
-    method public android.view.ViewGroupOverlay getOverlay();
-    method @Deprecated public int getPersistentDrawingCache();
-    method public boolean getTouchscreenBlocksFocus();
-    method public int indexOfChild(android.view.View);
-    method @Deprecated public final void invalidateChild(android.view.View, android.graphics.Rect);
-    method @Deprecated public android.view.ViewParent invalidateChildInParent(int[], android.graphics.Rect);
-    method @Deprecated public boolean isAlwaysDrawnWithCacheEnabled();
-    method @Deprecated public boolean isAnimationCacheEnabled();
-    method protected boolean isChildrenDrawingOrderEnabled();
-    method @Deprecated protected boolean isChildrenDrawnWithCacheEnabled();
-    method public boolean isLayoutSuppressed();
-    method public boolean isMotionEventSplittingEnabled();
-    method public boolean isTransitionGroup();
-    method public final void layout(int, int, int, int);
-    method protected void measureChild(android.view.View, int, int);
-    method protected void measureChildWithMargins(android.view.View, int, int, int, int);
-    method protected void measureChildren(int, int);
-    method public void notifySubtreeAccessibilityStateChanged(android.view.View, android.view.View, int);
-    method public final void offsetDescendantRectToMyCoords(android.view.View, android.graphics.Rect);
-    method public final void offsetRectIntoDescendantCoords(android.view.View, android.graphics.Rect);
-    method public boolean onInterceptHoverEvent(android.view.MotionEvent);
-    method public boolean onInterceptTouchEvent(android.view.MotionEvent);
-    method protected abstract void onLayout(boolean, int, int, int, int);
-    method public boolean onNestedFling(android.view.View, float, float, boolean);
-    method public boolean onNestedPreFling(android.view.View, float, float);
-    method public boolean onNestedPrePerformAccessibilityAction(android.view.View, int, android.os.Bundle);
-    method public void onNestedPreScroll(android.view.View, int, int, int[]);
-    method public void onNestedScroll(android.view.View, int, int, int, int);
-    method public void onNestedScrollAccepted(android.view.View, android.view.View, int);
-    method protected boolean onRequestFocusInDescendants(int, android.graphics.Rect);
-    method public boolean onRequestSendAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
-    method public boolean onStartNestedScroll(android.view.View, android.view.View, int);
-    method public void onStopNestedScroll(android.view.View);
-    method public void onViewAdded(android.view.View);
-    method public void onViewRemoved(android.view.View);
-    method public void recomputeViewAttributes(android.view.View);
-    method public void removeAllViews();
-    method public void removeAllViewsInLayout();
-    method protected void removeDetachedView(android.view.View, boolean);
-    method public void removeView(android.view.View);
-    method public void removeViewAt(int);
-    method public void removeViewInLayout(android.view.View);
-    method public void removeViews(int, int);
-    method public void removeViewsInLayout(int, int);
-    method public void requestChildFocus(android.view.View, android.view.View);
-    method public boolean requestChildRectangleOnScreen(android.view.View, android.graphics.Rect, boolean);
-    method public void requestDisallowInterceptTouchEvent(boolean);
-    method public boolean requestSendAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
-    method public void requestTransparentRegion(android.view.View);
-    method public void scheduleLayoutAnimation();
-    method public void setAddStatesFromChildren(boolean);
-    method @Deprecated public void setAlwaysDrawnWithCacheEnabled(boolean);
-    method @Deprecated public void setAnimationCacheEnabled(boolean);
-    method @Deprecated protected void setChildrenDrawingCacheEnabled(boolean);
-    method protected void setChildrenDrawingOrderEnabled(boolean);
-    method @Deprecated protected void setChildrenDrawnWithCacheEnabled(boolean);
-    method public void setClipChildren(boolean);
-    method public void setClipToPadding(boolean);
-    method public void setDescendantFocusability(int);
-    method public void setLayoutAnimation(android.view.animation.LayoutAnimationController);
-    method public void setLayoutAnimationListener(android.view.animation.Animation.AnimationListener);
-    method public void setLayoutMode(int);
-    method public void setLayoutTransition(android.animation.LayoutTransition);
-    method public void setMotionEventSplittingEnabled(boolean);
-    method public void setOnHierarchyChangeListener(android.view.ViewGroup.OnHierarchyChangeListener);
-    method @Deprecated public void setPersistentDrawingCache(int);
-    method protected void setStaticTransformationsEnabled(boolean);
-    method public void setTouchscreenBlocksFocus(boolean);
-    method public void setTransitionGroup(boolean);
-    method public boolean shouldDelayChildPressedState();
-    method public boolean showContextMenuForChild(android.view.View);
-    method public boolean showContextMenuForChild(android.view.View, float, float);
-    method public android.view.ActionMode startActionModeForChild(android.view.View, android.view.ActionMode.Callback);
-    method public android.view.ActionMode startActionModeForChild(android.view.View, android.view.ActionMode.Callback, int);
-    method public void startLayoutAnimation();
-    method public void startViewTransition(android.view.View);
-    method public void suppressLayout(boolean);
-    method public void updateViewLayout(android.view.View, android.view.ViewGroup.LayoutParams);
-    field protected static final int CLIP_TO_PADDING_MASK = 34; // 0x22
-    field public static final int FOCUS_AFTER_DESCENDANTS = 262144; // 0x40000
-    field public static final int FOCUS_BEFORE_DESCENDANTS = 131072; // 0x20000
-    field public static final int FOCUS_BLOCK_DESCENDANTS = 393216; // 0x60000
-    field public static final int LAYOUT_MODE_CLIP_BOUNDS = 0; // 0x0
-    field public static final int LAYOUT_MODE_OPTICAL_BOUNDS = 1; // 0x1
-    field @Deprecated public static final int PERSISTENT_ALL_CACHES = 3; // 0x3
-    field @Deprecated public static final int PERSISTENT_ANIMATION_CACHE = 1; // 0x1
-    field @Deprecated public static final int PERSISTENT_NO_CACHE = 0; // 0x0
-    field @Deprecated public static final int PERSISTENT_SCROLLING_CACHE = 2; // 0x2
-  }
-
-  public static class ViewGroup.LayoutParams {
-    ctor public ViewGroup.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public ViewGroup.LayoutParams(int, int);
-    ctor public ViewGroup.LayoutParams(android.view.ViewGroup.LayoutParams);
-    method public void resolveLayoutDirection(int);
-    method protected void setBaseAttributes(android.content.res.TypedArray, int, int);
-    field @Deprecated public static final int FILL_PARENT = -1; // 0xffffffff
-    field public static final int MATCH_PARENT = -1; // 0xffffffff
-    field public static final int WRAP_CONTENT = -2; // 0xfffffffe
-    field public int height;
-    field public android.view.animation.LayoutAnimationController.AnimationParameters layoutAnimationParameters;
-    field public int width;
-  }
-
-  public static class ViewGroup.MarginLayoutParams extends android.view.ViewGroup.LayoutParams {
-    ctor public ViewGroup.MarginLayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public ViewGroup.MarginLayoutParams(int, int);
-    ctor public ViewGroup.MarginLayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    ctor public ViewGroup.MarginLayoutParams(android.view.ViewGroup.LayoutParams);
-    method public int getLayoutDirection();
-    method public int getMarginEnd();
-    method public int getMarginStart();
-    method public boolean isMarginRelative();
-    method public void setLayoutDirection(int);
-    method public void setMarginEnd(int);
-    method public void setMarginStart(int);
-    method public void setMargins(int, int, int, int);
-    field public int bottomMargin;
-    field public int leftMargin;
-    field public int rightMargin;
-    field public int topMargin;
-  }
-
-  public static interface ViewGroup.OnHierarchyChangeListener {
-    method public void onChildViewAdded(android.view.View, android.view.View);
-    method public void onChildViewRemoved(android.view.View, android.view.View);
-  }
-
-  public class ViewGroupOverlay extends android.view.ViewOverlay {
-    method public void add(@NonNull android.view.View);
-    method public void remove(@NonNull android.view.View);
-  }
-
-  public interface ViewManager {
-    method public void addView(android.view.View, android.view.ViewGroup.LayoutParams);
-    method public void removeView(android.view.View);
-    method public void updateViewLayout(android.view.View, android.view.ViewGroup.LayoutParams);
-  }
-
-  public abstract class ViewOutlineProvider {
-    ctor public ViewOutlineProvider();
-    method public abstract void getOutline(android.view.View, android.graphics.Outline);
-    field public static final android.view.ViewOutlineProvider BACKGROUND;
-    field public static final android.view.ViewOutlineProvider BOUNDS;
-    field public static final android.view.ViewOutlineProvider PADDED_BOUNDS;
-  }
-
-  public class ViewOverlay {
-    method public void add(@NonNull android.graphics.drawable.Drawable);
-    method public void clear();
-    method public void remove(@NonNull android.graphics.drawable.Drawable);
-  }
-
-  public interface ViewParent {
-    method public void bringChildToFront(android.view.View);
-    method public boolean canResolveLayoutDirection();
-    method public boolean canResolveTextAlignment();
-    method public boolean canResolveTextDirection();
-    method public void childDrawableStateChanged(android.view.View);
-    method public void childHasTransientStateChanged(android.view.View, boolean);
-    method public void clearChildFocus(android.view.View);
-    method public void createContextMenu(android.view.ContextMenu);
-    method public android.view.View focusSearch(android.view.View, int);
-    method public void focusableViewAvailable(android.view.View);
-    method public boolean getChildVisibleRect(android.view.View, android.graphics.Rect, android.graphics.Point);
-    method public int getLayoutDirection();
-    method public android.view.ViewParent getParent();
-    method public android.view.ViewParent getParentForAccessibility();
-    method public int getTextAlignment();
-    method public int getTextDirection();
-    method @Deprecated public void invalidateChild(android.view.View, android.graphics.Rect);
-    method @Deprecated public android.view.ViewParent invalidateChildInParent(int[], android.graphics.Rect);
-    method public boolean isLayoutDirectionResolved();
-    method public boolean isLayoutRequested();
-    method public boolean isTextAlignmentResolved();
-    method public boolean isTextDirectionResolved();
-    method public android.view.View keyboardNavigationClusterSearch(android.view.View, int);
-    method public void notifySubtreeAccessibilityStateChanged(android.view.View, @NonNull android.view.View, int);
-    method public default void onDescendantInvalidated(@NonNull android.view.View, @NonNull android.view.View);
-    method public boolean onNestedFling(android.view.View, float, float, boolean);
-    method public boolean onNestedPreFling(android.view.View, float, float);
-    method public boolean onNestedPrePerformAccessibilityAction(android.view.View, int, android.os.Bundle);
-    method public void onNestedPreScroll(android.view.View, int, int, int[]);
-    method public void onNestedScroll(android.view.View, int, int, int, int);
-    method public void onNestedScrollAccepted(android.view.View, android.view.View, int);
-    method public boolean onStartNestedScroll(android.view.View, android.view.View, int);
-    method public void onStopNestedScroll(android.view.View);
-    method public void recomputeViewAttributes(android.view.View);
-    method public void requestChildFocus(android.view.View, android.view.View);
-    method public boolean requestChildRectangleOnScreen(android.view.View, android.graphics.Rect, boolean);
-    method public void requestDisallowInterceptTouchEvent(boolean);
-    method public void requestFitSystemWindows();
-    method public void requestLayout();
-    method public boolean requestSendAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
-    method public void requestTransparentRegion(android.view.View);
-    method public boolean showContextMenuForChild(android.view.View);
-    method public boolean showContextMenuForChild(android.view.View, float, float);
-    method public android.view.ActionMode startActionModeForChild(android.view.View, android.view.ActionMode.Callback);
-    method public android.view.ActionMode startActionModeForChild(android.view.View, android.view.ActionMode.Callback, int);
-  }
-
-  public class ViewPropertyAnimator {
-    method public android.view.ViewPropertyAnimator alpha(float);
-    method public android.view.ViewPropertyAnimator alphaBy(float);
-    method public void cancel();
-    method public long getDuration();
-    method public android.animation.TimeInterpolator getInterpolator();
-    method public long getStartDelay();
-    method public android.view.ViewPropertyAnimator rotation(float);
-    method public android.view.ViewPropertyAnimator rotationBy(float);
-    method public android.view.ViewPropertyAnimator rotationX(float);
-    method public android.view.ViewPropertyAnimator rotationXBy(float);
-    method public android.view.ViewPropertyAnimator rotationY(float);
-    method public android.view.ViewPropertyAnimator rotationYBy(float);
-    method public android.view.ViewPropertyAnimator scaleX(float);
-    method public android.view.ViewPropertyAnimator scaleXBy(float);
-    method public android.view.ViewPropertyAnimator scaleY(float);
-    method public android.view.ViewPropertyAnimator scaleYBy(float);
-    method public android.view.ViewPropertyAnimator setDuration(long);
-    method public android.view.ViewPropertyAnimator setInterpolator(android.animation.TimeInterpolator);
-    method public android.view.ViewPropertyAnimator setListener(android.animation.Animator.AnimatorListener);
-    method public android.view.ViewPropertyAnimator setStartDelay(long);
-    method public android.view.ViewPropertyAnimator setUpdateListener(android.animation.ValueAnimator.AnimatorUpdateListener);
-    method public void start();
-    method public android.view.ViewPropertyAnimator translationX(float);
-    method public android.view.ViewPropertyAnimator translationXBy(float);
-    method public android.view.ViewPropertyAnimator translationY(float);
-    method public android.view.ViewPropertyAnimator translationYBy(float);
-    method public android.view.ViewPropertyAnimator translationZ(float);
-    method public android.view.ViewPropertyAnimator translationZBy(float);
-    method public android.view.ViewPropertyAnimator withEndAction(Runnable);
-    method public android.view.ViewPropertyAnimator withLayer();
-    method public android.view.ViewPropertyAnimator withStartAction(Runnable);
-    method public android.view.ViewPropertyAnimator x(float);
-    method public android.view.ViewPropertyAnimator xBy(float);
-    method public android.view.ViewPropertyAnimator y(float);
-    method public android.view.ViewPropertyAnimator yBy(float);
-    method public android.view.ViewPropertyAnimator z(float);
-    method public android.view.ViewPropertyAnimator zBy(float);
-  }
-
-  public abstract class ViewStructure {
-    ctor public ViewStructure();
-    method public abstract int addChildCount(int);
-    method public abstract void asyncCommit();
-    method public abstract android.view.ViewStructure asyncNewChild(int);
-    method @Nullable public abstract android.view.autofill.AutofillId getAutofillId();
-    method public abstract int getChildCount();
-    method public abstract android.os.Bundle getExtras();
-    method public abstract CharSequence getHint();
-    method public abstract CharSequence getText();
-    method public abstract int getTextSelectionEnd();
-    method public abstract int getTextSelectionStart();
-    method public abstract boolean hasExtras();
-    method public abstract android.view.ViewStructure newChild(int);
-    method public abstract android.view.ViewStructure.HtmlInfo.Builder newHtmlInfoBuilder(@NonNull String);
-    method public abstract void setAccessibilityFocused(boolean);
-    method public abstract void setActivated(boolean);
-    method public abstract void setAlpha(float);
-    method public abstract void setAutofillHints(@Nullable String[]);
-    method public abstract void setAutofillId(@NonNull android.view.autofill.AutofillId);
-    method public abstract void setAutofillId(@NonNull android.view.autofill.AutofillId, int);
-    method public abstract void setAutofillOptions(CharSequence[]);
-    method public abstract void setAutofillType(int);
-    method public abstract void setAutofillValue(android.view.autofill.AutofillValue);
-    method public abstract void setCheckable(boolean);
-    method public abstract void setChecked(boolean);
-    method public abstract void setChildCount(int);
-    method public abstract void setClassName(String);
-    method public abstract void setClickable(boolean);
-    method public abstract void setContentDescription(CharSequence);
-    method public abstract void setContextClickable(boolean);
-    method public abstract void setDataIsSensitive(boolean);
-    method public abstract void setDimens(int, int, int, int, int, int);
-    method public abstract void setElevation(float);
-    method public abstract void setEnabled(boolean);
-    method public abstract void setFocusable(boolean);
-    method public abstract void setFocused(boolean);
-    method public abstract void setHint(CharSequence);
-    method public void setHintIdEntry(@NonNull String);
-    method public abstract void setHtmlInfo(@NonNull android.view.ViewStructure.HtmlInfo);
-    method public abstract void setId(int, String, String, String);
-    method public void setImportantForAutofill(int);
-    method public abstract void setInputType(int);
-    method public abstract void setLocaleList(android.os.LocaleList);
-    method public abstract void setLongClickable(boolean);
-    method public void setMaxTextEms(int);
-    method public void setMaxTextLength(int);
-    method public void setMinTextEms(int);
-    method public abstract void setOpaque(boolean);
-    method public abstract void setSelected(boolean);
-    method public abstract void setText(CharSequence);
-    method public abstract void setText(CharSequence, int, int);
-    method public void setTextIdEntry(@NonNull String);
-    method public abstract void setTextLines(int[], int[]);
-    method public abstract void setTextStyle(float, int, int, int);
-    method public abstract void setTransformation(android.graphics.Matrix);
-    method public abstract void setVisibility(int);
-    method public abstract void setWebDomain(@Nullable String);
-  }
-
-  public abstract static class ViewStructure.HtmlInfo {
-    ctor public ViewStructure.HtmlInfo();
-    method @Nullable public abstract java.util.List<android.util.Pair<java.lang.String,java.lang.String>> getAttributes();
-    method @NonNull public abstract String getTag();
-  }
-
-  public abstract static class ViewStructure.HtmlInfo.Builder {
-    ctor public ViewStructure.HtmlInfo.Builder();
-    method public abstract android.view.ViewStructure.HtmlInfo.Builder addAttribute(@NonNull String, @NonNull String);
-    method public abstract android.view.ViewStructure.HtmlInfo build();
-  }
-
-  @android.widget.RemoteViews.RemoteView public final class ViewStub extends android.view.View {
-    ctor public ViewStub(android.content.Context);
-    ctor public ViewStub(android.content.Context, @LayoutRes int);
-    ctor public ViewStub(android.content.Context, android.util.AttributeSet);
-    ctor public ViewStub(android.content.Context, android.util.AttributeSet, int);
-    ctor public ViewStub(android.content.Context, android.util.AttributeSet, int, int);
-    method @IdRes public int getInflatedId();
-    method public android.view.LayoutInflater getLayoutInflater();
-    method @LayoutRes public int getLayoutResource();
-    method public android.view.View inflate();
-    method public void setInflatedId(@IdRes int);
-    method public void setLayoutInflater(android.view.LayoutInflater);
-    method public void setLayoutResource(@LayoutRes int);
-    method public void setOnInflateListener(android.view.ViewStub.OnInflateListener);
-  }
-
-  public static interface ViewStub.OnInflateListener {
-    method public void onInflate(android.view.ViewStub, android.view.View);
-  }
-
-  public final class ViewTreeObserver {
-    method public void addOnDrawListener(android.view.ViewTreeObserver.OnDrawListener);
-    method public void addOnGlobalFocusChangeListener(android.view.ViewTreeObserver.OnGlobalFocusChangeListener);
-    method public void addOnGlobalLayoutListener(android.view.ViewTreeObserver.OnGlobalLayoutListener);
-    method public void addOnPreDrawListener(android.view.ViewTreeObserver.OnPreDrawListener);
-    method public void addOnScrollChangedListener(android.view.ViewTreeObserver.OnScrollChangedListener);
-    method public void addOnSystemGestureExclusionRectsChangedListener(@NonNull java.util.function.Consumer<java.util.List<android.graphics.Rect>>);
-    method public void addOnTouchModeChangeListener(android.view.ViewTreeObserver.OnTouchModeChangeListener);
-    method public void addOnWindowAttachListener(android.view.ViewTreeObserver.OnWindowAttachListener);
-    method public void addOnWindowFocusChangeListener(android.view.ViewTreeObserver.OnWindowFocusChangeListener);
-    method public void dispatchOnDraw();
-    method public void dispatchOnGlobalLayout();
-    method public boolean dispatchOnPreDraw();
-    method public boolean isAlive();
-    method public void registerFrameCommitCallback(@NonNull Runnable);
-    method @Deprecated public void removeGlobalOnLayoutListener(android.view.ViewTreeObserver.OnGlobalLayoutListener);
-    method public void removeOnDrawListener(android.view.ViewTreeObserver.OnDrawListener);
-    method public void removeOnGlobalFocusChangeListener(android.view.ViewTreeObserver.OnGlobalFocusChangeListener);
-    method public void removeOnGlobalLayoutListener(android.view.ViewTreeObserver.OnGlobalLayoutListener);
-    method public void removeOnPreDrawListener(android.view.ViewTreeObserver.OnPreDrawListener);
-    method public void removeOnScrollChangedListener(android.view.ViewTreeObserver.OnScrollChangedListener);
-    method public void removeOnSystemGestureExclusionRectsChangedListener(@NonNull java.util.function.Consumer<java.util.List<android.graphics.Rect>>);
-    method public void removeOnTouchModeChangeListener(android.view.ViewTreeObserver.OnTouchModeChangeListener);
-    method public void removeOnWindowAttachListener(android.view.ViewTreeObserver.OnWindowAttachListener);
-    method public void removeOnWindowFocusChangeListener(android.view.ViewTreeObserver.OnWindowFocusChangeListener);
-    method public boolean unregisterFrameCommitCallback(@NonNull Runnable);
-  }
-
-  public static interface ViewTreeObserver.OnDrawListener {
-    method public void onDraw();
-  }
-
-  public static interface ViewTreeObserver.OnGlobalFocusChangeListener {
-    method public void onGlobalFocusChanged(android.view.View, android.view.View);
-  }
-
-  public static interface ViewTreeObserver.OnGlobalLayoutListener {
-    method public void onGlobalLayout();
-  }
-
-  public static interface ViewTreeObserver.OnPreDrawListener {
-    method public boolean onPreDraw();
-  }
-
-  public static interface ViewTreeObserver.OnScrollChangedListener {
-    method public void onScrollChanged();
-  }
-
-  public static interface ViewTreeObserver.OnTouchModeChangeListener {
-    method public void onTouchModeChanged(boolean);
-  }
-
-  public static interface ViewTreeObserver.OnWindowAttachListener {
-    method public void onWindowAttached();
-    method public void onWindowDetached();
-  }
-
-  public static interface ViewTreeObserver.OnWindowFocusChangeListener {
-    method public void onWindowFocusChanged(boolean);
-  }
-
-  public abstract class Window {
-    ctor public Window(android.content.Context);
-    method public abstract void addContentView(android.view.View, android.view.ViewGroup.LayoutParams);
-    method public void addFlags(int);
-    method public final void addOnFrameMetricsAvailableListener(@NonNull android.view.Window.OnFrameMetricsAvailableListener, android.os.Handler);
-    method public void clearFlags(int);
-    method public abstract void closeAllPanels();
-    method public abstract void closePanel(int);
-    method public <T extends android.view.View> T findViewById(@IdRes int);
-    method public boolean getAllowEnterTransitionOverlap();
-    method public boolean getAllowReturnTransitionOverlap();
-    method public final android.view.WindowManager.LayoutParams getAttributes();
-    method public final android.view.Window.Callback getCallback();
-    method public int getColorMode();
-    method public final android.view.Window getContainer();
-    method public android.transition.Scene getContentScene();
-    method public final android.content.Context getContext();
-    method @Nullable public abstract android.view.View getCurrentFocus();
-    method @NonNull public abstract android.view.View getDecorView();
-    method public static int getDefaultFeatures(android.content.Context);
-    method public android.transition.Transition getEnterTransition();
-    method public android.transition.Transition getExitTransition();
-    method protected final int getFeatures();
-    method protected final int getForcedWindowFlags();
-    method @Nullable public android.view.WindowInsetsController getInsetsController();
-    method @NonNull public abstract android.view.LayoutInflater getLayoutInflater();
-    method protected final int getLocalFeatures();
-    method public android.media.session.MediaController getMediaController();
-    method @ColorInt public abstract int getNavigationBarColor();
-    method @ColorInt public int getNavigationBarDividerColor();
-    method public android.transition.Transition getReenterTransition();
-    method public android.transition.Transition getReturnTransition();
-    method public android.transition.Transition getSharedElementEnterTransition();
-    method public android.transition.Transition getSharedElementExitTransition();
-    method public android.transition.Transition getSharedElementReenterTransition();
-    method public android.transition.Transition getSharedElementReturnTransition();
-    method public boolean getSharedElementsUseOverlay();
-    method @ColorInt public abstract int getStatusBarColor();
-    method @NonNull public java.util.List<android.graphics.Rect> getSystemGestureExclusionRects();
-    method public long getTransitionBackgroundFadeDuration();
-    method public android.transition.TransitionManager getTransitionManager();
-    method public abstract int getVolumeControlStream();
-    method public android.view.WindowManager getWindowManager();
-    method public final android.content.res.TypedArray getWindowStyle();
-    method public final boolean hasChildren();
-    method public boolean hasFeature(int);
-    method protected final boolean hasSoftInputMode();
-    method public void injectInputEvent(android.view.InputEvent);
-    method public abstract void invalidatePanelMenu(int);
-    method public final boolean isActive();
-    method public abstract boolean isFloating();
-    method public boolean isNavigationBarContrastEnforced();
-    method public abstract boolean isShortcutKey(int, android.view.KeyEvent);
-    method public boolean isStatusBarContrastEnforced();
-    method public boolean isWideColorGamut();
-    method public final void makeActive();
-    method protected abstract void onActive();
-    method public abstract void onConfigurationChanged(android.content.res.Configuration);
-    method public abstract void openPanel(int, android.view.KeyEvent);
-    method public abstract android.view.View peekDecorView();
-    method public abstract boolean performContextMenuIdentifierAction(int, int);
-    method public abstract boolean performPanelIdentifierAction(int, int, int);
-    method public abstract boolean performPanelShortcut(int, int, android.view.KeyEvent, int);
-    method public final void removeOnFrameMetricsAvailableListener(android.view.Window.OnFrameMetricsAvailableListener);
-    method public boolean requestFeature(int);
-    method @NonNull public final <T extends android.view.View> T requireViewById(@IdRes int);
-    method public abstract void restoreHierarchyState(android.os.Bundle);
-    method public abstract android.os.Bundle saveHierarchyState();
-    method public void setAllowEnterTransitionOverlap(boolean);
-    method public void setAllowReturnTransitionOverlap(boolean);
-    method public void setAttributes(android.view.WindowManager.LayoutParams);
-    method public abstract void setBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setBackgroundDrawableResource(@DrawableRes int);
-    method public void setCallback(android.view.Window.Callback);
-    method public abstract void setChildDrawable(int, android.graphics.drawable.Drawable);
-    method public abstract void setChildInt(int, int);
-    method public void setClipToOutline(boolean);
-    method public void setColorMode(int);
-    method public void setContainer(android.view.Window);
-    method public abstract void setContentView(@LayoutRes int);
-    method public abstract void setContentView(android.view.View);
-    method public abstract void setContentView(android.view.View, android.view.ViewGroup.LayoutParams);
-    method public abstract void setDecorCaptionShade(int);
-    method public void setDecorFitsSystemWindows(boolean);
-    method protected void setDefaultWindowFormat(int);
-    method public void setDimAmount(float);
-    method public void setElevation(float);
-    method public void setEnterTransition(android.transition.Transition);
-    method public void setExitTransition(android.transition.Transition);
-    method public abstract void setFeatureDrawable(int, android.graphics.drawable.Drawable);
-    method public abstract void setFeatureDrawableAlpha(int, int);
-    method public abstract void setFeatureDrawableResource(int, @DrawableRes int);
-    method public abstract void setFeatureDrawableUri(int, android.net.Uri);
-    method public abstract void setFeatureInt(int, int);
-    method public void setFlags(int, int);
-    method public void setFormat(int);
-    method public void setGravity(int);
-    method public void setIcon(@DrawableRes int);
-    method public void setLayout(int, int);
-    method public void setLocalFocus(boolean, boolean);
-    method public void setLogo(@DrawableRes int);
-    method public void setMediaController(android.media.session.MediaController);
-    method public abstract void setNavigationBarColor(@ColorInt int);
-    method public void setNavigationBarContrastEnforced(boolean);
-    method public void setNavigationBarDividerColor(@ColorInt int);
-    method public void setPreferMinimalPostProcessing(boolean);
-    method public void setReenterTransition(android.transition.Transition);
-    method public abstract void setResizingCaptionDrawable(android.graphics.drawable.Drawable);
-    method public final void setRestrictedCaptionAreaListener(android.view.Window.OnRestrictedCaptionAreaChangedListener);
-    method public void setReturnTransition(android.transition.Transition);
-    method public void setSharedElementEnterTransition(android.transition.Transition);
-    method public void setSharedElementExitTransition(android.transition.Transition);
-    method public void setSharedElementReenterTransition(android.transition.Transition);
-    method public void setSharedElementReturnTransition(android.transition.Transition);
-    method public void setSharedElementsUseOverlay(boolean);
-    method public void setSoftInputMode(int);
-    method public abstract void setStatusBarColor(@ColorInt int);
-    method public void setStatusBarContrastEnforced(boolean);
-    method public void setSustainedPerformanceMode(boolean);
-    method public void setSystemGestureExclusionRects(@NonNull java.util.List<android.graphics.Rect>);
-    method public abstract void setTitle(CharSequence);
-    method @Deprecated public abstract void setTitleColor(@ColorInt int);
-    method public void setTransitionBackgroundFadeDuration(long);
-    method public void setTransitionManager(android.transition.TransitionManager);
-    method public void setType(int);
-    method public void setUiOptions(int);
-    method public void setUiOptions(int, int);
-    method public abstract void setVolumeControlStream(int);
-    method public void setWindowAnimations(@StyleRes int);
-    method public void setWindowManager(android.view.WindowManager, android.os.IBinder, String);
-    method public void setWindowManager(android.view.WindowManager, android.os.IBinder, String, boolean);
-    method public abstract boolean superDispatchGenericMotionEvent(android.view.MotionEvent);
-    method public abstract boolean superDispatchKeyEvent(android.view.KeyEvent);
-    method public abstract boolean superDispatchKeyShortcutEvent(android.view.KeyEvent);
-    method public abstract boolean superDispatchTouchEvent(android.view.MotionEvent);
-    method public abstract boolean superDispatchTrackballEvent(android.view.MotionEvent);
-    method public abstract void takeInputQueue(android.view.InputQueue.Callback);
-    method public abstract void takeKeyEvents(boolean);
-    method public abstract void takeSurface(android.view.SurfaceHolder.Callback2);
-    method public abstract void togglePanel(int, android.view.KeyEvent);
-    field public static final int DECOR_CAPTION_SHADE_AUTO = 0; // 0x0
-    field public static final int DECOR_CAPTION_SHADE_DARK = 2; // 0x2
-    field public static final int DECOR_CAPTION_SHADE_LIGHT = 1; // 0x1
-    field @Deprecated protected static final int DEFAULT_FEATURES = 65; // 0x41
-    field public static final int FEATURE_ACTION_BAR = 8; // 0x8
-    field public static final int FEATURE_ACTION_BAR_OVERLAY = 9; // 0x9
-    field public static final int FEATURE_ACTION_MODE_OVERLAY = 10; // 0xa
-    field public static final int FEATURE_ACTIVITY_TRANSITIONS = 13; // 0xd
-    field public static final int FEATURE_CONTENT_TRANSITIONS = 12; // 0xc
-    field public static final int FEATURE_CONTEXT_MENU = 6; // 0x6
-    field public static final int FEATURE_CUSTOM_TITLE = 7; // 0x7
-    field @Deprecated public static final int FEATURE_INDETERMINATE_PROGRESS = 5; // 0x5
-    field public static final int FEATURE_LEFT_ICON = 3; // 0x3
-    field public static final int FEATURE_NO_TITLE = 1; // 0x1
-    field public static final int FEATURE_OPTIONS_PANEL = 0; // 0x0
-    field @Deprecated public static final int FEATURE_PROGRESS = 2; // 0x2
-    field public static final int FEATURE_RIGHT_ICON = 4; // 0x4
-    field @Deprecated public static final int FEATURE_SWIPE_TO_DISMISS = 11; // 0xb
-    field public static final int ID_ANDROID_CONTENT = 16908290; // 0x1020002
-    field public static final String NAVIGATION_BAR_BACKGROUND_TRANSITION_NAME = "android:navigation:background";
-    field @Deprecated public static final int PROGRESS_END = 10000; // 0x2710
-    field @Deprecated public static final int PROGRESS_INDETERMINATE_OFF = -4; // 0xfffffffc
-    field @Deprecated public static final int PROGRESS_INDETERMINATE_ON = -3; // 0xfffffffd
-    field @Deprecated public static final int PROGRESS_SECONDARY_END = 30000; // 0x7530
-    field @Deprecated public static final int PROGRESS_SECONDARY_START = 20000; // 0x4e20
-    field @Deprecated public static final int PROGRESS_START = 0; // 0x0
-    field @Deprecated public static final int PROGRESS_VISIBILITY_OFF = -2; // 0xfffffffe
-    field @Deprecated public static final int PROGRESS_VISIBILITY_ON = -1; // 0xffffffff
-    field public static final String STATUS_BAR_BACKGROUND_TRANSITION_NAME = "android:status:background";
-  }
-
-  public static interface Window.Callback {
-    method public boolean dispatchGenericMotionEvent(android.view.MotionEvent);
-    method public boolean dispatchKeyEvent(android.view.KeyEvent);
-    method public boolean dispatchKeyShortcutEvent(android.view.KeyEvent);
-    method public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    method public boolean dispatchTouchEvent(android.view.MotionEvent);
-    method public boolean dispatchTrackballEvent(android.view.MotionEvent);
-    method public void onActionModeFinished(android.view.ActionMode);
-    method public void onActionModeStarted(android.view.ActionMode);
-    method public void onAttachedToWindow();
-    method public void onContentChanged();
-    method public boolean onCreatePanelMenu(int, @NonNull android.view.Menu);
-    method @Nullable public android.view.View onCreatePanelView(int);
-    method public void onDetachedFromWindow();
-    method public boolean onMenuItemSelected(int, @NonNull android.view.MenuItem);
-    method public boolean onMenuOpened(int, @NonNull android.view.Menu);
-    method public void onPanelClosed(int, @NonNull android.view.Menu);
-    method public default void onPointerCaptureChanged(boolean);
-    method public boolean onPreparePanel(int, @Nullable android.view.View, @NonNull android.view.Menu);
-    method public default void onProvideKeyboardShortcuts(java.util.List<android.view.KeyboardShortcutGroup>, @Nullable android.view.Menu, int);
-    method public boolean onSearchRequested();
-    method public boolean onSearchRequested(android.view.SearchEvent);
-    method public void onWindowAttributesChanged(android.view.WindowManager.LayoutParams);
-    method public void onWindowFocusChanged(boolean);
-    method @Nullable public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback);
-    method @Nullable public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback, int);
-  }
-
-  public static interface Window.OnFrameMetricsAvailableListener {
-    method public void onFrameMetricsAvailable(android.view.Window, android.view.FrameMetrics, int);
-  }
-
-  public static interface Window.OnRestrictedCaptionAreaChangedListener {
-    method public void onRestrictedCaptionAreaChanged(android.graphics.Rect);
-  }
-
-  public final class WindowAnimationFrameStats extends android.view.FrameStats implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.WindowAnimationFrameStats> CREATOR;
-  }
-
-  public final class WindowContentFrameStats extends android.view.FrameStats implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getFramePostedTimeNano(int);
-    method public long getFrameReadyTimeNano(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.WindowContentFrameStats> CREATOR;
-  }
-
-  public class WindowId implements android.os.Parcelable {
-    method public int describeContents();
-    method public boolean isFocused();
-    method public void registerFocusObserver(android.view.WindowId.FocusObserver);
-    method public void unregisterFocusObserver(android.view.WindowId.FocusObserver);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.WindowId> CREATOR;
-  }
-
-  public abstract static class WindowId.FocusObserver {
-    ctor public WindowId.FocusObserver();
-    method public abstract void onFocusGained(android.view.WindowId);
-    method public abstract void onFocusLost(android.view.WindowId);
-  }
-
-  public final class WindowInsets {
-    ctor public WindowInsets(android.view.WindowInsets);
-    method @Deprecated @NonNull public android.view.WindowInsets consumeDisplayCutout();
-    method @Deprecated @NonNull public android.view.WindowInsets consumeStableInsets();
-    method @Deprecated @NonNull public android.view.WindowInsets consumeSystemWindowInsets();
-    method @Nullable public android.view.DisplayCutout getDisplayCutout();
-    method @NonNull public android.graphics.Insets getInsets(int);
-    method @NonNull public android.graphics.Insets getInsetsIgnoringVisibility(int);
-    method @Deprecated @NonNull public android.graphics.Insets getMandatorySystemGestureInsets();
-    method @Deprecated public int getStableInsetBottom();
-    method @Deprecated public int getStableInsetLeft();
-    method @Deprecated public int getStableInsetRight();
-    method @Deprecated public int getStableInsetTop();
-    method @Deprecated @NonNull public android.graphics.Insets getStableInsets();
-    method @Deprecated @NonNull public android.graphics.Insets getSystemGestureInsets();
-    method @Deprecated public int getSystemWindowInsetBottom();
-    method @Deprecated public int getSystemWindowInsetLeft();
-    method @Deprecated public int getSystemWindowInsetRight();
-    method @Deprecated public int getSystemWindowInsetTop();
-    method @Deprecated @NonNull public android.graphics.Insets getSystemWindowInsets();
-    method @Deprecated @NonNull public android.graphics.Insets getTappableElementInsets();
-    method public boolean hasInsets();
-    method @Deprecated public boolean hasStableInsets();
-    method @Deprecated public boolean hasSystemWindowInsets();
-    method @NonNull public android.view.WindowInsets inset(@NonNull android.graphics.Insets);
-    method @NonNull public android.view.WindowInsets inset(@IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int);
-    method public boolean isConsumed();
-    method public boolean isRound();
-    method public boolean isVisible(int);
-    method @Deprecated @NonNull public android.view.WindowInsets replaceSystemWindowInsets(int, int, int, int);
-    method @Deprecated @NonNull public android.view.WindowInsets replaceSystemWindowInsets(android.graphics.Rect);
-    field @NonNull public static final android.view.WindowInsets CONSUMED;
-  }
-
-  public static final class WindowInsets.Builder {
-    ctor public WindowInsets.Builder();
-    ctor public WindowInsets.Builder(@NonNull android.view.WindowInsets);
-    method @NonNull public android.view.WindowInsets build();
-    method @NonNull public android.view.WindowInsets.Builder setDisplayCutout(@Nullable android.view.DisplayCutout);
-    method @NonNull public android.view.WindowInsets.Builder setInsets(int, @NonNull android.graphics.Insets);
-    method @NonNull public android.view.WindowInsets.Builder setInsetsIgnoringVisibility(int, @NonNull android.graphics.Insets) throws java.lang.IllegalArgumentException;
-    method @Deprecated @NonNull public android.view.WindowInsets.Builder setMandatorySystemGestureInsets(@NonNull android.graphics.Insets);
-    method @Deprecated @NonNull public android.view.WindowInsets.Builder setStableInsets(@NonNull android.graphics.Insets);
-    method @Deprecated @NonNull public android.view.WindowInsets.Builder setSystemGestureInsets(@NonNull android.graphics.Insets);
-    method @Deprecated @NonNull public android.view.WindowInsets.Builder setSystemWindowInsets(@NonNull android.graphics.Insets);
-    method @Deprecated @NonNull public android.view.WindowInsets.Builder setTappableElementInsets(@NonNull android.graphics.Insets);
-    method @NonNull public android.view.WindowInsets.Builder setVisible(int, boolean);
-  }
-
-  public static final class WindowInsets.Side {
-    method public static int all();
-    field public static final int BOTTOM = 8; // 0x8
-    field public static final int LEFT = 1; // 0x1
-    field public static final int RIGHT = 4; // 0x4
-    field public static final int TOP = 2; // 0x2
-  }
-
-  public static final class WindowInsets.Type {
-    method public static int captionBar();
-    method public static int displayCutout();
-    method public static int ime();
-    method public static int mandatorySystemGestures();
-    method public static int navigationBars();
-    method public static int statusBars();
-    method public static int systemBars();
-    method public static int systemGestures();
-    method public static int tappableElement();
-  }
-
-  public final class WindowInsetsAnimation {
-    ctor public WindowInsetsAnimation(int, @Nullable android.view.animation.Interpolator, long);
-    method @FloatRange(from=0.0f, to=1.0f) public float getAlpha();
-    method public long getDurationMillis();
-    method @FloatRange(from=0.0f, to=1.0f) public float getFraction();
-    method public float getInterpolatedFraction();
-    method @Nullable public android.view.animation.Interpolator getInterpolator();
-    method public int getTypeMask();
-    method public void setAlpha(@FloatRange(from=0.0f, to=1.0f) float);
-    method public void setFraction(@FloatRange(from=0.0f, to=1.0f) float);
-  }
-
-  public static final class WindowInsetsAnimation.Bounds {
-    ctor public WindowInsetsAnimation.Bounds(@NonNull android.graphics.Insets, @NonNull android.graphics.Insets);
-    method @NonNull public android.graphics.Insets getLowerBound();
-    method @NonNull public android.graphics.Insets getUpperBound();
-    method @NonNull public android.view.WindowInsetsAnimation.Bounds inset(@NonNull android.graphics.Insets);
-  }
-
-  public abstract static class WindowInsetsAnimation.Callback {
-    ctor public WindowInsetsAnimation.Callback(int);
-    method public final int getDispatchMode();
-    method public void onEnd(@NonNull android.view.WindowInsetsAnimation);
-    method public void onPrepare(@NonNull android.view.WindowInsetsAnimation);
-    method @NonNull public abstract android.view.WindowInsets onProgress(@NonNull android.view.WindowInsets, @NonNull java.util.List<android.view.WindowInsetsAnimation>);
-    method @NonNull public android.view.WindowInsetsAnimation.Bounds onStart(@NonNull android.view.WindowInsetsAnimation, @NonNull android.view.WindowInsetsAnimation.Bounds);
-    field public static final int DISPATCH_MODE_CONTINUE_ON_SUBTREE = 1; // 0x1
-    field public static final int DISPATCH_MODE_STOP = 0; // 0x0
-  }
-
-  public interface WindowInsetsAnimationControlListener {
-    method public void onCancelled(@Nullable android.view.WindowInsetsAnimationController);
-    method public void onFinished(@NonNull android.view.WindowInsetsAnimationController);
-    method public void onReady(@NonNull android.view.WindowInsetsAnimationController, int);
-  }
-
-  public interface WindowInsetsAnimationController {
-    method public void finish(boolean);
-    method public float getCurrentAlpha();
-    method @FloatRange(from=0.0f, to=1.0f) public float getCurrentFraction();
-    method @NonNull public android.graphics.Insets getCurrentInsets();
-    method @NonNull public android.graphics.Insets getHiddenStateInsets();
-    method @NonNull public android.graphics.Insets getShownStateInsets();
-    method public int getTypes();
-    method public boolean isCancelled();
-    method public boolean isFinished();
-    method public default boolean isReady();
-    method public void setInsetsAndAlpha(@Nullable android.graphics.Insets, @FloatRange(from=0.0f, to=1.0f) float, @FloatRange(from=0.0f, to=1.0f) float);
-  }
-
-  public interface WindowInsetsController {
-    method public void addOnControllableInsetsChangedListener(@NonNull android.view.WindowInsetsController.OnControllableInsetsChangedListener);
-    method public void controlWindowInsetsAnimation(int, long, @Nullable android.view.animation.Interpolator, @Nullable android.os.CancellationSignal, @NonNull android.view.WindowInsetsAnimationControlListener);
-    method public int getSystemBarsAppearance();
-    method public int getSystemBarsBehavior();
-    method public void hide(int);
-    method public void removeOnControllableInsetsChangedListener(@NonNull android.view.WindowInsetsController.OnControllableInsetsChangedListener);
-    method public void setSystemBarsAppearance(int, int);
-    method public void setSystemBarsBehavior(int);
-    method public void show(int);
-    field public static final int APPEARANCE_LIGHT_NAVIGATION_BARS = 16; // 0x10
-    field public static final int APPEARANCE_LIGHT_STATUS_BARS = 8; // 0x8
-    field public static final int BEHAVIOR_SHOW_BARS_BY_SWIPE = 1; // 0x1
-    field public static final int BEHAVIOR_SHOW_BARS_BY_TOUCH = 0; // 0x0
-    field public static final int BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE = 2; // 0x2
-  }
-
-  public static interface WindowInsetsController.OnControllableInsetsChangedListener {
-    method public void onControllableInsetsChanged(@NonNull android.view.WindowInsetsController, int);
-  }
-
-  public interface WindowManager extends android.view.ViewManager {
-    method @NonNull public default android.view.WindowMetrics getCurrentWindowMetrics();
-    method @Deprecated public android.view.Display getDefaultDisplay();
-    method @NonNull public default android.view.WindowMetrics getMaximumWindowMetrics();
-    method public void removeViewImmediate(android.view.View);
-  }
-
-  public static class WindowManager.BadTokenException extends java.lang.RuntimeException {
-    ctor public WindowManager.BadTokenException();
-    ctor public WindowManager.BadTokenException(String);
-  }
-
-  public static class WindowManager.InvalidDisplayException extends java.lang.RuntimeException {
-    ctor public WindowManager.InvalidDisplayException();
-    ctor public WindowManager.InvalidDisplayException(String);
-  }
-
-  public static class WindowManager.LayoutParams extends android.view.ViewGroup.LayoutParams implements android.os.Parcelable {
-    ctor public WindowManager.LayoutParams();
-    ctor public WindowManager.LayoutParams(int);
-    ctor public WindowManager.LayoutParams(int, int);
-    ctor public WindowManager.LayoutParams(int, int, int);
-    ctor public WindowManager.LayoutParams(int, int, int, int, int);
-    ctor public WindowManager.LayoutParams(int, int, int, int, int, int, int);
-    ctor public WindowManager.LayoutParams(android.os.Parcel);
-    method public final int copyFrom(android.view.WindowManager.LayoutParams);
-    method public String debug(String);
-    method public int describeContents();
-    method public int getColorMode();
-    method public int getFitInsetsSides();
-    method public int getFitInsetsTypes();
-    method public final CharSequence getTitle();
-    method public boolean isFitInsetsIgnoringVisibility();
-    method public static boolean mayUseInputMethod(int);
-    method public void setColorMode(int);
-    method public void setFitInsetsIgnoringVisibility(boolean);
-    method public void setFitInsetsSides(int);
-    method public void setFitInsetsTypes(int);
-    method public final void setTitle(CharSequence);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ALPHA_CHANGED = 128; // 0x80
-    field public static final int ANIMATION_CHANGED = 16; // 0x10
-    field public static final float BRIGHTNESS_OVERRIDE_FULL = 1.0f;
-    field public static final float BRIGHTNESS_OVERRIDE_NONE = -1.0f;
-    field public static final float BRIGHTNESS_OVERRIDE_OFF = 0.0f;
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.WindowManager.LayoutParams> CREATOR;
-    field public static final int DIM_AMOUNT_CHANGED = 32; // 0x20
-    field public static final int FIRST_APPLICATION_WINDOW = 1; // 0x1
-    field public static final int FIRST_SUB_WINDOW = 1000; // 0x3e8
-    field public static final int FIRST_SYSTEM_WINDOW = 2000; // 0x7d0
-    field public static final int FLAGS_CHANGED = 4; // 0x4
-    field public static final int FLAG_ALLOW_LOCK_WHILE_SCREEN_ON = 1; // 0x1
-    field public static final int FLAG_ALT_FOCUSABLE_IM = 131072; // 0x20000
-    field @Deprecated public static final int FLAG_BLUR_BEHIND = 4; // 0x4
-    field public static final int FLAG_DIM_BEHIND = 2; // 0x2
-    field @Deprecated public static final int FLAG_DISMISS_KEYGUARD = 4194304; // 0x400000
-    field @Deprecated public static final int FLAG_DITHER = 4096; // 0x1000
-    field public static final int FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS = -2147483648; // 0x80000000
-    field @Deprecated public static final int FLAG_FORCE_NOT_FULLSCREEN = 2048; // 0x800
-    field @Deprecated public static final int FLAG_FULLSCREEN = 1024; // 0x400
-    field public static final int FLAG_HARDWARE_ACCELERATED = 16777216; // 0x1000000
-    field public static final int FLAG_IGNORE_CHEEK_PRESSES = 32768; // 0x8000
-    field public static final int FLAG_KEEP_SCREEN_ON = 128; // 0x80
-    field @Deprecated public static final int FLAG_LAYOUT_ATTACHED_IN_DECOR = 1073741824; // 0x40000000
-    field @Deprecated public static final int FLAG_LAYOUT_INSET_DECOR = 65536; // 0x10000
-    field @Deprecated public static final int FLAG_LAYOUT_IN_OVERSCAN = 33554432; // 0x2000000
-    field public static final int FLAG_LAYOUT_IN_SCREEN = 256; // 0x100
-    field public static final int FLAG_LAYOUT_NO_LIMITS = 512; // 0x200
-    field public static final int FLAG_LOCAL_FOCUS_MODE = 268435456; // 0x10000000
-    field public static final int FLAG_NOT_FOCUSABLE = 8; // 0x8
-    field public static final int FLAG_NOT_TOUCHABLE = 16; // 0x10
-    field public static final int FLAG_NOT_TOUCH_MODAL = 32; // 0x20
-    field public static final int FLAG_SCALED = 16384; // 0x4000
-    field public static final int FLAG_SECURE = 8192; // 0x2000
-    field public static final int FLAG_SHOW_WALLPAPER = 1048576; // 0x100000
-    field @Deprecated public static final int FLAG_SHOW_WHEN_LOCKED = 524288; // 0x80000
-    field public static final int FLAG_SPLIT_TOUCH = 8388608; // 0x800000
-    field @Deprecated public static final int FLAG_TOUCHABLE_WHEN_WAKING = 64; // 0x40
-    field @Deprecated public static final int FLAG_TRANSLUCENT_NAVIGATION = 134217728; // 0x8000000
-    field @Deprecated public static final int FLAG_TRANSLUCENT_STATUS = 67108864; // 0x4000000
-    field @Deprecated public static final int FLAG_TURN_SCREEN_ON = 2097152; // 0x200000
-    field public static final int FLAG_WATCH_OUTSIDE_TOUCH = 262144; // 0x40000
-    field public static final int FORMAT_CHANGED = 8; // 0x8
-    field public static final int LAST_APPLICATION_WINDOW = 99; // 0x63
-    field public static final int LAST_SUB_WINDOW = 1999; // 0x7cf
-    field public static final int LAST_SYSTEM_WINDOW = 2999; // 0xbb7
-    field public static final int LAYOUT_CHANGED = 1; // 0x1
-    field public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS = 3; // 0x3
-    field public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT = 0; // 0x0
-    field public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER = 2; // 0x2
-    field public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES = 1; // 0x1
-    field public static final int MEMORY_TYPE_CHANGED = 256; // 0x100
-    field @Deprecated public static final int MEMORY_TYPE_GPU = 2; // 0x2
-    field @Deprecated public static final int MEMORY_TYPE_HARDWARE = 1; // 0x1
-    field @Deprecated public static final int MEMORY_TYPE_NORMAL = 0; // 0x0
-    field @Deprecated public static final int MEMORY_TYPE_PUSH_BUFFERS = 3; // 0x3
-    field public static final int ROTATION_ANIMATION_CHANGED = 4096; // 0x1000
-    field public static final int ROTATION_ANIMATION_CROSSFADE = 1; // 0x1
-    field public static final int ROTATION_ANIMATION_JUMPCUT = 2; // 0x2
-    field public static final int ROTATION_ANIMATION_ROTATE = 0; // 0x0
-    field public static final int ROTATION_ANIMATION_SEAMLESS = 3; // 0x3
-    field public static final int SCREEN_BRIGHTNESS_CHANGED = 2048; // 0x800
-    field public static final int SCREEN_ORIENTATION_CHANGED = 1024; // 0x400
-    field public static final int SOFT_INPUT_ADJUST_NOTHING = 48; // 0x30
-    field public static final int SOFT_INPUT_ADJUST_PAN = 32; // 0x20
-    field @Deprecated public static final int SOFT_INPUT_ADJUST_RESIZE = 16; // 0x10
-    field public static final int SOFT_INPUT_ADJUST_UNSPECIFIED = 0; // 0x0
-    field public static final int SOFT_INPUT_IS_FORWARD_NAVIGATION = 256; // 0x100
-    field public static final int SOFT_INPUT_MASK_ADJUST = 240; // 0xf0
-    field public static final int SOFT_INPUT_MASK_STATE = 15; // 0xf
-    field public static final int SOFT_INPUT_MODE_CHANGED = 512; // 0x200
-    field public static final int SOFT_INPUT_STATE_ALWAYS_HIDDEN = 3; // 0x3
-    field public static final int SOFT_INPUT_STATE_ALWAYS_VISIBLE = 5; // 0x5
-    field public static final int SOFT_INPUT_STATE_HIDDEN = 2; // 0x2
-    field public static final int SOFT_INPUT_STATE_UNCHANGED = 1; // 0x1
-    field public static final int SOFT_INPUT_STATE_UNSPECIFIED = 0; // 0x0
-    field public static final int SOFT_INPUT_STATE_VISIBLE = 4; // 0x4
-    field public static final int TITLE_CHANGED = 64; // 0x40
-    field public static final int TYPE_ACCESSIBILITY_OVERLAY = 2032; // 0x7f0
-    field public static final int TYPE_APPLICATION = 2; // 0x2
-    field public static final int TYPE_APPLICATION_ATTACHED_DIALOG = 1003; // 0x3eb
-    field public static final int TYPE_APPLICATION_MEDIA = 1001; // 0x3e9
-    field public static final int TYPE_APPLICATION_OVERLAY = 2038; // 0x7f6
-    field public static final int TYPE_APPLICATION_PANEL = 1000; // 0x3e8
-    field public static final int TYPE_APPLICATION_STARTING = 3; // 0x3
-    field public static final int TYPE_APPLICATION_SUB_PANEL = 1002; // 0x3ea
-    field public static final int TYPE_BASE_APPLICATION = 1; // 0x1
-    field public static final int TYPE_CHANGED = 2; // 0x2
-    field public static final int TYPE_DRAWN_APPLICATION = 4; // 0x4
-    field public static final int TYPE_INPUT_METHOD = 2011; // 0x7db
-    field public static final int TYPE_INPUT_METHOD_DIALOG = 2012; // 0x7dc
-    field public static final int TYPE_KEYGUARD_DIALOG = 2009; // 0x7d9
-    field @Deprecated public static final int TYPE_PHONE = 2002; // 0x7d2
-    field @Deprecated public static final int TYPE_PRIORITY_PHONE = 2007; // 0x7d7
-    field public static final int TYPE_PRIVATE_PRESENTATION = 2030; // 0x7ee
-    field public static final int TYPE_SEARCH_BAR = 2001; // 0x7d1
-    field public static final int TYPE_STATUS_BAR = 2000; // 0x7d0
-    field @Deprecated public static final int TYPE_STATUS_BAR_PANEL = 2014; // 0x7de
-    field @Deprecated public static final int TYPE_SYSTEM_ALERT = 2003; // 0x7d3
-    field public static final int TYPE_SYSTEM_DIALOG = 2008; // 0x7d8
-    field @Deprecated public static final int TYPE_SYSTEM_ERROR = 2010; // 0x7da
-    field @Deprecated public static final int TYPE_SYSTEM_OVERLAY = 2006; // 0x7d6
-    field @Deprecated public static final int TYPE_TOAST = 2005; // 0x7d5
-    field public static final int TYPE_WALLPAPER = 2013; // 0x7dd
-    field public float alpha;
-    field public float buttonBrightness;
-    field public float dimAmount;
-    field public int flags;
-    field public int format;
-    field public int gravity;
-    field public float horizontalMargin;
-    field public float horizontalWeight;
-    field public int layoutInDisplayCutoutMode;
-    field @Deprecated public int memoryType;
-    field public String packageName;
-    field public boolean preferMinimalPostProcessing;
-    field public int preferredDisplayModeId;
-    field @Deprecated public float preferredRefreshRate;
-    field public int rotationAnimation;
-    field public float screenBrightness;
-    field public int screenOrientation;
-    field public int softInputMode;
-    field @Deprecated public int systemUiVisibility;
-    field public android.os.IBinder token;
-    field public int type;
-    field public float verticalMargin;
-    field public float verticalWeight;
-    field public int windowAnimations;
-    field public int x;
-    field public int y;
-  }
-
-  public final class WindowMetrics {
-    ctor public WindowMetrics(@NonNull android.graphics.Rect, @NonNull android.view.WindowInsets);
-    method @NonNull public android.graphics.Rect getBounds();
-    method @NonNull public android.view.WindowInsets getWindowInsets();
-  }
-
-}
-
-package android.view.accessibility {
-
-  public final class AccessibilityEvent extends android.view.accessibility.AccessibilityRecord implements android.os.Parcelable {
-    ctor public AccessibilityEvent();
-    ctor public AccessibilityEvent(int);
-    ctor public AccessibilityEvent(@NonNull android.view.accessibility.AccessibilityEvent);
-    method public void appendRecord(android.view.accessibility.AccessibilityRecord);
-    method public int describeContents();
-    method public static String eventTypeToString(int);
-    method public int getAction();
-    method public int getContentChangeTypes();
-    method public long getEventTime();
-    method public int getEventType();
-    method public int getMovementGranularity();
-    method public CharSequence getPackageName();
-    method public android.view.accessibility.AccessibilityRecord getRecord(int);
-    method public int getRecordCount();
-    method public int getWindowChanges();
-    method public void initFromParcel(android.os.Parcel);
-    method public static android.view.accessibility.AccessibilityEvent obtain(int);
-    method public static android.view.accessibility.AccessibilityEvent obtain(android.view.accessibility.AccessibilityEvent);
-    method public static android.view.accessibility.AccessibilityEvent obtain();
-    method public void setAction(int);
-    method public void setContentChangeTypes(int);
-    method public void setEventTime(long);
-    method public void setEventType(int);
-    method public void setMovementGranularity(int);
-    method public void setPackageName(CharSequence);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 4; // 0x4
-    field public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 16; // 0x10
-    field public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 32; // 0x20
-    field public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 8; // 0x8
-    field public static final int CONTENT_CHANGE_TYPE_STATE_DESCRIPTION = 64; // 0x40
-    field public static final int CONTENT_CHANGE_TYPE_SUBTREE = 1; // 0x1
-    field public static final int CONTENT_CHANGE_TYPE_TEXT = 2; // 0x2
-    field public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.accessibility.AccessibilityEvent> CREATOR;
-    field public static final int INVALID_POSITION = -1; // 0xffffffff
-    field @Deprecated public static final int MAX_TEXT_LENGTH = 500; // 0x1f4
-    field public static final int TYPES_ALL_MASK = -1; // 0xffffffff
-    field public static final int TYPE_ANNOUNCEMENT = 16384; // 0x4000
-    field public static final int TYPE_ASSIST_READING_CONTEXT = 16777216; // 0x1000000
-    field public static final int TYPE_GESTURE_DETECTION_END = 524288; // 0x80000
-    field public static final int TYPE_GESTURE_DETECTION_START = 262144; // 0x40000
-    field public static final int TYPE_NOTIFICATION_STATE_CHANGED = 64; // 0x40
-    field public static final int TYPE_TOUCH_EXPLORATION_GESTURE_END = 1024; // 0x400
-    field public static final int TYPE_TOUCH_EXPLORATION_GESTURE_START = 512; // 0x200
-    field public static final int TYPE_TOUCH_INTERACTION_END = 2097152; // 0x200000
-    field public static final int TYPE_TOUCH_INTERACTION_START = 1048576; // 0x100000
-    field public static final int TYPE_VIEW_ACCESSIBILITY_FOCUSED = 32768; // 0x8000
-    field public static final int TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED = 65536; // 0x10000
-    field public static final int TYPE_VIEW_CLICKED = 1; // 0x1
-    field public static final int TYPE_VIEW_CONTEXT_CLICKED = 8388608; // 0x800000
-    field public static final int TYPE_VIEW_FOCUSED = 8; // 0x8
-    field public static final int TYPE_VIEW_HOVER_ENTER = 128; // 0x80
-    field public static final int TYPE_VIEW_HOVER_EXIT = 256; // 0x100
-    field public static final int TYPE_VIEW_LONG_CLICKED = 2; // 0x2
-    field public static final int TYPE_VIEW_SCROLLED = 4096; // 0x1000
-    field public static final int TYPE_VIEW_SELECTED = 4; // 0x4
-    field public static final int TYPE_VIEW_TEXT_CHANGED = 16; // 0x10
-    field public static final int TYPE_VIEW_TEXT_SELECTION_CHANGED = 8192; // 0x2000
-    field public static final int TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY = 131072; // 0x20000
-    field public static final int TYPE_WINDOWS_CHANGED = 4194304; // 0x400000
-    field public static final int TYPE_WINDOW_CONTENT_CHANGED = 2048; // 0x800
-    field public static final int TYPE_WINDOW_STATE_CHANGED = 32; // 0x20
-    field public static final int WINDOWS_CHANGE_ACCESSIBILITY_FOCUSED = 128; // 0x80
-    field public static final int WINDOWS_CHANGE_ACTIVE = 32; // 0x20
-    field public static final int WINDOWS_CHANGE_ADDED = 1; // 0x1
-    field public static final int WINDOWS_CHANGE_BOUNDS = 8; // 0x8
-    field public static final int WINDOWS_CHANGE_CHILDREN = 512; // 0x200
-    field public static final int WINDOWS_CHANGE_FOCUSED = 64; // 0x40
-    field public static final int WINDOWS_CHANGE_LAYER = 16; // 0x10
-    field public static final int WINDOWS_CHANGE_PARENT = 256; // 0x100
-    field public static final int WINDOWS_CHANGE_PIP = 1024; // 0x400
-    field public static final int WINDOWS_CHANGE_REMOVED = 2; // 0x2
-    field public static final int WINDOWS_CHANGE_TITLE = 4; // 0x4
-  }
-
-  public interface AccessibilityEventSource {
-    method public void sendAccessibilityEvent(int);
-    method public void sendAccessibilityEventUnchecked(android.view.accessibility.AccessibilityEvent);
-  }
-
-  public final class AccessibilityManager {
-    method public void addAccessibilityRequestPreparer(android.view.accessibility.AccessibilityRequestPreparer);
-    method public boolean addAccessibilityStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener);
-    method public void addAccessibilityStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener, @Nullable android.os.Handler);
-    method public boolean addTouchExplorationStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener);
-    method public void addTouchExplorationStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener, @Nullable android.os.Handler);
-    method @Deprecated public java.util.List<android.content.pm.ServiceInfo> getAccessibilityServiceList();
-    method public java.util.List<android.accessibilityservice.AccessibilityServiceInfo> getEnabledAccessibilityServiceList(int);
-    method public java.util.List<android.accessibilityservice.AccessibilityServiceInfo> getInstalledAccessibilityServiceList();
-    method public int getRecommendedTimeoutMillis(int, int);
-    method public void interrupt();
-    method public static boolean isAccessibilityButtonSupported();
-    method public boolean isEnabled();
-    method public boolean isTouchExplorationEnabled();
-    method public void removeAccessibilityRequestPreparer(android.view.accessibility.AccessibilityRequestPreparer);
-    method public boolean removeAccessibilityStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener);
-    method public boolean removeTouchExplorationStateChangeListener(@NonNull android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener);
-    method public void sendAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    field public static final int FLAG_CONTENT_CONTROLS = 4; // 0x4
-    field public static final int FLAG_CONTENT_ICONS = 1; // 0x1
-    field public static final int FLAG_CONTENT_TEXT = 2; // 0x2
-  }
-
-  public static interface AccessibilityManager.AccessibilityStateChangeListener {
-    method public void onAccessibilityStateChanged(boolean);
-  }
-
-  public static interface AccessibilityManager.TouchExplorationStateChangeListener {
-    method public void onTouchExplorationStateChanged(boolean);
-  }
-
-  public class AccessibilityNodeInfo implements android.os.Parcelable {
-    ctor public AccessibilityNodeInfo();
-    ctor public AccessibilityNodeInfo(@NonNull android.view.View);
-    ctor public AccessibilityNodeInfo(@NonNull android.view.View, int);
-    ctor public AccessibilityNodeInfo(@NonNull android.view.accessibility.AccessibilityNodeInfo);
-    method public void addAction(android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction);
-    method @Deprecated public void addAction(int);
-    method public void addChild(android.view.View);
-    method public void addChild(android.view.View, int);
-    method public boolean canOpenPopup();
-    method public int describeContents();
-    method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByText(String);
-    method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByViewId(String);
-    method public android.view.accessibility.AccessibilityNodeInfo findFocus(int);
-    method public android.view.accessibility.AccessibilityNodeInfo focusSearch(int);
-    method public java.util.List<android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction> getActionList();
-    method @Deprecated public int getActions();
-    method public java.util.List<java.lang.String> getAvailableExtraData();
-    method @Deprecated public void getBoundsInParent(android.graphics.Rect);
-    method public void getBoundsInScreen(android.graphics.Rect);
-    method public android.view.accessibility.AccessibilityNodeInfo getChild(int);
-    method public int getChildCount();
-    method public CharSequence getClassName();
-    method public android.view.accessibility.AccessibilityNodeInfo.CollectionInfo getCollectionInfo();
-    method public android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo getCollectionItemInfo();
-    method public CharSequence getContentDescription();
-    method public int getDrawingOrder();
-    method public CharSequence getError();
-    method @Nullable public android.view.accessibility.AccessibilityNodeInfo.ExtraRenderingInfo getExtraRenderingInfo();
-    method public android.os.Bundle getExtras();
-    method public CharSequence getHintText();
-    method public int getInputType();
-    method public android.view.accessibility.AccessibilityNodeInfo getLabelFor();
-    method public android.view.accessibility.AccessibilityNodeInfo getLabeledBy();
-    method public int getLiveRegion();
-    method public int getMaxTextLength();
-    method public int getMovementGranularities();
-    method public CharSequence getPackageName();
-    method @Nullable public CharSequence getPaneTitle();
-    method public android.view.accessibility.AccessibilityNodeInfo getParent();
-    method public android.view.accessibility.AccessibilityNodeInfo.RangeInfo getRangeInfo();
-    method @Nullable public CharSequence getStateDescription();
-    method public CharSequence getText();
-    method public int getTextSelectionEnd();
-    method public int getTextSelectionStart();
-    method @Nullable public CharSequence getTooltipText();
-    method @Nullable public android.view.accessibility.AccessibilityNodeInfo.TouchDelegateInfo getTouchDelegateInfo();
-    method public android.view.accessibility.AccessibilityNodeInfo getTraversalAfter();
-    method public android.view.accessibility.AccessibilityNodeInfo getTraversalBefore();
-    method public String getViewIdResourceName();
-    method public android.view.accessibility.AccessibilityWindowInfo getWindow();
-    method public int getWindowId();
-    method public boolean isAccessibilityFocused();
-    method public boolean isCheckable();
-    method public boolean isChecked();
-    method public boolean isClickable();
-    method public boolean isContentInvalid();
-    method public boolean isContextClickable();
-    method public boolean isDismissable();
-    method public boolean isEditable();
-    method public boolean isEnabled();
-    method public boolean isFocusable();
-    method public boolean isFocused();
-    method public boolean isHeading();
-    method public boolean isImportantForAccessibility();
-    method public boolean isLongClickable();
-    method public boolean isMultiLine();
-    method public boolean isPassword();
-    method public boolean isScreenReaderFocusable();
-    method public boolean isScrollable();
-    method public boolean isSelected();
-    method public boolean isShowingHintText();
-    method public boolean isTextEntryKey();
-    method public boolean isVisibleToUser();
-    method public static android.view.accessibility.AccessibilityNodeInfo obtain(android.view.View);
-    method public static android.view.accessibility.AccessibilityNodeInfo obtain(android.view.View, int);
-    method public static android.view.accessibility.AccessibilityNodeInfo obtain();
-    method public static android.view.accessibility.AccessibilityNodeInfo obtain(android.view.accessibility.AccessibilityNodeInfo);
-    method public boolean performAction(int);
-    method public boolean performAction(int, android.os.Bundle);
-    method public void recycle();
-    method public boolean refresh();
-    method public boolean refreshWithExtraData(String, android.os.Bundle);
-    method @Deprecated public void removeAction(int);
-    method public boolean removeAction(android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction);
-    method public boolean removeChild(android.view.View);
-    method public boolean removeChild(android.view.View, int);
-    method public void setAccessibilityFocused(boolean);
-    method public void setAvailableExtraData(java.util.List<java.lang.String>);
-    method @Deprecated public void setBoundsInParent(android.graphics.Rect);
-    method public void setBoundsInScreen(android.graphics.Rect);
-    method public void setCanOpenPopup(boolean);
-    method public void setCheckable(boolean);
-    method public void setChecked(boolean);
-    method public void setClassName(CharSequence);
-    method public void setClickable(boolean);
-    method public void setCollectionInfo(android.view.accessibility.AccessibilityNodeInfo.CollectionInfo);
-    method public void setCollectionItemInfo(android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo);
-    method public void setContentDescription(CharSequence);
-    method public void setContentInvalid(boolean);
-    method public void setContextClickable(boolean);
-    method public void setDismissable(boolean);
-    method public void setDrawingOrder(int);
-    method public void setEditable(boolean);
-    method public void setEnabled(boolean);
-    method public void setError(CharSequence);
-    method public void setFocusable(boolean);
-    method public void setFocused(boolean);
-    method public void setHeading(boolean);
-    method public void setHintText(CharSequence);
-    method public void setImportantForAccessibility(boolean);
-    method public void setInputType(int);
-    method public void setLabelFor(android.view.View);
-    method public void setLabelFor(android.view.View, int);
-    method public void setLabeledBy(android.view.View);
-    method public void setLabeledBy(android.view.View, int);
-    method public void setLiveRegion(int);
-    method public void setLongClickable(boolean);
-    method public void setMaxTextLength(int);
-    method public void setMovementGranularities(int);
-    method public void setMultiLine(boolean);
-    method public void setPackageName(CharSequence);
-    method public void setPaneTitle(@Nullable CharSequence);
-    method public void setParent(android.view.View);
-    method public void setParent(android.view.View, int);
-    method public void setPassword(boolean);
-    method public void setRangeInfo(android.view.accessibility.AccessibilityNodeInfo.RangeInfo);
-    method public void setScreenReaderFocusable(boolean);
-    method public void setScrollable(boolean);
-    method public void setSelected(boolean);
-    method public void setShowingHintText(boolean);
-    method public void setSource(android.view.View);
-    method public void setSource(android.view.View, int);
-    method public void setStateDescription(@Nullable CharSequence);
-    method public void setText(CharSequence);
-    method public void setTextEntryKey(boolean);
-    method public void setTextSelection(int, int);
-    method public void setTooltipText(@Nullable CharSequence);
-    method public void setTouchDelegateInfo(@NonNull android.view.accessibility.AccessibilityNodeInfo.TouchDelegateInfo);
-    method public void setTraversalAfter(android.view.View);
-    method public void setTraversalAfter(android.view.View, int);
-    method public void setTraversalBefore(android.view.View);
-    method public void setTraversalBefore(android.view.View, int);
-    method public void setViewIdResourceName(String);
-    method public void setVisibleToUser(boolean);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ACTION_ACCESSIBILITY_FOCUS = 64; // 0x40
-    field public static final String ACTION_ARGUMENT_COLUMN_INT = "android.view.accessibility.action.ARGUMENT_COLUMN_INT";
-    field public static final String ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN = "ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN";
-    field public static final String ACTION_ARGUMENT_HTML_ELEMENT_STRING = "ACTION_ARGUMENT_HTML_ELEMENT_STRING";
-    field public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
-    field public static final String ACTION_ARGUMENT_MOVE_WINDOW_X = "ACTION_ARGUMENT_MOVE_WINDOW_X";
-    field public static final String ACTION_ARGUMENT_MOVE_WINDOW_Y = "ACTION_ARGUMENT_MOVE_WINDOW_Y";
-    field public static final String ACTION_ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT = "android.view.accessibility.action.ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT";
-    field public static final String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
-    field public static final String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
-    field public static final String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
-    field public static final String ACTION_ARGUMENT_SELECTION_START_INT = "ACTION_ARGUMENT_SELECTION_START_INT";
-    field public static final String ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE = "ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE";
-    field public static final int ACTION_CLEAR_ACCESSIBILITY_FOCUS = 128; // 0x80
-    field public static final int ACTION_CLEAR_FOCUS = 2; // 0x2
-    field public static final int ACTION_CLEAR_SELECTION = 8; // 0x8
-    field public static final int ACTION_CLICK = 16; // 0x10
-    field public static final int ACTION_COLLAPSE = 524288; // 0x80000
-    field public static final int ACTION_COPY = 16384; // 0x4000
-    field public static final int ACTION_CUT = 65536; // 0x10000
-    field public static final int ACTION_DISMISS = 1048576; // 0x100000
-    field public static final int ACTION_EXPAND = 262144; // 0x40000
-    field public static final int ACTION_FOCUS = 1; // 0x1
-    field public static final int ACTION_LONG_CLICK = 32; // 0x20
-    field public static final int ACTION_NEXT_AT_MOVEMENT_GRANULARITY = 256; // 0x100
-    field public static final int ACTION_NEXT_HTML_ELEMENT = 1024; // 0x400
-    field public static final int ACTION_PASTE = 32768; // 0x8000
-    field public static final int ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY = 512; // 0x200
-    field public static final int ACTION_PREVIOUS_HTML_ELEMENT = 2048; // 0x800
-    field public static final int ACTION_SCROLL_BACKWARD = 8192; // 0x2000
-    field public static final int ACTION_SCROLL_FORWARD = 4096; // 0x1000
-    field public static final int ACTION_SELECT = 4; // 0x4
-    field public static final int ACTION_SET_SELECTION = 131072; // 0x20000
-    field public static final int ACTION_SET_TEXT = 2097152; // 0x200000
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.accessibility.AccessibilityNodeInfo> CREATOR;
-    field public static final String EXTRA_DATA_RENDERING_INFO_KEY = "android.view.accessibility.extra.DATA_RENDERING_INFO_KEY";
-    field public static final String EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_LENGTH = "android.view.accessibility.extra.DATA_TEXT_CHARACTER_LOCATION_ARG_LENGTH";
-    field public static final String EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_START_INDEX = "android.view.accessibility.extra.DATA_TEXT_CHARACTER_LOCATION_ARG_START_INDEX";
-    field public static final String EXTRA_DATA_TEXT_CHARACTER_LOCATION_KEY = "android.view.accessibility.extra.DATA_TEXT_CHARACTER_LOCATION_KEY";
-    field public static final int FOCUS_ACCESSIBILITY = 2; // 0x2
-    field public static final int FOCUS_INPUT = 1; // 0x1
-    field public static final int MOVEMENT_GRANULARITY_CHARACTER = 1; // 0x1
-    field public static final int MOVEMENT_GRANULARITY_LINE = 4; // 0x4
-    field public static final int MOVEMENT_GRANULARITY_PAGE = 16; // 0x10
-    field public static final int MOVEMENT_GRANULARITY_PARAGRAPH = 8; // 0x8
-    field public static final int MOVEMENT_GRANULARITY_WORD = 2; // 0x2
-  }
-
-  public static final class AccessibilityNodeInfo.AccessibilityAction implements android.os.Parcelable {
-    ctor public AccessibilityNodeInfo.AccessibilityAction(int, @Nullable CharSequence);
-    method public int describeContents();
-    method public int getId();
-    method public CharSequence getLabel();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_ACCESSIBILITY_FOCUS;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_CLEAR_ACCESSIBILITY_FOCUS;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_CLEAR_FOCUS;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_CLEAR_SELECTION;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_CLICK;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_COLLAPSE;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_CONTEXT_CLICK;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_COPY;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_CUT;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_DISMISS;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_EXPAND;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_FOCUS;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_HIDE_TOOLTIP;
-    field @NonNull public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_IME_ENTER;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_LONG_CLICK;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_MOVE_WINDOW;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_NEXT_AT_MOVEMENT_GRANULARITY;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_NEXT_HTML_ELEMENT;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PAGE_DOWN;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PAGE_LEFT;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PAGE_RIGHT;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PAGE_UP;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PASTE;
-    field @NonNull public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PRESS_AND_HOLD;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PREVIOUS_HTML_ELEMENT;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SCROLL_BACKWARD;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SCROLL_DOWN;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SCROLL_FORWARD;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SCROLL_LEFT;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SCROLL_RIGHT;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SCROLL_TO_POSITION;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SCROLL_UP;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SELECT;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SET_PROGRESS;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SET_SELECTION;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SET_TEXT;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SHOW_ON_SCREEN;
-    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SHOW_TOOLTIP;
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction> CREATOR;
-  }
-
-  public static final class AccessibilityNodeInfo.CollectionInfo {
-    ctor public AccessibilityNodeInfo.CollectionInfo(int, int, boolean);
-    ctor public AccessibilityNodeInfo.CollectionInfo(int, int, boolean, int);
-    method public int getColumnCount();
-    method public int getRowCount();
-    method public int getSelectionMode();
-    method public boolean isHierarchical();
-    method public static android.view.accessibility.AccessibilityNodeInfo.CollectionInfo obtain(int, int, boolean);
-    method public static android.view.accessibility.AccessibilityNodeInfo.CollectionInfo obtain(int, int, boolean, int);
-    field public static final int SELECTION_MODE_MULTIPLE = 2; // 0x2
-    field public static final int SELECTION_MODE_NONE = 0; // 0x0
-    field public static final int SELECTION_MODE_SINGLE = 1; // 0x1
-  }
-
-  public static final class AccessibilityNodeInfo.CollectionItemInfo {
-    ctor public AccessibilityNodeInfo.CollectionItemInfo(int, int, int, int, boolean);
-    ctor public AccessibilityNodeInfo.CollectionItemInfo(int, int, int, int, boolean, boolean);
-    method public int getColumnIndex();
-    method public int getColumnSpan();
-    method public int getRowIndex();
-    method public int getRowSpan();
-    method @Deprecated public boolean isHeading();
-    method public boolean isSelected();
-    method public static android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo obtain(int, int, int, int, boolean);
-    method public static android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo obtain(int, int, int, int, boolean, boolean);
-  }
-
-  public static final class AccessibilityNodeInfo.ExtraRenderingInfo {
-    method @Nullable public android.util.Size getLayoutSize();
-    method public float getTextSizeInPx();
-    method public int getTextSizeUnit();
-  }
-
-  public static final class AccessibilityNodeInfo.RangeInfo {
-    ctor public AccessibilityNodeInfo.RangeInfo(int, float, float, float);
-    method public float getCurrent();
-    method public float getMax();
-    method public float getMin();
-    method public int getType();
-    method public static android.view.accessibility.AccessibilityNodeInfo.RangeInfo obtain(int, float, float, float);
-    field public static final int RANGE_TYPE_FLOAT = 1; // 0x1
-    field public static final int RANGE_TYPE_INT = 0; // 0x0
-    field public static final int RANGE_TYPE_PERCENT = 2; // 0x2
-  }
-
-  public static final class AccessibilityNodeInfo.TouchDelegateInfo implements android.os.Parcelable {
-    ctor public AccessibilityNodeInfo.TouchDelegateInfo(@NonNull java.util.Map<android.graphics.Region,android.view.View>);
-    method public int describeContents();
-    method @NonNull public android.graphics.Region getRegionAt(int);
-    method public int getRegionCount();
-    method @Nullable public android.view.accessibility.AccessibilityNodeInfo getTargetForRegion(@NonNull android.graphics.Region);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.accessibility.AccessibilityNodeInfo.TouchDelegateInfo> CREATOR;
-  }
-
-  public abstract class AccessibilityNodeProvider {
-    ctor public AccessibilityNodeProvider();
-    method public void addExtraDataToAccessibilityNodeInfo(int, android.view.accessibility.AccessibilityNodeInfo, String, android.os.Bundle);
-    method public android.view.accessibility.AccessibilityNodeInfo createAccessibilityNodeInfo(int);
-    method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByText(String, int);
-    method public android.view.accessibility.AccessibilityNodeInfo findFocus(int);
-    method public boolean performAction(int, int, android.os.Bundle);
-    field public static final int HOST_VIEW_ID = -1; // 0xffffffff
-  }
-
-  public class AccessibilityRecord {
-    ctor public AccessibilityRecord();
-    ctor public AccessibilityRecord(@NonNull android.view.accessibility.AccessibilityRecord);
-    method public int getAddedCount();
-    method public CharSequence getBeforeText();
-    method public CharSequence getClassName();
-    method public CharSequence getContentDescription();
-    method public int getCurrentItemIndex();
-    method public int getFromIndex();
-    method public int getItemCount();
-    method public int getMaxScrollX();
-    method public int getMaxScrollY();
-    method public android.os.Parcelable getParcelableData();
-    method public int getRemovedCount();
-    method public int getScrollDeltaX();
-    method public int getScrollDeltaY();
-    method public int getScrollX();
-    method public int getScrollY();
-    method public android.view.accessibility.AccessibilityNodeInfo getSource();
-    method public java.util.List<java.lang.CharSequence> getText();
-    method public int getToIndex();
-    method public int getWindowId();
-    method public boolean isChecked();
-    method public boolean isEnabled();
-    method public boolean isFullScreen();
-    method public boolean isPassword();
-    method public boolean isScrollable();
-    method public static android.view.accessibility.AccessibilityRecord obtain(android.view.accessibility.AccessibilityRecord);
-    method public static android.view.accessibility.AccessibilityRecord obtain();
-    method public void recycle();
-    method public void setAddedCount(int);
-    method public void setBeforeText(CharSequence);
-    method public void setChecked(boolean);
-    method public void setClassName(CharSequence);
-    method public void setContentDescription(CharSequence);
-    method public void setCurrentItemIndex(int);
-    method public void setEnabled(boolean);
-    method public void setFromIndex(int);
-    method public void setFullScreen(boolean);
-    method public void setItemCount(int);
-    method public void setMaxScrollX(int);
-    method public void setMaxScrollY(int);
-    method public void setParcelableData(android.os.Parcelable);
-    method public void setPassword(boolean);
-    method public void setRemovedCount(int);
-    method public void setScrollDeltaX(int);
-    method public void setScrollDeltaY(int);
-    method public void setScrollX(int);
-    method public void setScrollY(int);
-    method public void setScrollable(boolean);
-    method public void setSource(android.view.View);
-    method public void setSource(@Nullable android.view.View, int);
-    method public void setToIndex(int);
-  }
-
-  public abstract class AccessibilityRequestPreparer {
-    ctor public AccessibilityRequestPreparer(android.view.View, int);
-    method @Nullable public android.view.View getView();
-    method public abstract void onPrepareExtraData(int, String, android.os.Bundle, android.os.Message);
-    field public static final int REQUEST_TYPE_EXTRA_DATA = 1; // 0x1
-  }
-
-  public final class AccessibilityWindowInfo implements android.os.Parcelable {
-    ctor public AccessibilityWindowInfo();
-    ctor public AccessibilityWindowInfo(@NonNull android.view.accessibility.AccessibilityWindowInfo);
-    method public int describeContents();
-    method public android.view.accessibility.AccessibilityNodeInfo getAnchor();
-    method public void getBoundsInScreen(android.graphics.Rect);
-    method public android.view.accessibility.AccessibilityWindowInfo getChild(int);
-    method public int getChildCount();
-    method public int getDisplayId();
-    method public int getId();
-    method public int getLayer();
-    method public android.view.accessibility.AccessibilityWindowInfo getParent();
-    method public void getRegionInScreen(@NonNull android.graphics.Region);
-    method public android.view.accessibility.AccessibilityNodeInfo getRoot();
-    method @Nullable public CharSequence getTitle();
-    method public int getType();
-    method public boolean isAccessibilityFocused();
-    method public boolean isActive();
-    method public boolean isFocused();
-    method public boolean isInPictureInPictureMode();
-    method public static android.view.accessibility.AccessibilityWindowInfo obtain();
-    method public static android.view.accessibility.AccessibilityWindowInfo obtain(android.view.accessibility.AccessibilityWindowInfo);
-    method public void recycle();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.accessibility.AccessibilityWindowInfo> CREATOR;
-    field public static final int TYPE_ACCESSIBILITY_OVERLAY = 4; // 0x4
-    field public static final int TYPE_APPLICATION = 1; // 0x1
-    field public static final int TYPE_INPUT_METHOD = 2; // 0x2
-    field public static final int TYPE_SPLIT_SCREEN_DIVIDER = 5; // 0x5
-    field public static final int TYPE_SYSTEM = 3; // 0x3
-  }
-
-  public class CaptioningManager {
-    method public void addCaptioningChangeListener(@NonNull android.view.accessibility.CaptioningManager.CaptioningChangeListener);
-    method public final float getFontScale();
-    method @Nullable public final java.util.Locale getLocale();
-    method @NonNull public android.view.accessibility.CaptioningManager.CaptionStyle getUserStyle();
-    method public final boolean isEnabled();
-    method public void removeCaptioningChangeListener(@NonNull android.view.accessibility.CaptioningManager.CaptioningChangeListener);
-  }
-
-  public static final class CaptioningManager.CaptionStyle {
-    method @Nullable public android.graphics.Typeface getTypeface();
-    method public boolean hasBackgroundColor();
-    method public boolean hasEdgeColor();
-    method public boolean hasEdgeType();
-    method public boolean hasForegroundColor();
-    method public boolean hasWindowColor();
-    field public static final int EDGE_TYPE_DEPRESSED = 4; // 0x4
-    field public static final int EDGE_TYPE_DROP_SHADOW = 2; // 0x2
-    field public static final int EDGE_TYPE_NONE = 0; // 0x0
-    field public static final int EDGE_TYPE_OUTLINE = 1; // 0x1
-    field public static final int EDGE_TYPE_RAISED = 3; // 0x3
-    field public static final int EDGE_TYPE_UNSPECIFIED = -1; // 0xffffffff
-    field public final int backgroundColor;
-    field public final int edgeColor;
-    field public final int edgeType;
-    field public final int foregroundColor;
-    field public final int windowColor;
-  }
-
-  public abstract static class CaptioningManager.CaptioningChangeListener {
-    ctor public CaptioningManager.CaptioningChangeListener();
-    method public void onEnabledChanged(boolean);
-    method public void onFontScaleChanged(float);
-    method public void onLocaleChanged(@Nullable java.util.Locale);
-    method public void onUserStyleChanged(@NonNull android.view.accessibility.CaptioningManager.CaptionStyle);
-  }
-
-}
-
-package android.view.animation {
-
-  public class AccelerateDecelerateInterpolator extends android.view.animation.BaseInterpolator {
-    ctor public AccelerateDecelerateInterpolator();
-    ctor public AccelerateDecelerateInterpolator(android.content.Context, android.util.AttributeSet);
-    method public float getInterpolation(float);
-  }
-
-  public class AccelerateInterpolator extends android.view.animation.BaseInterpolator {
-    ctor public AccelerateInterpolator();
-    ctor public AccelerateInterpolator(float);
-    ctor public AccelerateInterpolator(android.content.Context, android.util.AttributeSet);
-    method public float getInterpolation(float);
-  }
-
-  public class AlphaAnimation extends android.view.animation.Animation {
-    ctor public AlphaAnimation(android.content.Context, android.util.AttributeSet);
-    ctor public AlphaAnimation(float, float);
-  }
-
-  public abstract class Animation implements java.lang.Cloneable {
-    ctor public Animation();
-    ctor public Animation(android.content.Context, android.util.AttributeSet);
-    method protected void applyTransformation(float, android.view.animation.Transformation);
-    method public void cancel();
-    method protected android.view.animation.Animation clone() throws java.lang.CloneNotSupportedException;
-    method public long computeDurationHint();
-    method protected void ensureInterpolator();
-    method @Deprecated @ColorInt public int getBackgroundColor();
-    method @Deprecated public boolean getDetachWallpaper();
-    method public long getDuration();
-    method public boolean getFillAfter();
-    method public boolean getFillBefore();
-    method public android.view.animation.Interpolator getInterpolator();
-    method public int getRepeatCount();
-    method public int getRepeatMode();
-    method protected float getScaleFactor();
-    method public long getStartOffset();
-    method public long getStartTime();
-    method public boolean getTransformation(long, android.view.animation.Transformation);
-    method public boolean getTransformation(long, android.view.animation.Transformation, float);
-    method public int getZAdjustment();
-    method public boolean hasEnded();
-    method public boolean hasStarted();
-    method public void initialize(int, int, int, int);
-    method public boolean isFillEnabled();
-    method public boolean isInitialized();
-    method public void reset();
-    method protected float resolveSize(int, float, int, int);
-    method public void restrictDuration(long);
-    method public void scaleCurrentDuration(float);
-    method public void setAnimationListener(android.view.animation.Animation.AnimationListener);
-    method @Deprecated public void setBackgroundColor(@ColorInt int);
-    method @Deprecated public void setDetachWallpaper(boolean);
-    method public void setDuration(long);
-    method public void setFillAfter(boolean);
-    method public void setFillBefore(boolean);
-    method public void setFillEnabled(boolean);
-    method public void setInterpolator(android.content.Context, @AnimRes @InterpolatorRes int);
-    method public void setInterpolator(android.view.animation.Interpolator);
-    method public void setRepeatCount(int);
-    method public void setRepeatMode(int);
-    method public void setStartOffset(long);
-    method public void setStartTime(long);
-    method public void setZAdjustment(int);
-    method public void start();
-    method public void startNow();
-    method public boolean willChangeBounds();
-    method public boolean willChangeTransformationMatrix();
-    field public static final int ABSOLUTE = 0; // 0x0
-    field public static final int INFINITE = -1; // 0xffffffff
-    field public static final int RELATIVE_TO_PARENT = 2; // 0x2
-    field public static final int RELATIVE_TO_SELF = 1; // 0x1
-    field public static final int RESTART = 1; // 0x1
-    field public static final int REVERSE = 2; // 0x2
-    field public static final int START_ON_FIRST_FRAME = -1; // 0xffffffff
-    field public static final int ZORDER_BOTTOM = -1; // 0xffffffff
-    field public static final int ZORDER_NORMAL = 0; // 0x0
-    field public static final int ZORDER_TOP = 1; // 0x1
-  }
-
-  public static interface Animation.AnimationListener {
-    method public void onAnimationEnd(android.view.animation.Animation);
-    method public void onAnimationRepeat(android.view.animation.Animation);
-    method public void onAnimationStart(android.view.animation.Animation);
-  }
-
-  protected static class Animation.Description {
-    ctor protected Animation.Description();
-    field public int type;
-    field public float value;
-  }
-
-  public class AnimationSet extends android.view.animation.Animation {
-    ctor public AnimationSet(android.content.Context, android.util.AttributeSet);
-    ctor public AnimationSet(boolean);
-    method public void addAnimation(android.view.animation.Animation);
-    method protected android.view.animation.AnimationSet clone() throws java.lang.CloneNotSupportedException;
-    method public java.util.List<android.view.animation.Animation> getAnimations();
-  }
-
-  public class AnimationUtils {
-    ctor public AnimationUtils();
-    method public static long currentAnimationTimeMillis();
-    method public static android.view.animation.Animation loadAnimation(android.content.Context, @AnimRes int) throws android.content.res.Resources.NotFoundException;
-    method public static android.view.animation.Interpolator loadInterpolator(android.content.Context, @AnimRes @InterpolatorRes int) throws android.content.res.Resources.NotFoundException;
-    method public static android.view.animation.LayoutAnimationController loadLayoutAnimation(android.content.Context, @AnimRes int) throws android.content.res.Resources.NotFoundException;
-    method public static android.view.animation.Animation makeInAnimation(android.content.Context, boolean);
-    method public static android.view.animation.Animation makeInChildBottomAnimation(android.content.Context);
-    method public static android.view.animation.Animation makeOutAnimation(android.content.Context, boolean);
-  }
-
-  public class AnticipateInterpolator extends android.view.animation.BaseInterpolator {
-    ctor public AnticipateInterpolator();
-    ctor public AnticipateInterpolator(float);
-    ctor public AnticipateInterpolator(android.content.Context, android.util.AttributeSet);
-    method public float getInterpolation(float);
-  }
-
-  public class AnticipateOvershootInterpolator extends android.view.animation.BaseInterpolator {
-    ctor public AnticipateOvershootInterpolator();
-    ctor public AnticipateOvershootInterpolator(float);
-    ctor public AnticipateOvershootInterpolator(float, float);
-    ctor public AnticipateOvershootInterpolator(android.content.Context, android.util.AttributeSet);
-    method public float getInterpolation(float);
-  }
-
-  public abstract class BaseInterpolator implements android.view.animation.Interpolator {
-    ctor public BaseInterpolator();
-  }
-
-  public class BounceInterpolator extends android.view.animation.BaseInterpolator {
-    ctor public BounceInterpolator();
-    ctor public BounceInterpolator(android.content.Context, android.util.AttributeSet);
-    method public float getInterpolation(float);
-  }
-
-  public class CycleInterpolator extends android.view.animation.BaseInterpolator {
-    ctor public CycleInterpolator(float);
-    ctor public CycleInterpolator(android.content.Context, android.util.AttributeSet);
-    method public float getInterpolation(float);
-  }
-
-  public class DecelerateInterpolator extends android.view.animation.BaseInterpolator {
-    ctor public DecelerateInterpolator();
-    ctor public DecelerateInterpolator(float);
-    ctor public DecelerateInterpolator(android.content.Context, android.util.AttributeSet);
-    method public float getInterpolation(float);
-  }
-
-  public class GridLayoutAnimationController extends android.view.animation.LayoutAnimationController {
-    ctor public GridLayoutAnimationController(android.content.Context, android.util.AttributeSet);
-    ctor public GridLayoutAnimationController(android.view.animation.Animation);
-    ctor public GridLayoutAnimationController(android.view.animation.Animation, float, float);
-    method public float getColumnDelay();
-    method public int getDirection();
-    method public int getDirectionPriority();
-    method public float getRowDelay();
-    method public void setColumnDelay(float);
-    method public void setDirection(int);
-    method public void setDirectionPriority(int);
-    method public void setRowDelay(float);
-    field public static final int DIRECTION_BOTTOM_TO_TOP = 2; // 0x2
-    field public static final int DIRECTION_HORIZONTAL_MASK = 1; // 0x1
-    field public static final int DIRECTION_LEFT_TO_RIGHT = 0; // 0x0
-    field public static final int DIRECTION_RIGHT_TO_LEFT = 1; // 0x1
-    field public static final int DIRECTION_TOP_TO_BOTTOM = 0; // 0x0
-    field public static final int DIRECTION_VERTICAL_MASK = 2; // 0x2
-    field public static final int PRIORITY_COLUMN = 1; // 0x1
-    field public static final int PRIORITY_NONE = 0; // 0x0
-    field public static final int PRIORITY_ROW = 2; // 0x2
-  }
-
-  public static class GridLayoutAnimationController.AnimationParameters extends android.view.animation.LayoutAnimationController.AnimationParameters {
-    ctor public GridLayoutAnimationController.AnimationParameters();
-    field public int column;
-    field public int columnsCount;
-    field public int row;
-    field public int rowsCount;
-  }
-
-  public interface Interpolator extends android.animation.TimeInterpolator {
-  }
-
-  public class LayoutAnimationController {
-    ctor public LayoutAnimationController(android.content.Context, android.util.AttributeSet);
-    ctor public LayoutAnimationController(android.view.animation.Animation);
-    ctor public LayoutAnimationController(android.view.animation.Animation, float);
-    method public android.view.animation.Animation getAnimation();
-    method public final android.view.animation.Animation getAnimationForView(android.view.View);
-    method public float getDelay();
-    method protected long getDelayForView(android.view.View);
-    method public android.view.animation.Interpolator getInterpolator();
-    method public int getOrder();
-    method protected int getTransformedIndex(android.view.animation.LayoutAnimationController.AnimationParameters);
-    method public boolean isDone();
-    method public void setAnimation(android.content.Context, @AnimRes int);
-    method public void setAnimation(android.view.animation.Animation);
-    method public void setDelay(float);
-    method public void setInterpolator(android.content.Context, @InterpolatorRes int);
-    method public void setInterpolator(android.view.animation.Interpolator);
-    method public void setOrder(int);
-    method public void start();
-    method public boolean willOverlap();
-    field public static final int ORDER_NORMAL = 0; // 0x0
-    field public static final int ORDER_RANDOM = 2; // 0x2
-    field public static final int ORDER_REVERSE = 1; // 0x1
-    field protected android.view.animation.Animation mAnimation;
-    field protected android.view.animation.Interpolator mInterpolator;
-    field protected java.util.Random mRandomizer;
-  }
-
-  public static class LayoutAnimationController.AnimationParameters {
-    ctor public LayoutAnimationController.AnimationParameters();
-    field public int count;
-    field public int index;
-  }
-
-  public class LinearInterpolator extends android.view.animation.BaseInterpolator {
-    ctor public LinearInterpolator();
-    ctor public LinearInterpolator(android.content.Context, android.util.AttributeSet);
-    method public float getInterpolation(float);
-  }
-
-  public class OvershootInterpolator extends android.view.animation.BaseInterpolator {
-    ctor public OvershootInterpolator();
-    ctor public OvershootInterpolator(float);
-    ctor public OvershootInterpolator(android.content.Context, android.util.AttributeSet);
-    method public float getInterpolation(float);
-  }
-
-  public class PathInterpolator extends android.view.animation.BaseInterpolator {
-    ctor public PathInterpolator(android.graphics.Path);
-    ctor public PathInterpolator(float, float);
-    ctor public PathInterpolator(float, float, float, float);
-    ctor public PathInterpolator(android.content.Context, android.util.AttributeSet);
-    method public float getInterpolation(float);
-  }
-
-  public class RotateAnimation extends android.view.animation.Animation {
-    ctor public RotateAnimation(android.content.Context, android.util.AttributeSet);
-    ctor public RotateAnimation(float, float);
-    ctor public RotateAnimation(float, float, float, float);
-    ctor public RotateAnimation(float, float, int, float, int, float);
-  }
-
-  public class ScaleAnimation extends android.view.animation.Animation {
-    ctor public ScaleAnimation(android.content.Context, android.util.AttributeSet);
-    ctor public ScaleAnimation(float, float, float, float);
-    ctor public ScaleAnimation(float, float, float, float, float, float);
-    ctor public ScaleAnimation(float, float, float, float, int, float, int, float);
-  }
-
-  public class Transformation {
-    ctor public Transformation();
-    method public void clear();
-    method public void compose(android.view.animation.Transformation);
-    method public float getAlpha();
-    method public android.graphics.Matrix getMatrix();
-    method public int getTransformationType();
-    method public void set(android.view.animation.Transformation);
-    method public void setAlpha(@FloatRange(from=0.0, to=1.0) float);
-    method public void setTransformationType(int);
-    method public String toShortString();
-    field public static final int TYPE_ALPHA = 1; // 0x1
-    field public static final int TYPE_BOTH = 3; // 0x3
-    field public static final int TYPE_IDENTITY = 0; // 0x0
-    field public static final int TYPE_MATRIX = 2; // 0x2
-    field protected float mAlpha;
-    field protected android.graphics.Matrix mMatrix;
-    field protected int mTransformationType;
-  }
-
-  public class TranslateAnimation extends android.view.animation.Animation {
-    ctor public TranslateAnimation(android.content.Context, android.util.AttributeSet);
-    ctor public TranslateAnimation(float, float, float, float);
-    ctor public TranslateAnimation(int, float, int, float, int, float, int, float);
-  }
-
-}
-
-package android.view.autofill {
-
-  public final class AutofillId implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.autofill.AutofillId> CREATOR;
-  }
-
-  public final class AutofillManager {
-    method public void cancel();
-    method public void commit();
-    method public void disableAutofillServices();
-    method @Nullable public android.content.ComponentName getAutofillServiceComponentName();
-    method @NonNull public java.util.List<java.lang.String> getAvailableFieldClassificationAlgorithms();
-    method @Nullable public String getDefaultFieldClassificationAlgorithm();
-    method @Nullable public android.view.autofill.AutofillId getNextAutofillId();
-    method @Nullable public android.service.autofill.UserData getUserData();
-    method @Nullable public String getUserDataId();
-    method public boolean hasEnabledAutofillServices();
-    method public boolean isAutofillSupported();
-    method public boolean isEnabled();
-    method public boolean isFieldClassificationEnabled();
-    method public void notifyValueChanged(android.view.View);
-    method public void notifyValueChanged(android.view.View, int, android.view.autofill.AutofillValue);
-    method public void notifyViewClicked(@NonNull android.view.View);
-    method public void notifyViewClicked(@NonNull android.view.View, int);
-    method public void notifyViewEntered(@NonNull android.view.View);
-    method public void notifyViewEntered(@NonNull android.view.View, int, @NonNull android.graphics.Rect);
-    method public void notifyViewExited(@NonNull android.view.View);
-    method public void notifyViewExited(@NonNull android.view.View, int);
-    method public void notifyViewVisibilityChanged(@NonNull android.view.View, boolean);
-    method public void notifyViewVisibilityChanged(@NonNull android.view.View, int, boolean);
-    method public void registerCallback(@Nullable android.view.autofill.AutofillManager.AutofillCallback);
-    method public void requestAutofill(@NonNull android.view.View);
-    method public void requestAutofill(@NonNull android.view.View, int, @NonNull android.graphics.Rect);
-    method public void setUserData(@Nullable android.service.autofill.UserData);
-    method public void unregisterCallback(@Nullable android.view.autofill.AutofillManager.AutofillCallback);
-    field public static final String EXTRA_ASSIST_STRUCTURE = "android.view.autofill.extra.ASSIST_STRUCTURE";
-    field public static final String EXTRA_AUTHENTICATION_RESULT = "android.view.autofill.extra.AUTHENTICATION_RESULT";
-    field public static final String EXTRA_CLIENT_STATE = "android.view.autofill.extra.CLIENT_STATE";
-  }
-
-  public abstract static class AutofillManager.AutofillCallback {
-    ctor public AutofillManager.AutofillCallback();
-    method public void onAutofillEvent(@NonNull android.view.View, int);
-    method public void onAutofillEvent(@NonNull android.view.View, int, int);
-    field public static final int EVENT_INPUT_HIDDEN = 2; // 0x2
-    field public static final int EVENT_INPUT_SHOWN = 1; // 0x1
-    field public static final int EVENT_INPUT_UNAVAILABLE = 3; // 0x3
-  }
-
-  public final class AutofillValue implements android.os.Parcelable {
-    method public int describeContents();
-    method public static android.view.autofill.AutofillValue forDate(long);
-    method public static android.view.autofill.AutofillValue forList(int);
-    method public static android.view.autofill.AutofillValue forText(@Nullable CharSequence);
-    method public static android.view.autofill.AutofillValue forToggle(boolean);
-    method public long getDateValue();
-    method public int getListValue();
-    method @NonNull public CharSequence getTextValue();
-    method public boolean getToggleValue();
-    method public boolean isDate();
-    method public boolean isList();
-    method public boolean isText();
-    method public boolean isToggle();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.autofill.AutofillValue> CREATOR;
-  }
-
-}
-
-package android.view.contentcapture {
-
-  public final class ContentCaptureCondition implements android.os.Parcelable {
-    ctor public ContentCaptureCondition(@NonNull android.content.LocusId, int);
-    method public int describeContents();
-    method public int getFlags();
-    method @NonNull public android.content.LocusId getLocusId();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.contentcapture.ContentCaptureCondition> CREATOR;
-    field public static final int FLAG_IS_REGEX = 2; // 0x2
-  }
-
-  public final class ContentCaptureContext implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public static android.view.contentcapture.ContentCaptureContext forLocusId(@NonNull String);
-    method @Nullable public android.os.Bundle getExtras();
-    method @Nullable public android.content.LocusId getLocusId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.contentcapture.ContentCaptureContext> CREATOR;
-  }
-
-  public static final class ContentCaptureContext.Builder {
-    ctor public ContentCaptureContext.Builder(@NonNull android.content.LocusId);
-    method @NonNull public android.view.contentcapture.ContentCaptureContext build();
-    method @NonNull public android.view.contentcapture.ContentCaptureContext.Builder setExtras(@NonNull android.os.Bundle);
-  }
-
-  public final class ContentCaptureManager {
-    method @Nullable public java.util.Set<android.view.contentcapture.ContentCaptureCondition> getContentCaptureConditions();
-    method @Nullable public android.content.ComponentName getServiceComponentName();
-    method public boolean isContentCaptureEnabled();
-    method public void removeData(@NonNull android.view.contentcapture.DataRemovalRequest);
-    method public void setContentCaptureEnabled(boolean);
-    method public void shareData(@NonNull android.view.contentcapture.DataShareRequest, @NonNull java.util.concurrent.Executor, @NonNull android.view.contentcapture.DataShareWriteAdapter);
-    field public static final int DATA_SHARE_ERROR_CONCURRENT_REQUEST = 2; // 0x2
-    field public static final int DATA_SHARE_ERROR_TIMEOUT_INTERRUPTED = 3; // 0x3
-    field public static final int DATA_SHARE_ERROR_UNKNOWN = 1; // 0x1
-  }
-
-  public abstract class ContentCaptureSession implements java.lang.AutoCloseable {
-    method public void close();
-    method @NonNull public final android.view.contentcapture.ContentCaptureSession createContentCaptureSession(@NonNull android.view.contentcapture.ContentCaptureContext);
-    method public final void destroy();
-    method @Nullable public final android.view.contentcapture.ContentCaptureContext getContentCaptureContext();
-    method @NonNull public final android.view.contentcapture.ContentCaptureSessionId getContentCaptureSessionId();
-    method @NonNull public android.view.autofill.AutofillId newAutofillId(@NonNull android.view.autofill.AutofillId, long);
-    method @NonNull public final android.view.ViewStructure newViewStructure(@NonNull android.view.View);
-    method @NonNull public final android.view.ViewStructure newVirtualViewStructure(@NonNull android.view.autofill.AutofillId, long);
-    method public final void notifySessionPaused();
-    method public final void notifySessionResumed();
-    method public final void notifyViewAppeared(@NonNull android.view.ViewStructure);
-    method public final void notifyViewDisappeared(@NonNull android.view.autofill.AutofillId);
-    method public final void notifyViewInsetsChanged(@NonNull android.graphics.Insets);
-    method public final void notifyViewTextChanged(@NonNull android.view.autofill.AutofillId, @Nullable CharSequence);
-    method public final void notifyViewsDisappeared(@NonNull android.view.autofill.AutofillId, @NonNull long[]);
-    method public final void setContentCaptureContext(@Nullable android.view.contentcapture.ContentCaptureContext);
-  }
-
-  public final class ContentCaptureSessionId implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.contentcapture.ContentCaptureSessionId> CREATOR;
-  }
-
-  public final class DataRemovalRequest implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public java.util.List<android.view.contentcapture.DataRemovalRequest.LocusIdRequest> getLocusIdRequests();
-    method @NonNull public String getPackageName();
-    method public boolean isForEverything();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.contentcapture.DataRemovalRequest> CREATOR;
-    field public static final int FLAG_IS_PREFIX = 1; // 0x1
-  }
-
-  public static final class DataRemovalRequest.Builder {
-    ctor public DataRemovalRequest.Builder();
-    method @NonNull public android.view.contentcapture.DataRemovalRequest.Builder addLocusId(@NonNull android.content.LocusId, int);
-    method @NonNull public android.view.contentcapture.DataRemovalRequest build();
-    method @NonNull public android.view.contentcapture.DataRemovalRequest.Builder forEverything();
-  }
-
-  public final class DataRemovalRequest.LocusIdRequest {
-    method @NonNull public int getFlags();
-    method @NonNull public android.content.LocusId getLocusId();
-  }
-
-  public final class DataShareRequest implements android.os.Parcelable {
-    ctor public DataShareRequest(@Nullable android.content.LocusId, @NonNull String);
-    method public int describeContents();
-    method @Nullable public android.content.LocusId getLocusId();
-    method @NonNull public String getMimeType();
-    method @NonNull public String getPackageName();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.contentcapture.DataShareRequest> CREATOR;
-  }
-
-  public interface DataShareWriteAdapter {
-    method public default void onError(int);
-    method public void onRejected();
-    method public void onWrite(@NonNull android.os.ParcelFileDescriptor);
-  }
-
-}
-
-package android.view.inputmethod {
-
-  public class BaseInputConnection implements android.view.inputmethod.InputConnection {
-    ctor public BaseInputConnection(android.view.View, boolean);
-    method public boolean beginBatchEdit();
-    method public boolean clearMetaKeyStates(int);
-    method @CallSuper public void closeConnection();
-    method public boolean commitCompletion(android.view.inputmethod.CompletionInfo);
-    method public boolean commitContent(android.view.inputmethod.InputContentInfo, int, android.os.Bundle);
-    method public boolean commitCorrection(android.view.inputmethod.CorrectionInfo);
-    method public boolean commitText(CharSequence, int);
-    method public boolean deleteSurroundingText(int, int);
-    method public boolean deleteSurroundingTextInCodePoints(int, int);
-    method public boolean endBatchEdit();
-    method public boolean finishComposingText();
-    method public static int getComposingSpanEnd(android.text.Spannable);
-    method public static int getComposingSpanStart(android.text.Spannable);
-    method public int getCursorCapsMode(int);
-    method public android.text.Editable getEditable();
-    method public android.view.inputmethod.ExtractedText getExtractedText(android.view.inputmethod.ExtractedTextRequest, int);
-    method public android.os.Handler getHandler();
-    method public CharSequence getSelectedText(int);
-    method public CharSequence getTextAfterCursor(int, int);
-    method public CharSequence getTextBeforeCursor(int, int);
-    method public boolean performContextMenuAction(int);
-    method public boolean performEditorAction(int);
-    method public boolean performPrivateCommand(String, android.os.Bundle);
-    method public static final void removeComposingSpans(android.text.Spannable);
-    method public boolean reportFullscreenMode(boolean);
-    method public boolean requestCursorUpdates(int);
-    method public boolean sendKeyEvent(android.view.KeyEvent);
-    method public boolean setComposingRegion(int, int);
-    method public static void setComposingSpans(android.text.Spannable);
-    method public boolean setComposingText(CharSequence, int);
-    method public boolean setSelection(int, int);
-  }
-
-  public final class CompletionInfo implements android.os.Parcelable {
-    ctor public CompletionInfo(long, int, CharSequence);
-    ctor public CompletionInfo(long, int, CharSequence, CharSequence);
-    method public int describeContents();
-    method public long getId();
-    method public CharSequence getLabel();
-    method public int getPosition();
-    method public CharSequence getText();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.CompletionInfo> CREATOR;
-  }
-
-  public final class CorrectionInfo implements android.os.Parcelable {
-    ctor public CorrectionInfo(int, CharSequence, CharSequence);
-    method public int describeContents();
-    method public CharSequence getNewText();
-    method public int getOffset();
-    method public CharSequence getOldText();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.CorrectionInfo> CREATOR;
-  }
-
-  public final class CursorAnchorInfo implements android.os.Parcelable {
-    ctor public CursorAnchorInfo(android.os.Parcel);
-    method public int describeContents();
-    method public android.graphics.RectF getCharacterBounds(int);
-    method public int getCharacterBoundsFlags(int);
-    method public CharSequence getComposingText();
-    method public int getComposingTextStart();
-    method public float getInsertionMarkerBaseline();
-    method public float getInsertionMarkerBottom();
-    method public int getInsertionMarkerFlags();
-    method public float getInsertionMarkerHorizontal();
-    method public float getInsertionMarkerTop();
-    method public android.graphics.Matrix getMatrix();
-    method public int getSelectionEnd();
-    method public int getSelectionStart();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.CursorAnchorInfo> CREATOR;
-    field public static final int FLAG_HAS_INVISIBLE_REGION = 2; // 0x2
-    field public static final int FLAG_HAS_VISIBLE_REGION = 1; // 0x1
-    field public static final int FLAG_IS_RTL = 4; // 0x4
-  }
-
-  public static final class CursorAnchorInfo.Builder {
-    ctor public CursorAnchorInfo.Builder();
-    method public android.view.inputmethod.CursorAnchorInfo.Builder addCharacterBounds(int, float, float, float, float, int);
-    method public android.view.inputmethod.CursorAnchorInfo build();
-    method public void reset();
-    method public android.view.inputmethod.CursorAnchorInfo.Builder setComposingText(int, CharSequence);
-    method public android.view.inputmethod.CursorAnchorInfo.Builder setInsertionMarkerLocation(float, float, float, float, int);
-    method public android.view.inputmethod.CursorAnchorInfo.Builder setMatrix(android.graphics.Matrix);
-    method public android.view.inputmethod.CursorAnchorInfo.Builder setSelectionRange(int, int);
-  }
-
-  public class EditorInfo implements android.text.InputType android.os.Parcelable {
-    ctor public EditorInfo();
-    method public int describeContents();
-    method public void dump(android.util.Printer, String);
-    method @Nullable public CharSequence getInitialSelectedText(int);
-    method @Nullable public CharSequence getInitialTextAfterCursor(int, int);
-    method @Nullable public CharSequence getInitialTextBeforeCursor(int, int);
-    method public final void makeCompatible(int);
-    method public void setInitialSurroundingSubText(@NonNull CharSequence, int);
-    method public void setInitialSurroundingText(@NonNull CharSequence);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.EditorInfo> CREATOR;
-    field public static final int IME_ACTION_DONE = 6; // 0x6
-    field public static final int IME_ACTION_GO = 2; // 0x2
-    field public static final int IME_ACTION_NEXT = 5; // 0x5
-    field public static final int IME_ACTION_NONE = 1; // 0x1
-    field public static final int IME_ACTION_PREVIOUS = 7; // 0x7
-    field public static final int IME_ACTION_SEARCH = 3; // 0x3
-    field public static final int IME_ACTION_SEND = 4; // 0x4
-    field public static final int IME_ACTION_UNSPECIFIED = 0; // 0x0
-    field public static final int IME_FLAG_FORCE_ASCII = -2147483648; // 0x80000000
-    field public static final int IME_FLAG_NAVIGATE_NEXT = 134217728; // 0x8000000
-    field public static final int IME_FLAG_NAVIGATE_PREVIOUS = 67108864; // 0x4000000
-    field public static final int IME_FLAG_NO_ACCESSORY_ACTION = 536870912; // 0x20000000
-    field public static final int IME_FLAG_NO_ENTER_ACTION = 1073741824; // 0x40000000
-    field public static final int IME_FLAG_NO_EXTRACT_UI = 268435456; // 0x10000000
-    field public static final int IME_FLAG_NO_FULLSCREEN = 33554432; // 0x2000000
-    field public static final int IME_FLAG_NO_PERSONALIZED_LEARNING = 16777216; // 0x1000000
-    field public static final int IME_MASK_ACTION = 255; // 0xff
-    field public static final int IME_NULL = 0; // 0x0
-    field public int actionId;
-    field public CharSequence actionLabel;
-    field @Nullable public String[] contentMimeTypes;
-    field public android.os.Bundle extras;
-    field public int fieldId;
-    field public String fieldName;
-    field @Nullable public android.os.LocaleList hintLocales;
-    field public CharSequence hintText;
-    field public int imeOptions;
-    field public int initialCapsMode;
-    field public int initialSelEnd;
-    field public int initialSelStart;
-    field public int inputType;
-    field public CharSequence label;
-    field public String packageName;
-    field public String privateImeOptions;
-  }
-
-  public class ExtractedText implements android.os.Parcelable {
-    ctor public ExtractedText();
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.ExtractedText> CREATOR;
-    field public static final int FLAG_SELECTING = 2; // 0x2
-    field public static final int FLAG_SINGLE_LINE = 1; // 0x1
-    field public int flags;
-    field public CharSequence hint;
-    field public int partialEndOffset;
-    field public int partialStartOffset;
-    field public int selectionEnd;
-    field public int selectionStart;
-    field public int startOffset;
-    field public CharSequence text;
-  }
-
-  public class ExtractedTextRequest implements android.os.Parcelable {
-    ctor public ExtractedTextRequest();
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.ExtractedTextRequest> CREATOR;
-    field public int flags;
-    field public int hintMaxChars;
-    field public int hintMaxLines;
-    field public int token;
-  }
-
-  public final class InlineSuggestion implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.view.inputmethod.InlineSuggestionInfo getInfo();
-    method public void inflate(@NonNull android.content.Context, @NonNull android.util.Size, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.widget.inline.InlineContentView>);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InlineSuggestion> CREATOR;
-  }
-
-  public final class InlineSuggestionInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String[] getAutofillHints();
-    method @NonNull public android.widget.inline.InlinePresentationSpec getInlinePresentationSpec();
-    method @NonNull public String getSource();
-    method @NonNull public String getType();
-    method public boolean isPinned();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InlineSuggestionInfo> CREATOR;
-    field public static final String SOURCE_AUTOFILL = "android:autofill";
-    field public static final String SOURCE_PLATFORM = "android:platform";
-    field public static final String TYPE_ACTION = "android:autofill:action";
-    field public static final String TYPE_SUGGESTION = "android:autofill:suggestion";
-  }
-
-  public final class InlineSuggestionsRequest implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.os.Bundle getExtras();
-    method @NonNull public String getHostPackageName();
-    method @NonNull public java.util.List<android.widget.inline.InlinePresentationSpec> getInlinePresentationSpecs();
-    method public int getMaxSuggestionCount();
-    method @NonNull public android.os.LocaleList getSupportedLocales();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InlineSuggestionsRequest> CREATOR;
-    field public static final int SUGGESTION_COUNT_UNLIMITED = 2147483647; // 0x7fffffff
-  }
-
-  public static final class InlineSuggestionsRequest.Builder {
-    ctor public InlineSuggestionsRequest.Builder(@NonNull java.util.List<android.widget.inline.InlinePresentationSpec>);
-    method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder addInlinePresentationSpecs(@NonNull android.widget.inline.InlinePresentationSpec);
-    method @NonNull public android.view.inputmethod.InlineSuggestionsRequest build();
-    method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setExtras(@NonNull android.os.Bundle);
-    method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setInlinePresentationSpecs(@NonNull java.util.List<android.widget.inline.InlinePresentationSpec>);
-    method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setMaxSuggestionCount(int);
-    method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setSupportedLocales(@NonNull android.os.LocaleList);
-  }
-
-  public final class InlineSuggestionsResponse implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public java.util.List<android.view.inputmethod.InlineSuggestion> getInlineSuggestions();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InlineSuggestionsResponse> CREATOR;
-  }
-
-  public final class InputBinding implements android.os.Parcelable {
-    ctor public InputBinding(android.view.inputmethod.InputConnection, android.os.IBinder, int, int);
-    ctor public InputBinding(android.view.inputmethod.InputConnection, android.view.inputmethod.InputBinding);
-    method public int describeContents();
-    method public android.view.inputmethod.InputConnection getConnection();
-    method public android.os.IBinder getConnectionToken();
-    method public int getPid();
-    method public int getUid();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InputBinding> CREATOR;
-  }
-
-  public interface InputConnection {
-    method public boolean beginBatchEdit();
-    method public boolean clearMetaKeyStates(int);
-    method public void closeConnection();
-    method public boolean commitCompletion(android.view.inputmethod.CompletionInfo);
-    method public boolean commitContent(@NonNull android.view.inputmethod.InputContentInfo, int, @Nullable android.os.Bundle);
-    method public boolean commitCorrection(android.view.inputmethod.CorrectionInfo);
-    method public boolean commitText(CharSequence, int);
-    method public boolean deleteSurroundingText(int, int);
-    method public boolean deleteSurroundingTextInCodePoints(int, int);
-    method public boolean endBatchEdit();
-    method public boolean finishComposingText();
-    method public int getCursorCapsMode(int);
-    method public android.view.inputmethod.ExtractedText getExtractedText(android.view.inputmethod.ExtractedTextRequest, int);
-    method public android.os.Handler getHandler();
-    method public CharSequence getSelectedText(int);
-    method public CharSequence getTextAfterCursor(int, int);
-    method public CharSequence getTextBeforeCursor(int, int);
-    method public boolean performContextMenuAction(int);
-    method public boolean performEditorAction(int);
-    method public boolean performPrivateCommand(String, android.os.Bundle);
-    method public boolean reportFullscreenMode(boolean);
-    method public boolean requestCursorUpdates(int);
-    method public boolean sendKeyEvent(android.view.KeyEvent);
-    method public boolean setComposingRegion(int, int);
-    method public boolean setComposingText(CharSequence, int);
-    method public boolean setSelection(int, int);
-    field public static final int CURSOR_UPDATE_IMMEDIATE = 1; // 0x1
-    field public static final int CURSOR_UPDATE_MONITOR = 2; // 0x2
-    field public static final int GET_EXTRACTED_TEXT_MONITOR = 1; // 0x1
-    field public static final int GET_TEXT_WITH_STYLES = 1; // 0x1
-    field public static final int INPUT_CONTENT_GRANT_READ_URI_PERMISSION = 1; // 0x1
-  }
-
-  public class InputConnectionWrapper implements android.view.inputmethod.InputConnection {
-    ctor public InputConnectionWrapper(android.view.inputmethod.InputConnection, boolean);
-    method public boolean beginBatchEdit();
-    method public boolean clearMetaKeyStates(int);
-    method public void closeConnection();
-    method public boolean commitCompletion(android.view.inputmethod.CompletionInfo);
-    method public boolean commitContent(android.view.inputmethod.InputContentInfo, int, android.os.Bundle);
-    method public boolean commitCorrection(android.view.inputmethod.CorrectionInfo);
-    method public boolean commitText(CharSequence, int);
-    method public boolean deleteSurroundingText(int, int);
-    method public boolean deleteSurroundingTextInCodePoints(int, int);
-    method public boolean endBatchEdit();
-    method public boolean finishComposingText();
-    method public int getCursorCapsMode(int);
-    method public android.view.inputmethod.ExtractedText getExtractedText(android.view.inputmethod.ExtractedTextRequest, int);
-    method public android.os.Handler getHandler();
-    method public CharSequence getSelectedText(int);
-    method public CharSequence getTextAfterCursor(int, int);
-    method public CharSequence getTextBeforeCursor(int, int);
-    method public boolean performContextMenuAction(int);
-    method public boolean performEditorAction(int);
-    method public boolean performPrivateCommand(String, android.os.Bundle);
-    method public boolean reportFullscreenMode(boolean);
-    method public boolean requestCursorUpdates(int);
-    method public boolean sendKeyEvent(android.view.KeyEvent);
-    method public boolean setComposingRegion(int, int);
-    method public boolean setComposingText(CharSequence, int);
-    method public boolean setSelection(int, int);
-    method public void setTarget(android.view.inputmethod.InputConnection);
-  }
-
-  public final class InputContentInfo implements android.os.Parcelable {
-    ctor public InputContentInfo(@NonNull android.net.Uri, @NonNull android.content.ClipDescription);
-    ctor public InputContentInfo(@NonNull android.net.Uri, @NonNull android.content.ClipDescription, @Nullable android.net.Uri);
-    method public int describeContents();
-    method @NonNull public android.net.Uri getContentUri();
-    method @NonNull public android.content.ClipDescription getDescription();
-    method @Nullable public android.net.Uri getLinkUri();
-    method public void releasePermission();
-    method public void requestPermission();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InputContentInfo> CREATOR;
-  }
-
-  public interface InputMethod {
-    method @MainThread public void attachToken(android.os.IBinder);
-    method @MainThread public void bindInput(android.view.inputmethod.InputBinding);
-    method @MainThread public void changeInputMethodSubtype(android.view.inputmethod.InputMethodSubtype);
-    method @MainThread public void createSession(android.view.inputmethod.InputMethod.SessionCallback);
-    method @MainThread public void hideSoftInput(int, android.os.ResultReceiver);
-    method @MainThread public void restartInput(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo);
-    method @MainThread public void revokeSession(android.view.inputmethod.InputMethodSession);
-    method @MainThread public void setSessionEnabled(android.view.inputmethod.InputMethodSession, boolean);
-    method @MainThread public void showSoftInput(int, android.os.ResultReceiver);
-    method @MainThread public void startInput(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo);
-    method @MainThread public void unbindInput();
-    field public static final String SERVICE_INTERFACE = "android.view.InputMethod";
-    field public static final String SERVICE_META_DATA = "android.view.im";
-    field public static final int SHOW_EXPLICIT = 1; // 0x1
-    field public static final int SHOW_FORCED = 2; // 0x2
-  }
-
-  public static interface InputMethod.SessionCallback {
-    method public void sessionCreated(android.view.inputmethod.InputMethodSession);
-  }
-
-  public final class InputMethodInfo implements android.os.Parcelable {
-    ctor public InputMethodInfo(android.content.Context, android.content.pm.ResolveInfo) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    ctor public InputMethodInfo(String, String, CharSequence, String);
-    method public int describeContents();
-    method public void dump(android.util.Printer, String);
-    method public android.content.ComponentName getComponent();
-    method public String getId();
-    method public int getIsDefaultResourceId();
-    method public String getPackageName();
-    method public android.content.pm.ServiceInfo getServiceInfo();
-    method public String getServiceName();
-    method public String getSettingsActivity();
-    method public android.view.inputmethod.InputMethodSubtype getSubtypeAt(int);
-    method public int getSubtypeCount();
-    method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
-    method public CharSequence loadLabel(android.content.pm.PackageManager);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InputMethodInfo> CREATOR;
-  }
-
-  public final class InputMethodManager {
-    method public void dispatchKeyEventFromInputMethod(@Nullable android.view.View, @NonNull android.view.KeyEvent);
-    method public void displayCompletions(android.view.View, android.view.inputmethod.CompletionInfo[]);
-    method public android.view.inputmethod.InputMethodSubtype getCurrentInputMethodSubtype();
-    method public java.util.List<android.view.inputmethod.InputMethodInfo> getEnabledInputMethodList();
-    method public java.util.List<android.view.inputmethod.InputMethodSubtype> getEnabledInputMethodSubtypeList(android.view.inputmethod.InputMethodInfo, boolean);
-    method public java.util.List<android.view.inputmethod.InputMethodInfo> getInputMethodList();
-    method public android.view.inputmethod.InputMethodSubtype getLastInputMethodSubtype();
-    method public java.util.Map<android.view.inputmethod.InputMethodInfo,java.util.List<android.view.inputmethod.InputMethodSubtype>> getShortcutInputMethodsAndSubtypes();
-    method @Deprecated public void hideSoftInputFromInputMethod(android.os.IBinder, int);
-    method public boolean hideSoftInputFromWindow(android.os.IBinder, int);
-    method public boolean hideSoftInputFromWindow(android.os.IBinder, int, android.os.ResultReceiver);
-    method @Deprecated public void hideStatusIcon(android.os.IBinder);
-    method public boolean isAcceptingText();
-    method public boolean isActive(android.view.View);
-    method public boolean isActive();
-    method public boolean isFullscreenMode();
-    method @Deprecated public boolean isWatchingCursor(android.view.View);
-    method public void restartInput(android.view.View);
-    method public void sendAppPrivateCommand(android.view.View, String, android.os.Bundle);
-    method @Deprecated public void setAdditionalInputMethodSubtypes(String, android.view.inputmethod.InputMethodSubtype[]);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean setCurrentInputMethodSubtype(android.view.inputmethod.InputMethodSubtype);
-    method @Deprecated public void setInputMethod(android.os.IBinder, String);
-    method @Deprecated public void setInputMethodAndSubtype(@NonNull android.os.IBinder, String, android.view.inputmethod.InputMethodSubtype);
-    method @Deprecated public boolean shouldOfferSwitchingToNextInputMethod(android.os.IBinder);
-    method public void showInputMethodAndSubtypeEnabler(String);
-    method public void showInputMethodPicker();
-    method public boolean showSoftInput(android.view.View, int);
-    method public boolean showSoftInput(android.view.View, int, android.os.ResultReceiver);
-    method @Deprecated public void showSoftInputFromInputMethod(android.os.IBinder, int);
-    method @Deprecated public void showStatusIcon(android.os.IBinder, String, @DrawableRes int);
-    method @Deprecated public boolean switchToLastInputMethod(android.os.IBinder);
-    method @Deprecated public boolean switchToNextInputMethod(android.os.IBinder, boolean);
-    method public void toggleSoftInput(int, int);
-    method public void toggleSoftInputFromWindow(android.os.IBinder, int, int);
-    method @Deprecated public void updateCursor(android.view.View, int, int, int, int);
-    method public void updateCursorAnchorInfo(android.view.View, android.view.inputmethod.CursorAnchorInfo);
-    method public void updateExtractedText(android.view.View, int, android.view.inputmethod.ExtractedText);
-    method public void updateSelection(android.view.View, int, int, int, int);
-    method @Deprecated public void viewClicked(android.view.View);
-    field public static final int HIDE_IMPLICIT_ONLY = 1; // 0x1
-    field public static final int HIDE_NOT_ALWAYS = 2; // 0x2
-    field public static final int RESULT_HIDDEN = 3; // 0x3
-    field public static final int RESULT_SHOWN = 2; // 0x2
-    field public static final int RESULT_UNCHANGED_HIDDEN = 1; // 0x1
-    field public static final int RESULT_UNCHANGED_SHOWN = 0; // 0x0
-    field public static final int SHOW_FORCED = 2; // 0x2
-    field public static final int SHOW_IMPLICIT = 1; // 0x1
-  }
-
-  public interface InputMethodSession {
-    method public void appPrivateCommand(String, android.os.Bundle);
-    method public void dispatchGenericMotionEvent(int, android.view.MotionEvent, android.view.inputmethod.InputMethodSession.EventCallback);
-    method public void dispatchKeyEvent(int, android.view.KeyEvent, android.view.inputmethod.InputMethodSession.EventCallback);
-    method public void dispatchTrackballEvent(int, android.view.MotionEvent, android.view.inputmethod.InputMethodSession.EventCallback);
-    method public void displayCompletions(android.view.inputmethod.CompletionInfo[]);
-    method public void finishInput();
-    method public void toggleSoftInput(int, int);
-    method public void updateCursor(android.graphics.Rect);
-    method public void updateCursorAnchorInfo(android.view.inputmethod.CursorAnchorInfo);
-    method public void updateExtractedText(int, android.view.inputmethod.ExtractedText);
-    method public void updateSelection(int, int, int, int, int, int);
-    method public void viewClicked(boolean);
-  }
-
-  public static interface InputMethodSession.EventCallback {
-    method public void finishedEvent(int, boolean);
-  }
-
-  public final class InputMethodSubtype implements android.os.Parcelable {
-    ctor @Deprecated public InputMethodSubtype(int, int, String, String, String, boolean, boolean);
-    ctor @Deprecated public InputMethodSubtype(int, int, String, String, String, boolean, boolean, int);
-    method public boolean containsExtraValueKey(String);
-    method public int describeContents();
-    method @NonNull public CharSequence getDisplayName(android.content.Context, String, android.content.pm.ApplicationInfo);
-    method public String getExtraValue();
-    method public String getExtraValueOf(String);
-    method public int getIconResId();
-    method @NonNull public String getLanguageTag();
-    method @Deprecated @NonNull public String getLocale();
-    method public String getMode();
-    method public int getNameResId();
-    method public boolean isAsciiCapable();
-    method public boolean isAuxiliary();
-    method public boolean overridesImplicitlyEnabledSubtype();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.InputMethodSubtype> CREATOR;
-  }
-
-  public static class InputMethodSubtype.InputMethodSubtypeBuilder {
-    ctor public InputMethodSubtype.InputMethodSubtypeBuilder();
-    method public android.view.inputmethod.InputMethodSubtype build();
-    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setIsAsciiCapable(boolean);
-    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setIsAuxiliary(boolean);
-    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setLanguageTag(String);
-    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setOverridesImplicitlyEnabledSubtype(boolean);
-    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeExtraValue(String);
-    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeIconResId(int);
-    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeId(int);
-    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeLocale(String);
-    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeMode(String);
-    method public android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder setSubtypeNameResId(int);
-  }
-
-}
-
-package android.view.inspector {
-
-  public interface InspectionCompanion<T> {
-    method public void mapProperties(@NonNull android.view.inspector.PropertyMapper);
-    method public void readProperties(@NonNull T, @NonNull android.view.inspector.PropertyReader);
-  }
-
-  public static class InspectionCompanion.UninitializedPropertyMapException extends java.lang.RuntimeException {
-    ctor public InspectionCompanion.UninitializedPropertyMapException();
-  }
-
-  public interface InspectionCompanionProvider {
-    method @Nullable public <T> android.view.inspector.InspectionCompanion<T> provide(@NonNull Class<T>);
-  }
-
-  public final class IntFlagMapping {
-    ctor public IntFlagMapping();
-    method public void add(int, int, @NonNull String);
-    method @NonNull public java.util.Set<java.lang.String> get(int);
-  }
-
-  public interface PropertyMapper {
-    method public int mapBoolean(@NonNull String, @AttrRes int);
-    method public int mapByte(@NonNull String, @AttrRes int);
-    method public int mapChar(@NonNull String, @AttrRes int);
-    method public int mapColor(@NonNull String, @AttrRes int);
-    method public int mapDouble(@NonNull String, @AttrRes int);
-    method public int mapFloat(@NonNull String, @AttrRes int);
-    method public int mapGravity(@NonNull String, @AttrRes int);
-    method public int mapInt(@NonNull String, @AttrRes int);
-    method public int mapIntEnum(@NonNull String, @AttrRes int, @NonNull java.util.function.IntFunction<java.lang.String>);
-    method public int mapIntFlag(@NonNull String, @AttrRes int, @NonNull java.util.function.IntFunction<java.util.Set<java.lang.String>>);
-    method public int mapLong(@NonNull String, @AttrRes int);
-    method public int mapObject(@NonNull String, @AttrRes int);
-    method public int mapResourceId(@NonNull String, @AttrRes int);
-    method public int mapShort(@NonNull String, @AttrRes int);
-  }
-
-  public static class PropertyMapper.PropertyConflictException extends java.lang.RuntimeException {
-    ctor public PropertyMapper.PropertyConflictException(@NonNull String, @NonNull String, @NonNull String);
-  }
-
-  public interface PropertyReader {
-    method public void readBoolean(int, boolean);
-    method public void readByte(int, byte);
-    method public void readChar(int, char);
-    method public void readColor(int, @ColorInt int);
-    method public void readColor(int, @ColorLong long);
-    method public void readColor(int, @Nullable android.graphics.Color);
-    method public void readDouble(int, double);
-    method public void readFloat(int, float);
-    method public void readGravity(int, int);
-    method public void readInt(int, int);
-    method public void readIntEnum(int, int);
-    method public void readIntFlag(int, int);
-    method public void readLong(int, long);
-    method public void readObject(int, @Nullable Object);
-    method public void readResourceId(int, @AnyRes int);
-    method public void readShort(int, short);
-  }
-
-  public static class PropertyReader.PropertyTypeMismatchException extends java.lang.RuntimeException {
-    ctor public PropertyReader.PropertyTypeMismatchException(int, @NonNull String, @NonNull String, @Nullable String);
-    ctor public PropertyReader.PropertyTypeMismatchException(int, @NonNull String, @NonNull String);
-  }
-
-  public class StaticInspectionCompanionProvider implements android.view.inspector.InspectionCompanionProvider {
-    ctor public StaticInspectionCompanionProvider();
-    method @Nullable public <T> android.view.inspector.InspectionCompanion<T> provide(@NonNull Class<T>);
-  }
-
-  public final class WindowInspector {
-    method @NonNull public static java.util.List<android.view.View> getGlobalWindowViews();
-  }
-
-}
-
-package android.view.textclassifier {
-
-  public final class ConversationAction implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.app.RemoteAction getAction();
-    method @FloatRange(from=0, to=1) public float getConfidenceScore();
-    method @NonNull public android.os.Bundle getExtras();
-    method @Nullable public CharSequence getTextReply();
-    method @NonNull public String getType();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.ConversationAction> CREATOR;
-    field public static final String TYPE_CALL_PHONE = "call_phone";
-    field public static final String TYPE_CREATE_REMINDER = "create_reminder";
-    field public static final String TYPE_OPEN_URL = "open_url";
-    field public static final String TYPE_SEND_EMAIL = "send_email";
-    field public static final String TYPE_SEND_SMS = "send_sms";
-    field public static final String TYPE_SHARE_LOCATION = "share_location";
-    field public static final String TYPE_TEXT_REPLY = "text_reply";
-    field public static final String TYPE_TRACK_FLIGHT = "track_flight";
-    field public static final String TYPE_VIEW_CALENDAR = "view_calendar";
-    field public static final String TYPE_VIEW_MAP = "view_map";
-  }
-
-  public static final class ConversationAction.Builder {
-    ctor public ConversationAction.Builder(@NonNull String);
-    method @NonNull public android.view.textclassifier.ConversationAction build();
-    method @NonNull public android.view.textclassifier.ConversationAction.Builder setAction(@Nullable android.app.RemoteAction);
-    method @NonNull public android.view.textclassifier.ConversationAction.Builder setConfidenceScore(@FloatRange(from=0, to=1) float);
-    method @NonNull public android.view.textclassifier.ConversationAction.Builder setExtras(@Nullable android.os.Bundle);
-    method @NonNull public android.view.textclassifier.ConversationAction.Builder setTextReply(@Nullable CharSequence);
-  }
-
-  public final class ConversationActions implements android.os.Parcelable {
-    ctor public ConversationActions(@NonNull java.util.List<android.view.textclassifier.ConversationAction>, @Nullable String);
-    method public int describeContents();
-    method @NonNull public java.util.List<android.view.textclassifier.ConversationAction> getConversationActions();
-    method @Nullable public String getId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.ConversationActions> CREATOR;
-  }
-
-  public static final class ConversationActions.Message implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.app.Person getAuthor();
-    method @NonNull public android.os.Bundle getExtras();
-    method @Nullable public java.time.ZonedDateTime getReferenceTime();
-    method @Nullable public CharSequence getText();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.ConversationActions.Message> CREATOR;
-    field @NonNull public static final android.app.Person PERSON_USER_OTHERS;
-    field @NonNull public static final android.app.Person PERSON_USER_SELF;
-  }
-
-  public static final class ConversationActions.Message.Builder {
-    ctor public ConversationActions.Message.Builder(@NonNull android.app.Person);
-    method @NonNull public android.view.textclassifier.ConversationActions.Message build();
-    method @NonNull public android.view.textclassifier.ConversationActions.Message.Builder setExtras(@Nullable android.os.Bundle);
-    method @NonNull public android.view.textclassifier.ConversationActions.Message.Builder setReferenceTime(@Nullable java.time.ZonedDateTime);
-    method @NonNull public android.view.textclassifier.ConversationActions.Message.Builder setText(@Nullable CharSequence);
-  }
-
-  public static final class ConversationActions.Request implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getCallingPackageName();
-    method @NonNull public java.util.List<android.view.textclassifier.ConversationActions.Message> getConversation();
-    method @NonNull public android.os.Bundle getExtras();
-    method @NonNull public java.util.List<java.lang.String> getHints();
-    method @IntRange(from=0xffffffff) public int getMaxSuggestions();
-    method @NonNull public android.view.textclassifier.TextClassifier.EntityConfig getTypeConfig();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.ConversationActions.Request> CREATOR;
-    field public static final String HINT_FOR_IN_APP = "in_app";
-    field public static final String HINT_FOR_NOTIFICATION = "notification";
-  }
-
-  public static final class ConversationActions.Request.Builder {
-    ctor public ConversationActions.Request.Builder(@NonNull java.util.List<android.view.textclassifier.ConversationActions.Message>);
-    method @NonNull public android.view.textclassifier.ConversationActions.Request build();
-    method @NonNull public android.view.textclassifier.ConversationActions.Request.Builder setExtras(@Nullable android.os.Bundle);
-    method @NonNull public android.view.textclassifier.ConversationActions.Request.Builder setHints(@Nullable java.util.List<java.lang.String>);
-    method @NonNull public android.view.textclassifier.ConversationActions.Request.Builder setMaxSuggestions(@IntRange(from=0xffffffff) int);
-    method @NonNull public android.view.textclassifier.ConversationActions.Request.Builder setTypeConfig(@Nullable android.view.textclassifier.TextClassifier.EntityConfig);
-  }
-
-  public final class SelectionEvent implements android.os.Parcelable {
-    method @NonNull public static android.view.textclassifier.SelectionEvent createSelectionActionEvent(int, int, int);
-    method @NonNull public static android.view.textclassifier.SelectionEvent createSelectionActionEvent(int, int, int, @NonNull android.view.textclassifier.TextClassification);
-    method @NonNull public static android.view.textclassifier.SelectionEvent createSelectionModifiedEvent(int, int);
-    method @NonNull public static android.view.textclassifier.SelectionEvent createSelectionModifiedEvent(int, int, @NonNull android.view.textclassifier.TextClassification);
-    method @NonNull public static android.view.textclassifier.SelectionEvent createSelectionModifiedEvent(int, int, @NonNull android.view.textclassifier.TextSelection);
-    method @NonNull public static android.view.textclassifier.SelectionEvent createSelectionStartedEvent(int, int);
-    method public int describeContents();
-    method public long getDurationSincePreviousEvent();
-    method public long getDurationSinceSessionStart();
-    method public int getEnd();
-    method @NonNull public String getEntityType();
-    method public int getEventIndex();
-    method public long getEventTime();
-    method public int getEventType();
-    method public int getInvocationMethod();
-    method @NonNull public String getPackageName();
-    method @Nullable public String getResultId();
-    method @Nullable public android.view.textclassifier.TextClassificationSessionId getSessionId();
-    method public int getSmartEnd();
-    method public int getSmartStart();
-    method public int getStart();
-    method @NonNull public String getWidgetType();
-    method @Nullable public String getWidgetVersion();
-    method public static boolean isTerminal(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ACTION_ABANDON = 107; // 0x6b
-    field public static final int ACTION_COPY = 101; // 0x65
-    field public static final int ACTION_CUT = 103; // 0x67
-    field public static final int ACTION_DRAG = 106; // 0x6a
-    field public static final int ACTION_OTHER = 108; // 0x6c
-    field public static final int ACTION_OVERTYPE = 100; // 0x64
-    field public static final int ACTION_PASTE = 102; // 0x66
-    field public static final int ACTION_RESET = 201; // 0xc9
-    field public static final int ACTION_SELECT_ALL = 200; // 0xc8
-    field public static final int ACTION_SHARE = 104; // 0x68
-    field public static final int ACTION_SMART_SHARE = 105; // 0x69
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.SelectionEvent> CREATOR;
-    field public static final int EVENT_AUTO_SELECTION = 5; // 0x5
-    field public static final int EVENT_SELECTION_MODIFIED = 2; // 0x2
-    field public static final int EVENT_SELECTION_STARTED = 1; // 0x1
-    field public static final int EVENT_SMART_SELECTION_MULTI = 4; // 0x4
-    field public static final int EVENT_SMART_SELECTION_SINGLE = 3; // 0x3
-    field public static final int INVOCATION_LINK = 2; // 0x2
-    field public static final int INVOCATION_MANUAL = 1; // 0x1
-    field public static final int INVOCATION_UNKNOWN = 0; // 0x0
-  }
-
-  public final class TextClassification implements android.os.Parcelable {
-    method public int describeContents();
-    method public java.util.List<android.app.RemoteAction> getActions();
-    method @FloatRange(from=0.0, to=1.0) public float getConfidenceScore(String);
-    method @NonNull public String getEntity(int);
-    method @IntRange(from=0) public int getEntityCount();
-    method @NonNull public android.os.Bundle getExtras();
-    method @Deprecated @Nullable public android.graphics.drawable.Drawable getIcon();
-    method @Nullable public String getId();
-    method @Deprecated @Nullable public android.content.Intent getIntent();
-    method @Deprecated @Nullable public CharSequence getLabel();
-    method @Deprecated @Nullable public android.view.View.OnClickListener getOnClickListener();
-    method @Nullable public String getText();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassification> CREATOR;
-  }
-
-  public static final class TextClassification.Builder {
-    ctor public TextClassification.Builder();
-    method @NonNull public android.view.textclassifier.TextClassification.Builder addAction(@NonNull android.app.RemoteAction);
-    method @NonNull public android.view.textclassifier.TextClassification build();
-    method @NonNull public android.view.textclassifier.TextClassification.Builder setEntityType(@NonNull String, @FloatRange(from=0.0, to=1.0) float);
-    method @NonNull public android.view.textclassifier.TextClassification.Builder setExtras(@Nullable android.os.Bundle);
-    method @Deprecated @NonNull public android.view.textclassifier.TextClassification.Builder setIcon(@Nullable android.graphics.drawable.Drawable);
-    method @NonNull public android.view.textclassifier.TextClassification.Builder setId(@Nullable String);
-    method @Deprecated @NonNull public android.view.textclassifier.TextClassification.Builder setIntent(@Nullable android.content.Intent);
-    method @Deprecated @NonNull public android.view.textclassifier.TextClassification.Builder setLabel(@Nullable String);
-    method @Deprecated @NonNull public android.view.textclassifier.TextClassification.Builder setOnClickListener(@Nullable android.view.View.OnClickListener);
-    method @NonNull public android.view.textclassifier.TextClassification.Builder setText(@Nullable String);
-  }
-
-  public static final class TextClassification.Request implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getCallingPackageName();
-    method @Nullable public android.os.LocaleList getDefaultLocales();
-    method @IntRange(from=0) public int getEndIndex();
-    method @NonNull public android.os.Bundle getExtras();
-    method @Nullable public java.time.ZonedDateTime getReferenceTime();
-    method @IntRange(from=0) public int getStartIndex();
-    method @NonNull public CharSequence getText();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassification.Request> CREATOR;
-  }
-
-  public static final class TextClassification.Request.Builder {
-    ctor public TextClassification.Request.Builder(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int);
-    method @NonNull public android.view.textclassifier.TextClassification.Request build();
-    method @NonNull public android.view.textclassifier.TextClassification.Request.Builder setDefaultLocales(@Nullable android.os.LocaleList);
-    method @NonNull public android.view.textclassifier.TextClassification.Request.Builder setExtras(@Nullable android.os.Bundle);
-    method @NonNull public android.view.textclassifier.TextClassification.Request.Builder setReferenceTime(@Nullable java.time.ZonedDateTime);
-  }
-
-  public final class TextClassificationContext implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public String getPackageName();
-    method @NonNull public String getWidgetType();
-    method @Nullable public String getWidgetVersion();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassificationContext> CREATOR;
-  }
-
-  public static final class TextClassificationContext.Builder {
-    ctor public TextClassificationContext.Builder(@NonNull String, @NonNull String);
-    method @NonNull public android.view.textclassifier.TextClassificationContext build();
-    method public android.view.textclassifier.TextClassificationContext.Builder setWidgetVersion(@Nullable String);
-  }
-
-  public final class TextClassificationManager {
-    method @NonNull public android.view.textclassifier.TextClassifier createTextClassificationSession(@NonNull android.view.textclassifier.TextClassificationContext);
-    method @NonNull public android.view.textclassifier.TextClassifier getTextClassifier();
-    method public void setTextClassificationSessionFactory(@Nullable android.view.textclassifier.TextClassificationSessionFactory);
-    method public void setTextClassifier(@Nullable android.view.textclassifier.TextClassifier);
-  }
-
-  public interface TextClassificationSessionFactory {
-    method @NonNull public android.view.textclassifier.TextClassifier createTextClassificationSession(@NonNull android.view.textclassifier.TextClassificationContext);
-  }
-
-  public final class TextClassificationSessionId implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public String getValue();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassificationSessionId> CREATOR;
-  }
-
-  public interface TextClassifier {
-    method @NonNull @WorkerThread public default android.view.textclassifier.TextClassification classifyText(@NonNull android.view.textclassifier.TextClassification.Request);
-    method @NonNull @WorkerThread public default android.view.textclassifier.TextClassification classifyText(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @Nullable android.os.LocaleList);
-    method public default void destroy();
-    method @NonNull @WorkerThread public default android.view.textclassifier.TextLanguage detectLanguage(@NonNull android.view.textclassifier.TextLanguage.Request);
-    method @NonNull @WorkerThread public default android.view.textclassifier.TextLinks generateLinks(@NonNull android.view.textclassifier.TextLinks.Request);
-    method @WorkerThread public default int getMaxGenerateLinksTextLength();
-    method public default boolean isDestroyed();
-    method public default void onSelectionEvent(@NonNull android.view.textclassifier.SelectionEvent);
-    method public default void onTextClassifierEvent(@NonNull android.view.textclassifier.TextClassifierEvent);
-    method @NonNull @WorkerThread public default android.view.textclassifier.ConversationActions suggestConversationActions(@NonNull android.view.textclassifier.ConversationActions.Request);
-    method @NonNull @WorkerThread public default android.view.textclassifier.TextSelection suggestSelection(@NonNull android.view.textclassifier.TextSelection.Request);
-    method @NonNull @WorkerThread public default android.view.textclassifier.TextSelection suggestSelection(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @Nullable android.os.LocaleList);
-    field public static final String EXTRA_FROM_TEXT_CLASSIFIER = "android.view.textclassifier.extra.FROM_TEXT_CLASSIFIER";
-    field public static final String HINT_TEXT_IS_EDITABLE = "android.text_is_editable";
-    field public static final String HINT_TEXT_IS_NOT_EDITABLE = "android.text_is_not_editable";
-    field public static final android.view.textclassifier.TextClassifier NO_OP;
-    field public static final String TYPE_ADDRESS = "address";
-    field public static final String TYPE_DATE = "date";
-    field public static final String TYPE_DATE_TIME = "datetime";
-    field public static final String TYPE_EMAIL = "email";
-    field public static final String TYPE_FLIGHT_NUMBER = "flight";
-    field public static final String TYPE_OTHER = "other";
-    field public static final String TYPE_PHONE = "phone";
-    field public static final String TYPE_UNKNOWN = "";
-    field public static final String TYPE_URL = "url";
-    field public static final String WIDGET_TYPE_CUSTOM_EDITTEXT = "customedit";
-    field public static final String WIDGET_TYPE_CUSTOM_TEXTVIEW = "customview";
-    field public static final String WIDGET_TYPE_CUSTOM_UNSELECTABLE_TEXTVIEW = "nosel-customview";
-    field public static final String WIDGET_TYPE_EDITTEXT = "edittext";
-    field public static final String WIDGET_TYPE_EDIT_WEBVIEW = "edit-webview";
-    field public static final String WIDGET_TYPE_NOTIFICATION = "notification";
-    field public static final String WIDGET_TYPE_TEXTVIEW = "textview";
-    field public static final String WIDGET_TYPE_UNKNOWN = "unknown";
-    field public static final String WIDGET_TYPE_UNSELECTABLE_TEXTVIEW = "nosel-textview";
-    field public static final String WIDGET_TYPE_WEBVIEW = "webview";
-  }
-
-  public static final class TextClassifier.EntityConfig implements android.os.Parcelable {
-    method @Deprecated public static android.view.textclassifier.TextClassifier.EntityConfig create(@Nullable java.util.Collection<java.lang.String>, @Nullable java.util.Collection<java.lang.String>, @Nullable java.util.Collection<java.lang.String>);
-    method @Deprecated public static android.view.textclassifier.TextClassifier.EntityConfig createWithExplicitEntityList(@Nullable java.util.Collection<java.lang.String>);
-    method @Deprecated public static android.view.textclassifier.TextClassifier.EntityConfig createWithHints(@Nullable java.util.Collection<java.lang.String>);
-    method public int describeContents();
-    method public java.util.Collection<java.lang.String> getHints();
-    method public java.util.Collection<java.lang.String> resolveEntityListModifications(@NonNull java.util.Collection<java.lang.String>);
-    method public boolean shouldIncludeTypesFromTextClassifier();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassifier.EntityConfig> CREATOR;
-  }
-
-  public static final class TextClassifier.EntityConfig.Builder {
-    ctor public TextClassifier.EntityConfig.Builder();
-    method @NonNull public android.view.textclassifier.TextClassifier.EntityConfig build();
-    method @NonNull public android.view.textclassifier.TextClassifier.EntityConfig.Builder includeTypesFromTextClassifier(boolean);
-    method @NonNull public android.view.textclassifier.TextClassifier.EntityConfig.Builder setExcludedTypes(@Nullable java.util.Collection<java.lang.String>);
-    method @NonNull public android.view.textclassifier.TextClassifier.EntityConfig.Builder setHints(@Nullable java.util.Collection<java.lang.String>);
-    method @NonNull public android.view.textclassifier.TextClassifier.EntityConfig.Builder setIncludedTypes(@Nullable java.util.Collection<java.lang.String>);
-  }
-
-  public abstract class TextClassifierEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public int[] getActionIndices();
-    method @NonNull public String[] getEntityTypes();
-    method public int getEventCategory();
-    method @Nullable public android.view.textclassifier.TextClassificationContext getEventContext();
-    method public int getEventIndex();
-    method public int getEventType();
-    method @NonNull public android.os.Bundle getExtras();
-    method @Nullable public android.icu.util.ULocale getLocale();
-    method @Nullable public String getModelName();
-    method @Nullable public String getResultId();
-    method @NonNull public float[] getScores();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CATEGORY_CONVERSATION_ACTIONS = 3; // 0x3
-    field public static final int CATEGORY_LANGUAGE_DETECTION = 4; // 0x4
-    field public static final int CATEGORY_LINKIFY = 2; // 0x2
-    field public static final int CATEGORY_SELECTION = 1; // 0x1
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassifierEvent> CREATOR;
-    field public static final int TYPE_ACTIONS_GENERATED = 20; // 0x14
-    field public static final int TYPE_ACTIONS_SHOWN = 6; // 0x6
-    field public static final int TYPE_AUTO_SELECTION = 5; // 0x5
-    field public static final int TYPE_COPY_ACTION = 9; // 0x9
-    field public static final int TYPE_CUT_ACTION = 11; // 0xb
-    field public static final int TYPE_LINKS_GENERATED = 21; // 0x15
-    field public static final int TYPE_LINK_CLICKED = 7; // 0x7
-    field public static final int TYPE_MANUAL_REPLY = 19; // 0x13
-    field public static final int TYPE_OTHER_ACTION = 16; // 0x10
-    field public static final int TYPE_OVERTYPE = 8; // 0x8
-    field public static final int TYPE_PASTE_ACTION = 10; // 0xa
-    field public static final int TYPE_SELECTION_DESTROYED = 15; // 0xf
-    field public static final int TYPE_SELECTION_DRAG = 14; // 0xe
-    field public static final int TYPE_SELECTION_MODIFIED = 2; // 0x2
-    field public static final int TYPE_SELECTION_RESET = 18; // 0x12
-    field public static final int TYPE_SELECTION_STARTED = 1; // 0x1
-    field public static final int TYPE_SELECT_ALL = 17; // 0x11
-    field public static final int TYPE_SHARE_ACTION = 12; // 0xc
-    field public static final int TYPE_SMART_ACTION = 13; // 0xd
-    field public static final int TYPE_SMART_SELECTION_MULTI = 4; // 0x4
-    field public static final int TYPE_SMART_SELECTION_SINGLE = 3; // 0x3
-  }
-
-  public abstract static class TextClassifierEvent.Builder<T extends android.view.textclassifier.TextClassifierEvent.Builder<T>> {
-    method @NonNull public T setActionIndices(@NonNull int...);
-    method @NonNull public T setEntityTypes(@NonNull java.lang.String...);
-    method @NonNull public T setEventContext(@Nullable android.view.textclassifier.TextClassificationContext);
-    method @NonNull public T setEventIndex(int);
-    method @NonNull public T setExtras(@NonNull android.os.Bundle);
-    method @NonNull public T setLocale(@Nullable android.icu.util.ULocale);
-    method @NonNull public T setModelName(@Nullable String);
-    method @NonNull public T setResultId(@Nullable String);
-    method @NonNull public T setScores(@NonNull float...);
-  }
-
-  public static final class TextClassifierEvent.ConversationActionsEvent extends android.view.textclassifier.TextClassifierEvent implements android.os.Parcelable {
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassifierEvent.ConversationActionsEvent> CREATOR;
-  }
-
-  public static final class TextClassifierEvent.ConversationActionsEvent.Builder extends android.view.textclassifier.TextClassifierEvent.Builder<android.view.textclassifier.TextClassifierEvent.ConversationActionsEvent.Builder> {
-    ctor public TextClassifierEvent.ConversationActionsEvent.Builder(int);
-    method @NonNull public android.view.textclassifier.TextClassifierEvent.ConversationActionsEvent build();
-  }
-
-  public static final class TextClassifierEvent.LanguageDetectionEvent extends android.view.textclassifier.TextClassifierEvent implements android.os.Parcelable {
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassifierEvent.LanguageDetectionEvent> CREATOR;
-  }
-
-  public static final class TextClassifierEvent.LanguageDetectionEvent.Builder extends android.view.textclassifier.TextClassifierEvent.Builder<android.view.textclassifier.TextClassifierEvent.LanguageDetectionEvent.Builder> {
-    ctor public TextClassifierEvent.LanguageDetectionEvent.Builder(int);
-    method @NonNull public android.view.textclassifier.TextClassifierEvent.LanguageDetectionEvent build();
-  }
-
-  public static final class TextClassifierEvent.TextLinkifyEvent extends android.view.textclassifier.TextClassifierEvent implements android.os.Parcelable {
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassifierEvent.TextLinkifyEvent> CREATOR;
-  }
-
-  public static final class TextClassifierEvent.TextLinkifyEvent.Builder extends android.view.textclassifier.TextClassifierEvent.Builder<android.view.textclassifier.TextClassifierEvent.TextLinkifyEvent.Builder> {
-    ctor public TextClassifierEvent.TextLinkifyEvent.Builder(int);
-    method @NonNull public android.view.textclassifier.TextClassifierEvent.TextLinkifyEvent build();
-  }
-
-  public static final class TextClassifierEvent.TextSelectionEvent extends android.view.textclassifier.TextClassifierEvent implements android.os.Parcelable {
-    method public int getRelativeSuggestedWordEndIndex();
-    method public int getRelativeSuggestedWordStartIndex();
-    method public int getRelativeWordEndIndex();
-    method public int getRelativeWordStartIndex();
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassifierEvent.TextSelectionEvent> CREATOR;
-  }
-
-  public static final class TextClassifierEvent.TextSelectionEvent.Builder extends android.view.textclassifier.TextClassifierEvent.Builder<android.view.textclassifier.TextClassifierEvent.TextSelectionEvent.Builder> {
-    ctor public TextClassifierEvent.TextSelectionEvent.Builder(int);
-    method @NonNull public android.view.textclassifier.TextClassifierEvent.TextSelectionEvent build();
-    method @NonNull public android.view.textclassifier.TextClassifierEvent.TextSelectionEvent.Builder setRelativeSuggestedWordEndIndex(int);
-    method @NonNull public android.view.textclassifier.TextClassifierEvent.TextSelectionEvent.Builder setRelativeSuggestedWordStartIndex(int);
-    method @NonNull public android.view.textclassifier.TextClassifierEvent.TextSelectionEvent.Builder setRelativeWordEndIndex(int);
-    method @NonNull public android.view.textclassifier.TextClassifierEvent.TextSelectionEvent.Builder setRelativeWordStartIndex(int);
-  }
-
-  public final class TextLanguage implements android.os.Parcelable {
-    method public int describeContents();
-    method @FloatRange(from=0.0, to=1.0) public float getConfidenceScore(@NonNull android.icu.util.ULocale);
-    method @NonNull public android.os.Bundle getExtras();
-    method @Nullable public String getId();
-    method @NonNull public android.icu.util.ULocale getLocale(int);
-    method @IntRange(from=0) public int getLocaleHypothesisCount();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextLanguage> CREATOR;
-  }
-
-  public static final class TextLanguage.Builder {
-    ctor public TextLanguage.Builder();
-    method @NonNull public android.view.textclassifier.TextLanguage build();
-    method @NonNull public android.view.textclassifier.TextLanguage.Builder putLocale(@NonNull android.icu.util.ULocale, @FloatRange(from=0.0, to=1.0) float);
-    method @NonNull public android.view.textclassifier.TextLanguage.Builder setExtras(@NonNull android.os.Bundle);
-    method @NonNull public android.view.textclassifier.TextLanguage.Builder setId(@Nullable String);
-  }
-
-  public static final class TextLanguage.Request implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getCallingPackageName();
-    method @NonNull public android.os.Bundle getExtras();
-    method @NonNull public CharSequence getText();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextLanguage.Request> CREATOR;
-  }
-
-  public static final class TextLanguage.Request.Builder {
-    ctor public TextLanguage.Request.Builder(@NonNull CharSequence);
-    method @NonNull public android.view.textclassifier.TextLanguage.Request build();
-    method @NonNull public android.view.textclassifier.TextLanguage.Request.Builder setExtras(@NonNull android.os.Bundle);
-  }
-
-  public final class TextLinks implements android.os.Parcelable {
-    method public int apply(@NonNull android.text.Spannable, int, @Nullable java.util.function.Function<android.view.textclassifier.TextLinks.TextLink,android.view.textclassifier.TextLinks.TextLinkSpan>);
-    method public int describeContents();
-    method @NonNull public android.os.Bundle getExtras();
-    method @NonNull public java.util.Collection<android.view.textclassifier.TextLinks.TextLink> getLinks();
-    method @NonNull public CharSequence getText();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int APPLY_STRATEGY_IGNORE = 0; // 0x0
-    field public static final int APPLY_STRATEGY_REPLACE = 1; // 0x1
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextLinks> CREATOR;
-    field public static final int STATUS_DIFFERENT_TEXT = 3; // 0x3
-    field public static final int STATUS_LINKS_APPLIED = 0; // 0x0
-    field public static final int STATUS_NO_LINKS_APPLIED = 2; // 0x2
-    field public static final int STATUS_NO_LINKS_FOUND = 1; // 0x1
-    field public static final int STATUS_UNSUPPORTED_CHARACTER = 4; // 0x4
-  }
-
-  public static final class TextLinks.Builder {
-    ctor public TextLinks.Builder(@NonNull String);
-    method @NonNull public android.view.textclassifier.TextLinks.Builder addLink(int, int, @NonNull java.util.Map<java.lang.String,java.lang.Float>);
-    method @NonNull public android.view.textclassifier.TextLinks.Builder addLink(int, int, @NonNull java.util.Map<java.lang.String,java.lang.Float>, @NonNull android.os.Bundle);
-    method @NonNull public android.view.textclassifier.TextLinks build();
-    method @NonNull public android.view.textclassifier.TextLinks.Builder clearTextLinks();
-    method @NonNull public android.view.textclassifier.TextLinks.Builder setExtras(@Nullable android.os.Bundle);
-  }
-
-  public static final class TextLinks.Request implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getCallingPackageName();
-    method @Nullable public android.os.LocaleList getDefaultLocales();
-    method @Nullable public android.view.textclassifier.TextClassifier.EntityConfig getEntityConfig();
-    method @NonNull public android.os.Bundle getExtras();
-    method @Nullable public java.time.ZonedDateTime getReferenceTime();
-    method @NonNull public CharSequence getText();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextLinks.Request> CREATOR;
-  }
-
-  public static final class TextLinks.Request.Builder {
-    ctor public TextLinks.Request.Builder(@NonNull CharSequence);
-    method @NonNull public android.view.textclassifier.TextLinks.Request build();
-    method @NonNull public android.view.textclassifier.TextLinks.Request.Builder setDefaultLocales(@Nullable android.os.LocaleList);
-    method @NonNull public android.view.textclassifier.TextLinks.Request.Builder setEntityConfig(@Nullable android.view.textclassifier.TextClassifier.EntityConfig);
-    method public android.view.textclassifier.TextLinks.Request.Builder setExtras(@Nullable android.os.Bundle);
-    method @NonNull public android.view.textclassifier.TextLinks.Request.Builder setReferenceTime(@Nullable java.time.ZonedDateTime);
-  }
-
-  public static final class TextLinks.TextLink implements android.os.Parcelable {
-    method public int describeContents();
-    method @FloatRange(from=0.0, to=1.0) public float getConfidenceScore(String);
-    method public int getEnd();
-    method @NonNull public String getEntity(int);
-    method public int getEntityCount();
-    method @NonNull public android.os.Bundle getExtras();
-    method public int getStart();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextLinks.TextLink> CREATOR;
-  }
-
-  public static class TextLinks.TextLinkSpan extends android.text.style.ClickableSpan {
-    ctor public TextLinks.TextLinkSpan(@NonNull android.view.textclassifier.TextLinks.TextLink);
-    method public final android.view.textclassifier.TextLinks.TextLink getTextLink();
-    method public void onClick(android.view.View);
-  }
-
-  public final class TextSelection implements android.os.Parcelable {
-    method public int describeContents();
-    method @FloatRange(from=0.0, to=1.0) public float getConfidenceScore(String);
-    method @NonNull public String getEntity(int);
-    method @IntRange(from=0) public int getEntityCount();
-    method @NonNull public android.os.Bundle getExtras();
-    method @Nullable public String getId();
-    method public int getSelectionEndIndex();
-    method public int getSelectionStartIndex();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextSelection> CREATOR;
-  }
-
-  public static final class TextSelection.Builder {
-    ctor public TextSelection.Builder(@IntRange(from=0) int, @IntRange(from=0) int);
-    method @NonNull public android.view.textclassifier.TextSelection build();
-    method @NonNull public android.view.textclassifier.TextSelection.Builder setEntityType(@NonNull String, @FloatRange(from=0.0, to=1.0) float);
-    method @NonNull public android.view.textclassifier.TextSelection.Builder setExtras(@Nullable android.os.Bundle);
-    method @NonNull public android.view.textclassifier.TextSelection.Builder setId(@Nullable String);
-  }
-
-  public static final class TextSelection.Request implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getCallingPackageName();
-    method @Nullable public android.os.LocaleList getDefaultLocales();
-    method @IntRange(from=0) public int getEndIndex();
-    method @NonNull public android.os.Bundle getExtras();
-    method @IntRange(from=0) public int getStartIndex();
-    method @NonNull public CharSequence getText();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextSelection.Request> CREATOR;
-  }
-
-  public static final class TextSelection.Request.Builder {
-    ctor public TextSelection.Request.Builder(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int);
-    method @NonNull public android.view.textclassifier.TextSelection.Request build();
-    method @NonNull public android.view.textclassifier.TextSelection.Request.Builder setDefaultLocales(@Nullable android.os.LocaleList);
-    method @NonNull public android.view.textclassifier.TextSelection.Request.Builder setExtras(@Nullable android.os.Bundle);
-  }
-
-}
-
-package android.view.textservice {
-
-  public final class SentenceSuggestionsInfo implements android.os.Parcelable {
-    ctor public SentenceSuggestionsInfo(android.view.textservice.SuggestionsInfo[], int[], int[]);
-    ctor public SentenceSuggestionsInfo(android.os.Parcel);
-    method public int describeContents();
-    method public int getLengthAt(int);
-    method public int getOffsetAt(int);
-    method public int getSuggestionsCount();
-    method public android.view.textservice.SuggestionsInfo getSuggestionsInfoAt(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textservice.SentenceSuggestionsInfo> CREATOR;
-  }
-
-  public final class SpellCheckerInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.content.ComponentName getComponent();
-    method public String getId();
-    method public String getPackageName();
-    method public android.content.pm.ServiceInfo getServiceInfo();
-    method public String getSettingsActivity();
-    method public android.view.textservice.SpellCheckerSubtype getSubtypeAt(int);
-    method public int getSubtypeCount();
-    method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
-    method public CharSequence loadLabel(android.content.pm.PackageManager);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textservice.SpellCheckerInfo> CREATOR;
-  }
-
-  public class SpellCheckerSession {
-    method public void cancel();
-    method public void close();
-    method public void getSentenceSuggestions(android.view.textservice.TextInfo[], int);
-    method public android.view.textservice.SpellCheckerInfo getSpellChecker();
-    method @Deprecated public void getSuggestions(android.view.textservice.TextInfo, int);
-    method @Deprecated public void getSuggestions(android.view.textservice.TextInfo[], int, boolean);
-    method public boolean isSessionDisconnected();
-    field public static final String SERVICE_META_DATA = "android.view.textservice.scs";
-  }
-
-  public static interface SpellCheckerSession.SpellCheckerSessionListener {
-    method public void onGetSentenceSuggestions(android.view.textservice.SentenceSuggestionsInfo[]);
-    method public void onGetSuggestions(android.view.textservice.SuggestionsInfo[]);
-  }
-
-  public final class SpellCheckerSubtype implements android.os.Parcelable {
-    ctor @Deprecated public SpellCheckerSubtype(int, String, String);
-    method public boolean containsExtraValueKey(String);
-    method public int describeContents();
-    method public CharSequence getDisplayName(android.content.Context, String, android.content.pm.ApplicationInfo);
-    method public String getExtraValue();
-    method public String getExtraValueOf(String);
-    method @NonNull public String getLanguageTag();
-    method @Deprecated @NonNull public String getLocale();
-    method public int getNameResId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textservice.SpellCheckerSubtype> CREATOR;
-  }
-
-  public final class SuggestionsInfo implements android.os.Parcelable {
-    ctor public SuggestionsInfo(int, String[]);
-    ctor public SuggestionsInfo(int, String[], int, int);
-    ctor public SuggestionsInfo(android.os.Parcel);
-    method public int describeContents();
-    method public int getCookie();
-    method public int getSequence();
-    method public String getSuggestionAt(int);
-    method public int getSuggestionsAttributes();
-    method public int getSuggestionsCount();
-    method public void setCookieAndSequence(int, int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textservice.SuggestionsInfo> CREATOR;
-    field public static final int RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS = 4; // 0x4
-    field public static final int RESULT_ATTR_IN_THE_DICTIONARY = 1; // 0x1
-    field public static final int RESULT_ATTR_LOOKS_LIKE_TYPO = 2; // 0x2
-  }
-
-  public final class TextInfo implements android.os.Parcelable {
-    ctor public TextInfo(String);
-    ctor public TextInfo(String, int, int);
-    ctor public TextInfo(CharSequence, int, int, int, int);
-    ctor public TextInfo(android.os.Parcel);
-    method public int describeContents();
-    method public CharSequence getCharSequence();
-    method public int getCookie();
-    method public int getSequence();
-    method public String getText();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.textservice.TextInfo> CREATOR;
-  }
-
-  public final class TextServicesManager {
-    method public android.view.textservice.SpellCheckerSession newSpellCheckerSession(android.os.Bundle, java.util.Locale, android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener, boolean);
-  }
-
-}
-
-package android.webkit {
-
-  public abstract class ClientCertRequest {
-    ctor public ClientCertRequest();
-    method public abstract void cancel();
-    method public abstract String getHost();
-    method @Nullable public abstract String[] getKeyTypes();
-    method public abstract int getPort();
-    method @Nullable public abstract java.security.Principal[] getPrincipals();
-    method public abstract void ignore();
-    method public abstract void proceed(java.security.PrivateKey, java.security.cert.X509Certificate[]);
-  }
-
-  public class ConsoleMessage {
-    ctor public ConsoleMessage(String, String, int, android.webkit.ConsoleMessage.MessageLevel);
-    method public int lineNumber();
-    method public String message();
-    method public android.webkit.ConsoleMessage.MessageLevel messageLevel();
-    method public String sourceId();
-  }
-
-  public enum ConsoleMessage.MessageLevel {
-    enum_constant public static final android.webkit.ConsoleMessage.MessageLevel DEBUG;
-    enum_constant public static final android.webkit.ConsoleMessage.MessageLevel ERROR;
-    enum_constant public static final android.webkit.ConsoleMessage.MessageLevel LOG;
-    enum_constant public static final android.webkit.ConsoleMessage.MessageLevel TIP;
-    enum_constant public static final android.webkit.ConsoleMessage.MessageLevel WARNING;
-  }
-
-  public abstract class CookieManager {
-    ctor @Deprecated public CookieManager();
-    method public abstract boolean acceptCookie();
-    method public abstract boolean acceptThirdPartyCookies(android.webkit.WebView);
-    method public static boolean allowFileSchemeCookies();
-    method public abstract void flush();
-    method public abstract String getCookie(String);
-    method public static android.webkit.CookieManager getInstance();
-    method public abstract boolean hasCookies();
-    method @Deprecated public abstract void removeAllCookie();
-    method public abstract void removeAllCookies(@Nullable android.webkit.ValueCallback<java.lang.Boolean>);
-    method @Deprecated public abstract void removeExpiredCookie();
-    method @Deprecated public abstract void removeSessionCookie();
-    method public abstract void removeSessionCookies(@Nullable android.webkit.ValueCallback<java.lang.Boolean>);
-    method public abstract void setAcceptCookie(boolean);
-    method @Deprecated public static void setAcceptFileSchemeCookies(boolean);
-    method public abstract void setAcceptThirdPartyCookies(android.webkit.WebView, boolean);
-    method public abstract void setCookie(String, String);
-    method public abstract void setCookie(String, String, @Nullable android.webkit.ValueCallback<java.lang.Boolean>);
-  }
-
-  @Deprecated public final class CookieSyncManager implements java.lang.Runnable {
-    method @Deprecated public static android.webkit.CookieSyncManager createInstance(android.content.Context);
-    method @Deprecated public static android.webkit.CookieSyncManager getInstance();
-    method @Deprecated public void resetSync();
-    method @Deprecated public void run();
-    method @Deprecated public void startSync();
-    method @Deprecated public void stopSync();
-    method @Deprecated public void sync();
-    method @Deprecated protected void syncFromRamToFlash();
-  }
-
-  public class DateSorter {
-    ctor public DateSorter(android.content.Context);
-    method public long getBoundary(int);
-    method public int getIndex(long);
-    method public String getLabel(int);
-    field public static final int DAY_COUNT = 5; // 0x5
-  }
-
-  public interface DownloadListener {
-    method public void onDownloadStart(String, String, String, String, long);
-  }
-
-  public class GeolocationPermissions {
-    method public void allow(String);
-    method public void clear(String);
-    method public void clearAll();
-    method public void getAllowed(String, android.webkit.ValueCallback<java.lang.Boolean>);
-    method public static android.webkit.GeolocationPermissions getInstance();
-    method public void getOrigins(android.webkit.ValueCallback<java.util.Set<java.lang.String>>);
-  }
-
-  public static interface GeolocationPermissions.Callback {
-    method public void invoke(String, boolean, boolean);
-  }
-
-  public class HttpAuthHandler extends android.os.Handler {
-    method public void cancel();
-    method public void proceed(String, String);
-    method public boolean useHttpAuthUsernamePassword();
-  }
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD}) public @interface JavascriptInterface {
-  }
-
-  public class JsPromptResult extends android.webkit.JsResult {
-    method public void confirm(String);
-  }
-
-  public class JsResult {
-    method public final void cancel();
-    method public final void confirm();
-  }
-
-  public class MimeTypeMap {
-    method @Nullable public String getExtensionFromMimeType(String);
-    method public static String getFileExtensionFromUrl(String);
-    method @Nullable public String getMimeTypeFromExtension(String);
-    method public static android.webkit.MimeTypeMap getSingleton();
-    method public boolean hasExtension(String);
-    method public boolean hasMimeType(String);
-  }
-
-  public abstract class PermissionRequest {
-    ctor public PermissionRequest();
-    method public abstract void deny();
-    method public abstract android.net.Uri getOrigin();
-    method public abstract String[] getResources();
-    method public abstract void grant(String[]);
-    field public static final String RESOURCE_AUDIO_CAPTURE = "android.webkit.resource.AUDIO_CAPTURE";
-    field public static final String RESOURCE_MIDI_SYSEX = "android.webkit.resource.MIDI_SYSEX";
-    field public static final String RESOURCE_PROTECTED_MEDIA_ID = "android.webkit.resource.PROTECTED_MEDIA_ID";
-    field public static final String RESOURCE_VIDEO_CAPTURE = "android.webkit.resource.VIDEO_CAPTURE";
-  }
-
-  public interface PluginStub {
-    method public android.view.View getEmbeddedView(int, android.content.Context);
-    method public android.view.View getFullScreenView(int, android.content.Context);
-  }
-
-  public abstract class RenderProcessGoneDetail {
-    ctor @Deprecated public RenderProcessGoneDetail();
-    method public abstract boolean didCrash();
-    method public abstract int rendererPriorityAtExit();
-  }
-
-  public abstract class SafeBrowsingResponse {
-    ctor @Deprecated public SafeBrowsingResponse();
-    method public abstract void backToSafety(boolean);
-    method public abstract void proceed(boolean);
-    method public abstract void showInterstitial(boolean);
-  }
-
-  public class ServiceWorkerClient {
-    ctor public ServiceWorkerClient();
-    method @Nullable public android.webkit.WebResourceResponse shouldInterceptRequest(android.webkit.WebResourceRequest);
-  }
-
-  public abstract class ServiceWorkerController {
-    ctor @Deprecated public ServiceWorkerController();
-    method @NonNull public static android.webkit.ServiceWorkerController getInstance();
-    method @NonNull public abstract android.webkit.ServiceWorkerWebSettings getServiceWorkerWebSettings();
-    method public abstract void setServiceWorkerClient(@Nullable android.webkit.ServiceWorkerClient);
-  }
-
-  public abstract class ServiceWorkerWebSettings {
-    ctor public ServiceWorkerWebSettings();
-    method public abstract boolean getAllowContentAccess();
-    method public abstract boolean getAllowFileAccess();
-    method public abstract boolean getBlockNetworkLoads();
-    method public abstract int getCacheMode();
-    method public abstract void setAllowContentAccess(boolean);
-    method public abstract void setAllowFileAccess(boolean);
-    method public abstract void setBlockNetworkLoads(boolean);
-    method public abstract void setCacheMode(int);
-  }
-
-  public class SslErrorHandler extends android.os.Handler {
-    method public void cancel();
-    method public void proceed();
-  }
-
-  public class TracingConfig {
-    method @NonNull public java.util.List<java.lang.String> getCustomIncludedCategories();
-    method public int getPredefinedCategories();
-    method public int getTracingMode();
-    field public static final int CATEGORIES_ALL = 1; // 0x1
-    field public static final int CATEGORIES_ANDROID_WEBVIEW = 2; // 0x2
-    field public static final int CATEGORIES_FRAME_VIEWER = 64; // 0x40
-    field public static final int CATEGORIES_INPUT_LATENCY = 8; // 0x8
-    field public static final int CATEGORIES_JAVASCRIPT_AND_RENDERING = 32; // 0x20
-    field public static final int CATEGORIES_NONE = 0; // 0x0
-    field public static final int CATEGORIES_RENDERING = 16; // 0x10
-    field public static final int CATEGORIES_WEB_DEVELOPER = 4; // 0x4
-    field public static final int RECORD_CONTINUOUSLY = 1; // 0x1
-    field public static final int RECORD_UNTIL_FULL = 0; // 0x0
-  }
-
-  public static class TracingConfig.Builder {
-    ctor public TracingConfig.Builder();
-    method public android.webkit.TracingConfig.Builder addCategories(int...);
-    method public android.webkit.TracingConfig.Builder addCategories(java.lang.String...);
-    method public android.webkit.TracingConfig.Builder addCategories(java.util.Collection<java.lang.String>);
-    method public android.webkit.TracingConfig build();
-    method public android.webkit.TracingConfig.Builder setTracingMode(int);
-  }
-
-  public abstract class TracingController {
-    ctor @Deprecated public TracingController();
-    method @NonNull public static android.webkit.TracingController getInstance();
-    method public abstract boolean isTracing();
-    method public abstract void start(@NonNull android.webkit.TracingConfig);
-    method public abstract boolean stop(@Nullable java.io.OutputStream, @NonNull java.util.concurrent.Executor);
-  }
-
-  public final class URLUtil {
-    ctor public URLUtil();
-    method public static String composeSearchUrl(String, String, String);
-    method public static byte[] decode(byte[]) throws java.lang.IllegalArgumentException;
-    method public static String guessFileName(String, @Nullable String, @Nullable String);
-    method public static String guessUrl(String);
-    method public static boolean isAboutUrl(String);
-    method public static boolean isAssetUrl(String);
-    method public static boolean isContentUrl(String);
-    method @Deprecated public static boolean isCookielessProxyUrl(String);
-    method public static boolean isDataUrl(String);
-    method public static boolean isFileUrl(String);
-    method public static boolean isHttpUrl(String);
-    method public static boolean isHttpsUrl(String);
-    method public static boolean isJavaScriptUrl(String);
-    method public static boolean isNetworkUrl(String);
-    method public static boolean isValidUrl(String);
-    method public static String stripAnchor(String);
-  }
-
-  public interface ValueCallback<T> {
-    method public void onReceiveValue(T);
-  }
-
-  public abstract class WebBackForwardList implements java.lang.Cloneable java.io.Serializable {
-    ctor public WebBackForwardList();
-    method protected abstract android.webkit.WebBackForwardList clone();
-    method public abstract int getCurrentIndex();
-    method @Nullable public abstract android.webkit.WebHistoryItem getCurrentItem();
-    method public abstract android.webkit.WebHistoryItem getItemAtIndex(int);
-    method public abstract int getSize();
-  }
-
-  public class WebChromeClient {
-    ctor public WebChromeClient();
-    method @Nullable public android.graphics.Bitmap getDefaultVideoPoster();
-    method @Nullable public android.view.View getVideoLoadingProgressView();
-    method public void getVisitedHistory(android.webkit.ValueCallback<java.lang.String[]>);
-    method public void onCloseWindow(android.webkit.WebView);
-    method @Deprecated public void onConsoleMessage(String, int, String);
-    method public boolean onConsoleMessage(android.webkit.ConsoleMessage);
-    method public boolean onCreateWindow(android.webkit.WebView, boolean, boolean, android.os.Message);
-    method @Deprecated public void onExceededDatabaseQuota(String, String, long, long, long, android.webkit.WebStorage.QuotaUpdater);
-    method public void onGeolocationPermissionsHidePrompt();
-    method public void onGeolocationPermissionsShowPrompt(String, android.webkit.GeolocationPermissions.Callback);
-    method public void onHideCustomView();
-    method public boolean onJsAlert(android.webkit.WebView, String, String, android.webkit.JsResult);
-    method public boolean onJsBeforeUnload(android.webkit.WebView, String, String, android.webkit.JsResult);
-    method public boolean onJsConfirm(android.webkit.WebView, String, String, android.webkit.JsResult);
-    method public boolean onJsPrompt(android.webkit.WebView, String, String, String, android.webkit.JsPromptResult);
-    method @Deprecated public boolean onJsTimeout();
-    method public void onPermissionRequest(android.webkit.PermissionRequest);
-    method public void onPermissionRequestCanceled(android.webkit.PermissionRequest);
-    method public void onProgressChanged(android.webkit.WebView, int);
-    method @Deprecated public void onReachedMaxAppCacheSize(long, long, android.webkit.WebStorage.QuotaUpdater);
-    method public void onReceivedIcon(android.webkit.WebView, android.graphics.Bitmap);
-    method public void onReceivedTitle(android.webkit.WebView, String);
-    method public void onReceivedTouchIconUrl(android.webkit.WebView, String, boolean);
-    method public void onRequestFocus(android.webkit.WebView);
-    method public void onShowCustomView(android.view.View, android.webkit.WebChromeClient.CustomViewCallback);
-    method @Deprecated public void onShowCustomView(android.view.View, int, android.webkit.WebChromeClient.CustomViewCallback);
-    method public boolean onShowFileChooser(android.webkit.WebView, android.webkit.ValueCallback<android.net.Uri[]>, android.webkit.WebChromeClient.FileChooserParams);
-  }
-
-  public static interface WebChromeClient.CustomViewCallback {
-    method public void onCustomViewHidden();
-  }
-
-  public abstract static class WebChromeClient.FileChooserParams {
-    ctor public WebChromeClient.FileChooserParams();
-    method public abstract android.content.Intent createIntent();
-    method public abstract String[] getAcceptTypes();
-    method @Nullable public abstract String getFilenameHint();
-    method public abstract int getMode();
-    method @Nullable public abstract CharSequence getTitle();
-    method public abstract boolean isCaptureEnabled();
-    method @Nullable public static android.net.Uri[] parseResult(int, android.content.Intent);
-    field public static final int MODE_OPEN = 0; // 0x0
-    field public static final int MODE_OPEN_MULTIPLE = 1; // 0x1
-    field public static final int MODE_SAVE = 3; // 0x3
-  }
-
-  public abstract class WebHistoryItem implements java.lang.Cloneable {
-    ctor public WebHistoryItem();
-    method protected abstract android.webkit.WebHistoryItem clone();
-    method @Nullable public abstract android.graphics.Bitmap getFavicon();
-    method public abstract String getOriginalUrl();
-    method public abstract String getTitle();
-    method public abstract String getUrl();
-  }
-
-  @Deprecated public abstract class WebIconDatabase {
-    ctor @Deprecated public WebIconDatabase();
-    method @Deprecated public abstract void close();
-    method @Deprecated public static android.webkit.WebIconDatabase getInstance();
-    method @Deprecated public abstract void open(String);
-    method @Deprecated public abstract void releaseIconForPageUrl(String);
-    method @Deprecated public abstract void removeAllIcons();
-    method @Deprecated public abstract void requestIconForPageUrl(String, android.webkit.WebIconDatabase.IconListener);
-    method @Deprecated public abstract void retainIconForPageUrl(String);
-  }
-
-  @Deprecated public static interface WebIconDatabase.IconListener {
-    method @Deprecated public void onReceivedIcon(String, android.graphics.Bitmap);
-  }
-
-  public class WebMessage {
-    ctor public WebMessage(String);
-    ctor public WebMessage(String, android.webkit.WebMessagePort[]);
-    method public String getData();
-    method @Nullable public android.webkit.WebMessagePort[] getPorts();
-  }
-
-  public abstract class WebMessagePort {
-    method public abstract void close();
-    method public abstract void postMessage(android.webkit.WebMessage);
-    method public abstract void setWebMessageCallback(android.webkit.WebMessagePort.WebMessageCallback);
-    method public abstract void setWebMessageCallback(android.webkit.WebMessagePort.WebMessageCallback, android.os.Handler);
-  }
-
-  public abstract static class WebMessagePort.WebMessageCallback {
-    ctor public WebMessagePort.WebMessageCallback();
-    method public void onMessage(android.webkit.WebMessagePort, android.webkit.WebMessage);
-  }
-
-  public abstract class WebResourceError {
-    method public abstract CharSequence getDescription();
-    method public abstract int getErrorCode();
-  }
-
-  public interface WebResourceRequest {
-    method public String getMethod();
-    method public java.util.Map<java.lang.String,java.lang.String> getRequestHeaders();
-    method public android.net.Uri getUrl();
-    method public boolean hasGesture();
-    method public boolean isForMainFrame();
-    method public boolean isRedirect();
-  }
-
-  public class WebResourceResponse {
-    ctor public WebResourceResponse(String, String, java.io.InputStream);
-    ctor public WebResourceResponse(String, String, int, @NonNull String, java.util.Map<java.lang.String,java.lang.String>, java.io.InputStream);
-    method public java.io.InputStream getData();
-    method public String getEncoding();
-    method public String getMimeType();
-    method public String getReasonPhrase();
-    method public java.util.Map<java.lang.String,java.lang.String> getResponseHeaders();
-    method public int getStatusCode();
-    method public void setData(java.io.InputStream);
-    method public void setEncoding(String);
-    method public void setMimeType(String);
-    method public void setResponseHeaders(java.util.Map<java.lang.String,java.lang.String>);
-    method public void setStatusCodeAndReasonPhrase(int, @NonNull String);
-  }
-
-  public abstract class WebSettings {
-    ctor public WebSettings();
-    method @Deprecated public abstract boolean enableSmoothTransition();
-    method public abstract boolean getAllowContentAccess();
-    method public abstract boolean getAllowFileAccess();
-    method public abstract boolean getAllowFileAccessFromFileURLs();
-    method public abstract boolean getAllowUniversalAccessFromFileURLs();
-    method public abstract boolean getBlockNetworkImage();
-    method public abstract boolean getBlockNetworkLoads();
-    method public abstract boolean getBuiltInZoomControls();
-    method public abstract int getCacheMode();
-    method public abstract String getCursiveFontFamily();
-    method public abstract boolean getDatabaseEnabled();
-    method @Deprecated public abstract String getDatabasePath();
-    method public abstract int getDefaultFixedFontSize();
-    method public abstract int getDefaultFontSize();
-    method public abstract String getDefaultTextEncodingName();
-    method public static String getDefaultUserAgent(android.content.Context);
-    method @Deprecated public abstract android.webkit.WebSettings.ZoomDensity getDefaultZoom();
-    method public abstract int getDisabledActionModeMenuItems();
-    method public abstract boolean getDisplayZoomControls();
-    method public abstract boolean getDomStorageEnabled();
-    method public abstract String getFantasyFontFamily();
-    method public abstract String getFixedFontFamily();
-    method public int getForceDark();
-    method public abstract boolean getJavaScriptCanOpenWindowsAutomatically();
-    method public abstract boolean getJavaScriptEnabled();
-    method public abstract android.webkit.WebSettings.LayoutAlgorithm getLayoutAlgorithm();
-    method @Deprecated public abstract boolean getLightTouchEnabled();
-    method public abstract boolean getLoadWithOverviewMode();
-    method public abstract boolean getLoadsImagesAutomatically();
-    method public abstract boolean getMediaPlaybackRequiresUserGesture();
-    method public abstract int getMinimumFontSize();
-    method public abstract int getMinimumLogicalFontSize();
-    method public abstract int getMixedContentMode();
-    method public abstract boolean getOffscreenPreRaster();
-    method @Deprecated public abstract android.webkit.WebSettings.PluginState getPluginState();
-    method public abstract boolean getSafeBrowsingEnabled();
-    method public abstract String getSansSerifFontFamily();
-    method @Deprecated public abstract boolean getSaveFormData();
-    method @Deprecated public abstract boolean getSavePassword();
-    method public abstract String getSerifFontFamily();
-    method public abstract String getStandardFontFamily();
-    method @Deprecated public android.webkit.WebSettings.TextSize getTextSize();
-    method public abstract int getTextZoom();
-    method public abstract boolean getUseWideViewPort();
-    method public abstract String getUserAgentString();
-    method public abstract void setAllowContentAccess(boolean);
-    method public abstract void setAllowFileAccess(boolean);
-    method @Deprecated public abstract void setAllowFileAccessFromFileURLs(boolean);
-    method @Deprecated public abstract void setAllowUniversalAccessFromFileURLs(boolean);
-    method @Deprecated public abstract void setAppCacheEnabled(boolean);
-    method @Deprecated public abstract void setAppCacheMaxSize(long);
-    method @Deprecated public abstract void setAppCachePath(String);
-    method public abstract void setBlockNetworkImage(boolean);
-    method public abstract void setBlockNetworkLoads(boolean);
-    method public abstract void setBuiltInZoomControls(boolean);
-    method public abstract void setCacheMode(int);
-    method public abstract void setCursiveFontFamily(String);
-    method public abstract void setDatabaseEnabled(boolean);
-    method @Deprecated public abstract void setDatabasePath(String);
-    method public abstract void setDefaultFixedFontSize(int);
-    method public abstract void setDefaultFontSize(int);
-    method public abstract void setDefaultTextEncodingName(String);
-    method @Deprecated public abstract void setDefaultZoom(android.webkit.WebSettings.ZoomDensity);
-    method public abstract void setDisabledActionModeMenuItems(int);
-    method public abstract void setDisplayZoomControls(boolean);
-    method public abstract void setDomStorageEnabled(boolean);
-    method @Deprecated public abstract void setEnableSmoothTransition(boolean);
-    method public abstract void setFantasyFontFamily(String);
-    method public abstract void setFixedFontFamily(String);
-    method public void setForceDark(int);
-    method @Deprecated public abstract void setGeolocationDatabasePath(String);
-    method public abstract void setGeolocationEnabled(boolean);
-    method public abstract void setJavaScriptCanOpenWindowsAutomatically(boolean);
-    method public abstract void setJavaScriptEnabled(boolean);
-    method public abstract void setLayoutAlgorithm(android.webkit.WebSettings.LayoutAlgorithm);
-    method @Deprecated public abstract void setLightTouchEnabled(boolean);
-    method public abstract void setLoadWithOverviewMode(boolean);
-    method public abstract void setLoadsImagesAutomatically(boolean);
-    method public abstract void setMediaPlaybackRequiresUserGesture(boolean);
-    method public abstract void setMinimumFontSize(int);
-    method public abstract void setMinimumLogicalFontSize(int);
-    method public abstract void setMixedContentMode(int);
-    method public abstract void setNeedInitialFocus(boolean);
-    method public abstract void setOffscreenPreRaster(boolean);
-    method @Deprecated public abstract void setPluginState(android.webkit.WebSettings.PluginState);
-    method @Deprecated public abstract void setRenderPriority(android.webkit.WebSettings.RenderPriority);
-    method public abstract void setSafeBrowsingEnabled(boolean);
-    method public abstract void setSansSerifFontFamily(String);
-    method @Deprecated public abstract void setSaveFormData(boolean);
-    method @Deprecated public abstract void setSavePassword(boolean);
-    method public abstract void setSerifFontFamily(String);
-    method public abstract void setStandardFontFamily(String);
-    method public abstract void setSupportMultipleWindows(boolean);
-    method public abstract void setSupportZoom(boolean);
-    method @Deprecated public void setTextSize(android.webkit.WebSettings.TextSize);
-    method public abstract void setTextZoom(int);
-    method public abstract void setUseWideViewPort(boolean);
-    method public abstract void setUserAgentString(@Nullable String);
-    method public abstract boolean supportMultipleWindows();
-    method public abstract boolean supportZoom();
-    field public static final int FORCE_DARK_AUTO = 1; // 0x1
-    field public static final int FORCE_DARK_OFF = 0; // 0x0
-    field public static final int FORCE_DARK_ON = 2; // 0x2
-    field public static final int LOAD_CACHE_ELSE_NETWORK = 1; // 0x1
-    field public static final int LOAD_CACHE_ONLY = 3; // 0x3
-    field public static final int LOAD_DEFAULT = -1; // 0xffffffff
-    field @Deprecated public static final int LOAD_NORMAL = 0; // 0x0
-    field public static final int LOAD_NO_CACHE = 2; // 0x2
-    field public static final int MENU_ITEM_NONE = 0; // 0x0
-    field public static final int MENU_ITEM_PROCESS_TEXT = 4; // 0x4
-    field public static final int MENU_ITEM_SHARE = 1; // 0x1
-    field public static final int MENU_ITEM_WEB_SEARCH = 2; // 0x2
-    field public static final int MIXED_CONTENT_ALWAYS_ALLOW = 0; // 0x0
-    field public static final int MIXED_CONTENT_COMPATIBILITY_MODE = 2; // 0x2
-    field public static final int MIXED_CONTENT_NEVER_ALLOW = 1; // 0x1
-  }
-
-  public enum WebSettings.LayoutAlgorithm {
-    enum_constant @Deprecated public static final android.webkit.WebSettings.LayoutAlgorithm NARROW_COLUMNS;
-    enum_constant public static final android.webkit.WebSettings.LayoutAlgorithm NORMAL;
-    enum_constant @Deprecated public static final android.webkit.WebSettings.LayoutAlgorithm SINGLE_COLUMN;
-    enum_constant public static final android.webkit.WebSettings.LayoutAlgorithm TEXT_AUTOSIZING;
-  }
-
-  public enum WebSettings.PluginState {
-    enum_constant public static final android.webkit.WebSettings.PluginState OFF;
-    enum_constant public static final android.webkit.WebSettings.PluginState ON;
-    enum_constant public static final android.webkit.WebSettings.PluginState ON_DEMAND;
-  }
-
-  public enum WebSettings.RenderPriority {
-    enum_constant public static final android.webkit.WebSettings.RenderPriority HIGH;
-    enum_constant public static final android.webkit.WebSettings.RenderPriority LOW;
-    enum_constant public static final android.webkit.WebSettings.RenderPriority NORMAL;
-  }
-
-  @Deprecated public enum WebSettings.TextSize {
-    enum_constant @Deprecated public static final android.webkit.WebSettings.TextSize LARGER;
-    enum_constant @Deprecated public static final android.webkit.WebSettings.TextSize LARGEST;
-    enum_constant @Deprecated public static final android.webkit.WebSettings.TextSize NORMAL;
-    enum_constant @Deprecated public static final android.webkit.WebSettings.TextSize SMALLER;
-    enum_constant @Deprecated public static final android.webkit.WebSettings.TextSize SMALLEST;
-  }
-
-  public enum WebSettings.ZoomDensity {
-    enum_constant public static final android.webkit.WebSettings.ZoomDensity CLOSE;
-    enum_constant public static final android.webkit.WebSettings.ZoomDensity FAR;
-    enum_constant public static final android.webkit.WebSettings.ZoomDensity MEDIUM;
-  }
-
-  public class WebStorage {
-    method public void deleteAllData();
-    method public void deleteOrigin(String);
-    method public static android.webkit.WebStorage getInstance();
-    method public void getOrigins(android.webkit.ValueCallback<java.util.Map>);
-    method public void getQuotaForOrigin(String, android.webkit.ValueCallback<java.lang.Long>);
-    method public void getUsageForOrigin(String, android.webkit.ValueCallback<java.lang.Long>);
-    method @Deprecated public void setQuotaForOrigin(String, long);
-  }
-
-  public static class WebStorage.Origin {
-    method public String getOrigin();
-    method public long getQuota();
-    method public long getUsage();
-  }
-
-  @Deprecated public static interface WebStorage.QuotaUpdater {
-    method @Deprecated public void updateQuota(long);
-  }
-
-  public class WebView extends android.widget.AbsoluteLayout implements android.view.ViewGroup.OnHierarchyChangeListener android.view.ViewTreeObserver.OnGlobalFocusChangeListener {
-    ctor public WebView(@NonNull android.content.Context);
-    ctor public WebView(@NonNull android.content.Context, @Nullable android.util.AttributeSet);
-    ctor public WebView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, int);
-    ctor public WebView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, int, int);
-    ctor @Deprecated public WebView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, int, boolean);
-    method public void addJavascriptInterface(@NonNull Object, @NonNull String);
-    method public boolean canGoBack();
-    method public boolean canGoBackOrForward(int);
-    method public boolean canGoForward();
-    method @Deprecated public boolean canZoomIn();
-    method @Deprecated public boolean canZoomOut();
-    method @Deprecated public android.graphics.Picture capturePicture();
-    method public void clearCache(boolean);
-    method public static void clearClientCertPreferences(@Nullable Runnable);
-    method public void clearFormData();
-    method public void clearHistory();
-    method public void clearMatches();
-    method public void clearSslPreferences();
-    method @Deprecated public void clearView();
-    method @NonNull public android.webkit.WebBackForwardList copyBackForwardList();
-    method @Deprecated public android.print.PrintDocumentAdapter createPrintDocumentAdapter();
-    method @NonNull public android.print.PrintDocumentAdapter createPrintDocumentAdapter(@NonNull String);
-    method @NonNull public android.webkit.WebMessagePort[] createWebMessageChannel();
-    method public void destroy();
-    method public static void disableWebView();
-    method public void documentHasImages(@NonNull android.os.Message);
-    method public static void enableSlowWholeDocumentDraw();
-    method public void evaluateJavascript(@NonNull String, @Nullable android.webkit.ValueCallback<java.lang.String>);
-    method @Deprecated @Nullable public static String findAddress(String);
-    method @Deprecated public int findAll(String);
-    method public void findAllAsync(@NonNull String);
-    method public void findNext(boolean);
-    method public void flingScroll(int, int);
-    method @Deprecated public void freeMemory();
-    method @Nullable public android.net.http.SslCertificate getCertificate();
-    method public int getContentHeight();
-    method @Nullable public static android.content.pm.PackageInfo getCurrentWebViewPackage();
-    method @Nullable public android.graphics.Bitmap getFavicon();
-    method @NonNull public android.webkit.WebView.HitTestResult getHitTestResult();
-    method @Deprecated @Nullable public String[] getHttpAuthUsernamePassword(String, String);
-    method @Nullable public String getOriginalUrl();
-    method public int getProgress();
-    method public boolean getRendererPriorityWaivedWhenNotVisible();
-    method public int getRendererRequestedPriority();
-    method @NonNull public static android.net.Uri getSafeBrowsingPrivacyPolicyUrl();
-    method @Deprecated public float getScale();
-    method @NonNull public android.webkit.WebSettings getSettings();
-    method @NonNull public android.view.textclassifier.TextClassifier getTextClassifier();
-    method @Nullable public String getTitle();
-    method @Nullable public String getUrl();
-    method @Nullable public android.webkit.WebChromeClient getWebChromeClient();
-    method @NonNull public static ClassLoader getWebViewClassLoader();
-    method @NonNull public android.webkit.WebViewClient getWebViewClient();
-    method @NonNull public android.os.Looper getWebViewLooper();
-    method @Nullable public android.webkit.WebViewRenderProcess getWebViewRenderProcess();
-    method @Nullable public android.webkit.WebViewRenderProcessClient getWebViewRenderProcessClient();
-    method public void goBack();
-    method public void goBackOrForward(int);
-    method public void goForward();
-    method public void invokeZoomPicker();
-    method public boolean isPrivateBrowsingEnabled();
-    method public void loadData(@NonNull String, @Nullable String, @Nullable String);
-    method public void loadDataWithBaseURL(@Nullable String, @NonNull String, @Nullable String, @Nullable String, @Nullable String);
-    method public void loadUrl(@NonNull String, @NonNull java.util.Map<java.lang.String,java.lang.String>);
-    method public void loadUrl(@NonNull String);
-    method @Deprecated public void onChildViewAdded(android.view.View, android.view.View);
-    method @Deprecated public void onChildViewRemoved(android.view.View, android.view.View);
-    method @Deprecated public void onGlobalFocusChanged(android.view.View, android.view.View);
-    method public void onPause();
-    method public void onResume();
-    method @Deprecated public boolean overlayHorizontalScrollbar();
-    method @Deprecated public boolean overlayVerticalScrollbar();
-    method public boolean pageDown(boolean);
-    method public boolean pageUp(boolean);
-    method public void pauseTimers();
-    method public void postUrl(@NonNull String, @NonNull byte[]);
-    method public void postVisualStateCallback(long, @NonNull android.webkit.WebView.VisualStateCallback);
-    method public void postWebMessage(@NonNull android.webkit.WebMessage, @NonNull android.net.Uri);
-    method public void reload();
-    method public void removeJavascriptInterface(@NonNull String);
-    method public void requestFocusNodeHref(@Nullable android.os.Message);
-    method public void requestImageRef(@NonNull android.os.Message);
-    method @Nullable public android.webkit.WebBackForwardList restoreState(@NonNull android.os.Bundle);
-    method public void resumeTimers();
-    method @Deprecated public void savePassword(String, String, String);
-    method @Nullable public android.webkit.WebBackForwardList saveState(@NonNull android.os.Bundle);
-    method public void saveWebArchive(@NonNull String);
-    method public void saveWebArchive(@NonNull String, boolean, @Nullable android.webkit.ValueCallback<java.lang.String>);
-    method @Deprecated public void setCertificate(android.net.http.SslCertificate);
-    method public static void setDataDirectorySuffix(@NonNull String);
-    method public void setDownloadListener(@Nullable android.webkit.DownloadListener);
-    method public void setFindListener(@Nullable android.webkit.WebView.FindListener);
-    method @Deprecated public void setHorizontalScrollbarOverlay(boolean);
-    method @Deprecated public void setHttpAuthUsernamePassword(String, String, String, String);
-    method public void setInitialScale(int);
-    method @Deprecated public void setMapTrackballToArrowKeys(boolean);
-    method public void setNetworkAvailable(boolean);
-    method @Deprecated public void setPictureListener(android.webkit.WebView.PictureListener);
-    method public void setRendererPriorityPolicy(int, boolean);
-    method public static void setSafeBrowsingWhitelist(@NonNull java.util.List<java.lang.String>, @Nullable android.webkit.ValueCallback<java.lang.Boolean>);
-    method public void setTextClassifier(@Nullable android.view.textclassifier.TextClassifier);
-    method @Deprecated public void setVerticalScrollbarOverlay(boolean);
-    method public void setWebChromeClient(@Nullable android.webkit.WebChromeClient);
-    method public static void setWebContentsDebuggingEnabled(boolean);
-    method public void setWebViewClient(@NonNull android.webkit.WebViewClient);
-    method public void setWebViewRenderProcessClient(@NonNull java.util.concurrent.Executor, @NonNull android.webkit.WebViewRenderProcessClient);
-    method public void setWebViewRenderProcessClient(@Nullable android.webkit.WebViewRenderProcessClient);
-    method @Deprecated public boolean shouldDelayChildPressedState();
-    method @Deprecated public boolean showFindDialog(@Nullable String, boolean);
-    method public static void startSafeBrowsing(@NonNull android.content.Context, @Nullable android.webkit.ValueCallback<java.lang.Boolean>);
-    method public void stopLoading();
-    method public void zoomBy(float);
-    method public boolean zoomIn();
-    method public boolean zoomOut();
-    field public static final int RENDERER_PRIORITY_BOUND = 1; // 0x1
-    field public static final int RENDERER_PRIORITY_IMPORTANT = 2; // 0x2
-    field public static final int RENDERER_PRIORITY_WAIVED = 0; // 0x0
-    field public static final String SCHEME_GEO = "geo:0,0?q=";
-    field public static final String SCHEME_MAILTO = "mailto:";
-    field public static final String SCHEME_TEL = "tel:";
-  }
-
-  public static interface WebView.FindListener {
-    method public void onFindResultReceived(int, int, boolean);
-  }
-
-  public static class WebView.HitTestResult {
-    method @Nullable public String getExtra();
-    method public int getType();
-    field @Deprecated public static final int ANCHOR_TYPE = 1; // 0x1
-    field public static final int EDIT_TEXT_TYPE = 9; // 0x9
-    field public static final int EMAIL_TYPE = 4; // 0x4
-    field public static final int GEO_TYPE = 3; // 0x3
-    field @Deprecated public static final int IMAGE_ANCHOR_TYPE = 6; // 0x6
-    field public static final int IMAGE_TYPE = 5; // 0x5
-    field public static final int PHONE_TYPE = 2; // 0x2
-    field public static final int SRC_ANCHOR_TYPE = 7; // 0x7
-    field public static final int SRC_IMAGE_ANCHOR_TYPE = 8; // 0x8
-    field public static final int UNKNOWN_TYPE = 0; // 0x0
-  }
-
-  @Deprecated public static interface WebView.PictureListener {
-    method @Deprecated public void onNewPicture(android.webkit.WebView, @Nullable android.graphics.Picture);
-  }
-
-  public abstract static class WebView.VisualStateCallback {
-    ctor public WebView.VisualStateCallback();
-    method public abstract void onComplete(long);
-  }
-
-  public class WebView.WebViewTransport {
-    ctor public WebView.WebViewTransport();
-    method @Nullable public android.webkit.WebView getWebView();
-    method public void setWebView(@Nullable android.webkit.WebView);
-  }
-
-  public class WebViewClient {
-    ctor public WebViewClient();
-    method public void doUpdateVisitedHistory(android.webkit.WebView, String, boolean);
-    method public void onFormResubmission(android.webkit.WebView, android.os.Message, android.os.Message);
-    method public void onLoadResource(android.webkit.WebView, String);
-    method public void onPageCommitVisible(android.webkit.WebView, String);
-    method public void onPageFinished(android.webkit.WebView, String);
-    method public void onPageStarted(android.webkit.WebView, String, android.graphics.Bitmap);
-    method public void onReceivedClientCertRequest(android.webkit.WebView, android.webkit.ClientCertRequest);
-    method @Deprecated public void onReceivedError(android.webkit.WebView, int, String, String);
-    method public void onReceivedError(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceError);
-    method public void onReceivedHttpAuthRequest(android.webkit.WebView, android.webkit.HttpAuthHandler, String, String);
-    method public void onReceivedHttpError(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceResponse);
-    method public void onReceivedLoginRequest(android.webkit.WebView, String, @Nullable String, String);
-    method public void onReceivedSslError(android.webkit.WebView, android.webkit.SslErrorHandler, android.net.http.SslError);
-    method public boolean onRenderProcessGone(android.webkit.WebView, android.webkit.RenderProcessGoneDetail);
-    method public void onSafeBrowsingHit(android.webkit.WebView, android.webkit.WebResourceRequest, int, android.webkit.SafeBrowsingResponse);
-    method public void onScaleChanged(android.webkit.WebView, float, float);
-    method @Deprecated public void onTooManyRedirects(android.webkit.WebView, android.os.Message, android.os.Message);
-    method public void onUnhandledKeyEvent(android.webkit.WebView, android.view.KeyEvent);
-    method @Deprecated @Nullable public android.webkit.WebResourceResponse shouldInterceptRequest(android.webkit.WebView, String);
-    method @Nullable public android.webkit.WebResourceResponse shouldInterceptRequest(android.webkit.WebView, android.webkit.WebResourceRequest);
-    method public boolean shouldOverrideKeyEvent(android.webkit.WebView, android.view.KeyEvent);
-    method @Deprecated public boolean shouldOverrideUrlLoading(android.webkit.WebView, String);
-    method public boolean shouldOverrideUrlLoading(android.webkit.WebView, android.webkit.WebResourceRequest);
-    field public static final int ERROR_AUTHENTICATION = -4; // 0xfffffffc
-    field public static final int ERROR_BAD_URL = -12; // 0xfffffff4
-    field public static final int ERROR_CONNECT = -6; // 0xfffffffa
-    field public static final int ERROR_FAILED_SSL_HANDSHAKE = -11; // 0xfffffff5
-    field public static final int ERROR_FILE = -13; // 0xfffffff3
-    field public static final int ERROR_FILE_NOT_FOUND = -14; // 0xfffffff2
-    field public static final int ERROR_HOST_LOOKUP = -2; // 0xfffffffe
-    field public static final int ERROR_IO = -7; // 0xfffffff9
-    field public static final int ERROR_PROXY_AUTHENTICATION = -5; // 0xfffffffb
-    field public static final int ERROR_REDIRECT_LOOP = -9; // 0xfffffff7
-    field public static final int ERROR_TIMEOUT = -8; // 0xfffffff8
-    field public static final int ERROR_TOO_MANY_REQUESTS = -15; // 0xfffffff1
-    field public static final int ERROR_UNKNOWN = -1; // 0xffffffff
-    field public static final int ERROR_UNSAFE_RESOURCE = -16; // 0xfffffff0
-    field public static final int ERROR_UNSUPPORTED_AUTH_SCHEME = -3; // 0xfffffffd
-    field public static final int ERROR_UNSUPPORTED_SCHEME = -10; // 0xfffffff6
-    field public static final int SAFE_BROWSING_THREAT_BILLING = 4; // 0x4
-    field public static final int SAFE_BROWSING_THREAT_MALWARE = 1; // 0x1
-    field public static final int SAFE_BROWSING_THREAT_PHISHING = 2; // 0x2
-    field public static final int SAFE_BROWSING_THREAT_UNKNOWN = 0; // 0x0
-    field public static final int SAFE_BROWSING_THREAT_UNWANTED_SOFTWARE = 3; // 0x3
-  }
-
-  public abstract class WebViewDatabase {
-    ctor @Deprecated public WebViewDatabase();
-    method @Deprecated public abstract void clearFormData();
-    method public abstract void clearHttpAuthUsernamePassword();
-    method @Deprecated public abstract void clearUsernamePassword();
-    method @Nullable public abstract String[] getHttpAuthUsernamePassword(String, String);
-    method public static android.webkit.WebViewDatabase getInstance(android.content.Context);
-    method @Deprecated public abstract boolean hasFormData();
-    method public abstract boolean hasHttpAuthUsernamePassword();
-    method @Deprecated public abstract boolean hasUsernamePassword();
-    method public abstract void setHttpAuthUsernamePassword(String, String, String, String);
-  }
-
-  @Deprecated public class WebViewFragment extends android.app.Fragment {
-    ctor @Deprecated public WebViewFragment();
-    method @Deprecated public android.webkit.WebView getWebView();
-  }
-
-  public abstract class WebViewRenderProcess {
-    ctor public WebViewRenderProcess();
-    method public abstract boolean terminate();
-  }
-
-  public abstract class WebViewRenderProcessClient {
-    ctor public WebViewRenderProcessClient();
-    method public abstract void onRenderProcessResponsive(@NonNull android.webkit.WebView, @Nullable android.webkit.WebViewRenderProcess);
-    method public abstract void onRenderProcessUnresponsive(@NonNull android.webkit.WebView, @Nullable android.webkit.WebViewRenderProcess);
-  }
-
-}
-
-package android.widget {
-
-  public abstract class AbsListView extends android.widget.AdapterView<android.widget.ListAdapter> implements android.widget.Filter.FilterListener android.text.TextWatcher android.view.ViewTreeObserver.OnGlobalLayoutListener android.view.ViewTreeObserver.OnTouchModeChangeListener {
-    ctor public AbsListView(android.content.Context);
-    ctor public AbsListView(android.content.Context, android.util.AttributeSet);
-    ctor public AbsListView(android.content.Context, android.util.AttributeSet, int);
-    ctor public AbsListView(android.content.Context, android.util.AttributeSet, int, int);
-    method public void afterTextChanged(android.text.Editable);
-    method public void beforeTextChanged(CharSequence, int, int, int);
-    method public boolean canScrollList(int);
-    method public void clearChoices();
-    method public void clearTextFilter();
-    method public void deferNotifyDataSetChanged();
-    method public void fling(int);
-    method public android.widget.AbsListView.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method @ColorInt public int getBottomEdgeEffectColor();
-    method @ColorInt public int getCacheColorHint();
-    method public int getCheckedItemCount();
-    method public long[] getCheckedItemIds();
-    method public int getCheckedItemPosition();
-    method public android.util.SparseBooleanArray getCheckedItemPositions();
-    method public int getChoiceMode();
-    method public int getListPaddingBottom();
-    method public int getListPaddingLeft();
-    method public int getListPaddingRight();
-    method public int getListPaddingTop();
-    method public android.view.View getSelectedView();
-    method public android.graphics.drawable.Drawable getSelector();
-    method public CharSequence getTextFilter();
-    method @ColorInt public int getTopEdgeEffectColor();
-    method public int getTranscriptMode();
-    method protected void handleDataChanged();
-    method public boolean hasTextFilter();
-    method public void invalidateViews();
-    method public boolean isDrawSelectorOnTop();
-    method public boolean isFastScrollAlwaysVisible();
-    method public boolean isFastScrollEnabled();
-    method protected boolean isInFilterMode();
-    method public boolean isItemChecked(int);
-    method public boolean isScrollingCacheEnabled();
-    method public boolean isSmoothScrollbarEnabled();
-    method public boolean isStackFromBottom();
-    method public boolean isTextFilterEnabled();
-    method protected void layoutChildren();
-    method public void onFilterComplete(int);
-    method public void onGlobalLayout();
-    method public void onInitializeAccessibilityNodeInfoForItem(android.view.View, int, android.view.accessibility.AccessibilityNodeInfo);
-    method public boolean onRemoteAdapterConnected();
-    method public void onRemoteAdapterDisconnected();
-    method public void onRestoreInstanceState(android.os.Parcelable);
-    method public android.os.Parcelable onSaveInstanceState();
-    method public void onTextChanged(CharSequence, int, int, int);
-    method public void onTouchModeChanged(boolean);
-    method public int pointToPosition(int, int);
-    method public long pointToRowId(int, int);
-    method public void reclaimViews(java.util.List<android.view.View>);
-    method public void scrollListBy(int);
-    method public void setAdapter(android.widget.ListAdapter);
-    method public void setBottomEdgeEffectColor(@ColorInt int);
-    method public void setCacheColorHint(@ColorInt int);
-    method public void setChoiceMode(int);
-    method public void setDrawSelectorOnTop(boolean);
-    method public void setEdgeEffectColor(@ColorInt int);
-    method public void setFastScrollAlwaysVisible(boolean);
-    method public void setFastScrollEnabled(boolean);
-    method public void setFastScrollStyle(int);
-    method public void setFilterText(String);
-    method public void setFriction(float);
-    method public void setItemChecked(int, boolean);
-    method public void setMultiChoiceModeListener(android.widget.AbsListView.MultiChoiceModeListener);
-    method public void setOnScrollListener(android.widget.AbsListView.OnScrollListener);
-    method public void setRecyclerListener(android.widget.AbsListView.RecyclerListener);
-    method public void setRemoteViewsAdapter(android.content.Intent);
-    method public void setScrollIndicators(android.view.View, android.view.View);
-    method public void setScrollingCacheEnabled(boolean);
-    method public void setSelectionFromTop(int, int);
-    method public void setSelector(@DrawableRes int);
-    method public void setSelector(android.graphics.drawable.Drawable);
-    method public void setSmoothScrollbarEnabled(boolean);
-    method public void setStackFromBottom(boolean);
-    method public void setTextFilterEnabled(boolean);
-    method public void setTopEdgeEffectColor(@ColorInt int);
-    method public void setTranscriptMode(int);
-    method public void setVelocityScale(float);
-    method public void smoothScrollBy(int, int);
-    method public void smoothScrollToPosition(int);
-    method public void smoothScrollToPosition(int, int);
-    method public void smoothScrollToPositionFromTop(int, int, int);
-    method public void smoothScrollToPositionFromTop(int, int);
-    method public boolean verifyDrawable(@NonNull android.graphics.drawable.Drawable);
-    field public static final int CHOICE_MODE_MULTIPLE = 2; // 0x2
-    field public static final int CHOICE_MODE_MULTIPLE_MODAL = 3; // 0x3
-    field public static final int CHOICE_MODE_NONE = 0; // 0x0
-    field public static final int CHOICE_MODE_SINGLE = 1; // 0x1
-    field public static final int TRANSCRIPT_MODE_ALWAYS_SCROLL = 2; // 0x2
-    field public static final int TRANSCRIPT_MODE_DISABLED = 0; // 0x0
-    field public static final int TRANSCRIPT_MODE_NORMAL = 1; // 0x1
-  }
-
-  public static class AbsListView.LayoutParams extends android.view.ViewGroup.LayoutParams {
-    ctor public AbsListView.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public AbsListView.LayoutParams(int, int);
-    ctor public AbsListView.LayoutParams(int, int, int);
-    ctor public AbsListView.LayoutParams(android.view.ViewGroup.LayoutParams);
-  }
-
-  public static interface AbsListView.MultiChoiceModeListener extends android.view.ActionMode.Callback {
-    method public void onItemCheckedStateChanged(android.view.ActionMode, int, long, boolean);
-  }
-
-  public static interface AbsListView.OnScrollListener {
-    method public void onScroll(android.widget.AbsListView, int, int, int);
-    method public void onScrollStateChanged(android.widget.AbsListView, int);
-    field public static final int SCROLL_STATE_FLING = 2; // 0x2
-    field public static final int SCROLL_STATE_IDLE = 0; // 0x0
-    field public static final int SCROLL_STATE_TOUCH_SCROLL = 1; // 0x1
-  }
-
-  public static interface AbsListView.RecyclerListener {
-    method public void onMovedToScrapHeap(android.view.View);
-  }
-
-  public static interface AbsListView.SelectionBoundsAdjuster {
-    method public void adjustListItemSelectionBounds(android.graphics.Rect);
-  }
-
-  public abstract class AbsSeekBar extends android.widget.ProgressBar {
-    ctor public AbsSeekBar(android.content.Context);
-    ctor public AbsSeekBar(android.content.Context, android.util.AttributeSet);
-    ctor public AbsSeekBar(android.content.Context, android.util.AttributeSet, int);
-    ctor public AbsSeekBar(android.content.Context, android.util.AttributeSet, int, int);
-    method public int getKeyProgressIncrement();
-    method public boolean getSplitTrack();
-    method public android.graphics.drawable.Drawable getThumb();
-    method public int getThumbOffset();
-    method @Nullable public android.graphics.BlendMode getThumbTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getThumbTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getThumbTintMode();
-    method public android.graphics.drawable.Drawable getTickMark();
-    method @Nullable public android.graphics.BlendMode getTickMarkTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getTickMarkTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getTickMarkTintMode();
-    method public void setKeyProgressIncrement(int);
-    method public void setSplitTrack(boolean);
-    method public void setThumb(android.graphics.drawable.Drawable);
-    method public void setThumbOffset(int);
-    method public void setThumbTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setThumbTintList(@Nullable android.content.res.ColorStateList);
-    method public void setThumbTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public void setTickMark(android.graphics.drawable.Drawable);
-    method public void setTickMarkTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setTickMarkTintList(@Nullable android.content.res.ColorStateList);
-    method public void setTickMarkTintMode(@Nullable android.graphics.PorterDuff.Mode);
-  }
-
-  public abstract class AbsSpinner extends android.widget.AdapterView<android.widget.SpinnerAdapter> {
-    ctor public AbsSpinner(android.content.Context);
-    ctor public AbsSpinner(android.content.Context, android.util.AttributeSet);
-    ctor public AbsSpinner(android.content.Context, android.util.AttributeSet, int);
-    ctor public AbsSpinner(android.content.Context, android.util.AttributeSet, int, int);
-    method public android.widget.SpinnerAdapter getAdapter();
-    method public android.view.View getSelectedView();
-    method public void onRestoreInstanceState(android.os.Parcelable);
-    method public android.os.Parcelable onSaveInstanceState();
-    method public int pointToPosition(int, int);
-    method public void setAdapter(android.widget.SpinnerAdapter);
-    method public void setSelection(int, boolean);
-    method public void setSelection(int);
-  }
-
-  @Deprecated @android.widget.RemoteViews.RemoteView public class AbsoluteLayout extends android.view.ViewGroup {
-    ctor @Deprecated public AbsoluteLayout(android.content.Context);
-    ctor @Deprecated public AbsoluteLayout(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public AbsoluteLayout(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public AbsoluteLayout(android.content.Context, android.util.AttributeSet, int, int);
-  }
-
-  @Deprecated public static class AbsoluteLayout.LayoutParams extends android.view.ViewGroup.LayoutParams {
-    ctor @Deprecated public AbsoluteLayout.LayoutParams(int, int, int, int);
-    ctor @Deprecated public AbsoluteLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public AbsoluteLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
-    method @Deprecated public String debug(String);
-    field @Deprecated public int x;
-    field @Deprecated public int y;
-  }
-
-  public class ActionMenuView extends android.widget.LinearLayout {
-    ctor public ActionMenuView(android.content.Context);
-    ctor public ActionMenuView(android.content.Context, android.util.AttributeSet);
-    method public void dismissPopupMenus();
-    method protected android.widget.ActionMenuView.LayoutParams generateDefaultLayoutParams();
-    method public android.widget.ActionMenuView.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method protected android.widget.ActionMenuView.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams);
-    method public android.view.Menu getMenu();
-    method @Nullable public android.graphics.drawable.Drawable getOverflowIcon();
-    method public int getPopupTheme();
-    method public boolean hideOverflowMenu();
-    method public boolean isOverflowMenuShowing();
-    method public void onConfigurationChanged(android.content.res.Configuration);
-    method public void onDetachedFromWindow();
-    method public void setOnMenuItemClickListener(android.widget.ActionMenuView.OnMenuItemClickListener);
-    method public void setOverflowIcon(@Nullable android.graphics.drawable.Drawable);
-    method public void setPopupTheme(@StyleRes int);
-    method public boolean showOverflowMenu();
-  }
-
-  public static class ActionMenuView.LayoutParams extends android.widget.LinearLayout.LayoutParams {
-    ctor public ActionMenuView.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public ActionMenuView.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public ActionMenuView.LayoutParams(android.widget.ActionMenuView.LayoutParams);
-    ctor public ActionMenuView.LayoutParams(int, int);
-  }
-
-  public static interface ActionMenuView.OnMenuItemClickListener {
-    method public boolean onMenuItemClick(android.view.MenuItem);
-  }
-
-  public interface Adapter {
-    method @Nullable public default CharSequence[] getAutofillOptions();
-    method public int getCount();
-    method public Object getItem(int);
-    method public long getItemId(int);
-    method public int getItemViewType(int);
-    method public android.view.View getView(int, android.view.View, android.view.ViewGroup);
-    method public int getViewTypeCount();
-    method public boolean hasStableIds();
-    method public boolean isEmpty();
-    method public void registerDataSetObserver(android.database.DataSetObserver);
-    method public void unregisterDataSetObserver(android.database.DataSetObserver);
-    field public static final int IGNORE_ITEM_VIEW_TYPE = -1; // 0xffffffff
-    field public static final int NO_SELECTION = -2147483648; // 0x80000000
-  }
-
-  public abstract class AdapterView<T extends android.widget.Adapter> extends android.view.ViewGroup {
-    ctor public AdapterView(android.content.Context);
-    ctor public AdapterView(android.content.Context, android.util.AttributeSet);
-    ctor public AdapterView(android.content.Context, android.util.AttributeSet, int);
-    ctor public AdapterView(android.content.Context, android.util.AttributeSet, int, int);
-    method public abstract T getAdapter();
-    method public int getCount();
-    method public android.view.View getEmptyView();
-    method public int getFirstVisiblePosition();
-    method public Object getItemAtPosition(int);
-    method public long getItemIdAtPosition(int);
-    method public int getLastVisiblePosition();
-    method @Nullable public final android.widget.AdapterView.OnItemClickListener getOnItemClickListener();
-    method public final android.widget.AdapterView.OnItemLongClickListener getOnItemLongClickListener();
-    method @Nullable public final android.widget.AdapterView.OnItemSelectedListener getOnItemSelectedListener();
-    method public int getPositionForView(android.view.View);
-    method public Object getSelectedItem();
-    method public long getSelectedItemId();
-    method public int getSelectedItemPosition();
-    method public abstract android.view.View getSelectedView();
-    method public boolean performItemClick(android.view.View, int, long);
-    method public abstract void setAdapter(T);
-    method public void setEmptyView(android.view.View);
-    method public void setOnItemClickListener(@Nullable android.widget.AdapterView.OnItemClickListener);
-    method public void setOnItemLongClickListener(android.widget.AdapterView.OnItemLongClickListener);
-    method public void setOnItemSelectedListener(@Nullable android.widget.AdapterView.OnItemSelectedListener);
-    method public abstract void setSelection(int);
-    field public static final int INVALID_POSITION = -1; // 0xffffffff
-    field public static final long INVALID_ROW_ID = -9223372036854775808L; // 0x8000000000000000L
-    field public static final int ITEM_VIEW_TYPE_HEADER_OR_FOOTER = -2; // 0xfffffffe
-    field public static final int ITEM_VIEW_TYPE_IGNORE = -1; // 0xffffffff
-  }
-
-  public static class AdapterView.AdapterContextMenuInfo implements android.view.ContextMenu.ContextMenuInfo {
-    ctor public AdapterView.AdapterContextMenuInfo(android.view.View, int, long);
-    field public long id;
-    field public int position;
-    field public android.view.View targetView;
-  }
-
-  public static interface AdapterView.OnItemClickListener {
-    method public void onItemClick(android.widget.AdapterView<?>, android.view.View, int, long);
-  }
-
-  public static interface AdapterView.OnItemLongClickListener {
-    method public boolean onItemLongClick(android.widget.AdapterView<?>, android.view.View, int, long);
-  }
-
-  public static interface AdapterView.OnItemSelectedListener {
-    method public void onItemSelected(android.widget.AdapterView<?>, android.view.View, int, long);
-    method public void onNothingSelected(android.widget.AdapterView<?>);
-  }
-
-  public abstract class AdapterViewAnimator extends android.widget.AdapterView<android.widget.Adapter> implements android.widget.Advanceable {
-    ctor public AdapterViewAnimator(android.content.Context);
-    ctor public AdapterViewAnimator(android.content.Context, android.util.AttributeSet);
-    ctor public AdapterViewAnimator(android.content.Context, android.util.AttributeSet, int);
-    ctor public AdapterViewAnimator(android.content.Context, android.util.AttributeSet, int, int);
-    method public void advance();
-    method public void deferNotifyDataSetChanged();
-    method public void fyiWillBeAdvancedByHostKThx();
-    method public android.widget.Adapter getAdapter();
-    method public android.view.View getCurrentView();
-    method public int getDisplayedChild();
-    method public android.animation.ObjectAnimator getInAnimation();
-    method public android.animation.ObjectAnimator getOutAnimation();
-    method public android.view.View getSelectedView();
-    method public boolean onRemoteAdapterConnected();
-    method public void onRemoteAdapterDisconnected();
-    method public void onRestoreInstanceState(android.os.Parcelable);
-    method public android.os.Parcelable onSaveInstanceState();
-    method public void setAdapter(android.widget.Adapter);
-    method public void setAnimateFirstView(boolean);
-    method public void setDisplayedChild(int);
-    method public void setInAnimation(android.animation.ObjectAnimator);
-    method public void setInAnimation(android.content.Context, int);
-    method public void setOutAnimation(android.animation.ObjectAnimator);
-    method public void setOutAnimation(android.content.Context, int);
-    method public void setRemoteViewsAdapter(android.content.Intent);
-    method public void setSelection(int);
-    method public void showNext();
-    method public void showPrevious();
-  }
-
-  @android.widget.RemoteViews.RemoteView public class AdapterViewFlipper extends android.widget.AdapterViewAnimator {
-    ctor public AdapterViewFlipper(android.content.Context);
-    ctor public AdapterViewFlipper(android.content.Context, android.util.AttributeSet);
-    ctor public AdapterViewFlipper(android.content.Context, android.util.AttributeSet, int);
-    ctor public AdapterViewFlipper(android.content.Context, android.util.AttributeSet, int, int);
-    method public int getFlipInterval();
-    method public boolean isAutoStart();
-    method public boolean isFlipping();
-    method public void setAutoStart(boolean);
-    method public void setFlipInterval(int);
-    method public void startFlipping();
-    method public void stopFlipping();
-  }
-
-  public interface Advanceable {
-    method public void advance();
-    method public void fyiWillBeAdvancedByHostKThx();
-  }
-
-  public class AlphabetIndexer extends android.database.DataSetObserver implements android.widget.SectionIndexer {
-    ctor public AlphabetIndexer(android.database.Cursor, int, CharSequence);
-    method protected int compare(String, String);
-    method public int getPositionForSection(int);
-    method public int getSectionForPosition(int);
-    method public Object[] getSections();
-    method public void setCursor(android.database.Cursor);
-    field protected CharSequence mAlphabet;
-    field protected int mColumnIndex;
-    field protected android.database.Cursor mDataCursor;
-  }
-
-  @Deprecated @android.widget.RemoteViews.RemoteView public class AnalogClock extends android.view.View {
-    ctor @Deprecated public AnalogClock(android.content.Context);
-    ctor @Deprecated public AnalogClock(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public AnalogClock(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public AnalogClock(android.content.Context, android.util.AttributeSet, int, int);
-  }
-
-  public class ArrayAdapter<T> extends android.widget.BaseAdapter implements android.widget.Filterable android.widget.ThemedSpinnerAdapter {
-    ctor public ArrayAdapter(@NonNull android.content.Context, @LayoutRes int);
-    ctor public ArrayAdapter(@NonNull android.content.Context, @LayoutRes int, @IdRes int);
-    ctor public ArrayAdapter(@NonNull android.content.Context, @LayoutRes int, @NonNull T[]);
-    ctor public ArrayAdapter(@NonNull android.content.Context, @LayoutRes int, @IdRes int, @NonNull T[]);
-    ctor public ArrayAdapter(@NonNull android.content.Context, @LayoutRes int, @NonNull java.util.List<T>);
-    ctor public ArrayAdapter(@NonNull android.content.Context, @LayoutRes int, @IdRes int, @NonNull java.util.List<T>);
-    method public void add(@Nullable T);
-    method public void addAll(@NonNull java.util.Collection<? extends T>);
-    method public void addAll(T...);
-    method public void clear();
-    method @NonNull public static android.widget.ArrayAdapter<java.lang.CharSequence> createFromResource(@NonNull android.content.Context, @ArrayRes int, @LayoutRes int);
-    method @NonNull public android.content.Context getContext();
-    method public int getCount();
-    method @Nullable public android.content.res.Resources.Theme getDropDownViewTheme();
-    method @NonNull public android.widget.Filter getFilter();
-    method @Nullable public T getItem(int);
-    method public long getItemId(int);
-    method public int getPosition(@Nullable T);
-    method @NonNull public android.view.View getView(int, @Nullable android.view.View, @NonNull android.view.ViewGroup);
-    method public void insert(@Nullable T, int);
-    method public void remove(@Nullable T);
-    method public void setDropDownViewResource(@LayoutRes int);
-    method public void setDropDownViewTheme(@Nullable android.content.res.Resources.Theme);
-    method public void setNotifyOnChange(boolean);
-    method public void sort(@NonNull java.util.Comparator<? super T>);
-  }
-
-  public class AutoCompleteTextView extends android.widget.EditText implements android.widget.Filter.FilterListener {
-    ctor public AutoCompleteTextView(android.content.Context);
-    ctor public AutoCompleteTextView(android.content.Context, android.util.AttributeSet);
-    ctor public AutoCompleteTextView(android.content.Context, android.util.AttributeSet, int);
-    ctor public AutoCompleteTextView(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public AutoCompleteTextView(android.content.Context, android.util.AttributeSet, int, int, android.content.res.Resources.Theme);
-    method public void clearListSelection();
-    method protected CharSequence convertSelectionToString(Object);
-    method public void dismissDropDown();
-    method public boolean enoughToFilter();
-    method public android.widget.ListAdapter getAdapter();
-    method public CharSequence getCompletionHint();
-    method public int getDropDownAnchor();
-    method public android.graphics.drawable.Drawable getDropDownBackground();
-    method public int getDropDownHeight();
-    method public int getDropDownHorizontalOffset();
-    method public int getDropDownVerticalOffset();
-    method public int getDropDownWidth();
-    method protected android.widget.Filter getFilter();
-    method public int getInputMethodMode();
-    method @Deprecated public android.widget.AdapterView.OnItemClickListener getItemClickListener();
-    method @Deprecated public android.widget.AdapterView.OnItemSelectedListener getItemSelectedListener();
-    method public int getListSelection();
-    method public android.widget.AdapterView.OnItemClickListener getOnItemClickListener();
-    method public android.widget.AdapterView.OnItemSelectedListener getOnItemSelectedListener();
-    method public int getThreshold();
-    method public android.widget.AutoCompleteTextView.Validator getValidator();
-    method public boolean isPerformingCompletion();
-    method public boolean isPopupShowing();
-    method public void onFilterComplete(int);
-    method public void performCompletion();
-    method protected void performFiltering(CharSequence, int);
-    method public void performValidation();
-    method public final void refreshAutoCompleteResults();
-    method protected void replaceText(CharSequence);
-    method public <T extends android.widget.ListAdapter & android.widget.Filterable> void setAdapter(T);
-    method public void setCompletionHint(CharSequence);
-    method public void setDropDownAnchor(int);
-    method public void setDropDownBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setDropDownBackgroundResource(@DrawableRes int);
-    method public void setDropDownHeight(int);
-    method public void setDropDownHorizontalOffset(int);
-    method public void setDropDownVerticalOffset(int);
-    method public void setDropDownWidth(int);
-    method public void setInputMethodMode(int);
-    method public void setListSelection(int);
-    method public void setOnDismissListener(android.widget.AutoCompleteTextView.OnDismissListener);
-    method public void setOnItemClickListener(android.widget.AdapterView.OnItemClickListener);
-    method public void setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener);
-    method public void setText(CharSequence, boolean);
-    method public void setThreshold(int);
-    method public void setValidator(android.widget.AutoCompleteTextView.Validator);
-    method public void showDropDown();
-  }
-
-  public static interface AutoCompleteTextView.OnDismissListener {
-    method public void onDismiss();
-  }
-
-  public static interface AutoCompleteTextView.Validator {
-    method public CharSequence fixText(CharSequence);
-    method public boolean isValid(CharSequence);
-  }
-
-  public abstract class BaseAdapter implements android.widget.ListAdapter android.widget.SpinnerAdapter {
-    ctor public BaseAdapter();
-    method public boolean areAllItemsEnabled();
-    method public android.view.View getDropDownView(int, android.view.View, android.view.ViewGroup);
-    method public int getItemViewType(int);
-    method public int getViewTypeCount();
-    method public boolean hasStableIds();
-    method public boolean isEmpty();
-    method public boolean isEnabled(int);
-    method public void notifyDataSetChanged();
-    method public void notifyDataSetInvalidated();
-    method public void registerDataSetObserver(android.database.DataSetObserver);
-    method public void setAutofillOptions(@Nullable java.lang.CharSequence...);
-    method public void unregisterDataSetObserver(android.database.DataSetObserver);
-  }
-
-  public abstract class BaseExpandableListAdapter implements android.widget.ExpandableListAdapter android.widget.HeterogeneousExpandableList {
-    ctor public BaseExpandableListAdapter();
-    method public boolean areAllItemsEnabled();
-    method public int getChildType(int, int);
-    method public int getChildTypeCount();
-    method public long getCombinedChildId(long, long);
-    method public long getCombinedGroupId(long);
-    method public int getGroupType(int);
-    method public int getGroupTypeCount();
-    method public boolean isEmpty();
-    method public void notifyDataSetChanged();
-    method public void notifyDataSetInvalidated();
-    method public void onGroupCollapsed(int);
-    method public void onGroupExpanded(int);
-    method public void registerDataSetObserver(android.database.DataSetObserver);
-    method public void unregisterDataSetObserver(android.database.DataSetObserver);
-  }
-
-  @android.widget.RemoteViews.RemoteView public class Button extends android.widget.TextView {
-    ctor public Button(android.content.Context);
-    ctor public Button(android.content.Context, android.util.AttributeSet);
-    ctor public Button(android.content.Context, android.util.AttributeSet, int);
-    ctor public Button(android.content.Context, android.util.AttributeSet, int, int);
-  }
-
-  public class CalendarView extends android.widget.FrameLayout {
-    ctor public CalendarView(@NonNull android.content.Context);
-    ctor public CalendarView(@NonNull android.content.Context, @Nullable android.util.AttributeSet);
-    ctor public CalendarView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, @AttrRes int);
-    ctor public CalendarView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, @AttrRes int, @StyleRes int);
-    method public long getDate();
-    method @StyleRes public int getDateTextAppearance();
-    method public int getFirstDayOfWeek();
-    method @Deprecated @ColorInt public int getFocusedMonthDateColor();
-    method public long getMaxDate();
-    method public long getMinDate();
-    method @Deprecated public android.graphics.drawable.Drawable getSelectedDateVerticalBar();
-    method @Deprecated @ColorInt public int getSelectedWeekBackgroundColor();
-    method @Deprecated public boolean getShowWeekNumber();
-    method @Deprecated public int getShownWeekCount();
-    method @Deprecated @ColorInt public int getUnfocusedMonthDateColor();
-    method @StyleRes public int getWeekDayTextAppearance();
-    method @Deprecated @ColorInt public int getWeekNumberColor();
-    method @Deprecated @ColorInt public int getWeekSeparatorLineColor();
-    method public void setDate(long);
-    method public void setDate(long, boolean, boolean);
-    method public void setDateTextAppearance(@StyleRes int);
-    method public void setFirstDayOfWeek(int);
-    method @Deprecated public void setFocusedMonthDateColor(@ColorInt int);
-    method public void setMaxDate(long);
-    method public void setMinDate(long);
-    method public void setOnDateChangeListener(android.widget.CalendarView.OnDateChangeListener);
-    method @Deprecated public void setSelectedDateVerticalBar(@DrawableRes int);
-    method @Deprecated public void setSelectedDateVerticalBar(android.graphics.drawable.Drawable);
-    method @Deprecated public void setSelectedWeekBackgroundColor(@ColorInt int);
-    method @Deprecated public void setShowWeekNumber(boolean);
-    method @Deprecated public void setShownWeekCount(int);
-    method @Deprecated public void setUnfocusedMonthDateColor(@ColorInt int);
-    method public void setWeekDayTextAppearance(@StyleRes int);
-    method @Deprecated public void setWeekNumberColor(@ColorInt int);
-    method @Deprecated public void setWeekSeparatorLineColor(@ColorInt int);
-  }
-
-  public static interface CalendarView.OnDateChangeListener {
-    method public void onSelectedDayChange(@NonNull android.widget.CalendarView, int, int, int);
-  }
-
-  public class CheckBox extends android.widget.CompoundButton {
-    ctor public CheckBox(android.content.Context);
-    ctor public CheckBox(android.content.Context, android.util.AttributeSet);
-    ctor public CheckBox(android.content.Context, android.util.AttributeSet, int);
-    ctor public CheckBox(android.content.Context, android.util.AttributeSet, int, int);
-  }
-
-  public interface Checkable {
-    method public boolean isChecked();
-    method public void setChecked(boolean);
-    method public void toggle();
-  }
-
-  public class CheckedTextView extends android.widget.TextView implements android.widget.Checkable {
-    ctor public CheckedTextView(android.content.Context);
-    ctor public CheckedTextView(android.content.Context, android.util.AttributeSet);
-    ctor public CheckedTextView(android.content.Context, android.util.AttributeSet, int);
-    ctor public CheckedTextView(android.content.Context, android.util.AttributeSet, int, int);
-    method public android.graphics.drawable.Drawable getCheckMarkDrawable();
-    method @Nullable public android.graphics.BlendMode getCheckMarkTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getCheckMarkTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getCheckMarkTintMode();
-    method public boolean isChecked();
-    method public void setCheckMarkDrawable(@DrawableRes int);
-    method public void setCheckMarkDrawable(@Nullable android.graphics.drawable.Drawable);
-    method public void setCheckMarkTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setCheckMarkTintList(@Nullable android.content.res.ColorStateList);
-    method public void setCheckMarkTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public void setChecked(boolean);
-    method public void toggle();
-  }
-
-  @android.widget.RemoteViews.RemoteView public class Chronometer extends android.widget.TextView {
-    ctor public Chronometer(android.content.Context);
-    ctor public Chronometer(android.content.Context, android.util.AttributeSet);
-    ctor public Chronometer(android.content.Context, android.util.AttributeSet, int);
-    ctor public Chronometer(android.content.Context, android.util.AttributeSet, int, int);
-    method public long getBase();
-    method public String getFormat();
-    method public android.widget.Chronometer.OnChronometerTickListener getOnChronometerTickListener();
-    method public boolean isCountDown();
-    method public boolean isTheFinalCountDown();
-    method public void setBase(long);
-    method public void setCountDown(boolean);
-    method public void setFormat(String);
-    method public void setOnChronometerTickListener(android.widget.Chronometer.OnChronometerTickListener);
-    method public void start();
-    method public void stop();
-  }
-
-  public static interface Chronometer.OnChronometerTickListener {
-    method public void onChronometerTick(android.widget.Chronometer);
-  }
-
-  public abstract class CompoundButton extends android.widget.Button implements android.widget.Checkable {
-    ctor public CompoundButton(android.content.Context);
-    ctor public CompoundButton(android.content.Context, android.util.AttributeSet);
-    ctor public CompoundButton(android.content.Context, android.util.AttributeSet, int);
-    ctor public CompoundButton(android.content.Context, android.util.AttributeSet, int, int);
-    method @Nullable public android.graphics.drawable.Drawable getButtonDrawable();
-    method @Nullable public android.graphics.BlendMode getButtonTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getButtonTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getButtonTintMode();
-    method public boolean isChecked();
-    method public void setButtonDrawable(@DrawableRes int);
-    method public void setButtonDrawable(@Nullable android.graphics.drawable.Drawable);
-    method public void setButtonTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setButtonTintList(@Nullable android.content.res.ColorStateList);
-    method public void setButtonTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public void setChecked(boolean);
-    method public void setOnCheckedChangeListener(@Nullable android.widget.CompoundButton.OnCheckedChangeListener);
-    method public void toggle();
-  }
-
-  public static interface CompoundButton.OnCheckedChangeListener {
-    method public void onCheckedChanged(android.widget.CompoundButton, boolean);
-  }
-
-  public abstract class CursorAdapter extends android.widget.BaseAdapter implements android.widget.Filterable android.widget.ThemedSpinnerAdapter {
-    ctor @Deprecated public CursorAdapter(android.content.Context, android.database.Cursor);
-    ctor public CursorAdapter(android.content.Context, android.database.Cursor, boolean);
-    ctor public CursorAdapter(android.content.Context, android.database.Cursor, int);
-    method public abstract void bindView(android.view.View, android.content.Context, android.database.Cursor);
-    method public void changeCursor(android.database.Cursor);
-    method public CharSequence convertToString(android.database.Cursor);
-    method public int getCount();
-    method public android.database.Cursor getCursor();
-    method public android.content.res.Resources.Theme getDropDownViewTheme();
-    method public android.widget.Filter getFilter();
-    method public android.widget.FilterQueryProvider getFilterQueryProvider();
-    method public Object getItem(int);
-    method public long getItemId(int);
-    method public android.view.View getView(int, android.view.View, android.view.ViewGroup);
-    method @Deprecated protected void init(android.content.Context, android.database.Cursor, boolean);
-    method public android.view.View newDropDownView(android.content.Context, android.database.Cursor, android.view.ViewGroup);
-    method public abstract android.view.View newView(android.content.Context, android.database.Cursor, android.view.ViewGroup);
-    method protected void onContentChanged();
-    method @WorkerThread public android.database.Cursor runQueryOnBackgroundThread(CharSequence);
-    method public void setDropDownViewTheme(android.content.res.Resources.Theme);
-    method public void setFilterQueryProvider(android.widget.FilterQueryProvider);
-    method public android.database.Cursor swapCursor(android.database.Cursor);
-    field @Deprecated public static final int FLAG_AUTO_REQUERY = 1; // 0x1
-    field public static final int FLAG_REGISTER_CONTENT_OBSERVER = 2; // 0x2
-  }
-
-  public abstract class CursorTreeAdapter extends android.widget.BaseExpandableListAdapter implements android.widget.Filterable {
-    ctor public CursorTreeAdapter(android.database.Cursor, android.content.Context);
-    ctor public CursorTreeAdapter(android.database.Cursor, android.content.Context, boolean);
-    method protected abstract void bindChildView(android.view.View, android.content.Context, android.database.Cursor, boolean);
-    method protected abstract void bindGroupView(android.view.View, android.content.Context, android.database.Cursor, boolean);
-    method public void changeCursor(android.database.Cursor);
-    method public String convertToString(android.database.Cursor);
-    method public android.database.Cursor getChild(int, int);
-    method public long getChildId(int, int);
-    method public android.view.View getChildView(int, int, boolean, android.view.View, android.view.ViewGroup);
-    method public int getChildrenCount(int);
-    method protected abstract android.database.Cursor getChildrenCursor(android.database.Cursor);
-    method public android.database.Cursor getCursor();
-    method public android.widget.Filter getFilter();
-    method public android.widget.FilterQueryProvider getFilterQueryProvider();
-    method public android.database.Cursor getGroup(int);
-    method public int getGroupCount();
-    method public long getGroupId(int);
-    method public android.view.View getGroupView(int, boolean, android.view.View, android.view.ViewGroup);
-    method public boolean hasStableIds();
-    method public boolean isChildSelectable(int, int);
-    method protected abstract android.view.View newChildView(android.content.Context, android.database.Cursor, boolean, android.view.ViewGroup);
-    method protected abstract android.view.View newGroupView(android.content.Context, android.database.Cursor, boolean, android.view.ViewGroup);
-    method public void notifyDataSetChanged(boolean);
-    method public android.database.Cursor runQueryOnBackgroundThread(CharSequence);
-    method public void setChildrenCursor(int, android.database.Cursor);
-    method public void setFilterQueryProvider(android.widget.FilterQueryProvider);
-    method public void setGroupCursor(android.database.Cursor);
-  }
-
-  public class DatePicker extends android.widget.FrameLayout {
-    ctor public DatePicker(android.content.Context);
-    ctor public DatePicker(android.content.Context, android.util.AttributeSet);
-    ctor public DatePicker(android.content.Context, android.util.AttributeSet, int);
-    ctor public DatePicker(android.content.Context, android.util.AttributeSet, int, int);
-    method @Deprecated public android.widget.CalendarView getCalendarView();
-    method @Deprecated public boolean getCalendarViewShown();
-    method public int getDayOfMonth();
-    method public int getFirstDayOfWeek();
-    method public long getMaxDate();
-    method public long getMinDate();
-    method public int getMonth();
-    method @Deprecated public boolean getSpinnersShown();
-    method public int getYear();
-    method public void init(int, int, int, android.widget.DatePicker.OnDateChangedListener);
-    method @Deprecated public void setCalendarViewShown(boolean);
-    method public void setFirstDayOfWeek(int);
-    method public void setMaxDate(long);
-    method public void setMinDate(long);
-    method public void setOnDateChangedListener(android.widget.DatePicker.OnDateChangedListener);
-    method @Deprecated public void setSpinnersShown(boolean);
-    method public void updateDate(int, int, int);
-  }
-
-  public static interface DatePicker.OnDateChangedListener {
-    method public void onDateChanged(android.widget.DatePicker, int, int, int);
-  }
-
-  @Deprecated public class DialerFilter extends android.widget.RelativeLayout {
-    ctor @Deprecated public DialerFilter(android.content.Context);
-    ctor @Deprecated public DialerFilter(android.content.Context, android.util.AttributeSet);
-    method @Deprecated public void append(String);
-    method @Deprecated public void clearText();
-    method @Deprecated public CharSequence getDigits();
-    method @Deprecated public CharSequence getFilterText();
-    method @Deprecated public CharSequence getLetters();
-    method @Deprecated public int getMode();
-    method @Deprecated public boolean isQwertyKeyboard();
-    method @Deprecated protected void onModeChange(int, int);
-    method @Deprecated public void removeFilterWatcher(android.text.TextWatcher);
-    method @Deprecated public void setDigitsWatcher(android.text.TextWatcher);
-    method @Deprecated public void setFilterWatcher(android.text.TextWatcher);
-    method @Deprecated public void setLettersWatcher(android.text.TextWatcher);
-    method @Deprecated public void setMode(int);
-    field @Deprecated public static final int DIGITS_AND_LETTERS = 1; // 0x1
-    field @Deprecated public static final int DIGITS_AND_LETTERS_NO_DIGITS = 2; // 0x2
-    field @Deprecated public static final int DIGITS_AND_LETTERS_NO_LETTERS = 3; // 0x3
-    field @Deprecated public static final int DIGITS_ONLY = 4; // 0x4
-    field @Deprecated public static final int LETTERS_ONLY = 5; // 0x5
-  }
-
-  @Deprecated public class DigitalClock extends android.widget.TextView {
-    ctor @Deprecated public DigitalClock(android.content.Context);
-    ctor @Deprecated public DigitalClock(android.content.Context, android.util.AttributeSet);
-  }
-
-  public class EdgeEffect {
-    ctor public EdgeEffect(android.content.Context);
-    method public boolean draw(android.graphics.Canvas);
-    method public void finish();
-    method @Nullable public android.graphics.BlendMode getBlendMode();
-    method @ColorInt public int getColor();
-    method public int getMaxHeight();
-    method public boolean isFinished();
-    method public void onAbsorb(int);
-    method public void onPull(float);
-    method public void onPull(float, float);
-    method public void onRelease();
-    method public void setBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setColor(@ColorInt int);
-    method public void setSize(int, int);
-    field public static final android.graphics.BlendMode DEFAULT_BLEND_MODE;
-  }
-
-  public class EditText extends android.widget.TextView {
-    ctor public EditText(android.content.Context);
-    ctor public EditText(android.content.Context, android.util.AttributeSet);
-    ctor public EditText(android.content.Context, android.util.AttributeSet, int);
-    ctor public EditText(android.content.Context, android.util.AttributeSet, int, int);
-    method public void extendSelection(int);
-    method public android.text.Editable getText();
-    method public void selectAll();
-    method public void setSelection(int, int);
-    method public void setSelection(int);
-  }
-
-  public interface ExpandableListAdapter {
-    method public boolean areAllItemsEnabled();
-    method public Object getChild(int, int);
-    method public long getChildId(int, int);
-    method public android.view.View getChildView(int, int, boolean, android.view.View, android.view.ViewGroup);
-    method public int getChildrenCount(int);
-    method public long getCombinedChildId(long, long);
-    method public long getCombinedGroupId(long);
-    method public Object getGroup(int);
-    method public int getGroupCount();
-    method public long getGroupId(int);
-    method public android.view.View getGroupView(int, boolean, android.view.View, android.view.ViewGroup);
-    method public boolean hasStableIds();
-    method public boolean isChildSelectable(int, int);
-    method public boolean isEmpty();
-    method public void onGroupCollapsed(int);
-    method public void onGroupExpanded(int);
-    method public void registerDataSetObserver(android.database.DataSetObserver);
-    method public void unregisterDataSetObserver(android.database.DataSetObserver);
-  }
-
-  public class ExpandableListView extends android.widget.ListView {
-    ctor public ExpandableListView(android.content.Context);
-    ctor public ExpandableListView(android.content.Context, android.util.AttributeSet);
-    ctor public ExpandableListView(android.content.Context, android.util.AttributeSet, int);
-    ctor public ExpandableListView(android.content.Context, android.util.AttributeSet, int, int);
-    method public boolean collapseGroup(int);
-    method public boolean expandGroup(int);
-    method public boolean expandGroup(int, boolean);
-    method public android.widget.ExpandableListAdapter getExpandableListAdapter();
-    method public long getExpandableListPosition(int);
-    method public int getFlatListPosition(long);
-    method public static int getPackedPositionChild(long);
-    method public static long getPackedPositionForChild(int, int);
-    method public static long getPackedPositionForGroup(int);
-    method public static int getPackedPositionGroup(long);
-    method public static int getPackedPositionType(long);
-    method public long getSelectedId();
-    method public long getSelectedPosition();
-    method public boolean isGroupExpanded(int);
-    method public void setAdapter(android.widget.ExpandableListAdapter);
-    method public void setChildDivider(android.graphics.drawable.Drawable);
-    method public void setChildIndicator(android.graphics.drawable.Drawable);
-    method public void setChildIndicatorBounds(int, int);
-    method public void setChildIndicatorBoundsRelative(int, int);
-    method public void setGroupIndicator(android.graphics.drawable.Drawable);
-    method public void setIndicatorBounds(int, int);
-    method public void setIndicatorBoundsRelative(int, int);
-    method public void setOnChildClickListener(android.widget.ExpandableListView.OnChildClickListener);
-    method public void setOnGroupClickListener(android.widget.ExpandableListView.OnGroupClickListener);
-    method public void setOnGroupCollapseListener(android.widget.ExpandableListView.OnGroupCollapseListener);
-    method public void setOnGroupExpandListener(android.widget.ExpandableListView.OnGroupExpandListener);
-    method public boolean setSelectedChild(int, int, boolean);
-    method public void setSelectedGroup(int);
-    field public static final int CHILD_INDICATOR_INHERIT = -1; // 0xffffffff
-    field public static final int PACKED_POSITION_TYPE_CHILD = 1; // 0x1
-    field public static final int PACKED_POSITION_TYPE_GROUP = 0; // 0x0
-    field public static final int PACKED_POSITION_TYPE_NULL = 2; // 0x2
-    field public static final long PACKED_POSITION_VALUE_NULL = 4294967295L; // 0xffffffffL
-  }
-
-  public static class ExpandableListView.ExpandableListContextMenuInfo implements android.view.ContextMenu.ContextMenuInfo {
-    ctor public ExpandableListView.ExpandableListContextMenuInfo(android.view.View, long, long);
-    field public long id;
-    field public long packedPosition;
-    field public android.view.View targetView;
-  }
-
-  public static interface ExpandableListView.OnChildClickListener {
-    method public boolean onChildClick(android.widget.ExpandableListView, android.view.View, int, int, long);
-  }
-
-  public static interface ExpandableListView.OnGroupClickListener {
-    method public boolean onGroupClick(android.widget.ExpandableListView, android.view.View, int, long);
-  }
-
-  public static interface ExpandableListView.OnGroupCollapseListener {
-    method public void onGroupCollapse(int);
-  }
-
-  public static interface ExpandableListView.OnGroupExpandListener {
-    method public void onGroupExpand(int);
-  }
-
-  public abstract class Filter {
-    ctor public Filter();
-    method public CharSequence convertResultToString(Object);
-    method public final void filter(CharSequence);
-    method public final void filter(CharSequence, android.widget.Filter.FilterListener);
-    method protected abstract android.widget.Filter.FilterResults performFiltering(CharSequence);
-    method protected abstract void publishResults(CharSequence, android.widget.Filter.FilterResults);
-  }
-
-  public static interface Filter.FilterListener {
-    method public void onFilterComplete(int);
-  }
-
-  protected static class Filter.FilterResults {
-    ctor public Filter.FilterResults();
-    field public int count;
-    field public Object values;
-  }
-
-  public interface FilterQueryProvider {
-    method public android.database.Cursor runQuery(CharSequence);
-  }
-
-  public interface Filterable {
-    method public android.widget.Filter getFilter();
-  }
-
-  @android.widget.RemoteViews.RemoteView public class FrameLayout extends android.view.ViewGroup {
-    ctor public FrameLayout(@NonNull android.content.Context);
-    ctor public FrameLayout(@NonNull android.content.Context, @Nullable android.util.AttributeSet);
-    ctor public FrameLayout(@NonNull android.content.Context, @Nullable android.util.AttributeSet, @AttrRes int);
-    ctor public FrameLayout(@NonNull android.content.Context, @Nullable android.util.AttributeSet, @AttrRes int, @StyleRes int);
-    method protected android.widget.FrameLayout.LayoutParams generateDefaultLayoutParams();
-    method public android.widget.FrameLayout.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method @Deprecated public boolean getConsiderGoneChildrenWhenMeasuring();
-    method public boolean getMeasureAllChildren();
-    method public void setMeasureAllChildren(boolean);
-  }
-
-  public static class FrameLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public FrameLayout.LayoutParams(@NonNull android.content.Context, @Nullable android.util.AttributeSet);
-    ctor public FrameLayout.LayoutParams(int, int);
-    ctor public FrameLayout.LayoutParams(int, int, int);
-    ctor public FrameLayout.LayoutParams(@NonNull android.view.ViewGroup.LayoutParams);
-    ctor public FrameLayout.LayoutParams(@NonNull android.view.ViewGroup.MarginLayoutParams);
-    ctor public FrameLayout.LayoutParams(@NonNull android.widget.FrameLayout.LayoutParams);
-    field public static final int UNSPECIFIED_GRAVITY = -1; // 0xffffffff
-    field public int gravity;
-  }
-
-  @Deprecated public class Gallery extends android.widget.AbsSpinner implements android.view.GestureDetector.OnGestureListener {
-    ctor @Deprecated public Gallery(android.content.Context);
-    ctor @Deprecated public Gallery(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public Gallery(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public Gallery(android.content.Context, android.util.AttributeSet, int, int);
-    method @Deprecated public boolean onDown(android.view.MotionEvent);
-    method @Deprecated public boolean onFling(android.view.MotionEvent, android.view.MotionEvent, float, float);
-    method @Deprecated public void onLongPress(@NonNull android.view.MotionEvent);
-    method @Deprecated public boolean onScroll(android.view.MotionEvent, android.view.MotionEvent, float, float);
-    method @Deprecated public void onShowPress(android.view.MotionEvent);
-    method @Deprecated public boolean onSingleTapUp(android.view.MotionEvent);
-    method @Deprecated public void setAnimationDuration(int);
-    method @Deprecated public void setCallbackDuringFling(boolean);
-    method @Deprecated public void setGravity(int);
-    method @Deprecated public void setSpacing(int);
-    method @Deprecated public void setUnselectedAlpha(float);
-  }
-
-  @Deprecated public static class Gallery.LayoutParams extends android.view.ViewGroup.LayoutParams {
-    ctor @Deprecated public Gallery.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public Gallery.LayoutParams(int, int);
-    ctor @Deprecated public Gallery.LayoutParams(android.view.ViewGroup.LayoutParams);
-  }
-
-  @android.widget.RemoteViews.RemoteView public class GridLayout extends android.view.ViewGroup {
-    ctor public GridLayout(android.content.Context);
-    ctor public GridLayout(android.content.Context, android.util.AttributeSet);
-    ctor public GridLayout(android.content.Context, android.util.AttributeSet, int);
-    ctor public GridLayout(android.content.Context, android.util.AttributeSet, int, int);
-    method protected android.widget.GridLayout.LayoutParams generateDefaultLayoutParams();
-    method public android.widget.GridLayout.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method protected android.widget.GridLayout.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams);
-    method public int getAlignmentMode();
-    method public int getColumnCount();
-    method public int getOrientation();
-    method public int getRowCount();
-    method public boolean getUseDefaultMargins();
-    method public boolean isColumnOrderPreserved();
-    method public boolean isRowOrderPreserved();
-    method public void setAlignmentMode(int);
-    method public void setColumnCount(int);
-    method public void setColumnOrderPreserved(boolean);
-    method public void setOrientation(int);
-    method public void setRowCount(int);
-    method public void setRowOrderPreserved(boolean);
-    method public void setUseDefaultMargins(boolean);
-    method public static android.widget.GridLayout.Spec spec(int, int, android.widget.GridLayout.Alignment, float);
-    method public static android.widget.GridLayout.Spec spec(int, android.widget.GridLayout.Alignment, float);
-    method public static android.widget.GridLayout.Spec spec(int, int, float);
-    method public static android.widget.GridLayout.Spec spec(int, float);
-    method public static android.widget.GridLayout.Spec spec(int, int, android.widget.GridLayout.Alignment);
-    method public static android.widget.GridLayout.Spec spec(int, android.widget.GridLayout.Alignment);
-    method public static android.widget.GridLayout.Spec spec(int, int);
-    method public static android.widget.GridLayout.Spec spec(int);
-    field public static final int ALIGN_BOUNDS = 0; // 0x0
-    field public static final int ALIGN_MARGINS = 1; // 0x1
-    field public static final android.widget.GridLayout.Alignment BASELINE;
-    field public static final android.widget.GridLayout.Alignment BOTTOM;
-    field public static final android.widget.GridLayout.Alignment CENTER;
-    field public static final android.widget.GridLayout.Alignment END;
-    field public static final android.widget.GridLayout.Alignment FILL;
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final android.widget.GridLayout.Alignment LEFT;
-    field public static final android.widget.GridLayout.Alignment RIGHT;
-    field public static final android.widget.GridLayout.Alignment START;
-    field public static final android.widget.GridLayout.Alignment TOP;
-    field public static final int UNDEFINED = -2147483648; // 0x80000000
-    field public static final int VERTICAL = 1; // 0x1
-  }
-
-  public abstract static class GridLayout.Alignment {
-  }
-
-  public static class GridLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public GridLayout.LayoutParams(android.widget.GridLayout.Spec, android.widget.GridLayout.Spec);
-    ctor public GridLayout.LayoutParams();
-    ctor public GridLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public GridLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    ctor public GridLayout.LayoutParams(android.widget.GridLayout.LayoutParams);
-    ctor public GridLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
-    method public void setGravity(int);
-    field public android.widget.GridLayout.Spec columnSpec;
-    field public android.widget.GridLayout.Spec rowSpec;
-  }
-
-  public static class GridLayout.Spec {
-  }
-
-  @android.widget.RemoteViews.RemoteView public class GridView extends android.widget.AbsListView {
-    ctor public GridView(android.content.Context);
-    ctor public GridView(android.content.Context, android.util.AttributeSet);
-    ctor public GridView(android.content.Context, android.util.AttributeSet, int);
-    ctor public GridView(android.content.Context, android.util.AttributeSet, int, int);
-    method public android.widget.ListAdapter getAdapter();
-    method public int getColumnWidth();
-    method public int getGravity();
-    method public int getHorizontalSpacing();
-    method public int getNumColumns();
-    method public int getRequestedColumnWidth();
-    method public int getRequestedHorizontalSpacing();
-    method public int getStretchMode();
-    method public int getVerticalSpacing();
-    method public void setColumnWidth(int);
-    method public void setGravity(int);
-    method public void setHorizontalSpacing(int);
-    method public void setNumColumns(int);
-    method public void setSelection(int);
-    method public void setStretchMode(int);
-    method public void setVerticalSpacing(int);
-    method public void smoothScrollByOffset(int);
-    field public static final int AUTO_FIT = -1; // 0xffffffff
-    field public static final int NO_STRETCH = 0; // 0x0
-    field public static final int STRETCH_COLUMN_WIDTH = 2; // 0x2
-    field public static final int STRETCH_SPACING = 1; // 0x1
-    field public static final int STRETCH_SPACING_UNIFORM = 3; // 0x3
-  }
-
-  public class HeaderViewListAdapter implements android.widget.Filterable android.widget.WrapperListAdapter {
-    ctor public HeaderViewListAdapter(java.util.ArrayList<android.widget.ListView.FixedViewInfo>, java.util.ArrayList<android.widget.ListView.FixedViewInfo>, android.widget.ListAdapter);
-    method public boolean areAllItemsEnabled();
-    method public int getCount();
-    method public android.widget.Filter getFilter();
-    method public int getFootersCount();
-    method public int getHeadersCount();
-    method public Object getItem(int);
-    method public long getItemId(int);
-    method public int getItemViewType(int);
-    method public android.view.View getView(int, android.view.View, android.view.ViewGroup);
-    method public int getViewTypeCount();
-    method public android.widget.ListAdapter getWrappedAdapter();
-    method public boolean hasStableIds();
-    method public boolean isEmpty();
-    method public boolean isEnabled(int);
-    method public void registerDataSetObserver(android.database.DataSetObserver);
-    method public boolean removeFooter(android.view.View);
-    method public boolean removeHeader(android.view.View);
-    method public void unregisterDataSetObserver(android.database.DataSetObserver);
-  }
-
-  public interface HeterogeneousExpandableList {
-    method public int getChildType(int, int);
-    method public int getChildTypeCount();
-    method public int getGroupType(int);
-    method public int getGroupTypeCount();
-  }
-
-  public class HorizontalScrollView extends android.widget.FrameLayout {
-    ctor public HorizontalScrollView(android.content.Context);
-    ctor public HorizontalScrollView(android.content.Context, android.util.AttributeSet);
-    ctor public HorizontalScrollView(android.content.Context, android.util.AttributeSet, int);
-    ctor public HorizontalScrollView(android.content.Context, android.util.AttributeSet, int, int);
-    method public boolean arrowScroll(int);
-    method protected int computeScrollDeltaToGetChildRectOnScreen(android.graphics.Rect);
-    method public boolean executeKeyEvent(android.view.KeyEvent);
-    method public void fling(int);
-    method public boolean fullScroll(int);
-    method @ColorInt public int getLeftEdgeEffectColor();
-    method public int getMaxScrollAmount();
-    method @ColorInt public int getRightEdgeEffectColor();
-    method public boolean isFillViewport();
-    method public boolean isSmoothScrollingEnabled();
-    method public boolean pageScroll(int);
-    method public void setEdgeEffectColor(@ColorInt int);
-    method public void setFillViewport(boolean);
-    method public void setLeftEdgeEffectColor(@ColorInt int);
-    method public void setRightEdgeEffectColor(@ColorInt int);
-    method public void setSmoothScrollingEnabled(boolean);
-    method public final void smoothScrollBy(int, int);
-    method public final void smoothScrollTo(int, int);
-  }
-
-  @android.widget.RemoteViews.RemoteView public class ImageButton extends android.widget.ImageView {
-    ctor public ImageButton(android.content.Context);
-    ctor public ImageButton(android.content.Context, android.util.AttributeSet);
-    ctor public ImageButton(android.content.Context, android.util.AttributeSet, int);
-    ctor public ImageButton(android.content.Context, android.util.AttributeSet, int, int);
-  }
-
-  public class ImageSwitcher extends android.widget.ViewSwitcher {
-    ctor public ImageSwitcher(android.content.Context);
-    ctor public ImageSwitcher(android.content.Context, android.util.AttributeSet);
-    method public void setImageDrawable(android.graphics.drawable.Drawable);
-    method public void setImageResource(@DrawableRes int);
-    method public void setImageURI(android.net.Uri);
-  }
-
-  @android.widget.RemoteViews.RemoteView public class ImageView extends android.view.View {
-    ctor public ImageView(android.content.Context);
-    ctor public ImageView(android.content.Context, @Nullable android.util.AttributeSet);
-    ctor public ImageView(android.content.Context, @Nullable android.util.AttributeSet, int);
-    ctor public ImageView(android.content.Context, @Nullable android.util.AttributeSet, int, int);
-    method public void animateTransform(@Nullable android.graphics.Matrix);
-    method public final void clearColorFilter();
-    method public boolean getAdjustViewBounds();
-    method public boolean getBaselineAlignBottom();
-    method public android.graphics.ColorFilter getColorFilter();
-    method public boolean getCropToPadding();
-    method public android.graphics.drawable.Drawable getDrawable();
-    method public int getImageAlpha();
-    method public android.graphics.Matrix getImageMatrix();
-    method @Nullable public android.graphics.BlendMode getImageTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getImageTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getImageTintMode();
-    method public int getMaxHeight();
-    method public int getMaxWidth();
-    method public android.widget.ImageView.ScaleType getScaleType();
-    method public int[] onCreateDrawableState(int);
-    method public void setAdjustViewBounds(boolean);
-    method @Deprecated public void setAlpha(int);
-    method public void setBaseline(int);
-    method public void setBaselineAlignBottom(boolean);
-    method public final void setColorFilter(int, android.graphics.PorterDuff.Mode);
-    method public final void setColorFilter(int);
-    method public void setColorFilter(android.graphics.ColorFilter);
-    method public void setCropToPadding(boolean);
-    method protected boolean setFrame(int, int, int, int);
-    method public void setImageAlpha(int);
-    method public void setImageBitmap(android.graphics.Bitmap);
-    method public void setImageDrawable(@Nullable android.graphics.drawable.Drawable);
-    method public void setImageIcon(@Nullable android.graphics.drawable.Icon);
-    method public void setImageLevel(int);
-    method public void setImageMatrix(android.graphics.Matrix);
-    method public void setImageResource(@DrawableRes int);
-    method public void setImageState(int[], boolean);
-    method public void setImageTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setImageTintList(@Nullable android.content.res.ColorStateList);
-    method public void setImageTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public void setImageURI(@Nullable android.net.Uri);
-    method public void setMaxHeight(int);
-    method public void setMaxWidth(int);
-    method public void setScaleType(android.widget.ImageView.ScaleType);
-  }
-
-  public enum ImageView.ScaleType {
-    enum_constant public static final android.widget.ImageView.ScaleType CENTER;
-    enum_constant public static final android.widget.ImageView.ScaleType CENTER_CROP;
-    enum_constant public static final android.widget.ImageView.ScaleType CENTER_INSIDE;
-    enum_constant public static final android.widget.ImageView.ScaleType FIT_CENTER;
-    enum_constant public static final android.widget.ImageView.ScaleType FIT_END;
-    enum_constant public static final android.widget.ImageView.ScaleType FIT_START;
-    enum_constant public static final android.widget.ImageView.ScaleType FIT_XY;
-    enum_constant public static final android.widget.ImageView.ScaleType MATRIX;
-  }
-
-  @android.widget.RemoteViews.RemoteView public class LinearLayout extends android.view.ViewGroup {
-    ctor public LinearLayout(android.content.Context);
-    ctor public LinearLayout(android.content.Context, @Nullable android.util.AttributeSet);
-    ctor public LinearLayout(android.content.Context, @Nullable android.util.AttributeSet, int);
-    ctor public LinearLayout(android.content.Context, android.util.AttributeSet, int, int);
-    method protected android.widget.LinearLayout.LayoutParams generateDefaultLayoutParams();
-    method public android.widget.LinearLayout.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method protected android.widget.LinearLayout.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams);
-    method public int getBaselineAlignedChildIndex();
-    method public android.graphics.drawable.Drawable getDividerDrawable();
-    method public int getDividerPadding();
-    method public int getGravity();
-    method public int getOrientation();
-    method public int getShowDividers();
-    method public float getWeightSum();
-    method public boolean isBaselineAligned();
-    method public boolean isMeasureWithLargestChildEnabled();
-    method public void setBaselineAligned(boolean);
-    method public void setBaselineAlignedChildIndex(int);
-    method public void setDividerDrawable(android.graphics.drawable.Drawable);
-    method public void setDividerPadding(int);
-    method public void setGravity(int);
-    method public void setHorizontalGravity(int);
-    method public void setMeasureWithLargestChildEnabled(boolean);
-    method public void setOrientation(int);
-    method public void setShowDividers(int);
-    method public void setVerticalGravity(int);
-    method public void setWeightSum(float);
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int SHOW_DIVIDER_BEGINNING = 1; // 0x1
-    field public static final int SHOW_DIVIDER_END = 4; // 0x4
-    field public static final int SHOW_DIVIDER_MIDDLE = 2; // 0x2
-    field public static final int SHOW_DIVIDER_NONE = 0; // 0x0
-    field public static final int VERTICAL = 1; // 0x1
-  }
-
-  public static class LinearLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public LinearLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public LinearLayout.LayoutParams(int, int);
-    ctor public LinearLayout.LayoutParams(int, int, float);
-    ctor public LinearLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public LinearLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    ctor public LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams);
-    method public String debug(String);
-    field public int gravity;
-    field public float weight;
-  }
-
-  public interface ListAdapter extends android.widget.Adapter {
-    method public boolean areAllItemsEnabled();
-    method public boolean isEnabled(int);
-  }
-
-  public class ListPopupWindow {
-    ctor public ListPopupWindow(@NonNull android.content.Context);
-    ctor public ListPopupWindow(@NonNull android.content.Context, @Nullable android.util.AttributeSet);
-    ctor public ListPopupWindow(@NonNull android.content.Context, @Nullable android.util.AttributeSet, @AttrRes int);
-    ctor public ListPopupWindow(@NonNull android.content.Context, @Nullable android.util.AttributeSet, @AttrRes int, @StyleRes int);
-    method public void clearListSelection();
-    method public android.view.View.OnTouchListener createDragToOpenListener(android.view.View);
-    method public void dismiss();
-    method @Nullable public android.view.View getAnchorView();
-    method @StyleRes public int getAnimationStyle();
-    method @Nullable public android.graphics.drawable.Drawable getBackground();
-    method @Nullable public android.graphics.Rect getEpicenterBounds();
-    method public int getHeight();
-    method public int getHorizontalOffset();
-    method public int getInputMethodMode();
-    method @Nullable public android.widget.ListView getListView();
-    method public int getPromptPosition();
-    method @Nullable public Object getSelectedItem();
-    method public long getSelectedItemId();
-    method public int getSelectedItemPosition();
-    method @Nullable public android.view.View getSelectedView();
-    method public int getSoftInputMode();
-    method public int getVerticalOffset();
-    method public int getWidth();
-    method public boolean isInputMethodNotNeeded();
-    method public boolean isModal();
-    method public boolean isShowing();
-    method public boolean onKeyDown(int, @NonNull android.view.KeyEvent);
-    method public boolean onKeyPreIme(int, @NonNull android.view.KeyEvent);
-    method public boolean onKeyUp(int, @NonNull android.view.KeyEvent);
-    method public boolean performItemClick(int);
-    method public void postShow();
-    method public void setAdapter(@Nullable android.widget.ListAdapter);
-    method public void setAnchorView(@Nullable android.view.View);
-    method public void setAnimationStyle(@StyleRes int);
-    method public void setBackgroundDrawable(@Nullable android.graphics.drawable.Drawable);
-    method public void setContentWidth(int);
-    method public void setDropDownGravity(int);
-    method public void setEpicenterBounds(@Nullable android.graphics.Rect);
-    method public void setHeight(int);
-    method public void setHorizontalOffset(int);
-    method public void setInputMethodMode(int);
-    method public void setListSelector(android.graphics.drawable.Drawable);
-    method public void setModal(boolean);
-    method public void setOnDismissListener(@Nullable android.widget.PopupWindow.OnDismissListener);
-    method public void setOnItemClickListener(@Nullable android.widget.AdapterView.OnItemClickListener);
-    method public void setOnItemSelectedListener(@Nullable android.widget.AdapterView.OnItemSelectedListener);
-    method public void setPromptPosition(int);
-    method public void setPromptView(@Nullable android.view.View);
-    method public void setSelection(int);
-    method public void setSoftInputMode(int);
-    method public void setVerticalOffset(int);
-    method public void setWidth(int);
-    method public void setWindowLayoutType(int);
-    method public void show();
-    field public static final int INPUT_METHOD_FROM_FOCUSABLE = 0; // 0x0
-    field public static final int INPUT_METHOD_NEEDED = 1; // 0x1
-    field public static final int INPUT_METHOD_NOT_NEEDED = 2; // 0x2
-    field public static final int MATCH_PARENT = -1; // 0xffffffff
-    field public static final int POSITION_PROMPT_ABOVE = 0; // 0x0
-    field public static final int POSITION_PROMPT_BELOW = 1; // 0x1
-    field public static final int WRAP_CONTENT = -2; // 0xfffffffe
-  }
-
-  @android.widget.RemoteViews.RemoteView public class ListView extends android.widget.AbsListView {
-    ctor public ListView(android.content.Context);
-    ctor public ListView(android.content.Context, android.util.AttributeSet);
-    ctor public ListView(android.content.Context, android.util.AttributeSet, int);
-    ctor public ListView(android.content.Context, android.util.AttributeSet, int, int);
-    method public void addFooterView(android.view.View, Object, boolean);
-    method public void addFooterView(android.view.View);
-    method public void addHeaderView(android.view.View, Object, boolean);
-    method public void addHeaderView(android.view.View);
-    method public boolean areFooterDividersEnabled();
-    method public boolean areHeaderDividersEnabled();
-    method public android.widget.ListAdapter getAdapter();
-    method @Deprecated public long[] getCheckItemIds();
-    method @Nullable public android.graphics.drawable.Drawable getDivider();
-    method public int getDividerHeight();
-    method public int getFooterViewsCount();
-    method public int getHeaderViewsCount();
-    method public boolean getItemsCanFocus();
-    method public int getMaxScrollAmount();
-    method public android.graphics.drawable.Drawable getOverscrollFooter();
-    method public android.graphics.drawable.Drawable getOverscrollHeader();
-    method public boolean removeFooterView(android.view.View);
-    method public boolean removeHeaderView(android.view.View);
-    method public void setDivider(@Nullable android.graphics.drawable.Drawable);
-    method public void setDividerHeight(int);
-    method public void setFooterDividersEnabled(boolean);
-    method public void setHeaderDividersEnabled(boolean);
-    method public void setItemsCanFocus(boolean);
-    method public void setOverscrollFooter(android.graphics.drawable.Drawable);
-    method public void setOverscrollHeader(android.graphics.drawable.Drawable);
-    method public void setSelection(int);
-    method public void setSelectionAfterHeaderView();
-    method public void smoothScrollByOffset(int);
-  }
-
-  public class ListView.FixedViewInfo {
-    ctor public ListView.FixedViewInfo();
-    field public Object data;
-    field public boolean isSelectable;
-    field public android.view.View view;
-  }
-
-  @UiThread public final class Magnifier {
-    ctor @Deprecated public Magnifier(@NonNull android.view.View);
-    method public void dismiss();
-    method @Px public float getCornerRadius();
-    method @Px public int getDefaultHorizontalSourceToMagnifierOffset();
-    method @Px public int getDefaultVerticalSourceToMagnifierOffset();
-    method @Px public float getElevation();
-    method @Px public int getHeight();
-    method @Nullable public android.graphics.drawable.Drawable getOverlay();
-    method @Nullable public android.graphics.Point getPosition();
-    method @Px public int getSourceHeight();
-    method @Nullable public android.graphics.Point getSourcePosition();
-    method @Px public int getSourceWidth();
-    method @Px public int getWidth();
-    method public float getZoom();
-    method public boolean isClippingEnabled();
-    method public void setZoom(@FloatRange(from=0.0f) float);
-    method public void show(@FloatRange(from=0) float, @FloatRange(from=0) float);
-    method public void show(@FloatRange(from=0) float, @FloatRange(from=0) float, float, float);
-    method public void update();
-    field public static final int SOURCE_BOUND_MAX_IN_SURFACE = 0; // 0x0
-    field public static final int SOURCE_BOUND_MAX_VISIBLE = 1; // 0x1
-  }
-
-  public static final class Magnifier.Builder {
-    ctor public Magnifier.Builder(@NonNull android.view.View);
-    method @NonNull public android.widget.Magnifier build();
-    method @NonNull public android.widget.Magnifier.Builder setClippingEnabled(boolean);
-    method @NonNull public android.widget.Magnifier.Builder setCornerRadius(@FloatRange(from=0) @Px float);
-    method @NonNull public android.widget.Magnifier.Builder setDefaultSourceToMagnifierOffset(@Px int, @Px int);
-    method @NonNull public android.widget.Magnifier.Builder setElevation(@FloatRange(from=0) @Px float);
-    method @NonNull public android.widget.Magnifier.Builder setInitialZoom(@FloatRange(from=0.0f) float);
-    method @NonNull public android.widget.Magnifier.Builder setOverlay(@Nullable android.graphics.drawable.Drawable);
-    method @NonNull public android.widget.Magnifier.Builder setSize(@IntRange(from=0) @Px int, @IntRange(from=0) @Px int);
-    method @NonNull public android.widget.Magnifier.Builder setSourceBounds(int, int, int, int);
-  }
-
-  public class MediaController extends android.widget.FrameLayout {
-    ctor public MediaController(android.content.Context, android.util.AttributeSet);
-    ctor public MediaController(android.content.Context, boolean);
-    ctor public MediaController(android.content.Context);
-    method public void hide();
-    method public boolean isShowing();
-    method public void onFinishInflate();
-    method public void setAnchorView(android.view.View);
-    method public void setMediaPlayer(android.widget.MediaController.MediaPlayerControl);
-    method public void setPrevNextListeners(android.view.View.OnClickListener, android.view.View.OnClickListener);
-    method public void show();
-    method public void show(int);
-  }
-
-  public static interface MediaController.MediaPlayerControl {
-    method public boolean canPause();
-    method public boolean canSeekBackward();
-    method public boolean canSeekForward();
-    method public int getAudioSessionId();
-    method public int getBufferPercentage();
-    method public int getCurrentPosition();
-    method public int getDuration();
-    method public boolean isPlaying();
-    method public void pause();
-    method public void seekTo(int);
-    method public void start();
-  }
-
-  public class MultiAutoCompleteTextView extends android.widget.AutoCompleteTextView {
-    ctor public MultiAutoCompleteTextView(android.content.Context);
-    ctor public MultiAutoCompleteTextView(android.content.Context, android.util.AttributeSet);
-    ctor public MultiAutoCompleteTextView(android.content.Context, android.util.AttributeSet, int);
-    ctor public MultiAutoCompleteTextView(android.content.Context, android.util.AttributeSet, int, int);
-    method protected void performFiltering(CharSequence, int, int, int);
-    method public void setTokenizer(android.widget.MultiAutoCompleteTextView.Tokenizer);
-  }
-
-  public static class MultiAutoCompleteTextView.CommaTokenizer implements android.widget.MultiAutoCompleteTextView.Tokenizer {
-    ctor public MultiAutoCompleteTextView.CommaTokenizer();
-    method public int findTokenEnd(CharSequence, int);
-    method public int findTokenStart(CharSequence, int);
-    method public CharSequence terminateToken(CharSequence);
-  }
-
-  public static interface MultiAutoCompleteTextView.Tokenizer {
-    method public int findTokenEnd(CharSequence, int);
-    method public int findTokenStart(CharSequence, int);
-    method public CharSequence terminateToken(CharSequence);
-  }
-
-  public class NumberPicker extends android.widget.LinearLayout {
-    ctor public NumberPicker(android.content.Context);
-    ctor public NumberPicker(android.content.Context, android.util.AttributeSet);
-    ctor public NumberPicker(android.content.Context, android.util.AttributeSet, int);
-    ctor public NumberPicker(android.content.Context, android.util.AttributeSet, int, int);
-    method public String[] getDisplayedValues();
-    method public int getMaxValue();
-    method public int getMinValue();
-    method @Px public int getSelectionDividerHeight();
-    method @ColorInt public int getTextColor();
-    method @FloatRange(from=0.0, fromInclusive=false) public float getTextSize();
-    method public int getValue();
-    method public boolean getWrapSelectorWheel();
-    method public void setDisplayedValues(String[]);
-    method public void setFormatter(android.widget.NumberPicker.Formatter);
-    method public void setMaxValue(int);
-    method public void setMinValue(int);
-    method public void setOnLongPressUpdateInterval(long);
-    method public void setOnScrollListener(android.widget.NumberPicker.OnScrollListener);
-    method public void setOnValueChangedListener(android.widget.NumberPicker.OnValueChangeListener);
-    method public void setSelectionDividerHeight(@IntRange(from=0) @Px int);
-    method public void setTextColor(@ColorInt int);
-    method public void setTextSize(@FloatRange(from=0.0, fromInclusive=false) float);
-    method public void setValue(int);
-    method public void setWrapSelectorWheel(boolean);
-  }
-
-  public static interface NumberPicker.Formatter {
-    method public String format(int);
-  }
-
-  public static interface NumberPicker.OnScrollListener {
-    method public void onScrollStateChange(android.widget.NumberPicker, int);
-    field public static final int SCROLL_STATE_FLING = 2; // 0x2
-    field public static final int SCROLL_STATE_IDLE = 0; // 0x0
-    field public static final int SCROLL_STATE_TOUCH_SCROLL = 1; // 0x1
-  }
-
-  public static interface NumberPicker.OnValueChangeListener {
-    method public void onValueChange(android.widget.NumberPicker, int, int);
-  }
-
-  public class OverScroller {
-    ctor public OverScroller(android.content.Context);
-    ctor public OverScroller(android.content.Context, android.view.animation.Interpolator);
-    ctor @Deprecated public OverScroller(android.content.Context, android.view.animation.Interpolator, float, float);
-    ctor @Deprecated public OverScroller(android.content.Context, android.view.animation.Interpolator, float, float, boolean);
-    method public void abortAnimation();
-    method public boolean computeScrollOffset();
-    method public void fling(int, int, int, int, int, int, int, int);
-    method public void fling(int, int, int, int, int, int, int, int, int, int);
-    method public final void forceFinished(boolean);
-    method public float getCurrVelocity();
-    method public final int getCurrX();
-    method public final int getCurrY();
-    method public final int getFinalX();
-    method public final int getFinalY();
-    method public final int getStartX();
-    method public final int getStartY();
-    method public final boolean isFinished();
-    method public boolean isOverScrolled();
-    method public void notifyHorizontalEdgeReached(int, int, int);
-    method public void notifyVerticalEdgeReached(int, int, int);
-    method public final void setFriction(float);
-    method public boolean springBack(int, int, int, int, int, int);
-    method public void startScroll(int, int, int, int);
-    method public void startScroll(int, int, int, int, int);
-  }
-
-  public class PopupMenu {
-    ctor public PopupMenu(android.content.Context, android.view.View);
-    ctor public PopupMenu(android.content.Context, android.view.View, int);
-    ctor public PopupMenu(android.content.Context, android.view.View, int, int, int);
-    method public void dismiss();
-    method public android.view.View.OnTouchListener getDragToOpenListener();
-    method public int getGravity();
-    method public android.view.Menu getMenu();
-    method public android.view.MenuInflater getMenuInflater();
-    method public void inflate(@MenuRes int);
-    method public void setForceShowIcon(boolean);
-    method public void setGravity(int);
-    method public void setOnDismissListener(android.widget.PopupMenu.OnDismissListener);
-    method public void setOnMenuItemClickListener(android.widget.PopupMenu.OnMenuItemClickListener);
-    method public void show();
-  }
-
-  public static interface PopupMenu.OnDismissListener {
-    method public void onDismiss(android.widget.PopupMenu);
-  }
-
-  public static interface PopupMenu.OnMenuItemClickListener {
-    method public boolean onMenuItemClick(android.view.MenuItem);
-  }
-
-  public class PopupWindow {
-    ctor public PopupWindow(android.content.Context);
-    ctor public PopupWindow(android.content.Context, android.util.AttributeSet);
-    ctor public PopupWindow(android.content.Context, android.util.AttributeSet, int);
-    ctor public PopupWindow(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public PopupWindow();
-    ctor public PopupWindow(android.view.View);
-    ctor public PopupWindow(int, int);
-    ctor public PopupWindow(android.view.View, int, int);
-    ctor public PopupWindow(android.view.View, int, int, boolean);
-    method public void dismiss();
-    method public int getAnimationStyle();
-    method public android.graphics.drawable.Drawable getBackground();
-    method public android.view.View getContentView();
-    method public float getElevation();
-    method @Nullable public android.transition.Transition getEnterTransition();
-    method @Nullable public android.graphics.Rect getEpicenterBounds();
-    method @Nullable public android.transition.Transition getExitTransition();
-    method public int getHeight();
-    method public int getInputMethodMode();
-    method public int getMaxAvailableHeight(@NonNull android.view.View);
-    method public int getMaxAvailableHeight(@NonNull android.view.View, int);
-    method public int getMaxAvailableHeight(@NonNull android.view.View, int, boolean);
-    method public boolean getOverlapAnchor();
-    method public int getSoftInputMode();
-    method public int getWidth();
-    method public int getWindowLayoutType();
-    method public boolean isAboveAnchor();
-    method public boolean isAttachedInDecor();
-    method public boolean isClippedToScreen();
-    method public boolean isClippingEnabled();
-    method public boolean isFocusable();
-    method public boolean isLaidOutInScreen();
-    method public boolean isOutsideTouchable();
-    method public boolean isShowing();
-    method public boolean isSplitTouchEnabled();
-    method public boolean isTouchModal();
-    method public boolean isTouchable();
-    method public void setAnimationStyle(int);
-    method public void setAttachedInDecor(boolean);
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setClippingEnabled(boolean);
-    method public void setContentView(android.view.View);
-    method public void setElevation(float);
-    method public void setEnterTransition(@Nullable android.transition.Transition);
-    method public void setEpicenterBounds(@Nullable android.graphics.Rect);
-    method public void setExitTransition(@Nullable android.transition.Transition);
-    method public void setFocusable(boolean);
-    method public void setHeight(int);
-    method public void setIgnoreCheekPress();
-    method public void setInputMethodMode(int);
-    method public void setIsClippedToScreen(boolean);
-    method public void setIsLaidOutInScreen(boolean);
-    method public void setOnDismissListener(android.widget.PopupWindow.OnDismissListener);
-    method public void setOutsideTouchable(boolean);
-    method public void setOverlapAnchor(boolean);
-    method public void setSoftInputMode(int);
-    method public void setSplitTouchEnabled(boolean);
-    method public void setTouchInterceptor(android.view.View.OnTouchListener);
-    method public void setTouchModal(boolean);
-    method public void setTouchable(boolean);
-    method public void setWidth(int);
-    method @Deprecated public void setWindowLayoutMode(int, int);
-    method public void setWindowLayoutType(int);
-    method public void showAsDropDown(android.view.View);
-    method public void showAsDropDown(android.view.View, int, int);
-    method public void showAsDropDown(android.view.View, int, int, int);
-    method public void showAtLocation(android.view.View, int, int, int);
-    method public void update();
-    method public void update(int, int);
-    method public void update(int, int, int, int);
-    method public void update(int, int, int, int, boolean);
-    method public void update(android.view.View, int, int);
-    method public void update(android.view.View, int, int, int, int);
-    field public static final int INPUT_METHOD_FROM_FOCUSABLE = 0; // 0x0
-    field public static final int INPUT_METHOD_NEEDED = 1; // 0x1
-    field public static final int INPUT_METHOD_NOT_NEEDED = 2; // 0x2
-  }
-
-  public static interface PopupWindow.OnDismissListener {
-    method public void onDismiss();
-  }
-
-  @android.widget.RemoteViews.RemoteView public class ProgressBar extends android.view.View {
-    ctor public ProgressBar(android.content.Context);
-    ctor public ProgressBar(android.content.Context, android.util.AttributeSet);
-    ctor public ProgressBar(android.content.Context, android.util.AttributeSet, int);
-    ctor public ProgressBar(android.content.Context, android.util.AttributeSet, int, int);
-    method @Nullable public android.graphics.drawable.Drawable getCurrentDrawable();
-    method public android.graphics.drawable.Drawable getIndeterminateDrawable();
-    method @Nullable public android.graphics.BlendMode getIndeterminateTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getIndeterminateTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getIndeterminateTintMode();
-    method public android.view.animation.Interpolator getInterpolator();
-    method public int getMax();
-    method @Px public int getMaxHeight();
-    method @Px public int getMaxWidth();
-    method public int getMin();
-    method @Px public int getMinHeight();
-    method @Px public int getMinWidth();
-    method public int getProgress();
-    method @Nullable public android.graphics.BlendMode getProgressBackgroundTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getProgressBackgroundTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getProgressBackgroundTintMode();
-    method public android.graphics.drawable.Drawable getProgressDrawable();
-    method @Nullable public android.graphics.BlendMode getProgressTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getProgressTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getProgressTintMode();
-    method public int getSecondaryProgress();
-    method @Nullable public android.graphics.BlendMode getSecondaryProgressTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getSecondaryProgressTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getSecondaryProgressTintMode();
-    method public final void incrementProgressBy(int);
-    method public final void incrementSecondaryProgressBy(int);
-    method public boolean isAnimating();
-    method public boolean isIndeterminate();
-    method public void onRestoreInstanceState(android.os.Parcelable);
-    method public android.os.Parcelable onSaveInstanceState();
-    method public void setIndeterminate(boolean);
-    method public void setIndeterminateDrawable(android.graphics.drawable.Drawable);
-    method public void setIndeterminateDrawableTiled(android.graphics.drawable.Drawable);
-    method public void setIndeterminateTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setIndeterminateTintList(@Nullable android.content.res.ColorStateList);
-    method public void setIndeterminateTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public void setInterpolator(android.content.Context, @InterpolatorRes int);
-    method public void setInterpolator(android.view.animation.Interpolator);
-    method public void setMax(int);
-    method public void setMaxHeight(@Px int);
-    method public void setMaxWidth(@Px int);
-    method public void setMin(int);
-    method public void setMinHeight(@Px int);
-    method public void setMinWidth(@Px int);
-    method public void setProgress(int);
-    method public void setProgress(int, boolean);
-    method public void setProgressBackgroundTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setProgressBackgroundTintList(@Nullable android.content.res.ColorStateList);
-    method public void setProgressBackgroundTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public void setProgressDrawable(android.graphics.drawable.Drawable);
-    method public void setProgressDrawableTiled(android.graphics.drawable.Drawable);
-    method public void setProgressTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setProgressTintList(@Nullable android.content.res.ColorStateList);
-    method public void setProgressTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public void setSecondaryProgress(int);
-    method public void setSecondaryProgressTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setSecondaryProgressTintList(@Nullable android.content.res.ColorStateList);
-    method public void setSecondaryProgressTintMode(@Nullable android.graphics.PorterDuff.Mode);
-  }
-
-  public class QuickContactBadge extends android.widget.ImageView implements android.view.View.OnClickListener {
-    ctor public QuickContactBadge(android.content.Context);
-    ctor public QuickContactBadge(android.content.Context, android.util.AttributeSet);
-    ctor public QuickContactBadge(android.content.Context, android.util.AttributeSet, int);
-    ctor public QuickContactBadge(android.content.Context, android.util.AttributeSet, int, int);
-    method public void assignContactFromEmail(String, boolean);
-    method public void assignContactFromEmail(String, boolean, android.os.Bundle);
-    method public void assignContactFromPhone(String, boolean);
-    method public void assignContactFromPhone(String, boolean, android.os.Bundle);
-    method public void assignContactUri(android.net.Uri);
-    method public void onClick(android.view.View);
-    method public void setExcludeMimes(String[]);
-    method public void setImageToDefault();
-    method public void setMode(int);
-    method public void setOverlay(android.graphics.drawable.Drawable);
-    method public void setPrioritizedMimeType(String);
-    field protected String[] mExcludeMimes;
-  }
-
-  public class RadioButton extends android.widget.CompoundButton {
-    ctor public RadioButton(android.content.Context);
-    ctor public RadioButton(android.content.Context, android.util.AttributeSet);
-    ctor public RadioButton(android.content.Context, android.util.AttributeSet, int);
-    ctor public RadioButton(android.content.Context, android.util.AttributeSet, int, int);
-  }
-
-  public class RadioGroup extends android.widget.LinearLayout {
-    ctor public RadioGroup(android.content.Context);
-    ctor public RadioGroup(android.content.Context, android.util.AttributeSet);
-    method public void check(@IdRes int);
-    method public void clearCheck();
-    method public android.widget.RadioGroup.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method @IdRes public int getCheckedRadioButtonId();
-    method public void setOnCheckedChangeListener(android.widget.RadioGroup.OnCheckedChangeListener);
-  }
-
-  public static class RadioGroup.LayoutParams extends android.widget.LinearLayout.LayoutParams {
-    ctor public RadioGroup.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public RadioGroup.LayoutParams(int, int);
-    ctor public RadioGroup.LayoutParams(int, int, float);
-    ctor public RadioGroup.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public RadioGroup.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-  }
-
-  public static interface RadioGroup.OnCheckedChangeListener {
-    method public void onCheckedChanged(android.widget.RadioGroup, @IdRes int);
-  }
-
-  public class RatingBar extends android.widget.AbsSeekBar {
-    ctor public RatingBar(android.content.Context, android.util.AttributeSet, int);
-    ctor public RatingBar(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public RatingBar(android.content.Context, android.util.AttributeSet);
-    ctor public RatingBar(android.content.Context);
-    method public int getNumStars();
-    method public android.widget.RatingBar.OnRatingBarChangeListener getOnRatingBarChangeListener();
-    method public float getRating();
-    method public float getStepSize();
-    method public boolean isIndicator();
-    method public void setIsIndicator(boolean);
-    method public void setNumStars(int);
-    method public void setOnRatingBarChangeListener(android.widget.RatingBar.OnRatingBarChangeListener);
-    method public void setRating(float);
-    method public void setStepSize(float);
-  }
-
-  public static interface RatingBar.OnRatingBarChangeListener {
-    method public void onRatingChanged(android.widget.RatingBar, float, boolean);
-  }
-
-  @android.widget.RemoteViews.RemoteView public class RelativeLayout extends android.view.ViewGroup {
-    ctor public RelativeLayout(android.content.Context);
-    ctor public RelativeLayout(android.content.Context, android.util.AttributeSet);
-    ctor public RelativeLayout(android.content.Context, android.util.AttributeSet, int);
-    ctor public RelativeLayout(android.content.Context, android.util.AttributeSet, int, int);
-    method public android.widget.RelativeLayout.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method public int getGravity();
-    method public int getIgnoreGravity();
-    method public void setGravity(int);
-    method public void setHorizontalGravity(int);
-    method public void setIgnoreGravity(int);
-    method public void setVerticalGravity(int);
-    field public static final int ABOVE = 2; // 0x2
-    field public static final int ALIGN_BASELINE = 4; // 0x4
-    field public static final int ALIGN_BOTTOM = 8; // 0x8
-    field public static final int ALIGN_END = 19; // 0x13
-    field public static final int ALIGN_LEFT = 5; // 0x5
-    field public static final int ALIGN_PARENT_BOTTOM = 12; // 0xc
-    field public static final int ALIGN_PARENT_END = 21; // 0x15
-    field public static final int ALIGN_PARENT_LEFT = 9; // 0x9
-    field public static final int ALIGN_PARENT_RIGHT = 11; // 0xb
-    field public static final int ALIGN_PARENT_START = 20; // 0x14
-    field public static final int ALIGN_PARENT_TOP = 10; // 0xa
-    field public static final int ALIGN_RIGHT = 7; // 0x7
-    field public static final int ALIGN_START = 18; // 0x12
-    field public static final int ALIGN_TOP = 6; // 0x6
-    field public static final int BELOW = 3; // 0x3
-    field public static final int CENTER_HORIZONTAL = 14; // 0xe
-    field public static final int CENTER_IN_PARENT = 13; // 0xd
-    field public static final int CENTER_VERTICAL = 15; // 0xf
-    field public static final int END_OF = 17; // 0x11
-    field public static final int LEFT_OF = 0; // 0x0
-    field public static final int RIGHT_OF = 1; // 0x1
-    field public static final int START_OF = 16; // 0x10
-    field public static final int TRUE = -1; // 0xffffffff
-  }
-
-  public static class RelativeLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public RelativeLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public RelativeLayout.LayoutParams(int, int);
-    ctor public RelativeLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public RelativeLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    ctor public RelativeLayout.LayoutParams(android.widget.RelativeLayout.LayoutParams);
-    method public void addRule(int);
-    method public void addRule(int, int);
-    method public String debug(String);
-    method public int getRule(int);
-    method public int[] getRules();
-    method public void removeRule(int);
-    field public boolean alignWithParent;
-  }
-
-  public class RemoteViews implements android.view.LayoutInflater.Filter android.os.Parcelable {
-    ctor public RemoteViews(String, int);
-    ctor public RemoteViews(android.widget.RemoteViews, android.widget.RemoteViews);
-    ctor public RemoteViews(android.widget.RemoteViews);
-    ctor public RemoteViews(android.os.Parcel);
-    method public void addView(int, android.widget.RemoteViews);
-    method public android.view.View apply(android.content.Context, android.view.ViewGroup);
-    method @Deprecated public android.widget.RemoteViews clone();
-    method public int describeContents();
-    method public int getLayoutId();
-    method public String getPackage();
-    method @Deprecated public boolean onLoadClass(Class);
-    method public void reapply(android.content.Context, android.view.View);
-    method public void removeAllViews(int);
-    method public void setAccessibilityTraversalAfter(int, int);
-    method public void setAccessibilityTraversalBefore(int, int);
-    method public void setBitmap(int, String, android.graphics.Bitmap);
-    method public void setBoolean(int, String, boolean);
-    method public void setBundle(int, String, android.os.Bundle);
-    method public void setByte(int, String, byte);
-    method public void setChar(int, String, char);
-    method public void setCharSequence(int, String, CharSequence);
-    method public void setChronometer(int, long, String, boolean);
-    method public void setChronometerCountDown(int, boolean);
-    method public void setContentDescription(int, CharSequence);
-    method public void setDisplayedChild(int, int);
-    method public void setDouble(int, String, double);
-    method public void setEmptyView(int, int);
-    method public void setFloat(int, String, float);
-    method public void setIcon(int, String, android.graphics.drawable.Icon);
-    method public void setImageViewBitmap(int, android.graphics.Bitmap);
-    method public void setImageViewIcon(int, android.graphics.drawable.Icon);
-    method public void setImageViewResource(int, int);
-    method public void setImageViewUri(int, android.net.Uri);
-    method public void setInt(int, String, int);
-    method public void setIntent(int, String, android.content.Intent);
-    method public void setLabelFor(int, int);
-    method public void setLightBackgroundLayoutId(@LayoutRes int);
-    method public void setLong(int, String, long);
-    method public void setOnClickFillInIntent(int, android.content.Intent);
-    method public void setOnClickPendingIntent(int, android.app.PendingIntent);
-    method public void setOnClickResponse(int, @NonNull android.widget.RemoteViews.RemoteResponse);
-    method public void setPendingIntentTemplate(int, android.app.PendingIntent);
-    method public void setProgressBar(int, int, int, boolean);
-    method public void setRelativeScrollPosition(int, int);
-    method @Deprecated public void setRemoteAdapter(int, int, android.content.Intent);
-    method public void setRemoteAdapter(int, android.content.Intent);
-    method public void setScrollPosition(int, int);
-    method public void setShort(int, String, short);
-    method public void setString(int, String, String);
-    method public void setTextColor(int, @ColorInt int);
-    method public void setTextViewCompoundDrawables(int, int, int, int, int);
-    method public void setTextViewCompoundDrawablesRelative(int, int, int, int, int);
-    method public void setTextViewText(int, CharSequence);
-    method public void setTextViewTextSize(int, int, float);
-    method public void setUri(int, String, android.net.Uri);
-    method public void setViewPadding(int, int, int, int, int);
-    method public void setViewVisibility(int, int);
-    method public void showNext(int);
-    method public void showPrevious(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.widget.RemoteViews> CREATOR;
-    field public static final String EXTRA_SHARED_ELEMENT_BOUNDS = "android.widget.extra.SHARED_ELEMENT_BOUNDS";
-  }
-
-  public static class RemoteViews.ActionException extends java.lang.RuntimeException {
-    ctor public RemoteViews.ActionException(Exception);
-    ctor public RemoteViews.ActionException(String);
-  }
-
-  public static class RemoteViews.RemoteResponse {
-    ctor public RemoteViews.RemoteResponse();
-    method @NonNull public android.widget.RemoteViews.RemoteResponse addSharedElement(int, @NonNull String);
-    method @NonNull public static android.widget.RemoteViews.RemoteResponse fromFillInIntent(@NonNull android.content.Intent);
-    method @NonNull public static android.widget.RemoteViews.RemoteResponse fromPendingIntent(@NonNull android.app.PendingIntent);
-  }
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE}) public static @interface RemoteViews.RemoteView {
-  }
-
-  public abstract class RemoteViewsService extends android.app.Service {
-    ctor public RemoteViewsService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public abstract android.widget.RemoteViewsService.RemoteViewsFactory onGetViewFactory(android.content.Intent);
-  }
-
-  public static interface RemoteViewsService.RemoteViewsFactory {
-    method public int getCount();
-    method public long getItemId(int);
-    method public android.widget.RemoteViews getLoadingView();
-    method public android.widget.RemoteViews getViewAt(int);
-    method public int getViewTypeCount();
-    method public boolean hasStableIds();
-    method public void onCreate();
-    method public void onDataSetChanged();
-    method public void onDestroy();
-  }
-
-  public abstract class ResourceCursorAdapter extends android.widget.CursorAdapter {
-    ctor @Deprecated public ResourceCursorAdapter(android.content.Context, int, android.database.Cursor);
-    ctor public ResourceCursorAdapter(android.content.Context, int, android.database.Cursor, boolean);
-    ctor public ResourceCursorAdapter(android.content.Context, int, android.database.Cursor, int);
-    method public android.view.View newView(android.content.Context, android.database.Cursor, android.view.ViewGroup);
-    method public void setDropDownViewResource(int);
-    method public void setViewResource(int);
-  }
-
-  public abstract class ResourceCursorTreeAdapter extends android.widget.CursorTreeAdapter {
-    ctor public ResourceCursorTreeAdapter(android.content.Context, android.database.Cursor, int, int, int, int);
-    ctor public ResourceCursorTreeAdapter(android.content.Context, android.database.Cursor, int, int, int);
-    ctor public ResourceCursorTreeAdapter(android.content.Context, android.database.Cursor, int, int);
-    method public android.view.View newChildView(android.content.Context, android.database.Cursor, boolean, android.view.ViewGroup);
-    method public android.view.View newGroupView(android.content.Context, android.database.Cursor, boolean, android.view.ViewGroup);
-  }
-
-  public class ScrollView extends android.widget.FrameLayout {
-    ctor public ScrollView(android.content.Context);
-    ctor public ScrollView(android.content.Context, android.util.AttributeSet);
-    ctor public ScrollView(android.content.Context, android.util.AttributeSet, int);
-    ctor public ScrollView(android.content.Context, android.util.AttributeSet, int, int);
-    method public boolean arrowScroll(int);
-    method protected int computeScrollDeltaToGetChildRectOnScreen(android.graphics.Rect);
-    method public boolean executeKeyEvent(android.view.KeyEvent);
-    method public void fling(int);
-    method public boolean fullScroll(int);
-    method @ColorInt public int getBottomEdgeEffectColor();
-    method public int getMaxScrollAmount();
-    method @ColorInt public int getTopEdgeEffectColor();
-    method public boolean isFillViewport();
-    method public boolean isSmoothScrollingEnabled();
-    method public boolean pageScroll(int);
-    method public void scrollToDescendant(@NonNull android.view.View);
-    method public void setBottomEdgeEffectColor(@ColorInt int);
-    method public void setEdgeEffectColor(@ColorInt int);
-    method public void setFillViewport(boolean);
-    method public void setSmoothScrollingEnabled(boolean);
-    method public void setTopEdgeEffectColor(@ColorInt int);
-    method public final void smoothScrollBy(int, int);
-    method public final void smoothScrollTo(int, int);
-  }
-
-  public class Scroller {
-    ctor public Scroller(android.content.Context);
-    ctor public Scroller(android.content.Context, android.view.animation.Interpolator);
-    ctor public Scroller(android.content.Context, android.view.animation.Interpolator, boolean);
-    method public void abortAnimation();
-    method public boolean computeScrollOffset();
-    method public void extendDuration(int);
-    method public void fling(int, int, int, int, int, int, int, int);
-    method public final void forceFinished(boolean);
-    method public float getCurrVelocity();
-    method public final int getCurrX();
-    method public final int getCurrY();
-    method public final int getDuration();
-    method public final int getFinalX();
-    method public final int getFinalY();
-    method public final int getStartX();
-    method public final int getStartY();
-    method public final boolean isFinished();
-    method public void setFinalX(int);
-    method public void setFinalY(int);
-    method public final void setFriction(float);
-    method public void startScroll(int, int, int, int);
-    method public void startScroll(int, int, int, int, int);
-    method public int timePassed();
-  }
-
-  public class SearchView extends android.widget.LinearLayout implements android.view.CollapsibleActionView {
-    ctor public SearchView(android.content.Context);
-    ctor public SearchView(android.content.Context, android.util.AttributeSet);
-    ctor public SearchView(android.content.Context, android.util.AttributeSet, int);
-    ctor public SearchView(android.content.Context, android.util.AttributeSet, int, int);
-    method public int getImeOptions();
-    method public int getInputType();
-    method public int getMaxWidth();
-    method public CharSequence getQuery();
-    method @Nullable public CharSequence getQueryHint();
-    method public android.widget.CursorAdapter getSuggestionsAdapter();
-    method @Deprecated public boolean isIconfiedByDefault();
-    method public boolean isIconified();
-    method public boolean isIconifiedByDefault();
-    method public boolean isQueryRefinementEnabled();
-    method public boolean isSubmitButtonEnabled();
-    method public void onActionViewCollapsed();
-    method public void onActionViewExpanded();
-    method public void setIconified(boolean);
-    method public void setIconifiedByDefault(boolean);
-    method public void setImeOptions(int);
-    method public void setInputType(int);
-    method public void setMaxWidth(int);
-    method public void setOnCloseListener(android.widget.SearchView.OnCloseListener);
-    method public void setOnQueryTextFocusChangeListener(android.view.View.OnFocusChangeListener);
-    method public void setOnQueryTextListener(android.widget.SearchView.OnQueryTextListener);
-    method public void setOnSearchClickListener(android.view.View.OnClickListener);
-    method public void setOnSuggestionListener(android.widget.SearchView.OnSuggestionListener);
-    method public void setQuery(CharSequence, boolean);
-    method public void setQueryHint(@Nullable CharSequence);
-    method public void setQueryRefinementEnabled(boolean);
-    method public void setSearchableInfo(android.app.SearchableInfo);
-    method public void setSubmitButtonEnabled(boolean);
-    method public void setSuggestionsAdapter(android.widget.CursorAdapter);
-  }
-
-  public static interface SearchView.OnCloseListener {
-    method public boolean onClose();
-  }
-
-  public static interface SearchView.OnQueryTextListener {
-    method public boolean onQueryTextChange(String);
-    method public boolean onQueryTextSubmit(String);
-  }
-
-  public static interface SearchView.OnSuggestionListener {
-    method public boolean onSuggestionClick(int);
-    method public boolean onSuggestionSelect(int);
-  }
-
-  public interface SectionIndexer {
-    method public int getPositionForSection(int);
-    method public int getSectionForPosition(int);
-    method public Object[] getSections();
-  }
-
-  public class SeekBar extends android.widget.AbsSeekBar {
-    ctor public SeekBar(android.content.Context);
-    ctor public SeekBar(android.content.Context, android.util.AttributeSet);
-    ctor public SeekBar(android.content.Context, android.util.AttributeSet, int);
-    ctor public SeekBar(android.content.Context, android.util.AttributeSet, int, int);
-    method public void setOnSeekBarChangeListener(android.widget.SeekBar.OnSeekBarChangeListener);
-  }
-
-  public static interface SeekBar.OnSeekBarChangeListener {
-    method public void onProgressChanged(android.widget.SeekBar, int, boolean);
-    method public void onStartTrackingTouch(android.widget.SeekBar);
-    method public void onStopTrackingTouch(android.widget.SeekBar);
-  }
-
-  public class ShareActionProvider extends android.view.ActionProvider {
-    ctor public ShareActionProvider(android.content.Context);
-    method public android.view.View onCreateActionView();
-    method public void setOnShareTargetSelectedListener(android.widget.ShareActionProvider.OnShareTargetSelectedListener);
-    method public void setShareHistoryFileName(String);
-    method public void setShareIntent(android.content.Intent);
-    field public static final String DEFAULT_SHARE_HISTORY_FILE_NAME = "share_history.xml";
-  }
-
-  public static interface ShareActionProvider.OnShareTargetSelectedListener {
-    method public boolean onShareTargetSelected(android.widget.ShareActionProvider, android.content.Intent);
-  }
-
-  public class SimpleAdapter extends android.widget.BaseAdapter implements android.widget.Filterable android.widget.ThemedSpinnerAdapter {
-    ctor public SimpleAdapter(android.content.Context, java.util.List<? extends java.util.Map<java.lang.String,?>>, @LayoutRes int, String[], @IdRes int[]);
-    method public int getCount();
-    method public android.content.res.Resources.Theme getDropDownViewTheme();
-    method public android.widget.Filter getFilter();
-    method public Object getItem(int);
-    method public long getItemId(int);
-    method public android.view.View getView(int, android.view.View, android.view.ViewGroup);
-    method public android.widget.SimpleAdapter.ViewBinder getViewBinder();
-    method public void setDropDownViewResource(int);
-    method public void setDropDownViewTheme(android.content.res.Resources.Theme);
-    method public void setViewBinder(android.widget.SimpleAdapter.ViewBinder);
-    method public void setViewImage(android.widget.ImageView, int);
-    method public void setViewImage(android.widget.ImageView, String);
-    method public void setViewText(android.widget.TextView, String);
-  }
-
-  public static interface SimpleAdapter.ViewBinder {
-    method public boolean setViewValue(android.view.View, Object, String);
-  }
-
-  public class SimpleCursorAdapter extends android.widget.ResourceCursorAdapter {
-    ctor @Deprecated public SimpleCursorAdapter(android.content.Context, int, android.database.Cursor, String[], int[]);
-    ctor public SimpleCursorAdapter(android.content.Context, int, android.database.Cursor, String[], int[], int);
-    method public void bindView(android.view.View, android.content.Context, android.database.Cursor);
-    method public void changeCursorAndColumns(android.database.Cursor, String[], int[]);
-    method public android.widget.SimpleCursorAdapter.CursorToStringConverter getCursorToStringConverter();
-    method public int getStringConversionColumn();
-    method public android.widget.SimpleCursorAdapter.ViewBinder getViewBinder();
-    method public void setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter);
-    method public void setStringConversionColumn(int);
-    method public void setViewBinder(android.widget.SimpleCursorAdapter.ViewBinder);
-    method public void setViewImage(android.widget.ImageView, String);
-    method public void setViewText(android.widget.TextView, String);
-  }
-
-  public static interface SimpleCursorAdapter.CursorToStringConverter {
-    method public CharSequence convertToString(android.database.Cursor);
-  }
-
-  public static interface SimpleCursorAdapter.ViewBinder {
-    method public boolean setViewValue(android.view.View, android.database.Cursor, int);
-  }
-
-  public abstract class SimpleCursorTreeAdapter extends android.widget.ResourceCursorTreeAdapter {
-    ctor public SimpleCursorTreeAdapter(android.content.Context, android.database.Cursor, int, int, String[], int[], int, int, String[], int[]);
-    ctor public SimpleCursorTreeAdapter(android.content.Context, android.database.Cursor, int, int, String[], int[], int, String[], int[]);
-    ctor public SimpleCursorTreeAdapter(android.content.Context, android.database.Cursor, int, String[], int[], int, String[], int[]);
-    method protected void bindChildView(android.view.View, android.content.Context, android.database.Cursor, boolean);
-    method protected void bindGroupView(android.view.View, android.content.Context, android.database.Cursor, boolean);
-    method public android.widget.SimpleCursorTreeAdapter.ViewBinder getViewBinder();
-    method public void setViewBinder(android.widget.SimpleCursorTreeAdapter.ViewBinder);
-    method protected void setViewImage(android.widget.ImageView, String);
-    method public void setViewText(android.widget.TextView, String);
-  }
-
-  public static interface SimpleCursorTreeAdapter.ViewBinder {
-    method public boolean setViewValue(android.view.View, android.database.Cursor, int);
-  }
-
-  public class SimpleExpandableListAdapter extends android.widget.BaseExpandableListAdapter {
-    ctor public SimpleExpandableListAdapter(android.content.Context, java.util.List<? extends java.util.Map<java.lang.String,?>>, int, String[], int[], java.util.List<? extends java.util.List<? extends java.util.Map<java.lang.String,?>>>, int, String[], int[]);
-    ctor public SimpleExpandableListAdapter(android.content.Context, java.util.List<? extends java.util.Map<java.lang.String,?>>, int, int, String[], int[], java.util.List<? extends java.util.List<? extends java.util.Map<java.lang.String,?>>>, int, String[], int[]);
-    ctor public SimpleExpandableListAdapter(android.content.Context, java.util.List<? extends java.util.Map<java.lang.String,?>>, int, int, String[], int[], java.util.List<? extends java.util.List<? extends java.util.Map<java.lang.String,?>>>, int, int, String[], int[]);
-    method public Object getChild(int, int);
-    method public long getChildId(int, int);
-    method public android.view.View getChildView(int, int, boolean, android.view.View, android.view.ViewGroup);
-    method public int getChildrenCount(int);
-    method public Object getGroup(int);
-    method public int getGroupCount();
-    method public long getGroupId(int);
-    method public android.view.View getGroupView(int, boolean, android.view.View, android.view.ViewGroup);
-    method public boolean hasStableIds();
-    method public boolean isChildSelectable(int, int);
-    method public android.view.View newChildView(boolean, android.view.ViewGroup);
-    method public android.view.View newGroupView(boolean, android.view.ViewGroup);
-  }
-
-  @Deprecated public class SlidingDrawer extends android.view.ViewGroup {
-    ctor @Deprecated public SlidingDrawer(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public SlidingDrawer(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public SlidingDrawer(android.content.Context, android.util.AttributeSet, int, int);
-    method @Deprecated public void animateClose();
-    method @Deprecated public void animateOpen();
-    method @Deprecated public void animateToggle();
-    method @Deprecated public void close();
-    method @Deprecated public android.view.View getContent();
-    method @Deprecated public android.view.View getHandle();
-    method @Deprecated public boolean isMoving();
-    method @Deprecated public boolean isOpened();
-    method @Deprecated public void lock();
-    method @Deprecated public void open();
-    method @Deprecated public void setOnDrawerCloseListener(android.widget.SlidingDrawer.OnDrawerCloseListener);
-    method @Deprecated public void setOnDrawerOpenListener(android.widget.SlidingDrawer.OnDrawerOpenListener);
-    method @Deprecated public void setOnDrawerScrollListener(android.widget.SlidingDrawer.OnDrawerScrollListener);
-    method @Deprecated public void toggle();
-    method @Deprecated public void unlock();
-    field @Deprecated public static final int ORIENTATION_HORIZONTAL = 0; // 0x0
-    field @Deprecated public static final int ORIENTATION_VERTICAL = 1; // 0x1
-  }
-
-  @Deprecated public static interface SlidingDrawer.OnDrawerCloseListener {
-    method @Deprecated public void onDrawerClosed();
-  }
-
-  @Deprecated public static interface SlidingDrawer.OnDrawerOpenListener {
-    method @Deprecated public void onDrawerOpened();
-  }
-
-  @Deprecated public static interface SlidingDrawer.OnDrawerScrollListener {
-    method @Deprecated public void onScrollEnded();
-    method @Deprecated public void onScrollStarted();
-  }
-
-  public final class Space extends android.view.View {
-    ctor public Space(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public Space(android.content.Context, android.util.AttributeSet, int);
-    ctor public Space(android.content.Context, android.util.AttributeSet);
-    ctor public Space(android.content.Context);
-  }
-
-  public class Spinner extends android.widget.AbsSpinner implements android.content.DialogInterface.OnClickListener {
-    ctor public Spinner(android.content.Context);
-    ctor public Spinner(android.content.Context, int);
-    ctor public Spinner(android.content.Context, android.util.AttributeSet);
-    ctor public Spinner(android.content.Context, android.util.AttributeSet, int);
-    ctor public Spinner(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public Spinner(android.content.Context, android.util.AttributeSet, int, int, int);
-    ctor public Spinner(android.content.Context, android.util.AttributeSet, int, int, int, android.content.res.Resources.Theme);
-    method public int getDropDownHorizontalOffset();
-    method public int getDropDownVerticalOffset();
-    method public int getDropDownWidth();
-    method public int getGravity();
-    method public android.graphics.drawable.Drawable getPopupBackground();
-    method public android.content.Context getPopupContext();
-    method public CharSequence getPrompt();
-    method public void onClick(android.content.DialogInterface, int);
-    method public void setDropDownHorizontalOffset(int);
-    method public void setDropDownVerticalOffset(int);
-    method public void setDropDownWidth(int);
-    method public void setGravity(int);
-    method public void setPopupBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setPopupBackgroundResource(@DrawableRes int);
-    method public void setPrompt(CharSequence);
-    method public void setPromptId(int);
-    field public static final int MODE_DIALOG = 0; // 0x0
-    field public static final int MODE_DROPDOWN = 1; // 0x1
-  }
-
-  public interface SpinnerAdapter extends android.widget.Adapter {
-    method public android.view.View getDropDownView(int, android.view.View, android.view.ViewGroup);
-  }
-
-  @android.widget.RemoteViews.RemoteView public class StackView extends android.widget.AdapterViewAnimator {
-    ctor public StackView(android.content.Context);
-    ctor public StackView(android.content.Context, android.util.AttributeSet);
-    ctor public StackView(android.content.Context, android.util.AttributeSet, int);
-    ctor public StackView(android.content.Context, android.util.AttributeSet, int, int);
-  }
-
-  public class Switch extends android.widget.CompoundButton {
-    ctor public Switch(android.content.Context);
-    ctor public Switch(android.content.Context, android.util.AttributeSet);
-    ctor public Switch(android.content.Context, android.util.AttributeSet, int);
-    ctor public Switch(android.content.Context, android.util.AttributeSet, int, int);
-    method public boolean getShowText();
-    method public boolean getSplitTrack();
-    method public int getSwitchMinWidth();
-    method public int getSwitchPadding();
-    method public CharSequence getTextOff();
-    method public CharSequence getTextOn();
-    method public android.graphics.drawable.Drawable getThumbDrawable();
-    method public int getThumbTextPadding();
-    method @Nullable public android.graphics.BlendMode getThumbTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getThumbTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getThumbTintMode();
-    method public android.graphics.drawable.Drawable getTrackDrawable();
-    method @Nullable public android.graphics.BlendMode getTrackTintBlendMode();
-    method @Nullable public android.content.res.ColorStateList getTrackTintList();
-    method @Nullable public android.graphics.PorterDuff.Mode getTrackTintMode();
-    method public void onMeasure(int, int);
-    method public void setShowText(boolean);
-    method public void setSplitTrack(boolean);
-    method public void setSwitchMinWidth(int);
-    method public void setSwitchPadding(int);
-    method public void setSwitchTextAppearance(android.content.Context, @StyleRes int);
-    method public void setSwitchTypeface(android.graphics.Typeface, int);
-    method public void setSwitchTypeface(android.graphics.Typeface);
-    method public void setTextOff(CharSequence);
-    method public void setTextOn(CharSequence);
-    method public void setThumbDrawable(android.graphics.drawable.Drawable);
-    method public void setThumbResource(@DrawableRes int);
-    method public void setThumbTextPadding(int);
-    method public void setThumbTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setThumbTintList(@Nullable android.content.res.ColorStateList);
-    method public void setThumbTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public void setTrackDrawable(android.graphics.drawable.Drawable);
-    method public void setTrackResource(@DrawableRes int);
-    method public void setTrackTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setTrackTintList(@Nullable android.content.res.ColorStateList);
-    method public void setTrackTintMode(@Nullable android.graphics.PorterDuff.Mode);
-  }
-
-  @Deprecated public class TabHost extends android.widget.FrameLayout implements android.view.ViewTreeObserver.OnTouchModeChangeListener {
-    ctor @Deprecated public TabHost(android.content.Context);
-    ctor @Deprecated public TabHost(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public TabHost(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public TabHost(android.content.Context, android.util.AttributeSet, int, int);
-    method @Deprecated public void addTab(android.widget.TabHost.TabSpec);
-    method @Deprecated public void clearAllTabs();
-    method @Deprecated @Nullable public int getCurrentTab();
-    method @Deprecated @Nullable public String getCurrentTabTag();
-    method @Deprecated @Nullable public android.view.View getCurrentTabView();
-    method @Deprecated public android.view.View getCurrentView();
-    method @Deprecated public android.widget.FrameLayout getTabContentView();
-    method @Deprecated public android.widget.TabWidget getTabWidget();
-    method @Deprecated @NonNull public android.widget.TabHost.TabSpec newTabSpec(@NonNull String);
-    method @Deprecated public void onTouchModeChanged(boolean);
-    method @Deprecated public void setCurrentTab(int);
-    method @Deprecated public void setCurrentTabByTag(String);
-    method @Deprecated public void setOnTabChangedListener(android.widget.TabHost.OnTabChangeListener);
-    method @Deprecated public void setup();
-    method @Deprecated public void setup(android.app.LocalActivityManager);
-  }
-
-  @Deprecated public static interface TabHost.OnTabChangeListener {
-    method @Deprecated public void onTabChanged(String);
-  }
-
-  @Deprecated public static interface TabHost.TabContentFactory {
-    method @Deprecated public android.view.View createTabContent(String);
-  }
-
-  @Deprecated public class TabHost.TabSpec {
-    method @Deprecated @NonNull public String getTag();
-    method @Deprecated public android.widget.TabHost.TabSpec setContent(int);
-    method @Deprecated public android.widget.TabHost.TabSpec setContent(android.widget.TabHost.TabContentFactory);
-    method @Deprecated public android.widget.TabHost.TabSpec setContent(android.content.Intent);
-    method @Deprecated public android.widget.TabHost.TabSpec setIndicator(CharSequence);
-    method @Deprecated public android.widget.TabHost.TabSpec setIndicator(CharSequence, android.graphics.drawable.Drawable);
-    method @Deprecated public android.widget.TabHost.TabSpec setIndicator(android.view.View);
-  }
-
-  @Deprecated public class TabWidget extends android.widget.LinearLayout implements android.view.View.OnFocusChangeListener {
-    ctor @Deprecated public TabWidget(android.content.Context);
-    ctor @Deprecated public TabWidget(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public TabWidget(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public TabWidget(android.content.Context, android.util.AttributeSet, int, int);
-    method @Deprecated public void dispatchDraw(android.graphics.Canvas);
-    method @Deprecated public void focusCurrentTab(int);
-    method @Deprecated public android.view.View getChildTabViewAt(int);
-    method @Deprecated @Nullable public android.graphics.drawable.Drawable getLeftStripDrawable();
-    method @Deprecated @Nullable public android.graphics.drawable.Drawable getRightStripDrawable();
-    method @Deprecated public int getTabCount();
-    method @Deprecated public boolean isStripEnabled();
-    method @Deprecated public void onFocusChange(android.view.View, boolean);
-    method @Deprecated public void setCurrentTab(int);
-    method @Deprecated public void setDividerDrawable(@DrawableRes int);
-    method @Deprecated public void setLeftStripDrawable(@Nullable android.graphics.drawable.Drawable);
-    method @Deprecated public void setLeftStripDrawable(@DrawableRes int);
-    method @Deprecated public void setRightStripDrawable(@Nullable android.graphics.drawable.Drawable);
-    method @Deprecated public void setRightStripDrawable(@DrawableRes int);
-    method @Deprecated public void setStripEnabled(boolean);
-  }
-
-  public class TableLayout extends android.widget.LinearLayout {
-    ctor public TableLayout(android.content.Context);
-    ctor public TableLayout(android.content.Context, android.util.AttributeSet);
-    method public android.widget.TableLayout.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method public boolean isColumnCollapsed(int);
-    method public boolean isColumnShrinkable(int);
-    method public boolean isColumnStretchable(int);
-    method public boolean isShrinkAllColumns();
-    method public boolean isStretchAllColumns();
-    method public void setColumnCollapsed(int, boolean);
-    method public void setColumnShrinkable(int, boolean);
-    method public void setColumnStretchable(int, boolean);
-    method public void setShrinkAllColumns(boolean);
-    method public void setStretchAllColumns(boolean);
-  }
-
-  public static class TableLayout.LayoutParams extends android.widget.LinearLayout.LayoutParams {
-    ctor public TableLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public TableLayout.LayoutParams(int, int);
-    ctor public TableLayout.LayoutParams(int, int, float);
-    ctor public TableLayout.LayoutParams();
-    ctor public TableLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public TableLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-  }
-
-  public class TableRow extends android.widget.LinearLayout {
-    ctor public TableRow(android.content.Context);
-    ctor public TableRow(android.content.Context, android.util.AttributeSet);
-    method public android.widget.TableRow.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method public android.view.View getVirtualChildAt(int);
-    method public int getVirtualChildCount();
-  }
-
-  public static class TableRow.LayoutParams extends android.widget.LinearLayout.LayoutParams {
-    ctor public TableRow.LayoutParams(android.content.Context, android.util.AttributeSet);
-    ctor public TableRow.LayoutParams(int, int);
-    ctor public TableRow.LayoutParams(int, int, float);
-    ctor public TableRow.LayoutParams();
-    ctor public TableRow.LayoutParams(int);
-    ctor public TableRow.LayoutParams(android.view.ViewGroup.LayoutParams);
-    ctor public TableRow.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    field public int column;
-    field public int span;
-  }
-
-  @android.widget.RemoteViews.RemoteView public class TextClock extends android.widget.TextView {
-    ctor public TextClock(android.content.Context);
-    ctor public TextClock(android.content.Context, android.util.AttributeSet);
-    ctor public TextClock(android.content.Context, android.util.AttributeSet, int);
-    ctor public TextClock(android.content.Context, android.util.AttributeSet, int, int);
-    method public CharSequence getFormat12Hour();
-    method public CharSequence getFormat24Hour();
-    method public String getTimeZone();
-    method public boolean is24HourModeEnabled();
-    method public void refreshTime();
-    method public void setFormat12Hour(CharSequence);
-    method public void setFormat24Hour(CharSequence);
-    method public void setTimeZone(String);
-    field @Deprecated public static final CharSequence DEFAULT_FORMAT_12_HOUR;
-    field @Deprecated public static final CharSequence DEFAULT_FORMAT_24_HOUR;
-  }
-
-  public class TextSwitcher extends android.widget.ViewSwitcher {
-    ctor public TextSwitcher(android.content.Context);
-    ctor public TextSwitcher(android.content.Context, android.util.AttributeSet);
-    method public void setCurrentText(CharSequence);
-    method public void setText(CharSequence);
-  }
-
-  @android.widget.RemoteViews.RemoteView public class TextView extends android.view.View implements android.view.ViewTreeObserver.OnPreDrawListener {
-    ctor public TextView(android.content.Context);
-    ctor public TextView(android.content.Context, @Nullable android.util.AttributeSet);
-    ctor public TextView(android.content.Context, @Nullable android.util.AttributeSet, int);
-    ctor public TextView(android.content.Context, @Nullable android.util.AttributeSet, int, int);
-    method public void addTextChangedListener(android.text.TextWatcher);
-    method public final void append(CharSequence);
-    method public void append(CharSequence, int, int);
-    method public void beginBatchEdit();
-    method public boolean bringPointIntoView(int);
-    method public void clearComposingText();
-    method public void debug(int);
-    method public boolean didTouchFocusSelect();
-    method public void endBatchEdit();
-    method public boolean extractText(android.view.inputmethod.ExtractedTextRequest, android.view.inputmethod.ExtractedText);
-    method public final int getAutoLinkMask();
-    method public int getAutoSizeMaxTextSize();
-    method public int getAutoSizeMinTextSize();
-    method public int getAutoSizeStepGranularity();
-    method public int[] getAutoSizeTextAvailableSizes();
-    method public int getAutoSizeTextType();
-    method public int getBreakStrategy();
-    method public int getCompoundDrawablePadding();
-    method @Nullable public android.graphics.BlendMode getCompoundDrawableTintBlendMode();
-    method public android.content.res.ColorStateList getCompoundDrawableTintList();
-    method public android.graphics.PorterDuff.Mode getCompoundDrawableTintMode();
-    method @NonNull public android.graphics.drawable.Drawable[] getCompoundDrawables();
-    method @NonNull public android.graphics.drawable.Drawable[] getCompoundDrawablesRelative();
-    method public int getCompoundPaddingBottom();
-    method public int getCompoundPaddingEnd();
-    method public int getCompoundPaddingLeft();
-    method public int getCompoundPaddingRight();
-    method public int getCompoundPaddingStart();
-    method public int getCompoundPaddingTop();
-    method @ColorInt public final int getCurrentHintTextColor();
-    method @ColorInt public final int getCurrentTextColor();
-    method public android.view.ActionMode.Callback getCustomInsertionActionModeCallback();
-    method public android.view.ActionMode.Callback getCustomSelectionActionModeCallback();
-    method protected boolean getDefaultEditable();
-    method protected android.text.method.MovementMethod getDefaultMovementMethod();
-    method public android.text.Editable getEditableText();
-    method public android.text.TextUtils.TruncateAt getEllipsize();
-    method public CharSequence getError();
-    method public int getExtendedPaddingBottom();
-    method public int getExtendedPaddingTop();
-    method public android.text.InputFilter[] getFilters();
-    method public int getFirstBaselineToTopHeight();
-    method @Nullable public String getFontFeatureSettings();
-    method @Nullable public String getFontVariationSettings();
-    method public boolean getFreezesText();
-    method public int getGravity();
-    method @ColorInt public int getHighlightColor();
-    method public CharSequence getHint();
-    method public final android.content.res.ColorStateList getHintTextColors();
-    method public int getHyphenationFrequency();
-    method public int getImeActionId();
-    method public CharSequence getImeActionLabel();
-    method @Nullable public android.os.LocaleList getImeHintLocales();
-    method public int getImeOptions();
-    method public boolean getIncludeFontPadding();
-    method public android.os.Bundle getInputExtras(boolean);
-    method public int getInputType();
-    method public int getJustificationMode();
-    method public final android.text.method.KeyListener getKeyListener();
-    method public int getLastBaselineToBottomHeight();
-    method public final android.text.Layout getLayout();
-    method public float getLetterSpacing();
-    method public int getLineBounds(int, android.graphics.Rect);
-    method public int getLineCount();
-    method public int getLineHeight();
-    method public float getLineSpacingExtra();
-    method public float getLineSpacingMultiplier();
-    method public final android.content.res.ColorStateList getLinkTextColors();
-    method public final boolean getLinksClickable();
-    method public int getMarqueeRepeatLimit();
-    method public int getMaxEms();
-    method public int getMaxHeight();
-    method public int getMaxLines();
-    method public int getMaxWidth();
-    method public int getMinEms();
-    method public int getMinHeight();
-    method public int getMinLines();
-    method public int getMinWidth();
-    method public final android.text.method.MovementMethod getMovementMethod();
-    method public int getOffsetForPosition(float, float);
-    method public android.text.TextPaint getPaint();
-    method public int getPaintFlags();
-    method public String getPrivateImeOptions();
-    method public int getSelectionEnd();
-    method public int getSelectionStart();
-    method @ColorInt public int getShadowColor();
-    method public float getShadowDx();
-    method public float getShadowDy();
-    method public float getShadowRadius();
-    method public final boolean getShowSoftInputOnFocus();
-    method public CharSequence getText();
-    method @NonNull public android.view.textclassifier.TextClassifier getTextClassifier();
-    method public final android.content.res.ColorStateList getTextColors();
-    method @Nullable public android.graphics.drawable.Drawable getTextCursorDrawable();
-    method @NonNull public android.text.TextDirectionHeuristic getTextDirectionHeuristic();
-    method @NonNull public java.util.Locale getTextLocale();
-    method @NonNull @Size(min=1) public android.os.LocaleList getTextLocales();
-    method @NonNull public android.text.PrecomputedText.Params getTextMetricsParams();
-    method public float getTextScaleX();
-    method @Nullable public android.graphics.drawable.Drawable getTextSelectHandle();
-    method @Nullable public android.graphics.drawable.Drawable getTextSelectHandleLeft();
-    method @Nullable public android.graphics.drawable.Drawable getTextSelectHandleRight();
-    method public float getTextSize();
-    method public int getTextSizeUnit();
-    method public int getTotalPaddingBottom();
-    method public int getTotalPaddingEnd();
-    method public int getTotalPaddingLeft();
-    method public int getTotalPaddingRight();
-    method public int getTotalPaddingStart();
-    method public int getTotalPaddingTop();
-    method public final android.text.method.TransformationMethod getTransformationMethod();
-    method public android.graphics.Typeface getTypeface();
-    method public android.text.style.URLSpan[] getUrls();
-    method public boolean hasSelection();
-    method public boolean isAllCaps();
-    method public boolean isCursorVisible();
-    method public boolean isElegantTextHeight();
-    method public boolean isFallbackLineSpacing();
-    method public final boolean isHorizontallyScrollable();
-    method public boolean isInputMethodTarget();
-    method public boolean isSingleLine();
-    method public boolean isSuggestionsEnabled();
-    method public boolean isTextSelectable();
-    method public int length();
-    method public boolean moveCursorToVisibleOffset();
-    method public void onBeginBatchEdit();
-    method public void onCommitCompletion(android.view.inputmethod.CompletionInfo);
-    method public void onCommitCorrection(android.view.inputmethod.CorrectionInfo);
-    method public void onEditorAction(int);
-    method public void onEndBatchEdit();
-    method public boolean onPreDraw();
-    method public boolean onPrivateIMECommand(String, android.os.Bundle);
-    method public void onRestoreInstanceState(android.os.Parcelable);
-    method public android.os.Parcelable onSaveInstanceState();
-    method @CallSuper protected void onSelectionChanged(int, int);
-    method protected void onTextChanged(CharSequence, int, int, int);
-    method public boolean onTextContextMenuItem(int);
-    method public void removeTextChangedListener(android.text.TextWatcher);
-    method public void setAllCaps(boolean);
-    method public final void setAutoLinkMask(int);
-    method public void setAutoSizeTextTypeUniformWithConfiguration(int, int, int, int);
-    method public void setAutoSizeTextTypeUniformWithPresetSizes(@NonNull int[], int);
-    method public void setAutoSizeTextTypeWithDefaults(int);
-    method public void setBreakStrategy(int);
-    method public void setCompoundDrawablePadding(int);
-    method public void setCompoundDrawableTintBlendMode(@Nullable android.graphics.BlendMode);
-    method public void setCompoundDrawableTintList(@Nullable android.content.res.ColorStateList);
-    method public void setCompoundDrawableTintMode(@Nullable android.graphics.PorterDuff.Mode);
-    method public void setCompoundDrawables(@Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable);
-    method public void setCompoundDrawablesRelative(@Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable);
-    method public void setCompoundDrawablesRelativeWithIntrinsicBounds(@DrawableRes int, @DrawableRes int, @DrawableRes int, @DrawableRes int);
-    method public void setCompoundDrawablesRelativeWithIntrinsicBounds(@Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable);
-    method public void setCompoundDrawablesWithIntrinsicBounds(@DrawableRes int, @DrawableRes int, @DrawableRes int, @DrawableRes int);
-    method public void setCompoundDrawablesWithIntrinsicBounds(@Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable);
-    method public void setCursorVisible(boolean);
-    method public void setCustomInsertionActionModeCallback(android.view.ActionMode.Callback);
-    method public void setCustomSelectionActionModeCallback(android.view.ActionMode.Callback);
-    method public final void setEditableFactory(android.text.Editable.Factory);
-    method public void setElegantTextHeight(boolean);
-    method public void setEllipsize(android.text.TextUtils.TruncateAt);
-    method public void setEms(int);
-    method public void setError(CharSequence);
-    method public void setError(CharSequence, android.graphics.drawable.Drawable);
-    method public void setExtractedText(android.view.inputmethod.ExtractedText);
-    method public void setFallbackLineSpacing(boolean);
-    method public void setFilters(android.text.InputFilter[]);
-    method public void setFirstBaselineToTopHeight(@IntRange(from=0) @Px int);
-    method public void setFontFeatureSettings(@Nullable String);
-    method public boolean setFontVariationSettings(@Nullable String);
-    method protected boolean setFrame(int, int, int, int);
-    method public void setFreezesText(boolean);
-    method public void setGravity(int);
-    method public void setHeight(int);
-    method public void setHighlightColor(@ColorInt int);
-    method public final void setHint(CharSequence);
-    method public final void setHint(@StringRes int);
-    method public final void setHintTextColor(@ColorInt int);
-    method public final void setHintTextColor(android.content.res.ColorStateList);
-    method public void setHorizontallyScrolling(boolean);
-    method public void setHyphenationFrequency(int);
-    method public void setImeActionLabel(CharSequence, int);
-    method public void setImeHintLocales(@Nullable android.os.LocaleList);
-    method public void setImeOptions(int);
-    method public void setIncludeFontPadding(boolean);
-    method public void setInputExtras(@XmlRes int) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public void setInputType(int);
-    method public void setJustificationMode(int);
-    method public void setKeyListener(android.text.method.KeyListener);
-    method public void setLastBaselineToBottomHeight(@IntRange(from=0) @Px int);
-    method public void setLetterSpacing(float);
-    method public void setLineHeight(@IntRange(from=0) @Px int);
-    method public void setLineSpacing(float, float);
-    method public void setLines(int);
-    method public final void setLinkTextColor(@ColorInt int);
-    method public final void setLinkTextColor(android.content.res.ColorStateList);
-    method public final void setLinksClickable(boolean);
-    method public void setMarqueeRepeatLimit(int);
-    method public void setMaxEms(int);
-    method public void setMaxHeight(int);
-    method public void setMaxLines(int);
-    method public void setMaxWidth(int);
-    method public void setMinEms(int);
-    method public void setMinHeight(int);
-    method public void setMinLines(int);
-    method public void setMinWidth(int);
-    method public final void setMovementMethod(android.text.method.MovementMethod);
-    method public void setOnEditorActionListener(android.widget.TextView.OnEditorActionListener);
-    method public void setPaintFlags(int);
-    method public void setPrivateImeOptions(String);
-    method public void setRawInputType(int);
-    method public void setScroller(android.widget.Scroller);
-    method public void setSelectAllOnFocus(boolean);
-    method public void setShadowLayer(float, float, float, int);
-    method public final void setShowSoftInputOnFocus(boolean);
-    method public void setSingleLine();
-    method public void setSingleLine(boolean);
-    method public final void setSpannableFactory(android.text.Spannable.Factory);
-    method public final void setText(CharSequence);
-    method public void setText(CharSequence, android.widget.TextView.BufferType);
-    method public final void setText(char[], int, int);
-    method public final void setText(@StringRes int);
-    method public final void setText(@StringRes int, android.widget.TextView.BufferType);
-    method public void setTextAppearance(@StyleRes int);
-    method @Deprecated public void setTextAppearance(android.content.Context, @StyleRes int);
-    method public void setTextClassifier(@Nullable android.view.textclassifier.TextClassifier);
-    method public void setTextColor(@ColorInt int);
-    method public void setTextColor(android.content.res.ColorStateList);
-    method public void setTextCursorDrawable(@Nullable android.graphics.drawable.Drawable);
-    method public void setTextCursorDrawable(@DrawableRes int);
-    method public void setTextIsSelectable(boolean);
-    method public final void setTextKeepState(CharSequence);
-    method public final void setTextKeepState(CharSequence, android.widget.TextView.BufferType);
-    method public void setTextLocale(@NonNull java.util.Locale);
-    method public void setTextLocales(@NonNull @Size(min=1) android.os.LocaleList);
-    method public void setTextMetricsParams(@NonNull android.text.PrecomputedText.Params);
-    method public void setTextScaleX(float);
-    method public void setTextSelectHandle(@NonNull android.graphics.drawable.Drawable);
-    method public void setTextSelectHandle(@DrawableRes int);
-    method public void setTextSelectHandleLeft(@NonNull android.graphics.drawable.Drawable);
-    method public void setTextSelectHandleLeft(@DrawableRes int);
-    method public void setTextSelectHandleRight(@NonNull android.graphics.drawable.Drawable);
-    method public void setTextSelectHandleRight(@DrawableRes int);
-    method public void setTextSize(float);
-    method public void setTextSize(int, float);
-    method public final void setTransformationMethod(android.text.method.TransformationMethod);
-    method public void setTypeface(@Nullable android.graphics.Typeface, int);
-    method public void setTypeface(@Nullable android.graphics.Typeface);
-    method public void setWidth(int);
-    field public static final int AUTO_SIZE_TEXT_TYPE_NONE = 0; // 0x0
-    field public static final int AUTO_SIZE_TEXT_TYPE_UNIFORM = 1; // 0x1
-  }
-
-  public enum TextView.BufferType {
-    enum_constant public static final android.widget.TextView.BufferType EDITABLE;
-    enum_constant public static final android.widget.TextView.BufferType NORMAL;
-    enum_constant public static final android.widget.TextView.BufferType SPANNABLE;
-  }
-
-  public static interface TextView.OnEditorActionListener {
-    method public boolean onEditorAction(android.widget.TextView, int, android.view.KeyEvent);
-  }
-
-  public static class TextView.SavedState extends android.view.View.BaseSavedState {
-    field @NonNull public static final android.os.Parcelable.Creator<android.widget.TextView.SavedState> CREATOR;
-  }
-
-  public interface ThemedSpinnerAdapter extends android.widget.SpinnerAdapter {
-    method @Nullable public android.content.res.Resources.Theme getDropDownViewTheme();
-    method public void setDropDownViewTheme(@Nullable android.content.res.Resources.Theme);
-  }
-
-  public class TimePicker extends android.widget.FrameLayout {
-    ctor public TimePicker(android.content.Context);
-    ctor public TimePicker(android.content.Context, android.util.AttributeSet);
-    ctor public TimePicker(android.content.Context, android.util.AttributeSet, int);
-    ctor public TimePicker(android.content.Context, android.util.AttributeSet, int, int);
-    method @Deprecated @NonNull public Integer getCurrentHour();
-    method @Deprecated @NonNull public Integer getCurrentMinute();
-    method public int getHour();
-    method public int getMinute();
-    method public boolean is24HourView();
-    method @Deprecated public void setCurrentHour(@NonNull Integer);
-    method @Deprecated public void setCurrentMinute(@NonNull Integer);
-    method public void setHour(@IntRange(from=0, to=23) int);
-    method public void setIs24HourView(@NonNull Boolean);
-    method public void setMinute(@IntRange(from=0, to=59) int);
-    method public void setOnTimeChangedListener(android.widget.TimePicker.OnTimeChangedListener);
-    method public boolean validateInput();
-  }
-
-  public static interface TimePicker.OnTimeChangedListener {
-    method public void onTimeChanged(android.widget.TimePicker, int, int);
-  }
-
-  public class Toast {
-    ctor public Toast(android.content.Context);
-    method public void addCallback(@NonNull android.widget.Toast.Callback);
-    method public void cancel();
-    method public int getDuration();
-    method public int getGravity();
-    method public float getHorizontalMargin();
-    method public float getVerticalMargin();
-    method @Deprecated @Nullable public android.view.View getView();
-    method public int getXOffset();
-    method public int getYOffset();
-    method public static android.widget.Toast makeText(android.content.Context, CharSequence, int);
-    method public static android.widget.Toast makeText(android.content.Context, @StringRes int, int) throws android.content.res.Resources.NotFoundException;
-    method public void removeCallback(@NonNull android.widget.Toast.Callback);
-    method public void setDuration(int);
-    method public void setGravity(int, int, int);
-    method public void setMargin(float, float);
-    method public void setText(@StringRes int);
-    method public void setText(CharSequence);
-    method @Deprecated public void setView(android.view.View);
-    method public void show();
-    field public static final int LENGTH_LONG = 1; // 0x1
-    field public static final int LENGTH_SHORT = 0; // 0x0
-  }
-
-  public abstract static class Toast.Callback {
-    ctor public Toast.Callback();
-    method public void onToastHidden();
-    method public void onToastShown();
-  }
-
-  public class ToggleButton extends android.widget.CompoundButton {
-    ctor public ToggleButton(android.content.Context, android.util.AttributeSet, int, int);
-    ctor public ToggleButton(android.content.Context, android.util.AttributeSet, int);
-    ctor public ToggleButton(android.content.Context, android.util.AttributeSet);
-    ctor public ToggleButton(android.content.Context);
-    method @FloatRange(from=0.0, to=1.0) public float getDisabledAlpha();
-    method public CharSequence getTextOff();
-    method public CharSequence getTextOn();
-    method public void setBackgroundDrawable(android.graphics.drawable.Drawable);
-    method public void setTextOff(CharSequence);
-    method public void setTextOn(CharSequence);
-  }
-
-  public class Toolbar extends android.view.ViewGroup {
-    ctor public Toolbar(android.content.Context);
-    ctor public Toolbar(android.content.Context, android.util.AttributeSet);
-    ctor public Toolbar(android.content.Context, android.util.AttributeSet, int);
-    ctor public Toolbar(android.content.Context, android.util.AttributeSet, int, int);
-    method public void collapseActionView();
-    method public void dismissPopupMenus();
-    method protected android.widget.Toolbar.LayoutParams generateDefaultLayoutParams();
-    method public android.widget.Toolbar.LayoutParams generateLayoutParams(android.util.AttributeSet);
-    method protected android.widget.Toolbar.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams);
-    method @Nullable public CharSequence getCollapseContentDescription();
-    method @Nullable public android.graphics.drawable.Drawable getCollapseIcon();
-    method public int getContentInsetEnd();
-    method public int getContentInsetEndWithActions();
-    method public int getContentInsetLeft();
-    method public int getContentInsetRight();
-    method public int getContentInsetStart();
-    method public int getContentInsetStartWithNavigation();
-    method public int getCurrentContentInsetEnd();
-    method public int getCurrentContentInsetLeft();
-    method public int getCurrentContentInsetRight();
-    method public int getCurrentContentInsetStart();
-    method public android.graphics.drawable.Drawable getLogo();
-    method public CharSequence getLogoDescription();
-    method public android.view.Menu getMenu();
-    method @Nullable public CharSequence getNavigationContentDescription();
-    method @Nullable public android.graphics.drawable.Drawable getNavigationIcon();
-    method @Nullable public android.graphics.drawable.Drawable getOverflowIcon();
-    method public int getPopupTheme();
-    method public CharSequence getSubtitle();
-    method public CharSequence getTitle();
-    method public int getTitleMarginBottom();
-    method public int getTitleMarginEnd();
-    method public int getTitleMarginStart();
-    method public int getTitleMarginTop();
-    method public boolean hasExpandedActionView();
-    method public boolean hideOverflowMenu();
-    method public void inflateMenu(@MenuRes int);
-    method public boolean isOverflowMenuShowing();
-    method public void setCollapseContentDescription(@StringRes int);
-    method public void setCollapseContentDescription(@Nullable CharSequence);
-    method public void setCollapseIcon(@DrawableRes int);
-    method public void setCollapseIcon(@Nullable android.graphics.drawable.Drawable);
-    method public void setContentInsetEndWithActions(int);
-    method public void setContentInsetStartWithNavigation(int);
-    method public void setContentInsetsAbsolute(int, int);
-    method public void setContentInsetsRelative(int, int);
-    method public void setLogo(@DrawableRes int);
-    method public void setLogo(android.graphics.drawable.Drawable);
-    method public void setLogoDescription(@StringRes int);
-    method public void setLogoDescription(CharSequence);
-    method public void setNavigationContentDescription(@StringRes int);
-    method public void setNavigationContentDescription(@Nullable CharSequence);
-    method public void setNavigationIcon(@DrawableRes int);
-    method public void setNavigationIcon(@Nullable android.graphics.drawable.Drawable);
-    method public void setNavigationOnClickListener(android.view.View.OnClickListener);
-    method public void setOnMenuItemClickListener(android.widget.Toolbar.OnMenuItemClickListener);
-    method public void setOverflowIcon(@Nullable android.graphics.drawable.Drawable);
-    method public void setPopupTheme(@StyleRes int);
-    method public void setSubtitle(@StringRes int);
-    method public void setSubtitle(CharSequence);
-    method public void setSubtitleTextAppearance(android.content.Context, @StyleRes int);
-    method public void setSubtitleTextColor(@ColorInt int);
-    method public void setTitle(@StringRes int);
-    method public void setTitle(CharSequence);
-    method public void setTitleMargin(int, int, int, int);
-    method public void setTitleMarginBottom(int);
-    method public void setTitleMarginEnd(int);
-    method public void setTitleMarginStart(int);
-    method public void setTitleMarginTop(int);
-    method public void setTitleTextAppearance(android.content.Context, @StyleRes int);
-    method public void setTitleTextColor(@ColorInt int);
-    method public boolean showOverflowMenu();
-  }
-
-  public static class Toolbar.LayoutParams extends android.app.ActionBar.LayoutParams {
-    ctor public Toolbar.LayoutParams(@NonNull android.content.Context, android.util.AttributeSet);
-    ctor public Toolbar.LayoutParams(int, int);
-    ctor public Toolbar.LayoutParams(int, int, int);
-    ctor public Toolbar.LayoutParams(int);
-    ctor public Toolbar.LayoutParams(android.widget.Toolbar.LayoutParams);
-    ctor public Toolbar.LayoutParams(android.app.ActionBar.LayoutParams);
-    ctor public Toolbar.LayoutParams(android.view.ViewGroup.MarginLayoutParams);
-    ctor public Toolbar.LayoutParams(android.view.ViewGroup.LayoutParams);
-  }
-
-  public static interface Toolbar.OnMenuItemClickListener {
-    method public boolean onMenuItemClick(android.view.MenuItem);
-  }
-
-  @Deprecated public class TwoLineListItem extends android.widget.RelativeLayout {
-    ctor @Deprecated public TwoLineListItem(android.content.Context);
-    ctor @Deprecated public TwoLineListItem(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public TwoLineListItem(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public TwoLineListItem(android.content.Context, android.util.AttributeSet, int, int);
-    method @Deprecated public android.widget.TextView getText1();
-    method @Deprecated public android.widget.TextView getText2();
-  }
-
-  public class VideoView extends android.view.SurfaceView implements android.widget.MediaController.MediaPlayerControl {
-    ctor public VideoView(android.content.Context);
-    ctor public VideoView(android.content.Context, android.util.AttributeSet);
-    ctor public VideoView(android.content.Context, android.util.AttributeSet, int);
-    ctor public VideoView(android.content.Context, android.util.AttributeSet, int, int);
-    method public void addSubtitleSource(java.io.InputStream, android.media.MediaFormat);
-    method public boolean canPause();
-    method public boolean canSeekBackward();
-    method public boolean canSeekForward();
-    method public int getAudioSessionId();
-    method public int getBufferPercentage();
-    method public int getCurrentPosition();
-    method public int getDuration();
-    method public boolean isPlaying();
-    method public void pause();
-    method public int resolveAdjustedSize(int, int);
-    method public void resume();
-    method public void seekTo(int);
-    method public void setAudioAttributes(@NonNull android.media.AudioAttributes);
-    method public void setAudioFocusRequest(int);
-    method public void setMediaController(android.widget.MediaController);
-    method public void setOnCompletionListener(android.media.MediaPlayer.OnCompletionListener);
-    method public void setOnErrorListener(android.media.MediaPlayer.OnErrorListener);
-    method public void setOnInfoListener(android.media.MediaPlayer.OnInfoListener);
-    method public void setOnPreparedListener(android.media.MediaPlayer.OnPreparedListener);
-    method public void setVideoPath(String);
-    method public void setVideoURI(android.net.Uri);
-    method public void setVideoURI(android.net.Uri, java.util.Map<java.lang.String,java.lang.String>);
-    method public void start();
-    method public void stopPlayback();
-    method public void suspend();
-  }
-
-  public class ViewAnimator extends android.widget.FrameLayout {
-    ctor public ViewAnimator(android.content.Context);
-    ctor public ViewAnimator(android.content.Context, android.util.AttributeSet);
-    method public boolean getAnimateFirstView();
-    method public android.view.View getCurrentView();
-    method public int getDisplayedChild();
-    method public android.view.animation.Animation getInAnimation();
-    method public android.view.animation.Animation getOutAnimation();
-    method public void setAnimateFirstView(boolean);
-    method public void setDisplayedChild(int);
-    method public void setInAnimation(android.view.animation.Animation);
-    method public void setInAnimation(android.content.Context, @AnimRes int);
-    method public void setOutAnimation(android.view.animation.Animation);
-    method public void setOutAnimation(android.content.Context, @AnimRes int);
-    method public void showNext();
-    method public void showPrevious();
-  }
-
-  @android.widget.RemoteViews.RemoteView public class ViewFlipper extends android.widget.ViewAnimator {
-    ctor public ViewFlipper(android.content.Context);
-    ctor public ViewFlipper(android.content.Context, android.util.AttributeSet);
-    method @IntRange(from=0) public int getFlipInterval();
-    method public boolean isAutoStart();
-    method public boolean isFlipping();
-    method public void setAutoStart(boolean);
-    method public void setFlipInterval(@IntRange(from=0) int);
-    method public void startFlipping();
-    method public void stopFlipping();
-  }
-
-  public class ViewSwitcher extends android.widget.ViewAnimator {
-    ctor public ViewSwitcher(android.content.Context);
-    ctor public ViewSwitcher(android.content.Context, android.util.AttributeSet);
-    method public android.view.View getNextView();
-    method public void reset();
-    method public void setFactory(android.widget.ViewSwitcher.ViewFactory);
-  }
-
-  public static interface ViewSwitcher.ViewFactory {
-    method public android.view.View makeView();
-  }
-
-  public interface WrapperListAdapter extends android.widget.ListAdapter {
-    method public android.widget.ListAdapter getWrappedAdapter();
-  }
-
-  @Deprecated public class ZoomButton extends android.widget.ImageButton implements android.view.View.OnLongClickListener {
-    ctor @Deprecated public ZoomButton(android.content.Context);
-    ctor @Deprecated public ZoomButton(android.content.Context, android.util.AttributeSet);
-    ctor @Deprecated public ZoomButton(android.content.Context, android.util.AttributeSet, int);
-    ctor @Deprecated public ZoomButton(android.content.Context, android.util.AttributeSet, int, int);
-    method @Deprecated public boolean onLongClick(android.view.View);
-    method @Deprecated public void setZoomSpeed(long);
-  }
-
-  @Deprecated public class ZoomButtonsController implements android.view.View.OnTouchListener {
-    ctor @Deprecated public ZoomButtonsController(android.view.View);
-    method @Deprecated public android.view.ViewGroup getContainer();
-    method @Deprecated public android.view.View getZoomControls();
-    method @Deprecated public boolean isAutoDismissed();
-    method @Deprecated public boolean isVisible();
-    method public boolean onTouch(android.view.View, android.view.MotionEvent);
-    method @Deprecated public void setAutoDismissed(boolean);
-    method @Deprecated public void setFocusable(boolean);
-    method @Deprecated public void setOnZoomListener(android.widget.ZoomButtonsController.OnZoomListener);
-    method @Deprecated public void setVisible(boolean);
-    method @Deprecated public void setZoomInEnabled(boolean);
-    method @Deprecated public void setZoomOutEnabled(boolean);
-    method @Deprecated public void setZoomSpeed(long);
-  }
-
-  @Deprecated public static interface ZoomButtonsController.OnZoomListener {
-    method @Deprecated public void onVisibilityChanged(boolean);
-    method @Deprecated public void onZoom(boolean);
-  }
-
-  @Deprecated public class ZoomControls extends android.widget.LinearLayout {
-    ctor @Deprecated public ZoomControls(android.content.Context);
-    ctor @Deprecated public ZoomControls(android.content.Context, android.util.AttributeSet);
-    method @Deprecated public void hide();
-    method @Deprecated public void setIsZoomInEnabled(boolean);
-    method @Deprecated public void setIsZoomOutEnabled(boolean);
-    method @Deprecated public void setOnZoomInClickListener(android.view.View.OnClickListener);
-    method @Deprecated public void setOnZoomOutClickListener(android.view.View.OnClickListener);
-    method @Deprecated public void setZoomSpeed(long);
-    method @Deprecated public void show();
-  }
-
-}
-
-package android.widget.inline {
-
-  public class InlineContentView extends android.view.ViewGroup {
-    method @Nullable public android.view.SurfaceControl getSurfaceControl();
-    method public boolean isZOrderedOnTop();
-    method public void onLayout(boolean, int, int, int, int);
-    method public void setSurfaceControlCallback(@Nullable android.widget.inline.InlineContentView.SurfaceControlCallback);
-    method public boolean setZOrderedOnTop(boolean);
-  }
-
-  public static interface InlineContentView.SurfaceControlCallback {
-    method public void onCreated(@NonNull android.view.SurfaceControl);
-    method public void onDestroyed(@NonNull android.view.SurfaceControl);
-  }
-
-  public final class InlinePresentationSpec implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.util.Size getMaxSize();
-    method @NonNull public android.util.Size getMinSize();
-    method @NonNull public android.os.Bundle getStyle();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.widget.inline.InlinePresentationSpec> CREATOR;
-  }
-
-  public static final class InlinePresentationSpec.Builder {
-    ctor public InlinePresentationSpec.Builder(@NonNull android.util.Size, @NonNull android.util.Size);
-    method @NonNull public android.widget.inline.InlinePresentationSpec build();
-    method @NonNull public android.widget.inline.InlinePresentationSpec.Builder setStyle(@NonNull android.os.Bundle);
-  }
-
-}
-
-package dalvik.annotation {
-
-  @Deprecated @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.ANNOTATION_TYPE}) public @interface TestTarget {
-    method @Deprecated public abstract String conceptName() default "";
-    method @Deprecated public abstract Class<?>[] methodArgs() default {};
-    method @Deprecated public abstract String methodName() default "";
-  }
-
-  @Deprecated @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE}) public @interface TestTargetClass {
-    method @Deprecated public abstract Class<?> value();
-  }
-
-}
-
-package dalvik.bytecode {
-
-  public final class OpcodeInfo {
-    field public static final int MAXIMUM_PACKED_VALUE;
-    field public static final int MAXIMUM_VALUE;
-  }
-
-  public interface Opcodes {
-    field public static final int OP_ADD_DOUBLE = 171; // 0xab
-    field public static final int OP_ADD_DOUBLE_2ADDR = 203; // 0xcb
-    field public static final int OP_ADD_FLOAT = 166; // 0xa6
-    field public static final int OP_ADD_FLOAT_2ADDR = 198; // 0xc6
-    field public static final int OP_ADD_INT = 144; // 0x90
-    field public static final int OP_ADD_INT_2ADDR = 176; // 0xb0
-    field public static final int OP_ADD_INT_LIT16 = 208; // 0xd0
-    field public static final int OP_ADD_INT_LIT8 = 216; // 0xd8
-    field public static final int OP_ADD_LONG = 155; // 0x9b
-    field public static final int OP_ADD_LONG_2ADDR = 187; // 0xbb
-    field public static final int OP_AGET = 68; // 0x44
-    field public static final int OP_AGET_BOOLEAN = 71; // 0x47
-    field public static final int OP_AGET_BYTE = 72; // 0x48
-    field public static final int OP_AGET_CHAR = 73; // 0x49
-    field public static final int OP_AGET_OBJECT = 70; // 0x46
-    field public static final int OP_AGET_SHORT = 74; // 0x4a
-    field public static final int OP_AGET_WIDE = 69; // 0x45
-    field public static final int OP_AND_INT = 149; // 0x95
-    field public static final int OP_AND_INT_2ADDR = 181; // 0xb5
-    field public static final int OP_AND_INT_LIT16 = 213; // 0xd5
-    field public static final int OP_AND_INT_LIT8 = 221; // 0xdd
-    field public static final int OP_AND_LONG = 160; // 0xa0
-    field public static final int OP_AND_LONG_2ADDR = 192; // 0xc0
-    field public static final int OP_APUT = 75; // 0x4b
-    field public static final int OP_APUT_BOOLEAN = 78; // 0x4e
-    field public static final int OP_APUT_BYTE = 79; // 0x4f
-    field public static final int OP_APUT_CHAR = 80; // 0x50
-    field public static final int OP_APUT_OBJECT = 77; // 0x4d
-    field public static final int OP_APUT_SHORT = 81; // 0x51
-    field public static final int OP_APUT_WIDE = 76; // 0x4c
-    field public static final int OP_ARRAY_LENGTH = 33; // 0x21
-    field @Deprecated public static final int OP_BREAKPOINT = 236; // 0xec
-    field public static final int OP_CHECK_CAST = 31; // 0x1f
-    field public static final int OP_CHECK_CAST_JUMBO = 511; // 0x1ff
-    field public static final int OP_CMPG_DOUBLE = 48; // 0x30
-    field public static final int OP_CMPG_FLOAT = 46; // 0x2e
-    field public static final int OP_CMPL_DOUBLE = 47; // 0x2f
-    field public static final int OP_CMPL_FLOAT = 45; // 0x2d
-    field public static final int OP_CMP_LONG = 49; // 0x31
-    field public static final int OP_CONST = 20; // 0x14
-    field public static final int OP_CONST_16 = 19; // 0x13
-    field public static final int OP_CONST_4 = 18; // 0x12
-    field public static final int OP_CONST_CLASS = 28; // 0x1c
-    field public static final int OP_CONST_CLASS_JUMBO = 255; // 0xff
-    field public static final int OP_CONST_HIGH16 = 21; // 0x15
-    field public static final int OP_CONST_METHOD_HANDLE = 254; // 0xfe
-    field public static final int OP_CONST_METHOD_TYPE = 255; // 0xff
-    field public static final int OP_CONST_STRING = 26; // 0x1a
-    field public static final int OP_CONST_STRING_JUMBO = 27; // 0x1b
-    field public static final int OP_CONST_WIDE = 24; // 0x18
-    field public static final int OP_CONST_WIDE_16 = 22; // 0x16
-    field public static final int OP_CONST_WIDE_32 = 23; // 0x17
-    field public static final int OP_CONST_WIDE_HIGH16 = 25; // 0x19
-    field public static final int OP_DIV_DOUBLE = 174; // 0xae
-    field public static final int OP_DIV_DOUBLE_2ADDR = 206; // 0xce
-    field public static final int OP_DIV_FLOAT = 169; // 0xa9
-    field public static final int OP_DIV_FLOAT_2ADDR = 201; // 0xc9
-    field public static final int OP_DIV_INT = 147; // 0x93
-    field public static final int OP_DIV_INT_2ADDR = 179; // 0xb3
-    field public static final int OP_DIV_INT_LIT16 = 211; // 0xd3
-    field public static final int OP_DIV_INT_LIT8 = 219; // 0xdb
-    field public static final int OP_DIV_LONG = 158; // 0x9e
-    field public static final int OP_DIV_LONG_2ADDR = 190; // 0xbe
-    field public static final int OP_DOUBLE_TO_FLOAT = 140; // 0x8c
-    field public static final int OP_DOUBLE_TO_INT = 138; // 0x8a
-    field public static final int OP_DOUBLE_TO_LONG = 139; // 0x8b
-    field @Deprecated public static final int OP_EXECUTE_INLINE = 238; // 0xee
-    field @Deprecated public static final int OP_EXECUTE_INLINE_RANGE = 239; // 0xef
-    field public static final int OP_FILLED_NEW_ARRAY = 36; // 0x24
-    field public static final int OP_FILLED_NEW_ARRAY_JUMBO = 1535; // 0x5ff
-    field public static final int OP_FILLED_NEW_ARRAY_RANGE = 37; // 0x25
-    field public static final int OP_FILL_ARRAY_DATA = 38; // 0x26
-    field public static final int OP_FLOAT_TO_DOUBLE = 137; // 0x89
-    field public static final int OP_FLOAT_TO_INT = 135; // 0x87
-    field public static final int OP_FLOAT_TO_LONG = 136; // 0x88
-    field public static final int OP_GOTO = 40; // 0x28
-    field public static final int OP_GOTO_16 = 41; // 0x29
-    field public static final int OP_GOTO_32 = 42; // 0x2a
-    field public static final int OP_IF_EQ = 50; // 0x32
-    field public static final int OP_IF_EQZ = 56; // 0x38
-    field public static final int OP_IF_GE = 53; // 0x35
-    field public static final int OP_IF_GEZ = 59; // 0x3b
-    field public static final int OP_IF_GT = 54; // 0x36
-    field public static final int OP_IF_GTZ = 60; // 0x3c
-    field public static final int OP_IF_LE = 55; // 0x37
-    field public static final int OP_IF_LEZ = 61; // 0x3d
-    field public static final int OP_IF_LT = 52; // 0x34
-    field public static final int OP_IF_LTZ = 58; // 0x3a
-    field public static final int OP_IF_NE = 51; // 0x33
-    field public static final int OP_IF_NEZ = 57; // 0x39
-    field public static final int OP_IGET = 82; // 0x52
-    field public static final int OP_IGET_BOOLEAN = 85; // 0x55
-    field public static final int OP_IGET_BOOLEAN_JUMBO = 2559; // 0x9ff
-    field public static final int OP_IGET_BYTE = 86; // 0x56
-    field public static final int OP_IGET_BYTE_JUMBO = 2815; // 0xaff
-    field public static final int OP_IGET_CHAR = 87; // 0x57
-    field public static final int OP_IGET_CHAR_JUMBO = 3071; // 0xbff
-    field public static final int OP_IGET_JUMBO = 1791; // 0x6ff
-    field public static final int OP_IGET_OBJECT = 84; // 0x54
-    field public static final int OP_IGET_OBJECT_JUMBO = 2303; // 0x8ff
-    field @Deprecated public static final int OP_IGET_OBJECT_QUICK = 244; // 0xf4
-    field @Deprecated public static final int OP_IGET_QUICK = 242; // 0xf2
-    field public static final int OP_IGET_SHORT = 88; // 0x58
-    field public static final int OP_IGET_SHORT_JUMBO = 3327; // 0xcff
-    field public static final int OP_IGET_WIDE = 83; // 0x53
-    field public static final int OP_IGET_WIDE_JUMBO = 2047; // 0x7ff
-    field @Deprecated public static final int OP_IGET_WIDE_QUICK = 243; // 0xf3
-    field @Deprecated public static final int OP_IGET_WIDE_VOLATILE = 232; // 0xe8
-    field public static final int OP_INSTANCE_OF = 32; // 0x20
-    field public static final int OP_INSTANCE_OF_JUMBO = 767; // 0x2ff
-    field public static final int OP_INT_TO_BYTE = 141; // 0x8d
-    field public static final int OP_INT_TO_CHAR = 142; // 0x8e
-    field public static final int OP_INT_TO_DOUBLE = 131; // 0x83
-    field public static final int OP_INT_TO_FLOAT = 130; // 0x82
-    field public static final int OP_INT_TO_LONG = 129; // 0x81
-    field public static final int OP_INT_TO_SHORT = 143; // 0x8f
-    field public static final int OP_INVOKE_CUSTOM = 252; // 0xfc
-    field public static final int OP_INVOKE_CUSTOM_RANGE = 253; // 0xfd
-    field public static final int OP_INVOKE_DIRECT = 112; // 0x70
-    field @Deprecated public static final int OP_INVOKE_DIRECT_EMPTY = 240; // 0xf0
-    field public static final int OP_INVOKE_DIRECT_JUMBO = 9471; // 0x24ff
-    field public static final int OP_INVOKE_DIRECT_RANGE = 118; // 0x76
-    field public static final int OP_INVOKE_INTERFACE = 114; // 0x72
-    field public static final int OP_INVOKE_INTERFACE_JUMBO = 9983; // 0x26ff
-    field public static final int OP_INVOKE_INTERFACE_RANGE = 120; // 0x78
-    field public static final int OP_INVOKE_POLYMORPHIC = 250; // 0xfa
-    field public static final int OP_INVOKE_POLYMORPHIC_RANGE = 251; // 0xfb
-    field public static final int OP_INVOKE_STATIC = 113; // 0x71
-    field public static final int OP_INVOKE_STATIC_JUMBO = 9727; // 0x25ff
-    field public static final int OP_INVOKE_STATIC_RANGE = 119; // 0x77
-    field public static final int OP_INVOKE_SUPER = 111; // 0x6f
-    field public static final int OP_INVOKE_SUPER_JUMBO = 9215; // 0x23ff
-    field @Deprecated public static final int OP_INVOKE_SUPER_QUICK = 250; // 0xfa
-    field @Deprecated public static final int OP_INVOKE_SUPER_QUICK_RANGE = 251; // 0xfb
-    field public static final int OP_INVOKE_SUPER_RANGE = 117; // 0x75
-    field public static final int OP_INVOKE_VIRTUAL = 110; // 0x6e
-    field public static final int OP_INVOKE_VIRTUAL_JUMBO = 8959; // 0x22ff
-    field @Deprecated public static final int OP_INVOKE_VIRTUAL_QUICK = 248; // 0xf8
-    field @Deprecated public static final int OP_INVOKE_VIRTUAL_QUICK_RANGE = 249; // 0xf9
-    field public static final int OP_INVOKE_VIRTUAL_RANGE = 116; // 0x74
-    field public static final int OP_IPUT = 89; // 0x59
-    field public static final int OP_IPUT_BOOLEAN = 92; // 0x5c
-    field public static final int OP_IPUT_BOOLEAN_JUMBO = 4351; // 0x10ff
-    field public static final int OP_IPUT_BYTE = 93; // 0x5d
-    field public static final int OP_IPUT_BYTE_JUMBO = 4607; // 0x11ff
-    field public static final int OP_IPUT_CHAR = 94; // 0x5e
-    field public static final int OP_IPUT_CHAR_JUMBO = 4863; // 0x12ff
-    field public static final int OP_IPUT_JUMBO = 3583; // 0xdff
-    field public static final int OP_IPUT_OBJECT = 91; // 0x5b
-    field public static final int OP_IPUT_OBJECT_JUMBO = 4095; // 0xfff
-    field @Deprecated public static final int OP_IPUT_OBJECT_QUICK = 247; // 0xf7
-    field @Deprecated public static final int OP_IPUT_QUICK = 245; // 0xf5
-    field public static final int OP_IPUT_SHORT = 95; // 0x5f
-    field public static final int OP_IPUT_SHORT_JUMBO = 5119; // 0x13ff
-    field public static final int OP_IPUT_WIDE = 90; // 0x5a
-    field public static final int OP_IPUT_WIDE_JUMBO = 3839; // 0xeff
-    field @Deprecated public static final int OP_IPUT_WIDE_QUICK = 246; // 0xf6
-    field @Deprecated public static final int OP_IPUT_WIDE_VOLATILE = 233; // 0xe9
-    field public static final int OP_LONG_TO_DOUBLE = 134; // 0x86
-    field public static final int OP_LONG_TO_FLOAT = 133; // 0x85
-    field public static final int OP_LONG_TO_INT = 132; // 0x84
-    field public static final int OP_MONITOR_ENTER = 29; // 0x1d
-    field public static final int OP_MONITOR_EXIT = 30; // 0x1e
-    field public static final int OP_MOVE = 1; // 0x1
-    field public static final int OP_MOVE_16 = 3; // 0x3
-    field public static final int OP_MOVE_EXCEPTION = 13; // 0xd
-    field public static final int OP_MOVE_FROM16 = 2; // 0x2
-    field public static final int OP_MOVE_OBJECT = 7; // 0x7
-    field public static final int OP_MOVE_OBJECT_16 = 9; // 0x9
-    field public static final int OP_MOVE_OBJECT_FROM16 = 8; // 0x8
-    field public static final int OP_MOVE_RESULT = 10; // 0xa
-    field public static final int OP_MOVE_RESULT_OBJECT = 12; // 0xc
-    field public static final int OP_MOVE_RESULT_WIDE = 11; // 0xb
-    field public static final int OP_MOVE_WIDE = 4; // 0x4
-    field public static final int OP_MOVE_WIDE_16 = 6; // 0x6
-    field public static final int OP_MOVE_WIDE_FROM16 = 5; // 0x5
-    field public static final int OP_MUL_DOUBLE = 173; // 0xad
-    field public static final int OP_MUL_DOUBLE_2ADDR = 205; // 0xcd
-    field public static final int OP_MUL_FLOAT = 168; // 0xa8
-    field public static final int OP_MUL_FLOAT_2ADDR = 200; // 0xc8
-    field public static final int OP_MUL_INT = 146; // 0x92
-    field public static final int OP_MUL_INT_2ADDR = 178; // 0xb2
-    field public static final int OP_MUL_INT_LIT16 = 210; // 0xd2
-    field public static final int OP_MUL_INT_LIT8 = 218; // 0xda
-    field public static final int OP_MUL_LONG = 157; // 0x9d
-    field public static final int OP_MUL_LONG_2ADDR = 189; // 0xbd
-    field public static final int OP_NEG_DOUBLE = 128; // 0x80
-    field public static final int OP_NEG_FLOAT = 127; // 0x7f
-    field public static final int OP_NEG_INT = 123; // 0x7b
-    field public static final int OP_NEG_LONG = 125; // 0x7d
-    field public static final int OP_NEW_ARRAY = 35; // 0x23
-    field public static final int OP_NEW_ARRAY_JUMBO = 1279; // 0x4ff
-    field public static final int OP_NEW_INSTANCE = 34; // 0x22
-    field public static final int OP_NEW_INSTANCE_JUMBO = 1023; // 0x3ff
-    field public static final int OP_NOP = 0; // 0x0
-    field public static final int OP_NOT_INT = 124; // 0x7c
-    field public static final int OP_NOT_LONG = 126; // 0x7e
-    field public static final int OP_OR_INT = 150; // 0x96
-    field public static final int OP_OR_INT_2ADDR = 182; // 0xb6
-    field public static final int OP_OR_INT_LIT16 = 214; // 0xd6
-    field public static final int OP_OR_INT_LIT8 = 222; // 0xde
-    field public static final int OP_OR_LONG = 161; // 0xa1
-    field public static final int OP_OR_LONG_2ADDR = 193; // 0xc1
-    field public static final int OP_PACKED_SWITCH = 43; // 0x2b
-    field public static final int OP_REM_DOUBLE = 175; // 0xaf
-    field public static final int OP_REM_DOUBLE_2ADDR = 207; // 0xcf
-    field public static final int OP_REM_FLOAT = 170; // 0xaa
-    field public static final int OP_REM_FLOAT_2ADDR = 202; // 0xca
-    field public static final int OP_REM_INT = 148; // 0x94
-    field public static final int OP_REM_INT_2ADDR = 180; // 0xb4
-    field public static final int OP_REM_INT_LIT16 = 212; // 0xd4
-    field public static final int OP_REM_INT_LIT8 = 220; // 0xdc
-    field public static final int OP_REM_LONG = 159; // 0x9f
-    field public static final int OP_REM_LONG_2ADDR = 191; // 0xbf
-    field public static final int OP_RETURN = 15; // 0xf
-    field public static final int OP_RETURN_OBJECT = 17; // 0x11
-    field public static final int OP_RETURN_VOID = 14; // 0xe
-    field public static final int OP_RETURN_WIDE = 16; // 0x10
-    field public static final int OP_RSUB_INT = 209; // 0xd1
-    field public static final int OP_RSUB_INT_LIT8 = 217; // 0xd9
-    field public static final int OP_SGET = 96; // 0x60
-    field public static final int OP_SGET_BOOLEAN = 99; // 0x63
-    field public static final int OP_SGET_BOOLEAN_JUMBO = 6143; // 0x17ff
-    field public static final int OP_SGET_BYTE = 100; // 0x64
-    field public static final int OP_SGET_BYTE_JUMBO = 6399; // 0x18ff
-    field public static final int OP_SGET_CHAR = 101; // 0x65
-    field public static final int OP_SGET_CHAR_JUMBO = 6655; // 0x19ff
-    field public static final int OP_SGET_JUMBO = 5375; // 0x14ff
-    field public static final int OP_SGET_OBJECT = 98; // 0x62
-    field public static final int OP_SGET_OBJECT_JUMBO = 5887; // 0x16ff
-    field public static final int OP_SGET_SHORT = 102; // 0x66
-    field public static final int OP_SGET_SHORT_JUMBO = 6911; // 0x1aff
-    field public static final int OP_SGET_WIDE = 97; // 0x61
-    field public static final int OP_SGET_WIDE_JUMBO = 5631; // 0x15ff
-    field @Deprecated public static final int OP_SGET_WIDE_VOLATILE = 234; // 0xea
-    field public static final int OP_SHL_INT = 152; // 0x98
-    field public static final int OP_SHL_INT_2ADDR = 184; // 0xb8
-    field public static final int OP_SHL_INT_LIT8 = 224; // 0xe0
-    field public static final int OP_SHL_LONG = 163; // 0xa3
-    field public static final int OP_SHL_LONG_2ADDR = 195; // 0xc3
-    field public static final int OP_SHR_INT = 153; // 0x99
-    field public static final int OP_SHR_INT_2ADDR = 185; // 0xb9
-    field public static final int OP_SHR_INT_LIT8 = 225; // 0xe1
-    field public static final int OP_SHR_LONG = 164; // 0xa4
-    field public static final int OP_SHR_LONG_2ADDR = 196; // 0xc4
-    field public static final int OP_SPARSE_SWITCH = 44; // 0x2c
-    field public static final int OP_SPUT = 103; // 0x67
-    field public static final int OP_SPUT_BOOLEAN = 106; // 0x6a
-    field public static final int OP_SPUT_BOOLEAN_JUMBO = 7935; // 0x1eff
-    field public static final int OP_SPUT_BYTE = 107; // 0x6b
-    field public static final int OP_SPUT_BYTE_JUMBO = 8191; // 0x1fff
-    field public static final int OP_SPUT_CHAR = 108; // 0x6c
-    field public static final int OP_SPUT_CHAR_JUMBO = 8447; // 0x20ff
-    field public static final int OP_SPUT_JUMBO = 7167; // 0x1bff
-    field public static final int OP_SPUT_OBJECT = 105; // 0x69
-    field public static final int OP_SPUT_OBJECT_JUMBO = 7679; // 0x1dff
-    field public static final int OP_SPUT_SHORT = 109; // 0x6d
-    field public static final int OP_SPUT_SHORT_JUMBO = 8703; // 0x21ff
-    field public static final int OP_SPUT_WIDE = 104; // 0x68
-    field public static final int OP_SPUT_WIDE_JUMBO = 7423; // 0x1cff
-    field @Deprecated public static final int OP_SPUT_WIDE_VOLATILE = 235; // 0xeb
-    field public static final int OP_SUB_DOUBLE = 172; // 0xac
-    field public static final int OP_SUB_DOUBLE_2ADDR = 204; // 0xcc
-    field public static final int OP_SUB_FLOAT = 167; // 0xa7
-    field public static final int OP_SUB_FLOAT_2ADDR = 199; // 0xc7
-    field public static final int OP_SUB_INT = 145; // 0x91
-    field public static final int OP_SUB_INT_2ADDR = 177; // 0xb1
-    field public static final int OP_SUB_LONG = 156; // 0x9c
-    field public static final int OP_SUB_LONG_2ADDR = 188; // 0xbc
-    field public static final int OP_THROW = 39; // 0x27
-    field @Deprecated public static final int OP_THROW_VERIFICATION_ERROR = 237; // 0xed
-    field public static final int OP_USHR_INT = 154; // 0x9a
-    field public static final int OP_USHR_INT_2ADDR = 186; // 0xba
-    field public static final int OP_USHR_INT_LIT8 = 226; // 0xe2
-    field public static final int OP_USHR_LONG = 165; // 0xa5
-    field public static final int OP_USHR_LONG_2ADDR = 197; // 0xc5
-    field public static final int OP_XOR_INT = 151; // 0x97
-    field public static final int OP_XOR_INT_2ADDR = 183; // 0xb7
-    field public static final int OP_XOR_INT_LIT16 = 215; // 0xd7
-    field public static final int OP_XOR_INT_LIT8 = 223; // 0xdf
-    field public static final int OP_XOR_LONG = 162; // 0xa2
-    field public static final int OP_XOR_LONG_2ADDR = 194; // 0xc2
-  }
-
-}
-
-package dalvik.system {
-
-  public class BaseDexClassLoader extends java.lang.ClassLoader {
-    ctor public BaseDexClassLoader(String, java.io.File, String, ClassLoader);
-    method public String findLibrary(String);
-    method protected java.util.Enumeration<java.net.URL> findResources(String);
-  }
-
-  public final class DelegateLastClassLoader extends dalvik.system.PathClassLoader {
-    ctor public DelegateLastClassLoader(String, ClassLoader);
-    ctor public DelegateLastClassLoader(String, String, ClassLoader);
-    ctor public DelegateLastClassLoader(@NonNull String, @Nullable String, @Nullable ClassLoader, boolean);
-  }
-
-  public class DexClassLoader extends dalvik.system.BaseDexClassLoader {
-    ctor public DexClassLoader(String, String, String, ClassLoader);
-  }
-
-  @Deprecated public final class DexFile {
-    ctor @Deprecated public DexFile(java.io.File) throws java.io.IOException;
-    ctor @Deprecated public DexFile(String) throws java.io.IOException;
-    method @Deprecated public void close() throws java.io.IOException;
-    method @Deprecated public java.util.Enumeration<java.lang.String> entries();
-    method @Deprecated public String getName();
-    method @Deprecated public static boolean isDexOptNeeded(String) throws java.io.FileNotFoundException, java.io.IOException;
-    method @Deprecated public Class loadClass(String, ClassLoader);
-    method @Deprecated public static dalvik.system.DexFile loadDex(String, String, int) throws java.io.IOException;
-  }
-
-  public final class InMemoryDexClassLoader extends dalvik.system.BaseDexClassLoader {
-    ctor public InMemoryDexClassLoader(@NonNull java.nio.ByteBuffer[], @Nullable String, @Nullable ClassLoader);
-    ctor public InMemoryDexClassLoader(@NonNull java.nio.ByteBuffer[], @Nullable ClassLoader);
-    ctor public InMemoryDexClassLoader(@NonNull java.nio.ByteBuffer, @Nullable ClassLoader);
-  }
-
-  public class PathClassLoader extends dalvik.system.BaseDexClassLoader {
-    ctor public PathClassLoader(String, ClassLoader);
-    ctor public PathClassLoader(String, String, ClassLoader);
-  }
-
-}
-
-package java.awt.font {
-
-  public final class NumericShaper implements java.io.Serializable {
-    method public static java.awt.font.NumericShaper getContextualShaper(int);
-    method public static java.awt.font.NumericShaper getContextualShaper(java.util.Set<java.awt.font.NumericShaper.Range>);
-    method public static java.awt.font.NumericShaper getContextualShaper(int, int);
-    method public static java.awt.font.NumericShaper getContextualShaper(java.util.Set<java.awt.font.NumericShaper.Range>, java.awt.font.NumericShaper.Range);
-    method public java.util.Set<java.awt.font.NumericShaper.Range> getRangeSet();
-    method public int getRanges();
-    method public static java.awt.font.NumericShaper getShaper(int);
-    method public static java.awt.font.NumericShaper getShaper(java.awt.font.NumericShaper.Range);
-    method public boolean isContextual();
-    method public void shape(char[], int, int);
-    method public void shape(char[], int, int, int);
-    method public void shape(char[], int, int, java.awt.font.NumericShaper.Range);
-    field public static final int ALL_RANGES = 524287; // 0x7ffff
-    field public static final int ARABIC = 2; // 0x2
-    field public static final int BENGALI = 16; // 0x10
-    field public static final int DEVANAGARI = 8; // 0x8
-    field public static final int EASTERN_ARABIC = 4; // 0x4
-    field public static final int ETHIOPIC = 65536; // 0x10000
-    field public static final int EUROPEAN = 1; // 0x1
-    field public static final int GUJARATI = 64; // 0x40
-    field public static final int GURMUKHI = 32; // 0x20
-    field public static final int KANNADA = 1024; // 0x400
-    field public static final int KHMER = 131072; // 0x20000
-    field public static final int LAO = 8192; // 0x2000
-    field public static final int MALAYALAM = 2048; // 0x800
-    field public static final int MONGOLIAN = 262144; // 0x40000
-    field public static final int MYANMAR = 32768; // 0x8000
-    field public static final int ORIYA = 128; // 0x80
-    field public static final int TAMIL = 256; // 0x100
-    field public static final int TELUGU = 512; // 0x200
-    field public static final int THAI = 4096; // 0x1000
-    field public static final int TIBETAN = 16384; // 0x4000
-  }
-
-  public enum NumericShaper.Range {
-    enum_constant public static final java.awt.font.NumericShaper.Range ARABIC;
-    enum_constant public static final java.awt.font.NumericShaper.Range BALINESE;
-    enum_constant public static final java.awt.font.NumericShaper.Range BENGALI;
-    enum_constant public static final java.awt.font.NumericShaper.Range CHAM;
-    enum_constant public static final java.awt.font.NumericShaper.Range DEVANAGARI;
-    enum_constant public static final java.awt.font.NumericShaper.Range EASTERN_ARABIC;
-    enum_constant public static final java.awt.font.NumericShaper.Range ETHIOPIC;
-    enum_constant public static final java.awt.font.NumericShaper.Range EUROPEAN;
-    enum_constant public static final java.awt.font.NumericShaper.Range GUJARATI;
-    enum_constant public static final java.awt.font.NumericShaper.Range GURMUKHI;
-    enum_constant public static final java.awt.font.NumericShaper.Range JAVANESE;
-    enum_constant public static final java.awt.font.NumericShaper.Range KANNADA;
-    enum_constant public static final java.awt.font.NumericShaper.Range KAYAH_LI;
-    enum_constant public static final java.awt.font.NumericShaper.Range KHMER;
-    enum_constant public static final java.awt.font.NumericShaper.Range LAO;
-    enum_constant public static final java.awt.font.NumericShaper.Range LEPCHA;
-    enum_constant public static final java.awt.font.NumericShaper.Range LIMBU;
-    enum_constant public static final java.awt.font.NumericShaper.Range MALAYALAM;
-    enum_constant public static final java.awt.font.NumericShaper.Range MEETEI_MAYEK;
-    enum_constant public static final java.awt.font.NumericShaper.Range MONGOLIAN;
-    enum_constant public static final java.awt.font.NumericShaper.Range MYANMAR;
-    enum_constant public static final java.awt.font.NumericShaper.Range MYANMAR_SHAN;
-    enum_constant public static final java.awt.font.NumericShaper.Range NEW_TAI_LUE;
-    enum_constant public static final java.awt.font.NumericShaper.Range NKO;
-    enum_constant public static final java.awt.font.NumericShaper.Range OL_CHIKI;
-    enum_constant public static final java.awt.font.NumericShaper.Range ORIYA;
-    enum_constant public static final java.awt.font.NumericShaper.Range SAURASHTRA;
-    enum_constant public static final java.awt.font.NumericShaper.Range SUNDANESE;
-    enum_constant public static final java.awt.font.NumericShaper.Range TAI_THAM_HORA;
-    enum_constant public static final java.awt.font.NumericShaper.Range TAI_THAM_THAM;
-    enum_constant public static final java.awt.font.NumericShaper.Range TAMIL;
-    enum_constant public static final java.awt.font.NumericShaper.Range TELUGU;
-    enum_constant public static final java.awt.font.NumericShaper.Range THAI;
-    enum_constant public static final java.awt.font.NumericShaper.Range TIBETAN;
-    enum_constant public static final java.awt.font.NumericShaper.Range VAI;
-  }
-
-  public final class TextAttribute extends java.text.AttributedCharacterIterator.Attribute {
-    ctor protected TextAttribute(String);
-    field public static final java.awt.font.TextAttribute BACKGROUND;
-    field public static final java.awt.font.TextAttribute BIDI_EMBEDDING;
-    field public static final java.awt.font.TextAttribute CHAR_REPLACEMENT;
-    field public static final java.awt.font.TextAttribute FAMILY;
-    field public static final java.awt.font.TextAttribute FONT;
-    field public static final java.awt.font.TextAttribute FOREGROUND;
-    field public static final java.awt.font.TextAttribute INPUT_METHOD_HIGHLIGHT;
-    field public static final java.awt.font.TextAttribute INPUT_METHOD_UNDERLINE;
-    field public static final java.awt.font.TextAttribute JUSTIFICATION;
-    field public static final Float JUSTIFICATION_FULL;
-    field public static final Float JUSTIFICATION_NONE;
-    field public static final java.awt.font.TextAttribute KERNING;
-    field public static final Integer KERNING_ON;
-    field public static final java.awt.font.TextAttribute LIGATURES;
-    field public static final Integer LIGATURES_ON;
-    field public static final java.awt.font.TextAttribute NUMERIC_SHAPING;
-    field public static final java.awt.font.TextAttribute POSTURE;
-    field public static final Float POSTURE_OBLIQUE;
-    field public static final Float POSTURE_REGULAR;
-    field public static final java.awt.font.TextAttribute RUN_DIRECTION;
-    field public static final Boolean RUN_DIRECTION_LTR;
-    field public static final Boolean RUN_DIRECTION_RTL;
-    field public static final java.awt.font.TextAttribute SIZE;
-    field public static final java.awt.font.TextAttribute STRIKETHROUGH;
-    field public static final Boolean STRIKETHROUGH_ON;
-    field public static final java.awt.font.TextAttribute SUPERSCRIPT;
-    field public static final Integer SUPERSCRIPT_SUB;
-    field public static final Integer SUPERSCRIPT_SUPER;
-    field public static final java.awt.font.TextAttribute SWAP_COLORS;
-    field public static final Boolean SWAP_COLORS_ON;
-    field public static final java.awt.font.TextAttribute TRACKING;
-    field public static final Float TRACKING_LOOSE;
-    field public static final Float TRACKING_TIGHT;
-    field public static final java.awt.font.TextAttribute TRANSFORM;
-    field public static final java.awt.font.TextAttribute UNDERLINE;
-    field public static final Integer UNDERLINE_LOW_DASHED;
-    field public static final Integer UNDERLINE_LOW_DOTTED;
-    field public static final Integer UNDERLINE_LOW_GRAY;
-    field public static final Integer UNDERLINE_LOW_ONE_PIXEL;
-    field public static final Integer UNDERLINE_LOW_TWO_PIXEL;
-    field public static final Integer UNDERLINE_ON;
-    field public static final java.awt.font.TextAttribute WEIGHT;
-    field public static final Float WEIGHT_BOLD;
-    field public static final Float WEIGHT_DEMIBOLD;
-    field public static final Float WEIGHT_DEMILIGHT;
-    field public static final Float WEIGHT_EXTRABOLD;
-    field public static final Float WEIGHT_EXTRA_LIGHT;
-    field public static final Float WEIGHT_HEAVY;
-    field public static final Float WEIGHT_LIGHT;
-    field public static final Float WEIGHT_MEDIUM;
-    field public static final Float WEIGHT_REGULAR;
-    field public static final Float WEIGHT_SEMIBOLD;
-    field public static final Float WEIGHT_ULTRABOLD;
-    field public static final java.awt.font.TextAttribute WIDTH;
-    field public static final Float WIDTH_CONDENSED;
-    field public static final Float WIDTH_EXTENDED;
-    field public static final Float WIDTH_REGULAR;
-    field public static final Float WIDTH_SEMI_CONDENSED;
-    field public static final Float WIDTH_SEMI_EXTENDED;
-  }
-
-}
-
-package java.beans {
-
-  public class IndexedPropertyChangeEvent extends java.beans.PropertyChangeEvent {
-    ctor public IndexedPropertyChangeEvent(Object, String, Object, Object, int);
-    method public int getIndex();
-  }
-
-  public class PropertyChangeEvent extends java.util.EventObject {
-    ctor public PropertyChangeEvent(Object, String, Object, Object);
-    method public Object getNewValue();
-    method public Object getOldValue();
-    method public Object getPropagationId();
-    method public String getPropertyName();
-    method public void setPropagationId(Object);
-  }
-
-  public interface PropertyChangeListener extends java.util.EventListener {
-    method public void propertyChange(java.beans.PropertyChangeEvent);
-  }
-
-  public class PropertyChangeListenerProxy extends java.util.EventListenerProxy<java.beans.PropertyChangeListener> implements java.beans.PropertyChangeListener {
-    ctor public PropertyChangeListenerProxy(String, java.beans.PropertyChangeListener);
-    method public String getPropertyName();
-    method public void propertyChange(java.beans.PropertyChangeEvent);
-  }
-
-  public class PropertyChangeSupport implements java.io.Serializable {
-    ctor public PropertyChangeSupport(Object);
-    method public void addPropertyChangeListener(java.beans.PropertyChangeListener);
-    method public void addPropertyChangeListener(String, java.beans.PropertyChangeListener);
-    method public void fireIndexedPropertyChange(String, int, Object, Object);
-    method public void fireIndexedPropertyChange(String, int, int, int);
-    method public void fireIndexedPropertyChange(String, int, boolean, boolean);
-    method public void firePropertyChange(String, Object, Object);
-    method public void firePropertyChange(String, int, int);
-    method public void firePropertyChange(String, boolean, boolean);
-    method public void firePropertyChange(java.beans.PropertyChangeEvent);
-    method public java.beans.PropertyChangeListener[] getPropertyChangeListeners();
-    method public java.beans.PropertyChangeListener[] getPropertyChangeListeners(String);
-    method public boolean hasListeners(String);
-    method public void removePropertyChangeListener(java.beans.PropertyChangeListener);
-    method public void removePropertyChangeListener(String, java.beans.PropertyChangeListener);
-  }
-
-}
-
-package java.io {
-
-  public class BufferedInputStream extends java.io.FilterInputStream {
-    ctor public BufferedInputStream(java.io.InputStream);
-    ctor public BufferedInputStream(java.io.InputStream, int);
-    field protected volatile byte[] buf;
-    field protected int count;
-    field protected int marklimit;
-    field protected int markpos;
-    field protected int pos;
-  }
-
-  public class BufferedOutputStream extends java.io.FilterOutputStream {
-    ctor public BufferedOutputStream(java.io.OutputStream);
-    ctor public BufferedOutputStream(java.io.OutputStream, int);
-    field protected byte[] buf;
-    field protected int count;
-  }
-
-  public class BufferedReader extends java.io.Reader {
-    ctor public BufferedReader(java.io.Reader, int);
-    ctor public BufferedReader(java.io.Reader);
-    method public void close() throws java.io.IOException;
-    method public java.util.stream.Stream<java.lang.String> lines();
-    method public int read(char[], int, int) throws java.io.IOException;
-    method public String readLine() throws java.io.IOException;
-  }
-
-  public class BufferedWriter extends java.io.Writer {
-    ctor public BufferedWriter(java.io.Writer);
-    ctor public BufferedWriter(java.io.Writer, int);
-    method public void close() throws java.io.IOException;
-    method public void flush() throws java.io.IOException;
-    method public void newLine() throws java.io.IOException;
-    method public void write(char[], int, int) throws java.io.IOException;
-  }
-
-  public class ByteArrayInputStream extends java.io.InputStream {
-    ctor public ByteArrayInputStream(byte[]);
-    ctor public ByteArrayInputStream(byte[], int, int);
-    method public int available();
-    method public int read();
-    method public int read(byte[], int, int);
-    method public void reset();
-    method public long skip(long);
-    field protected byte[] buf;
-    field protected int count;
-    field protected int mark;
-    field protected int pos;
-  }
-
-  public class ByteArrayOutputStream extends java.io.OutputStream {
-    ctor public ByteArrayOutputStream();
-    ctor public ByteArrayOutputStream(int);
-    method public void reset();
-    method public int size();
-    method @NonNull public byte[] toByteArray();
-    method @NonNull public String toString(@NonNull String) throws java.io.UnsupportedEncodingException;
-    method @Deprecated @NonNull public String toString(int);
-    method public void write(int);
-    method public void write(@NonNull byte[], int, int);
-    method public void writeTo(@NonNull java.io.OutputStream) throws java.io.IOException;
-    field @NonNull protected byte[] buf;
-    field protected int count;
-  }
-
-  public class CharArrayReader extends java.io.Reader {
-    ctor public CharArrayReader(char[]);
-    ctor public CharArrayReader(char[], int, int);
-    method public void close();
-    method public int read(char[], int, int) throws java.io.IOException;
-    field protected char[] buf;
-    field protected int count;
-    field protected int markedPos;
-    field protected int pos;
-  }
-
-  public class CharArrayWriter extends java.io.Writer {
-    ctor public CharArrayWriter();
-    ctor public CharArrayWriter(int);
-    method public java.io.CharArrayWriter append(CharSequence);
-    method public java.io.CharArrayWriter append(CharSequence, int, int);
-    method public java.io.CharArrayWriter append(char);
-    method public void close();
-    method public void flush();
-    method public void reset();
-    method public int size();
-    method public char[] toCharArray();
-    method public void write(int);
-    method public void write(char[], int, int);
-    method public void write(String, int, int);
-    method public void writeTo(java.io.Writer) throws java.io.IOException;
-    field protected char[] buf;
-    field protected int count;
-  }
-
-  public class CharConversionException extends java.io.IOException {
-    ctor public CharConversionException();
-    ctor public CharConversionException(String);
-  }
-
-  public interface Closeable extends java.lang.AutoCloseable {
-    method public void close() throws java.io.IOException;
-  }
-
-  public final class Console implements java.io.Flushable {
-    method public void flush();
-    method public java.io.Console format(String, java.lang.Object...);
-    method public java.io.Console printf(String, java.lang.Object...);
-    method public String readLine(String, java.lang.Object...);
-    method public String readLine();
-    method public char[] readPassword(String, java.lang.Object...);
-    method public char[] readPassword();
-    method public java.io.Reader reader();
-    method public java.io.PrintWriter writer();
-  }
-
-  public interface DataInput {
-    method public boolean readBoolean() throws java.io.IOException;
-    method public byte readByte() throws java.io.IOException;
-    method public char readChar() throws java.io.IOException;
-    method public double readDouble() throws java.io.IOException;
-    method public float readFloat() throws java.io.IOException;
-    method public void readFully(byte[]) throws java.io.IOException;
-    method public void readFully(byte[], int, int) throws java.io.IOException;
-    method public int readInt() throws java.io.IOException;
-    method public String readLine() throws java.io.IOException;
-    method public long readLong() throws java.io.IOException;
-    method public short readShort() throws java.io.IOException;
-    method public String readUTF() throws java.io.IOException;
-    method public int readUnsignedByte() throws java.io.IOException;
-    method public int readUnsignedShort() throws java.io.IOException;
-    method public int skipBytes(int) throws java.io.IOException;
-  }
-
-  public class DataInputStream extends java.io.FilterInputStream implements java.io.DataInput {
-    ctor public DataInputStream(java.io.InputStream);
-    method public final int read(byte[]) throws java.io.IOException;
-    method public final int read(byte[], int, int) throws java.io.IOException;
-    method public final boolean readBoolean() throws java.io.IOException;
-    method public final byte readByte() throws java.io.IOException;
-    method public final char readChar() throws java.io.IOException;
-    method public final double readDouble() throws java.io.IOException;
-    method public final float readFloat() throws java.io.IOException;
-    method public final void readFully(byte[]) throws java.io.IOException;
-    method public final void readFully(byte[], int, int) throws java.io.IOException;
-    method public final int readInt() throws java.io.IOException;
-    method @Deprecated public final String readLine() throws java.io.IOException;
-    method public final long readLong() throws java.io.IOException;
-    method public final short readShort() throws java.io.IOException;
-    method public final String readUTF() throws java.io.IOException;
-    method public static final String readUTF(java.io.DataInput) throws java.io.IOException;
-    method public final int readUnsignedByte() throws java.io.IOException;
-    method public final int readUnsignedShort() throws java.io.IOException;
-    method public final int skipBytes(int) throws java.io.IOException;
-  }
-
-  public interface DataOutput {
-    method public void write(int) throws java.io.IOException;
-    method public void write(byte[]) throws java.io.IOException;
-    method public void write(byte[], int, int) throws java.io.IOException;
-    method public void writeBoolean(boolean) throws java.io.IOException;
-    method public void writeByte(int) throws java.io.IOException;
-    method public void writeBytes(String) throws java.io.IOException;
-    method public void writeChar(int) throws java.io.IOException;
-    method public void writeChars(String) throws java.io.IOException;
-    method public void writeDouble(double) throws java.io.IOException;
-    method public void writeFloat(float) throws java.io.IOException;
-    method public void writeInt(int) throws java.io.IOException;
-    method public void writeLong(long) throws java.io.IOException;
-    method public void writeShort(int) throws java.io.IOException;
-    method public void writeUTF(String) throws java.io.IOException;
-  }
-
-  public class DataOutputStream extends java.io.FilterOutputStream implements java.io.DataOutput {
-    ctor public DataOutputStream(java.io.OutputStream);
-    method public final int size();
-    method public final void writeBoolean(boolean) throws java.io.IOException;
-    method public final void writeByte(int) throws java.io.IOException;
-    method public final void writeBytes(String) throws java.io.IOException;
-    method public final void writeChar(int) throws java.io.IOException;
-    method public final void writeChars(String) throws java.io.IOException;
-    method public final void writeDouble(double) throws java.io.IOException;
-    method public final void writeFloat(float) throws java.io.IOException;
-    method public final void writeInt(int) throws java.io.IOException;
-    method public final void writeLong(long) throws java.io.IOException;
-    method public final void writeShort(int) throws java.io.IOException;
-    method public final void writeUTF(String) throws java.io.IOException;
-    field protected int written;
-  }
-
-  public class EOFException extends java.io.IOException {
-    ctor public EOFException();
-    ctor public EOFException(String);
-  }
-
-  public interface Externalizable extends java.io.Serializable {
-    method public void readExternal(java.io.ObjectInput) throws java.lang.ClassNotFoundException, java.io.IOException;
-    method public void writeExternal(java.io.ObjectOutput) throws java.io.IOException;
-  }
-
-  public class File implements java.lang.Comparable<java.io.File> java.io.Serializable {
-    ctor public File(@NonNull String);
-    ctor public File(@Nullable String, @NonNull String);
-    ctor public File(@Nullable java.io.File, @NonNull String);
-    ctor public File(@NonNull java.net.URI);
-    method public boolean canExecute();
-    method public boolean canRead();
-    method public boolean canWrite();
-    method public int compareTo(@NonNull java.io.File);
-    method public boolean createNewFile() throws java.io.IOException;
-    method @NonNull public static java.io.File createTempFile(@NonNull String, @Nullable String, @Nullable java.io.File) throws java.io.IOException;
-    method @NonNull public static java.io.File createTempFile(@NonNull String, @Nullable String) throws java.io.IOException;
-    method public boolean delete();
-    method public void deleteOnExit();
-    method public boolean exists();
-    method @NonNull public java.io.File getAbsoluteFile();
-    method @NonNull public String getAbsolutePath();
-    method @NonNull public java.io.File getCanonicalFile() throws java.io.IOException;
-    method @NonNull public String getCanonicalPath() throws java.io.IOException;
-    method public long getFreeSpace();
-    method @NonNull public String getName();
-    method @Nullable public String getParent();
-    method @Nullable public java.io.File getParentFile();
-    method @NonNull public String getPath();
-    method public long getTotalSpace();
-    method public long getUsableSpace();
-    method public boolean isAbsolute();
-    method public boolean isDirectory();
-    method public boolean isFile();
-    method public boolean isHidden();
-    method public long lastModified();
-    method public long length();
-    method @Nullable public String[] list();
-    method @Nullable public String[] list(@Nullable java.io.FilenameFilter);
-    method @Nullable public java.io.File[] listFiles();
-    method @Nullable public java.io.File[] listFiles(@Nullable java.io.FilenameFilter);
-    method @Nullable public java.io.File[] listFiles(@Nullable java.io.FileFilter);
-    method @NonNull public static java.io.File[] listRoots();
-    method public boolean mkdir();
-    method public boolean mkdirs();
-    method public boolean renameTo(@NonNull java.io.File);
-    method public boolean setExecutable(boolean, boolean);
-    method public boolean setExecutable(boolean);
-    method public boolean setLastModified(long);
-    method public boolean setReadOnly();
-    method public boolean setReadable(boolean, boolean);
-    method public boolean setReadable(boolean);
-    method public boolean setWritable(boolean, boolean);
-    method public boolean setWritable(boolean);
-    method @NonNull public java.nio.file.Path toPath();
-    method @NonNull public java.net.URI toURI();
-    method @Deprecated @NonNull public java.net.URL toURL() throws java.net.MalformedURLException;
-    field @NonNull public static final String pathSeparator;
-    field public static final char pathSeparatorChar;
-    field @NonNull public static final String separator;
-    field public static final char separatorChar;
-  }
-
-  public final class FileDescriptor {
-    ctor public FileDescriptor();
-    method public void sync() throws java.io.SyncFailedException;
-    method public boolean valid();
-    field public static final java.io.FileDescriptor err;
-    field public static final java.io.FileDescriptor in;
-    field public static final java.io.FileDescriptor out;
-  }
-
-  @java.lang.FunctionalInterface public interface FileFilter {
-    method public boolean accept(java.io.File);
-  }
-
-  public class FileInputStream extends java.io.InputStream {
-    ctor public FileInputStream(String) throws java.io.FileNotFoundException;
-    ctor public FileInputStream(java.io.File) throws java.io.FileNotFoundException;
-    ctor public FileInputStream(java.io.FileDescriptor);
-    method protected void finalize() throws java.io.IOException;
-    method public java.nio.channels.FileChannel getChannel();
-    method public final java.io.FileDescriptor getFD() throws java.io.IOException;
-    method public int read() throws java.io.IOException;
-  }
-
-  public class FileNotFoundException extends java.io.IOException {
-    ctor public FileNotFoundException();
-    ctor public FileNotFoundException(String);
-  }
-
-  public class FileOutputStream extends java.io.OutputStream {
-    ctor public FileOutputStream(String) throws java.io.FileNotFoundException;
-    ctor public FileOutputStream(String, boolean) throws java.io.FileNotFoundException;
-    ctor public FileOutputStream(java.io.File) throws java.io.FileNotFoundException;
-    ctor public FileOutputStream(java.io.File, boolean) throws java.io.FileNotFoundException;
-    ctor public FileOutputStream(java.io.FileDescriptor);
-    method protected void finalize() throws java.io.IOException;
-    method public java.nio.channels.FileChannel getChannel();
-    method public final java.io.FileDescriptor getFD() throws java.io.IOException;
-    method public void write(int) throws java.io.IOException;
-  }
-
-  public final class FilePermission extends java.security.Permission implements java.io.Serializable {
-    ctor public FilePermission(String, String);
-    method public String getActions();
-    method public boolean implies(java.security.Permission);
-  }
-
-  public class FileReader extends java.io.InputStreamReader {
-    ctor public FileReader(String) throws java.io.FileNotFoundException;
-    ctor public FileReader(java.io.File) throws java.io.FileNotFoundException;
-    ctor public FileReader(java.io.FileDescriptor);
-  }
-
-  public class FileWriter extends java.io.OutputStreamWriter {
-    ctor public FileWriter(String) throws java.io.IOException;
-    ctor public FileWriter(String, boolean) throws java.io.IOException;
-    ctor public FileWriter(java.io.File) throws java.io.IOException;
-    ctor public FileWriter(java.io.File, boolean) throws java.io.IOException;
-    ctor public FileWriter(java.io.FileDescriptor);
-  }
-
-  @java.lang.FunctionalInterface public interface FilenameFilter {
-    method public boolean accept(java.io.File, String);
-  }
-
-  public class FilterInputStream extends java.io.InputStream {
-    ctor protected FilterInputStream(java.io.InputStream);
-    method public int read() throws java.io.IOException;
-    field protected volatile java.io.InputStream in;
-  }
-
-  public class FilterOutputStream extends java.io.OutputStream {
-    ctor public FilterOutputStream(java.io.OutputStream);
-    method public void write(int) throws java.io.IOException;
-    field protected java.io.OutputStream out;
-  }
-
-  public abstract class FilterReader extends java.io.Reader {
-    ctor protected FilterReader(java.io.Reader);
-    method public void close() throws java.io.IOException;
-    method public int read(char[], int, int) throws java.io.IOException;
-    field protected java.io.Reader in;
-  }
-
-  public abstract class FilterWriter extends java.io.Writer {
-    ctor protected FilterWriter(java.io.Writer);
-    method public void close() throws java.io.IOException;
-    method public void flush() throws java.io.IOException;
-    method public void write(char[], int, int) throws java.io.IOException;
-    field protected java.io.Writer out;
-  }
-
-  public interface Flushable {
-    method public void flush() throws java.io.IOException;
-  }
-
-  public class IOError extends java.lang.Error {
-    ctor public IOError(Throwable);
-  }
-
-  public class IOException extends java.lang.Exception {
-    ctor public IOException();
-    ctor public IOException(String);
-    ctor public IOException(String, Throwable);
-    ctor public IOException(Throwable);
-  }
-
-  public abstract class InputStream implements java.io.Closeable {
-    ctor public InputStream();
-    method public int available() throws java.io.IOException;
-    method public void close() throws java.io.IOException;
-    method public void mark(int);
-    method public boolean markSupported();
-    method public abstract int read() throws java.io.IOException;
-    method public int read(byte[]) throws java.io.IOException;
-    method public int read(byte[], int, int) throws java.io.IOException;
-    method public void reset() throws java.io.IOException;
-    method public long skip(long) throws java.io.IOException;
-  }
-
-  public class InputStreamReader extends java.io.Reader {
-    ctor public InputStreamReader(java.io.InputStream);
-    ctor public InputStreamReader(java.io.InputStream, String) throws java.io.UnsupportedEncodingException;
-    ctor public InputStreamReader(java.io.InputStream, java.nio.charset.Charset);
-    ctor public InputStreamReader(java.io.InputStream, java.nio.charset.CharsetDecoder);
-    method public void close() throws java.io.IOException;
-    method public String getEncoding();
-    method public int read(char[], int, int) throws java.io.IOException;
-  }
-
-  public class InterruptedIOException extends java.io.IOException {
-    ctor public InterruptedIOException();
-    ctor public InterruptedIOException(String);
-    field public int bytesTransferred;
-  }
-
-  public class InvalidClassException extends java.io.ObjectStreamException {
-    ctor public InvalidClassException(String);
-    ctor public InvalidClassException(String, String);
-    field public String classname;
-  }
-
-  public class InvalidObjectException extends java.io.ObjectStreamException {
-    ctor public InvalidObjectException(String);
-  }
-
-  @Deprecated public class LineNumberInputStream extends java.io.FilterInputStream {
-    ctor @Deprecated public LineNumberInputStream(java.io.InputStream);
-    method @Deprecated public int getLineNumber();
-    method @Deprecated public void setLineNumber(int);
-  }
-
-  public class LineNumberReader extends java.io.BufferedReader {
-    ctor public LineNumberReader(java.io.Reader);
-    ctor public LineNumberReader(java.io.Reader, int);
-    method public int getLineNumber();
-    method public void setLineNumber(int);
-  }
-
-  public class NotActiveException extends java.io.ObjectStreamException {
-    ctor public NotActiveException(String);
-    ctor public NotActiveException();
-  }
-
-  public class NotSerializableException extends java.io.ObjectStreamException {
-    ctor public NotSerializableException(String);
-    ctor public NotSerializableException();
-  }
-
-  public interface ObjectInput extends java.io.DataInput java.lang.AutoCloseable {
-    method public int available() throws java.io.IOException;
-    method public void close() throws java.io.IOException;
-    method public int read() throws java.io.IOException;
-    method public int read(byte[]) throws java.io.IOException;
-    method public int read(byte[], int, int) throws java.io.IOException;
-    method public Object readObject() throws java.lang.ClassNotFoundException, java.io.IOException;
-    method public long skip(long) throws java.io.IOException;
-  }
-
-  public class ObjectInputStream extends java.io.InputStream implements java.io.ObjectInput java.io.ObjectStreamConstants {
-    ctor public ObjectInputStream(java.io.InputStream) throws java.io.IOException;
-    ctor protected ObjectInputStream() throws java.io.IOException, java.lang.SecurityException;
-    method public void defaultReadObject() throws java.lang.ClassNotFoundException, java.io.IOException;
-    method protected boolean enableResolveObject(boolean) throws java.lang.SecurityException;
-    method public int read() throws java.io.IOException;
-    method public boolean readBoolean() throws java.io.IOException;
-    method public byte readByte() throws java.io.IOException;
-    method public char readChar() throws java.io.IOException;
-    method protected java.io.ObjectStreamClass readClassDescriptor() throws java.lang.ClassNotFoundException, java.io.IOException;
-    method public double readDouble() throws java.io.IOException;
-    method public java.io.ObjectInputStream.GetField readFields() throws java.lang.ClassNotFoundException, java.io.IOException;
-    method public float readFloat() throws java.io.IOException;
-    method public void readFully(byte[]) throws java.io.IOException;
-    method public void readFully(byte[], int, int) throws java.io.IOException;
-    method public int readInt() throws java.io.IOException;
-    method @Deprecated public String readLine() throws java.io.IOException;
-    method public long readLong() throws java.io.IOException;
-    method public final Object readObject() throws java.lang.ClassNotFoundException, java.io.IOException;
-    method protected Object readObjectOverride() throws java.lang.ClassNotFoundException, java.io.IOException;
-    method public short readShort() throws java.io.IOException;
-    method protected void readStreamHeader() throws java.io.IOException, java.io.StreamCorruptedException;
-    method public String readUTF() throws java.io.IOException;
-    method public Object readUnshared() throws java.lang.ClassNotFoundException, java.io.IOException;
-    method public int readUnsignedByte() throws java.io.IOException;
-    method public int readUnsignedShort() throws java.io.IOException;
-    method public void registerValidation(java.io.ObjectInputValidation, int) throws java.io.InvalidObjectException, java.io.NotActiveException;
-    method protected Class<?> resolveClass(java.io.ObjectStreamClass) throws java.lang.ClassNotFoundException, java.io.IOException;
-    method protected Object resolveObject(Object) throws java.io.IOException;
-    method protected Class<?> resolveProxyClass(String[]) throws java.lang.ClassNotFoundException, java.io.IOException;
-    method public int skipBytes(int) throws java.io.IOException;
-  }
-
-  public abstract static class ObjectInputStream.GetField {
-    ctor public ObjectInputStream.GetField();
-    method public abstract boolean defaulted(String) throws java.io.IOException;
-    method public abstract boolean get(String, boolean) throws java.io.IOException;
-    method public abstract byte get(String, byte) throws java.io.IOException;
-    method public abstract char get(String, char) throws java.io.IOException;
-    method public abstract short get(String, short) throws java.io.IOException;
-    method public abstract int get(String, int) throws java.io.IOException;
-    method public abstract long get(String, long) throws java.io.IOException;
-    method public abstract float get(String, float) throws java.io.IOException;
-    method public abstract double get(String, double) throws java.io.IOException;
-    method public abstract Object get(String, Object) throws java.io.IOException;
-    method public abstract java.io.ObjectStreamClass getObjectStreamClass();
-  }
-
-  public interface ObjectInputValidation {
-    method public void validateObject() throws java.io.InvalidObjectException;
-  }
-
-  public interface ObjectOutput extends java.io.DataOutput java.lang.AutoCloseable {
-    method public void close() throws java.io.IOException;
-    method public void flush() throws java.io.IOException;
-    method public void writeObject(Object) throws java.io.IOException;
-  }
-
-  public class ObjectOutputStream extends java.io.OutputStream implements java.io.ObjectOutput java.io.ObjectStreamConstants {
-    ctor public ObjectOutputStream(java.io.OutputStream) throws java.io.IOException;
-    ctor protected ObjectOutputStream() throws java.io.IOException, java.lang.SecurityException;
-    method protected void annotateClass(Class<?>) throws java.io.IOException;
-    method protected void annotateProxyClass(Class<?>) throws java.io.IOException;
-    method public void defaultWriteObject() throws java.io.IOException;
-    method protected void drain() throws java.io.IOException;
-    method protected boolean enableReplaceObject(boolean) throws java.lang.SecurityException;
-    method public java.io.ObjectOutputStream.PutField putFields() throws java.io.IOException;
-    method protected Object replaceObject(Object) throws java.io.IOException;
-    method public void reset() throws java.io.IOException;
-    method public void useProtocolVersion(int) throws java.io.IOException;
-    method public void write(int) throws java.io.IOException;
-    method public void writeBoolean(boolean) throws java.io.IOException;
-    method public void writeByte(int) throws java.io.IOException;
-    method public void writeBytes(String) throws java.io.IOException;
-    method public void writeChar(int) throws java.io.IOException;
-    method public void writeChars(String) throws java.io.IOException;
-    method protected void writeClassDescriptor(java.io.ObjectStreamClass) throws java.io.IOException;
-    method public void writeDouble(double) throws java.io.IOException;
-    method public void writeFields() throws java.io.IOException;
-    method public void writeFloat(float) throws java.io.IOException;
-    method public void writeInt(int) throws java.io.IOException;
-    method public void writeLong(long) throws java.io.IOException;
-    method public final void writeObject(Object) throws java.io.IOException;
-    method protected void writeObjectOverride(Object) throws java.io.IOException;
-    method public void writeShort(int) throws java.io.IOException;
-    method protected void writeStreamHeader() throws java.io.IOException;
-    method public void writeUTF(String) throws java.io.IOException;
-    method public void writeUnshared(Object) throws java.io.IOException;
-  }
-
-  public abstract static class ObjectOutputStream.PutField {
-    ctor public ObjectOutputStream.PutField();
-    method public abstract void put(String, boolean);
-    method public abstract void put(String, byte);
-    method public abstract void put(String, char);
-    method public abstract void put(String, short);
-    method public abstract void put(String, int);
-    method public abstract void put(String, long);
-    method public abstract void put(String, float);
-    method public abstract void put(String, double);
-    method public abstract void put(String, Object);
-    method @Deprecated public abstract void write(java.io.ObjectOutput) throws java.io.IOException;
-  }
-
-  public class ObjectStreamClass implements java.io.Serializable {
-    method public Class<?> forClass();
-    method public java.io.ObjectStreamField getField(String);
-    method public java.io.ObjectStreamField[] getFields();
-    method public String getName();
-    method public long getSerialVersionUID();
-    method public static java.io.ObjectStreamClass lookup(Class<?>);
-    method public static java.io.ObjectStreamClass lookupAny(Class<?>);
-    field public static final java.io.ObjectStreamField[] NO_FIELDS;
-  }
-
-  public interface ObjectStreamConstants {
-    field public static final int PROTOCOL_VERSION_1 = 1; // 0x1
-    field public static final int PROTOCOL_VERSION_2 = 2; // 0x2
-    field public static final byte SC_BLOCK_DATA = 8; // 0x8
-    field public static final byte SC_ENUM = 16; // 0x10
-    field public static final byte SC_EXTERNALIZABLE = 4; // 0x4
-    field public static final byte SC_SERIALIZABLE = 2; // 0x2
-    field public static final byte SC_WRITE_METHOD = 1; // 0x1
-    field public static final short STREAM_MAGIC = -21267; // 0xffffaced
-    field public static final short STREAM_VERSION = 5; // 0x5
-    field public static final java.io.SerializablePermission SUBCLASS_IMPLEMENTATION_PERMISSION;
-    field public static final java.io.SerializablePermission SUBSTITUTION_PERMISSION;
-    field public static final byte TC_ARRAY = 117; // 0x75
-    field public static final byte TC_BASE = 112; // 0x70
-    field public static final byte TC_BLOCKDATA = 119; // 0x77
-    field public static final byte TC_BLOCKDATALONG = 122; // 0x7a
-    field public static final byte TC_CLASS = 118; // 0x76
-    field public static final byte TC_CLASSDESC = 114; // 0x72
-    field public static final byte TC_ENDBLOCKDATA = 120; // 0x78
-    field public static final byte TC_ENUM = 126; // 0x7e
-    field public static final byte TC_EXCEPTION = 123; // 0x7b
-    field public static final byte TC_LONGSTRING = 124; // 0x7c
-    field public static final byte TC_MAX = 126; // 0x7e
-    field public static final byte TC_NULL = 112; // 0x70
-    field public static final byte TC_OBJECT = 115; // 0x73
-    field public static final byte TC_PROXYCLASSDESC = 125; // 0x7d
-    field public static final byte TC_REFERENCE = 113; // 0x71
-    field public static final byte TC_RESET = 121; // 0x79
-    field public static final byte TC_STRING = 116; // 0x74
-    field public static final int baseWireHandle = 8257536; // 0x7e0000
-  }
-
-  public abstract class ObjectStreamException extends java.io.IOException {
-    ctor protected ObjectStreamException(String);
-    ctor protected ObjectStreamException();
-  }
-
-  public class ObjectStreamField implements java.lang.Comparable<java.lang.Object> {
-    ctor public ObjectStreamField(String, Class<?>);
-    ctor public ObjectStreamField(String, Class<?>, boolean);
-    method public int compareTo(Object);
-    method public String getName();
-    method public int getOffset();
-    method public Class<?> getType();
-    method public char getTypeCode();
-    method public String getTypeString();
-    method public boolean isPrimitive();
-    method public boolean isUnshared();
-    method protected void setOffset(int);
-  }
-
-  public class OptionalDataException extends java.io.ObjectStreamException {
-    field public boolean eof;
-    field public int length;
-  }
-
-  public abstract class OutputStream implements java.io.Closeable java.io.Flushable {
-    ctor public OutputStream();
-    method public void close() throws java.io.IOException;
-    method public void flush() throws java.io.IOException;
-    method public abstract void write(int) throws java.io.IOException;
-    method public void write(byte[]) throws java.io.IOException;
-    method public void write(byte[], int, int) throws java.io.IOException;
-  }
-
-  public class OutputStreamWriter extends java.io.Writer {
-    ctor public OutputStreamWriter(java.io.OutputStream, String) throws java.io.UnsupportedEncodingException;
-    ctor public OutputStreamWriter(java.io.OutputStream);
-    ctor public OutputStreamWriter(java.io.OutputStream, java.nio.charset.Charset);
-    ctor public OutputStreamWriter(java.io.OutputStream, java.nio.charset.CharsetEncoder);
-    method public void close() throws java.io.IOException;
-    method public void flush() throws java.io.IOException;
-    method public String getEncoding();
-    method public void write(char[], int, int) throws java.io.IOException;
-  }
-
-  public class PipedInputStream extends java.io.InputStream {
-    ctor public PipedInputStream(java.io.PipedOutputStream) throws java.io.IOException;
-    ctor public PipedInputStream(java.io.PipedOutputStream, int) throws java.io.IOException;
-    ctor public PipedInputStream();
-    ctor public PipedInputStream(int);
-    method public void connect(java.io.PipedOutputStream) throws java.io.IOException;
-    method public int read() throws java.io.IOException;
-    method protected void receive(int) throws java.io.IOException;
-    field protected static final int PIPE_SIZE = 1024; // 0x400
-    field protected byte[] buffer;
-    field protected int in;
-    field protected int out;
-  }
-
-  public class PipedOutputStream extends java.io.OutputStream {
-    ctor public PipedOutputStream(java.io.PipedInputStream) throws java.io.IOException;
-    ctor public PipedOutputStream();
-    method public void connect(java.io.PipedInputStream) throws java.io.IOException;
-    method public void write(int) throws java.io.IOException;
-  }
-
-  public class PipedReader extends java.io.Reader {
-    ctor public PipedReader(java.io.PipedWriter) throws java.io.IOException;
-    ctor public PipedReader(java.io.PipedWriter, int) throws java.io.IOException;
-    ctor public PipedReader();
-    ctor public PipedReader(int);
-    method public void close() throws java.io.IOException;
-    method public void connect(java.io.PipedWriter) throws java.io.IOException;
-    method public int read(char[], int, int) throws java.io.IOException;
-  }
-
-  public class PipedWriter extends java.io.Writer {
-    ctor public PipedWriter(java.io.PipedReader) throws java.io.IOException;
-    ctor public PipedWriter();
-    method public void close() throws java.io.IOException;
-    method public void connect(java.io.PipedReader) throws java.io.IOException;
-    method public void flush() throws java.io.IOException;
-    method public void write(char[], int, int) throws java.io.IOException;
-  }
-
-  public class PrintStream extends java.io.FilterOutputStream implements java.lang.Appendable java.io.Closeable {
-    ctor public PrintStream(java.io.OutputStream);
-    ctor public PrintStream(java.io.OutputStream, boolean);
-    ctor public PrintStream(java.io.OutputStream, boolean, String) throws java.io.UnsupportedEncodingException;
-    ctor public PrintStream(String) throws java.io.FileNotFoundException;
-    ctor public PrintStream(String, String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
-    ctor public PrintStream(java.io.File) throws java.io.FileNotFoundException;
-    ctor public PrintStream(java.io.File, String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
-    method public java.io.PrintStream append(CharSequence);
-    method public java.io.PrintStream append(CharSequence, int, int);
-    method public java.io.PrintStream append(char);
-    method public boolean checkError();
-    method protected void clearError();
-    method public void close();
-    method public void flush();
-    method public java.io.PrintStream format(String, java.lang.Object...);
-    method public java.io.PrintStream format(java.util.Locale, String, java.lang.Object...);
-    method public void print(boolean);
-    method public void print(char);
-    method public void print(int);
-    method public void print(long);
-    method public void print(float);
-    method public void print(double);
-    method public void print(char[]);
-    method public void print(String);
-    method public void print(Object);
-    method public java.io.PrintStream printf(String, java.lang.Object...);
-    method public java.io.PrintStream printf(java.util.Locale, String, java.lang.Object...);
-    method public void println();
-    method public void println(boolean);
-    method public void println(char);
-    method public void println(int);
-    method public void println(long);
-    method public void println(float);
-    method public void println(double);
-    method public void println(char[]);
-    method public void println(String);
-    method public void println(Object);
-    method protected void setError();
-    method public void write(int);
-    method public void write(byte[], int, int);
-  }
-
-  public class PrintWriter extends java.io.Writer {
-    ctor public PrintWriter(@NonNull java.io.Writer);
-    ctor public PrintWriter(@NonNull java.io.Writer, boolean);
-    ctor public PrintWriter(@NonNull java.io.OutputStream);
-    ctor public PrintWriter(@NonNull java.io.OutputStream, boolean);
-    ctor public PrintWriter(@NonNull String) throws java.io.FileNotFoundException;
-    ctor public PrintWriter(@NonNull String, @NonNull String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
-    ctor public PrintWriter(@NonNull java.io.File) throws java.io.FileNotFoundException;
-    ctor public PrintWriter(@NonNull java.io.File, @NonNull String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
-    method @NonNull public java.io.PrintWriter append(@Nullable CharSequence);
-    method @NonNull public java.io.PrintWriter append(@Nullable CharSequence, int, int);
-    method @NonNull public java.io.PrintWriter append(char);
-    method public boolean checkError();
-    method protected void clearError();
-    method public void close();
-    method public void flush();
-    method @NonNull public java.io.PrintWriter format(@NonNull String, @NonNull java.lang.Object...);
-    method @NonNull public java.io.PrintWriter format(@Nullable java.util.Locale, @NonNull String, @NonNull java.lang.Object...);
-    method public void print(boolean);
-    method public void print(char);
-    method public void print(int);
-    method public void print(long);
-    method public void print(float);
-    method public void print(double);
-    method public void print(char[]);
-    method public void print(@Nullable String);
-    method public void print(@Nullable Object);
-    method @NonNull public java.io.PrintWriter printf(@NonNull String, @NonNull java.lang.Object...);
-    method @NonNull public java.io.PrintWriter printf(@Nullable java.util.Locale, @NonNull String, @NonNull java.lang.Object...);
-    method public void println();
-    method public void println(boolean);
-    method public void println(char);
-    method public void println(int);
-    method public void println(long);
-    method public void println(float);
-    method public void println(double);
-    method public void println(char[]);
-    method public void println(@Nullable String);
-    method public void println(@Nullable Object);
-    method protected void setError();
-    method public void write(int);
-    method public void write(char[], int, int);
-    method public void write(char[]);
-    method public void write(@NonNull String, int, int);
-    method public void write(@NonNull String);
-    field protected java.io.Writer out;
-  }
-
-  public class PushbackInputStream extends java.io.FilterInputStream {
-    ctor public PushbackInputStream(java.io.InputStream, int);
-    ctor public PushbackInputStream(java.io.InputStream);
-    method public void unread(int) throws java.io.IOException;
-    method public void unread(byte[], int, int) throws java.io.IOException;
-    method public void unread(byte[]) throws java.io.IOException;
-    field protected byte[] buf;
-    field protected int pos;
-  }
-
-  public class PushbackReader extends java.io.FilterReader {
-    ctor public PushbackReader(java.io.Reader, int);
-    ctor public PushbackReader(java.io.Reader);
-    method public void unread(int) throws java.io.IOException;
-    method public void unread(char[], int, int) throws java.io.IOException;
-    method public void unread(char[]) throws java.io.IOException;
-  }
-
-  public class RandomAccessFile implements java.io.Closeable java.io.DataInput java.io.DataOutput {
-    ctor public RandomAccessFile(String, String) throws java.io.FileNotFoundException;
-    ctor public RandomAccessFile(java.io.File, String) throws java.io.FileNotFoundException;
-    method public void close() throws java.io.IOException;
-    method public final java.nio.channels.FileChannel getChannel();
-    method public final java.io.FileDescriptor getFD() throws java.io.IOException;
-    method public long getFilePointer() throws java.io.IOException;
-    method public long length() throws java.io.IOException;
-    method public int read() throws java.io.IOException;
-    method public int read(byte[], int, int) throws java.io.IOException;
-    method public int read(byte[]) throws java.io.IOException;
-    method public final boolean readBoolean() throws java.io.IOException;
-    method public final byte readByte() throws java.io.IOException;
-    method public final char readChar() throws java.io.IOException;
-    method public final double readDouble() throws java.io.IOException;
-    method public final float readFloat() throws java.io.IOException;
-    method public final void readFully(byte[]) throws java.io.IOException;
-    method public final void readFully(byte[], int, int) throws java.io.IOException;
-    method public final int readInt() throws java.io.IOException;
-    method public final String readLine() throws java.io.IOException;
-    method public final long readLong() throws java.io.IOException;
-    method public final short readShort() throws java.io.IOException;
-    method public final String readUTF() throws java.io.IOException;
-    method public final int readUnsignedByte() throws java.io.IOException;
-    method public final int readUnsignedShort() throws java.io.IOException;
-    method public void seek(long) throws java.io.IOException;
-    method public void setLength(long) throws java.io.IOException;
-    method public int skipBytes(int) throws java.io.IOException;
-    method public void write(int) throws java.io.IOException;
-    method public void write(byte[]) throws java.io.IOException;
-    method public void write(byte[], int, int) throws java.io.IOException;
-    method public final void writeBoolean(boolean) throws java.io.IOException;
-    method public final void writeByte(int) throws java.io.IOException;
-    method public final void writeBytes(String) throws java.io.IOException;
-    method public final void writeChar(int) throws java.io.IOException;
-    method public final void writeChars(String) throws java.io.IOException;
-    method public final void writeDouble(double) throws java.io.IOException;
-    method public final void writeFloat(float) throws java.io.IOException;
-    method public final void writeInt(int) throws java.io.IOException;
-    method public final void writeLong(long) throws java.io.IOException;
-    method public final void writeShort(int) throws java.io.IOException;
-    method public final void writeUTF(String) throws java.io.IOException;
-  }
-
-  public abstract class Reader implements java.io.Closeable java.lang.Readable {
-    ctor protected Reader();
-    ctor protected Reader(Object);
-    method public void mark(int) throws java.io.IOException;
-    method public boolean markSupported();
-    method public int read(java.nio.CharBuffer) throws java.io.IOException;
-    method public int read() throws java.io.IOException;
-    method public int read(char[]) throws java.io.IOException;
-    method public abstract int read(char[], int, int) throws java.io.IOException;
-    method public boolean ready() throws java.io.IOException;
-    method public void reset() throws java.io.IOException;
-    method public long skip(long) throws java.io.IOException;
-    field protected Object lock;
-  }
-
-  public class SequenceInputStream extends java.io.InputStream {
-    ctor public SequenceInputStream(java.util.Enumeration<? extends java.io.InputStream>);
-    ctor public SequenceInputStream(java.io.InputStream, java.io.InputStream);
-    method public int read() throws java.io.IOException;
-  }
-
-  public interface Serializable {
-  }
-
-  public final class SerializablePermission extends java.security.BasicPermission {
-    ctor public SerializablePermission(String);
-    ctor public SerializablePermission(String, String);
-  }
-
-  public class StreamCorruptedException extends java.io.ObjectStreamException {
-    ctor public StreamCorruptedException(String);
-    ctor public StreamCorruptedException();
-  }
-
-  public class StreamTokenizer {
-    ctor @Deprecated public StreamTokenizer(java.io.InputStream);
-    ctor public StreamTokenizer(java.io.Reader);
-    method public void commentChar(int);
-    method public void eolIsSignificant(boolean);
-    method public int lineno();
-    method public void lowerCaseMode(boolean);
-    method public int nextToken() throws java.io.IOException;
-    method public void ordinaryChar(int);
-    method public void ordinaryChars(int, int);
-    method public void parseNumbers();
-    method public void pushBack();
-    method public void quoteChar(int);
-    method public void resetSyntax();
-    method public void slashSlashComments(boolean);
-    method public void slashStarComments(boolean);
-    method public void whitespaceChars(int, int);
-    method public void wordChars(int, int);
-    field public static final int TT_EOF = -1; // 0xffffffff
-    field public static final int TT_EOL = 10; // 0xa
-    field public static final int TT_NUMBER = -2; // 0xfffffffe
-    field public static final int TT_WORD = -3; // 0xfffffffd
-    field public double nval;
-    field public String sval;
-    field public int ttype;
-  }
-
-  @Deprecated public class StringBufferInputStream extends java.io.InputStream {
-    ctor @Deprecated public StringBufferInputStream(String);
-    method @Deprecated public int available();
-    method @Deprecated public int read();
-    method @Deprecated public int read(byte[], int, int);
-    method @Deprecated public void reset();
-    method @Deprecated public long skip(long);
-    field @Deprecated protected String buffer;
-    field @Deprecated protected int count;
-    field @Deprecated protected int pos;
-  }
-
-  public class StringReader extends java.io.Reader {
-    ctor public StringReader(String);
-    method public void close();
-    method public int read(char[], int, int) throws java.io.IOException;
-  }
-
-  public class StringWriter extends java.io.Writer {
-    ctor public StringWriter();
-    ctor public StringWriter(int);
-    method public java.io.StringWriter append(CharSequence);
-    method public java.io.StringWriter append(CharSequence, int, int);
-    method public java.io.StringWriter append(char);
-    method public void close() throws java.io.IOException;
-    method public void flush();
-    method public StringBuffer getBuffer();
-    method public void write(int);
-    method public void write(char[], int, int);
-    method public void write(String);
-    method public void write(String, int, int);
-  }
-
-  public class SyncFailedException extends java.io.IOException {
-    ctor public SyncFailedException(String);
-  }
-
-  public class UTFDataFormatException extends java.io.IOException {
-    ctor public UTFDataFormatException();
-    ctor public UTFDataFormatException(String);
-  }
-
-  public class UncheckedIOException extends java.lang.RuntimeException {
-    ctor public UncheckedIOException(String, java.io.IOException);
-    ctor public UncheckedIOException(java.io.IOException);
-    method public java.io.IOException getCause();
-  }
-
-  public class UnsupportedEncodingException extends java.io.IOException {
-    ctor public UnsupportedEncodingException();
-    ctor public UnsupportedEncodingException(String);
-  }
-
-  public class WriteAbortedException extends java.io.ObjectStreamException {
-    ctor public WriteAbortedException(String, Exception);
-    field public Exception detail;
-  }
-
-  public abstract class Writer implements java.lang.Appendable java.io.Closeable java.io.Flushable {
-    ctor protected Writer();
-    ctor protected Writer(Object);
-    method public java.io.Writer append(CharSequence) throws java.io.IOException;
-    method public java.io.Writer append(CharSequence, int, int) throws java.io.IOException;
-    method public java.io.Writer append(char) throws java.io.IOException;
-    method public void write(int) throws java.io.IOException;
-    method public void write(char[]) throws java.io.IOException;
-    method public abstract void write(char[], int, int) throws java.io.IOException;
-    method public void write(String) throws java.io.IOException;
-    method public void write(String, int, int) throws java.io.IOException;
-    field protected Object lock;
-  }
-
-}
-
-package java.lang {
-
-  public class AbstractMethodError extends java.lang.IncompatibleClassChangeError {
-    ctor public AbstractMethodError();
-    ctor public AbstractMethodError(String);
-  }
-
-  public interface Appendable {
-    method @NonNull public Appendable append(@Nullable CharSequence) throws java.io.IOException;
-    method @NonNull public Appendable append(@Nullable CharSequence, int, int) throws java.io.IOException;
-    method @NonNull public Appendable append(char) throws java.io.IOException;
-  }
-
-  public class ArithmeticException extends java.lang.RuntimeException {
-    ctor public ArithmeticException();
-    ctor public ArithmeticException(String);
-  }
-
-  public class ArrayIndexOutOfBoundsException extends java.lang.IndexOutOfBoundsException {
-    ctor public ArrayIndexOutOfBoundsException();
-    ctor public ArrayIndexOutOfBoundsException(int);
-    ctor public ArrayIndexOutOfBoundsException(String);
-  }
-
-  public class ArrayStoreException extends java.lang.RuntimeException {
-    ctor public ArrayStoreException();
-    ctor public ArrayStoreException(String);
-  }
-
-  public class AssertionError extends java.lang.Error {
-    ctor public AssertionError();
-    ctor public AssertionError(Object);
-    ctor public AssertionError(boolean);
-    ctor public AssertionError(char);
-    ctor public AssertionError(int);
-    ctor public AssertionError(long);
-    ctor public AssertionError(float);
-    ctor public AssertionError(double);
-    ctor public AssertionError(String, Throwable);
-  }
-
-  public interface AutoCloseable {
-    method public void close() throws java.lang.Exception;
-  }
-
-  public final class Boolean implements java.lang.Comparable<java.lang.Boolean> java.io.Serializable {
-    ctor public Boolean(boolean);
-    ctor public Boolean(@Nullable String);
-    method public boolean booleanValue();
-    method public static int compare(boolean, boolean);
-    method public int compareTo(@NonNull Boolean);
-    method public static boolean getBoolean(@NonNull String);
-    method public static int hashCode(boolean);
-    method public static boolean logicalAnd(boolean, boolean);
-    method public static boolean logicalOr(boolean, boolean);
-    method public static boolean logicalXor(boolean, boolean);
-    method public static boolean parseBoolean(@Nullable String);
-    method @NonNull public static String toString(boolean);
-    method @NonNull public static Boolean valueOf(boolean);
-    method @NonNull public static Boolean valueOf(@Nullable String);
-    field public static final Boolean FALSE;
-    field public static final Boolean TRUE;
-    field public static final Class<java.lang.Boolean> TYPE;
-  }
-
-  public class BootstrapMethodError extends java.lang.LinkageError {
-    ctor public BootstrapMethodError();
-    ctor public BootstrapMethodError(String);
-    ctor public BootstrapMethodError(String, Throwable);
-    ctor public BootstrapMethodError(Throwable);
-  }
-
-  public final class Byte extends java.lang.Number implements java.lang.Comparable<java.lang.Byte> {
-    ctor public Byte(byte);
-    ctor public Byte(@NonNull String) throws java.lang.NumberFormatException;
-    method public static int compare(byte, byte);
-    method public int compareTo(@NonNull Byte);
-    method @NonNull public static Byte decode(@NonNull String) throws java.lang.NumberFormatException;
-    method public double doubleValue();
-    method public float floatValue();
-    method public static int hashCode(byte);
-    method public int intValue();
-    method public long longValue();
-    method public static byte parseByte(@NonNull String, int) throws java.lang.NumberFormatException;
-    method public static byte parseByte(@NonNull String) throws java.lang.NumberFormatException;
-    method @NonNull public static String toString(byte);
-    method public static int toUnsignedInt(byte);
-    method public static long toUnsignedLong(byte);
-    method @NonNull public static Byte valueOf(byte);
-    method @NonNull public static Byte valueOf(@NonNull String, int) throws java.lang.NumberFormatException;
-    method @NonNull public static Byte valueOf(@NonNull String) throws java.lang.NumberFormatException;
-    field public static final int BYTES = 1; // 0x1
-    field public static final byte MAX_VALUE = 127; // 0x7f
-    field public static final byte MIN_VALUE = -128; // 0xffffff80
-    field public static final int SIZE = 8; // 0x8
-    field public static final Class<java.lang.Byte> TYPE;
-  }
-
-  public interface CharSequence {
-    method public char charAt(int);
-    method @NonNull public default java.util.stream.IntStream chars();
-    method @NonNull public default java.util.stream.IntStream codePoints();
-    method public int length();
-    method @NonNull public CharSequence subSequence(int, int);
-    method @NonNull public String toString();
-  }
-
-  public final class Character implements java.lang.Comparable<java.lang.Character> java.io.Serializable {
-    ctor public Character(char);
-    method public static int charCount(int);
-    method public char charValue();
-    method public static int codePointAt(@NonNull CharSequence, int);
-    method public static int codePointAt(char[], int);
-    method public static int codePointAt(char[], int, int);
-    method public static int codePointBefore(@NonNull CharSequence, int);
-    method public static int codePointBefore(char[], int);
-    method public static int codePointBefore(char[], int, int);
-    method public static int codePointCount(@NonNull CharSequence, int, int);
-    method public static int codePointCount(char[], int, int);
-    method public static int compare(char, char);
-    method public int compareTo(@NonNull Character);
-    method public static int digit(char, int);
-    method public static int digit(int, int);
-    method public static char forDigit(int, int);
-    method public static byte getDirectionality(char);
-    method public static byte getDirectionality(int);
-    method @Nullable public static String getName(int);
-    method public static int getNumericValue(char);
-    method public static int getNumericValue(int);
-    method public static int getType(char);
-    method public static int getType(int);
-    method public static int hashCode(char);
-    method public static char highSurrogate(int);
-    method public static boolean isAlphabetic(int);
-    method public static boolean isBmpCodePoint(int);
-    method public static boolean isDefined(char);
-    method public static boolean isDefined(int);
-    method public static boolean isDigit(char);
-    method public static boolean isDigit(int);
-    method public static boolean isHighSurrogate(char);
-    method public static boolean isISOControl(char);
-    method public static boolean isISOControl(int);
-    method public static boolean isIdentifierIgnorable(char);
-    method public static boolean isIdentifierIgnorable(int);
-    method public static boolean isIdeographic(int);
-    method public static boolean isJavaIdentifierPart(char);
-    method public static boolean isJavaIdentifierPart(int);
-    method public static boolean isJavaIdentifierStart(char);
-    method public static boolean isJavaIdentifierStart(int);
-    method @Deprecated public static boolean isJavaLetter(char);
-    method @Deprecated public static boolean isJavaLetterOrDigit(char);
-    method public static boolean isLetter(char);
-    method public static boolean isLetter(int);
-    method public static boolean isLetterOrDigit(char);
-    method public static boolean isLetterOrDigit(int);
-    method public static boolean isLowSurrogate(char);
-    method public static boolean isLowerCase(char);
-    method public static boolean isLowerCase(int);
-    method public static boolean isMirrored(char);
-    method public static boolean isMirrored(int);
-    method @Deprecated public static boolean isSpace(char);
-    method public static boolean isSpaceChar(char);
-    method public static boolean isSpaceChar(int);
-    method public static boolean isSupplementaryCodePoint(int);
-    method public static boolean isSurrogate(char);
-    method public static boolean isSurrogatePair(char, char);
-    method public static boolean isTitleCase(char);
-    method public static boolean isTitleCase(int);
-    method public static boolean isUnicodeIdentifierPart(char);
-    method public static boolean isUnicodeIdentifierPart(int);
-    method public static boolean isUnicodeIdentifierStart(char);
-    method public static boolean isUnicodeIdentifierStart(int);
-    method public static boolean isUpperCase(char);
-    method public static boolean isUpperCase(int);
-    method public static boolean isValidCodePoint(int);
-    method public static boolean isWhitespace(char);
-    method public static boolean isWhitespace(int);
-    method public static char lowSurrogate(int);
-    method public static int offsetByCodePoints(@NonNull CharSequence, int, int);
-    method public static int offsetByCodePoints(char[], int, int, int, int);
-    method public static char reverseBytes(char);
-    method public static int toChars(int, char[], int);
-    method public static char[] toChars(int);
-    method public static int toCodePoint(char, char);
-    method public static char toLowerCase(char);
-    method public static int toLowerCase(int);
-    method @NonNull public static String toString(char);
-    method public static char toTitleCase(char);
-    method public static int toTitleCase(int);
-    method public static char toUpperCase(char);
-    method public static int toUpperCase(int);
-    method @NonNull public static Character valueOf(char);
-    field public static final int BYTES = 2; // 0x2
-    field public static final byte COMBINING_SPACING_MARK = 8; // 0x8
-    field public static final byte CONNECTOR_PUNCTUATION = 23; // 0x17
-    field public static final byte CONTROL = 15; // 0xf
-    field public static final byte CURRENCY_SYMBOL = 26; // 0x1a
-    field public static final byte DASH_PUNCTUATION = 20; // 0x14
-    field public static final byte DECIMAL_DIGIT_NUMBER = 9; // 0x9
-    field public static final byte DIRECTIONALITY_ARABIC_NUMBER = 6; // 0x6
-    field public static final byte DIRECTIONALITY_BOUNDARY_NEUTRAL = 9; // 0x9
-    field public static final byte DIRECTIONALITY_COMMON_NUMBER_SEPARATOR = 7; // 0x7
-    field public static final byte DIRECTIONALITY_EUROPEAN_NUMBER = 3; // 0x3
-    field public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR = 4; // 0x4
-    field public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR = 5; // 0x5
-    field public static final byte DIRECTIONALITY_LEFT_TO_RIGHT = 0; // 0x0
-    field public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING = 14; // 0xe
-    field public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE = 15; // 0xf
-    field public static final byte DIRECTIONALITY_NONSPACING_MARK = 8; // 0x8
-    field public static final byte DIRECTIONALITY_OTHER_NEUTRALS = 13; // 0xd
-    field public static final byte DIRECTIONALITY_PARAGRAPH_SEPARATOR = 10; // 0xa
-    field public static final byte DIRECTIONALITY_POP_DIRECTIONAL_FORMAT = 18; // 0x12
-    field public static final byte DIRECTIONALITY_RIGHT_TO_LEFT = 1; // 0x1
-    field public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC = 2; // 0x2
-    field public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING = 16; // 0x10
-    field public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE = 17; // 0x11
-    field public static final byte DIRECTIONALITY_SEGMENT_SEPARATOR = 11; // 0xb
-    field public static final byte DIRECTIONALITY_UNDEFINED = -1; // 0xffffffff
-    field public static final byte DIRECTIONALITY_WHITESPACE = 12; // 0xc
-    field public static final byte ENCLOSING_MARK = 7; // 0x7
-    field public static final byte END_PUNCTUATION = 22; // 0x16
-    field public static final byte FINAL_QUOTE_PUNCTUATION = 30; // 0x1e
-    field public static final byte FORMAT = 16; // 0x10
-    field public static final byte INITIAL_QUOTE_PUNCTUATION = 29; // 0x1d
-    field public static final byte LETTER_NUMBER = 10; // 0xa
-    field public static final byte LINE_SEPARATOR = 13; // 0xd
-    field public static final byte LOWERCASE_LETTER = 2; // 0x2
-    field public static final byte MATH_SYMBOL = 25; // 0x19
-    field public static final int MAX_CODE_POINT = 1114111; // 0x10ffff
-    field public static final char MAX_HIGH_SURROGATE = 56319; // 0xdbff '\udbff'
-    field public static final char MAX_LOW_SURROGATE = 57343; // 0xdfff '\udfff'
-    field public static final int MAX_RADIX = 36; // 0x24
-    field public static final char MAX_SURROGATE = 57343; // 0xdfff '\udfff'
-    field public static final char MAX_VALUE = 65535; // 0xffff '\uffff'
-    field public static final int MIN_CODE_POINT = 0; // 0x0
-    field public static final char MIN_HIGH_SURROGATE = 55296; // 0xd800 '\ud800'
-    field public static final char MIN_LOW_SURROGATE = 56320; // 0xdc00 '\udc00'
-    field public static final int MIN_RADIX = 2; // 0x2
-    field public static final int MIN_SUPPLEMENTARY_CODE_POINT = 65536; // 0x10000
-    field public static final char MIN_SURROGATE = 55296; // 0xd800 '\ud800'
-    field public static final char MIN_VALUE = 0; // 0x0000 '\u0000'
-    field public static final byte MODIFIER_LETTER = 4; // 0x4
-    field public static final byte MODIFIER_SYMBOL = 27; // 0x1b
-    field public static final byte NON_SPACING_MARK = 6; // 0x6
-    field public static final byte OTHER_LETTER = 5; // 0x5
-    field public static final byte OTHER_NUMBER = 11; // 0xb
-    field public static final byte OTHER_PUNCTUATION = 24; // 0x18
-    field public static final byte OTHER_SYMBOL = 28; // 0x1c
-    field public static final byte PARAGRAPH_SEPARATOR = 14; // 0xe
-    field public static final byte PRIVATE_USE = 18; // 0x12
-    field public static final int SIZE = 16; // 0x10
-    field public static final byte SPACE_SEPARATOR = 12; // 0xc
-    field public static final byte START_PUNCTUATION = 21; // 0x15
-    field public static final byte SURROGATE = 19; // 0x13
-    field public static final byte TITLECASE_LETTER = 3; // 0x3
-    field public static final Class<java.lang.Character> TYPE;
-    field public static final byte UNASSIGNED = 0; // 0x0
-    field public static final byte UPPERCASE_LETTER = 1; // 0x1
-  }
-
-  public static class Character.Subset {
-    ctor protected Character.Subset(@NonNull String);
-    method public final boolean equals(@Nullable Object);
-    method public final int hashCode();
-    method @NonNull public final String toString();
-  }
-
-  public static final class Character.UnicodeBlock extends java.lang.Character.Subset {
-    method @NonNull public static java.lang.Character.UnicodeBlock forName(@NonNull String);
-    method @Nullable public static java.lang.Character.UnicodeBlock of(char);
-    method @Nullable public static java.lang.Character.UnicodeBlock of(int);
-    field public static final java.lang.Character.UnicodeBlock AEGEAN_NUMBERS;
-    field public static final java.lang.Character.UnicodeBlock ALCHEMICAL_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock ALPHABETIC_PRESENTATION_FORMS;
-    field public static final java.lang.Character.UnicodeBlock ANCIENT_GREEK_MUSICAL_NOTATION;
-    field public static final java.lang.Character.UnicodeBlock ANCIENT_GREEK_NUMBERS;
-    field public static final java.lang.Character.UnicodeBlock ANCIENT_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock ARABIC;
-    field public static final java.lang.Character.UnicodeBlock ARABIC_EXTENDED_A;
-    field public static final java.lang.Character.UnicodeBlock ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock ARABIC_PRESENTATION_FORMS_A;
-    field public static final java.lang.Character.UnicodeBlock ARABIC_PRESENTATION_FORMS_B;
-    field public static final java.lang.Character.UnicodeBlock ARABIC_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock ARMENIAN;
-    field public static final java.lang.Character.UnicodeBlock ARROWS;
-    field public static final java.lang.Character.UnicodeBlock AVESTAN;
-    field public static final java.lang.Character.UnicodeBlock BALINESE;
-    field public static final java.lang.Character.UnicodeBlock BAMUM;
-    field public static final java.lang.Character.UnicodeBlock BAMUM_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock BASIC_LATIN;
-    field public static final java.lang.Character.UnicodeBlock BATAK;
-    field public static final java.lang.Character.UnicodeBlock BENGALI;
-    field public static final java.lang.Character.UnicodeBlock BLOCK_ELEMENTS;
-    field public static final java.lang.Character.UnicodeBlock BOPOMOFO;
-    field public static final java.lang.Character.UnicodeBlock BOPOMOFO_EXTENDED;
-    field public static final java.lang.Character.UnicodeBlock BOX_DRAWING;
-    field public static final java.lang.Character.UnicodeBlock BRAHMI;
-    field public static final java.lang.Character.UnicodeBlock BRAILLE_PATTERNS;
-    field public static final java.lang.Character.UnicodeBlock BUGINESE;
-    field public static final java.lang.Character.UnicodeBlock BUHID;
-    field public static final java.lang.Character.UnicodeBlock BYZANTINE_MUSICAL_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock CARIAN;
-    field public static final java.lang.Character.UnicodeBlock CHAKMA;
-    field public static final java.lang.Character.UnicodeBlock CHAM;
-    field public static final java.lang.Character.UnicodeBlock CHEROKEE;
-    field public static final java.lang.Character.UnicodeBlock CJK_COMPATIBILITY;
-    field public static final java.lang.Character.UnicodeBlock CJK_COMPATIBILITY_FORMS;
-    field public static final java.lang.Character.UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS;
-    field public static final java.lang.Character.UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock CJK_RADICALS_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock CJK_STROKES;
-    field public static final java.lang.Character.UnicodeBlock CJK_SYMBOLS_AND_PUNCTUATION;
-    field public static final java.lang.Character.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS;
-    field public static final java.lang.Character.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A;
-    field public static final java.lang.Character.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B;
-    field public static final java.lang.Character.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C;
-    field public static final java.lang.Character.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D;
-    field public static final java.lang.Character.UnicodeBlock COMBINING_DIACRITICAL_MARKS;
-    field public static final java.lang.Character.UnicodeBlock COMBINING_DIACRITICAL_MARKS_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock COMBINING_HALF_MARKS;
-    field public static final java.lang.Character.UnicodeBlock COMBINING_MARKS_FOR_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock COMMON_INDIC_NUMBER_FORMS;
-    field public static final java.lang.Character.UnicodeBlock CONTROL_PICTURES;
-    field public static final java.lang.Character.UnicodeBlock COPTIC;
-    field public static final java.lang.Character.UnicodeBlock COUNTING_ROD_NUMERALS;
-    field public static final java.lang.Character.UnicodeBlock CUNEIFORM;
-    field public static final java.lang.Character.UnicodeBlock CUNEIFORM_NUMBERS_AND_PUNCTUATION;
-    field public static final java.lang.Character.UnicodeBlock CURRENCY_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock CYPRIOT_SYLLABARY;
-    field public static final java.lang.Character.UnicodeBlock CYRILLIC;
-    field public static final java.lang.Character.UnicodeBlock CYRILLIC_EXTENDED_A;
-    field public static final java.lang.Character.UnicodeBlock CYRILLIC_EXTENDED_B;
-    field public static final java.lang.Character.UnicodeBlock CYRILLIC_SUPPLEMENTARY;
-    field public static final java.lang.Character.UnicodeBlock DESERET;
-    field public static final java.lang.Character.UnicodeBlock DEVANAGARI;
-    field public static final java.lang.Character.UnicodeBlock DEVANAGARI_EXTENDED;
-    field public static final java.lang.Character.UnicodeBlock DINGBATS;
-    field public static final java.lang.Character.UnicodeBlock DOMINO_TILES;
-    field public static final java.lang.Character.UnicodeBlock EGYPTIAN_HIEROGLYPHS;
-    field public static final java.lang.Character.UnicodeBlock EMOTICONS;
-    field public static final java.lang.Character.UnicodeBlock ENCLOSED_ALPHANUMERICS;
-    field public static final java.lang.Character.UnicodeBlock ENCLOSED_ALPHANUMERIC_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock ENCLOSED_CJK_LETTERS_AND_MONTHS;
-    field public static final java.lang.Character.UnicodeBlock ENCLOSED_IDEOGRAPHIC_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock ETHIOPIC;
-    field public static final java.lang.Character.UnicodeBlock ETHIOPIC_EXTENDED;
-    field public static final java.lang.Character.UnicodeBlock ETHIOPIC_EXTENDED_A;
-    field public static final java.lang.Character.UnicodeBlock ETHIOPIC_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock GENERAL_PUNCTUATION;
-    field public static final java.lang.Character.UnicodeBlock GEOMETRIC_SHAPES;
-    field public static final java.lang.Character.UnicodeBlock GEORGIAN;
-    field public static final java.lang.Character.UnicodeBlock GEORGIAN_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock GLAGOLITIC;
-    field public static final java.lang.Character.UnicodeBlock GOTHIC;
-    field public static final java.lang.Character.UnicodeBlock GREEK;
-    field public static final java.lang.Character.UnicodeBlock GREEK_EXTENDED;
-    field public static final java.lang.Character.UnicodeBlock GUJARATI;
-    field public static final java.lang.Character.UnicodeBlock GURMUKHI;
-    field public static final java.lang.Character.UnicodeBlock HALFWIDTH_AND_FULLWIDTH_FORMS;
-    field public static final java.lang.Character.UnicodeBlock HANGUL_COMPATIBILITY_JAMO;
-    field public static final java.lang.Character.UnicodeBlock HANGUL_JAMO;
-    field public static final java.lang.Character.UnicodeBlock HANGUL_JAMO_EXTENDED_A;
-    field public static final java.lang.Character.UnicodeBlock HANGUL_JAMO_EXTENDED_B;
-    field public static final java.lang.Character.UnicodeBlock HANGUL_SYLLABLES;
-    field public static final java.lang.Character.UnicodeBlock HANUNOO;
-    field public static final java.lang.Character.UnicodeBlock HEBREW;
-    field public static final java.lang.Character.UnicodeBlock HIGH_PRIVATE_USE_SURROGATES;
-    field public static final java.lang.Character.UnicodeBlock HIGH_SURROGATES;
-    field public static final java.lang.Character.UnicodeBlock HIRAGANA;
-    field public static final java.lang.Character.UnicodeBlock IDEOGRAPHIC_DESCRIPTION_CHARACTERS;
-    field public static final java.lang.Character.UnicodeBlock IMPERIAL_ARAMAIC;
-    field public static final java.lang.Character.UnicodeBlock INSCRIPTIONAL_PAHLAVI;
-    field public static final java.lang.Character.UnicodeBlock INSCRIPTIONAL_PARTHIAN;
-    field public static final java.lang.Character.UnicodeBlock IPA_EXTENSIONS;
-    field public static final java.lang.Character.UnicodeBlock JAVANESE;
-    field public static final java.lang.Character.UnicodeBlock KAITHI;
-    field public static final java.lang.Character.UnicodeBlock KANA_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock KANBUN;
-    field public static final java.lang.Character.UnicodeBlock KANGXI_RADICALS;
-    field public static final java.lang.Character.UnicodeBlock KANNADA;
-    field public static final java.lang.Character.UnicodeBlock KATAKANA;
-    field public static final java.lang.Character.UnicodeBlock KATAKANA_PHONETIC_EXTENSIONS;
-    field public static final java.lang.Character.UnicodeBlock KAYAH_LI;
-    field public static final java.lang.Character.UnicodeBlock KHAROSHTHI;
-    field public static final java.lang.Character.UnicodeBlock KHMER;
-    field public static final java.lang.Character.UnicodeBlock KHMER_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock LAO;
-    field public static final java.lang.Character.UnicodeBlock LATIN_1_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock LATIN_EXTENDED_A;
-    field public static final java.lang.Character.UnicodeBlock LATIN_EXTENDED_ADDITIONAL;
-    field public static final java.lang.Character.UnicodeBlock LATIN_EXTENDED_B;
-    field public static final java.lang.Character.UnicodeBlock LATIN_EXTENDED_C;
-    field public static final java.lang.Character.UnicodeBlock LATIN_EXTENDED_D;
-    field public static final java.lang.Character.UnicodeBlock LEPCHA;
-    field public static final java.lang.Character.UnicodeBlock LETTERLIKE_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock LIMBU;
-    field public static final java.lang.Character.UnicodeBlock LINEAR_B_IDEOGRAMS;
-    field public static final java.lang.Character.UnicodeBlock LINEAR_B_SYLLABARY;
-    field public static final java.lang.Character.UnicodeBlock LISU;
-    field public static final java.lang.Character.UnicodeBlock LOW_SURROGATES;
-    field public static final java.lang.Character.UnicodeBlock LYCIAN;
-    field public static final java.lang.Character.UnicodeBlock LYDIAN;
-    field public static final java.lang.Character.UnicodeBlock MAHJONG_TILES;
-    field public static final java.lang.Character.UnicodeBlock MALAYALAM;
-    field public static final java.lang.Character.UnicodeBlock MANDAIC;
-    field public static final java.lang.Character.UnicodeBlock MATHEMATICAL_ALPHANUMERIC_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock MATHEMATICAL_OPERATORS;
-    field public static final java.lang.Character.UnicodeBlock MEETEI_MAYEK;
-    field public static final java.lang.Character.UnicodeBlock MEETEI_MAYEK_EXTENSIONS;
-    field public static final java.lang.Character.UnicodeBlock MEROITIC_CURSIVE;
-    field public static final java.lang.Character.UnicodeBlock MEROITIC_HIEROGLYPHS;
-    field public static final java.lang.Character.UnicodeBlock MIAO;
-    field public static final java.lang.Character.UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A;
-    field public static final java.lang.Character.UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B;
-    field public static final java.lang.Character.UnicodeBlock MISCELLANEOUS_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_ARROWS;
-    field public static final java.lang.Character.UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS;
-    field public static final java.lang.Character.UnicodeBlock MISCELLANEOUS_TECHNICAL;
-    field public static final java.lang.Character.UnicodeBlock MODIFIER_TONE_LETTERS;
-    field public static final java.lang.Character.UnicodeBlock MONGOLIAN;
-    field public static final java.lang.Character.UnicodeBlock MUSICAL_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock MYANMAR;
-    field public static final java.lang.Character.UnicodeBlock MYANMAR_EXTENDED_A;
-    field public static final java.lang.Character.UnicodeBlock NEW_TAI_LUE;
-    field public static final java.lang.Character.UnicodeBlock NKO;
-    field public static final java.lang.Character.UnicodeBlock NUMBER_FORMS;
-    field public static final java.lang.Character.UnicodeBlock OGHAM;
-    field public static final java.lang.Character.UnicodeBlock OLD_ITALIC;
-    field public static final java.lang.Character.UnicodeBlock OLD_PERSIAN;
-    field public static final java.lang.Character.UnicodeBlock OLD_SOUTH_ARABIAN;
-    field public static final java.lang.Character.UnicodeBlock OLD_TURKIC;
-    field public static final java.lang.Character.UnicodeBlock OL_CHIKI;
-    field public static final java.lang.Character.UnicodeBlock OPTICAL_CHARACTER_RECOGNITION;
-    field public static final java.lang.Character.UnicodeBlock ORIYA;
-    field public static final java.lang.Character.UnicodeBlock OSMANYA;
-    field public static final java.lang.Character.UnicodeBlock PHAGS_PA;
-    field public static final java.lang.Character.UnicodeBlock PHAISTOS_DISC;
-    field public static final java.lang.Character.UnicodeBlock PHOENICIAN;
-    field public static final java.lang.Character.UnicodeBlock PHONETIC_EXTENSIONS;
-    field public static final java.lang.Character.UnicodeBlock PHONETIC_EXTENSIONS_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock PLAYING_CARDS;
-    field public static final java.lang.Character.UnicodeBlock PRIVATE_USE_AREA;
-    field public static final java.lang.Character.UnicodeBlock REJANG;
-    field public static final java.lang.Character.UnicodeBlock RUMI_NUMERAL_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock RUNIC;
-    field public static final java.lang.Character.UnicodeBlock SAMARITAN;
-    field public static final java.lang.Character.UnicodeBlock SAURASHTRA;
-    field public static final java.lang.Character.UnicodeBlock SHARADA;
-    field public static final java.lang.Character.UnicodeBlock SHAVIAN;
-    field public static final java.lang.Character.UnicodeBlock SINHALA;
-    field public static final java.lang.Character.UnicodeBlock SMALL_FORM_VARIANTS;
-    field public static final java.lang.Character.UnicodeBlock SORA_SOMPENG;
-    field public static final java.lang.Character.UnicodeBlock SPACING_MODIFIER_LETTERS;
-    field public static final java.lang.Character.UnicodeBlock SPECIALS;
-    field public static final java.lang.Character.UnicodeBlock SUNDANESE;
-    field public static final java.lang.Character.UnicodeBlock SUNDANESE_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock SUPERSCRIPTS_AND_SUBSCRIPTS;
-    field public static final java.lang.Character.UnicodeBlock SUPPLEMENTAL_ARROWS_A;
-    field public static final java.lang.Character.UnicodeBlock SUPPLEMENTAL_ARROWS_B;
-    field public static final java.lang.Character.UnicodeBlock SUPPLEMENTAL_MATHEMATICAL_OPERATORS;
-    field public static final java.lang.Character.UnicodeBlock SUPPLEMENTAL_PUNCTUATION;
-    field public static final java.lang.Character.UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_A;
-    field public static final java.lang.Character.UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_B;
-    field @Deprecated public static final java.lang.Character.UnicodeBlock SURROGATES_AREA;
-    field public static final java.lang.Character.UnicodeBlock SYLOTI_NAGRI;
-    field public static final java.lang.Character.UnicodeBlock SYRIAC;
-    field public static final java.lang.Character.UnicodeBlock TAGALOG;
-    field public static final java.lang.Character.UnicodeBlock TAGBANWA;
-    field public static final java.lang.Character.UnicodeBlock TAGS;
-    field public static final java.lang.Character.UnicodeBlock TAI_LE;
-    field public static final java.lang.Character.UnicodeBlock TAI_THAM;
-    field public static final java.lang.Character.UnicodeBlock TAI_VIET;
-    field public static final java.lang.Character.UnicodeBlock TAI_XUAN_JING_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock TAKRI;
-    field public static final java.lang.Character.UnicodeBlock TAMIL;
-    field public static final java.lang.Character.UnicodeBlock TELUGU;
-    field public static final java.lang.Character.UnicodeBlock THAANA;
-    field public static final java.lang.Character.UnicodeBlock THAI;
-    field public static final java.lang.Character.UnicodeBlock TIBETAN;
-    field public static final java.lang.Character.UnicodeBlock TIFINAGH;
-    field public static final java.lang.Character.UnicodeBlock TRANSPORT_AND_MAP_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock UGARITIC;
-    field public static final java.lang.Character.UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS;
-    field public static final java.lang.Character.UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED;
-    field public static final java.lang.Character.UnicodeBlock VAI;
-    field public static final java.lang.Character.UnicodeBlock VARIATION_SELECTORS;
-    field public static final java.lang.Character.UnicodeBlock VARIATION_SELECTORS_SUPPLEMENT;
-    field public static final java.lang.Character.UnicodeBlock VEDIC_EXTENSIONS;
-    field public static final java.lang.Character.UnicodeBlock VERTICAL_FORMS;
-    field public static final java.lang.Character.UnicodeBlock YIJING_HEXAGRAM_SYMBOLS;
-    field public static final java.lang.Character.UnicodeBlock YI_RADICALS;
-    field public static final java.lang.Character.UnicodeBlock YI_SYLLABLES;
-  }
-
-  public enum Character.UnicodeScript {
-    method @NonNull public static java.lang.Character.UnicodeScript forName(@NonNull String);
-    method @NonNull public static java.lang.Character.UnicodeScript of(int);
-    enum_constant public static final java.lang.Character.UnicodeScript ARABIC;
-    enum_constant public static final java.lang.Character.UnicodeScript ARMENIAN;
-    enum_constant public static final java.lang.Character.UnicodeScript AVESTAN;
-    enum_constant public static final java.lang.Character.UnicodeScript BALINESE;
-    enum_constant public static final java.lang.Character.UnicodeScript BAMUM;
-    enum_constant public static final java.lang.Character.UnicodeScript BATAK;
-    enum_constant public static final java.lang.Character.UnicodeScript BENGALI;
-    enum_constant public static final java.lang.Character.UnicodeScript BOPOMOFO;
-    enum_constant public static final java.lang.Character.UnicodeScript BRAHMI;
-    enum_constant public static final java.lang.Character.UnicodeScript BRAILLE;
-    enum_constant public static final java.lang.Character.UnicodeScript BUGINESE;
-    enum_constant public static final java.lang.Character.UnicodeScript BUHID;
-    enum_constant public static final java.lang.Character.UnicodeScript CANADIAN_ABORIGINAL;
-    enum_constant public static final java.lang.Character.UnicodeScript CARIAN;
-    enum_constant public static final java.lang.Character.UnicodeScript CHAKMA;
-    enum_constant public static final java.lang.Character.UnicodeScript CHAM;
-    enum_constant public static final java.lang.Character.UnicodeScript CHEROKEE;
-    enum_constant public static final java.lang.Character.UnicodeScript COMMON;
-    enum_constant public static final java.lang.Character.UnicodeScript COPTIC;
-    enum_constant public static final java.lang.Character.UnicodeScript CUNEIFORM;
-    enum_constant public static final java.lang.Character.UnicodeScript CYPRIOT;
-    enum_constant public static final java.lang.Character.UnicodeScript CYRILLIC;
-    enum_constant public static final java.lang.Character.UnicodeScript DESERET;
-    enum_constant public static final java.lang.Character.UnicodeScript DEVANAGARI;
-    enum_constant public static final java.lang.Character.UnicodeScript EGYPTIAN_HIEROGLYPHS;
-    enum_constant public static final java.lang.Character.UnicodeScript ETHIOPIC;
-    enum_constant public static final java.lang.Character.UnicodeScript GEORGIAN;
-    enum_constant public static final java.lang.Character.UnicodeScript GLAGOLITIC;
-    enum_constant public static final java.lang.Character.UnicodeScript GOTHIC;
-    enum_constant public static final java.lang.Character.UnicodeScript GREEK;
-    enum_constant public static final java.lang.Character.UnicodeScript GUJARATI;
-    enum_constant public static final java.lang.Character.UnicodeScript GURMUKHI;
-    enum_constant public static final java.lang.Character.UnicodeScript HAN;
-    enum_constant public static final java.lang.Character.UnicodeScript HANGUL;
-    enum_constant public static final java.lang.Character.UnicodeScript HANUNOO;
-    enum_constant public static final java.lang.Character.UnicodeScript HEBREW;
-    enum_constant public static final java.lang.Character.UnicodeScript HIRAGANA;
-    enum_constant public static final java.lang.Character.UnicodeScript IMPERIAL_ARAMAIC;
-    enum_constant public static final java.lang.Character.UnicodeScript INHERITED;
-    enum_constant public static final java.lang.Character.UnicodeScript INSCRIPTIONAL_PAHLAVI;
-    enum_constant public static final java.lang.Character.UnicodeScript INSCRIPTIONAL_PARTHIAN;
-    enum_constant public static final java.lang.Character.UnicodeScript JAVANESE;
-    enum_constant public static final java.lang.Character.UnicodeScript KAITHI;
-    enum_constant public static final java.lang.Character.UnicodeScript KANNADA;
-    enum_constant public static final java.lang.Character.UnicodeScript KATAKANA;
-    enum_constant public static final java.lang.Character.UnicodeScript KAYAH_LI;
-    enum_constant public static final java.lang.Character.UnicodeScript KHAROSHTHI;
-    enum_constant public static final java.lang.Character.UnicodeScript KHMER;
-    enum_constant public static final java.lang.Character.UnicodeScript LAO;
-    enum_constant public static final java.lang.Character.UnicodeScript LATIN;
-    enum_constant public static final java.lang.Character.UnicodeScript LEPCHA;
-    enum_constant public static final java.lang.Character.UnicodeScript LIMBU;
-    enum_constant public static final java.lang.Character.UnicodeScript LINEAR_B;
-    enum_constant public static final java.lang.Character.UnicodeScript LISU;
-    enum_constant public static final java.lang.Character.UnicodeScript LYCIAN;
-    enum_constant public static final java.lang.Character.UnicodeScript LYDIAN;
-    enum_constant public static final java.lang.Character.UnicodeScript MALAYALAM;
-    enum_constant public static final java.lang.Character.UnicodeScript MANDAIC;
-    enum_constant public static final java.lang.Character.UnicodeScript MEETEI_MAYEK;
-    enum_constant public static final java.lang.Character.UnicodeScript MEROITIC_CURSIVE;
-    enum_constant public static final java.lang.Character.UnicodeScript MEROITIC_HIEROGLYPHS;
-    enum_constant public static final java.lang.Character.UnicodeScript MIAO;
-    enum_constant public static final java.lang.Character.UnicodeScript MONGOLIAN;
-    enum_constant public static final java.lang.Character.UnicodeScript MYANMAR;
-    enum_constant public static final java.lang.Character.UnicodeScript NEW_TAI_LUE;
-    enum_constant public static final java.lang.Character.UnicodeScript NKO;
-    enum_constant public static final java.lang.Character.UnicodeScript OGHAM;
-    enum_constant public static final java.lang.Character.UnicodeScript OLD_ITALIC;
-    enum_constant public static final java.lang.Character.UnicodeScript OLD_PERSIAN;
-    enum_constant public static final java.lang.Character.UnicodeScript OLD_SOUTH_ARABIAN;
-    enum_constant public static final java.lang.Character.UnicodeScript OLD_TURKIC;
-    enum_constant public static final java.lang.Character.UnicodeScript OL_CHIKI;
-    enum_constant public static final java.lang.Character.UnicodeScript ORIYA;
-    enum_constant public static final java.lang.Character.UnicodeScript OSMANYA;
-    enum_constant public static final java.lang.Character.UnicodeScript PHAGS_PA;
-    enum_constant public static final java.lang.Character.UnicodeScript PHOENICIAN;
-    enum_constant public static final java.lang.Character.UnicodeScript REJANG;
-    enum_constant public static final java.lang.Character.UnicodeScript RUNIC;
-    enum_constant public static final java.lang.Character.UnicodeScript SAMARITAN;
-    enum_constant public static final java.lang.Character.UnicodeScript SAURASHTRA;
-    enum_constant public static final java.lang.Character.UnicodeScript SHARADA;
-    enum_constant public static final java.lang.Character.UnicodeScript SHAVIAN;
-    enum_constant public static final java.lang.Character.UnicodeScript SINHALA;
-    enum_constant public static final java.lang.Character.UnicodeScript SORA_SOMPENG;
-    enum_constant public static final java.lang.Character.UnicodeScript SUNDANESE;
-    enum_constant public static final java.lang.Character.UnicodeScript SYLOTI_NAGRI;
-    enum_constant public static final java.lang.Character.UnicodeScript SYRIAC;
-    enum_constant public static final java.lang.Character.UnicodeScript TAGALOG;
-    enum_constant public static final java.lang.Character.UnicodeScript TAGBANWA;
-    enum_constant public static final java.lang.Character.UnicodeScript TAI_LE;
-    enum_constant public static final java.lang.Character.UnicodeScript TAI_THAM;
-    enum_constant public static final java.lang.Character.UnicodeScript TAI_VIET;
-    enum_constant public static final java.lang.Character.UnicodeScript TAKRI;
-    enum_constant public static final java.lang.Character.UnicodeScript TAMIL;
-    enum_constant public static final java.lang.Character.UnicodeScript TELUGU;
-    enum_constant public static final java.lang.Character.UnicodeScript THAANA;
-    enum_constant public static final java.lang.Character.UnicodeScript THAI;
-    enum_constant public static final java.lang.Character.UnicodeScript TIBETAN;
-    enum_constant public static final java.lang.Character.UnicodeScript TIFINAGH;
-    enum_constant public static final java.lang.Character.UnicodeScript UGARITIC;
-    enum_constant public static final java.lang.Character.UnicodeScript UNKNOWN;
-    enum_constant public static final java.lang.Character.UnicodeScript VAI;
-    enum_constant public static final java.lang.Character.UnicodeScript YI;
-  }
-
-  public final class Class<T> implements java.lang.reflect.AnnotatedElement java.lang.reflect.GenericDeclaration java.io.Serializable java.lang.reflect.Type {
-    method @NonNull public <U> Class<? extends U> asSubclass(@NonNull Class<U>);
-    method @Nullable public T cast(@Nullable Object);
-    method public boolean desiredAssertionStatus();
-    method @NonNull public static Class<?> forName(@NonNull String) throws java.lang.ClassNotFoundException;
-    method @NonNull public static Class<?> forName(@NonNull String, boolean, @Nullable ClassLoader) throws java.lang.ClassNotFoundException;
-    method @Nullable public <A extends java.lang.annotation.Annotation> A getAnnotation(@NonNull Class<A>);
-    method @NonNull public java.lang.annotation.Annotation[] getAnnotations();
-    method @NonNull public <A extends java.lang.annotation.Annotation> A[] getAnnotationsByType(@NonNull Class<A>);
-    method @Nullable public String getCanonicalName();
-    method @Nullable public ClassLoader getClassLoader();
-    method @NonNull public Class<?>[] getClasses();
-    method @Nullable public Class<?> getComponentType();
-    method @NonNull public java.lang.reflect.Constructor<T> getConstructor(@Nullable Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
-    method @NonNull public java.lang.reflect.Constructor<?>[] getConstructors() throws java.lang.SecurityException;
-    method @Nullable public <A extends java.lang.annotation.Annotation> A getDeclaredAnnotation(@NonNull Class<A>);
-    method @NonNull public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    method @NonNull public Class<?>[] getDeclaredClasses();
-    method @NonNull public java.lang.reflect.Constructor<T> getDeclaredConstructor(@Nullable Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
-    method @NonNull public java.lang.reflect.Constructor<?>[] getDeclaredConstructors() throws java.lang.SecurityException;
-    method @NonNull public java.lang.reflect.Field getDeclaredField(@NonNull String) throws java.lang.NoSuchFieldException;
-    method @NonNull public java.lang.reflect.Field[] getDeclaredFields();
-    method @NonNull public java.lang.reflect.Method getDeclaredMethod(@NonNull String, @Nullable Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
-    method @NonNull public java.lang.reflect.Method[] getDeclaredMethods() throws java.lang.SecurityException;
-    method @Nullable public Class<?> getDeclaringClass();
-    method @Nullable public Class<?> getEnclosingClass();
-    method @Nullable public java.lang.reflect.Constructor<?> getEnclosingConstructor();
-    method @Nullable public java.lang.reflect.Method getEnclosingMethod();
-    method @Nullable public T[] getEnumConstants();
-    method @NonNull public java.lang.reflect.Field getField(@NonNull String) throws java.lang.NoSuchFieldException;
-    method @NonNull public java.lang.reflect.Field[] getFields() throws java.lang.SecurityException;
-    method @NonNull public java.lang.reflect.Type[] getGenericInterfaces();
-    method @Nullable public java.lang.reflect.Type getGenericSuperclass();
-    method @NonNull public Class<?>[] getInterfaces();
-    method @NonNull public java.lang.reflect.Method getMethod(@NonNull String, @Nullable Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
-    method @NonNull public java.lang.reflect.Method[] getMethods() throws java.lang.SecurityException;
-    method public int getModifiers();
-    method @NonNull public String getName();
-    method @Nullable public Package getPackage();
-    method @Nullable public java.security.ProtectionDomain getProtectionDomain();
-    method @Nullable public java.net.URL getResource(@NonNull String);
-    method @Nullable public java.io.InputStream getResourceAsStream(@NonNull String);
-    method @Nullable public Object[] getSigners();
-    method @NonNull public String getSimpleName();
-    method @Nullable public Class<? super T> getSuperclass();
-    method @NonNull public java.lang.reflect.TypeVariable<java.lang.Class<T>>[] getTypeParameters();
-    method public boolean isAnnotation();
-    method public boolean isAnonymousClass();
-    method public boolean isArray();
-    method public boolean isAssignableFrom(@NonNull Class<?>);
-    method public boolean isEnum();
-    method public boolean isInstance(@Nullable Object);
-    method public boolean isInterface();
-    method public boolean isLocalClass();
-    method public boolean isMemberClass();
-    method public boolean isPrimitive();
-    method public boolean isSynthetic();
-    method @NonNull public T newInstance() throws java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method @NonNull public String toGenericString();
-  }
-
-  public class ClassCastException extends java.lang.RuntimeException {
-    ctor public ClassCastException();
-    ctor public ClassCastException(String);
-  }
-
-  public class ClassCircularityError extends java.lang.LinkageError {
-    ctor public ClassCircularityError();
-    ctor public ClassCircularityError(String);
-  }
-
-  public class ClassFormatError extends java.lang.LinkageError {
-    ctor public ClassFormatError();
-    ctor public ClassFormatError(String);
-  }
-
-  public abstract class ClassLoader {
-    ctor protected ClassLoader(ClassLoader);
-    ctor protected ClassLoader();
-    method public void clearAssertionStatus();
-    method @Deprecated protected final Class<?> defineClass(byte[], int, int) throws java.lang.ClassFormatError;
-    method protected final Class<?> defineClass(String, byte[], int, int) throws java.lang.ClassFormatError;
-    method protected final Class<?> defineClass(String, byte[], int, int, java.security.ProtectionDomain) throws java.lang.ClassFormatError;
-    method protected final Class<?> defineClass(String, java.nio.ByteBuffer, java.security.ProtectionDomain) throws java.lang.ClassFormatError;
-    method protected Package definePackage(String, String, String, String, String, String, String, java.net.URL) throws java.lang.IllegalArgumentException;
-    method protected Class<?> findClass(String) throws java.lang.ClassNotFoundException;
-    method protected String findLibrary(String);
-    method protected final Class<?> findLoadedClass(String);
-    method protected java.net.URL findResource(String);
-    method protected java.util.Enumeration<java.net.URL> findResources(String) throws java.io.IOException;
-    method protected final Class<?> findSystemClass(String) throws java.lang.ClassNotFoundException;
-    method protected Package getPackage(String);
-    method protected Package[] getPackages();
-    method public final ClassLoader getParent();
-    method public java.net.URL getResource(String);
-    method public java.io.InputStream getResourceAsStream(String);
-    method public java.util.Enumeration<java.net.URL> getResources(String) throws java.io.IOException;
-    method public static ClassLoader getSystemClassLoader();
-    method public static java.net.URL getSystemResource(String);
-    method public static java.io.InputStream getSystemResourceAsStream(String);
-    method public static java.util.Enumeration<java.net.URL> getSystemResources(String) throws java.io.IOException;
-    method public Class<?> loadClass(String) throws java.lang.ClassNotFoundException;
-    method protected Class<?> loadClass(String, boolean) throws java.lang.ClassNotFoundException;
-    method protected static boolean registerAsParallelCapable();
-    method protected final void resolveClass(Class<?>);
-    method public void setClassAssertionStatus(String, boolean);
-    method public void setDefaultAssertionStatus(boolean);
-    method public void setPackageAssertionStatus(String, boolean);
-    method protected final void setSigners(Class<?>, Object[]);
-  }
-
-  public class ClassNotFoundException extends java.lang.ReflectiveOperationException {
-    ctor public ClassNotFoundException();
-    ctor public ClassNotFoundException(String);
-    ctor public ClassNotFoundException(String, Throwable);
-    method public Throwable getException();
-  }
-
-  public class CloneNotSupportedException extends java.lang.Exception {
-    ctor public CloneNotSupportedException();
-    ctor public CloneNotSupportedException(String);
-  }
-
-  public interface Cloneable {
-  }
-
-  public interface Comparable<T> {
-    method public int compareTo(T);
-  }
-
-  public final class Compiler {
-    method public static Object command(Object);
-    method public static boolean compileClass(Class<?>);
-    method public static boolean compileClasses(String);
-    method public static void disable();
-    method public static void enable();
-  }
-
-  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PACKAGE, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.TYPE}) public @interface Deprecated {
-  }
-
-  public final class Double extends java.lang.Number implements java.lang.Comparable<java.lang.Double> {
-    ctor public Double(double);
-    ctor public Double(@NonNull String) throws java.lang.NumberFormatException;
-    method public static int compare(double, double);
-    method public int compareTo(@NonNull Double);
-    method public static long doubleToLongBits(double);
-    method public static long doubleToRawLongBits(double);
-    method public double doubleValue();
-    method public float floatValue();
-    method public static int hashCode(double);
-    method public int intValue();
-    method public static boolean isFinite(double);
-    method public static boolean isInfinite(double);
-    method public boolean isInfinite();
-    method public static boolean isNaN(double);
-    method public boolean isNaN();
-    method public static double longBitsToDouble(long);
-    method public long longValue();
-    method public static double max(double, double);
-    method public static double min(double, double);
-    method public static double parseDouble(@NonNull String) throws java.lang.NumberFormatException;
-    method public static double sum(double, double);
-    method @NonNull public static String toHexString(double);
-    method @NonNull public static String toString(double);
-    method @NonNull public static Double valueOf(@NonNull String) throws java.lang.NumberFormatException;
-    method @NonNull public static Double valueOf(double);
-    field public static final int BYTES = 8; // 0x8
-    field public static final int MAX_EXPONENT = 1023; // 0x3ff
-    field public static final double MAX_VALUE = 1.7976931348623157E308;
-    field public static final int MIN_EXPONENT = -1022; // 0xfffffc02
-    field public static final double MIN_NORMAL = 2.2250738585072014E-308;
-    field public static final double MIN_VALUE = 4.9E-324;
-    field public static final double NEGATIVE_INFINITY = (-1.0/0.0);
-    field public static final double NaN = (0.0/0.0);
-    field public static final double POSITIVE_INFINITY = (1.0/0.0);
-    field public static final int SIZE = 64; // 0x40
-    field public static final Class<java.lang.Double> TYPE;
-  }
-
-  public abstract class Enum<E extends java.lang.Enum<E>> implements java.lang.Comparable<E> java.io.Serializable {
-    ctor protected Enum(@NonNull String, int);
-    method @NonNull protected final Object clone() throws java.lang.CloneNotSupportedException;
-    method public final int compareTo(E);
-    method public final boolean equals(@Nullable Object);
-    method protected final void finalize();
-    method @NonNull public final Class<E> getDeclaringClass();
-    method public final int hashCode();
-    method @NonNull public final String name();
-    method public final int ordinal();
-    method @NonNull public static <T extends java.lang.Enum<T>> T valueOf(@NonNull Class<T>, @NonNull String);
-  }
-
-  public class EnumConstantNotPresentException extends java.lang.RuntimeException {
-    ctor public EnumConstantNotPresentException(Class<? extends java.lang.Enum>, String);
-    method public String constantName();
-    method public Class<? extends java.lang.Enum> enumType();
-  }
-
-  public class Error extends java.lang.Throwable {
-    ctor public Error();
-    ctor public Error(String);
-    ctor public Error(String, Throwable);
-    ctor public Error(Throwable);
-    ctor protected Error(String, Throwable, boolean, boolean);
-  }
-
-  public class Exception extends java.lang.Throwable {
-    ctor public Exception();
-    ctor public Exception(String);
-    ctor public Exception(String, Throwable);
-    ctor public Exception(Throwable);
-    ctor protected Exception(String, Throwable, boolean, boolean);
-  }
-
-  public class ExceptionInInitializerError extends java.lang.LinkageError {
-    ctor public ExceptionInInitializerError();
-    ctor public ExceptionInInitializerError(Throwable);
-    ctor public ExceptionInInitializerError(String);
-    method public Throwable getException();
-  }
-
-  public final class Float extends java.lang.Number implements java.lang.Comparable<java.lang.Float> {
-    ctor public Float(float);
-    ctor public Float(double);
-    ctor public Float(@NonNull String) throws java.lang.NumberFormatException;
-    method public static int compare(float, float);
-    method public int compareTo(@NonNull Float);
-    method public double doubleValue();
-    method public static int floatToIntBits(float);
-    method public static int floatToRawIntBits(float);
-    method public float floatValue();
-    method public static int hashCode(float);
-    method public static float intBitsToFloat(int);
-    method public int intValue();
-    method public static boolean isFinite(float);
-    method public static boolean isInfinite(float);
-    method public boolean isInfinite();
-    method public static boolean isNaN(float);
-    method public boolean isNaN();
-    method public long longValue();
-    method public static float max(float, float);
-    method public static float min(float, float);
-    method public static float parseFloat(@NonNull String) throws java.lang.NumberFormatException;
-    method public static float sum(float, float);
-    method @NonNull public static String toHexString(float);
-    method @NonNull public static String toString(float);
-    method @NonNull public static Float valueOf(@NonNull String) throws java.lang.NumberFormatException;
-    method @NonNull public static Float valueOf(float);
-    field public static final int BYTES = 4; // 0x4
-    field public static final int MAX_EXPONENT = 127; // 0x7f
-    field public static final float MAX_VALUE = 3.4028235E38f;
-    field public static final int MIN_EXPONENT = -126; // 0xffffff82
-    field public static final float MIN_NORMAL = 1.17549435E-38f;
-    field public static final float MIN_VALUE = 1.4E-45f;
-    field public static final float NEGATIVE_INFINITY = (-1.0f/0.0f);
-    field public static final float NaN = (0.0f/0.0f);
-    field public static final float POSITIVE_INFINITY = (1.0f/0.0f);
-    field public static final int SIZE = 32; // 0x20
-    field public static final Class<java.lang.Float> TYPE;
-  }
-
-  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.TYPE) public @interface FunctionalInterface {
-  }
-
-  public class IllegalAccessError extends java.lang.IncompatibleClassChangeError {
-    ctor public IllegalAccessError();
-    ctor public IllegalAccessError(String);
-  }
-
-  public class IllegalAccessException extends java.lang.ReflectiveOperationException {
-    ctor public IllegalAccessException();
-    ctor public IllegalAccessException(String);
-  }
-
-  public class IllegalArgumentException extends java.lang.RuntimeException {
-    ctor public IllegalArgumentException();
-    ctor public IllegalArgumentException(String);
-    ctor public IllegalArgumentException(String, Throwable);
-    ctor public IllegalArgumentException(Throwable);
-  }
-
-  public class IllegalMonitorStateException extends java.lang.RuntimeException {
-    ctor public IllegalMonitorStateException();
-    ctor public IllegalMonitorStateException(String);
-  }
-
-  public class IllegalStateException extends java.lang.RuntimeException {
-    ctor public IllegalStateException();
-    ctor public IllegalStateException(String);
-    ctor public IllegalStateException(String, Throwable);
-    ctor public IllegalStateException(Throwable);
-  }
-
-  public class IllegalThreadStateException extends java.lang.IllegalArgumentException {
-    ctor public IllegalThreadStateException();
-    ctor public IllegalThreadStateException(String);
-  }
-
-  public class IncompatibleClassChangeError extends java.lang.LinkageError {
-    ctor public IncompatibleClassChangeError();
-    ctor public IncompatibleClassChangeError(String);
-  }
-
-  public class IndexOutOfBoundsException extends java.lang.RuntimeException {
-    ctor public IndexOutOfBoundsException();
-    ctor public IndexOutOfBoundsException(String);
-  }
-
-  public class InheritableThreadLocal<T> extends java.lang.ThreadLocal<T> {
-    ctor public InheritableThreadLocal();
-    method protected T childValue(T);
-  }
-
-  public class InstantiationError extends java.lang.IncompatibleClassChangeError {
-    ctor public InstantiationError();
-    ctor public InstantiationError(String);
-  }
-
-  public class InstantiationException extends java.lang.ReflectiveOperationException {
-    ctor public InstantiationException();
-    ctor public InstantiationException(String);
-  }
-
-  public final class Integer extends java.lang.Number implements java.lang.Comparable<java.lang.Integer> {
-    ctor public Integer(int);
-    ctor public Integer(@NonNull String) throws java.lang.NumberFormatException;
-    method public static int bitCount(int);
-    method public static int compare(int, int);
-    method public int compareTo(@NonNull Integer);
-    method public static int compareUnsigned(int, int);
-    method @NonNull public static Integer decode(@NonNull String) throws java.lang.NumberFormatException;
-    method public static int divideUnsigned(int, int);
-    method public double doubleValue();
-    method public float floatValue();
-    method @Nullable public static Integer getInteger(@NonNull String);
-    method @Nullable public static Integer getInteger(@NonNull String, int);
-    method @Nullable public static Integer getInteger(@NonNull String, @Nullable Integer);
-    method public static int hashCode(int);
-    method public static int highestOneBit(int);
-    method public int intValue();
-    method public long longValue();
-    method public static int lowestOneBit(int);
-    method public static int max(int, int);
-    method public static int min(int, int);
-    method public static int numberOfLeadingZeros(int);
-    method public static int numberOfTrailingZeros(int);
-    method public static int parseInt(@NonNull String, int) throws java.lang.NumberFormatException;
-    method public static int parseInt(@NonNull String) throws java.lang.NumberFormatException;
-    method public static int parseUnsignedInt(@NonNull String, int) throws java.lang.NumberFormatException;
-    method public static int parseUnsignedInt(@NonNull String) throws java.lang.NumberFormatException;
-    method public static int remainderUnsigned(int, int);
-    method public static int reverse(int);
-    method public static int reverseBytes(int);
-    method public static int rotateLeft(int, int);
-    method public static int rotateRight(int, int);
-    method public static int signum(int);
-    method public static int sum(int, int);
-    method @NonNull public static String toBinaryString(int);
-    method @NonNull public static String toHexString(int);
-    method @NonNull public static String toOctalString(int);
-    method @NonNull public static String toString(int, int);
-    method @NonNull public static String toString(int);
-    method public static long toUnsignedLong(int);
-    method @NonNull public static String toUnsignedString(int, int);
-    method @NonNull public static String toUnsignedString(int);
-    method @NonNull public static Integer valueOf(@NonNull String, int) throws java.lang.NumberFormatException;
-    method @NonNull public static Integer valueOf(@NonNull String) throws java.lang.NumberFormatException;
-    method @NonNull public static Integer valueOf(int);
-    field public static final int BYTES = 4; // 0x4
-    field public static final int MAX_VALUE = 2147483647; // 0x7fffffff
-    field public static final int MIN_VALUE = -2147483648; // 0x80000000
-    field public static final int SIZE = 32; // 0x20
-    field public static final Class<java.lang.Integer> TYPE;
-  }
-
-  public class InternalError extends java.lang.VirtualMachineError {
-    ctor public InternalError();
-    ctor public InternalError(String);
-    ctor public InternalError(String, Throwable);
-    ctor public InternalError(Throwable);
-  }
-
-  public class InterruptedException extends java.lang.Exception {
-    ctor public InterruptedException();
-    ctor public InterruptedException(String);
-  }
-
-  public interface Iterable<T> {
-    method public default void forEach(@NonNull java.util.function.Consumer<? super T>);
-    method @NonNull public java.util.Iterator<T> iterator();
-    method @NonNull public default java.util.Spliterator<T> spliterator();
-  }
-
-  public class LinkageError extends java.lang.Error {
-    ctor public LinkageError();
-    ctor public LinkageError(String);
-    ctor public LinkageError(String, Throwable);
-  }
-
-  public final class Long extends java.lang.Number implements java.lang.Comparable<java.lang.Long> {
-    ctor public Long(long);
-    ctor public Long(@NonNull String) throws java.lang.NumberFormatException;
-    method public static int bitCount(long);
-    method public static int compare(long, long);
-    method public int compareTo(@NonNull Long);
-    method public static int compareUnsigned(long, long);
-    method @NonNull public static Long decode(@NonNull String) throws java.lang.NumberFormatException;
-    method public static long divideUnsigned(long, long);
-    method public double doubleValue();
-    method public float floatValue();
-    method @Nullable public static Long getLong(@NonNull String);
-    method @Nullable public static Long getLong(@NonNull String, long);
-    method @Nullable public static Long getLong(@NonNull String, @Nullable Long);
-    method public static int hashCode(long);
-    method public static long highestOneBit(long);
-    method public int intValue();
-    method public long longValue();
-    method public static long lowestOneBit(long);
-    method public static long max(long, long);
-    method public static long min(long, long);
-    method public static int numberOfLeadingZeros(long);
-    method public static int numberOfTrailingZeros(long);
-    method public static long parseLong(@NonNull String, int) throws java.lang.NumberFormatException;
-    method public static long parseLong(@NonNull String) throws java.lang.NumberFormatException;
-    method public static long parseUnsignedLong(@NonNull String, int) throws java.lang.NumberFormatException;
-    method public static long parseUnsignedLong(@NonNull String) throws java.lang.NumberFormatException;
-    method public static long remainderUnsigned(long, long);
-    method public static long reverse(long);
-    method public static long reverseBytes(long);
-    method public static long rotateLeft(long, int);
-    method public static long rotateRight(long, int);
-    method public static int signum(long);
-    method public static long sum(long, long);
-    method @NonNull public static String toBinaryString(long);
-    method @NonNull public static String toHexString(long);
-    method @NonNull public static String toOctalString(long);
-    method @NonNull public static String toString(long, int);
-    method @NonNull public static String toString(long);
-    method @NonNull public static String toUnsignedString(long, int);
-    method @NonNull public static String toUnsignedString(long);
-    method @NonNull public static Long valueOf(@NonNull String, int) throws java.lang.NumberFormatException;
-    method @NonNull public static Long valueOf(@NonNull String) throws java.lang.NumberFormatException;
-    method @NonNull public static Long valueOf(long);
-    field public static final int BYTES = 8; // 0x8
-    field public static final long MAX_VALUE = 9223372036854775807L; // 0x7fffffffffffffffL
-    field public static final long MIN_VALUE = -9223372036854775808L; // 0x8000000000000000L
-    field public static final int SIZE = 64; // 0x40
-    field public static final Class<java.lang.Long> TYPE;
-  }
-
-  public final class Math {
-    method public static double IEEEremainder(double, double);
-    method public static int abs(int);
-    method public static long abs(long);
-    method public static float abs(float);
-    method public static double abs(double);
-    method public static double acos(double);
-    method public static int addExact(int, int);
-    method public static long addExact(long, long);
-    method public static double asin(double);
-    method public static double atan(double);
-    method public static double atan2(double, double);
-    method public static double cbrt(double);
-    method public static double ceil(double);
-    method public static double copySign(double, double);
-    method public static float copySign(float, float);
-    method public static double cos(double);
-    method public static double cosh(double);
-    method public static int decrementExact(int);
-    method public static long decrementExact(long);
-    method public static double exp(double);
-    method public static double expm1(double);
-    method public static double floor(double);
-    method public static int floorDiv(int, int);
-    method public static long floorDiv(long, long);
-    method public static int floorMod(int, int);
-    method public static long floorMod(long, long);
-    method public static int getExponent(float);
-    method public static int getExponent(double);
-    method public static double hypot(double, double);
-    method public static int incrementExact(int);
-    method public static long incrementExact(long);
-    method public static double log(double);
-    method public static double log10(double);
-    method public static double log1p(double);
-    method public static int max(int, int);
-    method public static long max(long, long);
-    method public static float max(float, float);
-    method public static double max(double, double);
-    method public static int min(int, int);
-    method public static long min(long, long);
-    method public static float min(float, float);
-    method public static double min(double, double);
-    method public static int multiplyExact(int, int);
-    method public static long multiplyExact(long, long);
-    method public static int negateExact(int);
-    method public static long negateExact(long);
-    method public static double nextAfter(double, double);
-    method public static float nextAfter(float, double);
-    method public static double nextDown(double);
-    method public static float nextDown(float);
-    method public static double nextUp(double);
-    method public static float nextUp(float);
-    method public static double pow(double, double);
-    method public static double random();
-    method public static double rint(double);
-    method public static int round(float);
-    method public static long round(double);
-    method public static double scalb(double, int);
-    method public static float scalb(float, int);
-    method public static double signum(double);
-    method public static float signum(float);
-    method public static double sin(double);
-    method public static double sinh(double);
-    method public static double sqrt(double);
-    method public static int subtractExact(int, int);
-    method public static long subtractExact(long, long);
-    method public static double tan(double);
-    method public static double tanh(double);
-    method public static double toDegrees(double);
-    method public static int toIntExact(long);
-    method public static double toRadians(double);
-    method public static double ulp(double);
-    method public static float ulp(float);
-    field public static final double E = 2.718281828459045;
-    field public static final double PI = 3.141592653589793;
-  }
-
-  public class NegativeArraySizeException extends java.lang.RuntimeException {
-    ctor public NegativeArraySizeException();
-    ctor public NegativeArraySizeException(String);
-  }
-
-  public class NoClassDefFoundError extends java.lang.LinkageError {
-    ctor public NoClassDefFoundError();
-    ctor public NoClassDefFoundError(String);
-  }
-
-  public class NoSuchFieldError extends java.lang.IncompatibleClassChangeError {
-    ctor public NoSuchFieldError();
-    ctor public NoSuchFieldError(String);
-  }
-
-  public class NoSuchFieldException extends java.lang.ReflectiveOperationException {
-    ctor public NoSuchFieldException();
-    ctor public NoSuchFieldException(String);
-  }
-
-  public class NoSuchMethodError extends java.lang.IncompatibleClassChangeError {
-    ctor public NoSuchMethodError();
-    ctor public NoSuchMethodError(String);
-  }
-
-  public class NoSuchMethodException extends java.lang.ReflectiveOperationException {
-    ctor public NoSuchMethodException();
-    ctor public NoSuchMethodException(String);
-  }
-
-  public class NullPointerException extends java.lang.RuntimeException {
-    ctor public NullPointerException();
-    ctor public NullPointerException(String);
-  }
-
-  public abstract class Number implements java.io.Serializable {
-    ctor public Number();
-    method public byte byteValue();
-    method public abstract double doubleValue();
-    method public abstract float floatValue();
-    method public abstract int intValue();
-    method public abstract long longValue();
-    method public short shortValue();
-  }
-
-  public class NumberFormatException extends java.lang.IllegalArgumentException {
-    ctor public NumberFormatException();
-    ctor public NumberFormatException(String);
-  }
-
-  public class Object {
-    ctor public Object();
-    method @NonNull protected Object clone() throws java.lang.CloneNotSupportedException;
-    method public boolean equals(@Nullable Object);
-    method protected void finalize() throws java.lang.Throwable;
-    method @NonNull public final Class<?> getClass();
-    method public int hashCode();
-    method public final void notify();
-    method public final void notifyAll();
-    method @NonNull public String toString();
-    method public final void wait(long) throws java.lang.InterruptedException;
-    method public final void wait(long, int) throws java.lang.InterruptedException;
-    method public final void wait() throws java.lang.InterruptedException;
-  }
-
-  public class OutOfMemoryError extends java.lang.VirtualMachineError {
-    ctor public OutOfMemoryError();
-    ctor public OutOfMemoryError(String);
-  }
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target(java.lang.annotation.ElementType.METHOD) public @interface Override {
-  }
-
-  public class Package implements java.lang.reflect.AnnotatedElement {
-    method public <A extends java.lang.annotation.Annotation> A getAnnotation(Class<A>);
-    method public java.lang.annotation.Annotation[] getAnnotations();
-    method public <A extends java.lang.annotation.Annotation> A[] getAnnotationsByType(Class<A>);
-    method public <A extends java.lang.annotation.Annotation> A getDeclaredAnnotation(Class<A>);
-    method public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    method public <A extends java.lang.annotation.Annotation> A[] getDeclaredAnnotationsByType(Class<A>);
-    method public String getImplementationTitle();
-    method public String getImplementationVendor();
-    method public String getImplementationVersion();
-    method public String getName();
-    method public static Package getPackage(String);
-    method public static Package[] getPackages();
-    method public String getSpecificationTitle();
-    method public String getSpecificationVendor();
-    method public String getSpecificationVersion();
-    method public boolean isCompatibleWith(String) throws java.lang.NumberFormatException;
-    method public boolean isSealed();
-    method public boolean isSealed(java.net.URL);
-  }
-
-  public abstract class Process {
-    ctor public Process();
-    method public abstract void destroy();
-    method public Process destroyForcibly();
-    method public abstract int exitValue();
-    method public abstract java.io.InputStream getErrorStream();
-    method public abstract java.io.InputStream getInputStream();
-    method public abstract java.io.OutputStream getOutputStream();
-    method public boolean isAlive();
-    method public abstract int waitFor() throws java.lang.InterruptedException;
-    method public boolean waitFor(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-  }
-
-  public final class ProcessBuilder {
-    ctor public ProcessBuilder(java.util.List<java.lang.String>);
-    ctor public ProcessBuilder(java.lang.String...);
-    method public ProcessBuilder command(java.util.List<java.lang.String>);
-    method public ProcessBuilder command(java.lang.String...);
-    method public java.util.List<java.lang.String> command();
-    method public java.io.File directory();
-    method public ProcessBuilder directory(java.io.File);
-    method public java.util.Map<java.lang.String,java.lang.String> environment();
-    method public ProcessBuilder inheritIO();
-    method public ProcessBuilder redirectError(java.lang.ProcessBuilder.Redirect);
-    method public ProcessBuilder redirectError(java.io.File);
-    method public java.lang.ProcessBuilder.Redirect redirectError();
-    method public boolean redirectErrorStream();
-    method public ProcessBuilder redirectErrorStream(boolean);
-    method public ProcessBuilder redirectInput(java.lang.ProcessBuilder.Redirect);
-    method public ProcessBuilder redirectInput(java.io.File);
-    method public java.lang.ProcessBuilder.Redirect redirectInput();
-    method public ProcessBuilder redirectOutput(java.lang.ProcessBuilder.Redirect);
-    method public ProcessBuilder redirectOutput(java.io.File);
-    method public java.lang.ProcessBuilder.Redirect redirectOutput();
-    method public Process start() throws java.io.IOException;
-  }
-
-  public abstract static class ProcessBuilder.Redirect {
-    method public static java.lang.ProcessBuilder.Redirect appendTo(java.io.File);
-    method public java.io.File file();
-    method public static java.lang.ProcessBuilder.Redirect from(java.io.File);
-    method public static java.lang.ProcessBuilder.Redirect to(java.io.File);
-    method public abstract java.lang.ProcessBuilder.Redirect.Type type();
-    field public static final java.lang.ProcessBuilder.Redirect INHERIT;
-    field public static final java.lang.ProcessBuilder.Redirect PIPE;
-  }
-
-  public enum ProcessBuilder.Redirect.Type {
-    enum_constant public static final java.lang.ProcessBuilder.Redirect.Type APPEND;
-    enum_constant public static final java.lang.ProcessBuilder.Redirect.Type INHERIT;
-    enum_constant public static final java.lang.ProcessBuilder.Redirect.Type PIPE;
-    enum_constant public static final java.lang.ProcessBuilder.Redirect.Type READ;
-    enum_constant public static final java.lang.ProcessBuilder.Redirect.Type WRITE;
-  }
-
-  public interface Readable {
-    method public int read(java.nio.CharBuffer) throws java.io.IOException;
-  }
-
-  public class ReflectiveOperationException extends java.lang.Exception {
-    ctor public ReflectiveOperationException();
-    ctor public ReflectiveOperationException(String);
-    ctor public ReflectiveOperationException(String, Throwable);
-    ctor public ReflectiveOperationException(Throwable);
-  }
-
-  @java.lang.FunctionalInterface public interface Runnable {
-    method public void run();
-  }
-
-  public class Runtime {
-    method public void addShutdownHook(Thread);
-    method public int availableProcessors();
-    method public Process exec(String) throws java.io.IOException;
-    method public Process exec(String, String[]) throws java.io.IOException;
-    method public Process exec(String, String[], java.io.File) throws java.io.IOException;
-    method public Process exec(String[]) throws java.io.IOException;
-    method public Process exec(String[], String[]) throws java.io.IOException;
-    method public Process exec(String[], String[], java.io.File) throws java.io.IOException;
-    method public void exit(int);
-    method public long freeMemory();
-    method public void gc();
-    method @Deprecated public java.io.InputStream getLocalizedInputStream(java.io.InputStream);
-    method @Deprecated public java.io.OutputStream getLocalizedOutputStream(java.io.OutputStream);
-    method public static Runtime getRuntime();
-    method public void halt(int);
-    method public void load(String);
-    method public void loadLibrary(String);
-    method public long maxMemory();
-    method public boolean removeShutdownHook(Thread);
-    method public void runFinalization();
-    method @Deprecated public static void runFinalizersOnExit(boolean);
-    method public long totalMemory();
-    method public void traceInstructions(boolean);
-    method public void traceMethodCalls(boolean);
-  }
-
-  public class RuntimeException extends java.lang.Exception {
-    ctor public RuntimeException();
-    ctor public RuntimeException(String);
-    ctor public RuntimeException(String, Throwable);
-    ctor public RuntimeException(Throwable);
-    ctor protected RuntimeException(String, Throwable, boolean, boolean);
-  }
-
-  public final class RuntimePermission extends java.security.BasicPermission {
-    ctor public RuntimePermission(String);
-    ctor public RuntimePermission(String, String);
-  }
-
-  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target({java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.METHOD}) public @interface SafeVarargs {
-  }
-
-  public class SecurityException extends java.lang.RuntimeException {
-    ctor public SecurityException();
-    ctor public SecurityException(String);
-    ctor public SecurityException(String, Throwable);
-    ctor public SecurityException(Throwable);
-  }
-
-  public class SecurityManager {
-    ctor public SecurityManager();
-    method public void checkAccept(String, int);
-    method public void checkAccess(Thread);
-    method public void checkAccess(ThreadGroup);
-    method public void checkAwtEventQueueAccess();
-    method public void checkConnect(String, int);
-    method public void checkConnect(String, int, Object);
-    method public void checkCreateClassLoader();
-    method public void checkDelete(String);
-    method public void checkExec(String);
-    method public void checkExit(int);
-    method public void checkLink(String);
-    method public void checkListen(int);
-    method public void checkMemberAccess(Class<?>, int);
-    method public void checkMulticast(java.net.InetAddress);
-    method @Deprecated public void checkMulticast(java.net.InetAddress, byte);
-    method public void checkPackageAccess(String);
-    method public void checkPackageDefinition(String);
-    method public void checkPermission(java.security.Permission);
-    method public void checkPermission(java.security.Permission, Object);
-    method public void checkPrintJobAccess();
-    method public void checkPropertiesAccess();
-    method public void checkPropertyAccess(String);
-    method public void checkRead(java.io.FileDescriptor);
-    method public void checkRead(String);
-    method public void checkRead(String, Object);
-    method public void checkSecurityAccess(String);
-    method public void checkSetFactory();
-    method public void checkSystemClipboardAccess();
-    method public boolean checkTopLevelWindow(Object);
-    method public void checkWrite(java.io.FileDescriptor);
-    method public void checkWrite(String);
-    method @Deprecated protected int classDepth(String);
-    method @Deprecated protected int classLoaderDepth();
-    method @Deprecated protected ClassLoader currentClassLoader();
-    method @Deprecated protected Class<?> currentLoadedClass();
-    method protected Class[] getClassContext();
-    method @Deprecated public boolean getInCheck();
-    method public Object getSecurityContext();
-    method public ThreadGroup getThreadGroup();
-    method @Deprecated protected boolean inClass(String);
-    method @Deprecated protected boolean inClassLoader();
-    field @Deprecated protected boolean inCheck;
-  }
-
-  public final class Short extends java.lang.Number implements java.lang.Comparable<java.lang.Short> {
-    ctor public Short(short);
-    ctor public Short(String) throws java.lang.NumberFormatException;
-    method public static int compare(short, short);
-    method public int compareTo(Short);
-    method public static Short decode(String) throws java.lang.NumberFormatException;
-    method public double doubleValue();
-    method public float floatValue();
-    method public static int hashCode(short);
-    method public int intValue();
-    method public long longValue();
-    method public static short parseShort(String, int) throws java.lang.NumberFormatException;
-    method public static short parseShort(String) throws java.lang.NumberFormatException;
-    method public static short reverseBytes(short);
-    method public static String toString(short);
-    method public static int toUnsignedInt(short);
-    method public static long toUnsignedLong(short);
-    method public static Short valueOf(String, int) throws java.lang.NumberFormatException;
-    method public static Short valueOf(String) throws java.lang.NumberFormatException;
-    method public static Short valueOf(short);
-    field public static final int BYTES = 2; // 0x2
-    field public static final short MAX_VALUE = 32767; // 0x7fff
-    field public static final short MIN_VALUE = -32768; // 0xffff8000
-    field public static final int SIZE = 16; // 0x10
-    field public static final Class<java.lang.Short> TYPE;
-  }
-
-  public class StackOverflowError extends java.lang.VirtualMachineError {
-    ctor public StackOverflowError();
-    ctor public StackOverflowError(String);
-  }
-
-  public final class StackTraceElement implements java.io.Serializable {
-    ctor public StackTraceElement(String, String, String, int);
-    method public String getClassName();
-    method public String getFileName();
-    method public int getLineNumber();
-    method public String getMethodName();
-    method public boolean isNativeMethod();
-  }
-
-  public final class StrictMath {
-    method public static double IEEEremainder(double, double);
-    method public static int abs(int);
-    method public static long abs(long);
-    method public static float abs(float);
-    method public static double abs(double);
-    method public static double acos(double);
-    method public static int addExact(int, int);
-    method public static long addExact(long, long);
-    method public static double asin(double);
-    method public static double atan(double);
-    method public static double atan2(double, double);
-    method public static double cbrt(double);
-    method public static double ceil(double);
-    method public static double copySign(double, double);
-    method public static float copySign(float, float);
-    method public static double cos(double);
-    method public static double cosh(double);
-    method public static double exp(double);
-    method public static double expm1(double);
-    method public static double floor(double);
-    method public static int floorDiv(int, int);
-    method public static long floorDiv(long, long);
-    method public static int floorMod(int, int);
-    method public static long floorMod(long, long);
-    method public static int getExponent(float);
-    method public static int getExponent(double);
-    method public static double hypot(double, double);
-    method public static double log(double);
-    method public static double log10(double);
-    method public static double log1p(double);
-    method public static int max(int, int);
-    method public static long max(long, long);
-    method public static float max(float, float);
-    method public static double max(double, double);
-    method public static int min(int, int);
-    method public static long min(long, long);
-    method public static float min(float, float);
-    method public static double min(double, double);
-    method public static int multiplyExact(int, int);
-    method public static long multiplyExact(long, long);
-    method public static double nextAfter(double, double);
-    method public static float nextAfter(float, double);
-    method public static double nextDown(double);
-    method public static float nextDown(float);
-    method public static double nextUp(double);
-    method public static float nextUp(float);
-    method public static double pow(double, double);
-    method public static double random();
-    method public static double rint(double);
-    method public static int round(float);
-    method public static long round(double);
-    method public static double scalb(double, int);
-    method public static float scalb(float, int);
-    method public static double signum(double);
-    method public static float signum(float);
-    method public static double sin(double);
-    method public static double sinh(double);
-    method public static double sqrt(double);
-    method public static int subtractExact(int, int);
-    method public static long subtractExact(long, long);
-    method public static double tan(double);
-    method public static double tanh(double);
-    method public static double toDegrees(double);
-    method public static int toIntExact(long);
-    method public static double toRadians(double);
-    method public static double ulp(double);
-    method public static float ulp(float);
-    field public static final double E = 2.718281828459045;
-    field public static final double PI = 3.141592653589793;
-  }
-
-  public final class String implements java.lang.CharSequence java.lang.Comparable<java.lang.String> java.io.Serializable {
-    ctor public String();
-    ctor public String(@NonNull String);
-    ctor public String(char[]);
-    ctor public String(char[], int, int);
-    ctor public String(int[], int, int);
-    ctor @Deprecated public String(byte[], int, int, int);
-    ctor @Deprecated public String(byte[], int);
-    ctor public String(byte[], int, int, @NonNull String) throws java.io.UnsupportedEncodingException;
-    ctor public String(byte[], int, int, @NonNull java.nio.charset.Charset);
-    ctor public String(byte[], @NonNull String) throws java.io.UnsupportedEncodingException;
-    ctor public String(byte[], @NonNull java.nio.charset.Charset);
-    ctor public String(byte[], int, int);
-    ctor public String(byte[]);
-    ctor public String(@NonNull StringBuffer);
-    ctor public String(@NonNull StringBuilder);
-    method public char charAt(int);
-    method public int codePointAt(int);
-    method public int codePointBefore(int);
-    method public int codePointCount(int, int);
-    method public int compareTo(@NonNull String);
-    method public int compareToIgnoreCase(@NonNull String);
-    method @NonNull public String concat(@NonNull String);
-    method public boolean contains(@NonNull CharSequence);
-    method public boolean contentEquals(@NonNull StringBuffer);
-    method public boolean contentEquals(@NonNull CharSequence);
-    method @NonNull public static String copyValueOf(char[], int, int);
-    method @NonNull public static String copyValueOf(char[]);
-    method public boolean endsWith(@NonNull String);
-    method public boolean equalsIgnoreCase(@Nullable String);
-    method @NonNull public static String format(@NonNull String, @NonNull java.lang.Object...);
-    method @NonNull public static String format(@NonNull java.util.Locale, @NonNull String, @NonNull java.lang.Object...);
-    method @Deprecated public void getBytes(int, int, byte[], int);
-    method public byte[] getBytes(@NonNull String) throws java.io.UnsupportedEncodingException;
-    method public byte[] getBytes(@NonNull java.nio.charset.Charset);
-    method public byte[] getBytes();
-    method public void getChars(int, int, char[], int);
-    method public int indexOf(int);
-    method public int indexOf(int, int);
-    method public int indexOf(@NonNull String);
-    method public int indexOf(@NonNull String, int);
-    method @NonNull public String intern();
-    method public boolean isEmpty();
-    method @NonNull public static String join(@NonNull CharSequence, @Nullable java.lang.CharSequence...);
-    method @NonNull public static String join(@NonNull CharSequence, @NonNull Iterable<? extends java.lang.CharSequence>);
-    method public int lastIndexOf(int);
-    method public int lastIndexOf(int, int);
-    method public int lastIndexOf(@NonNull String);
-    method public int lastIndexOf(@NonNull String, int);
-    method public int length();
-    method public boolean matches(@NonNull String);
-    method public int offsetByCodePoints(int, int);
-    method public boolean regionMatches(int, @NonNull String, int, int);
-    method public boolean regionMatches(boolean, int, @NonNull String, int, int);
-    method @NonNull public String replace(char, char);
-    method @NonNull public String replace(@NonNull CharSequence, @NonNull CharSequence);
-    method @NonNull public String replaceAll(@NonNull String, @NonNull String);
-    method @NonNull public String replaceFirst(@NonNull String, @NonNull String);
-    method @NonNull public String[] split(@NonNull String, int);
-    method @NonNull public String[] split(@NonNull String);
-    method public boolean startsWith(@NonNull String, int);
-    method public boolean startsWith(@NonNull String);
-    method @NonNull public CharSequence subSequence(int, int);
-    method @NonNull public String substring(int);
-    method @NonNull public String substring(int, int);
-    method public char[] toCharArray();
-    method @NonNull public String toLowerCase(@NonNull java.util.Locale);
-    method @NonNull public String toLowerCase();
-    method @NonNull public String toUpperCase(@NonNull java.util.Locale);
-    method @NonNull public String toUpperCase();
-    method @NonNull public String trim();
-    method @NonNull public static String valueOf(@Nullable Object);
-    method @NonNull public static String valueOf(char[]);
-    method @NonNull public static String valueOf(char[], int, int);
-    method @NonNull public static String valueOf(boolean);
-    method @NonNull public static String valueOf(char);
-    method @NonNull public static String valueOf(int);
-    method @NonNull public static String valueOf(long);
-    method @NonNull public static String valueOf(float);
-    method @NonNull public static String valueOf(double);
-    field public static final java.util.Comparator<java.lang.String> CASE_INSENSITIVE_ORDER;
-  }
-
-  public final class StringBuffer implements java.lang.Appendable java.lang.CharSequence java.io.Serializable {
-    ctor public StringBuffer();
-    ctor public StringBuffer(int);
-    ctor public StringBuffer(@NonNull String);
-    ctor public StringBuffer(@NonNull CharSequence);
-    method @NonNull public StringBuffer append(@Nullable Object);
-    method @NonNull public StringBuffer append(@Nullable String);
-    method @NonNull public StringBuffer append(@Nullable StringBuffer);
-    method @NonNull public StringBuffer append(@Nullable CharSequence);
-    method @NonNull public StringBuffer append(@Nullable CharSequence, int, int);
-    method @NonNull public StringBuffer append(char[]);
-    method @NonNull public StringBuffer append(char[], int, int);
-    method @NonNull public StringBuffer append(boolean);
-    method @NonNull public StringBuffer append(char);
-    method @NonNull public StringBuffer append(int);
-    method @NonNull public StringBuffer append(long);
-    method @NonNull public StringBuffer append(float);
-    method @NonNull public StringBuffer append(double);
-    method @NonNull public StringBuffer appendCodePoint(int);
-    method public int capacity();
-    method public char charAt(int);
-    method public int codePointAt(int);
-    method public int codePointBefore(int);
-    method public int codePointCount(int, int);
-    method @NonNull public StringBuffer delete(int, int);
-    method @NonNull public StringBuffer deleteCharAt(int);
-    method public void ensureCapacity(int);
-    method public void getChars(int, int, char[], int);
-    method public int indexOf(@NonNull String);
-    method public int indexOf(@NonNull String, int);
-    method @NonNull public StringBuffer insert(int, char[], int, int);
-    method @NonNull public StringBuffer insert(int, @Nullable Object);
-    method @NonNull public StringBuffer insert(int, @Nullable String);
-    method @NonNull public StringBuffer insert(int, char[]);
-    method @NonNull public StringBuffer insert(int, @Nullable CharSequence);
-    method @NonNull public StringBuffer insert(int, @Nullable CharSequence, int, int);
-    method @NonNull public StringBuffer insert(int, boolean);
-    method @NonNull public StringBuffer insert(int, char);
-    method @NonNull public StringBuffer insert(int, int);
-    method @NonNull public StringBuffer insert(int, long);
-    method @NonNull public StringBuffer insert(int, float);
-    method @NonNull public StringBuffer insert(int, double);
-    method public int lastIndexOf(@NonNull String);
-    method public int lastIndexOf(@NonNull String, int);
-    method public int length();
-    method public int offsetByCodePoints(int, int);
-    method @NonNull public StringBuffer replace(int, int, @NonNull String);
-    method @NonNull public StringBuffer reverse();
-    method public void setCharAt(int, char);
-    method public void setLength(int);
-    method @NonNull public CharSequence subSequence(int, int);
-    method @NonNull public String substring(int);
-    method @NonNull public String substring(int, int);
-    method public void trimToSize();
-  }
-
-  public final class StringBuilder implements java.lang.Appendable java.lang.CharSequence java.io.Serializable {
-    ctor public StringBuilder();
-    ctor public StringBuilder(int);
-    ctor public StringBuilder(@NonNull String);
-    ctor public StringBuilder(@NonNull CharSequence);
-    method @NonNull public StringBuilder append(@Nullable Object);
-    method @NonNull public StringBuilder append(@Nullable String);
-    method @NonNull public StringBuilder append(@Nullable StringBuffer);
-    method @NonNull public StringBuilder append(@Nullable CharSequence);
-    method @NonNull public StringBuilder append(@Nullable CharSequence, int, int);
-    method @NonNull public StringBuilder append(char[]);
-    method @NonNull public StringBuilder append(char[], int, int);
-    method @NonNull public StringBuilder append(boolean);
-    method @NonNull public StringBuilder append(char);
-    method @NonNull public StringBuilder append(int);
-    method @NonNull public StringBuilder append(long);
-    method @NonNull public StringBuilder append(float);
-    method @NonNull public StringBuilder append(double);
-    method @NonNull public StringBuilder appendCodePoint(int);
-    method public int capacity();
-    method public char charAt(int);
-    method public int codePointAt(int);
-    method public int codePointBefore(int);
-    method public int codePointCount(int, int);
-    method @NonNull public StringBuilder delete(int, int);
-    method @NonNull public StringBuilder deleteCharAt(int);
-    method public void ensureCapacity(int);
-    method public void getChars(int, int, char[], int);
-    method public int indexOf(@NonNull String);
-    method public int indexOf(@NonNull String, int);
-    method @NonNull public StringBuilder insert(int, char[], int, int);
-    method @NonNull public StringBuilder insert(int, @Nullable Object);
-    method @NonNull public StringBuilder insert(int, @Nullable String);
-    method @NonNull public StringBuilder insert(int, char[]);
-    method @NonNull public StringBuilder insert(int, @Nullable CharSequence);
-    method @NonNull public StringBuilder insert(int, @Nullable CharSequence, int, int);
-    method @NonNull public StringBuilder insert(int, boolean);
-    method @NonNull public StringBuilder insert(int, char);
-    method @NonNull public StringBuilder insert(int, int);
-    method @NonNull public StringBuilder insert(int, long);
-    method @NonNull public StringBuilder insert(int, float);
-    method @NonNull public StringBuilder insert(int, double);
-    method public int lastIndexOf(@NonNull String);
-    method public int lastIndexOf(@NonNull String, int);
-    method public int length();
-    method public int offsetByCodePoints(int, int);
-    method @NonNull public StringBuilder replace(int, int, @NonNull String);
-    method @NonNull public StringBuilder reverse();
-    method public void setCharAt(int, char);
-    method public void setLength(int);
-    method @NonNull public CharSequence subSequence(int, int);
-    method @NonNull public String substring(int);
-    method @NonNull public String substring(int, int);
-    method public void trimToSize();
-  }
-
-  public class StringIndexOutOfBoundsException extends java.lang.IndexOutOfBoundsException {
-    ctor public StringIndexOutOfBoundsException();
-    ctor public StringIndexOutOfBoundsException(String);
-    ctor public StringIndexOutOfBoundsException(int);
-  }
-
-  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE, java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.LOCAL_VARIABLE}) public @interface SuppressWarnings {
-    method public abstract String[] value();
-  }
-
-  public final class System {
-    method public static void arraycopy(@NonNull Object, int, @NonNull Object, int, int);
-    method @Nullable public static String clearProperty(@NonNull String);
-    method @Nullable public static java.io.Console console();
-    method public static long currentTimeMillis();
-    method public static void exit(int);
-    method public static void gc();
-    method @NonNull public static java.util.Properties getProperties();
-    method @Nullable public static String getProperty(@NonNull String);
-    method @Nullable public static String getProperty(@NonNull String, @Nullable String);
-    method @Nullable public static SecurityManager getSecurityManager();
-    method @Nullable public static String getenv(@NonNull String);
-    method @NonNull public static java.util.Map<java.lang.String,java.lang.String> getenv();
-    method public static int identityHashCode(@Nullable Object);
-    method @Nullable public static java.nio.channels.Channel inheritedChannel() throws java.io.IOException;
-    method @NonNull public static String lineSeparator();
-    method public static void load(@NonNull String);
-    method public static void loadLibrary(@NonNull String);
-    method @NonNull public static String mapLibraryName(@NonNull String);
-    method public static long nanoTime();
-    method public static void runFinalization();
-    method @Deprecated public static void runFinalizersOnExit(boolean);
-    method public static void setErr(@Nullable java.io.PrintStream);
-    method public static void setIn(@Nullable java.io.InputStream);
-    method public static void setOut(@Nullable java.io.PrintStream);
-    method public static void setProperties(@Nullable java.util.Properties);
-    method @Nullable public static String setProperty(@NonNull String, @Nullable String);
-    method public static void setSecurityManager(@Nullable SecurityManager);
-    field public static final java.io.PrintStream err;
-    field public static final java.io.InputStream in;
-    field public static final java.io.PrintStream out;
-  }
-
-  public class Thread implements java.lang.Runnable {
-    ctor public Thread();
-    ctor public Thread(@Nullable Runnable);
-    ctor public Thread(@Nullable ThreadGroup, @Nullable Runnable);
-    ctor public Thread(@NonNull String);
-    ctor public Thread(@Nullable ThreadGroup, @NonNull String);
-    ctor public Thread(@Nullable Runnable, @NonNull String);
-    ctor public Thread(@Nullable ThreadGroup, @Nullable Runnable, @NonNull String);
-    ctor public Thread(@Nullable ThreadGroup, @Nullable Runnable, @NonNull String, long);
-    method public static int activeCount();
-    method public final void checkAccess();
-    method @Deprecated public int countStackFrames();
-    method @NonNull public static Thread currentThread();
-    method @Deprecated public void destroy();
-    method public static void dumpStack();
-    method public static int enumerate(Thread[]);
-    method @NonNull public static java.util.Map<java.lang.Thread,java.lang.StackTraceElement[]> getAllStackTraces();
-    method @Nullable public ClassLoader getContextClassLoader();
-    method @Nullable public static java.lang.Thread.UncaughtExceptionHandler getDefaultUncaughtExceptionHandler();
-    method public long getId();
-    method @NonNull public final String getName();
-    method public final int getPriority();
-    method @NonNull public StackTraceElement[] getStackTrace();
-    method @NonNull public java.lang.Thread.State getState();
-    method @Nullable public final ThreadGroup getThreadGroup();
-    method @Nullable public java.lang.Thread.UncaughtExceptionHandler getUncaughtExceptionHandler();
-    method public static boolean holdsLock(@NonNull Object);
-    method public void interrupt();
-    method public static boolean interrupted();
-    method public final boolean isAlive();
-    method public final boolean isDaemon();
-    method public boolean isInterrupted();
-    method public final void join(long) throws java.lang.InterruptedException;
-    method public final void join(long, int) throws java.lang.InterruptedException;
-    method public final void join() throws java.lang.InterruptedException;
-    method @Deprecated public final void resume();
-    method public void run();
-    method public void setContextClassLoader(@Nullable ClassLoader);
-    method public final void setDaemon(boolean);
-    method public static void setDefaultUncaughtExceptionHandler(@Nullable java.lang.Thread.UncaughtExceptionHandler);
-    method public final void setName(@NonNull String);
-    method public final void setPriority(int);
-    method public void setUncaughtExceptionHandler(@Nullable java.lang.Thread.UncaughtExceptionHandler);
-    method public static void sleep(long) throws java.lang.InterruptedException;
-    method public static void sleep(long, int) throws java.lang.InterruptedException;
-    method public void start();
-    method @Deprecated public final void stop();
-    method @Deprecated public final void stop(@Nullable Throwable);
-    method @Deprecated public final void suspend();
-    method public static void yield();
-    field public static final int MAX_PRIORITY = 10; // 0xa
-    field public static final int MIN_PRIORITY = 1; // 0x1
-    field public static final int NORM_PRIORITY = 5; // 0x5
-  }
-
-  public enum Thread.State {
-    enum_constant public static final java.lang.Thread.State BLOCKED;
-    enum_constant public static final java.lang.Thread.State NEW;
-    enum_constant public static final java.lang.Thread.State RUNNABLE;
-    enum_constant public static final java.lang.Thread.State TERMINATED;
-    enum_constant public static final java.lang.Thread.State TIMED_WAITING;
-    enum_constant public static final java.lang.Thread.State WAITING;
-  }
-
-  @java.lang.FunctionalInterface public static interface Thread.UncaughtExceptionHandler {
-    method public void uncaughtException(@NonNull Thread, @NonNull Throwable);
-  }
-
-  public class ThreadDeath extends java.lang.Error {
-    ctor public ThreadDeath();
-  }
-
-  public class ThreadGroup implements java.lang.Thread.UncaughtExceptionHandler {
-    ctor public ThreadGroup(String);
-    ctor public ThreadGroup(ThreadGroup, String);
-    method public int activeCount();
-    method public int activeGroupCount();
-    method @Deprecated public boolean allowThreadSuspension(boolean);
-    method public final void checkAccess();
-    method public final void destroy();
-    method public int enumerate(Thread[]);
-    method public int enumerate(Thread[], boolean);
-    method public int enumerate(ThreadGroup[]);
-    method public int enumerate(ThreadGroup[], boolean);
-    method public final int getMaxPriority();
-    method public final String getName();
-    method public final ThreadGroup getParent();
-    method public final void interrupt();
-    method public final boolean isDaemon();
-    method public boolean isDestroyed();
-    method public void list();
-    method public final boolean parentOf(ThreadGroup);
-    method @Deprecated public final void resume();
-    method public final void setDaemon(boolean);
-    method public final void setMaxPriority(int);
-    method @Deprecated public final void stop();
-    method @Deprecated public final void suspend();
-    method public void uncaughtException(Thread, Throwable);
-  }
-
-  public class ThreadLocal<T> {
-    ctor public ThreadLocal();
-    method @Nullable public T get();
-    method @Nullable protected T initialValue();
-    method public void remove();
-    method public void set(T);
-    method @NonNull public static <S> ThreadLocal<S> withInitial(@NonNull java.util.function.Supplier<? extends S>);
-  }
-
-  public class Throwable implements java.io.Serializable {
-    ctor public Throwable();
-    ctor public Throwable(@Nullable String);
-    ctor public Throwable(@Nullable String, @Nullable Throwable);
-    ctor public Throwable(@Nullable Throwable);
-    ctor protected Throwable(@Nullable String, @Nullable Throwable, boolean, boolean);
-    method public final void addSuppressed(@NonNull Throwable);
-    method @NonNull public Throwable fillInStackTrace();
-    method @Nullable public Throwable getCause();
-    method @Nullable public String getLocalizedMessage();
-    method @Nullable public String getMessage();
-    method @NonNull public StackTraceElement[] getStackTrace();
-    method @NonNull public final Throwable[] getSuppressed();
-    method @NonNull public Throwable initCause(@Nullable Throwable);
-    method public void printStackTrace();
-    method public void printStackTrace(@NonNull java.io.PrintStream);
-    method public void printStackTrace(@NonNull java.io.PrintWriter);
-    method public void setStackTrace(@NonNull StackTraceElement[]);
-  }
-
-  public class TypeNotPresentException extends java.lang.RuntimeException {
-    ctor public TypeNotPresentException(String, Throwable);
-    method public String typeName();
-  }
-
-  public class UnknownError extends java.lang.VirtualMachineError {
-    ctor public UnknownError();
-    ctor public UnknownError(String);
-  }
-
-  public class UnsatisfiedLinkError extends java.lang.LinkageError {
-    ctor public UnsatisfiedLinkError();
-    ctor public UnsatisfiedLinkError(String);
-  }
-
-  public class UnsupportedClassVersionError extends java.lang.ClassFormatError {
-    ctor public UnsupportedClassVersionError();
-    ctor public UnsupportedClassVersionError(String);
-  }
-
-  public class UnsupportedOperationException extends java.lang.RuntimeException {
-    ctor public UnsupportedOperationException();
-    ctor public UnsupportedOperationException(String);
-    ctor public UnsupportedOperationException(String, Throwable);
-    ctor public UnsupportedOperationException(Throwable);
-  }
-
-  public class VerifyError extends java.lang.LinkageError {
-    ctor public VerifyError();
-    ctor public VerifyError(String);
-  }
-
-  public abstract class VirtualMachineError extends java.lang.Error {
-    ctor public VirtualMachineError();
-    ctor public VirtualMachineError(String);
-    ctor public VirtualMachineError(String, Throwable);
-    ctor public VirtualMachineError(Throwable);
-  }
-
-  public final class Void {
-    field public static final Class<java.lang.Void> TYPE;
-  }
-
-}
-
-package java.lang.annotation {
-
-  public interface Annotation {
-    method public Class<? extends java.lang.annotation.Annotation> annotationType();
-    method public boolean equals(Object);
-    method public int hashCode();
-    method public String toString();
-  }
-
-  public class AnnotationFormatError extends java.lang.Error {
-    ctor public AnnotationFormatError(String);
-    ctor public AnnotationFormatError(String, Throwable);
-    ctor public AnnotationFormatError(Throwable);
-  }
-
-  public class AnnotationTypeMismatchException extends java.lang.RuntimeException {
-    ctor public AnnotationTypeMismatchException(java.lang.reflect.Method, String);
-    method public java.lang.reflect.Method element();
-    method public String foundType();
-  }
-
-  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.ANNOTATION_TYPE) public @interface Documented {
-  }
-
-  public enum ElementType {
-    enum_constant public static final java.lang.annotation.ElementType ANNOTATION_TYPE;
-    enum_constant public static final java.lang.annotation.ElementType CONSTRUCTOR;
-    enum_constant public static final java.lang.annotation.ElementType FIELD;
-    enum_constant public static final java.lang.annotation.ElementType LOCAL_VARIABLE;
-    enum_constant public static final java.lang.annotation.ElementType METHOD;
-    enum_constant public static final java.lang.annotation.ElementType PACKAGE;
-    enum_constant public static final java.lang.annotation.ElementType PARAMETER;
-    enum_constant public static final java.lang.annotation.ElementType TYPE;
-    enum_constant public static final java.lang.annotation.ElementType TYPE_PARAMETER;
-    enum_constant public static final java.lang.annotation.ElementType TYPE_USE;
-  }
-
-  public class IncompleteAnnotationException extends java.lang.RuntimeException {
-    ctor public IncompleteAnnotationException(Class<? extends java.lang.annotation.Annotation>, String);
-    method public Class<? extends java.lang.annotation.Annotation> annotationType();
-    method public String elementName();
-  }
-
-  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.ANNOTATION_TYPE) public @interface Inherited {
-  }
-
-  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target(java.lang.annotation.ElementType.FIELD) public @interface Native {
-  }
-
-  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.ANNOTATION_TYPE) public @interface Repeatable {
-    method public abstract Class<? extends java.lang.annotation.Annotation> value();
-  }
-
-  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.ANNOTATION_TYPE) public @interface Retention {
-    method public abstract java.lang.annotation.RetentionPolicy value();
-  }
-
-  public enum RetentionPolicy {
-    enum_constant public static final java.lang.annotation.RetentionPolicy CLASS;
-    enum_constant public static final java.lang.annotation.RetentionPolicy RUNTIME;
-    enum_constant public static final java.lang.annotation.RetentionPolicy SOURCE;
-  }
-
-  @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.ANNOTATION_TYPE) public @interface Target {
-    method public abstract java.lang.annotation.ElementType[] value();
-  }
-
-}
-
-package java.lang.invoke {
-
-  public abstract class CallSite {
-    method public abstract java.lang.invoke.MethodHandle dynamicInvoker();
-    method public abstract java.lang.invoke.MethodHandle getTarget();
-    method public abstract void setTarget(java.lang.invoke.MethodHandle);
-    method public java.lang.invoke.MethodType type();
-  }
-
-  public class ConstantCallSite extends java.lang.invoke.CallSite {
-    ctor public ConstantCallSite(java.lang.invoke.MethodHandle);
-    ctor protected ConstantCallSite(java.lang.invoke.MethodType, java.lang.invoke.MethodHandle) throws java.lang.Throwable;
-    method public final java.lang.invoke.MethodHandle dynamicInvoker();
-    method public final java.lang.invoke.MethodHandle getTarget();
-    method public final void setTarget(java.lang.invoke.MethodHandle);
-  }
-
-  public class LambdaConversionException extends java.lang.Exception {
-    ctor public LambdaConversionException();
-    ctor public LambdaConversionException(String);
-    ctor public LambdaConversionException(String, Throwable);
-    ctor public LambdaConversionException(Throwable);
-    ctor public LambdaConversionException(String, Throwable, boolean, boolean);
-  }
-
-  public abstract class MethodHandle {
-    method public java.lang.invoke.MethodHandle asCollector(Class<?>, int);
-    method public java.lang.invoke.MethodHandle asFixedArity();
-    method public java.lang.invoke.MethodHandle asSpreader(Class<?>, int);
-    method public java.lang.invoke.MethodHandle asType(java.lang.invoke.MethodType);
-    method public java.lang.invoke.MethodHandle asVarargsCollector(Class<?>);
-    method public java.lang.invoke.MethodHandle bindTo(Object);
-    method public final Object invoke(java.lang.Object...) throws java.lang.Throwable;
-    method public final Object invokeExact(java.lang.Object...) throws java.lang.Throwable;
-    method public Object invokeWithArguments(java.lang.Object...) throws java.lang.Throwable;
-    method public Object invokeWithArguments(java.util.List<?>) throws java.lang.Throwable;
-    method public boolean isVarargsCollector();
-    method public java.lang.invoke.MethodType type();
-  }
-
-  public interface MethodHandleInfo {
-    method public Class<?> getDeclaringClass();
-    method public java.lang.invoke.MethodType getMethodType();
-    method public int getModifiers();
-    method public String getName();
-    method public int getReferenceKind();
-    method public default boolean isVarArgs();
-    method @Deprecated public static boolean refKindIsField(int);
-    method @Deprecated public static boolean refKindIsValid(int);
-    method @Deprecated public static String refKindName(int);
-    method public static String referenceKindToString(int);
-    method public <T extends java.lang.reflect.Member> T reflectAs(Class<T>, java.lang.invoke.MethodHandles.Lookup);
-    method public static String toString(int, Class<?>, String, java.lang.invoke.MethodType);
-    field public static final int REF_getField = 1; // 0x1
-    field public static final int REF_getStatic = 2; // 0x2
-    field public static final int REF_invokeInterface = 9; // 0x9
-    field public static final int REF_invokeSpecial = 7; // 0x7
-    field public static final int REF_invokeStatic = 6; // 0x6
-    field public static final int REF_invokeVirtual = 5; // 0x5
-    field public static final int REF_newInvokeSpecial = 8; // 0x8
-    field public static final int REF_putField = 3; // 0x3
-    field public static final int REF_putStatic = 4; // 0x4
-  }
-
-  public class MethodHandles {
-    method public static java.lang.invoke.MethodHandle arrayElementGetter(Class<?>) throws java.lang.IllegalArgumentException;
-    method public static java.lang.invoke.MethodHandle arrayElementSetter(Class<?>) throws java.lang.IllegalArgumentException;
-    method public static java.lang.invoke.MethodHandle catchException(java.lang.invoke.MethodHandle, Class<? extends java.lang.Throwable>, java.lang.invoke.MethodHandle);
-    method public static java.lang.invoke.MethodHandle collectArguments(java.lang.invoke.MethodHandle, int, java.lang.invoke.MethodHandle);
-    method public static java.lang.invoke.MethodHandle constant(Class<?>, Object);
-    method public static java.lang.invoke.MethodHandle dropArguments(java.lang.invoke.MethodHandle, int, java.util.List<java.lang.Class<?>>);
-    method public static java.lang.invoke.MethodHandle dropArguments(java.lang.invoke.MethodHandle, int, Class<?>...);
-    method public static java.lang.invoke.MethodHandle exactInvoker(java.lang.invoke.MethodType);
-    method public static java.lang.invoke.MethodHandle explicitCastArguments(java.lang.invoke.MethodHandle, java.lang.invoke.MethodType);
-    method public static java.lang.invoke.MethodHandle filterArguments(java.lang.invoke.MethodHandle, int, java.lang.invoke.MethodHandle...);
-    method public static java.lang.invoke.MethodHandle filterReturnValue(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
-    method public static java.lang.invoke.MethodHandle foldArguments(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
-    method public static java.lang.invoke.MethodHandle guardWithTest(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
-    method public static java.lang.invoke.MethodHandle identity(Class<?>);
-    method public static java.lang.invoke.MethodHandle insertArguments(java.lang.invoke.MethodHandle, int, java.lang.Object...);
-    method public static java.lang.invoke.MethodHandle invoker(java.lang.invoke.MethodType);
-    method public static java.lang.invoke.MethodHandles.Lookup lookup();
-    method public static java.lang.invoke.MethodHandle permuteArguments(java.lang.invoke.MethodHandle, java.lang.invoke.MethodType, int...);
-    method public static java.lang.invoke.MethodHandles.Lookup publicLookup();
-    method public static <T extends java.lang.reflect.Member> T reflectAs(Class<T>, java.lang.invoke.MethodHandle);
-    method public static java.lang.invoke.MethodHandle spreadInvoker(java.lang.invoke.MethodType, int);
-    method public static java.lang.invoke.MethodHandle throwException(Class<?>, Class<? extends java.lang.Throwable>);
-  }
-
-  public static final class MethodHandles.Lookup {
-    method public java.lang.invoke.MethodHandle bind(Object, String, java.lang.invoke.MethodType) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
-    method public java.lang.invoke.MethodHandle findConstructor(Class<?>, java.lang.invoke.MethodType) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
-    method public java.lang.invoke.MethodHandle findGetter(Class<?>, String, Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchFieldException;
-    method public java.lang.invoke.MethodHandle findSetter(Class<?>, String, Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchFieldException;
-    method public java.lang.invoke.MethodHandle findSpecial(Class<?>, String, java.lang.invoke.MethodType, Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
-    method public java.lang.invoke.MethodHandle findStatic(Class<?>, String, java.lang.invoke.MethodType) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
-    method public java.lang.invoke.MethodHandle findStaticGetter(Class<?>, String, Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchFieldException;
-    method public java.lang.invoke.MethodHandle findStaticSetter(Class<?>, String, Class<?>) throws java.lang.IllegalAccessException, java.lang.NoSuchFieldException;
-    method public java.lang.invoke.MethodHandle findVirtual(Class<?>, String, java.lang.invoke.MethodType) throws java.lang.IllegalAccessException, java.lang.NoSuchMethodException;
-    method public java.lang.invoke.MethodHandles.Lookup in(Class<?>);
-    method public Class<?> lookupClass();
-    method public int lookupModes();
-    method public java.lang.invoke.MethodHandleInfo revealDirect(java.lang.invoke.MethodHandle);
-    method public java.lang.invoke.MethodHandle unreflect(java.lang.reflect.Method) throws java.lang.IllegalAccessException;
-    method public java.lang.invoke.MethodHandle unreflectConstructor(java.lang.reflect.Constructor<?>) throws java.lang.IllegalAccessException;
-    method public java.lang.invoke.MethodHandle unreflectGetter(java.lang.reflect.Field) throws java.lang.IllegalAccessException;
-    method public java.lang.invoke.MethodHandle unreflectSetter(java.lang.reflect.Field) throws java.lang.IllegalAccessException;
-    method public java.lang.invoke.MethodHandle unreflectSpecial(java.lang.reflect.Method, Class<?>) throws java.lang.IllegalAccessException;
-    field public static final int PACKAGE = 8; // 0x8
-    field public static final int PRIVATE = 2; // 0x2
-    field public static final int PROTECTED = 4; // 0x4
-    field public static final int PUBLIC = 1; // 0x1
-  }
-
-  public final class MethodType implements java.io.Serializable {
-    method public java.lang.invoke.MethodType appendParameterTypes(Class<?>...);
-    method public java.lang.invoke.MethodType appendParameterTypes(java.util.List<java.lang.Class<?>>);
-    method public java.lang.invoke.MethodType changeParameterType(int, Class<?>);
-    method public java.lang.invoke.MethodType changeReturnType(Class<?>);
-    method public java.lang.invoke.MethodType dropParameterTypes(int, int);
-    method public java.lang.invoke.MethodType erase();
-    method public static java.lang.invoke.MethodType fromMethodDescriptorString(String, ClassLoader) throws java.lang.IllegalArgumentException, java.lang.TypeNotPresentException;
-    method public java.lang.invoke.MethodType generic();
-    method public static java.lang.invoke.MethodType genericMethodType(int, boolean);
-    method public static java.lang.invoke.MethodType genericMethodType(int);
-    method public boolean hasPrimitives();
-    method public boolean hasWrappers();
-    method public java.lang.invoke.MethodType insertParameterTypes(int, Class<?>...);
-    method public java.lang.invoke.MethodType insertParameterTypes(int, java.util.List<java.lang.Class<?>>);
-    method public static java.lang.invoke.MethodType methodType(Class<?>, Class<?>[]);
-    method public static java.lang.invoke.MethodType methodType(Class<?>, java.util.List<java.lang.Class<?>>);
-    method public static java.lang.invoke.MethodType methodType(Class<?>, Class<?>, Class<?>...);
-    method public static java.lang.invoke.MethodType methodType(Class<?>);
-    method public static java.lang.invoke.MethodType methodType(Class<?>, Class<?>);
-    method public static java.lang.invoke.MethodType methodType(Class<?>, java.lang.invoke.MethodType);
-    method public Class<?>[] parameterArray();
-    method public int parameterCount();
-    method public java.util.List<java.lang.Class<?>> parameterList();
-    method public Class<?> parameterType(int);
-    method public Class<?> returnType();
-    method public String toMethodDescriptorString();
-    method public java.lang.invoke.MethodType unwrap();
-    method public java.lang.invoke.MethodType wrap();
-  }
-
-  public class MutableCallSite extends java.lang.invoke.CallSite {
-    ctor public MutableCallSite(java.lang.invoke.MethodType);
-    ctor public MutableCallSite(java.lang.invoke.MethodHandle);
-    method public final java.lang.invoke.MethodHandle dynamicInvoker();
-    method public final java.lang.invoke.MethodHandle getTarget();
-    method public void setTarget(java.lang.invoke.MethodHandle);
-  }
-
-  public class VolatileCallSite extends java.lang.invoke.CallSite {
-    ctor public VolatileCallSite(java.lang.invoke.MethodType);
-    ctor public VolatileCallSite(java.lang.invoke.MethodHandle);
-    method public final java.lang.invoke.MethodHandle dynamicInvoker();
-    method public final java.lang.invoke.MethodHandle getTarget();
-    method public void setTarget(java.lang.invoke.MethodHandle);
-  }
-
-  public class WrongMethodTypeException extends java.lang.RuntimeException {
-    ctor public WrongMethodTypeException();
-    ctor public WrongMethodTypeException(String);
-  }
-
-}
-
-package java.lang.ref {
-
-  public class PhantomReference<T> extends java.lang.ref.Reference<T> {
-    ctor public PhantomReference(T, java.lang.ref.ReferenceQueue<? super T>);
-  }
-
-  public abstract class Reference<T> {
-    method public void clear();
-    method public boolean enqueue();
-    method public T get();
-    method public boolean isEnqueued();
-    method public static void reachabilityFence(Object);
-  }
-
-  public class ReferenceQueue<T> {
-    ctor public ReferenceQueue();
-    method public java.lang.ref.Reference<? extends T> poll();
-    method public java.lang.ref.Reference<? extends T> remove(long) throws java.lang.IllegalArgumentException, java.lang.InterruptedException;
-    method public java.lang.ref.Reference<? extends T> remove() throws java.lang.InterruptedException;
-  }
-
-  public class SoftReference<T> extends java.lang.ref.Reference<T> {
-    ctor public SoftReference(T);
-    ctor public SoftReference(T, java.lang.ref.ReferenceQueue<? super T>);
-  }
-
-  public class WeakReference<T> extends java.lang.ref.Reference<T> {
-    ctor public WeakReference(T);
-    ctor public WeakReference(T, java.lang.ref.ReferenceQueue<? super T>);
-  }
-
-}
-
-package java.lang.reflect {
-
-  public class AccessibleObject implements java.lang.reflect.AnnotatedElement {
-    ctor protected AccessibleObject();
-    method @Nullable public <T extends java.lang.annotation.Annotation> T getAnnotation(@NonNull Class<T>);
-    method @NonNull public java.lang.annotation.Annotation[] getAnnotations();
-    method @NonNull public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    method public boolean isAccessible();
-    method public static void setAccessible(java.lang.reflect.AccessibleObject[], boolean) throws java.lang.SecurityException;
-    method public void setAccessible(boolean) throws java.lang.SecurityException;
-  }
-
-  public interface AnnotatedElement {
-    method @Nullable public <T extends java.lang.annotation.Annotation> T getAnnotation(@NonNull Class<T>);
-    method @NonNull public java.lang.annotation.Annotation[] getAnnotations();
-    method public default <T extends java.lang.annotation.Annotation> T[] getAnnotationsByType(@NonNull Class<T>);
-    method @Nullable public default <T extends java.lang.annotation.Annotation> T getDeclaredAnnotation(@NonNull Class<T>);
-    method @NonNull public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    method public default <T extends java.lang.annotation.Annotation> T[] getDeclaredAnnotationsByType(@NonNull Class<T>);
-    method public default boolean isAnnotationPresent(@NonNull Class<? extends java.lang.annotation.Annotation>);
-  }
-
-  public final class Array {
-    method @Nullable public static Object get(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static boolean getBoolean(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static byte getByte(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static char getChar(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static double getDouble(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static float getFloat(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static int getInt(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static int getLength(@NonNull Object);
-    method public static long getLong(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static short getShort(@NonNull Object, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method @NonNull public static Object newInstance(@NonNull Class<?>, int) throws java.lang.NegativeArraySizeException;
-    method @NonNull public static Object newInstance(@NonNull Class<?>, int...) throws java.lang.IllegalArgumentException, java.lang.NegativeArraySizeException;
-    method public static void set(@NonNull Object, int, @Nullable Object) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static void setBoolean(@NonNull Object, int, boolean);
-    method public static void setByte(@NonNull Object, int, byte) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static void setChar(@NonNull Object, int, char) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static void setDouble(@NonNull Object, int, double) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static void setFloat(@NonNull Object, int, float) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static void setInt(@NonNull Object, int, int) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static void setLong(@NonNull Object, int, long) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-    method public static void setShort(@NonNull Object, int, short) throws java.lang.ArrayIndexOutOfBoundsException, java.lang.IllegalArgumentException;
-  }
-
-  public final class Constructor<T> extends java.lang.reflect.Executable {
-    method @NonNull public Class<T> getDeclaringClass();
-    method public Class<?>[] getExceptionTypes();
-    method public int getModifiers();
-    method @NonNull public String getName();
-    method public java.lang.annotation.Annotation[][] getParameterAnnotations();
-    method @NonNull public Class<?>[] getParameterTypes();
-    method public java.lang.reflect.TypeVariable<java.lang.reflect.Constructor<T>>[] getTypeParameters();
-    method @NonNull public T newInstance(java.lang.Object...) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException, java.lang.InstantiationException, java.lang.reflect.InvocationTargetException;
-    method @NonNull public String toGenericString();
-  }
-
-  public abstract class Executable extends java.lang.reflect.AccessibleObject implements java.lang.reflect.GenericDeclaration java.lang.reflect.Member {
-    method @NonNull public abstract Class<?>[] getExceptionTypes();
-    method @NonNull public java.lang.reflect.Type[] getGenericExceptionTypes();
-    method @NonNull public java.lang.reflect.Type[] getGenericParameterTypes();
-    method @NonNull public abstract java.lang.annotation.Annotation[][] getParameterAnnotations();
-    method public int getParameterCount();
-    method @NonNull public abstract Class<?>[] getParameterTypes();
-    method @NonNull public java.lang.reflect.Parameter[] getParameters();
-    method public final boolean isAnnotationPresent(@NonNull Class<? extends java.lang.annotation.Annotation>);
-    method public boolean isSynthetic();
-    method public boolean isVarArgs();
-    method @NonNull public abstract String toGenericString();
-  }
-
-  public final class Field extends java.lang.reflect.AccessibleObject implements java.lang.reflect.Member {
-    method @Nullable public Object get(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public boolean getBoolean(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public byte getByte(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public char getChar(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method @NonNull public Class<?> getDeclaringClass();
-    method public double getDouble(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public float getFloat(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method @NonNull public java.lang.reflect.Type getGenericType();
-    method public int getInt(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public long getLong(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public int getModifiers();
-    method @NonNull public String getName();
-    method public short getShort(@Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method @NonNull public Class<?> getType();
-    method public boolean isEnumConstant();
-    method public boolean isSynthetic();
-    method public void set(@Nullable Object, @Nullable Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public void setBoolean(@Nullable Object, boolean) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public void setByte(@Nullable Object, byte) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public void setChar(@Nullable Object, char) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public void setDouble(@Nullable Object, double) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public void setFloat(@Nullable Object, float) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public void setInt(@Nullable Object, int) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public void setLong(@Nullable Object, long) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method public void setShort(@Nullable Object, short) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
-    method @NonNull public String toGenericString();
-  }
-
-  public interface GenericArrayType extends java.lang.reflect.Type {
-    method @NonNull public java.lang.reflect.Type getGenericComponentType();
-  }
-
-  public interface GenericDeclaration extends java.lang.reflect.AnnotatedElement {
-    method @NonNull public java.lang.reflect.TypeVariable<?>[] getTypeParameters();
-  }
-
-  public class GenericSignatureFormatError extends java.lang.ClassFormatError {
-    ctor public GenericSignatureFormatError();
-    ctor public GenericSignatureFormatError(String);
-  }
-
-  public interface InvocationHandler {
-    method public Object invoke(Object, java.lang.reflect.Method, Object[]) throws java.lang.Throwable;
-  }
-
-  public class InvocationTargetException extends java.lang.ReflectiveOperationException {
-    ctor protected InvocationTargetException();
-    ctor public InvocationTargetException(Throwable);
-    ctor public InvocationTargetException(Throwable, String);
-    method public Throwable getTargetException();
-  }
-
-  public class MalformedParameterizedTypeException extends java.lang.RuntimeException {
-    ctor public MalformedParameterizedTypeException();
-  }
-
-  public class MalformedParametersException extends java.lang.RuntimeException {
-    ctor public MalformedParametersException();
-    ctor public MalformedParametersException(String);
-  }
-
-  public interface Member {
-    method @NonNull public Class<?> getDeclaringClass();
-    method public int getModifiers();
-    method @NonNull public String getName();
-    method public boolean isSynthetic();
-    field public static final int DECLARED = 1; // 0x1
-    field public static final int PUBLIC = 0; // 0x0
-  }
-
-  public final class Method extends java.lang.reflect.Executable {
-    method @NonNull public Class<?> getDeclaringClass();
-    method @Nullable public Object getDefaultValue();
-    method @NonNull public Class<?>[] getExceptionTypes();
-    method @NonNull public java.lang.reflect.Type getGenericReturnType();
-    method public int getModifiers();
-    method @NonNull public String getName();
-    method @NonNull public java.lang.annotation.Annotation[][] getParameterAnnotations();
-    method @NonNull public Class<?>[] getParameterTypes();
-    method @NonNull public Class<?> getReturnType();
-    method @NonNull public java.lang.reflect.TypeVariable<java.lang.reflect.Method>[] getTypeParameters();
-    method @Nullable public Object invoke(@Nullable Object, @Nullable java.lang.Object...) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException, java.lang.reflect.InvocationTargetException;
-    method public boolean isBridge();
-    method public boolean isDefault();
-    method @NonNull public String toGenericString();
-  }
-
-  public class Modifier {
-    ctor public Modifier();
-    method public static int classModifiers();
-    method public static int constructorModifiers();
-    method public static int fieldModifiers();
-    method public static int interfaceModifiers();
-    method public static boolean isAbstract(int);
-    method public static boolean isFinal(int);
-    method public static boolean isInterface(int);
-    method public static boolean isNative(int);
-    method public static boolean isPrivate(int);
-    method public static boolean isProtected(int);
-    method public static boolean isPublic(int);
-    method public static boolean isStatic(int);
-    method public static boolean isStrict(int);
-    method public static boolean isSynchronized(int);
-    method public static boolean isTransient(int);
-    method public static boolean isVolatile(int);
-    method public static int methodModifiers();
-    method public static int parameterModifiers();
-    method public static String toString(int);
-    field public static final int ABSTRACT = 1024; // 0x400
-    field public static final int FINAL = 16; // 0x10
-    field public static final int INTERFACE = 512; // 0x200
-    field public static final int NATIVE = 256; // 0x100
-    field public static final int PRIVATE = 2; // 0x2
-    field public static final int PROTECTED = 4; // 0x4
-    field public static final int PUBLIC = 1; // 0x1
-    field public static final int STATIC = 8; // 0x8
-    field public static final int STRICT = 2048; // 0x800
-    field public static final int SYNCHRONIZED = 32; // 0x20
-    field public static final int TRANSIENT = 128; // 0x80
-    field public static final int VOLATILE = 64; // 0x40
-  }
-
-  public final class Parameter implements java.lang.reflect.AnnotatedElement {
-    method @Nullable public <T extends java.lang.annotation.Annotation> T getAnnotation(@NonNull Class<T>);
-    method @NonNull public java.lang.annotation.Annotation[] getAnnotations();
-    method @NonNull public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    method @NonNull public java.lang.reflect.Executable getDeclaringExecutable();
-    method public int getModifiers();
-    method @NonNull public String getName();
-    method @NonNull public java.lang.reflect.Type getParameterizedType();
-    method @NonNull public Class<?> getType();
-    method public boolean isImplicit();
-    method public boolean isNamePresent();
-    method public boolean isSynthetic();
-    method public boolean isVarArgs();
-  }
-
-  public interface ParameterizedType extends java.lang.reflect.Type {
-    method @NonNull public java.lang.reflect.Type[] getActualTypeArguments();
-    method @Nullable public java.lang.reflect.Type getOwnerType();
-    method @NonNull public java.lang.reflect.Type getRawType();
-  }
-
-  public class Proxy implements java.io.Serializable {
-    ctor protected Proxy(@NonNull java.lang.reflect.InvocationHandler);
-    method @NonNull public static java.lang.reflect.InvocationHandler getInvocationHandler(@NonNull Object) throws java.lang.IllegalArgumentException;
-    method @NonNull public static Class<?> getProxyClass(@Nullable ClassLoader, @NonNull Class<?>...) throws java.lang.IllegalArgumentException;
-    method public static boolean isProxyClass(@NonNull Class<?>);
-    method @NonNull public static Object newProxyInstance(@Nullable ClassLoader, @NonNull Class<?>[], @NonNull java.lang.reflect.InvocationHandler) throws java.lang.IllegalArgumentException;
-    field protected java.lang.reflect.InvocationHandler h;
-  }
-
-  public final class ReflectPermission extends java.security.BasicPermission {
-    ctor public ReflectPermission(String);
-    ctor public ReflectPermission(String, String);
-  }
-
-  public interface Type {
-    method @NonNull public default String getTypeName();
-  }
-
-  public interface TypeVariable<D extends java.lang.reflect.GenericDeclaration> extends java.lang.reflect.Type {
-    method @NonNull public java.lang.reflect.Type[] getBounds();
-    method @NonNull public D getGenericDeclaration();
-    method @NonNull public String getName();
-  }
-
-  public class UndeclaredThrowableException extends java.lang.RuntimeException {
-    ctor public UndeclaredThrowableException(Throwable);
-    ctor public UndeclaredThrowableException(Throwable, String);
-    method public Throwable getUndeclaredThrowable();
-  }
-
-  public interface WildcardType extends java.lang.reflect.Type {
-    method @NonNull public java.lang.reflect.Type[] getLowerBounds();
-    method @NonNull public java.lang.reflect.Type[] getUpperBounds();
-  }
-
-}
-
-package java.math {
-
-  public class BigDecimal extends java.lang.Number implements java.lang.Comparable<java.math.BigDecimal> {
-    ctor public BigDecimal(char[], int, int);
-    ctor public BigDecimal(char[], int, int, java.math.MathContext);
-    ctor public BigDecimal(char[]);
-    ctor public BigDecimal(char[], java.math.MathContext);
-    ctor public BigDecimal(String);
-    ctor public BigDecimal(String, java.math.MathContext);
-    ctor public BigDecimal(double);
-    ctor public BigDecimal(double, java.math.MathContext);
-    ctor public BigDecimal(java.math.BigInteger);
-    ctor public BigDecimal(java.math.BigInteger, java.math.MathContext);
-    ctor public BigDecimal(java.math.BigInteger, int);
-    ctor public BigDecimal(java.math.BigInteger, int, java.math.MathContext);
-    ctor public BigDecimal(int);
-    ctor public BigDecimal(int, java.math.MathContext);
-    ctor public BigDecimal(long);
-    ctor public BigDecimal(long, java.math.MathContext);
-    method public java.math.BigDecimal abs();
-    method public java.math.BigDecimal abs(java.math.MathContext);
-    method public java.math.BigDecimal add(java.math.BigDecimal);
-    method public java.math.BigDecimal add(java.math.BigDecimal, java.math.MathContext);
-    method public byte byteValueExact();
-    method public int compareTo(java.math.BigDecimal);
-    method public java.math.BigDecimal divide(java.math.BigDecimal, int, int);
-    method public java.math.BigDecimal divide(java.math.BigDecimal, int, java.math.RoundingMode);
-    method public java.math.BigDecimal divide(java.math.BigDecimal, int);
-    method public java.math.BigDecimal divide(java.math.BigDecimal, java.math.RoundingMode);
-    method public java.math.BigDecimal divide(java.math.BigDecimal);
-    method public java.math.BigDecimal divide(java.math.BigDecimal, java.math.MathContext);
-    method public java.math.BigDecimal[] divideAndRemainder(java.math.BigDecimal);
-    method public java.math.BigDecimal[] divideAndRemainder(java.math.BigDecimal, java.math.MathContext);
-    method public java.math.BigDecimal divideToIntegralValue(java.math.BigDecimal);
-    method public java.math.BigDecimal divideToIntegralValue(java.math.BigDecimal, java.math.MathContext);
-    method public double doubleValue();
-    method public float floatValue();
-    method public int intValue();
-    method public int intValueExact();
-    method public long longValue();
-    method public long longValueExact();
-    method public java.math.BigDecimal max(java.math.BigDecimal);
-    method public java.math.BigDecimal min(java.math.BigDecimal);
-    method public java.math.BigDecimal movePointLeft(int);
-    method public java.math.BigDecimal movePointRight(int);
-    method public java.math.BigDecimal multiply(java.math.BigDecimal);
-    method public java.math.BigDecimal multiply(java.math.BigDecimal, java.math.MathContext);
-    method public java.math.BigDecimal negate();
-    method public java.math.BigDecimal negate(java.math.MathContext);
-    method public java.math.BigDecimal plus();
-    method public java.math.BigDecimal plus(java.math.MathContext);
-    method public java.math.BigDecimal pow(int);
-    method public java.math.BigDecimal pow(int, java.math.MathContext);
-    method public int precision();
-    method public java.math.BigDecimal remainder(java.math.BigDecimal);
-    method public java.math.BigDecimal remainder(java.math.BigDecimal, java.math.MathContext);
-    method public java.math.BigDecimal round(java.math.MathContext);
-    method public int scale();
-    method public java.math.BigDecimal scaleByPowerOfTen(int);
-    method public java.math.BigDecimal setScale(int, java.math.RoundingMode);
-    method public java.math.BigDecimal setScale(int, int);
-    method public java.math.BigDecimal setScale(int);
-    method public short shortValueExact();
-    method public int signum();
-    method public java.math.BigDecimal stripTrailingZeros();
-    method public java.math.BigDecimal subtract(java.math.BigDecimal);
-    method public java.math.BigDecimal subtract(java.math.BigDecimal, java.math.MathContext);
-    method public java.math.BigInteger toBigInteger();
-    method public java.math.BigInteger toBigIntegerExact();
-    method public String toEngineeringString();
-    method public String toPlainString();
-    method public java.math.BigDecimal ulp();
-    method public java.math.BigInteger unscaledValue();
-    method public static java.math.BigDecimal valueOf(long, int);
-    method public static java.math.BigDecimal valueOf(long);
-    method public static java.math.BigDecimal valueOf(double);
-    field public static final java.math.BigDecimal ONE;
-    field public static final int ROUND_CEILING = 2; // 0x2
-    field public static final int ROUND_DOWN = 1; // 0x1
-    field public static final int ROUND_FLOOR = 3; // 0x3
-    field public static final int ROUND_HALF_DOWN = 5; // 0x5
-    field public static final int ROUND_HALF_EVEN = 6; // 0x6
-    field public static final int ROUND_HALF_UP = 4; // 0x4
-    field public static final int ROUND_UNNECESSARY = 7; // 0x7
-    field public static final int ROUND_UP = 0; // 0x0
-    field public static final java.math.BigDecimal TEN;
-    field public static final java.math.BigDecimal ZERO;
-  }
-
-  public class BigInteger extends java.lang.Number implements java.lang.Comparable<java.math.BigInteger> {
-    ctor public BigInteger(byte[]);
-    ctor public BigInteger(int, byte[]);
-    ctor public BigInteger(@NonNull String, int);
-    ctor public BigInteger(@NonNull String);
-    ctor public BigInteger(int, @NonNull java.util.Random);
-    ctor public BigInteger(int, int, @NonNull java.util.Random);
-    method @NonNull public java.math.BigInteger abs();
-    method @NonNull public java.math.BigInteger add(@NonNull java.math.BigInteger);
-    method @NonNull public java.math.BigInteger and(@NonNull java.math.BigInteger);
-    method @NonNull public java.math.BigInteger andNot(@NonNull java.math.BigInteger);
-    method public int bitCount();
-    method public int bitLength();
-    method public byte byteValueExact();
-    method @NonNull public java.math.BigInteger clearBit(int);
-    method public int compareTo(@NonNull java.math.BigInteger);
-    method @NonNull public java.math.BigInteger divide(@NonNull java.math.BigInteger);
-    method @NonNull public java.math.BigInteger[] divideAndRemainder(@NonNull java.math.BigInteger);
-    method public double doubleValue();
-    method @NonNull public java.math.BigInteger flipBit(int);
-    method public float floatValue();
-    method @NonNull public java.math.BigInteger gcd(@NonNull java.math.BigInteger);
-    method public int getLowestSetBit();
-    method public int intValue();
-    method public int intValueExact();
-    method public boolean isProbablePrime(int);
-    method public long longValue();
-    method public long longValueExact();
-    method @NonNull public java.math.BigInteger max(@NonNull java.math.BigInteger);
-    method @NonNull public java.math.BigInteger min(@NonNull java.math.BigInteger);
-    method @NonNull public java.math.BigInteger mod(@NonNull java.math.BigInteger);
-    method @NonNull public java.math.BigInteger modInverse(@NonNull java.math.BigInteger);
-    method @NonNull public java.math.BigInteger modPow(@NonNull java.math.BigInteger, @NonNull java.math.BigInteger);
-    method @NonNull public java.math.BigInteger multiply(@NonNull java.math.BigInteger);
-    method @NonNull public java.math.BigInteger negate();
-    method @NonNull public java.math.BigInteger nextProbablePrime();
-    method @NonNull public java.math.BigInteger not();
-    method @NonNull public java.math.BigInteger or(@NonNull java.math.BigInteger);
-    method @NonNull public java.math.BigInteger pow(int);
-    method @NonNull public static java.math.BigInteger probablePrime(int, @NonNull java.util.Random);
-    method @NonNull public java.math.BigInteger remainder(@NonNull java.math.BigInteger);
-    method @NonNull public java.math.BigInteger setBit(int);
-    method @NonNull public java.math.BigInteger shiftLeft(int);
-    method @NonNull public java.math.BigInteger shiftRight(int);
-    method public short shortValueExact();
-    method public int signum();
-    method @NonNull public java.math.BigInteger subtract(@NonNull java.math.BigInteger);
-    method public boolean testBit(int);
-    method public byte[] toByteArray();
-    method @NonNull public String toString(int);
-    method @NonNull public static java.math.BigInteger valueOf(long);
-    method @NonNull public java.math.BigInteger xor(@NonNull java.math.BigInteger);
-    field @NonNull public static final java.math.BigInteger ONE;
-    field @NonNull public static final java.math.BigInteger TEN;
-    field @NonNull public static final java.math.BigInteger ZERO;
-  }
-
-  public final class MathContext implements java.io.Serializable {
-    ctor public MathContext(int);
-    ctor public MathContext(int, java.math.RoundingMode);
-    ctor public MathContext(String);
-    method public int getPrecision();
-    method public java.math.RoundingMode getRoundingMode();
-    field public static final java.math.MathContext DECIMAL128;
-    field public static final java.math.MathContext DECIMAL32;
-    field public static final java.math.MathContext DECIMAL64;
-    field public static final java.math.MathContext UNLIMITED;
-  }
-
-  public enum RoundingMode {
-    method public static java.math.RoundingMode valueOf(int);
-    enum_constant public static final java.math.RoundingMode CEILING;
-    enum_constant public static final java.math.RoundingMode DOWN;
-    enum_constant public static final java.math.RoundingMode FLOOR;
-    enum_constant public static final java.math.RoundingMode HALF_DOWN;
-    enum_constant public static final java.math.RoundingMode HALF_EVEN;
-    enum_constant public static final java.math.RoundingMode HALF_UP;
-    enum_constant public static final java.math.RoundingMode UNNECESSARY;
-    enum_constant public static final java.math.RoundingMode UP;
-  }
-
-}
-
-package java.net {
-
-  public abstract class Authenticator {
-    ctor public Authenticator();
-    method protected java.net.PasswordAuthentication getPasswordAuthentication();
-    method protected final String getRequestingHost();
-    method protected final int getRequestingPort();
-    method protected final String getRequestingPrompt();
-    method protected final String getRequestingProtocol();
-    method protected final String getRequestingScheme();
-    method protected final java.net.InetAddress getRequestingSite();
-    method protected java.net.URL getRequestingURL();
-    method protected java.net.Authenticator.RequestorType getRequestorType();
-    method public static java.net.PasswordAuthentication requestPasswordAuthentication(java.net.InetAddress, int, String, String, String);
-    method public static java.net.PasswordAuthentication requestPasswordAuthentication(String, java.net.InetAddress, int, String, String, String);
-    method public static java.net.PasswordAuthentication requestPasswordAuthentication(String, java.net.InetAddress, int, String, String, String, java.net.URL, java.net.Authenticator.RequestorType);
-    method public static void setDefault(java.net.Authenticator);
-  }
-
-  public enum Authenticator.RequestorType {
-    enum_constant public static final java.net.Authenticator.RequestorType PROXY;
-    enum_constant public static final java.net.Authenticator.RequestorType SERVER;
-  }
-
-  public class BindException extends java.net.SocketException {
-    ctor public BindException(String);
-    ctor public BindException();
-  }
-
-  public abstract class CacheRequest {
-    ctor public CacheRequest();
-    method public abstract void abort();
-    method public abstract java.io.OutputStream getBody() throws java.io.IOException;
-  }
-
-  public abstract class CacheResponse {
-    ctor public CacheResponse();
-    method public abstract java.io.InputStream getBody() throws java.io.IOException;
-    method public abstract java.util.Map<java.lang.String,java.util.List<java.lang.String>> getHeaders() throws java.io.IOException;
-  }
-
-  public class ConnectException extends java.net.SocketException {
-    ctor public ConnectException(String);
-    ctor public ConnectException();
-  }
-
-  public abstract class ContentHandler {
-    ctor public ContentHandler();
-    method public abstract Object getContent(java.net.URLConnection) throws java.io.IOException;
-    method public Object getContent(java.net.URLConnection, Class[]) throws java.io.IOException;
-  }
-
-  public interface ContentHandlerFactory {
-    method public java.net.ContentHandler createContentHandler(String);
-  }
-
-  public abstract class CookieHandler {
-    ctor public CookieHandler();
-    method public abstract java.util.Map<java.lang.String,java.util.List<java.lang.String>> get(java.net.URI, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
-    method public static java.net.CookieHandler getDefault();
-    method public abstract void put(java.net.URI, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
-    method public static void setDefault(java.net.CookieHandler);
-  }
-
-  public class CookieManager extends java.net.CookieHandler {
-    ctor public CookieManager();
-    ctor public CookieManager(java.net.CookieStore, java.net.CookiePolicy);
-    method public java.util.Map<java.lang.String,java.util.List<java.lang.String>> get(java.net.URI, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
-    method public java.net.CookieStore getCookieStore();
-    method public void put(java.net.URI, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
-    method public void setCookiePolicy(java.net.CookiePolicy);
-  }
-
-  public interface CookiePolicy {
-    method public boolean shouldAccept(java.net.URI, java.net.HttpCookie);
-    field public static final java.net.CookiePolicy ACCEPT_ALL;
-    field public static final java.net.CookiePolicy ACCEPT_NONE;
-    field public static final java.net.CookiePolicy ACCEPT_ORIGINAL_SERVER;
-  }
-
-  public interface CookieStore {
-    method public void add(java.net.URI, java.net.HttpCookie);
-    method public java.util.List<java.net.HttpCookie> get(java.net.URI);
-    method public java.util.List<java.net.HttpCookie> getCookies();
-    method public java.util.List<java.net.URI> getURIs();
-    method public boolean remove(java.net.URI, java.net.HttpCookie);
-    method public boolean removeAll();
-  }
-
-  public final class DatagramPacket {
-    ctor public DatagramPacket(byte[], int, int);
-    ctor public DatagramPacket(byte[], int);
-    ctor public DatagramPacket(byte[], int, int, java.net.InetAddress, int);
-    ctor public DatagramPacket(byte[], int, int, java.net.SocketAddress);
-    ctor public DatagramPacket(byte[], int, java.net.InetAddress, int);
-    ctor public DatagramPacket(byte[], int, java.net.SocketAddress);
-    method public java.net.InetAddress getAddress();
-    method public byte[] getData();
-    method public int getLength();
-    method public int getOffset();
-    method public int getPort();
-    method public java.net.SocketAddress getSocketAddress();
-    method public void setAddress(java.net.InetAddress);
-    method public void setData(byte[], int, int);
-    method public void setData(byte[]);
-    method public void setLength(int);
-    method public void setPort(int);
-    method public void setSocketAddress(java.net.SocketAddress);
-  }
-
-  public class DatagramSocket implements java.io.Closeable {
-    ctor public DatagramSocket() throws java.net.SocketException;
-    ctor protected DatagramSocket(java.net.DatagramSocketImpl);
-    ctor public DatagramSocket(java.net.SocketAddress) throws java.net.SocketException;
-    ctor public DatagramSocket(int) throws java.net.SocketException;
-    ctor public DatagramSocket(int, java.net.InetAddress) throws java.net.SocketException;
-    method public void bind(java.net.SocketAddress) throws java.net.SocketException;
-    method public void close();
-    method public void connect(java.net.InetAddress, int);
-    method public void connect(java.net.SocketAddress) throws java.net.SocketException;
-    method public void disconnect();
-    method public boolean getBroadcast() throws java.net.SocketException;
-    method public java.nio.channels.DatagramChannel getChannel();
-    method public java.net.InetAddress getInetAddress();
-    method public java.net.InetAddress getLocalAddress();
-    method public int getLocalPort();
-    method public java.net.SocketAddress getLocalSocketAddress();
-    method public int getPort();
-    method public int getReceiveBufferSize() throws java.net.SocketException;
-    method public java.net.SocketAddress getRemoteSocketAddress();
-    method public boolean getReuseAddress() throws java.net.SocketException;
-    method public int getSendBufferSize() throws java.net.SocketException;
-    method public int getSoTimeout() throws java.net.SocketException;
-    method public int getTrafficClass() throws java.net.SocketException;
-    method public boolean isBound();
-    method public boolean isClosed();
-    method public boolean isConnected();
-    method public void receive(java.net.DatagramPacket) throws java.io.IOException;
-    method public void send(java.net.DatagramPacket) throws java.io.IOException;
-    method public void setBroadcast(boolean) throws java.net.SocketException;
-    method public static void setDatagramSocketImplFactory(java.net.DatagramSocketImplFactory) throws java.io.IOException;
-    method public void setReceiveBufferSize(int) throws java.net.SocketException;
-    method public void setReuseAddress(boolean) throws java.net.SocketException;
-    method public void setSendBufferSize(int) throws java.net.SocketException;
-    method public void setSoTimeout(int) throws java.net.SocketException;
-    method public void setTrafficClass(int) throws java.net.SocketException;
-  }
-
-  public abstract class DatagramSocketImpl implements java.net.SocketOptions {
-    ctor public DatagramSocketImpl();
-    method protected abstract void bind(int, java.net.InetAddress) throws java.net.SocketException;
-    method protected abstract void close();
-    method protected void connect(java.net.InetAddress, int) throws java.net.SocketException;
-    method protected abstract void create() throws java.net.SocketException;
-    method protected void disconnect();
-    method protected java.io.FileDescriptor getFileDescriptor();
-    method protected int getLocalPort();
-    method @Deprecated protected abstract byte getTTL() throws java.io.IOException;
-    method protected abstract int getTimeToLive() throws java.io.IOException;
-    method protected abstract void join(java.net.InetAddress) throws java.io.IOException;
-    method protected abstract void joinGroup(java.net.SocketAddress, java.net.NetworkInterface) throws java.io.IOException;
-    method protected abstract void leave(java.net.InetAddress) throws java.io.IOException;
-    method protected abstract void leaveGroup(java.net.SocketAddress, java.net.NetworkInterface) throws java.io.IOException;
-    method protected abstract int peek(java.net.InetAddress) throws java.io.IOException;
-    method protected abstract int peekData(java.net.DatagramPacket) throws java.io.IOException;
-    method protected abstract void receive(java.net.DatagramPacket) throws java.io.IOException;
-    method protected abstract void send(java.net.DatagramPacket) throws java.io.IOException;
-    method @Deprecated protected abstract void setTTL(byte) throws java.io.IOException;
-    method protected abstract void setTimeToLive(int) throws java.io.IOException;
-    field protected java.io.FileDescriptor fd;
-    field protected int localPort;
-  }
-
-  public interface DatagramSocketImplFactory {
-    method public java.net.DatagramSocketImpl createDatagramSocketImpl();
-  }
-
-  public interface FileNameMap {
-    method public String getContentTypeFor(String);
-  }
-
-  public final class HttpCookie implements java.lang.Cloneable {
-    ctor public HttpCookie(String, String);
-    method public Object clone();
-    method public static boolean domainMatches(String, String);
-    method public String getComment();
-    method public String getCommentURL();
-    method public boolean getDiscard();
-    method public String getDomain();
-    method public long getMaxAge();
-    method public String getName();
-    method public String getPath();
-    method public String getPortlist();
-    method public boolean getSecure();
-    method public String getValue();
-    method public int getVersion();
-    method public boolean hasExpired();
-    method public boolean isHttpOnly();
-    method public static java.util.List<java.net.HttpCookie> parse(String);
-    method public void setComment(String);
-    method public void setCommentURL(String);
-    method public void setDiscard(boolean);
-    method public void setDomain(String);
-    method public void setHttpOnly(boolean);
-    method public void setMaxAge(long);
-    method public void setPath(String);
-    method public void setPortlist(String);
-    method public void setSecure(boolean);
-    method public void setValue(String);
-    method public void setVersion(int);
-  }
-
-  public class HttpRetryException extends java.io.IOException {
-    ctor public HttpRetryException(String, int);
-    ctor public HttpRetryException(String, int, String);
-    method public String getLocation();
-    method public String getReason();
-    method public int responseCode();
-  }
-
-  public abstract class HttpURLConnection extends java.net.URLConnection {
-    ctor protected HttpURLConnection(java.net.URL);
-    method public abstract void disconnect();
-    method public java.io.InputStream getErrorStream();
-    method public static boolean getFollowRedirects();
-    method public boolean getInstanceFollowRedirects();
-    method public String getRequestMethod();
-    method public int getResponseCode() throws java.io.IOException;
-    method public String getResponseMessage() throws java.io.IOException;
-    method public void setChunkedStreamingMode(int);
-    method public void setFixedLengthStreamingMode(int);
-    method public void setFixedLengthStreamingMode(long);
-    method public static void setFollowRedirects(boolean);
-    method public void setInstanceFollowRedirects(boolean);
-    method public void setRequestMethod(String) throws java.net.ProtocolException;
-    method public abstract boolean usingProxy();
-    field public static final int HTTP_ACCEPTED = 202; // 0xca
-    field public static final int HTTP_BAD_GATEWAY = 502; // 0x1f6
-    field public static final int HTTP_BAD_METHOD = 405; // 0x195
-    field public static final int HTTP_BAD_REQUEST = 400; // 0x190
-    field public static final int HTTP_CLIENT_TIMEOUT = 408; // 0x198
-    field public static final int HTTP_CONFLICT = 409; // 0x199
-    field public static final int HTTP_CREATED = 201; // 0xc9
-    field public static final int HTTP_ENTITY_TOO_LARGE = 413; // 0x19d
-    field public static final int HTTP_FORBIDDEN = 403; // 0x193
-    field public static final int HTTP_GATEWAY_TIMEOUT = 504; // 0x1f8
-    field public static final int HTTP_GONE = 410; // 0x19a
-    field public static final int HTTP_INTERNAL_ERROR = 500; // 0x1f4
-    field public static final int HTTP_LENGTH_REQUIRED = 411; // 0x19b
-    field public static final int HTTP_MOVED_PERM = 301; // 0x12d
-    field public static final int HTTP_MOVED_TEMP = 302; // 0x12e
-    field public static final int HTTP_MULT_CHOICE = 300; // 0x12c
-    field public static final int HTTP_NOT_ACCEPTABLE = 406; // 0x196
-    field public static final int HTTP_NOT_AUTHORITATIVE = 203; // 0xcb
-    field public static final int HTTP_NOT_FOUND = 404; // 0x194
-    field public static final int HTTP_NOT_IMPLEMENTED = 501; // 0x1f5
-    field public static final int HTTP_NOT_MODIFIED = 304; // 0x130
-    field public static final int HTTP_NO_CONTENT = 204; // 0xcc
-    field public static final int HTTP_OK = 200; // 0xc8
-    field public static final int HTTP_PARTIAL = 206; // 0xce
-    field public static final int HTTP_PAYMENT_REQUIRED = 402; // 0x192
-    field public static final int HTTP_PRECON_FAILED = 412; // 0x19c
-    field public static final int HTTP_PROXY_AUTH = 407; // 0x197
-    field public static final int HTTP_REQ_TOO_LONG = 414; // 0x19e
-    field public static final int HTTP_RESET = 205; // 0xcd
-    field public static final int HTTP_SEE_OTHER = 303; // 0x12f
-    field @Deprecated public static final int HTTP_SERVER_ERROR = 500; // 0x1f4
-    field public static final int HTTP_UNAUTHORIZED = 401; // 0x191
-    field public static final int HTTP_UNAVAILABLE = 503; // 0x1f7
-    field public static final int HTTP_UNSUPPORTED_TYPE = 415; // 0x19f
-    field public static final int HTTP_USE_PROXY = 305; // 0x131
-    field public static final int HTTP_VERSION = 505; // 0x1f9
-    field protected int chunkLength;
-    field protected int fixedContentLength;
-    field protected long fixedContentLengthLong;
-    field protected boolean instanceFollowRedirects;
-    field protected String method;
-    field protected int responseCode;
-    field protected String responseMessage;
-  }
-
-  public final class IDN {
-    method public static String toASCII(String, int);
-    method public static String toASCII(String);
-    method public static String toUnicode(String, int);
-    method public static String toUnicode(String);
-    field public static final int ALLOW_UNASSIGNED = 1; // 0x1
-    field public static final int USE_STD3_ASCII_RULES = 2; // 0x2
-  }
-
-  public final class Inet4Address extends java.net.InetAddress {
-  }
-
-  public final class Inet6Address extends java.net.InetAddress {
-    method public static java.net.Inet6Address getByAddress(String, byte[], java.net.NetworkInterface) throws java.net.UnknownHostException;
-    method public static java.net.Inet6Address getByAddress(String, byte[], int) throws java.net.UnknownHostException;
-    method public int getScopeId();
-    method public java.net.NetworkInterface getScopedInterface();
-    method public boolean isIPv4CompatibleAddress();
-  }
-
-  public class InetAddress implements java.io.Serializable {
-    method public byte[] getAddress();
-    method public static java.net.InetAddress[] getAllByName(String) throws java.net.UnknownHostException;
-    method public static java.net.InetAddress getByAddress(String, byte[]) throws java.net.UnknownHostException;
-    method public static java.net.InetAddress getByAddress(byte[]) throws java.net.UnknownHostException;
-    method public static java.net.InetAddress getByName(String) throws java.net.UnknownHostException;
-    method public String getCanonicalHostName();
-    method public String getHostAddress();
-    method public String getHostName();
-    method public static java.net.InetAddress getLocalHost() throws java.net.UnknownHostException;
-    method public static java.net.InetAddress getLoopbackAddress();
-    method public boolean isAnyLocalAddress();
-    method public boolean isLinkLocalAddress();
-    method public boolean isLoopbackAddress();
-    method public boolean isMCGlobal();
-    method public boolean isMCLinkLocal();
-    method public boolean isMCNodeLocal();
-    method public boolean isMCOrgLocal();
-    method public boolean isMCSiteLocal();
-    method public boolean isMulticastAddress();
-    method public boolean isReachable(int) throws java.io.IOException;
-    method public boolean isReachable(java.net.NetworkInterface, int, int) throws java.io.IOException;
-    method public boolean isSiteLocalAddress();
-  }
-
-  public class InetSocketAddress extends java.net.SocketAddress {
-    ctor public InetSocketAddress(int);
-    ctor public InetSocketAddress(java.net.InetAddress, int);
-    ctor public InetSocketAddress(String, int);
-    method public static java.net.InetSocketAddress createUnresolved(String, int);
-    method public final boolean equals(Object);
-    method public final java.net.InetAddress getAddress();
-    method public final String getHostName();
-    method public final String getHostString();
-    method public final int getPort();
-    method public final int hashCode();
-    method public final boolean isUnresolved();
-  }
-
-  public class InterfaceAddress {
-    method public java.net.InetAddress getAddress();
-    method public java.net.InetAddress getBroadcast();
-    method public short getNetworkPrefixLength();
-  }
-
-  public abstract class JarURLConnection extends java.net.URLConnection {
-    ctor protected JarURLConnection(java.net.URL) throws java.net.MalformedURLException;
-    method public java.util.jar.Attributes getAttributes() throws java.io.IOException;
-    method public java.security.cert.Certificate[] getCertificates() throws java.io.IOException;
-    method public String getEntryName();
-    method public java.util.jar.JarEntry getJarEntry() throws java.io.IOException;
-    method public abstract java.util.jar.JarFile getJarFile() throws java.io.IOException;
-    method public java.net.URL getJarFileURL();
-    method public java.util.jar.Attributes getMainAttributes() throws java.io.IOException;
-    method public java.util.jar.Manifest getManifest() throws java.io.IOException;
-    field protected java.net.URLConnection jarFileURLConnection;
-  }
-
-  public class MalformedURLException extends java.io.IOException {
-    ctor public MalformedURLException();
-    ctor public MalformedURLException(String);
-  }
-
-  public class MulticastSocket extends java.net.DatagramSocket {
-    ctor public MulticastSocket() throws java.io.IOException;
-    ctor public MulticastSocket(int) throws java.io.IOException;
-    ctor public MulticastSocket(java.net.SocketAddress) throws java.io.IOException;
-    method public java.net.InetAddress getInterface() throws java.net.SocketException;
-    method public boolean getLoopbackMode() throws java.net.SocketException;
-    method public java.net.NetworkInterface getNetworkInterface() throws java.net.SocketException;
-    method @Deprecated public byte getTTL() throws java.io.IOException;
-    method public int getTimeToLive() throws java.io.IOException;
-    method public void joinGroup(java.net.InetAddress) throws java.io.IOException;
-    method public void joinGroup(java.net.SocketAddress, java.net.NetworkInterface) throws java.io.IOException;
-    method public void leaveGroup(java.net.InetAddress) throws java.io.IOException;
-    method public void leaveGroup(java.net.SocketAddress, java.net.NetworkInterface) throws java.io.IOException;
-    method @Deprecated public void send(java.net.DatagramPacket, byte) throws java.io.IOException;
-    method public void setInterface(java.net.InetAddress) throws java.net.SocketException;
-    method public void setLoopbackMode(boolean) throws java.net.SocketException;
-    method public void setNetworkInterface(java.net.NetworkInterface) throws java.net.SocketException;
-    method @Deprecated public void setTTL(byte) throws java.io.IOException;
-    method public void setTimeToLive(int) throws java.io.IOException;
-  }
-
-  public final class NetPermission extends java.security.BasicPermission {
-    ctor public NetPermission(String);
-    ctor public NetPermission(String, String);
-  }
-
-  public final class NetworkInterface {
-    method public static java.net.NetworkInterface getByIndex(int) throws java.net.SocketException;
-    method public static java.net.NetworkInterface getByInetAddress(java.net.InetAddress) throws java.net.SocketException;
-    method public static java.net.NetworkInterface getByName(String) throws java.net.SocketException;
-    method public String getDisplayName();
-    method public byte[] getHardwareAddress() throws java.net.SocketException;
-    method public int getIndex();
-    method public java.util.Enumeration<java.net.InetAddress> getInetAddresses();
-    method public java.util.List<java.net.InterfaceAddress> getInterfaceAddresses();
-    method public int getMTU() throws java.net.SocketException;
-    method public String getName();
-    method public static java.util.Enumeration<java.net.NetworkInterface> getNetworkInterfaces() throws java.net.SocketException;
-    method public java.net.NetworkInterface getParent();
-    method public java.util.Enumeration<java.net.NetworkInterface> getSubInterfaces();
-    method public boolean isLoopback() throws java.net.SocketException;
-    method public boolean isPointToPoint() throws java.net.SocketException;
-    method public boolean isUp() throws java.net.SocketException;
-    method public boolean isVirtual();
-    method public boolean supportsMulticast() throws java.net.SocketException;
-  }
-
-  public class NoRouteToHostException extends java.net.SocketException {
-    ctor public NoRouteToHostException(String);
-    ctor public NoRouteToHostException();
-  }
-
-  public final class PasswordAuthentication {
-    ctor public PasswordAuthentication(String, char[]);
-    method public char[] getPassword();
-    method public String getUserName();
-  }
-
-  public class PortUnreachableException extends java.net.SocketException {
-    ctor public PortUnreachableException(String);
-    ctor public PortUnreachableException();
-  }
-
-  public class ProtocolException extends java.io.IOException {
-    ctor public ProtocolException(String);
-    ctor public ProtocolException();
-  }
-
-  public interface ProtocolFamily {
-    method public String name();
-  }
-
-  public class Proxy {
-    ctor public Proxy(java.net.Proxy.Type, java.net.SocketAddress);
-    method public java.net.SocketAddress address();
-    method public final boolean equals(Object);
-    method public final int hashCode();
-    method public java.net.Proxy.Type type();
-    field public static final java.net.Proxy NO_PROXY;
-  }
-
-  public enum Proxy.Type {
-    enum_constant public static final java.net.Proxy.Type DIRECT;
-    enum_constant public static final java.net.Proxy.Type HTTP;
-    enum_constant public static final java.net.Proxy.Type SOCKS;
-  }
-
-  public abstract class ProxySelector {
-    ctor public ProxySelector();
-    method public abstract void connectFailed(java.net.URI, java.net.SocketAddress, java.io.IOException);
-    method public static java.net.ProxySelector getDefault();
-    method public abstract java.util.List<java.net.Proxy> select(java.net.URI);
-    method public static void setDefault(java.net.ProxySelector);
-  }
-
-  public abstract class ResponseCache {
-    ctor public ResponseCache();
-    method public abstract java.net.CacheResponse get(java.net.URI, String, java.util.Map<java.lang.String,java.util.List<java.lang.String>>) throws java.io.IOException;
-    method public static java.net.ResponseCache getDefault();
-    method public abstract java.net.CacheRequest put(java.net.URI, java.net.URLConnection) throws java.io.IOException;
-    method public static void setDefault(java.net.ResponseCache);
-  }
-
-  public abstract class SecureCacheResponse extends java.net.CacheResponse {
-    ctor public SecureCacheResponse();
-    method public abstract String getCipherSuite();
-    method public abstract java.util.List<java.security.cert.Certificate> getLocalCertificateChain();
-    method public abstract java.security.Principal getLocalPrincipal();
-    method public abstract java.security.Principal getPeerPrincipal() throws javax.net.ssl.SSLPeerUnverifiedException;
-    method public abstract java.util.List<java.security.cert.Certificate> getServerCertificateChain() throws javax.net.ssl.SSLPeerUnverifiedException;
-  }
-
-  public class ServerSocket implements java.io.Closeable {
-    ctor public ServerSocket() throws java.io.IOException;
-    ctor public ServerSocket(int) throws java.io.IOException;
-    ctor public ServerSocket(int, int) throws java.io.IOException;
-    ctor public ServerSocket(int, int, java.net.InetAddress) throws java.io.IOException;
-    method public java.net.Socket accept() throws java.io.IOException;
-    method public void bind(java.net.SocketAddress) throws java.io.IOException;
-    method public void bind(java.net.SocketAddress, int) throws java.io.IOException;
-    method public void close() throws java.io.IOException;
-    method public java.nio.channels.ServerSocketChannel getChannel();
-    method public java.net.InetAddress getInetAddress();
-    method public int getLocalPort();
-    method public java.net.SocketAddress getLocalSocketAddress();
-    method public int getReceiveBufferSize() throws java.net.SocketException;
-    method public boolean getReuseAddress() throws java.net.SocketException;
-    method public int getSoTimeout() throws java.io.IOException;
-    method protected final void implAccept(java.net.Socket) throws java.io.IOException;
-    method public boolean isBound();
-    method public boolean isClosed();
-    method public void setPerformancePreferences(int, int, int);
-    method public void setReceiveBufferSize(int) throws java.net.SocketException;
-    method public void setReuseAddress(boolean) throws java.net.SocketException;
-    method public void setSoTimeout(int) throws java.net.SocketException;
-    method public static void setSocketFactory(java.net.SocketImplFactory) throws java.io.IOException;
-  }
-
-  public class Socket implements java.io.Closeable {
-    ctor public Socket();
-    ctor public Socket(java.net.Proxy);
-    ctor protected Socket(java.net.SocketImpl) throws java.net.SocketException;
-    ctor public Socket(String, int) throws java.io.IOException, java.net.UnknownHostException;
-    ctor public Socket(java.net.InetAddress, int) throws java.io.IOException;
-    ctor public Socket(String, int, java.net.InetAddress, int) throws java.io.IOException;
-    ctor public Socket(java.net.InetAddress, int, java.net.InetAddress, int) throws java.io.IOException;
-    ctor @Deprecated public Socket(String, int, boolean) throws java.io.IOException;
-    ctor @Deprecated public Socket(java.net.InetAddress, int, boolean) throws java.io.IOException;
-    method public void bind(java.net.SocketAddress) throws java.io.IOException;
-    method public void close() throws java.io.IOException;
-    method public void connect(java.net.SocketAddress) throws java.io.IOException;
-    method public void connect(java.net.SocketAddress, int) throws java.io.IOException;
-    method public java.nio.channels.SocketChannel getChannel();
-    method public java.net.InetAddress getInetAddress();
-    method public java.io.InputStream getInputStream() throws java.io.IOException;
-    method public boolean getKeepAlive() throws java.net.SocketException;
-    method public java.net.InetAddress getLocalAddress();
-    method public int getLocalPort();
-    method public java.net.SocketAddress getLocalSocketAddress();
-    method public boolean getOOBInline() throws java.net.SocketException;
-    method public java.io.OutputStream getOutputStream() throws java.io.IOException;
-    method public int getPort();
-    method public int getReceiveBufferSize() throws java.net.SocketException;
-    method public java.net.SocketAddress getRemoteSocketAddress();
-    method public boolean getReuseAddress() throws java.net.SocketException;
-    method public int getSendBufferSize() throws java.net.SocketException;
-    method public int getSoLinger() throws java.net.SocketException;
-    method public int getSoTimeout() throws java.net.SocketException;
-    method public boolean getTcpNoDelay() throws java.net.SocketException;
-    method public int getTrafficClass() throws java.net.SocketException;
-    method public boolean isBound();
-    method public boolean isClosed();
-    method public boolean isConnected();
-    method public boolean isInputShutdown();
-    method public boolean isOutputShutdown();
-    method public void sendUrgentData(int) throws java.io.IOException;
-    method public void setKeepAlive(boolean) throws java.net.SocketException;
-    method public void setOOBInline(boolean) throws java.net.SocketException;
-    method public void setPerformancePreferences(int, int, int);
-    method public void setReceiveBufferSize(int) throws java.net.SocketException;
-    method public void setReuseAddress(boolean) throws java.net.SocketException;
-    method public void setSendBufferSize(int) throws java.net.SocketException;
-    method public void setSoLinger(boolean, int) throws java.net.SocketException;
-    method public void setSoTimeout(int) throws java.net.SocketException;
-    method public static void setSocketImplFactory(java.net.SocketImplFactory) throws java.io.IOException;
-    method public void setTcpNoDelay(boolean) throws java.net.SocketException;
-    method public void setTrafficClass(int) throws java.net.SocketException;
-    method public void shutdownInput() throws java.io.IOException;
-    method public void shutdownOutput() throws java.io.IOException;
-  }
-
-  public abstract class SocketAddress implements java.io.Serializable {
-    ctor public SocketAddress();
-  }
-
-  public class SocketException extends java.io.IOException {
-    ctor public SocketException(String);
-    ctor public SocketException();
-  }
-
-  public abstract class SocketImpl implements java.net.SocketOptions {
-    ctor public SocketImpl();
-    method protected abstract void accept(java.net.SocketImpl) throws java.io.IOException;
-    method protected abstract int available() throws java.io.IOException;
-    method protected abstract void bind(java.net.InetAddress, int) throws java.io.IOException;
-    method protected abstract void close() throws java.io.IOException;
-    method protected abstract void connect(String, int) throws java.io.IOException;
-    method protected abstract void connect(java.net.InetAddress, int) throws java.io.IOException;
-    method protected abstract void connect(java.net.SocketAddress, int) throws java.io.IOException;
-    method protected abstract void create(boolean) throws java.io.IOException;
-    method protected java.io.FileDescriptor getFileDescriptor();
-    method protected java.net.InetAddress getInetAddress();
-    method protected abstract java.io.InputStream getInputStream() throws java.io.IOException;
-    method protected int getLocalPort();
-    method protected abstract java.io.OutputStream getOutputStream() throws java.io.IOException;
-    method protected int getPort();
-    method protected abstract void listen(int) throws java.io.IOException;
-    method protected abstract void sendUrgentData(int) throws java.io.IOException;
-    method protected void setPerformancePreferences(int, int, int);
-    method protected void shutdownInput() throws java.io.IOException;
-    method protected void shutdownOutput() throws java.io.IOException;
-    method protected boolean supportsUrgentData();
-    field protected java.net.InetAddress address;
-    field protected java.io.FileDescriptor fd;
-    field protected int localport;
-    field protected int port;
-  }
-
-  public interface SocketImplFactory {
-    method public java.net.SocketImpl createSocketImpl();
-  }
-
-  public interface SocketOption<T> {
-    method public String name();
-    method public Class<T> type();
-  }
-
-  public interface SocketOptions {
-    method public Object getOption(int) throws java.net.SocketException;
-    method public void setOption(int, Object) throws java.net.SocketException;
-    field public static final int IP_MULTICAST_IF = 16; // 0x10
-    field public static final int IP_MULTICAST_IF2 = 31; // 0x1f
-    field public static final int IP_MULTICAST_LOOP = 18; // 0x12
-    field public static final int IP_TOS = 3; // 0x3
-    field public static final int SO_BINDADDR = 15; // 0xf
-    field public static final int SO_BROADCAST = 32; // 0x20
-    field public static final int SO_KEEPALIVE = 8; // 0x8
-    field public static final int SO_LINGER = 128; // 0x80
-    field public static final int SO_OOBINLINE = 4099; // 0x1003
-    field public static final int SO_RCVBUF = 4098; // 0x1002
-    field public static final int SO_REUSEADDR = 4; // 0x4
-    field public static final int SO_SNDBUF = 4097; // 0x1001
-    field public static final int SO_TIMEOUT = 4102; // 0x1006
-    field public static final int TCP_NODELAY = 1; // 0x1
-  }
-
-  public final class SocketPermission extends java.security.Permission implements java.io.Serializable {
-    ctor public SocketPermission(String, String);
-    method public String getActions();
-    method public boolean implies(java.security.Permission);
-  }
-
-  public class SocketTimeoutException extends java.io.InterruptedIOException {
-    ctor public SocketTimeoutException(String);
-    ctor public SocketTimeoutException();
-  }
-
-  public enum StandardProtocolFamily implements java.net.ProtocolFamily {
-    enum_constant public static final java.net.StandardProtocolFamily INET;
-    enum_constant public static final java.net.StandardProtocolFamily INET6;
-  }
-
-  public final class StandardSocketOptions {
-    field public static final java.net.SocketOption<java.net.NetworkInterface> IP_MULTICAST_IF;
-    field public static final java.net.SocketOption<java.lang.Boolean> IP_MULTICAST_LOOP;
-    field public static final java.net.SocketOption<java.lang.Integer> IP_MULTICAST_TTL;
-    field public static final java.net.SocketOption<java.lang.Integer> IP_TOS;
-    field public static final java.net.SocketOption<java.lang.Boolean> SO_BROADCAST;
-    field public static final java.net.SocketOption<java.lang.Boolean> SO_KEEPALIVE;
-    field public static final java.net.SocketOption<java.lang.Integer> SO_LINGER;
-    field public static final java.net.SocketOption<java.lang.Integer> SO_RCVBUF;
-    field public static final java.net.SocketOption<java.lang.Boolean> SO_REUSEADDR;
-    field public static final java.net.SocketOption<java.lang.Integer> SO_SNDBUF;
-    field public static final java.net.SocketOption<java.lang.Boolean> TCP_NODELAY;
-  }
-
-  public final class URI implements java.lang.Comparable<java.net.URI> java.io.Serializable {
-    ctor public URI(String) throws java.net.URISyntaxException;
-    ctor public URI(String, String, String, int, String, String, String) throws java.net.URISyntaxException;
-    ctor public URI(String, String, String, String, String) throws java.net.URISyntaxException;
-    ctor public URI(String, String, String, String) throws java.net.URISyntaxException;
-    ctor public URI(String, String, String) throws java.net.URISyntaxException;
-    method public int compareTo(java.net.URI);
-    method public static java.net.URI create(String);
-    method public String getAuthority();
-    method public String getFragment();
-    method public String getHost();
-    method public String getPath();
-    method public int getPort();
-    method public String getQuery();
-    method public String getRawAuthority();
-    method public String getRawFragment();
-    method public String getRawPath();
-    method public String getRawQuery();
-    method public String getRawSchemeSpecificPart();
-    method public String getRawUserInfo();
-    method public String getScheme();
-    method public String getSchemeSpecificPart();
-    method public String getUserInfo();
-    method public boolean isAbsolute();
-    method public boolean isOpaque();
-    method public java.net.URI normalize();
-    method public java.net.URI parseServerAuthority() throws java.net.URISyntaxException;
-    method public java.net.URI relativize(java.net.URI);
-    method public java.net.URI resolve(java.net.URI);
-    method public java.net.URI resolve(String);
-    method public String toASCIIString();
-    method public java.net.URL toURL() throws java.net.MalformedURLException;
-  }
-
-  public class URISyntaxException extends java.lang.Exception {
-    ctor public URISyntaxException(String, String, int);
-    ctor public URISyntaxException(String, String);
-    method public int getIndex();
-    method public String getInput();
-    method public String getReason();
-  }
-
-  public final class URL implements java.io.Serializable {
-    ctor public URL(String, String, int, String) throws java.net.MalformedURLException;
-    ctor public URL(String, String, String) throws java.net.MalformedURLException;
-    ctor public URL(String, String, int, String, java.net.URLStreamHandler) throws java.net.MalformedURLException;
-    ctor public URL(String) throws java.net.MalformedURLException;
-    ctor public URL(java.net.URL, String) throws java.net.MalformedURLException;
-    ctor public URL(java.net.URL, String, java.net.URLStreamHandler) throws java.net.MalformedURLException;
-    method public String getAuthority();
-    method public Object getContent() throws java.io.IOException;
-    method public Object getContent(Class[]) throws java.io.IOException;
-    method public int getDefaultPort();
-    method public String getFile();
-    method public String getHost();
-    method public String getPath();
-    method public int getPort();
-    method public String getProtocol();
-    method public String getQuery();
-    method public String getRef();
-    method public String getUserInfo();
-    method public java.net.URLConnection openConnection() throws java.io.IOException;
-    method public java.net.URLConnection openConnection(java.net.Proxy) throws java.io.IOException;
-    method public java.io.InputStream openStream() throws java.io.IOException;
-    method public boolean sameFile(java.net.URL);
-    method public static void setURLStreamHandlerFactory(java.net.URLStreamHandlerFactory);
-    method public String toExternalForm();
-    method public java.net.URI toURI() throws java.net.URISyntaxException;
-  }
-
-  public class URLClassLoader extends java.security.SecureClassLoader implements java.io.Closeable {
-    ctor public URLClassLoader(java.net.URL[], ClassLoader);
-    ctor public URLClassLoader(java.net.URL[]);
-    ctor public URLClassLoader(java.net.URL[], ClassLoader, java.net.URLStreamHandlerFactory);
-    method protected void addURL(java.net.URL);
-    method public void close() throws java.io.IOException;
-    method protected Package definePackage(String, java.util.jar.Manifest, java.net.URL) throws java.lang.IllegalArgumentException;
-    method public java.net.URL findResource(String);
-    method public java.util.Enumeration<java.net.URL> findResources(String) throws java.io.IOException;
-    method public java.net.URL[] getURLs();
-    method public static java.net.URLClassLoader newInstance(java.net.URL[], ClassLoader);
-    method public static java.net.URLClassLoader newInstance(java.net.URL[]);
-  }
-
-  public abstract class URLConnection {
-    ctor protected URLConnection(java.net.URL);
-    method public void addRequestProperty(String, String);
-    method public abstract void connect() throws java.io.IOException;
-    method public boolean getAllowUserInteraction();
-    method public int getConnectTimeout();
-    method public Object getContent() throws java.io.IOException;
-    method public Object getContent(Class[]) throws java.io.IOException;
-    method public String getContentEncoding();
-    method public int getContentLength();
-    method public long getContentLengthLong();
-    method public String getContentType();
-    method public long getDate();
-    method public static boolean getDefaultAllowUserInteraction();
-    method @Deprecated public static String getDefaultRequestProperty(String);
-    method public boolean getDefaultUseCaches();
-    method public boolean getDoInput();
-    method public boolean getDoOutput();
-    method public long getExpiration();
-    method public static java.net.FileNameMap getFileNameMap();
-    method public String getHeaderField(String);
-    method public String getHeaderField(int);
-    method public long getHeaderFieldDate(String, long);
-    method public int getHeaderFieldInt(String, int);
-    method public String getHeaderFieldKey(int);
-    method public long getHeaderFieldLong(String, long);
-    method public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getHeaderFields();
-    method public long getIfModifiedSince();
-    method public java.io.InputStream getInputStream() throws java.io.IOException;
-    method public long getLastModified();
-    method public java.io.OutputStream getOutputStream() throws java.io.IOException;
-    method public java.security.Permission getPermission() throws java.io.IOException;
-    method public int getReadTimeout();
-    method public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getRequestProperties();
-    method public String getRequestProperty(String);
-    method public java.net.URL getURL();
-    method public boolean getUseCaches();
-    method public static String guessContentTypeFromName(String);
-    method public static String guessContentTypeFromStream(java.io.InputStream) throws java.io.IOException;
-    method public void setAllowUserInteraction(boolean);
-    method public void setConnectTimeout(int);
-    method public static void setContentHandlerFactory(java.net.ContentHandlerFactory);
-    method public static void setDefaultAllowUserInteraction(boolean);
-    method @Deprecated public static void setDefaultRequestProperty(String, String);
-    method public void setDefaultUseCaches(boolean);
-    method public void setDoInput(boolean);
-    method public void setDoOutput(boolean);
-    method public static void setFileNameMap(java.net.FileNameMap);
-    method public void setIfModifiedSince(long);
-    method public void setReadTimeout(int);
-    method public void setRequestProperty(String, String);
-    method public void setUseCaches(boolean);
-    field protected boolean allowUserInteraction;
-    field protected boolean connected;
-    field protected boolean doInput;
-    field protected boolean doOutput;
-    field protected long ifModifiedSince;
-    field protected java.net.URL url;
-    field protected boolean useCaches;
-  }
-
-  public class URLDecoder {
-    ctor public URLDecoder();
-    method @Deprecated public static String decode(String);
-    method public static String decode(String, String) throws java.io.UnsupportedEncodingException;
-  }
-
-  public class URLEncoder {
-    method @Deprecated public static String encode(String);
-    method public static String encode(String, String) throws java.io.UnsupportedEncodingException;
-  }
-
-  public abstract class URLStreamHandler {
-    ctor public URLStreamHandler();
-    method protected boolean equals(java.net.URL, java.net.URL);
-    method protected int getDefaultPort();
-    method protected java.net.InetAddress getHostAddress(java.net.URL);
-    method protected int hashCode(java.net.URL);
-    method protected boolean hostsEqual(java.net.URL, java.net.URL);
-    method protected abstract java.net.URLConnection openConnection(java.net.URL) throws java.io.IOException;
-    method protected java.net.URLConnection openConnection(java.net.URL, java.net.Proxy) throws java.io.IOException;
-    method protected void parseURL(java.net.URL, String, int, int);
-    method protected boolean sameFile(java.net.URL, java.net.URL);
-    method protected void setURL(java.net.URL, String, String, int, String, String, String, String, String);
-    method @Deprecated protected void setURL(java.net.URL, String, String, int, String, String);
-    method protected String toExternalForm(java.net.URL);
-  }
-
-  public interface URLStreamHandlerFactory {
-    method public java.net.URLStreamHandler createURLStreamHandler(String);
-  }
-
-  public class UnknownHostException extends java.io.IOException {
-    ctor public UnknownHostException(String);
-    ctor public UnknownHostException();
-  }
-
-  public class UnknownServiceException extends java.io.IOException {
-    ctor public UnknownServiceException();
-    ctor public UnknownServiceException(String);
-  }
-
-}
-
-package java.nio {
-
-  public abstract class Buffer {
-    method public abstract Object array();
-    method public abstract int arrayOffset();
-    method public final int capacity();
-    method public java.nio.Buffer clear();
-    method public java.nio.Buffer flip();
-    method public abstract boolean hasArray();
-    method public final boolean hasRemaining();
-    method public abstract boolean isDirect();
-    method public abstract boolean isReadOnly();
-    method public final int limit();
-    method public java.nio.Buffer limit(int);
-    method public java.nio.Buffer mark();
-    method public final int position();
-    method public java.nio.Buffer position(int);
-    method public final int remaining();
-    method public java.nio.Buffer reset();
-    method public java.nio.Buffer rewind();
-  }
-
-  public class BufferOverflowException extends java.lang.RuntimeException {
-    ctor public BufferOverflowException();
-  }
-
-  public class BufferUnderflowException extends java.lang.RuntimeException {
-    ctor public BufferUnderflowException();
-  }
-
-  public abstract class ByteBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.ByteBuffer> {
-    method @NonNull public static java.nio.ByteBuffer allocate(int);
-    method @NonNull public static java.nio.ByteBuffer allocateDirect(int);
-    method @NonNull public final byte[] array();
-    method public final int arrayOffset();
-    method @NonNull public abstract java.nio.CharBuffer asCharBuffer();
-    method @NonNull public abstract java.nio.DoubleBuffer asDoubleBuffer();
-    method @NonNull public abstract java.nio.FloatBuffer asFloatBuffer();
-    method @NonNull public abstract java.nio.IntBuffer asIntBuffer();
-    method @NonNull public abstract java.nio.LongBuffer asLongBuffer();
-    method @NonNull public abstract java.nio.ByteBuffer asReadOnlyBuffer();
-    method @NonNull public abstract java.nio.ShortBuffer asShortBuffer();
-    method @NonNull public abstract java.nio.ByteBuffer compact();
-    method public int compareTo(@NonNull java.nio.ByteBuffer);
-    method @NonNull public abstract java.nio.ByteBuffer duplicate();
-    method public abstract byte get();
-    method public abstract byte get(int);
-    method @NonNull public java.nio.ByteBuffer get(@NonNull byte[], int, int);
-    method @NonNull public java.nio.ByteBuffer get(@NonNull byte[]);
-    method public abstract char getChar();
-    method public abstract char getChar(int);
-    method public abstract double getDouble();
-    method public abstract double getDouble(int);
-    method public abstract float getFloat();
-    method public abstract float getFloat(int);
-    method public abstract int getInt();
-    method public abstract int getInt(int);
-    method public abstract long getLong();
-    method public abstract long getLong(int);
-    method public abstract short getShort();
-    method public abstract short getShort(int);
-    method public final boolean hasArray();
-    method @NonNull public final java.nio.ByteOrder order();
-    method @NonNull public final java.nio.ByteBuffer order(@NonNull java.nio.ByteOrder);
-    method @NonNull public abstract java.nio.ByteBuffer put(byte);
-    method @NonNull public abstract java.nio.ByteBuffer put(int, byte);
-    method @NonNull public java.nio.ByteBuffer put(@NonNull java.nio.ByteBuffer);
-    method @NonNull public java.nio.ByteBuffer put(@NonNull byte[], int, int);
-    method @NonNull public final java.nio.ByteBuffer put(@NonNull byte[]);
-    method @NonNull public abstract java.nio.ByteBuffer putChar(char);
-    method @NonNull public abstract java.nio.ByteBuffer putChar(int, char);
-    method @NonNull public abstract java.nio.ByteBuffer putDouble(double);
-    method @NonNull public abstract java.nio.ByteBuffer putDouble(int, double);
-    method @NonNull public abstract java.nio.ByteBuffer putFloat(float);
-    method @NonNull public abstract java.nio.ByteBuffer putFloat(int, float);
-    method @NonNull public abstract java.nio.ByteBuffer putInt(int);
-    method @NonNull public abstract java.nio.ByteBuffer putInt(int, int);
-    method @NonNull public abstract java.nio.ByteBuffer putLong(long);
-    method @NonNull public abstract java.nio.ByteBuffer putLong(int, long);
-    method @NonNull public abstract java.nio.ByteBuffer putShort(short);
-    method @NonNull public abstract java.nio.ByteBuffer putShort(int, short);
-    method @NonNull public abstract java.nio.ByteBuffer slice();
-    method @NonNull public static java.nio.ByteBuffer wrap(@NonNull byte[], int, int);
-    method @NonNull public static java.nio.ByteBuffer wrap(@NonNull byte[]);
-  }
-
-  public final class ByteOrder {
-    method public static java.nio.ByteOrder nativeOrder();
-    field public static final java.nio.ByteOrder BIG_ENDIAN;
-    field public static final java.nio.ByteOrder LITTLE_ENDIAN;
-  }
-
-  public abstract class CharBuffer extends java.nio.Buffer implements java.lang.Appendable java.lang.CharSequence java.lang.Comparable<java.nio.CharBuffer> java.lang.Readable {
-    method public static java.nio.CharBuffer allocate(int);
-    method public java.nio.CharBuffer append(CharSequence);
-    method public java.nio.CharBuffer append(CharSequence, int, int);
-    method public java.nio.CharBuffer append(char);
-    method public final char[] array();
-    method public final int arrayOffset();
-    method public abstract java.nio.CharBuffer asReadOnlyBuffer();
-    method public final char charAt(int);
-    method public abstract java.nio.CharBuffer compact();
-    method public int compareTo(java.nio.CharBuffer);
-    method public abstract java.nio.CharBuffer duplicate();
-    method public abstract char get();
-    method public abstract char get(int);
-    method public java.nio.CharBuffer get(char[], int, int);
-    method public java.nio.CharBuffer get(char[]);
-    method public final boolean hasArray();
-    method public final int length();
-    method public abstract java.nio.ByteOrder order();
-    method public abstract java.nio.CharBuffer put(char);
-    method public abstract java.nio.CharBuffer put(int, char);
-    method public java.nio.CharBuffer put(java.nio.CharBuffer);
-    method public java.nio.CharBuffer put(char[], int, int);
-    method public final java.nio.CharBuffer put(char[]);
-    method public java.nio.CharBuffer put(String, int, int);
-    method public final java.nio.CharBuffer put(String);
-    method public int read(java.nio.CharBuffer) throws java.io.IOException;
-    method public abstract java.nio.CharBuffer slice();
-    method public abstract java.nio.CharBuffer subSequence(int, int);
-    method public static java.nio.CharBuffer wrap(char[], int, int);
-    method public static java.nio.CharBuffer wrap(char[]);
-    method public static java.nio.CharBuffer wrap(CharSequence, int, int);
-    method public static java.nio.CharBuffer wrap(CharSequence);
-  }
-
-  public abstract class DoubleBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.DoubleBuffer> {
-    method public static java.nio.DoubleBuffer allocate(int);
-    method public final double[] array();
-    method public final int arrayOffset();
-    method public abstract java.nio.DoubleBuffer asReadOnlyBuffer();
-    method public abstract java.nio.DoubleBuffer compact();
-    method public int compareTo(java.nio.DoubleBuffer);
-    method public abstract java.nio.DoubleBuffer duplicate();
-    method public abstract double get();
-    method public abstract double get(int);
-    method public java.nio.DoubleBuffer get(double[], int, int);
-    method public java.nio.DoubleBuffer get(double[]);
-    method public final boolean hasArray();
-    method public abstract java.nio.ByteOrder order();
-    method public abstract java.nio.DoubleBuffer put(double);
-    method public abstract java.nio.DoubleBuffer put(int, double);
-    method public java.nio.DoubleBuffer put(java.nio.DoubleBuffer);
-    method public java.nio.DoubleBuffer put(double[], int, int);
-    method public final java.nio.DoubleBuffer put(double[]);
-    method public abstract java.nio.DoubleBuffer slice();
-    method public static java.nio.DoubleBuffer wrap(double[], int, int);
-    method public static java.nio.DoubleBuffer wrap(double[]);
-  }
-
-  public abstract class FloatBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.FloatBuffer> {
-    method public static java.nio.FloatBuffer allocate(int);
-    method public final float[] array();
-    method public final int arrayOffset();
-    method public abstract java.nio.FloatBuffer asReadOnlyBuffer();
-    method public abstract java.nio.FloatBuffer compact();
-    method public int compareTo(java.nio.FloatBuffer);
-    method public abstract java.nio.FloatBuffer duplicate();
-    method public abstract float get();
-    method public abstract float get(int);
-    method public java.nio.FloatBuffer get(float[], int, int);
-    method public java.nio.FloatBuffer get(float[]);
-    method public final boolean hasArray();
-    method public abstract java.nio.ByteOrder order();
-    method public abstract java.nio.FloatBuffer put(float);
-    method public abstract java.nio.FloatBuffer put(int, float);
-    method public java.nio.FloatBuffer put(java.nio.FloatBuffer);
-    method public java.nio.FloatBuffer put(float[], int, int);
-    method public final java.nio.FloatBuffer put(float[]);
-    method public abstract java.nio.FloatBuffer slice();
-    method public static java.nio.FloatBuffer wrap(float[], int, int);
-    method public static java.nio.FloatBuffer wrap(float[]);
-  }
-
-  public abstract class IntBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.IntBuffer> {
-    method public static java.nio.IntBuffer allocate(int);
-    method public final int[] array();
-    method public final int arrayOffset();
-    method public abstract java.nio.IntBuffer asReadOnlyBuffer();
-    method public abstract java.nio.IntBuffer compact();
-    method public int compareTo(java.nio.IntBuffer);
-    method public abstract java.nio.IntBuffer duplicate();
-    method public abstract int get();
-    method public abstract int get(int);
-    method public java.nio.IntBuffer get(int[], int, int);
-    method public java.nio.IntBuffer get(int[]);
-    method public final boolean hasArray();
-    method public abstract java.nio.ByteOrder order();
-    method public abstract java.nio.IntBuffer put(int);
-    method public abstract java.nio.IntBuffer put(int, int);
-    method public java.nio.IntBuffer put(java.nio.IntBuffer);
-    method public java.nio.IntBuffer put(int[], int, int);
-    method public final java.nio.IntBuffer put(int[]);
-    method public abstract java.nio.IntBuffer slice();
-    method public static java.nio.IntBuffer wrap(int[], int, int);
-    method public static java.nio.IntBuffer wrap(int[]);
-  }
-
-  public class InvalidMarkException extends java.lang.IllegalStateException {
-    ctor public InvalidMarkException();
-  }
-
-  public abstract class LongBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.LongBuffer> {
-    method public static java.nio.LongBuffer allocate(int);
-    method public final long[] array();
-    method public final int arrayOffset();
-    method public abstract java.nio.LongBuffer asReadOnlyBuffer();
-    method public abstract java.nio.LongBuffer compact();
-    method public int compareTo(java.nio.LongBuffer);
-    method public abstract java.nio.LongBuffer duplicate();
-    method public abstract long get();
-    method public abstract long get(int);
-    method public java.nio.LongBuffer get(long[], int, int);
-    method public java.nio.LongBuffer get(long[]);
-    method public final boolean hasArray();
-    method public abstract java.nio.ByteOrder order();
-    method public abstract java.nio.LongBuffer put(long);
-    method public abstract java.nio.LongBuffer put(int, long);
-    method public java.nio.LongBuffer put(java.nio.LongBuffer);
-    method public java.nio.LongBuffer put(long[], int, int);
-    method public final java.nio.LongBuffer put(long[]);
-    method public abstract java.nio.LongBuffer slice();
-    method public static java.nio.LongBuffer wrap(long[], int, int);
-    method public static java.nio.LongBuffer wrap(long[]);
-  }
-
-  public abstract class MappedByteBuffer extends java.nio.ByteBuffer {
-    method public final java.nio.MappedByteBuffer force();
-    method public final boolean isLoaded();
-    method public final java.nio.MappedByteBuffer load();
-  }
-
-  public class ReadOnlyBufferException extends java.lang.UnsupportedOperationException {
-    ctor public ReadOnlyBufferException();
-  }
-
-  public abstract class ShortBuffer extends java.nio.Buffer implements java.lang.Comparable<java.nio.ShortBuffer> {
-    method public static java.nio.ShortBuffer allocate(int);
-    method public final short[] array();
-    method public final int arrayOffset();
-    method public abstract java.nio.ShortBuffer asReadOnlyBuffer();
-    method public abstract java.nio.ShortBuffer compact();
-    method public int compareTo(java.nio.ShortBuffer);
-    method public abstract java.nio.ShortBuffer duplicate();
-    method public abstract short get();
-    method public abstract short get(int);
-    method public java.nio.ShortBuffer get(short[], int, int);
-    method public java.nio.ShortBuffer get(short[]);
-    method public final boolean hasArray();
-    method public abstract java.nio.ByteOrder order();
-    method public abstract java.nio.ShortBuffer put(short);
-    method public abstract java.nio.ShortBuffer put(int, short);
-    method public java.nio.ShortBuffer put(java.nio.ShortBuffer);
-    method public java.nio.ShortBuffer put(short[], int, int);
-    method public final java.nio.ShortBuffer put(short[]);
-    method public abstract java.nio.ShortBuffer slice();
-    method public static java.nio.ShortBuffer wrap(short[], int, int);
-    method public static java.nio.ShortBuffer wrap(short[]);
-  }
-
-}
-
-package java.nio.channels {
-
-  public class AcceptPendingException extends java.lang.IllegalStateException {
-    ctor public AcceptPendingException();
-  }
-
-  public class AlreadyBoundException extends java.lang.IllegalStateException {
-    ctor public AlreadyBoundException();
-  }
-
-  public class AlreadyConnectedException extends java.lang.IllegalStateException {
-    ctor public AlreadyConnectedException();
-  }
-
-  public interface AsynchronousByteChannel extends java.nio.channels.AsynchronousChannel {
-    method public <A> void read(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
-    method public java.util.concurrent.Future<java.lang.Integer> read(java.nio.ByteBuffer);
-    method public <A> void write(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
-    method public java.util.concurrent.Future<java.lang.Integer> write(java.nio.ByteBuffer);
-  }
-
-  public interface AsynchronousChannel extends java.nio.channels.Channel {
-  }
-
-  public abstract class AsynchronousChannelGroup {
-    ctor protected AsynchronousChannelGroup(java.nio.channels.spi.AsynchronousChannelProvider);
-    method public abstract boolean awaitTermination(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public abstract boolean isShutdown();
-    method public abstract boolean isTerminated();
-    method public final java.nio.channels.spi.AsynchronousChannelProvider provider();
-    method public abstract void shutdown();
-    method public abstract void shutdownNow() throws java.io.IOException;
-    method public static java.nio.channels.AsynchronousChannelGroup withCachedThreadPool(java.util.concurrent.ExecutorService, int) throws java.io.IOException;
-    method public static java.nio.channels.AsynchronousChannelGroup withFixedThreadPool(int, java.util.concurrent.ThreadFactory) throws java.io.IOException;
-    method public static java.nio.channels.AsynchronousChannelGroup withThreadPool(java.util.concurrent.ExecutorService) throws java.io.IOException;
-  }
-
-  public class AsynchronousCloseException extends java.nio.channels.ClosedChannelException {
-    ctor public AsynchronousCloseException();
-  }
-
-  public abstract class AsynchronousFileChannel implements java.nio.channels.AsynchronousChannel {
-    ctor protected AsynchronousFileChannel();
-    method public abstract void force(boolean) throws java.io.IOException;
-    method public abstract <A> void lock(long, long, boolean, A, java.nio.channels.CompletionHandler<java.nio.channels.FileLock,? super A>);
-    method public final <A> void lock(A, java.nio.channels.CompletionHandler<java.nio.channels.FileLock,? super A>);
-    method public abstract java.util.concurrent.Future<java.nio.channels.FileLock> lock(long, long, boolean);
-    method public final java.util.concurrent.Future<java.nio.channels.FileLock> lock();
-    method public static java.nio.channels.AsynchronousFileChannel open(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.util.concurrent.ExecutorService, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public static java.nio.channels.AsynchronousFileChannel open(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
-    method public abstract <A> void read(java.nio.ByteBuffer, long, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
-    method public abstract java.util.concurrent.Future<java.lang.Integer> read(java.nio.ByteBuffer, long);
-    method public abstract long size() throws java.io.IOException;
-    method public abstract java.nio.channels.AsynchronousFileChannel truncate(long) throws java.io.IOException;
-    method public abstract java.nio.channels.FileLock tryLock(long, long, boolean) throws java.io.IOException;
-    method public final java.nio.channels.FileLock tryLock() throws java.io.IOException;
-    method public abstract <A> void write(java.nio.ByteBuffer, long, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
-    method public abstract java.util.concurrent.Future<java.lang.Integer> write(java.nio.ByteBuffer, long);
-  }
-
-  public abstract class AsynchronousServerSocketChannel implements java.nio.channels.AsynchronousChannel java.nio.channels.NetworkChannel {
-    ctor protected AsynchronousServerSocketChannel(java.nio.channels.spi.AsynchronousChannelProvider);
-    method public abstract <A> void accept(A, java.nio.channels.CompletionHandler<java.nio.channels.AsynchronousSocketChannel,? super A>);
-    method public abstract java.util.concurrent.Future<java.nio.channels.AsynchronousSocketChannel> accept();
-    method public final java.nio.channels.AsynchronousServerSocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
-    method public abstract java.nio.channels.AsynchronousServerSocketChannel bind(java.net.SocketAddress, int) throws java.io.IOException;
-    method public static java.nio.channels.AsynchronousServerSocketChannel open(java.nio.channels.AsynchronousChannelGroup) throws java.io.IOException;
-    method public static java.nio.channels.AsynchronousServerSocketChannel open() throws java.io.IOException;
-    method public final java.nio.channels.spi.AsynchronousChannelProvider provider();
-    method public abstract <T> java.nio.channels.AsynchronousServerSocketChannel setOption(java.net.SocketOption<T>, T) throws java.io.IOException;
-  }
-
-  public abstract class AsynchronousSocketChannel implements java.nio.channels.AsynchronousByteChannel java.nio.channels.NetworkChannel {
-    ctor protected AsynchronousSocketChannel(java.nio.channels.spi.AsynchronousChannelProvider);
-    method public abstract java.nio.channels.AsynchronousSocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
-    method public abstract <A> void connect(java.net.SocketAddress, A, java.nio.channels.CompletionHandler<java.lang.Void,? super A>);
-    method public abstract java.util.concurrent.Future<java.lang.Void> connect(java.net.SocketAddress);
-    method public abstract java.net.SocketAddress getRemoteAddress() throws java.io.IOException;
-    method public static java.nio.channels.AsynchronousSocketChannel open(java.nio.channels.AsynchronousChannelGroup) throws java.io.IOException;
-    method public static java.nio.channels.AsynchronousSocketChannel open() throws java.io.IOException;
-    method public final java.nio.channels.spi.AsynchronousChannelProvider provider();
-    method public abstract <A> void read(java.nio.ByteBuffer, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
-    method public final <A> void read(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
-    method public abstract <A> void read(java.nio.ByteBuffer[], int, int, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Long,? super A>);
-    method public abstract <T> java.nio.channels.AsynchronousSocketChannel setOption(java.net.SocketOption<T>, T) throws java.io.IOException;
-    method public abstract java.nio.channels.AsynchronousSocketChannel shutdownInput() throws java.io.IOException;
-    method public abstract java.nio.channels.AsynchronousSocketChannel shutdownOutput() throws java.io.IOException;
-    method public abstract <A> void write(java.nio.ByteBuffer, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
-    method public final <A> void write(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer,? super A>);
-    method public abstract <A> void write(java.nio.ByteBuffer[], int, int, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Long,? super A>);
-  }
-
-  public interface ByteChannel extends java.nio.channels.ReadableByteChannel java.nio.channels.WritableByteChannel {
-  }
-
-  public class CancelledKeyException extends java.lang.IllegalStateException {
-    ctor public CancelledKeyException();
-  }
-
-  public interface Channel extends java.io.Closeable {
-    method public boolean isOpen();
-  }
-
-  public final class Channels {
-    method public static java.nio.channels.ReadableByteChannel newChannel(java.io.InputStream);
-    method public static java.nio.channels.WritableByteChannel newChannel(java.io.OutputStream);
-    method public static java.io.InputStream newInputStream(java.nio.channels.ReadableByteChannel);
-    method public static java.io.InputStream newInputStream(java.nio.channels.AsynchronousByteChannel);
-    method public static java.io.OutputStream newOutputStream(java.nio.channels.WritableByteChannel);
-    method public static java.io.OutputStream newOutputStream(java.nio.channels.AsynchronousByteChannel);
-    method public static java.io.Reader newReader(java.nio.channels.ReadableByteChannel, java.nio.charset.CharsetDecoder, int);
-    method public static java.io.Reader newReader(java.nio.channels.ReadableByteChannel, String);
-    method public static java.io.Writer newWriter(java.nio.channels.WritableByteChannel, java.nio.charset.CharsetEncoder, int);
-    method public static java.io.Writer newWriter(java.nio.channels.WritableByteChannel, String);
-  }
-
-  public class ClosedByInterruptException extends java.nio.channels.AsynchronousCloseException {
-    ctor public ClosedByInterruptException();
-  }
-
-  public class ClosedChannelException extends java.io.IOException {
-    ctor public ClosedChannelException();
-  }
-
-  public class ClosedSelectorException extends java.lang.IllegalStateException {
-    ctor public ClosedSelectorException();
-  }
-
-  public interface CompletionHandler<V, A> {
-    method public void completed(V, A);
-    method public void failed(Throwable, A);
-  }
-
-  public class ConnectionPendingException extends java.lang.IllegalStateException {
-    ctor public ConnectionPendingException();
-  }
-
-  public abstract class DatagramChannel extends java.nio.channels.spi.AbstractSelectableChannel implements java.nio.channels.ByteChannel java.nio.channels.GatheringByteChannel java.nio.channels.MulticastChannel java.nio.channels.ScatteringByteChannel {
-    ctor protected DatagramChannel(java.nio.channels.spi.SelectorProvider);
-    method public abstract java.nio.channels.DatagramChannel bind(java.net.SocketAddress) throws java.io.IOException;
-    method public abstract java.nio.channels.DatagramChannel connect(java.net.SocketAddress) throws java.io.IOException;
-    method public abstract java.nio.channels.DatagramChannel disconnect() throws java.io.IOException;
-    method public abstract java.net.SocketAddress getRemoteAddress() throws java.io.IOException;
-    method public abstract boolean isConnected();
-    method public static java.nio.channels.DatagramChannel open() throws java.io.IOException;
-    method public static java.nio.channels.DatagramChannel open(java.net.ProtocolFamily) throws java.io.IOException;
-    method public final long read(java.nio.ByteBuffer[]) throws java.io.IOException;
-    method public abstract java.net.SocketAddress receive(java.nio.ByteBuffer) throws java.io.IOException;
-    method public abstract int send(java.nio.ByteBuffer, java.net.SocketAddress) throws java.io.IOException;
-    method public abstract <T> java.nio.channels.DatagramChannel setOption(java.net.SocketOption<T>, T) throws java.io.IOException;
-    method public abstract java.net.DatagramSocket socket();
-    method public final int validOps();
-    method public final long write(java.nio.ByteBuffer[]) throws java.io.IOException;
-  }
-
-  public abstract class FileChannel extends java.nio.channels.spi.AbstractInterruptibleChannel implements java.nio.channels.GatheringByteChannel java.nio.channels.ScatteringByteChannel java.nio.channels.SeekableByteChannel {
-    ctor protected FileChannel();
-    method public abstract void force(boolean) throws java.io.IOException;
-    method public abstract java.nio.channels.FileLock lock(long, long, boolean) throws java.io.IOException;
-    method public final java.nio.channels.FileLock lock() throws java.io.IOException;
-    method public abstract java.nio.MappedByteBuffer map(java.nio.channels.FileChannel.MapMode, long, long) throws java.io.IOException;
-    method public static java.nio.channels.FileChannel open(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public static java.nio.channels.FileChannel open(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
-    method public abstract java.nio.channels.FileChannel position(long) throws java.io.IOException;
-    method public final long read(java.nio.ByteBuffer[]) throws java.io.IOException;
-    method public abstract int read(java.nio.ByteBuffer, long) throws java.io.IOException;
-    method public abstract long transferFrom(java.nio.channels.ReadableByteChannel, long, long) throws java.io.IOException;
-    method public abstract long transferTo(long, long, java.nio.channels.WritableByteChannel) throws java.io.IOException;
-    method public abstract java.nio.channels.FileChannel truncate(long) throws java.io.IOException;
-    method public abstract java.nio.channels.FileLock tryLock(long, long, boolean) throws java.io.IOException;
-    method public final java.nio.channels.FileLock tryLock() throws java.io.IOException;
-    method public final long write(java.nio.ByteBuffer[]) throws java.io.IOException;
-    method public abstract int write(java.nio.ByteBuffer, long) throws java.io.IOException;
-  }
-
-  public static class FileChannel.MapMode {
-    field public static final java.nio.channels.FileChannel.MapMode PRIVATE;
-    field public static final java.nio.channels.FileChannel.MapMode READ_ONLY;
-    field public static final java.nio.channels.FileChannel.MapMode READ_WRITE;
-  }
-
-  public abstract class FileLock implements java.lang.AutoCloseable {
-    ctor protected FileLock(java.nio.channels.FileChannel, long, long, boolean);
-    ctor protected FileLock(java.nio.channels.AsynchronousFileChannel, long, long, boolean);
-    method public java.nio.channels.Channel acquiredBy();
-    method public final java.nio.channels.FileChannel channel();
-    method public final void close() throws java.io.IOException;
-    method public final boolean isShared();
-    method public abstract boolean isValid();
-    method public final boolean overlaps(long, long);
-    method public final long position();
-    method public abstract void release() throws java.io.IOException;
-    method public final long size();
-    method public final String toString();
-  }
-
-  public class FileLockInterruptionException extends java.io.IOException {
-    ctor public FileLockInterruptionException();
-  }
-
-  public interface GatheringByteChannel extends java.nio.channels.WritableByteChannel {
-    method public long write(java.nio.ByteBuffer[], int, int) throws java.io.IOException;
-    method public long write(java.nio.ByteBuffer[]) throws java.io.IOException;
-  }
-
-  public class IllegalBlockingModeException extends java.lang.IllegalStateException {
-    ctor public IllegalBlockingModeException();
-  }
-
-  public class IllegalChannelGroupException extends java.lang.IllegalArgumentException {
-    ctor public IllegalChannelGroupException();
-  }
-
-  public class IllegalSelectorException extends java.lang.IllegalArgumentException {
-    ctor public IllegalSelectorException();
-  }
-
-  public class InterruptedByTimeoutException extends java.io.IOException {
-    ctor public InterruptedByTimeoutException();
-  }
-
-  public interface InterruptibleChannel extends java.nio.channels.Channel {
-  }
-
-  public abstract class MembershipKey {
-    ctor protected MembershipKey();
-    method public abstract java.nio.channels.MembershipKey block(java.net.InetAddress) throws java.io.IOException;
-    method public abstract java.nio.channels.MulticastChannel channel();
-    method public abstract void drop();
-    method public abstract java.net.InetAddress group();
-    method public abstract boolean isValid();
-    method public abstract java.net.NetworkInterface networkInterface();
-    method public abstract java.net.InetAddress sourceAddress();
-    method public abstract java.nio.channels.MembershipKey unblock(java.net.InetAddress);
-  }
-
-  public interface MulticastChannel extends java.nio.channels.NetworkChannel {
-    method public java.nio.channels.MembershipKey join(java.net.InetAddress, java.net.NetworkInterface) throws java.io.IOException;
-    method public java.nio.channels.MembershipKey join(java.net.InetAddress, java.net.NetworkInterface, java.net.InetAddress) throws java.io.IOException;
-  }
-
-  public interface NetworkChannel extends java.nio.channels.Channel {
-    method public java.nio.channels.NetworkChannel bind(java.net.SocketAddress) throws java.io.IOException;
-    method public java.net.SocketAddress getLocalAddress() throws java.io.IOException;
-    method public <T> T getOption(java.net.SocketOption<T>) throws java.io.IOException;
-    method public <T> java.nio.channels.NetworkChannel setOption(java.net.SocketOption<T>, T) throws java.io.IOException;
-    method public java.util.Set<java.net.SocketOption<?>> supportedOptions();
-  }
-
-  public class NoConnectionPendingException extends java.lang.IllegalStateException {
-    ctor public NoConnectionPendingException();
-  }
-
-  public class NonReadableChannelException extends java.lang.IllegalStateException {
-    ctor public NonReadableChannelException();
-  }
-
-  public class NonWritableChannelException extends java.lang.IllegalStateException {
-    ctor public NonWritableChannelException();
-  }
-
-  public class NotYetBoundException extends java.lang.IllegalStateException {
-    ctor public NotYetBoundException();
-  }
-
-  public class NotYetConnectedException extends java.lang.IllegalStateException {
-    ctor public NotYetConnectedException();
-  }
-
-  public class OverlappingFileLockException extends java.lang.IllegalStateException {
-    ctor public OverlappingFileLockException();
-  }
-
-  public abstract class Pipe {
-    ctor protected Pipe();
-    method public static java.nio.channels.Pipe open() throws java.io.IOException;
-    method public abstract java.nio.channels.Pipe.SinkChannel sink();
-    method public abstract java.nio.channels.Pipe.SourceChannel source();
-  }
-
-  public abstract static class Pipe.SinkChannel extends java.nio.channels.spi.AbstractSelectableChannel implements java.nio.channels.GatheringByteChannel java.nio.channels.WritableByteChannel {
-    ctor protected Pipe.SinkChannel(java.nio.channels.spi.SelectorProvider);
-    method public final int validOps();
-  }
-
-  public abstract static class Pipe.SourceChannel extends java.nio.channels.spi.AbstractSelectableChannel implements java.nio.channels.ReadableByteChannel java.nio.channels.ScatteringByteChannel {
-    ctor protected Pipe.SourceChannel(java.nio.channels.spi.SelectorProvider);
-    method public final int validOps();
-  }
-
-  public class ReadPendingException extends java.lang.IllegalStateException {
-    ctor public ReadPendingException();
-  }
-
-  public interface ReadableByteChannel extends java.nio.channels.Channel {
-    method public int read(java.nio.ByteBuffer) throws java.io.IOException;
-  }
-
-  public interface ScatteringByteChannel extends java.nio.channels.ReadableByteChannel {
-    method public long read(java.nio.ByteBuffer[], int, int) throws java.io.IOException;
-    method public long read(java.nio.ByteBuffer[]) throws java.io.IOException;
-  }
-
-  public interface SeekableByteChannel extends java.nio.channels.ByteChannel {
-    method public long position() throws java.io.IOException;
-    method public java.nio.channels.SeekableByteChannel position(long) throws java.io.IOException;
-    method public long size() throws java.io.IOException;
-    method public java.nio.channels.SeekableByteChannel truncate(long) throws java.io.IOException;
-  }
-
-  public abstract class SelectableChannel extends java.nio.channels.spi.AbstractInterruptibleChannel implements java.nio.channels.Channel {
-    ctor protected SelectableChannel();
-    method public abstract Object blockingLock();
-    method public abstract java.nio.channels.SelectableChannel configureBlocking(boolean) throws java.io.IOException;
-    method public abstract boolean isBlocking();
-    method public abstract boolean isRegistered();
-    method public abstract java.nio.channels.SelectionKey keyFor(java.nio.channels.Selector);
-    method public abstract java.nio.channels.spi.SelectorProvider provider();
-    method public abstract java.nio.channels.SelectionKey register(java.nio.channels.Selector, int, Object) throws java.nio.channels.ClosedChannelException;
-    method public final java.nio.channels.SelectionKey register(java.nio.channels.Selector, int) throws java.nio.channels.ClosedChannelException;
-    method public abstract int validOps();
-  }
-
-  public abstract class SelectionKey {
-    ctor protected SelectionKey();
-    method public final Object attach(Object);
-    method public final Object attachment();
-    method public abstract void cancel();
-    method public abstract java.nio.channels.SelectableChannel channel();
-    method public abstract int interestOps();
-    method public abstract java.nio.channels.SelectionKey interestOps(int);
-    method public final boolean isAcceptable();
-    method public final boolean isConnectable();
-    method public final boolean isReadable();
-    method public abstract boolean isValid();
-    method public final boolean isWritable();
-    method public abstract int readyOps();
-    method public abstract java.nio.channels.Selector selector();
-    field public static final int OP_ACCEPT = 16; // 0x10
-    field public static final int OP_CONNECT = 8; // 0x8
-    field public static final int OP_READ = 1; // 0x1
-    field public static final int OP_WRITE = 4; // 0x4
-  }
-
-  public abstract class Selector implements java.io.Closeable {
-    ctor protected Selector();
-    method public abstract boolean isOpen();
-    method public abstract java.util.Set<java.nio.channels.SelectionKey> keys();
-    method public static java.nio.channels.Selector open() throws java.io.IOException;
-    method public abstract java.nio.channels.spi.SelectorProvider provider();
-    method public abstract int select(long) throws java.io.IOException;
-    method public abstract int select() throws java.io.IOException;
-    method public abstract int selectNow() throws java.io.IOException;
-    method public abstract java.util.Set<java.nio.channels.SelectionKey> selectedKeys();
-    method public abstract java.nio.channels.Selector wakeup();
-  }
-
-  public abstract class ServerSocketChannel extends java.nio.channels.spi.AbstractSelectableChannel implements java.nio.channels.NetworkChannel {
-    ctor protected ServerSocketChannel(java.nio.channels.spi.SelectorProvider);
-    method public abstract java.nio.channels.SocketChannel accept() throws java.io.IOException;
-    method public final java.nio.channels.ServerSocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
-    method public abstract java.nio.channels.ServerSocketChannel bind(java.net.SocketAddress, int) throws java.io.IOException;
-    method public static java.nio.channels.ServerSocketChannel open() throws java.io.IOException;
-    method public abstract <T> java.nio.channels.ServerSocketChannel setOption(java.net.SocketOption<T>, T) throws java.io.IOException;
-    method public abstract java.net.ServerSocket socket();
-    method public final int validOps();
-  }
-
-  public class ShutdownChannelGroupException extends java.lang.IllegalStateException {
-    ctor public ShutdownChannelGroupException();
-  }
-
-  public abstract class SocketChannel extends java.nio.channels.spi.AbstractSelectableChannel implements java.nio.channels.ByteChannel java.nio.channels.GatheringByteChannel java.nio.channels.NetworkChannel java.nio.channels.ScatteringByteChannel {
-    ctor protected SocketChannel(java.nio.channels.spi.SelectorProvider);
-    method public abstract java.nio.channels.SocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
-    method public abstract boolean connect(java.net.SocketAddress) throws java.io.IOException;
-    method public abstract boolean finishConnect() throws java.io.IOException;
-    method public abstract java.net.SocketAddress getRemoteAddress() throws java.io.IOException;
-    method public abstract boolean isConnected();
-    method public abstract boolean isConnectionPending();
-    method public static java.nio.channels.SocketChannel open() throws java.io.IOException;
-    method public static java.nio.channels.SocketChannel open(java.net.SocketAddress) throws java.io.IOException;
-    method public final long read(java.nio.ByteBuffer[]) throws java.io.IOException;
-    method public abstract <T> java.nio.channels.SocketChannel setOption(java.net.SocketOption<T>, T) throws java.io.IOException;
-    method public abstract java.nio.channels.SocketChannel shutdownInput() throws java.io.IOException;
-    method public abstract java.nio.channels.SocketChannel shutdownOutput() throws java.io.IOException;
-    method public abstract java.net.Socket socket();
-    method public final int validOps();
-    method public final long write(java.nio.ByteBuffer[]) throws java.io.IOException;
-  }
-
-  public class UnresolvedAddressException extends java.lang.IllegalArgumentException {
-    ctor public UnresolvedAddressException();
-  }
-
-  public class UnsupportedAddressTypeException extends java.lang.IllegalArgumentException {
-    ctor public UnsupportedAddressTypeException();
-  }
-
-  public interface WritableByteChannel extends java.nio.channels.Channel {
-    method public int write(java.nio.ByteBuffer) throws java.io.IOException;
-  }
-
-  public class WritePendingException extends java.lang.IllegalStateException {
-    ctor public WritePendingException();
-  }
-
-}
-
-package java.nio.channels.spi {
-
-  public abstract class AbstractInterruptibleChannel implements java.nio.channels.Channel java.nio.channels.InterruptibleChannel {
-    ctor protected AbstractInterruptibleChannel();
-    method protected final void begin();
-    method public final void close() throws java.io.IOException;
-    method protected final void end(boolean) throws java.nio.channels.AsynchronousCloseException;
-    method protected abstract void implCloseChannel() throws java.io.IOException;
-    method public final boolean isOpen();
-  }
-
-  public abstract class AbstractSelectableChannel extends java.nio.channels.SelectableChannel {
-    ctor protected AbstractSelectableChannel(java.nio.channels.spi.SelectorProvider);
-    method public final Object blockingLock();
-    method public final java.nio.channels.SelectableChannel configureBlocking(boolean) throws java.io.IOException;
-    method protected final void implCloseChannel() throws java.io.IOException;
-    method protected abstract void implCloseSelectableChannel() throws java.io.IOException;
-    method protected abstract void implConfigureBlocking(boolean) throws java.io.IOException;
-    method public final boolean isBlocking();
-    method public final boolean isRegistered();
-    method public final java.nio.channels.SelectionKey keyFor(java.nio.channels.Selector);
-    method public final java.nio.channels.spi.SelectorProvider provider();
-    method public final java.nio.channels.SelectionKey register(java.nio.channels.Selector, int, Object) throws java.nio.channels.ClosedChannelException;
-  }
-
-  public abstract class AbstractSelectionKey extends java.nio.channels.SelectionKey {
-    ctor protected AbstractSelectionKey();
-    method public final void cancel();
-    method public final boolean isValid();
-  }
-
-  public abstract class AbstractSelector extends java.nio.channels.Selector {
-    ctor protected AbstractSelector(java.nio.channels.spi.SelectorProvider);
-    method protected final void begin();
-    method protected final java.util.Set<java.nio.channels.SelectionKey> cancelledKeys();
-    method public final void close() throws java.io.IOException;
-    method protected final void deregister(java.nio.channels.spi.AbstractSelectionKey);
-    method protected final void end();
-    method protected abstract void implCloseSelector() throws java.io.IOException;
-    method public final boolean isOpen();
-    method public final java.nio.channels.spi.SelectorProvider provider();
-    method protected abstract java.nio.channels.SelectionKey register(java.nio.channels.spi.AbstractSelectableChannel, int, Object);
-  }
-
-  public abstract class AsynchronousChannelProvider {
-    ctor protected AsynchronousChannelProvider();
-    method public abstract java.nio.channels.AsynchronousChannelGroup openAsynchronousChannelGroup(int, java.util.concurrent.ThreadFactory) throws java.io.IOException;
-    method public abstract java.nio.channels.AsynchronousChannelGroup openAsynchronousChannelGroup(java.util.concurrent.ExecutorService, int) throws java.io.IOException;
-    method public abstract java.nio.channels.AsynchronousServerSocketChannel openAsynchronousServerSocketChannel(java.nio.channels.AsynchronousChannelGroup) throws java.io.IOException;
-    method public abstract java.nio.channels.AsynchronousSocketChannel openAsynchronousSocketChannel(java.nio.channels.AsynchronousChannelGroup) throws java.io.IOException;
-    method public static java.nio.channels.spi.AsynchronousChannelProvider provider();
-  }
-
-  public abstract class SelectorProvider {
-    ctor protected SelectorProvider();
-    method public java.nio.channels.Channel inheritedChannel() throws java.io.IOException;
-    method public abstract java.nio.channels.DatagramChannel openDatagramChannel() throws java.io.IOException;
-    method public abstract java.nio.channels.DatagramChannel openDatagramChannel(java.net.ProtocolFamily) throws java.io.IOException;
-    method public abstract java.nio.channels.Pipe openPipe() throws java.io.IOException;
-    method public abstract java.nio.channels.spi.AbstractSelector openSelector() throws java.io.IOException;
-    method public abstract java.nio.channels.ServerSocketChannel openServerSocketChannel() throws java.io.IOException;
-    method public abstract java.nio.channels.SocketChannel openSocketChannel() throws java.io.IOException;
-    method public static java.nio.channels.spi.SelectorProvider provider();
-  }
-
-}
-
-package java.nio.charset {
-
-  public class CharacterCodingException extends java.io.IOException {
-    ctor public CharacterCodingException();
-  }
-
-  public abstract class Charset implements java.lang.Comparable<java.nio.charset.Charset> {
-    ctor protected Charset(String, String[]);
-    method public final java.util.Set<java.lang.String> aliases();
-    method public static java.util.SortedMap<java.lang.String,java.nio.charset.Charset> availableCharsets();
-    method public boolean canEncode();
-    method public final int compareTo(java.nio.charset.Charset);
-    method public abstract boolean contains(java.nio.charset.Charset);
-    method public final java.nio.CharBuffer decode(java.nio.ByteBuffer);
-    method public static java.nio.charset.Charset defaultCharset();
-    method public String displayName();
-    method public String displayName(java.util.Locale);
-    method public final java.nio.ByteBuffer encode(java.nio.CharBuffer);
-    method public final java.nio.ByteBuffer encode(String);
-    method public final boolean equals(Object);
-    method public static java.nio.charset.Charset forName(String);
-    method public final int hashCode();
-    method public final boolean isRegistered();
-    method public static boolean isSupported(String);
-    method public final String name();
-    method public abstract java.nio.charset.CharsetDecoder newDecoder();
-    method public abstract java.nio.charset.CharsetEncoder newEncoder();
-    method public final String toString();
-  }
-
-  public abstract class CharsetDecoder {
-    ctor protected CharsetDecoder(java.nio.charset.Charset, float, float);
-    method public final float averageCharsPerByte();
-    method public final java.nio.charset.Charset charset();
-    method public final java.nio.charset.CoderResult decode(java.nio.ByteBuffer, java.nio.CharBuffer, boolean);
-    method public final java.nio.CharBuffer decode(java.nio.ByteBuffer) throws java.nio.charset.CharacterCodingException;
-    method protected abstract java.nio.charset.CoderResult decodeLoop(java.nio.ByteBuffer, java.nio.CharBuffer);
-    method public java.nio.charset.Charset detectedCharset();
-    method public final java.nio.charset.CoderResult flush(java.nio.CharBuffer);
-    method protected java.nio.charset.CoderResult implFlush(java.nio.CharBuffer);
-    method protected void implOnMalformedInput(java.nio.charset.CodingErrorAction);
-    method protected void implOnUnmappableCharacter(java.nio.charset.CodingErrorAction);
-    method protected void implReplaceWith(String);
-    method protected void implReset();
-    method public boolean isAutoDetecting();
-    method public boolean isCharsetDetected();
-    method public java.nio.charset.CodingErrorAction malformedInputAction();
-    method public final float maxCharsPerByte();
-    method public final java.nio.charset.CharsetDecoder onMalformedInput(java.nio.charset.CodingErrorAction);
-    method public final java.nio.charset.CharsetDecoder onUnmappableCharacter(java.nio.charset.CodingErrorAction);
-    method public final java.nio.charset.CharsetDecoder replaceWith(String);
-    method public final String replacement();
-    method public final java.nio.charset.CharsetDecoder reset();
-    method public java.nio.charset.CodingErrorAction unmappableCharacterAction();
-  }
-
-  public abstract class CharsetEncoder {
-    ctor protected CharsetEncoder(java.nio.charset.Charset, float, float, byte[]);
-    ctor protected CharsetEncoder(java.nio.charset.Charset, float, float);
-    method public final float averageBytesPerChar();
-    method public boolean canEncode(char);
-    method public boolean canEncode(CharSequence);
-    method public final java.nio.charset.Charset charset();
-    method public final java.nio.charset.CoderResult encode(java.nio.CharBuffer, java.nio.ByteBuffer, boolean);
-    method public final java.nio.ByteBuffer encode(java.nio.CharBuffer) throws java.nio.charset.CharacterCodingException;
-    method protected abstract java.nio.charset.CoderResult encodeLoop(java.nio.CharBuffer, java.nio.ByteBuffer);
-    method public final java.nio.charset.CoderResult flush(java.nio.ByteBuffer);
-    method protected java.nio.charset.CoderResult implFlush(java.nio.ByteBuffer);
-    method protected void implOnMalformedInput(java.nio.charset.CodingErrorAction);
-    method protected void implOnUnmappableCharacter(java.nio.charset.CodingErrorAction);
-    method protected void implReplaceWith(byte[]);
-    method protected void implReset();
-    method public boolean isLegalReplacement(byte[]);
-    method public java.nio.charset.CodingErrorAction malformedInputAction();
-    method public final float maxBytesPerChar();
-    method public final java.nio.charset.CharsetEncoder onMalformedInput(java.nio.charset.CodingErrorAction);
-    method public final java.nio.charset.CharsetEncoder onUnmappableCharacter(java.nio.charset.CodingErrorAction);
-    method public final java.nio.charset.CharsetEncoder replaceWith(byte[]);
-    method public final byte[] replacement();
-    method public final java.nio.charset.CharsetEncoder reset();
-    method public java.nio.charset.CodingErrorAction unmappableCharacterAction();
-  }
-
-  public class CoderMalfunctionError extends java.lang.Error {
-    ctor public CoderMalfunctionError(Exception);
-  }
-
-  public class CoderResult {
-    method public boolean isError();
-    method public boolean isMalformed();
-    method public boolean isOverflow();
-    method public boolean isUnderflow();
-    method public boolean isUnmappable();
-    method public int length();
-    method public static java.nio.charset.CoderResult malformedForLength(int);
-    method public void throwException() throws java.nio.charset.CharacterCodingException;
-    method public static java.nio.charset.CoderResult unmappableForLength(int);
-    field public static final java.nio.charset.CoderResult OVERFLOW;
-    field public static final java.nio.charset.CoderResult UNDERFLOW;
-  }
-
-  public class CodingErrorAction {
-    field public static final java.nio.charset.CodingErrorAction IGNORE;
-    field public static final java.nio.charset.CodingErrorAction REPLACE;
-    field public static final java.nio.charset.CodingErrorAction REPORT;
-  }
-
-  public class IllegalCharsetNameException extends java.lang.IllegalArgumentException {
-    ctor public IllegalCharsetNameException(String);
-    method public String getCharsetName();
-  }
-
-  public class MalformedInputException extends java.nio.charset.CharacterCodingException {
-    ctor public MalformedInputException(int);
-    method public int getInputLength();
-  }
-
-  public final class StandardCharsets {
-    field public static final java.nio.charset.Charset ISO_8859_1;
-    field public static final java.nio.charset.Charset US_ASCII;
-    field public static final java.nio.charset.Charset UTF_16;
-    field public static final java.nio.charset.Charset UTF_16BE;
-    field public static final java.nio.charset.Charset UTF_16LE;
-    field public static final java.nio.charset.Charset UTF_8;
-  }
-
-  public class UnmappableCharacterException extends java.nio.charset.CharacterCodingException {
-    ctor public UnmappableCharacterException(int);
-    method public int getInputLength();
-  }
-
-  public class UnsupportedCharsetException extends java.lang.IllegalArgumentException {
-    ctor public UnsupportedCharsetException(String);
-    method public String getCharsetName();
-  }
-
-}
-
-package java.nio.charset.spi {
-
-  public abstract class CharsetProvider {
-    ctor protected CharsetProvider();
-    method public abstract java.nio.charset.Charset charsetForName(String);
-    method public abstract java.util.Iterator<java.nio.charset.Charset> charsets();
-  }
-
-}
-
-package java.nio.file {
-
-  public class AccessDeniedException extends java.nio.file.FileSystemException {
-    ctor public AccessDeniedException(String);
-    ctor public AccessDeniedException(String, String, String);
-  }
-
-  public enum AccessMode {
-    enum_constant public static final java.nio.file.AccessMode EXECUTE;
-    enum_constant public static final java.nio.file.AccessMode READ;
-    enum_constant public static final java.nio.file.AccessMode WRITE;
-  }
-
-  public class AtomicMoveNotSupportedException extends java.nio.file.FileSystemException {
-    ctor public AtomicMoveNotSupportedException(String, String, String);
-  }
-
-  public class ClosedDirectoryStreamException extends java.lang.IllegalStateException {
-    ctor public ClosedDirectoryStreamException();
-  }
-
-  public class ClosedFileSystemException extends java.lang.IllegalStateException {
-    ctor public ClosedFileSystemException();
-  }
-
-  public class ClosedWatchServiceException extends java.lang.IllegalStateException {
-    ctor public ClosedWatchServiceException();
-  }
-
-  public interface CopyOption {
-  }
-
-  public final class DirectoryIteratorException extends java.util.ConcurrentModificationException {
-    ctor public DirectoryIteratorException(java.io.IOException);
-    method public java.io.IOException getCause();
-  }
-
-  public class DirectoryNotEmptyException extends java.nio.file.FileSystemException {
-    ctor public DirectoryNotEmptyException(String);
-  }
-
-  public interface DirectoryStream<T> extends java.io.Closeable java.lang.Iterable<T> {
-  }
-
-  @java.lang.FunctionalInterface public static interface DirectoryStream.Filter<T> {
-    method public boolean accept(T) throws java.io.IOException;
-  }
-
-  public class FileAlreadyExistsException extends java.nio.file.FileSystemException {
-    ctor public FileAlreadyExistsException(String);
-    ctor public FileAlreadyExistsException(String, String, String);
-  }
-
-  public abstract class FileStore {
-    ctor protected FileStore();
-    method public abstract Object getAttribute(String) throws java.io.IOException;
-    method public abstract <V extends java.nio.file.attribute.FileStoreAttributeView> V getFileStoreAttributeView(Class<V>);
-    method public abstract long getTotalSpace() throws java.io.IOException;
-    method public abstract long getUnallocatedSpace() throws java.io.IOException;
-    method public abstract long getUsableSpace() throws java.io.IOException;
-    method public abstract boolean isReadOnly();
-    method public abstract String name();
-    method public abstract boolean supportsFileAttributeView(Class<? extends java.nio.file.attribute.FileAttributeView>);
-    method public abstract boolean supportsFileAttributeView(String);
-    method public abstract String type();
-  }
-
-  public abstract class FileSystem implements java.io.Closeable {
-    ctor protected FileSystem();
-    method public abstract Iterable<java.nio.file.FileStore> getFileStores();
-    method public abstract java.nio.file.Path getPath(String, java.lang.String...);
-    method public abstract java.nio.file.PathMatcher getPathMatcher(String);
-    method public abstract Iterable<java.nio.file.Path> getRootDirectories();
-    method public abstract String getSeparator();
-    method public abstract java.nio.file.attribute.UserPrincipalLookupService getUserPrincipalLookupService();
-    method public abstract boolean isOpen();
-    method public abstract boolean isReadOnly();
-    method public abstract java.nio.file.WatchService newWatchService() throws java.io.IOException;
-    method public abstract java.nio.file.spi.FileSystemProvider provider();
-    method public abstract java.util.Set<java.lang.String> supportedFileAttributeViews();
-  }
-
-  public class FileSystemAlreadyExistsException extends java.lang.RuntimeException {
-    ctor public FileSystemAlreadyExistsException();
-    ctor public FileSystemAlreadyExistsException(String);
-  }
-
-  public class FileSystemException extends java.io.IOException {
-    ctor public FileSystemException(String);
-    ctor public FileSystemException(String, String, String);
-    method public String getFile();
-    method public String getOtherFile();
-    method public String getReason();
-  }
-
-  public class FileSystemLoopException extends java.nio.file.FileSystemException {
-    ctor public FileSystemLoopException(String);
-  }
-
-  public class FileSystemNotFoundException extends java.lang.RuntimeException {
-    ctor public FileSystemNotFoundException();
-    ctor public FileSystemNotFoundException(String);
-  }
-
-  public final class FileSystems {
-    method public static java.nio.file.FileSystem getDefault();
-    method public static java.nio.file.FileSystem getFileSystem(java.net.URI);
-    method public static java.nio.file.FileSystem newFileSystem(java.net.URI, java.util.Map<java.lang.String,?>) throws java.io.IOException;
-    method public static java.nio.file.FileSystem newFileSystem(java.net.URI, java.util.Map<java.lang.String,?>, ClassLoader) throws java.io.IOException;
-    method public static java.nio.file.FileSystem newFileSystem(java.nio.file.Path, ClassLoader) throws java.io.IOException;
-  }
-
-  public enum FileVisitOption {
-    enum_constant public static final java.nio.file.FileVisitOption FOLLOW_LINKS;
-  }
-
-  public enum FileVisitResult {
-    enum_constant public static final java.nio.file.FileVisitResult CONTINUE;
-    enum_constant public static final java.nio.file.FileVisitResult SKIP_SIBLINGS;
-    enum_constant public static final java.nio.file.FileVisitResult SKIP_SUBTREE;
-    enum_constant public static final java.nio.file.FileVisitResult TERMINATE;
-  }
-
-  public interface FileVisitor<T> {
-    method public java.nio.file.FileVisitResult postVisitDirectory(T, java.io.IOException) throws java.io.IOException;
-    method public java.nio.file.FileVisitResult preVisitDirectory(T, java.nio.file.attribute.BasicFileAttributes) throws java.io.IOException;
-    method public java.nio.file.FileVisitResult visitFile(T, java.nio.file.attribute.BasicFileAttributes) throws java.io.IOException;
-    method public java.nio.file.FileVisitResult visitFileFailed(T, java.io.IOException) throws java.io.IOException;
-  }
-
-  public final class Files {
-    method public static java.nio.file.Path copy(java.nio.file.Path, java.nio.file.Path, java.nio.file.CopyOption...) throws java.io.IOException;
-    method public static long copy(java.io.InputStream, java.nio.file.Path, java.nio.file.CopyOption...) throws java.io.IOException;
-    method public static long copy(java.nio.file.Path, java.io.OutputStream) throws java.io.IOException;
-    method public static java.nio.file.Path createDirectories(java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public static java.nio.file.Path createDirectory(java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public static java.nio.file.Path createFile(java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public static java.nio.file.Path createLink(java.nio.file.Path, java.nio.file.Path) throws java.io.IOException;
-    method public static java.nio.file.Path createSymbolicLink(java.nio.file.Path, java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public static java.nio.file.Path createTempDirectory(java.nio.file.Path, String, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public static java.nio.file.Path createTempDirectory(String, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public static java.nio.file.Path createTempFile(java.nio.file.Path, String, String, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public static java.nio.file.Path createTempFile(String, String, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public static void delete(java.nio.file.Path) throws java.io.IOException;
-    method public static boolean deleteIfExists(java.nio.file.Path) throws java.io.IOException;
-    method public static boolean exists(java.nio.file.Path, java.nio.file.LinkOption...);
-    method public static java.util.stream.Stream<java.nio.file.Path> find(java.nio.file.Path, int, java.util.function.BiPredicate<java.nio.file.Path,java.nio.file.attribute.BasicFileAttributes>, java.nio.file.FileVisitOption...) throws java.io.IOException;
-    method public static Object getAttribute(java.nio.file.Path, String, java.nio.file.LinkOption...) throws java.io.IOException;
-    method public static <V extends java.nio.file.attribute.FileAttributeView> V getFileAttributeView(java.nio.file.Path, Class<V>, java.nio.file.LinkOption...);
-    method public static java.nio.file.FileStore getFileStore(java.nio.file.Path) throws java.io.IOException;
-    method public static java.nio.file.attribute.FileTime getLastModifiedTime(java.nio.file.Path, java.nio.file.LinkOption...) throws java.io.IOException;
-    method public static java.nio.file.attribute.UserPrincipal getOwner(java.nio.file.Path, java.nio.file.LinkOption...) throws java.io.IOException;
-    method public static java.util.Set<java.nio.file.attribute.PosixFilePermission> getPosixFilePermissions(java.nio.file.Path, java.nio.file.LinkOption...) throws java.io.IOException;
-    method public static boolean isDirectory(java.nio.file.Path, java.nio.file.LinkOption...);
-    method public static boolean isExecutable(java.nio.file.Path);
-    method public static boolean isHidden(java.nio.file.Path) throws java.io.IOException;
-    method public static boolean isReadable(java.nio.file.Path);
-    method public static boolean isRegularFile(java.nio.file.Path, java.nio.file.LinkOption...);
-    method public static boolean isSameFile(java.nio.file.Path, java.nio.file.Path) throws java.io.IOException;
-    method public static boolean isSymbolicLink(java.nio.file.Path);
-    method public static boolean isWritable(java.nio.file.Path);
-    method public static java.util.stream.Stream<java.lang.String> lines(java.nio.file.Path, java.nio.charset.Charset) throws java.io.IOException;
-    method public static java.util.stream.Stream<java.lang.String> lines(java.nio.file.Path) throws java.io.IOException;
-    method public static java.util.stream.Stream<java.nio.file.Path> list(java.nio.file.Path) throws java.io.IOException;
-    method public static java.nio.file.Path move(java.nio.file.Path, java.nio.file.Path, java.nio.file.CopyOption...) throws java.io.IOException;
-    method public static java.io.BufferedReader newBufferedReader(java.nio.file.Path, java.nio.charset.Charset) throws java.io.IOException;
-    method public static java.io.BufferedReader newBufferedReader(java.nio.file.Path) throws java.io.IOException;
-    method public static java.io.BufferedWriter newBufferedWriter(java.nio.file.Path, java.nio.charset.Charset, java.nio.file.OpenOption...) throws java.io.IOException;
-    method public static java.io.BufferedWriter newBufferedWriter(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
-    method public static java.nio.channels.SeekableByteChannel newByteChannel(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public static java.nio.channels.SeekableByteChannel newByteChannel(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
-    method public static java.nio.file.DirectoryStream<java.nio.file.Path> newDirectoryStream(java.nio.file.Path) throws java.io.IOException;
-    method public static java.nio.file.DirectoryStream<java.nio.file.Path> newDirectoryStream(java.nio.file.Path, String) throws java.io.IOException;
-    method public static java.nio.file.DirectoryStream<java.nio.file.Path> newDirectoryStream(java.nio.file.Path, java.nio.file.DirectoryStream.Filter<? super java.nio.file.Path>) throws java.io.IOException;
-    method public static java.io.InputStream newInputStream(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
-    method public static java.io.OutputStream newOutputStream(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
-    method public static boolean notExists(java.nio.file.Path, java.nio.file.LinkOption...);
-    method public static String probeContentType(java.nio.file.Path) throws java.io.IOException;
-    method public static byte[] readAllBytes(java.nio.file.Path) throws java.io.IOException;
-    method public static java.util.List<java.lang.String> readAllLines(java.nio.file.Path, java.nio.charset.Charset) throws java.io.IOException;
-    method public static java.util.List<java.lang.String> readAllLines(java.nio.file.Path) throws java.io.IOException;
-    method public static <A extends java.nio.file.attribute.BasicFileAttributes> A readAttributes(java.nio.file.Path, Class<A>, java.nio.file.LinkOption...) throws java.io.IOException;
-    method public static java.util.Map<java.lang.String,java.lang.Object> readAttributes(java.nio.file.Path, String, java.nio.file.LinkOption...) throws java.io.IOException;
-    method public static java.nio.file.Path readSymbolicLink(java.nio.file.Path) throws java.io.IOException;
-    method public static java.nio.file.Path setAttribute(java.nio.file.Path, String, Object, java.nio.file.LinkOption...) throws java.io.IOException;
-    method public static java.nio.file.Path setLastModifiedTime(java.nio.file.Path, java.nio.file.attribute.FileTime) throws java.io.IOException;
-    method public static java.nio.file.Path setOwner(java.nio.file.Path, java.nio.file.attribute.UserPrincipal) throws java.io.IOException;
-    method public static java.nio.file.Path setPosixFilePermissions(java.nio.file.Path, java.util.Set<java.nio.file.attribute.PosixFilePermission>) throws java.io.IOException;
-    method public static long size(java.nio.file.Path) throws java.io.IOException;
-    method public static java.util.stream.Stream<java.nio.file.Path> walk(java.nio.file.Path, int, java.nio.file.FileVisitOption...) throws java.io.IOException;
-    method public static java.util.stream.Stream<java.nio.file.Path> walk(java.nio.file.Path, java.nio.file.FileVisitOption...) throws java.io.IOException;
-    method public static java.nio.file.Path walkFileTree(java.nio.file.Path, java.util.Set<java.nio.file.FileVisitOption>, int, java.nio.file.FileVisitor<? super java.nio.file.Path>) throws java.io.IOException;
-    method public static java.nio.file.Path walkFileTree(java.nio.file.Path, java.nio.file.FileVisitor<? super java.nio.file.Path>) throws java.io.IOException;
-    method public static java.nio.file.Path write(java.nio.file.Path, byte[], java.nio.file.OpenOption...) throws java.io.IOException;
-    method public static java.nio.file.Path write(java.nio.file.Path, Iterable<? extends java.lang.CharSequence>, java.nio.charset.Charset, java.nio.file.OpenOption...) throws java.io.IOException;
-    method public static java.nio.file.Path write(java.nio.file.Path, Iterable<? extends java.lang.CharSequence>, java.nio.file.OpenOption...) throws java.io.IOException;
-  }
-
-  public class InvalidPathException extends java.lang.IllegalArgumentException {
-    ctor public InvalidPathException(String, String, int);
-    ctor public InvalidPathException(String, String);
-    method public int getIndex();
-    method public String getInput();
-    method public String getReason();
-  }
-
-  public enum LinkOption implements java.nio.file.CopyOption java.nio.file.OpenOption {
-    enum_constant public static final java.nio.file.LinkOption NOFOLLOW_LINKS;
-  }
-
-  public final class LinkPermission extends java.security.BasicPermission {
-    ctor public LinkPermission(String);
-    ctor public LinkPermission(String, String);
-  }
-
-  public class NoSuchFileException extends java.nio.file.FileSystemException {
-    ctor public NoSuchFileException(String);
-    ctor public NoSuchFileException(String, String, String);
-  }
-
-  public class NotDirectoryException extends java.nio.file.FileSystemException {
-    ctor public NotDirectoryException(String);
-  }
-
-  public class NotLinkException extends java.nio.file.FileSystemException {
-    ctor public NotLinkException(String);
-    ctor public NotLinkException(String, String, String);
-  }
-
-  public interface OpenOption {
-  }
-
-  public interface Path extends java.lang.Comparable<java.nio.file.Path> java.lang.Iterable<java.nio.file.Path> java.nio.file.Watchable {
-    method public int compareTo(java.nio.file.Path);
-    method public boolean endsWith(java.nio.file.Path);
-    method public boolean endsWith(String);
-    method public boolean equals(Object);
-    method public java.nio.file.Path getFileName();
-    method public java.nio.file.FileSystem getFileSystem();
-    method public java.nio.file.Path getName(int);
-    method public int getNameCount();
-    method public java.nio.file.Path getParent();
-    method public java.nio.file.Path getRoot();
-    method public int hashCode();
-    method public boolean isAbsolute();
-    method public java.util.Iterator<java.nio.file.Path> iterator();
-    method public java.nio.file.Path normalize();
-    method public java.nio.file.Path relativize(java.nio.file.Path);
-    method public java.nio.file.Path resolve(java.nio.file.Path);
-    method public java.nio.file.Path resolve(String);
-    method public java.nio.file.Path resolveSibling(java.nio.file.Path);
-    method public java.nio.file.Path resolveSibling(String);
-    method public boolean startsWith(java.nio.file.Path);
-    method public boolean startsWith(String);
-    method public java.nio.file.Path subpath(int, int);
-    method public java.nio.file.Path toAbsolutePath();
-    method public java.io.File toFile();
-    method public java.nio.file.Path toRealPath(java.nio.file.LinkOption...) throws java.io.IOException;
-    method public String toString();
-    method public java.net.URI toUri();
-  }
-
-  @java.lang.FunctionalInterface public interface PathMatcher {
-    method public boolean matches(java.nio.file.Path);
-  }
-
-  public final class Paths {
-    method public static java.nio.file.Path get(String, java.lang.String...);
-    method public static java.nio.file.Path get(java.net.URI);
-  }
-
-  public class ProviderMismatchException extends java.lang.IllegalArgumentException {
-    ctor public ProviderMismatchException();
-    ctor public ProviderMismatchException(String);
-  }
-
-  public class ProviderNotFoundException extends java.lang.RuntimeException {
-    ctor public ProviderNotFoundException();
-    ctor public ProviderNotFoundException(String);
-  }
-
-  public class ReadOnlyFileSystemException extends java.lang.UnsupportedOperationException {
-    ctor public ReadOnlyFileSystemException();
-  }
-
-  public interface SecureDirectoryStream<T> extends java.nio.file.DirectoryStream<T> {
-    method public void deleteDirectory(T) throws java.io.IOException;
-    method public void deleteFile(T) throws java.io.IOException;
-    method public <V extends java.nio.file.attribute.FileAttributeView> V getFileAttributeView(Class<V>);
-    method public <V extends java.nio.file.attribute.FileAttributeView> V getFileAttributeView(T, Class<V>, java.nio.file.LinkOption...);
-    method public void move(T, java.nio.file.SecureDirectoryStream<T>, T) throws java.io.IOException;
-    method public java.nio.channels.SeekableByteChannel newByteChannel(T, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public java.nio.file.SecureDirectoryStream<T> newDirectoryStream(T, java.nio.file.LinkOption...) throws java.io.IOException;
-  }
-
-  public class SimpleFileVisitor<T> implements java.nio.file.FileVisitor<T> {
-    ctor protected SimpleFileVisitor();
-    method public java.nio.file.FileVisitResult postVisitDirectory(T, java.io.IOException) throws java.io.IOException;
-    method public java.nio.file.FileVisitResult preVisitDirectory(T, java.nio.file.attribute.BasicFileAttributes) throws java.io.IOException;
-    method public java.nio.file.FileVisitResult visitFile(T, java.nio.file.attribute.BasicFileAttributes) throws java.io.IOException;
-    method public java.nio.file.FileVisitResult visitFileFailed(T, java.io.IOException) throws java.io.IOException;
-  }
-
-  public enum StandardCopyOption implements java.nio.file.CopyOption {
-    enum_constant public static final java.nio.file.StandardCopyOption ATOMIC_MOVE;
-    enum_constant public static final java.nio.file.StandardCopyOption COPY_ATTRIBUTES;
-    enum_constant public static final java.nio.file.StandardCopyOption REPLACE_EXISTING;
-  }
-
-  public enum StandardOpenOption implements java.nio.file.OpenOption {
-    enum_constant public static final java.nio.file.StandardOpenOption APPEND;
-    enum_constant public static final java.nio.file.StandardOpenOption CREATE;
-    enum_constant public static final java.nio.file.StandardOpenOption CREATE_NEW;
-    enum_constant public static final java.nio.file.StandardOpenOption DELETE_ON_CLOSE;
-    enum_constant public static final java.nio.file.StandardOpenOption DSYNC;
-    enum_constant public static final java.nio.file.StandardOpenOption READ;
-    enum_constant public static final java.nio.file.StandardOpenOption SPARSE;
-    enum_constant public static final java.nio.file.StandardOpenOption SYNC;
-    enum_constant public static final java.nio.file.StandardOpenOption TRUNCATE_EXISTING;
-    enum_constant public static final java.nio.file.StandardOpenOption WRITE;
-  }
-
-  public final class StandardWatchEventKinds {
-    field public static final java.nio.file.WatchEvent.Kind<java.nio.file.Path> ENTRY_CREATE;
-    field public static final java.nio.file.WatchEvent.Kind<java.nio.file.Path> ENTRY_DELETE;
-    field public static final java.nio.file.WatchEvent.Kind<java.nio.file.Path> ENTRY_MODIFY;
-    field public static final java.nio.file.WatchEvent.Kind<java.lang.Object> OVERFLOW;
-  }
-
-  public interface WatchEvent<T> {
-    method public T context();
-    method public int count();
-    method public java.nio.file.WatchEvent.Kind<T> kind();
-  }
-
-  public static interface WatchEvent.Kind<T> {
-    method public String name();
-    method public Class<T> type();
-  }
-
-  public static interface WatchEvent.Modifier {
-    method public String name();
-  }
-
-  public interface WatchKey {
-    method public void cancel();
-    method public boolean isValid();
-    method public java.util.List<java.nio.file.WatchEvent<?>> pollEvents();
-    method public boolean reset();
-    method public java.nio.file.Watchable watchable();
-  }
-
-  public interface WatchService extends java.io.Closeable {
-    method public java.nio.file.WatchKey poll();
-    method public java.nio.file.WatchKey poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public java.nio.file.WatchKey take() throws java.lang.InterruptedException;
-  }
-
-  public interface Watchable {
-    method public java.nio.file.WatchKey register(java.nio.file.WatchService, java.nio.file.WatchEvent.Kind<?>[], java.nio.file.WatchEvent.Modifier...) throws java.io.IOException;
-    method public java.nio.file.WatchKey register(java.nio.file.WatchService, java.nio.file.WatchEvent.Kind<?>...) throws java.io.IOException;
-  }
-
-}
-
-package java.nio.file.attribute {
-
-  public final class AclEntry {
-    method public java.util.Set<java.nio.file.attribute.AclEntryFlag> flags();
-    method public static java.nio.file.attribute.AclEntry.Builder newBuilder();
-    method public static java.nio.file.attribute.AclEntry.Builder newBuilder(java.nio.file.attribute.AclEntry);
-    method public java.util.Set<java.nio.file.attribute.AclEntryPermission> permissions();
-    method public java.nio.file.attribute.UserPrincipal principal();
-    method public java.nio.file.attribute.AclEntryType type();
-  }
-
-  public static final class AclEntry.Builder {
-    method public java.nio.file.attribute.AclEntry build();
-    method public java.nio.file.attribute.AclEntry.Builder setFlags(java.util.Set<java.nio.file.attribute.AclEntryFlag>);
-    method public java.nio.file.attribute.AclEntry.Builder setFlags(java.nio.file.attribute.AclEntryFlag...);
-    method public java.nio.file.attribute.AclEntry.Builder setPermissions(java.util.Set<java.nio.file.attribute.AclEntryPermission>);
-    method public java.nio.file.attribute.AclEntry.Builder setPermissions(java.nio.file.attribute.AclEntryPermission...);
-    method public java.nio.file.attribute.AclEntry.Builder setPrincipal(java.nio.file.attribute.UserPrincipal);
-    method public java.nio.file.attribute.AclEntry.Builder setType(java.nio.file.attribute.AclEntryType);
-  }
-
-  public enum AclEntryFlag {
-    enum_constant public static final java.nio.file.attribute.AclEntryFlag DIRECTORY_INHERIT;
-    enum_constant public static final java.nio.file.attribute.AclEntryFlag FILE_INHERIT;
-    enum_constant public static final java.nio.file.attribute.AclEntryFlag INHERIT_ONLY;
-    enum_constant public static final java.nio.file.attribute.AclEntryFlag NO_PROPAGATE_INHERIT;
-  }
-
-  public enum AclEntryPermission {
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission APPEND_DATA;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission DELETE;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission DELETE_CHILD;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission EXECUTE;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission READ_ACL;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission READ_ATTRIBUTES;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission READ_DATA;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission READ_NAMED_ATTRS;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission SYNCHRONIZE;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission WRITE_ACL;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission WRITE_ATTRIBUTES;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission WRITE_DATA;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission WRITE_NAMED_ATTRS;
-    enum_constant public static final java.nio.file.attribute.AclEntryPermission WRITE_OWNER;
-    field public static final java.nio.file.attribute.AclEntryPermission ADD_FILE;
-    field public static final java.nio.file.attribute.AclEntryPermission ADD_SUBDIRECTORY;
-    field public static final java.nio.file.attribute.AclEntryPermission LIST_DIRECTORY;
-  }
-
-  public enum AclEntryType {
-    enum_constant public static final java.nio.file.attribute.AclEntryType ALARM;
-    enum_constant public static final java.nio.file.attribute.AclEntryType ALLOW;
-    enum_constant public static final java.nio.file.attribute.AclEntryType AUDIT;
-    enum_constant public static final java.nio.file.attribute.AclEntryType DENY;
-  }
-
-  public interface AclFileAttributeView extends java.nio.file.attribute.FileOwnerAttributeView {
-    method public java.util.List<java.nio.file.attribute.AclEntry> getAcl() throws java.io.IOException;
-    method public void setAcl(java.util.List<java.nio.file.attribute.AclEntry>) throws java.io.IOException;
-  }
-
-  public interface AttributeView {
-    method public String name();
-  }
-
-  public interface BasicFileAttributeView extends java.nio.file.attribute.FileAttributeView {
-    method public java.nio.file.attribute.BasicFileAttributes readAttributes() throws java.io.IOException;
-    method public void setTimes(java.nio.file.attribute.FileTime, java.nio.file.attribute.FileTime, java.nio.file.attribute.FileTime) throws java.io.IOException;
-  }
-
-  public interface BasicFileAttributes {
-    method public java.nio.file.attribute.FileTime creationTime();
-    method public Object fileKey();
-    method public boolean isDirectory();
-    method public boolean isOther();
-    method public boolean isRegularFile();
-    method public boolean isSymbolicLink();
-    method public java.nio.file.attribute.FileTime lastAccessTime();
-    method public java.nio.file.attribute.FileTime lastModifiedTime();
-    method public long size();
-  }
-
-  public interface DosFileAttributeView extends java.nio.file.attribute.BasicFileAttributeView {
-    method public java.nio.file.attribute.DosFileAttributes readAttributes() throws java.io.IOException;
-    method public void setArchive(boolean) throws java.io.IOException;
-    method public void setHidden(boolean) throws java.io.IOException;
-    method public void setReadOnly(boolean) throws java.io.IOException;
-    method public void setSystem(boolean) throws java.io.IOException;
-  }
-
-  public interface DosFileAttributes extends java.nio.file.attribute.BasicFileAttributes {
-    method public boolean isArchive();
-    method public boolean isHidden();
-    method public boolean isReadOnly();
-    method public boolean isSystem();
-  }
-
-  public interface FileAttribute<T> {
-    method public String name();
-    method public T value();
-  }
-
-  public interface FileAttributeView extends java.nio.file.attribute.AttributeView {
-  }
-
-  public interface FileOwnerAttributeView extends java.nio.file.attribute.FileAttributeView {
-    method public java.nio.file.attribute.UserPrincipal getOwner() throws java.io.IOException;
-    method public void setOwner(java.nio.file.attribute.UserPrincipal) throws java.io.IOException;
-  }
-
-  public interface FileStoreAttributeView extends java.nio.file.attribute.AttributeView {
-  }
-
-  public final class FileTime implements java.lang.Comparable<java.nio.file.attribute.FileTime> {
-    method public int compareTo(java.nio.file.attribute.FileTime);
-    method public static java.nio.file.attribute.FileTime from(long, java.util.concurrent.TimeUnit);
-    method public static java.nio.file.attribute.FileTime from(java.time.Instant);
-    method public static java.nio.file.attribute.FileTime fromMillis(long);
-    method public long to(java.util.concurrent.TimeUnit);
-    method public java.time.Instant toInstant();
-    method public long toMillis();
-  }
-
-  public interface GroupPrincipal extends java.nio.file.attribute.UserPrincipal {
-  }
-
-  public interface PosixFileAttributeView extends java.nio.file.attribute.BasicFileAttributeView java.nio.file.attribute.FileOwnerAttributeView {
-    method public java.nio.file.attribute.PosixFileAttributes readAttributes() throws java.io.IOException;
-    method public void setGroup(java.nio.file.attribute.GroupPrincipal) throws java.io.IOException;
-    method public void setPermissions(java.util.Set<java.nio.file.attribute.PosixFilePermission>) throws java.io.IOException;
-  }
-
-  public interface PosixFileAttributes extends java.nio.file.attribute.BasicFileAttributes {
-    method public java.nio.file.attribute.GroupPrincipal group();
-    method public java.nio.file.attribute.UserPrincipal owner();
-    method public java.util.Set<java.nio.file.attribute.PosixFilePermission> permissions();
-  }
-
-  public enum PosixFilePermission {
-    enum_constant public static final java.nio.file.attribute.PosixFilePermission GROUP_EXECUTE;
-    enum_constant public static final java.nio.file.attribute.PosixFilePermission GROUP_READ;
-    enum_constant public static final java.nio.file.attribute.PosixFilePermission GROUP_WRITE;
-    enum_constant public static final java.nio.file.attribute.PosixFilePermission OTHERS_EXECUTE;
-    enum_constant public static final java.nio.file.attribute.PosixFilePermission OTHERS_READ;
-    enum_constant public static final java.nio.file.attribute.PosixFilePermission OTHERS_WRITE;
-    enum_constant public static final java.nio.file.attribute.PosixFilePermission OWNER_EXECUTE;
-    enum_constant public static final java.nio.file.attribute.PosixFilePermission OWNER_READ;
-    enum_constant public static final java.nio.file.attribute.PosixFilePermission OWNER_WRITE;
-  }
-
-  public final class PosixFilePermissions {
-    method public static java.nio.file.attribute.FileAttribute<java.util.Set<java.nio.file.attribute.PosixFilePermission>> asFileAttribute(java.util.Set<java.nio.file.attribute.PosixFilePermission>);
-    method public static java.util.Set<java.nio.file.attribute.PosixFilePermission> fromString(String);
-    method public static String toString(java.util.Set<java.nio.file.attribute.PosixFilePermission>);
-  }
-
-  public interface UserDefinedFileAttributeView extends java.nio.file.attribute.FileAttributeView {
-    method public void delete(String) throws java.io.IOException;
-    method public java.util.List<java.lang.String> list() throws java.io.IOException;
-    method public int read(String, java.nio.ByteBuffer) throws java.io.IOException;
-    method public int size(String) throws java.io.IOException;
-    method public int write(String, java.nio.ByteBuffer) throws java.io.IOException;
-  }
-
-  public interface UserPrincipal extends java.security.Principal {
-  }
-
-  public abstract class UserPrincipalLookupService {
-    ctor protected UserPrincipalLookupService();
-    method public abstract java.nio.file.attribute.GroupPrincipal lookupPrincipalByGroupName(String) throws java.io.IOException;
-    method public abstract java.nio.file.attribute.UserPrincipal lookupPrincipalByName(String) throws java.io.IOException;
-  }
-
-  public class UserPrincipalNotFoundException extends java.io.IOException {
-    ctor public UserPrincipalNotFoundException(String);
-    method public String getName();
-  }
-
-}
-
-package java.nio.file.spi {
-
-  public abstract class FileSystemProvider {
-    ctor protected FileSystemProvider();
-    method public abstract void checkAccess(java.nio.file.Path, java.nio.file.AccessMode...) throws java.io.IOException;
-    method public abstract void copy(java.nio.file.Path, java.nio.file.Path, java.nio.file.CopyOption...) throws java.io.IOException;
-    method public abstract void createDirectory(java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public void createLink(java.nio.file.Path, java.nio.file.Path) throws java.io.IOException;
-    method public void createSymbolicLink(java.nio.file.Path, java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public abstract void delete(java.nio.file.Path) throws java.io.IOException;
-    method public boolean deleteIfExists(java.nio.file.Path) throws java.io.IOException;
-    method public abstract <V extends java.nio.file.attribute.FileAttributeView> V getFileAttributeView(java.nio.file.Path, Class<V>, java.nio.file.LinkOption...);
-    method public abstract java.nio.file.FileStore getFileStore(java.nio.file.Path) throws java.io.IOException;
-    method public abstract java.nio.file.FileSystem getFileSystem(java.net.URI);
-    method public abstract java.nio.file.Path getPath(java.net.URI);
-    method public abstract String getScheme();
-    method public static java.util.List<java.nio.file.spi.FileSystemProvider> installedProviders();
-    method public abstract boolean isHidden(java.nio.file.Path) throws java.io.IOException;
-    method public abstract boolean isSameFile(java.nio.file.Path, java.nio.file.Path) throws java.io.IOException;
-    method public abstract void move(java.nio.file.Path, java.nio.file.Path, java.nio.file.CopyOption...) throws java.io.IOException;
-    method public java.nio.channels.AsynchronousFileChannel newAsynchronousFileChannel(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.util.concurrent.ExecutorService, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public abstract java.nio.channels.SeekableByteChannel newByteChannel(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public abstract java.nio.file.DirectoryStream<java.nio.file.Path> newDirectoryStream(java.nio.file.Path, java.nio.file.DirectoryStream.Filter<? super java.nio.file.Path>) throws java.io.IOException;
-    method public java.nio.channels.FileChannel newFileChannel(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...) throws java.io.IOException;
-    method public abstract java.nio.file.FileSystem newFileSystem(java.net.URI, java.util.Map<java.lang.String,?>) throws java.io.IOException;
-    method public java.nio.file.FileSystem newFileSystem(java.nio.file.Path, java.util.Map<java.lang.String,?>) throws java.io.IOException;
-    method public java.io.InputStream newInputStream(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
-    method public java.io.OutputStream newOutputStream(java.nio.file.Path, java.nio.file.OpenOption...) throws java.io.IOException;
-    method public abstract <A extends java.nio.file.attribute.BasicFileAttributes> A readAttributes(java.nio.file.Path, Class<A>, java.nio.file.LinkOption...) throws java.io.IOException;
-    method public abstract java.util.Map<java.lang.String,java.lang.Object> readAttributes(java.nio.file.Path, String, java.nio.file.LinkOption...) throws java.io.IOException;
-    method public java.nio.file.Path readSymbolicLink(java.nio.file.Path) throws java.io.IOException;
-    method public abstract void setAttribute(java.nio.file.Path, String, Object, java.nio.file.LinkOption...) throws java.io.IOException;
-  }
-
-  public abstract class FileTypeDetector {
-    ctor protected FileTypeDetector();
-    method public abstract String probeContentType(java.nio.file.Path) throws java.io.IOException;
-  }
-
-}
-
-package java.security {
-
-  public final class AccessControlContext {
-    ctor public AccessControlContext(java.security.ProtectionDomain[]);
-    ctor public AccessControlContext(java.security.AccessControlContext, java.security.DomainCombiner);
-    method public void checkPermission(java.security.Permission) throws java.security.AccessControlException;
-    method public java.security.DomainCombiner getDomainCombiner();
-  }
-
-  public class AccessControlException extends java.lang.SecurityException {
-    ctor public AccessControlException(String);
-    ctor public AccessControlException(String, java.security.Permission);
-    method public java.security.Permission getPermission();
-  }
-
-  public final class AccessController {
-    method public static void checkPermission(java.security.Permission) throws java.security.AccessControlException;
-    method public static <T> T doPrivileged(java.security.PrivilegedAction<T>);
-    method public static <T> T doPrivileged(java.security.PrivilegedAction<T>, java.security.AccessControlContext);
-    method public static <T> T doPrivileged(java.security.PrivilegedExceptionAction<T>) throws java.security.PrivilegedActionException;
-    method public static <T> T doPrivileged(java.security.PrivilegedExceptionAction<T>, java.security.AccessControlContext) throws java.security.PrivilegedActionException;
-    method public static <T> T doPrivilegedWithCombiner(java.security.PrivilegedAction<T>);
-    method public static <T> T doPrivilegedWithCombiner(java.security.PrivilegedExceptionAction<T>) throws java.security.PrivilegedActionException;
-    method public static java.security.AccessControlContext getContext();
-  }
-
-  public interface AlgorithmConstraints {
-    method public boolean permits(java.util.Set<java.security.CryptoPrimitive>, String, java.security.AlgorithmParameters);
-    method public boolean permits(java.util.Set<java.security.CryptoPrimitive>, java.security.Key);
-    method public boolean permits(java.util.Set<java.security.CryptoPrimitive>, String, java.security.Key, java.security.AlgorithmParameters);
-  }
-
-  public class AlgorithmParameterGenerator {
-    ctor protected AlgorithmParameterGenerator(java.security.AlgorithmParameterGeneratorSpi, java.security.Provider, String);
-    method public final java.security.AlgorithmParameters generateParameters();
-    method public final String getAlgorithm();
-    method public static java.security.AlgorithmParameterGenerator getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static java.security.AlgorithmParameterGenerator getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static java.security.AlgorithmParameterGenerator getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final java.security.Provider getProvider();
-    method public final void init(int);
-    method public final void init(int, java.security.SecureRandom);
-    method public final void init(java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException;
-    method public final void init(java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException;
-  }
-
-  public abstract class AlgorithmParameterGeneratorSpi {
-    ctor public AlgorithmParameterGeneratorSpi();
-    method protected abstract java.security.AlgorithmParameters engineGenerateParameters();
-    method protected abstract void engineInit(int, java.security.SecureRandom);
-    method protected abstract void engineInit(java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException;
-  }
-
-  public class AlgorithmParameters {
-    ctor protected AlgorithmParameters(java.security.AlgorithmParametersSpi, java.security.Provider, String);
-    method public final String getAlgorithm();
-    method public final byte[] getEncoded() throws java.io.IOException;
-    method public final byte[] getEncoded(String) throws java.io.IOException;
-    method public static java.security.AlgorithmParameters getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static java.security.AlgorithmParameters getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static java.security.AlgorithmParameters getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final <T extends java.security.spec.AlgorithmParameterSpec> T getParameterSpec(Class<T>) throws java.security.spec.InvalidParameterSpecException;
-    method public final java.security.Provider getProvider();
-    method public final void init(java.security.spec.AlgorithmParameterSpec) throws java.security.spec.InvalidParameterSpecException;
-    method public final void init(byte[]) throws java.io.IOException;
-    method public final void init(byte[], String) throws java.io.IOException;
-    method public final String toString();
-  }
-
-  public abstract class AlgorithmParametersSpi {
-    ctor public AlgorithmParametersSpi();
-    method protected abstract byte[] engineGetEncoded() throws java.io.IOException;
-    method protected abstract byte[] engineGetEncoded(String) throws java.io.IOException;
-    method protected abstract <T extends java.security.spec.AlgorithmParameterSpec> T engineGetParameterSpec(Class<T>) throws java.security.spec.InvalidParameterSpecException;
-    method protected abstract void engineInit(java.security.spec.AlgorithmParameterSpec) throws java.security.spec.InvalidParameterSpecException;
-    method protected abstract void engineInit(byte[]) throws java.io.IOException;
-    method protected abstract void engineInit(byte[], String) throws java.io.IOException;
-    method protected abstract String engineToString();
-  }
-
-  public final class AllPermission extends java.security.Permission {
-    ctor public AllPermission();
-    ctor public AllPermission(String, String);
-    method public String getActions();
-    method public boolean implies(java.security.Permission);
-  }
-
-  public abstract class AuthProvider extends java.security.Provider {
-    ctor protected AuthProvider(String, double, String);
-    method public abstract void login(javax.security.auth.Subject, javax.security.auth.callback.CallbackHandler) throws javax.security.auth.login.LoginException;
-    method public abstract void logout() throws javax.security.auth.login.LoginException;
-    method public abstract void setCallbackHandler(javax.security.auth.callback.CallbackHandler);
-  }
-
-  public abstract class BasicPermission extends java.security.Permission implements java.io.Serializable {
-    ctor public BasicPermission(String);
-    ctor public BasicPermission(String, String);
-    method public String getActions();
-    method public boolean implies(java.security.Permission);
-  }
-
-  @Deprecated public interface Certificate {
-    method @Deprecated public void decode(java.io.InputStream) throws java.io.IOException, java.security.KeyException;
-    method @Deprecated public void encode(java.io.OutputStream) throws java.io.IOException, java.security.KeyException;
-    method @Deprecated public String getFormat();
-    method @Deprecated public java.security.Principal getGuarantor();
-    method @Deprecated public java.security.Principal getPrincipal();
-    method @Deprecated public java.security.PublicKey getPublicKey();
-    method @Deprecated public String toString(boolean);
-  }
-
-  public final class CodeSigner implements java.io.Serializable {
-    ctor public CodeSigner(java.security.cert.CertPath, java.security.Timestamp);
-    method public java.security.cert.CertPath getSignerCertPath();
-    method public java.security.Timestamp getTimestamp();
-  }
-
-  public class CodeSource implements java.io.Serializable {
-    ctor public CodeSource(java.net.URL, java.security.cert.Certificate[]);
-    ctor public CodeSource(java.net.URL, java.security.CodeSigner[]);
-    method public final java.security.cert.Certificate[] getCertificates();
-    method public final java.security.CodeSigner[] getCodeSigners();
-    method public final java.net.URL getLocation();
-    method public boolean implies(java.security.CodeSource);
-  }
-
-  public enum CryptoPrimitive {
-    enum_constant public static final java.security.CryptoPrimitive BLOCK_CIPHER;
-    enum_constant public static final java.security.CryptoPrimitive KEY_AGREEMENT;
-    enum_constant public static final java.security.CryptoPrimitive KEY_ENCAPSULATION;
-    enum_constant public static final java.security.CryptoPrimitive KEY_WRAP;
-    enum_constant public static final java.security.CryptoPrimitive MAC;
-    enum_constant public static final java.security.CryptoPrimitive MESSAGE_DIGEST;
-    enum_constant public static final java.security.CryptoPrimitive PUBLIC_KEY_ENCRYPTION;
-    enum_constant public static final java.security.CryptoPrimitive SECURE_RANDOM;
-    enum_constant public static final java.security.CryptoPrimitive SIGNATURE;
-    enum_constant public static final java.security.CryptoPrimitive STREAM_CIPHER;
-  }
-
-  public class DigestException extends java.security.GeneralSecurityException {
-    ctor public DigestException();
-    ctor public DigestException(String);
-    ctor public DigestException(String, Throwable);
-    ctor public DigestException(Throwable);
-  }
-
-  public class DigestInputStream extends java.io.FilterInputStream {
-    ctor public DigestInputStream(java.io.InputStream, java.security.MessageDigest);
-    method public java.security.MessageDigest getMessageDigest();
-    method public void on(boolean);
-    method public void setMessageDigest(java.security.MessageDigest);
-    field protected java.security.MessageDigest digest;
-  }
-
-  public class DigestOutputStream extends java.io.FilterOutputStream {
-    ctor public DigestOutputStream(java.io.OutputStream, java.security.MessageDigest);
-    method public java.security.MessageDigest getMessageDigest();
-    method public void on(boolean);
-    method public void setMessageDigest(java.security.MessageDigest);
-    field protected java.security.MessageDigest digest;
-  }
-
-  public interface DomainCombiner {
-    method public java.security.ProtectionDomain[] combine(java.security.ProtectionDomain[], java.security.ProtectionDomain[]);
-  }
-
-  public final class DomainLoadStoreParameter implements java.security.KeyStore.LoadStoreParameter {
-    ctor public DomainLoadStoreParameter(java.net.URI, java.util.Map<java.lang.String,java.security.KeyStore.ProtectionParameter>);
-    method public java.net.URI getConfiguration();
-    method public java.security.KeyStore.ProtectionParameter getProtectionParameter();
-    method public java.util.Map<java.lang.String,java.security.KeyStore.ProtectionParameter> getProtectionParams();
-  }
-
-  public class GeneralSecurityException extends java.lang.Exception {
-    ctor public GeneralSecurityException();
-    ctor public GeneralSecurityException(String);
-    ctor public GeneralSecurityException(String, Throwable);
-    ctor public GeneralSecurityException(Throwable);
-  }
-
-  public interface Guard {
-    method public void checkGuard(Object) throws java.lang.SecurityException;
-  }
-
-  public class GuardedObject implements java.io.Serializable {
-    ctor public GuardedObject(Object, java.security.Guard);
-    method public Object getObject() throws java.lang.SecurityException;
-  }
-
-  @Deprecated public abstract class Identity implements java.security.Principal java.io.Serializable {
-    ctor @Deprecated protected Identity();
-    ctor @Deprecated public Identity(String, java.security.IdentityScope) throws java.security.KeyManagementException;
-    ctor @Deprecated public Identity(String);
-    method @Deprecated public void addCertificate(java.security.Certificate) throws java.security.KeyManagementException;
-    method @Deprecated public java.security.Certificate[] certificates();
-    method @Deprecated public final boolean equals(Object);
-    method @Deprecated public String getInfo();
-    method @Deprecated public final String getName();
-    method @Deprecated public java.security.PublicKey getPublicKey();
-    method @Deprecated public final java.security.IdentityScope getScope();
-    method @Deprecated protected boolean identityEquals(java.security.Identity);
-    method @Deprecated public void removeCertificate(java.security.Certificate) throws java.security.KeyManagementException;
-    method @Deprecated public void setInfo(String);
-    method @Deprecated public void setPublicKey(java.security.PublicKey) throws java.security.KeyManagementException;
-    method @Deprecated public String toString(boolean);
-  }
-
-  @Deprecated public abstract class IdentityScope extends java.security.Identity {
-    ctor @Deprecated protected IdentityScope();
-    ctor @Deprecated public IdentityScope(String);
-    ctor @Deprecated public IdentityScope(String, java.security.IdentityScope) throws java.security.KeyManagementException;
-    method @Deprecated public abstract void addIdentity(java.security.Identity) throws java.security.KeyManagementException;
-    method @Deprecated public abstract java.security.Identity getIdentity(String);
-    method @Deprecated public java.security.Identity getIdentity(java.security.Principal);
-    method @Deprecated public abstract java.security.Identity getIdentity(java.security.PublicKey);
-    method @Deprecated public static java.security.IdentityScope getSystemScope();
-    method @Deprecated public abstract java.util.Enumeration<java.security.Identity> identities();
-    method @Deprecated public abstract void removeIdentity(java.security.Identity) throws java.security.KeyManagementException;
-    method @Deprecated protected static void setSystemScope(java.security.IdentityScope);
-    method @Deprecated public abstract int size();
-  }
-
-  public class InvalidAlgorithmParameterException extends java.security.GeneralSecurityException {
-    ctor public InvalidAlgorithmParameterException();
-    ctor public InvalidAlgorithmParameterException(String);
-    ctor public InvalidAlgorithmParameterException(String, Throwable);
-    ctor public InvalidAlgorithmParameterException(Throwable);
-  }
-
-  public class InvalidKeyException extends java.security.KeyException {
-    ctor public InvalidKeyException();
-    ctor public InvalidKeyException(String);
-    ctor public InvalidKeyException(String, Throwable);
-    ctor public InvalidKeyException(Throwable);
-  }
-
-  public class InvalidParameterException extends java.lang.IllegalArgumentException {
-    ctor public InvalidParameterException();
-    ctor public InvalidParameterException(String);
-  }
-
-  public interface Key extends java.io.Serializable {
-    method public String getAlgorithm();
-    method public byte[] getEncoded();
-    method public String getFormat();
-    field public static final long serialVersionUID = 6603384152749567654L; // 0x5ba3eee69414eea6L
-  }
-
-  public class KeyException extends java.security.GeneralSecurityException {
-    ctor public KeyException();
-    ctor public KeyException(String);
-    ctor public KeyException(String, Throwable);
-    ctor public KeyException(Throwable);
-  }
-
-  public class KeyFactory {
-    ctor protected KeyFactory(java.security.KeyFactorySpi, java.security.Provider, String);
-    method public final java.security.PrivateKey generatePrivate(java.security.spec.KeySpec) throws java.security.spec.InvalidKeySpecException;
-    method public final java.security.PublicKey generatePublic(java.security.spec.KeySpec) throws java.security.spec.InvalidKeySpecException;
-    method public final String getAlgorithm();
-    method public static java.security.KeyFactory getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static java.security.KeyFactory getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static java.security.KeyFactory getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final <T extends java.security.spec.KeySpec> T getKeySpec(java.security.Key, Class<T>) throws java.security.spec.InvalidKeySpecException;
-    method public final java.security.Provider getProvider();
-    method public final java.security.Key translateKey(java.security.Key) throws java.security.InvalidKeyException;
-  }
-
-  public abstract class KeyFactorySpi {
-    ctor public KeyFactorySpi();
-    method protected abstract java.security.PrivateKey engineGeneratePrivate(java.security.spec.KeySpec) throws java.security.spec.InvalidKeySpecException;
-    method protected abstract java.security.PublicKey engineGeneratePublic(java.security.spec.KeySpec) throws java.security.spec.InvalidKeySpecException;
-    method protected abstract <T extends java.security.spec.KeySpec> T engineGetKeySpec(java.security.Key, Class<T>) throws java.security.spec.InvalidKeySpecException;
-    method protected abstract java.security.Key engineTranslateKey(java.security.Key) throws java.security.InvalidKeyException;
-  }
-
-  public class KeyManagementException extends java.security.KeyException {
-    ctor public KeyManagementException();
-    ctor public KeyManagementException(String);
-    ctor public KeyManagementException(String, Throwable);
-    ctor public KeyManagementException(Throwable);
-  }
-
-  public final class KeyPair implements java.io.Serializable {
-    ctor public KeyPair(java.security.PublicKey, java.security.PrivateKey);
-    method public java.security.PrivateKey getPrivate();
-    method public java.security.PublicKey getPublic();
-  }
-
-  public abstract class KeyPairGenerator extends java.security.KeyPairGeneratorSpi {
-    ctor protected KeyPairGenerator(String);
-    method public final java.security.KeyPair genKeyPair();
-    method public java.security.KeyPair generateKeyPair();
-    method public String getAlgorithm();
-    method public static java.security.KeyPairGenerator getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static java.security.KeyPairGenerator getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static java.security.KeyPairGenerator getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final java.security.Provider getProvider();
-    method public void initialize(int);
-    method public void initialize(int, java.security.SecureRandom);
-    method public void initialize(java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException;
-  }
-
-  public abstract class KeyPairGeneratorSpi {
-    ctor public KeyPairGeneratorSpi();
-    method public abstract java.security.KeyPair generateKeyPair();
-    method public abstract void initialize(int, java.security.SecureRandom);
-    method public void initialize(java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException;
-  }
-
-  public class KeyRep implements java.io.Serializable {
-    ctor public KeyRep(java.security.KeyRep.Type, String, String, byte[]);
-    method protected Object readResolve() throws java.io.ObjectStreamException;
-  }
-
-  public enum KeyRep.Type {
-    enum_constant public static final java.security.KeyRep.Type PRIVATE;
-    enum_constant public static final java.security.KeyRep.Type PUBLIC;
-    enum_constant public static final java.security.KeyRep.Type SECRET;
-  }
-
-  public class KeyStore {
-    ctor protected KeyStore(java.security.KeyStoreSpi, java.security.Provider, String);
-    method public final java.util.Enumeration<java.lang.String> aliases() throws java.security.KeyStoreException;
-    method public final boolean containsAlias(String) throws java.security.KeyStoreException;
-    method public final void deleteEntry(String) throws java.security.KeyStoreException;
-    method public final boolean entryInstanceOf(String, Class<? extends java.security.KeyStore.Entry>) throws java.security.KeyStoreException;
-    method public final java.security.cert.Certificate getCertificate(String) throws java.security.KeyStoreException;
-    method public final String getCertificateAlias(java.security.cert.Certificate) throws java.security.KeyStoreException;
-    method public final java.security.cert.Certificate[] getCertificateChain(String) throws java.security.KeyStoreException;
-    method public final java.util.Date getCreationDate(String) throws java.security.KeyStoreException;
-    method public static final String getDefaultType();
-    method public final java.security.KeyStore.Entry getEntry(String, java.security.KeyStore.ProtectionParameter) throws java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableEntryException;
-    method public static java.security.KeyStore getInstance(String) throws java.security.KeyStoreException;
-    method public static java.security.KeyStore getInstance(String, String) throws java.security.KeyStoreException, java.security.NoSuchProviderException;
-    method public static java.security.KeyStore getInstance(String, java.security.Provider) throws java.security.KeyStoreException;
-    method public final java.security.Key getKey(String, char[]) throws java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
-    method public final java.security.Provider getProvider();
-    method public final String getType();
-    method public final boolean isCertificateEntry(String) throws java.security.KeyStoreException;
-    method public final boolean isKeyEntry(String) throws java.security.KeyStoreException;
-    method public final void load(java.io.InputStream, char[]) throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException;
-    method public final void load(java.security.KeyStore.LoadStoreParameter) throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException;
-    method public final void setCertificateEntry(String, java.security.cert.Certificate) throws java.security.KeyStoreException;
-    method public final void setEntry(String, java.security.KeyStore.Entry, java.security.KeyStore.ProtectionParameter) throws java.security.KeyStoreException;
-    method public final void setKeyEntry(String, java.security.Key, char[], java.security.cert.Certificate[]) throws java.security.KeyStoreException;
-    method public final void setKeyEntry(String, byte[], java.security.cert.Certificate[]) throws java.security.KeyStoreException;
-    method public final int size() throws java.security.KeyStoreException;
-    method public final void store(java.io.OutputStream, char[]) throws java.security.cert.CertificateException, java.io.IOException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException;
-    method public final void store(java.security.KeyStore.LoadStoreParameter) throws java.security.cert.CertificateException, java.io.IOException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException;
-  }
-
-  public abstract static class KeyStore.Builder {
-    ctor protected KeyStore.Builder();
-    method public abstract java.security.KeyStore getKeyStore() throws java.security.KeyStoreException;
-    method public abstract java.security.KeyStore.ProtectionParameter getProtectionParameter(String) throws java.security.KeyStoreException;
-    method public static java.security.KeyStore.Builder newInstance(java.security.KeyStore, java.security.KeyStore.ProtectionParameter);
-    method public static java.security.KeyStore.Builder newInstance(String, java.security.Provider, java.io.File, java.security.KeyStore.ProtectionParameter);
-    method public static java.security.KeyStore.Builder newInstance(String, java.security.Provider, java.security.KeyStore.ProtectionParameter);
-  }
-
-  public static class KeyStore.CallbackHandlerProtection implements java.security.KeyStore.ProtectionParameter {
-    ctor public KeyStore.CallbackHandlerProtection(javax.security.auth.callback.CallbackHandler);
-    method public javax.security.auth.callback.CallbackHandler getCallbackHandler();
-  }
-
-  public static interface KeyStore.Entry {
-    method public default java.util.Set<java.security.KeyStore.Entry.Attribute> getAttributes();
-  }
-
-  public static interface KeyStore.Entry.Attribute {
-    method public String getName();
-    method public String getValue();
-  }
-
-  public static interface KeyStore.LoadStoreParameter {
-    method public java.security.KeyStore.ProtectionParameter getProtectionParameter();
-  }
-
-  public static class KeyStore.PasswordProtection implements javax.security.auth.Destroyable java.security.KeyStore.ProtectionParameter {
-    ctor public KeyStore.PasswordProtection(char[]);
-    ctor public KeyStore.PasswordProtection(char[], String, java.security.spec.AlgorithmParameterSpec);
-    method public char[] getPassword();
-    method public String getProtectionAlgorithm();
-    method public java.security.spec.AlgorithmParameterSpec getProtectionParameters();
-  }
-
-  public static final class KeyStore.PrivateKeyEntry implements java.security.KeyStore.Entry {
-    ctor public KeyStore.PrivateKeyEntry(java.security.PrivateKey, java.security.cert.Certificate[]);
-    ctor public KeyStore.PrivateKeyEntry(java.security.PrivateKey, java.security.cert.Certificate[], java.util.Set<java.security.KeyStore.Entry.Attribute>);
-    method public java.security.cert.Certificate getCertificate();
-    method public java.security.cert.Certificate[] getCertificateChain();
-    method public java.security.PrivateKey getPrivateKey();
-  }
-
-  public static interface KeyStore.ProtectionParameter {
-  }
-
-  public static final class KeyStore.SecretKeyEntry implements java.security.KeyStore.Entry {
-    ctor public KeyStore.SecretKeyEntry(javax.crypto.SecretKey);
-    ctor public KeyStore.SecretKeyEntry(javax.crypto.SecretKey, java.util.Set<java.security.KeyStore.Entry.Attribute>);
-    method public javax.crypto.SecretKey getSecretKey();
-  }
-
-  public static final class KeyStore.TrustedCertificateEntry implements java.security.KeyStore.Entry {
-    ctor public KeyStore.TrustedCertificateEntry(java.security.cert.Certificate);
-    ctor public KeyStore.TrustedCertificateEntry(java.security.cert.Certificate, java.util.Set<java.security.KeyStore.Entry.Attribute>);
-    method public java.security.cert.Certificate getTrustedCertificate();
-  }
-
-  public class KeyStoreException extends java.security.GeneralSecurityException {
-    ctor public KeyStoreException();
-    ctor public KeyStoreException(String);
-    ctor public KeyStoreException(String, Throwable);
-    ctor public KeyStoreException(Throwable);
-  }
-
-  public abstract class KeyStoreSpi {
-    ctor public KeyStoreSpi();
-    method public abstract java.util.Enumeration<java.lang.String> engineAliases();
-    method public abstract boolean engineContainsAlias(String);
-    method public abstract void engineDeleteEntry(String) throws java.security.KeyStoreException;
-    method public boolean engineEntryInstanceOf(String, Class<? extends java.security.KeyStore.Entry>);
-    method public abstract java.security.cert.Certificate engineGetCertificate(String);
-    method public abstract String engineGetCertificateAlias(java.security.cert.Certificate);
-    method public abstract java.security.cert.Certificate[] engineGetCertificateChain(String);
-    method public abstract java.util.Date engineGetCreationDate(String);
-    method public java.security.KeyStore.Entry engineGetEntry(String, java.security.KeyStore.ProtectionParameter) throws java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableEntryException;
-    method public abstract java.security.Key engineGetKey(String, char[]) throws java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
-    method public abstract boolean engineIsCertificateEntry(String);
-    method public abstract boolean engineIsKeyEntry(String);
-    method public abstract void engineLoad(java.io.InputStream, char[]) throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException;
-    method public void engineLoad(java.security.KeyStore.LoadStoreParameter) throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException;
-    method public abstract void engineSetCertificateEntry(String, java.security.cert.Certificate) throws java.security.KeyStoreException;
-    method public void engineSetEntry(String, java.security.KeyStore.Entry, java.security.KeyStore.ProtectionParameter) throws java.security.KeyStoreException;
-    method public abstract void engineSetKeyEntry(String, java.security.Key, char[], java.security.cert.Certificate[]) throws java.security.KeyStoreException;
-    method public abstract void engineSetKeyEntry(String, byte[], java.security.cert.Certificate[]) throws java.security.KeyStoreException;
-    method public abstract int engineSize();
-    method public abstract void engineStore(java.io.OutputStream, char[]) throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException;
-    method public void engineStore(java.security.KeyStore.LoadStoreParameter) throws java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException;
-  }
-
-  public abstract class MessageDigest extends java.security.MessageDigestSpi {
-    ctor protected MessageDigest(@NonNull String);
-    method @NonNull public byte[] digest();
-    method public int digest(@NonNull byte[], int, int) throws java.security.DigestException;
-    method @NonNull public byte[] digest(@NonNull byte[]);
-    method @NonNull public final String getAlgorithm();
-    method public final int getDigestLength();
-    method @NonNull public static java.security.MessageDigest getInstance(@NonNull String) throws java.security.NoSuchAlgorithmException;
-    method @NonNull public static java.security.MessageDigest getInstance(@NonNull String, @NonNull String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method @NonNull public static java.security.MessageDigest getInstance(@NonNull String, @NonNull java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method @NonNull public final java.security.Provider getProvider();
-    method public static boolean isEqual(@Nullable byte[], @Nullable byte[]);
-    method public void reset();
-    method public void update(byte);
-    method public void update(@NonNull byte[], int, int);
-    method public void update(@NonNull byte[]);
-    method public final void update(@NonNull java.nio.ByteBuffer);
-  }
-
-  public abstract class MessageDigestSpi {
-    ctor public MessageDigestSpi();
-    method public Object clone() throws java.lang.CloneNotSupportedException;
-    method protected abstract byte[] engineDigest();
-    method protected int engineDigest(byte[], int, int) throws java.security.DigestException;
-    method protected int engineGetDigestLength();
-    method protected abstract void engineReset();
-    method protected abstract void engineUpdate(byte);
-    method protected abstract void engineUpdate(byte[], int, int);
-    method protected void engineUpdate(java.nio.ByteBuffer);
-  }
-
-  public class NoSuchAlgorithmException extends java.security.GeneralSecurityException {
-    ctor public NoSuchAlgorithmException();
-    ctor public NoSuchAlgorithmException(String);
-    ctor public NoSuchAlgorithmException(String, Throwable);
-    ctor public NoSuchAlgorithmException(Throwable);
-  }
-
-  public class NoSuchProviderException extends java.security.GeneralSecurityException {
-    ctor public NoSuchProviderException();
-    ctor public NoSuchProviderException(String);
-  }
-
-  public final class PKCS12Attribute implements java.security.KeyStore.Entry.Attribute {
-    ctor public PKCS12Attribute(String, String);
-    ctor public PKCS12Attribute(byte[]);
-    method public byte[] getEncoded();
-    method public String getName();
-    method public String getValue();
-  }
-
-  public abstract class Permission implements java.security.Guard java.io.Serializable {
-    ctor public Permission(String);
-    method public void checkGuard(Object) throws java.lang.SecurityException;
-    method public abstract String getActions();
-    method public final String getName();
-    method public abstract boolean implies(java.security.Permission);
-    method public java.security.PermissionCollection newPermissionCollection();
-  }
-
-  public abstract class PermissionCollection implements java.io.Serializable {
-    ctor public PermissionCollection();
-    method public abstract void add(java.security.Permission);
-    method public abstract java.util.Enumeration<java.security.Permission> elements();
-    method public abstract boolean implies(java.security.Permission);
-    method public boolean isReadOnly();
-    method public void setReadOnly();
-  }
-
-  public final class Permissions extends java.security.PermissionCollection implements java.io.Serializable {
-    ctor public Permissions();
-    method public void add(java.security.Permission);
-    method public java.util.Enumeration<java.security.Permission> elements();
-    method public boolean implies(java.security.Permission);
-  }
-
-  public abstract class Policy {
-    ctor public Policy();
-    method public static java.security.Policy getInstance(String, java.security.Policy.Parameters) throws java.security.NoSuchAlgorithmException;
-    method public static java.security.Policy getInstance(String, java.security.Policy.Parameters, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static java.security.Policy getInstance(String, java.security.Policy.Parameters, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public java.security.Policy.Parameters getParameters();
-    method public java.security.PermissionCollection getPermissions(java.security.CodeSource);
-    method public java.security.PermissionCollection getPermissions(java.security.ProtectionDomain);
-    method public static java.security.Policy getPolicy();
-    method public java.security.Provider getProvider();
-    method public String getType();
-    method public boolean implies(java.security.ProtectionDomain, java.security.Permission);
-    method public void refresh();
-    method public static void setPolicy(java.security.Policy);
-    field public static final java.security.PermissionCollection UNSUPPORTED_EMPTY_COLLECTION;
-  }
-
-  public static interface Policy.Parameters {
-  }
-
-  public abstract class PolicySpi {
-    ctor public PolicySpi();
-    method protected java.security.PermissionCollection engineGetPermissions(java.security.CodeSource);
-    method protected java.security.PermissionCollection engineGetPermissions(java.security.ProtectionDomain);
-    method protected abstract boolean engineImplies(java.security.ProtectionDomain, java.security.Permission);
-    method protected void engineRefresh();
-  }
-
-  public interface Principal {
-    method public boolean equals(Object);
-    method public String getName();
-    method public int hashCode();
-    method public default boolean implies(javax.security.auth.Subject);
-    method public String toString();
-  }
-
-  public interface PrivateKey extends java.security.Key javax.security.auth.Destroyable {
-    field public static final long serialVersionUID = 6034044314589513430L; // 0x53bd3b559a12c6d6L
-  }
-
-  public interface PrivilegedAction<T> {
-    method public T run();
-  }
-
-  public class PrivilegedActionException extends java.lang.Exception {
-    ctor public PrivilegedActionException(Exception);
-    method public Exception getException();
-  }
-
-  public interface PrivilegedExceptionAction<T> {
-    method public T run() throws java.lang.Exception;
-  }
-
-  public class ProtectionDomain {
-    ctor public ProtectionDomain(java.security.CodeSource, java.security.PermissionCollection);
-    ctor public ProtectionDomain(java.security.CodeSource, java.security.PermissionCollection, ClassLoader, java.security.Principal[]);
-    method public final ClassLoader getClassLoader();
-    method public final java.security.CodeSource getCodeSource();
-    method public final java.security.PermissionCollection getPermissions();
-    method public final java.security.Principal[] getPrincipals();
-    method public boolean implies(java.security.Permission);
-  }
-
-  public abstract class Provider extends java.util.Properties {
-    ctor protected Provider(String, double, String);
-    method public Object compute(Object, java.util.function.BiFunction<? super java.lang.Object,? super java.lang.Object,?>);
-    method public Object computeIfAbsent(Object, java.util.function.Function<? super java.lang.Object,?>);
-    method public Object computeIfPresent(Object, java.util.function.BiFunction<? super java.lang.Object,? super java.lang.Object,?>);
-    method public java.util.Enumeration<java.lang.Object> elements();
-    method public java.util.Set<java.util.Map.Entry<java.lang.Object,java.lang.Object>> entrySet();
-    method public void forEach(java.util.function.BiConsumer<? super java.lang.Object,? super java.lang.Object>);
-    method public Object get(Object);
-    method public String getInfo();
-    method public String getName();
-    method public Object getOrDefault(Object, Object);
-    method public java.security.Provider.Service getService(String, String);
-    method public java.util.Set<java.security.Provider.Service> getServices();
-    method public double getVersion();
-    method public java.util.Set<java.lang.Object> keySet();
-    method public java.util.Enumeration<java.lang.Object> keys();
-    method public Object merge(Object, Object, java.util.function.BiFunction<? super java.lang.Object,? super java.lang.Object,?>);
-    method public Object put(Object, Object);
-    method public void putAll(java.util.Map<?,?>);
-    method public Object putIfAbsent(Object, Object);
-    method protected void putService(java.security.Provider.Service);
-    method public Object remove(Object);
-    method protected void removeService(java.security.Provider.Service);
-    method public boolean replace(Object, Object, Object);
-    method public Object replace(Object, Object);
-    method public void replaceAll(java.util.function.BiFunction<? super java.lang.Object,? super java.lang.Object,?>);
-    method public java.util.Collection<java.lang.Object> values();
-  }
-
-  public static class Provider.Service {
-    ctor public Provider.Service(java.security.Provider, String, String, String, java.util.List<java.lang.String>, java.util.Map<java.lang.String,java.lang.String>);
-    method public final String getAlgorithm();
-    method public final String getAttribute(String);
-    method public final String getClassName();
-    method public final java.security.Provider getProvider();
-    method public final String getType();
-    method public Object newInstance(Object) throws java.security.NoSuchAlgorithmException;
-    method public boolean supportsParameter(Object);
-  }
-
-  public class ProviderException extends java.lang.RuntimeException {
-    ctor public ProviderException();
-    ctor public ProviderException(String);
-    ctor public ProviderException(String, Throwable);
-    ctor public ProviderException(Throwable);
-  }
-
-  public interface PublicKey extends java.security.Key {
-    field public static final long serialVersionUID = 7187392471159151072L; // 0x63bebf5f40c219e0L
-  }
-
-  public class SecureClassLoader extends java.lang.ClassLoader {
-    ctor protected SecureClassLoader(ClassLoader);
-    ctor protected SecureClassLoader();
-    method protected final Class<?> defineClass(String, byte[], int, int, java.security.CodeSource);
-    method protected final Class<?> defineClass(String, java.nio.ByteBuffer, java.security.CodeSource);
-    method protected java.security.PermissionCollection getPermissions(java.security.CodeSource);
-  }
-
-  public class SecureRandom extends java.util.Random {
-    ctor public SecureRandom();
-    ctor public SecureRandom(byte[]);
-    ctor protected SecureRandom(java.security.SecureRandomSpi, java.security.Provider);
-    method public byte[] generateSeed(int);
-    method public String getAlgorithm();
-    method public static java.security.SecureRandom getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static java.security.SecureRandom getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static java.security.SecureRandom getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public static java.security.SecureRandom getInstanceStrong() throws java.security.NoSuchAlgorithmException;
-    method public final java.security.Provider getProvider();
-    method public static byte[] getSeed(int);
-    method protected final int next(int);
-    method public void setSeed(byte[]);
-  }
-
-  public abstract class SecureRandomSpi implements java.io.Serializable {
-    ctor public SecureRandomSpi();
-    method protected abstract byte[] engineGenerateSeed(int);
-    method protected abstract void engineNextBytes(byte[]);
-    method protected abstract void engineSetSeed(byte[]);
-  }
-
-  public final class Security {
-    method public static int addProvider(java.security.Provider);
-    method @Deprecated public static String getAlgorithmProperty(String, String);
-    method public static java.util.Set<java.lang.String> getAlgorithms(String);
-    method public static String getProperty(String);
-    method public static java.security.Provider getProvider(String);
-    method public static java.security.Provider[] getProviders();
-    method public static java.security.Provider[] getProviders(String);
-    method public static java.security.Provider[] getProviders(java.util.Map<java.lang.String,java.lang.String>);
-    method public static int insertProviderAt(java.security.Provider, int);
-    method public static void removeProvider(String);
-    method public static void setProperty(String, String);
-  }
-
-  public final class SecurityPermission extends java.security.BasicPermission {
-    ctor public SecurityPermission(String);
-    ctor public SecurityPermission(String, String);
-  }
-
-  public abstract class Signature extends java.security.SignatureSpi {
-    ctor protected Signature(String);
-    method public final String getAlgorithm();
-    method public static java.security.Signature getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static java.security.Signature getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static java.security.Signature getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method @Deprecated public final Object getParameter(String) throws java.security.InvalidParameterException;
-    method public final java.security.AlgorithmParameters getParameters();
-    method public final java.security.Provider getProvider();
-    method public final void initSign(java.security.PrivateKey) throws java.security.InvalidKeyException;
-    method public final void initSign(java.security.PrivateKey, java.security.SecureRandom) throws java.security.InvalidKeyException;
-    method public final void initVerify(java.security.PublicKey) throws java.security.InvalidKeyException;
-    method public final void initVerify(java.security.cert.Certificate) throws java.security.InvalidKeyException;
-    method @Deprecated public final void setParameter(String, Object) throws java.security.InvalidParameterException;
-    method public final void setParameter(java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException;
-    method public final byte[] sign() throws java.security.SignatureException;
-    method public final int sign(byte[], int, int) throws java.security.SignatureException;
-    method public final void update(byte) throws java.security.SignatureException;
-    method public final void update(byte[]) throws java.security.SignatureException;
-    method public final void update(byte[], int, int) throws java.security.SignatureException;
-    method public final void update(java.nio.ByteBuffer) throws java.security.SignatureException;
-    method public final boolean verify(byte[]) throws java.security.SignatureException;
-    method public final boolean verify(byte[], int, int) throws java.security.SignatureException;
-    field protected static final int SIGN = 2; // 0x2
-    field protected static final int UNINITIALIZED = 0; // 0x0
-    field protected static final int VERIFY = 3; // 0x3
-    field protected int state;
-  }
-
-  public class SignatureException extends java.security.GeneralSecurityException {
-    ctor public SignatureException();
-    ctor public SignatureException(String);
-    ctor public SignatureException(String, Throwable);
-    ctor public SignatureException(Throwable);
-  }
-
-  public abstract class SignatureSpi {
-    ctor public SignatureSpi();
-    method public Object clone() throws java.lang.CloneNotSupportedException;
-    method @Deprecated protected abstract Object engineGetParameter(String) throws java.security.InvalidParameterException;
-    method protected java.security.AlgorithmParameters engineGetParameters();
-    method protected abstract void engineInitSign(java.security.PrivateKey) throws java.security.InvalidKeyException;
-    method protected void engineInitSign(java.security.PrivateKey, java.security.SecureRandom) throws java.security.InvalidKeyException;
-    method protected abstract void engineInitVerify(java.security.PublicKey) throws java.security.InvalidKeyException;
-    method @Deprecated protected abstract void engineSetParameter(String, Object) throws java.security.InvalidParameterException;
-    method protected void engineSetParameter(java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException;
-    method protected abstract byte[] engineSign() throws java.security.SignatureException;
-    method protected int engineSign(byte[], int, int) throws java.security.SignatureException;
-    method protected abstract void engineUpdate(byte) throws java.security.SignatureException;
-    method protected abstract void engineUpdate(byte[], int, int) throws java.security.SignatureException;
-    method protected void engineUpdate(java.nio.ByteBuffer);
-    method protected abstract boolean engineVerify(byte[]) throws java.security.SignatureException;
-    method protected boolean engineVerify(byte[], int, int) throws java.security.SignatureException;
-    field protected java.security.SecureRandom appRandom;
-  }
-
-  public final class SignedObject implements java.io.Serializable {
-    ctor public SignedObject(java.io.Serializable, java.security.PrivateKey, java.security.Signature) throws java.io.IOException, java.security.InvalidKeyException, java.security.SignatureException;
-    method public String getAlgorithm();
-    method public Object getObject() throws java.lang.ClassNotFoundException, java.io.IOException;
-    method public byte[] getSignature();
-    method public boolean verify(java.security.PublicKey, java.security.Signature) throws java.security.InvalidKeyException, java.security.SignatureException;
-  }
-
-  @Deprecated public abstract class Signer extends java.security.Identity {
-    ctor @Deprecated protected Signer();
-    ctor @Deprecated public Signer(String);
-    ctor @Deprecated public Signer(String, java.security.IdentityScope) throws java.security.KeyManagementException;
-    method @Deprecated public java.security.PrivateKey getPrivateKey();
-    method @Deprecated public final void setKeyPair(java.security.KeyPair) throws java.security.InvalidParameterException, java.security.KeyException;
-  }
-
-  public final class Timestamp implements java.io.Serializable {
-    ctor public Timestamp(java.util.Date, java.security.cert.CertPath);
-    method public java.security.cert.CertPath getSignerCertPath();
-    method public java.util.Date getTimestamp();
-  }
-
-  public class UnrecoverableEntryException extends java.security.GeneralSecurityException {
-    ctor public UnrecoverableEntryException();
-    ctor public UnrecoverableEntryException(String);
-  }
-
-  public class UnrecoverableKeyException extends java.security.UnrecoverableEntryException {
-    ctor public UnrecoverableKeyException();
-    ctor public UnrecoverableKeyException(String);
-  }
-
-  public final class UnresolvedPermission extends java.security.Permission implements java.io.Serializable {
-    ctor public UnresolvedPermission(String, String, String, java.security.cert.Certificate[]);
-    method public String getActions();
-    method public String getUnresolvedActions();
-    method public java.security.cert.Certificate[] getUnresolvedCerts();
-    method public String getUnresolvedName();
-    method public String getUnresolvedType();
-    method public boolean implies(java.security.Permission);
-  }
-
-}
-
-package java.security.acl {
-
-  public interface Acl extends java.security.acl.Owner {
-    method public boolean addEntry(java.security.Principal, java.security.acl.AclEntry) throws java.security.acl.NotOwnerException;
-    method public boolean checkPermission(java.security.Principal, java.security.acl.Permission);
-    method public java.util.Enumeration<java.security.acl.AclEntry> entries();
-    method public String getName();
-    method public java.util.Enumeration<java.security.acl.Permission> getPermissions(java.security.Principal);
-    method public boolean removeEntry(java.security.Principal, java.security.acl.AclEntry) throws java.security.acl.NotOwnerException;
-    method public void setName(java.security.Principal, String) throws java.security.acl.NotOwnerException;
-    method public String toString();
-  }
-
-  public interface AclEntry extends java.lang.Cloneable {
-    method public boolean addPermission(java.security.acl.Permission);
-    method public boolean checkPermission(java.security.acl.Permission);
-    method public Object clone();
-    method public java.security.Principal getPrincipal();
-    method public boolean isNegative();
-    method public java.util.Enumeration<java.security.acl.Permission> permissions();
-    method public boolean removePermission(java.security.acl.Permission);
-    method public void setNegativePermissions();
-    method public boolean setPrincipal(java.security.Principal);
-    method public String toString();
-  }
-
-  public class AclNotFoundException extends java.lang.Exception {
-    ctor public AclNotFoundException();
-  }
-
-  public interface Group extends java.security.Principal {
-    method public boolean addMember(java.security.Principal);
-    method public boolean isMember(java.security.Principal);
-    method public java.util.Enumeration<? extends java.security.Principal> members();
-    method public boolean removeMember(java.security.Principal);
-  }
-
-  public class LastOwnerException extends java.lang.Exception {
-    ctor public LastOwnerException();
-  }
-
-  public class NotOwnerException extends java.lang.Exception {
-    ctor public NotOwnerException();
-  }
-
-  public interface Owner {
-    method public boolean addOwner(java.security.Principal, java.security.Principal) throws java.security.acl.NotOwnerException;
-    method public boolean deleteOwner(java.security.Principal, java.security.Principal) throws java.security.acl.LastOwnerException, java.security.acl.NotOwnerException;
-    method public boolean isOwner(java.security.Principal);
-  }
-
-  public interface Permission {
-  }
-
-}
-
-package java.security.cert {
-
-  public abstract class CRL {
-    ctor protected CRL(String);
-    method public final String getType();
-    method public abstract boolean isRevoked(java.security.cert.Certificate);
-    method public abstract String toString();
-  }
-
-  public class CRLException extends java.security.GeneralSecurityException {
-    ctor public CRLException();
-    ctor public CRLException(String);
-    ctor public CRLException(String, Throwable);
-    ctor public CRLException(Throwable);
-  }
-
-  public enum CRLReason {
-    enum_constant public static final java.security.cert.CRLReason AA_COMPROMISE;
-    enum_constant public static final java.security.cert.CRLReason AFFILIATION_CHANGED;
-    enum_constant public static final java.security.cert.CRLReason CA_COMPROMISE;
-    enum_constant public static final java.security.cert.CRLReason CERTIFICATE_HOLD;
-    enum_constant public static final java.security.cert.CRLReason CESSATION_OF_OPERATION;
-    enum_constant public static final java.security.cert.CRLReason KEY_COMPROMISE;
-    enum_constant public static final java.security.cert.CRLReason PRIVILEGE_WITHDRAWN;
-    enum_constant public static final java.security.cert.CRLReason REMOVE_FROM_CRL;
-    enum_constant public static final java.security.cert.CRLReason SUPERSEDED;
-    enum_constant public static final java.security.cert.CRLReason UNSPECIFIED;
-    enum_constant public static final java.security.cert.CRLReason UNUSED;
-  }
-
-  public interface CRLSelector extends java.lang.Cloneable {
-    method public Object clone();
-    method public boolean match(java.security.cert.CRL);
-  }
-
-  public abstract class CertPath implements java.io.Serializable {
-    ctor protected CertPath(String);
-    method public abstract java.util.List<? extends java.security.cert.Certificate> getCertificates();
-    method public abstract byte[] getEncoded() throws java.security.cert.CertificateEncodingException;
-    method public abstract byte[] getEncoded(String) throws java.security.cert.CertificateEncodingException;
-    method public abstract java.util.Iterator<java.lang.String> getEncodings();
-    method public String getType();
-    method protected Object writeReplace() throws java.io.ObjectStreamException;
-  }
-
-  protected static class CertPath.CertPathRep implements java.io.Serializable {
-    ctor protected CertPath.CertPathRep(String, byte[]);
-    method protected Object readResolve() throws java.io.ObjectStreamException;
-  }
-
-  public class CertPathBuilder {
-    ctor protected CertPathBuilder(java.security.cert.CertPathBuilderSpi, java.security.Provider, String);
-    method public final java.security.cert.CertPathBuilderResult build(java.security.cert.CertPathParameters) throws java.security.cert.CertPathBuilderException, java.security.InvalidAlgorithmParameterException;
-    method public final String getAlgorithm();
-    method public static final String getDefaultType();
-    method public static java.security.cert.CertPathBuilder getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static java.security.cert.CertPathBuilder getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static java.security.cert.CertPathBuilder getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final java.security.Provider getProvider();
-    method public final java.security.cert.CertPathChecker getRevocationChecker();
-  }
-
-  public class CertPathBuilderException extends java.security.GeneralSecurityException {
-    ctor public CertPathBuilderException();
-    ctor public CertPathBuilderException(String);
-    ctor public CertPathBuilderException(Throwable);
-    ctor public CertPathBuilderException(String, Throwable);
-  }
-
-  public interface CertPathBuilderResult extends java.lang.Cloneable {
-    method public Object clone();
-    method public java.security.cert.CertPath getCertPath();
-  }
-
-  public abstract class CertPathBuilderSpi {
-    ctor public CertPathBuilderSpi();
-    method public abstract java.security.cert.CertPathBuilderResult engineBuild(java.security.cert.CertPathParameters) throws java.security.cert.CertPathBuilderException, java.security.InvalidAlgorithmParameterException;
-    method public java.security.cert.CertPathChecker engineGetRevocationChecker();
-  }
-
-  public interface CertPathChecker {
-    method public void check(java.security.cert.Certificate) throws java.security.cert.CertPathValidatorException;
-    method public void init(boolean) throws java.security.cert.CertPathValidatorException;
-    method public boolean isForwardCheckingSupported();
-  }
-
-  public interface CertPathParameters extends java.lang.Cloneable {
-    method public Object clone();
-  }
-
-  public class CertPathValidator {
-    ctor protected CertPathValidator(java.security.cert.CertPathValidatorSpi, java.security.Provider, String);
-    method public final String getAlgorithm();
-    method public static final String getDefaultType();
-    method public static java.security.cert.CertPathValidator getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static java.security.cert.CertPathValidator getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static java.security.cert.CertPathValidator getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final java.security.Provider getProvider();
-    method public final java.security.cert.CertPathChecker getRevocationChecker();
-    method public final java.security.cert.CertPathValidatorResult validate(java.security.cert.CertPath, java.security.cert.CertPathParameters) throws java.security.cert.CertPathValidatorException, java.security.InvalidAlgorithmParameterException;
-  }
-
-  public class CertPathValidatorException extends java.security.GeneralSecurityException {
-    ctor public CertPathValidatorException();
-    ctor public CertPathValidatorException(String);
-    ctor public CertPathValidatorException(Throwable);
-    ctor public CertPathValidatorException(String, Throwable);
-    ctor public CertPathValidatorException(String, Throwable, java.security.cert.CertPath, int);
-    ctor public CertPathValidatorException(String, Throwable, java.security.cert.CertPath, int, java.security.cert.CertPathValidatorException.Reason);
-    method public java.security.cert.CertPath getCertPath();
-    method public int getIndex();
-    method public java.security.cert.CertPathValidatorException.Reason getReason();
-  }
-
-  public enum CertPathValidatorException.BasicReason implements java.security.cert.CertPathValidatorException.Reason {
-    enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason ALGORITHM_CONSTRAINED;
-    enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason EXPIRED;
-    enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason INVALID_SIGNATURE;
-    enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason NOT_YET_VALID;
-    enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason REVOKED;
-    enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason UNDETERMINED_REVOCATION_STATUS;
-    enum_constant public static final java.security.cert.CertPathValidatorException.BasicReason UNSPECIFIED;
-  }
-
-  public static interface CertPathValidatorException.Reason extends java.io.Serializable {
-  }
-
-  public interface CertPathValidatorResult extends java.lang.Cloneable {
-    method public Object clone();
-  }
-
-  public abstract class CertPathValidatorSpi {
-    ctor public CertPathValidatorSpi();
-    method public java.security.cert.CertPathChecker engineGetRevocationChecker();
-    method public abstract java.security.cert.CertPathValidatorResult engineValidate(java.security.cert.CertPath, java.security.cert.CertPathParameters) throws java.security.cert.CertPathValidatorException, java.security.InvalidAlgorithmParameterException;
-  }
-
-  public interface CertSelector extends java.lang.Cloneable {
-    method public Object clone();
-    method public boolean match(java.security.cert.Certificate);
-  }
-
-  public class CertStore {
-    ctor protected CertStore(java.security.cert.CertStoreSpi, java.security.Provider, String, java.security.cert.CertStoreParameters);
-    method public final java.util.Collection<? extends java.security.cert.CRL> getCRLs(java.security.cert.CRLSelector) throws java.security.cert.CertStoreException;
-    method public final java.security.cert.CertStoreParameters getCertStoreParameters();
-    method public final java.util.Collection<? extends java.security.cert.Certificate> getCertificates(java.security.cert.CertSelector) throws java.security.cert.CertStoreException;
-    method public static final String getDefaultType();
-    method public static java.security.cert.CertStore getInstance(String, java.security.cert.CertStoreParameters) throws java.security.InvalidAlgorithmParameterException, java.security.NoSuchAlgorithmException;
-    method public static java.security.cert.CertStore getInstance(String, java.security.cert.CertStoreParameters, String) throws java.security.InvalidAlgorithmParameterException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static java.security.cert.CertStore getInstance(String, java.security.cert.CertStoreParameters, java.security.Provider) throws java.security.InvalidAlgorithmParameterException, java.security.NoSuchAlgorithmException;
-    method public final java.security.Provider getProvider();
-    method public final String getType();
-  }
-
-  public class CertStoreException extends java.security.GeneralSecurityException {
-    ctor public CertStoreException();
-    ctor public CertStoreException(String);
-    ctor public CertStoreException(Throwable);
-    ctor public CertStoreException(String, Throwable);
-  }
-
-  public interface CertStoreParameters extends java.lang.Cloneable {
-    method public Object clone();
-  }
-
-  public abstract class CertStoreSpi {
-    ctor public CertStoreSpi(java.security.cert.CertStoreParameters) throws java.security.InvalidAlgorithmParameterException;
-    method public abstract java.util.Collection<? extends java.security.cert.CRL> engineGetCRLs(java.security.cert.CRLSelector) throws java.security.cert.CertStoreException;
-    method public abstract java.util.Collection<? extends java.security.cert.Certificate> engineGetCertificates(java.security.cert.CertSelector) throws java.security.cert.CertStoreException;
-  }
-
-  public abstract class Certificate implements java.io.Serializable {
-    ctor protected Certificate(String);
-    method public abstract byte[] getEncoded() throws java.security.cert.CertificateEncodingException;
-    method public abstract java.security.PublicKey getPublicKey();
-    method public final String getType();
-    method public abstract String toString();
-    method public abstract void verify(java.security.PublicKey) throws java.security.cert.CertificateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
-    method public abstract void verify(java.security.PublicKey, String) throws java.security.cert.CertificateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
-    method public void verify(java.security.PublicKey, java.security.Provider) throws java.security.cert.CertificateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.SignatureException;
-    method protected Object writeReplace() throws java.io.ObjectStreamException;
-  }
-
-  protected static class Certificate.CertificateRep implements java.io.Serializable {
-    ctor protected Certificate.CertificateRep(String, byte[]);
-    method protected Object readResolve() throws java.io.ObjectStreamException;
-  }
-
-  public class CertificateEncodingException extends java.security.cert.CertificateException {
-    ctor public CertificateEncodingException();
-    ctor public CertificateEncodingException(String);
-    ctor public CertificateEncodingException(String, Throwable);
-    ctor public CertificateEncodingException(Throwable);
-  }
-
-  public class CertificateException extends java.security.GeneralSecurityException {
-    ctor public CertificateException();
-    ctor public CertificateException(String);
-    ctor public CertificateException(String, Throwable);
-    ctor public CertificateException(Throwable);
-  }
-
-  public class CertificateExpiredException extends java.security.cert.CertificateException {
-    ctor public CertificateExpiredException();
-    ctor public CertificateExpiredException(String);
-  }
-
-  public class CertificateFactory {
-    ctor protected CertificateFactory(java.security.cert.CertificateFactorySpi, java.security.Provider, String);
-    method public final java.security.cert.CRL generateCRL(java.io.InputStream) throws java.security.cert.CRLException;
-    method public final java.util.Collection<? extends java.security.cert.CRL> generateCRLs(java.io.InputStream) throws java.security.cert.CRLException;
-    method public final java.security.cert.CertPath generateCertPath(java.io.InputStream) throws java.security.cert.CertificateException;
-    method public final java.security.cert.CertPath generateCertPath(java.io.InputStream, String) throws java.security.cert.CertificateException;
-    method public final java.security.cert.CertPath generateCertPath(java.util.List<? extends java.security.cert.Certificate>) throws java.security.cert.CertificateException;
-    method public final java.security.cert.Certificate generateCertificate(java.io.InputStream) throws java.security.cert.CertificateException;
-    method public final java.util.Collection<? extends java.security.cert.Certificate> generateCertificates(java.io.InputStream) throws java.security.cert.CertificateException;
-    method public final java.util.Iterator<java.lang.String> getCertPathEncodings();
-    method public static final java.security.cert.CertificateFactory getInstance(String) throws java.security.cert.CertificateException;
-    method public static final java.security.cert.CertificateFactory getInstance(String, String) throws java.security.cert.CertificateException, java.security.NoSuchProviderException;
-    method public static final java.security.cert.CertificateFactory getInstance(String, java.security.Provider) throws java.security.cert.CertificateException;
-    method public final java.security.Provider getProvider();
-    method public final String getType();
-  }
-
-  public abstract class CertificateFactorySpi {
-    ctor public CertificateFactorySpi();
-    method public abstract java.security.cert.CRL engineGenerateCRL(java.io.InputStream) throws java.security.cert.CRLException;
-    method public abstract java.util.Collection<? extends java.security.cert.CRL> engineGenerateCRLs(java.io.InputStream) throws java.security.cert.CRLException;
-    method public java.security.cert.CertPath engineGenerateCertPath(java.io.InputStream) throws java.security.cert.CertificateException;
-    method public java.security.cert.CertPath engineGenerateCertPath(java.io.InputStream, String) throws java.security.cert.CertificateException;
-    method public java.security.cert.CertPath engineGenerateCertPath(java.util.List<? extends java.security.cert.Certificate>) throws java.security.cert.CertificateException;
-    method public abstract java.security.cert.Certificate engineGenerateCertificate(java.io.InputStream) throws java.security.cert.CertificateException;
-    method public abstract java.util.Collection<? extends java.security.cert.Certificate> engineGenerateCertificates(java.io.InputStream) throws java.security.cert.CertificateException;
-    method public java.util.Iterator<java.lang.String> engineGetCertPathEncodings();
-  }
-
-  public class CertificateNotYetValidException extends java.security.cert.CertificateException {
-    ctor public CertificateNotYetValidException();
-    ctor public CertificateNotYetValidException(String);
-  }
-
-  public class CertificateParsingException extends java.security.cert.CertificateException {
-    ctor public CertificateParsingException();
-    ctor public CertificateParsingException(String);
-    ctor public CertificateParsingException(String, Throwable);
-    ctor public CertificateParsingException(Throwable);
-  }
-
-  public class CertificateRevokedException extends java.security.cert.CertificateException {
-    ctor public CertificateRevokedException(java.util.Date, java.security.cert.CRLReason, javax.security.auth.x500.X500Principal, java.util.Map<java.lang.String,java.security.cert.Extension>);
-    method public javax.security.auth.x500.X500Principal getAuthorityName();
-    method public java.util.Map<java.lang.String,java.security.cert.Extension> getExtensions();
-    method public java.util.Date getInvalidityDate();
-    method public java.util.Date getRevocationDate();
-    method public java.security.cert.CRLReason getRevocationReason();
-  }
-
-  public class CollectionCertStoreParameters implements java.security.cert.CertStoreParameters {
-    ctor public CollectionCertStoreParameters(java.util.Collection<?>);
-    ctor public CollectionCertStoreParameters();
-    method public Object clone();
-    method public java.util.Collection<?> getCollection();
-  }
-
-  public interface Extension {
-    method public void encode(java.io.OutputStream) throws java.io.IOException;
-    method public String getId();
-    method public byte[] getValue();
-    method public boolean isCritical();
-  }
-
-  public class LDAPCertStoreParameters implements java.security.cert.CertStoreParameters {
-    ctor public LDAPCertStoreParameters(String, int);
-    ctor public LDAPCertStoreParameters(String);
-    ctor public LDAPCertStoreParameters();
-    method public Object clone();
-    method public int getPort();
-    method public String getServerName();
-  }
-
-  public class PKIXBuilderParameters extends java.security.cert.PKIXParameters {
-    ctor public PKIXBuilderParameters(java.util.Set<java.security.cert.TrustAnchor>, java.security.cert.CertSelector) throws java.security.InvalidAlgorithmParameterException;
-    ctor public PKIXBuilderParameters(java.security.KeyStore, java.security.cert.CertSelector) throws java.security.InvalidAlgorithmParameterException, java.security.KeyStoreException;
-    method public int getMaxPathLength();
-    method public void setMaxPathLength(int);
-  }
-
-  public class PKIXCertPathBuilderResult extends java.security.cert.PKIXCertPathValidatorResult implements java.security.cert.CertPathBuilderResult {
-    ctor public PKIXCertPathBuilderResult(java.security.cert.CertPath, java.security.cert.TrustAnchor, java.security.cert.PolicyNode, java.security.PublicKey);
-    method public java.security.cert.CertPath getCertPath();
-  }
-
-  public abstract class PKIXCertPathChecker implements java.security.cert.CertPathChecker java.lang.Cloneable {
-    ctor protected PKIXCertPathChecker();
-    method public abstract void check(java.security.cert.Certificate, java.util.Collection<java.lang.String>) throws java.security.cert.CertPathValidatorException;
-    method public void check(java.security.cert.Certificate) throws java.security.cert.CertPathValidatorException;
-    method public Object clone();
-    method public abstract java.util.Set<java.lang.String> getSupportedExtensions();
-  }
-
-  public class PKIXCertPathValidatorResult implements java.security.cert.CertPathValidatorResult {
-    ctor public PKIXCertPathValidatorResult(java.security.cert.TrustAnchor, java.security.cert.PolicyNode, java.security.PublicKey);
-    method public Object clone();
-    method public java.security.cert.PolicyNode getPolicyTree();
-    method public java.security.PublicKey getPublicKey();
-    method public java.security.cert.TrustAnchor getTrustAnchor();
-  }
-
-  public class PKIXParameters implements java.security.cert.CertPathParameters {
-    ctor public PKIXParameters(java.util.Set<java.security.cert.TrustAnchor>) throws java.security.InvalidAlgorithmParameterException;
-    ctor public PKIXParameters(java.security.KeyStore) throws java.security.InvalidAlgorithmParameterException, java.security.KeyStoreException;
-    method public void addCertPathChecker(java.security.cert.PKIXCertPathChecker);
-    method public void addCertStore(java.security.cert.CertStore);
-    method public Object clone();
-    method public java.util.List<java.security.cert.PKIXCertPathChecker> getCertPathCheckers();
-    method public java.util.List<java.security.cert.CertStore> getCertStores();
-    method public java.util.Date getDate();
-    method public java.util.Set<java.lang.String> getInitialPolicies();
-    method public boolean getPolicyQualifiersRejected();
-    method public String getSigProvider();
-    method public java.security.cert.CertSelector getTargetCertConstraints();
-    method public java.util.Set<java.security.cert.TrustAnchor> getTrustAnchors();
-    method public boolean isAnyPolicyInhibited();
-    method public boolean isExplicitPolicyRequired();
-    method public boolean isPolicyMappingInhibited();
-    method public boolean isRevocationEnabled();
-    method public void setAnyPolicyInhibited(boolean);
-    method public void setCertPathCheckers(java.util.List<java.security.cert.PKIXCertPathChecker>);
-    method public void setCertStores(java.util.List<java.security.cert.CertStore>);
-    method public void setDate(java.util.Date);
-    method public void setExplicitPolicyRequired(boolean);
-    method public void setInitialPolicies(java.util.Set<java.lang.String>);
-    method public void setPolicyMappingInhibited(boolean);
-    method public void setPolicyQualifiersRejected(boolean);
-    method public void setRevocationEnabled(boolean);
-    method public void setSigProvider(String);
-    method public void setTargetCertConstraints(java.security.cert.CertSelector);
-    method public void setTrustAnchors(java.util.Set<java.security.cert.TrustAnchor>) throws java.security.InvalidAlgorithmParameterException;
-  }
-
-  public enum PKIXReason implements java.security.cert.CertPathValidatorException.Reason {
-    enum_constant public static final java.security.cert.PKIXReason INVALID_KEY_USAGE;
-    enum_constant public static final java.security.cert.PKIXReason INVALID_NAME;
-    enum_constant public static final java.security.cert.PKIXReason INVALID_POLICY;
-    enum_constant public static final java.security.cert.PKIXReason NAME_CHAINING;
-    enum_constant public static final java.security.cert.PKIXReason NOT_CA_CERT;
-    enum_constant public static final java.security.cert.PKIXReason NO_TRUST_ANCHOR;
-    enum_constant public static final java.security.cert.PKIXReason PATH_TOO_LONG;
-    enum_constant public static final java.security.cert.PKIXReason UNRECOGNIZED_CRIT_EXT;
-  }
-
-  public abstract class PKIXRevocationChecker extends java.security.cert.PKIXCertPathChecker {
-    ctor protected PKIXRevocationChecker();
-    method public java.security.cert.PKIXRevocationChecker clone();
-    method public java.util.List<java.security.cert.Extension> getOcspExtensions();
-    method public java.net.URI getOcspResponder();
-    method public java.security.cert.X509Certificate getOcspResponderCert();
-    method public java.util.Map<java.security.cert.X509Certificate,byte[]> getOcspResponses();
-    method public java.util.Set<java.security.cert.PKIXRevocationChecker.Option> getOptions();
-    method public abstract java.util.List<java.security.cert.CertPathValidatorException> getSoftFailExceptions();
-    method public void setOcspExtensions(java.util.List<java.security.cert.Extension>);
-    method public void setOcspResponder(java.net.URI);
-    method public void setOcspResponderCert(java.security.cert.X509Certificate);
-    method public void setOcspResponses(java.util.Map<java.security.cert.X509Certificate,byte[]>);
-    method public void setOptions(java.util.Set<java.security.cert.PKIXRevocationChecker.Option>);
-  }
-
-  public enum PKIXRevocationChecker.Option {
-    enum_constant public static final java.security.cert.PKIXRevocationChecker.Option NO_FALLBACK;
-    enum_constant public static final java.security.cert.PKIXRevocationChecker.Option ONLY_END_ENTITY;
-    enum_constant public static final java.security.cert.PKIXRevocationChecker.Option PREFER_CRLS;
-    enum_constant public static final java.security.cert.PKIXRevocationChecker.Option SOFT_FAIL;
-  }
-
-  public interface PolicyNode {
-    method public java.util.Iterator<? extends java.security.cert.PolicyNode> getChildren();
-    method public int getDepth();
-    method public java.util.Set<java.lang.String> getExpectedPolicies();
-    method public java.security.cert.PolicyNode getParent();
-    method public java.util.Set<? extends java.security.cert.PolicyQualifierInfo> getPolicyQualifiers();
-    method public String getValidPolicy();
-    method public boolean isCritical();
-  }
-
-  public class PolicyQualifierInfo {
-    ctor public PolicyQualifierInfo(byte[]) throws java.io.IOException;
-    method public final byte[] getEncoded();
-    method public final byte[] getPolicyQualifier();
-    method public final String getPolicyQualifierId();
-  }
-
-  public class TrustAnchor {
-    ctor public TrustAnchor(java.security.cert.X509Certificate, byte[]);
-    ctor public TrustAnchor(javax.security.auth.x500.X500Principal, java.security.PublicKey, byte[]);
-    ctor public TrustAnchor(String, java.security.PublicKey, byte[]);
-    method public final javax.security.auth.x500.X500Principal getCA();
-    method public final String getCAName();
-    method public final java.security.PublicKey getCAPublicKey();
-    method public final byte[] getNameConstraints();
-    method public final java.security.cert.X509Certificate getTrustedCert();
-  }
-
-  public abstract class X509CRL extends java.security.cert.CRL implements java.security.cert.X509Extension {
-    ctor protected X509CRL();
-    method public abstract byte[] getEncoded() throws java.security.cert.CRLException;
-    method public abstract java.security.Principal getIssuerDN();
-    method public javax.security.auth.x500.X500Principal getIssuerX500Principal();
-    method public abstract java.util.Date getNextUpdate();
-    method public abstract java.security.cert.X509CRLEntry getRevokedCertificate(java.math.BigInteger);
-    method public java.security.cert.X509CRLEntry getRevokedCertificate(java.security.cert.X509Certificate);
-    method public abstract java.util.Set<? extends java.security.cert.X509CRLEntry> getRevokedCertificates();
-    method public abstract String getSigAlgName();
-    method public abstract String getSigAlgOID();
-    method public abstract byte[] getSigAlgParams();
-    method public abstract byte[] getSignature();
-    method public abstract byte[] getTBSCertList() throws java.security.cert.CRLException;
-    method public abstract java.util.Date getThisUpdate();
-    method public abstract int getVersion();
-    method public abstract void verify(java.security.PublicKey) throws java.security.cert.CRLException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
-    method public abstract void verify(java.security.PublicKey, String) throws java.security.cert.CRLException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
-    method public void verify(java.security.PublicKey, java.security.Provider) throws java.security.cert.CRLException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.SignatureException;
-  }
-
-  public abstract class X509CRLEntry implements java.security.cert.X509Extension {
-    ctor public X509CRLEntry();
-    method public javax.security.auth.x500.X500Principal getCertificateIssuer();
-    method public abstract byte[] getEncoded() throws java.security.cert.CRLException;
-    method public abstract java.util.Date getRevocationDate();
-    method public java.security.cert.CRLReason getRevocationReason();
-    method public abstract java.math.BigInteger getSerialNumber();
-    method public abstract boolean hasExtensions();
-    method public abstract String toString();
-  }
-
-  public class X509CRLSelector implements java.security.cert.CRLSelector {
-    ctor public X509CRLSelector();
-    method public void addIssuer(javax.security.auth.x500.X500Principal);
-    method public void addIssuerName(String) throws java.io.IOException;
-    method public void addIssuerName(byte[]) throws java.io.IOException;
-    method public Object clone();
-    method public java.security.cert.X509Certificate getCertificateChecking();
-    method public java.util.Date getDateAndTime();
-    method public java.util.Collection<java.lang.Object> getIssuerNames();
-    method public java.util.Collection<javax.security.auth.x500.X500Principal> getIssuers();
-    method public java.math.BigInteger getMaxCRL();
-    method public java.math.BigInteger getMinCRL();
-    method public boolean match(java.security.cert.CRL);
-    method public void setCertificateChecking(java.security.cert.X509Certificate);
-    method public void setDateAndTime(java.util.Date);
-    method public void setIssuerNames(java.util.Collection<?>) throws java.io.IOException;
-    method public void setIssuers(java.util.Collection<javax.security.auth.x500.X500Principal>);
-    method public void setMaxCRLNumber(java.math.BigInteger);
-    method public void setMinCRLNumber(java.math.BigInteger);
-  }
-
-  public class X509CertSelector implements java.security.cert.CertSelector {
-    ctor public X509CertSelector();
-    method public void addPathToName(int, String) throws java.io.IOException;
-    method public void addPathToName(int, byte[]) throws java.io.IOException;
-    method public void addSubjectAlternativeName(int, String) throws java.io.IOException;
-    method public void addSubjectAlternativeName(int, byte[]) throws java.io.IOException;
-    method public Object clone();
-    method public byte[] getAuthorityKeyIdentifier();
-    method public int getBasicConstraints();
-    method public java.security.cert.X509Certificate getCertificate();
-    method public java.util.Date getCertificateValid();
-    method public java.util.Set<java.lang.String> getExtendedKeyUsage();
-    method public javax.security.auth.x500.X500Principal getIssuer();
-    method public byte[] getIssuerAsBytes() throws java.io.IOException;
-    method public String getIssuerAsString();
-    method public boolean[] getKeyUsage();
-    method public boolean getMatchAllSubjectAltNames();
-    method public byte[] getNameConstraints();
-    method public java.util.Collection<java.util.List<?>> getPathToNames();
-    method public java.util.Set<java.lang.String> getPolicy();
-    method public java.util.Date getPrivateKeyValid();
-    method public java.math.BigInteger getSerialNumber();
-    method public javax.security.auth.x500.X500Principal getSubject();
-    method public java.util.Collection<java.util.List<?>> getSubjectAlternativeNames();
-    method public byte[] getSubjectAsBytes() throws java.io.IOException;
-    method public String getSubjectAsString();
-    method public byte[] getSubjectKeyIdentifier();
-    method public java.security.PublicKey getSubjectPublicKey();
-    method public String getSubjectPublicKeyAlgID();
-    method public boolean match(java.security.cert.Certificate);
-    method public void setAuthorityKeyIdentifier(byte[]);
-    method public void setBasicConstraints(int);
-    method public void setCertificate(java.security.cert.X509Certificate);
-    method public void setCertificateValid(java.util.Date);
-    method public void setExtendedKeyUsage(java.util.Set<java.lang.String>) throws java.io.IOException;
-    method public void setIssuer(javax.security.auth.x500.X500Principal);
-    method public void setIssuer(String) throws java.io.IOException;
-    method public void setIssuer(byte[]) throws java.io.IOException;
-    method public void setKeyUsage(boolean[]);
-    method public void setMatchAllSubjectAltNames(boolean);
-    method public void setNameConstraints(byte[]) throws java.io.IOException;
-    method public void setPathToNames(java.util.Collection<java.util.List<?>>) throws java.io.IOException;
-    method public void setPolicy(java.util.Set<java.lang.String>) throws java.io.IOException;
-    method public void setPrivateKeyValid(java.util.Date);
-    method public void setSerialNumber(java.math.BigInteger);
-    method public void setSubject(javax.security.auth.x500.X500Principal);
-    method public void setSubject(String) throws java.io.IOException;
-    method public void setSubject(byte[]) throws java.io.IOException;
-    method public void setSubjectAlternativeNames(java.util.Collection<java.util.List<?>>) throws java.io.IOException;
-    method public void setSubjectKeyIdentifier(byte[]);
-    method public void setSubjectPublicKey(java.security.PublicKey);
-    method public void setSubjectPublicKey(byte[]) throws java.io.IOException;
-    method public void setSubjectPublicKeyAlgID(String) throws java.io.IOException;
-  }
-
-  public abstract class X509Certificate extends java.security.cert.Certificate implements java.security.cert.X509Extension {
-    ctor protected X509Certificate();
-    method public abstract void checkValidity() throws java.security.cert.CertificateExpiredException, java.security.cert.CertificateNotYetValidException;
-    method public abstract void checkValidity(java.util.Date) throws java.security.cert.CertificateExpiredException, java.security.cert.CertificateNotYetValidException;
-    method public abstract int getBasicConstraints();
-    method public java.util.List<java.lang.String> getExtendedKeyUsage() throws java.security.cert.CertificateParsingException;
-    method public java.util.Collection<java.util.List<?>> getIssuerAlternativeNames() throws java.security.cert.CertificateParsingException;
-    method public abstract java.security.Principal getIssuerDN();
-    method public abstract boolean[] getIssuerUniqueID();
-    method public javax.security.auth.x500.X500Principal getIssuerX500Principal();
-    method public abstract boolean[] getKeyUsage();
-    method public abstract java.util.Date getNotAfter();
-    method public abstract java.util.Date getNotBefore();
-    method public abstract java.math.BigInteger getSerialNumber();
-    method public abstract String getSigAlgName();
-    method public abstract String getSigAlgOID();
-    method public abstract byte[] getSigAlgParams();
-    method public abstract byte[] getSignature();
-    method public java.util.Collection<java.util.List<?>> getSubjectAlternativeNames() throws java.security.cert.CertificateParsingException;
-    method public abstract java.security.Principal getSubjectDN();
-    method public abstract boolean[] getSubjectUniqueID();
-    method public javax.security.auth.x500.X500Principal getSubjectX500Principal();
-    method public abstract byte[] getTBSCertificate() throws java.security.cert.CertificateEncodingException;
-    method public abstract int getVersion();
-  }
-
-  public interface X509Extension {
-    method public java.util.Set<java.lang.String> getCriticalExtensionOIDs();
-    method public byte[] getExtensionValue(String);
-    method public java.util.Set<java.lang.String> getNonCriticalExtensionOIDs();
-    method public boolean hasUnsupportedCriticalExtension();
-  }
-
-}
-
-package java.security.interfaces {
-
-  public interface DSAKey {
-    method public java.security.interfaces.DSAParams getParams();
-  }
-
-  public interface DSAKeyPairGenerator {
-    method public void initialize(java.security.interfaces.DSAParams, java.security.SecureRandom) throws java.security.InvalidParameterException;
-    method public void initialize(int, boolean, java.security.SecureRandom) throws java.security.InvalidParameterException;
-  }
-
-  public interface DSAParams {
-    method public java.math.BigInteger getG();
-    method public java.math.BigInteger getP();
-    method public java.math.BigInteger getQ();
-  }
-
-  public interface DSAPrivateKey extends java.security.interfaces.DSAKey java.security.PrivateKey {
-    method public java.math.BigInteger getX();
-    field public static final long serialVersionUID = 7776497482533790279L; // 0x6bebab423b256247L
-  }
-
-  public interface DSAPublicKey extends java.security.interfaces.DSAKey java.security.PublicKey {
-    method public java.math.BigInteger getY();
-    field public static final long serialVersionUID = 1234526332779022332L; // 0x1121eb28ab28c7fcL
-  }
-
-  public interface ECKey {
-    method public java.security.spec.ECParameterSpec getParams();
-  }
-
-  public interface ECPrivateKey extends java.security.PrivateKey java.security.interfaces.ECKey {
-    method public java.math.BigInteger getS();
-    field public static final long serialVersionUID = -7896394956925609184L; // 0x926a5e9fa2435b20L
-  }
-
-  public interface ECPublicKey extends java.security.PublicKey java.security.interfaces.ECKey {
-    method public java.security.spec.ECPoint getW();
-    field public static final long serialVersionUID = -3314988629879632826L; // 0xd1fecb679990cc46L
-  }
-
-  public interface RSAKey {
-    method public java.math.BigInteger getModulus();
-  }
-
-  public interface RSAMultiPrimePrivateCrtKey extends java.security.interfaces.RSAPrivateKey {
-    method public java.math.BigInteger getCrtCoefficient();
-    method public java.security.spec.RSAOtherPrimeInfo[] getOtherPrimeInfo();
-    method public java.math.BigInteger getPrimeExponentP();
-    method public java.math.BigInteger getPrimeExponentQ();
-    method public java.math.BigInteger getPrimeP();
-    method public java.math.BigInteger getPrimeQ();
-    method public java.math.BigInteger getPublicExponent();
-    field public static final long serialVersionUID = 618058533534628008L; // 0x893c8f62dbaf8a8L
-  }
-
-  public interface RSAPrivateCrtKey extends java.security.interfaces.RSAPrivateKey {
-    method public java.math.BigInteger getCrtCoefficient();
-    method public java.math.BigInteger getPrimeExponentP();
-    method public java.math.BigInteger getPrimeExponentQ();
-    method public java.math.BigInteger getPrimeP();
-    method public java.math.BigInteger getPrimeQ();
-    method public java.math.BigInteger getPublicExponent();
-    field public static final long serialVersionUID = -5682214253527700368L; // 0xb124b83df8d1ec70L
-  }
-
-  public interface RSAPrivateKey extends java.security.PrivateKey java.security.interfaces.RSAKey {
-    method public java.math.BigInteger getPrivateExponent();
-    field public static final long serialVersionUID = 5187144804936595022L; // 0x47fc70b7a8c2364eL
-  }
-
-  public interface RSAPublicKey extends java.security.PublicKey java.security.interfaces.RSAKey {
-    method public java.math.BigInteger getPublicExponent();
-    field public static final long serialVersionUID = -8727434096241101194L; // 0x86e1ecedeceab676L
-  }
-
-}
-
-package java.security.spec {
-
-  public interface AlgorithmParameterSpec {
-  }
-
-  public class DSAParameterSpec implements java.security.spec.AlgorithmParameterSpec java.security.interfaces.DSAParams {
-    ctor public DSAParameterSpec(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
-    method public java.math.BigInteger getG();
-    method public java.math.BigInteger getP();
-    method public java.math.BigInteger getQ();
-  }
-
-  public class DSAPrivateKeySpec implements java.security.spec.KeySpec {
-    ctor public DSAPrivateKeySpec(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
-    method public java.math.BigInteger getG();
-    method public java.math.BigInteger getP();
-    method public java.math.BigInteger getQ();
-    method public java.math.BigInteger getX();
-  }
-
-  public class DSAPublicKeySpec implements java.security.spec.KeySpec {
-    ctor public DSAPublicKeySpec(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
-    method public java.math.BigInteger getG();
-    method public java.math.BigInteger getP();
-    method public java.math.BigInteger getQ();
-    method public java.math.BigInteger getY();
-  }
-
-  public interface ECField {
-    method public int getFieldSize();
-  }
-
-  public class ECFieldF2m implements java.security.spec.ECField {
-    ctor public ECFieldF2m(int);
-    ctor public ECFieldF2m(int, java.math.BigInteger);
-    ctor public ECFieldF2m(int, int[]);
-    method public int getFieldSize();
-    method public int getM();
-    method public int[] getMidTermsOfReductionPolynomial();
-    method public java.math.BigInteger getReductionPolynomial();
-  }
-
-  public class ECFieldFp implements java.security.spec.ECField {
-    ctor public ECFieldFp(java.math.BigInteger);
-    method public int getFieldSize();
-    method public java.math.BigInteger getP();
-  }
-
-  public class ECGenParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public ECGenParameterSpec(String);
-    method public String getName();
-  }
-
-  public class ECParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public ECParameterSpec(java.security.spec.EllipticCurve, java.security.spec.ECPoint, java.math.BigInteger, int);
-    method public int getCofactor();
-    method public java.security.spec.EllipticCurve getCurve();
-    method public java.security.spec.ECPoint getGenerator();
-    method public java.math.BigInteger getOrder();
-  }
-
-  public class ECPoint {
-    ctor public ECPoint(java.math.BigInteger, java.math.BigInteger);
-    method public java.math.BigInteger getAffineX();
-    method public java.math.BigInteger getAffineY();
-    field public static final java.security.spec.ECPoint POINT_INFINITY;
-  }
-
-  public class ECPrivateKeySpec implements java.security.spec.KeySpec {
-    ctor public ECPrivateKeySpec(java.math.BigInteger, java.security.spec.ECParameterSpec);
-    method public java.security.spec.ECParameterSpec getParams();
-    method public java.math.BigInteger getS();
-  }
-
-  public class ECPublicKeySpec implements java.security.spec.KeySpec {
-    ctor public ECPublicKeySpec(java.security.spec.ECPoint, java.security.spec.ECParameterSpec);
-    method public java.security.spec.ECParameterSpec getParams();
-    method public java.security.spec.ECPoint getW();
-  }
-
-  public class EllipticCurve {
-    ctor public EllipticCurve(java.security.spec.ECField, java.math.BigInteger, java.math.BigInteger);
-    ctor public EllipticCurve(java.security.spec.ECField, java.math.BigInteger, java.math.BigInteger, byte[]);
-    method public java.math.BigInteger getA();
-    method public java.math.BigInteger getB();
-    method public java.security.spec.ECField getField();
-    method public byte[] getSeed();
-  }
-
-  public abstract class EncodedKeySpec implements java.security.spec.KeySpec {
-    ctor public EncodedKeySpec(byte[]);
-    method public byte[] getEncoded();
-    method public abstract String getFormat();
-  }
-
-  public class InvalidKeySpecException extends java.security.GeneralSecurityException {
-    ctor public InvalidKeySpecException();
-    ctor public InvalidKeySpecException(String);
-    ctor public InvalidKeySpecException(String, Throwable);
-    ctor public InvalidKeySpecException(Throwable);
-  }
-
-  public class InvalidParameterSpecException extends java.security.GeneralSecurityException {
-    ctor public InvalidParameterSpecException();
-    ctor public InvalidParameterSpecException(String);
-  }
-
-  public interface KeySpec {
-  }
-
-  public class MGF1ParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public MGF1ParameterSpec(String);
-    method public String getDigestAlgorithm();
-    field public static final java.security.spec.MGF1ParameterSpec SHA1;
-    field public static final java.security.spec.MGF1ParameterSpec SHA224;
-    field public static final java.security.spec.MGF1ParameterSpec SHA256;
-    field public static final java.security.spec.MGF1ParameterSpec SHA384;
-    field public static final java.security.spec.MGF1ParameterSpec SHA512;
-  }
-
-  public class PKCS8EncodedKeySpec extends java.security.spec.EncodedKeySpec {
-    ctor public PKCS8EncodedKeySpec(byte[]);
-    method public final String getFormat();
-  }
-
-  public class PSSParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public PSSParameterSpec(String, String, java.security.spec.AlgorithmParameterSpec, int, int);
-    ctor public PSSParameterSpec(int);
-    method public String getDigestAlgorithm();
-    method public String getMGFAlgorithm();
-    method public java.security.spec.AlgorithmParameterSpec getMGFParameters();
-    method public int getSaltLength();
-    method public int getTrailerField();
-    field public static final java.security.spec.PSSParameterSpec DEFAULT;
-  }
-
-  public class RSAKeyGenParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public RSAKeyGenParameterSpec(int, java.math.BigInteger);
-    method public int getKeysize();
-    method public java.math.BigInteger getPublicExponent();
-    field public static final java.math.BigInteger F0;
-    field public static final java.math.BigInteger F4;
-  }
-
-  public class RSAMultiPrimePrivateCrtKeySpec extends java.security.spec.RSAPrivateKeySpec {
-    ctor public RSAMultiPrimePrivateCrtKeySpec(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.security.spec.RSAOtherPrimeInfo[]);
-    method public java.math.BigInteger getCrtCoefficient();
-    method public java.security.spec.RSAOtherPrimeInfo[] getOtherPrimeInfo();
-    method public java.math.BigInteger getPrimeExponentP();
-    method public java.math.BigInteger getPrimeExponentQ();
-    method public java.math.BigInteger getPrimeP();
-    method public java.math.BigInteger getPrimeQ();
-    method public java.math.BigInteger getPublicExponent();
-  }
-
-  public class RSAOtherPrimeInfo {
-    ctor public RSAOtherPrimeInfo(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
-    method public final java.math.BigInteger getCrtCoefficient();
-    method public final java.math.BigInteger getExponent();
-    method public final java.math.BigInteger getPrime();
-  }
-
-  public class RSAPrivateCrtKeySpec extends java.security.spec.RSAPrivateKeySpec {
-    ctor public RSAPrivateCrtKeySpec(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
-    method public java.math.BigInteger getCrtCoefficient();
-    method public java.math.BigInteger getPrimeExponentP();
-    method public java.math.BigInteger getPrimeExponentQ();
-    method public java.math.BigInteger getPrimeP();
-    method public java.math.BigInteger getPrimeQ();
-    method public java.math.BigInteger getPublicExponent();
-  }
-
-  public class RSAPrivateKeySpec implements java.security.spec.KeySpec {
-    ctor public RSAPrivateKeySpec(java.math.BigInteger, java.math.BigInteger);
-    method public java.math.BigInteger getModulus();
-    method public java.math.BigInteger getPrivateExponent();
-  }
-
-  public class RSAPublicKeySpec implements java.security.spec.KeySpec {
-    ctor public RSAPublicKeySpec(java.math.BigInteger, java.math.BigInteger);
-    method public java.math.BigInteger getModulus();
-    method public java.math.BigInteger getPublicExponent();
-  }
-
-  public class X509EncodedKeySpec extends java.security.spec.EncodedKeySpec {
-    ctor public X509EncodedKeySpec(byte[]);
-    method public final String getFormat();
-  }
-
-}
-
-package java.sql {
-
-  public interface Array {
-    method public void free() throws java.sql.SQLException;
-    method public Object getArray() throws java.sql.SQLException;
-    method public Object getArray(java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
-    method public Object getArray(long, int) throws java.sql.SQLException;
-    method public Object getArray(long, int, java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
-    method public int getBaseType() throws java.sql.SQLException;
-    method public String getBaseTypeName() throws java.sql.SQLException;
-    method public java.sql.ResultSet getResultSet() throws java.sql.SQLException;
-    method public java.sql.ResultSet getResultSet(java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
-    method public java.sql.ResultSet getResultSet(long, int) throws java.sql.SQLException;
-    method public java.sql.ResultSet getResultSet(long, int, java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
-  }
-
-  public class BatchUpdateException extends java.sql.SQLException {
-    ctor public BatchUpdateException(String, String, int, int[]);
-    ctor public BatchUpdateException(String, String, int[]);
-    ctor public BatchUpdateException(String, int[]);
-    ctor public BatchUpdateException(int[]);
-    ctor public BatchUpdateException();
-    ctor public BatchUpdateException(Throwable);
-    ctor public BatchUpdateException(int[], Throwable);
-    ctor public BatchUpdateException(String, int[], Throwable);
-    ctor public BatchUpdateException(String, String, int[], Throwable);
-    ctor public BatchUpdateException(String, String, int, int[], Throwable);
-    method public int[] getUpdateCounts();
-  }
-
-  public interface Blob {
-    method public void free() throws java.sql.SQLException;
-    method public java.io.InputStream getBinaryStream() throws java.sql.SQLException;
-    method public java.io.InputStream getBinaryStream(long, long) throws java.sql.SQLException;
-    method public byte[] getBytes(long, int) throws java.sql.SQLException;
-    method public long length() throws java.sql.SQLException;
-    method public long position(byte[], long) throws java.sql.SQLException;
-    method public long position(java.sql.Blob, long) throws java.sql.SQLException;
-    method public java.io.OutputStream setBinaryStream(long) throws java.sql.SQLException;
-    method public int setBytes(long, byte[]) throws java.sql.SQLException;
-    method public int setBytes(long, byte[], int, int) throws java.sql.SQLException;
-    method public void truncate(long) throws java.sql.SQLException;
-  }
-
-  public interface CallableStatement extends java.sql.PreparedStatement {
-    method public java.sql.Array getArray(int) throws java.sql.SQLException;
-    method public java.sql.Array getArray(String) throws java.sql.SQLException;
-    method @Deprecated public java.math.BigDecimal getBigDecimal(int, int) throws java.sql.SQLException;
-    method public java.math.BigDecimal getBigDecimal(int) throws java.sql.SQLException;
-    method public java.math.BigDecimal getBigDecimal(String) throws java.sql.SQLException;
-    method public java.sql.Blob getBlob(int) throws java.sql.SQLException;
-    method public java.sql.Blob getBlob(String) throws java.sql.SQLException;
-    method public boolean getBoolean(int) throws java.sql.SQLException;
-    method public boolean getBoolean(String) throws java.sql.SQLException;
-    method public byte getByte(int) throws java.sql.SQLException;
-    method public byte getByte(String) throws java.sql.SQLException;
-    method public byte[] getBytes(int) throws java.sql.SQLException;
-    method public byte[] getBytes(String) throws java.sql.SQLException;
-    method public java.io.Reader getCharacterStream(int) throws java.sql.SQLException;
-    method public java.io.Reader getCharacterStream(String) throws java.sql.SQLException;
-    method public java.sql.Clob getClob(int) throws java.sql.SQLException;
-    method public java.sql.Clob getClob(String) throws java.sql.SQLException;
-    method public java.sql.Date getDate(int) throws java.sql.SQLException;
-    method public java.sql.Date getDate(int, java.util.Calendar) throws java.sql.SQLException;
-    method public java.sql.Date getDate(String) throws java.sql.SQLException;
-    method public java.sql.Date getDate(String, java.util.Calendar) throws java.sql.SQLException;
-    method public double getDouble(int) throws java.sql.SQLException;
-    method public double getDouble(String) throws java.sql.SQLException;
-    method public float getFloat(int) throws java.sql.SQLException;
-    method public float getFloat(String) throws java.sql.SQLException;
-    method public int getInt(int) throws java.sql.SQLException;
-    method public int getInt(String) throws java.sql.SQLException;
-    method public long getLong(int) throws java.sql.SQLException;
-    method public long getLong(String) throws java.sql.SQLException;
-    method public java.io.Reader getNCharacterStream(int) throws java.sql.SQLException;
-    method public java.io.Reader getNCharacterStream(String) throws java.sql.SQLException;
-    method public java.sql.NClob getNClob(int) throws java.sql.SQLException;
-    method public java.sql.NClob getNClob(String) throws java.sql.SQLException;
-    method public String getNString(int) throws java.sql.SQLException;
-    method public String getNString(String) throws java.sql.SQLException;
-    method public Object getObject(int) throws java.sql.SQLException;
-    method public Object getObject(int, java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
-    method public Object getObject(String) throws java.sql.SQLException;
-    method public Object getObject(String, java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
-    method public java.sql.Ref getRef(int) throws java.sql.SQLException;
-    method public java.sql.Ref getRef(String) throws java.sql.SQLException;
-    method public java.sql.RowId getRowId(int) throws java.sql.SQLException;
-    method public java.sql.RowId getRowId(String) throws java.sql.SQLException;
-    method public java.sql.SQLXML getSQLXML(int) throws java.sql.SQLException;
-    method public java.sql.SQLXML getSQLXML(String) throws java.sql.SQLException;
-    method public short getShort(int) throws java.sql.SQLException;
-    method public short getShort(String) throws java.sql.SQLException;
-    method public String getString(int) throws java.sql.SQLException;
-    method public String getString(String) throws java.sql.SQLException;
-    method public java.sql.Time getTime(int) throws java.sql.SQLException;
-    method public java.sql.Time getTime(int, java.util.Calendar) throws java.sql.SQLException;
-    method public java.sql.Time getTime(String) throws java.sql.SQLException;
-    method public java.sql.Time getTime(String, java.util.Calendar) throws java.sql.SQLException;
-    method public java.sql.Timestamp getTimestamp(int) throws java.sql.SQLException;
-    method public java.sql.Timestamp getTimestamp(int, java.util.Calendar) throws java.sql.SQLException;
-    method public java.sql.Timestamp getTimestamp(String) throws java.sql.SQLException;
-    method public java.sql.Timestamp getTimestamp(String, java.util.Calendar) throws java.sql.SQLException;
-    method public java.net.URL getURL(int) throws java.sql.SQLException;
-    method public java.net.URL getURL(String) throws java.sql.SQLException;
-    method public void registerOutParameter(int, int) throws java.sql.SQLException;
-    method public void registerOutParameter(int, int, int) throws java.sql.SQLException;
-    method public void registerOutParameter(int, int, String) throws java.sql.SQLException;
-    method public void registerOutParameter(String, int) throws java.sql.SQLException;
-    method public void registerOutParameter(String, int, int) throws java.sql.SQLException;
-    method public void registerOutParameter(String, int, String) throws java.sql.SQLException;
-    method public void setAsciiStream(String, java.io.InputStream, int) throws java.sql.SQLException;
-    method public void setAsciiStream(String, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void setAsciiStream(String, java.io.InputStream) throws java.sql.SQLException;
-    method public void setBigDecimal(String, java.math.BigDecimal) throws java.sql.SQLException;
-    method public void setBinaryStream(String, java.io.InputStream, int) throws java.sql.SQLException;
-    method public void setBinaryStream(String, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void setBinaryStream(String, java.io.InputStream) throws java.sql.SQLException;
-    method public void setBlob(String, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void setBlob(String, java.sql.Blob) throws java.sql.SQLException;
-    method public void setBlob(String, java.io.InputStream) throws java.sql.SQLException;
-    method public void setBoolean(String, boolean) throws java.sql.SQLException;
-    method public void setByte(String, byte) throws java.sql.SQLException;
-    method public void setBytes(String, byte[]) throws java.sql.SQLException;
-    method public void setCharacterStream(String, java.io.Reader, int) throws java.sql.SQLException;
-    method public void setCharacterStream(String, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setCharacterStream(String, java.io.Reader) throws java.sql.SQLException;
-    method public void setClob(String, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setClob(String, java.sql.Clob) throws java.sql.SQLException;
-    method public void setClob(String, java.io.Reader) throws java.sql.SQLException;
-    method public void setDate(String, java.sql.Date) throws java.sql.SQLException;
-    method public void setDate(String, java.sql.Date, java.util.Calendar) throws java.sql.SQLException;
-    method public void setDouble(String, double) throws java.sql.SQLException;
-    method public void setFloat(String, float) throws java.sql.SQLException;
-    method public void setInt(String, int) throws java.sql.SQLException;
-    method public void setLong(String, long) throws java.sql.SQLException;
-    method public void setNCharacterStream(String, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setNCharacterStream(String, java.io.Reader) throws java.sql.SQLException;
-    method public void setNClob(String, java.sql.NClob) throws java.sql.SQLException;
-    method public void setNClob(String, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setNClob(String, java.io.Reader) throws java.sql.SQLException;
-    method public void setNString(String, String) throws java.sql.SQLException;
-    method public void setNull(String, int) throws java.sql.SQLException;
-    method public void setNull(String, int, String) throws java.sql.SQLException;
-    method public void setObject(String, Object, int, int) throws java.sql.SQLException;
-    method public void setObject(String, Object, int) throws java.sql.SQLException;
-    method public void setObject(String, Object) throws java.sql.SQLException;
-    method public void setRowId(String, java.sql.RowId) throws java.sql.SQLException;
-    method public void setSQLXML(String, java.sql.SQLXML) throws java.sql.SQLException;
-    method public void setShort(String, short) throws java.sql.SQLException;
-    method public void setString(String, String) throws java.sql.SQLException;
-    method public void setTime(String, java.sql.Time) throws java.sql.SQLException;
-    method public void setTime(String, java.sql.Time, java.util.Calendar) throws java.sql.SQLException;
-    method public void setTimestamp(String, java.sql.Timestamp) throws java.sql.SQLException;
-    method public void setTimestamp(String, java.sql.Timestamp, java.util.Calendar) throws java.sql.SQLException;
-    method public void setURL(String, java.net.URL) throws java.sql.SQLException;
-    method public boolean wasNull() throws java.sql.SQLException;
-  }
-
-  public enum ClientInfoStatus {
-    enum_constant public static final java.sql.ClientInfoStatus REASON_UNKNOWN;
-    enum_constant public static final java.sql.ClientInfoStatus REASON_UNKNOWN_PROPERTY;
-    enum_constant public static final java.sql.ClientInfoStatus REASON_VALUE_INVALID;
-    enum_constant public static final java.sql.ClientInfoStatus REASON_VALUE_TRUNCATED;
-  }
-
-  public interface Clob {
-    method public void free() throws java.sql.SQLException;
-    method public java.io.InputStream getAsciiStream() throws java.sql.SQLException;
-    method public java.io.Reader getCharacterStream() throws java.sql.SQLException;
-    method public java.io.Reader getCharacterStream(long, long) throws java.sql.SQLException;
-    method public String getSubString(long, int) throws java.sql.SQLException;
-    method public long length() throws java.sql.SQLException;
-    method public long position(String, long) throws java.sql.SQLException;
-    method public long position(java.sql.Clob, long) throws java.sql.SQLException;
-    method public java.io.OutputStream setAsciiStream(long) throws java.sql.SQLException;
-    method public java.io.Writer setCharacterStream(long) throws java.sql.SQLException;
-    method public int setString(long, String) throws java.sql.SQLException;
-    method public int setString(long, String, int, int) throws java.sql.SQLException;
-    method public void truncate(long) throws java.sql.SQLException;
-  }
-
-  public interface Connection extends java.sql.Wrapper java.lang.AutoCloseable {
-    method public void clearWarnings() throws java.sql.SQLException;
-    method public void close() throws java.sql.SQLException;
-    method public void commit() throws java.sql.SQLException;
-    method public java.sql.Array createArrayOf(String, Object[]) throws java.sql.SQLException;
-    method public java.sql.Blob createBlob() throws java.sql.SQLException;
-    method public java.sql.Clob createClob() throws java.sql.SQLException;
-    method public java.sql.NClob createNClob() throws java.sql.SQLException;
-    method public java.sql.SQLXML createSQLXML() throws java.sql.SQLException;
-    method public java.sql.Statement createStatement() throws java.sql.SQLException;
-    method public java.sql.Statement createStatement(int, int) throws java.sql.SQLException;
-    method public java.sql.Statement createStatement(int, int, int) throws java.sql.SQLException;
-    method public java.sql.Struct createStruct(String, Object[]) throws java.sql.SQLException;
-    method public boolean getAutoCommit() throws java.sql.SQLException;
-    method public String getCatalog() throws java.sql.SQLException;
-    method public String getClientInfo(String) throws java.sql.SQLException;
-    method public java.util.Properties getClientInfo() throws java.sql.SQLException;
-    method public int getHoldability() throws java.sql.SQLException;
-    method public java.sql.DatabaseMetaData getMetaData() throws java.sql.SQLException;
-    method public int getTransactionIsolation() throws java.sql.SQLException;
-    method public java.util.Map<java.lang.String,java.lang.Class<?>> getTypeMap() throws java.sql.SQLException;
-    method public java.sql.SQLWarning getWarnings() throws java.sql.SQLException;
-    method public boolean isClosed() throws java.sql.SQLException;
-    method public boolean isReadOnly() throws java.sql.SQLException;
-    method public boolean isValid(int) throws java.sql.SQLException;
-    method public String nativeSQL(String) throws java.sql.SQLException;
-    method public java.sql.CallableStatement prepareCall(String) throws java.sql.SQLException;
-    method public java.sql.CallableStatement prepareCall(String, int, int) throws java.sql.SQLException;
-    method public java.sql.CallableStatement prepareCall(String, int, int, int) throws java.sql.SQLException;
-    method public java.sql.PreparedStatement prepareStatement(String) throws java.sql.SQLException;
-    method public java.sql.PreparedStatement prepareStatement(String, int, int) throws java.sql.SQLException;
-    method public java.sql.PreparedStatement prepareStatement(String, int, int, int) throws java.sql.SQLException;
-    method public java.sql.PreparedStatement prepareStatement(String, int) throws java.sql.SQLException;
-    method public java.sql.PreparedStatement prepareStatement(String, int[]) throws java.sql.SQLException;
-    method public java.sql.PreparedStatement prepareStatement(String, String[]) throws java.sql.SQLException;
-    method public void releaseSavepoint(java.sql.Savepoint) throws java.sql.SQLException;
-    method public void rollback() throws java.sql.SQLException;
-    method public void rollback(java.sql.Savepoint) throws java.sql.SQLException;
-    method public void setAutoCommit(boolean) throws java.sql.SQLException;
-    method public void setCatalog(String) throws java.sql.SQLException;
-    method public void setClientInfo(String, String) throws java.sql.SQLClientInfoException;
-    method public void setClientInfo(java.util.Properties) throws java.sql.SQLClientInfoException;
-    method public void setHoldability(int) throws java.sql.SQLException;
-    method public void setReadOnly(boolean) throws java.sql.SQLException;
-    method public java.sql.Savepoint setSavepoint() throws java.sql.SQLException;
-    method public java.sql.Savepoint setSavepoint(String) throws java.sql.SQLException;
-    method public void setTransactionIsolation(int) throws java.sql.SQLException;
-    method public void setTypeMap(java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
-    field public static final int TRANSACTION_NONE = 0; // 0x0
-    field public static final int TRANSACTION_READ_COMMITTED = 2; // 0x2
-    field public static final int TRANSACTION_READ_UNCOMMITTED = 1; // 0x1
-    field public static final int TRANSACTION_REPEATABLE_READ = 4; // 0x4
-    field public static final int TRANSACTION_SERIALIZABLE = 8; // 0x8
-  }
-
-  public class DataTruncation extends java.sql.SQLWarning {
-    ctor public DataTruncation(int, boolean, boolean, int, int);
-    ctor public DataTruncation(int, boolean, boolean, int, int, Throwable);
-    method public int getDataSize();
-    method public int getIndex();
-    method public boolean getParameter();
-    method public boolean getRead();
-    method public int getTransferSize();
-  }
-
-  public interface DatabaseMetaData extends java.sql.Wrapper {
-    method public boolean allProceduresAreCallable() throws java.sql.SQLException;
-    method public boolean allTablesAreSelectable() throws java.sql.SQLException;
-    method public boolean autoCommitFailureClosesAllResultSets() throws java.sql.SQLException;
-    method public boolean dataDefinitionCausesTransactionCommit() throws java.sql.SQLException;
-    method public boolean dataDefinitionIgnoredInTransactions() throws java.sql.SQLException;
-    method public boolean deletesAreDetected(int) throws java.sql.SQLException;
-    method public boolean doesMaxRowSizeIncludeBlobs() throws java.sql.SQLException;
-    method public java.sql.ResultSet getAttributes(String, String, String, String) throws java.sql.SQLException;
-    method public java.sql.ResultSet getBestRowIdentifier(String, String, String, int, boolean) throws java.sql.SQLException;
-    method public String getCatalogSeparator() throws java.sql.SQLException;
-    method public String getCatalogTerm() throws java.sql.SQLException;
-    method public java.sql.ResultSet getCatalogs() throws java.sql.SQLException;
-    method public java.sql.ResultSet getClientInfoProperties() throws java.sql.SQLException;
-    method public java.sql.ResultSet getColumnPrivileges(String, String, String, String) throws java.sql.SQLException;
-    method public java.sql.ResultSet getColumns(String, String, String, String) throws java.sql.SQLException;
-    method public java.sql.Connection getConnection() throws java.sql.SQLException;
-    method public java.sql.ResultSet getCrossReference(String, String, String, String, String, String) throws java.sql.SQLException;
-    method public int getDatabaseMajorVersion() throws java.sql.SQLException;
-    method public int getDatabaseMinorVersion() throws java.sql.SQLException;
-    method public String getDatabaseProductName() throws java.sql.SQLException;
-    method public String getDatabaseProductVersion() throws java.sql.SQLException;
-    method public int getDefaultTransactionIsolation() throws java.sql.SQLException;
-    method public int getDriverMajorVersion();
-    method public int getDriverMinorVersion();
-    method public String getDriverName() throws java.sql.SQLException;
-    method public String getDriverVersion() throws java.sql.SQLException;
-    method public java.sql.ResultSet getExportedKeys(String, String, String) throws java.sql.SQLException;
-    method public String getExtraNameCharacters() throws java.sql.SQLException;
-    method public java.sql.ResultSet getFunctionColumns(String, String, String, String) throws java.sql.SQLException;
-    method public java.sql.ResultSet getFunctions(String, String, String) throws java.sql.SQLException;
-    method public String getIdentifierQuoteString() throws java.sql.SQLException;
-    method public java.sql.ResultSet getImportedKeys(String, String, String) throws java.sql.SQLException;
-    method public java.sql.ResultSet getIndexInfo(String, String, String, boolean, boolean) throws java.sql.SQLException;
-    method public int getJDBCMajorVersion() throws java.sql.SQLException;
-    method public int getJDBCMinorVersion() throws java.sql.SQLException;
-    method public int getMaxBinaryLiteralLength() throws java.sql.SQLException;
-    method public int getMaxCatalogNameLength() throws java.sql.SQLException;
-    method public int getMaxCharLiteralLength() throws java.sql.SQLException;
-    method public int getMaxColumnNameLength() throws java.sql.SQLException;
-    method public int getMaxColumnsInGroupBy() throws java.sql.SQLException;
-    method public int getMaxColumnsInIndex() throws java.sql.SQLException;
-    method public int getMaxColumnsInOrderBy() throws java.sql.SQLException;
-    method public int getMaxColumnsInSelect() throws java.sql.SQLException;
-    method public int getMaxColumnsInTable() throws java.sql.SQLException;
-    method public int getMaxConnections() throws java.sql.SQLException;
-    method public int getMaxCursorNameLength() throws java.sql.SQLException;
-    method public int getMaxIndexLength() throws java.sql.SQLException;
-    method public int getMaxProcedureNameLength() throws java.sql.SQLException;
-    method public int getMaxRowSize() throws java.sql.SQLException;
-    method public int getMaxSchemaNameLength() throws java.sql.SQLException;
-    method public int getMaxStatementLength() throws java.sql.SQLException;
-    method public int getMaxStatements() throws java.sql.SQLException;
-    method public int getMaxTableNameLength() throws java.sql.SQLException;
-    method public int getMaxTablesInSelect() throws java.sql.SQLException;
-    method public int getMaxUserNameLength() throws java.sql.SQLException;
-    method public String getNumericFunctions() throws java.sql.SQLException;
-    method public java.sql.ResultSet getPrimaryKeys(String, String, String) throws java.sql.SQLException;
-    method public java.sql.ResultSet getProcedureColumns(String, String, String, String) throws java.sql.SQLException;
-    method public String getProcedureTerm() throws java.sql.SQLException;
-    method public java.sql.ResultSet getProcedures(String, String, String) throws java.sql.SQLException;
-    method public int getResultSetHoldability() throws java.sql.SQLException;
-    method public java.sql.RowIdLifetime getRowIdLifetime() throws java.sql.SQLException;
-    method public String getSQLKeywords() throws java.sql.SQLException;
-    method public int getSQLStateType() throws java.sql.SQLException;
-    method public String getSchemaTerm() throws java.sql.SQLException;
-    method public java.sql.ResultSet getSchemas() throws java.sql.SQLException;
-    method public java.sql.ResultSet getSchemas(String, String) throws java.sql.SQLException;
-    method public String getSearchStringEscape() throws java.sql.SQLException;
-    method public String getStringFunctions() throws java.sql.SQLException;
-    method public java.sql.ResultSet getSuperTables(String, String, String) throws java.sql.SQLException;
-    method public java.sql.ResultSet getSuperTypes(String, String, String) throws java.sql.SQLException;
-    method public String getSystemFunctions() throws java.sql.SQLException;
-    method public java.sql.ResultSet getTablePrivileges(String, String, String) throws java.sql.SQLException;
-    method public java.sql.ResultSet getTableTypes() throws java.sql.SQLException;
-    method public java.sql.ResultSet getTables(String, String, String, String[]) throws java.sql.SQLException;
-    method public String getTimeDateFunctions() throws java.sql.SQLException;
-    method public java.sql.ResultSet getTypeInfo() throws java.sql.SQLException;
-    method public java.sql.ResultSet getUDTs(String, String, String, int[]) throws java.sql.SQLException;
-    method public String getURL() throws java.sql.SQLException;
-    method public String getUserName() throws java.sql.SQLException;
-    method public java.sql.ResultSet getVersionColumns(String, String, String) throws java.sql.SQLException;
-    method public boolean insertsAreDetected(int) throws java.sql.SQLException;
-    method public boolean isCatalogAtStart() throws java.sql.SQLException;
-    method public boolean isReadOnly() throws java.sql.SQLException;
-    method public boolean locatorsUpdateCopy() throws java.sql.SQLException;
-    method public boolean nullPlusNonNullIsNull() throws java.sql.SQLException;
-    method public boolean nullsAreSortedAtEnd() throws java.sql.SQLException;
-    method public boolean nullsAreSortedAtStart() throws java.sql.SQLException;
-    method public boolean nullsAreSortedHigh() throws java.sql.SQLException;
-    method public boolean nullsAreSortedLow() throws java.sql.SQLException;
-    method public boolean othersDeletesAreVisible(int) throws java.sql.SQLException;
-    method public boolean othersInsertsAreVisible(int) throws java.sql.SQLException;
-    method public boolean othersUpdatesAreVisible(int) throws java.sql.SQLException;
-    method public boolean ownDeletesAreVisible(int) throws java.sql.SQLException;
-    method public boolean ownInsertsAreVisible(int) throws java.sql.SQLException;
-    method public boolean ownUpdatesAreVisible(int) throws java.sql.SQLException;
-    method public boolean storesLowerCaseIdentifiers() throws java.sql.SQLException;
-    method public boolean storesLowerCaseQuotedIdentifiers() throws java.sql.SQLException;
-    method public boolean storesMixedCaseIdentifiers() throws java.sql.SQLException;
-    method public boolean storesMixedCaseQuotedIdentifiers() throws java.sql.SQLException;
-    method public boolean storesUpperCaseIdentifiers() throws java.sql.SQLException;
-    method public boolean storesUpperCaseQuotedIdentifiers() throws java.sql.SQLException;
-    method public boolean supportsANSI92EntryLevelSQL() throws java.sql.SQLException;
-    method public boolean supportsANSI92FullSQL() throws java.sql.SQLException;
-    method public boolean supportsANSI92IntermediateSQL() throws java.sql.SQLException;
-    method public boolean supportsAlterTableWithAddColumn() throws java.sql.SQLException;
-    method public boolean supportsAlterTableWithDropColumn() throws java.sql.SQLException;
-    method public boolean supportsBatchUpdates() throws java.sql.SQLException;
-    method public boolean supportsCatalogsInDataManipulation() throws java.sql.SQLException;
-    method public boolean supportsCatalogsInIndexDefinitions() throws java.sql.SQLException;
-    method public boolean supportsCatalogsInPrivilegeDefinitions() throws java.sql.SQLException;
-    method public boolean supportsCatalogsInProcedureCalls() throws java.sql.SQLException;
-    method public boolean supportsCatalogsInTableDefinitions() throws java.sql.SQLException;
-    method public boolean supportsColumnAliasing() throws java.sql.SQLException;
-    method public boolean supportsConvert() throws java.sql.SQLException;
-    method public boolean supportsConvert(int, int) throws java.sql.SQLException;
-    method public boolean supportsCoreSQLGrammar() throws java.sql.SQLException;
-    method public boolean supportsCorrelatedSubqueries() throws java.sql.SQLException;
-    method public boolean supportsDataDefinitionAndDataManipulationTransactions() throws java.sql.SQLException;
-    method public boolean supportsDataManipulationTransactionsOnly() throws java.sql.SQLException;
-    method public boolean supportsDifferentTableCorrelationNames() throws java.sql.SQLException;
-    method public boolean supportsExpressionsInOrderBy() throws java.sql.SQLException;
-    method public boolean supportsExtendedSQLGrammar() throws java.sql.SQLException;
-    method public boolean supportsFullOuterJoins() throws java.sql.SQLException;
-    method public boolean supportsGetGeneratedKeys() throws java.sql.SQLException;
-    method public boolean supportsGroupBy() throws java.sql.SQLException;
-    method public boolean supportsGroupByBeyondSelect() throws java.sql.SQLException;
-    method public boolean supportsGroupByUnrelated() throws java.sql.SQLException;
-    method public boolean supportsIntegrityEnhancementFacility() throws java.sql.SQLException;
-    method public boolean supportsLikeEscapeClause() throws java.sql.SQLException;
-    method public boolean supportsLimitedOuterJoins() throws java.sql.SQLException;
-    method public boolean supportsMinimumSQLGrammar() throws java.sql.SQLException;
-    method public boolean supportsMixedCaseIdentifiers() throws java.sql.SQLException;
-    method public boolean supportsMixedCaseQuotedIdentifiers() throws java.sql.SQLException;
-    method public boolean supportsMultipleOpenResults() throws java.sql.SQLException;
-    method public boolean supportsMultipleResultSets() throws java.sql.SQLException;
-    method public boolean supportsMultipleTransactions() throws java.sql.SQLException;
-    method public boolean supportsNamedParameters() throws java.sql.SQLException;
-    method public boolean supportsNonNullableColumns() throws java.sql.SQLException;
-    method public boolean supportsOpenCursorsAcrossCommit() throws java.sql.SQLException;
-    method public boolean supportsOpenCursorsAcrossRollback() throws java.sql.SQLException;
-    method public boolean supportsOpenStatementsAcrossCommit() throws java.sql.SQLException;
-    method public boolean supportsOpenStatementsAcrossRollback() throws java.sql.SQLException;
-    method public boolean supportsOrderByUnrelated() throws java.sql.SQLException;
-    method public boolean supportsOuterJoins() throws java.sql.SQLException;
-    method public boolean supportsPositionedDelete() throws java.sql.SQLException;
-    method public boolean supportsPositionedUpdate() throws java.sql.SQLException;
-    method public boolean supportsResultSetConcurrency(int, int) throws java.sql.SQLException;
-    method public boolean supportsResultSetHoldability(int) throws java.sql.SQLException;
-    method public boolean supportsResultSetType(int) throws java.sql.SQLException;
-    method public boolean supportsSavepoints() throws java.sql.SQLException;
-    method public boolean supportsSchemasInDataManipulation() throws java.sql.SQLException;
-    method public boolean supportsSchemasInIndexDefinitions() throws java.sql.SQLException;
-    method public boolean supportsSchemasInPrivilegeDefinitions() throws java.sql.SQLException;
-    method public boolean supportsSchemasInProcedureCalls() throws java.sql.SQLException;
-    method public boolean supportsSchemasInTableDefinitions() throws java.sql.SQLException;
-    method public boolean supportsSelectForUpdate() throws java.sql.SQLException;
-    method public boolean supportsStatementPooling() throws java.sql.SQLException;
-    method public boolean supportsStoredFunctionsUsingCallSyntax() throws java.sql.SQLException;
-    method public boolean supportsStoredProcedures() throws java.sql.SQLException;
-    method public boolean supportsSubqueriesInComparisons() throws java.sql.SQLException;
-    method public boolean supportsSubqueriesInExists() throws java.sql.SQLException;
-    method public boolean supportsSubqueriesInIns() throws java.sql.SQLException;
-    method public boolean supportsSubqueriesInQuantifieds() throws java.sql.SQLException;
-    method public boolean supportsTableCorrelationNames() throws java.sql.SQLException;
-    method public boolean supportsTransactionIsolationLevel(int) throws java.sql.SQLException;
-    method public boolean supportsTransactions() throws java.sql.SQLException;
-    method public boolean supportsUnion() throws java.sql.SQLException;
-    method public boolean supportsUnionAll() throws java.sql.SQLException;
-    method public boolean updatesAreDetected(int) throws java.sql.SQLException;
-    method public boolean usesLocalFilePerTable() throws java.sql.SQLException;
-    method public boolean usesLocalFiles() throws java.sql.SQLException;
-    field public static final short attributeNoNulls = 0; // 0x0
-    field public static final short attributeNullable = 1; // 0x1
-    field public static final short attributeNullableUnknown = 2; // 0x2
-    field public static final int bestRowNotPseudo = 1; // 0x1
-    field public static final int bestRowPseudo = 2; // 0x2
-    field public static final int bestRowSession = 2; // 0x2
-    field public static final int bestRowTemporary = 0; // 0x0
-    field public static final int bestRowTransaction = 1; // 0x1
-    field public static final int bestRowUnknown = 0; // 0x0
-    field public static final int columnNoNulls = 0; // 0x0
-    field public static final int columnNullable = 1; // 0x1
-    field public static final int columnNullableUnknown = 2; // 0x2
-    field public static final int functionColumnIn = 1; // 0x1
-    field public static final int functionColumnInOut = 2; // 0x2
-    field public static final int functionColumnOut = 3; // 0x3
-    field public static final int functionColumnResult = 5; // 0x5
-    field public static final int functionColumnUnknown = 0; // 0x0
-    field public static final int functionNoNulls = 0; // 0x0
-    field public static final int functionNoTable = 1; // 0x1
-    field public static final int functionNullable = 1; // 0x1
-    field public static final int functionNullableUnknown = 2; // 0x2
-    field public static final int functionResultUnknown = 0; // 0x0
-    field public static final int functionReturn = 4; // 0x4
-    field public static final int functionReturnsTable = 2; // 0x2
-    field public static final int importedKeyCascade = 0; // 0x0
-    field public static final int importedKeyInitiallyDeferred = 5; // 0x5
-    field public static final int importedKeyInitiallyImmediate = 6; // 0x6
-    field public static final int importedKeyNoAction = 3; // 0x3
-    field public static final int importedKeyNotDeferrable = 7; // 0x7
-    field public static final int importedKeyRestrict = 1; // 0x1
-    field public static final int importedKeySetDefault = 4; // 0x4
-    field public static final int importedKeySetNull = 2; // 0x2
-    field public static final int procedureColumnIn = 1; // 0x1
-    field public static final int procedureColumnInOut = 2; // 0x2
-    field public static final int procedureColumnOut = 4; // 0x4
-    field public static final int procedureColumnResult = 3; // 0x3
-    field public static final int procedureColumnReturn = 5; // 0x5
-    field public static final int procedureColumnUnknown = 0; // 0x0
-    field public static final int procedureNoNulls = 0; // 0x0
-    field public static final int procedureNoResult = 1; // 0x1
-    field public static final int procedureNullable = 1; // 0x1
-    field public static final int procedureNullableUnknown = 2; // 0x2
-    field public static final int procedureResultUnknown = 0; // 0x0
-    field public static final int procedureReturnsResult = 2; // 0x2
-    field public static final int sqlStateSQL = 2; // 0x2
-    field public static final int sqlStateSQL99 = 2; // 0x2
-    field public static final int sqlStateXOpen = 1; // 0x1
-    field public static final short tableIndexClustered = 1; // 0x1
-    field public static final short tableIndexHashed = 2; // 0x2
-    field public static final short tableIndexOther = 3; // 0x3
-    field public static final short tableIndexStatistic = 0; // 0x0
-    field public static final int typeNoNulls = 0; // 0x0
-    field public static final int typeNullable = 1; // 0x1
-    field public static final int typeNullableUnknown = 2; // 0x2
-    field public static final int typePredBasic = 2; // 0x2
-    field public static final int typePredChar = 1; // 0x1
-    field public static final int typePredNone = 0; // 0x0
-    field public static final int typeSearchable = 3; // 0x3
-    field public static final int versionColumnNotPseudo = 1; // 0x1
-    field public static final int versionColumnPseudo = 2; // 0x2
-    field public static final int versionColumnUnknown = 0; // 0x0
-  }
-
-  public class Date extends java.util.Date {
-    ctor @Deprecated public Date(int, int, int);
-    ctor public Date(long);
-    method public static java.sql.Date valueOf(String);
-  }
-
-  public interface Driver {
-    method public boolean acceptsURL(String) throws java.sql.SQLException;
-    method public java.sql.Connection connect(String, java.util.Properties) throws java.sql.SQLException;
-    method public int getMajorVersion();
-    method public int getMinorVersion();
-    method public java.sql.DriverPropertyInfo[] getPropertyInfo(String, java.util.Properties) throws java.sql.SQLException;
-    method public boolean jdbcCompliant();
-  }
-
-  public class DriverManager {
-    method public static void deregisterDriver(java.sql.Driver) throws java.sql.SQLException;
-    method public static java.sql.Connection getConnection(String, java.util.Properties) throws java.sql.SQLException;
-    method public static java.sql.Connection getConnection(String, String, String) throws java.sql.SQLException;
-    method public static java.sql.Connection getConnection(String) throws java.sql.SQLException;
-    method public static java.sql.Driver getDriver(String) throws java.sql.SQLException;
-    method public static java.util.Enumeration<java.sql.Driver> getDrivers();
-    method @Deprecated public static java.io.PrintStream getLogStream();
-    method public static java.io.PrintWriter getLogWriter();
-    method public static int getLoginTimeout();
-    method public static void println(String);
-    method public static void registerDriver(java.sql.Driver) throws java.sql.SQLException;
-    method @Deprecated public static void setLogStream(java.io.PrintStream);
-    method public static void setLogWriter(java.io.PrintWriter);
-    method public static void setLoginTimeout(int);
-  }
-
-  public class DriverPropertyInfo {
-    ctor public DriverPropertyInfo(String, String);
-    field public String[] choices;
-    field public String description;
-    field public String name;
-    field public boolean required;
-    field public String value;
-  }
-
-  public interface NClob extends java.sql.Clob {
-  }
-
-  public interface ParameterMetaData extends java.sql.Wrapper {
-    method public String getParameterClassName(int) throws java.sql.SQLException;
-    method public int getParameterCount() throws java.sql.SQLException;
-    method public int getParameterMode(int) throws java.sql.SQLException;
-    method public int getParameterType(int) throws java.sql.SQLException;
-    method public String getParameterTypeName(int) throws java.sql.SQLException;
-    method public int getPrecision(int) throws java.sql.SQLException;
-    method public int getScale(int) throws java.sql.SQLException;
-    method public int isNullable(int) throws java.sql.SQLException;
-    method public boolean isSigned(int) throws java.sql.SQLException;
-    field public static final int parameterModeIn = 1; // 0x1
-    field public static final int parameterModeInOut = 2; // 0x2
-    field public static final int parameterModeOut = 4; // 0x4
-    field public static final int parameterModeUnknown = 0; // 0x0
-    field public static final int parameterNoNulls = 0; // 0x0
-    field public static final int parameterNullable = 1; // 0x1
-    field public static final int parameterNullableUnknown = 2; // 0x2
-  }
-
-  public interface PreparedStatement extends java.sql.Statement {
-    method public void addBatch() throws java.sql.SQLException;
-    method public void clearParameters() throws java.sql.SQLException;
-    method public boolean execute() throws java.sql.SQLException;
-    method public java.sql.ResultSet executeQuery() throws java.sql.SQLException;
-    method public int executeUpdate() throws java.sql.SQLException;
-    method public java.sql.ResultSetMetaData getMetaData() throws java.sql.SQLException;
-    method public java.sql.ParameterMetaData getParameterMetaData() throws java.sql.SQLException;
-    method public void setArray(int, java.sql.Array) throws java.sql.SQLException;
-    method public void setAsciiStream(int, java.io.InputStream, int) throws java.sql.SQLException;
-    method public void setAsciiStream(int, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void setAsciiStream(int, java.io.InputStream) throws java.sql.SQLException;
-    method public void setBigDecimal(int, java.math.BigDecimal) throws java.sql.SQLException;
-    method public void setBinaryStream(int, java.io.InputStream, int) throws java.sql.SQLException;
-    method public void setBinaryStream(int, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void setBinaryStream(int, java.io.InputStream) throws java.sql.SQLException;
-    method public void setBlob(int, java.sql.Blob) throws java.sql.SQLException;
-    method public void setBlob(int, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void setBlob(int, java.io.InputStream) throws java.sql.SQLException;
-    method public void setBoolean(int, boolean) throws java.sql.SQLException;
-    method public void setByte(int, byte) throws java.sql.SQLException;
-    method public void setBytes(int, byte[]) throws java.sql.SQLException;
-    method public void setCharacterStream(int, java.io.Reader, int) throws java.sql.SQLException;
-    method public void setCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
-    method public void setClob(int, java.sql.Clob) throws java.sql.SQLException;
-    method public void setClob(int, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setClob(int, java.io.Reader) throws java.sql.SQLException;
-    method public void setDate(int, java.sql.Date) throws java.sql.SQLException;
-    method public void setDate(int, java.sql.Date, java.util.Calendar) throws java.sql.SQLException;
-    method public void setDouble(int, double) throws java.sql.SQLException;
-    method public void setFloat(int, float) throws java.sql.SQLException;
-    method public void setInt(int, int) throws java.sql.SQLException;
-    method public void setLong(int, long) throws java.sql.SQLException;
-    method public void setNCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setNCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
-    method public void setNClob(int, java.sql.NClob) throws java.sql.SQLException;
-    method public void setNClob(int, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setNClob(int, java.io.Reader) throws java.sql.SQLException;
-    method public void setNString(int, String) throws java.sql.SQLException;
-    method public void setNull(int, int) throws java.sql.SQLException;
-    method public void setNull(int, int, String) throws java.sql.SQLException;
-    method public void setObject(int, Object, int) throws java.sql.SQLException;
-    method public void setObject(int, Object) throws java.sql.SQLException;
-    method public void setObject(int, Object, int, int) throws java.sql.SQLException;
-    method public void setRef(int, java.sql.Ref) throws java.sql.SQLException;
-    method public void setRowId(int, java.sql.RowId) throws java.sql.SQLException;
-    method public void setSQLXML(int, java.sql.SQLXML) throws java.sql.SQLException;
-    method public void setShort(int, short) throws java.sql.SQLException;
-    method public void setString(int, String) throws java.sql.SQLException;
-    method public void setTime(int, java.sql.Time) throws java.sql.SQLException;
-    method public void setTime(int, java.sql.Time, java.util.Calendar) throws java.sql.SQLException;
-    method public void setTimestamp(int, java.sql.Timestamp) throws java.sql.SQLException;
-    method public void setTimestamp(int, java.sql.Timestamp, java.util.Calendar) throws java.sql.SQLException;
-    method public void setURL(int, java.net.URL) throws java.sql.SQLException;
-    method @Deprecated public void setUnicodeStream(int, java.io.InputStream, int) throws java.sql.SQLException;
-  }
-
-  public interface Ref {
-    method public String getBaseTypeName() throws java.sql.SQLException;
-    method public Object getObject(java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
-    method public Object getObject() throws java.sql.SQLException;
-    method public void setObject(Object) throws java.sql.SQLException;
-  }
-
-  public interface ResultSet extends java.sql.Wrapper java.lang.AutoCloseable {
-    method public boolean absolute(int) throws java.sql.SQLException;
-    method public void afterLast() throws java.sql.SQLException;
-    method public void beforeFirst() throws java.sql.SQLException;
-    method public void cancelRowUpdates() throws java.sql.SQLException;
-    method public void clearWarnings() throws java.sql.SQLException;
-    method public void close() throws java.sql.SQLException;
-    method public void deleteRow() throws java.sql.SQLException;
-    method public int findColumn(String) throws java.sql.SQLException;
-    method public boolean first() throws java.sql.SQLException;
-    method public java.sql.Array getArray(int) throws java.sql.SQLException;
-    method public java.sql.Array getArray(String) throws java.sql.SQLException;
-    method public java.io.InputStream getAsciiStream(int) throws java.sql.SQLException;
-    method public java.io.InputStream getAsciiStream(String) throws java.sql.SQLException;
-    method @Deprecated public java.math.BigDecimal getBigDecimal(int, int) throws java.sql.SQLException;
-    method @Deprecated public java.math.BigDecimal getBigDecimal(String, int) throws java.sql.SQLException;
-    method public java.math.BigDecimal getBigDecimal(int) throws java.sql.SQLException;
-    method public java.math.BigDecimal getBigDecimal(String) throws java.sql.SQLException;
-    method public java.io.InputStream getBinaryStream(int) throws java.sql.SQLException;
-    method public java.io.InputStream getBinaryStream(String) throws java.sql.SQLException;
-    method public java.sql.Blob getBlob(int) throws java.sql.SQLException;
-    method public java.sql.Blob getBlob(String) throws java.sql.SQLException;
-    method public boolean getBoolean(int) throws java.sql.SQLException;
-    method public boolean getBoolean(String) throws java.sql.SQLException;
-    method public byte getByte(int) throws java.sql.SQLException;
-    method public byte getByte(String) throws java.sql.SQLException;
-    method public byte[] getBytes(int) throws java.sql.SQLException;
-    method public byte[] getBytes(String) throws java.sql.SQLException;
-    method public java.io.Reader getCharacterStream(int) throws java.sql.SQLException;
-    method public java.io.Reader getCharacterStream(String) throws java.sql.SQLException;
-    method public java.sql.Clob getClob(int) throws java.sql.SQLException;
-    method public java.sql.Clob getClob(String) throws java.sql.SQLException;
-    method public int getConcurrency() throws java.sql.SQLException;
-    method public String getCursorName() throws java.sql.SQLException;
-    method public java.sql.Date getDate(int) throws java.sql.SQLException;
-    method public java.sql.Date getDate(String) throws java.sql.SQLException;
-    method public java.sql.Date getDate(int, java.util.Calendar) throws java.sql.SQLException;
-    method public java.sql.Date getDate(String, java.util.Calendar) throws java.sql.SQLException;
-    method public double getDouble(int) throws java.sql.SQLException;
-    method public double getDouble(String) throws java.sql.SQLException;
-    method public int getFetchDirection() throws java.sql.SQLException;
-    method public int getFetchSize() throws java.sql.SQLException;
-    method public float getFloat(int) throws java.sql.SQLException;
-    method public float getFloat(String) throws java.sql.SQLException;
-    method public int getHoldability() throws java.sql.SQLException;
-    method public int getInt(int) throws java.sql.SQLException;
-    method public int getInt(String) throws java.sql.SQLException;
-    method public long getLong(int) throws java.sql.SQLException;
-    method public long getLong(String) throws java.sql.SQLException;
-    method public java.sql.ResultSetMetaData getMetaData() throws java.sql.SQLException;
-    method public java.io.Reader getNCharacterStream(int) throws java.sql.SQLException;
-    method public java.io.Reader getNCharacterStream(String) throws java.sql.SQLException;
-    method public java.sql.NClob getNClob(int) throws java.sql.SQLException;
-    method public java.sql.NClob getNClob(String) throws java.sql.SQLException;
-    method public String getNString(int) throws java.sql.SQLException;
-    method public String getNString(String) throws java.sql.SQLException;
-    method public Object getObject(int) throws java.sql.SQLException;
-    method public Object getObject(String) throws java.sql.SQLException;
-    method public Object getObject(int, java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
-    method public Object getObject(String, java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
-    method public java.sql.Ref getRef(int) throws java.sql.SQLException;
-    method public java.sql.Ref getRef(String) throws java.sql.SQLException;
-    method public int getRow() throws java.sql.SQLException;
-    method public java.sql.RowId getRowId(int) throws java.sql.SQLException;
-    method public java.sql.RowId getRowId(String) throws java.sql.SQLException;
-    method public java.sql.SQLXML getSQLXML(int) throws java.sql.SQLException;
-    method public java.sql.SQLXML getSQLXML(String) throws java.sql.SQLException;
-    method public short getShort(int) throws java.sql.SQLException;
-    method public short getShort(String) throws java.sql.SQLException;
-    method public java.sql.Statement getStatement() throws java.sql.SQLException;
-    method public String getString(int) throws java.sql.SQLException;
-    method public String getString(String) throws java.sql.SQLException;
-    method public java.sql.Time getTime(int) throws java.sql.SQLException;
-    method public java.sql.Time getTime(String) throws java.sql.SQLException;
-    method public java.sql.Time getTime(int, java.util.Calendar) throws java.sql.SQLException;
-    method public java.sql.Time getTime(String, java.util.Calendar) throws java.sql.SQLException;
-    method public java.sql.Timestamp getTimestamp(int) throws java.sql.SQLException;
-    method public java.sql.Timestamp getTimestamp(String) throws java.sql.SQLException;
-    method public java.sql.Timestamp getTimestamp(int, java.util.Calendar) throws java.sql.SQLException;
-    method public java.sql.Timestamp getTimestamp(String, java.util.Calendar) throws java.sql.SQLException;
-    method public int getType() throws java.sql.SQLException;
-    method public java.net.URL getURL(int) throws java.sql.SQLException;
-    method public java.net.URL getURL(String) throws java.sql.SQLException;
-    method @Deprecated public java.io.InputStream getUnicodeStream(int) throws java.sql.SQLException;
-    method @Deprecated public java.io.InputStream getUnicodeStream(String) throws java.sql.SQLException;
-    method public java.sql.SQLWarning getWarnings() throws java.sql.SQLException;
-    method public void insertRow() throws java.sql.SQLException;
-    method public boolean isAfterLast() throws java.sql.SQLException;
-    method public boolean isBeforeFirst() throws java.sql.SQLException;
-    method public boolean isClosed() throws java.sql.SQLException;
-    method public boolean isFirst() throws java.sql.SQLException;
-    method public boolean isLast() throws java.sql.SQLException;
-    method public boolean last() throws java.sql.SQLException;
-    method public void moveToCurrentRow() throws java.sql.SQLException;
-    method public void moveToInsertRow() throws java.sql.SQLException;
-    method public boolean next() throws java.sql.SQLException;
-    method public boolean previous() throws java.sql.SQLException;
-    method public void refreshRow() throws java.sql.SQLException;
-    method public boolean relative(int) throws java.sql.SQLException;
-    method public boolean rowDeleted() throws java.sql.SQLException;
-    method public boolean rowInserted() throws java.sql.SQLException;
-    method public boolean rowUpdated() throws java.sql.SQLException;
-    method public void setFetchDirection(int) throws java.sql.SQLException;
-    method public void setFetchSize(int) throws java.sql.SQLException;
-    method public void updateArray(int, java.sql.Array) throws java.sql.SQLException;
-    method public void updateArray(String, java.sql.Array) throws java.sql.SQLException;
-    method public void updateAsciiStream(int, java.io.InputStream, int) throws java.sql.SQLException;
-    method public void updateAsciiStream(String, java.io.InputStream, int) throws java.sql.SQLException;
-    method public void updateAsciiStream(int, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void updateAsciiStream(String, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void updateAsciiStream(int, java.io.InputStream) throws java.sql.SQLException;
-    method public void updateAsciiStream(String, java.io.InputStream) throws java.sql.SQLException;
-    method public void updateBigDecimal(int, java.math.BigDecimal) throws java.sql.SQLException;
-    method public void updateBigDecimal(String, java.math.BigDecimal) throws java.sql.SQLException;
-    method public void updateBinaryStream(int, java.io.InputStream, int) throws java.sql.SQLException;
-    method public void updateBinaryStream(String, java.io.InputStream, int) throws java.sql.SQLException;
-    method public void updateBinaryStream(int, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void updateBinaryStream(String, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void updateBinaryStream(int, java.io.InputStream) throws java.sql.SQLException;
-    method public void updateBinaryStream(String, java.io.InputStream) throws java.sql.SQLException;
-    method public void updateBlob(int, java.sql.Blob) throws java.sql.SQLException;
-    method public void updateBlob(String, java.sql.Blob) throws java.sql.SQLException;
-    method public void updateBlob(int, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void updateBlob(String, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void updateBlob(int, java.io.InputStream) throws java.sql.SQLException;
-    method public void updateBlob(String, java.io.InputStream) throws java.sql.SQLException;
-    method public void updateBoolean(int, boolean) throws java.sql.SQLException;
-    method public void updateBoolean(String, boolean) throws java.sql.SQLException;
-    method public void updateByte(int, byte) throws java.sql.SQLException;
-    method public void updateByte(String, byte) throws java.sql.SQLException;
-    method public void updateBytes(int, byte[]) throws java.sql.SQLException;
-    method public void updateBytes(String, byte[]) throws java.sql.SQLException;
-    method public void updateCharacterStream(int, java.io.Reader, int) throws java.sql.SQLException;
-    method public void updateCharacterStream(String, java.io.Reader, int) throws java.sql.SQLException;
-    method public void updateCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
-    method public void updateCharacterStream(String, java.io.Reader, long) throws java.sql.SQLException;
-    method public void updateCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
-    method public void updateCharacterStream(String, java.io.Reader) throws java.sql.SQLException;
-    method public void updateClob(int, java.sql.Clob) throws java.sql.SQLException;
-    method public void updateClob(String, java.sql.Clob) throws java.sql.SQLException;
-    method public void updateClob(int, java.io.Reader, long) throws java.sql.SQLException;
-    method public void updateClob(String, java.io.Reader, long) throws java.sql.SQLException;
-    method public void updateClob(int, java.io.Reader) throws java.sql.SQLException;
-    method public void updateClob(String, java.io.Reader) throws java.sql.SQLException;
-    method public void updateDate(int, java.sql.Date) throws java.sql.SQLException;
-    method public void updateDate(String, java.sql.Date) throws java.sql.SQLException;
-    method public void updateDouble(int, double) throws java.sql.SQLException;
-    method public void updateDouble(String, double) throws java.sql.SQLException;
-    method public void updateFloat(int, float) throws java.sql.SQLException;
-    method public void updateFloat(String, float) throws java.sql.SQLException;
-    method public void updateInt(int, int) throws java.sql.SQLException;
-    method public void updateInt(String, int) throws java.sql.SQLException;
-    method public void updateLong(int, long) throws java.sql.SQLException;
-    method public void updateLong(String, long) throws java.sql.SQLException;
-    method public void updateNCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
-    method public void updateNCharacterStream(String, java.io.Reader, long) throws java.sql.SQLException;
-    method public void updateNCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
-    method public void updateNCharacterStream(String, java.io.Reader) throws java.sql.SQLException;
-    method public void updateNClob(int, java.sql.NClob) throws java.sql.SQLException;
-    method public void updateNClob(String, java.sql.NClob) throws java.sql.SQLException;
-    method public void updateNClob(int, java.io.Reader, long) throws java.sql.SQLException;
-    method public void updateNClob(String, java.io.Reader, long) throws java.sql.SQLException;
-    method public void updateNClob(int, java.io.Reader) throws java.sql.SQLException;
-    method public void updateNClob(String, java.io.Reader) throws java.sql.SQLException;
-    method public void updateNString(int, String) throws java.sql.SQLException;
-    method public void updateNString(String, String) throws java.sql.SQLException;
-    method public void updateNull(int) throws java.sql.SQLException;
-    method public void updateNull(String) throws java.sql.SQLException;
-    method public void updateObject(int, Object, int) throws java.sql.SQLException;
-    method public void updateObject(int, Object) throws java.sql.SQLException;
-    method public void updateObject(String, Object, int) throws java.sql.SQLException;
-    method public void updateObject(String, Object) throws java.sql.SQLException;
-    method public void updateRef(int, java.sql.Ref) throws java.sql.SQLException;
-    method public void updateRef(String, java.sql.Ref) throws java.sql.SQLException;
-    method public void updateRow() throws java.sql.SQLException;
-    method public void updateRowId(int, java.sql.RowId) throws java.sql.SQLException;
-    method public void updateRowId(String, java.sql.RowId) throws java.sql.SQLException;
-    method public void updateSQLXML(int, java.sql.SQLXML) throws java.sql.SQLException;
-    method public void updateSQLXML(String, java.sql.SQLXML) throws java.sql.SQLException;
-    method public void updateShort(int, short) throws java.sql.SQLException;
-    method public void updateShort(String, short) throws java.sql.SQLException;
-    method public void updateString(int, String) throws java.sql.SQLException;
-    method public void updateString(String, String) throws java.sql.SQLException;
-    method public void updateTime(int, java.sql.Time) throws java.sql.SQLException;
-    method public void updateTime(String, java.sql.Time) throws java.sql.SQLException;
-    method public void updateTimestamp(int, java.sql.Timestamp) throws java.sql.SQLException;
-    method public void updateTimestamp(String, java.sql.Timestamp) throws java.sql.SQLException;
-    method public boolean wasNull() throws java.sql.SQLException;
-    field public static final int CLOSE_CURSORS_AT_COMMIT = 2; // 0x2
-    field public static final int CONCUR_READ_ONLY = 1007; // 0x3ef
-    field public static final int CONCUR_UPDATABLE = 1008; // 0x3f0
-    field public static final int FETCH_FORWARD = 1000; // 0x3e8
-    field public static final int FETCH_REVERSE = 1001; // 0x3e9
-    field public static final int FETCH_UNKNOWN = 1002; // 0x3ea
-    field public static final int HOLD_CURSORS_OVER_COMMIT = 1; // 0x1
-    field public static final int TYPE_FORWARD_ONLY = 1003; // 0x3eb
-    field public static final int TYPE_SCROLL_INSENSITIVE = 1004; // 0x3ec
-    field public static final int TYPE_SCROLL_SENSITIVE = 1005; // 0x3ed
-  }
-
-  public interface ResultSetMetaData extends java.sql.Wrapper {
-    method public String getCatalogName(int) throws java.sql.SQLException;
-    method public String getColumnClassName(int) throws java.sql.SQLException;
-    method public int getColumnCount() throws java.sql.SQLException;
-    method public int getColumnDisplaySize(int) throws java.sql.SQLException;
-    method public String getColumnLabel(int) throws java.sql.SQLException;
-    method public String getColumnName(int) throws java.sql.SQLException;
-    method public int getColumnType(int) throws java.sql.SQLException;
-    method public String getColumnTypeName(int) throws java.sql.SQLException;
-    method public int getPrecision(int) throws java.sql.SQLException;
-    method public int getScale(int) throws java.sql.SQLException;
-    method public String getSchemaName(int) throws java.sql.SQLException;
-    method public String getTableName(int) throws java.sql.SQLException;
-    method public boolean isAutoIncrement(int) throws java.sql.SQLException;
-    method public boolean isCaseSensitive(int) throws java.sql.SQLException;
-    method public boolean isCurrency(int) throws java.sql.SQLException;
-    method public boolean isDefinitelyWritable(int) throws java.sql.SQLException;
-    method public int isNullable(int) throws java.sql.SQLException;
-    method public boolean isReadOnly(int) throws java.sql.SQLException;
-    method public boolean isSearchable(int) throws java.sql.SQLException;
-    method public boolean isSigned(int) throws java.sql.SQLException;
-    method public boolean isWritable(int) throws java.sql.SQLException;
-    field public static final int columnNoNulls = 0; // 0x0
-    field public static final int columnNullable = 1; // 0x1
-    field public static final int columnNullableUnknown = 2; // 0x2
-  }
-
-  public interface RowId {
-    method public boolean equals(Object);
-    method public byte[] getBytes();
-    method public int hashCode();
-    method public String toString();
-  }
-
-  public enum RowIdLifetime {
-    enum_constant public static final java.sql.RowIdLifetime ROWID_UNSUPPORTED;
-    enum_constant public static final java.sql.RowIdLifetime ROWID_VALID_FOREVER;
-    enum_constant public static final java.sql.RowIdLifetime ROWID_VALID_OTHER;
-    enum_constant public static final java.sql.RowIdLifetime ROWID_VALID_SESSION;
-    enum_constant public static final java.sql.RowIdLifetime ROWID_VALID_TRANSACTION;
-  }
-
-  public class SQLClientInfoException extends java.sql.SQLException {
-    ctor public SQLClientInfoException();
-    ctor public SQLClientInfoException(java.util.Map<java.lang.String,java.sql.ClientInfoStatus>);
-    ctor public SQLClientInfoException(java.util.Map<java.lang.String,java.sql.ClientInfoStatus>, Throwable);
-    ctor public SQLClientInfoException(String, java.util.Map<java.lang.String,java.sql.ClientInfoStatus>);
-    ctor public SQLClientInfoException(String, java.util.Map<java.lang.String,java.sql.ClientInfoStatus>, Throwable);
-    ctor public SQLClientInfoException(String, String, java.util.Map<java.lang.String,java.sql.ClientInfoStatus>);
-    ctor public SQLClientInfoException(String, String, java.util.Map<java.lang.String,java.sql.ClientInfoStatus>, Throwable);
-    ctor public SQLClientInfoException(String, String, int, java.util.Map<java.lang.String,java.sql.ClientInfoStatus>);
-    ctor public SQLClientInfoException(String, String, int, java.util.Map<java.lang.String,java.sql.ClientInfoStatus>, Throwable);
-    method public java.util.Map<java.lang.String,java.sql.ClientInfoStatus> getFailedProperties();
-  }
-
-  public interface SQLData {
-    method public String getSQLTypeName() throws java.sql.SQLException;
-    method public void readSQL(java.sql.SQLInput, String) throws java.sql.SQLException;
-    method public void writeSQL(java.sql.SQLOutput) throws java.sql.SQLException;
-  }
-
-  public class SQLDataException extends java.sql.SQLNonTransientException {
-    ctor public SQLDataException();
-    ctor public SQLDataException(String);
-    ctor public SQLDataException(String, String);
-    ctor public SQLDataException(String, String, int);
-    ctor public SQLDataException(Throwable);
-    ctor public SQLDataException(String, Throwable);
-    ctor public SQLDataException(String, String, Throwable);
-    ctor public SQLDataException(String, String, int, Throwable);
-  }
-
-  public class SQLException extends java.lang.Exception implements java.lang.Iterable<java.lang.Throwable> {
-    ctor public SQLException(String, String, int);
-    ctor public SQLException(String, String);
-    ctor public SQLException(String);
-    ctor public SQLException();
-    ctor public SQLException(Throwable);
-    ctor public SQLException(String, Throwable);
-    ctor public SQLException(String, String, Throwable);
-    ctor public SQLException(String, String, int, Throwable);
-    method public int getErrorCode();
-    method public java.sql.SQLException getNextException();
-    method public String getSQLState();
-    method public java.util.Iterator<java.lang.Throwable> iterator();
-    method public void setNextException(java.sql.SQLException);
-  }
-
-  public class SQLFeatureNotSupportedException extends java.sql.SQLNonTransientException {
-    ctor public SQLFeatureNotSupportedException();
-    ctor public SQLFeatureNotSupportedException(String);
-    ctor public SQLFeatureNotSupportedException(String, String);
-    ctor public SQLFeatureNotSupportedException(String, String, int);
-    ctor public SQLFeatureNotSupportedException(Throwable);
-    ctor public SQLFeatureNotSupportedException(String, Throwable);
-    ctor public SQLFeatureNotSupportedException(String, String, Throwable);
-    ctor public SQLFeatureNotSupportedException(String, String, int, Throwable);
-  }
-
-  public interface SQLInput {
-    method public java.sql.Array readArray() throws java.sql.SQLException;
-    method public java.io.InputStream readAsciiStream() throws java.sql.SQLException;
-    method public java.math.BigDecimal readBigDecimal() throws java.sql.SQLException;
-    method public java.io.InputStream readBinaryStream() throws java.sql.SQLException;
-    method public java.sql.Blob readBlob() throws java.sql.SQLException;
-    method public boolean readBoolean() throws java.sql.SQLException;
-    method public byte readByte() throws java.sql.SQLException;
-    method public byte[] readBytes() throws java.sql.SQLException;
-    method public java.io.Reader readCharacterStream() throws java.sql.SQLException;
-    method public java.sql.Clob readClob() throws java.sql.SQLException;
-    method public java.sql.Date readDate() throws java.sql.SQLException;
-    method public double readDouble() throws java.sql.SQLException;
-    method public float readFloat() throws java.sql.SQLException;
-    method public int readInt() throws java.sql.SQLException;
-    method public long readLong() throws java.sql.SQLException;
-    method public java.sql.NClob readNClob() throws java.sql.SQLException;
-    method public String readNString() throws java.sql.SQLException;
-    method public Object readObject() throws java.sql.SQLException;
-    method public java.sql.Ref readRef() throws java.sql.SQLException;
-    method public java.sql.RowId readRowId() throws java.sql.SQLException;
-    method public java.sql.SQLXML readSQLXML() throws java.sql.SQLException;
-    method public short readShort() throws java.sql.SQLException;
-    method public String readString() throws java.sql.SQLException;
-    method public java.sql.Time readTime() throws java.sql.SQLException;
-    method public java.sql.Timestamp readTimestamp() throws java.sql.SQLException;
-    method public java.net.URL readURL() throws java.sql.SQLException;
-    method public boolean wasNull() throws java.sql.SQLException;
-  }
-
-  public class SQLIntegrityConstraintViolationException extends java.sql.SQLNonTransientException {
-    ctor public SQLIntegrityConstraintViolationException();
-    ctor public SQLIntegrityConstraintViolationException(String);
-    ctor public SQLIntegrityConstraintViolationException(String, String);
-    ctor public SQLIntegrityConstraintViolationException(String, String, int);
-    ctor public SQLIntegrityConstraintViolationException(Throwable);
-    ctor public SQLIntegrityConstraintViolationException(String, Throwable);
-    ctor public SQLIntegrityConstraintViolationException(String, String, Throwable);
-    ctor public SQLIntegrityConstraintViolationException(String, String, int, Throwable);
-  }
-
-  public class SQLInvalidAuthorizationSpecException extends java.sql.SQLNonTransientException {
-    ctor public SQLInvalidAuthorizationSpecException();
-    ctor public SQLInvalidAuthorizationSpecException(String);
-    ctor public SQLInvalidAuthorizationSpecException(String, String);
-    ctor public SQLInvalidAuthorizationSpecException(String, String, int);
-    ctor public SQLInvalidAuthorizationSpecException(Throwable);
-    ctor public SQLInvalidAuthorizationSpecException(String, Throwable);
-    ctor public SQLInvalidAuthorizationSpecException(String, String, Throwable);
-    ctor public SQLInvalidAuthorizationSpecException(String, String, int, Throwable);
-  }
-
-  public class SQLNonTransientConnectionException extends java.sql.SQLNonTransientException {
-    ctor public SQLNonTransientConnectionException();
-    ctor public SQLNonTransientConnectionException(String);
-    ctor public SQLNonTransientConnectionException(String, String);
-    ctor public SQLNonTransientConnectionException(String, String, int);
-    ctor public SQLNonTransientConnectionException(Throwable);
-    ctor public SQLNonTransientConnectionException(String, Throwable);
-    ctor public SQLNonTransientConnectionException(String, String, Throwable);
-    ctor public SQLNonTransientConnectionException(String, String, int, Throwable);
-  }
-
-  public class SQLNonTransientException extends java.sql.SQLException {
-    ctor public SQLNonTransientException();
-    ctor public SQLNonTransientException(String);
-    ctor public SQLNonTransientException(String, String);
-    ctor public SQLNonTransientException(String, String, int);
-    ctor public SQLNonTransientException(Throwable);
-    ctor public SQLNonTransientException(String, Throwable);
-    ctor public SQLNonTransientException(String, String, Throwable);
-    ctor public SQLNonTransientException(String, String, int, Throwable);
-  }
-
-  public interface SQLOutput {
-    method public void writeArray(java.sql.Array) throws java.sql.SQLException;
-    method public void writeAsciiStream(java.io.InputStream) throws java.sql.SQLException;
-    method public void writeBigDecimal(java.math.BigDecimal) throws java.sql.SQLException;
-    method public void writeBinaryStream(java.io.InputStream) throws java.sql.SQLException;
-    method public void writeBlob(java.sql.Blob) throws java.sql.SQLException;
-    method public void writeBoolean(boolean) throws java.sql.SQLException;
-    method public void writeByte(byte) throws java.sql.SQLException;
-    method public void writeBytes(byte[]) throws java.sql.SQLException;
-    method public void writeCharacterStream(java.io.Reader) throws java.sql.SQLException;
-    method public void writeClob(java.sql.Clob) throws java.sql.SQLException;
-    method public void writeDate(java.sql.Date) throws java.sql.SQLException;
-    method public void writeDouble(double) throws java.sql.SQLException;
-    method public void writeFloat(float) throws java.sql.SQLException;
-    method public void writeInt(int) throws java.sql.SQLException;
-    method public void writeLong(long) throws java.sql.SQLException;
-    method public void writeNClob(java.sql.NClob) throws java.sql.SQLException;
-    method public void writeNString(String) throws java.sql.SQLException;
-    method public void writeObject(java.sql.SQLData) throws java.sql.SQLException;
-    method public void writeRef(java.sql.Ref) throws java.sql.SQLException;
-    method public void writeRowId(java.sql.RowId) throws java.sql.SQLException;
-    method public void writeSQLXML(java.sql.SQLXML) throws java.sql.SQLException;
-    method public void writeShort(short) throws java.sql.SQLException;
-    method public void writeString(String) throws java.sql.SQLException;
-    method public void writeStruct(java.sql.Struct) throws java.sql.SQLException;
-    method public void writeTime(java.sql.Time) throws java.sql.SQLException;
-    method public void writeTimestamp(java.sql.Timestamp) throws java.sql.SQLException;
-    method public void writeURL(java.net.URL) throws java.sql.SQLException;
-  }
-
-  public final class SQLPermission extends java.security.BasicPermission {
-    ctor public SQLPermission(String);
-    ctor public SQLPermission(String, String);
-  }
-
-  public class SQLRecoverableException extends java.sql.SQLException {
-    ctor public SQLRecoverableException();
-    ctor public SQLRecoverableException(String);
-    ctor public SQLRecoverableException(String, String);
-    ctor public SQLRecoverableException(String, String, int);
-    ctor public SQLRecoverableException(Throwable);
-    ctor public SQLRecoverableException(String, Throwable);
-    ctor public SQLRecoverableException(String, String, Throwable);
-    ctor public SQLRecoverableException(String, String, int, Throwable);
-  }
-
-  public class SQLSyntaxErrorException extends java.sql.SQLNonTransientException {
-    ctor public SQLSyntaxErrorException();
-    ctor public SQLSyntaxErrorException(String);
-    ctor public SQLSyntaxErrorException(String, String);
-    ctor public SQLSyntaxErrorException(String, String, int);
-    ctor public SQLSyntaxErrorException(Throwable);
-    ctor public SQLSyntaxErrorException(String, Throwable);
-    ctor public SQLSyntaxErrorException(String, String, Throwable);
-    ctor public SQLSyntaxErrorException(String, String, int, Throwable);
-  }
-
-  public class SQLTimeoutException extends java.sql.SQLTransientException {
-    ctor public SQLTimeoutException();
-    ctor public SQLTimeoutException(String);
-    ctor public SQLTimeoutException(String, String);
-    ctor public SQLTimeoutException(String, String, int);
-    ctor public SQLTimeoutException(Throwable);
-    ctor public SQLTimeoutException(String, Throwable);
-    ctor public SQLTimeoutException(String, String, Throwable);
-    ctor public SQLTimeoutException(String, String, int, Throwable);
-  }
-
-  public class SQLTransactionRollbackException extends java.sql.SQLTransientException {
-    ctor public SQLTransactionRollbackException();
-    ctor public SQLTransactionRollbackException(String);
-    ctor public SQLTransactionRollbackException(String, String);
-    ctor public SQLTransactionRollbackException(String, String, int);
-    ctor public SQLTransactionRollbackException(Throwable);
-    ctor public SQLTransactionRollbackException(String, Throwable);
-    ctor public SQLTransactionRollbackException(String, String, Throwable);
-    ctor public SQLTransactionRollbackException(String, String, int, Throwable);
-  }
-
-  public class SQLTransientConnectionException extends java.sql.SQLTransientException {
-    ctor public SQLTransientConnectionException();
-    ctor public SQLTransientConnectionException(String);
-    ctor public SQLTransientConnectionException(String, String);
-    ctor public SQLTransientConnectionException(String, String, int);
-    ctor public SQLTransientConnectionException(Throwable);
-    ctor public SQLTransientConnectionException(String, Throwable);
-    ctor public SQLTransientConnectionException(String, String, Throwable);
-    ctor public SQLTransientConnectionException(String, String, int, Throwable);
-  }
-
-  public class SQLTransientException extends java.sql.SQLException {
-    ctor public SQLTransientException();
-    ctor public SQLTransientException(String);
-    ctor public SQLTransientException(String, String);
-    ctor public SQLTransientException(String, String, int);
-    ctor public SQLTransientException(Throwable);
-    ctor public SQLTransientException(String, Throwable);
-    ctor public SQLTransientException(String, String, Throwable);
-    ctor public SQLTransientException(String, String, int, Throwable);
-  }
-
-  public class SQLWarning extends java.sql.SQLException {
-    ctor public SQLWarning(String, String, int);
-    ctor public SQLWarning(String, String);
-    ctor public SQLWarning(String);
-    ctor public SQLWarning();
-    ctor public SQLWarning(Throwable);
-    ctor public SQLWarning(String, Throwable);
-    ctor public SQLWarning(String, String, Throwable);
-    ctor public SQLWarning(String, String, int, Throwable);
-    method public java.sql.SQLWarning getNextWarning();
-    method public void setNextWarning(java.sql.SQLWarning);
-  }
-
-  public interface SQLXML {
-    method public void free() throws java.sql.SQLException;
-    method public java.io.InputStream getBinaryStream() throws java.sql.SQLException;
-    method public java.io.Reader getCharacterStream() throws java.sql.SQLException;
-    method public <T extends javax.xml.transform.Source> T getSource(Class<T>) throws java.sql.SQLException;
-    method public String getString() throws java.sql.SQLException;
-    method public java.io.OutputStream setBinaryStream() throws java.sql.SQLException;
-    method public java.io.Writer setCharacterStream() throws java.sql.SQLException;
-    method public <T extends javax.xml.transform.Result> T setResult(Class<T>) throws java.sql.SQLException;
-    method public void setString(String) throws java.sql.SQLException;
-  }
-
-  public interface Savepoint {
-    method public int getSavepointId() throws java.sql.SQLException;
-    method public String getSavepointName() throws java.sql.SQLException;
-  }
-
-  public interface Statement extends java.sql.Wrapper java.lang.AutoCloseable {
-    method public void addBatch(String) throws java.sql.SQLException;
-    method public void cancel() throws java.sql.SQLException;
-    method public void clearBatch() throws java.sql.SQLException;
-    method public void clearWarnings() throws java.sql.SQLException;
-    method public void close() throws java.sql.SQLException;
-    method public boolean execute(String) throws java.sql.SQLException;
-    method public boolean execute(String, int) throws java.sql.SQLException;
-    method public boolean execute(String, int[]) throws java.sql.SQLException;
-    method public boolean execute(String, String[]) throws java.sql.SQLException;
-    method public int[] executeBatch() throws java.sql.SQLException;
-    method public java.sql.ResultSet executeQuery(String) throws java.sql.SQLException;
-    method public int executeUpdate(String) throws java.sql.SQLException;
-    method public int executeUpdate(String, int) throws java.sql.SQLException;
-    method public int executeUpdate(String, int[]) throws java.sql.SQLException;
-    method public int executeUpdate(String, String[]) throws java.sql.SQLException;
-    method public java.sql.Connection getConnection() throws java.sql.SQLException;
-    method public int getFetchDirection() throws java.sql.SQLException;
-    method public int getFetchSize() throws java.sql.SQLException;
-    method public java.sql.ResultSet getGeneratedKeys() throws java.sql.SQLException;
-    method public int getMaxFieldSize() throws java.sql.SQLException;
-    method public int getMaxRows() throws java.sql.SQLException;
-    method public boolean getMoreResults() throws java.sql.SQLException;
-    method public boolean getMoreResults(int) throws java.sql.SQLException;
-    method public int getQueryTimeout() throws java.sql.SQLException;
-    method public java.sql.ResultSet getResultSet() throws java.sql.SQLException;
-    method public int getResultSetConcurrency() throws java.sql.SQLException;
-    method public int getResultSetHoldability() throws java.sql.SQLException;
-    method public int getResultSetType() throws java.sql.SQLException;
-    method public int getUpdateCount() throws java.sql.SQLException;
-    method public java.sql.SQLWarning getWarnings() throws java.sql.SQLException;
-    method public boolean isClosed() throws java.sql.SQLException;
-    method public boolean isPoolable() throws java.sql.SQLException;
-    method public void setCursorName(String) throws java.sql.SQLException;
-    method public void setEscapeProcessing(boolean) throws java.sql.SQLException;
-    method public void setFetchDirection(int) throws java.sql.SQLException;
-    method public void setFetchSize(int) throws java.sql.SQLException;
-    method public void setMaxFieldSize(int) throws java.sql.SQLException;
-    method public void setMaxRows(int) throws java.sql.SQLException;
-    method public void setPoolable(boolean) throws java.sql.SQLException;
-    method public void setQueryTimeout(int) throws java.sql.SQLException;
-    field public static final int CLOSE_ALL_RESULTS = 3; // 0x3
-    field public static final int CLOSE_CURRENT_RESULT = 1; // 0x1
-    field public static final int EXECUTE_FAILED = -3; // 0xfffffffd
-    field public static final int KEEP_CURRENT_RESULT = 2; // 0x2
-    field public static final int NO_GENERATED_KEYS = 2; // 0x2
-    field public static final int RETURN_GENERATED_KEYS = 1; // 0x1
-    field public static final int SUCCESS_NO_INFO = -2; // 0xfffffffe
-  }
-
-  public interface Struct {
-    method public Object[] getAttributes() throws java.sql.SQLException;
-    method public Object[] getAttributes(java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
-    method public String getSQLTypeName() throws java.sql.SQLException;
-  }
-
-  public class Time extends java.util.Date {
-    ctor @Deprecated public Time(int, int, int);
-    ctor public Time(long);
-    method public static java.sql.Time valueOf(String);
-  }
-
-  public class Timestamp extends java.util.Date {
-    ctor @Deprecated public Timestamp(int, int, int, int, int, int, int);
-    ctor public Timestamp(long);
-    method public boolean after(java.sql.Timestamp);
-    method public boolean before(java.sql.Timestamp);
-    method public int compareTo(java.sql.Timestamp);
-    method public boolean equals(java.sql.Timestamp);
-    method public int getNanos();
-    method public void setNanos(int);
-    method public static java.sql.Timestamp valueOf(String);
-  }
-
-  public class Types {
-    field public static final int ARRAY = 2003; // 0x7d3
-    field public static final int BIGINT = -5; // 0xfffffffb
-    field public static final int BINARY = -2; // 0xfffffffe
-    field public static final int BIT = -7; // 0xfffffff9
-    field public static final int BLOB = 2004; // 0x7d4
-    field public static final int BOOLEAN = 16; // 0x10
-    field public static final int CHAR = 1; // 0x1
-    field public static final int CLOB = 2005; // 0x7d5
-    field public static final int DATALINK = 70; // 0x46
-    field public static final int DATE = 91; // 0x5b
-    field public static final int DECIMAL = 3; // 0x3
-    field public static final int DISTINCT = 2001; // 0x7d1
-    field public static final int DOUBLE = 8; // 0x8
-    field public static final int FLOAT = 6; // 0x6
-    field public static final int INTEGER = 4; // 0x4
-    field public static final int JAVA_OBJECT = 2000; // 0x7d0
-    field public static final int LONGNVARCHAR = -16; // 0xfffffff0
-    field public static final int LONGVARBINARY = -4; // 0xfffffffc
-    field public static final int LONGVARCHAR = -1; // 0xffffffff
-    field public static final int NCHAR = -15; // 0xfffffff1
-    field public static final int NCLOB = 2011; // 0x7db
-    field public static final int NULL = 0; // 0x0
-    field public static final int NUMERIC = 2; // 0x2
-    field public static final int NVARCHAR = -9; // 0xfffffff7
-    field public static final int OTHER = 1111; // 0x457
-    field public static final int REAL = 7; // 0x7
-    field public static final int REF = 2006; // 0x7d6
-    field public static final int ROWID = -8; // 0xfffffff8
-    field public static final int SMALLINT = 5; // 0x5
-    field public static final int SQLXML = 2009; // 0x7d9
-    field public static final int STRUCT = 2002; // 0x7d2
-    field public static final int TIME = 92; // 0x5c
-    field public static final int TIMESTAMP = 93; // 0x5d
-    field public static final int TINYINT = -6; // 0xfffffffa
-    field public static final int VARBINARY = -3; // 0xfffffffd
-    field public static final int VARCHAR = 12; // 0xc
-  }
-
-  public interface Wrapper {
-    method public boolean isWrapperFor(Class<?>) throws java.sql.SQLException;
-    method public <T> T unwrap(Class<T>) throws java.sql.SQLException;
-  }
-
-}
-
-package java.text {
-
-  public class Annotation {
-    ctor public Annotation(Object);
-    method public Object getValue();
-  }
-
-  public interface AttributedCharacterIterator extends java.text.CharacterIterator {
-    method public java.util.Set<java.text.AttributedCharacterIterator.Attribute> getAllAttributeKeys();
-    method public Object getAttribute(java.text.AttributedCharacterIterator.Attribute);
-    method public java.util.Map<java.text.AttributedCharacterIterator.Attribute,java.lang.Object> getAttributes();
-    method public int getRunLimit();
-    method public int getRunLimit(java.text.AttributedCharacterIterator.Attribute);
-    method public int getRunLimit(java.util.Set<? extends java.text.AttributedCharacterIterator.Attribute>);
-    method public int getRunStart();
-    method public int getRunStart(java.text.AttributedCharacterIterator.Attribute);
-    method public int getRunStart(java.util.Set<? extends java.text.AttributedCharacterIterator.Attribute>);
-  }
-
-  public static class AttributedCharacterIterator.Attribute implements java.io.Serializable {
-    ctor protected AttributedCharacterIterator.Attribute(String);
-    method public final boolean equals(Object);
-    method protected String getName();
-    method public final int hashCode();
-    method protected Object readResolve() throws java.io.InvalidObjectException;
-    field public static final java.text.AttributedCharacterIterator.Attribute INPUT_METHOD_SEGMENT;
-    field public static final java.text.AttributedCharacterIterator.Attribute LANGUAGE;
-    field public static final java.text.AttributedCharacterIterator.Attribute READING;
-  }
-
-  public class AttributedString {
-    ctor public AttributedString(String);
-    ctor public AttributedString(String, java.util.Map<? extends java.text.AttributedCharacterIterator.Attribute,?>);
-    ctor public AttributedString(java.text.AttributedCharacterIterator);
-    ctor public AttributedString(java.text.AttributedCharacterIterator, int, int);
-    ctor public AttributedString(java.text.AttributedCharacterIterator, int, int, java.text.AttributedCharacterIterator.Attribute[]);
-    method public void addAttribute(java.text.AttributedCharacterIterator.Attribute, Object);
-    method public void addAttribute(java.text.AttributedCharacterIterator.Attribute, Object, int, int);
-    method public void addAttributes(java.util.Map<? extends java.text.AttributedCharacterIterator.Attribute,?>, int, int);
-    method public java.text.AttributedCharacterIterator getIterator();
-    method public java.text.AttributedCharacterIterator getIterator(java.text.AttributedCharacterIterator.Attribute[]);
-    method public java.text.AttributedCharacterIterator getIterator(java.text.AttributedCharacterIterator.Attribute[], int, int);
-  }
-
-  public final class Bidi {
-    ctor public Bidi(String, int);
-    ctor public Bidi(java.text.AttributedCharacterIterator);
-    ctor public Bidi(char[], int, byte[], int, int, int);
-    method public boolean baseIsLeftToRight();
-    method public java.text.Bidi createLineBidi(int, int);
-    method public int getBaseLevel();
-    method public int getLength();
-    method public int getLevelAt(int);
-    method public int getRunCount();
-    method public int getRunLevel(int);
-    method public int getRunLimit(int);
-    method public int getRunStart(int);
-    method public boolean isLeftToRight();
-    method public boolean isMixed();
-    method public boolean isRightToLeft();
-    method public static void reorderVisually(byte[], int, Object[], int, int);
-    method public static boolean requiresBidi(char[], int, int);
-    field public static final int DIRECTION_DEFAULT_LEFT_TO_RIGHT = -2; // 0xfffffffe
-    field public static final int DIRECTION_DEFAULT_RIGHT_TO_LEFT = -1; // 0xffffffff
-    field public static final int DIRECTION_LEFT_TO_RIGHT = 0; // 0x0
-    field public static final int DIRECTION_RIGHT_TO_LEFT = 1; // 0x1
-  }
-
-  public abstract class BreakIterator implements java.lang.Cloneable {
-    ctor protected BreakIterator();
-    method public Object clone();
-    method public abstract int current();
-    method public abstract int first();
-    method public abstract int following(int);
-    method public static java.util.Locale[] getAvailableLocales();
-    method public static java.text.BreakIterator getCharacterInstance();
-    method public static java.text.BreakIterator getCharacterInstance(java.util.Locale);
-    method public static java.text.BreakIterator getLineInstance();
-    method public static java.text.BreakIterator getLineInstance(java.util.Locale);
-    method public static java.text.BreakIterator getSentenceInstance();
-    method public static java.text.BreakIterator getSentenceInstance(java.util.Locale);
-    method public abstract java.text.CharacterIterator getText();
-    method public static java.text.BreakIterator getWordInstance();
-    method public static java.text.BreakIterator getWordInstance(java.util.Locale);
-    method public boolean isBoundary(int);
-    method public abstract int last();
-    method public abstract int next(int);
-    method public abstract int next();
-    method public int preceding(int);
-    method public abstract int previous();
-    method public void setText(String);
-    method public abstract void setText(java.text.CharacterIterator);
-    field public static final int DONE = -1; // 0xffffffff
-  }
-
-  public interface CharacterIterator extends java.lang.Cloneable {
-    method public Object clone();
-    method public char current();
-    method public char first();
-    method public int getBeginIndex();
-    method public int getEndIndex();
-    method public int getIndex();
-    method public char last();
-    method public char next();
-    method public char previous();
-    method public char setIndex(int);
-    field public static final char DONE = 65535; // 0xffff '\uffff'
-  }
-
-  public class ChoiceFormat extends java.text.NumberFormat {
-    ctor public ChoiceFormat(String);
-    ctor public ChoiceFormat(double[], String[]);
-    method public void applyPattern(String);
-    method public StringBuffer format(long, StringBuffer, java.text.FieldPosition);
-    method public StringBuffer format(double, StringBuffer, java.text.FieldPosition);
-    method public Object[] getFormats();
-    method public double[] getLimits();
-    method public static final double nextDouble(double);
-    method public static double nextDouble(double, boolean);
-    method public Number parse(String, java.text.ParsePosition);
-    method public static final double previousDouble(double);
-    method public void setChoices(double[], String[]);
-    method public String toPattern();
-  }
-
-  public final class CollationElementIterator {
-    method public int getMaxExpansion(int);
-    method public int getOffset();
-    method public int next();
-    method public int previous();
-    method public static int primaryOrder(int);
-    method public void reset();
-    method public static short secondaryOrder(int);
-    method public void setOffset(int);
-    method public void setText(String);
-    method public void setText(java.text.CharacterIterator);
-    method public static short tertiaryOrder(int);
-    field public static final int NULLORDER = -1; // 0xffffffff
-  }
-
-  public abstract class CollationKey implements java.lang.Comparable<java.text.CollationKey> {
-    ctor protected CollationKey(String);
-    method public abstract int compareTo(java.text.CollationKey);
-    method public String getSourceString();
-    method public abstract byte[] toByteArray();
-  }
-
-  public abstract class Collator implements java.lang.Cloneable java.util.Comparator<java.lang.Object> {
-    ctor protected Collator();
-    method public Object clone();
-    method public abstract int compare(String, String);
-    method public int compare(Object, Object);
-    method public boolean equals(String, String);
-    method public static java.util.Locale[] getAvailableLocales();
-    method public abstract java.text.CollationKey getCollationKey(String);
-    method public int getDecomposition();
-    method public static java.text.Collator getInstance();
-    method public static java.text.Collator getInstance(java.util.Locale);
-    method public int getStrength();
-    method public abstract int hashCode();
-    method public void setDecomposition(int);
-    method public void setStrength(int);
-    field public static final int CANONICAL_DECOMPOSITION = 1; // 0x1
-    field public static final int FULL_DECOMPOSITION = 2; // 0x2
-    field public static final int IDENTICAL = 3; // 0x3
-    field public static final int NO_DECOMPOSITION = 0; // 0x0
-    field public static final int PRIMARY = 0; // 0x0
-    field public static final int SECONDARY = 1; // 0x1
-    field public static final int TERTIARY = 2; // 0x2
-  }
-
-  public abstract class DateFormat extends java.text.Format {
-    ctor protected DateFormat();
-    method @NonNull public final StringBuffer format(@NonNull Object, @NonNull StringBuffer, @NonNull java.text.FieldPosition);
-    method @NonNull public abstract StringBuffer format(@NonNull java.util.Date, @NonNull StringBuffer, @NonNull java.text.FieldPosition);
-    method @NonNull public final String format(@NonNull java.util.Date);
-    method @NonNull public static java.util.Locale[] getAvailableLocales();
-    method @NonNull public java.util.Calendar getCalendar();
-    method @NonNull public static final java.text.DateFormat getDateInstance();
-    method @NonNull public static final java.text.DateFormat getDateInstance(int);
-    method @NonNull public static final java.text.DateFormat getDateInstance(int, @NonNull java.util.Locale);
-    method @NonNull public static final java.text.DateFormat getDateTimeInstance();
-    method @NonNull public static final java.text.DateFormat getDateTimeInstance(int, int);
-    method @NonNull public static final java.text.DateFormat getDateTimeInstance(int, int, @NonNull java.util.Locale);
-    method @NonNull public static final java.text.DateFormat getInstance();
-    method @NonNull public java.text.NumberFormat getNumberFormat();
-    method @NonNull public static final java.text.DateFormat getTimeInstance();
-    method @NonNull public static final java.text.DateFormat getTimeInstance(int);
-    method @NonNull public static final java.text.DateFormat getTimeInstance(int, @NonNull java.util.Locale);
-    method @NonNull public java.util.TimeZone getTimeZone();
-    method public boolean isLenient();
-    method @Nullable public java.util.Date parse(@NonNull String) throws java.text.ParseException;
-    method @Nullable public abstract java.util.Date parse(@NonNull String, @NonNull java.text.ParsePosition);
-    method @Nullable public Object parseObject(@NonNull String, @NonNull java.text.ParsePosition);
-    method public void setCalendar(@NonNull java.util.Calendar);
-    method public void setLenient(boolean);
-    method public void setNumberFormat(@NonNull java.text.NumberFormat);
-    method public void setTimeZone(@NonNull java.util.TimeZone);
-    field public static final int AM_PM_FIELD = 14; // 0xe
-    field public static final int DATE_FIELD = 3; // 0x3
-    field public static final int DAY_OF_WEEK_FIELD = 9; // 0x9
-    field public static final int DAY_OF_WEEK_IN_MONTH_FIELD = 11; // 0xb
-    field public static final int DAY_OF_YEAR_FIELD = 10; // 0xa
-    field public static final int DEFAULT = 2; // 0x2
-    field public static final int ERA_FIELD = 0; // 0x0
-    field public static final int FULL = 0; // 0x0
-    field public static final int HOUR0_FIELD = 16; // 0x10
-    field public static final int HOUR1_FIELD = 15; // 0xf
-    field public static final int HOUR_OF_DAY0_FIELD = 5; // 0x5
-    field public static final int HOUR_OF_DAY1_FIELD = 4; // 0x4
-    field public static final int LONG = 1; // 0x1
-    field public static final int MEDIUM = 2; // 0x2
-    field public static final int MILLISECOND_FIELD = 8; // 0x8
-    field public static final int MINUTE_FIELD = 6; // 0x6
-    field public static final int MONTH_FIELD = 2; // 0x2
-    field public static final int SECOND_FIELD = 7; // 0x7
-    field public static final int SHORT = 3; // 0x3
-    field public static final int TIMEZONE_FIELD = 17; // 0x11
-    field public static final int WEEK_OF_MONTH_FIELD = 13; // 0xd
-    field public static final int WEEK_OF_YEAR_FIELD = 12; // 0xc
-    field public static final int YEAR_FIELD = 1; // 0x1
-    field @NonNull protected java.util.Calendar calendar;
-    field @NonNull protected java.text.NumberFormat numberFormat;
-  }
-
-  public static class DateFormat.Field extends java.text.Format.Field {
-    ctor protected DateFormat.Field(@NonNull String, int);
-    method public int getCalendarField();
-    method @NonNull public static java.text.DateFormat.Field ofCalendarField(int);
-    field @NonNull public static final java.text.DateFormat.Field AM_PM;
-    field @NonNull public static final java.text.DateFormat.Field DAY_OF_MONTH;
-    field @NonNull public static final java.text.DateFormat.Field DAY_OF_WEEK;
-    field @NonNull public static final java.text.DateFormat.Field DAY_OF_WEEK_IN_MONTH;
-    field @NonNull public static final java.text.DateFormat.Field DAY_OF_YEAR;
-    field @NonNull public static final java.text.DateFormat.Field ERA;
-    field @NonNull public static final java.text.DateFormat.Field HOUR0;
-    field @NonNull public static final java.text.DateFormat.Field HOUR1;
-    field @NonNull public static final java.text.DateFormat.Field HOUR_OF_DAY0;
-    field @NonNull public static final java.text.DateFormat.Field HOUR_OF_DAY1;
-    field @NonNull public static final java.text.DateFormat.Field MILLISECOND;
-    field @NonNull public static final java.text.DateFormat.Field MINUTE;
-    field @NonNull public static final java.text.DateFormat.Field MONTH;
-    field @NonNull public static final java.text.DateFormat.Field SECOND;
-    field @NonNull public static final java.text.DateFormat.Field TIME_ZONE;
-    field @NonNull public static final java.text.DateFormat.Field WEEK_OF_MONTH;
-    field @NonNull public static final java.text.DateFormat.Field WEEK_OF_YEAR;
-    field @NonNull public static final java.text.DateFormat.Field YEAR;
-  }
-
-  public class DateFormatSymbols implements java.lang.Cloneable java.io.Serializable {
-    ctor public DateFormatSymbols();
-    ctor public DateFormatSymbols(java.util.Locale);
-    method public Object clone();
-    method public String[] getAmPmStrings();
-    method public static java.util.Locale[] getAvailableLocales();
-    method public String[] getEras();
-    method public static final java.text.DateFormatSymbols getInstance();
-    method public static final java.text.DateFormatSymbols getInstance(java.util.Locale);
-    method public String getLocalPatternChars();
-    method public String[] getMonths();
-    method public String[] getShortMonths();
-    method public String[] getShortWeekdays();
-    method public String[] getWeekdays();
-    method public String[][] getZoneStrings();
-    method public void setAmPmStrings(String[]);
-    method public void setEras(String[]);
-    method public void setLocalPatternChars(String);
-    method public void setMonths(String[]);
-    method public void setShortMonths(String[]);
-    method public void setShortWeekdays(String[]);
-    method public void setWeekdays(String[]);
-    method public void setZoneStrings(String[][]);
-  }
-
-  public class DecimalFormat extends java.text.NumberFormat {
-    ctor public DecimalFormat();
-    ctor public DecimalFormat(String);
-    ctor public DecimalFormat(String, java.text.DecimalFormatSymbols);
-    method public void applyLocalizedPattern(String);
-    method public void applyPattern(String);
-    method public final StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
-    method public StringBuffer format(double, StringBuffer, java.text.FieldPosition);
-    method public StringBuffer format(long, StringBuffer, java.text.FieldPosition);
-    method public java.text.DecimalFormatSymbols getDecimalFormatSymbols();
-    method public int getGroupingSize();
-    method public int getMultiplier();
-    method public String getNegativePrefix();
-    method public String getNegativeSuffix();
-    method public String getPositivePrefix();
-    method public String getPositiveSuffix();
-    method public boolean isDecimalSeparatorAlwaysShown();
-    method public boolean isParseBigDecimal();
-    method public Number parse(String, java.text.ParsePosition);
-    method public void setDecimalFormatSymbols(java.text.DecimalFormatSymbols);
-    method public void setDecimalSeparatorAlwaysShown(boolean);
-    method public void setGroupingSize(int);
-    method public void setMultiplier(int);
-    method public void setNegativePrefix(String);
-    method public void setNegativeSuffix(String);
-    method public void setParseBigDecimal(boolean);
-    method public void setPositivePrefix(String);
-    method public void setPositiveSuffix(String);
-    method public String toLocalizedPattern();
-    method public String toPattern();
-  }
-
-  public class DecimalFormatSymbols implements java.lang.Cloneable java.io.Serializable {
-    ctor public DecimalFormatSymbols();
-    ctor public DecimalFormatSymbols(java.util.Locale);
-    method public Object clone();
-    method public static java.util.Locale[] getAvailableLocales();
-    method public java.util.Currency getCurrency();
-    method public String getCurrencySymbol();
-    method public char getDecimalSeparator();
-    method public char getDigit();
-    method public String getExponentSeparator();
-    method public char getGroupingSeparator();
-    method public String getInfinity();
-    method public static final java.text.DecimalFormatSymbols getInstance();
-    method public static final java.text.DecimalFormatSymbols getInstance(java.util.Locale);
-    method public String getInternationalCurrencySymbol();
-    method public char getMinusSign();
-    method public char getMonetaryDecimalSeparator();
-    method public String getNaN();
-    method public char getPatternSeparator();
-    method public char getPerMill();
-    method public char getPercent();
-    method public char getZeroDigit();
-    method public void setCurrency(java.util.Currency);
-    method public void setCurrencySymbol(String);
-    method public void setDecimalSeparator(char);
-    method public void setDigit(char);
-    method public void setExponentSeparator(String);
-    method public void setGroupingSeparator(char);
-    method public void setInfinity(String);
-    method public void setInternationalCurrencySymbol(String);
-    method public void setMinusSign(char);
-    method public void setMonetaryDecimalSeparator(char);
-    method public void setNaN(String);
-    method public void setPatternSeparator(char);
-    method public void setPerMill(char);
-    method public void setPercent(char);
-    method public void setZeroDigit(char);
-  }
-
-  public class FieldPosition {
-    ctor public FieldPosition(int);
-    ctor public FieldPosition(java.text.Format.Field);
-    ctor public FieldPosition(java.text.Format.Field, int);
-    method public int getBeginIndex();
-    method public int getEndIndex();
-    method public int getField();
-    method public java.text.Format.Field getFieldAttribute();
-    method public void setBeginIndex(int);
-    method public void setEndIndex(int);
-  }
-
-  public abstract class Format implements java.lang.Cloneable java.io.Serializable {
-    ctor protected Format();
-    method public Object clone();
-    method public final String format(Object);
-    method public abstract StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
-    method public java.text.AttributedCharacterIterator formatToCharacterIterator(Object);
-    method public abstract Object parseObject(String, java.text.ParsePosition);
-    method public Object parseObject(String) throws java.text.ParseException;
-  }
-
-  public static class Format.Field extends java.text.AttributedCharacterIterator.Attribute {
-    ctor protected Format.Field(String);
-  }
-
-  public class MessageFormat extends java.text.Format {
-    ctor public MessageFormat(String);
-    ctor public MessageFormat(String, java.util.Locale);
-    method public void applyPattern(String);
-    method public final StringBuffer format(Object[], StringBuffer, java.text.FieldPosition);
-    method public static String format(String, java.lang.Object...);
-    method public final StringBuffer format(Object, StringBuffer, java.text.FieldPosition);
-    method public java.text.Format[] getFormats();
-    method public java.text.Format[] getFormatsByArgumentIndex();
-    method public java.util.Locale getLocale();
-    method public Object[] parse(String, java.text.ParsePosition);
-    method public Object[] parse(String) throws java.text.ParseException;
-    method public Object parseObject(String, java.text.ParsePosition);
-    method public void setFormat(int, java.text.Format);
-    method public void setFormatByArgumentIndex(int, java.text.Format);
-    method public void setFormats(java.text.Format[]);
-    method public void setFormatsByArgumentIndex(java.text.Format[]);
-    method public void setLocale(java.util.Locale);
-    method public String toPattern();
-  }
-
-  public static class MessageFormat.Field extends java.text.Format.Field {
-    ctor protected MessageFormat.Field(String);
-    field public static final java.text.MessageFormat.Field ARGUMENT;
-  }
-
-  public final class Normalizer {
-    method public static boolean isNormalized(CharSequence, java.text.Normalizer.Form);
-    method public static String normalize(CharSequence, java.text.Normalizer.Form);
-  }
-
-  public enum Normalizer.Form {
-    enum_constant public static final java.text.Normalizer.Form NFC;
-    enum_constant public static final java.text.Normalizer.Form NFD;
-    enum_constant public static final java.text.Normalizer.Form NFKC;
-    enum_constant public static final java.text.Normalizer.Form NFKD;
-  }
-
-  public abstract class NumberFormat extends java.text.Format {
-    ctor protected NumberFormat();
-    method @NonNull public StringBuffer format(@NonNull Object, @NonNull StringBuffer, @NonNull java.text.FieldPosition);
-    method @NonNull public final String format(double);
-    method @NonNull public final String format(long);
-    method @NonNull public abstract StringBuffer format(double, @NonNull StringBuffer, @NonNull java.text.FieldPosition);
-    method @NonNull public abstract StringBuffer format(long, @NonNull StringBuffer, @NonNull java.text.FieldPosition);
-    method @NonNull public static java.util.Locale[] getAvailableLocales();
-    method @Nullable public java.util.Currency getCurrency();
-    method @NonNull public static final java.text.NumberFormat getCurrencyInstance();
-    method @NonNull public static java.text.NumberFormat getCurrencyInstance(@NonNull java.util.Locale);
-    method @NonNull public static final java.text.NumberFormat getInstance();
-    method @NonNull public static java.text.NumberFormat getInstance(@NonNull java.util.Locale);
-    method @NonNull public static final java.text.NumberFormat getIntegerInstance();
-    method @NonNull public static java.text.NumberFormat getIntegerInstance(@NonNull java.util.Locale);
-    method public int getMaximumFractionDigits();
-    method public int getMaximumIntegerDigits();
-    method public int getMinimumFractionDigits();
-    method public int getMinimumIntegerDigits();
-    method @NonNull public static final java.text.NumberFormat getNumberInstance();
-    method @NonNull public static java.text.NumberFormat getNumberInstance(@NonNull java.util.Locale);
-    method @NonNull public static final java.text.NumberFormat getPercentInstance();
-    method @NonNull public static java.text.NumberFormat getPercentInstance(@NonNull java.util.Locale);
-    method @NonNull public java.math.RoundingMode getRoundingMode();
-    method public boolean isGroupingUsed();
-    method public boolean isParseIntegerOnly();
-    method @Nullable public abstract Number parse(@NonNull String, @NonNull java.text.ParsePosition);
-    method @Nullable public Number parse(@NonNull String) throws java.text.ParseException;
-    method @Nullable public final Object parseObject(@NonNull String, @NonNull java.text.ParsePosition);
-    method public void setCurrency(@NonNull java.util.Currency);
-    method public void setGroupingUsed(boolean);
-    method public void setMaximumFractionDigits(int);
-    method public void setMaximumIntegerDigits(int);
-    method public void setMinimumFractionDigits(int);
-    method public void setMinimumIntegerDigits(int);
-    method public void setParseIntegerOnly(boolean);
-    method public void setRoundingMode(@Nullable java.math.RoundingMode);
-    field public static final int FRACTION_FIELD = 1; // 0x1
-    field public static final int INTEGER_FIELD = 0; // 0x0
-  }
-
-  public static class NumberFormat.Field extends java.text.Format.Field {
-    ctor protected NumberFormat.Field(@NonNull String);
-    field @NonNull public static final java.text.NumberFormat.Field CURRENCY;
-    field @NonNull public static final java.text.NumberFormat.Field DECIMAL_SEPARATOR;
-    field @NonNull public static final java.text.NumberFormat.Field EXPONENT;
-    field @NonNull public static final java.text.NumberFormat.Field EXPONENT_SIGN;
-    field @NonNull public static final java.text.NumberFormat.Field EXPONENT_SYMBOL;
-    field @NonNull public static final java.text.NumberFormat.Field FRACTION;
-    field @NonNull public static final java.text.NumberFormat.Field GROUPING_SEPARATOR;
-    field @NonNull public static final java.text.NumberFormat.Field INTEGER;
-    field @NonNull public static final java.text.NumberFormat.Field PERCENT;
-    field @NonNull public static final java.text.NumberFormat.Field PERMILLE;
-    field @NonNull public static final java.text.NumberFormat.Field SIGN;
-  }
-
-  public class ParseException extends java.lang.Exception {
-    ctor public ParseException(String, int);
-    method public int getErrorOffset();
-  }
-
-  public class ParsePosition {
-    ctor public ParsePosition(int);
-    method public int getErrorIndex();
-    method public int getIndex();
-    method public void setErrorIndex(int);
-    method public void setIndex(int);
-  }
-
-  public class RuleBasedCollator extends java.text.Collator {
-    ctor public RuleBasedCollator(String) throws java.text.ParseException;
-    method public int compare(String, String);
-    method public java.text.CollationElementIterator getCollationElementIterator(String);
-    method public java.text.CollationElementIterator getCollationElementIterator(java.text.CharacterIterator);
-    method public java.text.CollationKey getCollationKey(String);
-    method public String getRules();
-  }
-
-  public class SimpleDateFormat extends java.text.DateFormat {
-    ctor public SimpleDateFormat();
-    ctor public SimpleDateFormat(String);
-    ctor public SimpleDateFormat(String, java.util.Locale);
-    ctor public SimpleDateFormat(String, java.text.DateFormatSymbols);
-    method public void applyLocalizedPattern(String);
-    method public void applyPattern(String);
-    method public StringBuffer format(java.util.Date, StringBuffer, java.text.FieldPosition);
-    method public java.util.Date get2DigitYearStart();
-    method public java.text.DateFormatSymbols getDateFormatSymbols();
-    method public java.util.Date parse(String, java.text.ParsePosition);
-    method public void set2DigitYearStart(java.util.Date);
-    method public void setDateFormatSymbols(java.text.DateFormatSymbols);
-    method public String toLocalizedPattern();
-    method public String toPattern();
-  }
-
-  public final class StringCharacterIterator implements java.text.CharacterIterator {
-    ctor public StringCharacterIterator(String);
-    ctor public StringCharacterIterator(String, int);
-    ctor public StringCharacterIterator(String, int, int, int);
-    method public Object clone();
-    method public char current();
-    method public char first();
-    method public int getBeginIndex();
-    method public int getEndIndex();
-    method public int getIndex();
-    method public char last();
-    method public char next();
-    method public char previous();
-    method public char setIndex(int);
-    method public void setText(String);
-  }
-
-}
-
-package java.time {
-
-  public abstract class Clock {
-    ctor protected Clock();
-    method public static java.time.Clock fixed(java.time.Instant, java.time.ZoneId);
-    method public abstract java.time.ZoneId getZone();
-    method public abstract java.time.Instant instant();
-    method public long millis();
-    method public static java.time.Clock offset(java.time.Clock, java.time.Duration);
-    method public static java.time.Clock system(java.time.ZoneId);
-    method public static java.time.Clock systemDefaultZone();
-    method public static java.time.Clock systemUTC();
-    method public static java.time.Clock tick(java.time.Clock, java.time.Duration);
-    method public static java.time.Clock tickMinutes(java.time.ZoneId);
-    method public static java.time.Clock tickSeconds(java.time.ZoneId);
-    method public abstract java.time.Clock withZone(java.time.ZoneId);
-  }
-
-  public class DateTimeException extends java.lang.RuntimeException {
-    ctor public DateTimeException(String);
-    ctor public DateTimeException(String, Throwable);
-  }
-
-  public enum DayOfWeek implements java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
-    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public static java.time.DayOfWeek from(java.time.temporal.TemporalAccessor);
-    method public String getDisplayName(java.time.format.TextStyle, java.util.Locale);
-    method public long getLong(java.time.temporal.TemporalField);
-    method public int getValue();
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public java.time.DayOfWeek minus(long);
-    method public static java.time.DayOfWeek of(int);
-    method public java.time.DayOfWeek plus(long);
-    enum_constant public static final java.time.DayOfWeek FRIDAY;
-    enum_constant public static final java.time.DayOfWeek MONDAY;
-    enum_constant public static final java.time.DayOfWeek SATURDAY;
-    enum_constant public static final java.time.DayOfWeek SUNDAY;
-    enum_constant public static final java.time.DayOfWeek THURSDAY;
-    enum_constant public static final java.time.DayOfWeek TUESDAY;
-    enum_constant public static final java.time.DayOfWeek WEDNESDAY;
-  }
-
-  public final class Duration implements java.lang.Comparable<java.time.Duration> java.io.Serializable java.time.temporal.TemporalAmount {
-    method public java.time.Duration abs();
-    method public java.time.temporal.Temporal addTo(java.time.temporal.Temporal);
-    method public static java.time.Duration between(java.time.temporal.Temporal, java.time.temporal.Temporal);
-    method public int compareTo(java.time.Duration);
-    method public java.time.Duration dividedBy(long);
-    method public static java.time.Duration from(java.time.temporal.TemporalAmount);
-    method public long get(java.time.temporal.TemporalUnit);
-    method public int getNano();
-    method public long getSeconds();
-    method public java.util.List<java.time.temporal.TemporalUnit> getUnits();
-    method public boolean isNegative();
-    method public boolean isZero();
-    method public java.time.Duration minus(java.time.Duration);
-    method public java.time.Duration minus(long, java.time.temporal.TemporalUnit);
-    method public java.time.Duration minusDays(long);
-    method public java.time.Duration minusHours(long);
-    method public java.time.Duration minusMillis(long);
-    method public java.time.Duration minusMinutes(long);
-    method public java.time.Duration minusNanos(long);
-    method public java.time.Duration minusSeconds(long);
-    method public java.time.Duration multipliedBy(long);
-    method public java.time.Duration negated();
-    method public static java.time.Duration of(long, java.time.temporal.TemporalUnit);
-    method public static java.time.Duration ofDays(long);
-    method public static java.time.Duration ofHours(long);
-    method public static java.time.Duration ofMillis(long);
-    method public static java.time.Duration ofMinutes(long);
-    method public static java.time.Duration ofNanos(long);
-    method public static java.time.Duration ofSeconds(long);
-    method public static java.time.Duration ofSeconds(long, long);
-    method public static java.time.Duration parse(CharSequence);
-    method public java.time.Duration plus(java.time.Duration);
-    method public java.time.Duration plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.Duration plusDays(long);
-    method public java.time.Duration plusHours(long);
-    method public java.time.Duration plusMillis(long);
-    method public java.time.Duration plusMinutes(long);
-    method public java.time.Duration plusNanos(long);
-    method public java.time.Duration plusSeconds(long);
-    method public java.time.temporal.Temporal subtractFrom(java.time.temporal.Temporal);
-    method public long toDays();
-    method public long toHours();
-    method public long toMillis();
-    method public long toMinutes();
-    method public long toNanos();
-    method public java.time.Duration withNanos(int);
-    method public java.time.Duration withSeconds(long);
-    field public static final java.time.Duration ZERO;
-  }
-
-  public final class Instant implements java.lang.Comparable<java.time.Instant> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
-    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public java.time.OffsetDateTime atOffset(java.time.ZoneOffset);
-    method public java.time.ZonedDateTime atZone(java.time.ZoneId);
-    method public int compareTo(java.time.Instant);
-    method public static java.time.Instant from(java.time.temporal.TemporalAccessor);
-    method public long getEpochSecond();
-    method public long getLong(java.time.temporal.TemporalField);
-    method public int getNano();
-    method public boolean isAfter(java.time.Instant);
-    method public boolean isBefore(java.time.Instant);
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public boolean isSupported(java.time.temporal.TemporalUnit);
-    method public java.time.Instant minus(java.time.temporal.TemporalAmount);
-    method public java.time.Instant minus(long, java.time.temporal.TemporalUnit);
-    method public java.time.Instant minusMillis(long);
-    method public java.time.Instant minusNanos(long);
-    method public java.time.Instant minusSeconds(long);
-    method public static java.time.Instant now();
-    method public static java.time.Instant now(java.time.Clock);
-    method public static java.time.Instant ofEpochMilli(long);
-    method public static java.time.Instant ofEpochSecond(long);
-    method public static java.time.Instant ofEpochSecond(long, long);
-    method public static java.time.Instant parse(CharSequence);
-    method public java.time.Instant plus(java.time.temporal.TemporalAmount);
-    method public java.time.Instant plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.Instant plusMillis(long);
-    method public java.time.Instant plusNanos(long);
-    method public java.time.Instant plusSeconds(long);
-    method public long toEpochMilli();
-    method public java.time.Instant truncatedTo(java.time.temporal.TemporalUnit);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.Instant with(java.time.temporal.TemporalAdjuster);
-    method public java.time.Instant with(java.time.temporal.TemporalField, long);
-    field public static final java.time.Instant EPOCH;
-    field public static final java.time.Instant MAX;
-    field public static final java.time.Instant MIN;
-  }
-
-  public final class LocalDate implements java.time.chrono.ChronoLocalDate java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
-    method public java.time.LocalDateTime atStartOfDay();
-    method public java.time.ZonedDateTime atStartOfDay(java.time.ZoneId);
-    method public java.time.LocalDateTime atTime(java.time.LocalTime);
-    method public java.time.LocalDateTime atTime(int, int);
-    method public java.time.LocalDateTime atTime(int, int, int);
-    method public java.time.LocalDateTime atTime(int, int, int, int);
-    method public java.time.OffsetDateTime atTime(java.time.OffsetTime);
-    method public static java.time.LocalDate from(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.IsoChronology getChronology();
-    method public int getDayOfMonth();
-    method public java.time.DayOfWeek getDayOfWeek();
-    method public int getDayOfYear();
-    method public long getLong(java.time.temporal.TemporalField);
-    method public java.time.Month getMonth();
-    method public int getMonthValue();
-    method public int getYear();
-    method public int lengthOfMonth();
-    method public java.time.LocalDate minus(java.time.temporal.TemporalAmount);
-    method public java.time.LocalDate minus(long, java.time.temporal.TemporalUnit);
-    method public java.time.LocalDate minusDays(long);
-    method public java.time.LocalDate minusMonths(long);
-    method public java.time.LocalDate minusWeeks(long);
-    method public java.time.LocalDate minusYears(long);
-    method public static java.time.LocalDate now();
-    method public static java.time.LocalDate now(java.time.ZoneId);
-    method public static java.time.LocalDate now(java.time.Clock);
-    method public static java.time.LocalDate of(int, java.time.Month, int);
-    method public static java.time.LocalDate of(int, int, int);
-    method public static java.time.LocalDate ofEpochDay(long);
-    method public static java.time.LocalDate ofYearDay(int, int);
-    method public static java.time.LocalDate parse(CharSequence);
-    method public static java.time.LocalDate parse(CharSequence, java.time.format.DateTimeFormatter);
-    method public java.time.LocalDate plus(java.time.temporal.TemporalAmount);
-    method public java.time.LocalDate plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.LocalDate plusDays(long);
-    method public java.time.LocalDate plusMonths(long);
-    method public java.time.LocalDate plusWeeks(long);
-    method public java.time.LocalDate plusYears(long);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.Period until(java.time.chrono.ChronoLocalDate);
-    method public java.time.LocalDate with(java.time.temporal.TemporalAdjuster);
-    method public java.time.LocalDate with(java.time.temporal.TemporalField, long);
-    method public java.time.LocalDate withDayOfMonth(int);
-    method public java.time.LocalDate withDayOfYear(int);
-    method public java.time.LocalDate withMonth(int);
-    method public java.time.LocalDate withYear(int);
-    field public static final java.time.LocalDate MAX;
-    field public static final java.time.LocalDate MIN;
-  }
-
-  public final class LocalDateTime implements java.time.chrono.ChronoLocalDateTime<java.time.LocalDate> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
-    method public java.time.OffsetDateTime atOffset(java.time.ZoneOffset);
-    method public java.time.ZonedDateTime atZone(java.time.ZoneId);
-    method public static java.time.LocalDateTime from(java.time.temporal.TemporalAccessor);
-    method public int getDayOfMonth();
-    method public java.time.DayOfWeek getDayOfWeek();
-    method public int getDayOfYear();
-    method public int getHour();
-    method public long getLong(java.time.temporal.TemporalField);
-    method public int getMinute();
-    method public java.time.Month getMonth();
-    method public int getMonthValue();
-    method public int getNano();
-    method public int getSecond();
-    method public int getYear();
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public java.time.LocalDateTime minus(java.time.temporal.TemporalAmount);
-    method public java.time.LocalDateTime minus(long, java.time.temporal.TemporalUnit);
-    method public java.time.LocalDateTime minusDays(long);
-    method public java.time.LocalDateTime minusHours(long);
-    method public java.time.LocalDateTime minusMinutes(long);
-    method public java.time.LocalDateTime minusMonths(long);
-    method public java.time.LocalDateTime minusNanos(long);
-    method public java.time.LocalDateTime minusSeconds(long);
-    method public java.time.LocalDateTime minusWeeks(long);
-    method public java.time.LocalDateTime minusYears(long);
-    method public static java.time.LocalDateTime now();
-    method public static java.time.LocalDateTime now(java.time.ZoneId);
-    method public static java.time.LocalDateTime now(java.time.Clock);
-    method public static java.time.LocalDateTime of(int, java.time.Month, int, int, int);
-    method public static java.time.LocalDateTime of(int, java.time.Month, int, int, int, int);
-    method public static java.time.LocalDateTime of(int, java.time.Month, int, int, int, int, int);
-    method public static java.time.LocalDateTime of(int, int, int, int, int);
-    method public static java.time.LocalDateTime of(int, int, int, int, int, int);
-    method public static java.time.LocalDateTime of(int, int, int, int, int, int, int);
-    method public static java.time.LocalDateTime of(java.time.LocalDate, java.time.LocalTime);
-    method public static java.time.LocalDateTime ofEpochSecond(long, int, java.time.ZoneOffset);
-    method public static java.time.LocalDateTime ofInstant(java.time.Instant, java.time.ZoneId);
-    method public static java.time.LocalDateTime parse(CharSequence);
-    method public static java.time.LocalDateTime parse(CharSequence, java.time.format.DateTimeFormatter);
-    method public java.time.LocalDateTime plus(java.time.temporal.TemporalAmount);
-    method public java.time.LocalDateTime plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.LocalDateTime plusDays(long);
-    method public java.time.LocalDateTime plusHours(long);
-    method public java.time.LocalDateTime plusMinutes(long);
-    method public java.time.LocalDateTime plusMonths(long);
-    method public java.time.LocalDateTime plusNanos(long);
-    method public java.time.LocalDateTime plusSeconds(long);
-    method public java.time.LocalDateTime plusWeeks(long);
-    method public java.time.LocalDateTime plusYears(long);
-    method public java.time.LocalDate toLocalDate();
-    method public java.time.LocalTime toLocalTime();
-    method public java.time.LocalDateTime truncatedTo(java.time.temporal.TemporalUnit);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.LocalDateTime with(java.time.temporal.TemporalAdjuster);
-    method public java.time.LocalDateTime with(java.time.temporal.TemporalField, long);
-    method public java.time.LocalDateTime withDayOfMonth(int);
-    method public java.time.LocalDateTime withDayOfYear(int);
-    method public java.time.LocalDateTime withHour(int);
-    method public java.time.LocalDateTime withMinute(int);
-    method public java.time.LocalDateTime withMonth(int);
-    method public java.time.LocalDateTime withNano(int);
-    method public java.time.LocalDateTime withSecond(int);
-    method public java.time.LocalDateTime withYear(int);
-    field public static final java.time.LocalDateTime MAX;
-    field public static final java.time.LocalDateTime MIN;
-  }
-
-  public final class LocalTime implements java.lang.Comparable<java.time.LocalTime> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
-    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public java.time.LocalDateTime atDate(java.time.LocalDate);
-    method public java.time.OffsetTime atOffset(java.time.ZoneOffset);
-    method public int compareTo(java.time.LocalTime);
-    method public String format(java.time.format.DateTimeFormatter);
-    method public static java.time.LocalTime from(java.time.temporal.TemporalAccessor);
-    method public int getHour();
-    method public long getLong(java.time.temporal.TemporalField);
-    method public int getMinute();
-    method public int getNano();
-    method public int getSecond();
-    method public boolean isAfter(java.time.LocalTime);
-    method public boolean isBefore(java.time.LocalTime);
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public boolean isSupported(java.time.temporal.TemporalUnit);
-    method public java.time.LocalTime minus(java.time.temporal.TemporalAmount);
-    method public java.time.LocalTime minus(long, java.time.temporal.TemporalUnit);
-    method public java.time.LocalTime minusHours(long);
-    method public java.time.LocalTime minusMinutes(long);
-    method public java.time.LocalTime minusNanos(long);
-    method public java.time.LocalTime minusSeconds(long);
-    method public static java.time.LocalTime now();
-    method public static java.time.LocalTime now(java.time.ZoneId);
-    method public static java.time.LocalTime now(java.time.Clock);
-    method public static java.time.LocalTime of(int, int);
-    method public static java.time.LocalTime of(int, int, int);
-    method public static java.time.LocalTime of(int, int, int, int);
-    method public static java.time.LocalTime ofNanoOfDay(long);
-    method public static java.time.LocalTime ofSecondOfDay(long);
-    method public static java.time.LocalTime parse(CharSequence);
-    method public static java.time.LocalTime parse(CharSequence, java.time.format.DateTimeFormatter);
-    method public java.time.LocalTime plus(java.time.temporal.TemporalAmount);
-    method public java.time.LocalTime plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.LocalTime plusHours(long);
-    method public java.time.LocalTime plusMinutes(long);
-    method public java.time.LocalTime plusNanos(long);
-    method public java.time.LocalTime plusSeconds(long);
-    method public long toNanoOfDay();
-    method public int toSecondOfDay();
-    method public java.time.LocalTime truncatedTo(java.time.temporal.TemporalUnit);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.LocalTime with(java.time.temporal.TemporalAdjuster);
-    method public java.time.LocalTime with(java.time.temporal.TemporalField, long);
-    method public java.time.LocalTime withHour(int);
-    method public java.time.LocalTime withMinute(int);
-    method public java.time.LocalTime withNano(int);
-    method public java.time.LocalTime withSecond(int);
-    field public static final java.time.LocalTime MAX;
-    field public static final java.time.LocalTime MIDNIGHT;
-    field public static final java.time.LocalTime MIN;
-    field public static final java.time.LocalTime NOON;
-  }
-
-  public enum Month implements java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
-    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public int firstDayOfYear(boolean);
-    method public java.time.Month firstMonthOfQuarter();
-    method public static java.time.Month from(java.time.temporal.TemporalAccessor);
-    method public String getDisplayName(java.time.format.TextStyle, java.util.Locale);
-    method public long getLong(java.time.temporal.TemporalField);
-    method public int getValue();
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public int length(boolean);
-    method public int maxLength();
-    method public int minLength();
-    method public java.time.Month minus(long);
-    method public static java.time.Month of(int);
-    method public java.time.Month plus(long);
-    enum_constant public static final java.time.Month APRIL;
-    enum_constant public static final java.time.Month AUGUST;
-    enum_constant public static final java.time.Month DECEMBER;
-    enum_constant public static final java.time.Month FEBRUARY;
-    enum_constant public static final java.time.Month JANUARY;
-    enum_constant public static final java.time.Month JULY;
-    enum_constant public static final java.time.Month JUNE;
-    enum_constant public static final java.time.Month MARCH;
-    enum_constant public static final java.time.Month MAY;
-    enum_constant public static final java.time.Month NOVEMBER;
-    enum_constant public static final java.time.Month OCTOBER;
-    enum_constant public static final java.time.Month SEPTEMBER;
-  }
-
-  public final class MonthDay implements java.lang.Comparable<java.time.MonthDay> java.io.Serializable java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
-    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public java.time.LocalDate atYear(int);
-    method public int compareTo(java.time.MonthDay);
-    method public String format(java.time.format.DateTimeFormatter);
-    method public static java.time.MonthDay from(java.time.temporal.TemporalAccessor);
-    method public int getDayOfMonth();
-    method public long getLong(java.time.temporal.TemporalField);
-    method public java.time.Month getMonth();
-    method public int getMonthValue();
-    method public boolean isAfter(java.time.MonthDay);
-    method public boolean isBefore(java.time.MonthDay);
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public boolean isValidYear(int);
-    method public static java.time.MonthDay now();
-    method public static java.time.MonthDay now(java.time.ZoneId);
-    method public static java.time.MonthDay now(java.time.Clock);
-    method public static java.time.MonthDay of(java.time.Month, int);
-    method public static java.time.MonthDay of(int, int);
-    method public static java.time.MonthDay parse(CharSequence);
-    method public static java.time.MonthDay parse(CharSequence, java.time.format.DateTimeFormatter);
-    method public java.time.MonthDay with(java.time.Month);
-    method public java.time.MonthDay withDayOfMonth(int);
-    method public java.time.MonthDay withMonth(int);
-  }
-
-  public final class OffsetDateTime implements java.lang.Comparable<java.time.OffsetDateTime> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
-    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public java.time.ZonedDateTime atZoneSameInstant(java.time.ZoneId);
-    method public java.time.ZonedDateTime atZoneSimilarLocal(java.time.ZoneId);
-    method public int compareTo(java.time.OffsetDateTime);
-    method public String format(java.time.format.DateTimeFormatter);
-    method public static java.time.OffsetDateTime from(java.time.temporal.TemporalAccessor);
-    method public int getDayOfMonth();
-    method public java.time.DayOfWeek getDayOfWeek();
-    method public int getDayOfYear();
-    method public int getHour();
-    method public long getLong(java.time.temporal.TemporalField);
-    method public int getMinute();
-    method public java.time.Month getMonth();
-    method public int getMonthValue();
-    method public int getNano();
-    method public java.time.ZoneOffset getOffset();
-    method public int getSecond();
-    method public int getYear();
-    method public boolean isAfter(java.time.OffsetDateTime);
-    method public boolean isBefore(java.time.OffsetDateTime);
-    method public boolean isEqual(java.time.OffsetDateTime);
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public boolean isSupported(java.time.temporal.TemporalUnit);
-    method public java.time.OffsetDateTime minus(java.time.temporal.TemporalAmount);
-    method public java.time.OffsetDateTime minus(long, java.time.temporal.TemporalUnit);
-    method public java.time.OffsetDateTime minusDays(long);
-    method public java.time.OffsetDateTime minusHours(long);
-    method public java.time.OffsetDateTime minusMinutes(long);
-    method public java.time.OffsetDateTime minusMonths(long);
-    method public java.time.OffsetDateTime minusNanos(long);
-    method public java.time.OffsetDateTime minusSeconds(long);
-    method public java.time.OffsetDateTime minusWeeks(long);
-    method public java.time.OffsetDateTime minusYears(long);
-    method public static java.time.OffsetDateTime now();
-    method public static java.time.OffsetDateTime now(java.time.ZoneId);
-    method public static java.time.OffsetDateTime now(java.time.Clock);
-    method public static java.time.OffsetDateTime of(java.time.LocalDate, java.time.LocalTime, java.time.ZoneOffset);
-    method public static java.time.OffsetDateTime of(java.time.LocalDateTime, java.time.ZoneOffset);
-    method public static java.time.OffsetDateTime of(int, int, int, int, int, int, int, java.time.ZoneOffset);
-    method public static java.time.OffsetDateTime ofInstant(java.time.Instant, java.time.ZoneId);
-    method public static java.time.OffsetDateTime parse(CharSequence);
-    method public static java.time.OffsetDateTime parse(CharSequence, java.time.format.DateTimeFormatter);
-    method public java.time.OffsetDateTime plus(java.time.temporal.TemporalAmount);
-    method public java.time.OffsetDateTime plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.OffsetDateTime plusDays(long);
-    method public java.time.OffsetDateTime plusHours(long);
-    method public java.time.OffsetDateTime plusMinutes(long);
-    method public java.time.OffsetDateTime plusMonths(long);
-    method public java.time.OffsetDateTime plusNanos(long);
-    method public java.time.OffsetDateTime plusSeconds(long);
-    method public java.time.OffsetDateTime plusWeeks(long);
-    method public java.time.OffsetDateTime plusYears(long);
-    method public static java.util.Comparator<java.time.OffsetDateTime> timeLineOrder();
-    method public long toEpochSecond();
-    method public java.time.Instant toInstant();
-    method public java.time.LocalDate toLocalDate();
-    method public java.time.LocalDateTime toLocalDateTime();
-    method public java.time.LocalTime toLocalTime();
-    method public java.time.OffsetTime toOffsetTime();
-    method public java.time.ZonedDateTime toZonedDateTime();
-    method public java.time.OffsetDateTime truncatedTo(java.time.temporal.TemporalUnit);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.OffsetDateTime with(java.time.temporal.TemporalAdjuster);
-    method public java.time.OffsetDateTime with(java.time.temporal.TemporalField, long);
-    method public java.time.OffsetDateTime withDayOfMonth(int);
-    method public java.time.OffsetDateTime withDayOfYear(int);
-    method public java.time.OffsetDateTime withHour(int);
-    method public java.time.OffsetDateTime withMinute(int);
-    method public java.time.OffsetDateTime withMonth(int);
-    method public java.time.OffsetDateTime withNano(int);
-    method public java.time.OffsetDateTime withOffsetSameInstant(java.time.ZoneOffset);
-    method public java.time.OffsetDateTime withOffsetSameLocal(java.time.ZoneOffset);
-    method public java.time.OffsetDateTime withSecond(int);
-    method public java.time.OffsetDateTime withYear(int);
-    field public static final java.time.OffsetDateTime MAX;
-    field public static final java.time.OffsetDateTime MIN;
-  }
-
-  public final class OffsetTime implements java.lang.Comparable<java.time.OffsetTime> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
-    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public java.time.OffsetDateTime atDate(java.time.LocalDate);
-    method public int compareTo(java.time.OffsetTime);
-    method public String format(java.time.format.DateTimeFormatter);
-    method public static java.time.OffsetTime from(java.time.temporal.TemporalAccessor);
-    method public int getHour();
-    method public long getLong(java.time.temporal.TemporalField);
-    method public int getMinute();
-    method public int getNano();
-    method public java.time.ZoneOffset getOffset();
-    method public int getSecond();
-    method public boolean isAfter(java.time.OffsetTime);
-    method public boolean isBefore(java.time.OffsetTime);
-    method public boolean isEqual(java.time.OffsetTime);
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public boolean isSupported(java.time.temporal.TemporalUnit);
-    method public java.time.OffsetTime minus(java.time.temporal.TemporalAmount);
-    method public java.time.OffsetTime minus(long, java.time.temporal.TemporalUnit);
-    method public java.time.OffsetTime minusHours(long);
-    method public java.time.OffsetTime minusMinutes(long);
-    method public java.time.OffsetTime minusNanos(long);
-    method public java.time.OffsetTime minusSeconds(long);
-    method public static java.time.OffsetTime now();
-    method public static java.time.OffsetTime now(java.time.ZoneId);
-    method public static java.time.OffsetTime now(java.time.Clock);
-    method public static java.time.OffsetTime of(java.time.LocalTime, java.time.ZoneOffset);
-    method public static java.time.OffsetTime of(int, int, int, int, java.time.ZoneOffset);
-    method public static java.time.OffsetTime ofInstant(java.time.Instant, java.time.ZoneId);
-    method public static java.time.OffsetTime parse(CharSequence);
-    method public static java.time.OffsetTime parse(CharSequence, java.time.format.DateTimeFormatter);
-    method public java.time.OffsetTime plus(java.time.temporal.TemporalAmount);
-    method public java.time.OffsetTime plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.OffsetTime plusHours(long);
-    method public java.time.OffsetTime plusMinutes(long);
-    method public java.time.OffsetTime plusNanos(long);
-    method public java.time.OffsetTime plusSeconds(long);
-    method public java.time.LocalTime toLocalTime();
-    method public java.time.OffsetTime truncatedTo(java.time.temporal.TemporalUnit);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.OffsetTime with(java.time.temporal.TemporalAdjuster);
-    method public java.time.OffsetTime with(java.time.temporal.TemporalField, long);
-    method public java.time.OffsetTime withHour(int);
-    method public java.time.OffsetTime withMinute(int);
-    method public java.time.OffsetTime withNano(int);
-    method public java.time.OffsetTime withOffsetSameInstant(java.time.ZoneOffset);
-    method public java.time.OffsetTime withOffsetSameLocal(java.time.ZoneOffset);
-    method public java.time.OffsetTime withSecond(int);
-    field public static final java.time.OffsetTime MAX;
-    field public static final java.time.OffsetTime MIN;
-  }
-
-  public final class Period implements java.time.chrono.ChronoPeriod java.io.Serializable {
-    method public java.time.temporal.Temporal addTo(java.time.temporal.Temporal);
-    method public static java.time.Period between(java.time.LocalDate, java.time.LocalDate);
-    method public static java.time.Period from(java.time.temporal.TemporalAmount);
-    method public long get(java.time.temporal.TemporalUnit);
-    method public java.time.chrono.IsoChronology getChronology();
-    method public int getDays();
-    method public int getMonths();
-    method public java.util.List<java.time.temporal.TemporalUnit> getUnits();
-    method public int getYears();
-    method public java.time.Period minus(java.time.temporal.TemporalAmount);
-    method public java.time.Period minusDays(long);
-    method public java.time.Period minusMonths(long);
-    method public java.time.Period minusYears(long);
-    method public java.time.Period multipliedBy(int);
-    method public java.time.Period negated();
-    method public java.time.Period normalized();
-    method public static java.time.Period of(int, int, int);
-    method public static java.time.Period ofDays(int);
-    method public static java.time.Period ofMonths(int);
-    method public static java.time.Period ofWeeks(int);
-    method public static java.time.Period ofYears(int);
-    method public static java.time.Period parse(CharSequence);
-    method public java.time.Period plus(java.time.temporal.TemporalAmount);
-    method public java.time.Period plusDays(long);
-    method public java.time.Period plusMonths(long);
-    method public java.time.Period plusYears(long);
-    method public java.time.temporal.Temporal subtractFrom(java.time.temporal.Temporal);
-    method public long toTotalMonths();
-    method public java.time.Period withDays(int);
-    method public java.time.Period withMonths(int);
-    method public java.time.Period withYears(int);
-    field public static final java.time.Period ZERO;
-  }
-
-  public final class Year implements java.lang.Comparable<java.time.Year> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
-    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public java.time.LocalDate atDay(int);
-    method public java.time.YearMonth atMonth(java.time.Month);
-    method public java.time.YearMonth atMonth(int);
-    method public java.time.LocalDate atMonthDay(java.time.MonthDay);
-    method public int compareTo(java.time.Year);
-    method public String format(java.time.format.DateTimeFormatter);
-    method public static java.time.Year from(java.time.temporal.TemporalAccessor);
-    method public long getLong(java.time.temporal.TemporalField);
-    method public int getValue();
-    method public boolean isAfter(java.time.Year);
-    method public boolean isBefore(java.time.Year);
-    method public static boolean isLeap(long);
-    method public boolean isLeap();
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public boolean isSupported(java.time.temporal.TemporalUnit);
-    method public boolean isValidMonthDay(java.time.MonthDay);
-    method public int length();
-    method public java.time.Year minus(java.time.temporal.TemporalAmount);
-    method public java.time.Year minus(long, java.time.temporal.TemporalUnit);
-    method public java.time.Year minusYears(long);
-    method public static java.time.Year now();
-    method public static java.time.Year now(java.time.ZoneId);
-    method public static java.time.Year now(java.time.Clock);
-    method public static java.time.Year of(int);
-    method public static java.time.Year parse(CharSequence);
-    method public static java.time.Year parse(CharSequence, java.time.format.DateTimeFormatter);
-    method public java.time.Year plus(java.time.temporal.TemporalAmount);
-    method public java.time.Year plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.Year plusYears(long);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.Year with(java.time.temporal.TemporalAdjuster);
-    method public java.time.Year with(java.time.temporal.TemporalField, long);
-    field public static final int MAX_VALUE = 999999999; // 0x3b9ac9ff
-    field public static final int MIN_VALUE = -999999999; // 0xc4653601
-  }
-
-  public final class YearMonth implements java.lang.Comparable<java.time.YearMonth> java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
-    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public java.time.LocalDate atDay(int);
-    method public java.time.LocalDate atEndOfMonth();
-    method public int compareTo(java.time.YearMonth);
-    method public String format(java.time.format.DateTimeFormatter);
-    method public static java.time.YearMonth from(java.time.temporal.TemporalAccessor);
-    method public long getLong(java.time.temporal.TemporalField);
-    method public java.time.Month getMonth();
-    method public int getMonthValue();
-    method public int getYear();
-    method public boolean isAfter(java.time.YearMonth);
-    method public boolean isBefore(java.time.YearMonth);
-    method public boolean isLeapYear();
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public boolean isSupported(java.time.temporal.TemporalUnit);
-    method public boolean isValidDay(int);
-    method public int lengthOfMonth();
-    method public int lengthOfYear();
-    method public java.time.YearMonth minus(java.time.temporal.TemporalAmount);
-    method public java.time.YearMonth minus(long, java.time.temporal.TemporalUnit);
-    method public java.time.YearMonth minusMonths(long);
-    method public java.time.YearMonth minusYears(long);
-    method public static java.time.YearMonth now();
-    method public static java.time.YearMonth now(java.time.ZoneId);
-    method public static java.time.YearMonth now(java.time.Clock);
-    method public static java.time.YearMonth of(int, java.time.Month);
-    method public static java.time.YearMonth of(int, int);
-    method public static java.time.YearMonth parse(CharSequence);
-    method public static java.time.YearMonth parse(CharSequence, java.time.format.DateTimeFormatter);
-    method public java.time.YearMonth plus(java.time.temporal.TemporalAmount);
-    method public java.time.YearMonth plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.YearMonth plusMonths(long);
-    method public java.time.YearMonth plusYears(long);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.YearMonth with(java.time.temporal.TemporalAdjuster);
-    method public java.time.YearMonth with(java.time.temporal.TemporalField, long);
-    method public java.time.YearMonth withMonth(int);
-    method public java.time.YearMonth withYear(int);
-  }
-
-  public abstract class ZoneId implements java.io.Serializable {
-    method public static java.time.ZoneId from(java.time.temporal.TemporalAccessor);
-    method public static java.util.Set<java.lang.String> getAvailableZoneIds();
-    method public String getDisplayName(java.time.format.TextStyle, java.util.Locale);
-    method public abstract String getId();
-    method public abstract java.time.zone.ZoneRules getRules();
-    method public java.time.ZoneId normalized();
-    method public static java.time.ZoneId of(String, java.util.Map<java.lang.String,java.lang.String>);
-    method public static java.time.ZoneId of(String);
-    method public static java.time.ZoneId ofOffset(String, java.time.ZoneOffset);
-    method public static java.time.ZoneId systemDefault();
-    field public static final java.util.Map<java.lang.String,java.lang.String> SHORT_IDS;
-  }
-
-  public final class ZoneOffset extends java.time.ZoneId implements java.lang.Comparable<java.time.ZoneOffset> java.io.Serializable java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
-    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public int compareTo(java.time.ZoneOffset);
-    method public static java.time.ZoneOffset from(java.time.temporal.TemporalAccessor);
-    method public String getId();
-    method public long getLong(java.time.temporal.TemporalField);
-    method public java.time.zone.ZoneRules getRules();
-    method public int getTotalSeconds();
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public static java.time.ZoneOffset of(String);
-    method public static java.time.ZoneOffset ofHours(int);
-    method public static java.time.ZoneOffset ofHoursMinutes(int, int);
-    method public static java.time.ZoneOffset ofHoursMinutesSeconds(int, int, int);
-    method public static java.time.ZoneOffset ofTotalSeconds(int);
-    field public static final java.time.ZoneOffset MAX;
-    field public static final java.time.ZoneOffset MIN;
-    field public static final java.time.ZoneOffset UTC;
-  }
-
-  public final class ZonedDateTime implements java.time.chrono.ChronoZonedDateTime<java.time.LocalDate> java.io.Serializable java.time.temporal.Temporal {
-    method public static java.time.ZonedDateTime from(java.time.temporal.TemporalAccessor);
-    method public int getDayOfMonth();
-    method public java.time.DayOfWeek getDayOfWeek();
-    method public int getDayOfYear();
-    method public int getHour();
-    method public int getMinute();
-    method public java.time.Month getMonth();
-    method public int getMonthValue();
-    method public int getNano();
-    method public java.time.ZoneOffset getOffset();
-    method public int getSecond();
-    method public int getYear();
-    method public java.time.ZoneId getZone();
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public java.time.ZonedDateTime minus(java.time.temporal.TemporalAmount);
-    method public java.time.ZonedDateTime minus(long, java.time.temporal.TemporalUnit);
-    method public java.time.ZonedDateTime minusDays(long);
-    method public java.time.ZonedDateTime minusHours(long);
-    method public java.time.ZonedDateTime minusMinutes(long);
-    method public java.time.ZonedDateTime minusMonths(long);
-    method public java.time.ZonedDateTime minusNanos(long);
-    method public java.time.ZonedDateTime minusSeconds(long);
-    method public java.time.ZonedDateTime minusWeeks(long);
-    method public java.time.ZonedDateTime minusYears(long);
-    method public static java.time.ZonedDateTime now();
-    method public static java.time.ZonedDateTime now(java.time.ZoneId);
-    method public static java.time.ZonedDateTime now(java.time.Clock);
-    method public static java.time.ZonedDateTime of(java.time.LocalDate, java.time.LocalTime, java.time.ZoneId);
-    method public static java.time.ZonedDateTime of(java.time.LocalDateTime, java.time.ZoneId);
-    method public static java.time.ZonedDateTime of(int, int, int, int, int, int, int, java.time.ZoneId);
-    method public static java.time.ZonedDateTime ofInstant(java.time.Instant, java.time.ZoneId);
-    method public static java.time.ZonedDateTime ofInstant(java.time.LocalDateTime, java.time.ZoneOffset, java.time.ZoneId);
-    method public static java.time.ZonedDateTime ofLocal(java.time.LocalDateTime, java.time.ZoneId, java.time.ZoneOffset);
-    method public static java.time.ZonedDateTime ofStrict(java.time.LocalDateTime, java.time.ZoneOffset, java.time.ZoneId);
-    method public static java.time.ZonedDateTime parse(CharSequence);
-    method public static java.time.ZonedDateTime parse(CharSequence, java.time.format.DateTimeFormatter);
-    method public java.time.ZonedDateTime plus(java.time.temporal.TemporalAmount);
-    method public java.time.ZonedDateTime plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.ZonedDateTime plusDays(long);
-    method public java.time.ZonedDateTime plusHours(long);
-    method public java.time.ZonedDateTime plusMinutes(long);
-    method public java.time.ZonedDateTime plusMonths(long);
-    method public java.time.ZonedDateTime plusNanos(long);
-    method public java.time.ZonedDateTime plusSeconds(long);
-    method public java.time.ZonedDateTime plusWeeks(long);
-    method public java.time.ZonedDateTime plusYears(long);
-    method public java.time.LocalDate toLocalDate();
-    method public java.time.LocalDateTime toLocalDateTime();
-    method public java.time.OffsetDateTime toOffsetDateTime();
-    method public java.time.ZonedDateTime truncatedTo(java.time.temporal.TemporalUnit);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.ZonedDateTime with(java.time.temporal.TemporalAdjuster);
-    method public java.time.ZonedDateTime with(java.time.temporal.TemporalField, long);
-    method public java.time.ZonedDateTime withDayOfMonth(int);
-    method public java.time.ZonedDateTime withDayOfYear(int);
-    method public java.time.ZonedDateTime withEarlierOffsetAtOverlap();
-    method public java.time.ZonedDateTime withFixedOffsetZone();
-    method public java.time.ZonedDateTime withHour(int);
-    method public java.time.ZonedDateTime withLaterOffsetAtOverlap();
-    method public java.time.ZonedDateTime withMinute(int);
-    method public java.time.ZonedDateTime withMonth(int);
-    method public java.time.ZonedDateTime withNano(int);
-    method public java.time.ZonedDateTime withSecond(int);
-    method public java.time.ZonedDateTime withYear(int);
-    method public java.time.ZonedDateTime withZoneSameInstant(java.time.ZoneId);
-    method public java.time.ZonedDateTime withZoneSameLocal(java.time.ZoneId);
-  }
-
-}
-
-package java.time.chrono {
-
-  public abstract class AbstractChronology implements java.time.chrono.Chronology {
-    ctor protected AbstractChronology();
-    method public int compareTo(java.time.chrono.Chronology);
-    method public java.time.chrono.ChronoLocalDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
-  }
-
-  public interface ChronoLocalDate extends java.time.temporal.Temporal java.lang.Comparable<java.time.chrono.ChronoLocalDate> java.time.temporal.TemporalAdjuster {
-    method public default java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public default java.time.chrono.ChronoLocalDateTime<?> atTime(java.time.LocalTime);
-    method public default int compareTo(java.time.chrono.ChronoLocalDate);
-    method public boolean equals(Object);
-    method public default String format(java.time.format.DateTimeFormatter);
-    method public static java.time.chrono.ChronoLocalDate from(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.Chronology getChronology();
-    method public default java.time.chrono.Era getEra();
-    method public int hashCode();
-    method public default boolean isAfter(java.time.chrono.ChronoLocalDate);
-    method public default boolean isBefore(java.time.chrono.ChronoLocalDate);
-    method public default boolean isEqual(java.time.chrono.ChronoLocalDate);
-    method public default boolean isLeapYear();
-    method public default boolean isSupported(java.time.temporal.TemporalField);
-    method public default boolean isSupported(java.time.temporal.TemporalUnit);
-    method public int lengthOfMonth();
-    method public default int lengthOfYear();
-    method public default java.time.chrono.ChronoLocalDate minus(java.time.temporal.TemporalAmount);
-    method public default java.time.chrono.ChronoLocalDate minus(long, java.time.temporal.TemporalUnit);
-    method public default java.time.chrono.ChronoLocalDate plus(java.time.temporal.TemporalAmount);
-    method public default java.time.chrono.ChronoLocalDate plus(long, java.time.temporal.TemporalUnit);
-    method public static java.util.Comparator<java.time.chrono.ChronoLocalDate> timeLineOrder();
-    method public default long toEpochDay();
-    method public String toString();
-    method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate);
-    method public default java.time.chrono.ChronoLocalDate with(java.time.temporal.TemporalAdjuster);
-    method public default java.time.chrono.ChronoLocalDate with(java.time.temporal.TemporalField, long);
-  }
-
-  public interface ChronoLocalDateTime<D extends java.time.chrono.ChronoLocalDate> extends java.time.temporal.Temporal java.lang.Comparable<java.time.chrono.ChronoLocalDateTime<?>> java.time.temporal.TemporalAdjuster {
-    method public default java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public java.time.chrono.ChronoZonedDateTime<D> atZone(java.time.ZoneId);
-    method public default int compareTo(java.time.chrono.ChronoLocalDateTime<?>);
-    method public boolean equals(Object);
-    method public default String format(java.time.format.DateTimeFormatter);
-    method public static java.time.chrono.ChronoLocalDateTime<?> from(java.time.temporal.TemporalAccessor);
-    method public default java.time.chrono.Chronology getChronology();
-    method public int hashCode();
-    method public default boolean isAfter(java.time.chrono.ChronoLocalDateTime<?>);
-    method public default boolean isBefore(java.time.chrono.ChronoLocalDateTime<?>);
-    method public default boolean isEqual(java.time.chrono.ChronoLocalDateTime<?>);
-    method public default boolean isSupported(java.time.temporal.TemporalUnit);
-    method public default java.time.chrono.ChronoLocalDateTime<D> minus(java.time.temporal.TemporalAmount);
-    method public default java.time.chrono.ChronoLocalDateTime<D> minus(long, java.time.temporal.TemporalUnit);
-    method public default java.time.chrono.ChronoLocalDateTime<D> plus(java.time.temporal.TemporalAmount);
-    method public java.time.chrono.ChronoLocalDateTime<D> plus(long, java.time.temporal.TemporalUnit);
-    method public static java.util.Comparator<java.time.chrono.ChronoLocalDateTime<?>> timeLineOrder();
-    method public default long toEpochSecond(java.time.ZoneOffset);
-    method public default java.time.Instant toInstant(java.time.ZoneOffset);
-    method public D toLocalDate();
-    method public java.time.LocalTime toLocalTime();
-    method public String toString();
-    method public default java.time.chrono.ChronoLocalDateTime<D> with(java.time.temporal.TemporalAdjuster);
-    method public java.time.chrono.ChronoLocalDateTime<D> with(java.time.temporal.TemporalField, long);
-  }
-
-  public interface ChronoPeriod extends java.time.temporal.TemporalAmount {
-    method public static java.time.chrono.ChronoPeriod between(java.time.chrono.ChronoLocalDate, java.time.chrono.ChronoLocalDate);
-    method public boolean equals(Object);
-    method public java.time.chrono.Chronology getChronology();
-    method public int hashCode();
-    method public default boolean isNegative();
-    method public default boolean isZero();
-    method public java.time.chrono.ChronoPeriod minus(java.time.temporal.TemporalAmount);
-    method public java.time.chrono.ChronoPeriod multipliedBy(int);
-    method public default java.time.chrono.ChronoPeriod negated();
-    method public java.time.chrono.ChronoPeriod normalized();
-    method public java.time.chrono.ChronoPeriod plus(java.time.temporal.TemporalAmount);
-    method public String toString();
-  }
-
-  public interface ChronoZonedDateTime<D extends java.time.chrono.ChronoLocalDate> extends java.time.temporal.Temporal java.lang.Comparable<java.time.chrono.ChronoZonedDateTime<?>> {
-    method public default int compareTo(java.time.chrono.ChronoZonedDateTime<?>);
-    method public boolean equals(Object);
-    method public default String format(java.time.format.DateTimeFormatter);
-    method public static java.time.chrono.ChronoZonedDateTime<?> from(java.time.temporal.TemporalAccessor);
-    method public default java.time.chrono.Chronology getChronology();
-    method public default long getLong(java.time.temporal.TemporalField);
-    method public java.time.ZoneOffset getOffset();
-    method public java.time.ZoneId getZone();
-    method public int hashCode();
-    method public default boolean isAfter(java.time.chrono.ChronoZonedDateTime<?>);
-    method public default boolean isBefore(java.time.chrono.ChronoZonedDateTime<?>);
-    method public default boolean isEqual(java.time.chrono.ChronoZonedDateTime<?>);
-    method public default boolean isSupported(java.time.temporal.TemporalUnit);
-    method public default java.time.chrono.ChronoZonedDateTime<D> minus(java.time.temporal.TemporalAmount);
-    method public default java.time.chrono.ChronoZonedDateTime<D> minus(long, java.time.temporal.TemporalUnit);
-    method public default java.time.chrono.ChronoZonedDateTime<D> plus(java.time.temporal.TemporalAmount);
-    method public java.time.chrono.ChronoZonedDateTime<D> plus(long, java.time.temporal.TemporalUnit);
-    method public static java.util.Comparator<java.time.chrono.ChronoZonedDateTime<?>> timeLineOrder();
-    method public default long toEpochSecond();
-    method public default java.time.Instant toInstant();
-    method public default D toLocalDate();
-    method public java.time.chrono.ChronoLocalDateTime<D> toLocalDateTime();
-    method public default java.time.LocalTime toLocalTime();
-    method public String toString();
-    method public default java.time.chrono.ChronoZonedDateTime<D> with(java.time.temporal.TemporalAdjuster);
-    method public java.time.chrono.ChronoZonedDateTime<D> with(java.time.temporal.TemporalField, long);
-    method public java.time.chrono.ChronoZonedDateTime<D> withEarlierOffsetAtOverlap();
-    method public java.time.chrono.ChronoZonedDateTime<D> withLaterOffsetAtOverlap();
-    method public java.time.chrono.ChronoZonedDateTime<D> withZoneSameInstant(java.time.ZoneId);
-    method public java.time.chrono.ChronoZonedDateTime<D> withZoneSameLocal(java.time.ZoneId);
-  }
-
-  public interface Chronology extends java.lang.Comparable<java.time.chrono.Chronology> {
-    method public int compareTo(java.time.chrono.Chronology);
-    method public default java.time.chrono.ChronoLocalDate date(java.time.chrono.Era, int, int, int);
-    method public java.time.chrono.ChronoLocalDate date(int, int, int);
-    method public java.time.chrono.ChronoLocalDate date(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.ChronoLocalDate dateEpochDay(long);
-    method public default java.time.chrono.ChronoLocalDate dateNow();
-    method public default java.time.chrono.ChronoLocalDate dateNow(java.time.ZoneId);
-    method public default java.time.chrono.ChronoLocalDate dateNow(java.time.Clock);
-    method public default java.time.chrono.ChronoLocalDate dateYearDay(java.time.chrono.Era, int, int);
-    method public java.time.chrono.ChronoLocalDate dateYearDay(int, int);
-    method public boolean equals(Object);
-    method public java.time.chrono.Era eraOf(int);
-    method public java.util.List<java.time.chrono.Era> eras();
-    method public static java.time.chrono.Chronology from(java.time.temporal.TemporalAccessor);
-    method public static java.util.Set<java.time.chrono.Chronology> getAvailableChronologies();
-    method public String getCalendarType();
-    method public default String getDisplayName(java.time.format.TextStyle, java.util.Locale);
-    method public String getId();
-    method public int hashCode();
-    method public boolean isLeapYear(long);
-    method public default java.time.chrono.ChronoLocalDateTime<? extends java.time.chrono.ChronoLocalDate> localDateTime(java.time.temporal.TemporalAccessor);
-    method public static java.time.chrono.Chronology of(String);
-    method public static java.time.chrono.Chronology ofLocale(java.util.Locale);
-    method public default java.time.chrono.ChronoPeriod period(int, int, int);
-    method public int prolepticYear(java.time.chrono.Era, int);
-    method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
-    method public java.time.chrono.ChronoLocalDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
-    method public String toString();
-    method public default java.time.chrono.ChronoZonedDateTime<? extends java.time.chrono.ChronoLocalDate> zonedDateTime(java.time.temporal.TemporalAccessor);
-    method public default java.time.chrono.ChronoZonedDateTime<? extends java.time.chrono.ChronoLocalDate> zonedDateTime(java.time.Instant, java.time.ZoneId);
-  }
-
-  public interface Era extends java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster {
-    method public default java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    method public default String getDisplayName(java.time.format.TextStyle, java.util.Locale);
-    method public default long getLong(java.time.temporal.TemporalField);
-    method public int getValue();
-    method public default boolean isSupported(java.time.temporal.TemporalField);
-  }
-
-  public final class HijrahChronology extends java.time.chrono.AbstractChronology implements java.io.Serializable {
-    method public java.time.chrono.HijrahDate date(java.time.chrono.Era, int, int, int);
-    method public java.time.chrono.HijrahDate date(int, int, int);
-    method public java.time.chrono.HijrahDate date(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.HijrahDate dateEpochDay(long);
-    method public java.time.chrono.HijrahDate dateNow();
-    method public java.time.chrono.HijrahDate dateNow(java.time.ZoneId);
-    method public java.time.chrono.HijrahDate dateNow(java.time.Clock);
-    method public java.time.chrono.HijrahDate dateYearDay(java.time.chrono.Era, int, int);
-    method public java.time.chrono.HijrahDate dateYearDay(int, int);
-    method public java.time.chrono.HijrahEra eraOf(int);
-    method public java.util.List<java.time.chrono.Era> eras();
-    method public String getCalendarType();
-    method public String getId();
-    method public boolean isLeapYear(long);
-    method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.HijrahDate> localDateTime(java.time.temporal.TemporalAccessor);
-    method public int prolepticYear(java.time.chrono.Era, int);
-    method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
-    method public java.time.chrono.HijrahDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
-    method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.HijrahDate> zonedDateTime(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.HijrahDate> zonedDateTime(java.time.Instant, java.time.ZoneId);
-    field public static final java.time.chrono.HijrahChronology INSTANCE;
-  }
-
-  public final class HijrahDate implements java.time.chrono.ChronoLocalDate java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
-    method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.HijrahDate> atTime(java.time.LocalTime);
-    method public static java.time.chrono.HijrahDate from(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.HijrahChronology getChronology();
-    method public java.time.chrono.HijrahEra getEra();
-    method public long getLong(java.time.temporal.TemporalField);
-    method public int lengthOfMonth();
-    method public java.time.chrono.HijrahDate minus(java.time.temporal.TemporalAmount);
-    method public java.time.chrono.HijrahDate minus(long, java.time.temporal.TemporalUnit);
-    method public static java.time.chrono.HijrahDate now();
-    method public static java.time.chrono.HijrahDate now(java.time.ZoneId);
-    method public static java.time.chrono.HijrahDate now(java.time.Clock);
-    method public static java.time.chrono.HijrahDate of(int, int, int);
-    method public java.time.chrono.HijrahDate plus(java.time.temporal.TemporalAmount);
-    method public java.time.chrono.HijrahDate plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.chrono.HijrahDate with(java.time.temporal.TemporalField, long);
-    method public java.time.chrono.HijrahDate with(java.time.temporal.TemporalAdjuster);
-    method public java.time.chrono.HijrahDate withVariant(java.time.chrono.HijrahChronology);
-  }
-
-  public enum HijrahEra implements java.time.chrono.Era {
-    method public int getValue();
-    method public static java.time.chrono.HijrahEra of(int);
-    enum_constant public static final java.time.chrono.HijrahEra AH;
-  }
-
-  public final class IsoChronology extends java.time.chrono.AbstractChronology implements java.io.Serializable {
-    method public java.time.LocalDate date(java.time.chrono.Era, int, int, int);
-    method public java.time.LocalDate date(int, int, int);
-    method public java.time.LocalDate date(java.time.temporal.TemporalAccessor);
-    method public java.time.LocalDate dateEpochDay(long);
-    method public java.time.LocalDate dateNow();
-    method public java.time.LocalDate dateNow(java.time.ZoneId);
-    method public java.time.LocalDate dateNow(java.time.Clock);
-    method public java.time.LocalDate dateYearDay(java.time.chrono.Era, int, int);
-    method public java.time.LocalDate dateYearDay(int, int);
-    method public java.time.chrono.IsoEra eraOf(int);
-    method public java.util.List<java.time.chrono.Era> eras();
-    method public String getCalendarType();
-    method public String getId();
-    method public boolean isLeapYear(long);
-    method public java.time.LocalDateTime localDateTime(java.time.temporal.TemporalAccessor);
-    method public java.time.Period period(int, int, int);
-    method public int prolepticYear(java.time.chrono.Era, int);
-    method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
-    method public java.time.LocalDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
-    method public java.time.ZonedDateTime zonedDateTime(java.time.temporal.TemporalAccessor);
-    method public java.time.ZonedDateTime zonedDateTime(java.time.Instant, java.time.ZoneId);
-    field public static final java.time.chrono.IsoChronology INSTANCE;
-  }
-
-  public enum IsoEra implements java.time.chrono.Era {
-    method public int getValue();
-    method public static java.time.chrono.IsoEra of(int);
-    enum_constant public static final java.time.chrono.IsoEra BCE;
-    enum_constant public static final java.time.chrono.IsoEra CE;
-  }
-
-  public final class JapaneseChronology extends java.time.chrono.AbstractChronology implements java.io.Serializable {
-    method public java.time.chrono.JapaneseDate date(java.time.chrono.Era, int, int, int);
-    method public java.time.chrono.JapaneseDate date(int, int, int);
-    method public java.time.chrono.JapaneseDate date(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.JapaneseDate dateEpochDay(long);
-    method public java.time.chrono.JapaneseDate dateNow();
-    method public java.time.chrono.JapaneseDate dateNow(java.time.ZoneId);
-    method public java.time.chrono.JapaneseDate dateNow(java.time.Clock);
-    method public java.time.chrono.JapaneseDate dateYearDay(java.time.chrono.Era, int, int);
-    method public java.time.chrono.JapaneseDate dateYearDay(int, int);
-    method public java.time.chrono.JapaneseEra eraOf(int);
-    method public java.util.List<java.time.chrono.Era> eras();
-    method public String getCalendarType();
-    method public String getId();
-    method public boolean isLeapYear(long);
-    method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.JapaneseDate> localDateTime(java.time.temporal.TemporalAccessor);
-    method public int prolepticYear(java.time.chrono.Era, int);
-    method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
-    method public java.time.chrono.JapaneseDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
-    method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.JapaneseDate> zonedDateTime(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.JapaneseDate> zonedDateTime(java.time.Instant, java.time.ZoneId);
-    field public static final java.time.chrono.JapaneseChronology INSTANCE;
-  }
-
-  public final class JapaneseDate implements java.time.chrono.ChronoLocalDate java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
-    method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.JapaneseDate> atTime(java.time.LocalTime);
-    method public static java.time.chrono.JapaneseDate from(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.JapaneseChronology getChronology();
-    method public java.time.chrono.JapaneseEra getEra();
-    method public long getLong(java.time.temporal.TemporalField);
-    method public int lengthOfMonth();
-    method public java.time.chrono.JapaneseDate minus(java.time.temporal.TemporalAmount);
-    method public java.time.chrono.JapaneseDate minus(long, java.time.temporal.TemporalUnit);
-    method public static java.time.chrono.JapaneseDate now();
-    method public static java.time.chrono.JapaneseDate now(java.time.ZoneId);
-    method public static java.time.chrono.JapaneseDate now(java.time.Clock);
-    method public static java.time.chrono.JapaneseDate of(java.time.chrono.JapaneseEra, int, int, int);
-    method public static java.time.chrono.JapaneseDate of(int, int, int);
-    method public java.time.chrono.JapaneseDate plus(java.time.temporal.TemporalAmount);
-    method public java.time.chrono.JapaneseDate plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.chrono.JapaneseDate with(java.time.temporal.TemporalField, long);
-    method public java.time.chrono.JapaneseDate with(java.time.temporal.TemporalAdjuster);
-  }
-
-  public final class JapaneseEra implements java.time.chrono.Era java.io.Serializable {
-    method public int getValue();
-    method public static java.time.chrono.JapaneseEra of(int);
-    method public static java.time.chrono.JapaneseEra valueOf(String);
-    method public static java.time.chrono.JapaneseEra[] values();
-    field public static final java.time.chrono.JapaneseEra HEISEI;
-    field public static final java.time.chrono.JapaneseEra MEIJI;
-    field public static final java.time.chrono.JapaneseEra REIWA;
-    field public static final java.time.chrono.JapaneseEra SHOWA;
-    field public static final java.time.chrono.JapaneseEra TAISHO;
-  }
-
-  public final class MinguoChronology extends java.time.chrono.AbstractChronology implements java.io.Serializable {
-    method public java.time.chrono.MinguoDate date(java.time.chrono.Era, int, int, int);
-    method public java.time.chrono.MinguoDate date(int, int, int);
-    method public java.time.chrono.MinguoDate date(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.MinguoDate dateEpochDay(long);
-    method public java.time.chrono.MinguoDate dateNow();
-    method public java.time.chrono.MinguoDate dateNow(java.time.ZoneId);
-    method public java.time.chrono.MinguoDate dateNow(java.time.Clock);
-    method public java.time.chrono.MinguoDate dateYearDay(java.time.chrono.Era, int, int);
-    method public java.time.chrono.MinguoDate dateYearDay(int, int);
-    method public java.time.chrono.MinguoEra eraOf(int);
-    method public java.util.List<java.time.chrono.Era> eras();
-    method public String getCalendarType();
-    method public String getId();
-    method public boolean isLeapYear(long);
-    method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.MinguoDate> localDateTime(java.time.temporal.TemporalAccessor);
-    method public int prolepticYear(java.time.chrono.Era, int);
-    method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
-    method public java.time.chrono.MinguoDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
-    method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.MinguoDate> zonedDateTime(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.MinguoDate> zonedDateTime(java.time.Instant, java.time.ZoneId);
-    field public static final java.time.chrono.MinguoChronology INSTANCE;
-  }
-
-  public final class MinguoDate implements java.time.chrono.ChronoLocalDate java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
-    method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.MinguoDate> atTime(java.time.LocalTime);
-    method public static java.time.chrono.MinguoDate from(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.MinguoChronology getChronology();
-    method public java.time.chrono.MinguoEra getEra();
-    method public long getLong(java.time.temporal.TemporalField);
-    method public int lengthOfMonth();
-    method public java.time.chrono.MinguoDate minus(java.time.temporal.TemporalAmount);
-    method public java.time.chrono.MinguoDate minus(long, java.time.temporal.TemporalUnit);
-    method public static java.time.chrono.MinguoDate now();
-    method public static java.time.chrono.MinguoDate now(java.time.ZoneId);
-    method public static java.time.chrono.MinguoDate now(java.time.Clock);
-    method public static java.time.chrono.MinguoDate of(int, int, int);
-    method public java.time.chrono.MinguoDate plus(java.time.temporal.TemporalAmount);
-    method public java.time.chrono.MinguoDate plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.chrono.MinguoDate with(java.time.temporal.TemporalField, long);
-    method public java.time.chrono.MinguoDate with(java.time.temporal.TemporalAdjuster);
-  }
-
-  public enum MinguoEra implements java.time.chrono.Era {
-    method public int getValue();
-    method public static java.time.chrono.MinguoEra of(int);
-    enum_constant public static final java.time.chrono.MinguoEra BEFORE_ROC;
-    enum_constant public static final java.time.chrono.MinguoEra ROC;
-  }
-
-  public final class ThaiBuddhistChronology extends java.time.chrono.AbstractChronology implements java.io.Serializable {
-    method public java.time.chrono.ThaiBuddhistDate date(java.time.chrono.Era, int, int, int);
-    method public java.time.chrono.ThaiBuddhistDate date(int, int, int);
-    method public java.time.chrono.ThaiBuddhistDate date(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.ThaiBuddhistDate dateEpochDay(long);
-    method public java.time.chrono.ThaiBuddhistDate dateNow();
-    method public java.time.chrono.ThaiBuddhistDate dateNow(java.time.ZoneId);
-    method public java.time.chrono.ThaiBuddhistDate dateNow(java.time.Clock);
-    method public java.time.chrono.ThaiBuddhistDate dateYearDay(java.time.chrono.Era, int, int);
-    method public java.time.chrono.ThaiBuddhistDate dateYearDay(int, int);
-    method public java.time.chrono.ThaiBuddhistEra eraOf(int);
-    method public java.util.List<java.time.chrono.Era> eras();
-    method public String getCalendarType();
-    method public String getId();
-    method public boolean isLeapYear(long);
-    method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.ThaiBuddhistDate> localDateTime(java.time.temporal.TemporalAccessor);
-    method public int prolepticYear(java.time.chrono.Era, int);
-    method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
-    method public java.time.chrono.ThaiBuddhistDate resolveDate(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.format.ResolverStyle);
-    method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.ThaiBuddhistDate> zonedDateTime(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.ChronoZonedDateTime<java.time.chrono.ThaiBuddhistDate> zonedDateTime(java.time.Instant, java.time.ZoneId);
-    field public static final java.time.chrono.ThaiBuddhistChronology INSTANCE;
-  }
-
-  public final class ThaiBuddhistDate implements java.time.chrono.ChronoLocalDate java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster {
-    method public java.time.chrono.ChronoLocalDateTime<java.time.chrono.ThaiBuddhistDate> atTime(java.time.LocalTime);
-    method public static java.time.chrono.ThaiBuddhistDate from(java.time.temporal.TemporalAccessor);
-    method public java.time.chrono.ThaiBuddhistChronology getChronology();
-    method public java.time.chrono.ThaiBuddhistEra getEra();
-    method public long getLong(java.time.temporal.TemporalField);
-    method public int lengthOfMonth();
-    method public java.time.chrono.ThaiBuddhistDate minus(java.time.temporal.TemporalAmount);
-    method public java.time.chrono.ThaiBuddhistDate minus(long, java.time.temporal.TemporalUnit);
-    method public static java.time.chrono.ThaiBuddhistDate now();
-    method public static java.time.chrono.ThaiBuddhistDate now(java.time.ZoneId);
-    method public static java.time.chrono.ThaiBuddhistDate now(java.time.Clock);
-    method public static java.time.chrono.ThaiBuddhistDate of(int, int, int);
-    method public java.time.chrono.ThaiBuddhistDate plus(java.time.temporal.TemporalAmount);
-    method public java.time.chrono.ThaiBuddhistDate plus(long, java.time.temporal.TemporalUnit);
-    method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public java.time.chrono.ThaiBuddhistDate with(java.time.temporal.TemporalField, long);
-    method public java.time.chrono.ThaiBuddhistDate with(java.time.temporal.TemporalAdjuster);
-  }
-
-  public enum ThaiBuddhistEra implements java.time.chrono.Era {
-    method public int getValue();
-    method public static java.time.chrono.ThaiBuddhistEra of(int);
-    enum_constant public static final java.time.chrono.ThaiBuddhistEra BE;
-    enum_constant public static final java.time.chrono.ThaiBuddhistEra BEFORE_BE;
-  }
-
-}
-
-package java.time.format {
-
-  public final class DateTimeFormatter {
-    method public String format(java.time.temporal.TemporalAccessor);
-    method public void formatTo(java.time.temporal.TemporalAccessor, Appendable);
-    method public java.time.chrono.Chronology getChronology();
-    method public java.time.format.DecimalStyle getDecimalStyle();
-    method public java.util.Locale getLocale();
-    method public java.util.Set<java.time.temporal.TemporalField> getResolverFields();
-    method public java.time.format.ResolverStyle getResolverStyle();
-    method public java.time.ZoneId getZone();
-    method public static java.time.format.DateTimeFormatter ofLocalizedDate(java.time.format.FormatStyle);
-    method public static java.time.format.DateTimeFormatter ofLocalizedDateTime(java.time.format.FormatStyle);
-    method public static java.time.format.DateTimeFormatter ofLocalizedDateTime(java.time.format.FormatStyle, java.time.format.FormatStyle);
-    method public static java.time.format.DateTimeFormatter ofLocalizedTime(java.time.format.FormatStyle);
-    method public static java.time.format.DateTimeFormatter ofPattern(String);
-    method public static java.time.format.DateTimeFormatter ofPattern(String, java.util.Locale);
-    method public java.time.temporal.TemporalAccessor parse(CharSequence);
-    method public java.time.temporal.TemporalAccessor parse(CharSequence, java.text.ParsePosition);
-    method public <T> T parse(CharSequence, java.time.temporal.TemporalQuery<T>);
-    method public java.time.temporal.TemporalAccessor parseBest(CharSequence, java.time.temporal.TemporalQuery<?>...);
-    method public java.time.temporal.TemporalAccessor parseUnresolved(CharSequence, java.text.ParsePosition);
-    method public static java.time.temporal.TemporalQuery<java.time.Period> parsedExcessDays();
-    method public static java.time.temporal.TemporalQuery<java.lang.Boolean> parsedLeapSecond();
-    method public java.text.Format toFormat();
-    method public java.text.Format toFormat(java.time.temporal.TemporalQuery<?>);
-    method public java.time.format.DateTimeFormatter withChronology(java.time.chrono.Chronology);
-    method public java.time.format.DateTimeFormatter withDecimalStyle(java.time.format.DecimalStyle);
-    method public java.time.format.DateTimeFormatter withLocale(java.util.Locale);
-    method public java.time.format.DateTimeFormatter withResolverFields(java.time.temporal.TemporalField...);
-    method public java.time.format.DateTimeFormatter withResolverFields(java.util.Set<java.time.temporal.TemporalField>);
-    method public java.time.format.DateTimeFormatter withResolverStyle(java.time.format.ResolverStyle);
-    method public java.time.format.DateTimeFormatter withZone(java.time.ZoneId);
-    field public static final java.time.format.DateTimeFormatter BASIC_ISO_DATE;
-    field public static final java.time.format.DateTimeFormatter ISO_DATE;
-    field public static final java.time.format.DateTimeFormatter ISO_DATE_TIME;
-    field public static final java.time.format.DateTimeFormatter ISO_INSTANT;
-    field public static final java.time.format.DateTimeFormatter ISO_LOCAL_DATE;
-    field public static final java.time.format.DateTimeFormatter ISO_LOCAL_DATE_TIME;
-    field public static final java.time.format.DateTimeFormatter ISO_LOCAL_TIME;
-    field public static final java.time.format.DateTimeFormatter ISO_OFFSET_DATE;
-    field public static final java.time.format.DateTimeFormatter ISO_OFFSET_DATE_TIME;
-    field public static final java.time.format.DateTimeFormatter ISO_OFFSET_TIME;
-    field public static final java.time.format.DateTimeFormatter ISO_ORDINAL_DATE;
-    field public static final java.time.format.DateTimeFormatter ISO_TIME;
-    field public static final java.time.format.DateTimeFormatter ISO_WEEK_DATE;
-    field public static final java.time.format.DateTimeFormatter ISO_ZONED_DATE_TIME;
-    field public static final java.time.format.DateTimeFormatter RFC_1123_DATE_TIME;
-  }
-
-  public final class DateTimeFormatterBuilder {
-    ctor public DateTimeFormatterBuilder();
-    method public java.time.format.DateTimeFormatterBuilder append(java.time.format.DateTimeFormatter);
-    method public java.time.format.DateTimeFormatterBuilder appendChronologyId();
-    method public java.time.format.DateTimeFormatterBuilder appendChronologyText(java.time.format.TextStyle);
-    method public java.time.format.DateTimeFormatterBuilder appendFraction(java.time.temporal.TemporalField, int, int, boolean);
-    method public java.time.format.DateTimeFormatterBuilder appendInstant();
-    method public java.time.format.DateTimeFormatterBuilder appendInstant(int);
-    method public java.time.format.DateTimeFormatterBuilder appendLiteral(char);
-    method public java.time.format.DateTimeFormatterBuilder appendLiteral(String);
-    method public java.time.format.DateTimeFormatterBuilder appendLocalized(java.time.format.FormatStyle, java.time.format.FormatStyle);
-    method public java.time.format.DateTimeFormatterBuilder appendLocalizedOffset(java.time.format.TextStyle);
-    method public java.time.format.DateTimeFormatterBuilder appendOffset(String, String);
-    method public java.time.format.DateTimeFormatterBuilder appendOffsetId();
-    method public java.time.format.DateTimeFormatterBuilder appendOptional(java.time.format.DateTimeFormatter);
-    method public java.time.format.DateTimeFormatterBuilder appendPattern(String);
-    method public java.time.format.DateTimeFormatterBuilder appendText(java.time.temporal.TemporalField);
-    method public java.time.format.DateTimeFormatterBuilder appendText(java.time.temporal.TemporalField, java.time.format.TextStyle);
-    method public java.time.format.DateTimeFormatterBuilder appendText(java.time.temporal.TemporalField, java.util.Map<java.lang.Long,java.lang.String>);
-    method public java.time.format.DateTimeFormatterBuilder appendValue(java.time.temporal.TemporalField);
-    method public java.time.format.DateTimeFormatterBuilder appendValue(java.time.temporal.TemporalField, int);
-    method public java.time.format.DateTimeFormatterBuilder appendValue(java.time.temporal.TemporalField, int, int, java.time.format.SignStyle);
-    method public java.time.format.DateTimeFormatterBuilder appendValueReduced(java.time.temporal.TemporalField, int, int, int);
-    method public java.time.format.DateTimeFormatterBuilder appendValueReduced(java.time.temporal.TemporalField, int, int, java.time.chrono.ChronoLocalDate);
-    method public java.time.format.DateTimeFormatterBuilder appendZoneId();
-    method public java.time.format.DateTimeFormatterBuilder appendZoneOrOffsetId();
-    method public java.time.format.DateTimeFormatterBuilder appendZoneRegionId();
-    method public java.time.format.DateTimeFormatterBuilder appendZoneText(java.time.format.TextStyle);
-    method public java.time.format.DateTimeFormatterBuilder appendZoneText(java.time.format.TextStyle, java.util.Set<java.time.ZoneId>);
-    method public static String getLocalizedDateTimePattern(java.time.format.FormatStyle, java.time.format.FormatStyle, java.time.chrono.Chronology, java.util.Locale);
-    method public java.time.format.DateTimeFormatterBuilder optionalEnd();
-    method public java.time.format.DateTimeFormatterBuilder optionalStart();
-    method public java.time.format.DateTimeFormatterBuilder padNext(int);
-    method public java.time.format.DateTimeFormatterBuilder padNext(int, char);
-    method public java.time.format.DateTimeFormatterBuilder parseCaseInsensitive();
-    method public java.time.format.DateTimeFormatterBuilder parseCaseSensitive();
-    method public java.time.format.DateTimeFormatterBuilder parseDefaulting(java.time.temporal.TemporalField, long);
-    method public java.time.format.DateTimeFormatterBuilder parseLenient();
-    method public java.time.format.DateTimeFormatterBuilder parseStrict();
-    method public java.time.format.DateTimeFormatter toFormatter();
-    method public java.time.format.DateTimeFormatter toFormatter(java.util.Locale);
-  }
-
-  public class DateTimeParseException extends java.time.DateTimeException {
-    ctor public DateTimeParseException(String, CharSequence, int);
-    ctor public DateTimeParseException(String, CharSequence, int, Throwable);
-    method public int getErrorIndex();
-    method public String getParsedString();
-  }
-
-  public final class DecimalStyle {
-    method public static java.util.Set<java.util.Locale> getAvailableLocales();
-    method public char getDecimalSeparator();
-    method public char getNegativeSign();
-    method public char getPositiveSign();
-    method public char getZeroDigit();
-    method public static java.time.format.DecimalStyle of(java.util.Locale);
-    method public static java.time.format.DecimalStyle ofDefaultLocale();
-    method public java.time.format.DecimalStyle withDecimalSeparator(char);
-    method public java.time.format.DecimalStyle withNegativeSign(char);
-    method public java.time.format.DecimalStyle withPositiveSign(char);
-    method public java.time.format.DecimalStyle withZeroDigit(char);
-    field public static final java.time.format.DecimalStyle STANDARD;
-  }
-
-  public enum FormatStyle {
-    enum_constant public static final java.time.format.FormatStyle FULL;
-    enum_constant public static final java.time.format.FormatStyle LONG;
-    enum_constant public static final java.time.format.FormatStyle MEDIUM;
-    enum_constant public static final java.time.format.FormatStyle SHORT;
-  }
-
-  public enum ResolverStyle {
-    enum_constant public static final java.time.format.ResolverStyle LENIENT;
-    enum_constant public static final java.time.format.ResolverStyle SMART;
-    enum_constant public static final java.time.format.ResolverStyle STRICT;
-  }
-
-  public enum SignStyle {
-    enum_constant public static final java.time.format.SignStyle ALWAYS;
-    enum_constant public static final java.time.format.SignStyle EXCEEDS_PAD;
-    enum_constant public static final java.time.format.SignStyle NEVER;
-    enum_constant public static final java.time.format.SignStyle NORMAL;
-    enum_constant public static final java.time.format.SignStyle NOT_NEGATIVE;
-  }
-
-  public enum TextStyle {
-    method public java.time.format.TextStyle asNormal();
-    method public java.time.format.TextStyle asStandalone();
-    method public boolean isStandalone();
-    enum_constant public static final java.time.format.TextStyle FULL;
-    enum_constant public static final java.time.format.TextStyle FULL_STANDALONE;
-    enum_constant public static final java.time.format.TextStyle NARROW;
-    enum_constant public static final java.time.format.TextStyle NARROW_STANDALONE;
-    enum_constant public static final java.time.format.TextStyle SHORT;
-    enum_constant public static final java.time.format.TextStyle SHORT_STANDALONE;
-  }
-
-}
-
-package java.time.temporal {
-
-  public enum ChronoField implements java.time.temporal.TemporalField {
-    method public <R extends java.time.temporal.Temporal> R adjustInto(R, long);
-    method public int checkValidIntValue(long);
-    method public long checkValidValue(long);
-    method public java.time.temporal.TemporalUnit getBaseUnit();
-    method public long getFrom(java.time.temporal.TemporalAccessor);
-    method public java.time.temporal.TemporalUnit getRangeUnit();
-    method public boolean isDateBased();
-    method public boolean isSupportedBy(java.time.temporal.TemporalAccessor);
-    method public boolean isTimeBased();
-    method public java.time.temporal.ValueRange range();
-    method public java.time.temporal.ValueRange rangeRefinedBy(java.time.temporal.TemporalAccessor);
-    enum_constant public static final java.time.temporal.ChronoField ALIGNED_DAY_OF_WEEK_IN_MONTH;
-    enum_constant public static final java.time.temporal.ChronoField ALIGNED_DAY_OF_WEEK_IN_YEAR;
-    enum_constant public static final java.time.temporal.ChronoField ALIGNED_WEEK_OF_MONTH;
-    enum_constant public static final java.time.temporal.ChronoField ALIGNED_WEEK_OF_YEAR;
-    enum_constant public static final java.time.temporal.ChronoField AMPM_OF_DAY;
-    enum_constant public static final java.time.temporal.ChronoField CLOCK_HOUR_OF_AMPM;
-    enum_constant public static final java.time.temporal.ChronoField CLOCK_HOUR_OF_DAY;
-    enum_constant public static final java.time.temporal.ChronoField DAY_OF_MONTH;
-    enum_constant public static final java.time.temporal.ChronoField DAY_OF_WEEK;
-    enum_constant public static final java.time.temporal.ChronoField DAY_OF_YEAR;
-    enum_constant public static final java.time.temporal.ChronoField EPOCH_DAY;
-    enum_constant public static final java.time.temporal.ChronoField ERA;
-    enum_constant public static final java.time.temporal.ChronoField HOUR_OF_AMPM;
-    enum_constant public static final java.time.temporal.ChronoField HOUR_OF_DAY;
-    enum_constant public static final java.time.temporal.ChronoField INSTANT_SECONDS;
-    enum_constant public static final java.time.temporal.ChronoField MICRO_OF_DAY;
-    enum_constant public static final java.time.temporal.ChronoField MICRO_OF_SECOND;
-    enum_constant public static final java.time.temporal.ChronoField MILLI_OF_DAY;
-    enum_constant public static final java.time.temporal.ChronoField MILLI_OF_SECOND;
-    enum_constant public static final java.time.temporal.ChronoField MINUTE_OF_DAY;
-    enum_constant public static final java.time.temporal.ChronoField MINUTE_OF_HOUR;
-    enum_constant public static final java.time.temporal.ChronoField MONTH_OF_YEAR;
-    enum_constant public static final java.time.temporal.ChronoField NANO_OF_DAY;
-    enum_constant public static final java.time.temporal.ChronoField NANO_OF_SECOND;
-    enum_constant public static final java.time.temporal.ChronoField OFFSET_SECONDS;
-    enum_constant public static final java.time.temporal.ChronoField PROLEPTIC_MONTH;
-    enum_constant public static final java.time.temporal.ChronoField SECOND_OF_DAY;
-    enum_constant public static final java.time.temporal.ChronoField SECOND_OF_MINUTE;
-    enum_constant public static final java.time.temporal.ChronoField YEAR;
-    enum_constant public static final java.time.temporal.ChronoField YEAR_OF_ERA;
-  }
-
-  public enum ChronoUnit implements java.time.temporal.TemporalUnit {
-    method public <R extends java.time.temporal.Temporal> R addTo(R, long);
-    method public long between(java.time.temporal.Temporal, java.time.temporal.Temporal);
-    method public java.time.Duration getDuration();
-    method public boolean isDateBased();
-    method public boolean isDurationEstimated();
-    method public boolean isTimeBased();
-    enum_constant public static final java.time.temporal.ChronoUnit CENTURIES;
-    enum_constant public static final java.time.temporal.ChronoUnit DAYS;
-    enum_constant public static final java.time.temporal.ChronoUnit DECADES;
-    enum_constant public static final java.time.temporal.ChronoUnit ERAS;
-    enum_constant public static final java.time.temporal.ChronoUnit FOREVER;
-    enum_constant public static final java.time.temporal.ChronoUnit HALF_DAYS;
-    enum_constant public static final java.time.temporal.ChronoUnit HOURS;
-    enum_constant public static final java.time.temporal.ChronoUnit MICROS;
-    enum_constant public static final java.time.temporal.ChronoUnit MILLENNIA;
-    enum_constant public static final java.time.temporal.ChronoUnit MILLIS;
-    enum_constant public static final java.time.temporal.ChronoUnit MINUTES;
-    enum_constant public static final java.time.temporal.ChronoUnit MONTHS;
-    enum_constant public static final java.time.temporal.ChronoUnit NANOS;
-    enum_constant public static final java.time.temporal.ChronoUnit SECONDS;
-    enum_constant public static final java.time.temporal.ChronoUnit WEEKS;
-    enum_constant public static final java.time.temporal.ChronoUnit YEARS;
-  }
-
-  public final class IsoFields {
-    field public static final java.time.temporal.TemporalField DAY_OF_QUARTER;
-    field public static final java.time.temporal.TemporalField QUARTER_OF_YEAR;
-    field public static final java.time.temporal.TemporalUnit QUARTER_YEARS;
-    field public static final java.time.temporal.TemporalField WEEK_BASED_YEAR;
-    field public static final java.time.temporal.TemporalUnit WEEK_BASED_YEARS;
-    field public static final java.time.temporal.TemporalField WEEK_OF_WEEK_BASED_YEAR;
-  }
-
-  public final class JulianFields {
-    field public static final java.time.temporal.TemporalField JULIAN_DAY;
-    field public static final java.time.temporal.TemporalField MODIFIED_JULIAN_DAY;
-    field public static final java.time.temporal.TemporalField RATA_DIE;
-  }
-
-  public interface Temporal extends java.time.temporal.TemporalAccessor {
-    method public boolean isSupported(java.time.temporal.TemporalUnit);
-    method public default java.time.temporal.Temporal minus(java.time.temporal.TemporalAmount);
-    method public default java.time.temporal.Temporal minus(long, java.time.temporal.TemporalUnit);
-    method public default java.time.temporal.Temporal plus(java.time.temporal.TemporalAmount);
-    method public java.time.temporal.Temporal plus(long, java.time.temporal.TemporalUnit);
-    method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    method public default java.time.temporal.Temporal with(java.time.temporal.TemporalAdjuster);
-    method public java.time.temporal.Temporal with(java.time.temporal.TemporalField, long);
-  }
-
-  public interface TemporalAccessor {
-    method public default int get(java.time.temporal.TemporalField);
-    method public long getLong(java.time.temporal.TemporalField);
-    method public boolean isSupported(java.time.temporal.TemporalField);
-    method public default <R> R query(java.time.temporal.TemporalQuery<R>);
-    method public default java.time.temporal.ValueRange range(java.time.temporal.TemporalField);
-  }
-
-  @java.lang.FunctionalInterface public interface TemporalAdjuster {
-    method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-  }
-
-  public final class TemporalAdjusters {
-    method public static java.time.temporal.TemporalAdjuster dayOfWeekInMonth(int, java.time.DayOfWeek);
-    method public static java.time.temporal.TemporalAdjuster firstDayOfMonth();
-    method public static java.time.temporal.TemporalAdjuster firstDayOfNextMonth();
-    method public static java.time.temporal.TemporalAdjuster firstDayOfNextYear();
-    method public static java.time.temporal.TemporalAdjuster firstDayOfYear();
-    method public static java.time.temporal.TemporalAdjuster firstInMonth(java.time.DayOfWeek);
-    method public static java.time.temporal.TemporalAdjuster lastDayOfMonth();
-    method public static java.time.temporal.TemporalAdjuster lastDayOfYear();
-    method public static java.time.temporal.TemporalAdjuster lastInMonth(java.time.DayOfWeek);
-    method public static java.time.temporal.TemporalAdjuster next(java.time.DayOfWeek);
-    method public static java.time.temporal.TemporalAdjuster nextOrSame(java.time.DayOfWeek);
-    method public static java.time.temporal.TemporalAdjuster ofDateAdjuster(java.util.function.UnaryOperator<java.time.LocalDate>);
-    method public static java.time.temporal.TemporalAdjuster previous(java.time.DayOfWeek);
-    method public static java.time.temporal.TemporalAdjuster previousOrSame(java.time.DayOfWeek);
-  }
-
-  public interface TemporalAmount {
-    method public java.time.temporal.Temporal addTo(java.time.temporal.Temporal);
-    method public long get(java.time.temporal.TemporalUnit);
-    method public java.util.List<java.time.temporal.TemporalUnit> getUnits();
-    method public java.time.temporal.Temporal subtractFrom(java.time.temporal.Temporal);
-  }
-
-  public interface TemporalField {
-    method public <R extends java.time.temporal.Temporal> R adjustInto(R, long);
-    method public java.time.temporal.TemporalUnit getBaseUnit();
-    method public default String getDisplayName(java.util.Locale);
-    method public long getFrom(java.time.temporal.TemporalAccessor);
-    method public java.time.temporal.TemporalUnit getRangeUnit();
-    method public boolean isDateBased();
-    method public boolean isSupportedBy(java.time.temporal.TemporalAccessor);
-    method public boolean isTimeBased();
-    method public java.time.temporal.ValueRange range();
-    method public java.time.temporal.ValueRange rangeRefinedBy(java.time.temporal.TemporalAccessor);
-    method public default java.time.temporal.TemporalAccessor resolve(java.util.Map<java.time.temporal.TemporalField,java.lang.Long>, java.time.temporal.TemporalAccessor, java.time.format.ResolverStyle);
-    method public String toString();
-  }
-
-  public final class TemporalQueries {
-    method public static java.time.temporal.TemporalQuery<java.time.chrono.Chronology> chronology();
-    method public static java.time.temporal.TemporalQuery<java.time.LocalDate> localDate();
-    method public static java.time.temporal.TemporalQuery<java.time.LocalTime> localTime();
-    method public static java.time.temporal.TemporalQuery<java.time.ZoneOffset> offset();
-    method public static java.time.temporal.TemporalQuery<java.time.temporal.TemporalUnit> precision();
-    method public static java.time.temporal.TemporalQuery<java.time.ZoneId> zone();
-    method public static java.time.temporal.TemporalQuery<java.time.ZoneId> zoneId();
-  }
-
-  @java.lang.FunctionalInterface public interface TemporalQuery<R> {
-    method public R queryFrom(java.time.temporal.TemporalAccessor);
-  }
-
-  public interface TemporalUnit {
-    method public <R extends java.time.temporal.Temporal> R addTo(R, long);
-    method public long between(java.time.temporal.Temporal, java.time.temporal.Temporal);
-    method public java.time.Duration getDuration();
-    method public boolean isDateBased();
-    method public boolean isDurationEstimated();
-    method public default boolean isSupportedBy(java.time.temporal.Temporal);
-    method public boolean isTimeBased();
-    method public String toString();
-  }
-
-  public class UnsupportedTemporalTypeException extends java.time.DateTimeException {
-    ctor public UnsupportedTemporalTypeException(String);
-    ctor public UnsupportedTemporalTypeException(String, Throwable);
-  }
-
-  public final class ValueRange implements java.io.Serializable {
-    method public int checkValidIntValue(long, java.time.temporal.TemporalField);
-    method public long checkValidValue(long, java.time.temporal.TemporalField);
-    method public long getLargestMinimum();
-    method public long getMaximum();
-    method public long getMinimum();
-    method public long getSmallestMaximum();
-    method public boolean isFixed();
-    method public boolean isIntValue();
-    method public boolean isValidIntValue(long);
-    method public boolean isValidValue(long);
-    method public static java.time.temporal.ValueRange of(long, long);
-    method public static java.time.temporal.ValueRange of(long, long, long);
-    method public static java.time.temporal.ValueRange of(long, long, long, long);
-  }
-
-  public final class WeekFields implements java.io.Serializable {
-    method public java.time.temporal.TemporalField dayOfWeek();
-    method public java.time.DayOfWeek getFirstDayOfWeek();
-    method public int getMinimalDaysInFirstWeek();
-    method public static java.time.temporal.WeekFields of(java.util.Locale);
-    method public static java.time.temporal.WeekFields of(java.time.DayOfWeek, int);
-    method public java.time.temporal.TemporalField weekBasedYear();
-    method public java.time.temporal.TemporalField weekOfMonth();
-    method public java.time.temporal.TemporalField weekOfWeekBasedYear();
-    method public java.time.temporal.TemporalField weekOfYear();
-    field public static final java.time.temporal.WeekFields ISO;
-    field public static final java.time.temporal.WeekFields SUNDAY_START;
-    field public static final java.time.temporal.TemporalUnit WEEK_BASED_YEARS;
-  }
-
-}
-
-package java.time.zone {
-
-  public final class ZoneOffsetTransition implements java.lang.Comparable<java.time.zone.ZoneOffsetTransition> java.io.Serializable {
-    method public int compareTo(java.time.zone.ZoneOffsetTransition);
-    method public java.time.LocalDateTime getDateTimeAfter();
-    method public java.time.LocalDateTime getDateTimeBefore();
-    method public java.time.Duration getDuration();
-    method public java.time.Instant getInstant();
-    method public java.time.ZoneOffset getOffsetAfter();
-    method public java.time.ZoneOffset getOffsetBefore();
-    method public boolean isGap();
-    method public boolean isOverlap();
-    method public boolean isValidOffset(java.time.ZoneOffset);
-    method public static java.time.zone.ZoneOffsetTransition of(java.time.LocalDateTime, java.time.ZoneOffset, java.time.ZoneOffset);
-    method public long toEpochSecond();
-  }
-
-  public final class ZoneOffsetTransitionRule implements java.io.Serializable {
-    method public java.time.zone.ZoneOffsetTransition createTransition(int);
-    method public int getDayOfMonthIndicator();
-    method public java.time.DayOfWeek getDayOfWeek();
-    method public java.time.LocalTime getLocalTime();
-    method public java.time.Month getMonth();
-    method public java.time.ZoneOffset getOffsetAfter();
-    method public java.time.ZoneOffset getOffsetBefore();
-    method public java.time.ZoneOffset getStandardOffset();
-    method public java.time.zone.ZoneOffsetTransitionRule.TimeDefinition getTimeDefinition();
-    method public boolean isMidnightEndOfDay();
-    method public static java.time.zone.ZoneOffsetTransitionRule of(java.time.Month, int, java.time.DayOfWeek, java.time.LocalTime, boolean, java.time.zone.ZoneOffsetTransitionRule.TimeDefinition, java.time.ZoneOffset, java.time.ZoneOffset, java.time.ZoneOffset);
-  }
-
-  public enum ZoneOffsetTransitionRule.TimeDefinition {
-    method public java.time.LocalDateTime createDateTime(java.time.LocalDateTime, java.time.ZoneOffset, java.time.ZoneOffset);
-    enum_constant public static final java.time.zone.ZoneOffsetTransitionRule.TimeDefinition STANDARD;
-    enum_constant public static final java.time.zone.ZoneOffsetTransitionRule.TimeDefinition UTC;
-    enum_constant public static final java.time.zone.ZoneOffsetTransitionRule.TimeDefinition WALL;
-  }
-
-  public final class ZoneRules implements java.io.Serializable {
-    method public java.time.Duration getDaylightSavings(java.time.Instant);
-    method public java.time.ZoneOffset getOffset(java.time.Instant);
-    method public java.time.ZoneOffset getOffset(java.time.LocalDateTime);
-    method public java.time.ZoneOffset getStandardOffset(java.time.Instant);
-    method public java.time.zone.ZoneOffsetTransition getTransition(java.time.LocalDateTime);
-    method public java.util.List<java.time.zone.ZoneOffsetTransitionRule> getTransitionRules();
-    method public java.util.List<java.time.zone.ZoneOffsetTransition> getTransitions();
-    method public java.util.List<java.time.ZoneOffset> getValidOffsets(java.time.LocalDateTime);
-    method public boolean isDaylightSavings(java.time.Instant);
-    method public boolean isFixedOffset();
-    method public boolean isValidOffset(java.time.LocalDateTime, java.time.ZoneOffset);
-    method public java.time.zone.ZoneOffsetTransition nextTransition(java.time.Instant);
-    method public static java.time.zone.ZoneRules of(java.time.ZoneOffset, java.time.ZoneOffset, java.util.List<java.time.zone.ZoneOffsetTransition>, java.util.List<java.time.zone.ZoneOffsetTransition>, java.util.List<java.time.zone.ZoneOffsetTransitionRule>);
-    method public static java.time.zone.ZoneRules of(java.time.ZoneOffset);
-    method public java.time.zone.ZoneOffsetTransition previousTransition(java.time.Instant);
-  }
-
-  public class ZoneRulesException extends java.time.DateTimeException {
-    ctor public ZoneRulesException(String);
-    ctor public ZoneRulesException(String, Throwable);
-  }
-
-}
-
-package java.util {
-
-  public abstract class AbstractCollection<E> implements java.util.Collection<E> {
-    ctor protected AbstractCollection();
-    method public boolean add(E);
-    method public boolean addAll(@NonNull java.util.Collection<? extends E>);
-    method public void clear();
-    method public boolean contains(@Nullable Object);
-    method public boolean containsAll(@NonNull java.util.Collection<?>);
-    method public boolean isEmpty();
-    method public boolean remove(@Nullable Object);
-    method public boolean removeAll(@NonNull java.util.Collection<?>);
-    method public boolean retainAll(@NonNull java.util.Collection<?>);
-    method @NonNull public Object[] toArray();
-    method @NonNull public <T> T[] toArray(@NonNull T[]);
-  }
-
-  public abstract class AbstractList<E> extends java.util.AbstractCollection<E> implements java.util.List<E> {
-    ctor protected AbstractList();
-    method public void add(int, E);
-    method public boolean addAll(int, @NonNull java.util.Collection<? extends E>);
-    method public int indexOf(@Nullable Object);
-    method @NonNull public java.util.Iterator<E> iterator();
-    method public int lastIndexOf(@Nullable Object);
-    method @NonNull public java.util.ListIterator<E> listIterator();
-    method @NonNull public java.util.ListIterator<E> listIterator(int);
-    method public E remove(int);
-    method protected void removeRange(int, int);
-    method public E set(int, E);
-    method @NonNull public java.util.List<E> subList(int, int);
-    field protected transient int modCount;
-  }
-
-  public abstract class AbstractMap<K, V> implements java.util.Map<K,V> {
-    ctor protected AbstractMap();
-    method public void clear();
-    method public boolean containsKey(@Nullable Object);
-    method public boolean containsValue(@Nullable Object);
-    method @Nullable public V get(@Nullable Object);
-    method public boolean isEmpty();
-    method @NonNull public java.util.Set<K> keySet();
-    method @Nullable public V put(K, V);
-    method public void putAll(@NonNull java.util.Map<? extends K,? extends V>);
-    method @Nullable public V remove(@Nullable Object);
-    method public int size();
-    method @NonNull public java.util.Collection<V> values();
-  }
-
-  public static class AbstractMap.SimpleEntry<K, V> implements java.util.Map.Entry<K,V> java.io.Serializable {
-    ctor public AbstractMap.SimpleEntry(K, V);
-    ctor public AbstractMap.SimpleEntry(@NonNull java.util.Map.Entry<? extends K,? extends V>);
-    method public K getKey();
-    method public V getValue();
-    method public V setValue(V);
-  }
-
-  public static class AbstractMap.SimpleImmutableEntry<K, V> implements java.util.Map.Entry<K,V> java.io.Serializable {
-    ctor public AbstractMap.SimpleImmutableEntry(K, V);
-    ctor public AbstractMap.SimpleImmutableEntry(@NonNull java.util.Map.Entry<? extends K,? extends V>);
-    method public K getKey();
-    method public V getValue();
-    method public V setValue(V);
-  }
-
-  public abstract class AbstractQueue<E> extends java.util.AbstractCollection<E> implements java.util.Queue<E> {
-    ctor protected AbstractQueue();
-    method public E element();
-    method public E remove();
-  }
-
-  public abstract class AbstractSequentialList<E> extends java.util.AbstractList<E> {
-    ctor protected AbstractSequentialList();
-    method public E get(int);
-  }
-
-  public abstract class AbstractSet<E> extends java.util.AbstractCollection<E> implements java.util.Set<E> {
-    ctor protected AbstractSet();
-  }
-
-  public class ArrayDeque<E> extends java.util.AbstractCollection<E> implements java.lang.Cloneable java.util.Deque<E> java.io.Serializable {
-    ctor public ArrayDeque();
-    ctor public ArrayDeque(int);
-    ctor public ArrayDeque(@NonNull java.util.Collection<? extends E>);
-    method public void addFirst(E);
-    method public void addLast(E);
-    method @NonNull public java.util.ArrayDeque<E> clone();
-    method @NonNull public java.util.Iterator<E> descendingIterator();
-    method public E element();
-    method public E getFirst();
-    method public E getLast();
-    method @NonNull public java.util.Iterator<E> iterator();
-    method public boolean offer(E);
-    method public boolean offerFirst(E);
-    method public boolean offerLast(E);
-    method @Nullable public E peek();
-    method @Nullable public E peekFirst();
-    method @Nullable public E peekLast();
-    method @Nullable public E poll();
-    method @Nullable public E pollFirst();
-    method @Nullable public E pollLast();
-    method public E pop();
-    method public void push(E);
-    method public E remove();
-    method public E removeFirst();
-    method public boolean removeFirstOccurrence(@Nullable Object);
-    method public E removeLast();
-    method public boolean removeLastOccurrence(@Nullable Object);
-    method public int size();
-  }
-
-  public class ArrayList<E> extends java.util.AbstractList<E> implements java.lang.Cloneable java.util.List<E> java.util.RandomAccess java.io.Serializable {
-    ctor public ArrayList(int);
-    ctor public ArrayList();
-    ctor public ArrayList(@NonNull java.util.Collection<? extends E>);
-    method @NonNull public Object clone();
-    method public void ensureCapacity(int);
-    method public void forEach(@NonNull java.util.function.Consumer<? super E>);
-    method public E get(int);
-    method public int size();
-    method public void trimToSize();
-  }
-
-  public class Arrays {
-    method @NonNull @java.lang.SafeVarargs public static <T> java.util.List<T> asList(@NonNull T...);
-    method public static int binarySearch(@NonNull long[], long);
-    method public static int binarySearch(@NonNull long[], int, int, long);
-    method public static int binarySearch(@NonNull int[], int);
-    method public static int binarySearch(@NonNull int[], int, int, int);
-    method public static int binarySearch(@NonNull short[], short);
-    method public static int binarySearch(@NonNull short[], int, int, short);
-    method public static int binarySearch(@NonNull char[], char);
-    method public static int binarySearch(@NonNull char[], int, int, char);
-    method public static int binarySearch(@NonNull byte[], byte);
-    method public static int binarySearch(@NonNull byte[], int, int, byte);
-    method public static int binarySearch(@NonNull double[], double);
-    method public static int binarySearch(@NonNull double[], int, int, double);
-    method public static int binarySearch(@NonNull float[], float);
-    method public static int binarySearch(@NonNull float[], int, int, float);
-    method public static int binarySearch(@NonNull Object[], @NonNull Object);
-    method public static int binarySearch(@NonNull Object[], int, int, @NonNull Object);
-    method public static <T> int binarySearch(@NonNull T[], T, @Nullable java.util.Comparator<? super T>);
-    method public static <T> int binarySearch(@NonNull T[], int, int, T, @Nullable java.util.Comparator<? super T>);
-    method @NonNull public static <T> T[] copyOf(@NonNull T[], int);
-    method @NonNull public static <T, U> T[] copyOf(@NonNull U[], int, @NonNull Class<? extends T[]>);
-    method @NonNull public static byte[] copyOf(@NonNull byte[], int);
-    method @NonNull public static short[] copyOf(@NonNull short[], int);
-    method @NonNull public static int[] copyOf(@NonNull int[], int);
-    method @NonNull public static long[] copyOf(@NonNull long[], int);
-    method @NonNull public static char[] copyOf(@NonNull char[], int);
-    method @NonNull public static float[] copyOf(@NonNull float[], int);
-    method @NonNull public static double[] copyOf(@NonNull double[], int);
-    method @NonNull public static boolean[] copyOf(@NonNull boolean[], int);
-    method @NonNull public static <T> T[] copyOfRange(@NonNull T[], int, int);
-    method @NonNull public static <T, U> T[] copyOfRange(@NonNull U[], int, int, @NonNull Class<? extends T[]>);
-    method @NonNull public static byte[] copyOfRange(@NonNull byte[], int, int);
-    method @NonNull public static short[] copyOfRange(@NonNull short[], int, int);
-    method @NonNull public static int[] copyOfRange(@NonNull int[], int, int);
-    method @NonNull public static long[] copyOfRange(@NonNull long[], int, int);
-    method @NonNull public static char[] copyOfRange(@NonNull char[], int, int);
-    method @NonNull public static float[] copyOfRange(@NonNull float[], int, int);
-    method @NonNull public static double[] copyOfRange(@NonNull double[], int, int);
-    method @NonNull public static boolean[] copyOfRange(@NonNull boolean[], int, int);
-    method public static boolean deepEquals(@Nullable Object[], @Nullable Object[]);
-    method public static int deepHashCode(@Nullable Object[]);
-    method @NonNull public static String deepToString(@Nullable Object[]);
-    method public static boolean equals(@Nullable long[], @Nullable long[]);
-    method public static boolean equals(@Nullable int[], @Nullable int[]);
-    method public static boolean equals(@Nullable short[], @Nullable short[]);
-    method public static boolean equals(@Nullable char[], @Nullable char[]);
-    method public static boolean equals(@Nullable byte[], @Nullable byte[]);
-    method public static boolean equals(@Nullable boolean[], @Nullable boolean[]);
-    method public static boolean equals(@Nullable double[], @Nullable double[]);
-    method public static boolean equals(@Nullable float[], @Nullable float[]);
-    method public static boolean equals(@Nullable Object[], @Nullable Object[]);
-    method public static void fill(@NonNull long[], long);
-    method public static void fill(@NonNull long[], int, int, long);
-    method public static void fill(@NonNull int[], int);
-    method public static void fill(@NonNull int[], int, int, int);
-    method public static void fill(@NonNull short[], short);
-    method public static void fill(@NonNull short[], int, int, short);
-    method public static void fill(@NonNull char[], char);
-    method public static void fill(@NonNull char[], int, int, char);
-    method public static void fill(@NonNull byte[], byte);
-    method public static void fill(@NonNull byte[], int, int, byte);
-    method public static void fill(@NonNull boolean[], boolean);
-    method public static void fill(@NonNull boolean[], int, int, boolean);
-    method public static void fill(@NonNull double[], double);
-    method public static void fill(@NonNull double[], int, int, double);
-    method public static void fill(@NonNull float[], float);
-    method public static void fill(@NonNull float[], int, int, float);
-    method public static void fill(@NonNull Object[], @Nullable Object);
-    method public static void fill(@NonNull Object[], int, int, @Nullable Object);
-    method public static int hashCode(@Nullable long[]);
-    method public static int hashCode(@Nullable int[]);
-    method public static int hashCode(@Nullable short[]);
-    method public static int hashCode(@Nullable char[]);
-    method public static int hashCode(@Nullable byte[]);
-    method public static int hashCode(@Nullable boolean[]);
-    method public static int hashCode(@Nullable float[]);
-    method public static int hashCode(@Nullable double[]);
-    method public static int hashCode(@Nullable Object[]);
-    method public static <T> void parallelPrefix(@NonNull T[], @NonNull java.util.function.BinaryOperator<T>);
-    method public static <T> void parallelPrefix(@NonNull T[], int, int, @NonNull java.util.function.BinaryOperator<T>);
-    method public static void parallelPrefix(@NonNull long[], @NonNull java.util.function.LongBinaryOperator);
-    method public static void parallelPrefix(@NonNull long[], int, int, @NonNull java.util.function.LongBinaryOperator);
-    method public static void parallelPrefix(@NonNull double[], @NonNull java.util.function.DoubleBinaryOperator);
-    method public static void parallelPrefix(@NonNull double[], int, int, @NonNull java.util.function.DoubleBinaryOperator);
-    method public static void parallelPrefix(@NonNull int[], @NonNull java.util.function.IntBinaryOperator);
-    method public static void parallelPrefix(@NonNull int[], int, int, @NonNull java.util.function.IntBinaryOperator);
-    method public static <T> void parallelSetAll(@NonNull T[], @NonNull java.util.function.IntFunction<? extends T>);
-    method public static void parallelSetAll(@NonNull int[], @NonNull java.util.function.IntUnaryOperator);
-    method public static void parallelSetAll(@NonNull long[], @NonNull java.util.function.IntToLongFunction);
-    method public static void parallelSetAll(@NonNull double[], @NonNull java.util.function.IntToDoubleFunction);
-    method public static void parallelSort(@NonNull byte[]);
-    method public static void parallelSort(@NonNull byte[], int, int);
-    method public static void parallelSort(@NonNull char[]);
-    method public static void parallelSort(@NonNull char[], int, int);
-    method public static void parallelSort(@NonNull short[]);
-    method public static void parallelSort(@NonNull short[], int, int);
-    method public static void parallelSort(@NonNull int[]);
-    method public static void parallelSort(@NonNull int[], int, int);
-    method public static void parallelSort(@NonNull long[]);
-    method public static void parallelSort(@NonNull long[], int, int);
-    method public static void parallelSort(@NonNull float[]);
-    method public static void parallelSort(@NonNull float[], int, int);
-    method public static void parallelSort(@NonNull double[]);
-    method public static void parallelSort(@NonNull double[], int, int);
-    method public static <T extends java.lang.Comparable<? super T>> void parallelSort(@NonNull T[]);
-    method public static <T extends java.lang.Comparable<? super T>> void parallelSort(@NonNull T[], int, int);
-    method public static <T> void parallelSort(@NonNull T[], @Nullable java.util.Comparator<? super T>);
-    method public static <T> void parallelSort(@NonNull T[], int, int, @Nullable java.util.Comparator<? super T>);
-    method public static <T> void setAll(@NonNull T[], @NonNull java.util.function.IntFunction<? extends T>);
-    method public static void setAll(@NonNull int[], @NonNull java.util.function.IntUnaryOperator);
-    method public static void setAll(@NonNull long[], @NonNull java.util.function.IntToLongFunction);
-    method public static void setAll(@NonNull double[], @NonNull java.util.function.IntToDoubleFunction);
-    method public static void sort(@NonNull int[]);
-    method public static void sort(@NonNull int[], int, int);
-    method public static void sort(@NonNull long[]);
-    method public static void sort(@NonNull long[], int, int);
-    method public static void sort(@NonNull short[]);
-    method public static void sort(@NonNull short[], int, int);
-    method public static void sort(@NonNull char[]);
-    method public static void sort(@NonNull char[], int, int);
-    method public static void sort(@NonNull byte[]);
-    method public static void sort(@NonNull byte[], int, int);
-    method public static void sort(@NonNull float[]);
-    method public static void sort(@NonNull float[], int, int);
-    method public static void sort(@NonNull double[]);
-    method public static void sort(@NonNull double[], int, int);
-    method public static void sort(@NonNull Object[]);
-    method public static void sort(@NonNull Object[], int, int);
-    method public static <T> void sort(@NonNull T[], @Nullable java.util.Comparator<? super T>);
-    method public static <T> void sort(@NonNull T[], int, int, @Nullable java.util.Comparator<? super T>);
-    method @NonNull public static <T> java.util.Spliterator<T> spliterator(@NonNull T[]);
-    method @NonNull public static <T> java.util.Spliterator<T> spliterator(@NonNull T[], int, int);
-    method @NonNull public static java.util.Spliterator.OfInt spliterator(@NonNull int[]);
-    method @NonNull public static java.util.Spliterator.OfInt spliterator(@NonNull int[], int, int);
-    method @NonNull public static java.util.Spliterator.OfLong spliterator(@NonNull long[]);
-    method @NonNull public static java.util.Spliterator.OfLong spliterator(@NonNull long[], int, int);
-    method @NonNull public static java.util.Spliterator.OfDouble spliterator(@NonNull double[]);
-    method @NonNull public static java.util.Spliterator.OfDouble spliterator(@NonNull double[], int, int);
-    method @NonNull public static <T> java.util.stream.Stream<T> stream(@NonNull T[]);
-    method @NonNull public static <T> java.util.stream.Stream<T> stream(@NonNull T[], int, int);
-    method @NonNull public static java.util.stream.IntStream stream(@NonNull int[]);
-    method @NonNull public static java.util.stream.IntStream stream(@NonNull int[], int, int);
-    method @NonNull public static java.util.stream.LongStream stream(@NonNull long[]);
-    method @NonNull public static java.util.stream.LongStream stream(@NonNull long[], int, int);
-    method @NonNull public static java.util.stream.DoubleStream stream(@NonNull double[]);
-    method @NonNull public static java.util.stream.DoubleStream stream(@NonNull double[], int, int);
-    method @NonNull public static String toString(@Nullable long[]);
-    method @NonNull public static String toString(@Nullable int[]);
-    method @NonNull public static String toString(@Nullable short[]);
-    method @NonNull public static String toString(@Nullable char[]);
-    method @NonNull public static String toString(@Nullable byte[]);
-    method @NonNull public static String toString(@Nullable boolean[]);
-    method @NonNull public static String toString(@Nullable float[]);
-    method @NonNull public static String toString(@Nullable double[]);
-    method @NonNull public static String toString(@Nullable Object[]);
-  }
-
-  public class Base64 {
-    method public static java.util.Base64.Decoder getDecoder();
-    method public static java.util.Base64.Encoder getEncoder();
-    method public static java.util.Base64.Decoder getMimeDecoder();
-    method public static java.util.Base64.Encoder getMimeEncoder();
-    method public static java.util.Base64.Encoder getMimeEncoder(int, byte[]);
-    method public static java.util.Base64.Decoder getUrlDecoder();
-    method public static java.util.Base64.Encoder getUrlEncoder();
-  }
-
-  public static class Base64.Decoder {
-    method public byte[] decode(byte[]);
-    method public byte[] decode(String);
-    method public int decode(byte[], byte[]);
-    method public java.nio.ByteBuffer decode(java.nio.ByteBuffer);
-    method public java.io.InputStream wrap(java.io.InputStream);
-  }
-
-  public static class Base64.Encoder {
-    method public byte[] encode(byte[]);
-    method public int encode(byte[], byte[]);
-    method public java.nio.ByteBuffer encode(java.nio.ByteBuffer);
-    method public String encodeToString(byte[]);
-    method public java.util.Base64.Encoder withoutPadding();
-    method public java.io.OutputStream wrap(java.io.OutputStream);
-  }
-
-  public class BitSet implements java.lang.Cloneable java.io.Serializable {
-    ctor public BitSet();
-    ctor public BitSet(int);
-    method public void and(java.util.BitSet);
-    method public void andNot(java.util.BitSet);
-    method public int cardinality();
-    method public void clear(int);
-    method public void clear(int, int);
-    method public void clear();
-    method public Object clone();
-    method public void flip(int);
-    method public void flip(int, int);
-    method public boolean get(int);
-    method public java.util.BitSet get(int, int);
-    method public boolean intersects(java.util.BitSet);
-    method public boolean isEmpty();
-    method public int length();
-    method public int nextClearBit(int);
-    method public int nextSetBit(int);
-    method public void or(java.util.BitSet);
-    method public int previousClearBit(int);
-    method public int previousSetBit(int);
-    method public void set(int);
-    method public void set(int, boolean);
-    method public void set(int, int);
-    method public void set(int, int, boolean);
-    method public int size();
-    method public java.util.stream.IntStream stream();
-    method public byte[] toByteArray();
-    method public long[] toLongArray();
-    method public static java.util.BitSet valueOf(long[]);
-    method public static java.util.BitSet valueOf(java.nio.LongBuffer);
-    method public static java.util.BitSet valueOf(byte[]);
-    method public static java.util.BitSet valueOf(java.nio.ByteBuffer);
-    method public void xor(java.util.BitSet);
-  }
-
-  public abstract class Calendar implements java.lang.Cloneable java.lang.Comparable<java.util.Calendar> java.io.Serializable {
-    ctor protected Calendar();
-    ctor protected Calendar(@NonNull java.util.TimeZone, @NonNull java.util.Locale);
-    method public abstract void add(int, int);
-    method public boolean after(@Nullable Object);
-    method public boolean before(@Nullable Object);
-    method public final void clear();
-    method public final void clear(int);
-    method @NonNull public Object clone();
-    method public int compareTo(@NonNull java.util.Calendar);
-    method protected void complete();
-    method protected abstract void computeFields();
-    method protected abstract void computeTime();
-    method public int get(int);
-    method public int getActualMaximum(int);
-    method public int getActualMinimum(int);
-    method @NonNull public static java.util.Set<java.lang.String> getAvailableCalendarTypes();
-    method @NonNull public static java.util.Locale[] getAvailableLocales();
-    method @NonNull public String getCalendarType();
-    method @Nullable public String getDisplayName(int, int, @NonNull java.util.Locale);
-    method @Nullable public java.util.Map<java.lang.String,java.lang.Integer> getDisplayNames(int, int, @NonNull java.util.Locale);
-    method public int getFirstDayOfWeek();
-    method public abstract int getGreatestMinimum(int);
-    method @NonNull public static java.util.Calendar getInstance();
-    method @NonNull public static java.util.Calendar getInstance(@NonNull java.util.TimeZone);
-    method @NonNull public static java.util.Calendar getInstance(@NonNull java.util.Locale);
-    method @NonNull public static java.util.Calendar getInstance(@NonNull java.util.TimeZone, @NonNull java.util.Locale);
-    method public abstract int getLeastMaximum(int);
-    method public abstract int getMaximum(int);
-    method public int getMinimalDaysInFirstWeek();
-    method public abstract int getMinimum(int);
-    method @NonNull public final java.util.Date getTime();
-    method public long getTimeInMillis();
-    method @NonNull public java.util.TimeZone getTimeZone();
-    method public int getWeekYear();
-    method public int getWeeksInWeekYear();
-    method protected final int internalGet(int);
-    method public boolean isLenient();
-    method public final boolean isSet(int);
-    method public boolean isWeekDateSupported();
-    method public abstract void roll(int, boolean);
-    method public void roll(int, int);
-    method public void set(int, int);
-    method public final void set(int, int, int);
-    method public final void set(int, int, int, int, int);
-    method public final void set(int, int, int, int, int, int);
-    method public void setFirstDayOfWeek(int);
-    method public void setLenient(boolean);
-    method public void setMinimalDaysInFirstWeek(int);
-    method public final void setTime(@NonNull java.util.Date);
-    method public void setTimeInMillis(long);
-    method public void setTimeZone(@NonNull java.util.TimeZone);
-    method public void setWeekDate(int, int, int);
-    method @NonNull public final java.time.Instant toInstant();
-    field public static final int ALL_STYLES = 0; // 0x0
-    field public static final int AM = 0; // 0x0
-    field public static final int AM_PM = 9; // 0x9
-    field public static final int APRIL = 3; // 0x3
-    field public static final int AUGUST = 7; // 0x7
-    field public static final int DATE = 5; // 0x5
-    field public static final int DAY_OF_MONTH = 5; // 0x5
-    field public static final int DAY_OF_WEEK = 7; // 0x7
-    field public static final int DAY_OF_WEEK_IN_MONTH = 8; // 0x8
-    field public static final int DAY_OF_YEAR = 6; // 0x6
-    field public static final int DECEMBER = 11; // 0xb
-    field public static final int DST_OFFSET = 16; // 0x10
-    field public static final int ERA = 0; // 0x0
-    field public static final int FEBRUARY = 1; // 0x1
-    field public static final int FIELD_COUNT = 17; // 0x11
-    field public static final int FRIDAY = 6; // 0x6
-    field public static final int HOUR = 10; // 0xa
-    field public static final int HOUR_OF_DAY = 11; // 0xb
-    field public static final int JANUARY = 0; // 0x0
-    field public static final int JULY = 6; // 0x6
-    field public static final int JUNE = 5; // 0x5
-    field public static final int LONG = 2; // 0x2
-    field public static final int LONG_FORMAT = 2; // 0x2
-    field public static final int LONG_STANDALONE = 32770; // 0x8002
-    field public static final int MARCH = 2; // 0x2
-    field public static final int MAY = 4; // 0x4
-    field public static final int MILLISECOND = 14; // 0xe
-    field public static final int MINUTE = 12; // 0xc
-    field public static final int MONDAY = 2; // 0x2
-    field public static final int MONTH = 2; // 0x2
-    field public static final int NARROW_FORMAT = 4; // 0x4
-    field public static final int NARROW_STANDALONE = 32772; // 0x8004
-    field public static final int NOVEMBER = 10; // 0xa
-    field public static final int OCTOBER = 9; // 0x9
-    field public static final int PM = 1; // 0x1
-    field public static final int SATURDAY = 7; // 0x7
-    field public static final int SECOND = 13; // 0xd
-    field public static final int SEPTEMBER = 8; // 0x8
-    field public static final int SHORT = 1; // 0x1
-    field public static final int SHORT_FORMAT = 1; // 0x1
-    field public static final int SHORT_STANDALONE = 32769; // 0x8001
-    field public static final int SUNDAY = 1; // 0x1
-    field public static final int THURSDAY = 5; // 0x5
-    field public static final int TUESDAY = 3; // 0x3
-    field public static final int UNDECIMBER = 12; // 0xc
-    field public static final int WEDNESDAY = 4; // 0x4
-    field public static final int WEEK_OF_MONTH = 4; // 0x4
-    field public static final int WEEK_OF_YEAR = 3; // 0x3
-    field public static final int YEAR = 1; // 0x1
-    field public static final int ZONE_OFFSET = 15; // 0xf
-    field protected boolean areFieldsSet;
-    field @NonNull protected int[] fields;
-    field @NonNull protected boolean[] isSet;
-    field protected boolean isTimeSet;
-    field protected long time;
-  }
-
-  public static class Calendar.Builder {
-    ctor public Calendar.Builder();
-    method @NonNull public java.util.Calendar build();
-    method @NonNull public java.util.Calendar.Builder set(int, int);
-    method @NonNull public java.util.Calendar.Builder setCalendarType(@NonNull String);
-    method @NonNull public java.util.Calendar.Builder setDate(int, int, int);
-    method @NonNull public java.util.Calendar.Builder setFields(@NonNull int...);
-    method @NonNull public java.util.Calendar.Builder setInstant(long);
-    method @NonNull public java.util.Calendar.Builder setInstant(@NonNull java.util.Date);
-    method @NonNull public java.util.Calendar.Builder setLenient(boolean);
-    method @NonNull public java.util.Calendar.Builder setLocale(@NonNull java.util.Locale);
-    method @NonNull public java.util.Calendar.Builder setTimeOfDay(int, int, int);
-    method @NonNull public java.util.Calendar.Builder setTimeOfDay(int, int, int, int);
-    method @NonNull public java.util.Calendar.Builder setTimeZone(@NonNull java.util.TimeZone);
-    method @NonNull public java.util.Calendar.Builder setWeekDate(int, int, int);
-    method @NonNull public java.util.Calendar.Builder setWeekDefinition(int, int);
-  }
-
-  public interface Collection<E> extends java.lang.Iterable<E> {
-    method public boolean add(E);
-    method public boolean addAll(@NonNull java.util.Collection<? extends E>);
-    method public void clear();
-    method public boolean contains(@Nullable Object);
-    method public boolean containsAll(@NonNull java.util.Collection<?>);
-    method public boolean equals(@Nullable Object);
-    method public int hashCode();
-    method public boolean isEmpty();
-    method @NonNull public java.util.Iterator<E> iterator();
-    method @NonNull public default java.util.stream.Stream<E> parallelStream();
-    method public boolean remove(@Nullable Object);
-    method public boolean removeAll(@NonNull java.util.Collection<?>);
-    method public default boolean removeIf(@NonNull java.util.function.Predicate<? super E>);
-    method public boolean retainAll(@NonNull java.util.Collection<?>);
-    method public int size();
-    method @NonNull public default java.util.Spliterator<E> spliterator();
-    method @NonNull public default java.util.stream.Stream<E> stream();
-    method @NonNull public Object[] toArray();
-    method @NonNull public <T> T[] toArray(@NonNull T[]);
-  }
-
-  public class Collections {
-    method @java.lang.SafeVarargs public static <T> boolean addAll(@NonNull java.util.Collection<? super T>, @NonNull T...);
-    method @NonNull public static <T> java.util.Queue<T> asLifoQueue(@NonNull java.util.Deque<T>);
-    method public static <T> int binarySearch(@NonNull java.util.List<? extends java.lang.Comparable<? super T>>, @NonNull T);
-    method public static <T> int binarySearch(@NonNull java.util.List<? extends T>, T, @Nullable java.util.Comparator<? super T>);
-    method @NonNull public static <E> java.util.Collection<E> checkedCollection(@NonNull java.util.Collection<E>, @NonNull Class<E>);
-    method @NonNull public static <E> java.util.List<E> checkedList(@NonNull java.util.List<E>, @NonNull Class<E>);
-    method @NonNull public static <K, V> java.util.Map<K,V> checkedMap(@NonNull java.util.Map<K,V>, @NonNull Class<K>, @NonNull Class<V>);
-    method @NonNull public static <K, V> java.util.NavigableMap<K,V> checkedNavigableMap(@NonNull java.util.NavigableMap<K,V>, @NonNull Class<K>, @NonNull Class<V>);
-    method @NonNull public static <E> java.util.NavigableSet<E> checkedNavigableSet(@NonNull java.util.NavigableSet<E>, @NonNull Class<E>);
-    method @NonNull public static <E> java.util.Queue<E> checkedQueue(@NonNull java.util.Queue<E>, @NonNull Class<E>);
-    method @NonNull public static <E> java.util.Set<E> checkedSet(@NonNull java.util.Set<E>, @NonNull Class<E>);
-    method @NonNull public static <K, V> java.util.SortedMap<K,V> checkedSortedMap(@NonNull java.util.SortedMap<K,V>, @NonNull Class<K>, @NonNull Class<V>);
-    method @NonNull public static <E> java.util.SortedSet<E> checkedSortedSet(@NonNull java.util.SortedSet<E>, @NonNull Class<E>);
-    method public static <T> void copy(@NonNull java.util.List<? super T>, @NonNull java.util.List<? extends T>);
-    method public static boolean disjoint(@NonNull java.util.Collection<?>, @NonNull java.util.Collection<?>);
-    method @NonNull public static <T> java.util.Enumeration<T> emptyEnumeration();
-    method @NonNull public static <T> java.util.Iterator<T> emptyIterator();
-    method @NonNull public static final <T> java.util.List<T> emptyList();
-    method @NonNull public static <T> java.util.ListIterator<T> emptyListIterator();
-    method @NonNull public static final <K, V> java.util.Map<K,V> emptyMap();
-    method @NonNull public static final <K, V> java.util.NavigableMap<K,V> emptyNavigableMap();
-    method @NonNull public static <E> java.util.NavigableSet<E> emptyNavigableSet();
-    method @NonNull public static final <T> java.util.Set<T> emptySet();
-    method @NonNull public static final <K, V> java.util.SortedMap<K,V> emptySortedMap();
-    method @NonNull public static <E> java.util.SortedSet<E> emptySortedSet();
-    method @NonNull public static <T> java.util.Enumeration<T> enumeration(@NonNull java.util.Collection<T>);
-    method public static <T> void fill(@NonNull java.util.List<? super T>, T);
-    method public static int frequency(@NonNull java.util.Collection<?>, @Nullable Object);
-    method public static int indexOfSubList(@NonNull java.util.List<?>, @NonNull java.util.List<?>);
-    method public static int lastIndexOfSubList(@NonNull java.util.List<?>, @NonNull java.util.List<?>);
-    method @NonNull public static <T> java.util.ArrayList<T> list(@NonNull java.util.Enumeration<T>);
-    method @NonNull public static <T extends java.lang.Object & java.lang.Comparable<? super T>> T max(@NonNull java.util.Collection<? extends T>);
-    method public static <T> T max(@NonNull java.util.Collection<? extends T>, @Nullable java.util.Comparator<? super T>);
-    method @NonNull public static <T extends java.lang.Object & java.lang.Comparable<? super T>> T min(@NonNull java.util.Collection<? extends T>);
-    method public static <T> T min(@NonNull java.util.Collection<? extends T>, @Nullable java.util.Comparator<? super T>);
-    method @NonNull public static <T> java.util.List<T> nCopies(int, T);
-    method @NonNull public static <E> java.util.Set<E> newSetFromMap(@NonNull java.util.Map<E,java.lang.Boolean>);
-    method public static <T> boolean replaceAll(@NonNull java.util.List<T>, T, T);
-    method public static void reverse(@NonNull java.util.List<?>);
-    method @NonNull public static <T> java.util.Comparator<T> reverseOrder();
-    method @NonNull public static <T> java.util.Comparator<T> reverseOrder(@Nullable java.util.Comparator<T>);
-    method public static void rotate(@NonNull java.util.List<?>, int);
-    method public static void shuffle(@NonNull java.util.List<?>);
-    method public static void shuffle(@NonNull java.util.List<?>, @NonNull java.util.Random);
-    method @NonNull public static <T> java.util.Set<T> singleton(T);
-    method @NonNull public static <T> java.util.List<T> singletonList(T);
-    method @NonNull public static <K, V> java.util.Map<K,V> singletonMap(K, V);
-    method public static <T extends java.lang.Comparable<? super T>> void sort(@NonNull java.util.List<T>);
-    method public static <T> void sort(@NonNull java.util.List<T>, @Nullable java.util.Comparator<? super T>);
-    method public static void swap(@NonNull java.util.List<?>, int, int);
-    method @NonNull public static <T> java.util.Collection<T> synchronizedCollection(@NonNull java.util.Collection<T>);
-    method @NonNull public static <T> java.util.List<T> synchronizedList(@NonNull java.util.List<T>);
-    method @NonNull public static <K, V> java.util.Map<K,V> synchronizedMap(@NonNull java.util.Map<K,V>);
-    method @NonNull public static <K, V> java.util.NavigableMap<K,V> synchronizedNavigableMap(@NonNull java.util.NavigableMap<K,V>);
-    method @NonNull public static <T> java.util.NavigableSet<T> synchronizedNavigableSet(@NonNull java.util.NavigableSet<T>);
-    method @NonNull public static <T> java.util.Set<T> synchronizedSet(@NonNull java.util.Set<T>);
-    method @NonNull public static <K, V> java.util.SortedMap<K,V> synchronizedSortedMap(@NonNull java.util.SortedMap<K,V>);
-    method @NonNull public static <T> java.util.SortedSet<T> synchronizedSortedSet(@NonNull java.util.SortedSet<T>);
-    method @NonNull public static <T> java.util.Collection<T> unmodifiableCollection(@NonNull java.util.Collection<? extends T>);
-    method @NonNull public static <T> java.util.List<T> unmodifiableList(@NonNull java.util.List<? extends T>);
-    method @NonNull public static <K, V> java.util.Map<K,V> unmodifiableMap(@NonNull java.util.Map<? extends K,? extends V>);
-    method @NonNull public static <K, V> java.util.NavigableMap<K,V> unmodifiableNavigableMap(@NonNull java.util.NavigableMap<K,? extends V>);
-    method @NonNull public static <T> java.util.NavigableSet<T> unmodifiableNavigableSet(@NonNull java.util.NavigableSet<T>);
-    method @NonNull public static <T> java.util.Set<T> unmodifiableSet(@NonNull java.util.Set<? extends T>);
-    method @NonNull public static <K, V> java.util.SortedMap<K,V> unmodifiableSortedMap(@NonNull java.util.SortedMap<K,? extends V>);
-    method @NonNull public static <T> java.util.SortedSet<T> unmodifiableSortedSet(@NonNull java.util.SortedSet<T>);
-    field @NonNull public static final java.util.List EMPTY_LIST;
-    field @NonNull public static final java.util.Map EMPTY_MAP;
-    field @NonNull public static final java.util.Set EMPTY_SET;
-  }
-
-  @java.lang.FunctionalInterface public interface Comparator<T> {
-    method public int compare(T, T);
-    method public static <T, U> java.util.Comparator<T> comparing(java.util.function.Function<? super T,? extends U>, java.util.Comparator<? super U>);
-    method public static <T, U extends java.lang.Comparable<? super U>> java.util.Comparator<T> comparing(java.util.function.Function<? super T,? extends U>);
-    method public static <T> java.util.Comparator<T> comparingDouble(java.util.function.ToDoubleFunction<? super T>);
-    method public static <T> java.util.Comparator<T> comparingInt(java.util.function.ToIntFunction<? super T>);
-    method public static <T> java.util.Comparator<T> comparingLong(java.util.function.ToLongFunction<? super T>);
-    method public boolean equals(Object);
-    method public static <T extends java.lang.Comparable<? super T>> java.util.Comparator<T> naturalOrder();
-    method public static <T> java.util.Comparator<T> nullsFirst(java.util.Comparator<? super T>);
-    method public static <T> java.util.Comparator<T> nullsLast(java.util.Comparator<? super T>);
-    method public static <T extends java.lang.Comparable<? super T>> java.util.Comparator<T> reverseOrder();
-    method public default java.util.Comparator<T> reversed();
-    method public default java.util.Comparator<T> thenComparing(java.util.Comparator<? super T>);
-    method public default <U> java.util.Comparator<T> thenComparing(java.util.function.Function<? super T,? extends U>, java.util.Comparator<? super U>);
-    method public default <U extends java.lang.Comparable<? super U>> java.util.Comparator<T> thenComparing(java.util.function.Function<? super T,? extends U>);
-    method public default java.util.Comparator<T> thenComparingDouble(java.util.function.ToDoubleFunction<? super T>);
-    method public default java.util.Comparator<T> thenComparingInt(java.util.function.ToIntFunction<? super T>);
-    method public default java.util.Comparator<T> thenComparingLong(java.util.function.ToLongFunction<? super T>);
-  }
-
-  public class ConcurrentModificationException extends java.lang.RuntimeException {
-    ctor public ConcurrentModificationException();
-    ctor public ConcurrentModificationException(String);
-    ctor public ConcurrentModificationException(Throwable);
-    ctor public ConcurrentModificationException(String, Throwable);
-  }
-
-  public final class Currency implements java.io.Serializable {
-    method public static java.util.Set<java.util.Currency> getAvailableCurrencies();
-    method public String getCurrencyCode();
-    method public int getDefaultFractionDigits();
-    method public String getDisplayName();
-    method public String getDisplayName(java.util.Locale);
-    method public static java.util.Currency getInstance(String);
-    method public static java.util.Currency getInstance(java.util.Locale);
-    method public int getNumericCode();
-    method public String getSymbol();
-    method public String getSymbol(java.util.Locale);
-  }
-
-  public class Date implements java.lang.Cloneable java.lang.Comparable<java.util.Date> java.io.Serializable {
-    ctor public Date();
-    ctor public Date(long);
-    ctor @Deprecated public Date(int, int, int);
-    ctor @Deprecated public Date(int, int, int, int, int);
-    ctor @Deprecated public Date(int, int, int, int, int, int);
-    ctor @Deprecated public Date(String);
-    method @Deprecated public static long UTC(int, int, int, int, int, int);
-    method public boolean after(java.util.Date);
-    method public boolean before(java.util.Date);
-    method public Object clone();
-    method public int compareTo(java.util.Date);
-    method public static java.util.Date from(java.time.Instant);
-    method @Deprecated public int getDate();
-    method @Deprecated public int getDay();
-    method @Deprecated public int getHours();
-    method @Deprecated public int getMinutes();
-    method @Deprecated public int getMonth();
-    method @Deprecated public int getSeconds();
-    method public long getTime();
-    method @Deprecated public int getTimezoneOffset();
-    method @Deprecated public int getYear();
-    method @Deprecated public static long parse(String);
-    method @Deprecated public void setDate(int);
-    method @Deprecated public void setHours(int);
-    method @Deprecated public void setMinutes(int);
-    method @Deprecated public void setMonth(int);
-    method @Deprecated public void setSeconds(int);
-    method public void setTime(long);
-    method @Deprecated public void setYear(int);
-    method @Deprecated public String toGMTString();
-    method public java.time.Instant toInstant();
-    method @Deprecated public String toLocaleString();
-  }
-
-  public interface Deque<E> extends java.util.Queue<E> {
-    method public void addFirst(E);
-    method public void addLast(E);
-    method @NonNull public java.util.Iterator<E> descendingIterator();
-    method public E getFirst();
-    method public E getLast();
-    method public boolean offerFirst(E);
-    method public boolean offerLast(E);
-    method @Nullable public E peekFirst();
-    method @Nullable public E peekLast();
-    method @Nullable public E pollFirst();
-    method @Nullable public E pollLast();
-    method public E pop();
-    method public void push(E);
-    method public E removeFirst();
-    method public boolean removeFirstOccurrence(@Nullable Object);
-    method public E removeLast();
-    method public boolean removeLastOccurrence(@Nullable Object);
-  }
-
-  public abstract class Dictionary<K, V> {
-    ctor public Dictionary();
-    method public abstract java.util.Enumeration<V> elements();
-    method public abstract V get(Object);
-    method public abstract boolean isEmpty();
-    method public abstract java.util.Enumeration<K> keys();
-    method public abstract V put(K, V);
-    method public abstract V remove(Object);
-    method public abstract int size();
-  }
-
-  public class DoubleSummaryStatistics implements java.util.function.DoubleConsumer {
-    ctor public DoubleSummaryStatistics();
-    method public void accept(double);
-    method public void combine(java.util.DoubleSummaryStatistics);
-    method public final double getAverage();
-    method public final long getCount();
-    method public final double getMax();
-    method public final double getMin();
-    method public final double getSum();
-  }
-
-  public class DuplicateFormatFlagsException extends java.util.IllegalFormatException {
-    ctor public DuplicateFormatFlagsException(String);
-    method public String getFlags();
-  }
-
-  public class EmptyStackException extends java.lang.RuntimeException {
-    ctor public EmptyStackException();
-  }
-
-  public class EnumMap<K extends java.lang.Enum<K>, V> extends java.util.AbstractMap<K,V> implements java.lang.Cloneable java.io.Serializable {
-    ctor public EnumMap(Class<K>);
-    ctor public EnumMap(java.util.EnumMap<K,? extends V>);
-    ctor public EnumMap(java.util.Map<K,? extends V>);
-    method public java.util.EnumMap<K,V> clone();
-    method public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
-  }
-
-  public abstract class EnumSet<E extends java.lang.Enum<E>> extends java.util.AbstractSet<E> implements java.lang.Cloneable java.io.Serializable {
-    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> allOf(Class<E>);
-    method public java.util.EnumSet<E> clone();
-    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> complementOf(java.util.EnumSet<E>);
-    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> copyOf(java.util.EnumSet<E>);
-    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> copyOf(java.util.Collection<E>);
-    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> noneOf(Class<E>);
-    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E);
-    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E, E);
-    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E, E, E);
-    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E, E, E, E);
-    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E, E, E, E, E);
-    method @java.lang.SafeVarargs public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> of(E, E...);
-    method public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> range(E, E);
-  }
-
-  public interface Enumeration<E> {
-    method public boolean hasMoreElements();
-    method public E nextElement();
-  }
-
-  public interface EventListener {
-  }
-
-  public abstract class EventListenerProxy<T extends java.util.EventListener> implements java.util.EventListener {
-    ctor public EventListenerProxy(T);
-    method public T getListener();
-  }
-
-  public class EventObject implements java.io.Serializable {
-    ctor public EventObject(Object);
-    method public Object getSource();
-    field protected transient Object source;
-  }
-
-  public class FormatFlagsConversionMismatchException extends java.util.IllegalFormatException {
-    ctor public FormatFlagsConversionMismatchException(String, char);
-    method public char getConversion();
-    method public String getFlags();
-  }
-
-  public interface Formattable {
-    method public void formatTo(java.util.Formatter, int, int, int);
-  }
-
-  public class FormattableFlags {
-    field public static final int ALTERNATE = 4; // 0x4
-    field public static final int LEFT_JUSTIFY = 1; // 0x1
-    field public static final int UPPERCASE = 2; // 0x2
-  }
-
-  public final class Formatter implements java.io.Closeable java.io.Flushable {
-    ctor public Formatter();
-    ctor public Formatter(Appendable);
-    ctor public Formatter(java.util.Locale);
-    ctor public Formatter(Appendable, java.util.Locale);
-    ctor public Formatter(String) throws java.io.FileNotFoundException;
-    ctor public Formatter(String, String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
-    ctor public Formatter(String, String, java.util.Locale) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
-    ctor public Formatter(java.io.File) throws java.io.FileNotFoundException;
-    ctor public Formatter(java.io.File, String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
-    ctor public Formatter(java.io.File, String, java.util.Locale) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException;
-    ctor public Formatter(java.io.PrintStream);
-    ctor public Formatter(java.io.OutputStream);
-    ctor public Formatter(java.io.OutputStream, String) throws java.io.UnsupportedEncodingException;
-    ctor public Formatter(java.io.OutputStream, String, java.util.Locale) throws java.io.UnsupportedEncodingException;
-    method public void close();
-    method public void flush();
-    method public java.util.Formatter format(String, java.lang.Object...);
-    method public java.util.Formatter format(java.util.Locale, String, java.lang.Object...);
-    method public java.io.IOException ioException();
-    method public java.util.Locale locale();
-    method public Appendable out();
-  }
-
-  public enum Formatter.BigDecimalLayoutForm {
-    enum_constant public static final java.util.Formatter.BigDecimalLayoutForm DECIMAL_FLOAT;
-    enum_constant public static final java.util.Formatter.BigDecimalLayoutForm SCIENTIFIC;
-  }
-
-  public class FormatterClosedException extends java.lang.IllegalStateException {
-    ctor public FormatterClosedException();
-  }
-
-  public class GregorianCalendar extends java.util.Calendar {
-    ctor public GregorianCalendar();
-    ctor public GregorianCalendar(java.util.TimeZone);
-    ctor public GregorianCalendar(java.util.Locale);
-    ctor public GregorianCalendar(java.util.TimeZone, java.util.Locale);
-    ctor public GregorianCalendar(int, int, int);
-    ctor public GregorianCalendar(int, int, int, int, int);
-    ctor public GregorianCalendar(int, int, int, int, int, int);
-    method public void add(int, int);
-    method protected void computeFields();
-    method protected void computeTime();
-    method public static java.util.GregorianCalendar from(java.time.ZonedDateTime);
-    method public int getGreatestMinimum(int);
-    method public final java.util.Date getGregorianChange();
-    method public int getLeastMaximum(int);
-    method public int getMaximum(int);
-    method public int getMinimum(int);
-    method public boolean isLeapYear(int);
-    method public final boolean isWeekDateSupported();
-    method public void roll(int, boolean);
-    method public void setGregorianChange(java.util.Date);
-    method public java.time.ZonedDateTime toZonedDateTime();
-    field public static final int AD = 1; // 0x1
-    field public static final int BC = 0; // 0x0
-  }
-
-  public class HashMap<K, V> extends java.util.AbstractMap<K,V> implements java.lang.Cloneable java.util.Map<K,V> java.io.Serializable {
-    ctor public HashMap(int, float);
-    ctor public HashMap(int);
-    ctor public HashMap();
-    ctor public HashMap(@NonNull java.util.Map<? extends K,? extends V>);
-    method @NonNull public Object clone();
-    method @NonNull public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
-  }
-
-  public class HashSet<E> extends java.util.AbstractSet<E> implements java.lang.Cloneable java.io.Serializable java.util.Set<E> {
-    ctor public HashSet();
-    ctor public HashSet(@NonNull java.util.Collection<? extends E>);
-    ctor public HashSet(int, float);
-    ctor public HashSet(int);
-    method @NonNull public Object clone();
-    method @NonNull public java.util.Iterator<E> iterator();
-    method public int size();
-  }
-
-  public class Hashtable<K, V> extends java.util.Dictionary<K,V> implements java.lang.Cloneable java.util.Map<K,V> java.io.Serializable {
-    ctor public Hashtable(int, float);
-    ctor public Hashtable(int);
-    ctor public Hashtable();
-    ctor public Hashtable(java.util.Map<? extends K,? extends V>);
-    method public void clear();
-    method public Object clone();
-    method public boolean contains(Object);
-    method public boolean containsKey(Object);
-    method public boolean containsValue(Object);
-    method public java.util.Enumeration<V> elements();
-    method public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
-    method public V get(Object);
-    method public boolean isEmpty();
-    method public java.util.Set<K> keySet();
-    method public java.util.Enumeration<K> keys();
-    method public V put(K, V);
-    method public void putAll(java.util.Map<? extends K,? extends V>);
-    method protected void rehash();
-    method public V remove(Object);
-    method public int size();
-    method public java.util.Collection<V> values();
-  }
-
-  public class IdentityHashMap<K, V> extends java.util.AbstractMap<K,V> implements java.lang.Cloneable java.util.Map<K,V> java.io.Serializable {
-    ctor public IdentityHashMap();
-    ctor public IdentityHashMap(int);
-    ctor public IdentityHashMap(java.util.Map<? extends K,? extends V>);
-    method public Object clone();
-    method public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
-  }
-
-  public class IllegalFormatCodePointException extends java.util.IllegalFormatException {
-    ctor public IllegalFormatCodePointException(int);
-    method public int getCodePoint();
-  }
-
-  public class IllegalFormatConversionException extends java.util.IllegalFormatException {
-    ctor public IllegalFormatConversionException(char, Class<?>);
-    method public Class<?> getArgumentClass();
-    method public char getConversion();
-  }
-
-  public class IllegalFormatException extends java.lang.IllegalArgumentException {
-  }
-
-  public class IllegalFormatFlagsException extends java.util.IllegalFormatException {
-    ctor public IllegalFormatFlagsException(String);
-    method public String getFlags();
-  }
-
-  public class IllegalFormatPrecisionException extends java.util.IllegalFormatException {
-    ctor public IllegalFormatPrecisionException(int);
-    method public int getPrecision();
-  }
-
-  public class IllegalFormatWidthException extends java.util.IllegalFormatException {
-    ctor public IllegalFormatWidthException(int);
-    method public int getWidth();
-  }
-
-  public class IllformedLocaleException extends java.lang.RuntimeException {
-    ctor public IllformedLocaleException();
-    ctor public IllformedLocaleException(String);
-    ctor public IllformedLocaleException(String, int);
-    method public int getErrorIndex();
-  }
-
-  public class InputMismatchException extends java.util.NoSuchElementException {
-    ctor public InputMismatchException();
-    ctor public InputMismatchException(String);
-  }
-
-  public class IntSummaryStatistics implements java.util.function.IntConsumer {
-    ctor public IntSummaryStatistics();
-    method public void accept(int);
-    method public void combine(java.util.IntSummaryStatistics);
-    method public final double getAverage();
-    method public final long getCount();
-    method public final int getMax();
-    method public final int getMin();
-    method public final long getSum();
-  }
-
-  public class InvalidPropertiesFormatException extends java.io.IOException {
-    ctor public InvalidPropertiesFormatException(Throwable);
-    ctor public InvalidPropertiesFormatException(String);
-  }
-
-  public interface Iterator<E> {
-    method public default void forEachRemaining(@NonNull java.util.function.Consumer<? super E>);
-    method public boolean hasNext();
-    method public E next();
-    method public default void remove();
-  }
-
-  public class LinkedHashMap<K, V> extends java.util.HashMap<K,V> implements java.util.Map<K,V> {
-    ctor public LinkedHashMap(int, float);
-    ctor public LinkedHashMap(int);
-    ctor public LinkedHashMap();
-    ctor public LinkedHashMap(java.util.Map<? extends K,? extends V>);
-    ctor public LinkedHashMap(int, float, boolean);
-    method protected boolean removeEldestEntry(java.util.Map.Entry<K,V>);
-  }
-
-  public class LinkedHashSet<E> extends java.util.HashSet<E> implements java.lang.Cloneable java.io.Serializable java.util.Set<E> {
-    ctor public LinkedHashSet(int, float);
-    ctor public LinkedHashSet(int);
-    ctor public LinkedHashSet();
-    ctor public LinkedHashSet(java.util.Collection<? extends E>);
-  }
-
-  public class LinkedList<E> extends java.util.AbstractSequentialList<E> implements java.lang.Cloneable java.util.Deque<E> java.util.List<E> java.io.Serializable {
-    ctor public LinkedList();
-    ctor public LinkedList(@NonNull java.util.Collection<? extends E>);
-    method public void addFirst(E);
-    method public void addLast(E);
-    method @NonNull public Object clone();
-    method @NonNull public java.util.Iterator<E> descendingIterator();
-    method public E element();
-    method public E getFirst();
-    method public E getLast();
-    method public boolean offer(E);
-    method public boolean offerFirst(E);
-    method public boolean offerLast(E);
-    method @Nullable public E peek();
-    method @Nullable public E peekFirst();
-    method @Nullable public E peekLast();
-    method @Nullable public E poll();
-    method @Nullable public E pollFirst();
-    method @Nullable public E pollLast();
-    method public E pop();
-    method public void push(E);
-    method public E remove();
-    method public E removeFirst();
-    method public boolean removeFirstOccurrence(@Nullable Object);
-    method public E removeLast();
-    method public boolean removeLastOccurrence(@Nullable Object);
-    method public int size();
-  }
-
-  public interface List<E> extends java.util.Collection<E> {
-    method public void add(int, E);
-    method public boolean addAll(int, @NonNull java.util.Collection<? extends E>);
-    method public E get(int);
-    method public int indexOf(@Nullable Object);
-    method public int lastIndexOf(@Nullable Object);
-    method @NonNull public java.util.ListIterator<E> listIterator();
-    method @NonNull public java.util.ListIterator<E> listIterator(int);
-    method @NonNull public static <E> java.util.List<E> of();
-    method @NonNull public static <E> java.util.List<E> of(@NonNull E);
-    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.List<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull @java.lang.SafeVarargs public static <E> java.util.List<E> of(@NonNull E...);
-    method public E remove(int);
-    method public default void replaceAll(@NonNull java.util.function.UnaryOperator<E>);
-    method public E set(int, E);
-    method public default void sort(@Nullable java.util.Comparator<? super E>);
-    method @NonNull public java.util.List<E> subList(int, int);
-  }
-
-  public interface ListIterator<E> extends java.util.Iterator<E> {
-    method public void add(E);
-    method public boolean hasPrevious();
-    method public int nextIndex();
-    method public E previous();
-    method public int previousIndex();
-    method public void remove();
-    method public void set(E);
-  }
-
-  public abstract class ListResourceBundle extends java.util.ResourceBundle {
-    ctor public ListResourceBundle();
-    method protected abstract Object[][] getContents();
-    method public java.util.Enumeration<java.lang.String> getKeys();
-    method public final Object handleGetObject(String);
-  }
-
-  public final class Locale implements java.lang.Cloneable java.io.Serializable {
-    ctor public Locale(@NonNull String, @NonNull String, @NonNull String);
-    ctor public Locale(@NonNull String, @NonNull String);
-    ctor public Locale(@NonNull String);
-    method @NonNull public Object clone();
-    method @NonNull public static java.util.List<java.util.Locale> filter(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Collection<java.util.Locale>, @NonNull java.util.Locale.FilteringMode);
-    method @NonNull public static java.util.List<java.util.Locale> filter(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Collection<java.util.Locale>);
-    method @NonNull public static java.util.List<java.lang.String> filterTags(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Collection<java.lang.String>, @NonNull java.util.Locale.FilteringMode);
-    method @NonNull public static java.util.List<java.lang.String> filterTags(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Collection<java.lang.String>);
-    method @NonNull public static java.util.Locale forLanguageTag(@NonNull String);
-    method @NonNull public static java.util.Locale[] getAvailableLocales();
-    method @NonNull public String getCountry();
-    method @NonNull public static java.util.Locale getDefault();
-    method @NonNull public static java.util.Locale getDefault(@NonNull java.util.Locale.Category);
-    method @NonNull public String getDisplayCountry();
-    method @NonNull public String getDisplayCountry(@NonNull java.util.Locale);
-    method @NonNull public String getDisplayLanguage();
-    method @NonNull public String getDisplayLanguage(@NonNull java.util.Locale);
-    method @NonNull public String getDisplayName();
-    method @NonNull public String getDisplayName(@NonNull java.util.Locale);
-    method @NonNull public String getDisplayScript();
-    method @NonNull public String getDisplayScript(@NonNull java.util.Locale);
-    method @NonNull public String getDisplayVariant();
-    method @NonNull public String getDisplayVariant(@NonNull java.util.Locale);
-    method @Nullable public String getExtension(char);
-    method @NonNull public java.util.Set<java.lang.Character> getExtensionKeys();
-    method @NonNull public String getISO3Country() throws java.util.MissingResourceException;
-    method @NonNull public String getISO3Language() throws java.util.MissingResourceException;
-    method @NonNull public static String[] getISOCountries();
-    method @NonNull public static String[] getISOLanguages();
-    method @NonNull public String getLanguage();
-    method @NonNull public String getScript();
-    method @NonNull public java.util.Set<java.lang.String> getUnicodeLocaleAttributes();
-    method @NonNull public java.util.Set<java.lang.String> getUnicodeLocaleKeys();
-    method @Nullable public String getUnicodeLocaleType(@NonNull String);
-    method @NonNull public String getVariant();
-    method public boolean hasExtensions();
-    method @Nullable public static java.util.Locale lookup(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Collection<java.util.Locale>);
-    method @Nullable public static String lookupTag(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Collection<java.lang.String>);
-    method public static void setDefault(@NonNull java.util.Locale);
-    method public static void setDefault(@NonNull java.util.Locale.Category, @NonNull java.util.Locale);
-    method @NonNull public java.util.Locale stripExtensions();
-    method @NonNull public String toLanguageTag();
-    field @NonNull public static final java.util.Locale CANADA;
-    field @NonNull public static final java.util.Locale CANADA_FRENCH;
-    field @NonNull public static final java.util.Locale CHINA;
-    field @NonNull public static final java.util.Locale CHINESE;
-    field @NonNull public static final java.util.Locale ENGLISH;
-    field @NonNull public static final java.util.Locale FRANCE;
-    field @NonNull public static final java.util.Locale FRENCH;
-    field @NonNull public static final java.util.Locale GERMAN;
-    field @NonNull public static final java.util.Locale GERMANY;
-    field @NonNull public static final java.util.Locale ITALIAN;
-    field @NonNull public static final java.util.Locale ITALY;
-    field @NonNull public static final java.util.Locale JAPAN;
-    field @NonNull public static final java.util.Locale JAPANESE;
-    field @NonNull public static final java.util.Locale KOREA;
-    field @NonNull public static final java.util.Locale KOREAN;
-    field @NonNull public static final java.util.Locale PRC;
-    field public static final char PRIVATE_USE_EXTENSION = 120; // 0x0078 'x'
-    field @NonNull public static final java.util.Locale ROOT;
-    field @NonNull public static final java.util.Locale SIMPLIFIED_CHINESE;
-    field @NonNull public static final java.util.Locale TAIWAN;
-    field @NonNull public static final java.util.Locale TRADITIONAL_CHINESE;
-    field @NonNull public static final java.util.Locale UK;
-    field public static final char UNICODE_LOCALE_EXTENSION = 117; // 0x0075 'u'
-    field @NonNull public static final java.util.Locale US;
-  }
-
-  public static final class Locale.Builder {
-    ctor public Locale.Builder();
-    method @NonNull public java.util.Locale.Builder addUnicodeLocaleAttribute(@NonNull String);
-    method @NonNull public java.util.Locale build();
-    method @NonNull public java.util.Locale.Builder clear();
-    method @NonNull public java.util.Locale.Builder clearExtensions();
-    method @NonNull public java.util.Locale.Builder removeUnicodeLocaleAttribute(@NonNull String);
-    method @NonNull public java.util.Locale.Builder setExtension(char, @Nullable String);
-    method @NonNull public java.util.Locale.Builder setLanguage(@Nullable String);
-    method @NonNull public java.util.Locale.Builder setLanguageTag(@NonNull String);
-    method @NonNull public java.util.Locale.Builder setLocale(@NonNull java.util.Locale);
-    method @NonNull public java.util.Locale.Builder setRegion(@Nullable String);
-    method @NonNull public java.util.Locale.Builder setScript(@Nullable String);
-    method @NonNull public java.util.Locale.Builder setUnicodeLocaleKeyword(@NonNull String, @Nullable String);
-    method @NonNull public java.util.Locale.Builder setVariant(@Nullable String);
-  }
-
-  public enum Locale.Category {
-    enum_constant public static final java.util.Locale.Category DISPLAY;
-    enum_constant public static final java.util.Locale.Category FORMAT;
-  }
-
-  public enum Locale.FilteringMode {
-    enum_constant public static final java.util.Locale.FilteringMode AUTOSELECT_FILTERING;
-    enum_constant public static final java.util.Locale.FilteringMode EXTENDED_FILTERING;
-    enum_constant public static final java.util.Locale.FilteringMode IGNORE_EXTENDED_RANGES;
-    enum_constant public static final java.util.Locale.FilteringMode MAP_EXTENDED_RANGES;
-    enum_constant public static final java.util.Locale.FilteringMode REJECT_EXTENDED_RANGES;
-  }
-
-  public static final class Locale.LanguageRange {
-    ctor public Locale.LanguageRange(@NonNull String);
-    ctor public Locale.LanguageRange(@NonNull String, double);
-    method @NonNull public String getRange();
-    method public double getWeight();
-    method @NonNull public static java.util.List<java.util.Locale.LanguageRange> mapEquivalents(@NonNull java.util.List<java.util.Locale.LanguageRange>, @NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>);
-    method @NonNull public static java.util.List<java.util.Locale.LanguageRange> parse(@NonNull String);
-    method @NonNull public static java.util.List<java.util.Locale.LanguageRange> parse(@NonNull String, @NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>);
-    field public static final double MAX_WEIGHT = 1.0;
-    field public static final double MIN_WEIGHT = 0.0;
-  }
-
-  public class LongSummaryStatistics implements java.util.function.IntConsumer java.util.function.LongConsumer {
-    ctor public LongSummaryStatistics();
-    method public void accept(int);
-    method public void accept(long);
-    method public void combine(java.util.LongSummaryStatistics);
-    method public final double getAverage();
-    method public final long getCount();
-    method public final long getMax();
-    method public final long getMin();
-    method public final long getSum();
-  }
-
-  public interface Map<K, V> {
-    method public void clear();
-    method @Nullable public default V compute(K, @NonNull java.util.function.BiFunction<? super K,? super V,? extends V>);
-    method @Nullable public default V computeIfAbsent(K, @NonNull java.util.function.Function<? super K,? extends V>);
-    method @Nullable public default V computeIfPresent(K, @NonNull java.util.function.BiFunction<? super K,? super V,? extends V>);
-    method public boolean containsKey(@Nullable Object);
-    method public boolean containsValue(@Nullable Object);
-    method @NonNull public static <K, V> java.util.Map.Entry<K,V> entry(@NonNull K, @NonNull V);
-    method @NonNull public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
-    method public boolean equals(@Nullable Object);
-    method public default void forEach(@NonNull java.util.function.BiConsumer<? super K,? super V>);
-    method @Nullable public V get(@Nullable Object);
-    method @Nullable public default V getOrDefault(@Nullable Object, @Nullable V);
-    method public int hashCode();
-    method public boolean isEmpty();
-    method @NonNull public java.util.Set<K> keySet();
-    method @Nullable public default V merge(K, @NonNull V, @NonNull java.util.function.BiFunction<? super V,? super V,? extends V>);
-    method @NonNull public static <K, V> java.util.Map<K,V> of();
-    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V);
-    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V);
-    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V);
-    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V);
-    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V);
-    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V);
-    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V);
-    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V);
-    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V);
-    method @NonNull public static <K, V> java.util.Map<K,V> of(@NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V, @NonNull K, @NonNull V);
-    method @NonNull @java.lang.SafeVarargs public static <K, V> java.util.Map<K,V> ofEntries(@NonNull java.util.Map.Entry<? extends K,? extends V>...);
-    method @Nullable public V put(K, V);
-    method public void putAll(@NonNull java.util.Map<? extends K,? extends V>);
-    method @Nullable public default V putIfAbsent(K, V);
-    method @Nullable public V remove(@Nullable Object);
-    method public default boolean remove(@Nullable Object, @Nullable Object);
-    method public default boolean replace(K, @Nullable V, V);
-    method @Nullable public default V replace(K, V);
-    method public default void replaceAll(@NonNull java.util.function.BiFunction<? super K,? super V,? extends V>);
-    method public int size();
-    method @NonNull public java.util.Collection<V> values();
-  }
-
-  public static interface Map.Entry<K, V> {
-    method @NonNull public static <K extends java.lang.Comparable<? super K>, V> java.util.Comparator<java.util.Map.Entry<K,V>> comparingByKey();
-    method @NonNull public static <K, V> java.util.Comparator<java.util.Map.Entry<K,V>> comparingByKey(@NonNull java.util.Comparator<? super K>);
-    method @NonNull public static <K, V extends java.lang.Comparable<? super V>> java.util.Comparator<java.util.Map.Entry<K,V>> comparingByValue();
-    method @NonNull public static <K, V> java.util.Comparator<java.util.Map.Entry<K,V>> comparingByValue(@NonNull java.util.Comparator<? super V>);
-    method public boolean equals(@Nullable Object);
-    method public K getKey();
-    method public V getValue();
-    method public int hashCode();
-    method public V setValue(V);
-  }
-
-  public class MissingFormatArgumentException extends java.util.IllegalFormatException {
-    ctor public MissingFormatArgumentException(String);
-    method public String getFormatSpecifier();
-  }
-
-  public class MissingFormatWidthException extends java.util.IllegalFormatException {
-    ctor public MissingFormatWidthException(String);
-    method public String getFormatSpecifier();
-  }
-
-  public class MissingResourceException extends java.lang.RuntimeException {
-    ctor public MissingResourceException(String, String, String);
-    method public String getClassName();
-    method public String getKey();
-  }
-
-  public interface NavigableMap<K, V> extends java.util.SortedMap<K,V> {
-    method @Nullable public java.util.Map.Entry<K,V> ceilingEntry(K);
-    method @Nullable public K ceilingKey(K);
-    method @NonNull public java.util.NavigableSet<K> descendingKeySet();
-    method @NonNull public java.util.NavigableMap<K,V> descendingMap();
-    method @Nullable public java.util.Map.Entry<K,V> firstEntry();
-    method @Nullable public java.util.Map.Entry<K,V> floorEntry(K);
-    method @Nullable public K floorKey(K);
-    method @NonNull public java.util.NavigableMap<K,V> headMap(K, boolean);
-    method @Nullable public java.util.Map.Entry<K,V> higherEntry(K);
-    method @Nullable public K higherKey(K);
-    method @Nullable public java.util.Map.Entry<K,V> lastEntry();
-    method @Nullable public java.util.Map.Entry<K,V> lowerEntry(K);
-    method @Nullable public K lowerKey(K);
-    method @NonNull public java.util.NavigableSet<K> navigableKeySet();
-    method @Nullable public java.util.Map.Entry<K,V> pollFirstEntry();
-    method @Nullable public java.util.Map.Entry<K,V> pollLastEntry();
-    method @NonNull public java.util.NavigableMap<K,V> subMap(K, boolean, K, boolean);
-    method @NonNull public java.util.NavigableMap<K,V> tailMap(K, boolean);
-  }
-
-  public interface NavigableSet<E> extends java.util.SortedSet<E> {
-    method public E ceiling(E);
-    method public java.util.Iterator<E> descendingIterator();
-    method public java.util.NavigableSet<E> descendingSet();
-    method public E floor(E);
-    method public java.util.NavigableSet<E> headSet(E, boolean);
-    method public E higher(E);
-    method public E lower(E);
-    method public E pollFirst();
-    method public E pollLast();
-    method public java.util.NavigableSet<E> subSet(E, boolean, E, boolean);
-    method public java.util.NavigableSet<E> tailSet(E, boolean);
-  }
-
-  public class NoSuchElementException extends java.lang.RuntimeException {
-    ctor public NoSuchElementException();
-    ctor public NoSuchElementException(String);
-  }
-
-  public final class Objects {
-    method public static int checkFromIndexSize(int, int, int);
-    method public static int checkFromToIndex(int, int, int);
-    method public static int checkIndex(int, int);
-    method public static <T> int compare(T, T, @NonNull java.util.Comparator<? super T>);
-    method public static boolean deepEquals(@Nullable Object, @Nullable Object);
-    method public static boolean equals(@Nullable Object, @Nullable Object);
-    method public static int hash(@Nullable java.lang.Object...);
-    method public static int hashCode(@Nullable Object);
-    method public static boolean isNull(@Nullable Object);
-    method public static boolean nonNull(@Nullable Object);
-    method @NonNull public static <T> T requireNonNull(@Nullable T);
-    method @NonNull public static <T> T requireNonNull(@Nullable T, @NonNull String);
-    method @NonNull public static <T> T requireNonNull(@Nullable T, @NonNull java.util.function.Supplier<java.lang.String>);
-    method @NonNull public static <T> T requireNonNullElse(@Nullable T, @NonNull T);
-    method @NonNull public static <T> T requireNonNullElseGet(@Nullable T, @NonNull java.util.function.Supplier<? extends T>);
-    method @NonNull public static String toString(@Nullable Object);
-    method @NonNull public static String toString(@Nullable Object, @NonNull String);
-  }
-
-  public class Observable {
-    ctor public Observable();
-    method public void addObserver(java.util.Observer);
-    method protected void clearChanged();
-    method public int countObservers();
-    method public void deleteObserver(java.util.Observer);
-    method public void deleteObservers();
-    method public boolean hasChanged();
-    method public void notifyObservers();
-    method public void notifyObservers(Object);
-    method protected void setChanged();
-  }
-
-  public interface Observer {
-    method public void update(java.util.Observable, Object);
-  }
-
-  public final class Optional<T> {
-    method public static <T> java.util.Optional<T> empty();
-    method public java.util.Optional<T> filter(java.util.function.Predicate<? super T>);
-    method public <U> java.util.Optional<U> flatMap(java.util.function.Function<? super T,java.util.Optional<U>>);
-    method public T get();
-    method public void ifPresent(java.util.function.Consumer<? super T>);
-    method public boolean isPresent();
-    method public <U> java.util.Optional<U> map(java.util.function.Function<? super T,? extends U>);
-    method public static <T> java.util.Optional<T> of(T);
-    method public static <T> java.util.Optional<T> ofNullable(T);
-    method public T orElse(T);
-    method public T orElseGet(java.util.function.Supplier<? extends T>);
-    method public <X extends java.lang.Throwable> T orElseThrow(java.util.function.Supplier<? extends X>) throws X;
-  }
-
-  public final class OptionalDouble {
-    method public static java.util.OptionalDouble empty();
-    method public double getAsDouble();
-    method public void ifPresent(java.util.function.DoubleConsumer);
-    method public boolean isPresent();
-    method public static java.util.OptionalDouble of(double);
-    method public double orElse(double);
-    method public double orElseGet(java.util.function.DoubleSupplier);
-    method public <X extends java.lang.Throwable> double orElseThrow(java.util.function.Supplier<X>) throws X;
-  }
-
-  public final class OptionalInt {
-    method public static java.util.OptionalInt empty();
-    method public int getAsInt();
-    method public void ifPresent(java.util.function.IntConsumer);
-    method public boolean isPresent();
-    method public static java.util.OptionalInt of(int);
-    method public int orElse(int);
-    method public int orElseGet(java.util.function.IntSupplier);
-    method public <X extends java.lang.Throwable> int orElseThrow(java.util.function.Supplier<X>) throws X;
-  }
-
-  public final class OptionalLong {
-    method public static java.util.OptionalLong empty();
-    method public long getAsLong();
-    method public void ifPresent(java.util.function.LongConsumer);
-    method public boolean isPresent();
-    method public static java.util.OptionalLong of(long);
-    method public long orElse(long);
-    method public long orElseGet(java.util.function.LongSupplier);
-    method public <X extends java.lang.Throwable> long orElseThrow(java.util.function.Supplier<X>) throws X;
-  }
-
-  public interface PrimitiveIterator<T, T_CONS> extends java.util.Iterator<T> {
-    method public void forEachRemaining(T_CONS);
-  }
-
-  public static interface PrimitiveIterator.OfDouble extends java.util.PrimitiveIterator<java.lang.Double,java.util.function.DoubleConsumer> {
-    method public default void forEachRemaining(java.util.function.DoubleConsumer);
-    method public default void forEachRemaining(java.util.function.Consumer<? super java.lang.Double>);
-    method public default Double next();
-    method public double nextDouble();
-  }
-
-  public static interface PrimitiveIterator.OfInt extends java.util.PrimitiveIterator<java.lang.Integer,java.util.function.IntConsumer> {
-    method public default void forEachRemaining(java.util.function.IntConsumer);
-    method public default void forEachRemaining(java.util.function.Consumer<? super java.lang.Integer>);
-    method public default Integer next();
-    method public int nextInt();
-  }
-
-  public static interface PrimitiveIterator.OfLong extends java.util.PrimitiveIterator<java.lang.Long,java.util.function.LongConsumer> {
-    method public default void forEachRemaining(java.util.function.LongConsumer);
-    method public default void forEachRemaining(java.util.function.Consumer<? super java.lang.Long>);
-    method public default Long next();
-    method public long nextLong();
-  }
-
-  public class PriorityQueue<E> extends java.util.AbstractQueue<E> implements java.io.Serializable {
-    ctor public PriorityQueue();
-    ctor public PriorityQueue(int);
-    ctor public PriorityQueue(java.util.Comparator<? super E>);
-    ctor public PriorityQueue(int, java.util.Comparator<? super E>);
-    ctor public PriorityQueue(java.util.Collection<? extends E>);
-    ctor public PriorityQueue(java.util.PriorityQueue<? extends E>);
-    ctor public PriorityQueue(java.util.SortedSet<? extends E>);
-    method public java.util.Comparator<? super E> comparator();
-    method public java.util.Iterator<E> iterator();
-    method public boolean offer(E);
-    method public E peek();
-    method public E poll();
-    method public int size();
-    method public final java.util.Spliterator<E> spliterator();
-  }
-
-  public class Properties extends java.util.Hashtable<java.lang.Object,java.lang.Object> {
-    ctor public Properties();
-    ctor public Properties(java.util.Properties);
-    method public String getProperty(String);
-    method public String getProperty(String, String);
-    method public void list(java.io.PrintStream);
-    method public void list(java.io.PrintWriter);
-    method public void load(java.io.Reader) throws java.io.IOException;
-    method public void load(java.io.InputStream) throws java.io.IOException;
-    method public void loadFromXML(java.io.InputStream) throws java.io.IOException, java.util.InvalidPropertiesFormatException;
-    method public java.util.Enumeration<?> propertyNames();
-    method @Deprecated public void save(java.io.OutputStream, String);
-    method public Object setProperty(String, String);
-    method public void store(java.io.Writer, String) throws java.io.IOException;
-    method public void store(java.io.OutputStream, String) throws java.io.IOException;
-    method public void storeToXML(java.io.OutputStream, String) throws java.io.IOException;
-    method public void storeToXML(java.io.OutputStream, String, String) throws java.io.IOException;
-    method public java.util.Set<java.lang.String> stringPropertyNames();
-    field protected java.util.Properties defaults;
-  }
-
-  public final class PropertyPermission extends java.security.BasicPermission {
-    ctor public PropertyPermission(String, String);
-  }
-
-  public class PropertyResourceBundle extends java.util.ResourceBundle {
-    ctor public PropertyResourceBundle(java.io.InputStream) throws java.io.IOException;
-    ctor public PropertyResourceBundle(java.io.Reader) throws java.io.IOException;
-    method public java.util.Enumeration<java.lang.String> getKeys();
-    method public Object handleGetObject(String);
-  }
-
-  public interface Queue<E> extends java.util.Collection<E> {
-    method public E element();
-    method public boolean offer(E);
-    method @Nullable public E peek();
-    method @Nullable public E poll();
-    method public E remove();
-  }
-
-  public class Random implements java.io.Serializable {
-    ctor public Random();
-    ctor public Random(long);
-    method public java.util.stream.DoubleStream doubles(long);
-    method public java.util.stream.DoubleStream doubles();
-    method public java.util.stream.DoubleStream doubles(long, double, double);
-    method public java.util.stream.DoubleStream doubles(double, double);
-    method public java.util.stream.IntStream ints(long);
-    method public java.util.stream.IntStream ints();
-    method public java.util.stream.IntStream ints(long, int, int);
-    method public java.util.stream.IntStream ints(int, int);
-    method public java.util.stream.LongStream longs(long);
-    method public java.util.stream.LongStream longs();
-    method public java.util.stream.LongStream longs(long, long, long);
-    method public java.util.stream.LongStream longs(long, long);
-    method protected int next(int);
-    method public boolean nextBoolean();
-    method public void nextBytes(byte[]);
-    method public double nextDouble();
-    method public float nextFloat();
-    method public double nextGaussian();
-    method public int nextInt();
-    method public int nextInt(int);
-    method public long nextLong();
-    method public void setSeed(long);
-  }
-
-  public interface RandomAccess {
-  }
-
-  public abstract class ResourceBundle {
-    ctor public ResourceBundle();
-    method public static final void clearCache();
-    method public static final void clearCache(ClassLoader);
-    method public boolean containsKey(String);
-    method public String getBaseBundleName();
-    method public static final java.util.ResourceBundle getBundle(String);
-    method public static final java.util.ResourceBundle getBundle(String, java.util.ResourceBundle.Control);
-    method public static final java.util.ResourceBundle getBundle(String, java.util.Locale);
-    method public static final java.util.ResourceBundle getBundle(String, java.util.Locale, java.util.ResourceBundle.Control);
-    method public static java.util.ResourceBundle getBundle(String, java.util.Locale, ClassLoader);
-    method public static java.util.ResourceBundle getBundle(String, java.util.Locale, ClassLoader, java.util.ResourceBundle.Control);
-    method public abstract java.util.Enumeration<java.lang.String> getKeys();
-    method public java.util.Locale getLocale();
-    method public final Object getObject(String);
-    method public final String getString(String);
-    method public final String[] getStringArray(String);
-    method protected abstract Object handleGetObject(String);
-    method protected java.util.Set<java.lang.String> handleKeySet();
-    method public java.util.Set<java.lang.String> keySet();
-    method protected void setParent(java.util.ResourceBundle);
-    field protected java.util.ResourceBundle parent;
-  }
-
-  public static class ResourceBundle.Control {
-    ctor protected ResourceBundle.Control();
-    method public java.util.List<java.util.Locale> getCandidateLocales(String, java.util.Locale);
-    method public static final java.util.ResourceBundle.Control getControl(java.util.List<java.lang.String>);
-    method public java.util.Locale getFallbackLocale(String, java.util.Locale);
-    method public java.util.List<java.lang.String> getFormats(String);
-    method public static final java.util.ResourceBundle.Control getNoFallbackControl(java.util.List<java.lang.String>);
-    method public long getTimeToLive(String, java.util.Locale);
-    method public boolean needsReload(String, java.util.Locale, String, ClassLoader, java.util.ResourceBundle, long);
-    method public java.util.ResourceBundle newBundle(String, java.util.Locale, String, ClassLoader, boolean) throws java.io.IOException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-    method public String toBundleName(String, java.util.Locale);
-    method public final String toResourceName(String, String);
-    field public static final java.util.List<java.lang.String> FORMAT_CLASS;
-    field public static final java.util.List<java.lang.String> FORMAT_DEFAULT;
-    field public static final java.util.List<java.lang.String> FORMAT_PROPERTIES;
-    field public static final long TTL_DONT_CACHE = -1L; // 0xffffffffffffffffL
-    field public static final long TTL_NO_EXPIRATION_CONTROL = -2L; // 0xfffffffffffffffeL
-  }
-
-  public final class Scanner implements java.io.Closeable java.util.Iterator<java.lang.String> {
-    ctor public Scanner(Readable);
-    ctor public Scanner(java.io.InputStream);
-    ctor public Scanner(java.io.InputStream, String);
-    ctor public Scanner(java.io.File) throws java.io.FileNotFoundException;
-    ctor public Scanner(java.io.File, String) throws java.io.FileNotFoundException;
-    ctor public Scanner(java.nio.file.Path) throws java.io.IOException;
-    ctor public Scanner(java.nio.file.Path, String) throws java.io.IOException;
-    ctor public Scanner(String);
-    ctor public Scanner(java.nio.channels.ReadableByteChannel);
-    ctor public Scanner(java.nio.channels.ReadableByteChannel, String);
-    method public void close();
-    method public java.util.regex.Pattern delimiter();
-    method public String findInLine(String);
-    method public String findInLine(java.util.regex.Pattern);
-    method public String findWithinHorizon(String, int);
-    method public String findWithinHorizon(java.util.regex.Pattern, int);
-    method public boolean hasNext();
-    method public boolean hasNext(String);
-    method public boolean hasNext(java.util.regex.Pattern);
-    method public boolean hasNextBigDecimal();
-    method public boolean hasNextBigInteger();
-    method public boolean hasNextBigInteger(int);
-    method public boolean hasNextBoolean();
-    method public boolean hasNextByte();
-    method public boolean hasNextByte(int);
-    method public boolean hasNextDouble();
-    method public boolean hasNextFloat();
-    method public boolean hasNextInt();
-    method public boolean hasNextInt(int);
-    method public boolean hasNextLine();
-    method public boolean hasNextLong();
-    method public boolean hasNextLong(int);
-    method public boolean hasNextShort();
-    method public boolean hasNextShort(int);
-    method public java.io.IOException ioException();
-    method public java.util.Locale locale();
-    method public java.util.regex.MatchResult match();
-    method public String next();
-    method public String next(String);
-    method public String next(java.util.regex.Pattern);
-    method public java.math.BigDecimal nextBigDecimal();
-    method public java.math.BigInteger nextBigInteger();
-    method public java.math.BigInteger nextBigInteger(int);
-    method public boolean nextBoolean();
-    method public byte nextByte();
-    method public byte nextByte(int);
-    method public double nextDouble();
-    method public float nextFloat();
-    method public int nextInt();
-    method public int nextInt(int);
-    method public String nextLine();
-    method public long nextLong();
-    method public long nextLong(int);
-    method public short nextShort();
-    method public short nextShort(int);
-    method public int radix();
-    method public java.util.Scanner reset();
-    method public java.util.Scanner skip(java.util.regex.Pattern);
-    method public java.util.Scanner skip(String);
-    method public java.util.Scanner useDelimiter(java.util.regex.Pattern);
-    method public java.util.Scanner useDelimiter(String);
-    method public java.util.Scanner useLocale(java.util.Locale);
-    method public java.util.Scanner useRadix(int);
-  }
-
-  public class ServiceConfigurationError extends java.lang.Error {
-    ctor public ServiceConfigurationError(String);
-    ctor public ServiceConfigurationError(String, Throwable);
-  }
-
-  public final class ServiceLoader<S> implements java.lang.Iterable<S> {
-    method public java.util.Iterator<S> iterator();
-    method public static <S> java.util.ServiceLoader<S> load(Class<S>, ClassLoader);
-    method public static <S> java.util.ServiceLoader<S> load(Class<S>);
-    method public static <S> java.util.ServiceLoader<S> loadInstalled(Class<S>);
-    method public void reload();
-  }
-
-  public interface Set<E> extends java.util.Collection<E> {
-    method @NonNull public static <E> java.util.Set<E> of();
-    method @NonNull public static <E> java.util.Set<E> of(@NonNull E);
-    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull public static <E> java.util.Set<E> of(@NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E, @NonNull E);
-    method @NonNull @java.lang.SafeVarargs public static <E> java.util.Set<E> of(@NonNull E...);
-  }
-
-  public class SimpleTimeZone extends java.util.TimeZone {
-    ctor public SimpleTimeZone(int, String);
-    ctor public SimpleTimeZone(int, String, int, int, int, int, int, int, int, int);
-    ctor public SimpleTimeZone(int, String, int, int, int, int, int, int, int, int, int);
-    ctor public SimpleTimeZone(int, String, int, int, int, int, int, int, int, int, int, int, int);
-    method public int getOffset(int, int, int, int, int, int);
-    method public int getRawOffset();
-    method public boolean inDaylightTime(java.util.Date);
-    method public void setDSTSavings(int);
-    method public void setEndRule(int, int, int, int);
-    method public void setEndRule(int, int, int);
-    method public void setEndRule(int, int, int, int, boolean);
-    method public void setRawOffset(int);
-    method public void setStartRule(int, int, int, int);
-    method public void setStartRule(int, int, int);
-    method public void setStartRule(int, int, int, int, boolean);
-    method public void setStartYear(int);
-    method public boolean useDaylightTime();
-    field public static final int STANDARD_TIME = 1; // 0x1
-    field public static final int UTC_TIME = 2; // 0x2
-    field public static final int WALL_TIME = 0; // 0x0
-  }
-
-  public interface SortedMap<K, V> extends java.util.Map<K,V> {
-    method @Nullable public java.util.Comparator<? super K> comparator();
-    method public K firstKey();
-    method @NonNull public java.util.SortedMap<K,V> headMap(K);
-    method public K lastKey();
-    method @NonNull public java.util.SortedMap<K,V> subMap(K, K);
-    method @NonNull public java.util.SortedMap<K,V> tailMap(K);
-  }
-
-  public interface SortedSet<E> extends java.util.Set<E> {
-    method public java.util.Comparator<? super E> comparator();
-    method public E first();
-    method public java.util.SortedSet<E> headSet(E);
-    method public E last();
-    method public java.util.SortedSet<E> subSet(E, E);
-    method public java.util.SortedSet<E> tailSet(E);
-  }
-
-  public interface Spliterator<T> {
-    method public int characteristics();
-    method public long estimateSize();
-    method public default void forEachRemaining(java.util.function.Consumer<? super T>);
-    method public default java.util.Comparator<? super T> getComparator();
-    method public default long getExactSizeIfKnown();
-    method public default boolean hasCharacteristics(int);
-    method public boolean tryAdvance(java.util.function.Consumer<? super T>);
-    method public java.util.Spliterator<T> trySplit();
-    field public static final int CONCURRENT = 4096; // 0x1000
-    field public static final int DISTINCT = 1; // 0x1
-    field public static final int IMMUTABLE = 1024; // 0x400
-    field public static final int NONNULL = 256; // 0x100
-    field public static final int ORDERED = 16; // 0x10
-    field public static final int SIZED = 64; // 0x40
-    field public static final int SORTED = 4; // 0x4
-    field public static final int SUBSIZED = 16384; // 0x4000
-  }
-
-  public static interface Spliterator.OfDouble extends java.util.Spliterator.OfPrimitive<java.lang.Double,java.util.function.DoubleConsumer,java.util.Spliterator.OfDouble> {
-    method public default void forEachRemaining(java.util.function.DoubleConsumer);
-    method public default void forEachRemaining(java.util.function.Consumer<? super java.lang.Double>);
-    method public boolean tryAdvance(java.util.function.DoubleConsumer);
-    method public default boolean tryAdvance(java.util.function.Consumer<? super java.lang.Double>);
-    method public java.util.Spliterator.OfDouble trySplit();
-  }
-
-  public static interface Spliterator.OfInt extends java.util.Spliterator.OfPrimitive<java.lang.Integer,java.util.function.IntConsumer,java.util.Spliterator.OfInt> {
-    method public default void forEachRemaining(java.util.function.IntConsumer);
-    method public default void forEachRemaining(java.util.function.Consumer<? super java.lang.Integer>);
-    method public boolean tryAdvance(java.util.function.IntConsumer);
-    method public default boolean tryAdvance(java.util.function.Consumer<? super java.lang.Integer>);
-    method public java.util.Spliterator.OfInt trySplit();
-  }
-
-  public static interface Spliterator.OfLong extends java.util.Spliterator.OfPrimitive<java.lang.Long,java.util.function.LongConsumer,java.util.Spliterator.OfLong> {
-    method public default void forEachRemaining(java.util.function.LongConsumer);
-    method public default void forEachRemaining(java.util.function.Consumer<? super java.lang.Long>);
-    method public boolean tryAdvance(java.util.function.LongConsumer);
-    method public default boolean tryAdvance(java.util.function.Consumer<? super java.lang.Long>);
-    method public java.util.Spliterator.OfLong trySplit();
-  }
-
-  public static interface Spliterator.OfPrimitive<T, T_CONS, T_SPLITR extends java.util.Spliterator.OfPrimitive<T, T_CONS, T_SPLITR>> extends java.util.Spliterator<T> {
-    method public default void forEachRemaining(T_CONS);
-    method public boolean tryAdvance(T_CONS);
-    method public T_SPLITR trySplit();
-  }
-
-  public final class Spliterators {
-    method public static java.util.Spliterator.OfDouble emptyDoubleSpliterator();
-    method public static java.util.Spliterator.OfInt emptyIntSpliterator();
-    method public static java.util.Spliterator.OfLong emptyLongSpliterator();
-    method public static <T> java.util.Spliterator<T> emptySpliterator();
-    method public static <T> java.util.Iterator<T> iterator(java.util.Spliterator<? extends T>);
-    method public static java.util.PrimitiveIterator.OfInt iterator(java.util.Spliterator.OfInt);
-    method public static java.util.PrimitiveIterator.OfLong iterator(java.util.Spliterator.OfLong);
-    method public static java.util.PrimitiveIterator.OfDouble iterator(java.util.Spliterator.OfDouble);
-    method public static <T> java.util.Spliterator<T> spliterator(Object[], int);
-    method public static <T> java.util.Spliterator<T> spliterator(Object[], int, int, int);
-    method public static java.util.Spliterator.OfInt spliterator(int[], int);
-    method public static java.util.Spliterator.OfInt spliterator(int[], int, int, int);
-    method public static java.util.Spliterator.OfLong spliterator(long[], int);
-    method public static java.util.Spliterator.OfLong spliterator(long[], int, int, int);
-    method public static java.util.Spliterator.OfDouble spliterator(double[], int);
-    method public static java.util.Spliterator.OfDouble spliterator(double[], int, int, int);
-    method public static <T> java.util.Spliterator<T> spliterator(java.util.Collection<? extends T>, int);
-    method public static <T> java.util.Spliterator<T> spliterator(java.util.Iterator<? extends T>, long, int);
-    method public static java.util.Spliterator.OfInt spliterator(java.util.PrimitiveIterator.OfInt, long, int);
-    method public static java.util.Spliterator.OfLong spliterator(java.util.PrimitiveIterator.OfLong, long, int);
-    method public static java.util.Spliterator.OfDouble spliterator(java.util.PrimitiveIterator.OfDouble, long, int);
-    method public static <T> java.util.Spliterator<T> spliteratorUnknownSize(java.util.Iterator<? extends T>, int);
-    method public static java.util.Spliterator.OfInt spliteratorUnknownSize(java.util.PrimitiveIterator.OfInt, int);
-    method public static java.util.Spliterator.OfLong spliteratorUnknownSize(java.util.PrimitiveIterator.OfLong, int);
-    method public static java.util.Spliterator.OfDouble spliteratorUnknownSize(java.util.PrimitiveIterator.OfDouble, int);
-  }
-
-  public abstract static class Spliterators.AbstractDoubleSpliterator implements java.util.Spliterator.OfDouble {
-    ctor protected Spliterators.AbstractDoubleSpliterator(long, int);
-    method public int characteristics();
-    method public long estimateSize();
-    method public java.util.Spliterator.OfDouble trySplit();
-  }
-
-  public abstract static class Spliterators.AbstractIntSpliterator implements java.util.Spliterator.OfInt {
-    ctor protected Spliterators.AbstractIntSpliterator(long, int);
-    method public int characteristics();
-    method public long estimateSize();
-    method public java.util.Spliterator.OfInt trySplit();
-  }
-
-  public abstract static class Spliterators.AbstractLongSpliterator implements java.util.Spliterator.OfLong {
-    ctor protected Spliterators.AbstractLongSpliterator(long, int);
-    method public int characteristics();
-    method public long estimateSize();
-    method public java.util.Spliterator.OfLong trySplit();
-  }
-
-  public abstract static class Spliterators.AbstractSpliterator<T> implements java.util.Spliterator<T> {
-    ctor protected Spliterators.AbstractSpliterator(long, int);
-    method public int characteristics();
-    method public long estimateSize();
-    method public java.util.Spliterator<T> trySplit();
-  }
-
-  public final class SplittableRandom {
-    ctor public SplittableRandom(long);
-    ctor public SplittableRandom();
-    method public java.util.stream.DoubleStream doubles(long);
-    method public java.util.stream.DoubleStream doubles();
-    method public java.util.stream.DoubleStream doubles(long, double, double);
-    method public java.util.stream.DoubleStream doubles(double, double);
-    method public java.util.stream.IntStream ints(long);
-    method public java.util.stream.IntStream ints();
-    method public java.util.stream.IntStream ints(long, int, int);
-    method public java.util.stream.IntStream ints(int, int);
-    method public java.util.stream.LongStream longs(long);
-    method public java.util.stream.LongStream longs();
-    method public java.util.stream.LongStream longs(long, long, long);
-    method public java.util.stream.LongStream longs(long, long);
-    method public boolean nextBoolean();
-    method public double nextDouble();
-    method public double nextDouble(double);
-    method public double nextDouble(double, double);
-    method public int nextInt();
-    method public int nextInt(int);
-    method public int nextInt(int, int);
-    method public long nextLong();
-    method public long nextLong(long);
-    method public long nextLong(long, long);
-    method public java.util.SplittableRandom split();
-  }
-
-  public class Stack<E> extends java.util.Vector<E> {
-    ctor public Stack();
-    method public boolean empty();
-    method public E peek();
-    method public E pop();
-    method public E push(E);
-    method public int search(Object);
-  }
-
-  public final class StringJoiner {
-    ctor public StringJoiner(CharSequence);
-    ctor public StringJoiner(CharSequence, CharSequence, CharSequence);
-    method public java.util.StringJoiner add(CharSequence);
-    method public int length();
-    method public java.util.StringJoiner merge(java.util.StringJoiner);
-    method public java.util.StringJoiner setEmptyValue(CharSequence);
-  }
-
-  public class StringTokenizer implements java.util.Enumeration<java.lang.Object> {
-    ctor public StringTokenizer(String, String, boolean);
-    ctor public StringTokenizer(String, String);
-    ctor public StringTokenizer(String);
-    method public int countTokens();
-    method public boolean hasMoreElements();
-    method public boolean hasMoreTokens();
-    method public Object nextElement();
-    method public String nextToken();
-    method public String nextToken(String);
-  }
-
-  public abstract class TimeZone implements java.lang.Cloneable java.io.Serializable {
-    ctor public TimeZone();
-    method public Object clone();
-    method public static String[] getAvailableIDs(int);
-    method public static String[] getAvailableIDs();
-    method public int getDSTSavings();
-    method public static java.util.TimeZone getDefault();
-    method public final String getDisplayName();
-    method public final String getDisplayName(java.util.Locale);
-    method public final String getDisplayName(boolean, int);
-    method public String getDisplayName(boolean, int, java.util.Locale);
-    method public String getID();
-    method public abstract int getOffset(int, int, int, int, int, int);
-    method public int getOffset(long);
-    method public abstract int getRawOffset();
-    method public static java.util.TimeZone getTimeZone(String);
-    method public static java.util.TimeZone getTimeZone(java.time.ZoneId);
-    method public boolean hasSameRules(java.util.TimeZone);
-    method public abstract boolean inDaylightTime(java.util.Date);
-    method public boolean observesDaylightTime();
-    method public static void setDefault(java.util.TimeZone);
-    method public void setID(String);
-    method public abstract void setRawOffset(int);
-    method public java.time.ZoneId toZoneId();
-    method public abstract boolean useDaylightTime();
-    field public static final int LONG = 1; // 0x1
-    field public static final int SHORT = 0; // 0x0
-  }
-
-  public class Timer {
-    ctor public Timer();
-    ctor public Timer(boolean);
-    ctor public Timer(String);
-    ctor public Timer(String, boolean);
-    method public void cancel();
-    method public int purge();
-    method public void schedule(java.util.TimerTask, long);
-    method public void schedule(java.util.TimerTask, java.util.Date);
-    method public void schedule(java.util.TimerTask, long, long);
-    method public void schedule(java.util.TimerTask, java.util.Date, long);
-    method public void scheduleAtFixedRate(java.util.TimerTask, long, long);
-    method public void scheduleAtFixedRate(java.util.TimerTask, java.util.Date, long);
-  }
-
-  public abstract class TimerTask implements java.lang.Runnable {
-    ctor protected TimerTask();
-    method public boolean cancel();
-    method public long scheduledExecutionTime();
-  }
-
-  public class TooManyListenersException extends java.lang.Exception {
-    ctor public TooManyListenersException();
-    ctor public TooManyListenersException(String);
-  }
-
-  public class TreeMap<K, V> extends java.util.AbstractMap<K,V> implements java.lang.Cloneable java.util.NavigableMap<K,V> java.io.Serializable {
-    ctor public TreeMap();
-    ctor public TreeMap(@Nullable java.util.Comparator<? super K>);
-    ctor public TreeMap(@NonNull java.util.Map<? extends K,? extends V>);
-    ctor public TreeMap(@NonNull java.util.SortedMap<K,? extends V>);
-    method @Nullable public java.util.Map.Entry<K,V> ceilingEntry(K);
-    method @Nullable public K ceilingKey(K);
-    method @NonNull public Object clone();
-    method @Nullable public java.util.Comparator<? super K> comparator();
-    method @NonNull public java.util.NavigableSet<K> descendingKeySet();
-    method @NonNull public java.util.NavigableMap<K,V> descendingMap();
-    method @NonNull public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
-    method @Nullable public java.util.Map.Entry<K,V> firstEntry();
-    method public K firstKey();
-    method @Nullable public java.util.Map.Entry<K,V> floorEntry(K);
-    method @Nullable public K floorKey(K);
-    method @NonNull public java.util.NavigableMap<K,V> headMap(K, boolean);
-    method @NonNull public java.util.SortedMap<K,V> headMap(K);
-    method @Nullable public java.util.Map.Entry<K,V> higherEntry(K);
-    method @Nullable public K higherKey(K);
-    method @Nullable public java.util.Map.Entry<K,V> lastEntry();
-    method public K lastKey();
-    method @Nullable public java.util.Map.Entry<K,V> lowerEntry(K);
-    method @Nullable public K lowerKey(K);
-    method @NonNull public java.util.NavigableSet<K> navigableKeySet();
-    method @Nullable public java.util.Map.Entry<K,V> pollFirstEntry();
-    method @Nullable public java.util.Map.Entry<K,V> pollLastEntry();
-    method @NonNull public java.util.NavigableMap<K,V> subMap(K, boolean, K, boolean);
-    method @NonNull public java.util.SortedMap<K,V> subMap(K, K);
-    method @NonNull public java.util.NavigableMap<K,V> tailMap(K, boolean);
-    method @NonNull public java.util.SortedMap<K,V> tailMap(K);
-  }
-
-  public class TreeSet<E> extends java.util.AbstractSet<E> implements java.lang.Cloneable java.util.NavigableSet<E> java.io.Serializable {
-    ctor public TreeSet();
-    ctor public TreeSet(java.util.Comparator<? super E>);
-    ctor public TreeSet(java.util.Collection<? extends E>);
-    ctor public TreeSet(java.util.SortedSet<E>);
-    method public E ceiling(E);
-    method public Object clone();
-    method public java.util.Comparator<? super E> comparator();
-    method public java.util.Iterator<E> descendingIterator();
-    method public java.util.NavigableSet<E> descendingSet();
-    method public E first();
-    method public E floor(E);
-    method public java.util.NavigableSet<E> headSet(E, boolean);
-    method public java.util.SortedSet<E> headSet(E);
-    method public E higher(E);
-    method public java.util.Iterator<E> iterator();
-    method public E last();
-    method public E lower(E);
-    method public E pollFirst();
-    method public E pollLast();
-    method public int size();
-    method public java.util.NavigableSet<E> subSet(E, boolean, E, boolean);
-    method public java.util.SortedSet<E> subSet(E, E);
-    method public java.util.NavigableSet<E> tailSet(E, boolean);
-    method public java.util.SortedSet<E> tailSet(E);
-  }
-
-  public final class UUID implements java.lang.Comparable<java.util.UUID> java.io.Serializable {
-    ctor public UUID(long, long);
-    method public int clockSequence();
-    method public int compareTo(java.util.UUID);
-    method public static java.util.UUID fromString(String);
-    method public long getLeastSignificantBits();
-    method public long getMostSignificantBits();
-    method public static java.util.UUID nameUUIDFromBytes(byte[]);
-    method public long node();
-    method public static java.util.UUID randomUUID();
-    method public long timestamp();
-    method public int variant();
-    method public int version();
-  }
-
-  public class UnknownFormatConversionException extends java.util.IllegalFormatException {
-    ctor public UnknownFormatConversionException(String);
-    method public String getConversion();
-  }
-
-  public class UnknownFormatFlagsException extends java.util.IllegalFormatException {
-    ctor public UnknownFormatFlagsException(String);
-    method public String getFlags();
-  }
-
-  public class Vector<E> extends java.util.AbstractList<E> implements java.lang.Cloneable java.util.List<E> java.util.RandomAccess java.io.Serializable {
-    ctor public Vector(int, int);
-    ctor public Vector(int);
-    ctor public Vector();
-    ctor public Vector(@NonNull java.util.Collection<? extends E>);
-    method public void addElement(E);
-    method public int capacity();
-    method @NonNull public Object clone();
-    method public void copyInto(@NonNull Object[]);
-    method public E elementAt(int);
-    method @NonNull public java.util.Enumeration<E> elements();
-    method public void ensureCapacity(int);
-    method public E firstElement();
-    method public void forEach(@NonNull java.util.function.Consumer<? super E>);
-    method public E get(int);
-    method public int indexOf(@Nullable Object, int);
-    method public void insertElementAt(E, int);
-    method public E lastElement();
-    method public int lastIndexOf(@Nullable Object, int);
-    method public void removeAllElements();
-    method public boolean removeElement(@Nullable Object);
-    method public void removeElementAt(int);
-    method public void setElementAt(E, int);
-    method public void setSize(int);
-    method public int size();
-    method public void trimToSize();
-    field protected int capacityIncrement;
-    field protected int elementCount;
-    field @NonNull protected Object[] elementData;
-  }
-
-  public class WeakHashMap<K, V> extends java.util.AbstractMap<K,V> implements java.util.Map<K,V> {
-    ctor public WeakHashMap(int, float);
-    ctor public WeakHashMap(int);
-    ctor public WeakHashMap();
-    ctor public WeakHashMap(@NonNull java.util.Map<? extends K,? extends V>);
-    method @NonNull public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
-  }
-
-}
-
-package java.util.concurrent {
-
-  public abstract class AbstractExecutorService implements java.util.concurrent.ExecutorService {
-    ctor public AbstractExecutorService();
-    method public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>>) throws java.lang.InterruptedException;
-    method public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>>, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>>) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
-    method public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>>, long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
-    method protected <T> java.util.concurrent.RunnableFuture<T> newTaskFor(Runnable, T);
-    method protected <T> java.util.concurrent.RunnableFuture<T> newTaskFor(java.util.concurrent.Callable<T>);
-    method public java.util.concurrent.Future<?> submit(Runnable);
-    method public <T> java.util.concurrent.Future<T> submit(Runnable, T);
-    method public <T> java.util.concurrent.Future<T> submit(java.util.concurrent.Callable<T>);
-  }
-
-  public class ArrayBlockingQueue<E> extends java.util.AbstractQueue<E> implements java.util.concurrent.BlockingQueue<E> java.io.Serializable {
-    ctor public ArrayBlockingQueue(int);
-    ctor public ArrayBlockingQueue(int, boolean);
-    ctor public ArrayBlockingQueue(int, boolean, java.util.Collection<? extends E>);
-    method public int drainTo(java.util.Collection<? super E>);
-    method public int drainTo(java.util.Collection<? super E>, int);
-    method public java.util.Iterator<E> iterator();
-    method public boolean offer(E);
-    method public boolean offer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public E peek();
-    method public E poll();
-    method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public void put(E) throws java.lang.InterruptedException;
-    method public int remainingCapacity();
-    method public int size();
-    method public E take() throws java.lang.InterruptedException;
-  }
-
-  public interface BlockingDeque<E> extends java.util.concurrent.BlockingQueue<E> java.util.Deque<E> {
-    method public boolean offerFirst(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public boolean offerLast(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public E pollFirst(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public E pollLast(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public void putFirst(E) throws java.lang.InterruptedException;
-    method public void putLast(E) throws java.lang.InterruptedException;
-    method public E takeFirst() throws java.lang.InterruptedException;
-    method public E takeLast() throws java.lang.InterruptedException;
-  }
-
-  public interface BlockingQueue<E> extends java.util.Queue<E> {
-    method public int drainTo(java.util.Collection<? super E>);
-    method public int drainTo(java.util.Collection<? super E>, int);
-    method public boolean offer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public void put(E) throws java.lang.InterruptedException;
-    method public int remainingCapacity();
-    method public E take() throws java.lang.InterruptedException;
-  }
-
-  public class BrokenBarrierException extends java.lang.Exception {
-    ctor public BrokenBarrierException();
-    ctor public BrokenBarrierException(String);
-  }
-
-  @java.lang.FunctionalInterface public interface Callable<V> {
-    method public V call() throws java.lang.Exception;
-  }
-
-  public class CancellationException extends java.lang.IllegalStateException {
-    ctor public CancellationException();
-    ctor public CancellationException(String);
-  }
-
-  public class CompletableFuture<T> implements java.util.concurrent.CompletionStage<T> java.util.concurrent.Future<T> {
-    ctor public CompletableFuture();
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> acceptEither(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> acceptEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> acceptEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>, java.util.concurrent.Executor);
-    method public static java.util.concurrent.CompletableFuture<java.lang.Void> allOf(java.util.concurrent.CompletableFuture<?>...);
-    method public static java.util.concurrent.CompletableFuture<java.lang.Object> anyOf(java.util.concurrent.CompletableFuture<?>...);
-    method public <U> java.util.concurrent.CompletableFuture<U> applyToEither(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T,U>);
-    method public <U> java.util.concurrent.CompletableFuture<U> applyToEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T,U>);
-    method public <U> java.util.concurrent.CompletableFuture<U> applyToEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T,U>, java.util.concurrent.Executor);
-    method public boolean cancel(boolean);
-    method public boolean complete(T);
-    method public boolean completeExceptionally(Throwable);
-    method public static <U> java.util.concurrent.CompletableFuture<U> completedFuture(U);
-    method public java.util.concurrent.CompletableFuture<T> exceptionally(java.util.function.Function<java.lang.Throwable,? extends T>);
-    method public T get() throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
-    method public T get(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
-    method public T getNow(T);
-    method public int getNumberOfDependents();
-    method public <U> java.util.concurrent.CompletableFuture<U> handle(java.util.function.BiFunction<? super T,java.lang.Throwable,? extends U>);
-    method public <U> java.util.concurrent.CompletableFuture<U> handleAsync(java.util.function.BiFunction<? super T,java.lang.Throwable,? extends U>);
-    method public <U> java.util.concurrent.CompletableFuture<U> handleAsync(java.util.function.BiFunction<? super T,java.lang.Throwable,? extends U>, java.util.concurrent.Executor);
-    method public boolean isCancelled();
-    method public boolean isCompletedExceptionally();
-    method public boolean isDone();
-    method public T join();
-    method public void obtrudeException(Throwable);
-    method public void obtrudeValue(T);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterBoth(java.util.concurrent.CompletionStage<?>, Runnable);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterBothAsync(java.util.concurrent.CompletionStage<?>, Runnable);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterBothAsync(java.util.concurrent.CompletionStage<?>, Runnable, java.util.concurrent.Executor);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterEither(java.util.concurrent.CompletionStage<?>, Runnable);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterEitherAsync(java.util.concurrent.CompletionStage<?>, Runnable);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> runAfterEitherAsync(java.util.concurrent.CompletionStage<?>, Runnable, java.util.concurrent.Executor);
-    method public static java.util.concurrent.CompletableFuture<java.lang.Void> runAsync(Runnable);
-    method public static java.util.concurrent.CompletableFuture<java.lang.Void> runAsync(Runnable, java.util.concurrent.Executor);
-    method public static <U> java.util.concurrent.CompletableFuture<U> supplyAsync(java.util.function.Supplier<U>);
-    method public static <U> java.util.concurrent.CompletableFuture<U> supplyAsync(java.util.function.Supplier<U>, java.util.concurrent.Executor);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> thenAccept(java.util.function.Consumer<? super T>);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> thenAcceptAsync(java.util.function.Consumer<? super T>);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> thenAcceptAsync(java.util.function.Consumer<? super T>, java.util.concurrent.Executor);
-    method public <U> java.util.concurrent.CompletableFuture<java.lang.Void> thenAcceptBoth(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T,? super U>);
-    method public <U> java.util.concurrent.CompletableFuture<java.lang.Void> thenAcceptBothAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T,? super U>);
-    method public <U> java.util.concurrent.CompletableFuture<java.lang.Void> thenAcceptBothAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T,? super U>, java.util.concurrent.Executor);
-    method public <U> java.util.concurrent.CompletableFuture<U> thenApply(java.util.function.Function<? super T,? extends U>);
-    method public <U> java.util.concurrent.CompletableFuture<U> thenApplyAsync(java.util.function.Function<? super T,? extends U>);
-    method public <U> java.util.concurrent.CompletableFuture<U> thenApplyAsync(java.util.function.Function<? super T,? extends U>, java.util.concurrent.Executor);
-    method public <U, V> java.util.concurrent.CompletableFuture<V> thenCombine(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T,? super U,? extends V>);
-    method public <U, V> java.util.concurrent.CompletableFuture<V> thenCombineAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T,? super U,? extends V>);
-    method public <U, V> java.util.concurrent.CompletableFuture<V> thenCombineAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T,? super U,? extends V>, java.util.concurrent.Executor);
-    method public <U> java.util.concurrent.CompletableFuture<U> thenCompose(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<U>>);
-    method public <U> java.util.concurrent.CompletableFuture<U> thenComposeAsync(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<U>>);
-    method public <U> java.util.concurrent.CompletableFuture<U> thenComposeAsync(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<U>>, java.util.concurrent.Executor);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> thenRun(Runnable);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> thenRunAsync(Runnable);
-    method public java.util.concurrent.CompletableFuture<java.lang.Void> thenRunAsync(Runnable, java.util.concurrent.Executor);
-    method public java.util.concurrent.CompletableFuture<T> toCompletableFuture();
-    method public java.util.concurrent.CompletableFuture<T> whenComplete(java.util.function.BiConsumer<? super T,? super java.lang.Throwable>);
-    method public java.util.concurrent.CompletableFuture<T> whenCompleteAsync(java.util.function.BiConsumer<? super T,? super java.lang.Throwable>);
-    method public java.util.concurrent.CompletableFuture<T> whenCompleteAsync(java.util.function.BiConsumer<? super T,? super java.lang.Throwable>, java.util.concurrent.Executor);
-  }
-
-  public static interface CompletableFuture.AsynchronousCompletionTask {
-  }
-
-  public class CompletionException extends java.lang.RuntimeException {
-    ctor protected CompletionException();
-    ctor protected CompletionException(String);
-    ctor public CompletionException(String, Throwable);
-    ctor public CompletionException(Throwable);
-  }
-
-  public interface CompletionService<V> {
-    method public java.util.concurrent.Future<V> poll();
-    method public java.util.concurrent.Future<V> poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public java.util.concurrent.Future<V> submit(java.util.concurrent.Callable<V>);
-    method public java.util.concurrent.Future<V> submit(Runnable, V);
-    method public java.util.concurrent.Future<V> take() throws java.lang.InterruptedException;
-  }
-
-  public interface CompletionStage<T> {
-    method public java.util.concurrent.CompletionStage<java.lang.Void> acceptEither(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> acceptEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> acceptEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Consumer<? super T>, java.util.concurrent.Executor);
-    method public <U> java.util.concurrent.CompletionStage<U> applyToEither(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T,U>);
-    method public <U> java.util.concurrent.CompletionStage<U> applyToEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T,U>);
-    method public <U> java.util.concurrent.CompletionStage<U> applyToEitherAsync(java.util.concurrent.CompletionStage<? extends T>, java.util.function.Function<? super T,U>, java.util.concurrent.Executor);
-    method public java.util.concurrent.CompletionStage<T> exceptionally(java.util.function.Function<java.lang.Throwable,? extends T>);
-    method public <U> java.util.concurrent.CompletionStage<U> handle(java.util.function.BiFunction<? super T,java.lang.Throwable,? extends U>);
-    method public <U> java.util.concurrent.CompletionStage<U> handleAsync(java.util.function.BiFunction<? super T,java.lang.Throwable,? extends U>);
-    method public <U> java.util.concurrent.CompletionStage<U> handleAsync(java.util.function.BiFunction<? super T,java.lang.Throwable,? extends U>, java.util.concurrent.Executor);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> runAfterBoth(java.util.concurrent.CompletionStage<?>, Runnable);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> runAfterBothAsync(java.util.concurrent.CompletionStage<?>, Runnable);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> runAfterBothAsync(java.util.concurrent.CompletionStage<?>, Runnable, java.util.concurrent.Executor);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> runAfterEither(java.util.concurrent.CompletionStage<?>, Runnable);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> runAfterEitherAsync(java.util.concurrent.CompletionStage<?>, Runnable);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> runAfterEitherAsync(java.util.concurrent.CompletionStage<?>, Runnable, java.util.concurrent.Executor);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> thenAccept(java.util.function.Consumer<? super T>);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptAsync(java.util.function.Consumer<? super T>);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptAsync(java.util.function.Consumer<? super T>, java.util.concurrent.Executor);
-    method public <U> java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptBoth(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T,? super U>);
-    method public <U> java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptBothAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T,? super U>);
-    method public <U> java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptBothAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiConsumer<? super T,? super U>, java.util.concurrent.Executor);
-    method public <U> java.util.concurrent.CompletionStage<U> thenApply(java.util.function.Function<? super T,? extends U>);
-    method public <U> java.util.concurrent.CompletionStage<U> thenApplyAsync(java.util.function.Function<? super T,? extends U>);
-    method public <U> java.util.concurrent.CompletionStage<U> thenApplyAsync(java.util.function.Function<? super T,? extends U>, java.util.concurrent.Executor);
-    method public <U, V> java.util.concurrent.CompletionStage<V> thenCombine(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T,? super U,? extends V>);
-    method public <U, V> java.util.concurrent.CompletionStage<V> thenCombineAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T,? super U,? extends V>);
-    method public <U, V> java.util.concurrent.CompletionStage<V> thenCombineAsync(java.util.concurrent.CompletionStage<? extends U>, java.util.function.BiFunction<? super T,? super U,? extends V>, java.util.concurrent.Executor);
-    method public <U> java.util.concurrent.CompletionStage<U> thenCompose(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<U>>);
-    method public <U> java.util.concurrent.CompletionStage<U> thenComposeAsync(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<U>>);
-    method public <U> java.util.concurrent.CompletionStage<U> thenComposeAsync(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<U>>, java.util.concurrent.Executor);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> thenRun(Runnable);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> thenRunAsync(Runnable);
-    method public java.util.concurrent.CompletionStage<java.lang.Void> thenRunAsync(Runnable, java.util.concurrent.Executor);
-    method public java.util.concurrent.CompletableFuture<T> toCompletableFuture();
-    method public java.util.concurrent.CompletionStage<T> whenComplete(java.util.function.BiConsumer<? super T,? super java.lang.Throwable>);
-    method public java.util.concurrent.CompletionStage<T> whenCompleteAsync(java.util.function.BiConsumer<? super T,? super java.lang.Throwable>);
-    method public java.util.concurrent.CompletionStage<T> whenCompleteAsync(java.util.function.BiConsumer<? super T,? super java.lang.Throwable>, java.util.concurrent.Executor);
-  }
-
-  public class ConcurrentHashMap<K, V> extends java.util.AbstractMap<K,V> implements java.util.concurrent.ConcurrentMap<K,V> java.io.Serializable {
-    ctor public ConcurrentHashMap();
-    ctor public ConcurrentHashMap(int);
-    ctor public ConcurrentHashMap(@NonNull java.util.Map<? extends K,? extends V>);
-    ctor public ConcurrentHashMap(int, float);
-    ctor public ConcurrentHashMap(int, float, int);
-    method public boolean contains(@NonNull Object);
-    method @NonNull public java.util.Enumeration<V> elements();
-    method @NonNull public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
-    method public void forEach(long, @NonNull java.util.function.BiConsumer<? super K,? super V>);
-    method public <U> void forEach(long, @NonNull java.util.function.BiFunction<? super K,? super V,? extends U>, @NonNull java.util.function.Consumer<? super U>);
-    method public void forEachEntry(long, @NonNull java.util.function.Consumer<? super java.util.Map.Entry<K,V>>);
-    method public <U> void forEachEntry(long, @NonNull java.util.function.Function<java.util.Map.Entry<K,V>,? extends U>, @NonNull java.util.function.Consumer<? super U>);
-    method public void forEachKey(long, @NonNull java.util.function.Consumer<? super K>);
-    method public <U> void forEachKey(long, @NonNull java.util.function.Function<? super K,? extends U>, @NonNull java.util.function.Consumer<? super U>);
-    method public void forEachValue(long, @NonNull java.util.function.Consumer<? super V>);
-    method public <U> void forEachValue(long, @NonNull java.util.function.Function<? super V,? extends U>, @NonNull java.util.function.Consumer<? super U>);
-    method @NonNull public java.util.concurrent.ConcurrentHashMap.KeySetView<K,V> keySet(@NonNull V);
-    method @NonNull public java.util.Enumeration<K> keys();
-    method public long mappingCount();
-    method @NonNull public static <K> java.util.concurrent.ConcurrentHashMap.KeySetView<K,java.lang.Boolean> newKeySet();
-    method @NonNull public static <K> java.util.concurrent.ConcurrentHashMap.KeySetView<K,java.lang.Boolean> newKeySet(int);
-    method @Nullable public <U> U reduce(long, @NonNull java.util.function.BiFunction<? super K,? super V,? extends U>, @NonNull java.util.function.BiFunction<? super U,? super U,? extends U>);
-    method @Nullable public java.util.Map.Entry<K,V> reduceEntries(long, @NonNull java.util.function.BiFunction<java.util.Map.Entry<K,V>,java.util.Map.Entry<K,V>,? extends java.util.Map.Entry<K,V>>);
-    method @Nullable public <U> U reduceEntries(long, @NonNull java.util.function.Function<java.util.Map.Entry<K,V>,? extends U>, @NonNull java.util.function.BiFunction<? super U,? super U,? extends U>);
-    method public double reduceEntriesToDouble(long, @NonNull java.util.function.ToDoubleFunction<java.util.Map.Entry<K,V>>, double, @NonNull java.util.function.DoubleBinaryOperator);
-    method public int reduceEntriesToInt(long, @NonNull java.util.function.ToIntFunction<java.util.Map.Entry<K,V>>, int, @NonNull java.util.function.IntBinaryOperator);
-    method public long reduceEntriesToLong(long, @NonNull java.util.function.ToLongFunction<java.util.Map.Entry<K,V>>, long, @NonNull java.util.function.LongBinaryOperator);
-    method @Nullable public K reduceKeys(long, @NonNull java.util.function.BiFunction<? super K,? super K,? extends K>);
-    method @Nullable public <U> U reduceKeys(long, @NonNull java.util.function.Function<? super K,? extends U>, @NonNull java.util.function.BiFunction<? super U,? super U,? extends U>);
-    method public double reduceKeysToDouble(long, @NonNull java.util.function.ToDoubleFunction<? super K>, double, @NonNull java.util.function.DoubleBinaryOperator);
-    method public int reduceKeysToInt(long, @NonNull java.util.function.ToIntFunction<? super K>, int, @NonNull java.util.function.IntBinaryOperator);
-    method public long reduceKeysToLong(long, @NonNull java.util.function.ToLongFunction<? super K>, long, @NonNull java.util.function.LongBinaryOperator);
-    method public double reduceToDouble(long, @NonNull java.util.function.ToDoubleBiFunction<? super K,? super V>, double, @NonNull java.util.function.DoubleBinaryOperator);
-    method public int reduceToInt(long, @NonNull java.util.function.ToIntBiFunction<? super K,? super V>, int, @NonNull java.util.function.IntBinaryOperator);
-    method public long reduceToLong(long, @NonNull java.util.function.ToLongBiFunction<? super K,? super V>, long, @NonNull java.util.function.LongBinaryOperator);
-    method @Nullable public V reduceValues(long, @NonNull java.util.function.BiFunction<? super V,? super V,? extends V>);
-    method @Nullable public <U> U reduceValues(long, @NonNull java.util.function.Function<? super V,? extends U>, @NonNull java.util.function.BiFunction<? super U,? super U,? extends U>);
-    method public double reduceValuesToDouble(long, @NonNull java.util.function.ToDoubleFunction<? super V>, double, @NonNull java.util.function.DoubleBinaryOperator);
-    method public int reduceValuesToInt(long, @NonNull java.util.function.ToIntFunction<? super V>, int, @NonNull java.util.function.IntBinaryOperator);
-    method public long reduceValuesToLong(long, @NonNull java.util.function.ToLongFunction<? super V>, long, @NonNull java.util.function.LongBinaryOperator);
-    method @Nullable public <U> U search(long, @NonNull java.util.function.BiFunction<? super K,? super V,? extends U>);
-    method @Nullable public <U> U searchEntries(long, @NonNull java.util.function.Function<java.util.Map.Entry<K,V>,? extends U>);
-    method @Nullable public <U> U searchKeys(long, @NonNull java.util.function.Function<? super K,? extends U>);
-    method @Nullable public <U> U searchValues(long, @NonNull java.util.function.Function<? super V,? extends U>);
-  }
-
-  public static class ConcurrentHashMap.KeySetView<K, V> implements java.util.Collection<K> java.io.Serializable java.util.Set<K> {
-    method public boolean add(@NonNull K);
-    method public boolean addAll(@NonNull java.util.Collection<? extends K>);
-    method public final void clear();
-    method public boolean contains(@NonNull Object);
-    method public final boolean containsAll(@NonNull java.util.Collection<?>);
-    method public void forEach(@NonNull java.util.function.Consumer<? super K>);
-    method @NonNull public java.util.concurrent.ConcurrentHashMap<K,V> getMap();
-    method @Nullable public V getMappedValue();
-    method public final boolean isEmpty();
-    method @NonNull public java.util.Iterator<K> iterator();
-    method public boolean remove(@NonNull Object);
-    method public final boolean removeAll(@NonNull java.util.Collection<?>);
-    method public final boolean retainAll(@NonNull java.util.Collection<?>);
-    method public final int size();
-    method @NonNull public java.util.Spliterator<K> spliterator();
-    method @NonNull public final Object[] toArray();
-    method @NonNull public final <T> T[] toArray(@NonNull T[]);
-    method @NonNull public final String toString();
-  }
-
-  public class ConcurrentLinkedDeque<E> extends java.util.AbstractCollection<E> implements java.util.Deque<E> java.io.Serializable {
-    ctor public ConcurrentLinkedDeque();
-    ctor public ConcurrentLinkedDeque(java.util.Collection<? extends E>);
-    method public void addFirst(E);
-    method public void addLast(E);
-    method public java.util.Iterator<E> descendingIterator();
-    method public E element();
-    method public E getFirst();
-    method public E getLast();
-    method public java.util.Iterator<E> iterator();
-    method public boolean offer(E);
-    method public boolean offerFirst(E);
-    method public boolean offerLast(E);
-    method public E peek();
-    method public E peekFirst();
-    method public E peekLast();
-    method public E poll();
-    method public E pollFirst();
-    method public E pollLast();
-    method public E pop();
-    method public void push(E);
-    method public E remove();
-    method public E removeFirst();
-    method public boolean removeFirstOccurrence(Object);
-    method public E removeLast();
-    method public boolean removeLastOccurrence(Object);
-    method public int size();
-  }
-
-  public class ConcurrentLinkedQueue<E> extends java.util.AbstractQueue<E> implements java.util.Queue<E> java.io.Serializable {
-    ctor public ConcurrentLinkedQueue();
-    ctor public ConcurrentLinkedQueue(java.util.Collection<? extends E>);
-    method public java.util.Iterator<E> iterator();
-    method public boolean offer(E);
-    method public E peek();
-    method public E poll();
-    method public int size();
-  }
-
-  public interface ConcurrentMap<K, V> extends java.util.Map<K,V> {
-    method public V putIfAbsent(K, V);
-    method public boolean remove(Object, Object);
-    method public boolean replace(K, V, V);
-    method public V replace(K, V);
-  }
-
-  public interface ConcurrentNavigableMap<K, V> extends java.util.concurrent.ConcurrentMap<K,V> java.util.NavigableMap<K,V> {
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> descendingMap();
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> headMap(K, boolean);
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> headMap(K);
-    method public java.util.NavigableSet<K> keySet();
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> subMap(K, boolean, K, boolean);
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> subMap(K, K);
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> tailMap(K, boolean);
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> tailMap(K);
-  }
-
-  public class ConcurrentSkipListMap<K, V> extends java.util.AbstractMap<K,V> implements java.lang.Cloneable java.util.concurrent.ConcurrentNavigableMap<K,V> java.io.Serializable {
-    ctor public ConcurrentSkipListMap();
-    ctor public ConcurrentSkipListMap(java.util.Comparator<? super K>);
-    ctor public ConcurrentSkipListMap(java.util.Map<? extends K,? extends V>);
-    ctor public ConcurrentSkipListMap(java.util.SortedMap<K,? extends V>);
-    method public java.util.Map.Entry<K,V> ceilingEntry(K);
-    method public K ceilingKey(K);
-    method public java.util.concurrent.ConcurrentSkipListMap<K,V> clone();
-    method public java.util.Comparator<? super K> comparator();
-    method public java.util.NavigableSet<K> descendingKeySet();
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> descendingMap();
-    method public java.util.Set<java.util.Map.Entry<K,V>> entrySet();
-    method public java.util.Map.Entry<K,V> firstEntry();
-    method public K firstKey();
-    method public java.util.Map.Entry<K,V> floorEntry(K);
-    method public K floorKey(K);
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> headMap(K, boolean);
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> headMap(K);
-    method public java.util.Map.Entry<K,V> higherEntry(K);
-    method public K higherKey(K);
-    method public java.util.NavigableSet<K> keySet();
-    method public java.util.Map.Entry<K,V> lastEntry();
-    method public K lastKey();
-    method public java.util.Map.Entry<K,V> lowerEntry(K);
-    method public K lowerKey(K);
-    method public java.util.NavigableSet<K> navigableKeySet();
-    method public java.util.Map.Entry<K,V> pollFirstEntry();
-    method public java.util.Map.Entry<K,V> pollLastEntry();
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> subMap(K, boolean, K, boolean);
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> subMap(K, K);
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> tailMap(K, boolean);
-    method public java.util.concurrent.ConcurrentNavigableMap<K,V> tailMap(K);
-  }
-
-  public class ConcurrentSkipListSet<E> extends java.util.AbstractSet<E> implements java.lang.Cloneable java.util.NavigableSet<E> java.io.Serializable {
-    ctor public ConcurrentSkipListSet();
-    ctor public ConcurrentSkipListSet(java.util.Comparator<? super E>);
-    ctor public ConcurrentSkipListSet(java.util.Collection<? extends E>);
-    ctor public ConcurrentSkipListSet(java.util.SortedSet<E>);
-    method public E ceiling(E);
-    method public java.util.concurrent.ConcurrentSkipListSet<E> clone();
-    method public java.util.Comparator<? super E> comparator();
-    method public java.util.Iterator<E> descendingIterator();
-    method public java.util.NavigableSet<E> descendingSet();
-    method public E first();
-    method public E floor(E);
-    method public java.util.NavigableSet<E> headSet(E, boolean);
-    method public java.util.NavigableSet<E> headSet(E);
-    method public E higher(E);
-    method public java.util.Iterator<E> iterator();
-    method public E last();
-    method public E lower(E);
-    method public E pollFirst();
-    method public E pollLast();
-    method public int size();
-    method public java.util.NavigableSet<E> subSet(E, boolean, E, boolean);
-    method public java.util.NavigableSet<E> subSet(E, E);
-    method public java.util.NavigableSet<E> tailSet(E, boolean);
-    method public java.util.NavigableSet<E> tailSet(E);
-  }
-
-  public class CopyOnWriteArrayList<E> implements java.lang.Cloneable java.util.List<E> java.util.RandomAccess java.io.Serializable {
-    ctor public CopyOnWriteArrayList();
-    ctor public CopyOnWriteArrayList(@NonNull java.util.Collection<? extends E>);
-    ctor public CopyOnWriteArrayList(@NonNull E[]);
-    method public boolean add(E);
-    method public void add(int, E);
-    method public boolean addAll(@NonNull java.util.Collection<? extends E>);
-    method public boolean addAll(int, @NonNull java.util.Collection<? extends E>);
-    method public int addAllAbsent(@NonNull java.util.Collection<? extends E>);
-    method public boolean addIfAbsent(E);
-    method public void clear();
-    method @NonNull public Object clone();
-    method public boolean contains(@Nullable Object);
-    method public boolean containsAll(@NonNull java.util.Collection<?>);
-    method public void forEach(@NonNull java.util.function.Consumer<? super E>);
-    method public E get(int);
-    method public int indexOf(@Nullable Object);
-    method public int indexOf(@Nullable E, int);
-    method public boolean isEmpty();
-    method @NonNull public java.util.Iterator<E> iterator();
-    method public int lastIndexOf(@Nullable Object);
-    method public int lastIndexOf(@Nullable E, int);
-    method @NonNull public java.util.ListIterator<E> listIterator();
-    method @NonNull public java.util.ListIterator<E> listIterator(int);
-    method public E remove(int);
-    method public boolean remove(@Nullable Object);
-    method public boolean removeAll(@NonNull java.util.Collection<?>);
-    method public boolean retainAll(@NonNull java.util.Collection<?>);
-    method public E set(int, E);
-    method public int size();
-    method @NonNull public java.util.List<E> subList(int, int);
-    method @NonNull public Object[] toArray();
-    method @NonNull public <T> T[] toArray(@NonNull T[]);
-  }
-
-  public class CopyOnWriteArraySet<E> extends java.util.AbstractSet<E> implements java.io.Serializable {
-    ctor public CopyOnWriteArraySet();
-    ctor public CopyOnWriteArraySet(java.util.Collection<? extends E>);
-    method public void forEach(java.util.function.Consumer<? super E>);
-    method public java.util.Iterator<E> iterator();
-    method public int size();
-  }
-
-  public class CountDownLatch {
-    ctor public CountDownLatch(int);
-    method public void await() throws java.lang.InterruptedException;
-    method public boolean await(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public void countDown();
-    method public long getCount();
-  }
-
-  public abstract class CountedCompleter<T> extends java.util.concurrent.ForkJoinTask<T> {
-    ctor protected CountedCompleter(java.util.concurrent.CountedCompleter<?>, int);
-    ctor protected CountedCompleter(java.util.concurrent.CountedCompleter<?>);
-    ctor protected CountedCompleter();
-    method public final void addToPendingCount(int);
-    method public final boolean compareAndSetPendingCount(int, int);
-    method public void complete(T);
-    method public abstract void compute();
-    method public final int decrementPendingCountUnlessZero();
-    method protected final boolean exec();
-    method public final java.util.concurrent.CountedCompleter<?> firstComplete();
-    method public final java.util.concurrent.CountedCompleter<?> getCompleter();
-    method public final int getPendingCount();
-    method public T getRawResult();
-    method public final java.util.concurrent.CountedCompleter<?> getRoot();
-    method public final void helpComplete(int);
-    method public final java.util.concurrent.CountedCompleter<?> nextComplete();
-    method public void onCompletion(java.util.concurrent.CountedCompleter<?>);
-    method public boolean onExceptionalCompletion(Throwable, java.util.concurrent.CountedCompleter<?>);
-    method public final void propagateCompletion();
-    method public final void quietlyCompleteRoot();
-    method public final void setPendingCount(int);
-    method protected void setRawResult(T);
-    method public final void tryComplete();
-  }
-
-  public class CyclicBarrier {
-    ctor public CyclicBarrier(int, Runnable);
-    ctor public CyclicBarrier(int);
-    method public int await() throws java.util.concurrent.BrokenBarrierException, java.lang.InterruptedException;
-    method public int await(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.BrokenBarrierException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
-    method public int getNumberWaiting();
-    method public int getParties();
-    method public boolean isBroken();
-    method public void reset();
-  }
-
-  public class DelayQueue<E extends java.util.concurrent.Delayed> extends java.util.AbstractQueue<E> implements java.util.concurrent.BlockingQueue<E> {
-    ctor public DelayQueue();
-    ctor public DelayQueue(java.util.Collection<? extends E>);
-    method public int drainTo(java.util.Collection<? super E>);
-    method public int drainTo(java.util.Collection<? super E>, int);
-    method public java.util.Iterator<E> iterator();
-    method public boolean offer(E);
-    method public boolean offer(E, long, java.util.concurrent.TimeUnit);
-    method public E peek();
-    method public E poll();
-    method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public void put(E);
-    method public int remainingCapacity();
-    method public int size();
-    method public E take() throws java.lang.InterruptedException;
-  }
-
-  public interface Delayed extends java.lang.Comparable<java.util.concurrent.Delayed> {
-    method public long getDelay(java.util.concurrent.TimeUnit);
-  }
-
-  public class Exchanger<V> {
-    ctor public Exchanger();
-    method public V exchange(V) throws java.lang.InterruptedException;
-    method public V exchange(V, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException, java.util.concurrent.TimeoutException;
-  }
-
-  public class ExecutionException extends java.lang.Exception {
-    ctor protected ExecutionException();
-    ctor protected ExecutionException(String);
-    ctor public ExecutionException(String, Throwable);
-    ctor public ExecutionException(Throwable);
-  }
-
-  public interface Executor {
-    method public void execute(Runnable);
-  }
-
-  public class ExecutorCompletionService<V> implements java.util.concurrent.CompletionService<V> {
-    ctor public ExecutorCompletionService(java.util.concurrent.Executor);
-    ctor public ExecutorCompletionService(java.util.concurrent.Executor, java.util.concurrent.BlockingQueue<java.util.concurrent.Future<V>>);
-    method public java.util.concurrent.Future<V> poll();
-    method public java.util.concurrent.Future<V> poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public java.util.concurrent.Future<V> submit(java.util.concurrent.Callable<V>);
-    method public java.util.concurrent.Future<V> submit(Runnable, V);
-    method public java.util.concurrent.Future<V> take() throws java.lang.InterruptedException;
-  }
-
-  public interface ExecutorService extends java.util.concurrent.Executor {
-    method public boolean awaitTermination(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>>) throws java.lang.InterruptedException;
-    method public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>>, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>>) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
-    method public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>>, long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
-    method public boolean isShutdown();
-    method public boolean isTerminated();
-    method public void shutdown();
-    method public java.util.List<java.lang.Runnable> shutdownNow();
-    method public <T> java.util.concurrent.Future<T> submit(java.util.concurrent.Callable<T>);
-    method public <T> java.util.concurrent.Future<T> submit(Runnable, T);
-    method public java.util.concurrent.Future<?> submit(Runnable);
-  }
-
-  public class Executors {
-    method public static <T> java.util.concurrent.Callable<T> callable(Runnable, T);
-    method public static java.util.concurrent.Callable<java.lang.Object> callable(Runnable);
-    method public static java.util.concurrent.Callable<java.lang.Object> callable(java.security.PrivilegedAction<?>);
-    method public static java.util.concurrent.Callable<java.lang.Object> callable(java.security.PrivilegedExceptionAction<?>);
-    method public static java.util.concurrent.ThreadFactory defaultThreadFactory();
-    method public static java.util.concurrent.ExecutorService newCachedThreadPool();
-    method public static java.util.concurrent.ExecutorService newCachedThreadPool(java.util.concurrent.ThreadFactory);
-    method public static java.util.concurrent.ExecutorService newFixedThreadPool(int);
-    method public static java.util.concurrent.ExecutorService newFixedThreadPool(int, java.util.concurrent.ThreadFactory);
-    method public static java.util.concurrent.ScheduledExecutorService newScheduledThreadPool(int);
-    method public static java.util.concurrent.ScheduledExecutorService newScheduledThreadPool(int, java.util.concurrent.ThreadFactory);
-    method public static java.util.concurrent.ExecutorService newSingleThreadExecutor();
-    method public static java.util.concurrent.ExecutorService newSingleThreadExecutor(java.util.concurrent.ThreadFactory);
-    method public static java.util.concurrent.ScheduledExecutorService newSingleThreadScheduledExecutor();
-    method public static java.util.concurrent.ScheduledExecutorService newSingleThreadScheduledExecutor(java.util.concurrent.ThreadFactory);
-    method public static java.util.concurrent.ExecutorService newWorkStealingPool(int);
-    method public static java.util.concurrent.ExecutorService newWorkStealingPool();
-    method public static <T> java.util.concurrent.Callable<T> privilegedCallable(java.util.concurrent.Callable<T>);
-    method public static <T> java.util.concurrent.Callable<T> privilegedCallableUsingCurrentClassLoader(java.util.concurrent.Callable<T>);
-    method public static java.util.concurrent.ThreadFactory privilegedThreadFactory();
-    method public static java.util.concurrent.ExecutorService unconfigurableExecutorService(java.util.concurrent.ExecutorService);
-    method public static java.util.concurrent.ScheduledExecutorService unconfigurableScheduledExecutorService(java.util.concurrent.ScheduledExecutorService);
-  }
-
-  public final class Flow {
-    method public static int defaultBufferSize();
-  }
-
-  public static interface Flow.Processor<T, R> extends java.util.concurrent.Flow.Subscriber<T> java.util.concurrent.Flow.Publisher<R> {
-  }
-
-  @java.lang.FunctionalInterface public static interface Flow.Publisher<T> {
-    method public void subscribe(java.util.concurrent.Flow.Subscriber<? super T>);
-  }
-
-  public static interface Flow.Subscriber<T> {
-    method public void onComplete();
-    method public void onError(Throwable);
-    method public void onNext(T);
-    method public void onSubscribe(java.util.concurrent.Flow.Subscription);
-  }
-
-  public static interface Flow.Subscription {
-    method public void cancel();
-    method public void request(long);
-  }
-
-  public class ForkJoinPool extends java.util.concurrent.AbstractExecutorService {
-    ctor public ForkJoinPool();
-    ctor public ForkJoinPool(int);
-    ctor public ForkJoinPool(int, java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory, java.lang.Thread.UncaughtExceptionHandler, boolean);
-    method public boolean awaitQuiescence(long, java.util.concurrent.TimeUnit);
-    method public boolean awaitTermination(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public static java.util.concurrent.ForkJoinPool commonPool();
-    method protected int drainTasksTo(java.util.Collection<? super java.util.concurrent.ForkJoinTask<?>>);
-    method public void execute(java.util.concurrent.ForkJoinTask<?>);
-    method public void execute(Runnable);
-    method public int getActiveThreadCount();
-    method public boolean getAsyncMode();
-    method public static int getCommonPoolParallelism();
-    method public java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory getFactory();
-    method public int getParallelism();
-    method public int getPoolSize();
-    method public int getQueuedSubmissionCount();
-    method public long getQueuedTaskCount();
-    method public int getRunningThreadCount();
-    method public long getStealCount();
-    method public java.lang.Thread.UncaughtExceptionHandler getUncaughtExceptionHandler();
-    method public boolean hasQueuedSubmissions();
-    method public <T> T invoke(java.util.concurrent.ForkJoinTask<T>);
-    method public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>>);
-    method public boolean isQuiescent();
-    method public boolean isShutdown();
-    method public boolean isTerminated();
-    method public boolean isTerminating();
-    method public static void managedBlock(java.util.concurrent.ForkJoinPool.ManagedBlocker) throws java.lang.InterruptedException;
-    method protected java.util.concurrent.ForkJoinTask<?> pollSubmission();
-    method public void shutdown();
-    method public java.util.List<java.lang.Runnable> shutdownNow();
-    method public <T> java.util.concurrent.ForkJoinTask<T> submit(java.util.concurrent.ForkJoinTask<T>);
-    method public <T> java.util.concurrent.ForkJoinTask<T> submit(java.util.concurrent.Callable<T>);
-    method public <T> java.util.concurrent.ForkJoinTask<T> submit(Runnable, T);
-    method public java.util.concurrent.ForkJoinTask<?> submit(Runnable);
-    field public static final java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory defaultForkJoinWorkerThreadFactory;
-  }
-
-  public static interface ForkJoinPool.ForkJoinWorkerThreadFactory {
-    method public java.util.concurrent.ForkJoinWorkerThread newThread(java.util.concurrent.ForkJoinPool);
-  }
-
-  public static interface ForkJoinPool.ManagedBlocker {
-    method public boolean block() throws java.lang.InterruptedException;
-    method public boolean isReleasable();
-  }
-
-  public abstract class ForkJoinTask<V> implements java.util.concurrent.Future<V> java.io.Serializable {
-    ctor public ForkJoinTask();
-    method public static java.util.concurrent.ForkJoinTask<?> adapt(Runnable);
-    method public static <T> java.util.concurrent.ForkJoinTask<T> adapt(Runnable, T);
-    method public static <T> java.util.concurrent.ForkJoinTask<T> adapt(java.util.concurrent.Callable<? extends T>);
-    method public boolean cancel(boolean);
-    method public final boolean compareAndSetForkJoinTaskTag(short, short);
-    method public void complete(V);
-    method public void completeExceptionally(Throwable);
-    method protected abstract boolean exec();
-    method public final java.util.concurrent.ForkJoinTask<V> fork();
-    method public final V get() throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
-    method public final V get(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
-    method public final Throwable getException();
-    method public final short getForkJoinTaskTag();
-    method public static java.util.concurrent.ForkJoinPool getPool();
-    method public static int getQueuedTaskCount();
-    method public abstract V getRawResult();
-    method public static int getSurplusQueuedTaskCount();
-    method public static void helpQuiesce();
-    method public static boolean inForkJoinPool();
-    method public final V invoke();
-    method public static void invokeAll(java.util.concurrent.ForkJoinTask<?>, java.util.concurrent.ForkJoinTask<?>);
-    method public static void invokeAll(java.util.concurrent.ForkJoinTask<?>...);
-    method public static <T extends java.util.concurrent.ForkJoinTask<?>> java.util.Collection<T> invokeAll(java.util.Collection<T>);
-    method public final boolean isCancelled();
-    method public final boolean isCompletedAbnormally();
-    method public final boolean isCompletedNormally();
-    method public final boolean isDone();
-    method public final V join();
-    method protected static java.util.concurrent.ForkJoinTask<?> peekNextLocalTask();
-    method protected static java.util.concurrent.ForkJoinTask<?> pollNextLocalTask();
-    method protected static java.util.concurrent.ForkJoinTask<?> pollTask();
-    method public final void quietlyComplete();
-    method public final void quietlyInvoke();
-    method public final void quietlyJoin();
-    method public void reinitialize();
-    method public final short setForkJoinTaskTag(short);
-    method protected abstract void setRawResult(V);
-    method public boolean tryUnfork();
-  }
-
-  public class ForkJoinWorkerThread extends java.lang.Thread {
-    ctor protected ForkJoinWorkerThread(java.util.concurrent.ForkJoinPool);
-    method public java.util.concurrent.ForkJoinPool getPool();
-    method public int getPoolIndex();
-    method protected void onStart();
-    method protected void onTermination(Throwable);
-  }
-
-  public interface Future<V> {
-    method public boolean cancel(boolean);
-    method public V get() throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
-    method public V get(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
-    method public boolean isCancelled();
-    method public boolean isDone();
-  }
-
-  public class FutureTask<V> implements java.util.concurrent.RunnableFuture<V> {
-    ctor public FutureTask(java.util.concurrent.Callable<V>);
-    ctor public FutureTask(Runnable, V);
-    method public boolean cancel(boolean);
-    method protected void done();
-    method public V get() throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
-    method public V get(long, java.util.concurrent.TimeUnit) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
-    method public boolean isCancelled();
-    method public boolean isDone();
-    method public void run();
-    method protected boolean runAndReset();
-    method protected void set(V);
-    method protected void setException(Throwable);
-  }
-
-  public class LinkedBlockingDeque<E> extends java.util.AbstractQueue<E> implements java.util.concurrent.BlockingDeque<E> java.io.Serializable {
-    ctor public LinkedBlockingDeque();
-    ctor public LinkedBlockingDeque(int);
-    ctor public LinkedBlockingDeque(java.util.Collection<? extends E>);
-    method public void addFirst(E);
-    method public void addLast(E);
-    method public java.util.Iterator<E> descendingIterator();
-    method public int drainTo(java.util.Collection<? super E>);
-    method public int drainTo(java.util.Collection<? super E>, int);
-    method public E getFirst();
-    method public E getLast();
-    method public java.util.Iterator<E> iterator();
-    method public boolean offer(E);
-    method public boolean offer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public boolean offerFirst(E);
-    method public boolean offerFirst(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public boolean offerLast(E);
-    method public boolean offerLast(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public E peek();
-    method public E peekFirst();
-    method public E peekLast();
-    method public E poll();
-    method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public E pollFirst();
-    method public E pollFirst(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public E pollLast();
-    method public E pollLast(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public E pop();
-    method public void push(E);
-    method public void put(E) throws java.lang.InterruptedException;
-    method public void putFirst(E) throws java.lang.InterruptedException;
-    method public void putLast(E) throws java.lang.InterruptedException;
-    method public int remainingCapacity();
-    method public E removeFirst();
-    method public boolean removeFirstOccurrence(Object);
-    method public E removeLast();
-    method public boolean removeLastOccurrence(Object);
-    method public int size();
-    method public E take() throws java.lang.InterruptedException;
-    method public E takeFirst() throws java.lang.InterruptedException;
-    method public E takeLast() throws java.lang.InterruptedException;
-  }
-
-  public class LinkedBlockingQueue<E> extends java.util.AbstractQueue<E> implements java.util.concurrent.BlockingQueue<E> java.io.Serializable {
-    ctor public LinkedBlockingQueue();
-    ctor public LinkedBlockingQueue(int);
-    ctor public LinkedBlockingQueue(java.util.Collection<? extends E>);
-    method public int drainTo(java.util.Collection<? super E>);
-    method public int drainTo(java.util.Collection<? super E>, int);
-    method public java.util.Iterator<E> iterator();
-    method public boolean offer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public boolean offer(E);
-    method public E peek();
-    method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public E poll();
-    method public void put(E) throws java.lang.InterruptedException;
-    method public int remainingCapacity();
-    method public int size();
-    method public E take() throws java.lang.InterruptedException;
-  }
-
-  public class LinkedTransferQueue<E> extends java.util.AbstractQueue<E> implements java.io.Serializable java.util.concurrent.TransferQueue<E> {
-    ctor public LinkedTransferQueue();
-    ctor public LinkedTransferQueue(java.util.Collection<? extends E>);
-    method public int drainTo(java.util.Collection<? super E>);
-    method public int drainTo(java.util.Collection<? super E>, int);
-    method public int getWaitingConsumerCount();
-    method public boolean hasWaitingConsumer();
-    method public java.util.Iterator<E> iterator();
-    method public boolean offer(E, long, java.util.concurrent.TimeUnit);
-    method public boolean offer(E);
-    method public E peek();
-    method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public E poll();
-    method public void put(E);
-    method public int remainingCapacity();
-    method public int size();
-    method public E take() throws java.lang.InterruptedException;
-    method public void transfer(E) throws java.lang.InterruptedException;
-    method public boolean tryTransfer(E);
-    method public boolean tryTransfer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-  }
-
-  public class Phaser {
-    ctor public Phaser();
-    ctor public Phaser(int);
-    ctor public Phaser(java.util.concurrent.Phaser);
-    ctor public Phaser(java.util.concurrent.Phaser, int);
-    method public int arrive();
-    method public int arriveAndAwaitAdvance();
-    method public int arriveAndDeregister();
-    method public int awaitAdvance(int);
-    method public int awaitAdvanceInterruptibly(int) throws java.lang.InterruptedException;
-    method public int awaitAdvanceInterruptibly(int, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException, java.util.concurrent.TimeoutException;
-    method public int bulkRegister(int);
-    method public void forceTermination();
-    method public int getArrivedParties();
-    method public java.util.concurrent.Phaser getParent();
-    method public final int getPhase();
-    method public int getRegisteredParties();
-    method public java.util.concurrent.Phaser getRoot();
-    method public int getUnarrivedParties();
-    method public boolean isTerminated();
-    method protected boolean onAdvance(int, int);
-    method public int register();
-  }
-
-  public class PriorityBlockingQueue<E> extends java.util.AbstractQueue<E> implements java.util.concurrent.BlockingQueue<E> java.io.Serializable {
-    ctor public PriorityBlockingQueue();
-    ctor public PriorityBlockingQueue(int);
-    ctor public PriorityBlockingQueue(int, java.util.Comparator<? super E>);
-    ctor public PriorityBlockingQueue(java.util.Collection<? extends E>);
-    method public java.util.Comparator<? super E> comparator();
-    method public int drainTo(java.util.Collection<? super E>);
-    method public int drainTo(java.util.Collection<? super E>, int);
-    method public java.util.Iterator<E> iterator();
-    method public boolean offer(E);
-    method public boolean offer(E, long, java.util.concurrent.TimeUnit);
-    method public E peek();
-    method public E poll();
-    method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public void put(E);
-    method public int remainingCapacity();
-    method public int size();
-    method public E take() throws java.lang.InterruptedException;
-  }
-
-  public abstract class RecursiveAction extends java.util.concurrent.ForkJoinTask<java.lang.Void> {
-    ctor public RecursiveAction();
-    method protected abstract void compute();
-    method protected final boolean exec();
-    method public final Void getRawResult();
-    method protected final void setRawResult(Void);
-  }
-
-  public abstract class RecursiveTask<V> extends java.util.concurrent.ForkJoinTask<V> {
-    ctor public RecursiveTask();
-    method protected abstract V compute();
-    method protected final boolean exec();
-    method public final V getRawResult();
-    method protected final void setRawResult(V);
-  }
-
-  public class RejectedExecutionException extends java.lang.RuntimeException {
-    ctor public RejectedExecutionException();
-    ctor public RejectedExecutionException(String);
-    ctor public RejectedExecutionException(String, Throwable);
-    ctor public RejectedExecutionException(Throwable);
-  }
-
-  public interface RejectedExecutionHandler {
-    method public void rejectedExecution(Runnable, java.util.concurrent.ThreadPoolExecutor);
-  }
-
-  public interface RunnableFuture<V> extends java.lang.Runnable java.util.concurrent.Future<V> {
-  }
-
-  public interface RunnableScheduledFuture<V> extends java.util.concurrent.RunnableFuture<V> java.util.concurrent.ScheduledFuture<V> {
-    method public boolean isPeriodic();
-  }
-
-  public interface ScheduledExecutorService extends java.util.concurrent.ExecutorService {
-    method public java.util.concurrent.ScheduledFuture<?> schedule(Runnable, long, java.util.concurrent.TimeUnit);
-    method public <V> java.util.concurrent.ScheduledFuture<V> schedule(java.util.concurrent.Callable<V>, long, java.util.concurrent.TimeUnit);
-    method public java.util.concurrent.ScheduledFuture<?> scheduleAtFixedRate(Runnable, long, long, java.util.concurrent.TimeUnit);
-    method public java.util.concurrent.ScheduledFuture<?> scheduleWithFixedDelay(Runnable, long, long, java.util.concurrent.TimeUnit);
-  }
-
-  public interface ScheduledFuture<V> extends java.util.concurrent.Delayed java.util.concurrent.Future<V> {
-  }
-
-  public class ScheduledThreadPoolExecutor extends java.util.concurrent.ThreadPoolExecutor implements java.util.concurrent.ScheduledExecutorService {
-    ctor public ScheduledThreadPoolExecutor(int);
-    ctor public ScheduledThreadPoolExecutor(int, java.util.concurrent.ThreadFactory);
-    ctor public ScheduledThreadPoolExecutor(int, java.util.concurrent.RejectedExecutionHandler);
-    ctor public ScheduledThreadPoolExecutor(int, java.util.concurrent.ThreadFactory, java.util.concurrent.RejectedExecutionHandler);
-    method protected <V> java.util.concurrent.RunnableScheduledFuture<V> decorateTask(Runnable, java.util.concurrent.RunnableScheduledFuture<V>);
-    method protected <V> java.util.concurrent.RunnableScheduledFuture<V> decorateTask(java.util.concurrent.Callable<V>, java.util.concurrent.RunnableScheduledFuture<V>);
-    method public boolean getContinueExistingPeriodicTasksAfterShutdownPolicy();
-    method public boolean getExecuteExistingDelayedTasksAfterShutdownPolicy();
-    method public boolean getRemoveOnCancelPolicy();
-    method public java.util.concurrent.ScheduledFuture<?> schedule(Runnable, long, java.util.concurrent.TimeUnit);
-    method public <V> java.util.concurrent.ScheduledFuture<V> schedule(java.util.concurrent.Callable<V>, long, java.util.concurrent.TimeUnit);
-    method public java.util.concurrent.ScheduledFuture<?> scheduleAtFixedRate(Runnable, long, long, java.util.concurrent.TimeUnit);
-    method public java.util.concurrent.ScheduledFuture<?> scheduleWithFixedDelay(Runnable, long, long, java.util.concurrent.TimeUnit);
-    method public void setContinueExistingPeriodicTasksAfterShutdownPolicy(boolean);
-    method public void setExecuteExistingDelayedTasksAfterShutdownPolicy(boolean);
-    method public void setRemoveOnCancelPolicy(boolean);
-  }
-
-  public class Semaphore implements java.io.Serializable {
-    ctor public Semaphore(int);
-    ctor public Semaphore(int, boolean);
-    method public void acquire() throws java.lang.InterruptedException;
-    method public void acquire(int) throws java.lang.InterruptedException;
-    method public void acquireUninterruptibly();
-    method public void acquireUninterruptibly(int);
-    method public int availablePermits();
-    method public int drainPermits();
-    method public final int getQueueLength();
-    method protected java.util.Collection<java.lang.Thread> getQueuedThreads();
-    method public final boolean hasQueuedThreads();
-    method public boolean isFair();
-    method protected void reducePermits(int);
-    method public void release();
-    method public void release(int);
-    method public boolean tryAcquire();
-    method public boolean tryAcquire(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public boolean tryAcquire(int);
-    method public boolean tryAcquire(int, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-  }
-
-  public class SynchronousQueue<E> extends java.util.AbstractQueue<E> implements java.util.concurrent.BlockingQueue<E> java.io.Serializable {
-    ctor public SynchronousQueue();
-    ctor public SynchronousQueue(boolean);
-    method public int drainTo(java.util.Collection<? super E>);
-    method public int drainTo(java.util.Collection<? super E>, int);
-    method public java.util.Iterator<E> iterator();
-    method public boolean offer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public boolean offer(E);
-    method public E peek();
-    method public E poll(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public E poll();
-    method public void put(E) throws java.lang.InterruptedException;
-    method public int remainingCapacity();
-    method public int size();
-    method public E take() throws java.lang.InterruptedException;
-  }
-
-  public interface ThreadFactory {
-    method public Thread newThread(Runnable);
-  }
-
-  public class ThreadLocalRandom extends java.util.Random {
-    method public static java.util.concurrent.ThreadLocalRandom current();
-    method public double nextDouble(double);
-    method public double nextDouble(double, double);
-    method public int nextInt(int, int);
-    method public long nextLong(long);
-    method public long nextLong(long, long);
-  }
-
-  public class ThreadPoolExecutor extends java.util.concurrent.AbstractExecutorService {
-    ctor public ThreadPoolExecutor(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue<java.lang.Runnable>);
-    ctor public ThreadPoolExecutor(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue<java.lang.Runnable>, java.util.concurrent.ThreadFactory);
-    ctor public ThreadPoolExecutor(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue<java.lang.Runnable>, java.util.concurrent.RejectedExecutionHandler);
-    ctor public ThreadPoolExecutor(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue<java.lang.Runnable>, java.util.concurrent.ThreadFactory, java.util.concurrent.RejectedExecutionHandler);
-    method protected void afterExecute(Runnable, Throwable);
-    method public void allowCoreThreadTimeOut(boolean);
-    method public boolean allowsCoreThreadTimeOut();
-    method public boolean awaitTermination(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method protected void beforeExecute(Thread, Runnable);
-    method public void execute(Runnable);
-    method protected void finalize();
-    method public int getActiveCount();
-    method public long getCompletedTaskCount();
-    method public int getCorePoolSize();
-    method public long getKeepAliveTime(java.util.concurrent.TimeUnit);
-    method public int getLargestPoolSize();
-    method public int getMaximumPoolSize();
-    method public int getPoolSize();
-    method public java.util.concurrent.BlockingQueue<java.lang.Runnable> getQueue();
-    method public java.util.concurrent.RejectedExecutionHandler getRejectedExecutionHandler();
-    method public long getTaskCount();
-    method public java.util.concurrent.ThreadFactory getThreadFactory();
-    method public boolean isShutdown();
-    method public boolean isTerminated();
-    method public boolean isTerminating();
-    method public int prestartAllCoreThreads();
-    method public boolean prestartCoreThread();
-    method public void purge();
-    method public boolean remove(Runnable);
-    method public void setCorePoolSize(int);
-    method public void setKeepAliveTime(long, java.util.concurrent.TimeUnit);
-    method public void setMaximumPoolSize(int);
-    method public void setRejectedExecutionHandler(java.util.concurrent.RejectedExecutionHandler);
-    method public void setThreadFactory(java.util.concurrent.ThreadFactory);
-    method public void shutdown();
-    method public java.util.List<java.lang.Runnable> shutdownNow();
-    method protected void terminated();
-  }
-
-  public static class ThreadPoolExecutor.AbortPolicy implements java.util.concurrent.RejectedExecutionHandler {
-    ctor public ThreadPoolExecutor.AbortPolicy();
-    method public void rejectedExecution(Runnable, java.util.concurrent.ThreadPoolExecutor);
-  }
-
-  public static class ThreadPoolExecutor.CallerRunsPolicy implements java.util.concurrent.RejectedExecutionHandler {
-    ctor public ThreadPoolExecutor.CallerRunsPolicy();
-    method public void rejectedExecution(Runnable, java.util.concurrent.ThreadPoolExecutor);
-  }
-
-  public static class ThreadPoolExecutor.DiscardOldestPolicy implements java.util.concurrent.RejectedExecutionHandler {
-    ctor public ThreadPoolExecutor.DiscardOldestPolicy();
-    method public void rejectedExecution(Runnable, java.util.concurrent.ThreadPoolExecutor);
-  }
-
-  public static class ThreadPoolExecutor.DiscardPolicy implements java.util.concurrent.RejectedExecutionHandler {
-    ctor public ThreadPoolExecutor.DiscardPolicy();
-    method public void rejectedExecution(Runnable, java.util.concurrent.ThreadPoolExecutor);
-  }
-
-  public enum TimeUnit {
-    method public long convert(long, java.util.concurrent.TimeUnit);
-    method public void sleep(long) throws java.lang.InterruptedException;
-    method public void timedJoin(Thread, long) throws java.lang.InterruptedException;
-    method public void timedWait(Object, long) throws java.lang.InterruptedException;
-    method public long toDays(long);
-    method public long toHours(long);
-    method public long toMicros(long);
-    method public long toMillis(long);
-    method public long toMinutes(long);
-    method public long toNanos(long);
-    method public long toSeconds(long);
-    enum_constant public static final java.util.concurrent.TimeUnit DAYS;
-    enum_constant public static final java.util.concurrent.TimeUnit HOURS;
-    enum_constant public static final java.util.concurrent.TimeUnit MICROSECONDS;
-    enum_constant public static final java.util.concurrent.TimeUnit MILLISECONDS;
-    enum_constant public static final java.util.concurrent.TimeUnit MINUTES;
-    enum_constant public static final java.util.concurrent.TimeUnit NANOSECONDS;
-    enum_constant public static final java.util.concurrent.TimeUnit SECONDS;
-  }
-
-  public class TimeoutException extends java.lang.Exception {
-    ctor public TimeoutException();
-    ctor public TimeoutException(String);
-  }
-
-  public interface TransferQueue<E> extends java.util.concurrent.BlockingQueue<E> {
-    method public int getWaitingConsumerCount();
-    method public boolean hasWaitingConsumer();
-    method public void transfer(E) throws java.lang.InterruptedException;
-    method public boolean tryTransfer(E);
-    method public boolean tryTransfer(E, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-  }
-
-}
-
-package java.util.concurrent.atomic {
-
-  public class AtomicBoolean implements java.io.Serializable {
-    ctor public AtomicBoolean(boolean);
-    ctor public AtomicBoolean();
-    method public final boolean compareAndSet(boolean, boolean);
-    method public final boolean get();
-    method public final boolean getAndSet(boolean);
-    method public final void lazySet(boolean);
-    method public final void set(boolean);
-    method public boolean weakCompareAndSet(boolean, boolean);
-  }
-
-  public class AtomicInteger extends java.lang.Number implements java.io.Serializable {
-    ctor public AtomicInteger(int);
-    ctor public AtomicInteger();
-    method public final int accumulateAndGet(int, java.util.function.IntBinaryOperator);
-    method public final int addAndGet(int);
-    method public final boolean compareAndSet(int, int);
-    method public final int decrementAndGet();
-    method public double doubleValue();
-    method public float floatValue();
-    method public final int get();
-    method public final int getAndAccumulate(int, java.util.function.IntBinaryOperator);
-    method public final int getAndAdd(int);
-    method public final int getAndDecrement();
-    method public final int getAndIncrement();
-    method public final int getAndSet(int);
-    method public final int getAndUpdate(java.util.function.IntUnaryOperator);
-    method public final int incrementAndGet();
-    method public int intValue();
-    method public final void lazySet(int);
-    method public long longValue();
-    method public final void set(int);
-    method public final int updateAndGet(java.util.function.IntUnaryOperator);
-    method public final boolean weakCompareAndSet(int, int);
-  }
-
-  public class AtomicIntegerArray implements java.io.Serializable {
-    ctor public AtomicIntegerArray(int);
-    ctor public AtomicIntegerArray(int[]);
-    method public final int accumulateAndGet(int, int, java.util.function.IntBinaryOperator);
-    method public final int addAndGet(int, int);
-    method public final boolean compareAndSet(int, int, int);
-    method public final int decrementAndGet(int);
-    method public final int get(int);
-    method public final int getAndAccumulate(int, int, java.util.function.IntBinaryOperator);
-    method public final int getAndAdd(int, int);
-    method public final int getAndDecrement(int);
-    method public final int getAndIncrement(int);
-    method public final int getAndSet(int, int);
-    method public final int getAndUpdate(int, java.util.function.IntUnaryOperator);
-    method public final int incrementAndGet(int);
-    method public final void lazySet(int, int);
-    method public final int length();
-    method public final void set(int, int);
-    method public final int updateAndGet(int, java.util.function.IntUnaryOperator);
-    method public final boolean weakCompareAndSet(int, int, int);
-  }
-
-  public abstract class AtomicIntegerFieldUpdater<T> {
-    ctor protected AtomicIntegerFieldUpdater();
-    method public final int accumulateAndGet(T, int, java.util.function.IntBinaryOperator);
-    method public int addAndGet(T, int);
-    method public abstract boolean compareAndSet(T, int, int);
-    method public int decrementAndGet(T);
-    method public abstract int get(T);
-    method public final int getAndAccumulate(T, int, java.util.function.IntBinaryOperator);
-    method public int getAndAdd(T, int);
-    method public int getAndDecrement(T);
-    method public int getAndIncrement(T);
-    method public int getAndSet(T, int);
-    method public final int getAndUpdate(T, java.util.function.IntUnaryOperator);
-    method public int incrementAndGet(T);
-    method public abstract void lazySet(T, int);
-    method public static <U> java.util.concurrent.atomic.AtomicIntegerFieldUpdater<U> newUpdater(Class<U>, String);
-    method public abstract void set(T, int);
-    method public final int updateAndGet(T, java.util.function.IntUnaryOperator);
-    method public abstract boolean weakCompareAndSet(T, int, int);
-  }
-
-  public class AtomicLong extends java.lang.Number implements java.io.Serializable {
-    ctor public AtomicLong(long);
-    ctor public AtomicLong();
-    method public final long accumulateAndGet(long, java.util.function.LongBinaryOperator);
-    method public final long addAndGet(long);
-    method public final boolean compareAndSet(long, long);
-    method public final long decrementAndGet();
-    method public double doubleValue();
-    method public float floatValue();
-    method public final long get();
-    method public final long getAndAccumulate(long, java.util.function.LongBinaryOperator);
-    method public final long getAndAdd(long);
-    method public final long getAndDecrement();
-    method public final long getAndIncrement();
-    method public final long getAndSet(long);
-    method public final long getAndUpdate(java.util.function.LongUnaryOperator);
-    method public final long incrementAndGet();
-    method public int intValue();
-    method public final void lazySet(long);
-    method public long longValue();
-    method public final void set(long);
-    method public final long updateAndGet(java.util.function.LongUnaryOperator);
-    method public final boolean weakCompareAndSet(long, long);
-  }
-
-  public class AtomicLongArray implements java.io.Serializable {
-    ctor public AtomicLongArray(int);
-    ctor public AtomicLongArray(long[]);
-    method public final long accumulateAndGet(int, long, java.util.function.LongBinaryOperator);
-    method public long addAndGet(int, long);
-    method public final boolean compareAndSet(int, long, long);
-    method public final long decrementAndGet(int);
-    method public final long get(int);
-    method public final long getAndAccumulate(int, long, java.util.function.LongBinaryOperator);
-    method public final long getAndAdd(int, long);
-    method public final long getAndDecrement(int);
-    method public final long getAndIncrement(int);
-    method public final long getAndSet(int, long);
-    method public final long getAndUpdate(int, java.util.function.LongUnaryOperator);
-    method public final long incrementAndGet(int);
-    method public final void lazySet(int, long);
-    method public final int length();
-    method public final void set(int, long);
-    method public final long updateAndGet(int, java.util.function.LongUnaryOperator);
-    method public final boolean weakCompareAndSet(int, long, long);
-  }
-
-  public abstract class AtomicLongFieldUpdater<T> {
-    ctor protected AtomicLongFieldUpdater();
-    method public final long accumulateAndGet(T, long, java.util.function.LongBinaryOperator);
-    method public long addAndGet(T, long);
-    method public abstract boolean compareAndSet(T, long, long);
-    method public long decrementAndGet(T);
-    method public abstract long get(T);
-    method public final long getAndAccumulate(T, long, java.util.function.LongBinaryOperator);
-    method public long getAndAdd(T, long);
-    method public long getAndDecrement(T);
-    method public long getAndIncrement(T);
-    method public long getAndSet(T, long);
-    method public final long getAndUpdate(T, java.util.function.LongUnaryOperator);
-    method public long incrementAndGet(T);
-    method public abstract void lazySet(T, long);
-    method public static <U> java.util.concurrent.atomic.AtomicLongFieldUpdater<U> newUpdater(Class<U>, String);
-    method public abstract void set(T, long);
-    method public final long updateAndGet(T, java.util.function.LongUnaryOperator);
-    method public abstract boolean weakCompareAndSet(T, long, long);
-  }
-
-  public class AtomicMarkableReference<V> {
-    ctor public AtomicMarkableReference(V, boolean);
-    method public boolean attemptMark(V, boolean);
-    method public boolean compareAndSet(V, V, boolean, boolean);
-    method public V get(boolean[]);
-    method public V getReference();
-    method public boolean isMarked();
-    method public void set(V, boolean);
-    method public boolean weakCompareAndSet(V, V, boolean, boolean);
-  }
-
-  public class AtomicReference<V> implements java.io.Serializable {
-    ctor public AtomicReference(V);
-    ctor public AtomicReference();
-    method public final V accumulateAndGet(V, java.util.function.BinaryOperator<V>);
-    method public final boolean compareAndSet(V, V);
-    method public final V get();
-    method public final V getAndAccumulate(V, java.util.function.BinaryOperator<V>);
-    method public final V getAndSet(V);
-    method public final V getAndUpdate(java.util.function.UnaryOperator<V>);
-    method public final void lazySet(V);
-    method public final void set(V);
-    method public final V updateAndGet(java.util.function.UnaryOperator<V>);
-    method public final boolean weakCompareAndSet(V, V);
-  }
-
-  public class AtomicReferenceArray<E> implements java.io.Serializable {
-    ctor public AtomicReferenceArray(int);
-    ctor public AtomicReferenceArray(E[]);
-    method public final E accumulateAndGet(int, E, java.util.function.BinaryOperator<E>);
-    method public final boolean compareAndSet(int, E, E);
-    method public final E get(int);
-    method public final E getAndAccumulate(int, E, java.util.function.BinaryOperator<E>);
-    method public final E getAndSet(int, E);
-    method public final E getAndUpdate(int, java.util.function.UnaryOperator<E>);
-    method public final void lazySet(int, E);
-    method public final int length();
-    method public final void set(int, E);
-    method public final E updateAndGet(int, java.util.function.UnaryOperator<E>);
-    method public final boolean weakCompareAndSet(int, E, E);
-  }
-
-  public abstract class AtomicReferenceFieldUpdater<T, V> {
-    ctor protected AtomicReferenceFieldUpdater();
-    method public final V accumulateAndGet(T, V, java.util.function.BinaryOperator<V>);
-    method public abstract boolean compareAndSet(T, V, V);
-    method public abstract V get(T);
-    method public final V getAndAccumulate(T, V, java.util.function.BinaryOperator<V>);
-    method public V getAndSet(T, V);
-    method public final V getAndUpdate(T, java.util.function.UnaryOperator<V>);
-    method public abstract void lazySet(T, V);
-    method public static <U, W> java.util.concurrent.atomic.AtomicReferenceFieldUpdater<U,W> newUpdater(Class<U>, Class<W>, String);
-    method public abstract void set(T, V);
-    method public final V updateAndGet(T, java.util.function.UnaryOperator<V>);
-    method public abstract boolean weakCompareAndSet(T, V, V);
-  }
-
-  public class AtomicStampedReference<V> {
-    ctor public AtomicStampedReference(V, int);
-    method public boolean attemptStamp(V, int);
-    method public boolean compareAndSet(V, V, int, int);
-    method public V get(int[]);
-    method public V getReference();
-    method public int getStamp();
-    method public void set(V, int);
-    method public boolean weakCompareAndSet(V, V, int, int);
-  }
-
-  public class DoubleAccumulator extends java.lang.Number implements java.io.Serializable {
-    ctor public DoubleAccumulator(java.util.function.DoubleBinaryOperator, double);
-    method public void accumulate(double);
-    method public double doubleValue();
-    method public float floatValue();
-    method public double get();
-    method public double getThenReset();
-    method public int intValue();
-    method public long longValue();
-    method public void reset();
-  }
-
-  public class DoubleAdder extends java.lang.Number implements java.io.Serializable {
-    ctor public DoubleAdder();
-    method public void add(double);
-    method public double doubleValue();
-    method public float floatValue();
-    method public int intValue();
-    method public long longValue();
-    method public void reset();
-    method public double sum();
-    method public double sumThenReset();
-  }
-
-  public class LongAccumulator extends java.lang.Number implements java.io.Serializable {
-    ctor public LongAccumulator(java.util.function.LongBinaryOperator, long);
-    method public void accumulate(long);
-    method public double doubleValue();
-    method public float floatValue();
-    method public long get();
-    method public long getThenReset();
-    method public int intValue();
-    method public long longValue();
-    method public void reset();
-  }
-
-  public class LongAdder extends java.lang.Number implements java.io.Serializable {
-    ctor public LongAdder();
-    method public void add(long);
-    method public void decrement();
-    method public double doubleValue();
-    method public float floatValue();
-    method public void increment();
-    method public int intValue();
-    method public long longValue();
-    method public void reset();
-    method public long sum();
-    method public long sumThenReset();
-  }
-
-}
-
-package java.util.concurrent.locks {
-
-  public abstract class AbstractOwnableSynchronizer implements java.io.Serializable {
-    ctor protected AbstractOwnableSynchronizer();
-    method protected final Thread getExclusiveOwnerThread();
-    method protected final void setExclusiveOwnerThread(Thread);
-  }
-
-  public abstract class AbstractQueuedLongSynchronizer extends java.util.concurrent.locks.AbstractOwnableSynchronizer implements java.io.Serializable {
-    ctor protected AbstractQueuedLongSynchronizer();
-    method public final void acquire(long);
-    method public final void acquireInterruptibly(long) throws java.lang.InterruptedException;
-    method public final void acquireShared(long);
-    method public final void acquireSharedInterruptibly(long) throws java.lang.InterruptedException;
-    method protected final boolean compareAndSetState(long, long);
-    method public final java.util.Collection<java.lang.Thread> getExclusiveQueuedThreads();
-    method public final Thread getFirstQueuedThread();
-    method public final int getQueueLength();
-    method public final java.util.Collection<java.lang.Thread> getQueuedThreads();
-    method public final java.util.Collection<java.lang.Thread> getSharedQueuedThreads();
-    method protected final long getState();
-    method public final int getWaitQueueLength(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.ConditionObject);
-    method public final java.util.Collection<java.lang.Thread> getWaitingThreads(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.ConditionObject);
-    method public final boolean hasContended();
-    method public final boolean hasQueuedPredecessors();
-    method public final boolean hasQueuedThreads();
-    method public final boolean hasWaiters(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.ConditionObject);
-    method protected boolean isHeldExclusively();
-    method public final boolean isQueued(Thread);
-    method public final boolean owns(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.ConditionObject);
-    method public final boolean release(long);
-    method public final boolean releaseShared(long);
-    method protected final void setState(long);
-    method protected boolean tryAcquire(long);
-    method public final boolean tryAcquireNanos(long, long) throws java.lang.InterruptedException;
-    method protected long tryAcquireShared(long);
-    method public final boolean tryAcquireSharedNanos(long, long) throws java.lang.InterruptedException;
-    method protected boolean tryRelease(long);
-    method protected boolean tryReleaseShared(long);
-  }
-
-  public class AbstractQueuedLongSynchronizer.ConditionObject implements java.util.concurrent.locks.Condition java.io.Serializable {
-    ctor public AbstractQueuedLongSynchronizer.ConditionObject();
-    method public final void await() throws java.lang.InterruptedException;
-    method public final boolean await(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public final long awaitNanos(long) throws java.lang.InterruptedException;
-    method public final void awaitUninterruptibly();
-    method public final boolean awaitUntil(java.util.Date) throws java.lang.InterruptedException;
-    method protected final int getWaitQueueLength();
-    method protected final java.util.Collection<java.lang.Thread> getWaitingThreads();
-    method protected final boolean hasWaiters();
-    method public final void signal();
-    method public final void signalAll();
-  }
-
-  public abstract class AbstractQueuedSynchronizer extends java.util.concurrent.locks.AbstractOwnableSynchronizer implements java.io.Serializable {
-    ctor protected AbstractQueuedSynchronizer();
-    method public final void acquire(int);
-    method public final void acquireInterruptibly(int) throws java.lang.InterruptedException;
-    method public final void acquireShared(int);
-    method public final void acquireSharedInterruptibly(int) throws java.lang.InterruptedException;
-    method protected final boolean compareAndSetState(int, int);
-    method public final java.util.Collection<java.lang.Thread> getExclusiveQueuedThreads();
-    method public final Thread getFirstQueuedThread();
-    method public final int getQueueLength();
-    method public final java.util.Collection<java.lang.Thread> getQueuedThreads();
-    method public final java.util.Collection<java.lang.Thread> getSharedQueuedThreads();
-    method protected final int getState();
-    method public final int getWaitQueueLength(java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject);
-    method public final java.util.Collection<java.lang.Thread> getWaitingThreads(java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject);
-    method public final boolean hasContended();
-    method public final boolean hasQueuedPredecessors();
-    method public final boolean hasQueuedThreads();
-    method public final boolean hasWaiters(java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject);
-    method protected boolean isHeldExclusively();
-    method public final boolean isQueued(Thread);
-    method public final boolean owns(java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject);
-    method public final boolean release(int);
-    method public final boolean releaseShared(int);
-    method protected final void setState(int);
-    method protected boolean tryAcquire(int);
-    method public final boolean tryAcquireNanos(int, long) throws java.lang.InterruptedException;
-    method protected int tryAcquireShared(int);
-    method public final boolean tryAcquireSharedNanos(int, long) throws java.lang.InterruptedException;
-    method protected boolean tryRelease(int);
-    method protected boolean tryReleaseShared(int);
-  }
-
-  public class AbstractQueuedSynchronizer.ConditionObject implements java.util.concurrent.locks.Condition java.io.Serializable {
-    ctor public AbstractQueuedSynchronizer.ConditionObject();
-    method public final void await() throws java.lang.InterruptedException;
-    method public final boolean await(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public final long awaitNanos(long) throws java.lang.InterruptedException;
-    method public final void awaitUninterruptibly();
-    method public final boolean awaitUntil(java.util.Date) throws java.lang.InterruptedException;
-    method protected final int getWaitQueueLength();
-    method protected final java.util.Collection<java.lang.Thread> getWaitingThreads();
-    method protected final boolean hasWaiters();
-    method public final void signal();
-    method public final void signalAll();
-  }
-
-  public interface Condition {
-    method public void await() throws java.lang.InterruptedException;
-    method public boolean await(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public long awaitNanos(long) throws java.lang.InterruptedException;
-    method public void awaitUninterruptibly();
-    method public boolean awaitUntil(java.util.Date) throws java.lang.InterruptedException;
-    method public void signal();
-    method public void signalAll();
-  }
-
-  public interface Lock {
-    method public void lock();
-    method public void lockInterruptibly() throws java.lang.InterruptedException;
-    method public java.util.concurrent.locks.Condition newCondition();
-    method public boolean tryLock();
-    method public boolean tryLock(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public void unlock();
-  }
-
-  public class LockSupport {
-    method public static Object getBlocker(Thread);
-    method public static void park(Object);
-    method public static void park();
-    method public static void parkNanos(Object, long);
-    method public static void parkNanos(long);
-    method public static void parkUntil(Object, long);
-    method public static void parkUntil(long);
-    method public static void unpark(Thread);
-  }
-
-  public interface ReadWriteLock {
-    method public java.util.concurrent.locks.Lock readLock();
-    method public java.util.concurrent.locks.Lock writeLock();
-  }
-
-  public class ReentrantLock implements java.util.concurrent.locks.Lock java.io.Serializable {
-    ctor public ReentrantLock();
-    ctor public ReentrantLock(boolean);
-    method public int getHoldCount();
-    method protected Thread getOwner();
-    method public final int getQueueLength();
-    method protected java.util.Collection<java.lang.Thread> getQueuedThreads();
-    method public int getWaitQueueLength(java.util.concurrent.locks.Condition);
-    method protected java.util.Collection<java.lang.Thread> getWaitingThreads(java.util.concurrent.locks.Condition);
-    method public final boolean hasQueuedThread(Thread);
-    method public final boolean hasQueuedThreads();
-    method public boolean hasWaiters(java.util.concurrent.locks.Condition);
-    method public final boolean isFair();
-    method public boolean isHeldByCurrentThread();
-    method public boolean isLocked();
-    method public void lock();
-    method public void lockInterruptibly() throws java.lang.InterruptedException;
-    method public java.util.concurrent.locks.Condition newCondition();
-    method public boolean tryLock();
-    method public boolean tryLock(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public void unlock();
-  }
-
-  public class ReentrantReadWriteLock implements java.util.concurrent.locks.ReadWriteLock java.io.Serializable {
-    ctor public ReentrantReadWriteLock();
-    ctor public ReentrantReadWriteLock(boolean);
-    method protected Thread getOwner();
-    method public final int getQueueLength();
-    method protected java.util.Collection<java.lang.Thread> getQueuedReaderThreads();
-    method protected java.util.Collection<java.lang.Thread> getQueuedThreads();
-    method protected java.util.Collection<java.lang.Thread> getQueuedWriterThreads();
-    method public int getReadHoldCount();
-    method public int getReadLockCount();
-    method public int getWaitQueueLength(java.util.concurrent.locks.Condition);
-    method protected java.util.Collection<java.lang.Thread> getWaitingThreads(java.util.concurrent.locks.Condition);
-    method public int getWriteHoldCount();
-    method public final boolean hasQueuedThread(Thread);
-    method public final boolean hasQueuedThreads();
-    method public boolean hasWaiters(java.util.concurrent.locks.Condition);
-    method public final boolean isFair();
-    method public boolean isWriteLocked();
-    method public boolean isWriteLockedByCurrentThread();
-    method public java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock readLock();
-    method public java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock writeLock();
-  }
-
-  public static class ReentrantReadWriteLock.ReadLock implements java.util.concurrent.locks.Lock java.io.Serializable {
-    ctor protected ReentrantReadWriteLock.ReadLock(java.util.concurrent.locks.ReentrantReadWriteLock);
-    method public void lock();
-    method public void lockInterruptibly() throws java.lang.InterruptedException;
-    method public java.util.concurrent.locks.Condition newCondition();
-    method public boolean tryLock();
-    method public boolean tryLock(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public void unlock();
-  }
-
-  public static class ReentrantReadWriteLock.WriteLock implements java.util.concurrent.locks.Lock java.io.Serializable {
-    ctor protected ReentrantReadWriteLock.WriteLock(java.util.concurrent.locks.ReentrantReadWriteLock);
-    method public int getHoldCount();
-    method public boolean isHeldByCurrentThread();
-    method public void lock();
-    method public void lockInterruptibly() throws java.lang.InterruptedException;
-    method public java.util.concurrent.locks.Condition newCondition();
-    method public boolean tryLock();
-    method public boolean tryLock(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public void unlock();
-  }
-
-  public class StampedLock implements java.io.Serializable {
-    ctor public StampedLock();
-    method public java.util.concurrent.locks.Lock asReadLock();
-    method public java.util.concurrent.locks.ReadWriteLock asReadWriteLock();
-    method public java.util.concurrent.locks.Lock asWriteLock();
-    method public int getReadLockCount();
-    method public boolean isReadLocked();
-    method public boolean isWriteLocked();
-    method public long readLock();
-    method public long readLockInterruptibly() throws java.lang.InterruptedException;
-    method public long tryConvertToOptimisticRead(long);
-    method public long tryConvertToReadLock(long);
-    method public long tryConvertToWriteLock(long);
-    method public long tryOptimisticRead();
-    method public long tryReadLock();
-    method public long tryReadLock(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public boolean tryUnlockRead();
-    method public boolean tryUnlockWrite();
-    method public long tryWriteLock();
-    method public long tryWriteLock(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException;
-    method public void unlock(long);
-    method public void unlockRead(long);
-    method public void unlockWrite(long);
-    method public boolean validate(long);
-    method public long writeLock();
-    method public long writeLockInterruptibly() throws java.lang.InterruptedException;
-  }
-
-}
-
-package java.util.function {
-
-  @java.lang.FunctionalInterface public interface BiConsumer<T, U> {
-    method public void accept(T, U);
-    method public default java.util.function.BiConsumer<T,U> andThen(java.util.function.BiConsumer<? super T,? super U>);
-  }
-
-  @java.lang.FunctionalInterface public interface BiFunction<T, U, R> {
-    method public default <V> java.util.function.BiFunction<T,U,V> andThen(java.util.function.Function<? super R,? extends V>);
-    method public R apply(T, U);
-  }
-
-  @java.lang.FunctionalInterface public interface BiPredicate<T, U> {
-    method public default java.util.function.BiPredicate<T,U> and(java.util.function.BiPredicate<? super T,? super U>);
-    method public default java.util.function.BiPredicate<T,U> negate();
-    method public default java.util.function.BiPredicate<T,U> or(java.util.function.BiPredicate<? super T,? super U>);
-    method public boolean test(T, U);
-  }
-
-  @java.lang.FunctionalInterface public interface BinaryOperator<T> extends java.util.function.BiFunction<T,T,T> {
-    method public static <T> java.util.function.BinaryOperator<T> maxBy(java.util.Comparator<? super T>);
-    method public static <T> java.util.function.BinaryOperator<T> minBy(java.util.Comparator<? super T>);
-  }
-
-  @java.lang.FunctionalInterface public interface BooleanSupplier {
-    method public boolean getAsBoolean();
-  }
-
-  @java.lang.FunctionalInterface public interface Consumer<T> {
-    method public void accept(T);
-    method public default java.util.function.Consumer<T> andThen(java.util.function.Consumer<? super T>);
-  }
-
-  @java.lang.FunctionalInterface public interface DoubleBinaryOperator {
-    method public double applyAsDouble(double, double);
-  }
-
-  @java.lang.FunctionalInterface public interface DoubleConsumer {
-    method public void accept(double);
-    method public default java.util.function.DoubleConsumer andThen(java.util.function.DoubleConsumer);
-  }
-
-  @java.lang.FunctionalInterface public interface DoubleFunction<R> {
-    method public R apply(double);
-  }
-
-  @java.lang.FunctionalInterface public interface DoublePredicate {
-    method public default java.util.function.DoublePredicate and(java.util.function.DoublePredicate);
-    method public default java.util.function.DoublePredicate negate();
-    method public default java.util.function.DoublePredicate or(java.util.function.DoublePredicate);
-    method public boolean test(double);
-  }
-
-  @java.lang.FunctionalInterface public interface DoubleSupplier {
-    method public double getAsDouble();
-  }
-
-  @java.lang.FunctionalInterface public interface DoubleToIntFunction {
-    method public int applyAsInt(double);
-  }
-
-  @java.lang.FunctionalInterface public interface DoubleToLongFunction {
-    method public long applyAsLong(double);
-  }
-
-  @java.lang.FunctionalInterface public interface DoubleUnaryOperator {
-    method public default java.util.function.DoubleUnaryOperator andThen(java.util.function.DoubleUnaryOperator);
-    method public double applyAsDouble(double);
-    method public default java.util.function.DoubleUnaryOperator compose(java.util.function.DoubleUnaryOperator);
-    method public static java.util.function.DoubleUnaryOperator identity();
-  }
-
-  @java.lang.FunctionalInterface public interface Function<T, R> {
-    method public default <V> java.util.function.Function<T,V> andThen(java.util.function.Function<? super R,? extends V>);
-    method public R apply(T);
-    method public default <V> java.util.function.Function<V,R> compose(java.util.function.Function<? super V,? extends T>);
-    method public static <T> java.util.function.Function<T,T> identity();
-  }
-
-  @java.lang.FunctionalInterface public interface IntBinaryOperator {
-    method public int applyAsInt(int, int);
-  }
-
-  @java.lang.FunctionalInterface public interface IntConsumer {
-    method public void accept(int);
-    method public default java.util.function.IntConsumer andThen(java.util.function.IntConsumer);
-  }
-
-  @java.lang.FunctionalInterface public interface IntFunction<R> {
-    method public R apply(int);
-  }
-
-  @java.lang.FunctionalInterface public interface IntPredicate {
-    method public default java.util.function.IntPredicate and(java.util.function.IntPredicate);
-    method public default java.util.function.IntPredicate negate();
-    method public default java.util.function.IntPredicate or(java.util.function.IntPredicate);
-    method public boolean test(int);
-  }
-
-  @java.lang.FunctionalInterface public interface IntSupplier {
-    method public int getAsInt();
-  }
-
-  @java.lang.FunctionalInterface public interface IntToDoubleFunction {
-    method public double applyAsDouble(int);
-  }
-
-  @java.lang.FunctionalInterface public interface IntToLongFunction {
-    method public long applyAsLong(int);
-  }
-
-  @java.lang.FunctionalInterface public interface IntUnaryOperator {
-    method public default java.util.function.IntUnaryOperator andThen(java.util.function.IntUnaryOperator);
-    method public int applyAsInt(int);
-    method public default java.util.function.IntUnaryOperator compose(java.util.function.IntUnaryOperator);
-    method public static java.util.function.IntUnaryOperator identity();
-  }
-
-  @java.lang.FunctionalInterface public interface LongBinaryOperator {
-    method public long applyAsLong(long, long);
-  }
-
-  @java.lang.FunctionalInterface public interface LongConsumer {
-    method public void accept(long);
-    method public default java.util.function.LongConsumer andThen(java.util.function.LongConsumer);
-  }
-
-  @java.lang.FunctionalInterface public interface LongFunction<R> {
-    method public R apply(long);
-  }
-
-  @java.lang.FunctionalInterface public interface LongPredicate {
-    method public default java.util.function.LongPredicate and(java.util.function.LongPredicate);
-    method public default java.util.function.LongPredicate negate();
-    method public default java.util.function.LongPredicate or(java.util.function.LongPredicate);
-    method public boolean test(long);
-  }
-
-  @java.lang.FunctionalInterface public interface LongSupplier {
-    method public long getAsLong();
-  }
-
-  @java.lang.FunctionalInterface public interface LongToDoubleFunction {
-    method public double applyAsDouble(long);
-  }
-
-  @java.lang.FunctionalInterface public interface LongToIntFunction {
-    method public int applyAsInt(long);
-  }
-
-  @java.lang.FunctionalInterface public interface LongUnaryOperator {
-    method public default java.util.function.LongUnaryOperator andThen(java.util.function.LongUnaryOperator);
-    method public long applyAsLong(long);
-    method public default java.util.function.LongUnaryOperator compose(java.util.function.LongUnaryOperator);
-    method public static java.util.function.LongUnaryOperator identity();
-  }
-
-  @java.lang.FunctionalInterface public interface ObjDoubleConsumer<T> {
-    method public void accept(T, double);
-  }
-
-  @java.lang.FunctionalInterface public interface ObjIntConsumer<T> {
-    method public void accept(T, int);
-  }
-
-  @java.lang.FunctionalInterface public interface ObjLongConsumer<T> {
-    method public void accept(T, long);
-  }
-
-  @java.lang.FunctionalInterface public interface Predicate<T> {
-    method public default java.util.function.Predicate<T> and(java.util.function.Predicate<? super T>);
-    method public static <T> java.util.function.Predicate<T> isEqual(Object);
-    method public default java.util.function.Predicate<T> negate();
-    method public default java.util.function.Predicate<T> or(java.util.function.Predicate<? super T>);
-    method public boolean test(T);
-  }
-
-  @java.lang.FunctionalInterface public interface Supplier<T> {
-    method public T get();
-  }
-
-  @java.lang.FunctionalInterface public interface ToDoubleBiFunction<T, U> {
-    method public double applyAsDouble(T, U);
-  }
-
-  @java.lang.FunctionalInterface public interface ToDoubleFunction<T> {
-    method public double applyAsDouble(T);
-  }
-
-  @java.lang.FunctionalInterface public interface ToIntBiFunction<T, U> {
-    method public int applyAsInt(T, U);
-  }
-
-  @java.lang.FunctionalInterface public interface ToIntFunction<T> {
-    method public int applyAsInt(T);
-  }
-
-  @java.lang.FunctionalInterface public interface ToLongBiFunction<T, U> {
-    method public long applyAsLong(T, U);
-  }
-
-  @java.lang.FunctionalInterface public interface ToLongFunction<T> {
-    method public long applyAsLong(T);
-  }
-
-  @java.lang.FunctionalInterface public interface UnaryOperator<T> extends java.util.function.Function<T,T> {
-    method public static <T> java.util.function.UnaryOperator<T> identity();
-  }
-
-}
-
-package java.util.jar {
-
-  public class Attributes implements java.lang.Cloneable java.util.Map<java.lang.Object,java.lang.Object> {
-    ctor public Attributes();
-    ctor public Attributes(int);
-    ctor public Attributes(java.util.jar.Attributes);
-    method public void clear();
-    method public Object clone();
-    method public boolean containsKey(Object);
-    method public boolean containsValue(Object);
-    method public java.util.Set<java.util.Map.Entry<java.lang.Object,java.lang.Object>> entrySet();
-    method public Object get(Object);
-    method public String getValue(String);
-    method public String getValue(java.util.jar.Attributes.Name);
-    method public boolean isEmpty();
-    method public java.util.Set<java.lang.Object> keySet();
-    method public Object put(Object, Object);
-    method public void putAll(java.util.Map<?,?>);
-    method public String putValue(String, String);
-    method public Object remove(Object);
-    method public int size();
-    method public java.util.Collection<java.lang.Object> values();
-    field protected java.util.Map<java.lang.Object,java.lang.Object> map;
-  }
-
-  public static class Attributes.Name {
-    ctor public Attributes.Name(String);
-    field public static final java.util.jar.Attributes.Name CLASS_PATH;
-    field public static final java.util.jar.Attributes.Name CONTENT_TYPE;
-    field @Deprecated public static final java.util.jar.Attributes.Name EXTENSION_INSTALLATION;
-    field public static final java.util.jar.Attributes.Name EXTENSION_LIST;
-    field public static final java.util.jar.Attributes.Name EXTENSION_NAME;
-    field public static final java.util.jar.Attributes.Name IMPLEMENTATION_TITLE;
-    field @Deprecated public static final java.util.jar.Attributes.Name IMPLEMENTATION_URL;
-    field public static final java.util.jar.Attributes.Name IMPLEMENTATION_VENDOR;
-    field @Deprecated public static final java.util.jar.Attributes.Name IMPLEMENTATION_VENDOR_ID;
-    field public static final java.util.jar.Attributes.Name IMPLEMENTATION_VERSION;
-    field public static final java.util.jar.Attributes.Name MAIN_CLASS;
-    field public static final java.util.jar.Attributes.Name MANIFEST_VERSION;
-    field public static final java.util.jar.Attributes.Name SEALED;
-    field public static final java.util.jar.Attributes.Name SIGNATURE_VERSION;
-    field public static final java.util.jar.Attributes.Name SPECIFICATION_TITLE;
-    field public static final java.util.jar.Attributes.Name SPECIFICATION_VENDOR;
-    field public static final java.util.jar.Attributes.Name SPECIFICATION_VERSION;
-  }
-
-  public class JarEntry extends java.util.zip.ZipEntry {
-    ctor public JarEntry(String);
-    ctor public JarEntry(java.util.zip.ZipEntry);
-    ctor public JarEntry(java.util.jar.JarEntry);
-    method public java.util.jar.Attributes getAttributes() throws java.io.IOException;
-    method public java.security.cert.Certificate[] getCertificates();
-    method public java.security.CodeSigner[] getCodeSigners();
-    field public static final int CENATT = 36; // 0x24
-    field public static final int CENATX = 38; // 0x26
-    field public static final int CENCOM = 32; // 0x20
-    field public static final int CENCRC = 16; // 0x10
-    field public static final int CENDSK = 34; // 0x22
-    field public static final int CENEXT = 30; // 0x1e
-    field public static final int CENFLG = 8; // 0x8
-    field public static final int CENHDR = 46; // 0x2e
-    field public static final int CENHOW = 10; // 0xa
-    field public static final int CENLEN = 24; // 0x18
-    field public static final int CENNAM = 28; // 0x1c
-    field public static final int CENOFF = 42; // 0x2a
-    field public static final long CENSIG = 33639248L; // 0x2014b50L
-    field public static final int CENSIZ = 20; // 0x14
-    field public static final int CENTIM = 12; // 0xc
-    field public static final int CENVEM = 4; // 0x4
-    field public static final int CENVER = 6; // 0x6
-    field public static final int ENDCOM = 20; // 0x14
-    field public static final int ENDHDR = 22; // 0x16
-    field public static final int ENDOFF = 16; // 0x10
-    field public static final long ENDSIG = 101010256L; // 0x6054b50L
-    field public static final int ENDSIZ = 12; // 0xc
-    field public static final int ENDSUB = 8; // 0x8
-    field public static final int ENDTOT = 10; // 0xa
-    field public static final int EXTCRC = 4; // 0x4
-    field public static final int EXTHDR = 16; // 0x10
-    field public static final int EXTLEN = 12; // 0xc
-    field public static final long EXTSIG = 134695760L; // 0x8074b50L
-    field public static final int EXTSIZ = 8; // 0x8
-    field public static final int LOCCRC = 14; // 0xe
-    field public static final int LOCEXT = 28; // 0x1c
-    field public static final int LOCFLG = 6; // 0x6
-    field public static final int LOCHDR = 30; // 0x1e
-    field public static final int LOCHOW = 8; // 0x8
-    field public static final int LOCLEN = 22; // 0x16
-    field public static final int LOCNAM = 26; // 0x1a
-    field public static final long LOCSIG = 67324752L; // 0x4034b50L
-    field public static final int LOCSIZ = 18; // 0x12
-    field public static final int LOCTIM = 10; // 0xa
-    field public static final int LOCVER = 4; // 0x4
-  }
-
-  public class JarException extends java.util.zip.ZipException {
-    ctor public JarException();
-    ctor public JarException(String);
-  }
-
-  public class JarFile extends java.util.zip.ZipFile {
-    ctor public JarFile(String) throws java.io.IOException;
-    ctor public JarFile(String, boolean) throws java.io.IOException;
-    ctor public JarFile(java.io.File) throws java.io.IOException;
-    ctor public JarFile(java.io.File, boolean) throws java.io.IOException;
-    ctor public JarFile(java.io.File, boolean, int) throws java.io.IOException;
-    method public java.util.Enumeration<java.util.jar.JarEntry> entries();
-    method public java.util.jar.JarEntry getJarEntry(String);
-    method public java.util.jar.Manifest getManifest() throws java.io.IOException;
-    method public java.util.stream.Stream<java.util.jar.JarEntry> stream();
-    field public static final int CENATT = 36; // 0x24
-    field public static final int CENATX = 38; // 0x26
-    field public static final int CENCOM = 32; // 0x20
-    field public static final int CENCRC = 16; // 0x10
-    field public static final int CENDSK = 34; // 0x22
-    field public static final int CENEXT = 30; // 0x1e
-    field public static final int CENFLG = 8; // 0x8
-    field public static final int CENHDR = 46; // 0x2e
-    field public static final int CENHOW = 10; // 0xa
-    field public static final int CENLEN = 24; // 0x18
-    field public static final int CENNAM = 28; // 0x1c
-    field public static final int CENOFF = 42; // 0x2a
-    field public static final long CENSIG = 33639248L; // 0x2014b50L
-    field public static final int CENSIZ = 20; // 0x14
-    field public static final int CENTIM = 12; // 0xc
-    field public static final int CENVEM = 4; // 0x4
-    field public static final int CENVER = 6; // 0x6
-    field public static final int ENDCOM = 20; // 0x14
-    field public static final int ENDHDR = 22; // 0x16
-    field public static final int ENDOFF = 16; // 0x10
-    field public static final long ENDSIG = 101010256L; // 0x6054b50L
-    field public static final int ENDSIZ = 12; // 0xc
-    field public static final int ENDSUB = 8; // 0x8
-    field public static final int ENDTOT = 10; // 0xa
-    field public static final int EXTCRC = 4; // 0x4
-    field public static final int EXTHDR = 16; // 0x10
-    field public static final int EXTLEN = 12; // 0xc
-    field public static final long EXTSIG = 134695760L; // 0x8074b50L
-    field public static final int EXTSIZ = 8; // 0x8
-    field public static final int LOCCRC = 14; // 0xe
-    field public static final int LOCEXT = 28; // 0x1c
-    field public static final int LOCFLG = 6; // 0x6
-    field public static final int LOCHDR = 30; // 0x1e
-    field public static final int LOCHOW = 8; // 0x8
-    field public static final int LOCLEN = 22; // 0x16
-    field public static final int LOCNAM = 26; // 0x1a
-    field public static final long LOCSIG = 67324752L; // 0x4034b50L
-    field public static final int LOCSIZ = 18; // 0x12
-    field public static final int LOCTIM = 10; // 0xa
-    field public static final int LOCVER = 4; // 0x4
-    field public static final String MANIFEST_NAME = "META-INF/MANIFEST.MF";
-  }
-
-  public class JarInputStream extends java.util.zip.ZipInputStream {
-    ctor public JarInputStream(java.io.InputStream) throws java.io.IOException;
-    ctor public JarInputStream(java.io.InputStream, boolean) throws java.io.IOException;
-    method public java.util.jar.Manifest getManifest();
-    method public java.util.jar.JarEntry getNextJarEntry() throws java.io.IOException;
-    field public static final int CENATT = 36; // 0x24
-    field public static final int CENATX = 38; // 0x26
-    field public static final int CENCOM = 32; // 0x20
-    field public static final int CENCRC = 16; // 0x10
-    field public static final int CENDSK = 34; // 0x22
-    field public static final int CENEXT = 30; // 0x1e
-    field public static final int CENFLG = 8; // 0x8
-    field public static final int CENHDR = 46; // 0x2e
-    field public static final int CENHOW = 10; // 0xa
-    field public static final int CENLEN = 24; // 0x18
-    field public static final int CENNAM = 28; // 0x1c
-    field public static final int CENOFF = 42; // 0x2a
-    field public static final long CENSIG = 33639248L; // 0x2014b50L
-    field public static final int CENSIZ = 20; // 0x14
-    field public static final int CENTIM = 12; // 0xc
-    field public static final int CENVEM = 4; // 0x4
-    field public static final int CENVER = 6; // 0x6
-    field public static final int ENDCOM = 20; // 0x14
-    field public static final int ENDHDR = 22; // 0x16
-    field public static final int ENDOFF = 16; // 0x10
-    field public static final long ENDSIG = 101010256L; // 0x6054b50L
-    field public static final int ENDSIZ = 12; // 0xc
-    field public static final int ENDSUB = 8; // 0x8
-    field public static final int ENDTOT = 10; // 0xa
-    field public static final int EXTCRC = 4; // 0x4
-    field public static final int EXTHDR = 16; // 0x10
-    field public static final int EXTLEN = 12; // 0xc
-    field public static final long EXTSIG = 134695760L; // 0x8074b50L
-    field public static final int EXTSIZ = 8; // 0x8
-    field public static final int LOCCRC = 14; // 0xe
-    field public static final int LOCEXT = 28; // 0x1c
-    field public static final int LOCFLG = 6; // 0x6
-    field public static final int LOCHDR = 30; // 0x1e
-    field public static final int LOCHOW = 8; // 0x8
-    field public static final int LOCLEN = 22; // 0x16
-    field public static final int LOCNAM = 26; // 0x1a
-    field public static final long LOCSIG = 67324752L; // 0x4034b50L
-    field public static final int LOCSIZ = 18; // 0x12
-    field public static final int LOCTIM = 10; // 0xa
-    field public static final int LOCVER = 4; // 0x4
-  }
-
-  public class JarOutputStream extends java.util.zip.ZipOutputStream {
-    ctor public JarOutputStream(java.io.OutputStream, java.util.jar.Manifest) throws java.io.IOException;
-    ctor public JarOutputStream(java.io.OutputStream) throws java.io.IOException;
-    field public static final int CENATT = 36; // 0x24
-    field public static final int CENATX = 38; // 0x26
-    field public static final int CENCOM = 32; // 0x20
-    field public static final int CENCRC = 16; // 0x10
-    field public static final int CENDSK = 34; // 0x22
-    field public static final int CENEXT = 30; // 0x1e
-    field public static final int CENFLG = 8; // 0x8
-    field public static final int CENHDR = 46; // 0x2e
-    field public static final int CENHOW = 10; // 0xa
-    field public static final int CENLEN = 24; // 0x18
-    field public static final int CENNAM = 28; // 0x1c
-    field public static final int CENOFF = 42; // 0x2a
-    field public static final long CENSIG = 33639248L; // 0x2014b50L
-    field public static final int CENSIZ = 20; // 0x14
-    field public static final int CENTIM = 12; // 0xc
-    field public static final int CENVEM = 4; // 0x4
-    field public static final int CENVER = 6; // 0x6
-    field public static final int ENDCOM = 20; // 0x14
-    field public static final int ENDHDR = 22; // 0x16
-    field public static final int ENDOFF = 16; // 0x10
-    field public static final long ENDSIG = 101010256L; // 0x6054b50L
-    field public static final int ENDSIZ = 12; // 0xc
-    field public static final int ENDSUB = 8; // 0x8
-    field public static final int ENDTOT = 10; // 0xa
-    field public static final int EXTCRC = 4; // 0x4
-    field public static final int EXTHDR = 16; // 0x10
-    field public static final int EXTLEN = 12; // 0xc
-    field public static final long EXTSIG = 134695760L; // 0x8074b50L
-    field public static final int EXTSIZ = 8; // 0x8
-    field public static final int LOCCRC = 14; // 0xe
-    field public static final int LOCEXT = 28; // 0x1c
-    field public static final int LOCFLG = 6; // 0x6
-    field public static final int LOCHDR = 30; // 0x1e
-    field public static final int LOCHOW = 8; // 0x8
-    field public static final int LOCLEN = 22; // 0x16
-    field public static final int LOCNAM = 26; // 0x1a
-    field public static final long LOCSIG = 67324752L; // 0x4034b50L
-    field public static final int LOCSIZ = 18; // 0x12
-    field public static final int LOCTIM = 10; // 0xa
-    field public static final int LOCVER = 4; // 0x4
-  }
-
-  public class Manifest implements java.lang.Cloneable {
-    ctor public Manifest();
-    ctor public Manifest(java.io.InputStream) throws java.io.IOException;
-    ctor public Manifest(java.util.jar.Manifest);
-    method public void clear();
-    method public Object clone();
-    method public java.util.jar.Attributes getAttributes(String);
-    method public java.util.Map<java.lang.String,java.util.jar.Attributes> getEntries();
-    method public java.util.jar.Attributes getMainAttributes();
-    method public void read(java.io.InputStream) throws java.io.IOException;
-    method public void write(java.io.OutputStream) throws java.io.IOException;
-  }
-
-  public abstract class Pack200 {
-    method public static java.util.jar.Pack200.Packer newPacker();
-    method public static java.util.jar.Pack200.Unpacker newUnpacker();
-  }
-
-  public static interface Pack200.Packer {
-    method @Deprecated public default void addPropertyChangeListener(java.beans.PropertyChangeListener);
-    method public void pack(java.util.jar.JarFile, java.io.OutputStream) throws java.io.IOException;
-    method public void pack(java.util.jar.JarInputStream, java.io.OutputStream) throws java.io.IOException;
-    method public java.util.SortedMap<java.lang.String,java.lang.String> properties();
-    method @Deprecated public default void removePropertyChangeListener(java.beans.PropertyChangeListener);
-    field public static final String CLASS_ATTRIBUTE_PFX = "pack.class.attribute.";
-    field public static final String CODE_ATTRIBUTE_PFX = "pack.code.attribute.";
-    field public static final String DEFLATE_HINT = "pack.deflate.hint";
-    field public static final String EFFORT = "pack.effort";
-    field public static final String ERROR = "error";
-    field public static final String FALSE = "false";
-    field public static final String FIELD_ATTRIBUTE_PFX = "pack.field.attribute.";
-    field public static final String KEEP = "keep";
-    field public static final String KEEP_FILE_ORDER = "pack.keep.file.order";
-    field public static final String LATEST = "latest";
-    field public static final String METHOD_ATTRIBUTE_PFX = "pack.method.attribute.";
-    field public static final String MODIFICATION_TIME = "pack.modification.time";
-    field public static final String PASS = "pass";
-    field public static final String PASS_FILE_PFX = "pack.pass.file.";
-    field public static final String PROGRESS = "pack.progress";
-    field public static final String SEGMENT_LIMIT = "pack.segment.limit";
-    field public static final String STRIP = "strip";
-    field public static final String TRUE = "true";
-    field public static final String UNKNOWN_ATTRIBUTE = "pack.unknown.attribute";
-  }
-
-  public static interface Pack200.Unpacker {
-    method @Deprecated public default void addPropertyChangeListener(java.beans.PropertyChangeListener);
-    method public java.util.SortedMap<java.lang.String,java.lang.String> properties();
-    method @Deprecated public default void removePropertyChangeListener(java.beans.PropertyChangeListener);
-    method public void unpack(java.io.InputStream, java.util.jar.JarOutputStream) throws java.io.IOException;
-    method public void unpack(java.io.File, java.util.jar.JarOutputStream) throws java.io.IOException;
-    field public static final String DEFLATE_HINT = "unpack.deflate.hint";
-    field public static final String FALSE = "false";
-    field public static final String KEEP = "keep";
-    field public static final String PROGRESS = "unpack.progress";
-    field public static final String TRUE = "true";
-  }
-
-}
-
-package java.util.logging {
-
-  public class ConsoleHandler extends java.util.logging.StreamHandler {
-    ctor public ConsoleHandler();
-    method public void close();
-  }
-
-  public class ErrorManager {
-    ctor public ErrorManager();
-    method public void error(String, Exception, int);
-    field public static final int CLOSE_FAILURE = 3; // 0x3
-    field public static final int FLUSH_FAILURE = 2; // 0x2
-    field public static final int FORMAT_FAILURE = 5; // 0x5
-    field public static final int GENERIC_FAILURE = 0; // 0x0
-    field public static final int OPEN_FAILURE = 4; // 0x4
-    field public static final int WRITE_FAILURE = 1; // 0x1
-  }
-
-  public class FileHandler extends java.util.logging.StreamHandler {
-    ctor public FileHandler() throws java.io.IOException, java.lang.SecurityException;
-    ctor public FileHandler(String) throws java.io.IOException, java.lang.SecurityException;
-    ctor public FileHandler(String, boolean) throws java.io.IOException, java.lang.SecurityException;
-    ctor public FileHandler(String, int, int) throws java.io.IOException, java.lang.SecurityException;
-    ctor public FileHandler(String, int, int, boolean) throws java.io.IOException, java.lang.SecurityException;
-  }
-
-  @java.lang.FunctionalInterface public interface Filter {
-    method public boolean isLoggable(java.util.logging.LogRecord);
-  }
-
-  public abstract class Formatter {
-    ctor protected Formatter();
-    method public abstract String format(java.util.logging.LogRecord);
-    method public String formatMessage(java.util.logging.LogRecord);
-    method public String getHead(java.util.logging.Handler);
-    method public String getTail(java.util.logging.Handler);
-  }
-
-  public abstract class Handler {
-    ctor protected Handler();
-    method public abstract void close() throws java.lang.SecurityException;
-    method public abstract void flush();
-    method public String getEncoding();
-    method public java.util.logging.ErrorManager getErrorManager();
-    method public java.util.logging.Filter getFilter();
-    method public java.util.logging.Formatter getFormatter();
-    method public java.util.logging.Level getLevel();
-    method public boolean isLoggable(java.util.logging.LogRecord);
-    method public abstract void publish(java.util.logging.LogRecord);
-    method protected void reportError(String, Exception, int);
-    method public void setEncoding(String) throws java.lang.SecurityException, java.io.UnsupportedEncodingException;
-    method public void setErrorManager(java.util.logging.ErrorManager);
-    method public void setFilter(java.util.logging.Filter) throws java.lang.SecurityException;
-    method public void setFormatter(java.util.logging.Formatter) throws java.lang.SecurityException;
-    method public void setLevel(java.util.logging.Level) throws java.lang.SecurityException;
-  }
-
-  public class Level implements java.io.Serializable {
-    ctor protected Level(@NonNull String, int);
-    ctor protected Level(@NonNull String, int, @Nullable String);
-    method @NonNull public String getLocalizedName();
-    method @NonNull public String getName();
-    method @Nullable public String getResourceBundleName();
-    method public final int intValue();
-    method @NonNull public static java.util.logging.Level parse(@NonNull String) throws java.lang.IllegalArgumentException;
-    method @NonNull public final String toString();
-    field @NonNull public static final java.util.logging.Level ALL;
-    field @NonNull public static final java.util.logging.Level CONFIG;
-    field @NonNull public static final java.util.logging.Level FINE;
-    field @NonNull public static final java.util.logging.Level FINER;
-    field @NonNull public static final java.util.logging.Level FINEST;
-    field @NonNull public static final java.util.logging.Level INFO;
-    field @NonNull public static final java.util.logging.Level OFF;
-    field @NonNull public static final java.util.logging.Level SEVERE;
-    field @NonNull public static final java.util.logging.Level WARNING;
-  }
-
-  public class LogManager {
-    ctor protected LogManager();
-    method public boolean addLogger(java.util.logging.Logger);
-    method @Deprecated public void addPropertyChangeListener(java.beans.PropertyChangeListener) throws java.lang.SecurityException;
-    method public void checkAccess() throws java.lang.SecurityException;
-    method public static java.util.logging.LogManager getLogManager();
-    method public java.util.logging.Logger getLogger(String);
-    method public java.util.Enumeration<java.lang.String> getLoggerNames();
-    method public static java.util.logging.LoggingMXBean getLoggingMXBean();
-    method public String getProperty(String);
-    method public void readConfiguration() throws java.io.IOException, java.lang.SecurityException;
-    method public void readConfiguration(java.io.InputStream) throws java.io.IOException, java.lang.SecurityException;
-    method @Deprecated public void removePropertyChangeListener(java.beans.PropertyChangeListener) throws java.lang.SecurityException;
-    method public void reset() throws java.lang.SecurityException;
-    field public static final String LOGGING_MXBEAN_NAME = "java.util.logging:type=Logging";
-  }
-
-  public class LogRecord implements java.io.Serializable {
-    ctor public LogRecord(java.util.logging.Level, String);
-    method public java.util.logging.Level getLevel();
-    method public String getLoggerName();
-    method public String getMessage();
-    method public long getMillis();
-    method public Object[] getParameters();
-    method public java.util.ResourceBundle getResourceBundle();
-    method public String getResourceBundleName();
-    method public long getSequenceNumber();
-    method public String getSourceClassName();
-    method public String getSourceMethodName();
-    method public int getThreadID();
-    method public Throwable getThrown();
-    method public void setLevel(java.util.logging.Level);
-    method public void setLoggerName(String);
-    method public void setMessage(String);
-    method public void setMillis(long);
-    method public void setParameters(Object[]);
-    method public void setResourceBundle(java.util.ResourceBundle);
-    method public void setResourceBundleName(String);
-    method public void setSequenceNumber(long);
-    method public void setSourceClassName(String);
-    method public void setSourceMethodName(String);
-    method public void setThreadID(int);
-    method public void setThrown(Throwable);
-  }
-
-  public class Logger {
-    ctor protected Logger(@Nullable String, @Nullable String);
-    method public void addHandler(@NonNull java.util.logging.Handler) throws java.lang.SecurityException;
-    method public void config(@Nullable String);
-    method public void config(@NonNull java.util.function.Supplier<java.lang.String>);
-    method public void entering(@Nullable String, @Nullable String);
-    method public void entering(@Nullable String, @Nullable String, @Nullable Object);
-    method public void entering(@Nullable String, @Nullable String, @Nullable Object[]);
-    method public void exiting(@Nullable String, @Nullable String);
-    method public void exiting(@Nullable String, @Nullable String, @Nullable Object);
-    method public void fine(@Nullable String);
-    method public void fine(@NonNull java.util.function.Supplier<java.lang.String>);
-    method public void finer(@Nullable String);
-    method public void finer(@NonNull java.util.function.Supplier<java.lang.String>);
-    method public void finest(@Nullable String);
-    method public void finest(@NonNull java.util.function.Supplier<java.lang.String>);
-    method @NonNull public static java.util.logging.Logger getAnonymousLogger();
-    method @NonNull public static java.util.logging.Logger getAnonymousLogger(@Nullable String);
-    method @Nullable public java.util.logging.Filter getFilter();
-    method @NonNull public static final java.util.logging.Logger getGlobal();
-    method @NonNull public java.util.logging.Handler[] getHandlers();
-    method @Nullable public java.util.logging.Level getLevel();
-    method @NonNull public static java.util.logging.Logger getLogger(@NonNull String);
-    method @NonNull public static java.util.logging.Logger getLogger(@NonNull String, @Nullable String);
-    method @Nullable public String getName();
-    method @Nullable public java.util.logging.Logger getParent();
-    method @Nullable public java.util.ResourceBundle getResourceBundle();
-    method @Nullable public String getResourceBundleName();
-    method public boolean getUseParentHandlers();
-    method public void info(@Nullable String);
-    method public void info(@NonNull java.util.function.Supplier<java.lang.String>);
-    method public boolean isLoggable(@NonNull java.util.logging.Level);
-    method public void log(@NonNull java.util.logging.LogRecord);
-    method public void log(@NonNull java.util.logging.Level, @Nullable String);
-    method public void log(@NonNull java.util.logging.Level, @NonNull java.util.function.Supplier<java.lang.String>);
-    method public void log(@NonNull java.util.logging.Level, @Nullable String, @Nullable Object);
-    method public void log(@NonNull java.util.logging.Level, @Nullable String, @Nullable Object[]);
-    method public void log(@NonNull java.util.logging.Level, @Nullable String, @Nullable Throwable);
-    method public void log(@NonNull java.util.logging.Level, @Nullable Throwable, @NonNull java.util.function.Supplier<java.lang.String>);
-    method public void logp(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String);
-    method public void logp(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @NonNull java.util.function.Supplier<java.lang.String>);
-    method public void logp(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable Object);
-    method public void logp(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable Object[]);
-    method public void logp(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable Throwable);
-    method public void logp(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable Throwable, @NonNull java.util.function.Supplier<java.lang.String>);
-    method @Deprecated public void logrb(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable String);
-    method @Deprecated public void logrb(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable String, @Nullable Object);
-    method @Deprecated public void logrb(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable String, @Nullable Object[]);
-    method public void logrb(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable java.util.ResourceBundle, @Nullable String, @Nullable java.lang.Object...);
-    method @Deprecated public void logrb(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable String, @Nullable String, @Nullable Throwable);
-    method public void logrb(@NonNull java.util.logging.Level, @Nullable String, @Nullable String, @Nullable java.util.ResourceBundle, @Nullable String, @Nullable Throwable);
-    method public void removeHandler(@Nullable java.util.logging.Handler) throws java.lang.SecurityException;
-    method public void setFilter(@Nullable java.util.logging.Filter) throws java.lang.SecurityException;
-    method public void setLevel(@Nullable java.util.logging.Level) throws java.lang.SecurityException;
-    method public void setParent(@NonNull java.util.logging.Logger);
-    method public void setResourceBundle(@NonNull java.util.ResourceBundle);
-    method public void setUseParentHandlers(boolean);
-    method public void severe(@Nullable String);
-    method public void severe(@NonNull java.util.function.Supplier<java.lang.String>);
-    method public void throwing(@Nullable String, @Nullable String, @Nullable Throwable);
-    method public void warning(@Nullable String);
-    method public void warning(@NonNull java.util.function.Supplier<java.lang.String>);
-    field @NonNull public static final String GLOBAL_LOGGER_NAME = "global";
-    field @Deprecated @NonNull public static final java.util.logging.Logger global;
-  }
-
-  public interface LoggingMXBean {
-    method public String getLoggerLevel(String);
-    method public java.util.List<java.lang.String> getLoggerNames();
-    method public String getParentLoggerName(String);
-    method public void setLoggerLevel(String, String);
-  }
-
-  public final class LoggingPermission extends java.security.BasicPermission {
-    ctor public LoggingPermission(String, String) throws java.lang.IllegalArgumentException;
-  }
-
-  public class MemoryHandler extends java.util.logging.Handler {
-    ctor public MemoryHandler();
-    ctor public MemoryHandler(java.util.logging.Handler, int, java.util.logging.Level);
-    method public void close() throws java.lang.SecurityException;
-    method public void flush();
-    method public java.util.logging.Level getPushLevel();
-    method public void publish(java.util.logging.LogRecord);
-    method public void push();
-    method public void setPushLevel(java.util.logging.Level) throws java.lang.SecurityException;
-  }
-
-  public class SimpleFormatter extends java.util.logging.Formatter {
-    ctor public SimpleFormatter();
-    method public String format(java.util.logging.LogRecord);
-  }
-
-  public class SocketHandler extends java.util.logging.StreamHandler {
-    ctor public SocketHandler() throws java.io.IOException;
-    ctor public SocketHandler(String, int) throws java.io.IOException;
-  }
-
-  public class StreamHandler extends java.util.logging.Handler {
-    ctor public StreamHandler();
-    ctor public StreamHandler(java.io.OutputStream, java.util.logging.Formatter);
-    method public void close() throws java.lang.SecurityException;
-    method public void flush();
-    method public void publish(java.util.logging.LogRecord);
-    method protected void setOutputStream(java.io.OutputStream) throws java.lang.SecurityException;
-  }
-
-  public class XMLFormatter extends java.util.logging.Formatter {
-    ctor public XMLFormatter();
-    method public String format(java.util.logging.LogRecord);
-  }
-
-}
-
-package java.util.prefs {
-
-  public abstract class AbstractPreferences extends java.util.prefs.Preferences {
-    ctor protected AbstractPreferences(java.util.prefs.AbstractPreferences, String);
-    method public String absolutePath();
-    method public void addNodeChangeListener(java.util.prefs.NodeChangeListener);
-    method public void addPreferenceChangeListener(java.util.prefs.PreferenceChangeListener);
-    method protected final java.util.prefs.AbstractPreferences[] cachedChildren();
-    method protected abstract java.util.prefs.AbstractPreferences childSpi(String);
-    method public String[] childrenNames() throws java.util.prefs.BackingStoreException;
-    method protected abstract String[] childrenNamesSpi() throws java.util.prefs.BackingStoreException;
-    method public void clear() throws java.util.prefs.BackingStoreException;
-    method public void exportNode(java.io.OutputStream) throws java.util.prefs.BackingStoreException, java.io.IOException;
-    method public void exportSubtree(java.io.OutputStream) throws java.util.prefs.BackingStoreException, java.io.IOException;
-    method public void flush() throws java.util.prefs.BackingStoreException;
-    method protected abstract void flushSpi() throws java.util.prefs.BackingStoreException;
-    method public String get(String, String);
-    method public boolean getBoolean(String, boolean);
-    method public byte[] getByteArray(String, byte[]);
-    method protected java.util.prefs.AbstractPreferences getChild(String) throws java.util.prefs.BackingStoreException;
-    method public double getDouble(String, double);
-    method public float getFloat(String, float);
-    method public int getInt(String, int);
-    method public long getLong(String, long);
-    method protected abstract String getSpi(String);
-    method protected boolean isRemoved();
-    method public boolean isUserNode();
-    method public String[] keys() throws java.util.prefs.BackingStoreException;
-    method protected abstract String[] keysSpi() throws java.util.prefs.BackingStoreException;
-    method public String name();
-    method public java.util.prefs.Preferences node(String);
-    method public boolean nodeExists(String) throws java.util.prefs.BackingStoreException;
-    method public java.util.prefs.Preferences parent();
-    method public void put(String, String);
-    method public void putBoolean(String, boolean);
-    method public void putByteArray(String, byte[]);
-    method public void putDouble(String, double);
-    method public void putFloat(String, float);
-    method public void putInt(String, int);
-    method public void putLong(String, long);
-    method protected abstract void putSpi(String, String);
-    method public void remove(String);
-    method public void removeNode() throws java.util.prefs.BackingStoreException;
-    method public void removeNodeChangeListener(java.util.prefs.NodeChangeListener);
-    method protected abstract void removeNodeSpi() throws java.util.prefs.BackingStoreException;
-    method public void removePreferenceChangeListener(java.util.prefs.PreferenceChangeListener);
-    method protected abstract void removeSpi(String);
-    method public void sync() throws java.util.prefs.BackingStoreException;
-    method protected abstract void syncSpi() throws java.util.prefs.BackingStoreException;
-    field protected final Object lock;
-    field protected boolean newNode;
-  }
-
-  public class BackingStoreException extends java.lang.Exception {
-    ctor public BackingStoreException(String);
-    ctor public BackingStoreException(Throwable);
-  }
-
-  public class InvalidPreferencesFormatException extends java.lang.Exception {
-    ctor public InvalidPreferencesFormatException(Throwable);
-    ctor public InvalidPreferencesFormatException(String);
-    ctor public InvalidPreferencesFormatException(String, Throwable);
-  }
-
-  public class NodeChangeEvent extends java.util.EventObject {
-    ctor public NodeChangeEvent(java.util.prefs.Preferences, java.util.prefs.Preferences);
-    method public java.util.prefs.Preferences getChild();
-    method public java.util.prefs.Preferences getParent();
-  }
-
-  public interface NodeChangeListener extends java.util.EventListener {
-    method public void childAdded(java.util.prefs.NodeChangeEvent);
-    method public void childRemoved(java.util.prefs.NodeChangeEvent);
-  }
-
-  public class PreferenceChangeEvent extends java.util.EventObject {
-    ctor public PreferenceChangeEvent(java.util.prefs.Preferences, String, String);
-    method public String getKey();
-    method public String getNewValue();
-    method public java.util.prefs.Preferences getNode();
-  }
-
-  @java.lang.FunctionalInterface public interface PreferenceChangeListener extends java.util.EventListener {
-    method public void preferenceChange(java.util.prefs.PreferenceChangeEvent);
-  }
-
-  public abstract class Preferences {
-    ctor protected Preferences();
-    method public abstract String absolutePath();
-    method public abstract void addNodeChangeListener(java.util.prefs.NodeChangeListener);
-    method public abstract void addPreferenceChangeListener(java.util.prefs.PreferenceChangeListener);
-    method public abstract String[] childrenNames() throws java.util.prefs.BackingStoreException;
-    method public abstract void clear() throws java.util.prefs.BackingStoreException;
-    method public abstract void exportNode(java.io.OutputStream) throws java.util.prefs.BackingStoreException, java.io.IOException;
-    method public abstract void exportSubtree(java.io.OutputStream) throws java.util.prefs.BackingStoreException, java.io.IOException;
-    method public abstract void flush() throws java.util.prefs.BackingStoreException;
-    method public abstract String get(String, String);
-    method public abstract boolean getBoolean(String, boolean);
-    method public abstract byte[] getByteArray(String, byte[]);
-    method public abstract double getDouble(String, double);
-    method public abstract float getFloat(String, float);
-    method public abstract int getInt(String, int);
-    method public abstract long getLong(String, long);
-    method public static void importPreferences(java.io.InputStream) throws java.io.IOException, java.util.prefs.InvalidPreferencesFormatException;
-    method public abstract boolean isUserNode();
-    method public abstract String[] keys() throws java.util.prefs.BackingStoreException;
-    method public abstract String name();
-    method public abstract java.util.prefs.Preferences node(String);
-    method public abstract boolean nodeExists(String) throws java.util.prefs.BackingStoreException;
-    method public abstract java.util.prefs.Preferences parent();
-    method public abstract void put(String, String);
-    method public abstract void putBoolean(String, boolean);
-    method public abstract void putByteArray(String, byte[]);
-    method public abstract void putDouble(String, double);
-    method public abstract void putFloat(String, float);
-    method public abstract void putInt(String, int);
-    method public abstract void putLong(String, long);
-    method public abstract void remove(String);
-    method public abstract void removeNode() throws java.util.prefs.BackingStoreException;
-    method public abstract void removeNodeChangeListener(java.util.prefs.NodeChangeListener);
-    method public abstract void removePreferenceChangeListener(java.util.prefs.PreferenceChangeListener);
-    method public abstract void sync() throws java.util.prefs.BackingStoreException;
-    method public static java.util.prefs.Preferences systemNodeForPackage(Class<?>);
-    method public static java.util.prefs.Preferences systemRoot();
-    method public abstract String toString();
-    method public static java.util.prefs.Preferences userNodeForPackage(Class<?>);
-    method public static java.util.prefs.Preferences userRoot();
-    field public static final int MAX_KEY_LENGTH = 80; // 0x50
-    field public static final int MAX_NAME_LENGTH = 80; // 0x50
-    field public static final int MAX_VALUE_LENGTH = 8192; // 0x2000
-  }
-
-  public interface PreferencesFactory {
-    method public java.util.prefs.Preferences systemRoot();
-    method public java.util.prefs.Preferences userRoot();
-  }
-
-}
-
-package java.util.regex {
-
-  public interface MatchResult {
-    method public int end();
-    method public int end(int);
-    method public String group();
-    method public String group(int);
-    method public int groupCount();
-    method public int start();
-    method public int start(int);
-  }
-
-  public final class Matcher implements java.util.regex.MatchResult {
-    method @NonNull public java.util.regex.Matcher appendReplacement(@NonNull StringBuffer, @NonNull String);
-    method @NonNull public StringBuffer appendTail(@NonNull StringBuffer);
-    method public int end();
-    method public int end(int);
-    method public int end(@NonNull String);
-    method public boolean find();
-    method public boolean find(int);
-    method @NonNull public String group();
-    method @Nullable public String group(int);
-    method @Nullable public String group(@NonNull String);
-    method public int groupCount();
-    method public boolean hasAnchoringBounds();
-    method public boolean hasTransparentBounds();
-    method public boolean hitEnd();
-    method public boolean lookingAt();
-    method public boolean matches();
-    method @NonNull public java.util.regex.Pattern pattern();
-    method @NonNull public static String quoteReplacement(@NonNull String);
-    method @NonNull public java.util.regex.Matcher region(int, int);
-    method public int regionEnd();
-    method public int regionStart();
-    method @NonNull public String replaceAll(@NonNull String);
-    method @NonNull public String replaceFirst(@NonNull String);
-    method public boolean requireEnd();
-    method @NonNull public java.util.regex.Matcher reset();
-    method @NonNull public java.util.regex.Matcher reset(@NonNull CharSequence);
-    method public int start();
-    method public int start(int);
-    method public int start(@NonNull String);
-    method @NonNull public java.util.regex.MatchResult toMatchResult();
-    method @NonNull public java.util.regex.Matcher useAnchoringBounds(boolean);
-    method @NonNull public java.util.regex.Matcher usePattern(@NonNull java.util.regex.Pattern);
-    method @NonNull public java.util.regex.Matcher useTransparentBounds(boolean);
-  }
-
-  public final class Pattern implements java.io.Serializable {
-    method @NonNull public java.util.function.Predicate<java.lang.String> asPredicate();
-    method @NonNull public static java.util.regex.Pattern compile(@NonNull String);
-    method @NonNull public static java.util.regex.Pattern compile(@NonNull String, int);
-    method public int flags();
-    method @NonNull public java.util.regex.Matcher matcher(@NonNull CharSequence);
-    method public static boolean matches(@NonNull String, @NonNull CharSequence);
-    method @NonNull public String pattern();
-    method @NonNull public static String quote(@NonNull String);
-    method @NonNull public String[] split(@NonNull CharSequence, int);
-    method @NonNull public String[] split(@NonNull CharSequence);
-    method @NonNull public java.util.stream.Stream<java.lang.String> splitAsStream(@NonNull CharSequence);
-    field public static final int CANON_EQ = 128; // 0x80
-    field public static final int CASE_INSENSITIVE = 2; // 0x2
-    field public static final int COMMENTS = 4; // 0x4
-    field public static final int DOTALL = 32; // 0x20
-    field public static final int LITERAL = 16; // 0x10
-    field public static final int MULTILINE = 8; // 0x8
-    field public static final int UNICODE_CASE = 64; // 0x40
-    field public static final int UNICODE_CHARACTER_CLASS = 256; // 0x100
-    field public static final int UNIX_LINES = 1; // 0x1
-  }
-
-  public class PatternSyntaxException extends java.lang.IllegalArgumentException {
-    ctor public PatternSyntaxException(String, String, int);
-    method public String getDescription();
-    method public int getIndex();
-    method public String getPattern();
-  }
-
-}
-
-package java.util.stream {
-
-  public interface BaseStream<T, S extends java.util.stream.BaseStream<T, S>> extends java.lang.AutoCloseable {
-    method public void close();
-    method public boolean isParallel();
-    method public java.util.Iterator<T> iterator();
-    method public S onClose(Runnable);
-    method public S parallel();
-    method public S sequential();
-    method public java.util.Spliterator<T> spliterator();
-    method public S unordered();
-  }
-
-  public interface Collector<T, A, R> {
-    method public java.util.function.BiConsumer<A,T> accumulator();
-    method public java.util.Set<java.util.stream.Collector.Characteristics> characteristics();
-    method public java.util.function.BinaryOperator<A> combiner();
-    method public java.util.function.Function<A,R> finisher();
-    method public static <T, R> java.util.stream.Collector<T,R,R> of(java.util.function.Supplier<R>, java.util.function.BiConsumer<R,T>, java.util.function.BinaryOperator<R>, java.util.stream.Collector.Characteristics...);
-    method public static <T, A, R> java.util.stream.Collector<T,A,R> of(java.util.function.Supplier<A>, java.util.function.BiConsumer<A,T>, java.util.function.BinaryOperator<A>, java.util.function.Function<A,R>, java.util.stream.Collector.Characteristics...);
-    method public java.util.function.Supplier<A> supplier();
-  }
-
-  public enum Collector.Characteristics {
-    enum_constant public static final java.util.stream.Collector.Characteristics CONCURRENT;
-    enum_constant public static final java.util.stream.Collector.Characteristics IDENTITY_FINISH;
-    enum_constant public static final java.util.stream.Collector.Characteristics UNORDERED;
-  }
-
-  public final class Collectors {
-    method public static <T> java.util.stream.Collector<T,?,java.lang.Double> averagingDouble(java.util.function.ToDoubleFunction<? super T>);
-    method public static <T> java.util.stream.Collector<T,?,java.lang.Double> averagingInt(java.util.function.ToIntFunction<? super T>);
-    method public static <T> java.util.stream.Collector<T,?,java.lang.Double> averagingLong(java.util.function.ToLongFunction<? super T>);
-    method public static <T, A, R, RR> java.util.stream.Collector<T,A,RR> collectingAndThen(java.util.stream.Collector<T,A,R>, java.util.function.Function<R,RR>);
-    method public static <T> java.util.stream.Collector<T,?,java.lang.Long> counting();
-    method public static <T, K> java.util.stream.Collector<T,?,java.util.Map<K,java.util.List<T>>> groupingBy(java.util.function.Function<? super T,? extends K>);
-    method public static <T, K, A, D> java.util.stream.Collector<T,?,java.util.Map<K,D>> groupingBy(java.util.function.Function<? super T,? extends K>, java.util.stream.Collector<? super T,A,D>);
-    method public static <T, K, D, A, M extends java.util.Map<K, D>> java.util.stream.Collector<T,?,M> groupingBy(java.util.function.Function<? super T,? extends K>, java.util.function.Supplier<M>, java.util.stream.Collector<? super T,A,D>);
-    method public static <T, K> java.util.stream.Collector<T,?,java.util.concurrent.ConcurrentMap<K,java.util.List<T>>> groupingByConcurrent(java.util.function.Function<? super T,? extends K>);
-    method public static <T, K, A, D> java.util.stream.Collector<T,?,java.util.concurrent.ConcurrentMap<K,D>> groupingByConcurrent(java.util.function.Function<? super T,? extends K>, java.util.stream.Collector<? super T,A,D>);
-    method public static <T, K, A, D, M extends java.util.concurrent.ConcurrentMap<K, D>> java.util.stream.Collector<T,?,M> groupingByConcurrent(java.util.function.Function<? super T,? extends K>, java.util.function.Supplier<M>, java.util.stream.Collector<? super T,A,D>);
-    method public static java.util.stream.Collector<java.lang.CharSequence,?,java.lang.String> joining();
-    method public static java.util.stream.Collector<java.lang.CharSequence,?,java.lang.String> joining(CharSequence);
-    method public static java.util.stream.Collector<java.lang.CharSequence,?,java.lang.String> joining(CharSequence, CharSequence, CharSequence);
-    method public static <T, U, A, R> java.util.stream.Collector<T,?,R> mapping(java.util.function.Function<? super T,? extends U>, java.util.stream.Collector<? super U,A,R>);
-    method public static <T> java.util.stream.Collector<T,?,java.util.Optional<T>> maxBy(java.util.Comparator<? super T>);
-    method public static <T> java.util.stream.Collector<T,?,java.util.Optional<T>> minBy(java.util.Comparator<? super T>);
-    method public static <T> java.util.stream.Collector<T,?,java.util.Map<java.lang.Boolean,java.util.List<T>>> partitioningBy(java.util.function.Predicate<? super T>);
-    method public static <T, D, A> java.util.stream.Collector<T,?,java.util.Map<java.lang.Boolean,D>> partitioningBy(java.util.function.Predicate<? super T>, java.util.stream.Collector<? super T,A,D>);
-    method public static <T> java.util.stream.Collector<T,?,T> reducing(T, java.util.function.BinaryOperator<T>);
-    method public static <T> java.util.stream.Collector<T,?,java.util.Optional<T>> reducing(java.util.function.BinaryOperator<T>);
-    method public static <T, U> java.util.stream.Collector<T,?,U> reducing(U, java.util.function.Function<? super T,? extends U>, java.util.function.BinaryOperator<U>);
-    method public static <T> java.util.stream.Collector<T,?,java.util.DoubleSummaryStatistics> summarizingDouble(java.util.function.ToDoubleFunction<? super T>);
-    method public static <T> java.util.stream.Collector<T,?,java.util.IntSummaryStatistics> summarizingInt(java.util.function.ToIntFunction<? super T>);
-    method public static <T> java.util.stream.Collector<T,?,java.util.LongSummaryStatistics> summarizingLong(java.util.function.ToLongFunction<? super T>);
-    method public static <T> java.util.stream.Collector<T,?,java.lang.Double> summingDouble(java.util.function.ToDoubleFunction<? super T>);
-    method public static <T> java.util.stream.Collector<T,?,java.lang.Integer> summingInt(java.util.function.ToIntFunction<? super T>);
-    method public static <T> java.util.stream.Collector<T,?,java.lang.Long> summingLong(java.util.function.ToLongFunction<? super T>);
-    method public static <T, C extends java.util.Collection<T>> java.util.stream.Collector<T,?,C> toCollection(java.util.function.Supplier<C>);
-    method public static <T, K, U> java.util.stream.Collector<T,?,java.util.concurrent.ConcurrentMap<K,U>> toConcurrentMap(java.util.function.Function<? super T,? extends K>, java.util.function.Function<? super T,? extends U>);
-    method public static <T, K, U> java.util.stream.Collector<T,?,java.util.concurrent.ConcurrentMap<K,U>> toConcurrentMap(java.util.function.Function<? super T,? extends K>, java.util.function.Function<? super T,? extends U>, java.util.function.BinaryOperator<U>);
-    method public static <T, K, U, M extends java.util.concurrent.ConcurrentMap<K, U>> java.util.stream.Collector<T,?,M> toConcurrentMap(java.util.function.Function<? super T,? extends K>, java.util.function.Function<? super T,? extends U>, java.util.function.BinaryOperator<U>, java.util.function.Supplier<M>);
-    method public static <T> java.util.stream.Collector<T,?,java.util.List<T>> toList();
-    method public static <T, K, U> java.util.stream.Collector<T,?,java.util.Map<K,U>> toMap(java.util.function.Function<? super T,? extends K>, java.util.function.Function<? super T,? extends U>);
-    method public static <T, K, U> java.util.stream.Collector<T,?,java.util.Map<K,U>> toMap(java.util.function.Function<? super T,? extends K>, java.util.function.Function<? super T,? extends U>, java.util.function.BinaryOperator<U>);
-    method public static <T, K, U, M extends java.util.Map<K, U>> java.util.stream.Collector<T,?,M> toMap(java.util.function.Function<? super T,? extends K>, java.util.function.Function<? super T,? extends U>, java.util.function.BinaryOperator<U>, java.util.function.Supplier<M>);
-    method public static <T> java.util.stream.Collector<T,?,java.util.Set<T>> toSet();
-  }
-
-  public interface DoubleStream extends java.util.stream.BaseStream<java.lang.Double,java.util.stream.DoubleStream> {
-    method public boolean allMatch(java.util.function.DoublePredicate);
-    method public boolean anyMatch(java.util.function.DoublePredicate);
-    method public java.util.OptionalDouble average();
-    method public java.util.stream.Stream<java.lang.Double> boxed();
-    method public static java.util.stream.DoubleStream.Builder builder();
-    method public <R> R collect(java.util.function.Supplier<R>, java.util.function.ObjDoubleConsumer<R>, java.util.function.BiConsumer<R,R>);
-    method public static java.util.stream.DoubleStream concat(java.util.stream.DoubleStream, java.util.stream.DoubleStream);
-    method public long count();
-    method public java.util.stream.DoubleStream distinct();
-    method public static java.util.stream.DoubleStream empty();
-    method public java.util.stream.DoubleStream filter(java.util.function.DoublePredicate);
-    method public java.util.OptionalDouble findAny();
-    method public java.util.OptionalDouble findFirst();
-    method public java.util.stream.DoubleStream flatMap(java.util.function.DoubleFunction<? extends java.util.stream.DoubleStream>);
-    method public void forEach(java.util.function.DoubleConsumer);
-    method public void forEachOrdered(java.util.function.DoubleConsumer);
-    method public static java.util.stream.DoubleStream generate(java.util.function.DoubleSupplier);
-    method public static java.util.stream.DoubleStream iterate(double, java.util.function.DoubleUnaryOperator);
-    method public java.util.PrimitiveIterator.OfDouble iterator();
-    method public java.util.stream.DoubleStream limit(long);
-    method public java.util.stream.DoubleStream map(java.util.function.DoubleUnaryOperator);
-    method public java.util.stream.IntStream mapToInt(java.util.function.DoubleToIntFunction);
-    method public java.util.stream.LongStream mapToLong(java.util.function.DoubleToLongFunction);
-    method public <U> java.util.stream.Stream<U> mapToObj(java.util.function.DoubleFunction<? extends U>);
-    method public java.util.OptionalDouble max();
-    method public java.util.OptionalDouble min();
-    method public boolean noneMatch(java.util.function.DoublePredicate);
-    method public static java.util.stream.DoubleStream of(double);
-    method public static java.util.stream.DoubleStream of(double...);
-    method public java.util.stream.DoubleStream parallel();
-    method public java.util.stream.DoubleStream peek(java.util.function.DoubleConsumer);
-    method public double reduce(double, java.util.function.DoubleBinaryOperator);
-    method public java.util.OptionalDouble reduce(java.util.function.DoubleBinaryOperator);
-    method public java.util.stream.DoubleStream sequential();
-    method public java.util.stream.DoubleStream skip(long);
-    method public java.util.stream.DoubleStream sorted();
-    method public java.util.Spliterator.OfDouble spliterator();
-    method public double sum();
-    method public java.util.DoubleSummaryStatistics summaryStatistics();
-    method public double[] toArray();
-  }
-
-  public static interface DoubleStream.Builder extends java.util.function.DoubleConsumer {
-    method public default java.util.stream.DoubleStream.Builder add(double);
-    method public java.util.stream.DoubleStream build();
-  }
-
-  public interface IntStream extends java.util.stream.BaseStream<java.lang.Integer,java.util.stream.IntStream> {
-    method public boolean allMatch(java.util.function.IntPredicate);
-    method public boolean anyMatch(java.util.function.IntPredicate);
-    method public java.util.stream.DoubleStream asDoubleStream();
-    method public java.util.stream.LongStream asLongStream();
-    method public java.util.OptionalDouble average();
-    method public java.util.stream.Stream<java.lang.Integer> boxed();
-    method public static java.util.stream.IntStream.Builder builder();
-    method public <R> R collect(java.util.function.Supplier<R>, java.util.function.ObjIntConsumer<R>, java.util.function.BiConsumer<R,R>);
-    method public static java.util.stream.IntStream concat(java.util.stream.IntStream, java.util.stream.IntStream);
-    method public long count();
-    method public java.util.stream.IntStream distinct();
-    method public static java.util.stream.IntStream empty();
-    method public java.util.stream.IntStream filter(java.util.function.IntPredicate);
-    method public java.util.OptionalInt findAny();
-    method public java.util.OptionalInt findFirst();
-    method public java.util.stream.IntStream flatMap(java.util.function.IntFunction<? extends java.util.stream.IntStream>);
-    method public void forEach(java.util.function.IntConsumer);
-    method public void forEachOrdered(java.util.function.IntConsumer);
-    method public static java.util.stream.IntStream generate(java.util.function.IntSupplier);
-    method public static java.util.stream.IntStream iterate(int, java.util.function.IntUnaryOperator);
-    method public java.util.PrimitiveIterator.OfInt iterator();
-    method public java.util.stream.IntStream limit(long);
-    method public java.util.stream.IntStream map(java.util.function.IntUnaryOperator);
-    method public java.util.stream.DoubleStream mapToDouble(java.util.function.IntToDoubleFunction);
-    method public java.util.stream.LongStream mapToLong(java.util.function.IntToLongFunction);
-    method public <U> java.util.stream.Stream<U> mapToObj(java.util.function.IntFunction<? extends U>);
-    method public java.util.OptionalInt max();
-    method public java.util.OptionalInt min();
-    method public boolean noneMatch(java.util.function.IntPredicate);
-    method public static java.util.stream.IntStream of(int);
-    method public static java.util.stream.IntStream of(int...);
-    method public java.util.stream.IntStream parallel();
-    method public java.util.stream.IntStream peek(java.util.function.IntConsumer);
-    method public static java.util.stream.IntStream range(int, int);
-    method public static java.util.stream.IntStream rangeClosed(int, int);
-    method public int reduce(int, java.util.function.IntBinaryOperator);
-    method public java.util.OptionalInt reduce(java.util.function.IntBinaryOperator);
-    method public java.util.stream.IntStream sequential();
-    method public java.util.stream.IntStream skip(long);
-    method public java.util.stream.IntStream sorted();
-    method public java.util.Spliterator.OfInt spliterator();
-    method public int sum();
-    method public java.util.IntSummaryStatistics summaryStatistics();
-    method public int[] toArray();
-  }
-
-  public static interface IntStream.Builder extends java.util.function.IntConsumer {
-    method public default java.util.stream.IntStream.Builder add(int);
-    method public java.util.stream.IntStream build();
-  }
-
-  public interface LongStream extends java.util.stream.BaseStream<java.lang.Long,java.util.stream.LongStream> {
-    method public boolean allMatch(java.util.function.LongPredicate);
-    method public boolean anyMatch(java.util.function.LongPredicate);
-    method public java.util.stream.DoubleStream asDoubleStream();
-    method public java.util.OptionalDouble average();
-    method public java.util.stream.Stream<java.lang.Long> boxed();
-    method public static java.util.stream.LongStream.Builder builder();
-    method public <R> R collect(java.util.function.Supplier<R>, java.util.function.ObjLongConsumer<R>, java.util.function.BiConsumer<R,R>);
-    method public static java.util.stream.LongStream concat(java.util.stream.LongStream, java.util.stream.LongStream);
-    method public long count();
-    method public java.util.stream.LongStream distinct();
-    method public static java.util.stream.LongStream empty();
-    method public java.util.stream.LongStream filter(java.util.function.LongPredicate);
-    method public java.util.OptionalLong findAny();
-    method public java.util.OptionalLong findFirst();
-    method public java.util.stream.LongStream flatMap(java.util.function.LongFunction<? extends java.util.stream.LongStream>);
-    method public void forEach(java.util.function.LongConsumer);
-    method public void forEachOrdered(java.util.function.LongConsumer);
-    method public static java.util.stream.LongStream generate(java.util.function.LongSupplier);
-    method public static java.util.stream.LongStream iterate(long, java.util.function.LongUnaryOperator);
-    method public java.util.PrimitiveIterator.OfLong iterator();
-    method public java.util.stream.LongStream limit(long);
-    method public java.util.stream.LongStream map(java.util.function.LongUnaryOperator);
-    method public java.util.stream.DoubleStream mapToDouble(java.util.function.LongToDoubleFunction);
-    method public java.util.stream.IntStream mapToInt(java.util.function.LongToIntFunction);
-    method public <U> java.util.stream.Stream<U> mapToObj(java.util.function.LongFunction<? extends U>);
-    method public java.util.OptionalLong max();
-    method public java.util.OptionalLong min();
-    method public boolean noneMatch(java.util.function.LongPredicate);
-    method public static java.util.stream.LongStream of(long);
-    method public static java.util.stream.LongStream of(long...);
-    method public java.util.stream.LongStream parallel();
-    method public java.util.stream.LongStream peek(java.util.function.LongConsumer);
-    method public static java.util.stream.LongStream range(long, long);
-    method public static java.util.stream.LongStream rangeClosed(long, long);
-    method public long reduce(long, java.util.function.LongBinaryOperator);
-    method public java.util.OptionalLong reduce(java.util.function.LongBinaryOperator);
-    method public java.util.stream.LongStream sequential();
-    method public java.util.stream.LongStream skip(long);
-    method public java.util.stream.LongStream sorted();
-    method public java.util.Spliterator.OfLong spliterator();
-    method public long sum();
-    method public java.util.LongSummaryStatistics summaryStatistics();
-    method public long[] toArray();
-  }
-
-  public static interface LongStream.Builder extends java.util.function.LongConsumer {
-    method public default java.util.stream.LongStream.Builder add(long);
-    method public java.util.stream.LongStream build();
-  }
-
-  public interface Stream<T> extends java.util.stream.BaseStream<T,java.util.stream.Stream<T>> {
-    method public boolean allMatch(java.util.function.Predicate<? super T>);
-    method public boolean anyMatch(java.util.function.Predicate<? super T>);
-    method public static <T> java.util.stream.Stream.Builder<T> builder();
-    method public <R> R collect(java.util.function.Supplier<R>, java.util.function.BiConsumer<R,? super T>, java.util.function.BiConsumer<R,R>);
-    method public <R, A> R collect(java.util.stream.Collector<? super T,A,R>);
-    method public static <T> java.util.stream.Stream<T> concat(java.util.stream.Stream<? extends T>, java.util.stream.Stream<? extends T>);
-    method public long count();
-    method public java.util.stream.Stream<T> distinct();
-    method public static <T> java.util.stream.Stream<T> empty();
-    method public java.util.stream.Stream<T> filter(java.util.function.Predicate<? super T>);
-    method public java.util.Optional<T> findAny();
-    method public java.util.Optional<T> findFirst();
-    method public <R> java.util.stream.Stream<R> flatMap(java.util.function.Function<? super T,? extends java.util.stream.Stream<? extends R>>);
-    method public java.util.stream.DoubleStream flatMapToDouble(java.util.function.Function<? super T,? extends java.util.stream.DoubleStream>);
-    method public java.util.stream.IntStream flatMapToInt(java.util.function.Function<? super T,? extends java.util.stream.IntStream>);
-    method public java.util.stream.LongStream flatMapToLong(java.util.function.Function<? super T,? extends java.util.stream.LongStream>);
-    method public void forEach(java.util.function.Consumer<? super T>);
-    method public void forEachOrdered(java.util.function.Consumer<? super T>);
-    method public static <T> java.util.stream.Stream<T> generate(java.util.function.Supplier<T>);
-    method public static <T> java.util.stream.Stream<T> iterate(T, java.util.function.UnaryOperator<T>);
-    method public java.util.stream.Stream<T> limit(long);
-    method public <R> java.util.stream.Stream<R> map(java.util.function.Function<? super T,? extends R>);
-    method public java.util.stream.DoubleStream mapToDouble(java.util.function.ToDoubleFunction<? super T>);
-    method public java.util.stream.IntStream mapToInt(java.util.function.ToIntFunction<? super T>);
-    method public java.util.stream.LongStream mapToLong(java.util.function.ToLongFunction<? super T>);
-    method public java.util.Optional<T> max(java.util.Comparator<? super T>);
-    method public java.util.Optional<T> min(java.util.Comparator<? super T>);
-    method public boolean noneMatch(java.util.function.Predicate<? super T>);
-    method public static <T> java.util.stream.Stream<T> of(T);
-    method @java.lang.SafeVarargs public static <T> java.util.stream.Stream<T> of(T...);
-    method public java.util.stream.Stream<T> peek(java.util.function.Consumer<? super T>);
-    method public T reduce(T, java.util.function.BinaryOperator<T>);
-    method public java.util.Optional<T> reduce(java.util.function.BinaryOperator<T>);
-    method public <U> U reduce(U, java.util.function.BiFunction<U,? super T,U>, java.util.function.BinaryOperator<U>);
-    method public java.util.stream.Stream<T> skip(long);
-    method public java.util.stream.Stream<T> sorted();
-    method public java.util.stream.Stream<T> sorted(java.util.Comparator<? super T>);
-    method public Object[] toArray();
-    method public <A> A[] toArray(java.util.function.IntFunction<A[]>);
-  }
-
-  public static interface Stream.Builder<T> extends java.util.function.Consumer<T> {
-    method public default java.util.stream.Stream.Builder<T> add(T);
-    method public java.util.stream.Stream<T> build();
-  }
-
-  public final class StreamSupport {
-    method public static java.util.stream.DoubleStream doubleStream(java.util.Spliterator.OfDouble, boolean);
-    method public static java.util.stream.DoubleStream doubleStream(java.util.function.Supplier<? extends java.util.Spliterator.OfDouble>, int, boolean);
-    method public static java.util.stream.IntStream intStream(java.util.Spliterator.OfInt, boolean);
-    method public static java.util.stream.IntStream intStream(java.util.function.Supplier<? extends java.util.Spliterator.OfInt>, int, boolean);
-    method public static java.util.stream.LongStream longStream(java.util.Spliterator.OfLong, boolean);
-    method public static java.util.stream.LongStream longStream(java.util.function.Supplier<? extends java.util.Spliterator.OfLong>, int, boolean);
-    method public static <T> java.util.stream.Stream<T> stream(java.util.Spliterator<T>, boolean);
-    method public static <T> java.util.stream.Stream<T> stream(java.util.function.Supplier<? extends java.util.Spliterator<T>>, int, boolean);
-  }
-
-}
-
-package java.util.zip {
-
-  public class Adler32 implements java.util.zip.Checksum {
-    ctor public Adler32();
-    method public long getValue();
-    method public void reset();
-    method public void update(int);
-    method public void update(byte[], int, int);
-    method public void update(byte[]);
-    method public void update(java.nio.ByteBuffer);
-  }
-
-  public class CRC32 implements java.util.zip.Checksum {
-    ctor public CRC32();
-    method public long getValue();
-    method public void reset();
-    method public void update(int);
-    method public void update(byte[], int, int);
-    method public void update(byte[]);
-    method public void update(java.nio.ByteBuffer);
-  }
-
-  public class CheckedInputStream extends java.io.FilterInputStream {
-    ctor public CheckedInputStream(java.io.InputStream, java.util.zip.Checksum);
-    method public java.util.zip.Checksum getChecksum();
-  }
-
-  public class CheckedOutputStream extends java.io.FilterOutputStream {
-    ctor public CheckedOutputStream(java.io.OutputStream, java.util.zip.Checksum);
-    method public java.util.zip.Checksum getChecksum();
-  }
-
-  public interface Checksum {
-    method public long getValue();
-    method public void reset();
-    method public void update(int);
-    method public void update(byte[], int, int);
-  }
-
-  public class DataFormatException extends java.lang.Exception {
-    ctor public DataFormatException();
-    ctor public DataFormatException(String);
-  }
-
-  public class Deflater {
-    ctor public Deflater(int, boolean);
-    ctor public Deflater(int);
-    ctor public Deflater();
-    method public int deflate(byte[], int, int);
-    method public int deflate(byte[]);
-    method public int deflate(byte[], int, int, int);
-    method public void end();
-    method protected void finalize();
-    method public void finish();
-    method public boolean finished();
-    method public int getAdler();
-    method public long getBytesRead();
-    method public long getBytesWritten();
-    method public int getTotalIn();
-    method public int getTotalOut();
-    method public boolean needsInput();
-    method public void reset();
-    method public void setDictionary(byte[], int, int);
-    method public void setDictionary(byte[]);
-    method public void setInput(byte[], int, int);
-    method public void setInput(byte[]);
-    method public void setLevel(int);
-    method public void setStrategy(int);
-    field public static final int BEST_COMPRESSION = 9; // 0x9
-    field public static final int BEST_SPEED = 1; // 0x1
-    field public static final int DEFAULT_COMPRESSION = -1; // 0xffffffff
-    field public static final int DEFAULT_STRATEGY = 0; // 0x0
-    field public static final int DEFLATED = 8; // 0x8
-    field public static final int FILTERED = 1; // 0x1
-    field public static final int FULL_FLUSH = 3; // 0x3
-    field public static final int HUFFMAN_ONLY = 2; // 0x2
-    field public static final int NO_COMPRESSION = 0; // 0x0
-    field public static final int NO_FLUSH = 0; // 0x0
-    field public static final int SYNC_FLUSH = 2; // 0x2
-  }
-
-  public class DeflaterInputStream extends java.io.FilterInputStream {
-    ctor public DeflaterInputStream(java.io.InputStream);
-    ctor public DeflaterInputStream(java.io.InputStream, java.util.zip.Deflater);
-    ctor public DeflaterInputStream(java.io.InputStream, java.util.zip.Deflater, int);
-    field protected final byte[] buf;
-    field protected final java.util.zip.Deflater def;
-  }
-
-  public class DeflaterOutputStream extends java.io.FilterOutputStream {
-    ctor public DeflaterOutputStream(java.io.OutputStream, java.util.zip.Deflater, int, boolean);
-    ctor public DeflaterOutputStream(java.io.OutputStream, java.util.zip.Deflater, int);
-    ctor public DeflaterOutputStream(java.io.OutputStream, java.util.zip.Deflater, boolean);
-    ctor public DeflaterOutputStream(java.io.OutputStream, java.util.zip.Deflater);
-    ctor public DeflaterOutputStream(java.io.OutputStream, boolean);
-    ctor public DeflaterOutputStream(java.io.OutputStream);
-    method protected void deflate() throws java.io.IOException;
-    method public void finish() throws java.io.IOException;
-    field protected byte[] buf;
-    field protected java.util.zip.Deflater def;
-  }
-
-  public class GZIPInputStream extends java.util.zip.InflaterInputStream {
-    ctor public GZIPInputStream(java.io.InputStream, int) throws java.io.IOException;
-    ctor public GZIPInputStream(java.io.InputStream) throws java.io.IOException;
-    field public static final int GZIP_MAGIC = 35615; // 0x8b1f
-    field protected java.util.zip.CRC32 crc;
-    field protected boolean eos;
-  }
-
-  public class GZIPOutputStream extends java.util.zip.DeflaterOutputStream {
-    ctor public GZIPOutputStream(java.io.OutputStream, int) throws java.io.IOException;
-    ctor public GZIPOutputStream(java.io.OutputStream, int, boolean) throws java.io.IOException;
-    ctor public GZIPOutputStream(java.io.OutputStream) throws java.io.IOException;
-    ctor public GZIPOutputStream(java.io.OutputStream, boolean) throws java.io.IOException;
-    field protected java.util.zip.CRC32 crc;
-  }
-
-  public class Inflater {
-    ctor public Inflater(boolean);
-    ctor public Inflater();
-    method public void end();
-    method protected void finalize();
-    method public boolean finished();
-    method public int getAdler();
-    method public long getBytesRead();
-    method public long getBytesWritten();
-    method public int getRemaining();
-    method public int getTotalIn();
-    method public int getTotalOut();
-    method public int inflate(byte[], int, int) throws java.util.zip.DataFormatException;
-    method public int inflate(byte[]) throws java.util.zip.DataFormatException;
-    method public boolean needsDictionary();
-    method public boolean needsInput();
-    method public void reset();
-    method public void setDictionary(byte[], int, int);
-    method public void setDictionary(byte[]);
-    method public void setInput(byte[], int, int);
-    method public void setInput(byte[]);
-  }
-
-  public class InflaterInputStream extends java.io.FilterInputStream {
-    ctor public InflaterInputStream(java.io.InputStream, java.util.zip.Inflater, int);
-    ctor public InflaterInputStream(java.io.InputStream, java.util.zip.Inflater);
-    ctor public InflaterInputStream(java.io.InputStream);
-    method protected void fill() throws java.io.IOException;
-    field protected byte[] buf;
-    field @Deprecated protected boolean closed;
-    field protected java.util.zip.Inflater inf;
-    field protected int len;
-  }
-
-  public class InflaterOutputStream extends java.io.FilterOutputStream {
-    ctor public InflaterOutputStream(java.io.OutputStream);
-    ctor public InflaterOutputStream(java.io.OutputStream, java.util.zip.Inflater);
-    ctor public InflaterOutputStream(java.io.OutputStream, java.util.zip.Inflater, int);
-    method public void finish() throws java.io.IOException;
-    field protected final byte[] buf;
-    field protected final java.util.zip.Inflater inf;
-  }
-
-  public class ZipEntry implements java.lang.Cloneable {
-    ctor public ZipEntry(String);
-    ctor public ZipEntry(java.util.zip.ZipEntry);
-    method public Object clone();
-    method public String getComment();
-    method public long getCompressedSize();
-    method public long getCrc();
-    method public java.nio.file.attribute.FileTime getCreationTime();
-    method public byte[] getExtra();
-    method public java.nio.file.attribute.FileTime getLastAccessTime();
-    method public java.nio.file.attribute.FileTime getLastModifiedTime();
-    method public int getMethod();
-    method public String getName();
-    method public long getSize();
-    method public long getTime();
-    method public boolean isDirectory();
-    method public void setComment(String);
-    method public void setCompressedSize(long);
-    method public void setCrc(long);
-    method public java.util.zip.ZipEntry setCreationTime(java.nio.file.attribute.FileTime);
-    method public void setExtra(byte[]);
-    method public java.util.zip.ZipEntry setLastAccessTime(java.nio.file.attribute.FileTime);
-    method public java.util.zip.ZipEntry setLastModifiedTime(java.nio.file.attribute.FileTime);
-    method public void setMethod(int);
-    method public void setSize(long);
-    method public void setTime(long);
-    field public static final int CENATT = 36; // 0x24
-    field public static final int CENATX = 38; // 0x26
-    field public static final int CENCOM = 32; // 0x20
-    field public static final int CENCRC = 16; // 0x10
-    field public static final int CENDSK = 34; // 0x22
-    field public static final int CENEXT = 30; // 0x1e
-    field public static final int CENFLG = 8; // 0x8
-    field public static final int CENHDR = 46; // 0x2e
-    field public static final int CENHOW = 10; // 0xa
-    field public static final int CENLEN = 24; // 0x18
-    field public static final int CENNAM = 28; // 0x1c
-    field public static final int CENOFF = 42; // 0x2a
-    field public static final long CENSIG = 33639248L; // 0x2014b50L
-    field public static final int CENSIZ = 20; // 0x14
-    field public static final int CENTIM = 12; // 0xc
-    field public static final int CENVEM = 4; // 0x4
-    field public static final int CENVER = 6; // 0x6
-    field public static final int DEFLATED = 8; // 0x8
-    field public static final int ENDCOM = 20; // 0x14
-    field public static final int ENDHDR = 22; // 0x16
-    field public static final int ENDOFF = 16; // 0x10
-    field public static final long ENDSIG = 101010256L; // 0x6054b50L
-    field public static final int ENDSIZ = 12; // 0xc
-    field public static final int ENDSUB = 8; // 0x8
-    field public static final int ENDTOT = 10; // 0xa
-    field public static final int EXTCRC = 4; // 0x4
-    field public static final int EXTHDR = 16; // 0x10
-    field public static final int EXTLEN = 12; // 0xc
-    field public static final long EXTSIG = 134695760L; // 0x8074b50L
-    field public static final int EXTSIZ = 8; // 0x8
-    field public static final int LOCCRC = 14; // 0xe
-    field public static final int LOCEXT = 28; // 0x1c
-    field public static final int LOCFLG = 6; // 0x6
-    field public static final int LOCHDR = 30; // 0x1e
-    field public static final int LOCHOW = 8; // 0x8
-    field public static final int LOCLEN = 22; // 0x16
-    field public static final int LOCNAM = 26; // 0x1a
-    field public static final long LOCSIG = 67324752L; // 0x4034b50L
-    field public static final int LOCSIZ = 18; // 0x12
-    field public static final int LOCTIM = 10; // 0xa
-    field public static final int LOCVER = 4; // 0x4
-    field public static final int STORED = 0; // 0x0
-  }
-
-  public class ZipError extends java.lang.InternalError {
-    ctor public ZipError(String);
-  }
-
-  public class ZipException extends java.io.IOException {
-    ctor public ZipException();
-    ctor public ZipException(String);
-  }
-
-  public class ZipFile implements java.io.Closeable {
-    ctor public ZipFile(String) throws java.io.IOException;
-    ctor public ZipFile(java.io.File, int) throws java.io.IOException;
-    ctor public ZipFile(java.io.File) throws java.io.IOException, java.util.zip.ZipException;
-    ctor public ZipFile(java.io.File, int, java.nio.charset.Charset) throws java.io.IOException;
-    ctor public ZipFile(String, java.nio.charset.Charset) throws java.io.IOException;
-    ctor public ZipFile(java.io.File, java.nio.charset.Charset) throws java.io.IOException;
-    method public void close() throws java.io.IOException;
-    method public java.util.Enumeration<? extends java.util.zip.ZipEntry> entries();
-    method protected void finalize() throws java.io.IOException;
-    method public String getComment();
-    method public java.util.zip.ZipEntry getEntry(String);
-    method public java.io.InputStream getInputStream(java.util.zip.ZipEntry) throws java.io.IOException;
-    method public String getName();
-    method public int size();
-    method public java.util.stream.Stream<? extends java.util.zip.ZipEntry> stream();
-    field public static final int CENATT = 36; // 0x24
-    field public static final int CENATX = 38; // 0x26
-    field public static final int CENCOM = 32; // 0x20
-    field public static final int CENCRC = 16; // 0x10
-    field public static final int CENDSK = 34; // 0x22
-    field public static final int CENEXT = 30; // 0x1e
-    field public static final int CENFLG = 8; // 0x8
-    field public static final int CENHDR = 46; // 0x2e
-    field public static final int CENHOW = 10; // 0xa
-    field public static final int CENLEN = 24; // 0x18
-    field public static final int CENNAM = 28; // 0x1c
-    field public static final int CENOFF = 42; // 0x2a
-    field public static final long CENSIG = 33639248L; // 0x2014b50L
-    field public static final int CENSIZ = 20; // 0x14
-    field public static final int CENTIM = 12; // 0xc
-    field public static final int CENVEM = 4; // 0x4
-    field public static final int CENVER = 6; // 0x6
-    field public static final int ENDCOM = 20; // 0x14
-    field public static final int ENDHDR = 22; // 0x16
-    field public static final int ENDOFF = 16; // 0x10
-    field public static final long ENDSIG = 101010256L; // 0x6054b50L
-    field public static final int ENDSIZ = 12; // 0xc
-    field public static final int ENDSUB = 8; // 0x8
-    field public static final int ENDTOT = 10; // 0xa
-    field public static final int EXTCRC = 4; // 0x4
-    field public static final int EXTHDR = 16; // 0x10
-    field public static final int EXTLEN = 12; // 0xc
-    field public static final long EXTSIG = 134695760L; // 0x8074b50L
-    field public static final int EXTSIZ = 8; // 0x8
-    field public static final int LOCCRC = 14; // 0xe
-    field public static final int LOCEXT = 28; // 0x1c
-    field public static final int LOCFLG = 6; // 0x6
-    field public static final int LOCHDR = 30; // 0x1e
-    field public static final int LOCHOW = 8; // 0x8
-    field public static final int LOCLEN = 22; // 0x16
-    field public static final int LOCNAM = 26; // 0x1a
-    field public static final long LOCSIG = 67324752L; // 0x4034b50L
-    field public static final int LOCSIZ = 18; // 0x12
-    field public static final int LOCTIM = 10; // 0xa
-    field public static final int LOCVER = 4; // 0x4
-    field public static final int OPEN_DELETE = 4; // 0x4
-    field public static final int OPEN_READ = 1; // 0x1
-  }
-
-  public class ZipInputStream extends java.util.zip.InflaterInputStream {
-    ctor public ZipInputStream(java.io.InputStream);
-    ctor public ZipInputStream(java.io.InputStream, java.nio.charset.Charset);
-    method public void closeEntry() throws java.io.IOException;
-    method protected java.util.zip.ZipEntry createZipEntry(String);
-    method public java.util.zip.ZipEntry getNextEntry() throws java.io.IOException;
-    field public static final int CENATT = 36; // 0x24
-    field public static final int CENATX = 38; // 0x26
-    field public static final int CENCOM = 32; // 0x20
-    field public static final int CENCRC = 16; // 0x10
-    field public static final int CENDSK = 34; // 0x22
-    field public static final int CENEXT = 30; // 0x1e
-    field public static final int CENFLG = 8; // 0x8
-    field public static final int CENHDR = 46; // 0x2e
-    field public static final int CENHOW = 10; // 0xa
-    field public static final int CENLEN = 24; // 0x18
-    field public static final int CENNAM = 28; // 0x1c
-    field public static final int CENOFF = 42; // 0x2a
-    field public static final long CENSIG = 33639248L; // 0x2014b50L
-    field public static final int CENSIZ = 20; // 0x14
-    field public static final int CENTIM = 12; // 0xc
-    field public static final int CENVEM = 4; // 0x4
-    field public static final int CENVER = 6; // 0x6
-    field public static final int ENDCOM = 20; // 0x14
-    field public static final int ENDHDR = 22; // 0x16
-    field public static final int ENDOFF = 16; // 0x10
-    field public static final long ENDSIG = 101010256L; // 0x6054b50L
-    field public static final int ENDSIZ = 12; // 0xc
-    field public static final int ENDSUB = 8; // 0x8
-    field public static final int ENDTOT = 10; // 0xa
-    field public static final int EXTCRC = 4; // 0x4
-    field public static final int EXTHDR = 16; // 0x10
-    field public static final int EXTLEN = 12; // 0xc
-    field public static final long EXTSIG = 134695760L; // 0x8074b50L
-    field public static final int EXTSIZ = 8; // 0x8
-    field public static final int LOCCRC = 14; // 0xe
-    field public static final int LOCEXT = 28; // 0x1c
-    field public static final int LOCFLG = 6; // 0x6
-    field public static final int LOCHDR = 30; // 0x1e
-    field public static final int LOCHOW = 8; // 0x8
-    field public static final int LOCLEN = 22; // 0x16
-    field public static final int LOCNAM = 26; // 0x1a
-    field public static final long LOCSIG = 67324752L; // 0x4034b50L
-    field public static final int LOCSIZ = 18; // 0x12
-    field public static final int LOCTIM = 10; // 0xa
-    field public static final int LOCVER = 4; // 0x4
-  }
-
-  public class ZipOutputStream extends java.util.zip.DeflaterOutputStream {
-    ctor public ZipOutputStream(java.io.OutputStream);
-    ctor public ZipOutputStream(java.io.OutputStream, java.nio.charset.Charset);
-    method public void closeEntry() throws java.io.IOException;
-    method public void putNextEntry(java.util.zip.ZipEntry) throws java.io.IOException;
-    method public void setComment(String);
-    method public void setLevel(int);
-    method public void setMethod(int);
-    field public static final int CENATT = 36; // 0x24
-    field public static final int CENATX = 38; // 0x26
-    field public static final int CENCOM = 32; // 0x20
-    field public static final int CENCRC = 16; // 0x10
-    field public static final int CENDSK = 34; // 0x22
-    field public static final int CENEXT = 30; // 0x1e
-    field public static final int CENFLG = 8; // 0x8
-    field public static final int CENHDR = 46; // 0x2e
-    field public static final int CENHOW = 10; // 0xa
-    field public static final int CENLEN = 24; // 0x18
-    field public static final int CENNAM = 28; // 0x1c
-    field public static final int CENOFF = 42; // 0x2a
-    field public static final long CENSIG = 33639248L; // 0x2014b50L
-    field public static final int CENSIZ = 20; // 0x14
-    field public static final int CENTIM = 12; // 0xc
-    field public static final int CENVEM = 4; // 0x4
-    field public static final int CENVER = 6; // 0x6
-    field public static final int DEFLATED = 8; // 0x8
-    field public static final int ENDCOM = 20; // 0x14
-    field public static final int ENDHDR = 22; // 0x16
-    field public static final int ENDOFF = 16; // 0x10
-    field public static final long ENDSIG = 101010256L; // 0x6054b50L
-    field public static final int ENDSIZ = 12; // 0xc
-    field public static final int ENDSUB = 8; // 0x8
-    field public static final int ENDTOT = 10; // 0xa
-    field public static final int EXTCRC = 4; // 0x4
-    field public static final int EXTHDR = 16; // 0x10
-    field public static final int EXTLEN = 12; // 0xc
-    field public static final long EXTSIG = 134695760L; // 0x8074b50L
-    field public static final int EXTSIZ = 8; // 0x8
-    field public static final int LOCCRC = 14; // 0xe
-    field public static final int LOCEXT = 28; // 0x1c
-    field public static final int LOCFLG = 6; // 0x6
-    field public static final int LOCHDR = 30; // 0x1e
-    field public static final int LOCHOW = 8; // 0x8
-    field public static final int LOCLEN = 22; // 0x16
-    field public static final int LOCNAM = 26; // 0x1a
-    field public static final long LOCSIG = 67324752L; // 0x4034b50L
-    field public static final int LOCSIZ = 18; // 0x12
-    field public static final int LOCTIM = 10; // 0xa
-    field public static final int LOCVER = 4; // 0x4
-    field public static final int STORED = 0; // 0x0
-  }
-
-}
-
-package javax.crypto {
-
-  public class AEADBadTagException extends javax.crypto.BadPaddingException {
-    ctor public AEADBadTagException();
-    ctor public AEADBadTagException(String);
-  }
-
-  public class BadPaddingException extends java.security.GeneralSecurityException {
-    ctor public BadPaddingException();
-    ctor public BadPaddingException(String);
-  }
-
-  public class Cipher {
-    ctor protected Cipher(javax.crypto.CipherSpi, java.security.Provider, String);
-    method public final byte[] doFinal() throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException;
-    method public final int doFinal(byte[], int) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException;
-    method public final byte[] doFinal(byte[]) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException;
-    method public final byte[] doFinal(byte[], int, int) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException;
-    method public final int doFinal(byte[], int, int, byte[]) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException;
-    method public final int doFinal(byte[], int, int, byte[], int) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException;
-    method public final int doFinal(java.nio.ByteBuffer, java.nio.ByteBuffer) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException;
-    method public final String getAlgorithm();
-    method public final int getBlockSize();
-    method public final javax.crypto.ExemptionMechanism getExemptionMechanism();
-    method public final byte[] getIV();
-    method public static final javax.crypto.Cipher getInstance(String) throws java.security.NoSuchAlgorithmException, javax.crypto.NoSuchPaddingException;
-    method public static final javax.crypto.Cipher getInstance(String, String) throws java.security.NoSuchAlgorithmException, javax.crypto.NoSuchPaddingException, java.security.NoSuchProviderException;
-    method public static final javax.crypto.Cipher getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException, javax.crypto.NoSuchPaddingException;
-    method public static final int getMaxAllowedKeyLength(String) throws java.security.NoSuchAlgorithmException;
-    method public static final java.security.spec.AlgorithmParameterSpec getMaxAllowedParameterSpec(String) throws java.security.NoSuchAlgorithmException;
-    method public final int getOutputSize(int);
-    method public final java.security.AlgorithmParameters getParameters();
-    method public final java.security.Provider getProvider();
-    method public final void init(int, java.security.Key) throws java.security.InvalidKeyException;
-    method public final void init(int, java.security.Key, java.security.SecureRandom) throws java.security.InvalidKeyException;
-    method public final void init(int, java.security.Key, java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-    method public final void init(int, java.security.Key, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-    method public final void init(int, java.security.Key, java.security.AlgorithmParameters) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-    method public final void init(int, java.security.Key, java.security.AlgorithmParameters, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-    method public final void init(int, java.security.cert.Certificate) throws java.security.InvalidKeyException;
-    method public final void init(int, java.security.cert.Certificate, java.security.SecureRandom) throws java.security.InvalidKeyException;
-    method public final java.security.Key unwrap(byte[], String, int) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
-    method public final byte[] update(byte[]);
-    method public final byte[] update(byte[], int, int);
-    method public final int update(byte[], int, int, byte[]) throws javax.crypto.ShortBufferException;
-    method public final int update(byte[], int, int, byte[], int) throws javax.crypto.ShortBufferException;
-    method public final int update(java.nio.ByteBuffer, java.nio.ByteBuffer) throws javax.crypto.ShortBufferException;
-    method public final void updateAAD(byte[]);
-    method public final void updateAAD(byte[], int, int);
-    method public final void updateAAD(java.nio.ByteBuffer);
-    method public final byte[] wrap(java.security.Key) throws javax.crypto.IllegalBlockSizeException, java.security.InvalidKeyException;
-    field public static final int DECRYPT_MODE = 2; // 0x2
-    field public static final int ENCRYPT_MODE = 1; // 0x1
-    field public static final int PRIVATE_KEY = 2; // 0x2
-    field public static final int PUBLIC_KEY = 1; // 0x1
-    field public static final int SECRET_KEY = 3; // 0x3
-    field public static final int UNWRAP_MODE = 4; // 0x4
-    field public static final int WRAP_MODE = 3; // 0x3
-  }
-
-  public class CipherInputStream extends java.io.FilterInputStream {
-    ctor public CipherInputStream(java.io.InputStream, javax.crypto.Cipher);
-    ctor protected CipherInputStream(java.io.InputStream);
-  }
-
-  public class CipherOutputStream extends java.io.FilterOutputStream {
-    ctor public CipherOutputStream(java.io.OutputStream, javax.crypto.Cipher);
-    ctor protected CipherOutputStream(java.io.OutputStream);
-  }
-
-  public abstract class CipherSpi {
-    ctor public CipherSpi();
-    method protected abstract byte[] engineDoFinal(byte[], int, int) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException;
-    method protected abstract int engineDoFinal(byte[], int, int, byte[], int) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException;
-    method protected int engineDoFinal(java.nio.ByteBuffer, java.nio.ByteBuffer) throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException;
-    method protected abstract int engineGetBlockSize();
-    method protected abstract byte[] engineGetIV();
-    method protected int engineGetKeySize(java.security.Key) throws java.security.InvalidKeyException;
-    method protected abstract int engineGetOutputSize(int);
-    method protected abstract java.security.AlgorithmParameters engineGetParameters();
-    method protected abstract void engineInit(int, java.security.Key, java.security.SecureRandom) throws java.security.InvalidKeyException;
-    method protected abstract void engineInit(int, java.security.Key, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-    method protected abstract void engineInit(int, java.security.Key, java.security.AlgorithmParameters, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-    method protected abstract void engineSetMode(String) throws java.security.NoSuchAlgorithmException;
-    method protected abstract void engineSetPadding(String) throws javax.crypto.NoSuchPaddingException;
-    method protected java.security.Key engineUnwrap(byte[], String, int) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
-    method protected abstract byte[] engineUpdate(byte[], int, int);
-    method protected abstract int engineUpdate(byte[], int, int, byte[], int) throws javax.crypto.ShortBufferException;
-    method protected int engineUpdate(java.nio.ByteBuffer, java.nio.ByteBuffer) throws javax.crypto.ShortBufferException;
-    method protected void engineUpdateAAD(byte[], int, int);
-    method protected void engineUpdateAAD(java.nio.ByteBuffer);
-    method protected byte[] engineWrap(java.security.Key) throws javax.crypto.IllegalBlockSizeException, java.security.InvalidKeyException;
-  }
-
-  public class EncryptedPrivateKeyInfo {
-    ctor public EncryptedPrivateKeyInfo(byte[]) throws java.io.IOException;
-    ctor public EncryptedPrivateKeyInfo(String, byte[]) throws java.security.NoSuchAlgorithmException;
-    ctor public EncryptedPrivateKeyInfo(java.security.AlgorithmParameters, byte[]) throws java.security.NoSuchAlgorithmException;
-    method public String getAlgName();
-    method public java.security.AlgorithmParameters getAlgParameters();
-    method public byte[] getEncoded() throws java.io.IOException;
-    method public byte[] getEncryptedData();
-    method public java.security.spec.PKCS8EncodedKeySpec getKeySpec(javax.crypto.Cipher) throws java.security.spec.InvalidKeySpecException;
-    method public java.security.spec.PKCS8EncodedKeySpec getKeySpec(java.security.Key) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
-    method public java.security.spec.PKCS8EncodedKeySpec getKeySpec(java.security.Key, String) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public java.security.spec.PKCS8EncodedKeySpec getKeySpec(java.security.Key, java.security.Provider) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
-  }
-
-  public class ExemptionMechanism {
-    ctor protected ExemptionMechanism(javax.crypto.ExemptionMechanismSpi, java.security.Provider, String);
-    method public final byte[] genExemptionBlob() throws javax.crypto.ExemptionMechanismException, java.lang.IllegalStateException;
-    method public final int genExemptionBlob(byte[]) throws javax.crypto.ExemptionMechanismException, java.lang.IllegalStateException, javax.crypto.ShortBufferException;
-    method public final int genExemptionBlob(byte[], int) throws javax.crypto.ExemptionMechanismException, java.lang.IllegalStateException, javax.crypto.ShortBufferException;
-    method public static final javax.crypto.ExemptionMechanism getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static final javax.crypto.ExemptionMechanism getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static final javax.crypto.ExemptionMechanism getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final String getName();
-    method public final int getOutputSize(int) throws java.lang.IllegalStateException;
-    method public final java.security.Provider getProvider();
-    method public final void init(java.security.Key) throws javax.crypto.ExemptionMechanismException, java.security.InvalidKeyException;
-    method public final void init(java.security.Key, java.security.spec.AlgorithmParameterSpec) throws javax.crypto.ExemptionMechanismException, java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-    method public final void init(java.security.Key, java.security.AlgorithmParameters) throws javax.crypto.ExemptionMechanismException, java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-    method public final boolean isCryptoAllowed(java.security.Key) throws javax.crypto.ExemptionMechanismException;
-  }
-
-  public class ExemptionMechanismException extends java.security.GeneralSecurityException {
-    ctor public ExemptionMechanismException();
-    ctor public ExemptionMechanismException(String);
-  }
-
-  public abstract class ExemptionMechanismSpi {
-    ctor public ExemptionMechanismSpi();
-    method protected abstract byte[] engineGenExemptionBlob() throws javax.crypto.ExemptionMechanismException;
-    method protected abstract int engineGenExemptionBlob(byte[], int) throws javax.crypto.ExemptionMechanismException, javax.crypto.ShortBufferException;
-    method protected abstract int engineGetOutputSize(int);
-    method protected abstract void engineInit(java.security.Key) throws javax.crypto.ExemptionMechanismException, java.security.InvalidKeyException;
-    method protected abstract void engineInit(java.security.Key, java.security.spec.AlgorithmParameterSpec) throws javax.crypto.ExemptionMechanismException, java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-    method protected abstract void engineInit(java.security.Key, java.security.AlgorithmParameters) throws javax.crypto.ExemptionMechanismException, java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-  }
-
-  public class IllegalBlockSizeException extends java.security.GeneralSecurityException {
-    ctor public IllegalBlockSizeException();
-    ctor public IllegalBlockSizeException(String);
-  }
-
-  public class KeyAgreement {
-    ctor protected KeyAgreement(javax.crypto.KeyAgreementSpi, java.security.Provider, String);
-    method public final java.security.Key doPhase(java.security.Key, boolean) throws java.lang.IllegalStateException, java.security.InvalidKeyException;
-    method public final byte[] generateSecret() throws java.lang.IllegalStateException;
-    method public final int generateSecret(byte[], int) throws java.lang.IllegalStateException, javax.crypto.ShortBufferException;
-    method public final javax.crypto.SecretKey generateSecret(String) throws java.lang.IllegalStateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
-    method public final String getAlgorithm();
-    method public static final javax.crypto.KeyAgreement getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static final javax.crypto.KeyAgreement getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static final javax.crypto.KeyAgreement getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final java.security.Provider getProvider();
-    method public final void init(java.security.Key) throws java.security.InvalidKeyException;
-    method public final void init(java.security.Key, java.security.SecureRandom) throws java.security.InvalidKeyException;
-    method public final void init(java.security.Key, java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-    method public final void init(java.security.Key, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-  }
-
-  public abstract class KeyAgreementSpi {
-    ctor public KeyAgreementSpi();
-    method protected abstract java.security.Key engineDoPhase(java.security.Key, boolean) throws java.lang.IllegalStateException, java.security.InvalidKeyException;
-    method protected abstract byte[] engineGenerateSecret() throws java.lang.IllegalStateException;
-    method protected abstract int engineGenerateSecret(byte[], int) throws java.lang.IllegalStateException, javax.crypto.ShortBufferException;
-    method protected abstract javax.crypto.SecretKey engineGenerateSecret(String) throws java.lang.IllegalStateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
-    method protected abstract void engineInit(java.security.Key, java.security.SecureRandom) throws java.security.InvalidKeyException;
-    method protected abstract void engineInit(java.security.Key, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-  }
-
-  public class KeyGenerator {
-    ctor protected KeyGenerator(javax.crypto.KeyGeneratorSpi, java.security.Provider, String);
-    method public final javax.crypto.SecretKey generateKey();
-    method public final String getAlgorithm();
-    method public static final javax.crypto.KeyGenerator getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static final javax.crypto.KeyGenerator getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static final javax.crypto.KeyGenerator getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final java.security.Provider getProvider();
-    method public final void init(java.security.SecureRandom);
-    method public final void init(java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException;
-    method public final void init(java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException;
-    method public final void init(int);
-    method public final void init(int, java.security.SecureRandom);
-  }
-
-  public abstract class KeyGeneratorSpi {
-    ctor public KeyGeneratorSpi();
-    method protected abstract javax.crypto.SecretKey engineGenerateKey();
-    method protected abstract void engineInit(java.security.SecureRandom);
-    method protected abstract void engineInit(java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) throws java.security.InvalidAlgorithmParameterException;
-    method protected abstract void engineInit(int, java.security.SecureRandom);
-  }
-
-  public class Mac implements java.lang.Cloneable {
-    ctor protected Mac(javax.crypto.MacSpi, java.security.Provider, String);
-    method public final Object clone() throws java.lang.CloneNotSupportedException;
-    method public final byte[] doFinal() throws java.lang.IllegalStateException;
-    method public final void doFinal(byte[], int) throws java.lang.IllegalStateException, javax.crypto.ShortBufferException;
-    method public final byte[] doFinal(byte[]) throws java.lang.IllegalStateException;
-    method public final String getAlgorithm();
-    method public static final javax.crypto.Mac getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static final javax.crypto.Mac getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static final javax.crypto.Mac getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final int getMacLength();
-    method public final java.security.Provider getProvider();
-    method public final void init(java.security.Key) throws java.security.InvalidKeyException;
-    method public final void init(java.security.Key, java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-    method public final void reset();
-    method public final void update(byte) throws java.lang.IllegalStateException;
-    method public final void update(byte[]) throws java.lang.IllegalStateException;
-    method public final void update(byte[], int, int) throws java.lang.IllegalStateException;
-    method public final void update(java.nio.ByteBuffer);
-  }
-
-  public abstract class MacSpi {
-    ctor public MacSpi();
-    method public Object clone() throws java.lang.CloneNotSupportedException;
-    method protected abstract byte[] engineDoFinal();
-    method protected abstract int engineGetMacLength();
-    method protected abstract void engineInit(java.security.Key, java.security.spec.AlgorithmParameterSpec) throws java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException;
-    method protected abstract void engineReset();
-    method protected abstract void engineUpdate(byte);
-    method protected abstract void engineUpdate(byte[], int, int);
-    method protected void engineUpdate(java.nio.ByteBuffer);
-  }
-
-  public class NoSuchPaddingException extends java.security.GeneralSecurityException {
-    ctor public NoSuchPaddingException();
-    ctor public NoSuchPaddingException(String);
-  }
-
-  public class NullCipher extends javax.crypto.Cipher {
-    ctor public NullCipher();
-  }
-
-  public class SealedObject implements java.io.Serializable {
-    ctor public SealedObject(java.io.Serializable, javax.crypto.Cipher) throws java.io.IOException, javax.crypto.IllegalBlockSizeException;
-    ctor protected SealedObject(javax.crypto.SealedObject);
-    method public final String getAlgorithm();
-    method public final Object getObject(java.security.Key) throws java.lang.ClassNotFoundException, java.io.IOException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException;
-    method public final Object getObject(javax.crypto.Cipher) throws javax.crypto.BadPaddingException, java.lang.ClassNotFoundException, java.io.IOException, javax.crypto.IllegalBlockSizeException;
-    method public final Object getObject(java.security.Key, String) throws java.lang.ClassNotFoundException, java.io.IOException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    field protected byte[] encodedParams;
-  }
-
-  public interface SecretKey extends java.security.Key javax.security.auth.Destroyable {
-    field public static final long serialVersionUID = -4795878709595146952L; // 0xbd719db928b8f538L
-  }
-
-  public class SecretKeyFactory {
-    ctor protected SecretKeyFactory(javax.crypto.SecretKeyFactorySpi, java.security.Provider, String);
-    method public final javax.crypto.SecretKey generateSecret(java.security.spec.KeySpec) throws java.security.spec.InvalidKeySpecException;
-    method public final String getAlgorithm();
-    method public static final javax.crypto.SecretKeyFactory getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static final javax.crypto.SecretKeyFactory getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static final javax.crypto.SecretKeyFactory getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final java.security.spec.KeySpec getKeySpec(javax.crypto.SecretKey, Class<?>) throws java.security.spec.InvalidKeySpecException;
-    method public final java.security.Provider getProvider();
-    method public final javax.crypto.SecretKey translateKey(javax.crypto.SecretKey) throws java.security.InvalidKeyException;
-  }
-
-  public abstract class SecretKeyFactorySpi {
-    ctor public SecretKeyFactorySpi();
-    method protected abstract javax.crypto.SecretKey engineGenerateSecret(java.security.spec.KeySpec) throws java.security.spec.InvalidKeySpecException;
-    method protected abstract java.security.spec.KeySpec engineGetKeySpec(javax.crypto.SecretKey, Class<?>) throws java.security.spec.InvalidKeySpecException;
-    method protected abstract javax.crypto.SecretKey engineTranslateKey(javax.crypto.SecretKey) throws java.security.InvalidKeyException;
-  }
-
-  public class ShortBufferException extends java.security.GeneralSecurityException {
-    ctor public ShortBufferException();
-    ctor public ShortBufferException(String);
-  }
-
-}
-
-package javax.crypto.interfaces {
-
-  public interface DHKey {
-    method public javax.crypto.spec.DHParameterSpec getParams();
-  }
-
-  public interface DHPrivateKey extends javax.crypto.interfaces.DHKey java.security.PrivateKey {
-    method public java.math.BigInteger getX();
-    field public static final long serialVersionUID = 2211791113380396553L; // 0x1eb1dc4c8e677e09L
-  }
-
-  public interface DHPublicKey extends javax.crypto.interfaces.DHKey java.security.PublicKey {
-    method public java.math.BigInteger getY();
-    field public static final long serialVersionUID = -6628103563352519193L; // 0xa4043eed23df4de7L
-  }
-
-  public interface PBEKey extends javax.crypto.SecretKey {
-    method public int getIterationCount();
-    method public char[] getPassword();
-    method public byte[] getSalt();
-    field public static final long serialVersionUID = -1430015993304333921L; // 0xec279007d7f7c19fL
-  }
-
-}
-
-package javax.crypto.spec {
-
-  public class DESKeySpec implements java.security.spec.KeySpec {
-    ctor public DESKeySpec(byte[]) throws java.security.InvalidKeyException;
-    ctor public DESKeySpec(byte[], int) throws java.security.InvalidKeyException;
-    method public byte[] getKey();
-    method public static boolean isParityAdjusted(byte[], int) throws java.security.InvalidKeyException;
-    method public static boolean isWeak(byte[], int) throws java.security.InvalidKeyException;
-    field public static final int DES_KEY_LEN = 8; // 0x8
-  }
-
-  public class DESedeKeySpec implements java.security.spec.KeySpec {
-    ctor public DESedeKeySpec(byte[]) throws java.security.InvalidKeyException;
-    ctor public DESedeKeySpec(byte[], int) throws java.security.InvalidKeyException;
-    method public byte[] getKey();
-    method public static boolean isParityAdjusted(byte[], int) throws java.security.InvalidKeyException;
-    field public static final int DES_EDE_KEY_LEN = 24; // 0x18
-  }
-
-  public class DHGenParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public DHGenParameterSpec(int, int);
-    method public int getExponentSize();
-    method public int getPrimeSize();
-  }
-
-  public class DHParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public DHParameterSpec(java.math.BigInteger, java.math.BigInteger);
-    ctor public DHParameterSpec(java.math.BigInteger, java.math.BigInteger, int);
-    method public java.math.BigInteger getG();
-    method public int getL();
-    method public java.math.BigInteger getP();
-  }
-
-  public class DHPrivateKeySpec implements java.security.spec.KeySpec {
-    ctor public DHPrivateKeySpec(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
-    method public java.math.BigInteger getG();
-    method public java.math.BigInteger getP();
-    method public java.math.BigInteger getX();
-  }
-
-  public class DHPublicKeySpec implements java.security.spec.KeySpec {
-    ctor public DHPublicKeySpec(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
-    method public java.math.BigInteger getG();
-    method public java.math.BigInteger getP();
-    method public java.math.BigInteger getY();
-  }
-
-  public class GCMParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public GCMParameterSpec(int, byte[]);
-    ctor public GCMParameterSpec(int, byte[], int, int);
-    method public byte[] getIV();
-    method public int getTLen();
-  }
-
-  public class IvParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public IvParameterSpec(byte[]);
-    ctor public IvParameterSpec(byte[], int, int);
-    method public byte[] getIV();
-  }
-
-  public class OAEPParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public OAEPParameterSpec(String, String, java.security.spec.AlgorithmParameterSpec, javax.crypto.spec.PSource);
-    method public String getDigestAlgorithm();
-    method public String getMGFAlgorithm();
-    method public java.security.spec.AlgorithmParameterSpec getMGFParameters();
-    method public javax.crypto.spec.PSource getPSource();
-    field public static final javax.crypto.spec.OAEPParameterSpec DEFAULT;
-  }
-
-  public class PBEKeySpec implements java.security.spec.KeySpec {
-    ctor public PBEKeySpec(char[]);
-    ctor public PBEKeySpec(char[], byte[], int, int);
-    ctor public PBEKeySpec(char[], byte[], int);
-    method public final void clearPassword();
-    method public final int getIterationCount();
-    method public final int getKeyLength();
-    method public final char[] getPassword();
-    method public final byte[] getSalt();
-  }
-
-  public class PBEParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public PBEParameterSpec(byte[], int);
-    ctor public PBEParameterSpec(byte[], int, java.security.spec.AlgorithmParameterSpec);
-    method public int getIterationCount();
-    method public java.security.spec.AlgorithmParameterSpec getParameterSpec();
-    method public byte[] getSalt();
-  }
-
-  public class PSource {
-    ctor protected PSource(String);
-    method public String getAlgorithm();
-  }
-
-  public static final class PSource.PSpecified extends javax.crypto.spec.PSource {
-    ctor public PSource.PSpecified(byte[]);
-    method public byte[] getValue();
-    field public static final javax.crypto.spec.PSource.PSpecified DEFAULT;
-  }
-
-  public class RC2ParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public RC2ParameterSpec(int);
-    ctor public RC2ParameterSpec(int, byte[]);
-    ctor public RC2ParameterSpec(int, byte[], int);
-    method public int getEffectiveKeyBits();
-    method public byte[] getIV();
-  }
-
-  public class RC5ParameterSpec implements java.security.spec.AlgorithmParameterSpec {
-    ctor public RC5ParameterSpec(int, int, int);
-    ctor public RC5ParameterSpec(int, int, int, byte[]);
-    ctor public RC5ParameterSpec(int, int, int, byte[], int);
-    method public byte[] getIV();
-    method public int getRounds();
-    method public int getVersion();
-    method public int getWordSize();
-  }
-
-  public class SecretKeySpec implements java.security.spec.KeySpec javax.crypto.SecretKey {
-    ctor public SecretKeySpec(byte[], String);
-    ctor public SecretKeySpec(byte[], int, int, String);
-    method public String getAlgorithm();
-    method public byte[] getEncoded();
-    method public String getFormat();
-  }
-
-}
-
-package javax.microedition.khronos.egl {
-
-  public interface EGL {
-  }
-
-  public interface EGL10 extends javax.microedition.khronos.egl.EGL {
-    method public boolean eglChooseConfig(javax.microedition.khronos.egl.EGLDisplay, int[], javax.microedition.khronos.egl.EGLConfig[], int, int[]);
-    method public boolean eglCopyBuffers(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface, Object);
-    method public javax.microedition.khronos.egl.EGLContext eglCreateContext(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, javax.microedition.khronos.egl.EGLContext, int[]);
-    method public javax.microedition.khronos.egl.EGLSurface eglCreatePbufferSurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, int[]);
-    method @Deprecated public javax.microedition.khronos.egl.EGLSurface eglCreatePixmapSurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, Object, int[]);
-    method public javax.microedition.khronos.egl.EGLSurface eglCreateWindowSurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, Object, int[]);
-    method public boolean eglDestroyContext(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLContext);
-    method public boolean eglDestroySurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface);
-    method public boolean eglGetConfigAttrib(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig, int, int[]);
-    method public boolean eglGetConfigs(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLConfig[], int, int[]);
-    method public javax.microedition.khronos.egl.EGLContext eglGetCurrentContext();
-    method public javax.microedition.khronos.egl.EGLDisplay eglGetCurrentDisplay();
-    method public javax.microedition.khronos.egl.EGLSurface eglGetCurrentSurface(int);
-    method public javax.microedition.khronos.egl.EGLDisplay eglGetDisplay(Object);
-    method public int eglGetError();
-    method public boolean eglInitialize(javax.microedition.khronos.egl.EGLDisplay, int[]);
-    method public boolean eglMakeCurrent(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface, javax.microedition.khronos.egl.EGLSurface, javax.microedition.khronos.egl.EGLContext);
-    method public boolean eglQueryContext(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLContext, int, int[]);
-    method public String eglQueryString(javax.microedition.khronos.egl.EGLDisplay, int);
-    method public boolean eglQuerySurface(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface, int, int[]);
-    method public boolean eglSwapBuffers(javax.microedition.khronos.egl.EGLDisplay, javax.microedition.khronos.egl.EGLSurface);
-    method public boolean eglTerminate(javax.microedition.khronos.egl.EGLDisplay);
-    method public boolean eglWaitGL();
-    method public boolean eglWaitNative(int, Object);
-    field public static final int EGL_ALPHA_FORMAT = 12424; // 0x3088
-    field public static final int EGL_ALPHA_MASK_SIZE = 12350; // 0x303e
-    field public static final int EGL_ALPHA_SIZE = 12321; // 0x3021
-    field public static final int EGL_BAD_ACCESS = 12290; // 0x3002
-    field public static final int EGL_BAD_ALLOC = 12291; // 0x3003
-    field public static final int EGL_BAD_ATTRIBUTE = 12292; // 0x3004
-    field public static final int EGL_BAD_CONFIG = 12293; // 0x3005
-    field public static final int EGL_BAD_CONTEXT = 12294; // 0x3006
-    field public static final int EGL_BAD_CURRENT_SURFACE = 12295; // 0x3007
-    field public static final int EGL_BAD_DISPLAY = 12296; // 0x3008
-    field public static final int EGL_BAD_MATCH = 12297; // 0x3009
-    field public static final int EGL_BAD_NATIVE_PIXMAP = 12298; // 0x300a
-    field public static final int EGL_BAD_NATIVE_WINDOW = 12299; // 0x300b
-    field public static final int EGL_BAD_PARAMETER = 12300; // 0x300c
-    field public static final int EGL_BAD_SURFACE = 12301; // 0x300d
-    field public static final int EGL_BLUE_SIZE = 12322; // 0x3022
-    field public static final int EGL_BUFFER_SIZE = 12320; // 0x3020
-    field public static final int EGL_COLORSPACE = 12423; // 0x3087
-    field public static final int EGL_COLOR_BUFFER_TYPE = 12351; // 0x303f
-    field public static final int EGL_CONFIG_CAVEAT = 12327; // 0x3027
-    field public static final int EGL_CONFIG_ID = 12328; // 0x3028
-    field public static final int EGL_CORE_NATIVE_ENGINE = 12379; // 0x305b
-    field public static final Object EGL_DEFAULT_DISPLAY;
-    field public static final int EGL_DEPTH_SIZE = 12325; // 0x3025
-    field public static final int EGL_DONT_CARE = -1; // 0xffffffff
-    field public static final int EGL_DRAW = 12377; // 0x3059
-    field public static final int EGL_EXTENSIONS = 12373; // 0x3055
-    field public static final int EGL_GREEN_SIZE = 12323; // 0x3023
-    field public static final int EGL_HEIGHT = 12374; // 0x3056
-    field public static final int EGL_HORIZONTAL_RESOLUTION = 12432; // 0x3090
-    field public static final int EGL_LARGEST_PBUFFER = 12376; // 0x3058
-    field public static final int EGL_LEVEL = 12329; // 0x3029
-    field public static final int EGL_LUMINANCE_BUFFER = 12431; // 0x308f
-    field public static final int EGL_LUMINANCE_SIZE = 12349; // 0x303d
-    field public static final int EGL_MAX_PBUFFER_HEIGHT = 12330; // 0x302a
-    field public static final int EGL_MAX_PBUFFER_PIXELS = 12331; // 0x302b
-    field public static final int EGL_MAX_PBUFFER_WIDTH = 12332; // 0x302c
-    field public static final int EGL_NATIVE_RENDERABLE = 12333; // 0x302d
-    field public static final int EGL_NATIVE_VISUAL_ID = 12334; // 0x302e
-    field public static final int EGL_NATIVE_VISUAL_TYPE = 12335; // 0x302f
-    field public static final int EGL_NONE = 12344; // 0x3038
-    field public static final int EGL_NON_CONFORMANT_CONFIG = 12369; // 0x3051
-    field public static final int EGL_NOT_INITIALIZED = 12289; // 0x3001
-    field public static final javax.microedition.khronos.egl.EGLContext EGL_NO_CONTEXT;
-    field public static final javax.microedition.khronos.egl.EGLDisplay EGL_NO_DISPLAY;
-    field public static final javax.microedition.khronos.egl.EGLSurface EGL_NO_SURFACE;
-    field public static final int EGL_PBUFFER_BIT = 1; // 0x1
-    field public static final int EGL_PIXEL_ASPECT_RATIO = 12434; // 0x3092
-    field public static final int EGL_PIXMAP_BIT = 2; // 0x2
-    field public static final int EGL_READ = 12378; // 0x305a
-    field public static final int EGL_RED_SIZE = 12324; // 0x3024
-    field public static final int EGL_RENDERABLE_TYPE = 12352; // 0x3040
-    field public static final int EGL_RENDER_BUFFER = 12422; // 0x3086
-    field public static final int EGL_RGB_BUFFER = 12430; // 0x308e
-    field public static final int EGL_SAMPLES = 12337; // 0x3031
-    field public static final int EGL_SAMPLE_BUFFERS = 12338; // 0x3032
-    field public static final int EGL_SINGLE_BUFFER = 12421; // 0x3085
-    field public static final int EGL_SLOW_CONFIG = 12368; // 0x3050
-    field public static final int EGL_STENCIL_SIZE = 12326; // 0x3026
-    field public static final int EGL_SUCCESS = 12288; // 0x3000
-    field public static final int EGL_SURFACE_TYPE = 12339; // 0x3033
-    field public static final int EGL_TRANSPARENT_BLUE_VALUE = 12341; // 0x3035
-    field public static final int EGL_TRANSPARENT_GREEN_VALUE = 12342; // 0x3036
-    field public static final int EGL_TRANSPARENT_RED_VALUE = 12343; // 0x3037
-    field public static final int EGL_TRANSPARENT_RGB = 12370; // 0x3052
-    field public static final int EGL_TRANSPARENT_TYPE = 12340; // 0x3034
-    field public static final int EGL_VENDOR = 12371; // 0x3053
-    field public static final int EGL_VERSION = 12372; // 0x3054
-    field public static final int EGL_VERTICAL_RESOLUTION = 12433; // 0x3091
-    field public static final int EGL_WIDTH = 12375; // 0x3057
-    field public static final int EGL_WINDOW_BIT = 4; // 0x4
-  }
-
-  public interface EGL11 extends javax.microedition.khronos.egl.EGL10 {
-    field public static final int EGL_CONTEXT_LOST = 12302; // 0x300e
-  }
-
-  public abstract class EGLConfig {
-    ctor public EGLConfig();
-  }
-
-  public abstract class EGLContext {
-    ctor public EGLContext();
-    method public static javax.microedition.khronos.egl.EGL getEGL();
-    method public abstract javax.microedition.khronos.opengles.GL getGL();
-  }
-
-  public abstract class EGLDisplay {
-    ctor public EGLDisplay();
-  }
-
-  public abstract class EGLSurface {
-    ctor public EGLSurface();
-  }
-
-}
-
-package javax.microedition.khronos.opengles {
-
-  public interface GL {
-  }
-
-  public interface GL10 extends javax.microedition.khronos.opengles.GL {
-    method public void glActiveTexture(int);
-    method public void glAlphaFunc(int, float);
-    method public void glAlphaFuncx(int, int);
-    method public void glBindTexture(int, int);
-    method public void glBlendFunc(int, int);
-    method public void glClear(int);
-    method public void glClearColor(float, float, float, float);
-    method public void glClearColorx(int, int, int, int);
-    method public void glClearDepthf(float);
-    method public void glClearDepthx(int);
-    method public void glClearStencil(int);
-    method public void glClientActiveTexture(int);
-    method public void glColor4f(float, float, float, float);
-    method public void glColor4x(int, int, int, int);
-    method public void glColorMask(boolean, boolean, boolean, boolean);
-    method public void glColorPointer(int, int, int, java.nio.Buffer);
-    method public void glCompressedTexImage2D(int, int, int, int, int, int, int, java.nio.Buffer);
-    method public void glCompressedTexSubImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public void glCopyTexImage2D(int, int, int, int, int, int, int, int);
-    method public void glCopyTexSubImage2D(int, int, int, int, int, int, int, int);
-    method public void glCullFace(int);
-    method public void glDeleteTextures(int, int[], int);
-    method public void glDeleteTextures(int, java.nio.IntBuffer);
-    method public void glDepthFunc(int);
-    method public void glDepthMask(boolean);
-    method public void glDepthRangef(float, float);
-    method public void glDepthRangex(int, int);
-    method public void glDisable(int);
-    method public void glDisableClientState(int);
-    method public void glDrawArrays(int, int, int);
-    method public void glDrawElements(int, int, int, java.nio.Buffer);
-    method public void glEnable(int);
-    method public void glEnableClientState(int);
-    method public void glFinish();
-    method public void glFlush();
-    method public void glFogf(int, float);
-    method public void glFogfv(int, float[], int);
-    method public void glFogfv(int, java.nio.FloatBuffer);
-    method public void glFogx(int, int);
-    method public void glFogxv(int, int[], int);
-    method public void glFogxv(int, java.nio.IntBuffer);
-    method public void glFrontFace(int);
-    method public void glFrustumf(float, float, float, float, float, float);
-    method public void glFrustumx(int, int, int, int, int, int);
-    method public void glGenTextures(int, int[], int);
-    method public void glGenTextures(int, java.nio.IntBuffer);
-    method public int glGetError();
-    method public void glGetIntegerv(int, int[], int);
-    method public void glGetIntegerv(int, java.nio.IntBuffer);
-    method public String glGetString(int);
-    method public void glHint(int, int);
-    method public void glLightModelf(int, float);
-    method public void glLightModelfv(int, float[], int);
-    method public void glLightModelfv(int, java.nio.FloatBuffer);
-    method public void glLightModelx(int, int);
-    method public void glLightModelxv(int, int[], int);
-    method public void glLightModelxv(int, java.nio.IntBuffer);
-    method public void glLightf(int, int, float);
-    method public void glLightfv(int, int, float[], int);
-    method public void glLightfv(int, int, java.nio.FloatBuffer);
-    method public void glLightx(int, int, int);
-    method public void glLightxv(int, int, int[], int);
-    method public void glLightxv(int, int, java.nio.IntBuffer);
-    method public void glLineWidth(float);
-    method public void glLineWidthx(int);
-    method public void glLoadIdentity();
-    method public void glLoadMatrixf(float[], int);
-    method public void glLoadMatrixf(java.nio.FloatBuffer);
-    method public void glLoadMatrixx(int[], int);
-    method public void glLoadMatrixx(java.nio.IntBuffer);
-    method public void glLogicOp(int);
-    method public void glMaterialf(int, int, float);
-    method public void glMaterialfv(int, int, float[], int);
-    method public void glMaterialfv(int, int, java.nio.FloatBuffer);
-    method public void glMaterialx(int, int, int);
-    method public void glMaterialxv(int, int, int[], int);
-    method public void glMaterialxv(int, int, java.nio.IntBuffer);
-    method public void glMatrixMode(int);
-    method public void glMultMatrixf(float[], int);
-    method public void glMultMatrixf(java.nio.FloatBuffer);
-    method public void glMultMatrixx(int[], int);
-    method public void glMultMatrixx(java.nio.IntBuffer);
-    method public void glMultiTexCoord4f(int, float, float, float, float);
-    method public void glMultiTexCoord4x(int, int, int, int, int);
-    method public void glNormal3f(float, float, float);
-    method public void glNormal3x(int, int, int);
-    method public void glNormalPointer(int, int, java.nio.Buffer);
-    method public void glOrthof(float, float, float, float, float, float);
-    method public void glOrthox(int, int, int, int, int, int);
-    method public void glPixelStorei(int, int);
-    method public void glPointSize(float);
-    method public void glPointSizex(int);
-    method public void glPolygonOffset(float, float);
-    method public void glPolygonOffsetx(int, int);
-    method public void glPopMatrix();
-    method public void glPushMatrix();
-    method public void glReadPixels(int, int, int, int, int, int, java.nio.Buffer);
-    method public void glRotatef(float, float, float, float);
-    method public void glRotatex(int, int, int, int);
-    method public void glSampleCoverage(float, boolean);
-    method public void glSampleCoveragex(int, boolean);
-    method public void glScalef(float, float, float);
-    method public void glScalex(int, int, int);
-    method public void glScissor(int, int, int, int);
-    method public void glShadeModel(int);
-    method public void glStencilFunc(int, int, int);
-    method public void glStencilMask(int);
-    method public void glStencilOp(int, int, int);
-    method public void glTexCoordPointer(int, int, int, java.nio.Buffer);
-    method public void glTexEnvf(int, int, float);
-    method public void glTexEnvfv(int, int, float[], int);
-    method public void glTexEnvfv(int, int, java.nio.FloatBuffer);
-    method public void glTexEnvx(int, int, int);
-    method public void glTexEnvxv(int, int, int[], int);
-    method public void glTexEnvxv(int, int, java.nio.IntBuffer);
-    method public void glTexImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public void glTexParameterf(int, int, float);
-    method public void glTexParameterx(int, int, int);
-    method public void glTexSubImage2D(int, int, int, int, int, int, int, int, java.nio.Buffer);
-    method public void glTranslatef(float, float, float);
-    method public void glTranslatex(int, int, int);
-    method public void glVertexPointer(int, int, int, java.nio.Buffer);
-    method public void glViewport(int, int, int, int);
-    field public static final int GL_ADD = 260; // 0x104
-    field public static final int GL_ALIASED_LINE_WIDTH_RANGE = 33902; // 0x846e
-    field public static final int GL_ALIASED_POINT_SIZE_RANGE = 33901; // 0x846d
-    field public static final int GL_ALPHA = 6406; // 0x1906
-    field public static final int GL_ALPHA_BITS = 3413; // 0xd55
-    field public static final int GL_ALPHA_TEST = 3008; // 0xbc0
-    field public static final int GL_ALWAYS = 519; // 0x207
-    field public static final int GL_AMBIENT = 4608; // 0x1200
-    field public static final int GL_AMBIENT_AND_DIFFUSE = 5634; // 0x1602
-    field public static final int GL_AND = 5377; // 0x1501
-    field public static final int GL_AND_INVERTED = 5380; // 0x1504
-    field public static final int GL_AND_REVERSE = 5378; // 0x1502
-    field public static final int GL_BACK = 1029; // 0x405
-    field public static final int GL_BLEND = 3042; // 0xbe2
-    field public static final int GL_BLUE_BITS = 3412; // 0xd54
-    field public static final int GL_BYTE = 5120; // 0x1400
-    field public static final int GL_CCW = 2305; // 0x901
-    field public static final int GL_CLAMP_TO_EDGE = 33071; // 0x812f
-    field public static final int GL_CLEAR = 5376; // 0x1500
-    field public static final int GL_COLOR_ARRAY = 32886; // 0x8076
-    field public static final int GL_COLOR_BUFFER_BIT = 16384; // 0x4000
-    field public static final int GL_COLOR_LOGIC_OP = 3058; // 0xbf2
-    field public static final int GL_COLOR_MATERIAL = 2903; // 0xb57
-    field public static final int GL_COMPRESSED_TEXTURE_FORMATS = 34467; // 0x86a3
-    field public static final int GL_CONSTANT_ATTENUATION = 4615; // 0x1207
-    field public static final int GL_COPY = 5379; // 0x1503
-    field public static final int GL_COPY_INVERTED = 5388; // 0x150c
-    field public static final int GL_CULL_FACE = 2884; // 0xb44
-    field public static final int GL_CW = 2304; // 0x900
-    field public static final int GL_DECAL = 8449; // 0x2101
-    field public static final int GL_DECR = 7683; // 0x1e03
-    field public static final int GL_DEPTH_BITS = 3414; // 0xd56
-    field public static final int GL_DEPTH_BUFFER_BIT = 256; // 0x100
-    field public static final int GL_DEPTH_TEST = 2929; // 0xb71
-    field public static final int GL_DIFFUSE = 4609; // 0x1201
-    field public static final int GL_DITHER = 3024; // 0xbd0
-    field public static final int GL_DONT_CARE = 4352; // 0x1100
-    field public static final int GL_DST_ALPHA = 772; // 0x304
-    field public static final int GL_DST_COLOR = 774; // 0x306
-    field public static final int GL_EMISSION = 5632; // 0x1600
-    field public static final int GL_EQUAL = 514; // 0x202
-    field public static final int GL_EQUIV = 5385; // 0x1509
-    field public static final int GL_EXP = 2048; // 0x800
-    field public static final int GL_EXP2 = 2049; // 0x801
-    field public static final int GL_EXTENSIONS = 7939; // 0x1f03
-    field public static final int GL_FALSE = 0; // 0x0
-    field public static final int GL_FASTEST = 4353; // 0x1101
-    field public static final int GL_FIXED = 5132; // 0x140c
-    field public static final int GL_FLAT = 7424; // 0x1d00
-    field public static final int GL_FLOAT = 5126; // 0x1406
-    field public static final int GL_FOG = 2912; // 0xb60
-    field public static final int GL_FOG_COLOR = 2918; // 0xb66
-    field public static final int GL_FOG_DENSITY = 2914; // 0xb62
-    field public static final int GL_FOG_END = 2916; // 0xb64
-    field public static final int GL_FOG_HINT = 3156; // 0xc54
-    field public static final int GL_FOG_MODE = 2917; // 0xb65
-    field public static final int GL_FOG_START = 2915; // 0xb63
-    field public static final int GL_FRONT = 1028; // 0x404
-    field public static final int GL_FRONT_AND_BACK = 1032; // 0x408
-    field public static final int GL_GEQUAL = 518; // 0x206
-    field public static final int GL_GREATER = 516; // 0x204
-    field public static final int GL_GREEN_BITS = 3411; // 0xd53
-    field public static final int GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES = 35739; // 0x8b9b
-    field public static final int GL_IMPLEMENTATION_COLOR_READ_TYPE_OES = 35738; // 0x8b9a
-    field public static final int GL_INCR = 7682; // 0x1e02
-    field public static final int GL_INVALID_ENUM = 1280; // 0x500
-    field public static final int GL_INVALID_OPERATION = 1282; // 0x502
-    field public static final int GL_INVALID_VALUE = 1281; // 0x501
-    field public static final int GL_INVERT = 5386; // 0x150a
-    field public static final int GL_KEEP = 7680; // 0x1e00
-    field public static final int GL_LEQUAL = 515; // 0x203
-    field public static final int GL_LESS = 513; // 0x201
-    field public static final int GL_LIGHT0 = 16384; // 0x4000
-    field public static final int GL_LIGHT1 = 16385; // 0x4001
-    field public static final int GL_LIGHT2 = 16386; // 0x4002
-    field public static final int GL_LIGHT3 = 16387; // 0x4003
-    field public static final int GL_LIGHT4 = 16388; // 0x4004
-    field public static final int GL_LIGHT5 = 16389; // 0x4005
-    field public static final int GL_LIGHT6 = 16390; // 0x4006
-    field public static final int GL_LIGHT7 = 16391; // 0x4007
-    field public static final int GL_LIGHTING = 2896; // 0xb50
-    field public static final int GL_LIGHT_MODEL_AMBIENT = 2899; // 0xb53
-    field public static final int GL_LIGHT_MODEL_TWO_SIDE = 2898; // 0xb52
-    field public static final int GL_LINEAR = 9729; // 0x2601
-    field public static final int GL_LINEAR_ATTENUATION = 4616; // 0x1208
-    field public static final int GL_LINEAR_MIPMAP_LINEAR = 9987; // 0x2703
-    field public static final int GL_LINEAR_MIPMAP_NEAREST = 9985; // 0x2701
-    field public static final int GL_LINES = 1; // 0x1
-    field public static final int GL_LINE_LOOP = 2; // 0x2
-    field public static final int GL_LINE_SMOOTH = 2848; // 0xb20
-    field public static final int GL_LINE_SMOOTH_HINT = 3154; // 0xc52
-    field public static final int GL_LINE_STRIP = 3; // 0x3
-    field public static final int GL_LUMINANCE = 6409; // 0x1909
-    field public static final int GL_LUMINANCE_ALPHA = 6410; // 0x190a
-    field public static final int GL_MAX_ELEMENTS_INDICES = 33001; // 0x80e9
-    field public static final int GL_MAX_ELEMENTS_VERTICES = 33000; // 0x80e8
-    field public static final int GL_MAX_LIGHTS = 3377; // 0xd31
-    field public static final int GL_MAX_MODELVIEW_STACK_DEPTH = 3382; // 0xd36
-    field public static final int GL_MAX_PROJECTION_STACK_DEPTH = 3384; // 0xd38
-    field public static final int GL_MAX_TEXTURE_SIZE = 3379; // 0xd33
-    field public static final int GL_MAX_TEXTURE_STACK_DEPTH = 3385; // 0xd39
-    field public static final int GL_MAX_TEXTURE_UNITS = 34018; // 0x84e2
-    field public static final int GL_MAX_VIEWPORT_DIMS = 3386; // 0xd3a
-    field public static final int GL_MODELVIEW = 5888; // 0x1700
-    field public static final int GL_MODULATE = 8448; // 0x2100
-    field public static final int GL_MULTISAMPLE = 32925; // 0x809d
-    field public static final int GL_NAND = 5390; // 0x150e
-    field public static final int GL_NEAREST = 9728; // 0x2600
-    field public static final int GL_NEAREST_MIPMAP_LINEAR = 9986; // 0x2702
-    field public static final int GL_NEAREST_MIPMAP_NEAREST = 9984; // 0x2700
-    field public static final int GL_NEVER = 512; // 0x200
-    field public static final int GL_NICEST = 4354; // 0x1102
-    field public static final int GL_NOOP = 5381; // 0x1505
-    field public static final int GL_NOR = 5384; // 0x1508
-    field public static final int GL_NORMALIZE = 2977; // 0xba1
-    field public static final int GL_NORMAL_ARRAY = 32885; // 0x8075
-    field public static final int GL_NOTEQUAL = 517; // 0x205
-    field public static final int GL_NO_ERROR = 0; // 0x0
-    field public static final int GL_NUM_COMPRESSED_TEXTURE_FORMATS = 34466; // 0x86a2
-    field public static final int GL_ONE = 1; // 0x1
-    field public static final int GL_ONE_MINUS_DST_ALPHA = 773; // 0x305
-    field public static final int GL_ONE_MINUS_DST_COLOR = 775; // 0x307
-    field public static final int GL_ONE_MINUS_SRC_ALPHA = 771; // 0x303
-    field public static final int GL_ONE_MINUS_SRC_COLOR = 769; // 0x301
-    field public static final int GL_OR = 5383; // 0x1507
-    field public static final int GL_OR_INVERTED = 5389; // 0x150d
-    field public static final int GL_OR_REVERSE = 5387; // 0x150b
-    field public static final int GL_OUT_OF_MEMORY = 1285; // 0x505
-    field public static final int GL_PACK_ALIGNMENT = 3333; // 0xd05
-    field public static final int GL_PALETTE4_R5_G6_B5_OES = 35730; // 0x8b92
-    field public static final int GL_PALETTE4_RGB5_A1_OES = 35732; // 0x8b94
-    field public static final int GL_PALETTE4_RGB8_OES = 35728; // 0x8b90
-    field public static final int GL_PALETTE4_RGBA4_OES = 35731; // 0x8b93
-    field public static final int GL_PALETTE4_RGBA8_OES = 35729; // 0x8b91
-    field public static final int GL_PALETTE8_R5_G6_B5_OES = 35735; // 0x8b97
-    field public static final int GL_PALETTE8_RGB5_A1_OES = 35737; // 0x8b99
-    field public static final int GL_PALETTE8_RGB8_OES = 35733; // 0x8b95
-    field public static final int GL_PALETTE8_RGBA4_OES = 35736; // 0x8b98
-    field public static final int GL_PALETTE8_RGBA8_OES = 35734; // 0x8b96
-    field public static final int GL_PERSPECTIVE_CORRECTION_HINT = 3152; // 0xc50
-    field public static final int GL_POINTS = 0; // 0x0
-    field public static final int GL_POINT_FADE_THRESHOLD_SIZE = 33064; // 0x8128
-    field public static final int GL_POINT_SIZE = 2833; // 0xb11
-    field public static final int GL_POINT_SMOOTH = 2832; // 0xb10
-    field public static final int GL_POINT_SMOOTH_HINT = 3153; // 0xc51
-    field public static final int GL_POLYGON_OFFSET_FILL = 32823; // 0x8037
-    field public static final int GL_POLYGON_SMOOTH_HINT = 3155; // 0xc53
-    field public static final int GL_POSITION = 4611; // 0x1203
-    field public static final int GL_PROJECTION = 5889; // 0x1701
-    field public static final int GL_QUADRATIC_ATTENUATION = 4617; // 0x1209
-    field public static final int GL_RED_BITS = 3410; // 0xd52
-    field public static final int GL_RENDERER = 7937; // 0x1f01
-    field public static final int GL_REPEAT = 10497; // 0x2901
-    field public static final int GL_REPLACE = 7681; // 0x1e01
-    field public static final int GL_RESCALE_NORMAL = 32826; // 0x803a
-    field public static final int GL_RGB = 6407; // 0x1907
-    field public static final int GL_RGBA = 6408; // 0x1908
-    field public static final int GL_SAMPLE_ALPHA_TO_COVERAGE = 32926; // 0x809e
-    field public static final int GL_SAMPLE_ALPHA_TO_ONE = 32927; // 0x809f
-    field public static final int GL_SAMPLE_COVERAGE = 32928; // 0x80a0
-    field public static final int GL_SCISSOR_TEST = 3089; // 0xc11
-    field public static final int GL_SET = 5391; // 0x150f
-    field public static final int GL_SHININESS = 5633; // 0x1601
-    field public static final int GL_SHORT = 5122; // 0x1402
-    field public static final int GL_SMOOTH = 7425; // 0x1d01
-    field public static final int GL_SMOOTH_LINE_WIDTH_RANGE = 2850; // 0xb22
-    field public static final int GL_SMOOTH_POINT_SIZE_RANGE = 2834; // 0xb12
-    field public static final int GL_SPECULAR = 4610; // 0x1202
-    field public static final int GL_SPOT_CUTOFF = 4614; // 0x1206
-    field public static final int GL_SPOT_DIRECTION = 4612; // 0x1204
-    field public static final int GL_SPOT_EXPONENT = 4613; // 0x1205
-    field public static final int GL_SRC_ALPHA = 770; // 0x302
-    field public static final int GL_SRC_ALPHA_SATURATE = 776; // 0x308
-    field public static final int GL_SRC_COLOR = 768; // 0x300
-    field public static final int GL_STACK_OVERFLOW = 1283; // 0x503
-    field public static final int GL_STACK_UNDERFLOW = 1284; // 0x504
-    field public static final int GL_STENCIL_BITS = 3415; // 0xd57
-    field public static final int GL_STENCIL_BUFFER_BIT = 1024; // 0x400
-    field public static final int GL_STENCIL_TEST = 2960; // 0xb90
-    field public static final int GL_SUBPIXEL_BITS = 3408; // 0xd50
-    field public static final int GL_TEXTURE = 5890; // 0x1702
-    field public static final int GL_TEXTURE0 = 33984; // 0x84c0
-    field public static final int GL_TEXTURE1 = 33985; // 0x84c1
-    field public static final int GL_TEXTURE10 = 33994; // 0x84ca
-    field public static final int GL_TEXTURE11 = 33995; // 0x84cb
-    field public static final int GL_TEXTURE12 = 33996; // 0x84cc
-    field public static final int GL_TEXTURE13 = 33997; // 0x84cd
-    field public static final int GL_TEXTURE14 = 33998; // 0x84ce
-    field public static final int GL_TEXTURE15 = 33999; // 0x84cf
-    field public static final int GL_TEXTURE16 = 34000; // 0x84d0
-    field public static final int GL_TEXTURE17 = 34001; // 0x84d1
-    field public static final int GL_TEXTURE18 = 34002; // 0x84d2
-    field public static final int GL_TEXTURE19 = 34003; // 0x84d3
-    field public static final int GL_TEXTURE2 = 33986; // 0x84c2
-    field public static final int GL_TEXTURE20 = 34004; // 0x84d4
-    field public static final int GL_TEXTURE21 = 34005; // 0x84d5
-    field public static final int GL_TEXTURE22 = 34006; // 0x84d6
-    field public static final int GL_TEXTURE23 = 34007; // 0x84d7
-    field public static final int GL_TEXTURE24 = 34008; // 0x84d8
-    field public static final int GL_TEXTURE25 = 34009; // 0x84d9
-    field public static final int GL_TEXTURE26 = 34010; // 0x84da
-    field public static final int GL_TEXTURE27 = 34011; // 0x84db
-    field public static final int GL_TEXTURE28 = 34012; // 0x84dc
-    field public static final int GL_TEXTURE29 = 34013; // 0x84dd
-    field public static final int GL_TEXTURE3 = 33987; // 0x84c3
-    field public static final int GL_TEXTURE30 = 34014; // 0x84de
-    field public static final int GL_TEXTURE31 = 34015; // 0x84df
-    field public static final int GL_TEXTURE4 = 33988; // 0x84c4
-    field public static final int GL_TEXTURE5 = 33989; // 0x84c5
-    field public static final int GL_TEXTURE6 = 33990; // 0x84c6
-    field public static final int GL_TEXTURE7 = 33991; // 0x84c7
-    field public static final int GL_TEXTURE8 = 33992; // 0x84c8
-    field public static final int GL_TEXTURE9 = 33993; // 0x84c9
-    field public static final int GL_TEXTURE_2D = 3553; // 0xde1
-    field public static final int GL_TEXTURE_COORD_ARRAY = 32888; // 0x8078
-    field public static final int GL_TEXTURE_ENV = 8960; // 0x2300
-    field public static final int GL_TEXTURE_ENV_COLOR = 8705; // 0x2201
-    field public static final int GL_TEXTURE_ENV_MODE = 8704; // 0x2200
-    field public static final int GL_TEXTURE_MAG_FILTER = 10240; // 0x2800
-    field public static final int GL_TEXTURE_MIN_FILTER = 10241; // 0x2801
-    field public static final int GL_TEXTURE_WRAP_S = 10242; // 0x2802
-    field public static final int GL_TEXTURE_WRAP_T = 10243; // 0x2803
-    field public static final int GL_TRIANGLES = 4; // 0x4
-    field public static final int GL_TRIANGLE_FAN = 6; // 0x6
-    field public static final int GL_TRIANGLE_STRIP = 5; // 0x5
-    field public static final int GL_TRUE = 1; // 0x1
-    field public static final int GL_UNPACK_ALIGNMENT = 3317; // 0xcf5
-    field public static final int GL_UNSIGNED_BYTE = 5121; // 0x1401
-    field public static final int GL_UNSIGNED_SHORT = 5123; // 0x1403
-    field public static final int GL_UNSIGNED_SHORT_4_4_4_4 = 32819; // 0x8033
-    field public static final int GL_UNSIGNED_SHORT_5_5_5_1 = 32820; // 0x8034
-    field public static final int GL_UNSIGNED_SHORT_5_6_5 = 33635; // 0x8363
-    field public static final int GL_VENDOR = 7936; // 0x1f00
-    field public static final int GL_VERSION = 7938; // 0x1f02
-    field public static final int GL_VERTEX_ARRAY = 32884; // 0x8074
-    field public static final int GL_XOR = 5382; // 0x1506
-    field public static final int GL_ZERO = 0; // 0x0
-  }
-
-  public interface GL10Ext extends javax.microedition.khronos.opengles.GL {
-    method public int glQueryMatrixxOES(int[], int, int[], int);
-    method public int glQueryMatrixxOES(java.nio.IntBuffer, java.nio.IntBuffer);
-  }
-
-  public interface GL11 extends javax.microedition.khronos.opengles.GL10 {
-    method public void glBindBuffer(int, int);
-    method public void glBufferData(int, int, java.nio.Buffer, int);
-    method public void glBufferSubData(int, int, int, java.nio.Buffer);
-    method public void glClipPlanef(int, float[], int);
-    method public void glClipPlanef(int, java.nio.FloatBuffer);
-    method public void glClipPlanex(int, int[], int);
-    method public void glClipPlanex(int, java.nio.IntBuffer);
-    method public void glColor4ub(byte, byte, byte, byte);
-    method public void glColorPointer(int, int, int, int);
-    method public void glDeleteBuffers(int, int[], int);
-    method public void glDeleteBuffers(int, java.nio.IntBuffer);
-    method public void glDrawElements(int, int, int, int);
-    method public void glGenBuffers(int, int[], int);
-    method public void glGenBuffers(int, java.nio.IntBuffer);
-    method public void glGetBooleanv(int, boolean[], int);
-    method public void glGetBooleanv(int, java.nio.IntBuffer);
-    method public void glGetBufferParameteriv(int, int, int[], int);
-    method public void glGetBufferParameteriv(int, int, java.nio.IntBuffer);
-    method public void glGetClipPlanef(int, float[], int);
-    method public void glGetClipPlanef(int, java.nio.FloatBuffer);
-    method public void glGetClipPlanex(int, int[], int);
-    method public void glGetClipPlanex(int, java.nio.IntBuffer);
-    method public void glGetFixedv(int, int[], int);
-    method public void glGetFixedv(int, java.nio.IntBuffer);
-    method public void glGetFloatv(int, float[], int);
-    method public void glGetFloatv(int, java.nio.FloatBuffer);
-    method public void glGetLightfv(int, int, float[], int);
-    method public void glGetLightfv(int, int, java.nio.FloatBuffer);
-    method public void glGetLightxv(int, int, int[], int);
-    method public void glGetLightxv(int, int, java.nio.IntBuffer);
-    method public void glGetMaterialfv(int, int, float[], int);
-    method public void glGetMaterialfv(int, int, java.nio.FloatBuffer);
-    method public void glGetMaterialxv(int, int, int[], int);
-    method public void glGetMaterialxv(int, int, java.nio.IntBuffer);
-    method public void glGetPointerv(int, java.nio.Buffer[]);
-    method public void glGetTexEnviv(int, int, int[], int);
-    method public void glGetTexEnviv(int, int, java.nio.IntBuffer);
-    method public void glGetTexEnvxv(int, int, int[], int);
-    method public void glGetTexEnvxv(int, int, java.nio.IntBuffer);
-    method public void glGetTexParameterfv(int, int, float[], int);
-    method public void glGetTexParameterfv(int, int, java.nio.FloatBuffer);
-    method public void glGetTexParameteriv(int, int, int[], int);
-    method public void glGetTexParameteriv(int, int, java.nio.IntBuffer);
-    method public void glGetTexParameterxv(int, int, int[], int);
-    method public void glGetTexParameterxv(int, int, java.nio.IntBuffer);
-    method public boolean glIsBuffer(int);
-    method public boolean glIsEnabled(int);
-    method public boolean glIsTexture(int);
-    method public void glNormalPointer(int, int, int);
-    method public void glPointParameterf(int, float);
-    method public void glPointParameterfv(int, float[], int);
-    method public void glPointParameterfv(int, java.nio.FloatBuffer);
-    method public void glPointParameterx(int, int);
-    method public void glPointParameterxv(int, int[], int);
-    method public void glPointParameterxv(int, java.nio.IntBuffer);
-    method public void glPointSizePointerOES(int, int, java.nio.Buffer);
-    method public void glTexCoordPointer(int, int, int, int);
-    method public void glTexEnvi(int, int, int);
-    method public void glTexEnviv(int, int, int[], int);
-    method public void glTexEnviv(int, int, java.nio.IntBuffer);
-    method public void glTexParameterfv(int, int, float[], int);
-    method public void glTexParameterfv(int, int, java.nio.FloatBuffer);
-    method public void glTexParameteri(int, int, int);
-    method public void glTexParameteriv(int, int, int[], int);
-    method public void glTexParameteriv(int, int, java.nio.IntBuffer);
-    method public void glTexParameterxv(int, int, int[], int);
-    method public void glTexParameterxv(int, int, java.nio.IntBuffer);
-    method public void glVertexPointer(int, int, int, int);
-    field public static final int GL_ACTIVE_TEXTURE = 34016; // 0x84e0
-    field public static final int GL_ADD_SIGNED = 34164; // 0x8574
-    field public static final int GL_ALPHA_SCALE = 3356; // 0xd1c
-    field public static final int GL_ALPHA_TEST_FUNC = 3009; // 0xbc1
-    field public static final int GL_ALPHA_TEST_REF = 3010; // 0xbc2
-    field public static final int GL_ARRAY_BUFFER = 34962; // 0x8892
-    field public static final int GL_ARRAY_BUFFER_BINDING = 34964; // 0x8894
-    field public static final int GL_BLEND_DST = 3040; // 0xbe0
-    field public static final int GL_BLEND_SRC = 3041; // 0xbe1
-    field public static final int GL_BUFFER_ACCESS = 35003; // 0x88bb
-    field public static final int GL_BUFFER_SIZE = 34660; // 0x8764
-    field public static final int GL_BUFFER_USAGE = 34661; // 0x8765
-    field public static final int GL_CLIENT_ACTIVE_TEXTURE = 34017; // 0x84e1
-    field public static final int GL_CLIP_PLANE0 = 12288; // 0x3000
-    field public static final int GL_CLIP_PLANE1 = 12289; // 0x3001
-    field public static final int GL_CLIP_PLANE2 = 12290; // 0x3002
-    field public static final int GL_CLIP_PLANE3 = 12291; // 0x3003
-    field public static final int GL_CLIP_PLANE4 = 12292; // 0x3004
-    field public static final int GL_CLIP_PLANE5 = 12293; // 0x3005
-    field public static final int GL_COLOR_ARRAY_BUFFER_BINDING = 34968; // 0x8898
-    field public static final int GL_COLOR_ARRAY_POINTER = 32912; // 0x8090
-    field public static final int GL_COLOR_ARRAY_SIZE = 32897; // 0x8081
-    field public static final int GL_COLOR_ARRAY_STRIDE = 32899; // 0x8083
-    field public static final int GL_COLOR_ARRAY_TYPE = 32898; // 0x8082
-    field public static final int GL_COLOR_CLEAR_VALUE = 3106; // 0xc22
-    field public static final int GL_COLOR_WRITEMASK = 3107; // 0xc23
-    field public static final int GL_COMBINE = 34160; // 0x8570
-    field public static final int GL_COMBINE_ALPHA = 34162; // 0x8572
-    field public static final int GL_COMBINE_RGB = 34161; // 0x8571
-    field public static final int GL_CONSTANT = 34166; // 0x8576
-    field public static final int GL_COORD_REPLACE_OES = 34914; // 0x8862
-    field public static final int GL_CULL_FACE_MODE = 2885; // 0xb45
-    field public static final int GL_CURRENT_COLOR = 2816; // 0xb00
-    field public static final int GL_CURRENT_NORMAL = 2818; // 0xb02
-    field public static final int GL_CURRENT_TEXTURE_COORDS = 2819; // 0xb03
-    field public static final int GL_DEPTH_CLEAR_VALUE = 2931; // 0xb73
-    field public static final int GL_DEPTH_FUNC = 2932; // 0xb74
-    field public static final int GL_DEPTH_RANGE = 2928; // 0xb70
-    field public static final int GL_DEPTH_WRITEMASK = 2930; // 0xb72
-    field public static final int GL_DOT3_RGB = 34478; // 0x86ae
-    field public static final int GL_DOT3_RGBA = 34479; // 0x86af
-    field public static final int GL_DYNAMIC_DRAW = 35048; // 0x88e8
-    field public static final int GL_ELEMENT_ARRAY_BUFFER = 34963; // 0x8893
-    field public static final int GL_ELEMENT_ARRAY_BUFFER_BINDING = 34965; // 0x8895
-    field public static final int GL_FRONT_FACE = 2886; // 0xb46
-    field public static final int GL_GENERATE_MIPMAP = 33169; // 0x8191
-    field public static final int GL_GENERATE_MIPMAP_HINT = 33170; // 0x8192
-    field public static final int GL_INTERPOLATE = 34165; // 0x8575
-    field public static final int GL_LINE_WIDTH = 2849; // 0xb21
-    field public static final int GL_LOGIC_OP_MODE = 3056; // 0xbf0
-    field public static final int GL_MATRIX_MODE = 2976; // 0xba0
-    field public static final int GL_MAX_CLIP_PLANES = 3378; // 0xd32
-    field public static final int GL_MODELVIEW_MATRIX = 2982; // 0xba6
-    field public static final int GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES = 35213; // 0x898d
-    field public static final int GL_MODELVIEW_STACK_DEPTH = 2979; // 0xba3
-    field public static final int GL_NORMAL_ARRAY_BUFFER_BINDING = 34967; // 0x8897
-    field public static final int GL_NORMAL_ARRAY_POINTER = 32911; // 0x808f
-    field public static final int GL_NORMAL_ARRAY_STRIDE = 32895; // 0x807f
-    field public static final int GL_NORMAL_ARRAY_TYPE = 32894; // 0x807e
-    field public static final int GL_OPERAND0_ALPHA = 34200; // 0x8598
-    field public static final int GL_OPERAND0_RGB = 34192; // 0x8590
-    field public static final int GL_OPERAND1_ALPHA = 34201; // 0x8599
-    field public static final int GL_OPERAND1_RGB = 34193; // 0x8591
-    field public static final int GL_OPERAND2_ALPHA = 34202; // 0x859a
-    field public static final int GL_OPERAND2_RGB = 34194; // 0x8592
-    field public static final int GL_POINT_DISTANCE_ATTENUATION = 33065; // 0x8129
-    field public static final int GL_POINT_FADE_THRESHOLD_SIZE = 33064; // 0x8128
-    field public static final int GL_POINT_SIZE = 2833; // 0xb11
-    field public static final int GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES = 35743; // 0x8b9f
-    field public static final int GL_POINT_SIZE_ARRAY_OES = 35740; // 0x8b9c
-    field public static final int GL_POINT_SIZE_ARRAY_POINTER_OES = 35212; // 0x898c
-    field public static final int GL_POINT_SIZE_ARRAY_STRIDE_OES = 35211; // 0x898b
-    field public static final int GL_POINT_SIZE_ARRAY_TYPE_OES = 35210; // 0x898a
-    field public static final int GL_POINT_SIZE_MAX = 33063; // 0x8127
-    field public static final int GL_POINT_SIZE_MIN = 33062; // 0x8126
-    field public static final int GL_POINT_SPRITE_OES = 34913; // 0x8861
-    field public static final int GL_POLYGON_OFFSET_FACTOR = 32824; // 0x8038
-    field public static final int GL_POLYGON_OFFSET_UNITS = 10752; // 0x2a00
-    field public static final int GL_PREVIOUS = 34168; // 0x8578
-    field public static final int GL_PRIMARY_COLOR = 34167; // 0x8577
-    field public static final int GL_PROJECTION_MATRIX = 2983; // 0xba7
-    field public static final int GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES = 35214; // 0x898e
-    field public static final int GL_PROJECTION_STACK_DEPTH = 2980; // 0xba4
-    field public static final int GL_RGB_SCALE = 34163; // 0x8573
-    field public static final int GL_SAMPLES = 32937; // 0x80a9
-    field public static final int GL_SAMPLE_BUFFERS = 32936; // 0x80a8
-    field public static final int GL_SAMPLE_COVERAGE_INVERT = 32939; // 0x80ab
-    field public static final int GL_SAMPLE_COVERAGE_VALUE = 32938; // 0x80aa
-    field public static final int GL_SCISSOR_BOX = 3088; // 0xc10
-    field public static final int GL_SHADE_MODEL = 2900; // 0xb54
-    field public static final int GL_SRC0_ALPHA = 34184; // 0x8588
-    field public static final int GL_SRC0_RGB = 34176; // 0x8580
-    field public static final int GL_SRC1_ALPHA = 34185; // 0x8589
-    field public static final int GL_SRC1_RGB = 34177; // 0x8581
-    field public static final int GL_SRC2_ALPHA = 34186; // 0x858a
-    field public static final int GL_SRC2_RGB = 34178; // 0x8582
-    field public static final int GL_STATIC_DRAW = 35044; // 0x88e4
-    field public static final int GL_STENCIL_CLEAR_VALUE = 2961; // 0xb91
-    field public static final int GL_STENCIL_FAIL = 2964; // 0xb94
-    field public static final int GL_STENCIL_FUNC = 2962; // 0xb92
-    field public static final int GL_STENCIL_PASS_DEPTH_FAIL = 2965; // 0xb95
-    field public static final int GL_STENCIL_PASS_DEPTH_PASS = 2966; // 0xb96
-    field public static final int GL_STENCIL_REF = 2967; // 0xb97
-    field public static final int GL_STENCIL_VALUE_MASK = 2963; // 0xb93
-    field public static final int GL_STENCIL_WRITEMASK = 2968; // 0xb98
-    field public static final int GL_SUBTRACT = 34023; // 0x84e7
-    field public static final int GL_TEXTURE_BINDING_2D = 32873; // 0x8069
-    field public static final int GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING = 34970; // 0x889a
-    field public static final int GL_TEXTURE_COORD_ARRAY_POINTER = 32914; // 0x8092
-    field public static final int GL_TEXTURE_COORD_ARRAY_SIZE = 32904; // 0x8088
-    field public static final int GL_TEXTURE_COORD_ARRAY_STRIDE = 32906; // 0x808a
-    field public static final int GL_TEXTURE_COORD_ARRAY_TYPE = 32905; // 0x8089
-    field public static final int GL_TEXTURE_MATRIX = 2984; // 0xba8
-    field public static final int GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES = 35215; // 0x898f
-    field public static final int GL_TEXTURE_STACK_DEPTH = 2981; // 0xba5
-    field public static final int GL_VERTEX_ARRAY_BUFFER_BINDING = 34966; // 0x8896
-    field public static final int GL_VERTEX_ARRAY_POINTER = 32910; // 0x808e
-    field public static final int GL_VERTEX_ARRAY_SIZE = 32890; // 0x807a
-    field public static final int GL_VERTEX_ARRAY_STRIDE = 32892; // 0x807c
-    field public static final int GL_VERTEX_ARRAY_TYPE = 32891; // 0x807b
-    field public static final int GL_VIEWPORT = 2978; // 0xba2
-    field public static final int GL_WRITE_ONLY = 35001; // 0x88b9
-  }
-
-  public interface GL11Ext extends javax.microedition.khronos.opengles.GL {
-    method public void glCurrentPaletteMatrixOES(int);
-    method public void glDrawTexfOES(float, float, float, float, float);
-    method public void glDrawTexfvOES(float[], int);
-    method public void glDrawTexfvOES(java.nio.FloatBuffer);
-    method public void glDrawTexiOES(int, int, int, int, int);
-    method public void glDrawTexivOES(int[], int);
-    method public void glDrawTexivOES(java.nio.IntBuffer);
-    method public void glDrawTexsOES(short, short, short, short, short);
-    method public void glDrawTexsvOES(short[], int);
-    method public void glDrawTexsvOES(java.nio.ShortBuffer);
-    method public void glDrawTexxOES(int, int, int, int, int);
-    method public void glDrawTexxvOES(int[], int);
-    method public void glDrawTexxvOES(java.nio.IntBuffer);
-    method public void glEnable(int);
-    method public void glEnableClientState(int);
-    method public void glLoadPaletteFromModelViewMatrixOES();
-    method public void glMatrixIndexPointerOES(int, int, int, java.nio.Buffer);
-    method public void glMatrixIndexPointerOES(int, int, int, int);
-    method public void glTexParameterfv(int, int, float[], int);
-    method public void glWeightPointerOES(int, int, int, java.nio.Buffer);
-    method public void glWeightPointerOES(int, int, int, int);
-    field public static final int GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES = 35742; // 0x8b9e
-    field public static final int GL_MATRIX_INDEX_ARRAY_OES = 34884; // 0x8844
-    field public static final int GL_MATRIX_INDEX_ARRAY_POINTER_OES = 34889; // 0x8849
-    field public static final int GL_MATRIX_INDEX_ARRAY_SIZE_OES = 34886; // 0x8846
-    field public static final int GL_MATRIX_INDEX_ARRAY_STRIDE_OES = 34888; // 0x8848
-    field public static final int GL_MATRIX_INDEX_ARRAY_TYPE_OES = 34887; // 0x8847
-    field public static final int GL_MATRIX_PALETTE_OES = 34880; // 0x8840
-    field public static final int GL_MAX_PALETTE_MATRICES_OES = 34882; // 0x8842
-    field public static final int GL_MAX_VERTEX_UNITS_OES = 34468; // 0x86a4
-    field public static final int GL_TEXTURE_CROP_RECT_OES = 35741; // 0x8b9d
-    field public static final int GL_WEIGHT_ARRAY_BUFFER_BINDING_OES = 34974; // 0x889e
-    field public static final int GL_WEIGHT_ARRAY_OES = 34477; // 0x86ad
-    field public static final int GL_WEIGHT_ARRAY_POINTER_OES = 34476; // 0x86ac
-    field public static final int GL_WEIGHT_ARRAY_SIZE_OES = 34475; // 0x86ab
-    field public static final int GL_WEIGHT_ARRAY_STRIDE_OES = 34474; // 0x86aa
-    field public static final int GL_WEIGHT_ARRAY_TYPE_OES = 34473; // 0x86a9
-  }
-
-  public interface GL11ExtensionPack extends javax.microedition.khronos.opengles.GL {
-    method public void glBindFramebufferOES(int, int);
-    method public void glBindRenderbufferOES(int, int);
-    method public void glBindTexture(int, int);
-    method public void glBlendEquation(int);
-    method public void glBlendEquationSeparate(int, int);
-    method public void glBlendFuncSeparate(int, int, int, int);
-    method public int glCheckFramebufferStatusOES(int);
-    method public void glCompressedTexImage2D(int, int, int, int, int, int, int, java.nio.Buffer);
-    method public void glCopyTexImage2D(int, int, int, int, int, int, int, int);
-    method public void glDeleteFramebuffersOES(int, int[], int);
-    method public void glDeleteFramebuffersOES(int, java.nio.IntBuffer);
-    method public void glDeleteRenderbuffersOES(int, int[], int);
-    method public void glDeleteRenderbuffersOES(int, java.nio.IntBuffer);
-    method public void glEnable(int);
-    method public void glFramebufferRenderbufferOES(int, int, int, int);
-    method public void glFramebufferTexture2DOES(int, int, int, int, int);
-    method public void glGenFramebuffersOES(int, int[], int);
-    method public void glGenFramebuffersOES(int, java.nio.IntBuffer);
-    method public void glGenRenderbuffersOES(int, int[], int);
-    method public void glGenRenderbuffersOES(int, java.nio.IntBuffer);
-    method public void glGenerateMipmapOES(int);
-    method public void glGetFramebufferAttachmentParameterivOES(int, int, int, int[], int);
-    method public void glGetFramebufferAttachmentParameterivOES(int, int, int, java.nio.IntBuffer);
-    method public void glGetIntegerv(int, int[], int);
-    method public void glGetIntegerv(int, java.nio.IntBuffer);
-    method public void glGetRenderbufferParameterivOES(int, int, int[], int);
-    method public void glGetRenderbufferParameterivOES(int, int, java.nio.IntBuffer);
-    method public void glGetTexGenfv(int, int, float[], int);
-    method public void glGetTexGenfv(int, int, java.nio.FloatBuffer);
-    method public void glGetTexGeniv(int, int, int[], int);
-    method public void glGetTexGeniv(int, int, java.nio.IntBuffer);
-    method public void glGetTexGenxv(int, int, int[], int);
-    method public void glGetTexGenxv(int, int, java.nio.IntBuffer);
-    method public boolean glIsFramebufferOES(int);
-    method public boolean glIsRenderbufferOES(int);
-    method public void glRenderbufferStorageOES(int, int, int, int);
-    method public void glStencilOp(int, int, int);
-    method public void glTexEnvf(int, int, float);
-    method public void glTexEnvfv(int, int, float[], int);
-    method public void glTexEnvfv(int, int, java.nio.FloatBuffer);
-    method public void glTexEnvx(int, int, int);
-    method public void glTexEnvxv(int, int, int[], int);
-    method public void glTexEnvxv(int, int, java.nio.IntBuffer);
-    method public void glTexGenf(int, int, float);
-    method public void glTexGenfv(int, int, float[], int);
-    method public void glTexGenfv(int, int, java.nio.FloatBuffer);
-    method public void glTexGeni(int, int, int);
-    method public void glTexGeniv(int, int, int[], int);
-    method public void glTexGeniv(int, int, java.nio.IntBuffer);
-    method public void glTexGenx(int, int, int);
-    method public void glTexGenxv(int, int, int[], int);
-    method public void glTexGenxv(int, int, java.nio.IntBuffer);
-    method public void glTexParameterf(int, int, float);
-    field public static final int GL_BLEND_DST_ALPHA = 32970; // 0x80ca
-    field public static final int GL_BLEND_DST_RGB = 32968; // 0x80c8
-    field public static final int GL_BLEND_EQUATION = 32777; // 0x8009
-    field public static final int GL_BLEND_EQUATION_ALPHA = 34877; // 0x883d
-    field public static final int GL_BLEND_EQUATION_RGB = 32777; // 0x8009
-    field public static final int GL_BLEND_SRC_ALPHA = 32971; // 0x80cb
-    field public static final int GL_BLEND_SRC_RGB = 32969; // 0x80c9
-    field public static final int GL_COLOR_ATTACHMENT0_OES = 36064; // 0x8ce0
-    field public static final int GL_COLOR_ATTACHMENT10_OES = 36074; // 0x8cea
-    field public static final int GL_COLOR_ATTACHMENT11_OES = 36075; // 0x8ceb
-    field public static final int GL_COLOR_ATTACHMENT12_OES = 36076; // 0x8cec
-    field public static final int GL_COLOR_ATTACHMENT13_OES = 36077; // 0x8ced
-    field public static final int GL_COLOR_ATTACHMENT14_OES = 36078; // 0x8cee
-    field public static final int GL_COLOR_ATTACHMENT15_OES = 36079; // 0x8cef
-    field public static final int GL_COLOR_ATTACHMENT1_OES = 36065; // 0x8ce1
-    field public static final int GL_COLOR_ATTACHMENT2_OES = 36066; // 0x8ce2
-    field public static final int GL_COLOR_ATTACHMENT3_OES = 36067; // 0x8ce3
-    field public static final int GL_COLOR_ATTACHMENT4_OES = 36068; // 0x8ce4
-    field public static final int GL_COLOR_ATTACHMENT5_OES = 36069; // 0x8ce5
-    field public static final int GL_COLOR_ATTACHMENT6_OES = 36070; // 0x8ce6
-    field public static final int GL_COLOR_ATTACHMENT7_OES = 36071; // 0x8ce7
-    field public static final int GL_COLOR_ATTACHMENT8_OES = 36072; // 0x8ce8
-    field public static final int GL_COLOR_ATTACHMENT9_OES = 36073; // 0x8ce9
-    field public static final int GL_DECR_WRAP = 34056; // 0x8508
-    field public static final int GL_DEPTH_ATTACHMENT_OES = 36096; // 0x8d00
-    field public static final int GL_DEPTH_COMPONENT = 6402; // 0x1902
-    field public static final int GL_DEPTH_COMPONENT16 = 33189; // 0x81a5
-    field public static final int GL_DEPTH_COMPONENT24 = 33190; // 0x81a6
-    field public static final int GL_DEPTH_COMPONENT32 = 33191; // 0x81a7
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES = 36049; // 0x8cd1
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES = 36048; // 0x8cd0
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES = 36051; // 0x8cd3
-    field public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES = 36050; // 0x8cd2
-    field public static final int GL_FRAMEBUFFER_BINDING_OES = 36006; // 0x8ca6
-    field public static final int GL_FRAMEBUFFER_COMPLETE_OES = 36053; // 0x8cd5
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES = 36054; // 0x8cd6
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES = 36057; // 0x8cd9
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES = 36059; // 0x8cdb
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES = 36058; // 0x8cda
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES = 36055; // 0x8cd7
-    field public static final int GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES = 36060; // 0x8cdc
-    field public static final int GL_FRAMEBUFFER_OES = 36160; // 0x8d40
-    field public static final int GL_FRAMEBUFFER_UNSUPPORTED_OES = 36061; // 0x8cdd
-    field public static final int GL_FUNC_ADD = 32774; // 0x8006
-    field public static final int GL_FUNC_REVERSE_SUBTRACT = 32779; // 0x800b
-    field public static final int GL_FUNC_SUBTRACT = 32778; // 0x800a
-    field public static final int GL_INCR_WRAP = 34055; // 0x8507
-    field public static final int GL_INVALID_FRAMEBUFFER_OPERATION_OES = 1286; // 0x506
-    field public static final int GL_MAX_COLOR_ATTACHMENTS_OES = 36063; // 0x8cdf
-    field public static final int GL_MAX_CUBE_MAP_TEXTURE_SIZE = 34076; // 0x851c
-    field public static final int GL_MAX_RENDERBUFFER_SIZE_OES = 34024; // 0x84e8
-    field public static final int GL_MIRRORED_REPEAT = 33648; // 0x8370
-    field public static final int GL_NORMAL_MAP = 34065; // 0x8511
-    field public static final int GL_REFLECTION_MAP = 34066; // 0x8512
-    field public static final int GL_RENDERBUFFER_ALPHA_SIZE_OES = 36179; // 0x8d53
-    field public static final int GL_RENDERBUFFER_BINDING_OES = 36007; // 0x8ca7
-    field public static final int GL_RENDERBUFFER_BLUE_SIZE_OES = 36178; // 0x8d52
-    field public static final int GL_RENDERBUFFER_DEPTH_SIZE_OES = 36180; // 0x8d54
-    field public static final int GL_RENDERBUFFER_GREEN_SIZE_OES = 36177; // 0x8d51
-    field public static final int GL_RENDERBUFFER_HEIGHT_OES = 36163; // 0x8d43
-    field public static final int GL_RENDERBUFFER_INTERNAL_FORMAT_OES = 36164; // 0x8d44
-    field public static final int GL_RENDERBUFFER_OES = 36161; // 0x8d41
-    field public static final int GL_RENDERBUFFER_RED_SIZE_OES = 36176; // 0x8d50
-    field public static final int GL_RENDERBUFFER_STENCIL_SIZE_OES = 36181; // 0x8d55
-    field public static final int GL_RENDERBUFFER_WIDTH_OES = 36162; // 0x8d42
-    field public static final int GL_RGB565_OES = 36194; // 0x8d62
-    field public static final int GL_RGB5_A1 = 32855; // 0x8057
-    field public static final int GL_RGB8 = 32849; // 0x8051
-    field public static final int GL_RGBA4 = 32854; // 0x8056
-    field public static final int GL_RGBA8 = 32856; // 0x8058
-    field public static final int GL_STENCIL_ATTACHMENT_OES = 36128; // 0x8d20
-    field public static final int GL_STENCIL_INDEX = 6401; // 0x1901
-    field public static final int GL_STENCIL_INDEX1_OES = 36166; // 0x8d46
-    field public static final int GL_STENCIL_INDEX4_OES = 36167; // 0x8d47
-    field public static final int GL_STENCIL_INDEX8_OES = 36168; // 0x8d48
-    field public static final int GL_STR = -1; // 0xffffffff
-    field public static final int GL_TEXTURE_BINDING_CUBE_MAP = 34068; // 0x8514
-    field public static final int GL_TEXTURE_CUBE_MAP = 34067; // 0x8513
-    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 34070; // 0x8516
-    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072; // 0x8518
-    field public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074; // 0x851a
-    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_X = 34069; // 0x8515
-    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 34071; // 0x8517
-    field public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 34073; // 0x8519
-    field public static final int GL_TEXTURE_GEN_MODE = 9472; // 0x2500
-    field public static final int GL_TEXTURE_GEN_STR = 36192; // 0x8d60
-  }
-
-}
-
-package javax.net {
-
-  public abstract class ServerSocketFactory {
-    ctor protected ServerSocketFactory();
-    method public java.net.ServerSocket createServerSocket() throws java.io.IOException;
-    method public abstract java.net.ServerSocket createServerSocket(int) throws java.io.IOException;
-    method public abstract java.net.ServerSocket createServerSocket(int, int) throws java.io.IOException;
-    method public abstract java.net.ServerSocket createServerSocket(int, int, java.net.InetAddress) throws java.io.IOException;
-    method public static javax.net.ServerSocketFactory getDefault();
-  }
-
-  public abstract class SocketFactory {
-    ctor protected SocketFactory();
-    method public java.net.Socket createSocket() throws java.io.IOException;
-    method public abstract java.net.Socket createSocket(String, int) throws java.io.IOException, java.net.UnknownHostException;
-    method public abstract java.net.Socket createSocket(String, int, java.net.InetAddress, int) throws java.io.IOException, java.net.UnknownHostException;
-    method public abstract java.net.Socket createSocket(java.net.InetAddress, int) throws java.io.IOException;
-    method public abstract java.net.Socket createSocket(java.net.InetAddress, int, java.net.InetAddress, int) throws java.io.IOException;
-    method public static javax.net.SocketFactory getDefault();
-  }
-
-}
-
-package javax.net.ssl {
-
-  public class CertPathTrustManagerParameters implements javax.net.ssl.ManagerFactoryParameters {
-    ctor public CertPathTrustManagerParameters(java.security.cert.CertPathParameters);
-    method public java.security.cert.CertPathParameters getParameters();
-  }
-
-  public abstract class ExtendedSSLSession implements javax.net.ssl.SSLSession {
-    ctor public ExtendedSSLSession();
-    method public abstract String[] getLocalSupportedSignatureAlgorithms();
-    method public abstract String[] getPeerSupportedSignatureAlgorithms();
-    method public java.util.List<javax.net.ssl.SNIServerName> getRequestedServerNames();
-  }
-
-  public class HandshakeCompletedEvent extends java.util.EventObject {
-    ctor public HandshakeCompletedEvent(javax.net.ssl.SSLSocket, javax.net.ssl.SSLSession);
-    method public String getCipherSuite();
-    method public java.security.cert.Certificate[] getLocalCertificates();
-    method public java.security.Principal getLocalPrincipal();
-    method public javax.security.cert.X509Certificate[] getPeerCertificateChain() throws javax.net.ssl.SSLPeerUnverifiedException;
-    method public java.security.cert.Certificate[] getPeerCertificates() throws javax.net.ssl.SSLPeerUnverifiedException;
-    method public java.security.Principal getPeerPrincipal() throws javax.net.ssl.SSLPeerUnverifiedException;
-    method public javax.net.ssl.SSLSession getSession();
-    method public javax.net.ssl.SSLSocket getSocket();
-  }
-
-  public interface HandshakeCompletedListener extends java.util.EventListener {
-    method public void handshakeCompleted(javax.net.ssl.HandshakeCompletedEvent);
-  }
-
-  public interface HostnameVerifier {
-    method public boolean verify(String, javax.net.ssl.SSLSession);
-  }
-
-  public abstract class HttpsURLConnection extends java.net.HttpURLConnection {
-    ctor protected HttpsURLConnection(java.net.URL);
-    method public abstract String getCipherSuite();
-    method public static javax.net.ssl.HostnameVerifier getDefaultHostnameVerifier();
-    method public static javax.net.ssl.SSLSocketFactory getDefaultSSLSocketFactory();
-    method public javax.net.ssl.HostnameVerifier getHostnameVerifier();
-    method public abstract java.security.cert.Certificate[] getLocalCertificates();
-    method public java.security.Principal getLocalPrincipal();
-    method public java.security.Principal getPeerPrincipal() throws javax.net.ssl.SSLPeerUnverifiedException;
-    method public javax.net.ssl.SSLSocketFactory getSSLSocketFactory();
-    method public abstract java.security.cert.Certificate[] getServerCertificates() throws javax.net.ssl.SSLPeerUnverifiedException;
-    method public static void setDefaultHostnameVerifier(javax.net.ssl.HostnameVerifier);
-    method public static void setDefaultSSLSocketFactory(javax.net.ssl.SSLSocketFactory);
-    method public void setHostnameVerifier(javax.net.ssl.HostnameVerifier);
-    method public void setSSLSocketFactory(javax.net.ssl.SSLSocketFactory);
-    field protected javax.net.ssl.HostnameVerifier hostnameVerifier;
-  }
-
-  public interface KeyManager {
-  }
-
-  public class KeyManagerFactory {
-    ctor protected KeyManagerFactory(javax.net.ssl.KeyManagerFactorySpi, java.security.Provider, String);
-    method public final String getAlgorithm();
-    method public static final String getDefaultAlgorithm();
-    method public static final javax.net.ssl.KeyManagerFactory getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static final javax.net.ssl.KeyManagerFactory getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static final javax.net.ssl.KeyManagerFactory getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final javax.net.ssl.KeyManager[] getKeyManagers();
-    method public final java.security.Provider getProvider();
-    method public final void init(java.security.KeyStore, char[]) throws java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
-    method public final void init(javax.net.ssl.ManagerFactoryParameters) throws java.security.InvalidAlgorithmParameterException;
-  }
-
-  public abstract class KeyManagerFactorySpi {
-    ctor public KeyManagerFactorySpi();
-    method protected abstract javax.net.ssl.KeyManager[] engineGetKeyManagers();
-    method protected abstract void engineInit(java.security.KeyStore, char[]) throws java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
-    method protected abstract void engineInit(javax.net.ssl.ManagerFactoryParameters) throws java.security.InvalidAlgorithmParameterException;
-  }
-
-  public class KeyStoreBuilderParameters implements javax.net.ssl.ManagerFactoryParameters {
-    ctor public KeyStoreBuilderParameters(java.security.KeyStore.Builder);
-    ctor public KeyStoreBuilderParameters(java.util.List<java.security.KeyStore.Builder>);
-    method public java.util.List<java.security.KeyStore.Builder> getParameters();
-  }
-
-  public interface ManagerFactoryParameters {
-  }
-
-  public final class SNIHostName extends javax.net.ssl.SNIServerName {
-    ctor public SNIHostName(String);
-    ctor public SNIHostName(byte[]);
-    method public static javax.net.ssl.SNIMatcher createSNIMatcher(String);
-    method public String getAsciiName();
-  }
-
-  public abstract class SNIMatcher {
-    ctor protected SNIMatcher(int);
-    method public final int getType();
-    method public abstract boolean matches(javax.net.ssl.SNIServerName);
-  }
-
-  public abstract class SNIServerName {
-    ctor protected SNIServerName(int, byte[]);
-    method public final byte[] getEncoded();
-    method public final int getType();
-  }
-
-  public class SSLContext {
-    ctor protected SSLContext(javax.net.ssl.SSLContextSpi, java.security.Provider, String);
-    method public final javax.net.ssl.SSLEngine createSSLEngine();
-    method public final javax.net.ssl.SSLEngine createSSLEngine(String, int);
-    method public final javax.net.ssl.SSLSessionContext getClientSessionContext();
-    method public static javax.net.ssl.SSLContext getDefault() throws java.security.NoSuchAlgorithmException;
-    method public final javax.net.ssl.SSLParameters getDefaultSSLParameters();
-    method public static javax.net.ssl.SSLContext getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static javax.net.ssl.SSLContext getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static javax.net.ssl.SSLContext getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final String getProtocol();
-    method public final java.security.Provider getProvider();
-    method public final javax.net.ssl.SSLSessionContext getServerSessionContext();
-    method public final javax.net.ssl.SSLServerSocketFactory getServerSocketFactory();
-    method public final javax.net.ssl.SSLSocketFactory getSocketFactory();
-    method public final javax.net.ssl.SSLParameters getSupportedSSLParameters();
-    method public final void init(javax.net.ssl.KeyManager[], javax.net.ssl.TrustManager[], java.security.SecureRandom) throws java.security.KeyManagementException;
-    method public static void setDefault(javax.net.ssl.SSLContext);
-  }
-
-  public abstract class SSLContextSpi {
-    ctor public SSLContextSpi();
-    method protected abstract javax.net.ssl.SSLEngine engineCreateSSLEngine();
-    method protected abstract javax.net.ssl.SSLEngine engineCreateSSLEngine(String, int);
-    method protected abstract javax.net.ssl.SSLSessionContext engineGetClientSessionContext();
-    method protected javax.net.ssl.SSLParameters engineGetDefaultSSLParameters();
-    method protected abstract javax.net.ssl.SSLSessionContext engineGetServerSessionContext();
-    method protected abstract javax.net.ssl.SSLServerSocketFactory engineGetServerSocketFactory();
-    method protected abstract javax.net.ssl.SSLSocketFactory engineGetSocketFactory();
-    method protected javax.net.ssl.SSLParameters engineGetSupportedSSLParameters();
-    method protected abstract void engineInit(javax.net.ssl.KeyManager[], javax.net.ssl.TrustManager[], java.security.SecureRandom) throws java.security.KeyManagementException;
-  }
-
-  public abstract class SSLEngine {
-    ctor protected SSLEngine();
-    ctor protected SSLEngine(String, int);
-    method public abstract void beginHandshake() throws javax.net.ssl.SSLException;
-    method public abstract void closeInbound() throws javax.net.ssl.SSLException;
-    method public abstract void closeOutbound();
-    method public String getApplicationProtocol();
-    method public abstract Runnable getDelegatedTask();
-    method public abstract boolean getEnableSessionCreation();
-    method public abstract String[] getEnabledCipherSuites();
-    method public abstract String[] getEnabledProtocols();
-    method public String getHandshakeApplicationProtocol();
-    method public java.util.function.BiFunction<javax.net.ssl.SSLEngine,java.util.List<java.lang.String>,java.lang.String> getHandshakeApplicationProtocolSelector();
-    method public javax.net.ssl.SSLSession getHandshakeSession();
-    method public abstract javax.net.ssl.SSLEngineResult.HandshakeStatus getHandshakeStatus();
-    method public abstract boolean getNeedClientAuth();
-    method public String getPeerHost();
-    method public int getPeerPort();
-    method public javax.net.ssl.SSLParameters getSSLParameters();
-    method public abstract javax.net.ssl.SSLSession getSession();
-    method public abstract String[] getSupportedCipherSuites();
-    method public abstract String[] getSupportedProtocols();
-    method public abstract boolean getUseClientMode();
-    method public abstract boolean getWantClientAuth();
-    method public abstract boolean isInboundDone();
-    method public abstract boolean isOutboundDone();
-    method public abstract void setEnableSessionCreation(boolean);
-    method public abstract void setEnabledCipherSuites(String[]);
-    method public abstract void setEnabledProtocols(String[]);
-    method public void setHandshakeApplicationProtocolSelector(java.util.function.BiFunction<javax.net.ssl.SSLEngine,java.util.List<java.lang.String>,java.lang.String>);
-    method public abstract void setNeedClientAuth(boolean);
-    method public void setSSLParameters(javax.net.ssl.SSLParameters);
-    method public abstract void setUseClientMode(boolean);
-    method public abstract void setWantClientAuth(boolean);
-    method public javax.net.ssl.SSLEngineResult unwrap(java.nio.ByteBuffer, java.nio.ByteBuffer) throws javax.net.ssl.SSLException;
-    method public javax.net.ssl.SSLEngineResult unwrap(java.nio.ByteBuffer, java.nio.ByteBuffer[]) throws javax.net.ssl.SSLException;
-    method public abstract javax.net.ssl.SSLEngineResult unwrap(java.nio.ByteBuffer, java.nio.ByteBuffer[], int, int) throws javax.net.ssl.SSLException;
-    method public javax.net.ssl.SSLEngineResult wrap(java.nio.ByteBuffer, java.nio.ByteBuffer) throws javax.net.ssl.SSLException;
-    method public javax.net.ssl.SSLEngineResult wrap(java.nio.ByteBuffer[], java.nio.ByteBuffer) throws javax.net.ssl.SSLException;
-    method public abstract javax.net.ssl.SSLEngineResult wrap(java.nio.ByteBuffer[], int, int, java.nio.ByteBuffer) throws javax.net.ssl.SSLException;
-  }
-
-  public class SSLEngineResult {
-    ctor public SSLEngineResult(javax.net.ssl.SSLEngineResult.Status, javax.net.ssl.SSLEngineResult.HandshakeStatus, int, int);
-    method public final int bytesConsumed();
-    method public final int bytesProduced();
-    method public final javax.net.ssl.SSLEngineResult.HandshakeStatus getHandshakeStatus();
-    method public final javax.net.ssl.SSLEngineResult.Status getStatus();
-  }
-
-  public enum SSLEngineResult.HandshakeStatus {
-    enum_constant public static final javax.net.ssl.SSLEngineResult.HandshakeStatus FINISHED;
-    enum_constant public static final javax.net.ssl.SSLEngineResult.HandshakeStatus NEED_TASK;
-    enum_constant public static final javax.net.ssl.SSLEngineResult.HandshakeStatus NEED_UNWRAP;
-    enum_constant public static final javax.net.ssl.SSLEngineResult.HandshakeStatus NEED_WRAP;
-    enum_constant public static final javax.net.ssl.SSLEngineResult.HandshakeStatus NOT_HANDSHAKING;
-  }
-
-  public enum SSLEngineResult.Status {
-    enum_constant public static final javax.net.ssl.SSLEngineResult.Status BUFFER_OVERFLOW;
-    enum_constant public static final javax.net.ssl.SSLEngineResult.Status BUFFER_UNDERFLOW;
-    enum_constant public static final javax.net.ssl.SSLEngineResult.Status CLOSED;
-    enum_constant public static final javax.net.ssl.SSLEngineResult.Status OK;
-  }
-
-  public class SSLException extends java.io.IOException {
-    ctor public SSLException(String);
-    ctor public SSLException(String, Throwable);
-    ctor public SSLException(Throwable);
-  }
-
-  public class SSLHandshakeException extends javax.net.ssl.SSLException {
-    ctor public SSLHandshakeException(String);
-  }
-
-  public class SSLKeyException extends javax.net.ssl.SSLException {
-    ctor public SSLKeyException(String);
-  }
-
-  public class SSLParameters {
-    ctor public SSLParameters();
-    ctor public SSLParameters(String[]);
-    ctor public SSLParameters(String[], String[]);
-    method public java.security.AlgorithmConstraints getAlgorithmConstraints();
-    method public String[] getApplicationProtocols();
-    method public String[] getCipherSuites();
-    method public String getEndpointIdentificationAlgorithm();
-    method public boolean getNeedClientAuth();
-    method public String[] getProtocols();
-    method public final java.util.Collection<javax.net.ssl.SNIMatcher> getSNIMatchers();
-    method public final java.util.List<javax.net.ssl.SNIServerName> getServerNames();
-    method public final boolean getUseCipherSuitesOrder();
-    method public boolean getWantClientAuth();
-    method public void setAlgorithmConstraints(java.security.AlgorithmConstraints);
-    method public void setApplicationProtocols(String[]);
-    method public void setCipherSuites(String[]);
-    method public void setEndpointIdentificationAlgorithm(String);
-    method public void setNeedClientAuth(boolean);
-    method public void setProtocols(String[]);
-    method public final void setSNIMatchers(java.util.Collection<javax.net.ssl.SNIMatcher>);
-    method public final void setServerNames(java.util.List<javax.net.ssl.SNIServerName>);
-    method public final void setUseCipherSuitesOrder(boolean);
-    method public void setWantClientAuth(boolean);
-  }
-
-  public class SSLPeerUnverifiedException extends javax.net.ssl.SSLException {
-    ctor public SSLPeerUnverifiedException(String);
-  }
-
-  public final class SSLPermission extends java.security.BasicPermission {
-    ctor public SSLPermission(String);
-    ctor public SSLPermission(String, String);
-  }
-
-  public class SSLProtocolException extends javax.net.ssl.SSLException {
-    ctor public SSLProtocolException(String);
-  }
-
-  public abstract class SSLServerSocket extends java.net.ServerSocket {
-    ctor protected SSLServerSocket() throws java.io.IOException;
-    ctor protected SSLServerSocket(int) throws java.io.IOException;
-    ctor protected SSLServerSocket(int, int) throws java.io.IOException;
-    ctor protected SSLServerSocket(int, int, java.net.InetAddress) throws java.io.IOException;
-    method public abstract boolean getEnableSessionCreation();
-    method public abstract String[] getEnabledCipherSuites();
-    method public abstract String[] getEnabledProtocols();
-    method public abstract boolean getNeedClientAuth();
-    method public javax.net.ssl.SSLParameters getSSLParameters();
-    method public abstract String[] getSupportedCipherSuites();
-    method public abstract String[] getSupportedProtocols();
-    method public abstract boolean getUseClientMode();
-    method public abstract boolean getWantClientAuth();
-    method public abstract void setEnableSessionCreation(boolean);
-    method public abstract void setEnabledCipherSuites(String[]);
-    method public abstract void setEnabledProtocols(String[]);
-    method public abstract void setNeedClientAuth(boolean);
-    method public void setSSLParameters(javax.net.ssl.SSLParameters);
-    method public abstract void setUseClientMode(boolean);
-    method public abstract void setWantClientAuth(boolean);
-  }
-
-  public abstract class SSLServerSocketFactory extends javax.net.ServerSocketFactory {
-    ctor protected SSLServerSocketFactory();
-    method public static javax.net.ServerSocketFactory getDefault();
-    method public abstract String[] getDefaultCipherSuites();
-    method public abstract String[] getSupportedCipherSuites();
-  }
-
-  public interface SSLSession {
-    method public int getApplicationBufferSize();
-    method public String getCipherSuite();
-    method public long getCreationTime();
-    method public byte[] getId();
-    method public long getLastAccessedTime();
-    method public java.security.cert.Certificate[] getLocalCertificates();
-    method public java.security.Principal getLocalPrincipal();
-    method public int getPacketBufferSize();
-    method public javax.security.cert.X509Certificate[] getPeerCertificateChain() throws javax.net.ssl.SSLPeerUnverifiedException;
-    method public java.security.cert.Certificate[] getPeerCertificates() throws javax.net.ssl.SSLPeerUnverifiedException;
-    method public String getPeerHost();
-    method public int getPeerPort();
-    method public java.security.Principal getPeerPrincipal() throws javax.net.ssl.SSLPeerUnverifiedException;
-    method public String getProtocol();
-    method public javax.net.ssl.SSLSessionContext getSessionContext();
-    method public Object getValue(String);
-    method public String[] getValueNames();
-    method public void invalidate();
-    method public boolean isValid();
-    method public void putValue(String, Object);
-    method public void removeValue(String);
-  }
-
-  public class SSLSessionBindingEvent extends java.util.EventObject {
-    ctor public SSLSessionBindingEvent(javax.net.ssl.SSLSession, String);
-    method public String getName();
-    method public javax.net.ssl.SSLSession getSession();
-  }
-
-  public interface SSLSessionBindingListener extends java.util.EventListener {
-    method public void valueBound(javax.net.ssl.SSLSessionBindingEvent);
-    method public void valueUnbound(javax.net.ssl.SSLSessionBindingEvent);
-  }
-
-  public interface SSLSessionContext {
-    method public java.util.Enumeration<byte[]> getIds();
-    method public javax.net.ssl.SSLSession getSession(byte[]);
-    method public int getSessionCacheSize();
-    method public int getSessionTimeout();
-    method public void setSessionCacheSize(int) throws java.lang.IllegalArgumentException;
-    method public void setSessionTimeout(int) throws java.lang.IllegalArgumentException;
-  }
-
-  public abstract class SSLSocket extends java.net.Socket {
-    ctor protected SSLSocket();
-    ctor protected SSLSocket(String, int) throws java.io.IOException, java.net.UnknownHostException;
-    ctor protected SSLSocket(java.net.InetAddress, int) throws java.io.IOException;
-    ctor protected SSLSocket(String, int, java.net.InetAddress, int) throws java.io.IOException, java.net.UnknownHostException;
-    ctor protected SSLSocket(java.net.InetAddress, int, java.net.InetAddress, int) throws java.io.IOException;
-    method public abstract void addHandshakeCompletedListener(javax.net.ssl.HandshakeCompletedListener);
-    method public String getApplicationProtocol();
-    method public abstract boolean getEnableSessionCreation();
-    method public abstract String[] getEnabledCipherSuites();
-    method public abstract String[] getEnabledProtocols();
-    method public String getHandshakeApplicationProtocol();
-    method public java.util.function.BiFunction<javax.net.ssl.SSLSocket,java.util.List<java.lang.String>,java.lang.String> getHandshakeApplicationProtocolSelector();
-    method public javax.net.ssl.SSLSession getHandshakeSession();
-    method public abstract boolean getNeedClientAuth();
-    method public javax.net.ssl.SSLParameters getSSLParameters();
-    method public abstract javax.net.ssl.SSLSession getSession();
-    method public abstract String[] getSupportedCipherSuites();
-    method public abstract String[] getSupportedProtocols();
-    method public abstract boolean getUseClientMode();
-    method public abstract boolean getWantClientAuth();
-    method public abstract void removeHandshakeCompletedListener(javax.net.ssl.HandshakeCompletedListener);
-    method public abstract void setEnableSessionCreation(boolean);
-    method public abstract void setEnabledCipherSuites(String[]);
-    method public abstract void setEnabledProtocols(String[]);
-    method public void setHandshakeApplicationProtocolSelector(java.util.function.BiFunction<javax.net.ssl.SSLSocket,java.util.List<java.lang.String>,java.lang.String>);
-    method public abstract void setNeedClientAuth(boolean);
-    method public void setSSLParameters(javax.net.ssl.SSLParameters);
-    method public abstract void setUseClientMode(boolean);
-    method public abstract void setWantClientAuth(boolean);
-    method public abstract void startHandshake() throws java.io.IOException;
-  }
-
-  public abstract class SSLSocketFactory extends javax.net.SocketFactory {
-    ctor public SSLSocketFactory();
-    method public abstract java.net.Socket createSocket(java.net.Socket, String, int, boolean) throws java.io.IOException;
-    method public static javax.net.SocketFactory getDefault();
-    method public abstract String[] getDefaultCipherSuites();
-    method public abstract String[] getSupportedCipherSuites();
-  }
-
-  public final class StandardConstants {
-    field public static final int SNI_HOST_NAME = 0; // 0x0
-  }
-
-  public interface TrustManager {
-  }
-
-  public class TrustManagerFactory {
-    ctor protected TrustManagerFactory(javax.net.ssl.TrustManagerFactorySpi, java.security.Provider, String);
-    method public final String getAlgorithm();
-    method public static final String getDefaultAlgorithm();
-    method public static final javax.net.ssl.TrustManagerFactory getInstance(String) throws java.security.NoSuchAlgorithmException;
-    method public static final javax.net.ssl.TrustManagerFactory getInstance(String, String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
-    method public static final javax.net.ssl.TrustManagerFactory getInstance(String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
-    method public final java.security.Provider getProvider();
-    method public final javax.net.ssl.TrustManager[] getTrustManagers();
-    method public final void init(java.security.KeyStore) throws java.security.KeyStoreException;
-    method public final void init(javax.net.ssl.ManagerFactoryParameters) throws java.security.InvalidAlgorithmParameterException;
-  }
-
-  public abstract class TrustManagerFactorySpi {
-    ctor public TrustManagerFactorySpi();
-    method protected abstract javax.net.ssl.TrustManager[] engineGetTrustManagers();
-    method protected abstract void engineInit(java.security.KeyStore) throws java.security.KeyStoreException;
-    method protected abstract void engineInit(javax.net.ssl.ManagerFactoryParameters) throws java.security.InvalidAlgorithmParameterException;
-  }
-
-  public abstract class X509ExtendedKeyManager implements javax.net.ssl.X509KeyManager {
-    ctor protected X509ExtendedKeyManager();
-    method public String chooseEngineClientAlias(String[], java.security.Principal[], javax.net.ssl.SSLEngine);
-    method public String chooseEngineServerAlias(String, java.security.Principal[], javax.net.ssl.SSLEngine);
-  }
-
-  public abstract class X509ExtendedTrustManager implements javax.net.ssl.X509TrustManager {
-    ctor public X509ExtendedTrustManager();
-    method public abstract void checkClientTrusted(java.security.cert.X509Certificate[], String, java.net.Socket) throws java.security.cert.CertificateException;
-    method public abstract void checkClientTrusted(java.security.cert.X509Certificate[], String, javax.net.ssl.SSLEngine) throws java.security.cert.CertificateException;
-    method public abstract void checkServerTrusted(java.security.cert.X509Certificate[], String, java.net.Socket) throws java.security.cert.CertificateException;
-    method public abstract void checkServerTrusted(java.security.cert.X509Certificate[], String, javax.net.ssl.SSLEngine) throws java.security.cert.CertificateException;
-  }
-
-  public interface X509KeyManager extends javax.net.ssl.KeyManager {
-    method public String chooseClientAlias(String[], java.security.Principal[], java.net.Socket);
-    method public String chooseServerAlias(String, java.security.Principal[], java.net.Socket);
-    method public java.security.cert.X509Certificate[] getCertificateChain(String);
-    method public String[] getClientAliases(String, java.security.Principal[]);
-    method public java.security.PrivateKey getPrivateKey(String);
-    method public String[] getServerAliases(String, java.security.Principal[]);
-  }
-
-  public interface X509TrustManager extends javax.net.ssl.TrustManager {
-    method public void checkClientTrusted(java.security.cert.X509Certificate[], String) throws java.security.cert.CertificateException;
-    method public void checkServerTrusted(java.security.cert.X509Certificate[], String) throws java.security.cert.CertificateException;
-    method public java.security.cert.X509Certificate[] getAcceptedIssuers();
-  }
-
-}
-
-package javax.security.auth {
-
-  public final class AuthPermission extends java.security.BasicPermission {
-    ctor public AuthPermission(String);
-    ctor public AuthPermission(String, String);
-  }
-
-  public class DestroyFailedException extends java.lang.Exception {
-    ctor public DestroyFailedException();
-    ctor public DestroyFailedException(String);
-  }
-
-  public interface Destroyable {
-    method public default void destroy() throws javax.security.auth.DestroyFailedException;
-    method public default boolean isDestroyed();
-  }
-
-  public final class PrivateCredentialPermission extends java.security.Permission {
-    ctor public PrivateCredentialPermission(String, String);
-    method public String getActions();
-    method public String getCredentialClass();
-    method public String[][] getPrincipals();
-    method public boolean implies(java.security.Permission);
-  }
-
-  public final class Subject implements java.io.Serializable {
-    ctor public Subject();
-    ctor public Subject(boolean, java.util.Set<? extends java.security.Principal>, java.util.Set<?>, java.util.Set<?>);
-    method public static <T> T doAs(javax.security.auth.Subject, java.security.PrivilegedAction<T>);
-    method public static <T> T doAs(javax.security.auth.Subject, java.security.PrivilegedExceptionAction<T>) throws java.security.PrivilegedActionException;
-    method public static <T> T doAsPrivileged(javax.security.auth.Subject, java.security.PrivilegedAction<T>, java.security.AccessControlContext);
-    method public static <T> T doAsPrivileged(javax.security.auth.Subject, java.security.PrivilegedExceptionAction<T>, java.security.AccessControlContext) throws java.security.PrivilegedActionException;
-    method public java.util.Set<java.security.Principal> getPrincipals();
-    method public <T extends java.security.Principal> java.util.Set<T> getPrincipals(Class<T>);
-    method public java.util.Set<java.lang.Object> getPrivateCredentials();
-    method public <T> java.util.Set<T> getPrivateCredentials(Class<T>);
-    method public java.util.Set<java.lang.Object> getPublicCredentials();
-    method public <T> java.util.Set<T> getPublicCredentials(Class<T>);
-    method public static javax.security.auth.Subject getSubject(java.security.AccessControlContext);
-    method public boolean isReadOnly();
-    method public void setReadOnly();
-  }
-
-  public class SubjectDomainCombiner implements java.security.DomainCombiner {
-    ctor public SubjectDomainCombiner(javax.security.auth.Subject);
-    method public java.security.ProtectionDomain[] combine(java.security.ProtectionDomain[], java.security.ProtectionDomain[]);
-    method public javax.security.auth.Subject getSubject();
-  }
-
-}
-
-package javax.security.auth.callback {
-
-  public interface Callback {
-  }
-
-  public interface CallbackHandler {
-    method public void handle(javax.security.auth.callback.Callback[]) throws java.io.IOException, javax.security.auth.callback.UnsupportedCallbackException;
-  }
-
-  public class PasswordCallback implements javax.security.auth.callback.Callback java.io.Serializable {
-    ctor public PasswordCallback(String, boolean);
-    method public void clearPassword();
-    method public char[] getPassword();
-    method public String getPrompt();
-    method public boolean isEchoOn();
-    method public void setPassword(char[]);
-  }
-
-  public class UnsupportedCallbackException extends java.lang.Exception {
-    ctor public UnsupportedCallbackException(javax.security.auth.callback.Callback);
-    ctor public UnsupportedCallbackException(javax.security.auth.callback.Callback, String);
-    method public javax.security.auth.callback.Callback getCallback();
-  }
-
-}
-
-package javax.security.auth.login {
-
-  public class LoginException extends java.security.GeneralSecurityException {
-    ctor public LoginException();
-    ctor public LoginException(String);
-  }
-
-}
-
-package javax.security.auth.x500 {
-
-  public final class X500Principal implements java.security.Principal java.io.Serializable {
-    ctor public X500Principal(String);
-    ctor public X500Principal(String, java.util.Map<java.lang.String,java.lang.String>);
-    ctor public X500Principal(byte[]);
-    ctor public X500Principal(java.io.InputStream);
-    method public byte[] getEncoded();
-    method public String getName();
-    method public String getName(String);
-    method public String getName(String, java.util.Map<java.lang.String,java.lang.String>);
-    field public static final String CANONICAL = "CANONICAL";
-    field public static final String RFC1779 = "RFC1779";
-    field public static final String RFC2253 = "RFC2253";
-  }
-
-}
-
-package javax.security.cert {
-
-  public abstract class Certificate {
-    ctor public Certificate();
-    method public abstract byte[] getEncoded() throws javax.security.cert.CertificateEncodingException;
-    method public abstract java.security.PublicKey getPublicKey();
-    method public abstract String toString();
-    method public abstract void verify(java.security.PublicKey) throws javax.security.cert.CertificateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
-    method public abstract void verify(java.security.PublicKey, String) throws javax.security.cert.CertificateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException;
-  }
-
-  public class CertificateEncodingException extends javax.security.cert.CertificateException {
-    ctor public CertificateEncodingException();
-    ctor public CertificateEncodingException(String);
-  }
-
-  public class CertificateException extends java.lang.Exception {
-    ctor public CertificateException();
-    ctor public CertificateException(String);
-  }
-
-  public class CertificateExpiredException extends javax.security.cert.CertificateException {
-    ctor public CertificateExpiredException();
-    ctor public CertificateExpiredException(String);
-  }
-
-  public class CertificateNotYetValidException extends javax.security.cert.CertificateException {
-    ctor public CertificateNotYetValidException();
-    ctor public CertificateNotYetValidException(String);
-  }
-
-  public class CertificateParsingException extends javax.security.cert.CertificateException {
-    ctor public CertificateParsingException();
-    ctor public CertificateParsingException(String);
-  }
-
-  public abstract class X509Certificate extends javax.security.cert.Certificate {
-    ctor public X509Certificate();
-    method public abstract void checkValidity() throws javax.security.cert.CertificateExpiredException, javax.security.cert.CertificateNotYetValidException;
-    method public abstract void checkValidity(java.util.Date) throws javax.security.cert.CertificateExpiredException, javax.security.cert.CertificateNotYetValidException;
-    method public static final javax.security.cert.X509Certificate getInstance(java.io.InputStream) throws javax.security.cert.CertificateException;
-    method public static final javax.security.cert.X509Certificate getInstance(byte[]) throws javax.security.cert.CertificateException;
-    method public abstract java.security.Principal getIssuerDN();
-    method public abstract java.util.Date getNotAfter();
-    method public abstract java.util.Date getNotBefore();
-    method public abstract java.math.BigInteger getSerialNumber();
-    method public abstract String getSigAlgName();
-    method public abstract String getSigAlgOID();
-    method public abstract byte[] getSigAlgParams();
-    method public abstract java.security.Principal getSubjectDN();
-    method public abstract int getVersion();
-  }
-
-}
-
-package javax.sql {
-
-  public interface CommonDataSource {
-    method public java.io.PrintWriter getLogWriter() throws java.sql.SQLException;
-    method public int getLoginTimeout() throws java.sql.SQLException;
-    method public java.util.logging.Logger getParentLogger() throws java.sql.SQLFeatureNotSupportedException;
-    method public void setLogWriter(java.io.PrintWriter) throws java.sql.SQLException;
-    method public void setLoginTimeout(int) throws java.sql.SQLException;
-  }
-
-  public class ConnectionEvent extends java.util.EventObject {
-    ctor public ConnectionEvent(javax.sql.PooledConnection);
-    ctor public ConnectionEvent(javax.sql.PooledConnection, java.sql.SQLException);
-    method public java.sql.SQLException getSQLException();
-  }
-
-  public interface ConnectionEventListener extends java.util.EventListener {
-    method public void connectionClosed(javax.sql.ConnectionEvent);
-    method public void connectionErrorOccurred(javax.sql.ConnectionEvent);
-  }
-
-  public interface ConnectionPoolDataSource extends javax.sql.CommonDataSource {
-    method public javax.sql.PooledConnection getPooledConnection() throws java.sql.SQLException;
-    method public javax.sql.PooledConnection getPooledConnection(String, String) throws java.sql.SQLException;
-  }
-
-  public interface DataSource extends javax.sql.CommonDataSource java.sql.Wrapper {
-    method public java.sql.Connection getConnection() throws java.sql.SQLException;
-    method public java.sql.Connection getConnection(String, String) throws java.sql.SQLException;
-  }
-
-  public interface PooledConnection {
-    method public void addConnectionEventListener(javax.sql.ConnectionEventListener);
-    method public void addStatementEventListener(javax.sql.StatementEventListener);
-    method public void close() throws java.sql.SQLException;
-    method public java.sql.Connection getConnection() throws java.sql.SQLException;
-    method public void removeConnectionEventListener(javax.sql.ConnectionEventListener);
-    method public void removeStatementEventListener(javax.sql.StatementEventListener);
-  }
-
-  public interface RowSet extends java.sql.ResultSet {
-    method public void addRowSetListener(javax.sql.RowSetListener);
-    method public void clearParameters() throws java.sql.SQLException;
-    method public void execute() throws java.sql.SQLException;
-    method public String getCommand();
-    method public String getDataSourceName();
-    method public boolean getEscapeProcessing() throws java.sql.SQLException;
-    method public int getMaxFieldSize() throws java.sql.SQLException;
-    method public int getMaxRows() throws java.sql.SQLException;
-    method public String getPassword();
-    method public int getQueryTimeout() throws java.sql.SQLException;
-    method public int getTransactionIsolation();
-    method public java.util.Map<java.lang.String,java.lang.Class<?>> getTypeMap() throws java.sql.SQLException;
-    method public String getUrl() throws java.sql.SQLException;
-    method public String getUsername();
-    method public boolean isReadOnly();
-    method public void removeRowSetListener(javax.sql.RowSetListener);
-    method public void setArray(int, java.sql.Array) throws java.sql.SQLException;
-    method public void setAsciiStream(int, java.io.InputStream, int) throws java.sql.SQLException;
-    method public void setAsciiStream(String, java.io.InputStream, int) throws java.sql.SQLException;
-    method public void setAsciiStream(int, java.io.InputStream) throws java.sql.SQLException;
-    method public void setAsciiStream(String, java.io.InputStream) throws java.sql.SQLException;
-    method public void setBigDecimal(int, java.math.BigDecimal) throws java.sql.SQLException;
-    method public void setBigDecimal(String, java.math.BigDecimal) throws java.sql.SQLException;
-    method public void setBinaryStream(int, java.io.InputStream, int) throws java.sql.SQLException;
-    method public void setBinaryStream(String, java.io.InputStream, int) throws java.sql.SQLException;
-    method public void setBinaryStream(int, java.io.InputStream) throws java.sql.SQLException;
-    method public void setBinaryStream(String, java.io.InputStream) throws java.sql.SQLException;
-    method public void setBlob(int, java.sql.Blob) throws java.sql.SQLException;
-    method public void setBlob(int, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void setBlob(int, java.io.InputStream) throws java.sql.SQLException;
-    method public void setBlob(String, java.io.InputStream, long) throws java.sql.SQLException;
-    method public void setBlob(String, java.sql.Blob) throws java.sql.SQLException;
-    method public void setBlob(String, java.io.InputStream) throws java.sql.SQLException;
-    method public void setBoolean(int, boolean) throws java.sql.SQLException;
-    method public void setBoolean(String, boolean) throws java.sql.SQLException;
-    method public void setByte(int, byte) throws java.sql.SQLException;
-    method public void setByte(String, byte) throws java.sql.SQLException;
-    method public void setBytes(int, byte[]) throws java.sql.SQLException;
-    method public void setBytes(String, byte[]) throws java.sql.SQLException;
-    method public void setCharacterStream(int, java.io.Reader, int) throws java.sql.SQLException;
-    method public void setCharacterStream(String, java.io.Reader, int) throws java.sql.SQLException;
-    method public void setCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
-    method public void setCharacterStream(String, java.io.Reader) throws java.sql.SQLException;
-    method public void setClob(int, java.sql.Clob) throws java.sql.SQLException;
-    method public void setClob(int, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setClob(int, java.io.Reader) throws java.sql.SQLException;
-    method public void setClob(String, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setClob(String, java.sql.Clob) throws java.sql.SQLException;
-    method public void setClob(String, java.io.Reader) throws java.sql.SQLException;
-    method public void setCommand(String) throws java.sql.SQLException;
-    method public void setConcurrency(int) throws java.sql.SQLException;
-    method public void setDataSourceName(String) throws java.sql.SQLException;
-    method public void setDate(int, java.sql.Date) throws java.sql.SQLException;
-    method public void setDate(int, java.sql.Date, java.util.Calendar) throws java.sql.SQLException;
-    method public void setDate(String, java.sql.Date) throws java.sql.SQLException;
-    method public void setDate(String, java.sql.Date, java.util.Calendar) throws java.sql.SQLException;
-    method public void setDouble(int, double) throws java.sql.SQLException;
-    method public void setDouble(String, double) throws java.sql.SQLException;
-    method public void setEscapeProcessing(boolean) throws java.sql.SQLException;
-    method public void setFloat(int, float) throws java.sql.SQLException;
-    method public void setFloat(String, float) throws java.sql.SQLException;
-    method public void setInt(int, int) throws java.sql.SQLException;
-    method public void setInt(String, int) throws java.sql.SQLException;
-    method public void setLong(int, long) throws java.sql.SQLException;
-    method public void setLong(String, long) throws java.sql.SQLException;
-    method public void setMaxFieldSize(int) throws java.sql.SQLException;
-    method public void setMaxRows(int) throws java.sql.SQLException;
-    method public void setNCharacterStream(int, java.io.Reader) throws java.sql.SQLException;
-    method public void setNCharacterStream(int, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setNCharacterStream(String, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setNCharacterStream(String, java.io.Reader) throws java.sql.SQLException;
-    method public void setNClob(String, java.sql.NClob) throws java.sql.SQLException;
-    method public void setNClob(String, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setNClob(String, java.io.Reader) throws java.sql.SQLException;
-    method public void setNClob(int, java.io.Reader, long) throws java.sql.SQLException;
-    method public void setNClob(int, java.sql.NClob) throws java.sql.SQLException;
-    method public void setNClob(int, java.io.Reader) throws java.sql.SQLException;
-    method public void setNString(int, String) throws java.sql.SQLException;
-    method public void setNString(String, String) throws java.sql.SQLException;
-    method public void setNull(int, int) throws java.sql.SQLException;
-    method public void setNull(String, int) throws java.sql.SQLException;
-    method public void setNull(int, int, String) throws java.sql.SQLException;
-    method public void setNull(String, int, String) throws java.sql.SQLException;
-    method public void setObject(int, Object, int, int) throws java.sql.SQLException;
-    method public void setObject(String, Object, int, int) throws java.sql.SQLException;
-    method public void setObject(int, Object, int) throws java.sql.SQLException;
-    method public void setObject(String, Object, int) throws java.sql.SQLException;
-    method public void setObject(String, Object) throws java.sql.SQLException;
-    method public void setObject(int, Object) throws java.sql.SQLException;
-    method public void setPassword(String) throws java.sql.SQLException;
-    method public void setQueryTimeout(int) throws java.sql.SQLException;
-    method public void setReadOnly(boolean) throws java.sql.SQLException;
-    method public void setRef(int, java.sql.Ref) throws java.sql.SQLException;
-    method public void setRowId(int, java.sql.RowId) throws java.sql.SQLException;
-    method public void setRowId(String, java.sql.RowId) throws java.sql.SQLException;
-    method public void setSQLXML(int, java.sql.SQLXML) throws java.sql.SQLException;
-    method public void setSQLXML(String, java.sql.SQLXML) throws java.sql.SQLException;
-    method public void setShort(int, short) throws java.sql.SQLException;
-    method public void setShort(String, short) throws java.sql.SQLException;
-    method public void setString(int, String) throws java.sql.SQLException;
-    method public void setString(String, String) throws java.sql.SQLException;
-    method public void setTime(int, java.sql.Time) throws java.sql.SQLException;
-    method public void setTime(int, java.sql.Time, java.util.Calendar) throws java.sql.SQLException;
-    method public void setTime(String, java.sql.Time) throws java.sql.SQLException;
-    method public void setTime(String, java.sql.Time, java.util.Calendar) throws java.sql.SQLException;
-    method public void setTimestamp(int, java.sql.Timestamp) throws java.sql.SQLException;
-    method public void setTimestamp(String, java.sql.Timestamp) throws java.sql.SQLException;
-    method public void setTimestamp(int, java.sql.Timestamp, java.util.Calendar) throws java.sql.SQLException;
-    method public void setTimestamp(String, java.sql.Timestamp, java.util.Calendar) throws java.sql.SQLException;
-    method public void setTransactionIsolation(int) throws java.sql.SQLException;
-    method public void setType(int) throws java.sql.SQLException;
-    method public void setTypeMap(java.util.Map<java.lang.String,java.lang.Class<?>>) throws java.sql.SQLException;
-    method public void setURL(int, java.net.URL) throws java.sql.SQLException;
-    method public void setUrl(String) throws java.sql.SQLException;
-    method public void setUsername(String) throws java.sql.SQLException;
-  }
-
-  public class RowSetEvent extends java.util.EventObject {
-    ctor public RowSetEvent(javax.sql.RowSet);
-  }
-
-  public interface RowSetInternal {
-    method public java.sql.Connection getConnection() throws java.sql.SQLException;
-    method public java.sql.ResultSet getOriginal() throws java.sql.SQLException;
-    method public java.sql.ResultSet getOriginalRow() throws java.sql.SQLException;
-    method public Object[] getParams() throws java.sql.SQLException;
-    method public void setMetaData(javax.sql.RowSetMetaData) throws java.sql.SQLException;
-  }
-
-  public interface RowSetListener extends java.util.EventListener {
-    method public void cursorMoved(javax.sql.RowSetEvent);
-    method public void rowChanged(javax.sql.RowSetEvent);
-    method public void rowSetChanged(javax.sql.RowSetEvent);
-  }
-
-  public interface RowSetMetaData extends java.sql.ResultSetMetaData {
-    method public void setAutoIncrement(int, boolean) throws java.sql.SQLException;
-    method public void setCaseSensitive(int, boolean) throws java.sql.SQLException;
-    method public void setCatalogName(int, String) throws java.sql.SQLException;
-    method public void setColumnCount(int) throws java.sql.SQLException;
-    method public void setColumnDisplaySize(int, int) throws java.sql.SQLException;
-    method public void setColumnLabel(int, String) throws java.sql.SQLException;
-    method public void setColumnName(int, String) throws java.sql.SQLException;
-    method public void setColumnType(int, int) throws java.sql.SQLException;
-    method public void setColumnTypeName(int, String) throws java.sql.SQLException;
-    method public void setCurrency(int, boolean) throws java.sql.SQLException;
-    method public void setNullable(int, int) throws java.sql.SQLException;
-    method public void setPrecision(int, int) throws java.sql.SQLException;
-    method public void setScale(int, int) throws java.sql.SQLException;
-    method public void setSchemaName(int, String) throws java.sql.SQLException;
-    method public void setSearchable(int, boolean) throws java.sql.SQLException;
-    method public void setSigned(int, boolean) throws java.sql.SQLException;
-    method public void setTableName(int, String) throws java.sql.SQLException;
-  }
-
-  public interface RowSetReader {
-    method public void readData(javax.sql.RowSetInternal) throws java.sql.SQLException;
-  }
-
-  public interface RowSetWriter {
-    method public boolean writeData(javax.sql.RowSetInternal) throws java.sql.SQLException;
-  }
-
-  public class StatementEvent extends java.util.EventObject {
-    ctor public StatementEvent(javax.sql.PooledConnection, java.sql.PreparedStatement);
-    ctor public StatementEvent(javax.sql.PooledConnection, java.sql.PreparedStatement, java.sql.SQLException);
-    method public java.sql.SQLException getSQLException();
-    method public java.sql.PreparedStatement getStatement();
-  }
-
-  public interface StatementEventListener extends java.util.EventListener {
-    method public void statementClosed(javax.sql.StatementEvent);
-    method public void statementErrorOccurred(javax.sql.StatementEvent);
-  }
-
-}
-
-package javax.xml {
-
-  public final class XMLConstants {
-    field public static final String DEFAULT_NS_PREFIX = "";
-    field public static final String FEATURE_SECURE_PROCESSING = "http://javax.xml.XMLConstants/feature/secure-processing";
-    field public static final String NULL_NS_URI = "";
-    field public static final String RELAXNG_NS_URI = "http://relaxng.org/ns/structure/1.0";
-    field public static final String W3C_XML_SCHEMA_INSTANCE_NS_URI = "http://www.w3.org/2001/XMLSchema-instance";
-    field public static final String W3C_XML_SCHEMA_NS_URI = "http://www.w3.org/2001/XMLSchema";
-    field public static final String W3C_XPATH_DATATYPE_NS_URI = "http://www.w3.org/2003/11/xpath-datatypes";
-    field public static final String XMLNS_ATTRIBUTE = "xmlns";
-    field public static final String XMLNS_ATTRIBUTE_NS_URI = "http://www.w3.org/2000/xmlns/";
-    field public static final String XML_DTD_NS_URI = "http://www.w3.org/TR/REC-xml";
-    field public static final String XML_NS_PREFIX = "xml";
-    field public static final String XML_NS_URI = "http://www.w3.org/XML/1998/namespace";
-  }
-
-}
-
-package javax.xml.datatype {
-
-  public class DatatypeConfigurationException extends java.lang.Exception {
-    ctor public DatatypeConfigurationException();
-    ctor public DatatypeConfigurationException(String);
-    ctor public DatatypeConfigurationException(String, Throwable);
-    ctor public DatatypeConfigurationException(Throwable);
-  }
-
-  public final class DatatypeConstants {
-    field public static final int APRIL = 4; // 0x4
-    field public static final int AUGUST = 8; // 0x8
-    field public static final javax.xml.namespace.QName DATE;
-    field public static final javax.xml.namespace.QName DATETIME;
-    field public static final javax.xml.datatype.DatatypeConstants.Field DAYS;
-    field public static final int DECEMBER = 12; // 0xc
-    field public static final javax.xml.namespace.QName DURATION;
-    field public static final javax.xml.namespace.QName DURATION_DAYTIME;
-    field public static final javax.xml.namespace.QName DURATION_YEARMONTH;
-    field public static final int EQUAL = 0; // 0x0
-    field public static final int FEBRUARY = 2; // 0x2
-    field public static final int FIELD_UNDEFINED = -2147483648; // 0x80000000
-    field public static final javax.xml.namespace.QName GDAY;
-    field public static final javax.xml.namespace.QName GMONTH;
-    field public static final javax.xml.namespace.QName GMONTHDAY;
-    field public static final int GREATER = 1; // 0x1
-    field public static final javax.xml.namespace.QName GYEAR;
-    field public static final javax.xml.namespace.QName GYEARMONTH;
-    field public static final javax.xml.datatype.DatatypeConstants.Field HOURS;
-    field public static final int INDETERMINATE = 2; // 0x2
-    field public static final int JANUARY = 1; // 0x1
-    field public static final int JULY = 7; // 0x7
-    field public static final int JUNE = 6; // 0x6
-    field public static final int LESSER = -1; // 0xffffffff
-    field public static final int MARCH = 3; // 0x3
-    field public static final int MAX_TIMEZONE_OFFSET = -840; // 0xfffffcb8
-    field public static final int MAY = 5; // 0x5
-    field public static final javax.xml.datatype.DatatypeConstants.Field MINUTES;
-    field public static final int MIN_TIMEZONE_OFFSET = 840; // 0x348
-    field public static final javax.xml.datatype.DatatypeConstants.Field MONTHS;
-    field public static final int NOVEMBER = 11; // 0xb
-    field public static final int OCTOBER = 10; // 0xa
-    field public static final javax.xml.datatype.DatatypeConstants.Field SECONDS;
-    field public static final int SEPTEMBER = 9; // 0x9
-    field public static final javax.xml.namespace.QName TIME;
-    field public static final javax.xml.datatype.DatatypeConstants.Field YEARS;
-  }
-
-  public static final class DatatypeConstants.Field {
-    method public int getId();
-  }
-
-  public abstract class DatatypeFactory {
-    ctor protected DatatypeFactory();
-    method public abstract javax.xml.datatype.Duration newDuration(String);
-    method public abstract javax.xml.datatype.Duration newDuration(long);
-    method public abstract javax.xml.datatype.Duration newDuration(boolean, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigDecimal);
-    method public javax.xml.datatype.Duration newDuration(boolean, int, int, int, int, int, int);
-    method public javax.xml.datatype.Duration newDurationDayTime(String);
-    method public javax.xml.datatype.Duration newDurationDayTime(long);
-    method public javax.xml.datatype.Duration newDurationDayTime(boolean, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
-    method public javax.xml.datatype.Duration newDurationDayTime(boolean, int, int, int, int);
-    method public javax.xml.datatype.Duration newDurationYearMonth(String);
-    method public javax.xml.datatype.Duration newDurationYearMonth(long);
-    method public javax.xml.datatype.Duration newDurationYearMonth(boolean, java.math.BigInteger, java.math.BigInteger);
-    method public javax.xml.datatype.Duration newDurationYearMonth(boolean, int, int);
-    method public static javax.xml.datatype.DatatypeFactory newInstance() throws javax.xml.datatype.DatatypeConfigurationException;
-    method public static javax.xml.datatype.DatatypeFactory newInstance(String, ClassLoader) throws javax.xml.datatype.DatatypeConfigurationException;
-    method public abstract javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendar();
-    method public abstract javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendar(String);
-    method public abstract javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendar(java.util.GregorianCalendar);
-    method public abstract javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendar(java.math.BigInteger, int, int, int, int, int, java.math.BigDecimal, int);
-    method public javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendar(int, int, int, int, int, int, int, int);
-    method public javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendarDate(int, int, int, int);
-    method public javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendarTime(int, int, int, int);
-    method public javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendarTime(int, int, int, java.math.BigDecimal, int);
-    method public javax.xml.datatype.XMLGregorianCalendar newXMLGregorianCalendarTime(int, int, int, int, int);
-    field public static final String DATATYPEFACTORY_IMPLEMENTATION_CLASS;
-    field public static final String DATATYPEFACTORY_PROPERTY = "javax.xml.datatype.DatatypeFactory";
-  }
-
-  public abstract class Duration {
-    ctor public Duration();
-    method public abstract javax.xml.datatype.Duration add(javax.xml.datatype.Duration);
-    method public abstract void addTo(java.util.Calendar);
-    method public void addTo(java.util.Date);
-    method public abstract int compare(javax.xml.datatype.Duration);
-    method public int getDays();
-    method public abstract Number getField(javax.xml.datatype.DatatypeConstants.Field);
-    method public int getHours();
-    method public int getMinutes();
-    method public int getMonths();
-    method public int getSeconds();
-    method public abstract int getSign();
-    method public long getTimeInMillis(java.util.Calendar);
-    method public long getTimeInMillis(java.util.Date);
-    method public javax.xml.namespace.QName getXMLSchemaType();
-    method public int getYears();
-    method public abstract int hashCode();
-    method public boolean isLongerThan(javax.xml.datatype.Duration);
-    method public abstract boolean isSet(javax.xml.datatype.DatatypeConstants.Field);
-    method public boolean isShorterThan(javax.xml.datatype.Duration);
-    method public javax.xml.datatype.Duration multiply(int);
-    method public abstract javax.xml.datatype.Duration multiply(java.math.BigDecimal);
-    method public abstract javax.xml.datatype.Duration negate();
-    method public abstract javax.xml.datatype.Duration normalizeWith(java.util.Calendar);
-    method public javax.xml.datatype.Duration subtract(javax.xml.datatype.Duration);
-  }
-
-  public abstract class XMLGregorianCalendar implements java.lang.Cloneable {
-    ctor public XMLGregorianCalendar();
-    method public abstract void add(javax.xml.datatype.Duration);
-    method public abstract void clear();
-    method public abstract Object clone();
-    method public abstract int compare(javax.xml.datatype.XMLGregorianCalendar);
-    method public abstract int getDay();
-    method public abstract java.math.BigInteger getEon();
-    method public abstract java.math.BigInteger getEonAndYear();
-    method public abstract java.math.BigDecimal getFractionalSecond();
-    method public abstract int getHour();
-    method public int getMillisecond();
-    method public abstract int getMinute();
-    method public abstract int getMonth();
-    method public abstract int getSecond();
-    method public abstract java.util.TimeZone getTimeZone(int);
-    method public abstract int getTimezone();
-    method public abstract javax.xml.namespace.QName getXMLSchemaType();
-    method public abstract int getYear();
-    method public abstract boolean isValid();
-    method public abstract javax.xml.datatype.XMLGregorianCalendar normalize();
-    method public abstract void reset();
-    method public abstract void setDay(int);
-    method public abstract void setFractionalSecond(java.math.BigDecimal);
-    method public abstract void setHour(int);
-    method public abstract void setMillisecond(int);
-    method public abstract void setMinute(int);
-    method public abstract void setMonth(int);
-    method public abstract void setSecond(int);
-    method public void setTime(int, int, int);
-    method public void setTime(int, int, int, java.math.BigDecimal);
-    method public void setTime(int, int, int, int);
-    method public abstract void setTimezone(int);
-    method public abstract void setYear(java.math.BigInteger);
-    method public abstract void setYear(int);
-    method public abstract java.util.GregorianCalendar toGregorianCalendar();
-    method public abstract java.util.GregorianCalendar toGregorianCalendar(java.util.TimeZone, java.util.Locale, javax.xml.datatype.XMLGregorianCalendar);
-    method public abstract String toXMLFormat();
-  }
-
-}
-
-package javax.xml.namespace {
-
-  public interface NamespaceContext {
-    method public String getNamespaceURI(String);
-    method public String getPrefix(String);
-    method public java.util.Iterator getPrefixes(String);
-  }
-
-  public class QName implements java.io.Serializable {
-    ctor public QName(String, String);
-    ctor public QName(String, String, String);
-    ctor public QName(String);
-    method public final boolean equals(Object);
-    method public String getLocalPart();
-    method public String getNamespaceURI();
-    method public String getPrefix();
-    method public final int hashCode();
-    method public static javax.xml.namespace.QName valueOf(String);
-  }
-
-}
-
-package javax.xml.parsers {
-
-  public abstract class DocumentBuilder {
-    ctor protected DocumentBuilder();
-    method public abstract org.w3c.dom.DOMImplementation getDOMImplementation();
-    method public javax.xml.validation.Schema getSchema();
-    method public abstract boolean isNamespaceAware();
-    method public abstract boolean isValidating();
-    method public boolean isXIncludeAware();
-    method public abstract org.w3c.dom.Document newDocument();
-    method public org.w3c.dom.Document parse(java.io.InputStream) throws java.io.IOException, org.xml.sax.SAXException;
-    method public org.w3c.dom.Document parse(java.io.InputStream, String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public org.w3c.dom.Document parse(String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public org.w3c.dom.Document parse(java.io.File) throws java.io.IOException, org.xml.sax.SAXException;
-    method public abstract org.w3c.dom.Document parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void reset();
-    method public abstract void setEntityResolver(org.xml.sax.EntityResolver);
-    method public abstract void setErrorHandler(org.xml.sax.ErrorHandler);
-  }
-
-  public abstract class DocumentBuilderFactory {
-    ctor protected DocumentBuilderFactory();
-    method public abstract Object getAttribute(String) throws java.lang.IllegalArgumentException;
-    method public abstract boolean getFeature(String) throws javax.xml.parsers.ParserConfigurationException;
-    method public javax.xml.validation.Schema getSchema();
-    method public boolean isCoalescing();
-    method public boolean isExpandEntityReferences();
-    method public boolean isIgnoringComments();
-    method public boolean isIgnoringElementContentWhitespace();
-    method public boolean isNamespaceAware();
-    method public boolean isValidating();
-    method public boolean isXIncludeAware();
-    method public abstract javax.xml.parsers.DocumentBuilder newDocumentBuilder() throws javax.xml.parsers.ParserConfigurationException;
-    method public static javax.xml.parsers.DocumentBuilderFactory newInstance();
-    method public static javax.xml.parsers.DocumentBuilderFactory newInstance(String, ClassLoader);
-    method public abstract void setAttribute(String, Object) throws java.lang.IllegalArgumentException;
-    method public void setCoalescing(boolean);
-    method public void setExpandEntityReferences(boolean);
-    method public abstract void setFeature(String, boolean) throws javax.xml.parsers.ParserConfigurationException;
-    method public void setIgnoringComments(boolean);
-    method public void setIgnoringElementContentWhitespace(boolean);
-    method public void setNamespaceAware(boolean);
-    method public void setSchema(javax.xml.validation.Schema);
-    method public void setValidating(boolean);
-    method public void setXIncludeAware(boolean);
-  }
-
-  public class FactoryConfigurationError extends java.lang.Error {
-    ctor public FactoryConfigurationError();
-    ctor public FactoryConfigurationError(String);
-    ctor public FactoryConfigurationError(Exception);
-    ctor public FactoryConfigurationError(Exception, String);
-    method public Exception getException();
-  }
-
-  public class ParserConfigurationException extends java.lang.Exception {
-    ctor public ParserConfigurationException();
-    ctor public ParserConfigurationException(String);
-  }
-
-  public abstract class SAXParser {
-    ctor protected SAXParser();
-    method public abstract org.xml.sax.Parser getParser() throws org.xml.sax.SAXException;
-    method public abstract Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public javax.xml.validation.Schema getSchema();
-    method public abstract org.xml.sax.XMLReader getXMLReader() throws org.xml.sax.SAXException;
-    method public abstract boolean isNamespaceAware();
-    method public abstract boolean isValidating();
-    method public boolean isXIncludeAware();
-    method public void parse(java.io.InputStream, org.xml.sax.HandlerBase) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(java.io.InputStream, org.xml.sax.HandlerBase, String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(java.io.InputStream, org.xml.sax.helpers.DefaultHandler) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(java.io.InputStream, org.xml.sax.helpers.DefaultHandler, String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(String, org.xml.sax.HandlerBase) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(String, org.xml.sax.helpers.DefaultHandler) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(java.io.File, org.xml.sax.HandlerBase) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(java.io.File, org.xml.sax.helpers.DefaultHandler) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(org.xml.sax.InputSource, org.xml.sax.HandlerBase) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(org.xml.sax.InputSource, org.xml.sax.helpers.DefaultHandler) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void reset();
-    method public abstract void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-  }
-
-  public abstract class SAXParserFactory {
-    ctor protected SAXParserFactory();
-    method public abstract boolean getFeature(String) throws javax.xml.parsers.ParserConfigurationException, org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public javax.xml.validation.Schema getSchema();
-    method public boolean isNamespaceAware();
-    method public boolean isValidating();
-    method public boolean isXIncludeAware();
-    method public static javax.xml.parsers.SAXParserFactory newInstance();
-    method public static javax.xml.parsers.SAXParserFactory newInstance(String, ClassLoader);
-    method public abstract javax.xml.parsers.SAXParser newSAXParser() throws javax.xml.parsers.ParserConfigurationException, org.xml.sax.SAXException;
-    method public abstract void setFeature(String, boolean) throws javax.xml.parsers.ParserConfigurationException, org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void setNamespaceAware(boolean);
-    method public void setSchema(javax.xml.validation.Schema);
-    method public void setValidating(boolean);
-    method public void setXIncludeAware(boolean);
-  }
-
-}
-
-package javax.xml.transform {
-
-  public interface ErrorListener {
-    method public void error(javax.xml.transform.TransformerException) throws javax.xml.transform.TransformerException;
-    method public void fatalError(javax.xml.transform.TransformerException) throws javax.xml.transform.TransformerException;
-    method public void warning(javax.xml.transform.TransformerException) throws javax.xml.transform.TransformerException;
-  }
-
-  public class OutputKeys {
-    field public static final String CDATA_SECTION_ELEMENTS = "cdata-section-elements";
-    field public static final String DOCTYPE_PUBLIC = "doctype-public";
-    field public static final String DOCTYPE_SYSTEM = "doctype-system";
-    field public static final String ENCODING = "encoding";
-    field public static final String INDENT = "indent";
-    field public static final String MEDIA_TYPE = "media-type";
-    field public static final String METHOD = "method";
-    field public static final String OMIT_XML_DECLARATION = "omit-xml-declaration";
-    field public static final String STANDALONE = "standalone";
-    field public static final String VERSION = "version";
-  }
-
-  public interface Result {
-    method public String getSystemId();
-    method public void setSystemId(String);
-    field public static final String PI_DISABLE_OUTPUT_ESCAPING = "javax.xml.transform.disable-output-escaping";
-    field public static final String PI_ENABLE_OUTPUT_ESCAPING = "javax.xml.transform.enable-output-escaping";
-  }
-
-  public interface Source {
-    method public String getSystemId();
-    method public void setSystemId(String);
-  }
-
-  public interface SourceLocator {
-    method public int getColumnNumber();
-    method public int getLineNumber();
-    method public String getPublicId();
-    method public String getSystemId();
-  }
-
-  public interface Templates {
-    method public java.util.Properties getOutputProperties();
-    method public javax.xml.transform.Transformer newTransformer() throws javax.xml.transform.TransformerConfigurationException;
-  }
-
-  public abstract class Transformer {
-    ctor protected Transformer();
-    method public abstract void clearParameters();
-    method public abstract javax.xml.transform.ErrorListener getErrorListener();
-    method public abstract java.util.Properties getOutputProperties();
-    method public abstract String getOutputProperty(String) throws java.lang.IllegalArgumentException;
-    method public abstract Object getParameter(String);
-    method public abstract javax.xml.transform.URIResolver getURIResolver();
-    method public void reset();
-    method public abstract void setErrorListener(javax.xml.transform.ErrorListener) throws java.lang.IllegalArgumentException;
-    method public abstract void setOutputProperties(java.util.Properties);
-    method public abstract void setOutputProperty(String, String) throws java.lang.IllegalArgumentException;
-    method public abstract void setParameter(String, Object);
-    method public abstract void setURIResolver(javax.xml.transform.URIResolver);
-    method public abstract void transform(javax.xml.transform.Source, javax.xml.transform.Result) throws javax.xml.transform.TransformerException;
-  }
-
-  public class TransformerConfigurationException extends javax.xml.transform.TransformerException {
-    ctor public TransformerConfigurationException();
-    ctor public TransformerConfigurationException(String);
-    ctor public TransformerConfigurationException(Throwable);
-    ctor public TransformerConfigurationException(String, Throwable);
-    ctor public TransformerConfigurationException(String, javax.xml.transform.SourceLocator);
-    ctor public TransformerConfigurationException(String, javax.xml.transform.SourceLocator, Throwable);
-  }
-
-  public class TransformerException extends java.lang.Exception {
-    ctor public TransformerException(String);
-    ctor public TransformerException(Throwable);
-    ctor public TransformerException(String, Throwable);
-    ctor public TransformerException(String, javax.xml.transform.SourceLocator);
-    ctor public TransformerException(String, javax.xml.transform.SourceLocator, Throwable);
-    method public Throwable getException();
-    method public String getLocationAsString();
-    method public javax.xml.transform.SourceLocator getLocator();
-    method public String getMessageAndLocation();
-    method public void setLocator(javax.xml.transform.SourceLocator);
-  }
-
-  public abstract class TransformerFactory {
-    ctor protected TransformerFactory();
-    method public abstract javax.xml.transform.Source getAssociatedStylesheet(javax.xml.transform.Source, String, String, String) throws javax.xml.transform.TransformerConfigurationException;
-    method public abstract Object getAttribute(String);
-    method public abstract javax.xml.transform.ErrorListener getErrorListener();
-    method public abstract boolean getFeature(String);
-    method public abstract javax.xml.transform.URIResolver getURIResolver();
-    method public static javax.xml.transform.TransformerFactory newInstance() throws javax.xml.transform.TransformerFactoryConfigurationError;
-    method public static javax.xml.transform.TransformerFactory newInstance(String, ClassLoader) throws javax.xml.transform.TransformerFactoryConfigurationError;
-    method public abstract javax.xml.transform.Templates newTemplates(javax.xml.transform.Source) throws javax.xml.transform.TransformerConfigurationException;
-    method public abstract javax.xml.transform.Transformer newTransformer(javax.xml.transform.Source) throws javax.xml.transform.TransformerConfigurationException;
-    method public abstract javax.xml.transform.Transformer newTransformer() throws javax.xml.transform.TransformerConfigurationException;
-    method public abstract void setAttribute(String, Object);
-    method public abstract void setErrorListener(javax.xml.transform.ErrorListener);
-    method public abstract void setFeature(String, boolean) throws javax.xml.transform.TransformerConfigurationException;
-    method public abstract void setURIResolver(javax.xml.transform.URIResolver);
-  }
-
-  public class TransformerFactoryConfigurationError extends java.lang.Error {
-    ctor public TransformerFactoryConfigurationError();
-    ctor public TransformerFactoryConfigurationError(String);
-    ctor public TransformerFactoryConfigurationError(Exception);
-    ctor public TransformerFactoryConfigurationError(Exception, String);
-    method public Exception getException();
-  }
-
-  public interface URIResolver {
-    method public javax.xml.transform.Source resolve(String, String) throws javax.xml.transform.TransformerException;
-  }
-
-}
-
-package javax.xml.transform.dom {
-
-  public interface DOMLocator extends javax.xml.transform.SourceLocator {
-    method public org.w3c.dom.Node getOriginatingNode();
-  }
-
-  public class DOMResult implements javax.xml.transform.Result {
-    ctor public DOMResult();
-    ctor public DOMResult(org.w3c.dom.Node);
-    ctor public DOMResult(org.w3c.dom.Node, String);
-    ctor public DOMResult(org.w3c.dom.Node, org.w3c.dom.Node);
-    ctor public DOMResult(org.w3c.dom.Node, org.w3c.dom.Node, String);
-    method public org.w3c.dom.Node getNextSibling();
-    method public org.w3c.dom.Node getNode();
-    method public String getSystemId();
-    method public void setNextSibling(org.w3c.dom.Node);
-    method public void setNode(org.w3c.dom.Node);
-    method public void setSystemId(String);
-    field public static final String FEATURE = "http://javax.xml.transform.dom.DOMResult/feature";
-  }
-
-  public class DOMSource implements javax.xml.transform.Source {
-    ctor public DOMSource();
-    ctor public DOMSource(org.w3c.dom.Node);
-    ctor public DOMSource(org.w3c.dom.Node, String);
-    method public org.w3c.dom.Node getNode();
-    method public String getSystemId();
-    method public void setNode(org.w3c.dom.Node);
-    method public void setSystemId(String);
-    field public static final String FEATURE = "http://javax.xml.transform.dom.DOMSource/feature";
-  }
-
-}
-
-package javax.xml.transform.sax {
-
-  public class SAXResult implements javax.xml.transform.Result {
-    ctor public SAXResult();
-    ctor public SAXResult(org.xml.sax.ContentHandler);
-    method public org.xml.sax.ContentHandler getHandler();
-    method public org.xml.sax.ext.LexicalHandler getLexicalHandler();
-    method public String getSystemId();
-    method public void setHandler(org.xml.sax.ContentHandler);
-    method public void setLexicalHandler(org.xml.sax.ext.LexicalHandler);
-    method public void setSystemId(String);
-    field public static final String FEATURE = "http://javax.xml.transform.sax.SAXResult/feature";
-  }
-
-  public class SAXSource implements javax.xml.transform.Source {
-    ctor public SAXSource();
-    ctor public SAXSource(org.xml.sax.XMLReader, org.xml.sax.InputSource);
-    ctor public SAXSource(org.xml.sax.InputSource);
-    method public org.xml.sax.InputSource getInputSource();
-    method public String getSystemId();
-    method public org.xml.sax.XMLReader getXMLReader();
-    method public void setInputSource(org.xml.sax.InputSource);
-    method public void setSystemId(String);
-    method public void setXMLReader(org.xml.sax.XMLReader);
-    method public static org.xml.sax.InputSource sourceToInputSource(javax.xml.transform.Source);
-    field public static final String FEATURE = "http://javax.xml.transform.sax.SAXSource/feature";
-  }
-
-  public abstract class SAXTransformerFactory extends javax.xml.transform.TransformerFactory {
-    ctor protected SAXTransformerFactory();
-    method public abstract javax.xml.transform.sax.TemplatesHandler newTemplatesHandler() throws javax.xml.transform.TransformerConfigurationException;
-    method public abstract javax.xml.transform.sax.TransformerHandler newTransformerHandler(javax.xml.transform.Source) throws javax.xml.transform.TransformerConfigurationException;
-    method public abstract javax.xml.transform.sax.TransformerHandler newTransformerHandler(javax.xml.transform.Templates) throws javax.xml.transform.TransformerConfigurationException;
-    method public abstract javax.xml.transform.sax.TransformerHandler newTransformerHandler() throws javax.xml.transform.TransformerConfigurationException;
-    method public abstract org.xml.sax.XMLFilter newXMLFilter(javax.xml.transform.Source) throws javax.xml.transform.TransformerConfigurationException;
-    method public abstract org.xml.sax.XMLFilter newXMLFilter(javax.xml.transform.Templates) throws javax.xml.transform.TransformerConfigurationException;
-    field public static final String FEATURE = "http://javax.xml.transform.sax.SAXTransformerFactory/feature";
-    field public static final String FEATURE_XMLFILTER = "http://javax.xml.transform.sax.SAXTransformerFactory/feature/xmlfilter";
-  }
-
-  public interface TemplatesHandler extends org.xml.sax.ContentHandler {
-    method public String getSystemId();
-    method public javax.xml.transform.Templates getTemplates();
-    method public void setSystemId(String);
-  }
-
-  public interface TransformerHandler extends org.xml.sax.ContentHandler org.xml.sax.DTDHandler org.xml.sax.ext.LexicalHandler {
-    method public String getSystemId();
-    method public javax.xml.transform.Transformer getTransformer();
-    method public void setResult(javax.xml.transform.Result) throws java.lang.IllegalArgumentException;
-    method public void setSystemId(String);
-  }
-
-}
-
-package javax.xml.transform.stream {
-
-  public class StreamResult implements javax.xml.transform.Result {
-    ctor public StreamResult();
-    ctor public StreamResult(java.io.OutputStream);
-    ctor public StreamResult(java.io.Writer);
-    ctor public StreamResult(String);
-    ctor public StreamResult(java.io.File);
-    method public java.io.OutputStream getOutputStream();
-    method public String getSystemId();
-    method public java.io.Writer getWriter();
-    method public void setOutputStream(java.io.OutputStream);
-    method public void setSystemId(String);
-    method public void setSystemId(java.io.File);
-    method public void setWriter(java.io.Writer);
-    field public static final String FEATURE = "http://javax.xml.transform.stream.StreamResult/feature";
-  }
-
-  public class StreamSource implements javax.xml.transform.Source {
-    ctor public StreamSource();
-    ctor public StreamSource(java.io.InputStream);
-    ctor public StreamSource(java.io.InputStream, String);
-    ctor public StreamSource(java.io.Reader);
-    ctor public StreamSource(java.io.Reader, String);
-    ctor public StreamSource(String);
-    ctor public StreamSource(java.io.File);
-    method public java.io.InputStream getInputStream();
-    method public String getPublicId();
-    method public java.io.Reader getReader();
-    method public String getSystemId();
-    method public void setInputStream(java.io.InputStream);
-    method public void setPublicId(String);
-    method public void setReader(java.io.Reader);
-    method public void setSystemId(String);
-    method public void setSystemId(java.io.File);
-    field public static final String FEATURE = "http://javax.xml.transform.stream.StreamSource/feature";
-  }
-
-}
-
-package javax.xml.validation {
-
-  public abstract class Schema {
-    ctor protected Schema();
-    method public abstract javax.xml.validation.Validator newValidator();
-    method public abstract javax.xml.validation.ValidatorHandler newValidatorHandler();
-  }
-
-  public abstract class SchemaFactory {
-    ctor protected SchemaFactory();
-    method public abstract org.xml.sax.ErrorHandler getErrorHandler();
-    method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public abstract org.w3c.dom.ls.LSResourceResolver getResourceResolver();
-    method public abstract boolean isSchemaLanguageSupported(String);
-    method public static javax.xml.validation.SchemaFactory newInstance(String);
-    method public static javax.xml.validation.SchemaFactory newInstance(String, String, ClassLoader);
-    method public javax.xml.validation.Schema newSchema(javax.xml.transform.Source) throws org.xml.sax.SAXException;
-    method public javax.xml.validation.Schema newSchema(java.io.File) throws org.xml.sax.SAXException;
-    method public javax.xml.validation.Schema newSchema(java.net.URL) throws org.xml.sax.SAXException;
-    method public abstract javax.xml.validation.Schema newSchema(javax.xml.transform.Source[]) throws org.xml.sax.SAXException;
-    method public abstract javax.xml.validation.Schema newSchema() throws org.xml.sax.SAXException;
-    method public abstract void setErrorHandler(org.xml.sax.ErrorHandler);
-    method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public abstract void setResourceResolver(org.w3c.dom.ls.LSResourceResolver);
-  }
-
-  public abstract class SchemaFactoryLoader {
-    ctor protected SchemaFactoryLoader();
-    method public abstract javax.xml.validation.SchemaFactory newFactory(String);
-  }
-
-  public abstract class TypeInfoProvider {
-    ctor protected TypeInfoProvider();
-    method public abstract org.w3c.dom.TypeInfo getAttributeTypeInfo(int);
-    method public abstract org.w3c.dom.TypeInfo getElementTypeInfo();
-    method public abstract boolean isIdAttribute(int);
-    method public abstract boolean isSpecified(int);
-  }
-
-  public abstract class Validator {
-    ctor protected Validator();
-    method public abstract org.xml.sax.ErrorHandler getErrorHandler();
-    method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public abstract org.w3c.dom.ls.LSResourceResolver getResourceResolver();
-    method public abstract void reset();
-    method public abstract void setErrorHandler(org.xml.sax.ErrorHandler);
-    method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public abstract void setResourceResolver(org.w3c.dom.ls.LSResourceResolver);
-    method public void validate(javax.xml.transform.Source) throws java.io.IOException, org.xml.sax.SAXException;
-    method public abstract void validate(javax.xml.transform.Source, javax.xml.transform.Result) throws java.io.IOException, org.xml.sax.SAXException;
-  }
-
-  public abstract class ValidatorHandler implements org.xml.sax.ContentHandler {
-    ctor protected ValidatorHandler();
-    method public abstract org.xml.sax.ContentHandler getContentHandler();
-    method public abstract org.xml.sax.ErrorHandler getErrorHandler();
-    method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public abstract org.w3c.dom.ls.LSResourceResolver getResourceResolver();
-    method public abstract javax.xml.validation.TypeInfoProvider getTypeInfoProvider();
-    method public abstract void setContentHandler(org.xml.sax.ContentHandler);
-    method public abstract void setErrorHandler(org.xml.sax.ErrorHandler);
-    method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public abstract void setResourceResolver(org.w3c.dom.ls.LSResourceResolver);
-  }
-
-}
-
-package javax.xml.xpath {
-
-  public interface XPath {
-    method public javax.xml.xpath.XPathExpression compile(String) throws javax.xml.xpath.XPathExpressionException;
-    method public Object evaluate(String, Object, javax.xml.namespace.QName) throws javax.xml.xpath.XPathExpressionException;
-    method public String evaluate(String, Object) throws javax.xml.xpath.XPathExpressionException;
-    method public Object evaluate(String, org.xml.sax.InputSource, javax.xml.namespace.QName) throws javax.xml.xpath.XPathExpressionException;
-    method public String evaluate(String, org.xml.sax.InputSource) throws javax.xml.xpath.XPathExpressionException;
-    method public javax.xml.namespace.NamespaceContext getNamespaceContext();
-    method public javax.xml.xpath.XPathFunctionResolver getXPathFunctionResolver();
-    method public javax.xml.xpath.XPathVariableResolver getXPathVariableResolver();
-    method public void reset();
-    method public void setNamespaceContext(javax.xml.namespace.NamespaceContext);
-    method public void setXPathFunctionResolver(javax.xml.xpath.XPathFunctionResolver);
-    method public void setXPathVariableResolver(javax.xml.xpath.XPathVariableResolver);
-  }
-
-  public class XPathConstants {
-    field public static final javax.xml.namespace.QName BOOLEAN;
-    field public static final String DOM_OBJECT_MODEL = "http://java.sun.com/jaxp/xpath/dom";
-    field public static final javax.xml.namespace.QName NODE;
-    field public static final javax.xml.namespace.QName NODESET;
-    field public static final javax.xml.namespace.QName NUMBER;
-    field public static final javax.xml.namespace.QName STRING;
-  }
-
-  public class XPathException extends java.lang.Exception {
-    ctor public XPathException(String);
-    ctor public XPathException(Throwable);
-  }
-
-  public interface XPathExpression {
-    method public Object evaluate(Object, javax.xml.namespace.QName) throws javax.xml.xpath.XPathExpressionException;
-    method public String evaluate(Object) throws javax.xml.xpath.XPathExpressionException;
-    method public Object evaluate(org.xml.sax.InputSource, javax.xml.namespace.QName) throws javax.xml.xpath.XPathExpressionException;
-    method public String evaluate(org.xml.sax.InputSource) throws javax.xml.xpath.XPathExpressionException;
-  }
-
-  public class XPathExpressionException extends javax.xml.xpath.XPathException {
-    ctor public XPathExpressionException(String);
-    ctor public XPathExpressionException(Throwable);
-  }
-
-  public abstract class XPathFactory {
-    ctor protected XPathFactory();
-    method public abstract boolean getFeature(String) throws javax.xml.xpath.XPathFactoryConfigurationException;
-    method public abstract boolean isObjectModelSupported(String);
-    method public static final javax.xml.xpath.XPathFactory newInstance();
-    method public static final javax.xml.xpath.XPathFactory newInstance(String) throws javax.xml.xpath.XPathFactoryConfigurationException;
-    method public static javax.xml.xpath.XPathFactory newInstance(String, String, ClassLoader) throws javax.xml.xpath.XPathFactoryConfigurationException;
-    method public abstract javax.xml.xpath.XPath newXPath();
-    method public abstract void setFeature(String, boolean) throws javax.xml.xpath.XPathFactoryConfigurationException;
-    method public abstract void setXPathFunctionResolver(javax.xml.xpath.XPathFunctionResolver);
-    method public abstract void setXPathVariableResolver(javax.xml.xpath.XPathVariableResolver);
-    field public static final String DEFAULT_OBJECT_MODEL_URI = "http://java.sun.com/jaxp/xpath/dom";
-    field public static final String DEFAULT_PROPERTY_NAME = "javax.xml.xpath.XPathFactory";
-  }
-
-  public class XPathFactoryConfigurationException extends javax.xml.xpath.XPathException {
-    ctor public XPathFactoryConfigurationException(String);
-    ctor public XPathFactoryConfigurationException(Throwable);
-  }
-
-  public interface XPathFunction {
-    method public Object evaluate(java.util.List) throws javax.xml.xpath.XPathFunctionException;
-  }
-
-  public class XPathFunctionException extends javax.xml.xpath.XPathExpressionException {
-    ctor public XPathFunctionException(String);
-    ctor public XPathFunctionException(Throwable);
-  }
-
-  public interface XPathFunctionResolver {
-    method public javax.xml.xpath.XPathFunction resolveFunction(javax.xml.namespace.QName, int);
-  }
-
-  public interface XPathVariableResolver {
-    method public Object resolveVariable(javax.xml.namespace.QName);
-  }
-
-}
-
-package org.apache.http.conn {
-
-  @Deprecated public class ConnectTimeoutException extends java.io.InterruptedIOException {
-    ctor @Deprecated public ConnectTimeoutException();
-    ctor @Deprecated public ConnectTimeoutException(String);
-  }
-
-}
-
-package org.apache.http.conn.scheme {
-
-  @Deprecated public interface HostNameResolver {
-    method @Deprecated public java.net.InetAddress resolve(String) throws java.io.IOException;
-  }
-
-  @Deprecated public interface LayeredSocketFactory extends org.apache.http.conn.scheme.SocketFactory {
-    method @Deprecated public java.net.Socket createSocket(java.net.Socket, String, int, boolean) throws java.io.IOException, java.net.UnknownHostException;
-  }
-
-  @Deprecated public interface SocketFactory {
-    method @Deprecated public java.net.Socket connectSocket(java.net.Socket, String, int, java.net.InetAddress, int, org.apache.http.params.HttpParams) throws org.apache.http.conn.ConnectTimeoutException, java.io.IOException, java.net.UnknownHostException;
-    method @Deprecated public java.net.Socket createSocket() throws java.io.IOException;
-    method @Deprecated public boolean isSecure(java.net.Socket) throws java.lang.IllegalArgumentException;
-  }
-
-}
-
-package org.apache.http.conn.ssl {
-
-  @Deprecated public abstract class AbstractVerifier implements org.apache.http.conn.ssl.X509HostnameVerifier {
-    ctor @Deprecated public AbstractVerifier();
-    method @Deprecated public static boolean acceptableCountryWildcard(String);
-    method @Deprecated public static int countDots(String);
-    method @Deprecated public static String[] getCNs(java.security.cert.X509Certificate);
-    method @Deprecated public static String[] getDNSSubjectAlts(java.security.cert.X509Certificate);
-    method @Deprecated public final void verify(String, javax.net.ssl.SSLSocket) throws java.io.IOException;
-    method @Deprecated public final boolean verify(String, javax.net.ssl.SSLSession);
-    method @Deprecated public final void verify(String, java.security.cert.X509Certificate) throws javax.net.ssl.SSLException;
-    method @Deprecated public final void verify(String, String[], String[], boolean) throws javax.net.ssl.SSLException;
-  }
-
-  @Deprecated public class AllowAllHostnameVerifier extends org.apache.http.conn.ssl.AbstractVerifier {
-    ctor @Deprecated public AllowAllHostnameVerifier();
-    method @Deprecated public final String toString();
-    method @Deprecated public final void verify(String, String[], String[]);
-  }
-
-  @Deprecated public class BrowserCompatHostnameVerifier extends org.apache.http.conn.ssl.AbstractVerifier {
-    ctor @Deprecated public BrowserCompatHostnameVerifier();
-    method @Deprecated public final String toString();
-    method @Deprecated public final void verify(String, String[], String[]) throws javax.net.ssl.SSLException;
-  }
-
-  @Deprecated public class SSLSocketFactory implements org.apache.http.conn.scheme.LayeredSocketFactory {
-    ctor @Deprecated public SSLSocketFactory(String, java.security.KeyStore, String, java.security.KeyStore, java.security.SecureRandom, org.apache.http.conn.scheme.HostNameResolver) throws java.security.KeyManagementException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
-    ctor @Deprecated public SSLSocketFactory(java.security.KeyStore, String, java.security.KeyStore) throws java.security.KeyManagementException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
-    ctor @Deprecated public SSLSocketFactory(java.security.KeyStore, String) throws java.security.KeyManagementException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
-    ctor @Deprecated public SSLSocketFactory(java.security.KeyStore) throws java.security.KeyManagementException, java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException;
-    method @Deprecated public java.net.Socket connectSocket(java.net.Socket, String, int, java.net.InetAddress, int, org.apache.http.params.HttpParams) throws java.io.IOException;
-    method @Deprecated public java.net.Socket createSocket() throws java.io.IOException;
-    method @Deprecated public java.net.Socket createSocket(java.net.Socket, String, int, boolean) throws java.io.IOException, java.net.UnknownHostException;
-    method @Deprecated public org.apache.http.conn.ssl.X509HostnameVerifier getHostnameVerifier();
-    method @Deprecated public static org.apache.http.conn.ssl.SSLSocketFactory getSocketFactory();
-    method @Deprecated public boolean isSecure(java.net.Socket) throws java.lang.IllegalArgumentException;
-    method @Deprecated public void setHostnameVerifier(org.apache.http.conn.ssl.X509HostnameVerifier);
-    field @Deprecated public static final org.apache.http.conn.ssl.X509HostnameVerifier ALLOW_ALL_HOSTNAME_VERIFIER;
-    field @Deprecated public static final org.apache.http.conn.ssl.X509HostnameVerifier BROWSER_COMPATIBLE_HOSTNAME_VERIFIER;
-    field @Deprecated public static final String SSL = "SSL";
-    field @Deprecated public static final String SSLV2 = "SSLv2";
-    field @Deprecated public static final org.apache.http.conn.ssl.X509HostnameVerifier STRICT_HOSTNAME_VERIFIER;
-    field @Deprecated public static final String TLS = "TLS";
-  }
-
-  @Deprecated public class StrictHostnameVerifier extends org.apache.http.conn.ssl.AbstractVerifier {
-    ctor @Deprecated public StrictHostnameVerifier();
-    method @Deprecated public final String toString();
-    method @Deprecated public final void verify(String, String[], String[]) throws javax.net.ssl.SSLException;
-  }
-
-  @Deprecated public interface X509HostnameVerifier extends javax.net.ssl.HostnameVerifier {
-    method @Deprecated public void verify(String, javax.net.ssl.SSLSocket) throws java.io.IOException;
-    method @Deprecated public void verify(String, java.security.cert.X509Certificate) throws javax.net.ssl.SSLException;
-    method @Deprecated public void verify(String, String[], String[]) throws javax.net.ssl.SSLException;
-  }
-
-}
-
-package org.apache.http.params {
-
-  @Deprecated public interface CoreConnectionPNames {
-    field @Deprecated public static final String CONNECTION_TIMEOUT = "http.connection.timeout";
-    field @Deprecated public static final String MAX_HEADER_COUNT = "http.connection.max-header-count";
-    field @Deprecated public static final String MAX_LINE_LENGTH = "http.connection.max-line-length";
-    field @Deprecated public static final String SOCKET_BUFFER_SIZE = "http.socket.buffer-size";
-    field @Deprecated public static final String SO_LINGER = "http.socket.linger";
-    field @Deprecated public static final String SO_TIMEOUT = "http.socket.timeout";
-    field @Deprecated public static final String STALE_CONNECTION_CHECK = "http.connection.stalecheck";
-    field @Deprecated public static final String TCP_NODELAY = "http.tcp.nodelay";
-  }
-
-  @Deprecated public final class HttpConnectionParams implements org.apache.http.params.CoreConnectionPNames {
-    method @Deprecated public static int getConnectionTimeout(org.apache.http.params.HttpParams);
-    method @Deprecated public static int getLinger(org.apache.http.params.HttpParams);
-    method @Deprecated public static int getSoTimeout(org.apache.http.params.HttpParams);
-    method @Deprecated public static int getSocketBufferSize(org.apache.http.params.HttpParams);
-    method @Deprecated public static boolean getTcpNoDelay(org.apache.http.params.HttpParams);
-    method @Deprecated public static boolean isStaleCheckingEnabled(org.apache.http.params.HttpParams);
-    method @Deprecated public static void setConnectionTimeout(org.apache.http.params.HttpParams, int);
-    method @Deprecated public static void setLinger(org.apache.http.params.HttpParams, int);
-    method @Deprecated public static void setSoTimeout(org.apache.http.params.HttpParams, int);
-    method @Deprecated public static void setSocketBufferSize(org.apache.http.params.HttpParams, int);
-    method @Deprecated public static void setStaleCheckingEnabled(org.apache.http.params.HttpParams, boolean);
-    method @Deprecated public static void setTcpNoDelay(org.apache.http.params.HttpParams, boolean);
-  }
-
-  @Deprecated public interface HttpParams {
-    method @Deprecated public org.apache.http.params.HttpParams copy();
-    method @Deprecated public boolean getBooleanParameter(String, boolean);
-    method @Deprecated public double getDoubleParameter(String, double);
-    method @Deprecated public int getIntParameter(String, int);
-    method @Deprecated public long getLongParameter(String, long);
-    method @Deprecated public Object getParameter(String);
-    method @Deprecated public boolean isParameterFalse(String);
-    method @Deprecated public boolean isParameterTrue(String);
-    method @Deprecated public boolean removeParameter(String);
-    method @Deprecated public org.apache.http.params.HttpParams setBooleanParameter(String, boolean);
-    method @Deprecated public org.apache.http.params.HttpParams setDoubleParameter(String, double);
-    method @Deprecated public org.apache.http.params.HttpParams setIntParameter(String, int);
-    method @Deprecated public org.apache.http.params.HttpParams setLongParameter(String, long);
-    method @Deprecated public org.apache.http.params.HttpParams setParameter(String, Object);
-  }
-
-}
-
-package org.json {
-
-  public class JSONArray {
-    ctor public JSONArray();
-    ctor public JSONArray(java.util.Collection);
-    ctor public JSONArray(org.json.JSONTokener) throws org.json.JSONException;
-    ctor public JSONArray(String) throws org.json.JSONException;
-    ctor public JSONArray(Object) throws org.json.JSONException;
-    method public Object get(int) throws org.json.JSONException;
-    method public boolean getBoolean(int) throws org.json.JSONException;
-    method public double getDouble(int) throws org.json.JSONException;
-    method public int getInt(int) throws org.json.JSONException;
-    method public org.json.JSONArray getJSONArray(int) throws org.json.JSONException;
-    method public org.json.JSONObject getJSONObject(int) throws org.json.JSONException;
-    method public long getLong(int) throws org.json.JSONException;
-    method public String getString(int) throws org.json.JSONException;
-    method public boolean isNull(int);
-    method public String join(String) throws org.json.JSONException;
-    method public int length();
-    method public Object opt(int);
-    method public boolean optBoolean(int);
-    method public boolean optBoolean(int, boolean);
-    method public double optDouble(int);
-    method public double optDouble(int, double);
-    method public int optInt(int);
-    method public int optInt(int, int);
-    method public org.json.JSONArray optJSONArray(int);
-    method public org.json.JSONObject optJSONObject(int);
-    method public long optLong(int);
-    method public long optLong(int, long);
-    method public String optString(int);
-    method public String optString(int, String);
-    method public org.json.JSONArray put(boolean);
-    method public org.json.JSONArray put(double) throws org.json.JSONException;
-    method public org.json.JSONArray put(int);
-    method public org.json.JSONArray put(long);
-    method public org.json.JSONArray put(Object);
-    method public org.json.JSONArray put(int, boolean) throws org.json.JSONException;
-    method public org.json.JSONArray put(int, double) throws org.json.JSONException;
-    method public org.json.JSONArray put(int, int) throws org.json.JSONException;
-    method public org.json.JSONArray put(int, long) throws org.json.JSONException;
-    method public org.json.JSONArray put(int, Object) throws org.json.JSONException;
-    method public Object remove(int);
-    method public org.json.JSONObject toJSONObject(org.json.JSONArray) throws org.json.JSONException;
-    method public String toString(int) throws org.json.JSONException;
-  }
-
-  public class JSONException extends java.lang.Exception {
-    ctor public JSONException(String);
-    ctor public JSONException(String, Throwable);
-    ctor public JSONException(Throwable);
-  }
-
-  public class JSONObject {
-    ctor public JSONObject();
-    ctor public JSONObject(@NonNull java.util.Map);
-    ctor public JSONObject(@NonNull org.json.JSONTokener) throws org.json.JSONException;
-    ctor public JSONObject(@NonNull String) throws org.json.JSONException;
-    ctor public JSONObject(@NonNull org.json.JSONObject, @NonNull String[]) throws org.json.JSONException;
-    method @NonNull public org.json.JSONObject accumulate(@NonNull String, @Nullable Object) throws org.json.JSONException;
-    method @NonNull public Object get(@NonNull String) throws org.json.JSONException;
-    method public boolean getBoolean(@NonNull String) throws org.json.JSONException;
-    method public double getDouble(@NonNull String) throws org.json.JSONException;
-    method public int getInt(@NonNull String) throws org.json.JSONException;
-    method @NonNull public org.json.JSONArray getJSONArray(@NonNull String) throws org.json.JSONException;
-    method @NonNull public org.json.JSONObject getJSONObject(@NonNull String) throws org.json.JSONException;
-    method public long getLong(@NonNull String) throws org.json.JSONException;
-    method @NonNull public String getString(@NonNull String) throws org.json.JSONException;
-    method public boolean has(@Nullable String);
-    method public boolean isNull(@Nullable String);
-    method @NonNull public java.util.Iterator<java.lang.String> keys();
-    method public int length();
-    method @Nullable public org.json.JSONArray names();
-    method @NonNull public static String numberToString(@NonNull Number) throws org.json.JSONException;
-    method @Nullable public Object opt(@Nullable String);
-    method public boolean optBoolean(@Nullable String);
-    method public boolean optBoolean(@Nullable String, boolean);
-    method public double optDouble(@Nullable String);
-    method public double optDouble(@Nullable String, double);
-    method public int optInt(@Nullable String);
-    method public int optInt(@Nullable String, int);
-    method @Nullable public org.json.JSONArray optJSONArray(@Nullable String);
-    method @Nullable public org.json.JSONObject optJSONObject(@Nullable String);
-    method public long optLong(@Nullable String);
-    method public long optLong(@Nullable String, long);
-    method @NonNull public String optString(@Nullable String);
-    method @NonNull public String optString(@Nullable String, @NonNull String);
-    method @NonNull public org.json.JSONObject put(@NonNull String, boolean) throws org.json.JSONException;
-    method @NonNull public org.json.JSONObject put(@NonNull String, double) throws org.json.JSONException;
-    method @NonNull public org.json.JSONObject put(@NonNull String, int) throws org.json.JSONException;
-    method @NonNull public org.json.JSONObject put(@NonNull String, long) throws org.json.JSONException;
-    method @NonNull public org.json.JSONObject put(@NonNull String, @Nullable Object) throws org.json.JSONException;
-    method @NonNull public org.json.JSONObject putOpt(@Nullable String, @Nullable Object) throws org.json.JSONException;
-    method @NonNull public static String quote(@Nullable String);
-    method @Nullable public Object remove(@Nullable String);
-    method @Nullable public org.json.JSONArray toJSONArray(@Nullable org.json.JSONArray) throws org.json.JSONException;
-    method @NonNull public String toString(int) throws org.json.JSONException;
-    method @Nullable public static Object wrap(@Nullable Object);
-    field @NonNull public static final Object NULL;
-  }
-
-  public class JSONStringer {
-    ctor public JSONStringer();
-    method public org.json.JSONStringer array() throws org.json.JSONException;
-    method public org.json.JSONStringer endArray() throws org.json.JSONException;
-    method public org.json.JSONStringer endObject() throws org.json.JSONException;
-    method public org.json.JSONStringer key(String) throws org.json.JSONException;
-    method public org.json.JSONStringer object() throws org.json.JSONException;
-    method public org.json.JSONStringer value(Object) throws org.json.JSONException;
-    method public org.json.JSONStringer value(boolean) throws org.json.JSONException;
-    method public org.json.JSONStringer value(double) throws org.json.JSONException;
-    method public org.json.JSONStringer value(long) throws org.json.JSONException;
-  }
-
-  public class JSONTokener {
-    ctor public JSONTokener(String);
-    method public void back();
-    method public static int dehexchar(char);
-    method public boolean more();
-    method public char next();
-    method public char next(char) throws org.json.JSONException;
-    method public String next(int) throws org.json.JSONException;
-    method public char nextClean() throws org.json.JSONException;
-    method public String nextString(char) throws org.json.JSONException;
-    method public String nextTo(String);
-    method public String nextTo(char);
-    method public Object nextValue() throws org.json.JSONException;
-    method public void skipPast(String);
-    method public char skipTo(char);
-    method public org.json.JSONException syntaxError(String);
-  }
-
-}
-
-package org.w3c.dom {
-
-  public interface Attr extends org.w3c.dom.Node {
-    method public String getName();
-    method public org.w3c.dom.Element getOwnerElement();
-    method public org.w3c.dom.TypeInfo getSchemaTypeInfo();
-    method public boolean getSpecified();
-    method public String getValue();
-    method public boolean isId();
-    method public void setValue(String) throws org.w3c.dom.DOMException;
-  }
-
-  public interface CDATASection extends org.w3c.dom.Text {
-  }
-
-  public interface CharacterData extends org.w3c.dom.Node {
-    method public void appendData(String) throws org.w3c.dom.DOMException;
-    method public void deleteData(int, int) throws org.w3c.dom.DOMException;
-    method public String getData() throws org.w3c.dom.DOMException;
-    method public int getLength();
-    method public void insertData(int, String) throws org.w3c.dom.DOMException;
-    method public void replaceData(int, int, String) throws org.w3c.dom.DOMException;
-    method public void setData(String) throws org.w3c.dom.DOMException;
-    method public String substringData(int, int) throws org.w3c.dom.DOMException;
-  }
-
-  public interface Comment extends org.w3c.dom.CharacterData {
-  }
-
-  public interface DOMConfiguration {
-    method public boolean canSetParameter(String, Object);
-    method public Object getParameter(String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.DOMStringList getParameterNames();
-    method public void setParameter(String, Object) throws org.w3c.dom.DOMException;
-  }
-
-  public interface DOMError {
-    method public org.w3c.dom.DOMLocator getLocation();
-    method public String getMessage();
-    method public Object getRelatedData();
-    method public Object getRelatedException();
-    method public short getSeverity();
-    method public String getType();
-    field public static final short SEVERITY_ERROR = 2; // 0x2
-    field public static final short SEVERITY_FATAL_ERROR = 3; // 0x3
-    field public static final short SEVERITY_WARNING = 1; // 0x1
-  }
-
-  public interface DOMErrorHandler {
-    method public boolean handleError(org.w3c.dom.DOMError);
-  }
-
-  public class DOMException extends java.lang.RuntimeException {
-    ctor public DOMException(short, String);
-    field public static final short DOMSTRING_SIZE_ERR = 2; // 0x2
-    field public static final short HIERARCHY_REQUEST_ERR = 3; // 0x3
-    field public static final short INDEX_SIZE_ERR = 1; // 0x1
-    field public static final short INUSE_ATTRIBUTE_ERR = 10; // 0xa
-    field public static final short INVALID_ACCESS_ERR = 15; // 0xf
-    field public static final short INVALID_CHARACTER_ERR = 5; // 0x5
-    field public static final short INVALID_MODIFICATION_ERR = 13; // 0xd
-    field public static final short INVALID_STATE_ERR = 11; // 0xb
-    field public static final short NAMESPACE_ERR = 14; // 0xe
-    field public static final short NOT_FOUND_ERR = 8; // 0x8
-    field public static final short NOT_SUPPORTED_ERR = 9; // 0x9
-    field public static final short NO_DATA_ALLOWED_ERR = 6; // 0x6
-    field public static final short NO_MODIFICATION_ALLOWED_ERR = 7; // 0x7
-    field public static final short SYNTAX_ERR = 12; // 0xc
-    field public static final short TYPE_MISMATCH_ERR = 17; // 0x11
-    field public static final short VALIDATION_ERR = 16; // 0x10
-    field public static final short WRONG_DOCUMENT_ERR = 4; // 0x4
-    field public short code;
-  }
-
-  public interface DOMImplementation {
-    method public org.w3c.dom.Document createDocument(String, String, org.w3c.dom.DocumentType) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.DocumentType createDocumentType(String, String, String) throws org.w3c.dom.DOMException;
-    method public Object getFeature(String, String);
-    method public boolean hasFeature(String, String);
-  }
-
-  public interface DOMImplementationList {
-    method public int getLength();
-    method public org.w3c.dom.DOMImplementation item(int);
-  }
-
-  public interface DOMImplementationSource {
-    method public org.w3c.dom.DOMImplementation getDOMImplementation(String);
-    method public org.w3c.dom.DOMImplementationList getDOMImplementationList(String);
-  }
-
-  public interface DOMLocator {
-    method public int getByteOffset();
-    method public int getColumnNumber();
-    method public int getLineNumber();
-    method public org.w3c.dom.Node getRelatedNode();
-    method public String getUri();
-    method public int getUtf16Offset();
-  }
-
-  public interface DOMStringList {
-    method public boolean contains(String);
-    method public int getLength();
-    method public String item(int);
-  }
-
-  public interface Document extends org.w3c.dom.Node {
-    method public org.w3c.dom.Node adoptNode(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Attr createAttribute(String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Attr createAttributeNS(String, String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.CDATASection createCDATASection(String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Comment createComment(String);
-    method public org.w3c.dom.DocumentFragment createDocumentFragment();
-    method public org.w3c.dom.Element createElement(String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Element createElementNS(String, String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.EntityReference createEntityReference(String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.ProcessingInstruction createProcessingInstruction(String, String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Text createTextNode(String);
-    method public org.w3c.dom.DocumentType getDoctype();
-    method public org.w3c.dom.Element getDocumentElement();
-    method public String getDocumentURI();
-    method public org.w3c.dom.DOMConfiguration getDomConfig();
-    method public org.w3c.dom.Element getElementById(String);
-    method public org.w3c.dom.NodeList getElementsByTagName(String);
-    method public org.w3c.dom.NodeList getElementsByTagNameNS(String, String);
-    method public org.w3c.dom.DOMImplementation getImplementation();
-    method public String getInputEncoding();
-    method public boolean getStrictErrorChecking();
-    method public String getXmlEncoding();
-    method public boolean getXmlStandalone();
-    method public String getXmlVersion();
-    method public org.w3c.dom.Node importNode(org.w3c.dom.Node, boolean) throws org.w3c.dom.DOMException;
-    method public void normalizeDocument();
-    method public org.w3c.dom.Node renameNode(org.w3c.dom.Node, String, String) throws org.w3c.dom.DOMException;
-    method public void setDocumentURI(String);
-    method public void setStrictErrorChecking(boolean);
-    method public void setXmlStandalone(boolean) throws org.w3c.dom.DOMException;
-    method public void setXmlVersion(String) throws org.w3c.dom.DOMException;
-  }
-
-  public interface DocumentFragment extends org.w3c.dom.Node {
-  }
-
-  public interface DocumentType extends org.w3c.dom.Node {
-    method public org.w3c.dom.NamedNodeMap getEntities();
-    method public String getInternalSubset();
-    method public String getName();
-    method public org.w3c.dom.NamedNodeMap getNotations();
-    method public String getPublicId();
-    method public String getSystemId();
-  }
-
-  public interface Element extends org.w3c.dom.Node {
-    method public String getAttribute(String);
-    method public String getAttributeNS(String, String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Attr getAttributeNode(String);
-    method public org.w3c.dom.Attr getAttributeNodeNS(String, String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.NodeList getElementsByTagName(String);
-    method public org.w3c.dom.NodeList getElementsByTagNameNS(String, String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.TypeInfo getSchemaTypeInfo();
-    method public String getTagName();
-    method public boolean hasAttribute(String);
-    method public boolean hasAttributeNS(String, String) throws org.w3c.dom.DOMException;
-    method public void removeAttribute(String) throws org.w3c.dom.DOMException;
-    method public void removeAttributeNS(String, String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Attr removeAttributeNode(org.w3c.dom.Attr) throws org.w3c.dom.DOMException;
-    method public void setAttribute(String, String) throws org.w3c.dom.DOMException;
-    method public void setAttributeNS(String, String, String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Attr setAttributeNode(org.w3c.dom.Attr) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Attr setAttributeNodeNS(org.w3c.dom.Attr) throws org.w3c.dom.DOMException;
-    method public void setIdAttribute(String, boolean) throws org.w3c.dom.DOMException;
-    method public void setIdAttributeNS(String, String, boolean) throws org.w3c.dom.DOMException;
-    method public void setIdAttributeNode(org.w3c.dom.Attr, boolean) throws org.w3c.dom.DOMException;
-  }
-
-  public interface Entity extends org.w3c.dom.Node {
-    method public String getInputEncoding();
-    method public String getNotationName();
-    method public String getPublicId();
-    method public String getSystemId();
-    method public String getXmlEncoding();
-    method public String getXmlVersion();
-  }
-
-  public interface EntityReference extends org.w3c.dom.Node {
-  }
-
-  public interface NameList {
-    method public boolean contains(String);
-    method public boolean containsNS(String, String);
-    method public int getLength();
-    method public String getName(int);
-    method public String getNamespaceURI(int);
-  }
-
-  public interface NamedNodeMap {
-    method public int getLength();
-    method public org.w3c.dom.Node getNamedItem(String);
-    method public org.w3c.dom.Node getNamedItemNS(String, String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Node item(int);
-    method public org.w3c.dom.Node removeNamedItem(String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Node removeNamedItemNS(String, String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Node setNamedItem(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Node setNamedItemNS(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
-  }
-
-  public interface Node {
-    method public org.w3c.dom.Node appendChild(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Node cloneNode(boolean);
-    method public short compareDocumentPosition(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.NamedNodeMap getAttributes();
-    method public String getBaseURI();
-    method public org.w3c.dom.NodeList getChildNodes();
-    method public Object getFeature(String, String);
-    method public org.w3c.dom.Node getFirstChild();
-    method public org.w3c.dom.Node getLastChild();
-    method public String getLocalName();
-    method public String getNamespaceURI();
-    method public org.w3c.dom.Node getNextSibling();
-    method public String getNodeName();
-    method public short getNodeType();
-    method public String getNodeValue() throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Document getOwnerDocument();
-    method public org.w3c.dom.Node getParentNode();
-    method public String getPrefix();
-    method public org.w3c.dom.Node getPreviousSibling();
-    method public String getTextContent() throws org.w3c.dom.DOMException;
-    method public Object getUserData(String);
-    method public boolean hasAttributes();
-    method public boolean hasChildNodes();
-    method public org.w3c.dom.Node insertBefore(org.w3c.dom.Node, org.w3c.dom.Node) throws org.w3c.dom.DOMException;
-    method public boolean isDefaultNamespace(String);
-    method public boolean isEqualNode(org.w3c.dom.Node);
-    method public boolean isSameNode(org.w3c.dom.Node);
-    method public boolean isSupported(String, String);
-    method public String lookupNamespaceURI(String);
-    method public String lookupPrefix(String);
-    method public void normalize();
-    method public org.w3c.dom.Node removeChild(org.w3c.dom.Node) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Node replaceChild(org.w3c.dom.Node, org.w3c.dom.Node) throws org.w3c.dom.DOMException;
-    method public void setNodeValue(String) throws org.w3c.dom.DOMException;
-    method public void setPrefix(String) throws org.w3c.dom.DOMException;
-    method public void setTextContent(String) throws org.w3c.dom.DOMException;
-    method public Object setUserData(String, Object, org.w3c.dom.UserDataHandler);
-    field public static final short ATTRIBUTE_NODE = 2; // 0x2
-    field public static final short CDATA_SECTION_NODE = 4; // 0x4
-    field public static final short COMMENT_NODE = 8; // 0x8
-    field public static final short DOCUMENT_FRAGMENT_NODE = 11; // 0xb
-    field public static final short DOCUMENT_NODE = 9; // 0x9
-    field public static final short DOCUMENT_POSITION_CONTAINED_BY = 16; // 0x10
-    field public static final short DOCUMENT_POSITION_CONTAINS = 8; // 0x8
-    field public static final short DOCUMENT_POSITION_DISCONNECTED = 1; // 0x1
-    field public static final short DOCUMENT_POSITION_FOLLOWING = 4; // 0x4
-    field public static final short DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 32; // 0x20
-    field public static final short DOCUMENT_POSITION_PRECEDING = 2; // 0x2
-    field public static final short DOCUMENT_TYPE_NODE = 10; // 0xa
-    field public static final short ELEMENT_NODE = 1; // 0x1
-    field public static final short ENTITY_NODE = 6; // 0x6
-    field public static final short ENTITY_REFERENCE_NODE = 5; // 0x5
-    field public static final short NOTATION_NODE = 12; // 0xc
-    field public static final short PROCESSING_INSTRUCTION_NODE = 7; // 0x7
-    field public static final short TEXT_NODE = 3; // 0x3
-  }
-
-  public interface NodeList {
-    method public int getLength();
-    method public org.w3c.dom.Node item(int);
-  }
-
-  public interface Notation extends org.w3c.dom.Node {
-    method public String getPublicId();
-    method public String getSystemId();
-  }
-
-  public interface ProcessingInstruction extends org.w3c.dom.Node {
-    method public String getData();
-    method public String getTarget();
-    method public void setData(String) throws org.w3c.dom.DOMException;
-  }
-
-  public interface Text extends org.w3c.dom.CharacterData {
-    method public String getWholeText();
-    method public boolean isElementContentWhitespace();
-    method public org.w3c.dom.Text replaceWholeText(String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.Text splitText(int) throws org.w3c.dom.DOMException;
-  }
-
-  public interface TypeInfo {
-    method public String getTypeName();
-    method public String getTypeNamespace();
-    method public boolean isDerivedFrom(String, String, int);
-    field public static final int DERIVATION_EXTENSION = 2; // 0x2
-    field public static final int DERIVATION_LIST = 8; // 0x8
-    field public static final int DERIVATION_RESTRICTION = 1; // 0x1
-    field public static final int DERIVATION_UNION = 4; // 0x4
-  }
-
-  public interface UserDataHandler {
-    method public void handle(short, String, Object, org.w3c.dom.Node, org.w3c.dom.Node);
-    field public static final short NODE_ADOPTED = 5; // 0x5
-    field public static final short NODE_CLONED = 1; // 0x1
-    field public static final short NODE_DELETED = 3; // 0x3
-    field public static final short NODE_IMPORTED = 2; // 0x2
-    field public static final short NODE_RENAMED = 4; // 0x4
-  }
-
-}
-
-package org.w3c.dom.ls {
-
-  public interface DOMImplementationLS {
-    method public org.w3c.dom.ls.LSInput createLSInput();
-    method public org.w3c.dom.ls.LSOutput createLSOutput();
-    method public org.w3c.dom.ls.LSParser createLSParser(short, String) throws org.w3c.dom.DOMException;
-    method public org.w3c.dom.ls.LSSerializer createLSSerializer();
-    field public static final short MODE_ASYNCHRONOUS = 2; // 0x2
-    field public static final short MODE_SYNCHRONOUS = 1; // 0x1
-  }
-
-  public class LSException extends java.lang.RuntimeException {
-    ctor public LSException(short, String);
-    field public static final short PARSE_ERR = 81; // 0x51
-    field public static final short SERIALIZE_ERR = 82; // 0x52
-    field public short code;
-  }
-
-  public interface LSInput {
-    method public String getBaseURI();
-    method public java.io.InputStream getByteStream();
-    method public boolean getCertifiedText();
-    method public java.io.Reader getCharacterStream();
-    method public String getEncoding();
-    method public String getPublicId();
-    method public String getStringData();
-    method public String getSystemId();
-    method public void setBaseURI(String);
-    method public void setByteStream(java.io.InputStream);
-    method public void setCertifiedText(boolean);
-    method public void setCharacterStream(java.io.Reader);
-    method public void setEncoding(String);
-    method public void setPublicId(String);
-    method public void setStringData(String);
-    method public void setSystemId(String);
-  }
-
-  public interface LSOutput {
-    method public java.io.OutputStream getByteStream();
-    method public java.io.Writer getCharacterStream();
-    method public String getEncoding();
-    method public String getSystemId();
-    method public void setByteStream(java.io.OutputStream);
-    method public void setCharacterStream(java.io.Writer);
-    method public void setEncoding(String);
-    method public void setSystemId(String);
-  }
-
-  public interface LSParser {
-    method public void abort();
-    method public boolean getAsync();
-    method public boolean getBusy();
-    method public org.w3c.dom.DOMConfiguration getDomConfig();
-    method public org.w3c.dom.ls.LSParserFilter getFilter();
-    method public org.w3c.dom.Document parse(org.w3c.dom.ls.LSInput) throws org.w3c.dom.DOMException, org.w3c.dom.ls.LSException;
-    method public org.w3c.dom.Document parseURI(String) throws org.w3c.dom.DOMException, org.w3c.dom.ls.LSException;
-    method public org.w3c.dom.Node parseWithContext(org.w3c.dom.ls.LSInput, org.w3c.dom.Node, short) throws org.w3c.dom.DOMException, org.w3c.dom.ls.LSException;
-    method public void setFilter(org.w3c.dom.ls.LSParserFilter);
-    field public static final short ACTION_APPEND_AS_CHILDREN = 1; // 0x1
-    field public static final short ACTION_INSERT_AFTER = 4; // 0x4
-    field public static final short ACTION_INSERT_BEFORE = 3; // 0x3
-    field public static final short ACTION_REPLACE = 5; // 0x5
-    field public static final short ACTION_REPLACE_CHILDREN = 2; // 0x2
-  }
-
-  public interface LSParserFilter {
-    method public short acceptNode(org.w3c.dom.Node);
-    method public int getWhatToShow();
-    method public short startElement(org.w3c.dom.Element);
-    field public static final short FILTER_ACCEPT = 1; // 0x1
-    field public static final short FILTER_INTERRUPT = 4; // 0x4
-    field public static final short FILTER_REJECT = 2; // 0x2
-    field public static final short FILTER_SKIP = 3; // 0x3
-  }
-
-  public interface LSResourceResolver {
-    method public org.w3c.dom.ls.LSInput resolveResource(String, String, String, String, String);
-  }
-
-  public interface LSSerializer {
-    method public org.w3c.dom.DOMConfiguration getDomConfig();
-    method public String getNewLine();
-    method public void setNewLine(String);
-    method public boolean write(org.w3c.dom.Node, org.w3c.dom.ls.LSOutput) throws org.w3c.dom.ls.LSException;
-    method public String writeToString(org.w3c.dom.Node) throws org.w3c.dom.DOMException, org.w3c.dom.ls.LSException;
-    method public boolean writeToURI(org.w3c.dom.Node, String) throws org.w3c.dom.ls.LSException;
-  }
-
-}
-
-package org.xml.sax {
-
-  @Deprecated public interface AttributeList {
-    method @Deprecated public int getLength();
-    method @Deprecated public String getName(int);
-    method @Deprecated public String getType(int);
-    method @Deprecated public String getType(String);
-    method @Deprecated public String getValue(int);
-    method @Deprecated public String getValue(String);
-  }
-
-  public interface Attributes {
-    method public int getIndex(String, String);
-    method public int getIndex(String);
-    method public int getLength();
-    method public String getLocalName(int);
-    method public String getQName(int);
-    method public String getType(int);
-    method public String getType(String, String);
-    method public String getType(String);
-    method public String getURI(int);
-    method public String getValue(int);
-    method public String getValue(String, String);
-    method public String getValue(String);
-  }
-
-  public interface ContentHandler {
-    method public void characters(char[], int, int) throws org.xml.sax.SAXException;
-    method public void endDocument() throws org.xml.sax.SAXException;
-    method public void endElement(String, String, String) throws org.xml.sax.SAXException;
-    method public void endPrefixMapping(String) throws org.xml.sax.SAXException;
-    method public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
-    method public void processingInstruction(String, String) throws org.xml.sax.SAXException;
-    method public void setDocumentLocator(org.xml.sax.Locator);
-    method public void skippedEntity(String) throws org.xml.sax.SAXException;
-    method public void startDocument() throws org.xml.sax.SAXException;
-    method public void startElement(String, String, String, org.xml.sax.Attributes) throws org.xml.sax.SAXException;
-    method public void startPrefixMapping(String, String) throws org.xml.sax.SAXException;
-  }
-
-  public interface DTDHandler {
-    method public void notationDecl(String, String, String) throws org.xml.sax.SAXException;
-    method public void unparsedEntityDecl(String, String, String, String) throws org.xml.sax.SAXException;
-  }
-
-  @Deprecated public interface DocumentHandler {
-    method @Deprecated public void characters(char[], int, int) throws org.xml.sax.SAXException;
-    method @Deprecated public void endDocument() throws org.xml.sax.SAXException;
-    method @Deprecated public void endElement(String) throws org.xml.sax.SAXException;
-    method @Deprecated public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
-    method @Deprecated public void processingInstruction(String, String) throws org.xml.sax.SAXException;
-    method @Deprecated public void setDocumentLocator(org.xml.sax.Locator);
-    method @Deprecated public void startDocument() throws org.xml.sax.SAXException;
-    method @Deprecated public void startElement(String, org.xml.sax.AttributeList) throws org.xml.sax.SAXException;
-  }
-
-  public interface EntityResolver {
-    method public org.xml.sax.InputSource resolveEntity(String, String) throws java.io.IOException, org.xml.sax.SAXException;
-  }
-
-  public interface ErrorHandler {
-    method public void error(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
-    method public void fatalError(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
-    method public void warning(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
-  }
-
-  @Deprecated public class HandlerBase implements org.xml.sax.DTDHandler org.xml.sax.DocumentHandler org.xml.sax.EntityResolver org.xml.sax.ErrorHandler {
-    ctor @Deprecated public HandlerBase();
-    method @Deprecated public void characters(char[], int, int) throws org.xml.sax.SAXException;
-    method @Deprecated public void endDocument() throws org.xml.sax.SAXException;
-    method @Deprecated public void endElement(String) throws org.xml.sax.SAXException;
-    method @Deprecated public void error(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
-    method @Deprecated public void fatalError(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
-    method @Deprecated public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
-    method @Deprecated public void notationDecl(String, String, String);
-    method @Deprecated public void processingInstruction(String, String) throws org.xml.sax.SAXException;
-    method @Deprecated public org.xml.sax.InputSource resolveEntity(String, String) throws org.xml.sax.SAXException;
-    method @Deprecated public void setDocumentLocator(org.xml.sax.Locator);
-    method @Deprecated public void startDocument() throws org.xml.sax.SAXException;
-    method @Deprecated public void startElement(String, org.xml.sax.AttributeList) throws org.xml.sax.SAXException;
-    method @Deprecated public void unparsedEntityDecl(String, String, String, String);
-    method @Deprecated public void warning(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
-  }
-
-  public class InputSource {
-    ctor public InputSource();
-    ctor public InputSource(String);
-    ctor public InputSource(java.io.InputStream);
-    ctor public InputSource(java.io.Reader);
-    method public java.io.InputStream getByteStream();
-    method public java.io.Reader getCharacterStream();
-    method public String getEncoding();
-    method public String getPublicId();
-    method public String getSystemId();
-    method public void setByteStream(java.io.InputStream);
-    method public void setCharacterStream(java.io.Reader);
-    method public void setEncoding(String);
-    method public void setPublicId(String);
-    method public void setSystemId(String);
-  }
-
-  public interface Locator {
-    method public int getColumnNumber();
-    method public int getLineNumber();
-    method public String getPublicId();
-    method public String getSystemId();
-  }
-
-  @Deprecated public interface Parser {
-    method @Deprecated public void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
-    method @Deprecated public void parse(String) throws java.io.IOException, org.xml.sax.SAXException;
-    method @Deprecated public void setDTDHandler(org.xml.sax.DTDHandler);
-    method @Deprecated public void setDocumentHandler(org.xml.sax.DocumentHandler);
-    method @Deprecated public void setEntityResolver(org.xml.sax.EntityResolver);
-    method @Deprecated public void setErrorHandler(org.xml.sax.ErrorHandler);
-    method @Deprecated public void setLocale(java.util.Locale) throws org.xml.sax.SAXException;
-  }
-
-  public class SAXException extends java.lang.Exception {
-    ctor public SAXException();
-    ctor public SAXException(String);
-    ctor public SAXException(Exception);
-    ctor public SAXException(String, Exception);
-    method public Exception getException();
-  }
-
-  public class SAXNotRecognizedException extends org.xml.sax.SAXException {
-    ctor public SAXNotRecognizedException();
-    ctor public SAXNotRecognizedException(String);
-  }
-
-  public class SAXNotSupportedException extends org.xml.sax.SAXException {
-    ctor public SAXNotSupportedException();
-    ctor public SAXNotSupportedException(String);
-  }
-
-  public class SAXParseException extends org.xml.sax.SAXException {
-    ctor public SAXParseException(String, org.xml.sax.Locator);
-    ctor public SAXParseException(String, org.xml.sax.Locator, Exception);
-    ctor public SAXParseException(String, String, String, int, int);
-    ctor public SAXParseException(String, String, String, int, int, Exception);
-    method public int getColumnNumber();
-    method public int getLineNumber();
-    method public String getPublicId();
-    method public String getSystemId();
-  }
-
-  public interface XMLFilter extends org.xml.sax.XMLReader {
-    method public org.xml.sax.XMLReader getParent();
-    method public void setParent(org.xml.sax.XMLReader);
-  }
-
-  public interface XMLReader {
-    method public org.xml.sax.ContentHandler getContentHandler();
-    method public org.xml.sax.DTDHandler getDTDHandler();
-    method public org.xml.sax.EntityResolver getEntityResolver();
-    method public org.xml.sax.ErrorHandler getErrorHandler();
-    method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void setContentHandler(org.xml.sax.ContentHandler);
-    method public void setDTDHandler(org.xml.sax.DTDHandler);
-    method public void setEntityResolver(org.xml.sax.EntityResolver);
-    method public void setErrorHandler(org.xml.sax.ErrorHandler);
-    method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-  }
-
-}
-
-package org.xml.sax.ext {
-
-  public interface Attributes2 extends org.xml.sax.Attributes {
-    method public boolean isDeclared(int);
-    method public boolean isDeclared(String);
-    method public boolean isDeclared(String, String);
-    method public boolean isSpecified(int);
-    method public boolean isSpecified(String, String);
-    method public boolean isSpecified(String);
-  }
-
-  public class Attributes2Impl extends org.xml.sax.helpers.AttributesImpl implements org.xml.sax.ext.Attributes2 {
-    ctor public Attributes2Impl();
-    ctor public Attributes2Impl(org.xml.sax.Attributes);
-    method public boolean isDeclared(int);
-    method public boolean isDeclared(String, String);
-    method public boolean isDeclared(String);
-    method public boolean isSpecified(int);
-    method public boolean isSpecified(String, String);
-    method public boolean isSpecified(String);
-    method public void setDeclared(int, boolean);
-    method public void setSpecified(int, boolean);
-  }
-
-  public interface DeclHandler {
-    method public void attributeDecl(String, String, String, String, String) throws org.xml.sax.SAXException;
-    method public void elementDecl(String, String) throws org.xml.sax.SAXException;
-    method public void externalEntityDecl(String, String, String) throws org.xml.sax.SAXException;
-    method public void internalEntityDecl(String, String) throws org.xml.sax.SAXException;
-  }
-
-  public class DefaultHandler2 extends org.xml.sax.helpers.DefaultHandler implements org.xml.sax.ext.DeclHandler org.xml.sax.ext.EntityResolver2 org.xml.sax.ext.LexicalHandler {
-    ctor public DefaultHandler2();
-    method public void attributeDecl(String, String, String, String, String) throws org.xml.sax.SAXException;
-    method public void comment(char[], int, int) throws org.xml.sax.SAXException;
-    method public void elementDecl(String, String) throws org.xml.sax.SAXException;
-    method public void endCDATA() throws org.xml.sax.SAXException;
-    method public void endDTD() throws org.xml.sax.SAXException;
-    method public void endEntity(String) throws org.xml.sax.SAXException;
-    method public void externalEntityDecl(String, String, String) throws org.xml.sax.SAXException;
-    method public org.xml.sax.InputSource getExternalSubset(String, String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void internalEntityDecl(String, String) throws org.xml.sax.SAXException;
-    method public org.xml.sax.InputSource resolveEntity(String, String, String, String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void startCDATA() throws org.xml.sax.SAXException;
-    method public void startDTD(String, String, String) throws org.xml.sax.SAXException;
-    method public void startEntity(String) throws org.xml.sax.SAXException;
-  }
-
-  public interface EntityResolver2 extends org.xml.sax.EntityResolver {
-    method public org.xml.sax.InputSource getExternalSubset(String, String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public org.xml.sax.InputSource resolveEntity(String, String, String, String) throws java.io.IOException, org.xml.sax.SAXException;
-  }
-
-  public interface LexicalHandler {
-    method public void comment(char[], int, int) throws org.xml.sax.SAXException;
-    method public void endCDATA() throws org.xml.sax.SAXException;
-    method public void endDTD() throws org.xml.sax.SAXException;
-    method public void endEntity(String) throws org.xml.sax.SAXException;
-    method public void startCDATA() throws org.xml.sax.SAXException;
-    method public void startDTD(String, String, String) throws org.xml.sax.SAXException;
-    method public void startEntity(String) throws org.xml.sax.SAXException;
-  }
-
-  public interface Locator2 extends org.xml.sax.Locator {
-    method public String getEncoding();
-    method public String getXMLVersion();
-  }
-
-  public class Locator2Impl extends org.xml.sax.helpers.LocatorImpl implements org.xml.sax.ext.Locator2 {
-    ctor public Locator2Impl();
-    ctor public Locator2Impl(org.xml.sax.Locator);
-    method public String getEncoding();
-    method public String getXMLVersion();
-    method public void setEncoding(String);
-    method public void setXMLVersion(String);
-  }
-
-}
-
-package org.xml.sax.helpers {
-
-  @Deprecated public class AttributeListImpl implements org.xml.sax.AttributeList {
-    ctor @Deprecated public AttributeListImpl();
-    ctor @Deprecated public AttributeListImpl(org.xml.sax.AttributeList);
-    method @Deprecated public void addAttribute(String, String, String);
-    method @Deprecated public void clear();
-    method @Deprecated public int getLength();
-    method @Deprecated public String getName(int);
-    method @Deprecated public String getType(int);
-    method @Deprecated public String getType(String);
-    method @Deprecated public String getValue(int);
-    method @Deprecated public String getValue(String);
-    method @Deprecated public void removeAttribute(String);
-    method @Deprecated public void setAttributeList(org.xml.sax.AttributeList);
-  }
-
-  public class AttributesImpl implements org.xml.sax.Attributes {
-    ctor public AttributesImpl();
-    ctor public AttributesImpl(org.xml.sax.Attributes);
-    method public void addAttribute(String, String, String, String, String);
-    method public void clear();
-    method public int getIndex(String, String);
-    method public int getIndex(String);
-    method public int getLength();
-    method public String getLocalName(int);
-    method public String getQName(int);
-    method public String getType(int);
-    method public String getType(String, String);
-    method public String getType(String);
-    method public String getURI(int);
-    method public String getValue(int);
-    method public String getValue(String, String);
-    method public String getValue(String);
-    method public void removeAttribute(int);
-    method public void setAttribute(int, String, String, String, String, String);
-    method public void setAttributes(org.xml.sax.Attributes);
-    method public void setLocalName(int, String);
-    method public void setQName(int, String);
-    method public void setType(int, String);
-    method public void setURI(int, String);
-    method public void setValue(int, String);
-  }
-
-  public class DefaultHandler implements org.xml.sax.ContentHandler org.xml.sax.DTDHandler org.xml.sax.EntityResolver org.xml.sax.ErrorHandler {
-    ctor public DefaultHandler();
-    method public void characters(char[], int, int) throws org.xml.sax.SAXException;
-    method public void endDocument() throws org.xml.sax.SAXException;
-    method public void endElement(String, String, String) throws org.xml.sax.SAXException;
-    method public void endPrefixMapping(String) throws org.xml.sax.SAXException;
-    method public void error(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
-    method public void fatalError(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
-    method public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
-    method public void notationDecl(String, String, String) throws org.xml.sax.SAXException;
-    method public void processingInstruction(String, String) throws org.xml.sax.SAXException;
-    method public org.xml.sax.InputSource resolveEntity(String, String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void setDocumentLocator(org.xml.sax.Locator);
-    method public void skippedEntity(String) throws org.xml.sax.SAXException;
-    method public void startDocument() throws org.xml.sax.SAXException;
-    method public void startElement(String, String, String, org.xml.sax.Attributes) throws org.xml.sax.SAXException;
-    method public void startPrefixMapping(String, String) throws org.xml.sax.SAXException;
-    method public void unparsedEntityDecl(String, String, String, String) throws org.xml.sax.SAXException;
-    method public void warning(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
-  }
-
-  public class LocatorImpl implements org.xml.sax.Locator {
-    ctor public LocatorImpl();
-    ctor public LocatorImpl(org.xml.sax.Locator);
-    method public int getColumnNumber();
-    method public int getLineNumber();
-    method public String getPublicId();
-    method public String getSystemId();
-    method public void setColumnNumber(int);
-    method public void setLineNumber(int);
-    method public void setPublicId(String);
-    method public void setSystemId(String);
-  }
-
-  public class NamespaceSupport {
-    ctor public NamespaceSupport();
-    method public boolean declarePrefix(String, String);
-    method public java.util.Enumeration getDeclaredPrefixes();
-    method public String getPrefix(String);
-    method public java.util.Enumeration getPrefixes();
-    method public java.util.Enumeration getPrefixes(String);
-    method public String getURI(String);
-    method public boolean isNamespaceDeclUris();
-    method public void popContext();
-    method public String[] processName(String, String[], boolean);
-    method public void pushContext();
-    method public void reset();
-    method public void setNamespaceDeclUris(boolean);
-    field public static final String NSDECL = "http://www.w3.org/xmlns/2000/";
-    field public static final String XMLNS = "http://www.w3.org/XML/1998/namespace";
-  }
-
-  public class ParserAdapter implements org.xml.sax.DocumentHandler org.xml.sax.XMLReader {
-    ctor public ParserAdapter() throws org.xml.sax.SAXException;
-    ctor public ParserAdapter(org.xml.sax.Parser);
-    method public void characters(char[], int, int) throws org.xml.sax.SAXException;
-    method public void endDocument() throws org.xml.sax.SAXException;
-    method public void endElement(String) throws org.xml.sax.SAXException;
-    method public org.xml.sax.ContentHandler getContentHandler();
-    method public org.xml.sax.DTDHandler getDTDHandler();
-    method public org.xml.sax.EntityResolver getEntityResolver();
-    method public org.xml.sax.ErrorHandler getErrorHandler();
-    method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
-    method public void parse(String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void processingInstruction(String, String) throws org.xml.sax.SAXException;
-    method public void setContentHandler(org.xml.sax.ContentHandler);
-    method public void setDTDHandler(org.xml.sax.DTDHandler);
-    method public void setDocumentLocator(org.xml.sax.Locator);
-    method public void setEntityResolver(org.xml.sax.EntityResolver);
-    method public void setErrorHandler(org.xml.sax.ErrorHandler);
-    method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void startDocument() throws org.xml.sax.SAXException;
-    method public void startElement(String, org.xml.sax.AttributeList) throws org.xml.sax.SAXException;
-  }
-
-  @Deprecated public class ParserFactory {
-    method @Deprecated public static org.xml.sax.Parser makeParser() throws java.lang.ClassCastException, java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException, java.lang.NullPointerException;
-    method @Deprecated public static org.xml.sax.Parser makeParser(String) throws java.lang.ClassCastException, java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
-  }
-
-  public class XMLFilterImpl implements org.xml.sax.ContentHandler org.xml.sax.DTDHandler org.xml.sax.EntityResolver org.xml.sax.ErrorHandler org.xml.sax.XMLFilter {
-    ctor public XMLFilterImpl();
-    ctor public XMLFilterImpl(org.xml.sax.XMLReader);
-    method public void characters(char[], int, int) throws org.xml.sax.SAXException;
-    method public void endDocument() throws org.xml.sax.SAXException;
-    method public void endElement(String, String, String) throws org.xml.sax.SAXException;
-    method public void endPrefixMapping(String) throws org.xml.sax.SAXException;
-    method public void error(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
-    method public void fatalError(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
-    method public org.xml.sax.ContentHandler getContentHandler();
-    method public org.xml.sax.DTDHandler getDTDHandler();
-    method public org.xml.sax.EntityResolver getEntityResolver();
-    method public org.xml.sax.ErrorHandler getErrorHandler();
-    method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public org.xml.sax.XMLReader getParent();
-    method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
-    method public void notationDecl(String, String, String) throws org.xml.sax.SAXException;
-    method public void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void processingInstruction(String, String) throws org.xml.sax.SAXException;
-    method public org.xml.sax.InputSource resolveEntity(String, String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void setContentHandler(org.xml.sax.ContentHandler);
-    method public void setDTDHandler(org.xml.sax.DTDHandler);
-    method public void setDocumentLocator(org.xml.sax.Locator);
-    method public void setEntityResolver(org.xml.sax.EntityResolver);
-    method public void setErrorHandler(org.xml.sax.ErrorHandler);
-    method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void setParent(org.xml.sax.XMLReader);
-    method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void skippedEntity(String) throws org.xml.sax.SAXException;
-    method public void startDocument() throws org.xml.sax.SAXException;
-    method public void startElement(String, String, String, org.xml.sax.Attributes) throws org.xml.sax.SAXException;
-    method public void startPrefixMapping(String, String) throws org.xml.sax.SAXException;
-    method public void unparsedEntityDecl(String, String, String, String) throws org.xml.sax.SAXException;
-    method public void warning(org.xml.sax.SAXParseException) throws org.xml.sax.SAXException;
-  }
-
-  public class XMLReaderAdapter implements org.xml.sax.ContentHandler org.xml.sax.Parser {
-    ctor public XMLReaderAdapter() throws org.xml.sax.SAXException;
-    ctor public XMLReaderAdapter(org.xml.sax.XMLReader);
-    method public void characters(char[], int, int) throws org.xml.sax.SAXException;
-    method public void endDocument() throws org.xml.sax.SAXException;
-    method public void endElement(String, String, String) throws org.xml.sax.SAXException;
-    method public void endPrefixMapping(String);
-    method public void ignorableWhitespace(char[], int, int) throws org.xml.sax.SAXException;
-    method public void parse(String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void processingInstruction(String, String) throws org.xml.sax.SAXException;
-    method public void setDTDHandler(org.xml.sax.DTDHandler);
-    method public void setDocumentHandler(org.xml.sax.DocumentHandler);
-    method public void setDocumentLocator(org.xml.sax.Locator);
-    method public void setEntityResolver(org.xml.sax.EntityResolver);
-    method public void setErrorHandler(org.xml.sax.ErrorHandler);
-    method public void setLocale(java.util.Locale) throws org.xml.sax.SAXException;
-    method public void skippedEntity(String) throws org.xml.sax.SAXException;
-    method public void startDocument() throws org.xml.sax.SAXException;
-    method public void startElement(String, String, String, org.xml.sax.Attributes) throws org.xml.sax.SAXException;
-    method public void startPrefixMapping(String, String);
-  }
-
-  public final class XMLReaderFactory {
-    method public static org.xml.sax.XMLReader createXMLReader() throws org.xml.sax.SAXException;
-    method public static org.xml.sax.XMLReader createXMLReader(String) throws org.xml.sax.SAXException;
-  }
-
-}
-
-package org.xmlpull.v1 {
-
-  public interface XmlPullParser {
-    method public void defineEntityReplacementText(String, String) throws org.xmlpull.v1.XmlPullParserException;
-    method public int getAttributeCount();
-    method public String getAttributeName(int);
-    method public String getAttributeNamespace(int);
-    method public String getAttributePrefix(int);
-    method public String getAttributeType(int);
-    method public String getAttributeValue(int);
-    method public String getAttributeValue(String, String);
-    method public int getColumnNumber();
-    method public int getDepth();
-    method public int getEventType() throws org.xmlpull.v1.XmlPullParserException;
-    method public boolean getFeature(String);
-    method public String getInputEncoding();
-    method public int getLineNumber();
-    method public String getName();
-    method public String getNamespace(String);
-    method public String getNamespace();
-    method public int getNamespaceCount(int) throws org.xmlpull.v1.XmlPullParserException;
-    method public String getNamespacePrefix(int) throws org.xmlpull.v1.XmlPullParserException;
-    method public String getNamespaceUri(int) throws org.xmlpull.v1.XmlPullParserException;
-    method public String getPositionDescription();
-    method public String getPrefix();
-    method public Object getProperty(String);
-    method public String getText();
-    method public char[] getTextCharacters(int[]);
-    method public boolean isAttributeDefault(int);
-    method public boolean isEmptyElementTag() throws org.xmlpull.v1.XmlPullParserException;
-    method public boolean isWhitespace() throws org.xmlpull.v1.XmlPullParserException;
-    method public int next() throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public int nextTag() throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public String nextText() throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public int nextToken() throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public void require(int, String, String) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public void setFeature(String, boolean) throws org.xmlpull.v1.XmlPullParserException;
-    method public void setInput(java.io.Reader) throws org.xmlpull.v1.XmlPullParserException;
-    method public void setInput(java.io.InputStream, String) throws org.xmlpull.v1.XmlPullParserException;
-    method public void setProperty(String, Object) throws org.xmlpull.v1.XmlPullParserException;
-    field public static final int CDSECT = 5; // 0x5
-    field public static final int COMMENT = 9; // 0x9
-    field public static final int DOCDECL = 10; // 0xa
-    field public static final int END_DOCUMENT = 1; // 0x1
-    field public static final int END_TAG = 3; // 0x3
-    field public static final int ENTITY_REF = 6; // 0x6
-    field public static final String FEATURE_PROCESS_DOCDECL = "http://xmlpull.org/v1/doc/features.html#process-docdecl";
-    field public static final String FEATURE_PROCESS_NAMESPACES = "http://xmlpull.org/v1/doc/features.html#process-namespaces";
-    field public static final String FEATURE_REPORT_NAMESPACE_ATTRIBUTES = "http://xmlpull.org/v1/doc/features.html#report-namespace-prefixes";
-    field public static final String FEATURE_VALIDATION = "http://xmlpull.org/v1/doc/features.html#validation";
-    field public static final int IGNORABLE_WHITESPACE = 7; // 0x7
-    field public static final String NO_NAMESPACE = "";
-    field public static final int PROCESSING_INSTRUCTION = 8; // 0x8
-    field public static final int START_DOCUMENT = 0; // 0x0
-    field public static final int START_TAG = 2; // 0x2
-    field public static final int TEXT = 4; // 0x4
-    field public static final String[] TYPES;
-  }
-
-  public class XmlPullParserException extends java.lang.Exception {
-    ctor public XmlPullParserException(String);
-    ctor public XmlPullParserException(String, org.xmlpull.v1.XmlPullParser, Throwable);
-    method public int getColumnNumber();
-    method public Throwable getDetail();
-    method public int getLineNumber();
-    field protected int column;
-    field protected Throwable detail;
-    field protected int row;
-  }
-
-  public class XmlPullParserFactory {
-    ctor protected XmlPullParserFactory();
-    method public boolean getFeature(String);
-    method public boolean isNamespaceAware();
-    method public boolean isValidating();
-    method public static org.xmlpull.v1.XmlPullParserFactory newInstance() throws org.xmlpull.v1.XmlPullParserException;
-    method public static org.xmlpull.v1.XmlPullParserFactory newInstance(String, Class) throws org.xmlpull.v1.XmlPullParserException;
-    method public org.xmlpull.v1.XmlPullParser newPullParser() throws org.xmlpull.v1.XmlPullParserException;
-    method public org.xmlpull.v1.XmlSerializer newSerializer() throws org.xmlpull.v1.XmlPullParserException;
-    method public void setFeature(String, boolean) throws org.xmlpull.v1.XmlPullParserException;
-    method public void setNamespaceAware(boolean);
-    method public void setValidating(boolean);
-    field public static final String PROPERTY_NAME = "org.xmlpull.v1.XmlPullParserFactory";
-    field protected String classNamesLocation;
-    field protected java.util.HashMap<java.lang.String,java.lang.Boolean> features;
-    field protected java.util.ArrayList parserClasses;
-    field protected java.util.ArrayList serializerClasses;
-  }
-
-  public interface XmlSerializer {
-    method public org.xmlpull.v1.XmlSerializer attribute(String, String, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void cdsect(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void comment(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void docdecl(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void endDocument() throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public org.xmlpull.v1.XmlSerializer endTag(String, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void entityRef(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void flush() throws java.io.IOException;
-    method public int getDepth();
-    method public boolean getFeature(String);
-    method public String getName();
-    method public String getNamespace();
-    method public String getPrefix(String, boolean) throws java.lang.IllegalArgumentException;
-    method public Object getProperty(String);
-    method public void ignorableWhitespace(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void processingInstruction(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void setFeature(String, boolean) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void setOutput(java.io.OutputStream, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void setOutput(java.io.Writer) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void setPrefix(String, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void setProperty(String, Object) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void startDocument(String, Boolean) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public org.xmlpull.v1.XmlSerializer startTag(String, String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public org.xmlpull.v1.XmlSerializer text(String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public org.xmlpull.v1.XmlSerializer text(char[], int, int) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-  }
-
-}
-
-package org.xmlpull.v1.sax2 {
-
-  public class Driver implements org.xml.sax.Attributes org.xml.sax.Locator org.xml.sax.XMLReader {
-    ctor public Driver() throws org.xmlpull.v1.XmlPullParserException;
-    ctor public Driver(org.xmlpull.v1.XmlPullParser) throws org.xmlpull.v1.XmlPullParserException;
-    method public int getColumnNumber();
-    method public org.xml.sax.ContentHandler getContentHandler();
-    method public org.xml.sax.DTDHandler getDTDHandler();
-    method public org.xml.sax.EntityResolver getEntityResolver();
-    method public org.xml.sax.ErrorHandler getErrorHandler();
-    method public boolean getFeature(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public int getIndex(String, String);
-    method public int getIndex(String);
-    method public int getLength();
-    method public int getLineNumber();
-    method public String getLocalName(int);
-    method public Object getProperty(String) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public String getPublicId();
-    method public String getQName(int);
-    method public String getSystemId();
-    method public String getType(int);
-    method public String getType(String, String);
-    method public String getType(String);
-    method public String getURI(int);
-    method public String getValue(int);
-    method public String getValue(String, String);
-    method public String getValue(String);
-    method public void parse(org.xml.sax.InputSource) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parse(String) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void parseSubTree(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xml.sax.SAXException;
-    method public void setContentHandler(org.xml.sax.ContentHandler);
-    method public void setDTDHandler(org.xml.sax.DTDHandler);
-    method public void setEntityResolver(org.xml.sax.EntityResolver);
-    method public void setErrorHandler(org.xml.sax.ErrorHandler);
-    method public void setFeature(String, boolean) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method public void setProperty(String, Object) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException;
-    method protected void startElement(String, String, String) throws org.xml.sax.SAXException;
-    field protected static final String APACHE_DYNAMIC_VALIDATION_FEATURE = "http://apache.org/xml/features/validation/dynamic";
-    field protected static final String APACHE_SCHEMA_VALIDATION_FEATURE = "http://apache.org/xml/features/validation/schema";
-    field protected static final String DECLARATION_HANDLER_PROPERTY = "http://xml.org/sax/properties/declaration-handler";
-    field protected static final String LEXICAL_HANDLER_PROPERTY = "http://xml.org/sax/properties/lexical-handler";
-    field protected static final String NAMESPACES_FEATURE = "http://xml.org/sax/features/namespaces";
-    field protected static final String NAMESPACE_PREFIXES_FEATURE = "http://xml.org/sax/features/namespace-prefixes";
-    field protected static final String VALIDATION_FEATURE = "http://xml.org/sax/features/validation";
-    field protected org.xml.sax.ContentHandler contentHandler;
-    field protected org.xml.sax.ErrorHandler errorHandler;
-    field protected org.xmlpull.v1.XmlPullParser pp;
-    field protected String systemId;
-  }
-
-}
-
diff --git a/non-updatable-api/module-lib-current.txt b/non-updatable-api/module-lib-current.txt
deleted file mode 100644
index af95955..0000000
--- a/non-updatable-api/module-lib-current.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-// Signature format: 2.0
-package android.os {
-
-  public class Binder implements android.os.IBinder {
-    method public final void markVintfStability();
-  }
-
-  public interface Parcelable {
-    method public default int getStability();
-    field public static final int PARCELABLE_STABILITY_LOCAL = 0; // 0x0
-    field public static final int PARCELABLE_STABILITY_VINTF = 1; // 0x1
-  }
-
-  public class StatsServiceManager {
-    method @NonNull public android.os.StatsServiceManager.ServiceRegisterer getStatsCompanionServiceRegisterer();
-    method @NonNull public android.os.StatsServiceManager.ServiceRegisterer getStatsManagerServiceRegisterer();
-    method @NonNull public android.os.StatsServiceManager.ServiceRegisterer getStatsdServiceRegisterer();
-  }
-
-  public static class StatsServiceManager.ServiceNotFoundException extends java.lang.Exception {
-    ctor public StatsServiceManager.ServiceNotFoundException(@NonNull String);
-  }
-
-  public static final class StatsServiceManager.ServiceRegisterer {
-    method @Nullable public android.os.IBinder get();
-    method @Nullable public android.os.IBinder getOrThrow() throws android.os.StatsServiceManager.ServiceNotFoundException;
-  }
-
-}
-
-package android.util {
-
-  public final class Log {
-    method public static int logToRadioBuffer(int, @Nullable String, @Nullable String);
-  }
-
-}
-
diff --git a/non-updatable-api/module-lib-removed.txt b/non-updatable-api/module-lib-removed.txt
deleted file mode 100644
index d802177..0000000
--- a/non-updatable-api/module-lib-removed.txt
+++ /dev/null
@@ -1 +0,0 @@
-// Signature format: 2.0
diff --git a/non-updatable-api/system-current.txt b/non-updatable-api/system-current.txt
deleted file mode 100644
index 6a6914a..0000000
--- a/non-updatable-api/system-current.txt
+++ /dev/null
@@ -1,11929 +0,0 @@
-// Signature format: 2.0
-package android {
-
-  public static final class Manifest.permission {
-    field public static final String ACCESS_AMBIENT_LIGHT_STATS = "android.permission.ACCESS_AMBIENT_LIGHT_STATS";
-    field public static final String ACCESS_BROADCAST_RADIO = "android.permission.ACCESS_BROADCAST_RADIO";
-    field public static final String ACCESS_CACHE_FILESYSTEM = "android.permission.ACCESS_CACHE_FILESYSTEM";
-    field public static final String ACCESS_CONTEXT_HUB = "android.permission.ACCESS_CONTEXT_HUB";
-    field public static final String ACCESS_DRM_CERTIFICATES = "android.permission.ACCESS_DRM_CERTIFICATES";
-    field @Deprecated public static final String ACCESS_FM_RADIO = "android.permission.ACCESS_FM_RADIO";
-    field public static final String ACCESS_INSTANT_APPS = "android.permission.ACCESS_INSTANT_APPS";
-    field public static final String ACCESS_LOCUS_ID_USAGE_STATS = "android.permission.ACCESS_LOCUS_ID_USAGE_STATS";
-    field public static final String ACCESS_MOCK_LOCATION = "android.permission.ACCESS_MOCK_LOCATION";
-    field public static final String ACCESS_MTP = "android.permission.ACCESS_MTP";
-    field public static final String ACCESS_NETWORK_CONDITIONS = "android.permission.ACCESS_NETWORK_CONDITIONS";
-    field public static final String ACCESS_NOTIFICATIONS = "android.permission.ACCESS_NOTIFICATIONS";
-    field public static final String ACCESS_SHARED_LIBRARIES = "android.permission.ACCESS_SHARED_LIBRARIES";
-    field public static final String ACCESS_SHORTCUTS = "android.permission.ACCESS_SHORTCUTS";
-    field public static final String ACCESS_SURFACE_FLINGER = "android.permission.ACCESS_SURFACE_FLINGER";
-    field public static final String ACCESS_TV_DESCRAMBLER = "android.permission.ACCESS_TV_DESCRAMBLER";
-    field public static final String ACCESS_TV_TUNER = "android.permission.ACCESS_TV_TUNER";
-    field public static final String ACCESS_VIBRATOR_STATE = "android.permission.ACCESS_VIBRATOR_STATE";
-    field public static final String ACTIVITY_EMBEDDING = "android.permission.ACTIVITY_EMBEDDING";
-    field public static final String ADJUST_RUNTIME_PERMISSIONS_POLICY = "android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY";
-    field public static final String ALLOCATE_AGGRESSIVE = "android.permission.ALLOCATE_AGGRESSIVE";
-    field public static final String ALLOW_ANY_CODEC_FOR_PLAYBACK = "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK";
-    field public static final String AMBIENT_WALLPAPER = "android.permission.AMBIENT_WALLPAPER";
-    field public static final String APPROVE_INCIDENT_REPORTS = "android.permission.APPROVE_INCIDENT_REPORTS";
-    field public static final String BACKUP = "android.permission.BACKUP";
-    field public static final String BIND_ATTENTION_SERVICE = "android.permission.BIND_ATTENTION_SERVICE";
-    field public static final String BIND_AUGMENTED_AUTOFILL_SERVICE = "android.permission.BIND_AUGMENTED_AUTOFILL_SERVICE";
-    field public static final String BIND_CELL_BROADCAST_SERVICE = "android.permission.BIND_CELL_BROADCAST_SERVICE";
-    field @Deprecated public static final String BIND_CONNECTION_SERVICE = "android.permission.BIND_CONNECTION_SERVICE";
-    field public static final String BIND_CONTENT_CAPTURE_SERVICE = "android.permission.BIND_CONTENT_CAPTURE_SERVICE";
-    field public static final String BIND_CONTENT_SUGGESTIONS_SERVICE = "android.permission.BIND_CONTENT_SUGGESTIONS_SERVICE";
-    field public static final String BIND_DIRECTORY_SEARCH = "android.permission.BIND_DIRECTORY_SEARCH";
-    field public static final String BIND_EUICC_SERVICE = "android.permission.BIND_EUICC_SERVICE";
-    field public static final String BIND_EXTERNAL_STORAGE_SERVICE = "android.permission.BIND_EXTERNAL_STORAGE_SERVICE";
-    field public static final String BIND_IMS_SERVICE = "android.permission.BIND_IMS_SERVICE";
-    field public static final String BIND_KEYGUARD_APPWIDGET = "android.permission.BIND_KEYGUARD_APPWIDGET";
-    field public static final String BIND_NETWORK_RECOMMENDATION_SERVICE = "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE";
-    field public static final String BIND_NOTIFICATION_ASSISTANT_SERVICE = "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE";
-    field public static final String BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE = "android.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE";
-    field public static final String BIND_PRINT_RECOMMENDATION_SERVICE = "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE";
-    field public static final String BIND_RESOLVER_RANKER_SERVICE = "android.permission.BIND_RESOLVER_RANKER_SERVICE";
-    field public static final String BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE = "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE";
-    field public static final String BIND_SETTINGS_SUGGESTIONS_SERVICE = "android.permission.BIND_SETTINGS_SUGGESTIONS_SERVICE";
-    field public static final String BIND_SOUND_TRIGGER_DETECTION_SERVICE = "android.permission.BIND_SOUND_TRIGGER_DETECTION_SERVICE";
-    field public static final String BIND_TELEPHONY_DATA_SERVICE = "android.permission.BIND_TELEPHONY_DATA_SERVICE";
-    field public static final String BIND_TELEPHONY_NETWORK_SERVICE = "android.permission.BIND_TELEPHONY_NETWORK_SERVICE";
-    field public static final String BIND_TEXTCLASSIFIER_SERVICE = "android.permission.BIND_TEXTCLASSIFIER_SERVICE";
-    field public static final String BIND_TRUST_AGENT = "android.permission.BIND_TRUST_AGENT";
-    field public static final String BIND_TV_REMOTE_SERVICE = "android.permission.BIND_TV_REMOTE_SERVICE";
-    field public static final String BRICK = "android.permission.BRICK";
-    field public static final String BRIGHTNESS_SLIDER_USAGE = "android.permission.BRIGHTNESS_SLIDER_USAGE";
-    field @Deprecated public static final String BROADCAST_NETWORK_PRIVILEGED = "android.permission.BROADCAST_NETWORK_PRIVILEGED";
-    field public static final String CAMERA_DISABLE_TRANSMIT_LED = "android.permission.CAMERA_DISABLE_TRANSMIT_LED";
-    field public static final String CAPTURE_AUDIO_HOTWORD = "android.permission.CAPTURE_AUDIO_HOTWORD";
-    field public static final String CAPTURE_MEDIA_OUTPUT = "android.permission.CAPTURE_MEDIA_OUTPUT";
-    field public static final String CAPTURE_TV_INPUT = "android.permission.CAPTURE_TV_INPUT";
-    field public static final String CAPTURE_VOICE_COMMUNICATION_OUTPUT = "android.permission.CAPTURE_VOICE_COMMUNICATION_OUTPUT";
-    field public static final String CHANGE_APP_IDLE_STATE = "android.permission.CHANGE_APP_IDLE_STATE";
-    field public static final String CHANGE_DEVICE_IDLE_TEMP_WHITELIST = "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST";
-    field public static final String CLEAR_APP_USER_DATA = "android.permission.CLEAR_APP_USER_DATA";
-    field public static final String COMPANION_APPROVE_WIFI_CONNECTIONS = "android.permission.COMPANION_APPROVE_WIFI_CONNECTIONS";
-    field public static final String CONFIGURE_DISPLAY_BRIGHTNESS = "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS";
-    field public static final String CONFIGURE_WIFI_DISPLAY = "android.permission.CONFIGURE_WIFI_DISPLAY";
-    field @Deprecated public static final String CONNECTIVITY_INTERNAL = "android.permission.CONNECTIVITY_INTERNAL";
-    field public static final String CONNECTIVITY_USE_RESTRICTED_NETWORKS = "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS";
-    field public static final String CONTROL_DEVICE_LIGHTS = "android.permission.CONTROL_DEVICE_LIGHTS";
-    field public static final String CONTROL_DISPLAY_COLOR_TRANSFORMS = "android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS";
-    field public static final String CONTROL_DISPLAY_SATURATION = "android.permission.CONTROL_DISPLAY_SATURATION";
-    field public static final String CONTROL_INCALL_EXPERIENCE = "android.permission.CONTROL_INCALL_EXPERIENCE";
-    field public static final String CONTROL_KEYGUARD_SECURE_NOTIFICATIONS = "android.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS";
-    field public static final String CONTROL_VPN = "android.permission.CONTROL_VPN";
-    field public static final String CREATE_USERS = "android.permission.CREATE_USERS";
-    field public static final String CRYPT_KEEPER = "android.permission.CRYPT_KEEPER";
-    field public static final String DEVICE_POWER = "android.permission.DEVICE_POWER";
-    field public static final String DISPATCH_PROVISIONING_MESSAGE = "android.permission.DISPATCH_PROVISIONING_MESSAGE";
-    field public static final String ENTER_CAR_MODE_PRIORITIZED = "android.permission.ENTER_CAR_MODE_PRIORITIZED";
-    field public static final String EXEMPT_FROM_AUDIO_RECORD_RESTRICTIONS = "android.permission.EXEMPT_FROM_AUDIO_RECORD_RESTRICTIONS";
-    field public static final String FORCE_BACK = "android.permission.FORCE_BACK";
-    field public static final String FORCE_STOP_PACKAGES = "android.permission.FORCE_STOP_PACKAGES";
-    field public static final String GET_APP_OPS_STATS = "android.permission.GET_APP_OPS_STATS";
-    field public static final String GET_PROCESS_STATE_AND_OOM_SCORE = "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE";
-    field public static final String GET_RUNTIME_PERMISSIONS = "android.permission.GET_RUNTIME_PERMISSIONS";
-    field public static final String GET_TOP_ACTIVITY_INFO = "android.permission.GET_TOP_ACTIVITY_INFO";
-    field @Deprecated public static final String GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS = "android.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS";
-    field public static final String GRANT_RUNTIME_PERMISSIONS = "android.permission.GRANT_RUNTIME_PERMISSIONS";
-    field public static final String GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS = "android.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS";
-    field public static final String HANDLE_CAR_MODE_CHANGES = "android.permission.HANDLE_CAR_MODE_CHANGES";
-    field public static final String HARDWARE_TEST = "android.permission.HARDWARE_TEST";
-    field public static final String HDMI_CEC = "android.permission.HDMI_CEC";
-    field public static final String HIDE_NON_SYSTEM_OVERLAY_WINDOWS = "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS";
-    field public static final String INJECT_EVENTS = "android.permission.INJECT_EVENTS";
-    field public static final String INSTALL_DYNAMIC_SYSTEM = "android.permission.INSTALL_DYNAMIC_SYSTEM";
-    field public static final String INSTALL_GRANT_RUNTIME_PERMISSIONS = "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS";
-    field public static final String INSTALL_PACKAGE_UPDATES = "android.permission.INSTALL_PACKAGE_UPDATES";
-    field public static final String INSTALL_SELF_UPDATES = "android.permission.INSTALL_SELF_UPDATES";
-    field public static final String INTENT_FILTER_VERIFICATION_AGENT = "android.permission.INTENT_FILTER_VERIFICATION_AGENT";
-    field public static final String INTERACT_ACROSS_USERS = "android.permission.INTERACT_ACROSS_USERS";
-    field public static final String INTERACT_ACROSS_USERS_FULL = "android.permission.INTERACT_ACROSS_USERS_FULL";
-    field public static final String INTERNAL_SYSTEM_WINDOW = "android.permission.INTERNAL_SYSTEM_WINDOW";
-    field public static final String INVOKE_CARRIER_SETUP = "android.permission.INVOKE_CARRIER_SETUP";
-    field public static final String KILL_UID = "android.permission.KILL_UID";
-    field public static final String LOCAL_MAC_ADDRESS = "android.permission.LOCAL_MAC_ADDRESS";
-    field public static final String LOCK_DEVICE = "android.permission.LOCK_DEVICE";
-    field public static final String LOOP_RADIO = "android.permission.LOOP_RADIO";
-    field public static final String MANAGE_ACCESSIBILITY = "android.permission.MANAGE_ACCESSIBILITY";
-    field public static final String MANAGE_ACTIVITY_STACKS = "android.permission.MANAGE_ACTIVITY_STACKS";
-    field public static final String MANAGE_APP_OPS_RESTRICTIONS = "android.permission.MANAGE_APP_OPS_RESTRICTIONS";
-    field public static final String MANAGE_APP_PREDICTIONS = "android.permission.MANAGE_APP_PREDICTIONS";
-    field public static final String MANAGE_APP_TOKENS = "android.permission.MANAGE_APP_TOKENS";
-    field public static final String MANAGE_AUTO_FILL = "android.permission.MANAGE_AUTO_FILL";
-    field public static final String MANAGE_CARRIER_OEM_UNLOCK_STATE = "android.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE";
-    field public static final String MANAGE_CA_CERTIFICATES = "android.permission.MANAGE_CA_CERTIFICATES";
-    field public static final String MANAGE_CONTENT_CAPTURE = "android.permission.MANAGE_CONTENT_CAPTURE";
-    field public static final String MANAGE_CONTENT_SUGGESTIONS = "android.permission.MANAGE_CONTENT_SUGGESTIONS";
-    field public static final String MANAGE_DEBUGGING = "android.permission.MANAGE_DEBUGGING";
-    field public static final String MANAGE_FACTORY_RESET_PROTECTION = "android.permission.MANAGE_FACTORY_RESET_PROTECTION";
-    field public static final String MANAGE_IPSEC_TUNNELS = "android.permission.MANAGE_IPSEC_TUNNELS";
-    field public static final String MANAGE_ONE_TIME_PERMISSION_SESSIONS = "android.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS";
-    field public static final String MANAGE_ROLE_HOLDERS = "android.permission.MANAGE_ROLE_HOLDERS";
-    field public static final String MANAGE_ROLLBACKS = "android.permission.MANAGE_ROLLBACKS";
-    field public static final String MANAGE_SENSOR_PRIVACY = "android.permission.MANAGE_SENSOR_PRIVACY";
-    field public static final String MANAGE_SOUND_TRIGGER = "android.permission.MANAGE_SOUND_TRIGGER";
-    field public static final String MANAGE_SUBSCRIPTION_PLANS = "android.permission.MANAGE_SUBSCRIPTION_PLANS";
-    field public static final String MANAGE_USB = "android.permission.MANAGE_USB";
-    field public static final String MANAGE_USERS = "android.permission.MANAGE_USERS";
-    field public static final String MANAGE_USER_OEM_UNLOCK_STATE = "android.permission.MANAGE_USER_OEM_UNLOCK_STATE";
-    field public static final String MODIFY_APPWIDGET_BIND_PERMISSIONS = "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS";
-    field public static final String MODIFY_AUDIO_ROUTING = "android.permission.MODIFY_AUDIO_ROUTING";
-    field public static final String MODIFY_CELL_BROADCASTS = "android.permission.MODIFY_CELL_BROADCASTS";
-    field public static final String MODIFY_DAY_NIGHT_MODE = "android.permission.MODIFY_DAY_NIGHT_MODE";
-    field @Deprecated public static final String MODIFY_NETWORK_ACCOUNTING = "android.permission.MODIFY_NETWORK_ACCOUNTING";
-    field public static final String MODIFY_PARENTAL_CONTROLS = "android.permission.MODIFY_PARENTAL_CONTROLS";
-    field public static final String MODIFY_QUIET_MODE = "android.permission.MODIFY_QUIET_MODE";
-    field public static final String MODIFY_SETTINGS_OVERRIDEABLE_BY_RESTORE = "android.permission.MODIFY_SETTINGS_OVERRIDEABLE_BY_RESTORE";
-    field public static final String MOVE_PACKAGE = "android.permission.MOVE_PACKAGE";
-    field public static final String NETWORK_AIRPLANE_MODE = "android.permission.NETWORK_AIRPLANE_MODE";
-    field public static final String NETWORK_CARRIER_PROVISIONING = "android.permission.NETWORK_CARRIER_PROVISIONING";
-    field public static final String NETWORK_FACTORY = "android.permission.NETWORK_FACTORY";
-    field public static final String NETWORK_MANAGED_PROVISIONING = "android.permission.NETWORK_MANAGED_PROVISIONING";
-    field public static final String NETWORK_SCAN = "android.permission.NETWORK_SCAN";
-    field public static final String NETWORK_SETTINGS = "android.permission.NETWORK_SETTINGS";
-    field public static final String NETWORK_SETUP_WIZARD = "android.permission.NETWORK_SETUP_WIZARD";
-    field public static final String NETWORK_SIGNAL_STRENGTH_WAKEUP = "android.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP";
-    field public static final String NETWORK_STACK = "android.permission.NETWORK_STACK";
-    field public static final String NETWORK_STATS_PROVIDER = "android.permission.NETWORK_STATS_PROVIDER";
-    field public static final String NOTIFICATION_DURING_SETUP = "android.permission.NOTIFICATION_DURING_SETUP";
-    field public static final String NOTIFY_TV_INPUTS = "android.permission.NOTIFY_TV_INPUTS";
-    field public static final String OBSERVE_APP_USAGE = "android.permission.OBSERVE_APP_USAGE";
-    field public static final String OBSERVE_NETWORK_POLICY = "android.permission.OBSERVE_NETWORK_POLICY";
-    field public static final String OBSERVE_ROLE_HOLDERS = "android.permission.OBSERVE_ROLE_HOLDERS";
-    field public static final String OPEN_ACCESSIBILITY_DETAILS_SETTINGS = "android.permission.OPEN_ACCESSIBILITY_DETAILS_SETTINGS";
-    field public static final String OVERRIDE_WIFI_CONFIG = "android.permission.OVERRIDE_WIFI_CONFIG";
-    field public static final String PACKAGE_VERIFICATION_AGENT = "android.permission.PACKAGE_VERIFICATION_AGENT";
-    field public static final String PACKET_KEEPALIVE_OFFLOAD = "android.permission.PACKET_KEEPALIVE_OFFLOAD";
-    field public static final String PEERS_MAC_ADDRESS = "android.permission.PEERS_MAC_ADDRESS";
-    field public static final String PERFORM_CDMA_PROVISIONING = "android.permission.PERFORM_CDMA_PROVISIONING";
-    field public static final String PERFORM_SIM_ACTIVATION = "android.permission.PERFORM_SIM_ACTIVATION";
-    field public static final String POWER_SAVER = "android.permission.POWER_SAVER";
-    field public static final String PROVIDE_RESOLVER_RANKER_SERVICE = "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE";
-    field public static final String PROVIDE_TRUST_AGENT = "android.permission.PROVIDE_TRUST_AGENT";
-    field public static final String QUERY_TIME_ZONE_RULES = "android.permission.QUERY_TIME_ZONE_RULES";
-    field public static final String RADIO_SCAN_WITHOUT_LOCATION = "android.permission.RADIO_SCAN_WITHOUT_LOCATION";
-    field public static final String READ_ACTIVE_EMERGENCY_SESSION = "android.permission.READ_ACTIVE_EMERGENCY_SESSION";
-    field public static final String READ_CARRIER_APP_INFO = "android.permission.READ_CARRIER_APP_INFO";
-    field public static final String READ_CELL_BROADCASTS = "android.permission.READ_CELL_BROADCASTS";
-    field public static final String READ_CONTENT_RATING_SYSTEMS = "android.permission.READ_CONTENT_RATING_SYSTEMS";
-    field public static final String READ_DEVICE_CONFIG = "android.permission.READ_DEVICE_CONFIG";
-    field public static final String READ_DREAM_STATE = "android.permission.READ_DREAM_STATE";
-    field public static final String READ_INSTALL_SESSIONS = "android.permission.READ_INSTALL_SESSIONS";
-    field public static final String READ_NETWORK_USAGE_HISTORY = "android.permission.READ_NETWORK_USAGE_HISTORY";
-    field public static final String READ_OEM_UNLOCK_STATE = "android.permission.READ_OEM_UNLOCK_STATE";
-    field public static final String READ_PRINT_SERVICES = "android.permission.READ_PRINT_SERVICES";
-    field public static final String READ_PRINT_SERVICE_RECOMMENDATIONS = "android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS";
-    field public static final String READ_PRIVILEGED_PHONE_STATE = "android.permission.READ_PRIVILEGED_PHONE_STATE";
-    field public static final String READ_RUNTIME_PROFILES = "android.permission.READ_RUNTIME_PROFILES";
-    field public static final String READ_SEARCH_INDEXABLES = "android.permission.READ_SEARCH_INDEXABLES";
-    field public static final String READ_SYSTEM_UPDATE_INFO = "android.permission.READ_SYSTEM_UPDATE_INFO";
-    field public static final String READ_WALLPAPER_INTERNAL = "android.permission.READ_WALLPAPER_INTERNAL";
-    field public static final String READ_WIFI_CREDENTIAL = "android.permission.READ_WIFI_CREDENTIAL";
-    field public static final String REAL_GET_TASKS = "android.permission.REAL_GET_TASKS";
-    field public static final String RECEIVE_DATA_ACTIVITY_CHANGE = "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE";
-    field public static final String RECEIVE_DEVICE_CUSTOMIZATION_READY = "android.permission.RECEIVE_DEVICE_CUSTOMIZATION_READY";
-    field public static final String RECEIVE_EMERGENCY_BROADCAST = "android.permission.RECEIVE_EMERGENCY_BROADCAST";
-    field public static final String RECEIVE_WIFI_CREDENTIAL_CHANGE = "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE";
-    field public static final String RECOVERY = "android.permission.RECOVERY";
-    field public static final String RECOVER_KEYSTORE = "android.permission.RECOVER_KEYSTORE";
-    field public static final String REGISTER_CALL_PROVIDER = "android.permission.REGISTER_CALL_PROVIDER";
-    field public static final String REGISTER_CONNECTION_MANAGER = "android.permission.REGISTER_CONNECTION_MANAGER";
-    field public static final String REGISTER_SIM_SUBSCRIPTION = "android.permission.REGISTER_SIM_SUBSCRIPTION";
-    field public static final String REGISTER_STATS_PULL_ATOM = "android.permission.REGISTER_STATS_PULL_ATOM";
-    field public static final String REMOTE_DISPLAY_PROVIDER = "android.permission.REMOTE_DISPLAY_PROVIDER";
-    field public static final String REMOVE_DRM_CERTIFICATES = "android.permission.REMOVE_DRM_CERTIFICATES";
-    field public static final String REMOVE_TASKS = "android.permission.REMOVE_TASKS";
-    field public static final String REQUEST_NETWORK_SCORES = "android.permission.REQUEST_NETWORK_SCORES";
-    field public static final String REQUEST_NOTIFICATION_ASSISTANT_SERVICE = "android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE";
-    field public static final String RESET_PASSWORD = "android.permission.RESET_PASSWORD";
-    field public static final String RESTORE_RUNTIME_PERMISSIONS = "android.permission.RESTORE_RUNTIME_PERMISSIONS";
-    field public static final String RESTRICTED_VR_ACCESS = "android.permission.RESTRICTED_VR_ACCESS";
-    field public static final String RETRIEVE_WINDOW_CONTENT = "android.permission.RETRIEVE_WINDOW_CONTENT";
-    field public static final String REVIEW_ACCESSIBILITY_SERVICES = "android.permission.REVIEW_ACCESSIBILITY_SERVICES";
-    field public static final String REVOKE_RUNTIME_PERMISSIONS = "android.permission.REVOKE_RUNTIME_PERMISSIONS";
-    field public static final String SCORE_NETWORKS = "android.permission.SCORE_NETWORKS";
-    field public static final String SECURE_ELEMENT_PRIVILEGED_OPERATION = "android.permission.SECURE_ELEMENT_PRIVILEGED_OPERATION";
-    field public static final String SEND_DEVICE_CUSTOMIZATION_READY = "android.permission.SEND_DEVICE_CUSTOMIZATION_READY";
-    field public static final String SEND_SHOW_SUSPENDED_APP_DETAILS = "android.permission.SEND_SHOW_SUSPENDED_APP_DETAILS";
-    field public static final String SEND_SMS_NO_CONFIRMATION = "android.permission.SEND_SMS_NO_CONFIRMATION";
-    field public static final String SERIAL_PORT = "android.permission.SERIAL_PORT";
-    field public static final String SET_ACTIVITY_WATCHER = "android.permission.SET_ACTIVITY_WATCHER";
-    field public static final String SET_HARMFUL_APP_WARNINGS = "android.permission.SET_HARMFUL_APP_WARNINGS";
-    field public static final String SET_MEDIA_KEY_LISTENER = "android.permission.SET_MEDIA_KEY_LISTENER";
-    field public static final String SET_ORIENTATION = "android.permission.SET_ORIENTATION";
-    field public static final String SET_POINTER_SPEED = "android.permission.SET_POINTER_SPEED";
-    field public static final String SET_SCREEN_COMPATIBILITY = "android.permission.SET_SCREEN_COMPATIBILITY";
-    field public static final String SET_VOLUME_KEY_LONG_PRESS_LISTENER = "android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER";
-    field public static final String SET_WALLPAPER_COMPONENT = "android.permission.SET_WALLPAPER_COMPONENT";
-    field public static final String SHOW_KEYGUARD_MESSAGE = "android.permission.SHOW_KEYGUARD_MESSAGE";
-    field public static final String SHUTDOWN = "android.permission.SHUTDOWN";
-    field public static final String STOP_APP_SWITCHES = "android.permission.STOP_APP_SWITCHES";
-    field public static final String SUBSTITUTE_NOTIFICATION_APP_NAME = "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME";
-    field public static final String SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON = "android.permission.SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON";
-    field public static final String SUSPEND_APPS = "android.permission.SUSPEND_APPS";
-    field public static final String SYSTEM_CAMERA = "android.permission.SYSTEM_CAMERA";
-    field public static final String TETHER_PRIVILEGED = "android.permission.TETHER_PRIVILEGED";
-    field public static final String TV_INPUT_HARDWARE = "android.permission.TV_INPUT_HARDWARE";
-    field public static final String TV_VIRTUAL_REMOTE_CONTROLLER = "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER";
-    field public static final String UNLIMITED_SHORTCUTS_API_CALLS = "android.permission.UNLIMITED_SHORTCUTS_API_CALLS";
-    field public static final String UPDATE_APP_OPS_STATS = "android.permission.UPDATE_APP_OPS_STATS";
-    field public static final String UPDATE_LOCK = "android.permission.UPDATE_LOCK";
-    field public static final String UPDATE_TIME_ZONE_RULES = "android.permission.UPDATE_TIME_ZONE_RULES";
-    field public static final String UPGRADE_RUNTIME_PERMISSIONS = "android.permission.UPGRADE_RUNTIME_PERMISSIONS";
-    field public static final String USER_ACTIVITY = "android.permission.USER_ACTIVITY";
-    field public static final String USE_RESERVED_DISK = "android.permission.USE_RESERVED_DISK";
-    field public static final String WHITELIST_AUTO_REVOKE_PERMISSIONS = "android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS";
-    field public static final String WHITELIST_RESTRICTED_PERMISSIONS = "android.permission.WHITELIST_RESTRICTED_PERMISSIONS";
-    field public static final String WIFI_SET_DEVICE_MOBILITY_STATE = "android.permission.WIFI_SET_DEVICE_MOBILITY_STATE";
-    field public static final String WIFI_UPDATE_USABILITY_STATS_SCORE = "android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE";
-    field public static final String WRITE_DEVICE_CONFIG = "android.permission.WRITE_DEVICE_CONFIG";
-    field public static final String WRITE_DREAM_STATE = "android.permission.WRITE_DREAM_STATE";
-    field public static final String WRITE_EMBEDDED_SUBSCRIPTIONS = "android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS";
-    field @Deprecated public static final String WRITE_MEDIA_STORAGE = "android.permission.WRITE_MEDIA_STORAGE";
-    field public static final String WRITE_OBB = "android.permission.WRITE_OBB";
-  }
-
-  public static final class Manifest.permission_group {
-    field public static final String UNDEFINED = "android.permission-group.UNDEFINED";
-  }
-
-  public static final class R.array {
-    field public static final int config_keySystemUuidMapping = 17235973; // 0x1070005
-  }
-
-  public static final class R.attr {
-    field public static final int allowClearUserDataOnFailedRestore = 16844288; // 0x1010600
-    field public static final int isVrOnly = 16844152; // 0x1010578
-    field public static final int minExtensionVersion = 16844305; // 0x1010611
-    field public static final int requiredSystemPropertyName = 16844133; // 0x1010565
-    field public static final int requiredSystemPropertyValue = 16844134; // 0x1010566
-    field public static final int sdkVersion = 16844304; // 0x1010610
-    field public static final int supportsAmbientMode = 16844173; // 0x101058d
-    field public static final int userRestriction = 16844164; // 0x1010584
-  }
-
-  public static final class R.bool {
-    field public static final int config_sendPackageName = 17891328; // 0x1110000
-    field public static final int config_showDefaultAssistant = 17891329; // 0x1110001
-    field public static final int config_showDefaultEmergency = 17891330; // 0x1110002
-    field public static final int config_showDefaultHome = 17891331; // 0x1110003
-  }
-
-  public static final class R.color {
-    field public static final int system_notification_accent_color = 17170460; // 0x106001c
-  }
-
-  public static final class R.dimen {
-    field public static final int config_restrictedIconSize = 17104903; // 0x1050007
-  }
-
-  public static final class R.drawable {
-    field public static final int ic_info = 17301684; // 0x10800b4
-  }
-
-  public static final class R.raw {
-    field public static final int loaderror = 17825792; // 0x1100000
-    field public static final int nodomain = 17825793; // 0x1100001
-  }
-
-  public static final class R.string {
-    field public static final int config_defaultAssistant = 17039393; // 0x1040021
-    field public static final int config_defaultBrowser = 17039394; // 0x1040022
-    field public static final int config_defaultCallRedirection = 17039397; // 0x1040025
-    field public static final int config_defaultCallScreening = 17039398; // 0x1040026
-    field public static final int config_defaultDialer = 17039395; // 0x1040023
-    field public static final int config_defaultSms = 17039396; // 0x1040024
-    field public static final int config_feedbackIntentExtraKey = 17039391; // 0x104001f
-    field public static final int config_feedbackIntentNameKey = 17039392; // 0x1040020
-    field public static final int config_helpIntentExtraKey = 17039389; // 0x104001d
-    field public static final int config_helpIntentNameKey = 17039390; // 0x104001e
-    field public static final int config_helpPackageNameKey = 17039387; // 0x104001b
-    field public static final int config_helpPackageNameValue = 17039388; // 0x104001c
-    field public static final int config_systemGallery = 17039399; // 0x1040027
-  }
-
-  public static final class R.style {
-    field public static final int Theme_DeviceDefault_DocumentsUI = 16974562; // 0x10302e2
-    field public static final int Theme_Leanback_FormWizard = 16974544; // 0x10302d0
-  }
-
-}
-
-package android.accounts {
-
-  public class AccountManager {
-    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public android.accounts.AccountManagerFuture<android.os.Bundle> finishSessionAsUser(android.os.Bundle, android.app.Activity, android.os.UserHandle, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
-  }
-
-}
-
-package android.app {
-
-  public class Activity extends android.view.ContextThemeWrapper implements android.content.ComponentCallbacks2 android.view.KeyEvent.Callback android.view.LayoutInflater.Factory2 android.view.View.OnCreateContextMenuListener android.view.Window.Callback {
-    method public void convertFromTranslucent();
-    method public boolean convertToTranslucent(android.app.Activity.TranslucentConversionListener, android.app.ActivityOptions);
-    method @Deprecated public boolean isBackgroundVisibleBehind();
-    method @Deprecated public void onBackgroundVisibleBehindChanged(boolean);
-  }
-
-  public static interface Activity.TranslucentConversionListener {
-    method public void onTranslucentConversionComplete(boolean);
-  }
-
-  public class ActivityManager {
-    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public void addOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener, int);
-    method @RequiresPermission(android.Manifest.permission.FORCE_STOP_PACKAGES) public void forceStopPackage(String);
-    method @RequiresPermission(anyOf={"android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL"}) public static int getCurrentUser();
-    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int getPackageImportance(String);
-    method @NonNull public java.util.Collection<java.util.Locale> getSupportedLocales();
-    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int getUidImportance(int);
-    method @RequiresPermission(android.Manifest.permission.FORCE_STOP_PACKAGES) public void killProcessesWhenImperceptible(@NonNull int[], @NonNull String);
-    method @RequiresPermission(android.Manifest.permission.KILL_UID) public void killUid(int, String);
-    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public void removeOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener);
-    method public void setDeviceLocales(@NonNull android.os.LocaleList);
-    method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public static void setPersistentVrThread(int);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean switchUser(@NonNull android.os.UserHandle);
-  }
-
-  public static interface ActivityManager.OnUidImportanceListener {
-    method public void onUidImportance(int, int);
-  }
-
-  public class AlarmManager {
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void set(int, long, long, long, android.app.PendingIntent, android.os.WorkSource);
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void set(int, long, long, long, android.app.AlarmManager.OnAlarmListener, android.os.Handler, android.os.WorkSource);
-  }
-
-  public class AppOpsManager {
-    method @Nullable @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public android.app.RuntimeAppOpAccessMessage collectRuntimeAppOpAccessMessage();
-    method @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public void getHistoricalOps(@NonNull android.app.AppOpsManager.HistoricalOpsRequest, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.AppOpsManager.HistoricalOps>);
-    method public static String[] getOpStrs();
-    method @NonNull @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public java.util.List<android.app.AppOpsManager.PackageOps> getOpsForPackage(int, @NonNull String, @Nullable java.lang.String...);
-    method @NonNull @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public java.util.List<android.app.AppOpsManager.PackageOps> getPackagesForOps(@Nullable String[]);
-    method public static int opToDefaultMode(@NonNull String);
-    method @Nullable public static String opToPermission(@NonNull String);
-    method @RequiresPermission("android.permission.MANAGE_APP_OPS_MODES") public void setMode(@NonNull String, int, @Nullable String, int);
-    method @RequiresPermission("android.permission.MANAGE_APP_OPS_MODES") public void setUidMode(@NonNull String, int, int);
-    field public static final String OPSTR_ACCEPT_HANDOVER = "android:accept_handover";
-    field public static final String OPSTR_ACCESS_ACCESSIBILITY = "android:access_accessibility";
-    field public static final String OPSTR_ACCESS_NOTIFICATIONS = "android:access_notifications";
-    field public static final String OPSTR_ACTIVATE_VPN = "android:activate_vpn";
-    field public static final String OPSTR_ASSIST_SCREENSHOT = "android:assist_screenshot";
-    field public static final String OPSTR_ASSIST_STRUCTURE = "android:assist_structure";
-    field public static final String OPSTR_AUDIO_ACCESSIBILITY_VOLUME = "android:audio_accessibility_volume";
-    field public static final String OPSTR_AUDIO_ALARM_VOLUME = "android:audio_alarm_volume";
-    field public static final String OPSTR_AUDIO_BLUETOOTH_VOLUME = "android:audio_bluetooth_volume";
-    field public static final String OPSTR_AUDIO_MASTER_VOLUME = "android:audio_master_volume";
-    field public static final String OPSTR_AUDIO_MEDIA_VOLUME = "android:audio_media_volume";
-    field public static final String OPSTR_AUDIO_NOTIFICATION_VOLUME = "android:audio_notification_volume";
-    field public static final String OPSTR_AUDIO_RING_VOLUME = "android:audio_ring_volume";
-    field public static final String OPSTR_AUDIO_VOICE_VOLUME = "android:audio_voice_volume";
-    field public static final String OPSTR_AUTO_REVOKE_MANAGED_BY_INSTALLER = "android:auto_revoke_managed_by_installer";
-    field public static final String OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED = "android:auto_revoke_permissions_if_unused";
-    field public static final String OPSTR_BIND_ACCESSIBILITY_SERVICE = "android:bind_accessibility_service";
-    field public static final String OPSTR_CHANGE_WIFI_STATE = "android:change_wifi_state";
-    field public static final String OPSTR_GET_ACCOUNTS = "android:get_accounts";
-    field public static final String OPSTR_GPS = "android:gps";
-    field public static final String OPSTR_INSTANT_APP_START_FOREGROUND = "android:instant_app_start_foreground";
-    field public static final String OPSTR_INTERACT_ACROSS_PROFILES = "android:interact_across_profiles";
-    field public static final String OPSTR_LEGACY_STORAGE = "android:legacy_storage";
-    field public static final String OPSTR_LOADER_USAGE_STATS = "android:loader_usage_stats";
-    field public static final String OPSTR_MANAGE_EXTERNAL_STORAGE = "android:manage_external_storage";
-    field public static final String OPSTR_MANAGE_IPSEC_TUNNELS = "android:manage_ipsec_tunnels";
-    field public static final String OPSTR_MUTE_MICROPHONE = "android:mute_microphone";
-    field public static final String OPSTR_NEIGHBORING_CELLS = "android:neighboring_cells";
-    field public static final String OPSTR_PLAY_AUDIO = "android:play_audio";
-    field public static final String OPSTR_POST_NOTIFICATION = "android:post_notification";
-    field public static final String OPSTR_PROJECT_MEDIA = "android:project_media";
-    field public static final String OPSTR_READ_CLIPBOARD = "android:read_clipboard";
-    field public static final String OPSTR_READ_ICC_SMS = "android:read_icc_sms";
-    field public static final String OPSTR_READ_MEDIA_AUDIO = "android:read_media_audio";
-    field public static final String OPSTR_READ_MEDIA_IMAGES = "android:read_media_images";
-    field public static final String OPSTR_READ_MEDIA_VIDEO = "android:read_media_video";
-    field public static final String OPSTR_RECEIVE_EMERGENCY_BROADCAST = "android:receive_emergency_broadcast";
-    field public static final String OPSTR_REQUEST_DELETE_PACKAGES = "android:request_delete_packages";
-    field public static final String OPSTR_REQUEST_INSTALL_PACKAGES = "android:request_install_packages";
-    field public static final String OPSTR_RUN_ANY_IN_BACKGROUND = "android:run_any_in_background";
-    field public static final String OPSTR_RUN_IN_BACKGROUND = "android:run_in_background";
-    field public static final String OPSTR_START_FOREGROUND = "android:start_foreground";
-    field public static final String OPSTR_TAKE_AUDIO_FOCUS = "android:take_audio_focus";
-    field public static final String OPSTR_TAKE_MEDIA_BUTTONS = "android:take_media_buttons";
-    field public static final String OPSTR_TOAST_WINDOW = "android:toast_window";
-    field public static final String OPSTR_TURN_SCREEN_ON = "android:turn_screen_on";
-    field public static final String OPSTR_VIBRATE = "android:vibrate";
-    field public static final String OPSTR_WAKE_LOCK = "android:wake_lock";
-    field public static final String OPSTR_WIFI_SCAN = "android:wifi_scan";
-    field public static final String OPSTR_WRITE_CLIPBOARD = "android:write_clipboard";
-    field public static final String OPSTR_WRITE_ICC_SMS = "android:write_icc_sms";
-    field public static final String OPSTR_WRITE_MEDIA_AUDIO = "android:write_media_audio";
-    field public static final String OPSTR_WRITE_MEDIA_IMAGES = "android:write_media_images";
-    field public static final String OPSTR_WRITE_MEDIA_VIDEO = "android:write_media_video";
-    field public static final String OPSTR_WRITE_SMS = "android:write_sms";
-    field public static final String OPSTR_WRITE_WALLPAPER = "android:write_wallpaper";
-    field public static final int OP_FLAGS_ALL = 31; // 0x1f
-    field public static final int OP_FLAGS_ALL_TRUSTED = 13; // 0xd
-    field public static final int OP_FLAG_SELF = 1; // 0x1
-    field public static final int OP_FLAG_TRUSTED_PROXIED = 8; // 0x8
-    field public static final int OP_FLAG_TRUSTED_PROXY = 2; // 0x2
-    field public static final int OP_FLAG_UNTRUSTED_PROXIED = 16; // 0x10
-    field public static final int OP_FLAG_UNTRUSTED_PROXY = 4; // 0x4
-    field public static final int UID_STATE_BACKGROUND = 600; // 0x258
-    field public static final int UID_STATE_CACHED = 700; // 0x2bc
-    field public static final int UID_STATE_FOREGROUND = 500; // 0x1f4
-    field public static final int UID_STATE_FOREGROUND_SERVICE = 400; // 0x190
-    field @Deprecated public static final int UID_STATE_FOREGROUND_SERVICE_LOCATION = 300; // 0x12c
-    field public static final int UID_STATE_PERSISTENT = 100; // 0x64
-    field public static final int UID_STATE_TOP = 200; // 0xc8
-  }
-
-  public static final class AppOpsManager.AttributedHistoricalOps implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.app.AppOpsManager.HistoricalOp getOp(@NonNull String);
-    method @NonNull public android.app.AppOpsManager.HistoricalOp getOpAt(@IntRange(from=0) int);
-    method @IntRange(from=0) public int getOpCount();
-    method @Nullable public String getTag();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.AttributedHistoricalOps> CREATOR;
-  }
-
-  public static final class AppOpsManager.AttributedOpEntry implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getLastAccessBackgroundTime(int);
-    method public long getLastAccessForegroundTime(int);
-    method public long getLastAccessTime(int);
-    method public long getLastAccessTime(int, int, int);
-    method public long getLastBackgroundDuration(int);
-    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastBackgroundProxyInfo(int);
-    method public long getLastDuration(int);
-    method public long getLastDuration(int, int, int);
-    method public long getLastForegroundDuration(int);
-    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastForegroundProxyInfo(int);
-    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastProxyInfo(int);
-    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastProxyInfo(int, int, int);
-    method public long getLastRejectBackgroundTime(int);
-    method public long getLastRejectForegroundTime(int);
-    method public long getLastRejectTime(int);
-    method public long getLastRejectTime(int, int, int);
-    method public boolean isRunning();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.AttributedOpEntry> CREATOR;
-  }
-
-  public static final class AppOpsManager.HistoricalOp implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getAccessCount(int, int, int);
-    method public long getAccessDuration(int, int, int);
-    method public long getBackgroundAccessCount(int);
-    method public long getBackgroundAccessDuration(int);
-    method public long getBackgroundRejectCount(int);
-    method public long getForegroundAccessCount(int);
-    method public long getForegroundAccessDuration(int);
-    method public long getForegroundRejectCount(int);
-    method @NonNull public String getOpName();
-    method public long getRejectCount(int, int, int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.HistoricalOp> CREATOR;
-  }
-
-  public static final class AppOpsManager.HistoricalOps implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getBeginTimeMillis();
-    method public long getEndTimeMillis();
-    method @IntRange(from=0) public int getUidCount();
-    method @Nullable public android.app.AppOpsManager.HistoricalUidOps getUidOps(int);
-    method @NonNull public android.app.AppOpsManager.HistoricalUidOps getUidOpsAt(@IntRange(from=0) int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.HistoricalOps> CREATOR;
-  }
-
-  public static final class AppOpsManager.HistoricalOpsRequest {
-  }
-
-  public static final class AppOpsManager.HistoricalOpsRequest.Builder {
-    ctor public AppOpsManager.HistoricalOpsRequest.Builder(long, long);
-    method @NonNull public android.app.AppOpsManager.HistoricalOpsRequest build();
-    method @NonNull public android.app.AppOpsManager.HistoricalOpsRequest.Builder setAttributionTag(@Nullable String);
-    method @NonNull public android.app.AppOpsManager.HistoricalOpsRequest.Builder setFlags(int);
-    method @NonNull public android.app.AppOpsManager.HistoricalOpsRequest.Builder setOpNames(@Nullable java.util.List<java.lang.String>);
-    method @NonNull public android.app.AppOpsManager.HistoricalOpsRequest.Builder setPackageName(@Nullable String);
-    method @NonNull public android.app.AppOpsManager.HistoricalOpsRequest.Builder setUid(int);
-  }
-
-  public static final class AppOpsManager.HistoricalPackageOps implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.app.AppOpsManager.AttributedHistoricalOps getAttributedOps(@NonNull String);
-    method @NonNull public android.app.AppOpsManager.AttributedHistoricalOps getAttributedOpsAt(@IntRange(from=0) int);
-    method @IntRange(from=0) public int getAttributedOpsCount();
-    method @Nullable public android.app.AppOpsManager.HistoricalOp getOp(@NonNull String);
-    method @NonNull public android.app.AppOpsManager.HistoricalOp getOpAt(@IntRange(from=0) int);
-    method @IntRange(from=0) public int getOpCount();
-    method @NonNull public String getPackageName();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.HistoricalPackageOps> CREATOR;
-  }
-
-  public static final class AppOpsManager.HistoricalUidOps implements android.os.Parcelable {
-    method public int describeContents();
-    method @IntRange(from=0) public int getPackageCount();
-    method @Nullable public android.app.AppOpsManager.HistoricalPackageOps getPackageOps(@NonNull String);
-    method @NonNull public android.app.AppOpsManager.HistoricalPackageOps getPackageOpsAt(@IntRange(from=0) int);
-    method public int getUid();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.HistoricalUidOps> CREATOR;
-  }
-
-  public static final class AppOpsManager.OpEntry implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public java.util.Map<java.lang.String,android.app.AppOpsManager.AttributedOpEntry> getAttributedOpEntries();
-    method @Deprecated public long getDuration();
-    method public long getLastAccessBackgroundTime(int);
-    method public long getLastAccessForegroundTime(int);
-    method public long getLastAccessTime(int);
-    method public long getLastAccessTime(int, int, int);
-    method public long getLastBackgroundDuration(int);
-    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastBackgroundProxyInfo(int);
-    method public long getLastDuration(int);
-    method public long getLastDuration(int, int, int);
-    method public long getLastForegroundDuration(int);
-    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastForegroundProxyInfo(int);
-    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastProxyInfo(int);
-    method @Nullable public android.app.AppOpsManager.OpEventProxyInfo getLastProxyInfo(int, int, int);
-    method public long getLastRejectBackgroundTime(int);
-    method public long getLastRejectForegroundTime(int);
-    method public long getLastRejectTime(int);
-    method public long getLastRejectTime(int, int, int);
-    method public int getMode();
-    method @NonNull public String getOpStr();
-    method @Deprecated @Nullable public String getProxyPackageName();
-    method @Deprecated @Nullable public String getProxyPackageName(int, int);
-    method @Deprecated public int getProxyUid();
-    method @Deprecated public int getProxyUid(int, int);
-    method public boolean isRunning();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.OpEntry> CREATOR;
-  }
-
-  public static final class AppOpsManager.OpEventProxyInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getAttributionTag();
-    method @Nullable public String getPackageName();
-    method @IntRange(from=0) public int getUid();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.OpEventProxyInfo> CREATOR;
-  }
-
-  public static final class AppOpsManager.PackageOps implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public java.util.List<android.app.AppOpsManager.OpEntry> getOps();
-    method @NonNull public String getPackageName();
-    method public int getUid();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.PackageOps> CREATOR;
-  }
-
-  public class BroadcastOptions {
-    method public static android.app.BroadcastOptions makeBasic();
-    method @RequiresPermission("android.permission.START_ACTIVITIES_FROM_BACKGROUND") public void setBackgroundActivityStartsAllowed(boolean);
-    method public void setDontSendToRestrictedApps(boolean);
-    method @RequiresPermission(android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST) public void setTemporaryAppWhitelistDuration(long);
-    method public android.os.Bundle toBundle();
-  }
-
-  public class DownloadManager {
-    method @RequiresPermission(android.Manifest.permission.WRITE_MEDIA_STORAGE) public void onMediaStoreDownloadsDeleted(@NonNull android.util.LongSparseArray<java.lang.String>);
-    field public static final String ACTION_DOWNLOAD_COMPLETED = "android.intent.action.DOWNLOAD_COMPLETED";
-  }
-
-  public abstract class InstantAppResolverService extends android.app.Service {
-    ctor public InstantAppResolverService();
-    method public final void attachBaseContext(android.content.Context);
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method @Deprecated public void onGetInstantAppIntentFilter(@Nullable int[], @NonNull String, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback);
-    method @Deprecated public void onGetInstantAppIntentFilter(@NonNull android.content.Intent, @Nullable int[], @NonNull String, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback);
-    method @Deprecated public void onGetInstantAppIntentFilter(@NonNull android.content.Intent, @Nullable int[], @NonNull android.os.UserHandle, @NonNull String, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback);
-    method @MainThread public void onGetInstantAppIntentFilter(@NonNull android.content.pm.InstantAppRequestInfo, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback);
-    method @Deprecated public void onGetInstantAppResolveInfo(@Nullable int[], @NonNull String, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback);
-    method @Deprecated public void onGetInstantAppResolveInfo(@NonNull android.content.Intent, @Nullable int[], @NonNull String, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback);
-    method @Deprecated public void onGetInstantAppResolveInfo(@NonNull android.content.Intent, @Nullable int[], @NonNull android.os.UserHandle, @NonNull String, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback);
-    method @MainThread public void onGetInstantAppResolveInfo(@NonNull android.content.pm.InstantAppRequestInfo, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback);
-  }
-
-  public static final class InstantAppResolverService.InstantAppResolutionCallback {
-    method public void onInstantAppResolveInfo(java.util.List<android.content.pm.InstantAppResolveInfo>);
-  }
-
-  public class KeyguardManager {
-    method public android.content.Intent createConfirmFactoryResetCredentialIntent(CharSequence, CharSequence, CharSequence);
-    method @RequiresPermission("android.permission.SET_INITIAL_LOCK") public int getMinLockLength(boolean, int);
-    method @RequiresPermission(android.Manifest.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS) public boolean getPrivateNotificationsAllowed();
-    method @RequiresPermission("android.permission.SET_INITIAL_LOCK") public boolean isValidLockPasswordComplexity(int, @NonNull byte[], int);
-    method @RequiresPermission(android.Manifest.permission.SHOW_KEYGUARD_MESSAGE) public void requestDismissKeyguard(@NonNull android.app.Activity, @Nullable CharSequence, @Nullable android.app.KeyguardManager.KeyguardDismissCallback);
-    method @RequiresPermission("android.permission.SET_INITIAL_LOCK") public boolean setLock(int, @NonNull byte[], int);
-    method @RequiresPermission(android.Manifest.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS) public void setPrivateNotificationsAllowed(boolean);
-  }
-
-  public class Notification implements android.os.Parcelable {
-    field public static final String CATEGORY_CAR_EMERGENCY = "car_emergency";
-    field public static final String CATEGORY_CAR_INFORMATION = "car_information";
-    field public static final String CATEGORY_CAR_WARNING = "car_warning";
-    field @RequiresPermission(android.Manifest.permission.NOTIFICATION_DURING_SETUP) public static final String EXTRA_ALLOW_DURING_SETUP = "android.allowDuringSetup";
-    field @RequiresPermission(android.Manifest.permission.SUBSTITUTE_NOTIFICATION_APP_NAME) public static final String EXTRA_SUBSTITUTE_APP_NAME = "android.substName";
-    field public static final int FLAG_AUTOGROUP_SUMMARY = 1024; // 0x400
-  }
-
-  public static final class Notification.TvExtender implements android.app.Notification.Extender {
-    ctor public Notification.TvExtender();
-    ctor public Notification.TvExtender(android.app.Notification);
-    method public android.app.Notification.Builder extend(android.app.Notification.Builder);
-    method public String getChannelId();
-    method public android.app.PendingIntent getContentIntent();
-    method public android.app.PendingIntent getDeleteIntent();
-    method public boolean getSuppressShowOverApps();
-    method public boolean isAvailableOnTv();
-    method public android.app.Notification.TvExtender setChannel(String);
-    method public android.app.Notification.TvExtender setChannelId(String);
-    method public android.app.Notification.TvExtender setContentIntent(android.app.PendingIntent);
-    method public android.app.Notification.TvExtender setDeleteIntent(android.app.PendingIntent);
-    method public android.app.Notification.TvExtender setSuppressShowOverApps(boolean);
-  }
-
-  public final class NotificationChannel implements android.os.Parcelable {
-    method public int getUserLockedFields();
-    method public boolean isDeleted();
-    method public void populateFromXml(org.xmlpull.v1.XmlPullParser);
-    method public void setBlockable(boolean);
-    method public org.json.JSONObject toJson() throws org.json.JSONException;
-    method public void writeXml(org.xmlpull.v1.XmlSerializer) throws java.io.IOException;
-    field public static final int USER_LOCKED_SOUND = 32; // 0x20
-  }
-
-  public final class NotificationChannelGroup implements android.os.Parcelable {
-    method public org.json.JSONObject toJson() throws org.json.JSONException;
-  }
-
-  public class NotificationManager {
-    method @NonNull public java.util.List<java.lang.String> getAllowedAssistantAdjustments();
-    method @Nullable public android.content.ComponentName getAllowedNotificationAssistant();
-    method public boolean isNotificationAssistantAccessGranted(@NonNull android.content.ComponentName);
-    method public void setNotificationAssistantAccessGranted(@Nullable android.content.ComponentName, boolean);
-  }
-
-  public final class RuntimeAppOpAccessMessage implements android.os.Parcelable {
-    ctor public RuntimeAppOpAccessMessage(@IntRange(from=0L) int, @IntRange(from=0L) int, @NonNull String, @Nullable String, @NonNull String, int);
-    method public int describeContents();
-    method @Nullable public String getAttributionTag();
-    method @NonNull public String getMessage();
-    method @NonNull public String getOp();
-    method @NonNull public String getPackageName();
-    method public int getSamplingStrategy();
-    method @IntRange(from=0L) public int getUid();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.RuntimeAppOpAccessMessage> CREATOR;
-  }
-
-  public class SearchManager implements android.content.DialogInterface.OnCancelListener android.content.DialogInterface.OnDismissListener {
-    method public void launchAssist(@Nullable android.os.Bundle);
-  }
-
-  public class StatusBarManager {
-    method @NonNull @RequiresPermission(android.Manifest.permission.STATUS_BAR) public android.app.StatusBarManager.DisableInfo getDisableInfo();
-    method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void setDisabledForSetup(boolean);
-  }
-
-  public static final class StatusBarManager.DisableInfo {
-    method public boolean areAllComponentsEnabled();
-    method public boolean isNavigateToHomeDisabled();
-    method public boolean isNotificationPeekingDisabled();
-    method public boolean isRecentsDisabled();
-    method public boolean isSearchDisabled();
-    method public boolean isStatusBarExpansionDisabled();
-  }
-
-  public final class SystemServiceRegistry {
-    method public static <TServiceClass> void registerContextAwareService(@NonNull String, @NonNull Class<TServiceClass>, @NonNull android.app.SystemServiceRegistry.ContextAwareServiceProducerWithBinder<TServiceClass>);
-    method public static <TServiceClass> void registerContextAwareService(@NonNull String, @NonNull Class<TServiceClass>, @NonNull android.app.SystemServiceRegistry.ContextAwareServiceProducerWithoutBinder<TServiceClass>);
-    method public static <TServiceClass> void registerStaticService(@NonNull String, @NonNull Class<TServiceClass>, @NonNull android.app.SystemServiceRegistry.StaticServiceProducerWithBinder<TServiceClass>);
-    method public static <TServiceClass> void registerStaticService(@NonNull String, @NonNull Class<TServiceClass>, @NonNull android.app.SystemServiceRegistry.StaticServiceProducerWithoutBinder<TServiceClass>);
-  }
-
-  public static interface SystemServiceRegistry.ContextAwareServiceProducerWithBinder<TServiceClass> {
-    method @NonNull public TServiceClass createService(@NonNull android.content.Context, @NonNull android.os.IBinder);
-  }
-
-  public static interface SystemServiceRegistry.ContextAwareServiceProducerWithoutBinder<TServiceClass> {
-    method @NonNull public TServiceClass createService(@NonNull android.content.Context);
-  }
-
-  public static interface SystemServiceRegistry.StaticServiceProducerWithBinder<TServiceClass> {
-    method @NonNull public TServiceClass createService(@NonNull android.os.IBinder);
-  }
-
-  public static interface SystemServiceRegistry.StaticServiceProducerWithoutBinder<TServiceClass> {
-    method @NonNull public TServiceClass createService();
-  }
-
-  public class UiModeManager {
-    method @RequiresPermission(android.Manifest.permission.ENTER_CAR_MODE_PRIORITIZED) public void enableCarMode(@IntRange(from=0) int, int);
-    field public static final String ACTION_ENTER_CAR_MODE_PRIORITIZED = "android.app.action.ENTER_CAR_MODE_PRIORITIZED";
-    field public static final String ACTION_EXIT_CAR_MODE_PRIORITIZED = "android.app.action.EXIT_CAR_MODE_PRIORITIZED";
-    field public static final int DEFAULT_PRIORITY = 0; // 0x0
-    field public static final String EXTRA_CALLING_PACKAGE = "android.app.extra.CALLING_PACKAGE";
-    field public static final String EXTRA_PRIORITY = "android.app.extra.PRIORITY";
-  }
-
-  public final class Vr2dDisplayProperties implements android.os.Parcelable {
-    ctor public Vr2dDisplayProperties(int, int, int);
-    method public int describeContents();
-    method public void dump(@NonNull java.io.PrintWriter, @NonNull String);
-    method public int getAddedFlags();
-    method public int getDpi();
-    method public int getHeight();
-    method public int getRemovedFlags();
-    method public int getWidth();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.Vr2dDisplayProperties> CREATOR;
-    field public static final int FLAG_VIRTUAL_DISPLAY_ENABLED = 1; // 0x1
-  }
-
-  public static final class Vr2dDisplayProperties.Builder {
-    ctor public Vr2dDisplayProperties.Builder();
-    method @NonNull public android.app.Vr2dDisplayProperties.Builder addFlags(int);
-    method @NonNull public android.app.Vr2dDisplayProperties build();
-    method @NonNull public android.app.Vr2dDisplayProperties.Builder removeFlags(int);
-    method @NonNull public android.app.Vr2dDisplayProperties.Builder setDimensions(int, int, int);
-    method @NonNull public android.app.Vr2dDisplayProperties.Builder setEnabled(boolean);
-  }
-
-  public class VrManager {
-    method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public int getVr2dDisplayId();
-    method @RequiresPermission(anyOf={android.Manifest.permission.RESTRICTED_VR_ACCESS, "android.permission.ACCESS_VR_STATE"}) public boolean isPersistentVrModeEnabled();
-    method @RequiresPermission(anyOf={android.Manifest.permission.RESTRICTED_VR_ACCESS, "android.permission.ACCESS_VR_STATE"}) public boolean isVrModeEnabled();
-    method @RequiresPermission(anyOf={android.Manifest.permission.RESTRICTED_VR_ACCESS, "android.permission.ACCESS_VR_STATE"}) public void registerVrStateCallback(@NonNull java.util.concurrent.Executor, @NonNull android.app.VrStateCallback);
-    method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public void setAndBindVrCompositor(android.content.ComponentName);
-    method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public void setPersistentVrModeEnabled(boolean);
-    method @RequiresPermission("android.permission.ACCESS_VR_MANAGER") public void setStandbyEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public void setVr2dDisplayProperties(@NonNull android.app.Vr2dDisplayProperties);
-    method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public void setVrInputMethod(@Nullable android.content.ComponentName);
-    method @RequiresPermission(anyOf={android.Manifest.permission.RESTRICTED_VR_ACCESS, "android.permission.ACCESS_VR_STATE"}) public void unregisterVrStateCallback(@NonNull android.app.VrStateCallback);
-  }
-
-  public abstract class VrStateCallback {
-    ctor public VrStateCallback();
-    method public void onPersistentVrStateChanged(boolean);
-    method public void onVrStateChanged(boolean);
-  }
-
-  public final class WallpaperColors implements android.os.Parcelable {
-    ctor public WallpaperColors(@NonNull android.graphics.Color, @Nullable android.graphics.Color, @Nullable android.graphics.Color, int);
-    method public int getColorHints();
-    field public static final int HINT_SUPPORTS_DARK_TEXT = 1; // 0x1
-    field public static final int HINT_SUPPORTS_DARK_THEME = 2; // 0x2
-  }
-
-  public final class WallpaperInfo implements android.os.Parcelable {
-    method public boolean supportsAmbientMode();
-  }
-
-  public class WallpaperManager {
-    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public void clearWallpaper(int, int);
-    method public void setDisplayOffset(android.os.IBinder, int, int);
-    method @RequiresPermission(android.Manifest.permission.SET_WALLPAPER_COMPONENT) public boolean setWallpaperComponent(android.content.ComponentName);
-  }
-
-}
-
-package android.app.admin {
-
-  public class DevicePolicyKeyguardService extends android.app.Service {
-    ctor public DevicePolicyKeyguardService();
-    method @Nullable public void dismiss();
-    method @Nullable public final android.os.IBinder onBind(@Nullable android.content.Intent);
-    method @Nullable public android.view.SurfaceControlViewHost.SurfacePackage onCreateKeyguardSurface(@NonNull android.os.IBinder);
-  }
-
-  public class DevicePolicyManager {
-    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public boolean getBluetoothContactSharingDisabled(@NonNull android.os.UserHandle);
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public String getDeviceOwner();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public android.content.ComponentName getDeviceOwnerComponentOnAnyUser();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public String getDeviceOwnerNameOnAnyUser();
-    method @Nullable public CharSequence getDeviceOwnerOrganizationName();
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public android.os.UserHandle getDeviceOwnerUser();
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public java.util.List<java.lang.String> getPermittedAccessibilityServices(int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public java.util.List<java.lang.String> getPermittedInputMethodsForCurrentUser();
-    method @Nullable public android.content.ComponentName getProfileOwner() throws java.lang.IllegalArgumentException;
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public String getProfileOwnerNameAsUser(int) throws java.lang.IllegalArgumentException;
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public int getUserProvisioningState();
-    method public boolean isDeviceManaged();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isDeviceProvisioned();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isDeviceProvisioningConfigApplied();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isManagedKiosk();
-    method public boolean isSecondaryLockscreenEnabled(@NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isUnattendedManagedKiosk();
-    method @RequiresPermission("android.permission.NOTIFY_PENDING_SYSTEM_UPDATE") public void notifyPendingSystemUpdate(long);
-    method @RequiresPermission("android.permission.NOTIFY_PENDING_SYSTEM_UPDATE") public void notifyPendingSystemUpdate(long, boolean);
-    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public boolean packageHasActiveAdmins(String);
-    method @Deprecated @RequiresPermission("android.permission.MANAGE_DEVICE_ADMINS") public boolean setActiveProfileOwner(@NonNull android.content.ComponentName, String) throws java.lang.IllegalArgumentException;
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public void setDeviceProvisioningConfigApplied();
-    method @Deprecated @RequiresPermission(value=android.Manifest.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS, conditional=true) public void setProfileOwnerCanAccessDeviceIds(@NonNull android.content.ComponentName);
-    method public void setSecondaryLockscreenEnabled(@NonNull android.content.ComponentName, boolean);
-    field public static final String ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_ALLOWED = "android.account.DEVICE_OR_PROFILE_OWNER_ALLOWED";
-    field public static final String ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_DISALLOWED = "android.account.DEVICE_OR_PROFILE_OWNER_DISALLOWED";
-    field public static final String ACTION_BIND_SECONDARY_LOCKSCREEN_SERVICE = "android.app.action.BIND_SECONDARY_LOCKSCREEN_SERVICE";
-    field public static final String ACTION_PROVISION_FINALIZATION = "android.app.action.PROVISION_FINALIZATION";
-    field public static final String ACTION_PROVISION_FINANCED_DEVICE = "android.app.action.PROVISION_FINANCED_DEVICE";
-    field public static final String ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE = "android.app.action.PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE";
-    field @RequiresPermission(android.Manifest.permission.MANAGE_FACTORY_RESET_PROTECTION) public static final String ACTION_RESET_PROTECTION_POLICY_CHANGED = "android.app.action.RESET_PROTECTION_POLICY_CHANGED";
-    field public static final String ACTION_SET_PROFILE_OWNER = "android.app.action.SET_PROFILE_OWNER";
-    field public static final String ACTION_STATE_USER_SETUP_COMPLETE = "android.app.action.STATE_USER_SETUP_COMPLETE";
-    field public static final String EXTRA_PROFILE_OWNER_NAME = "android.app.extra.PROFILE_OWNER_NAME";
-    field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_ICON_URI = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_ICON_URI";
-    field public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_LABEL = "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_LABEL";
-    field public static final String EXTRA_PROVISIONING_ORGANIZATION_NAME = "android.app.extra.PROVISIONING_ORGANIZATION_NAME";
-    field public static final String EXTRA_PROVISIONING_SUPPORT_URL = "android.app.extra.PROVISIONING_SUPPORT_URL";
-    field public static final String EXTRA_PROVISIONING_TRIGGER = "android.app.extra.PROVISIONING_TRIGGER";
-    field public static final String EXTRA_RESTRICTION = "android.app.extra.RESTRICTION";
-    field public static final int PROVISIONING_TRIGGER_CLOUD_ENROLLMENT = 1; // 0x1
-    field public static final int PROVISIONING_TRIGGER_PERSISTENT_DEVICE_OWNER = 3; // 0x3
-    field public static final int PROVISIONING_TRIGGER_QR_CODE = 2; // 0x2
-    field public static final int PROVISIONING_TRIGGER_UNSPECIFIED = 0; // 0x0
-    field public static final int STATE_USER_PROFILE_COMPLETE = 4; // 0x4
-    field public static final int STATE_USER_SETUP_COMPLETE = 2; // 0x2
-    field public static final int STATE_USER_SETUP_FINALIZED = 3; // 0x3
-    field public static final int STATE_USER_SETUP_INCOMPLETE = 1; // 0x1
-    field public static final int STATE_USER_UNMANAGED = 0; // 0x0
-  }
-
-  public final class SystemUpdatePolicy implements android.os.Parcelable {
-    method public android.app.admin.SystemUpdatePolicy.InstallationOption getInstallationOptionAt(long);
-    field public static final int TYPE_PAUSE = 4; // 0x4
-  }
-
-  public static class SystemUpdatePolicy.InstallationOption {
-    method public long getEffectiveTime();
-    method public int getType();
-  }
-
-}
-
-package android.app.assist {
-
-  public static class AssistStructure.ViewNode {
-    ctor public AssistStructure.ViewNode();
-  }
-
-}
-
-package android.app.backup {
-
-  public class BackupDataInput {
-    ctor public BackupDataInput(java.io.FileDescriptor);
-  }
-
-  public class BackupDataOutput {
-    ctor public BackupDataOutput(java.io.FileDescriptor);
-    ctor public BackupDataOutput(java.io.FileDescriptor, long);
-  }
-
-  public class BackupManager {
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public void backupNow();
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public android.app.backup.RestoreSession beginRestoreSession();
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public void cancelBackups();
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public void excludeKeysFromRestore(@NonNull String, @NonNull java.util.List<java.lang.String>);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public long getAvailableRestoreToken(String);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public android.content.Intent getConfigurationIntent(String);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public String getCurrentTransport();
-    method @Nullable @RequiresPermission(android.Manifest.permission.BACKUP) public android.content.ComponentName getCurrentTransportComponent();
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public android.content.Intent getDataManagementIntent(String);
-    method @Nullable @RequiresPermission(android.Manifest.permission.BACKUP) public CharSequence getDataManagementIntentLabel(@NonNull String);
-    method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.BACKUP) public String getDataManagementLabel(@NonNull String);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public String getDestinationString(String);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public boolean isAppEligibleForBackup(String);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public boolean isBackupEnabled();
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public boolean isBackupServiceActive(android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public String[] listAllTransports();
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public int requestBackup(String[], android.app.backup.BackupObserver);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public int requestBackup(String[], android.app.backup.BackupObserver, android.app.backup.BackupManagerMonitor, int);
-    method @Deprecated public int requestRestore(android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.BACKUP) public String selectBackupTransport(String);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public void selectBackupTransport(android.content.ComponentName, android.app.backup.SelectBackupTransportCallback);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public void setAncestralSerialNumber(long);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public void setAutoRestore(boolean);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public void setBackupEnabled(boolean);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.BACKUP) public void updateTransportAttributes(@NonNull android.content.ComponentName, @NonNull String, @Nullable android.content.Intent, @NonNull String, @Nullable android.content.Intent, @Nullable String);
-    method @RequiresPermission(android.Manifest.permission.BACKUP) public void updateTransportAttributes(@NonNull android.content.ComponentName, @NonNull String, @Nullable android.content.Intent, @NonNull String, @Nullable android.content.Intent, @Nullable CharSequence);
-    field public static final int ERROR_AGENT_FAILURE = -1003; // 0xfffffc15
-    field public static final int ERROR_BACKUP_CANCELLED = -2003; // 0xfffff82d
-    field public static final int ERROR_BACKUP_NOT_ALLOWED = -2001; // 0xfffff82f
-    field public static final int ERROR_PACKAGE_NOT_FOUND = -2002; // 0xfffff82e
-    field public static final int ERROR_TRANSPORT_ABORTED = -1000; // 0xfffffc18
-    field public static final int ERROR_TRANSPORT_INVALID = -2; // 0xfffffffe
-    field public static final int ERROR_TRANSPORT_PACKAGE_REJECTED = -1002; // 0xfffffc16
-    field public static final int ERROR_TRANSPORT_QUOTA_EXCEEDED = -1005; // 0xfffffc13
-    field public static final int ERROR_TRANSPORT_UNAVAILABLE = -1; // 0xffffffff
-    field public static final int FLAG_NON_INCREMENTAL_BACKUP = 1; // 0x1
-    field public static final String PACKAGE_MANAGER_SENTINEL = "@pm@";
-    field public static final int SUCCESS = 0; // 0x0
-  }
-
-  public class BackupManagerMonitor {
-    ctor public BackupManagerMonitor();
-    method public void onEvent(android.os.Bundle);
-    field public static final String EXTRA_LOG_CANCEL_ALL = "android.app.backup.extra.LOG_CANCEL_ALL";
-    field public static final String EXTRA_LOG_EVENT_CATEGORY = "android.app.backup.extra.LOG_EVENT_CATEGORY";
-    field public static final String EXTRA_LOG_EVENT_ID = "android.app.backup.extra.LOG_EVENT_ID";
-    field public static final String EXTRA_LOG_EVENT_PACKAGE_LONG_VERSION = "android.app.backup.extra.LOG_EVENT_PACKAGE_FULL_VERSION";
-    field public static final String EXTRA_LOG_EVENT_PACKAGE_NAME = "android.app.backup.extra.LOG_EVENT_PACKAGE_NAME";
-    field @Deprecated public static final String EXTRA_LOG_EVENT_PACKAGE_VERSION = "android.app.backup.extra.LOG_EVENT_PACKAGE_VERSION";
-    field public static final String EXTRA_LOG_EXCEPTION_FULL_BACKUP = "android.app.backup.extra.LOG_EXCEPTION_FULL_BACKUP";
-    field public static final String EXTRA_LOG_ILLEGAL_KEY = "android.app.backup.extra.LOG_ILLEGAL_KEY";
-    field public static final String EXTRA_LOG_MANIFEST_PACKAGE_NAME = "android.app.backup.extra.LOG_MANIFEST_PACKAGE_NAME";
-    field public static final String EXTRA_LOG_OLD_VERSION = "android.app.backup.extra.LOG_OLD_VERSION";
-    field public static final String EXTRA_LOG_POLICY_ALLOW_APKS = "android.app.backup.extra.LOG_POLICY_ALLOW_APKS";
-    field public static final String EXTRA_LOG_PREFLIGHT_ERROR = "android.app.backup.extra.LOG_PREFLIGHT_ERROR";
-    field public static final String EXTRA_LOG_RESTORE_ANYWAY = "android.app.backup.extra.LOG_RESTORE_ANYWAY";
-    field public static final String EXTRA_LOG_RESTORE_VERSION = "android.app.backup.extra.LOG_RESTORE_VERSION";
-    field public static final String EXTRA_LOG_WIDGET_PACKAGE_NAME = "android.app.backup.extra.LOG_WIDGET_PACKAGE_NAME";
-    field public static final int LOG_EVENT_CATEGORY_AGENT = 2; // 0x2
-    field public static final int LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY = 3; // 0x3
-    field public static final int LOG_EVENT_CATEGORY_TRANSPORT = 1; // 0x1
-    field public static final int LOG_EVENT_ID_APK_NOT_INSTALLED = 40; // 0x28
-    field public static final int LOG_EVENT_ID_APP_HAS_NO_AGENT = 28; // 0x1c
-    field public static final int LOG_EVENT_ID_BACKUP_DISABLED = 13; // 0xd
-    field public static final int LOG_EVENT_ID_CANNOT_RESTORE_WITHOUT_APK = 41; // 0x29
-    field public static final int LOG_EVENT_ID_CANT_FIND_AGENT = 30; // 0x1e
-    field public static final int LOG_EVENT_ID_CORRUPT_MANIFEST = 46; // 0x2e
-    field public static final int LOG_EVENT_ID_DEVICE_NOT_PROVISIONED = 14; // 0xe
-    field public static final int LOG_EVENT_ID_ERROR_PREFLIGHT = 16; // 0x10
-    field public static final int LOG_EVENT_ID_EXCEPTION_FULL_BACKUP = 19; // 0x13
-    field public static final int LOG_EVENT_ID_EXPECTED_DIFFERENT_PACKAGE = 43; // 0x2b
-    field public static final int LOG_EVENT_ID_FULL_BACKUP_CANCEL = 4; // 0x4
-    field public static final int LOG_EVENT_ID_FULL_RESTORE_ALLOW_BACKUP_FALSE = 39; // 0x27
-    field public static final int LOG_EVENT_ID_FULL_RESTORE_SIGNATURE_MISMATCH = 37; // 0x25
-    field public static final int LOG_EVENT_ID_FULL_RESTORE_TIMEOUT = 45; // 0x2d
-    field public static final int LOG_EVENT_ID_ILLEGAL_KEY = 5; // 0x5
-    field public static final int LOG_EVENT_ID_KEY_VALUE_BACKUP_CANCEL = 21; // 0x15
-    field public static final int LOG_EVENT_ID_KEY_VALUE_RESTORE_TIMEOUT = 31; // 0x1f
-    field public static final int LOG_EVENT_ID_LOST_TRANSPORT = 25; // 0x19
-    field public static final int LOG_EVENT_ID_MISSING_SIGNATURE = 42; // 0x2a
-    field public static final int LOG_EVENT_ID_NO_DATA_TO_SEND = 7; // 0x7
-    field public static final int LOG_EVENT_ID_NO_PACKAGES = 49; // 0x31
-    field public static final int LOG_EVENT_ID_NO_PM_METADATA_RECEIVED = 23; // 0x17
-    field public static final int LOG_EVENT_ID_NO_RESTORE_METADATA_AVAILABLE = 22; // 0x16
-    field public static final int LOG_EVENT_ID_PACKAGE_INELIGIBLE = 9; // 0x9
-    field public static final int LOG_EVENT_ID_PACKAGE_KEY_VALUE_PARTICIPANT = 10; // 0xa
-    field public static final int LOG_EVENT_ID_PACKAGE_NOT_FOUND = 12; // 0xc
-    field public static final int LOG_EVENT_ID_PACKAGE_NOT_PRESENT = 26; // 0x1a
-    field public static final int LOG_EVENT_ID_PACKAGE_STOPPED = 11; // 0xb
-    field public static final int LOG_EVENT_ID_PACKAGE_TRANSPORT_NOT_PRESENT = 15; // 0xf
-    field public static final int LOG_EVENT_ID_PM_AGENT_HAS_NO_METADATA = 24; // 0x18
-    field public static final int LOG_EVENT_ID_QUOTA_HIT_PREFLIGHT = 18; // 0x12
-    field public static final int LOG_EVENT_ID_RESTORE_ANY_VERSION = 34; // 0x22
-    field public static final int LOG_EVENT_ID_RESTORE_VERSION_HIGHER = 27; // 0x1b
-    field public static final int LOG_EVENT_ID_SIGNATURE_MISMATCH = 29; // 0x1d
-    field public static final int LOG_EVENT_ID_SYSTEM_APP_NO_AGENT = 38; // 0x26
-    field public static final int LOG_EVENT_ID_TRANSPORT_IS_NULL = 50; // 0x32
-    field public static final int LOG_EVENT_ID_TRANSPORT_NON_INCREMENTAL_BACKUP_REQUIRED = 51; // 0x33
-    field public static final int LOG_EVENT_ID_UNKNOWN_VERSION = 44; // 0x2c
-    field public static final int LOG_EVENT_ID_VERSIONS_MATCH = 35; // 0x23
-    field public static final int LOG_EVENT_ID_VERSION_OF_BACKUP_OLDER = 36; // 0x24
-    field public static final int LOG_EVENT_ID_WIDGET_METADATA_MISMATCH = 47; // 0x2f
-    field public static final int LOG_EVENT_ID_WIDGET_UNKNOWN_VERSION = 48; // 0x30
-  }
-
-  public abstract class BackupObserver {
-    ctor public BackupObserver();
-    method public void backupFinished(int);
-    method public void onResult(String, int);
-    method public void onUpdate(String, android.app.backup.BackupProgress);
-  }
-
-  public class BackupProgress implements android.os.Parcelable {
-    ctor public BackupProgress(long, long);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.backup.BackupProgress> CREATOR;
-    field public final long bytesExpected;
-    field public final long bytesTransferred;
-  }
-
-  public class BackupTransport {
-    ctor public BackupTransport();
-    method public int abortFullRestore();
-    method public void cancelFullBackup();
-    method public int checkFullBackupSize(long);
-    method public int clearBackupData(android.content.pm.PackageInfo);
-    method public android.content.Intent configurationIntent();
-    method public String currentDestinationString();
-    method public android.content.Intent dataManagementIntent();
-    method @Nullable public CharSequence dataManagementIntentLabel();
-    method @Deprecated @Nullable public String dataManagementLabel();
-    method public int finishBackup();
-    method public void finishRestore();
-    method public android.app.backup.RestoreSet[] getAvailableRestoreSets();
-    method public long getBackupQuota(String, boolean);
-    method public android.os.IBinder getBinder();
-    method public long getCurrentRestoreSet();
-    method public int getNextFullRestoreDataChunk(android.os.ParcelFileDescriptor);
-    method public int getRestoreData(android.os.ParcelFileDescriptor);
-    method public int getTransportFlags();
-    method public int initializeDevice();
-    method public boolean isAppEligibleForBackup(android.content.pm.PackageInfo, boolean);
-    method public String name();
-    method public android.app.backup.RestoreDescription nextRestorePackage();
-    method public int performBackup(android.content.pm.PackageInfo, android.os.ParcelFileDescriptor, int);
-    method public int performBackup(android.content.pm.PackageInfo, android.os.ParcelFileDescriptor);
-    method public int performFullBackup(android.content.pm.PackageInfo, android.os.ParcelFileDescriptor, int);
-    method public int performFullBackup(android.content.pm.PackageInfo, android.os.ParcelFileDescriptor);
-    method public long requestBackupTime();
-    method public long requestFullBackupTime();
-    method public int sendBackupData(int);
-    method public int startRestore(long, android.content.pm.PackageInfo[]);
-    method public String transportDirName();
-    field public static final int AGENT_ERROR = -1003; // 0xfffffc15
-    field public static final int AGENT_UNKNOWN = -1004; // 0xfffffc14
-    field public static final String EXTRA_TRANSPORT_REGISTRATION = "android.app.backup.extra.TRANSPORT_REGISTRATION";
-    field public static final int FLAG_DATA_NOT_CHANGED = 8; // 0x8
-    field public static final int FLAG_INCREMENTAL = 2; // 0x2
-    field public static final int FLAG_NON_INCREMENTAL = 4; // 0x4
-    field public static final int FLAG_USER_INITIATED = 1; // 0x1
-    field public static final int NO_MORE_DATA = -1; // 0xffffffff
-    field public static final int TRANSPORT_ERROR = -1000; // 0xfffffc18
-    field public static final int TRANSPORT_NON_INCREMENTAL_BACKUP_REQUIRED = -1006; // 0xfffffc12
-    field public static final int TRANSPORT_NOT_INITIALIZED = -1001; // 0xfffffc17
-    field public static final int TRANSPORT_OK = 0; // 0x0
-    field public static final int TRANSPORT_PACKAGE_REJECTED = -1002; // 0xfffffc16
-    field public static final int TRANSPORT_QUOTA_EXCEEDED = -1005; // 0xfffffc13
-  }
-
-  public class RestoreDescription implements android.os.Parcelable {
-    ctor public RestoreDescription(String, int);
-    method public int describeContents();
-    method public int getDataType();
-    method public String getPackageName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.backup.RestoreDescription> CREATOR;
-    field public static final android.app.backup.RestoreDescription NO_MORE_PACKAGES;
-    field public static final int TYPE_FULL_STREAM = 2; // 0x2
-    field public static final int TYPE_KEY_VALUE = 1; // 0x1
-  }
-
-  public abstract class RestoreObserver {
-    method public void restoreSetsAvailable(android.app.backup.RestoreSet[]);
-  }
-
-  public class RestoreSession {
-    method public void endRestoreSession();
-    method public int getAvailableRestoreSets(android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor);
-    method public int getAvailableRestoreSets(android.app.backup.RestoreObserver);
-    method public int restoreAll(long, android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor);
-    method public int restoreAll(long, android.app.backup.RestoreObserver);
-    method public int restorePackage(String, android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor);
-    method public int restorePackage(String, android.app.backup.RestoreObserver);
-    method public int restorePackages(long, @Nullable android.app.backup.RestoreObserver, @NonNull java.util.Set<java.lang.String>, @Nullable android.app.backup.BackupManagerMonitor);
-    method public int restorePackages(long, @Nullable android.app.backup.RestoreObserver, @NonNull java.util.Set<java.lang.String>);
-  }
-
-  public class RestoreSet implements android.os.Parcelable {
-    ctor public RestoreSet();
-    ctor public RestoreSet(String, String, long);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.backup.RestoreSet> CREATOR;
-    field public String device;
-    field public String name;
-    field public long token;
-  }
-
-  public abstract class SelectBackupTransportCallback {
-    ctor public SelectBackupTransportCallback();
-    method public void onFailure(int);
-    method public void onSuccess(String);
-  }
-
-}
-
-package android.app.compat {
-
-  public final class CompatChanges {
-    method public static boolean isChangeEnabled(long);
-    method @RequiresPermission(allOf={"android.permission.READ_COMPAT_CHANGE_CONFIG", "android.permission.LOG_COMPAT_CHANGE"}) public static boolean isChangeEnabled(long, @NonNull String, @NonNull android.os.UserHandle);
-    method @RequiresPermission(allOf={"android.permission.READ_COMPAT_CHANGE_CONFIG", "android.permission.LOG_COMPAT_CHANGE"}) public static boolean isChangeEnabled(long, int);
-  }
-
-}
-
-package android.app.contentsuggestions {
-
-  public final class ClassificationsRequest implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.os.Bundle getExtras();
-    method @NonNull public java.util.List<android.app.contentsuggestions.ContentSelection> getSelections();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.contentsuggestions.ClassificationsRequest> CREATOR;
-  }
-
-  public static final class ClassificationsRequest.Builder {
-    ctor public ClassificationsRequest.Builder(@NonNull java.util.List<android.app.contentsuggestions.ContentSelection>);
-    method @NonNull public android.app.contentsuggestions.ClassificationsRequest build();
-    method @NonNull public android.app.contentsuggestions.ClassificationsRequest.Builder setExtras(@NonNull android.os.Bundle);
-  }
-
-  public final class ContentClassification implements android.os.Parcelable {
-    ctor public ContentClassification(@NonNull String, @NonNull android.os.Bundle);
-    method public int describeContents();
-    method @NonNull public android.os.Bundle getExtras();
-    method @NonNull public String getId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.contentsuggestions.ContentClassification> CREATOR;
-  }
-
-  public final class ContentSelection implements android.os.Parcelable {
-    ctor public ContentSelection(@NonNull String, @NonNull android.os.Bundle);
-    method public int describeContents();
-    method @NonNull public android.os.Bundle getExtras();
-    method @NonNull public String getId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.contentsuggestions.ContentSelection> CREATOR;
-  }
-
-  public final class ContentSuggestionsManager {
-    method public void classifyContentSelections(@NonNull android.app.contentsuggestions.ClassificationsRequest, @NonNull java.util.concurrent.Executor, @NonNull android.app.contentsuggestions.ContentSuggestionsManager.ClassificationsCallback);
-    method public boolean isEnabled();
-    method public void notifyInteraction(@NonNull String, @NonNull android.os.Bundle);
-    method public void provideContextImage(@NonNull android.graphics.Bitmap, @NonNull android.os.Bundle);
-    method public void provideContextImage(int, @NonNull android.os.Bundle);
-    method public void suggestContentSelections(@NonNull android.app.contentsuggestions.SelectionsRequest, @NonNull java.util.concurrent.Executor, @NonNull android.app.contentsuggestions.ContentSuggestionsManager.SelectionsCallback);
-  }
-
-  public static interface ContentSuggestionsManager.ClassificationsCallback {
-    method public void onContentClassificationsAvailable(int, @NonNull java.util.List<android.app.contentsuggestions.ContentClassification>);
-  }
-
-  public static interface ContentSuggestionsManager.SelectionsCallback {
-    method public void onContentSelectionsAvailable(int, @NonNull java.util.List<android.app.contentsuggestions.ContentSelection>);
-  }
-
-  public final class SelectionsRequest implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.os.Bundle getExtras();
-    method @Nullable public android.graphics.Point getInterestPoint();
-    method public int getTaskId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.contentsuggestions.SelectionsRequest> CREATOR;
-  }
-
-  public static final class SelectionsRequest.Builder {
-    ctor public SelectionsRequest.Builder(int);
-    method @NonNull public android.app.contentsuggestions.SelectionsRequest build();
-    method @NonNull public android.app.contentsuggestions.SelectionsRequest.Builder setExtras(@NonNull android.os.Bundle);
-    method @NonNull public android.app.contentsuggestions.SelectionsRequest.Builder setInterestPoint(@NonNull android.graphics.Point);
-  }
-
-}
-
-package android.app.job {
-
-  public abstract class JobScheduler {
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public abstract int scheduleAsPackage(@NonNull android.app.job.JobInfo, @NonNull String, int, String);
-  }
-
-  public class JobSchedulerFrameworkInitializer {
-    method public static void registerServiceWrappers();
-  }
-
-}
-
-package android.app.prediction {
-
-  public final class AppPredictionContext implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.os.Bundle getExtras();
-    method @NonNull public String getPackageName();
-    method @IntRange(from=0) public int getPredictedTargetCount();
-    method @NonNull public String getUiSurface();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.prediction.AppPredictionContext> CREATOR;
-  }
-
-  public static final class AppPredictionContext.Builder {
-    ctor public AppPredictionContext.Builder(@NonNull android.content.Context);
-    method @NonNull public android.app.prediction.AppPredictionContext build();
-    method @NonNull public android.app.prediction.AppPredictionContext.Builder setExtras(@Nullable android.os.Bundle);
-    method @NonNull public android.app.prediction.AppPredictionContext.Builder setPredictedTargetCount(@IntRange(from=0) int);
-    method @NonNull public android.app.prediction.AppPredictionContext.Builder setUiSurface(@NonNull String);
-  }
-
-  public final class AppPredictionManager {
-    method @NonNull public android.app.prediction.AppPredictor createAppPredictionSession(@NonNull android.app.prediction.AppPredictionContext);
-  }
-
-  public final class AppPredictionSessionId implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.prediction.AppPredictionSessionId> CREATOR;
-  }
-
-  public final class AppPredictor {
-    method public void destroy();
-    method public void notifyAppTargetEvent(@NonNull android.app.prediction.AppTargetEvent);
-    method public void notifyLaunchLocationShown(@NonNull String, @NonNull java.util.List<android.app.prediction.AppTargetId>);
-    method public void registerPredictionUpdates(@NonNull java.util.concurrent.Executor, @NonNull android.app.prediction.AppPredictor.Callback);
-    method public void requestPredictionUpdate();
-    method @Nullable public void sortTargets(@NonNull java.util.List<android.app.prediction.AppTarget>, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.util.List<android.app.prediction.AppTarget>>);
-    method public void unregisterPredictionUpdates(@NonNull android.app.prediction.AppPredictor.Callback);
-  }
-
-  public static interface AppPredictor.Callback {
-    method public void onTargetsAvailable(@NonNull java.util.List<android.app.prediction.AppTarget>);
-  }
-
-  public final class AppTarget implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getClassName();
-    method @NonNull public android.app.prediction.AppTargetId getId();
-    method @NonNull public String getPackageName();
-    method @IntRange(from=0) public int getRank();
-    method @Nullable public android.content.pm.ShortcutInfo getShortcutInfo();
-    method @NonNull public android.os.UserHandle getUser();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.prediction.AppTarget> CREATOR;
-  }
-
-  public static final class AppTarget.Builder {
-    ctor public AppTarget.Builder(@NonNull android.app.prediction.AppTargetId, @NonNull String, @NonNull android.os.UserHandle);
-    ctor public AppTarget.Builder(@NonNull android.app.prediction.AppTargetId, @NonNull android.content.pm.ShortcutInfo);
-    method @NonNull public android.app.prediction.AppTarget build();
-    method @NonNull public android.app.prediction.AppTarget.Builder setClassName(@NonNull String);
-    method @NonNull public android.app.prediction.AppTarget.Builder setRank(@IntRange(from=0) int);
-  }
-
-  public final class AppTargetEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAction();
-    method @Nullable public String getLaunchLocation();
-    method @Nullable public android.app.prediction.AppTarget getTarget();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ACTION_DISMISS = 2; // 0x2
-    field public static final int ACTION_LAUNCH = 1; // 0x1
-    field public static final int ACTION_PIN = 3; // 0x3
-    field public static final int ACTION_UNPIN = 4; // 0x4
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.prediction.AppTargetEvent> CREATOR;
-  }
-
-  public static final class AppTargetEvent.Builder {
-    ctor public AppTargetEvent.Builder(@Nullable android.app.prediction.AppTarget, int);
-    method @NonNull public android.app.prediction.AppTargetEvent build();
-    method @NonNull public android.app.prediction.AppTargetEvent.Builder setLaunchLocation(@Nullable String);
-  }
-
-  public final class AppTargetId implements android.os.Parcelable {
-    ctor public AppTargetId(@NonNull String);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.prediction.AppTargetId> CREATOR;
-  }
-
-}
-
-package android.app.role {
-
-  public interface OnRoleHoldersChangedListener {
-    method public void onRoleHoldersChanged(@NonNull String, @NonNull android.os.UserHandle);
-  }
-
-  public abstract class RoleControllerService extends android.app.Service {
-    ctor public RoleControllerService();
-    method @WorkerThread public abstract boolean onAddRoleHolder(@NonNull String, @NonNull String, int);
-    method @Nullable public final android.os.IBinder onBind(@Nullable android.content.Intent);
-    method @WorkerThread public abstract boolean onClearRoleHolders(@NonNull String, int);
-    method @WorkerThread public abstract boolean onGrantDefaultRoles();
-    method @Deprecated public abstract boolean onIsApplicationQualifiedForRole(@NonNull String, @NonNull String);
-    method public boolean onIsApplicationVisibleForRole(@NonNull String, @NonNull String);
-    method public abstract boolean onIsRoleVisible(@NonNull String);
-    method @WorkerThread public abstract boolean onRemoveRoleHolder(@NonNull String, @NonNull String, int);
-    field public static final String SERVICE_INTERFACE = "android.app.role.RoleControllerService";
-  }
-
-  public final class RoleManager {
-    method @RequiresPermission(android.Manifest.permission.OBSERVE_ROLE_HOLDERS) public void addOnRoleHoldersChangedListenerAsUser(@NonNull java.util.concurrent.Executor, @NonNull android.app.role.OnRoleHoldersChangedListener, @NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void addRoleHolderAsUser(@NonNull String, @NonNull String, int, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public boolean addRoleHolderFromController(@NonNull String, @NonNull String);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void clearRoleHoldersAsUser(@NonNull String, int, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @NonNull @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public java.util.List<java.lang.String> getHeldRolesFromController(@NonNull String);
-    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public java.util.List<java.lang.String> getRoleHolders(@NonNull String);
-    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public java.util.List<java.lang.String> getRoleHoldersAsUser(@NonNull String, @NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.OBSERVE_ROLE_HOLDERS) public void removeOnRoleHoldersChangedListenerAsUser(@NonNull android.app.role.OnRoleHoldersChangedListener, @NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void removeRoleHolderAsUser(@NonNull String, @NonNull String, int, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public boolean removeRoleHolderFromController(@NonNull String, @NonNull String);
-    method @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public void setRoleNamesFromController(@NonNull java.util.List<java.lang.String>);
-    field public static final int MANAGE_HOLDERS_FLAG_DONT_KILL_APP = 1; // 0x1
-  }
-
-}
-
-package android.app.usage {
-
-  public final class CacheQuotaHint implements android.os.Parcelable {
-    ctor public CacheQuotaHint(android.app.usage.CacheQuotaHint.Builder);
-    method public int describeContents();
-    method public long getQuota();
-    method public int getUid();
-    method public android.app.usage.UsageStats getUsageStats();
-    method public String getVolumeUuid();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.usage.CacheQuotaHint> CREATOR;
-    field public static final long QUOTA_NOT_SET = -1L; // 0xffffffffffffffffL
-  }
-
-  public static final class CacheQuotaHint.Builder {
-    ctor public CacheQuotaHint.Builder();
-    ctor public CacheQuotaHint.Builder(android.app.usage.CacheQuotaHint);
-    method @NonNull public android.app.usage.CacheQuotaHint build();
-    method @NonNull public android.app.usage.CacheQuotaHint.Builder setQuota(long);
-    method @NonNull public android.app.usage.CacheQuotaHint.Builder setUid(int);
-    method @NonNull public android.app.usage.CacheQuotaHint.Builder setUsageStats(@Nullable android.app.usage.UsageStats);
-    method @NonNull public android.app.usage.CacheQuotaHint.Builder setVolumeUuid(@Nullable String);
-  }
-
-  public abstract class CacheQuotaService extends android.app.Service {
-    ctor public CacheQuotaService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public abstract java.util.List<android.app.usage.CacheQuotaHint> onComputeCacheQuotaHints(java.util.List<android.app.usage.CacheQuotaHint>);
-    field public static final String SERVICE_INTERFACE = "android.app.usage.CacheQuotaService";
-  }
-
-  public class NetworkStatsManager {
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STATS_PROVIDER, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void registerNetworkStatsProvider(@NonNull String, @NonNull android.net.netstats.provider.NetworkStatsProvider);
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STATS_PROVIDER, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void unregisterNetworkStatsProvider(@NonNull android.net.netstats.provider.NetworkStatsProvider);
-  }
-
-  public static final class UsageEvents.Event {
-    method public int getInstanceId();
-    method @Nullable public String getNotificationChannelId();
-    method @Nullable public String getTaskRootClassName();
-    method @Nullable public String getTaskRootPackageName();
-    method public boolean isInstantApp();
-    field public static final int NOTIFICATION_INTERRUPTION = 12; // 0xc
-    field public static final int NOTIFICATION_SEEN = 10; // 0xa
-    field public static final int SLICE_PINNED = 14; // 0xe
-    field public static final int SLICE_PINNED_PRIV = 13; // 0xd
-    field public static final int SYSTEM_INTERACTION = 6; // 0x6
-  }
-
-  public final class UsageStats implements android.os.Parcelable {
-    method public int getAppLaunchCount();
-  }
-
-  public final class UsageStatsManager {
-    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int getAppStandbyBucket(String);
-    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public java.util.Map<java.lang.String,java.lang.Integer> getAppStandbyBuckets();
-    method public int getUsageSource();
-    method @RequiresPermission(android.Manifest.permission.BIND_CARRIER_SERVICES) public void onCarrierPrivilegedAppsChanged();
-    method @RequiresPermission(allOf={android.Manifest.permission.SUSPEND_APPS, android.Manifest.permission.OBSERVE_APP_USAGE}) public void registerAppUsageLimitObserver(int, @NonNull String[], @NonNull java.time.Duration, @NonNull java.time.Duration, @Nullable android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.OBSERVE_APP_USAGE) public void registerAppUsageObserver(int, @NonNull String[], long, @NonNull java.util.concurrent.TimeUnit, @NonNull android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.OBSERVE_APP_USAGE) public void registerUsageSessionObserver(int, @NonNull String[], @NonNull java.time.Duration, @NonNull java.time.Duration, @NonNull android.app.PendingIntent, @Nullable android.app.PendingIntent);
-    method public void reportUsageStart(@NonNull android.app.Activity, @NonNull String);
-    method public void reportUsageStart(@NonNull android.app.Activity, @NonNull String, long);
-    method public void reportUsageStop(@NonNull android.app.Activity, @NonNull String);
-    method @RequiresPermission(android.Manifest.permission.CHANGE_APP_IDLE_STATE) public void setAppStandbyBucket(String, int);
-    method @RequiresPermission(android.Manifest.permission.CHANGE_APP_IDLE_STATE) public void setAppStandbyBuckets(java.util.Map<java.lang.String,java.lang.Integer>);
-    method @RequiresPermission(allOf={android.Manifest.permission.SUSPEND_APPS, android.Manifest.permission.OBSERVE_APP_USAGE}) public void unregisterAppUsageLimitObserver(int);
-    method @RequiresPermission(android.Manifest.permission.OBSERVE_APP_USAGE) public void unregisterAppUsageObserver(int);
-    method @RequiresPermission(android.Manifest.permission.OBSERVE_APP_USAGE) public void unregisterUsageSessionObserver(int);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST) public void whitelistAppTemporarily(String, long, android.os.UserHandle);
-    field public static final String EXTRA_OBSERVER_ID = "android.app.usage.extra.OBSERVER_ID";
-    field public static final String EXTRA_TIME_LIMIT = "android.app.usage.extra.TIME_LIMIT";
-    field public static final String EXTRA_TIME_USED = "android.app.usage.extra.TIME_USED";
-    field public static final int STANDBY_BUCKET_EXEMPTED = 5; // 0x5
-    field public static final int STANDBY_BUCKET_NEVER = 50; // 0x32
-    field public static final int USAGE_SOURCE_CURRENT_ACTIVITY = 2; // 0x2
-    field public static final int USAGE_SOURCE_TASK_ROOT_ACTIVITY = 1; // 0x1
-  }
-
-}
-
-package android.bluetooth {
-
-  public final class BluetoothA2dp implements android.bluetooth.BluetoothProfile {
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
-    field public static final int OPTIONAL_CODECS_NOT_SUPPORTED = 0; // 0x0
-    field public static final int OPTIONAL_CODECS_PREF_DISABLED = 0; // 0x0
-    field public static final int OPTIONAL_CODECS_PREF_ENABLED = 1; // 0x1
-    field public static final int OPTIONAL_CODECS_PREF_UNKNOWN = -1; // 0xffffffff
-    field public static final int OPTIONAL_CODECS_SUPPORTED = 1; // 0x1
-    field public static final int OPTIONAL_CODECS_SUPPORT_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public final class BluetoothA2dpSink implements android.bluetooth.BluetoothProfile {
-    method public void finalize();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean isAudioPlaying(@NonNull android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
-    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.a2dp-sink.profile.action.CONNECTION_STATE_CHANGED";
-  }
-
-  public final class BluetoothAdapter {
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean addOnMetadataChangedListener(@NonNull android.bluetooth.BluetoothDevice, @NonNull java.util.concurrent.Executor, @NonNull android.bluetooth.BluetoothAdapter.OnMetadataChangedListener);
-    method public boolean disableBLE();
-    method public boolean enableBLE();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean enableNoAutoConnect();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public long getDiscoveryEndMillis();
-    method public boolean isBleScanAlwaysAvailable();
-    method public boolean isLeEnabled();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean removeActiveDevice(int);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean removeOnMetadataChangedListener(@NonNull android.bluetooth.BluetoothDevice, @NonNull android.bluetooth.BluetoothAdapter.OnMetadataChangedListener);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setActiveDevice(@NonNull android.bluetooth.BluetoothDevice, int);
-    field public static final String ACTION_BLE_STATE_CHANGED = "android.bluetooth.adapter.action.BLE_STATE_CHANGED";
-    field public static final String ACTION_REQUEST_BLE_SCAN_ALWAYS_AVAILABLE = "android.bluetooth.adapter.action.REQUEST_BLE_SCAN_ALWAYS_AVAILABLE";
-    field public static final int ACTIVE_DEVICE_ALL = 2; // 0x2
-    field public static final int ACTIVE_DEVICE_AUDIO = 0; // 0x0
-    field public static final int ACTIVE_DEVICE_PHONE_CALL = 1; // 0x1
-  }
-
-  public static interface BluetoothAdapter.OnMetadataChangedListener {
-    method public void onMetadataChanged(@NonNull android.bluetooth.BluetoothDevice, int, @Nullable byte[]);
-  }
-
-  public final class BluetoothDevice implements android.os.Parcelable {
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean cancelBondProcess();
-    method @Nullable @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public byte[] getMetadata(int);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getSimAccessPermission();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isConnected();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isEncrypted();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean isInSilenceMode();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean removeBond();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setMessageAccessPermission(int);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setMetadata(int, @NonNull byte[]);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setPhonebookAccessPermission(int);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setSilenceMode(boolean);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setSimAccessPermission(int);
-    field public static final int ACCESS_ALLOWED = 1; // 0x1
-    field public static final int ACCESS_REJECTED = 2; // 0x2
-    field public static final int ACCESS_UNKNOWN = 0; // 0x0
-    field public static final String ACTION_SILENCE_MODE_CHANGED = "android.bluetooth.device.action.SILENCE_MODE_CHANGED";
-    field public static final int METADATA_COMPANION_APP = 4; // 0x4
-    field public static final int METADATA_ENHANCED_SETTINGS_UI_URI = 16; // 0x10
-    field public static final int METADATA_HARDWARE_VERSION = 3; // 0x3
-    field public static final int METADATA_IS_UNTETHERED_HEADSET = 6; // 0x6
-    field public static final int METADATA_MAIN_ICON = 5; // 0x5
-    field public static final int METADATA_MANUFACTURER_NAME = 0; // 0x0
-    field public static final int METADATA_MAX_LENGTH = 2048; // 0x800
-    field public static final int METADATA_MODEL_NAME = 1; // 0x1
-    field public static final int METADATA_SOFTWARE_VERSION = 2; // 0x2
-    field public static final int METADATA_UNTETHERED_CASE_BATTERY = 12; // 0xc
-    field public static final int METADATA_UNTETHERED_CASE_CHARGING = 15; // 0xf
-    field public static final int METADATA_UNTETHERED_CASE_ICON = 9; // 0x9
-    field public static final int METADATA_UNTETHERED_LEFT_BATTERY = 10; // 0xa
-    field public static final int METADATA_UNTETHERED_LEFT_CHARGING = 13; // 0xd
-    field public static final int METADATA_UNTETHERED_LEFT_ICON = 7; // 0x7
-    field public static final int METADATA_UNTETHERED_RIGHT_BATTERY = 11; // 0xb
-    field public static final int METADATA_UNTETHERED_RIGHT_CHARGING = 14; // 0xe
-    field public static final int METADATA_UNTETHERED_RIGHT_ICON = 8; // 0x8
-  }
-
-  public final class BluetoothHeadset implements android.bluetooth.BluetoothProfile {
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean connect(android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean disconnect(android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean setPriority(android.bluetooth.BluetoothDevice, int);
-  }
-
-  public final class BluetoothHearingAid implements android.bluetooth.BluetoothProfile {
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public long getHiSyncId(@NonNull android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
-  }
-
-  public final class BluetoothHidDevice implements android.bluetooth.BluetoothProfile {
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
-  }
-
-  public final class BluetoothHidHost implements android.bluetooth.BluetoothProfile {
-    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionState(@NonNull android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
-    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.input.profile.action.CONNECTION_STATE_CHANGED";
-  }
-
-  public final class BluetoothMap implements java.lang.AutoCloseable android.bluetooth.BluetoothProfile {
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public void close();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) protected void finalize();
-    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
-    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.map.profile.action.CONNECTION_STATE_CHANGED";
-  }
-
-  public final class BluetoothPan implements android.bluetooth.BluetoothProfile {
-    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionState(@NonNull android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean isTetheringOn();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public void setBluetoothTethering(boolean);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
-    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.pan.profile.action.CONNECTION_STATE_CHANGED";
-    field public static final String ACTION_TETHERING_STATE_CHANGED = "android.bluetooth.action.TETHERING_STATE_CHANGED";
-    field public static final String EXTRA_LOCAL_ROLE = "android.bluetooth.pan.extra.LOCAL_ROLE";
-    field public static final String EXTRA_TETHERING_STATE = "android.bluetooth.extra.TETHERING_STATE";
-    field public static final int LOCAL_NAP_ROLE = 1; // 0x1
-    field public static final int LOCAL_PANU_ROLE = 2; // 0x2
-    field public static final int PAN_ROLE_NONE = 0; // 0x0
-    field public static final int REMOTE_NAP_ROLE = 1; // 0x1
-    field public static final int REMOTE_PANU_ROLE = 2; // 0x2
-    field public static final int TETHERING_STATE_OFF = 1; // 0x1
-    field public static final int TETHERING_STATE_ON = 2; // 0x2
-  }
-
-  public class BluetoothPbap implements android.bluetooth.BluetoothProfile {
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionState(@NonNull android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
-    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.pbap.profile.action.CONNECTION_STATE_CHANGED";
-  }
-
-  public interface BluetoothProfile {
-    field public static final int A2DP_SINK = 11; // 0xb
-    field public static final int AVRCP_CONTROLLER = 12; // 0xc
-    field public static final int CONNECTION_POLICY_ALLOWED = 100; // 0x64
-    field public static final int CONNECTION_POLICY_FORBIDDEN = 0; // 0x0
-    field public static final int CONNECTION_POLICY_UNKNOWN = -1; // 0xffffffff
-    field public static final int HEADSET_CLIENT = 16; // 0x10
-    field public static final int PAN = 5; // 0x5
-    field public static final int PBAP_CLIENT = 17; // 0x11
-    field @Deprecated public static final int PRIORITY_OFF = 0; // 0x0
-    field @Deprecated public static final int PRIORITY_ON = 100; // 0x64
-  }
-
-  public final class BluetoothUuid {
-    method public static boolean containsAnyUuid(@Nullable android.os.ParcelUuid[], @Nullable android.os.ParcelUuid[]);
-    method @NonNull public static android.os.ParcelUuid parseUuidFrom(@Nullable byte[]);
-    field @NonNull public static final android.os.ParcelUuid A2DP_SINK;
-    field @NonNull public static final android.os.ParcelUuid A2DP_SOURCE;
-    field @NonNull public static final android.os.ParcelUuid ADV_AUDIO_DIST;
-    field @NonNull public static final android.os.ParcelUuid AVRCP_CONTROLLER;
-    field @NonNull public static final android.os.ParcelUuid AVRCP_TARGET;
-    field @NonNull public static final android.os.ParcelUuid BASE_UUID;
-    field @NonNull public static final android.os.ParcelUuid BNEP;
-    field @NonNull public static final android.os.ParcelUuid HEARING_AID;
-    field @NonNull public static final android.os.ParcelUuid HFP;
-    field @NonNull public static final android.os.ParcelUuid HFP_AG;
-    field @NonNull public static final android.os.ParcelUuid HID;
-    field @NonNull public static final android.os.ParcelUuid HOGP;
-    field @NonNull public static final android.os.ParcelUuid HSP;
-    field @NonNull public static final android.os.ParcelUuid HSP_AG;
-    field @NonNull public static final android.os.ParcelUuid MAP;
-    field @NonNull public static final android.os.ParcelUuid MAS;
-    field @NonNull public static final android.os.ParcelUuid MNS;
-    field @NonNull public static final android.os.ParcelUuid NAP;
-    field @NonNull public static final android.os.ParcelUuid OBEX_OBJECT_PUSH;
-    field @NonNull public static final android.os.ParcelUuid PANU;
-    field @NonNull public static final android.os.ParcelUuid PBAP_PCE;
-    field @NonNull public static final android.os.ParcelUuid PBAP_PSE;
-    field @NonNull public static final android.os.ParcelUuid SAP;
-    field public static final int UUID_BYTES_128_BIT = 16; // 0x10
-    field public static final int UUID_BYTES_16_BIT = 2; // 0x2
-    field public static final int UUID_BYTES_32_BIT = 4; // 0x4
-  }
-
-}
-
-package android.bluetooth.le {
-
-  public final class BluetoothLeScanner {
-    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_ADMIN, android.Manifest.permission.UPDATE_DEVICE_STATS}) public void startScanFromSource(android.os.WorkSource, android.bluetooth.le.ScanCallback);
-    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_ADMIN, android.Manifest.permission.UPDATE_DEVICE_STATS}) public void startScanFromSource(java.util.List<android.bluetooth.le.ScanFilter>, android.bluetooth.le.ScanSettings, android.os.WorkSource, android.bluetooth.le.ScanCallback);
-    method public void startTruncatedScan(java.util.List<android.bluetooth.le.TruncatedFilter>, android.bluetooth.le.ScanSettings, android.bluetooth.le.ScanCallback);
-  }
-
-  public final class ResultStorageDescriptor implements android.os.Parcelable {
-    ctor public ResultStorageDescriptor(int, int, int);
-    method public int describeContents();
-    method public int getLength();
-    method public int getOffset();
-    method public int getType();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.ResultStorageDescriptor> CREATOR;
-  }
-
-  public final class ScanSettings implements android.os.Parcelable {
-    field public static final int SCAN_RESULT_TYPE_ABBREVIATED = 1; // 0x1
-    field public static final int SCAN_RESULT_TYPE_FULL = 0; // 0x0
-  }
-
-  public static final class ScanSettings.Builder {
-    method public android.bluetooth.le.ScanSettings.Builder setScanResultType(int);
-  }
-
-  public final class TruncatedFilter {
-    ctor public TruncatedFilter(android.bluetooth.le.ScanFilter, java.util.List<android.bluetooth.le.ResultStorageDescriptor>);
-    method public android.bluetooth.le.ScanFilter getFilter();
-    method public java.util.List<android.bluetooth.le.ResultStorageDescriptor> getStorageDescriptors();
-  }
-
-}
-
-package android.companion {
-
-  public final class CompanionDeviceManager {
-    method @RequiresPermission("android.permission.MANAGE_COMPANION_DEVICES") public boolean isDeviceAssociatedForWifiConnection(@NonNull String, @NonNull android.net.MacAddress, @NonNull android.os.UserHandle);
-  }
-
-}
-
-package android.content {
-
-  public class ApexEnvironment {
-    method @NonNull public static android.content.ApexEnvironment getApexEnvironment(@NonNull String);
-    method @NonNull public java.io.File getCredentialProtectedDataDirForUser(@NonNull android.os.UserHandle);
-    method @NonNull public java.io.File getDeviceProtectedDataDir();
-    method @NonNull public java.io.File getDeviceProtectedDataDirForUser(@NonNull android.os.UserHandle);
-  }
-
-  public abstract class BroadcastReceiver {
-    method @NonNull public final android.os.UserHandle getSendingUser();
-  }
-
-  public abstract class ContentProvider implements android.content.ComponentCallbacks2 {
-    method public int checkUriPermission(@NonNull android.net.Uri, int, int);
-  }
-
-  public class ContentProviderClient implements java.lang.AutoCloseable {
-    method @RequiresPermission(android.Manifest.permission.REMOVE_TASKS) public void setDetectNotResponding(long);
-  }
-
-  public abstract class ContentResolver {
-    method public int checkUriPermission(@NonNull android.net.Uri, int, int);
-    method @NonNull public static android.net.Uri decodeFromFile(@NonNull java.io.File);
-    method @NonNull public static java.io.File encodeToFile(@NonNull android.net.Uri);
-    method @Nullable @RequiresPermission("android.permission.CACHE_CONTENT") public android.os.Bundle getCache(@NonNull android.net.Uri);
-    method @RequiresPermission("android.permission.CACHE_CONTENT") public void putCache(@NonNull android.net.Uri, @Nullable android.os.Bundle);
-  }
-
-  public abstract class Context {
-    method @NonNull public android.content.Context createContextAsUser(@NonNull android.os.UserHandle, int);
-    method public abstract android.content.Context createCredentialProtectedStorageContext();
-    method @NonNull public android.content.Context createPackageContextAsUser(@NonNull String, int, @NonNull android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @Nullable public abstract java.io.File getPreloadsFileCache();
-    method public abstract boolean isCredentialProtectedStorage();
-    method @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public android.content.Intent registerReceiverForAllUsers(@Nullable android.content.BroadcastReceiver, @NonNull android.content.IntentFilter, @Nullable String, @Nullable android.os.Handler);
-    method public abstract void sendBroadcast(android.content.Intent, @Nullable String, @Nullable android.os.Bundle);
-    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public abstract void sendBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle, @Nullable String, @Nullable android.os.Bundle);
-    method public abstract void sendOrderedBroadcast(@NonNull android.content.Intent, @Nullable String, @Nullable android.os.Bundle, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
-    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public void startActivityAsUser(@NonNull @RequiresPermission android.content.Intent, @NonNull android.os.UserHandle);
-    field public static final String APP_INTEGRITY_SERVICE = "app_integrity";
-    field public static final String APP_PREDICTION_SERVICE = "app_prediction";
-    field public static final String BACKUP_SERVICE = "backup";
-    field public static final String BATTERY_STATS_SERVICE = "batterystats";
-    field public static final String BUGREPORT_SERVICE = "bugreport";
-    field public static final String CONTENT_SUGGESTIONS_SERVICE = "content_suggestions";
-    field public static final String CONTEXTHUB_SERVICE = "contexthub";
-    field public static final String ETHERNET_SERVICE = "ethernet";
-    field public static final String EUICC_CARD_SERVICE = "euicc_card";
-    field public static final String HDMI_CONTROL_SERVICE = "hdmi_control";
-    field public static final String NETD_SERVICE = "netd";
-    field public static final String NETWORK_SCORE_SERVICE = "network_score";
-    field public static final String OEM_LOCK_SERVICE = "oem_lock";
-    field public static final String PERMISSION_SERVICE = "permission";
-    field public static final String PERSISTENT_DATA_BLOCK_SERVICE = "persistent_data_block";
-    field public static final String ROLLBACK_SERVICE = "rollback";
-    field public static final String SECURE_ELEMENT_SERVICE = "secure_element";
-    field public static final String STATS_MANAGER = "stats";
-    field public static final String STATUS_BAR_SERVICE = "statusbar";
-    field public static final String SYSTEM_CONFIG_SERVICE = "system_config";
-    field public static final String SYSTEM_UPDATE_SERVICE = "system_update";
-    field public static final String TETHERING_SERVICE = "tethering";
-    field public static final String VR_SERVICE = "vrmanager";
-    field public static final String WIFI_NL80211_SERVICE = "wifinl80211";
-    field @Deprecated public static final String WIFI_RTT_SERVICE = "rttmanager";
-    field public static final String WIFI_SCANNING_SERVICE = "wifiscanner";
-  }
-
-  public class ContextWrapper extends android.content.Context {
-    method public android.content.Context createCredentialProtectedStorageContext();
-    method public java.io.File getPreloadsFileCache();
-    method public boolean isCredentialProtectedStorage();
-    method public void sendBroadcast(android.content.Intent, String, android.os.Bundle);
-    method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, String, android.os.Bundle);
-    method public void sendOrderedBroadcast(android.content.Intent, String, android.os.Bundle, android.content.BroadcastReceiver, android.os.Handler, int, String, android.os.Bundle);
-  }
-
-  public class Intent implements java.lang.Cloneable android.os.Parcelable {
-    field public static final String ACTION_BATTERY_LEVEL_CHANGED = "android.intent.action.BATTERY_LEVEL_CHANGED";
-    field public static final String ACTION_CALL_EMERGENCY = "android.intent.action.CALL_EMERGENCY";
-    field public static final String ACTION_CALL_PRIVILEGED = "android.intent.action.CALL_PRIVILEGED";
-    field public static final String ACTION_DEVICE_CUSTOMIZATION_READY = "android.intent.action.DEVICE_CUSTOMIZATION_READY";
-    field public static final String ACTION_DIAL_EMERGENCY = "android.intent.action.DIAL_EMERGENCY";
-    field public static final String ACTION_FACTORY_RESET = "android.intent.action.FACTORY_RESET";
-    field public static final String ACTION_GLOBAL_BUTTON = "android.intent.action.GLOBAL_BUTTON";
-    field public static final String ACTION_INCIDENT_REPORT_READY = "android.intent.action.INCIDENT_REPORT_READY";
-    field public static final String ACTION_INSTALL_INSTANT_APP_PACKAGE = "android.intent.action.INSTALL_INSTANT_APP_PACKAGE";
-    field public static final String ACTION_INSTANT_APP_RESOLVER_SETTINGS = "android.intent.action.INSTANT_APP_RESOLVER_SETTINGS";
-    field public static final String ACTION_INTENT_FILTER_NEEDS_VERIFICATION = "android.intent.action.INTENT_FILTER_NEEDS_VERIFICATION";
-    field public static final String ACTION_LOAD_DATA = "android.intent.action.LOAD_DATA";
-    field @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS) public static final String ACTION_MANAGE_APP_PERMISSION = "android.intent.action.MANAGE_APP_PERMISSION";
-    field public static final String ACTION_MANAGE_APP_PERMISSIONS = "android.intent.action.MANAGE_APP_PERMISSIONS";
-    field @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public static final String ACTION_MANAGE_DEFAULT_APP = "android.intent.action.MANAGE_DEFAULT_APP";
-    field public static final String ACTION_MANAGE_PERMISSIONS = "android.intent.action.MANAGE_PERMISSIONS";
-    field public static final String ACTION_MANAGE_PERMISSION_APPS = "android.intent.action.MANAGE_PERMISSION_APPS";
-    field @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public static final String ACTION_MANAGE_SPECIAL_APP_ACCESSES = "android.intent.action.MANAGE_SPECIAL_APP_ACCESSES";
-    field public static final String ACTION_MASTER_CLEAR_NOTIFICATION = "android.intent.action.MASTER_CLEAR_NOTIFICATION";
-    field public static final String ACTION_PACKAGE_NEEDS_INTEGRITY_VERIFICATION = "android.intent.action.PACKAGE_NEEDS_INTEGRITY_VERIFICATION";
-    field public static final String ACTION_PACKAGE_UNSUSPENDED_MANUALLY = "android.intent.action.PACKAGE_UNSUSPENDED_MANUALLY";
-    field public static final String ACTION_PENDING_INCIDENT_REPORTS_CHANGED = "android.intent.action.PENDING_INCIDENT_REPORTS_CHANGED";
-    field public static final String ACTION_PRE_BOOT_COMPLETED = "android.intent.action.PRE_BOOT_COMPLETED";
-    field public static final String ACTION_QUERY_PACKAGE_RESTART = "android.intent.action.QUERY_PACKAGE_RESTART";
-    field public static final String ACTION_RESOLVE_INSTANT_APP_PACKAGE = "android.intent.action.RESOLVE_INSTANT_APP_PACKAGE";
-    field @RequiresPermission(android.Manifest.permission.REVIEW_ACCESSIBILITY_SERVICES) public static final String ACTION_REVIEW_ACCESSIBILITY_SERVICES = "android.intent.action.REVIEW_ACCESSIBILITY_SERVICES";
-    field @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS) public static final String ACTION_REVIEW_ONGOING_PERMISSION_USAGE = "android.intent.action.REVIEW_ONGOING_PERMISSION_USAGE";
-    field public static final String ACTION_REVIEW_PERMISSIONS = "android.intent.action.REVIEW_PERMISSIONS";
-    field @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS) public static final String ACTION_REVIEW_PERMISSION_USAGE = "android.intent.action.REVIEW_PERMISSION_USAGE";
-    field public static final String ACTION_ROLLBACK_COMMITTED = "android.intent.action.ROLLBACK_COMMITTED";
-    field public static final String ACTION_SHOW_SUSPENDED_APP_DETAILS = "android.intent.action.SHOW_SUSPENDED_APP_DETAILS";
-    field @Deprecated public static final String ACTION_SIM_STATE_CHANGED = "android.intent.action.SIM_STATE_CHANGED";
-    field public static final String ACTION_SPLIT_CONFIGURATION_CHANGED = "android.intent.action.SPLIT_CONFIGURATION_CHANGED";
-    field public static final String ACTION_UPGRADE_SETUP = "android.intent.action.UPGRADE_SETUP";
-    field public static final String ACTION_USER_ADDED = "android.intent.action.USER_ADDED";
-    field public static final String ACTION_USER_REMOVED = "android.intent.action.USER_REMOVED";
-    field public static final String ACTION_VOICE_ASSIST = "android.intent.action.VOICE_ASSIST";
-    field public static final String CATEGORY_LEANBACK_SETTINGS = "android.intent.category.LEANBACK_SETTINGS";
-    field public static final String EXTRA_CALLING_PACKAGE = "android.intent.extra.CALLING_PACKAGE";
-    field public static final String EXTRA_FORCE_FACTORY_RESET = "android.intent.extra.FORCE_FACTORY_RESET";
-    field public static final String EXTRA_INSTANT_APP_ACTION = "android.intent.extra.INSTANT_APP_ACTION";
-    field public static final String EXTRA_INSTANT_APP_BUNDLES = "android.intent.extra.INSTANT_APP_BUNDLES";
-    field public static final String EXTRA_INSTANT_APP_EXTRAS = "android.intent.extra.INSTANT_APP_EXTRAS";
-    field public static final String EXTRA_INSTANT_APP_FAILURE = "android.intent.extra.INSTANT_APP_FAILURE";
-    field public static final String EXTRA_INSTANT_APP_HOSTNAME = "android.intent.extra.INSTANT_APP_HOSTNAME";
-    field public static final String EXTRA_INSTANT_APP_SUCCESS = "android.intent.extra.INSTANT_APP_SUCCESS";
-    field public static final String EXTRA_INSTANT_APP_TOKEN = "android.intent.extra.INSTANT_APP_TOKEN";
-    field public static final String EXTRA_LONG_VERSION_CODE = "android.intent.extra.LONG_VERSION_CODE";
-    field public static final String EXTRA_ORIGINATING_UID = "android.intent.extra.ORIGINATING_UID";
-    field public static final String EXTRA_PACKAGES = "android.intent.extra.PACKAGES";
-    field public static final String EXTRA_PERMISSION_GROUP_NAME = "android.intent.extra.PERMISSION_GROUP_NAME";
-    field public static final String EXTRA_PERMISSION_NAME = "android.intent.extra.PERMISSION_NAME";
-    field public static final String EXTRA_REASON = "android.intent.extra.REASON";
-    field public static final String EXTRA_REMOTE_CALLBACK = "android.intent.extra.REMOTE_CALLBACK";
-    field public static final String EXTRA_RESULT_NEEDED = "android.intent.extra.RESULT_NEEDED";
-    field public static final String EXTRA_ROLE_NAME = "android.intent.extra.ROLE_NAME";
-    field public static final String EXTRA_UNKNOWN_INSTANT_APP = "android.intent.extra.UNKNOWN_INSTANT_APP";
-    field public static final String EXTRA_VERIFICATION_BUNDLE = "android.intent.extra.VERIFICATION_BUNDLE";
-    field public static final int FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT = 67108864; // 0x4000000
-    field public static final String METADATA_SETUP_VERSION = "android.SETUP_VERSION";
-  }
-
-  public class IntentFilter implements android.os.Parcelable {
-    method public final int getOrder();
-    method public final void setOrder(int);
-  }
-
-}
-
-package android.content.integrity {
-
-  public class AppIntegrityManager {
-    method @NonNull public String getCurrentRuleSetProvider();
-    method @NonNull public String getCurrentRuleSetVersion();
-    method public void updateRuleSet(@NonNull android.content.integrity.RuleSet, @NonNull android.content.IntentSender);
-    field public static final String EXTRA_STATUS = "android.content.integrity.extra.STATUS";
-    field public static final int STATUS_FAILURE = 1; // 0x1
-    field public static final int STATUS_SUCCESS = 0; // 0x0
-  }
-
-  public abstract class IntegrityFormula {
-    method @NonNull public static android.content.integrity.IntegrityFormula all(@NonNull android.content.integrity.IntegrityFormula...);
-    method @NonNull public static android.content.integrity.IntegrityFormula any(@NonNull android.content.integrity.IntegrityFormula...);
-    method @NonNull public static android.content.integrity.IntegrityFormula not(@NonNull android.content.integrity.IntegrityFormula);
-  }
-
-  public static final class IntegrityFormula.Application {
-    method @NonNull public static android.content.integrity.IntegrityFormula certificatesContain(@NonNull String);
-    method @NonNull public static android.content.integrity.IntegrityFormula isPreInstalled();
-    method @NonNull public static android.content.integrity.IntegrityFormula packageNameEquals(@NonNull String);
-    method @NonNull public static android.content.integrity.IntegrityFormula versionCodeEquals(@NonNull long);
-    method @NonNull public static android.content.integrity.IntegrityFormula versionCodeGreaterThan(@NonNull long);
-    method @NonNull public static android.content.integrity.IntegrityFormula versionCodeGreaterThanOrEqualTo(@NonNull long);
-  }
-
-  public static final class IntegrityFormula.Installer {
-    method @NonNull public static android.content.integrity.IntegrityFormula certificatesContain(@NonNull String);
-    method @NonNull public static android.content.integrity.IntegrityFormula notAllowedByManifest();
-    method @NonNull public static android.content.integrity.IntegrityFormula packageNameEquals(@NonNull String);
-  }
-
-  public static final class IntegrityFormula.SourceStamp {
-    method @NonNull public static android.content.integrity.IntegrityFormula notTrusted();
-    method @NonNull public static android.content.integrity.IntegrityFormula stampCertificateHashEquals(@NonNull String);
-  }
-
-  public final class Rule implements android.os.Parcelable {
-    ctor public Rule(@NonNull android.content.integrity.IntegrityFormula, int);
-    method public int describeContents();
-    method public int getEffect();
-    method @NonNull public android.content.integrity.IntegrityFormula getFormula();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.integrity.Rule> CREATOR;
-    field public static final int DENY = 0; // 0x0
-    field public static final int FORCE_ALLOW = 1; // 0x1
-  }
-
-  public class RuleSet {
-    method @NonNull public java.util.List<android.content.integrity.Rule> getRules();
-    method @NonNull public String getVersion();
-  }
-
-  public static class RuleSet.Builder {
-    ctor public RuleSet.Builder();
-    method @NonNull public android.content.integrity.RuleSet.Builder addRules(@NonNull java.util.List<android.content.integrity.Rule>);
-    method @NonNull public android.content.integrity.RuleSet build();
-    method @NonNull public android.content.integrity.RuleSet.Builder setVersion(@NonNull String);
-  }
-
-}
-
-package android.content.om {
-
-  public final class OverlayInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getCategory();
-    method @NonNull public String getPackageName();
-    method @Nullable public String getTargetOverlayableName();
-    method @NonNull public String getTargetPackageName();
-    method public int getUserId();
-    method public boolean isEnabled();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.om.OverlayInfo> CREATOR;
-  }
-
-  public class OverlayManager {
-    method @Nullable public android.content.om.OverlayInfo getOverlayInfo(@NonNull String, @NonNull android.os.UserHandle);
-    method @NonNull @RequiresPermission(anyOf={"android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL"}) public java.util.List<android.content.om.OverlayInfo> getOverlayInfosForTarget(@NonNull String, @NonNull android.os.UserHandle);
-    method @RequiresPermission(anyOf={"android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL"}) public void setEnabled(@NonNull String, boolean, @NonNull android.os.UserHandle) throws java.lang.IllegalStateException, java.lang.SecurityException;
-    method @RequiresPermission(anyOf={"android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL"}) public void setEnabledExclusiveInCategory(@NonNull String, @NonNull android.os.UserHandle) throws java.lang.IllegalStateException, java.lang.SecurityException;
-  }
-
-}
-
-package android.content.pm {
-
-  public class ApplicationInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
-    method public boolean isEncryptionAware();
-    method public boolean isInstantApp();
-    field public String credentialProtectedDataDir;
-    field public int targetSandboxVersion;
-  }
-
-  public class CrossProfileApps {
-    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_PROFILES) public void startActivity(@NonNull android.content.ComponentName, @NonNull android.os.UserHandle);
-  }
-
-  public class DataLoaderParams {
-    method @NonNull public static final android.content.pm.DataLoaderParams forIncremental(@NonNull android.content.ComponentName, @NonNull String);
-    method @NonNull public static final android.content.pm.DataLoaderParams forStreaming(@NonNull android.content.ComponentName, @NonNull String);
-    method @NonNull public final String getArguments();
-    method @NonNull public final android.content.ComponentName getComponentName();
-    method @NonNull public final int getType();
-  }
-
-  public final class InstallationFile {
-    method public long getLengthBytes();
-    method public int getLocation();
-    method @Nullable public byte[] getMetadata();
-    method @NonNull public String getName();
-    method @Nullable public byte[] getSignature();
-  }
-
-  public final class InstantAppInfo implements android.os.Parcelable {
-    ctor public InstantAppInfo(android.content.pm.ApplicationInfo, String[], String[]);
-    ctor public InstantAppInfo(String, CharSequence, String[], String[]);
-    method public int describeContents();
-    method @Nullable public android.content.pm.ApplicationInfo getApplicationInfo();
-    method @Nullable public String[] getGrantedPermissions();
-    method @NonNull public String getPackageName();
-    method @Nullable public String[] getRequestedPermissions();
-    method @NonNull public android.graphics.drawable.Drawable loadIcon(@NonNull android.content.pm.PackageManager);
-    method @NonNull public CharSequence loadLabel(@NonNull android.content.pm.PackageManager);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstantAppInfo> CREATOR;
-  }
-
-  public final class InstantAppIntentFilter implements android.os.Parcelable {
-    ctor public InstantAppIntentFilter(@Nullable String, @NonNull java.util.List<android.content.IntentFilter>);
-    method public int describeContents();
-    method public java.util.List<android.content.IntentFilter> getFilters();
-    method public String getSplitName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstantAppIntentFilter> CREATOR;
-  }
-
-  public final class InstantAppRequestInfo implements android.os.Parcelable {
-    ctor public InstantAppRequestInfo(@NonNull android.content.Intent, @Nullable int[], @NonNull android.os.UserHandle, boolean, @NonNull String);
-    method public int describeContents();
-    method @Nullable public int[] getHostDigestPrefix();
-    method @NonNull public android.content.Intent getIntent();
-    method @NonNull public String getToken();
-    method @NonNull public android.os.UserHandle getUserHandle();
-    method public boolean isRequesterInstantApp();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstantAppRequestInfo> CREATOR;
-  }
-
-  public final class InstantAppResolveInfo implements android.os.Parcelable {
-    ctor public InstantAppResolveInfo(@NonNull android.content.pm.InstantAppResolveInfo.InstantAppDigest, @Nullable String, @Nullable java.util.List<android.content.pm.InstantAppIntentFilter>, int);
-    ctor public InstantAppResolveInfo(@NonNull android.content.pm.InstantAppResolveInfo.InstantAppDigest, @Nullable String, @Nullable java.util.List<android.content.pm.InstantAppIntentFilter>, long, @Nullable android.os.Bundle);
-    ctor public InstantAppResolveInfo(@NonNull String, @Nullable String, @Nullable java.util.List<android.content.pm.InstantAppIntentFilter>);
-    ctor public InstantAppResolveInfo(@Nullable android.os.Bundle);
-    method public int describeContents();
-    method public byte[] getDigestBytes();
-    method public int getDigestPrefix();
-    method @Nullable public android.os.Bundle getExtras();
-    method public java.util.List<android.content.pm.InstantAppIntentFilter> getIntentFilters();
-    method public long getLongVersionCode();
-    method public String getPackageName();
-    method @Deprecated public int getVersionCode();
-    method public boolean shouldLetInstallerDecide();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstantAppResolveInfo> CREATOR;
-  }
-
-  public static final class InstantAppResolveInfo.InstantAppDigest implements android.os.Parcelable {
-    ctor public InstantAppResolveInfo.InstantAppDigest(@NonNull String);
-    method public int describeContents();
-    method public byte[][] getDigestBytes();
-    method public int[] getDigestPrefix();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstantAppResolveInfo.InstantAppDigest> CREATOR;
-    field public static final android.content.pm.InstantAppResolveInfo.InstantAppDigest UNDEFINED;
-  }
-
-  public final class IntentFilterVerificationInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public java.util.Set<java.lang.String> getDomains();
-    method public String getPackageName();
-    method public int getStatus();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.IntentFilterVerificationInfo> CREATOR;
-  }
-
-  public class LauncherApps {
-    method @Nullable public android.content.pm.LauncherApps.AppUsageLimit getAppUsageLimit(@NonNull String, @NonNull android.os.UserHandle);
-  }
-
-  public static final class LauncherApps.AppUsageLimit implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getTotalUsageLimit();
-    method public long getUsageRemaining();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.LauncherApps.AppUsageLimit> CREATOR;
-  }
-
-  public class PackageInstaller {
-    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setPermissionsResult(int, boolean);
-    field public static final int DATA_LOADER_TYPE_INCREMENTAL = 2; // 0x2
-    field public static final int DATA_LOADER_TYPE_NONE = 0; // 0x0
-    field public static final int DATA_LOADER_TYPE_STREAMING = 1; // 0x1
-    field public static final String EXTRA_DATA_LOADER_TYPE = "android.content.pm.extra.DATA_LOADER_TYPE";
-    field public static final int LOCATION_DATA_APP = 0; // 0x0
-    field public static final int LOCATION_MEDIA_DATA = 2; // 0x2
-    field public static final int LOCATION_MEDIA_OBB = 1; // 0x1
-  }
-
-  public static class PackageInstaller.Session implements java.io.Closeable {
-    method @RequiresPermission("com.android.permission.USE_INSTALLER_V2") public void addFile(int, @NonNull String, long, @NonNull byte[], @Nullable byte[]);
-    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void commitTransferred(@NonNull android.content.IntentSender);
-    method @Nullable @RequiresPermission("com.android.permission.USE_INSTALLER_V2") public android.content.pm.DataLoaderParams getDataLoaderParams();
-    method @RequiresPermission("com.android.permission.USE_INSTALLER_V2") public void removeFile(int, @NonNull String);
-  }
-
-  public static class PackageInstaller.SessionInfo implements android.os.Parcelable {
-    method public boolean getAllocateAggressive();
-    method @Deprecated public boolean getAllowDowngrade();
-    method public int getAutoRevokePermissionsMode();
-    method public boolean getDontKillApp();
-    method public boolean getEnableRollback();
-    method @Nullable public String[] getGrantedRuntimePermissions();
-    method public boolean getInstallAsFullApp(boolean);
-    method public boolean getInstallAsInstantApp(boolean);
-    method public boolean getInstallAsVirtualPreload();
-    method public boolean getRequestDowngrade();
-    method public int getRollbackDataPolicy();
-    method @NonNull public java.util.Set<java.lang.String> getWhitelistedRestrictedPermissions();
-  }
-
-  public static class PackageInstaller.SessionParams implements android.os.Parcelable {
-    method @RequiresPermission(android.Manifest.permission.ALLOCATE_AGGRESSIVE) public void setAllocateAggressive(boolean);
-    method @Deprecated public void setAllowDowngrade(boolean);
-    method @RequiresPermission(allOf={android.Manifest.permission.INSTALL_PACKAGES, "com.android.permission.USE_INSTALLER_V2"}) public void setDataLoaderParams(@NonNull android.content.pm.DataLoaderParams);
-    method public void setDontKillApp(boolean);
-    method public void setEnableRollback(boolean);
-    method public void setEnableRollback(boolean, int);
-    method @RequiresPermission(android.Manifest.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS) public void setGrantedRuntimePermissions(String[]);
-    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setInstallAsApex();
-    method public void setInstallAsInstantApp(boolean);
-    method public void setInstallAsVirtualPreload();
-    method public void setRequestDowngrade(boolean);
-    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setStaged();
-  }
-
-  public class PackageItemInfo {
-    method public static void forceSafeLabels();
-    method @Deprecated @NonNull public CharSequence loadSafeLabel(@NonNull android.content.pm.PackageManager);
-    method @NonNull public CharSequence loadSafeLabel(@NonNull android.content.pm.PackageManager, @FloatRange(from=0) float, int);
-  }
-
-  public abstract class PackageManager {
-    method @RequiresPermission("android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS") public abstract void addOnPermissionsChangeListener(@NonNull android.content.pm.PackageManager.OnPermissionsChangedListener);
-    method public abstract boolean arePermissionsIndividuallyControlled();
-    method @NonNull public abstract java.util.List<android.content.IntentFilter> getAllIntentFilters(@NonNull String);
-    method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public android.content.pm.ApplicationInfo getApplicationInfoAsUser(@NonNull String, int, @NonNull android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public android.content.pm.dex.ArtManager getArtManager();
-    method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_SHARED_LIBRARIES) public java.util.List<android.content.pm.SharedLibraryInfo> getDeclaredSharedLibraries(@NonNull String, int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public abstract String getDefaultBrowserPackageNameAsUser(int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.SET_HARMFUL_APP_WARNINGS) public CharSequence getHarmfulAppWarning(@NonNull String);
-    method @Nullable public String getIncidentReportApproverPackageName();
-    method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackagesAsUser(int, int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_INSTANT_APPS) public abstract android.graphics.drawable.Drawable getInstantAppIcon(String);
-    method @Nullable public abstract android.content.ComponentName getInstantAppInstallerComponent();
-    method @Nullable public abstract android.content.ComponentName getInstantAppResolverSettingsComponent();
-    method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_INSTANT_APPS) public abstract java.util.List<android.content.pm.InstantAppInfo> getInstantApps();
-    method @NonNull public abstract java.util.List<android.content.pm.IntentFilterVerificationInfo> getIntentFilterVerifications(@NonNull String);
-    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public abstract int getIntentVerificationStatusAsUser(@NonNull String, int);
-    method @android.content.pm.PackageManager.PermissionFlags @RequiresPermission(anyOf={android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS, android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS, android.Manifest.permission.GET_RUNTIME_PERMISSIONS}) public abstract int getPermissionFlags(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
-    method @NonNull @RequiresPermission(android.Manifest.permission.SUSPEND_APPS) public String[] getUnsuspendablePackages(@NonNull String[]);
-    method @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS) public abstract void grantRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
-    method @Deprecated public abstract int installExistingPackage(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @Deprecated public abstract int installExistingPackage(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public java.util.List<android.content.pm.ResolveInfo> queryBroadcastReceiversAsUser(@NonNull android.content.Intent, int, android.os.UserHandle);
-    method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public java.util.List<android.content.pm.ResolveInfo> queryIntentActivitiesAsUser(@NonNull android.content.Intent, int, @NonNull android.os.UserHandle);
-    method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public java.util.List<android.content.pm.ResolveInfo> queryIntentContentProvidersAsUser(@NonNull android.content.Intent, int, @NonNull android.os.UserHandle);
-    method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public java.util.List<android.content.pm.ResolveInfo> queryIntentServicesAsUser(@NonNull android.content.Intent, int, @NonNull android.os.UserHandle);
-    method public abstract void registerDexModule(@NonNull String, @Nullable android.content.pm.PackageManager.DexModuleRegisterCallback);
-    method @RequiresPermission("android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS") public abstract void removeOnPermissionsChangeListener(@NonNull android.content.pm.PackageManager.OnPermissionsChangedListener);
-    method public void replacePreferredActivity(@NonNull android.content.IntentFilter, int, @NonNull java.util.List<android.content.ComponentName>, @NonNull android.content.ComponentName);
-    method @RequiresPermission(android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS) public abstract void revokeRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS) public void revokeRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle, @NonNull String);
-    method public void sendDeviceCustomizationReadyBroadcast();
-    method @RequiresPermission(allOf={android.Manifest.permission.SET_PREFERRED_APPLICATIONS, android.Manifest.permission.INTERACT_ACROSS_USERS_FULL}) public abstract boolean setDefaultBrowserPackageNameAsUser(@Nullable String, int);
-    method @NonNull @RequiresPermission(android.Manifest.permission.SUSPEND_APPS) public String[] setDistractingPackageRestrictions(@NonNull String[], int);
-    method @RequiresPermission(android.Manifest.permission.SET_HARMFUL_APP_WARNINGS) public void setHarmfulAppWarning(@NonNull String, @Nullable CharSequence);
-    method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.SUSPEND_APPS) public String[] setPackagesSuspended(@Nullable String[], boolean, @Nullable android.os.PersistableBundle, @Nullable android.os.PersistableBundle, @Nullable String);
-    method @Nullable @RequiresPermission(android.Manifest.permission.SUSPEND_APPS) public String[] setPackagesSuspended(@Nullable String[], boolean, @Nullable android.os.PersistableBundle, @Nullable android.os.PersistableBundle, @Nullable android.content.pm.SuspendDialogInfo);
-    method @RequiresPermission(value=android.Manifest.permission.CHANGE_COMPONENT_ENABLED_STATE, conditional=true) public void setSyntheticAppDetailsActivityEnabled(@NonNull String, boolean);
-    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public abstract void setUpdateAvailable(@NonNull String, boolean);
-    method @RequiresPermission(android.Manifest.permission.SET_PREFERRED_APPLICATIONS) public abstract boolean updateIntentVerificationStatusAsUser(@NonNull String, int, int);
-    method @RequiresPermission(anyOf={android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS, android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS}) public abstract void updatePermissionFlags(@NonNull String, @NonNull String, @android.content.pm.PackageManager.PermissionFlags int, @android.content.pm.PackageManager.PermissionFlags int, @NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.INTENT_FILTER_VERIFICATION_AGENT) public abstract void verifyIntentFilter(int, int, @NonNull java.util.List<java.lang.String>);
-    field public static final String ACTION_REQUEST_PERMISSIONS = "android.content.pm.action.REQUEST_PERMISSIONS";
-    field public static final String EXTRA_REQUEST_PERMISSIONS_NAMES = "android.content.pm.extra.REQUEST_PERMISSIONS_NAMES";
-    field public static final String EXTRA_REQUEST_PERMISSIONS_RESULTS = "android.content.pm.extra.REQUEST_PERMISSIONS_RESULTS";
-    field public static final String FEATURE_BROADCAST_RADIO = "android.hardware.broadcastradio";
-    field public static final String FEATURE_CONTEXT_HUB = "android.hardware.context_hub";
-    field public static final String FEATURE_INCREMENTAL_DELIVERY = "android.software.incremental_delivery";
-    field public static final String FEATURE_REBOOT_ESCROW = "android.hardware.reboot_escrow";
-    field public static final String FEATURE_TELEPHONY_CARRIERLOCK = "android.hardware.telephony.carrierlock";
-    field public static final int FLAGS_PERMISSION_RESERVED_PERMISSION_CONTROLLER = -268435456; // 0xf0000000
-    field public static final int FLAG_PERMISSION_APPLY_RESTRICTION = 16384; // 0x4000
-    field public static final int FLAG_PERMISSION_AUTO_REVOKED = 131072; // 0x20000
-    field public static final int FLAG_PERMISSION_GRANTED_BY_DEFAULT = 32; // 0x20
-    field public static final int FLAG_PERMISSION_GRANTED_BY_ROLE = 32768; // 0x8000
-    field public static final int FLAG_PERMISSION_ONE_TIME = 65536; // 0x10000
-    field public static final int FLAG_PERMISSION_POLICY_FIXED = 4; // 0x4
-    field public static final int FLAG_PERMISSION_RESTRICTION_INSTALLER_EXEMPT = 2048; // 0x800
-    field public static final int FLAG_PERMISSION_RESTRICTION_SYSTEM_EXEMPT = 4096; // 0x1000
-    field public static final int FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT = 8192; // 0x2000
-    field public static final int FLAG_PERMISSION_REVIEW_REQUIRED = 64; // 0x40
-    field public static final int FLAG_PERMISSION_REVOKED_COMPAT = 8; // 0x8
-    field @Deprecated public static final int FLAG_PERMISSION_REVOKE_ON_UPGRADE = 8; // 0x8
-    field public static final int FLAG_PERMISSION_SYSTEM_FIXED = 16; // 0x10
-    field public static final int FLAG_PERMISSION_USER_FIXED = 2; // 0x2
-    field public static final int FLAG_PERMISSION_USER_SENSITIVE_WHEN_DENIED = 512; // 0x200
-    field public static final int FLAG_PERMISSION_USER_SENSITIVE_WHEN_GRANTED = 256; // 0x100
-    field public static final int FLAG_PERMISSION_USER_SET = 1; // 0x1
-    field public static final int INSTALL_FAILED_ALREADY_EXISTS = -1; // 0xffffffff
-    field public static final int INSTALL_FAILED_CONFLICTING_PROVIDER = -13; // 0xfffffff3
-    field public static final int INSTALL_FAILED_CONTAINER_ERROR = -18; // 0xffffffee
-    field public static final int INSTALL_FAILED_CPU_ABI_INCOMPATIBLE = -16; // 0xfffffff0
-    field public static final int INSTALL_FAILED_DEXOPT = -11; // 0xfffffff5
-    field public static final int INSTALL_FAILED_DUPLICATE_PACKAGE = -5; // 0xfffffffb
-    field public static final int INSTALL_FAILED_INSUFFICIENT_STORAGE = -4; // 0xfffffffc
-    field public static final int INSTALL_FAILED_INTERNAL_ERROR = -110; // 0xffffff92
-    field public static final int INSTALL_FAILED_INVALID_APK = -2; // 0xfffffffe
-    field public static final int INSTALL_FAILED_INVALID_INSTALL_LOCATION = -19; // 0xffffffed
-    field public static final int INSTALL_FAILED_INVALID_URI = -3; // 0xfffffffd
-    field public static final int INSTALL_FAILED_MEDIA_UNAVAILABLE = -20; // 0xffffffec
-    field public static final int INSTALL_FAILED_MISSING_FEATURE = -17; // 0xffffffef
-    field public static final int INSTALL_FAILED_MISSING_SHARED_LIBRARY = -9; // 0xfffffff7
-    field public static final int INSTALL_FAILED_NEWER_SDK = -14; // 0xfffffff2
-    field public static final int INSTALL_FAILED_NO_SHARED_USER = -6; // 0xfffffffa
-    field public static final int INSTALL_FAILED_OLDER_SDK = -12; // 0xfffffff4
-    field public static final int INSTALL_FAILED_PACKAGE_CHANGED = -23; // 0xffffffe9
-    field public static final int INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE = -26; // 0xffffffe6
-    field public static final int INSTALL_FAILED_REPLACE_COULDNT_DELETE = -10; // 0xfffffff6
-    field public static final int INSTALL_FAILED_SANDBOX_VERSION_DOWNGRADE = -27; // 0xffffffe5
-    field public static final int INSTALL_FAILED_SHARED_USER_INCOMPATIBLE = -8; // 0xfffffff8
-    field public static final int INSTALL_FAILED_TEST_ONLY = -15; // 0xfffffff1
-    field public static final int INSTALL_FAILED_UPDATE_INCOMPATIBLE = -7; // 0xfffffff9
-    field public static final int INSTALL_FAILED_VERIFICATION_FAILURE = -22; // 0xffffffea
-    field public static final int INSTALL_FAILED_VERIFICATION_TIMEOUT = -21; // 0xffffffeb
-    field public static final int INSTALL_PARSE_FAILED_BAD_MANIFEST = -101; // 0xffffff9b
-    field public static final int INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME = -106; // 0xffffff96
-    field public static final int INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID = -107; // 0xffffff95
-    field public static final int INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING = -105; // 0xffffff97
-    field public static final int INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES = -104; // 0xffffff98
-    field public static final int INSTALL_PARSE_FAILED_MANIFEST_EMPTY = -109; // 0xffffff93
-    field public static final int INSTALL_PARSE_FAILED_MANIFEST_MALFORMED = -108; // 0xffffff94
-    field public static final int INSTALL_PARSE_FAILED_NOT_APK = -100; // 0xffffff9c
-    field public static final int INSTALL_PARSE_FAILED_NO_CERTIFICATES = -103; // 0xffffff99
-    field public static final int INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION = -102; // 0xffffff9a
-    field public static final int INSTALL_SUCCEEDED = 1; // 0x1
-    field public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS = 2; // 0x2
-    field public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK = 4; // 0x4
-    field public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK = 1; // 0x1
-    field public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER = 3; // 0x3
-    field public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED = 0; // 0x0
-    field public static final int INTENT_FILTER_VERIFICATION_FAILURE = -1; // 0xffffffff
-    field public static final int INTENT_FILTER_VERIFICATION_SUCCESS = 1; // 0x1
-    field @Deprecated public static final int MASK_PERMISSION_FLAGS = 255; // 0xff
-    field public static final int MATCH_ANY_USER = 4194304; // 0x400000
-    field public static final int MATCH_FACTORY_ONLY = 2097152; // 0x200000
-    field public static final int MATCH_INSTANT = 8388608; // 0x800000
-    field public static final int MODULE_APEX_NAME = 1; // 0x1
-    field public static final int RESTRICTION_HIDE_FROM_SUGGESTIONS = 1; // 0x1
-    field public static final int RESTRICTION_HIDE_NOTIFICATIONS = 2; // 0x2
-    field public static final int RESTRICTION_NONE = 0; // 0x0
-  }
-
-  public abstract static class PackageManager.DexModuleRegisterCallback {
-    ctor public PackageManager.DexModuleRegisterCallback();
-    method public abstract void onDexModuleRegistered(String, boolean, String);
-  }
-
-  public static interface PackageManager.OnPermissionsChangedListener {
-    method public void onPermissionsChanged(int);
-  }
-
-  @IntDef(prefix={"FLAG_PERMISSION_"}, value={android.content.pm.PackageManager.FLAG_PERMISSION_USER_SET, android.content.pm.PackageManager.FLAG_PERMISSION_USER_FIXED, android.content.pm.PackageManager.FLAG_PERMISSION_POLICY_FIXED, android.content.pm.PackageManager.FLAG_PERMISSION_REVOKE_ON_UPGRADE, android.content.pm.PackageManager.FLAG_PERMISSION_SYSTEM_FIXED, android.content.pm.PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT, android.content.pm.PackageManager.FLAG_PERMISSION_USER_SENSITIVE_WHEN_GRANTED, android.content.pm.PackageManager.FLAG_PERMISSION_USER_SENSITIVE_WHEN_DENIED, android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT, android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_SYSTEM_EXEMPT, android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_INSTALLER_EXEMPT, android.content.pm.PackageManager.FLAG_PERMISSION_APPLY_RESTRICTION, android.content.pm.PackageManager.FLAG_PERMISSION_GRANTED_BY_ROLE, android.content.pm.PackageManager.FLAG_PERMISSION_REVOKED_COMPAT, android.content.pm.PackageManager.FLAG_PERMISSION_ONE_TIME, android.content.pm.PackageManager.FLAG_PERMISSION_AUTO_REVOKED}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface PackageManager.PermissionFlags {
-  }
-
-  public class PermissionGroupInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
-    field @StringRes public final int backgroundRequestDetailResourceId;
-    field @StringRes public final int backgroundRequestResourceId;
-    field @StringRes public final int requestDetailResourceId;
-    field @StringRes public int requestRes;
-  }
-
-  public class PermissionInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
-    field public static final int FLAG_REMOVED = 2; // 0x2
-    field public static final int PROTECTION_FLAG_APP_PREDICTOR = 2097152; // 0x200000
-    field public static final int PROTECTION_FLAG_COMPANION = 8388608; // 0x800000
-    field public static final int PROTECTION_FLAG_CONFIGURATOR = 524288; // 0x80000
-    field public static final int PROTECTION_FLAG_DOCUMENTER = 262144; // 0x40000
-    field public static final int PROTECTION_FLAG_INCIDENT_REPORT_APPROVER = 1048576; // 0x100000
-    field public static final int PROTECTION_FLAG_OEM = 16384; // 0x4000
-    field public static final int PROTECTION_FLAG_RETAIL_DEMO = 16777216; // 0x1000000
-    field public static final int PROTECTION_FLAG_SYSTEM_TEXT_CLASSIFIER = 65536; // 0x10000
-    field public static final int PROTECTION_FLAG_WELLBEING = 131072; // 0x20000
-    field @Nullable public final String backgroundPermission;
-    field @StringRes public int requestRes;
-  }
-
-  public class ResolveInfo implements android.os.Parcelable {
-    field public boolean handleAllWebDataURI;
-  }
-
-  public final class ShortcutInfo implements android.os.Parcelable {
-    method @Nullable public android.app.Person[] getPersons();
-  }
-
-  public class ShortcutManager {
-    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_APP_PREDICTIONS) public java.util.List<android.content.pm.ShortcutManager.ShareShortcutInfo> getShareTargets(@NonNull android.content.IntentFilter);
-    method public boolean hasShareTargets(@NonNull String);
-  }
-
-  public static final class ShortcutManager.ShareShortcutInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.content.pm.ShortcutInfo getShortcutInfo();
-    method @NonNull public android.content.ComponentName getTargetComponent();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ShortcutManager.ShareShortcutInfo> CREATOR;
-  }
-
-  public final class SuspendDialogInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int BUTTON_ACTION_MORE_DETAILS = 0; // 0x0
-    field public static final int BUTTON_ACTION_UNSUSPEND = 1; // 0x1
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.SuspendDialogInfo> CREATOR;
-  }
-
-  public static final class SuspendDialogInfo.Builder {
-    ctor public SuspendDialogInfo.Builder();
-    method @NonNull public android.content.pm.SuspendDialogInfo build();
-    method @NonNull public android.content.pm.SuspendDialogInfo.Builder setIcon(@DrawableRes int);
-    method @NonNull public android.content.pm.SuspendDialogInfo.Builder setMessage(@NonNull String);
-    method @NonNull public android.content.pm.SuspendDialogInfo.Builder setMessage(@StringRes int);
-    method @NonNull public android.content.pm.SuspendDialogInfo.Builder setNeutralButtonAction(int);
-    method @NonNull public android.content.pm.SuspendDialogInfo.Builder setNeutralButtonText(@StringRes int);
-    method @NonNull public android.content.pm.SuspendDialogInfo.Builder setTitle(@StringRes int);
-  }
-
-}
-
-package android.content.pm.dex {
-
-  public class ArtManager {
-    method @RequiresPermission(allOf={android.Manifest.permission.READ_RUNTIME_PROFILES, android.Manifest.permission.PACKAGE_USAGE_STATS}) public boolean isRuntimeProfilingEnabled(int);
-    method @RequiresPermission(allOf={android.Manifest.permission.READ_RUNTIME_PROFILES, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void snapshotRuntimeProfile(int, @Nullable String, @Nullable String, @NonNull java.util.concurrent.Executor, @NonNull android.content.pm.dex.ArtManager.SnapshotRuntimeProfileCallback);
-    field public static final int PROFILE_APPS = 0; // 0x0
-    field public static final int PROFILE_BOOT_IMAGE = 1; // 0x1
-    field public static final int SNAPSHOT_FAILED_CODE_PATH_NOT_FOUND = 1; // 0x1
-    field public static final int SNAPSHOT_FAILED_INTERNAL_ERROR = 2; // 0x2
-    field public static final int SNAPSHOT_FAILED_PACKAGE_NOT_FOUND = 0; // 0x0
-  }
-
-  public abstract static class ArtManager.SnapshotRuntimeProfileCallback {
-    ctor public ArtManager.SnapshotRuntimeProfileCallback();
-    method public abstract void onError(int);
-    method public abstract void onSuccess(android.os.ParcelFileDescriptor);
-  }
-
-}
-
-package android.content.pm.permission {
-
-  @Deprecated public final class RuntimePermissionPresentationInfo implements android.os.Parcelable {
-    ctor @Deprecated public RuntimePermissionPresentationInfo(CharSequence, boolean, boolean);
-    method @Deprecated public int describeContents();
-    method @Deprecated @NonNull public CharSequence getLabel();
-    method @Deprecated public boolean isGranted();
-    method @Deprecated public boolean isStandard();
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.content.pm.permission.RuntimePermissionPresentationInfo> CREATOR;
-  }
-
-}
-
-package android.content.rollback {
-
-  public final class PackageRollbackInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public String getPackageName();
-    method @NonNull public android.content.pm.VersionedPackage getVersionRolledBackFrom();
-    method @NonNull public android.content.pm.VersionedPackage getVersionRolledBackTo();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.rollback.PackageRollbackInfo> CREATOR;
-  }
-
-  public final class RollbackInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public java.util.List<android.content.pm.VersionedPackage> getCausePackages();
-    method public int getCommittedSessionId();
-    method @NonNull public java.util.List<android.content.rollback.PackageRollbackInfo> getPackages();
-    method public int getRollbackId();
-    method public boolean isStaged();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.content.rollback.RollbackInfo> CREATOR;
-  }
-
-  public final class RollbackManager {
-    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_ROLLBACKS, "android.permission.TEST_MANAGE_ROLLBACKS"}) public void commitRollback(int, @NonNull java.util.List<android.content.pm.VersionedPackage>, @NonNull android.content.IntentSender);
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_ROLLBACKS, "android.permission.TEST_MANAGE_ROLLBACKS"}) public java.util.List<android.content.rollback.RollbackInfo> getAvailableRollbacks();
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_ROLLBACKS, "android.permission.TEST_MANAGE_ROLLBACKS"}) public java.util.List<android.content.rollback.RollbackInfo> getRecentlyCommittedRollbacks();
-    field public static final String EXTRA_STATUS = "android.content.rollback.extra.STATUS";
-    field public static final String EXTRA_STATUS_MESSAGE = "android.content.rollback.extra.STATUS_MESSAGE";
-    field public static final int STATUS_FAILURE = 1; // 0x1
-    field public static final int STATUS_FAILURE_INSTALL = 3; // 0x3
-    field public static final int STATUS_FAILURE_ROLLBACK_UNAVAILABLE = 2; // 0x2
-    field public static final int STATUS_SUCCESS = 0; // 0x0
-  }
-
-}
-
-package android.debug {
-
-  public class AdbManager {
-    method @RequiresPermission(android.Manifest.permission.MANAGE_DEBUGGING) public boolean isAdbWifiQrSupported();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_DEBUGGING) public boolean isAdbWifiSupported();
-  }
-
-}
-
-package android.hardware {
-
-  public final class Sensor {
-    method public java.util.UUID getUuid();
-    method public boolean isDataInjectionSupported();
-    field public static final String STRING_TYPE_DYNAMIC_SENSOR_META = "android.sensor.dynamic_sensor_meta";
-    field public static final String STRING_TYPE_WRIST_TILT_GESTURE = "android.sensor.wrist_tilt_gesture";
-    field public static final int TYPE_DYNAMIC_SENSOR_META = 32; // 0x20
-    field public static final int TYPE_WRIST_TILT_GESTURE = 26; // 0x1a
-  }
-
-  public abstract class SensorManager {
-    method public boolean initDataInjection(boolean);
-    method public boolean injectSensorData(android.hardware.Sensor, float[], int, long);
-  }
-
-}
-
-package android.hardware.biometrics {
-
-  public static interface BiometricManager.Authenticators {
-    field @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static final int BIOMETRIC_CONVENIENCE = 4095; // 0xfff
-    field @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static final int EMPTY_SET = 0; // 0x0
-  }
-
-}
-
-package android.hardware.camera2 {
-
-  public abstract class CameraDevice implements java.lang.AutoCloseable {
-    method @Deprecated public abstract void createCustomCaptureSession(android.hardware.camera2.params.InputConfiguration, @NonNull java.util.List<android.hardware.camera2.params.OutputConfiguration>, int, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
-    field public static final int SESSION_OPERATION_MODE_CONSTRAINED_HIGH_SPEED = 1; // 0x1
-    field public static final int SESSION_OPERATION_MODE_NORMAL = 0; // 0x0
-    field public static final int SESSION_OPERATION_MODE_VENDOR_START = 32768; // 0x8000
-  }
-
-}
-
-package android.hardware.camera2.params {
-
-  public final class OutputConfiguration implements android.os.Parcelable {
-    ctor public OutputConfiguration(@NonNull android.view.Surface, int);
-    ctor public OutputConfiguration(int, @NonNull android.view.Surface, int);
-    method public int getRotation();
-    field public static final int ROTATION_0 = 0; // 0x0
-    field public static final int ROTATION_180 = 2; // 0x2
-    field public static final int ROTATION_270 = 3; // 0x3
-    field public static final int ROTATION_90 = 1; // 0x1
-  }
-
-}
-
-package android.hardware.display {
-
-  public final class AmbientBrightnessDayStats implements android.os.Parcelable {
-    method public int describeContents();
-    method public float[] getBucketBoundaries();
-    method public java.time.LocalDate getLocalDate();
-    method public float[] getStats();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.display.AmbientBrightnessDayStats> CREATOR;
-  }
-
-  public final class BrightnessChangeEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.display.BrightnessChangeEvent> CREATOR;
-    field public final float batteryLevel;
-    field public final float brightness;
-    field public final long colorSampleDuration;
-    field public final int colorTemperature;
-    field @Nullable public final long[] colorValueBuckets;
-    field public final boolean isDefaultBrightnessConfig;
-    field public final boolean isUserSetBrightness;
-    field public final float lastBrightness;
-    field public final long[] luxTimestamps;
-    field public final float[] luxValues;
-    field public final boolean nightMode;
-    field public final String packageName;
-    field public final float powerBrightnessFactor;
-    field public final long timeStamp;
-  }
-
-  public final class BrightnessConfiguration implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.hardware.display.BrightnessCorrection getCorrectionByCategory(int);
-    method @Nullable public android.hardware.display.BrightnessCorrection getCorrectionByPackageName(@NonNull String);
-    method public android.util.Pair<float[],float[]> getCurve();
-    method public float getShortTermModelLowerLuxMultiplier();
-    method public long getShortTermModelTimeoutMillis();
-    method public float getShortTermModelUpperLuxMultiplier();
-    method public boolean shouldCollectColorSamples();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.display.BrightnessConfiguration> CREATOR;
-    field public static final long SHORT_TERM_TIMEOUT_UNSET = -1L; // 0xffffffffffffffffL
-  }
-
-  public static class BrightnessConfiguration.Builder {
-    ctor public BrightnessConfiguration.Builder(float[], float[]);
-    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder addCorrectionByCategory(int, @NonNull android.hardware.display.BrightnessCorrection);
-    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder addCorrectionByPackageName(@NonNull String, @NonNull android.hardware.display.BrightnessCorrection);
-    method @NonNull public android.hardware.display.BrightnessConfiguration build();
-    method public int getMaxCorrectionsByCategory();
-    method public int getMaxCorrectionsByPackageName();
-    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder setDescription(@Nullable String);
-    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder setShortTermModelLowerLuxMultiplier(@FloatRange(from=0.0f) float);
-    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder setShortTermModelTimeoutMillis(long);
-    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder setShortTermModelUpperLuxMultiplier(@FloatRange(from=0.0f) float);
-    method @NonNull public android.hardware.display.BrightnessConfiguration.Builder setShouldCollectColorSamples(boolean);
-  }
-
-  public final class BrightnessCorrection implements android.os.Parcelable {
-    method @FloatRange(from=0.0) public float apply(@FloatRange(from=0.0) float);
-    method @NonNull public static android.hardware.display.BrightnessCorrection createScaleAndTranslateLog(float, float);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.display.BrightnessCorrection> CREATOR;
-  }
-
-  public final class ColorDisplayManager {
-    method @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public int getNightDisplayAutoMode();
-    method @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public int getTransformCapabilities();
-    method @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public boolean setAppSaturationLevel(@NonNull String, @IntRange(from=0, to=100) int);
-    method @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public boolean setNightDisplayAutoMode(int);
-    method @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public boolean setNightDisplayCustomEndTime(@NonNull java.time.LocalTime);
-    method @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public boolean setNightDisplayCustomStartTime(@NonNull java.time.LocalTime);
-    method @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public boolean setSaturationLevel(@IntRange(from=0, to=100) int);
-    field public static final int AUTO_MODE_CUSTOM_TIME = 1; // 0x1
-    field public static final int AUTO_MODE_DISABLED = 0; // 0x0
-    field public static final int AUTO_MODE_TWILIGHT = 2; // 0x2
-    field public static final int CAPABILITY_HARDWARE_ACCELERATION_GLOBAL = 2; // 0x2
-    field public static final int CAPABILITY_HARDWARE_ACCELERATION_PER_APP = 4; // 0x4
-    field public static final int CAPABILITY_NONE = 0; // 0x0
-    field public static final int CAPABILITY_PROTECTED_CONTENT = 1; // 0x1
-  }
-
-  public final class DisplayManager {
-    method @RequiresPermission(android.Manifest.permission.ACCESS_AMBIENT_LIGHT_STATS) public java.util.List<android.hardware.display.AmbientBrightnessDayStats> getAmbientBrightnessStats();
-    method @RequiresPermission(android.Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS) public android.hardware.display.BrightnessConfiguration getBrightnessConfiguration();
-    method @RequiresPermission(android.Manifest.permission.BRIGHTNESS_SLIDER_USAGE) public java.util.List<android.hardware.display.BrightnessChangeEvent> getBrightnessEvents();
-    method @Nullable @RequiresPermission(android.Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS) public android.hardware.display.BrightnessConfiguration getDefaultBrightnessConfiguration();
-    method public android.util.Pair<float[],float[]> getMinimumBrightnessCurve();
-    method public android.graphics.Point getStableDisplaySize();
-    method @RequiresPermission(android.Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS) public void setBrightnessConfiguration(android.hardware.display.BrightnessConfiguration);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_SATURATION) public void setSaturationLevel(float);
-  }
-
-}
-
-package android.hardware.hdmi {
-
-  public abstract class HdmiClient {
-    method public android.hardware.hdmi.HdmiDeviceInfo getActiveSource();
-    method public void sendKeyEvent(int, boolean);
-    method public void sendVendorCommand(int, byte[], boolean);
-    method public void setVendorCommandListener(@NonNull android.hardware.hdmi.HdmiControlManager.VendorCommandListener);
-  }
-
-  public final class HdmiControlManager {
-    method @RequiresPermission(android.Manifest.permission.HDMI_CEC) public void addHotplugEventListener(android.hardware.hdmi.HdmiControlManager.HotplugEventListener);
-    method @Nullable public android.hardware.hdmi.HdmiClient getClient(int);
-    method @NonNull public java.util.List<android.hardware.hdmi.HdmiDeviceInfo> getConnectedDevices();
-    method public int getPhysicalAddress();
-    method @Nullable public android.hardware.hdmi.HdmiPlaybackClient getPlaybackClient();
-    method @Nullable public android.hardware.hdmi.HdmiSwitchClient getSwitchClient();
-    method @Nullable public android.hardware.hdmi.HdmiTvClient getTvClient();
-    method public boolean isDeviceConnected(@NonNull android.hardware.hdmi.HdmiDeviceInfo);
-    method public void powerOffDevice(@NonNull android.hardware.hdmi.HdmiDeviceInfo);
-    method @RequiresPermission(android.Manifest.permission.HDMI_CEC) public void removeHotplugEventListener(android.hardware.hdmi.HdmiControlManager.HotplugEventListener);
-    method public void setActiveSource(@NonNull android.hardware.hdmi.HdmiDeviceInfo);
-    method @RequiresPermission(android.Manifest.permission.HDMI_CEC) public void setStandbyMode(boolean);
-    field public static final String ACTION_OSD_MESSAGE = "android.hardware.hdmi.action.OSD_MESSAGE";
-    field public static final int AVR_VOLUME_MUTED = 101; // 0x65
-    field public static final int CLEAR_TIMER_STATUS_CEC_DISABLE = 162; // 0xa2
-    field public static final int CLEAR_TIMER_STATUS_CHECK_RECORDER_CONNECTION = 160; // 0xa0
-    field public static final int CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE = 161; // 0xa1
-    field public static final int CLEAR_TIMER_STATUS_TIMER_CLEARED = 128; // 0x80
-    field public static final int CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_NO_INFO_AVAILABLE = 2; // 0x2
-    field public static final int CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_NO_MATCHING = 1; // 0x1
-    field public static final int CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_RECORDING = 0; // 0x0
-    field public static final int CONTROL_STATE_CHANGED_REASON_SETTING = 1; // 0x1
-    field public static final int CONTROL_STATE_CHANGED_REASON_STANDBY = 3; // 0x3
-    field public static final int CONTROL_STATE_CHANGED_REASON_START = 0; // 0x0
-    field public static final int CONTROL_STATE_CHANGED_REASON_WAKEUP = 2; // 0x2
-    field public static final int DEVICE_EVENT_ADD_DEVICE = 1; // 0x1
-    field public static final int DEVICE_EVENT_REMOVE_DEVICE = 2; // 0x2
-    field public static final int DEVICE_EVENT_UPDATE_DEVICE = 3; // 0x3
-    field public static final String EXTRA_MESSAGE_EXTRA_PARAM1 = "android.hardware.hdmi.extra.MESSAGE_EXTRA_PARAM1";
-    field public static final String EXTRA_MESSAGE_ID = "android.hardware.hdmi.extra.MESSAGE_ID";
-    field public static final int ONE_TOUCH_RECORD_ALREADY_RECORDING = 18; // 0x12
-    field public static final int ONE_TOUCH_RECORD_CEC_DISABLED = 51; // 0x33
-    field public static final int ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION = 49; // 0x31
-    field public static final int ONE_TOUCH_RECORD_DISALLOW_TO_COPY = 13; // 0xd
-    field public static final int ONE_TOUCH_RECORD_DISALLOW_TO_FUTHER_COPIES = 14; // 0xe
-    field public static final int ONE_TOUCH_RECORD_FAIL_TO_RECORD_DISPLAYED_SCREEN = 50; // 0x32
-    field public static final int ONE_TOUCH_RECORD_INVALID_EXTERNAL_PHYSICAL_ADDRESS = 10; // 0xa
-    field public static final int ONE_TOUCH_RECORD_INVALID_EXTERNAL_PLUG_NUMBER = 9; // 0x9
-    field public static final int ONE_TOUCH_RECORD_MEDIA_PROBLEM = 21; // 0x15
-    field public static final int ONE_TOUCH_RECORD_MEDIA_PROTECTED = 19; // 0x13
-    field public static final int ONE_TOUCH_RECORD_NOT_ENOUGH_SPACE = 22; // 0x16
-    field public static final int ONE_TOUCH_RECORD_NO_MEDIA = 16; // 0x10
-    field public static final int ONE_TOUCH_RECORD_NO_OR_INSUFFICIENT_CA_ENTITLEMENTS = 12; // 0xc
-    field public static final int ONE_TOUCH_RECORD_NO_SOURCE_SIGNAL = 20; // 0x14
-    field public static final int ONE_TOUCH_RECORD_OTHER_REASON = 31; // 0x1f
-    field public static final int ONE_TOUCH_RECORD_PARENT_LOCK_ON = 23; // 0x17
-    field public static final int ONE_TOUCH_RECORD_PLAYING = 17; // 0x11
-    field public static final int ONE_TOUCH_RECORD_PREVIOUS_RECORDING_IN_PROGRESS = 48; // 0x30
-    field public static final int ONE_TOUCH_RECORD_RECORDING_ALREADY_TERMINATED = 27; // 0x1b
-    field public static final int ONE_TOUCH_RECORD_RECORDING_ANALOGUE_SERVICE = 3; // 0x3
-    field public static final int ONE_TOUCH_RECORD_RECORDING_CURRENTLY_SELECTED_SOURCE = 1; // 0x1
-    field public static final int ONE_TOUCH_RECORD_RECORDING_DIGITAL_SERVICE = 2; // 0x2
-    field public static final int ONE_TOUCH_RECORD_RECORDING_EXTERNAL_INPUT = 4; // 0x4
-    field public static final int ONE_TOUCH_RECORD_RECORDING_TERMINATED_NORMALLY = 26; // 0x1a
-    field public static final int ONE_TOUCH_RECORD_UNABLE_ANALOGUE_SERVICE = 6; // 0x6
-    field public static final int ONE_TOUCH_RECORD_UNABLE_DIGITAL_SERVICE = 5; // 0x5
-    field public static final int ONE_TOUCH_RECORD_UNABLE_SELECTED_SERVICE = 7; // 0x7
-    field public static final int ONE_TOUCH_RECORD_UNSUPPORTED_CA = 11; // 0xb
-    field public static final int OSD_MESSAGE_ARC_CONNECTED_INVALID_PORT = 1; // 0x1
-    field public static final int OSD_MESSAGE_AVR_VOLUME_CHANGED = 2; // 0x2
-    field public static final int POWER_STATUS_ON = 0; // 0x0
-    field public static final int POWER_STATUS_STANDBY = 1; // 0x1
-    field public static final int POWER_STATUS_TRANSIENT_TO_ON = 2; // 0x2
-    field public static final int POWER_STATUS_TRANSIENT_TO_STANDBY = 3; // 0x3
-    field public static final int POWER_STATUS_UNKNOWN = -1; // 0xffffffff
-    field @Deprecated public static final int RESULT_ALREADY_IN_PROGRESS = 4; // 0x4
-    field public static final int RESULT_COMMUNICATION_FAILED = 7; // 0x7
-    field public static final int RESULT_EXCEPTION = 5; // 0x5
-    field public static final int RESULT_INCORRECT_MODE = 6; // 0x6
-    field public static final int RESULT_SOURCE_NOT_AVAILABLE = 2; // 0x2
-    field public static final int RESULT_SUCCESS = 0; // 0x0
-    field public static final int RESULT_TARGET_NOT_AVAILABLE = 3; // 0x3
-    field public static final int RESULT_TIMEOUT = 1; // 0x1
-    field public static final int TIMER_RECORDING_RESULT_EXTRA_CEC_DISABLED = 3; // 0x3
-    field public static final int TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION = 1; // 0x1
-    field public static final int TIMER_RECORDING_RESULT_EXTRA_FAIL_TO_RECORD_SELECTED_SOURCE = 2; // 0x2
-    field public static final int TIMER_RECORDING_RESULT_EXTRA_NO_ERROR = 0; // 0x0
-    field public static final int TIMER_RECORDING_TYPE_ANALOGUE = 2; // 0x2
-    field public static final int TIMER_RECORDING_TYPE_DIGITAL = 1; // 0x1
-    field public static final int TIMER_RECORDING_TYPE_EXTERNAL = 3; // 0x3
-    field public static final int TIMER_STATUS_MEDIA_INFO_NOT_PRESENT = 2; // 0x2
-    field public static final int TIMER_STATUS_MEDIA_INFO_PRESENT_NOT_PROTECTED = 0; // 0x0
-    field public static final int TIMER_STATUS_MEDIA_INFO_PRESENT_PROTECTED = 1; // 0x1
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_CA_NOT_SUPPORTED = 6; // 0x6
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_CLOCK_FAILURE = 10; // 0xa
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_DATE_OUT_OF_RANGE = 2; // 0x2
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_DUPLICATED = 14; // 0xe
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_INVALID_EXTERNAL_PHYSICAL_NUMBER = 5; // 0x5
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_INVALID_EXTERNAL_PLUG_NUMBER = 4; // 0x4
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_INVALID_SEQUENCE = 3; // 0x3
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_NO_CA_ENTITLEMENTS = 7; // 0x7
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_NO_FREE_TIME = 1; // 0x1
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_PARENTAL_LOCK_ON = 9; // 0x9
-    field public static final int TIMER_STATUS_NOT_PROGRAMMED_UNSUPPORTED_RESOLUTION = 8; // 0x8
-    field public static final int TIMER_STATUS_PROGRAMMED_INFO_ENOUGH_SPACE = 8; // 0x8
-    field public static final int TIMER_STATUS_PROGRAMMED_INFO_MIGHT_NOT_ENOUGH_SPACE = 11; // 0xb
-    field public static final int TIMER_STATUS_PROGRAMMED_INFO_NOT_ENOUGH_SPACE = 9; // 0x9
-    field public static final int TIMER_STATUS_PROGRAMMED_INFO_NO_MEDIA_INFO = 10; // 0xa
-  }
-
-  @IntDef({android.hardware.hdmi.HdmiControlManager.RESULT_SUCCESS, android.hardware.hdmi.HdmiControlManager.RESULT_TIMEOUT, android.hardware.hdmi.HdmiControlManager.RESULT_SOURCE_NOT_AVAILABLE, android.hardware.hdmi.HdmiControlManager.RESULT_TARGET_NOT_AVAILABLE, android.hardware.hdmi.HdmiControlManager.RESULT_ALREADY_IN_PROGRESS, android.hardware.hdmi.HdmiControlManager.RESULT_EXCEPTION, android.hardware.hdmi.HdmiControlManager.RESULT_INCORRECT_MODE, android.hardware.hdmi.HdmiControlManager.RESULT_COMMUNICATION_FAILED}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public static @interface HdmiControlManager.ControlCallbackResult {
-  }
-
-  public static interface HdmiControlManager.HotplugEventListener {
-    method public void onReceived(android.hardware.hdmi.HdmiHotplugEvent);
-  }
-
-  public static interface HdmiControlManager.VendorCommandListener {
-    method public void onControlStateChanged(boolean, int);
-    method public void onReceived(int, int, byte[], boolean);
-  }
-
-  public class HdmiDeviceInfo implements android.os.Parcelable {
-    ctor public HdmiDeviceInfo();
-    method public int describeContents();
-    method public int getAdopterId();
-    method public int getDeviceId();
-    method public int getDevicePowerStatus();
-    method public int getDeviceType();
-    method public String getDisplayName();
-    method public int getId();
-    method public int getLogicalAddress();
-    method public int getPhysicalAddress();
-    method public int getPortId();
-    method public int getVendorId();
-    method public static int idForCecDevice(int);
-    method public static int idForHardware(int);
-    method public static int idForMhlDevice(int);
-    method public boolean isCecDevice();
-    method public boolean isInactivated();
-    method public boolean isMhlDevice();
-    method public boolean isSourceType();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ADDR_INTERNAL = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.hdmi.HdmiDeviceInfo> CREATOR;
-    field public static final int DEVICE_AUDIO_SYSTEM = 5; // 0x5
-    field public static final int DEVICE_INACTIVE = -1; // 0xffffffff
-    field public static final int DEVICE_PLAYBACK = 4; // 0x4
-    field public static final int DEVICE_RECORDER = 1; // 0x1
-    field public static final int DEVICE_RESERVED = 2; // 0x2
-    field public static final int DEVICE_TUNER = 3; // 0x3
-    field public static final int DEVICE_TV = 0; // 0x0
-    field public static final int ID_INVALID = 65535; // 0xffff
-    field public static final android.hardware.hdmi.HdmiDeviceInfo INACTIVE_DEVICE;
-    field public static final int PATH_INTERNAL = 0; // 0x0
-    field public static final int PATH_INVALID = 65535; // 0xffff
-    field public static final int PORT_INVALID = -1; // 0xffffffff
-  }
-
-  public final class HdmiHotplugEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getPort();
-    method public boolean isConnected();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.hdmi.HdmiHotplugEvent> CREATOR;
-  }
-
-  public final class HdmiPlaybackClient extends android.hardware.hdmi.HdmiClient {
-    method public int getDeviceType();
-    method public void oneTouchPlay(android.hardware.hdmi.HdmiPlaybackClient.OneTouchPlayCallback);
-    method public void queryDisplayStatus(android.hardware.hdmi.HdmiPlaybackClient.DisplayStatusCallback);
-    method public void sendStandby();
-  }
-
-  public static interface HdmiPlaybackClient.DisplayStatusCallback {
-    method public void onComplete(int);
-  }
-
-  public static interface HdmiPlaybackClient.OneTouchPlayCallback {
-    method public void onComplete(int);
-  }
-
-  public final class HdmiPortInfo implements android.os.Parcelable {
-    ctor public HdmiPortInfo(int, int, int, boolean, boolean, boolean);
-    method public int describeContents();
-    method public int getAddress();
-    method public int getId();
-    method public int getType();
-    method public boolean isArcSupported();
-    method public boolean isCecSupported();
-    method public boolean isMhlSupported();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.hdmi.HdmiPortInfo> CREATOR;
-    field public static final int PORT_INPUT = 0; // 0x0
-    field public static final int PORT_OUTPUT = 1; // 0x1
-  }
-
-  public abstract class HdmiRecordListener {
-    ctor public HdmiRecordListener();
-    method public void onClearTimerRecordingResult(int, int);
-    method public void onOneTouchRecordResult(int, int);
-    method public abstract android.hardware.hdmi.HdmiRecordSources.RecordSource onOneTouchRecordSourceRequested(int);
-    method public void onTimerRecordingResult(int, android.hardware.hdmi.HdmiRecordListener.TimerStatusData);
-  }
-
-  public static class HdmiRecordListener.TimerStatusData {
-    method public int getDurationHour();
-    method public int getDurationMinute();
-    method public int getExtraError();
-    method public int getMediaInfo();
-    method public int getNotProgammedError();
-    method public int getProgrammedInfo();
-    method public boolean isOverlapped();
-    method public boolean isProgrammed();
-  }
-
-  public final class HdmiRecordSources {
-    method public static boolean checkRecordSource(byte[]);
-    method public static android.hardware.hdmi.HdmiRecordSources.OwnSource ofOwnSource();
-  }
-
-  public static final class HdmiRecordSources.AnalogueServiceSource extends android.hardware.hdmi.HdmiRecordSources.RecordSource {
-  }
-
-  public static final class HdmiRecordSources.DigitalServiceSource extends android.hardware.hdmi.HdmiRecordSources.RecordSource {
-  }
-
-  public static final class HdmiRecordSources.ExternalPhysicalAddress extends android.hardware.hdmi.HdmiRecordSources.RecordSource {
-  }
-
-  public static final class HdmiRecordSources.ExternalPlugData extends android.hardware.hdmi.HdmiRecordSources.RecordSource {
-  }
-
-  public static final class HdmiRecordSources.OwnSource extends android.hardware.hdmi.HdmiRecordSources.RecordSource {
-  }
-
-  public abstract static class HdmiRecordSources.RecordSource {
-  }
-
-  public class HdmiSwitchClient extends android.hardware.hdmi.HdmiClient {
-    method public int getDeviceType();
-    method @NonNull public java.util.List<android.hardware.hdmi.HdmiPortInfo> getPortInfo();
-    method public void selectPort(int, @NonNull android.hardware.hdmi.HdmiSwitchClient.OnSelectListener);
-    method public void selectPort(int, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.hdmi.HdmiSwitchClient.OnSelectListener);
-  }
-
-  public static interface HdmiSwitchClient.OnSelectListener {
-    method public void onSelect(@android.hardware.hdmi.HdmiControlManager.ControlCallbackResult int);
-  }
-
-  public class HdmiTimerRecordSources {
-    method public static boolean checkTimerRecordSource(int, byte[]);
-    method public static android.hardware.hdmi.HdmiTimerRecordSources.Duration durationOf(int, int);
-    method public static android.hardware.hdmi.HdmiTimerRecordSources.TimerRecordSource ofAnalogueSource(android.hardware.hdmi.HdmiTimerRecordSources.TimerInfo, android.hardware.hdmi.HdmiRecordSources.AnalogueServiceSource);
-    method public static android.hardware.hdmi.HdmiTimerRecordSources.TimerRecordSource ofDigitalSource(android.hardware.hdmi.HdmiTimerRecordSources.TimerInfo, android.hardware.hdmi.HdmiRecordSources.DigitalServiceSource);
-    method public static android.hardware.hdmi.HdmiTimerRecordSources.TimerRecordSource ofExternalPhysicalAddress(android.hardware.hdmi.HdmiTimerRecordSources.TimerInfo, android.hardware.hdmi.HdmiRecordSources.ExternalPhysicalAddress);
-    method public static android.hardware.hdmi.HdmiTimerRecordSources.TimerRecordSource ofExternalPlug(android.hardware.hdmi.HdmiTimerRecordSources.TimerInfo, android.hardware.hdmi.HdmiRecordSources.ExternalPlugData);
-    method public static android.hardware.hdmi.HdmiTimerRecordSources.Time timeOf(int, int);
-    method public static android.hardware.hdmi.HdmiTimerRecordSources.TimerInfo timerInfoOf(int, int, android.hardware.hdmi.HdmiTimerRecordSources.Time, android.hardware.hdmi.HdmiTimerRecordSources.Duration, int);
-    field public static final int RECORDING_SEQUENCE_REPEAT_FRIDAY = 32; // 0x20
-    field public static final int RECORDING_SEQUENCE_REPEAT_MONDAY = 2; // 0x2
-    field public static final int RECORDING_SEQUENCE_REPEAT_ONCE_ONLY = 0; // 0x0
-    field public static final int RECORDING_SEQUENCE_REPEAT_SATUREDAY = 64; // 0x40
-    field public static final int RECORDING_SEQUENCE_REPEAT_SUNDAY = 1; // 0x1
-    field public static final int RECORDING_SEQUENCE_REPEAT_THURSDAY = 16; // 0x10
-    field public static final int RECORDING_SEQUENCE_REPEAT_TUESDAY = 4; // 0x4
-    field public static final int RECORDING_SEQUENCE_REPEAT_WEDNESDAY = 8; // 0x8
-  }
-
-  public static final class HdmiTimerRecordSources.Duration {
-  }
-
-  public static final class HdmiTimerRecordSources.Time {
-  }
-
-  public static final class HdmiTimerRecordSources.TimerInfo {
-  }
-
-  public static final class HdmiTimerRecordSources.TimerRecordSource {
-  }
-
-  public final class HdmiTvClient extends android.hardware.hdmi.HdmiClient {
-    method public void clearTimerRecording(int, int, android.hardware.hdmi.HdmiTimerRecordSources.TimerRecordSource);
-    method public void deviceSelect(int, @NonNull android.hardware.hdmi.HdmiTvClient.SelectCallback);
-    method public java.util.List<android.hardware.hdmi.HdmiDeviceInfo> getDeviceList();
-    method public int getDeviceType();
-    method public void portSelect(int, @NonNull android.hardware.hdmi.HdmiTvClient.SelectCallback);
-    method public void sendMhlVendorCommand(int, int, int, byte[]);
-    method public void sendStandby(int);
-    method public void setHdmiMhlVendorCommandListener(android.hardware.hdmi.HdmiTvClient.HdmiMhlVendorCommandListener);
-    method public void setInputChangeListener(android.hardware.hdmi.HdmiTvClient.InputChangeListener);
-    method public void setRecordListener(@NonNull android.hardware.hdmi.HdmiRecordListener);
-    method public void setSystemAudioMode(boolean, android.hardware.hdmi.HdmiTvClient.SelectCallback);
-    method public void setSystemAudioMute(boolean);
-    method public void setSystemAudioVolume(int, int, int);
-    method public void startOneTouchRecord(int, @NonNull android.hardware.hdmi.HdmiRecordSources.RecordSource);
-    method public void startTimerRecording(int, int, android.hardware.hdmi.HdmiTimerRecordSources.TimerRecordSource);
-    method public void stopOneTouchRecord(int);
-    field public static final int VENDOR_DATA_SIZE = 16; // 0x10
-  }
-
-  public static interface HdmiTvClient.HdmiMhlVendorCommandListener {
-    method public void onReceived(int, int, int, byte[]);
-  }
-
-  public static interface HdmiTvClient.InputChangeListener {
-    method public void onChanged(android.hardware.hdmi.HdmiDeviceInfo);
-  }
-
-  public static interface HdmiTvClient.SelectCallback {
-    method public void onComplete(int);
-  }
-
-}
-
-package android.hardware.lights {
-
-  public final class Light implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getId();
-    method public int getOrdinal();
-    method public int getType();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.lights.Light> CREATOR;
-  }
-
-  public final class LightState implements android.os.Parcelable {
-    ctor public LightState(@ColorInt int);
-    method public int describeContents();
-    method @ColorInt public int getColor();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.lights.LightState> CREATOR;
-  }
-
-  public final class LightsManager {
-    method @NonNull @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public java.util.List<android.hardware.lights.Light> getLights();
-    method @NonNull @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public android.hardware.lights.LightsManager.LightsSession openSession();
-    field public static final int LIGHT_TYPE_MICROPHONE = 8; // 0x8
-  }
-
-  public final class LightsManager.LightsSession implements java.lang.AutoCloseable {
-    method @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public void close();
-    method @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public void requestLights(@NonNull android.hardware.lights.LightsRequest);
-  }
-
-  public final class LightsRequest {
-  }
-
-  public static final class LightsRequest.Builder {
-    ctor public LightsRequest.Builder();
-    method @NonNull public android.hardware.lights.LightsRequest build();
-    method @NonNull public android.hardware.lights.LightsRequest.Builder clearLight(@NonNull android.hardware.lights.Light);
-    method @NonNull public android.hardware.lights.LightsRequest.Builder setLight(@NonNull android.hardware.lights.Light, @NonNull android.hardware.lights.LightState);
-  }
-
-}
-
-package android.hardware.location {
-
-  public class ContextHubClient implements java.io.Closeable {
-    method public void close();
-    method @NonNull public android.hardware.location.ContextHubInfo getAttachedHub();
-    method @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public int sendMessageToNanoApp(@NonNull android.hardware.location.NanoAppMessage);
-  }
-
-  public class ContextHubClientCallback {
-    ctor public ContextHubClientCallback();
-    method public void onHubReset(android.hardware.location.ContextHubClient);
-    method public void onMessageFromNanoApp(android.hardware.location.ContextHubClient, android.hardware.location.NanoAppMessage);
-    method public void onNanoAppAborted(android.hardware.location.ContextHubClient, long, int);
-    method public void onNanoAppDisabled(android.hardware.location.ContextHubClient, long);
-    method public void onNanoAppEnabled(android.hardware.location.ContextHubClient, long);
-    method public void onNanoAppLoaded(android.hardware.location.ContextHubClient, long);
-    method public void onNanoAppUnloaded(android.hardware.location.ContextHubClient, long);
-  }
-
-  public class ContextHubInfo implements android.os.Parcelable {
-    ctor public ContextHubInfo();
-    method public int describeContents();
-    method public byte getChreApiMajorVersion();
-    method public byte getChreApiMinorVersion();
-    method public short getChrePatchVersion();
-    method public long getChrePlatformId();
-    method public int getId();
-    method public int getMaxPacketLengthBytes();
-    method public android.hardware.location.MemoryRegion[] getMemoryRegions();
-    method public String getName();
-    method public float getPeakMips();
-    method public float getPeakPowerDrawMw();
-    method public int getPlatformVersion();
-    method public float getSleepPowerDrawMw();
-    method public int getStaticSwVersion();
-    method public float getStoppedPowerDrawMw();
-    method public int[] getSupportedSensors();
-    method public String getToolchain();
-    method public int getToolchainVersion();
-    method public String getVendor();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.ContextHubInfo> CREATOR;
-  }
-
-  public class ContextHubIntentEvent {
-    method @NonNull public static android.hardware.location.ContextHubIntentEvent fromIntent(@NonNull android.content.Intent);
-    method @NonNull public android.hardware.location.ContextHubInfo getContextHubInfo();
-    method public int getEventType();
-    method public int getNanoAppAbortCode();
-    method public long getNanoAppId();
-    method @NonNull public android.hardware.location.NanoAppMessage getNanoAppMessage();
-  }
-
-  public final class ContextHubManager {
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubClient createClient(@NonNull android.hardware.location.ContextHubInfo, @NonNull android.hardware.location.ContextHubClientCallback, @NonNull java.util.concurrent.Executor);
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubClient createClient(@NonNull android.hardware.location.ContextHubInfo, @NonNull android.hardware.location.ContextHubClientCallback);
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubClient createClient(@NonNull android.hardware.location.ContextHubInfo, @NonNull android.app.PendingIntent, long);
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubTransaction<java.lang.Void> disableNanoApp(@NonNull android.hardware.location.ContextHubInfo, long);
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubTransaction<java.lang.Void> enableNanoApp(@NonNull android.hardware.location.ContextHubInfo, long);
-    method @Deprecated @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public int[] findNanoAppOnHub(int, @NonNull android.hardware.location.NanoAppFilter);
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public int[] getContextHubHandles();
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubInfo getContextHubInfo(int);
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public java.util.List<android.hardware.location.ContextHubInfo> getContextHubs();
-    method @Deprecated @Nullable @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.NanoAppInstanceInfo getNanoAppInstanceInfo(int);
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public int loadNanoApp(int, @NonNull android.hardware.location.NanoApp);
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubTransaction<java.lang.Void> loadNanoApp(@NonNull android.hardware.location.ContextHubInfo, @NonNull android.hardware.location.NanoAppBinary);
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubTransaction<java.util.List<android.hardware.location.NanoAppState>> queryNanoApps(@NonNull android.hardware.location.ContextHubInfo);
-    method @Deprecated public int registerCallback(@NonNull android.hardware.location.ContextHubManager.Callback);
-    method @Deprecated public int registerCallback(android.hardware.location.ContextHubManager.Callback, android.os.Handler);
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public int sendMessage(int, int, @NonNull android.hardware.location.ContextHubMessage);
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public int unloadNanoApp(int);
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_CONTEXT_HUB}) public android.hardware.location.ContextHubTransaction<java.lang.Void> unloadNanoApp(@NonNull android.hardware.location.ContextHubInfo, long);
-    method @Deprecated public int unregisterCallback(@NonNull android.hardware.location.ContextHubManager.Callback);
-    field public static final int EVENT_HUB_RESET = 6; // 0x6
-    field public static final int EVENT_NANOAPP_ABORTED = 4; // 0x4
-    field public static final int EVENT_NANOAPP_DISABLED = 3; // 0x3
-    field public static final int EVENT_NANOAPP_ENABLED = 2; // 0x2
-    field public static final int EVENT_NANOAPP_LOADED = 0; // 0x0
-    field public static final int EVENT_NANOAPP_MESSAGE = 5; // 0x5
-    field public static final int EVENT_NANOAPP_UNLOADED = 1; // 0x1
-    field public static final String EXTRA_CONTEXT_HUB_INFO = "android.hardware.location.extra.CONTEXT_HUB_INFO";
-    field public static final String EXTRA_EVENT_TYPE = "android.hardware.location.extra.EVENT_TYPE";
-    field public static final String EXTRA_MESSAGE = "android.hardware.location.extra.MESSAGE";
-    field public static final String EXTRA_NANOAPP_ABORT_CODE = "android.hardware.location.extra.NANOAPP_ABORT_CODE";
-    field public static final String EXTRA_NANOAPP_ID = "android.hardware.location.extra.NANOAPP_ID";
-  }
-
-  @Deprecated public abstract static class ContextHubManager.Callback {
-    ctor @Deprecated protected ContextHubManager.Callback();
-    method @Deprecated public abstract void onMessageReceipt(int, int, @NonNull android.hardware.location.ContextHubMessage);
-  }
-
-  @Deprecated public class ContextHubMessage implements android.os.Parcelable {
-    ctor @Deprecated public ContextHubMessage(int, int, byte[]);
-    method @Deprecated public int describeContents();
-    method @Deprecated public byte[] getData();
-    method @Deprecated public int getMsgType();
-    method @Deprecated public int getVersion();
-    method @Deprecated public void setMsgData(byte[]);
-    method @Deprecated public void setMsgType(int);
-    method @Deprecated public void setVersion(int);
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.ContextHubMessage> CREATOR;
-  }
-
-  public class ContextHubTransaction<T> {
-    method public int getType();
-    method public void setOnCompleteListener(@NonNull android.hardware.location.ContextHubTransaction.OnCompleteListener<T>, @NonNull java.util.concurrent.Executor);
-    method public void setOnCompleteListener(@NonNull android.hardware.location.ContextHubTransaction.OnCompleteListener<T>);
-    method public static String typeToString(int, boolean);
-    method public android.hardware.location.ContextHubTransaction.Response<T> waitForResponse(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException, java.util.concurrent.TimeoutException;
-    field public static final int RESULT_FAILED_AT_HUB = 5; // 0x5
-    field public static final int RESULT_FAILED_BAD_PARAMS = 2; // 0x2
-    field public static final int RESULT_FAILED_BUSY = 4; // 0x4
-    field public static final int RESULT_FAILED_HAL_UNAVAILABLE = 8; // 0x8
-    field public static final int RESULT_FAILED_SERVICE_INTERNAL_FAILURE = 7; // 0x7
-    field public static final int RESULT_FAILED_TIMEOUT = 6; // 0x6
-    field public static final int RESULT_FAILED_UNINITIALIZED = 3; // 0x3
-    field public static final int RESULT_FAILED_UNKNOWN = 1; // 0x1
-    field public static final int RESULT_SUCCESS = 0; // 0x0
-    field public static final int TYPE_DISABLE_NANOAPP = 3; // 0x3
-    field public static final int TYPE_ENABLE_NANOAPP = 2; // 0x2
-    field public static final int TYPE_LOAD_NANOAPP = 0; // 0x0
-    field public static final int TYPE_QUERY_NANOAPPS = 4; // 0x4
-    field public static final int TYPE_UNLOAD_NANOAPP = 1; // 0x1
-  }
-
-  @java.lang.FunctionalInterface public static interface ContextHubTransaction.OnCompleteListener<L> {
-    method public void onComplete(android.hardware.location.ContextHubTransaction<L>, android.hardware.location.ContextHubTransaction.Response<L>);
-  }
-
-  public static class ContextHubTransaction.Response<R> {
-    method public R getContents();
-    method public int getResult();
-  }
-
-  public final class GeofenceHardware {
-    method public boolean addGeofence(int, int, android.hardware.location.GeofenceHardwareRequest, android.hardware.location.GeofenceHardwareCallback);
-    method public int[] getMonitoringTypes();
-    method public int getStatusOfMonitoringType(int);
-    method public boolean pauseGeofence(int, int);
-    method public boolean registerForMonitorStateChangeCallback(int, android.hardware.location.GeofenceHardwareMonitorCallback);
-    method public boolean removeGeofence(int, int);
-    method public boolean resumeGeofence(int, int, int);
-    method public boolean unregisterForMonitorStateChangeCallback(int, android.hardware.location.GeofenceHardwareMonitorCallback);
-    field public static final int GEOFENCE_ENTERED = 1; // 0x1
-    field public static final int GEOFENCE_ERROR_ID_EXISTS = 2; // 0x2
-    field public static final int GEOFENCE_ERROR_ID_UNKNOWN = 3; // 0x3
-    field public static final int GEOFENCE_ERROR_INSUFFICIENT_MEMORY = 6; // 0x6
-    field public static final int GEOFENCE_ERROR_INVALID_TRANSITION = 4; // 0x4
-    field public static final int GEOFENCE_ERROR_TOO_MANY_GEOFENCES = 1; // 0x1
-    field public static final int GEOFENCE_EXITED = 2; // 0x2
-    field public static final int GEOFENCE_FAILURE = 5; // 0x5
-    field public static final int GEOFENCE_SUCCESS = 0; // 0x0
-    field public static final int GEOFENCE_UNCERTAIN = 4; // 0x4
-    field public static final int MONITORING_TYPE_FUSED_HARDWARE = 1; // 0x1
-    field public static final int MONITORING_TYPE_GPS_HARDWARE = 0; // 0x0
-    field public static final int MONITOR_CURRENTLY_AVAILABLE = 0; // 0x0
-    field public static final int MONITOR_CURRENTLY_UNAVAILABLE = 1; // 0x1
-    field public static final int MONITOR_UNSUPPORTED = 2; // 0x2
-    field public static final int SOURCE_TECHNOLOGY_BLUETOOTH = 16; // 0x10
-    field public static final int SOURCE_TECHNOLOGY_CELL = 8; // 0x8
-    field public static final int SOURCE_TECHNOLOGY_GNSS = 1; // 0x1
-    field public static final int SOURCE_TECHNOLOGY_SENSORS = 4; // 0x4
-    field public static final int SOURCE_TECHNOLOGY_WIFI = 2; // 0x2
-  }
-
-  public abstract class GeofenceHardwareCallback {
-    ctor public GeofenceHardwareCallback();
-    method public void onGeofenceAdd(int, int);
-    method public void onGeofencePause(int, int);
-    method public void onGeofenceRemove(int, int);
-    method public void onGeofenceResume(int, int);
-    method public void onGeofenceTransition(int, int, android.location.Location, long, int);
-  }
-
-  public abstract class GeofenceHardwareMonitorCallback {
-    ctor public GeofenceHardwareMonitorCallback();
-    method @Deprecated public void onMonitoringSystemChange(int, boolean, android.location.Location);
-    method public void onMonitoringSystemChange(android.hardware.location.GeofenceHardwareMonitorEvent);
-  }
-
-  public class GeofenceHardwareMonitorEvent implements android.os.Parcelable {
-    ctor public GeofenceHardwareMonitorEvent(int, int, int, android.location.Location);
-    method public int describeContents();
-    method public android.location.Location getLocation();
-    method public int getMonitoringStatus();
-    method public int getMonitoringType();
-    method public int getSourceTechnologies();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.GeofenceHardwareMonitorEvent> CREATOR;
-  }
-
-  public final class GeofenceHardwareRequest {
-    ctor public GeofenceHardwareRequest();
-    method public static android.hardware.location.GeofenceHardwareRequest createCircularGeofence(double, double, double);
-    method public int getLastTransition();
-    method public double getLatitude();
-    method public double getLongitude();
-    method public int getMonitorTransitions();
-    method public int getNotificationResponsiveness();
-    method public double getRadius();
-    method public int getSourceTechnologies();
-    method public int getUnknownTimer();
-    method public void setLastTransition(int);
-    method public void setMonitorTransitions(int);
-    method public void setNotificationResponsiveness(int);
-    method public void setSourceTechnologies(int);
-    method public void setUnknownTimer(int);
-  }
-
-  public class MemoryRegion implements android.os.Parcelable {
-    ctor public MemoryRegion(android.os.Parcel);
-    method public int describeContents();
-    method public int getCapacityBytes();
-    method public int getFreeCapacityBytes();
-    method public boolean isExecutable();
-    method public boolean isReadable();
-    method public boolean isWritable();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.MemoryRegion> CREATOR;
-  }
-
-  @Deprecated public class NanoApp implements android.os.Parcelable {
-    ctor @Deprecated public NanoApp();
-    ctor @Deprecated public NanoApp(int, byte[]);
-    ctor @Deprecated public NanoApp(long, byte[]);
-    method @Deprecated public int describeContents();
-    method @Deprecated public byte[] getAppBinary();
-    method @Deprecated public long getAppId();
-    method @Deprecated public int getAppVersion();
-    method @Deprecated public String getName();
-    method @Deprecated public int getNeededExecMemBytes();
-    method @Deprecated public int getNeededReadMemBytes();
-    method @Deprecated public int[] getNeededSensors();
-    method @Deprecated public int getNeededWriteMemBytes();
-    method @Deprecated public int[] getOutputEvents();
-    method @Deprecated public String getPublisher();
-    method @Deprecated public void setAppBinary(byte[]);
-    method @Deprecated public void setAppId(long);
-    method @Deprecated public void setAppVersion(int);
-    method @Deprecated public void setName(String);
-    method @Deprecated public void setNeededExecMemBytes(int);
-    method @Deprecated public void setNeededReadMemBytes(int);
-    method @Deprecated public void setNeededSensors(int[]);
-    method @Deprecated public void setNeededWriteMemBytes(int);
-    method @Deprecated public void setOutputEvents(int[]);
-    method @Deprecated public void setPublisher(String);
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.NanoApp> CREATOR;
-  }
-
-  public final class NanoAppBinary implements android.os.Parcelable {
-    ctor public NanoAppBinary(byte[]);
-    method public int describeContents();
-    method public byte[] getBinary();
-    method public byte[] getBinaryNoHeader();
-    method public int getFlags();
-    method public int getHeaderVersion();
-    method public long getHwHubType();
-    method public long getNanoAppId();
-    method public int getNanoAppVersion();
-    method public byte getTargetChreApiMajorVersion();
-    method public byte getTargetChreApiMinorVersion();
-    method public boolean hasValidHeader();
-    method public boolean isEncrypted();
-    method public boolean isSigned();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.NanoAppBinary> CREATOR;
-  }
-
-  @Deprecated public class NanoAppFilter implements android.os.Parcelable {
-    ctor @Deprecated public NanoAppFilter(long, int, int, long);
-    method @Deprecated public int describeContents();
-    method @Deprecated public boolean testMatch(android.hardware.location.NanoAppInstanceInfo);
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated public static final int APP_ANY = -1; // 0xffffffff
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.NanoAppFilter> CREATOR;
-    field @Deprecated public static final int FLAGS_VERSION_ANY = -1; // 0xffffffff
-    field @Deprecated public static final int FLAGS_VERSION_GREAT_THAN = 2; // 0x2
-    field @Deprecated public static final int FLAGS_VERSION_LESS_THAN = 4; // 0x4
-    field @Deprecated public static final int FLAGS_VERSION_STRICTLY_EQUAL = 8; // 0x8
-    field @Deprecated public static final int HUB_ANY = -1; // 0xffffffff
-    field @Deprecated public static final int VENDOR_ANY = -1; // 0xffffffff
-  }
-
-  @Deprecated public class NanoAppInstanceInfo implements android.os.Parcelable {
-    ctor @Deprecated public NanoAppInstanceInfo();
-    method @Deprecated public int describeContents();
-    method @Deprecated public long getAppId();
-    method @Deprecated public int getAppVersion();
-    method @Deprecated public int getContexthubId();
-    method @Deprecated public int getHandle();
-    method @Deprecated public String getName();
-    method @Deprecated public int getNeededExecMemBytes();
-    method @Deprecated public int getNeededReadMemBytes();
-    method @Deprecated @NonNull public int[] getNeededSensors();
-    method @Deprecated public int getNeededWriteMemBytes();
-    method @Deprecated @NonNull public int[] getOutputEvents();
-    method @Deprecated public String getPublisher();
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.NanoAppInstanceInfo> CREATOR;
-  }
-
-  public final class NanoAppMessage implements android.os.Parcelable {
-    method public static android.hardware.location.NanoAppMessage createMessageFromNanoApp(long, int, byte[], boolean);
-    method public static android.hardware.location.NanoAppMessage createMessageToNanoApp(long, int, byte[]);
-    method public int describeContents();
-    method public byte[] getMessageBody();
-    method public int getMessageType();
-    method public long getNanoAppId();
-    method public boolean isBroadcastMessage();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.NanoAppMessage> CREATOR;
-  }
-
-  public final class NanoAppState implements android.os.Parcelable {
-    ctor public NanoAppState(long, int, boolean);
-    method public int describeContents();
-    method public long getNanoAppId();
-    method public long getNanoAppVersion();
-    method public boolean isEnabled();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.location.NanoAppState> CREATOR;
-  }
-
-}
-
-package android.hardware.radio {
-
-  public final class Announcement implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.hardware.radio.ProgramSelector getSelector();
-    method public int getType();
-    method @NonNull public java.util.Map<java.lang.String,java.lang.String> getVendorInfo();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.Announcement> CREATOR;
-    field public static final int TYPE_EMERGENCY = 1; // 0x1
-    field public static final int TYPE_EVENT = 6; // 0x6
-    field public static final int TYPE_MISC = 8; // 0x8
-    field public static final int TYPE_NEWS = 5; // 0x5
-    field public static final int TYPE_SPORT = 7; // 0x7
-    field public static final int TYPE_TRAFFIC = 3; // 0x3
-    field public static final int TYPE_WARNING = 2; // 0x2
-    field public static final int TYPE_WEATHER = 4; // 0x4
-  }
-
-  public static interface Announcement.OnListUpdatedListener {
-    method public void onListUpdated(java.util.Collection<android.hardware.radio.Announcement>);
-  }
-
-  public final class ProgramList implements java.lang.AutoCloseable {
-    method public void addOnCompleteListener(@NonNull java.util.concurrent.Executor, @NonNull android.hardware.radio.ProgramList.OnCompleteListener);
-    method public void addOnCompleteListener(@NonNull android.hardware.radio.ProgramList.OnCompleteListener);
-    method public void close();
-    method @Nullable public android.hardware.radio.RadioManager.ProgramInfo get(@NonNull android.hardware.radio.ProgramSelector.Identifier);
-    method public void registerListCallback(@NonNull java.util.concurrent.Executor, @NonNull android.hardware.radio.ProgramList.ListCallback);
-    method public void registerListCallback(@NonNull android.hardware.radio.ProgramList.ListCallback);
-    method public void removeOnCompleteListener(@NonNull android.hardware.radio.ProgramList.OnCompleteListener);
-    method @NonNull public java.util.List<android.hardware.radio.RadioManager.ProgramInfo> toList();
-    method public void unregisterListCallback(@NonNull android.hardware.radio.ProgramList.ListCallback);
-  }
-
-  public static final class ProgramList.Filter implements android.os.Parcelable {
-    ctor public ProgramList.Filter(@NonNull java.util.Set<java.lang.Integer>, @NonNull java.util.Set<android.hardware.radio.ProgramSelector.Identifier>, boolean, boolean);
-    method public boolean areCategoriesIncluded();
-    method public boolean areModificationsExcluded();
-    method public int describeContents();
-    method @NonNull public java.util.Set<java.lang.Integer> getIdentifierTypes();
-    method @NonNull public java.util.Set<android.hardware.radio.ProgramSelector.Identifier> getIdentifiers();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.ProgramList.Filter> CREATOR;
-  }
-
-  public abstract static class ProgramList.ListCallback {
-    ctor public ProgramList.ListCallback();
-    method public void onItemChanged(@NonNull android.hardware.radio.ProgramSelector.Identifier);
-    method public void onItemRemoved(@NonNull android.hardware.radio.ProgramSelector.Identifier);
-  }
-
-  public static interface ProgramList.OnCompleteListener {
-    method public void onComplete();
-  }
-
-  public final class ProgramSelector implements android.os.Parcelable {
-    ctor public ProgramSelector(@android.hardware.radio.ProgramSelector.ProgramType int, @NonNull android.hardware.radio.ProgramSelector.Identifier, @Nullable android.hardware.radio.ProgramSelector.Identifier[], @Nullable long[]);
-    method @NonNull public static android.hardware.radio.ProgramSelector createAmFmSelector(@android.hardware.radio.RadioManager.Band int, int);
-    method @NonNull public static android.hardware.radio.ProgramSelector createAmFmSelector(@android.hardware.radio.RadioManager.Band int, int, int);
-    method public int describeContents();
-    method @NonNull public android.hardware.radio.ProgramSelector.Identifier[] getAllIds(@android.hardware.radio.ProgramSelector.IdentifierType int);
-    method public long getFirstId(@android.hardware.radio.ProgramSelector.IdentifierType int);
-    method @NonNull public android.hardware.radio.ProgramSelector.Identifier getPrimaryId();
-    method @Deprecated @android.hardware.radio.ProgramSelector.ProgramType public int getProgramType();
-    method @NonNull public android.hardware.radio.ProgramSelector.Identifier[] getSecondaryIds();
-    method @Deprecated @NonNull public long[] getVendorIds();
-    method @NonNull public android.hardware.radio.ProgramSelector withSecondaryPreferred(@NonNull android.hardware.radio.ProgramSelector.Identifier);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.ProgramSelector> CREATOR;
-    field public static final int IDENTIFIER_TYPE_AMFM_FREQUENCY = 1; // 0x1
-    field public static final int IDENTIFIER_TYPE_DAB_ENSEMBLE = 6; // 0x6
-    field public static final int IDENTIFIER_TYPE_DAB_FREQUENCY = 8; // 0x8
-    field public static final int IDENTIFIER_TYPE_DAB_SCID = 7; // 0x7
-    field public static final int IDENTIFIER_TYPE_DAB_SIDECC = 5; // 0x5
-    field public static final int IDENTIFIER_TYPE_DAB_SID_EXT = 5; // 0x5
-    field public static final int IDENTIFIER_TYPE_DRMO_FREQUENCY = 10; // 0xa
-    field @Deprecated public static final int IDENTIFIER_TYPE_DRMO_MODULATION = 11; // 0xb
-    field public static final int IDENTIFIER_TYPE_DRMO_SERVICE_ID = 9; // 0x9
-    field public static final int IDENTIFIER_TYPE_HD_STATION_ID_EXT = 3; // 0x3
-    field public static final int IDENTIFIER_TYPE_HD_STATION_NAME = 10004; // 0x2714
-    field @Deprecated public static final int IDENTIFIER_TYPE_HD_SUBCHANNEL = 4; // 0x4
-    field public static final int IDENTIFIER_TYPE_INVALID = 0; // 0x0
-    field public static final int IDENTIFIER_TYPE_RDS_PI = 2; // 0x2
-    field public static final int IDENTIFIER_TYPE_SXM_CHANNEL = 13; // 0xd
-    field public static final int IDENTIFIER_TYPE_SXM_SERVICE_ID = 12; // 0xc
-    field public static final int IDENTIFIER_TYPE_VENDOR_END = 1999; // 0x7cf
-    field @Deprecated public static final int IDENTIFIER_TYPE_VENDOR_PRIMARY_END = 1999; // 0x7cf
-    field @Deprecated public static final int IDENTIFIER_TYPE_VENDOR_PRIMARY_START = 1000; // 0x3e8
-    field public static final int IDENTIFIER_TYPE_VENDOR_START = 1000; // 0x3e8
-    field @Deprecated public static final int PROGRAM_TYPE_AM = 1; // 0x1
-    field @Deprecated public static final int PROGRAM_TYPE_AM_HD = 3; // 0x3
-    field @Deprecated public static final int PROGRAM_TYPE_DAB = 5; // 0x5
-    field @Deprecated public static final int PROGRAM_TYPE_DRMO = 6; // 0x6
-    field @Deprecated public static final int PROGRAM_TYPE_FM = 2; // 0x2
-    field @Deprecated public static final int PROGRAM_TYPE_FM_HD = 4; // 0x4
-    field @Deprecated public static final int PROGRAM_TYPE_INVALID = 0; // 0x0
-    field @Deprecated public static final int PROGRAM_TYPE_SXM = 7; // 0x7
-    field @Deprecated public static final int PROGRAM_TYPE_VENDOR_END = 1999; // 0x7cf
-    field @Deprecated public static final int PROGRAM_TYPE_VENDOR_START = 1000; // 0x3e8
-  }
-
-  public static final class ProgramSelector.Identifier implements android.os.Parcelable {
-    ctor public ProgramSelector.Identifier(@android.hardware.radio.ProgramSelector.IdentifierType int, long);
-    method public int describeContents();
-    method @android.hardware.radio.ProgramSelector.IdentifierType public int getType();
-    method public long getValue();
-    method public boolean isCategoryType();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.ProgramSelector.Identifier> CREATOR;
-  }
-
-  @IntDef(prefix={"IDENTIFIER_TYPE_"}, value={android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_INVALID, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_AMFM_FREQUENCY, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_RDS_PI, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_HD_STATION_ID_EXT, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_HD_SUBCHANNEL, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_HD_STATION_NAME, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DAB_SID_EXT, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DAB_SIDECC, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DAB_ENSEMBLE, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DAB_SCID, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DAB_FREQUENCY, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DRMO_SERVICE_ID, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DRMO_FREQUENCY, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_DRMO_MODULATION, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_SXM_SERVICE_ID, android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_SXM_CHANNEL}) @IntRange(from=android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_VENDOR_START, to=android.hardware.radio.ProgramSelector.IDENTIFIER_TYPE_VENDOR_END) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ProgramSelector.IdentifierType {
-  }
-
-  @Deprecated @IntDef(prefix={"PROGRAM_TYPE_"}, value={android.hardware.radio.ProgramSelector.PROGRAM_TYPE_INVALID, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_AM, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_FM, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_AM_HD, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_FM_HD, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_DAB, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_DRMO, android.hardware.radio.ProgramSelector.PROGRAM_TYPE_SXM}) @IntRange(from=android.hardware.radio.ProgramSelector.PROGRAM_TYPE_VENDOR_START, to=android.hardware.radio.ProgramSelector.PROGRAM_TYPE_VENDOR_END) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ProgramSelector.ProgramType {
-  }
-
-  public class RadioManager {
-    method @RequiresPermission(android.Manifest.permission.ACCESS_BROADCAST_RADIO) public void addAnnouncementListener(@NonNull java.util.Set<java.lang.Integer>, @NonNull android.hardware.radio.Announcement.OnListUpdatedListener);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_BROADCAST_RADIO) public void addAnnouncementListener(@NonNull java.util.concurrent.Executor, @NonNull java.util.Set<java.lang.Integer>, @NonNull android.hardware.radio.Announcement.OnListUpdatedListener);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_BROADCAST_RADIO) public int listModules(java.util.List<android.hardware.radio.RadioManager.ModuleProperties>);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_BROADCAST_RADIO) public android.hardware.radio.RadioTuner openTuner(int, android.hardware.radio.RadioManager.BandConfig, boolean, android.hardware.radio.RadioTuner.Callback, android.os.Handler);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_BROADCAST_RADIO) public void removeAnnouncementListener(@NonNull android.hardware.radio.Announcement.OnListUpdatedListener);
-    field public static final int BAND_AM = 0; // 0x0
-    field public static final int BAND_AM_HD = 3; // 0x3
-    field public static final int BAND_FM = 1; // 0x1
-    field public static final int BAND_FM_HD = 2; // 0x2
-    field public static final int BAND_INVALID = -1; // 0xffffffff
-    field public static final int CLASS_AM_FM = 0; // 0x0
-    field public static final int CLASS_DT = 2; // 0x2
-    field public static final int CLASS_SAT = 1; // 0x1
-    field public static final int CONFIG_DAB_DAB_LINKING = 6; // 0x6
-    field public static final int CONFIG_DAB_DAB_SOFT_LINKING = 8; // 0x8
-    field public static final int CONFIG_DAB_FM_LINKING = 7; // 0x7
-    field public static final int CONFIG_DAB_FM_SOFT_LINKING = 9; // 0x9
-    field public static final int CONFIG_FORCE_ANALOG = 2; // 0x2
-    field public static final int CONFIG_FORCE_DIGITAL = 3; // 0x3
-    field public static final int CONFIG_FORCE_MONO = 1; // 0x1
-    field public static final int CONFIG_RDS_AF = 4; // 0x4
-    field public static final int CONFIG_RDS_REG = 5; // 0x5
-    field public static final int REGION_ITU_1 = 0; // 0x0
-    field public static final int REGION_ITU_2 = 1; // 0x1
-    field public static final int REGION_JAPAN = 3; // 0x3
-    field public static final int REGION_KOREA = 4; // 0x4
-    field public static final int REGION_OIRT = 2; // 0x2
-    field public static final int STATUS_BAD_VALUE = -22; // 0xffffffea
-    field public static final int STATUS_DEAD_OBJECT = -32; // 0xffffffe0
-    field public static final int STATUS_ERROR = -2147483648; // 0x80000000
-    field public static final int STATUS_INVALID_OPERATION = -38; // 0xffffffda
-    field public static final int STATUS_NO_INIT = -19; // 0xffffffed
-    field public static final int STATUS_OK = 0; // 0x0
-    field public static final int STATUS_PERMISSION_DENIED = -1; // 0xffffffff
-    field public static final int STATUS_TIMED_OUT = -110; // 0xffffff92
-  }
-
-  public static class RadioManager.AmBandConfig extends android.hardware.radio.RadioManager.BandConfig {
-    method public boolean getStereo();
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.AmBandConfig> CREATOR;
-  }
-
-  public static class RadioManager.AmBandConfig.Builder {
-    ctor public RadioManager.AmBandConfig.Builder(android.hardware.radio.RadioManager.AmBandDescriptor);
-    ctor public RadioManager.AmBandConfig.Builder(android.hardware.radio.RadioManager.AmBandConfig);
-    method public android.hardware.radio.RadioManager.AmBandConfig build();
-    method public android.hardware.radio.RadioManager.AmBandConfig.Builder setStereo(boolean);
-  }
-
-  public static class RadioManager.AmBandDescriptor extends android.hardware.radio.RadioManager.BandDescriptor {
-    method public boolean isStereoSupported();
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.AmBandDescriptor> CREATOR;
-  }
-
-  @IntDef(prefix={"BAND_"}, value={android.hardware.radio.RadioManager.BAND_INVALID, android.hardware.radio.RadioManager.BAND_AM, android.hardware.radio.RadioManager.BAND_FM, android.hardware.radio.RadioManager.BAND_AM_HD, android.hardware.radio.RadioManager.BAND_FM_HD}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface RadioManager.Band {
-  }
-
-  public static class RadioManager.BandConfig implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getLowerLimit();
-    method public int getRegion();
-    method public int getSpacing();
-    method public int getType();
-    method public int getUpperLimit();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.BandConfig> CREATOR;
-  }
-
-  public static class RadioManager.BandDescriptor implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getLowerLimit();
-    method public int getRegion();
-    method public int getSpacing();
-    method public int getType();
-    method public int getUpperLimit();
-    method public boolean isAmBand();
-    method public boolean isFmBand();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.BandDescriptor> CREATOR;
-  }
-
-  public static class RadioManager.FmBandConfig extends android.hardware.radio.RadioManager.BandConfig {
-    method public boolean getAf();
-    method public boolean getEa();
-    method public boolean getRds();
-    method public boolean getStereo();
-    method public boolean getTa();
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.FmBandConfig> CREATOR;
-  }
-
-  public static class RadioManager.FmBandConfig.Builder {
-    ctor public RadioManager.FmBandConfig.Builder(android.hardware.radio.RadioManager.FmBandDescriptor);
-    ctor public RadioManager.FmBandConfig.Builder(android.hardware.radio.RadioManager.FmBandConfig);
-    method public android.hardware.radio.RadioManager.FmBandConfig build();
-    method public android.hardware.radio.RadioManager.FmBandConfig.Builder setAf(boolean);
-    method public android.hardware.radio.RadioManager.FmBandConfig.Builder setEa(boolean);
-    method public android.hardware.radio.RadioManager.FmBandConfig.Builder setRds(boolean);
-    method public android.hardware.radio.RadioManager.FmBandConfig.Builder setStereo(boolean);
-    method public android.hardware.radio.RadioManager.FmBandConfig.Builder setTa(boolean);
-  }
-
-  public static class RadioManager.FmBandDescriptor extends android.hardware.radio.RadioManager.BandDescriptor {
-    method public boolean isAfSupported();
-    method public boolean isEaSupported();
-    method public boolean isRdsSupported();
-    method public boolean isStereoSupported();
-    method public boolean isTaSupported();
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.FmBandDescriptor> CREATOR;
-  }
-
-  public static class RadioManager.ModuleProperties implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.hardware.radio.RadioManager.BandDescriptor[] getBands();
-    method public int getClassId();
-    method @Nullable public java.util.Map<java.lang.String,java.lang.Integer> getDabFrequencyTable();
-    method public int getId();
-    method public String getImplementor();
-    method public int getNumAudioSources();
-    method public int getNumTuners();
-    method public String getProduct();
-    method public String getSerial();
-    method @NonNull public String getServiceName();
-    method @NonNull public java.util.Map<java.lang.String,java.lang.String> getVendorInfo();
-    method public String getVersion();
-    method public boolean isBackgroundScanningSupported();
-    method public boolean isCaptureSupported();
-    method public boolean isInitializationRequired();
-    method public boolean isProgramIdentifierSupported(@android.hardware.radio.ProgramSelector.IdentifierType int);
-    method public boolean isProgramTypeSupported(@android.hardware.radio.ProgramSelector.ProgramType int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.ModuleProperties> CREATOR;
-  }
-
-  public static class RadioManager.ProgramInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @Deprecated public int getChannel();
-    method @Nullable public android.hardware.radio.ProgramSelector.Identifier getLogicallyTunedTo();
-    method public android.hardware.radio.RadioMetadata getMetadata();
-    method @Nullable public android.hardware.radio.ProgramSelector.Identifier getPhysicallyTunedTo();
-    method @Nullable public java.util.Collection<android.hardware.radio.ProgramSelector.Identifier> getRelatedContent();
-    method @NonNull public android.hardware.radio.ProgramSelector getSelector();
-    method public int getSignalStrength();
-    method @Deprecated public int getSubChannel();
-    method @NonNull public java.util.Map<java.lang.String,java.lang.String> getVendorInfo();
-    method @Deprecated public boolean isDigital();
-    method public boolean isLive();
-    method public boolean isMuted();
-    method public boolean isStereo();
-    method public boolean isTrafficAnnouncementActive();
-    method public boolean isTrafficProgram();
-    method public boolean isTuned();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.ProgramInfo> CREATOR;
-  }
-
-  public final class RadioMetadata implements android.os.Parcelable {
-    method public boolean containsKey(String);
-    method public int describeContents();
-    method @Deprecated public android.graphics.Bitmap getBitmap(String);
-    method public android.hardware.radio.RadioMetadata.Clock getClock(String);
-    method public int getInt(String);
-    method public String getString(String);
-    method public java.util.Set<java.lang.String> keySet();
-    method public int size();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioMetadata> CREATOR;
-    field public static final String METADATA_KEY_ALBUM = "android.hardware.radio.metadata.ALBUM";
-    field public static final String METADATA_KEY_ART = "android.hardware.radio.metadata.ART";
-    field public static final String METADATA_KEY_ARTIST = "android.hardware.radio.metadata.ARTIST";
-    field public static final String METADATA_KEY_CLOCK = "android.hardware.radio.metadata.CLOCK";
-    field public static final String METADATA_KEY_DAB_COMPONENT_NAME = "android.hardware.radio.metadata.DAB_COMPONENT_NAME";
-    field public static final String METADATA_KEY_DAB_COMPONENT_NAME_SHORT = "android.hardware.radio.metadata.DAB_COMPONENT_NAME_SHORT";
-    field public static final String METADATA_KEY_DAB_ENSEMBLE_NAME = "android.hardware.radio.metadata.DAB_ENSEMBLE_NAME";
-    field public static final String METADATA_KEY_DAB_ENSEMBLE_NAME_SHORT = "android.hardware.radio.metadata.DAB_ENSEMBLE_NAME_SHORT";
-    field public static final String METADATA_KEY_DAB_SERVICE_NAME = "android.hardware.radio.metadata.DAB_SERVICE_NAME";
-    field public static final String METADATA_KEY_DAB_SERVICE_NAME_SHORT = "android.hardware.radio.metadata.DAB_SERVICE_NAME_SHORT";
-    field public static final String METADATA_KEY_GENRE = "android.hardware.radio.metadata.GENRE";
-    field public static final String METADATA_KEY_ICON = "android.hardware.radio.metadata.ICON";
-    field public static final String METADATA_KEY_PROGRAM_NAME = "android.hardware.radio.metadata.PROGRAM_NAME";
-    field public static final String METADATA_KEY_RBDS_PTY = "android.hardware.radio.metadata.RBDS_PTY";
-    field public static final String METADATA_KEY_RDS_PI = "android.hardware.radio.metadata.RDS_PI";
-    field public static final String METADATA_KEY_RDS_PS = "android.hardware.radio.metadata.RDS_PS";
-    field public static final String METADATA_KEY_RDS_PTY = "android.hardware.radio.metadata.RDS_PTY";
-    field public static final String METADATA_KEY_RDS_RT = "android.hardware.radio.metadata.RDS_RT";
-    field public static final String METADATA_KEY_TITLE = "android.hardware.radio.metadata.TITLE";
-  }
-
-  public static final class RadioMetadata.Builder {
-    ctor public RadioMetadata.Builder();
-    ctor public RadioMetadata.Builder(android.hardware.radio.RadioMetadata);
-    method public android.hardware.radio.RadioMetadata build();
-    method public android.hardware.radio.RadioMetadata.Builder putBitmap(String, android.graphics.Bitmap);
-    method public android.hardware.radio.RadioMetadata.Builder putClock(String, long, int);
-    method public android.hardware.radio.RadioMetadata.Builder putInt(String, int);
-    method public android.hardware.radio.RadioMetadata.Builder putString(String, String);
-  }
-
-  public static final class RadioMetadata.Clock implements android.os.Parcelable {
-    ctor public RadioMetadata.Clock(long, int);
-    method public int describeContents();
-    method public int getTimezoneOffsetMinutes();
-    method public long getUtcEpochSeconds();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.radio.RadioMetadata.Clock> CREATOR;
-  }
-
-  public abstract class RadioTuner {
-    ctor public RadioTuner();
-    method public abstract int cancel();
-    method public abstract void cancelAnnouncement();
-    method public abstract void close();
-    method @Deprecated public abstract int getConfiguration(android.hardware.radio.RadioManager.BandConfig[]);
-    method @Nullable public android.hardware.radio.ProgramList getDynamicProgramList(@Nullable android.hardware.radio.ProgramList.Filter);
-    method public abstract boolean getMute();
-    method @NonNull public java.util.Map<java.lang.String,java.lang.String> getParameters(@NonNull java.util.List<java.lang.String>);
-    method @Deprecated public abstract int getProgramInformation(android.hardware.radio.RadioManager.ProgramInfo[]);
-    method @Deprecated @NonNull public abstract java.util.List<android.hardware.radio.RadioManager.ProgramInfo> getProgramList(@Nullable java.util.Map<java.lang.String,java.lang.String>);
-    method public abstract boolean hasControl();
-    method @Deprecated public abstract boolean isAnalogForced();
-    method @Deprecated public abstract boolean isAntennaConnected();
-    method public boolean isConfigFlagSet(int);
-    method public boolean isConfigFlagSupported(int);
-    method public abstract int scan(int, boolean);
-    method @Deprecated public abstract void setAnalogForced(boolean);
-    method public void setConfigFlag(int, boolean);
-    method @Deprecated public abstract int setConfiguration(android.hardware.radio.RadioManager.BandConfig);
-    method public abstract int setMute(boolean);
-    method @NonNull public java.util.Map<java.lang.String,java.lang.String> setParameters(@NonNull java.util.Map<java.lang.String,java.lang.String>);
-    method public abstract boolean startBackgroundScan();
-    method public abstract int step(int, boolean);
-    method @Deprecated public abstract int tune(int, int);
-    method public abstract void tune(@NonNull android.hardware.radio.ProgramSelector);
-    field public static final int DIRECTION_DOWN = 1; // 0x1
-    field public static final int DIRECTION_UP = 0; // 0x0
-    field @Deprecated public static final int ERROR_BACKGROUND_SCAN_FAILED = 6; // 0x6
-    field @Deprecated public static final int ERROR_BACKGROUND_SCAN_UNAVAILABLE = 5; // 0x5
-    field @Deprecated public static final int ERROR_CANCELLED = 2; // 0x2
-    field @Deprecated public static final int ERROR_CONFIG = 4; // 0x4
-    field @Deprecated public static final int ERROR_HARDWARE_FAILURE = 0; // 0x0
-    field @Deprecated public static final int ERROR_SCAN_TIMEOUT = 3; // 0x3
-    field @Deprecated public static final int ERROR_SERVER_DIED = 1; // 0x1
-  }
-
-  public abstract static class RadioTuner.Callback {
-    ctor public RadioTuner.Callback();
-    method public void onAntennaState(boolean);
-    method public void onBackgroundScanAvailabilityChange(boolean);
-    method public void onBackgroundScanComplete();
-    method @Deprecated public void onConfigurationChanged(android.hardware.radio.RadioManager.BandConfig);
-    method public void onControlChanged(boolean);
-    method public void onEmergencyAnnouncement(boolean);
-    method @Deprecated public void onError(int);
-    method @Deprecated public void onMetadataChanged(android.hardware.radio.RadioMetadata);
-    method public void onParametersUpdated(@NonNull java.util.Map<java.lang.String,java.lang.String>);
-    method public void onProgramInfoChanged(android.hardware.radio.RadioManager.ProgramInfo);
-    method public void onProgramListChanged();
-    method public void onTrafficAnnouncement(boolean);
-    method public void onTuneFailed(int, @Nullable android.hardware.radio.ProgramSelector);
-  }
-
-}
-
-package android.hardware.soundtrigger {
-
-  public class SoundTrigger {
-    field public static final int RECOGNITION_MODE_GENERIC = 8; // 0x8
-    field public static final int RECOGNITION_MODE_USER_AUTHENTICATION = 4; // 0x4
-    field public static final int RECOGNITION_MODE_USER_IDENTIFICATION = 2; // 0x2
-    field public static final int RECOGNITION_MODE_VOICE_TRIGGER = 1; // 0x1
-    field public static final int STATUS_OK = 0; // 0x0
-  }
-
-  public static final class SoundTrigger.Keyphrase implements android.os.Parcelable {
-    ctor public SoundTrigger.Keyphrase(int, int, @NonNull java.util.Locale, @NonNull String, @Nullable int[]);
-    method public int getId();
-    method @NonNull public java.util.Locale getLocale();
-    method public int getRecognitionModes();
-    method @NonNull public String getText();
-    method @NonNull public int[] getUsers();
-    method @NonNull public static android.hardware.soundtrigger.SoundTrigger.Keyphrase readFromParcel(@NonNull android.os.Parcel);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.soundtrigger.SoundTrigger.Keyphrase> CREATOR;
-  }
-
-  public static final class SoundTrigger.KeyphraseSoundModel extends android.hardware.soundtrigger.SoundTrigger.SoundModel implements android.os.Parcelable {
-    ctor public SoundTrigger.KeyphraseSoundModel(@NonNull java.util.UUID, @NonNull java.util.UUID, @Nullable byte[], @Nullable android.hardware.soundtrigger.SoundTrigger.Keyphrase[], int);
-    ctor public SoundTrigger.KeyphraseSoundModel(@NonNull java.util.UUID, @NonNull java.util.UUID, @Nullable byte[], @Nullable android.hardware.soundtrigger.SoundTrigger.Keyphrase[]);
-    method @NonNull public android.hardware.soundtrigger.SoundTrigger.Keyphrase[] getKeyphrases();
-    method @NonNull public static android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel readFromParcel(@NonNull android.os.Parcel);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel> CREATOR;
-  }
-
-  public static final class SoundTrigger.ModelParamRange implements android.os.Parcelable {
-    method public int getEnd();
-    method public int getStart();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.soundtrigger.SoundTrigger.ModelParamRange> CREATOR;
-  }
-
-  public static final class SoundTrigger.ModuleProperties implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getAudioCapabilities();
-    method @NonNull public String getDescription();
-    method public int getId();
-    method @NonNull public String getImplementor();
-    method public int getMaxBufferMillis();
-    method public int getMaxKeyphrases();
-    method public int getMaxSoundModels();
-    method public int getMaxUsers();
-    method public int getPowerConsumptionMw();
-    method public int getRecognitionModes();
-    method @NonNull public String getSupportedModelArch();
-    method @NonNull public java.util.UUID getUuid();
-    method public int getVersion();
-    method public boolean isCaptureTransitionSupported();
-    method public boolean isConcurrentCaptureSupported();
-    method public boolean isTriggerReturnedInEvent();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int AUDIO_CAPABILITY_ECHO_CANCELLATION = 1; // 0x1
-    field public static final int AUDIO_CAPABILITY_NOISE_SUPPRESSION = 2; // 0x2
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.soundtrigger.SoundTrigger.ModuleProperties> CREATOR;
-  }
-
-  public static class SoundTrigger.RecognitionEvent {
-    method @Nullable public android.media.AudioFormat getCaptureFormat();
-    method public int getCaptureSession();
-    method public byte[] getData();
-    method public boolean isCaptureAvailable();
-  }
-
-  public static class SoundTrigger.SoundModel {
-    method @NonNull public byte[] getData();
-    method public int getType();
-    method @NonNull public java.util.UUID getUuid();
-    method @NonNull public java.util.UUID getVendorUuid();
-    method public int getVersion();
-    field public static final int TYPE_GENERIC_SOUND = 1; // 0x1
-    field public static final int TYPE_KEYPHRASE = 0; // 0x0
-  }
-
-}
-
-package android.hardware.usb {
-
-  public class UsbDeviceConnection {
-    method public boolean resetDevice();
-  }
-
-  public class UsbManager {
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USB) public long getCurrentFunctions();
-    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_USB) public java.util.List<android.hardware.usb.UsbPort> getPorts();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USB) public void grantPermission(android.hardware.usb.UsbDevice, String);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USB) public void resetUsbGadget();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USB) public void setCurrentFunctions(long);
-    field @RequiresPermission(android.Manifest.permission.MANAGE_USB) public static final String ACTION_USB_PORT_CHANGED = "android.hardware.usb.action.USB_PORT_CHANGED";
-    field public static final String ACTION_USB_STATE = "android.hardware.usb.action.USB_STATE";
-    field public static final long FUNCTION_ACCESSORY = 2L; // 0x2L
-    field public static final long FUNCTION_ADB = 1L; // 0x1L
-    field public static final long FUNCTION_AUDIO_SOURCE = 64L; // 0x40L
-    field public static final long FUNCTION_MIDI = 8L; // 0x8L
-    field public static final long FUNCTION_MTP = 4L; // 0x4L
-    field public static final long FUNCTION_NCM = 1024L; // 0x400L
-    field public static final long FUNCTION_NONE = 0L; // 0x0L
-    field public static final long FUNCTION_PTP = 16L; // 0x10L
-    field public static final long FUNCTION_RNDIS = 32L; // 0x20L
-    field public static final String USB_CONFIGURED = "configured";
-    field public static final String USB_CONNECTED = "connected";
-    field public static final String USB_FUNCTION_NCM = "ncm";
-    field public static final String USB_FUNCTION_RNDIS = "rndis";
-  }
-
-  public final class UsbPort {
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USB) public android.hardware.usb.UsbPortStatus getStatus();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USB) public void setRoles(int, int);
-  }
-
-  public final class UsbPortStatus implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getCurrentDataRole();
-    method public int getCurrentMode();
-    method public int getCurrentPowerRole();
-    method public int getSupportedRoleCombinations();
-    method public boolean isConnected();
-    method public boolean isRoleCombinationSupported(int, int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.usb.UsbPortStatus> CREATOR;
-    field public static final int DATA_ROLE_DEVICE = 2; // 0x2
-    field public static final int DATA_ROLE_HOST = 1; // 0x1
-    field public static final int DATA_ROLE_NONE = 0; // 0x0
-    field public static final int MODE_AUDIO_ACCESSORY = 4; // 0x4
-    field public static final int MODE_DEBUG_ACCESSORY = 8; // 0x8
-    field public static final int MODE_DFP = 2; // 0x2
-    field public static final int MODE_NONE = 0; // 0x0
-    field public static final int MODE_UFP = 1; // 0x1
-    field public static final int POWER_ROLE_NONE = 0; // 0x0
-    field public static final int POWER_ROLE_SINK = 2; // 0x2
-    field public static final int POWER_ROLE_SOURCE = 1; // 0x1
-  }
-
-}
-
-package android.location {
-
-  public abstract class BatchedLocationCallback {
-    ctor public BatchedLocationCallback();
-    method public void onLocationBatch(java.util.List<android.location.Location>);
-  }
-
-  public final class GnssCapabilities {
-    method public boolean hasGeofencing();
-    method public boolean hasLowPowerMode();
-    method public boolean hasMeasurementCorrections();
-    method public boolean hasMeasurementCorrectionsExcessPathLength();
-    method public boolean hasMeasurementCorrectionsLosSats();
-    method public boolean hasMeasurementCorrectionsReflectingPane();
-    method public boolean hasMeasurements();
-    method public boolean hasNavMessages();
-    method public boolean hasSatelliteBlacklist();
-  }
-
-  public final class GnssMeasurementCorrections implements android.os.Parcelable {
-    method public int describeContents();
-    method @FloatRange(from=-1000.0F, to=10000.0f) public double getAltitudeMeters();
-    method @FloatRange(from=0.0f, to=360.0f) public float getEnvironmentBearingDegrees();
-    method @FloatRange(from=0.0f, to=180.0f) public float getEnvironmentBearingUncertaintyDegrees();
-    method @FloatRange(from=0.0f) public double getHorizontalPositionUncertaintyMeters();
-    method @FloatRange(from=-90.0F, to=90.0f) public double getLatitudeDegrees();
-    method @FloatRange(from=-180.0F, to=180.0f) public double getLongitudeDegrees();
-    method @NonNull public java.util.List<android.location.GnssSingleSatCorrection> getSingleSatelliteCorrectionList();
-    method @IntRange(from=0) public long getToaGpsNanosecondsOfWeek();
-    method @FloatRange(from=0.0f) public double getVerticalPositionUncertaintyMeters();
-    method public boolean hasEnvironmentBearing();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.location.GnssMeasurementCorrections> CREATOR;
-  }
-
-  public static final class GnssMeasurementCorrections.Builder {
-    ctor public GnssMeasurementCorrections.Builder();
-    method @NonNull public android.location.GnssMeasurementCorrections build();
-    method @NonNull public android.location.GnssMeasurementCorrections.Builder setAltitudeMeters(@FloatRange(from=-1000.0F, to=10000.0f) double);
-    method @NonNull public android.location.GnssMeasurementCorrections.Builder setEnvironmentBearingDegrees(@FloatRange(from=0.0f, to=360.0f) float);
-    method @NonNull public android.location.GnssMeasurementCorrections.Builder setEnvironmentBearingUncertaintyDegrees(@FloatRange(from=0.0f, to=180.0f) float);
-    method @NonNull public android.location.GnssMeasurementCorrections.Builder setHorizontalPositionUncertaintyMeters(@FloatRange(from=0.0f) double);
-    method @NonNull public android.location.GnssMeasurementCorrections.Builder setLatitudeDegrees(@FloatRange(from=-90.0F, to=90.0f) double);
-    method @NonNull public android.location.GnssMeasurementCorrections.Builder setLongitudeDegrees(@FloatRange(from=-180.0F, to=180.0f) double);
-    method @NonNull public android.location.GnssMeasurementCorrections.Builder setSingleSatelliteCorrectionList(@NonNull java.util.List<android.location.GnssSingleSatCorrection>);
-    method @NonNull public android.location.GnssMeasurementCorrections.Builder setToaGpsNanosecondsOfWeek(@IntRange(from=0) long);
-    method @NonNull public android.location.GnssMeasurementCorrections.Builder setVerticalPositionUncertaintyMeters(@FloatRange(from=0.0f) double);
-  }
-
-  public final class GnssReflectingPlane implements android.os.Parcelable {
-    method public int describeContents();
-    method @FloatRange(from=-1000.0F, to=10000.0f) public double getAltitudeMeters();
-    method @FloatRange(from=0.0f, to=360.0f) public double getAzimuthDegrees();
-    method @FloatRange(from=-90.0F, to=90.0f) public double getLatitudeDegrees();
-    method @FloatRange(from=-180.0F, to=180.0f) public double getLongitudeDegrees();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.location.GnssReflectingPlane> CREATOR;
-  }
-
-  public static final class GnssReflectingPlane.Builder {
-    ctor public GnssReflectingPlane.Builder();
-    method @NonNull public android.location.GnssReflectingPlane build();
-    method @NonNull public android.location.GnssReflectingPlane.Builder setAltitudeMeters(@FloatRange(from=-1000.0F, to=10000.0f) double);
-    method @NonNull public android.location.GnssReflectingPlane.Builder setAzimuthDegrees(@FloatRange(from=0.0f, to=360.0f) double);
-    method @NonNull public android.location.GnssReflectingPlane.Builder setLatitudeDegrees(@FloatRange(from=-90.0F, to=90.0f) double);
-    method @NonNull public android.location.GnssReflectingPlane.Builder setLongitudeDegrees(@FloatRange(from=-180.0F, to=180.0f) double);
-  }
-
-  public final class GnssRequest implements android.os.Parcelable {
-    method public int describeContents();
-    method public boolean isFullTracking();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssRequest> CREATOR;
-  }
-
-  public static final class GnssRequest.Builder {
-    ctor public GnssRequest.Builder();
-    ctor public GnssRequest.Builder(@NonNull android.location.GnssRequest);
-    method @NonNull public android.location.GnssRequest build();
-    method @NonNull public android.location.GnssRequest.Builder setFullTracking(boolean);
-  }
-
-  public final class GnssSingleSatCorrection implements android.os.Parcelable {
-    method public int describeContents();
-    method @FloatRange(from=0.0f, fromInclusive=false) public float getCarrierFrequencyHz();
-    method public int getConstellationType();
-    method @FloatRange(from=0.0f) public float getExcessPathLengthMeters();
-    method @FloatRange(from=0.0f) public float getExcessPathLengthUncertaintyMeters();
-    method @FloatRange(from=0.0f, to=1.0f) public float getProbabilityLineOfSight();
-    method @Nullable public android.location.GnssReflectingPlane getReflectingPlane();
-    method @IntRange(from=0) public int getSatelliteId();
-    method public boolean hasExcessPathLength();
-    method public boolean hasExcessPathLengthUncertainty();
-    method public boolean hasReflectingPlane();
-    method public boolean hasValidSatelliteLineOfSight();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.location.GnssSingleSatCorrection> CREATOR;
-  }
-
-  public static final class GnssSingleSatCorrection.Builder {
-    ctor public GnssSingleSatCorrection.Builder();
-    method @NonNull public android.location.GnssSingleSatCorrection build();
-    method @NonNull public android.location.GnssSingleSatCorrection.Builder setCarrierFrequencyHz(@FloatRange(from=0.0f, fromInclusive=false) float);
-    method @NonNull public android.location.GnssSingleSatCorrection.Builder setConstellationType(int);
-    method @NonNull public android.location.GnssSingleSatCorrection.Builder setExcessPathLengthMeters(@FloatRange(from=0.0f) float);
-    method @NonNull public android.location.GnssSingleSatCorrection.Builder setExcessPathLengthUncertaintyMeters(@FloatRange(from=0.0f) float);
-    method @NonNull public android.location.GnssSingleSatCorrection.Builder setProbabilityLineOfSight(@FloatRange(from=0.0f, to=1.0f) float);
-    method @NonNull public android.location.GnssSingleSatCorrection.Builder setReflectingPlane(@Nullable android.location.GnssReflectingPlane);
-    method @NonNull public android.location.GnssSingleSatCorrection.Builder setSatelliteId(@IntRange(from=0) int);
-  }
-
-  @Deprecated public class GpsClock implements android.os.Parcelable {
-    method @Deprecated public int describeContents();
-    method @Deprecated public double getBiasInNs();
-    method @Deprecated public double getBiasUncertaintyInNs();
-    method @Deprecated public double getDriftInNsPerSec();
-    method @Deprecated public double getDriftUncertaintyInNsPerSec();
-    method @Deprecated public long getFullBiasInNs();
-    method @Deprecated public short getLeapSecond();
-    method @Deprecated public long getTimeInNs();
-    method @Deprecated public double getTimeUncertaintyInNs();
-    method @Deprecated public byte getType();
-    method @Deprecated public boolean hasBiasInNs();
-    method @Deprecated public boolean hasBiasUncertaintyInNs();
-    method @Deprecated public boolean hasDriftInNsPerSec();
-    method @Deprecated public boolean hasDriftUncertaintyInNsPerSec();
-    method @Deprecated public boolean hasFullBiasInNs();
-    method @Deprecated public boolean hasLeapSecond();
-    method @Deprecated public boolean hasTimeUncertaintyInNs();
-    method @Deprecated public void reset();
-    method @Deprecated public void resetBiasInNs();
-    method @Deprecated public void resetBiasUncertaintyInNs();
-    method @Deprecated public void resetDriftInNsPerSec();
-    method @Deprecated public void resetDriftUncertaintyInNsPerSec();
-    method @Deprecated public void resetFullBiasInNs();
-    method @Deprecated public void resetLeapSecond();
-    method @Deprecated public void resetTimeUncertaintyInNs();
-    method @Deprecated public void set(android.location.GpsClock);
-    method @Deprecated public void setBiasInNs(double);
-    method @Deprecated public void setBiasUncertaintyInNs(double);
-    method @Deprecated public void setDriftInNsPerSec(double);
-    method @Deprecated public void setDriftUncertaintyInNsPerSec(double);
-    method @Deprecated public void setFullBiasInNs(long);
-    method @Deprecated public void setLeapSecond(short);
-    method @Deprecated public void setTimeInNs(long);
-    method @Deprecated public void setTimeUncertaintyInNs(double);
-    method @Deprecated public void setType(byte);
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.location.GpsClock> CREATOR;
-    field @Deprecated public static final byte TYPE_GPS_TIME = 2; // 0x2
-    field @Deprecated public static final byte TYPE_LOCAL_HW_TIME = 1; // 0x1
-    field @Deprecated public static final byte TYPE_UNKNOWN = 0; // 0x0
-  }
-
-  @Deprecated public class GpsMeasurement implements android.os.Parcelable {
-    method @Deprecated public int describeContents();
-    method @Deprecated public double getAccumulatedDeltaRangeInMeters();
-    method @Deprecated public short getAccumulatedDeltaRangeState();
-    method @Deprecated public double getAccumulatedDeltaRangeUncertaintyInMeters();
-    method @Deprecated public double getAzimuthInDeg();
-    method @Deprecated public double getAzimuthUncertaintyInDeg();
-    method @Deprecated public int getBitNumber();
-    method @Deprecated public long getCarrierCycles();
-    method @Deprecated public float getCarrierFrequencyInHz();
-    method @Deprecated public double getCarrierPhase();
-    method @Deprecated public double getCarrierPhaseUncertainty();
-    method @Deprecated public double getCn0InDbHz();
-    method @Deprecated public double getCodePhaseInChips();
-    method @Deprecated public double getCodePhaseUncertaintyInChips();
-    method @Deprecated public double getDopplerShiftInHz();
-    method @Deprecated public double getDopplerShiftUncertaintyInHz();
-    method @Deprecated public double getElevationInDeg();
-    method @Deprecated public double getElevationUncertaintyInDeg();
-    method @Deprecated public byte getLossOfLock();
-    method @Deprecated public byte getMultipathIndicator();
-    method @Deprecated public byte getPrn();
-    method @Deprecated public double getPseudorangeInMeters();
-    method @Deprecated public double getPseudorangeRateInMetersPerSec();
-    method @Deprecated public double getPseudorangeRateUncertaintyInMetersPerSec();
-    method @Deprecated public double getPseudorangeUncertaintyInMeters();
-    method @Deprecated public long getReceivedGpsTowInNs();
-    method @Deprecated public long getReceivedGpsTowUncertaintyInNs();
-    method @Deprecated public double getSnrInDb();
-    method @Deprecated public short getState();
-    method @Deprecated public short getTimeFromLastBitInMs();
-    method @Deprecated public double getTimeOffsetInNs();
-    method @Deprecated public boolean hasAzimuthInDeg();
-    method @Deprecated public boolean hasAzimuthUncertaintyInDeg();
-    method @Deprecated public boolean hasBitNumber();
-    method @Deprecated public boolean hasCarrierCycles();
-    method @Deprecated public boolean hasCarrierFrequencyInHz();
-    method @Deprecated public boolean hasCarrierPhase();
-    method @Deprecated public boolean hasCarrierPhaseUncertainty();
-    method @Deprecated public boolean hasCodePhaseInChips();
-    method @Deprecated public boolean hasCodePhaseUncertaintyInChips();
-    method @Deprecated public boolean hasDopplerShiftInHz();
-    method @Deprecated public boolean hasDopplerShiftUncertaintyInHz();
-    method @Deprecated public boolean hasElevationInDeg();
-    method @Deprecated public boolean hasElevationUncertaintyInDeg();
-    method @Deprecated public boolean hasPseudorangeInMeters();
-    method @Deprecated public boolean hasPseudorangeUncertaintyInMeters();
-    method @Deprecated public boolean hasSnrInDb();
-    method @Deprecated public boolean hasTimeFromLastBitInMs();
-    method @Deprecated public boolean isPseudorangeRateCorrected();
-    method @Deprecated public boolean isUsedInFix();
-    method @Deprecated public void reset();
-    method @Deprecated public void resetAzimuthInDeg();
-    method @Deprecated public void resetAzimuthUncertaintyInDeg();
-    method @Deprecated public void resetBitNumber();
-    method @Deprecated public void resetCarrierCycles();
-    method @Deprecated public void resetCarrierFrequencyInHz();
-    method @Deprecated public void resetCarrierPhase();
-    method @Deprecated public void resetCarrierPhaseUncertainty();
-    method @Deprecated public void resetCodePhaseInChips();
-    method @Deprecated public void resetCodePhaseUncertaintyInChips();
-    method @Deprecated public void resetDopplerShiftInHz();
-    method @Deprecated public void resetDopplerShiftUncertaintyInHz();
-    method @Deprecated public void resetElevationInDeg();
-    method @Deprecated public void resetElevationUncertaintyInDeg();
-    method @Deprecated public void resetPseudorangeInMeters();
-    method @Deprecated public void resetPseudorangeUncertaintyInMeters();
-    method @Deprecated public void resetSnrInDb();
-    method @Deprecated public void resetTimeFromLastBitInMs();
-    method @Deprecated public void set(android.location.GpsMeasurement);
-    method @Deprecated public void setAccumulatedDeltaRangeInMeters(double);
-    method @Deprecated public void setAccumulatedDeltaRangeState(short);
-    method @Deprecated public void setAccumulatedDeltaRangeUncertaintyInMeters(double);
-    method @Deprecated public void setAzimuthInDeg(double);
-    method @Deprecated public void setAzimuthUncertaintyInDeg(double);
-    method @Deprecated public void setBitNumber(int);
-    method @Deprecated public void setCarrierCycles(long);
-    method @Deprecated public void setCarrierFrequencyInHz(float);
-    method @Deprecated public void setCarrierPhase(double);
-    method @Deprecated public void setCarrierPhaseUncertainty(double);
-    method @Deprecated public void setCn0InDbHz(double);
-    method @Deprecated public void setCodePhaseInChips(double);
-    method @Deprecated public void setCodePhaseUncertaintyInChips(double);
-    method @Deprecated public void setDopplerShiftInHz(double);
-    method @Deprecated public void setDopplerShiftUncertaintyInHz(double);
-    method @Deprecated public void setElevationInDeg(double);
-    method @Deprecated public void setElevationUncertaintyInDeg(double);
-    method @Deprecated public void setLossOfLock(byte);
-    method @Deprecated public void setMultipathIndicator(byte);
-    method @Deprecated public void setPrn(byte);
-    method @Deprecated public void setPseudorangeInMeters(double);
-    method @Deprecated public void setPseudorangeRateInMetersPerSec(double);
-    method @Deprecated public void setPseudorangeRateUncertaintyInMetersPerSec(double);
-    method @Deprecated public void setPseudorangeUncertaintyInMeters(double);
-    method @Deprecated public void setReceivedGpsTowInNs(long);
-    method @Deprecated public void setReceivedGpsTowUncertaintyInNs(long);
-    method @Deprecated public void setSnrInDb(double);
-    method @Deprecated public void setState(short);
-    method @Deprecated public void setTimeFromLastBitInMs(short);
-    method @Deprecated public void setTimeOffsetInNs(double);
-    method @Deprecated public void setUsedInFix(boolean);
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated public static final short ADR_STATE_CYCLE_SLIP = 4; // 0x4
-    field @Deprecated public static final short ADR_STATE_RESET = 2; // 0x2
-    field @Deprecated public static final short ADR_STATE_UNKNOWN = 0; // 0x0
-    field @Deprecated public static final short ADR_STATE_VALID = 1; // 0x1
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.location.GpsMeasurement> CREATOR;
-    field @Deprecated public static final byte LOSS_OF_LOCK_CYCLE_SLIP = 2; // 0x2
-    field @Deprecated public static final byte LOSS_OF_LOCK_OK = 1; // 0x1
-    field @Deprecated public static final byte LOSS_OF_LOCK_UNKNOWN = 0; // 0x0
-    field @Deprecated public static final byte MULTIPATH_INDICATOR_DETECTED = 1; // 0x1
-    field @Deprecated public static final byte MULTIPATH_INDICATOR_NOT_USED = 2; // 0x2
-    field @Deprecated public static final byte MULTIPATH_INDICATOR_UNKNOWN = 0; // 0x0
-    field @Deprecated public static final short STATE_BIT_SYNC = 2; // 0x2
-    field @Deprecated public static final short STATE_CODE_LOCK = 1; // 0x1
-    field @Deprecated public static final short STATE_MSEC_AMBIGUOUS = 16; // 0x10
-    field @Deprecated public static final short STATE_SUBFRAME_SYNC = 4; // 0x4
-    field @Deprecated public static final short STATE_TOW_DECODED = 8; // 0x8
-    field @Deprecated public static final short STATE_UNKNOWN = 0; // 0x0
-  }
-
-  @Deprecated public class GpsMeasurementsEvent implements android.os.Parcelable {
-    ctor @Deprecated public GpsMeasurementsEvent(android.location.GpsClock, android.location.GpsMeasurement[]);
-    method @Deprecated public int describeContents();
-    method @Deprecated @NonNull public android.location.GpsClock getClock();
-    method @Deprecated @NonNull public java.util.Collection<android.location.GpsMeasurement> getMeasurements();
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.location.GpsMeasurementsEvent> CREATOR;
-    field @Deprecated public static final int STATUS_GPS_LOCATION_DISABLED = 2; // 0x2
-    field @Deprecated public static final int STATUS_NOT_SUPPORTED = 0; // 0x0
-    field @Deprecated public static final int STATUS_READY = 1; // 0x1
-  }
-
-  @Deprecated public static interface GpsMeasurementsEvent.Listener {
-    method @Deprecated public void onGpsMeasurementsReceived(android.location.GpsMeasurementsEvent);
-    method @Deprecated public void onStatusChanged(int);
-  }
-
-  @Deprecated public class GpsNavigationMessage implements android.os.Parcelable {
-    method @Deprecated public int describeContents();
-    method @Deprecated @NonNull public byte[] getData();
-    method @Deprecated public short getMessageId();
-    method @Deprecated public byte getPrn();
-    method @Deprecated public short getStatus();
-    method @Deprecated public short getSubmessageId();
-    method @Deprecated public byte getType();
-    method @Deprecated public void reset();
-    method @Deprecated public void set(android.location.GpsNavigationMessage);
-    method @Deprecated public void setData(byte[]);
-    method @Deprecated public void setMessageId(short);
-    method @Deprecated public void setPrn(byte);
-    method @Deprecated public void setStatus(short);
-    method @Deprecated public void setSubmessageId(short);
-    method @Deprecated public void setType(byte);
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.location.GpsNavigationMessage> CREATOR;
-    field @Deprecated public static final short STATUS_PARITY_PASSED = 1; // 0x1
-    field @Deprecated public static final short STATUS_PARITY_REBUILT = 2; // 0x2
-    field @Deprecated public static final short STATUS_UNKNOWN = 0; // 0x0
-    field @Deprecated public static final byte TYPE_CNAV2 = 4; // 0x4
-    field @Deprecated public static final byte TYPE_L1CA = 1; // 0x1
-    field @Deprecated public static final byte TYPE_L2CNAV = 2; // 0x2
-    field @Deprecated public static final byte TYPE_L5CNAV = 3; // 0x3
-    field @Deprecated public static final byte TYPE_UNKNOWN = 0; // 0x0
-  }
-
-  @Deprecated public class GpsNavigationMessageEvent implements android.os.Parcelable {
-    ctor @Deprecated public GpsNavigationMessageEvent(android.location.GpsNavigationMessage);
-    method @Deprecated public int describeContents();
-    method @Deprecated @NonNull public android.location.GpsNavigationMessage getNavigationMessage();
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.location.GpsNavigationMessageEvent> CREATOR;
-    field @Deprecated public static int STATUS_GPS_LOCATION_DISABLED;
-    field @Deprecated public static int STATUS_NOT_SUPPORTED;
-    field @Deprecated public static int STATUS_READY;
-  }
-
-  @Deprecated public static interface GpsNavigationMessageEvent.Listener {
-    method @Deprecated public void onGpsNavigationMessageReceived(android.location.GpsNavigationMessageEvent);
-    method @Deprecated public void onStatusChanged(int);
-  }
-
-  public class Location implements android.os.Parcelable {
-    method public boolean isComplete();
-    method public void makeComplete();
-    method public void setIsFromMockProvider(boolean);
-    field @Deprecated public static final String EXTRA_NO_GPS_LOCATION = "noGPSLocation";
-  }
-
-  public class LocationManager {
-    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void flushGnssBatch();
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void getCurrentLocation(@NonNull android.location.LocationRequest, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.location.Location>);
-    method @Nullable public String getExtraLocationControllerPackage();
-    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public int getGnssBatchSize();
-    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public void injectGnssMeasurementCorrections(@NonNull android.location.GnssMeasurementCorrections);
-    method public boolean isExtraLocationControllerPackageEnabled();
-    method public boolean isLocationEnabledForUser(@NonNull android.os.UserHandle);
-    method public boolean isProviderEnabledForUser(@NonNull String, @NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public boolean isProviderPackage(@NonNull String);
-    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean registerGnssBatchedLocationCallback(long, boolean, @NonNull android.location.BatchedLocationCallback, @Nullable android.os.Handler);
-    method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.LOCATION_HARDWARE}) public boolean registerGnssMeasurementsCallback(@NonNull android.location.GnssRequest, @NonNull java.util.concurrent.Executor, @NonNull android.location.GnssMeasurementsEvent.Callback);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@Nullable android.location.LocationRequest, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@Nullable android.location.LocationRequest, @NonNull java.util.concurrent.Executor, @NonNull android.location.LocationListener);
-    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@Nullable android.location.LocationRequest, @NonNull android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void setExtraLocationControllerPackage(@Nullable String);
-    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void setExtraLocationControllerPackageEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void setLocationEnabledForUser(boolean, @NonNull android.os.UserHandle);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean setProviderEnabledForUser(@NonNull String, boolean, @NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean unregisterGnssBatchedLocationCallback(@NonNull android.location.BatchedLocationCallback);
-  }
-
-  public final class LocationRequest implements android.os.Parcelable {
-    method @NonNull public static android.location.LocationRequest create();
-    method @NonNull public static android.location.LocationRequest createFromDeprecatedCriteria(@NonNull android.location.Criteria, long, float, boolean);
-    method @NonNull public static android.location.LocationRequest createFromDeprecatedProvider(@NonNull String, long, float, boolean);
-    method public int describeContents();
-    method @Deprecated public long getExpireAt();
-    method public long getExpireIn();
-    method public long getFastestInterval();
-    method public boolean getHideFromAppOps();
-    method public long getInterval();
-    method public int getNumUpdates();
-    method @NonNull public String getProvider();
-    method public int getQuality();
-    method public float getSmallestDisplacement();
-    method @Nullable public android.os.WorkSource getWorkSource();
-    method public boolean isLocationSettingsIgnored();
-    method public boolean isLowPowerMode();
-    method @Deprecated @NonNull public android.location.LocationRequest setExpireAt(long);
-    method @NonNull public android.location.LocationRequest setExpireIn(long);
-    method @NonNull public android.location.LocationRequest setFastestInterval(long);
-    method public void setHideFromAppOps(boolean);
-    method @NonNull public android.location.LocationRequest setInterval(long);
-    method @NonNull @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public android.location.LocationRequest setLocationSettingsIgnored(boolean);
-    method @NonNull public android.location.LocationRequest setLowPowerMode(boolean);
-    method @NonNull public android.location.LocationRequest setNumUpdates(int);
-    method @NonNull public android.location.LocationRequest setProvider(@NonNull String);
-    method @NonNull public android.location.LocationRequest setQuality(int);
-    method @NonNull public android.location.LocationRequest setSmallestDisplacement(float);
-    method public void setWorkSource(@Nullable android.os.WorkSource);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ACCURACY_BLOCK = 102; // 0x66
-    field public static final int ACCURACY_CITY = 104; // 0x68
-    field public static final int ACCURACY_FINE = 100; // 0x64
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.LocationRequest> CREATOR;
-    field public static final int POWER_HIGH = 203; // 0xcb
-    field public static final int POWER_LOW = 201; // 0xc9
-    field public static final int POWER_NONE = 200; // 0xc8
-  }
-
-}
-
-package android.media {
-
-  public final class AudioAttributes implements android.os.Parcelable {
-    method public int getAllFlags();
-    method public android.os.Bundle getBundle();
-    method public int getCapturePreset();
-    method public int getSystemUsage();
-    method public static boolean isSystemUsage(int);
-    field public static final int FLAG_BEACON = 8; // 0x8
-    field public static final int FLAG_BYPASS_INTERRUPTION_POLICY = 64; // 0x40
-    field public static final int FLAG_BYPASS_MUTE = 128; // 0x80
-    field public static final int FLAG_HW_HOTWORD = 32; // 0x20
-    field @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static final int USAGE_ANNOUNCEMENT = 1003; // 0x3eb
-    field @RequiresPermission(allOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.MODIFY_AUDIO_ROUTING}) public static final int USAGE_CALL_ASSISTANT = 17; // 0x11
-    field @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static final int USAGE_EMERGENCY = 1000; // 0x3e8
-    field @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static final int USAGE_SAFETY = 1001; // 0x3e9
-    field @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static final int USAGE_VEHICLE_STATUS = 1002; // 0x3ea
-  }
-
-  public static class AudioAttributes.Builder {
-    method public android.media.AudioAttributes.Builder addBundle(@NonNull android.os.Bundle);
-    method public android.media.AudioAttributes.Builder setCapturePreset(int);
-    method public android.media.AudioAttributes.Builder setInternalCapturePreset(int);
-    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public android.media.AudioAttributes.Builder setSystemUsage(int);
-  }
-
-  public final class AudioDeviceAttributes implements android.os.Parcelable {
-    ctor public AudioDeviceAttributes(@NonNull android.media.AudioDeviceInfo);
-    ctor public AudioDeviceAttributes(int, int, @NonNull String);
-    method public int describeContents();
-    method @NonNull public String getAddress();
-    method public int getRole();
-    method public int getType();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.AudioDeviceAttributes> CREATOR;
-    field public static final int ROLE_INPUT = 1; // 0x1
-    field public static final int ROLE_OUTPUT = 2; // 0x2
-  }
-
-  public final class AudioDeviceInfo {
-    field public static final int TYPE_REMOTE_SUBMIX = 25; // 0x19
-  }
-
-  public final class AudioFocusInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.media.AudioAttributes getAttributes();
-    method @NonNull public String getClientId();
-    method public int getClientUid();
-    method public int getFlags();
-    method public int getGainRequest();
-    method public int getLossReceived();
-    method @NonNull public String getPackageName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.AudioFocusInfo> CREATOR;
-  }
-
-  public final class AudioFocusRequest {
-    method public boolean locksFocus();
-  }
-
-  public static final class AudioFocusRequest.Builder {
-    method @NonNull public android.media.AudioFocusRequest.Builder setLocksFocus(boolean);
-  }
-
-  public class AudioManager {
-    method @Deprecated public int abandonAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, android.media.AudioAttributes);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void addOnPreferredDeviceForStrategyChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.OnPreferredDeviceForStrategyChangedListener) throws java.lang.SecurityException;
-    method public void clearAudioServerStateCallback();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int dispatchAudioFocusChange(@NonNull android.media.AudioFocusInfo, int, @NonNull android.media.audiopolicy.AudioPolicy);
-    method @IntRange(from=0) public long getAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo);
-    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static java.util.List<android.media.audiopolicy.AudioProductStrategy> getAudioProductStrategies();
-    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static java.util.List<android.media.audiopolicy.AudioVolumeGroup> getAudioVolumeGroups();
-    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public java.util.List<android.media.AudioDeviceAttributes> getDevicesForAttributes(@NonNull android.media.AudioAttributes);
-    method @IntRange(from=0) public long getMaxAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo);
-    method @IntRange(from=0) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getMaxVolumeIndexForAttributes(@NonNull android.media.AudioAttributes);
-    method @IntRange(from=0) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getMinVolumeIndexForAttributes(@NonNull android.media.AudioAttributes);
-    method @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public android.media.AudioDeviceAttributes getPreferredDeviceForStrategy(@NonNull android.media.audiopolicy.AudioProductStrategy);
-    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int[] getSupportedSystemUsages();
-    method @IntRange(from=0) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getVolumeIndexForAttributes(@NonNull android.media.AudioAttributes);
-    method public boolean isAudioServerRunning();
-    method public boolean isHdmiSystemAudioSupported();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int registerAudioPolicy(@NonNull android.media.audiopolicy.AudioPolicy);
-    method public void registerVolumeGroupCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.VolumeGroupCallback);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void removeOnPreferredDeviceForStrategyChangedListener(@NonNull android.media.AudioManager.OnPreferredDeviceForStrategyChangedListener);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean removePreferredDeviceForStrategy(@NonNull android.media.audiopolicy.AudioProductStrategy);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, @NonNull android.media.AudioAttributes, int, int) throws java.lang.IllegalArgumentException;
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.MODIFY_AUDIO_ROUTING}) public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, @NonNull android.media.AudioAttributes, int, int, android.media.audiopolicy.AudioPolicy) throws java.lang.IllegalArgumentException;
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int requestAudioFocus(@NonNull android.media.AudioFocusRequest, @Nullable android.media.audiopolicy.AudioPolicy);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean setAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo, @IntRange(from=0) long);
-    method public void setAudioServerStateCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.AudioServerStateCallback);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setFocusRequestResult(@NonNull android.media.AudioFocusInfo, int, @NonNull android.media.audiopolicy.AudioPolicy);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean setPreferredDeviceForStrategy(@NonNull android.media.audiopolicy.AudioProductStrategy, @NonNull android.media.AudioDeviceAttributes);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setSupportedSystemUsages(@NonNull int[]);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setVolumeIndexForAttributes(@NonNull android.media.AudioAttributes, int, int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void unregisterAudioPolicy(@NonNull android.media.audiopolicy.AudioPolicy);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void unregisterAudioPolicyAsync(@NonNull android.media.audiopolicy.AudioPolicy);
-    method public void unregisterVolumeGroupCallback(@NonNull android.media.AudioManager.VolumeGroupCallback);
-    field public static final int AUDIOFOCUS_FLAG_DELAY_OK = 1; // 0x1
-    field public static final int AUDIOFOCUS_FLAG_LOCK = 4; // 0x4
-    field public static final int AUDIOFOCUS_FLAG_PAUSES_ON_DUCKABLE_LOSS = 2; // 0x2
-    field @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static final int STREAM_ASSISTANT = 11; // 0xb
-    field public static final int SUCCESS = 0; // 0x0
-  }
-
-  public abstract static class AudioManager.AudioServerStateCallback {
-    ctor public AudioManager.AudioServerStateCallback();
-    method public void onAudioServerDown();
-    method public void onAudioServerUp();
-  }
-
-  public static interface AudioManager.OnPreferredDeviceForStrategyChangedListener {
-    method public void onPreferredDeviceForStrategyChanged(@NonNull android.media.audiopolicy.AudioProductStrategy, @Nullable android.media.AudioDeviceAttributes);
-  }
-
-  public abstract static class AudioManager.VolumeGroupCallback {
-    ctor public AudioManager.VolumeGroupCallback();
-    method public void onAudioVolumeGroupChanged(int, int);
-  }
-
-  public final class AudioPlaybackConfiguration implements android.os.Parcelable {
-    method public int getClientPid();
-    method public int getClientUid();
-    method public int getPlayerInterfaceId();
-    method public android.media.PlayerProxy getPlayerProxy();
-    method public int getPlayerState();
-    method public int getPlayerType();
-    method public boolean isActive();
-    field public static final int PLAYER_STATE_IDLE = 1; // 0x1
-    field public static final int PLAYER_STATE_PAUSED = 3; // 0x3
-    field public static final int PLAYER_STATE_RELEASED = 0; // 0x0
-    field public static final int PLAYER_STATE_STARTED = 2; // 0x2
-    field public static final int PLAYER_STATE_STOPPED = 4; // 0x4
-    field public static final int PLAYER_STATE_UNKNOWN = -1; // 0xffffffff
-    field public static final int PLAYER_TYPE_JAM_AUDIOTRACK = 1; // 0x1
-    field public static final int PLAYER_TYPE_JAM_MEDIAPLAYER = 2; // 0x2
-    field public static final int PLAYER_TYPE_JAM_SOUNDPOOL = 3; // 0x3
-    field public static final int PLAYER_TYPE_SLES_AUDIOPLAYER_BUFFERQUEUE = 11; // 0xb
-    field public static final int PLAYER_TYPE_SLES_AUDIOPLAYER_URI_FD = 12; // 0xc
-    field public static final int PLAYER_TYPE_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public class AudioRecord implements android.media.AudioRecordingMonitor android.media.AudioRouting android.media.MicrophoneDirection {
-    ctor public AudioRecord(android.media.AudioAttributes, android.media.AudioFormat, int, int) throws java.lang.IllegalArgumentException;
-  }
-
-  public static class AudioRecord.Builder {
-    method public android.media.AudioRecord.Builder setAudioAttributes(@NonNull android.media.AudioAttributes) throws java.lang.IllegalArgumentException;
-    method public android.media.AudioRecord.Builder setSessionId(int) throws java.lang.IllegalArgumentException;
-  }
-
-  public final class AudioRecordingConfiguration implements android.os.Parcelable {
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getClientUid();
-  }
-
-  public class AudioTrack implements android.media.AudioRouting android.media.VolumeAutomation {
-    field @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static final int ENCAPSULATION_MODE_HANDLE = 2; // 0x2
-  }
-
-  public static class AudioTrack.Builder {
-    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public android.media.AudioTrack.Builder setTunerConfiguration(@NonNull android.media.AudioTrack.TunerConfiguration);
-  }
-
-  public static class AudioTrack.TunerConfiguration {
-    ctor @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public AudioTrack.TunerConfiguration(@IntRange(from=1) int, @IntRange(from=1) int);
-    method @IntRange(from=1) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getContentId();
-    method @IntRange(from=1) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getSyncId();
-  }
-
-  public class HwAudioSource {
-    method public boolean isPlaying();
-    method public void start();
-    method public void stop();
-  }
-
-  public static final class HwAudioSource.Builder {
-    ctor public HwAudioSource.Builder();
-    method @NonNull public android.media.HwAudioSource build();
-    method @NonNull public android.media.HwAudioSource.Builder setAudioAttributes(@NonNull android.media.AudioAttributes);
-    method @NonNull public android.media.HwAudioSource.Builder setAudioDeviceInfo(@NonNull android.media.AudioDeviceInfo);
-  }
-
-  public final class MediaRecorder.AudioSource {
-    field @RequiresPermission(android.Manifest.permission.CAPTURE_AUDIO_OUTPUT) public static final int ECHO_REFERENCE = 1997; // 0x7cd
-    field @RequiresPermission(android.Manifest.permission.CAPTURE_AUDIO_HOTWORD) public static final int HOTWORD = 1999; // 0x7cf
-    field @RequiresPermission(android.Manifest.permission.CAPTURE_AUDIO_OUTPUT) public static final int RADIO_TUNER = 1998; // 0x7ce
-  }
-
-  public class PlayerProxy {
-    method public void pause();
-    method public void setPan(float);
-    method public void setStartDelayMs(int);
-    method public void setVolume(float);
-    method public void start();
-    method public void stop();
-  }
-
-  public class RingtoneManager {
-    method @RequiresPermission(android.Manifest.permission.WRITE_SETTINGS) public static void ensureDefaultRingtones(@NonNull android.content.Context);
-  }
-
-}
-
-package android.media.audiofx {
-
-  public class AudioEffect {
-    ctor @RequiresPermission("android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS") public AudioEffect(@NonNull java.util.UUID, @NonNull android.media.AudioDeviceAttributes);
-    method @RequiresPermission("android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS") public static boolean isEffectSupportedForDevice(@NonNull java.util.UUID, @NonNull android.media.AudioDeviceAttributes);
-  }
-
-}
-
-package android.media.audiopolicy {
-
-  public class AudioMix {
-    method public int getMixState();
-    field public static final int MIX_STATE_DISABLED = -1; // 0xffffffff
-    field public static final int MIX_STATE_IDLE = 0; // 0x0
-    field public static final int MIX_STATE_MIXING = 1; // 0x1
-    field public static final int ROUTE_FLAG_LOOP_BACK = 2; // 0x2
-    field public static final int ROUTE_FLAG_RENDER = 1; // 0x1
-  }
-
-  public static class AudioMix.Builder {
-    ctor public AudioMix.Builder(android.media.audiopolicy.AudioMixingRule) throws java.lang.IllegalArgumentException;
-    method public android.media.audiopolicy.AudioMix build() throws java.lang.IllegalArgumentException;
-    method public android.media.audiopolicy.AudioMix.Builder setDevice(@NonNull android.media.AudioDeviceInfo) throws java.lang.IllegalArgumentException;
-    method public android.media.audiopolicy.AudioMix.Builder setFormat(android.media.AudioFormat) throws java.lang.IllegalArgumentException;
-    method public android.media.audiopolicy.AudioMix.Builder setRouteFlags(int) throws java.lang.IllegalArgumentException;
-  }
-
-  public class AudioMixingRule {
-    field public static final int RULE_MATCH_ATTRIBUTE_CAPTURE_PRESET = 2; // 0x2
-    field public static final int RULE_MATCH_ATTRIBUTE_USAGE = 1; // 0x1
-    field public static final int RULE_MATCH_UID = 4; // 0x4
-    field public static final int RULE_MATCH_USERID = 8; // 0x8
-  }
-
-  public static class AudioMixingRule.Builder {
-    ctor public AudioMixingRule.Builder();
-    method public android.media.audiopolicy.AudioMixingRule.Builder addMixRule(int, Object) throws java.lang.IllegalArgumentException;
-    method public android.media.audiopolicy.AudioMixingRule.Builder addRule(android.media.AudioAttributes, int) throws java.lang.IllegalArgumentException;
-    method @NonNull public android.media.audiopolicy.AudioMixingRule.Builder allowPrivilegedPlaybackCapture(boolean);
-    method public android.media.audiopolicy.AudioMixingRule build();
-    method public android.media.audiopolicy.AudioMixingRule.Builder excludeMixRule(int, Object) throws java.lang.IllegalArgumentException;
-    method public android.media.audiopolicy.AudioMixingRule.Builder excludeRule(android.media.AudioAttributes, int) throws java.lang.IllegalArgumentException;
-  }
-
-  public class AudioPolicy {
-    method public int attachMixes(@NonNull java.util.List<android.media.audiopolicy.AudioMix>);
-    method public android.media.AudioRecord createAudioRecordSink(android.media.audiopolicy.AudioMix) throws java.lang.IllegalArgumentException;
-    method public android.media.AudioTrack createAudioTrackSource(android.media.audiopolicy.AudioMix) throws java.lang.IllegalArgumentException;
-    method public int detachMixes(@NonNull java.util.List<android.media.audiopolicy.AudioMix>);
-    method public int getFocusDuckingBehavior();
-    method public int getStatus();
-    method public boolean removeUidDeviceAffinity(int);
-    method public boolean removeUserIdDeviceAffinity(int);
-    method public int setFocusDuckingBehavior(int) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
-    method public void setRegistration(String);
-    method public boolean setUidDeviceAffinity(int, @NonNull java.util.List<android.media.AudioDeviceInfo>);
-    method public boolean setUserIdDeviceAffinity(int, @NonNull java.util.List<android.media.AudioDeviceInfo>);
-    method public String toLogFriendlyString();
-    field public static final int FOCUS_POLICY_DUCKING_DEFAULT = 0; // 0x0
-    field public static final int FOCUS_POLICY_DUCKING_IN_APP = 0; // 0x0
-    field public static final int FOCUS_POLICY_DUCKING_IN_POLICY = 1; // 0x1
-    field public static final int POLICY_STATUS_REGISTERED = 2; // 0x2
-    field public static final int POLICY_STATUS_UNREGISTERED = 1; // 0x1
-  }
-
-  public abstract static class AudioPolicy.AudioPolicyFocusListener {
-    ctor public AudioPolicy.AudioPolicyFocusListener();
-    method public void onAudioFocusAbandon(android.media.AudioFocusInfo);
-    method public void onAudioFocusGrant(android.media.AudioFocusInfo, int);
-    method public void onAudioFocusLoss(android.media.AudioFocusInfo, boolean);
-    method public void onAudioFocusRequest(android.media.AudioFocusInfo, int);
-  }
-
-  public abstract static class AudioPolicy.AudioPolicyStatusListener {
-    ctor public AudioPolicy.AudioPolicyStatusListener();
-    method public void onMixStateUpdate(android.media.audiopolicy.AudioMix);
-    method public void onStatusChange();
-  }
-
-  public abstract static class AudioPolicy.AudioPolicyVolumeCallback {
-    ctor public AudioPolicy.AudioPolicyVolumeCallback();
-    method public void onVolumeAdjustment(int);
-  }
-
-  public static class AudioPolicy.Builder {
-    ctor public AudioPolicy.Builder(android.content.Context);
-    method @NonNull public android.media.audiopolicy.AudioPolicy.Builder addMix(@NonNull android.media.audiopolicy.AudioMix) throws java.lang.IllegalArgumentException;
-    method @NonNull public android.media.audiopolicy.AudioPolicy build();
-    method public void setAudioPolicyFocusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyFocusListener);
-    method public void setAudioPolicyStatusListener(android.media.audiopolicy.AudioPolicy.AudioPolicyStatusListener);
-    method @NonNull public android.media.audiopolicy.AudioPolicy.Builder setAudioPolicyVolumeCallback(@NonNull android.media.audiopolicy.AudioPolicy.AudioPolicyVolumeCallback);
-    method @NonNull public android.media.audiopolicy.AudioPolicy.Builder setIsAudioFocusPolicy(boolean);
-    method @NonNull public android.media.audiopolicy.AudioPolicy.Builder setLooper(@NonNull android.os.Looper) throws java.lang.IllegalArgumentException;
-  }
-
-  public final class AudioProductStrategy implements android.os.Parcelable {
-    method @NonNull public static android.media.audiopolicy.AudioProductStrategy createInvalidAudioProductStrategy(int);
-    method public int describeContents();
-    method @NonNull public android.media.AudioAttributes getAudioAttributes();
-    method public int getId();
-    method public boolean supportsAudioAttributes(@NonNull android.media.AudioAttributes);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.audiopolicy.AudioProductStrategy> CREATOR;
-  }
-
-  public final class AudioVolumeGroup implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public java.util.List<android.media.AudioAttributes> getAudioAttributes();
-    method public int getId();
-    method @NonNull public int[] getLegacyStreamTypes();
-    method @NonNull public String name();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.media.audiopolicy.AudioVolumeGroup> CREATOR;
-    field public static final int DEFAULT_VOLUME_GROUP = -1; // 0xffffffff
-  }
-
-}
-
-package android.media.session {
-
-  public final class MediaSessionManager {
-    method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void addOnMediaKeyEventDispatchedListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.session.MediaSessionManager.OnMediaKeyEventDispatchedListener);
-    method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void addOnMediaKeyEventSessionChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.session.MediaSessionManager.OnMediaKeyEventSessionChangedListener);
-    method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void removeOnMediaKeyEventDispatchedListener(@NonNull android.media.session.MediaSessionManager.OnMediaKeyEventDispatchedListener);
-    method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void removeOnMediaKeyEventSessionChangedListener(@NonNull android.media.session.MediaSessionManager.OnMediaKeyEventSessionChangedListener);
-    method @RequiresPermission(android.Manifest.permission.SET_MEDIA_KEY_LISTENER) public void setOnMediaKeyListener(android.media.session.MediaSessionManager.OnMediaKeyListener, @Nullable android.os.Handler);
-    method @RequiresPermission(android.Manifest.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER) public void setOnVolumeKeyLongPressListener(android.media.session.MediaSessionManager.OnVolumeKeyLongPressListener, @Nullable android.os.Handler);
-  }
-
-  public static interface MediaSessionManager.OnMediaKeyEventDispatchedListener {
-    method public void onMediaKeyEventDispatched(@NonNull android.view.KeyEvent, @NonNull String, @Nullable android.media.session.MediaSession.Token);
-  }
-
-  public static interface MediaSessionManager.OnMediaKeyEventSessionChangedListener {
-    method public void onMediaKeyEventSessionChanged(@NonNull String, @Nullable android.media.session.MediaSession.Token);
-  }
-
-  public static interface MediaSessionManager.OnMediaKeyListener {
-    method public boolean onMediaKey(android.view.KeyEvent);
-  }
-
-  public static interface MediaSessionManager.OnVolumeKeyLongPressListener {
-    method public void onVolumeKeyLongPress(android.view.KeyEvent);
-  }
-
-}
-
-package android.media.soundtrigger {
-
-  public abstract class SoundTriggerDetectionService extends android.app.Service {
-    ctor public SoundTriggerDetectionService();
-    method @MainThread public void onConnected(@NonNull java.util.UUID, @Nullable android.os.Bundle);
-    method @MainThread public void onDisconnected(@NonNull java.util.UUID, @Nullable android.os.Bundle);
-    method @MainThread public void onError(@NonNull java.util.UUID, @Nullable android.os.Bundle, int, int);
-    method @MainThread public void onGenericRecognitionEvent(@NonNull java.util.UUID, @Nullable android.os.Bundle, int, @NonNull android.hardware.soundtrigger.SoundTrigger.RecognitionEvent);
-    method @MainThread public abstract void onStopOperation(@NonNull java.util.UUID, @Nullable android.os.Bundle, int);
-    method public final void operationFinished(@Nullable java.util.UUID, int);
-  }
-
-  public final class SoundTriggerDetector {
-    method @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public boolean startRecognition(int);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public boolean stopRecognition();
-    field public static final int RECOGNITION_FLAG_ALLOW_MULTIPLE_TRIGGERS = 2; // 0x2
-    field public static final int RECOGNITION_FLAG_CAPTURE_TRIGGER_AUDIO = 1; // 0x1
-    field public static final int RECOGNITION_FLAG_ENABLE_AUDIO_ECHO_CANCELLATION = 4; // 0x4
-    field public static final int RECOGNITION_FLAG_ENABLE_AUDIO_NOISE_SUPPRESSION = 8; // 0x8
-  }
-
-  public abstract static class SoundTriggerDetector.Callback {
-    ctor public SoundTriggerDetector.Callback();
-    method public abstract void onAvailabilityChanged(int);
-    method public abstract void onDetected(@NonNull android.media.soundtrigger.SoundTriggerDetector.EventPayload);
-    method public abstract void onError();
-    method public abstract void onRecognitionPaused();
-    method public abstract void onRecognitionResumed();
-  }
-
-  public static class SoundTriggerDetector.EventPayload {
-    method @Nullable public android.media.AudioFormat getCaptureAudioFormat();
-    method @Nullable public byte[] getTriggerAudio();
-  }
-
-  public final class SoundTriggerManager {
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public android.media.soundtrigger.SoundTriggerDetector createSoundTriggerDetector(java.util.UUID, @NonNull android.media.soundtrigger.SoundTriggerDetector.Callback, @Nullable android.os.Handler);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public void deleteModel(java.util.UUID);
-    method public int getDetectionServiceOperationsTimeout();
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public android.media.soundtrigger.SoundTriggerManager.Model getModel(java.util.UUID);
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public android.hardware.soundtrigger.SoundTrigger.ModuleProperties getModuleProperties();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public int getParameter(@NonNull java.util.UUID, int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public android.hardware.soundtrigger.SoundTrigger.ModelParamRange queryParameter(@Nullable java.util.UUID, int);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public int setParameter(@Nullable java.util.UUID, int, int);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER) public void updateModel(android.media.soundtrigger.SoundTriggerManager.Model);
-  }
-
-  public static class SoundTriggerManager.Model {
-    method @NonNull public static android.media.soundtrigger.SoundTriggerManager.Model create(@NonNull java.util.UUID, @NonNull java.util.UUID, @Nullable byte[], int);
-    method @NonNull public static android.media.soundtrigger.SoundTriggerManager.Model create(@NonNull java.util.UUID, @NonNull java.util.UUID, @Nullable byte[]);
-    method @Nullable public byte[] getModelData();
-    method @NonNull public java.util.UUID getModelUuid();
-    method @NonNull public java.util.UUID getVendorUuid();
-    method public int getVersion();
-  }
-
-}
-
-package android.media.tv {
-
-  public final class DvbDeviceInfo implements android.os.Parcelable {
-    ctor public DvbDeviceInfo(int, int);
-    method public int describeContents();
-    method @IntRange(from=0) public int getAdapterId();
-    method @IntRange(from=0) public int getDeviceId();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.DvbDeviceInfo> CREATOR;
-  }
-
-  public final class TvContentRatingSystemInfo implements android.os.Parcelable {
-    method public static android.media.tv.TvContentRatingSystemInfo createTvContentRatingSystemInfo(int, android.content.pm.ApplicationInfo);
-    method public int describeContents();
-    method public android.net.Uri getXmlUri();
-    method public boolean isSystemDefined();
-    method public void writeToParcel(android.os.Parcel, int);
-  }
-
-  public final class TvContract {
-    method public static android.net.Uri buildChannelsUriForInput(@Nullable String, boolean);
-    method public static android.net.Uri buildChannelsUriForInput(@Nullable String, @Nullable String, boolean);
-    field public static final String ACTION_CHANNEL_BROWSABLE_REQUESTED = "android.media.tv.action.CHANNEL_BROWSABLE_REQUESTED";
-    field public static final String EXTRA_BLOCKED_PACKAGES = "android.media.tv.extra.BLOCKED_PACKAGES";
-    field public static final String EXTRA_COLUMN_NAME = "android.media.tv.extra.COLUMN_NAME";
-    field public static final String EXTRA_DATA_TYPE = "android.media.tv.extra.DATA_TYPE";
-    field public static final String EXTRA_DEFAULT_VALUE = "android.media.tv.extra.DEFAULT_VALUE";
-    field public static final String EXTRA_EXISTING_COLUMN_NAMES = "android.media.tv.extra.EXISTING_COLUMN_NAMES";
-    field public static final String EXTRA_PACKAGE_NAME = "android.media.tv.extra.PACKAGE_NAME";
-    field public static final String EXTRA_RESULT_CODE = "android.media.tv.extra.RESULT_CODE";
-    field public static final String METHOD_ADD_COLUMN = "add_column";
-    field public static final String METHOD_BLOCK_PACKAGE = "block_package";
-    field public static final String METHOD_GET_BLOCKED_PACKAGES = "get_blocked_packages";
-    field public static final String METHOD_GET_COLUMNS = "get_columns";
-    field public static final String METHOD_UNBLOCK_PACKAGE = "unblock_package";
-    field public static final int RESULT_ERROR_INVALID_ARGUMENT = 2; // 0x2
-    field public static final int RESULT_ERROR_IO = 1; // 0x1
-    field public static final int RESULT_OK = 0; // 0x0
-  }
-
-  public static final class TvContract.WatchedPrograms implements android.media.tv.TvContract.BaseTvColumns {
-    field public static final String COLUMN_CHANNEL_ID = "channel_id";
-    field public static final String COLUMN_DESCRIPTION = "description";
-    field public static final String COLUMN_END_TIME_UTC_MILLIS = "end_time_utc_millis";
-    field public static final String COLUMN_INTERNAL_SESSION_TOKEN = "session_token";
-    field public static final String COLUMN_INTERNAL_TUNE_PARAMS = "tune_params";
-    field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
-    field public static final String COLUMN_TITLE = "title";
-    field public static final String COLUMN_WATCH_END_TIME_UTC_MILLIS = "watch_end_time_utc_millis";
-    field public static final String COLUMN_WATCH_START_TIME_UTC_MILLIS = "watch_start_time_utc_millis";
-    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/watched_program";
-    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/watched_program";
-    field public static final android.net.Uri CONTENT_URI;
-  }
-
-  public final class TvInputHardwareInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public String getAudioAddress();
-    method public int getAudioType();
-    method public int getCableConnectionStatus();
-    method public int getDeviceId();
-    method public int getHdmiPortId();
-    method public int getType();
-    method public void readFromParcel(android.os.Parcel);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CABLE_CONNECTION_STATUS_CONNECTED = 1; // 0x1
-    field public static final int CABLE_CONNECTION_STATUS_DISCONNECTED = 2; // 0x2
-    field public static final int CABLE_CONNECTION_STATUS_UNKNOWN = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.TvInputHardwareInfo> CREATOR;
-    field public static final int TV_INPUT_TYPE_COMPONENT = 6; // 0x6
-    field public static final int TV_INPUT_TYPE_COMPOSITE = 3; // 0x3
-    field public static final int TV_INPUT_TYPE_DISPLAY_PORT = 10; // 0xa
-    field public static final int TV_INPUT_TYPE_DVI = 8; // 0x8
-    field public static final int TV_INPUT_TYPE_HDMI = 9; // 0x9
-    field public static final int TV_INPUT_TYPE_OTHER_HARDWARE = 1; // 0x1
-    field public static final int TV_INPUT_TYPE_SCART = 5; // 0x5
-    field public static final int TV_INPUT_TYPE_SVIDEO = 4; // 0x4
-    field public static final int TV_INPUT_TYPE_TUNER = 2; // 0x2
-    field public static final int TV_INPUT_TYPE_VGA = 7; // 0x7
-  }
-
-  public static final class TvInputHardwareInfo.Builder {
-    ctor public TvInputHardwareInfo.Builder();
-    method public android.media.tv.TvInputHardwareInfo.Builder audioAddress(String);
-    method public android.media.tv.TvInputHardwareInfo.Builder audioType(int);
-    method public android.media.tv.TvInputHardwareInfo build();
-    method public android.media.tv.TvInputHardwareInfo.Builder cableConnectionStatus(int);
-    method public android.media.tv.TvInputHardwareInfo.Builder deviceId(int);
-    method public android.media.tv.TvInputHardwareInfo.Builder hdmiPortId(int);
-    method public android.media.tv.TvInputHardwareInfo.Builder type(int);
-  }
-
-  public final class TvInputInfo implements android.os.Parcelable {
-    method @Deprecated public static android.media.tv.TvInputInfo createTvInputInfo(android.content.Context, android.content.pm.ResolveInfo, android.hardware.hdmi.HdmiDeviceInfo, String, String, android.net.Uri) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method @Deprecated public static android.media.tv.TvInputInfo createTvInputInfo(android.content.Context, android.content.pm.ResolveInfo, android.hardware.hdmi.HdmiDeviceInfo, String, int, android.graphics.drawable.Icon) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method @Deprecated public static android.media.tv.TvInputInfo createTvInputInfo(android.content.Context, android.content.pm.ResolveInfo, android.media.tv.TvInputHardwareInfo, String, android.net.Uri) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method @Deprecated public static android.media.tv.TvInputInfo createTvInputInfo(android.content.Context, android.content.pm.ResolveInfo, android.media.tv.TvInputHardwareInfo, int, android.graphics.drawable.Icon) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public android.hardware.hdmi.HdmiDeviceInfo getHdmiDeviceInfo();
-    method public boolean isConnectedToHdmiSwitch();
-    method public boolean isHardwareInput();
-    method public android.graphics.drawable.Drawable loadIcon(@NonNull android.content.Context, int);
-  }
-
-  public static final class TvInputInfo.Builder {
-    method public android.media.tv.TvInputInfo.Builder setHdmiDeviceInfo(android.hardware.hdmi.HdmiDeviceInfo);
-    method public android.media.tv.TvInputInfo.Builder setIcon(android.graphics.drawable.Icon);
-    method public android.media.tv.TvInputInfo.Builder setIcon(android.graphics.drawable.Icon, int);
-    method public android.media.tv.TvInputInfo.Builder setLabel(CharSequence);
-    method public android.media.tv.TvInputInfo.Builder setLabel(@StringRes int);
-    method public android.media.tv.TvInputInfo.Builder setParentId(String);
-    method public android.media.tv.TvInputInfo.Builder setTvInputHardwareInfo(android.media.tv.TvInputHardwareInfo);
-  }
-
-  public static final class TvInputInfo.TvInputSettings {
-    method public static java.util.Map<java.lang.String,java.lang.String> getCustomLabels(android.content.Context, int);
-    method public static java.util.Set<java.lang.String> getHiddenTvInputIds(android.content.Context, int);
-    method public static void putCustomLabels(android.content.Context, java.util.Map<java.lang.String,java.lang.String>, int);
-    method public static void putHiddenTvInputs(android.content.Context, java.util.Set<java.lang.String>, int);
-  }
-
-  public final class TvInputManager {
-    method @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public android.media.tv.TvInputManager.Hardware acquireTvInputHardware(int, @NonNull android.media.tv.TvInputInfo, @NonNull android.media.tv.TvInputManager.HardwareCallback);
-    method @Nullable @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public android.media.tv.TvInputManager.Hardware acquireTvInputHardware(int, @NonNull android.media.tv.TvInputInfo, @Nullable String, int, @NonNull java.util.concurrent.Executor, @NonNull android.media.tv.TvInputManager.HardwareCallback);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void addBlockedRating(@NonNull android.media.tv.TvContentRating);
-    method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public boolean captureFrame(String, android.view.Surface, android.media.tv.TvStreamConfig);
-    method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public java.util.List<android.media.tv.TvStreamConfig> getAvailableTvStreamConfigList(String);
-    method @NonNull @RequiresPermission("android.permission.DVB_DEVICE") public java.util.List<android.media.tv.DvbDeviceInfo> getDvbDeviceList();
-    method @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public java.util.List<android.media.tv.TvInputHardwareInfo> getHardwareList();
-    method @RequiresPermission(android.Manifest.permission.READ_CONTENT_RATING_SYSTEMS) public java.util.List<android.media.tv.TvContentRatingSystemInfo> getTvContentRatingSystemList();
-    method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public boolean isSingleSessionActive();
-    method @RequiresPermission(android.Manifest.permission.NOTIFY_TV_INPUTS) public void notifyPreviewProgramAddedToWatchNext(String, long, long);
-    method @RequiresPermission(android.Manifest.permission.NOTIFY_TV_INPUTS) public void notifyPreviewProgramBrowsableDisabled(String, long);
-    method @RequiresPermission(android.Manifest.permission.NOTIFY_TV_INPUTS) public void notifyWatchNextProgramBrowsableDisabled(String, long);
-    method @Nullable @RequiresPermission("android.permission.DVB_DEVICE") public android.os.ParcelFileDescriptor openDvbDevice(@NonNull android.media.tv.DvbDeviceInfo, int);
-    method @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public void releaseTvInputHardware(int, android.media.tv.TvInputManager.Hardware);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void removeBlockedRating(@NonNull android.media.tv.TvContentRating);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void setParentalControlsEnabled(boolean);
-  }
-
-  public static final class TvInputManager.Hardware {
-    method public void overrideAudioSink(int, String, int, int, int);
-    method public void setStreamVolume(float);
-    method public boolean setSurface(android.view.Surface, android.media.tv.TvStreamConfig);
-  }
-
-  public abstract static class TvInputManager.HardwareCallback {
-    ctor public TvInputManager.HardwareCallback();
-    method public abstract void onReleased();
-    method public abstract void onStreamConfigChanged(android.media.tv.TvStreamConfig[]);
-  }
-
-  public abstract class TvInputService extends android.app.Service {
-    method @Nullable public android.media.tv.TvInputInfo onHardwareAdded(android.media.tv.TvInputHardwareInfo);
-    method @Nullable public String onHardwareRemoved(android.media.tv.TvInputHardwareInfo);
-    method @Nullable public android.media.tv.TvInputInfo onHdmiDeviceAdded(android.hardware.hdmi.HdmiDeviceInfo);
-    method @Nullable public String onHdmiDeviceRemoved(android.hardware.hdmi.HdmiDeviceInfo);
-    method public void onHdmiDeviceUpdated(@NonNull android.hardware.hdmi.HdmiDeviceInfo);
-  }
-
-  public abstract static class TvInputService.RecordingSession {
-    method public void notifySessionEvent(@NonNull String, android.os.Bundle);
-  }
-
-  public abstract static class TvInputService.Session implements android.view.KeyEvent.Callback {
-    method public void notifySessionEvent(@NonNull String, android.os.Bundle);
-    method public void onSetMain(boolean);
-  }
-
-  public abstract static class TvRecordingClient.RecordingCallback {
-    method public void onEvent(String, String, android.os.Bundle);
-  }
-
-  public class TvStreamConfig implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getGeneration();
-    method public int getMaxHeight();
-    method public int getMaxWidth();
-    method public int getStreamId();
-    method public int getType();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.TvStreamConfig> CREATOR;
-    field public static final int STREAM_TYPE_BUFFER_PRODUCER = 2; // 0x2
-    field public static final int STREAM_TYPE_INDEPENDENT_VIDEO_SOURCE = 1; // 0x1
-  }
-
-  public static final class TvStreamConfig.Builder {
-    ctor public TvStreamConfig.Builder();
-    method public android.media.tv.TvStreamConfig build();
-    method public android.media.tv.TvStreamConfig.Builder generation(int);
-    method public android.media.tv.TvStreamConfig.Builder maxHeight(int);
-    method public android.media.tv.TvStreamConfig.Builder maxWidth(int);
-    method public android.media.tv.TvStreamConfig.Builder streamId(int);
-    method public android.media.tv.TvStreamConfig.Builder type(int);
-  }
-
-  public class TvView extends android.view.ViewGroup {
-    method @RequiresPermission("android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE") public void setMain();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void unblockContent(android.media.tv.TvContentRating);
-  }
-
-  public abstract static class TvView.TvInputCallback {
-    method public void onEvent(String, String, android.os.Bundle);
-  }
-
-}
-
-package android.media.tv.tuner {
-
-  public class DemuxCapabilities {
-    method public int getAudioFilterCount();
-    method public int getDemuxCount();
-    method public int getFilterCapabilities();
-    method @NonNull @Size(5) public int[] getLinkCapabilities();
-    method public int getPcrFilterCount();
-    method public int getPesFilterCount();
-    method public int getPlaybackCount();
-    method public int getRecordCount();
-    method public int getSectionFilterCount();
-    method public long getSectionFilterLength();
-    method public int getTsFilterCount();
-    method public int getVideoFilterCount();
-    method public boolean isTimeFilterSupported();
-  }
-
-  public class Descrambler implements java.lang.AutoCloseable {
-    method public int addPid(int, int, @Nullable android.media.tv.tuner.filter.Filter);
-    method public void close();
-    method public int removePid(int, int, @Nullable android.media.tv.tuner.filter.Filter);
-    method public int setKeyToken(@NonNull byte[]);
-    field public static final int PID_TYPE_MMTP = 2; // 0x2
-    field public static final int PID_TYPE_T = 1; // 0x1
-  }
-
-  public class Lnb implements java.lang.AutoCloseable {
-    method public void close();
-    method public int sendDiseqcMessage(@NonNull byte[]);
-    method public int setSatellitePosition(int);
-    method public int setTone(int);
-    method public int setVoltage(int);
-    field public static final int EVENT_TYPE_DISEQC_RX_OVERFLOW = 0; // 0x0
-    field public static final int EVENT_TYPE_DISEQC_RX_PARITY_ERROR = 2; // 0x2
-    field public static final int EVENT_TYPE_DISEQC_RX_TIMEOUT = 1; // 0x1
-    field public static final int EVENT_TYPE_LNB_OVERLOAD = 3; // 0x3
-    field public static final int POSITION_A = 1; // 0x1
-    field public static final int POSITION_B = 2; // 0x2
-    field public static final int POSITION_UNDEFINED = 0; // 0x0
-    field public static final int TONE_CONTINUOUS = 1; // 0x1
-    field public static final int TONE_NONE = 0; // 0x0
-    field public static final int VOLTAGE_11V = 2; // 0x2
-    field public static final int VOLTAGE_12V = 3; // 0x3
-    field public static final int VOLTAGE_13V = 4; // 0x4
-    field public static final int VOLTAGE_14V = 5; // 0x5
-    field public static final int VOLTAGE_15V = 6; // 0x6
-    field public static final int VOLTAGE_18V = 7; // 0x7
-    field public static final int VOLTAGE_19V = 8; // 0x8
-    field public static final int VOLTAGE_5V = 1; // 0x1
-    field public static final int VOLTAGE_NONE = 0; // 0x0
-  }
-
-  public interface LnbCallback {
-    method public void onDiseqcMessage(@NonNull byte[]);
-    method public void onEvent(int);
-  }
-
-  public class Tuner implements java.lang.AutoCloseable {
-    ctor @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public Tuner(@NonNull android.content.Context, @Nullable String, int);
-    method public int cancelScanning();
-    method public int cancelTuning();
-    method public void clearOnTuneEventListener();
-    method public void clearResourceLostListener();
-    method public void close();
-    method public int connectCiCam(int);
-    method public int disconnectCiCam();
-    method public int getAvSyncHwId(@NonNull android.media.tv.tuner.filter.Filter);
-    method public long getAvSyncTime(int);
-    method @Nullable public android.media.tv.tuner.DemuxCapabilities getDemuxCapabilities();
-    method @Nullable public android.media.tv.tuner.frontend.FrontendInfo getFrontendInfo();
-    method @Nullable public android.media.tv.tuner.frontend.FrontendStatus getFrontendStatus(@NonNull int[]);
-    method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_DESCRAMBLER) public android.media.tv.tuner.Descrambler openDescrambler();
-    method @Nullable public android.media.tv.tuner.dvr.DvrPlayback openDvrPlayback(long, @NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.dvr.OnPlaybackStatusChangedListener);
-    method @Nullable public android.media.tv.tuner.dvr.DvrRecorder openDvrRecorder(long, @NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.dvr.OnRecordStatusChangedListener);
-    method @Nullable public android.media.tv.tuner.filter.Filter openFilter(int, int, long, @Nullable java.util.concurrent.Executor, @Nullable android.media.tv.tuner.filter.FilterCallback);
-    method @Nullable public android.media.tv.tuner.Lnb openLnb(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.LnbCallback);
-    method @Nullable public android.media.tv.tuner.Lnb openLnbByName(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.LnbCallback);
-    method @Nullable public android.media.tv.tuner.filter.TimeFilter openTimeFilter();
-    method public int scan(@NonNull android.media.tv.tuner.frontend.FrontendSettings, int, @NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.frontend.ScanCallback);
-    method public int setLnaEnabled(boolean);
-    method public void setOnTuneEventListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.frontend.OnTuneEventListener);
-    method public void setResourceLostListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.Tuner.OnResourceLostListener);
-    method public void shareFrontendFromTuner(@NonNull android.media.tv.tuner.Tuner);
-    method public int tune(@NonNull android.media.tv.tuner.frontend.FrontendSettings);
-    method public void updateResourcePriority(int, int);
-    field public static final int INVALID_AV_SYNC_ID = -1; // 0xffffffff
-    field public static final int INVALID_FILTER_ID = -1; // 0xffffffff
-    field public static final int INVALID_STREAM_ID = 65535; // 0xffff
-    field public static final long INVALID_TIMESTAMP = -1L; // 0xffffffffffffffffL
-    field public static final int INVALID_TS_PID = 65535; // 0xffff
-    field public static final int RESULT_INVALID_ARGUMENT = 4; // 0x4
-    field public static final int RESULT_INVALID_STATE = 3; // 0x3
-    field public static final int RESULT_NOT_INITIALIZED = 2; // 0x2
-    field public static final int RESULT_OUT_OF_MEMORY = 5; // 0x5
-    field public static final int RESULT_SUCCESS = 0; // 0x0
-    field public static final int RESULT_UNAVAILABLE = 1; // 0x1
-    field public static final int RESULT_UNKNOWN_ERROR = 6; // 0x6
-    field public static final int SCAN_TYPE_AUTO = 1; // 0x1
-    field public static final int SCAN_TYPE_BLIND = 2; // 0x2
-    field public static final int SCAN_TYPE_UNDEFINED = 0; // 0x0
-  }
-
-  public static interface Tuner.OnResourceLostListener {
-    method public void onResourceLost(@NonNull android.media.tv.tuner.Tuner);
-  }
-
-}
-
-package android.media.tv.tuner.dvr {
-
-  public class DvrPlayback implements java.lang.AutoCloseable {
-    method public int attachFilter(@NonNull android.media.tv.tuner.filter.Filter);
-    method public void close();
-    method public int configure(@NonNull android.media.tv.tuner.dvr.DvrSettings);
-    method public int detachFilter(@NonNull android.media.tv.tuner.filter.Filter);
-    method public int flush();
-    method public long read(long);
-    method public long read(@NonNull byte[], long, long);
-    method public void setFileDescriptor(@NonNull android.os.ParcelFileDescriptor);
-    method public int start();
-    method public int stop();
-    field public static final int PLAYBACK_STATUS_ALMOST_EMPTY = 2; // 0x2
-    field public static final int PLAYBACK_STATUS_ALMOST_FULL = 4; // 0x4
-    field public static final int PLAYBACK_STATUS_EMPTY = 1; // 0x1
-    field public static final int PLAYBACK_STATUS_FULL = 8; // 0x8
-  }
-
-  public class DvrRecorder implements java.lang.AutoCloseable {
-    method public int attachFilter(@NonNull android.media.tv.tuner.filter.Filter);
-    method public void close();
-    method public int configure(@NonNull android.media.tv.tuner.dvr.DvrSettings);
-    method public int detachFilter(@NonNull android.media.tv.tuner.filter.Filter);
-    method public int flush();
-    method public void setFileDescriptor(@NonNull android.os.ParcelFileDescriptor);
-    method public int start();
-    method public int stop();
-    method public long write(long);
-    method public long write(@NonNull byte[], long, long);
-  }
-
-  public class DvrSettings {
-    method @NonNull public static android.media.tv.tuner.dvr.DvrSettings.Builder builder();
-    method public int getDataFormat();
-    method public long getHighThreshold();
-    method public long getLowThreshold();
-    method public long getPacketSize();
-    method public int getStatusMask();
-    field public static final int DATA_FORMAT_ES = 2; // 0x2
-    field public static final int DATA_FORMAT_PES = 1; // 0x1
-    field public static final int DATA_FORMAT_SHV_TLV = 3; // 0x3
-    field public static final int DATA_FORMAT_TS = 0; // 0x0
-  }
-
-  public static final class DvrSettings.Builder {
-    ctor public DvrSettings.Builder();
-    method @NonNull public android.media.tv.tuner.dvr.DvrSettings build();
-    method @NonNull public android.media.tv.tuner.dvr.DvrSettings.Builder setDataFormat(int);
-    method @NonNull public android.media.tv.tuner.dvr.DvrSettings.Builder setHighThreshold(long);
-    method @NonNull public android.media.tv.tuner.dvr.DvrSettings.Builder setLowThreshold(long);
-    method @NonNull public android.media.tv.tuner.dvr.DvrSettings.Builder setPacketSize(long);
-    method @NonNull public android.media.tv.tuner.dvr.DvrSettings.Builder setStatusMask(int);
-  }
-
-  public interface OnPlaybackStatusChangedListener {
-    method public void onPlaybackStatusChanged(int);
-  }
-
-  public interface OnRecordStatusChangedListener {
-    method public void onRecordStatusChanged(int);
-  }
-
-}
-
-package android.media.tv.tuner.filter {
-
-  public final class AlpFilterConfiguration extends android.media.tv.tuner.filter.FilterConfiguration {
-    method @NonNull public static android.media.tv.tuner.filter.AlpFilterConfiguration.Builder builder();
-    method public int getLengthType();
-    method public int getPacketType();
-    method public int getType();
-    field public static final int LENGTH_TYPE_UNDEFINED = 0; // 0x0
-    field public static final int LENGTH_TYPE_WITHOUT_ADDITIONAL_HEADER = 1; // 0x1
-    field public static final int LENGTH_TYPE_WITH_ADDITIONAL_HEADER = 2; // 0x2
-    field public static final int PACKET_TYPE_COMPRESSED = 2; // 0x2
-    field public static final int PACKET_TYPE_EXTENSION = 6; // 0x6
-    field public static final int PACKET_TYPE_IPV4 = 0; // 0x0
-    field public static final int PACKET_TYPE_MPEG2_TS = 7; // 0x7
-    field public static final int PACKET_TYPE_SIGNALING = 4; // 0x4
-  }
-
-  public static final class AlpFilterConfiguration.Builder {
-    method @NonNull public android.media.tv.tuner.filter.AlpFilterConfiguration build();
-    method @NonNull public android.media.tv.tuner.filter.AlpFilterConfiguration.Builder setLengthType(int);
-    method @NonNull public android.media.tv.tuner.filter.AlpFilterConfiguration.Builder setPacketType(int);
-    method @NonNull public android.media.tv.tuner.filter.AlpFilterConfiguration.Builder setSettings(@Nullable android.media.tv.tuner.filter.Settings);
-  }
-
-  public class AudioDescriptor {
-    method public byte getAdFade();
-    method public byte getAdGainCenter();
-    method public byte getAdGainFront();
-    method public byte getAdGainSurround();
-    method public byte getAdPan();
-    method public char getAdVersionTextTag();
-  }
-
-  public class AvSettings extends android.media.tv.tuner.filter.Settings {
-    method @NonNull public static android.media.tv.tuner.filter.AvSettings.Builder builder(int, boolean);
-    method public boolean isPassthrough();
-  }
-
-  public static class AvSettings.Builder {
-    method @NonNull public android.media.tv.tuner.filter.AvSettings build();
-    method @NonNull public android.media.tv.tuner.filter.AvSettings.Builder setPassthrough(boolean);
-  }
-
-  public class DownloadEvent extends android.media.tv.tuner.filter.FilterEvent {
-    method public int getDataLength();
-    method public int getItemFragmentIndex();
-    method public int getItemId();
-    method public int getLastItemFragmentIndex();
-    method public int getMpuSequenceNumber();
-  }
-
-  public class DownloadSettings extends android.media.tv.tuner.filter.Settings {
-    method @NonNull public static android.media.tv.tuner.filter.DownloadSettings.Builder builder(int);
-    method public int getDownloadId();
-  }
-
-  public static class DownloadSettings.Builder {
-    method @NonNull public android.media.tv.tuner.filter.DownloadSettings build();
-    method @NonNull public android.media.tv.tuner.filter.DownloadSettings.Builder setDownloadId(int);
-  }
-
-  public class Filter implements java.lang.AutoCloseable {
-    method public void close();
-    method public int configure(@NonNull android.media.tv.tuner.filter.FilterConfiguration);
-    method public int flush();
-    method public int getId();
-    method public int read(@NonNull byte[], long, long);
-    method public int setDataSource(@Nullable android.media.tv.tuner.filter.Filter);
-    method public int start();
-    method public int stop();
-    field public static final int STATUS_DATA_READY = 1; // 0x1
-    field public static final int STATUS_HIGH_WATER = 4; // 0x4
-    field public static final int STATUS_LOW_WATER = 2; // 0x2
-    field public static final int STATUS_OVERFLOW = 8; // 0x8
-    field public static final int SUBTYPE_AUDIO = 3; // 0x3
-    field public static final int SUBTYPE_DOWNLOAD = 5; // 0x5
-    field public static final int SUBTYPE_IP = 13; // 0xd
-    field public static final int SUBTYPE_IP_PAYLOAD = 12; // 0xc
-    field public static final int SUBTYPE_MMTP = 10; // 0xa
-    field public static final int SUBTYPE_NTP = 11; // 0xb
-    field public static final int SUBTYPE_PAYLOAD_THROUGH = 14; // 0xe
-    field public static final int SUBTYPE_PCR = 8; // 0x8
-    field public static final int SUBTYPE_PES = 2; // 0x2
-    field public static final int SUBTYPE_PTP = 16; // 0x10
-    field public static final int SUBTYPE_RECORD = 6; // 0x6
-    field public static final int SUBTYPE_SECTION = 1; // 0x1
-    field public static final int SUBTYPE_TEMI = 9; // 0x9
-    field public static final int SUBTYPE_TLV = 15; // 0xf
-    field public static final int SUBTYPE_TS = 7; // 0x7
-    field public static final int SUBTYPE_UNDEFINED = 0; // 0x0
-    field public static final int SUBTYPE_VIDEO = 4; // 0x4
-    field public static final int TYPE_ALP = 16; // 0x10
-    field public static final int TYPE_IP = 4; // 0x4
-    field public static final int TYPE_MMTP = 2; // 0x2
-    field public static final int TYPE_TLV = 8; // 0x8
-    field public static final int TYPE_TS = 1; // 0x1
-    field public static final int TYPE_UNDEFINED = 0; // 0x0
-  }
-
-  public interface FilterCallback {
-    method public void onFilterEvent(@NonNull android.media.tv.tuner.filter.Filter, @NonNull android.media.tv.tuner.filter.FilterEvent[]);
-    method public void onFilterStatusChanged(@NonNull android.media.tv.tuner.filter.Filter, int);
-  }
-
-  public abstract class FilterConfiguration {
-    method @Nullable public android.media.tv.tuner.filter.Settings getSettings();
-    method public abstract int getType();
-  }
-
-  public abstract class FilterEvent {
-    ctor public FilterEvent();
-  }
-
-  public final class IpFilterConfiguration extends android.media.tv.tuner.filter.FilterConfiguration {
-    method @NonNull public static android.media.tv.tuner.filter.IpFilterConfiguration.Builder builder();
-    method @NonNull @Size(min=4, max=16) public byte[] getDstIpAddress();
-    method public int getDstPort();
-    method @NonNull @Size(min=4, max=16) public byte[] getSrcIpAddress();
-    method public int getSrcPort();
-    method public int getType();
-    method public boolean isPassthrough();
-  }
-
-  public static final class IpFilterConfiguration.Builder {
-    method @NonNull public android.media.tv.tuner.filter.IpFilterConfiguration build();
-    method @NonNull public android.media.tv.tuner.filter.IpFilterConfiguration.Builder setDstIpAddress(@NonNull byte[]);
-    method @NonNull public android.media.tv.tuner.filter.IpFilterConfiguration.Builder setDstPort(int);
-    method @NonNull public android.media.tv.tuner.filter.IpFilterConfiguration.Builder setPassthrough(boolean);
-    method @NonNull public android.media.tv.tuner.filter.IpFilterConfiguration.Builder setSettings(@Nullable android.media.tv.tuner.filter.Settings);
-    method @NonNull public android.media.tv.tuner.filter.IpFilterConfiguration.Builder setSrcIpAddress(@NonNull byte[]);
-    method @NonNull public android.media.tv.tuner.filter.IpFilterConfiguration.Builder setSrcPort(int);
-  }
-
-  public class IpPayloadEvent extends android.media.tv.tuner.filter.FilterEvent {
-    method public int getDataLength();
-  }
-
-  public class MediaEvent extends android.media.tv.tuner.filter.FilterEvent {
-    method public long getAudioHandle();
-    method public long getAvDataId();
-    method public long getDataLength();
-    method @Nullable public android.media.tv.tuner.filter.AudioDescriptor getExtraMetaData();
-    method @Nullable public android.media.MediaCodec.LinearBlock getLinearBlock();
-    method public int getMpuSequenceNumber();
-    method public long getOffset();
-    method public long getPts();
-    method public int getStreamId();
-    method public boolean isPrivateData();
-    method public boolean isPtsPresent();
-    method public boolean isSecureMemory();
-  }
-
-  public final class MmtpFilterConfiguration extends android.media.tv.tuner.filter.FilterConfiguration {
-    method @NonNull public static android.media.tv.tuner.filter.MmtpFilterConfiguration.Builder builder();
-    method public int getMmtpPacketId();
-    method public int getType();
-  }
-
-  public static final class MmtpFilterConfiguration.Builder {
-    method @NonNull public android.media.tv.tuner.filter.MmtpFilterConfiguration build();
-    method @NonNull public android.media.tv.tuner.filter.MmtpFilterConfiguration.Builder setMmtpPacketId(int);
-    method @NonNull public android.media.tv.tuner.filter.MmtpFilterConfiguration.Builder setSettings(@Nullable android.media.tv.tuner.filter.Settings);
-  }
-
-  public class MmtpRecordEvent extends android.media.tv.tuner.filter.FilterEvent {
-    method public long getDataLength();
-    method public int getScHevcIndexMask();
-  }
-
-  public class PesEvent extends android.media.tv.tuner.filter.FilterEvent {
-    method public int getDataLength();
-    method public int getMpuSequenceNumber();
-    method public int getStreamId();
-  }
-
-  public class PesSettings extends android.media.tv.tuner.filter.Settings {
-    method @NonNull public static android.media.tv.tuner.filter.PesSettings.Builder builder(int);
-    method public int getStreamId();
-    method public boolean isRaw();
-  }
-
-  public static class PesSettings.Builder {
-    method @NonNull public android.media.tv.tuner.filter.PesSettings build();
-    method @NonNull public android.media.tv.tuner.filter.PesSettings.Builder setRaw(boolean);
-    method @NonNull public android.media.tv.tuner.filter.PesSettings.Builder setStreamId(int);
-  }
-
-  public class RecordSettings extends android.media.tv.tuner.filter.Settings {
-    method @NonNull public static android.media.tv.tuner.filter.RecordSettings.Builder builder(int);
-    method public int getScIndexMask();
-    method public int getScIndexType();
-    method public int getTsIndexMask();
-    field public static final int INDEX_TYPE_NONE = 0; // 0x0
-    field public static final int INDEX_TYPE_SC = 1; // 0x1
-    field public static final int INDEX_TYPE_SC_HEVC = 2; // 0x2
-    field public static final int SC_HEVC_INDEX_AUD = 2; // 0x2
-    field public static final int SC_HEVC_INDEX_SLICE_BLA_N_LP = 16; // 0x10
-    field public static final int SC_HEVC_INDEX_SLICE_BLA_W_RADL = 8; // 0x8
-    field public static final int SC_HEVC_INDEX_SLICE_CE_BLA_W_LP = 4; // 0x4
-    field public static final int SC_HEVC_INDEX_SLICE_IDR_N_LP = 64; // 0x40
-    field public static final int SC_HEVC_INDEX_SLICE_IDR_W_RADL = 32; // 0x20
-    field public static final int SC_HEVC_INDEX_SLICE_TRAIL_CRA = 128; // 0x80
-    field public static final int SC_HEVC_INDEX_SPS = 1; // 0x1
-    field public static final int SC_INDEX_B_FRAME = 4; // 0x4
-    field public static final int SC_INDEX_I_FRAME = 1; // 0x1
-    field public static final int SC_INDEX_P_FRAME = 2; // 0x2
-    field public static final int SC_INDEX_SEQUENCE = 8; // 0x8
-    field public static final int TS_INDEX_ADAPTATION_EXTENSION_FLAG = 4096; // 0x1000
-    field public static final int TS_INDEX_CHANGE_TO_EVEN_SCRAMBLED = 8; // 0x8
-    field public static final int TS_INDEX_CHANGE_TO_NOT_SCRAMBLED = 4; // 0x4
-    field public static final int TS_INDEX_CHANGE_TO_ODD_SCRAMBLED = 16; // 0x10
-    field public static final int TS_INDEX_DISCONTINUITY_INDICATOR = 32; // 0x20
-    field public static final int TS_INDEX_FIRST_PACKET = 1; // 0x1
-    field public static final int TS_INDEX_OPCR_FLAG = 512; // 0x200
-    field public static final int TS_INDEX_PAYLOAD_UNIT_START_INDICATOR = 2; // 0x2
-    field public static final int TS_INDEX_PCR_FLAG = 256; // 0x100
-    field public static final int TS_INDEX_PRIORITY_INDICATOR = 128; // 0x80
-    field public static final int TS_INDEX_PRIVATE_DATA = 2048; // 0x800
-    field public static final int TS_INDEX_RANDOM_ACCESS_INDICATOR = 64; // 0x40
-    field public static final int TS_INDEX_SPLICING_POINT_FLAG = 1024; // 0x400
-  }
-
-  public static class RecordSettings.Builder {
-    method @NonNull public android.media.tv.tuner.filter.RecordSettings build();
-    method @NonNull public android.media.tv.tuner.filter.RecordSettings.Builder setScIndexMask(int);
-    method @NonNull public android.media.tv.tuner.filter.RecordSettings.Builder setScIndexType(int);
-    method @NonNull public android.media.tv.tuner.filter.RecordSettings.Builder setTsIndexMask(int);
-  }
-
-  public class SectionEvent extends android.media.tv.tuner.filter.FilterEvent {
-    method public int getDataLength();
-    method public int getSectionNumber();
-    method public int getTableId();
-    method public int getVersion();
-  }
-
-  public abstract class SectionSettings extends android.media.tv.tuner.filter.Settings {
-    method public boolean isCrcEnabled();
-    method public boolean isRaw();
-    method public boolean isRepeat();
-  }
-
-  public abstract static class SectionSettings.Builder<T extends android.media.tv.tuner.filter.SectionSettings.Builder<T>> {
-    method @NonNull public T setCrcEnabled(boolean);
-    method @NonNull public T setRaw(boolean);
-    method @NonNull public T setRepeat(boolean);
-  }
-
-  public class SectionSettingsWithSectionBits extends android.media.tv.tuner.filter.SectionSettings {
-    method @NonNull public static android.media.tv.tuner.filter.SectionSettingsWithSectionBits.Builder builder(int);
-    method @NonNull public byte[] getFilterBytes();
-    method @NonNull public byte[] getMask();
-    method @NonNull public byte[] getMode();
-  }
-
-  public static class SectionSettingsWithSectionBits.Builder extends android.media.tv.tuner.filter.SectionSettings.Builder<android.media.tv.tuner.filter.SectionSettingsWithSectionBits.Builder> {
-    method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithSectionBits build();
-    method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithSectionBits.Builder setFilter(@NonNull byte[]);
-    method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithSectionBits.Builder setMask(@NonNull byte[]);
-    method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithSectionBits.Builder setMode(@NonNull byte[]);
-  }
-
-  public class SectionSettingsWithTableInfo extends android.media.tv.tuner.filter.SectionSettings {
-    method @NonNull public static android.media.tv.tuner.filter.SectionSettingsWithTableInfo.Builder builder(int);
-    method public int getTableId();
-    method public int getVersion();
-  }
-
-  public static class SectionSettingsWithTableInfo.Builder extends android.media.tv.tuner.filter.SectionSettings.Builder<android.media.tv.tuner.filter.SectionSettingsWithTableInfo.Builder> {
-    method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithTableInfo build();
-    method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithTableInfo.Builder setTableId(int);
-    method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithTableInfo.Builder setVersion(int);
-  }
-
-  public abstract class Settings {
-    method public int getType();
-  }
-
-  public class TemiEvent extends android.media.tv.tuner.filter.FilterEvent {
-    method @NonNull public byte[] getDescriptorData();
-    method public byte getDescriptorTag();
-    method public long getPts();
-  }
-
-  public class TimeFilter implements java.lang.AutoCloseable {
-    method public int clearTimestamp();
-    method public void close();
-    method public long getSourceTime();
-    method public long getTimeStamp();
-    method public int setCurrentTimestamp(long);
-  }
-
-  public final class TlvFilterConfiguration extends android.media.tv.tuner.filter.FilterConfiguration {
-    method @NonNull public static android.media.tv.tuner.filter.TlvFilterConfiguration.Builder builder();
-    method public int getPacketType();
-    method public int getType();
-    method public boolean isCompressedIpPacket();
-    method public boolean isPassthrough();
-    field public static final int PACKET_TYPE_COMPRESSED = 3; // 0x3
-    field public static final int PACKET_TYPE_IPV4 = 1; // 0x1
-    field public static final int PACKET_TYPE_IPV6 = 2; // 0x2
-    field public static final int PACKET_TYPE_NULL = 255; // 0xff
-    field public static final int PACKET_TYPE_SIGNALING = 254; // 0xfe
-  }
-
-  public static final class TlvFilterConfiguration.Builder {
-    method @NonNull public android.media.tv.tuner.filter.TlvFilterConfiguration build();
-    method @NonNull public android.media.tv.tuner.filter.TlvFilterConfiguration.Builder setCompressedIpPacket(boolean);
-    method @NonNull public android.media.tv.tuner.filter.TlvFilterConfiguration.Builder setPacketType(int);
-    method @NonNull public android.media.tv.tuner.filter.TlvFilterConfiguration.Builder setPassthrough(boolean);
-    method @NonNull public android.media.tv.tuner.filter.TlvFilterConfiguration.Builder setSettings(@Nullable android.media.tv.tuner.filter.Settings);
-  }
-
-  public final class TsFilterConfiguration extends android.media.tv.tuner.filter.FilterConfiguration {
-    method @NonNull public static android.media.tv.tuner.filter.TsFilterConfiguration.Builder builder();
-    method public int getTpid();
-    method public int getType();
-  }
-
-  public static final class TsFilterConfiguration.Builder {
-    method @NonNull public android.media.tv.tuner.filter.TsFilterConfiguration build();
-    method @NonNull public android.media.tv.tuner.filter.TsFilterConfiguration.Builder setSettings(@Nullable android.media.tv.tuner.filter.Settings);
-    method @NonNull public android.media.tv.tuner.filter.TsFilterConfiguration.Builder setTpid(int);
-  }
-
-  public class TsRecordEvent extends android.media.tv.tuner.filter.FilterEvent {
-    method public long getDataLength();
-    method public int getPacketId();
-    method public int getScIndexMask();
-    method public int getTsIndexMask();
-  }
-
-}
-
-package android.media.tv.tuner.frontend {
-
-  public class AnalogFrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
-    method public int getSifStandardCapability();
-    method public int getSignalTypeCapability();
-  }
-
-  public class AnalogFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
-    method @NonNull public static android.media.tv.tuner.frontend.AnalogFrontendSettings.Builder builder();
-    method public int getSifStandard();
-    method public int getSignalType();
-    method public int getType();
-    field public static final int SIF_AUTO = 1; // 0x1
-    field public static final int SIF_BG = 2; // 0x2
-    field public static final int SIF_BG_A2 = 4; // 0x4
-    field public static final int SIF_BG_NICAM = 8; // 0x8
-    field public static final int SIF_DK = 32; // 0x20
-    field public static final int SIF_DK1_A2 = 64; // 0x40
-    field public static final int SIF_DK2_A2 = 128; // 0x80
-    field public static final int SIF_DK3_A2 = 256; // 0x100
-    field public static final int SIF_DK_NICAM = 512; // 0x200
-    field public static final int SIF_I = 16; // 0x10
-    field public static final int SIF_I_NICAM = 32768; // 0x8000
-    field public static final int SIF_L = 1024; // 0x400
-    field public static final int SIF_L_NICAM = 65536; // 0x10000
-    field public static final int SIF_L_PRIME = 131072; // 0x20000
-    field public static final int SIF_M = 2048; // 0x800
-    field public static final int SIF_M_A2 = 8192; // 0x2000
-    field public static final int SIF_M_BTSC = 4096; // 0x1000
-    field public static final int SIF_M_EIAJ = 16384; // 0x4000
-    field public static final int SIF_UNDEFINED = 0; // 0x0
-    field public static final int SIGNAL_TYPE_AUTO = 1; // 0x1
-    field public static final int SIGNAL_TYPE_NTSC = 32; // 0x20
-    field public static final int SIGNAL_TYPE_NTSC_443 = 64; // 0x40
-    field public static final int SIGNAL_TYPE_PAL = 2; // 0x2
-    field public static final int SIGNAL_TYPE_PAL_60 = 16; // 0x10
-    field public static final int SIGNAL_TYPE_PAL_M = 4; // 0x4
-    field public static final int SIGNAL_TYPE_PAL_N = 8; // 0x8
-    field public static final int SIGNAL_TYPE_SECAM = 128; // 0x80
-    field public static final int SIGNAL_TYPE_UNDEFINED = 0; // 0x0
-  }
-
-  public static class AnalogFrontendSettings.Builder {
-    method @NonNull public android.media.tv.tuner.frontend.AnalogFrontendSettings build();
-    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.AnalogFrontendSettings.Builder setFrequency(int);
-    method @NonNull public android.media.tv.tuner.frontend.AnalogFrontendSettings.Builder setSifStandard(int);
-    method @NonNull public android.media.tv.tuner.frontend.AnalogFrontendSettings.Builder setSignalType(int);
-  }
-
-  public class Atsc3FrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
-    method public int getBandwidthCapability();
-    method public int getDemodOutputFormatCapability();
-    method public int getFecCapability();
-    method public int getModulationCapability();
-    method public int getPlpCodeRateCapability();
-    method public int getTimeInterleaveModeCapability();
-  }
-
-  public class Atsc3FrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
-    method @NonNull public static android.media.tv.tuner.frontend.Atsc3FrontendSettings.Builder builder();
-    method public int getBandwidth();
-    method public int getDemodOutputFormat();
-    method @NonNull public android.media.tv.tuner.frontend.Atsc3PlpSettings[] getPlpSettings();
-    method public int getType();
-    field public static final int BANDWIDTH_AUTO = 1; // 0x1
-    field public static final int BANDWIDTH_BANDWIDTH_6MHZ = 2; // 0x2
-    field public static final int BANDWIDTH_BANDWIDTH_7MHZ = 4; // 0x4
-    field public static final int BANDWIDTH_BANDWIDTH_8MHZ = 8; // 0x8
-    field public static final int BANDWIDTH_UNDEFINED = 0; // 0x0
-    field public static final int CODERATE_10_15 = 512; // 0x200
-    field public static final int CODERATE_11_15 = 1024; // 0x400
-    field public static final int CODERATE_12_15 = 2048; // 0x800
-    field public static final int CODERATE_13_15 = 4096; // 0x1000
-    field public static final int CODERATE_2_15 = 2; // 0x2
-    field public static final int CODERATE_3_15 = 4; // 0x4
-    field public static final int CODERATE_4_15 = 8; // 0x8
-    field public static final int CODERATE_5_15 = 16; // 0x10
-    field public static final int CODERATE_6_15 = 32; // 0x20
-    field public static final int CODERATE_7_15 = 64; // 0x40
-    field public static final int CODERATE_8_15 = 128; // 0x80
-    field public static final int CODERATE_9_15 = 256; // 0x100
-    field public static final int CODERATE_AUTO = 1; // 0x1
-    field public static final int CODERATE_UNDEFINED = 0; // 0x0
-    field public static final int DEMOD_OUTPUT_FORMAT_ATSC3_LINKLAYER_PACKET = 1; // 0x1
-    field public static final int DEMOD_OUTPUT_FORMAT_BASEBAND_PACKET = 2; // 0x2
-    field public static final int DEMOD_OUTPUT_FORMAT_UNDEFINED = 0; // 0x0
-    field public static final int FEC_AUTO = 1; // 0x1
-    field public static final int FEC_BCH_LDPC_16K = 2; // 0x2
-    field public static final int FEC_BCH_LDPC_64K = 4; // 0x4
-    field public static final int FEC_CRC_LDPC_16K = 8; // 0x8
-    field public static final int FEC_CRC_LDPC_64K = 16; // 0x10
-    field public static final int FEC_LDPC_16K = 32; // 0x20
-    field public static final int FEC_LDPC_64K = 64; // 0x40
-    field public static final int FEC_UNDEFINED = 0; // 0x0
-    field public static final int MODULATION_AUTO = 1; // 0x1
-    field public static final int MODULATION_MOD_1024QAM = 32; // 0x20
-    field public static final int MODULATION_MOD_16QAM = 4; // 0x4
-    field public static final int MODULATION_MOD_256QAM = 16; // 0x10
-    field public static final int MODULATION_MOD_4096QAM = 64; // 0x40
-    field public static final int MODULATION_MOD_64QAM = 8; // 0x8
-    field public static final int MODULATION_MOD_QPSK = 2; // 0x2
-    field public static final int MODULATION_UNDEFINED = 0; // 0x0
-    field public static final int TIME_INTERLEAVE_MODE_AUTO = 1; // 0x1
-    field public static final int TIME_INTERLEAVE_MODE_CTI = 2; // 0x2
-    field public static final int TIME_INTERLEAVE_MODE_HTI = 4; // 0x4
-    field public static final int TIME_INTERLEAVE_MODE_UNDEFINED = 0; // 0x0
-  }
-
-  public static class Atsc3FrontendSettings.Builder {
-    method @NonNull public android.media.tv.tuner.frontend.Atsc3FrontendSettings build();
-    method @NonNull public android.media.tv.tuner.frontend.Atsc3FrontendSettings.Builder setBandwidth(int);
-    method @NonNull public android.media.tv.tuner.frontend.Atsc3FrontendSettings.Builder setDemodOutputFormat(int);
-    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.Atsc3FrontendSettings.Builder setFrequency(int);
-    method @NonNull public android.media.tv.tuner.frontend.Atsc3FrontendSettings.Builder setPlpSettings(@NonNull android.media.tv.tuner.frontend.Atsc3PlpSettings[]);
-  }
-
-  public class Atsc3PlpInfo {
-    method public boolean getLlsFlag();
-    method public int getPlpId();
-  }
-
-  public class Atsc3PlpSettings {
-    method @NonNull public static android.media.tv.tuner.frontend.Atsc3PlpSettings.Builder builder();
-    method public int getCodeRate();
-    method public int getFec();
-    method public int getInterleaveMode();
-    method public int getModulation();
-    method public int getPlpId();
-  }
-
-  public static class Atsc3PlpSettings.Builder {
-    method @NonNull public android.media.tv.tuner.frontend.Atsc3PlpSettings build();
-    method @NonNull public android.media.tv.tuner.frontend.Atsc3PlpSettings.Builder setCodeRate(int);
-    method @NonNull public android.media.tv.tuner.frontend.Atsc3PlpSettings.Builder setFec(int);
-    method @NonNull public android.media.tv.tuner.frontend.Atsc3PlpSettings.Builder setInterleaveMode(int);
-    method @NonNull public android.media.tv.tuner.frontend.Atsc3PlpSettings.Builder setModulation(int);
-    method @NonNull public android.media.tv.tuner.frontend.Atsc3PlpSettings.Builder setPlpId(int);
-  }
-
-  public class AtscFrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
-    method public int getModulationCapability();
-  }
-
-  public class AtscFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
-    method @NonNull public static android.media.tv.tuner.frontend.AtscFrontendSettings.Builder builder();
-    method public int getModulation();
-    method public int getType();
-    field public static final int MODULATION_AUTO = 1; // 0x1
-    field public static final int MODULATION_MOD_16VSB = 8; // 0x8
-    field public static final int MODULATION_MOD_8VSB = 4; // 0x4
-    field public static final int MODULATION_UNDEFINED = 0; // 0x0
-  }
-
-  public static class AtscFrontendSettings.Builder {
-    method @NonNull public android.media.tv.tuner.frontend.AtscFrontendSettings build();
-    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.AtscFrontendSettings.Builder setFrequency(int);
-    method @NonNull public android.media.tv.tuner.frontend.AtscFrontendSettings.Builder setModulation(int);
-  }
-
-  public class DvbcFrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
-    method public int getAnnexCapability();
-    method public int getFecCapability();
-    method public int getModulationCapability();
-  }
-
-  public class DvbcFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
-    method @NonNull public static android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder builder();
-    method public int getAnnex();
-    method public long getInnerFec();
-    method public int getModulation();
-    method public int getOuterFec();
-    method public int getSpectralInversion();
-    method public int getSymbolRate();
-    method public int getType();
-    field public static final int ANNEX_A = 1; // 0x1
-    field public static final int ANNEX_B = 2; // 0x2
-    field public static final int ANNEX_C = 4; // 0x4
-    field public static final int ANNEX_UNDEFINED = 0; // 0x0
-    field public static final int MODULATION_AUTO = 1; // 0x1
-    field public static final int MODULATION_MOD_128QAM = 16; // 0x10
-    field public static final int MODULATION_MOD_16QAM = 2; // 0x2
-    field public static final int MODULATION_MOD_256QAM = 32; // 0x20
-    field public static final int MODULATION_MOD_32QAM = 4; // 0x4
-    field public static final int MODULATION_MOD_64QAM = 8; // 0x8
-    field public static final int MODULATION_UNDEFINED = 0; // 0x0
-    field public static final int OUTER_FEC_OUTER_FEC_NONE = 1; // 0x1
-    field public static final int OUTER_FEC_OUTER_FEC_RS = 2; // 0x2
-    field public static final int OUTER_FEC_UNDEFINED = 0; // 0x0
-    field public static final int SPECTRAL_INVERSION_INVERTED = 2; // 0x2
-    field public static final int SPECTRAL_INVERSION_NORMAL = 1; // 0x1
-    field public static final int SPECTRAL_INVERSION_UNDEFINED = 0; // 0x0
-  }
-
-  public static class DvbcFrontendSettings.Builder {
-    method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings build();
-    method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setAnnex(int);
-    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setFrequency(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setInnerFec(long);
-    method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setModulation(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setOuterFec(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setSpectralInversion(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setSymbolRate(int);
-  }
-
-  public class DvbsCodeRate {
-    method @NonNull public static android.media.tv.tuner.frontend.DvbsCodeRate.Builder builder();
-    method public int getBitsPer1000Symbol();
-    method public long getInnerFec();
-    method public boolean isLinear();
-    method public boolean isShortFrameEnabled();
-  }
-
-  public static class DvbsCodeRate.Builder {
-    method @NonNull public android.media.tv.tuner.frontend.DvbsCodeRate build();
-    method @NonNull public android.media.tv.tuner.frontend.DvbsCodeRate.Builder setBitsPer1000Symbol(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbsCodeRate.Builder setInnerFec(long);
-    method @NonNull public android.media.tv.tuner.frontend.DvbsCodeRate.Builder setLinear(boolean);
-    method @NonNull public android.media.tv.tuner.frontend.DvbsCodeRate.Builder setShortFrameEnabled(boolean);
-  }
-
-  public class DvbsFrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
-    method public long getInnerFecCapability();
-    method public int getModulationCapability();
-    method public int getStandardCapability();
-  }
-
-  public class DvbsFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
-    method @NonNull public static android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder builder();
-    method @Nullable public android.media.tv.tuner.frontend.DvbsCodeRate getCodeRate();
-    method public int getInputStreamId();
-    method public int getModulation();
-    method public int getPilot();
-    method public int getRolloff();
-    method public int getStandard();
-    method public int getSymbolRate();
-    method public int getType();
-    method public int getVcmMode();
-    field public static final int MODULATION_AUTO = 1; // 0x1
-    field public static final int MODULATION_MOD_128APSK = 2048; // 0x800
-    field public static final int MODULATION_MOD_16APSK = 256; // 0x100
-    field public static final int MODULATION_MOD_16PSK = 16; // 0x10
-    field public static final int MODULATION_MOD_16QAM = 8; // 0x8
-    field public static final int MODULATION_MOD_256APSK = 4096; // 0x1000
-    field public static final int MODULATION_MOD_32APSK = 512; // 0x200
-    field public static final int MODULATION_MOD_32PSK = 32; // 0x20
-    field public static final int MODULATION_MOD_64APSK = 1024; // 0x400
-    field public static final int MODULATION_MOD_8APSK = 128; // 0x80
-    field public static final int MODULATION_MOD_8PSK = 4; // 0x4
-    field public static final int MODULATION_MOD_ACM = 64; // 0x40
-    field public static final int MODULATION_MOD_QPSK = 2; // 0x2
-    field public static final int MODULATION_MOD_RESERVED = 8192; // 0x2000
-    field public static final int MODULATION_UNDEFINED = 0; // 0x0
-    field public static final int PILOT_AUTO = 3; // 0x3
-    field public static final int PILOT_OFF = 2; // 0x2
-    field public static final int PILOT_ON = 1; // 0x1
-    field public static final int PILOT_UNDEFINED = 0; // 0x0
-    field public static final int ROLLOFF_0_10 = 5; // 0x5
-    field public static final int ROLLOFF_0_15 = 4; // 0x4
-    field public static final int ROLLOFF_0_20 = 3; // 0x3
-    field public static final int ROLLOFF_0_25 = 2; // 0x2
-    field public static final int ROLLOFF_0_35 = 1; // 0x1
-    field public static final int ROLLOFF_0_5 = 6; // 0x6
-    field public static final int ROLLOFF_UNDEFINED = 0; // 0x0
-    field public static final int STANDARD_AUTO = 1; // 0x1
-    field public static final int STANDARD_S = 2; // 0x2
-    field public static final int STANDARD_S2 = 4; // 0x4
-    field public static final int STANDARD_S2X = 8; // 0x8
-    field public static final int VCM_MODE_AUTO = 1; // 0x1
-    field public static final int VCM_MODE_MANUAL = 2; // 0x2
-    field public static final int VCM_MODE_UNDEFINED = 0; // 0x0
-  }
-
-  public static class DvbsFrontendSettings.Builder {
-    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings build();
-    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setCodeRate(@Nullable android.media.tv.tuner.frontend.DvbsCodeRate);
-    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setFrequency(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setInputStreamId(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setModulation(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setPilot(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setRolloff(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setStandard(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setSymbolRate(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setVcmMode(int);
-  }
-
-  public class DvbtFrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
-    method public int getBandwidthCapability();
-    method public int getCodeRateCapability();
-    method public int getConstellationCapability();
-    method public int getGuardIntervalCapability();
-    method public int getHierarchyCapability();
-    method public int getTransmissionModeCapability();
-    method public boolean isMisoSupported();
-    method public boolean isT2Supported();
-  }
-
-  public class DvbtFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
-    method @NonNull public static android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder builder();
-    method public int getBandwidth();
-    method public int getConstellation();
-    method public int getGuardInterval();
-    method public int getHierarchy();
-    method public int getHighPriorityCodeRate();
-    method public int getLowPriorityCodeRate();
-    method public int getPlpGroupId();
-    method public int getPlpId();
-    method public int getPlpMode();
-    method public int getStandard();
-    method public int getTransmissionMode();
-    method public int getType();
-    method public boolean isHighPriority();
-    method public boolean isMiso();
-    field public static final int BANDWIDTH_10MHZ = 64; // 0x40
-    field public static final int BANDWIDTH_1_7MHZ = 32; // 0x20
-    field public static final int BANDWIDTH_5MHZ = 16; // 0x10
-    field public static final int BANDWIDTH_6MHZ = 8; // 0x8
-    field public static final int BANDWIDTH_7MHZ = 4; // 0x4
-    field public static final int BANDWIDTH_8MHZ = 2; // 0x2
-    field public static final int BANDWIDTH_AUTO = 1; // 0x1
-    field public static final int BANDWIDTH_UNDEFINED = 0; // 0x0
-    field public static final int CODERATE_1_2 = 2; // 0x2
-    field public static final int CODERATE_2_3 = 4; // 0x4
-    field public static final int CODERATE_3_4 = 8; // 0x8
-    field public static final int CODERATE_3_5 = 64; // 0x40
-    field public static final int CODERATE_4_5 = 128; // 0x80
-    field public static final int CODERATE_5_6 = 16; // 0x10
-    field public static final int CODERATE_6_7 = 256; // 0x100
-    field public static final int CODERATE_7_8 = 32; // 0x20
-    field public static final int CODERATE_8_9 = 512; // 0x200
-    field public static final int CODERATE_AUTO = 1; // 0x1
-    field public static final int CODERATE_UNDEFINED = 0; // 0x0
-    field public static final int CONSTELLATION_16QAM = 4; // 0x4
-    field public static final int CONSTELLATION_256QAM = 16; // 0x10
-    field public static final int CONSTELLATION_64QAM = 8; // 0x8
-    field public static final int CONSTELLATION_AUTO = 1; // 0x1
-    field public static final int CONSTELLATION_QPSK = 2; // 0x2
-    field public static final int CONSTELLATION_UNDEFINED = 0; // 0x0
-    field public static final int GUARD_INTERVAL_19_128 = 64; // 0x40
-    field public static final int GUARD_INTERVAL_19_256 = 128; // 0x80
-    field public static final int GUARD_INTERVAL_1_128 = 32; // 0x20
-    field public static final int GUARD_INTERVAL_1_16 = 4; // 0x4
-    field public static final int GUARD_INTERVAL_1_32 = 2; // 0x2
-    field public static final int GUARD_INTERVAL_1_4 = 16; // 0x10
-    field public static final int GUARD_INTERVAL_1_8 = 8; // 0x8
-    field public static final int GUARD_INTERVAL_AUTO = 1; // 0x1
-    field public static final int GUARD_INTERVAL_UNDEFINED = 0; // 0x0
-    field public static final int HIERARCHY_1_INDEPTH = 64; // 0x40
-    field public static final int HIERARCHY_1_NATIVE = 4; // 0x4
-    field public static final int HIERARCHY_2_INDEPTH = 128; // 0x80
-    field public static final int HIERARCHY_2_NATIVE = 8; // 0x8
-    field public static final int HIERARCHY_4_INDEPTH = 256; // 0x100
-    field public static final int HIERARCHY_4_NATIVE = 16; // 0x10
-    field public static final int HIERARCHY_AUTO = 1; // 0x1
-    field public static final int HIERARCHY_NON_INDEPTH = 32; // 0x20
-    field public static final int HIERARCHY_NON_NATIVE = 2; // 0x2
-    field public static final int HIERARCHY_UNDEFINED = 0; // 0x0
-    field public static final int PLP_MODE_AUTO = 1; // 0x1
-    field public static final int PLP_MODE_MANUAL = 2; // 0x2
-    field public static final int PLP_MODE_UNDEFINED = 0; // 0x0
-    field public static final int STANDARD_AUTO = 1; // 0x1
-    field public static final int STANDARD_T = 2; // 0x2
-    field public static final int STANDARD_T2 = 4; // 0x4
-    field public static final int TRANSMISSION_MODE_16K = 32; // 0x20
-    field public static final int TRANSMISSION_MODE_1K = 16; // 0x10
-    field public static final int TRANSMISSION_MODE_2K = 2; // 0x2
-    field public static final int TRANSMISSION_MODE_32K = 64; // 0x40
-    field public static final int TRANSMISSION_MODE_4K = 8; // 0x8
-    field public static final int TRANSMISSION_MODE_8K = 4; // 0x4
-    field public static final int TRANSMISSION_MODE_AUTO = 1; // 0x1
-    field public static final int TRANSMISSION_MODE_UNDEFINED = 0; // 0x0
-  }
-
-  public static class DvbtFrontendSettings.Builder {
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings build();
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setBandwidth(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setConstellation(int);
-    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setFrequency(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setGuardInterval(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setHierarchy(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setHighPriority(boolean);
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setHighPriorityCodeRate(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setLowPriorityCodeRate(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setMiso(boolean);
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setPlpGroupId(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setPlpId(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setPlpMode(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setStandard(int);
-    method @NonNull public android.media.tv.tuner.frontend.DvbtFrontendSettings.Builder setTransmissionMode(int);
-  }
-
-  public abstract class FrontendCapabilities {
-    ctor public FrontendCapabilities();
-  }
-
-  public class FrontendInfo {
-    method public int getAcquireRange();
-    method public int getExclusiveGroupId();
-    method @NonNull public android.util.Range<java.lang.Integer> getFrequencyRange();
-    method @NonNull public android.media.tv.tuner.frontend.FrontendCapabilities getFrontendCapabilities();
-    method public int getId();
-    method @NonNull public int[] getStatusCapabilities();
-    method @NonNull public android.util.Range<java.lang.Integer> getSymbolRateRange();
-    method public int getType();
-  }
-
-  public abstract class FrontendSettings {
-    method public int getFrequency();
-    method public abstract int getType();
-    field public static final long FEC_11_15 = 4194304L; // 0x400000L
-    field public static final long FEC_11_20 = 8388608L; // 0x800000L
-    field public static final long FEC_11_45 = 16777216L; // 0x1000000L
-    field public static final long FEC_13_18 = 33554432L; // 0x2000000L
-    field public static final long FEC_13_45 = 67108864L; // 0x4000000L
-    field public static final long FEC_14_45 = 134217728L; // 0x8000000L
-    field public static final long FEC_1_2 = 2L; // 0x2L
-    field public static final long FEC_1_3 = 4L; // 0x4L
-    field public static final long FEC_1_4 = 8L; // 0x8L
-    field public static final long FEC_1_5 = 16L; // 0x10L
-    field public static final long FEC_23_36 = 268435456L; // 0x10000000L
-    field public static final long FEC_25_36 = 536870912L; // 0x20000000L
-    field public static final long FEC_26_45 = 1073741824L; // 0x40000000L
-    field public static final long FEC_28_45 = -2147483648L; // 0xffffffff80000000L
-    field public static final long FEC_29_45 = 1L; // 0x1L
-    field public static final long FEC_2_3 = 32L; // 0x20L
-    field public static final long FEC_2_5 = 64L; // 0x40L
-    field public static final long FEC_2_9 = 128L; // 0x80L
-    field public static final long FEC_31_45 = 2L; // 0x2L
-    field public static final long FEC_32_45 = 4L; // 0x4L
-    field public static final long FEC_3_4 = 256L; // 0x100L
-    field public static final long FEC_3_5 = 512L; // 0x200L
-    field public static final long FEC_4_15 = 2048L; // 0x800L
-    field public static final long FEC_4_5 = 1024L; // 0x400L
-    field public static final long FEC_5_6 = 4096L; // 0x1000L
-    field public static final long FEC_5_9 = 8192L; // 0x2000L
-    field public static final long FEC_6_7 = 16384L; // 0x4000L
-    field public static final long FEC_77_90 = 8L; // 0x8L
-    field public static final long FEC_7_15 = 131072L; // 0x20000L
-    field public static final long FEC_7_8 = 32768L; // 0x8000L
-    field public static final long FEC_7_9 = 65536L; // 0x10000L
-    field public static final long FEC_8_15 = 524288L; // 0x80000L
-    field public static final long FEC_8_9 = 262144L; // 0x40000L
-    field public static final long FEC_9_10 = 1048576L; // 0x100000L
-    field public static final long FEC_9_20 = 2097152L; // 0x200000L
-    field public static final long FEC_AUTO = 1L; // 0x1L
-    field public static final long FEC_UNDEFINED = 0L; // 0x0L
-    field public static final int TYPE_ANALOG = 1; // 0x1
-    field public static final int TYPE_ATSC = 2; // 0x2
-    field public static final int TYPE_ATSC3 = 3; // 0x3
-    field public static final int TYPE_DVBC = 4; // 0x4
-    field public static final int TYPE_DVBS = 5; // 0x5
-    field public static final int TYPE_DVBT = 6; // 0x6
-    field public static final int TYPE_ISDBS = 7; // 0x7
-    field public static final int TYPE_ISDBS3 = 8; // 0x8
-    field public static final int TYPE_ISDBT = 9; // 0x9
-    field public static final int TYPE_UNDEFINED = 0; // 0x0
-  }
-
-  public class FrontendStatus {
-    method public int getAgc();
-    method @NonNull public android.media.tv.tuner.frontend.FrontendStatus.Atsc3PlpTuningInfo[] getAtsc3PlpTuningInfo();
-    method public int getBer();
-    method public int getFreqOffset();
-    method public int getHierarchy();
-    method public long getInnerFec();
-    method @NonNull public boolean[] getLayerErrors();
-    method public int getLnbVoltage();
-    method public int getMer();
-    method public int getModulation();
-    method public int getPer();
-    method public int getPerBer();
-    method public int getPlpId();
-    method public int getSignalQuality();
-    method public int getSignalStrength();
-    method public int getSnr();
-    method public int getSpectralInversion();
-    method public int getSymbolRate();
-    method public boolean isDemodLocked();
-    method public boolean isEwbs();
-    method public boolean isLnaOn();
-    method public boolean isRfLocked();
-    field public static final int FRONTEND_STATUS_TYPE_AGC = 14; // 0xe
-    field public static final int FRONTEND_STATUS_TYPE_ATSC3_PLP_INFO = 21; // 0x15
-    field public static final int FRONTEND_STATUS_TYPE_BER = 2; // 0x2
-    field public static final int FRONTEND_STATUS_TYPE_DEMOD_LOCK = 0; // 0x0
-    field public static final int FRONTEND_STATUS_TYPE_EWBS = 13; // 0xd
-    field public static final int FRONTEND_STATUS_TYPE_FEC = 8; // 0x8
-    field public static final int FRONTEND_STATUS_TYPE_FREQ_OFFSET = 18; // 0x12
-    field public static final int FRONTEND_STATUS_TYPE_HIERARCHY = 19; // 0x13
-    field public static final int FRONTEND_STATUS_TYPE_LAYER_ERROR = 16; // 0x10
-    field public static final int FRONTEND_STATUS_TYPE_LNA = 15; // 0xf
-    field public static final int FRONTEND_STATUS_TYPE_LNB_VOLTAGE = 11; // 0xb
-    field public static final int FRONTEND_STATUS_TYPE_MER = 17; // 0x11
-    field public static final int FRONTEND_STATUS_TYPE_MODULATION = 9; // 0x9
-    field public static final int FRONTEND_STATUS_TYPE_PER = 3; // 0x3
-    field public static final int FRONTEND_STATUS_TYPE_PLP_ID = 12; // 0xc
-    field public static final int FRONTEND_STATUS_TYPE_PRE_BER = 4; // 0x4
-    field public static final int FRONTEND_STATUS_TYPE_RF_LOCK = 20; // 0x14
-    field public static final int FRONTEND_STATUS_TYPE_SIGNAL_QUALITY = 5; // 0x5
-    field public static final int FRONTEND_STATUS_TYPE_SIGNAL_STRENGTH = 6; // 0x6
-    field public static final int FRONTEND_STATUS_TYPE_SNR = 1; // 0x1
-    field public static final int FRONTEND_STATUS_TYPE_SPECTRAL = 10; // 0xa
-    field public static final int FRONTEND_STATUS_TYPE_SYMBOL_RATE = 7; // 0x7
-  }
-
-  public static class FrontendStatus.Atsc3PlpTuningInfo {
-    method public int getPlpId();
-    method public int getUec();
-    method public boolean isLocked();
-  }
-
-  public class Isdbs3FrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
-    method public int getCodeRateCapability();
-    method public int getModulationCapability();
-  }
-
-  public class Isdbs3FrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
-    method @NonNull public static android.media.tv.tuner.frontend.Isdbs3FrontendSettings.Builder builder();
-    method public int getCodeRate();
-    method public int getModulation();
-    method public int getRolloff();
-    method public int getStreamId();
-    method public int getStreamIdType();
-    method public int getSymbolRate();
-    method public int getType();
-    field public static final int CODERATE_1_2 = 8; // 0x8
-    field public static final int CODERATE_1_3 = 2; // 0x2
-    field public static final int CODERATE_2_3 = 32; // 0x20
-    field public static final int CODERATE_2_5 = 4; // 0x4
-    field public static final int CODERATE_3_4 = 64; // 0x40
-    field public static final int CODERATE_3_5 = 16; // 0x10
-    field public static final int CODERATE_4_5 = 256; // 0x100
-    field public static final int CODERATE_5_6 = 512; // 0x200
-    field public static final int CODERATE_7_8 = 1024; // 0x400
-    field public static final int CODERATE_7_9 = 128; // 0x80
-    field public static final int CODERATE_9_10 = 2048; // 0x800
-    field public static final int CODERATE_AUTO = 1; // 0x1
-    field public static final int CODERATE_UNDEFINED = 0; // 0x0
-    field public static final int MODULATION_AUTO = 1; // 0x1
-    field public static final int MODULATION_MOD_16APSK = 16; // 0x10
-    field public static final int MODULATION_MOD_32APSK = 32; // 0x20
-    field public static final int MODULATION_MOD_8PSK = 8; // 0x8
-    field public static final int MODULATION_MOD_BPSK = 2; // 0x2
-    field public static final int MODULATION_MOD_QPSK = 4; // 0x4
-    field public static final int MODULATION_UNDEFINED = 0; // 0x0
-    field public static final int ROLLOFF_0_03 = 1; // 0x1
-    field public static final int ROLLOFF_UNDEFINED = 0; // 0x0
-  }
-
-  public static class Isdbs3FrontendSettings.Builder {
-    method @NonNull public android.media.tv.tuner.frontend.Isdbs3FrontendSettings build();
-    method @NonNull public android.media.tv.tuner.frontend.Isdbs3FrontendSettings.Builder setCodeRate(int);
-    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.Isdbs3FrontendSettings.Builder setFrequency(int);
-    method @NonNull public android.media.tv.tuner.frontend.Isdbs3FrontendSettings.Builder setModulation(int);
-    method @NonNull public android.media.tv.tuner.frontend.Isdbs3FrontendSettings.Builder setRolloff(int);
-    method @NonNull public android.media.tv.tuner.frontend.Isdbs3FrontendSettings.Builder setStreamId(int);
-    method @NonNull public android.media.tv.tuner.frontend.Isdbs3FrontendSettings.Builder setStreamIdType(int);
-    method @NonNull public android.media.tv.tuner.frontend.Isdbs3FrontendSettings.Builder setSymbolRate(int);
-  }
-
-  public class IsdbsFrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
-    method public int getCodeRateCapability();
-    method public int getModulationCapability();
-  }
-
-  public class IsdbsFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
-    method @NonNull public static android.media.tv.tuner.frontend.IsdbsFrontendSettings.Builder builder();
-    method public int getCodeRate();
-    method public int getModulation();
-    method public int getRolloff();
-    method public int getStreamId();
-    method public int getStreamIdType();
-    method public int getSymbolRate();
-    method public int getType();
-    field public static final int CODERATE_1_2 = 2; // 0x2
-    field public static final int CODERATE_2_3 = 4; // 0x4
-    field public static final int CODERATE_3_4 = 8; // 0x8
-    field public static final int CODERATE_5_6 = 16; // 0x10
-    field public static final int CODERATE_7_8 = 32; // 0x20
-    field public static final int CODERATE_AUTO = 1; // 0x1
-    field public static final int CODERATE_UNDEFINED = 0; // 0x0
-    field public static final int MODULATION_AUTO = 1; // 0x1
-    field public static final int MODULATION_MOD_BPSK = 2; // 0x2
-    field public static final int MODULATION_MOD_QPSK = 4; // 0x4
-    field public static final int MODULATION_MOD_TC8PSK = 8; // 0x8
-    field public static final int MODULATION_UNDEFINED = 0; // 0x0
-    field public static final int ROLLOFF_0_35 = 1; // 0x1
-    field public static final int ROLLOFF_UNDEFINED = 0; // 0x0
-    field public static final int STREAM_ID_TYPE_ID = 0; // 0x0
-    field public static final int STREAM_ID_TYPE_RELATIVE_NUMBER = 1; // 0x1
-  }
-
-  public static class IsdbsFrontendSettings.Builder {
-    method @NonNull public android.media.tv.tuner.frontend.IsdbsFrontendSettings build();
-    method @NonNull public android.media.tv.tuner.frontend.IsdbsFrontendSettings.Builder setCodeRate(int);
-    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.IsdbsFrontendSettings.Builder setFrequency(int);
-    method @NonNull public android.media.tv.tuner.frontend.IsdbsFrontendSettings.Builder setModulation(int);
-    method @NonNull public android.media.tv.tuner.frontend.IsdbsFrontendSettings.Builder setRolloff(int);
-    method @NonNull public android.media.tv.tuner.frontend.IsdbsFrontendSettings.Builder setStreamId(int);
-    method @NonNull public android.media.tv.tuner.frontend.IsdbsFrontendSettings.Builder setStreamIdType(int);
-    method @NonNull public android.media.tv.tuner.frontend.IsdbsFrontendSettings.Builder setSymbolRate(int);
-  }
-
-  public class IsdbtFrontendCapabilities extends android.media.tv.tuner.frontend.FrontendCapabilities {
-    method public int getBandwidthCapability();
-    method public int getCodeRateCapability();
-    method public int getGuardIntervalCapability();
-    method public int getModeCapability();
-    method public int getModulationCapability();
-  }
-
-  public class IsdbtFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
-    method @NonNull public static android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder builder();
-    method public int getBandwidth();
-    method public int getCodeRate();
-    method public int getGuardInterval();
-    method public int getMode();
-    method public int getModulation();
-    method public int getServiceAreaId();
-    method public int getType();
-    field public static final int BANDWIDTH_6MHZ = 8; // 0x8
-    field public static final int BANDWIDTH_7MHZ = 4; // 0x4
-    field public static final int BANDWIDTH_8MHZ = 2; // 0x2
-    field public static final int BANDWIDTH_AUTO = 1; // 0x1
-    field public static final int BANDWIDTH_UNDEFINED = 0; // 0x0
-    field public static final int MODE_1 = 2; // 0x2
-    field public static final int MODE_2 = 4; // 0x4
-    field public static final int MODE_3 = 8; // 0x8
-    field public static final int MODE_AUTO = 1; // 0x1
-    field public static final int MODE_UNDEFINED = 0; // 0x0
-    field public static final int MODULATION_AUTO = 1; // 0x1
-    field public static final int MODULATION_MOD_16QAM = 8; // 0x8
-    field public static final int MODULATION_MOD_64QAM = 16; // 0x10
-    field public static final int MODULATION_MOD_DQPSK = 2; // 0x2
-    field public static final int MODULATION_MOD_QPSK = 4; // 0x4
-    field public static final int MODULATION_UNDEFINED = 0; // 0x0
-  }
-
-  public static class IsdbtFrontendSettings.Builder {
-    method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings build();
-    method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setBandwidth(int);
-    method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setCodeRate(int);
-    method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setFrequency(int);
-    method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setGuardInterval(int);
-    method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setMode(int);
-    method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setModulation(int);
-    method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setServiceAreaId(int);
-  }
-
-  public interface OnTuneEventListener {
-    method public void onTuneEvent(int);
-    field public static final int SIGNAL_LOCKED = 0; // 0x0
-    field public static final int SIGNAL_LOST_LOCK = 2; // 0x2
-    field public static final int SIGNAL_NO_SIGNAL = 1; // 0x1
-  }
-
-  public interface ScanCallback {
-    method public void onAnalogSifStandardReported(int);
-    method public void onAtsc3PlpInfosReported(@NonNull android.media.tv.tuner.frontend.Atsc3PlpInfo[]);
-    method public void onDvbsStandardReported(int);
-    method public void onDvbtStandardReported(int);
-    method public void onFrequenciesReported(@NonNull int[]);
-    method public void onGroupIdsReported(@NonNull int[]);
-    method public void onHierarchyReported(int);
-    method public void onInputStreamIdsReported(@NonNull int[]);
-    method public void onLocked();
-    method public void onPlpIdsReported(@NonNull int[]);
-    method public void onProgress(@IntRange(from=0, to=100) int);
-    method public void onScanStopped();
-    method public void onSignalTypeReported(int);
-    method public void onSymbolRatesReported(@NonNull int[]);
-  }
-
-}
-
-package android.media.voice {
-
-  public final class KeyphraseModelManager {
-    method @RequiresPermission("android.permission.MANAGE_VOICE_KEYPHRASES") public void deleteKeyphraseSoundModel(int, @NonNull java.util.Locale);
-    method @Nullable @RequiresPermission("android.permission.MANAGE_VOICE_KEYPHRASES") public android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel getKeyphraseSoundModel(int, @NonNull java.util.Locale);
-    method @RequiresPermission("android.permission.MANAGE_VOICE_KEYPHRASES") public void updateKeyphraseSoundModel(@NonNull android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel);
-  }
-
-}
-
-package android.metrics {
-
-  public class LogMaker {
-    ctor public LogMaker(int);
-    ctor public LogMaker(Object[]);
-    method public android.metrics.LogMaker addTaggedData(int, Object);
-    method public android.metrics.LogMaker clearCategory();
-    method public android.metrics.LogMaker clearPackageName();
-    method public android.metrics.LogMaker clearSubtype();
-    method public android.metrics.LogMaker clearTaggedData(int);
-    method public android.metrics.LogMaker clearType();
-    method public void deserialize(Object[]);
-    method public int getCategory();
-    method public long getCounterBucket();
-    method public String getCounterName();
-    method public int getCounterValue();
-    method public String getPackageName();
-    method public int getProcessId();
-    method public int getSubtype();
-    method public Object getTaggedData(int);
-    method public long getTimestamp();
-    method public int getType();
-    method public int getUid();
-    method public boolean isLongCounterBucket();
-    method public boolean isSubsetOf(android.metrics.LogMaker);
-    method public boolean isValidValue(Object);
-    method public Object[] serialize();
-    method public android.metrics.LogMaker setCategory(int);
-    method public android.metrics.LogMaker setPackageName(String);
-    method public android.metrics.LogMaker setSubtype(int);
-    method public android.metrics.LogMaker setType(int);
-  }
-
-  public class MetricsReader {
-    ctor public MetricsReader();
-    method public void checkpoint();
-    method public boolean hasNext();
-    method public android.metrics.LogMaker next();
-    method public void read(long);
-    method public void reset();
-  }
-
-}
-
-package android.net {
-
-  public class CaptivePortal implements android.os.Parcelable {
-    method public void logEvent(int, @NonNull String);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_STACK) public void reevaluateNetwork();
-    method public void useNetwork();
-    field public static final int APP_REQUEST_REEVALUATION_REQUIRED = 100; // 0x64
-    field public static final int APP_RETURN_DISMISSED = 0; // 0x0
-    field public static final int APP_RETURN_UNWANTED = 1; // 0x1
-    field public static final int APP_RETURN_WANTED_AS_IS = 2; // 0x2
-  }
-
-  public final class CaptivePortalData implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getByteLimit();
-    method public long getExpiryTimeMillis();
-    method public long getRefreshTimeMillis();
-    method @Nullable public android.net.Uri getUserPortalUrl();
-    method @Nullable public android.net.Uri getVenueInfoUrl();
-    method public boolean isCaptive();
-    method public boolean isSessionExtendable();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.CaptivePortalData> CREATOR;
-  }
-
-  public static class CaptivePortalData.Builder {
-    ctor public CaptivePortalData.Builder();
-    ctor public CaptivePortalData.Builder(@Nullable android.net.CaptivePortalData);
-    method @NonNull public android.net.CaptivePortalData build();
-    method @NonNull public android.net.CaptivePortalData.Builder setBytesRemaining(long);
-    method @NonNull public android.net.CaptivePortalData.Builder setCaptive(boolean);
-    method @NonNull public android.net.CaptivePortalData.Builder setExpiryTime(long);
-    method @NonNull public android.net.CaptivePortalData.Builder setRefreshTime(long);
-    method @NonNull public android.net.CaptivePortalData.Builder setSessionExtendable(boolean);
-    method @NonNull public android.net.CaptivePortalData.Builder setUserPortalUrl(@Nullable android.net.Uri);
-    method @NonNull public android.net.CaptivePortalData.Builder setVenueInfoUrl(@Nullable android.net.Uri);
-  }
-
-  public class ConnectivityManager {
-    method @NonNull @RequiresPermission(android.Manifest.permission.PACKET_KEEPALIVE_OFFLOAD) public android.net.SocketKeepalive createNattKeepalive(@NonNull android.net.Network, @NonNull android.os.ParcelFileDescriptor, @NonNull java.net.InetAddress, @NonNull java.net.InetAddress, @NonNull java.util.concurrent.Executor, @NonNull android.net.SocketKeepalive.Callback);
-    method @NonNull @RequiresPermission(android.Manifest.permission.PACKET_KEEPALIVE_OFFLOAD) public android.net.SocketKeepalive createSocketKeepalive(@NonNull android.net.Network, @NonNull java.net.Socket, @NonNull java.util.concurrent.Executor, @NonNull android.net.SocketKeepalive.Callback);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public String getCaptivePortalServerUrl();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void getLatestTetheringEntitlementResult(int, boolean, @NonNull java.util.concurrent.Executor, @NonNull android.net.ConnectivityManager.OnTetheringEntitlementResultListener);
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public boolean isTetheringSupported();
-    method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_FACTORY}) public int registerNetworkProvider(@NonNull android.net.NetworkProvider);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void registerTetheringEventCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.ConnectivityManager.OnTetheringEventCallback);
-    method @RequiresPermission(android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK) public void requestNetwork(@NonNull android.net.NetworkRequest, int, int, @NonNull android.os.Handler, @NonNull android.net.ConnectivityManager.NetworkCallback);
-    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_AIRPLANE_MODE, android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK}) public void setAirplaneMode(boolean);
-    method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK}) public boolean shouldAvoidBadWifi();
-    method @RequiresPermission(android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK) public void startCaptivePortalApp(@NonNull android.net.Network, @NonNull android.os.Bundle);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void startTethering(int, boolean, android.net.ConnectivityManager.OnStartTetheringCallback);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void startTethering(int, boolean, android.net.ConnectivityManager.OnStartTetheringCallback, android.os.Handler);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void stopTethering(int);
-    method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_FACTORY}) public void unregisterNetworkProvider(@NonNull android.net.NetworkProvider);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void unregisterTetheringEventCallback(@NonNull android.net.ConnectivityManager.OnTetheringEventCallback);
-    field public static final String EXTRA_CAPTIVE_PORTAL_PROBE_SPEC = "android.net.extra.CAPTIVE_PORTAL_PROBE_SPEC";
-    field public static final String EXTRA_CAPTIVE_PORTAL_USER_AGENT = "android.net.extra.CAPTIVE_PORTAL_USER_AGENT";
-    field public static final int TETHERING_BLUETOOTH = 2; // 0x2
-    field public static final int TETHERING_USB = 1; // 0x1
-    field public static final int TETHERING_WIFI = 0; // 0x0
-    field @Deprecated public static final int TETHER_ERROR_ENTITLEMENT_UNKONWN = 13; // 0xd
-    field @Deprecated public static final int TETHER_ERROR_NO_ERROR = 0; // 0x0
-    field @Deprecated public static final int TETHER_ERROR_PROVISION_FAILED = 11; // 0xb
-    field public static final int TYPE_NONE = -1; // 0xffffffff
-    field @Deprecated public static final int TYPE_WIFI_P2P = 13; // 0xd
-  }
-
-  @Deprecated public abstract static class ConnectivityManager.OnStartTetheringCallback {
-    ctor @Deprecated public ConnectivityManager.OnStartTetheringCallback();
-    method @Deprecated public void onTetheringFailed();
-    method @Deprecated public void onTetheringStarted();
-  }
-
-  @Deprecated public static interface ConnectivityManager.OnTetheringEntitlementResultListener {
-    method @Deprecated public void onTetheringEntitlementResult(int);
-  }
-
-  @Deprecated public abstract static class ConnectivityManager.OnTetheringEventCallback {
-    ctor @Deprecated public ConnectivityManager.OnTetheringEventCallback();
-    method @Deprecated public void onUpstreamChanged(@Nullable android.net.Network);
-  }
-
-  public class EthernetManager {
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public android.net.EthernetManager.TetheredInterfaceRequest requestTetheredInterface(@NonNull java.util.concurrent.Executor, @NonNull android.net.EthernetManager.TetheredInterfaceCallback);
-  }
-
-  public static interface EthernetManager.TetheredInterfaceCallback {
-    method public void onAvailable(@NonNull String);
-    method public void onUnavailable();
-  }
-
-  public static class EthernetManager.TetheredInterfaceRequest {
-    method public void release();
-  }
-
-  public final class InvalidPacketException extends java.lang.Exception {
-    ctor public InvalidPacketException(int);
-    method public int getError();
-    field public static final int ERROR_INVALID_IP_ADDRESS = -21; // 0xffffffeb
-    field public static final int ERROR_INVALID_LENGTH = -23; // 0xffffffe9
-    field public static final int ERROR_INVALID_PORT = -22; // 0xffffffea
-  }
-
-  public final class IpConfiguration implements android.os.Parcelable {
-    ctor public IpConfiguration();
-    ctor public IpConfiguration(@NonNull android.net.IpConfiguration);
-    method public int describeContents();
-    method @Nullable public android.net.ProxyInfo getHttpProxy();
-    method @NonNull public android.net.IpConfiguration.IpAssignment getIpAssignment();
-    method @NonNull public android.net.IpConfiguration.ProxySettings getProxySettings();
-    method @Nullable public android.net.StaticIpConfiguration getStaticIpConfiguration();
-    method public void setHttpProxy(@Nullable android.net.ProxyInfo);
-    method public void setIpAssignment(@NonNull android.net.IpConfiguration.IpAssignment);
-    method public void setProxySettings(@NonNull android.net.IpConfiguration.ProxySettings);
-    method public void setStaticIpConfiguration(@Nullable android.net.StaticIpConfiguration);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.IpConfiguration> CREATOR;
-  }
-
-  public enum IpConfiguration.IpAssignment {
-    enum_constant public static final android.net.IpConfiguration.IpAssignment DHCP;
-    enum_constant public static final android.net.IpConfiguration.IpAssignment STATIC;
-    enum_constant public static final android.net.IpConfiguration.IpAssignment UNASSIGNED;
-  }
-
-  public enum IpConfiguration.ProxySettings {
-    enum_constant public static final android.net.IpConfiguration.ProxySettings NONE;
-    enum_constant public static final android.net.IpConfiguration.ProxySettings PAC;
-    enum_constant public static final android.net.IpConfiguration.ProxySettings STATIC;
-    enum_constant public static final android.net.IpConfiguration.ProxySettings UNASSIGNED;
-  }
-
-  public final class IpPrefix implements android.os.Parcelable {
-    ctor public IpPrefix(@NonNull java.net.InetAddress, @IntRange(from=0, to=128) int);
-    ctor public IpPrefix(@NonNull String);
-  }
-
-  public final class IpSecManager {
-    method @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public void applyTunnelModeTransform(@NonNull android.net.IpSecManager.IpSecTunnelInterface, int, @NonNull android.net.IpSecTransform) throws java.io.IOException;
-    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public android.net.IpSecManager.IpSecTunnelInterface createIpSecTunnelInterface(@NonNull java.net.InetAddress, @NonNull java.net.InetAddress, @NonNull android.net.Network) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException;
-  }
-
-  public static final class IpSecManager.IpSecTunnelInterface implements java.lang.AutoCloseable {
-    method @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public void addAddress(@NonNull java.net.InetAddress, int) throws java.io.IOException;
-    method public void close();
-    method @NonNull public String getInterfaceName();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public void removeAddress(@NonNull java.net.InetAddress, int) throws java.io.IOException;
-  }
-
-  public static class IpSecTransform.Builder {
-    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public android.net.IpSecTransform buildTunnelModeTransform(@NonNull java.net.InetAddress, @NonNull android.net.IpSecManager.SecurityParameterIndex) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException, android.net.IpSecManager.SpiUnavailableException;
-  }
-
-  public class KeepalivePacketData {
-    ctor protected KeepalivePacketData(@NonNull java.net.InetAddress, @IntRange(from=0, to=65535) int, @NonNull java.net.InetAddress, @IntRange(from=0, to=65535) int, @NonNull byte[]) throws android.net.InvalidPacketException;
-    method @NonNull public java.net.InetAddress getDstAddress();
-    method public int getDstPort();
-    method @NonNull public byte[] getPacket();
-    method @NonNull public java.net.InetAddress getSrcAddress();
-    method public int getSrcPort();
-  }
-
-  public class LinkAddress implements android.os.Parcelable {
-    ctor public LinkAddress(@NonNull java.net.InetAddress, @IntRange(from=0, to=128) int, int, int);
-    ctor public LinkAddress(@NonNull java.net.InetAddress, @IntRange(from=0, to=128) int, int, int, long, long);
-    ctor public LinkAddress(@NonNull java.net.InetAddress, @IntRange(from=0, to=128) int);
-    ctor public LinkAddress(@NonNull String);
-    ctor public LinkAddress(@NonNull String, int, int);
-    method public long getDeprecationTime();
-    method public long getExpirationTime();
-    method public boolean isGlobalPreferred();
-    method public boolean isIpv4();
-    method public boolean isIpv6();
-    method public boolean isSameAddressAs(@Nullable android.net.LinkAddress);
-    field public static final long LIFETIME_PERMANENT = 9223372036854775807L; // 0x7fffffffffffffffL
-    field public static final long LIFETIME_UNKNOWN = -1L; // 0xffffffffffffffffL
-  }
-
-  public final class LinkProperties implements android.os.Parcelable {
-    ctor public LinkProperties(@Nullable android.net.LinkProperties);
-    ctor public LinkProperties(@Nullable android.net.LinkProperties, boolean);
-    method public boolean addDnsServer(@NonNull java.net.InetAddress);
-    method public boolean addLinkAddress(@NonNull android.net.LinkAddress);
-    method public boolean addPcscfServer(@NonNull java.net.InetAddress);
-    method @NonNull public java.util.List<java.net.InetAddress> getAddresses();
-    method @NonNull public java.util.List<java.lang.String> getAllInterfaceNames();
-    method @NonNull public java.util.List<android.net.LinkAddress> getAllLinkAddresses();
-    method @NonNull public java.util.List<android.net.RouteInfo> getAllRoutes();
-    method @Nullable public android.net.Uri getCaptivePortalApiUrl();
-    method @Nullable public android.net.CaptivePortalData getCaptivePortalData();
-    method @NonNull public java.util.List<java.net.InetAddress> getPcscfServers();
-    method @Nullable public String getTcpBufferSizes();
-    method @NonNull public java.util.List<java.net.InetAddress> getValidatedPrivateDnsServers();
-    method public boolean hasGlobalIpv6Address();
-    method public boolean hasIpv4Address();
-    method public boolean hasIpv4DefaultRoute();
-    method public boolean hasIpv4DnsServer();
-    method public boolean hasIpv6DefaultRoute();
-    method public boolean hasIpv6DnsServer();
-    method public boolean isIpv4Provisioned();
-    method public boolean isIpv6Provisioned();
-    method public boolean isProvisioned();
-    method public boolean isReachable(@NonNull java.net.InetAddress);
-    method public boolean removeDnsServer(@NonNull java.net.InetAddress);
-    method public boolean removeLinkAddress(@NonNull android.net.LinkAddress);
-    method public boolean removeRoute(@NonNull android.net.RouteInfo);
-    method public void setCaptivePortalApiUrl(@Nullable android.net.Uri);
-    method public void setCaptivePortalData(@Nullable android.net.CaptivePortalData);
-    method public void setPcscfServers(@NonNull java.util.Collection<java.net.InetAddress>);
-    method public void setPrivateDnsServerName(@Nullable String);
-    method public void setTcpBufferSizes(@Nullable String);
-    method public void setUsePrivateDns(boolean);
-    method public void setValidatedPrivateDnsServers(@NonNull java.util.Collection<java.net.InetAddress>);
-  }
-
-  public final class MatchAllNetworkSpecifier extends android.net.NetworkSpecifier implements android.os.Parcelable {
-    ctor public MatchAllNetworkSpecifier();
-    method public int describeContents();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.MatchAllNetworkSpecifier> CREATOR;
-  }
-
-  public final class NattKeepalivePacketData extends android.net.KeepalivePacketData implements android.os.Parcelable {
-    ctor public NattKeepalivePacketData(@NonNull java.net.InetAddress, int, @NonNull java.net.InetAddress, int, @NonNull byte[]) throws android.net.InvalidPacketException;
-    method public int describeContents();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.NattKeepalivePacketData> CREATOR;
-  }
-
-  public class Network implements android.os.Parcelable {
-    ctor public Network(@NonNull android.net.Network);
-    method public int getNetId();
-    method @NonNull public android.net.Network getPrivateDnsBypassingCopy();
-  }
-
-  public abstract class NetworkAgent {
-    ctor public NetworkAgent(@NonNull android.content.Context, @NonNull android.os.Looper, @NonNull String, @NonNull android.net.NetworkCapabilities, @NonNull android.net.LinkProperties, int, @NonNull android.net.NetworkAgentConfig, @Nullable android.net.NetworkProvider);
-    method @Nullable public android.net.Network getNetwork();
-    method public void markConnected();
-    method public void onAddKeepalivePacketFilter(int, @NonNull android.net.KeepalivePacketData);
-    method public void onAutomaticReconnectDisabled();
-    method public void onNetworkUnwanted();
-    method public void onRemoveKeepalivePacketFilter(int);
-    method public void onSaveAcceptUnvalidated(boolean);
-    method public void onSignalStrengthThresholdsUpdated(@NonNull int[]);
-    method public void onStartSocketKeepalive(int, @NonNull java.time.Duration, @NonNull android.net.KeepalivePacketData);
-    method public void onStopSocketKeepalive(int);
-    method public void onValidationStatus(int, @Nullable android.net.Uri);
-    method @NonNull public android.net.Network register();
-    method public final void sendLinkProperties(@NonNull android.net.LinkProperties);
-    method public final void sendNetworkCapabilities(@NonNull android.net.NetworkCapabilities);
-    method public final void sendNetworkScore(@IntRange(from=0, to=99) int);
-    method public final void sendSocketKeepaliveEvent(int, int);
-    method public void unregister();
-    field public static final int VALIDATION_STATUS_NOT_VALID = 2; // 0x2
-    field public static final int VALIDATION_STATUS_VALID = 1; // 0x1
-  }
-
-  public final class NetworkAgentConfig implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getLegacyType();
-    method @NonNull public String getLegacyTypeName();
-    method public boolean isExplicitlySelected();
-    method public boolean isPartialConnectivityAcceptable();
-    method public boolean isUnvalidatedConnectivityAcceptable();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkAgentConfig> CREATOR;
-  }
-
-  public static final class NetworkAgentConfig.Builder {
-    ctor public NetworkAgentConfig.Builder();
-    method @NonNull public android.net.NetworkAgentConfig build();
-    method @NonNull public android.net.NetworkAgentConfig.Builder setExplicitlySelected(boolean);
-    method @NonNull public android.net.NetworkAgentConfig.Builder setLegacyType(int);
-    method @NonNull public android.net.NetworkAgentConfig.Builder setLegacyTypeName(@NonNull String);
-    method @NonNull public android.net.NetworkAgentConfig.Builder setPartialConnectivityAcceptable(boolean);
-    method @NonNull public android.net.NetworkAgentConfig.Builder setUnvalidatedConnectivityAcceptable(boolean);
-  }
-
-  public final class NetworkCapabilities implements android.os.Parcelable {
-    method @NonNull public int[] getAdministratorUids();
-    method @Nullable public String getSsid();
-    method @NonNull public int[] getTransportTypes();
-    method public boolean satisfiedByNetworkCapabilities(@Nullable android.net.NetworkCapabilities);
-    field public static final int NET_CAPABILITY_OEM_PAID = 22; // 0x16
-    field public static final int NET_CAPABILITY_PARTIAL_CONNECTIVITY = 24; // 0x18
-  }
-
-  public static final class NetworkCapabilities.Builder {
-    ctor public NetworkCapabilities.Builder();
-    ctor public NetworkCapabilities.Builder(@NonNull android.net.NetworkCapabilities);
-    method @NonNull public android.net.NetworkCapabilities.Builder addCapability(int);
-    method @NonNull public android.net.NetworkCapabilities.Builder addTransportType(int);
-    method @NonNull public android.net.NetworkCapabilities build();
-    method @NonNull public android.net.NetworkCapabilities.Builder removeCapability(int);
-    method @NonNull public android.net.NetworkCapabilities.Builder removeTransportType(int);
-    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public android.net.NetworkCapabilities.Builder setAdministratorUids(@NonNull int[]);
-    method @NonNull public android.net.NetworkCapabilities.Builder setLinkDownstreamBandwidthKbps(int);
-    method @NonNull public android.net.NetworkCapabilities.Builder setLinkUpstreamBandwidthKbps(int);
-    method @NonNull public android.net.NetworkCapabilities.Builder setNetworkSpecifier(@Nullable android.net.NetworkSpecifier);
-    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public android.net.NetworkCapabilities.Builder setOwnerUid(int);
-    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public android.net.NetworkCapabilities.Builder setRequestorPackageName(@Nullable String);
-    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public android.net.NetworkCapabilities.Builder setRequestorUid(int);
-    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP) public android.net.NetworkCapabilities.Builder setSignalStrength(int);
-    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public android.net.NetworkCapabilities.Builder setSsid(@Nullable String);
-    method @NonNull public android.net.NetworkCapabilities.Builder setTransportInfo(@Nullable android.net.TransportInfo);
-  }
-
-  public class NetworkKey implements android.os.Parcelable {
-    ctor public NetworkKey(android.net.WifiKey);
-    method @Nullable public static android.net.NetworkKey createFromScanResult(@NonNull android.net.wifi.ScanResult);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkKey> CREATOR;
-    field public static final int TYPE_WIFI = 1; // 0x1
-    field public final int type;
-    field public final android.net.WifiKey wifiKey;
-  }
-
-  public class NetworkProvider {
-    ctor public NetworkProvider(@NonNull android.content.Context, @NonNull android.os.Looper, @NonNull String);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public void declareNetworkRequestUnfulfillable(@NonNull android.net.NetworkRequest);
-    method public int getProviderId();
-    method public void onNetworkRequestWithdrawn(@NonNull android.net.NetworkRequest);
-    method public void onNetworkRequested(@NonNull android.net.NetworkRequest, @IntRange(from=0, to=99) int, int);
-    field public static final int ID_NONE = -1; // 0xffffffff
-  }
-
-  public abstract class NetworkRecommendationProvider {
-    ctor public NetworkRecommendationProvider(android.content.Context, java.util.concurrent.Executor);
-    method public final android.os.IBinder getBinder();
-    method public abstract void onRequestScores(android.net.NetworkKey[]);
-  }
-
-  public class NetworkRequest implements android.os.Parcelable {
-    method @Nullable public String getRequestorPackageName();
-    method public int getRequestorUid();
-  }
-
-  public static class NetworkRequest.Builder {
-    method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP) public android.net.NetworkRequest.Builder setSignalStrength(int);
-  }
-
-  public class NetworkScoreManager {
-    method @RequiresPermission(anyOf={android.Manifest.permission.SCORE_NETWORKS, android.Manifest.permission.REQUEST_NETWORK_SCORES}) public boolean clearScores() throws java.lang.SecurityException;
-    method @RequiresPermission(anyOf={android.Manifest.permission.SCORE_NETWORKS, android.Manifest.permission.REQUEST_NETWORK_SCORES}) public void disableScoring() throws java.lang.SecurityException;
-    method @RequiresPermission(anyOf={android.Manifest.permission.SCORE_NETWORKS, android.Manifest.permission.REQUEST_NETWORK_SCORES}) public String getActiveScorerPackage();
-    method @RequiresPermission(android.Manifest.permission.REQUEST_NETWORK_SCORES) public void registerNetworkScoreCallback(int, int, @NonNull java.util.concurrent.Executor, @NonNull android.net.NetworkScoreManager.NetworkScoreCallback) throws java.lang.SecurityException;
-    method @RequiresPermission(android.Manifest.permission.REQUEST_NETWORK_SCORES) public boolean requestScores(@NonNull java.util.Collection<android.net.NetworkKey>) throws java.lang.SecurityException;
-    method @RequiresPermission(anyOf={android.Manifest.permission.SCORE_NETWORKS, android.Manifest.permission.REQUEST_NETWORK_SCORES}) public boolean setActiveScorer(String) throws java.lang.SecurityException;
-    method @RequiresPermission(android.Manifest.permission.SCORE_NETWORKS) public boolean updateScores(@NonNull android.net.ScoredNetwork[]) throws java.lang.SecurityException;
-    field @Deprecated public static final String ACTION_CHANGE_ACTIVE = "android.net.scoring.CHANGE_ACTIVE";
-    field public static final String ACTION_CUSTOM_ENABLE = "android.net.scoring.CUSTOM_ENABLE";
-    field public static final String ACTION_RECOMMEND_NETWORKS = "android.net.action.RECOMMEND_NETWORKS";
-    field public static final String ACTION_SCORER_CHANGED = "android.net.scoring.SCORER_CHANGED";
-    field @Deprecated public static final String ACTION_SCORE_NETWORKS = "android.net.scoring.SCORE_NETWORKS";
-    field @Deprecated public static final String EXTRA_NETWORKS_TO_SCORE = "networksToScore";
-    field public static final String EXTRA_NEW_SCORER = "newScorer";
-    field @Deprecated public static final String EXTRA_PACKAGE_NAME = "packageName";
-    field public static final int SCORE_FILTER_CURRENT_NETWORK = 1; // 0x1
-    field public static final int SCORE_FILTER_NONE = 0; // 0x0
-    field public static final int SCORE_FILTER_SCAN_RESULTS = 2; // 0x2
-  }
-
-  public abstract static class NetworkScoreManager.NetworkScoreCallback {
-    ctor public NetworkScoreManager.NetworkScoreCallback();
-    method public abstract void onScoresInvalidated();
-    method public abstract void onScoresUpdated(@NonNull java.util.Collection<android.net.ScoredNetwork>);
-  }
-
-  public abstract class NetworkSpecifier {
-    method public boolean canBeSatisfiedBy(@Nullable android.net.NetworkSpecifier);
-    method @Nullable public android.net.NetworkSpecifier redact();
-  }
-
-  public class NetworkStack {
-    method @Nullable public static android.os.IBinder getService();
-    field public static final String PERMISSION_MAINLINE_NETWORK_STACK = "android.permission.MAINLINE_NETWORK_STACK";
-  }
-
-  public final class NetworkStats implements android.os.Parcelable {
-    ctor public NetworkStats(long, int);
-    method @NonNull public android.net.NetworkStats add(@NonNull android.net.NetworkStats);
-    method @NonNull public android.net.NetworkStats addEntry(@NonNull android.net.NetworkStats.Entry);
-    method public int describeContents();
-    method @NonNull public android.net.NetworkStats subtract(@NonNull android.net.NetworkStats);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkStats> CREATOR;
-    field public static final int DEFAULT_NETWORK_NO = 0; // 0x0
-    field public static final int DEFAULT_NETWORK_YES = 1; // 0x1
-    field public static final String IFACE_VT = "vt_data0";
-    field public static final int METERED_NO = 0; // 0x0
-    field public static final int METERED_YES = 1; // 0x1
-    field public static final int ROAMING_NO = 0; // 0x0
-    field public static final int ROAMING_YES = 1; // 0x1
-    field public static final int SET_DEFAULT = 0; // 0x0
-    field public static final int SET_FOREGROUND = 1; // 0x1
-    field public static final int TAG_NONE = 0; // 0x0
-    field public static final int UID_ALL = -1; // 0xffffffff
-    field public static final int UID_TETHERING = -5; // 0xfffffffb
-  }
-
-  public static class NetworkStats.Entry {
-    ctor public NetworkStats.Entry(@Nullable String, int, int, int, int, int, int, long, long, long, long, long);
-  }
-
-  public final class RouteInfo implements android.os.Parcelable {
-    ctor public RouteInfo(@Nullable android.net.IpPrefix, @Nullable java.net.InetAddress, @Nullable String, int);
-    ctor public RouteInfo(@Nullable android.net.IpPrefix, @Nullable java.net.InetAddress, @Nullable String, int, int);
-    method public int getMtu();
-    method public int getType();
-    field public static final int RTN_THROW = 9; // 0x9
-    field public static final int RTN_UNICAST = 1; // 0x1
-    field public static final int RTN_UNREACHABLE = 7; // 0x7
-  }
-
-  public class RssiCurve implements android.os.Parcelable {
-    ctor public RssiCurve(int, int, byte[]);
-    ctor public RssiCurve(int, int, byte[], int);
-    method public int describeContents();
-    method public byte lookupScore(int);
-    method public byte lookupScore(int, boolean);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.RssiCurve> CREATOR;
-    field public final int activeNetworkRssiBoost;
-    field public final int bucketWidth;
-    field public final byte[] rssiBuckets;
-    field public final int start;
-  }
-
-  public class ScoredNetwork implements android.os.Parcelable {
-    ctor public ScoredNetwork(android.net.NetworkKey, android.net.RssiCurve);
-    ctor public ScoredNetwork(android.net.NetworkKey, android.net.RssiCurve, boolean);
-    ctor public ScoredNetwork(android.net.NetworkKey, android.net.RssiCurve, boolean, @Nullable android.os.Bundle);
-    method public int calculateBadge(int);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final String ATTRIBUTES_KEY_BADGING_CURVE = "android.net.attributes.key.BADGING_CURVE";
-    field public static final String ATTRIBUTES_KEY_HAS_CAPTIVE_PORTAL = "android.net.attributes.key.HAS_CAPTIVE_PORTAL";
-    field public static final String ATTRIBUTES_KEY_RANKING_SCORE_OFFSET = "android.net.attributes.key.RANKING_SCORE_OFFSET";
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.ScoredNetwork> CREATOR;
-    field @Nullable public final android.os.Bundle attributes;
-    field public final boolean meteredHint;
-    field public final android.net.NetworkKey networkKey;
-    field public final android.net.RssiCurve rssiCurve;
-  }
-
-  public abstract class SocketKeepalive implements java.lang.AutoCloseable {
-    field public static final int SUCCESS = 0; // 0x0
-  }
-
-  public final class StaticIpConfiguration implements android.os.Parcelable {
-    ctor public StaticIpConfiguration();
-    ctor public StaticIpConfiguration(@Nullable android.net.StaticIpConfiguration);
-    method public void addDnsServer(@NonNull java.net.InetAddress);
-    method public void clear();
-    method public int describeContents();
-    method @NonNull public java.util.List<java.net.InetAddress> getDnsServers();
-    method @Nullable public String getDomains();
-    method @Nullable public java.net.InetAddress getGateway();
-    method @Nullable public android.net.LinkAddress getIpAddress();
-    method @NonNull public java.util.List<android.net.RouteInfo> getRoutes(@Nullable String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.StaticIpConfiguration> CREATOR;
-  }
-
-  public static final class StaticIpConfiguration.Builder {
-    ctor public StaticIpConfiguration.Builder();
-    method @NonNull public android.net.StaticIpConfiguration build();
-    method @NonNull public android.net.StaticIpConfiguration.Builder setDnsServers(@NonNull Iterable<java.net.InetAddress>);
-    method @NonNull public android.net.StaticIpConfiguration.Builder setDomains(@Nullable String);
-    method @NonNull public android.net.StaticIpConfiguration.Builder setGateway(@Nullable java.net.InetAddress);
-    method @NonNull public android.net.StaticIpConfiguration.Builder setIpAddress(@Nullable android.net.LinkAddress);
-  }
-
-  public class TrafficStats {
-    method public static void setThreadStatsTagApp();
-    method public static void setThreadStatsTagBackup();
-    method public static void setThreadStatsTagRestore();
-    field public static final int TAG_NETWORK_STACK_IMPERSONATION_RANGE_END = -113; // 0xffffff8f
-    field public static final int TAG_NETWORK_STACK_IMPERSONATION_RANGE_START = -128; // 0xffffff80
-    field public static final int TAG_NETWORK_STACK_RANGE_END = -257; // 0xfffffeff
-    field public static final int TAG_NETWORK_STACK_RANGE_START = -768; // 0xfffffd00
-    field public static final int TAG_SYSTEM_IMPERSONATION_RANGE_END = -241; // 0xffffff0f
-    field public static final int TAG_SYSTEM_IMPERSONATION_RANGE_START = -256; // 0xffffff00
-  }
-
-  public abstract class Uri implements java.lang.Comparable<android.net.Uri> android.os.Parcelable {
-    method @NonNull public String toSafeString();
-  }
-
-  public class VpnService extends android.app.Service {
-    method @RequiresPermission(android.Manifest.permission.CONTROL_VPN) public static void prepareAndAuthorize(android.content.Context);
-  }
-
-  public class WebAddress {
-    ctor public WebAddress(String) throws android.net.ParseException;
-  }
-
-  public class WifiKey implements android.os.Parcelable {
-    ctor public WifiKey(String, String);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.WifiKey> CREATOR;
-    field public final String bssid;
-    field public final String ssid;
-  }
-
-}
-
-package android.net.apf {
-
-  public final class ApfCapabilities implements android.os.Parcelable {
-    ctor public ApfCapabilities(int, int, int);
-    method public int describeContents();
-    method public static boolean getApfDrop8023Frames();
-    method @NonNull public static int[] getApfEtherTypeBlackList();
-    method public boolean hasDataAccess();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.net.apf.ApfCapabilities> CREATOR;
-    field public final int apfPacketFormat;
-    field public final int apfVersionSupported;
-    field public final int maximumApfProgramSize;
-  }
-
-}
-
-package android.net.metrics {
-
-  public final class ApfProgramEvent implements android.net.metrics.IpConnectivityLog.Event {
-  }
-
-  public static final class ApfProgramEvent.Builder {
-    ctor public ApfProgramEvent.Builder();
-    method @NonNull public android.net.metrics.ApfProgramEvent build();
-    method @NonNull public android.net.metrics.ApfProgramEvent.Builder setActualLifetime(long);
-    method @NonNull public android.net.metrics.ApfProgramEvent.Builder setCurrentRas(int);
-    method @NonNull public android.net.metrics.ApfProgramEvent.Builder setFilteredRas(int);
-    method @NonNull public android.net.metrics.ApfProgramEvent.Builder setFlags(boolean, boolean);
-    method @NonNull public android.net.metrics.ApfProgramEvent.Builder setLifetime(long);
-    method @NonNull public android.net.metrics.ApfProgramEvent.Builder setProgramLength(int);
-  }
-
-  public final class ApfStats implements android.net.metrics.IpConnectivityLog.Event {
-  }
-
-  public static final class ApfStats.Builder {
-    ctor public ApfStats.Builder();
-    method @NonNull public android.net.metrics.ApfStats build();
-    method @NonNull public android.net.metrics.ApfStats.Builder setDroppedRas(int);
-    method @NonNull public android.net.metrics.ApfStats.Builder setDurationMs(long);
-    method @NonNull public android.net.metrics.ApfStats.Builder setMatchingRas(int);
-    method @NonNull public android.net.metrics.ApfStats.Builder setMaxProgramSize(int);
-    method @NonNull public android.net.metrics.ApfStats.Builder setParseErrors(int);
-    method @NonNull public android.net.metrics.ApfStats.Builder setProgramUpdates(int);
-    method @NonNull public android.net.metrics.ApfStats.Builder setProgramUpdatesAll(int);
-    method @NonNull public android.net.metrics.ApfStats.Builder setProgramUpdatesAllowingMulticast(int);
-    method @NonNull public android.net.metrics.ApfStats.Builder setReceivedRas(int);
-    method @NonNull public android.net.metrics.ApfStats.Builder setZeroLifetimeRas(int);
-  }
-
-  public final class DhcpClientEvent implements android.net.metrics.IpConnectivityLog.Event {
-  }
-
-  public static final class DhcpClientEvent.Builder {
-    ctor public DhcpClientEvent.Builder();
-    method @NonNull public android.net.metrics.DhcpClientEvent build();
-    method @NonNull public android.net.metrics.DhcpClientEvent.Builder setDurationMs(int);
-    method @NonNull public android.net.metrics.DhcpClientEvent.Builder setMsg(String);
-  }
-
-  public final class DhcpErrorEvent implements android.net.metrics.IpConnectivityLog.Event {
-    ctor public DhcpErrorEvent(int);
-    method public static int errorCodeWithOption(int, int);
-    field public static final int BOOTP_TOO_SHORT = 67174400; // 0x4010000
-    field public static final int BUFFER_UNDERFLOW = 83951616; // 0x5010000
-    field public static final int DHCP_BAD_MAGIC_COOKIE = 67239936; // 0x4020000
-    field public static final int DHCP_ERROR = 4; // 0x4
-    field public static final int DHCP_INVALID_OPTION_LENGTH = 67305472; // 0x4030000
-    field public static final int DHCP_NO_COOKIE = 67502080; // 0x4060000
-    field public static final int DHCP_NO_MSG_TYPE = 67371008; // 0x4040000
-    field public static final int DHCP_UNKNOWN_MSG_TYPE = 67436544; // 0x4050000
-    field public static final int L2_ERROR = 1; // 0x1
-    field public static final int L2_TOO_SHORT = 16842752; // 0x1010000
-    field public static final int L2_WRONG_ETH_TYPE = 16908288; // 0x1020000
-    field public static final int L3_ERROR = 2; // 0x2
-    field public static final int L3_INVALID_IP = 33751040; // 0x2030000
-    field public static final int L3_NOT_IPV4 = 33685504; // 0x2020000
-    field public static final int L3_TOO_SHORT = 33619968; // 0x2010000
-    field public static final int L4_ERROR = 3; // 0x3
-    field public static final int L4_NOT_UDP = 50397184; // 0x3010000
-    field public static final int L4_WRONG_PORT = 50462720; // 0x3020000
-    field public static final int MISC_ERROR = 5; // 0x5
-    field public static final int PARSING_ERROR = 84082688; // 0x5030000
-    field public static final int RECEIVE_ERROR = 84017152; // 0x5020000
-  }
-
-  public class IpConnectivityLog {
-    ctor public IpConnectivityLog();
-    method public boolean log(long, @NonNull android.net.metrics.IpConnectivityLog.Event);
-    method public boolean log(@NonNull String, @NonNull android.net.metrics.IpConnectivityLog.Event);
-    method public boolean log(@NonNull android.net.Network, @NonNull int[], @NonNull android.net.metrics.IpConnectivityLog.Event);
-    method public boolean log(int, @NonNull int[], @NonNull android.net.metrics.IpConnectivityLog.Event);
-    method public boolean log(@NonNull android.net.metrics.IpConnectivityLog.Event);
-  }
-
-  public static interface IpConnectivityLog.Event extends android.os.Parcelable {
-  }
-
-  public final class IpManagerEvent implements android.net.metrics.IpConnectivityLog.Event {
-    ctor public IpManagerEvent(int, long);
-    field public static final int COMPLETE_LIFECYCLE = 3; // 0x3
-    field public static final int ERROR_INTERFACE_NOT_FOUND = 8; // 0x8
-    field public static final int ERROR_INVALID_PROVISIONING = 7; // 0x7
-    field public static final int ERROR_STARTING_IPREACHABILITYMONITOR = 6; // 0x6
-    field public static final int ERROR_STARTING_IPV4 = 4; // 0x4
-    field public static final int ERROR_STARTING_IPV6 = 5; // 0x5
-    field public static final int PROVISIONING_FAIL = 2; // 0x2
-    field public static final int PROVISIONING_OK = 1; // 0x1
-  }
-
-  public final class IpReachabilityEvent implements android.net.metrics.IpConnectivityLog.Event {
-    ctor public IpReachabilityEvent(int);
-    field public static final int NUD_FAILED = 512; // 0x200
-    field public static final int NUD_FAILED_ORGANIC = 1024; // 0x400
-    field public static final int PROBE = 256; // 0x100
-    field public static final int PROVISIONING_LOST = 768; // 0x300
-    field public static final int PROVISIONING_LOST_ORGANIC = 1280; // 0x500
-  }
-
-  public final class NetworkEvent implements android.net.metrics.IpConnectivityLog.Event {
-    ctor public NetworkEvent(int, long);
-    ctor public NetworkEvent(int);
-    field public static final int NETWORK_CAPTIVE_PORTAL_FOUND = 4; // 0x4
-    field public static final int NETWORK_CONNECTED = 1; // 0x1
-    field public static final int NETWORK_CONSECUTIVE_DNS_TIMEOUT_FOUND = 12; // 0xc
-    field public static final int NETWORK_DISCONNECTED = 7; // 0x7
-    field public static final int NETWORK_FIRST_VALIDATION_PORTAL_FOUND = 10; // 0xa
-    field public static final int NETWORK_FIRST_VALIDATION_SUCCESS = 8; // 0x8
-    field public static final int NETWORK_LINGER = 5; // 0x5
-    field public static final int NETWORK_PARTIAL_CONNECTIVITY = 13; // 0xd
-    field public static final int NETWORK_REVALIDATION_PORTAL_FOUND = 11; // 0xb
-    field public static final int NETWORK_REVALIDATION_SUCCESS = 9; // 0x9
-    field public static final int NETWORK_UNLINGER = 6; // 0x6
-    field public static final int NETWORK_VALIDATED = 2; // 0x2
-    field public static final int NETWORK_VALIDATION_FAILED = 3; // 0x3
-  }
-
-  public final class RaEvent implements android.net.metrics.IpConnectivityLog.Event {
-  }
-
-  public static final class RaEvent.Builder {
-    ctor public RaEvent.Builder();
-    method @NonNull public android.net.metrics.RaEvent build();
-    method @NonNull public android.net.metrics.RaEvent.Builder updateDnsslLifetime(long);
-    method @NonNull public android.net.metrics.RaEvent.Builder updatePrefixPreferredLifetime(long);
-    method @NonNull public android.net.metrics.RaEvent.Builder updatePrefixValidLifetime(long);
-    method @NonNull public android.net.metrics.RaEvent.Builder updateRdnssLifetime(long);
-    method @NonNull public android.net.metrics.RaEvent.Builder updateRouteInfoLifetime(long);
-    method @NonNull public android.net.metrics.RaEvent.Builder updateRouterLifetime(long);
-  }
-
-  public final class ValidationProbeEvent implements android.net.metrics.IpConnectivityLog.Event {
-    method @NonNull public static String getProbeName(int);
-    field public static final int DNS_FAILURE = 0; // 0x0
-    field public static final int DNS_SUCCESS = 1; // 0x1
-    field public static final int PROBE_DNS = 0; // 0x0
-    field public static final int PROBE_FALLBACK = 4; // 0x4
-    field public static final int PROBE_HTTP = 1; // 0x1
-    field public static final int PROBE_HTTPS = 2; // 0x2
-    field public static final int PROBE_PAC = 3; // 0x3
-    field public static final int PROBE_PRIVDNS = 5; // 0x5
-  }
-
-  public static final class ValidationProbeEvent.Builder {
-    ctor public ValidationProbeEvent.Builder();
-    method @NonNull public android.net.metrics.ValidationProbeEvent build();
-    method @NonNull public android.net.metrics.ValidationProbeEvent.Builder setDurationMs(long);
-    method @NonNull public android.net.metrics.ValidationProbeEvent.Builder setProbeType(int, boolean);
-    method @NonNull public android.net.metrics.ValidationProbeEvent.Builder setReturnCode(int);
-  }
-
-}
-
-package android.net.netstats.provider {
-
-  public abstract class NetworkStatsProvider {
-    ctor public NetworkStatsProvider();
-    method public void notifyAlertReached();
-    method public void notifyLimitReached();
-    method public void notifyStatsUpdated(int, @NonNull android.net.NetworkStats, @NonNull android.net.NetworkStats);
-    method public abstract void onRequestStatsUpdate(int);
-    method public abstract void onSetAlert(long);
-    method public abstract void onSetLimit(@NonNull String, long);
-    field public static final int QUOTA_UNLIMITED = -1; // 0xffffffff
-  }
-
-}
-
-package android.net.sip {
-
-  public class SipAudioCall {
-    method @Nullable public android.net.rtp.AudioGroup getAudioGroup();
-    method public void setAudioGroup(@NonNull android.net.rtp.AudioGroup);
-  }
-
-  public class SipManager {
-    method @NonNull public java.util.List<android.net.sip.SipProfile> getProfiles() throws android.net.sip.SipException;
-    field public static final String ACTION_SIP_CALL_OPTION_CHANGED = "android.net.sip.action.SIP_CALL_OPTION_CHANGED";
-    field public static final String ACTION_SIP_INCOMING_CALL = "android.net.sip.action.SIP_INCOMING_CALL";
-    field public static final String ACTION_SIP_REMOVE_PROFILE = "android.net.sip.action.SIP_REMOVE_PROFILE";
-    field public static final String ACTION_SIP_SERVICE_UP = "android.net.sip.action.SIP_SERVICE_UP";
-    field public static final String ACTION_START_SIP = "android.net.sip.action.START_SIP";
-  }
-
-  public class SipProfile implements java.lang.Cloneable android.os.Parcelable java.io.Serializable {
-    method public int getCallingUid();
-  }
-
-}
-
-package android.net.util {
-
-  public final class SocketUtils {
-    method public static void bindSocketToInterface(@NonNull java.io.FileDescriptor, @NonNull String) throws android.system.ErrnoException;
-    method public static void closeSocket(@Nullable java.io.FileDescriptor) throws java.io.IOException;
-    method @NonNull public static java.net.SocketAddress makeNetlinkSocketAddress(int, int);
-    method @NonNull public static java.net.SocketAddress makePacketSocketAddress(int, int);
-    method @Deprecated @NonNull public static java.net.SocketAddress makePacketSocketAddress(int, @NonNull byte[]);
-    method @NonNull public static java.net.SocketAddress makePacketSocketAddress(int, int, @NonNull byte[]);
-  }
-
-}
-
-package android.net.wifi {
-
-  public final class WifiMigration {
-    method @Nullable public static java.io.InputStream convertAndRetrieveSharedConfigStoreFile(int);
-    method @Nullable public static java.io.InputStream convertAndRetrieveUserConfigStoreFile(int, @NonNull android.os.UserHandle);
-    method @NonNull public static android.net.wifi.WifiMigration.SettingsMigrationData loadFromSettings(@NonNull android.content.Context);
-    method public static void removeSharedConfigStoreFile(int);
-    method public static void removeUserConfigStoreFile(int, @NonNull android.os.UserHandle);
-    field public static final int STORE_FILE_SHARED_GENERAL = 0; // 0x0
-    field public static final int STORE_FILE_SHARED_SOFTAP = 1; // 0x1
-    field public static final int STORE_FILE_USER_GENERAL = 2; // 0x2
-    field public static final int STORE_FILE_USER_NETWORK_SUGGESTIONS = 3; // 0x3
-  }
-
-  public static final class WifiMigration.SettingsMigrationData implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getP2pDeviceName();
-    method public boolean isP2pFactoryResetPending();
-    method public boolean isScanAlwaysAvailable();
-    method public boolean isScanThrottleEnabled();
-    method public boolean isSoftApTimeoutEnabled();
-    method public boolean isVerboseLoggingEnabled();
-    method public boolean isWakeUpEnabled();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.WifiMigration.SettingsMigrationData> CREATOR;
-  }
-
-  public static final class WifiMigration.SettingsMigrationData.Builder {
-    ctor public WifiMigration.SettingsMigrationData.Builder();
-    method @NonNull public android.net.wifi.WifiMigration.SettingsMigrationData build();
-    method @NonNull public android.net.wifi.WifiMigration.SettingsMigrationData.Builder setP2pDeviceName(@Nullable String);
-    method @NonNull public android.net.wifi.WifiMigration.SettingsMigrationData.Builder setP2pFactoryResetPending(boolean);
-    method @NonNull public android.net.wifi.WifiMigration.SettingsMigrationData.Builder setScanAlwaysAvailable(boolean);
-    method @NonNull public android.net.wifi.WifiMigration.SettingsMigrationData.Builder setScanThrottleEnabled(boolean);
-    method @NonNull public android.net.wifi.WifiMigration.SettingsMigrationData.Builder setSoftApTimeoutEnabled(boolean);
-    method @NonNull public android.net.wifi.WifiMigration.SettingsMigrationData.Builder setVerboseLoggingEnabled(boolean);
-    method @NonNull public android.net.wifi.WifiMigration.SettingsMigrationData.Builder setWakeUpEnabled(boolean);
-  }
-
-}
-
-package android.net.wifi.nl80211 {
-
-  public final class DeviceWiphyCapabilities implements android.os.Parcelable {
-    ctor public DeviceWiphyCapabilities();
-    method public int describeContents();
-    method public int getMaxNumberRxSpatialStreams();
-    method public int getMaxNumberTxSpatialStreams();
-    method public boolean isChannelWidthSupported(int);
-    method public boolean isWifiStandardSupported(int);
-    method public void setWifiStandardSupport(int, boolean);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.nl80211.DeviceWiphyCapabilities> CREATOR;
-  }
-
-  public final class NativeScanResult implements android.os.Parcelable {
-    ctor public NativeScanResult();
-    method public int describeContents();
-    method @Nullable public android.net.MacAddress getBssid();
-    method public int getCapabilities();
-    method public int getFrequencyMhz();
-    method @NonNull public byte[] getInformationElements();
-    method @NonNull public java.util.List<android.net.wifi.nl80211.RadioChainInfo> getRadioChainInfos();
-    method public int getSignalMbm();
-    method @NonNull public byte[] getSsid();
-    method public long getTsf();
-    method public boolean isAssociated();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field public static final int BSS_CAPABILITY_APSD = 2048; // 0x800
-    field public static final int BSS_CAPABILITY_CF_POLLABLE = 4; // 0x4
-    field public static final int BSS_CAPABILITY_CF_POLL_REQUEST = 8; // 0x8
-    field public static final int BSS_CAPABILITY_CHANNEL_AGILITY = 128; // 0x80
-    field public static final int BSS_CAPABILITY_DELAYED_BLOCK_ACK = 16384; // 0x4000
-    field public static final int BSS_CAPABILITY_DSSS_OFDM = 8192; // 0x2000
-    field public static final int BSS_CAPABILITY_ESS = 1; // 0x1
-    field public static final int BSS_CAPABILITY_IBSS = 2; // 0x2
-    field public static final int BSS_CAPABILITY_IMMEDIATE_BLOCK_ACK = 32768; // 0x8000
-    field public static final int BSS_CAPABILITY_PBCC = 64; // 0x40
-    field public static final int BSS_CAPABILITY_PRIVACY = 16; // 0x10
-    field public static final int BSS_CAPABILITY_QOS = 512; // 0x200
-    field public static final int BSS_CAPABILITY_RADIO_MANAGEMENT = 4096; // 0x1000
-    field public static final int BSS_CAPABILITY_SHORT_PREAMBLE = 32; // 0x20
-    field public static final int BSS_CAPABILITY_SHORT_SLOT_TIME = 1024; // 0x400
-    field public static final int BSS_CAPABILITY_SPECTRUM_MANAGEMENT = 256; // 0x100
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.nl80211.NativeScanResult> CREATOR;
-  }
-
-  public final class NativeWifiClient implements android.os.Parcelable {
-    ctor public NativeWifiClient(@Nullable android.net.MacAddress);
-    method public int describeContents();
-    method @Nullable public android.net.MacAddress getMacAddress();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.nl80211.NativeWifiClient> CREATOR;
-  }
-
-  public final class PnoNetwork implements android.os.Parcelable {
-    ctor public PnoNetwork();
-    method public int describeContents();
-    method @NonNull public int[] getFrequenciesMhz();
-    method @NonNull public byte[] getSsid();
-    method public boolean isHidden();
-    method public void setFrequenciesMhz(@NonNull int[]);
-    method public void setHidden(boolean);
-    method public void setSsid(@NonNull byte[]);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.nl80211.PnoNetwork> CREATOR;
-  }
-
-  public final class PnoSettings implements android.os.Parcelable {
-    ctor public PnoSettings();
-    method public int describeContents();
-    method public long getIntervalMillis();
-    method public int getMin2gRssiDbm();
-    method public int getMin5gRssiDbm();
-    method public int getMin6gRssiDbm();
-    method @NonNull public java.util.List<android.net.wifi.nl80211.PnoNetwork> getPnoNetworks();
-    method public void setIntervalMillis(long);
-    method public void setMin2gRssiDbm(int);
-    method public void setMin5gRssiDbm(int);
-    method public void setMin6gRssiDbm(int);
-    method public void setPnoNetworks(@NonNull java.util.List<android.net.wifi.nl80211.PnoNetwork>);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.nl80211.PnoSettings> CREATOR;
-  }
-
-  public final class RadioChainInfo implements android.os.Parcelable {
-    ctor public RadioChainInfo(int, int);
-    method public int describeContents();
-    method public int getChainId();
-    method public int getLevelDbm();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.nl80211.RadioChainInfo> CREATOR;
-  }
-
-  public class WifiNl80211Manager {
-    method public void abortScan(@NonNull String);
-    method public void enableVerboseLogging(boolean);
-    method @NonNull public int[] getChannelsMhzForBand(int);
-    method @Nullable public android.net.wifi.nl80211.DeviceWiphyCapabilities getDeviceWiphyCapabilities(@NonNull String);
-    method @NonNull public java.util.List<android.net.wifi.nl80211.NativeScanResult> getScanResults(@NonNull String, int);
-    method @Nullable public android.net.wifi.nl80211.WifiNl80211Manager.TxPacketCounters getTxPacketCounters(@NonNull String);
-    method @Nullable public static android.net.wifi.nl80211.WifiNl80211Manager.OemSecurityType parseOemSecurityTypeElement(int, int, @NonNull byte[]);
-    method public boolean registerApCallback(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.nl80211.WifiNl80211Manager.SoftApCallback);
-    method public void sendMgmtFrame(@NonNull String, @NonNull byte[], int, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.nl80211.WifiNl80211Manager.SendMgmtFrameCallback);
-    method public void setOnServiceDeadCallback(@NonNull Runnable);
-    method public boolean setupInterfaceForClientMode(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.nl80211.WifiNl80211Manager.ScanEventCallback, @NonNull android.net.wifi.nl80211.WifiNl80211Manager.ScanEventCallback);
-    method public boolean setupInterfaceForSoftApMode(@NonNull String);
-    method @Nullable public android.net.wifi.nl80211.WifiNl80211Manager.SignalPollResult signalPoll(@NonNull String);
-    method public boolean startPnoScan(@NonNull String, @NonNull android.net.wifi.nl80211.PnoSettings, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.nl80211.WifiNl80211Manager.PnoScanRequestCallback);
-    method public boolean startScan(@NonNull String, int, @Nullable java.util.Set<java.lang.Integer>, @Nullable java.util.List<byte[]>);
-    method public boolean stopPnoScan(@NonNull String);
-    method public boolean tearDownClientInterface(@NonNull String);
-    method public boolean tearDownInterfaces();
-    method public boolean tearDownSoftApInterface(@NonNull String);
-    field public static final int SCAN_TYPE_PNO_SCAN = 1; // 0x1
-    field public static final int SCAN_TYPE_SINGLE_SCAN = 0; // 0x0
-    field public static final int SEND_MGMT_FRAME_ERROR_ALREADY_STARTED = 5; // 0x5
-    field public static final int SEND_MGMT_FRAME_ERROR_MCS_UNSUPPORTED = 2; // 0x2
-    field public static final int SEND_MGMT_FRAME_ERROR_NO_ACK = 3; // 0x3
-    field public static final int SEND_MGMT_FRAME_ERROR_TIMEOUT = 4; // 0x4
-    field public static final int SEND_MGMT_FRAME_ERROR_UNKNOWN = 1; // 0x1
-  }
-
-  public static class WifiNl80211Manager.OemSecurityType {
-    ctor public WifiNl80211Manager.OemSecurityType(int, @NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.lang.Integer>, int);
-    field public final int groupCipher;
-    field @NonNull public final java.util.List<java.lang.Integer> keyManagement;
-    field @NonNull public final java.util.List<java.lang.Integer> pairwiseCipher;
-    field public final int protocol;
-  }
-
-  public static interface WifiNl80211Manager.PnoScanRequestCallback {
-    method public void onPnoRequestFailed();
-    method public void onPnoRequestSucceeded();
-  }
-
-  public static interface WifiNl80211Manager.ScanEventCallback {
-    method public void onScanFailed();
-    method public void onScanResultReady();
-  }
-
-  public static interface WifiNl80211Manager.SendMgmtFrameCallback {
-    method public void onAck(int);
-    method public void onFailure(int);
-  }
-
-  public static class WifiNl80211Manager.SignalPollResult {
-    field public final int associationFrequencyMHz;
-    field public final int currentRssiDbm;
-    field public final int rxBitrateMbps;
-    field public final int txBitrateMbps;
-  }
-
-  public static interface WifiNl80211Manager.SoftApCallback {
-    method public void onConnectedClientsChanged(@NonNull android.net.wifi.nl80211.NativeWifiClient, boolean);
-    method public void onFailure();
-    method public void onSoftApChannelSwitched(int, int);
-  }
-
-  public static class WifiNl80211Manager.TxPacketCounters {
-    field public final int txPacketFailed;
-    field public final int txPacketSucceeded;
-  }
-
-}
-
-package android.nfc {
-
-  public final class NfcAdapter {
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean addNfcUnlockHandler(android.nfc.NfcAdapter.NfcUnlockHandler, String[]);
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean disable();
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean disable(boolean);
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean disableNdefPush();
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean enable();
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean enableNdefPush();
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean enableSecureNfc(boolean);
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean removeNfcUnlockHandler(android.nfc.NfcAdapter.NfcUnlockHandler);
-    method public void setNdefPushMessage(android.nfc.NdefMessage, android.app.Activity, int);
-    field public static final int FLAG_NDEF_PUSH_NO_CONFIRM = 1; // 0x1
-  }
-
-  public static interface NfcAdapter.NfcUnlockHandler {
-    method public boolean onUnlockAttempted(android.nfc.Tag);
-  }
-
-}
-
-package android.os {
-
-  public class BatteryManager {
-    method @RequiresPermission(android.Manifest.permission.POWER_SAVER) public boolean setChargingStateUpdateDelayMillis(int);
-    field public static final String EXTRA_EVENTS = "android.os.extra.EVENTS";
-    field public static final String EXTRA_EVENT_TIMESTAMP = "android.os.extra.EVENT_TIMESTAMP";
-  }
-
-  public final class BatterySaverPolicyConfig implements android.os.Parcelable {
-    method public int describeContents();
-    method public float getAdjustBrightnessFactor();
-    method public boolean getAdvertiseIsEnabled();
-    method public boolean getDeferFullBackup();
-    method public boolean getDeferKeyValueBackup();
-    method @NonNull public java.util.Map<java.lang.String,java.lang.String> getDeviceSpecificSettings();
-    method public boolean getDisableAnimation();
-    method public boolean getDisableAod();
-    method public boolean getDisableLaunchBoost();
-    method public boolean getDisableOptionalSensors();
-    method public boolean getDisableSoundTrigger();
-    method public boolean getDisableVibration();
-    method public boolean getEnableAdjustBrightness();
-    method public boolean getEnableDataSaver();
-    method public boolean getEnableFirewall();
-    method public boolean getEnableNightMode();
-    method public boolean getEnableQuickDoze();
-    method public boolean getForceAllAppsStandby();
-    method public boolean getForceBackgroundCheck();
-    method public int getLocationMode();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.BatterySaverPolicyConfig> CREATOR;
-  }
-
-  public static final class BatterySaverPolicyConfig.Builder {
-    ctor public BatterySaverPolicyConfig.Builder();
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder addDeviceSpecificSetting(@NonNull String, @NonNull String);
-    method @NonNull public android.os.BatterySaverPolicyConfig build();
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setAdjustBrightnessFactor(float);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setAdvertiseIsEnabled(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setDeferFullBackup(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setDeferKeyValueBackup(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setDisableAnimation(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setDisableAod(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setDisableLaunchBoost(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setDisableOptionalSensors(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setDisableSoundTrigger(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setDisableVibration(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setEnableAdjustBrightness(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setEnableDataSaver(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setEnableFirewall(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setEnableNightMode(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setEnableQuickDoze(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setForceAllAppsStandby(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setForceBackgroundCheck(boolean);
-    method @NonNull public android.os.BatterySaverPolicyConfig.Builder setLocationMode(int);
-  }
-
-  public final class BatteryStatsManager {
-    method @NonNull @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public android.os.connectivity.CellularBatteryStats getCellularBatteryStats();
-    method @NonNull @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public android.os.connectivity.WifiBatteryStats getWifiBatteryStats();
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportFullWifiLockAcquiredFromSource(@NonNull android.os.WorkSource);
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportFullWifiLockReleasedFromSource(@NonNull android.os.WorkSource);
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiBatchedScanStartedFromSource(@NonNull android.os.WorkSource, @IntRange(from=0) int);
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiBatchedScanStoppedFromSource(@NonNull android.os.WorkSource);
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiMulticastDisabled(@NonNull android.os.WorkSource);
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiMulticastEnabled(@NonNull android.os.WorkSource);
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiOff();
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiOn();
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiRssiChanged(@IntRange(from=0xffffff81, to=0) int);
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiScanStartedFromSource(@NonNull android.os.WorkSource);
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiScanStoppedFromSource(@NonNull android.os.WorkSource);
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiState(int, @Nullable String);
-    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiSupplicantStateChanged(int, boolean);
-    field public static final int WIFI_STATE_OFF = 0; // 0x0
-    field public static final int WIFI_STATE_OFF_SCANNING = 1; // 0x1
-    field public static final int WIFI_STATE_ON_CONNECTED_P2P = 5; // 0x5
-    field public static final int WIFI_STATE_ON_CONNECTED_STA = 4; // 0x4
-    field public static final int WIFI_STATE_ON_CONNECTED_STA_P2P = 6; // 0x6
-    field public static final int WIFI_STATE_ON_DISCONNECTED = 3; // 0x3
-    field public static final int WIFI_STATE_ON_NO_NETWORKS = 2; // 0x2
-    field public static final int WIFI_STATE_SOFT_AP = 7; // 0x7
-    field public static final int WIFI_SUPPL_STATE_ASSOCIATED = 7; // 0x7
-    field public static final int WIFI_SUPPL_STATE_ASSOCIATING = 6; // 0x6
-    field public static final int WIFI_SUPPL_STATE_AUTHENTICATING = 5; // 0x5
-    field public static final int WIFI_SUPPL_STATE_COMPLETED = 10; // 0xa
-    field public static final int WIFI_SUPPL_STATE_DISCONNECTED = 1; // 0x1
-    field public static final int WIFI_SUPPL_STATE_DORMANT = 11; // 0xb
-    field public static final int WIFI_SUPPL_STATE_FOUR_WAY_HANDSHAKE = 8; // 0x8
-    field public static final int WIFI_SUPPL_STATE_GROUP_HANDSHAKE = 9; // 0x9
-    field public static final int WIFI_SUPPL_STATE_INACTIVE = 3; // 0x3
-    field public static final int WIFI_SUPPL_STATE_INTERFACE_DISABLED = 2; // 0x2
-    field public static final int WIFI_SUPPL_STATE_INVALID = 0; // 0x0
-    field public static final int WIFI_SUPPL_STATE_SCANNING = 4; // 0x4
-    field public static final int WIFI_SUPPL_STATE_UNINITIALIZED = 12; // 0xc
-  }
-
-  public class Binder implements android.os.IBinder {
-    method public int handleShellCommand(@NonNull android.os.ParcelFileDescriptor, @NonNull android.os.ParcelFileDescriptor, @NonNull android.os.ParcelFileDescriptor, @NonNull String[]);
-    method public static void setProxyTransactListener(@Nullable android.os.Binder.ProxyTransactListener);
-  }
-
-  public static interface Binder.ProxyTransactListener {
-    method public void onTransactEnded(@Nullable Object);
-    method @Nullable public Object onTransactStarted(@NonNull android.os.IBinder, int);
-  }
-
-  public final class BugreportManager {
-    method @RequiresPermission(android.Manifest.permission.DUMP) public void cancelBugreport();
-    method @RequiresPermission(android.Manifest.permission.DUMP) public void requestBugreport(@NonNull android.os.BugreportParams, @Nullable CharSequence, @Nullable CharSequence);
-    method @RequiresPermission(android.Manifest.permission.DUMP) public void startBugreport(@NonNull android.os.ParcelFileDescriptor, @Nullable android.os.ParcelFileDescriptor, @NonNull android.os.BugreportParams, @NonNull java.util.concurrent.Executor, @NonNull android.os.BugreportManager.BugreportCallback);
-  }
-
-  public abstract static class BugreportManager.BugreportCallback {
-    ctor public BugreportManager.BugreportCallback();
-    method public void onError(int);
-    method public void onFinished();
-    method public void onProgress(@FloatRange(from=0.0f, to=100.0f) float);
-    field public static final int BUGREPORT_ERROR_ANOTHER_REPORT_IN_PROGRESS = 5; // 0x5
-    field public static final int BUGREPORT_ERROR_INVALID_INPUT = 1; // 0x1
-    field public static final int BUGREPORT_ERROR_RUNTIME = 2; // 0x2
-    field public static final int BUGREPORT_ERROR_USER_CONSENT_TIMED_OUT = 4; // 0x4
-    field public static final int BUGREPORT_ERROR_USER_DENIED_CONSENT = 3; // 0x3
-  }
-
-  public final class BugreportParams {
-    ctor public BugreportParams(int);
-    method public int getMode();
-    field public static final int BUGREPORT_MODE_FULL = 0; // 0x0
-    field public static final int BUGREPORT_MODE_INTERACTIVE = 1; // 0x1
-    field public static final int BUGREPORT_MODE_REMOTE = 2; // 0x2
-    field public static final int BUGREPORT_MODE_TELEPHONY = 4; // 0x4
-    field public static final int BUGREPORT_MODE_WEAR = 3; // 0x3
-    field public static final int BUGREPORT_MODE_WIFI = 5; // 0x5
-  }
-
-  public static class Build.VERSION {
-    field @NonNull public static final String PREVIEW_SDK_FINGERPRINT;
-  }
-
-  public final class ConfigUpdate {
-    field public static final String ACTION_UPDATE_CARRIER_ID_DB = "android.os.action.UPDATE_CARRIER_ID_DB";
-    field public static final String ACTION_UPDATE_CARRIER_PROVISIONING_URLS = "android.intent.action.UPDATE_CARRIER_PROVISIONING_URLS";
-    field public static final String ACTION_UPDATE_CONVERSATION_ACTIONS = "android.intent.action.UPDATE_CONVERSATION_ACTIONS";
-    field public static final String ACTION_UPDATE_CT_LOGS = "android.intent.action.UPDATE_CT_LOGS";
-    field public static final String ACTION_UPDATE_EMERGENCY_NUMBER_DB = "android.os.action.UPDATE_EMERGENCY_NUMBER_DB";
-    field public static final String ACTION_UPDATE_INTENT_FIREWALL = "android.intent.action.UPDATE_INTENT_FIREWALL";
-    field public static final String ACTION_UPDATE_LANG_ID = "android.intent.action.UPDATE_LANG_ID";
-    field public static final String ACTION_UPDATE_NETWORK_WATCHLIST = "android.intent.action.UPDATE_NETWORK_WATCHLIST";
-    field public static final String ACTION_UPDATE_PINS = "android.intent.action.UPDATE_PINS";
-    field public static final String ACTION_UPDATE_SMART_SELECTION = "android.intent.action.UPDATE_SMART_SELECTION";
-    field public static final String ACTION_UPDATE_SMS_SHORT_CODES = "android.intent.action.UPDATE_SMS_SHORT_CODES";
-    field public static final String EXTRA_REQUIRED_HASH = "android.os.extra.REQUIRED_HASH";
-    field public static final String EXTRA_VERSION = "android.os.extra.VERSION";
-  }
-
-  public class Environment {
-    method @NonNull public static java.util.Collection<java.io.File> getInternalMediaDirectories();
-    method @NonNull public static java.io.File getOdmDirectory();
-    method @NonNull public static java.io.File getOemDirectory();
-    method @NonNull public static java.io.File getProductDirectory();
-    method @Deprecated @NonNull public static java.io.File getProductServicesDirectory();
-    method @NonNull public static java.io.File getSystemExtDirectory();
-    method @NonNull public static java.io.File getVendorDirectory();
-  }
-
-  public class HidlMemory implements java.io.Closeable {
-    ctor public HidlMemory(@NonNull String, @IntRange(from=0) long, @Nullable android.os.NativeHandle);
-    method public void close() throws java.io.IOException;
-    method @NonNull public android.os.HidlMemory dup() throws java.io.IOException;
-    method protected void finalize();
-    method @Nullable public android.os.NativeHandle getHandle();
-    method @NonNull public String getName();
-    method public long getSize();
-    method @Nullable public android.os.NativeHandle releaseHandle();
-  }
-
-  public class HidlSupport {
-    method public static boolean deepEquals(Object, Object);
-    method public static int deepHashCode(Object);
-    method public static int getPidIfSharable();
-    method public static boolean interfacesEqual(android.os.IHwInterface, Object);
-  }
-
-  public abstract class HwBinder implements android.os.IHwBinder {
-    ctor public HwBinder();
-    method public static final void configureRpcThreadpool(long, boolean);
-    method public static void enableInstrumentation();
-    method public static final android.os.IHwBinder getService(String, String) throws java.util.NoSuchElementException, android.os.RemoteException;
-    method public static final android.os.IHwBinder getService(String, String, boolean) throws java.util.NoSuchElementException, android.os.RemoteException;
-    method public static final void joinRpcThreadpool();
-    method public abstract void onTransact(int, android.os.HwParcel, android.os.HwParcel, int) throws android.os.RemoteException;
-    method public final void registerService(String) throws android.os.RemoteException;
-    method public final void transact(int, android.os.HwParcel, android.os.HwParcel, int) throws android.os.RemoteException;
-  }
-
-  public class HwBlob {
-    ctor public HwBlob(int);
-    method public final void copyToBoolArray(long, boolean[], int);
-    method public final void copyToDoubleArray(long, double[], int);
-    method public final void copyToFloatArray(long, float[], int);
-    method public final void copyToInt16Array(long, short[], int);
-    method public final void copyToInt32Array(long, int[], int);
-    method public final void copyToInt64Array(long, long[], int);
-    method public final void copyToInt8Array(long, byte[], int);
-    method public final boolean getBool(long);
-    method public final double getDouble(long);
-    method public final long getFieldHandle(long);
-    method public final float getFloat(long);
-    method public final short getInt16(long);
-    method public final int getInt32(long);
-    method public final long getInt64(long);
-    method public final byte getInt8(long);
-    method public final String getString(long);
-    method public final long handle();
-    method public final void putBlob(long, android.os.HwBlob);
-    method public final void putBool(long, boolean);
-    method public final void putBoolArray(long, boolean[]);
-    method public final void putDouble(long, double);
-    method public final void putDoubleArray(long, double[]);
-    method public final void putFloat(long, float);
-    method public final void putFloatArray(long, float[]);
-    method public final void putHidlMemory(long, @NonNull android.os.HidlMemory);
-    method public final void putInt16(long, short);
-    method public final void putInt16Array(long, short[]);
-    method public final void putInt32(long, int);
-    method public final void putInt32Array(long, int[]);
-    method public final void putInt64(long, long);
-    method public final void putInt64Array(long, long[]);
-    method public final void putInt8(long, byte);
-    method public final void putInt8Array(long, byte[]);
-    method public final void putNativeHandle(long, @Nullable android.os.NativeHandle);
-    method public final void putString(long, String);
-    method public static Boolean[] wrapArray(@NonNull boolean[]);
-    method public static Long[] wrapArray(@NonNull long[]);
-    method public static Byte[] wrapArray(@NonNull byte[]);
-    method public static Short[] wrapArray(@NonNull short[]);
-    method public static Integer[] wrapArray(@NonNull int[]);
-    method public static Float[] wrapArray(@NonNull float[]);
-    method public static Double[] wrapArray(@NonNull double[]);
-  }
-
-  public class HwParcel {
-    ctor public HwParcel();
-    method public final void enforceInterface(String);
-    method public final boolean readBool();
-    method public final java.util.ArrayList<java.lang.Boolean> readBoolVector();
-    method public final android.os.HwBlob readBuffer(long);
-    method public final double readDouble();
-    method public final java.util.ArrayList<java.lang.Double> readDoubleVector();
-    method public final android.os.HwBlob readEmbeddedBuffer(long, long, long, boolean);
-    method @NonNull @Nullable public final android.os.HidlMemory readEmbeddedHidlMemory(long, long, long);
-    method @Nullable public final android.os.NativeHandle readEmbeddedNativeHandle(long, long);
-    method public final float readFloat();
-    method public final java.util.ArrayList<java.lang.Float> readFloatVector();
-    method @NonNull public final android.os.HidlMemory readHidlMemory();
-    method public final short readInt16();
-    method public final java.util.ArrayList<java.lang.Short> readInt16Vector();
-    method public final int readInt32();
-    method public final java.util.ArrayList<java.lang.Integer> readInt32Vector();
-    method public final long readInt64();
-    method public final java.util.ArrayList<java.lang.Long> readInt64Vector();
-    method public final byte readInt8();
-    method public final java.util.ArrayList<java.lang.Byte> readInt8Vector();
-    method @Nullable public final android.os.NativeHandle readNativeHandle();
-    method @NonNull public final java.util.ArrayList<android.os.NativeHandle> readNativeHandleVector();
-    method public final String readString();
-    method public final java.util.ArrayList<java.lang.String> readStringVector();
-    method public final android.os.IHwBinder readStrongBinder();
-    method public final void release();
-    method public final void releaseTemporaryStorage();
-    method public final void send();
-    method public final void verifySuccess();
-    method public final void writeBool(boolean);
-    method public final void writeBoolVector(java.util.ArrayList<java.lang.Boolean>);
-    method public final void writeBuffer(android.os.HwBlob);
-    method public final void writeDouble(double);
-    method public final void writeDoubleVector(java.util.ArrayList<java.lang.Double>);
-    method public final void writeFloat(float);
-    method public final void writeFloatVector(java.util.ArrayList<java.lang.Float>);
-    method public final void writeHidlMemory(@NonNull android.os.HidlMemory);
-    method public final void writeInt16(short);
-    method public final void writeInt16Vector(java.util.ArrayList<java.lang.Short>);
-    method public final void writeInt32(int);
-    method public final void writeInt32Vector(java.util.ArrayList<java.lang.Integer>);
-    method public final void writeInt64(long);
-    method public final void writeInt64Vector(java.util.ArrayList<java.lang.Long>);
-    method public final void writeInt8(byte);
-    method public final void writeInt8Vector(java.util.ArrayList<java.lang.Byte>);
-    method public final void writeInterfaceToken(String);
-    method public final void writeNativeHandle(@Nullable android.os.NativeHandle);
-    method public final void writeNativeHandleVector(@NonNull java.util.ArrayList<android.os.NativeHandle>);
-    method public final void writeStatus(int);
-    method public final void writeString(String);
-    method public final void writeStringVector(java.util.ArrayList<java.lang.String>);
-    method public final void writeStrongBinder(android.os.IHwBinder);
-    field public static final int STATUS_SUCCESS = 0; // 0x0
-  }
-
-  public interface IHwBinder {
-    method public boolean linkToDeath(android.os.IHwBinder.DeathRecipient, long);
-    method public android.os.IHwInterface queryLocalInterface(String);
-    method public void transact(int, android.os.HwParcel, android.os.HwParcel, int) throws android.os.RemoteException;
-    method public boolean unlinkToDeath(android.os.IHwBinder.DeathRecipient);
-  }
-
-  public static interface IHwBinder.DeathRecipient {
-    method public void serviceDied(long);
-  }
-
-  public interface IHwInterface {
-    method public android.os.IHwBinder asBinder();
-  }
-
-  public class IncidentManager {
-    method @RequiresPermission(android.Manifest.permission.APPROVE_INCIDENT_REPORTS) public void approveReport(android.net.Uri);
-    method @RequiresPermission("android.permission.REQUEST_INCIDENT_REPORT_APPROVAL") public void cancelAuthorization(android.os.IncidentManager.AuthListener);
-    method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void deleteIncidentReports(android.net.Uri);
-    method @RequiresPermission(android.Manifest.permission.APPROVE_INCIDENT_REPORTS) public void denyReport(android.net.Uri);
-    method @Nullable @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public android.os.IncidentManager.IncidentReport getIncidentReport(android.net.Uri);
-    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public java.util.List<android.net.Uri> getIncidentReportList(String);
-    method @RequiresPermission(android.Manifest.permission.APPROVE_INCIDENT_REPORTS) public java.util.List<android.os.IncidentManager.PendingReport> getPendingReports();
-    method public void registerSection(int, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.os.IncidentManager.DumpCallback);
-    method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void reportIncident(android.os.IncidentReportArgs);
-    method @RequiresPermission("android.permission.REQUEST_INCIDENT_REPORT_APPROVAL") public void requestAuthorization(int, String, int, android.os.IncidentManager.AuthListener);
-    method public void unregisterSection(int);
-    field public static final int FLAG_CONFIRMATION_DIALOG = 1; // 0x1
-    field public static final int PRIVACY_POLICY_AUTO = 200; // 0xc8
-    field public static final int PRIVACY_POLICY_EXPLICIT = 100; // 0x64
-    field public static final int PRIVACY_POLICY_LOCAL = 0; // 0x0
-  }
-
-  public static class IncidentManager.AuthListener {
-    ctor public IncidentManager.AuthListener();
-    method public void onReportApproved();
-    method public void onReportDenied();
-  }
-
-  public static class IncidentManager.DumpCallback {
-    ctor public IncidentManager.DumpCallback();
-    method public void onDumpSection(int, @NonNull java.io.OutputStream);
-  }
-
-  public static class IncidentManager.IncidentReport implements java.io.Closeable android.os.Parcelable {
-    ctor public IncidentManager.IncidentReport(android.os.Parcel);
-    method public void close();
-    method public int describeContents();
-    method public java.io.InputStream getInputStream() throws java.io.IOException;
-    method public long getPrivacyPolicy();
-    method public long getTimestamp();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.IncidentManager.IncidentReport> CREATOR;
-  }
-
-  public static class IncidentManager.PendingReport {
-    ctor public IncidentManager.PendingReport(@NonNull android.net.Uri);
-    method public int getFlags();
-    method @NonNull public String getRequestingPackage();
-    method public long getTimestamp();
-    method @NonNull public android.net.Uri getUri();
-  }
-
-  public final class IncidentReportArgs implements android.os.Parcelable {
-    ctor public IncidentReportArgs();
-    ctor public IncidentReportArgs(android.os.Parcel);
-    method public void addHeader(byte[]);
-    method public void addSection(int);
-    method public boolean containsSection(int);
-    method public int describeContents();
-    method public boolean isAll();
-    method public void readFromParcel(android.os.Parcel);
-    method public int sectionCount();
-    method public void setAll(boolean);
-    method public void setPrivacyPolicy(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.IncidentReportArgs> CREATOR;
-  }
-
-  public final class NativeHandle implements java.io.Closeable {
-    ctor public NativeHandle();
-    ctor public NativeHandle(@NonNull java.io.FileDescriptor, boolean);
-    ctor public NativeHandle(@NonNull java.io.FileDescriptor[], @NonNull int[], boolean);
-    method public void close() throws java.io.IOException;
-    method @NonNull public android.os.NativeHandle dup() throws java.io.IOException;
-    method @NonNull public java.io.FileDescriptor getFileDescriptor();
-    method @NonNull public java.io.FileDescriptor[] getFileDescriptors();
-    method @NonNull public int[] getInts();
-    method public boolean hasSingleFileDescriptor();
-  }
-
-  public final class PowerManager {
-    method @RequiresPermission(allOf={android.Manifest.permission.READ_DREAM_STATE, android.Manifest.permission.WRITE_DREAM_STATE}) public void dream(long);
-    method @RequiresPermission(android.Manifest.permission.DEVICE_POWER) public boolean forceSuspend();
-    method @RequiresPermission(android.Manifest.permission.POWER_SAVER) public int getPowerSaveModeTrigger();
-    method @RequiresPermission(android.Manifest.permission.READ_DREAM_STATE) public boolean isAmbientDisplayAvailable();
-    method @RequiresPermission(android.Manifest.permission.READ_DREAM_STATE) public boolean isAmbientDisplaySuppressed();
-    method @RequiresPermission(android.Manifest.permission.READ_DREAM_STATE) public boolean isAmbientDisplaySuppressedForToken(@NonNull String);
-    method @RequiresPermission(anyOf={android.Manifest.permission.DEVICE_POWER, android.Manifest.permission.POWER_SAVER}) public boolean setAdaptivePowerSaveEnabled(boolean);
-    method @RequiresPermission(anyOf={android.Manifest.permission.DEVICE_POWER, android.Manifest.permission.POWER_SAVER}) public boolean setAdaptivePowerSavePolicy(@NonNull android.os.BatterySaverPolicyConfig);
-    method @RequiresPermission(android.Manifest.permission.POWER_SAVER) public boolean setDynamicPowerSaveHint(boolean, int);
-    method @RequiresPermission(anyOf={android.Manifest.permission.DEVICE_POWER, android.Manifest.permission.POWER_SAVER}) public boolean setPowerSaveModeEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.WRITE_DREAM_STATE) public void suppressAmbientDisplay(@NonNull String, boolean);
-    method @RequiresPermission(anyOf={android.Manifest.permission.DEVICE_POWER, android.Manifest.permission.USER_ACTIVITY}) public void userActivity(long, int, int);
-    field public static final int POWER_SAVE_MODE_TRIGGER_DYNAMIC = 1; // 0x1
-    field public static final int POWER_SAVE_MODE_TRIGGER_PERCENTAGE = 0; // 0x0
-    field public static final String REBOOT_USERSPACE = "userspace";
-    field public static final int USER_ACTIVITY_EVENT_ACCESSIBILITY = 3; // 0x3
-    field public static final int USER_ACTIVITY_EVENT_BUTTON = 1; // 0x1
-    field public static final int USER_ACTIVITY_EVENT_OTHER = 0; // 0x0
-    field public static final int USER_ACTIVITY_EVENT_TOUCH = 2; // 0x2
-    field public static final int USER_ACTIVITY_FLAG_INDIRECT = 2; // 0x2
-    field public static final int USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS = 1; // 0x1
-  }
-
-  public class PowerWhitelistManager {
-    method @RequiresPermission(android.Manifest.permission.DEVICE_POWER) public void addToWhitelist(@NonNull String);
-    method @RequiresPermission(android.Manifest.permission.DEVICE_POWER) public void addToWhitelist(@NonNull java.util.List<java.lang.String>);
-    method @RequiresPermission(android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST) public void whitelistAppTemporarily(@NonNull String, long);
-    method @RequiresPermission(android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST) public long whitelistAppTemporarilyForEvent(@NonNull String, int, @NonNull String);
-    field public static final int EVENT_MMS = 2; // 0x2
-    field public static final int EVENT_SMS = 1; // 0x1
-    field public static final int EVENT_UNSPECIFIED = 0; // 0x0
-  }
-
-  public class RecoverySystem {
-    method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void cancelScheduledUpdate(android.content.Context) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void clearPrepareForUnattendedUpdate(@NonNull android.content.Context) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void installPackage(android.content.Context, java.io.File, boolean) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void prepareForUnattendedUpdate(@NonNull android.content.Context, @NonNull String, @Nullable android.content.IntentSender) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void processPackage(android.content.Context, java.io.File, android.os.RecoverySystem.ProgressListener, android.os.Handler) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void processPackage(android.content.Context, java.io.File, android.os.RecoverySystem.ProgressListener) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void rebootAndApply(@NonNull android.content.Context, @NonNull String, @NonNull String) throws java.io.IOException;
-    method @RequiresPermission(allOf={android.Manifest.permission.RECOVERY, android.Manifest.permission.REBOOT}) public static void rebootWipeAb(android.content.Context, java.io.File, String) throws java.io.IOException;
-    method @RequiresPermission(android.Manifest.permission.RECOVERY) public static void scheduleUpdateOnBoot(android.content.Context, java.io.File) throws java.io.IOException;
-    method public static boolean verifyPackageCompatibility(java.io.File) throws java.io.IOException;
-  }
-
-  public final class RemoteCallback implements android.os.Parcelable {
-    ctor public RemoteCallback(android.os.RemoteCallback.OnResultListener);
-    ctor public RemoteCallback(@NonNull android.os.RemoteCallback.OnResultListener, @Nullable android.os.Handler);
-    method public int describeContents();
-    method public void sendResult(@Nullable android.os.Bundle);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.RemoteCallback> CREATOR;
-  }
-
-  public static interface RemoteCallback.OnResultListener {
-    method public void onResult(@Nullable android.os.Bundle);
-  }
-
-  public class ServiceSpecificException extends java.lang.RuntimeException {
-    ctor public ServiceSpecificException(int, @Nullable String);
-    ctor public ServiceSpecificException(int);
-    field public final int errorCode;
-  }
-
-  public class SystemConfigManager {
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_CARRIER_APP_INFO) public java.util.Set<java.lang.String> getDisabledUntilUsedPreinstalledCarrierApps();
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_CARRIER_APP_INFO) public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getDisabledUntilUsedPreinstalledCarrierAssociatedApps();
-  }
-
-  public class SystemProperties {
-    method @NonNull public static String get(@NonNull String);
-    method @NonNull public static String get(@NonNull String, @Nullable String);
-    method public static boolean getBoolean(@NonNull String, boolean);
-    method public static int getInt(@NonNull String, int);
-    method public static long getLong(@NonNull String, long);
-  }
-
-  public class SystemUpdateManager {
-    method @RequiresPermission(anyOf={android.Manifest.permission.READ_SYSTEM_UPDATE_INFO, android.Manifest.permission.RECOVERY}) public android.os.Bundle retrieveSystemUpdateInfo();
-    method @RequiresPermission(android.Manifest.permission.RECOVERY) public void updateSystemUpdateInfo(android.os.PersistableBundle);
-    field public static final String KEY_IS_SECURITY_UPDATE = "is_security_update";
-    field public static final String KEY_STATUS = "status";
-    field public static final String KEY_TARGET_BUILD_FINGERPRINT = "target_build_fingerprint";
-    field public static final String KEY_TARGET_SECURITY_PATCH_LEVEL = "target_security_patch_level";
-    field public static final String KEY_TITLE = "title";
-    field public static final int STATUS_IDLE = 1; // 0x1
-    field public static final int STATUS_IN_PROGRESS = 3; // 0x3
-    field public static final int STATUS_UNKNOWN = 0; // 0x0
-    field public static final int STATUS_WAITING_DOWNLOAD = 2; // 0x2
-    field public static final int STATUS_WAITING_INSTALL = 4; // 0x4
-    field public static final int STATUS_WAITING_REBOOT = 5; // 0x5
-  }
-
-  public class UpdateEngine {
-    ctor public UpdateEngine();
-    method @NonNull @WorkerThread public android.os.UpdateEngine.AllocateSpaceResult allocateSpace(@NonNull String, @NonNull String[]);
-    method public void applyPayload(String, long, long, String[]);
-    method public void applyPayload(@NonNull android.content.res.AssetFileDescriptor, @NonNull String[]);
-    method public boolean bind(android.os.UpdateEngineCallback, android.os.Handler);
-    method public boolean bind(android.os.UpdateEngineCallback);
-    method public void cancel();
-    method @WorkerThread public int cleanupAppliedPayload();
-    method public void resetStatus();
-    method public void resume();
-    method public void suspend();
-    method public boolean unbind();
-    method public boolean verifyPayloadMetadata(String);
-  }
-
-  public static final class UpdateEngine.AllocateSpaceResult {
-    method public int getErrorCode();
-    method public long getFreeSpaceRequired();
-  }
-
-  public static final class UpdateEngine.ErrorCodeConstants {
-    ctor public UpdateEngine.ErrorCodeConstants();
-    field public static final int DEVICE_CORRUPTED = 61; // 0x3d
-    field public static final int DOWNLOAD_PAYLOAD_VERIFICATION_ERROR = 12; // 0xc
-    field public static final int DOWNLOAD_TRANSFER_ERROR = 9; // 0x9
-    field public static final int ERROR = 1; // 0x1
-    field public static final int FILESYSTEM_COPIER_ERROR = 4; // 0x4
-    field public static final int INSTALL_DEVICE_OPEN_ERROR = 7; // 0x7
-    field public static final int KERNEL_DEVICE_OPEN_ERROR = 8; // 0x8
-    field public static final int NOT_ENOUGH_SPACE = 60; // 0x3c
-    field public static final int PAYLOAD_HASH_MISMATCH_ERROR = 10; // 0xa
-    field public static final int PAYLOAD_MISMATCHED_TYPE_ERROR = 6; // 0x6
-    field public static final int PAYLOAD_SIZE_MISMATCH_ERROR = 11; // 0xb
-    field public static final int PAYLOAD_TIMESTAMP_ERROR = 51; // 0x33
-    field public static final int POST_INSTALL_RUNNER_ERROR = 5; // 0x5
-    field public static final int SUCCESS = 0; // 0x0
-    field public static final int UPDATED_BUT_NOT_ACTIVE = 52; // 0x34
-  }
-
-  public static final class UpdateEngine.UpdateStatusConstants {
-    ctor public UpdateEngine.UpdateStatusConstants();
-    field public static final int ATTEMPTING_ROLLBACK = 8; // 0x8
-    field public static final int CHECKING_FOR_UPDATE = 1; // 0x1
-    field public static final int DISABLED = 9; // 0x9
-    field public static final int DOWNLOADING = 3; // 0x3
-    field public static final int FINALIZING = 5; // 0x5
-    field public static final int IDLE = 0; // 0x0
-    field public static final int REPORTING_ERROR_EVENT = 7; // 0x7
-    field public static final int UPDATED_NEED_REBOOT = 6; // 0x6
-    field public static final int UPDATE_AVAILABLE = 2; // 0x2
-    field public static final int VERIFYING = 4; // 0x4
-  }
-
-  public abstract class UpdateEngineCallback {
-    ctor public UpdateEngineCallback();
-    method public abstract void onPayloadApplicationComplete(int);
-    method public abstract void onStatusUpdate(int, float);
-  }
-
-  public final class UserHandle implements android.os.Parcelable {
-    method @NonNull public static String formatUid(int);
-    method public static int getAppId(int);
-    method public int getIdentifier();
-    method @Deprecated public boolean isOwner();
-    method public boolean isSystem();
-    method public static int myUserId();
-    method public static android.os.UserHandle of(int);
-    field @NonNull public static final android.os.UserHandle ALL;
-    field @NonNull public static final android.os.UserHandle CURRENT;
-    field @NonNull public static final android.os.UserHandle SYSTEM;
-  }
-
-  public class UserManager {
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public void clearSeedAccountData();
-    method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}) public android.os.UserHandle createProfile(@NonNull String, @NonNull String, @NonNull java.util.Set<java.lang.String>) throws android.os.UserManager.UserOperationException;
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}, conditional=true) public java.util.List<android.os.UserHandle> getAllProfiles();
-    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}, conditional=true) public java.util.List<android.os.UserHandle> getEnabledProfiles();
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public android.os.UserHandle getProfileParent(@NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public String getSeedAccountName();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public android.os.PersistableBundle getSeedAccountOptions();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public String getSeedAccountType();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public long[] getSerialNumbersOfUsers(boolean);
-    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public java.util.List<android.os.UserHandle> getUserHandles(boolean);
-    method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.GET_ACCOUNTS_PRIVILEGED}) public android.graphics.Bitmap getUserIcon();
-    method @Deprecated @android.os.UserManager.UserRestrictionSource @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public int getUserRestrictionSource(String, android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public java.util.List<android.os.UserManager.EnforcingUser> getUserRestrictionSources(String, android.os.UserHandle);
-    method @RequiresPermission(allOf={android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS}, conditional=true) public int getUserSwitchability();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean hasRestrictedProfiles();
-    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS}, conditional=true) public boolean hasUserRestrictionForUser(@NonNull String, @NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isAdminUser();
-    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}) public boolean isGuestUser();
-    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS}, conditional=true) public boolean isManagedProfile(int);
-    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}) public boolean isPrimaryUser();
-    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS}, conditional=true) public boolean isProfile();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isRestrictedProfile();
-    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}) public boolean isRestrictedProfile(@NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isSameProfileGroup(@NonNull android.os.UserHandle, @NonNull android.os.UserHandle);
-    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.GET_ACCOUNTS_PRIVILEGED}) public boolean isUserNameSet();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isUserOfType(@NonNull String);
-    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS}, conditional=true) public boolean isUserUnlockingOrUnlocked(@NonNull android.os.UserHandle);
-    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}) public boolean removeUser(@NonNull android.os.UserHandle);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public void setUserIcon(@NonNull android.graphics.Bitmap) throws android.os.UserManager.UserOperationException;
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public void setUserName(@Nullable String);
-    field public static final String ACTION_USER_RESTRICTIONS_CHANGED = "android.os.action.USER_RESTRICTIONS_CHANGED";
-    field @Deprecated public static final String DISALLOW_OEM_UNLOCK = "no_oem_unlock";
-    field public static final String DISALLOW_RUN_IN_BACKGROUND = "no_run_in_background";
-    field public static final int RESTRICTION_NOT_SET = 0; // 0x0
-    field public static final int RESTRICTION_SOURCE_DEVICE_OWNER = 2; // 0x2
-    field public static final int RESTRICTION_SOURCE_PROFILE_OWNER = 4; // 0x4
-    field public static final int RESTRICTION_SOURCE_SYSTEM = 1; // 0x1
-    field public static final int SWITCHABILITY_STATUS_OK = 0; // 0x0
-    field public static final int SWITCHABILITY_STATUS_SYSTEM_USER_LOCKED = 4; // 0x4
-    field public static final int SWITCHABILITY_STATUS_USER_IN_CALL = 1; // 0x1
-    field public static final int SWITCHABILITY_STATUS_USER_SWITCH_DISALLOWED = 2; // 0x2
-    field public static final String USER_TYPE_FULL_SECONDARY = "android.os.usertype.full.SECONDARY";
-    field public static final String USER_TYPE_FULL_SYSTEM = "android.os.usertype.full.SYSTEM";
-    field public static final String USER_TYPE_PROFILE_MANAGED = "android.os.usertype.profile.MANAGED";
-    field public static final String USER_TYPE_SYSTEM_HEADLESS = "android.os.usertype.system.HEADLESS";
-  }
-
-  public static final class UserManager.EnforcingUser implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.os.UserHandle getUserHandle();
-    method @android.os.UserManager.UserRestrictionSource public int getUserRestrictionSource();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.UserManager.EnforcingUser> CREATOR;
-  }
-
-  @IntDef(flag=true, prefix={"RESTRICTION_"}, value={android.os.UserManager.RESTRICTION_NOT_SET, android.os.UserManager.RESTRICTION_SOURCE_SYSTEM, android.os.UserManager.RESTRICTION_SOURCE_DEVICE_OWNER, android.os.UserManager.RESTRICTION_SOURCE_PROFILE_OWNER}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface UserManager.UserRestrictionSource {
-  }
-
-  public abstract class Vibrator {
-    method @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE) public void addVibratorStateListener(@NonNull android.os.Vibrator.OnVibratorStateChangedListener);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE) public void addVibratorStateListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.Vibrator.OnVibratorStateChangedListener);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE) public boolean isVibrating();
-    method @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE) public void removeVibratorStateListener(@NonNull android.os.Vibrator.OnVibratorStateChangedListener);
-  }
-
-  public static interface Vibrator.OnVibratorStateChangedListener {
-    method public void onVibratorStateChanged(boolean);
-  }
-
-  public class WorkSource implements android.os.Parcelable {
-    ctor public WorkSource(int);
-    ctor public WorkSource(int, @NonNull String);
-    method public android.os.WorkSource.WorkChain createWorkChain();
-    method @Nullable public String getPackageName(int);
-    method public int getUid(int);
-    method @Nullable public java.util.List<android.os.WorkSource.WorkChain> getWorkChains();
-    method public boolean isEmpty();
-    method public int size();
-    method @NonNull public android.os.WorkSource withoutNames();
-  }
-
-  public static final class WorkSource.WorkChain implements android.os.Parcelable {
-    ctor public WorkSource.WorkChain();
-    method public android.os.WorkSource.WorkChain addNode(int, @Nullable String);
-    method public int describeContents();
-    method public String getAttributionTag();
-    method public int getAttributionUid();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.WorkSource.WorkChain> CREATOR;
-  }
-
-}
-
-package android.os.connectivity {
-
-  public final class CellularBatteryStats implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getEnergyConsumedMaMillis();
-    method public long getIdleTimeMillis();
-    method public long getKernelActiveTimeMillis();
-    method public long getLoggingDurationMillis();
-    method public long getMonitoredRailChargeConsumedMaMillis();
-    method public long getNumBytesRx();
-    method public long getNumBytesTx();
-    method public long getNumPacketsRx();
-    method public long getNumPacketsTx();
-    method public long getRxTimeMillis();
-    method public long getSleepTimeMillis();
-    method @NonNull public long getTimeInRatMicros(int);
-    method @NonNull public long getTimeInRxSignalStrengthLevelMicros(@IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) int);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.connectivity.CellularBatteryStats> CREATOR;
-  }
-
-  public final class WifiActivityEnergyInfo implements android.os.Parcelable {
-    ctor public WifiActivityEnergyInfo(long, int, @IntRange(from=0) long, @IntRange(from=0) long, @IntRange(from=0) long, @IntRange(from=0) long);
-    method public int describeContents();
-    method @IntRange(from=0) public long getControllerEnergyUsedMicroJoules();
-    method @IntRange(from=0) public long getControllerIdleDurationMillis();
-    method @IntRange(from=0) public long getControllerRxDurationMillis();
-    method @IntRange(from=0) public long getControllerScanDurationMillis();
-    method @IntRange(from=0) public long getControllerTxDurationMillis();
-    method public int getStackState();
-    method public long getTimeSinceBootMillis();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.connectivity.WifiActivityEnergyInfo> CREATOR;
-    field public static final int STACK_STATE_INVALID = 0; // 0x0
-    field public static final int STACK_STATE_STATE_ACTIVE = 1; // 0x1
-    field public static final int STACK_STATE_STATE_IDLE = 3; // 0x3
-    field public static final int STACK_STATE_STATE_SCANNING = 2; // 0x2
-  }
-
-  public final class WifiBatteryStats implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getAppScanRequestCount();
-    method public long getEnergyConsumedMaMillis();
-    method public long getIdleTimeMillis();
-    method public long getKernelActiveTimeMillis();
-    method public long getLoggingDurationMillis();
-    method public long getMonitoredRailChargeConsumedMaMillis();
-    method public long getNumBytesRx();
-    method public long getNumBytesTx();
-    method public long getNumPacketsRx();
-    method public long getNumPacketsTx();
-    method public long getRxTimeMillis();
-    method public long getScanTimeMillis();
-    method public long getSleepTimeMillis();
-    method public long getTxTimeMillis();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.connectivity.WifiBatteryStats> CREATOR;
-  }
-
-}
-
-package android.os.image {
-
-  public class DynamicSystemClient {
-    ctor public DynamicSystemClient(@NonNull android.content.Context);
-    method @RequiresPermission(android.Manifest.permission.INSTALL_DYNAMIC_SYSTEM) public void bind();
-    method public void setOnStatusChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.image.DynamicSystemClient.OnStatusChangedListener);
-    method public void setOnStatusChangedListener(@NonNull android.os.image.DynamicSystemClient.OnStatusChangedListener);
-    method @RequiresPermission(android.Manifest.permission.INSTALL_DYNAMIC_SYSTEM) public void start(@NonNull android.net.Uri, long);
-    method @RequiresPermission(android.Manifest.permission.INSTALL_DYNAMIC_SYSTEM) public void start(@NonNull android.net.Uri, long, long);
-    method @RequiresPermission(android.Manifest.permission.INSTALL_DYNAMIC_SYSTEM) public void unbind();
-    field public static final int CAUSE_ERROR_EXCEPTION = 6; // 0x6
-    field public static final int CAUSE_ERROR_INVALID_URL = 4; // 0x4
-    field public static final int CAUSE_ERROR_IO = 3; // 0x3
-    field public static final int CAUSE_ERROR_IPC = 5; // 0x5
-    field public static final int CAUSE_INSTALL_CANCELLED = 2; // 0x2
-    field public static final int CAUSE_INSTALL_COMPLETED = 1; // 0x1
-    field public static final int CAUSE_NOT_SPECIFIED = 0; // 0x0
-    field public static final int STATUS_IN_PROGRESS = 2; // 0x2
-    field public static final int STATUS_IN_USE = 4; // 0x4
-    field public static final int STATUS_NOT_STARTED = 1; // 0x1
-    field public static final int STATUS_READY = 3; // 0x3
-    field public static final int STATUS_UNKNOWN = 0; // 0x0
-  }
-
-  public static interface DynamicSystemClient.OnStatusChangedListener {
-    method public void onStatusChanged(int, int, long, @Nullable Throwable);
-  }
-
-}
-
-package android.os.storage {
-
-  public class StorageManager {
-    method @WorkerThread public void allocateBytes(@NonNull java.util.UUID, long, @RequiresPermission int) throws java.io.IOException;
-    method @WorkerThread public void allocateBytes(java.io.FileDescriptor, long, @RequiresPermission int) throws java.io.IOException;
-    method @WorkerThread public long getAllocatableBytes(@NonNull java.util.UUID, @RequiresPermission int) throws java.io.IOException;
-    method public static boolean hasIsolatedStorage();
-    method public void updateExternalStorageFileQuotaType(@NonNull java.io.File, int) throws java.io.IOException;
-    field @RequiresPermission(android.Manifest.permission.ALLOCATE_AGGRESSIVE) public static final int FLAG_ALLOCATE_AGGRESSIVE = 1; // 0x1
-    field public static final int QUOTA_TYPE_MEDIA_AUDIO = 2; // 0x2
-    field public static final int QUOTA_TYPE_MEDIA_IMAGE = 1; // 0x1
-    field public static final int QUOTA_TYPE_MEDIA_NONE = 0; // 0x0
-    field public static final int QUOTA_TYPE_MEDIA_VIDEO = 3; // 0x3
-  }
-
-  public final class StorageVolume implements android.os.Parcelable {
-    method @NonNull public String getId();
-  }
-
-}
-
-package android.permission {
-
-  public final class PermissionControllerManager {
-    method @RequiresPermission(anyOf={android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS, android.Manifest.permission.RESTORE_RUNTIME_PERMISSIONS}) public void applyStagedRuntimePermissionBackup(@NonNull String, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @RequiresPermission(android.Manifest.permission.GET_RUNTIME_PERMISSIONS) public void getRuntimePermissionBackup(@NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<byte[]>);
-    method @RequiresPermission(android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS) public void revokeRuntimePermissions(@NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>, boolean, int, @NonNull java.util.concurrent.Executor, @NonNull android.permission.PermissionControllerManager.OnRevokeRuntimePermissionsCallback);
-    method @RequiresPermission(anyOf={android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS, android.Manifest.permission.RESTORE_RUNTIME_PERMISSIONS}) public void stageAndApplyRuntimePermissionsBackup(@NonNull byte[], @NonNull android.os.UserHandle);
-    field public static final int COUNT_ONLY_WHEN_GRANTED = 1; // 0x1
-    field public static final int COUNT_WHEN_SYSTEM = 2; // 0x2
-    field public static final int REASON_INSTALLER_POLICY_VIOLATION = 2; // 0x2
-    field public static final int REASON_MALWARE = 1; // 0x1
-  }
-
-  public abstract static class PermissionControllerManager.OnRevokeRuntimePermissionsCallback {
-    ctor public PermissionControllerManager.OnRevokeRuntimePermissionsCallback();
-    method public abstract void onRevokeRuntimePermissions(@NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>);
-  }
-
-  public abstract class PermissionControllerService extends android.app.Service {
-    ctor public PermissionControllerService();
-    method @BinderThread public void onApplyStagedRuntimePermissionBackup(@NonNull String, @NonNull android.os.UserHandle, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @NonNull public final android.os.IBinder onBind(android.content.Intent);
-    method @BinderThread public abstract void onCountPermissionApps(@NonNull java.util.List<java.lang.String>, int, @NonNull java.util.function.IntConsumer);
-    method @BinderThread public abstract void onGetAppPermissions(@NonNull String, @NonNull java.util.function.Consumer<java.util.List<android.permission.RuntimePermissionPresentationInfo>>);
-    method @BinderThread public abstract void onGetPermissionUsages(boolean, long, @NonNull java.util.function.Consumer<java.util.List<android.permission.RuntimePermissionUsageInfo>>);
-    method @BinderThread public abstract void onGetRuntimePermissionsBackup(@NonNull android.os.UserHandle, @NonNull java.io.OutputStream, @NonNull Runnable);
-    method @BinderThread public abstract void onGrantOrUpgradeDefaultRuntimePermissions(@NonNull Runnable);
-    method @BinderThread public void onOneTimePermissionSessionTimeout(@NonNull String);
-    method @Deprecated @BinderThread public void onRestoreDelayedRuntimePermissionsBackup(@NonNull String, @NonNull android.os.UserHandle, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @Deprecated @BinderThread public void onRestoreRuntimePermissionsBackup(@NonNull android.os.UserHandle, @NonNull java.io.InputStream, @NonNull Runnable);
-    method @BinderThread public abstract void onRevokeRuntimePermission(@NonNull String, @NonNull String, @NonNull Runnable);
-    method @BinderThread public abstract void onRevokeRuntimePermissions(@NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>, boolean, int, @NonNull String, @NonNull java.util.function.Consumer<java.util.Map<java.lang.String,java.util.List<java.lang.String>>>);
-    method @BinderThread public abstract void onSetRuntimePermissionGrantStateByDeviceAdmin(@NonNull String, @NonNull String, @NonNull String, int, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @BinderThread public void onStageAndApplyRuntimePermissionsBackup(@NonNull android.os.UserHandle, @NonNull java.io.InputStream, @NonNull Runnable);
-    method @BinderThread public void onUpdateUserSensitivePermissionFlags(int, @NonNull java.util.concurrent.Executor, @NonNull Runnable);
-    method @BinderThread public void onUpdateUserSensitivePermissionFlags(int, @NonNull Runnable);
-    field public static final String SERVICE_INTERFACE = "android.permission.PermissionControllerService";
-  }
-
-  public final class PermissionManager {
-    method public int checkDeviceIdentifierAccess(@Nullable String, @Nullable String, @Nullable String, int, int);
-    method @NonNull @RequiresPermission(android.Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY) public java.util.Set<java.lang.String> getAutoRevokeExemptionGrantedPackages();
-    method @NonNull @RequiresPermission(android.Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY) public java.util.Set<java.lang.String> getAutoRevokeExemptionRequestedPackages();
-    method @IntRange(from=0) @RequiresPermission(anyOf={android.Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY, android.Manifest.permission.UPGRADE_RUNTIME_PERMISSIONS}) public int getRuntimePermissionsVersion();
-    method @NonNull public java.util.List<android.permission.PermissionManager.SplitPermissionInfo> getSplitPermissions();
-    method @RequiresPermission(anyOf={android.Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY, android.Manifest.permission.UPGRADE_RUNTIME_PERMISSIONS}) public void setRuntimePermissionsVersion(@IntRange(from=0) int);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS) public void startOneTimePermissionSession(@NonNull String, long, int, int);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS) public void stopOneTimePermissionSession(@NonNull String);
-  }
-
-  public static final class PermissionManager.SplitPermissionInfo {
-    method @NonNull public java.util.List<java.lang.String> getNewPermissions();
-    method @NonNull public String getSplitPermission();
-    method public int getTargetSdk();
-  }
-
-  public final class RuntimePermissionPresentationInfo implements android.os.Parcelable {
-    ctor public RuntimePermissionPresentationInfo(@NonNull CharSequence, boolean, boolean);
-    method public int describeContents();
-    method @NonNull public CharSequence getLabel();
-    method public boolean isGranted();
-    method public boolean isStandard();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.permission.RuntimePermissionPresentationInfo> CREATOR;
-  }
-
-  public final class RuntimePermissionUsageInfo implements android.os.Parcelable {
-    ctor public RuntimePermissionUsageInfo(@NonNull String, int);
-    method public int describeContents();
-    method public int getAppAccessCount();
-    method @NonNull public String getName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.permission.RuntimePermissionUsageInfo> CREATOR;
-  }
-
-}
-
-package android.permissionpresenterservice {
-
-  @Deprecated public abstract class RuntimePermissionPresenterService extends android.app.Service {
-    ctor @Deprecated public RuntimePermissionPresenterService();
-    method @Deprecated public final void attachBaseContext(android.content.Context);
-    method @Deprecated public final android.os.IBinder onBind(android.content.Intent);
-    method @Deprecated public abstract java.util.List<android.content.pm.permission.RuntimePermissionPresentationInfo> onGetAppPermissions(@NonNull String);
-    field @Deprecated public static final String SERVICE_INTERFACE = "android.permissionpresenterservice.RuntimePermissionPresenterService";
-  }
-
-}
-
-package android.preference {
-
-  @Deprecated public class PreferenceManager {
-    method @Deprecated public boolean isStorageCredentialProtected();
-    method @Deprecated public void setStorageCredentialProtected();
-  }
-
-}
-
-package android.print {
-
-  public final class PrintManager {
-    method @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICE_RECOMMENDATIONS) public void addPrintServiceRecommendationsChangeListener(@NonNull android.print.PrintManager.PrintServiceRecommendationsChangeListener, @Nullable android.os.Handler);
-    method @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICES) public void addPrintServicesChangeListener(@NonNull android.print.PrintManager.PrintServicesChangeListener, @Nullable android.os.Handler);
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICE_RECOMMENDATIONS) public java.util.List<android.printservice.recommendation.RecommendationInfo> getPrintServiceRecommendations();
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICES) public java.util.List<android.printservice.PrintServiceInfo> getPrintServices(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICE_RECOMMENDATIONS) public void removePrintServiceRecommendationsChangeListener(@NonNull android.print.PrintManager.PrintServiceRecommendationsChangeListener);
-    method @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICES) public void removePrintServicesChangeListener(@NonNull android.print.PrintManager.PrintServicesChangeListener);
-    field public static final int ENABLED_SERVICES = 1; // 0x1
-  }
-
-  public static interface PrintManager.PrintServiceRecommendationsChangeListener {
-    method public void onPrintServiceRecommendationsChanged();
-  }
-
-  public static interface PrintManager.PrintServicesChangeListener {
-    method public void onPrintServicesChanged();
-  }
-
-}
-
-package android.printservice {
-
-  public final class PrintServiceInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.content.ComponentName getComponentName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.printservice.PrintServiceInfo> CREATOR;
-  }
-
-}
-
-package android.printservice.recommendation {
-
-  public final class RecommendationInfo implements android.os.Parcelable {
-    ctor public RecommendationInfo(@NonNull CharSequence, @NonNull CharSequence, @NonNull java.util.List<java.net.InetAddress>, boolean);
-    ctor @Deprecated public RecommendationInfo(@NonNull CharSequence, @NonNull CharSequence, @IntRange(from=0) int, boolean);
-    method public int describeContents();
-    method @NonNull public java.util.List<java.net.InetAddress> getDiscoveredPrinters();
-    method public CharSequence getName();
-    method public int getNumDiscoveredPrinters();
-    method public CharSequence getPackageName();
-    method public boolean recommendsMultiVendorService();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.printservice.recommendation.RecommendationInfo> CREATOR;
-  }
-
-  public abstract class RecommendationService extends android.app.Service {
-    ctor public RecommendationService();
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method public abstract void onConnected();
-    method public abstract void onDisconnected();
-    method public final void updateRecommendations(@Nullable java.util.List<android.printservice.recommendation.RecommendationInfo>);
-    field public static final String SERVICE_INTERFACE = "android.printservice.recommendation.RecommendationService";
-  }
-
-}
-
-package android.provider {
-
-  @Deprecated public static final class ContactsContract.MetadataSync implements android.provider.BaseColumns android.provider.ContactsContract.MetadataSyncColumns {
-    field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_metadata";
-    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact_metadata";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-    field @Deprecated public static final String METADATA_AUTHORITY = "com.android.contacts.metadata";
-    field @Deprecated public static final android.net.Uri METADATA_AUTHORITY_URI;
-  }
-
-  @Deprecated protected static interface ContactsContract.MetadataSyncColumns {
-    field @Deprecated public static final String ACCOUNT_NAME = "account_name";
-    field @Deprecated public static final String ACCOUNT_TYPE = "account_type";
-    field @Deprecated public static final String DATA = "data";
-    field @Deprecated public static final String DATA_SET = "data_set";
-    field @Deprecated public static final String DELETED = "deleted";
-    field @Deprecated public static final String RAW_CONTACT_BACKUP_ID = "raw_contact_backup_id";
-  }
-
-  @Deprecated public static final class ContactsContract.MetadataSyncState implements android.provider.BaseColumns android.provider.ContactsContract.MetadataSyncStateColumns {
-    field @Deprecated public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_metadata_sync_state";
-    field @Deprecated public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact_metadata_sync_state";
-    field @Deprecated public static final android.net.Uri CONTENT_URI;
-  }
-
-  @Deprecated protected static interface ContactsContract.MetadataSyncStateColumns {
-    field @Deprecated public static final String ACCOUNT_NAME = "account_name";
-    field @Deprecated public static final String ACCOUNT_TYPE = "account_type";
-    field @Deprecated public static final String DATA_SET = "data_set";
-    field @Deprecated public static final String STATE = "state";
-  }
-
-  public final class DeviceConfig {
-    method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static void addOnPropertiesChangedListener(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.provider.DeviceConfig.OnPropertiesChangedListener);
-    method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static boolean getBoolean(@NonNull String, @NonNull String, boolean);
-    method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static float getFloat(@NonNull String, @NonNull String, float);
-    method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static int getInt(@NonNull String, @NonNull String, int);
-    method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static long getLong(@NonNull String, @NonNull String, long);
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static android.provider.DeviceConfig.Properties getProperties(@NonNull String, @NonNull java.lang.String...);
-    method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static String getProperty(@NonNull String, @NonNull String);
-    method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static String getString(@NonNull String, @NonNull String, @Nullable String);
-    method public static void removeOnPropertiesChangedListener(@NonNull android.provider.DeviceConfig.OnPropertiesChangedListener);
-    method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static void resetToDefaults(int, @Nullable String);
-    method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static boolean setProperties(@NonNull android.provider.DeviceConfig.Properties) throws android.provider.DeviceConfig.BadConfigException;
-    method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static boolean setProperty(@NonNull String, @NonNull String, @Nullable String, boolean);
-    field public static final String NAMESPACE_ACTIVITY_MANAGER = "activity_manager";
-    field public static final String NAMESPACE_ACTIVITY_MANAGER_NATIVE_BOOT = "activity_manager_native_boot";
-    field public static final String NAMESPACE_APP_COMPAT = "app_compat";
-    field public static final String NAMESPACE_ATTENTION_MANAGER_SERVICE = "attention_manager_service";
-    field public static final String NAMESPACE_AUTOFILL = "autofill";
-    field public static final String NAMESPACE_BIOMETRICS = "biometrics";
-    field public static final String NAMESPACE_BLOBSTORE = "blobstore";
-    field public static final String NAMESPACE_BLUETOOTH = "bluetooth";
-    field public static final String NAMESPACE_CONNECTIVITY = "connectivity";
-    field public static final String NAMESPACE_CONTENT_CAPTURE = "content_capture";
-    field @Deprecated public static final String NAMESPACE_DEX_BOOT = "dex_boot";
-    field public static final String NAMESPACE_DISPLAY_MANAGER = "display_manager";
-    field public static final String NAMESPACE_GAME_DRIVER = "game_driver";
-    field public static final String NAMESPACE_INPUT_NATIVE_BOOT = "input_native_boot";
-    field public static final String NAMESPACE_INTELLIGENCE_ATTENTION = "intelligence_attention";
-    field public static final String NAMESPACE_MEDIA_NATIVE = "media_native";
-    field public static final String NAMESPACE_NETD_NATIVE = "netd_native";
-    field public static final String NAMESPACE_PACKAGE_MANAGER_SERVICE = "package_manager_service";
-    field public static final String NAMESPACE_PERMISSIONS = "permissions";
-    field public static final String NAMESPACE_PRIVACY = "privacy";
-    field public static final String NAMESPACE_ROLLBACK = "rollback";
-    field public static final String NAMESPACE_ROLLBACK_BOOT = "rollback_boot";
-    field public static final String NAMESPACE_RUNTIME = "runtime";
-    field public static final String NAMESPACE_RUNTIME_NATIVE = "runtime_native";
-    field public static final String NAMESPACE_RUNTIME_NATIVE_BOOT = "runtime_native_boot";
-    field public static final String NAMESPACE_SCHEDULER = "scheduler";
-    field @Deprecated public static final String NAMESPACE_STORAGE = "storage";
-    field public static final String NAMESPACE_STORAGE_NATIVE_BOOT = "storage_native_boot";
-    field public static final String NAMESPACE_SYSTEMUI = "systemui";
-    field public static final String NAMESPACE_TELEPHONY = "telephony";
-    field public static final String NAMESPACE_TEXTCLASSIFIER = "textclassifier";
-    field public static final String NAMESPACE_WINDOW_MANAGER_NATIVE_BOOT = "window_manager_native_boot";
-  }
-
-  public static class DeviceConfig.BadConfigException extends java.lang.Exception {
-    ctor public DeviceConfig.BadConfigException();
-  }
-
-  public static interface DeviceConfig.OnPropertiesChangedListener {
-    method public void onPropertiesChanged(@NonNull android.provider.DeviceConfig.Properties);
-  }
-
-  public static class DeviceConfig.Properties {
-    method public boolean getBoolean(@NonNull String, boolean);
-    method public float getFloat(@NonNull String, float);
-    method public int getInt(@NonNull String, int);
-    method @NonNull public java.util.Set<java.lang.String> getKeyset();
-    method public long getLong(@NonNull String, long);
-    method @NonNull public String getNamespace();
-    method @Nullable public String getString(@NonNull String, @Nullable String);
-  }
-
-  public static final class DeviceConfig.Properties.Builder {
-    ctor public DeviceConfig.Properties.Builder(@NonNull String);
-    method @NonNull public android.provider.DeviceConfig.Properties build();
-    method @NonNull public android.provider.DeviceConfig.Properties.Builder setBoolean(@NonNull String, boolean);
-    method @NonNull public android.provider.DeviceConfig.Properties.Builder setFloat(@NonNull String, float);
-    method @NonNull public android.provider.DeviceConfig.Properties.Builder setInt(@NonNull String, int);
-    method @NonNull public android.provider.DeviceConfig.Properties.Builder setLong(@NonNull String, long);
-    method @NonNull public android.provider.DeviceConfig.Properties.Builder setString(@NonNull String, @Nullable String);
-  }
-
-  public final class DocumentsContract {
-    method @NonNull public static android.net.Uri buildDocumentUriAsUser(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
-    method public static boolean isManageMode(@NonNull android.net.Uri);
-    method @NonNull public static android.net.Uri setManageMode(@NonNull android.net.Uri);
-    field public static final String ACTION_DOCUMENT_ROOT_SETTINGS = "android.provider.action.DOCUMENT_ROOT_SETTINGS";
-    field public static final String ACTION_MANAGE_DOCUMENT = "android.provider.action.MANAGE_DOCUMENT";
-    field public static final String EXTRA_SHOW_ADVANCED = "android.provider.extra.SHOW_ADVANCED";
-  }
-
-  public static final class DocumentsContract.Root {
-    field public static final int FLAG_ADVANCED = 65536; // 0x10000
-    field public static final int FLAG_HAS_SETTINGS = 131072; // 0x20000
-    field public static final int FLAG_REMOVABLE_SD = 262144; // 0x40000
-    field public static final int FLAG_REMOVABLE_USB = 524288; // 0x80000
-  }
-
-  public abstract class SearchIndexableData {
-    ctor public SearchIndexableData();
-    ctor public SearchIndexableData(android.content.Context);
-    field public String className;
-    field public android.content.Context context;
-    field public boolean enabled;
-    field public int iconResId;
-    field public String intentAction;
-    field public String intentTargetClass;
-    field public String intentTargetPackage;
-    field public String key;
-    field public java.util.Locale locale;
-    field public String packageName;
-    field public int rank;
-    field public int userId;
-  }
-
-  public class SearchIndexableResource extends android.provider.SearchIndexableData {
-    ctor public SearchIndexableResource(int, int, String, int);
-    ctor public SearchIndexableResource(android.content.Context);
-    field public int xmlResId;
-  }
-
-  public class SearchIndexablesContract {
-    ctor public SearchIndexablesContract();
-    field public static final int COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE = 0; // 0x0
-    field public static final int COLUMN_INDEX_RAW_CLASS_NAME = 7; // 0x7
-    field public static final int COLUMN_INDEX_RAW_ENTRIES = 4; // 0x4
-    field public static final int COLUMN_INDEX_RAW_ICON_RESID = 8; // 0x8
-    field public static final int COLUMN_INDEX_RAW_INTENT_ACTION = 9; // 0x9
-    field public static final int COLUMN_INDEX_RAW_INTENT_TARGET_CLASS = 11; // 0xb
-    field public static final int COLUMN_INDEX_RAW_INTENT_TARGET_PACKAGE = 10; // 0xa
-    field public static final int COLUMN_INDEX_RAW_KEY = 12; // 0xc
-    field public static final int COLUMN_INDEX_RAW_KEYWORDS = 5; // 0x5
-    field public static final int COLUMN_INDEX_RAW_RANK = 0; // 0x0
-    field public static final int COLUMN_INDEX_RAW_SCREEN_TITLE = 6; // 0x6
-    field public static final int COLUMN_INDEX_RAW_SUMMARY_OFF = 3; // 0x3
-    field public static final int COLUMN_INDEX_RAW_SUMMARY_ON = 2; // 0x2
-    field public static final int COLUMN_INDEX_RAW_TITLE = 1; // 0x1
-    field public static final int COLUMN_INDEX_RAW_USER_ID = 13; // 0xd
-    field public static final int COLUMN_INDEX_XML_RES_CLASS_NAME = 2; // 0x2
-    field public static final int COLUMN_INDEX_XML_RES_ICON_RESID = 3; // 0x3
-    field public static final int COLUMN_INDEX_XML_RES_INTENT_ACTION = 4; // 0x4
-    field public static final int COLUMN_INDEX_XML_RES_INTENT_TARGET_CLASS = 6; // 0x6
-    field public static final int COLUMN_INDEX_XML_RES_INTENT_TARGET_PACKAGE = 5; // 0x5
-    field public static final int COLUMN_INDEX_XML_RES_RANK = 0; // 0x0
-    field public static final int COLUMN_INDEX_XML_RES_RESID = 1; // 0x1
-    field public static final String DYNAMIC_INDEXABLES_RAW = "dynamic_indexables_raw";
-    field public static final String DYNAMIC_INDEXABLES_RAW_PATH = "settings/dynamic_indexables_raw";
-    field public static final String INDEXABLES_RAW = "indexables_raw";
-    field public static final String[] INDEXABLES_RAW_COLUMNS;
-    field public static final String INDEXABLES_RAW_PATH = "settings/indexables_raw";
-    field public static final String INDEXABLES_XML_RES = "indexables_xml_res";
-    field public static final String[] INDEXABLES_XML_RES_COLUMNS;
-    field public static final String INDEXABLES_XML_RES_PATH = "settings/indexables_xml_res";
-    field public static final String NON_INDEXABLES_KEYS = "non_indexables_key";
-    field public static final String[] NON_INDEXABLES_KEYS_COLUMNS;
-    field public static final String NON_INDEXABLES_KEYS_PATH = "settings/non_indexables_key";
-    field public static final String PROVIDER_INTERFACE = "android.content.action.SEARCH_INDEXABLES_PROVIDER";
-    field public static final String SLICE_URI_PAIRS = "slice_uri_pairs";
-    field @NonNull public static final String[] SLICE_URI_PAIRS_COLUMNS;
-    field public static final String SLICE_URI_PAIRS_PATH = "settings/slice_uri_pairs";
-  }
-
-  public static class SearchIndexablesContract.BaseColumns {
-    field public static final String COLUMN_CLASS_NAME = "className";
-    field public static final String COLUMN_ICON_RESID = "iconResId";
-    field public static final String COLUMN_INTENT_ACTION = "intentAction";
-    field public static final String COLUMN_INTENT_TARGET_CLASS = "intentTargetClass";
-    field public static final String COLUMN_INTENT_TARGET_PACKAGE = "intentTargetPackage";
-    field public static final String COLUMN_RANK = "rank";
-  }
-
-  public static final class SearchIndexablesContract.NonIndexableKey extends android.provider.SearchIndexablesContract.BaseColumns {
-    field public static final String COLUMN_KEY_VALUE = "key";
-    field public static final String MIME_TYPE = "vnd.android.cursor.dir/non_indexables_key";
-  }
-
-  public static final class SearchIndexablesContract.RawData extends android.provider.SearchIndexablesContract.BaseColumns {
-    field public static final String COLUMN_ENTRIES = "entries";
-    field public static final String COLUMN_KEY = "key";
-    field public static final String COLUMN_KEYWORDS = "keywords";
-    field public static final String COLUMN_SCREEN_TITLE = "screenTitle";
-    field public static final String COLUMN_SUMMARY_OFF = "summaryOff";
-    field public static final String COLUMN_SUMMARY_ON = "summaryOn";
-    field public static final String COLUMN_TITLE = "title";
-    field public static final String COLUMN_USER_ID = "user_id";
-    field public static final String MIME_TYPE = "vnd.android.cursor.dir/indexables_raw";
-  }
-
-  public static final class SearchIndexablesContract.SliceUriPairColumns {
-    field public static final String KEY = "key";
-    field public static final String SLICE_URI = "slice_uri";
-  }
-
-  public static final class SearchIndexablesContract.XmlResource extends android.provider.SearchIndexablesContract.BaseColumns {
-    field public static final String COLUMN_XML_RESID = "xmlResId";
-    field public static final String MIME_TYPE = "vnd.android.cursor.dir/indexables_xml_res";
-  }
-
-  public abstract class SearchIndexablesProvider extends android.content.ContentProvider {
-    ctor public SearchIndexablesProvider();
-    method public final int delete(android.net.Uri, String, String[]);
-    method public String getType(android.net.Uri);
-    method public final android.net.Uri insert(android.net.Uri, android.content.ContentValues);
-    method public android.database.Cursor query(android.net.Uri, String[], String, String[], String);
-    method @Nullable public android.database.Cursor queryDynamicRawData(@Nullable String[]);
-    method public abstract android.database.Cursor queryNonIndexableKeys(String[]);
-    method public abstract android.database.Cursor queryRawData(String[]);
-    method @Nullable public android.database.Cursor querySliceUriPairs();
-    method public abstract android.database.Cursor queryXmlResources(String[]);
-    method public final int update(android.net.Uri, android.content.ContentValues, String, String[]);
-  }
-
-  public final class Settings {
-    method public static boolean checkAndNoteWriteSettingsOperation(@NonNull android.content.Context, int, @NonNull String, boolean);
-    field public static final String ACTION_ACCESSIBILITY_DETAILS_SETTINGS = "android.settings.ACCESSIBILITY_DETAILS_SETTINGS";
-    field public static final String ACTION_BUGREPORT_HANDLER_SETTINGS = "android.settings.BUGREPORT_HANDLER_SETTINGS";
-    field public static final String ACTION_ENTERPRISE_PRIVACY_SETTINGS = "android.settings.ENTERPRISE_PRIVACY_SETTINGS";
-    field public static final String ACTION_LOCATION_CONTROLLER_EXTRA_PACKAGE_SETTINGS = "android.settings.LOCATION_CONTROLLER_EXTRA_PACKAGE_SETTINGS";
-    field public static final String ACTION_MANAGE_APP_OVERLAY_PERMISSION = "android.settings.MANAGE_APP_OVERLAY_PERMISSION";
-    field public static final String ACTION_MANAGE_DOMAIN_URLS = "android.settings.MANAGE_DOMAIN_URLS";
-    field public static final String ACTION_MANAGE_MORE_DEFAULT_APPS_SETTINGS = "android.settings.MANAGE_MORE_DEFAULT_APPS_SETTINGS";
-    field public static final String ACTION_NOTIFICATION_POLICY_ACCESS_DETAIL_SETTINGS = "android.settings.NOTIFICATION_POLICY_ACCESS_DETAIL_SETTINGS";
-    field public static final String ACTION_REQUEST_ENABLE_CONTENT_CAPTURE = "android.settings.REQUEST_ENABLE_CONTENT_CAPTURE";
-    field public static final String ACTION_SHOW_ADMIN_SUPPORT_DETAILS = "android.settings.SHOW_ADMIN_SUPPORT_DETAILS";
-    field public static final String ACTION_TETHER_PROVISIONING_UI = "android.settings.TETHER_PROVISIONING_UI";
-    field public static final String ACTION_TETHER_SETTINGS = "android.settings.TETHER_SETTINGS";
-  }
-
-  public static final class Settings.Global extends android.provider.Settings.NameValueTable {
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static boolean putString(@NonNull android.content.ContentResolver, @NonNull String, @Nullable String, @Nullable String, boolean);
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static void resetToDefaults(@NonNull android.content.ContentResolver, @Nullable String);
-    field public static final String AIRPLANE_MODE_TOGGLEABLE_RADIOS = "airplane_mode_toggleable_radios";
-    field public static final String APP_STANDBY_ENABLED = "app_standby_enabled";
-    field public static final String AUTOFILL_COMPAT_MODE_ALLOWED_PACKAGES = "autofill_compat_mode_allowed_packages";
-    field public static final String CARRIER_APP_NAMES = "carrier_app_names";
-    field public static final String CARRIER_APP_WHITELIST = "carrier_app_whitelist";
-    field public static final String DEFAULT_SM_DP_PLUS = "default_sm_dp_plus";
-    field public static final String DEVICE_DEMO_MODE = "device_demo_mode";
-    field public static final String DEVICE_PROVISIONING_MOBILE_DATA_ENABLED = "device_provisioning_mobile_data";
-    field public static final String EUICC_PROVISIONED = "euicc_provisioned";
-    field public static final String EUICC_SUPPORTED_COUNTRIES = "euicc_supported_countries";
-    field public static final String EUICC_UNSUPPORTED_COUNTRIES = "euicc_unsupported_countries";
-    field public static final String INSTALL_CARRIER_APP_NOTIFICATION_PERSISTENT = "install_carrier_app_notification_persistent";
-    field public static final String INSTALL_CARRIER_APP_NOTIFICATION_SLEEP_MILLIS = "install_carrier_app_notification_sleep_millis";
-    field public static final String OTA_DISABLE_AUTOMATIC_UPDATE = "ota_disable_automatic_update";
-    field public static final String REQUIRE_PASSWORD_TO_DECRYPT = "require_password_to_decrypt";
-    field public static final String TETHER_OFFLOAD_DISABLED = "tether_offload_disabled";
-    field public static final String TETHER_SUPPORTED = "tether_supported";
-    field public static final String THEATER_MODE_ON = "theater_mode_on";
-    field public static final String WEBVIEW_MULTIPROCESS = "webview_multiprocess";
-    field public static final String WIFI_BADGING_THRESHOLDS = "wifi_badging_thresholds";
-    field @Deprecated public static final String WIFI_WAKEUP_ENABLED = "wifi_wakeup_enabled";
-  }
-
-  public static final class Settings.Secure extends android.provider.Settings.NameValueTable {
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static boolean putString(@NonNull android.content.ContentResolver, @NonNull String, @Nullable String, @Nullable String, boolean);
-    method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static void resetToDefaults(@NonNull android.content.ContentResolver, @Nullable String);
-    field @Deprecated public static final String ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED = "accessibility_display_magnification_navbar_enabled";
-    field public static final String ASSIST_GESTURE_SETUP_COMPLETE = "assist_gesture_setup_complete";
-    field public static final String AUTOFILL_FEATURE_FIELD_CLASSIFICATION = "autofill_field_classification";
-    field public static final String AUTOFILL_USER_DATA_MAX_CATEGORY_COUNT = "autofill_user_data_max_category_count";
-    field public static final String AUTOFILL_USER_DATA_MAX_FIELD_CLASSIFICATION_IDS_SIZE = "autofill_user_data_max_field_classification_size";
-    field public static final String AUTOFILL_USER_DATA_MAX_USER_DATA_SIZE = "autofill_user_data_max_user_data_size";
-    field public static final String AUTOFILL_USER_DATA_MAX_VALUE_LENGTH = "autofill_user_data_max_value_length";
-    field public static final String AUTOFILL_USER_DATA_MIN_VALUE_LENGTH = "autofill_user_data_min_value_length";
-    field public static final String AUTO_REVOKE_DISABLED = "auto_revoke_disabled";
-    field public static final String COMPLETED_CATEGORY_PREFIX = "suggested.completed_category.";
-    field public static final String DOZE_ALWAYS_ON = "doze_always_on";
-    field public static final String HUSH_GESTURE_USED = "hush_gesture_used";
-    field public static final String INSTANT_APPS_ENABLED = "instant_apps_enabled";
-    field public static final String LAST_SETUP_SHOWN = "last_setup_shown";
-    field public static final String LOCATION_ACCESS_CHECK_DELAY_MILLIS = "location_access_check_delay_millis";
-    field public static final String LOCATION_ACCESS_CHECK_INTERVAL_MILLIS = "location_access_check_interval_millis";
-    field public static final int LOCATION_MODE_ON = 3; // 0x3
-    field @Deprecated public static final String LOCATION_PERMISSIONS_UPGRADE_TO_Q_MODE = "location_permissions_upgrade_to_q_mode";
-    field public static final String LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS = "lock_screen_allow_private_notifications";
-    field public static final String LOCK_SCREEN_SHOW_NOTIFICATIONS = "lock_screen_show_notifications";
-    field public static final String ODI_CAPTIONS_ENABLED = "odi_captions_enabled";
-    field public static final String THEME_CUSTOMIZATION_OVERLAY_PACKAGES = "theme_customization_overlay_packages";
-    field public static final String USER_SETUP_COMPLETE = "user_setup_complete";
-    field public static final int USER_SETUP_PERSONALIZATION_COMPLETE = 10; // 0xa
-    field public static final int USER_SETUP_PERSONALIZATION_NOT_STARTED = 0; // 0x0
-    field public static final int USER_SETUP_PERSONALIZATION_PAUSED = 2; // 0x2
-    field public static final int USER_SETUP_PERSONALIZATION_STARTED = 1; // 0x1
-    field public static final String USER_SETUP_PERSONALIZATION_STATE = "user_setup_personalization_state";
-    field public static final String VOLUME_HUSH_GESTURE = "volume_hush_gesture";
-    field public static final int VOLUME_HUSH_MUTE = 2; // 0x2
-    field public static final int VOLUME_HUSH_OFF = 0; // 0x0
-    field public static final int VOLUME_HUSH_VIBRATE = 1; // 0x1
-  }
-
-  public static final class Settings.System extends android.provider.Settings.NameValueTable {
-    method @RequiresPermission(android.Manifest.permission.MODIFY_SETTINGS_OVERRIDEABLE_BY_RESTORE) public static boolean putString(@NonNull android.content.ContentResolver, @NonNull String, @Nullable String, boolean);
-  }
-
-  public static final class Telephony.Carriers implements android.provider.BaseColumns {
-    field public static final String APN_SET_ID = "apn_set_id";
-    field public static final int CARRIER_EDITED = 4; // 0x4
-    field public static final String EDITED_STATUS = "edited";
-    field public static final int MATCH_ALL_APN_SET_ID = -1; // 0xffffffff
-    field public static final String MAX_CONNECTIONS = "max_conns";
-    field public static final String MODEM_PERSIST = "modem_cognitive";
-    field public static final String MTU = "mtu";
-    field public static final int NO_APN_SET_ID = 0; // 0x0
-    field public static final String TIME_LIMIT_FOR_MAX_CONNECTIONS = "max_conns_time";
-    field public static final int UNEDITED = 0; // 0x0
-    field public static final int USER_DELETED = 2; // 0x2
-    field public static final String USER_EDITABLE = "user_editable";
-    field public static final int USER_EDITED = 1; // 0x1
-    field public static final String USER_VISIBLE = "user_visible";
-    field public static final String WAIT_TIME_RETRY = "wait_time";
-  }
-
-  public static final class Telephony.CellBroadcasts implements android.provider.BaseColumns {
-    field @NonNull public static final String AUTHORITY_LEGACY = "cellbroadcast-legacy";
-    field @NonNull public static final android.net.Uri AUTHORITY_LEGACY_URI;
-    field @NonNull public static final String CALL_METHOD_GET_PREFERENCE = "get_preference";
-    field public static final String CID = "cid";
-    field public static final String CMAS_CATEGORY = "cmas_category";
-    field public static final String CMAS_CERTAINTY = "cmas_certainty";
-    field public static final String CMAS_MESSAGE_CLASS = "cmas_message_class";
-    field public static final String CMAS_RESPONSE_TYPE = "cmas_response_type";
-    field public static final String CMAS_SEVERITY = "cmas_severity";
-    field public static final String CMAS_URGENCY = "cmas_urgency";
-    field @NonNull public static final android.net.Uri CONTENT_URI;
-    field public static final String DATA_CODING_SCHEME = "dcs";
-    field public static final String DEFAULT_SORT_ORDER = "date DESC";
-    field public static final String DELIVERY_TIME = "date";
-    field public static final String ETWS_WARNING_TYPE = "etws_warning_type";
-    field public static final String GEOGRAPHICAL_SCOPE = "geo_scope";
-    field public static final String GEOMETRIES = "geometries";
-    field public static final String LAC = "lac";
-    field public static final String LANGUAGE_CODE = "language";
-    field public static final String LOCATION_CHECK_TIME = "location_check_time";
-    field public static final String MAXIMUM_WAIT_TIME = "maximum_wait_time";
-    field public static final String MESSAGE_BODY = "body";
-    field public static final String MESSAGE_BROADCASTED = "message_broadcasted";
-    field public static final String MESSAGE_DISPLAYED = "message_displayed";
-    field public static final String MESSAGE_FORMAT = "format";
-    field @NonNull @RequiresPermission(android.Manifest.permission.READ_CELL_BROADCASTS) public static final android.net.Uri MESSAGE_HISTORY_URI;
-    field public static final String MESSAGE_PRIORITY = "priority";
-    field public static final String MESSAGE_READ = "read";
-    field public static final String PLMN = "plmn";
-    field public static final String RECEIVED_TIME = "received_time";
-    field public static final String SERIAL_NUMBER = "serial_number";
-    field public static final String SERVICE_CATEGORY = "service_category";
-    field public static final String SLOT_INDEX = "slot_index";
-    field public static final String SUBSCRIPTION_ID = "sub_id";
-  }
-
-  public static final class Telephony.CellBroadcasts.Preference {
-    field @NonNull public static final String ENABLE_ALERT_VIBRATION_PREF = "enable_alert_vibrate";
-    field @NonNull public static final String ENABLE_AREA_UPDATE_INFO_PREF = "enable_area_update_info_alerts";
-    field @NonNull public static final String ENABLE_CMAS_AMBER_PREF = "enable_cmas_amber_alerts";
-    field @NonNull public static final String ENABLE_CMAS_EXTREME_THREAT_PREF = "enable_cmas_extreme_threat_alerts";
-    field @NonNull public static final String ENABLE_CMAS_IN_SECOND_LANGUAGE_PREF = "receive_cmas_in_second_language";
-    field @NonNull public static final String ENABLE_CMAS_PRESIDENTIAL_PREF = "enable_cmas_presidential_alerts";
-    field @NonNull public static final String ENABLE_CMAS_SEVERE_THREAT_PREF = "enable_cmas_severe_threat_alerts";
-    field @NonNull public static final String ENABLE_EMERGENCY_PERF = "enable_emergency_alerts";
-    field @NonNull public static final String ENABLE_PUBLIC_SAFETY_PREF = "enable_public_safety_messages";
-    field @NonNull public static final String ENABLE_STATE_LOCAL_TEST_PREF = "enable_state_local_test_alerts";
-    field @NonNull public static final String ENABLE_TEST_ALERT_PREF = "enable_test_alerts";
-  }
-
-  public static final class Telephony.Sms.Intents {
-    field public static final String ACTION_SMS_EMERGENCY_CB_RECEIVED = "android.provider.action.SMS_EMERGENCY_CB_RECEIVED";
-  }
-
-  public final class TimeZoneRulesDataContract {
-    field public static final String AUTHORITY = "com.android.timezone";
-  }
-
-  public static final class TimeZoneRulesDataContract.Operation {
-    field public static final String COLUMN_DISTRO_MAJOR_VERSION = "distro_major_version";
-    field public static final String COLUMN_DISTRO_MINOR_VERSION = "distro_minor_version";
-    field public static final String COLUMN_REVISION = "revision";
-    field public static final String COLUMN_RULES_VERSION = "rules_version";
-    field public static final String COLUMN_TYPE = "type";
-    field public static final android.net.Uri CONTENT_URI;
-    field public static final String TYPE_INSTALL = "INSTALL";
-    field public static final String TYPE_NO_OP = "NOOP";
-    field public static final String TYPE_UNINSTALL = "UNINSTALL";
-  }
-
-}
-
-package android.se.omapi {
-
-  public final class Reader {
-    method @RequiresPermission(android.Manifest.permission.SECURE_ELEMENT_PRIVILEGED_OPERATION) public boolean reset();
-  }
-
-}
-
-package android.security.keystore {
-
-  public class AndroidKeyStoreProvider extends java.security.Provider {
-    method @NonNull public static java.security.KeyStore getKeyStoreForUid(int) throws java.security.KeyStoreException, java.security.NoSuchProviderException;
-  }
-
-  public abstract class AttestationUtils {
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static java.security.cert.X509Certificate[] attestDeviceIds(android.content.Context, @NonNull int[], @NonNull byte[]) throws android.security.keystore.DeviceIdAttestationException;
-    field public static final int ID_TYPE_IMEI = 2; // 0x2
-    field public static final int ID_TYPE_MEID = 3; // 0x3
-    field public static final int ID_TYPE_SERIAL = 1; // 0x1
-    field public static final int USE_INDIVIDUAL_ATTESTATION = 4; // 0x4
-  }
-
-  public class DeviceIdAttestationException extends java.lang.Exception {
-    ctor public DeviceIdAttestationException(@Nullable String);
-    ctor public DeviceIdAttestationException(@Nullable String, @Nullable Throwable);
-  }
-
-  public static final class KeyGenParameterSpec.Builder {
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUid(int);
-  }
-
-}
-
-package android.security.keystore.recovery {
-
-  public class DecryptionFailedException extends java.security.GeneralSecurityException {
-    ctor public DecryptionFailedException(String);
-  }
-
-  public class InternalRecoveryServiceException extends java.security.GeneralSecurityException {
-    ctor public InternalRecoveryServiceException(String);
-    ctor public InternalRecoveryServiceException(String, Throwable);
-  }
-
-  public final class KeyChainProtectionParams implements android.os.Parcelable {
-    method public void clearSecret();
-    method public int describeContents();
-    method @NonNull public android.security.keystore.recovery.KeyDerivationParams getKeyDerivationParams();
-    method public int getLockScreenUiFormat();
-    method @NonNull public byte[] getSecret();
-    method public int getUserSecretType();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.security.keystore.recovery.KeyChainProtectionParams> CREATOR;
-    field public static final int TYPE_LOCKSCREEN = 100; // 0x64
-    field public static final int UI_FORMAT_PASSWORD = 2; // 0x2
-    field public static final int UI_FORMAT_PATTERN = 3; // 0x3
-    field public static final int UI_FORMAT_PIN = 1; // 0x1
-  }
-
-  public static class KeyChainProtectionParams.Builder {
-    ctor public KeyChainProtectionParams.Builder();
-    method @NonNull public android.security.keystore.recovery.KeyChainProtectionParams build();
-    method @NonNull public android.security.keystore.recovery.KeyChainProtectionParams.Builder setKeyDerivationParams(@NonNull android.security.keystore.recovery.KeyDerivationParams);
-    method @NonNull public android.security.keystore.recovery.KeyChainProtectionParams.Builder setLockScreenUiFormat(int);
-    method @NonNull public android.security.keystore.recovery.KeyChainProtectionParams.Builder setSecret(@NonNull byte[]);
-    method @NonNull public android.security.keystore.recovery.KeyChainProtectionParams.Builder setUserSecretType(int);
-  }
-
-  public final class KeyChainSnapshot implements android.os.Parcelable {
-    method public int describeContents();
-    method public long getCounterId();
-    method @NonNull public byte[] getEncryptedRecoveryKeyBlob();
-    method @NonNull public java.util.List<android.security.keystore.recovery.KeyChainProtectionParams> getKeyChainProtectionParams();
-    method public int getMaxAttempts();
-    method @NonNull public byte[] getServerParams();
-    method public int getSnapshotVersion();
-    method @NonNull public java.security.cert.CertPath getTrustedHardwareCertPath();
-    method @NonNull public java.util.List<android.security.keystore.recovery.WrappedApplicationKey> getWrappedApplicationKeys();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.security.keystore.recovery.KeyChainSnapshot> CREATOR;
-  }
-
-  public final class KeyDerivationParams implements android.os.Parcelable {
-    method @NonNull public static android.security.keystore.recovery.KeyDerivationParams createScryptParams(@NonNull byte[], int);
-    method @NonNull public static android.security.keystore.recovery.KeyDerivationParams createSha256Params(@NonNull byte[]);
-    method public int describeContents();
-    method public int getAlgorithm();
-    method public int getMemoryDifficulty();
-    method @NonNull public byte[] getSalt();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ALGORITHM_SCRYPT = 2; // 0x2
-    field public static final int ALGORITHM_SHA256 = 1; // 0x1
-    field @NonNull public static final android.os.Parcelable.Creator<android.security.keystore.recovery.KeyDerivationParams> CREATOR;
-  }
-
-  public class LockScreenRequiredException extends java.security.GeneralSecurityException {
-    ctor public LockScreenRequiredException(String);
-  }
-
-  public class RecoveryController {
-    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public android.security.keystore.recovery.RecoverySession createRecoverySession();
-    method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.security.Key generateKey(@NonNull String) throws android.security.keystore.recovery.InternalRecoveryServiceException, android.security.keystore.recovery.LockScreenRequiredException;
-    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.security.Key generateKey(@NonNull String, @Nullable byte[]) throws android.security.keystore.recovery.InternalRecoveryServiceException, android.security.keystore.recovery.LockScreenRequiredException;
-    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.util.List<java.lang.String> getAliases() throws android.security.keystore.recovery.InternalRecoveryServiceException;
-    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public static android.security.keystore.recovery.RecoveryController getInstance(@NonNull android.content.Context);
-    method @Nullable @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.security.Key getKey(@NonNull String) throws android.security.keystore.recovery.InternalRecoveryServiceException, java.security.UnrecoverableKeyException;
-    method @Nullable @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public android.security.keystore.recovery.KeyChainSnapshot getKeyChainSnapshot() throws android.security.keystore.recovery.InternalRecoveryServiceException;
-    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public int[] getRecoverySecretTypes() throws android.security.keystore.recovery.InternalRecoveryServiceException;
-    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public int getRecoveryStatus(@NonNull String) throws android.security.keystore.recovery.InternalRecoveryServiceException;
-    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.util.Map<java.lang.String,java.security.cert.X509Certificate> getRootCertificates();
-    method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.security.Key importKey(@NonNull String, @NonNull byte[]) throws android.security.keystore.recovery.InternalRecoveryServiceException, android.security.keystore.recovery.LockScreenRequiredException;
-    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.security.Key importKey(@NonNull String, @NonNull byte[], @Nullable byte[]) throws android.security.keystore.recovery.InternalRecoveryServiceException, android.security.keystore.recovery.LockScreenRequiredException;
-    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void initRecoveryService(@NonNull String, @NonNull byte[], @NonNull byte[]) throws java.security.cert.CertificateException, android.security.keystore.recovery.InternalRecoveryServiceException;
-    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public static boolean isRecoverableKeyStoreEnabled(@NonNull android.content.Context);
-    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void removeKey(@NonNull String) throws android.security.keystore.recovery.InternalRecoveryServiceException;
-    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void setRecoverySecretTypes(@NonNull int[]) throws android.security.keystore.recovery.InternalRecoveryServiceException;
-    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void setRecoveryStatus(@NonNull String, int) throws android.security.keystore.recovery.InternalRecoveryServiceException;
-    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void setServerParams(@NonNull byte[]) throws android.security.keystore.recovery.InternalRecoveryServiceException;
-    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void setSnapshotCreatedPendingIntent(@Nullable android.app.PendingIntent) throws android.security.keystore.recovery.InternalRecoveryServiceException;
-    field public static final int RECOVERY_STATUS_PERMANENT_FAILURE = 3; // 0x3
-    field public static final int RECOVERY_STATUS_SYNCED = 0; // 0x0
-    field public static final int RECOVERY_STATUS_SYNC_IN_PROGRESS = 1; // 0x1
-  }
-
-  public class RecoverySession implements java.lang.AutoCloseable {
-    method @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public void close();
-    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public java.util.Map<java.lang.String,java.security.Key> recoverKeyChainSnapshot(@NonNull byte[], @NonNull java.util.List<android.security.keystore.recovery.WrappedApplicationKey>) throws android.security.keystore.recovery.DecryptionFailedException, android.security.keystore.recovery.InternalRecoveryServiceException, android.security.keystore.recovery.SessionExpiredException;
-    method @NonNull @RequiresPermission(android.Manifest.permission.RECOVER_KEYSTORE) public byte[] start(@NonNull String, @NonNull java.security.cert.CertPath, @NonNull byte[], @NonNull byte[], @NonNull java.util.List<android.security.keystore.recovery.KeyChainProtectionParams>) throws java.security.cert.CertificateException, android.security.keystore.recovery.InternalRecoveryServiceException;
-  }
-
-  public class SessionExpiredException extends java.security.GeneralSecurityException {
-    ctor public SessionExpiredException(String);
-  }
-
-  public final class WrappedApplicationKey implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public String getAlias();
-    method @NonNull public byte[] getEncryptedKeyMaterial();
-    method @Nullable public byte[] getMetadata();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.security.keystore.recovery.WrappedApplicationKey> CREATOR;
-  }
-
-  public static class WrappedApplicationKey.Builder {
-    ctor public WrappedApplicationKey.Builder();
-    method @NonNull public android.security.keystore.recovery.WrappedApplicationKey build();
-    method @NonNull public android.security.keystore.recovery.WrappedApplicationKey.Builder setAlias(@NonNull String);
-    method @NonNull public android.security.keystore.recovery.WrappedApplicationKey.Builder setEncryptedKeyMaterial(@NonNull byte[]);
-    method @NonNull public android.security.keystore.recovery.WrappedApplicationKey.Builder setMetadata(@Nullable byte[]);
-  }
-
-}
-
-package android.service.appprediction {
-
-  public abstract class AppPredictionService extends android.app.Service {
-    ctor public AppPredictionService();
-    method @MainThread public abstract void onAppTargetEvent(@NonNull android.app.prediction.AppPredictionSessionId, @NonNull android.app.prediction.AppTargetEvent);
-    method @NonNull public final android.os.IBinder onBind(@NonNull android.content.Intent);
-    method public void onCreatePredictionSession(@NonNull android.app.prediction.AppPredictionContext, @NonNull android.app.prediction.AppPredictionSessionId);
-    method @MainThread public void onDestroyPredictionSession(@NonNull android.app.prediction.AppPredictionSessionId);
-    method @MainThread public abstract void onLaunchLocationShown(@NonNull android.app.prediction.AppPredictionSessionId, @NonNull String, @NonNull java.util.List<android.app.prediction.AppTargetId>);
-    method @MainThread public abstract void onRequestPredictionUpdate(@NonNull android.app.prediction.AppPredictionSessionId);
-    method @MainThread public abstract void onSortAppTargets(@NonNull android.app.prediction.AppPredictionSessionId, @NonNull java.util.List<android.app.prediction.AppTarget>, @NonNull android.os.CancellationSignal, @NonNull java.util.function.Consumer<java.util.List<android.app.prediction.AppTarget>>);
-    method @MainThread public void onStartPredictionUpdates();
-    method @MainThread public void onStopPredictionUpdates();
-    method public final void updatePredictions(@NonNull android.app.prediction.AppPredictionSessionId, @NonNull java.util.List<android.app.prediction.AppTarget>);
-  }
-
-}
-
-package android.service.attention {
-
-  public abstract class AttentionService extends android.app.Service {
-    ctor public AttentionService();
-    method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
-    method public abstract void onCancelAttentionCheck(@NonNull android.service.attention.AttentionService.AttentionCallback);
-    method public abstract void onCheckAttention(@NonNull android.service.attention.AttentionService.AttentionCallback);
-    field public static final int ATTENTION_FAILURE_CAMERA_PERMISSION_ABSENT = 6; // 0x6
-    field public static final int ATTENTION_FAILURE_CANCELLED = 3; // 0x3
-    field public static final int ATTENTION_FAILURE_PREEMPTED = 4; // 0x4
-    field public static final int ATTENTION_FAILURE_TIMED_OUT = 5; // 0x5
-    field public static final int ATTENTION_FAILURE_UNKNOWN = 2; // 0x2
-    field public static final int ATTENTION_SUCCESS_ABSENT = 0; // 0x0
-    field public static final int ATTENTION_SUCCESS_PRESENT = 1; // 0x1
-    field public static final String SERVICE_INTERFACE = "android.service.attention.AttentionService";
-  }
-
-  public static final class AttentionService.AttentionCallback {
-    method public void onFailure(int);
-    method public void onSuccess(int, long);
-  }
-
-}
-
-package android.service.autofill {
-
-  public abstract class AutofillFieldClassificationService extends android.app.Service {
-    ctor public AutofillFieldClassificationService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method @Nullable public float[][] onCalculateScores(@NonNull java.util.List<android.view.autofill.AutofillValue>, @NonNull java.util.List<java.lang.String>, @NonNull java.util.List<java.lang.String>, @Nullable String, @Nullable android.os.Bundle, @Nullable java.util.Map, @Nullable java.util.Map);
-    method @Deprecated @Nullable public float[][] onGetScores(@Nullable String, @Nullable android.os.Bundle, @NonNull java.util.List<android.view.autofill.AutofillValue>, @NonNull java.util.List<java.lang.String>);
-    field public static final String REQUIRED_ALGORITHM_CREDIT_CARD = "CREDIT_CARD";
-    field public static final String REQUIRED_ALGORITHM_EDIT_DISTANCE = "EDIT_DISTANCE";
-    field public static final String REQUIRED_ALGORITHM_EXACT_MATCH = "EXACT_MATCH";
-    field public static final String SERVICE_INTERFACE = "android.service.autofill.AutofillFieldClassificationService";
-    field public static final String SERVICE_META_DATA_KEY_AVAILABLE_ALGORITHMS = "android.autofill.field_classification.available_algorithms";
-    field public static final String SERVICE_META_DATA_KEY_DEFAULT_ALGORITHM = "android.autofill.field_classification.default_algorithm";
-  }
-
-  public static final class Dataset.Builder {
-    ctor public Dataset.Builder(@NonNull android.service.autofill.InlinePresentation);
-    method @NonNull public android.service.autofill.Dataset.Builder setFieldInlinePresentation(@NonNull android.view.autofill.AutofillId, @Nullable android.view.autofill.AutofillValue, @Nullable java.util.regex.Pattern, @NonNull android.service.autofill.InlinePresentation);
-  }
-
-  public abstract class InlineSuggestionRenderService extends android.app.Service {
-    ctor public InlineSuggestionRenderService();
-    method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
-    method @NonNull public android.os.Bundle onGetInlineSuggestionsRendererInfo();
-    method @Nullable public android.view.View onRenderSuggestion(@NonNull android.service.autofill.InlinePresentation, int, int);
-    method public final void startIntentSender(@NonNull android.content.IntentSender);
-    field public static final String SERVICE_INTERFACE = "android.service.autofill.InlineSuggestionRenderService";
-  }
-
-}
-
-package android.service.autofill.augmented {
-
-  public abstract class AugmentedAutofillService extends android.app.Service {
-    ctor public AugmentedAutofillService();
-    method protected final void dump(java.io.FileDescriptor, java.io.PrintWriter, String[]);
-    method protected void dump(@NonNull java.io.PrintWriter, @NonNull String[]);
-    method @Nullable public final android.service.autofill.FillEventHistory getFillEventHistory();
-    method public void onConnected();
-    method public void onDisconnected();
-    method public void onFillRequest(@NonNull android.service.autofill.augmented.FillRequest, @NonNull android.os.CancellationSignal, @NonNull android.service.autofill.augmented.FillController, @NonNull android.service.autofill.augmented.FillCallback);
-    method public final boolean requestAutofill(@NonNull android.content.ComponentName, @NonNull android.view.autofill.AutofillId);
-    field public static final String SERVICE_INTERFACE = "android.service.autofill.augmented.AugmentedAutofillService";
-  }
-
-  public final class FillCallback {
-    method public void onSuccess(@Nullable android.service.autofill.augmented.FillResponse);
-  }
-
-  public final class FillController {
-    method public void autofill(@NonNull java.util.List<android.util.Pair<android.view.autofill.AutofillId,android.view.autofill.AutofillValue>>);
-  }
-
-  public final class FillRequest {
-    method @NonNull public android.content.ComponentName getActivityComponent();
-    method @NonNull public android.view.autofill.AutofillId getFocusedId();
-    method @NonNull public android.view.autofill.AutofillValue getFocusedValue();
-    method @Nullable public android.view.inputmethod.InlineSuggestionsRequest getInlineSuggestionsRequest();
-    method @Nullable public android.service.autofill.augmented.PresentationParams getPresentationParams();
-    method public int getTaskId();
-  }
-
-  public final class FillResponse {
-  }
-
-  public static final class FillResponse.Builder {
-    ctor public FillResponse.Builder();
-    method @NonNull public android.service.autofill.augmented.FillResponse build();
-    method @NonNull public android.service.autofill.augmented.FillResponse.Builder setClientState(@NonNull android.os.Bundle);
-    method @NonNull public android.service.autofill.augmented.FillResponse.Builder setFillWindow(@NonNull android.service.autofill.augmented.FillWindow);
-    method @NonNull public android.service.autofill.augmented.FillResponse.Builder setInlineSuggestions(@NonNull java.util.List<android.service.autofill.Dataset>);
-  }
-
-  public final class FillWindow implements java.lang.AutoCloseable {
-    ctor public FillWindow();
-    method public void destroy();
-    method public boolean update(@NonNull android.service.autofill.augmented.PresentationParams.Area, @NonNull android.view.View, long);
-  }
-
-  public abstract class PresentationParams {
-    method @Nullable public android.service.autofill.augmented.PresentationParams.Area getSuggestionArea();
-  }
-
-  public abstract static class PresentationParams.Area {
-    method @NonNull public android.graphics.Rect getBounds();
-  }
-
-}
-
-package android.service.carrier {
-
-  public abstract class ApnService extends android.app.Service {
-    ctor public ApnService();
-    method @NonNull public android.os.IBinder onBind(@Nullable android.content.Intent);
-    method @NonNull @WorkerThread public abstract java.util.List<android.content.ContentValues> onRestoreApns(int);
-  }
-
-}
-
-package android.service.contentcapture {
-
-  public final class ActivityEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.content.ComponentName getComponentName();
-    method public int getEventType();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.contentcapture.ActivityEvent> CREATOR;
-    field public static final int TYPE_ACTIVITY_DESTROYED = 24; // 0x18
-    field public static final int TYPE_ACTIVITY_PAUSED = 2; // 0x2
-    field public static final int TYPE_ACTIVITY_RESUMED = 1; // 0x1
-    field public static final int TYPE_ACTIVITY_STOPPED = 23; // 0x17
-  }
-
-  public abstract class ContentCaptureService extends android.app.Service {
-    ctor public ContentCaptureService();
-    method public final void disableSelf();
-    method public void onActivityEvent(@NonNull android.service.contentcapture.ActivityEvent);
-    method public void onActivitySnapshot(@NonNull android.view.contentcapture.ContentCaptureSessionId, @NonNull android.service.contentcapture.SnapshotData);
-    method public void onConnected();
-    method public void onContentCaptureEvent(@NonNull android.view.contentcapture.ContentCaptureSessionId, @NonNull android.view.contentcapture.ContentCaptureEvent);
-    method public void onCreateContentCaptureSession(@NonNull android.view.contentcapture.ContentCaptureContext, @NonNull android.view.contentcapture.ContentCaptureSessionId);
-    method public void onDataRemovalRequest(@NonNull android.view.contentcapture.DataRemovalRequest);
-    method public void onDataShareRequest(@NonNull android.view.contentcapture.DataShareRequest, @NonNull android.service.contentcapture.DataShareCallback);
-    method public void onDestroyContentCaptureSession(@NonNull android.view.contentcapture.ContentCaptureSessionId);
-    method public void onDisconnected();
-    method public final void setContentCaptureConditions(@NonNull String, @Nullable java.util.Set<android.view.contentcapture.ContentCaptureCondition>);
-    method public final void setContentCaptureWhitelist(@Nullable java.util.Set<java.lang.String>, @Nullable java.util.Set<android.content.ComponentName>);
-    field public static final String SERVICE_INTERFACE = "android.service.contentcapture.ContentCaptureService";
-    field public static final String SERVICE_META_DATA = "android.content_capture";
-  }
-
-  public interface DataShareCallback {
-    method public void onAccept(@NonNull java.util.concurrent.Executor, @NonNull android.service.contentcapture.DataShareReadAdapter);
-    method public void onReject();
-  }
-
-  public interface DataShareReadAdapter {
-    method public void onError(int);
-    method public void onStart(@NonNull android.os.ParcelFileDescriptor);
-  }
-
-  public final class SnapshotData implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.app.assist.AssistContent getAssistContent();
-    method @NonNull public android.os.Bundle getAssistData();
-    method @NonNull public android.app.assist.AssistStructure getAssistStructure();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.contentcapture.SnapshotData> CREATOR;
-  }
-
-}
-
-package android.service.contentsuggestions {
-
-  public abstract class ContentSuggestionsService extends android.app.Service {
-    ctor public ContentSuggestionsService();
-    method public abstract void onClassifyContentSelections(@NonNull android.app.contentsuggestions.ClassificationsRequest, @NonNull android.app.contentsuggestions.ContentSuggestionsManager.ClassificationsCallback);
-    method public abstract void onNotifyInteraction(@NonNull String, @NonNull android.os.Bundle);
-    method public abstract void onProcessContextImage(int, @Nullable android.graphics.Bitmap, @NonNull android.os.Bundle);
-    method public abstract void onSuggestContentSelections(@NonNull android.app.contentsuggestions.SelectionsRequest, @NonNull android.app.contentsuggestions.ContentSuggestionsManager.SelectionsCallback);
-    field public static final String SERVICE_INTERFACE = "android.service.contentsuggestions.ContentSuggestionsService";
-  }
-
-}
-
-package android.service.dataloader {
-
-  public abstract class DataLoaderService extends android.app.Service {
-    ctor public DataLoaderService();
-    method @Nullable public android.service.dataloader.DataLoaderService.DataLoader onCreateDataLoader(@NonNull android.content.pm.DataLoaderParams);
-  }
-
-  public static interface DataLoaderService.DataLoader {
-    method public boolean onCreate(@NonNull android.content.pm.DataLoaderParams, @NonNull android.service.dataloader.DataLoaderService.FileSystemConnector);
-    method public boolean onPrepareImage(@NonNull java.util.Collection<android.content.pm.InstallationFile>, @NonNull java.util.Collection<java.lang.String>);
-  }
-
-  public static final class DataLoaderService.FileSystemConnector {
-    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void writeData(@NonNull String, long, long, @NonNull android.os.ParcelFileDescriptor) throws java.io.IOException;
-  }
-
-}
-
-package android.service.euicc {
-
-  public final class DownloadSubscriptionResult implements android.os.Parcelable {
-    ctor public DownloadSubscriptionResult(int, int, int);
-    method public int describeContents();
-    method public int getCardId();
-    method public int getResolvableErrors();
-    method public int getResult();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.euicc.DownloadSubscriptionResult> CREATOR;
-  }
-
-  public final class EuiccProfileInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.service.carrier.CarrierIdentifier getCarrierIdentifier();
-    method public String getIccid();
-    method @Nullable public String getNickname();
-    method @android.service.euicc.EuiccProfileInfo.PolicyRule public int getPolicyRules();
-    method @android.service.euicc.EuiccProfileInfo.ProfileClass public int getProfileClass();
-    method public String getProfileName();
-    method public String getServiceProviderName();
-    method @android.service.euicc.EuiccProfileInfo.ProfileState public int getState();
-    method @Nullable public java.util.List<android.telephony.UiccAccessRule> getUiccAccessRules();
-    method public boolean hasPolicyRule(@android.service.euicc.EuiccProfileInfo.PolicyRule int);
-    method public boolean hasPolicyRules();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.euicc.EuiccProfileInfo> CREATOR;
-    field public static final int POLICY_RULE_DELETE_AFTER_DISABLING = 4; // 0x4
-    field public static final int POLICY_RULE_DO_NOT_DELETE = 2; // 0x2
-    field public static final int POLICY_RULE_DO_NOT_DISABLE = 1; // 0x1
-    field public static final int PROFILE_CLASS_OPERATIONAL = 2; // 0x2
-    field public static final int PROFILE_CLASS_PROVISIONING = 1; // 0x1
-    field public static final int PROFILE_CLASS_TESTING = 0; // 0x0
-    field public static final int PROFILE_STATE_DISABLED = 0; // 0x0
-    field public static final int PROFILE_STATE_ENABLED = 1; // 0x1
-  }
-
-  public static final class EuiccProfileInfo.Builder {
-    ctor public EuiccProfileInfo.Builder(String);
-    ctor public EuiccProfileInfo.Builder(android.service.euicc.EuiccProfileInfo);
-    method public android.service.euicc.EuiccProfileInfo build();
-    method public android.service.euicc.EuiccProfileInfo.Builder setCarrierIdentifier(android.service.carrier.CarrierIdentifier);
-    method public android.service.euicc.EuiccProfileInfo.Builder setIccid(String);
-    method public android.service.euicc.EuiccProfileInfo.Builder setNickname(String);
-    method public android.service.euicc.EuiccProfileInfo.Builder setPolicyRules(@android.service.euicc.EuiccProfileInfo.PolicyRule int);
-    method public android.service.euicc.EuiccProfileInfo.Builder setProfileClass(@android.service.euicc.EuiccProfileInfo.ProfileClass int);
-    method public android.service.euicc.EuiccProfileInfo.Builder setProfileName(String);
-    method public android.service.euicc.EuiccProfileInfo.Builder setServiceProviderName(String);
-    method public android.service.euicc.EuiccProfileInfo.Builder setState(@android.service.euicc.EuiccProfileInfo.ProfileState int);
-    method public android.service.euicc.EuiccProfileInfo.Builder setUiccAccessRule(@Nullable java.util.List<android.telephony.UiccAccessRule>);
-  }
-
-  @IntDef(flag=true, prefix={"POLICY_RULE_"}, value={android.service.euicc.EuiccProfileInfo.POLICY_RULE_DO_NOT_DISABLE, android.service.euicc.EuiccProfileInfo.POLICY_RULE_DO_NOT_DELETE, android.service.euicc.EuiccProfileInfo.POLICY_RULE_DELETE_AFTER_DISABLING}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccProfileInfo.PolicyRule {
-  }
-
-  @IntDef(prefix={"PROFILE_CLASS_"}, value={android.service.euicc.EuiccProfileInfo.PROFILE_CLASS_TESTING, android.service.euicc.EuiccProfileInfo.PROFILE_CLASS_PROVISIONING, android.service.euicc.EuiccProfileInfo.PROFILE_CLASS_OPERATIONAL, 0xffffffff}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccProfileInfo.ProfileClass {
-  }
-
-  @IntDef(prefix={"PROFILE_STATE_"}, value={android.service.euicc.EuiccProfileInfo.PROFILE_STATE_DISABLED, android.service.euicc.EuiccProfileInfo.PROFILE_STATE_ENABLED, 0xffffffff}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccProfileInfo.ProfileState {
-  }
-
-  public abstract class EuiccService extends android.app.Service {
-    ctor public EuiccService();
-    method public void dump(@NonNull java.io.PrintWriter);
-    method public int encodeSmdxSubjectAndReasonCode(@Nullable String, @Nullable String);
-    method @CallSuper public android.os.IBinder onBind(android.content.Intent);
-    method public abstract int onDeleteSubscription(int, String);
-    method public android.service.euicc.DownloadSubscriptionResult onDownloadSubscription(int, @NonNull android.telephony.euicc.DownloadableSubscription, boolean, boolean, @Nullable android.os.Bundle);
-    method @Deprecated public int onDownloadSubscription(int, @NonNull android.telephony.euicc.DownloadableSubscription, boolean, boolean);
-    method @Deprecated public abstract int onEraseSubscriptions(int);
-    method public int onEraseSubscriptions(int, @android.telephony.euicc.EuiccCardManager.ResetOption int);
-    method public abstract android.service.euicc.GetDefaultDownloadableSubscriptionListResult onGetDefaultDownloadableSubscriptionList(int, boolean);
-    method public abstract android.service.euicc.GetDownloadableSubscriptionMetadataResult onGetDownloadableSubscriptionMetadata(int, android.telephony.euicc.DownloadableSubscription, boolean);
-    method public abstract String onGetEid(int);
-    method @NonNull public abstract android.telephony.euicc.EuiccInfo onGetEuiccInfo(int);
-    method @NonNull public abstract android.service.euicc.GetEuiccProfileInfoListResult onGetEuiccProfileInfoList(int);
-    method @android.telephony.euicc.EuiccManager.OtaStatus public abstract int onGetOtaStatus(int);
-    method public abstract int onRetainSubscriptionsForFactoryReset(int);
-    method public abstract void onStartOtaIfNecessary(int, android.service.euicc.EuiccService.OtaStatusChangedCallback);
-    method public abstract int onSwitchToSubscription(int, @Nullable String, boolean);
-    method public abstract int onUpdateSubscriptionNickname(int, String, String);
-    field public static final String ACTION_BIND_CARRIER_PROVISIONING_SERVICE = "android.service.euicc.action.BIND_CARRIER_PROVISIONING_SERVICE";
-    field public static final String ACTION_DELETE_SUBSCRIPTION_PRIVILEGED = "android.service.euicc.action.DELETE_SUBSCRIPTION_PRIVILEGED";
-    field public static final String ACTION_MANAGE_EMBEDDED_SUBSCRIPTIONS = "android.service.euicc.action.MANAGE_EMBEDDED_SUBSCRIPTIONS";
-    field public static final String ACTION_PROVISION_EMBEDDED_SUBSCRIPTION = "android.service.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION";
-    field public static final String ACTION_RENAME_SUBSCRIPTION_PRIVILEGED = "android.service.euicc.action.RENAME_SUBSCRIPTION_PRIVILEGED";
-    field @Deprecated public static final String ACTION_RESOLVE_CONFIRMATION_CODE = "android.service.euicc.action.RESOLVE_CONFIRMATION_CODE";
-    field public static final String ACTION_RESOLVE_DEACTIVATE_SIM = "android.service.euicc.action.RESOLVE_DEACTIVATE_SIM";
-    field public static final String ACTION_RESOLVE_NO_PRIVILEGES = "android.service.euicc.action.RESOLVE_NO_PRIVILEGES";
-    field public static final String ACTION_RESOLVE_RESOLVABLE_ERRORS = "android.service.euicc.action.RESOLVE_RESOLVABLE_ERRORS";
-    field public static final String ACTION_START_CARRIER_ACTIVATION = "android.service.euicc.action.START_CARRIER_ACTIVATION";
-    field public static final String ACTION_START_EUICC_ACTIVATION = "android.service.euicc.action.START_EUICC_ACTIVATION";
-    field public static final String ACTION_TOGGLE_SUBSCRIPTION_PRIVILEGED = "android.service.euicc.action.TOGGLE_SUBSCRIPTION_PRIVILEGED";
-    field public static final String CATEGORY_EUICC_UI = "android.service.euicc.category.EUICC_UI";
-    field public static final String EUICC_SERVICE_INTERFACE = "android.service.euicc.EuiccService";
-    field public static final String EXTRA_RESOLUTION_ALLOW_POLICY_RULES = "android.service.euicc.extra.RESOLUTION_ALLOW_POLICY_RULES";
-    field public static final String EXTRA_RESOLUTION_CALLING_PACKAGE = "android.service.euicc.extra.RESOLUTION_CALLING_PACKAGE";
-    field public static final String EXTRA_RESOLUTION_CARD_ID = "android.service.euicc.extra.RESOLUTION_CARD_ID";
-    field public static final String EXTRA_RESOLUTION_CONFIRMATION_CODE = "android.service.euicc.extra.RESOLUTION_CONFIRMATION_CODE";
-    field public static final String EXTRA_RESOLUTION_CONFIRMATION_CODE_RETRIED = "android.service.euicc.extra.RESOLUTION_CONFIRMATION_CODE_RETRIED";
-    field public static final String EXTRA_RESOLUTION_CONSENT = "android.service.euicc.extra.RESOLUTION_CONSENT";
-    field public static final String EXTRA_RESOLVABLE_ERRORS = "android.service.euicc.extra.RESOLVABLE_ERRORS";
-    field public static final int RESOLVABLE_ERROR_CONFIRMATION_CODE = 1; // 0x1
-    field public static final int RESOLVABLE_ERROR_POLICY_RULES = 2; // 0x2
-    field public static final int RESULT_FIRST_USER = 1; // 0x1
-    field public static final int RESULT_MUST_DEACTIVATE_SIM = -1; // 0xffffffff
-    field @Deprecated public static final int RESULT_NEED_CONFIRMATION_CODE = -2; // 0xfffffffe
-    field public static final int RESULT_OK = 0; // 0x0
-    field public static final int RESULT_RESOLVABLE_ERRORS = -2; // 0xfffffffe
-  }
-
-  public abstract static class EuiccService.OtaStatusChangedCallback {
-    ctor public EuiccService.OtaStatusChangedCallback();
-    method public abstract void onOtaStatusChanged(int);
-  }
-
-  public final class GetDefaultDownloadableSubscriptionListResult implements android.os.Parcelable {
-    ctor public GetDefaultDownloadableSubscriptionListResult(int, @Nullable android.telephony.euicc.DownloadableSubscription[]);
-    method public int describeContents();
-    method @Nullable public java.util.List<android.telephony.euicc.DownloadableSubscription> getDownloadableSubscriptions();
-    method public int getResult();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.euicc.GetDefaultDownloadableSubscriptionListResult> CREATOR;
-  }
-
-  public final class GetDownloadableSubscriptionMetadataResult implements android.os.Parcelable {
-    ctor public GetDownloadableSubscriptionMetadataResult(int, @Nullable android.telephony.euicc.DownloadableSubscription);
-    method public int describeContents();
-    method @Nullable public android.telephony.euicc.DownloadableSubscription getDownloadableSubscription();
-    method public int getResult();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.euicc.GetDownloadableSubscriptionMetadataResult> CREATOR;
-  }
-
-  public final class GetEuiccProfileInfoListResult implements android.os.Parcelable {
-    ctor public GetEuiccProfileInfoListResult(int, @Nullable android.service.euicc.EuiccProfileInfo[], boolean);
-    method public int describeContents();
-    method public boolean getIsRemovable();
-    method @Nullable public java.util.List<android.service.euicc.EuiccProfileInfo> getProfiles();
-    method public int getResult();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.euicc.GetEuiccProfileInfoListResult> CREATOR;
-  }
-
-}
-
-package android.service.notification {
-
-  public final class Adjustment implements android.os.Parcelable {
-    ctor public Adjustment(String, String, android.os.Bundle, CharSequence, int);
-    ctor public Adjustment(@NonNull String, @NonNull String, @NonNull android.os.Bundle, @NonNull CharSequence, @NonNull android.os.UserHandle);
-    ctor protected Adjustment(android.os.Parcel);
-    method public int describeContents();
-    method @NonNull public CharSequence getExplanation();
-    method @NonNull public String getKey();
-    method @NonNull public String getPackage();
-    method @NonNull public android.os.Bundle getSignals();
-    method public int getUser();
-    method @NonNull public android.os.UserHandle getUserHandle();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.Adjustment> CREATOR;
-    field public static final String KEY_CONTEXTUAL_ACTIONS = "key_contextual_actions";
-    field public static final String KEY_IMPORTANCE = "key_importance";
-    field public static final String KEY_NOT_CONVERSATION = "key_not_conversation";
-    field public static final String KEY_PEOPLE = "key_people";
-    field public static final String KEY_RANKING_SCORE = "key_ranking_score";
-    field public static final String KEY_SNOOZE_CRITERIA = "key_snooze_criteria";
-    field public static final String KEY_TEXT_REPLIES = "key_text_replies";
-    field public static final String KEY_USER_SENTIMENT = "key_user_sentiment";
-  }
-
-  public abstract class NotificationAssistantService extends android.service.notification.NotificationListenerService {
-    ctor public NotificationAssistantService();
-    method public final void adjustNotification(@NonNull android.service.notification.Adjustment);
-    method public final void adjustNotifications(@NonNull java.util.List<android.service.notification.Adjustment>);
-    method public void onActionInvoked(@NonNull String, @NonNull android.app.Notification.Action, int);
-    method public void onAllowedAdjustmentsChanged();
-    method @NonNull public final android.os.IBinder onBind(@Nullable android.content.Intent);
-    method public void onNotificationDirectReplied(@NonNull String);
-    method @Nullable public abstract android.service.notification.Adjustment onNotificationEnqueued(@NonNull android.service.notification.StatusBarNotification);
-    method @Nullable public android.service.notification.Adjustment onNotificationEnqueued(@NonNull android.service.notification.StatusBarNotification, @NonNull android.app.NotificationChannel);
-    method public void onNotificationExpansionChanged(@NonNull String, boolean, boolean);
-    method public abstract void onNotificationSnoozedUntilContext(@NonNull android.service.notification.StatusBarNotification, @NonNull String);
-    method public void onNotificationVisibilityChanged(@NonNull String, boolean);
-    method public void onNotificationsSeen(@NonNull java.util.List<java.lang.String>);
-    method public void onPanelHidden();
-    method public void onPanelRevealed(int);
-    method public void onSuggestedReplySent(@NonNull String, @NonNull CharSequence, int);
-    method public final void unsnoozeNotification(@NonNull String);
-    field public static final String SERVICE_INTERFACE = "android.service.notification.NotificationAssistantService";
-    field public static final int SOURCE_FROM_APP = 0; // 0x0
-    field public static final int SOURCE_FROM_ASSISTANT = 1; // 0x1
-  }
-
-  public abstract class NotificationListenerService extends android.app.Service {
-    method public void onNotificationRemoved(@NonNull android.service.notification.StatusBarNotification, @NonNull android.service.notification.NotificationListenerService.RankingMap, @NonNull android.service.notification.NotificationStats, int);
-  }
-
-  public final class NotificationStats implements android.os.Parcelable {
-    ctor public NotificationStats();
-    ctor protected NotificationStats(android.os.Parcel);
-    method public int describeContents();
-    method public int getDismissalSentiment();
-    method public int getDismissalSurface();
-    method public boolean hasDirectReplied();
-    method public boolean hasExpanded();
-    method public boolean hasInteracted();
-    method public boolean hasSeen();
-    method public boolean hasSnoozed();
-    method public boolean hasViewedSettings();
-    method public void setDirectReplied();
-    method public void setDismissalSentiment(int);
-    method public void setDismissalSurface(int);
-    method public void setExpanded();
-    method public void setSeen();
-    method public void setSnoozed();
-    method public void setViewedSettings();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.NotificationStats> CREATOR;
-    field public static final int DISMISSAL_AOD = 2; // 0x2
-    field public static final int DISMISSAL_NOT_DISMISSED = -1; // 0xffffffff
-    field public static final int DISMISSAL_OTHER = 0; // 0x0
-    field public static final int DISMISSAL_PEEK = 1; // 0x1
-    field public static final int DISMISSAL_SHADE = 3; // 0x3
-    field public static final int DISMISS_SENTIMENT_NEGATIVE = 0; // 0x0
-    field public static final int DISMISS_SENTIMENT_NEUTRAL = 1; // 0x1
-    field public static final int DISMISS_SENTIMENT_POSITIVE = 2; // 0x2
-    field public static final int DISMISS_SENTIMENT_UNKNOWN = -1000; // 0xfffffc18
-  }
-
-  public final class SnoozeCriterion implements android.os.Parcelable {
-    ctor public SnoozeCriterion(String, CharSequence, CharSequence);
-    ctor protected SnoozeCriterion(android.os.Parcel);
-    method public int describeContents();
-    method public CharSequence getConfirmation();
-    method public CharSequence getExplanation();
-    method public String getId();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.SnoozeCriterion> CREATOR;
-  }
-
-}
-
-package android.service.oemlock {
-
-  public class OemLockManager {
-    method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE) public String getLockName();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE) public boolean isOemUnlockAllowedByCarrier();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USER_OEM_UNLOCK_STATE) public boolean isOemUnlockAllowedByUser();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE) public void setOemUnlockAllowedByCarrier(boolean, @Nullable byte[]);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USER_OEM_UNLOCK_STATE) public void setOemUnlockAllowedByUser(boolean);
-  }
-
-}
-
-package android.service.persistentdata {
-
-  public class PersistentDataBlockManager {
-    method @RequiresPermission("android.permission.ACCESS_PDB_STATE") public int getDataBlockSize();
-    method @android.service.persistentdata.PersistentDataBlockManager.FlashLockState @RequiresPermission(anyOf={android.Manifest.permission.READ_OEM_UNLOCK_STATE, "android.permission.OEM_UNLOCK_STATE"}) public int getFlashLockState();
-    method public long getMaximumDataBlockSize();
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_OEM_UNLOCK_STATE, "android.permission.OEM_UNLOCK_STATE"}) public boolean getOemUnlockEnabled();
-    method public byte[] read();
-    method @Deprecated @RequiresPermission("android.permission.OEM_UNLOCK_STATE") public void setOemUnlockEnabled(boolean);
-    method @RequiresPermission("android.permission.OEM_UNLOCK_STATE") public void wipe();
-    method public int write(byte[]);
-    field public static final int FLASH_LOCK_LOCKED = 1; // 0x1
-    field public static final int FLASH_LOCK_UNKNOWN = -1; // 0xffffffff
-    field public static final int FLASH_LOCK_UNLOCKED = 0; // 0x0
-  }
-
-  @IntDef(prefix={"FLASH_LOCK_"}, value={android.service.persistentdata.PersistentDataBlockManager.FLASH_LOCK_UNKNOWN, android.service.persistentdata.PersistentDataBlockManager.FLASH_LOCK_LOCKED, android.service.persistentdata.PersistentDataBlockManager.FLASH_LOCK_UNLOCKED}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface PersistentDataBlockManager.FlashLockState {
-  }
-
-}
-
-package android.service.quicksettings {
-
-  public class TileService extends android.app.Service {
-    method public final void setStatusIcon(android.graphics.drawable.Icon, String);
-  }
-
-}
-
-package android.service.resolver {
-
-  public abstract class ResolverRankerService extends android.app.Service {
-    ctor public ResolverRankerService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public void onPredictSharingProbabilities(java.util.List<android.service.resolver.ResolverTarget>);
-    method public void onTrainRankingModel(java.util.List<android.service.resolver.ResolverTarget>, int);
-    field public static final String BIND_PERMISSION = "android.permission.BIND_RESOLVER_RANKER_SERVICE";
-    field public static final String HOLD_PERMISSION = "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE";
-    field public static final String SERVICE_INTERFACE = "android.service.resolver.ResolverRankerService";
-  }
-
-  public final class ResolverTarget implements android.os.Parcelable {
-    ctor public ResolverTarget();
-    method public int describeContents();
-    method public float getChooserScore();
-    method public float getLaunchScore();
-    method public float getRecencyScore();
-    method public float getSelectProbability();
-    method public float getTimeSpentScore();
-    method public void setChooserScore(float);
-    method public void setLaunchScore(float);
-    method public void setRecencyScore(float);
-    method public void setSelectProbability(float);
-    method public void setTimeSpentScore(float);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.resolver.ResolverTarget> CREATOR;
-  }
-
-}
-
-package android.service.settings.suggestions {
-
-  public final class Suggestion implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getFlags();
-    method public android.graphics.drawable.Icon getIcon();
-    method public String getId();
-    method public android.app.PendingIntent getPendingIntent();
-    method public CharSequence getSummary();
-    method public CharSequence getTitle();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.settings.suggestions.Suggestion> CREATOR;
-    field public static final int FLAG_HAS_BUTTON = 1; // 0x1
-  }
-
-  public static class Suggestion.Builder {
-    ctor public Suggestion.Builder(String);
-    method public android.service.settings.suggestions.Suggestion build();
-    method public android.service.settings.suggestions.Suggestion.Builder setFlags(int);
-    method public android.service.settings.suggestions.Suggestion.Builder setIcon(android.graphics.drawable.Icon);
-    method public android.service.settings.suggestions.Suggestion.Builder setPendingIntent(android.app.PendingIntent);
-    method public android.service.settings.suggestions.Suggestion.Builder setSummary(CharSequence);
-    method public android.service.settings.suggestions.Suggestion.Builder setTitle(CharSequence);
-  }
-
-  public abstract class SuggestionService extends android.app.Service {
-    ctor public SuggestionService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public abstract java.util.List<android.service.settings.suggestions.Suggestion> onGetSuggestions();
-    method public abstract void onSuggestionDismissed(android.service.settings.suggestions.Suggestion);
-    method public abstract void onSuggestionLaunched(android.service.settings.suggestions.Suggestion);
-  }
-
-}
-
-package android.service.storage {
-
-  public abstract class ExternalStorageService extends android.app.Service {
-    ctor public ExternalStorageService();
-    method @NonNull public final android.os.IBinder onBind(@NonNull android.content.Intent);
-    method public abstract void onEndSession(@NonNull String) throws java.io.IOException;
-    method public abstract void onStartSession(@NonNull String, int, @NonNull android.os.ParcelFileDescriptor, @NonNull java.io.File, @NonNull java.io.File) throws java.io.IOException;
-    method public abstract void onVolumeStateChanged(@NonNull android.os.storage.StorageVolume) throws java.io.IOException;
-    field public static final int FLAG_SESSION_ATTRIBUTE_INDEXABLE = 2; // 0x2
-    field public static final int FLAG_SESSION_TYPE_FUSE = 1; // 0x1
-    field public static final String SERVICE_INTERFACE = "android.service.storage.ExternalStorageService";
-  }
-
-}
-
-package android.service.textclassifier {
-
-  public abstract class TextClassifierService extends android.app.Service {
-    ctor public TextClassifierService();
-    method @NonNull public static android.view.textclassifier.TextClassifier getDefaultTextClassifierImplementation(@NonNull android.content.Context);
-    method @Deprecated public final android.view.textclassifier.TextClassifier getLocalTextClassifier();
-    method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
-    method @MainThread public abstract void onClassifyText(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextClassification.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextClassification>);
-    method public void onConnected();
-    method @MainThread public void onCreateTextClassificationSession(@NonNull android.view.textclassifier.TextClassificationContext, @NonNull android.view.textclassifier.TextClassificationSessionId);
-    method @MainThread public void onDestroyTextClassificationSession(@NonNull android.view.textclassifier.TextClassificationSessionId);
-    method @MainThread public void onDetectLanguage(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextLanguage.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextLanguage>);
-    method public void onDisconnected();
-    method @MainThread public abstract void onGenerateLinks(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextLinks.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextLinks>);
-    method @Deprecated @MainThread public void onSelectionEvent(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.SelectionEvent);
-    method @MainThread public void onSuggestConversationActions(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.ConversationActions.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.ConversationActions>);
-    method @MainThread public abstract void onSuggestSelection(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextSelection.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextSelection>);
-    method @MainThread public void onTextClassifierEvent(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextClassifierEvent);
-    field public static final String SERVICE_INTERFACE = "android.service.textclassifier.TextClassifierService";
-  }
-
-  public static interface TextClassifierService.Callback<T> {
-    method public void onFailure(@NonNull CharSequence);
-    method public void onSuccess(T);
-  }
-
-}
-
-package android.service.trust {
-
-  public class TrustAgentService extends android.app.Service {
-    ctor public TrustAgentService();
-    method public final void addEscrowToken(byte[], android.os.UserHandle);
-    method @Deprecated public final void grantTrust(CharSequence, long, boolean);
-    method public final void grantTrust(CharSequence, long, int);
-    method public final void isEscrowTokenActive(long, android.os.UserHandle);
-    method public final android.os.IBinder onBind(android.content.Intent);
-    method public boolean onConfigure(java.util.List<android.os.PersistableBundle>);
-    method public void onDeviceLocked();
-    method public void onDeviceUnlockLockout(long);
-    method public void onDeviceUnlocked();
-    method public void onEscrowTokenAdded(byte[], long, android.os.UserHandle);
-    method public void onEscrowTokenRemoved(long, boolean);
-    method public void onEscrowTokenStateReceived(long, int);
-    method public void onTrustTimeout();
-    method public void onUnlockAttempt(boolean);
-    method public final void removeEscrowToken(long, android.os.UserHandle);
-    method public final void revokeTrust();
-    method public final void setManagingTrust(boolean);
-    method public final void showKeyguardErrorMessage(@NonNull CharSequence);
-    method public final void unlockUserWithToken(long, byte[], android.os.UserHandle);
-    field public static final int FLAG_GRANT_TRUST_DISMISS_KEYGUARD = 2; // 0x2
-    field public static final int FLAG_GRANT_TRUST_INITIATED_BY_USER = 1; // 0x1
-    field public static final String SERVICE_INTERFACE = "android.service.trust.TrustAgentService";
-    field public static final int TOKEN_STATE_ACTIVE = 1; // 0x1
-    field public static final int TOKEN_STATE_INACTIVE = 0; // 0x0
-    field public static final String TRUST_AGENT_META_DATA = "android.service.trust.trustagent";
-  }
-
-}
-
-package android.service.voice {
-
-  public class VoiceInteractionService extends android.app.Service {
-    method @NonNull @RequiresPermission("android.permission.MANAGE_VOICE_KEYPHRASES") public final android.media.voice.KeyphraseModelManager createKeyphraseModelManager();
-  }
-
-}
-
-package android.service.wallpaper {
-
-  public class WallpaperService.Engine {
-    method public boolean isInAmbientMode();
-    method public void onAmbientModeChanged(boolean, long);
-  }
-
-}
-
-package android.service.watchdog {
-
-  public abstract class ExplicitHealthCheckService extends android.app.Service {
-    ctor public ExplicitHealthCheckService();
-    method public final void notifyHealthCheckPassed(@NonNull String);
-    method @NonNull public final android.os.IBinder onBind(@NonNull android.content.Intent);
-    method public abstract void onCancelHealthCheck(@NonNull String);
-    method @NonNull public abstract java.util.List<java.lang.String> onGetRequestedPackages();
-    method @NonNull public abstract java.util.List<android.service.watchdog.ExplicitHealthCheckService.PackageConfig> onGetSupportedPackages();
-    method public abstract void onRequestHealthCheck(@NonNull String);
-    field public static final String BIND_PERMISSION = "android.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE";
-    field public static final String SERVICE_INTERFACE = "android.service.watchdog.ExplicitHealthCheckService";
-  }
-
-  public static final class ExplicitHealthCheckService.PackageConfig implements android.os.Parcelable {
-    ctor public ExplicitHealthCheckService.PackageConfig(@NonNull String, long);
-    method public int describeContents();
-    method public long getHealthCheckTimeoutMillis();
-    method @NonNull public String getPackageName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.watchdog.ExplicitHealthCheckService.PackageConfig> CREATOR;
-  }
-
-}
-
-package android.telecom {
-
-  @Deprecated public class AudioState implements android.os.Parcelable {
-    ctor @Deprecated public AudioState(boolean, int, int);
-    ctor @Deprecated public AudioState(android.telecom.AudioState);
-    ctor @Deprecated public AudioState(android.telecom.CallAudioState);
-    method @Deprecated public static String audioRouteToString(int);
-    method @Deprecated public int describeContents();
-    method @Deprecated public int getRoute();
-    method @Deprecated public int getSupportedRouteMask();
-    method @Deprecated public boolean isMuted();
-    method @Deprecated public void writeToParcel(android.os.Parcel, int);
-    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.telecom.AudioState> CREATOR;
-    field @Deprecated public static final int ROUTE_BLUETOOTH = 2; // 0x2
-    field @Deprecated public static final int ROUTE_EARPIECE = 1; // 0x1
-    field @Deprecated public static final int ROUTE_SPEAKER = 8; // 0x8
-    field @Deprecated public static final int ROUTE_WIRED_HEADSET = 4; // 0x4
-    field @Deprecated public static final int ROUTE_WIRED_OR_EARPIECE = 5; // 0x5
-  }
-
-  public final class Call {
-    method @Deprecated public void addListener(android.telecom.Call.Listener);
-    method public void enterBackgroundAudioProcessing();
-    method public void exitBackgroundAudioProcessing(boolean);
-    method @Deprecated public void removeListener(android.telecom.Call.Listener);
-    field @Deprecated public static final int STATE_PRE_DIAL_WAIT = 8; // 0x8
-  }
-
-  @Deprecated public abstract static class Call.Listener extends android.telecom.Call.Callback {
-    ctor @Deprecated public Call.Listener();
-  }
-
-  public static class CallScreeningService.CallResponse.Builder {
-    method @NonNull @RequiresPermission(android.Manifest.permission.CAPTURE_AUDIO_OUTPUT) public android.telecom.CallScreeningService.CallResponse.Builder setShouldScreenCallViaAudioProcessing(boolean);
-  }
-
-  public abstract class Conference extends android.telecom.Conferenceable {
-    method @Deprecated public final android.telecom.AudioState getAudioState();
-    method @Deprecated public final long getConnectTimeMillis();
-    method public android.telecom.Connection getPrimaryConnection();
-    method @NonNull public final String getTelecomCallId();
-    method @Deprecated public void onAudioStateChanged(android.telecom.AudioState);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public final void setAddress(@NonNull android.net.Uri, int);
-    method public final void setCallerDisplayName(@NonNull String, int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setConferenceState(boolean);
-    method @Deprecated public final void setConnectTimeMillis(long);
-  }
-
-  public abstract class Connection extends android.telecom.Conferenceable {
-    method @Deprecated public final android.telecom.AudioState getAudioState();
-    method @IntRange(from=0) public final long getConnectTimeMillis();
-    method public final long getConnectionStartElapsedRealtimeMillis();
-    method @Nullable public android.telecom.PhoneAccountHandle getPhoneAccountHandle();
-    method @Nullable public final String getTelecomCallId();
-    method @Deprecated public void onAudioStateChanged(android.telecom.AudioState);
-    method public final void resetConnectionTime();
-    method public void setCallDirection(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public final void setConnectTimeMillis(@IntRange(from=0) long);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public final void setConnectionStartElapsedRealtimeMillis(long);
-    method public void setPhoneAccountHandle(@NonNull android.telecom.PhoneAccountHandle);
-    method public void setTelecomCallId(@NonNull String);
-    field public static final int CAPABILITY_CONFERENCE_HAS_NO_CHILDREN = 2097152; // 0x200000
-    field public static final int CAPABILITY_SPEED_UP_MT_AUDIO = 262144; // 0x40000
-    field public static final String EXTRA_DISABLE_ADD_CALL = "android.telecom.extra.DISABLE_ADD_CALL";
-    field public static final int PROPERTY_EMERGENCY_CALLBACK_MODE = 1; // 0x1
-    field public static final int PROPERTY_GENERIC_CONFERENCE = 2; // 0x2
-    field public static final int PROPERTY_IS_DOWNGRADED_CONFERENCE = 64; // 0x40
-    field public static final int PROPERTY_REMOTELY_HOSTED = 2048; // 0x800
-  }
-
-  public final class ConnectionRequest implements android.os.Parcelable {
-    method @Nullable public String getTelecomCallId();
-  }
-
-  public abstract class ConnectionService extends android.app.Service {
-    method public final void addExistingConnection(@NonNull android.telecom.PhoneAccountHandle, @NonNull android.telecom.Connection, @NonNull android.telecom.Conference);
-  }
-
-  public final class DisconnectCause implements android.os.Parcelable {
-    field public static final String REASON_EMULATING_SINGLE_CALL = "EMULATING_SINGLE_CALL";
-  }
-
-  public abstract class InCallService extends android.app.Service {
-    method @Deprecated public android.telecom.Phone getPhone();
-    method @Deprecated public void onPhoneCreated(android.telecom.Phone);
-    method @Deprecated public void onPhoneDestroyed(android.telecom.Phone);
-  }
-
-  public class ParcelableCallAnalytics implements android.os.Parcelable {
-    ctor public ParcelableCallAnalytics(long, long, int, boolean, boolean, int, int, boolean, String, boolean, java.util.List<android.telecom.ParcelableCallAnalytics.AnalyticsEvent>, java.util.List<android.telecom.ParcelableCallAnalytics.EventTiming>);
-    ctor public ParcelableCallAnalytics(android.os.Parcel);
-    method public java.util.List<android.telecom.ParcelableCallAnalytics.AnalyticsEvent> analyticsEvents();
-    method public int describeContents();
-    method public long getCallDurationMillis();
-    method public int getCallTechnologies();
-    method public int getCallTerminationCode();
-    method public int getCallType();
-    method public String getConnectionService();
-    method public java.util.List<android.telecom.ParcelableCallAnalytics.EventTiming> getEventTimings();
-    method public long getStartTimeMillis();
-    method public boolean isAdditionalCall();
-    method public boolean isCreatedFromExistingConnection();
-    method public boolean isEmergencyCall();
-    method public boolean isInterrupted();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CALLTYPE_INCOMING = 1; // 0x1
-    field public static final int CALLTYPE_OUTGOING = 2; // 0x2
-    field public static final int CALLTYPE_UNKNOWN = 0; // 0x0
-    field public static final int CDMA_PHONE = 1; // 0x1
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.ParcelableCallAnalytics> CREATOR;
-    field public static final int GSM_PHONE = 2; // 0x2
-    field public static final int IMS_PHONE = 4; // 0x4
-    field public static final long MILLIS_IN_1_SECOND = 1000L; // 0x3e8L
-    field public static final long MILLIS_IN_5_MINUTES = 300000L; // 0x493e0L
-    field public static final int SIP_PHONE = 8; // 0x8
-    field public static final int STILL_CONNECTED = -1; // 0xffffffff
-    field public static final int THIRD_PARTY_PHONE = 16; // 0x10
-  }
-
-  public static final class ParcelableCallAnalytics.AnalyticsEvent implements android.os.Parcelable {
-    ctor public ParcelableCallAnalytics.AnalyticsEvent(int, long);
-    method public int describeContents();
-    method public int getEventName();
-    method public long getTimeSinceLastEvent();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int AUDIO_ROUTE_BT = 204; // 0xcc
-    field public static final int AUDIO_ROUTE_EARPIECE = 205; // 0xcd
-    field public static final int AUDIO_ROUTE_HEADSET = 206; // 0xce
-    field public static final int AUDIO_ROUTE_SPEAKER = 207; // 0xcf
-    field public static final int BIND_CS = 5; // 0x5
-    field public static final int BLOCK_CHECK_FINISHED = 105; // 0x69
-    field public static final int BLOCK_CHECK_INITIATED = 104; // 0x68
-    field public static final int CONFERENCE_WITH = 300; // 0x12c
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.ParcelableCallAnalytics.AnalyticsEvent> CREATOR;
-    field public static final int CS_BOUND = 6; // 0x6
-    field public static final int DIRECT_TO_VM_FINISHED = 103; // 0x67
-    field public static final int DIRECT_TO_VM_INITIATED = 102; // 0x66
-    field public static final int FILTERING_COMPLETED = 107; // 0x6b
-    field public static final int FILTERING_INITIATED = 106; // 0x6a
-    field public static final int FILTERING_TIMED_OUT = 108; // 0x6c
-    field public static final int MUTE = 202; // 0xca
-    field public static final int REMOTELY_HELD = 402; // 0x192
-    field public static final int REMOTELY_UNHELD = 403; // 0x193
-    field public static final int REQUEST_ACCEPT = 7; // 0x7
-    field public static final int REQUEST_HOLD = 400; // 0x190
-    field public static final int REQUEST_PULL = 500; // 0x1f4
-    field public static final int REQUEST_REJECT = 8; // 0x8
-    field public static final int REQUEST_UNHOLD = 401; // 0x191
-    field public static final int SCREENING_COMPLETED = 101; // 0x65
-    field public static final int SCREENING_SENT = 100; // 0x64
-    field public static final int SET_ACTIVE = 1; // 0x1
-    field public static final int SET_DIALING = 4; // 0x4
-    field public static final int SET_DISCONNECTED = 2; // 0x2
-    field public static final int SET_HOLD = 404; // 0x194
-    field public static final int SET_PARENT = 302; // 0x12e
-    field public static final int SET_SELECT_PHONE_ACCOUNT = 0; // 0x0
-    field public static final int SILENCE = 201; // 0xc9
-    field public static final int SKIP_RINGING = 200; // 0xc8
-    field public static final int SPLIT_CONFERENCE = 301; // 0x12d
-    field public static final int START_CONNECTION = 3; // 0x3
-    field public static final int SWAP = 405; // 0x195
-    field public static final int UNMUTE = 203; // 0xcb
-  }
-
-  public static final class ParcelableCallAnalytics.EventTiming implements android.os.Parcelable {
-    ctor public ParcelableCallAnalytics.EventTiming(int, long);
-    method public int describeContents();
-    method public int getName();
-    method public long getTime();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int ACCEPT_TIMING = 0; // 0x0
-    field public static final int BIND_CS_TIMING = 6; // 0x6
-    field public static final int BLOCK_CHECK_FINISHED_TIMING = 9; // 0x9
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.ParcelableCallAnalytics.EventTiming> CREATOR;
-    field public static final int DIRECT_TO_VM_FINISHED_TIMING = 8; // 0x8
-    field public static final int DISCONNECT_TIMING = 2; // 0x2
-    field public static final int FILTERING_COMPLETED_TIMING = 10; // 0xa
-    field public static final int FILTERING_TIMED_OUT_TIMING = 11; // 0xb
-    field public static final int HOLD_TIMING = 3; // 0x3
-    field public static final int INVALID = 999999; // 0xf423f
-    field public static final int OUTGOING_TIME_TO_DIALING_TIMING = 5; // 0x5
-    field public static final int REJECT_TIMING = 1; // 0x1
-    field public static final int SCREENING_COMPLETED_TIMING = 7; // 0x7
-    field public static final int UNHOLD_TIMING = 4; // 0x4
-  }
-
-  @Deprecated public final class Phone {
-    method @Deprecated public void addListener(android.telecom.Phone.Listener);
-    method @Deprecated public boolean canAddCall();
-    method @Deprecated public android.telecom.AudioState getAudioState();
-    method @Deprecated public android.telecom.CallAudioState getCallAudioState();
-    method @Deprecated public java.util.List<android.telecom.Call> getCalls();
-    method @Deprecated public void removeListener(android.telecom.Phone.Listener);
-    method @Deprecated public void requestBluetoothAudio(String);
-    method @Deprecated public void setAudioRoute(int);
-    method @Deprecated public void setMuted(boolean);
-  }
-
-  @Deprecated public abstract static class Phone.Listener {
-    ctor @Deprecated public Phone.Listener();
-    method @Deprecated public void onAudioStateChanged(android.telecom.Phone, android.telecom.AudioState);
-    method @Deprecated public void onBringToForeground(android.telecom.Phone, boolean);
-    method @Deprecated public void onCallAdded(android.telecom.Phone, android.telecom.Call);
-    method @Deprecated public void onCallAudioStateChanged(android.telecom.Phone, android.telecom.CallAudioState);
-    method @Deprecated public void onCallRemoved(android.telecom.Phone, android.telecom.Call);
-    method @Deprecated public void onCanAddCallChanged(android.telecom.Phone, boolean);
-    method @Deprecated public void onSilenceRinger(android.telecom.Phone);
-  }
-
-  public final class PhoneAccount implements android.os.Parcelable {
-    field public static final int CAPABILITY_EMERGENCY_CALLS_ONLY = 128; // 0x80
-    field public static final int CAPABILITY_EMERGENCY_PREFERRED = 8192; // 0x2000
-    field public static final int CAPABILITY_EMERGENCY_VIDEO_CALLING = 512; // 0x200
-    field public static final int CAPABILITY_MULTI_USER = 32; // 0x20
-    field public static final String EXTRA_PLAY_CALL_RECORDING_TONE = "android.telecom.extra.PLAY_CALL_RECORDING_TONE";
-    field public static final String EXTRA_SORT_ORDER = "android.telecom.extra.SORT_ORDER";
-  }
-
-  public static class PhoneAccount.Builder {
-    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.telecom.PhoneAccount.Builder setGroupId(@NonNull String);
-  }
-
-  public class PhoneAccountSuggestionService extends android.app.Service {
-    ctor public PhoneAccountSuggestionService();
-    method public void onAccountSuggestionRequest(@NonNull String);
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public final void suggestPhoneAccounts(@NonNull String, @NonNull java.util.List<android.telecom.PhoneAccountSuggestion>);
-    field public static final String SERVICE_INTERFACE = "android.telecom.PhoneAccountSuggestionService";
-  }
-
-  public final class RemoteConference {
-    method @Deprecated public void setAudioState(android.telecom.AudioState);
-  }
-
-  public final class RemoteConnection {
-    method @Deprecated public void setAudioState(android.telecom.AudioState);
-  }
-
-  public final class StatusHints implements android.os.Parcelable {
-    ctor @Deprecated public StatusHints(android.content.ComponentName, CharSequence, int, android.os.Bundle);
-    method @Deprecated public android.graphics.drawable.Drawable getIcon(android.content.Context);
-    method @Deprecated public int getIconResId();
-    method @Deprecated public android.content.ComponentName getPackageName();
-  }
-
-  public final class TelecomAnalytics implements android.os.Parcelable {
-    ctor public TelecomAnalytics(java.util.List<android.telecom.TelecomAnalytics.SessionTiming>, java.util.List<android.telecom.ParcelableCallAnalytics>);
-    method public int describeContents();
-    method public java.util.List<android.telecom.ParcelableCallAnalytics> getCallAnalytics();
-    method public java.util.List<android.telecom.TelecomAnalytics.SessionTiming> getSessionTimings();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.TelecomAnalytics> CREATOR;
-  }
-
-  public static final class TelecomAnalytics.SessionTiming implements android.os.Parcelable {
-    ctor public TelecomAnalytics.SessionTiming(int, long);
-    method public int describeContents();
-    method public Integer getKey();
-    method public long getTime();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telecom.TelecomAnalytics.SessionTiming> CREATOR;
-    field public static final int CSW_ADD_CONFERENCE_CALL = 108; // 0x6c
-    field public static final int CSW_HANDLE_CREATE_CONNECTION_COMPLETE = 100; // 0x64
-    field public static final int CSW_REMOVE_CALL = 106; // 0x6a
-    field public static final int CSW_SET_ACTIVE = 101; // 0x65
-    field public static final int CSW_SET_DIALING = 103; // 0x67
-    field public static final int CSW_SET_DISCONNECTED = 104; // 0x68
-    field public static final int CSW_SET_IS_CONFERENCED = 107; // 0x6b
-    field public static final int CSW_SET_ON_HOLD = 105; // 0x69
-    field public static final int CSW_SET_RINGING = 102; // 0x66
-    field public static final int ICA_ANSWER_CALL = 1; // 0x1
-    field public static final int ICA_CONFERENCE = 8; // 0x8
-    field public static final int ICA_DISCONNECT_CALL = 3; // 0x3
-    field public static final int ICA_HOLD_CALL = 4; // 0x4
-    field public static final int ICA_MUTE = 6; // 0x6
-    field public static final int ICA_REJECT_CALL = 2; // 0x2
-    field public static final int ICA_SET_AUDIO_ROUTE = 7; // 0x7
-    field public static final int ICA_UNHOLD_CALL = 5; // 0x5
-  }
-
-  public class TelecomManager {
-    method public void addNewUnknownCall(android.telecom.PhoneAccountHandle, android.os.Bundle);
-    method @Deprecated public void clearAccounts();
-    method public void clearPhoneAccounts();
-    method @NonNull public android.content.Intent createLaunchEmergencyDialerIntent(@Nullable String);
-    method @RequiresPermission(android.Manifest.permission.DUMP) public android.telecom.TelecomAnalytics dumpAnalytics();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void enablePhoneAccount(android.telecom.PhoneAccountHandle, boolean);
-    method public java.util.List<android.telecom.PhoneAccountHandle> getAllPhoneAccountHandles();
-    method public java.util.List<android.telecom.PhoneAccount> getAllPhoneAccounts();
-    method public int getAllPhoneAccountsCount();
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.List<android.telecom.PhoneAccountHandle> getCallCapablePhoneAccounts(boolean);
-    method public int getCallState();
-    method public android.telecom.PhoneAccountHandle getConnectionManager();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getCurrentTtyMode();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getDefaultDialerPackage(@NonNull android.os.UserHandle);
-    method @Deprecated public android.content.ComponentName getDefaultPhoneApp();
-    method public java.util.List<android.telecom.PhoneAccountHandle> getPhoneAccountsForPackage();
-    method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public java.util.List<android.telecom.PhoneAccountHandle> getPhoneAccountsSupportingScheme(String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean isInEmergencyCall();
-    method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isRinging();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setUserSelectedOutgoingPhoneAccount(@Nullable android.telecom.PhoneAccountHandle);
-    field public static final String ACTION_CURRENT_TTY_MODE_CHANGED = "android.telecom.action.CURRENT_TTY_MODE_CHANGED";
-    field public static final String ACTION_TTY_PREFERRED_MODE_CHANGED = "android.telecom.action.TTY_PREFERRED_MODE_CHANGED";
-    field public static final int CALL_SOURCE_EMERGENCY_DIALPAD = 1; // 0x1
-    field public static final int CALL_SOURCE_EMERGENCY_SHORTCUT = 2; // 0x2
-    field public static final int CALL_SOURCE_UNSPECIFIED = 0; // 0x0
-    field public static final String EXTRA_CALL_BACK_INTENT = "android.telecom.extra.CALL_BACK_INTENT";
-    field public static final String EXTRA_CALL_SOURCE = "android.telecom.extra.CALL_SOURCE";
-    field public static final String EXTRA_CALL_TECHNOLOGY_TYPE = "android.telecom.extra.CALL_TECHNOLOGY_TYPE";
-    field public static final String EXTRA_CLEAR_MISSED_CALLS_INTENT = "android.telecom.extra.CLEAR_MISSED_CALLS_INTENT";
-    field public static final String EXTRA_CONNECTION_SERVICE = "android.telecom.extra.CONNECTION_SERVICE";
-    field public static final String EXTRA_CURRENT_TTY_MODE = "android.telecom.extra.CURRENT_TTY_MODE";
-    field public static final String EXTRA_IS_USER_INTENT_EMERGENCY_CALL = "android.telecom.extra.IS_USER_INTENT_EMERGENCY_CALL";
-    field public static final String EXTRA_TTY_PREFERRED_MODE = "android.telecom.extra.TTY_PREFERRED_MODE";
-    field public static final String EXTRA_UNKNOWN_CALL_HANDLE = "android.telecom.extra.UNKNOWN_CALL_HANDLE";
-    field public static final int TTY_MODE_FULL = 1; // 0x1
-    field public static final int TTY_MODE_HCO = 2; // 0x2
-    field public static final int TTY_MODE_OFF = 0; // 0x0
-    field public static final int TTY_MODE_VCO = 3; // 0x3
-  }
-
-}
-
-package android.telephony {
-
-  public final class AccessNetworkConstants {
-    field public static final int TRANSPORT_TYPE_INVALID = -1; // 0xffffffff
-  }
-
-  public static final class AccessNetworkConstants.NgranBands {
-    method public static int getFrequencyRangeGroup(int);
-    field public static final int FREQUENCY_RANGE_GROUP_1 = 1; // 0x1
-    field public static final int FREQUENCY_RANGE_GROUP_2 = 2; // 0x2
-    field public static final int FREQUENCY_RANGE_GROUP_UNKNOWN = 0; // 0x0
-  }
-
-  public final class BarringInfo implements android.os.Parcelable {
-    ctor public BarringInfo();
-    method @NonNull public android.telephony.BarringInfo createLocationInfoSanitizedCopy();
-  }
-
-  public final class CallAttributes implements android.os.Parcelable {
-    ctor public CallAttributes(@NonNull android.telephony.PreciseCallState, int, @NonNull android.telephony.CallQuality);
-    method public int describeContents();
-    method @NonNull public android.telephony.CallQuality getCallQuality();
-    method public int getNetworkType();
-    method @NonNull public android.telephony.PreciseCallState getPreciseCallState();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CallAttributes> CREATOR;
-  }
-
-  public final class CallQuality implements android.os.Parcelable {
-    ctor public CallQuality(int, int, int, int, int, int, int, int, int, int, int);
-    ctor public CallQuality(int, int, int, int, int, int, int, int, int, int, int, boolean, boolean, boolean);
-    method public int describeContents();
-    method public int getAverageRelativeJitter();
-    method public int getAverageRoundTripTime();
-    method public int getCallDuration();
-    method public int getCodecType();
-    method public int getDownlinkCallQualityLevel();
-    method public int getMaxRelativeJitter();
-    method public int getNumRtpPacketsNotReceived();
-    method public int getNumRtpPacketsReceived();
-    method public int getNumRtpPacketsTransmitted();
-    method public int getNumRtpPacketsTransmittedLost();
-    method public int getUplinkCallQualityLevel();
-    method public boolean isIncomingSilenceDetectedAtCallSetup();
-    method public boolean isOutgoingSilenceDetectedAtCallSetup();
-    method public boolean isRtpInactivityDetected();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CALL_QUALITY_BAD = 4; // 0x4
-    field public static final int CALL_QUALITY_EXCELLENT = 0; // 0x0
-    field public static final int CALL_QUALITY_FAIR = 2; // 0x2
-    field public static final int CALL_QUALITY_GOOD = 1; // 0x1
-    field public static final int CALL_QUALITY_NOT_AVAILABLE = 5; // 0x5
-    field public static final int CALL_QUALITY_POOR = 3; // 0x3
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CallQuality> CREATOR;
-  }
-
-  public class CarrierConfigManager {
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getDefaultCarrierServicePackageName();
-    method @NonNull public static android.os.PersistableBundle getDefaultConfig();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void overrideConfig(int, @Nullable android.os.PersistableBundle);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void updateConfigForPhoneId(int, String);
-    field public static final String KEY_CARRIER_SETUP_APP_STRING = "carrier_setup_app_string";
-    field public static final String KEY_SUPPORT_CDMA_1X_VOICE_CALLS_BOOL = "support_cdma_1x_voice_calls_bool";
-  }
-
-  public static final class CarrierConfigManager.Wifi {
-    field public static final String KEY_HOTSPOT_MAX_CLIENT_COUNT = "wifi.hotspot_maximum_client_count";
-    field public static final String KEY_PREFIX = "wifi.";
-  }
-
-  public final class CarrierRestrictionRules implements android.os.Parcelable {
-    method @NonNull public java.util.List<java.lang.Boolean> areCarrierIdentifiersAllowed(@NonNull java.util.List<android.service.carrier.CarrierIdentifier>);
-    method public int describeContents();
-    method @NonNull public java.util.List<android.service.carrier.CarrierIdentifier> getAllowedCarriers();
-    method public int getDefaultCarrierRestriction();
-    method @NonNull public java.util.List<android.service.carrier.CarrierIdentifier> getExcludedCarriers();
-    method public int getMultiSimPolicy();
-    method public boolean isAllCarriersAllowed();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CARRIER_RESTRICTION_DEFAULT_ALLOWED = 1; // 0x1
-    field public static final int CARRIER_RESTRICTION_DEFAULT_NOT_ALLOWED = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CarrierRestrictionRules> CREATOR;
-    field public static final int MULTISIM_POLICY_NONE = 0; // 0x0
-    field public static final int MULTISIM_POLICY_ONE_VALID_SIM_MUST_BE_PRESENT = 1; // 0x1
-  }
-
-  public static final class CarrierRestrictionRules.Builder {
-    ctor public CarrierRestrictionRules.Builder();
-    method @NonNull public android.telephony.CarrierRestrictionRules build();
-    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setAllCarriersAllowed();
-    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setAllowedCarriers(@NonNull java.util.List<android.service.carrier.CarrierIdentifier>);
-    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setDefaultCarrierRestriction(int);
-    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setExcludedCarriers(@NonNull java.util.List<android.service.carrier.CarrierIdentifier>);
-    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setMultiSimPolicy(int);
-  }
-
-  public class CbGeoUtils {
-  }
-
-  public static class CbGeoUtils.Circle implements android.telephony.CbGeoUtils.Geometry {
-    ctor public CbGeoUtils.Circle(@NonNull android.telephony.CbGeoUtils.LatLng, double);
-    method public boolean contains(@NonNull android.telephony.CbGeoUtils.LatLng);
-    method @NonNull public android.telephony.CbGeoUtils.LatLng getCenter();
-    method public double getRadius();
-  }
-
-  public static interface CbGeoUtils.Geometry {
-    method public boolean contains(@NonNull android.telephony.CbGeoUtils.LatLng);
-  }
-
-  public static class CbGeoUtils.LatLng {
-    ctor public CbGeoUtils.LatLng(double, double);
-    method public double distance(@NonNull android.telephony.CbGeoUtils.LatLng);
-    method @NonNull public android.telephony.CbGeoUtils.LatLng subtract(@NonNull android.telephony.CbGeoUtils.LatLng);
-    field public final double lat;
-    field public final double lng;
-  }
-
-  public static class CbGeoUtils.Polygon implements android.telephony.CbGeoUtils.Geometry {
-    ctor public CbGeoUtils.Polygon(@NonNull java.util.List<android.telephony.CbGeoUtils.LatLng>);
-    method public boolean contains(@NonNull android.telephony.CbGeoUtils.LatLng);
-    method @NonNull public java.util.List<android.telephony.CbGeoUtils.LatLng> getVertices();
-  }
-
-  public class CellBroadcastIntents {
-    method public static void sendSmsCbReceivedBroadcast(@NonNull android.content.Context, @Nullable android.os.UserHandle, @NonNull android.telephony.SmsCbMessage, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, int);
-    field public static final String ACTION_AREA_INFO_UPDATED = "android.telephony.action.AREA_INFO_UPDATED";
-  }
-
-  public abstract class CellBroadcastService extends android.app.Service {
-    ctor public CellBroadcastService();
-    method @NonNull @WorkerThread public abstract CharSequence getCellBroadcastAreaInfo(int);
-    method @CallSuper public android.os.IBinder onBind(@Nullable android.content.Intent);
-    method public abstract void onCdmaCellBroadcastSms(int, @NonNull byte[], int);
-    method public abstract void onCdmaScpMessage(int, @NonNull java.util.List<android.telephony.cdma.CdmaSmsCbProgramData>, @NonNull String, @NonNull java.util.function.Consumer<android.os.Bundle>);
-    method public abstract void onGsmCellBroadcastSms(int, @NonNull byte[]);
-    field public static final String CELL_BROADCAST_SERVICE_INTERFACE = "android.telephony.CellBroadcastService";
-  }
-
-  public abstract class CellIdentity implements android.os.Parcelable {
-    method @NonNull public abstract android.telephony.CellLocation asCellLocation();
-    method @NonNull public abstract android.telephony.CellIdentity sanitizeLocationInfo();
-  }
-
-  public final class CellIdentityCdma extends android.telephony.CellIdentity {
-    method @NonNull public android.telephony.cdma.CdmaCellLocation asCellLocation();
-    method @NonNull public android.telephony.CellIdentityCdma sanitizeLocationInfo();
-  }
-
-  public final class CellIdentityGsm extends android.telephony.CellIdentity {
-    method @NonNull public android.telephony.gsm.GsmCellLocation asCellLocation();
-    method @NonNull public android.telephony.CellIdentityGsm sanitizeLocationInfo();
-  }
-
-  public final class CellIdentityLte extends android.telephony.CellIdentity {
-    method @NonNull public android.telephony.gsm.GsmCellLocation asCellLocation();
-    method @NonNull public android.telephony.CellIdentityLte sanitizeLocationInfo();
-  }
-
-  public final class CellIdentityNr extends android.telephony.CellIdentity {
-    method @NonNull public android.telephony.CellLocation asCellLocation();
-    method @NonNull public android.telephony.CellIdentityNr sanitizeLocationInfo();
-  }
-
-  public final class CellIdentityTdscdma extends android.telephony.CellIdentity {
-    method @NonNull public android.telephony.gsm.GsmCellLocation asCellLocation();
-    method @NonNull public android.telephony.CellIdentityTdscdma sanitizeLocationInfo();
-  }
-
-  public final class CellIdentityWcdma extends android.telephony.CellIdentity {
-    method @NonNull public android.telephony.gsm.GsmCellLocation asCellLocation();
-    method @NonNull public android.telephony.CellIdentityWcdma sanitizeLocationInfo();
-  }
-
-  public final class DataFailCause {
-    field @Deprecated public static final int VSNCP_APN_UNATHORIZED = 2238; // 0x8be
-  }
-
-  public final class DataSpecificRegistrationInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.telephony.LteVopsSupportInfo getLteVopsSupportInfo();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.DataSpecificRegistrationInfo> CREATOR;
-  }
-
-  public final class ImsiEncryptionInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getKeyIdentifier();
-    method @Nullable public java.security.PublicKey getPublicKey();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ImsiEncryptionInfo> CREATOR;
-  }
-
-  public final class LteVopsSupportInfo implements android.os.Parcelable {
-    ctor public LteVopsSupportInfo(int, int);
-    method public int describeContents();
-    method public int getEmcBearerSupport();
-    method public int getVopsSupport();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.LteVopsSupportInfo> CREATOR;
-    field public static final int LTE_STATUS_NOT_AVAILABLE = 1; // 0x1
-    field public static final int LTE_STATUS_NOT_SUPPORTED = 3; // 0x3
-    field public static final int LTE_STATUS_SUPPORTED = 2; // 0x2
-  }
-
-  public class MbmsDownloadSession implements java.lang.AutoCloseable {
-    field public static final String MBMS_DOWNLOAD_SERVICE_ACTION = "android.telephony.action.EmbmsDownload";
-  }
-
-  public class MbmsGroupCallSession implements java.lang.AutoCloseable {
-    field public static final String MBMS_GROUP_CALL_SERVICE_ACTION = "android.telephony.action.EmbmsGroupCall";
-  }
-
-  public class MbmsStreamingSession implements java.lang.AutoCloseable {
-    field public static final String MBMS_STREAMING_SERVICE_ACTION = "android.telephony.action.EmbmsStreaming";
-  }
-
-  public final class NetworkRegistrationInfo implements android.os.Parcelable {
-    method @Nullable public android.telephony.DataSpecificRegistrationInfo getDataSpecificInfo();
-    method public int getRegistrationState();
-    method public int getRejectCause();
-    method public int getRoamingType();
-    method public boolean isEmergencyEnabled();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int REGISTRATION_STATE_DENIED = 3; // 0x3
-    field public static final int REGISTRATION_STATE_HOME = 1; // 0x1
-    field public static final int REGISTRATION_STATE_NOT_REGISTERED_OR_SEARCHING = 0; // 0x0
-    field public static final int REGISTRATION_STATE_NOT_REGISTERED_SEARCHING = 2; // 0x2
-    field public static final int REGISTRATION_STATE_ROAMING = 5; // 0x5
-    field public static final int REGISTRATION_STATE_UNKNOWN = 4; // 0x4
-  }
-
-  public static final class NetworkRegistrationInfo.Builder {
-    ctor public NetworkRegistrationInfo.Builder();
-    method @NonNull public android.telephony.NetworkRegistrationInfo build();
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setAccessNetworkTechnology(int);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setAvailableServices(@NonNull java.util.List<java.lang.Integer>);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setCellIdentity(@Nullable android.telephony.CellIdentity);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setDomain(int);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setEmergencyOnly(boolean);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setRegisteredPlmn(@Nullable String);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setRegistrationState(int);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setRejectCause(int);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setTransportType(int);
-  }
-
-  public abstract class NetworkService extends android.app.Service {
-    ctor public NetworkService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method @Nullable public abstract android.telephony.NetworkService.NetworkServiceProvider onCreateNetworkServiceProvider(int);
-    field public static final String SERVICE_INTERFACE = "android.telephony.NetworkService";
-  }
-
-  public abstract class NetworkService.NetworkServiceProvider implements java.lang.AutoCloseable {
-    ctor public NetworkService.NetworkServiceProvider(int);
-    method public abstract void close();
-    method public final int getSlotIndex();
-    method public final void notifyNetworkRegistrationInfoChanged();
-    method public void requestNetworkRegistrationInfo(int, @NonNull android.telephony.NetworkServiceCallback);
-  }
-
-  public class NetworkServiceCallback {
-    method public void onRequestNetworkRegistrationInfoComplete(int, @Nullable android.telephony.NetworkRegistrationInfo);
-    field public static final int RESULT_ERROR_BUSY = 3; // 0x3
-    field public static final int RESULT_ERROR_FAILED = 5; // 0x5
-    field public static final int RESULT_ERROR_ILLEGAL_STATE = 4; // 0x4
-    field public static final int RESULT_ERROR_INVALID_ARG = 2; // 0x2
-    field public static final int RESULT_ERROR_UNSUPPORTED = 1; // 0x1
-    field public static final int RESULT_SUCCESS = 0; // 0x0
-  }
-
-  public interface NumberVerificationCallback {
-    method public default void onCallReceived(@NonNull String);
-    method public default void onVerificationFailed(int);
-    field public static final int REASON_CONCURRENT_REQUESTS = 4; // 0x4
-    field public static final int REASON_IN_ECBM = 5; // 0x5
-    field public static final int REASON_IN_EMERGENCY_CALL = 6; // 0x6
-    field public static final int REASON_NETWORK_NOT_AVAILABLE = 2; // 0x2
-    field public static final int REASON_TIMED_OUT = 1; // 0x1
-    field public static final int REASON_TOO_MANY_CALLS = 3; // 0x3
-    field public static final int REASON_UNSPECIFIED = 0; // 0x0
-  }
-
-  public final class PhoneNumberRange implements android.os.Parcelable {
-    ctor public PhoneNumberRange(@NonNull String, @NonNull String, @NonNull String, @NonNull String);
-    method public int describeContents();
-    method public boolean matches(@NonNull String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.PhoneNumberRange> CREATOR;
-  }
-
-  public class PhoneNumberUtils {
-    method @NonNull public static String getUsernameFromUriNumber(@NonNull String);
-    method public static boolean isUriNumber(@Nullable String);
-    method public static boolean isVoiceMailNumber(@NonNull android.content.Context, int, @Nullable String);
-  }
-
-  public class PhoneStateListener {
-    method public void onCallAttributesChanged(@NonNull android.telephony.CallAttributes);
-    method public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber);
-    method public void onOutgoingEmergencySms(@NonNull android.telephony.emergency.EmergencyNumber);
-    method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onPreciseCallStateChanged(@NonNull android.telephony.PreciseCallState);
-    method public void onRadioPowerStateChanged(int);
-    method public void onSrvccStateChanged(int);
-    method public void onVoiceActivationStateChanged(int);
-    field @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public static final int LISTEN_CALL_ATTRIBUTES_CHANGED = 67108864; // 0x4000000
-    field @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION) public static final int LISTEN_OUTGOING_EMERGENCY_CALL = 268435456; // 0x10000000
-    field @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION) public static final int LISTEN_OUTGOING_EMERGENCY_SMS = 536870912; // 0x20000000
-    field @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public static final int LISTEN_PRECISE_CALL_STATE = 2048; // 0x800
-    field @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static final int LISTEN_RADIO_POWER_STATE_CHANGED = 8388608; // 0x800000
-    field @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static final int LISTEN_SRVCC_STATE_CHANGED = 16384; // 0x4000
-    field @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static final int LISTEN_VOICE_ACTIVATION_STATE = 131072; // 0x20000
-  }
-
-  public final class PreciseCallState implements android.os.Parcelable {
-    ctor public PreciseCallState(int, int, int, int, int);
-    method public int describeContents();
-    method public int getBackgroundCallState();
-    method public int getForegroundCallState();
-    method public int getRingingCallState();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.PreciseCallState> CREATOR;
-    field public static final int PRECISE_CALL_STATE_ACTIVE = 1; // 0x1
-    field public static final int PRECISE_CALL_STATE_ALERTING = 4; // 0x4
-    field public static final int PRECISE_CALL_STATE_DIALING = 3; // 0x3
-    field public static final int PRECISE_CALL_STATE_DISCONNECTED = 7; // 0x7
-    field public static final int PRECISE_CALL_STATE_DISCONNECTING = 8; // 0x8
-    field public static final int PRECISE_CALL_STATE_HOLDING = 2; // 0x2
-    field public static final int PRECISE_CALL_STATE_IDLE = 0; // 0x0
-    field public static final int PRECISE_CALL_STATE_INCOMING = 5; // 0x5
-    field public static final int PRECISE_CALL_STATE_NOT_VALID = -1; // 0xffffffff
-    field public static final int PRECISE_CALL_STATE_WAITING = 6; // 0x6
-  }
-
-  public final class PreciseDataConnectionState implements android.os.Parcelable {
-    method @Deprecated @NonNull public String getDataConnectionApn();
-    method @Deprecated public int getDataConnectionApnTypeBitMask();
-    method @Deprecated public int getDataConnectionFailCause();
-    method @Deprecated public int getDataConnectionState();
-  }
-
-  public final class PreciseDisconnectCause {
-    field public static final int ACCESS_CLASS_BLOCKED = 260; // 0x104
-    field public static final int ACCESS_INFORMATION_DISCARDED = 43; // 0x2b
-    field public static final int ACM_LIMIT_EXCEEDED = 68; // 0x44
-    field public static final int BEARER_CAPABILITY_NOT_AUTHORIZED = 57; // 0x39
-    field public static final int BEARER_NOT_AVAIL = 58; // 0x3a
-    field public static final int BEARER_SERVICE_NOT_IMPLEMENTED = 65; // 0x41
-    field public static final int BUSY = 17; // 0x11
-    field public static final int CALL_BARRED = 240; // 0xf0
-    field public static final int CALL_REJECTED = 21; // 0x15
-    field public static final int CDMA_ACCESS_BLOCKED = 1009; // 0x3f1
-    field public static final int CDMA_ACCESS_FAILURE = 1006; // 0x3ee
-    field public static final int CDMA_DROP = 1001; // 0x3e9
-    field public static final int CDMA_INTERCEPT = 1002; // 0x3ea
-    field public static final int CDMA_LOCKED_UNTIL_POWER_CYCLE = 1000; // 0x3e8
-    field public static final int CDMA_NOT_EMERGENCY = 1008; // 0x3f0
-    field public static final int CDMA_PREEMPTED = 1007; // 0x3ef
-    field public static final int CDMA_REORDER = 1003; // 0x3eb
-    field public static final int CDMA_RETRY_ORDER = 1005; // 0x3ed
-    field public static final int CDMA_SO_REJECT = 1004; // 0x3ec
-    field public static final int CHANNEL_NOT_AVAIL = 44; // 0x2c
-    field public static final int CHANNEL_UNACCEPTABLE = 6; // 0x6
-    field public static final int CONDITIONAL_IE_ERROR = 100; // 0x64
-    field public static final int DESTINATION_OUT_OF_ORDER = 27; // 0x1b
-    field public static final int ERROR_UNSPECIFIED = 65535; // 0xffff
-    field public static final int FACILITY_REJECTED = 29; // 0x1d
-    field public static final int FDN_BLOCKED = 241; // 0xf1
-    field public static final int IMEI_NOT_ACCEPTED = 243; // 0xf3
-    field public static final int IMSI_UNKNOWN_IN_VLR = 242; // 0xf2
-    field public static final int INCOMING_CALLS_BARRED_WITHIN_CUG = 55; // 0x37
-    field public static final int INCOMPATIBLE_DESTINATION = 88; // 0x58
-    field public static final int INFORMATION_ELEMENT_NON_EXISTENT = 99; // 0x63
-    field public static final int INTERWORKING_UNSPECIFIED = 127; // 0x7f
-    field public static final int INVALID_MANDATORY_INFORMATION = 96; // 0x60
-    field public static final int INVALID_NUMBER_FORMAT = 28; // 0x1c
-    field public static final int INVALID_TRANSACTION_IDENTIFIER = 81; // 0x51
-    field public static final int MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 101; // 0x65
-    field public static final int MESSAGE_TYPE_NON_IMPLEMENTED = 97; // 0x61
-    field public static final int MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 98; // 0x62
-    field public static final int NETWORK_DETACH = 261; // 0x105
-    field public static final int NETWORK_OUT_OF_ORDER = 38; // 0x26
-    field public static final int NETWORK_REJECT = 252; // 0xfc
-    field public static final int NETWORK_RESP_TIMEOUT = 251; // 0xfb
-    field public static final int NORMAL = 16; // 0x10
-    field public static final int NORMAL_UNSPECIFIED = 31; // 0x1f
-    field public static final int NOT_VALID = -1; // 0xffffffff
-    field public static final int NO_ANSWER_FROM_USER = 19; // 0x13
-    field public static final int NO_CIRCUIT_AVAIL = 34; // 0x22
-    field public static final int NO_DISCONNECT_CAUSE_AVAILABLE = 0; // 0x0
-    field public static final int NO_ROUTE_TO_DESTINATION = 3; // 0x3
-    field public static final int NO_USER_RESPONDING = 18; // 0x12
-    field public static final int NO_VALID_SIM = 249; // 0xf9
-    field public static final int NUMBER_CHANGED = 22; // 0x16
-    field public static final int OEM_CAUSE_1 = 61441; // 0xf001
-    field public static final int OEM_CAUSE_10 = 61450; // 0xf00a
-    field public static final int OEM_CAUSE_11 = 61451; // 0xf00b
-    field public static final int OEM_CAUSE_12 = 61452; // 0xf00c
-    field public static final int OEM_CAUSE_13 = 61453; // 0xf00d
-    field public static final int OEM_CAUSE_14 = 61454; // 0xf00e
-    field public static final int OEM_CAUSE_15 = 61455; // 0xf00f
-    field public static final int OEM_CAUSE_2 = 61442; // 0xf002
-    field public static final int OEM_CAUSE_3 = 61443; // 0xf003
-    field public static final int OEM_CAUSE_4 = 61444; // 0xf004
-    field public static final int OEM_CAUSE_5 = 61445; // 0xf005
-    field public static final int OEM_CAUSE_6 = 61446; // 0xf006
-    field public static final int OEM_CAUSE_7 = 61447; // 0xf007
-    field public static final int OEM_CAUSE_8 = 61448; // 0xf008
-    field public static final int OEM_CAUSE_9 = 61449; // 0xf009
-    field public static final int ONLY_DIGITAL_INFORMATION_BEARER_AVAILABLE = 70; // 0x46
-    field public static final int OPERATOR_DETERMINED_BARRING = 8; // 0x8
-    field public static final int OUT_OF_SRV = 248; // 0xf8
-    field public static final int PREEMPTION = 25; // 0x19
-    field public static final int PROTOCOL_ERROR_UNSPECIFIED = 111; // 0x6f
-    field public static final int QOS_NOT_AVAIL = 49; // 0x31
-    field public static final int RADIO_ACCESS_FAILURE = 253; // 0xfd
-    field public static final int RADIO_INTERNAL_ERROR = 250; // 0xfa
-    field public static final int RADIO_LINK_FAILURE = 254; // 0xfe
-    field public static final int RADIO_LINK_LOST = 255; // 0xff
-    field public static final int RADIO_OFF = 247; // 0xf7
-    field public static final int RADIO_RELEASE_ABNORMAL = 259; // 0x103
-    field public static final int RADIO_RELEASE_NORMAL = 258; // 0x102
-    field public static final int RADIO_SETUP_FAILURE = 257; // 0x101
-    field public static final int RADIO_UPLINK_FAILURE = 256; // 0x100
-    field public static final int RECOVERY_ON_TIMER_EXPIRED = 102; // 0x66
-    field public static final int REQUESTED_FACILITY_NOT_IMPLEMENTED = 69; // 0x45
-    field public static final int REQUESTED_FACILITY_NOT_SUBSCRIBED = 50; // 0x32
-    field public static final int RESOURCES_UNAVAILABLE_OR_UNSPECIFIED = 47; // 0x2f
-    field public static final int SEMANTICALLY_INCORRECT_MESSAGE = 95; // 0x5f
-    field public static final int SERVICE_OPTION_NOT_AVAILABLE = 63; // 0x3f
-    field public static final int SERVICE_OR_OPTION_NOT_IMPLEMENTED = 79; // 0x4f
-    field public static final int STATUS_ENQUIRY = 30; // 0x1e
-    field public static final int SWITCHING_CONGESTION = 42; // 0x2a
-    field public static final int TEMPORARY_FAILURE = 41; // 0x29
-    field public static final int UNOBTAINABLE_NUMBER = 1; // 0x1
-    field public static final int USER_NOT_MEMBER_OF_CUG = 87; // 0x57
-  }
-
-  public class ServiceState implements android.os.Parcelable {
-    method @Nullable public android.telephony.NetworkRegistrationInfo getNetworkRegistrationInfo(int, int);
-    method @NonNull public java.util.List<android.telephony.NetworkRegistrationInfo> getNetworkRegistrationInfoListForDomain(int);
-    method @NonNull public java.util.List<android.telephony.NetworkRegistrationInfo> getNetworkRegistrationInfoListForTransportType(int);
-    field public static final int ROAMING_TYPE_DOMESTIC = 2; // 0x2
-    field public static final int ROAMING_TYPE_INTERNATIONAL = 3; // 0x3
-    field public static final int ROAMING_TYPE_NOT_ROAMING = 0; // 0x0
-    field public static final int ROAMING_TYPE_UNKNOWN = 1; // 0x1
-  }
-
-  public final class SmsCbCmasInfo implements android.os.Parcelable {
-    ctor public SmsCbCmasInfo(int, int, int, int, int, int);
-    method public int describeContents();
-    method public int getCategory();
-    method public int getCertainty();
-    method public int getMessageClass();
-    method public int getResponseType();
-    method public int getSeverity();
-    method public int getUrgency();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CMAS_CATEGORY_CBRNE = 10; // 0xa
-    field public static final int CMAS_CATEGORY_ENV = 7; // 0x7
-    field public static final int CMAS_CATEGORY_FIRE = 5; // 0x5
-    field public static final int CMAS_CATEGORY_GEO = 0; // 0x0
-    field public static final int CMAS_CATEGORY_HEALTH = 6; // 0x6
-    field public static final int CMAS_CATEGORY_INFRA = 9; // 0x9
-    field public static final int CMAS_CATEGORY_MET = 1; // 0x1
-    field public static final int CMAS_CATEGORY_OTHER = 11; // 0xb
-    field public static final int CMAS_CATEGORY_RESCUE = 4; // 0x4
-    field public static final int CMAS_CATEGORY_SAFETY = 2; // 0x2
-    field public static final int CMAS_CATEGORY_SECURITY = 3; // 0x3
-    field public static final int CMAS_CATEGORY_TRANSPORT = 8; // 0x8
-    field public static final int CMAS_CATEGORY_UNKNOWN = -1; // 0xffffffff
-    field public static final int CMAS_CERTAINTY_LIKELY = 1; // 0x1
-    field public static final int CMAS_CERTAINTY_OBSERVED = 0; // 0x0
-    field public static final int CMAS_CERTAINTY_UNKNOWN = -1; // 0xffffffff
-    field public static final int CMAS_CLASS_CHILD_ABDUCTION_EMERGENCY = 3; // 0x3
-    field public static final int CMAS_CLASS_CMAS_EXERCISE = 5; // 0x5
-    field public static final int CMAS_CLASS_EXTREME_THREAT = 1; // 0x1
-    field public static final int CMAS_CLASS_OPERATOR_DEFINED_USE = 6; // 0x6
-    field public static final int CMAS_CLASS_PRESIDENTIAL_LEVEL_ALERT = 0; // 0x0
-    field public static final int CMAS_CLASS_REQUIRED_MONTHLY_TEST = 4; // 0x4
-    field public static final int CMAS_CLASS_SEVERE_THREAT = 2; // 0x2
-    field public static final int CMAS_CLASS_UNKNOWN = -1; // 0xffffffff
-    field public static final int CMAS_RESPONSE_TYPE_ASSESS = 6; // 0x6
-    field public static final int CMAS_RESPONSE_TYPE_AVOID = 5; // 0x5
-    field public static final int CMAS_RESPONSE_TYPE_EVACUATE = 1; // 0x1
-    field public static final int CMAS_RESPONSE_TYPE_EXECUTE = 3; // 0x3
-    field public static final int CMAS_RESPONSE_TYPE_MONITOR = 4; // 0x4
-    field public static final int CMAS_RESPONSE_TYPE_NONE = 7; // 0x7
-    field public static final int CMAS_RESPONSE_TYPE_PREPARE = 2; // 0x2
-    field public static final int CMAS_RESPONSE_TYPE_SHELTER = 0; // 0x0
-    field public static final int CMAS_RESPONSE_TYPE_UNKNOWN = -1; // 0xffffffff
-    field public static final int CMAS_SEVERITY_EXTREME = 0; // 0x0
-    field public static final int CMAS_SEVERITY_SEVERE = 1; // 0x1
-    field public static final int CMAS_SEVERITY_UNKNOWN = -1; // 0xffffffff
-    field public static final int CMAS_URGENCY_EXPECTED = 1; // 0x1
-    field public static final int CMAS_URGENCY_IMMEDIATE = 0; // 0x0
-    field public static final int CMAS_URGENCY_UNKNOWN = -1; // 0xffffffff
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SmsCbCmasInfo> CREATOR;
-  }
-
-  public final class SmsCbEtwsInfo implements android.os.Parcelable {
-    ctor public SmsCbEtwsInfo(int, boolean, boolean, boolean, @Nullable byte[]);
-    method public int describeContents();
-    method @Nullable public byte[] getPrimaryNotificationSignature();
-    method public long getPrimaryNotificationTimestamp();
-    method public int getWarningType();
-    method public boolean isEmergencyUserAlert();
-    method public boolean isPopupAlert();
-    method public boolean isPrimary();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SmsCbEtwsInfo> CREATOR;
-    field public static final int ETWS_WARNING_TYPE_EARTHQUAKE = 0; // 0x0
-    field public static final int ETWS_WARNING_TYPE_EARTHQUAKE_AND_TSUNAMI = 2; // 0x2
-    field public static final int ETWS_WARNING_TYPE_OTHER_EMERGENCY = 4; // 0x4
-    field public static final int ETWS_WARNING_TYPE_TEST_MESSAGE = 3; // 0x3
-    field public static final int ETWS_WARNING_TYPE_TSUNAMI = 1; // 0x1
-    field public static final int ETWS_WARNING_TYPE_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public final class SmsCbLocation implements android.os.Parcelable {
-    ctor public SmsCbLocation(@NonNull String, int, int);
-    method public int describeContents();
-    method public int getCid();
-    method public int getLac();
-    method @NonNull public String getPlmn();
-    method public boolean isInLocationArea(@NonNull android.telephony.SmsCbLocation);
-    method public boolean isInLocationArea(@Nullable String, int, int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SmsCbLocation> CREATOR;
-  }
-
-  public final class SmsCbMessage implements android.os.Parcelable {
-    ctor public SmsCbMessage(int, int, int, @NonNull android.telephony.SmsCbLocation, int, @Nullable String, int, @Nullable String, int, @Nullable android.telephony.SmsCbEtwsInfo, @Nullable android.telephony.SmsCbCmasInfo, int, @Nullable java.util.List<android.telephony.CbGeoUtils.Geometry>, long, int, int);
-    method @NonNull public static android.telephony.SmsCbMessage createFromCursor(@NonNull android.database.Cursor);
-    method public int describeContents();
-    method @Nullable public android.telephony.SmsCbCmasInfo getCmasWarningInfo();
-    method @NonNull public android.content.ContentValues getContentValues();
-    method public int getDataCodingScheme();
-    method @Nullable public android.telephony.SmsCbEtwsInfo getEtwsWarningInfo();
-    method public int getGeographicalScope();
-    method @NonNull public java.util.List<android.telephony.CbGeoUtils.Geometry> getGeometries();
-    method @Nullable public String getLanguageCode();
-    method @NonNull public android.telephony.SmsCbLocation getLocation();
-    method public int getMaximumWaitingDuration();
-    method @Nullable public String getMessageBody();
-    method public int getMessageFormat();
-    method public int getMessagePriority();
-    method public long getReceivedTime();
-    method public int getSerialNumber();
-    method public int getServiceCategory();
-    method public int getSlotIndex();
-    method public int getSubscriptionId();
-    method public boolean isCmasMessage();
-    method public boolean isEmergencyMessage();
-    method public boolean isEtwsMessage();
-    method public boolean needGeoFencingCheck();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SmsCbMessage> CREATOR;
-    field public static final int GEOGRAPHICAL_SCOPE_CELL_WIDE = 3; // 0x3
-    field public static final int GEOGRAPHICAL_SCOPE_CELL_WIDE_IMMEDIATE = 0; // 0x0
-    field public static final int GEOGRAPHICAL_SCOPE_LOCATION_AREA_WIDE = 2; // 0x2
-    field public static final int GEOGRAPHICAL_SCOPE_PLMN_WIDE = 1; // 0x1
-    field public static final int MAXIMUM_WAIT_TIME_NOT_SET = 255; // 0xff
-    field public static final int MESSAGE_FORMAT_3GPP = 1; // 0x1
-    field public static final int MESSAGE_FORMAT_3GPP2 = 2; // 0x2
-    field public static final int MESSAGE_PRIORITY_EMERGENCY = 3; // 0x3
-    field public static final int MESSAGE_PRIORITY_INTERACTIVE = 1; // 0x1
-    field public static final int MESSAGE_PRIORITY_NORMAL = 0; // 0x0
-    field public static final int MESSAGE_PRIORITY_URGENT = 2; // 0x2
-  }
-
-  public final class SmsManager {
-    method public boolean disableCellBroadcastRange(int, int, int);
-    method public boolean enableCellBroadcastRange(int, int, int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getPremiumSmsConsent(@NonNull String);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getSmsCapacityOnIcc();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void sendMultipartTextMessageWithoutPersisting(String, String, java.util.List<java.lang.String>, java.util.List<android.app.PendingIntent>, java.util.List<android.app.PendingIntent>);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setPremiumSmsConsent(@NonNull String, int);
-    field public static final int PREMIUM_SMS_CONSENT_ALWAYS_ALLOW = 3; // 0x3
-    field public static final int PREMIUM_SMS_CONSENT_ASK_USER = 1; // 0x1
-    field public static final int PREMIUM_SMS_CONSENT_NEVER_ALLOW = 2; // 0x2
-    field public static final int PREMIUM_SMS_CONSENT_UNKNOWN = 0; // 0x0
-  }
-
-  public class SmsMessage {
-    method @Nullable public static android.telephony.SmsMessage createFromNativeSmsSubmitPdu(@NonNull byte[], boolean);
-    method @Nullable public static android.telephony.SmsMessage.SubmitPdu getSmsPdu(int, int, @Nullable String, @NonNull String, @NonNull String, long);
-    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public static byte[] getSubmitPduEncodedMessage(boolean, @NonNull String, @NonNull String, int, @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0, to=255) int, @IntRange(from=1, to=255) int, @IntRange(from=1, to=255) int);
-  }
-
-  public class SubscriptionInfo implements android.os.Parcelable {
-    method public boolean areUiccApplicationsEnabled();
-    method @Nullable public java.util.List<android.telephony.UiccAccessRule> getAccessRules();
-    method public int getProfileClass();
-    method public boolean isGroupDisabled();
-  }
-
-  public class SubscriptionManager {
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean canDisablePhysicalSubscription();
-    method public boolean canManageSubscription(@NonNull android.telephony.SubscriptionInfo, @NonNull String);
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int[] getActiveSubscriptionIdList();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.SubscriptionInfo getActiveSubscriptionInfoForIcc(@NonNull String);
-    method public java.util.List<android.telephony.SubscriptionInfo> getAvailableSubscriptionInfoList();
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int[] getCompleteActiveSubscriptionIdList();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getEnabledSubscriptionId(int);
-    method @NonNull public static android.content.res.Resources getResourcesForSubId(@NonNull android.content.Context, int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isSubscriptionEnabled(int);
-    method public void requestEmbeddedSubscriptionInfoListRefresh();
-    method public void requestEmbeddedSubscriptionInfoListRefresh(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultDataSubId(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultSmsSubId(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultVoiceSubscriptionId(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setPreferredDataSubscriptionId(int, boolean, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<java.lang.Integer>);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setSubscriptionEnabled(int, boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setUiccApplicationsEnabled(int, boolean);
-    field @RequiresPermission(android.Manifest.permission.MANAGE_SUBSCRIPTION_PLANS) public static final String ACTION_SUBSCRIPTION_PLANS_CHANGED = "android.telephony.action.SUBSCRIPTION_PLANS_CHANGED";
-    field @NonNull public static final android.net.Uri ADVANCED_CALLING_ENABLED_CONTENT_URI;
-    field @Deprecated public static final int PROFILE_CLASS_DEFAULT = -1; // 0xffffffff
-    field public static final int PROFILE_CLASS_OPERATIONAL = 2; // 0x2
-    field public static final int PROFILE_CLASS_PROVISIONING = 1; // 0x1
-    field public static final int PROFILE_CLASS_TESTING = 0; // 0x0
-    field public static final int PROFILE_CLASS_UNSET = -1; // 0xffffffff
-    field @NonNull public static final android.net.Uri VT_ENABLED_CONTENT_URI;
-    field @NonNull public static final android.net.Uri WFC_ENABLED_CONTENT_URI;
-    field @NonNull public static final android.net.Uri WFC_MODE_CONTENT_URI;
-    field @NonNull public static final android.net.Uri WFC_ROAMING_ENABLED_CONTENT_URI;
-    field @NonNull public static final android.net.Uri WFC_ROAMING_MODE_CONTENT_URI;
-  }
-
-  public static class SubscriptionPlan.Builder {
-    method @Deprecated public static android.telephony.SubscriptionPlan.Builder createRecurringDaily(java.time.ZonedDateTime);
-    method @Deprecated public static android.telephony.SubscriptionPlan.Builder createRecurringMonthly(java.time.ZonedDateTime);
-    method @Deprecated public static android.telephony.SubscriptionPlan.Builder createRecurringWeekly(java.time.ZonedDateTime);
-  }
-
-  public final class TelephonyHistogram implements android.os.Parcelable {
-    ctor public TelephonyHistogram(int, int, int);
-    ctor public TelephonyHistogram(android.telephony.TelephonyHistogram);
-    ctor public TelephonyHistogram(android.os.Parcel);
-    method public void addTimeTaken(int);
-    method public int describeContents();
-    method public int getAverageTime();
-    method public int getBucketCount();
-    method public int[] getBucketCounters();
-    method public int[] getBucketEndPoints();
-    method public int getCategory();
-    method public int getId();
-    method public int getMaxTime();
-    method public int getMinTime();
-    method public int getSampleCount();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.TelephonyHistogram> CREATOR;
-    field public static final int TELEPHONY_CATEGORY_RIL = 1; // 0x1
-  }
-
-  public class TelephonyManager {
-    method @Deprecated @RequiresPermission(android.Manifest.permission.CALL_PHONE) public void call(String, String);
-    method public int checkCarrierPrivilegesForPackage(String);
-    method public int checkCarrierPrivilegesForPackageAnyPhone(String);
-    method public void dial(String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean disableDataConnectivity();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean enableDataConnectivity();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean enableModemForSlot(int, boolean);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void enableVideoCalling(boolean);
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getAidForAppType(int);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.List<android.service.carrier.CarrierIdentifier> getAllowedCarriers(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public long getAllowedNetworkTypes();
-    method @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public android.content.ComponentName getAndUpdateDefaultRespondViaMessageApplication();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.ImsiEncryptionInfo getCarrierInfoForImsiEncryption(int);
-    method public java.util.List<java.lang.String> getCarrierPackageNamesForIntent(android.content.Intent);
-    method public java.util.List<java.lang.String> getCarrierPackageNamesForIntentAndPhone(android.content.Intent, int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getCarrierPrivilegeStatus(int);
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.List<java.lang.String> getCarrierPrivilegedPackagesForAllActiveSubscriptions();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.CarrierRestrictionRules getCarrierRestrictionRules();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String getCdmaMdn();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String getCdmaMdn(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String getCdmaMin();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String getCdmaMin(int);
-    method public String getCdmaPrlVersion();
-    method public int getCurrentPhoneType();
-    method public int getCurrentPhoneType(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getDataActivationState();
-    method @Deprecated public boolean getDataEnabled();
-    method @Deprecated public boolean getDataEnabled(int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public android.content.ComponentName getDefaultRespondViaMessageApplication();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getDeviceSoftwareVersion(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean getEmergencyCallbackMode();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getEmergencyNumberDbVersion();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getIsimDomain();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getIsimIst();
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.Map<java.lang.Integer,java.lang.Integer> getLogicalToPhysicalSlotMapping();
-    method public int getMaxNumberOfSimultaneouslyActiveSims();
-    method public static long getMaxNumberVerificationTimeoutMillis();
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String[] getMergedImsisFromGroup();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public long getPreferredNetworkTypeBitmask();
-    method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public int getRadioPowerState();
-    method public int getSimApplicationState();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getSimApplicationState(int);
-    method public int getSimCardState();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getSimCardState(int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.Locale getSimLocale();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public long getSupportedRadioAccessFamily();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public java.util.List<android.telephony.TelephonyHistogram> getTelephonyHistograms();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.UiccSlotInfo[] getUiccSlotsInfo();
-    method @Nullable public android.os.Bundle getVisualVoicemailSettings();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getVoiceActivationState();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handlePinMmi(String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handlePinMmiForSubscriber(int, String);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean iccCloseLogicalChannelBySlot(int, int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannelBySlot(int, @Nullable String, int);
-    method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String iccTransmitApduBasicChannelBySlot(int, int, int, int, int, int, @Nullable String);
-    method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String iccTransmitApduLogicalChannelBySlot(int, int, int, int, int, int, int, @Nullable String);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isAnyRadioPoweredOn();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isApnMetered(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isApplicationOnUicc(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isDataConnectionAllowed();
-    method public boolean isDataConnectivityPossible();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isDataEnabledForApn(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isEmergencyAssistanceEnabled();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public boolean isIccLockEnabled();
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isIdle();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isLteCdmaEvdoGsmWcdmaEnabled();
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isOffhook();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isOpportunisticNetworkEnabled();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isPotentialEmergencyNumber(@NonNull String);
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isRadioOn();
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isRinging();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean isTetheringApnRequired();
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isVideoCallingEnabled();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isVisualVoicemailEnabled(android.telecom.PhoneAccountHandle);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean matchesCurrentSimOperator(@NonNull String, int, @Nullable String);
-    method public boolean needsOtaServiceProvisioning();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void notifyOtaEmergencyNumberDbInstalled();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean rebootRadio();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void reportDefaultNetworkStatus(boolean);
-    method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.MODIFY_PHONE_STATE}) public void requestCellInfoUpdate(@NonNull android.os.WorkSource, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.TelephonyManager.CellInfoCallback);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void requestNumberVerification(@NonNull android.telephony.PhoneNumberRange, long, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.NumberVerificationCallback);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void resetAllCarrierActions();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void resetCarrierKeysForImsiEncryption();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public void resetIms(int);
-    method @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION) public void resetOtaEmergencyNumberDbFilePath();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean resetRadioConfig();
-    method @RequiresPermission(android.Manifest.permission.CONNECTIVITY_INTERNAL) public void resetSettings();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int setAllowedCarriers(int, java.util.List<android.service.carrier.CarrierIdentifier>);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setAllowedNetworkTypes(long);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCarrierDataEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int setCarrierRestrictionRules(@NonNull android.telephony.CarrierRestrictionRules);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataActivationState(int);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataEnabled(int, boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataRoamingEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setMultiSimCarrierRestriction(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setOpportunisticNetworkState(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setPreferredNetworkTypeBitmask(long);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setRadio(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setRadioEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setRadioPower(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSimPowerState(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSimPowerStateForSlot(int, int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSystemSelectionChannels(@NonNull java.util.List<android.telephony.RadioAccessSpecifier>, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSystemSelectionChannels(@NonNull java.util.List<android.telephony.RadioAccessSpecifier>);
-    method @Deprecated public void setVisualVoicemailEnabled(android.telecom.PhoneAccountHandle, boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoiceActivationState(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void shutdownAllRadios();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean supplyPin(String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int[] supplyPinReportResult(String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean supplyPuk(String, String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int[] supplyPukReportResult(String, String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean switchSlots(int[]);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void toggleRadioOnOff();
-    method @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION) public void updateOtaEmergencyNumberDbFilePath(@NonNull android.os.ParcelFileDescriptor);
-    method public void updateServiceLocation();
-    field @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static final String ACTION_ANOMALY_REPORTED = "android.telephony.action.ANOMALY_REPORTED";
-    field public static final String ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED = "android.intent.action.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED";
-    field public static final String ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED = "android.intent.action.ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED";
-    field public static final String ACTION_EMERGENCY_ASSISTANCE = "android.telephony.action.EMERGENCY_ASSISTANCE";
-    field public static final String ACTION_EMERGENCY_CALLBACK_MODE_CHANGED = "android.intent.action.EMERGENCY_CALLBACK_MODE_CHANGED";
-    field public static final String ACTION_EMERGENCY_CALL_STATE_CHANGED = "android.intent.action.EMERGENCY_CALL_STATE_CHANGED";
-    field public static final String ACTION_REQUEST_OMADM_CONFIGURATION_UPDATE = "com.android.omadm.service.CONFIGURATION_UPDATE";
-    field public static final String ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS = "android.telephony.action.SHOW_NOTICE_ECM_BLOCK_OTHERS";
-    field public static final String ACTION_SIM_APPLICATION_STATE_CHANGED = "android.telephony.action.SIM_APPLICATION_STATE_CHANGED";
-    field public static final String ACTION_SIM_CARD_STATE_CHANGED = "android.telephony.action.SIM_CARD_STATE_CHANGED";
-    field public static final String ACTION_SIM_SLOT_STATUS_CHANGED = "android.telephony.action.SIM_SLOT_STATUS_CHANGED";
-    field public static final int CARRIER_PRIVILEGE_STATUS_ERROR_LOADING_RULES = -2; // 0xfffffffe
-    field public static final int CARRIER_PRIVILEGE_STATUS_HAS_ACCESS = 1; // 0x1
-    field public static final int CARRIER_PRIVILEGE_STATUS_NO_ACCESS = 0; // 0x0
-    field public static final int CARRIER_PRIVILEGE_STATUS_RULES_NOT_LOADED = -1; // 0xffffffff
-    field public static final String EXTRA_ANOMALY_DESCRIPTION = "android.telephony.extra.ANOMALY_DESCRIPTION";
-    field public static final String EXTRA_ANOMALY_ID = "android.telephony.extra.ANOMALY_ID";
-    field public static final String EXTRA_PHONE_IN_ECM_STATE = "android.telephony.extra.PHONE_IN_ECM_STATE";
-    field public static final String EXTRA_PHONE_IN_EMERGENCY_CALL = "android.telephony.extra.PHONE_IN_EMERGENCY_CALL";
-    field public static final String EXTRA_SIM_STATE = "android.telephony.extra.SIM_STATE";
-    field public static final String EXTRA_VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL = "android.telephony.extra.VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL";
-    field public static final String EXTRA_VOICEMAIL_SCRAMBLED_PIN_STRING = "android.telephony.extra.VOICEMAIL_SCRAMBLED_PIN_STRING";
-    field public static final int INVALID_EMERGENCY_NUMBER_DB_VERSION = -1; // 0xffffffff
-    field public static final int KEY_TYPE_EPDG = 1; // 0x1
-    field public static final int KEY_TYPE_WLAN = 2; // 0x2
-    field public static final long NETWORK_TYPE_BITMASK_1xRTT = 64L; // 0x40L
-    field public static final long NETWORK_TYPE_BITMASK_CDMA = 8L; // 0x8L
-    field public static final long NETWORK_TYPE_BITMASK_EDGE = 2L; // 0x2L
-    field public static final long NETWORK_TYPE_BITMASK_EHRPD = 8192L; // 0x2000L
-    field public static final long NETWORK_TYPE_BITMASK_EVDO_0 = 16L; // 0x10L
-    field public static final long NETWORK_TYPE_BITMASK_EVDO_A = 32L; // 0x20L
-    field public static final long NETWORK_TYPE_BITMASK_EVDO_B = 2048L; // 0x800L
-    field public static final long NETWORK_TYPE_BITMASK_GPRS = 1L; // 0x1L
-    field public static final long NETWORK_TYPE_BITMASK_GSM = 32768L; // 0x8000L
-    field public static final long NETWORK_TYPE_BITMASK_HSDPA = 128L; // 0x80L
-    field public static final long NETWORK_TYPE_BITMASK_HSPA = 512L; // 0x200L
-    field public static final long NETWORK_TYPE_BITMASK_HSPAP = 16384L; // 0x4000L
-    field public static final long NETWORK_TYPE_BITMASK_HSUPA = 256L; // 0x100L
-    field public static final long NETWORK_TYPE_BITMASK_IWLAN = 131072L; // 0x20000L
-    field public static final long NETWORK_TYPE_BITMASK_LTE = 4096L; // 0x1000L
-    field public static final long NETWORK_TYPE_BITMASK_LTE_CA = 262144L; // 0x40000L
-    field public static final long NETWORK_TYPE_BITMASK_NR = 524288L; // 0x80000L
-    field public static final long NETWORK_TYPE_BITMASK_TD_SCDMA = 65536L; // 0x10000L
-    field public static final long NETWORK_TYPE_BITMASK_UMTS = 4L; // 0x4L
-    field public static final long NETWORK_TYPE_BITMASK_UNKNOWN = 0L; // 0x0L
-    field public static final int RADIO_POWER_OFF = 0; // 0x0
-    field public static final int RADIO_POWER_ON = 1; // 0x1
-    field public static final int RADIO_POWER_UNAVAILABLE = 2; // 0x2
-    field public static final int SET_CARRIER_RESTRICTION_ERROR = 2; // 0x2
-    field public static final int SET_CARRIER_RESTRICTION_NOT_SUPPORTED = 1; // 0x1
-    field public static final int SET_CARRIER_RESTRICTION_SUCCESS = 0; // 0x0
-    field public static final int SIM_ACTIVATION_STATE_ACTIVATED = 2; // 0x2
-    field public static final int SIM_ACTIVATION_STATE_ACTIVATING = 1; // 0x1
-    field public static final int SIM_ACTIVATION_STATE_DEACTIVATED = 3; // 0x3
-    field public static final int SIM_ACTIVATION_STATE_RESTRICTED = 4; // 0x4
-    field public static final int SIM_ACTIVATION_STATE_UNKNOWN = 0; // 0x0
-    field public static final int SIM_STATE_LOADED = 10; // 0xa
-    field public static final int SIM_STATE_PRESENT = 11; // 0xb
-    field public static final int SRVCC_STATE_HANDOVER_CANCELED = 3; // 0x3
-    field public static final int SRVCC_STATE_HANDOVER_COMPLETED = 1; // 0x1
-    field public static final int SRVCC_STATE_HANDOVER_FAILED = 2; // 0x2
-    field public static final int SRVCC_STATE_HANDOVER_NONE = -1; // 0xffffffff
-    field public static final int SRVCC_STATE_HANDOVER_STARTED = 0; // 0x0
-  }
-
-  public final class UiccAccessRule implements android.os.Parcelable {
-    ctor public UiccAccessRule(byte[], @Nullable String, long);
-    method public int describeContents();
-    method public int getCarrierPrivilegeStatus(android.content.pm.PackageInfo);
-    method public int getCarrierPrivilegeStatus(android.content.pm.Signature, String);
-    method public String getCertificateHexString();
-    method @Nullable public String getPackageName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.UiccAccessRule> CREATOR;
-  }
-
-  public class UiccSlotInfo implements android.os.Parcelable {
-    ctor @Deprecated public UiccSlotInfo(boolean, boolean, String, int, int, boolean);
-    method public int describeContents();
-    method public String getCardId();
-    method public int getCardStateInfo();
-    method public boolean getIsActive();
-    method public boolean getIsEuicc();
-    method public boolean getIsExtendedApduSupported();
-    method public int getLogicalSlotIdx();
-    method public boolean isRemovable();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CARD_STATE_INFO_ABSENT = 1; // 0x1
-    field public static final int CARD_STATE_INFO_ERROR = 3; // 0x3
-    field public static final int CARD_STATE_INFO_PRESENT = 2; // 0x2
-    field public static final int CARD_STATE_INFO_RESTRICTED = 4; // 0x4
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.UiccSlotInfo> CREATOR;
-  }
-
-  public abstract class VisualVoicemailService extends android.app.Service {
-    method public static final void sendVisualVoicemailSms(android.content.Context, android.telecom.PhoneAccountHandle, String, short, String, android.app.PendingIntent);
-    method public static final void setSmsFilterSettings(android.content.Context, android.telecom.PhoneAccountHandle, android.telephony.VisualVoicemailSmsFilterSettings);
-  }
-
-}
-
-package android.telephony.cdma {
-
-  public final class CdmaSmsCbProgramData implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getCategory();
-    method public int getOperation();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CATEGORY_CMAS_CHILD_ABDUCTION_EMERGENCY = 4099; // 0x1003
-    field public static final int CATEGORY_CMAS_EXTREME_THREAT = 4097; // 0x1001
-    field public static final int CATEGORY_CMAS_LAST_RESERVED_VALUE = 4351; // 0x10ff
-    field public static final int CATEGORY_CMAS_PRESIDENTIAL_LEVEL_ALERT = 4096; // 0x1000
-    field public static final int CATEGORY_CMAS_SEVERE_THREAT = 4098; // 0x1002
-    field public static final int CATEGORY_CMAS_TEST_MESSAGE = 4100; // 0x1004
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.cdma.CdmaSmsCbProgramData> CREATOR;
-    field public static final int OPERATION_ADD_CATEGORY = 1; // 0x1
-    field public static final int OPERATION_CLEAR_CATEGORIES = 2; // 0x2
-    field public static final int OPERATION_DELETE_CATEGORY = 0; // 0x0
-  }
-
-}
-
-package android.telephony.data {
-
-  public final class DataCallResponse implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public java.util.List<android.net.LinkAddress> getAddresses();
-    method public int getCause();
-    method @NonNull public java.util.List<java.net.InetAddress> getDnsAddresses();
-    method @NonNull public java.util.List<java.net.InetAddress> getGatewayAddresses();
-    method public int getId();
-    method @NonNull public String getInterfaceName();
-    method public int getLinkStatus();
-    method @Deprecated public int getMtu();
-    method public int getMtuV4();
-    method public int getMtuV6();
-    method @NonNull public java.util.List<java.net.InetAddress> getPcscfAddresses();
-    method public int getProtocolType();
-    method public int getSuggestedRetryTime();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.DataCallResponse> CREATOR;
-    field public static final int LINK_STATUS_ACTIVE = 2; // 0x2
-    field public static final int LINK_STATUS_DORMANT = 1; // 0x1
-    field public static final int LINK_STATUS_INACTIVE = 0; // 0x0
-    field public static final int LINK_STATUS_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public static final class DataCallResponse.Builder {
-    ctor public DataCallResponse.Builder();
-    method @NonNull public android.telephony.data.DataCallResponse build();
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setAddresses(@NonNull java.util.List<android.net.LinkAddress>);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setCause(int);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setDnsAddresses(@NonNull java.util.List<java.net.InetAddress>);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setGatewayAddresses(@NonNull java.util.List<java.net.InetAddress>);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setId(int);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setInterfaceName(@NonNull String);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setLinkStatus(int);
-    method @Deprecated @NonNull public android.telephony.data.DataCallResponse.Builder setMtu(int);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setMtuV4(int);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setMtuV6(int);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setPcscfAddresses(@NonNull java.util.List<java.net.InetAddress>);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setProtocolType(int);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setSuggestedRetryTime(int);
-  }
-
-  public final class DataProfile implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public String getApn();
-    method public int getAuthType();
-    method public int getBearerBitmask();
-    method @Deprecated public int getMtu();
-    method public int getMtuV4();
-    method public int getMtuV6();
-    method @Nullable public String getPassword();
-    method public int getProfileId();
-    method public int getProtocolType();
-    method public int getRoamingProtocolType();
-    method public int getSupportedApnTypesBitmask();
-    method public int getType();
-    method @Nullable public String getUserName();
-    method public boolean isEnabled();
-    method public boolean isPersistent();
-    method public boolean isPreferred();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.DataProfile> CREATOR;
-    field public static final int TYPE_3GPP = 1; // 0x1
-    field public static final int TYPE_3GPP2 = 2; // 0x2
-    field public static final int TYPE_COMMON = 0; // 0x0
-  }
-
-  public static final class DataProfile.Builder {
-    ctor public DataProfile.Builder();
-    method @NonNull public android.telephony.data.DataProfile build();
-    method @NonNull public android.telephony.data.DataProfile.Builder enable(boolean);
-    method @NonNull public android.telephony.data.DataProfile.Builder setApn(@NonNull String);
-    method @NonNull public android.telephony.data.DataProfile.Builder setAuthType(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setBearerBitmask(int);
-    method @Deprecated @NonNull public android.telephony.data.DataProfile.Builder setMtu(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setMtuV4(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setMtuV6(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setPassword(@NonNull String);
-    method @NonNull public android.telephony.data.DataProfile.Builder setPersistent(boolean);
-    method @NonNull public android.telephony.data.DataProfile.Builder setPreferred(boolean);
-    method @NonNull public android.telephony.data.DataProfile.Builder setProfileId(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setProtocolType(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setRoamingProtocolType(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setSupportedApnTypesBitmask(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setType(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setUserName(@NonNull String);
-  }
-
-  public abstract class DataService extends android.app.Service {
-    ctor public DataService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method @Nullable public abstract android.telephony.data.DataService.DataServiceProvider onCreateDataServiceProvider(int);
-    field public static final int REQUEST_REASON_HANDOVER = 3; // 0x3
-    field public static final int REQUEST_REASON_NORMAL = 1; // 0x1
-    field public static final int REQUEST_REASON_SHUTDOWN = 2; // 0x2
-    field public static final int REQUEST_REASON_UNKNOWN = 0; // 0x0
-    field public static final String SERVICE_INTERFACE = "android.telephony.data.DataService";
-  }
-
-  public abstract class DataService.DataServiceProvider implements java.lang.AutoCloseable {
-    ctor public DataService.DataServiceProvider(int);
-    method public abstract void close();
-    method public void deactivateDataCall(int, int, @Nullable android.telephony.data.DataServiceCallback);
-    method public final int getSlotIndex();
-    method public final void notifyDataCallListChanged(java.util.List<android.telephony.data.DataCallResponse>);
-    method public void requestDataCallList(@NonNull android.telephony.data.DataServiceCallback);
-    method public void setDataProfile(@NonNull java.util.List<android.telephony.data.DataProfile>, boolean, @NonNull android.telephony.data.DataServiceCallback);
-    method public void setInitialAttachApn(@NonNull android.telephony.data.DataProfile, boolean, @NonNull android.telephony.data.DataServiceCallback);
-    method public void setupDataCall(int, @NonNull android.telephony.data.DataProfile, boolean, boolean, int, @Nullable android.net.LinkProperties, @NonNull android.telephony.data.DataServiceCallback);
-  }
-
-  public class DataServiceCallback {
-    method public void onDataCallListChanged(@NonNull java.util.List<android.telephony.data.DataCallResponse>);
-    method public void onDeactivateDataCallComplete(int);
-    method public void onRequestDataCallListComplete(int, @NonNull java.util.List<android.telephony.data.DataCallResponse>);
-    method public void onSetDataProfileComplete(int);
-    method public void onSetInitialAttachApnComplete(int);
-    method public void onSetupDataCallComplete(int, @Nullable android.telephony.data.DataCallResponse);
-    field public static final int RESULT_ERROR_BUSY = 3; // 0x3
-    field public static final int RESULT_ERROR_ILLEGAL_STATE = 4; // 0x4
-    field public static final int RESULT_ERROR_INVALID_ARG = 2; // 0x2
-    field public static final int RESULT_ERROR_UNSUPPORTED = 1; // 0x1
-    field public static final int RESULT_SUCCESS = 0; // 0x0
-  }
-
-  public abstract class QualifiedNetworksService extends android.app.Service {
-    ctor public QualifiedNetworksService();
-    method @NonNull public abstract android.telephony.data.QualifiedNetworksService.NetworkAvailabilityProvider onCreateNetworkAvailabilityProvider(int);
-    field public static final String QUALIFIED_NETWORKS_SERVICE_INTERFACE = "android.telephony.data.QualifiedNetworksService";
-  }
-
-  public abstract class QualifiedNetworksService.NetworkAvailabilityProvider implements java.lang.AutoCloseable {
-    ctor public QualifiedNetworksService.NetworkAvailabilityProvider(int);
-    method public abstract void close();
-    method public final int getSlotIndex();
-    method public final void updateQualifiedNetworkTypes(int, @NonNull java.util.List<java.lang.Integer>);
-  }
-
-}
-
-package android.telephony.euicc {
-
-  public final class DownloadableSubscription implements android.os.Parcelable {
-    method public java.util.List<android.telephony.UiccAccessRule> getAccessRules();
-    method @Nullable public String getCarrierName();
-  }
-
-  public static final class DownloadableSubscription.Builder {
-    ctor public DownloadableSubscription.Builder();
-    ctor public DownloadableSubscription.Builder(android.telephony.euicc.DownloadableSubscription);
-    method public android.telephony.euicc.DownloadableSubscription build();
-    method public android.telephony.euicc.DownloadableSubscription.Builder setAccessRules(java.util.List<android.telephony.UiccAccessRule>);
-    method public android.telephony.euicc.DownloadableSubscription.Builder setCarrierName(String);
-    method public android.telephony.euicc.DownloadableSubscription.Builder setConfirmationCode(String);
-    method public android.telephony.euicc.DownloadableSubscription.Builder setEncodedActivationCode(String);
-  }
-
-  public class EuiccCardManager {
-    method public void authenticateServer(String, String, byte[], byte[], byte[], byte[], java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
-    method public void cancelSession(String, byte[], @android.telephony.euicc.EuiccCardManager.CancelReason int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
-    method public void deleteProfile(String, String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
-    method public void disableProfile(String, String, boolean, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
-    method public void listNotifications(String, @android.telephony.euicc.EuiccNotification.Event int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.telephony.euicc.EuiccNotification[]>);
-    method public void loadBoundProfilePackage(String, byte[], java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
-    method public void prepareDownload(String, @Nullable byte[], byte[], byte[], byte[], java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
-    method public void removeNotificationFromList(String, int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
-    method public void requestAllProfiles(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.service.euicc.EuiccProfileInfo[]>);
-    method public void requestDefaultSmdpAddress(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.String>);
-    method public void requestEuiccChallenge(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
-    method public void requestEuiccInfo1(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
-    method public void requestEuiccInfo2(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
-    method public void requestProfile(String, String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.service.euicc.EuiccProfileInfo>);
-    method public void requestRulesAuthTable(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.telephony.euicc.EuiccRulesAuthTable>);
-    method public void requestSmdsAddress(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.String>);
-    method public void resetMemory(String, @android.telephony.euicc.EuiccCardManager.ResetOption int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
-    method public void retrieveNotification(String, int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.telephony.euicc.EuiccNotification>);
-    method public void retrieveNotificationList(String, @android.telephony.euicc.EuiccNotification.Event int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.telephony.euicc.EuiccNotification[]>);
-    method public void setDefaultSmdpAddress(String, String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
-    method public void setNickname(String, String, String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
-    method public void switchToProfile(String, String, boolean, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.service.euicc.EuiccProfileInfo>);
-    field public static final int CANCEL_REASON_END_USER_REJECTED = 0; // 0x0
-    field public static final int CANCEL_REASON_POSTPONED = 1; // 0x1
-    field public static final int CANCEL_REASON_PPR_NOT_ALLOWED = 3; // 0x3
-    field public static final int CANCEL_REASON_TIMEOUT = 2; // 0x2
-    field public static final int RESET_OPTION_DELETE_FIELD_LOADED_TEST_PROFILES = 2; // 0x2
-    field public static final int RESET_OPTION_DELETE_OPERATIONAL_PROFILES = 1; // 0x1
-    field public static final int RESET_OPTION_RESET_DEFAULT_SMDP_ADDRESS = 4; // 0x4
-    field public static final int RESULT_CALLER_NOT_ALLOWED = -3; // 0xfffffffd
-    field public static final int RESULT_EUICC_NOT_FOUND = -2; // 0xfffffffe
-    field public static final int RESULT_OK = 0; // 0x0
-    field public static final int RESULT_UNKNOWN_ERROR = -1; // 0xffffffff
-  }
-
-  @IntDef(prefix={"CANCEL_REASON_"}, value={android.telephony.euicc.EuiccCardManager.CANCEL_REASON_END_USER_REJECTED, android.telephony.euicc.EuiccCardManager.CANCEL_REASON_POSTPONED, android.telephony.euicc.EuiccCardManager.CANCEL_REASON_TIMEOUT, android.telephony.euicc.EuiccCardManager.CANCEL_REASON_PPR_NOT_ALLOWED}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccCardManager.CancelReason {
-  }
-
-  @IntDef(flag=true, prefix={"RESET_OPTION_"}, value={android.telephony.euicc.EuiccCardManager.RESET_OPTION_DELETE_OPERATIONAL_PROFILES, android.telephony.euicc.EuiccCardManager.RESET_OPTION_DELETE_FIELD_LOADED_TEST_PROFILES, android.telephony.euicc.EuiccCardManager.RESET_OPTION_RESET_DEFAULT_SMDP_ADDRESS}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccCardManager.ResetOption {
-  }
-
-  public static interface EuiccCardManager.ResultCallback<T> {
-    method public void onComplete(int, T);
-  }
-
-  public class EuiccManager {
-    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void continueOperation(android.content.Intent, android.os.Bundle);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void eraseSubscriptions(@NonNull android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void eraseSubscriptions(@android.telephony.euicc.EuiccCardManager.ResetOption int, @NonNull android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void getDefaultDownloadableSubscriptionList(android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void getDownloadableSubscriptionMetadata(android.telephony.euicc.DownloadableSubscription, android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public int getOtaStatus();
-    method @NonNull @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public java.util.List<java.lang.String> getSupportedCountries();
-    method @NonNull @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public java.util.List<java.lang.String> getUnsupportedCountries();
-    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public boolean isSupportedCountry(@NonNull String);
-    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void setSupportedCountries(@NonNull java.util.List<java.lang.String>);
-    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void setUnsupportedCountries(@NonNull java.util.List<java.lang.String>);
-    field public static final String ACTION_DELETE_SUBSCRIPTION_PRIVILEGED = "android.telephony.euicc.action.DELETE_SUBSCRIPTION_PRIVILEGED";
-    field @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public static final String ACTION_OTA_STATUS_CHANGED = "android.telephony.euicc.action.OTA_STATUS_CHANGED";
-    field public static final String ACTION_PROVISION_EMBEDDED_SUBSCRIPTION = "android.telephony.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION";
-    field public static final String ACTION_RENAME_SUBSCRIPTION_PRIVILEGED = "android.telephony.euicc.action.RENAME_SUBSCRIPTION_PRIVILEGED";
-    field public static final String ACTION_TOGGLE_SUBSCRIPTION_PRIVILEGED = "android.telephony.euicc.action.TOGGLE_SUBSCRIPTION_PRIVILEGED";
-    field public static final int EUICC_ACTIVATION_TYPE_ACCOUNT_REQUIRED = 4; // 0x4
-    field public static final int EUICC_ACTIVATION_TYPE_BACKUP = 2; // 0x2
-    field public static final int EUICC_ACTIVATION_TYPE_DEFAULT = 1; // 0x1
-    field public static final int EUICC_ACTIVATION_TYPE_TRANSFER = 3; // 0x3
-    field public static final int EUICC_OTA_FAILED = 2; // 0x2
-    field public static final int EUICC_OTA_IN_PROGRESS = 1; // 0x1
-    field public static final int EUICC_OTA_NOT_NEEDED = 4; // 0x4
-    field public static final int EUICC_OTA_STATUS_UNAVAILABLE = 5; // 0x5
-    field public static final int EUICC_OTA_SUCCEEDED = 3; // 0x3
-    field public static final String EXTRA_ACTIVATION_TYPE = "android.telephony.euicc.extra.ACTIVATION_TYPE";
-    field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_DOWNLOADABLE_SUBSCRIPTIONS = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_DOWNLOADABLE_SUBSCRIPTIONS";
-    field public static final String EXTRA_ENABLE_SUBSCRIPTION = "android.telephony.euicc.extra.ENABLE_SUBSCRIPTION";
-    field public static final String EXTRA_FORCE_PROVISION = "android.telephony.euicc.extra.FORCE_PROVISION";
-    field public static final String EXTRA_FROM_SUBSCRIPTION_ID = "android.telephony.euicc.extra.FROM_SUBSCRIPTION_ID";
-    field public static final String EXTRA_PHYSICAL_SLOT_ID = "android.telephony.euicc.extra.PHYSICAL_SLOT_ID";
-    field public static final String EXTRA_SUBSCRIPTION_ID = "android.telephony.euicc.extra.SUBSCRIPTION_ID";
-    field public static final String EXTRA_SUBSCRIPTION_NICKNAME = "android.telephony.euicc.extra.SUBSCRIPTION_NICKNAME";
-  }
-
-  @IntDef(prefix={"EUICC_OTA_"}, value={android.telephony.euicc.EuiccManager.EUICC_OTA_IN_PROGRESS, android.telephony.euicc.EuiccManager.EUICC_OTA_FAILED, android.telephony.euicc.EuiccManager.EUICC_OTA_SUCCEEDED, android.telephony.euicc.EuiccManager.EUICC_OTA_NOT_NEEDED, android.telephony.euicc.EuiccManager.EUICC_OTA_STATUS_UNAVAILABLE}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccManager.OtaStatus {
-  }
-
-  public final class EuiccNotification implements android.os.Parcelable {
-    ctor public EuiccNotification(int, String, @android.telephony.euicc.EuiccNotification.Event int, @Nullable byte[]);
-    method public int describeContents();
-    method @Nullable public byte[] getData();
-    method @android.telephony.euicc.EuiccNotification.Event public int getEvent();
-    method public int getSeq();
-    method public String getTargetAddr();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @android.telephony.euicc.EuiccNotification.Event public static final int ALL_EVENTS = 15; // 0xf
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.euicc.EuiccNotification> CREATOR;
-    field public static final int EVENT_DELETE = 8; // 0x8
-    field public static final int EVENT_DISABLE = 4; // 0x4
-    field public static final int EVENT_ENABLE = 2; // 0x2
-    field public static final int EVENT_INSTALL = 1; // 0x1
-  }
-
-  @IntDef(flag=true, prefix={"EVENT_"}, value={android.telephony.euicc.EuiccNotification.EVENT_INSTALL, android.telephony.euicc.EuiccNotification.EVENT_ENABLE, android.telephony.euicc.EuiccNotification.EVENT_DISABLE, android.telephony.euicc.EuiccNotification.EVENT_DELETE}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccNotification.Event {
-  }
-
-  public final class EuiccRulesAuthTable implements android.os.Parcelable {
-    method public int describeContents();
-    method public int findIndex(@android.service.euicc.EuiccProfileInfo.PolicyRule int, android.service.carrier.CarrierIdentifier);
-    method public boolean hasPolicyRuleFlag(int, @android.telephony.euicc.EuiccRulesAuthTable.PolicyRuleFlag int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.euicc.EuiccRulesAuthTable> CREATOR;
-    field public static final int POLICY_RULE_FLAG_CONSENT_REQUIRED = 1; // 0x1
-  }
-
-  public static final class EuiccRulesAuthTable.Builder {
-    ctor public EuiccRulesAuthTable.Builder(int);
-    method public android.telephony.euicc.EuiccRulesAuthTable.Builder add(int, java.util.List<android.service.carrier.CarrierIdentifier>, int);
-    method public android.telephony.euicc.EuiccRulesAuthTable build();
-  }
-
-  @IntDef(flag=true, prefix={"POLICY_RULE_FLAG_"}, value={android.telephony.euicc.EuiccRulesAuthTable.POLICY_RULE_FLAG_CONSENT_REQUIRED}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccRulesAuthTable.PolicyRuleFlag {
-  }
-
-}
-
-package android.telephony.ims {
-
-  public final class ImsCallForwardInfo implements android.os.Parcelable {
-    ctor public ImsCallForwardInfo(int, int, int, int, @NonNull String, int);
-    method public int describeContents();
-    method public int getCondition();
-    method public String getNumber();
-    method public int getServiceClass();
-    method public int getStatus();
-    method public int getTimeSeconds();
-    method public int getToA();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CDIV_CF_REASON_ALL = 4; // 0x4
-    field public static final int CDIV_CF_REASON_ALL_CONDITIONAL = 5; // 0x5
-    field public static final int CDIV_CF_REASON_BUSY = 1; // 0x1
-    field public static final int CDIV_CF_REASON_NOT_LOGGED_IN = 6; // 0x6
-    field public static final int CDIV_CF_REASON_NOT_REACHABLE = 3; // 0x3
-    field public static final int CDIV_CF_REASON_NO_REPLY = 2; // 0x2
-    field public static final int CDIV_CF_REASON_UNCONDITIONAL = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsCallForwardInfo> CREATOR;
-    field public static final int STATUS_ACTIVE = 1; // 0x1
-    field public static final int STATUS_NOT_ACTIVE = 0; // 0x0
-    field public static final int TYPE_OF_ADDRESS_INTERNATIONAL = 145; // 0x91
-    field public static final int TYPE_OF_ADDRESS_UNKNOWN = 129; // 0x81
-  }
-
-  public final class ImsCallProfile implements android.os.Parcelable {
-    ctor public ImsCallProfile();
-    ctor public ImsCallProfile(int, int);
-    ctor public ImsCallProfile(int, int, android.os.Bundle, android.telephony.ims.ImsStreamMediaProfile);
-    method public int describeContents();
-    method public String getCallExtra(String);
-    method public String getCallExtra(String, String);
-    method public boolean getCallExtraBoolean(String);
-    method public boolean getCallExtraBoolean(String, boolean);
-    method public int getCallExtraInt(String);
-    method public int getCallExtraInt(String, int);
-    method public android.os.Bundle getCallExtras();
-    method public int getCallType();
-    method public static int getCallTypeFromVideoState(int);
-    method public int getCallerNumberVerificationStatus();
-    method public int getEmergencyCallRouting();
-    method public int getEmergencyServiceCategories();
-    method @NonNull public java.util.List<java.lang.String> getEmergencyUrns();
-    method public android.telephony.ims.ImsStreamMediaProfile getMediaProfile();
-    method @NonNull public android.os.Bundle getProprietaryCallExtras();
-    method public int getRestrictCause();
-    method public int getServiceType();
-    method public static int getVideoStateFromCallType(int);
-    method public static int getVideoStateFromImsCallProfile(android.telephony.ims.ImsCallProfile);
-    method public boolean hasKnownUserIntentEmergency();
-    method public boolean isEmergencyCallTesting();
-    method public boolean isVideoCall();
-    method public boolean isVideoPaused();
-    method public static int presentationToOir(int);
-    method public void setCallExtra(String, String);
-    method public void setCallExtraBoolean(String, boolean);
-    method public void setCallExtraInt(String, int);
-    method public void setCallRestrictCause(int);
-    method public void setCallerNumberVerificationStatus(int);
-    method public void setEmergencyCallRouting(int);
-    method public void setEmergencyCallTesting(boolean);
-    method public void setEmergencyServiceCategories(int);
-    method public void setEmergencyUrns(@NonNull java.util.List<java.lang.String>);
-    method public void setHasKnownUserIntentEmergency(boolean);
-    method public void updateCallExtras(android.telephony.ims.ImsCallProfile);
-    method public void updateCallType(android.telephony.ims.ImsCallProfile);
-    method public void updateMediaProfile(android.telephony.ims.ImsCallProfile);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CALL_RESTRICT_CAUSE_DISABLED = 2; // 0x2
-    field public static final int CALL_RESTRICT_CAUSE_HD = 3; // 0x3
-    field public static final int CALL_RESTRICT_CAUSE_NONE = 0; // 0x0
-    field public static final int CALL_RESTRICT_CAUSE_RAT = 1; // 0x1
-    field public static final int CALL_TYPE_VIDEO_N_VOICE = 3; // 0x3
-    field public static final int CALL_TYPE_VOICE = 2; // 0x2
-    field public static final int CALL_TYPE_VOICE_N_VIDEO = 1; // 0x1
-    field public static final int CALL_TYPE_VS = 8; // 0x8
-    field public static final int CALL_TYPE_VS_RX = 10; // 0xa
-    field public static final int CALL_TYPE_VS_TX = 9; // 0x9
-    field public static final int CALL_TYPE_VT = 4; // 0x4
-    field public static final int CALL_TYPE_VT_NODIR = 7; // 0x7
-    field public static final int CALL_TYPE_VT_RX = 6; // 0x6
-    field public static final int CALL_TYPE_VT_TX = 5; // 0x5
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsCallProfile> CREATOR;
-    field public static final int DIALSTRING_NORMAL = 0; // 0x0
-    field public static final int DIALSTRING_SS_CONF = 1; // 0x1
-    field public static final int DIALSTRING_USSD = 2; // 0x2
-    field public static final String EXTRA_ADDITIONAL_CALL_INFO = "AdditionalCallInfo";
-    field public static final String EXTRA_ADDITIONAL_SIP_INVITE_FIELDS = "android.telephony.ims.extra.ADDITIONAL_SIP_INVITE_FIELDS";
-    field public static final String EXTRA_CALL_DISCONNECT_CAUSE = "android.telephony.ims.extra.CALL_DISCONNECT_CAUSE";
-    field public static final String EXTRA_CALL_NETWORK_TYPE = "android.telephony.ims.extra.CALL_NETWORK_TYPE";
-    field @Deprecated public static final String EXTRA_CALL_RAT_TYPE = "CallRadioTech";
-    field public static final String EXTRA_CHILD_NUMBER = "ChildNum";
-    field public static final String EXTRA_CNA = "cna";
-    field public static final String EXTRA_CNAP = "cnap";
-    field public static final String EXTRA_CODEC = "Codec";
-    field public static final String EXTRA_DIALSTRING = "dialstring";
-    field public static final String EXTRA_DISPLAY_TEXT = "DisplayText";
-    field public static final String EXTRA_EMERGENCY_CALL = "e_call";
-    field public static final String EXTRA_FORWARDED_NUMBER = "android.telephony.ims.extra.FORWARDED_NUMBER";
-    field public static final String EXTRA_IS_CALL_PULL = "CallPull";
-    field public static final String EXTRA_OI = "oi";
-    field public static final String EXTRA_OIR = "oir";
-    field public static final String EXTRA_REMOTE_URI = "remote_uri";
-    field public static final String EXTRA_USSD = "ussd";
-    field public static final int OIR_DEFAULT = 0; // 0x0
-    field public static final int OIR_PRESENTATION_NOT_RESTRICTED = 2; // 0x2
-    field public static final int OIR_PRESENTATION_PAYPHONE = 4; // 0x4
-    field public static final int OIR_PRESENTATION_RESTRICTED = 1; // 0x1
-    field public static final int OIR_PRESENTATION_UNKNOWN = 3; // 0x3
-    field public static final int SERVICE_TYPE_EMERGENCY = 2; // 0x2
-    field public static final int SERVICE_TYPE_NONE = 0; // 0x0
-    field public static final int SERVICE_TYPE_NORMAL = 1; // 0x1
-    field public static final int VERIFICATION_STATUS_FAILED = 2; // 0x2
-    field public static final int VERIFICATION_STATUS_NOT_VERIFIED = 0; // 0x0
-    field public static final int VERIFICATION_STATUS_PASSED = 1; // 0x1
-  }
-
-  public class ImsCallSessionListener {
-    method public void callQualityChanged(@NonNull android.telephony.CallQuality);
-    method public void callSessionConferenceExtendFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionConferenceExtendReceived(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile);
-    method public void callSessionConferenceExtended(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile);
-    method public void callSessionConferenceStateUpdated(android.telephony.ims.ImsConferenceState);
-    method @Deprecated public void callSessionHandover(int, int, android.telephony.ims.ImsReasonInfo);
-    method @Deprecated public void callSessionHandoverFailed(int, int, android.telephony.ims.ImsReasonInfo);
-    method public void callSessionHeld(android.telephony.ims.ImsCallProfile);
-    method public void callSessionHoldFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionHoldReceived(android.telephony.ims.ImsCallProfile);
-    method public void callSessionInitiated(android.telephony.ims.ImsCallProfile);
-    method public void callSessionInitiatedFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionInviteParticipantsRequestDelivered();
-    method public void callSessionInviteParticipantsRequestFailed(android.telephony.ims.ImsReasonInfo);
-    method @Deprecated public void callSessionMayHandover(int, int);
-    method public void callSessionMergeComplete(android.telephony.ims.stub.ImsCallSessionImplBase);
-    method public void callSessionMergeFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionMergeStarted(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile);
-    method public void callSessionMultipartyStateChanged(boolean);
-    method public void callSessionProgressing(android.telephony.ims.ImsStreamMediaProfile);
-    method public void callSessionRemoveParticipantsRequestDelivered();
-    method public void callSessionRemoveParticipantsRequestFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionResumeFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionResumeReceived(android.telephony.ims.ImsCallProfile);
-    method public void callSessionResumed(android.telephony.ims.ImsCallProfile);
-    method public void callSessionRttAudioIndicatorChanged(@NonNull android.telephony.ims.ImsStreamMediaProfile);
-    method public void callSessionRttMessageReceived(String);
-    method public void callSessionRttModifyRequestReceived(android.telephony.ims.ImsCallProfile);
-    method public void callSessionRttModifyResponseReceived(int);
-    method public void callSessionSuppServiceReceived(android.telephony.ims.ImsSuppServiceNotification);
-    method public void callSessionTerminated(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionTtyModeReceived(int);
-    method public void callSessionUpdateFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionUpdateReceived(android.telephony.ims.ImsCallProfile);
-    method public void callSessionUpdated(android.telephony.ims.ImsCallProfile);
-    method public void callSessionUssdMessageReceived(int, String);
-    method public void onHandover(int, int, @Nullable android.telephony.ims.ImsReasonInfo);
-    method public void onHandoverFailed(int, int, @NonNull android.telephony.ims.ImsReasonInfo);
-    method public void onMayHandover(int, int);
-  }
-
-  public final class ImsConferenceState implements android.os.Parcelable {
-    method public int describeContents();
-    method public static int getConnectionStateForStatus(String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsConferenceState> CREATOR;
-    field public static final String DISPLAY_TEXT = "display-text";
-    field public static final String ENDPOINT = "endpoint";
-    field public static final String SIP_STATUS_CODE = "sipstatuscode";
-    field public static final String STATUS = "status";
-    field public static final String STATUS_ALERTING = "alerting";
-    field public static final String STATUS_CONNECTED = "connected";
-    field public static final String STATUS_CONNECT_FAIL = "connect-fail";
-    field public static final String STATUS_DIALING_IN = "dialing-in";
-    field public static final String STATUS_DIALING_OUT = "dialing-out";
-    field public static final String STATUS_DISCONNECTED = "disconnected";
-    field public static final String STATUS_DISCONNECTING = "disconnecting";
-    field public static final String STATUS_MUTED_VIA_FOCUS = "muted-via-focus";
-    field public static final String STATUS_ON_HOLD = "on-hold";
-    field public static final String STATUS_PENDING = "pending";
-    field public static final String STATUS_SEND_ONLY = "sendonly";
-    field public static final String STATUS_SEND_RECV = "sendrecv";
-    field public static final String USER = "user";
-    field public final java.util.HashMap<java.lang.String,android.os.Bundle> mParticipants;
-  }
-
-  public final class ImsException extends java.lang.Exception {
-    ctor public ImsException(@Nullable String);
-    ctor public ImsException(@Nullable String, int);
-    ctor public ImsException(@Nullable String, int, @Nullable Throwable);
-  }
-
-  public final class ImsExternalCallState implements android.os.Parcelable {
-    ctor public ImsExternalCallState(@NonNull String, @NonNull android.net.Uri, @Nullable android.net.Uri, boolean, int, int, boolean);
-    method public int describeContents();
-    method @NonNull public android.net.Uri getAddress();
-    method public int getCallId();
-    method public int getCallState();
-    method public int getCallType();
-    method @Nullable public android.net.Uri getLocalAddress();
-    method public boolean isCallHeld();
-    method public boolean isCallPullable();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CALL_STATE_CONFIRMED = 1; // 0x1
-    field public static final int CALL_STATE_TERMINATED = 2; // 0x2
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsExternalCallState> CREATOR;
-  }
-
-  public class ImsMmTelManager implements android.telephony.ims.RegistrationManager {
-    method @Deprecated @NonNull @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public static android.telephony.ims.ImsMmTelManager createForSubscriptionId(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getFeatureState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>) throws android.telephony.ims.ImsException;
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getRegistrationState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getVoWiFiRoamingModeSetting();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isAvailable(int, int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isCapable(int, int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void isSupported(int, int, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>) throws android.telephony.ims.ImsException;
-    method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void registerImsRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ImsMmTelManager.RegistrationCallback) throws android.telephony.ims.ImsException;
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setAdvancedCallingSettingEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setRttCapabilitySetting(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiModeSetting(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiNonPersistent(boolean, int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiRoamingModeSetting(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiRoamingSettingEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiSettingEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVtSettingEnabled(boolean);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.ImsMmTelManager.RegistrationCallback);
-  }
-
-  @Deprecated public static class ImsMmTelManager.RegistrationCallback extends android.telephony.ims.RegistrationManager.RegistrationCallback {
-    ctor @Deprecated public ImsMmTelManager.RegistrationCallback();
-  }
-
-  public final class ImsReasonInfo implements android.os.Parcelable {
-    field public static final String EXTRA_MSG_SERVICE_NOT_AUTHORIZED = "Forbidden. Not Authorized for Service";
-  }
-
-  public class ImsService extends android.app.Service {
-    ctor public ImsService();
-    method public android.telephony.ims.feature.MmTelFeature createMmTelFeature(int);
-    method public android.telephony.ims.feature.RcsFeature createRcsFeature(int);
-    method public void disableIms(int);
-    method public void enableIms(int);
-    method public android.telephony.ims.stub.ImsConfigImplBase getConfig(int);
-    method public android.telephony.ims.stub.ImsRegistrationImplBase getRegistration(int);
-    method public final void onUpdateSupportedImsFeatures(android.telephony.ims.stub.ImsFeatureConfiguration) throws android.os.RemoteException;
-    method public android.telephony.ims.stub.ImsFeatureConfiguration querySupportedImsFeatures();
-    method public void readyForFeatureCreation();
-  }
-
-  public final class ImsSsData implements android.os.Parcelable {
-    ctor public ImsSsData(int, int, int, int, int);
-    method public int describeContents();
-    method @Nullable public java.util.List<android.telephony.ims.ImsCallForwardInfo> getCallForwardInfo();
-    method public int getRequestType();
-    method public int getResult();
-    method public int getServiceClass();
-    method public int getServiceType();
-    method @NonNull public java.util.List<android.telephony.ims.ImsSsInfo> getSuppServiceInfo();
-    method public int getTeleserviceType();
-    method public boolean isTypeBarring();
-    method public boolean isTypeCf();
-    method public boolean isTypeClip();
-    method public boolean isTypeClir();
-    method public boolean isTypeColp();
-    method public boolean isTypeColr();
-    method public boolean isTypeCw();
-    method public boolean isTypeIcb();
-    method public boolean isTypeInterrogation();
-    method public boolean isTypeUnConditional();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsSsData> CREATOR;
-    field public static final int RESULT_SUCCESS = 0; // 0x0
-    field public static final int SERVICE_CLASS_DATA = 2; // 0x2
-    field public static final int SERVICE_CLASS_DATA_CIRCUIT_ASYNC = 32; // 0x20
-    field public static final int SERVICE_CLASS_DATA_CIRCUIT_SYNC = 16; // 0x10
-    field public static final int SERVICE_CLASS_DATA_PACKET_ACCESS = 64; // 0x40
-    field public static final int SERVICE_CLASS_DATA_PAD = 128; // 0x80
-    field public static final int SERVICE_CLASS_FAX = 4; // 0x4
-    field public static final int SERVICE_CLASS_NONE = 0; // 0x0
-    field public static final int SERVICE_CLASS_SMS = 8; // 0x8
-    field public static final int SERVICE_CLASS_VOICE = 1; // 0x1
-    field public static final int SS_ACTIVATION = 0; // 0x0
-    field public static final int SS_ALL_BARRING = 18; // 0x12
-    field public static final int SS_ALL_DATA_TELESERVICES = 3; // 0x3
-    field public static final int SS_ALL_TELESERVICES_EXCEPT_SMS = 5; // 0x5
-    field public static final int SS_ALL_TELESEVICES = 1; // 0x1
-    field public static final int SS_ALL_TELE_AND_BEARER_SERVICES = 0; // 0x0
-    field public static final int SS_BAIC = 16; // 0x10
-    field public static final int SS_BAIC_ROAMING = 17; // 0x11
-    field public static final int SS_BAOC = 13; // 0xd
-    field public static final int SS_BAOIC = 14; // 0xe
-    field public static final int SS_BAOIC_EXC_HOME = 15; // 0xf
-    field public static final int SS_CFU = 0; // 0x0
-    field public static final int SS_CFUT = 6; // 0x6
-    field public static final int SS_CF_ALL = 4; // 0x4
-    field public static final int SS_CF_ALL_CONDITIONAL = 5; // 0x5
-    field public static final int SS_CF_BUSY = 1; // 0x1
-    field public static final int SS_CF_NOT_REACHABLE = 3; // 0x3
-    field public static final int SS_CF_NO_REPLY = 2; // 0x2
-    field public static final int SS_CLIP = 7; // 0x7
-    field public static final int SS_CLIR = 8; // 0x8
-    field public static final int SS_CNAP = 11; // 0xb
-    field public static final int SS_COLP = 9; // 0x9
-    field public static final int SS_COLR = 10; // 0xa
-    field public static final int SS_DEACTIVATION = 1; // 0x1
-    field public static final int SS_ERASURE = 4; // 0x4
-    field public static final int SS_INCOMING_BARRING = 20; // 0x14
-    field public static final int SS_INCOMING_BARRING_ANONYMOUS = 22; // 0x16
-    field public static final int SS_INCOMING_BARRING_DN = 21; // 0x15
-    field public static final int SS_INTERROGATION = 2; // 0x2
-    field public static final int SS_OUTGOING_BARRING = 19; // 0x13
-    field public static final int SS_REGISTRATION = 3; // 0x3
-    field public static final int SS_SMS_SERVICES = 4; // 0x4
-    field public static final int SS_TELEPHONY = 2; // 0x2
-    field public static final int SS_WAIT = 12; // 0xc
-  }
-
-  public static final class ImsSsData.Builder {
-    ctor public ImsSsData.Builder(int, int, int, int, int);
-    method @NonNull public android.telephony.ims.ImsSsData build();
-    method @NonNull public android.telephony.ims.ImsSsData.Builder setCallForwardingInfo(@NonNull java.util.List<android.telephony.ims.ImsCallForwardInfo>);
-    method @NonNull public android.telephony.ims.ImsSsData.Builder setSuppServiceInfo(@NonNull java.util.List<android.telephony.ims.ImsSsInfo>);
-  }
-
-  public final class ImsSsInfo implements android.os.Parcelable {
-    ctor @Deprecated public ImsSsInfo(int, @Nullable String);
-    method public int describeContents();
-    method public int getClirInterrogationStatus();
-    method public int getClirOutgoingState();
-    method @Deprecated public String getIcbNum();
-    method @Nullable public String getIncomingCommunicationBarringNumber();
-    method public int getProvisionStatus();
-    method public int getStatus();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CLIR_OUTGOING_DEFAULT = 0; // 0x0
-    field public static final int CLIR_OUTGOING_INVOCATION = 1; // 0x1
-    field public static final int CLIR_OUTGOING_SUPPRESSION = 2; // 0x2
-    field public static final int CLIR_STATUS_NOT_PROVISIONED = 0; // 0x0
-    field public static final int CLIR_STATUS_PROVISIONED_PERMANENT = 1; // 0x1
-    field public static final int CLIR_STATUS_TEMPORARILY_ALLOWED = 4; // 0x4
-    field public static final int CLIR_STATUS_TEMPORARILY_RESTRICTED = 3; // 0x3
-    field public static final int CLIR_STATUS_UNKNOWN = 2; // 0x2
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsSsInfo> CREATOR;
-    field public static final int DISABLED = 0; // 0x0
-    field public static final int ENABLED = 1; // 0x1
-    field public static final int NOT_REGISTERED = -1; // 0xffffffff
-    field public static final int SERVICE_NOT_PROVISIONED = 0; // 0x0
-    field public static final int SERVICE_PROVISIONED = 1; // 0x1
-    field public static final int SERVICE_PROVISIONING_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public static final class ImsSsInfo.Builder {
-    ctor public ImsSsInfo.Builder(int);
-    method @NonNull public android.telephony.ims.ImsSsInfo build();
-    method @NonNull public android.telephony.ims.ImsSsInfo.Builder setClirInterrogationStatus(int);
-    method @NonNull public android.telephony.ims.ImsSsInfo.Builder setClirOutgoingState(int);
-    method @NonNull public android.telephony.ims.ImsSsInfo.Builder setIncomingCommunicationBarringNumber(@NonNull String);
-    method @NonNull public android.telephony.ims.ImsSsInfo.Builder setProvisionStatus(int);
-  }
-
-  public final class ImsStreamMediaProfile implements android.os.Parcelable {
-    ctor public ImsStreamMediaProfile(int, int, int, int, int);
-    method public void copyFrom(android.telephony.ims.ImsStreamMediaProfile);
-    method public int describeContents();
-    method public int getAudioDirection();
-    method public int getAudioQuality();
-    method public int getRttMode();
-    method public int getVideoDirection();
-    method public int getVideoQuality();
-    method public boolean isReceivingRttAudio();
-    method public boolean isRttCall();
-    method public void setReceivingRttAudio(boolean);
-    method public void setRttMode(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int AUDIO_QUALITY_AMR = 1; // 0x1
-    field public static final int AUDIO_QUALITY_AMR_WB = 2; // 0x2
-    field public static final int AUDIO_QUALITY_EVRC = 4; // 0x4
-    field public static final int AUDIO_QUALITY_EVRC_B = 5; // 0x5
-    field public static final int AUDIO_QUALITY_EVRC_NW = 7; // 0x7
-    field public static final int AUDIO_QUALITY_EVRC_WB = 6; // 0x6
-    field public static final int AUDIO_QUALITY_EVS_FB = 20; // 0x14
-    field public static final int AUDIO_QUALITY_EVS_NB = 17; // 0x11
-    field public static final int AUDIO_QUALITY_EVS_SWB = 19; // 0x13
-    field public static final int AUDIO_QUALITY_EVS_WB = 18; // 0x12
-    field public static final int AUDIO_QUALITY_G711A = 13; // 0xd
-    field public static final int AUDIO_QUALITY_G711AB = 15; // 0xf
-    field public static final int AUDIO_QUALITY_G711U = 11; // 0xb
-    field public static final int AUDIO_QUALITY_G722 = 14; // 0xe
-    field public static final int AUDIO_QUALITY_G723 = 12; // 0xc
-    field public static final int AUDIO_QUALITY_G729 = 16; // 0x10
-    field public static final int AUDIO_QUALITY_GSM_EFR = 8; // 0x8
-    field public static final int AUDIO_QUALITY_GSM_FR = 9; // 0x9
-    field public static final int AUDIO_QUALITY_GSM_HR = 10; // 0xa
-    field public static final int AUDIO_QUALITY_NONE = 0; // 0x0
-    field public static final int AUDIO_QUALITY_QCELP13K = 3; // 0x3
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsStreamMediaProfile> CREATOR;
-    field public static final int DIRECTION_INACTIVE = 0; // 0x0
-    field public static final int DIRECTION_INVALID = -1; // 0xffffffff
-    field public static final int DIRECTION_RECEIVE = 1; // 0x1
-    field public static final int DIRECTION_SEND = 2; // 0x2
-    field public static final int DIRECTION_SEND_RECEIVE = 3; // 0x3
-    field public static final int RTT_MODE_DISABLED = 0; // 0x0
-    field public static final int RTT_MODE_FULL = 1; // 0x1
-    field public static final int VIDEO_QUALITY_NONE = 0; // 0x0
-    field public static final int VIDEO_QUALITY_QCIF = 1; // 0x1
-    field public static final int VIDEO_QUALITY_QVGA_LANDSCAPE = 2; // 0x2
-    field public static final int VIDEO_QUALITY_QVGA_PORTRAIT = 4; // 0x4
-    field public static final int VIDEO_QUALITY_VGA_LANDSCAPE = 8; // 0x8
-    field public static final int VIDEO_QUALITY_VGA_PORTRAIT = 16; // 0x10
-  }
-
-  public final class ImsSuppServiceNotification implements android.os.Parcelable {
-    ctor public ImsSuppServiceNotification(int, int, int, int, String, String[]);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsSuppServiceNotification> CREATOR;
-    field public final int code;
-    field public final String[] history;
-    field public final int index;
-    field public final int notificationType;
-    field public final String number;
-    field public final int type;
-  }
-
-  public class ImsUtListener {
-    method public void onLineIdentificationSupplementaryServiceResponse(int, @NonNull android.telephony.ims.ImsSsInfo);
-    method public void onSupplementaryServiceIndication(android.telephony.ims.ImsSsData);
-    method public void onUtConfigurationCallBarringQueried(int, android.telephony.ims.ImsSsInfo[]);
-    method public void onUtConfigurationCallForwardQueried(int, android.telephony.ims.ImsCallForwardInfo[]);
-    method public void onUtConfigurationCallWaitingQueried(int, android.telephony.ims.ImsSsInfo[]);
-    method @Deprecated public void onUtConfigurationQueried(int, android.os.Bundle);
-    method public void onUtConfigurationQueryFailed(int, android.telephony.ims.ImsReasonInfo);
-    method public void onUtConfigurationUpdateFailed(int, android.telephony.ims.ImsReasonInfo);
-    method public void onUtConfigurationUpdated(int);
-    field @Deprecated public static final String BUNDLE_KEY_CLIR = "queryClir";
-    field @Deprecated public static final String BUNDLE_KEY_SSINFO = "imsSsInfo";
-  }
-
-  public abstract class ImsVideoCallProvider {
-    ctor public ImsVideoCallProvider();
-    method public void changeCallDataUsage(long);
-    method public void changeCameraCapabilities(android.telecom.VideoProfile.CameraCapabilities);
-    method public void changePeerDimensions(int, int);
-    method public void changeVideoQuality(int);
-    method public void handleCallSessionEvent(int);
-    method public abstract void onRequestCallDataUsage();
-    method public abstract void onRequestCameraCapabilities();
-    method public abstract void onSendSessionModifyRequest(android.telecom.VideoProfile, android.telecom.VideoProfile);
-    method public abstract void onSendSessionModifyResponse(android.telecom.VideoProfile);
-    method public abstract void onSetCamera(String);
-    method public void onSetCamera(String, int);
-    method public abstract void onSetDeviceOrientation(int);
-    method public abstract void onSetDisplaySurface(android.view.Surface);
-    method public abstract void onSetPauseImage(android.net.Uri);
-    method public abstract void onSetPreviewSurface(android.view.Surface);
-    method public abstract void onSetZoom(float);
-    method public void receiveSessionModifyRequest(android.telecom.VideoProfile);
-    method public void receiveSessionModifyResponse(int, android.telecom.VideoProfile, android.telecom.VideoProfile);
-  }
-
-  public class ProvisioningManager {
-    method @NonNull public static android.telephony.ims.ProvisioningManager createForSubscriptionId(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public int getProvisioningIntValue(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public boolean getProvisioningStatusForCapability(int, int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public String getProvisioningStringValue(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public boolean getRcsProvisioningStatusForCapability(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void notifyRcsAutoConfigurationReceived(@NonNull byte[], boolean);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void registerProvisioningChangedCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ProvisioningManager.Callback) throws android.telephony.ims.ImsException;
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public int setProvisioningIntValue(int, int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public void setProvisioningStatusForCapability(int, int, boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public int setProvisioningStringValue(int, @NonNull String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public void setRcsProvisioningStatusForCapability(int, boolean);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void unregisterProvisioningChangedCallback(@NonNull android.telephony.ims.ProvisioningManager.Callback);
-    field public static final int KEY_VOICE_OVER_WIFI_ENTITLEMENT_ID = 67; // 0x43
-    field public static final int KEY_VOICE_OVER_WIFI_MODE_OVERRIDE = 27; // 0x1b
-    field public static final int KEY_VOICE_OVER_WIFI_ROAMING_ENABLED_OVERRIDE = 26; // 0x1a
-    field public static final int PROVISIONING_VALUE_DISABLED = 0; // 0x0
-    field public static final int PROVISIONING_VALUE_ENABLED = 1; // 0x1
-    field public static final String STRING_QUERY_RESULT_ERROR_GENERIC = "STRING_QUERY_RESULT_ERROR_GENERIC";
-    field public static final String STRING_QUERY_RESULT_ERROR_NOT_READY = "STRING_QUERY_RESULT_ERROR_NOT_READY";
-  }
-
-  public static class ProvisioningManager.Callback {
-    ctor public ProvisioningManager.Callback();
-    method public void onProvisioningIntChanged(int, int);
-    method public void onProvisioningStringChanged(int, @NonNull String);
-  }
-
-  public class RcsUceAdapter {
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setUceSettingEnabled(boolean) throws android.telephony.ims.ImsException;
-  }
-
-}
-
-package android.telephony.ims.feature {
-
-  public final class CapabilityChangeRequest implements android.os.Parcelable {
-    method public void addCapabilitiesToDisableForTech(int, int);
-    method public void addCapabilitiesToEnableForTech(int, int);
-    method public int describeContents();
-    method public java.util.List<android.telephony.ims.feature.CapabilityChangeRequest.CapabilityPair> getCapabilitiesToDisable();
-    method public java.util.List<android.telephony.ims.feature.CapabilityChangeRequest.CapabilityPair> getCapabilitiesToEnable();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.feature.CapabilityChangeRequest> CREATOR;
-  }
-
-  public static class CapabilityChangeRequest.CapabilityPair {
-    ctor public CapabilityChangeRequest.CapabilityPair(int, int);
-    method public int getCapability();
-    method public int getRadioTech();
-  }
-
-  public abstract class ImsFeature {
-    ctor public ImsFeature();
-    method public abstract void changeEnabledCapabilities(android.telephony.ims.feature.CapabilityChangeRequest, android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy);
-    method public int getFeatureState();
-    method public final int getSlotIndex();
-    method public abstract void onFeatureReady();
-    method public abstract void onFeatureRemoved();
-    method public final void setFeatureState(int);
-    field public static final int CAPABILITY_ERROR_GENERIC = -1; // 0xffffffff
-    field public static final int CAPABILITY_SUCCESS = 0; // 0x0
-    field public static final int FEATURE_EMERGENCY_MMTEL = 0; // 0x0
-    field public static final int FEATURE_MMTEL = 1; // 0x1
-    field public static final int FEATURE_RCS = 2; // 0x2
-    field public static final int STATE_INITIALIZING = 1; // 0x1
-    field public static final int STATE_READY = 2; // 0x2
-    field public static final int STATE_UNAVAILABLE = 0; // 0x0
-  }
-
-  @Deprecated public static class ImsFeature.Capabilities {
-    field @Deprecated protected int mCapabilities;
-  }
-
-  protected static class ImsFeature.CapabilityCallbackProxy {
-    method public void onChangeCapabilityConfigurationError(int, int, int);
-  }
-
-  public class MmTelFeature extends android.telephony.ims.feature.ImsFeature {
-    ctor public MmTelFeature();
-    method public void changeEnabledCapabilities(@NonNull android.telephony.ims.feature.CapabilityChangeRequest, @NonNull android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy);
-    method @Nullable public android.telephony.ims.ImsCallProfile createCallProfile(int, int);
-    method @Nullable public android.telephony.ims.stub.ImsCallSessionImplBase createCallSession(@NonNull android.telephony.ims.ImsCallProfile);
-    method @NonNull public android.telephony.ims.stub.ImsEcbmImplBase getEcbm();
-    method @NonNull public android.telephony.ims.stub.ImsMultiEndpointImplBase getMultiEndpoint();
-    method @NonNull public android.telephony.ims.stub.ImsSmsImplBase getSmsImplementation();
-    method @NonNull public android.telephony.ims.stub.ImsUtImplBase getUt();
-    method public final void notifyCapabilitiesStatusChanged(@NonNull android.telephony.ims.feature.MmTelFeature.MmTelCapabilities);
-    method public final void notifyIncomingCall(@NonNull android.telephony.ims.stub.ImsCallSessionImplBase, @NonNull android.os.Bundle);
-    method public final void notifyRejectedCall(@NonNull android.telephony.ims.ImsCallProfile, @NonNull android.telephony.ims.ImsReasonInfo);
-    method public final void notifyVoiceMessageCountUpdate(int);
-    method public void onFeatureReady();
-    method public void onFeatureRemoved();
-    method public boolean queryCapabilityConfiguration(int, int);
-    method @NonNull public final android.telephony.ims.feature.MmTelFeature.MmTelCapabilities queryCapabilityStatus();
-    method public void setUiTtyMode(int, @Nullable android.os.Message);
-    method public int shouldProcessCall(@NonNull String[]);
-    field public static final String EXTRA_IS_UNKNOWN_CALL = "android.telephony.ims.feature.extra.IS_UNKNOWN_CALL";
-    field public static final String EXTRA_IS_USSD = "android.telephony.ims.feature.extra.IS_USSD";
-    field public static final int PROCESS_CALL_CSFB = 1; // 0x1
-    field public static final int PROCESS_CALL_IMS = 0; // 0x0
-  }
-
-  public static class MmTelFeature.MmTelCapabilities extends android.telephony.ims.feature.ImsFeature.Capabilities {
-    ctor public MmTelFeature.MmTelCapabilities();
-    ctor @Deprecated public MmTelFeature.MmTelCapabilities(android.telephony.ims.feature.ImsFeature.Capabilities);
-    ctor public MmTelFeature.MmTelCapabilities(int);
-    method public final void addCapabilities(int);
-    method public final boolean isCapable(int);
-    method public final void removeCapabilities(int);
-  }
-
-  public class RcsFeature extends android.telephony.ims.feature.ImsFeature {
-    ctor public RcsFeature();
-    method public void changeEnabledCapabilities(@NonNull android.telephony.ims.feature.CapabilityChangeRequest, @NonNull android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy);
-    method public void onFeatureReady();
-    method public void onFeatureRemoved();
-  }
-
-}
-
-package android.telephony.ims.stub {
-
-  public class ImsCallSessionImplBase implements java.lang.AutoCloseable {
-    ctor public ImsCallSessionImplBase();
-    method public void accept(int, android.telephony.ims.ImsStreamMediaProfile);
-    method public void close();
-    method public void deflect(String);
-    method public void extendToConference(String[]);
-    method public String getCallId();
-    method public android.telephony.ims.ImsCallProfile getCallProfile();
-    method public android.telephony.ims.ImsVideoCallProvider getImsVideoCallProvider();
-    method public android.telephony.ims.ImsCallProfile getLocalCallProfile();
-    method public String getProperty(String);
-    method public android.telephony.ims.ImsCallProfile getRemoteCallProfile();
-    method public int getState();
-    method public void hold(android.telephony.ims.ImsStreamMediaProfile);
-    method public void inviteParticipants(String[]);
-    method public boolean isInCall();
-    method public boolean isMultiparty();
-    method public void merge();
-    method public void reject(int);
-    method public void removeParticipants(String[]);
-    method public void resume(android.telephony.ims.ImsStreamMediaProfile);
-    method public void sendDtmf(char, android.os.Message);
-    method public void sendRttMessage(String);
-    method public void sendRttModifyRequest(android.telephony.ims.ImsCallProfile);
-    method public void sendRttModifyResponse(boolean);
-    method public void sendUssd(String);
-    method public void setListener(android.telephony.ims.ImsCallSessionListener);
-    method public void setMute(boolean);
-    method public void start(String, android.telephony.ims.ImsCallProfile);
-    method public void startConference(String[], android.telephony.ims.ImsCallProfile);
-    method public void startDtmf(char);
-    method public void stopDtmf();
-    method public void terminate(int);
-    method public void update(int, android.telephony.ims.ImsStreamMediaProfile);
-    field public static final int USSD_MODE_NOTIFY = 0; // 0x0
-    field public static final int USSD_MODE_REQUEST = 1; // 0x1
-  }
-
-  public static class ImsCallSessionImplBase.State {
-    method public static String toString(int);
-    field public static final int ESTABLISHED = 4; // 0x4
-    field public static final int ESTABLISHING = 3; // 0x3
-    field public static final int IDLE = 0; // 0x0
-    field public static final int INITIATED = 1; // 0x1
-    field public static final int INVALID = -1; // 0xffffffff
-    field public static final int NEGOTIATING = 2; // 0x2
-    field public static final int REESTABLISHING = 6; // 0x6
-    field public static final int RENEGOTIATING = 5; // 0x5
-    field public static final int TERMINATED = 8; // 0x8
-    field public static final int TERMINATING = 7; // 0x7
-  }
-
-  public class ImsConfigImplBase {
-    ctor public ImsConfigImplBase();
-    method public int getConfigInt(int);
-    method public String getConfigString(int);
-    method public final void notifyProvisionedValueChanged(int, int);
-    method public final void notifyProvisionedValueChanged(int, String);
-    method public void notifyRcsAutoConfigurationReceived(@NonNull byte[], boolean);
-    method public int setConfig(int, int);
-    method public int setConfig(int, String);
-    field public static final int CONFIG_RESULT_FAILED = 1; // 0x1
-    field public static final int CONFIG_RESULT_SUCCESS = 0; // 0x0
-    field public static final int CONFIG_RESULT_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public class ImsEcbmImplBase {
-    ctor public ImsEcbmImplBase();
-    method public final void enteredEcbm();
-    method public void exitEmergencyCallbackMode();
-    method public final void exitedEcbm();
-  }
-
-  public final class ImsFeatureConfiguration implements android.os.Parcelable {
-    method public int describeContents();
-    method public java.util.Set<android.telephony.ims.stub.ImsFeatureConfiguration.FeatureSlotPair> getServiceFeatures();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.stub.ImsFeatureConfiguration> CREATOR;
-  }
-
-  public static class ImsFeatureConfiguration.Builder {
-    ctor public ImsFeatureConfiguration.Builder();
-    method public android.telephony.ims.stub.ImsFeatureConfiguration.Builder addFeature(int, int);
-    method public android.telephony.ims.stub.ImsFeatureConfiguration build();
-  }
-
-  public static final class ImsFeatureConfiguration.FeatureSlotPair {
-    ctor public ImsFeatureConfiguration.FeatureSlotPair(int, int);
-    field public final int featureType;
-    field public final int slotId;
-  }
-
-  public class ImsMultiEndpointImplBase {
-    ctor public ImsMultiEndpointImplBase();
-    method public final void onImsExternalCallStateUpdate(java.util.List<android.telephony.ims.ImsExternalCallState>);
-    method public void requestImsExternalCallStateInfo();
-  }
-
-  public class ImsRegistrationImplBase {
-    ctor public ImsRegistrationImplBase();
-    method public final void onDeregistered(android.telephony.ims.ImsReasonInfo);
-    method public final void onRegistered(int);
-    method public final void onRegistering(int);
-    method public final void onSubscriberAssociatedUriChanged(android.net.Uri[]);
-    method public final void onTechnologyChangeFailed(int, android.telephony.ims.ImsReasonInfo);
-    field public static final int REGISTRATION_TECH_IWLAN = 1; // 0x1
-    field public static final int REGISTRATION_TECH_LTE = 0; // 0x0
-    field public static final int REGISTRATION_TECH_NONE = -1; // 0xffffffff
-  }
-
-  public class ImsSmsImplBase {
-    ctor public ImsSmsImplBase();
-    method public void acknowledgeSms(int, @IntRange(from=0, to=65535) int, int);
-    method public void acknowledgeSmsReport(int, @IntRange(from=0, to=65535) int, int);
-    method public String getSmsFormat();
-    method public void onReady();
-    method @Deprecated public final void onSendSmsResult(int, @IntRange(from=0, to=65535) int, int, int) throws java.lang.RuntimeException;
-    method public final void onSendSmsResultError(int, @IntRange(from=0, to=65535) int, int, int, int) throws java.lang.RuntimeException;
-    method public final void onSendSmsResultSuccess(int, @IntRange(from=0, to=65535) int) throws java.lang.RuntimeException;
-    method public final void onSmsReceived(int, String, byte[]) throws java.lang.RuntimeException;
-    method @Deprecated public final void onSmsStatusReportReceived(int, @IntRange(from=0, to=65535) int, String, byte[]) throws java.lang.RuntimeException;
-    method public final void onSmsStatusReportReceived(int, String, byte[]) throws java.lang.RuntimeException;
-    method public void sendSms(int, @IntRange(from=0, to=65535) int, String, String, boolean, byte[]);
-    field public static final int DELIVER_STATUS_ERROR_GENERIC = 2; // 0x2
-    field public static final int DELIVER_STATUS_ERROR_NO_MEMORY = 3; // 0x3
-    field public static final int DELIVER_STATUS_ERROR_REQUEST_NOT_SUPPORTED = 4; // 0x4
-    field public static final int DELIVER_STATUS_OK = 1; // 0x1
-    field public static final int RESULT_NO_NETWORK_ERROR = -1; // 0xffffffff
-    field public static final int SEND_STATUS_ERROR = 2; // 0x2
-    field public static final int SEND_STATUS_ERROR_FALLBACK = 4; // 0x4
-    field public static final int SEND_STATUS_ERROR_RETRY = 3; // 0x3
-    field public static final int SEND_STATUS_OK = 1; // 0x1
-    field public static final int STATUS_REPORT_STATUS_ERROR = 2; // 0x2
-    field public static final int STATUS_REPORT_STATUS_OK = 1; // 0x1
-  }
-
-  public class ImsUtImplBase {
-    ctor public ImsUtImplBase();
-    method public void close();
-    method public int queryCallBarring(int);
-    method public int queryCallBarringForServiceClass(int, int);
-    method public int queryCallForward(int, String);
-    method public int queryCallWaiting();
-    method public int queryClip();
-    method public int queryClir();
-    method public int queryColp();
-    method public int queryColr();
-    method public void setListener(android.telephony.ims.ImsUtListener);
-    method public int transact(android.os.Bundle);
-    method public int updateCallBarring(int, int, String[]);
-    method public int updateCallBarringForServiceClass(int, int, String[], int);
-    method public int updateCallForward(int, int, String, int, int);
-    method public int updateCallWaiting(boolean, int);
-    method public int updateClip(boolean);
-    method public int updateClir(int);
-    method public int updateColp(boolean);
-    method public int updateColr(int);
-  }
-
-}
-
-package android.telephony.mbms {
-
-  public static class DownloadRequest.Builder {
-    method public android.telephony.mbms.DownloadRequest.Builder setServiceId(String);
-  }
-
-  public final class FileInfo implements android.os.Parcelable {
-    ctor public FileInfo(android.net.Uri, String);
-  }
-
-  public final class FileServiceInfo extends android.telephony.mbms.ServiceInfo implements android.os.Parcelable {
-    ctor public FileServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date, java.util.List<android.telephony.mbms.FileInfo>);
-  }
-
-  public class MbmsDownloadReceiver extends android.content.BroadcastReceiver {
-    field public static final int RESULT_APP_NOTIFICATION_ERROR = 6; // 0x6
-    field public static final int RESULT_BAD_TEMP_FILE_ROOT = 3; // 0x3
-    field public static final int RESULT_DOWNLOAD_FINALIZATION_ERROR = 4; // 0x4
-    field public static final int RESULT_INVALID_ACTION = 1; // 0x1
-    field public static final int RESULT_MALFORMED_INTENT = 2; // 0x2
-    field public static final int RESULT_OK = 0; // 0x0
-    field public static final int RESULT_TEMP_FILE_GENERATION_ERROR = 5; // 0x5
-  }
-
-  public final class StreamingServiceInfo extends android.telephony.mbms.ServiceInfo implements android.os.Parcelable {
-    ctor public StreamingServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date);
-  }
-
-  public final class UriPathPair implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.net.Uri getContentUri();
-    method public android.net.Uri getFilePathUri();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.mbms.UriPathPair> CREATOR;
-  }
-
-}
-
-package android.telephony.mbms.vendor {
-
-  public class MbmsDownloadServiceBase extends android.os.Binder implements android.os.IInterface {
-    ctor public MbmsDownloadServiceBase();
-    method public int addProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener) throws android.os.RemoteException;
-    method public int addServiceAnnouncement(int, @NonNull byte[]);
-    method public int addStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener) throws android.os.RemoteException;
-    method public android.os.IBinder asBinder();
-    method public int cancelDownload(android.telephony.mbms.DownloadRequest) throws android.os.RemoteException;
-    method public void dispose(int) throws android.os.RemoteException;
-    method public int download(android.telephony.mbms.DownloadRequest) throws android.os.RemoteException;
-    method public int initialize(int, android.telephony.mbms.MbmsDownloadSessionCallback) throws android.os.RemoteException;
-    method @NonNull public java.util.List<android.telephony.mbms.DownloadRequest> listPendingDownloads(int) throws android.os.RemoteException;
-    method public void onAppCallbackDied(int, int);
-    method public boolean onTransact(int, android.os.Parcel, android.os.Parcel, int) throws android.os.RemoteException;
-    method public int removeProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener) throws android.os.RemoteException;
-    method public int removeStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener) throws android.os.RemoteException;
-    method public int requestDownloadState(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo) throws android.os.RemoteException;
-    method public int requestUpdateFileServices(int, java.util.List<java.lang.String>) throws android.os.RemoteException;
-    method public int resetDownloadKnowledge(android.telephony.mbms.DownloadRequest) throws android.os.RemoteException;
-    method public int setTempFileRootDirectory(int, String) throws android.os.RemoteException;
-  }
-
-  public class MbmsGroupCallServiceBase extends android.app.Service {
-    ctor public MbmsGroupCallServiceBase();
-    method public void dispose(int) throws android.os.RemoteException;
-    method public int initialize(@NonNull android.telephony.mbms.MbmsGroupCallSessionCallback, int) throws android.os.RemoteException;
-    method public void onAppCallbackDied(int, int);
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public int startGroupCall(int, long, @NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.lang.Integer>, @NonNull android.telephony.mbms.GroupCallCallback);
-    method public void stopGroupCall(int, long);
-    method public void updateGroupCall(int, long, @NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.lang.Integer>);
-  }
-
-  public class MbmsStreamingServiceBase extends android.os.Binder implements android.os.IInterface {
-    ctor public MbmsStreamingServiceBase();
-    method public android.os.IBinder asBinder();
-    method public void dispose(int) throws android.os.RemoteException;
-    method @Nullable public android.net.Uri getPlaybackUri(int, String) throws android.os.RemoteException;
-    method public int initialize(android.telephony.mbms.MbmsStreamingSessionCallback, int) throws android.os.RemoteException;
-    method public void onAppCallbackDied(int, int);
-    method public boolean onTransact(int, android.os.Parcel, android.os.Parcel, int) throws android.os.RemoteException;
-    method public int requestUpdateStreamingServices(int, java.util.List<java.lang.String>) throws android.os.RemoteException;
-    method public int startStreaming(int, String, android.telephony.mbms.StreamingServiceCallback) throws android.os.RemoteException;
-    method public void stopStreaming(int, String) throws android.os.RemoteException;
-  }
-
-  public class VendorUtils {
-    ctor public VendorUtils();
-    method public static android.content.ComponentName getAppReceiverFromPackageName(android.content.Context, String);
-    field public static final String ACTION_CLEANUP = "android.telephony.mbms.action.CLEANUP";
-    field public static final String ACTION_DOWNLOAD_RESULT_INTERNAL = "android.telephony.mbms.action.DOWNLOAD_RESULT_INTERNAL";
-    field public static final String ACTION_FILE_DESCRIPTOR_REQUEST = "android.telephony.mbms.action.FILE_DESCRIPTOR_REQUEST";
-    field public static final String EXTRA_FD_COUNT = "android.telephony.mbms.extra.FD_COUNT";
-    field public static final String EXTRA_FINAL_URI = "android.telephony.mbms.extra.FINAL_URI";
-    field public static final String EXTRA_FREE_URI_LIST = "android.telephony.mbms.extra.FREE_URI_LIST";
-    field public static final String EXTRA_PAUSED_LIST = "android.telephony.mbms.extra.PAUSED_LIST";
-    field public static final String EXTRA_PAUSED_URI_LIST = "android.telephony.mbms.extra.PAUSED_URI_LIST";
-    field public static final String EXTRA_SERVICE_ID = "android.telephony.mbms.extra.SERVICE_ID";
-    field public static final String EXTRA_TEMP_FILES_IN_USE = "android.telephony.mbms.extra.TEMP_FILES_IN_USE";
-    field public static final String EXTRA_TEMP_FILE_ROOT = "android.telephony.mbms.extra.TEMP_FILE_ROOT";
-    field public static final String EXTRA_TEMP_LIST = "android.telephony.mbms.extra.TEMP_LIST";
-  }
-
-}
-
-package android.util {
-
-  public class EventLog {
-    method public static void readEventsOnWrapping(int[], long, java.util.Collection<android.util.EventLog.Event>) throws java.io.IOException;
-  }
-
-  public static final class EventLog.Event {
-    method public int getUid();
-  }
-
-}
-
-package android.view {
-
-  public abstract class Window {
-    method public void addSystemFlags(@android.view.WindowManager.LayoutParams.SystemFlags int);
-  }
-
-  public interface WindowManager extends android.view.ViewManager {
-    method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public android.graphics.Region getCurrentImeTouchRegion();
-  }
-
-  public static class WindowManager.LayoutParams extends android.view.ViewGroup.LayoutParams implements android.os.Parcelable {
-    method public final long getUserActivityTimeout();
-    method public final void setUserActivityTimeout(long);
-    field @RequiresPermission(android.Manifest.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS) public static final int SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS = 524288; // 0x80000
-    field @RequiresPermission(android.Manifest.permission.INTERNAL_SYSTEM_WINDOW) public static final int SYSTEM_FLAG_SHOW_FOR_ALL_USERS = 16; // 0x10
-  }
-
-  @IntDef(flag=true, prefix={"SYSTEM_FLAG_"}, value={android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS, android.view.WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface WindowManager.LayoutParams.SystemFlags {
-  }
-
-}
-
-package android.view.accessibility {
-
-  public final class AccessibilityManager {
-    method public int getAccessibilityWindowId(@Nullable android.os.IBinder);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACCESSIBILITY) public void performAccessibilityShortcut();
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACCESSIBILITY) public void registerSystemAction(@NonNull android.app.RemoteAction, int);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACCESSIBILITY) public void unregisterSystemAction(int);
-  }
-
-}
-
-package android.view.autofill {
-
-  public final class AutofillManager {
-    method public void setAugmentedAutofillWhitelist(@Nullable java.util.Set<java.lang.String>, @Nullable java.util.Set<android.content.ComponentName>);
-  }
-
-}
-
-package android.view.contentcapture {
-
-  public final class ContentCaptureContext implements android.os.Parcelable {
-    method @Nullable public android.content.ComponentName getActivityComponent();
-    method public int getDisplayId();
-    method public int getFlags();
-    method @Nullable public android.view.contentcapture.ContentCaptureSessionId getParentSessionId();
-    method public int getTaskId();
-    field public static final int FLAG_DISABLED_BY_APP = 1; // 0x1
-    field public static final int FLAG_DISABLED_BY_FLAG_SECURE = 2; // 0x2
-    field public static final int FLAG_RECONNECTED = 4; // 0x4
-  }
-
-  public final class ContentCaptureEvent implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public android.view.contentcapture.ContentCaptureContext getContentCaptureContext();
-    method public long getEventTime();
-    method @Nullable public android.view.autofill.AutofillId getId();
-    method @Nullable public java.util.List<android.view.autofill.AutofillId> getIds();
-    method @Nullable public android.graphics.Insets getInsets();
-    method @Nullable public CharSequence getText();
-    method public int getType();
-    method @Nullable public android.view.contentcapture.ViewNode getViewNode();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.view.contentcapture.ContentCaptureEvent> CREATOR;
-    field public static final int TYPE_CONTEXT_UPDATED = 6; // 0x6
-    field public static final int TYPE_SESSION_PAUSED = 8; // 0x8
-    field public static final int TYPE_SESSION_RESUMED = 7; // 0x7
-    field public static final int TYPE_VIEW_APPEARED = 1; // 0x1
-    field public static final int TYPE_VIEW_DISAPPEARED = 2; // 0x2
-    field public static final int TYPE_VIEW_INSETS_CHANGED = 9; // 0x9
-    field public static final int TYPE_VIEW_TEXT_CHANGED = 3; // 0x3
-    field public static final int TYPE_VIEW_TREE_APPEARED = 5; // 0x5
-    field public static final int TYPE_VIEW_TREE_APPEARING = 4; // 0x4
-  }
-
-  public final class ContentCaptureManager {
-    method public boolean isContentCaptureFeatureEnabled();
-    field public static final int NO_SESSION_ID = 0; // 0x0
-  }
-
-  public final class ViewNode extends android.app.assist.AssistStructure.ViewNode {
-    method @Nullable public android.view.autofill.AutofillId getParentAutofillId();
-  }
-
-}
-
-package android.webkit {
-
-  public abstract class CookieManager {
-    method protected abstract boolean allowFileSchemeCookiesImpl();
-    method public abstract String getCookie(String, boolean);
-    method public String getCookie(android.net.WebAddress);
-    method public abstract boolean hasCookies(boolean);
-    method protected abstract void setAcceptFileSchemeCookiesImpl(boolean);
-  }
-
-  public class FindActionModeCallback implements android.view.ActionMode.Callback android.text.TextWatcher android.view.View.OnClickListener android.webkit.WebView.FindListener {
-    ctor public FindActionModeCallback(android.content.Context);
-    method public void afterTextChanged(android.text.Editable);
-    method public void beforeTextChanged(CharSequence, int, int, int);
-    method public void findAll();
-    method public void finish();
-    method public int getActionModeGlobalBottom();
-    method public boolean onActionItemClicked(android.view.ActionMode, android.view.MenuItem);
-    method public void onClick(android.view.View);
-    method public boolean onCreateActionMode(android.view.ActionMode, android.view.Menu);
-    method public void onDestroyActionMode(android.view.ActionMode);
-    method public void onFindResultReceived(int, int, boolean);
-    method public boolean onPrepareActionMode(android.view.ActionMode, android.view.Menu);
-    method public void onTextChanged(CharSequence, int, int, int);
-    method public void setText(String);
-    method public void setWebView(@NonNull android.webkit.WebView);
-    method public void showSoftInput();
-    method public void updateMatchCount(int, int, boolean);
-  }
-
-  public static class FindActionModeCallback.NoAction implements android.view.ActionMode.Callback {
-    ctor public FindActionModeCallback.NoAction();
-    method public boolean onActionItemClicked(android.view.ActionMode, android.view.MenuItem);
-    method public boolean onCreateActionMode(android.view.ActionMode, android.view.Menu);
-    method public void onDestroyActionMode(android.view.ActionMode);
-    method public boolean onPrepareActionMode(android.view.ActionMode, android.view.Menu);
-  }
-
-  public class GeolocationPermissions {
-    ctor public GeolocationPermissions();
-  }
-
-  public class HttpAuthHandler extends android.os.Handler {
-    ctor public HttpAuthHandler();
-  }
-
-  public class JsDialogHelper {
-    ctor public JsDialogHelper(android.webkit.JsPromptResult, int, String, String, String);
-    ctor public JsDialogHelper(android.webkit.JsPromptResult, android.os.Message);
-    method public boolean invokeCallback(android.webkit.WebChromeClient, android.webkit.WebView);
-    method public void showDialog(android.content.Context);
-    field public static final int ALERT = 1; // 0x1
-    field public static final int CONFIRM = 2; // 0x2
-    field public static final int PROMPT = 3; // 0x3
-    field public static final int UNLOAD = 4; // 0x4
-  }
-
-  public class JsPromptResult extends android.webkit.JsResult {
-    ctor public JsPromptResult(android.webkit.JsResult.ResultReceiver);
-    method public String getStringResult();
-  }
-
-  public class JsResult {
-    ctor public JsResult(android.webkit.JsResult.ResultReceiver);
-    method public final boolean getResult();
-  }
-
-  public static interface JsResult.ResultReceiver {
-    method public void onJsResultComplete(android.webkit.JsResult);
-  }
-
-  public interface PacProcessor {
-    method @Nullable public String findProxyForUrl(@NonNull String);
-    method @NonNull public static android.webkit.PacProcessor getInstance();
-    method public boolean setProxyScript(@NonNull String);
-  }
-
-  public class SslErrorHandler extends android.os.Handler {
-    ctor public SslErrorHandler();
-  }
-
-  @Deprecated public abstract class TokenBindingService {
-    ctor @Deprecated public TokenBindingService();
-  }
-
-  public class WebChromeClient {
-    method @Deprecated public void openFileChooser(android.webkit.ValueCallback<android.net.Uri>, String, String);
-  }
-
-  public abstract class WebHistoryItem implements java.lang.Cloneable {
-    method @Deprecated public abstract int getId();
-  }
-
-  @Deprecated public abstract class WebIconDatabase {
-    method @Deprecated public abstract void bulkRequestIconForPageUrl(android.content.ContentResolver, String, android.webkit.WebIconDatabase.IconListener);
-  }
-
-  public abstract class WebMessagePort {
-    ctor public WebMessagePort();
-  }
-
-  public abstract class WebResourceError {
-    ctor public WebResourceError();
-  }
-
-  public class WebResourceResponse {
-    ctor public WebResourceResponse(boolean, String, String, int, String, java.util.Map<java.lang.String,java.lang.String>, java.io.InputStream);
-  }
-
-  public abstract class WebSettings {
-    method public abstract boolean getAcceptThirdPartyCookies();
-    method @Deprecated public abstract boolean getNavDump();
-    method @Deprecated public abstract boolean getPluginsEnabled();
-    method @Deprecated public abstract boolean getUseWebViewBackgroundForOverscrollBackground();
-    method @Deprecated public abstract int getUserAgent();
-    method public abstract boolean getVideoOverlayForEmbeddedEncryptedVideoEnabled();
-    method public abstract void setAcceptThirdPartyCookies(boolean);
-    method @Deprecated public abstract void setNavDump(boolean);
-    method @Deprecated public abstract void setPluginsEnabled(boolean);
-    method @Deprecated public abstract void setUseWebViewBackgroundForOverscrollBackground(boolean);
-    method @Deprecated public abstract void setUserAgent(int);
-    method public abstract void setVideoOverlayForEmbeddedEncryptedVideoEnabled(boolean);
-  }
-
-  public class WebStorage {
-    ctor public WebStorage();
-  }
-
-  public static class WebStorage.Origin {
-    ctor protected WebStorage.Origin(String, long, long);
-  }
-
-  public class WebView extends android.widget.AbsoluteLayout implements android.view.ViewGroup.OnHierarchyChangeListener android.view.ViewTreeObserver.OnGlobalFocusChangeListener {
-    method public android.webkit.WebViewProvider getWebViewProvider();
-  }
-
-  public static class WebView.HitTestResult {
-    ctor public WebView.HitTestResult();
-    method public void setExtra(String);
-    method public void setType(int);
-  }
-
-  public class WebView.PrivateAccess {
-    ctor public WebView.PrivateAccess();
-    method public void awakenScrollBars(int);
-    method public void awakenScrollBars(int, boolean);
-    method public float getHorizontalScrollFactor();
-    method public int getHorizontalScrollbarHeight();
-    method public float getVerticalScrollFactor();
-    method public void onScrollChanged(int, int, int, int);
-    method public void overScrollBy(int, int, int, int, int, int, int, int, boolean);
-    method public void setMeasuredDimension(int, int);
-    method public void setScrollXRaw(int);
-    method public void setScrollYRaw(int);
-    method public void super_computeScroll();
-    method public boolean super_dispatchKeyEvent(android.view.KeyEvent);
-    method public int super_getScrollBarStyle();
-    method public void super_onDrawVerticalScrollBar(android.graphics.Canvas, android.graphics.drawable.Drawable, int, int, int, int);
-    method public boolean super_onGenericMotionEvent(android.view.MotionEvent);
-    method public boolean super_onHoverEvent(android.view.MotionEvent);
-    method public boolean super_performAccessibilityAction(int, android.os.Bundle);
-    method public boolean super_performLongClick();
-    method public boolean super_requestFocus(int, android.graphics.Rect);
-    method public void super_scrollTo(int, int);
-    method public boolean super_setFrame(int, int, int, int);
-    method public void super_setLayoutParams(android.view.ViewGroup.LayoutParams);
-    method public void super_startActivityForResult(android.content.Intent, int);
-  }
-
-  public final class WebViewDelegate {
-    method public void addWebViewAssetPath(android.content.Context);
-    method @Deprecated public void callDrawGlFunction(android.graphics.Canvas, long);
-    method @Deprecated public void callDrawGlFunction(@NonNull android.graphics.Canvas, long, @Nullable Runnable);
-    method @Deprecated public boolean canInvokeDrawGlFunctor(android.view.View);
-    method @Deprecated public void detachDrawGlFunctor(android.view.View, long);
-    method public void drawWebViewFunctor(@NonNull android.graphics.Canvas, int);
-    method public android.app.Application getApplication();
-    method public String getDataDirectorySuffix();
-    method public String getErrorString(android.content.Context, int);
-    method public int getPackageId(android.content.res.Resources, String);
-    method @Deprecated public void invokeDrawGlFunctor(android.view.View, long, boolean);
-    method public boolean isMultiProcessEnabled();
-    method public boolean isTraceTagEnabled();
-    method public void setOnTraceEnabledChangeListener(android.webkit.WebViewDelegate.OnTraceEnabledChangeListener);
-  }
-
-  public static interface WebViewDelegate.OnTraceEnabledChangeListener {
-    method public void onTraceEnabledChange(boolean);
-  }
-
-  public final class WebViewFactory {
-    ctor public WebViewFactory();
-    method public static android.content.pm.PackageInfo getLoadedPackageInfo();
-    method public static int loadWebViewNativeLibraryFromPackage(String, ClassLoader);
-    method public static void prepareWebViewInZygote();
-    field public static final int LIBLOAD_ADDRESS_SPACE_NOT_RESERVED = 2; // 0x2
-    field public static final int LIBLOAD_FAILED_JNI_CALL = 7; // 0x7
-    field public static final int LIBLOAD_FAILED_LISTING_WEBVIEW_PACKAGES = 4; // 0x4
-    field public static final int LIBLOAD_FAILED_TO_FIND_NAMESPACE = 10; // 0xa
-    field public static final int LIBLOAD_FAILED_TO_LOAD_LIBRARY = 6; // 0x6
-    field public static final int LIBLOAD_FAILED_TO_OPEN_RELRO_FILE = 5; // 0x5
-    field public static final int LIBLOAD_FAILED_WAITING_FOR_RELRO = 3; // 0x3
-    field public static final int LIBLOAD_FAILED_WAITING_FOR_WEBVIEW_REASON_UNKNOWN = 8; // 0x8
-    field public static final int LIBLOAD_SUCCESS = 0; // 0x0
-    field public static final int LIBLOAD_WRONG_PACKAGE_NAME = 1; // 0x1
-  }
-
-  public interface WebViewFactoryProvider {
-    method public android.webkit.WebViewProvider createWebView(android.webkit.WebView, android.webkit.WebView.PrivateAccess);
-    method public android.webkit.CookieManager getCookieManager();
-    method public android.webkit.GeolocationPermissions getGeolocationPermissions();
-    method @NonNull public default android.webkit.PacProcessor getPacProcessor();
-    method public android.webkit.ServiceWorkerController getServiceWorkerController();
-    method public android.webkit.WebViewFactoryProvider.Statics getStatics();
-    method @Deprecated public android.webkit.TokenBindingService getTokenBindingService();
-    method public android.webkit.TracingController getTracingController();
-    method public android.webkit.WebIconDatabase getWebIconDatabase();
-    method public android.webkit.WebStorage getWebStorage();
-    method public ClassLoader getWebViewClassLoader();
-    method public android.webkit.WebViewDatabase getWebViewDatabase(android.content.Context);
-  }
-
-  public static interface WebViewFactoryProvider.Statics {
-    method public void clearClientCertPreferences(Runnable);
-    method public void enableSlowWholeDocumentDraw();
-    method public String findAddress(String);
-    method public void freeMemoryForTests();
-    method public String getDefaultUserAgent(android.content.Context);
-    method @NonNull public android.net.Uri getSafeBrowsingPrivacyPolicyUrl();
-    method public void initSafeBrowsing(android.content.Context, android.webkit.ValueCallback<java.lang.Boolean>);
-    method public android.net.Uri[] parseFileChooserResult(int, android.content.Intent);
-    method public void setSafeBrowsingWhitelist(java.util.List<java.lang.String>, android.webkit.ValueCallback<java.lang.Boolean>);
-    method public void setWebContentsDebuggingEnabled(boolean);
-  }
-
-  public interface WebViewProvider {
-    method public void addJavascriptInterface(Object, String);
-    method public boolean canGoBack();
-    method public boolean canGoBackOrForward(int);
-    method public boolean canGoForward();
-    method public boolean canZoomIn();
-    method public boolean canZoomOut();
-    method public android.graphics.Picture capturePicture();
-    method public void clearCache(boolean);
-    method public void clearFormData();
-    method public void clearHistory();
-    method public void clearMatches();
-    method public void clearSslPreferences();
-    method public void clearView();
-    method public android.webkit.WebBackForwardList copyBackForwardList();
-    method public android.print.PrintDocumentAdapter createPrintDocumentAdapter(String);
-    method public android.webkit.WebMessagePort[] createWebMessageChannel();
-    method public void destroy();
-    method public void documentHasImages(android.os.Message);
-    method public void dumpViewHierarchyWithProperties(java.io.BufferedWriter, int);
-    method public void evaluateJavaScript(String, android.webkit.ValueCallback<java.lang.String>);
-    method public int findAll(String);
-    method public void findAllAsync(String);
-    method public android.view.View findHierarchyView(String, int);
-    method public void findNext(boolean);
-    method public void flingScroll(int, int);
-    method public void freeMemory();
-    method public android.net.http.SslCertificate getCertificate();
-    method public int getContentHeight();
-    method public int getContentWidth();
-    method public android.graphics.Bitmap getFavicon();
-    method public android.webkit.WebView.HitTestResult getHitTestResult();
-    method public String[] getHttpAuthUsernamePassword(String, String);
-    method public String getOriginalUrl();
-    method public int getProgress();
-    method public boolean getRendererPriorityWaivedWhenNotVisible();
-    method public int getRendererRequestedPriority();
-    method public float getScale();
-    method public android.webkit.WebViewProvider.ScrollDelegate getScrollDelegate();
-    method public android.webkit.WebSettings getSettings();
-    method @NonNull public default android.view.textclassifier.TextClassifier getTextClassifier();
-    method public String getTitle();
-    method public String getTouchIconUrl();
-    method public String getUrl();
-    method public android.webkit.WebViewProvider.ViewDelegate getViewDelegate();
-    method public int getVisibleTitleHeight();
-    method public android.webkit.WebChromeClient getWebChromeClient();
-    method public android.webkit.WebViewClient getWebViewClient();
-    method @Nullable public android.webkit.WebViewRenderProcess getWebViewRenderProcess();
-    method @Nullable public android.webkit.WebViewRenderProcessClient getWebViewRenderProcessClient();
-    method public android.view.View getZoomControls();
-    method public void goBack();
-    method public void goBackOrForward(int);
-    method public void goForward();
-    method public void init(java.util.Map<java.lang.String,java.lang.Object>, boolean);
-    method public void insertVisualStateCallback(long, android.webkit.WebView.VisualStateCallback);
-    method public void invokeZoomPicker();
-    method public boolean isPaused();
-    method public boolean isPrivateBrowsingEnabled();
-    method public void loadData(String, String, String);
-    method public void loadDataWithBaseURL(String, String, String, String, String);
-    method public void loadUrl(String, java.util.Map<java.lang.String,java.lang.String>);
-    method public void loadUrl(String);
-    method public void notifyFindDialogDismissed();
-    method public void onPause();
-    method public void onResume();
-    method public boolean overlayHorizontalScrollbar();
-    method public boolean overlayVerticalScrollbar();
-    method public boolean pageDown(boolean);
-    method public boolean pageUp(boolean);
-    method public void pauseTimers();
-    method public void postMessageToMainFrame(android.webkit.WebMessage, android.net.Uri);
-    method public void postUrl(String, byte[]);
-    method public void reload();
-    method public void removeJavascriptInterface(String);
-    method public void requestFocusNodeHref(android.os.Message);
-    method public void requestImageRef(android.os.Message);
-    method public boolean restorePicture(android.os.Bundle, java.io.File);
-    method public android.webkit.WebBackForwardList restoreState(android.os.Bundle);
-    method public void resumeTimers();
-    method public void savePassword(String, String, String);
-    method public boolean savePicture(android.os.Bundle, java.io.File);
-    method public android.webkit.WebBackForwardList saveState(android.os.Bundle);
-    method public void saveWebArchive(String);
-    method public void saveWebArchive(String, boolean, android.webkit.ValueCallback<java.lang.String>);
-    method public void setCertificate(android.net.http.SslCertificate);
-    method public void setDownloadListener(android.webkit.DownloadListener);
-    method public void setFindListener(android.webkit.WebView.FindListener);
-    method public void setHorizontalScrollbarOverlay(boolean);
-    method public void setHttpAuthUsernamePassword(String, String, String, String);
-    method public void setInitialScale(int);
-    method public void setMapTrackballToArrowKeys(boolean);
-    method public void setNetworkAvailable(boolean);
-    method public void setPictureListener(android.webkit.WebView.PictureListener);
-    method public void setRendererPriorityPolicy(int, boolean);
-    method public default void setTextClassifier(@Nullable android.view.textclassifier.TextClassifier);
-    method public void setVerticalScrollbarOverlay(boolean);
-    method public void setWebChromeClient(android.webkit.WebChromeClient);
-    method public void setWebViewClient(android.webkit.WebViewClient);
-    method public void setWebViewRenderProcessClient(@Nullable java.util.concurrent.Executor, @Nullable android.webkit.WebViewRenderProcessClient);
-    method public boolean showFindDialog(String, boolean);
-    method public void stopLoading();
-    method public boolean zoomBy(float);
-    method public boolean zoomIn();
-    method public boolean zoomOut();
-  }
-
-  public static interface WebViewProvider.ScrollDelegate {
-    method public int computeHorizontalScrollOffset();
-    method public int computeHorizontalScrollRange();
-    method public void computeScroll();
-    method public int computeVerticalScrollExtent();
-    method public int computeVerticalScrollOffset();
-    method public int computeVerticalScrollRange();
-  }
-
-  public static interface WebViewProvider.ViewDelegate {
-    method public default void autofill(android.util.SparseArray<android.view.autofill.AutofillValue>);
-    method public boolean dispatchKeyEvent(android.view.KeyEvent);
-    method public android.view.View findFocus(android.view.View);
-    method public android.view.accessibility.AccessibilityNodeProvider getAccessibilityNodeProvider();
-    method public android.os.Handler getHandler(android.os.Handler);
-    method public default boolean isVisibleToUserForAutofill(int);
-    method public void onActivityResult(int, int, android.content.Intent);
-    method public void onAttachedToWindow();
-    method public default boolean onCheckIsTextEditor();
-    method public void onConfigurationChanged(android.content.res.Configuration);
-    method public android.view.inputmethod.InputConnection onCreateInputConnection(android.view.inputmethod.EditorInfo);
-    method public void onDetachedFromWindow();
-    method public boolean onDragEvent(android.view.DragEvent);
-    method public void onDraw(android.graphics.Canvas);
-    method public void onDrawVerticalScrollBar(android.graphics.Canvas, android.graphics.drawable.Drawable, int, int, int, int);
-    method public void onFinishTemporaryDetach();
-    method public void onFocusChanged(boolean, int, android.graphics.Rect);
-    method public boolean onGenericMotionEvent(android.view.MotionEvent);
-    method public boolean onHoverEvent(android.view.MotionEvent);
-    method public void onInitializeAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    method public void onInitializeAccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo);
-    method public boolean onKeyDown(int, android.view.KeyEvent);
-    method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
-    method public boolean onKeyUp(int, android.view.KeyEvent);
-    method public void onMeasure(int, int);
-    method public default void onMovedToDisplay(int, android.content.res.Configuration);
-    method public void onOverScrolled(int, int, boolean, boolean);
-    method public default void onProvideAutofillVirtualStructure(android.view.ViewStructure, int);
-    method public default void onProvideContentCaptureStructure(@NonNull android.view.ViewStructure, int);
-    method public void onProvideVirtualStructure(android.view.ViewStructure);
-    method public void onScrollChanged(int, int, int, int);
-    method public void onSizeChanged(int, int, int, int);
-    method public void onStartTemporaryDetach();
-    method public boolean onTouchEvent(android.view.MotionEvent);
-    method public boolean onTrackballEvent(android.view.MotionEvent);
-    method public void onVisibilityChanged(android.view.View, int);
-    method public void onWindowFocusChanged(boolean);
-    method public void onWindowVisibilityChanged(int);
-    method public boolean performAccessibilityAction(int, android.os.Bundle);
-    method public boolean performLongClick();
-    method public void preDispatchDraw(android.graphics.Canvas);
-    method public boolean requestChildRectangleOnScreen(android.view.View, android.graphics.Rect, boolean);
-    method public boolean requestFocus(int, android.graphics.Rect);
-    method public void setBackgroundColor(int);
-    method public boolean setFrame(int, int, int, int);
-    method public void setLayerType(int, android.graphics.Paint);
-    method public void setLayoutParams(android.view.ViewGroup.LayoutParams);
-    method public void setOverScrollMode(int);
-    method public void setScrollBarStyle(int);
-    method public boolean shouldDelayChildPressedState();
-  }
-
-  public final class WebViewProviderInfo implements android.os.Parcelable {
-    ctor public WebViewProviderInfo(String, String, boolean, boolean, String[]);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.webkit.WebViewProviderInfo> CREATOR;
-    field public final boolean availableByDefault;
-    field public final String description;
-    field public final boolean isFallback;
-    field public final String packageName;
-    field public final android.content.pm.Signature[] signatures;
-  }
-
-  public final class WebViewUpdateService {
-    method public static android.webkit.WebViewProviderInfo[] getAllWebViewPackages();
-    method public static String getCurrentWebViewPackageName();
-    method public static android.webkit.WebViewProviderInfo[] getValidWebViewPackages();
-  }
-
-}
-
diff --git a/non-updatable-api/system-removed.txt b/non-updatable-api/system-removed.txt
deleted file mode 100644
index ab4c6d1..0000000
--- a/non-updatable-api/system-removed.txt
+++ /dev/null
@@ -1,188 +0,0 @@
-// Signature format: 2.0
-package android {
-
-  public static final class Manifest.permission {
-    field public static final String MANAGE_DEVICE_ADMINS = "android.permission.MANAGE_DEVICE_ADMINS";
-  }
-
-}
-
-package android.app {
-
-  public class AppOpsManager {
-    method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public java.util.List<android.app.AppOpsManager.PackageOps> getOpsForPackage(int, @NonNull String, @Nullable int[]);
-    method @Deprecated public void setNotedAppOpsCollector(@Nullable android.app.AppOpsManager.AppOpsCollector);
-  }
-
-  @Deprecated public abstract static class AppOpsManager.AppOpsCollector extends android.app.AppOpsManager.OnOpNotedCallback {
-    ctor public AppOpsManager.AppOpsCollector();
-    method @NonNull public java.util.concurrent.Executor getAsyncNotedExecutor();
-  }
-
-  public class Notification implements android.os.Parcelable {
-    method public static Class<? extends android.app.Notification.Style> getNotificationStyleClass(String);
-  }
-
-  public static final class Notification.TvExtender implements android.app.Notification.Extender {
-    method @Deprecated public String getChannel();
-  }
-
-}
-
-package android.app.backup {
-
-  public class RestoreSession {
-    method @Deprecated public int restoreSome(long, android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor, String[]);
-    method @Deprecated public int restoreSome(long, android.app.backup.RestoreObserver, String[]);
-  }
-
-}
-
-package android.app.prediction {
-
-  public static final class AppTarget.Builder {
-    ctor @Deprecated public AppTarget.Builder(@NonNull android.app.prediction.AppTargetId);
-    method @Deprecated @NonNull public android.app.prediction.AppTarget.Builder setTarget(@NonNull String, @NonNull android.os.UserHandle);
-    method @Deprecated @NonNull public android.app.prediction.AppTarget.Builder setTarget(@NonNull android.content.pm.ShortcutInfo);
-  }
-
-}
-
-package android.content {
-
-  public class Intent implements java.lang.Cloneable android.os.Parcelable {
-    field @Deprecated public static final String ACTION_DEVICE_INITIALIZATION_WIZARD = "android.intent.action.DEVICE_INITIALIZATION_WIZARD";
-    field @Deprecated public static final String ACTION_MASTER_CLEAR = "android.intent.action.MASTER_CLEAR";
-    field @Deprecated public static final String ACTION_SERVICE_STATE = "android.intent.action.SERVICE_STATE";
-    field @Deprecated public static final String EXTRA_CDMA_DEFAULT_ROAMING_INDICATOR = "cdmaDefaultRoamingIndicator";
-    field @Deprecated public static final String EXTRA_CDMA_ROAMING_INDICATOR = "cdmaRoamingIndicator";
-    field @Deprecated public static final String EXTRA_CSS_INDICATOR = "cssIndicator";
-    field @Deprecated public static final String EXTRA_DATA_OPERATOR_ALPHA_LONG = "data-operator-alpha-long";
-    field @Deprecated public static final String EXTRA_DATA_OPERATOR_ALPHA_SHORT = "data-operator-alpha-short";
-    field @Deprecated public static final String EXTRA_DATA_OPERATOR_NUMERIC = "data-operator-numeric";
-    field @Deprecated public static final String EXTRA_DATA_RADIO_TECH = "dataRadioTechnology";
-    field @Deprecated public static final String EXTRA_DATA_REG_STATE = "dataRegState";
-    field @Deprecated public static final String EXTRA_DATA_ROAMING_TYPE = "dataRoamingType";
-    field @Deprecated public static final String EXTRA_EMERGENCY_ONLY = "emergencyOnly";
-    field @Deprecated public static final String EXTRA_IS_DATA_ROAMING_FROM_REGISTRATION = "isDataRoamingFromRegistration";
-    field @Deprecated public static final String EXTRA_IS_USING_CARRIER_AGGREGATION = "isUsingCarrierAggregation";
-    field @Deprecated public static final String EXTRA_LTE_EARFCN_RSRP_BOOST = "LteEarfcnRsrpBoost";
-    field @Deprecated public static final String EXTRA_MANUAL = "manual";
-    field @Deprecated public static final String EXTRA_NETWORK_ID = "networkId";
-    field @Deprecated public static final String EXTRA_OPERATOR_ALPHA_LONG = "operator-alpha-long";
-    field @Deprecated public static final String EXTRA_OPERATOR_ALPHA_SHORT = "operator-alpha-short";
-    field @Deprecated public static final String EXTRA_OPERATOR_NUMERIC = "operator-numeric";
-    field @Deprecated public static final String EXTRA_SYSTEM_ID = "systemId";
-    field @Deprecated public static final String EXTRA_VOICE_RADIO_TECH = "radioTechnology";
-    field @Deprecated public static final String EXTRA_VOICE_REG_STATE = "voiceRegState";
-    field @Deprecated public static final String EXTRA_VOICE_ROAMING_TYPE = "voiceRoamingType";
-  }
-
-}
-
-package android.content.pm {
-
-  public class PackageItemInfo {
-    field @Deprecated public static final int SAFE_LABEL_FLAG_FIRST_LINE = 4; // 0x4
-    field @Deprecated public static final int SAFE_LABEL_FLAG_SINGLE_LINE = 2; // 0x2
-    field @Deprecated public static final int SAFE_LABEL_FLAG_TRIM = 1; // 0x1
-  }
-
-}
-
-package android.hardware.hdmi {
-
-  public final class HdmiControlManager {
-    method @Deprecated public java.util.List<android.hardware.hdmi.HdmiDeviceInfo> getConnectedDevicesList();
-    method @Deprecated public boolean isRemoteDeviceConnected(@NonNull android.hardware.hdmi.HdmiDeviceInfo);
-    method @Deprecated public void powerOffRemoteDevice(@NonNull android.hardware.hdmi.HdmiDeviceInfo);
-    method @Deprecated public void powerOnRemoteDevice(android.hardware.hdmi.HdmiDeviceInfo);
-    method @Deprecated public void requestRemoteDeviceToBecomeActiveSource(@NonNull android.hardware.hdmi.HdmiDeviceInfo);
-  }
-
-}
-
-package android.location {
-
-  public class LocationManager {
-    method @Deprecated public boolean addGpsMeasurementListener(android.location.GpsMeasurementsEvent.Listener);
-    method @Deprecated public boolean addGpsNavigationMessageListener(android.location.GpsNavigationMessageEvent.Listener);
-    method @Deprecated public void removeGpsMeasurementListener(android.location.GpsMeasurementsEvent.Listener);
-    method @Deprecated public void removeGpsNavigationMessageListener(android.location.GpsNavigationMessageEvent.Listener);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void setLocationControllerExtraPackage(String);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void setLocationControllerExtraPackageEnabled(boolean);
-  }
-
-}
-
-package android.media.tv {
-
-  public final class TvInputManager {
-    method @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public android.media.tv.TvInputManager.Hardware acquireTvInputHardware(int, android.media.tv.TvInputManager.HardwareCallback, android.media.tv.TvInputInfo);
-  }
-
-  public static final class TvInputManager.Hardware {
-    method public boolean dispatchKeyEventToHdmi(android.view.KeyEvent);
-  }
-
-}
-
-package android.os {
-
-  public class Build {
-    field public static final boolean PERMISSIONS_REVIEW_REQUIRED = true;
-  }
-
-}
-
-package android.service.notification {
-
-  public abstract class NotificationListenerService extends android.app.Service {
-    method public android.service.notification.StatusBarNotification[] getActiveNotifications(int);
-    method public android.service.notification.StatusBarNotification[] getActiveNotifications(String[], int);
-    method public void registerAsSystemService(android.content.Context, android.content.ComponentName, int) throws android.os.RemoteException;
-    method public final void setOnNotificationPostedTrim(int);
-    method public final void snoozeNotification(String, String);
-    method public void unregisterAsSystemService() throws android.os.RemoteException;
-    field public static final int TRIM_FULL = 0; // 0x0
-    field public static final int TRIM_LIGHT = 1; // 0x1
-  }
-
-  public static class NotificationListenerService.Ranking {
-    method public java.util.List<java.lang.String> getAdditionalPeople();
-    method public java.util.List<android.service.notification.SnoozeCriterion> getSnoozeCriteria();
-  }
-
-}
-
-package android.telecom {
-
-  public class TelecomManager {
-    method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.WRITE_SECURE_SETTINGS}) public boolean setDefaultDialer(@Nullable String);
-  }
-
-}
-
-package android.telephony {
-
-  public final class PreciseDataConnectionState implements android.os.Parcelable {
-    method @Deprecated @Nullable public android.net.LinkProperties getDataConnectionLinkProperties();
-    method @Deprecated public int getDataConnectionNetworkType();
-  }
-
-  public class TelephonyManager {
-    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void answerRingingCall();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.CALL_PHONE) public boolean endCall();
-    method @Deprecated public void silenceRinger();
-  }
-
-}
-
-package android.telephony.data {
-
-  public final class DataCallResponse implements android.os.Parcelable {
-    ctor public DataCallResponse(int, int, int, int, int, @Nullable String, @Nullable java.util.List<android.net.LinkAddress>, @Nullable java.util.List<java.net.InetAddress>, @Nullable java.util.List<java.net.InetAddress>, @Nullable java.util.List<java.net.InetAddress>, int);
-  }
-
-}
-
diff --git a/opengl/java/android/opengl/EGL14.java b/opengl/java/android/opengl/EGL14.java
index 90b46fd..80e64e0 100644
--- a/opengl/java/android/opengl/EGL14.java
+++ b/opengl/java/android/opengl/EGL14.java
@@ -20,6 +20,7 @@
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.graphics.SurfaceTexture;
+import android.os.Build;
 import android.view.Surface;
 import android.view.SurfaceHolder;
 import android.view.SurfaceView;
@@ -164,7 +165,7 @@
     /**
      * {@hide}
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static native EGLDisplay eglGetDisplay(
         long display_id
     );
diff --git a/opengl/java/javax/microedition/khronos/egl/EGL10.java b/opengl/java/javax/microedition/khronos/egl/EGL10.java
index ea571c7..abdbd11 100644
--- a/opengl/java/javax/microedition/khronos/egl/EGL10.java
+++ b/opengl/java/javax/microedition/khronos/egl/EGL10.java
@@ -17,6 +17,7 @@
 package javax.microedition.khronos.egl;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 public interface EGL10 extends EGL {
     int EGL_SUCCESS                     = 0x3000;
@@ -116,7 +117,7 @@
     String      eglQueryString(EGLDisplay display, int name);
     boolean     eglQuerySurface(EGLDisplay display, EGLSurface surface, int attribute, int[] value);
     /** @hide **/
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     boolean     eglReleaseThread();
     boolean     eglSwapBuffers(EGLDisplay display, EGLSurface surface);
     boolean     eglTerminate(EGLDisplay display);
diff --git a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java
index fe2be1d..59d6ed6 100644
--- a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java
+++ b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java
@@ -43,6 +43,7 @@
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
 import com.android.systemui.power.EnhancedEstimates;
 import com.android.systemui.power.EnhancedEstimatesImpl;
+import com.android.systemui.qs.dagger.QSModule;
 import com.android.systemui.qs.tileimpl.QSFactoryImpl;
 import com.android.systemui.recents.Recents;
 import com.android.systemui.recents.RecentsImplementation;
@@ -74,7 +75,7 @@
 import dagger.Module;
 import dagger.Provides;
 
-@Module(includes = {DividerModule.class})
+@Module(includes = {DividerModule.class, QSModule.class})
 public abstract class CarSystemUIModule {
 
     @Singleton
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/userswitcher/UserGridRecyclerView.java b/packages/CarSystemUI/src/com/android/systemui/car/userswitcher/UserGridRecyclerView.java
index 2ff6670..a526e69 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/userswitcher/UserGridRecyclerView.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/userswitcher/UserGridRecyclerView.java
@@ -478,6 +478,9 @@
                 if (user != null) {
                     mCarUserManagerHelper.switchToUser(user);
                 }
+                if (mAddUserView != null) {
+                    mAddUserView.setEnabled(true);
+                }
             }
         }
 
diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java
index 7aa997e..a62c287 100644
--- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java
+++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java
@@ -259,18 +259,19 @@
     private void onDeviceFound(@Nullable DeviceFilterPair device) {
         if (device == null) return;
 
-        if (mDevicesFound.contains(device)) {
-            return;
-        }
-
-        if (DEBUG) Log.i(LOG_TAG, "Found device " + device);
-
         Handler.getMain().sendMessage(obtainMessage(
                 DeviceDiscoveryService::onDeviceFoundMainThread, this, device));
     }
 
     @MainThread
     void onDeviceFoundMainThread(@NonNull DeviceFilterPair device) {
+        if (mDevicesFound.contains(device)) {
+            Log.i(LOG_TAG, "Skipping device " + device + " - already among found devices");
+            return;
+        }
+
+        Log.i(LOG_TAG, "Found device " + device);
+
         if (mDevicesFound.isEmpty()) {
             onReadyToShowUI();
         }
@@ -432,10 +433,10 @@
 
         @Override
         public String toString() {
-            return "DeviceFilterPair{" +
-                    "device=" + device +
-                    ", filter=" + filter +
-                    '}';
+            return "DeviceFilterPair{"
+                    + "device=" + device + " " + getDisplayName()
+                    + ", filter=" + filter
+                    + '}';
         }
     }
 
diff --git a/packages/DynamicSystemInstallationService/res/values-nl/strings.xml b/packages/DynamicSystemInstallationService/res/values-nl/strings.xml
index 47eeb83..2b9fa41 100644
--- a/packages/DynamicSystemInstallationService/res/values-nl/strings.xml
+++ b/packages/DynamicSystemInstallationService/res/values-nl/strings.xml
@@ -2,7 +2,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="keyguard_description" msgid="8582605799129954556">"Geef je wachtwoord op en ga door naar \'Dynamische systeemupdates\'"</string>
-    <string name="notification_install_completed" msgid="6252047868415172643">"Dynamisch systeem is gereed. Start je apparaat opnieuw op om het te gebruiken."</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dynamisch systeem is klaar. Start je apparaat opnieuw op om het te gebruiken."</string>
     <string name="notification_install_inprogress" msgid="7383334330065065017">"Installatie wordt uitgevoerd"</string>
     <string name="notification_install_failed" msgid="4066039210317521404">"Installatie mislukt"</string>
     <string name="notification_image_validation_failed" msgid="2720357826403917016">"Valideren van afbeelding mislukt. Installatie afbreken."</string>
diff --git a/packages/DynamicSystemInstallationService/res/values/strings.xml b/packages/DynamicSystemInstallationService/res/values/strings.xml
index 719fc73..bfeef0a 100644
--- a/packages/DynamicSystemInstallationService/res/values/strings.xml
+++ b/packages/DynamicSystemInstallationService/res/values/strings.xml
@@ -37,6 +37,9 @@
     <string name="toast_dynsystem_discarded">Discarded dynamic system</string>
     <!-- Toast when we fail to launch into Dynamic System [CHAR LIMIT=128] -->
     <string name="toast_failed_to_reboot_to_dynsystem">Can\u2019t restart or load dynamic system</string>
+    <!-- Toast when we fail to disable Dynamic System [CHAR LIMIT=128] -->
+    <string name="toast_failed_to_disable_dynsystem">Failed to disable dynamic system</string>
+
 
     <!-- URL of Dynamic System Key Revocation List [DO NOT TRANSLATE] -->
     <string name="key_revocation_list_url" translatable="false">https://dl.google.com/developers/android/gsi/gsi-keyblacklist.json</string>
diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java
index 9ff8684..ac27580 100644
--- a/packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java
+++ b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java
@@ -321,6 +321,9 @@
 
         if (!isDynamicSystemInstalled() && (getStatus() != STATUS_READY)) {
             Log.e(TAG, "Trying to discard AOT while there is no complete installation");
+            // Stop foreground state and dismiss stale notification.
+            stopForeground(STOP_FOREGROUND_REMOVE);
+            resetTaskAndStop();
             return;
         }
 
@@ -372,8 +375,17 @@
             return;
         }
 
-        // Per current design, we don't have disable() API. AOT is disabled on next reboot.
-        // TODO: Use better status query when b/125079548 is done.
+        if (!mDynSystem.setEnable(/* enable = */ false, /* oneShot = */ false)) {
+            Log.e(TAG, "Failed to disable DynamicSystem.");
+
+            // Dismiss status bar and show a toast.
+            sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
+            Toast.makeText(this,
+                    getString(R.string.toast_failed_to_disable_dynsystem),
+                    Toast.LENGTH_LONG).show();
+            return;
+        }
+
         PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
 
         if (powerManager != null) {
@@ -419,7 +431,7 @@
     private PendingIntent createPendingIntent(String action) {
         Intent intent = new Intent(this, DynamicSystemInstallationService.class);
         intent.setAction(action);
-        return PendingIntent.getService(this, 0, intent, 0);
+        return PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_IMMUTABLE);
     }
 
     private Notification buildNotification(int status, int cause) {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_turkish_f.kcm b/packages/InputDevices/res/raw/keyboard_layout_turkish_f.kcm
new file mode 100644
index 0000000..5b96da0
--- /dev/null
+++ b/packages/InputDevices/res/raw/keyboard_layout_turkish_f.kcm
@@ -0,0 +1,366 @@
+# Copyright (C) 2020 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#
+# Turkish F keyboard layout.
+#
+
+type OVERLAY
+
+map key 12 SLASH
+map key 13 MINUS
+map key 43 COMMA
+map key 51 EQUALS
+map key 52 BACKSLASH
+map key 53 PERIOD
+map key 86 PLUS
+
+### ROW 1
+
+key GRAVE {
+    label:                              '+'
+    base:                               '+'
+    shift:                              '*'
+    ralt:                               '\u00ac'
+}
+
+key 1 {
+    label:                              '1'
+    base:                               '1'
+    shift:                              '!'
+    ralt:                               '\u00b9'
+}
+
+key 2 {
+    label:                              '2'
+    base:                               '2'
+    shift:                              '"'
+    ralt:                               '\u00b2'
+}
+
+key 3 {
+    label:                              '3'
+    base:                               '3'
+    shift:                              '^'
+    ralt:                               '#'
+}
+
+key 4 {
+    label:                              '4'
+    base:                               '4'
+    shift:                              '$'
+    ralt:                               '\u00bc'
+}
+
+key 5 {
+    label:                              '5'
+    base:                               '5'
+    shift:                              '%'
+    ralt:                               '\u00bd'
+}
+
+key 6 {
+    label:                              '6'
+    base:                               '6'
+    shift:                              '&'
+    ralt:                               '\u00be'
+}
+
+key 7 {
+    label:                              '7'
+    base:                               '7'
+    shift:                              '\''
+    ralt:                               '{'
+}
+
+key 8 {
+    label:                              '8'
+    base:                               '8'
+    shift:                              '('
+    ralt:                               '['
+}
+
+key 9 {
+    label:                              '9'
+    base:                               '9'
+    shift:                              ')'
+    ralt:                               ']'
+}
+
+key 0 {
+    label:                              '0'
+    base:                               '0'
+    shift:                              '='
+    ralt:                               '}'
+}
+
+key SLASH {
+    label:                              '/'
+    base:                               '/'
+    shift:                              '?'
+    ralt:                               '\\'
+}
+
+key MINUS {
+    label:                              '-'
+    base:                               '-'
+    shift:                              '_'
+    ralt:                               '|'
+}
+
+### ROW 2
+
+key Q {
+    label:                              'F'
+    base:                               'f'
+    shift, capslock:                    'F'
+    ralt:                               '@'
+}
+
+key W {
+    label:                              'G'
+    base:                               'g'
+    shift, capslock:                    'G'
+}
+
+key E {
+    label:                              '\u011f'
+    base:                               '\u011f'
+    shift, capslock:                    '\u011e'
+}
+
+key R {
+    label:                              '\u0131'
+    base:                               '\u0131'
+    shift, capslock:                    'I'
+    ralt:                               '\u00b6'
+    ralt+shift, ralt+capslock:          '\u00ae'
+}
+
+key T {
+    label:                              'O'
+    base:                               'o'
+    shift, capslock:                    'O'
+}
+
+key Y {
+    label:                              'D'
+    base:                               'd'
+    shift, capslock:                    'D'
+    ralt:                               '\u00a5'
+}
+
+key U {
+    label:                              'R'
+    base:                               'r'
+    shift, capslock:                    'R'
+}
+
+key I {
+    label:                              'N'
+    base:                               'n'
+    shift, capslock:                    'N'
+}
+
+key O {
+    label:                              'H'
+    base:                               'h'
+    shift, capslock:                    'H'
+    ralt:                               '\u00f8'
+    ralt+shift, ralt+capslock:          '\u00d8'
+}
+
+key P {
+    label:                              'P'
+    base:                               'p'
+    shift, capslock:                    'P'
+    ralt:                               '\u00a3'
+}
+
+key LEFT_BRACKET {
+    label:                              'Q'
+    base:                               'q'
+    shift, capslock:                    'Q'
+    ralt:                               '"'
+}
+
+key RIGHT_BRACKET {
+    label:                              'W'
+    base:                               'w'
+    shift, capslock:                    'W'
+    ralt:                               '~'
+}
+
+### ROW 3
+
+key A {
+    label:                              '\u0075'
+    base:                               '\u0075'
+    shift, capslock:                    '\u0055'
+    ralt:                               '\u00e6'
+    ralt+shift, ralt+capslock:          '\u00c6'
+}
+
+key S {
+    label:                              'i'
+    base:                               'i'
+    shift, capslock:                    '\u0130'
+    ralt:                               '\u00df'
+    ralt+shift, ralt+capslock:          '\u00a7'
+}
+
+key D {
+    label:                              'E'
+    base:                               'e'
+    shift, capslock:                    'E'
+    ralt:                               '\u20ac'
+}
+
+key F {
+    label:                              'A'
+    base:                               'a'
+    shift, capslock:                    'A'
+    ralt:                               '\u00aa'
+}
+
+key G {
+    label:                              '\u00fc'
+    base:                               '\u00fc'
+    shift, capslock:                    '\u00dc'
+}
+
+key H {
+    label:                              'T'
+    base:                               't'
+    shift, capslock:                    'T'
+    ralt:                               '\u20ba'
+}
+
+key J {
+    label:                              'K'
+    base:                               'k'
+    shift, capslock:                    'K'
+}
+
+key K {
+    label:                              'M'
+    base:                               'm'
+    shift, capslock:                    'M'
+}
+
+key L {
+    label:                              'L'
+    base:                               'l'
+    shift, capslock:                    'L'
+}
+
+key SEMICOLON {
+    label:                              'Y'
+    base:                               'y'
+    shift, capslock:                    'Y'
+    ralt:                               '\u00b4'
+}
+
+key APOSTROPHE {
+    label:                              '\u015f'
+    base:                               '\u015f'
+    shift, capslock:                    '\u015e'
+}
+
+key COMMA {
+    label:                              'X'
+    base:                               'x'
+    shift:                              'X'
+    ralt:                               '\u0060'
+}
+
+### ROW 4
+
+key PLUS {
+    label:                              '<'
+    base:                               '<'
+    shift:                              '>'
+    ralt:                               '|'
+    ralt+shift, ralt+capslock:          '\u00a6'
+}
+
+key Z {
+    label:                              'J'
+    base:                               'j'
+    shift, capslock:                    'J'
+    ralt:                               '\u00ab'
+    ralt+shift, ralt+capslock:          '<'
+}
+
+key X {
+    label:                              '\u00f6'
+    base:                               '\u00f6'
+    shift, capslock:                    '\u00d6'
+    ralt:                               '\u00bb'
+    ralt+shift, ralt+capslock:          '>'
+}
+
+key C {
+    label:                              'V'
+    base:                               'v'
+    shift, capslock:                    'V'
+    ralt:                               '\u00a2'
+    ralt+shift, ralt+capslock:          '\u00a9'
+}
+
+key V {
+    label:                              'C'
+    base:                               'c'
+    shift, capslock:                    'C'
+}
+
+key B {
+    label:                              '\u00e7'
+    base:                               '\u00e7'
+    shift, capslock:                    '\u00c7'
+}
+
+key N {
+    label:                              'Z'
+    base:                               'z'
+    shift, capslock:                    'Z'
+}
+
+key M {
+    label:                              'S'
+    base:                               's'
+    shift, capslock:                    'S'
+    ralt:                               '\u00b5'
+    ralt+shift, ralt+capslock:          '\u00ba'
+}
+
+key EQUALS {
+    label:                              'B'
+    base:                               'b'
+    shift, capslock:                    'B'
+    ralt:                               '\u00d7'
+}
+
+key BACKSLASH {
+    label:                              '.'
+    base:                               '.'
+    shift, capslock:                    ':'
+    ralt:                               '\u00f7'
+}
+
+key PERIOD {
+    label:                              ','
+    base:                               ','
+    shift:                              ';'
+}
diff --git a/packages/InputDevices/res/values-af/strings.xml b/packages/InputDevices/res/values-af/strings.xml
index 79b45ff..eb89ee5 100644
--- a/packages/InputDevices/res/values-af/strings.xml
+++ b/packages/InputDevices/res/values-af/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Fins"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroaties"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tsjeggies"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Tsjeggiese QWERTY-styl"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estnies"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hongaars"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Yslands"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Aserbeidjaans"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Pools"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belarussies"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongools"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgies"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-am/strings.xml b/packages/InputDevices/res/values-am/strings.xml
index ab1c592..2970bfe 100644
--- a/packages/InputDevices/res/values-am/strings.xml
+++ b/packages/InputDevices/res/values-am/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ፊኒሽ"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ክሮሽያ"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"ቼክ"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"የቼክኛ QWERTY ቅጥ"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"ኤስቶኒያ"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ሀንጋሪ"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"አይስላንድ"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"አዘርባይጃንኛ"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"ፖላንድኛ"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"ቤላሩስኛ"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"ሞንጎሊያኛ"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ጂዮርጂያኛ"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ar/strings.xml b/packages/InputDevices/res/values-ar/strings.xml
index 79689f1..7f7e51c 100644
--- a/packages/InputDevices/res/values-ar/strings.xml
+++ b/packages/InputDevices/res/values-ar/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"الفنلندية"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"الكرواتية"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"التشيكية"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"‏لوحة المفاتيح التشيكية بنمط QWERTY"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"الإستونية"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"المجرية"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"الأيسلندية"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"الأذربيجانية"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"البولندية"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"البيلاروسية"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"المنغولية"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"الجورجية"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-as/strings.xml b/packages/InputDevices/res/values-as/strings.xml
index 6e889f7..48c6302 100644
--- a/packages/InputDevices/res/values-as/strings.xml
+++ b/packages/InputDevices/res/values-as/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ফিনিশ্ব"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ক্ৰ\'ৱেশ্বিয়ান"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"চ্চেক"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Czech QWERTY কীব’ৰ্ড"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"ইষ্ট\'নিয়া"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"হাংগেৰিয়ান"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"আইচলেণ্ডিক"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"আজাৰবাইজানী"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"পোলিশ্ব"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"বেলাৰুছিয়ান"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolian"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgian"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-az/strings.xml b/packages/InputDevices/res/values-az/strings.xml
index 6a55342..d85e988 100644
--- a/packages/InputDevices/res/values-az/strings.xml
+++ b/packages/InputDevices/res/values-az/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Fin"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Xorvat"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Çex"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Çex QWERTY üslubu"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Eston"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Macar"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"İslandiyalı"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azəri"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polyak"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belarus dili"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Monqol"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Gürcü"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-b+sr+Latn/strings.xml b/packages/InputDevices/res/values-b+sr+Latn/strings.xml
index 361c33f..226e8ee4 100644
--- a/packages/InputDevices/res/values-b+sr+Latn/strings.xml
+++ b/packages/InputDevices/res/values-b+sr+Latn/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"finska"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"hrvatska"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"češka"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Stil češke QWERTY tastature"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"estonska"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"mađarska"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"islandska"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"azerbejdžanska"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"poljski"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"beloruski"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"mongolska"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"gruzijska"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-be/strings.xml b/packages/InputDevices/res/values-be/strings.xml
index cfc1025..d180eec 100644
--- a/packages/InputDevices/res/values-be/strings.xml
+++ b/packages/InputDevices/res/values-be/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Фінская"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Харвацкая"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Чэшская"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Чэшская раскладка клавіятуры QWERTY"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Эстонская"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Венгерская"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Ісландская"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Азербайджанская"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Польская"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Беларуская"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Мангольская"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Грузінская"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-bg/strings.xml b/packages/InputDevices/res/values-bg/strings.xml
index e55ad82..a1edb21 100644
--- a/packages/InputDevices/res/values-bg/strings.xml
+++ b/packages/InputDevices/res/values-bg/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"финландски"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"хърватски"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"чешки"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Чешки стил за QWERTY"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"естонски"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"унгарски"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"исландски"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"азербайджански"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Полски"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"беларуски"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"монголски"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"грузински"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-bn/strings.xml b/packages/InputDevices/res/values-bn/strings.xml
index 9f65c28..10029f4 100644
--- a/packages/InputDevices/res/values-bn/strings.xml
+++ b/packages/InputDevices/res/values-bn/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ফিনিশ"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ক্রোয়েশিয়"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"চেক"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"চেক QWERTY স্টাইল"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"এস্তোনীয়"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"হাঙ্গেরিয়"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"আইসল্যান্ডিক"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"আজারবাইজানি"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"পোলিশ"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"বেলারুশীয়"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"মঙ্গোলিয়ান"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"জর্জিয়ান"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-bs/strings.xml b/packages/InputDevices/res/values-bs/strings.xml
index b60a52b..436a3b0 100644
--- a/packages/InputDevices/res/values-bs/strings.xml
+++ b/packages/InputDevices/res/values-bs/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"finski"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"hrvatski"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"češki"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Češka QWERTY tastatura"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"estonski"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"mađarski"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"islandski"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"azerbejdžanski"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"poljski"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"bjeloruska"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"mongolski"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"gruzijski"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ca/strings.xml b/packages/InputDevices/res/values-ca/strings.xml
index 5718abd..1f089e1 100644
--- a/packages/InputDevices/res/values-ca/strings.xml
+++ b/packages/InputDevices/res/values-ca/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finès"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croat"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Txec"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Estil QWERTY txec"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonià"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hongarès"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandès"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Àzeri"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polonès"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Bielorús"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongol"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgià"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-cs/strings.xml b/packages/InputDevices/res/values-cs/strings.xml
index 786366e..b36861a 100644
--- a/packages/InputDevices/res/values-cs/strings.xml
+++ b/packages/InputDevices/res/values-cs/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"finské"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"chorvatské"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"české"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Český styl QWERTY"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"estonské"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"maďarské"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"islandské"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"ázerbájdžánština"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"polština"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"běloruština"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"mongolština"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"gruzínština"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-da/strings.xml b/packages/InputDevices/res/values-da/strings.xml
index 15cd185..7e446fd 100644
--- a/packages/InputDevices/res/values-da/strings.xml
+++ b/packages/InputDevices/res/values-da/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finsk"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroatisk"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tjekkisk"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Tjekkisk – QWERTY-layout"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estisk"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ungarsk"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandsk"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Aserbajdsjansk"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polsk"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Hviderussisk"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolsk"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgisk"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-de/strings.xml b/packages/InputDevices/res/values-de/strings.xml
index 5463a53..c8a7ab1 100644
--- a/packages/InputDevices/res/values-de/strings.xml
+++ b/packages/InputDevices/res/values-de/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnisch"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroatisch"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tschechisch"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"QWERTY-Tastatur, tschechisch"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estnisch"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ungarisch"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Isländisch"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Aserbaidschanisch"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polnisch"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Weißrussisch"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolisch"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgisch"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-el/strings.xml b/packages/InputDevices/res/values-el/strings.xml
index c2d5166..ff7cd02 100644
--- a/packages/InputDevices/res/values-el/strings.xml
+++ b/packages/InputDevices/res/values-el/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Φινλανδικά"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Κροατικά"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Τσεχικά"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Τσεχικό πληκτρολόγιο στιλ QWERTY"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Εσθονικά"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ουγγρικά"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Ισλανδικά"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Αζερμπαϊτζανικά"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Πολωνικά"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Λευκορωσικά"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Μογγολικά"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Γεωργιανά"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-en-rAU/strings.xml b/packages/InputDevices/res/values-en-rAU/strings.xml
index ee3f04e..02a8e6d 100644
--- a/packages/InputDevices/res/values-en-rAU/strings.xml
+++ b/packages/InputDevices/res/values-en-rAU/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnish"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croatian"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Czech"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Czech QWERTY style"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonian"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hungarian"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Icelandic"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaijani"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polish"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belarusian"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolian"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgian"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-en-rCA/strings.xml b/packages/InputDevices/res/values-en-rCA/strings.xml
index ee3f04e..02a8e6d 100644
--- a/packages/InputDevices/res/values-en-rCA/strings.xml
+++ b/packages/InputDevices/res/values-en-rCA/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnish"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croatian"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Czech"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Czech QWERTY style"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonian"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hungarian"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Icelandic"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaijani"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polish"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belarusian"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolian"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgian"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-en-rGB/strings.xml b/packages/InputDevices/res/values-en-rGB/strings.xml
index ee3f04e..02a8e6d 100644
--- a/packages/InputDevices/res/values-en-rGB/strings.xml
+++ b/packages/InputDevices/res/values-en-rGB/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnish"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croatian"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Czech"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Czech QWERTY style"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonian"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hungarian"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Icelandic"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaijani"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polish"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belarusian"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolian"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgian"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-en-rIN/strings.xml b/packages/InputDevices/res/values-en-rIN/strings.xml
index ee3f04e..02a8e6d 100644
--- a/packages/InputDevices/res/values-en-rIN/strings.xml
+++ b/packages/InputDevices/res/values-en-rIN/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnish"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croatian"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Czech"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Czech QWERTY style"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonian"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hungarian"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Icelandic"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaijani"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polish"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belarusian"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolian"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgian"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-en-rXC/strings.xml b/packages/InputDevices/res/values-en-rXC/strings.xml
index a0efb25..a8d342f 100644
--- a/packages/InputDevices/res/values-en-rXC/strings.xml
+++ b/packages/InputDevices/res/values-en-rXC/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‎‎‎‎‏‎‎‎‎‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‏‏‎‎‏‎‏‎‏‏‎‎‏‎‎‎‎‏‏‏‎‏‏‎‏‎‎‏‎‏‎‎Finnish‎‏‎‎‏‎"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‏‎‎‏‏‎‏‎‏‏‏‏‎‎‏‎‎‏‏‎‎‏‎‎‏‏‏‎‎‏‎‎‎‏‏‎‎‎‏‎‏‏‎‎‎‏‏‏‏‏‎‎‏‎‎Croatian‎‏‎‎‏‎"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‎‏‎‏‏‏‎‎‏‏‎‎‎‎‏‏‎‎‎‎‎‎‎‎‎‏‏‎‏‎‎‎‏‏‏‎‏‏‎‎‏‎‏‎‎‏‏‎‎‏‏‏‎‏‏‏‏‎Czech‎‏‎‎‏‎"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‎‎‎‏‏‏‎‏‏‏‎‎‎‎‏‎‎‏‏‏‏‎‏‎‎‎‏‎‎‏‎‏‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‏‎‏‏‎‏‎Czech QWERTY style‎‏‎‎‏‎"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‏‎‏‎‎‎‎‎‎‎‏‏‏‏‎‎‏‎‎‎‏‏‏‎‎‎‎‎‏‏‎‏‏‎‏‏‏‎‏‎‎‎‎‎‏‏‏‏‏‎‏‎‎Estonian‎‏‎‎‏‎"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‏‎‏‎‎‏‎‏‏‎‎‏‎‏‎‏‏‎‏‏‏‏‏‎‏‎‎‏‎‎‏‏‎‎‎‎‏‏‎‏‎‏‏‏‎‎‏‎‏‎‎‏‎‏‎Hungarian‎‏‎‎‏‎"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‎‎‏‎‏‏‏‎‏‎‏‏‏‎‎‏‏‏‎‏‏‏‏‎‏‏‎‎‎‎‏‎‏‎‏‎‏‎‎Icelandic‎‏‎‎‏‎"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‎‎‎‎‏‏‏‎‏‎‎‏‎‎‎‎‎‎‏‏‏‏‎‏‏‏‎‎‎‏‎‏‎‏‏‎‏‏‎‎‎‏‎‏‎‎‎‎‏‏‎‏‏‏‏‎Azerbaijani‎‏‎‎‏‎"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‏‏‎‎‏‎‎‎‎‏‎‏‎‏‏‏‎‏‏‏‎‏‎‎‏‎‏‎‎‎‎‏‏‎‏‎‎‏‏‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‎‏‎Polish‎‏‎‎‏‎"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‏‏‏‏‎‏‎‎‏‎‎‎‎‎‎‏‏‎‎‎‏‎‏‎‏‎‏‎‎‏‎‎‏‏‏‎‎‎‏‎‎‏‎‎‎‎‎‏‏‎‎‏‎‎‎Belarusian‎‏‎‎‏‎"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‎‏‏‏‏‎‏‏‏‎‏‎‎‎‎‎‎‏‏‏‎‏‎‎‏‏‏‏‎‎‏‎‎‏‎‎‏‎‎‎‎‏‏‎‎‎‏‏‏‎‎‏‎‎Mongolian‎‏‎‎‏‎"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‏‏‏‎‏‏‏‎‎‏‎‏‎‎‏‎‎‏‎‎‎‏‏‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‎‏‏‏‏‏‏‎‎Georgian‎‏‎‎‏‎"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-es-rUS/strings.xml b/packages/InputDevices/res/values-es-rUS/strings.xml
index b252955..9090cb7 100644
--- a/packages/InputDevices/res/values-es-rUS/strings.xml
+++ b/packages/InputDevices/res/values-es-rUS/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandés"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croata"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Checo"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"QWERTY estilo checo"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonio"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Húngaro"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandés"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerí"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polaco"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Bielorruso"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongol"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgiano"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-es/strings.xml b/packages/InputDevices/res/values-es/strings.xml
index bba2062..66ea655 100644
--- a/packages/InputDevices/res/values-es/strings.xml
+++ b/packages/InputDevices/res/values-es/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandés"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croata"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Checo"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Estilo QWERTY checo"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonio"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Húngaro"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandés"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerí"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polaco"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Bielorruso"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongol"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgiano"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-et/strings.xml b/packages/InputDevices/res/values-et/strings.xml
index 140f1af..9674a0d 100644
--- a/packages/InputDevices/res/values-et/strings.xml
+++ b/packages/InputDevices/res/values-et/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Soome"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Horvaatia"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tšehhi"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Tšehhi QWERTY-stiil"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Eesti"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ungari"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandi"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"aserbaidžaani"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Poola"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"valgevene"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"mongoli"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"gruusia"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-eu/strings.xml b/packages/InputDevices/res/values-eu/strings.xml
index 5896209..357b618 100644
--- a/packages/InputDevices/res/values-eu/strings.xml
+++ b/packages/InputDevices/res/values-eu/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandiarra"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroaziarra"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Txekiarra"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"QWERTY estilo txekiarra"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estoniarra"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hungariarra"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandiarra"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaijandarra"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Poloniarra"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Bielorrusiera"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongoliera"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgiera"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-fa/strings.xml b/packages/InputDevices/res/values-fa/strings.xml
index cc86e04..5395d27 100644
--- a/packages/InputDevices/res/values-fa/strings.xml
+++ b/packages/InputDevices/res/values-fa/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"فنلاندی"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"کرواسی"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"چک"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"‏سبک QWERTY چک"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"استونیایی"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"مجارستانی"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"ایسلندی"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"آذربایجانی"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"لهستانی"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"بلاروسی"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"مغولی"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"گرجستانی"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-fi/strings.xml b/packages/InputDevices/res/values-fi/strings.xml
index 8e2ef45..4488a13 100644
--- a/packages/InputDevices/res/values-fi/strings.xml
+++ b/packages/InputDevices/res/values-fi/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"suomi"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"kroaatti"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"tšekki"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"tšekki (QWERTY-tyyli)"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"viro"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"unkari"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"islanti"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"azeri"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"puola"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"valkovenäjä"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"mongoli"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"georgia"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-fr-rCA/strings.xml b/packages/InputDevices/res/values-fr-rCA/strings.xml
index 199fefc..e714e83 100644
--- a/packages/InputDevices/res/values-fr-rCA/strings.xml
+++ b/packages/InputDevices/res/values-fr-rCA/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnois"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croate"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tchèque"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Clavier QWERTY tchèque"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonien"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hongrois"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandais"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaïdjanais"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polonais"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Biélorusse"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongol"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Géorgien"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-fr/strings.xml b/packages/InputDevices/res/values-fr/strings.xml
index c5f5316..0a022f1 100644
--- a/packages/InputDevices/res/values-fr/strings.xml
+++ b/packages/InputDevices/res/values-fr/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnois"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croate"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tchèque"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Clavier QWERTY tchèque"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonien"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hongrois"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandais"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azéri"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polonais"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Biélorusse"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongol"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Géorgien"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-gl/strings.xml b/packages/InputDevices/res/values-gl/strings.xml
index c841ec5..0c86f81 100644
--- a/packages/InputDevices/res/values-gl/strings.xml
+++ b/packages/InputDevices/res/values-gl/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finés"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croata"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Checo"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Estilo QWERTY checo"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estoniano"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Húngaro"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandés"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Acerbaixano"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polaco"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belaruso"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongol"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Xeorxiano"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-gu/strings.xml b/packages/InputDevices/res/values-gu/strings.xml
index df6f960..8648389 100644
--- a/packages/InputDevices/res/values-gu/strings.xml
+++ b/packages/InputDevices/res/values-gu/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ફિનિશ"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ક્રોએશિયન"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"ચેક"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"ચેક QWERTY શૈલી"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"એસ્ટોનિયન"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"હંગેરિયન"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"આઇસલેન્ડિક"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"અઝરબૈજાની"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"પોલિશ"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"બેલારુશિયન"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"મોંગોલિયન"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"જ્યોર્જિઅન"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-hi/strings.xml b/packages/InputDevices/res/values-hi/strings.xml
index 3076f37..6e674ed 100644
--- a/packages/InputDevices/res/values-hi/strings.xml
+++ b/packages/InputDevices/res/values-hi/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"फ़िनिश"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"क्रोएशियन"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"चेक"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"चेक QWERTY स्टाइल"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"एस्टोनियाई"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"हंगेरियाई"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"आइसलैंडिक"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"अज़रबैजानी"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"पोलिश"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"बेलारूसी"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"मंगोलियन"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"जॉर्जियन कीबोर्ड का लेआउट"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-hr/strings.xml b/packages/InputDevices/res/values-hr/strings.xml
index 2ade42d..cd2dcc1 100644
--- a/packages/InputDevices/res/values-hr/strings.xml
+++ b/packages/InputDevices/res/values-hr/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"finska"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"hrvatska"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"češka"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Češka QWERTY tipkovnica"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"estonska"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"mađarska"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"islandska"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"azerbajdžanski"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"poljski"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"bjeloruski"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolski"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Gruzijska"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-hu/strings.xml b/packages/InputDevices/res/values-hu/strings.xml
index 219bdb3..1c7a89a 100644
--- a/packages/InputDevices/res/values-hu/strings.xml
+++ b/packages/InputDevices/res/values-hu/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"finn"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"horvát"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"cseh"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"QWERTY kiosztás (cseh)"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"észt"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"magyar"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"izlandi"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"azeri"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"lengyel"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"belarusz"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"mongol"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"grúz"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-hy/strings.xml b/packages/InputDevices/res/values-hy/strings.xml
index add8e60..fff9fbc 100644
--- a/packages/InputDevices/res/values-hy/strings.xml
+++ b/packages/InputDevices/res/values-hy/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Ֆիններեն"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Խորվաթերեն"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Չեխերեն"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"QWERTY – չեխական ոճ"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Էստոներեն"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Հունգարերեն"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Իսլանդերեն"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"ադրբեջաներեն"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"լեհերեն"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"բելառուսերեն"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Մոնղոլերեն"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"վրացերեն"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-in/strings.xml b/packages/InputDevices/res/values-in/strings.xml
index 3a5b44d..04a6dfa 100644
--- a/packages/InputDevices/res/values-in/strings.xml
+++ b/packages/InputDevices/res/values-in/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandia"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroasia"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Ceko"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Gaya QWERTY Ceko"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonia"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hungaria"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandia"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaijan"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polandia"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belarusia"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolia"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgia"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-is/strings.xml b/packages/InputDevices/res/values-is/strings.xml
index 4d2c073..a60332a 100644
--- a/packages/InputDevices/res/values-is/strings.xml
+++ b/packages/InputDevices/res/values-is/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnskt"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Króatískt"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tékkneskt"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Tékkneskt QWERTY-útlit"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Eistneskt"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ungverskt"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Íslenskt"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"aserska"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Pólska"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"hvítrússneska"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"mongólska"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"georgíska"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-it/strings.xml b/packages/InputDevices/res/values-it/strings.xml
index 8397a15..ac137e4 100644
--- a/packages/InputDevices/res/values-it/strings.xml
+++ b/packages/InputDevices/res/values-it/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandese"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croato"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Ceco"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Stile QWERTY ceco"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estone"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ungherese"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandese"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azero"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polacco"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Bielorusso"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolo"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgiano"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-iw/strings.xml b/packages/InputDevices/res/values-iw/strings.xml
index 56b170f..544dde2 100644
--- a/packages/InputDevices/res/values-iw/strings.xml
+++ b/packages/InputDevices/res/values-iw/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"פינית"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"קרואטית"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"צ\'כית"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"‏סגנון מקלדת QWERTY בצ\'כית"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"אסטונית"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"הונגרית"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"איסלנדית"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"אזרית"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"פולנית"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"בלארוסית"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"מונגולית"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"גיאורגית"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ja/strings.xml b/packages/InputDevices/res/values-ja/strings.xml
index 190d8f2..717cbb9 100644
--- a/packages/InputDevices/res/values-ja/strings.xml
+++ b/packages/InputDevices/res/values-ja/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"フィンランド語"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"クロアチア語"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"チェコ語"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"QWERTY スタイル(チェコ語)"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"エストニア語"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ハンガリー語"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"アイスランド語"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"アゼルバイジャン語"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"ポーランド語"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"ベラルーシ語"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"モンゴル語"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ジョージア語"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ka/strings.xml b/packages/InputDevices/res/values-ka/strings.xml
index a613575..ee42b35 100644
--- a/packages/InputDevices/res/values-ka/strings.xml
+++ b/packages/InputDevices/res/values-ka/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ფინური"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ხორვატიული"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"ჩეხური"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"ჩეხური QWERTY სტილი"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"ესტონური"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"უნგრული"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"ისლანდიური"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"აზერბაიჯანული"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"პოლონური"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"ბელორუსული"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"მონღოლური"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ქართული"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-kk/strings.xml b/packages/InputDevices/res/values-kk/strings.xml
index fa0c37e..6ebb403 100644
--- a/packages/InputDevices/res/values-kk/strings.xml
+++ b/packages/InputDevices/res/values-kk/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Фин"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Хорват"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Чех"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Чех (QWERTY)"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Эстон"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Мадияр"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Исланд"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"әзiрбайжан"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Поляк"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Белорус"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Моңғол"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Грузин"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-km/strings.xml b/packages/InputDevices/res/values-km/strings.xml
index c877465..a2c3262 100644
--- a/packages/InputDevices/res/values-km/strings.xml
+++ b/packages/InputDevices/res/values-km/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ហ្វាំងឡង់"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ក្រូអាត"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"ឆេក"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"រចនាប័ទ្ម Czech QWERTY"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"អេស្តូនី"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ហុងគ្រី"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"អ៊ីស្លង់"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"អាហ្សឺបៃហ្សង់"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"ប៉ូឡូញ"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"បេឡារុស"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"មុងហ្គោលី"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ហ្សក​ហ្ស៊ី"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-kn/strings.xml b/packages/InputDevices/res/values-kn/strings.xml
index 365b77c..6cdee0b 100644
--- a/packages/InputDevices/res/values-kn/strings.xml
+++ b/packages/InputDevices/res/values-kn/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ಫಿನ್ನಿಷ್"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ಕ್ರೊಯೇಶಿಯನ್"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"ಜೆಕ್"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"ಝೆಕ್ QWERTY ಶೈಲಿ"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"ಎಸ್ಟೋನಿಯನ್"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ಹಂಗೇರಿಯನ್"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"ಐಸ್‌ಲ್ಯಾಂಡಿಕ್"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"ಅಜೆರ್ಬೈಜಾನಿ"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"ಪೋಲಿಶ್"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"ಬೆಲರೂಸಿಯನ್"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"ಮಂಗೋಲಿಯನ್"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ಜಾರ್ಜಿಯನ್"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ko/strings.xml b/packages/InputDevices/res/values-ko/strings.xml
index 4260897..8cd839d 100644
--- a/packages/InputDevices/res/values-ko/strings.xml
+++ b/packages/InputDevices/res/values-ko/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"핀란드어"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"크로아티아어"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"체코어"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"체코어 QWERTY 키보드"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"에스토니아어"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"헝가리어"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"아이슬란드어"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"아제르바이잔어"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"폴란드어"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"벨라루스어"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"몽골어"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"조지아어"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ky/strings.xml b/packages/InputDevices/res/values-ky/strings.xml
index e898148..60a997a 100644
--- a/packages/InputDevices/res/values-ky/strings.xml
+++ b/packages/InputDevices/res/values-ky/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Фин"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Хорват"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Чех"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Чехиялык QWERTY стили"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Эстон"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Венгр"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Исландия"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Азербайжанча"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Полякча"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Беларусча"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Монголчо"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Грузинче"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-lo/strings.xml b/packages/InputDevices/res/values-lo/strings.xml
index d3e1e0a..26e7ad4 100644
--- a/packages/InputDevices/res/values-lo/strings.xml
+++ b/packages/InputDevices/res/values-lo/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ຟິນນິຊ"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ໂຄຣເອທຽນ"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"ເຊກ"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"ຮູບແບບ QWERTY ເຊກ"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"ເອສໂຕນຽນ"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ຮັງກາຣຽນ"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"ໄອສແລນດິກ"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"ອາເຊີໄບຈານີ"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"ໂພລິຊ"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"ເບລາຣັສຊຽນ"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"ມອງໂກລຽນ"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ຈໍຈຽນ"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-lt/strings.xml b/packages/InputDevices/res/values-lt/strings.xml
index 18ed8a4..d0b855d 100644
--- a/packages/InputDevices/res/values-lt/strings.xml
+++ b/packages/InputDevices/res/values-lt/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Suomių k."</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroatų k."</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Čekų k."</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Čekų QWERTY stilius"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estų k."</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Vengrų k."</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandų k."</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaidžaniečių"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Lenkų"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Baltarusių k."</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolų"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Gruzinų"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-lv/strings.xml b/packages/InputDevices/res/values-lv/strings.xml
index d7995c8..beff9b57 100644
--- a/packages/InputDevices/res/values-lv/strings.xml
+++ b/packages/InputDevices/res/values-lv/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Somu"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Horvātu"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Čehu"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Čehu (QWERTY)"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Igauņu"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ungāru"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Īslandiešu"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaidžāņu"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Poļu valoda"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Baltkrievu"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongoļu"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Gruzīnu"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-mk/strings.xml b/packages/InputDevices/res/values-mk/strings.xml
index 508859e..ce5e8f2 100644
--- a/packages/InputDevices/res/values-mk/strings.xml
+++ b/packages/InputDevices/res/values-mk/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Фински"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Хрватски"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Чешки"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Чешка QWERTY-тастатура"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Естонски"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Унгарски"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Исландски"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"азербејџански"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"полски"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"белоруски"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"монголски"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"грузиски"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ml/strings.xml b/packages/InputDevices/res/values-ml/strings.xml
index f7617ac..aafab0c 100644
--- a/packages/InputDevices/res/values-ml/strings.xml
+++ b/packages/InputDevices/res/values-ml/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ഫിന്നിഷ്"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ക്രൊയേഷ്യൻ"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"ചെക്ക്"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"ചെക്ക് QWERTY ശെെലി"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"എസ്റ്റോണിയൻ"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ഹംഗേറിയൻ"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"ഐസ്‌ലാന്‍ഡിക്"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"അസര്‍ബൈജാനി"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"പോളിഷ്"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"ബെലാറുഷ്യൻ"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"മംഗോളിയൻ"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ജോര്‍ജ്ജിയൻ"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-mn/strings.xml b/packages/InputDevices/res/values-mn/strings.xml
index aafc126..e9ff619 100644
--- a/packages/InputDevices/res/values-mn/strings.xml
+++ b/packages/InputDevices/res/values-mn/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Финлянд"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Хорват"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Чех"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Чех хэлний QWERTY загвар"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Эстон"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Унгар"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Исланд"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Азербайжан"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Польш"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Беларусь хэл"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Монгол"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Гүрж"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-mr/strings.xml b/packages/InputDevices/res/values-mr/strings.xml
index 65d4572..711366a 100644
--- a/packages/InputDevices/res/values-mr/strings.xml
+++ b/packages/InputDevices/res/values-mr/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"फिन्निश"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"क्रोएशियन"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"झेक"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Czech QWERTY शैली"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"एस्टोनियन"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"हंगेरियन"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"आइसलँडिक"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"अझरबैजानी"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"पोलिश"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"बेलारुशियन"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"मंगोलियन"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"जॉर्जियन"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ms/strings.xml b/packages/InputDevices/res/values-ms/strings.xml
index 9090379..86241b3 100644
--- a/packages/InputDevices/res/values-ms/strings.xml
+++ b/packages/InputDevices/res/values-ms/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Bahasa Finland"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Bahasa Croatia"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Bahasa Czech"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Gaya QWERTY Czech"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Bahasa Estonia"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Bahasa Hungary"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Bahasa Iceland"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Bahasa Azerbaijan"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Bahasa Poland"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Bahasa Belarus"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Bahasa Mongolia"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Bahasa Georgia"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-my/strings.xml b/packages/InputDevices/res/values-my/strings.xml
index 889ac1a..57748db 100644
--- a/packages/InputDevices/res/values-my/strings.xml
+++ b/packages/InputDevices/res/values-my/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ဖင်လန်"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ခရိုအေးရှန်း"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"ချက်"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"\'ချက် QWERTY\' ပုံစံ"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"အက်စ်စတိုးနီးယန်း"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ဟန်ဂေရီယန်း"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"အိုက်စလန်"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"အဇာဘိုင်ဂျန်"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"ပိုလန်"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"ဘီလာရုဇ်"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"မွန်ဂိုလီးယား"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ဂျော်ဂျီယာ"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-nb/strings.xml b/packages/InputDevices/res/values-nb/strings.xml
index b130bde..6059b4c 100644
--- a/packages/InputDevices/res/values-nb/strings.xml
+++ b/packages/InputDevices/res/values-nb/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finsk"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroatisk"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tsjekkisk"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Tsjekkisk QWERTY-stil"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estisk"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ungarsk"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandsk"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Aserbajdsjansk"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polsk"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Hviterussisk"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolsk"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgisk"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ne/strings.xml b/packages/InputDevices/res/values-ne/strings.xml
index 96905ec..1b58fe8 100644
--- a/packages/InputDevices/res/values-ne/strings.xml
+++ b/packages/InputDevices/res/values-ne/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"फिनिश"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"क्रोशीयाली"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"चेक"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"चेक भाषामा QWERTY शैली"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"एस्तोनीयाली"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"हंगेरियन"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"आइसल्याण्डिक"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"अजरबैजानी"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"पोलिस"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"बेलारुसियाली"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"मङ्गोलियाली"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"जर्जियाली"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-nl/strings.xml b/packages/InputDevices/res/values-nl/strings.xml
index b8e1588..750ce14 100644
--- a/packages/InputDevices/res/values-nl/strings.xml
+++ b/packages/InputDevices/res/values-nl/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Fins"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroatisch"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tsjechisch"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Tsjechisch - QWERTY-toetsenbord"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estlands"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hongaars"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"IJslands"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbeidzjaans"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Pools"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Wit-Russisch"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongools"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgisch"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-or/strings.xml b/packages/InputDevices/res/values-or/strings.xml
index fcb9cfa..2378dce 100644
--- a/packages/InputDevices/res/values-or/strings.xml
+++ b/packages/InputDevices/res/values-or/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ଫିନ୍ନିଶ୍‍"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"କ୍ରୋଆଶିଆନ୍"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"ଚେକ୍"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"ଚେକ୍ QWERTY ଷ୍ଟାଇଲ୍"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"ଇଷ୍ଟୋନିଆନ୍"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ହଙ୍ଗେରିଆନ୍"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"ଆଇସଲାଣ୍ଡିକ୍"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"ଆଜେର୍‌ବୈଜାନି"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"ପଲିଶ୍"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"ବେଲାରୁସିଆନ୍"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"ମଙ୍ଗୋଲିଆନ୍"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ଜର୍ଜିଆନ୍"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-pa/strings.xml b/packages/InputDevices/res/values-pa/strings.xml
index 891682f..fa46d8f 100644
--- a/packages/InputDevices/res/values-pa/strings.xml
+++ b/packages/InputDevices/res/values-pa/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ਫਿਨਿਸ਼"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ਕਰੋਆਟੀਆਈ"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"ਚੈਕ"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"ਚੈੱਕ QWERTY ਸਟਾਈਲ"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"ਇਸਟੋਨੀਅਨ"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ਹੰਗੇਰੀਅਨ"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"ਆਈਸਲੈਂਡੀ"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"ਅਜ਼ੇਰਬੈਜਾਨੀ"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"ਪੋਲਿਸ਼"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"ਬੇਲਾਰੂਸੀ"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"ਮੰਗੋਲੀਆਈ"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ਜਾਰਜੀਆਈ"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-pl/strings.xml b/packages/InputDevices/res/values-pl/strings.xml
index ef141d7..c375119 100644
--- a/packages/InputDevices/res/values-pl/strings.xml
+++ b/packages/InputDevices/res/values-pl/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Fiński"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Chorwacki"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Czeski"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Styl czeskiej klawiatury QWERTY"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estoński"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Węgierski"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandzki"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerski"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polski"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Białoruski"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolski"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Gruziński"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-pt-rBR/strings.xml b/packages/InputDevices/res/values-pt-rBR/strings.xml
index d5932a1..d6687c8 100644
--- a/packages/InputDevices/res/values-pt-rBR/strings.xml
+++ b/packages/InputDevices/res/values-pt-rBR/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandês"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croata"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tcheco"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Estilo QWERTY tcheco"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estoniano"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Húngaro"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandês"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaijano"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polonês"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Bielorrusso"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongol"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgiano"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-pt-rPT/strings.xml b/packages/InputDevices/res/values-pt-rPT/strings.xml
index 2d3c562..4f8a432 100644
--- a/packages/InputDevices/res/values-pt-rPT/strings.xml
+++ b/packages/InputDevices/res/values-pt-rPT/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandês"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croata"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Checo"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Estilo QWERTY checo"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estónio"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Húngaro"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandês"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azeri"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polaco"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Bielorrusso"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongol"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgiano"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-pt/strings.xml b/packages/InputDevices/res/values-pt/strings.xml
index d5932a1..d6687c8 100644
--- a/packages/InputDevices/res/values-pt/strings.xml
+++ b/packages/InputDevices/res/values-pt/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandês"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croata"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tcheco"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Estilo QWERTY tcheco"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estoniano"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Húngaro"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandês"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaijano"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polonês"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Bielorrusso"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongol"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgiano"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ro/strings.xml b/packages/InputDevices/res/values-ro/strings.xml
index 00cda6b..1b38bdd 100644
--- a/packages/InputDevices/res/values-ro/strings.xml
+++ b/packages/InputDevices/res/values-ro/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finlandeză"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croată"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Cehă"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Stil QWERTY cehă"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estoniană"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Maghiară"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandeză"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azeră"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Poloneză"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belarusă"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolă"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgiană"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ru/strings.xml b/packages/InputDevices/res/values-ru/strings.xml
index 91828a2..cd37762 100644
--- a/packages/InputDevices/res/values-ru/strings.xml
+++ b/packages/InputDevices/res/values-ru/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"финский"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"хорватский"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"чешский"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"чешский (QWERTY)"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"эстонский"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"венгерский"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"исландский"</string>
@@ -42,7 +43,9 @@
     <string name="keyboard_layout_spanish_latin" msgid="5690539836069535697">"испанский (Латинская Америка)"</string>
     <string name="keyboard_layout_latvian" msgid="4405417142306250595">"латышский"</string>
     <string name="keyboard_layout_persian" msgid="3920643161015888527">"Персидский"</string>
-    <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Азербайджанский"</string>
+    <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"азербайджанский"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"польский"</string>
-    <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Белорусский"</string>
+    <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"белорусский"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"монгольский"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"грузинский"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-si/strings.xml b/packages/InputDevices/res/values-si/strings.xml
index 5e387dc..c136616 100644
--- a/packages/InputDevices/res/values-si/strings.xml
+++ b/packages/InputDevices/res/values-si/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ෆින්ලන්ත"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"ක්‍රොඒෂියානු"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"චෙක්"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"චෙක් QWERTY විලාසය"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"එස්තෝනියානු"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"හංගේරියානු"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"අයිස්ලන්ත"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"අසර්බයිජාන"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"පෝලන්ත"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"බෙලරුසියානු"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"මොන්ගෝලියානු"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ජෝර්ජියානු"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-sk/strings.xml b/packages/InputDevices/res/values-sk/strings.xml
index 031862c..ee117ca 100644
--- a/packages/InputDevices/res/values-sk/strings.xml
+++ b/packages/InputDevices/res/values-sk/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"fínske"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"chorvátske"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"české"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Český štýl QWERTY"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"estónske"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"maďarské"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"islandské"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbajdžančina"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Poľština"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"bieloruština"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolčina"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Gruzínčina"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-sl/strings.xml b/packages/InputDevices/res/values-sl/strings.xml
index 9467acd..91ba472 100644
--- a/packages/InputDevices/res/values-sl/strings.xml
+++ b/packages/InputDevices/res/values-sl/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"finska"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"hrvaška"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"češka"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Razpored QWERTY za češčino"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"estonska"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"madžarska"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"islandska"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"azerbajdžanščina"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"poljščina"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"beloruščina"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"mongolščina"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"gruzinščina"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-sq/strings.xml b/packages/InputDevices/res/values-sq/strings.xml
index c25c94d..3128025 100644
--- a/packages/InputDevices/res/values-sq/strings.xml
+++ b/packages/InputDevices/res/values-sq/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"finlandisht"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"kroatisht"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"çekisht"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Tastiera QWERTY çekisht"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"estonisht"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"hungarisht"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"islandisht"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbajxhanisht"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polonisht"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Bjellorusisht"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolisht"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Gjeorgjisht"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-sr/strings.xml b/packages/InputDevices/res/values-sr/strings.xml
index 30f3317..ab1faed 100644
--- a/packages/InputDevices/res/values-sr/strings.xml
+++ b/packages/InputDevices/res/values-sr/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"финска"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"хрватска"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"чешка"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Стил чешке QWERTY тастатуре"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"естонска"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"мађарска"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"исландска"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"азербејџанска"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"пољски"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"белоруски"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"монголска"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"грузијска"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-sv/strings.xml b/packages/InputDevices/res/values-sv/strings.xml
index 466ba12..a4c0fca 100644
--- a/packages/InputDevices/res/values-sv/strings.xml
+++ b/packages/InputDevices/res/values-sv/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finskt"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kroatiskt"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tjeckiskt"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Tjeckiskt QWERTY"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estniskt"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Ungerskt"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Isländskt"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"azerbajdzjanska"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polska"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"vitryska"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"mongoliska"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"georgiska"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-sw/strings.xml b/packages/InputDevices/res/values-sw/strings.xml
index c010067..1e5c8d7 100644
--- a/packages/InputDevices/res/values-sw/strings.xml
+++ b/packages/InputDevices/res/values-sw/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Kifinlandi"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Kikroeshia"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Kicheki"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Muundo wa QWERTY wa Kicheki"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Kiestonia"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Kihungari"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Kiaislandi"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Kiazabaijani"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Kipolandi"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Kibelarusi"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Kimongolia"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Kijojia"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ta/strings.xml b/packages/InputDevices/res/values-ta/strings.xml
index 6c850fb..8bd7170 100644
--- a/packages/InputDevices/res/values-ta/strings.xml
+++ b/packages/InputDevices/res/values-ta/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ஃபின்னிஷ்"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"குரோஷியன்"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"செக்"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"செக் QWERTY நடை"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"எஸ்தோனியன்"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ஹங்கேரியன்"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"ஐஸ்லாண்டிக்"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"அஜர்பைஜானி"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"போலிஷ்"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"பெலரூசியன்"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"மங்கோலியன்"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ஜார்ஜியன்"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-te/strings.xml b/packages/InputDevices/res/values-te/strings.xml
index 2a38ed1..b6caafd 100644
--- a/packages/InputDevices/res/values-te/strings.xml
+++ b/packages/InputDevices/res/values-te/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ఫిన్నిష్"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"క్రొయేషియన్"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"చెక్"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"చెక్ QWERTY స్టయిల్"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"ఎస్టోనియన్"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"హంగేరియన్"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"ఐస్‌లాండిక్"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"అజర్బైజాన్"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"పోలిష్"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"బెలారష్యన్"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"మంగోలియన్"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"జార్జియన్"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-th/strings.xml b/packages/InputDevices/res/values-th/strings.xml
index 10d2543..1170f86 100644
--- a/packages/InputDevices/res/values-th/strings.xml
+++ b/packages/InputDevices/res/values-th/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"ฟินแลนด์"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"โครเอเชีย"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"เช็ก"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"แบบ Czech QWERTY"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"เอสโตเนีย"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ฮังการี"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"ไอซ์แลนดิก"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"อาเซอร์ไบจาน"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"โปแลนด์"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"เบลารุส"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"ภาษามองโกเลีย"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"ภาษาจอร์เจีย"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-tl/strings.xml b/packages/InputDevices/res/values-tl/strings.xml
index 2c197ad..97b878b 100644
--- a/packages/InputDevices/res/values-tl/strings.xml
+++ b/packages/InputDevices/res/values-tl/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Finnish"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Croatian"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Czech"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Czech QWERTY style"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonian"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Hungarian"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Icelandic"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerbaijani"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polish"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belarusian"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolian"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgian"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-tr/strings.xml b/packages/InputDevices/res/values-tr/strings.xml
index c5b6d8a..7e9b5e5 100644
--- a/packages/InputDevices/res/values-tr/strings.xml
+++ b/packages/InputDevices/res/values-tr/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Fince"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Hırvatça"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Çekçe"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Çekçe QWERTY stili"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estonca"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Macarca"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"İzlandaca"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Azerice"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Lehçe"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belarusça"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Moğolca"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Gürcüce"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-uk/strings.xml b/packages/InputDevices/res/values-uk/strings.xml
index c430dbd..db5de4c 100644
--- a/packages/InputDevices/res/values-uk/strings.xml
+++ b/packages/InputDevices/res/values-uk/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"фінська"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"хорватська"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"чеська"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Чеська (QWERTY)"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"естонська"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"угорська"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"ісландська"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"азербайджанська"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Польська"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Білоруська"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Монгольська"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Грузинська"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-ur/strings.xml b/packages/InputDevices/res/values-ur/strings.xml
index 25bb246..bf9e5ad 100644
--- a/packages/InputDevices/res/values-ur/strings.xml
+++ b/packages/InputDevices/res/values-ur/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"فنش"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"کروشیائی"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"چیک"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"‏Czech QWERTY طرز"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"اسٹونیائی"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ہنگریائی"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"آئس لینڈک"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"آزربائیجانی"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"پولش"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"بيلاروسی"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"منگؤلی"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"جارجیائی"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-uz/strings.xml b/packages/InputDevices/res/values-uz/strings.xml
index a465c47..88e9f9f 100644
--- a/packages/InputDevices/res/values-uz/strings.xml
+++ b/packages/InputDevices/res/values-uz/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Fincha"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Xorvatcha"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Chexcha"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Chex QWERTY uslubi"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Estoncha"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Vengercha"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Islandcha"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Ozarbayjon"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Polyak"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belarus"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongol"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Gruzin"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-vi/strings.xml b/packages/InputDevices/res/values-vi/strings.xml
index 0380b4c..eabaa19 100644
--- a/packages/InputDevices/res/values-vi/strings.xml
+++ b/packages/InputDevices/res/values-vi/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Tiếng Phần Lan"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Tiếng Croatia"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Tiếng Séc"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Kiểu QWERTY tiếng Séc"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Tiếng Estonia"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Tiếng Hungary"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Tiếng Ai-xơ-len"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Tiếng Azerbaijan"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Tiếng Ba Lan"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Tiếng Belarus"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Tiếng Mông Cổ"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Tiếng Georgia"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-zh-rCN/strings.xml b/packages/InputDevices/res/values-zh-rCN/strings.xml
index 26be03b..3eb4b2c 100644
--- a/packages/InputDevices/res/values-zh-rCN/strings.xml
+++ b/packages/InputDevices/res/values-zh-rCN/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"芬兰语"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"克罗地亚语"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"捷克语"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"捷克语 QWERTY 样式"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"爱沙尼亚语"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"匈牙利语"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"冰岛语"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"阿塞拜疆语"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"波兰语"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"白俄罗斯语"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"蒙古语"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"格鲁吉亚语"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-zh-rHK/strings.xml b/packages/InputDevices/res/values-zh-rHK/strings.xml
index 181bf02..37cd533 100644
--- a/packages/InputDevices/res/values-zh-rHK/strings.xml
+++ b/packages/InputDevices/res/values-zh-rHK/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"芬蘭文"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"克羅地亞文"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"捷克文"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"捷克文 QWERTY 樣式"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"愛沙尼亞文"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"匈牙利文"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"冰島文"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"亞塞拜疆文"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"波蘭文"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"白俄羅斯文"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"蒙古文"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"格魯吉亞文"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-zh-rTW/strings.xml b/packages/InputDevices/res/values-zh-rTW/strings.xml
index 23adc99..8d2de40 100644
--- a/packages/InputDevices/res/values-zh-rTW/strings.xml
+++ b/packages/InputDevices/res/values-zh-rTW/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"芬蘭文"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"克羅埃西亞文"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"捷克文"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"捷克文 QWERTY 鍵盤"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"愛沙尼亞文"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"匈牙利文"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"冰島文"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"亞塞拜然文"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"波蘭文"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"白俄羅斯文"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"蒙古文"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"喬治亞文"</string>
 </resources>
diff --git a/packages/InputDevices/res/values-zu/strings.xml b/packages/InputDevices/res/values-zu/strings.xml
index 24ac82f..ddb688a 100644
--- a/packages/InputDevices/res/values-zu/strings.xml
+++ b/packages/InputDevices/res/values-zu/strings.xml
@@ -26,6 +26,7 @@
     <string name="keyboard_layout_finnish" msgid="5585659438924315466">"Isi-Finnish"</string>
     <string name="keyboard_layout_croatian" msgid="4172229471079281138">"Isi-Croatian"</string>
     <string name="keyboard_layout_czech" msgid="1349256901452975343">"Isi-Czech"</string>
+    <string name="keyboard_layout_czech_qwerty" msgid="3331402534128515501">"Isitayela se-Czech QWERTY"</string>
     <string name="keyboard_layout_estonian" msgid="8775830985185665274">"Isi-Estonian"</string>
     <string name="keyboard_layout_hungarian" msgid="4154963661406035109">"Isi-Hungarian"</string>
     <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"Isi-Icelandic"</string>
@@ -45,4 +46,6 @@
     <string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Isi-Azebhayijani"</string>
     <string name="keyboard_layout_polish" msgid="1121588624094925325">"Isi-Polish"</string>
     <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Isi-Belarusian"</string>
+    <string name="keyboard_layout_mongolian" msgid="7678483495823936626">"isi-Mongolian"</string>
+    <string name="keyboard_layout_georgian" msgid="4596185456863747454">"Okwesi-Georgian"</string>
 </resources>
diff --git a/packages/InputDevices/res/values/strings.xml b/packages/InputDevices/res/values/strings.xml
index e95a159..c2585ff 100644
--- a/packages/InputDevices/res/values/strings.xml
+++ b/packages/InputDevices/res/values/strings.xml
@@ -102,6 +102,9 @@
     <!-- Turkish keyboard layout label. [CHAR LIMIT=35] -->
     <string name="keyboard_layout_turkish">Turkish</string>
 
+    <!-- Turkish keyboard layout label. [CHAR LIMIT=35] -->
+    <string name="keyboard_layout_turkish_f">Turkish F</string>
+
     <!-- Ukrainian keyboard layout label. [CHAR LIMIT=35] -->
     <string name="keyboard_layout_ukrainian">Ukrainian</string>
 
diff --git a/packages/InputDevices/res/xml/keyboard_layouts.xml b/packages/InputDevices/res/xml/keyboard_layouts.xml
index aa599ae..d3c421d 100644
--- a/packages/InputDevices/res/xml/keyboard_layouts.xml
+++ b/packages/InputDevices/res/xml/keyboard_layouts.xml
@@ -128,6 +128,10 @@
             android:label="@string/keyboard_layout_turkish"
             android:keyboardLayout="@raw/keyboard_layout_turkish" />
 
+    <keyboard-layout android:name="keyboard_layout_turkish_f"
+            android:label="@string/keyboard_layout_turkish_f"
+            android:keyboardLayout="@raw/keyboard_layout_turkish_f" />
+
     <keyboard-layout android:name="keyboard_layout_ukrainian"
             android:label="@string/keyboard_layout_ukrainian"
             android:keyboardLayout="@raw/keyboard_layout_ukrainian" />
diff --git a/packages/PackageInstaller/res/values-es/strings.xml b/packages/PackageInstaller/res/values-es/strings.xml
index 1049c3c..fa73873 100644
--- a/packages/PackageInstaller/res/values-es/strings.xml
+++ b/packages/PackageInstaller/res/values-es/strings.xml
@@ -56,8 +56,8 @@
     <string name="uninstall_application_text" msgid="3816830743706143980">"¿Quieres desinstalar esta aplicación?"</string>
     <string name="uninstall_application_text_all_users" msgid="575491774380227119">"¿Quieres desinstalar esta aplicación para "<b>"todos"</b>" los usuarios? La aplicación y sus datos se borrarán de "<b>"todos"</b>" los usuarios del dispositivo."</string>
     <string name="uninstall_application_text_user" msgid="498072714173920526">"¿Quieres desinstalar esta aplicación para el usuario <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
-    <string name="uninstall_update_text" msgid="863648314632448705">"¿Quieres sustituir esta aplicación con la versión de fábrica? Ten en cuenta que se borrarán todos los datos."</string>
-    <string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"¿Quieres sustituir esta aplicación con la versión de fábrica? Ten en cuenta que se borrarán todos los datos. Esto afecta a todos los usuarios del dispositivo, incluidos los que tienen perfiles de trabajo."</string>
+    <string name="uninstall_update_text" msgid="863648314632448705">"¿Quieres reemplazar esta aplicación con la versión de fábrica? Ten en cuenta que se borrarán todos los datos."</string>
+    <string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"¿Quieres reemplazar esta aplicación con la versión de fábrica? Ten en cuenta que se borrarán todos los datos. Esto afecta a todos los usuarios del dispositivo, incluidos los que tienen perfiles de trabajo."</string>
     <string name="uninstall_keep_data" msgid="7002379587465487550">"Mantener <xliff:g id="SIZE">%1$s</xliff:g> de datos de aplicaciones."</string>
     <string name="uninstalling_notification_channel" msgid="840153394325714653">"Desinstalaciones en curso"</string>
     <string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Desinstalaciones fallidas"</string>
diff --git a/packages/PackageInstaller/res/values-ne/strings.xml b/packages/PackageInstaller/res/values-ne/strings.xml
index 60934b1..495a05b 100644
--- a/packages/PackageInstaller/res/values-ne/strings.xml
+++ b/packages/PackageInstaller/res/values-ne/strings.xml
@@ -30,11 +30,11 @@
     <string name="install_failed_blocked" msgid="8512284352994752094">"यो प्याकेज स्थापना गर्ने क्रममा अवरोध गरियो।"</string>
     <string name="install_failed_conflict" msgid="3493184212162521426">"प्याकेजका रूपमा स्थापना नगरिएको एप विद्यमान प्याकेजसँग मेल खाँदैन।"</string>
     <string name="install_failed_incompatible" product="tablet" msgid="6019021440094927928">"एपका रूपमा स्थापना नगरिएको एप तपाईंको ट्याब्लेटसँग मिल्दो छैन।"</string>
-    <string name="install_failed_incompatible" product="tv" msgid="2890001324362291683">"यो एप तपाईंको TV सँग मिल्दो छैन।"</string>
+    <string name="install_failed_incompatible" product="tv" msgid="2890001324362291683">"यो एप तपाईंको टिभी सँग मिल्दो छैन।"</string>
     <string name="install_failed_incompatible" product="default" msgid="7254630419511645826">"एपका रूपमा स्थापना नगरिएको एप तपाईंको फोनसँग मिल्दो छैन।"</string>
     <string name="install_failed_invalid_apk" msgid="8581007676422623930">"प्याकेजका रूपमा स्थापना नगरिएको एप अमान्य जस्तो देखिन्छ।"</string>
     <string name="install_failed_msg" product="tablet" msgid="6298387264270562442">"तपाईंको ट्याब्लेटमा <xliff:g id="APP_NAME">%1$s</xliff:g> स्थापना गर्न सकिएन।"</string>
-    <string name="install_failed_msg" product="tv" msgid="1920009940048975221">"तपाईंको TV मा <xliff:g id="APP_NAME">%1$s</xliff:g> स्थापना गर्न सकिएन।"</string>
+    <string name="install_failed_msg" product="tv" msgid="1920009940048975221">"तपाईंको टिभी मा <xliff:g id="APP_NAME">%1$s</xliff:g> स्थापना गर्न सकिएन।"</string>
     <string name="install_failed_msg" product="default" msgid="6484461562647915707">"तपाईंको फोनमा <xliff:g id="APP_NAME">%1$s</xliff:g> स्थापना गर्न सकिएन।"</string>
     <string name="launch" msgid="3952550563999890101">"खोल्नुहोस्"</string>
     <string name="unknown_apps_admin_dlg_text" msgid="4456572224020176095">"तपाईंका प्रशासकले अज्ञात स्रोतहरूबाट प्राप्त अनुप्रयोगहरूलाई स्थापना गर्ने अनुमति दिनुहुन्न"</string>
@@ -81,11 +81,11 @@
     <string name="message_staging" msgid="8032722385658438567">"एप स्थापना गर्न तयारी गर्दै…"</string>
     <string name="app_name_unknown" msgid="6881210203354323926">"अज्ञात"</string>
     <string name="untrusted_external_source_warning" product="tablet" msgid="6539403649459942547">"तपाईंको सुरक्षाका लागि, तपाईंको ट्याब्लेटलाई यो स्रोतबाट प्राप्त हुने अज्ञात एपहरू स्थापना गर्ने अनुमति छैन।"</string>
-    <string name="untrusted_external_source_warning" product="tv" msgid="1206648674551321364">"तपाईंको सुरक्षाका लागि, तपाईंको TV लाई यस स्रोतबाट प्राप्त हुने अज्ञात एपहरू स्थापना गर्ने अनुमति छैन।"</string>
+    <string name="untrusted_external_source_warning" product="tv" msgid="1206648674551321364">"तपाईंको सुरक्षाका लागि, तपाईंको टिभी लाई यस स्रोतबाट प्राप्त हुने अज्ञात एपहरू स्थापना गर्ने अनुमति छैन।"</string>
     <string name="untrusted_external_source_warning" product="default" msgid="7279739265754475165">"तपाईंको सुरक्षाका लागि, तपाईंको फोनलाई यो स्रोतबाट प्राप्त हुने अज्ञात एपहरू स्थापना गर्ने अनुमति छैन।"</string>
     <string name="anonymous_source_warning" product="default" msgid="2784902545920822500">"तपाईंको फोन तथा व्यक्तिगत डेटा अज्ञात एपहरूबाट हुने आक्रमणको चपेटामा पर्ने बढी जोखिममा हुन्छन्। यो एप स्थापना गरेर तपाईं यसको प्रयोगबाट तपाईंको फोनमा हुन सक्ने क्षति वा डेटाको नोक्सानीका लागि स्वयं जिम्मेवार हुने कुरामा सहमत हुनुहुन्छ।"</string>
     <string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"तपाईंको ट्याब्लेट तथा व्यक्तिगत डेटा अज्ञात एपहरूबाट हुने आक्रमणको चपेटामा पर्ने बढी जोखिममा हुन्छन्। यो एप स्थापना गरेर तपाईं यसको प्रयोगबाट तपाईंको ट्याब्लेटमा हुन सक्ने क्षति वा डेटाको नोक्सानीका लागि स्वयं जिम्मेवार हुने कुरामा सहमत हुनुहुन्छ।"</string>
-    <string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"तपाईंको TV तथा व्यक्तिगत डेटा अज्ञात एपहरूबाट हुने आक्रमणको चपेटामा पर्ने बढी जोखिममा हुन्छन्। यो एप स्थापना गरेर तपाईं यसको प्रयोगबाट तपाईंको TV मा हुन सक्ने क्षति वा डेटाको नोक्सानीका लागि स्वयं जिम्मेवार हुने कुरामा सहमत हुनुहुन्छ।"</string>
+    <string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"तपाईंको टिभी तथा व्यक्तिगत डेटा अज्ञात एपहरूबाट हुने आक्रमणको चपेटामा पर्ने बढी जोखिममा हुन्छन्। यो एप स्थापना गरेर तपाईं यसको प्रयोगबाट तपाईंको टिभी मा हुन सक्ने क्षति वा डेटाको नोक्सानीका लागि स्वयं जिम्मेवार हुने कुरामा सहमत हुनुहुन्छ।"</string>
     <string name="anonymous_source_continue" msgid="4375745439457209366">"जारी राख्नुहोस्"</string>
     <string name="external_sources_settings" msgid="4046964413071713807">"सेटिङहरू"</string>
     <string name="wear_app_channel" msgid="1960809674709107850">"वेयर एपहरूको स्थापना/स्थापना रद्द गर्दै"</string>
diff --git a/packages/PackageInstaller/res/values-nl/strings.xml b/packages/PackageInstaller/res/values-nl/strings.xml
index 108c86f..d3a9589 100644
--- a/packages/PackageInstaller/res/values-nl/strings.xml
+++ b/packages/PackageInstaller/res/values-nl/strings.xml
@@ -18,7 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="7488448184431507488">"Pakket-installatie"</string>
     <string name="install" msgid="711829760615509273">"Installeren"</string>
-    <string name="done" msgid="6632441120016885253">"Gereed"</string>
+    <string name="done" msgid="6632441120016885253">"Klaar"</string>
     <string name="cancel" msgid="1018267193425558088">"Annuleren"</string>
     <string name="installing" msgid="4921993079741206516">"Installeren…"</string>
     <string name="installing_app" msgid="1165095864863849422">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> installeren…"</string>
diff --git a/packages/PackageInstaller/res/values-or/strings.xml b/packages/PackageInstaller/res/values-or/strings.xml
index b9908d2..f3b97a9 100644
--- a/packages/PackageInstaller/res/values-or/strings.xml
+++ b/packages/PackageInstaller/res/values-or/strings.xml
@@ -19,7 +19,7 @@
     <string name="app_name" msgid="7488448184431507488">"ପ୍ୟାକେଜ୍‌ ଇନଷ୍ଟଲର୍‍"</string>
     <string name="install" msgid="711829760615509273">"ଇନଷ୍ଟଲ୍‍ କରନ୍ତୁ"</string>
     <string name="done" msgid="6632441120016885253">"ହୋଇଗଲା"</string>
-    <string name="cancel" msgid="1018267193425558088">"କ୍ୟାନ୍ସଲ୍ କରନ୍ତୁ"</string>
+    <string name="cancel" msgid="1018267193425558088">"ବାତିଲ୍ କରନ୍ତୁ"</string>
     <string name="installing" msgid="4921993079741206516">"ଇନଷ୍ଟଲ୍‌ କରାଯାଉଛି…"</string>
     <string name="installing_app" msgid="1165095864863849422">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ଇନଷ୍ଟଲ୍‌ କରାଯାଉଛି…"</string>
     <string name="install_done" msgid="5987363587661783896">"ଆପ୍‍ ଇନଷ୍ଟଲ୍‌ ହୋଇଗଲା।"</string>
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/InstallInstalling.java b/packages/PackageInstaller/src/com/android/packageinstaller/InstallInstalling.java
index 4f85eea..bbc33c3 100755
--- a/packages/PackageInstaller/src/com/android/packageinstaller/InstallInstalling.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/InstallInstalling.java
@@ -339,6 +339,10 @@
             try {
                 session = getPackageManager().getPackageInstaller().openSession(mSessionId);
             } catch (IOException e) {
+                synchronized (this) {
+                    isDone = true;
+                    notifyAll();
+                }
                 return null;
             }
 
diff --git a/packages/PrintSpooler/res/values-ca/strings.xml b/packages/PrintSpooler/res/values-ca/strings.xml
index 98687b4..a346cb2 100644
--- a/packages/PrintSpooler/res/values-ca/strings.xml
+++ b/packages/PrintSpooler/res/values-ca/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4469836075319831821">"Gest. cues impr."</string>
+    <string name="app_label" msgid="4469836075319831821">"Gestor de cues d\'impressió"</string>
     <string name="more_options_button" msgid="2243228396432556771">"Més opcions"</string>
     <string name="label_destination" msgid="9132510997381599275">"Destinació"</string>
     <string name="label_copies" msgid="3634531042822968308">"Còpies"</string>
diff --git a/packages/SettingsLib/HelpUtils/res/values-en-rAU/strings.xml b/packages/SettingsLib/HelpUtils/res/values-en-rAU/strings.xml
index 759da1d0..150020c 100644
--- a/packages/SettingsLib/HelpUtils/res/values-en-rAU/strings.xml
+++ b/packages/SettingsLib/HelpUtils/res/values-en-rAU/strings.xml
@@ -17,5 +17,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="help_feedback_label" msgid="7106780063063027882">"Help &amp; feedback"</string>
+    <string name="help_feedback_label" msgid="7106780063063027882">"Help and feedback"</string>
 </resources>
diff --git a/packages/SettingsLib/HelpUtils/res/values-en-rCA/strings.xml b/packages/SettingsLib/HelpUtils/res/values-en-rCA/strings.xml
index 759da1d0..150020c 100644
--- a/packages/SettingsLib/HelpUtils/res/values-en-rCA/strings.xml
+++ b/packages/SettingsLib/HelpUtils/res/values-en-rCA/strings.xml
@@ -17,5 +17,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="help_feedback_label" msgid="7106780063063027882">"Help &amp; feedback"</string>
+    <string name="help_feedback_label" msgid="7106780063063027882">"Help and feedback"</string>
 </resources>
diff --git a/packages/SettingsLib/HelpUtils/res/values-en-rIN/strings.xml b/packages/SettingsLib/HelpUtils/res/values-en-rIN/strings.xml
index 759da1d0..150020c 100644
--- a/packages/SettingsLib/HelpUtils/res/values-en-rIN/strings.xml
+++ b/packages/SettingsLib/HelpUtils/res/values-en-rIN/strings.xml
@@ -17,5 +17,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="help_feedback_label" msgid="7106780063063027882">"Help &amp; feedback"</string>
+    <string name="help_feedback_label" msgid="7106780063063027882">"Help and feedback"</string>
 </resources>
diff --git a/packages/SettingsLib/HelpUtils/res/values-te/strings.xml b/packages/SettingsLib/HelpUtils/res/values-te/strings.xml
index ea66717..82c8613 100644
--- a/packages/SettingsLib/HelpUtils/res/values-te/strings.xml
+++ b/packages/SettingsLib/HelpUtils/res/values-te/strings.xml
@@ -17,5 +17,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="help_feedback_label" msgid="7106780063063027882">"సహాయం &amp; అభిప్రాయం"</string>
+    <string name="help_feedback_label" msgid="7106780063063027882">"సహాయం &amp; ఫీడ్‌బ్యాక్"</string>
 </resources>
diff --git a/packages/SettingsLib/RestrictedLockUtils/res/values-da/strings.xml b/packages/SettingsLib/RestrictedLockUtils/res/values-da/strings.xml
index 3a0bc2d..7f10edf 100644
--- a/packages/SettingsLib/RestrictedLockUtils/res/values-da/strings.xml
+++ b/packages/SettingsLib/RestrictedLockUtils/res/values-da/strings.xml
@@ -18,5 +18,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="enabled_by_admin" msgid="6630472777476410137">"Aktiveret af administratoren"</string>
-    <string name="disabled_by_admin" msgid="4023569940620832713">"Deaktiveret af administratoren"</string>
+    <string name="disabled_by_admin" msgid="4023569940620832713">"Deaktiveret af administrator"</string>
 </resources>
diff --git a/packages/SettingsLib/RestrictedLockUtils/res/values-eu/strings.xml b/packages/SettingsLib/RestrictedLockUtils/res/values-eu/strings.xml
index aaf607f..2a88124 100644
--- a/packages/SettingsLib/RestrictedLockUtils/res/values-eu/strings.xml
+++ b/packages/SettingsLib/RestrictedLockUtils/res/values-eu/strings.xml
@@ -18,5 +18,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="enabled_by_admin" msgid="6630472777476410137">"Administratzaileak gaitu egin du"</string>
-    <string name="disabled_by_admin" msgid="4023569940620832713">"Administratzaileak desgaitu egin du"</string>
+    <string name="disabled_by_admin" msgid="4023569940620832713">"Administratzaileak desgaitu du"</string>
 </resources>
diff --git a/packages/SettingsLib/RestrictedLockUtils/res/values-fa/strings.xml b/packages/SettingsLib/RestrictedLockUtils/res/values-fa/strings.xml
index aaf9116..9c39f98 100644
--- a/packages/SettingsLib/RestrictedLockUtils/res/values-fa/strings.xml
+++ b/packages/SettingsLib/RestrictedLockUtils/res/values-fa/strings.xml
@@ -17,6 +17,6 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="enabled_by_admin" msgid="6630472777476410137">"فعال‌شده توسط سرپرست"</string>
-    <string name="disabled_by_admin" msgid="4023569940620832713">"غیرفعال‌شده توسط سرپرست"</string>
+    <string name="enabled_by_admin" msgid="6630472777476410137">"توسط سرپرست فعال شده"</string>
+    <string name="disabled_by_admin" msgid="4023569940620832713">"توسط سرپرست غیرفعال شده"</string>
 </resources>
diff --git a/packages/SettingsLib/RestrictedLockUtils/res/values-or/strings.xml b/packages/SettingsLib/RestrictedLockUtils/res/values-or/strings.xml
index 1d23c31..4ce6460 100644
--- a/packages/SettingsLib/RestrictedLockUtils/res/values-or/strings.xml
+++ b/packages/SettingsLib/RestrictedLockUtils/res/values-or/strings.xml
@@ -18,5 +18,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="enabled_by_admin" msgid="6630472777476410137">"ଆଡମିନଙ୍କ ଦ୍ୱାରା ସକ୍ଷମ କରାଯାଇଛି"</string>
-    <string name="disabled_by_admin" msgid="4023569940620832713">"ବ୍ୟବସ୍ଥାପକଙ୍କ ଦ୍ଵାରା ଅକ୍ଷମ କରାଯାଇଛି"</string>
+    <string name="disabled_by_admin" msgid="4023569940620832713">"ଆଡମିନଙ୍କ ଦ୍ଵାରା ଅକ୍ଷମ କରାଯାଇଛି"</string>
 </resources>
diff --git a/packages/SettingsLib/RestrictedLockUtils/res/values-pt-rPT/strings.xml b/packages/SettingsLib/RestrictedLockUtils/res/values-pt-rPT/strings.xml
index e57d1cc..908e2fb 100644
--- a/packages/SettingsLib/RestrictedLockUtils/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsLib/RestrictedLockUtils/res/values-pt-rPT/strings.xml
@@ -18,5 +18,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="enabled_by_admin" msgid="6630472777476410137">"Ativado pelo administrador"</string>
-    <string name="disabled_by_admin" msgid="4023569940620832713">"Desativada pelo administrador"</string>
+    <string name="disabled_by_admin" msgid="4023569940620832713">"Desativado pelo administrador"</string>
 </resources>
diff --git a/packages/SettingsLib/RestrictedLockUtils/res/values-te/strings.xml b/packages/SettingsLib/RestrictedLockUtils/res/values-te/strings.xml
index 2da347c..8f17dc5 100644
--- a/packages/SettingsLib/RestrictedLockUtils/res/values-te/strings.xml
+++ b/packages/SettingsLib/RestrictedLockUtils/res/values-te/strings.xml
@@ -17,6 +17,6 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="enabled_by_admin" msgid="6630472777476410137">"నిర్వాహకులు ప్రారంభించారు"</string>
-    <string name="disabled_by_admin" msgid="4023569940620832713">"నిర్వాహకులు నిలిపివేసారు"</string>
+    <string name="enabled_by_admin" msgid="6630472777476410137">"అడ్మిన్ ఎనేబుల్ చేశారు"</string>
+    <string name="disabled_by_admin" msgid="4023569940620832713">"అడ్మిన్ డిజేబుల్ చేశారు"</string>
 </resources>
diff --git a/packages/SettingsLib/RestrictedLockUtils/res/values-vi/strings.xml b/packages/SettingsLib/RestrictedLockUtils/res/values-vi/strings.xml
index f664bb4..2c37652 100644
--- a/packages/SettingsLib/RestrictedLockUtils/res/values-vi/strings.xml
+++ b/packages/SettingsLib/RestrictedLockUtils/res/values-vi/strings.xml
@@ -18,5 +18,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="enabled_by_admin" msgid="6630472777476410137">"Do quản trị viên bật"</string>
-    <string name="disabled_by_admin" msgid="4023569940620832713">"Bị quản trị viên tắt"</string>
+    <string name="disabled_by_admin" msgid="4023569940620832713">"Đã bị quản trị viên vô hiệu hóa"</string>
 </resources>
diff --git a/packages/SettingsLib/SearchWidget/res/values-el/strings.xml b/packages/SettingsLib/SearchWidget/res/values-el/strings.xml
index 6f5ab78..d50436a 100644
--- a/packages/SettingsLib/SearchWidget/res/values-el/strings.xml
+++ b/packages/SettingsLib/SearchWidget/res/values-el/strings.xml
@@ -17,5 +17,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="search_menu" msgid="1914043873178389845">"Ρυθμίσεις αναζήτησης"</string>
+    <string name="search_menu" msgid="1914043873178389845">"Αναζήτηση στις ρυθμίσεις"</string>
 </resources>
diff --git a/packages/SettingsLib/SearchWidget/res/values-fa/strings.xml b/packages/SettingsLib/SearchWidget/res/values-fa/strings.xml
index fa5f9bd..2c9aaa5 100644
--- a/packages/SettingsLib/SearchWidget/res/values-fa/strings.xml
+++ b/packages/SettingsLib/SearchWidget/res/values-fa/strings.xml
@@ -17,5 +17,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="search_menu" msgid="1914043873178389845">"جستجوی تنظیمات"</string>
+    <string name="search_menu" msgid="1914043873178389845">"تنظیمات جستجو"</string>
 </resources>
diff --git a/packages/SettingsLib/SearchWidget/res/values-hr/strings.xml b/packages/SettingsLib/SearchWidget/res/values-hr/strings.xml
index 9d83396..34cb8e0 100644
--- a/packages/SettingsLib/SearchWidget/res/values-hr/strings.xml
+++ b/packages/SettingsLib/SearchWidget/res/values-hr/strings.xml
@@ -17,5 +17,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="search_menu" msgid="1914043873178389845">"Pretraži postavke"</string>
+    <string name="search_menu" msgid="1914043873178389845">"Pretražite postavke"</string>
 </resources>
diff --git a/packages/SettingsLib/SearchWidget/res/values-hy/strings.xml b/packages/SettingsLib/SearchWidget/res/values-hy/strings.xml
index 8fa5a84..b68b792 100644
--- a/packages/SettingsLib/SearchWidget/res/values-hy/strings.xml
+++ b/packages/SettingsLib/SearchWidget/res/values-hy/strings.xml
@@ -17,5 +17,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="search_menu" msgid="1914043873178389845">"Որոնման կարգավորումներ"</string>
+    <string name="search_menu" msgid="1914043873178389845">"Որոնեք կարգավորումներ"</string>
 </resources>
diff --git a/packages/SettingsLib/SearchWidget/res/values-in/strings.xml b/packages/SettingsLib/SearchWidget/res/values-in/strings.xml
index edf51cc..ccf11d2 100644
--- a/packages/SettingsLib/SearchWidget/res/values-in/strings.xml
+++ b/packages/SettingsLib/SearchWidget/res/values-in/strings.xml
@@ -17,5 +17,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="search_menu" msgid="1914043873178389845">"Setelan penelusuran"</string>
+    <string name="search_menu" msgid="1914043873178389845">"Telusuri setelan"</string>
 </resources>
diff --git a/packages/SettingsLib/SearchWidget/res/values-is/strings.xml b/packages/SettingsLib/SearchWidget/res/values-is/strings.xml
index 7ab103b..3378c84 100644
--- a/packages/SettingsLib/SearchWidget/res/values-is/strings.xml
+++ b/packages/SettingsLib/SearchWidget/res/values-is/strings.xml
@@ -17,5 +17,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="search_menu" msgid="1914043873178389845">"Leitarstillingar"</string>
+    <string name="search_menu" msgid="1914043873178389845">"Leita í stillingum"</string>
 </resources>
diff --git a/packages/SettingsLib/SearchWidget/res/values-pt-rPT/strings.xml b/packages/SettingsLib/SearchWidget/res/values-pt-rPT/strings.xml
index 85a8d73..5fe116e 100644
--- a/packages/SettingsLib/SearchWidget/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsLib/SearchWidget/res/values-pt-rPT/strings.xml
@@ -17,5 +17,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="search_menu" msgid="1914043873178389845">"Pesquisa de definições"</string>
+    <string name="search_menu" msgid="1914043873178389845">"Pesquisar nas definições"</string>
 </resources>
diff --git a/packages/SettingsLib/SearchWidget/res/values-sq/strings.xml b/packages/SettingsLib/SearchWidget/res/values-sq/strings.xml
index a531321..354941d 100644
--- a/packages/SettingsLib/SearchWidget/res/values-sq/strings.xml
+++ b/packages/SettingsLib/SearchWidget/res/values-sq/strings.xml
@@ -17,5 +17,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="search_menu" msgid="1914043873178389845">"Cilësimet e kërkimit"</string>
+    <string name="search_menu" msgid="1914043873178389845">"Kërko te cilësimet"</string>
 </resources>
diff --git a/packages/SettingsLib/SearchWidget/res/values-tl/strings.xml b/packages/SettingsLib/SearchWidget/res/values-tl/strings.xml
index 111cf5a..14b7b2f 100644
--- a/packages/SettingsLib/SearchWidget/res/values-tl/strings.xml
+++ b/packages/SettingsLib/SearchWidget/res/values-tl/strings.xml
@@ -17,5 +17,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="search_menu" msgid="1914043873178389845">"Mga setting ng paghahanap"</string>
+    <string name="search_menu" msgid="1914043873178389845">"Maghanap sa mga setting"</string>
 </resources>
diff --git a/packages/SettingsLib/SearchWidget/res/values-uk/strings.xml b/packages/SettingsLib/SearchWidget/res/values-uk/strings.xml
index dfd66b2..560ac13 100644
--- a/packages/SettingsLib/SearchWidget/res/values-uk/strings.xml
+++ b/packages/SettingsLib/SearchWidget/res/values-uk/strings.xml
@@ -17,5 +17,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="search_menu" msgid="1914043873178389845">"Налаштування пошуку"</string>
+    <string name="search_menu" msgid="1914043873178389845">"Пошук налаштувань"</string>
 </resources>
diff --git a/packages/SettingsLib/SearchWidget/res/values-vi/strings.xml b/packages/SettingsLib/SearchWidget/res/values-vi/strings.xml
index cb1a75a..90daf11 100644
--- a/packages/SettingsLib/SearchWidget/res/values-vi/strings.xml
+++ b/packages/SettingsLib/SearchWidget/res/values-vi/strings.xml
@@ -17,5 +17,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="search_menu" msgid="1914043873178389845">"Tìm kiếm trong các mục cài đặt"</string>
+    <string name="search_menu" msgid="1914043873178389845">"Tìm trong thông tin cài đặt"</string>
 </resources>
diff --git a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java
index 1e4c7ca..52d2b3c 100644
--- a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java
+++ b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java
@@ -376,8 +376,12 @@
      * Check whether tile only has primary profile.
      */
     public boolean isPrimaryProfileOnly() {
-        String profile = mMetaData != null
-                ? mMetaData.getString(META_DATA_KEY_PROFILE) : PROFILE_ALL;
+        return isPrimaryProfileOnly(mMetaData);
+    }
+
+    static boolean isPrimaryProfileOnly(Bundle metaData) {
+        String profile = metaData != null
+                ? metaData.getString(META_DATA_KEY_PROFILE) : PROFILE_ALL;
         profile = (profile != null ? profile : PROFILE_ALL);
         return TextUtils.equals(profile, PROFILE_PRIMARY);
     }
diff --git a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/TileUtils.java b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/TileUtils.java
index ace50f3..49f6bd8 100644
--- a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/TileUtils.java
+++ b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/TileUtils.java
@@ -339,6 +339,16 @@
     private static void loadTile(UserHandle user, Map<Pair<String, String>, Tile> addedCache,
             String defaultCategory, List<Tile> outTiles, Intent intent, Bundle metaData,
             ComponentInfo componentInfo) {
+        // Skip loading tile if the component is tagged primary_profile_only but not running on
+        // the current user.
+        if (user.getIdentifier() != ActivityManager.getCurrentUser()
+                && Tile.isPrimaryProfileOnly(componentInfo.metaData)) {
+            Log.w(LOG_TAG, "Found " + componentInfo.name + " for intent "
+                    + intent + " is primary profile only, skip loading tile for uid "
+                    + user.getIdentifier());
+            return;
+        }
+
         String categoryKey = defaultCategory;
         // Load category
         if ((metaData == null || !metaData.containsKey(EXTRA_CATEGORY_KEY))
diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml
index a640da4..08e9224 100644
--- a/packages/SettingsLib/res/values-ar/strings.xml
+++ b/packages/SettingsLib/res/values-ar/strings.xml
@@ -25,7 +25,7 @@
     <string name="wifi_remembered" msgid="3266709779723179188">"تم الحفظ"</string>
     <string name="wifi_disconnected" msgid="7054450256284661757">"غير متصلة"</string>
     <string name="wifi_disabled_generic" msgid="2651916945380294607">"غير مفعّلة"</string>
-    <string name="wifi_disabled_network_failure" msgid="2660396183242399585">"‏تعذّرت تهيئة عنوان IP"</string>
+    <string name="wifi_disabled_network_failure" msgid="2660396183242399585">"‏تعذّر إعداد عنوان IP"</string>
     <string name="wifi_disabled_by_recommendation_provider" msgid="1302938248432705534">"الجهاز غير متصل بسبب انخفاض جودة الشبكة"</string>
     <string name="wifi_disabled_wifi_failure" msgid="8819554899148331100">"‏تعذّر اتصال WiFi"</string>
     <string name="wifi_disabled_password_failure" msgid="6892387079613226738">"حدثت مشكلة في المصادقة"</string>
@@ -153,7 +153,7 @@
     <string name="unknown" msgid="3544487229740637809">"غير معروف"</string>
     <string name="running_process_item_user_label" msgid="3988506293099805796">"المستخدم: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
     <string name="launch_defaults_some" msgid="3631650616557252926">"تم ضبط بعض الإعدادات التلقائية"</string>
-    <string name="launch_defaults_none" msgid="8049374306261262709">"لم يتم تعيين إعدادات تلقائية"</string>
+    <string name="launch_defaults_none" msgid="8049374306261262709">"لم يتم ضبط إعدادات تلقائية"</string>
     <string name="tts_settings" msgid="8130616705989351312">"إعدادات تحويل النص إلى كلام"</string>
     <string name="tts_settings_title" msgid="7602210956640483039">"تحويل النص إلى كلام"</string>
     <string name="tts_default_rate_title" msgid="3964187817364304022">"معدل سرعة الكلام"</string>
@@ -245,7 +245,7 @@
     <string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"هل تريد السماح بإلغاء قفل المصنّع الأصلي للجهاز؟"</string>
     <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"تحذير: لن تعمل ميزات الحماية على هذا الجهاز أثناء تفعيل هذا الإعداد."</string>
     <string name="mock_location_app" msgid="6269380172542248304">"اختيار تطبيق الموقع الزائف"</string>
-    <string name="mock_location_app_not_set" msgid="6972032787262831155">"لم يتم تعيين تطبيق موقع زائف"</string>
+    <string name="mock_location_app_not_set" msgid="6972032787262831155">"لم يتم ضبط تطبيق موقع زائف"</string>
     <string name="mock_location_app_set" msgid="4706722469342913843">"تطبيق الموقع الزائف: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
     <string name="debug_networking_category" msgid="6829757985772659599">"الشبكات"</string>
     <string name="wifi_display_certification" msgid="1805579519992520381">"شهادة عرض شاشة لاسلكي"</string>
@@ -293,8 +293,8 @@
     <string name="dev_logpersist_clear_warning_message" msgid="6447590867594287413">"عندما نتوقف عن رصد أي أخطاء باستخدام المسجِّل الدائم مرة أخرى، يتعين علينا محو بيانات المسجِّل الموجودة على جهازك."</string>
     <string name="select_logpersist_title" msgid="447071974007104196">"تخزين بيانات المسجِّل باستمرار على الجهاز"</string>
     <string name="select_logpersist_dialog_title" msgid="7745193591195485594">"تحديد مخازن السجلات المؤقتة المراد تخزينها باستمرار على الجهاز"</string>
-    <string name="select_usb_configuration_title" msgid="6339801314922294586">"‏حدد تهيئة USB"</string>
-    <string name="select_usb_configuration_dialog_title" msgid="3579567144722589237">"‏حدد تهيئة USB"</string>
+    <string name="select_usb_configuration_title" msgid="6339801314922294586">"‏حدد إعداد USB"</string>
+    <string name="select_usb_configuration_dialog_title" msgid="3579567144722589237">"‏حدد إعداد USB"</string>
     <string name="allow_mock_location" msgid="2102650981552527884">"السماح بمواقع وهمية"</string>
     <string name="allow_mock_location_summary" msgid="179780881081354579">"السماح بمواقع وهمية"</string>
     <string name="debug_view_attributes" msgid="3539609843984208216">"تفعيل فحص سمة العرض"</string>
@@ -319,7 +319,7 @@
     <string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"‏تعيين سلوك التحقق من HDCP"</string>
     <string name="debug_debugging_category" msgid="535341063709248842">"تصحيح الأخطاء"</string>
     <string name="debug_app" msgid="8903350241392391766">"اختيار التطبيق لتصحيحه"</string>
-    <string name="debug_app_not_set" msgid="1934083001283807188">"لم يتم تعيين تطبيق لتصحيحه"</string>
+    <string name="debug_app_not_set" msgid="1934083001283807188">"لم يتم ضبط تطبيق لتصحيحه"</string>
     <string name="debug_app_set" msgid="6599535090477753651">"تطبيق التصحيح: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
     <string name="select_application" msgid="2543228890535466325">"اختيار تطبيق"</string>
     <string name="no_application" msgid="9038334538870247690">"لا شيء"</string>
@@ -382,9 +382,9 @@
     <string name="local_backup_password_title" msgid="4631017948933578709">"كلمة مرور احتياطية للكمبيوتر"</string>
     <string name="local_backup_password_summary_none" msgid="7646898032616361714">"النُسخ الاحتياطية الكاملة لسطح المكتب غير محمية في الوقت الحالي"</string>
     <string name="local_backup_password_summary_change" msgid="1707357670383995567">"انقر لتغيير كلمة مرور النسخ الاحتياطية الكاملة لسطح المكتب أو إزالتها."</string>
-    <string name="local_backup_password_toast_success" msgid="4891666204428091604">"تم تعيين كلمة مرور احتياطية جديدة"</string>
+    <string name="local_backup_password_toast_success" msgid="4891666204428091604">"تم ضبط كلمة مرور احتياطية جديدة"</string>
     <string name="local_backup_password_toast_confirmation_mismatch" msgid="2994718182129097733">"كلمة المرور الجديدة وتأكيدها لا يتطابقان"</string>
-    <string name="local_backup_password_toast_validation_failure" msgid="714669442363647122">"تعذّر تعيين كلمة مرور احتياطية"</string>
+    <string name="local_backup_password_toast_validation_failure" msgid="714669442363647122">"تعذّر ضبط كلمة مرور احتياطية"</string>
     <string name="loading_injected_setting_summary" msgid="8394446285689070348">"جارٍ التحميل…"</string>
   <string-array name="color_mode_names">
     <item msgid="3836559907767149216">"نابض بالحياة (تلقائي)"</item>
diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml
index 01d7682..7a83b3b 100644
--- a/packages/SettingsLib/res/values-be/strings.xml
+++ b/packages/SettingsLib/res/values-be/strings.xml
@@ -212,7 +212,7 @@
     <string name="adb_wireless_settings" msgid="2295017847215680229">"Адладка па Wi-Fi"</string>
     <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Каб праглядаць і выкарыстоўваць даступныя прылады, уключыце адладку па Wi-Fi"</string>
     <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Спалучыць прыладу з дапамогай QR-кода"</string>
-    <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Спалучаць новыя прылады з дапамогай сканера QR-кода"</string>
+    <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Спалучаць новыя прылады з дапамогай сканера QR-кодаў"</string>
     <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Спалучыць прыладу з дапамогай кода спалучэння"</string>
     <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Спалучаць новыя прылады з дапамогай шасцізначнага кода"</string>
     <string name="adb_paired_devices_title" msgid="5268997341526217362">"Спалучаныя прылады"</string>
diff --git a/packages/SettingsLib/res/values-bn/arrays.xml b/packages/SettingsLib/res/values-bn/arrays.xml
index a131a3b..b19cde4 100644
--- a/packages/SettingsLib/res/values-bn/arrays.xml
+++ b/packages/SettingsLib/res/values-bn/arrays.xml
@@ -40,7 +40,7 @@
     <item msgid="8339720953594087771">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> এর সাথে কানেক্ট হচ্ছে…"</item>
     <item msgid="3028983857109369308">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> দিয়ে যাচাইকরণ করা হচ্ছে..."</item>
     <item msgid="4287401332778341890">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> থেকে আইপি অ্যাড্রেস জানা হচ্ছে…"</item>
-    <item msgid="1043944043827424501">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> তে কানেক্ট হয়েছে"</item>
+    <item msgid="1043944043827424501">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>-এ কানেক্ট হয়েছে"</item>
     <item msgid="7445993821842009653">"স্থগিত করা হয়েছে"</item>
     <item msgid="1175040558087735707">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> থেকে ডিসকানেক্ট হচ্ছে…"</item>
     <item msgid="699832486578171722">"ডিসকানেক্ট করা হয়েছে"</item>
diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml
index 2db23f7..dbec19b 100644
--- a/packages/SettingsLib/res/values-bn/strings.xml
+++ b/packages/SettingsLib/res/values-bn/strings.xml
@@ -488,8 +488,8 @@
     <string name="status_unavailable" msgid="5279036186589861608">"অনুপলভ্য"</string>
     <string name="wifi_status_mac_randomized" msgid="466382542497832189">"MAC র‍্যান্ডমাইজ করা হয়েছে"</string>
     <plurals name="wifi_tether_connected_summary" formatted="false" msgid="6317236306047306139">
-      <item quantity="one">%1$dটি ডিভাইস কানেক্ট</item>
-      <item quantity="other">%1$dটি ডিভাইস কানেক্ট</item>
+      <item quantity="one">%1$dটি ডিভাইস কানেক্ট রয়েছে</item>
+      <item quantity="other">%1$dটি ডিভাইস কানেক্ট রয়েছে</item>
     </plurals>
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"আরও বেশি।"</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"আরও কম।"</string>
diff --git a/packages/SettingsLib/res/values-bs/arrays.xml b/packages/SettingsLib/res/values-bs/arrays.xml
index 6595c22..dc33bb0e 100644
--- a/packages/SettingsLib/res/values-bs/arrays.xml
+++ b/packages/SettingsLib/res/values-bs/arrays.xml
@@ -187,7 +187,7 @@
     <item msgid="97587758561106269">"Isključeno"</item>
     <item msgid="7126170197336963369">"Međuspremnici svih zapisnika"</item>
     <item msgid="7167543126036181392">"Međuspremnici svih zapisnika osim radija"</item>
-    <item msgid="5135340178556563979">"samo međuspremnik zapisnika kernela"</item>
+    <item msgid="5135340178556563979">"samo međumemorija zapisnika kernela"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="2675263395797191850">"Animacija isključena"</item>
diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml
index c27973f..287a1ac 100644
--- a/packages/SettingsLib/res/values-es-rUS/strings.xml
+++ b/packages/SettingsLib/res/values-es-rUS/strings.xml
@@ -22,7 +22,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="wifi_fail_to_scan" msgid="2333336097603822490">"No se pueden buscar las redes."</string>
     <string name="wifi_security_none" msgid="7392696451280611452">"Ninguna"</string>
-    <string name="wifi_remembered" msgid="3266709779723179188">"Guardada"</string>
+    <string name="wifi_remembered" msgid="3266709779723179188">"Guardado"</string>
     <string name="wifi_disconnected" msgid="7054450256284661757">"Desconectado"</string>
     <string name="wifi_disabled_generic" msgid="2651916945380294607">"Inhabilitada"</string>
     <string name="wifi_disabled_network_failure" msgid="2660396183242399585">"Error de configuración IP"</string>
diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml
index 0042321..eaf14f0 100644
--- a/packages/SettingsLib/res/values-eu/strings.xml
+++ b/packages/SettingsLib/res/values-eu/strings.xml
@@ -401,7 +401,7 @@
     <string name="inactive_app_active_summary" msgid="8047630990208722344">"Aktibo. Aldatzeko, sakatu hau."</string>
     <string name="standby_bucket_summary" msgid="5128193447550429600">"Egonean moduko aplikazioaren egoera: <xliff:g id="BUCKET"> %s</xliff:g>"</string>
     <string name="runningservices_settings_title" msgid="6460099290493086515">"Abian diren zerbitzuak"</string>
-    <string name="runningservices_settings_summary" msgid="1046080643262665743">"Ikusi eta kontrolatu unean abian diren zerbitzuak"</string>
+    <string name="runningservices_settings_summary" msgid="1046080643262665743">"Ikusi eta kontrolatu une honetan abian diren zerbitzuak"</string>
     <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView inplementazioa"</string>
     <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Ezarri WebView inplementazioa"</string>
     <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Jada ez dago erabilgarri aukera hori. Saiatu berriro."</string>
diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml
index 04583d5..77a6ce2 100644
--- a/packages/SettingsLib/res/values-fa/strings.xml
+++ b/packages/SettingsLib/res/values-fa/strings.xml
@@ -211,8 +211,8 @@
     <string name="adb_wireless_error" msgid="721958772149779856">"خطا"</string>
     <string name="adb_wireless_settings" msgid="2295017847215680229">"اشکال‌زدایی بی‌سیم"</string>
     <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"برای مشاهده و استفاده از دستگاه‌های در دسترس، اشکال‌زدایی بی‌سیم را روشن کنید"</string>
-    <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"‏مرتبط کردن دستگاه با کد QR"</string>
-    <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"‏دستگاه‌های جدید را بااستفاده از اسکنر کد QR مرتبط کنید"</string>
+    <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"مرتبط کردن دستگاه با رمزینه پاسخ‌سریع"</string>
+    <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"دستگاه‌های جدید را بااستفاده از اسکنر رمزینه پاسخ‌سریع مرتبط کنید"</string>
     <string name="adb_pair_method_code_title" msgid="1122590300445142904">"مرتبط کردن دستگاه با کد مرتبط‌سازی"</string>
     <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"دستگاه‌های جدید را با استفاده از کد شش رقمی مرتبط کنید"</string>
     <string name="adb_paired_devices_title" msgid="5268997341526217362">"دستگاه‌های مرتبط‌شده"</string>
@@ -226,12 +226,12 @@
     <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"‏کد مرتبط‌سازی Wi‑Fi"</string>
     <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"مرتبط‌سازی ناموفق"</string>
     <string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"مطمئن شوید که دستگاه به همان شبکه متصل باشد."</string>
-    <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"‏دستگاه را ازطریق Wi‑Fi و با اسکن کردن کد QR مرتبط کنید"</string>
+    <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"‏دستگاه را ازطریق Wi‑Fi و با اسکن کردن رمزینه پاسخ‌سریع مرتبط کنید"</string>
     <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"مرتبط‌سازی دستگاه…"</string>
-    <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"‏مرتبط کردن دستگاه انجام نشد. یا کد QR اشتباه بوده است، یا دستگاه به همان شبکه متصل نیست."</string>
+    <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"مرتبط کردن دستگاه انجام نشد. یا رمزینه پاسخ‌سریع اشتباه بوده است، یا دستگاه به همان شبکه متصل نیست."</string>
     <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"‏نشانی IP و درگاه"</string>
-    <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"‏اسکن کد QR"</string>
-    <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"‏دستگاه را ازطریق Wi‑Fi و با اسکن کردن کد QR مرتبط کنید"</string>
+    <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"اسکن رمزینه پاسخ‌سریع"</string>
+    <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"‏دستگاه را ازطریق Wi‑Fi و با اسکن کردن رمزینه پاسخ‌سریع مرتبط کنید"</string>
     <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"‏لطفاً به شبکه Wi-Fi متصل شوید"</string>
     <string name="keywords_adb_wireless" msgid="6507505581882171240">"‏ADB (پل اشکال‌زدایی Android)، اشکال‌زدایی کردن، برنامه‌نویس"</string>
     <string name="bugreport_in_power" msgid="8664089072534638709">"میان‌بر گزارش مشکل"</string>
diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml
index 3e8b1c1..f9d57c4 100644
--- a/packages/SettingsLib/res/values-gl/strings.xml
+++ b/packages/SettingsLib/res/values-gl/strings.xml
@@ -37,7 +37,7 @@
     <string name="wifi_no_internet" msgid="1774198889176926299">"Sen acceso a Internet"</string>
     <string name="saved_network" msgid="7143698034077223645">"Gardada por <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="connected_via_network_scorer" msgid="7665725527352893558">"Conectouse automaticamente a través de %1$s"</string>
-    <string name="connected_via_network_scorer_default" msgid="7973529709744526285">"Conectada automaticamente a través dun provedor de valoración de rede"</string>
+    <string name="connected_via_network_scorer_default" msgid="7973529709744526285">"Conectada automaticamente a través dun provedor de valoración de redes"</string>
     <string name="connected_via_passpoint" msgid="7735442932429075684">"Conectado a través de %1$s"</string>
     <string name="connected_via_app" msgid="3532267661404276584">"Wifi conectada a través de <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Dispoñible a través de %1$s"</string>
diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml
index aa1f960..0ce52f8 100644
--- a/packages/SettingsLib/res/values-gu/strings.xml
+++ b/packages/SettingsLib/res/values-gu/strings.xml
@@ -488,8 +488,8 @@
     <string name="status_unavailable" msgid="5279036186589861608">"અનુપલબ્ધ"</string>
     <string name="wifi_status_mac_randomized" msgid="466382542497832189">"MACને રેન્ડમ કરેલ છે"</string>
     <plurals name="wifi_tether_connected_summary" formatted="false" msgid="6317236306047306139">
-      <item quantity="one">%1$d ઉપકરણ કનેક્ટ કર્યું</item>
-      <item quantity="other">%1$d ઉપકરણો કનેક્ટ કર્યા</item>
+      <item quantity="one">%1$d ડિવાઇસ કનેક્ટ કર્યું</item>
+      <item quantity="other">%1$d ડિવાઇસ કનેક્ટ કર્યા</item>
     </plurals>
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"વધુ સમય."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"ઓછો સમય."</string>
diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml
index 9b6a27a..f2de28e 100644
--- a/packages/SettingsLib/res/values-hi/strings.xml
+++ b/packages/SettingsLib/res/values-hi/strings.xml
@@ -488,7 +488,7 @@
     <string name="status_unavailable" msgid="5279036186589861608">"मौजूद नहीं है"</string>
     <string name="wifi_status_mac_randomized" msgid="466382542497832189">"एमएसी पता रैंडम पर सेट है"</string>
     <plurals name="wifi_tether_connected_summary" formatted="false" msgid="6317236306047306139">
-      <item quantity="one">%1$d डिवाइस जुड़े हैं</item>
+      <item quantity="one">%1$d डिवाइस जुड़ा है</item>
       <item quantity="other">%1$d डिवाइस जुड़े हैं</item>
     </plurals>
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"ज़्यादा समय."</string>
diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml
index d16ff03..5fbf3ac 100644
--- a/packages/SettingsLib/res/values-hu/strings.xml
+++ b/packages/SettingsLib/res/values-hu/strings.xml
@@ -145,7 +145,7 @@
     <string name="data_usage_ota" msgid="7984667793701597001">"Rendszerfrissítések"</string>
     <string name="tether_settings_title_usb" msgid="3728686573430917722">"USB-megosztás"</string>
     <string name="tether_settings_title_wifi" msgid="4803402057533895526">"Hordozható hotspot"</string>
-    <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"Bluetooth megosztása"</string>
+    <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"Bluetooth-megosztás"</string>
     <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"Megosztás"</string>
     <string name="tether_settings_title_all" msgid="8910259483383010470">"Megosztás és hotspot"</string>
     <string name="managed_user_title" msgid="449081789742645723">"Összes munkaalkalmazás"</string>
diff --git a/packages/SettingsLib/res/values-hy/arrays.xml b/packages/SettingsLib/res/values-hy/arrays.xml
index a2de6df..141ce39 100644
--- a/packages/SettingsLib/res/values-hy/arrays.xml
+++ b/packages/SettingsLib/res/values-hy/arrays.xml
@@ -55,7 +55,7 @@
   </string-array>
   <string-array name="hdcp_checking_summaries">
     <item msgid="4045840870658484038">"Երբեք չօգտագործել HDCP ստուգումը"</item>
-    <item msgid="8254225038262324761">"Օգտագործել HDCP-ը` միայն DRM-ի բովանդակությունը ստուգելու համար"</item>
+    <item msgid="8254225038262324761">"Օգտագործել HDCP-ը՝ միայն DRM-ի բովանդակությունը ստուգելու համար"</item>
     <item msgid="6421717003037072581">"Միշտ օգտագործել HDCP ստուգումը"</item>
   </string-array>
   <string-array name="bt_hci_snoop_log_entries">
diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml
index a1dbafc..3d25ff8 100644
--- a/packages/SettingsLib/res/values-hy/strings.xml
+++ b/packages/SettingsLib/res/values-hy/strings.xml
@@ -57,7 +57,7 @@
     <string name="osu_sign_up_complete" msgid="7640183358878916847">"Գրանցումն ավարտված է: Միացում…"</string>
     <string name="speed_label_very_slow" msgid="8526005255731597666">"Շատ դանդաղ"</string>
     <string name="speed_label_slow" msgid="6069917670665664161">"Դանդաղ"</string>
-    <string name="speed_label_okay" msgid="1253594383880810424">"Հաստատել"</string>
+    <string name="speed_label_okay" msgid="1253594383880810424">"Լավ"</string>
     <string name="speed_label_medium" msgid="9078405312828606976">"Միջին"</string>
     <string name="speed_label_fast" msgid="2677719134596044051">"Արագ"</string>
     <string name="speed_label_very_fast" msgid="8215718029533182439">"Շատ արագ"</string>
@@ -344,7 +344,7 @@
     <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Թարմացվելիս ընդգծել սարքաշարի ծածկույթները կանաչ գույնով"</string>
     <string name="debug_hw_overdraw" msgid="8944851091008756796">"Վրիպազերծել GPU գերազանցումները"</string>
     <string name="disable_overlays" msgid="4206590799671557143">"Կասեցնել HW վրադրումները"</string>
-    <string name="disable_overlays_summary" msgid="1954852414363338166">"Միշտ օգտագործել GPU-ն` էկրանի կազմման համար"</string>
+    <string name="disable_overlays_summary" msgid="1954852414363338166">"Միշտ օգտագործել GPU-ն՝ էկրանի կազմման համար"</string>
     <string name="simulate_color_space" msgid="1206503300335835151">"Նմանակել գունատարածքը"</string>
     <string name="enable_opengl_traces_title" msgid="4638773318659125196">"Ակտիվացնել OpenGL հետքերը"</string>
     <string name="usb_audio_disable_routing" msgid="3367656923544254975">"Անջատել USB աուդիո երթուղումը"</string>
@@ -494,7 +494,7 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Ավելացնել ժամանակը:"</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Պակասեցնել ժամանակը:"</string>
     <string name="cancel" msgid="5665114069455378395">"Չեղարկել"</string>
-    <string name="okay" msgid="949938843324579502">"Հաստատել"</string>
+    <string name="okay" msgid="949938843324579502">"Եղավ"</string>
     <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Միացնել"</string>
     <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Միացրեք «Չանհանգստացնել» ռեժիմը"</string>
     <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Երբեք"</string>
diff --git a/packages/SettingsLib/res/values-in/arrays.xml b/packages/SettingsLib/res/values-in/arrays.xml
index c0af270..5cdd954 100644
--- a/packages/SettingsLib/res/values-in/arrays.xml
+++ b/packages/SettingsLib/res/values-in/arrays.xml
@@ -40,7 +40,7 @@
     <item msgid="8339720953594087771">"Menyambung ke <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
     <item msgid="3028983857109369308">"Mengautentikasi dengan <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
     <item msgid="4287401332778341890">"Mendapatkan alamat IP dari <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
-    <item msgid="1043944043827424501">"Tersambung ke <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+    <item msgid="1043944043827424501">"Terhubung ke <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
     <item msgid="7445993821842009653">"Ditangguhkan"</item>
     <item msgid="1175040558087735707">"Diputus dari <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
     <item msgid="699832486578171722">"Sambungan terputus"</item>
diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml
index 3c35527..c68a438 100644
--- a/packages/SettingsLib/res/values-in/strings.xml
+++ b/packages/SettingsLib/res/values-in/strings.xml
@@ -156,7 +156,7 @@
     <string name="launch_defaults_none" msgid="8049374306261262709">"Tidak ada setelan default"</string>
     <string name="tts_settings" msgid="8130616705989351312">"Setelan text-to-speech"</string>
     <string name="tts_settings_title" msgid="7602210956640483039">"Keluaran text-to-speech"</string>
-    <string name="tts_default_rate_title" msgid="3964187817364304022">"Laju bicara"</string>
+    <string name="tts_default_rate_title" msgid="3964187817364304022">"Kecepatan ucapan"</string>
     <string name="tts_default_rate_summary" msgid="3781937042151716987">"Kecepatan teks diucapkan"</string>
     <string name="tts_default_pitch_title" msgid="6988592215554485479">"Tinggi nada"</string>
     <string name="tts_default_pitch_summary" msgid="9132719475281551884">"Memengaruhi nada ucapan yang disintesis"</string>
diff --git a/packages/SettingsLib/res/values-it/arrays.xml b/packages/SettingsLib/res/values-it/arrays.xml
index de38625..3018683 100644
--- a/packages/SettingsLib/res/values-it/arrays.xml
+++ b/packages/SettingsLib/res/values-it/arrays.xml
@@ -22,13 +22,13 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string-array name="wifi_status">
     <item msgid="1596683495752107015"></item>
-    <item msgid="3288373008277313483">"Scansione in corso..."</item>
-    <item msgid="6050951078202663628">"Connessione..."</item>
-    <item msgid="8356618438494652335">"Autenticazione..."</item>
-    <item msgid="2837871868181677206">"Acquisizione indirizzo IP..."</item>
+    <item msgid="3288373008277313483">"Scansione in corso…"</item>
+    <item msgid="6050951078202663628">"Connessione…"</item>
+    <item msgid="8356618438494652335">"Autenticazione…"</item>
+    <item msgid="2837871868181677206">"Acquisizione indirizzo IP…"</item>
     <item msgid="4613015005934755724">"Connessa"</item>
     <item msgid="3763530049995655072">"Sospesa"</item>
-    <item msgid="7852381437933824454">"Disconnessione..."</item>
+    <item msgid="7852381437933824454">"Disconnessione…"</item>
     <item msgid="5046795712175415059">"Disconnessa"</item>
     <item msgid="2473654476624070462">"Operazione non riuscita"</item>
     <item msgid="9146847076036105115">"Bloccato"</item>
@@ -36,13 +36,13 @@
   </string-array>
   <string-array name="wifi_status_with_ssid">
     <item msgid="5969842512724979061"></item>
-    <item msgid="1818677602615822316">"Scansione in corso..."</item>
-    <item msgid="8339720953594087771">"Connessione a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
-    <item msgid="3028983857109369308">"Autenticazione con <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
-    <item msgid="4287401332778341890">"Acquisizione indirizzo IP da <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+    <item msgid="1818677602615822316">"Scansione in corso…"</item>
+    <item msgid="8339720953594087771">"Connessione a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+    <item msgid="3028983857109369308">"Autenticazione con <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+    <item msgid="4287401332778341890">"Acquisizione indirizzo IP da <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
     <item msgid="1043944043827424501">"Connessa a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
     <item msgid="7445993821842009653">"Sospesa"</item>
-    <item msgid="1175040558087735707">"Disconnessione da <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+    <item msgid="1175040558087735707">"Disconnessione da <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
     <item msgid="699832486578171722">"Disconnessa"</item>
     <item msgid="522383512264986901">"Operazione non riuscita"</item>
     <item msgid="3602596701217484364">"Bloccato"</item>
diff --git a/packages/SettingsLib/res/values-ja/arrays.xml b/packages/SettingsLib/res/values-ja/arrays.xml
index 9f8a8e5..91c2fa2 100644
--- a/packages/SettingsLib/res/values-ja/arrays.xml
+++ b/packages/SettingsLib/res/values-ja/arrays.xml
@@ -40,7 +40,7 @@
     <item msgid="8339720953594087771">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>に接続中..."</item>
     <item msgid="3028983857109369308">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>による認証中..."</item>
     <item msgid="4287401332778341890">"IPアドレスを<xliff:g id="NETWORK_NAME">%1$s</xliff:g>から取得中..."</item>
-    <item msgid="1043944043827424501">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>に接続しました"</item>
+    <item msgid="1043944043827424501">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> に接続済み"</item>
     <item msgid="7445993821842009653">"保留中"</item>
     <item msgid="1175040558087735707">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>から切断中..."</item>
     <item msgid="699832486578171722">"切断されました"</item>
diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml
index 5d82eae..6d24511 100644
--- a/packages/SettingsLib/res/values-ko/strings.xml
+++ b/packages/SettingsLib/res/values-ko/strings.xml
@@ -539,7 +539,7 @@
     <string name="user_setup_button_setup_now" msgid="1708269547187760639">"지금 설정"</string>
     <string name="user_setup_button_setup_later" msgid="8712980133555493516">"나중에"</string>
     <string name="user_add_user_type_title" msgid="551279664052914497">"추가"</string>
-    <string name="user_new_user_name" msgid="60979820612818840">"새 사용자"</string>
+    <string name="user_new_user_name" msgid="60979820612818840">"신규 사용자"</string>
     <string name="user_new_profile_name" msgid="2405500423304678841">"새 프로필"</string>
     <string name="user_info_settings_title" msgid="6351390762733279907">"사용자 정보"</string>
     <string name="profile_info_settings_title" msgid="105699672534365099">"프로필 정보"</string>
diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml
index 2702392..15322dd 100644
--- a/packages/SettingsLib/res/values-ky/strings.xml
+++ b/packages/SettingsLib/res/values-ky/strings.xml
@@ -397,8 +397,8 @@
     <item msgid="1282170165150762976">"Санарип мазмун үчүн оптималдаштырылган түстөр"</item>
   </string-array>
     <string name="inactive_apps_title" msgid="5372523625297212320">"Көшүү режиминдеги колдонмолор"</string>
-    <string name="inactive_app_inactive_summary" msgid="3161222402614236260">"Иштеген жок. Которуштуруу үчүн таптап коюңуз."</string>
-    <string name="inactive_app_active_summary" msgid="8047630990208722344">"Иштеп турат. Которуштуруу үчүн таптап коюңуз."</string>
+    <string name="inactive_app_inactive_summary" msgid="3161222402614236260">"Иштеген жок. Күйгүзүү үчүн басып коюңуз."</string>
+    <string name="inactive_app_active_summary" msgid="8047630990208722344">"Иштеп турат. Өчүрүү үчүн басып коюңуз."</string>
     <string name="standby_bucket_summary" msgid="5128193447550429600">"Көшүү режиминдеги колдонмонун абалы:<xliff:g id="BUCKET"> %s</xliff:g>"</string>
     <string name="runningservices_settings_title" msgid="6460099290493086515">"Иштеп жаткан кызматтар"</string>
     <string name="runningservices_settings_summary" msgid="1046080643262665743">"Учурда иштеп жаткан кызматтарды көрүп, көзөмөлдөп турасыз"</string>
diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml
index 34299d8..c4c7201 100644
--- a/packages/SettingsLib/res/values-mk/strings.xml
+++ b/packages/SettingsLib/res/values-mk/strings.xml
@@ -204,10 +204,10 @@
     <string name="tethering_settings_not_available" msgid="266821736434699780">"Поставките за спојување не се достапни за овој корисник"</string>
     <string name="apn_settings_not_available" msgid="1147111671403342300">"Поставките за името на пристапната точка не се достапни за овој корисник"</string>
     <string name="enable_adb" msgid="8072776357237289039">"Отстранување грешки на USB"</string>
-    <string name="enable_adb_summary" msgid="3711526030096574316">"Режим на отстранување грешки кога е поврзано USB"</string>
+    <string name="enable_adb_summary" msgid="3711526030096574316">"Режим за отстранување грешки кога е поврзано USB"</string>
     <string name="clear_adb_keys" msgid="3010148733140369917">"Отповикај овластувања за отстранување грешки од USB"</string>
     <string name="enable_adb_wireless" msgid="6973226350963971018">"Безжично отстранување грешки"</string>
-    <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Режим на отстранување грешки кога е поврзано Wi‑Fi"</string>
+    <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Режим за отстранување грешки кога е поврзано Wi‑Fi"</string>
     <string name="adb_wireless_error" msgid="721958772149779856">"Грешка"</string>
     <string name="adb_wireless_settings" msgid="2295017847215680229">"Безжично отстранување грешки"</string>
     <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"За да ги гледате и користите достапните уреди, вклучете го безжичното отстранување грешки"</string>
diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml
index 08cf5f9..8407db6 100644
--- a/packages/SettingsLib/res/values-mn/strings.xml
+++ b/packages/SettingsLib/res/values-mn/strings.xml
@@ -211,8 +211,8 @@
     <string name="adb_wireless_error" msgid="721958772149779856">"Алдаа"</string>
     <string name="adb_wireless_settings" msgid="2295017847215680229">"Wireless debugging"</string>
     <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Боломжтой төхөөрөмжүүдийг харах болох ашиглахын тулд wireless debugging-г асаана уу"</string>
-    <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Хурдан хариу үйлдлийн кодоор төхөөрөмжийг хослуул"</string>
-    <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Хурдан хариу үйлдлийн кодын сканнер ашиглан шинэ төхөөрөмжүүдийг хослуулна уу"</string>
+    <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"QR кодоор төхөөрөмжийг хослуул"</string>
+    <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"QR кодын сканнер ашиглан шинэ төхөөрөмжүүдийг хослуулна уу"</string>
     <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Хослуулах кодоор төхөөрөмжийг хослуулна уу"</string>
     <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Зургаан оронтой кодыг ашиглан шинэ төхөөрөмжүүдийг хослуулна уу"</string>
     <string name="adb_paired_devices_title" msgid="5268997341526217362">"Хослуулсан төхөөрөмжүүд"</string>
@@ -226,12 +226,12 @@
     <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"Wi‑Fi хослуулах код"</string>
     <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"Хослуулалт амжилтгүй боллоо"</string>
     <string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"Төхөөрөмжийг ижил сүлжээнд холбосон эсэхийг шалгана уу."</string>
-    <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Хурдан хариу үйлдлийн кодыг скан хийж Wi-Fi-р төхөөрөмжийг хослуулна уу"</string>
+    <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"QR кодыг скан хийж Wi-Fi-р төхөөрөмжийг хослуулна уу"</string>
     <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"Төхөөрөмжийг хослуулж байна…"</string>
-    <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"Төхөөрөмжийг хослуулж чадсангүй. Хурдан хариу үйлдлийн код буруу эсвэл төхөөрөмжийг ижил сүлжээнд холбоогүй байна."</string>
+    <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"Төхөөрөмжийг хослуулж чадсангүй. QR код буруу эсвэл төхөөрөмжийг ижил сүлжээнд холбоогүй байна."</string>
     <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP хаяг ба порт"</string>
-    <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Хурдан хариу үйлдлийн кодыг скан хийх"</string>
-    <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"Хурдан хариу үйлдлийн кодыг скан хийж Wi-Fi-р төхөөрөмжийг хослуулна уу"</string>
+    <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR кодыг скан хийх"</string>
+    <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"QR кодыг скан хийж Wi-Fi-р төхөөрөмжийг хослуулна уу"</string>
     <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Wi-Fi сүлжээнд холбогдоно уу"</string>
     <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, дебаг хийх, dev"</string>
     <string name="bugreport_in_power" msgid="8664089072534638709">"Алдаа мэдээлэх товчлол"</string>
diff --git a/packages/SettingsLib/res/values-ne/arrays.xml b/packages/SettingsLib/res/values-ne/arrays.xml
index 2895a02..fb002c2 100644
--- a/packages/SettingsLib/res/values-ne/arrays.xml
+++ b/packages/SettingsLib/res/values-ne/arrays.xml
@@ -238,7 +238,7 @@
   </string-array>
   <string-array name="show_non_rect_clip_entries">
     <item msgid="2482978351289846212">"बन्द"</item>
-    <item msgid="3405519300199774027">"गैर आयातकार क्षेत्र नीलो रङमा कोर्नुहोस्"</item>
+    <item msgid="3405519300199774027">"गैर आयातकार क्षेत्र निलो रङमा कोर्नुहोस्"</item>
     <item msgid="1212561935004167943">"हाइलाइट परीक्षण चित्र कोर्ने आदेशहरू हरियोमा"</item>
   </string-array>
   <string-array name="track_frame_time_entries">
diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml
index 4a2c171..32ea5a9 100644
--- a/packages/SettingsLib/res/values-ne/strings.xml
+++ b/packages/SettingsLib/res/values-ne/strings.xml
@@ -143,9 +143,9 @@
     <string name="data_usage_uninstalled_apps" msgid="1933665711856171491">"हटाइएका एपहरू"</string>
     <string name="data_usage_uninstalled_apps_users" msgid="5533981546921913295">"एपहरू र प्रयोगकर्ताहरू हटाइयो।"</string>
     <string name="data_usage_ota" msgid="7984667793701597001">"प्रणालीसम्बन्धी अद्यावधिकहरू"</string>
-    <string name="tether_settings_title_usb" msgid="3728686573430917722">"USB टेथर गर्दै"</string>
+    <string name="tether_settings_title_usb" msgid="3728686573430917722">"USB टेदर गर्दै"</string>
     <string name="tether_settings_title_wifi" msgid="4803402057533895526">"पोर्टेबल हटस्पट"</string>
-    <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"ब्लुटुथ टेथर गर्दै"</string>
+    <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"ब्लुटुथ टेदर गर्दै"</string>
     <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"टेदर गर्दै"</string>
     <string name="tether_settings_title_all" msgid="8910259483383010470">"टेदर गर्ने र पोर्टेबल हटस्पट"</string>
     <string name="managed_user_title" msgid="449081789742645723">"कार्य प्रोफाइलका सबै एपहरू"</string>
diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml
index 5c80627..85275c1 100644
--- a/packages/SettingsLib/res/values-sw/strings.xml
+++ b/packages/SettingsLib/res/values-sw/strings.xml
@@ -143,11 +143,11 @@
     <string name="data_usage_uninstalled_apps" msgid="1933665711856171491">"Programu zilizoondolewa"</string>
     <string name="data_usage_uninstalled_apps_users" msgid="5533981546921913295">"Watumiaji na programu ziilizoondolewa"</string>
     <string name="data_usage_ota" msgid="7984667793701597001">"Masasisho ya mfumo"</string>
-    <string name="tether_settings_title_usb" msgid="3728686573430917722">"Shiriki intaneti kwa USB"</string>
+    <string name="tether_settings_title_usb" msgid="3728686573430917722">"Sambaza mtandao kwa USB"</string>
     <string name="tether_settings_title_wifi" msgid="4803402057533895526">"Intaneti ya kusambazwa"</string>
-    <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"Shiriki intaneti kwa Bluetooth"</string>
-    <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"Inazuia"</string>
-    <string name="tether_settings_title_all" msgid="8910259483383010470">"Kushiriki na kusambaza intaneti"</string>
+    <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"Sambaza mtandao kwa Bluetooth"</string>
+    <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"Kusambaza mtandao"</string>
+    <string name="tether_settings_title_all" msgid="8910259483383010470">"Kushiriki na kusambaza mtandao"</string>
     <string name="managed_user_title" msgid="449081789742645723">"Programu zote za kazini"</string>
     <string name="user_guest" msgid="6939192779649870792">"Mgeni"</string>
     <string name="unknown" msgid="3544487229740637809">"Haijulikani"</string>
diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml
index a9ec2ea9..20955ba 100644
--- a/packages/SettingsLib/res/values-te/strings.xml
+++ b/packages/SettingsLib/res/values-te/strings.xml
@@ -511,7 +511,7 @@
     <string name="media_transfer_this_device_name" msgid="2716555073132169240">"ఫోన్ స్పీకర్"</string>
     <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"కనెక్ట్ చేయడంలో సమస్య ఉంది. పరికరాన్ని ఆఫ్ చేసి, ఆపై తిరిగి ఆన్ చేయండి"</string>
     <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"వైర్ గల ఆడియో పరికరం"</string>
-    <string name="help_label" msgid="3528360748637781274">"సహాయం &amp; అభిప్రాయం"</string>
+    <string name="help_label" msgid="3528360748637781274">"సహాయం &amp; ఫీడ్‌బ్యాక్"</string>
     <string name="storage_category" msgid="2287342585424631813">"నిల్వ"</string>
     <string name="shared_data_title" msgid="1017034836800864953">"షేర్ చేసిన డేటా"</string>
     <string name="shared_data_summary" msgid="5516326713822885652">"షేర్ చేసిన డేటాను చూసి, సవరించండి"</string>
diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml
index b8343c6..8510a91 100644
--- a/packages/SettingsLib/res/values-th/strings.xml
+++ b/packages/SettingsLib/res/values-th/strings.xml
@@ -143,7 +143,7 @@
     <string name="data_usage_uninstalled_apps" msgid="1933665711856171491">"แอปพลิเคชันที่นำออก"</string>
     <string name="data_usage_uninstalled_apps_users" msgid="5533981546921913295">"แอปพลิเคชันและผู้ใช้ที่นำออก"</string>
     <string name="data_usage_ota" msgid="7984667793701597001">"การอัปเดตระบบ"</string>
-    <string name="tether_settings_title_usb" msgid="3728686573430917722">"ปล่อยสัญญาณผ่าน USB"</string>
+    <string name="tether_settings_title_usb" msgid="3728686573430917722">"เชื่อมต่อเน็ตผ่าน USB"</string>
     <string name="tether_settings_title_wifi" msgid="4803402057533895526">"ฮอตสปอตแบบพกพาได้"</string>
     <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"ปล่อยสัญญาณบลูทูธ"</string>
     <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"การปล่อยสัญญาณ"</string>
diff --git a/packages/SettingsLib/res/values/arrays.xml b/packages/SettingsLib/res/values/arrays.xml
index d59d698..c63cf06 100644
--- a/packages/SettingsLib/res/values/arrays.xml
+++ b/packages/SettingsLib/res/values/arrays.xml
@@ -118,17 +118,17 @@
 
     <!-- Titles for Bluetooth AVRCP Versions -->
     <string-array name="bluetooth_avrcp_versions">
-        <item>AVRCP 1.4 (Default)</item>
+        <item>AVRCP 1.5 (Default)</item>
         <item>AVRCP 1.3</item>
-        <item>AVRCP 1.5</item>
+        <item>AVRCP 1.4</item>
         <item>AVRCP 1.6</item>
     </string-array>
 
     <!-- Values for Bluetooth AVRCP Versions -->
     <string-array name="bluetooth_avrcp_version_values">
-        <item>avrcp14</item>
-        <item>avrcp13</item>
         <item>avrcp15</item>
+        <item>avrcp13</item>
+        <item>avrcp14</item>
         <item>avrcp16</item>
     </string-array>
 
diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml
index 8e8368f..03161d0 100644
--- a/packages/SettingsLib/res/values/strings.xml
+++ b/packages/SettingsLib/res/values/strings.xml
@@ -659,9 +659,6 @@
     <!-- Setting Checkbox title for enabling Bluetooth Gabeldorsche. [CHAR LIMIT=40] -->
     <string name="bluetooth_enable_gabeldorsche">Enable Gabeldorsche</string>
 
-    <!-- Setting Checkbox title for enabling Enhanced Connectivity [CHAR LIMIT=80] -->
-    <string name="enhanced_connectivity">Enhanced Connectivity</string>
-
     <!-- UI debug setting: Select Bluetooth AVRCP Version -->
     <string name="bluetooth_select_avrcp_version_string">Bluetooth AVRCP Version</string>
     <!-- UI debug setting: Select Bluetooth AVRCP Version -->
diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java
index 81cf118..b0a9136 100644
--- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java
+++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java
@@ -1090,7 +1090,7 @@
 
         // Verify second update AP is the same object as the first update AP
         assertThat(passpointAccessPointsFirstUpdate.get(0))
-                .isSameAs(passpointAccessPointsSecondUpdate.get(0));
+                .isSameInstanceAs(passpointAccessPointsSecondUpdate.get(0));
         // Verify second update AP has the average of the first and second update RSSIs
         assertThat(passpointAccessPointsSecondUpdate.get(0).getRssi())
                 .isEqualTo((prevRssi + newRssi) / 2);
@@ -1210,7 +1210,8 @@
                 providersAndScans, cachedAccessPoints);
 
         // Verify second update AP is the same object as the first update AP
-        assertThat(osuAccessPointsFirstUpdate.get(0)).isSameAs(osuAccessPointsSecondUpdate.get(0));
+        assertThat(osuAccessPointsFirstUpdate.get(0))
+                .isSameInstanceAs(osuAccessPointsSecondUpdate.get(0));
         // Verify second update AP has the average of the first and second update RSSIs
         assertThat(osuAccessPointsSecondUpdate.get(0).getRssi())
                 .isEqualTo((prevRssi + newRssi) / 2);
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/IpAddressPreferenceControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/IpAddressPreferenceControllerTest.java
index a83d7e0..b392c5e 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/IpAddressPreferenceControllerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/IpAddressPreferenceControllerTest.java
@@ -69,7 +69,7 @@
 
         assertWithMessage("Intent filter should contain expected intents")
                 .that(ipAddressPreferenceController.getConnectivityIntents())
-                .asList().containsAllIn(expectedIntents);
+                .asList().containsAtLeastElementsIn(expectedIntents);
     }
 
     private static class ConcreteIpAddressPreferenceController extends
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/WifiMacAddressPreferenceControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/WifiMacAddressPreferenceControllerTest.java
index 40b9b13..3705267 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/WifiMacAddressPreferenceControllerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/WifiMacAddressPreferenceControllerTest.java
@@ -90,7 +90,7 @@
 
         assertWithMessage("Intent filter should contain expected intents")
                 .that(mController.getConnectivityIntents())
-                .asList().containsAllIn(expectedIntents);
+                .asList().containsAtLeastElementsIn(expectedIntents);
     }
 
     @Test
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java
index 9b4b97e..906e06e 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java
@@ -17,11 +17,14 @@
 package com.android.settingslib.drawer;
 
 import static com.android.settingslib.drawer.TileUtils.IA_SETTINGS_ACTION;
+import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_PROFILE;
 import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON;
 import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_URI;
 import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_KEYHINT;
 import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY;
 import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY_URI;
+import static com.android.settingslib.drawer.TileUtils.PROFILE_ALL;
+import static com.android.settingslib.drawer.TileUtils.PROFILE_PRIMARY;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -189,7 +192,7 @@
         List<Tile> outTiles = new ArrayList<>();
         List<ResolveInfo> info = new ArrayList<>();
         ResolveInfo resolveInfo = newInfo(true, null /* category */, null, URI_GET_ICON,
-                URI_GET_SUMMARY, "my title", 0);
+                URI_GET_SUMMARY, "my title", 0, PROFILE_ALL);
         info.add(resolveInfo);
 
         when(mPackageManager.queryIntentActivitiesAsUser(any(Intent.class), anyInt(), anyInt()))
@@ -211,7 +214,7 @@
         List<Tile> outTiles = new ArrayList<>();
         List<ResolveInfo> info = new ArrayList<>();
         ResolveInfo resolveInfo = newInfo(true, null /* category */, null, URI_GET_ICON,
-                URI_GET_SUMMARY, null, 123);
+                URI_GET_SUMMARY, null, 123, PROFILE_ALL);
         info.add(resolveInfo);
 
         when(mPackageManager.queryIntentActivitiesAsUser(any(Intent.class), anyInt(), anyInt()))
@@ -235,7 +238,7 @@
         List<Tile> outTiles = new ArrayList<>();
         List<ResolveInfo> info = new ArrayList<>();
         ResolveInfo resolveInfo = newInfo(true, null /* category */, null, URI_GET_ICON,
-                URI_GET_SUMMARY, null, 123);
+                URI_GET_SUMMARY, null, 123, PROFILE_ALL);
         resolveInfo.activityInfo.packageName = "com.android.settings";
         resolveInfo.activityInfo.applicationInfo.packageName = "com.android.settings";
         info.add(resolveInfo);
@@ -258,7 +261,7 @@
         final List<Tile> outTiles = new ArrayList<>();
         final List<ResolveInfo> info = new ArrayList<>();
         final ResolveInfo resolveInfo = newInfo(true, null /* category */, null, URI_GET_ICON,
-                URI_GET_SUMMARY, null, 123);
+                URI_GET_SUMMARY, null, 123, PROFILE_ALL);
         resolveInfo.activityInfo.packageName = "com.android.settings";
         resolveInfo.activityInfo.applicationInfo.packageName = "com.android.settings";
         info.add(resolveInfo);
@@ -281,7 +284,7 @@
 
         assertThat(outTiles).hasSize(1);
         final Bundle newMetaData = outTiles.get(0).getMetaData();
-        assertThat(newMetaData).isNotSameAs(oldMetadata);
+        assertThat(newMetaData).isNotSameInstanceAs(oldMetadata);
     }
 
     @Test
@@ -290,7 +293,7 @@
         List<Tile> outTiles = new ArrayList<>();
         List<ResolveInfo> info = new ArrayList<>();
         ResolveInfo resolveInfo = newInfo(true, null /* category */, null, URI_GET_ICON,
-                URI_GET_SUMMARY, null, 123);
+                URI_GET_SUMMARY, null, 123, PROFILE_ALL);
         resolveInfo.activityInfo.metaData
                 .putBoolean(TileUtils.META_DATA_PREFERENCE_ICON_TINTABLE, true);
         info.add(resolveInfo);
@@ -327,6 +330,26 @@
         assertThat(outTiles).hasSize(2);
     }
 
+    @Test
+    public void loadTilesForAction_isPrimaryProfileOnly_shouldSkipNonPrimaryUserTiles() {
+        Map<Pair<String, String>, Tile> addedCache = new ArrayMap<>();
+        List<Tile> outTiles = new ArrayList<>();
+        List<ResolveInfo> info = new ArrayList<>();
+        ResolveInfo resolveInfo = newInfo(true, null /* category */, null, URI_GET_ICON,
+                URI_GET_SUMMARY, null, 123, PROFILE_PRIMARY);
+        info.add(resolveInfo);
+
+        when(mPackageManager.queryIntentActivitiesAsUser(any(Intent.class), anyInt(), anyInt()))
+                .thenReturn(info);
+        when(mPackageManager.queryIntentContentProvidersAsUser(any(Intent.class), anyInt(),
+                anyInt())).thenReturn(info);
+
+        TileUtils.loadTilesForAction(mContext, new UserHandle(10), IA_SETTINGS_ACTION,
+                addedCache, null /* defaultCategory */, outTiles, false /* requiresSettings */);
+
+        assertThat(outTiles).isEmpty();
+    }
+
     public static ResolveInfo newInfo(boolean systemApp, String category) {
         return newInfo(systemApp, category, null);
     }
@@ -337,14 +360,14 @@
 
     private static ResolveInfo newInfo(boolean systemApp, String category, String keyHint,
             String iconUri, String summaryUri) {
-        return newInfo(systemApp, category, keyHint, iconUri, summaryUri, null, 0);
+        return newInfo(systemApp, category, keyHint, iconUri, summaryUri, null, 0, PROFILE_ALL);
     }
 
     private static ResolveInfo newInfo(boolean systemApp, String category, String keyHint,
-            String iconUri, String summaryUri, String title, int titleResId) {
+            String iconUri, String summaryUri, String title, int titleResId, String profile) {
 
         final Bundle metaData = newMetaData(category, keyHint, iconUri, summaryUri, title,
-                titleResId);
+                titleResId, profile);
         final ResolveInfo info = new ResolveInfo();
         info.system = systemApp;
 
@@ -358,6 +381,7 @@
         info.providerInfo.packageName = "abc";
         info.providerInfo.name = "456";
         info.providerInfo.authority = "auth";
+        info.providerInfo.metaData = metaData;
         ShadowTileUtils.setMetaData(metaData);
         info.providerInfo.applicationInfo = new ApplicationInfo();
 
@@ -369,7 +393,7 @@
     }
 
     private static Bundle newMetaData(String category, String keyHint, String iconUri,
-            String summaryUri, String title, int titleResId) {
+            String summaryUri, String title, int titleResId, String profile) {
         final Bundle metaData = new Bundle();
         metaData.putString("com.android.settings.category", category);
         metaData.putInt(META_DATA_PREFERENCE_ICON, 314159);
@@ -388,6 +412,9 @@
         } else if (title != null) {
             metaData.putString(TileUtils.META_DATA_PREFERENCE_TITLE, title);
         }
+        if (profile != null) {
+            metaData.putString(META_DATA_KEY_PROFILE, profile);
+        }
         return metaData;
     }
 
diff --git a/packages/SettingsProvider/res/values-fa/strings.xml b/packages/SettingsProvider/res/values-fa/strings.xml
index cc0b557..946e2c0 100644
--- a/packages/SettingsProvider/res/values-fa/strings.xml
+++ b/packages/SettingsProvider/res/values-fa/strings.xml
@@ -19,7 +19,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4567566098528588863">"تنظیم محل ذخیره"</string>
+    <string name="app_label" msgid="4567566098528588863">"تنظیم محل فضای ذخیره‌سازی"</string>
     <string name="wifi_softap_config_change" msgid="5688373762357941645">"تنظیمات نقطه اتصال تغییر کرده است"</string>
     <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"برای مشاهده جزئیات ضربه بزنید"</string>
 </resources>
diff --git a/packages/SettingsProvider/src/android/provider/settings/OWNERS b/packages/SettingsProvider/src/android/provider/settings/OWNERS
index 541dd878..0f88811 100644
--- a/packages/SettingsProvider/src/android/provider/settings/OWNERS
+++ b/packages/SettingsProvider/src/android/provider/settings/OWNERS
@@ -1,5 +1,4 @@
-# Please reach out to Android B&R when making Settings backup changes
-alsutton@google.com
-nathch@google.com
-rthakohov@google.com
+# Bug component: 656484
+
+include platform/frameworks/base:/services/backup/OWNERS
 
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
index 1d25b1a..7c198c8 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
@@ -761,8 +761,8 @@
                 Settings.Global.GLOBAL_SETTINGS_ANGLE_GL_DRIVER_SELECTION_VALUES,
                 GlobalSettingsProto.Gpu.ANGLE_GL_DRIVER_SELECTION_VALUES);
         dumpSetting(s, p,
-                Settings.Global.GLOBAL_SETTINGS_ANGLE_WHITELIST,
-                GlobalSettingsProto.Gpu.ANGLE_WHITELIST);
+                Settings.Global.GLOBAL_SETTINGS_ANGLE_ALLOWLIST,
+                GlobalSettingsProto.Gpu.ANGLE_ALLOWLIST);
         dumpSetting(s, p,
                 Settings.Global.GLOBAL_SETTINGS_SHOW_ANGLE_IN_USE_DIALOG_BOX,
                 GlobalSettingsProto.Gpu.SHOW_ANGLE_IN_USE_DIALOG);
@@ -785,14 +785,14 @@
                 Settings.Global.GAME_DRIVER_OPT_OUT_APPS,
                 GlobalSettingsProto.Gpu.GAME_DRIVER_OPT_OUT_APPS);
         dumpSetting(s, p,
-                Settings.Global.GAME_DRIVER_BLACKLIST,
-                GlobalSettingsProto.Gpu.GAME_DRIVER_BLACKLIST);
+                Settings.Global.GAME_DRIVER_DENYLIST,
+                GlobalSettingsProto.Gpu.GAME_DRIVER_DENYLIST);
         dumpSetting(s, p,
-                Settings.Global.GAME_DRIVER_WHITELIST,
-                GlobalSettingsProto.Gpu.GAME_DRIVER_WHITELIST);
+                Settings.Global.GAME_DRIVER_ALLOWLIST,
+                GlobalSettingsProto.Gpu.GAME_DRIVER_ALLOWLIST);
         dumpSetting(s, p,
-                Settings.Global.GAME_DRIVER_BLACKLISTS,
-                GlobalSettingsProto.Gpu.GAME_DRIVER_BLACKLISTS);
+                Settings.Global.GAME_DRIVER_DENYLISTS,
+                GlobalSettingsProto.Gpu.GAME_DRIVER_DENYLISTS);
         dumpSetting(s, p,
                 Settings.Global.GAME_DRIVER_SPHAL_LIBRARIES,
                 GlobalSettingsProto.Gpu.GAME_DRIVER_SPHAL_LIBRARIES);
diff --git a/packages/SettingsProvider/test/src/android/provider/OWNERS b/packages/SettingsProvider/test/src/android/provider/OWNERS
index f3241ea..0f88811 100644
--- a/packages/SettingsProvider/test/src/android/provider/OWNERS
+++ b/packages/SettingsProvider/test/src/android/provider/OWNERS
@@ -1,4 +1,4 @@
-per-file * = *
+# Bug component: 656484
 
-# Please reach out to the Android B&R team for settings backup changes
-per-file SettingsBackupTest.java = alsutton@google.com, nathch@google.com, rthakohov@google.com
+include platform/frameworks/base:/services/backup/OWNERS
+
diff --git a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
index b90b9c1..bc1c3f9 100644
--- a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
+++ b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
@@ -270,7 +270,6 @@
                     Settings.Global.SMART_REPLIES_IN_NOTIFICATIONS_FLAGS,
                     Settings.Global.SMART_SUGGESTIONS_IN_NOTIFICATIONS_FLAGS,
                     Settings.Global.ENABLE_ADB_INCREMENTAL_INSTALL_DEFAULT,
-                    Settings.Global.ENHANCED_CONNECTIVITY_ENABLED,
                     Settings.Global.ENHANCED_4G_MODE_ENABLED,
                     Settings.Global.EPHEMERAL_COOKIE_MAX_SIZE_BYTES,
                     Settings.Global.ERROR_LOGCAT_PREFIX,
@@ -503,14 +502,14 @@
                     Settings.Global.GLOBAL_SETTINGS_ANGLE_GL_DRIVER_ALL_ANGLE,
                     Settings.Global.GLOBAL_SETTINGS_ANGLE_GL_DRIVER_SELECTION_PKGS,
                     Settings.Global.GLOBAL_SETTINGS_ANGLE_GL_DRIVER_SELECTION_VALUES,
-                    Settings.Global.GLOBAL_SETTINGS_ANGLE_WHITELIST,
+                    Settings.Global.GLOBAL_SETTINGS_ANGLE_ALLOWLIST,
                     Settings.Global.GAME_DRIVER_ALL_APPS,
                     Settings.Global.GAME_DRIVER_OPT_IN_APPS,
                     Settings.Global.GAME_DRIVER_PRERELEASE_OPT_IN_APPS,
                     Settings.Global.GAME_DRIVER_OPT_OUT_APPS,
-                    Settings.Global.GAME_DRIVER_BLACKLISTS,
-                    Settings.Global.GAME_DRIVER_BLACKLIST,
-                    Settings.Global.GAME_DRIVER_WHITELIST,
+                    Settings.Global.GAME_DRIVER_DENYLISTS,
+                    Settings.Global.GAME_DRIVER_DENYLIST,
+                    Settings.Global.GAME_DRIVER_ALLOWLIST,
                     Settings.Global.GAME_DRIVER_SPHAL_LIBRARIES,
                     Settings.Global.GLOBAL_SETTINGS_SHOW_ANGLE_IN_USE_DIALOG_BOX,
                     Settings.Global.GPU_DEBUG_LAYER_APP,
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index f5f58ef..fa4da28 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -70,6 +70,7 @@
     <uses-permission android:name="android.permission.SET_PROCESS_LIMIT" />
     <uses-permission android:name="android.permission.SET_ALWAYS_FINISH" />
     <uses-permission android:name="android.permission.DUMP" />
+    <uses-permission android:name="android.permission.CONTROL_UI_TRACING" />
     <uses-permission android:name="android.permission.SIGNAL_PERSISTENT_PROCESSES" />
     <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
     <!-- Internal permissions granted to the shell. -->
@@ -326,6 +327,9 @@
     <!-- Permission needed for CTS test - DisplayTest -->
     <uses-permission android:name="android.permission.OVERRIDE_DISPLAY_MODE_REQUESTS" />
 
+    <!-- Permission needed for CTS test - TimeManagerTest -->
+    <uses-permission android:name="android.permission.MANAGE_TIME_AND_ZONE_DETECTION" />
+
     <application android:label="@string/app_label"
                 android:theme="@android:style/Theme.DeviceDefault.DayNight"
                 android:defaultToDeviceProtectedStorage="true"
diff --git a/packages/Shell/TEST_MAPPING b/packages/Shell/TEST_MAPPING
new file mode 100644
index 0000000..a149b5c
--- /dev/null
+++ b/packages/Shell/TEST_MAPPING
@@ -0,0 +1,31 @@
+{
+  "presubmit": [
+    {
+      "name": "CtsBugreportTestCases",
+      "options": [
+        {
+          "exclude-annotation": "androidx.test.filters.LargeTest"
+        }
+      ]
+    },
+    {
+      "name": "ShellTests",
+      "options": [
+        {
+          "exclude-annotation": "androidx.test.filters.LargeTest"
+        },
+        {
+          "exclude-annotation": "androidx.test.filters.FlakyTest"
+        }
+      ]
+    }
+  ],
+  "postsubmit": [
+    {
+      "name": "CtsBugreportTestCases"
+    },
+    {
+      "name": "ShellTests"
+    }
+  ]
+}
diff --git a/packages/Shell/res/values-it/strings.xml b/packages/Shell/res/values-it/strings.xml
index 18ab908..02531f2 100644
--- a/packages/Shell/res/values-it/strings.xml
+++ b/packages/Shell/res/values-it/strings.xml
@@ -21,7 +21,7 @@
     <string name="bugreport_in_progress_title" msgid="4311705936714972757">"Generazione segnalazione di bug <xliff:g id="ID">#%d</xliff:g> in corso"</string>
     <string name="bugreport_finished_title" msgid="4429132808670114081">"Segnalazione di bug <xliff:g id="ID">#%d</xliff:g> acquisita"</string>
     <string name="bugreport_updating_title" msgid="4423539949559634214">"Aggiunta di dettagli alla segnalazione di bug"</string>
-    <string name="bugreport_updating_wait" msgid="3322151947853929470">"Attendi..."</string>
+    <string name="bugreport_updating_wait" msgid="3322151947853929470">"Attendi…"</string>
     <string name="bugreport_finished_text" product="watch" msgid="1223616207145252689">"La segnalazione di bug comparirà a breve sul telefono"</string>
     <string name="bugreport_finished_text" product="tv" msgid="5758325479058638893">"Seleziona per condividere la segnalazione di bug"</string>
     <string name="bugreport_finished_text" product="default" msgid="8353769438382138847">"Tocca per condividere la segnalazione di bug"</string>
diff --git a/packages/Shell/res/values-ky/strings.xml b/packages/Shell/res/values-ky/strings.xml
index 969e9ed..3567ac2 100644
--- a/packages/Shell/res/values-ky/strings.xml
+++ b/packages/Shell/res/values-ky/strings.xml
@@ -29,7 +29,7 @@
     <string name="bugreport_finished_pending_screenshot_text" product="watch" msgid="1474435374470177193">"Мүчүлүштүк тууралуу билдирүүңүздү скриншотсуз бөлүшүү үчүн таптап коюңуз же скриншот даяр болгуча күтө туруңуз"</string>
     <string name="bugreport_finished_pending_screenshot_text" product="default" msgid="1474435374470177193">"Мүчүлүштүк тууралуу билдирүүңүздү скриншотсуз бөлүшүү үчүн таптап коюңуз же скриншот даяр болгуча күтө туруңуз"</string>
     <string name="bugreport_confirm" msgid="5917407234515812495">"Мүчүлүштүктөр тууралуу билдирүүлөрдө тутумдун ар кандай таржымалдарынан алынган дайындар, ошондой эле купуя маалымат камтылышы мүмкүн (мисалы, жайгашкан жер сыяктуу). Мындай билдирүүлөрдү бир гана ишеничтүү адамдар жана колдонмолор менен бөлүшүңүз."</string>
-    <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Экинчи көрсөтүлбөсүн"</string>
+    <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Экинчи көрүнбөсүн"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Мүчүлүштүктөрдү кабарлоо"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Мүчүлүштүк тууралуу кабарлаган файл окулбай койду"</string>
     <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Мүчүлүштүктөр жөнүндө кабардын чоо-жайы zip файлына кошулбай койду"</string>
diff --git a/packages/Shell/src/com/android/shell/BugreportProgressService.java b/packages/Shell/src/com/android/shell/BugreportProgressService.java
index f6c2ee2..02815a57 100644
--- a/packages/Shell/src/com/android/shell/BugreportProgressService.java
+++ b/packages/Shell/src/com/android/shell/BugreportProgressService.java
@@ -503,14 +503,14 @@
             }
 
             if (msg.what != MSG_SERVICE_COMMAND) {
-                // Sanity check.
+                // Confidence check.
                 Log.e(TAG, "Invalid message type: " + msg.what);
                 return;
             }
 
             // At this point it's handling onStartCommand(), with the intent passed as an Extra.
             if (!(msg.obj instanceof Intent)) {
-                // Sanity check.
+                // Confidence check.
                 Log.wtf(TAG, "handleMessage(): invalid msg.obj type: " + msg.obj);
                 return;
             }
diff --git a/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java b/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java
index b95092a..b8cfa1e 100644
--- a/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java
+++ b/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java
@@ -561,7 +561,7 @@
             // Clear properties
             mContext.getSharedPreferences(PREFS_BUGREPORT, Context.MODE_PRIVATE)
                     .edit().clear().commit();
-            // Sanity check...
+            // Confidence check...
             assertEquals("Did not reset properties", STATE_UNKNOWN,
                     getWarningState(mContext, STATE_UNKNOWN));
         } else {
diff --git a/packages/SimAppDialog/res/values-ky/strings.xml b/packages/SimAppDialog/res/values-ky/strings.xml
index 32db421..54cbb5b 100644
--- a/packages/SimAppDialog/res/values-ky/strings.xml
+++ b/packages/SimAppDialog/res/values-ky/strings.xml
@@ -19,7 +19,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="8898068901680117589">"SIM-картанын колдонмосунун диалогу"</string>
     <string name="install_carrier_app_title" msgid="334729104862562585">"Мобилдик кызматты жандыруу"</string>
-    <string name="install_carrier_app_description" msgid="4014303558674923797">"Жаңы SIM-картаңыз талаптагыдай иштеши үчүн, <xliff:g id="ID_1">%1$s</xliff:g> колдонмосун орнотуп алышыңыз керек"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Жаңы SIM картаңыз талаптагыдай иштеши үчүн, <xliff:g id="ID_1">%1$s</xliff:g> колдонмосун орнотуп алышыңыз керек"</string>
     <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Жаңы SIM картаңыз талаптагыдай иштеши үчүн, байланыш операторунун колдонмосун орнотуп алышыңыз керек"</string>
     <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Азыр эмес"</string>
     <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Колдонмону жүктөп алуу"</string>
diff --git a/packages/SoundPicker/src/com/android/soundpicker/RingtonePickerActivity.java b/packages/SoundPicker/src/com/android/soundpicker/RingtonePickerActivity.java
index 2857308..504e18a 100644
--- a/packages/SoundPicker/src/com/android/soundpicker/RingtonePickerActivity.java
+++ b/packages/SoundPicker/src/com/android/soundpicker/RingtonePickerActivity.java
@@ -333,6 +333,9 @@
 
     @Override
     public void onDestroy() {
+        if (mHandler != null) {
+            mHandler.removeCallbacksAndMessages(null);
+        }
         if (mCursor != null) {
             mCursor.close();
             mCursor = null;
diff --git a/packages/SystemUI/OWNERS b/packages/SystemUI/OWNERS
index 17d2f9c..f884270 100644
--- a/packages/SystemUI/OWNERS
+++ b/packages/SystemUI/OWNERS
@@ -2,8 +2,11 @@
 
 dsandler@android.com
 
+aaliomer@google.com
 adamcohen@google.com
+alexflo@google.com
 asc@google.com
+awickham@google.com
 beverlyt@google.com
 brockman@google.com
 cinek@google.com
@@ -11,11 +14,16 @@
 dupin@google.com
 ethibodeau@google.com
 evanlaird@google.com
+gwasserman@google.com
 hwwang@google.com
 hyunyoungs@google.com
 jaggies@google.com
+jamesoleary@google.com
+jeffdq@google.com
 jjaggi@google.com
+jonmiranda@google.com
 joshmcgrath@google.com
+joshtrask@google.com
 juliacr@google.com
 juliatuttle@google.com
 kchyn@google.com
@@ -24,28 +32,38 @@
 lynhan@google.com
 madym@google.com
 mankoff@google.com
+mett@google.com
+mkephart@google.com
+mpietal@google.com
 mrcasey@google.com
 mrenouf@google.com
 nbenbernou@google.com
 nesciosquid@google.com
 ogunwale@google.com
 peanutbutter@google.com
+pinyaoting@google.com
 pixel@google.com
 roosa@google.com
+santie@google.com
 snoeberger@google.com
+sreyasr@google.com
 steell@google.com
+sfufa@google.com
 stwu@google.com
 sunnygoyal@google.com
 susikp@google.com
+thiruram@google.com
 tracyzhou@google.com
 tsuji@google.com
 twickham@google.com
+vadimt@google.com
+victortulias@google.com
 winsonc@google.com
+xuqiu@google.com
 zakcohen@google.com
 
 #Android Auto
 hseog@google.com
 
 #Android TV
-rgl@google.com
-
+rgl@google.com
\ No newline at end of file
diff --git a/packages/SystemUI/res-keyguard/values-ar/strings.xml b/packages/SystemUI/res-keyguard/values-ar/strings.xml
index 6d86a78..65e3f0d 100644
--- a/packages/SystemUI/res-keyguard/values-ar/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ar/strings.xml
@@ -112,7 +112,7 @@
     <string name="kg_pin_accepted" msgid="1625501841604389716">"تم قبول الرمز"</string>
     <string name="keyguard_carrier_default" msgid="6359808469637388586">"لا تتوفر خدمة."</string>
     <string name="accessibility_ime_switch_button" msgid="9082358310194861329">"تبديل أسلوب الإدخال"</string>
-    <string name="airplane_mode" msgid="2528005343938497866">"وضع الطائرة"</string>
+    <string name="airplane_mode" msgid="2528005343938497866">"وضع الطيران"</string>
     <string name="kg_prompt_reason_restart_pattern" msgid="4720554342633852066">"يجب رسم النقش بعد إعادة تشغيل الجهاز"</string>
     <string name="kg_prompt_reason_restart_pin" msgid="1587671566498057656">"يجب إدخال رقم التعريف الشخصي بعد إعادة تشغيل الجهاز"</string>
     <string name="kg_prompt_reason_restart_password" msgid="8061279087240952002">"يجب إدخال كلمة المرور بعد إعادة تشغيل الجهاز"</string>
diff --git a/packages/SystemUI/res-keyguard/values-az/strings.xml b/packages/SystemUI/res-keyguard/values-az/strings.xml
index d63c23f..ea07c3d 100644
--- a/packages/SystemUI/res-keyguard/values-az/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-az/strings.xml
@@ -33,7 +33,7 @@
     <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Şifrənizi daxil edin"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="3514267777289393046">"Yanlış PIN kod."</string>
     <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"Yanlış Kart."</string>
-    <string name="keyguard_charged" msgid="5478247181205188995">"Enerji yığdı"</string>
+    <string name="keyguard_charged" msgid="5478247181205188995">"Enerji yığılıb"</string>
     <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Simsiz şəkildə batareya yığır"</string>
     <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Enerji yığır"</string>
     <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Sürətlə enerji yığır"</string>
diff --git a/packages/SystemUI/res-keyguard/values-es/strings.xml b/packages/SystemUI/res-keyguard/values-es/strings.xml
index ce323c7..0754681 100644
--- a/packages/SystemUI/res-keyguard/values-es/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-es/strings.xml
@@ -33,7 +33,7 @@
     <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Introduce tu contraseña"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="3514267777289393046">"El código PIN es incorrecto."</string>
     <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"Tarjeta no válida."</string>
-    <string name="keyguard_charged" msgid="5478247181205188995">"Cargada"</string>
+    <string name="keyguard_charged" msgid="5478247181205188995">"Cargado"</string>
     <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando sin cables"</string>
     <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando"</string>
     <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando rápidamente"</string>
diff --git a/packages/SystemUI/res-keyguard/values-gl/strings.xml b/packages/SystemUI/res-keyguard/values-gl/strings.xml
index 420649e..4607981 100644
--- a/packages/SystemUI/res-keyguard/values-gl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-gl/strings.xml
@@ -33,7 +33,7 @@
     <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Introduce o contrasinal"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="3514267777289393046">"Código PIN incorrecto"</string>
     <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"A tarxeta non é válida."</string>
-    <string name="keyguard_charged" msgid="5478247181205188995">"Cargada"</string>
+    <string name="keyguard_charged" msgid="5478247181205188995">"Cargado"</string>
     <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando sen fíos"</string>
     <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando"</string>
     <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando rapidamente"</string>
diff --git a/packages/SystemUI/res-keyguard/values-in/strings.xml b/packages/SystemUI/res-keyguard/values-in/strings.xml
index 875d8d5..85b2a47 100644
--- a/packages/SystemUI/res-keyguard/values-in/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-in/strings.xml
@@ -33,7 +33,7 @@
     <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Masukkan sandi"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="3514267777289393046">"Kode PIN salah."</string>
     <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"Kartu Tidak Valid"</string>
-    <string name="keyguard_charged" msgid="5478247181205188995">"Terisi"</string>
+    <string name="keyguard_charged" msgid="5478247181205188995">"Terisi penuh"</string>
     <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengisi daya secara nirkabel"</string>
     <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengisi daya"</string>
     <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengisi daya dengan cepat"</string>
diff --git a/packages/SystemUI/res-keyguard/values-it/strings.xml b/packages/SystemUI/res-keyguard/values-it/strings.xml
index 16767d1..e1c9ee8 100644
--- a/packages/SystemUI/res-keyguard/values-it/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-it/strings.xml
@@ -48,7 +48,7 @@
     <string name="keyguard_permanent_disabled_sim_instructions" msgid="2490584154727897806">"La scheda SIM è stata disattivata definitivamente.\n Contatta il fornitore del tuo servizio wireless per ricevere un\'altra scheda SIM."</string>
     <string name="keyguard_sim_locked_message" msgid="4343544458476911044">"La SIM è bloccata."</string>
     <string name="keyguard_sim_puk_locked_message" msgid="6253830777745450550">"La SIM è bloccata tramite PUK."</string>
-    <string name="keyguard_sim_unlock_progress_dialog_message" msgid="2394023844117630429">"Sblocco SIM..."</string>
+    <string name="keyguard_sim_unlock_progress_dialog_message" msgid="2394023844117630429">"Sblocco SIM…"</string>
     <string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Area PIN"</string>
     <string name="keyguard_accessibility_password" msgid="3524161948484801450">"Password del dispositivo"</string>
     <string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Area PIN SIM"</string>
@@ -77,7 +77,7 @@
     <string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"La SIM \"<xliff:g id="CARRIER">%1$s</xliff:g>\" non è attiva al momento. Inserisci il codice PUK per continuare. Contatta l\'operatore per avere informazioni dettagliate."</string>
     <string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Inserisci il codice PIN desiderato"</string>
     <string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Conferma il codice PIN desiderato"</string>
-    <string name="kg_sim_unlock_progress_dialog_message" msgid="4251352015304070326">"Sblocco SIM..."</string>
+    <string name="kg_sim_unlock_progress_dialog_message" msgid="4251352015304070326">"Sblocco SIM…"</string>
     <string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Il PIN deve essere di 4-8 numeri."</string>
     <string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"Il codice PUK dovrebbe avere almeno otto numeri."</string>
     <string name="kg_invalid_puk" msgid="1774337070084931186">"Inserisci di nuovo il codice PUK corretto. Ripetuti tentativi comportano la disattivazione definitiva della scheda SIM."</string>
diff --git a/packages/SystemUI/res-keyguard/values-kk/strings.xml b/packages/SystemUI/res-keyguard/values-kk/strings.xml
index 96972a7..62afd1e 100644
--- a/packages/SystemUI/res-keyguard/values-kk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-kk/strings.xml
@@ -70,7 +70,7 @@
     <string name="kg_pattern_instructions" msgid="5376036737065051736">"Өрнекті енгізіңіз"</string>
     <string name="kg_sim_pin_instructions" msgid="1942424305184242951">"SIM PIN кодын енгізіңіз."</string>
     <string name="kg_sim_pin_instructions_multi" msgid="3639863309953109649">"\"<xliff:g id="CARRIER">%1$s</xliff:g>\" үшін SIM PIN кодын енгізіңіз."</string>
-    <string name="kg_sim_lock_esim_instructions" msgid="5577169988158738030">"<xliff:g id="PREVIOUS_MSG">%1$s</xliff:g> Құрылығыны мобильдік байланыс қызметінсіз пайдалану үшін eSIM картасын өшіріңіз."</string>
+    <string name="kg_sim_lock_esim_instructions" msgid="5577169988158738030">"<xliff:g id="PREVIOUS_MSG">%1$s</xliff:g> Құрылғыны мобильдік байланыс қызметінсіз пайдалану үшін eSIM картасын өшіріңіз."</string>
     <string name="kg_pin_instructions" msgid="822353548385014361">"PIN кодын енгізіңіз"</string>
     <string name="kg_password_instructions" msgid="324455062831719903">"Кілтсөзді енгізіңіз"</string>
     <string name="kg_puk_enter_puk_hint" msgid="3005288372875367017">"SIM картасы өшірілді. Жалғастыру үшін PUK кодын енгізіңіз. Толығырақ ақпаратты оператордан алыңыз."</string>
diff --git a/packages/SystemUI/res-keyguard/values-km/strings.xml b/packages/SystemUI/res-keyguard/values-km/strings.xml
index 24b5c23..52b7fab 100644
--- a/packages/SystemUI/res-keyguard/values-km/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-km/strings.xml
@@ -100,7 +100,7 @@
     <string name="kg_pin_accepted" msgid="1625501841604389716">"កូដត្រូវ​បានទទួល​យក!"</string>
     <string name="keyguard_carrier_default" msgid="6359808469637388586">"គ្មាន​សេវា​ទេ។"</string>
     <string name="accessibility_ime_switch_button" msgid="9082358310194861329">"ប្ដូរ​វិធី​បញ្ចូល"</string>
-    <string name="airplane_mode" msgid="2528005343938497866">"មុខងារ​ពេល​ជិះ​យន្តហោះ"</string>
+    <string name="airplane_mode" msgid="2528005343938497866">"​ពេល​ជិះ​យន្តហោះ"</string>
     <string name="kg_prompt_reason_restart_pattern" msgid="4720554342633852066">"តម្រូវឲ្យប្រើលំនាំ បន្ទាប់ពីឧបករណ៍ចាប់ផ្តើមឡើងវិញ"</string>
     <string name="kg_prompt_reason_restart_pin" msgid="1587671566498057656">"តម្រូវឲ្យបញ្ចូលកូដ PIN បន្ទាប់ពីឧបករណ៍ចាប់ផ្តើមឡើងវិញ"</string>
     <string name="kg_prompt_reason_restart_password" msgid="8061279087240952002">"តម្រូវឲ្យបញ្ចូលពាក្យសម្ងាត់ បន្ទាប់ពីឧបករណ៍ចាប់ផ្តើមឡើងវិញ"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ko/strings.xml b/packages/SystemUI/res-keyguard/values-ko/strings.xml
index 6ae5935..848490e 100644
--- a/packages/SystemUI/res-keyguard/values-ko/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ko/strings.xml
@@ -62,7 +62,7 @@
     <string name="kg_forgot_pattern_button_text" msgid="3304688032024541260">"패턴을 잊음"</string>
     <string name="kg_wrong_pattern" msgid="5907301342430102842">"잘못된 패턴"</string>
     <string name="kg_wrong_password" msgid="4143127991071670512">"잘못된 비밀번호"</string>
-    <string name="kg_wrong_pin" msgid="4160978845968732624">"잘못된 PIN"</string>
+    <string name="kg_wrong_pin" msgid="4160978845968732624">"PIN 오류"</string>
     <plurals name="kg_too_many_failed_attempts_countdown" formatted="false" msgid="991400408675793914">
       <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g>초 후에 다시 시도하세요.</item>
       <item quantity="one">1초 후에 다시 시도하세요.</item>
diff --git a/packages/SystemUI/res-keyguard/values-ky/strings.xml b/packages/SystemUI/res-keyguard/values-ky/strings.xml
index 9675cc9..d868788 100644
--- a/packages/SystemUI/res-keyguard/values-ky/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ky/strings.xml
@@ -45,7 +45,7 @@
     <string name="keyguard_missing_sim_instructions" msgid="1162120926141335918">"SIM-карта салыңыз."</string>
     <string name="keyguard_missing_sim_instructions_long" msgid="2712623293749378570">"SIM-карта жок же ал окулбай калган. SIM-карта салыңыз."</string>
     <string name="keyguard_permanent_disabled_sim_message_short" msgid="5842745213110966962">"Жараксыз SIM-карта."</string>
-    <string name="keyguard_permanent_disabled_sim_instructions" msgid="2490584154727897806">"SIM-картаңыз биротоло өчүрүлдү.\n Башка SIM-карта алыш үчүн зымсыз кызмат көрсөтүүчүгө кайрылыңыз."</string>
+    <string name="keyguard_permanent_disabled_sim_instructions" msgid="2490584154727897806">"SIM картаңыз биротоло өчүрүлдү.\n Башка SIM-карта алыш үчүн зымсыз кызмат көрсөтүүчүгө кайрылыңыз."</string>
     <string name="keyguard_sim_locked_message" msgid="4343544458476911044">"SIM-карта кулпуланган."</string>
     <string name="keyguard_sim_puk_locked_message" msgid="6253830777745450550">"SIM-карта PUK-код менен кулпуланган."</string>
     <string name="keyguard_sim_unlock_progress_dialog_message" msgid="2394023844117630429">"SIM-карта бөгөттөн чыгарылууда…"</string>
@@ -80,7 +80,7 @@
     <string name="kg_sim_unlock_progress_dialog_message" msgid="4251352015304070326">"SIM-карта бөгөттөн чыгарылууда…"</string>
     <string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"4–8 сандан турган PIN-кодду териңиз."</string>
     <string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK-код 8 же андан көп сандан турушу керек."</string>
-    <string name="kg_invalid_puk" msgid="1774337070084931186">"PUK-кодду кайрадан туура киргизиңиз. Кайталанган аракеттер SIM-картаны биротоло жараксыз кылат."</string>
+    <string name="kg_invalid_puk" msgid="1774337070084931186">"PUK-кодду кайрадан туура киргизиңиз. Кайталанган аракеттер SIM картаны биротоло жараксыз кылат."</string>
     <string name="kg_login_too_many_attempts" msgid="4519957179182578690">"Өтө көп графикалык ачкычты тартуу аракети болду"</string>
     <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"PIN-кодуңузду <xliff:g id="NUMBER_0">%1$d</xliff:g> жолу туура эмес тердиңиз. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> секунддан кийин дагы аракет кылып көрүңүз."</string>
     <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="190984061975729494">"Сырсөзүңүздү <xliff:g id="NUMBER_0">%1$d</xliff:g> жолу туура эмес тердиңиз. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> секунддан кийин дагы аракет кылып көрүңүз."</string>
@@ -98,7 +98,7 @@
     <string name="kg_password_pin_failed" msgid="5136259126330604009">"SIM-картанын PIN-кодун ачуу кыйрады!"</string>
     <string name="kg_password_puk_failed" msgid="6778867411556937118">"SIM-картанын PUK-кодун ачуу кыйрады!"</string>
     <string name="kg_pin_accepted" msgid="1625501841604389716">"Код кабыл алынды!"</string>
-    <string name="keyguard_carrier_default" msgid="6359808469637388586">"Байланыш жок."</string>
+    <string name="keyguard_carrier_default" msgid="6359808469637388586">"Интернет жок."</string>
     <string name="accessibility_ime_switch_button" msgid="9082358310194861329">"Киргизүү ыкмасын өзгөртүү"</string>
     <string name="airplane_mode" msgid="2528005343938497866">"Учак режими"</string>
     <string name="kg_prompt_reason_restart_pattern" msgid="4720554342633852066">"Түзмөк кайра күйгүзүлгөндөн кийин графикалык ачкычты тартуу талап кылынат"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ne/strings.xml b/packages/SystemUI/res-keyguard/values-ne/strings.xml
index 0cec32e..ce05e38 100644
--- a/packages/SystemUI/res-keyguard/values-ne/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ne/strings.xml
@@ -60,7 +60,7 @@
     <string name="error_disable_esim_msg" msgid="2441188596467999327">"कुनै त्रुटिका कारण यो eSIM लाई असक्षम पार्न सकिएन।"</string>
     <string name="keyboardview_keycode_enter" msgid="6727192265631761174">"प्रविष्टि गर्नुहोस्"</string>
     <string name="kg_forgot_pattern_button_text" msgid="3304688032024541260">"ढाँचा बिर्सनुभयो"</string>
-    <string name="kg_wrong_pattern" msgid="5907301342430102842">"गलत ढाँचा"</string>
+    <string name="kg_wrong_pattern" msgid="5907301342430102842">"प्याटर्न मिलेन"</string>
     <string name="kg_wrong_password" msgid="4143127991071670512">"गलत पासवर्ड"</string>
     <string name="kg_wrong_pin" msgid="4160978845968732624">"गलत PIN"</string>
     <plurals name="kg_too_many_failed_attempts_countdown" formatted="false" msgid="991400408675793914">
diff --git a/packages/SystemUI/res-keyguard/values-pl/strings.xml b/packages/SystemUI/res-keyguard/values-pl/strings.xml
index 9b6f857..5094cf9 100644
--- a/packages/SystemUI/res-keyguard/values-pl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pl/strings.xml
@@ -54,7 +54,7 @@
     <string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Miejsce na kod PIN karty SIM"</string>
     <string name="keyguard_accessibility_sim_puk_area" msgid="5537294043180237374">"Miejsce na kod PUK karty SIM"</string>
     <string name="keyguard_accessibility_next_alarm" msgid="4492876946798984630">"Następny alarm ustawiony na: <xliff:g id="ALARM">%1$s</xliff:g>"</string>
-    <string name="keyboardview_keycode_delete" msgid="8489719929424895174">"Usuwanie"</string>
+    <string name="keyboardview_keycode_delete" msgid="8489719929424895174">"Usuń"</string>
     <string name="disable_carrier_button_text" msgid="7153361131709275746">"Wyłącz eSIM"</string>
     <string name="error_disable_esim_title" msgid="3802652622784813119">"Nie można wyłączyć karty eSIM"</string>
     <string name="error_disable_esim_msg" msgid="2441188596467999327">"Nie można wyłączyć karty eSIM z powodu błędu."</string>
diff --git a/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml b/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml
index cc0c044..5bfc3db 100644
--- a/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml
@@ -33,7 +33,7 @@
     <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Digite sua senha"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="3514267777289393046">"Código PIN incorreto."</string>
     <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"Cartão inválido."</string>
-    <string name="keyguard_charged" msgid="5478247181205188995">"Carregada"</string>
+    <string name="keyguard_charged" msgid="5478247181205188995">"Carregado"</string>
     <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando sem fio"</string>
     <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando"</string>
     <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando rapidamente"</string>
diff --git a/packages/SystemUI/res-keyguard/values-pt/strings.xml b/packages/SystemUI/res-keyguard/values-pt/strings.xml
index cc0c044..5bfc3db 100644
--- a/packages/SystemUI/res-keyguard/values-pt/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pt/strings.xml
@@ -33,7 +33,7 @@
     <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Digite sua senha"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="3514267777289393046">"Código PIN incorreto."</string>
     <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"Cartão inválido."</string>
-    <string name="keyguard_charged" msgid="5478247181205188995">"Carregada"</string>
+    <string name="keyguard_charged" msgid="5478247181205188995">"Carregado"</string>
     <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando sem fio"</string>
     <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando"</string>
     <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando rapidamente"</string>
diff --git a/packages/SystemUI/res-keyguard/values-sl/strings.xml b/packages/SystemUI/res-keyguard/values-sl/strings.xml
index a141ed7..967255c 100644
--- a/packages/SystemUI/res-keyguard/values-sl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sl/strings.xml
@@ -33,7 +33,7 @@
     <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Vnesite geslo"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="3514267777289393046">"Napačna koda PIN."</string>
     <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"Neveljavna kartica"</string>
-    <string name="keyguard_charged" msgid="5478247181205188995">"Akumulator napolnjen"</string>
+    <string name="keyguard_charged" msgid="5478247181205188995">"Baterija napolnjena"</string>
     <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • brezžično polnjenje"</string>
     <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • polnjenje"</string>
     <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • hitro polnjenje"</string>
diff --git a/packages/SystemUI/res-keyguard/values-sq/strings.xml b/packages/SystemUI/res-keyguard/values-sq/strings.xml
index 1d34e3f..382a4dc 100644
--- a/packages/SystemUI/res-keyguard/values-sq/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sq/strings.xml
@@ -33,7 +33,7 @@
     <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Fut fjalëkalimin"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="3514267777289393046">"Kodi PIN është i pasaktë."</string>
     <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"Karta e pavlefshme."</string>
-    <string name="keyguard_charged" msgid="5478247181205188995">"I ngarkuar"</string>
+    <string name="keyguard_charged" msgid="5478247181205188995">"I karikuar"</string>
     <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po karikohet me valë"</string>
     <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po karikohet"</string>
     <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po karikohet me shpejtësi"</string>
diff --git a/packages/SystemUI/res-keyguard/values-te/strings.xml b/packages/SystemUI/res-keyguard/values-te/strings.xml
index 74386bc..d44003b 100644
--- a/packages/SystemUI/res-keyguard/values-te/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-te/strings.xml
@@ -134,7 +134,7 @@
       <item quantity="other">SIM ఇప్పుడు నిలిపివేయబడింది. PUK కోడ్‌ను నమోదు చేయండి. SIM శాశ్వతంగా నిరుపయోగం కాకుండా ఉండటానికి మీకు <xliff:g id="_NUMBER_1">%d</xliff:g> ప్రయత్నాలు మిగిలి ఉన్నాయి. వివరాల కోసం కారియర్‌ను సంప్రదించండి.</item>
       <item quantity="one">SIM ఇప్పుడు నిలిపివేయబడింది. PUK కోడ్‌ను నమోదు చేయండి. SIM శాశ్వతంగా నిరుపయోగం కాకుండా ఉండటానికి మీకు <xliff:g id="_NUMBER_0">%d</xliff:g> ప్రయత్నం మిగిలి ఉంది వివరాల కోసం కారియర్‌ను సంప్రదించండి.</item>
     </plurals>
-    <string name="clock_title_default" msgid="6342735240617459864">"డిఫాల్ట్"</string>
+    <string name="clock_title_default" msgid="6342735240617459864">"ఆటోమేటిక్"</string>
     <string name="clock_title_bubble" msgid="2204559396790593213">"బబుల్"</string>
     <string name="clock_title_analog" msgid="8409262532900918273">"ఎనలాగ్"</string>
 </resources>
diff --git a/packages/SystemUI/res-keyguard/values-th/strings.xml b/packages/SystemUI/res-keyguard/values-th/strings.xml
index aa9e693..e157be4 100644
--- a/packages/SystemUI/res-keyguard/values-th/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-th/strings.xml
@@ -135,6 +135,6 @@
       <item quantity="one">ซิมถูกปิดใช้งานในขณะนี้ โปรดป้อนรหัส PUK เพื่อทำต่อ คุณพยายามได้อีก <xliff:g id="_NUMBER_0">%d</xliff:g> ครั้งก่อนที่ซิมจะไม่สามารถใช้งานได้อย่างถาวร โปรดติดต่อสอบถามรายละเอียดจากผู้ให้บริการ</item>
     </plurals>
     <string name="clock_title_default" msgid="6342735240617459864">"ค่าเริ่มต้น"</string>
-    <string name="clock_title_bubble" msgid="2204559396790593213">"ลูกโป่ง"</string>
+    <string name="clock_title_bubble" msgid="2204559396790593213">"บับเบิล"</string>
     <string name="clock_title_analog" msgid="8409262532900918273">"แอนะล็อก"</string>
 </resources>
diff --git a/packages/SystemUI/res-keyguard/values-ur/strings.xml b/packages/SystemUI/res-keyguard/values-ur/strings.xml
index 7b946aa..0fd5e17 100644
--- a/packages/SystemUI/res-keyguard/values-ur/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ur/strings.xml
@@ -71,7 +71,7 @@
     <string name="kg_sim_pin_instructions" msgid="1942424305184242951">"‏SIM PIN درج کریں۔"</string>
     <string name="kg_sim_pin_instructions_multi" msgid="3639863309953109649">"‏\"<xliff:g id="CARRIER">%1$s</xliff:g>\" کیلئے SIM PIN درج کریں۔"</string>
     <string name="kg_sim_lock_esim_instructions" msgid="5577169988158738030">"‏<xliff:g id="PREVIOUS_MSG">%1$s</xliff:g> موبائل سروس کے بغیر آلہ کا استعمال کرنے کیلئے eSIM غیر فعال کریں۔"</string>
-    <string name="kg_pin_instructions" msgid="822353548385014361">"‏PIN درج کریں"</string>
+    <string name="kg_pin_instructions" msgid="822353548385014361">"‏‫PIN درج کریں"</string>
     <string name="kg_password_instructions" msgid="324455062831719903">"پاسورڈ درج کریں"</string>
     <string name="kg_puk_enter_puk_hint" msgid="3005288372875367017">"‏SIM اب غیر فعال ہوگیا ہے۔ جاری رکھنے کیلئے PUK کوڈ درج کریں۔ تفصیلات کیلئے کیریئر سے رابطہ کریں۔"</string>
     <string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"‏SIM \"<xliff:g id="CARRIER">%1$s</xliff:g>\" اب غیر فعال ہے۔ جاری رکھنے کیلئے PUK کوڈ درج کریں۔ تفصیلات کیلئے کیریئر سے رابطہ کریں۔"</string>
diff --git a/packages/SystemUI/res-keyguard/values-uz/strings.xml b/packages/SystemUI/res-keyguard/values-uz/strings.xml
index a6c2aa0..323fea5 100644
--- a/packages/SystemUI/res-keyguard/values-uz/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-uz/strings.xml
@@ -33,7 +33,7 @@
     <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Parolni kiriting"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="3514267777289393046">"PIN kodi xato."</string>
     <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"SIM karta yaroqsiz."</string>
-    <string name="keyguard_charged" msgid="5478247181205188995">"Batareya quvvati to‘ldi"</string>
+    <string name="keyguard_charged" msgid="5478247181205188995">"Quvvat oldi"</string>
     <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Simsiz quvvatlanyapti"</string>
     <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Quvvat olmoqda"</string>
     <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Tezkor quvvat olmoqda"</string>
diff --git a/packages/SystemUI/res-keyguard/values-vi/strings.xml b/packages/SystemUI/res-keyguard/values-vi/strings.xml
index 31737fc..2ba5089 100644
--- a/packages/SystemUI/res-keyguard/values-vi/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-vi/strings.xml
@@ -60,7 +60,7 @@
     <string name="error_disable_esim_msg" msgid="2441188596467999327">"Không thể tắt eSIM do lỗi."</string>
     <string name="keyboardview_keycode_enter" msgid="6727192265631761174">"Nhập"</string>
     <string name="kg_forgot_pattern_button_text" msgid="3304688032024541260">"Đã quên hình mở khóa"</string>
-    <string name="kg_wrong_pattern" msgid="5907301342430102842">"Hình không chính xác"</string>
+    <string name="kg_wrong_pattern" msgid="5907301342430102842">"Hình mở khóa không chính xác"</string>
     <string name="kg_wrong_password" msgid="4143127991071670512">"Mật khẩu sai"</string>
     <string name="kg_wrong_pin" msgid="4160978845968732624">"Mã PIN sai"</string>
     <plurals name="kg_too_many_failed_attempts_countdown" formatted="false" msgid="991400408675793914">
diff --git a/packages/SystemUI/res/drawable/ic_reverse_charging.xml b/packages/SystemUI/res/drawable/ic_reverse_charging.xml
new file mode 100644
index 0000000..2268d86
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_reverse_charging.xml
@@ -0,0 +1,24 @@
+<!--
+  ~ Copyright (C) 2020 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:fillColor="?attr/chargingAnimColor"
+        android:pathData="M18,16.5v4.17C18,21.4,17.4,22,16.66,22H7.33C6.6,22,6,21.4,6,20.67V15V5.33C6,4.6,6.6,4,7.33,4H9.5V2h5v2h2.17 C17.4,4,18,4.6,18,5.33V7.5h-2V6H8v9v5h8v-3.5H18z M13,15.5h-2V14c0-1.65,1.35-3,3-3h4V9l3,3l-3,3v-2h-4c-0.55,0-1,0.45-1,1V15.5z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/rounded_corner_bottom.xml b/packages/SystemUI/res/drawable/rounded_corner_bottom.xml
new file mode 100644
index 0000000..ef1a82f
--- /dev/null
+++ b/packages/SystemUI/res/drawable/rounded_corner_bottom.xml
@@ -0,0 +1,16 @@
+<!--
+    Copyright (C) 2020 The Android Open Source Project
+
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<!-- Overlay this resource to change rounded_corners_bottom -->
+<inset xmlns:android="http://schemas.android.com/apk/res/android"
+    android:drawable="@drawable/rounded"/>
diff --git a/packages/SystemUI/res/drawable/rounded_corner_top.xml b/packages/SystemUI/res/drawable/rounded_corner_top.xml
new file mode 100644
index 0000000..7934892
--- /dev/null
+++ b/packages/SystemUI/res/drawable/rounded_corner_top.xml
@@ -0,0 +1,16 @@
+<!--
+    Copyright (C) 2020 The Android Open Source Project
+
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<!-- Overlay this resource to change rounded_corners_top -->
+<inset xmlns:android="http://schemas.android.com/apk/res/android"
+    android:drawable="@drawable/rounded"/>
diff --git a/packages/SystemUI/res/layout/rounded_corners.xml b/packages/SystemUI/res/layout/rounded_corners.xml
index 1849068..db892d7 100644
--- a/packages/SystemUI/res/layout/rounded_corners.xml
+++ b/packages/SystemUI/res/layout/rounded_corners.xml
@@ -16,6 +16,7 @@
 -->
 <com.android.systemui.RegionInterceptingFrameLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/rounded_corners_default"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
     <ImageView
diff --git a/packages/SystemUI/res/layout/rounded_corners_bottom.xml b/packages/SystemUI/res/layout/rounded_corners_bottom.xml
new file mode 100644
index 0000000..dde1248
--- /dev/null
+++ b/packages/SystemUI/res/layout/rounded_corners_bottom.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+** Copyright 2020, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+-->
+<com.android.systemui.RegionInterceptingFrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/rounded_corners_bottom"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+    <ImageView
+        android:id="@+id/left"
+        android:layout_width="12dp"
+        android:layout_height="12dp"
+        android:layout_gravity="left|bottom"
+        android:tint="#ff000000"
+        android:src="@drawable/rounded_corner_bottom"/>
+    <ImageView
+        android:id="@+id/right"
+        android:layout_width="12dp"
+        android:layout_height="12dp"
+        android:tint="#ff000000"
+        android:layout_gravity="right|bottom"
+        android:src="@drawable/rounded_corner_bottom"/>
+</com.android.systemui.RegionInterceptingFrameLayout>
diff --git a/packages/SystemUI/res/layout/rounded_corners_top.xml b/packages/SystemUI/res/layout/rounded_corners_top.xml
new file mode 100644
index 0000000..813c97d
--- /dev/null
+++ b/packages/SystemUI/res/layout/rounded_corners_top.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+** Copyright 2020, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+-->
+<com.android.systemui.RegionInterceptingFrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/rounded_corners_top"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+    <ImageView
+        android:id="@+id/left"
+        android:layout_width="12dp"
+        android:layout_height="12dp"
+        android:layout_gravity="left|top"
+        android:tint="#ff000000"
+        android:src="@drawable/rounded_corner_top"/>
+    <ImageView
+        android:id="@+id/right"
+        android:layout_width="12dp"
+        android:layout_height="12dp"
+        android:tint="#ff000000"
+        android:layout_gravity="right|top"
+        android:src="@drawable/rounded_corner_top"/>
+</com.android.systemui.RegionInterceptingFrameLayout>
diff --git a/packages/SystemUI/res/layout/wireless_charging_layout.xml b/packages/SystemUI/res/layout/wireless_charging_layout.xml
index 4610409..730f24f 100644
--- a/packages/SystemUI/res/layout/wireless_charging_layout.xml
+++ b/packages/SystemUI/res/layout/wireless_charging_layout.xml
@@ -36,14 +36,26 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="center"
-        android:orientation="vertical">
+        android:orientation="horizontal">
 
         <TextView
+            android:id="@+id/reverse_wireless_charging_percentage"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:visibility="gone"/>
+        <ImageView
+            android:id="@+id/reverse_wireless_charging_icon"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:src="@drawable/ic_reverse_charging"
+            android:visibility="gone"/>
+        <TextView
             android:id="@+id/wireless_charging_percentage"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_gravity="center"
-            android:textSize="24sp"/>
+            android:layout_gravity="center"/>
     </LinearLayout>
 
-</FrameLayout>
\ No newline at end of file
+</FrameLayout>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index ec1e076..872bca8 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -234,7 +234,7 @@
     <string name="not_default_data_content_description" msgid="6757881730711522517">"لم يتم الضبط على استخدام البيانات"</string>
     <string name="cell_data_off" msgid="4886198950247099526">"غير مفعّلة"</string>
     <string name="accessibility_bluetooth_tether" msgid="6327291292208790599">"التوصيل عبر البلوتوث"</string>
-    <string name="accessibility_airplane_mode" msgid="1899529214045998505">"وضع الطائرة."</string>
+    <string name="accessibility_airplane_mode" msgid="1899529214045998505">"وضع الطيران."</string>
     <string name="accessibility_vpn_on" msgid="8037549696057288731">"‏الشبكة الافتراضية الخاصة (VPN) قيد التفعيل."</string>
     <string name="accessibility_no_sims" msgid="5711270400476534667">"‏ليس هناك شريحة SIM."</string>
     <string name="carrier_network_change_mode" msgid="5174141476991149918">"جارٍ تغيير شبكة مشغِّل شبكة الجوّال."</string>
@@ -269,10 +269,10 @@
     <string name="accessibility_quick_settings_wifi_changed_on" msgid="1490362586009027611">"‏تم تفعيل Wifi."</string>
     <string name="accessibility_quick_settings_mobile" msgid="1817825313718492906">"الجوّال <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string>
     <string name="accessibility_quick_settings_battery" msgid="533594896310663853">"البطارية <xliff:g id="STATE">%s</xliff:g>."</string>
-    <string name="accessibility_quick_settings_airplane_off" msgid="1275658769368793228">"إيقاف وضع الطائرة."</string>
-    <string name="accessibility_quick_settings_airplane_on" msgid="8106176561295294255">"تفعيل وضع الطائرة."</string>
-    <string name="accessibility_quick_settings_airplane_changed_off" msgid="8880183481476943754">"تم إيقاف وضع الطائرة."</string>
-    <string name="accessibility_quick_settings_airplane_changed_on" msgid="6327378061894076288">"تم تفعيل وضع الطائرة."</string>
+    <string name="accessibility_quick_settings_airplane_off" msgid="1275658769368793228">"إيقاف وضع الطيران."</string>
+    <string name="accessibility_quick_settings_airplane_on" msgid="8106176561295294255">"تفعيل وضع الطيران."</string>
+    <string name="accessibility_quick_settings_airplane_changed_off" msgid="8880183481476943754">"تم إيقاف وضع الطيران."</string>
+    <string name="accessibility_quick_settings_airplane_changed_on" msgid="6327378061894076288">"تم تفعيل وضع الطيران."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="3235552940146035383">"كتم الصوت تمامًا"</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="3375848309132140014">"المنبِّهات فقط"</string>
     <string name="accessibility_quick_settings_dnd" msgid="2415967452264206047">"عدم الإزعاج"</string>
@@ -320,7 +320,7 @@
     <string name="data_usage_disabled_dialog" msgid="7933201635215099780">"تم الوصول إلى حد البيانات الذي عيَّنته. لم يُعد بإمكانك استخدام بيانات الجوال.\n\nفي حالة الاستئناف، قد يتم تطبيق الرسوم لاستخدام البيانات."</string>
     <string name="data_usage_disabled_dialog_enable" msgid="2796648546086408937">"استئناف"</string>
     <string name="gps_notification_searching_text" msgid="231304732649348313">"‏جارٍ البحث عن GPS"</string>
-    <string name="gps_notification_found_text" msgid="3145873880174658526">"‏تم تعيين الموقع بواسطة GPS"</string>
+    <string name="gps_notification_found_text" msgid="3145873880174658526">"‏تم ضبط الموقع بواسطة GPS"</string>
     <string name="accessibility_location_active" msgid="2845747916764660369">"طلبات الموقع نشطة"</string>
     <string name="accessibility_sensors_off_active" msgid="2619725434618911551">"أجهزة الاستشعار غير مفعّلة"</string>
     <string name="accessibility_clear_all" msgid="970525598287244592">"محو جميع الإشعارات."</string>
@@ -666,7 +666,7 @@
     <string name="status_bar_ethernet" msgid="5690979758988647484">"إيثرنت"</string>
     <string name="status_bar_alarm" msgid="87160847643623352">"المنبّه"</string>
     <string name="status_bar_work" msgid="5238641949837091056">"الملف الشخصي للعمل"</string>
-    <string name="status_bar_airplane" msgid="4848702508684541009">"وضع الطائرة"</string>
+    <string name="status_bar_airplane" msgid="4848702508684541009">"وضع الطيران"</string>
     <string name="add_tile" msgid="6239678623873086686">"إضافة فئة"</string>
     <string name="broadcast_tile" msgid="5224010633596487481">"إرسال فئة"</string>
     <string name="zen_alarm_warning_indef" msgid="5252866591716504287">"لن تسمع المنبّه القادم في <xliff:g id="WHEN">%1$s</xliff:g> إلا إذا أوقفت هذا قبل الموعد"</string>
@@ -699,7 +699,7 @@
     <string name="tuner_full_importance_settings" msgid="1388025816553459059">"عناصر التحكم في إشعارات التشغيل"</string>
     <string name="tuner_full_importance_settings_on" msgid="917981436602311547">"تشغيل"</string>
     <string name="tuner_full_importance_settings_off" msgid="5580102038749680829">"إيقاف"</string>
-    <string name="power_notification_controls_description" msgid="1334963837572708952">"باستخدام عناصر التحكم في إشعار التشغيل، يمكنك تعيين مستوى الأهمية من 0 إلى 5 لإشعارات التطبيق. \n\n"<b>"المستوى 5"</b>" \n- العرض أعلى قائمة الإشعارات \n- يسمح بمقاطعة ملء الشاشة \n- الظهور الخاطف دائمًا \n\n"<b>"المستوى 4"</b>" \n- منع مقاطعة ملء الشاشة \n- الظهور الخاطف دائمًا \n\n"<b>"المستوى 3"</b>" \n- منع مقاطعة ملء الشاشة \n- عدم الظهور الخاطف أبدًا \n\n"<b>"المستوى 2"</b>" \n- منع مقاطعة ملء الشاشة \n- عدم الظهور الخاطف أبدًا \n- عدم إصدار أصوات واهتزاز \n\n"<b>"المستوى 1"</b>" \n- منع مقاطعة ملء الشاشة \n- عدم الظهور الخاطف أبدًا \n- عدم إصدار أصوات أو اهتزاز أبدًا \n- الإخفاء من شاشة القفل وشريط الحالة \n- العرض أسفل قائمة الإشعارات \n\n"<b>"المستوى 0"</b>" \n- حظر جميع الإشعارات من التطبيق"</string>
+    <string name="power_notification_controls_description" msgid="1334963837572708952">"باستخدام عناصر التحكم في إشعار التشغيل، يمكنك ضبط مستوى الأهمية من 0 إلى 5 لإشعارات التطبيق. \n\n"<b>"المستوى 5"</b>" \n- العرض أعلى قائمة الإشعارات \n- يسمح بمقاطعة ملء الشاشة \n- الظهور الخاطف دائمًا \n\n"<b>"المستوى 4"</b>" \n- منع مقاطعة ملء الشاشة \n- الظهور الخاطف دائمًا \n\n"<b>"المستوى 3"</b>" \n- منع مقاطعة ملء الشاشة \n- عدم الظهور الخاطف أبدًا \n\n"<b>"المستوى 2"</b>" \n- منع مقاطعة ملء الشاشة \n- عدم الظهور الخاطف أبدًا \n- عدم إصدار أصوات واهتزاز \n\n"<b>"المستوى 1"</b>" \n- منع مقاطعة ملء الشاشة \n- عدم الظهور الخاطف أبدًا \n- عدم إصدار أصوات أو اهتزاز أبدًا \n- الإخفاء من شاشة القفل وشريط الحالة \n- العرض أسفل قائمة الإشعارات \n\n"<b>"المستوى 0"</b>" \n- حظر جميع الإشعارات من التطبيق"</string>
     <string name="notification_header_default_channel" msgid="225454696914642444">"الإشعارات"</string>
     <string name="notification_channel_disabled" msgid="928065923928416337">"لن تتلقى هذه الإشعارات بعد الآن."</string>
     <string name="notification_channel_minimized" msgid="6892672757877552959">"سيتم تصغير هذه الإشعارات."</string>
@@ -1062,7 +1062,7 @@
     <string name="accessibility_control_favorite" msgid="8694362691985545985">"تمت الإضافة إلى المفضّلة"</string>
     <string name="accessibility_control_favorite_position" msgid="54220258048929221">"تمت الإضافة إلى المفضّلة، الموضع <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="accessibility_control_not_favorite" msgid="1291760269563092359">"تمت الإزالة من المفضّلة"</string>
-    <string name="accessibility_control_change_favorite" msgid="2943178027582253261">"إضافة إلى المُفضلة"</string>
+    <string name="accessibility_control_change_favorite" msgid="2943178027582253261">"إضافة إلى المحتوى المفضّل"</string>
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"إزالة من المفضّلة"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"نقل إلى الموضع <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"عناصر التحكّم"</string>
diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml
index 2eecc72..c4693be 100644
--- a/packages/SystemUI/res/values-az/strings.xml
+++ b/packages/SystemUI/res/values-az/strings.xml
@@ -791,7 +791,7 @@
     <string name="keyboard_key_page_up" msgid="173914303254199845">"Yuxarı Səhifə"</string>
     <string name="keyboard_key_page_down" msgid="9035902490071829731">"Aşağı Səhifə"</string>
     <string name="keyboard_key_forward_del" msgid="5325501825762733459">"Silin"</string>
-    <string name="keyboard_key_move_home" msgid="3496502501803911971">"Əsas səhifə"</string>
+    <string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
     <string name="keyboard_key_move_end" msgid="99190401463834854">"Son"</string>
     <string name="keyboard_key_insert" msgid="4621692715704410493">"Daxil edin"</string>
     <string name="keyboard_key_num_lock" msgid="7209960042043090548">"Nömrələr"</string>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index 41d7fa81..5416e03 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -722,7 +722,7 @@
     <string name="notification_channel_summary_default" msgid="3282930979307248890">"У залежнасці ад налад тэлефона магчымы званок або вібрацыя"</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"У залежнасці ад налад тэлефона магчымы званок або вібрацыя. Размовы ў праграме \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" стандартна паяўляюцца ў выглядзе ўсплывальных апавяшчэнняў."</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Прыцягвае ўвагу да гэтага змесціва ўсплывальнай кнопкай."</string>
-    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Паказваецца ўверсе раздзела размоў у выглядзе ўсплывальнага апавяшчэння, а на экране блакіроўкі – у выглядзе відарыса профілю"</string>
+    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Паказваецца ўверсе раздзела размоў, як усплывальнае апавяшчэнне, паказвае фота профілю на экране блакіроўкі"</string>
     <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Налады"</string>
     <string name="notification_priority_title" msgid="2079708866333537093">"Прыярытэт"</string>
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не падтрымлівае функцыі размовы"</string>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index 7913674..afb4441 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -716,7 +716,7 @@
     <string name="notification_channel_summary_default" msgid="3282930979307248890">"Може да звъни или да вибрира въз основа на настройките за телефона"</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Може да звъни или да вибрира въз основа на настройките за телефона. Разговорите от <xliff:g id="APP_NAME">%1$s</xliff:g> се показват като балончета по подразбиране."</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Задържа вниманието ви посредством плаващ пряк път към това съдържание."</string>
-    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Показва се като плаващо балонче в горната част на секцията с разговори и показва снимката на потребителския профил на заключения екран"</string>
+    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Показва се като плаващо балонче в горната част на секцията с разговори, показва снимката на потр. профил на заключения екран"</string>
     <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Настройки"</string>
     <string name="notification_priority_title" msgid="2079708866333537093">"Приоритет"</string>
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не поддържа функциите за разговор"</string>
diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml
index 34f4b9f..5324303 100644
--- a/packages/SystemUI/res/values-bs/strings.xml
+++ b/packages/SystemUI/res/values-bs/strings.xml
@@ -726,7 +726,7 @@
     <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Nema nedavnih oblačića"</string>
     <string name="bubble_overflow_empty_subtitle" msgid="2030874469510497397">"Nedavni i odbačeni oblačići će se pojaviti ovdje"</string>
     <string name="notification_unblockable_desc" msgid="2073030886006190804">"Ta obavještenja se ne mogu izmijeniti."</string>
-    <string name="notification_multichannel_desc" msgid="7414593090056236179">"Ovdje nije moguće konfigurirati ovu grupu obavještenja"</string>
+    <string name="notification_multichannel_desc" msgid="7414593090056236179">"Ovu grupu obavještenja nije moguće konfigurirati ovdje"</string>
     <string name="notification_delegate_header" msgid="1264510071031479920">"Obavještenje preko proksi servera"</string>
     <string name="notification_channel_dialog_title" msgid="6856514143093200019">"Sva obavještenja aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
     <string name="see_more_title" msgid="7409317011708185729">"Prikaži više"</string>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index 76b6441..51bd234 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -92,10 +92,10 @@
     <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Processant gravació de pantalla"</string>
     <string name="screenrecord_channel_description" msgid="4147077128486138351">"Notificació en curs d\'una sessió de gravació de la pantalla"</string>
     <string name="screenrecord_start_label" msgid="1750350278888217473">"Vols iniciar la gravació?"</string>
-    <string name="screenrecord_description" msgid="1123231719680353736">"Quan graves contingut, el sistema Android pot capturar qualsevol informació sensible que es mostri a la pantalla o que es reprodueixi al dispositiu. Això inclou les contrasenyes, la informació de pagament, les fotos, els missatges i l\'àudio."</string>
+    <string name="screenrecord_description" msgid="1123231719680353736">"Durant la gravació, el sistema Android pot capturar qualsevol informació sensible que es mostri a la pantalla o que es reprodueixi al dispositiu. Això inclou contrasenyes, informació de pagament, fotos, missatges i àudio."</string>
     <string name="screenrecord_audio_label" msgid="6183558856175159629">"Grava l\'àudio"</string>
     <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Àudio del dispositiu"</string>
-    <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Sons del dispositiu, com ara la música, les trucades i els sons de trucada"</string>
+    <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"So del dispositiu, com ara música, trucades i sons de trucada"</string>
     <string name="screenrecord_mic_label" msgid="2111264835791332350">"Micròfon"</string>
     <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"Àudio del dispositiu i micròfon"</string>
     <string name="screenrecord_start" msgid="330991441575775004">"Inicia"</string>
@@ -389,7 +389,7 @@
     <string name="quick_settings_cast_no_wifi" msgid="6980194769795014875">"La Wi‑Fi no està connectada"</string>
     <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Brillantor"</string>
     <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="2325362583903258677">"AUTOMÀTICA"</string>
-    <string name="quick_settings_inversion_label" msgid="5078769633069667698">"Inverteix els colors"</string>
+    <string name="quick_settings_inversion_label" msgid="5078769633069667698">"Inverteix colors"</string>
     <string name="quick_settings_color_space_label" msgid="537528291083575559">"Mode de correcció de color"</string>
     <string name="quick_settings_more_settings" msgid="2878235926753776694">"Més opcions"</string>
     <string name="quick_settings_done" msgid="2163641301648855793">"Fet"</string>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index d3b5a20..484c631 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -722,7 +722,7 @@
     <string name="notification_channel_summary_default" msgid="3282930979307248890">"Může vyzvánět nebo vibrovat v závislosti na nastavení telefonu"</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Může vyzvánět nebo vibrovat v závislosti na nastavení telefonu. Konverzace z aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> ve výchozím nastavení bublají."</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Přitahuje pozornost pomocí plovoucí zkratky k tomuto obsahu."</string>
-    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Zobrazuje se v horní části sekce konverzace a má podobu plovoucí bubliny, zobrazuje profilovou fotku na obrazovce uzamčení"</string>
+    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Zobrazuje se v horní části sekce konverzací a má podobu plovoucí bubliny, zobrazuje profilovou fotku na obrazovce uzamčení"</string>
     <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Nastavení"</string>
     <string name="notification_priority_title" msgid="2079708866333537093">"Priorita"</string>
     <string name="no_shortcut" msgid="8257177117568230126">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> funkce konverzace nepodporuje"</string>
@@ -1026,7 +1026,7 @@
     <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Pohotovostní režim"</string>
     <string name="priority_onboarding_title" msgid="2893070698479227616">"Konverzace byla nastavena jako prioritní"</string>
     <string name="priority_onboarding_behavior" msgid="5342816047020432929">"Chování prioritních konverzací:"</string>
-    <string name="priority_onboarding_show_at_top_text" msgid="1678400241025513541">"Zobrazovat v horní části sekce konverzace"</string>
+    <string name="priority_onboarding_show_at_top_text" msgid="1678400241025513541">"Zobrazovat v horní části sekce konverzací"</string>
     <string name="priority_onboarding_show_avatar_text" msgid="5756291381124091508">"Zobrazovat profilovou fotku na zámku obrazovky"</string>
     <string name="priority_onboarding_appear_as_bubble_text" msgid="4227039772250263122">"Zobrazuje se jako plovoucí bublina nad aplikacemi"</string>
     <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Přerušit režim Nerušit"</string>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 59aaa5a..334d896 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -716,7 +716,7 @@
     <string name="notification_channel_summary_default" msgid="3282930979307248890">"Kan ringe eller vibrere baseret på telefonens indstillinger"</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Kan ringe eller vibrere baseret på telefonens indstillinger. Samtaler fra <xliff:g id="APP_NAME">%1$s</xliff:g> vises som standard i bobler."</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Fastholder din opmærksomhed med en svævende genvej til indholdet."</string>
-    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Vises øverst i samtalesektionen, som en svævende boble og med profilbillede på låseskærmen"</string>
+    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Vises øverst i samtalesektionen som en svævende boble og med profilbillede på låseskærmen"</string>
     <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Indstillinger"</string>
     <string name="notification_priority_title" msgid="2079708866333537093">"Prioritet"</string>
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> understøtter ikke samtalefunktioner"</string>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index edee95f..f29a571 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -28,15 +28,15 @@
     <string name="battery_low_percent_format" msgid="4276661262843170964">"<xliff:g id="PERCENTAGE">%s</xliff:g> verbleibend"</string>
     <string name="battery_low_percent_format_hybrid" msgid="3985614339605686167">"Noch <xliff:g id="PERCENTAGE">%1$s</xliff:g> übrig; bei deinem Nutzungsmuster hast du noch ca. <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="battery_low_percent_format_hybrid_short" msgid="5917433188456218857">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> ausstehend; noch ca. <xliff:g id="TIME">%2$s</xliff:g>"</string>
-    <string name="battery_low_percent_format_saver_started" msgid="4968468824040940688">"Noch <xliff:g id="PERCENTAGE">%s</xliff:g>. Der Energiesparmodus ist aktiviert."</string>
+    <string name="battery_low_percent_format_saver_started" msgid="4968468824040940688">"Noch <xliff:g id="PERCENTAGE">%s</xliff:g>. Der Stromsparmodus ist aktiviert."</string>
     <string name="invalid_charger" msgid="4370074072117767416">"Aufladen über USB nicht möglich. Verwende das mit dem Gerät gelieferte Ladegerät."</string>
     <string name="invalid_charger_title" msgid="938685362320735167">"Aufladen über USB nicht möglich"</string>
     <string name="invalid_charger_text" msgid="2339310107232691577">"Verwende das mit dem Gerät gelieferte Ladegerät"</string>
     <string name="battery_low_why" msgid="2056750982959359863">"Einstellungen"</string>
-    <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"Energiesparmodus aktivieren?"</string>
-    <string name="battery_saver_confirmation_title_generic" msgid="2299231884234959849">"Über den Energiesparmodus"</string>
+    <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"Stromsparmodus aktivieren?"</string>
+    <string name="battery_saver_confirmation_title_generic" msgid="2299231884234959849">"Über den Stromsparmodus"</string>
     <string name="battery_saver_confirmation_ok" msgid="5042136476802816494">"Aktivieren"</string>
-    <string name="battery_saver_start_action" msgid="4553256017945469937">"Energiesparmodus aktivieren"</string>
+    <string name="battery_saver_start_action" msgid="4553256017945469937">"Stromsparmodus aktivieren"</string>
     <string name="status_bar_settings_settings_button" msgid="534331565185171556">"Einstellungen"</string>
     <string name="status_bar_settings_wifi_button" msgid="7243072479837270946">"WLAN"</string>
     <string name="status_bar_settings_auto_rotation" msgid="8329080442278431708">"Bildschirm automatisch drehen"</string>
@@ -421,7 +421,7 @@
     <string name="quick_settings_night_secondary_label_on_at" msgid="3584738542293528235">"An um <xliff:g id="TIME">%s</xliff:g>"</string>
     <string name="quick_settings_secondary_label_until" msgid="1883981263191927372">"Bis <xliff:g id="TIME">%s</xliff:g>"</string>
     <string name="quick_settings_ui_mode_night_label" msgid="1398928270610780470">"Dunkles Design"</string>
-    <string name="quick_settings_dark_mode_secondary_label_battery_saver" msgid="4990712734503013251">"Energiesparmodus"</string>
+    <string name="quick_settings_dark_mode_secondary_label_battery_saver" msgid="4990712734503013251">"Stromsparmodus"</string>
     <string name="quick_settings_dark_mode_secondary_label_on_at_sunset" msgid="6017379738102015710">"An bei Sonnenuntergang"</string>
     <string name="quick_settings_dark_mode_secondary_label_until_sunrise" msgid="4404885070316716472">"Bis Sonnenaufgang"</string>
     <string name="quick_settings_dark_mode_secondary_label_on_at" msgid="5128758823486361279">"An um <xliff:g id="TIME">%s</xliff:g>"</string>
@@ -499,9 +499,9 @@
     <string name="user_remove_user_title" msgid="9124124694835811874">"Nutzer entfernen?"</string>
     <string name="user_remove_user_message" msgid="6702834122128031833">"Alle Apps und Daten dieses Nutzers werden gelöscht."</string>
     <string name="user_remove_user_remove" msgid="8387386066949061256">"Entfernen"</string>
-    <string name="battery_saver_notification_title" msgid="8419266546034372562">"Energiesparmodus ist aktiviert"</string>
+    <string name="battery_saver_notification_title" msgid="8419266546034372562">"Stromsparmodus ist aktiviert"</string>
     <string name="battery_saver_notification_text" msgid="2617841636449016951">"Reduzierung der Leistung und Hintergrunddaten"</string>
-    <string name="battery_saver_notification_action_text" msgid="6022091913807026887">"Energiesparmodus deaktivieren"</string>
+    <string name="battery_saver_notification_action_text" msgid="6022091913807026887">"Stromsparmodus deaktivieren"</string>
     <string name="media_projection_dialog_text" msgid="1755705274910034772">"Die App \"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>\" erhält Zugriff auf alle Informationen, die auf deinem Bildschirm sichtbar sind oder von deinem Gerät wiedergegeben werden, während du aufnimmst oder streamst. Dazu gehören beispielsweise angezeigte Passwörter und Zahlungsdetails, Fotos, Nachrichten und Audioinhalte."</string>
     <string name="media_projection_dialog_service_text" msgid="958000992162214611">"Der Anbieter dieser App erhält Zugriff auf alle Informationen, die auf deinem Bildschirm sichtbar sind oder von deinem Gerät wiedergegeben werden, während du aufnimmst oder streamst. Dazu gehören beispielsweise Passwörter, Zahlungsdetails, Fotos, Nachrichten und Audioinhalte."</string>
     <string name="media_projection_dialog_service_title" msgid="2888507074107884040">"Aufnahme oder Stream starten?"</string>
@@ -767,8 +767,8 @@
       <item quantity="one">%d Minute</item>
     </plurals>
     <string name="battery_panel_title" msgid="5931157246673665963">"Akkunutzung"</string>
-    <string name="battery_detail_charging_summary" msgid="8821202155297559706">"Der Energiesparmodus ist beim Aufladen nicht verfügbar."</string>
-    <string name="battery_detail_switch_title" msgid="6940976502957380405">"Energiesparmodus"</string>
+    <string name="battery_detail_charging_summary" msgid="8821202155297559706">"Der Stromsparmodus ist beim Aufladen nicht verfügbar."</string>
+    <string name="battery_detail_switch_title" msgid="6940976502957380405">"Stromsparmodus"</string>
     <string name="battery_detail_switch_summary" msgid="3668748557848025990">"Reduzierung der Leistung und Hintergrunddaten"</string>
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Taste <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Pos1"</string>
@@ -980,11 +980,11 @@
     <string name="slice_permission_checkbox" msgid="4242888137592298523">"<xliff:g id="APP">%1$s</xliff:g> darf Teile aus jeder beliebigen App anzeigen"</string>
     <string name="slice_permission_allow" msgid="6340449521277951123">"Zulassen"</string>
     <string name="slice_permission_deny" msgid="6870256451658176895">"Ablehnen"</string>
-    <string name="auto_saver_title" msgid="6873691178754086596">"Tippen zum Planen des Energiesparmodus"</string>
+    <string name="auto_saver_title" msgid="6873691178754086596">"Tippen zum Planen des Stromsparmodus"</string>
     <string name="auto_saver_text" msgid="3214960308353838764">"Aktivieren, wenn der Akku wahrscheinlich nicht mehr lange hält"</string>
     <string name="no_auto_saver_action" msgid="7467924389609773835">"Nein danke"</string>
-    <string name="auto_saver_enabled_title" msgid="4294726198280286333">"Geplanter Energiesparmodus aktiviert"</string>
-    <string name="auto_saver_enabled_text" msgid="7889491183116752719">"Der Energiesparmodus wird bei einem Akkustand von <xliff:g id="PERCENTAGE">%d</xliff:g> %% automatisch aktiviert."</string>
+    <string name="auto_saver_enabled_title" msgid="4294726198280286333">"Geplanter Stromsparmodus aktiviert"</string>
+    <string name="auto_saver_enabled_text" msgid="7889491183116752719">"Der Stromsparmodus wird bei einem Akkustand von <xliff:g id="PERCENTAGE">%d</xliff:g> %% automatisch aktiviert."</string>
     <string name="open_saver_setting_action" msgid="2111461909782935190">"Einstellungen"</string>
     <string name="auto_saver_okay_action" msgid="7815925750741935386">"Ok"</string>
     <string name="heap_dump_tile_name" msgid="2464189856478823046">"Dump SysUI Heap"</string>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index f6ae532..becbaa4 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -716,7 +716,7 @@
     <string name="notification_channel_summary_default" msgid="3282930979307248890">"Ενδέχεται να κουδουνίζει ή να δονείται βάσει των ρυθμίσεων του τηλεφώνου"</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Ενδέχεται να κουδουνίζει ή να δονείται βάσει των ρυθμίσεων του τηλεφώνου. Οι συζητήσεις από την εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> εμφανίζονται σε συννεφάκι από προεπιλογή."</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Κρατάει την προσοχή σας με μια κινούμενη συντόμευση προς αυτό το περιεχόμενο."</string>
-    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Εμφανίζεται στο επάνω μέρος της ενότητας συζητήσεων, προβάλλεται ως κινούμενο συννεφάκι, εμφανίζει τη φωτογραφία προφίλ στην οθόνη κλειδώματος"</string>
+    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Εμφανίζεται επάνω στις συζητήσεις, προβάλλεται ως κιν. συννεφάκι, εμφανίζει τη φωτ. προφίλ στην οθ. κλειδ."</string>
     <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Ρυθμίσεις"</string>
     <string name="notification_priority_title" msgid="2079708866333537093">"Προτεραιότητα"</string>
     <string name="no_shortcut" msgid="8257177117568230126">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> δεν υποστηρίζει τις λειτουργίες συζήτησης"</string>
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index 6228a54..1581c15 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -92,7 +92,7 @@
     <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Processing screen recording"</string>
     <string name="screenrecord_channel_description" msgid="4147077128486138351">"Ongoing notification for a screen record session"</string>
     <string name="screenrecord_start_label" msgid="1750350278888217473">"Start recording?"</string>
-    <string name="screenrecord_description" msgid="1123231719680353736">"While recording, Android System can capture any sensitive information that’s visible on your screen or played on your device. This includes passwords, payment info, photos, messages and audio."</string>
+    <string name="screenrecord_description" msgid="1123231719680353736">"While recording, the Android System can capture any sensitive information that’s visible on your screen or played on your device. This includes passwords, payment info, photos, messages and audio."</string>
     <string name="screenrecord_audio_label" msgid="6183558856175159629">"Record audio"</string>
     <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Device audio"</string>
     <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Sound from your device, like music, calls and ringtones"</string>
diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml
index 94623de..937bf17 100644
--- a/packages/SystemUI/res/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res/values-en-rCA/strings.xml
@@ -92,7 +92,7 @@
     <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Processing screen recording"</string>
     <string name="screenrecord_channel_description" msgid="4147077128486138351">"Ongoing notification for a screen record session"</string>
     <string name="screenrecord_start_label" msgid="1750350278888217473">"Start recording?"</string>
-    <string name="screenrecord_description" msgid="1123231719680353736">"While recording, Android System can capture any sensitive information that’s visible on your screen or played on your device. This includes passwords, payment info, photos, messages and audio."</string>
+    <string name="screenrecord_description" msgid="1123231719680353736">"While recording, the Android System can capture any sensitive information that’s visible on your screen or played on your device. This includes passwords, payment info, photos, messages and audio."</string>
     <string name="screenrecord_audio_label" msgid="6183558856175159629">"Record audio"</string>
     <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Device audio"</string>
     <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Sound from your device, like music, calls and ringtones"</string>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index 6228a54..1581c15 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -92,7 +92,7 @@
     <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Processing screen recording"</string>
     <string name="screenrecord_channel_description" msgid="4147077128486138351">"Ongoing notification for a screen record session"</string>
     <string name="screenrecord_start_label" msgid="1750350278888217473">"Start recording?"</string>
-    <string name="screenrecord_description" msgid="1123231719680353736">"While recording, Android System can capture any sensitive information that’s visible on your screen or played on your device. This includes passwords, payment info, photos, messages and audio."</string>
+    <string name="screenrecord_description" msgid="1123231719680353736">"While recording, the Android System can capture any sensitive information that’s visible on your screen or played on your device. This includes passwords, payment info, photos, messages and audio."</string>
     <string name="screenrecord_audio_label" msgid="6183558856175159629">"Record audio"</string>
     <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Device audio"</string>
     <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Sound from your device, like music, calls and ringtones"</string>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index 6228a54..1581c15 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -92,7 +92,7 @@
     <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Processing screen recording"</string>
     <string name="screenrecord_channel_description" msgid="4147077128486138351">"Ongoing notification for a screen record session"</string>
     <string name="screenrecord_start_label" msgid="1750350278888217473">"Start recording?"</string>
-    <string name="screenrecord_description" msgid="1123231719680353736">"While recording, Android System can capture any sensitive information that’s visible on your screen or played on your device. This includes passwords, payment info, photos, messages and audio."</string>
+    <string name="screenrecord_description" msgid="1123231719680353736">"While recording, the Android System can capture any sensitive information that’s visible on your screen or played on your device. This includes passwords, payment info, photos, messages and audio."</string>
     <string name="screenrecord_audio_label" msgid="6183558856175159629">"Record audio"</string>
     <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Device audio"</string>
     <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Sound from your device, like music, calls and ringtones"</string>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index f9f50ec..66aa3e7 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -248,7 +248,7 @@
     <string name="accessibility_remove_notification" msgid="1641455251495815527">"Eliminar notificación"</string>
     <string name="accessibility_gps_enabled" msgid="4061313248217660858">"GPS habilitado"</string>
     <string name="accessibility_gps_acquiring" msgid="896207402196024040">"Adquisición de GPS"</string>
-    <string name="accessibility_tty_enabled" msgid="1123180388823381118">"TeleTypewriter habilitado"</string>
+    <string name="accessibility_tty_enabled" msgid="1123180388823381118">"Teletipo habilitado"</string>
     <string name="accessibility_ringer_vibrate" msgid="6261841170896561364">"Timbre en vibración"</string>
     <string name="accessibility_ringer_silent" msgid="8994620163934249882">"Timbre en silencio"</string>
     <!-- no translation found for accessibility_casting (8708751252897282313) -->
@@ -708,17 +708,17 @@
     <string name="inline_silent_button_keep_alerting" msgid="6577845442184724992">"Seguir recibiendo alertas"</string>
     <string name="inline_turn_off_notifications" msgid="8543989584403106071">"Desactivar notificaciones"</string>
     <string name="inline_keep_showing_app" msgid="4393429060390649757">"¿Quieres seguir viendo las notificaciones de esta app?"</string>
-    <string name="notification_silence_title" msgid="8608090968400832335">"Silencio"</string>
+    <string name="notification_silence_title" msgid="8608090968400832335">"Silenciada"</string>
     <string name="notification_alert_title" msgid="3656229781017543655">"Predeterminada"</string>
     <string name="notification_bubble_title" msgid="8330481035191903164">"Cuadro"</string>
     <string name="notification_channel_summary_low" msgid="4860617986908931158">"Sin sonido ni vibración"</string>
-    <string name="notification_conversation_summary_low" msgid="1734433426085468009">"No suena ni vibra, y aparece en una parte inferior de la sección de conversaciones"</string>
-    <string name="notification_channel_summary_default" msgid="3282930979307248890">"Puede sonar o vibrar en función de la configuración del teléfono"</string>
+    <string name="notification_conversation_summary_low" msgid="1734433426085468009">"No suena ni vibra, y aparece en la parte inferior de la sección de conversaciones."</string>
+    <string name="notification_channel_summary_default" msgid="3282930979307248890">"Puede sonar o vibrar en función de la configuración del teléfono."</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Puede sonar o vibrar en función de la configuración del teléfono. Conversaciones de la burbuja de <xliff:g id="APP_NAME">%1$s</xliff:g> de forma predeterminada."</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Retiene tu atención con un acceso directo flotante a este contenido."</string>
-    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Aparece en la parte superior de la sección de conversaciones, en forma de burbuja flotante, y muestra la foto de perfil en la pantalla de bloqueo"</string>
+    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Aparece en la parte superior de la sección de conversaciones, en forma de burbuja flotante, y muestra la foto de perfil en la pantalla de bloqueo."</string>
     <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Configuración"</string>
-    <string name="notification_priority_title" msgid="2079708866333537093">"Prioridad"</string>
+    <string name="notification_priority_title" msgid="2079708866333537093">"Prioritaria"</string>
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> no admite funciones de conversación"</string>
     <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"No hay burbujas recientes"</string>
     <string name="bubble_overflow_empty_subtitle" msgid="2030874469510497397">"Las burbujas recientes y las que se descartaron aparecerán aquí"</string>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index e427cce..dc15bdc 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -397,7 +397,7 @@
     <string name="quick_settings_connected_battery_level" msgid="1322075669498906959">"Conectado (<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería)"</string>
     <string name="quick_settings_connecting" msgid="2381969772953268809">"Conectando..."</string>
     <string name="quick_settings_tethering_label" msgid="5257299852322475780">"Compartir conexión"</string>
-    <string name="quick_settings_hotspot_label" msgid="1199196300038363424">"Zona Wi-Fi"</string>
+    <string name="quick_settings_hotspot_label" msgid="1199196300038363424">"Punto de acceso"</string>
     <string name="quick_settings_hotspot_secondary_label_transient" msgid="7585604088079160564">"Activando…"</string>
     <string name="quick_settings_hotspot_secondary_label_data_saver_enabled" msgid="1280433136266439372">"Ahorro de datos activado"</string>
     <plurals name="quick_settings_hotspot_secondary_label_num_devices" formatted="false" msgid="3142308865165871976">
@@ -662,7 +662,7 @@
     <string name="alarm_template" msgid="2234991538018805736">"a las <xliff:g id="WHEN">%1$s</xliff:g>"</string>
     <string name="alarm_template_far" msgid="3561752195856839456">"el <xliff:g id="WHEN">%1$s</xliff:g>"</string>
     <string name="accessibility_quick_settings_detail" msgid="544463655956179791">"Ajustes rápidos, <xliff:g id="TITLE">%s</xliff:g>."</string>
-    <string name="accessibility_status_bar_hotspot" msgid="2888479317489131669">"Zona Wi-Fi"</string>
+    <string name="accessibility_status_bar_hotspot" msgid="2888479317489131669">"Punto de acceso"</string>
     <string name="accessibility_managed_profile" msgid="4703836746209377356">"Perfil de trabajo"</string>
     <string name="tuner_warning_title" msgid="7721976098452135267">"Diversión solo para algunos"</string>
     <string name="tuner_warning" msgid="1861736288458481650">"El configurador de UI del sistema te ofrece otras formas de modificar y personalizar la interfaz de usuario de Android. Estas funciones experimentales pueden cambiar, fallar o desaparecer en futuras versiones. Te recomendamos que tengas cuidado."</string>
@@ -712,11 +712,11 @@
     <string name="notification_alert_title" msgid="3656229781017543655">"Predeterminado"</string>
     <string name="notification_bubble_title" msgid="8330481035191903164">"Burbuja"</string>
     <string name="notification_channel_summary_low" msgid="4860617986908931158">"Sin sonido ni vibración"</string>
-    <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Sin sonido ni vibración y se muestra más abajo en la sección de conversaciones"</string>
+    <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Sin sonido ni vibración, y se muestra más abajo en la sección de conversaciones"</string>
     <string name="notification_channel_summary_default" msgid="3282930979307248890">"Es posible que suene o vibre según los ajustes del teléfono"</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Es posible que suene o vibre según los ajustes del teléfono. Las conversaciones de <xliff:g id="APP_NAME">%1$s</xliff:g> aparecen como burbujas de forma predeterminada."</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Llama tu atención con un acceso directo flotante a este contenido."</string>
-    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Se muestra arriba en la sección de conversaciones en forma de burbuja flotante, y la imagen de perfil aparece en la pantalla de bloqueo"</string>
+    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Se muestra arriba en la sección de conversaciones, como burbuja flotante, y la imagen de perfil aparece en la pantalla de bloqueo"</string>
     <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Ajustes"</string>
     <string name="notification_priority_title" msgid="2079708866333537093">"Prioridad"</string>
     <string name="no_shortcut" msgid="8257177117568230126">"No se pueden usar funciones de conversación con <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index 6dde6e8..15cdb3b 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -248,7 +248,7 @@
     <string name="accessibility_remove_notification" msgid="1641455251495815527">"پاک کردن اعلان"</string>
     <string name="accessibility_gps_enabled" msgid="4061313248217660858">"‏GPS فعال شد."</string>
     <string name="accessibility_gps_acquiring" msgid="896207402196024040">"‏دستیابی به GPS."</string>
-    <string name="accessibility_tty_enabled" msgid="1123180388823381118">"‏TeleTypewriter فعال شد."</string>
+    <string name="accessibility_tty_enabled" msgid="1123180388823381118">"تله‌تایپ فعال شد."</string>
     <string name="accessibility_ringer_vibrate" msgid="6261841170896561364">"زنگ لرزشی."</string>
     <string name="accessibility_ringer_silent" msgid="8994620163934249882">"زنگ بی‌صدا."</string>
     <!-- no translation found for accessibility_casting (8708751252897282313) -->
@@ -433,7 +433,7 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"شروع"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"توقف"</string>
     <string name="media_seamless_remote_device" msgid="177033467332920464">"دستگاه"</string>
-    <string name="recents_swipe_up_onboarding" msgid="2820265886420993995">"برای تغییر برنامه‌ها،‌ تند به بالا بکشید"</string>
+    <string name="recents_swipe_up_onboarding" msgid="2820265886420993995">"برای تغییر برنامه‌ها،‌ تند به‌بالا بکشید"</string>
     <string name="recents_quick_scrub_onboarding" msgid="765934300283514912">"برای جابه‌جایی سریع میان برنامه‌ها، به چپ بکشید"</string>
     <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"تغییر وضعیت نمای کلی"</string>
     <string name="expanded_header_battery_charged" msgid="5307907517976548448">"شارژ کامل شد"</string>
@@ -452,8 +452,8 @@
     <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="7248696377626341060">"اعلان‌های کمتر فوری در زیر"</string>
     <string name="notification_tap_again" msgid="4477318164947497249">"دوباره ضربه بزنید تا باز شود"</string>
-    <string name="keyguard_unlock" msgid="8031975796351361601">"برای باز کردن، انگشتتان را تند به بالا بکشید"</string>
-    <string name="keyguard_retry" msgid="886802522584053523">"برای امتحان مجدد، انگشتتان را تند به بالا بکشید"</string>
+    <string name="keyguard_unlock" msgid="8031975796351361601">"برای باز کردن، انگشتتان را تند به‌بالا بکشید"</string>
+    <string name="keyguard_retry" msgid="886802522584053523">"برای امتحان مجدد، انگشتتان را تند به‌بالا بکشید"</string>
     <string name="do_disclosure_generic" msgid="4896482821974707167">"این دستگاه به سازمان شما تعلق دارد"</string>
     <string name="do_disclosure_with_name" msgid="2091641464065004091">"این دستگاه به <xliff:g id="ORGANIZATION_NAME">%s</xliff:g> تعلق دارد"</string>
     <string name="phone_hint" msgid="6682125338461375925">"انگشتتان را از نماد تلفن تند بکشید"</string>
@@ -802,7 +802,7 @@
     <string name="keyboard_shortcut_group_system_back" msgid="1055709713218453863">"برگشت"</string>
     <string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"اعلان‌ها"</string>
     <string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"میان‌برهای صفحه‌کلید"</string>
-    <string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"تغییر طرح‌بندی صفحه‌کلید"</string>
+    <string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"تغییر جانمایی صفحه‌کلید"</string>
     <string name="keyboard_shortcut_group_applications" msgid="7386239431100651266">"برنامه‌ها"</string>
     <string name="keyboard_shortcut_group_applications_assist" msgid="771606231466098742">"دستیار"</string>
     <string name="keyboard_shortcut_group_applications_browser" msgid="2776211137869809251">"مرورگر"</string>
@@ -979,7 +979,7 @@
     <string name="slice_permission_text_2" msgid="6758906940360746983">"- می‌تواند در <xliff:g id="APP">%1$s</xliff:g> اقدام انجام دهد"</string>
     <string name="slice_permission_checkbox" msgid="4242888137592298523">"به <xliff:g id="APP">%1$s</xliff:g> اجازه داده شود تکه‌هایی از برنامه‌ها نشان دهد"</string>
     <string name="slice_permission_allow" msgid="6340449521277951123">"مجاز"</string>
-    <string name="slice_permission_deny" msgid="6870256451658176895">"رد کردن"</string>
+    <string name="slice_permission_deny" msgid="6870256451658176895">"مجاز نبودن"</string>
     <string name="auto_saver_title" msgid="6873691178754086596">"برای زمان‌بندی «بهینه‌سازی باتری» ضربه بزنید"</string>
     <string name="auto_saver_text" msgid="3214960308353838764">"وقتی باتری روبه‌اتمام است، بهینه‌سازی باتری را روشن کنید"</string>
     <string name="no_auto_saver_action" msgid="7467924389609773835">"نه متشکرم"</string>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index 1fe5ba2..7573d29 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -381,7 +381,7 @@
     <string name="quick_settings_wifi_on_label" msgid="2489928193654318511">"Wi-Fi on käytössä"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="483130889414601732">"Ei Wi-Fi-verkkoja käytettävissä"</string>
     <string name="quick_settings_wifi_secondary_label_transient" msgid="7501659015509357887">"Otetaan käyttöön…"</string>
-    <string name="quick_settings_cast_title" msgid="2279220930629235211">"Näytön suoratoisto"</string>
+    <string name="quick_settings_cast_title" msgid="2279220930629235211">"Näytön striimaus"</string>
     <string name="quick_settings_casting" msgid="1435880708719268055">"Lähetetään"</string>
     <string name="quick_settings_cast_device_default_name" msgid="6988469571141331700">"Nimetön laite"</string>
     <string name="quick_settings_cast_device_default_description" msgid="2580520859212250265">"Valmis lähetystä varten"</string>
diff --git a/packages/SystemUI/res/values-fi/strings_tv.xml b/packages/SystemUI/res/values-fi/strings_tv.xml
index 3a80561..e22a166 100644
--- a/packages/SystemUI/res/values-fi/strings_tv.xml
+++ b/packages/SystemUI/res/values-fi/strings_tv.xml
@@ -24,5 +24,5 @@
     <string name="pip_close" msgid="5775212044472849930">"Sulje PIP"</string>
     <string name="pip_fullscreen" msgid="3877997489869475181">"Koko näyttö"</string>
     <string name="mic_active" msgid="5766614241012047024">"Mikrofoni aktiivinen"</string>
-    <string name="app_accessed_mic" msgid="2754428675130470196">"%1$s käytti mikrofoniasi"</string>
+    <string name="app_accessed_mic" msgid="2754428675130470196">"%1$s sai pääsyn mikrofoniisi"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml
index bd7686f..2c47120 100644
--- a/packages/SystemUI/res/values-gl/strings.xml
+++ b/packages/SystemUI/res/values-gl/strings.xml
@@ -248,7 +248,7 @@
     <string name="accessibility_remove_notification" msgid="1641455251495815527">"Eliminar notificación."</string>
     <string name="accessibility_gps_enabled" msgid="4061313248217660858">"GPS activado"</string>
     <string name="accessibility_gps_acquiring" msgid="896207402196024040">"Obtendo GPS."</string>
-    <string name="accessibility_tty_enabled" msgid="1123180388823381118">"TeleTypewriter activado"</string>
+    <string name="accessibility_tty_enabled" msgid="1123180388823381118">"Teletipo activado"</string>
     <string name="accessibility_ringer_vibrate" msgid="6261841170896561364">"Timbre en vibración"</string>
     <string name="accessibility_ringer_silent" msgid="8994620163934249882">"Timbre silenciado"</string>
     <!-- no translation found for accessibility_casting (8708751252897282313) -->
@@ -712,11 +712,11 @@
     <string name="notification_alert_title" msgid="3656229781017543655">"Configuración predeterminada"</string>
     <string name="notification_bubble_title" msgid="8330481035191903164">"Burbulla"</string>
     <string name="notification_channel_summary_low" msgid="4860617986908931158">"Sen son nin vibración"</string>
-    <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Non soa nin vibra, e aparece máis abaixo na sección de conversas"</string>
-    <string name="notification_channel_summary_default" msgid="3282930979307248890">"Podería soar ou vibrar en función da configuración do teléfono"</string>
+    <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Sen son nin vibración, e aparecen máis abaixo na sección de conversas"</string>
+    <string name="notification_channel_summary_default" msgid="3282930979307248890">"Poderían soar ou vibrar en función da configuración do teléfono"</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Podería soar ou vibrar en función da configuración do teléfono. Conversas desde a burbulla da aplicación <xliff:g id="APP_NAME">%1$s</xliff:g> de forma predeterminada."</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Mantén a túa atención cun atallo flotante a este contido."</string>
-    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Móstrase na parte superior da sección de conversas en forma de burbulla flotante e aparece a imaxe do perfil na pantalla de bloqueo"</string>
+    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Móstranse na parte superior da sección de conversas en forma de burbulla flotante e aparece a imaxe do perfil na pantalla de bloqueo"</string>
     <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Configuración"</string>
     <string name="notification_priority_title" msgid="2079708866333537093">"Prioridade"</string>
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> non admite funcións de conversa"</string>
@@ -786,7 +786,7 @@
     <string name="keyboard_key_media_stop" msgid="1509943745250377699">"Deter"</string>
     <string name="keyboard_key_media_next" msgid="8502476691227914952">"Seguinte"</string>
     <string name="keyboard_key_media_previous" msgid="5637875709190955351">"Anterior"</string>
-    <string name="keyboard_key_media_rewind" msgid="3450387734224327577">"Rebobinar"</string>
+    <string name="keyboard_key_media_rewind" msgid="3450387734224327577">"Retroceder"</string>
     <string name="keyboard_key_media_fast_forward" msgid="3572444327046911822">"Avance rápido"</string>
     <string name="keyboard_key_page_up" msgid="173914303254199845">"Re Páx"</string>
     <string name="keyboard_key_page_down" msgid="9035902490071829731">"Av Páx"</string>
diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml
index b495bb3..d793c72 100644
--- a/packages/SystemUI/res/values-gu/strings.xml
+++ b/packages/SystemUI/res/values-gu/strings.xml
@@ -859,7 +859,7 @@
     <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"ટાઇલને ફરીથી ગોઠવવા માટે આંગળી દબાવીને ખેંચો"</string>
     <string name="drag_to_remove_tiles" msgid="4682194717573850385">"દૂર કરવા માટે અહીં ખેંચો"</string>
     <string name="drag_to_remove_disabled" msgid="933046987838658850">"તમને ઓછામાં ઓછી <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> ટાઇલની જરૂર છે"</string>
-    <string name="qs_edit" msgid="5583565172803472437">"સંપાદિત કરો"</string>
+    <string name="qs_edit" msgid="5583565172803472437">"ફેરફાર કરો"</string>
     <string name="tuner_time" msgid="2450785840990529997">"સમય"</string>
   <string-array name="clock_options">
     <item msgid="3986445361435142273">"કલાક, મિનિટ અને સેકન્ડ બતાવો"</item>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index 44c0656..b489088 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -514,7 +514,7 @@
     <string name="manage_notifications_history_text" msgid="57055985396576230">"इतिहास"</string>
     <string name="notification_section_header_incoming" msgid="850925217908095197">"नई सूचनाएं"</string>
     <string name="notification_section_header_gentle" msgid="6804099527336337197">"बिना आवाज़ किए मिलने वाली सूचनाएं"</string>
-    <string name="notification_section_header_alerting" msgid="5581175033680477651">"वाइब्रेशन या आवाज़ के साथ मिलने वाली सूचनाएं"</string>
+    <string name="notification_section_header_alerting" msgid="5581175033680477651">"सूचनाएं"</string>
     <string name="notification_section_header_conversations" msgid="821834744538345661">"बातचीत"</string>
     <string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"बिना आवाज़ की सभी सूचनाएं हटाएं"</string>
     <string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"\'परेशान न करें\' सुविधा के ज़रिए कुछ समय के लिए सूचनाएं दिखाना रोक दिया गया है"</string>
@@ -714,11 +714,11 @@
     <string name="notification_alert_title" msgid="3656229781017543655">"डिफ़ॉल्ट"</string>
     <string name="notification_bubble_title" msgid="8330481035191903164">"बबल"</string>
     <string name="notification_channel_summary_low" msgid="4860617986908931158">"किसी तरह की आवाज़ या वाइब्रेशन न हो"</string>
-    <string name="notification_conversation_summary_low" msgid="1734433426085468009">"इससे किसी तरह की आवाज़ या वाइब्रेशन नहीं होता और \'बातचीत\', सेक्शन में सबसे नीचे दिखती है"</string>
+    <string name="notification_conversation_summary_low" msgid="1734433426085468009">"इससे किसी तरह की आवाज़ या वाइब्रेशन नहीं होता और बातचीत, सेक्शन में सबसे नीचे दिखती है"</string>
     <string name="notification_channel_summary_default" msgid="3282930979307248890">"फ़ोन की सेटिंग के आधार पर, सूचना आने पर घंटी बज सकती है या वाइब्रेशन हो सकता है"</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"फ़ोन की सेटिंग के आधार पर, सूचना आने पर घंटी बज सकती है या वाइब्रेशन हो सकता है. <xliff:g id="APP_NAME">%1$s</xliff:g> में होने वाली बातचीत, डिफ़ॉल्ट रूप से बबल के तौर पर दिखती है."</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"फ़्लोट करने वाले शॉर्टकट की मदद से इस सामग्री पर आपका ध्यान बना रहता है."</string>
-    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"इससे बातचीत की सुविधा, सेक्शन में सबसे ऊपर और फ़्लोटिंग बबल के तौर पर दिखती है. साथ ही, लॉक स्क्रीन पर प्रोफ़ाइल फ़ोटो दिखती है"</string>
+    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"इससे बातचीत, सेक्शन में सबसे ऊपर और फ़्लोटिंग बबल के तौर पर दिखती है. साथ ही, लॉक स्क्रीन पर प्रोफ़ाइल फ़ोटो दिखती है"</string>
     <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"सेटिंग"</string>
     <string name="notification_priority_title" msgid="2079708866333537093">"प्राथमिकता"</string>
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> पर बातचीत की सुविधाएं काम नहीं करतीं"</string>
diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml
index 6a7d0b2..6591006 100644
--- a/packages/SystemUI/res/values-hy/strings.xml
+++ b/packages/SystemUI/res/values-hy/strings.xml
@@ -248,7 +248,7 @@
     <string name="accessibility_remove_notification" msgid="1641455251495815527">"Մաքրել ծանուցումը:"</string>
     <string name="accessibility_gps_enabled" msgid="4061313248217660858">"GPS-ը միացված է:"</string>
     <string name="accessibility_gps_acquiring" msgid="896207402196024040">"GPS-ի ստացում:"</string>
-    <string name="accessibility_tty_enabled" msgid="1123180388823381118">"Հեռամուտքագրիչը միացված է:"</string>
+    <string name="accessibility_tty_enabled" msgid="1123180388823381118">"Հեռատիպը միացված է:"</string>
     <string name="accessibility_ringer_vibrate" msgid="6261841170896561364">"Թրթռազանգ:"</string>
     <string name="accessibility_ringer_silent" msgid="8994620163934249882">"Զանգակը լռեցված է:"</string>
     <!-- no translation found for accessibility_casting (8708751252897282313) -->
@@ -513,7 +513,7 @@
     <string name="notification_section_header_incoming" msgid="850925217908095197">"Նոր"</string>
     <string name="notification_section_header_gentle" msgid="6804099527336337197">"Անձայն"</string>
     <string name="notification_section_header_alerting" msgid="5581175033680477651">"Ծանուցումներ"</string>
-    <string name="notification_section_header_conversations" msgid="821834744538345661">"Խոսակցություններ"</string>
+    <string name="notification_section_header_conversations" msgid="821834744538345661">"Զրույցներ"</string>
     <string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Ջնջել բոլոր անձայն ծանուցումները"</string>
     <string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Ծանուցումները չեն ցուցադրվի «Չանհանգստացնել» ռեժիմում"</string>
     <string name="media_projection_action_text" msgid="3634906766918186440">"Սկսել հիմա"</string>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 905f392..e4819bf 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -599,7 +599,7 @@
     <string name="screen_pinning_description_accessible" msgid="7386449191953535332">"Ini akan terus ditampilkan sampai Anda melepas pin. Sentuh lama tombol Ringkasan untuk melepas pin."</string>
     <string name="screen_pinning_description_recents_invisible_accessible" msgid="2857071808674481986">"Ini akan terus ditampilkan sampai Anda melepas pin. Sentuh lama tombol Beranda untuk melepas pin."</string>
     <string name="screen_pinning_exposes_personal_data" msgid="8189852022981524789">"Data pribadi dapat diakses (seperti kontak dan konten email)."</string>
-    <string name="screen_pinning_can_open_other_apps" msgid="7529756813231421455">"Aplikasi yang dipasangi pin dapat membuka aplikasi lain."</string>
+    <string name="screen_pinning_can_open_other_apps" msgid="7529756813231421455">"Aplikasi yang disematkan dapat membuka aplikasi lain."</string>
     <string name="screen_pinning_toast" msgid="8177286912533744328">"Untuk melepas pin aplikasi ini, sentuh &amp; lama tombol Kembali dan Ringkasan"</string>
     <string name="screen_pinning_toast_recents_invisible" msgid="6850978077443052594">"Untuk melepas pin aplikasi ini, sentuh &amp; lama tombol Kembali dan Layar utama"</string>
     <string name="screen_pinning_toast_gesture_nav" msgid="170699893395336705">"Untuk melepas pin aplikasi ini, geser ke atas &amp; tahan"</string>
@@ -856,7 +856,7 @@
     <string name="left_icon" msgid="5036278531966897006">"Ikon kiri"</string>
     <string name="right_icon" msgid="1103955040645237425">"Ikon kanan"</string>
     <string name="drag_to_add_tiles" msgid="8933270127508303672">"Tahan dan tarik untuk menambahkan kartu"</string>
-    <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Tahan dan tarik untuk mengatur ulang kartu"</string>
+    <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Tahan dan tarik untuk menata ulang kartu"</string>
     <string name="drag_to_remove_tiles" msgid="4682194717573850385">"Tarik ke sini untuk menghapus"</string>
     <string name="drag_to_remove_disabled" msgid="933046987838658850">"Anda membutuhkan setidaknya <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> kartu"</string>
     <string name="qs_edit" msgid="5583565172803472437">"Edit"</string>
diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml
index dc541c8..507bdc9 100644
--- a/packages/SystemUI/res/values-is/strings.xml
+++ b/packages/SystemUI/res/values-is/strings.xml
@@ -855,10 +855,10 @@
     <string name="right_keycode" msgid="2480715509844798438">"Lykiltákn til hægri"</string>
     <string name="left_icon" msgid="5036278531966897006">"Tákn til vinstri"</string>
     <string name="right_icon" msgid="1103955040645237425">"Tákn til hægri"</string>
-    <string name="drag_to_add_tiles" msgid="8933270127508303672">"Haltu inni og dragðu til að bæta við reitum"</string>
+    <string name="drag_to_add_tiles" msgid="8933270127508303672">"Haltu inni og dragðu til að bæta við flísum"</string>
     <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Haltu og dragðu til að endurraða flísum"</string>
     <string name="drag_to_remove_tiles" msgid="4682194717573850385">"Dragðu hingað til að fjarlægja"</string>
-    <string name="drag_to_remove_disabled" msgid="933046987838658850">"Reitirnir mega ekki vera færri en <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>"</string>
+    <string name="drag_to_remove_disabled" msgid="933046987838658850">"Flísarnar mega ekki vera færri en <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>"</string>
     <string name="qs_edit" msgid="5583565172803472437">"Breyta"</string>
     <string name="tuner_time" msgid="2450785840990529997">"Tími"</string>
   <string-array name="clock_options">
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index 7ed5f45..5a735ae 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -716,7 +716,7 @@
     <string name="notification_channel_summary_default" msgid="3282930979307248890">"Può suonare o vibrare in base alle impostazioni del telefono"</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Può suonare o vibrare in base alle impostazioni del telefono. Conversazioni dalla bolla <xliff:g id="APP_NAME">%1$s</xliff:g> per impostazione predefinita."</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Mantiene la tua attenzione con una scorciatoia mobile a questi contenuti."</string>
-    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Viene mostrata in cima alla sezione delle conversazioni, appare sotto forma di bolla mobile, mostra l\'immagine del profilo nella schermata di blocco"</string>
+    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Appare in cima alla sezione delle conversazioni e sotto forma di bolla mobile, mostra l\'immagine del profilo nella schermata di blocco"</string>
     <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Impostazioni"</string>
     <string name="notification_priority_title" msgid="2079708866333537093">"Priorità"</string>
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> non supporta le funzionalità delle conversazioni"</string>
@@ -987,7 +987,7 @@
     <string name="auto_saver_enabled_text" msgid="7889491183116752719">"Il Risparmio energetico verrà attivato automaticamente quando la carica della batteria sarà inferiore a <xliff:g id="PERCENTAGE">%d</xliff:g>%%."</string>
     <string name="open_saver_setting_action" msgid="2111461909782935190">"Impostazioni"</string>
     <string name="auto_saver_okay_action" msgid="7815925750741935386">"OK"</string>
-    <string name="heap_dump_tile_name" msgid="2464189856478823046">"Esegui dump heap SysUI"</string>
+    <string name="heap_dump_tile_name" msgid="2464189856478823046">"Dump heap SysUI"</string>
     <string name="sensor_privacy_mode" msgid="4462866919026513692">"Sensori disattivati"</string>
     <string name="device_services" msgid="1549944177856658705">"Servizi del dispositivo"</string>
     <string name="music_controls_no_title" msgid="4166497066552290938">"Senza titolo"</string>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index b72bb4a..1b7e1e8 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -960,7 +960,7 @@
     <string name="notification_channel_general" msgid="4384774889645929705">"הודעות כלליות"</string>
     <string name="notification_channel_storage" msgid="2720725707628094977">"אחסון"</string>
     <string name="notification_channel_hints" msgid="7703783206000346876">"טיפים"</string>
-    <string name="instant_apps" msgid="8337185853050247304">"אפליקציות אינסטנט"</string>
+    <string name="instant_apps" msgid="8337185853050247304">"אפליקציות ללא התקנה"</string>
     <string name="instant_apps_title" msgid="8942706782103036910">"<xliff:g id="APP">%1$s</xliff:g> פועלת"</string>
     <string name="instant_apps_message" msgid="6112428971833011754">"האפליקציה נפתחת בלי התקנה."</string>
     <string name="instant_apps_message_with_help" msgid="1816952263531203932">"האפליקציה נפתחת בלי התקנה. אפשר להקיש כדי לקבל מידע נוסף."</string>
diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml
index 9f94f9b..bf86881 100644
--- a/packages/SystemUI/res/values-ka/strings.xml
+++ b/packages/SystemUI/res/values-ka/strings.xml
@@ -716,7 +716,7 @@
     <string name="notification_channel_summary_default" msgid="3282930979307248890">"დარეკვა ან ვიბრაცია ტელეფონის პარამეტრების მიხედვით"</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"დარეკვა ან ვიბრაცია ტელეფონის პარამეტრების მიხედვით. მიმოწერები <xliff:g id="APP_NAME">%1$s</xliff:g>-ის ბუშტიდან, ნაგულისხმევად."</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"იპყრობს თქვენს ყურადღებას ამ კონტენტის მოლივლივე მალსახმობით."</string>
-    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"გამოჩნდება მიმოწერების სექციის ზედა ნაწილში მოლივლივე ბუშტის სახით, აჩვენებს პროფილის სურათს ჩაკეტილ ეკრანზე"</string>
+    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"გამოჩნდება მიმოწერების ზედა ნაწილში ბუშტის სახით, აჩვენებს პროფილის სურათს ჩაკეტილ ეკრანზე"</string>
     <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"პარამეტრები"</string>
     <string name="notification_priority_title" msgid="2079708866333537093">"პრიორიტეტი"</string>
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ს არ აქვს მიმოწერის ფუნქციების მხარდაჭერა"</string>
diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml
index 8a395ae..2232f3f 100644
--- a/packages/SystemUI/res/values-kk/strings.xml
+++ b/packages/SystemUI/res/values-kk/strings.xml
@@ -28,7 +28,7 @@
     <string name="battery_low_percent_format" msgid="4276661262843170964">"<xliff:g id="PERCENTAGE">%s</xliff:g> қалды"</string>
     <string name="battery_low_percent_format_hybrid" msgid="3985614339605686167">"Пайдалану барысына байланысты <xliff:g id="PERCENTAGE">%1$s</xliff:g> заряд, шамамен <xliff:g id="TIME">%2$s</xliff:g> қалды"</string>
     <string name="battery_low_percent_format_hybrid_short" msgid="5917433188456218857">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> заряд, шамамен <xliff:g id="TIME">%2$s</xliff:g> қалды"</string>
-    <string name="battery_low_percent_format_saver_started" msgid="4968468824040940688">"<xliff:g id="PERCENTAGE">%s</xliff:g> қалды. Battery Saver қосулы."</string>
+    <string name="battery_low_percent_format_saver_started" msgid="4968468824040940688">"<xliff:g id="PERCENTAGE">%s</xliff:g> қалды. Батареяны үнемдеу режимі қосулы."</string>
     <string name="invalid_charger" msgid="4370074072117767416">"USB арқылы зарядтау мүмкін емес. Құрылғымен бірге берілген зарядтау құралын пайдаланыңыз."</string>
     <string name="invalid_charger_title" msgid="938685362320735167">"USB арқылы зарядтау мүмкін емес"</string>
     <string name="invalid_charger_text" msgid="2339310107232691577">"Құрылғымен бірге берілген зарядтау құралын пайдаланыңыз"</string>
@@ -421,7 +421,7 @@
     <string name="quick_settings_night_secondary_label_on_at" msgid="3584738542293528235">"Қосылу уақыты: <xliff:g id="TIME">%s</xliff:g>"</string>
     <string name="quick_settings_secondary_label_until" msgid="1883981263191927372">"<xliff:g id="TIME">%s</xliff:g> дейін"</string>
     <string name="quick_settings_ui_mode_night_label" msgid="1398928270610780470">"Қараңғы тақырып"</string>
-    <string name="quick_settings_dark_mode_secondary_label_battery_saver" msgid="4990712734503013251">"Battery Saver"</string>
+    <string name="quick_settings_dark_mode_secondary_label_battery_saver" msgid="4990712734503013251">"Батареяны үнемдеу режимі"</string>
     <string name="quick_settings_dark_mode_secondary_label_on_at_sunset" msgid="6017379738102015710">"Күн батқанда қосу"</string>
     <string name="quick_settings_dark_mode_secondary_label_until_sunrise" msgid="4404885070316716472">"Күн шыққанға дейін"</string>
     <string name="quick_settings_dark_mode_secondary_label_on_at" msgid="5128758823486361279">"Қосылу уақыты: <xliff:g id="TIME">%s</xliff:g>"</string>
@@ -712,13 +712,13 @@
     <string name="notification_alert_title" msgid="3656229781017543655">"Әдепкі"</string>
     <string name="notification_bubble_title" msgid="8330481035191903164">"Көпіршік"</string>
     <string name="notification_channel_summary_low" msgid="4860617986908931158">"Дыбыс не діріл қолданылмайды"</string>
-    <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Дыбыс не діріл қолданылмайды, төменде әңгімелер бөлімінде шығады"</string>
+    <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Дыбыс не діріл қолданылмайды, әңгімелер бөлімінің төмен жағында шығады"</string>
     <string name="notification_channel_summary_default" msgid="3282930979307248890">"Телефон параметрлеріне байланысты шылдырлауы не дірілдеуі мүмкін"</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Телефон параметрлеріне байланысты шылдырлауы не дірілдеуі мүмкін. <xliff:g id="APP_NAME">%1$s</xliff:g> чаттары әдепкісінше қалқымалы етіп көрсетіледі."</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Осы мазмұнға бекітілген қалқымалы таңбашамен назарыңызды өзіне тартады."</string>
     <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Әңгімелер бөлімінің жоғарғы жағында тұрады, қалқыма хабар түрінде шығады, құлыптаулы экранда профиль суретін көрсетеді"</string>
     <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Параметрлер"</string>
-    <string name="notification_priority_title" msgid="2079708866333537093">"Маңыздылығы"</string>
+    <string name="notification_priority_title" msgid="2079708866333537093">"Маңызды"</string>
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> әңгімелесу функцияларын қолдамайды."</string>
     <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Жақындағы қалқыма хабарлар жоқ"</string>
     <string name="bubble_overflow_empty_subtitle" msgid="2030874469510497397">"Соңғы және жабылған қалқыма хабарлар осы жерде көрсетіледі."</string>
@@ -768,7 +768,7 @@
     </plurals>
     <string name="battery_panel_title" msgid="5931157246673665963">"Батареяны пайдалану"</string>
     <string name="battery_detail_charging_summary" msgid="8821202155297559706">"Зарядтау кезінде Батарея үнемдегіш қол жетімді емес"</string>
-    <string name="battery_detail_switch_title" msgid="6940976502957380405">"Battery Saver"</string>
+    <string name="battery_detail_switch_title" msgid="6940976502957380405">"Батареяны үнемдеу режимі"</string>
     <string name="battery_detail_switch_summary" msgid="3668748557848025990">"Өнімділікті және фондық деректерді азайтады"</string>
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> түймесі"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
@@ -859,7 +859,7 @@
     <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Элементтердің ретін өзгерту үшін оларды басып тұрып сүйреңіз"</string>
     <string name="drag_to_remove_tiles" msgid="4682194717573850385">"Керексіздерін осы жерге сүйреңіз"</string>
     <string name="drag_to_remove_disabled" msgid="933046987838658850">"Кемінде <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> бөлшек қажет."</string>
-    <string name="qs_edit" msgid="5583565172803472437">"Өңдеу"</string>
+    <string name="qs_edit" msgid="5583565172803472437">"Өзгерту"</string>
     <string name="tuner_time" msgid="2450785840990529997">"Уақыт"</string>
   <string-array name="clock_options">
     <item msgid="3986445361435142273">"Сағаттарды, минуттарды және секундтарды көрсету"</item>
diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml
index 0cb4577..bdc3025 100644
--- a/packages/SystemUI/res/values-km/strings.xml
+++ b/packages/SystemUI/res/values-km/strings.xml
@@ -421,7 +421,7 @@
     <string name="quick_settings_night_secondary_label_on_at" msgid="3584738542293528235">"បើក​នៅម៉ោង <xliff:g id="TIME">%s</xliff:g>"</string>
     <string name="quick_settings_secondary_label_until" msgid="1883981263191927372">"រហូតដល់​ម៉ោង <xliff:g id="TIME">%s</xliff:g>"</string>
     <string name="quick_settings_ui_mode_night_label" msgid="1398928270610780470">"រចនាប័ទ្ម​ងងឹត"</string>
-    <string name="quick_settings_dark_mode_secondary_label_battery_saver" msgid="4990712734503013251">"កម្មវិធីសន្សំថ្ម"</string>
+    <string name="quick_settings_dark_mode_secondary_label_battery_saver" msgid="4990712734503013251">"មុខងារ​សន្សំ​ថ្ម"</string>
     <string name="quick_settings_dark_mode_secondary_label_on_at_sunset" msgid="6017379738102015710">"បើក​នៅពេល​ថ្ងៃលិច"</string>
     <string name="quick_settings_dark_mode_secondary_label_until_sunrise" msgid="4404885070316716472">"រហូត​ដល់​ពេល​ថ្ងៃរះ"</string>
     <string name="quick_settings_dark_mode_secondary_label_on_at" msgid="5128758823486361279">"បើកនៅម៉ោង <xliff:g id="TIME">%s</xliff:g>"</string>
@@ -768,7 +768,7 @@
     </plurals>
     <string name="battery_panel_title" msgid="5931157246673665963">"ការប្រើប្រាស់ថ្ម"</string>
     <string name="battery_detail_charging_summary" msgid="8821202155297559706">"កម្មវិធីសន្សំថ្មមិនអាចប្រើបានអំឡុងពេលសាកថ្មទេ"</string>
-    <string name="battery_detail_switch_title" msgid="6940976502957380405">"កម្មវិធីសន្សំថ្ម"</string>
+    <string name="battery_detail_switch_title" msgid="6940976502957380405">"មុខងារ​សន្សំ​ថ្ម"</string>
     <string name="battery_detail_switch_summary" msgid="3668748557848025990">"កាត់បន្ថយប្រតិបត្តិការ និងទិន្នន័យផ្ទៃខាងក្រោយ"</string>
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"ប៊ូតុង <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml
index 0aa5375..38926cb 100644
--- a/packages/SystemUI/res/values-kn/strings.xml
+++ b/packages/SystemUI/res/values-kn/strings.xml
@@ -389,7 +389,7 @@
     <string name="quick_settings_cast_no_wifi" msgid="6980194769795014875">"ವೈ-ಫೈ ಸಂಪರ್ಕಗೊಂಡಿಲ್ಲ"</string>
     <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"ಪ್ರಕಾಶಮಾನ"</string>
     <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="2325362583903258677">"ಸ್ವಯಂ"</string>
-    <string name="quick_settings_inversion_label" msgid="5078769633069667698">"ಬಣ್ಣಗಳನ್ನು ಬದಲಾಯಿಸಿ"</string>
+    <string name="quick_settings_inversion_label" msgid="5078769633069667698">"ಬಣ್ಣಗಳನ್ನು ಇನ್ವರ್ಟ್ ಮಾಡಿ"</string>
     <string name="quick_settings_color_space_label" msgid="537528291083575559">"ಬಣ್ಣ ತಿದ್ದುಪಡಿ ಮೋಡ್"</string>
     <string name="quick_settings_more_settings" msgid="2878235926753776694">"ಹೆಚ್ಚಿನ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="quick_settings_done" msgid="2163641301648855793">"ಮುಗಿದಿದೆ"</string>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index 490ce15..959cbbc 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -373,7 +373,7 @@
     <string name="quick_settings_time_label" msgid="3352680970557509303">"시간"</string>
     <string name="quick_settings_user_label" msgid="1253515509432672496">"나"</string>
     <string name="quick_settings_user_title" msgid="8673045967216204537">"사용자"</string>
-    <string name="quick_settings_user_new_user" msgid="3347905871336069666">"새 사용자"</string>
+    <string name="quick_settings_user_new_user" msgid="3347905871336069666">"신규 사용자"</string>
     <string name="quick_settings_wifi_label" msgid="2879507532983487244">"Wi-Fi"</string>
     <string name="quick_settings_wifi_not_connected" msgid="4071097522427039160">"연결되어 있지 않음"</string>
     <string name="quick_settings_wifi_no_network" msgid="6003178398713839313">"네트워크가 연결되지 않음"</string>
@@ -475,7 +475,7 @@
     <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"현재 사용자: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string>
     <string name="accessibility_multi_user_switch_quick_contact" msgid="4504508915324898576">"프로필 표시"</string>
     <string name="user_add_user" msgid="4336657383006913022">"사용자 추가"</string>
-    <string name="user_new_user_name" msgid="2019166282704195789">"새 사용자"</string>
+    <string name="user_new_user_name" msgid="2019166282704195789">"신규 사용자"</string>
     <string name="guest_exit_guest_dialog_title" msgid="5015697561580641422">"게스트를 삭제하시겠습니까?"</string>
     <string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"이 세션에 있는 모든 앱과 데이터가 삭제됩니다."</string>
     <string name="guest_exit_guest_dialog_remove" msgid="7505817591242703757">"삭제"</string>
@@ -716,7 +716,7 @@
     <string name="notification_channel_summary_default" msgid="3282930979307248890">"휴대전화 설정에 따라 벨소리나 진동이 울릴 수 있음"</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"휴대전화 설정에 따라 벨소리나 진동이 울릴 수 있습니다. 기본적으로 <xliff:g id="APP_NAME">%1$s</xliff:g>의 대화는 대화창으로 표시됩니다."</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"이 콘텐츠로 연결되는 플로팅 바로가기로 사용자의 주의를 끕니다."</string>
-    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"대화 섹션 상단에 표시, 플로팅 대화창으로 표시, 그리고 잠금 화면에 프로필 사진이 표시됩니다."</string>
+    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"대화 섹션 상단에 표시, 플로팅 대화창으로 표시, 그리고 잠금 화면에 프로필 사진이 표시됨"</string>
     <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"설정"</string>
     <string name="notification_priority_title" msgid="2079708866333537093">"우선순위"</string>
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> 앱은 대화 기능을 지원하지 않습니다."</string>
diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml
index a2b3b8d..e7c9789 100644
--- a/packages/SystemUI/res/values-ky/strings.xml
+++ b/packages/SystemUI/res/values-ky/strings.xml
@@ -716,7 +716,7 @@
     <string name="notification_channel_summary_default" msgid="3282930979307248890">"Телефондун жөндөөлөрүнө жараша шыңгырап же дирилдеши мүмкүн"</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Телефондун жөндөөлөрүнө жараша шыңгырап же дирилдеши мүмкүн. <xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосундагы жазышуулар демейки жөндөө боюнча калкып чыкма билдирмелер түрүндө көрүнөт."</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Калкыма ыкчам баскыч менен көңүлүңүздү бул мазмунга буруп турат."</string>
-    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Жазышуу бөлүмүнүн жогорку жагында калкып чыкма билдирме түрүндө көрүнүп, профиль сүрөтү кулпуланган экрандан чагылдырылат"</string>
+    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Жазышуулар тизмесинин өйдө жагында калкып чыкма билдирме түрүндө көрүнүп, профиль сүрөтү кулпуланган экрандан чагылдырылат"</string>
     <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Жөндөөлөр"</string>
     <string name="notification_priority_title" msgid="2079708866333537093">"Маанилүүлүгү"</string>
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> жазышуу функцияларын колдоого албайт"</string>
@@ -856,7 +856,7 @@
     <string name="left_icon" msgid="5036278531966897006">"¨Солго¨ сүрөтчөсү"</string>
     <string name="right_icon" msgid="1103955040645237425">"¨Оңго¨ сүрөтчөсү"</string>
     <string name="drag_to_add_tiles" msgid="8933270127508303672">"Керектүү элементтерди сүйрөп келиңиз"</string>
-    <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Элементтердин иретин өзгөртүү үчүн, кармап туруп, сүйрөңүз"</string>
+    <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Элементтердин иретин өзгөртүү үчүн кармап туруп, сүйрөңүз"</string>
     <string name="drag_to_remove_tiles" msgid="4682194717573850385">"Алып салуу үчүн бул жерге сүйрөңүз"</string>
     <string name="drag_to_remove_disabled" msgid="933046987838658850">"Сизге жок дегенде <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> мозаика керек"</string>
     <string name="qs_edit" msgid="5583565172803472437">"Түзөтүү"</string>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index 9357a0c..24a68ab 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -778,7 +778,7 @@
     </plurals>
     <string name="battery_panel_title" msgid="5931157246673665963">"Akum. energ. vartoj."</string>
     <string name="battery_detail_charging_summary" msgid="8821202155297559706">"Akumuliatoriaus tausojimo priemonė nepasiekiama įkraunant"</string>
-    <string name="battery_detail_switch_title" msgid="6940976502957380405">"Akumuliat. taus. pr."</string>
+    <string name="battery_detail_switch_title" msgid="6940976502957380405">"Akum. taus. pr."</string>
     <string name="battery_detail_switch_summary" msgid="3668748557848025990">"Sumažinamas našumas ir foninių duomenų naudojimas"</string>
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"Mygtukas <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Pagrindinis"</string>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index 70250b2..5b53b08 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -715,7 +715,7 @@
     <string name="notification_alert_title" msgid="3656229781017543655">"Noklusējums"</string>
     <string name="notification_bubble_title" msgid="8330481035191903164">"Burbulis"</string>
     <string name="notification_channel_summary_low" msgid="4860617986908931158">"Nav skaņas signāla vai vibrācijas"</string>
-    <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Nav skaņas signāla vai vibrācijas, kā arī atrodas zemāk sarunu sadaļā"</string>
+    <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Nav skaņas signāla vai vibrācijas, kā arī atrodas tālāk sarunu sadaļā"</string>
     <string name="notification_channel_summary_default" msgid="3282930979307248890">"Atkarībā no tālruņa iestatījumiem var zvanīt vai vibrēt"</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Atkarībā no tālruņa iestatījumiem var zvanīt vai vibrēt. Sarunas no lietotnes <xliff:g id="APP_NAME">%1$s</xliff:g> pēc noklusējuma tiek parādītas burbulī."</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Piesaista jūsu uzmanību, rādot peldošu saīsni uz šo saturu."</string>
diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml
index 30d1b46..d63f99c 100644
--- a/packages/SystemUI/res/values-mk/strings.xml
+++ b/packages/SystemUI/res/values-mk/strings.xml
@@ -712,13 +712,13 @@
     <string name="notification_alert_title" msgid="3656229781017543655">"Стандардно"</string>
     <string name="notification_bubble_title" msgid="8330481035191903164">"Балонче"</string>
     <string name="notification_channel_summary_low" msgid="4860617986908931158">"Без звук или вибрации"</string>
-    <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Без звук или вибрации и се појавува под делот за разговор"</string>
+    <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Без звук или вибрации и се појавува подолу во делот со разговори"</string>
     <string name="notification_channel_summary_default" msgid="3282930979307248890">"Може да ѕвони или вибрира во зависност од поставките на телефонот"</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Може да ѕвони или вибрира во зависност од поставките на телефонот Стандардно, разговорите од <xliff:g id="APP_NAME">%1$s</xliff:g> се во балончиња."</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Ви го задржува вниманието со лебдечка кратенка на содржинава."</string>
     <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Се појавува на горниот дел од секцијата на разговорот во вид на лебдечко меурче, покажувајќи ја профилната слика на заклучениот екран"</string>
     <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Поставки"</string>
-    <string name="notification_priority_title" msgid="2079708866333537093">"Приоритет"</string>
+    <string name="notification_priority_title" msgid="2079708866333537093">"Приоритетно"</string>
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не поддржува функции за разговор"</string>
     <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Нема неодамнешни балончиња"</string>
     <string name="bubble_overflow_empty_subtitle" msgid="2030874469510497397">"Неодамнешните и отфрлените балончиња ќе се појавуваат тука"</string>
diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml
index 070364d..0d3f360 100644
--- a/packages/SystemUI/res/values-ml/strings.xml
+++ b/packages/SystemUI/res/values-ml/strings.xml
@@ -389,7 +389,7 @@
     <string name="quick_settings_cast_no_wifi" msgid="6980194769795014875">"വൈഫൈ കണക്റ്റ് ചെയ്‌തിട്ടില്ല"</string>
     <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"തെളിച്ചം"</string>
     <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="2325362583903258677">"യാന്ത്രികം"</string>
-    <string name="quick_settings_inversion_label" msgid="5078769633069667698">"നിറം മാറ്റുക"</string>
+    <string name="quick_settings_inversion_label" msgid="5078769633069667698">"നെഗറ്റീവ് ലുക്ക്"</string>
     <string name="quick_settings_color_space_label" msgid="537528291083575559">"വർണ്ണം ശരിയാക്കൽ മോഡ്"</string>
     <string name="quick_settings_more_settings" msgid="2878235926753776694">"കൂടുതൽ ക്രമീകരണങ്ങൾ"</string>
     <string name="quick_settings_done" msgid="2163641301648855793">"പൂർത്തിയാക്കി"</string>
diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml
index f27e885..f683e28 100644
--- a/packages/SystemUI/res/values-mn/strings.xml
+++ b/packages/SystemUI/res/values-mn/strings.xml
@@ -712,7 +712,7 @@
     <string name="notification_alert_title" msgid="3656229781017543655">"Өгөгдмөл"</string>
     <string name="notification_bubble_title" msgid="8330481035191903164">"Бөмбөлөг"</string>
     <string name="notification_channel_summary_low" msgid="4860617986908931158">"Дуу эсвэл чичиргээ байхгүй"</string>
-    <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Дуу эсвэл чичиргээ байхгүй бөгөөд харицан ярианы хэсгийн доод талд харагдана"</string>
+    <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Дуу эсвэл чичиргээ байхгүй бөгөөд харилцан ярианы хэсгийн доод талд харагдана"</string>
     <string name="notification_channel_summary_default" msgid="3282930979307248890">"Утасны тохиргоонд тулгуурлан хонх дуугаргах эсвэл чичирхийлж болзошгүй"</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Утасны тохиргоонд тулгуурлан хонх дуугаргах эсвэл чичирхийлж болзошгүй. <xliff:g id="APP_NAME">%1$s</xliff:g>-н харилцан яриаг өгөгдмөл тохиргооны дагуу бөмбөлөг болгоно."</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Энэ контентын хөвөн гарч ирэх товчлолтойгоор таны анхаарлыг татдаг."</string>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index 0c29a25..84da74b 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -987,7 +987,7 @@
     <string name="auto_saver_enabled_text" msgid="7889491183116752719">"Penjimat Bateri akan dihidupkan secara automatik setelah kuasa bateri kurang daripada <xliff:g id="PERCENTAGE">%d</xliff:g>%%."</string>
     <string name="open_saver_setting_action" msgid="2111461909782935190">"Tetapan"</string>
     <string name="auto_saver_okay_action" msgid="7815925750741935386">"OK"</string>
-    <string name="heap_dump_tile_name" msgid="2464189856478823046">"Longgok Tmbunn SysUI"</string>
+    <string name="heap_dump_tile_name" msgid="2464189856478823046">"DumpSys"</string>
     <string name="sensor_privacy_mode" msgid="4462866919026513692">"Penderia dimatikan"</string>
     <string name="device_services" msgid="1549944177856658705">"Perkhidmatan Peranti"</string>
     <string name="music_controls_no_title" msgid="4166497066552290938">"Tiada tajuk"</string>
diff --git a/packages/SystemUI/res/values-nb/strings_tv.xml b/packages/SystemUI/res/values-nb/strings_tv.xml
index 22580e6..9b46678 100644
--- a/packages/SystemUI/res/values-nb/strings_tv.xml
+++ b/packages/SystemUI/res/values-nb/strings_tv.xml
@@ -24,5 +24,5 @@
     <string name="pip_close" msgid="5775212044472849930">"Lukk PIP"</string>
     <string name="pip_fullscreen" msgid="3877997489869475181">"Fullskjerm"</string>
     <string name="mic_active" msgid="5766614241012047024">"Mikrofonen er aktiv"</string>
-    <string name="app_accessed_mic" msgid="2754428675130470196">"%1$s brukte mikrofonen din"</string>
+    <string name="app_accessed_mic" msgid="2754428675130470196">"%1$s fikk tilgang til mikrofonen din"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml
index cf5d715..e0d20e6 100644
--- a/packages/SystemUI/res/values-ne/strings.xml
+++ b/packages/SystemUI/res/values-ne/strings.xml
@@ -43,7 +43,7 @@
     <string name="status_bar_settings_mute_label" msgid="914392730086057522">"म्युट गर्नुहोस्"</string>
     <string name="status_bar_settings_auto_brightness_label" msgid="2151934479226017725">"स्वतः"</string>
     <string name="status_bar_settings_notifications" msgid="5285316949980621438">"सूचनाहरू"</string>
-    <string name="bluetooth_tethered" msgid="4171071193052799041">"ब्लुटुथ टेथर भयो"</string>
+    <string name="bluetooth_tethered" msgid="4171071193052799041">"ब्लुटुथ टेदर भयो"</string>
     <string name="status_bar_input_method_settings_configure_input_methods" msgid="2972273031043777851">"इनपुट विधिहरू सेटअप गर्नुहोस्"</string>
     <string name="status_bar_use_physical_keyboard" msgid="4849251850931213371">"वास्तविक किबोर्ड"</string>
     <string name="usb_device_permission_prompt" msgid="4414719028369181772">"<xliff:g id="APPLICATION">%1$s</xliff:g> लाई <xliff:g id="USB_DEVICE">%2$s</xliff:g> माथि पहुँच राख्ने अनुमति दिने हो?"</string>
@@ -341,7 +341,7 @@
     <string name="dessert_case" msgid="9104973640704357717">"Dessert Case"</string>
     <string name="start_dreams" msgid="9131802557946276718">"स्क्रिन सेभर"</string>
     <string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
-    <string name="quick_settings_header_onboarding_text" msgid="1918085351115504765">"थप विकल्पहरूका लागि आइकनहरूमा छोइराख्नुहोस्"</string>
+    <string name="quick_settings_header_onboarding_text" msgid="1918085351115504765">"थप विकल्पहरूका लागि आइकनहरूमा टच एण्ड होल्ड गर्नुहोस्"</string>
     <string name="quick_settings_dnd_label" msgid="7728690179108024338">"बाधा नपुऱ्याउनुहोस्"</string>
     <string name="quick_settings_dnd_priority_label" msgid="6251076422352664571">"प्राथमिकता मात्र"</string>
     <string name="quick_settings_dnd_alarms_label" msgid="1241780970469630835">"अलार्महरू मात्र"</string>
@@ -593,16 +593,16 @@
     <string name="volume_odi_captions_hint_disable" msgid="2518846326748183407">"असक्षम पार्नुहोस्"</string>
     <string name="accessibility_output_chooser" msgid="7807898688967194183">"आउटपुट यन्त्र बदल्नुहोस्"</string>
     <string name="screen_pinning_title" msgid="9058007390337841305">"एप पिन गरिएको छ"</string>
-    <string name="screen_pinning_description" msgid="8699395373875667743">"तपाईंले अनपिन नगरेसम्म यसले त्यसलाई दृश्यमा कायम राख्छ। अनपिन गर्न पछाडि र परिदृश्य बटनलाई छोइराख्नुहोस्।"</string>
-    <string name="screen_pinning_description_recents_invisible" msgid="4564466648700390037">"तपाईंले अनपिन नगरेसम्म यसले त्यसलाई दृश्यमा कायम राख्छ। अनपिन गर्न पछाडि र गृह नामक बटनहरूलाई छोइराख्नुहोस्।"</string>
+    <string name="screen_pinning_description" msgid="8699395373875667743">"तपाईंले अनपिन नगरेसम्म यसले त्यसलाई दृश्यमा कायम राख्छ। अनपिन गर्न पछाडि र परिदृश्य बटनलाई टच एण्ड होल्ड गर्नुहोस्।"</string>
+    <string name="screen_pinning_description_recents_invisible" msgid="4564466648700390037">"तपाईंले अनपिन नगरेसम्म यसले त्यसलाई दृश्यमा कायम राख्छ। अनपिन गर्न पछाडि र गृह नामक बटनहरूलाई टच एण्ड होल्ड गर्नुहोस्।"</string>
     <string name="screen_pinning_description_gestural" msgid="7246323931831232068">"तपाईंले यो एप अनपिन नगरेसम्म यो एप यहाँ देखिइरहने छ। अनपिन गर्न माथितिर स्वाइप गरी होल्ड गर्नुहोस्।"</string>
-    <string name="screen_pinning_description_accessible" msgid="7386449191953535332">"तपाईंले अनपिन नगरेसम्म यसले त्यसलाई दृश्यमा कायम राख्छ। अनपिन गर्न परिदृश्य बटनलाई छोइराख्नुहोस्।"</string>
-    <string name="screen_pinning_description_recents_invisible_accessible" msgid="2857071808674481986">"तपाईंले अनपिन नगरेसम्म यसले त्यसलाई दृश्यमा कायम राख्छ। अनपिन गर्न गृह नामक बटनलाई छोइराख्नुहोस्।"</string>
+    <string name="screen_pinning_description_accessible" msgid="7386449191953535332">"तपाईंले अनपिन नगरेसम्म यसले त्यसलाई दृश्यमा कायम राख्छ। अनपिन गर्न परिदृश्य बटनलाई टच एण्ड होल्ड गर्नुहोस्।"</string>
+    <string name="screen_pinning_description_recents_invisible_accessible" msgid="2857071808674481986">"तपाईंले अनपिन नगरेसम्म यसले त्यसलाई दृश्यमा कायम राख्छ। अनपिन गर्न गृह नामक बटनलाई टच एण्ड होल्ड गर्नुहोस्।"</string>
     <string name="screen_pinning_exposes_personal_data" msgid="8189852022981524789">"स्क्रिनमा व्यक्तिगत डेटा (जस्तै सम्पर्क ठेगाना र इमेलको सामग्री) देखिन सक्छ।"</string>
     <string name="screen_pinning_can_open_other_apps" msgid="7529756813231421455">"पिन गरिएको एपले अन्य एप खोल्न सक्छ।"</string>
-    <string name="screen_pinning_toast" msgid="8177286912533744328">"यो एप अनपनि गर्न पछाडि र विवरण नामक बटनहरूलाई छोइराख्नुहोस्"</string>
-    <string name="screen_pinning_toast_recents_invisible" msgid="6850978077443052594">"यो एप अनपनि गर्न पछाडि र होम बटनलाई छोइराख्नुहोस्"</string>
-    <string name="screen_pinning_toast_gesture_nav" msgid="170699893395336705">"यो एप अनपिन गर्न माथितिर स्वाइप गरी स्क्रिनमा छोइराख्नुहोस्"</string>
+    <string name="screen_pinning_toast" msgid="8177286912533744328">"यो एप अनपनि गर्न पछाडि र विवरण नामक बटनहरूलाई टच एण्ड होल्ड गर्नुहोस्"</string>
+    <string name="screen_pinning_toast_recents_invisible" msgid="6850978077443052594">"यो एप अनपनि गर्न पछाडि र होम बटनलाई टच एण्ड होल्ड गर्नुहोस्"</string>
+    <string name="screen_pinning_toast_gesture_nav" msgid="170699893395336705">"यो एप अनपिन गर्न माथितिर स्वाइप गरी स्क्रिनमा टच एण्ड होल्ड गर्नुहोस्"</string>
     <string name="screen_pinning_positive" msgid="3285785989665266984">"बुझेँ"</string>
     <string name="screen_pinning_negative" msgid="6882816864569211666">"धन्यवाद पर्दैन"</string>
     <string name="screen_pinning_start" msgid="7483998671383371313">"एप पिन गरियो"</string>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index 20cc850..a65794b 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -392,7 +392,7 @@
     <string name="quick_settings_inversion_label" msgid="5078769633069667698">"Kleuren omkeren"</string>
     <string name="quick_settings_color_space_label" msgid="537528291083575559">"Modus voor kleurcorrectie"</string>
     <string name="quick_settings_more_settings" msgid="2878235926753776694">"Meer instellingen"</string>
-    <string name="quick_settings_done" msgid="2163641301648855793">"Gereed"</string>
+    <string name="quick_settings_done" msgid="2163641301648855793">"Klaar"</string>
     <string name="quick_settings_connected" msgid="3873605509184830379">"Verbonden"</string>
     <string name="quick_settings_connected_battery_level" msgid="1322075669498906959">"Verbonden, batterij <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
     <string name="quick_settings_connecting" msgid="2381969772953268809">"Verbinding maken…"</string>
@@ -694,7 +694,7 @@
     <string name="notification_channel_silenced" msgid="1995937493874511359">"Deze meldingen worden zonder geluid weergegeven"</string>
     <string name="notification_channel_unsilenced" msgid="94878840742161152">"Deze meldingen stellen je op de hoogte"</string>
     <string name="inline_blocking_helper" msgid="2891486013649543452">"Meestal sluit je deze meldingen. \nWil je ze blijven weergeven?"</string>
-    <string name="inline_done_button" msgid="6043094985588909584">"Gereed"</string>
+    <string name="inline_done_button" msgid="6043094985588909584">"Klaar"</string>
     <string name="inline_ok_button" msgid="603075490581280343">"Toepassen"</string>
     <string name="inline_keep_showing" msgid="8736001253507073497">"Deze meldingen blijven weergeven?"</string>
     <string name="inline_stop_button" msgid="2453460935438696090">"Meldingen stoppen"</string>
@@ -712,11 +712,11 @@
     <string name="notification_alert_title" msgid="3656229781017543655">"Standaard"</string>
     <string name="notification_bubble_title" msgid="8330481035191903164">"Bubbel"</string>
     <string name="notification_channel_summary_low" msgid="4860617986908931158">"Geen geluid of trilling"</string>
-    <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Geen geluid of trilling en wordt op een lagere positie in het gedeelte met gesprekken weergegeven"</string>
+    <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Geen geluid of trilling en wordt lager in het gedeelte met gesprekken weergegeven"</string>
     <string name="notification_channel_summary_default" msgid="3282930979307248890">"Kan overgaan of trillen op basis van de telefooninstellingen"</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Kan overgaan of trillen op basis van de telefooninstellingen. Gesprekken uit <xliff:g id="APP_NAME">%1$s</xliff:g> worden standaard als bubbels weergegeven."</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Trekt de aandacht met een zwevende snelkoppeling naar deze content."</string>
-    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Wordt bovenaan het gedeelte met gesprekken weergegeven, verschijnt als zwevende bubbel, geeft de profielfoto weer op het vergrendelscherm"</string>
+    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Wordt bovenaan het gespreksgedeelte weergegeven, verschijnt als zwevende bubbel, geeft profielfoto weer op vergrendelscherm"</string>
     <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Instellingen"</string>
     <string name="notification_priority_title" msgid="2079708866333537093">"Prioriteit"</string>
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ondersteunt geen gespreksfuncties"</string>
@@ -741,7 +741,7 @@
     <string name="notification_channel_switch_accessibility" msgid="8979885820432540252">"Meldingen van dit kanaal toestaan"</string>
     <string name="notification_more_settings" msgid="4936228656989201793">"Meer instellingen"</string>
     <string name="notification_app_settings" msgid="8963648463858039377">"Aanpassen"</string>
-    <string name="notification_done" msgid="6215117625922713976">"Gereed"</string>
+    <string name="notification_done" msgid="6215117625922713976">"Klaar"</string>
     <string name="inline_undo" msgid="9026953267645116526">"Ongedaan maken"</string>
     <string name="demote" msgid="6225813324237153980">"Deze melding markeren als geen gesprek"</string>
     <string name="notification_conversation_favorite" msgid="1905240206975921907">"Belangrijk gesprek"</string>
diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml
index c269c6b..9527c3f 100644
--- a/packages/SystemUI/res/values-or/strings.xml
+++ b/packages/SystemUI/res/values-or/strings.xml
@@ -716,7 +716,7 @@
     <string name="notification_channel_summary_default" msgid="3282930979307248890">"ଫୋନ୍ ସେଟିଂସ୍ ଆଧାରରେ ରିଙ୍ଗ କିମ୍ବା ଭାଇବ୍ରେଟ୍ ହୋଇପାରେ"</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"ଫୋନ୍ ସେଟିଂସ୍ ଆଧାରରେ ରିଙ୍ଗ କିମ୍ବା ଭାଇବ୍ରେଟ୍ ହୋଇପାରେ। <xliff:g id="APP_NAME">%1$s</xliff:g>ରୁ ବାର୍ତ୍ତାଳାପଗୁଡ଼ିକ ଡିଫଲ୍ଟ ଭାବରେ ବବଲ୍ ହୁଏ।"</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"ଏହି ବିଷୟବସ୍ତୁ ପାଇଁ ଏକ ଭାସମାନ ସର୍ଟକଟ୍ ସହ ଆପଣଙ୍କର ଧ୍ୟାନ ଦିଅନ୍ତୁ।"</string>
-    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"ବାର୍ତ୍ତାଳାପ ବିଭାଗର ଶୀର୍ଷରେ ଦେଖାଏ, ଭାସମାନ ବବଲ୍ ଭାବେ ଦେଖାଯାଏ, ଲକ୍ ସ୍କ୍ରିନରେ ପ୍ରୋଫାଇଲ୍ ଛବି ଡିସପ୍ଲେ କରେ"</string>
+    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"ବାର୍ତ୍ତାଳାପ ବିଭାଗର ଶୀର୍ଷରେ ଦେଖାଏ, ଫ୍ଲୋଟିଂ ବବଲ୍ ଭାବେ ଦେଖାଯାଏ, ଲକ୍ ସ୍କ୍ରିନରେ ପ୍ରୋଫାଇଲ୍ ଛବି ଡିସପ୍ଲେ କରେ"</string>
     <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"ସେଟିଂସ୍"</string>
     <string name="notification_priority_title" msgid="2079708866333537093">"ପ୍ରାଥମିକତା"</string>
     <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ବାର୍ତ୍ତାଳାପ ଫିଚରଗୁଡ଼ିକୁ ସମର୍ଥନ କରେ ନାହିଁ"</string>
@@ -855,7 +855,7 @@
     <string name="right_keycode" msgid="2480715509844798438">"ଡାହାଣ କୀ\'କୋଡ୍‍"</string>
     <string name="left_icon" msgid="5036278531966897006">"ବାମ ଆଇକନ୍‍"</string>
     <string name="right_icon" msgid="1103955040645237425">"ଡାହାଣ ଆଇକନ୍"</string>
-    <string name="drag_to_add_tiles" msgid="8933270127508303672">"ଟାଇଲ୍ ଯୋଡ଼ିବା ପାଇଁ ଦାବିଧରି ଟାଣନ୍ତୁ"</string>
+    <string name="drag_to_add_tiles" msgid="8933270127508303672">"ଟାଇଲ୍ ଯୋଗ କରିବା ପାଇଁ ଦାବିଧରି ଟାଣନ୍ତୁ"</string>
     <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"ଟାଇଲ୍‍ ପୁଣି ସଜାଇବାକୁ ଦାବିଧରି ଟାଣନ୍ତୁ"</string>
     <string name="drag_to_remove_tiles" msgid="4682194717573850385">"ବାହାର କରିବାକୁ ଏଠାକୁ ଡ୍ରାଗ୍‍ କରନ୍ତୁ"</string>
     <string name="drag_to_remove_disabled" msgid="933046987838658850">"ଆପଣଙ୍କର ଅତିକମ୍‌ରେ <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>ଟି ଟାଇଲ୍ ଆବଶ୍ୟକ"</string>
diff --git a/packages/SystemUI/res/values-pl/strings_tv.xml b/packages/SystemUI/res/values-pl/strings_tv.xml
index 5921aa7..852ea505 100644
--- a/packages/SystemUI/res/values-pl/strings_tv.xml
+++ b/packages/SystemUI/res/values-pl/strings_tv.xml
@@ -24,5 +24,5 @@
     <string name="pip_close" msgid="5775212044472849930">"Zamknij PIP"</string>
     <string name="pip_fullscreen" msgid="3877997489869475181">"Pełny ekran"</string>
     <string name="mic_active" msgid="5766614241012047024">"Mikrofon aktywny"</string>
-    <string name="app_accessed_mic" msgid="2754428675130470196">"Aplikacja %1$s korzystała z mikrofonu"</string>
+    <string name="app_accessed_mic" msgid="2754428675130470196">"Aplikacja %1$s uzyskała dostęp do mikrofonu"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index 6b16942..aa92135 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -713,12 +713,12 @@
     <string name="notification_bubble_title" msgid="8330481035191903164">"Bolha"</string>
     <string name="notification_channel_summary_low" msgid="4860617986908931158">"Som e vibração desativados"</string>
     <string name="notification_conversation_summary_low" msgid="1734433426085468009">"O som e a vibração estão desativados, e o balão aparece na parte inferior da seção de conversa"</string>
-    <string name="notification_channel_summary_default" msgid="3282930979307248890">"Pode vibrar ou tocar com base nas configurações do smartphone"</string>
+    <string name="notification_channel_summary_default" msgid="3282930979307248890">"Podem vibrar ou tocar com base nas configurações do smartphone"</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Pode vibrar ou tocar com base nas configurações do smartphone. As conversas do app <xliff:g id="APP_NAME">%1$s</xliff:g> aparecem em balões por padrão."</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Mantém sua atenção com um atalho flutuante para esse conteúdo."</string>
-    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Aparece na parte superior de uma seção de conversa, em forma de balão, mostrando a foto do perfil na tela de bloqueio"</string>
+    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Aparecem na parte superior de uma seção de conversa, em forma de balões, mostrando a foto do perfil na tela de bloqueio"</string>
     <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Configurações"</string>
-    <string name="notification_priority_title" msgid="2079708866333537093">"Prioridade"</string>
+    <string name="notification_priority_title" msgid="2079708866333537093">"Prioritárias"</string>
     <string name="no_shortcut" msgid="8257177117568230126">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> não é compatível com recursos de conversa"</string>
     <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Nenhum balão recente"</string>
     <string name="bubble_overflow_empty_subtitle" msgid="2030874469510497397">"Os balões recentes e dispensados aparecerão aqui"</string>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index fcd12c6..8ea6d45 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -716,7 +716,7 @@
     <string name="notification_channel_summary_default" msgid="3282930979307248890">"Pode tocar ou vibrar com base nas definições do telemóvel."</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Pode tocar ou vibrar com base nas definições do telemóvel. As conversas da app <xliff:g id="APP_NAME">%1$s</xliff:g> aparecem como um balão por predefinição."</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Mantém a sua atenção com um atalho flutuante para este conteúdo."</string>
-    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Aparece na parte superior da secção de conversas, surge como um balão flutuante e apresenta a imagem do perfil no ecrã de bloqueio."</string>
+    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Aparece no topo da secção de conversas, surge como balão flutuante e apresenta a imagem do perfil no ecrã de bloqueio."</string>
     <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Definições"</string>
     <string name="notification_priority_title" msgid="2079708866333537093">"Prioridade"</string>
     <string name="no_shortcut" msgid="8257177117568230126">"A app <xliff:g id="APP_NAME">%1$s</xliff:g> não suporta funcionalidades de conversa."</string>
@@ -855,7 +855,7 @@
     <string name="right_keycode" msgid="2480715509844798438">"Código de tecla direito"</string>
     <string name="left_icon" msgid="5036278531966897006">"Ícone esquerdo"</string>
     <string name="right_icon" msgid="1103955040645237425">"Ícone direito"</string>
-    <string name="drag_to_add_tiles" msgid="8933270127508303672">"Toque sem soltar e arraste para adicionar mosaicos."</string>
+    <string name="drag_to_add_tiles" msgid="8933270127508303672">"Tocar sem soltar e arrastar para adicionar mosaicos"</string>
     <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Tocar sem soltar e arrastar para reorganizar os mosaicos"</string>
     <string name="drag_to_remove_tiles" msgid="4682194717573850385">"Arrastar para aqui para remover"</string>
     <string name="drag_to_remove_disabled" msgid="933046987838658850">"Necessita de, pelo menos, <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> cartões"</string>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index 6b16942..aa92135 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -713,12 +713,12 @@
     <string name="notification_bubble_title" msgid="8330481035191903164">"Bolha"</string>
     <string name="notification_channel_summary_low" msgid="4860617986908931158">"Som e vibração desativados"</string>
     <string name="notification_conversation_summary_low" msgid="1734433426085468009">"O som e a vibração estão desativados, e o balão aparece na parte inferior da seção de conversa"</string>
-    <string name="notification_channel_summary_default" msgid="3282930979307248890">"Pode vibrar ou tocar com base nas configurações do smartphone"</string>
+    <string name="notification_channel_summary_default" msgid="3282930979307248890">"Podem vibrar ou tocar com base nas configurações do smartphone"</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Pode vibrar ou tocar com base nas configurações do smartphone. As conversas do app <xliff:g id="APP_NAME">%1$s</xliff:g> aparecem em balões por padrão."</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Mantém sua atenção com um atalho flutuante para esse conteúdo."</string>
-    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Aparece na parte superior de uma seção de conversa, em forma de balão, mostrando a foto do perfil na tela de bloqueio"</string>
+    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Aparecem na parte superior de uma seção de conversa, em forma de balões, mostrando a foto do perfil na tela de bloqueio"</string>
     <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Configurações"</string>
-    <string name="notification_priority_title" msgid="2079708866333537093">"Prioridade"</string>
+    <string name="notification_priority_title" msgid="2079708866333537093">"Prioritárias"</string>
     <string name="no_shortcut" msgid="8257177117568230126">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> não é compatível com recursos de conversa"</string>
     <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Nenhum balão recente"</string>
     <string name="bubble_overflow_empty_subtitle" msgid="2030874469510497397">"Os balões recentes e dispensados aparecerão aqui"</string>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index 0a34500..d2e8886 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -722,7 +722,7 @@
     <string name="notification_channel_summary_default" msgid="3282930979307248890">"Звонок или вибрация в зависимости от настроек телефона"</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Звонок или вибрация в зависимости от настроек телефона. Разговоры из приложения \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" по умолчанию появляются в виде всплывающего чата."</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Привлекает ваше внимание к контенту с помощью плавающего ярлыка"</string>
-    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Появляется в верхней части списка разговоров и как всплывающий чат, а также показывает фото профиля на заблокированном экране"</string>
+    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"Появляется в верхней части списка разговоров и как всплывающий чат, фото профиля показывается на заблок. экране"</string>
     <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Настройки"</string>
     <string name="notification_priority_title" msgid="2079708866333537093">"Приоритет"</string>
     <string name="no_shortcut" msgid="8257177117568230126">"Приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" не поддерживает функции разговоров."</string>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index 2d01f93..e1f6fc7 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -95,7 +95,7 @@
     <string name="screenrecord_description" msgid="1123231719680353736">"Med snemanjem lahko sistem Android zajame morebitne občutljive podatke, ki so prikazani na zaslonu ali se predvajajo v napravi. To vključuje gesla, podatke za plačilo, fotografije, sporočila in zvok."</string>
     <string name="screenrecord_audio_label" msgid="6183558856175159629">"Snemanje zvoka"</string>
     <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Zvok v napravi"</string>
-    <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Zvok v napravi, kot so glasba, klici in toni zvonjenja"</string>
+    <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Zvoki v napravi, kot so glasba, klici in toni zvonjenja"</string>
     <string name="screenrecord_mic_label" msgid="2111264835791332350">"Mikrofon"</string>
     <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"Zvok v napravi in mikrofon"</string>
     <string name="screenrecord_start" msgid="330991441575775004">"Začni"</string>
diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml
index 65c5921..1f4b7cd 100644
--- a/packages/SystemUI/res/values-sq/strings.xml
+++ b/packages/SystemUI/res/values-sq/strings.xml
@@ -248,7 +248,7 @@
     <string name="accessibility_remove_notification" msgid="1641455251495815527">"Pastro njoftimin."</string>
     <string name="accessibility_gps_enabled" msgid="4061313248217660858">"GPS-ja është e aktivizuar."</string>
     <string name="accessibility_gps_acquiring" msgid="896207402196024040">"Po siguron GPS-në."</string>
-    <string name="accessibility_tty_enabled" msgid="1123180388823381118">"Teleprinteri është i aktivizuar."</string>
+    <string name="accessibility_tty_enabled" msgid="1123180388823381118">"Teletajpi është i aktivizuar."</string>
     <string name="accessibility_ringer_vibrate" msgid="6261841170896561364">"Zile me dridhje."</string>
     <string name="accessibility_ringer_silent" msgid="8994620163934249882">"Zilja është heshtur."</string>
     <!-- no translation found for accessibility_casting (8708751252897282313) -->
@@ -482,7 +482,7 @@
     <string name="guest_wipe_session_title" msgid="7147965814683990944">"Mirë se erdhe, i ftuar!"</string>
     <string name="guest_wipe_session_message" msgid="3393823610257065457">"Dëshiron ta vazhdosh sesionin tënd?"</string>
     <string name="guest_wipe_session_wipe" msgid="8056836584445473309">"Fillo nga e para"</string>
-    <string name="guest_wipe_session_dontwipe" msgid="3211052048269304205">"Po, vazhdo!"</string>
+    <string name="guest_wipe_session_dontwipe" msgid="3211052048269304205">"Po, vazhdo"</string>
     <string name="guest_notification_title" msgid="4434456703930764167">"Përdorues vizitor"</string>
     <string name="guest_notification_text" msgid="4202692942089571351">"Për të fshirë aplikacionet dhe të dhënat, hiqe përdoruesin vizitor"</string>
     <string name="guest_notification_remove_action" msgid="4153019027696868099">"HIQ VIZITORIN"</string>
diff --git a/packages/SystemUI/res/values-sv/strings_tv.xml b/packages/SystemUI/res/values-sv/strings_tv.xml
index 64d6162..cf40057 100644
--- a/packages/SystemUI/res/values-sv/strings_tv.xml
+++ b/packages/SystemUI/res/values-sv/strings_tv.xml
@@ -24,5 +24,5 @@
     <string name="pip_close" msgid="5775212044472849930">"Stäng PIP"</string>
     <string name="pip_fullscreen" msgid="3877997489869475181">"Helskärm"</string>
     <string name="mic_active" msgid="5766614241012047024">"Mikrofonen är aktiv"</string>
-    <string name="app_accessed_mic" msgid="2754428675130470196">"%1$s har använt mikrofonen"</string>
+    <string name="app_accessed_mic" msgid="2754428675130470196">"%1$s har fått åtkomst till mikrofonen"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml
index 490c9de..f972a68 100644
--- a/packages/SystemUI/res/values-te/strings.xml
+++ b/packages/SystemUI/res/values-te/strings.xml
@@ -695,7 +695,7 @@
     <string name="notification_channel_unsilenced" msgid="94878840742161152">"ఈ నోటిఫికేషన్‌లు మిమ్మల్ని హెచ్చరిస్తాయి"</string>
     <string name="inline_blocking_helper" msgid="2891486013649543452">"మీరు సాధారణంగా ఈ నోటిఫికేషన్‌లను విస్మరిస్తారు. \nవాటి ప్రదర్శనను కొనసాగించాలా?"</string>
     <string name="inline_done_button" msgid="6043094985588909584">"పూర్తయింది"</string>
-    <string name="inline_ok_button" msgid="603075490581280343">"అప్లై చేయి"</string>
+    <string name="inline_ok_button" msgid="603075490581280343">"అప్లయి చేయి"</string>
     <string name="inline_keep_showing" msgid="8736001253507073497">"ఈ నోటిఫికేషన్‌లను చూపిస్తూ ఉండాలా?"</string>
     <string name="inline_stop_button" msgid="2453460935438696090">"నోటిఫికేషన్‌లను ఆపివేయి"</string>
     <string name="inline_deliver_silently_button" msgid="2714314213321223286">"నిశ్శబ్దంగా బట్వాడా చేయండి"</string>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index 71679be..a1c740e 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -92,7 +92,7 @@
     <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"กำลังประมวลผลการอัดหน้าจอ"</string>
     <string name="screenrecord_channel_description" msgid="4147077128486138351">"การแจ้งเตือนต่อเนื่องสำหรับเซสชันการบันทึกหน้าจอ"</string>
     <string name="screenrecord_start_label" msgid="1750350278888217473">"เริ่มบันทึกเลยไหม"</string>
-    <string name="screenrecord_description" msgid="1123231719680353736">"ขณะบันทึก ระบบ Android อาจบันทึกข้อมูลที่ละเอียดอ่อนที่ปรากฏบนหน้าจอหรือเล่นในอุปกรณ์ได้ ซึ่งรวมถึงรหัสผ่าน ข้อมูลการชำระเงิน รูปภาพ ข้อความ และเสียง"</string>
+    <string name="screenrecord_description" msgid="1123231719680353736">"ขณะบันทึก ระบบ Android อาจบันทึกข้อมูลที่ละเอียดอ่อนซึ่งปรากฏบนหน้าจอหรือเล่นในอุปกรณ์ได้ ซึ่งรวมถึงรหัสผ่าน ข้อมูลการชำระเงิน รูปภาพ ข้อความ และเสียง"</string>
     <string name="screenrecord_audio_label" msgid="6183558856175159629">"บันทึกเสียง"</string>
     <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"เสียงจากอุปกรณ์"</string>
     <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"เสียงจากอุปกรณ์ เช่น เพลง การโทร และเสียงเรียกเข้า"</string>
@@ -339,7 +339,7 @@
     <string name="accessibility_rotation_lock_on_landscape_changed" msgid="5785739044300729592">"ขณะนี้หน้าจอล็อกอยู่ในแนวนอน"</string>
     <string name="accessibility_rotation_lock_on_portrait_changed" msgid="5580170829728987989">"ขณะนี้หน้าจอล็อกอยู่ในแนวตั้ง"</string>
     <string name="dessert_case" msgid="9104973640704357717">"ชั้นแสดงของหวาน"</string>
-    <string name="start_dreams" msgid="9131802557946276718">"โปรแกรมรักษาหน้าจอ"</string>
+    <string name="start_dreams" msgid="9131802557946276718">"โปรแกรมรักษาจอภาพ"</string>
     <string name="ethernet_label" msgid="2203544727007463351">"อีเทอร์เน็ต"</string>
     <string name="quick_settings_header_onboarding_text" msgid="1918085351115504765">"แตะไอคอนค้างไว้เพื่อดูตัวเลือกอื่นๆ"</string>
     <string name="quick_settings_dnd_label" msgid="7728690179108024338">"ห้ามรบกวน"</string>
@@ -511,7 +511,7 @@
     <string name="manage_notifications_text" msgid="6885645344647733116">"จัดการ"</string>
     <string name="manage_notifications_history_text" msgid="57055985396576230">"ประวัติ"</string>
     <string name="notification_section_header_incoming" msgid="850925217908095197">"ใหม่"</string>
-    <string name="notification_section_header_gentle" msgid="6804099527336337197">"เงียบ"</string>
+    <string name="notification_section_header_gentle" msgid="6804099527336337197">"ปิดเสียง"</string>
     <string name="notification_section_header_alerting" msgid="5581175033680477651">"การแจ้งเตือน"</string>
     <string name="notification_section_header_conversations" msgid="821834744538345661">"การสนทนา"</string>
     <string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"ล้างการแจ้งเตือนแบบไม่มีเสียงทั้งหมด"</string>
@@ -708,7 +708,7 @@
     <string name="inline_silent_button_keep_alerting" msgid="6577845442184724992">"แจ้งเตือนต่อไป"</string>
     <string name="inline_turn_off_notifications" msgid="8543989584403106071">"ปิดการแจ้งเตือน"</string>
     <string name="inline_keep_showing_app" msgid="4393429060390649757">"แสดงการแจ้งเตือนจากแอปนี้ต่อไปไหม"</string>
-    <string name="notification_silence_title" msgid="8608090968400832335">"เงียบ"</string>
+    <string name="notification_silence_title" msgid="8608090968400832335">"ปิดเสียง"</string>
     <string name="notification_alert_title" msgid="3656229781017543655">"ค่าเริ่มต้น"</string>
     <string name="notification_bubble_title" msgid="8330481035191903164">"บับเบิล"</string>
     <string name="notification_channel_summary_low" msgid="4860617986908931158">"ไม่มีเสียงหรือการสั่น"</string>
@@ -856,7 +856,7 @@
     <string name="left_icon" msgid="5036278531966897006">"ไอคอนทางซ้าย"</string>
     <string name="right_icon" msgid="1103955040645237425">"ไอคอนทางขวา"</string>
     <string name="drag_to_add_tiles" msgid="8933270127508303672">"กดค้างแล้วลากเพื่อเพิ่มการ์ด"</string>
-    <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"กดการ์ดค้างไว้แล้วลากเพื่อจัดเรียงใหม่"</string>
+    <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"กดค้างแล้วลากเพื่อจัดเรียงการ์ดใหม่"</string>
     <string name="drag_to_remove_tiles" msgid="4682194717573850385">"ลากมาที่นี่เพื่อนำออก"</string>
     <string name="drag_to_remove_disabled" msgid="933046987838658850">"คุณต้องมีการ์ดอย่างน้อย <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> รายการ"</string>
     <string name="qs_edit" msgid="5583565172803472437">"แก้ไข"</string>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index dc59e78..e1d398d 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -716,7 +716,7 @@
     <string name="notification_channel_summary_default" msgid="3282930979307248890">"可能會根據手機設定發出鈴聲或震動"</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"可能會根據手機設定發出鈴聲或震動。「<xliff:g id="APP_NAME">%1$s</xliff:g>」的對話會預設以對話氣泡顯示。"</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"為此內容建立浮動捷徑以保持注意力。"</string>
-    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"在對話部分的頂部以浮動對話氣泡顯示,並在上鎖畫面顯示個人檔案相片"</string>
+    <string name="notification_channel_summary_priority" msgid="7952654515769021553">"以浮動對話泡顯示在對話部分的頂部,並在上鎖畫面顯示個人檔案相片"</string>
     <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"設定"</string>
     <string name="notification_priority_title" msgid="2079708866333537093">"重要"</string>
     <string name="no_shortcut" msgid="8257177117568230126">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」不支援對話功能"</string>
@@ -987,7 +987,7 @@
     <string name="auto_saver_enabled_text" msgid="7889491183116752719">"省電模式將會在電量低於 <xliff:g id="PERCENTAGE">%d</xliff:g>%% 時自動開啟。"</string>
     <string name="open_saver_setting_action" msgid="2111461909782935190">"設定"</string>
     <string name="auto_saver_okay_action" msgid="7815925750741935386">"知道了"</string>
-    <string name="heap_dump_tile_name" msgid="2464189856478823046">"轉儲 SysUI 堆"</string>
+    <string name="heap_dump_tile_name" msgid="2464189856478823046">"Dump SysUI Heap"</string>
     <string name="sensor_privacy_mode" msgid="4462866919026513692">"感應器已關閉"</string>
     <string name="device_services" msgid="1549944177856658705">"裝置服務"</string>
     <string name="music_controls_no_title" msgid="4166497066552290938">"無標題"</string>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings_tv.xml b/packages/SystemUI/res/values-zh-rHK/strings_tv.xml
index 3cf2b43..1cd6314 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings_tv.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings_tv.xml
@@ -24,5 +24,5 @@
     <string name="pip_close" msgid="5775212044472849930">"關閉 PIP"</string>
     <string name="pip_fullscreen" msgid="3877997489869475181">"全螢幕"</string>
     <string name="mic_active" msgid="5766614241012047024">"麥克風已啟用"</string>
-    <string name="app_accessed_mic" msgid="2754428675130470196">"%1$s 曾存取您的麥克風"</string>
+    <string name="app_accessed_mic" msgid="2754428675130470196">"「%1$s」已存取您的麥克風"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index 90afc22..7ecb7d2 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -712,7 +712,7 @@
     <string name="notification_alert_title" msgid="3656229781017543655">"預設"</string>
     <string name="notification_bubble_title" msgid="8330481035191903164">"泡泡"</string>
     <string name="notification_channel_summary_low" msgid="4860617986908931158">"不震動或發出聲音"</string>
-    <string name="notification_conversation_summary_low" msgid="1734433426085468009">"不震動或發出聲音,並顯示在對話部分的下方"</string>
+    <string name="notification_conversation_summary_low" msgid="1734433426085468009">"不震動或發出聲音,並調整排序到其他對話下方"</string>
     <string name="notification_channel_summary_default" msgid="3282930979307248890">"根據手機的設定響鈴或震動"</string>
     <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"可能會根據手機的設定響鈴或震動。根據預設,來自「<xliff:g id="APP_NAME">%1$s</xliff:g>」的對話會以對話框形式顯示。"</string>
     <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"利用浮動式捷徑快速存取這項內容。"</string>
@@ -987,7 +987,7 @@
     <string name="auto_saver_enabled_text" msgid="7889491183116752719">"省電模式會在電量低於 <xliff:g id="PERCENTAGE">%d</xliff:g>%% 時自動開啟。"</string>
     <string name="open_saver_setting_action" msgid="2111461909782935190">"設定"</string>
     <string name="auto_saver_okay_action" msgid="7815925750741935386">"我知道了"</string>
-    <string name="heap_dump_tile_name" msgid="2464189856478823046">"傾印 SysUI 記憶體快照"</string>
+    <string name="heap_dump_tile_name" msgid="2464189856478823046">"Dump SysUI Heap"</string>
     <string name="sensor_privacy_mode" msgid="4462866919026513692">"已關閉感應器"</string>
     <string name="device_services" msgid="1549944177856658705">"裝置服務"</string>
     <string name="music_controls_no_title" msgid="4166497066552290938">"無標題"</string>
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index 848cdb1..01abc77 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -209,6 +209,26 @@
          far break points. A sensor value less than this is considered "near". -->
     <item name="proximity_sensor_threshold" translatable="false" format="float" type="dimen"></item>
 
+    <!-- If using proximity_sensor_type, specifies a threshold value to distinguish near and
+         far break points. A sensor value more than this is considered "far". If not set,
+         proximity_sensor_threshold is used. This allows one to implement a latching mechanism for
+         noisy sensors. -->
+    <item name="proximity_sensor_threshold_latch" translatable="false" format="float" type="dimen"></item>
+
+    <!-- Override value to use for proximity sensor as confirmation for proximity_sensor_type. -->
+    <string name="proximity_sensor_secondary_type" translatable="false"></string>
+
+    <!-- If using proximity_sensor_secondary_type, specifies a threshold value to distinguish
+         near and far break points. A sensor value less than this is considered "near". -->
+    <item name="proximity_sensor_secondary_threshold" translatable="false" format="float"
+          type="dimen"></item>
+
+    <!-- If using proximity_sensor_secondary_type, specifies a threshold value to distinguish near and
+         far break points. A sensor value more than this is considered "far". If not set,
+         proximity_sensor_secondary_threshold is used. This allows one to implement a latching
+         mechanism for noisy sensors. -->
+    <item name="proximity_sensor_secondary_threshold_latch" translatable="false" format="float" type="dimen"></item>
+
     <!-- Doze: pulse parameter - how long does it take to fade in? -->
     <integer name="doze_pulse_duration_in">130</integer>
 
@@ -308,6 +328,10 @@
         <item>com.android.systemui.toast.ToastUI</item>
     </string-array>
 
+    <!-- QS tile shape store width. negative implies fill configuration instead of stroke-->
+    <dimen name="config_qsTileStrokeWidthActive">-1dp</dimen>
+    <dimen name="config_qsTileStrokeWidthInactive">-1dp</dimen>
+
     <!-- SystemUI vender service, used in config_systemUIServiceComponents. -->
     <string name="config_systemUIVendorServiceComponent" translatable="false">com.android.systemui.VendorServices</string>
 
@@ -507,6 +531,8 @@
     <!-- Defines the blacklist for system icons.  That is to say, the icons in the status bar that
          are part of the blacklist are never displayed. Each item in the blacklist must be a string
          defined in core/res/res/config.xml to properly blacklist the icon.
+
+         TODO: See if we can rename this config variable.
      -->
     <string-array name="config_statusBarIconBlackList" translatable="false">
         <item>@*android:string/status_bar_rotate</item>
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplierCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplierCompat.java
index 82e6251..2985a61 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplierCompat.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplierCompat.java
@@ -46,6 +46,7 @@
     public static final int FLAG_CORNER_RADIUS = 1 << 4;
     public static final int FLAG_BACKGROUND_BLUR_RADIUS = 1 << 5;
     public static final int FLAG_VISIBILITY = 1 << 6;
+    public static final int FLAG_RELATIVE_LAYER = 1 << 7;
 
     private static final int MSG_UPDATE_SEQUENCE_NUMBER = 0;
 
@@ -192,6 +193,8 @@
             Matrix matrix;
             Rect windowCrop;
             int layer;
+            SurfaceControl relativeTo;
+            int relativeLayer;
             boolean visible;
 
             /**
@@ -249,6 +252,18 @@
             }
 
             /**
+             * @param relativeTo The surface that's set relative layer to.
+             * @param relativeLayer The relative layer.
+             * @return this Builder
+             */
+            public Builder withRelativeLayerTo(SurfaceControl relativeTo, int relativeLayer) {
+                this.relativeTo = relativeTo;
+                this.relativeLayer = relativeLayer;
+                flags |= FLAG_RELATIVE_LAYER;
+                return this;
+            }
+
+            /**
              * @param radius the Radius for rounded corners to apply to the surface.
              * @return this Builder
              */
@@ -283,7 +298,7 @@
              */
             public SurfaceParams build() {
                 return new SurfaceParams(surface, flags, alpha, matrix, windowCrop, layer,
-                        cornerRadius, backgroundBlurRadius, visible);
+                        relativeTo, relativeLayer, cornerRadius, backgroundBlurRadius, visible);
             }
         }
 
@@ -297,21 +312,25 @@
          * @param windowCrop Crop to apply, only applied if not {@code null}
          */
         public SurfaceParams(SurfaceControlCompat surface, float alpha, Matrix matrix,
-                Rect windowCrop, int layer, float cornerRadius) {
+                Rect windowCrop, int layer, SurfaceControl relativeTo, int relativeLayer,
+                float cornerRadius) {
             this(surface.mSurfaceControl,
                     FLAG_ALL & ~(FLAG_VISIBILITY | FLAG_BACKGROUND_BLUR_RADIUS), alpha,
-                    matrix, windowCrop, layer, cornerRadius, 0 /* backgroundBlurRadius */, true);
+                    matrix, windowCrop, layer, relativeTo, relativeLayer, cornerRadius,
+                    0 /* backgroundBlurRadius */, true);
         }
 
         private SurfaceParams(SurfaceControl surface, int flags, float alpha, Matrix matrix,
-                Rect windowCrop, int layer, float cornerRadius, int backgroundBlurRadius,
-                boolean visible) {
+                Rect windowCrop, int layer, SurfaceControl relativeTo, int relativeLayer,
+                float cornerRadius, int backgroundBlurRadius, boolean visible) {
             this.flags = flags;
             this.surface = surface;
             this.alpha = alpha;
             this.matrix = new Matrix(matrix);
             this.windowCrop = windowCrop != null ? new Rect(windowCrop) : null;
             this.layer = layer;
+            this.relativeTo = relativeTo;
+            this.relativeLayer = relativeLayer;
             this.cornerRadius = cornerRadius;
             this.backgroundBlurRadius = backgroundBlurRadius;
             this.visible = visible;
@@ -327,6 +346,8 @@
         public final Matrix matrix;
         public final Rect windowCrop;
         public final int layer;
+        public final SurfaceControl relativeTo;
+        public final int relativeLayer;
         public final boolean visible;
 
         public void applyTo(SurfaceControl.Transaction t) {
@@ -355,6 +376,9 @@
                     t.hide(surface);
                 }
             }
+            if ((flags & FLAG_RELATIVE_LAYER) != 0) {
+                t.setRelativeLayer(surface, relativeTo, relativeLayer);
+            }
         }
     }
 }
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/TransactionCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/TransactionCompat.java
index b966f93..255fffd 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/TransactionCompat.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/TransactionCompat.java
@@ -114,6 +114,11 @@
         t.deferTransactionUntil(surfaceControl, barrier, frameNumber);
     }
 
+    public static void setRelativeLayer(Transaction t, SurfaceControl surfaceControl,
+            SurfaceControl relativeTo, int z) {
+        t.setRelativeLayer(surfaceControl, relativeTo, z);
+    }
+
     @Deprecated
     public static void setEarlyWakeup(Transaction t) {
     }
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/WallpaperEngineCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/WallpaperEngineCompat.java
new file mode 100644
index 0000000..4d968f1
--- /dev/null
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/WallpaperEngineCompat.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.systemui.shared.system;
+
+import android.graphics.Rect;
+import android.service.wallpaper.IWallpaperEngine;
+import android.util.Log;
+
+/**
+ * @see IWallpaperEngine
+ */
+public class WallpaperEngineCompat {
+
+    private static final String TAG = "WallpaperEngineCompat";
+
+    private final IWallpaperEngine mWrappedEngine;
+
+    public WallpaperEngineCompat(IWallpaperEngine wrappedEngine) {
+        mWrappedEngine = wrappedEngine;
+    }
+
+    /**
+     * @see IWallpaperEngine#scalePreview(Rect)
+     */
+    public void scalePreview(Rect scaleToRect) {
+        try {
+            mWrappedEngine.scalePreview(scaleToRect);
+        } catch (Exception e) {
+            Log.i(TAG, "Couldn't call scalePreview method on WallpaperEngine", e);
+        }
+    }
+}
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/WallpaperManagerCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/WallpaperManagerCompat.java
index 7570c2c..1f194eca 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/WallpaperManagerCompat.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/WallpaperManagerCompat.java
@@ -18,6 +18,7 @@
 
 import android.app.WallpaperManager;
 import android.content.Context;
+import android.content.res.Resources;
 import android.os.IBinder;
 
 /**
@@ -36,4 +37,15 @@
     public void setWallpaperZoomOut(IBinder windowToken, float zoom) {
         mWallpaperManager.setWallpaperZoomOut(windowToken, zoom);
     }
+
+    /**
+     * @return the max scale for the wallpaper when it's fully zoomed out
+     */
+    public static float getWallpaperZoomOutMaxScale(Context context) {
+        return context.getResources()
+                .getFloat(Resources.getSystem().getIdentifier(
+                        /* name= */ "config_wallpaperMaxScale",
+                        /* defType= */ "dimen",
+                        /* defPackage= */ "android"));
+    }
 }
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinView.java
index 1c47aa0..1f22d48 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinView.java
@@ -257,31 +257,16 @@
         @Override
         public void run() {
             if (DEBUG) {
-                Log.v(TAG, "call supplyPinReportResultForSubscriber(subid=" + mSubId + ")");
+                Log.v(TAG, "call supplyIccLockPin(subid=" + mSubId + ")");
             }
             TelephonyManager telephonyManager =
                     ((TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE))
                             .createForSubscriptionId(mSubId);
-            final PinResult result = telephonyManager.supplyPinReportPinResult(mPin);
-            if (result == null) {
-                Log.e(TAG, "Error result for supplyPinReportResult.");
-                post(new Runnable() {
-                    @Override
-                    public void run() {
-                        onSimCheckResponse(PinResult.getDefaultFailedResult());
-                    }
-                });
-            } else {
-                if (DEBUG) {
-                    Log.v(TAG, "supplyPinReportResult returned: " + result.toString());
-                }
-                post(new Runnable() {
-                    @Override
-                    public void run() {
-                        onSimCheckResponse(result);
-                    }
-                });
+            final PinResult result = telephonyManager.supplyIccLockPin(mPin);
+            if (DEBUG) {
+                Log.v(TAG, "supplyIccLockPin returned: " + result.toString());
             }
+            post(() -> onSimCheckResponse(result));
         }
     }
 
@@ -341,8 +326,8 @@
                             }
                             resetPasswordText(true /* animate */,
                                     /* announce */
-                                    result.getType() != PinResult.PIN_RESULT_TYPE_SUCCESS);
-                            if (result.getType() == PinResult.PIN_RESULT_TYPE_SUCCESS) {
+                                    result.getResult() != PinResult.PIN_RESULT_TYPE_SUCCESS);
+                            if (result.getResult() == PinResult.PIN_RESULT_TYPE_SUCCESS) {
                                 Dependency.get(KeyguardUpdateMonitor.class)
                                         .reportSimUnlocked(mSubId);
                                 mRemainingAttempts = -1;
@@ -352,7 +337,7 @@
                                 }
                             } else {
                                 mShowDefaultMessage = false;
-                                if (result.getType() == PinResult.PIN_RESULT_TYPE_INCORRECT) {
+                                if (result.getResult() == PinResult.PIN_RESULT_TYPE_INCORRECT) {
                                     if (result.getAttemptsRemaining() <= 2) {
                                         // this is getting critical - show dialog
                                         getSimRemainingAttemptsDialog(
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukView.java
index 4c5e7ee..48161f1 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukView.java
@@ -319,30 +319,17 @@
 
         @Override
         public void run() {
-            if (DEBUG) Log.v(TAG, "call supplyPukReportResult()");
+            if (DEBUG) {
+                Log.v(TAG, "call supplyIccLockPuk(subid=" + mSubId + ")");
+            }
             TelephonyManager telephonyManager =
                     ((TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE))
                             .createForSubscriptionId(mSubId);
-            final PinResult result = telephonyManager.supplyPukReportPinResult(mPuk, mPin);
-            if (result == null) {
-                Log.e(TAG, "Error result for supplyPukReportResult.");
-                post(new Runnable() {
-                    @Override
-                    public void run() {
-                        onSimLockChangedResponse(PinResult.getDefaultFailedResult());
-                    }
-                });
-            } else {
-                if (DEBUG) {
-                    Log.v(TAG, "supplyPukReportResult returned: " + result.toString());
-                }
-                post(new Runnable() {
-                    @Override
-                    public void run() {
-                        onSimLockChangedResponse(result);
-                    }
-                });
+            final PinResult result = telephonyManager.supplyIccLockPuk(mPuk, mPin);
+            if (DEBUG) {
+                Log.v(TAG, "supplyIccLockPuk returned: " + result.toString());
             }
+            post(() -> onSimLockChangedResponse(result));
         }
     }
 
@@ -415,8 +402,8 @@
                             }
                             resetPasswordText(true /* animate */,
                                     /* announce */
-                                    result.getType() != PinResult.PIN_RESULT_TYPE_SUCCESS);
-                            if (result.getType() == PinResult.PIN_RESULT_TYPE_SUCCESS) {
+                                    result.getResult() != PinResult.PIN_RESULT_TYPE_SUCCESS);
+                            if (result.getResult() == PinResult.PIN_RESULT_TYPE_SUCCESS) {
                                 Dependency.get(KeyguardUpdateMonitor.class)
                                         .reportSimUnlocked(mSubId);
                                 mRemainingAttempts = -1;
@@ -427,7 +414,7 @@
                                 }
                             } else {
                                 mShowDefaultMessage = false;
-                                if (result.getType() == PinResult.PIN_RESULT_TYPE_INCORRECT) {
+                                if (result.getResult() == PinResult.PIN_RESULT_TYPE_INCORRECT) {
                                     // show message
                                     mSecurityMessageDisplay.setMessage(getPukPasswordErrorMessage(
                                             result.getAttemptsRemaining(), false));
diff --git a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java b/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java
index a46ab3a..5235a45 100644
--- a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java
+++ b/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java
@@ -234,7 +234,7 @@
         }
 
         Dependency.get(TunerService.class)
-                .addTunable(this, StatusBarIconController.ICON_BLACKLIST);
+                .addTunable(this, StatusBarIconController.ICON_HIDE_LIST);
         mIsSubscribedForTunerUpdates = true;
     }
 
@@ -287,8 +287,8 @@
 
     @Override
     public void onTuningChanged(String key, String newValue) {
-        if (StatusBarIconController.ICON_BLACKLIST.equals(key)) {
-            ArraySet<String> icons = StatusBarIconController.getIconBlacklist(
+        if (StatusBarIconController.ICON_HIDE_LIST.equals(key)) {
+            ArraySet<String> icons = StatusBarIconController.getIconHideList(
                     getContext(), newValue);
             setVisibility(icons.contains(mSlotBattery) ? View.GONE : View.VISIBLE);
         }
diff --git a/packages/SystemUI/src/com/android/systemui/Dependency.java b/packages/SystemUI/src/com/android/systemui/Dependency.java
index 02d2b8e..d1df276 100644
--- a/packages/SystemUI/src/com/android/systemui/Dependency.java
+++ b/packages/SystemUI/src/com/android/systemui/Dependency.java
@@ -126,6 +126,7 @@
 import com.android.systemui.wm.DisplayImeController;
 import com.android.systemui.wm.SystemWindows;
 
+import java.util.concurrent.Executor;
 import java.util.function.Consumer;
 
 import javax.inject.Inject;
@@ -167,6 +168,15 @@
      * Generic handler on the main thread.
      */
     private static final String MAIN_HANDLER_NAME = "main_handler";
+    /**
+     * Generic executor on the main thread.
+     */
+    private static final String MAIN_EXECUTOR_NAME = "main_executor";
+
+    /**
+     * Generic executor on a background thread.
+     */
+    private static final String BACKGROUND_EXECUTOR_NAME = "background_executor";
 
     /**
      * An email address to send memory leak reports to by default.
@@ -199,6 +209,17 @@
             new DependencyKey<>(MAIN_HANDLER_NAME);
 
     /**
+     * Generic executor on the main thread.
+     */
+    public static final DependencyKey<Executor> MAIN_EXECUTOR =
+            new DependencyKey<>(MAIN_EXECUTOR_NAME);
+    /**
+     * Generic executor on a background thread.
+     */
+    public static final DependencyKey<Executor> BACKGROUND_EXECUTOR =
+            new DependencyKey<>(BACKGROUND_EXECUTOR_NAME);
+
+    /**
      * An email address to send memory leak reports to by default.
      */
     public static final DependencyKey<String> LEAK_REPORT_EMAIL =
@@ -301,6 +322,8 @@
     @Inject @Named(TIME_TICK_HANDLER_NAME) Lazy<Handler> mTimeTickHandler;
     @Nullable
     @Inject @Named(LEAK_REPORT_EMAIL_NAME) Lazy<String> mLeakReportEmail;
+    @Inject @Main Lazy<Executor> mMainExecutor;
+    @Inject @Background Lazy<Executor> mBackgroundExecutor;
     @Inject Lazy<ClockManager> mClockManager;
     @Inject Lazy<ActivityManagerWrapper> mActivityManagerWrapper;
     @Inject Lazy<DevicePolicyManagerWrapper> mDevicePolicyManagerWrapper;
@@ -337,6 +360,8 @@
         mProviders.put(BG_LOOPER, mBgLooper::get);
         mProviders.put(MAIN_LOOPER, mMainLooper::get);
         mProviders.put(MAIN_HANDLER, mMainHandler::get);
+        mProviders.put(MAIN_EXECUTOR, mMainExecutor::get);
+        mProviders.put(BACKGROUND_EXECUTOR, mBackgroundExecutor::get);
         mProviders.put(ActivityStarter.class, mActivityStarter::get);
         mProviders.put(BroadcastDispatcher.class, mBroadcastDispatcher::get);
 
diff --git a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java
index 7861211..ad11d71 100644
--- a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java
+++ b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java
@@ -48,10 +48,11 @@
 import android.graphics.Paint;
 import android.graphics.Path;
 import android.graphics.PixelFormat;
+import android.graphics.Point;
 import android.graphics.Rect;
 import android.graphics.RectF;
 import android.graphics.Region;
-import android.graphics.drawable.VectorDrawable;
+import android.graphics.drawable.Drawable;
 import android.hardware.display.DisplayManager;
 import android.os.Handler;
 import android.os.HandlerExecutor;
@@ -61,6 +62,7 @@
 import android.provider.Settings.Secure;
 import android.util.DisplayMetrics;
 import android.util.Log;
+import android.view.Display;
 import android.view.DisplayCutout;
 import android.view.DisplayCutout.BoundsPosition;
 import android.view.DisplayInfo;
@@ -117,12 +119,15 @@
     private DisplayManager.DisplayListener mDisplayListener;
     private CameraAvailabilityListener mCameraListener;
 
+    //TODO: These are piecemeal being updated to Points for now to support non-square rounded
+    // corners. for now it is only supposed when reading the intrinsic size from the drawables with
+    // mIsRoundedCornerMultipleRadius is set
     @VisibleForTesting
-    protected int mRoundedDefault;
+    protected Point mRoundedDefault = new Point(0, 0);
     @VisibleForTesting
-    protected int mRoundedDefaultTop;
+    protected Point mRoundedDefaultTop = new Point(0, 0);
     @VisibleForTesting
-    protected int mRoundedDefaultBottom;
+    protected Point mRoundedDefaultBottom = new Point(0, 0);
     @VisibleForTesting
     protected View[] mOverlays;
     @Nullable
@@ -375,8 +380,7 @@
         if (mOverlays[pos] != null) {
             return;
         }
-        mOverlays[pos] = LayoutInflater.from(mContext)
-                .inflate(R.layout.rounded_corners, null);
+        mOverlays[pos] = overlayForPosition(pos);
 
         mCutoutViews[pos] = new DisplayCutoutView(mContext, pos, this);
         ((ViewGroup) mOverlays[pos]).addView(mCutoutViews[pos]);
@@ -405,6 +409,23 @@
                 new ValidatingPreDrawListener(mOverlays[pos]));
     }
 
+    /**
+     * Allow overrides for top/bottom positions
+     */
+    private View overlayForPosition(@BoundsPosition int pos) {
+        switch (pos) {
+            case BOUNDS_POSITION_TOP:
+                return LayoutInflater.from(mContext)
+                        .inflate(R.layout.rounded_corners_top, null);
+            case BOUNDS_POSITION_BOTTOM:
+                return LayoutInflater.from(mContext)
+                        .inflate(R.layout.rounded_corners_bottom, null);
+            default:
+                return LayoutInflater.from(mContext)
+                        .inflate(R.layout.rounded_corners, null);
+        }
+    }
+
     private void updateView(@BoundsPosition int pos) {
         if (mOverlays == null || mOverlays[pos] == null) {
             return;
@@ -590,27 +611,36 @@
     }
 
     private void updateRoundedCornerRadii() {
+        // We should eventually move to just using the intrinsic size of the drawables since
+        // they should be sized to the exact pixels they want to cover. Therefore I'm purposely not
+        // upgrading all of the configs to contain (width, height) pairs. Instead assume that a
+        // device configured using the single integer config value is okay with drawing the corners
+        // as a square
         final int newRoundedDefault = mContext.getResources().getDimensionPixelSize(
                 com.android.internal.R.dimen.rounded_corner_radius);
         final int newRoundedDefaultTop = mContext.getResources().getDimensionPixelSize(
                 com.android.internal.R.dimen.rounded_corner_radius_top);
         final int newRoundedDefaultBottom = mContext.getResources().getDimensionPixelSize(
                 com.android.internal.R.dimen.rounded_corner_radius_bottom);
-        final boolean roundedCornersChanged = mRoundedDefault != newRoundedDefault
-                || mRoundedDefaultBottom != newRoundedDefaultBottom
-                || mRoundedDefaultTop != newRoundedDefaultTop;
 
-        if (roundedCornersChanged) {
+        final boolean changed = mRoundedDefault.x != newRoundedDefault
+                        || mRoundedDefaultTop.x != newRoundedDefault
+                        || mRoundedDefaultBottom.x != newRoundedDefault;
+
+        if (changed) {
             // If config_roundedCornerMultipleRadius set as true, ScreenDecorations respect the
-            // max(width, height) size of drawable/rounded.xml instead of rounded_corner_radius
+            // (width, height) size of drawable/rounded.xml instead of rounded_corner_radius
             if (mIsRoundedCornerMultipleRadius) {
-                final VectorDrawable d = (VectorDrawable) mContext.getDrawable(R.drawable.rounded);
-                mRoundedDefault = Math.max(d.getIntrinsicWidth(), d.getIntrinsicHeight());
-                mRoundedDefaultTop = mRoundedDefaultBottom = mRoundedDefault;
+                Drawable d =  mContext.getDrawable(R.drawable.rounded);
+                mRoundedDefault.set(d.getIntrinsicWidth(), d.getIntrinsicHeight());
+                d =  mContext.getDrawable(R.drawable.rounded_corner_top);
+                mRoundedDefaultTop.set(d.getIntrinsicWidth(), d.getIntrinsicHeight());
+                d =  mContext.getDrawable(R.drawable.rounded_corner_bottom);
+                mRoundedDefaultBottom.set(d.getIntrinsicWidth(), d.getIntrinsicHeight());
             } else {
-                mRoundedDefault = newRoundedDefault;
-                mRoundedDefaultTop = newRoundedDefaultTop;
-                mRoundedDefaultBottom = newRoundedDefaultBottom;
+                mRoundedDefault.set(newRoundedDefault, newRoundedDefault);
+                mRoundedDefaultTop.set(newRoundedDefaultTop, newRoundedDefaultTop);
+                mRoundedDefaultBottom.set(newRoundedDefaultBottom, newRoundedDefaultBottom);
             }
             onTuningChanged(SIZE, null);
         }
@@ -625,7 +655,7 @@
         if (shouldShowRoundedCorner(pos)) {
             final int gravity = getRoundedCornerGravity(pos, id == R.id.left);
             ((FrameLayout.LayoutParams) rounded.getLayoutParams()).gravity = gravity;
-            rounded.setRotation(getRoundedCornerRotation(gravity));
+            setRoundedCornerOrientation(rounded, gravity);
             rounded.setVisibility(View.VISIBLE);
         }
     }
@@ -646,23 +676,38 @@
         }
     }
 
-    private int getRoundedCornerRotation(int gravity) {
+    /**
+     * Configures the rounded corner drawable's view matrix based on the gravity.
+     *
+     * The gravity describes which corner to configure for, and the drawable we are rotating is
+     * assumed to be oriented for the top-left corner of the device regardless of the target corner.
+     * Therefore we need to rotate 180 degrees to get a bottom-left corner, and mirror in the x- or
+     * y-axis for the top-right and bottom-left corners.
+     */
+    private void setRoundedCornerOrientation(View corner, int gravity) {
+        corner.setRotation(0);
+        corner.setScaleX(1);
+        corner.setScaleY(1);
         switch (gravity) {
             case Gravity.TOP | Gravity.LEFT:
-                return 0;
+                return;
             case Gravity.TOP | Gravity.RIGHT:
-                return 90;
+                corner.setScaleX(-1); // flip X axis
+                return;
             case Gravity.BOTTOM | Gravity.LEFT:
-                return 270;
+                corner.setScaleY(-1); // flip Y axis
+                return;
             case Gravity.BOTTOM | Gravity.RIGHT:
-                return 180;
+                corner.setRotation(180);
+                return;
             default:
                 throw new IllegalArgumentException("Unsupported gravity: " + gravity);
         }
     }
-
     private boolean hasRoundedCorners() {
-        return mRoundedDefault > 0 || mRoundedDefaultBottom > 0 || mRoundedDefaultTop > 0
+        return mRoundedDefault.x > 0
+                || mRoundedDefaultBottom.x > 0
+                || mRoundedDefaultTop.x > 0
                 || mIsRoundedCornerMultipleRadius;
     }
 
@@ -712,12 +757,13 @@
         mHandler.post(() -> {
             if (mOverlays == null) return;
             if (SIZE.equals(key)) {
-                int size = mRoundedDefault;
-                int sizeTop = mRoundedDefaultTop;
-                int sizeBottom = mRoundedDefaultBottom;
+                Point size = mRoundedDefault;
+                Point sizeTop = mRoundedDefaultTop;
+                Point sizeBottom = mRoundedDefaultBottom;
                 if (newValue != null) {
                     try {
-                        size = (int) (Integer.parseInt(newValue) * mDensity);
+                        int s = (int) (Integer.parseInt(newValue) * mDensity);
+                        size = new Point(s, s);
                     } catch (Exception e) {
                     }
                 }
@@ -726,14 +772,17 @@
         });
     }
 
-    private void updateRoundedCornerSize(int sizeDefault, int sizeTop, int sizeBottom) {
+    private void updateRoundedCornerSize(
+            Point sizeDefault,
+            Point sizeTop,
+            Point sizeBottom) {
         if (mOverlays == null) {
             return;
         }
-        if (sizeTop == 0) {
+        if (sizeTop.x == 0) {
             sizeTop = sizeDefault;
         }
-        if (sizeBottom == 0) {
+        if (sizeBottom.x == 0) {
             sizeBottom = sizeDefault;
         }
 
@@ -760,10 +809,10 @@
     }
 
     @VisibleForTesting
-    protected void setSize(View view, int pixelSize) {
+    protected void setSize(View view, Point pixelSize) {
         LayoutParams params = view.getLayoutParams();
-        params.width = pixelSize;
-        params.height = pixelSize;
+        params.width = pixelSize.x;
+        params.height = pixelSize.y;
         view.setLayoutParams(params);
     }
 
@@ -772,6 +821,7 @@
 
         private static final float HIDDEN_CAMERA_PROTECTION_SCALE = 0.5f;
 
+        private Display.Mode mDisplayMode = null;
         private final DisplayInfo mInfo = new DisplayInfo();
         private final Paint mPaint = new Paint();
         private final List<Rect> mBounds = new ArrayList();
@@ -856,11 +906,33 @@
 
         @Override
         public void onDisplayChanged(int displayId) {
+            Display.Mode oldMode = mDisplayMode;
+            mDisplayMode = getDisplay().getMode();
+
+            // Display mode hasn't meaningfully changed, we can ignore it
+            if (!modeChanged(oldMode, mDisplayMode)) {
+                return;
+            }
+
             if (displayId == getDisplay().getDisplayId()) {
                 update();
             }
         }
 
+        private boolean modeChanged(Display.Mode oldMode, Display.Mode newMode) {
+            if (oldMode == null) {
+                return true;
+            }
+
+            boolean changed = false;
+            changed |= oldMode.getPhysicalHeight() != newMode.getPhysicalHeight();
+            changed |= oldMode.getPhysicalWidth() != newMode.getPhysicalWidth();
+            // We purposely ignore refresh rate and id changes here, because we don't need to
+            // invalidate for those, and they can trigger the refresh rate to increase
+
+            return changed;
+        }
+
         public void setRotation(int rotation) {
             mRotation = rotation;
             update();
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
index 6f103b0..e252195 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
@@ -207,12 +207,6 @@
     /** Whether or not the BubbleStackView has been added to the WindowManager. */
     private boolean mAddedToWindowManager = false;
 
-    /**
-     * Value from {@link NotificationShadeWindowController#getForceHasTopUi()} when we forced top UI
-     * due to expansion. We'll restore this value when the stack collapses.
-     */
-    private boolean mHadTopUi = false;
-
     // Listens to user switch so bubbles can be saved and restored.
     private final NotificationLockscreenUserManager mNotifUserManager;
 
@@ -1303,7 +1297,7 @@
             // Collapsing? Do this first before remaining steps.
             if (update.expandedChanged && !update.expanded) {
                 mStackView.setExpanded(false);
-                mNotificationShadeWindowController.setForceHasTopUi(mHadTopUi);
+                mNotificationShadeWindowController.setRequestTopUi(false, TAG);
             }
 
             // Do removals, if any.
@@ -1393,8 +1387,7 @@
             if (update.expandedChanged && update.expanded) {
                 if (mStackView != null) {
                     mStackView.setExpanded(true);
-                    mHadTopUi = mNotificationShadeWindowController.getForceHasTopUi();
-                    mNotificationShadeWindowController.setForceHasTopUi(true);
+                    mNotificationShadeWindowController.setRequestTopUi(true, TAG);
                 }
             }
 
diff --git a/packages/SystemUI/src/com/android/systemui/charging/WirelessChargingAnimation.java b/packages/SystemUI/src/com/android/systemui/charging/WirelessChargingAnimation.java
index d5b54f9..2569f7c 100644
--- a/packages/SystemUI/src/com/android/systemui/charging/WirelessChargingAnimation.java
+++ b/packages/SystemUI/src/com/android/systemui/charging/WirelessChargingAnimation.java
@@ -54,25 +54,28 @@
      * before calling {@link #show} - can be done through {@link #makeWirelessChargingAnimation}.
      * @hide
      */
-    public WirelessChargingAnimation(@NonNull Context context, @Nullable Looper looper, int
-            batteryLevel, Callback callback, boolean isDozing) {
+    public WirelessChargingAnimation(@NonNull Context context, @Nullable Looper looper,
+            int transmittingBatteryLevel, int batteryLevel, Callback callback, boolean isDozing) {
         mCurrentWirelessChargingView = new WirelessChargingView(context, looper,
-                batteryLevel, callback, isDozing);
+                transmittingBatteryLevel, batteryLevel, callback, isDozing);
     }
 
     /**
      * Creates a wireless charging animation object populated with next view.
+     *
      * @hide
      */
     public static WirelessChargingAnimation makeWirelessChargingAnimation(@NonNull Context context,
-            @Nullable Looper looper, int batteryLevel, Callback callback, boolean isDozing) {
-        return new WirelessChargingAnimation(context, looper, batteryLevel, callback, isDozing);
+            @Nullable Looper looper, int transmittingBatteryLevel, int batteryLevel,
+            Callback callback, boolean isDozing) {
+        return new WirelessChargingAnimation(context, looper, transmittingBatteryLevel,
+                batteryLevel, callback, isDozing);
     }
 
     /**
      * Show the view for the specified duration.
      */
-    public void show() {
+    public void show(long delay) {
         if (mCurrentWirelessChargingView == null ||
                 mCurrentWirelessChargingView.mNextView == null) {
             throw new RuntimeException("setView must have been called");
@@ -83,8 +86,8 @@
         }
 
         mPreviousWirelessChargingView = mCurrentWirelessChargingView;
-        mCurrentWirelessChargingView.show();
-        mCurrentWirelessChargingView.hide(DURATION);
+        mCurrentWirelessChargingView.show(delay);
+        mCurrentWirelessChargingView.hide(delay + DURATION);
     }
 
     private static class WirelessChargingView {
@@ -100,10 +103,12 @@
         private WindowManager mWM;
         private Callback mCallback;
 
-        public WirelessChargingView(Context context, @Nullable Looper looper, int batteryLevel,
-                Callback callback, boolean isDozing) {
+        public WirelessChargingView(Context context, @Nullable Looper looper,
+                int transmittingBatteryLevel, int batteryLevel, Callback callback,
+                boolean isDozing) {
             mCallback = callback;
-            mNextView = new WirelessChargingLayout(context, batteryLevel, isDozing);
+            mNextView = new WirelessChargingLayout(context, transmittingBatteryLevel, batteryLevel,
+                    isDozing);
             mGravity = Gravity.CENTER_HORIZONTAL | Gravity.CENTER;
 
             final WindowManager.LayoutParams params = mParams;
@@ -149,9 +154,9 @@
             };
         }
 
-        public void show() {
+        public void show(long delay) {
             if (DEBUG) Slog.d(TAG, "SHOW: " + this);
-            mHandler.obtainMessage(SHOW).sendToTarget();
+            mHandler.sendMessageDelayed(Message.obtain(mHandler, SHOW), delay);
         }
 
         public void hide(long duration) {
diff --git a/packages/SystemUI/src/com/android/systemui/charging/WirelessChargingLayout.java b/packages/SystemUI/src/com/android/systemui/charging/WirelessChargingLayout.java
index ec150873..e8407f0 100644
--- a/packages/SystemUI/src/com/android/systemui/charging/WirelessChargingLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/charging/WirelessChargingLayout.java
@@ -22,6 +22,7 @@
 import android.content.Context;
 import android.graphics.drawable.Animatable;
 import android.util.AttributeSet;
+import android.util.TypedValue;
 import android.view.ContextThemeWrapper;
 import android.view.animation.PathInterpolator;
 import android.widget.FrameLayout;
@@ -37,16 +38,17 @@
  * @hide
  */
 public class WirelessChargingLayout extends FrameLayout {
-    private final static int UNKNOWN_BATTERY_LEVEL = -1;
+    public final static int UNKNOWN_BATTERY_LEVEL = -1;
 
     public WirelessChargingLayout(Context context) {
         super(context);
         init(context, null, false);
     }
 
-    public WirelessChargingLayout(Context context, int batteryLevel, boolean isDozing) {
+    public WirelessChargingLayout(Context context, int transmittingBatteryLevel, int batteryLevel,
+            boolean isDozing) {
         super(context);
-        init(context, null, batteryLevel, isDozing);
+        init(context, null, transmittingBatteryLevel, batteryLevel, isDozing);
     }
 
     public WirelessChargingLayout(Context context, AttributeSet attrs) {
@@ -55,11 +57,13 @@
     }
 
     private void init(Context c, AttributeSet attrs, boolean isDozing) {
-        init(c, attrs, -1, false);
+        init(c, attrs, -1, -1, false);
     }
 
-    private void init(Context context, AttributeSet attrs, int batteryLevel, boolean isDozing) {
-        final int mBatteryLevel = batteryLevel;
+    private void init(Context context, AttributeSet attrs, int transmittingBatteryLevel,
+            int batteryLevel, boolean isDozing) {
+        final boolean showTransmittingBatteryLevel =
+                (transmittingBatteryLevel != UNKNOWN_BATTERY_LEVEL);
 
         // set style based on background
         int style = R.style.ChargingAnim_WallpaperBackground;
@@ -74,39 +78,40 @@
         final Animatable chargingAnimation = (Animatable) chargingView.getDrawable();
 
         // amount of battery:
-        final TextView mPercentage = findViewById(R.id.wireless_charging_percentage);
+        final TextView percentage = findViewById(R.id.wireless_charging_percentage);
 
         if (batteryLevel != UNKNOWN_BATTERY_LEVEL) {
-            mPercentage.setText(NumberFormat.getPercentInstance().format(mBatteryLevel / 100f));
-            mPercentage.setAlpha(0);
+            percentage.setText(NumberFormat.getPercentInstance().format(batteryLevel / 100f));
+            percentage.setAlpha(0);
         }
 
-        final long chargingAnimationFadeStartOffset = (long) context.getResources().getInteger(
+        final long chargingAnimationFadeStartOffset = context.getResources().getInteger(
                 R.integer.wireless_charging_fade_offset);
-        final long chargingAnimationFadeDuration = (long) context.getResources().getInteger(
+        final long chargingAnimationFadeDuration = context.getResources().getInteger(
                 R.integer.wireless_charging_fade_duration);
         final float batteryLevelTextSizeStart = context.getResources().getFloat(
                 R.dimen.wireless_charging_anim_battery_level_text_size_start);
         final float batteryLevelTextSizeEnd = context.getResources().getFloat(
-                R.dimen.wireless_charging_anim_battery_level_text_size_end);
+                R.dimen.wireless_charging_anim_battery_level_text_size_end) * (
+                showTransmittingBatteryLevel ? 0.75f : 1.0f);
 
         // Animation Scale: battery percentage text scales from 0% to 100%
-        ValueAnimator textSizeAnimator = ObjectAnimator.ofFloat(mPercentage, "textSize",
+        ValueAnimator textSizeAnimator = ObjectAnimator.ofFloat(percentage, "textSize",
                 batteryLevelTextSizeStart, batteryLevelTextSizeEnd);
         textSizeAnimator.setInterpolator(new PathInterpolator(0, 0, 0, 1));
-        textSizeAnimator.setDuration((long) context.getResources().getInteger(
+        textSizeAnimator.setDuration(context.getResources().getInteger(
                 R.integer.wireless_charging_battery_level_text_scale_animation_duration));
 
         // Animation Opacity: battery percentage text transitions from 0 to 1 opacity
-        ValueAnimator textOpacityAnimator = ObjectAnimator.ofFloat(mPercentage, "alpha", 0, 1);
+        ValueAnimator textOpacityAnimator = ObjectAnimator.ofFloat(percentage, "alpha", 0, 1);
         textOpacityAnimator.setInterpolator(Interpolators.LINEAR);
-        textOpacityAnimator.setDuration((long) context.getResources().getInteger(
+        textOpacityAnimator.setDuration(context.getResources().getInteger(
                 R.integer.wireless_charging_battery_level_text_opacity_duration));
-        textOpacityAnimator.setStartDelay((long) context.getResources().getInteger(
+        textOpacityAnimator.setStartDelay(context.getResources().getInteger(
                 R.integer.wireless_charging_anim_opacity_offset));
 
         // Animation Opacity: battery percentage text fades from 1 to 0 opacity
-        ValueAnimator textFadeAnimator = ObjectAnimator.ofFloat(mPercentage, "alpha", 1, 0);
+        ValueAnimator textFadeAnimator = ObjectAnimator.ofFloat(percentage, "alpha", 1, 0);
         textFadeAnimator.setDuration(chargingAnimationFadeDuration);
         textFadeAnimator.setInterpolator(Interpolators.LINEAR);
         textFadeAnimator.setStartDelay(chargingAnimationFadeStartOffset);
@@ -114,7 +119,80 @@
         // play all animations together
         AnimatorSet animatorSet = new AnimatorSet();
         animatorSet.playTogether(textSizeAnimator, textOpacityAnimator, textFadeAnimator);
+
+        if (!showTransmittingBatteryLevel) {
+            chargingAnimation.start();
+            animatorSet.start();
+            return;
+        }
+
+        // amount of transmitting battery:
+        final TextView transmittingPercentage = findViewById(
+                R.id.reverse_wireless_charging_percentage);
+        transmittingPercentage.setVisibility(VISIBLE);
+        transmittingPercentage.setText(
+                NumberFormat.getPercentInstance().format(transmittingBatteryLevel / 100f));
+        transmittingPercentage.setAlpha(0);
+
+        // Animation Scale: transmitting battery percentage text scales from 0% to 100%
+        ValueAnimator textSizeAnimatorTransmitting = ObjectAnimator.ofFloat(transmittingPercentage,
+                "textSize", batteryLevelTextSizeStart, batteryLevelTextSizeEnd);
+        textSizeAnimatorTransmitting.setInterpolator(new PathInterpolator(0, 0, 0, 1));
+        textSizeAnimatorTransmitting.setDuration(context.getResources().getInteger(
+                R.integer.wireless_charging_battery_level_text_scale_animation_duration));
+
+        // Animation Opacity: transmitting battery percentage text transitions from 0 to 1 opacity
+        ValueAnimator textOpacityAnimatorTransmitting = ObjectAnimator.ofFloat(
+                transmittingPercentage, "alpha", 0, 1);
+        textOpacityAnimatorTransmitting.setInterpolator(Interpolators.LINEAR);
+        textOpacityAnimatorTransmitting.setDuration(context.getResources().getInteger(
+                R.integer.wireless_charging_battery_level_text_opacity_duration));
+        textOpacityAnimatorTransmitting.setStartDelay(
+                context.getResources().getInteger(R.integer.wireless_charging_anim_opacity_offset));
+
+        // Animation Opacity: transmitting battery percentage text fades from 1 to 0 opacity
+        ValueAnimator textFadeAnimatorTransmitting = ObjectAnimator.ofFloat(transmittingPercentage,
+                "alpha", 1, 0);
+        textFadeAnimatorTransmitting.setDuration(chargingAnimationFadeDuration);
+        textFadeAnimatorTransmitting.setInterpolator(Interpolators.LINEAR);
+        textFadeAnimatorTransmitting.setStartDelay(chargingAnimationFadeStartOffset);
+
+        // play all animations together
+        AnimatorSet animatorSetTransmitting = new AnimatorSet();
+        animatorSetTransmitting.playTogether(textSizeAnimatorTransmitting,
+                textOpacityAnimatorTransmitting, textFadeAnimatorTransmitting);
+
+        // transmitting battery icon
+        final ImageView chargingViewIcon = findViewById(R.id.reverse_wireless_charging_icon);
+        chargingViewIcon.setVisibility(VISIBLE);
+        final int padding = Math.round(
+                TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, batteryLevelTextSizeEnd,
+                        getResources().getDisplayMetrics()));
+        chargingViewIcon.setPadding(padding, 0, padding, 0);
+
+        // Animation Opacity: transmitting battery icon transitions from 0 to 1 opacity
+        ValueAnimator textOpacityAnimatorIcon = ObjectAnimator.ofFloat(chargingViewIcon, "alpha", 0,
+                1);
+        textOpacityAnimatorIcon.setInterpolator(Interpolators.LINEAR);
+        textOpacityAnimatorIcon.setDuration(context.getResources().getInteger(
+                R.integer.wireless_charging_battery_level_text_opacity_duration));
+        textOpacityAnimatorIcon.setStartDelay(
+                context.getResources().getInteger(R.integer.wireless_charging_anim_opacity_offset));
+
+        // Animation Opacity: transmitting battery icon fades from 1 to 0 opacity
+        ValueAnimator textFadeAnimatorIcon = ObjectAnimator.ofFloat(chargingViewIcon, "alpha", 1,
+                0);
+        textFadeAnimatorIcon.setDuration(chargingAnimationFadeDuration);
+        textFadeAnimatorIcon.setInterpolator(Interpolators.LINEAR);
+        textFadeAnimatorIcon.setStartDelay(chargingAnimationFadeStartOffset);
+
+        // play all animations together
+        AnimatorSet animatorSetIcon = new AnimatorSet();
+        animatorSetIcon.playTogether(textOpacityAnimatorIcon, textFadeAnimatorIcon);
+
         chargingAnimation.start();
         animatorSet.start();
+        animatorSetTransmitting.start();
+        animatorSetIcon.start();
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java
index ef2ef45..f35322b 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java
@@ -22,7 +22,6 @@
 import android.hardware.SensorManager;
 import android.net.Uri;
 import android.provider.DeviceConfig;
-import android.util.DisplayMetrics;
 import android.view.MotionEvent;
 
 import androidx.annotation.NonNull;
@@ -62,7 +61,7 @@
     private static final String PROXIMITY_SENSOR_TAG = "FalsingManager";
 
     private final ProximitySensor mProximitySensor;
-    private final DisplayMetrics mDisplayMetrics;
+    private final FalsingDataProvider mFalsingDataProvider;
     private FalsingManager mInternalFalsingManager;
     private DeviceConfig.OnPropertiesChangedListener mDeviceConfigListener;
     private final DeviceConfigProxy mDeviceConfig;
@@ -74,20 +73,21 @@
 
     @Inject
     FalsingManagerProxy(Context context, PluginManager pluginManager, @Main Executor executor,
-            DisplayMetrics displayMetrics, ProximitySensor proximitySensor,
+            ProximitySensor proximitySensor,
             DeviceConfigProxy deviceConfig, DockManager dockManager,
             KeyguardUpdateMonitor keyguardUpdateMonitor,
             DumpManager dumpManager,
             @UiBackground Executor uiBgExecutor,
-            StatusBarStateController statusBarStateController) {
-        mDisplayMetrics = displayMetrics;
+            StatusBarStateController statusBarStateController,
+            FalsingDataProvider falsingDataProvider) {
         mProximitySensor = proximitySensor;
         mDockManager = dockManager;
         mKeyguardUpdateMonitor = keyguardUpdateMonitor;
         mUiBgExecutor = uiBgExecutor;
         mStatusBarStateController = statusBarStateController;
+        mFalsingDataProvider = falsingDataProvider;
         mProximitySensor.setTag(PROXIMITY_SENSOR_TAG);
-        mProximitySensor.setSensorDelay(SensorManager.SENSOR_DELAY_GAME);
+        mProximitySensor.setDelay(SensorManager.SENSOR_DELAY_GAME);
         mDeviceConfig = deviceConfig;
         mDeviceConfigListener =
                 properties -> onDeviceConfigPropertiesChanged(context, properties.getNamespace());
@@ -143,7 +143,7 @@
             mInternalFalsingManager = new FalsingManagerImpl(context, mUiBgExecutor);
         } else {
             mInternalFalsingManager = new BrightLineFalsingManager(
-                    new FalsingDataProvider(mDisplayMetrics),
+                    mFalsingDataProvider,
                     mKeyguardUpdateMonitor,
                     mProximitySensor,
                     mDeviceConfig,
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java
index 62254a6..a50f9ce 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java
@@ -37,6 +37,7 @@
 import com.android.systemui.statusbar.StatusBarState;
 import com.android.systemui.util.DeviceConfigProxy;
 import com.android.systemui.util.sensors.ProximitySensor;
+import com.android.systemui.util.sensors.ThresholdSensor;
 
 import java.io.PrintWriter;
 import java.util.ArrayDeque;
@@ -76,7 +77,7 @@
 
     private final List<FalsingClassifier> mClassifiers;
 
-    private ProximitySensor.ProximitySensorListener mSensorEventListener = this::onProximityEvent;
+    private ThresholdSensor.Listener mSensorEventListener = this::onProximityEvent;
 
     private final KeyguardUpdateMonitorCallback mKeyguardUpdateCallback =
             new KeyguardUpdateMonitorCallback() {
@@ -131,7 +132,9 @@
     }
 
     private void registerSensors() {
-        mProximitySensor.register(mSensorEventListener);
+        if (!mDataProvider.isWirelessCharging()) {
+            mProximitySensor.register(mSensorEventListener);
+        }
     }
 
     private void unregisterSensors() {
@@ -240,7 +243,7 @@
         mClassifiers.forEach((classifier) -> classifier.onTouchEvent(motionEvent));
     }
 
-    private void onProximityEvent(ProximitySensor.ProximityEvent proximityEvent) {
+    private void onProximityEvent(ThresholdSensor.ThresholdSensorEvent proximityEvent) {
         // TODO: some of these classifiers might allow us to abort early, meaning we don't have to
         // make these calls.
         mClassifiers.forEach((classifier) -> classifier.onProximityEvent(proximityEvent));
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/DistanceClassifier.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/DistanceClassifier.java
index 0329183..9fa2557 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/brightline/DistanceClassifier.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/DistanceClassifier.java
@@ -112,7 +112,6 @@
 
     private DistanceVectors calculateDistances() {
         // This code assumes that there will be no missed DOWN or UP events.
-        VelocityTracker velocityTracker = VelocityTracker.obtain();
         List<MotionEvent> motionEvents = getRecentMotionEvents();
 
         if (motionEvents.size() < 3) {
@@ -120,6 +119,8 @@
             return new DistanceVectors(0, 0, 0, 0);
         }
 
+        VelocityTracker velocityTracker = VelocityTracker.obtain();
+
         for (MotionEvent motionEvent : motionEvents) {
             velocityTracker.addMovement(motionEvent);
         }
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingClassifier.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingClassifier.java
index cf08821..85e95a6 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingClassifier.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingClassifier.java
@@ -96,7 +96,7 @@
     /**
      * Called when a ProximityEvent occurs (change in near/far).
      */
-    void onProximityEvent(ProximitySensor.ProximityEvent proximityEvent) {};
+    void onProximityEvent(ProximitySensor.ThresholdSensorEvent proximityEvent) {};
 
     /**
      * The phone screen has turned on and we need to begin falsing detection.
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingDataProvider.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingDataProvider.java
index 5494c64..ea46441 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingDataProvider.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingDataProvider.java
@@ -22,10 +22,13 @@
 import android.view.MotionEvent.PointerProperties;
 
 import com.android.systemui.classifier.Classifier;
+import com.android.systemui.statusbar.policy.BatteryController;
 
 import java.util.ArrayList;
 import java.util.List;
 
+import javax.inject.Inject;
+
 /**
  * Acts as a cache and utility class for FalsingClassifiers.
  */
@@ -36,6 +39,7 @@
 
     private final int mWidthPixels;
     private final int mHeightPixels;
+    private final BatteryController mBatteryController;
     private final float mXdpi;
     private final float mYdpi;
 
@@ -50,11 +54,13 @@
     private MotionEvent mFirstRecentMotionEvent;
     private MotionEvent mLastMotionEvent;
 
-    public FalsingDataProvider(DisplayMetrics displayMetrics) {
+    @Inject
+    public FalsingDataProvider(DisplayMetrics displayMetrics, BatteryController batteryController) {
         mXdpi = displayMetrics.xdpi;
         mYdpi = displayMetrics.ydpi;
         mWidthPixels = displayMetrics.widthPixels;
         mHeightPixels = displayMetrics.heightPixels;
+        mBatteryController = batteryController;
 
         FalsingClassifier.logInfo("xdpi, ydpi: " + getXdpi() + ", " + getYdpi());
         FalsingClassifier.logInfo("width, height: " + getWidthPixels() + ", " + getHeightPixels());
@@ -177,6 +183,11 @@
         return mLastMotionEvent.getY() < mFirstRecentMotionEvent.getY();
     }
 
+    /** Returns true if phone is being charged without a cable. */
+    boolean isWirelessCharging() {
+        return mBatteryController.isWirelessCharging();
+    }
+
     private void recalculateData() {
         if (!mDirty) {
             return;
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/ProximityClassifier.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/ProximityClassifier.java
index 749914e..b128678 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/brightline/ProximityClassifier.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/ProximityClassifier.java
@@ -101,8 +101,8 @@
 
     @Override
     public void onProximityEvent(
-            ProximitySensor.ProximityEvent proximityEvent) {
-        boolean near = proximityEvent.getNear();
+            ProximitySensor.ThresholdSensorEvent proximityEvent) {
+        boolean near = proximityEvent.getBelow();
         long timestampNs = proximityEvent.getTimestampNs();
         logDebug("Sensor is: " + near + " at time " + timestampNs);
         update(near, timestampNs);
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java
index 5697fc0..f683a63 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java
@@ -37,6 +37,7 @@
 import android.content.pm.PackageManager;
 import android.content.pm.ShortcutManager;
 import android.content.res.Resources;
+import android.hardware.SensorManager;
 import android.hardware.SensorPrivacyManager;
 import android.hardware.display.DisplayManager;
 import android.media.AudioManager;
@@ -254,6 +255,12 @@
         return context.getResources();
     }
 
+    @Provides
+    @Singleton
+    static SensorManager providesSensorManager(Context context) {
+        return context.getSystemService(SensorManager.class);
+    }
+
     @Singleton
     @Provides
     static SensorPrivacyManager provideSensorPrivacyManager(Context context) {
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIDefaultModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIDefaultModule.java
index 3bb953a..aeba64a 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIDefaultModule.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIDefaultModule.java
@@ -36,6 +36,7 @@
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
 import com.android.systemui.power.EnhancedEstimates;
 import com.android.systemui.power.EnhancedEstimatesImpl;
+import com.android.systemui.qs.dagger.QSModule;
 import com.android.systemui.qs.tileimpl.QSFactoryImpl;
 import com.android.systemui.recents.Recents;
 import com.android.systemui.recents.RecentsImplementation;
@@ -70,7 +71,7 @@
  * A dagger module for injecting default implementations of components of System UI that may be
  * overridden by the System UI implementation.
  */
-@Module(includes = {DividerModule.class})
+@Module(includes = {DividerModule.class, QSModule.class})
 public abstract class SystemUIDefaultModule {
 
     @Singleton
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
index 90cd13f..cb45926 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
@@ -43,6 +43,7 @@
 import com.android.systemui.statusbar.policy.HeadsUpManager;
 import com.android.systemui.util.concurrency.ConcurrencyModule;
 import com.android.systemui.util.sensors.AsyncSensorManager;
+import com.android.systemui.util.sensors.SensorModule;
 import com.android.systemui.util.time.SystemClock;
 import com.android.systemui.util.time.SystemClockImpl;
 
@@ -62,7 +63,8 @@
             ConcurrencyModule.class,
             LogModule.class,
             PeopleHubModule.class,
-            SettingsModule.class
+            SensorModule.class,
+            SettingsModule.class,
         },
         subcomponents = {StatusBarComponent.class,
                 NotificationRowComponent.class,
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java b/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java
index 490890f..ae7d82a 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java
@@ -199,6 +199,12 @@
         requestState(State.DOZE_REQUEST_PULSE, pulseReason);
     }
 
+    void onScreenState(int state) {
+        for (Part part : mParts) {
+            part.onScreenState(state);
+        }
+    }
+
     private void requestState(State requestedState, int pulseReason) {
         Assert.isMainThread();
         if (DEBUG) {
@@ -423,6 +429,9 @@
 
         /** Give the Part a chance to clean itself up. */
         default void destroy() {}
+
+        /** Alerts that the screenstate is being changed. */
+        default void onScreenState(int state) {}
     }
 
     /** A wrapper interface for {@link android.service.dreams.DreamService} */
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java
index f6fccc0..64cfb4b 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java
@@ -29,6 +29,7 @@
 import android.os.Trace;
 import android.os.UserHandle;
 import android.provider.Settings;
+import android.view.Display;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.systemui.broadcast.BroadcastDispatcher;
@@ -68,6 +69,7 @@
      * --ei brightness_bucket 1}
      */
     private int mDebugBrightnessBucket = -1;
+    private DozeMachine.State mState;
 
     @VisibleForTesting
     public DozeScreenBrightness(Context context, DozeMachine.Service service,
@@ -107,17 +109,10 @@
 
     @Override
     public void transitionTo(DozeMachine.State oldState, DozeMachine.State newState) {
+        mState = newState;
         switch (newState) {
             case INITIALIZED:
-                resetBrightnessToDefault();
-                break;
-            case DOZE_AOD:
-            case DOZE_REQUEST_PULSE:
-            case DOZE_AOD_DOCKED:
-                setLightSensorEnabled(true);
-                break;
             case DOZE:
-                setLightSensorEnabled(false);
                 resetBrightnessToDefault();
                 break;
             case FINISH:
@@ -130,6 +125,18 @@
         }
     }
 
+    @Override
+    public void onScreenState(int state) {
+        if (!mScreenOff
+                && (mState == DozeMachine.State.DOZE_AOD
+                     || mState == DozeMachine.State.DOZE_AOD_DOCKED)
+                && (state == Display.STATE_DOZE || state == Display.STATE_DOZE_SUSPEND)) {
+            setLightSensorEnabled(true);
+        } else {
+            setLightSensorEnabled(false);
+        }
+    }
+
     private void onDestroy() {
         setLightSensorEnabled(false);
         if (mDebuggable) {
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java
index 78f8f67..aebf41b 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java
@@ -37,6 +37,7 @@
 import android.provider.Settings;
 import android.text.TextUtils;
 import android.util.Log;
+import android.view.Display;
 
 import androidx.annotation.VisibleForTesting;
 
@@ -66,7 +67,6 @@
     private final AlarmManager mAlarmManager;
     private final AsyncSensorManager mSensorManager;
     private final ContentResolver mResolver;
-    private final TriggerSensor mPickupSensor;
     private final DozeParameters mDozeParameters;
     private final AmbientDisplayConfiguration mConfig;
     private final WakeLock mWakeLock;
@@ -80,7 +80,6 @@
     private long mDebounceFrom;
     private boolean mSettingRegistered;
     private boolean mListening;
-    private boolean mPaused;
 
     @VisibleForTesting
     public enum DozeSensorsUiEvent implements UiEventLogger.UiEventEnum {
@@ -122,7 +121,7 @@
                         dozeParameters.getPulseOnSigMotion(),
                         DozeLog.PULSE_REASON_SENSOR_SIGMOTION, false /* touchCoords */,
                         false /* touchscreen */, dozeLog),
-                mPickupSensor = new TriggerSensor(
+                new TriggerSensor(
                         mSensorManager.getDefaultSensor(Sensor.TYPE_PICK_UP_GESTURE),
                         Settings.Secure.DOZE_PICK_UP_GESTURE,
                         true /* settingDef */,
@@ -179,7 +178,7 @@
         mProximitySensor.register(
                 proximityEvent -> {
                     if (proximityEvent != null) {
-                        mProxCallback.accept(!proximityEvent.getNear());
+                        mProxCallback.accept(!proximityEvent.getBelow());
                     }
                 });
     }
@@ -232,18 +231,6 @@
     }
 
     /**
-     * Unregister sensors, when listening, unless they are prox gated.
-     * @see #setListening(boolean)
-     */
-    public void setPaused(boolean paused) {
-        if (mPaused == paused) {
-            return;
-        }
-        mPaused = paused;
-        updateListening();
-    }
-
-    /**
      * Registers/unregisters sensors based on internal state.
      */
     public void updateListening() {
@@ -280,6 +267,13 @@
         }
     }
 
+    void onScreenState(int state) {
+        mProximitySensor.setSecondarySafe(
+                state == Display.STATE_DOZE
+                || state == Display.STATE_DOZE_SUSPEND
+                || state == Display.STATE_OFF);
+    }
+
     public void setProxListening(boolean listen) {
         if (mProximitySensor.isRegistered() && listen) {
             mProximitySensor.alertListeners();
@@ -304,10 +298,6 @@
         }
     };
 
-    public void setDisableSensorsInterferingWithProximity(boolean disable) {
-        mPickupSensor.setDisabled(disable);
-    }
-
     /** Ignore the setting value of only the sensors that require the touchscreen. */
     public void ignoreTouchScreenSensorsSettingInterferingWithDocking(boolean ignore) {
         for (TriggerSensor sensor : mSensors) {
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
index 529b016..d2bebb7 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
@@ -130,4 +130,10 @@
             mDozeMachine.requestState(DozeMachine.State.DOZE);
         }
     }
+
+    @Override
+    public void setDozeScreenState(int state) {
+        super.setDozeScreenState(state);
+        mDozeMachine.onScreenState(state);
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
index 82639ba..cbf8f57 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
@@ -30,6 +30,7 @@
 import android.os.UserHandle;
 import android.text.format.Formatter;
 import android.util.Log;
+import android.view.Display;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.logging.MetricsLogger;
@@ -92,6 +93,9 @@
     private boolean mPulsePending;
 
     private final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class);
+    private boolean mWantProx;
+    private boolean mWantSensors;
+    private boolean mWantTouchScreenSensors;
 
     @VisibleForTesting
     public enum DozingUpdateUiEvent implements UiEventLogger.UiEventEnum {
@@ -382,24 +386,25 @@
                 break;
             case DOZE:
             case DOZE_AOD:
-                mDozeSensors.setProxListening(newState != DozeMachine.State.DOZE);
-                mDozeSensors.setListening(true);
-                mDozeSensors.setPaused(false);
+                mWantProx = newState != DozeMachine.State.DOZE;
+                mWantSensors = true;
+                mWantTouchScreenSensors = true;
                 if (newState == DozeMachine.State.DOZE_AOD && !sWakeDisplaySensorState) {
                     onWakeScreen(false, newState);
                 }
                 break;
             case DOZE_AOD_PAUSED:
             case DOZE_AOD_PAUSING:
-                mDozeSensors.setProxListening(true);
-                mDozeSensors.setPaused(true);
+                mWantProx = true;
                 break;
             case DOZE_PULSING:
             case DOZE_PULSING_BRIGHT:
+                mWantProx = true;
+                mWantTouchScreenSensors = false;
+                break;
             case DOZE_AOD_DOCKED:
-                mDozeSensors.setTouchscreenSensorsListening(false);
-                mDozeSensors.setProxListening(true);
-                mDozeSensors.setPaused(false);
+                mWantProx = false;
+                mWantTouchScreenSensors = false;
                 break;
             case DOZE_PULSE_DONE:
                 mDozeSensors.requestTemporaryDisable();
@@ -413,11 +418,28 @@
                 mDockManager.removeListener(mDockEventListener);
                 mDozeSensors.setListening(false);
                 mDozeSensors.setProxListening(false);
+                mWantSensors = false;
+                mWantProx = false;
+                mWantTouchScreenSensors = false;
                 break;
             default:
         }
     }
 
+    @Override
+    public void onScreenState(int state) {
+        mDozeSensors.onScreenState(state);
+        if (state == Display.STATE_DOZE || state == Display.STATE_DOZE_SUSPEND
+                || state == Display.STATE_OFF) {
+            mDozeSensors.setProxListening(mWantProx);
+            mDozeSensors.setListening(mWantSensors);
+            mDozeSensors.setTouchscreenSensorsListening(mWantTouchScreenSensors);
+        } else {
+            mDozeSensors.setProxListening(false);
+            mDozeSensors.setListening(mWantSensors);
+        }
+    }
+
     private void checkTriggersAtInit() {
         if (mUiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_CAR
                 || mDozeHost.isBlockingDoze()
diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
index b2e9164..2702bc4 100644
--- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
@@ -19,6 +19,7 @@
 import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
 import static android.view.WindowManager.ScreenshotSource.SCREENSHOT_GLOBAL_ACTIONS;
 import static android.view.WindowManager.TAKE_SCREENSHOT_FULLSCREEN;
+import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_2BUTTON;
 
 import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_USER_REQUEST;
 import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_NOT_REQUIRED;
@@ -547,7 +548,7 @@
         if (!mDeviceProvisioned && !action.showBeforeProvisioning()) {
             return false;
         }
-        return true;
+        return action.shouldShow();
     }
 
     /**
@@ -962,6 +963,8 @@
 
     @VisibleForTesting
     class ScreenshotAction extends SinglePressAction implements LongPressAction {
+        final String KEY_SYSTEM_NAV_2BUTTONS = "system_nav_2buttons";
+
         public ScreenshotAction() {
             super(R.drawable.ic_screenshot, R.string.global_action_screenshot);
         }
@@ -994,6 +997,19 @@
         }
 
         @Override
+        public boolean shouldShow() {
+          // Include screenshot in power menu for legacy nav because it is not accessible
+          // through Recents in that mode
+            return is2ButtonNavigationEnabled();
+        }
+
+        boolean is2ButtonNavigationEnabled() {
+            return NAV_BAR_MODE_2BUTTON == mContext.getResources().getInteger(
+                    com.android.internal.R.integer.config_navBarInteractionMode);
+        }
+
+
+        @Override
         public boolean onLongPress() {
             if (FeatureFlagUtils.isEnabled(mContext, FeatureFlagUtils.SCREENRECORD_LONG_PRESS)) {
                 mUiEventLogger.log(GlobalActionsEvent.GA_SCREENSHOT_LONG_PRESS);
@@ -1616,6 +1632,10 @@
          * @return
          */
         CharSequence getMessage();
+
+        default boolean shouldShow() {
+            return true;
+        }
     }
 
     /**
@@ -2129,7 +2149,6 @@
         private boolean mShowing;
         private float mScrimAlpha;
         private ResetOrientationData mResetOrientationData;
-        private boolean mHadTopUi;
         private final NotificationShadeWindowController mNotificationShadeWindowController;
         private final NotificationShadeDepthController mDepthController;
         private final SysUiState mSysUiState;
@@ -2397,8 +2416,7 @@
         public void show() {
             super.show();
             mShowing = true;
-            mHadTopUi = mNotificationShadeWindowController.getForceHasTopUi();
-            mNotificationShadeWindowController.setForceHasTopUi(true);
+            mNotificationShadeWindowController.setRequestTopUi(true, TAG);
             mSysUiState.setFlag(SYSUI_STATE_GLOBAL_ACTIONS_SHOWING, true)
                     .commitUpdate(mContext.getDisplayId());
 
@@ -2499,7 +2517,7 @@
             dismissOverflow(true);
             dismissPowerOptions(true);
             if (mControlsUiController != null) mControlsUiController.hide();
-            mNotificationShadeWindowController.setForceHasTopUi(mHadTopUi);
+            mNotificationShadeWindowController.setRequestTopUi(false, TAG);
             mDepthController.updateGlobalDialogVisibility(0, null /* view */);
             mSysUiState.setFlag(SYSUI_STATE_GLOBAL_ACTIONS_SHOWING, false)
                     .commitUpdate(mContext.getDisplayId());
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt b/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt
index 299ae5b..08b700b 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt
@@ -360,7 +360,8 @@
         val app = builder.loadHeaderAppName()
 
         // App Icon
-        val smallIconDrawable: Drawable = sbn.notification.smallIcon.loadDrawable(context)
+        val smallIconDrawable: Drawable = sbn.notification.smallIcon.loadDrawableAsUser(context,
+                sbn.user.identifier)
 
         // Song name
         var song: CharSequence? = metadata.getString(MediaMetadata.METADATA_KEY_DISPLAY_TITLE)
diff --git a/packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.java b/packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.java
index 0a84f5e..38b20ee 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.java
@@ -57,12 +57,18 @@
         mContext = context;
         mUserId = userId;
         mAutoAdded = new ArraySet<>(getAdded());
+    }
+
+    /**
+     * Init method must be called after construction to start listening
+     */
+    public void initialize() {
         // TODO: remove migration code and shared preferences keys after P release
         if (mUserId == UserHandle.USER_SYSTEM) {
             for (String[] convertPref : CONVERT_PREFS) {
-                if (Prefs.getBoolean(context, convertPref[0], false)) {
+                if (Prefs.getBoolean(mContext, convertPref[0], false)) {
                     setTileAdded(convertPref[1]);
-                    Prefs.remove(context, convertPref[0]);
+                    Prefs.remove(mContext, convertPref[0]);
                 }
             }
         }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/dagger/QSModule.java b/packages/SystemUI/src/com/android/systemui/qs/dagger/QSModule.java
new file mode 100644
index 0000000..8740581
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/dagger/QSModule.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.qs.dagger;
+
+import android.content.Context;
+import android.hardware.display.NightDisplayListener;
+import android.os.Handler;
+
+import com.android.systemui.dagger.qualifiers.Background;
+import com.android.systemui.qs.AutoAddTracker;
+import com.android.systemui.qs.QSTileHost;
+import com.android.systemui.statusbar.phone.AutoTileManager;
+import com.android.systemui.statusbar.phone.ManagedProfileController;
+import com.android.systemui.statusbar.policy.CastController;
+import com.android.systemui.statusbar.policy.DataSaverController;
+import com.android.systemui.statusbar.policy.HotspotController;
+
+import dagger.Module;
+import dagger.Provides;
+
+/**
+ * Module for QS dependencies
+ */
+// TODO: Add other QS classes
+@Module
+public interface QSModule {
+
+    @Provides
+    static AutoTileManager provideAutoTileManager(
+            Context context,
+            AutoAddTracker.Builder autoAddTrackerBuilder,
+            QSTileHost host,
+            @Background Handler handler,
+            HotspotController hotspotController,
+            DataSaverController dataSaverController,
+            ManagedProfileController managedProfileController,
+            NightDisplayListener nightDisplayListener,
+            CastController castController) {
+        AutoTileManager manager = new AutoTileManager(context, autoAddTrackerBuilder,
+                host, handler, hotspotController, dataSaverController, managedProfileController,
+                nightDisplayListener, castController);
+        manager.init();
+        return manager;
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
index bc03ca6..077c7aa 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
@@ -23,6 +23,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.res.Resources;
+import android.os.UserHandle;
 import android.provider.Settings;
 import android.service.quicksettings.Tile;
 import android.telephony.SubscriptionManager;
@@ -230,7 +231,8 @@
 
     @Override
     public boolean isAvailable() {
-        return mController.hasMobileDataFeature();
+        return mController.hasMobileDataFeature()
+            && mHost.getUserContext().getUserId() == UserHandle.USER_SYSTEM;
     }
 
     private static final class CallbackInfo {
diff --git a/packages/SystemUI/src/com/android/systemui/screenrecord/ScreenMediaRecorder.java b/packages/SystemUI/src/com/android/systemui/screenrecord/ScreenMediaRecorder.java
index 1a9abb9..e6f43c1 100644
--- a/packages/SystemUI/src/com/android/systemui/screenrecord/ScreenMediaRecorder.java
+++ b/packages/SystemUI/src/com/android/systemui/screenrecord/ScreenMediaRecorder.java
@@ -132,7 +132,7 @@
         mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
         mMediaRecorder.setVideoEncodingProfileLevel(
                 MediaCodecInfo.CodecProfileLevel.AVCProfileHigh,
-                MediaCodecInfo.CodecProfileLevel.AVCLevel42);
+                MediaCodecInfo.CodecProfileLevel.AVCLevel3);
         mMediaRecorder.setVideoSize(screenWidth, screenHeight);
         mMediaRecorder.setVideoFrameRate(refereshRate);
         mMediaRecorder.setVideoEncodingBitRate(vidBitRate);
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationsController.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationsController.java
index fbcd6ba..42dde40 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationsController.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationsController.java
@@ -205,7 +205,8 @@
         mPublicNotificationBuilder
                 .setContentTitle(mResources.getString(R.string.screenshot_saved_title))
                 .setContentText(mResources.getString(R.string.screenshot_saved_text))
-                .setContentIntent(PendingIntent.getActivity(mContext, 0, launchIntent, 0))
+                .setContentIntent(PendingIntent
+                        .getActivity(mContext, 0, launchIntent, PendingIntent.FLAG_IMMUTABLE))
                 .setWhen(now)
                 .setAutoCancel(true)
                 .setColor(mContext.getColor(
@@ -213,7 +214,8 @@
         mNotificationBuilder
                 .setContentTitle(mResources.getString(R.string.screenshot_saved_title))
                 .setContentText(mResources.getString(R.string.screenshot_saved_text))
-                .setContentIntent(PendingIntent.getActivity(mContext, 0, launchIntent, 0))
+                .setContentIntent(PendingIntent
+                        .getActivity(mContext, 0, launchIntent, PendingIntent.FLAG_IMMUTABLE))
                 .setWhen(now)
                 .setAutoCancel(true)
                 .setColor(mContext.getColor(
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java
index 9abc660..d04389d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java
@@ -36,6 +36,7 @@
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.statusbar.NotificationVisibility;
 import com.android.systemui.Dumpable;
+import com.android.systemui.bubbles.BubbleController;
 import com.android.systemui.statusbar.FeatureFlags;
 import com.android.systemui.statusbar.NotificationLifetimeExtender;
 import com.android.systemui.statusbar.NotificationListener;
@@ -189,6 +190,8 @@
         }
     }
 
+    private final Lazy<BubbleController> mBubbleControllerLazy;
+
     /**
      * Injected constructor. See {@link NotificationsModule}.
      */
@@ -201,6 +204,7 @@
             Lazy<NotificationRowBinder> notificationRowBinderLazy,
             Lazy<NotificationRemoteInputManager> notificationRemoteInputManagerLazy,
             LeakDetector leakDetector,
+            Lazy<BubbleController> bubbleController,
             ForegroundServiceDismissalFeatureController fgsFeatureController) {
         mLogger = logger;
         mGroupManager = groupManager;
@@ -211,6 +215,7 @@
         mRemoteInputManagerLazy = notificationRemoteInputManagerLazy;
         mLeakDetector = leakDetector;
         mFgsFeatureController = fgsFeatureController;
+        mBubbleControllerLazy = bubbleController;
     }
 
     /** Once called, the NEM will start processing notification events from system server. */
@@ -920,8 +925,20 @@
     /**
      * @return {@code true} if there is at least one notification that should be visible right now
      */
-    public boolean hasActiveNotifications() {
-        return mReadOnlyNotifications.size() != 0;
+    public boolean hasVisibleNotifications() {
+        if (mReadOnlyNotifications.size() == 0) {
+            return false;
+        }
+
+        // Filter out suppressed notifications, which are active notifications backing a bubble
+        // but are not present in the shade
+        for (NotificationEntry e : mSortedAndFiltered) {
+            if (!mBubbleControllerLazy.get().isBubbleNotificationSuppressedFromShade(e)) {
+                return true;
+            }
+        }
+
+        return false;
     }
 
     @Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java
index df1de63..c37e93d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java
@@ -87,6 +87,7 @@
             Lazy<NotificationRowBinder> notificationRowBinderLazy,
             Lazy<NotificationRemoteInputManager> notificationRemoteInputManagerLazy,
             LeakDetector leakDetector,
+            Lazy<BubbleController> bubbleController,
             ForegroundServiceDismissalFeatureController fgsFeatureController) {
         return new NotificationEntryManager(
                 logger,
@@ -97,6 +98,7 @@
                 notificationRowBinderLazy,
                 notificationRemoteInputManagerLazy,
                 leakDetector,
+                bubbleController,
                 fgsFeatureController);
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
index b9d31a9..a4a5819 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
@@ -6580,7 +6580,7 @@
         if (mFeatureFlags.isNewNotifPipelineRenderingEnabled()) {
             return !mNotifPipeline.getShadeList().isEmpty();
         } else {
-            return mEntryManager.hasActiveNotifications();
+            return mEntryManager.hasVisibleNotifications();
         }
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java
index 825919f..db9956a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java
@@ -40,8 +40,6 @@
 import java.util.ArrayList;
 import java.util.Objects;
 
-import javax.inject.Inject;
-
 /**
  * Manages which tiles should be automatically added to QS.
  */
@@ -57,6 +55,7 @@
     static final String SETTING_SEPARATOR = ":";
 
     private UserHandle mCurrentUser;
+    private boolean mInitialized;
 
     private final Context mContext;
     private final QSTileHost mHost;
@@ -69,7 +68,6 @@
     private final CastController mCastController;
     private final ArrayList<AutoAddSetting> mAutoAddSettingList = new ArrayList<>();
 
-    @Inject
     public AutoTileManager(Context context, AutoAddTracker.Builder autoAddTrackerBuilder,
             QSTileHost host,
             @Background Handler handler,
@@ -88,9 +86,20 @@
         mManagedProfileController = managedProfileController;
         mNightDisplayListener = nightDisplayListener;
         mCastController = castController;
+    }
 
+    /**
+     * Init method must be called after construction to start listening
+     */
+    public void init() {
+        if (mInitialized) {
+            Log.w(TAG, "Trying to re-initialize");
+            return;
+        }
+        mAutoTracker.initialize();
         populateSettingsList();
         startControllersAndSettingsListeners();
+        mInitialized = true;
     }
 
     protected void startControllersAndSettingsListeners() {
@@ -168,8 +177,14 @@
         }
     }
 
+    /*
+     * This will be sent off the main thread if needed
+     */
     @Override
     public void changeUser(UserHandle newUser) {
+        if (!mInitialized) {
+            throw new IllegalStateException("AutoTileManager not initialized");
+        }
         if (!Thread.currentThread().equals(mHandler.getLooper().getThread())) {
             mHandler.post(() -> changeUser(newUser));
             return;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java
index 303a083..0e76c904 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java
@@ -152,6 +152,7 @@
     private final Context mContext;
     private final int mWakeUpDelay;
     private int mMode;
+    private BiometricSourceType mBiometricType;
     private KeyguardViewController mKeyguardViewController;
     private DozeScrimController mDozeScrimController;
     private KeyguardViewMediator mKeyguardViewMediator;
@@ -340,6 +341,7 @@
             Trace.endSection();
             return;
         }
+        mBiometricType = biometricSourceType;
         mMetricsLogger.write(new LogMaker(MetricsEvent.BIOMETRIC_AUTH)
                 .setType(MetricsEvent.TYPE_SUCCESS).setSubtype(toSubtype(biometricSourceType)));
         Optional.ofNullable(BiometricUiEvent.SUCCESS_EVENT_BY_SOURCE_TYPE.get(biometricSourceType))
@@ -615,6 +617,7 @@
 
     private void resetMode() {
         mMode = MODE_NONE;
+        mBiometricType = null;
         mNotificationShadeWindowController.setForceDozeBrightness(false);
         if (mStatusBar.getNavigationBarView() != null) {
             mStatusBar.getNavigationBarView().setWakeAndUnlocking(false);
@@ -680,8 +683,8 @@
     /**
      * Successful authentication with fingerprint, face, or iris when the lockscreen fades away
      */
-    public boolean isUnlockFading() {
-        return mMode == MODE_UNLOCK_FADING;
+    public BiometricSourceType getBiometricType() {
+        return mBiometricType;
     }
 
     /**
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
index b47c59a..0a366c9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
@@ -85,8 +85,6 @@
 import com.android.systemui.tuner.LockscreenFragment.LockButtonFactory;
 import com.android.systemui.tuner.TunerService;
 
-import java.util.concurrent.Executor;
-
 /**
  * Implementation for the bottom area of the Keyguard, including camera/phone affordance and status
  * text.
@@ -561,7 +559,7 @@
             }
         };
         if (!mKeyguardStateController.canDismissLockScreen()) {
-            Dependency.get(Executor.class).execute(runnable);
+            Dependency.get(Dependency.BACKGROUND_EXECUTOR).execute(runnable);
         } else {
             boolean dismissShade = !TextUtils.isEmpty(mRightButtonStr)
                     && Dependency.get(TunerService.class).getValue(LOCKSCREEN_RIGHT_UNLOCK, 1) != 0;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightsOutNotifController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightsOutNotifController.java
index 8e192c5..c758670 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightsOutNotifController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightsOutNotifController.java
@@ -97,7 +97,7 @@
     }
 
     private boolean hasActiveNotifications() {
-        return mEntryManager.hasActiveNotifications();
+        return mEntryManager.hasVisibleNotifications();
     }
 
     @VisibleForTesting
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenLockIconController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenLockIconController.java
index 5d3910b..7a8dc32 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenLockIconController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenLockIconController.java
@@ -83,6 +83,7 @@
     private boolean mWakeAndUnlockRunning;
     private boolean mShowingLaunchAffordance;
     private boolean mBouncerShowingScrimmed;
+    private boolean mFingerprintUnlock;
     private int mStatusBarState = StatusBarState.SHADE;
     private LockIcon mLockIcon;
 
@@ -389,14 +390,19 @@
     /**
      * We need to hide the lock whenever there's a fingerprint unlock, otherwise you'll see the
      * icon on top of the black front scrim.
+     * We also want to halt padlock the animation when we're in face bypass mode or dismissing the
+     * keyguard with fingerprint.
      * @param wakeAndUnlock are we wake and unlocking
      * @param isUnlock are we currently unlocking
      */
-    public void onBiometricAuthModeChanged(boolean wakeAndUnlock, boolean isUnlock) {
+    public void onBiometricAuthModeChanged(boolean wakeAndUnlock, boolean isUnlock,
+            BiometricSourceType type) {
         if (wakeAndUnlock) {
             mWakeAndUnlockRunning = true;
         }
-        if (isUnlock && mKeyguardBypassController.getBypassEnabled() && canBlockUpdates()) {
+        mFingerprintUnlock = type == BiometricSourceType.FINGERPRINT;
+        if (isUnlock && (mFingerprintUnlock || mKeyguardBypassController.getBypassEnabled())
+                && canBlockUpdates()) {
             // We don't want the icon to change while we are unlocking
             mBlockUpdates = true;
         }
@@ -513,10 +519,13 @@
                 && (!mStatusBarStateController.isPulsing() || mDocked);
         boolean invisible = onAodNotPulsingOrDocked || mWakeAndUnlockRunning
                 || mShowingLaunchAffordance;
-        if (mKeyguardBypassController.getBypassEnabled() && !mBouncerShowingScrimmed) {
+        boolean fingerprintOrBypass = mFingerprintUnlock
+                || mKeyguardBypassController.getBypassEnabled();
+        if (fingerprintOrBypass && !mBouncerShowingScrimmed) {
             if ((mHeadsUpManagerPhone.isHeadsUpGoingAway()
                     || mHeadsUpManagerPhone.hasPinnedHeadsUp()
-                    || mStatusBarState == StatusBarState.KEYGUARD)
+                    || mStatusBarState == StatusBarState.KEYGUARD
+                    || mStatusBarState == StatusBarState.SHADE)
                     && !mNotificationWakeUpCoordinator.getNotificationsFullyHidden()) {
                 invisible = true;
             }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
index 375af6b..64202d2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
@@ -3003,7 +3003,7 @@
     private void updateShowEmptyShadeView() {
         boolean
                 showEmptyShadeView =
-                mBarState != StatusBarState.KEYGUARD && !mEntryManager.hasActiveNotifications();
+                mBarState != StatusBarState.KEYGUARD && !mEntryManager.hasVisibleNotifications();
         showEmptyShadeView(showEmptyShadeView);
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowController.java
index 5164440..bc73be1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowController.java
@@ -61,6 +61,8 @@
 import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
 import java.util.function.Consumer;
 
 import javax.inject.Inject;
@@ -432,7 +434,7 @@
     }
 
     private void applyHasTopUi(State state) {
-        mHasTopUiChanged = state.mForceHasTopUi || isExpanded(state);
+        mHasTopUiChanged = !state.mComponentsForcingTopUi.isEmpty() || isExpanded(state);
     }
 
     private void applyNotTouchable(State state) {
@@ -635,12 +637,17 @@
         apply(mCurrentState);
     }
 
-    public boolean getForceHasTopUi() {
-        return mCurrentState.mForceHasTopUi;
-    }
-
-    public void setForceHasTopUi(boolean forceHasTopUi) {
-        mCurrentState.mForceHasTopUi = forceHasTopUi;
+    /**
+     * SystemUI may need top-ui to avoid jank when performing animations.  After the
+     * animation is performed, the component should remove itself from the list of features that
+     * are forcing SystemUI to be top-ui.
+     */
+    public void setRequestTopUi(boolean requestTopUi, String componentTag) {
+        if (requestTopUi) {
+            mCurrentState.mComponentsForcingTopUi.add(componentTag);
+        } else {
+            mCurrentState.mComponentsForcingTopUi.remove(componentTag);
+        }
         apply(mCurrentState);
     }
 
@@ -663,7 +670,7 @@
         boolean mBackdropShowing;
         boolean mWallpaperSupportsAmbientMode;
         boolean mNotTouchable;
-        boolean mForceHasTopUi;
+        Set<String> mComponentsForcingTopUi = new HashSet<>();
 
         /**
          * The {@link StatusBar} state from the status bar.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
index 60fc17d..686b871 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
@@ -348,10 +348,8 @@
         }
 
         if (mKeyguardUpdateMonitor.needsSlowUnlockTransition() && mState == ScrimState.UNLOCKED) {
-            // In case the user isn't unlocked, make sure to delay a bit because the system is hosed
-            // with too many things at this case, in order to not skip the initial frames.
-            mScrimInFront.postOnAnimationDelayed(this::scheduleUpdate, 16);
             mAnimationDelay = StatusBar.FADE_KEYGUARD_START_DELAY;
+            scheduleUpdate();
         } else if ((!mDozeParameters.getAlwaysOn() && oldState == ScrimState.AOD)
                 || (mState == ScrimState.AOD && !mDozeParameters.getDisplayNeedsBlanking())) {
             // Scheduling a frame isn't enough when:
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index a5cc1a8..f125b7d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -29,7 +29,10 @@
 import static android.view.WindowInsetsController.APPEARANCE_LOW_PROFILE_BARS;
 import static android.view.WindowInsetsController.APPEARANCE_OPAQUE_STATUS_BARS;
 
+import static androidx.lifecycle.Lifecycle.State.RESUMED;
+
 import static com.android.systemui.Dependency.TIME_TICK_HANDLER_NAME;
+import static com.android.systemui.charging.WirelessChargingLayout.UNKNOWN_BATTERY_LEVEL;
 import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_ASLEEP;
 import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_AWAKE;
 import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_WAKING;
@@ -45,6 +48,7 @@
 import static com.android.systemui.statusbar.phone.BarTransitions.MODE_WARNING;
 import static com.android.systemui.statusbar.phone.BarTransitions.TransitionMode;
 
+import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.app.ActivityManager;
 import android.app.ActivityOptions;
@@ -114,6 +118,10 @@
 import android.view.accessibility.AccessibilityManager;
 import android.widget.DateTimeView;
 
+import androidx.lifecycle.Lifecycle;
+import androidx.lifecycle.LifecycleOwner;
+import androidx.lifecycle.LifecycleRegistry;
+
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.colorextraction.ColorExtractor;
 import com.android.internal.logging.MetricsLogger;
@@ -205,7 +213,6 @@
 import com.android.systemui.statusbar.phone.dagger.StatusBarComponent;
 import com.android.systemui.statusbar.phone.dagger.StatusBarPhoneModule;
 import com.android.systemui.statusbar.policy.BatteryController;
-import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback;
 import com.android.systemui.statusbar.policy.BrightnessMirrorController;
 import com.android.systemui.statusbar.policy.ConfigurationController;
 import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener;
@@ -237,7 +244,8 @@
         ActivityStarter, KeyguardStateController.Callback,
         OnHeadsUpChangedListener, CommandQueue.Callbacks,
         ColorExtractor.OnColorsChangedListener, ConfigurationListener,
-        StatusBarStateController.StateListener, ActivityLaunchAnimator.Callback {
+        StatusBarStateController.StateListener, ActivityLaunchAnimator.Callback,
+        LifecycleOwner, BatteryController.BatteryStateChangeCallback {
     public static final boolean MULTIUSER_DEBUG = false;
 
     protected static final int MSG_HIDE_RECENT_APPS = 1020;
@@ -586,7 +594,8 @@
     private KeyguardUserSwitcher mKeyguardUserSwitcher;
     private final UserSwitcherController mUserSwitcherController;
     private final NetworkController mNetworkController;
-    private final BatteryController mBatteryController;
+    private final LifecycleRegistry mLifecycle = new LifecycleRegistry(this);
+    protected final BatteryController mBatteryController;
     protected boolean mPanelExpanded;
     private UiModeManager mUiModeManager;
     protected boolean mIsKeyguard;
@@ -935,6 +944,9 @@
 
         mConfigurationController.addCallback(this);
 
+        mBatteryController.observe(mLifecycle, this);
+        mLifecycle.setCurrentState(RESUMED);
+
         // set the initial view visibility
         int disabledFlags1 = result.mDisabledFlags1;
         int disabledFlags2 = result.mDisabledFlags2;
@@ -1101,22 +1113,6 @@
         mAmbientIndicationContainer = mNotificationShadeWindowView.findViewById(
                 R.id.ambient_indication_container);
 
-        // TODO: Find better place for this callback.
-        mBatteryController.addCallback(new BatteryStateChangeCallback() {
-            @Override
-            public void onPowerSaveChanged(boolean isPowerSave) {
-                mHandler.post(mCheckBarModes);
-                if (mDozeServiceHost != null) {
-                    mDozeServiceHost.firePowerSaveChanged(isPowerSave);
-                }
-            }
-
-            @Override
-            public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {
-                // noop
-            }
-        });
-
         mAutoHideController.setStatusBar(new AutoHideUiElement() {
             @Override
             public void synchronizeState() {
@@ -1267,6 +1263,25 @@
         ThreadedRenderer.overrideProperty("ambientRatio", String.valueOf(1.5f));
     }
 
+    @NonNull
+    @Override
+    public Lifecycle getLifecycle() {
+        return mLifecycle;
+    }
+
+    @Override
+    public void onPowerSaveChanged(boolean isPowerSave) {
+        mHandler.post(mCheckBarModes);
+        if (mDozeServiceHost != null) {
+            mDozeServiceHost.firePowerSaveChanged(isPowerSave);
+        }
+    }
+
+    @Override
+    public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {
+        // noop
+    }
+
     @VisibleForTesting
     protected void registerBroadcastReceiver() {
         IntentFilter filter = new IntentFilter();
@@ -2369,24 +2384,43 @@
 
     @Override
     public void showWirelessChargingAnimation(int batteryLevel) {
+        showChargingAnimation(batteryLevel, UNKNOWN_BATTERY_LEVEL, 0);
+    }
+
+    protected void showChargingAnimation(int batteryLevel, int transmittingBatteryLevel,
+            long animationDelay) {
         if (mDozing || mKeyguardManager.isKeyguardLocked()) {
             // on ambient or lockscreen, hide notification panel
             WirelessChargingAnimation.makeWirelessChargingAnimation(mContext, null,
-                    batteryLevel, new WirelessChargingAnimation.Callback() {
+                    transmittingBatteryLevel, batteryLevel,
+                    new WirelessChargingAnimation.Callback() {
                         @Override
                         public void onAnimationStarting() {
+                            mNotificationShadeWindowController.setRequestTopUi(true, TAG);
                             CrossFadeHelper.fadeOut(mNotificationPanelViewController.getView(), 1);
                         }
 
                         @Override
                         public void onAnimationEnded() {
                             CrossFadeHelper.fadeIn(mNotificationPanelViewController.getView());
+                            mNotificationShadeWindowController.setRequestTopUi(false, TAG);
                         }
-                    }, mDozing).show();
+                    }, mDozing).show(animationDelay);
         } else {
             // workspace
             WirelessChargingAnimation.makeWirelessChargingAnimation(mContext, null,
-                    batteryLevel, null, false).show();
+                    transmittingBatteryLevel, batteryLevel,
+                    new WirelessChargingAnimation.Callback() {
+                        @Override
+                        public void onAnimationStarting() {
+                            mNotificationShadeWindowController.setRequestTopUi(true, TAG);
+                        }
+
+                        @Override
+                        public void onAnimationEnded() {
+                            mNotificationShadeWindowController.setRequestTopUi(false, TAG);
+                        }
+                    }, false).show(animationDelay);
         }
     }
 
@@ -3947,7 +3981,8 @@
         updateScrimController();
         mLockscreenLockIconController.onBiometricAuthModeChanged(
                 mBiometricUnlockController.isWakeAndUnlock(),
-                mBiometricUnlockController.isBiometricUnlock());
+                mBiometricUnlockController.isBiometricUnlock(),
+                mBiometricUnlockController.getBiometricType());
     }
 
     @VisibleForTesting
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
index 93df14f..0364186 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
@@ -83,15 +83,16 @@
     public void removeIcon(String slot, int tag);
     public void removeAllIconsForSlot(String slot);
 
-    public static final String ICON_BLACKLIST = "icon_blacklist";
+    // TODO: See if we can rename this tunable name.
+    String ICON_HIDE_LIST = "icon_blacklist";
 
-    /** Reads the default blacklist from config value unless blacklistStr is provided. */
-    static ArraySet<String> getIconBlacklist(Context context, String blackListStr) {
+    /** Reads the default hide list from config value unless hideListStr is provided. */
+    static ArraySet<String> getIconHideList(Context context, String hideListStr) {
         ArraySet<String> ret = new ArraySet<>();
-        String[] blacklist = blackListStr == null
+        String[] hideList = hideListStr == null
             ? context.getResources().getStringArray(R.array.config_statusBarIconBlackList)
-            : blackListStr.split(",");
-        for (String slot : blacklist) {
+            : hideListStr.split(",");
+        for (String slot : hideList) {
             if (!TextUtils.isEmpty(slot)) {
                 ret.add(slot);
             }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java
index d0e8067..21e1d31 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java
@@ -59,7 +59,7 @@
     private static final String TAG = "StatusBarIconController";
 
     private final ArrayList<IconManager> mIconGroups = new ArrayList<>();
-    private final ArraySet<String> mIconBlacklist = new ArraySet<>();
+    private final ArraySet<String> mIconHideList = new ArraySet<>();
 
     // Points to light or dark context depending on the... context?
     private Context mContext;
@@ -79,7 +79,7 @@
         loadDimens();
 
         commandQueue.addCallback(this);
-        Dependency.get(TunerService.class).addTunable(this, ICON_BLACKLIST);
+        Dependency.get(TunerService.class).addTunable(this, ICON_HIDE_LIST);
     }
 
     @Override
@@ -89,12 +89,12 @@
         for (int i = 0; i < allSlots.size(); i++) {
             Slot slot = allSlots.get(i);
             List<StatusBarIconHolder> holders = slot.getHolderListInViewOrder();
-            boolean blocked = mIconBlacklist.contains(slot.getName());
+            boolean hidden = mIconHideList.contains(slot.getName());
 
             for (StatusBarIconHolder holder : holders) {
                 int tag = holder.getTag();
                 int viewIndex = getViewIndex(getSlotIndex(slot.getName()), holder.getTag());
-                group.onIconAdded(viewIndex, slot.getName(), blocked, holder);
+                group.onIconAdded(viewIndex, slot.getName(), hidden, holder);
             }
         }
     }
@@ -107,11 +107,11 @@
 
     @Override
     public void onTuningChanged(String key, String newValue) {
-        if (!ICON_BLACKLIST.equals(key)) {
+        if (!ICON_HIDE_LIST.equals(key)) {
             return;
         }
-        mIconBlacklist.clear();
-        mIconBlacklist.addAll(StatusBarIconController.getIconBlacklist(mContext, newValue));
+        mIconHideList.clear();
+        mIconHideList.addAll(StatusBarIconController.getIconHideList(mContext, newValue));
         ArrayList<Slot> currentSlots = getSlots();
         ArrayMap<Slot, List<StatusBarIconHolder>> slotsToReAdd = new ArrayMap<>();
 
@@ -142,9 +142,9 @@
     private void addSystemIcon(int index, StatusBarIconHolder holder) {
         String slot = getSlotName(index);
         int viewIndex = getViewIndex(index, holder.getTag());
-        boolean blocked = mIconBlacklist.contains(slot);
+        boolean hidden = mIconHideList.contains(slot);
 
-        mIconGroups.forEach(l -> l.onIconAdded(viewIndex, slot, blocked, holder));
+        mIconGroups.forEach(l -> l.onIconAdded(viewIndex, slot, hidden, holder));
     }
 
     @Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java
index 45f0c49..8e933a2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java
@@ -330,7 +330,7 @@
     }
 
     public boolean hasActiveNotifications() {
-        return mEntryManager.hasActiveNotifications();
+        return mEntryManager.hasVisibleNotifications();
     }
 
     @Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java
index 690d573..7eefaf2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java
@@ -52,12 +52,12 @@
     private final SecurityController mSecurityController;
     private final Handler mHandler = Handler.getMain();
 
-    private boolean mBlockAirplane;
-    private boolean mBlockMobile;
-    private boolean mBlockWifi;
-    private boolean mBlockEthernet;
+    private boolean mHideAirplane;
+    private boolean mHideMobile;
+    private boolean mHideWifi;
+    private boolean mHideEthernet;
     private boolean mActivityEnabled;
-    private boolean mForceBlockWifi;
+    private boolean mForceHideWifi;
 
     // Track as little state as possible, and only for padding purposes
     private boolean mIsAirplaneMode = false;
@@ -80,7 +80,7 @@
         mNetworkController = Dependency.get(NetworkController.class);
         mSecurityController = Dependency.get(SecurityController.class);
 
-        Dependency.get(TunerService.class).addTunable(this, StatusBarIconController.ICON_BLACKLIST);
+        Dependency.get(TunerService.class).addTunable(this, StatusBarIconController.ICON_HIDE_LIST);
         mNetworkController.addCallback(this);
         mSecurityController.addCallback(this);
     }
@@ -114,21 +114,21 @@
 
     @Override
     public void onTuningChanged(String key, String newValue) {
-        if (!StatusBarIconController.ICON_BLACKLIST.equals(key)) {
+        if (!StatusBarIconController.ICON_HIDE_LIST.equals(key)) {
             return;
         }
-        ArraySet<String> blockList = StatusBarIconController.getIconBlacklist(mContext, newValue);
-        boolean blockAirplane = blockList.contains(mSlotAirplane);
-        boolean blockMobile = blockList.contains(mSlotMobile);
-        boolean blockWifi = blockList.contains(mSlotWifi);
-        boolean blockEthernet = blockList.contains(mSlotEthernet);
+        ArraySet<String> hideList = StatusBarIconController.getIconHideList(mContext, newValue);
+        boolean hideAirplane = hideList.contains(mSlotAirplane);
+        boolean hideMobile = hideList.contains(mSlotMobile);
+        boolean hideWifi = hideList.contains(mSlotWifi);
+        boolean hideEthernet = hideList.contains(mSlotEthernet);
 
-        if (blockAirplane != mBlockAirplane || blockMobile != mBlockMobile
-                || blockEthernet != mBlockEthernet || blockWifi != mBlockWifi) {
-            mBlockAirplane = blockAirplane;
-            mBlockMobile = blockMobile;
-            mBlockEthernet = blockEthernet;
-            mBlockWifi = blockWifi || mForceBlockWifi;
+        if (hideAirplane != mHideAirplane || hideMobile != mHideMobile
+                || hideEthernet != mHideEthernet || hideWifi != mHideWifi) {
+            mHideAirplane = hideAirplane;
+            mHideMobile = hideMobile;
+            mHideEthernet = hideEthernet;
+            mHideWifi = hideWifi || mForceHideWifi;
             // Re-register to get new callbacks.
             mNetworkController.removeCallback(this);
             mNetworkController.addCallback(this);
@@ -140,7 +140,7 @@
             boolean activityIn, boolean activityOut, String description, boolean isTransient,
             String statusLabel) {
 
-        boolean visible = statusIcon.visible && !mBlockWifi;
+        boolean visible = statusIcon.visible && !mHideWifi;
         boolean in = activityIn && mActivityEnabled && visible;
         boolean out = activityOut && mActivityEnabled && visible;
 
@@ -189,7 +189,7 @@
         // Visibility of the data type indicator changed
         boolean typeChanged = statusType != state.typeId && (statusType == 0 || state.typeId == 0);
 
-        state.visible = statusIcon.visible && !mBlockMobile;
+        state.visible = statusIcon.visible && !mHideMobile;
         state.strengthId = statusIcon.icon;
         state.typeId = statusType;
         state.contentDescription = statusIcon.contentDescription;
@@ -270,7 +270,7 @@
 
     @Override
     public void setEthernetIndicators(IconState state) {
-        boolean visible = state.visible && !mBlockEthernet;
+        boolean visible = state.visible && !mHideEthernet;
         int resId = state.icon;
         String description = state.contentDescription;
 
@@ -284,7 +284,7 @@
 
     @Override
     public void setIsAirplaneMode(IconState icon) {
-        mIsAirplaneMode = icon.visible && !mBlockAirplane;
+        mIsAirplaneMode = icon.visible && !mHideAirplane;
         int resId = icon.icon;
         String description = icon.contentDescription;
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java
index b9168e3..673549a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java
@@ -58,6 +58,11 @@
     default void init() { }
 
     /**
+     * Returns {@code true} if the device is currently in wireless charging mode.
+     */
+    default boolean isWirelessCharging() { return false; }
+
+    /**
      * Returns {@code true} if reverse is supported.
      */
     default boolean isReverseSupported() { return false; }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java
index c4c0d3f..d43dd23 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java
@@ -190,7 +190,7 @@
             mBroadcastDispatcher.registerReceiverWithHandler(mIntentReceiver, filter,
                     Dependency.get(Dependency.TIME_TICK_HANDLER), UserHandle.ALL);
             Dependency.get(TunerService.class).addTunable(this, CLOCK_SECONDS,
-                    StatusBarIconController.ICON_BLACKLIST);
+                    StatusBarIconController.ICON_HIDE_LIST);
             mCommandQueue.addCallback(this);
             if (mShowDark) {
                 Dependency.get(DarkIconDispatcher.class).addDarkReceiver(this);
@@ -296,8 +296,8 @@
         if (CLOCK_SECONDS.equals(key)) {
             mShowSeconds = TunerService.parseIntegerSwitch(newValue, false);
             updateShowSeconds();
-        } else {
-            setClockVisibleByUser(!StatusBarIconController.getIconBlacklist(getContext(), newValue)
+        } else if (StatusBarIconController.ICON_HIDE_LIST.equals(key)) {
+            setClockVisibleByUser(!StatusBarIconController.getIconHideList(getContext(), newValue)
                     .contains("clock"));
             updateClockVisibility();
         }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
index 18a7add..2563f19 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
@@ -23,7 +23,6 @@
 import android.os.Looper;
 import android.provider.Settings.Global;
 import android.telephony.Annotation;
-import android.telephony.CdmaEriInformation;
 import android.telephony.CellSignalStrength;
 import android.telephony.CellSignalStrengthCdma;
 import android.telephony.PhoneStateListener;
@@ -284,6 +283,9 @@
         mNetworkToIconLookup.put(toDisplayIconKey(
                 TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE),
                 TelephonyIcons.NR_5G_PLUS);
+        mNetworkToIconLookup.put(toIconKey(
+                TelephonyManager.NETWORK_TYPE_NR),
+                TelephonyIcons.NR_5G);
     }
 
     private String getIconKey() {
@@ -306,9 +308,9 @@
             case TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO:
                 return toIconKey(TelephonyManager.NETWORK_TYPE_LTE) + "_CA_Plus";
             case TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA:
-                return "5G";
+                return toIconKey(TelephonyManager.NETWORK_TYPE_NR);
             case TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE:
-                return "5G_Plus";
+                return toIconKey(TelephonyManager.NETWORK_TYPE_NR) + "_Plus";
             default:
                 return "unsupported";
         }
@@ -420,11 +422,9 @@
         if (isCarrierNetworkChangeActive()) {
             return false;
         }
-        if (isCdma() && mServiceState != null) {
-            final int iconMode = mPhone.getCdmaEriInformation().getEriIconMode();
-            return mPhone.getCdmaEriInformation().getEriIconIndex() != CdmaEriInformation.ERI_OFF
-                    && (iconMode == CdmaEriInformation.ERI_ICON_MODE_NORMAL
-                    || iconMode == CdmaEriInformation.ERI_ICON_MODE_FLASH);
+        if (isCdma()) {
+            return mPhone.getCdmaEnhancedRoamingIndicatorDisplayNumber()
+                    != TelephonyManager.ERI_OFF;
         } else {
             return mServiceState != null && mServiceState.getRoaming();
         }
diff --git a/packages/SystemUI/src/com/android/systemui/tuner/BatteryPreference.java b/packages/SystemUI/src/com/android/systemui/tuner/BatteryPreference.java
index 66372c3..b71aafd 100644
--- a/packages/SystemUI/src/com/android/systemui/tuner/BatteryPreference.java
+++ b/packages/SystemUI/src/com/android/systemui/tuner/BatteryPreference.java
@@ -38,7 +38,7 @@
     private final String mBattery;
     private boolean mBatteryEnabled;
     private boolean mHasPercentage;
-    private ArraySet<String> mBlacklist;
+    private ArraySet<String> mHideList;
     private boolean mHasSetValue;
 
     public BatteryPreference(Context context, AttributeSet attrs) {
@@ -52,7 +52,7 @@
         super.onAttached();
         mHasPercentage = Settings.System.getInt(getContext().getContentResolver(),
                 SHOW_BATTERY_PERCENT, 0) != 0;
-        Dependency.get(TunerService.class).addTunable(this, StatusBarIconController.ICON_BLACKLIST);
+        Dependency.get(TunerService.class).addTunable(this, StatusBarIconController.ICON_HIDE_LIST);
     }
 
     @Override
@@ -63,9 +63,9 @@
 
     @Override
     public void onTuningChanged(String key, String newValue) {
-        if (StatusBarIconController.ICON_BLACKLIST.equals(key)) {
-            mBlacklist = StatusBarIconController.getIconBlacklist(getContext(), newValue);
-            mBatteryEnabled = !mBlacklist.contains(mBattery);
+        if (StatusBarIconController.ICON_HIDE_LIST.equals(key)) {
+            mHideList = StatusBarIconController.getIconHideList(getContext(), newValue);
+            mBatteryEnabled = !mHideList.contains(mBattery);
         }
         if (!mHasSetValue) {
             // Because of the complicated tri-state it can end up looping and setting state back to
@@ -88,12 +88,12 @@
         MetricsLogger.action(getContext(), MetricsEvent.TUNER_BATTERY_PERCENTAGE, v);
         Settings.System.putInt(getContext().getContentResolver(), SHOW_BATTERY_PERCENT, v ? 1 : 0);
         if (DISABLED.equals(value)) {
-            mBlacklist.add(mBattery);
+            mHideList.add(mBattery);
         } else {
-            mBlacklist.remove(mBattery);
+            mHideList.remove(mBattery);
         }
-        Dependency.get(TunerService.class).setValue(StatusBarIconController.ICON_BLACKLIST,
-                TextUtils.join(",", mBlacklist));
+        Dependency.get(TunerService.class).setValue(StatusBarIconController.ICON_HIDE_LIST,
+                TextUtils.join(",", mHideList));
         return true;
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/tuner/ClockPreference.java b/packages/SystemUI/src/com/android/systemui/tuner/ClockPreference.java
index f7d0c9f..c92d7bb 100644
--- a/packages/SystemUI/src/com/android/systemui/tuner/ClockPreference.java
+++ b/packages/SystemUI/src/com/android/systemui/tuner/ClockPreference.java
@@ -33,7 +33,7 @@
     private final String mClock;
     private boolean mClockEnabled;
     private boolean mHasSeconds;
-    private ArraySet<String> mBlacklist;
+    private ArraySet<String> mHideList;
     private boolean mHasSetValue;
     private boolean mReceivedSeconds;
     private boolean mReceivedClock;
@@ -47,7 +47,7 @@
     @Override
     public void onAttached() {
         super.onAttached();
-        Dependency.get(TunerService.class).addTunable(this, StatusBarIconController.ICON_BLACKLIST,
+        Dependency.get(TunerService.class).addTunable(this, StatusBarIconController.ICON_HIDE_LIST,
                 Clock.CLOCK_SECONDS);
     }
 
@@ -59,10 +59,10 @@
 
     @Override
     public void onTuningChanged(String key, String newValue) {
-        if (StatusBarIconController.ICON_BLACKLIST.equals(key)) {
+        if (StatusBarIconController.ICON_HIDE_LIST.equals(key)) {
             mReceivedClock = true;
-            mBlacklist = StatusBarIconController.getIconBlacklist(getContext(), newValue);
-            mClockEnabled = !mBlacklist.contains(mClock);
+            mHideList = StatusBarIconController.getIconHideList(getContext(), newValue);
+            mClockEnabled = !mHideList.contains(mClock);
         } else if (Clock.CLOCK_SECONDS.equals(key)) {
             mReceivedSeconds = true;
             mHasSeconds = newValue != null && Integer.parseInt(newValue) != 0;
@@ -87,12 +87,12 @@
         Dependency.get(TunerService.class).setValue(Clock.CLOCK_SECONDS, SECONDS.equals(value) ? 1
                 : 0);
         if (DISABLED.equals(value)) {
-            mBlacklist.add(mClock);
+            mHideList.add(mClock);
         } else {
-            mBlacklist.remove(mClock);
+            mHideList.remove(mClock);
         }
-        Dependency.get(TunerService.class).setValue(StatusBarIconController.ICON_BLACKLIST,
-                TextUtils.join(",", mBlacklist));
+        Dependency.get(TunerService.class).setValue(StatusBarIconController.ICON_HIDE_LIST,
+                TextUtils.join(",", mHideList));
         return true;
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/tuner/StatusBarSwitch.java b/packages/SystemUI/src/com/android/systemui/tuner/StatusBarSwitch.java
index de8ccfa..cc0050b 100644
--- a/packages/SystemUI/src/com/android/systemui/tuner/StatusBarSwitch.java
+++ b/packages/SystemUI/src/com/android/systemui/tuner/StatusBarSwitch.java
@@ -34,7 +34,7 @@
 
 public class StatusBarSwitch extends SwitchPreference implements Tunable {
 
-    private Set<String> mBlacklist;
+    private Set<String> mHideList;
 
     public StatusBarSwitch(Context context, AttributeSet attrs) {
         super(context, attrs);
@@ -43,7 +43,7 @@
     @Override
     public void onAttached() {
         super.onAttached();
-        Dependency.get(TunerService.class).addTunable(this, StatusBarIconController.ICON_BLACKLIST);
+        Dependency.get(TunerService.class).addTunable(this, StatusBarIconController.ICON_HIDE_LIST);
     }
 
     @Override
@@ -54,35 +54,35 @@
 
     @Override
     public void onTuningChanged(String key, String newValue) {
-        if (!StatusBarIconController.ICON_BLACKLIST.equals(key)) {
+        if (!StatusBarIconController.ICON_HIDE_LIST.equals(key)) {
             return;
         }
-        mBlacklist = StatusBarIconController.getIconBlacklist(getContext(), newValue);
-        setChecked(!mBlacklist.contains(getKey()));
+        mHideList = StatusBarIconController.getIconHideList(getContext(), newValue);
+        setChecked(!mHideList.contains(getKey()));
     }
 
     @Override
     protected boolean persistBoolean(boolean value) {
         if (!value) {
-            // If not enabled add to blacklist.
-            if (!mBlacklist.contains(getKey())) {
+            // If not enabled add to hideList.
+            if (!mHideList.contains(getKey())) {
                 MetricsLogger.action(getContext(), MetricsEvent.TUNER_STATUS_BAR_DISABLE,
                         getKey());
-                mBlacklist.add(getKey());
-                setList(mBlacklist);
+                mHideList.add(getKey());
+                setList(mHideList);
             }
         } else {
-            if (mBlacklist.remove(getKey())) {
+            if (mHideList.remove(getKey())) {
                 MetricsLogger.action(getContext(), MetricsEvent.TUNER_STATUS_BAR_ENABLE, getKey());
-                setList(mBlacklist);
+                setList(mHideList);
             }
         }
         return true;
     }
 
-    private void setList(Set<String> blacklist) {
+    private void setList(Set<String> hideList) {
         ContentResolver contentResolver = getContext().getContentResolver();
-        Settings.Secure.putStringForUser(contentResolver, StatusBarIconController.ICON_BLACKLIST,
-                TextUtils.join(",", blacklist), ActivityManager.getCurrentUser());
+        Settings.Secure.putStringForUser(contentResolver, StatusBarIconController.ICON_HIDE_LIST,
+                TextUtils.join(",", hideList), ActivityManager.getCurrentUser());
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java b/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java
index 9ad2aa2..644f758 100644
--- a/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java
@@ -60,7 +60,7 @@
 
     // Things that use the tunable infrastructure but are now real user settings and
     // shouldn't be reset with tuner settings.
-    private static final String[] RESET_BLACKLIST = new String[] {
+    private static final String[] RESET_EXCEPTION_LIST = new String[] {
             QSTileHost.TILES_SETTING,
             Settings.Secure.DOZE_ALWAYS_ON,
             Settings.Secure.MEDIA_CONTROLS_RESUME
@@ -116,17 +116,17 @@
 
     private void upgradeTuner(int oldVersion, int newVersion, Handler mainHandler) {
         if (oldVersion < 1) {
-            String blacklistStr = getValue(StatusBarIconController.ICON_BLACKLIST);
-            if (blacklistStr != null) {
-                ArraySet<String> iconBlacklist =
-                        StatusBarIconController.getIconBlacklist(mContext, blacklistStr);
+            String hideListStr = getValue(StatusBarIconController.ICON_HIDE_LIST);
+            if (hideListStr != null) {
+                ArraySet<String> iconHideList =
+                        StatusBarIconController.getIconHideList(mContext, hideListStr);
 
-                iconBlacklist.add("rotate");
-                iconBlacklist.add("headset");
+                iconHideList.add("rotate");
+                iconHideList.add("headset");
 
                 Settings.Secure.putStringForUser(mContentResolver,
-                        StatusBarIconController.ICON_BLACKLIST,
-                        TextUtils.join(",", iconBlacklist), mCurrentUser);
+                        StatusBarIconController.ICON_HIDE_LIST,
+                        TextUtils.join(",", iconHideList), mCurrentUser);
             }
         }
         if (oldVersion < 2) {
@@ -251,7 +251,7 @@
         mContext.sendBroadcast(intent);
 
         for (String key : mTunableLookup.keySet()) {
-            if (ArrayUtils.contains(RESET_BLACKLIST, key)) {
+            if (ArrayUtils.contains(RESET_EXCEPTION_LIST, key)) {
                 continue;
             }
             Settings.Secure.putStringForUser(mContentResolver, key, null, user);
diff --git a/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java b/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java
index 7561af7..b1241b1 100644
--- a/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java
@@ -70,6 +70,8 @@
 
         if (SystemProperties.getInt("service.adb.tcp.port", 0) == 0) {
             mDisconnectedReceiver = new UsbDisconnectedReceiver(this);
+            IntentFilter filter = new IntentFilter(UsbManager.ACTION_USB_STATE);
+            mBroadcastDispatcher.registerReceiver(mDisconnectedReceiver, filter);
         }
 
         Intent intent = getIntent();
@@ -119,6 +121,7 @@
             }
             boolean connected = intent.getBooleanExtra(UsbManager.USB_CONNECTED, false);
             if (!connected) {
+                Log.d(TAG, "USB disconnected, notifying service");
                 notifyService(false);
                 mActivity.finish();
             }
@@ -126,29 +129,20 @@
     }
 
     @Override
-    public void onStart() {
-        super.onStart();
-        if (mDisconnectedReceiver != null) {
-            IntentFilter filter = new IntentFilter(UsbManager.ACTION_USB_STATE);
-            mBroadcastDispatcher.registerReceiver(mDisconnectedReceiver, filter);
-        }
-    }
-
-    @Override
-    protected void onStop() {
+    protected void onDestroy() {
         if (mDisconnectedReceiver != null) {
             mBroadcastDispatcher.unregisterReceiver(mDisconnectedReceiver);
         }
-        super.onStop();
-    }
-
-    @Override
-    protected void onDestroy() {
-        // If the ADB service has not yet been notified due to this dialog being closed in some
-        // other way then notify the service to deny the connection to ensure system_server sends
-        // a response to adbd.
-        if (!mServiceNotified) {
-            notifyService(false);
+        // Only notify the service if the activity is finishing; if onDestroy has been called due to
+        // a configuration change then allow the user to still authorize the connection the next
+        // time the activity is in the foreground.
+        if (isFinishing()) {
+            // If the ADB service has not yet been notified due to this dialog being closed in some
+            // other way then notify the service to deny the connection to ensure system_server
+            // sends a response to adbd.
+            if (!mServiceNotified) {
+                notifyService(false);
+            }
         }
         super.onDestroy();
     }
diff --git a/packages/SystemUI/src/com/android/systemui/util/leak/LeakReporter.java b/packages/SystemUI/src/com/android/systemui/util/leak/LeakReporter.java
index b25df5f..5e72808 100644
--- a/packages/SystemUI/src/com/android/systemui/util/leak/LeakReporter.java
+++ b/packages/SystemUI/src/com/android/systemui/util/leak/LeakReporter.java
@@ -104,9 +104,13 @@
                     .setContentText(String.format(
                             "SystemUI has detected %d leaked objects. Tap to send", garbageCount))
                     .setSmallIcon(com.android.internal.R.drawable.stat_sys_adb)
-                    .setContentIntent(PendingIntent.getActivityAsUser(mContext, 0,
+                    .setContentIntent(PendingIntent.getActivityAsUser(
+                            mContext,
+                            0,
                             getIntent(hprofFile, dumpFile),
-                            PendingIntent.FLAG_UPDATE_CURRENT, null, UserHandle.CURRENT));
+                            PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE,
+                            null,
+                            UserHandle.CURRENT));
             notiMan.notify(TAG, 0, builder.build());
         } catch (IOException e) {
             Log.e(TAG, "Couldn't dump heap for leak", e);
diff --git a/packages/SystemUI/src/com/android/systemui/util/sensors/PrimaryProxSensor.java b/packages/SystemUI/src/com/android/systemui/util/sensors/PrimaryProxSensor.java
new file mode 100644
index 0000000..96c76c1
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/util/sensors/PrimaryProxSensor.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.util.sensors;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+
+import javax.inject.Qualifier;
+
+@Qualifier
+@Documented
+@Retention(RUNTIME)
+@interface PrimaryProxSensor {
+}
diff --git a/packages/SystemUI/src/com/android/systemui/util/sensors/ProximitySensor.java b/packages/SystemUI/src/com/android/systemui/util/sensors/ProximitySensor.java
index 52d4647..06806d0 100644
--- a/packages/SystemUI/src/com/android/systemui/util/sensors/ProximitySensor.java
+++ b/packages/SystemUI/src/com/android/systemui/util/sensors/ProximitySensor.java
@@ -16,94 +16,128 @@
 
 package com.android.systemui.util.sensors;
 
-import android.content.res.Resources;
-import android.hardware.Sensor;
-import android.hardware.SensorEvent;
-import android.hardware.SensorEventListener;
 import android.hardware.SensorManager;
 import android.util.Log;
 
 import com.android.internal.annotations.VisibleForTesting;
-import com.android.systemui.R;
 import com.android.systemui.dagger.qualifiers.Main;
+import com.android.systemui.util.Assert;
 import com.android.systemui.util.concurrency.DelayableExecutor;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Locale;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.function.Consumer;
 
 import javax.inject.Inject;
 
 /**
- * Simple wrapper around SensorManager customized for the Proximity sensor.
+ * Wrapper around SensorManager customized for the Proximity sensor.
+ *
+ * The ProximitySensor supports the concept of a primary and a
+ * secondary hardware sensor. The primary sensor is used for a first
+ * pass check if the phone covered. When triggered, it then checks
+ * the secondary sensor for confirmation (if there is one). It does
+ * not send a proximity event until the secondary sensor confirms (or
+ * rejects) the reading. The secondary sensor is, in fact, the source
+ * of truth.
+ *
+ * This is necessary as sometimes keeping the secondary sensor on for
+ * extends periods is undesirable. It may, however, result in increased
+ * latency for proximity readings.
+ *
+ * Phones should configure this via a config.xml overlay. If no
+ * proximity sensor is set (primary or secondary) we fall back to the
+ * default Sensor.TYPE_PROXIMITY. If proximity_sensor_type is set in
+ * config.xml, that will be used as the primary sensor. If
+ * proximity_sensor_secondary_type is set, that will function as the
+ * secondary sensor. If no secondary is set, only the primary will be
+ * used.
  */
-public class ProximitySensor {
+public class ProximitySensor implements ThresholdSensor {
     private static final String TAG = "ProxSensor";
     private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
+    private static final long SECONDARY_PING_INTERVAL_MS = 5000;
 
-    private final Sensor mSensor;
-    private final AsyncSensorManager mSensorManager;
-    private final float mThreshold;
-    private List<ProximitySensorListener> mListeners = new ArrayList<>();
+    private final ThresholdSensor mPrimaryThresholdSensor;
+    private final ThresholdSensor mSecondaryThresholdSensor;
+    private final DelayableExecutor mDelayableExecutor;
+    private final List<ThresholdSensor.Listener> mListeners = new ArrayList<>();
     private String mTag = null;
-    @VisibleForTesting ProximityEvent mLastEvent;
-    private int mSensorDelay = SensorManager.SENSOR_DELAY_NORMAL;
     @VisibleForTesting protected boolean mPaused;
+    private ThresholdSensorEvent mLastPrimaryEvent;
+    @VisibleForTesting
+    ThresholdSensorEvent mLastEvent;
     private boolean mRegistered;
     private final AtomicBoolean mAlerting = new AtomicBoolean();
+    private Runnable mCancelSecondaryRunnable;
+    private boolean mInitializedListeners = false;
+    private boolean mSecondarySafe = false;
 
-    private SensorEventListener mSensorEventListener = new SensorEventListener() {
+    private ThresholdSensor.Listener mPrimaryEventListener = new ThresholdSensor.Listener() {
         @Override
-        public synchronized void onSensorChanged(SensorEvent event) {
-            onSensorEvent(event);
+        public void onThresholdCrossed(ThresholdSensorEvent event) {
+            onPrimarySensorEvent(event);
         }
+    };
 
+    private ThresholdSensor.Listener mSecondaryEventListener = new ThresholdSensor.Listener() {
         @Override
-        public void onAccuracyChanged(Sensor sensor, int accuracy) {
+        public void onThresholdCrossed(ThresholdSensorEvent event) {
+            // If we no longer have a "below" signal and the secondary sensor is not
+            // considered "safe", then we need to turn it off.
+            if (!mSecondarySafe
+                    && (mLastPrimaryEvent == null
+                    || !mLastPrimaryEvent.getBelow()
+                    || !event.getBelow())) {
+                mSecondaryThresholdSensor.pause();
+                if (mLastPrimaryEvent == null || !mLastPrimaryEvent.getBelow()) {
+                    // Only check the secondary as long as the primary thinks we're near.
+                    mCancelSecondaryRunnable = null;
+                    return;
+                } else {
+                    // Check this sensor again in a moment.
+                    mCancelSecondaryRunnable = mDelayableExecutor.executeDelayed(
+                            mSecondaryThresholdSensor::resume, SECONDARY_PING_INTERVAL_MS);
+                }
+            }
+            logDebug("Secondary sensor event: " + event.getBelow() + ".");
+
+            if (!mPaused) {
+                onSensorEvent(event);
+            }
         }
     };
 
     @Inject
-    public ProximitySensor(@Main Resources resources,
-            AsyncSensorManager sensorManager) {
-        mSensorManager = sensorManager;
-
-        Sensor sensor = findCustomProxSensor(resources);
-        float threshold = 0;
-        if (sensor != null) {
-            try {
-                threshold = getCustomProxThreshold(resources);
-            } catch (IllegalStateException e) {
-                Log.e(TAG, "Can not load custom proximity sensor.", e);
-                sensor = null;
-            }
-        }
-        if (sensor == null) {
-            sensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
-            if (sensor != null) {
-                threshold = sensor.getMaximumRange();
-            }
-        }
-
-        mThreshold = threshold;
-
-        mSensor = sensor;
+    public ProximitySensor(@PrimaryProxSensor ThresholdSensor primary,
+            @SecondaryProxSensor ThresholdSensor  secondary,
+            @Main DelayableExecutor delayableExecutor) {
+        mPrimaryThresholdSensor = primary;
+        mSecondaryThresholdSensor = secondary;
+        mDelayableExecutor = delayableExecutor;
     }
 
+    @Override
     public void setTag(String tag) {
         mTag = tag;
+        mPrimaryThresholdSensor.setTag(tag + ":primary");
+        mSecondaryThresholdSensor.setTag(tag + ":secondary");
     }
 
-    public void setSensorDelay(int sensorDelay) {
-        mSensorDelay = sensorDelay;
+    @Override
+    public void setDelay(int delay) {
+        Assert.isMainThread();
+        mPrimaryThresholdSensor.setDelay(delay);
+        mSecondaryThresholdSensor.setDelay(delay);
     }
 
     /**
      * Unregister with the {@link SensorManager} without unsetting listeners on this object.
      */
+    @Override
     public void pause() {
+        Assert.isMainThread();
         mPaused = true;
         unregisterInternal();
     }
@@ -111,39 +145,20 @@
     /**
      * Register with the {@link SensorManager}. No-op if no listeners are registered on this object.
      */
+    @Override
     public void resume() {
+        Assert.isMainThread();
         mPaused = false;
         registerInternal();
     }
-    /**
-     * Returns a brightness sensor that can be used for proximity purposes.
-     */
-    private Sensor findCustomProxSensor(Resources resources) {
-        String sensorType = resources.getString(R.string.proximity_sensor_type);
-        if (sensorType.isEmpty()) {
-            return null;
-        }
-
-        List<Sensor> sensorList = mSensorManager.getSensorList(Sensor.TYPE_ALL);
-        Sensor sensor = null;
-        for (Sensor s : sensorList) {
-            if (sensorType.equals(s.getStringType())) {
-                sensor = s;
-                break;
-            }
-        }
-
-        return sensor;
-    }
 
     /**
-     * Returns a threshold value that can be used along with {@link #findCustomProxSensor}
+     * Sets that it is safe to leave the secondary sensor on indefinitely.
      */
-    private float getCustomProxThreshold(Resources resources) {
-        try {
-            return resources.getFloat(R.dimen.proximity_sensor_threshold);
-        } catch (Resources.NotFoundException e) {
-            throw new IllegalStateException("R.dimen.proximity_sensor_threshold must be set.");
+    public void setSecondarySafe(boolean safe) {
+        mSecondarySafe = safe;
+        if (!mSecondarySafe) {
+            mSecondaryThresholdSensor.pause();
         }
     }
 
@@ -157,38 +172,46 @@
     /**
      * Returns {@code false} if a Proximity sensor is not available.
      */
-    public boolean getSensorAvailable() {
-        return mSensor != null;
+    @Override
+    public boolean isLoaded() {
+        return mPrimaryThresholdSensor.isLoaded();
     }
 
     /**
      * Add a listener.
      *
      * Registers itself with the {@link SensorManager} if this is the first listener
-     * added. If a cool down is currently running, the sensor will be registered when it is over.
+     * added. If the ProximitySensor is paused, it will be registered when resumed.
      */
-    public boolean register(ProximitySensorListener listener) {
-        if (!getSensorAvailable()) {
-            return false;
+    @Override
+    public void register(ThresholdSensor.Listener listener) {
+        Assert.isMainThread();
+        if (!isLoaded()) {
+            return;
         }
 
         if (mListeners.contains(listener)) {
-            Log.d(TAG, "ProxListener registered multiple times: " + listener);
+            logDebug("ProxListener registered multiple times: " + listener);
         } else {
             mListeners.add(listener);
         }
         registerInternal();
-
-        return true;
     }
 
     protected void registerInternal() {
+        Assert.isMainThread();
         if (mRegistered || mPaused || mListeners.isEmpty()) {
             return;
         }
+        if (!mInitializedListeners) {
+            mPrimaryThresholdSensor.register(mPrimaryEventListener);
+            mSecondaryThresholdSensor.pause();
+            mSecondaryThresholdSensor.register(mSecondaryEventListener);
+            mInitializedListeners = true;
+        }
         logDebug("Registering sensor listener");
+        mPrimaryThresholdSensor.resume();
         mRegistered = true;
-        mSensorManager.registerListener(mSensorEventListener, mSensor, mSensorDelay);
     }
 
     /**
@@ -197,7 +220,9 @@
      * If all listeners are removed from an instance of this class,
      * it will unregister itself with the SensorManager.
      */
-    public void unregister(ProximitySensorListener listener) {
+    @Override
+    public void unregister(ThresholdSensor.Listener listener) {
+        Assert.isMainThread();
         mListeners.remove(listener);
         if (mListeners.size() == 0) {
             unregisterInternal();
@@ -205,40 +230,85 @@
     }
 
     protected void unregisterInternal() {
+        Assert.isMainThread();
         if (!mRegistered) {
             return;
         }
         logDebug("unregistering sensor listener");
-        mSensorManager.unregisterListener(mSensorEventListener);
+        mPrimaryThresholdSensor.pause();
+        mSecondaryThresholdSensor.pause();
+        if (mCancelSecondaryRunnable != null) {
+            mCancelSecondaryRunnable.run();
+            mCancelSecondaryRunnable = null;
+        }
+        mLastPrimaryEvent = null;  // Forget what we know.
+        mLastEvent = null;
         mRegistered = false;
     }
 
     public Boolean isNear() {
-        return getSensorAvailable() && mLastEvent != null ? mLastEvent.getNear() : null;
+        return isLoaded() && mLastEvent != null ? mLastEvent.getBelow() : null;
     }
 
     /** Update all listeners with the last value this class received from the sensor. */
     public void alertListeners() {
+        Assert.isMainThread();
         if (mAlerting.getAndSet(true)) {
             return;
         }
+        if (mLastEvent != null) {
+            ThresholdSensorEvent lastEvent = mLastEvent;  // Listeners can null out mLastEvent.
+            List<ThresholdSensor.Listener> listeners = new ArrayList<>(mListeners);
+            listeners.forEach(proximitySensorListener ->
+                    proximitySensorListener.onThresholdCrossed(lastEvent));
+        }
 
-        List<ProximitySensorListener> listeners = new ArrayList<>(mListeners);
-        listeners.forEach(proximitySensorListener ->
-                proximitySensorListener.onSensorEvent(mLastEvent));
         mAlerting.set(false);
     }
 
-    private void onSensorEvent(SensorEvent event) {
-        boolean near = event.values[0] < mThreshold;
-        mLastEvent = new ProximityEvent(near, event.timestamp);
+    private void onPrimarySensorEvent(ThresholdSensorEvent event) {
+        Assert.isMainThread();
+        if (mLastPrimaryEvent != null && event.getBelow() == mLastPrimaryEvent.getBelow()) {
+            return;
+        }
+
+        mLastPrimaryEvent = event;
+
+        if (event.getBelow() && mSecondaryThresholdSensor.isLoaded()) {
+            logDebug("Primary sensor is near. Checking secondary.");
+            if (mCancelSecondaryRunnable == null) {
+                mSecondaryThresholdSensor.resume();
+            }
+        } else {
+            if (!mSecondaryThresholdSensor.isLoaded()) {
+                logDebug("Primary sensor event: " + event.getBelow() + ". No secondary.");
+            } else {
+                logDebug("Primary sensor event: " + event.getBelow() + ".");
+            }
+            onSensorEvent(event);
+        }
+    }
+
+    private void onSensorEvent(ThresholdSensorEvent event) {
+        Assert.isMainThread();
+        if (mLastEvent != null && event.getBelow() == mLastEvent.getBelow()) {
+            return;
+        }
+
+        if (!mSecondarySafe && !event.getBelow()) {
+            mSecondaryThresholdSensor.pause();
+        }
+
+        mLastEvent = event;
         alertListeners();
     }
 
     @Override
     public String toString() {
-        return String.format("{registered=%s, paused=%s, near=%s, sensor=%s}",
-                isRegistered(), mPaused, isNear(), mSensor);
+        return String.format("{registered=%s, paused=%s, near=%s, primarySensor=%s, "
+                + "secondarySensor=%s}",
+                isRegistered(), mPaused, isNear(), mPrimaryThresholdSensor,
+                mSecondaryThresholdSensor);
     }
 
     /**
@@ -249,7 +319,7 @@
         private final ProximitySensor mSensor;
         private final DelayableExecutor mDelayableExecutor;
         private List<Consumer<Boolean>> mCallbacks = new ArrayList<>();
-        private final ProximitySensor.ProximitySensorListener mListener;
+        private final ThresholdSensor.Listener mListener;
         private final AtomicBoolean mRegistered = new AtomicBoolean();
 
         @Inject
@@ -268,14 +338,14 @@
         @Override
         public void run() {
             unregister();
-            mSensor.alertListeners();
+            onProximityEvent(null);
         }
 
         /**
          * Query the proximity sensor, timing out if no result.
          */
         public void check(long timeoutMs, Consumer<Boolean> callback) {
-            if (!mSensor.getSensorAvailable()) {
+            if (!mSensor.isLoaded()) {
                 callback.accept(null);
             }
             mCallbacks.add(callback);
@@ -290,54 +360,17 @@
             mRegistered.set(false);
         }
 
-        private void onProximityEvent(ProximityEvent proximityEvent) {
+        private void onProximityEvent(ThresholdSensorEvent proximityEvent) {
             mCallbacks.forEach(
                     booleanConsumer ->
                             booleanConsumer.accept(
-                                    proximityEvent == null ? null : proximityEvent.getNear()));
+                                    proximityEvent == null ? null : proximityEvent.getBelow()));
             mCallbacks.clear();
             unregister();
             mRegistered.set(false);
         }
     }
 
-    /** Implement to be notified of ProximityEvents. */
-    public interface ProximitySensorListener {
-        /** Called when the ProximitySensor changes. */
-        void onSensorEvent(ProximityEvent proximityEvent);
-    }
-
-    /**
-     * Returned when the near/far state of a {@link ProximitySensor} changes.
-     */
-    public static class ProximityEvent {
-        private final boolean mNear;
-        private final long mTimestampNs;
-
-        public ProximityEvent(boolean near, long timestampNs) {
-            mNear = near;
-            mTimestampNs = timestampNs;
-        }
-
-        public boolean getNear() {
-            return mNear;
-        }
-
-        public long getTimestampNs() {
-            return mTimestampNs;
-        }
-
-        public long getTimestampMs() {
-            return mTimestampNs / 1000000;
-        }
-
-        @Override
-        public String toString() {
-            return String.format((Locale) null, "{near=%s, timestamp_ns=%d}", mNear, mTimestampNs);
-        }
-
-    }
-
     private void logDebug(String msg) {
         if (DEBUG) {
             Log.d(TAG, (mTag != null ? "[" + mTag + "] " : "") + msg);
diff --git a/packages/SystemUI/src/com/android/systemui/util/sensors/SecondaryProxSensor.java b/packages/SystemUI/src/com/android/systemui/util/sensors/SecondaryProxSensor.java
new file mode 100644
index 0000000..89fc0ea
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/util/sensors/SecondaryProxSensor.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.util.sensors;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+
+import javax.inject.Qualifier;
+
+@Qualifier
+@Documented
+@Retention(RUNTIME)
+@interface SecondaryProxSensor {
+}
diff --git a/packages/SystemUI/src/com/android/systemui/util/sensors/SensorModule.java b/packages/SystemUI/src/com/android/systemui/util/sensors/SensorModule.java
new file mode 100644
index 0000000..7f37562
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/util/sensors/SensorModule.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.util.sensors;
+
+import android.hardware.Sensor;
+import android.hardware.SensorManager;
+
+import com.android.systemui.R;
+
+import dagger.Module;
+import dagger.Provides;
+
+/**
+ * Dagger module for Sensor related classes.
+ */
+@Module
+public class SensorModule {
+    @Provides
+    @PrimaryProxSensor
+    static ThresholdSensor providePrimaryProxSensor(SensorManager sensorManager,
+            ThresholdSensorImpl.Builder thresholdSensorBuilder) {
+        try {
+            return thresholdSensorBuilder
+                    .setSensorDelay(SensorManager.SENSOR_DELAY_NORMAL)
+                    .setSensorResourceId(R.string.proximity_sensor_type)
+                    .setThresholdResourceId(R.dimen.proximity_sensor_threshold)
+                    .setThresholdLatchResourceId(R.dimen.proximity_sensor_threshold_latch)
+                    .build();
+        } catch (IllegalStateException e) {
+            Sensor defaultSensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
+            return thresholdSensorBuilder
+                    .setSensor(defaultSensor)
+                    .setThresholdValue(defaultSensor != null ? defaultSensor.getMaximumRange() : 0)
+                    .build();
+        }
+    }
+
+    @Provides
+    @SecondaryProxSensor
+    static ThresholdSensor provideSecondaryProxSensor(
+            ThresholdSensorImpl.Builder thresholdSensorBuilder) {
+        try {
+            return thresholdSensorBuilder
+                    .setSensorResourceId(R.string.proximity_sensor_secondary_type)
+                    .setThresholdResourceId(R.dimen.proximity_sensor_secondary_threshold)
+                    .setThresholdLatchResourceId(R.dimen.proximity_sensor_secondary_threshold_latch)
+                    .build();
+        } catch (IllegalStateException e) {
+            return thresholdSensorBuilder.setSensor(null).setThresholdValue(0).build();
+        }
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/util/sensors/ThresholdSensor.java b/packages/SystemUI/src/com/android/systemui/util/sensors/ThresholdSensor.java
new file mode 100644
index 0000000..363a734
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/util/sensors/ThresholdSensor.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.util.sensors;
+
+import java.util.Locale;
+
+/**
+ * A wrapper class for sensors that have a boolean state - above/below.
+ */
+public interface ThresholdSensor {
+    /**
+     * Optional label to use for logging.
+     *
+     * This should be set to something meaningful by owner of the instance.
+     */
+    void setTag(String tag);
+
+    /**
+     * Change the delay used when registering the sensor.
+     *
+     * If the sensor is already registered, this should cause it to re-register with the new
+     * delay.
+     */
+    void setDelay(int delay);
+
+    /**
+     * True if this sensor successfully loads and can be listened to.
+     */
+    boolean isLoaded();
+
+    /**
+     * Registers with the sensor and calls the supplied callback on value change.
+     *
+     * If this instance is paused, the listener will be recorded, but no registration with
+     * the underlying physical sensor will occur until {@link #resume()} is called.
+     *
+     * @see #unregister(Listener)
+     */
+    void register(Listener listener);
+
+    /**
+     * Unregisters from the physical sensor without removing any supplied listeners.
+     *
+     * No events will be sent to listeners as long as this sensor is paused.
+     *
+     * @see #resume()
+     * @see #unregister(Listener)
+     */
+    void pause();
+
+    /**
+     * Resumes listening to the physical sensor after previously pausing.
+     *
+     * @see #pause()
+     */
+    void resume();
+
+    /**
+     * Unregister a listener with the sensor.
+     *
+     * @see #register(Listener)
+     */
+    void unregister(Listener listener);
+
+    /**
+     * Interface for listening to events on {@link ThresholdSensor}
+     */
+    interface Listener {
+        /**
+         * Called whenever the threshold for the registered sensor is crossed.
+         */
+        void onThresholdCrossed(ThresholdSensorEvent event);
+    }
+
+    /**
+     * Returned when the below/above state of a {@link ThresholdSensor} changes.
+     */
+    class ThresholdSensorEvent {
+        private final boolean mBelow;
+        private final long mTimestampNs;
+
+        public ThresholdSensorEvent(boolean below, long timestampNs) {
+            mBelow = below;
+            mTimestampNs = timestampNs;
+        }
+
+        public boolean getBelow() {
+            return mBelow;
+        }
+
+        public long getTimestampNs() {
+            return mTimestampNs;
+        }
+
+        public long getTimestampMs() {
+            return mTimestampNs / 1000000;
+        }
+
+        @Override
+        public String toString() {
+            return String.format((Locale) null, "{near=%s, timestamp_ns=%d}", mBelow, mTimestampNs);
+        }
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/util/sensors/ThresholdSensorImpl.java b/packages/SystemUI/src/com/android/systemui/util/sensors/ThresholdSensorImpl.java
new file mode 100644
index 0000000..aa50292
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/util/sensors/ThresholdSensorImpl.java
@@ -0,0 +1,325 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.util.sensors;
+
+import android.content.res.Resources;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
+import android.util.Log;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.systemui.dagger.qualifiers.Main;
+import com.android.systemui.util.Assert;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.inject.Inject;
+
+class ThresholdSensorImpl implements ThresholdSensor {
+    private static final String TAG = "ThresholdSensor";
+    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
+
+    private final AsyncSensorManager mSensorManager;
+    private final Sensor mSensor;
+    private final float mThreshold;
+    private boolean mRegistered;
+    private boolean mPaused;
+    private List<Listener> mListeners = new ArrayList<>();
+    private Boolean mLastBelow;
+    private String mTag;
+    private final float mThresholdLatch;
+    private int mSensorDelay;
+
+    private SensorEventListener mSensorEventListener = new SensorEventListener() {
+        @Override
+        public void onSensorChanged(SensorEvent event) {
+            boolean below = event.values[0] < mThreshold;
+            boolean above = event.values[0] >= mThresholdLatch;
+            logDebug("Sensor value: " + event.values[0]);
+            onSensorEvent(below, above, event.timestamp);
+        }
+
+        @Override
+        public void onAccuracyChanged(Sensor sensor, int accuracy) {
+        }
+    };
+
+    private ThresholdSensorImpl(AsyncSensorManager sensorManager,
+            Sensor sensor, float threshold, float thresholdLatch, int sensorDelay) {
+        mSensorManager = sensorManager;
+        mSensor = sensor;
+        mThreshold = threshold;
+        mThresholdLatch = thresholdLatch;
+        mSensorDelay = sensorDelay;
+    }
+
+    @Override
+    public void setTag(String tag) {
+        mTag = tag;
+    }
+
+    @Override
+    public void setDelay(int delay) {
+        if (delay == mSensorDelay) {
+            return;
+        }
+
+        mSensorDelay = delay;
+        if (isLoaded()) {
+            unregisterInternal();
+            registerInternal();
+        }
+    }
+
+    @Override
+    public boolean isLoaded() {
+        return mSensor != null;
+    }
+
+    @VisibleForTesting
+    boolean isRegistered() {
+        return mRegistered;
+    }
+
+    /**
+     * Registers the listener with the sensor.
+     *
+     * Multiple listeners are not supported at this time.
+     *
+     * Returns true if the listener was successfully registered. False otherwise.
+     */
+    @Override
+    public void register(Listener listener) {
+        Assert.isMainThread();
+        if (!mListeners.contains(listener)) {
+            mListeners.add(listener);
+        }
+        registerInternal();
+    }
+
+    @Override
+    public void unregister(Listener listener) {
+        Assert.isMainThread();
+        mListeners.remove(listener);
+        unregisterInternal();
+    }
+
+    /**
+     * Unregister with the {@link SensorManager} without unsetting listeners on this object.
+     */
+    @Override
+    public void pause() {
+        Assert.isMainThread();
+        mPaused = true;
+        unregisterInternal();
+    }
+
+    /**
+     * Register with the {@link SensorManager}. No-op if no listeners are registered on this object.
+     */
+    @Override
+    public void resume() {
+        Assert.isMainThread();
+        mPaused = false;
+        registerInternal();
+    }
+
+    private void alertListenersInternal(boolean below, long timestampNs) {
+        List<Listener> listeners = new ArrayList<>(mListeners);
+        listeners.forEach(listener ->
+                listener.onThresholdCrossed(new ThresholdSensorEvent(below, timestampNs)));
+    }
+
+    private void registerInternal() {
+        Assert.isMainThread();
+        if (mRegistered || mPaused || mListeners.isEmpty()) {
+            return;
+        }
+        logDebug("Registering sensor listener");
+        mSensorManager.registerListener(mSensorEventListener, mSensor, mSensorDelay);
+        mRegistered = true;
+    }
+
+    private void unregisterInternal() {
+        Assert.isMainThread();
+        if (!mRegistered) {
+            return;
+        }
+        logDebug("Unregister sensor listener");
+        mSensorManager.unregisterListener(mSensorEventListener);
+        mRegistered = false;
+        mLastBelow = null;  // Forget what we know.
+    }
+
+    /**
+     * Call when the sensor reports a new value.
+     *
+     * Separate below-threshold and above-thresholds are specified. this allows latching behavior,
+     * where a different threshold can be specified for triggering the sensor depending on if it's
+     * going from above to below or below to above. To outside listeners of this class, the class
+     * still appears entirely binary.
+     */
+    private void onSensorEvent(boolean belowThreshold, boolean aboveThreshold, long timestampNs) {
+        Assert.isMainThread();
+        if (!mRegistered) {
+            return;
+        }
+        if (mLastBelow != null) {
+            // If we last reported below and are not yet above, change nothing.
+            if (mLastBelow && !aboveThreshold) {
+                return;
+            }
+            // If we last reported above and are not yet below, change nothing.
+            if (!mLastBelow && !belowThreshold) {
+                return;
+            }
+        }
+        mLastBelow = belowThreshold;
+        logDebug("Alerting below: " + belowThreshold);
+        alertListenersInternal(belowThreshold, timestampNs);
+    }
+
+
+    @Override
+    public String toString() {
+        return String.format("{registered=%s, paused=%s, threshold=%s, sensor=%s}",
+                isLoaded(), mRegistered, mPaused, mThreshold, mSensor);
+    }
+
+    private void logDebug(String msg) {
+        if (DEBUG) {
+            Log.d(TAG, (mTag != null ? "[" + mTag + "] " : "") + msg);
+        }
+    }
+
+    static class Builder {
+        private final Resources mResources;
+        private final AsyncSensorManager mSensorManager;
+        private int mSensorDelay = SensorManager.SENSOR_DELAY_NORMAL;;
+        private float mThresholdValue;
+        private float mThresholdLatchValue;
+        private Sensor mSensor;
+        private boolean mSensorSet;
+        private boolean mThresholdSet;
+        private boolean mThresholdLatchValueSet;
+
+        @Inject
+        Builder(@Main Resources resources, AsyncSensorManager sensorManager) {
+            mResources = resources;
+            mSensorManager = sensorManager;
+        }
+
+
+        Builder setSensorDelay(int sensorDelay) {
+            mSensorDelay = sensorDelay;
+            return this;
+        }
+
+        Builder setSensorResourceId(int sensorResourceId) {
+            setSensorType(mResources.getString(sensorResourceId));
+            return this;
+        }
+
+        Builder setThresholdResourceId(int thresholdResourceId) {
+            try {
+                setThresholdValue(mResources.getFloat(thresholdResourceId));
+            } catch (Resources.NotFoundException e) {
+                // no-op
+            }
+            return this;
+        }
+
+        Builder setThresholdLatchResourceId(int thresholdLatchResourceId) {
+            try {
+                setThresholdLatchValue(mResources.getFloat(thresholdLatchResourceId));
+            } catch (Resources.NotFoundException e) {
+                // no-op
+            }
+            return this;
+        }
+
+        Builder setSensorType(String sensorType) {
+            Sensor sensor = findSensorByType(sensorType);
+            if (sensor != null) {
+                setSensor(sensor);
+            }
+            return this;
+        }
+
+        Builder setThresholdValue(float thresholdValue) {
+            mThresholdValue = thresholdValue;
+            mThresholdSet = true;
+            if (!mThresholdLatchValueSet) {
+                mThresholdLatchValue = mThresholdValue;
+            }
+            return this;
+        }
+
+        Builder setThresholdLatchValue(float thresholdLatchValue) {
+            mThresholdLatchValue = thresholdLatchValue;
+            mThresholdLatchValueSet = true;
+            return this;
+        }
+
+        Builder setSensor(Sensor sensor) {
+            mSensor = sensor;
+            mSensorSet = true;
+            return this;
+        }
+
+        /**
+         * Creates a {@link ThresholdSensor} backed by a {@link ThresholdSensorImpl}.
+         */
+        public ThresholdSensor build() {
+            if (!mSensorSet) {
+                throw new IllegalStateException("A sensor was not successfully set.");
+            }
+
+            if (!mThresholdSet) {
+                throw new IllegalStateException("A threshold was not successfully set.");
+            }
+
+            if (mThresholdValue > mThresholdLatchValue) {
+                throw new IllegalStateException(
+                        "Threshold must be less than or equal to Threshold Latch");
+            }
+
+            return new ThresholdSensorImpl(
+                    mSensorManager, mSensor, mThresholdValue, mThresholdLatchValue, mSensorDelay);
+        }
+
+        private Sensor findSensorByType(String sensorType) {
+            if (sensorType.isEmpty()) {
+                return null;
+            }
+
+            List<Sensor> sensorList = mSensorManager.getSensorList(Sensor.TYPE_ALL);
+            Sensor sensor = null;
+            for (Sensor s : sensorList) {
+                if (sensorType.equals(s.getStringType())) {
+                    sensor = s;
+                    break;
+                }
+            }
+
+            return sensor;
+        }
+    }
+}
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/clock/ClockManagerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/clock/ClockManagerTest.java
index 353fe62..35fe1ba 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/clock/ClockManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/clock/ClockManagerTest.java
@@ -168,7 +168,7 @@
         verify(mMockListener2).onClockChanged(captor2.capture());
         assertThat(captor1.getValue()).isInstanceOf(BUBBLE_CLOCK_CLASS);
         assertThat(captor2.getValue()).isInstanceOf(BUBBLE_CLOCK_CLASS);
-        assertThat(captor1.getValue()).isNotSameAs(captor2.getValue());
+        assertThat(captor1.getValue()).isNotSameInstanceAs(captor2.getValue());
     }
 
     @Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java b/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java
index b9ddff3..d107f64 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java
@@ -44,6 +44,7 @@
 
 import android.content.res.Configuration;
 import android.graphics.Insets;
+import android.graphics.Point;
 import android.graphics.Rect;
 import android.graphics.drawable.VectorDrawable;
 import android.hardware.display.DisplayManager;
@@ -193,6 +194,7 @@
     @Test
     public void testRoundingRadius_NoCutout() {
         final int testRadius = 1;
+        final Point testRadiusPoint = new Point(1, 1);
         mContext.getOrCreateTestableResources().addOverride(
                 com.android.internal.R.bool.config_fillMainBuiltInDisplayCutout, false);
         mContext.getOrCreateTestableResources().addOverride(
@@ -209,9 +211,9 @@
 
         mScreenDecorations.start();
         // Size of corner view should same as rounded_corner_radius{_top|_bottom}
-        assertThat(mScreenDecorations.mRoundedDefault).isEqualTo(testRadius);
-        assertThat(mScreenDecorations.mRoundedDefaultTop).isEqualTo(testRadius);
-        assertThat(mScreenDecorations.mRoundedDefaultBottom).isEqualTo(testRadius);
+        assertThat(mScreenDecorations.mRoundedDefault).isEqualTo(testRadiusPoint);
+        assertThat(mScreenDecorations.mRoundedDefaultTop).isEqualTo(testRadiusPoint);
+        assertThat(mScreenDecorations.mRoundedDefaultBottom).isEqualTo(testRadiusPoint);
     }
 
     @Test
@@ -237,14 +239,18 @@
                 mScreenDecorations.mOverlays[BOUNDS_POSITION_TOP].findViewById(R.id.left);
         View rightRoundedCorner =
                 mScreenDecorations.mOverlays[BOUNDS_POSITION_TOP].findViewById(R.id.right);
-        verify(mScreenDecorations, atLeastOnce()).setSize(leftRoundedCorner, testTopRadius);
-        verify(mScreenDecorations, atLeastOnce()).setSize(rightRoundedCorner, testTopRadius);
+        verify(mScreenDecorations, atLeastOnce())
+                .setSize(leftRoundedCorner, new Point(testTopRadius, testTopRadius));
+        verify(mScreenDecorations, atLeastOnce())
+                .setSize(rightRoundedCorner, new Point(testTopRadius, testTopRadius));
         leftRoundedCorner =
                 mScreenDecorations.mOverlays[BOUNDS_POSITION_BOTTOM].findViewById(R.id.left);
         rightRoundedCorner =
                 mScreenDecorations.mOverlays[BOUNDS_POSITION_BOTTOM].findViewById(R.id.right);
-        verify(mScreenDecorations, atLeastOnce()).setSize(leftRoundedCorner, testBottomRadius);
-        verify(mScreenDecorations, atLeastOnce()).setSize(rightRoundedCorner, testBottomRadius);
+        verify(mScreenDecorations, atLeastOnce())
+                .setSize(leftRoundedCorner, new Point(testBottomRadius, testBottomRadius));
+        verify(mScreenDecorations, atLeastOnce())
+                .setSize(rightRoundedCorner, new Point(testBottomRadius, testBottomRadius));
     }
 
     @Test
@@ -276,20 +282,24 @@
                 mScreenDecorations.mOverlays[BOUNDS_POSITION_LEFT].findViewById(R.id.left);
         View rightRoundedCorner =
                 mScreenDecorations.mOverlays[BOUNDS_POSITION_LEFT].findViewById(R.id.right);
-        verify(mScreenDecorations, atLeastOnce()).setSize(leftRoundedCorner, testTopRadius);
-        verify(mScreenDecorations, atLeastOnce()).setSize(rightRoundedCorner, testBottomRadius);
+        verify(mScreenDecorations, atLeastOnce())
+                .setSize(leftRoundedCorner, new Point(testTopRadius, testTopRadius));
+        verify(mScreenDecorations, atLeastOnce())
+                .setSize(rightRoundedCorner, new Point(testBottomRadius, testBottomRadius));
         leftRoundedCorner =
                 mScreenDecorations.mOverlays[BOUNDS_POSITION_RIGHT].findViewById(R.id.left);
         rightRoundedCorner =
                 mScreenDecorations.mOverlays[BOUNDS_POSITION_RIGHT].findViewById(R.id.right);
-        verify(mScreenDecorations, atLeastOnce()).setSize(leftRoundedCorner, testTopRadius);
-        verify(mScreenDecorations, atLeastOnce()).setSize(rightRoundedCorner, testBottomRadius);
+        verify(mScreenDecorations, atLeastOnce())
+                .setSize(leftRoundedCorner, new Point(testTopRadius, testTopRadius));
+        verify(mScreenDecorations, atLeastOnce())
+                .setSize(rightRoundedCorner, new Point(testBottomRadius, testBottomRadius));
     }
 
     @Test
     public void testRoundingMultipleRadius_NoCutout() {
         final VectorDrawable d = (VectorDrawable) mContext.getDrawable(R.drawable.rounded);
-        final int multipleRadiusSize = Math.max(d.getIntrinsicWidth(), d.getIntrinsicHeight());
+        final Point multipleRadiusSize = new Point(d.getIntrinsicWidth(), d.getIntrinsicHeight());
 
         mContext.getOrCreateTestableResources().addOverride(
                 com.android.internal.R.bool.config_fillMainBuiltInDisplayCutout, false);
@@ -600,14 +610,15 @@
                 .addOverride(R.bool.config_roundedCornerMultipleRadius, false);
 
         mScreenDecorations.start();
-        assertEquals(mScreenDecorations.mRoundedDefault, 20);
+        assertEquals(mScreenDecorations.mRoundedDefault, new Point(20, 20));
 
         mContext.getOrCreateTestableResources().addOverride(
                 com.android.internal.R.dimen.rounded_corner_radius, 5);
         mScreenDecorations.onConfigurationChanged(null);
-        assertEquals(mScreenDecorations.mRoundedDefault, 5);
+        assertEquals(mScreenDecorations.mRoundedDefault, new Point(5, 5));
     }
 
+
     @Test
     public void testBoundingRectsToRegion() throws Exception {
         Rect rect = new Rect(1, 2, 3, 4);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/SysuiTestCase.java b/packages/SystemUI/tests/src/com/android/systemui/SysuiTestCase.java
index dd3a785..b6cc2ee 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/SysuiTestCase.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/SysuiTestCase.java
@@ -140,6 +140,10 @@
         return null;
     }
 
+    protected FakeBroadcastDispatcher getFakeBroadcastDispatcher() {
+        return mFakeBroadcastDispatcher;
+    }
+
     public SysuiTestableContext getContext() {
         return mContext;
     }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleDataTest.java b/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleDataTest.java
index 315caee..12221bc 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleDataTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleDataTest.java
@@ -19,6 +19,7 @@
 import static com.android.systemui.statusbar.NotificationEntryHelper.modifyRanking;
 
 import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
 
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.reset;
@@ -793,47 +794,48 @@
 
     private void assertBubbleAdded(Bubble expected) {
         BubbleData.Update update = mUpdateCaptor.getValue();
-        assertThat(update.addedBubble).named("addedBubble").isEqualTo(expected);
+        assertWithMessage("addedBubble").that(update.addedBubble).isEqualTo(expected);
     }
 
     private void assertBubbleRemoved(Bubble expected, @BubbleController.DismissReason int reason) {
         BubbleData.Update update = mUpdateCaptor.getValue();
-        assertThat(update.removedBubbles).named("removedBubbles")
+        assertWithMessage("removedBubbles").that(update.removedBubbles)
                 .isEqualTo(ImmutableList.of(Pair.create(expected, reason)));
     }
 
     private void assertOrderNotChanged() {
         BubbleData.Update update = mUpdateCaptor.getValue();
-        assertThat(update.orderChanged).named("orderChanged").isFalse();
+        assertWithMessage("orderChanged").that(update.orderChanged).isFalse();
     }
 
     private void assertOrderChangedTo(Bubble... order) {
         BubbleData.Update update = mUpdateCaptor.getValue();
-        assertThat(update.orderChanged).named("orderChanged").isTrue();
-        assertThat(update.bubbles).named("bubble order").isEqualTo(ImmutableList.copyOf(order));
+        assertWithMessage("orderChanged").that(update.orderChanged).isTrue();
+        assertWithMessage("bubble order").that(update.bubbles)
+                .isEqualTo(ImmutableList.copyOf(order));
     }
 
     private void assertSelectionNotChanged() {
         BubbleData.Update update = mUpdateCaptor.getValue();
-        assertThat(update.selectionChanged).named("selectionChanged").isFalse();
+        assertWithMessage("selectionChanged").that(update.selectionChanged).isFalse();
     }
 
     private void assertSelectionChangedTo(Bubble bubble) {
         BubbleData.Update update = mUpdateCaptor.getValue();
-        assertThat(update.selectionChanged).named("selectionChanged").isTrue();
-        assertThat(update.selectedBubble).named("selectedBubble").isEqualTo(bubble);
+        assertWithMessage("selectionChanged").that(update.selectionChanged).isTrue();
+        assertWithMessage("selectedBubble").that(update.selectedBubble).isEqualTo(bubble);
     }
 
     private void assertSelectionCleared() {
         BubbleData.Update update = mUpdateCaptor.getValue();
-        assertThat(update.selectionChanged).named("selectionChanged").isTrue();
-        assertThat(update.selectedBubble).named("selectedBubble").isNull();
+        assertWithMessage("selectionChanged").that(update.selectionChanged).isTrue();
+        assertWithMessage("selectedBubble").that(update.selectedBubble).isNull();
     }
 
     private void assertExpandedChangedTo(boolean expected) {
         BubbleData.Update update = mUpdateCaptor.getValue();
-        assertThat(update.expandedChanged).named("expandedChanged").isTrue();
-        assertThat(update.expanded).named("expanded").isEqualTo(expected);
+        assertWithMessage("expandedChanged").that(update.expandedChanged).isTrue();
+        assertWithMessage("expanded").that(update.expanded).isEqualTo(expected);
     }
 
     private void assertOverflowChangedTo(ImmutableList<Bubble> bubbles) {
@@ -895,4 +897,4 @@
         setCurrentTime(time);
         mBubbleData.setExpanded(shouldBeExpanded);
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerProxyTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerProxyTest.java
index ae73879..c3c9ecc 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerProxyTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerProxyTest.java
@@ -29,8 +29,8 @@
 
 import com.android.internal.logging.testing.UiEventLoggerFake;
 import com.android.keyguard.KeyguardUpdateMonitor;
-import com.android.systemui.SysuiTestCase;
 import com.android.systemui.classifier.brightline.BrightLineFalsingManager;
+import com.android.systemui.classifier.brightline.FalsingDataProvider;
 import com.android.systemui.dock.DockManager;
 import com.android.systemui.dock.DockManagerFake;
 import com.android.systemui.dump.DumpManager;
@@ -42,6 +42,8 @@
 import com.android.systemui.util.concurrency.FakeExecutor;
 import com.android.systemui.util.sensors.ProximitySensor;
 import com.android.systemui.util.time.FakeSystemClock;
+import com.android.systemui.utils.leaks.FakeBatteryController;
+import com.android.systemui.utils.leaks.LeakCheckedTest;
 
 import org.junit.After;
 import org.junit.Before;
@@ -52,7 +54,7 @@
 
 @SmallTest
 @RunWith(AndroidTestingRunner.class)
-public class FalsingManagerProxyTest extends SysuiTestCase {
+public class FalsingManagerProxyTest extends LeakCheckedTest {
     @Mock(stubOnly = true)
     PluginManager mPluginManager;
     @Mock(stubOnly = true)
@@ -62,7 +64,7 @@
     @Mock DumpManager mDumpManager;
     private FalsingManagerProxy mProxy;
     private DeviceConfigProxy mDeviceConfig;
-    private DisplayMetrics mDisplayMetrics = new DisplayMetrics();
+    private FalsingDataProvider mFalsingDataProvider;
     private FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock());
     private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock());
     private DockManager mDockManager = new DockManagerFake();
@@ -75,6 +77,8 @@
         mDeviceConfig = new DeviceConfigProxyFake();
         mDeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
                 BRIGHTLINE_FALSING_MANAGER_ENABLED, "false", false);
+        mFalsingDataProvider = new FalsingDataProvider(
+                new DisplayMetrics(), new FakeBatteryController(getLeakCheck()));
     }
 
     @After
@@ -86,9 +90,9 @@
 
     @Test
     public void test_brightLineFalsingManagerDisabled() {
-        mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mExecutor, mDisplayMetrics,
+        mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mExecutor,
                 mProximitySensor, mDeviceConfig, mDockManager, mKeyguardUpdateMonitor,
-                mDumpManager, mUiBgExecutor, mStatusBarStateController);
+                mDumpManager, mUiBgExecutor, mStatusBarStateController, mFalsingDataProvider);
         assertThat(mProxy.getInternalFalsingManager(), instanceOf(FalsingManagerImpl.class));
     }
 
@@ -97,17 +101,17 @@
         mDeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
                 BRIGHTLINE_FALSING_MANAGER_ENABLED, "true", false);
         mExecutor.runAllReady();
-        mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mExecutor, mDisplayMetrics,
+        mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mExecutor,
                 mProximitySensor, mDeviceConfig, mDockManager, mKeyguardUpdateMonitor,
-                mDumpManager, mUiBgExecutor, mStatusBarStateController);
+                mDumpManager, mUiBgExecutor, mStatusBarStateController, mFalsingDataProvider);
         assertThat(mProxy.getInternalFalsingManager(), instanceOf(BrightLineFalsingManager.class));
     }
 
     @Test
     public void test_brightLineFalsingManagerToggled() throws InterruptedException {
-        mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mExecutor, mDisplayMetrics,
+        mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mExecutor,
                 mProximitySensor, mDeviceConfig, mDockManager, mKeyguardUpdateMonitor,
-                mDumpManager, mUiBgExecutor, mStatusBarStateController);
+                mDumpManager, mUiBgExecutor, mStatusBarStateController, mFalsingDataProvider);
         assertThat(mProxy.getInternalFalsingManager(), instanceOf(FalsingManagerImpl.class));
 
         mDeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/BrightLineFalsingManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/BrightLineFalsingManagerTest.java
index b9cb499..061664b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/BrightLineFalsingManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/BrightLineFalsingManagerTest.java
@@ -17,6 +17,7 @@
 package com.android.systemui.classifier.brightline;
 
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.reset;
 import static org.mockito.Mockito.verify;
 
@@ -27,7 +28,6 @@
 
 import com.android.internal.logging.testing.UiEventLoggerFake;
 import com.android.keyguard.KeyguardUpdateMonitor;
-import com.android.systemui.SysuiTestCase;
 import com.android.systemui.dock.DockManager;
 import com.android.systemui.dock.DockManagerFake;
 import com.android.systemui.statusbar.StatusBarState;
@@ -36,6 +36,9 @@
 import com.android.systemui.util.DeviceConfigProxy;
 import com.android.systemui.util.DeviceConfigProxyFake;
 import com.android.systemui.util.sensors.ProximitySensor;
+import com.android.systemui.util.sensors.ThresholdSensor;
+import com.android.systemui.utils.leaks.FakeBatteryController;
+import com.android.systemui.utils.leaks.LeakCheckedTest;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -46,7 +49,7 @@
 @SmallTest
 @RunWith(AndroidTestingRunner.class)
 @TestableLooper.RunWithLooper
-public class BrightLineFalsingManagerTest extends SysuiTestCase {
+public class BrightLineFalsingManagerTest extends LeakCheckedTest {
 
 
     @Mock
@@ -54,23 +57,26 @@
     @Mock
     private ProximitySensor mProximitySensor;
     private SysuiStatusBarStateController mStatusBarStateController;
+    private FalsingDataProvider mFalsingDataProvider;
+    private FakeBatteryController mFakeBatteryController;
 
     private BrightLineFalsingManager mFalsingManager;
 
     @Before
     public void setup() {
         MockitoAnnotations.initMocks(this);
+        mFakeBatteryController = new FakeBatteryController(getLeakCheck());
         DisplayMetrics dm = new DisplayMetrics();
         dm.xdpi = 100;
         dm.ydpi = 100;
         dm.widthPixels = 100;
         dm.heightPixels = 100;
-        FalsingDataProvider falsingDataProvider = new FalsingDataProvider(dm);
+        mFalsingDataProvider = new FalsingDataProvider(dm, mFakeBatteryController);
         DeviceConfigProxy deviceConfigProxy = new DeviceConfigProxyFake();
         DockManager dockManager = new DockManagerFake();
         mStatusBarStateController = new StatusBarStateControllerImpl(new UiEventLoggerFake());
         mStatusBarStateController.setState(StatusBarState.KEYGUARD);
-        mFalsingManager = new BrightLineFalsingManager(falsingDataProvider,
+        mFalsingManager = new BrightLineFalsingManager(mFalsingDataProvider,
                 mKeyguardUpdateMonitor, mProximitySensor, deviceConfigProxy, dockManager,
                 mStatusBarStateController);
     }
@@ -78,7 +84,14 @@
     @Test
     public void testRegisterSensor() {
         mFalsingManager.onScreenTurningOn();
-        verify(mProximitySensor).register(any(ProximitySensor.ProximitySensorListener.class));
+        verify(mProximitySensor).register(any(ThresholdSensor.Listener.class));
+    }
+
+    @Test
+    public void testNoProximityWhenWirelessCharging() {
+        mFakeBatteryController.setWirelessCharging(true);
+        mFalsingManager.onScreenTurningOn();
+        verify(mProximitySensor, never()).register(any(ThresholdSensor.Listener.class));
     }
 
     @Test
@@ -86,7 +99,7 @@
         mFalsingManager.onScreenTurningOn();
         reset(mProximitySensor);
         mFalsingManager.onScreenOff();
-        verify(mProximitySensor).unregister(any(ProximitySensor.ProximitySensorListener.class));
+        verify(mProximitySensor).unregister(any(ThresholdSensor.Listener.class));
     }
 
     @Test
@@ -94,9 +107,9 @@
         mFalsingManager.onScreenTurningOn();
         reset(mProximitySensor);
         mFalsingManager.setQsExpanded(true);
-        verify(mProximitySensor).unregister(any(ProximitySensor.ProximitySensorListener.class));
+        verify(mProximitySensor).unregister(any(ThresholdSensor.Listener.class));
         mFalsingManager.setQsExpanded(false);
-        verify(mProximitySensor).register(any(ProximitySensor.ProximitySensorListener.class));
+        verify(mProximitySensor).register(any(ThresholdSensor.Listener.class));
     }
 
     @Test
@@ -104,9 +117,9 @@
         mFalsingManager.onScreenTurningOn();
         reset(mProximitySensor);
         mFalsingManager.onBouncerShown();
-        verify(mProximitySensor).unregister(any(ProximitySensor.ProximitySensorListener.class));
+        verify(mProximitySensor).unregister(any(ThresholdSensor.Listener.class));
         mFalsingManager.onBouncerHidden();
-        verify(mProximitySensor).register(any(ProximitySensor.ProximitySensorListener.class));
+        verify(mProximitySensor).register(any(ThresholdSensor.Listener.class));
     }
 
     @Test
@@ -114,6 +127,6 @@
         mFalsingManager.onScreenTurningOn();
         reset(mProximitySensor);
         mStatusBarStateController.setState(StatusBarState.SHADE);
-        verify(mProximitySensor).unregister(any(ProximitySensor.ProximitySensorListener.class));
+        verify(mProximitySensor).unregister(any(ThresholdSensor.Listener.class));
     }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ClassifierTest.java
index 3ba5d1a..a4d198a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ClassifierTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ClassifierTest.java
@@ -21,29 +21,30 @@
 import android.util.DisplayMetrics;
 import android.view.MotionEvent;
 
-import com.android.systemui.SysuiTestCase;
+import com.android.systemui.utils.leaks.FakeBatteryController;
+import com.android.systemui.utils.leaks.LeakCheckedTest;
 
 import org.junit.After;
-import org.junit.Before;
 
 import java.util.ArrayList;
 import java.util.List;
 
-public class ClassifierTest extends SysuiTestCase {
+public class ClassifierTest extends LeakCheckedTest {
 
     private FalsingDataProvider mDataProvider;
     private List<MotionEvent> mMotionEvents = new ArrayList<>();
     private float mOffsetX = 0;
     private float mOffsetY = 0;
+    private FakeBatteryController mFakeBatteryController;
 
-    @Before
     public void setup() {
         DisplayMetrics displayMetrics = new DisplayMetrics();
         displayMetrics.xdpi = 100;
         displayMetrics.ydpi = 100;
         displayMetrics.widthPixels = 1000;
         displayMetrics.heightPixels = 1000;
-        mDataProvider = new FalsingDataProvider(displayMetrics);
+        mFakeBatteryController = new FakeBatteryController(getLeakCheck());
+        mDataProvider = new FalsingDataProvider(displayMetrics, mFakeBatteryController);
         mDataProvider.setInteractionType(UNLOCK);
     }
 
@@ -56,6 +57,10 @@
         return mDataProvider;
     }
 
+    FakeBatteryController getFakeBatteryController() {
+        return mFakeBatteryController;
+    }
+
     void setOffsetX(float offsetX) {
         mOffsetX = offsetX;
     }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/FalsingDataProviderTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/FalsingDataProviderTest.java
index 448c2f7..f13bc73 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/FalsingDataProviderTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/FalsingDataProviderTest.java
@@ -26,6 +26,8 @@
 
 import androidx.test.filters.SmallTest;
 
+import com.android.systemui.utils.leaks.FakeBatteryController;
+
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -37,17 +39,19 @@
 @RunWith(AndroidTestingRunner.class)
 public class FalsingDataProviderTest extends ClassifierTest {
 
+    private FakeBatteryController mFakeBatteryController;
     private FalsingDataProvider mDataProvider;
 
     @Before
     public void setup() {
         super.setup();
+        mFakeBatteryController = new FakeBatteryController(getLeakCheck());
         DisplayMetrics displayMetrics = new DisplayMetrics();
         displayMetrics.xdpi = 100;
         displayMetrics.ydpi = 100;
         displayMetrics.widthPixels = 1000;
         displayMetrics.heightPixels = 1000;
-        mDataProvider = new FalsingDataProvider(displayMetrics);
+        mDataProvider = new FalsingDataProvider(displayMetrics, mFakeBatteryController);
     }
 
     @After
@@ -246,4 +250,12 @@
         assertThat(mDataProvider.isUp(), is(false));
         mDataProvider.onSessionEnd();
     }
+
+    @Test
+    public void test_isWirelessCharging() {
+        assertThat(mDataProvider.isWirelessCharging(), is(false));
+
+        mFakeBatteryController.setWirelessCharging(true);
+        assertThat(mDataProvider.isWirelessCharging(), is(true));
+    }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ProximityClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ProximityClassifierTest.java
index 5b32a394..3cebf0d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ProximityClassifierTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/ProximityClassifierTest.java
@@ -136,7 +136,8 @@
         motionEvent.recycle();
     }
 
-    private ProximitySensor.ProximityEvent createSensorEvent(boolean covered, long timestampMs) {
-        return new ProximitySensor.ProximityEvent(covered, timestampMs * NS_PER_MS);
+    private ProximitySensor.ThresholdSensorEvent createSensorEvent(
+            boolean covered, long timestampMs) {
+        return new ProximitySensor.ThresholdSensorEvent(covered, timestampMs * NS_PER_MS);
     }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java
index f535351..3ef6027 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java
@@ -18,7 +18,6 @@
 
 import static com.android.systemui.doze.DozeMachine.State.DOZE;
 import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD;
-import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_DOCKED;
 import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_PAUSED;
 import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_PAUSING;
 import static com.android.systemui.doze.DozeMachine.State.DOZE_PULSE_DONE;
@@ -41,6 +40,7 @@
 import android.os.PowerManager;
 import android.os.UserHandle;
 import android.provider.Settings;
+import android.view.Display;
 
 import androidx.test.filters.SmallTest;
 import androidx.test.runner.AndroidJUnit4;
@@ -89,6 +89,8 @@
                 mSensor.getSensor(), mBroadcastDispatcher, mDozeHost, null /* handler */,
                 DEFAULT_BRIGHTNESS, SENSOR_TO_BRIGHTNESS, SENSOR_TO_OPACITY,
                 true /* debuggable */);
+
+        mScreen.onScreenState(Display.STATE_ON);
     }
 
     @Test
@@ -100,9 +102,10 @@
     }
 
     @Test
-    public void testAod_usesLightSensor() throws Exception {
+    public void testAod_usesLightSensor() {
         mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
         mScreen.transitionTo(INITIALIZED, DOZE_AOD);
+        mScreen.onScreenState(Display.STATE_DOZE);
 
         mSensor.sendSensorEvent(3);
 
@@ -134,24 +137,10 @@
     }
 
     @Test
-    public void testPausingAod_doesntPauseLightSensor() throws Exception {
-        mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
-        mScreen.transitionTo(INITIALIZED, DOZE_AOD);
-
-        mSensor.sendSensorEvent(1);
-
-        mScreen.transitionTo(DOZE_AOD, DOZE_AOD_PAUSING);
-        mScreen.transitionTo(DOZE_AOD_PAUSING, DOZE_AOD_PAUSED);
-
-        mSensor.sendSensorEvent(2);
-
-        assertEquals(2, mServiceFake.screenBrightness);
-    }
-
-    @Test
     public void testPausingAod_doesNotResetBrightness() throws Exception {
         mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
         mScreen.transitionTo(INITIALIZED, DOZE_AOD);
+        mScreen.onScreenState(Display.STATE_DOZE);
 
         mSensor.sendSensorEvent(1);
 
@@ -162,17 +151,6 @@
     }
 
     @Test
-    public void testPulsing_usesLightSensor() throws Exception {
-        mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
-        mScreen.transitionTo(INITIALIZED, DOZE);
-        mScreen.transitionTo(DOZE, DOZE_REQUEST_PULSE);
-
-        mSensor.sendSensorEvent(1);
-
-        assertEquals(1, mServiceFake.screenBrightness);
-    }
-
-    @Test
     public void testPulsing_withoutLightSensor_setsAoDDimmingScrimTransparent() throws Exception {
         mScreen = new DozeScreenBrightness(mContext, mServiceFake, mSensorManager,
                 null /* sensor */, mBroadcastDispatcher, mDozeHost, null /* handler */,
@@ -188,16 +166,6 @@
     }
 
     @Test
-    public void testDockedAod_usesLightSensor() {
-        mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
-        mScreen.transitionTo(INITIALIZED, DOZE_AOD_DOCKED);
-
-        mSensor.sendSensorEvent(3);
-
-        assertEquals(3, mServiceFake.screenBrightness);
-    }
-
-    @Test
     public void testDozingAfterPulsing_pausesLightSensor() throws Exception {
         mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
         mScreen.transitionTo(INITIALIZED, DOZE);
@@ -205,6 +173,7 @@
         mScreen.transitionTo(DOZE_REQUEST_PULSE, DOZE_PULSING);
         mScreen.transitionTo(DOZE_PULSING, DOZE_PULSE_DONE);
         mScreen.transitionTo(DOZE_PULSE_DONE, DOZE);
+        mScreen.onScreenState(Display.STATE_DOZE);
 
         mSensor.sendSensorEvent(1);
 
@@ -239,6 +208,7 @@
     public void testNonPositiveBrightness_keepsPreviousBrightnessAndScrim() throws Exception {
         mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
         mScreen.transitionTo(INITIALIZED, DOZE_AOD);
+        mScreen.onScreenState(Display.STATE_DOZE);
 
         mSensor.sendSensorEvent(1);
         mSensor.sendSensorEvent(0);
@@ -248,9 +218,10 @@
     }
 
     @Test
-    public void pausingAod_unblanksAfterSensor() throws Exception {
+    public void pausingAod_unblanksAfterSensor() {
         mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
         mScreen.transitionTo(INITIALIZED, DOZE_AOD);
+        mScreen.onScreenState(Display.STATE_DOZE);
 
         mSensor.sendSensorEvent(2);
 
@@ -261,6 +232,7 @@
 
         reset(mDozeHost);
         mScreen.transitionTo(DOZE_AOD_PAUSED, DOZE_AOD);
+        mScreen.onScreenState(Display.STATE_DOZE);
         mSensor.sendSensorEvent(2);
         verify(mDozeHost).setAodDimmingScrim(eq(0f));
     }
@@ -269,6 +241,7 @@
     public void pausingAod_unblanksIfSensorWasAlwaysReady() throws Exception {
         mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
         mScreen.transitionTo(INITIALIZED, DOZE_AOD);
+        mScreen.onScreenState(Display.STATE_DOZE);
 
         mSensor.sendSensorEvent(2);
         mScreen.transitionTo(DOZE_AOD, DOZE_AOD_PAUSING);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java
index a567536..ebd2c3a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java
@@ -23,7 +23,6 @@
 import static org.mockito.ArgumentMatchers.anyFloat;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.clearInvocations;
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
@@ -144,21 +143,6 @@
     }
 
     @Test
-    public void testSetPaused_doesntPause_sensors() {
-        verify(mSensorManager, never()).registerListener(any(), any(Sensor.class), anyInt());
-        mDozeSensors.setListening(true);
-        verify(mTriggerSensor).setListening(eq(true));
-
-        clearInvocations(mTriggerSensor);
-        mDozeSensors.setPaused(true);
-        verify(mTriggerSensor).setListening(eq(true));
-
-        clearInvocations(mTriggerSensor);
-        mDozeSensors.setListening(false);
-        verify(mTriggerSensor).setListening(eq(false));
-    }
-
-    @Test
     public void testDestroy() {
         mDozeSensors.destroy();
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java
index 1cdc02f..655f933 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java
@@ -34,6 +34,7 @@
 import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.testing.TestableLooper.RunWithLooper;
+import android.view.Display;
 
 import androidx.test.filters.SmallTest;
 
@@ -41,10 +42,13 @@
 import com.android.systemui.broadcast.BroadcastDispatcher;
 import com.android.systemui.dock.DockManager;
 import com.android.systemui.statusbar.phone.DozeParameters;
+import com.android.systemui.util.concurrency.FakeExecutor;
 import com.android.systemui.util.sensors.AsyncSensorManager;
 import com.android.systemui.util.sensors.FakeProximitySensor;
 import com.android.systemui.util.sensors.FakeSensorManager;
+import com.android.systemui.util.sensors.FakeThresholdSensor;
 import com.android.systemui.util.sensors.ProximitySensor;
+import com.android.systemui.util.time.FakeSystemClock;
 import com.android.systemui.util.wakelock.WakeLock;
 import com.android.systemui.util.wakelock.WakeLockFake;
 
@@ -72,10 +76,12 @@
     private DockManager mDockManager;
     @Mock
     private ProximitySensor.ProximityCheck mProximityCheck;
+
     private DozeTriggers mTriggers;
     private FakeSensorManager mSensors;
     private Sensor mTapSensor;
     private FakeProximitySensor mProximitySensor;
+    private FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock());
 
     @Before
     public void setUp() throws Exception {
@@ -87,7 +93,10 @@
         WakeLock wakeLock = new WakeLockFake();
         AsyncSensorManager asyncSensorManager =
                 new AsyncSensorManager(mSensors, null, new Handler());
-        mProximitySensor = new FakeProximitySensor(getContext().getResources(), asyncSensorManager);
+
+        FakeThresholdSensor thresholdSensor = new FakeThresholdSensor();
+        thresholdSensor.setLoaded(true);
+        mProximitySensor = new FakeProximitySensor(thresholdSensor,  null, mExecutor);
 
         mTriggers = new DozeTriggers(mContext, mMachine, mHost, mAlarmManager, config, parameters,
                 asyncSensorManager, wakeLock, true, mDockManager, mProximitySensor,
@@ -105,16 +114,17 @@
         mTriggers.transitionTo(DozeMachine.State.INITIALIZED, DozeMachine.State.DOZE);
         clearInvocations(mMachine);
 
-        mProximitySensor.setLastEvent(new ProximitySensor.ProximityEvent(true, 1));
+        mProximitySensor.setLastEvent(new ProximitySensor.ThresholdSensorEvent(true, 1));
         captor.getValue().onNotificationAlerted(null /* pulseSuppressedListener */);
         mProximitySensor.alertListeners();
 
         verify(mMachine, never()).requestState(any());
         verify(mMachine, never()).requestPulse(anyInt());
 
-        mProximitySensor.setLastEvent(new ProximitySensor.ProximityEvent(false, 2));
-        captor.getValue().onNotificationAlerted(null /* pulseSuppressedListener */);
+        mProximitySensor.setLastEvent(new ProximitySensor.ThresholdSensorEvent(false, 2));
         mProximitySensor.alertListeners();
+        waitForSensorManager();
+        captor.getValue().onNotificationAlerted(null /* pulseSuppressedListener */);
 
         verify(mMachine).requestPulse(anyInt());
     }
@@ -124,6 +134,7 @@
         when(mMachine.getState()).thenReturn(DozeMachine.State.DOZE);
 
         mTriggers.transitionTo(DozeMachine.State.INITIALIZED, DozeMachine.State.DOZE);
+        mTriggers.onScreenState(Display.STATE_OFF);
         waitForSensorManager();
         verify(mSensors).requestTriggerSensor(any(), eq(mTapSensor));
 
@@ -132,6 +143,7 @@
                 DozeMachine.State.DOZE_REQUEST_PULSE);
         mTriggers.transitionTo(DozeMachine.State.DOZE_REQUEST_PULSE,
                 DozeMachine.State.DOZE_PULSING);
+        mTriggers.onScreenState(Display.STATE_DOZE);
         waitForSensorManager();
         verify(mSensors).cancelTriggerSensor(any(), eq(mTapSensor));
 
@@ -144,10 +156,12 @@
     @Test
     public void transitionToDockedAod_disablesTouchSensors() {
         mTriggers.transitionTo(DozeMachine.State.INITIALIZED, DozeMachine.State.DOZE);
+        mTriggers.onScreenState(Display.STATE_OFF);
         waitForSensorManager();
         verify(mSensors).requestTriggerSensor(any(), eq(mTapSensor));
 
         mTriggers.transitionTo(DozeMachine.State.DOZE, DozeMachine.State.DOZE_AOD_DOCKED);
+        mTriggers.onScreenState(Display.STATE_DOZE);
         waitForSensorManager();
 
         verify(mSensors).cancelTriggerSensor(any(), eq(mTapSensor));
diff --git a/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogTest.java b/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogTest.java
index ac8c671..5e2e7c0 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogTest.java
@@ -49,6 +49,7 @@
 import android.util.FeatureFlagUtils;
 import android.view.IWindowManager;
 import android.view.View;
+import android.view.WindowManagerPolicyConstants;
 import android.widget.FrameLayout;
 
 import androidx.test.filters.SmallTest;
@@ -241,6 +242,28 @@
         verifyLogPosted(GlobalActionsDialog.GlobalActionsEvent.GA_SCREENSHOT_LONG_PRESS);
     }
 
+    @Test
+    public void testShouldShowScreenshot() {
+        mContext.getOrCreateTestableResources().addOverride(
+                com.android.internal.R.integer.config_navBarInteractionMode,
+                WindowManagerPolicyConstants.NAV_BAR_MODE_2BUTTON);
+
+        GlobalActionsDialog.ScreenshotAction screenshotAction =
+                mGlobalActionsDialog.makeScreenshotActionForTesting();
+        assertThat(screenshotAction.shouldShow()).isTrue();
+    }
+
+    @Test
+    public void testShouldNotShowScreenshot() {
+        mContext.getOrCreateTestableResources().addOverride(
+                com.android.internal.R.integer.config_navBarInteractionMode,
+                WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON);
+
+        GlobalActionsDialog.ScreenshotAction screenshotAction =
+                mGlobalActionsDialog.makeScreenshotActionForTesting();
+        assertThat(screenshotAction.shouldShow()).isFalse();
+    }
+
     private void verifyLogPosted(GlobalActionsDialog.GlobalActionsEvent event) {
         mTestableLooper.processAllMessages();
         verify(mUiEventLogger, times(1))
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/AutoAddTrackerTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/AutoAddTrackerTest.java
index 61f5a7b..de7abf8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/AutoAddTrackerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/AutoAddTrackerTest.java
@@ -55,6 +55,7 @@
         Prefs.putBoolean(mContext, Key.QS_DATA_SAVER_ADDED, true);
         Prefs.putBoolean(mContext, Key.QS_WORK_ADDED, true);
         mAutoTracker = new AutoAddTracker(mContext, USER);
+        mAutoTracker.initialize();
 
         assertTrue(mAutoTracker.isAdded(SAVER));
         assertTrue(mAutoTracker.isAdded(WORK));
@@ -72,6 +73,7 @@
     @Test
     public void testChangeFromBackup() {
         mAutoTracker = new AutoAddTracker(mContext, USER);
+        mAutoTracker.initialize();
 
         assertFalse(mAutoTracker.isAdded(SAVER));
 
@@ -86,6 +88,7 @@
     @Test
     public void testSetAdded() {
         mAutoTracker = new AutoAddTracker(mContext, USER);
+        mAutoTracker.initialize();
 
         assertFalse(mAutoTracker.isAdded(SAVER));
         mAutoTracker.setTileAdded(SAVER);
@@ -98,6 +101,7 @@
     @Test
     public void testPersist() {
         mAutoTracker = new AutoAddTracker(mContext, USER);
+        mAutoTracker.initialize();
 
         assertFalse(mAutoTracker.isAdded(SAVER));
         mAutoTracker.setTileAdded(SAVER);
@@ -113,6 +117,7 @@
     @Test
     public void testIndependentUsers() {
         mAutoTracker = new AutoAddTracker(mContext, USER);
+        mAutoTracker.initialize();
         mAutoTracker.setTileAdded(SAVER);
 
         mAutoTracker = new AutoAddTracker(mContext, USER + 1);
@@ -122,6 +127,7 @@
     @Test
     public void testChangeUser() {
         mAutoTracker = new AutoAddTracker(mContext, USER);
+        mAutoTracker.initialize();
         mAutoTracker.setTileAdded(SAVER);
 
         mAutoTracker = new AutoAddTracker(mContext, USER + 1);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/MediaArtworkProcessorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/MediaArtworkProcessorTest.kt
index 72e6df2..724ea02 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/MediaArtworkProcessorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/MediaArtworkProcessorTest.kt
@@ -80,7 +80,7 @@
         val background2 = processor.processArtwork(context, artwork)!!
         // THEN the two bitmaps are the same
         // Note: This is currently broken and trying to use caching causes issues
-        assertThat(background1).isNotSameAs(background2)
+        assertThat(background1).isNotSameInstanceAs(background2)
     }
 
     @Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java
index a5a5f81..90423c1 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java
@@ -61,6 +61,7 @@
 import com.android.systemui.Dependency;
 import com.android.systemui.R;
 import com.android.systemui.SysuiTestCase;
+import com.android.systemui.bubbles.BubbleController;
 import com.android.systemui.statusbar.FeatureFlags;
 import com.android.systemui.statusbar.NotificationLifetimeExtender;
 import com.android.systemui.statusbar.NotificationMediaManager;
@@ -98,6 +99,8 @@
 import java.util.List;
 import java.util.Set;
 
+import dagger.Lazy;
+
 /**
  * Unit tests for {@link NotificationEntryManager}. This test will not test any interactions with
  * inflation. Instead, for functional inflation tests, see
@@ -126,6 +129,7 @@
     @Mock private LeakDetector mLeakDetector;
     @Mock private NotificationMediaManager mNotificationMediaManager;
     @Mock private NotificationRowBinder mNotificationRowBinder;
+    @Mock private Lazy<BubbleController> mBubbleControllerLazy;
 
     private int mId;
     private NotificationEntry mEntry;
@@ -200,6 +204,7 @@
                 () -> mNotificationRowBinder,
                 () -> mRemoteInputManager,
                 mLeakDetector,
+                mBubbleControllerLazy,
                 mock(ForegroundServiceDismissalFeatureController.class)
         );
         mEntryManager.setUpWithPresenter(mPresenter);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/people/PeopleHubViewControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/people/PeopleHubViewControllerTest.kt
index 79fa436..5898664 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/people/PeopleHubViewControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/people/PeopleHubViewControllerTest.kt
@@ -118,7 +118,7 @@
         val people = viewModel.people.toList()
         assertThat(people.size).isEqualTo(1)
         assertThat(people[0].name).isEqualTo("name")
-        assertThat(people[0].icon).isSameAs(fakePerson.avatar)
+        assertThat(people[0].icon).isSameInstanceAs(fakePerson.avatar)
 
         people[0].onClick()
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java
index bedbec6..787b7b7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java
@@ -43,6 +43,7 @@
 import com.android.internal.util.NotificationMessagingUtil;
 import com.android.systemui.R;
 import com.android.systemui.SysuiTestCase;
+import com.android.systemui.bubbles.BubbleController;
 import com.android.systemui.plugins.FalsingManager;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
 import com.android.systemui.shared.plugins.PluginManager;
@@ -95,6 +96,8 @@
 
 import java.util.concurrent.CountDownLatch;
 
+import dagger.Lazy;
+
 /**
  * Functional tests for notification inflation from {@link NotificationEntryManager}.
  */
@@ -136,6 +139,8 @@
     @Mock private NotificationRowComponent.Builder mNotificationRowComponentBuilder;
     @Mock private PeopleNotificationIdentifier mPeopleNotificationIdentifier;
 
+    @Mock private Lazy<BubbleController> mBubbleControllerLazy;
+
     private StatusBarNotification mSbn;
     private NotificationListenerService.RankingMap mRankingMap;
     private NotificationEntryManager mEntryManager;
@@ -183,6 +188,7 @@
                 () -> mRowBinder,
                 () -> mRemoteInputManager,
                 mLeakDetector,
+                mBubbleControllerLazy,
                 mock(ForegroundServiceDismissalFeatureController.class)
         );
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java
index b286f94..2ae4cae 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java
@@ -52,6 +52,7 @@
 import com.android.systemui.ExpandHelper;
 import com.android.systemui.R;
 import com.android.systemui.SysuiTestCase;
+import com.android.systemui.bubbles.BubbleController;
 import com.android.systemui.classifier.FalsingManagerFake;
 import com.android.systemui.media.KeyguardMediaController;
 import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin;
@@ -109,6 +110,8 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import dagger.Lazy;
+
 /**
  * Tests for {@link NotificationStackScrollLayout}.
  */
@@ -140,6 +143,7 @@
     @Mock private NotificationSection mNotificationSection;
     @Mock private NotificationLockscreenUserManager mLockscreenUserManager;
     @Mock private FeatureFlags mFeatureFlags;
+    @Mock private Lazy<BubbleController> mBubbleControllerLazy;
     private UserChangedListener mUserChangedListener;
     private NotificationEntryManager mEntryManager;
     private int mOriginalInterruptionModelSetting;
@@ -190,6 +194,7 @@
                 () -> mock(NotificationRowBinder.class),
                 () -> mRemoteInputManager,
                 mock(LeakDetector.class),
+                mBubbleControllerLazy,
                 mock(ForegroundServiceDismissalFeatureController.class)
         );
         mEntryManager.setUpWithPresenter(mock(NotificationPresenter.class));
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/AutoTileManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/AutoTileManagerTest.java
index 0a959d1..3ebb77a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/AutoTileManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/AutoTileManagerTest.java
@@ -18,7 +18,9 @@
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.anyInt;
@@ -27,6 +29,7 @@
 import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.inOrder;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
@@ -54,7 +57,6 @@
 import com.android.systemui.qs.AutoAddTracker;
 import com.android.systemui.qs.QSTileHost;
 import com.android.systemui.qs.SecureSetting;
-import com.android.systemui.statusbar.phone.AutoTileManagerTest.MyContextWrapper;
 import com.android.systemui.statusbar.policy.CastController;
 import com.android.systemui.statusbar.policy.CastController.CastDevice;
 import com.android.systemui.statusbar.policy.DataSaverController;
@@ -110,13 +112,15 @@
                         TEST_SETTING_COMPONENT + SEPARATOR + TEST_CUSTOM_SPEC
                 }
         );
+        mContext.getOrCreateTestableResources().addOverride(
+                com.android.internal.R.bool.config_nightDisplayAvailable, true);
 
         when(mAutoAddTrackerBuilder.build()).thenReturn(mAutoAddTracker);
         when(mQsTileHost.getUserContext()).thenReturn(mUserContext);
         when(mUserContext.getUser()).thenReturn(UserHandle.of(USER));
 
-        mAutoTileManager = createAutoTileManager(new
-                MyContextWrapper(mContext));
+        mAutoTileManager = createAutoTileManager(new MyContextWrapper(mContext));
+        mAutoTileManager.init();
     }
 
     @After
@@ -124,17 +128,66 @@
         mAutoTileManager.destroy();
     }
 
-    private AutoTileManager createAutoTileManager(Context context) {
-        return new AutoTileManager(context, mAutoAddTrackerBuilder, mQsTileHost,
+    private AutoTileManager createAutoTileManager(
+            Context context,
+            AutoAddTracker.Builder autoAddTrackerBuilder,
+            HotspotController hotspotController,
+            DataSaverController dataSaverController,
+            ManagedProfileController managedProfileController,
+            NightDisplayListener nightDisplayListener,
+            CastController castController) {
+        return new AutoTileManager(context, autoAddTrackerBuilder, mQsTileHost,
                 Handler.createAsync(TestableLooper.get(this).getLooper()),
-                mHotspotController,
-                mDataSaverController,
-                mManagedProfileController,
-                mNightDisplayListener,
+                hotspotController,
+                dataSaverController,
+                managedProfileController,
+                nightDisplayListener,
+                castController);
+    }
+
+    private AutoTileManager createAutoTileManager(Context context) {
+        return createAutoTileManager(context, mAutoAddTrackerBuilder, mHotspotController,
+                mDataSaverController, mManagedProfileController, mNightDisplayListener,
                 mCastController);
     }
 
     @Test
+    public void testCreatedAutoTileManagerIsNotInitialized() {
+        AutoAddTracker.Builder builder = mock(AutoAddTracker.Builder.class, Answers.RETURNS_SELF);
+        AutoAddTracker tracker = mock(AutoAddTracker.class);
+        when(builder.build()).thenReturn(tracker);
+        HotspotController hC = mock(HotspotController.class);
+        DataSaverController dSC = mock(DataSaverController.class);
+        ManagedProfileController mPC = mock(ManagedProfileController.class);
+        NightDisplayListener nDS = mock(NightDisplayListener.class);
+        CastController cC = mock(CastController.class);
+
+        AutoTileManager manager =
+                createAutoTileManager(mock(Context.class), builder, hC, dSC, mPC, nDS, cC);
+
+        verify(tracker, never()).initialize();
+        verify(hC, never()).addCallback(any());
+        verify(dSC, never()).addCallback(any());
+        verify(mPC, never()).addCallback(any());
+        verify(nDS, never()).setCallback(any());
+        verify(cC, never()).addCallback(any());
+        assertNull(manager.getSecureSettingForKey(TEST_SETTING));
+        assertNull(manager.getSecureSettingForKey(TEST_SETTING_COMPONENT));
+    }
+
+    @Test
+    public void testChangeUserWhenNotInitializedThrows() {
+        AutoTileManager manager = createAutoTileManager(mock(Context.class));
+
+        try {
+            manager.changeUser(UserHandle.of(USER + 1));
+            fail();
+        } catch (Exception e) {
+            // This should throw and take this path
+        }
+    }
+
+    @Test
     public void testChangeUserCallbacksStoppedAndStarted() throws Exception {
         TestableLooper.get(this).runWithLooper(() ->
                 mAutoTileManager.changeUser(UserHandle.of(USER + 1))
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java
index a927c80..64907ee 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java
@@ -136,6 +136,8 @@
                 anyFloat());
         assertThat(mBiometricUnlockController.getMode())
                 .isEqualTo(BiometricUnlockController.MODE_SHOW_BOUNCER);
+        assertThat(mBiometricUnlockController.getBiometricType())
+                .isEqualTo(BiometricSourceType.FINGERPRINT);
     }
 
     @Test
@@ -268,6 +270,8 @@
         verify(mStatusBarKeyguardViewManager).notifyKeyguardAuthenticated(eq(false));
         assertThat(mBiometricUnlockController.getMode())
                 .isEqualTo(BiometricUnlockController.MODE_DISMISS_BOUNCER);
+        assertThat(mBiometricUnlockController.getBiometricType())
+                .isEqualTo(BiometricSourceType.FACE);
     }
 
     @Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LightsOutNotifControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LightsOutNotifControllerTest.java
index dbb4512..9d81a90 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LightsOutNotifControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LightsOutNotifControllerTest.java
@@ -130,7 +130,7 @@
     @Test
     public void testLightsOut_withNotifs_onSystemBarAppearanceChanged() {
         // GIVEN active visible notifications
-        when(mEntryManager.hasActiveNotifications()).thenReturn(true);
+        when(mEntryManager.hasVisibleNotifications()).thenReturn(true);
 
         // WHEN lights out
         mCallbacks.onSystemBarAppearanceChanged(
@@ -147,7 +147,7 @@
     @Test
     public void testLightsOut_withoutNotifs_onSystemBarAppearanceChanged() {
         // GIVEN no active visible notifications
-        when(mEntryManager.hasActiveNotifications()).thenReturn(false);
+        when(mEntryManager.hasVisibleNotifications()).thenReturn(false);
 
         // WHEN lights out
         mCallbacks.onSystemBarAppearanceChanged(
@@ -164,7 +164,7 @@
     @Test
     public void testLightsOn_afterLightsOut_onSystemBarAppearanceChanged() {
         // GIVEN active visible notifications
-        when(mEntryManager.hasActiveNotifications()).thenReturn(true);
+        when(mEntryManager.hasVisibleNotifications()).thenReturn(true);
 
         // WHEN lights on
         mCallbacks.onSystemBarAppearanceChanged(
@@ -181,13 +181,13 @@
     @Test
     public void testEntryAdded() {
         // GIVEN no visible notifications and lights out
-        when(mEntryManager.hasActiveNotifications()).thenReturn(false);
+        when(mEntryManager.hasVisibleNotifications()).thenReturn(false);
         mLightsOutNotifController.mAppearance = LIGHTS_OUT;
         mLightsOutNotifController.updateLightsOutView();
         assertIsShowingDot(false);
 
         // WHEN an active notification is added
-        when(mEntryManager.hasActiveNotifications()).thenReturn(true);
+        when(mEntryManager.hasVisibleNotifications()).thenReturn(true);
         assertTrue(mLightsOutNotifController.shouldShowDot());
         mEntryListener.onNotificationAdded(mock(NotificationEntry.class));
 
@@ -198,13 +198,13 @@
     @Test
     public void testEntryRemoved() {
         // GIVEN a visible notification and lights out
-        when(mEntryManager.hasActiveNotifications()).thenReturn(true);
+        when(mEntryManager.hasVisibleNotifications()).thenReturn(true);
         mLightsOutNotifController.mAppearance = LIGHTS_OUT;
         mLightsOutNotifController.updateLightsOutView();
         assertIsShowingDot(true);
 
         // WHEN all active notifications are removed
-        when(mEntryManager.hasActiveNotifications()).thenReturn(false);
+        when(mEntryManager.hasVisibleNotifications()).thenReturn(false);
         assertFalse(mLightsOutNotifController.shouldShowDot());
         mEntryListener.onEntryRemoved(
                 mock(NotificationEntry.class), null, false, REASON_CANCEL_ALL);
@@ -216,13 +216,13 @@
     @Test
     public void testEntryUpdated() {
         // GIVEN no visible notifications and lights out
-        when(mEntryManager.hasActiveNotifications()).thenReturn(false);
+        when(mEntryManager.hasVisibleNotifications()).thenReturn(false);
         mLightsOutNotifController.mAppearance = LIGHTS_OUT;
         mLightsOutNotifController.updateLightsOutView();
         assertIsShowingDot(false);
 
         // WHEN an active notification is added
-        when(mEntryManager.hasActiveNotifications()).thenReturn(true);
+        when(mEntryManager.hasVisibleNotifications()).thenReturn(true);
         assertTrue(mLightsOutNotifController.shouldShowDot());
         mEntryListener.onPostEntryUpdated(mock(NotificationEntry.class));
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java
index b0b66b8..00332cc 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java
@@ -326,7 +326,7 @@
         mAccessibiltyDelegate.onInitializeAccessibilityNodeInfo(mView, nodeInfo);
 
         List<AccessibilityNodeInfo.AccessibilityAction> actionList = nodeInfo.getActionList();
-        assertThat(actionList).containsAllIn(
+        assertThat(actionList).containsAtLeastElementsIn(
                 new AccessibilityNodeInfo.AccessibilityAction[] {
                         AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_FORWARD,
                         AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_UP}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
index aef454f..9a7400e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
@@ -45,7 +45,6 @@
 import android.os.Handler;
 import android.provider.Settings;
 import android.provider.Settings.Global;
-import android.telephony.CdmaEriInformation;
 import android.telephony.CellSignalStrength;
 import android.telephony.NetworkRegistrationInfo;
 import android.telephony.PhoneStateListener;
@@ -119,8 +118,6 @@
     private NetworkCapabilities mNetCapabilities;
     private ConnectivityManager.NetworkCallback mNetworkCallback;
 
-    private CdmaEriInformation mEriInformation;
-
     @Rule
     public TestWatcher failWatcher = new TestWatcher() {
         @Override
@@ -181,11 +178,6 @@
         doReturn(TelephonyManager.NETWORK_TYPE_LTE).when(mTelephonyDisplayInfo).getNetworkType();
         doReturn(TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE).when(mTelephonyDisplayInfo)
                 .getOverrideNetworkType();
-
-        mEriInformation = new CdmaEriInformation(CdmaEriInformation.ERI_OFF,
-                CdmaEriInformation.ERI_ICON_MODE_NORMAL);
-        when(mMockTm.getCdmaEriInformation()).thenReturn(mEriInformation);
-
         mConfig = new Config();
         mConfig.hspaDataDistinguishable = true;
         mCallbackHandler = mock(CallbackHandler.class);
@@ -308,9 +300,8 @@
     }
 
     public void setCdmaRoaming(boolean isRoaming) {
-        mEriInformation.setEriIconIndex(isRoaming ?
-                CdmaEriInformation.ERI_ON : CdmaEriInformation.ERI_OFF);
-        when(mMockTm.getCdmaEriInformation()).thenReturn(mEriInformation);
+        when(mMockTm.getCdmaEnhancedRoamingIndicatorDisplayNumber()).thenReturn(
+                isRoaming ? TelephonyManager.ERI_ON : TelephonyManager.ERI_OFF);
     }
 
     public void setVoiceRegState(int voiceRegState) {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/FakeProximitySensor.java b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/FakeProximitySensor.java
index bd697fe..9bb4c4b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/FakeProximitySensor.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/FakeProximitySensor.java
@@ -16,14 +16,16 @@
 
 package com.android.systemui.util.sensors;
 
-import android.content.res.Resources;
+import com.android.systemui.util.concurrency.DelayableExecutor;
 
 public class FakeProximitySensor extends ProximitySensor {
     private boolean mAvailable;
     private boolean mRegistered;
 
-    public FakeProximitySensor(Resources resources, AsyncSensorManager sensorManager) {
-        super(resources, sensorManager);
+    public FakeProximitySensor(ThresholdSensor primary, ThresholdSensor secondary,
+            DelayableExecutor delayableExecutor) {
+        super(primary, secondary == null ? new FakeThresholdSensor() : secondary,
+                delayableExecutor);
         mAvailable = true;
     }
 
@@ -31,7 +33,7 @@
         mAvailable = available;
     }
 
-    public void setLastEvent(ProximityEvent event) {
+    public void setLastEvent(ThresholdSensorEvent event) {
         mLastEvent = event;
     }
 
@@ -41,7 +43,7 @@
     }
 
     @Override
-    public boolean getSensorAvailable() {
+    public boolean isLoaded() {
         return mAvailable;
     }
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/FakeThresholdSensor.java b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/FakeThresholdSensor.java
new file mode 100644
index 0000000..d9f9789
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/FakeThresholdSensor.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.util.sensors;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class FakeThresholdSensor implements ThresholdSensor {
+    private boolean mIsLoaded;
+    private boolean mPaused;
+    private List<Listener> mListeners = new ArrayList<>();
+
+    public FakeThresholdSensor() {
+    }
+
+    public void setTag(String tag) {
+    }
+
+    @Override
+    public void setDelay(int delay) {
+    }
+
+    @Override
+    public boolean isLoaded() {
+        return mIsLoaded;
+    }
+
+    @Override
+    public void pause() {
+        mPaused = true;
+    }
+
+    @Override
+    public void resume() {
+        mPaused = false;
+    }
+
+    @Override
+    public void register(ThresholdSensor.Listener listener) {
+        mListeners.add(listener);
+    }
+
+    @Override
+    public void unregister(ThresholdSensor.Listener listener) {
+        mListeners.remove(listener);
+    }
+
+    public void setLoaded(boolean loaded) {
+        mIsLoaded = loaded;
+    }
+
+    void triggerEvent(boolean below, long timestampNs) {
+        if (!mPaused) {
+            for (Listener listener : mListeners) {
+                listener.onThresholdCrossed(new ThresholdSensorEvent(below, timestampNs));
+            }
+        }
+    }
+
+    boolean isPaused() {
+        return mPaused;
+    }
+
+    int getNumListeners() {
+        return mListeners.size();
+    }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximityCheckTest.java b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximityCheckTest.java
index dae6b28..c5a197e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximityCheckTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximityCheckTest.java
@@ -16,17 +16,18 @@
 
 package com.android.systemui.util.sensors;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
-import android.os.Handler;
 import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
+import com.android.systemui.util.Assert;
 import com.android.systemui.util.concurrency.FakeExecutor;
 import com.android.systemui.util.time.FakeSystemClock;
 
@@ -50,9 +51,10 @@
 
     @Before
     public void setUp() throws Exception {
-        AsyncSensorManager asyncSensorManager =
-                new AsyncSensorManager(new FakeSensorManager(mContext), null, new Handler());
-        mFakeProximitySensor = new FakeProximitySensor(mContext.getResources(), asyncSensorManager);
+        Assert.setTestableLooper(TestableLooper.get(this).getLooper());
+        FakeThresholdSensor thresholdSensor = new FakeThresholdSensor();
+        thresholdSensor.setLoaded(true);
+        mFakeProximitySensor = new FakeProximitySensor(thresholdSensor, null, mFakeExecutor);
 
         mProximityCheck = new ProximitySensor.ProximityCheck(mFakeProximitySensor, mFakeExecutor);
     }
@@ -63,7 +65,7 @@
 
         assertNull(mTestableCallback.mLastResult);
 
-        mFakeProximitySensor.setLastEvent(new ProximitySensor.ProximityEvent(true, 0));
+        mFakeProximitySensor.setLastEvent(new ProximitySensor.ThresholdSensorEvent(true, 0));
         mFakeProximitySensor.alertListeners();
 
         assertTrue(mTestableCallback.mLastResult);
@@ -79,13 +81,15 @@
         mFakeExecutor.runAllReady();
 
         assertFalse(mFakeProximitySensor.isRegistered());
+        assertEquals(1, mTestableCallback.mNumCalls);
+        assertNull(mTestableCallback.mLastResult);
     }
 
     @Test
     public void testProxDoesntCancelOthers() {
         assertFalse(mFakeProximitySensor.isRegistered());
         // We don't need our "other" listener to do anything. Just ensure our sensor is registered.
-        ProximitySensor.ProximitySensorListener emptyListener = event -> { };
+        ThresholdSensor.Listener emptyListener = event -> { };
         mFakeProximitySensor.register(emptyListener);
         assertTrue(mFakeProximitySensor.isRegistered());
 
@@ -94,7 +98,7 @@
 
         assertNull(mTestableCallback.mLastResult);
 
-        mFakeProximitySensor.setLastEvent(new ProximitySensor.ProximityEvent(true, 0));
+        mFakeProximitySensor.setLastEvent(new ProximitySensor.ThresholdSensorEvent(true, 0));
         mFakeProximitySensor.alertListeners();
 
         assertTrue(mTestableCallback.mLastResult);
@@ -109,9 +113,12 @@
 
     private static class TestableCallback implements Consumer<Boolean> {
         Boolean mLastResult;
+        int mNumCalls = 0;
+
         @Override
         public void accept(Boolean result) {
             mLastResult = result;
+            mNumCalls++;
         }
     }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorDualTest.java b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorDualTest.java
new file mode 100644
index 0000000..bae1d98
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorDualTest.java
@@ -0,0 +1,364 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.util.sensors;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import android.testing.AndroidTestingRunner;
+import android.testing.TestableLooper;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.systemui.SysuiTestCase;
+import com.android.systemui.util.concurrency.FakeExecutor;
+import com.android.systemui.util.time.FakeSystemClock;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+@TestableLooper.RunWithLooper
+public class ProximitySensorDualTest extends SysuiTestCase {
+    private ProximitySensor mProximitySensor;
+    private FakeExecutor mFakeExecutor = new FakeExecutor(new FakeSystemClock());
+    private FakeThresholdSensor mThresholdSensorPrimary;
+    private FakeThresholdSensor mThresholdSensorSecondary;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        allowTestableLooperAsMainThread();
+        mThresholdSensorPrimary = new FakeThresholdSensor();
+        mThresholdSensorPrimary.setLoaded(true);
+        mThresholdSensorSecondary = new FakeThresholdSensor();
+        mThresholdSensorSecondary.setLoaded(true);
+
+        mProximitySensor = new ProximitySensor(
+                mThresholdSensorPrimary, mThresholdSensorSecondary, mFakeExecutor);
+    }
+
+    @Test
+    public void testSingleListener() {
+        TestableListener listener = new TestableListener();
+
+        assertFalse(mProximitySensor.isRegistered());
+        mProximitySensor.register(listener);
+        assertTrue(mProximitySensor.isRegistered());
+        assertFalse(mThresholdSensorPrimary.isPaused());
+        assertTrue(mThresholdSensorSecondary.isPaused());
+        assertNull(listener.mLastEvent);
+        assertEquals(0, listener.mCallCount);
+
+        // Trigger second sensor. Nothing should happen yet.
+        mThresholdSensorSecondary.triggerEvent(true, 0);
+        assertFalse(mThresholdSensorPrimary.isPaused());
+        assertTrue(mThresholdSensorSecondary.isPaused());
+        assertNull(listener.mLastEvent);
+        assertEquals(0, listener.mCallCount);
+
+        // Trigger first sensor. Our second sensor is now registered.
+        mThresholdSensorPrimary.triggerEvent(true, 0);
+        assertFalse(mThresholdSensorPrimary.isPaused());
+        assertFalse(mThresholdSensorSecondary.isPaused());
+        assertNull(listener.mLastEvent);
+        assertEquals(0, listener.mCallCount);
+
+        // Trigger second sensor.
+        mThresholdSensorSecondary.triggerEvent(true, 0);
+        assertFalse(mThresholdSensorPrimary.isPaused());
+        assertFalse(mThresholdSensorSecondary.isPaused());
+        assertTrue(listener.mLastEvent.getBelow());
+        assertEquals(1, listener.mCallCount);
+
+        mProximitySensor.unregister(listener);
+    }
+
+    @Test
+    public void testSecondaryPausing() {
+        TestableListener listener = new TestableListener();
+
+        assertFalse(mProximitySensor.isRegistered());
+        mProximitySensor.register(listener);
+        assertTrue(mProximitySensor.isRegistered());
+        assertNull(listener.mLastEvent);
+        assertEquals(0, listener.mCallCount);
+
+        // Trigger first sensor. Our second sensor is now registered.
+        mThresholdSensorPrimary.triggerEvent(true, 0);
+        assertNull(listener.mLastEvent);
+        assertEquals(0, listener.mCallCount);
+
+        // Trigger second sensor. Second sensor remains registered.
+        mThresholdSensorSecondary.triggerEvent(true, 0);
+        assertTrue(listener.mLastEvent.getBelow());
+        assertEquals(1, listener.mCallCount);
+        assertFalse(mThresholdSensorSecondary.isPaused());
+
+        // Triggering above should pause.
+        mThresholdSensorSecondary.triggerEvent(false, 0);
+        assertFalse(listener.mLastEvent.getBelow());
+        assertEquals(2, listener.mCallCount);
+        assertTrue(mThresholdSensorSecondary.isPaused());
+
+        // Advance time. Second sensor should resume.
+        mFakeExecutor.advanceClockToNext();
+        mFakeExecutor.runNextReady();
+        assertFalse(mThresholdSensorSecondary.isPaused());
+
+        mProximitySensor.unregister(listener);
+    }
+
+    @Test
+    public void testUnregister() {
+        TestableListener listener = new TestableListener();
+
+        assertFalse(mProximitySensor.isRegistered());
+        mProximitySensor.register(listener);
+        assertTrue(mProximitySensor.isRegistered());
+        assertFalse(mThresholdSensorPrimary.isPaused());
+        assertTrue(mThresholdSensorSecondary.isPaused());
+        assertNull(listener.mLastEvent);
+
+        mThresholdSensorPrimary.triggerEvent(true, 0);
+        mThresholdSensorSecondary.triggerEvent(true, 0);
+        assertFalse(mThresholdSensorPrimary.isPaused());
+        assertFalse(mThresholdSensorSecondary.isPaused());
+        assertTrue(listener.mLastEvent.getBelow());
+        assertEquals(1, listener.mCallCount);
+
+        mProximitySensor.unregister(listener);
+        assertTrue(mThresholdSensorPrimary.isPaused());
+        assertTrue(mThresholdSensorSecondary.isPaused());
+        assertFalse(mProximitySensor.isRegistered());
+    }
+
+    @Test
+    public void testUnregisterDuringCallback() {
+        ThresholdSensor.Listener listenerA = event -> mProximitySensor.pause();
+        TestableListener listenerB = new TestableListener();
+
+        assertFalse(mProximitySensor.isRegistered());
+        mProximitySensor.register(listenerA);
+        mProximitySensor.register(listenerB);
+        assertTrue(mProximitySensor.isRegistered());
+        assertFalse(mThresholdSensorPrimary.isPaused());
+        assertTrue(mThresholdSensorSecondary.isPaused());
+        assertNull(listenerB.mLastEvent);
+
+        // listenerA will pause the proximity sensor, unregistering it.
+        mThresholdSensorPrimary.triggerEvent(true, 0);
+        mThresholdSensorSecondary.triggerEvent(true, 0);
+        assertTrue(listenerB.mLastEvent.getBelow());
+        assertEquals(1, listenerB.mCallCount);
+
+
+        // A second call to trigger it should be ignored.
+        mThresholdSensorSecondary.triggerEvent(false, 0);
+        assertTrue(listenerB.mLastEvent.getBelow());
+        assertEquals(1, listenerB.mCallCount);
+    }
+
+    @Test
+    public void testPauseAndResume() {
+        TestableListener listener = new TestableListener();
+
+        assertFalse(mProximitySensor.isRegistered());
+        mProximitySensor.register(listener);
+        assertTrue(mProximitySensor.isRegistered());
+        assertNull(listener.mLastEvent);
+
+        mThresholdSensorPrimary.triggerEvent(true, 0);
+        mThresholdSensorSecondary.triggerEvent(true, 0);
+        assertFalse(mThresholdSensorPrimary.isPaused());
+        assertFalse(mThresholdSensorSecondary.isPaused());
+        assertTrue(listener.mLastEvent.getBelow());
+        assertEquals(1, listener.mCallCount);
+
+        mProximitySensor.pause();
+        assertFalse(mProximitySensor.isRegistered());
+        assertTrue(mThresholdSensorPrimary.isPaused());
+        assertTrue(mThresholdSensorSecondary.isPaused());
+
+        // More events do nothing when paused.
+        mThresholdSensorSecondary.triggerEvent(false, 1);
+        assertTrue(listener.mLastEvent.getBelow());
+        assertEquals(1, listener.mCallCount);
+
+        mProximitySensor.resume();
+        assertTrue(mProximitySensor.isRegistered());
+        // Still matches our previous call
+        assertTrue(listener.mLastEvent.getBelow());
+        assertEquals(1, listener.mCallCount);
+
+        // Need to trigger the primary sensor before the secondary re-registers itself.
+        mThresholdSensorPrimary.triggerEvent(true, 3);
+        mThresholdSensorSecondary.triggerEvent(false, 3);
+        assertFalse(mThresholdSensorPrimary.isPaused());
+        assertTrue(mThresholdSensorSecondary.isPaused());
+        assertFalse(listener.mLastEvent.getBelow());
+        assertEquals(2, listener.mCallCount);
+
+        mProximitySensor.unregister(listener);
+        assertFalse(mProximitySensor.isRegistered());
+    }
+
+    @Test
+    public void testPrimarySecondaryDisagreement() {
+        TestableListener listener = new TestableListener();
+
+        mProximitySensor.register(listener);
+        assertFalse(mThresholdSensorPrimary.isPaused());
+        assertTrue(mThresholdSensorSecondary.isPaused());
+        assertNull(listener.mLastEvent);
+        assertEquals(0, listener.mCallCount);
+
+        // Trigger our sensors with different values. Secondary overrides primary.
+        mThresholdSensorPrimary.triggerEvent(true, 0);
+        assertNull(listener.mLastEvent);
+        assertEquals(0, listener.mCallCount);
+        mThresholdSensorSecondary.triggerEvent(false, 0);
+        assertFalse(listener.mLastEvent.getBelow());
+        assertEquals(1, listener.mCallCount);
+
+        mThresholdSensorSecondary.resume();
+        mThresholdSensorSecondary.triggerEvent(true, 0);
+        assertTrue(listener.mLastEvent.getBelow());
+        assertEquals(2, listener.mCallCount);
+
+        mThresholdSensorSecondary.resume();
+        mThresholdSensorSecondary.triggerEvent(false, 0);
+        assertFalse(listener.mLastEvent.getBelow());
+        assertEquals(3, listener.mCallCount);
+
+        mProximitySensor.unregister(listener);
+    }
+
+    @Test
+    public void testPrimaryCancelsSecondary() {
+        TestableListener listener = new TestableListener();
+
+        mProximitySensor.register(listener);
+        assertFalse(mThresholdSensorPrimary.isPaused());
+        assertTrue(mThresholdSensorSecondary.isPaused());
+        assertNull(listener.mLastEvent);
+        assertEquals(0, listener.mCallCount);
+
+        mThresholdSensorPrimary.triggerEvent(true, 0);
+        assertNull(listener.mLastEvent);
+        assertEquals(0, listener.mCallCount);
+        mThresholdSensorSecondary.triggerEvent(true, 0);
+        assertTrue(listener.mLastEvent.getBelow());
+        assertEquals(1, listener.mCallCount);
+
+        // When the primary reports false, the secondary is no longer needed. We get an immediate
+        // report.
+        mThresholdSensorPrimary.triggerEvent(false, 1);
+        assertFalse(listener.mLastEvent.getBelow());
+        assertEquals(2, listener.mCallCount);
+
+        // The secondary is now ignored. No more work is scheduled.
+        mFakeExecutor.advanceClockToNext();
+        mFakeExecutor.runNextReady();
+        mThresholdSensorSecondary.triggerEvent(true, 0);
+        assertFalse(listener.mLastEvent.getBelow());
+        assertEquals(2, listener.mCallCount);
+        assertEquals(0, mFakeExecutor.numPending());
+
+        mProximitySensor.unregister(listener);
+    }
+
+    @Test
+    public void testSecondaryCancelsSecondary() {
+        TestableListener listener = new TestableListener();
+        ThresholdSensor.Listener cancelingListener = new ThresholdSensor.Listener() {
+            @Override
+            public void onThresholdCrossed(ThresholdSensor.ThresholdSensorEvent event) {
+                mProximitySensor.pause();
+            }
+        };
+
+        mProximitySensor.register(listener);
+        mProximitySensor.register(cancelingListener);
+        assertNull(listener.mLastEvent);
+        assertEquals(0, listener.mCallCount);
+
+        mThresholdSensorPrimary.triggerEvent(true, 0);
+        assertNull(listener.mLastEvent);
+        assertEquals(0, listener.mCallCount);
+        mThresholdSensorSecondary.triggerEvent(true, 0);
+        assertTrue(listener.mLastEvent.getBelow());
+        assertEquals(1, listener.mCallCount);
+
+        // The proximity sensor should now be canceled. Advancing the clock should do nothing.
+        assertEquals(0, mFakeExecutor.numPending());
+        mThresholdSensorSecondary.triggerEvent(false, 1);
+        assertTrue(listener.mLastEvent.getBelow());
+        assertEquals(1, listener.mCallCount);
+
+        mProximitySensor.unregister(listener);
+    }
+
+    @Test
+    public void testSecondarySafe() {
+        mProximitySensor.setSecondarySafe(true);
+
+        TestableListener listener = new TestableListener();
+
+        mProximitySensor.register(listener);
+        assertFalse(mThresholdSensorPrimary.isPaused());
+        assertTrue(mThresholdSensorSecondary.isPaused());
+        assertNull(listener.mLastEvent);
+        assertEquals(0, listener.mCallCount);
+
+        mThresholdSensorPrimary.triggerEvent(true, 0);
+        assertNull(listener.mLastEvent);
+        assertEquals(0, listener.mCallCount);
+        mThresholdSensorSecondary.triggerEvent(true, 0);
+        assertTrue(listener.mLastEvent.getBelow());
+        assertEquals(1, listener.mCallCount);
+
+        // The secondary sensor should now remain resumed indefinitely.
+        assertFalse(mThresholdSensorSecondary.isPaused());
+        mThresholdSensorPrimary.triggerEvent(false, 1);
+        assertFalse(listener.mLastEvent.getBelow());
+        assertEquals(2, listener.mCallCount);
+
+        // The secondary is still running, and not polling with the executor.
+        assertFalse(mThresholdSensorSecondary.isPaused());
+        assertEquals(0, mFakeExecutor.numPending());
+
+        mProximitySensor.unregister(listener);
+    }
+
+    private static class TestableListener implements ThresholdSensor.Listener {
+        ThresholdSensor.ThresholdSensorEvent mLastEvent;
+        int mCallCount = 0;
+
+        @Override
+        public void onThresholdCrossed(ThresholdSensor.ThresholdSensorEvent proximityEvent) {
+            mLastEvent = proximityEvent;
+            mCallCount++;
+        }
+    };
+
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorTest.java b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorTest.java
deleted file mode 100644
index 914790b..0000000
--- a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorTest.java
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.systemui.util.sensors;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import android.os.Handler;
-import android.testing.AndroidTestingRunner;
-import android.testing.TestableLooper;
-
-import androidx.test.filters.SmallTest;
-
-import com.android.systemui.SysuiTestCase;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@SmallTest
-@RunWith(AndroidTestingRunner.class)
-@TestableLooper.RunWithLooper
-public class ProximitySensorTest extends SysuiTestCase {
-
-    private ProximitySensor mProximitySensor;
-    private FakeSensorManager.FakeProximitySensor mFakeProximitySensor;
-
-    @Before
-    public void setUp() throws Exception {
-        FakeSensorManager sensorManager = new FakeSensorManager(getContext());
-        AsyncSensorManager asyncSensorManager = new AsyncSensorManager(
-                sensorManager, null, new Handler());
-        mFakeProximitySensor = sensorManager.getFakeProximitySensor();
-        mProximitySensor = new ProximitySensor(getContext().getResources(), asyncSensorManager);
-    }
-
-    @Test
-    public void testSingleListener() {
-        TestableListener listener = new TestableListener();
-
-        assertFalse(mProximitySensor.isRegistered());
-        mProximitySensor.register(listener);
-        waitForSensorManager();
-        assertTrue(mProximitySensor.isRegistered());
-        assertNull(listener.mLastEvent);
-
-        mFakeProximitySensor.sendProximityResult(true);
-        assertFalse(listener.mLastEvent.getNear());
-        assertEquals(listener.mCallCount, 1);
-        mFakeProximitySensor.sendProximityResult(false);
-        assertTrue(listener.mLastEvent.getNear());
-        assertEquals(listener.mCallCount, 2);
-
-        mProximitySensor.unregister(listener);
-        waitForSensorManager();
-    }
-
-    @Test
-    public void testMultiListener() {
-        TestableListener listenerA = new TestableListener();
-        TestableListener listenerB = new TestableListener();
-
-        assertFalse(mProximitySensor.isRegistered());
-
-        mProximitySensor.register(listenerA);
-        waitForSensorManager();
-        assertTrue(mProximitySensor.isRegistered());
-        mProximitySensor.register(listenerB);
-        waitForSensorManager();
-        assertTrue(mProximitySensor.isRegistered());
-        assertNull(listenerA.mLastEvent);
-        assertNull(listenerB.mLastEvent);
-
-        mFakeProximitySensor.sendProximityResult(true);
-        assertFalse(listenerA.mLastEvent.getNear());
-        assertFalse(listenerB.mLastEvent.getNear());
-        assertEquals(listenerA.mCallCount, 1);
-        assertEquals(listenerB.mCallCount, 1);
-        mFakeProximitySensor.sendProximityResult(false);
-        assertTrue(listenerA.mLastEvent.getNear());
-        assertTrue(listenerB.mLastEvent.getNear());
-        assertEquals(listenerA.mCallCount, 2);
-        assertEquals(listenerB.mCallCount, 2);
-
-        mProximitySensor.unregister(listenerA);
-        mProximitySensor.unregister(listenerB);
-        waitForSensorManager();
-    }
-
-    @Test
-    public void testDuplicateListener() {
-        TestableListener listenerA = new TestableListener();
-
-        assertFalse(mProximitySensor.isRegistered());
-
-        mProximitySensor.register(listenerA);
-        waitForSensorManager();
-        assertTrue(mProximitySensor.isRegistered());
-        mProximitySensor.register(listenerA);
-        waitForSensorManager();
-        assertTrue(mProximitySensor.isRegistered());
-        assertNull(listenerA.mLastEvent);
-
-        mFakeProximitySensor.sendProximityResult(true);
-        assertFalse(listenerA.mLastEvent.getNear());
-        assertEquals(listenerA.mCallCount, 1);
-        mFakeProximitySensor.sendProximityResult(false);
-        assertTrue(listenerA.mLastEvent.getNear());
-        assertEquals(listenerA.mCallCount, 2);
-
-        mProximitySensor.unregister(listenerA);
-        waitForSensorManager();
-    }
-    @Test
-    public void testUnregister() {
-        TestableListener listener = new TestableListener();
-
-        assertFalse(mProximitySensor.isRegistered());
-        mProximitySensor.register(listener);
-        waitForSensorManager();
-        assertTrue(mProximitySensor.isRegistered());
-        assertNull(listener.mLastEvent);
-
-        mFakeProximitySensor.sendProximityResult(true);
-        assertFalse(listener.mLastEvent.getNear());
-        assertEquals(listener.mCallCount, 1);
-
-        mProximitySensor.unregister(listener);
-        waitForSensorManager();
-        assertFalse(mProximitySensor.isRegistered());
-    }
-
-    @Test
-    public void testPauseAndResume() {
-        TestableListener listener = new TestableListener();
-
-        assertFalse(mProximitySensor.isRegistered());
-        mProximitySensor.register(listener);
-        waitForSensorManager();
-        assertTrue(mProximitySensor.isRegistered());
-        assertNull(listener.mLastEvent);
-
-        mFakeProximitySensor.sendProximityResult(true);
-        assertFalse(listener.mLastEvent.getNear());
-        assertEquals(listener.mCallCount, 1);
-
-        mProximitySensor.pause();
-        waitForSensorManager();
-        assertFalse(mProximitySensor.isRegistered());
-
-        // More events do nothing when paused.
-        mFakeProximitySensor.sendProximityResult(true);
-        assertFalse(listener.mLastEvent.getNear());
-        assertEquals(listener.mCallCount, 1);
-        mFakeProximitySensor.sendProximityResult(false);
-        assertFalse(listener.mLastEvent.getNear());
-        assertEquals(listener.mCallCount, 1);
-
-        mProximitySensor.resume();
-        waitForSensorManager();
-        assertTrue(mProximitySensor.isRegistered());
-        // Still matches our previous call
-        assertFalse(listener.mLastEvent.getNear());
-        assertEquals(listener.mCallCount, 1);
-
-        mFakeProximitySensor.sendProximityResult(true);
-        assertFalse(listener.mLastEvent.getNear());
-        assertEquals(listener.mCallCount, 2);
-
-        mProximitySensor.unregister(listener);
-        waitForSensorManager();
-        assertFalse(mProximitySensor.isRegistered());
-    }
-
-    @Test
-    public void testAlertListeners() {
-        TestableListener listenerA = new TestableListener();
-        TestableListener listenerB = new TestableListener();
-
-        assertFalse(mProximitySensor.isRegistered());
-
-        mProximitySensor.register(listenerA);
-        mProximitySensor.register(listenerB);
-        waitForSensorManager();
-        assertTrue(mProximitySensor.isRegistered());
-        assertNull(listenerA.mLastEvent);
-        assertNull(listenerB.mLastEvent);
-
-        mProximitySensor.alertListeners();
-        assertNull(listenerA.mLastEvent);
-        assertEquals(listenerA.mCallCount, 1);
-        assertNull(listenerB.mLastEvent);
-        assertEquals(listenerB.mCallCount, 1);
-
-        mFakeProximitySensor.sendProximityResult(false);
-        assertTrue(listenerA.mLastEvent.getNear());
-        assertEquals(listenerA.mCallCount, 2);
-        assertTrue(listenerB.mLastEvent.getNear());
-        assertEquals(listenerB.mCallCount, 2);
-
-        mProximitySensor.unregister(listenerA);
-        mProximitySensor.unregister(listenerB);
-        waitForSensorManager();
-    }
-
-    @Test
-    public void testPreventRecursiveAlert() {
-        TestableListener listenerA = new TestableListener() {
-            @Override
-            public void onSensorEvent(ProximitySensor.ProximityEvent proximityEvent) {
-                super.onSensorEvent(proximityEvent);
-                if (mCallCount < 2) {
-                    mProximitySensor.alertListeners();
-                }
-            }
-        };
-
-        mProximitySensor.register(listenerA);
-
-        mProximitySensor.alertListeners();
-
-        assertEquals(1, listenerA.mCallCount);
-    }
-
-
-    class TestableListener implements ProximitySensor.ProximitySensorListener {
-        ProximitySensor.ProximityEvent mLastEvent;
-        int mCallCount = 0;
-
-        @Override
-        public void onSensorEvent(ProximitySensor.ProximityEvent proximityEvent) {
-            mLastEvent = proximityEvent;
-            mCallCount++;
-        }
-
-        void reset() {
-            mLastEvent = null;
-            mCallCount = 0;
-        }
-    };
-
-    private void waitForSensorManager() {
-        TestableLooper.get(this).processAllMessages();
-    }
-
-}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ThresholdSensorImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ThresholdSensorImplTest.java
new file mode 100644
index 0000000..8ba7d62
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ThresholdSensorImplTest.java
@@ -0,0 +1,313 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.util.sensors;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import android.os.Handler;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.testing.AndroidTestingRunner;
+import android.testing.TestableLooper;
+
+import com.android.systemui.SysuiTestCase;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+@TestableLooper.RunWithLooper
+public class ThresholdSensorImplTest extends SysuiTestCase {
+
+    private ThresholdSensorImpl mThresholdSensor;
+    private FakeSensorManager mSensorManager;
+    private AsyncSensorManager mAsyncSensorManager;
+    private FakeSensorManager.FakeProximitySensor mFakeProximitySensor;
+
+    @Before
+    public void setUp() throws Exception {
+        allowTestableLooperAsMainThread();
+        mSensorManager = new FakeSensorManager(getContext());
+
+        mAsyncSensorManager = new AsyncSensorManager(
+                mSensorManager, null, new Handler());
+
+        mFakeProximitySensor = mSensorManager.getFakeProximitySensor();
+        ThresholdSensorImpl.Builder thresholdSensorBuilder = new ThresholdSensorImpl.Builder(
+                null, mAsyncSensorManager);
+        mThresholdSensor = (ThresholdSensorImpl) thresholdSensorBuilder
+                .setSensor(mFakeProximitySensor.getSensor())
+                .setThresholdValue(mFakeProximitySensor.getSensor().getMaximumRange())
+                .build();
+    }
+
+    @Test
+    public void testSingleListener() {
+        TestableListener listener = new TestableListener();
+
+        assertFalse(mThresholdSensor.isRegistered());
+        mThresholdSensor.register(listener);
+        waitForSensorManager();
+        assertTrue(mThresholdSensor.isRegistered());
+        assertEquals(0, listener.mCallCount);
+
+        mFakeProximitySensor.sendProximityResult(true);
+        assertFalse(listener.mBelow);
+        assertEquals(1, listener.mCallCount);
+        mFakeProximitySensor.sendProximityResult(false);
+        assertTrue(listener.mBelow);
+        assertEquals(2, listener.mCallCount);
+
+        mThresholdSensor.unregister(listener);
+        waitForSensorManager();
+    }
+
+    @Test
+    public void testMultiListener() {
+        TestableListener listenerA = new TestableListener();
+        TestableListener listenerB = new TestableListener();
+
+        assertFalse(mThresholdSensor.isRegistered());
+
+        mThresholdSensor.register(listenerA);
+        waitForSensorManager();
+        assertTrue(mThresholdSensor.isRegistered());
+        mThresholdSensor.register(listenerB);
+        waitForSensorManager();
+        assertTrue(mThresholdSensor.isRegistered());
+        assertEquals(0, listenerA.mCallCount);
+        assertEquals(0, listenerB.mCallCount);
+
+
+        mFakeProximitySensor.sendProximityResult(true);
+        assertFalse(listenerA.mBelow);
+        assertFalse(listenerB.mBelow);
+        assertEquals(1, listenerA.mCallCount);
+        assertEquals(1, listenerB.mCallCount);
+        mFakeProximitySensor.sendProximityResult(false);
+        assertTrue(listenerA.mBelow);
+        assertTrue(listenerB.mBelow);
+        assertEquals(2, listenerA.mCallCount);
+        assertEquals(2, listenerB.mCallCount);
+
+        mThresholdSensor.unregister(listenerA);
+        mThresholdSensor.unregister(listenerB);
+        waitForSensorManager();
+    }
+
+    @Test
+    public void testDuplicateListener() {
+        TestableListener listenerA = new TestableListener();
+
+        assertFalse(mThresholdSensor.isRegistered());
+
+        mThresholdSensor.register(listenerA);
+        waitForSensorManager();
+        assertTrue(mThresholdSensor.isRegistered());
+        mThresholdSensor.register(listenerA);
+        waitForSensorManager();
+        assertTrue(mThresholdSensor.isRegistered());
+        assertEquals(0, listenerA.mCallCount);
+
+        mFakeProximitySensor.sendProximityResult(true);
+        assertFalse(listenerA.mBelow);
+        assertEquals(1, listenerA.mCallCount);
+        mFakeProximitySensor.sendProximityResult(false);
+        assertTrue(listenerA.mBelow);
+        assertEquals(2, listenerA.mCallCount);
+
+        mThresholdSensor.unregister(listenerA);
+        waitForSensorManager();
+    }
+    @Test
+    public void testUnregister() {
+        TestableListener listener = new TestableListener();
+
+        assertFalse(mThresholdSensor.isRegistered());
+        mThresholdSensor.register(listener);
+        waitForSensorManager();
+        assertTrue(mThresholdSensor.isRegistered());
+        assertEquals(0, listener.mCallCount);
+
+        mFakeProximitySensor.sendProximityResult(true);
+        assertFalse(listener.mBelow);
+        assertEquals(1, listener.mCallCount);
+
+        mThresholdSensor.unregister(listener);
+        waitForSensorManager();
+        assertFalse(mThresholdSensor.isRegistered());
+    }
+
+    @Test
+    public void testPauseAndResume() {
+        TestableListener listener = new TestableListener();
+
+        assertFalse(mThresholdSensor.isRegistered());
+        mThresholdSensor.register(listener);
+        waitForSensorManager();
+        assertTrue(mThresholdSensor.isRegistered());
+        assertEquals(0, listener.mCallCount);
+
+        mFakeProximitySensor.sendProximityResult(true);
+        assertFalse(listener.mBelow);
+        assertEquals(1, listener.mCallCount);
+
+        mThresholdSensor.pause();
+        waitForSensorManager();
+        assertFalse(mThresholdSensor.isRegistered());
+
+        // More events do nothing when paused.
+        mFakeProximitySensor.sendProximityResult(true);
+        assertFalse(listener.mBelow);
+        assertEquals(1, listener.mCallCount);
+        mFakeProximitySensor.sendProximityResult(false);
+        assertFalse(listener.mBelow);
+        assertEquals(1, listener.mCallCount);
+
+        mThresholdSensor.resume();
+        waitForSensorManager();
+        assertTrue(mThresholdSensor.isRegistered());
+        // Still matches our previous call
+        assertFalse(listener.mBelow);
+        assertEquals(1, listener.mCallCount);
+
+        mFakeProximitySensor.sendProximityResult(false);
+        assertTrue(listener.mBelow);
+        assertEquals(2, listener.mCallCount);
+
+        mThresholdSensor.unregister(listener);
+        waitForSensorManager();
+        assertFalse(mThresholdSensor.isRegistered());
+    }
+
+    @Test
+    public void testAlertListeners() {
+        TestableListener listenerA = new TestableListener();
+        TestableListener listenerB = new TestableListener();
+
+        assertFalse(mThresholdSensor.isRegistered());
+
+        mThresholdSensor.register(listenerA);
+        mThresholdSensor.register(listenerB);
+        waitForSensorManager();
+        assertTrue(mThresholdSensor.isRegistered());
+        assertEquals(0, listenerA.mCallCount);
+        assertEquals(0, listenerB.mCallCount);
+
+        mFakeProximitySensor.sendProximityResult(true);
+        assertFalse(listenerA.mBelow);
+        assertEquals(1, listenerA.mCallCount);
+        assertFalse(listenerB.mBelow);
+        assertEquals(1, listenerB.mCallCount);
+
+        mFakeProximitySensor.sendProximityResult(false);
+        assertTrue(listenerA.mBelow);
+        assertEquals(2, listenerA.mCallCount);
+        assertTrue(listenerB.mBelow);
+        assertEquals(2, listenerB.mCallCount);
+
+        mThresholdSensor.unregister(listenerA);
+        mThresholdSensor.unregister(listenerB);
+        waitForSensorManager();
+    }
+
+    @Test
+    public void testHysteresis() {
+        float lowValue = 10f;
+        float highValue = 100f;
+        FakeSensorManager.FakeGenericSensor sensor = mSensorManager.getFakeLightSensor();
+        ThresholdSensorImpl.Builder thresholdSensorBuilder = new ThresholdSensorImpl.Builder(
+                null, mAsyncSensorManager);
+        ThresholdSensorImpl thresholdSensor = (ThresholdSensorImpl) thresholdSensorBuilder
+                .setSensor(sensor.getSensor())
+                .setThresholdValue(lowValue)
+                .setThresholdLatchValue(highValue)
+                .build();
+
+        TestableListener listener = new TestableListener();
+
+        assertFalse(thresholdSensor.isRegistered());
+        thresholdSensor.register(listener);
+        waitForSensorManager();
+        assertTrue(thresholdSensor.isRegistered());
+        assertEquals(0, listener.mCallCount);
+
+        sensor.sendSensorEvent(lowValue - 1);
+
+        assertTrue(listener.mBelow);
+        assertEquals(1, listener.mCallCount);
+
+        sensor.sendSensorEvent(lowValue + 1);
+
+        assertTrue(listener.mBelow);
+        assertEquals(1, listener.mCallCount);
+
+        sensor.sendSensorEvent(highValue);
+
+        assertFalse(listener.mBelow);
+        assertEquals(2, listener.mCallCount);
+
+        sensor.sendSensorEvent(highValue - 1);
+
+        assertFalse(listener.mBelow);
+        assertEquals(2, listener.mCallCount);
+
+
+        sensor.sendSensorEvent(lowValue - 1);
+
+        assertTrue(listener.mBelow);
+        assertEquals(3, listener.mCallCount);
+    }
+
+    @Test
+    public void testAlertAfterPause() {
+        TestableListener listener = new TestableListener();
+
+        mThresholdSensor.register(listener);
+        waitForSensorManager();
+        mFakeProximitySensor.sendProximityResult(false);
+        assertTrue(listener.mBelow);
+        assertEquals(1, listener.mCallCount);
+
+        mThresholdSensor.pause();
+
+        mFakeProximitySensor.sendProximityResult(false);
+        assertTrue(listener.mBelow);
+        assertEquals(1, listener.mCallCount);
+    }
+
+    static class TestableListener implements ThresholdSensor.Listener {
+        boolean mBelow;
+        long mTimestampNs;
+        int mCallCount;
+
+        @Override
+        public void onThresholdCrossed(ThresholdSensor.ThresholdSensorEvent event) {
+            mBelow = event.getBelow();
+            mTimestampNs = event.getTimestampNs();
+            mCallCount++;
+        }
+    }
+
+    private void waitForSensorManager() {
+        TestableLooper.get(this).processAllMessages();
+    }
+
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeBatteryController.java b/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeBatteryController.java
index 8ec4cb8..50c1e73 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeBatteryController.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeBatteryController.java
@@ -25,6 +25,8 @@
 
 public class FakeBatteryController extends BaseLeakChecker<BatteryStateChangeCallback>
         implements BatteryController {
+    private boolean mWirelessCharging;
+
     public FakeBatteryController(LeakCheck test) {
         super(test, "battery");
     }
@@ -58,4 +60,13 @@
     public boolean isAodPowerSave() {
         return false;
     }
+
+    @Override
+    public boolean isWirelessCharging() {
+        return mWirelessCharging;
+    }
+
+    public void setWirelessCharging(boolean wirelessCharging) {
+        mWirelessCharging = wirelessCharging;
+    }
 }
diff --git a/packages/Tethering/Android.bp b/packages/Tethering/Android.bp
deleted file mode 100644
index 257538d..0000000
--- a/packages/Tethering/Android.bp
+++ /dev/null
@@ -1,136 +0,0 @@
-//
-// Copyright (C) 2019 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-java_defaults {
-    name: "TetheringAndroidLibraryDefaults",
-    sdk_version: "module_current",
-    srcs: [
-        "src/**/*.java",
-        ":framework-tethering-shared-srcs",
-        ":tethering-module-utils-srcs",
-        ":services-tethering-shared-srcs",
-    ],
-    static_libs: [
-        "androidx.annotation_annotation",
-        "netd_aidl_interface-unstable-java",
-        "netlink-client",
-        // TODO: use networkstack-client instead of just including the AIDL interface
-        "networkstack-aidl-interfaces-unstable-java",
-        "android.hardware.tetheroffload.config-V1.0-java",
-        "android.hardware.tetheroffload.control-V1.0-java",
-        "net-utils-framework-common",
-        "net-utils-device-common",
-    ],
-    libs: [
-        "framework-statsd.stubs.module_lib",
-        "framework-tethering.impl",
-        "framework-wifi",
-        "unsupportedappusage",
-    ],
-    plugins: ["java_api_finder"],
-    manifest: "AndroidManifestBase.xml",
-}
-
-// Build tethering static library, used to compile both variants of the tethering.
-android_library {
-    name: "TetheringApiCurrentLib",
-    defaults: ["TetheringAndroidLibraryDefaults"],
-}
-
-// Due to b/143733063, APK can't access a jni lib that is in APEX (but not in the APK).
-cc_library {
-    name: "libtetherutilsjni",
-    sdk_version: "current",
-    apex_available: [
-        "//apex_available:platform", // Used by InProcessTethering
-        "com.android.tethering",
-    ],
-    min_sdk_version: "current",
-    srcs: [
-        "jni/android_net_util_TetheringUtils.cpp",
-    ],
-    shared_libs: [
-        "liblog",
-        "libnativehelper_compat_libc++",
-    ],
-
-    // We cannot use plain "libc++" here to link libc++ dynamically because it results in:
-    //   java.lang.UnsatisfiedLinkError: dlopen failed: library "libc++_shared.so" not found
-    // even if "libc++" is added into jni_libs below. Adding "libc++_shared" into jni_libs doesn't
-    // build because soong complains of:
-    //   module Tethering missing dependencies: libc++_shared
-    //
-    // So, link libc++ statically. This means that we also need to ensure that all the C++ libraries
-    // we depend on do not dynamically link libc++. This is currently the case, because liblog is
-    // C-only and libnativehelper_compat_libc also uses stl: "c++_static".
-    stl: "c++_static",
-
-    cflags: [
-        "-Wall",
-        "-Werror",
-        "-Wno-unused-parameter",
-        "-Wthread-safety",
-    ],
-
-    ldflags: ["-Wl,--exclude-libs=ALL,-error-limit=0"],
-}
-
-// Common defaults for compiling the actual APK.
-java_defaults {
-    name: "TetheringAppDefaults",
-    sdk_version: "module_current",
-    privileged: true,
-    jni_libs: [
-        "libtetherutilsjni",
-    ],
-    resource_dirs: [
-        "res",
-    ],
-    libs: [
-        "framework-tethering",
-    ],
-    jarjar_rules: "jarjar-rules.txt",
-    optimize: {
-        proguard_flags_files: ["proguard.flags"],
-    },
-}
-
-// Non-updatable tethering running in the system server process for devices not using the module
-android_app {
-    name: "InProcessTethering",
-    defaults: ["TetheringAppDefaults"],
-    static_libs: ["TetheringApiCurrentLib"],
-    certificate: "platform",
-    manifest: "AndroidManifest_InProcess.xml",
-    // InProcessTethering is a replacement for Tethering
-    overrides: ["Tethering"],
-    apex_available: ["com.android.tethering"],
-    min_sdk_version: "current",
-}
-
-// Updatable tethering packaged as an application
-android_app {
-    name: "Tethering",
-    defaults: ["TetheringAppDefaults"],
-    static_libs: ["TetheringApiCurrentLib"],
-    certificate: "networkstack",
-    manifest: "AndroidManifest.xml",
-    use_embedded_native_libs: true,
-    // The permission configuration *must* be included to ensure security of the device
-    required: ["NetworkPermissionConfig"],
-    apex_available: ["com.android.tethering"],
-    min_sdk_version: "current",
-}
diff --git a/packages/Tethering/AndroidManifest.xml b/packages/Tethering/AndroidManifest.xml
deleted file mode 100644
index e6444f3..0000000
--- a/packages/Tethering/AndroidManifest.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
--->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="com.android.networkstack.tethering"
-          android:sharedUserId="android.uid.networkstack">
-    <uses-sdk android:minSdkVersion="29" android:targetSdkVersion="29" />
-
-    <!-- Permissions must be defined here, and not in the base manifest, as the tethering
-         running in the system server process does not need any permission, and having
-         privileged permissions added would cause crashes on startup unless they are also
-         added to the privileged permissions allowlist for that package. -->
-    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
-    <uses-permission android:name="android.permission.BLUETOOTH" />
-    <uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED" />
-    <uses-permission android:name="android.permission.BROADCAST_STICKY" />
-    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
-    <uses-permission android:name="android.permission.MANAGE_USB" />
-    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
-    <uses-permission android:name="android.permission.READ_DEVICE_CONFIG" />
-    <uses-permission android:name="android.permission.READ_NETWORK_USAGE_HISTORY" />
-    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
-    <uses-permission android:name="android.permission.TETHER_PRIVILEGED" />
-    <uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" />
-    <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
-    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
-
-    <protected-broadcast android:name="com.android.server.connectivity.tethering.DISABLE_TETHERING" />
-
-    <application
-        android:process="com.android.networkstack.process"
-        android:extractNativeLibs="false"
-        android:persistent="true">
-        <service android:name="com.android.networkstack.tethering.TetheringService"
-                 android:permission="android.permission.MAINLINE_NETWORK_STACK"
-                 android:exported="true">
-            <intent-filter>
-                <action android:name="android.net.ITetheringConnector"/>
-            </intent-filter>
-        </service>
-    </application>
-</manifest>
diff --git a/packages/Tethering/AndroidManifestBase.xml b/packages/Tethering/AndroidManifestBase.xml
deleted file mode 100644
index 97c3988..0000000
--- a/packages/Tethering/AndroidManifestBase.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
--->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="com.android.networkstack.tethering"
-          android:versionCode="1"
-          android:versionName="R-initial">
-    <application
-        android:label="Tethering"
-        android:defaultToDeviceProtectedStorage="true"
-        android:directBootAware="true"
-        android:usesCleartextTraffic="true">
-    </application>
-</manifest>
diff --git a/packages/Tethering/AndroidManifest_InProcess.xml b/packages/Tethering/AndroidManifest_InProcess.xml
deleted file mode 100644
index b1f1240..0000000
--- a/packages/Tethering/AndroidManifest_InProcess.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
--->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="com.android.networkstack.tethering.inprocess"
-          android:sharedUserId="android.uid.system"
-          android:process="system">
-    <uses-sdk android:minSdkVersion="29" android:targetSdkVersion="29" />
-    <application>
-        <service android:name="com.android.networkstack.tethering.TetheringService"
-                 android:process="system"
-                 android:permission="android.permission.MAINLINE_NETWORK_STACK"
-                 android:exported="true">
-            <intent-filter>
-                <action android:name="android.net.ITetheringConnector.InProcess"/>
-            </intent-filter>
-        </service>
-    </application>
-</manifest>
diff --git a/packages/Tethering/OWNERS b/packages/Tethering/OWNERS
deleted file mode 100644
index 5b42d49..0000000
--- a/packages/Tethering/OWNERS
+++ /dev/null
@@ -1,2 +0,0 @@
-include platform/packages/modules/NetworkStack/:/OWNERS
-markchien@google.com
diff --git a/packages/Tethering/TEST_MAPPING b/packages/Tethering/TEST_MAPPING
deleted file mode 100644
index 5617b0c..0000000
--- a/packages/Tethering/TEST_MAPPING
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "presubmit": [
-    {
-      "name": "TetheringTests"
-    }
-  ],
-  "postsubmit": [
-    {
-      "name": "TetheringIntegrationTests"
-    }
-  ]
-}
diff --git a/packages/Tethering/apex/Android.bp b/packages/Tethering/apex/Android.bp
deleted file mode 100644
index 0524374..0000000
--- a/packages/Tethering/apex/Android.bp
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// Copyright (C) 2019 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-apex {
-    name: "com.android.tethering",
-    updatable: true,
-    min_sdk_version: "current",
-    java_libs: ["framework-tethering"],
-    bpfs: ["offload.o"],
-    apps: ["Tethering"],
-    manifest: "manifest.json",
-    key: "com.android.tethering.key",
-
-    androidManifest: "AndroidManifest.xml",
-}
-
-apex_key {
-    name: "com.android.tethering.key",
-    public_key: "com.android.tethering.avbpubkey",
-    private_key: "com.android.tethering.pem",
-}
-
-android_app_certificate {
-    name: "com.android.tethering.certificate",
-    certificate: "com.android.tethering",
-}
-
-override_apex {
-    name: "com.android.tethering.inprocess",
-    base: "com.android.tethering",
-    package_name: "com.android.tethering.inprocess",
-    apps: [
-        "InProcessTethering",
-    ],
-}
diff --git a/packages/Tethering/apex/AndroidManifest.xml b/packages/Tethering/apex/AndroidManifest.xml
deleted file mode 100644
index 4aae3cc..0000000
--- a/packages/Tethering/apex/AndroidManifest.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-  package="com.android.tethering">
-  <!-- APEX does not have classes.dex -->
-  <application android:hasCode="false" />
-  <!-- b/145383354: Current minSdk is locked to Q for development cycle, lock it to next version
-                    before ship. -->
-  <!-- TODO: Uncomment this when the R API level is fixed. b/148281152 -->
-  <!--uses-sdk
-      android:minSdkVersion="29"
-      android:targetSdkVersion="29"
-  />
-  -->
-</manifest>
diff --git a/packages/Tethering/apex/com.android.tethering.avbpubkey b/packages/Tethering/apex/com.android.tethering.avbpubkey
deleted file mode 100644
index 9a2c017..0000000
--- a/packages/Tethering/apex/com.android.tethering.avbpubkey
+++ /dev/null
Binary files differ
diff --git a/packages/Tethering/apex/com.android.tethering.pem b/packages/Tethering/apex/com.android.tethering.pem
deleted file mode 100644
index d4f39ab..0000000
--- a/packages/Tethering/apex/com.android.tethering.pem
+++ /dev/null
@@ -1,51 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIJKgIBAAKCAgEA+AWTp03PBRMGt4mVNLt5PDoFFSfmFOVTM7jt5AJXnQMIDsAM
-1cyWGWRridGIpoHAaCALVgW5aRySgi8yV5xP4w0YHcKbfh9M6I9oz4RUo4GQBZfX
-+lFIGaLjb6I3tEJxPuxps4sW26Io63ihwTnKeGyADHdHGWDUs9WU0Ml+QTvKrdjy
-qC03M0dehYXILGiA9m+UXwKoKxhWgfDUhWLhDBUtLJLPL4WeqKc9sG9h+zzVqE+8
-LzJsfrodKhTTrLpWOXi6YLRTk8dzsuPz/Nu98sJd1w3fHd20DrmkqsxVhgN1h+nk
-zcPpxyGYIP6qYVZCmIXCwZZNtPeb7y/tOs967VHoZ4Qj7p2tE0CAWFMZFGjA/pcZ
-7fi6CsIuMOYBbj4+wRlJwpG1g5zSJBCjzhv7dZp8S5oXmLShNYOMYEdsPfaZbm08
-3pVY+k8DVf7idcANXNw1lM+sPbE2hp5VuEuVpK+ca5x8hIMpTqJ84wDAjnC1kCwm
-X2xfNvYPKNF58SvqlNCPN8X7hQjoeaEb7w24vCdZMRqeGBmu1GNQvCyzbBO0huQm
-f5CQPrZjPcnoImlP879VPxY4YB6tAjsA/ZLiub9VdT108lCjb5r8criMzpMAA/AQ
-NqQLWFI3M43xPemGBTiIguTYgpRgGcdRZf7XuTgTY5qzQZZuZMVuwaqSD2cCAwEA
-AQKCAgEA0jMvw3BPTrakT7Lb8JgelKt7mUV6WyVMUZ6eh0pw5JIoJxAfEKfWYmjY
-NzKNRMjcv6LA2MP7MplTld/YI6ZHkl+Lm9VOISL39HVuV8mIThbFb+gT1INEvu1t
-IjRyT2SsQ67rmo377mLNmVtgg7mt3kfecjI44MpPGqad/CF4zmKVUKd4aI4BpYUM
-F8+dKf3bpoBEWA2RZwy2bGQmSXHW132vDoLR8y2knL04rCqJ+PrC/WWuULXEe9bS
-VtLV3yMBZq3qD4Fk/+7fILLPGvNFVdPi4htQiChYrM4rP9HzfaO63VieYMF0hR70
-pqoOznXj9Q4QVC9FZmUgFCQjQ1+KhqJw3OldIo0SnvpsLdTO/inKkhQWKC5HlPyh
-/rqvro2j3pTHWPAziuBr+oQPcdVCOlCBZ+B99L1tO7aGktVPEIVQG7G7jlFMBiJ1
-j/kRGk2RTX8RaPQJTnwUqp8mWUV2fwxHiXNadjejA5ZU3eQT2eAOhXl1w6Lv2jEl
-0wMOwPMJGcF77CcqnnWHON8fkxCbAfyy5Uo6Pm9g/Zzecn+ji2sabG7Ge5t0gzdL
-LKRcGoyakN2CrbQ8pxlCTgE4HX5oPY+VuqOf8L3AIWIJBsyLbXHVkL1mqQ/Ed2uz
-zaaSFYUZw81+m/5bl8JLPaIFNPyikZrXTD0YRer3V06XiyP/kYECggEBAP033xeF
-OhgRwkRTjd68hwRJpyHsZDWxHiUqQf6l6yFv5mEE355G2IGI7cZmR2+tUDjQdxLv
-tAZIszTK4PFCdVTeWfGVFbVF84eNWLB124pHDMM79GN/AMcuHnQPR756a8IO1hIy
-4KxIUE1a1PKN5b9IgE5Lu4TZM96HDpFcUAmCT5urdYDmg3++IWT9PYQlGS7Hhiar
-r+Hh646waM8Qx619CwXBqy+Y37+WHVbYqJClr6AcpVMrGA+6cgpskFpZAPLsoy7G
-RSsVfyV8pH2JKm/hzk7XCwIpczxeWQSfpJWZ+oOPFHu+zM60Cdj2UrQyKrNHwew8
-+WYe9eCA+MiNBcECggEBAPq/F1vdqROiLv9uzhKb8ybgdL7CmREELiqwK+MvNE9t
-W7lQz7lcWzav+b2n0M+VJBxUWB3XClgoIvA/AllgTgsYXfKAxNakhKLSBoMmvKCW
-HtWcGr/D3RcmacK+DTMWlVS/LuueAFLuH6UmBIUFKc+qA5x7oQecAFALBFupE3G4
-LtAspLBI6P8gRtRav5p2whs9H8qjYcyf2f6liWpkmFITcXvPvAxFHicR6ZJdwZ/S
-PiX2LJQnOpT7L3+2PWnYwzFStb4MkMGlFKcscU9CvS53JcP/J4Asjk0I4zDB2gri
-xzFHPlVzCr2IVVGptKCQ3sdYiMIzQKzEXQHCU8h37ycCggEBAJu8aC48Fz3Edlm1
-ldS+2L9vWSaJEBzhoSu0cMBgZVu8SdGzwKDE69XHVI4oS5lI28UFmaaA3JTc07MN
-cAmSGT2oP2NQkPhbXGsrKLfm1K6YAiZ1Ulp7OwxFth8lYreo7Wt92nV46yuqkhDx
-Y3UGhp39xkPhWiRbvgYHxJLsVqFyjumsK2mq3IeNdVZ6VgJXGsTlnAFeqJ7hZxHs
-N5natSRjeosA0PtGJ57agZLvT8Ue0gREef3LzFGoFwmIOcQHZ4kAt2BGOzZDU17H
-6Rb4bKxBEbT1l2St/5zKXi90zDHicOvG7Q8qiyY6HrBc1wLSs+ZtpLxZx/3h3tFE
-IT6fVUECggEBAMSAQm8Ey76OJ+SXUjk1K50442SnHcs/Cmr7urkEQitImUwl71Pk
-87pst/uP6szypOTqmE9yOTIS6iZ6Sn3+QcriIqWrkhZfwW3Tx7S6A7KZUrq15iSH
-+thsiw9JXxC9TvOmC8AsBzb2U6hZncsc28JZCxFztSNAduJDb/vhCVLiMxWDFuDr
-kmR1R+yc3XDQRpeQFDz6QudYEj9EPOc6xD/16sZLaqP2+oVFvVSt0tJLsdaQECle
-gMNGAdhE2eX8MCOUHMc+E6cdlozYAEhMFfO2/cqWR79jq3TlVR3dnOFRDScqHMhc
-KnuTvsELjHkUbvGsCSiff7yk+fop7vy4OJsCggEAPemJdItO2rhib8EofrZdY72I
-oifX1jhPZ1BWD2GKgcx+eVyJGbONBbJVexvvskTfZBvCcAegmgp+sngP6MO6yZkr
-cHMfAJeApYZnshsgXksHGMDtSB50/w1JLrc/nqpxdpy/aTazt0Eu1pLWpze1HFZ/
-Xyu4PcmrU+4P1vN7c396slHMktEvly6QqOn4nfBbGDJ17Ow6X1XFvGjAxQPIDTB+
-6loV14AHymwmqwMrGn84O72rzqyw+41GxW5+oXhOZ4MeXF3u89TBLWvXDpPy/YQU
-EiKpodN0YeEn6Ghzplan8rUha+7TP7AYnS5pCszsCHKd03Py0lMLkF+uAfVsDA==
------END RSA PRIVATE KEY-----
diff --git a/packages/Tethering/apex/com.android.tethering.pk8 b/packages/Tethering/apex/com.android.tethering.pk8
deleted file mode 100644
index 3b94405..0000000
--- a/packages/Tethering/apex/com.android.tethering.pk8
+++ /dev/null
Binary files differ
diff --git a/packages/Tethering/apex/com.android.tethering.x509.pem b/packages/Tethering/apex/com.android.tethering.x509.pem
deleted file mode 100644
index a1786e3..0000000
--- a/packages/Tethering/apex/com.android.tethering.x509.pem
+++ /dev/null
@@ -1,35 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGKTCCBBGgAwIBAgIUNiSs5EMqxCZ31gWWCcRJVp9HffAwDQYJKoZIhvcNAQEL
-BQAwgaIxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQH
-DA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdBbmRyb2lkMRAwDgYDVQQLDAdBbmRy
-b2lkMR4wHAYDVQQDDBVjb20uYW5kcm9pZC50ZXRoZXJpbmcxIjAgBgkqhkiG9w0B
-CQEWE2FuZHJvaWRAYW5kcm9pZC5jb20wIBcNMTkxMjE4MDcwMDQ4WhgPNDc1NzEx
-MTMwNzAwNDhaMIGiMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEW
-MBQGA1UEBwwNTW91bnRhaW4gVmlldzEQMA4GA1UECgwHQW5kcm9pZDEQMA4GA1UE
-CwwHQW5kcm9pZDEeMBwGA1UEAwwVY29tLmFuZHJvaWQudGV0aGVyaW5nMSIwIAYJ
-KoZIhvcNAQkBFhNhbmRyb2lkQGFuZHJvaWQuY29tMIICIjANBgkqhkiG9w0BAQEF
-AAOCAg8AMIICCgKCAgEAxvTUA4seblYjZLfTVNwZuJH914QVNFTj+vD94pWmt5Aq
-sH1DVTpBvpXXegc/P5HI2XF/71poSBib1WaQSuXG0fU5K75T18bOGL0qF+fhMtBO
-wUyvulcjO0h4XE/xf0txY54exUjAA4JS9ERGJOgb4GOwSbPyzekfmzIyCZ2Yawwu
-+oGwD2ZNzZRaPOoWxjwohBWQ6mySuvF9RRRb300qmxxUGFM9Ki3aqrWlYlHEOwOC
-M+gIXxYFO7S+yUzf6/gMZLOz2YqfcTOup4hAxtExR7niutxJSsRLPBL237exAJoz
-OupoXjtWAlPK4ZwZ/Nl1jdTWauJ+Kv3WqzhHGEb2gn3ZpeO3IdOjJhDgFJ6m1OT/
-kjRbW1LCuKGrKaoqsEDT2X3a7Izfripn65hSNTfR5gNLtgELaI3/vXi8Fmzw1AfH
-+qi6ulElZvSwx0qm+S0QiPyGFlxrsdnHoGJl1tzjJW8KdNZRvzRLUQtbphPp+VkL
-5i0bNKum+AwbfdUkLkNLfw9XdbujgBkZTZDQbZGsNjgrvyXcPO2KiJee0hVCZRs0
-rhDi5Pfm7BnN/I2vaTRz/W4mdct9H2RWMuqlSH90JvmKtWcND8ahmOJ3sggrvzfO
-QNs3k4JTRecamMzqIkylhlnEC4FjWc6Bx4wsEpwBMZOkF/tGGMZYf2C09a8tpP0C
-AwEAAaNTMFEwHQYDVR0OBBYEFNP5gIpNWmq0xa411M1GaRPbEijvMB8GA1UdIwQY
-MBaAFNP5gIpNWmq0xa411M1GaRPbEijvMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
-hvcNAQELBQADggIBADJGmU3QP4EGbt6eBhVPeo/efsqrHsuB2fvFzvIobJbfkSob
-cmvjbzIikOlPAgFWj8lT5SDcIWRorFf1u2JylClJ0nSDcqJMHVKmT7wseV/KtX//
-1yUyJFRQVzmjC89dp8OIc00GmItivKLer3NbJdkR3rTUjg7+bNUO27Qp3AFREmiJ
-P+M7ouvcQRvByUWbp/LOrJpMdJLysRBO562RwrtwTjltdvufyYswbBZOKEiUh1Jc
-Ged+3+SJdhwq3Wy+R3Uj7YE7mUMu1QNbANIMrwF8W93EA53eoL2+cKmuaVU6ZURL
-xgSJaY6TrunnSI9XTROLtjsFlJorYWy2tvG7Q5Hw3OkO2Xdz/mm85VTkiusg9DMB
-WWTv607YtsIO0FhKmcV4bp3q/EkRj3t/zLvL9uFJrWDGkuShZq6fQvqbCvaokOPY
-+M0ZRIwgwa9UpEE0BMklVWqR6BGyap614gOgcOjYM70WRNl59Qne+g128ZN7g9nz
-61F70i7kUngV0ZUz1/Fu/NCG+6wGF85ZbFmQl60YHPDw1FtjVUuKyBblaDzdJunx
-yQr2t9RUokzFBFK0lGW3+yf0WDQ5fqTMs5h8bz1FCq8/HzWmpdOfqePLe4zsld3b
-1nFuSohaIfbn/HDdTNtTBGQPgz8ZswQ6ejJJqTLz9D/odbqn9LeIhDZXcQTf
------END CERTIFICATE-----
diff --git a/packages/Tethering/apex/manifest.json b/packages/Tethering/apex/manifest.json
deleted file mode 100644
index 8836c4e..0000000
--- a/packages/Tethering/apex/manifest.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "name": "com.android.tethering",
-  "version": 300900700
-}
diff --git a/packages/Tethering/bpf_progs/Android.bp b/packages/Tethering/bpf_progs/Android.bp
deleted file mode 100644
index d54f861..0000000
--- a/packages/Tethering/bpf_progs/Android.bp
+++ /dev/null
@@ -1,33 +0,0 @@
-//
-// Copyright (C) 2020 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-//
-// bpf kernel programs
-//
-bpf {
-    name: "offload.o",
-    srcs: ["offload.c"],
-    cflags: [
-        "-Wall",
-        "-Werror",
-    ],
-    include_dirs: [
-        // TODO: get rid of system/netd.
-        "system/netd/bpf_progs",             // for bpf_net_helpers.h
-        "system/netd/libnetdbpf/include",    // for bpf_shared.h
-        "system/netd/libnetdutils/include",  // for UidConstants.h
-    ],
-}
diff --git a/packages/Tethering/bpf_progs/offload.c b/packages/Tethering/bpf_progs/offload.c
deleted file mode 100644
index cc5af31..0000000
--- a/packages/Tethering/bpf_progs/offload.c
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <linux/if.h>
-#include <linux/ip.h>
-#include <linux/ipv6.h>
-#include <linux/pkt_cls.h>
-#include <linux/tcp.h>
-
-#include "bpf_helpers.h"
-#include "bpf_net_helpers.h"
-#include "netdbpf/bpf_shared.h"
-
-DEFINE_BPF_MAP_GRW(tether_ingress_map, HASH, TetherIngressKey, TetherIngressValue, 64,
-                   AID_NETWORK_STACK)
-
-// Tethering stats, indexed by upstream interface.
-DEFINE_BPF_MAP_GRW(tether_stats_map, HASH, uint32_t, TetherStatsValue, 16, AID_NETWORK_STACK)
-
-// Tethering data limit, indexed by upstream interface.
-// (tethering allowed when stats[iif].rxBytes + stats[iif].txBytes < limit[iif])
-DEFINE_BPF_MAP_GRW(tether_limit_map, HASH, uint32_t, uint64_t, 16, AID_NETWORK_STACK)
-
-static inline __always_inline int do_forward(struct __sk_buff* skb, bool is_ethernet) {
-    int l2_header_size = is_ethernet ? sizeof(struct ethhdr) : 0;
-    void* data = (void*)(long)skb->data;
-    const void* data_end = (void*)(long)skb->data_end;
-    struct ethhdr* eth = is_ethernet ? data : NULL;  // used iff is_ethernet
-    struct ipv6hdr* ip6 = is_ethernet ? (void*)(eth + 1) : data;
-
-    // Must be meta-ethernet IPv6 frame
-    if (skb->protocol != htons(ETH_P_IPV6)) return TC_ACT_OK;
-
-    // Must have (ethernet and) ipv6 header
-    if (data + l2_header_size + sizeof(*ip6) > data_end) return TC_ACT_OK;
-
-    // Ethertype - if present - must be IPv6
-    if (is_ethernet && (eth->h_proto != htons(ETH_P_IPV6))) return TC_ACT_OK;
-
-    // IP version must be 6
-    if (ip6->version != 6) return TC_ACT_OK;
-
-    // Cannot decrement during forward if already zero or would be zero,
-    // Let the kernel's stack handle these cases and generate appropriate ICMP errors.
-    if (ip6->hop_limit <= 1) return TC_ACT_OK;
-
-    // Protect against forwarding packets sourced from ::1 or fe80::/64 or other weirdness.
-    __be32 src32 = ip6->saddr.s6_addr32[0];
-    if (src32 != htonl(0x0064ff9b) &&                        // 64:ff9b:/32 incl. XLAT464 WKP
-        (src32 & htonl(0xe0000000)) != htonl(0x20000000))    // 2000::/3 Global Unicast
-        return TC_ACT_OK;
-
-    TetherIngressKey k = {
-            .iif = skb->ifindex,
-            .neigh6 = ip6->daddr,
-    };
-
-    TetherIngressValue* v = bpf_tether_ingress_map_lookup_elem(&k);
-
-    // If we don't find any offload information then simply let the core stack handle it...
-    if (!v) return TC_ACT_OK;
-
-    uint32_t stat_and_limit_k = skb->ifindex;
-
-    TetherStatsValue* stat_v = bpf_tether_stats_map_lookup_elem(&stat_and_limit_k);
-
-    // If we don't have anywhere to put stats, then abort...
-    if (!stat_v) return TC_ACT_OK;
-
-    uint64_t* limit_v = bpf_tether_limit_map_lookup_elem(&stat_and_limit_k);
-
-    // If we don't have a limit, then abort...
-    if (!limit_v) return TC_ACT_OK;
-
-    // Required IPv6 minimum mtu is 1280, below that not clear what we should do, abort...
-    const int pmtu = v->pmtu;
-    if (pmtu < IPV6_MIN_MTU) return TC_ACT_OK;
-
-    // Approximate handling of TCP/IPv6 overhead for incoming LRO/GRO packets: default
-    // outbound path mtu of 1500 is not necessarily correct, but worst case we simply
-    // undercount, which is still better then not accounting for this overhead at all.
-    // Note: this really shouldn't be device/path mtu at all, but rather should be
-    // derived from this particular connection's mss (ie. from gro segment size).
-    // This would require a much newer kernel with newer ebpf accessors.
-    // (This is also blindly assuming 12 bytes of tcp timestamp option in tcp header)
-    uint64_t packets = 1;
-    uint64_t bytes = skb->len;
-    if (bytes > pmtu) {
-        const int tcp_overhead = sizeof(struct ipv6hdr) + sizeof(struct tcphdr) + 12;
-        const int mss = pmtu - tcp_overhead;
-        const uint64_t payload = bytes - tcp_overhead;
-        packets = (payload + mss - 1) / mss;
-        bytes = tcp_overhead * packets + payload;
-    }
-
-    // Are we past the limit?  If so, then abort...
-    // Note: will not overflow since u64 is 936 years even at 5Gbps.
-    // Do not drop here.  Offload is just that, whenever we fail to handle
-    // a packet we let the core stack deal with things.
-    // (The core stack needs to handle limits correctly anyway,
-    // since we don't offload all traffic in both directions)
-    if (stat_v->rxBytes + stat_v->txBytes + bytes > *limit_v) return TC_ACT_OK;
-
-    if (!is_ethernet) {
-        is_ethernet = true;
-        l2_header_size = sizeof(struct ethhdr);
-        // Try to inject an ethernet header, and simply return if we fail
-        if (bpf_skb_change_head(skb, l2_header_size, /*flags*/ 0)) {
-            __sync_fetch_and_add(&stat_v->rxErrors, 1);
-            return TC_ACT_OK;
-        }
-
-        // bpf_skb_change_head() invalidates all pointers - reload them
-        data = (void*)(long)skb->data;
-        data_end = (void*)(long)skb->data_end;
-        eth = data;
-        ip6 = (void*)(eth + 1);
-
-        // I do not believe this can ever happen, but keep the verifier happy...
-        if (data + l2_header_size + sizeof(*ip6) > data_end) {
-            __sync_fetch_and_add(&stat_v->rxErrors, 1);
-            return TC_ACT_SHOT;
-        }
-    };
-
-    // CHECKSUM_COMPLETE is a 16-bit one's complement sum,
-    // thus corrections for it need to be done in 16-byte chunks at even offsets.
-    // IPv6 nexthdr is at offset 6, while hop limit is at offset 7
-    uint8_t old_hl = ip6->hop_limit;
-    --ip6->hop_limit;
-    uint8_t new_hl = ip6->hop_limit;
-
-    // bpf_csum_update() always succeeds if the skb is CHECKSUM_COMPLETE and returns an error
-    // (-ENOTSUPP) if it isn't.
-    bpf_csum_update(skb, 0xFFFF - ntohs(old_hl) + ntohs(new_hl));
-
-    __sync_fetch_and_add(&stat_v->rxPackets, packets);
-    __sync_fetch_and_add(&stat_v->rxBytes, bytes);
-
-    // Overwrite any mac header with the new one
-    *eth = v->macHeader;
-
-    // Redirect to forwarded interface.
-    //
-    // Note that bpf_redirect() cannot fail unless you pass invalid flags.
-    // The redirect actually happens after the ebpf program has already terminated,
-    // and can fail for example for mtu reasons at that point in time, but there's nothing
-    // we can do about it here.
-    return bpf_redirect(v->oif, 0 /* this is effectively BPF_F_EGRESS */);
-}
-
-SEC("schedcls/ingress/tether_ether")
-int sched_cls_ingress_tether_ether(struct __sk_buff* skb) {
-    return do_forward(skb, true);
-}
-
-// Note: section names must be unique to prevent programs from appending to each other,
-// so instead the bpf loader will strip everything past the final $ symbol when actually
-// pinning the program into the filesystem.
-//
-// bpf_skb_change_head() is only present on 4.14+ and 2 trivial kernel patches are needed:
-//   ANDROID: net: bpf: Allow TC programs to call BPF_FUNC_skb_change_head
-//   ANDROID: net: bpf: permit redirect from ingress L3 to egress L2 devices at near max mtu
-// (the first of those has already been upstreamed)
-//
-// 5.4 kernel support was only added to Android Common Kernel in R,
-// and thus a 5.4 kernel always supports this.
-//
-// Hence, this mandatory (must load successfully) implementation for 5.4+ kernels:
-DEFINE_BPF_PROG_KVER("schedcls/ingress/tether_rawip$5_4", AID_ROOT, AID_ROOT,
-                     sched_cls_ingress_tether_rawip_5_4, KVER(5, 4, 0))
-(struct __sk_buff* skb) {
-    return do_forward(skb, false);
-}
-
-// and this identical optional (may fail to load) implementation for [4.14..5.4) patched kernels:
-DEFINE_OPTIONAL_BPF_PROG_KVER_RANGE("schedcls/ingress/tether_rawip$4_14", AID_ROOT, AID_ROOT,
-                                    sched_cls_ingress_tether_rawip_4_14, KVER(4, 14, 0),
-                                    KVER(5, 4, 0))
-(struct __sk_buff* skb) {
-    return do_forward(skb, false);
-}
-
-// and define a no-op stub for [4.9,4.14) and unpatched [4.14,5.4) kernels.
-// (if the above real 4.14+ program loaded successfully, then bpfloader will have already pinned
-// it at the same location this one would be pinned at and will thus skip loading this stub)
-DEFINE_BPF_PROG_KVER_RANGE("schedcls/ingress/tether_rawip$stub", AID_ROOT, AID_ROOT,
-                           sched_cls_ingress_tether_rawip_stub, KVER_NONE, KVER(5, 4, 0))
-(struct __sk_buff* skb) {
-    return TC_ACT_OK;
-}
-
-LICENSE("Apache 2.0");
-CRITICAL("netd");
diff --git a/packages/Tethering/common/TetheringLib/Android.bp b/packages/Tethering/common/TetheringLib/Android.bp
deleted file mode 100644
index bf643cd..0000000
--- a/packages/Tethering/common/TetheringLib/Android.bp
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// Copyright (C) 2019 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-java_sdk_library {
-    name: "framework-tethering",
-    defaults: ["framework-module-defaults"],
-    impl_library_visibility: ["//frameworks/base/packages/Tethering:__subpackages__"],
-
-    srcs: [":framework-tethering-srcs"],
-
-    jarjar_rules: "jarjar-rules.txt",
-    installable: true,
-
-    hostdex: true, // for hiddenapi check
-    apex_available: ["com.android.tethering"],
-    permitted_packages: ["android.net"],
-}
-
-filegroup {
-    name: "framework-tethering-srcs",
-    srcs: [
-        "src/android/net/TetheredClient.aidl",
-        "src/android/net/TetheredClient.java",
-        "src/android/net/TetheringManager.java",
-        "src/android/net/TetheringConstants.java",
-        "src/android/net/IIntResultListener.aidl",
-        "src/android/net/ITetheringEventCallback.aidl",
-        "src/android/net/ITetheringConnector.aidl",
-        "src/android/net/TetheringCallbackStartedParcel.aidl",
-        "src/android/net/TetheringConfigurationParcel.aidl",
-        "src/android/net/TetheringRequestParcel.aidl",
-        "src/android/net/TetherStatesParcel.aidl",
-    ],
-    path: "src"
-}
diff --git a/packages/Tethering/common/TetheringLib/api/current.txt b/packages/Tethering/common/TetheringLib/api/current.txt
deleted file mode 100644
index d802177..0000000
--- a/packages/Tethering/common/TetheringLib/api/current.txt
+++ /dev/null
@@ -1 +0,0 @@
-// Signature format: 2.0
diff --git a/packages/Tethering/common/TetheringLib/api/module-lib-current.txt b/packages/Tethering/common/TetheringLib/api/module-lib-current.txt
deleted file mode 100644
index 6ddb122..0000000
--- a/packages/Tethering/common/TetheringLib/api/module-lib-current.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-// Signature format: 2.0
-package android.net {
-
-  public final class TetheringConstants {
-    field public static final String EXTRA_ADD_TETHER_TYPE = "extraAddTetherType";
-    field public static final String EXTRA_PROVISION_CALLBACK = "extraProvisionCallback";
-    field public static final String EXTRA_REM_TETHER_TYPE = "extraRemTetherType";
-    field public static final String EXTRA_RUN_PROVISION = "extraRunProvision";
-    field public static final String EXTRA_SET_ALARM = "extraSetAlarm";
-  }
-
-  public class TetheringManager {
-    ctor public TetheringManager(@NonNull android.content.Context, @NonNull java.util.function.Supplier<android.os.IBinder>);
-    method public int getLastTetherError(@NonNull String);
-    method @NonNull public String[] getTetherableBluetoothRegexs();
-    method @NonNull public String[] getTetherableIfaces();
-    method @NonNull public String[] getTetherableUsbRegexs();
-    method @NonNull public String[] getTetherableWifiRegexs();
-    method @NonNull public String[] getTetheredIfaces();
-    method @NonNull public String[] getTetheringErroredIfaces();
-    method public boolean isTetheringSupported();
-    method public boolean isTetheringSupported(@NonNull String);
-    method public void requestLatestTetheringEntitlementResult(int, @NonNull android.os.ResultReceiver, boolean);
-    method @Deprecated public int setUsbTethering(boolean);
-    method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public void startTethering(int, @NonNull java.util.concurrent.Executor, @NonNull android.net.TetheringManager.StartTetheringCallback);
-    method @Deprecated public int tether(@NonNull String);
-    method @Deprecated public int untether(@NonNull String);
-  }
-
-  public static interface TetheringManager.TetheringEventCallback {
-    method public default void onTetherableInterfaceRegexpsChanged(@NonNull android.net.TetheringManager.TetheringInterfaceRegexps);
-  }
-
-  public static class TetheringManager.TetheringInterfaceRegexps {
-    method @NonNull public java.util.List<java.lang.String> getTetherableBluetoothRegexs();
-    method @NonNull public java.util.List<java.lang.String> getTetherableUsbRegexs();
-    method @NonNull public java.util.List<java.lang.String> getTetherableWifiRegexs();
-  }
-
-}
-
diff --git a/packages/Tethering/common/TetheringLib/api/module-lib-removed.txt b/packages/Tethering/common/TetheringLib/api/module-lib-removed.txt
deleted file mode 100644
index d802177..0000000
--- a/packages/Tethering/common/TetheringLib/api/module-lib-removed.txt
+++ /dev/null
@@ -1 +0,0 @@
-// Signature format: 2.0
diff --git a/packages/Tethering/common/TetheringLib/api/removed.txt b/packages/Tethering/common/TetheringLib/api/removed.txt
deleted file mode 100644
index d802177..0000000
--- a/packages/Tethering/common/TetheringLib/api/removed.txt
+++ /dev/null
@@ -1 +0,0 @@
-// Signature format: 2.0
diff --git a/packages/Tethering/common/TetheringLib/api/system-current.txt b/packages/Tethering/common/TetheringLib/api/system-current.txt
deleted file mode 100644
index edd1ebb..0000000
--- a/packages/Tethering/common/TetheringLib/api/system-current.txt
+++ /dev/null
@@ -1,99 +0,0 @@
-// Signature format: 2.0
-package android.net {
-
-  public final class TetheredClient implements android.os.Parcelable {
-    ctor public TetheredClient(@NonNull android.net.MacAddress, @NonNull java.util.Collection<android.net.TetheredClient.AddressInfo>, int);
-    method public int describeContents();
-    method @NonNull public java.util.List<android.net.TetheredClient.AddressInfo> getAddresses();
-    method @NonNull public android.net.MacAddress getMacAddress();
-    method public int getTetheringType();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.TetheredClient> CREATOR;
-  }
-
-  public static final class TetheredClient.AddressInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.net.LinkAddress getAddress();
-    method @Nullable public String getHostname();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.TetheredClient.AddressInfo> CREATOR;
-  }
-
-  public class TetheringManager {
-    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerTetheringEventCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.TetheringManager.TetheringEventCallback);
-    method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public void requestLatestTetheringEntitlementResult(int, boolean, @NonNull java.util.concurrent.Executor, @NonNull android.net.TetheringManager.OnTetheringEntitlementResultListener);
-    method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public void startTethering(@NonNull android.net.TetheringManager.TetheringRequest, @NonNull java.util.concurrent.Executor, @NonNull android.net.TetheringManager.StartTetheringCallback);
-    method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public void stopAllTethering();
-    method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public void stopTethering(int);
-    method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.ACCESS_NETWORK_STATE}) public void unregisterTetheringEventCallback(@NonNull android.net.TetheringManager.TetheringEventCallback);
-    field public static final String ACTION_TETHER_STATE_CHANGED = "android.net.conn.TETHER_STATE_CHANGED";
-    field public static final String EXTRA_ACTIVE_LOCAL_ONLY = "android.net.extra.ACTIVE_LOCAL_ONLY";
-    field public static final String EXTRA_ACTIVE_TETHER = "tetherArray";
-    field public static final String EXTRA_AVAILABLE_TETHER = "availableArray";
-    field public static final String EXTRA_ERRORED_TETHER = "erroredArray";
-    field public static final int TETHERING_BLUETOOTH = 2; // 0x2
-    field public static final int TETHERING_ETHERNET = 5; // 0x5
-    field public static final int TETHERING_INVALID = -1; // 0xffffffff
-    field public static final int TETHERING_NCM = 4; // 0x4
-    field public static final int TETHERING_USB = 1; // 0x1
-    field public static final int TETHERING_WIFI = 0; // 0x0
-    field public static final int TETHERING_WIFI_P2P = 3; // 0x3
-    field public static final int TETHER_ERROR_DHCPSERVER_ERROR = 12; // 0xc
-    field public static final int TETHER_ERROR_DISABLE_FORWARDING_ERROR = 9; // 0x9
-    field public static final int TETHER_ERROR_ENABLE_FORWARDING_ERROR = 8; // 0x8
-    field public static final int TETHER_ERROR_ENTITLEMENT_UNKNOWN = 13; // 0xd
-    field public static final int TETHER_ERROR_IFACE_CFG_ERROR = 10; // 0xa
-    field public static final int TETHER_ERROR_INTERNAL_ERROR = 5; // 0x5
-    field public static final int TETHER_ERROR_NO_ACCESS_TETHERING_PERMISSION = 15; // 0xf
-    field public static final int TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION = 14; // 0xe
-    field public static final int TETHER_ERROR_NO_ERROR = 0; // 0x0
-    field public static final int TETHER_ERROR_PROVISIONING_FAILED = 11; // 0xb
-    field public static final int TETHER_ERROR_SERVICE_UNAVAIL = 2; // 0x2
-    field public static final int TETHER_ERROR_TETHER_IFACE_ERROR = 6; // 0x6
-    field public static final int TETHER_ERROR_UNAVAIL_IFACE = 4; // 0x4
-    field public static final int TETHER_ERROR_UNKNOWN_IFACE = 1; // 0x1
-    field public static final int TETHER_ERROR_UNKNOWN_TYPE = 16; // 0x10
-    field public static final int TETHER_ERROR_UNSUPPORTED = 3; // 0x3
-    field public static final int TETHER_ERROR_UNTETHER_IFACE_ERROR = 7; // 0x7
-    field public static final int TETHER_HARDWARE_OFFLOAD_FAILED = 2; // 0x2
-    field public static final int TETHER_HARDWARE_OFFLOAD_STARTED = 1; // 0x1
-    field public static final int TETHER_HARDWARE_OFFLOAD_STOPPED = 0; // 0x0
-  }
-
-  public static interface TetheringManager.OnTetheringEntitlementResultListener {
-    method public void onTetheringEntitlementResult(int);
-  }
-
-  public static interface TetheringManager.StartTetheringCallback {
-    method public default void onTetheringFailed(int);
-    method public default void onTetheringStarted();
-  }
-
-  public static interface TetheringManager.TetheringEventCallback {
-    method public default void onClientsChanged(@NonNull java.util.Collection<android.net.TetheredClient>);
-    method public default void onError(@NonNull String, int);
-    method public default void onOffloadStatusChanged(int);
-    method public default void onTetherableInterfacesChanged(@NonNull java.util.List<java.lang.String>);
-    method public default void onTetheredInterfacesChanged(@NonNull java.util.List<java.lang.String>);
-    method public default void onTetheringSupported(boolean);
-    method public default void onUpstreamChanged(@Nullable android.net.Network);
-  }
-
-  public static class TetheringManager.TetheringRequest {
-    method @Nullable public android.net.LinkAddress getClientStaticIpv4Address();
-    method @Nullable public android.net.LinkAddress getLocalIpv4Address();
-    method public boolean getShouldShowEntitlementUi();
-    method public int getTetheringType();
-    method public boolean isExemptFromEntitlementCheck();
-  }
-
-  public static class TetheringManager.TetheringRequest.Builder {
-    ctor public TetheringManager.TetheringRequest.Builder(int);
-    method @NonNull public android.net.TetheringManager.TetheringRequest build();
-    method @NonNull @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public android.net.TetheringManager.TetheringRequest.Builder setExemptFromEntitlementCheck(boolean);
-    method @NonNull @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public android.net.TetheringManager.TetheringRequest.Builder setShouldShowEntitlementUi(boolean);
-    method @NonNull @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public android.net.TetheringManager.TetheringRequest.Builder setStaticIpv4Addresses(@NonNull android.net.LinkAddress, @NonNull android.net.LinkAddress);
-  }
-
-}
-
diff --git a/packages/Tethering/common/TetheringLib/api/system-removed.txt b/packages/Tethering/common/TetheringLib/api/system-removed.txt
deleted file mode 100644
index d802177..0000000
--- a/packages/Tethering/common/TetheringLib/api/system-removed.txt
+++ /dev/null
@@ -1 +0,0 @@
-// Signature format: 2.0
diff --git a/packages/Tethering/common/TetheringLib/jarjar-rules.txt b/packages/Tethering/common/TetheringLib/jarjar-rules.txt
deleted file mode 100644
index e459fad..0000000
--- a/packages/Tethering/common/TetheringLib/jarjar-rules.txt
+++ /dev/null
@@ -1 +0,0 @@
-# jarjar rules for the bootclasspath tethering framework library here
\ No newline at end of file
diff --git a/packages/Tethering/common/TetheringLib/src/android/net/IIntResultListener.aidl b/packages/Tethering/common/TetheringLib/src/android/net/IIntResultListener.aidl
deleted file mode 100644
index c3d66ee..0000000
--- a/packages/Tethering/common/TetheringLib/src/android/net/IIntResultListener.aidl
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net;
-
-/**
- * Listener interface allowing objects to listen to various module event.
- * {@hide}
- */
-oneway interface IIntResultListener {
-    void onResult(int resultCode);
-}
diff --git a/packages/Tethering/common/TetheringLib/src/android/net/ITetheringConnector.aidl b/packages/Tethering/common/TetheringLib/src/android/net/ITetheringConnector.aidl
deleted file mode 100644
index cf094aa..0000000
--- a/packages/Tethering/common/TetheringLib/src/android/net/ITetheringConnector.aidl
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.net;
-
-import android.net.IIntResultListener;
-import android.net.ITetheringEventCallback;
-import android.net.TetheringRequestParcel;
-import android.os.ResultReceiver;
-
-/** @hide */
-oneway interface ITetheringConnector {
-    void tether(String iface, String callerPkg, String callingAttributionTag,
-            IIntResultListener receiver);
-
-    void untether(String iface, String callerPkg, String callingAttributionTag,
-            IIntResultListener receiver);
-
-    void setUsbTethering(boolean enable, String callerPkg,
-            String callingAttributionTag, IIntResultListener receiver);
-
-    void startTethering(in TetheringRequestParcel request, String callerPkg,
-            String callingAttributionTag, IIntResultListener receiver);
-
-    void stopTethering(int type, String callerPkg, String callingAttributionTag,
-            IIntResultListener receiver);
-
-    void requestLatestTetheringEntitlementResult(int type, in ResultReceiver receiver,
-            boolean showEntitlementUi, String callerPkg, String callingAttributionTag);
-
-    void registerTetheringEventCallback(ITetheringEventCallback callback, String callerPkg);
-
-    void unregisterTetheringEventCallback(ITetheringEventCallback callback, String callerPkg);
-
-    void isTetheringSupported(String callerPkg, String callingAttributionTag,
-            IIntResultListener receiver);
-
-    void stopAllTethering(String callerPkg, String callingAttributionTag,
-            IIntResultListener receiver);
-}
diff --git a/packages/Tethering/common/TetheringLib/src/android/net/ITetheringEventCallback.aidl b/packages/Tethering/common/TetheringLib/src/android/net/ITetheringEventCallback.aidl
deleted file mode 100644
index b4e3ba4..0000000
--- a/packages/Tethering/common/TetheringLib/src/android/net/ITetheringEventCallback.aidl
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net;
-
-import android.net.Network;
-import android.net.TetheredClient;
-import android.net.TetheringConfigurationParcel;
-import android.net.TetheringCallbackStartedParcel;
-import android.net.TetherStatesParcel;
-
-/**
- * Callback class for receiving tethering changed events.
- * @hide
- */
-oneway interface ITetheringEventCallback
-{
-    /** Called immediately after the callbacks are registered */
-    void onCallbackStarted(in TetheringCallbackStartedParcel parcel);
-    void onCallbackStopped(int errorCode);
-    void onUpstreamChanged(in Network network);
-    void onConfigurationChanged(in TetheringConfigurationParcel config);
-    void onTetherStatesChanged(in TetherStatesParcel states);
-    void onTetherClientsChanged(in List<TetheredClient> clients);
-    void onOffloadStatusChanged(int status);
-}
diff --git a/packages/Tethering/common/TetheringLib/src/android/net/TetherStatesParcel.aidl b/packages/Tethering/common/TetheringLib/src/android/net/TetherStatesParcel.aidl
deleted file mode 100644
index 3d842b3..0000000
--- a/packages/Tethering/common/TetheringLib/src/android/net/TetherStatesParcel.aidl
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net;
-
-/**
- * Status details for tethering downstream interfaces.
- * {@hide}
- */
-parcelable TetherStatesParcel {
-    String[] availableList;
-    String[] tetheredList;
-    String[] localOnlyList;
-    String[] erroredIfaceList;
-    // List of Last error code corresponding to each errored iface in erroredIfaceList. */
-    // TODO: Improve this as b/143122247.
-    int[] lastErrorList;
-}
diff --git a/packages/Tethering/common/TetheringLib/src/android/net/TetheredClient.aidl b/packages/Tethering/common/TetheringLib/src/android/net/TetheredClient.aidl
deleted file mode 100644
index 0b279b8..0000000
--- a/packages/Tethering/common/TetheringLib/src/android/net/TetheredClient.aidl
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.net;
-
-@JavaOnlyStableParcelable parcelable TetheredClient;
\ No newline at end of file
diff --git a/packages/Tethering/common/TetheringLib/src/android/net/TetheredClient.java b/packages/Tethering/common/TetheringLib/src/android/net/TetheredClient.java
deleted file mode 100644
index 645b000..0000000
--- a/packages/Tethering/common/TetheringLib/src/android/net/TetheredClient.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.annotation.SystemApi;
-import android.annotation.TestApi;
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Objects;
-
-/**
- * Information on a tethered downstream client.
- * @hide
- */
-@SystemApi
-@TestApi
-public final class TetheredClient implements Parcelable {
-    @NonNull
-    private final MacAddress mMacAddress;
-    @NonNull
-    private final List<AddressInfo> mAddresses;
-    // TODO: use an @IntDef here
-    private final int mTetheringType;
-
-    public TetheredClient(@NonNull MacAddress macAddress,
-            @NonNull Collection<AddressInfo> addresses, int tetheringType) {
-        mMacAddress = macAddress;
-        mAddresses = new ArrayList<>(addresses);
-        mTetheringType = tetheringType;
-    }
-
-    private TetheredClient(@NonNull Parcel in) {
-        this(in.readParcelable(null), in.createTypedArrayList(AddressInfo.CREATOR), in.readInt());
-    }
-
-    @Override
-    public void writeToParcel(@NonNull Parcel dest, int flags) {
-        dest.writeParcelable(mMacAddress, flags);
-        dest.writeTypedList(mAddresses);
-        dest.writeInt(mTetheringType);
-    }
-
-    /**
-     * Get the MAC address used to identify the client.
-     */
-    @NonNull
-    public MacAddress getMacAddress() {
-        return mMacAddress;
-    }
-
-    /**
-     * Get information on the list of addresses that are associated with the client.
-     */
-    @NonNull
-    public List<AddressInfo> getAddresses() {
-        return new ArrayList<>(mAddresses);
-    }
-
-    /**
-     * Get the type of tethering used by the client.
-     * @return one of the {@code TetheringManager#TETHERING_*} constants.
-     */
-    public int getTetheringType() {
-        return mTetheringType;
-    }
-
-    /**
-     * Return a new {@link TetheredClient} that has all the attributes of this instance, plus the
-     * {@link AddressInfo} of the provided {@link TetheredClient}.
-     *
-     * <p>Duplicate addresses are removed.
-     * @hide
-     */
-    public TetheredClient addAddresses(@NonNull TetheredClient other) {
-        final LinkedHashSet<AddressInfo> newAddresses = new LinkedHashSet<>(
-                mAddresses.size() + other.mAddresses.size());
-        newAddresses.addAll(mAddresses);
-        newAddresses.addAll(other.mAddresses);
-        return new TetheredClient(mMacAddress, newAddresses, mTetheringType);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(mMacAddress, mAddresses, mTetheringType);
-    }
-
-    @Override
-    public boolean equals(@Nullable Object obj) {
-        if (!(obj instanceof TetheredClient)) return false;
-        final TetheredClient other = (TetheredClient) obj;
-        return mMacAddress.equals(other.mMacAddress)
-                && mAddresses.equals(other.mAddresses)
-                && mTetheringType == other.mTetheringType;
-    }
-
-    /**
-     * Information on an lease assigned to a tethered client.
-     */
-    public static final class AddressInfo implements Parcelable {
-        @NonNull
-        private final LinkAddress mAddress;
-        @Nullable
-        private final String mHostname;
-
-        /** @hide */
-        public AddressInfo(@NonNull LinkAddress address, @Nullable String hostname) {
-            this.mAddress = address;
-            this.mHostname = hostname;
-        }
-
-        private AddressInfo(Parcel in) {
-            this(in.readParcelable(null),  in.readString());
-        }
-
-        @Override
-        public void writeToParcel(@NonNull Parcel dest, int flags) {
-            dest.writeParcelable(mAddress, flags);
-            dest.writeString(mHostname);
-        }
-
-        /**
-         * Get the link address (including prefix length and lifetime) used by the client.
-         *
-         * This may be an IPv4 or IPv6 address.
-         */
-        @NonNull
-        public LinkAddress getAddress() {
-            return mAddress;
-        }
-
-        /**
-         * Get the hostname that was advertised by the client when obtaining its address, if any.
-         */
-        @Nullable
-        public String getHostname() {
-            return mHostname;
-        }
-
-        /**
-         * Get the expiration time of the address assigned to the client.
-         * @hide
-         */
-        public long getExpirationTime() {
-            return mAddress.getExpirationTime();
-        }
-
-        @Override
-        public int describeContents() {
-            return 0;
-        }
-
-        @Override
-        public int hashCode() {
-            return Objects.hash(mAddress, mHostname);
-        }
-
-        @Override
-        public boolean equals(@Nullable Object obj) {
-            if (!(obj instanceof AddressInfo)) return false;
-            final AddressInfo other = (AddressInfo) obj;
-            // Use .equals() for addresses as all changes, including address expiry changes,
-            // should be included.
-            return other.mAddress.equals(mAddress)
-                    && Objects.equals(mHostname, other.mHostname);
-        }
-
-        @NonNull
-        public static final Creator<AddressInfo> CREATOR = new Creator<AddressInfo>() {
-            @NonNull
-            @Override
-            public AddressInfo createFromParcel(@NonNull Parcel in) {
-                return new AddressInfo(in);
-            }
-
-            @NonNull
-            @Override
-            public AddressInfo[] newArray(int size) {
-                return new AddressInfo[size];
-            }
-        };
-
-        @NonNull
-        @Override
-        public String toString() {
-            return "AddressInfo {"
-                    + mAddress
-                    + (mHostname != null ? ", hostname " + mHostname : "")
-                    + "}";
-        }
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @NonNull
-    public static final Creator<TetheredClient> CREATOR = new Creator<TetheredClient>() {
-        @NonNull
-        @Override
-        public TetheredClient createFromParcel(@NonNull Parcel in) {
-            return new TetheredClient(in);
-        }
-
-        @NonNull
-        @Override
-        public TetheredClient[] newArray(int size) {
-            return new TetheredClient[size];
-        }
-    };
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "TetheredClient {hwAddr " + mMacAddress
-                + ", addresses " + mAddresses
-                + ", tetheringType " + mTetheringType
-                + "}";
-    }
-}
diff --git a/packages/Tethering/common/TetheringLib/src/android/net/TetheringCallbackStartedParcel.aidl b/packages/Tethering/common/TetheringLib/src/android/net/TetheringCallbackStartedParcel.aidl
deleted file mode 100644
index 253eacb..0000000
--- a/packages/Tethering/common/TetheringLib/src/android/net/TetheringCallbackStartedParcel.aidl
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net;
-
-import android.net.Network;
-import android.net.TetheredClient;
-import android.net.TetheringConfigurationParcel;
-import android.net.TetherStatesParcel;
-
-/**
- * Initial information reported by tethering upon callback registration.
- * @hide
- */
-parcelable TetheringCallbackStartedParcel {
-    boolean tetheringSupported;
-    Network upstreamNetwork;
-    TetheringConfigurationParcel config;
-    TetherStatesParcel states;
-    List<TetheredClient> tetheredClients;
-    int offloadStatus;
-}
diff --git a/packages/Tethering/common/TetheringLib/src/android/net/TetheringConfigurationParcel.aidl b/packages/Tethering/common/TetheringLib/src/android/net/TetheringConfigurationParcel.aidl
deleted file mode 100644
index 89f3813..0000000
--- a/packages/Tethering/common/TetheringLib/src/android/net/TetheringConfigurationParcel.aidl
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net;
-
-/**
- * Configuration details for tethering.
- * @hide
- */
-parcelable TetheringConfigurationParcel {
-    int subId;
-    String[] tetherableUsbRegexs;
-    String[] tetherableWifiRegexs;
-    String[] tetherableBluetoothRegexs;
-    boolean isDunRequired;
-    boolean chooseUpstreamAutomatically;
-    int[] preferredUpstreamIfaceTypes;
-    String[] legacyDhcpRanges;
-    String[] defaultIPv4DNS;
-    boolean enableLegacyDhcpServer;
-    String[] provisioningApp;
-    String provisioningAppNoUi;
-    int provisioningCheckPeriod;
-}
diff --git a/packages/Tethering/common/TetheringLib/src/android/net/TetheringConstants.java b/packages/Tethering/common/TetheringLib/src/android/net/TetheringConstants.java
deleted file mode 100644
index f14def6a..0000000
--- a/packages/Tethering/common/TetheringLib/src/android/net/TetheringConstants.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net;
-
-import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
-
-import android.annotation.SystemApi;
-import android.os.ResultReceiver;
-
-/**
- * Collections of constants for internal tethering usage.
- *
- * <p>These hidden constants are not in TetheringManager as they are not part of the API stubs
- * generated for TetheringManager, which prevents the tethering module from linking them at
- * build time.
- * TODO: investigate changing the tethering build rules so that Tethering can reference hidden
- * symbols from framework-tethering even when they are in a non-hidden class.
- * @hide
- */
-@SystemApi(client = MODULE_LIBRARIES)
-public final class TetheringConstants {
-    /** An explicit private class to avoid exposing constructor.*/
-    private TetheringConstants() { }
-
-    /**
-     * Extra used for communicating with the TetherService and TetherProvisioningActivity.
-     * Includes the type of tethering to enable if any.
-     */
-    public static final String EXTRA_ADD_TETHER_TYPE = "extraAddTetherType";
-    /**
-     * Extra used for communicating with the TetherService. Includes the type of tethering for
-     * which to cancel provisioning.
-     */
-    public static final String EXTRA_REM_TETHER_TYPE = "extraRemTetherType";
-    /**
-     * Extra used for communicating with the TetherService. True to schedule a recheck of tether
-     * provisioning.
-     */
-    public static final String EXTRA_SET_ALARM = "extraSetAlarm";
-    /**
-     * Tells the TetherService to run a provision check now.
-     */
-    public static final String EXTRA_RUN_PROVISION = "extraRunProvision";
-    /**
-     * Extra used for communicating with the TetherService and TetherProvisioningActivity.
-     * Contains the {@link ResultReceiver} which will receive provisioning results.
-     * Can not be empty.
-     */
-    public static final String EXTRA_PROVISION_CALLBACK = "extraProvisionCallback";
-
-    /**
-     * Extra used for communicating with the TetherService and TetherProvisioningActivity.
-     * Contains the subId of current active cellular upstream.
-     * @hide
-     */
-    public static final String EXTRA_TETHER_SUBID = "android.net.extra.TETHER_SUBID";
-
-    /**
-     * Extra used for telling TetherProvisioningActivity the entitlement package name and class
-     * name to start UI entitlement check.
-     * @hide
-     */
-    public static final String EXTRA_TETHER_UI_PROVISIONING_APP_NAME =
-            "android.net.extra.TETHER_UI_PROVISIONING_APP_NAME";
-
-    /**
-     * Extra used for telling TetherService the intent action to start silent entitlement check.
-     * @hide
-     */
-    public static final String EXTRA_TETHER_SILENT_PROVISIONING_ACTION =
-            "android.net.extra.TETHER_SILENT_PROVISIONING_ACTION";
-
-    /**
-     * Extra used for TetherService to receive the response of provisioning check.
-     * @hide
-     */
-    public static final String EXTRA_TETHER_PROVISIONING_RESPONSE =
-            "android.net.extra.TETHER_PROVISIONING_RESPONSE";
-}
diff --git a/packages/Tethering/common/TetheringLib/src/android/net/TetheringManager.java b/packages/Tethering/common/TetheringLib/src/android/net/TetheringManager.java
deleted file mode 100644
index 88e0b42..0000000
--- a/packages/Tethering/common/TetheringLib/src/android/net/TetheringManager.java
+++ /dev/null
@@ -1,1366 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.net;
-
-import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
-
-import android.Manifest;
-import android.annotation.IntDef;
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.annotation.RequiresPermission;
-import android.annotation.SystemApi;
-import android.annotation.TestApi;
-import android.content.Context;
-import android.os.Bundle;
-import android.os.ConditionVariable;
-import android.os.IBinder;
-import android.os.RemoteException;
-import android.os.ResultReceiver;
-import android.util.ArrayMap;
-import android.util.Log;
-
-import com.android.internal.annotations.GuardedBy;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Objects;
-import java.util.concurrent.Executor;
-import java.util.function.Supplier;
-
-/**
- * This class provides the APIs to control the tethering service.
- * <p> The primary responsibilities of this class are to provide the APIs for applications to
- * start tethering, stop tethering, query configuration and query status.
- *
- * @hide
- */
-@SystemApi
-@TestApi
-public class TetheringManager {
-    private static final String TAG = TetheringManager.class.getSimpleName();
-    private static final int DEFAULT_TIMEOUT_MS = 60_000;
-    private static final long CONNECTOR_POLL_INTERVAL_MILLIS = 200L;
-
-    @GuardedBy("mConnectorWaitQueue")
-    @Nullable
-    private ITetheringConnector mConnector;
-    @GuardedBy("mConnectorWaitQueue")
-    @NonNull
-    private final List<ConnectorConsumer> mConnectorWaitQueue = new ArrayList<>();
-    private final Supplier<IBinder> mConnectorSupplier;
-
-    private final TetheringCallbackInternal mCallback;
-    private final Context mContext;
-    private final ArrayMap<TetheringEventCallback, ITetheringEventCallback>
-            mTetheringEventCallbacks = new ArrayMap<>();
-
-    private volatile TetheringConfigurationParcel mTetheringConfiguration;
-    private volatile TetherStatesParcel mTetherStatesParcel;
-
-    /**
-     * Broadcast Action: A tetherable connection has come or gone.
-     * Uses {@code TetheringManager.EXTRA_AVAILABLE_TETHER},
-     * {@code TetheringManager.EXTRA_ACTIVE_LOCAL_ONLY},
-     * {@code TetheringManager.EXTRA_ACTIVE_TETHER}, and
-     * {@code TetheringManager.EXTRA_ERRORED_TETHER} to indicate
-     * the current state of tethering.  Each include a list of
-     * interface names in that state (may be empty).
-     */
-    public static final String ACTION_TETHER_STATE_CHANGED =
-            "android.net.conn.TETHER_STATE_CHANGED";
-
-    /**
-     * gives a String[] listing all the interfaces configured for
-     * tethering and currently available for tethering.
-     */
-    public static final String EXTRA_AVAILABLE_TETHER = "availableArray";
-
-    /**
-     * gives a String[] listing all the interfaces currently in local-only
-     * mode (ie, has DHCPv4+IPv6-ULA support and no packet forwarding)
-     */
-    public static final String EXTRA_ACTIVE_LOCAL_ONLY = "android.net.extra.ACTIVE_LOCAL_ONLY";
-
-    /**
-     * gives a String[] listing all the interfaces currently tethered
-     * (ie, has DHCPv4 support and packets potentially forwarded/NATed)
-     */
-    public static final String EXTRA_ACTIVE_TETHER = "tetherArray";
-
-    /**
-     * gives a String[] listing all the interfaces we tried to tether and
-     * failed.  Use {@link #getLastTetherError} to find the error code
-     * for any interfaces listed here.
-     */
-    public static final String EXTRA_ERRORED_TETHER = "erroredArray";
-
-    /** @hide */
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef(flag = false, value = {
-            TETHERING_WIFI,
-            TETHERING_USB,
-            TETHERING_BLUETOOTH,
-            TETHERING_WIFI_P2P,
-            TETHERING_NCM,
-            TETHERING_ETHERNET,
-    })
-    public @interface TetheringType {
-    }
-
-    /**
-     * Invalid tethering type.
-     * @see #startTethering.
-     */
-    public static final int TETHERING_INVALID   = -1;
-
-    /**
-     * Wifi tethering type.
-     * @see #startTethering.
-     */
-    public static final int TETHERING_WIFI      = 0;
-
-    /**
-     * USB tethering type.
-     * @see #startTethering.
-     */
-    public static final int TETHERING_USB       = 1;
-
-    /**
-     * Bluetooth tethering type.
-     * @see #startTethering.
-     */
-    public static final int TETHERING_BLUETOOTH = 2;
-
-    /**
-     * Wifi P2p tethering type.
-     * Wifi P2p tethering is set through events automatically, and don't
-     * need to start from #startTethering.
-     */
-    public static final int TETHERING_WIFI_P2P = 3;
-
-    /**
-     * Ncm local tethering type.
-     * @see #startTethering(TetheringRequest, Executor, StartTetheringCallback)
-     */
-    public static final int TETHERING_NCM = 4;
-
-    /**
-     * Ethernet tethering type.
-     * @see #startTethering(TetheringRequest, Executor, StartTetheringCallback)
-     */
-    public static final int TETHERING_ETHERNET = 5;
-
-    /**
-     * WIGIG tethering type. Use a separate type to prevent
-     * conflicts with TETHERING_WIFI
-     * This type is only used internally by the tethering module
-     * @hide
-     */
-    public static final int TETHERING_WIGIG = 6;
-
-    /** @hide */
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef(value = {
-            TETHER_ERROR_NO_ERROR,
-            TETHER_ERROR_PROVISIONING_FAILED,
-            TETHER_ERROR_ENTITLEMENT_UNKNOWN,
-    })
-    public @interface EntitlementResult {
-    }
-
-    /** @hide */
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef(value = {
-            TETHER_ERROR_NO_ERROR,
-            TETHER_ERROR_UNKNOWN_IFACE,
-            TETHER_ERROR_SERVICE_UNAVAIL,
-            TETHER_ERROR_INTERNAL_ERROR,
-            TETHER_ERROR_TETHER_IFACE_ERROR,
-            TETHER_ERROR_ENABLE_FORWARDING_ERROR,
-            TETHER_ERROR_DISABLE_FORWARDING_ERROR,
-            TETHER_ERROR_IFACE_CFG_ERROR,
-            TETHER_ERROR_DHCPSERVER_ERROR,
-    })
-    public @interface TetheringIfaceError {
-    }
-
-    /** @hide */
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef(value = {
-            TETHER_ERROR_SERVICE_UNAVAIL,
-            TETHER_ERROR_INTERNAL_ERROR,
-            TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION,
-            TETHER_ERROR_UNKNOWN_TYPE,
-    })
-    public @interface StartTetheringError {
-    }
-
-    public static final int TETHER_ERROR_NO_ERROR = 0;
-    public static final int TETHER_ERROR_UNKNOWN_IFACE = 1;
-    public static final int TETHER_ERROR_SERVICE_UNAVAIL = 2;
-    public static final int TETHER_ERROR_UNSUPPORTED = 3;
-    public static final int TETHER_ERROR_UNAVAIL_IFACE = 4;
-    public static final int TETHER_ERROR_INTERNAL_ERROR = 5;
-    public static final int TETHER_ERROR_TETHER_IFACE_ERROR = 6;
-    public static final int TETHER_ERROR_UNTETHER_IFACE_ERROR = 7;
-    public static final int TETHER_ERROR_ENABLE_FORWARDING_ERROR = 8;
-    public static final int TETHER_ERROR_DISABLE_FORWARDING_ERROR = 9;
-    public static final int TETHER_ERROR_IFACE_CFG_ERROR = 10;
-    public static final int TETHER_ERROR_PROVISIONING_FAILED = 11;
-    public static final int TETHER_ERROR_DHCPSERVER_ERROR = 12;
-    public static final int TETHER_ERROR_ENTITLEMENT_UNKNOWN = 13;
-    public static final int TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION = 14;
-    public static final int TETHER_ERROR_NO_ACCESS_TETHERING_PERMISSION = 15;
-    public static final int TETHER_ERROR_UNKNOWN_TYPE = 16;
-
-    /** @hide */
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef(flag = false, value = {
-            TETHER_HARDWARE_OFFLOAD_STOPPED,
-            TETHER_HARDWARE_OFFLOAD_STARTED,
-            TETHER_HARDWARE_OFFLOAD_FAILED,
-    })
-    public @interface TetherOffloadStatus {
-    }
-
-    /** Tethering offload status is stopped. */
-    public static final int TETHER_HARDWARE_OFFLOAD_STOPPED = 0;
-    /** Tethering offload status is started. */
-    public static final int TETHER_HARDWARE_OFFLOAD_STARTED = 1;
-    /** Fail to start tethering offload. */
-    public static final int TETHER_HARDWARE_OFFLOAD_FAILED = 2;
-
-    /**
-     * Create a TetheringManager object for interacting with the tethering service.
-     *
-     * @param context Context for the manager.
-     * @param connectorSupplier Supplier for the manager connector; may return null while the
-     *                          service is not connected.
-     * {@hide}
-     */
-    @SystemApi(client = MODULE_LIBRARIES)
-    public TetheringManager(@NonNull final Context context,
-            @NonNull Supplier<IBinder> connectorSupplier) {
-        mContext = context;
-        mCallback = new TetheringCallbackInternal();
-        mConnectorSupplier = connectorSupplier;
-
-        final String pkgName = mContext.getOpPackageName();
-
-        final IBinder connector = mConnectorSupplier.get();
-        // If the connector is available on start, do not start a polling thread. This introduces
-        // differences in the thread that sends the oneway binder calls to the service between the
-        // first few seconds after boot and later, but it avoids always having differences between
-        // the first usage of TetheringManager from a process and subsequent usages (so the
-        // difference is only on boot). On boot binder calls may be queued until the service comes
-        // up and be sent from a worker thread; later, they are always sent from the caller thread.
-        // Considering that it's just oneway binder calls, and ordering is preserved, this seems
-        // better than inconsistent behavior persisting after boot.
-        if (connector != null) {
-            mConnector = ITetheringConnector.Stub.asInterface(connector);
-        } else {
-            startPollingForConnector();
-        }
-
-        Log.i(TAG, "registerTetheringEventCallback:" + pkgName);
-        getConnector(c -> c.registerTetheringEventCallback(mCallback, pkgName));
-    }
-
-    private void startPollingForConnector() {
-        new Thread(() -> {
-            while (true) {
-                try {
-                    Thread.sleep(CONNECTOR_POLL_INTERVAL_MILLIS);
-                } catch (InterruptedException e) {
-                    // Not much to do here, the system needs to wait for the connector
-                }
-
-                final IBinder connector = mConnectorSupplier.get();
-                if (connector != null) {
-                    onTetheringConnected(ITetheringConnector.Stub.asInterface(connector));
-                    return;
-                }
-            }
-        }).start();
-    }
-
-    private interface ConnectorConsumer {
-        void onConnectorAvailable(ITetheringConnector connector) throws RemoteException;
-    }
-
-    private void onTetheringConnected(ITetheringConnector connector) {
-        // Process the connector wait queue in order, including any items that are added
-        // while processing.
-        //
-        // 1. Copy the queue to a local variable under lock.
-        // 2. Drain the local queue with the lock released (otherwise, enqueuing future commands
-        //    would block on the lock).
-        // 3. Acquire the lock again. If any new tasks were queued during step 2, goto 1.
-        //    If not, set mConnector to non-null so future tasks are run immediately, not queued.
-        //
-        // For this to work, all calls to the tethering service must use getConnector(), which
-        // ensures that tasks are added to the queue with the lock held.
-        //
-        // Once mConnector is set to non-null, it will never be null again. If the network stack
-        // process crashes, no recovery is possible.
-        // TODO: evaluate whether it is possible to recover from network stack process crashes
-        // (though in most cases the system will have crashed when the network stack process
-        // crashes).
-        do {
-            final List<ConnectorConsumer> localWaitQueue;
-            synchronized (mConnectorWaitQueue) {
-                localWaitQueue = new ArrayList<>(mConnectorWaitQueue);
-                mConnectorWaitQueue.clear();
-            }
-
-            // Allow more tasks to be added at the end without blocking while draining the queue.
-            for (ConnectorConsumer task : localWaitQueue) {
-                try {
-                    task.onConnectorAvailable(connector);
-                } catch (RemoteException e) {
-                    // Most likely the network stack process crashed, which is likely to crash the
-                    // system. Keep processing other requests but report the error loudly.
-                    Log.wtf(TAG, "Error processing request for the tethering connector", e);
-                }
-            }
-
-            synchronized (mConnectorWaitQueue) {
-                if (mConnectorWaitQueue.size() == 0) {
-                    mConnector = connector;
-                    return;
-                }
-            }
-        } while (true);
-    }
-
-    /**
-     * Asynchronously get the ITetheringConnector to execute some operation.
-     *
-     * <p>If the connector is already available, the operation will be executed on the caller's
-     * thread. Otherwise it will be queued and executed on a worker thread. The operation should be
-     * limited to performing oneway binder calls to minimize differences due to threading.
-     */
-    private void getConnector(ConnectorConsumer consumer) {
-        final ITetheringConnector connector;
-        synchronized (mConnectorWaitQueue) {
-            connector = mConnector;
-            if (connector == null) {
-                mConnectorWaitQueue.add(consumer);
-                return;
-            }
-        }
-
-        try {
-            consumer.onConnectorAvailable(connector);
-        } catch (RemoteException e) {
-            throw new IllegalStateException(e);
-        }
-    }
-
-    private interface RequestHelper {
-        void runRequest(ITetheringConnector connector, IIntResultListener listener);
-    }
-
-    // Used to dispatch legacy ConnectivityManager methods that expect tethering to be able to
-    // return results and perform operations synchronously.
-    // TODO: remove once there are no callers of these legacy methods.
-    private class RequestDispatcher {
-        private final ConditionVariable mWaiting;
-        public volatile int mRemoteResult;
-
-        private final IIntResultListener mListener = new IIntResultListener.Stub() {
-                @Override
-                public void onResult(final int resultCode) {
-                    mRemoteResult = resultCode;
-                    mWaiting.open();
-                }
-        };
-
-        RequestDispatcher() {
-            mWaiting = new ConditionVariable();
-        }
-
-        int waitForResult(final RequestHelper request) {
-            getConnector(c -> request.runRequest(c, mListener));
-            if (!mWaiting.block(DEFAULT_TIMEOUT_MS)) {
-                throw new IllegalStateException("Callback timeout");
-            }
-
-            throwIfPermissionFailure(mRemoteResult);
-
-            return mRemoteResult;
-        }
-    }
-
-    private void throwIfPermissionFailure(final int errorCode) {
-        switch (errorCode) {
-            case TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION:
-                throw new SecurityException("No android.permission.TETHER_PRIVILEGED"
-                        + " or android.permission.WRITE_SETTINGS permission");
-            case TETHER_ERROR_NO_ACCESS_TETHERING_PERMISSION:
-                throw new SecurityException(
-                        "No android.permission.ACCESS_NETWORK_STATE permission");
-        }
-    }
-
-    private class TetheringCallbackInternal extends ITetheringEventCallback.Stub {
-        private volatile int mError = TETHER_ERROR_NO_ERROR;
-        private final ConditionVariable mWaitForCallback = new ConditionVariable();
-
-        @Override
-        public void onCallbackStarted(TetheringCallbackStartedParcel parcel) {
-            mTetheringConfiguration = parcel.config;
-            mTetherStatesParcel = parcel.states;
-            mWaitForCallback.open();
-        }
-
-        @Override
-        public void onCallbackStopped(int errorCode) {
-            mError = errorCode;
-            mWaitForCallback.open();
-        }
-
-        @Override
-        public void onUpstreamChanged(Network network) { }
-
-        @Override
-        public void onConfigurationChanged(TetheringConfigurationParcel config) {
-            mTetheringConfiguration = config;
-        }
-
-        @Override
-        public void onTetherStatesChanged(TetherStatesParcel states) {
-            mTetherStatesParcel = states;
-        }
-
-        @Override
-        public void onTetherClientsChanged(List<TetheredClient> clients) { }
-
-        @Override
-        public void onOffloadStatusChanged(int status) { }
-
-        public void waitForStarted() {
-            mWaitForCallback.block(DEFAULT_TIMEOUT_MS);
-            throwIfPermissionFailure(mError);
-        }
-    }
-
-    /**
-     * Attempt to tether the named interface.  This will setup a dhcp server
-     * on the interface, forward and NAT IP v4 packets and forward DNS requests
-     * to the best active upstream network interface.  Note that if no upstream
-     * IP network interface is available, dhcp will still run and traffic will be
-     * allowed between the tethered devices and this device, though upstream net
-     * access will of course fail until an upstream network interface becomes
-     * active.
-     *
-     * @deprecated The only usages is PanService. It uses this for legacy reasons
-     * and will migrate away as soon as possible.
-     *
-     * @param iface the interface name to tether.
-     * @return error a {@code TETHER_ERROR} value indicating success or failure type
-     *
-     * {@hide}
-     */
-    @Deprecated
-    @SystemApi(client = MODULE_LIBRARIES)
-    public int tether(@NonNull final String iface) {
-        final String callerPkg = mContext.getOpPackageName();
-        Log.i(TAG, "tether caller:" + callerPkg);
-        final RequestDispatcher dispatcher = new RequestDispatcher();
-
-        return dispatcher.waitForResult((connector, listener) -> {
-            try {
-                connector.tether(iface, callerPkg, getAttributionTag(), listener);
-            } catch (RemoteException e) {
-                throw new IllegalStateException(e);
-            }
-        });
-    }
-
-    /**
-     * @return the context's attribution tag
-     */
-    private @Nullable String getAttributionTag() {
-        return null;
-    }
-
-    /**
-     * Stop tethering the named interface.
-     *
-     * @deprecated The only usages is PanService. It uses this for legacy reasons
-     * and will migrate away as soon as possible.
-     *
-     * {@hide}
-     */
-    @Deprecated
-    @SystemApi(client = MODULE_LIBRARIES)
-    public int untether(@NonNull final String iface) {
-        final String callerPkg = mContext.getOpPackageName();
-        Log.i(TAG, "untether caller:" + callerPkg);
-
-        final RequestDispatcher dispatcher = new RequestDispatcher();
-
-        return dispatcher.waitForResult((connector, listener) -> {
-            try {
-                connector.untether(iface, callerPkg, getAttributionTag(), listener);
-            } catch (RemoteException e) {
-                throw new IllegalStateException(e);
-            }
-        });
-    }
-
-    /**
-     * Attempt to both alter the mode of USB and Tethering of USB.
-     *
-     * @deprecated New client should not use this API anymore. All clients should use
-     * #startTethering or #stopTethering which encapsulate proper entitlement logic. If the API is
-     * used and an entitlement check is needed, downstream USB tethering will be enabled but will
-     * not have any upstream.
-     *
-     * {@hide}
-     */
-    @Deprecated
-    @SystemApi(client = MODULE_LIBRARIES)
-    public int setUsbTethering(final boolean enable) {
-        final String callerPkg = mContext.getOpPackageName();
-        Log.i(TAG, "setUsbTethering caller:" + callerPkg);
-
-        final RequestDispatcher dispatcher = new RequestDispatcher();
-
-        return dispatcher.waitForResult((connector, listener) -> {
-            try {
-                connector.setUsbTethering(enable, callerPkg, getAttributionTag(),
-                        listener);
-            } catch (RemoteException e) {
-                throw new IllegalStateException(e);
-            }
-        });
-    }
-
-    /**
-     *  Use with {@link #startTethering} to specify additional parameters when starting tethering.
-     */
-    public static class TetheringRequest {
-        /** A configuration set for TetheringRequest. */
-        private final TetheringRequestParcel mRequestParcel;
-
-        private TetheringRequest(final TetheringRequestParcel request) {
-            mRequestParcel = request;
-        }
-
-        /** Builder used to create TetheringRequest. */
-        public static class Builder {
-            private final TetheringRequestParcel mBuilderParcel;
-
-            /** Default constructor of Builder. */
-            public Builder(@TetheringType final int type) {
-                mBuilderParcel = new TetheringRequestParcel();
-                mBuilderParcel.tetheringType = type;
-                mBuilderParcel.localIPv4Address = null;
-                mBuilderParcel.staticClientAddress = null;
-                mBuilderParcel.exemptFromEntitlementCheck = false;
-                mBuilderParcel.showProvisioningUi = true;
-            }
-
-            /**
-             * Configure tethering with static IPv4 assignment.
-             *
-             * A DHCP server will be started, but will only be able to offer the client address.
-             * The two addresses must be in the same prefix.
-             *
-             * @param localIPv4Address The preferred local IPv4 link address to use.
-             * @param clientAddress The static client address.
-             */
-            @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED)
-            @NonNull
-            public Builder setStaticIpv4Addresses(@NonNull final LinkAddress localIPv4Address,
-                    @NonNull final LinkAddress clientAddress) {
-                Objects.requireNonNull(localIPv4Address);
-                Objects.requireNonNull(clientAddress);
-                if (!checkStaticAddressConfiguration(localIPv4Address, clientAddress)) {
-                    throw new IllegalArgumentException("Invalid server or client addresses");
-                }
-
-                mBuilderParcel.localIPv4Address = localIPv4Address;
-                mBuilderParcel.staticClientAddress = clientAddress;
-                return this;
-            }
-
-            /** Start tethering without entitlement checks. */
-            @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED)
-            @NonNull
-            public Builder setExemptFromEntitlementCheck(boolean exempt) {
-                mBuilderParcel.exemptFromEntitlementCheck = exempt;
-                return this;
-            }
-
-            /**
-             * If an entitlement check is needed, sets whether to show the entitlement UI or to
-             * perform a silent entitlement check. By default, the entitlement UI is shown.
-             */
-            @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED)
-            @NonNull
-            public Builder setShouldShowEntitlementUi(boolean showUi) {
-                mBuilderParcel.showProvisioningUi = showUi;
-                return this;
-            }
-
-            /** Build {@link TetheringRequest] with the currently set configuration. */
-            @NonNull
-            public TetheringRequest build() {
-                return new TetheringRequest(mBuilderParcel);
-            }
-        }
-
-        /**
-         * Get the local IPv4 address, if one was configured with
-         * {@link Builder#setStaticIpv4Addresses}.
-         */
-        @Nullable
-        public LinkAddress getLocalIpv4Address() {
-            return mRequestParcel.localIPv4Address;
-        }
-
-        /**
-         * Get the static IPv4 address of the client, if one was configured with
-         * {@link Builder#setStaticIpv4Addresses}.
-         */
-        @Nullable
-        public LinkAddress getClientStaticIpv4Address() {
-            return mRequestParcel.staticClientAddress;
-        }
-
-        /** Get tethering type. */
-        @TetheringType
-        public int getTetheringType() {
-            return mRequestParcel.tetheringType;
-        }
-
-        /** Check if exempt from entitlement check. */
-        public boolean isExemptFromEntitlementCheck() {
-            return mRequestParcel.exemptFromEntitlementCheck;
-        }
-
-        /** Check if show entitlement ui.  */
-        public boolean getShouldShowEntitlementUi() {
-            return mRequestParcel.showProvisioningUi;
-        }
-
-        /**
-         * Check whether the two addresses are ipv4 and in the same prefix.
-         * @hide
-         */
-        public static boolean checkStaticAddressConfiguration(
-                @NonNull final LinkAddress localIPv4Address,
-                @NonNull final LinkAddress clientAddress) {
-            return localIPv4Address.getPrefixLength() == clientAddress.getPrefixLength()
-                    && localIPv4Address.isIpv4() && clientAddress.isIpv4()
-                    && new IpPrefix(localIPv4Address.toString()).equals(
-                    new IpPrefix(clientAddress.toString()));
-        }
-
-        /**
-         * Get a TetheringRequestParcel from the configuration
-         * @hide
-         */
-        public TetheringRequestParcel getParcel() {
-            return mRequestParcel;
-        }
-
-        /** String of TetheringRequest detail. */
-        public String toString() {
-            return "TetheringRequest [ type= " + mRequestParcel.tetheringType
-                    + ", localIPv4Address= " + mRequestParcel.localIPv4Address
-                    + ", staticClientAddress= " + mRequestParcel.staticClientAddress
-                    + ", exemptFromEntitlementCheck= "
-                    + mRequestParcel.exemptFromEntitlementCheck + ", showProvisioningUi= "
-                    + mRequestParcel.showProvisioningUi + " ]";
-        }
-    }
-
-    /**
-     * Callback for use with {@link #startTethering} to find out whether tethering succeeded.
-     */
-    public interface StartTetheringCallback {
-        /**
-         * Called when tethering has been successfully started.
-         */
-        default void onTetheringStarted() {}
-
-        /**
-         * Called when starting tethering failed.
-         *
-         * @param error The error that caused the failure.
-         */
-        default void onTetheringFailed(@StartTetheringError final int error) {}
-    }
-
-    /**
-     * Starts tethering and runs tether provisioning for the given type if needed. If provisioning
-     * fails, stopTethering will be called automatically.
-     *
-     * <p>Without {@link android.Manifest.permission.TETHER_PRIVILEGED} permission, the call will
-     * fail if a tethering entitlement check is required.
-     *
-     * @param request a {@link TetheringRequest} which can specify the preferred configuration.
-     * @param executor {@link Executor} to specify the thread upon which the callback of
-     *         TetheringRequest will be invoked.
-     * @param callback A callback that will be called to indicate the success status of the
-     *                 tethering start request.
-     */
-    @RequiresPermission(anyOf = {
-            android.Manifest.permission.TETHER_PRIVILEGED,
-            android.Manifest.permission.WRITE_SETTINGS
-    })
-    public void startTethering(@NonNull final TetheringRequest request,
-            @NonNull final Executor executor, @NonNull final StartTetheringCallback callback) {
-        final String callerPkg = mContext.getOpPackageName();
-        Log.i(TAG, "startTethering caller:" + callerPkg);
-
-        final IIntResultListener listener = new IIntResultListener.Stub() {
-            @Override
-            public void onResult(final int resultCode) {
-                executor.execute(() -> {
-                    if (resultCode == TETHER_ERROR_NO_ERROR) {
-                        callback.onTetheringStarted();
-                    } else {
-                        callback.onTetheringFailed(resultCode);
-                    }
-                });
-            }
-        };
-        getConnector(c -> c.startTethering(request.getParcel(), callerPkg,
-                getAttributionTag(), listener));
-    }
-
-    /**
-     * Starts tethering and runs tether provisioning for the given type if needed. If provisioning
-     * fails, stopTethering will be called automatically.
-     *
-     * <p>Without {@link android.Manifest.permission.TETHER_PRIVILEGED} permission, the call will
-     * fail if a tethering entitlement check is required.
-     *
-     * @param type The tethering type, on of the {@code TetheringManager#TETHERING_*} constants.
-     * @param executor {@link Executor} to specify the thread upon which the callback of
-     *         TetheringRequest will be invoked.
-     * @hide
-     */
-    @RequiresPermission(anyOf = {
-            android.Manifest.permission.TETHER_PRIVILEGED,
-            android.Manifest.permission.WRITE_SETTINGS
-    })
-    @SystemApi(client = MODULE_LIBRARIES)
-    public void startTethering(int type, @NonNull final Executor executor,
-            @NonNull final StartTetheringCallback callback) {
-        startTethering(new TetheringRequest.Builder(type).build(), executor, callback);
-    }
-
-    /**
-     * Stops tethering for the given type. Also cancels any provisioning rechecks for that type if
-     * applicable.
-     *
-     * <p>Without {@link android.Manifest.permission.TETHER_PRIVILEGED} permission, the call will
-     * fail if a tethering entitlement check is required.
-     */
-    @RequiresPermission(anyOf = {
-            android.Manifest.permission.TETHER_PRIVILEGED,
-            android.Manifest.permission.WRITE_SETTINGS
-    })
-    public void stopTethering(@TetheringType final int type) {
-        final String callerPkg = mContext.getOpPackageName();
-        Log.i(TAG, "stopTethering caller:" + callerPkg);
-
-        getConnector(c -> c.stopTethering(type, callerPkg, getAttributionTag(),
-                new IIntResultListener.Stub() {
-            @Override
-            public void onResult(int resultCode) {
-                // TODO: provide an API to obtain result
-                // This has never been possible as stopTethering has always been void and never
-                // taken a callback object. The only indication that callers have is if the call
-                // results in a TETHER_STATE_CHANGE broadcast.
-            }
-        }));
-    }
-
-    /**
-     * Callback for use with {@link #getLatestTetheringEntitlementResult} to find out whether
-     * entitlement succeeded.
-     */
-    public interface OnTetheringEntitlementResultListener  {
-        /**
-         * Called to notify entitlement result.
-         *
-         * @param resultCode an int value of entitlement result. It may be one of
-         *         {@link #TETHER_ERROR_NO_ERROR},
-         *         {@link #TETHER_ERROR_PROVISIONING_FAILED}, or
-         *         {@link #TETHER_ERROR_ENTITLEMENT_UNKNOWN}.
-         */
-        void onTetheringEntitlementResult(@EntitlementResult int result);
-    }
-
-    /**
-     * Request the latest value of the tethering entitlement check.
-     *
-     * <p>This method will only return the latest entitlement result if it is available. If no
-     * cached entitlement result is available, and {@code showEntitlementUi} is false,
-     * {@link #TETHER_ERROR_ENTITLEMENT_UNKNOWN} will be returned. If {@code showEntitlementUi} is
-     * true, entitlement will be run.
-     *
-     * <p>Without {@link android.Manifest.permission.TETHER_PRIVILEGED} permission, the call will
-     * fail if a tethering entitlement check is required.
-     *
-     * @param type the downstream type of tethering. Must be one of {@code #TETHERING_*} constants.
-     * @param showEntitlementUi a boolean indicating whether to check result for the UI-based
-     *         entitlement check or the silent entitlement check.
-     * @param executor the executor on which callback will be invoked.
-     * @param listener an {@link OnTetheringEntitlementResultListener} which will be called to
-     *         notify the caller of the result of entitlement check. The listener may be called zero
-     *         or one time.
-     */
-    @RequiresPermission(anyOf = {
-            android.Manifest.permission.TETHER_PRIVILEGED,
-            android.Manifest.permission.WRITE_SETTINGS
-    })
-    public void requestLatestTetheringEntitlementResult(@TetheringType int type,
-            boolean showEntitlementUi,
-            @NonNull Executor executor,
-            @NonNull final OnTetheringEntitlementResultListener listener) {
-        if (listener == null) {
-            throw new IllegalArgumentException(
-                    "OnTetheringEntitlementResultListener cannot be null.");
-        }
-
-        ResultReceiver wrappedListener = new ResultReceiver(null /* handler */) {
-            @Override
-            protected void onReceiveResult(int resultCode, Bundle resultData) {
-                executor.execute(() -> {
-                    listener.onTetheringEntitlementResult(resultCode);
-                });
-            }
-        };
-
-        requestLatestTetheringEntitlementResult(type, wrappedListener,
-                    showEntitlementUi);
-    }
-
-    /**
-     * Helper function of #requestLatestTetheringEntitlementResult to remain backwards compatible
-     * with ConnectivityManager#getLatestTetheringEntitlementResult
-     *
-     * {@hide}
-     */
-    // TODO: improve the usage of ResultReceiver, b/145096122
-    @SystemApi(client = MODULE_LIBRARIES)
-    public void requestLatestTetheringEntitlementResult(@TetheringType final int type,
-            @NonNull final ResultReceiver receiver, final boolean showEntitlementUi) {
-        final String callerPkg = mContext.getOpPackageName();
-        Log.i(TAG, "getLatestTetheringEntitlementResult caller:" + callerPkg);
-
-        getConnector(c -> c.requestLatestTetheringEntitlementResult(
-                type, receiver, showEntitlementUi, callerPkg, getAttributionTag()));
-    }
-
-    /**
-     * Callback for use with {@link registerTetheringEventCallback} to find out tethering
-     * upstream status.
-     */
-    public interface TetheringEventCallback {
-        /**
-         * Called when tethering supported status changed.
-         *
-         * <p>This will be called immediately after the callback is registered, and may be called
-         * multiple times later upon changes.
-         *
-         * <p>Tethering may be disabled via system properties, device configuration, or device
-         * policy restrictions.
-         *
-         * @param supported The new supported status
-         */
-        default void onTetheringSupported(boolean supported) {}
-
-        /**
-         * Called when tethering upstream changed.
-         *
-         * <p>This will be called immediately after the callback is registered, and may be called
-         * multiple times later upon changes.
-         *
-         * @param network the {@link Network} of tethering upstream. Null means tethering doesn't
-         * have any upstream.
-         */
-        default void onUpstreamChanged(@Nullable Network network) {}
-
-        /**
-         * Called when there was a change in tethering interface regular expressions.
-         *
-         * <p>This will be called immediately after the callback is registered, and may be called
-         * multiple times later upon changes.
-         * @param reg The new regular expressions.
-         *
-         * @hide
-         */
-        @SystemApi(client = MODULE_LIBRARIES)
-        default void onTetherableInterfaceRegexpsChanged(@NonNull TetheringInterfaceRegexps reg) {}
-
-        /**
-         * Called when there was a change in the list of tetherable interfaces. Tetherable
-         * interface means this interface is available and can be used for tethering.
-         *
-         * <p>This will be called immediately after the callback is registered, and may be called
-         * multiple times later upon changes.
-         * @param interfaces The list of tetherable interface names.
-         */
-        default void onTetherableInterfacesChanged(@NonNull List<String> interfaces) {}
-
-        /**
-         * Called when there was a change in the list of tethered interfaces.
-         *
-         * <p>This will be called immediately after the callback is registered, and may be called
-         * multiple times later upon changes.
-         * @param interfaces The list of 0 or more String of currently tethered interface names.
-         */
-        default void onTetheredInterfacesChanged(@NonNull List<String> interfaces) {}
-
-        /**
-         * Called when an error occurred configuring tethering.
-         *
-         * <p>This will be called immediately after the callback is registered if the latest status
-         * on the interface is an error, and may be called multiple times later upon changes.
-         * @param ifName Name of the interface.
-         * @param error One of {@code TetheringManager#TETHER_ERROR_*}.
-         */
-        default void onError(@NonNull String ifName, @TetheringIfaceError int error) {}
-
-        /**
-         * Called when the list of tethered clients changes.
-         *
-         * <p>This callback provides best-effort information on connected clients based on state
-         * known to the system, however the list cannot be completely accurate (and should not be
-         * used for security purposes). For example, clients behind a bridge and using static IP
-         * assignments are not visible to the tethering device; or even when using DHCP, such
-         * clients may still be reported by this callback after disconnection as the system cannot
-         * determine if they are still connected.
-         * @param clients The new set of tethered clients; the collection is not ordered.
-         */
-        default void onClientsChanged(@NonNull Collection<TetheredClient> clients) {}
-
-        /**
-         * Called when tethering offload status changes.
-         *
-         * <p>This will be called immediately after the callback is registered.
-         * @param status The offload status.
-         */
-        default void onOffloadStatusChanged(@TetherOffloadStatus int status) {}
-    }
-
-    /**
-     * Regular expressions used to identify tethering interfaces.
-     * @hide
-     */
-    @SystemApi(client = MODULE_LIBRARIES)
-    public static class TetheringInterfaceRegexps {
-        private final String[] mTetherableBluetoothRegexs;
-        private final String[] mTetherableUsbRegexs;
-        private final String[] mTetherableWifiRegexs;
-
-        /** @hide */
-        public TetheringInterfaceRegexps(@NonNull String[] tetherableBluetoothRegexs,
-                @NonNull String[] tetherableUsbRegexs, @NonNull String[] tetherableWifiRegexs) {
-            mTetherableBluetoothRegexs = tetherableBluetoothRegexs.clone();
-            mTetherableUsbRegexs = tetherableUsbRegexs.clone();
-            mTetherableWifiRegexs = tetherableWifiRegexs.clone();
-        }
-
-        @NonNull
-        public List<String> getTetherableBluetoothRegexs() {
-            return Collections.unmodifiableList(Arrays.asList(mTetherableBluetoothRegexs));
-        }
-
-        @NonNull
-        public List<String> getTetherableUsbRegexs() {
-            return Collections.unmodifiableList(Arrays.asList(mTetherableUsbRegexs));
-        }
-
-        @NonNull
-        public List<String> getTetherableWifiRegexs() {
-            return Collections.unmodifiableList(Arrays.asList(mTetherableWifiRegexs));
-        }
-
-        @Override
-        public int hashCode() {
-            return Objects.hash(mTetherableBluetoothRegexs, mTetherableUsbRegexs,
-                    mTetherableWifiRegexs);
-        }
-
-        @Override
-        public boolean equals(@Nullable Object obj) {
-            if (!(obj instanceof TetheringInterfaceRegexps)) return false;
-            final TetheringInterfaceRegexps other = (TetheringInterfaceRegexps) obj;
-            return Arrays.equals(mTetherableBluetoothRegexs, other.mTetherableBluetoothRegexs)
-                    && Arrays.equals(mTetherableUsbRegexs, other.mTetherableUsbRegexs)
-                    && Arrays.equals(mTetherableWifiRegexs, other.mTetherableWifiRegexs);
-        }
-    }
-
-    /**
-     * Start listening to tethering change events. Any new added callback will receive the last
-     * tethering status right away. If callback is registered,
-     * {@link TetheringEventCallback#onUpstreamChanged} will immediately be called. If tethering
-     * has no upstream or disabled, the argument of callback will be null. The same callback object
-     * cannot be registered twice.
-     *
-     * @param executor the executor on which callback will be invoked.
-     * @param callback the callback to be called when tethering has change events.
-     */
-    @RequiresPermission(Manifest.permission.ACCESS_NETWORK_STATE)
-    public void registerTetheringEventCallback(@NonNull Executor executor,
-            @NonNull TetheringEventCallback callback) {
-        final String callerPkg = mContext.getOpPackageName();
-        Log.i(TAG, "registerTetheringEventCallback caller:" + callerPkg);
-
-        synchronized (mTetheringEventCallbacks) {
-            if (mTetheringEventCallbacks.containsKey(callback)) {
-                throw new IllegalArgumentException("callback was already registered.");
-            }
-            final ITetheringEventCallback remoteCallback = new ITetheringEventCallback.Stub() {
-                // Only accessed with a lock on this object
-                private final HashMap<String, Integer> mErrorStates = new HashMap<>();
-                private String[] mLastTetherableInterfaces = null;
-                private String[] mLastTetheredInterfaces = null;
-
-                @Override
-                public void onUpstreamChanged(Network network) throws RemoteException {
-                    executor.execute(() -> {
-                        callback.onUpstreamChanged(network);
-                    });
-                }
-
-                private synchronized void sendErrorCallbacks(final TetherStatesParcel newStates) {
-                    for (int i = 0; i < newStates.erroredIfaceList.length; i++) {
-                        final String iface = newStates.erroredIfaceList[i];
-                        final Integer lastError = mErrorStates.get(iface);
-                        final int newError = newStates.lastErrorList[i];
-                        if (newError != TETHER_ERROR_NO_ERROR
-                                && !Objects.equals(lastError, newError)) {
-                            callback.onError(iface, newError);
-                        }
-                        mErrorStates.put(iface, newError);
-                    }
-                }
-
-                private synchronized void maybeSendTetherableIfacesChangedCallback(
-                        final TetherStatesParcel newStates) {
-                    if (Arrays.equals(mLastTetherableInterfaces, newStates.availableList)) return;
-                    mLastTetherableInterfaces = newStates.availableList.clone();
-                    callback.onTetherableInterfacesChanged(
-                            Collections.unmodifiableList(Arrays.asList(mLastTetherableInterfaces)));
-                }
-
-                private synchronized void maybeSendTetheredIfacesChangedCallback(
-                        final TetherStatesParcel newStates) {
-                    if (Arrays.equals(mLastTetheredInterfaces, newStates.tetheredList)) return;
-                    mLastTetheredInterfaces = newStates.tetheredList.clone();
-                    callback.onTetheredInterfacesChanged(
-                            Collections.unmodifiableList(Arrays.asList(mLastTetheredInterfaces)));
-                }
-
-                // Called immediately after the callbacks are registered.
-                @Override
-                public void onCallbackStarted(TetheringCallbackStartedParcel parcel) {
-                    executor.execute(() -> {
-                        callback.onTetheringSupported(parcel.tetheringSupported);
-                        callback.onUpstreamChanged(parcel.upstreamNetwork);
-                        sendErrorCallbacks(parcel.states);
-                        sendRegexpsChanged(parcel.config);
-                        maybeSendTetherableIfacesChangedCallback(parcel.states);
-                        maybeSendTetheredIfacesChangedCallback(parcel.states);
-                        callback.onClientsChanged(parcel.tetheredClients);
-                        callback.onOffloadStatusChanged(parcel.offloadStatus);
-                    });
-                }
-
-                @Override
-                public void onCallbackStopped(int errorCode) {
-                    executor.execute(() -> {
-                        throwIfPermissionFailure(errorCode);
-                    });
-                }
-
-                private void sendRegexpsChanged(TetheringConfigurationParcel parcel) {
-                    callback.onTetherableInterfaceRegexpsChanged(new TetheringInterfaceRegexps(
-                            parcel.tetherableBluetoothRegexs,
-                            parcel.tetherableUsbRegexs,
-                            parcel.tetherableWifiRegexs));
-                }
-
-                @Override
-                public void onConfigurationChanged(TetheringConfigurationParcel config) {
-                    executor.execute(() -> sendRegexpsChanged(config));
-                }
-
-                @Override
-                public void onTetherStatesChanged(TetherStatesParcel states) {
-                    executor.execute(() -> {
-                        sendErrorCallbacks(states);
-                        maybeSendTetherableIfacesChangedCallback(states);
-                        maybeSendTetheredIfacesChangedCallback(states);
-                    });
-                }
-
-                @Override
-                public void onTetherClientsChanged(final List<TetheredClient> clients) {
-                    executor.execute(() -> callback.onClientsChanged(clients));
-                }
-
-                @Override
-                public void onOffloadStatusChanged(final int status) {
-                    executor.execute(() -> callback.onOffloadStatusChanged(status));
-                }
-            };
-            getConnector(c -> c.registerTetheringEventCallback(remoteCallback, callerPkg));
-            mTetheringEventCallbacks.put(callback, remoteCallback);
-        }
-    }
-
-    /**
-     * Remove tethering event callback previously registered with
-     * {@link #registerTetheringEventCallback}.
-     *
-     * @param callback previously registered callback.
-     */
-    @RequiresPermission(anyOf = {
-            Manifest.permission.TETHER_PRIVILEGED,
-            Manifest.permission.ACCESS_NETWORK_STATE
-    })
-    public void unregisterTetheringEventCallback(@NonNull final TetheringEventCallback callback) {
-        final String callerPkg = mContext.getOpPackageName();
-        Log.i(TAG, "unregisterTetheringEventCallback caller:" + callerPkg);
-
-        synchronized (mTetheringEventCallbacks) {
-            ITetheringEventCallback remoteCallback = mTetheringEventCallbacks.remove(callback);
-            if (remoteCallback == null) {
-                throw new IllegalArgumentException("callback was not registered.");
-            }
-
-            getConnector(c -> c.unregisterTetheringEventCallback(remoteCallback, callerPkg));
-        }
-    }
-
-    /**
-     * Get a more detailed error code after a Tethering or Untethering
-     * request asynchronously failed.
-     *
-     * @param iface The name of the interface of interest
-     * @return error The error code of the last error tethering or untethering the named
-     *               interface
-     * @hide
-     */
-    @SystemApi(client = MODULE_LIBRARIES)
-    public int getLastTetherError(@NonNull final String iface) {
-        mCallback.waitForStarted();
-        if (mTetherStatesParcel == null) return TETHER_ERROR_NO_ERROR;
-
-        int i = 0;
-        for (String errored : mTetherStatesParcel.erroredIfaceList) {
-            if (iface.equals(errored)) return mTetherStatesParcel.lastErrorList[i];
-
-            i++;
-        }
-        return TETHER_ERROR_NO_ERROR;
-    }
-
-    /**
-     * Get the list of regular expressions that define any tetherable
-     * USB network interfaces.  If USB tethering is not supported by the
-     * device, this list should be empty.
-     *
-     * @return an array of 0 or more regular expression Strings defining
-     *        what interfaces are considered tetherable usb interfaces.
-     * @hide
-     */
-    @SystemApi(client = MODULE_LIBRARIES)
-    public @NonNull String[] getTetherableUsbRegexs() {
-        mCallback.waitForStarted();
-        return mTetheringConfiguration.tetherableUsbRegexs;
-    }
-
-    /**
-     * Get the list of regular expressions that define any tetherable
-     * Wifi network interfaces.  If Wifi tethering is not supported by the
-     * device, this list should be empty.
-     *
-     * @return an array of 0 or more regular expression Strings defining
-     *        what interfaces are considered tetherable wifi interfaces.
-     * @hide
-     */
-    @SystemApi(client = MODULE_LIBRARIES)
-    public @NonNull String[] getTetherableWifiRegexs() {
-        mCallback.waitForStarted();
-        return mTetheringConfiguration.tetherableWifiRegexs;
-    }
-
-    /**
-     * Get the list of regular expressions that define any tetherable
-     * Bluetooth network interfaces.  If Bluetooth tethering is not supported by the
-     * device, this list should be empty.
-     *
-     * @return an array of 0 or more regular expression Strings defining
-     *        what interfaces are considered tetherable bluetooth interfaces.
-     * @hide
-     */
-    @SystemApi(client = MODULE_LIBRARIES)
-    public @NonNull String[] getTetherableBluetoothRegexs() {
-        mCallback.waitForStarted();
-        return mTetheringConfiguration.tetherableBluetoothRegexs;
-    }
-
-    /**
-     * Get the set of tetherable, available interfaces.  This list is limited by
-     * device configuration and current interface existence.
-     *
-     * @return an array of 0 or more Strings of tetherable interface names.
-     * @hide
-     */
-    @SystemApi(client = MODULE_LIBRARIES)
-    public @NonNull String[] getTetherableIfaces() {
-        mCallback.waitForStarted();
-        if (mTetherStatesParcel == null) return new String[0];
-
-        return mTetherStatesParcel.availableList;
-    }
-
-    /**
-     * Get the set of tethered interfaces.
-     *
-     * @return an array of 0 or more String of currently tethered interface names.
-     * @hide
-     */
-    @SystemApi(client = MODULE_LIBRARIES)
-    public @NonNull String[] getTetheredIfaces() {
-        mCallback.waitForStarted();
-        if (mTetherStatesParcel == null) return new String[0];
-
-        return mTetherStatesParcel.tetheredList;
-    }
-
-    /**
-     * Get the set of interface names which attempted to tether but
-     * failed.  Re-attempting to tether may cause them to reset to the Tethered
-     * state.  Alternatively, causing the interface to be destroyed and recreated
-     * may cause them to reset to the available state.
-     * {@link TetheringManager#getLastTetherError} can be used to get more
-     * information on the cause of the errors.
-     *
-     * @return an array of 0 or more String indicating the interface names
-     *        which failed to tether.
-     * @hide
-     */
-    @SystemApi(client = MODULE_LIBRARIES)
-    public @NonNull String[] getTetheringErroredIfaces() {
-        mCallback.waitForStarted();
-        if (mTetherStatesParcel == null) return new String[0];
-
-        return mTetherStatesParcel.erroredIfaceList;
-    }
-
-    /**
-     * Get the set of tethered dhcp ranges.
-     *
-     * @deprecated This API just return the default value which is not used in DhcpServer.
-     * @hide
-     */
-    @Deprecated
-    public @NonNull String[] getTetheredDhcpRanges() {
-        mCallback.waitForStarted();
-        return mTetheringConfiguration.legacyDhcpRanges;
-    }
-
-    /**
-     * Check if the device allows for tethering.  It may be disabled via
-     * {@code ro.tether.denied} system property, Settings.TETHER_SUPPORTED or
-     * due to device configuration.
-     *
-     * @return a boolean - {@code true} indicating Tethering is supported.
-     * @hide
-     */
-    @SystemApi(client = MODULE_LIBRARIES)
-    public boolean isTetheringSupported() {
-        final String callerPkg = mContext.getOpPackageName();
-
-        return isTetheringSupported(callerPkg);
-    }
-
-    /**
-     * Check if the device allows for tethering. It may be disabled via {@code ro.tether.denied}
-     * system property, Settings.TETHER_SUPPORTED or due to device configuration. This is useful
-     * for system components that query this API on behalf of an app. In particular, Bluetooth
-     * has @UnsupportedAppUsage calls that will let apps turn on bluetooth tethering if they have
-     * the right permissions, but such an app needs to know whether it can (permissions as well
-     * as support from the device) turn on tethering in the first place to show the appropriate UI.
-     *
-     * @param callerPkg The caller package name, if it is not matching the calling uid,
-     *       SecurityException would be thrown.
-     * @return a boolean - {@code true} indicating Tethering is supported.
-     * @hide
-     */
-    @SystemApi(client = MODULE_LIBRARIES)
-    public boolean isTetheringSupported(@NonNull final String callerPkg) {
-
-        final RequestDispatcher dispatcher = new RequestDispatcher();
-        final int ret = dispatcher.waitForResult((connector, listener) -> {
-            try {
-                connector.isTetheringSupported(callerPkg, getAttributionTag(), listener);
-            } catch (RemoteException e) {
-                throw new IllegalStateException(e);
-            }
-        });
-
-        return ret == TETHER_ERROR_NO_ERROR;
-    }
-
-    /**
-     * Stop all active tethering.
-     *
-     * <p>Without {@link android.Manifest.permission.TETHER_PRIVILEGED} permission, the call will
-     * fail if a tethering entitlement check is required.
-     */
-    @RequiresPermission(anyOf = {
-            android.Manifest.permission.TETHER_PRIVILEGED,
-            android.Manifest.permission.WRITE_SETTINGS
-    })
-    public void stopAllTethering() {
-        final String callerPkg = mContext.getOpPackageName();
-        Log.i(TAG, "stopAllTethering caller:" + callerPkg);
-
-        getConnector(c -> c.stopAllTethering(callerPkg, getAttributionTag(),
-                new IIntResultListener.Stub() {
-                    @Override
-                    public void onResult(int resultCode) {
-                        // TODO: add an API parameter to send result to caller.
-                        // This has never been possible as stopAllTethering has always been void
-                        // and never taken a callback object. The only indication that callers have
-                        // is if the call results in a TETHER_STATE_CHANGE broadcast.
-                    }
-                }));
-    }
-}
diff --git a/packages/Tethering/common/TetheringLib/src/android/net/TetheringRequestParcel.aidl b/packages/Tethering/common/TetheringLib/src/android/net/TetheringRequestParcel.aidl
deleted file mode 100644
index c0280d3..0000000
--- a/packages/Tethering/common/TetheringLib/src/android/net/TetheringRequestParcel.aidl
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net;
-
-import android.net.LinkAddress;
-
-/**
- * Configuration details for requesting tethering.
- * @hide
- */
-parcelable TetheringRequestParcel {
-    int tetheringType;
-    LinkAddress localIPv4Address;
-    LinkAddress staticClientAddress;
-    boolean exemptFromEntitlementCheck;
-    boolean showProvisioningUi;
-}
diff --git a/packages/Tethering/jarjar-rules.txt b/packages/Tethering/jarjar-rules.txt
deleted file mode 100644
index 591861f..0000000
--- a/packages/Tethering/jarjar-rules.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-# These must be kept in sync with the framework-tethering-shared-srcs filegroup.
-# Classes from the framework-tethering-shared-srcs filegroup.
-# If there are files in that filegroup that are not covered below, the classes in the
-# module will be overwritten by the ones in the framework.
-rule com.android.internal.util.** com.android.networkstack.tethering.util.@1
-rule android.util.LocalLog* com.android.networkstack.tethering.util.LocalLog@1
-
-rule android.net.shared.Inet4AddressUtils* com.android.networkstack.tethering.shared.Inet4AddressUtils@1
-
-# Classes from net-utils-framework-common
-rule com.android.net.module.util.** com.android.networkstack.tethering.util.@1
\ No newline at end of file
diff --git a/packages/Tethering/jni/android_net_util_TetheringUtils.cpp b/packages/Tethering/jni/android_net_util_TetheringUtils.cpp
deleted file mode 100644
index 94c871d..0000000
--- a/packages/Tethering/jni/android_net_util_TetheringUtils.cpp
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <errno.h>
-#include <error.h>
-#include <jni.h>
-#include <linux/filter.h>
-#include <nativehelper/JNIHelp.h>
-#include <nativehelper/JNIHelpCompat.h>
-#include <nativehelper/ScopedUtfChars.h>
-#include <net/if.h>
-#include <netinet/ether.h>
-#include <netinet/ip6.h>
-#include <netinet/icmp6.h>
-#include <sys/socket.h>
-#include <stdio.h>
-
-#define LOG_TAG "TetheringUtils"
-#include <android/log.h>
-
-namespace android {
-
-static const uint32_t kIPv6NextHeaderOffset = offsetof(ip6_hdr, ip6_nxt);
-static const uint32_t kIPv6PayloadStart = sizeof(ip6_hdr);
-static const uint32_t kICMPv6TypeOffset = kIPv6PayloadStart + offsetof(icmp6_hdr, icmp6_type);
-
-static void android_net_util_setupIcmpFilter(JNIEnv *env, jobject javaFd, uint32_t type) {
-    sock_filter filter_code[] = {
-        // Check header is ICMPv6.
-        BPF_STMT(BPF_LD  | BPF_B   | BPF_ABS,  kIPv6NextHeaderOffset),
-        BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K,    IPPROTO_ICMPV6, 0, 3),
-
-        // Check ICMPv6 type.
-        BPF_STMT(BPF_LD  | BPF_B   | BPF_ABS,  kICMPv6TypeOffset),
-        BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K,    type, 0, 1),
-
-        // Accept or reject.
-        BPF_STMT(BPF_RET | BPF_K,              0xffff),
-        BPF_STMT(BPF_RET | BPF_K,              0)
-    };
-
-    const sock_fprog filter = {
-        sizeof(filter_code) / sizeof(filter_code[0]),
-        filter_code,
-    };
-
-    int fd = jniGetFDFromFileDescriptor(env, javaFd);
-    if (setsockopt(fd, SOL_SOCKET, SO_ATTACH_FILTER, &filter, sizeof(filter)) != 0) {
-        jniThrowExceptionFmt(env, "java/net/SocketException",
-                "setsockopt(SO_ATTACH_FILTER): %s", strerror(errno));
-    }
-}
-
-static void android_net_util_setupNaSocket(JNIEnv *env, jobject clazz, jobject javaFd)
-{
-    android_net_util_setupIcmpFilter(env, javaFd, ND_NEIGHBOR_ADVERT);
-}
-
-static void android_net_util_setupNsSocket(JNIEnv *env, jobject clazz, jobject javaFd)
-{
-    android_net_util_setupIcmpFilter(env, javaFd, ND_NEIGHBOR_SOLICIT);
-}
-
-static void android_net_util_setupRaSocket(JNIEnv *env, jobject clazz, jobject javaFd,
-        jint ifIndex)
-{
-    static const int kLinkLocalHopLimit = 255;
-
-    int fd = jniGetFDFromFileDescriptor(env, javaFd);
-
-    // Set an ICMPv6 filter that only passes Router Solicitations.
-    struct icmp6_filter rs_only;
-    ICMP6_FILTER_SETBLOCKALL(&rs_only);
-    ICMP6_FILTER_SETPASS(ND_ROUTER_SOLICIT, &rs_only);
-    socklen_t len = sizeof(rs_only);
-    if (setsockopt(fd, IPPROTO_ICMPV6, ICMP6_FILTER, &rs_only, len) != 0) {
-        jniThrowExceptionFmt(env, "java/net/SocketException",
-                "setsockopt(ICMP6_FILTER): %s", strerror(errno));
-        return;
-    }
-
-    // Most/all of the rest of these options can be set via Java code, but
-    // because we're here on account of setting an icmp6_filter go ahead
-    // and do it all natively for now.
-
-    // Set the multicast hoplimit to 255 (link-local only).
-    int hops = kLinkLocalHopLimit;
-    len = sizeof(hops);
-    if (setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, &hops, len) != 0) {
-        jniThrowExceptionFmt(env, "java/net/SocketException",
-                "setsockopt(IPV6_MULTICAST_HOPS): %s", strerror(errno));
-        return;
-    }
-
-    // Set the unicast hoplimit to 255 (link-local only).
-    hops = kLinkLocalHopLimit;
-    len = sizeof(hops);
-    if (setsockopt(fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS, &hops, len) != 0) {
-        jniThrowExceptionFmt(env, "java/net/SocketException",
-                "setsockopt(IPV6_UNICAST_HOPS): %s", strerror(errno));
-        return;
-    }
-
-    // Explicitly disable multicast loopback.
-    int off = 0;
-    len = sizeof(off);
-    if (setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, &off, len) != 0) {
-        jniThrowExceptionFmt(env, "java/net/SocketException",
-                "setsockopt(IPV6_MULTICAST_LOOP): %s", strerror(errno));
-        return;
-    }
-
-    // Specify the IPv6 interface to use for outbound multicast.
-    len = sizeof(ifIndex);
-    if (setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_IF, &ifIndex, len) != 0) {
-        jniThrowExceptionFmt(env, "java/net/SocketException",
-                "setsockopt(IPV6_MULTICAST_IF): %s", strerror(errno));
-        return;
-    }
-
-    // Additional options to be considered:
-    //     - IPV6_TCLASS
-    //     - IPV6_RECVPKTINFO
-    //     - IPV6_RECVHOPLIMIT
-
-    // Bind to [::].
-    const struct sockaddr_in6 sin6 = {
-            .sin6_family = AF_INET6,
-            .sin6_port = 0,
-            .sin6_flowinfo = 0,
-            .sin6_addr = IN6ADDR_ANY_INIT,
-            .sin6_scope_id = 0,
-    };
-    auto sa = reinterpret_cast<const struct sockaddr *>(&sin6);
-    len = sizeof(sin6);
-    if (bind(fd, sa, len) != 0) {
-        jniThrowExceptionFmt(env, "java/net/SocketException",
-                "bind(IN6ADDR_ANY): %s", strerror(errno));
-        return;
-    }
-
-    // Join the all-routers multicast group, ff02::2%index.
-    struct ipv6_mreq all_rtrs = {
-        .ipv6mr_multiaddr = {{{0xff,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2}}},
-        .ipv6mr_interface = ifIndex,
-    };
-    len = sizeof(all_rtrs);
-    if (setsockopt(fd, IPPROTO_IPV6, IPV6_JOIN_GROUP, &all_rtrs, len) != 0) {
-        jniThrowExceptionFmt(env, "java/net/SocketException",
-                "setsockopt(IPV6_JOIN_GROUP): %s", strerror(errno));
-        return;
-    }
-}
-
-/*
- * JNI registration.
- */
-static const JNINativeMethod gMethods[] = {
-    /* name, signature, funcPtr */
-    { "setupNaSocket", "(Ljava/io/FileDescriptor;)V",
-        (void*) android_net_util_setupNaSocket },
-    { "setupNsSocket", "(Ljava/io/FileDescriptor;)V",
-        (void*) android_net_util_setupNsSocket },
-    { "setupRaSocket", "(Ljava/io/FileDescriptor;I)V",
-        (void*) android_net_util_setupRaSocket },
-};
-
-int register_android_net_util_TetheringUtils(JNIEnv* env) {
-    return jniRegisterNativeMethods(env,
-            "android/net/util/TetheringUtils",
-            gMethods, NELEM(gMethods));
-}
-
-extern "C" jint JNI_OnLoad(JavaVM* vm, void*) {
-    JNIEnv *env;
-    if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
-        __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, "ERROR: GetEnv failed");
-        return JNI_ERR;
-    }
-
-    if (register_android_net_util_TetheringUtils(env) < 0) {
-        return JNI_ERR;
-    }
-
-    return JNI_VERSION_1_6;
-}
-
-}; // namespace android
diff --git a/packages/Tethering/proguard.flags b/packages/Tethering/proguard.flags
deleted file mode 100644
index 86b9033..0000000
--- a/packages/Tethering/proguard.flags
+++ /dev/null
@@ -1,9 +0,0 @@
-# Keep class's integer static field for MessageUtils to parsing their name.
--keep class com.android.networkstack.tethering.Tethering$TetherMainSM {
-    static final int CMD_*;
-    static final int EVENT_*;
-}
-
--keepclassmembers class android.net.ip.IpServer {
-    static final int CMD_*;
-}
diff --git a/packages/Tethering/res/drawable-hdpi/stat_sys_tether_bluetooth.png b/packages/Tethering/res/drawable-hdpi/stat_sys_tether_bluetooth.png
deleted file mode 100644
index 9451174..0000000
--- a/packages/Tethering/res/drawable-hdpi/stat_sys_tether_bluetooth.png
+++ /dev/null
Binary files differ
diff --git a/packages/Tethering/res/drawable-hdpi/stat_sys_tether_general.png b/packages/Tethering/res/drawable-hdpi/stat_sys_tether_general.png
deleted file mode 100644
index 79d5756..0000000
--- a/packages/Tethering/res/drawable-hdpi/stat_sys_tether_general.png
+++ /dev/null
Binary files differ
diff --git a/packages/Tethering/res/drawable-hdpi/stat_sys_tether_usb.png b/packages/Tethering/res/drawable-hdpi/stat_sys_tether_usb.png
deleted file mode 100644
index cae1bd1..0000000
--- a/packages/Tethering/res/drawable-hdpi/stat_sys_tether_usb.png
+++ /dev/null
Binary files differ
diff --git a/packages/Tethering/res/drawable-ldpi/stat_sys_tether_bluetooth.png b/packages/Tethering/res/drawable-ldpi/stat_sys_tether_bluetooth.png
deleted file mode 100644
index ffe8e8c..0000000
--- a/packages/Tethering/res/drawable-ldpi/stat_sys_tether_bluetooth.png
+++ /dev/null
Binary files differ
diff --git a/packages/Tethering/res/drawable-ldpi/stat_sys_tether_general.png b/packages/Tethering/res/drawable-ldpi/stat_sys_tether_general.png
deleted file mode 100644
index ca20f73..0000000
--- a/packages/Tethering/res/drawable-ldpi/stat_sys_tether_general.png
+++ /dev/null
Binary files differ
diff --git a/packages/Tethering/res/drawable-ldpi/stat_sys_tether_usb.png b/packages/Tethering/res/drawable-ldpi/stat_sys_tether_usb.png
deleted file mode 100644
index 65e9075..0000000
--- a/packages/Tethering/res/drawable-ldpi/stat_sys_tether_usb.png
+++ /dev/null
Binary files differ
diff --git a/packages/Tethering/res/drawable-mdpi/stat_sys_tether_bluetooth.png b/packages/Tethering/res/drawable-mdpi/stat_sys_tether_bluetooth.png
deleted file mode 100644
index f42dae0..0000000
--- a/packages/Tethering/res/drawable-mdpi/stat_sys_tether_bluetooth.png
+++ /dev/null
Binary files differ
diff --git a/packages/Tethering/res/drawable-mdpi/stat_sys_tether_general.png b/packages/Tethering/res/drawable-mdpi/stat_sys_tether_general.png
deleted file mode 100644
index 0655161..0000000
--- a/packages/Tethering/res/drawable-mdpi/stat_sys_tether_general.png
+++ /dev/null
Binary files differ
diff --git a/packages/Tethering/res/drawable-mdpi/stat_sys_tether_usb.png b/packages/Tethering/res/drawable-mdpi/stat_sys_tether_usb.png
deleted file mode 100644
index 2e2b8ca..0000000
--- a/packages/Tethering/res/drawable-mdpi/stat_sys_tether_usb.png
+++ /dev/null
Binary files differ
diff --git a/packages/Tethering/res/drawable-xhdpi/stat_sys_tether_bluetooth.png b/packages/Tethering/res/drawable-xhdpi/stat_sys_tether_bluetooth.png
deleted file mode 100644
index 3f57d1c..0000000
--- a/packages/Tethering/res/drawable-xhdpi/stat_sys_tether_bluetooth.png
+++ /dev/null
Binary files differ
diff --git a/packages/Tethering/res/drawable-xhdpi/stat_sys_tether_general.png b/packages/Tethering/res/drawable-xhdpi/stat_sys_tether_general.png
deleted file mode 100644
index 34b0cb3..0000000
--- a/packages/Tethering/res/drawable-xhdpi/stat_sys_tether_general.png
+++ /dev/null
Binary files differ
diff --git a/packages/Tethering/res/drawable-xhdpi/stat_sys_tether_usb.png b/packages/Tethering/res/drawable-xhdpi/stat_sys_tether_usb.png
deleted file mode 100644
index 36afe48..0000000
--- a/packages/Tethering/res/drawable-xhdpi/stat_sys_tether_usb.png
+++ /dev/null
Binary files differ
diff --git a/packages/Tethering/res/drawable-xxhdpi/stat_sys_tether_bluetooth.png b/packages/Tethering/res/drawable-xxhdpi/stat_sys_tether_bluetooth.png
deleted file mode 100644
index 25acfbb..0000000
--- a/packages/Tethering/res/drawable-xxhdpi/stat_sys_tether_bluetooth.png
+++ /dev/null
Binary files differ
diff --git a/packages/Tethering/res/drawable-xxhdpi/stat_sys_tether_general.png b/packages/Tethering/res/drawable-xxhdpi/stat_sys_tether_general.png
deleted file mode 100644
index 5c65601..0000000
--- a/packages/Tethering/res/drawable-xxhdpi/stat_sys_tether_general.png
+++ /dev/null
Binary files differ
diff --git a/packages/Tethering/res/drawable-xxhdpi/stat_sys_tether_usb.png b/packages/Tethering/res/drawable-xxhdpi/stat_sys_tether_usb.png
deleted file mode 100644
index 28b4b54..0000000
--- a/packages/Tethering/res/drawable-xxhdpi/stat_sys_tether_usb.png
+++ /dev/null
Binary files differ
diff --git a/packages/Tethering/res/values-af/strings.xml b/packages/Tethering/res/values-af/strings.xml
deleted file mode 100644
index 056168b..0000000
--- a/packages/Tethering/res/values-af/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Verbinding of warmkol is aktief"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Tik om op te stel."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Verbinding is gedeaktiveer"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Kontak jou administrateur vir besonderhede"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Warmkol- en verbindingstatus"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-am/strings.xml b/packages/Tethering/res/values-am/strings.xml
deleted file mode 100644
index ac468dd..0000000
--- a/packages/Tethering/res/values-am/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"እንደ ሞደም መሰካት ወይም መገናኛ ነጥብ ገባሪ"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"ለማዋቀር መታ ያድርጉ።"</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"እንደ ሞደም መሰካት ተሰናክሏል"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"ለዝርዝሮች የእርስዎን አስተዳዳሪ ያነጋግሩ"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"መገናኛ ነጥብ እና እንደ ሞደም የመሰካት ሁኔታ"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-ar/strings.xml b/packages/Tethering/res/values-ar/strings.xml
deleted file mode 100644
index 7d5bad3..0000000
--- a/packages/Tethering/res/values-ar/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"النطاق نشط أو نقطة الاتصال نشطة"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"انقر للإعداد."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"التوصيل متوقف."</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"تواصَل مع المشرف للحصول على التفاصيل."</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"حالة نقطة الاتصال والتوصيل"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-as/strings.xml b/packages/Tethering/res/values-as/strings.xml
deleted file mode 100644
index 0913504..0000000
--- a/packages/Tethering/res/values-as/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"টে\'ডাৰিং অথবা হ\'টস্প\'ট সক্ৰিয় অৱস্থাত আছে"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"ছেট আপ কৰিবলৈ টিপক।"</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"টে\'ডাৰিঙৰ সুবিধাটো অক্ষম কৰি থোৱা হৈছে"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"সবিশেষ জানিবলৈ আপোনাৰ প্ৰশাসকৰ সৈতে যোগাযোগ কৰক"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"হ’টস্প\'ট আৰু টে\'ডাৰিঙৰ স্থিতি"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-az/strings.xml b/packages/Tethering/res/values-az/strings.xml
deleted file mode 100644
index dce70da..0000000
--- a/packages/Tethering/res/values-az/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Birləşmə və ya hotspot aktivdir"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Ayarlamaq üçün toxunun."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Birləşmə deaktivdir"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Detallar üçün adminlə əlaqə saxlayın"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Hotspot &amp; birləşmə statusu"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-b+sr+Latn/strings.xml b/packages/Tethering/res/values-b+sr+Latn/strings.xml
deleted file mode 100644
index b0774ec..0000000
--- a/packages/Tethering/res/values-b+sr+Latn/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Privezivanje ili hotspot je aktivan"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Dodirnite da biste podesili."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Privezivanje je onemogućeno"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Potražite detalje od administratora"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Status hotspota i privezivanja"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-be/strings.xml b/packages/Tethering/res/values-be/strings.xml
deleted file mode 100644
index a8acebe..0000000
--- a/packages/Tethering/res/values-be/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Мадэм або хот-спот актыўныя"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Дакраніцеся, каб наладзіць."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Рэжым мадэма выключаны"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Звярніцеся да адміністратара па падрабязную інфармацыю"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Стан \"Хот-спот і мадэм\""</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-bg/strings.xml b/packages/Tethering/res/values-bg/strings.xml
deleted file mode 100644
index 94fb2d8..0000000
--- a/packages/Tethering/res/values-bg/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Има активна споделена връзка или точка за достъп"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Докоснете, за да настроите."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Функцията за тетъринг е деактивирана"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Свържете се с администратора си за подробности"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Състояние на функцията за точка за достъп и тетъринг"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-bn/strings.xml b/packages/Tethering/res/values-bn/strings.xml
deleted file mode 100644
index aea02b9..0000000
--- a/packages/Tethering/res/values-bn/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"টিথারিং বা হটস্পট চালু আছে"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"সেট-আপ করতে ট্যাপ করুন।"</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"টিথারিং বন্ধ করা আছে"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"বিশদে জানতে অ্যাডমিনের সাথে যোগাযোগ করুন"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"হটস্পট ও টিথারিং স্ট্যাটাস"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-bs/strings.xml b/packages/Tethering/res/values-bs/strings.xml
deleted file mode 100644
index de23272..0000000
--- a/packages/Tethering/res/values-bs/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Aktivno je povezivanje putem mobitela ili pristupna tačka"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Dodirnite da postavite."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Povezivanje putem mobitela je onemogućeno"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Kontaktirajte svog administratora za detalje"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Status pristupne tačke i povezivanja putem mobitela"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-ca/strings.xml b/packages/Tethering/res/values-ca/strings.xml
deleted file mode 100644
index 88b795c..0000000
--- a/packages/Tethering/res/values-ca/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Compartició de xarxa o punt d\'accés Wi‑Fi actius"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Toca per configurar."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"La compartició de xarxa està desactivada"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Contacta amb el teu administrador per obtenir més informació"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Estat del punt d\'accés Wi‑Fi i de la compartició de xarxa"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-cs/strings.xml b/packages/Tethering/res/values-cs/strings.xml
deleted file mode 100644
index 8c1b83b..0000000
--- a/packages/Tethering/res/values-cs/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Tethering nebo hotspot je aktivní"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Klepnutím zahájíte nastavení."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Tethering je zakázán"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"O podrobnosti požádejte administrátora"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Stav hotspotu a tetheringu"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-da/strings.xml b/packages/Tethering/res/values-da/strings.xml
deleted file mode 100644
index f413e70..0000000
--- a/packages/Tethering/res/values-da/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Netdeling eller hotspot er aktivt"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Tryk for at konfigurere."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Netdeling er deaktiveret"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Kontakt din administrator for at få oplysninger"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Status for hotspot og netdeling"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-de/strings.xml b/packages/Tethering/res/values-de/strings.xml
deleted file mode 100644
index f057d78..0000000
--- a/packages/Tethering/res/values-de/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Tethering oder Hotspot aktiv"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Zum Einrichten tippen."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Tethering ist deaktiviert"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Bitte wende dich für weitere Informationen an den Administrator"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Hotspot- und Tethering-Status"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-el/strings.xml b/packages/Tethering/res/values-el/strings.xml
deleted file mode 100644
index b3c986b..0000000
--- a/packages/Tethering/res/values-el/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Πρόσδεση ή σύνδεση σημείου πρόσβασης ενεργή"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Πατήστε για ρύθμιση."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Η σύνδεση είναι απενεργοποιημένη"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Επικοινωνήστε με τον διαχειριστή σας για λεπτομέρειες"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Κατάσταση σημείου πρόσβασης Wi-Fi και σύνδεσης"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-en-rAU/strings.xml b/packages/Tethering/res/values-en-rAU/strings.xml
deleted file mode 100644
index 769e0120..0000000
--- a/packages/Tethering/res/values-en-rAU/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Tethering or hotspot active"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Tap to set up."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Tethering is disabled"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Contact your admin for details"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Hotspot and tethering status"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-en-rCA/strings.xml b/packages/Tethering/res/values-en-rCA/strings.xml
deleted file mode 100644
index 769e0120..0000000
--- a/packages/Tethering/res/values-en-rCA/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Tethering or hotspot active"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Tap to set up."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Tethering is disabled"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Contact your admin for details"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Hotspot and tethering status"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-en-rGB/strings.xml b/packages/Tethering/res/values-en-rGB/strings.xml
deleted file mode 100644
index 769e0120..0000000
--- a/packages/Tethering/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Tethering or hotspot active"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Tap to set up."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Tethering is disabled"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Contact your admin for details"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Hotspot and tethering status"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-en-rIN/strings.xml b/packages/Tethering/res/values-en-rIN/strings.xml
deleted file mode 100644
index 769e0120..0000000
--- a/packages/Tethering/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Tethering or hotspot active"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Tap to set up."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Tethering is disabled"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Contact your admin for details"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Hotspot and tethering status"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-en-rXC/strings.xml b/packages/Tethering/res/values-en-rXC/strings.xml
deleted file mode 100644
index f1674be..0000000
--- a/packages/Tethering/res/values-en-rXC/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‏‎‏‏‏‏‏‎‏‏‏‏‎‏‏‎‎‎‏‎‎‎‎‎‏‏‎‏‏‏‏‎‎‎‎‏‏‏‎‎‏‎‎‏‎‏‏‎‏‏‎‎‎‎‎Tethering or hotspot active‎‏‎‎‏‎"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‎‎‏‏‏‎‎‏‏‎‎‎‏‏‏‎‎‎‎‎‎‎‏‏‏‎‎‏‏‏‏‎‏‏‏‏‏‎‏‏‏‏‎‎‏‎‏‏‎‏‎‎‎‏‏‎‎‎‎Tap to set up.‎‏‎‎‏‎"</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‏‏‎‏‏‎‎‏‎‎‎‏‎‏‎‎‏‎‎‏‎‎‎‏‎‎‎‎‏‏‏‎‏‎‎‎‏‏‏‎‎‎‏‎‏‎‎‎‏‏‎‎‏‏‏‏‏‎Tethering is disabled‎‏‎‎‏‎"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‎‏‏‏‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‏‎‏‏‏‏‏‎‎‏‏‎‎‏‎‎‏‎‏‎‎‏‏‏‎‏‎‏‎‏‎‎‏‎‎‎Contact your admin for details‎‏‎‎‏‎"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‎‏‏‏‏‎‏‏‎‏‎‎‎‎‏‏‎‎‏‎‎‏‏‎‎‎‎‏‏‎‏‏‎‏‏‎‎‎‏‏‏‏‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎Hotspot &amp; tethering status‎‏‎‎‏‎"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-es-rUS/strings.xml b/packages/Tethering/res/values-es-rUS/strings.xml
deleted file mode 100644
index 63689f4..0000000
--- a/packages/Tethering/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Conexión a red o hotspot conectados"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Presiona para configurar esta opción."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Se inhabilitó la conexión mediante dispositivo portátil"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Para obtener más información, comunícate con el administrador"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Estado del hotspot y la conexión mediante dispositivo portátil"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-es/strings.xml b/packages/Tethering/res/values-es/strings.xml
deleted file mode 100644
index 9a34ed5..0000000
--- a/packages/Tethering/res/values-es/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Conexión compartida o punto de acceso activos"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Toca para configurar."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"La conexión compartida está inhabilitada"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Solicita más información a tu administrador"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Estado del punto de acceso y de la conexión compartida"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-et/strings.xml b/packages/Tethering/res/values-et/strings.xml
deleted file mode 100644
index 0970341..0000000
--- a/packages/Tethering/res/values-et/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Jagamine või kuumkoht on aktiivne"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Puudutage seadistamiseks."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Jagamine on keelatud"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Lisateabe saamiseks võtke ühendust oma administraatoriga"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Kuumkoha ja jagamise olek"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-eu/strings.xml b/packages/Tethering/res/values-eu/strings.xml
deleted file mode 100644
index 632019e..0000000
--- a/packages/Tethering/res/values-eu/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Konexioa partekatzea edo wifi-gunea aktibo dago"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Sakatu konfiguratzeko."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Desgaituta dago konexioa partekatzeko aukera"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Xehetasunak lortzeko, jarri administratzailearekin harremanetan"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Wifi-gunearen eta konexioa partekatzeko eginbidearen egoera"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-fa/strings.xml b/packages/Tethering/res/values-fa/strings.xml
deleted file mode 100644
index 2e21c85..0000000
--- a/packages/Tethering/res/values-fa/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"اشتراک‌گذاری اینترنت یا نقطه اتصال فعال"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"برای راه‌اندازی ضربه بزنید."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"اشتراک‌گذاری اینترنت غیرفعال است"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"برای جزئیات، با سرپرستتان تماس بگیرید"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"وضعیت نقطه اتصال و اشتراک‌گذاری اینترنت"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-fi/strings.xml b/packages/Tethering/res/values-fi/strings.xml
deleted file mode 100644
index 413db3f..0000000
--- a/packages/Tethering/res/values-fi/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Yhteyden jakaminen tai hotspot käytössä"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Ota käyttöön napauttamalla."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Yhteyden jakaminen on poistettu käytöstä"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Pyydä lisätietoja järjestelmänvalvojalta"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Hotspotin ja yhteyden jakamisen tila"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-fr-rCA/strings.xml b/packages/Tethering/res/values-fr-rCA/strings.xml
deleted file mode 100644
index eb2e4ba..0000000
--- a/packages/Tethering/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Partage de connexion ou point d\'accès sans fil activé"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Touchez pour configurer."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Le partage de connexion est désactivé"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Communiquez avec votre administrateur pour obtenir plus de détails"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Point d\'accès et partage de connexion"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-fr/strings.xml b/packages/Tethering/res/values-fr/strings.xml
deleted file mode 100644
index 22259c5..0000000
--- a/packages/Tethering/res/values-fr/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Partage de connexion ou point d\'accès activé"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Appuyez pour effectuer la configuration."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Le partage de connexion est désactivé"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Pour en savoir plus, contactez votre administrateur"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"État du point d\'accès et du partage de connexion"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-gl/strings.xml b/packages/Tethering/res/values-gl/strings.xml
deleted file mode 100644
index ded82fc..0000000
--- a/packages/Tethering/res/values-gl/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Conexión compartida ou zona wifi activada"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Toca para configurar."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"A conexión compartida está desactivada"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Contacta co administrador para obter información"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Estado da zona wifi e da conexión compartida"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-gu/strings.xml b/packages/Tethering/res/values-gu/strings.xml
deleted file mode 100644
index 7cbbc2d..0000000
--- a/packages/Tethering/res/values-gu/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"ઇન્ટરનેટ શેર કરવાની સુવિધા અથવા હૉટસ્પૉટ સક્રિય છે"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"સેટઅપ કરવા માટે ટૅપ કરો."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"ઇન્ટરનેટ શેર કરવાની સુવિધા બંધ કરી છે"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"વિગતો માટે તમારા વ્યવસ્થાપકનો સંપર્ક કરો"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"હૉટસ્પૉટ અને ઇન્ટરનેટ શેર કરવાની સુવિધાનું સ્ટેટસ"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-hi/strings.xml b/packages/Tethering/res/values-hi/strings.xml
deleted file mode 100644
index 08af81b..0000000
--- a/packages/Tethering/res/values-hi/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"टेदरिंग या हॉटस्पॉट चालू है"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"सेट अप करने के लिए टैप करें."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"टेदरिंग बंद है"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"जानकारी के लिए अपने एडमिन से संपर्क करें"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"हॉटस्पॉट और टेदरिंग की स्थिति"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-hr/strings.xml b/packages/Tethering/res/values-hr/strings.xml
deleted file mode 100644
index 827c135..0000000
--- a/packages/Tethering/res/values-hr/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Modemsko povezivanje ili žarišna točka aktivni"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Dodirnite da biste postavili."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Modemsko je povezivanje onemogućeno"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Obratite se administratoru da biste saznali pojedinosti"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Status žarišne točke i modemskog povezivanja"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-hu/strings.xml b/packages/Tethering/res/values-hu/strings.xml
deleted file mode 100644
index eb68d6b..0000000
--- a/packages/Tethering/res/values-hu/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Megosztás vagy aktív hotspot"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Koppintson a beállításhoz."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Az internetmegosztás le van tiltva"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"A részletekért forduljon rendszergazdájához"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Hotspot és internetmegosztás állapota"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-hy/strings.xml b/packages/Tethering/res/values-hy/strings.xml
deleted file mode 100644
index 912941e..0000000
--- a/packages/Tethering/res/values-hy/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Մոդեմի ռեժիմը միացված է"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Հպեք՝ կարգավորելու համար։"</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Մոդեմի ռեժիմն անջատված է"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Մանրամասների համար դիմեք ձեր ադմինիստրատորին"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Թեժ կետի և մոդեմի ռեժիմի կարգավիճակը"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-in/strings.xml b/packages/Tethering/res/values-in/strings.xml
deleted file mode 100644
index a4e175a..0000000
--- a/packages/Tethering/res/values-in/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Tethering atau hotspot aktif"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Ketuk untuk menyiapkan."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Tethering dinonaktifkan"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Hubungi admin untuk mengetahui detailnya"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Status hotspot &amp; tethering"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-is/strings.xml b/packages/Tethering/res/values-is/strings.xml
deleted file mode 100644
index e9f6670..0000000
--- a/packages/Tethering/res/values-is/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Kveikt á tjóðrun eða aðgangsstað"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Ýttu til að setja upp."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Slökkt er á tjóðrun"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Hafðu samband við kerfisstjórann til að fá upplýsingar"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Staða heits reits og tjóðrunar"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-it/strings.xml b/packages/Tethering/res/values-it/strings.xml
deleted file mode 100644
index ffb9196..0000000
--- a/packages/Tethering/res/values-it/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Hotspot o tethering attivo"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Tocca per impostare."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Tethering disattivato"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Contatta il tuo amministratore per avere informazioni dettagliate"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Stato hotspot e tethering"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-iw/strings.xml b/packages/Tethering/res/values-iw/strings.xml
deleted file mode 100644
index 7adcb47..0000000
--- a/packages/Tethering/res/values-iw/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"נקודה לשיתוף אינטרנט או שיתוף אינטרנט בין מכשירים: בסטטוס פעיל"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"יש להקיש כדי להגדיר."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"שיתוף האינטרנט בין מכשירים מושבת"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"לפרטים, יש לפנות למנהל המערכת"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"סטטוס של נקודה לשיתוף אינטרנט ושיתוף אינטרנט בין מכשירים"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-ja/strings.xml b/packages/Tethering/res/values-ja/strings.xml
deleted file mode 100644
index f68a730..0000000
--- a/packages/Tethering/res/values-ja/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"テザリングまたはアクセス ポイントが有効です"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"タップしてセットアップします。"</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"テザリングは無効に設定されています"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"詳しくは、管理者にお問い合わせください"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"アクセス ポイントとテザリングのステータス"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-ka/strings.xml b/packages/Tethering/res/values-ka/strings.xml
deleted file mode 100644
index 7c22e82..0000000
--- a/packages/Tethering/res/values-ka/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"ტეტერინგი ან უსადენო ქსელი აქტიურია"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"შეეხეთ დასაყენებლად."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"ტეტერინგი გათიშულია"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"დამატებითი ინფორმაციისთვის დაუკავშირდით თქვენს ადმინისტრატორს"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"უსადენო ქსელის და ტეტერინგის სტატუსი"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-kk/strings.xml b/packages/Tethering/res/values-kk/strings.xml
deleted file mode 100644
index 0857d06..0000000
--- a/packages/Tethering/res/values-kk/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Тетеринг немесе хотспот қосулы"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Реттеу үшін түртіңіз."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Тетеринг өшірілді."</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Мәліметтерді әкімшіден алыңыз."</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Хотспот және тетеринг күйі"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-km/strings.xml b/packages/Tethering/res/values-km/strings.xml
deleted file mode 100644
index 536e3d1..0000000
--- a/packages/Tethering/res/values-km/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"ការភ្ជាប់ ឬហតស្ប៉ត​កំពុងដំណើរការ"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"ចុច​ដើម្បី​រៀបចំ។"</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"ការភ្ជាប់​ត្រូវបានបិទ"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"ទាក់ទងអ្នកគ្រប់គ្រង​របស់អ្នក ដើម្បីទទួលបានព័ត៌មានលម្អិត"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"ស្ថានភាពនៃការភ្ជាប់ និងហតស្ប៉ត"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-kn/strings.xml b/packages/Tethering/res/values-kn/strings.xml
deleted file mode 100644
index 32f5492..0000000
--- a/packages/Tethering/res/values-kn/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"ಟೆಥರಿಂಗ್ ಅಥವಾ ಹಾಟ್‌ಸ್ಪಾಟ್ ಸಕ್ರಿಯವಾಗಿದೆ"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"ಸೆಟಪ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"ಟೆಥರಿಂಗ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"ವಿವರಗಳಿಗಾಗಿ ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"ಹಾಟ್‌ಸ್ಪಾಟ್ ಮತ್ತು ಟೆಥರಿಂಗ್‌ ಸ್ಥಿತಿ"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-ko/strings.xml b/packages/Tethering/res/values-ko/strings.xml
deleted file mode 100644
index 156b247..0000000
--- a/packages/Tethering/res/values-ko/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"테더링 또는 핫스팟 사용"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"설정하려면 탭하세요."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"테더링이 사용 중지됨"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"자세한 정보는 관리자에게 문의하세요."</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"핫스팟 및 테더링 상태"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-ky/strings.xml b/packages/Tethering/res/values-ky/strings.xml
deleted file mode 100644
index 18ee5fd..0000000
--- a/packages/Tethering/res/values-ky/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Модем режими күйүп турат"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Жөндөө үчүн таптап коюңуз."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Телефонду модем катары колдонууга болбойт"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Кеңири маалымат үчүн администраторуңузга кайрылыңыз"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Байланыш түйүнүнүн жана модем режиминин статусу"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-lo/strings.xml b/packages/Tethering/res/values-lo/strings.xml
deleted file mode 100644
index b127670..0000000
--- a/packages/Tethering/res/values-lo/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"ເປີດການປ່ອຍສັນຍານ ຫຼື ຮັອດສະປອດແລ້ວ"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"ແຕະເພື່ອຕັ້ງຄ່າ."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"ການປ່ອຍສັນຍານຖືກປິດໄວ້"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"ຕິດຕໍ່ຜູ້ເບິ່ງແຍງລະບົບສຳລັບລາຍລະອຽດ"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"ສະຖານະຮັອດສະປອດ ແລະ ການປ່ອຍສັນຍານ"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-lt/strings.xml b/packages/Tethering/res/values-lt/strings.xml
deleted file mode 100644
index 8427baf..0000000
--- a/packages/Tethering/res/values-lt/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Įrenginys naudojamas kaip modemas arba įjungtas viešosios interneto prieigos taškas"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Palieskite, kad nustatytumėte."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Įrenginio kaip modemo naudojimas išjungtas"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Jei reikia išsamios informacijos, susisiekite su administratoriumi"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Viešosios interneto prieigos taško ir įrenginio kaip modemo naudojimo būsena"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-lv/strings.xml b/packages/Tethering/res/values-lv/strings.xml
deleted file mode 100644
index aa2d699..0000000
--- a/packages/Tethering/res/values-lv/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Piesaiste vai tīklājs ir aktīvs."</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Pieskarieties, lai to iestatītu."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Piesaiste ir atspējota"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Lai iegūtu detalizētu informāciju, sazinieties ar savu administratoru."</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Tīklāja un piesaistes statuss"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-af/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-af/strings.xml
deleted file mode 100644
index 19d659c..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-af/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Verbinding het nie internet nie"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Toestelle kan nie koppel nie"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Skakel verbinding af"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Warmkol of verbinding is aan"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Bykomende heffings kan geld terwyl jy swerf"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-am/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-am/strings.xml
deleted file mode 100644
index 8995430..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-am/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"ማስተሳሰር ምንም በይነመረብ የለውም"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"መሣሪያዎችን ማገናኘት አይቻልም"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"ማስተሳሰርን አጥፋ"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"መገናኛ ነጥብ ወይም ማስተሳሰር በርቷል"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"በሚያንዣብብበት ጊዜ ተጨማሪ ክፍያዎች ተፈጻሚ ሊሆኑ ይችላሉ"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-ar/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-ar/strings.xml
deleted file mode 100644
index 54f3b53..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-ar/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"ما مِن اتصال بالإنترنت خلال التوصيل"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"تعذّر اتصال الأجهزة"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"إيقاف التوصيل"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"نقطة الاتصال أو التوصيل مفعّلان"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"قد يتم تطبيق رسوم إضافية أثناء التجوال."</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-as/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-as/strings.xml
deleted file mode 100644
index e215141c..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-as/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"টে\'ডাৰিঙৰ ইণ্টাৰনেট নাই"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"ডিভাইচসমূহ সংযোগ কৰিব নোৱাৰি"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"টে\'ডাৰিং অফ কৰক"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"হটস্পট অথবা টে\'ডাৰিং অন আছে"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"ৰ\'মিঙত থাকিলে অতিৰিক্ত মাচুল প্ৰযোজ্য হ’ব পাৰে"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-az/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-az/strings.xml
deleted file mode 100644
index 1fd8e4c..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-az/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Modemin internetə girişi yoxdur"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Cihazları qoşmaq mümkün deyil"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Modemi deaktiv edin"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Hotspot və ya modem aktivdir"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Rouminq zamanı əlavə ödənişlər tətbiq edilə bilər"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-b+sr+Latn/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-b+sr+Latn/strings.xml
deleted file mode 100644
index 1abe4f3..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-b+sr+Latn/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Privezivanje nema pristup internetu"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Povezivanje uređaja nije uspelo"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Isključi privezivanje"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Uključen je hotspot ili privezivanje"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Možda važe dodatni troškovi u romingu"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-be/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-be/strings.xml
deleted file mode 100644
index 38dbd1e..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-be/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Рэжым мадэма выкарыстоўваецца без доступу да інтэрнэту"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Не ўдалося падключыць прылады"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Выключыць рэжым мадэма"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Хот-спот або рэжым мадэма ўключаны"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Пры выкарыстанні роўмінгу можа спаганяцца дадатковая плата"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-bg/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-bg/strings.xml
deleted file mode 100644
index 04b44db..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-bg/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Тетърингът няма връзка с интернет"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Устройствата не могат да установят връзка"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Изключване на тетъринга"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Точката за достъп или тетърингът са включени"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Възможно е да ви бъдат начислени допълнителни такси при роуминг"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-bn/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-bn/strings.xml
deleted file mode 100644
index 579d1be..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-bn/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"টিথারিং করার জন্য কোনও ইন্টারনেট কানেকশন নেই"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"ডিভাইস কানেক্ট করতে পারছে না"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"টিথারিং বন্ধ করুন"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"হটস্পট বা টিথারিং চালু আছে"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"রোমিংয়ের সময় অতিরিক্ত চার্জ করা হতে পারে"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-bs/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-bs/strings.xml
deleted file mode 100644
index 9ce3efe..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-bs/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Povezivanje putem mobitela nema internet"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Uređaji se ne mogu povezati"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Isključi povezivanje putem mobitela"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Pristupna tačka ili povezivanje putem mobitela je uključeno"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Mogu nastati dodatni troškovi u romingu"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-ca/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-ca/strings.xml
deleted file mode 100644
index 46d4c35..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-ca/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"La compartició de xarxa no té accés a Internet"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"No es poden connectar els dispositius"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Desactiva la compartició de xarxa"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"S\'ha activat el punt d\'accés Wi‑Fi o la compartició de xarxa"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"És possible que s\'apliquin costos addicionals en itinerància"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-cs/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-cs/strings.xml
deleted file mode 100644
index cc13860..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-cs/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Tethering nemá připojení k internetu"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Zařízení se nemůžou připojit"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Vypnout tethering"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Je zapnutý hotspot nebo tethering"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Při roamingu mohou být účtovány dodatečné poplatky"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-da/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-da/strings.xml
deleted file mode 100644
index 92c3ae1..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-da/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Netdeling har ingen internetforbindelse"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Enheder kan ikke oprette forbindelse"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Deaktiver netdeling"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Hotspot eller netdeling er aktiveret"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Der opkræves muligvis yderligere gebyrer ved roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-de/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-de/strings.xml
deleted file mode 100644
index 967eb4d..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-de/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Tethering hat keinen Internetzugriff"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Geräte können sich nicht verbinden"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Tethering deaktivieren"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Hotspot oder Tethering ist aktiviert"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Für das Roaming können zusätzliche Gebühren anfallen"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-el/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-el/strings.xml
deleted file mode 100644
index 5fb4974..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-el/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Η σύνδεση δεν έχει πρόσβαση στο διαδίκτυο"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Δεν είναι δυνατή η σύνδεση των συσκευών"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Απενεργοποιήστε τη σύνδεση"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Ενεργό σημείο πρόσβασης Wi-Fi ή ενεργή σύνδεση"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Ενδέχεται να ισχύουν επιπλέον χρεώσεις κατά την περιαγωγή."</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-en-rAU/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-en-rAU/strings.xml
deleted file mode 100644
index 45647f9..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-en-rAU/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Tethering has no Internet"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Devices can’t connect"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Turn off tethering"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Hotspot or tethering is on"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Additional charges may apply while roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-en-rCA/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-en-rCA/strings.xml
deleted file mode 100644
index 45647f9..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-en-rCA/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Tethering has no Internet"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Devices can’t connect"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Turn off tethering"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Hotspot or tethering is on"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Additional charges may apply while roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-en-rGB/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-en-rGB/strings.xml
deleted file mode 100644
index 45647f9..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-en-rGB/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Tethering has no Internet"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Devices can’t connect"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Turn off tethering"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Hotspot or tethering is on"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Additional charges may apply while roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-en-rIN/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-en-rIN/strings.xml
deleted file mode 100644
index 45647f9..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-en-rIN/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Tethering has no Internet"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Devices can’t connect"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Turn off tethering"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Hotspot or tethering is on"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Additional charges may apply while roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-en-rXC/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-en-rXC/strings.xml
deleted file mode 100644
index 7877074..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-en-rXC/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‏‎‎‏‏‏‎‎‏‎‎‏‏‎‏‎‎‎‏‎‏‎‏‏‏‏‏‎‎‏‏‎‎‎‎‏‎‏‏‏‏‎‏‎‏‎‎‎‏‏‏‎‏‎‎‎Tethering has no internet‎‏‎‎‏‎"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‏‎‏‎‏‎‏‏‏‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‏‎‎‎‏‏‎‎‎‎‎‏‏‏‎‎‏‏‎‏‏‎‎‏‎‏‎‎‎‎‏‏‏‎Devices can’t connect‎‏‎‎‏‎"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‎‎‏‏‏‎‏‏‏‎‏‎‎‏‎‏‎‏‎‎‏‏‏‎‎‎‏‏‎‎‏‏‎‏‎‏‏‏‏‎‎‎‏‎‏‏‎‎‎‏‎‏‎‎‎‎Turn off tethering‎‏‎‎‏‎"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‏‏‏‎‏‏‎‏‎‏‎‏‎‏‏‎‎‎‎‏‎‎‎‏‏‎‎‎‎‎‎‎‎‏‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‏‎‎‏‏‏‎Hotspot or tethering is on‎‏‎‎‏‎"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‏‎‏‎‎‎‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‎‎‏‏‏‏‏‎‏‏‎‎‎‎‏‏‎‎‎‏‏‏‏‏‎‏‎‏‎‏‏‏‏‎‎Additional charges may apply while roaming‎‏‎‎‏‎"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-es-rUS/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-es-rUS/strings.xml
deleted file mode 100644
index 08edd81..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-es-rUS/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"La conexión mediante dispositivo móvil no tiene Internet"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"No se pueden conectar los dispositivos"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Desactivar conexión mediante dispositivo móvil"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Se activó el hotspot o la conexión mediante dispositivo móvil"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Es posible que se apliquen cargos adicionales por roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-es/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-es/strings.xml
deleted file mode 100644
index 79f51d0..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-es/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"La conexión no se puede compartir, porque no hay acceso a Internet"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Los dispositivos no se pueden conectar"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Desactivar conexión compartida"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Punto de acceso o conexión compartida activados"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Puede que se apliquen cargos adicionales en itinerancia"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-et/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-et/strings.xml
deleted file mode 100644
index 2da5f8a..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-et/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Jagamisel puudub internetiühendus"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Seadmed ei saa ühendust luua"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Lülita jagamine välja"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Kuumkoht või jagamine on sisse lülitatud"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Rändluse kasutamisega võivad kaasneda lisatasud"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-eu/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-eu/strings.xml
deleted file mode 100644
index 2073f28..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-eu/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Konexioa partekatzeko aukerak ez du Interneteko konexiorik"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Ezin dira konektatu gailuak"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Desaktibatu konexioa partekatzeko aukera"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Wifi-gunea edo konexioa partekatzeko aukera aktibatuta dago"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Baliteke kostu gehigarriak ordaindu behar izatea ibiltaritzan"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-fa/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-fa/strings.xml
deleted file mode 100644
index e21b2a0..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-fa/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"«اشتراک‌گذاری اینترنت» به اینترنت دسترسی ندارد"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"دستگاه‌ها متصل نمی‌شوند"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"خاموش کردن «اشتراک‌گذاری اینترنت»"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"«نقطه اتصال» یا «اشتراک‌گذاری اینترنت» روشن است"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"ممکن است درحین فراگردی تغییرات دیگر اعمال شود"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-fi/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-fi/strings.xml
deleted file mode 100644
index 88b0b13..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-fi/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Ei jaettavaa internetyhteyttä"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Laitteet eivät voi muodostaa yhteyttä"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Laita yhteyden jakaminen pois päältä"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Hotspot tai yhteyden jakaminen on päällä"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Roaming voi aiheuttaa lisämaksuja"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-fr-rCA/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-fr-rCA/strings.xml
deleted file mode 100644
index 3b781bc..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-fr-rCA/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Le partage de connexion n\'est pas connecté à Internet"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Impossible de connecter les appareils"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Désactiver le partage de connexion"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Le point d\'accès ou le partage de connexion est activé"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"En itinérance, des frais supplémentaires peuvent s\'appliquer"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-fr/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-fr/strings.xml
deleted file mode 100644
index 51d7203..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-fr/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Aucune connexion à Internet n\'est disponible pour le partage de connexion"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Impossible de connecter les appareils"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Désactiver le partage de connexion"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Le point d\'accès ou le partage de connexion est activé"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"En itinérance, des frais supplémentaires peuvent s\'appliquer"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-gl/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-gl/strings.xml
deleted file mode 100644
index 008ccb4..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-gl/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"A conexión compartida non ten Internet"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Non se puideron conectar os dispositivos"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Desactivar conexión compartida"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Está activada a zona wifi ou a conexión compartida"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Pódense aplicar cargos adicionais en itinerancia"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-gu/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-gu/strings.xml
deleted file mode 100644
index f2e3b4d..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-gu/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"ઇન્ટરનેટ શેર કરવાની સુવિધામાં ઇન્ટરનેટ નથી"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"ડિવાઇસ કનેક્ટ કરી શકાતા નથી"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"ઇન્ટરનેટ શેર કરવાની સુવિધા બંધ કરો"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"હૉટસ્પૉટ અથવા ઇન્ટરનેટ શેર કરવાની સુવિધા ચાલુ છે"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"રોમિંગમાં વધારાના શુલ્ક લાગી શકે છે"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-hi/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-hi/strings.xml
deleted file mode 100644
index b11839d..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-hi/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"टेदरिंग से इंटरनेट नहीं चल रहा"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"डिवाइस कनेक्ट नहीं हो पा रहे"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"टेदरिंग बंद करें"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"हॉटस्पॉट या टेदरिंग चालू है"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"रोमिंग के दौरान अतिरिक्त शुल्क लग सकता है"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-hr/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-hr/strings.xml
deleted file mode 100644
index 0a5aca2..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-hr/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Modemsko povezivanje nema internet"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Uređaji se ne mogu povezati"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Isključivanje modemskog povezivanja"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Uključena je žarišna točka ili modemsko povezivanje"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"U roamingu su mogući dodatni troškovi"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-hu/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-hu/strings.xml
deleted file mode 100644
index 21c689a4..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-hu/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Nincs internetkapcsolat az internet megosztásához"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Az eszközök nem tudnak csatlakozni"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Internetmegosztás kikapcsolása"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"A hotspot vagy az internetmegosztás be van kapcsolva"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Roaming során további díjak léphetnek fel"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-hy/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-hy/strings.xml
deleted file mode 100644
index 689d9287..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-hy/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Մոդեմի ռեժիմի կապը բացակայում է"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Չհաջողվեց միացնել սարքը"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Անջատել մոդեմի ռեժիմը"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Թեժ կետը կամ մոդեմի ռեժիմը միացված է"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Ռոումինգում կարող են լրացուցիչ վճարներ գանձվել"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-in/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-in/strings.xml
deleted file mode 100644
index a5f4d19..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-in/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Tidak ada koneksi internet di tethering"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Perangkat tidak dapat terhubung"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Nonaktifkan tethering"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Hotspot atau tethering aktif"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Biaya tambahan mungkin berlaku saat roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-is/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-is/strings.xml
deleted file mode 100644
index fc7e8aa..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-is/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Tjóðrun er ekki með internettengingu"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Tæki geta ekki tengst"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Slökkva á tjóðrun"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Kveikt er á heitum reit eða tjóðrun"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Viðbótargjöld kunna að eiga við í reiki"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-it/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-it/strings.xml
deleted file mode 100644
index 6456dd1..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-it/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Nessuna connessione a Internet per il tethering"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Impossibile connettere i dispositivi"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Disattiva il tethering"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Hotspot o tethering attivi"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Potrebbero essere applicati costi aggiuntivi durante il roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-iw/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-iw/strings.xml
deleted file mode 100644
index 46b24bd..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-iw/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"אי אפשר להפעיל את תכונת שיתוף האינטרנט בין מכשירים כי אין חיבור לאינטרנט"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"למכשירים אין אפשרות להתחבר"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"השבתה של שיתוף האינטרנט בין מכשירים"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"תכונת הנקודה לשיתוף אינטרנט או תכונת שיתוף האינטרנט בין מכשירים פועלת"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"ייתכנו חיובים נוספים בעת נדידה"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-ja/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-ja/strings.xml
deleted file mode 100644
index e6eb277..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-ja/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"テザリングがインターネットに接続されていません"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"デバイスを接続できません"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"テザリングを OFF にする"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"アクセス ポイントまたはテザリングが ON です"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"ローミング時に追加料金が発生することがあります"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-ka/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-ka/strings.xml
deleted file mode 100644
index aeddd71..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-ka/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"ტეტერინგს არ აქვს ინტერნეტზე წვდომა"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"მოწყობილობები ვერ ახერხებენ დაკავშირებას"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"ტეტერინგის გამორთვა"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"ჩართულია უსადენო ქსელი ან ტეტერინგი"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"როუმინგის გამოყენებისას შეიძლება ჩამოგეჭრათ დამატებითი საფასური"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-kk/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-kk/strings.xml
deleted file mode 100644
index 255f0a2..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-kk/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Тетеринг режимі интернет байланысынсыз пайдаланылуда"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Құрылғыларды байланыстыру мүмкін емес"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Тетерингіні өшіру"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Хотспот немесе тетеринг қосулы"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Роуминг кезінде қосымша ақы алынуы мүмкін."</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-km/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-km/strings.xml
deleted file mode 100644
index 2bceb1c..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-km/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"ការភ្ជាប់​មិនមានអ៊ីនធឺណិត​ទេ"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"មិនអាច​ភ្ជាប់ឧបករណ៍​បានទេ"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"បិទការភ្ជាប់"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"ហតស្ប៉ត ឬការភ្ជាប់​ត្រូវបានបើក"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"អាចមាន​ការគិតថ្លៃ​បន្ថែម នៅពេល​រ៉ូមីង"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-kn/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-kn/strings.xml
deleted file mode 100644
index ed76930..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-kn/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"ಟೆಥರಿಂಗ್‌ ಯಾವುದೇ ಇಂಟರ್ನೆಟ್ ಕನೆಕ್ಷನ್ ಹೊಂದಿಲ್ಲ"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"ಸಾಧನಗಳನ್ನು ಕನೆಕ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"ಟೆಥರಿಂಗ್‌ ಆಫ್ ಮಾಡಿ"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"ಹಾಟ್‌ಸ್ಪಾಟ್ ಅಥವಾ ಟೆಥರಿಂಗ್‌ ಆನ್ ಆಗಿದೆ"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"ರೋಮಿಂಗ್‌ನಲ್ಲಿರುವಾಗ ಹೆಚ್ಚುವರಿ ಶುಲ್ಕಗಳು ಅನ್ವಯವಾಗಬಹುದು"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-ko/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-ko/strings.xml
deleted file mode 100644
index 6e50494..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-ko/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"테더링으로 인터넷을 사용할 수 없음"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"기기에서 연결할 수 없음"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"테더링 사용 중지"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"핫스팟 또는 테더링 켜짐"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"로밍 중에는 추가 요금이 발생할 수 있습니다."</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-ky/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-ky/strings.xml
deleted file mode 100644
index d68128b..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-ky/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Модем режими Интернети жок колдонулууда"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Түзмөктөр туташпай жатат"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Модем режимин өчүрүү"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Байланыш түйүнү же модем режими күйүк"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Роумингде кошумча акы алынышы мүмкүн"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-lo/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-lo/strings.xml
deleted file mode 100644
index 03e134a..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-lo/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"ການປ່ອຍສັນຍານບໍ່ມີອິນເຕີເນັດ"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"ອຸປະກອນບໍ່ສາມາດເຊື່ອມຕໍ່ໄດ້"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"ປິດການປ່ອຍສັນຍານ"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"ເປີດໃຊ້ຮັອດສະປອດ ຫຼື ການປ່ອຍສັນຍານຢູ່"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"ອາດມີຄ່າໃຊ້ຈ່າຍເພີ່ມເຕີມໃນລະຫວ່າງການໂຣມມິງ"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-lt/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-lt/strings.xml
deleted file mode 100644
index 652cedc..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-lt/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Nėra įrenginio kaip modemo naudojimo interneto ryšio"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Nepavyko susieti įrenginių"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Išjungti įrenginio kaip modemo naudojimą"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Įjungtas viešosios interneto prieigos taškas arba įrenginio kaip modemo naudojimas"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Veikiant tarptinkliniam ryšiui gali būti taikomi papildomi mokesčiai"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-lv/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-lv/strings.xml
deleted file mode 100644
index 2219722..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-lv/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Piesaistei nav interneta savienojuma"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Nevar savienot ierīces"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Izslēgt piesaisti"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Ir ieslēgts tīklājs vai piesaiste"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Viesabonēšanas laikā var tikt piemērota papildu samaksa"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-mk/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-mk/strings.xml
deleted file mode 100644
index 227f9e3..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-mk/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Нема интернет преку мобилен"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Уредите не може да се поврзат"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Исклучи интернет преку мобилен"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Точката на пристап или интернетот преку мобилен е вклучен"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"При роаминг може да се наплатат дополнителни трошоци"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-ml/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-ml/strings.xml
deleted file mode 100644
index ec43885..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-ml/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"ടെതറിംഗിന് ഇന്റർനെറ്റ് ഇല്ല"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"ഉപകരണങ്ങൾ കണക്റ്റ് ചെയ്യാനാവില്ല"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"ടെതറിംഗ് ഓഫാക്കുക"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"ഹോട്ട്‌സ്‌പോട്ട് അല്ലെങ്കിൽ ടെതറിംഗ് ഓണാണ്"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"റോമിംഗ് ചെയ്യുമ്പോൾ അധിക നിരക്കുകൾ ബാധകമായേക്കാം"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-mn/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-mn/strings.xml
deleted file mode 100644
index e263573..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-mn/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Модемд интернэт алга байна"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Төхөөрөмжүүд холбогдох боломжгүй байна"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Модем болгохыг унтраах"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Сүлжээний цэг эсвэл модем болгох асаалттай байна"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Роумингийн үеэр нэмэлт төлбөр нэхэмжилж болзошгүй"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-mr/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-mr/strings.xml
deleted file mode 100644
index adf845d..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-mr/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"टेदरिंगला इंटरनेट नाही"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"डिव्हाइस कनेक्ट होऊ शकत नाहीत"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"टेदरिंग बंद करा"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"हॉटस्पॉट किंवा टेदरिंग सुरू आहे"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"रोमिंगदरम्यान अतिरिक्त शुल्क लागू होऊ शकतात"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-ms/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-ms/strings.xml
deleted file mode 100644
index f65c451..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-ms/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Penambatan tiada Internet"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Peranti tidak dapat disambungkan"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Matikan penambatan"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Tempat liputan atau penambatan dihidupkan"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Caj tambahan mungkin digunakan semasa perayauan"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-my/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-my/strings.xml
deleted file mode 100644
index 4118e77..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-my/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"မိုဘိုင်းဖုန်းသုံး ချိတ်ဆက်မျှဝေခြင်းတွင် အင်တာနက် မရှိပါ"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"စက်များ ချိတ်ဆက်၍ မရပါ"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"မိုဘိုင်းဖုန်းသုံး ချိတ်ဆက်မျှဝေခြင်း ပိတ်ရန်"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"ဟော့စပေါ့ (သို့) မိုဘိုင်းဖုန်းသုံး ချိတ်ဆက်မျှဝေခြင်း ဖွင့်ထားသည်"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"ပြင်ပကွန်ရက်နှင့် ချိတ်ဆက်သည့်အခါ နောက်ထပ်ကျသင့်မှုများ ရှိနိုင်သည်"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-nb/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-nb/strings.xml
deleted file mode 100644
index 3685358..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-nb/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Internettdeling har ikke internettilgang"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Enhetene kan ikke koble til"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Slå av internettdeling"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Wi-Fi-sone eller internettdeling er på"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Ytterligere kostnader kan påløpe under roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-ne/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-ne/strings.xml
deleted file mode 100644
index d074f15..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-ne/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"टेदरिङमार्फत इन्टरनेट कनेक्सन प्राप्त हुन सकेन"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"यन्त्रहरू कनेक्ट गर्न सकिएन"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"टेदरिङ निष्क्रिय पार्नुहोस्"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"हटस्पट वा टेदरिङ सक्रिय छ"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"रोमिङ सेवा प्रयोग गर्दा अतिरिक्त शुल्क लाग्न सक्छ"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-nl/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-nl/strings.xml
deleted file mode 100644
index 1d88894..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-nl/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Tethering heeft geen internet"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Apparaten kunnen niet worden verbonden"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Tethering uitschakelen"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Hotspot of tethering is ingeschakeld"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Er kunnen extra kosten voor roaming in rekening worden gebracht."</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-or/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-or/strings.xml
deleted file mode 100644
index 8038815..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-or/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"ଟିଥରିଂ ପାଇଁ କୌଣସି ଇଣ୍ଟର୍ନେଟ୍ ସଂଯୋଗ ନାହିଁ"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"ଡିଭାଇସଗୁଡ଼ିକ ସଂଯୋଗ କରାଯାଇପାରିବ ନାହିଁ"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"ଟିଥରିଂ ବନ୍ଦ କରନ୍ତୁ"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"ହଟସ୍ପଟ୍ କିମ୍ବା ଟିଥରିଂ ଚାଲୁ ଅଛି"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"ରୋମିଂରେ ଥିବା ସମୟରେ ଅତିରିକ୍ତ ଶୁଳ୍କ ଲାଗୁ ହୋଇପାରେ"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-pa/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-pa/strings.xml
deleted file mode 100644
index 819833e..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-pa/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"ਟੈਦਰਿੰਗ ਕੋਲ ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ ਨਹੀਂ ਹੈ"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"ਡੀਵਾਈਸ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤੇ ਜਾ ਸਕਦੇ"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"ਟੈਦਰਿੰਗ ਬੰਦ ਕਰੋ"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"ਹੌਟਸਪੌਟ ਜਾਂ ਟੈਦਰਿੰਗ ਚਾਲੂ ਹੈ"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"ਰੋਮਿੰਗ ਦੌਰਾਨ ਵਧੀਕ ਖਰਚੇ ਲਾਗੂ ਹੋ ਸਕਦੇ ਹਨ"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-pl/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-pl/strings.xml
deleted file mode 100644
index 65e4380..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-pl/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Tethering nie ma internetu"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Urządzenia nie mogą się połączyć"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Wyłącz tethering"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Hotspot lub tethering jest włączony"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Podczas korzystania z roamingu mogą zostać naliczone dodatkowe opłaty"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-pt-rBR/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-pt-rBR/strings.xml
deleted file mode 100644
index d886617..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-pt-rBR/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"O tethering não tem Internet"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Não é possível conectar os dispositivos"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Desativar o tethering"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Ponto de acesso ou tethering ativado"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Pode haver cobranças extras durante o roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-pt-rPT/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-pt-rPT/strings.xml
deleted file mode 100644
index bfd45ca..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-pt-rPT/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"A ligação (à Internet) via telemóvel não tem Internet"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Não é possível ligar os dispositivos"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Desativar ligação (à Internet) via telemóvel"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"A zona Wi-Fi ou a ligação (à Internet) via telemóvel está ativada"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Podem aplicar-se custos adicionais em roaming."</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-pt/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-pt/strings.xml
deleted file mode 100644
index d886617..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-pt/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"O tethering não tem Internet"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Não é possível conectar os dispositivos"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Desativar o tethering"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Ponto de acesso ou tethering ativado"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Pode haver cobranças extras durante o roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-ro/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-ro/strings.xml
deleted file mode 100644
index 8d87a9e5..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-ro/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Procesul de tethering nu are internet"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Dispozitivele nu se pot conecta"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Dezactivați procesul de tethering"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"S-a activat hotspotul sau tethering"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Se pot aplica taxe suplimentare pentru roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-ru/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-ru/strings.xml
deleted file mode 100644
index dbdb9eb..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-ru/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Режим модема используется без доступа к Интернету"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Невозможно подключить устройства."</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Отключить режим модема"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Включены точка доступа или режим модема"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"За использование услуг связи в роуминге может взиматься дополнительная плата."</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-si/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-si/strings.xml
deleted file mode 100644
index d8301e4..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-si/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"ටෙදරින් හට අන්තර්ජාලය නැත"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"උපාංගවලට සම්බන්ධ විය නොහැකිය"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"ටෙදරින් ක්‍රියාවිරහිත කරන්න"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"හොට්ස්පොට් හෝ ටෙදරින් ක්‍රියාත්මකයි"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"රෝමිං අතරතුර අමතර ගාස්තු අදාළ විය හැකිය"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-sk/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-sk/strings.xml
deleted file mode 100644
index bef7136..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-sk/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Tethering nemá internetové pripojenie"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Zariadenia sa nemôžu pripojiť"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Vypnúť tethering"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Je zapnutý hotspot alebo tethering"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Počas roamingu vám môžu byť účtované ďalšie poplatky"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-sl/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-sl/strings.xml
deleted file mode 100644
index 3202c62..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-sl/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Internetna povezava prek mobilnega telefona ni vzpostavljena"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Napravi se ne moreta povezati"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Izklopi internetno povezavo prek mobilnega telefona"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Dostopna točka ali internetna povezava prek mobilnega telefona je vklopljena"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Med gostovanjem lahko nastanejo dodatni stroški"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-sq/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-sq/strings.xml
deleted file mode 100644
index 37f6ad2..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-sq/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Ndarja e internetit nuk ka internet"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Pajisjet nuk mund të lidhen"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Çaktivizo ndarjen e internetit"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Zona e qasjes për internet ose ndarja e internetit është aktive"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Mund të zbatohen tarifime shtesë kur je në roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-sr/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-sr/strings.xml
deleted file mode 100644
index 5566d03..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-sr/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Привезивање нема приступ интернету"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Повезивање уређаја није успело"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Искључи привезивање"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Укључен је хотспот или привезивање"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Можда важе додатни трошкови у ромингу"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-sv/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-sv/strings.xml
deleted file mode 100644
index 9765acd..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-sv/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Det finns ingen internetanslutning för internetdelningen"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Enheterna kan inte anslutas"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Inaktivera internetdelning"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Surfzon eller internetdelning har aktiverats"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Ytterligare avgifter kan tillkomma vid roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-sw/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-sw/strings.xml
deleted file mode 100644
index cf850c9..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-sw/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Kipengele cha kusambaza mtandao hakina intaneti"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Imeshindwa kuunganisha vifaa"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Zima kipengele cha kusambaza mtandao"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Umewasha kipengele cha kusambaza mtandao au mtandao pepe"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Huenda ukatozwa gharama za ziada ukitumia mitandao ya ng\'ambo"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-ta/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-ta/strings.xml
deleted file mode 100644
index f4b15aa..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-ta/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"இணைப்பு முறைக்கு இணைய இணைப்பு இல்லை"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"சாதனங்களால் இணைய முடியவில்லை"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"இணைப்பு முறையை ஆஃப் செய்"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"ஹாட்ஸ்பாட் அல்லது இணைப்பு முறை ஆன் செய்யப்பட்டுள்ளது"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"ரோமிங்கின்போது கூடுதல் கட்டணங்கள் விதிக்கப்படக்கூடும்"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-te/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-te/strings.xml
deleted file mode 100644
index 937d34d..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-te/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"టెథరింగ్ చేయడానికి ఇంటర్నెట్ కనెక్షన్ లేదు"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"పరికరాలు కనెక్ట్ అవ్వడం లేదు"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"టెథరింగ్‌ను ఆఫ్ చేయండి"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"హాట్‌స్పాట్ లేదా టెథరింగ్ ఆన్‌లో ఉంది"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"రోమింగ్‌లో ఉన్నప్పుడు అదనపు ఛార్జీలు వర్తించవచ్చు"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-th/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-th/strings.xml
deleted file mode 100644
index f781fae..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-th/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"การเชื่อมต่ออินเทอร์เน็ตผ่านมือถือไม่มีอินเทอร์เน็ต"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"อุปกรณ์เชื่อมต่อไม่ได้"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"ปิดการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือ"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"ฮอตสปอตหรือการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือเปิดอยู่"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"อาจมีค่าใช้จ่ายเพิ่มเติมขณะโรมมิ่ง"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-tl/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-tl/strings.xml
deleted file mode 100644
index 8d5d4653..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-tl/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Walang internet ang pag-tether"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Hindi makakonekta ang mga device"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"I-off ang pag-tether"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Naka-on ang Hotspot o pag-tether"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Posibleng magkaroon ng mga karagdagang singil habang nagro-roam"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-tr/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-tr/strings.xml
deleted file mode 100644
index 80cab33..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-tr/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Tethering\'in internet bağlantısı yok"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Cihazlar bağlanamıyor"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Tethering\'i kapat"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Hotspot veya tethering açık"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Dolaşım sırasında ek ücretler uygulanabilir"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-uk/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-uk/strings.xml
deleted file mode 100644
index c05932a..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-uk/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Телефон, який використовується як модем, не підключений до Інтернету"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Не вдається підключити пристрої"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Вимкнути використання телефона як модема"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Увімкнено точку доступу або використання телефона як модема"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"У роумінгу може стягуватися додаткова плата"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-ur/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-ur/strings.xml
deleted file mode 100644
index d820eee..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-ur/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"ٹیدرنگ میں انٹرنیٹ نہیں ہے"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"آلات منسلک نہیں ہو سکتے"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"ٹیدرنگ آف کریں"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"ہاٹ اسپاٹ یا ٹیدرنگ آن ہے"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"رومنگ کے دوران اضافی چارجز لاگو ہو سکتے ہیں"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-uz/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-uz/strings.xml
deleted file mode 100644
index 726148a..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-uz/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Modem internetga ulanmagan"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Qurilmalar ulanmadi"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Modem rejimini faolsizlantirish"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Hotspot yoki modem rejimi yoniq"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Rouming vaqtida qoʻshimcha haq olinishi mumkin"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-vi/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-vi/strings.xml
deleted file mode 100644
index b7cb045..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-vi/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Không có Internet để chia sẻ kết Internet"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Các thiết bị không thể kết nối"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Tắt tính năng chia sẻ Internet"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"Điểm phát sóng hoặc tính năng chia sẻ Internet đang bật"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Bạn có thể mất thêm phí dữ liệu khi chuyển vùng"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-zh-rCN/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-zh-rCN/strings.xml
deleted file mode 100644
index af91aff..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-zh-rCN/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"共享网络未连接到互联网"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"设备无法连接"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"关闭网络共享"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"热点或网络共享已开启"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"漫游时可能会产生额外的费用"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-zh-rHK/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-zh-rHK/strings.xml
deleted file mode 100644
index 28e6b80..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-zh-rHK/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"無法透過網絡共享連線至互聯網"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"裝置無法連接"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"關閉網絡共享"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"熱點或網絡共享已開啟"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"漫遊時可能需要支付額外費用"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-zh-rTW/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-zh-rTW/strings.xml
deleted file mode 100644
index 528a1e5..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-zh-rTW/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"無法透過網路共用連上網際網路"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"裝置無法連線"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"關閉網路共用"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"無線基地台或網路共用已開啟"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"使用漫遊服務可能須支付額外費用"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004-zu/strings.xml b/packages/Tethering/res/values-mcc310-mnc004-zu/strings.xml
deleted file mode 100644
index 11eb666..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004-zu/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="5030042590486713460">"Ukusebenzisa ifoni njengemodemu akunayo i-inthanethi"</string>
-    <string name="no_upstream_notification_message" msgid="3843613362272973447">"Amadivayisi awakwazi ukuxhumeka"</string>
-    <string name="no_upstream_notification_disable_button" msgid="6385491461813507624">"Vala ukusebenzisa ifoni njengemodemu"</string>
-    <string name="upstream_roaming_notification_title" msgid="3015912166812283303">"I-hotspot noma ukusebenzisa ifoni njengemodemu kuvuliwe"</string>
-    <string name="upstream_roaming_notification_message" msgid="6724434706748439902">"Kungaba nezinkokhelo ezengeziwe uma uzula"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc310-mnc004/config.xml b/packages/Tethering/res/values-mcc310-mnc004/config.xml
deleted file mode 100644
index 5c5be04..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004/config.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<resources>
-    <!-- Delay(millisecond) to show no upstream notification after there's no Backhaul. Set delay to
-         "0" for disable this feature. -->
-    <integer name="delay_to_show_no_upstream_after_no_backhaul">5000</integer>
-
-    <!-- Config for showing upstream roaming notification. -->
-    <bool name="config_upstream_roaming_notification">true</bool>
-</resources>
\ No newline at end of file
diff --git a/packages/Tethering/res/values-mcc310-mnc004/strings.xml b/packages/Tethering/res/values-mcc310-mnc004/strings.xml
deleted file mode 100644
index ce9ff60..0000000
--- a/packages/Tethering/res/values-mcc310-mnc004/strings.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<resources>
-    <!-- String for no upstream notification title [CHAR LIMIT=200] -->
-    <string name="no_upstream_notification_title">Tethering has no internet</string>
-    <!-- String for no upstream notification title [CHAR LIMIT=200] -->
-    <string name="no_upstream_notification_message">Devices can\u2019t connect</string>
-    <!-- String for no upstream notification disable button [CHAR LIMIT=200] -->
-    <string name="no_upstream_notification_disable_button">Turn off tethering</string>
-
-    <!-- String for cellular roaming notification title [CHAR LIMIT=200] -->
-    <string name="upstream_roaming_notification_title">Hotspot or tethering is on</string>
-    <!-- String for cellular roaming notification message [CHAR LIMIT=500] -->
-    <string name="upstream_roaming_notification_message">Additional charges may apply while roaming</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-af/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-af/strings.xml
deleted file mode 100644
index 9bfa531..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-af/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Verbinding het nie internet nie"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Toestelle kan nie koppel nie"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Skakel verbinding af"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Warmkol of verbinding is aan"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Bykomende heffings kan geld terwyl jy swerf"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-am/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-am/strings.xml
deleted file mode 100644
index 5949dfa..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-am/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"ማስተሳሰር ምንም በይነመረብ የለውም"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"መሣሪያዎችን ማገናኘት አይቻልም"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"ማስተሳሰርን አጥፋ"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"መገናኛ ነጥብ ወይም ማስተሳሰር በርቷል"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"በሚያንዣብብበት ጊዜ ተጨማሪ ክፍያዎች ተፈጻሚ ሊሆኑ ይችላሉ"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-ar/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-ar/strings.xml
deleted file mode 100644
index 8467f9b..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-ar/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"ما مِن اتصال بالإنترنت خلال التوصيل"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"تعذّر اتصال الأجهزة"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"إيقاف التوصيل"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"نقطة الاتصال أو التوصيل مفعّلان"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"قد يتم تطبيق رسوم إضافية أثناء التجوال."</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-as/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-as/strings.xml
deleted file mode 100644
index 9776bd8..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-as/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"টে\'ডাৰিঙৰ ইণ্টাৰনেট নাই"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"ডিভাইচসমূহ সংযোগ কৰিব নোৱাৰি"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"টে\'ডাৰিং অফ কৰক"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"হটস্পট অথবা টে\'ডাৰিং অন আছে"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"ৰ\'মিঙত থাকিলে অতিৰিক্ত মাচুল প্ৰযোজ্য হ’ব পাৰে"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-az/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-az/strings.xml
deleted file mode 100644
index e6d3eaf..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-az/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Modemin internetə girişi yoxdur"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Cihazları qoşmaq mümkün deyil"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Modemi deaktiv edin"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Hotspot və ya modem aktivdir"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Rouminq zamanı əlavə ödənişlər tətbiq edilə bilər"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-b+sr+Latn/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-b+sr+Latn/strings.xml
deleted file mode 100644
index 4c8a1df..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-b+sr+Latn/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Privezivanje nema pristup internetu"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Povezivanje uređaja nije uspelo"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Isključi privezivanje"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Uključen je hotspot ili privezivanje"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Možda važe dodatni troškovi u romingu"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-be/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-be/strings.xml
deleted file mode 100644
index edfa41e..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-be/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Рэжым мадэма выкарыстоўваецца без доступу да інтэрнэту"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Не ўдалося падключыць прылады"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Выключыць рэжым мадэма"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Хот-спот або рэжым мадэма ўключаны"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Пры выкарыстанні роўмінгу можа спаганяцца дадатковая плата"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-bg/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-bg/strings.xml
deleted file mode 100644
index f563981..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-bg/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Тетърингът няма връзка с интернет"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Устройствата не могат да установят връзка"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Изключване на тетъринга"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Точката за достъп или тетърингът са включени"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Възможно е да ви бъдат начислени допълнителни такси при роуминг"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-bn/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-bn/strings.xml
deleted file mode 100644
index d8ecd2e..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-bn/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"টিথারিং করার জন্য কোনও ইন্টারনেট কানেকশন নেই"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"ডিভাইস কানেক্ট করতে পারছে না"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"টিথারিং বন্ধ করুন"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"হটস্পট বা টিথারিং চালু আছে"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"রোমিংয়ের সময় অতিরিক্ত চার্জ করা হতে পারে"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-bs/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-bs/strings.xml
deleted file mode 100644
index b85fd5e..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-bs/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Povezivanje putem mobitela nema internet"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Uređaji se ne mogu povezati"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Isključi povezivanje putem mobitela"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Pristupna tačka ili povezivanje putem mobitela je uključeno"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Mogu nastati dodatni troškovi u romingu"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-ca/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-ca/strings.xml
deleted file mode 100644
index a357215..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-ca/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"La compartició de xarxa no té accés a Internet"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"No es poden connectar els dispositius"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Desactiva la compartició de xarxa"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"S\'ha activat el punt d\'accés Wi‑Fi o la compartició de xarxa"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"És possible que s\'apliquin costos addicionals en itinerància"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-cs/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-cs/strings.xml
deleted file mode 100644
index 91196be..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-cs/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Tethering nemá připojení k internetu"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Zařízení se nemůžou připojit"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Vypnout tethering"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Je zapnutý hotspot nebo tethering"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Při roamingu mohou být účtovány dodatečné poplatky"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-da/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-da/strings.xml
deleted file mode 100644
index 1968900..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-da/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Netdeling har ingen internetforbindelse"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Enheder kan ikke oprette forbindelse"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Deaktiver netdeling"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Hotspot eller netdeling er aktiveret"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Der opkræves muligvis yderligere gebyrer ved roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-de/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-de/strings.xml
deleted file mode 100644
index eb3f8c5..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-de/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Tethering hat keinen Internetzugriff"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Geräte können sich nicht verbinden"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Tethering deaktivieren"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Hotspot oder Tethering ist aktiviert"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Für das Roaming können zusätzliche Gebühren anfallen"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-el/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-el/strings.xml
deleted file mode 100644
index 56c3d81..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-el/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Η σύνδεση δεν έχει πρόσβαση στο διαδίκτυο"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Δεν είναι δυνατή η σύνδεση των συσκευών"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Απενεργοποιήστε τη σύνδεση"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Ενεργό σημείο πρόσβασης Wi-Fi ή ενεργή σύνδεση"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Ενδέχεται να ισχύουν επιπλέον χρεώσεις κατά την περιαγωγή."</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-en-rAU/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-en-rAU/strings.xml
deleted file mode 100644
index dd1a197..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-en-rAU/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Tethering has no Internet"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Devices can’t connect"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Turn off tethering"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Hotspot or tethering is on"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Additional charges may apply while roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-en-rCA/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-en-rCA/strings.xml
deleted file mode 100644
index dd1a197..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-en-rCA/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Tethering has no Internet"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Devices can’t connect"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Turn off tethering"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Hotspot or tethering is on"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Additional charges may apply while roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-en-rGB/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-en-rGB/strings.xml
deleted file mode 100644
index dd1a197..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-en-rGB/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Tethering has no Internet"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Devices can’t connect"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Turn off tethering"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Hotspot or tethering is on"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Additional charges may apply while roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-en-rIN/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-en-rIN/strings.xml
deleted file mode 100644
index dd1a197..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-en-rIN/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Tethering has no Internet"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Devices can’t connect"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Turn off tethering"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Hotspot or tethering is on"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Additional charges may apply while roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-en-rXC/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-en-rXC/strings.xml
deleted file mode 100644
index d3347aa..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-en-rXC/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‎‎‎‎‎‏‎‎‏‏‏‏‎‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‎‏‎‏‏‎‏‏‏‎‎‏‎‏‎‎‎‏‎‎‎Tethering has no internet‎‏‎‎‏‎"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‎‎‏‎‏‎‎‏‎‎‏‏‏‎‏‏‎‏‎‏‎‏‎‎‎‏‎‎‎‎‎‏‏‏‏‎‏‎‎‎‎‏‎‏‏‎‏‏‎‏‎‎‏‏‏‏‏‎Devices can’t connect‎‏‎‎‏‎"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‏‏‎‎‏‏‏‎‏‎‏‎‎‎‏‏‏‎‎‏‏‏‏‎‎‏‏‏‏‏‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‎‎‎Turn off tethering‎‏‎‎‏‎"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‎‏‏‏‎‎‏‎‎‏‎‏‎‏‏‏‎‏‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‏‎‏‎‎‎‏‎‎‎‎‏‏‎Hotspot or tethering is on‎‏‎‎‏‎"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‏‏‎‏‎‏‎‏‎‎‎‏‎‏‎‏‏‎‏‎‎‎‏‏‏‏‎‎‏‏‏‏‎‎‎‏‎‎‎‎‏‏‎‏‎‏‎‎‏‏‎‎‏‏‎Additional charges may apply while roaming‎‏‎‎‏‎"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-es-rUS/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-es-rUS/strings.xml
deleted file mode 100644
index 2f0504f..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-es-rUS/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"La conexión mediante dispositivo móvil no tiene Internet"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"No se pueden conectar los dispositivos"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Desactivar conexión mediante dispositivo móvil"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Se activó el hotspot o la conexión mediante dispositivo móvil"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Es posible que se apliquen cargos adicionales por roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-es/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-es/strings.xml
deleted file mode 100644
index 2d8f882..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-es/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"La conexión no se puede compartir, porque no hay acceso a Internet"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Los dispositivos no se pueden conectar"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Desactivar conexión compartida"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Punto de acceso o conexión compartida activados"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Puede que se apliquen cargos adicionales en itinerancia"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-et/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-et/strings.xml
deleted file mode 100644
index 8493c470..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-et/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Jagamisel puudub internetiühendus"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Seadmed ei saa ühendust luua"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Lülita jagamine välja"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Kuumkoht või jagamine on sisse lülitatud"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Rändluse kasutamisega võivad kaasneda lisatasud"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-eu/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-eu/strings.xml
deleted file mode 100644
index 33bccab..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-eu/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Konexioa partekatzeko aukerak ez du Interneteko konexiorik"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Ezin dira konektatu gailuak"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Desaktibatu konexioa partekatzeko aukera"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Wifi-gunea edo konexioa partekatzeko aukera aktibatuta dago"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Baliteke kostu gehigarriak ordaindu behar izatea ibiltaritzan"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-fa/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-fa/strings.xml
deleted file mode 100644
index cf8a0cc..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-fa/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"«اشتراک‌گذاری اینترنت» به اینترنت دسترسی ندارد"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"دستگاه‌ها متصل نمی‌شوند"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"خاموش کردن «اشتراک‌گذاری اینترنت»"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"«نقطه اتصال» یا «اشتراک‌گذاری اینترنت» روشن است"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"ممکن است درحین فراگردی تغییرات دیگر اعمال شود"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-fi/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-fi/strings.xml
deleted file mode 100644
index 6a3ab80..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-fi/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Ei jaettavaa internetyhteyttä"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Laitteet eivät voi muodostaa yhteyttä"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Laita yhteyden jakaminen pois päältä"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Hotspot tai yhteyden jakaminen on päällä"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Roaming voi aiheuttaa lisämaksuja"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-fr-rCA/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-fr-rCA/strings.xml
deleted file mode 100644
index ffb9bf60..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-fr-rCA/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Le partage de connexion n\'est pas connecté à Internet"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Impossible de connecter les appareils"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Désactiver le partage de connexion"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Le point d\'accès ou le partage de connexion est activé"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"En itinérance, des frais supplémentaires peuvent s\'appliquer"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-fr/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-fr/strings.xml
deleted file mode 100644
index 768bce3..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-fr/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Aucune connexion à Internet n\'est disponible pour le partage de connexion"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Impossible de connecter les appareils"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Désactiver le partage de connexion"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Le point d\'accès ou le partage de connexion est activé"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"En itinérance, des frais supplémentaires peuvent s\'appliquer"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-gl/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-gl/strings.xml
deleted file mode 100644
index 0c4195a..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-gl/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"A conexión compartida non ten Internet"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Non se puideron conectar os dispositivos"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Desactivar conexión compartida"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Está activada a zona wifi ou a conexión compartida"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Pódense aplicar cargos adicionais en itinerancia"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-gu/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-gu/strings.xml
deleted file mode 100644
index e9d33a7..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-gu/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"ઇન્ટરનેટ શેર કરવાની સુવિધામાં ઇન્ટરનેટ નથી"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"ડિવાઇસ કનેક્ટ કરી શકાતા નથી"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"ઇન્ટરનેટ શેર કરવાની સુવિધા બંધ કરો"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"હૉટસ્પૉટ અથવા ઇન્ટરનેટ શેર કરવાની સુવિધા ચાલુ છે"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"રોમિંગમાં વધારાના શુલ્ક લાગી શકે છે"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-hi/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-hi/strings.xml
deleted file mode 100644
index aa418ac..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-hi/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"टेदरिंग से इंटरनेट नहीं चल रहा"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"डिवाइस कनेक्ट नहीं हो पा रहे"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"टेदरिंग बंद करें"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"हॉटस्पॉट या टेदरिंग चालू है"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"रोमिंग के दौरान अतिरिक्त शुल्क लग सकता है"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-hr/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-hr/strings.xml
deleted file mode 100644
index 51c524a..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-hr/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Modemsko povezivanje nema internet"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Uređaji se ne mogu povezati"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Isključivanje modemskog povezivanja"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Uključena je žarišna točka ili modemsko povezivanje"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"U roamingu su mogući dodatni troškovi"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-hu/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-hu/strings.xml
deleted file mode 100644
index 164e45e..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-hu/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Nincs internetkapcsolat az internet megosztásához"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Az eszközök nem tudnak csatlakozni"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Internetmegosztás kikapcsolása"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"A hotspot vagy az internetmegosztás be van kapcsolva"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Roaming során további díjak léphetnek fel"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-hy/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-hy/strings.xml
deleted file mode 100644
index e76c0a4..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-hy/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Մոդեմի ռեժիմի կապը բացակայում է"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Չհաջողվեց միացնել սարքը"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Անջատել մոդեմի ռեժիմը"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Թեժ կետը կամ մոդեմի ռեժիմը միացված է"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Ռոումինգում կարող են լրացուցիչ վճարներ գանձվել"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-in/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-in/strings.xml
deleted file mode 100644
index 2b817f8..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-in/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Tidak ada koneksi internet di tethering"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Perangkat tidak dapat terhubung"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Nonaktifkan tethering"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Hotspot atau tethering aktif"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Biaya tambahan mungkin berlaku saat roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-is/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-is/strings.xml
deleted file mode 100644
index a338d9c..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-is/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Tjóðrun er ekki með internettengingu"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Tæki geta ekki tengst"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Slökkva á tjóðrun"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Kveikt er á heitum reit eða tjóðrun"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Viðbótargjöld kunna að eiga við í reiki"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-it/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-it/strings.xml
deleted file mode 100644
index 77769c2..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-it/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Nessuna connessione a Internet per il tethering"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Impossibile connettere i dispositivi"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Disattiva il tethering"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Hotspot o tethering attivi"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Potrebbero essere applicati costi aggiuntivi durante il roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-iw/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-iw/strings.xml
deleted file mode 100644
index 5267b51..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-iw/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"אי אפשר להפעיל את תכונת שיתוף האינטרנט בין מכשירים כי אין חיבור לאינטרנט"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"למכשירים אין אפשרות להתחבר"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"השבתה של שיתוף האינטרנט בין מכשירים"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"תכונת הנקודה לשיתוף אינטרנט או תכונת שיתוף האינטרנט בין מכשירים פועלת"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"ייתכנו חיובים נוספים בעת נדידה"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-ja/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-ja/strings.xml
deleted file mode 100644
index 66a9a6d..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-ja/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"テザリングがインターネットに接続されていません"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"デバイスを接続できません"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"テザリングを OFF にする"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"アクセス ポイントまたはテザリングが ON です"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"ローミング時に追加料金が発生することがあります"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-ka/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-ka/strings.xml
deleted file mode 100644
index d8ad880..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-ka/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"ტეტერინგს არ აქვს ინტერნეტზე წვდომა"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"მოწყობილობები ვერ ახერხებენ დაკავშირებას"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"ტეტერინგის გამორთვა"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"ჩართულია უსადენო ქსელი ან ტეტერინგი"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"როუმინგის გამოყენებისას შეიძლება ჩამოგეჭრათ დამატებითი საფასური"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-kk/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-kk/strings.xml
deleted file mode 100644
index 1ddd6b4..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-kk/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Тетеринг режимі интернет байланысынсыз пайдаланылуда"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Құрылғыларды байланыстыру мүмкін емес"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Тетерингіні өшіру"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Хотспот немесе тетеринг қосулы"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Роуминг кезінде қосымша ақы алынуы мүмкін."</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-km/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-km/strings.xml
deleted file mode 100644
index cf5a137..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-km/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"ការភ្ជាប់​មិនមានអ៊ីនធឺណិត​ទេ"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"មិនអាច​ភ្ជាប់ឧបករណ៍​បានទេ"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"បិទការភ្ជាប់"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"ហតស្ប៉ត ឬការភ្ជាប់​ត្រូវបានបើក"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"អាចមាន​ការគិតថ្លៃ​បន្ថែម នៅពេល​រ៉ូមីង"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-kn/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-kn/strings.xml
deleted file mode 100644
index 68ae68b..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-kn/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"ಟೆಥರಿಂಗ್‌ ಯಾವುದೇ ಇಂಟರ್ನೆಟ್ ಕನೆಕ್ಷನ್ ಹೊಂದಿಲ್ಲ"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"ಸಾಧನಗಳನ್ನು ಕನೆಕ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"ಟೆಥರಿಂಗ್‌ ಆಫ್ ಮಾಡಿ"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"ಹಾಟ್‌ಸ್ಪಾಟ್ ಅಥವಾ ಟೆಥರಿಂಗ್‌ ಆನ್ ಆಗಿದೆ"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"ರೋಮಿಂಗ್‌ನಲ್ಲಿರುವಾಗ ಹೆಚ್ಚುವರಿ ಶುಲ್ಕಗಳು ಅನ್ವಯವಾಗಬಹುದು"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-ko/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-ko/strings.xml
deleted file mode 100644
index 17185ba..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-ko/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"테더링으로 인터넷을 사용할 수 없음"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"기기에서 연결할 수 없음"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"테더링 사용 중지"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"핫스팟 또는 테더링 켜짐"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"로밍 중에는 추가 요금이 발생할 수 있습니다."</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-ky/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-ky/strings.xml
deleted file mode 100644
index 6a9fb98..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-ky/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Модем режими Интернети жок колдонулууда"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Түзмөктөр туташпай жатат"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Модем режимин өчүрүү"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Байланыш түйүнү же модем режими күйүк"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Роумингде кошумча акы алынышы мүмкүн"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-lo/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-lo/strings.xml
deleted file mode 100644
index bcc4b57..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-lo/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"ການປ່ອຍສັນຍານບໍ່ມີອິນເຕີເນັດ"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"ອຸປະກອນບໍ່ສາມາດເຊື່ອມຕໍ່ໄດ້"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"ປິດການປ່ອຍສັນຍານ"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"ເປີດໃຊ້ຮັອດສະປອດ ຫຼື ການປ່ອຍສັນຍານຢູ່"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"ອາດມີຄ່າໃຊ້ຈ່າຍເພີ່ມເຕີມໃນລະຫວ່າງການໂຣມມິງ"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-lt/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-lt/strings.xml
deleted file mode 100644
index 011c2c1..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-lt/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Nėra įrenginio kaip modemo naudojimo interneto ryšio"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Nepavyko susieti įrenginių"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Išjungti įrenginio kaip modemo naudojimą"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Įjungtas viešosios interneto prieigos taškas arba įrenginio kaip modemo naudojimas"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Veikiant tarptinkliniam ryšiui gali būti taikomi papildomi mokesčiai"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-lv/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-lv/strings.xml
deleted file mode 100644
index 5cb2f3b..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-lv/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Piesaistei nav interneta savienojuma"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Nevar savienot ierīces"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Izslēgt piesaisti"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Ir ieslēgts tīklājs vai piesaiste"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Viesabonēšanas laikā var tikt piemērota papildu samaksa"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-mk/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-mk/strings.xml
deleted file mode 100644
index 4cbfd88..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-mk/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Нема интернет преку мобилен"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Уредите не може да се поврзат"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Исклучи интернет преку мобилен"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Точката на пристап или интернетот преку мобилен е вклучен"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"При роаминг може да се наплатат дополнителни трошоци"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-ml/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-ml/strings.xml
deleted file mode 100644
index 9cf4eaf..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-ml/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"ടെതറിംഗിന് ഇന്റർനെറ്റ് ഇല്ല"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"ഉപകരണങ്ങൾ കണക്റ്റ് ചെയ്യാനാവില്ല"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"ടെതറിംഗ് ഓഫാക്കുക"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"ഹോട്ട്‌സ്‌പോട്ട് അല്ലെങ്കിൽ ടെതറിംഗ് ഓണാണ്"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"റോമിംഗ് ചെയ്യുമ്പോൾ അധിക നിരക്കുകൾ ബാധകമായേക്കാം"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-mn/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-mn/strings.xml
deleted file mode 100644
index 47c82c1..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-mn/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Модемд интернэт алга байна"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Төхөөрөмжүүд холбогдох боломжгүй байна"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Модем болгохыг унтраах"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Сүлжээний цэг эсвэл модем болгох асаалттай байна"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Роумингийн үеэр нэмэлт төлбөр нэхэмжилж болзошгүй"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-mr/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-mr/strings.xml
deleted file mode 100644
index ad9e809..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-mr/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"टेदरिंगला इंटरनेट नाही"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"डिव्हाइस कनेक्ट होऊ शकत नाहीत"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"टेदरिंग बंद करा"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"हॉटस्पॉट किंवा टेदरिंग सुरू आहे"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"रोमिंगदरम्यान अतिरिक्त शुल्क लागू होऊ शकतात"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-ms/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-ms/strings.xml
deleted file mode 100644
index e708cb8..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-ms/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Penambatan tiada Internet"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Peranti tidak dapat disambungkan"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Matikan penambatan"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Tempat liputan atau penambatan dihidupkan"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Caj tambahan mungkin digunakan semasa perayauan"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-my/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-my/strings.xml
deleted file mode 100644
index ba54622..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-my/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"မိုဘိုင်းဖုန်းသုံး ချိတ်ဆက်မျှဝေခြင်းတွင် အင်တာနက် မရှိပါ"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"စက်များ ချိတ်ဆက်၍ မရပါ"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"မိုဘိုင်းဖုန်းသုံး ချိတ်ဆက်မျှဝေခြင်း ပိတ်ရန်"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"ဟော့စပေါ့ (သို့) မိုဘိုင်းဖုန်းသုံး ချိတ်ဆက်မျှဝေခြင်း ဖွင့်ထားသည်"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"ပြင်ပကွန်ရက်နှင့် ချိတ်ဆက်သည့်အခါ နောက်ထပ်ကျသင့်မှုများ ရှိနိုင်သည်"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-nb/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-nb/strings.xml
deleted file mode 100644
index 57db484a2..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-nb/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Internettdeling har ikke internettilgang"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Enhetene kan ikke koble til"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Slå av internettdeling"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Wi-Fi-sone eller internettdeling er på"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Ytterligere kostnader kan påløpe under roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-ne/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-ne/strings.xml
deleted file mode 100644
index 1503244..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-ne/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"टेदरिङमार्फत इन्टरनेट कनेक्सन प्राप्त हुन सकेन"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"यन्त्रहरू कनेक्ट गर्न सकिएन"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"टेदरिङ निष्क्रिय पार्नुहोस्"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"हटस्पट वा टेदरिङ सक्रिय छ"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"रोमिङ सेवा प्रयोग गर्दा अतिरिक्त शुल्क लाग्न सक्छ"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-nl/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-nl/strings.xml
deleted file mode 100644
index b08133f..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-nl/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Tethering heeft geen internet"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Apparaten kunnen niet worden verbonden"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Tethering uitschakelen"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Hotspot of tethering is ingeschakeld"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Er kunnen extra kosten voor roaming in rekening worden gebracht."</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-or/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-or/strings.xml
deleted file mode 100644
index 1ad4ca3..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-or/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"ଟିଥରିଂ ପାଇଁ କୌଣସି ଇଣ୍ଟର୍ନେଟ୍ ସଂଯୋଗ ନାହିଁ"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"ଡିଭାଇସଗୁଡ଼ିକ ସଂଯୋଗ କରାଯାଇପାରିବ ନାହିଁ"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"ଟିଥରିଂ ବନ୍ଦ କରନ୍ତୁ"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"ହଟସ୍ପଟ୍ କିମ୍ବା ଟିଥରିଂ ଚାଲୁ ଅଛି"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"ରୋମିଂରେ ଥିବା ସମୟରେ ଅତିରିକ୍ତ ଶୁଳ୍କ ଲାଗୁ ହୋଇପାରେ"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-pa/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-pa/strings.xml
deleted file mode 100644
index 88def56..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-pa/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"ਟੈਦਰਿੰਗ ਕੋਲ ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ ਨਹੀਂ ਹੈ"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"ਡੀਵਾਈਸ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤੇ ਜਾ ਸਕਦੇ"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"ਟੈਦਰਿੰਗ ਬੰਦ ਕਰੋ"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"ਹੌਟਸਪੌਟ ਜਾਂ ਟੈਦਰਿੰਗ ਚਾਲੂ ਹੈ"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"ਰੋਮਿੰਗ ਦੌਰਾਨ ਵਧੀਕ ਖਰਚੇ ਲਾਗੂ ਹੋ ਸਕਦੇ ਹਨ"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-pl/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-pl/strings.xml
deleted file mode 100644
index f9890ab..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-pl/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Tethering nie ma internetu"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Urządzenia nie mogą się połączyć"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Wyłącz tethering"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Hotspot lub tethering jest włączony"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Podczas korzystania z roamingu mogą zostać naliczone dodatkowe opłaty"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-pt-rBR/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-pt-rBR/strings.xml
deleted file mode 100644
index ce3b884..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-pt-rBR/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"O tethering não tem Internet"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Não é possível conectar os dispositivos"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Desativar o tethering"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Ponto de acesso ou tethering ativado"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Pode haver cobranças extras durante o roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-pt-rPT/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-pt-rPT/strings.xml
deleted file mode 100644
index 7e883ea..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-pt-rPT/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"A ligação (à Internet) via telemóvel não tem Internet"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Não é possível ligar os dispositivos"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Desativar ligação (à Internet) via telemóvel"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"A zona Wi-Fi ou a ligação (à Internet) via telemóvel está ativada"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Podem aplicar-se custos adicionais em roaming."</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-pt/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-pt/strings.xml
deleted file mode 100644
index ce3b884..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-pt/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"O tethering não tem Internet"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Não é possível conectar os dispositivos"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Desativar o tethering"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Ponto de acesso ou tethering ativado"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Pode haver cobranças extras durante o roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-ro/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-ro/strings.xml
deleted file mode 100644
index 1009417..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-ro/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Procesul de tethering nu are internet"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Dispozitivele nu se pot conecta"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Dezactivați procesul de tethering"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"S-a activat hotspotul sau tethering"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Se pot aplica taxe suplimentare pentru roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-ru/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-ru/strings.xml
deleted file mode 100644
index 88683be..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-ru/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Режим модема используется без доступа к Интернету"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Невозможно подключить устройства."</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Отключить режим модема"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Включены точка доступа или режим модема"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"За использование услуг связи в роуминге может взиматься дополнительная плата."</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-si/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-si/strings.xml
deleted file mode 100644
index 176bcdb..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-si/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"ටෙදරින් හට අන්තර්ජාලය නැත"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"උපාංගවලට සම්බන්ධ විය නොහැකිය"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"ටෙදරින් ක්‍රියාවිරහිත කරන්න"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"හොට්ස්පොට් හෝ ටෙදරින් ක්‍රියාත්මකයි"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"රෝමිං අතරතුර අමතර ගාස්තු අදාළ විය හැකිය"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-sk/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-sk/strings.xml
deleted file mode 100644
index b9e2127..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-sk/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Tethering nemá internetové pripojenie"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Zariadenia sa nemôžu pripojiť"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Vypnúť tethering"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Je zapnutý hotspot alebo tethering"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Počas roamingu vám môžu byť účtované ďalšie poplatky"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-sl/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-sl/strings.xml
deleted file mode 100644
index e8140e6..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-sl/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Internetna povezava prek mobilnega telefona ni vzpostavljena"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Napravi se ne moreta povezati"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Izklopi internetno povezavo prek mobilnega telefona"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Dostopna točka ali internetna povezava prek mobilnega telefona je vklopljena"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Med gostovanjem lahko nastanejo dodatni stroški"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-sq/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-sq/strings.xml
deleted file mode 100644
index 61e698d..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-sq/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Ndarja e internetit nuk ka internet"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Pajisjet nuk mund të lidhen"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Çaktivizo ndarjen e internetit"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Zona e qasjes për internet ose ndarja e internetit është aktive"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Mund të zbatohen tarifime shtesë kur je në roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-sr/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-sr/strings.xml
deleted file mode 100644
index b4c411c..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-sr/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Привезивање нема приступ интернету"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Повезивање уређаја није успело"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Искључи привезивање"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Укључен је хотспот или привезивање"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Можда важе додатни трошкови у ромингу"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-sv/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-sv/strings.xml
deleted file mode 100644
index 4f543e4..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-sv/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Det finns ingen internetanslutning för internetdelningen"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Enheterna kan inte anslutas"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Inaktivera internetdelning"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Surfzon eller internetdelning har aktiverats"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Ytterligare avgifter kan tillkomma vid roaming"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-sw/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-sw/strings.xml
deleted file mode 100644
index ac347ab..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-sw/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Kipengele cha kusambaza mtandao hakina intaneti"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Imeshindwa kuunganisha vifaa"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Zima kipengele cha kusambaza mtandao"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Umewasha kipengele cha kusambaza mtandao au mtandao pepe"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Huenda ukatozwa gharama za ziada ukitumia mitandao ya ng\'ambo"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-ta/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-ta/strings.xml
deleted file mode 100644
index 2ea2467..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-ta/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"இணைப்பு முறைக்கு இணைய இணைப்பு இல்லை"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"சாதனங்களால் இணைய முடியவில்லை"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"இணைப்பு முறையை ஆஃப் செய்"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"ஹாட்ஸ்பாட் அல்லது இணைப்பு முறை ஆன் செய்யப்பட்டுள்ளது"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"ரோமிங்கின்போது கூடுதல் கட்டணங்கள் விதிக்கப்படக்கூடும்"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-te/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-te/strings.xml
deleted file mode 100644
index 9360297..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-te/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"టెథరింగ్ చేయడానికి ఇంటర్నెట్ కనెక్షన్ లేదు"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"పరికరాలు కనెక్ట్ అవ్వడం లేదు"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"టెథరింగ్‌ను ఆఫ్ చేయండి"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"హాట్‌స్పాట్ లేదా టెథరింగ్ ఆన్‌లో ఉంది"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"రోమింగ్‌లో ఉన్నప్పుడు అదనపు ఛార్జీలు వర్తించవచ్చు"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-th/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-th/strings.xml
deleted file mode 100644
index 9c4d7e0..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-th/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"การเชื่อมต่ออินเทอร์เน็ตผ่านมือถือไม่มีอินเทอร์เน็ต"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"อุปกรณ์เชื่อมต่อไม่ได้"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"ปิดการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือ"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"ฮอตสปอตหรือการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือเปิดอยู่"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"อาจมีค่าใช้จ่ายเพิ่มเติมขณะโรมมิ่ง"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-tl/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-tl/strings.xml
deleted file mode 100644
index a7c78a5..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-tl/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Walang internet ang pag-tether"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Hindi makakonekta ang mga device"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"I-off ang pag-tether"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Naka-on ang Hotspot o pag-tether"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Posibleng magkaroon ng mga karagdagang singil habang nagro-roam"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-tr/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-tr/strings.xml
deleted file mode 100644
index 93da2c3..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-tr/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Tethering\'in internet bağlantısı yok"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Cihazlar bağlanamıyor"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Tethering\'i kapat"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Hotspot veya tethering açık"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Dolaşım sırasında ek ücretler uygulanabilir"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-uk/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-uk/strings.xml
deleted file mode 100644
index ee0dcd2..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-uk/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Телефон, який використовується як модем, не підключений до Інтернету"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Не вдається підключити пристрої"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Вимкнути використання телефона як модема"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Увімкнено точку доступу або використання телефона як модема"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"У роумінгу може стягуватися додаткова плата"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-ur/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-ur/strings.xml
deleted file mode 100644
index 41cd28e..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-ur/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"ٹیدرنگ میں انٹرنیٹ نہیں ہے"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"آلات منسلک نہیں ہو سکتے"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"ٹیدرنگ آف کریں"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"ہاٹ اسپاٹ یا ٹیدرنگ آن ہے"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"رومنگ کے دوران اضافی چارجز لاگو ہو سکتے ہیں"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-uz/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-uz/strings.xml
deleted file mode 100644
index c847bc9..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-uz/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Modem internetga ulanmagan"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Qurilmalar ulanmadi"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Modem rejimini faolsizlantirish"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Hotspot yoki modem rejimi yoniq"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Rouming vaqtida qoʻshimcha haq olinishi mumkin"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-vi/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-vi/strings.xml
deleted file mode 100644
index a74326f..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-vi/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Không có Internet để chia sẻ kết Internet"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Các thiết bị không thể kết nối"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Tắt tính năng chia sẻ Internet"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"Điểm phát sóng hoặc tính năng chia sẻ Internet đang bật"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Bạn có thể mất thêm phí dữ liệu khi chuyển vùng"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-zh-rCN/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-zh-rCN/strings.xml
deleted file mode 100644
index d737003..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-zh-rCN/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"共享网络未连接到互联网"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"设备无法连接"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"关闭网络共享"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"热点或网络共享已开启"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"漫游时可能会产生额外的费用"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-zh-rHK/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-zh-rHK/strings.xml
deleted file mode 100644
index f378a9d..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-zh-rHK/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"無法透過網絡共享連線至互聯網"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"裝置無法連接"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"關閉網絡共享"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"熱點或網絡共享已開啟"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"漫遊時可能需要支付額外費用"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-zh-rTW/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-zh-rTW/strings.xml
deleted file mode 100644
index cd653df..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-zh-rTW/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"無法透過網路共用連上網際網路"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"裝置無法連線"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"關閉網路共用"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"無線基地台或網路共用已開啟"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"使用漫遊服務可能須支付額外費用"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480-zu/strings.xml b/packages/Tethering/res/values-mcc311-mnc480-zu/strings.xml
deleted file mode 100644
index 32f6df5..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480-zu/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="no_upstream_notification_title" msgid="611650570559011140">"Ukusebenzisa ifoni njengemodemu akunayo i-inthanethi"</string>
-    <string name="no_upstream_notification_message" msgid="6508394877641864863">"Amadivayisi awakwazi ukuxhumeka"</string>
-    <string name="no_upstream_notification_disable_button" msgid="7609346639290990508">"Vala ukusebenzisa ifoni njengemodemu"</string>
-    <string name="upstream_roaming_notification_title" msgid="6032901176124830787">"I-hotspot noma ukusebenzisa ifoni njengemodemu kuvuliwe"</string>
-    <string name="upstream_roaming_notification_message" msgid="7599056263326217523">"Kungaba nezinkokhelo ezengeziwe uma uzula"</string>
-</resources>
diff --git a/packages/Tethering/res/values-mcc311-mnc480/config.xml b/packages/Tethering/res/values-mcc311-mnc480/config.xml
deleted file mode 100644
index 5c5be04..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480/config.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<resources>
-    <!-- Delay(millisecond) to show no upstream notification after there's no Backhaul. Set delay to
-         "0" for disable this feature. -->
-    <integer name="delay_to_show_no_upstream_after_no_backhaul">5000</integer>
-
-    <!-- Config for showing upstream roaming notification. -->
-    <bool name="config_upstream_roaming_notification">true</bool>
-</resources>
\ No newline at end of file
diff --git a/packages/Tethering/res/values-mcc311-mnc480/strings.xml b/packages/Tethering/res/values-mcc311-mnc480/strings.xml
deleted file mode 100644
index ce9ff60..0000000
--- a/packages/Tethering/res/values-mcc311-mnc480/strings.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<resources>
-    <!-- String for no upstream notification title [CHAR LIMIT=200] -->
-    <string name="no_upstream_notification_title">Tethering has no internet</string>
-    <!-- String for no upstream notification title [CHAR LIMIT=200] -->
-    <string name="no_upstream_notification_message">Devices can\u2019t connect</string>
-    <!-- String for no upstream notification disable button [CHAR LIMIT=200] -->
-    <string name="no_upstream_notification_disable_button">Turn off tethering</string>
-
-    <!-- String for cellular roaming notification title [CHAR LIMIT=200] -->
-    <string name="upstream_roaming_notification_title">Hotspot or tethering is on</string>
-    <!-- String for cellular roaming notification message [CHAR LIMIT=500] -->
-    <string name="upstream_roaming_notification_message">Additional charges may apply while roaming</string>
-</resources>
diff --git a/packages/Tethering/res/values-mk/strings.xml b/packages/Tethering/res/values-mk/strings.xml
deleted file mode 100644
index 9ad9b9a..0000000
--- a/packages/Tethering/res/values-mk/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Активно е врзување или точка на пристап"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Допрете за поставување."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Врзувањето е оневозможено"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Контактирајте со администраторот за детали"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Статус на точката на пристап и врзувањето"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-ml/strings.xml b/packages/Tethering/res/values-ml/strings.xml
deleted file mode 100644
index 9db79ce..0000000
--- a/packages/Tethering/res/values-ml/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"ടെതറിംഗ് അല്ലെങ്കിൽ ഹോട്ട്സ്‌പോട്ട് സജീവമാണ്"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"സജ്ജീകരിക്കാൻ ടാപ്പ് ചെയ്യുക."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"ടെതറിംഗ് പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"വിശദാംശങ്ങൾക്ക് നിങ്ങളുടെ അഡ്മിനെ ബന്ധപ്പെടുക"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"ഹോട്ട്‌സ്പോട്ടിന്റെയും ടെതറിംഗിന്റെയും നില"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-mn/strings.xml b/packages/Tethering/res/values-mn/strings.xml
deleted file mode 100644
index 42d1edb..0000000
--- a/packages/Tethering/res/values-mn/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Модем болгох эсвэл сүлжээний цэг идэвхтэй байна"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Тохируулахын тулд товшино уу."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Модем болгохыг идэвхгүй болгосон"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Дэлгэрэнгүй мэдээлэл авахын тулд админтайгаа холбогдоно уу"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Сүлжээний цэг болон модем болгох төлөв"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-mr/strings.xml b/packages/Tethering/res/values-mr/strings.xml
deleted file mode 100644
index 13995b6..0000000
--- a/packages/Tethering/res/values-mr/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"टेदरिंग किंवा हॉटस्पॉट अ‍ॅक्टिव्ह आहे"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"सेट करण्यासाठी टॅप करा."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"टेदरिंग बंद केले आहे"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"तपशीलांसाठी तुमच्या ॲडमिनशी संपर्क साधा"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"हॉटस्पॉट आणि टेदरिंगची स्थिती"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-ms/strings.xml b/packages/Tethering/res/values-ms/strings.xml
deleted file mode 100644
index d6a67f3..0000000
--- a/packages/Tethering/res/values-ms/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Penambatan atau tempat liputan aktif"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Ketik untuk membuat persediaan."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Penambatan dilumpuhkan"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Hubungi pentadbir anda untuk mendapatkan maklumat lanjut"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Status tempat liputan &amp; penambatan"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-my/strings.xml b/packages/Tethering/res/values-my/strings.xml
deleted file mode 100644
index 49f6b88..0000000
--- a/packages/Tethering/res/values-my/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"မိုဘိုင်းဖုန်းသုံး ချိတ်ဆက်မျှဝေခြင်း သို့မဟုတ် ဟော့စပေါ့ ဖွင့်ထားသည်"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"စနစ်ထည့်သွင်းရန် တို့ပါ။"</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"မိုဘိုင်းဖုန်းသုံး ချိတ်ဆက်မျှဝေခြင်းကို ပိတ်ထားသည်"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"အသေးစိတ်အတွက် သင့်စီမံခန့်ခွဲသူကို ဆက်သွယ်ပါ"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"ဟော့စပေါ့နှင့် မိုဘိုင်းဖုန်းသုံး ချိတ်ဆက်မျှဝေခြင်း အခြေအနေ"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-nb/strings.xml b/packages/Tethering/res/values-nb/strings.xml
deleted file mode 100644
index 9594e0a..0000000
--- a/packages/Tethering/res/values-nb/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Internettdeling eller Wi-Fi-sone er aktiv"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Trykk for å konfigurere."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Internettdeling er slått av"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Ta kontakt med administratoren din for å få mer informasjon"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Status for Wi-Fi-sone og internettdeling"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-ne/strings.xml b/packages/Tethering/res/values-ne/strings.xml
deleted file mode 100644
index 72ae3a8..0000000
--- a/packages/Tethering/res/values-ne/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"टेदरिङ वा हटस्पट सक्रिय छ"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"सेटअप गर्न ट्याप गर्नुहोस्।"</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"टेदरिङ सुविधा असक्षम पारिएको छ"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"विवरणहरूका लागि आफ्ना प्रशासकलाई सम्पर्क गर्नुहोस्"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"हटस्पट तथा टेदरिङको स्थिति"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-nl/strings.xml b/packages/Tethering/res/values-nl/strings.xml
deleted file mode 100644
index 18b2bbf..0000000
--- a/packages/Tethering/res/values-nl/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Tethering of hotspot actief"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Tik om in te stellen."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Tethering is uitgeschakeld"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Neem contact op met je beheerder voor meer informatie"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Status van hotspot en tethering"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-or/strings.xml b/packages/Tethering/res/values-or/strings.xml
deleted file mode 100644
index a15a6db..0000000
--- a/packages/Tethering/res/values-or/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"ଟିଥେରିଂ କିମ୍ୱା ହଟସ୍ପଟ୍ ସକ୍ରିୟ ଅଛି"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"ସେଟ୍ ଅପ୍ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ।"</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"ଟିଥେରିଂ ଅକ୍ଷମ କରାଯାଇଛି"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"ବିବରଣୀଗୁଡ଼ିକ ପାଇଁ ଆପଣଙ୍କ ଆଡମିନଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"ହଟସ୍ପଟ୍ ଓ ଟିଥେରିଂ ସ୍ଥିତି"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-pa/strings.xml b/packages/Tethering/res/values-pa/strings.xml
deleted file mode 100644
index a8235e4..0000000
--- a/packages/Tethering/res/values-pa/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"ਟੈਦਰਿੰਗ ਜਾਂ ਹੌਟਸਪੌਟ ਕਿਰਿਆਸ਼ੀਲ"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"ਟੈਦਰਿੰਗ ਨੂੰ ਬੰਦ ਕੀਤਾ ਗਿਆ ਹੈ"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"ਵੇਰਵਿਆਂ ਲਈ ਆਪਣੇ ਪ੍ਰਸ਼ਾਸਕ ਨਾਲ ਸੰਪਰਕ ਕਰੋ"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"ਹੌਟਸਪੌਟ ਅਤੇ ਟੈਦਰਿੰਗ ਦੀ ਸਥਿਤੀ"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-pl/strings.xml b/packages/Tethering/res/values-pl/strings.xml
deleted file mode 100644
index ccb017d..0000000
--- a/packages/Tethering/res/values-pl/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Aktywny tethering lub punkt dostępu"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Kliknij, by skonfigurować"</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Tethering został wyłączony"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Aby uzyskać szczegółowe informacje, skontaktuj się z administratorem"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Hotspot i tethering – stan"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-pt-rBR/strings.xml b/packages/Tethering/res/values-pt-rBR/strings.xml
deleted file mode 100644
index a0a4745..0000000
--- a/packages/Tethering/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Ponto de acesso ou tethering ativo"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Toque para configurar."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Tethering desativado"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Fale com seu administrador para saber detalhes"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Status de ponto de acesso e tethering"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-pt-rPT/strings.xml b/packages/Tethering/res/values-pt-rPT/strings.xml
deleted file mode 100644
index e3f03fc..0000000
--- a/packages/Tethering/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Ligação (à Internet) via telemóvel ou zona Wi-Fi ativas"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Toque para configurar."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"A ligação (à Internet) via telemóvel está desativada."</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Contacte o administrador para obter detalhes."</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Estado da zona Wi-Fi e da ligação (à Internet) via telemóvel"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-pt/strings.xml b/packages/Tethering/res/values-pt/strings.xml
deleted file mode 100644
index a0a4745..0000000
--- a/packages/Tethering/res/values-pt/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Ponto de acesso ou tethering ativo"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Toque para configurar."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Tethering desativado"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Fale com seu administrador para saber detalhes"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Status de ponto de acesso e tethering"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-ro/strings.xml b/packages/Tethering/res/values-ro/strings.xml
deleted file mode 100644
index 5706a4a..0000000
--- a/packages/Tethering/res/values-ro/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Tethering sau hotspot activ"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Atingeți ca să configurați."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Tetheringul este dezactivat"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Contactați administratorul pentru detalii"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Starea hotspotului și a tetheringului"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-ru/strings.xml b/packages/Tethering/res/values-ru/strings.xml
deleted file mode 100644
index 7cb6f7d..0000000
--- a/packages/Tethering/res/values-ru/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Включен режим модема или точка доступа"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Нажмите, чтобы настроить."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Использование телефона в качестве модема запрещено"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Чтобы узнать подробности, обратитесь к администратору."</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Статус хот-спота и режима модема"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-si/strings.xml b/packages/Tethering/res/values-si/strings.xml
deleted file mode 100644
index ec34c22..0000000
--- a/packages/Tethering/res/values-si/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"ටෙදරින් හෝ හොට්ස්පොට් සක්‍රීයයි"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"පිහිටුවීමට තට්ටු කරන්න."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"ටෙදරින් අබල කර ඇත"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"විස්තර සඳහා ඔබගේ පරිපාලක අමතන්න"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"හොට්ස්පොට් &amp; ටෙදරින් තත්ත්වය"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-sk/strings.xml b/packages/Tethering/res/values-sk/strings.xml
deleted file mode 100644
index 43e787c..0000000
--- a/packages/Tethering/res/values-sk/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Tethering alebo prístupový bod je aktívny"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Klepnutím prejdete na nastavenie."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Tethering je deaktivovaný"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"O podrobnosti požiadajte svojho správcu"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Stav hotspotu a tetheringu"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-sl/strings.xml b/packages/Tethering/res/values-sl/strings.xml
deleted file mode 100644
index 5943362..0000000
--- a/packages/Tethering/res/values-sl/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Povezava z internetom prek mobilnega telefona ali dostopna točka je aktivna"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Dotaknite se, če želite nastaviti."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Povezava z internetom prek mobilnega telefona je onemogočena"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Za podrobnosti se obrnite na skrbnika"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Stanje dostopne točke in povezave z internetom prek mobilnega telefona"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-sq/strings.xml b/packages/Tethering/res/values-sq/strings.xml
deleted file mode 100644
index 21e1155..0000000
--- a/packages/Tethering/res/values-sq/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Ndarja e internetit ose zona e qasjes së internetit është aktive"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Trokit për ta konfiguruar."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Ndarja e internetit është çaktivizuar"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Kontakto me administratorin për detaje"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Statusi i zonës së qasjes dhe ndarjes së internetit"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-sr/strings.xml b/packages/Tethering/res/values-sr/strings.xml
deleted file mode 100644
index e2e4dc6..0000000
--- a/packages/Tethering/res/values-sr/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Привезивање или хотспот је активан"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Додирните да бисте подесили."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Привезивање је онемогућено"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Потражите детаље од администратора"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Статус хотспота и привезивања"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-sv/strings.xml b/packages/Tethering/res/values-sv/strings.xml
deleted file mode 100644
index 72702c2..0000000
--- a/packages/Tethering/res/values-sv/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Internetdelning eller surfzon har aktiverats"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Tryck om du vill konfigurera."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Internetdelning har inaktiverats"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Kontakta administratören om du vill veta mer"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Trådlös surfzon och internetdelning har inaktiverats"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-sw/strings.xml b/packages/Tethering/res/values-sw/strings.xml
deleted file mode 100644
index 65e4aa8..0000000
--- a/packages/Tethering/res/values-sw/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Kusambaza mtandao au mtandaopepe umewashwa"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Gusa ili uweke mipangilio."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Umezima kipengele cha kusambaza mtandao"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Wasiliana na msimamizi wako ili upate maelezo zaidi"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Mtandaopepe na hali ya kusambaza mtandao"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-ta/strings.xml b/packages/Tethering/res/values-ta/strings.xml
deleted file mode 100644
index 4aba62d..0000000
--- a/packages/Tethering/res/values-ta/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"டெதெரிங் அல்லது ஹாட்ஸ்பாட் இயங்குகிறது"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"அமைக்க, தட்டவும்."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"டெதெரிங் முடக்கப்பட்டுள்ளது"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"விவரங்களுக்கு உங்கள் நிர்வாகியைத் தொடர்புகொள்ளவும்"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"ஹாட்ஸ்பாட் &amp; டெதெரிங் நிலை"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-te/strings.xml b/packages/Tethering/res/values-te/strings.xml
deleted file mode 100644
index 1f91791..0000000
--- a/packages/Tethering/res/values-te/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"టెథరింగ్ లేదా హాట్‌స్పాట్ యాక్టివ్‌గా ఉంది"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"సెటప్ చేయడానికి ట్యాప్ చేయండి."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"టెథరింగ్ డిజేబుల్ చేయబడింది"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"వివరాల కోసం మీ అడ్మిన్‌ని సంప్రదించండి"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"హాట్‌స్పాట్ &amp; టెథరింగ్ స్థితి"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-th/strings.xml b/packages/Tethering/res/values-th/strings.xml
deleted file mode 100644
index 44171c0..0000000
--- a/packages/Tethering/res/values-th/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"การเชื่อมต่ออินเทอร์เน็ตผ่านมือถือหรือฮอตสปอตทำงานอยู่"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"แตะเพื่อตั้งค่า"</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"ปิดใช้การเชื่อมต่ออินเทอร์เน็ตผ่านมือถือแล้ว"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"ติดต่อผู้ดูแลระบบเพื่อขอรายละเอียด"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"สถานะฮอตสปอตและการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือ"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-tl/strings.xml b/packages/Tethering/res/values-tl/strings.xml
deleted file mode 100644
index 7347dd3..0000000
--- a/packages/Tethering/res/values-tl/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Aktibo ang pag-tether o hotspot"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"I-tap para i-set up."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Naka-disable ang pag-tether"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Makipag-ugnayan sa iyong admin para sa mga detalye"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Status ng hotspot at pag-tether"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-tr/strings.xml b/packages/Tethering/res/values-tr/strings.xml
deleted file mode 100644
index 32030f1..0000000
--- a/packages/Tethering/res/values-tr/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Tethering veya hotspot etkin"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Ayarlamak için dokunun."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Tethering devre dışı bırakıldı"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Ayrıntılı bilgi için yöneticinize başvurun"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Hotspot ve tethering durumu"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-uk/strings.xml b/packages/Tethering/res/values-uk/strings.xml
deleted file mode 100644
index 1ca89b3..0000000
--- a/packages/Tethering/res/values-uk/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Модем чи точка доступу активні"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Натисніть, щоб налаштувати."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Використання телефона як модема вимкнено"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Щоб дізнатися більше, зв\'яжіться з адміністратором"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Статус точки доступу та модема"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-ur/strings.xml b/packages/Tethering/res/values-ur/strings.xml
deleted file mode 100644
index d72c7d4..0000000
--- a/packages/Tethering/res/values-ur/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"ٹیدرنگ یا ہاٹ اسپاٹ فعال"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"سیٹ اپ کرنے کیلئے تھپتھپائیں۔"</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"ٹیدرنگ غیر فعال ہے"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"تفصیلات کے لئے اپنے منتظم سے رابطہ کریں"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"ہاٹ اسپاٹ اور ٹیتھرنگ کا اسٹیٹس"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-uz/strings.xml b/packages/Tethering/res/values-uz/strings.xml
deleted file mode 100644
index af3b2eb..0000000
--- a/packages/Tethering/res/values-uz/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Modem rejimi yoki hotspot yoniq"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Sozlash uchun bosing."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Modem rejimi faolsizlantirildi"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Tafsilotlari uchun administratoringizga murojaat qiling"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Hotspot va modem rejimi holati"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-vi/strings.xml b/packages/Tethering/res/values-vi/strings.xml
deleted file mode 100644
index 21a0735..0000000
--- a/packages/Tethering/res/values-vi/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Tính năng chia sẻ Internet hoặc điểm phát sóng đang hoạt động"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Hãy nhấn để thiết lập."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Đã tắt tính năng chia sẻ Internet"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Hãy liên hệ với quản trị viên của bạn để biết chi tiết"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"Trạng thái điểm phát sóng và chia sẻ Internet"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-zh-rCN/strings.xml b/packages/Tethering/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 98e3b4b..0000000
--- a/packages/Tethering/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"网络共享或热点已启用"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"点按即可设置。"</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"网络共享已停用"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"如需了解详情,请与您的管理员联系"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"热点和网络共享状态"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-zh-rHK/strings.xml b/packages/Tethering/res/values-zh-rHK/strings.xml
deleted file mode 100644
index 9cafd42..0000000
--- a/packages/Tethering/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"網絡共享或熱點已啟用"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"輕按即可設定。"</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"網絡共享已停用"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"請聯絡您的管理員以瞭解詳情"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"熱點和網絡共享狀態"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-zh-rTW/strings.xml b/packages/Tethering/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 50a50bf..0000000
--- a/packages/Tethering/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"網路共用或無線基地台已啟用"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"輕觸即可進行設定。"</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"網路共用已停用"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"詳情請洽你的管理員"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"無線基地台與網路共用狀態"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values-zu/strings.xml b/packages/Tethering/res/values-zu/strings.xml
deleted file mode 100644
index f210f87..0000000
--- a/packages/Tethering/res/values-zu/strings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="tethered_notification_title" msgid="6426563586025792944">"Ukusebenzisa njengemodemu noma i-hotspot ephathekayo kuvuliwe"</string>
-    <string name="tethered_notification_message" msgid="64800879503420696">"Thepha ukuze usethe."</string>
-    <string name="disable_tether_notification_title" msgid="3004509127903564191">"Ukusebenzisa ifoni njengemodemu kukhutshaziwe"</string>
-    <string name="disable_tether_notification_message" msgid="6717523799293901476">"Xhumana nomphathi wakho ukuze uthole imininingwane"</string>
-    <string name="notification_channel_tethering_status" msgid="2663463891530932727">"I-Hotspot nesimo sokusebenzisa ifoni njengemodemu"</string>
-    <string name="no_upstream_notification_title" msgid="1204601824631788482"></string>
-    <string name="no_upstream_notification_message" msgid="8586582938243032621"></string>
-    <string name="no_upstream_notification_disable_button" msgid="8800919436924640822"></string>
-    <string name="upstream_roaming_notification_title" msgid="4772373823198997030"></string>
-    <string name="upstream_roaming_notification_message" msgid="3985577843181551650"></string>
-</resources>
diff --git a/packages/Tethering/res/values/config.xml b/packages/Tethering/res/values/config.xml
deleted file mode 100644
index 5f8d299..0000000
--- a/packages/Tethering/res/values/config.xml
+++ /dev/null
@@ -1,194 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<resources>
-    <!--
-    OEMs that wish to change the below settings must do so via a runtime resource overlay package
-    and *NOT* by changing this file. This file is part of the tethering mainline module.
-    TODO: define two resources for each config item: a default_* resource and a config_* resource,
-    config_* is empty by default but may be overridden by RROs.
-    -->
-    <!-- List of regexpressions describing the interface (if any) that represent tetherable
-         USB interfaces.  If the device doesn't want to support tethering over USB this should
-         be empty.  An example would be "usb.*" -->
-    <string-array translatable="false" name="config_tether_usb_regexs">
-        <item>"usb\\d"</item>
-        <item>"rndis\\d"</item>
-    </string-array>
-
-    <!-- List of regexpressions describing the interface (if any) that represent tetherable
-         NCM interfaces.  If the device doesn't want to support tethering over NCM this should
-         be empty. -->
-    <string-array translatable="false" name="config_tether_ncm_regexs">
-    </string-array>
-
-    <!-- List of regexpressions describing the interface (if any) that represent tetherable
-         Wifi interfaces.  If the device doesn't want to support tethering over Wifi this
-         should be empty.  An example would be "softap.*" -->
-    <string-array translatable="false" name="config_tether_wifi_regexs">
-        <item>"wlan\\d"</item>
-        <item>"softap\\d"</item>
-    </string-array>
-
-    <!-- List of regexpressions describing the interface (if any) that represent tetherable
-         WiGig interfaces.  If the device doesn't want to support tethering over WiGig this
-         should be empty.  An example would be "wigig\\d" -->
-    <string-array translatable="false" name="config_tether_wigig_regexs">
-        <item>"wigig\\d"</item>
-    </string-array>
-
-    <!-- List of regexpressions describing the interface (if any) that represent tetherable
-         Wifi P2P interfaces.  If the device doesn't want to support tethering over Wifi P2p this
-         should be empty.  An example would be "p2p-p2p\\d-.*" -->
-    <string-array translatable="false" name="config_tether_wifi_p2p_regexs">
-        <item>"p2p-p2p\\d-.*"</item>
-        <item>"p2p\\d"</item>
-    </string-array>
-
-    <!-- List of regexpressions describing the interface (if any) that represent tetherable
-         bluetooth interfaces.  If the device doesn't want to support tethering over bluetooth this
-         should be empty. -->
-    <string-array translatable="false" name="config_tether_bluetooth_regexs">
-        <item>"bt-pan"</item>
-    </string-array>
-
-    <!-- Use the BPF offload for tethering when the kernel has support. True by default.
-         If the device doesn't want to support tether BPF offload, this should be false.
-         Note that this setting could be overridden by device config.
-    -->
-    <bool translatable="false" name="config_tether_enable_bpf_offload">true</bool>
-
-    <!-- Use the old dnsmasq DHCP server for tethering instead of the framework implementation. -->
-    <bool translatable="false" name="config_tether_enable_legacy_dhcp_server">false</bool>
-
-    <!-- Use legacy wifi p2p dedicated address instead of randomize address. -->
-    <bool translatable="false" name="config_tether_enable_legacy_wifi_p2p_dedicated_ip">false</bool>
-
-    <!-- Dhcp range (min, max) to use for tethering purposes -->
-    <string-array translatable="false" name="config_tether_dhcp_range">
-    </string-array>
-
-    <!-- Used to config periodic polls tether offload stats from tethering offload HAL to make the
-     data warnings work. 5000(ms) by default. If the device doesn't want to poll tether
-     offload stats, this should be -1. Note that this setting could be override by
-     runtime resource overlays.
-    -->
-    <integer translatable="false" name="config_tether_offload_poll_interval">5000</integer>
-
-    <!-- Array of ConnectivityManager.TYPE_{BLUETOOTH, ETHERNET, MOBILE, MOBILE_DUN, MOBILE_HIPRI,
-         WIFI} values allowable for tethering.
-
-         Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or
-         [1,7,0] for TYPE_WIFI, TYPE_BLUETOOTH, and TYPE_MOBILE.
-
-         This list is also modified by code within the framework, including:
-
-             - TYPE_ETHERNET (9) is prepended to this list, and
-
-             - the return value of TelephonyManager.isTetheringApnRequired()
-               determines how the array is further modified:
-
-                   * TRUE (DUN REQUIRED).
-                     TYPE_MOBILE is removed (if present).
-                     TYPE_MOBILE_HIPRI is removed (if present).
-                     TYPE_MOBILE_DUN is appended (if not already present).
-
-                   * FALSE (DUN NOT REQUIRED).
-                     TYPE_MOBILE_DUN is removed (if present).
-                     If both of TYPE_MOBILE{,_HIPRI} are not present:
-                        TYPE_MOBILE is appended.
-                        TYPE_MOBILE_HIPRI is appended.
-
-         For other changes applied to this list, now and in the future, see
-         com.android.networkstack.tethering.TetheringConfiguration.
-
-         Note also: the order of this is important. The first upstream type
-         for which a satisfying network exists is used.
-    -->
-    <integer-array translatable="false" name="config_tether_upstream_types">
-    </integer-array>
-
-    <!-- When true, the tethering upstream network follows the current default
-         Internet network (except when the current default network is mobile,
-         in which case a DUN network will be used if required).
-
-         When true, overrides the config_tether_upstream_types setting above.
-    -->
-    <bool translatable="false" name="config_tether_upstream_automatic">true</bool>
-
-
-    <!-- If the mobile hotspot feature requires provisioning, a package name and class name
-         can be provided to launch a supported application that provisions the devices.
-         EntitlementManager will send an intent to Settings with the specified package name and
-         class name in extras to launch provision app.
-         TODO: note what extras here.
-
-         See EntitlementManager#runUiTetherProvisioning and
-         packages/apps/Settings/src/com/android/settings/network/TetherProvisioningActivity.java
-         for more details.
-
-         For ui-less/periodic recheck support see config_mobile_hotspot_provision_app_no_ui
-        -->
-    <!-- The first element is the package name and the second element is the class name
-         of the provisioning app -->
-    <string-array translatable="false" name="config_mobile_hotspot_provision_app">
-    <!--
-        <item>com.example.provisioning</item>
-        <item>com.example.provisioning.Activity</item>
-    -->
-    </string-array>
-
-    <!-- If the mobile hotspot feature requires provisioning, an action can be provided
-         that will be broadcast in non-ui cases for checking the provisioning status.
-         EntitlementManager will pass the specified name to Settings and Settings would
-         launch provisioning app by sending an intent with the package name.
-
-         A second broadcast, action defined by config_mobile_hotspot_provision_response,
-         will be sent back to notify if provisioning succeeded or not.  The response will
-         match that of the activity in config_mobile_hotspot_provision_app, but instead
-         contained within the int extra "EntitlementResult".
-         TODO: provide the system api for "EntitlementResult" extra and note it here.
-
-         See EntitlementManager#runSilentTetherProvisioning and
-         packages/apps/Settings/src/com/android/settings/wifi/tether/TetherService.java for more
-         details.
-        -->
-    <string translatable="false" name="config_mobile_hotspot_provision_app_no_ui"></string>
-
-    <!-- Sent in response to a provisioning check. The caller must hold the
-         permission android.permission.TETHER_PRIVILEGED for Settings to
-         receive this response.
-
-         See config_mobile_hotspot_provision_response
-         -->
-    <string translatable="false" name="config_mobile_hotspot_provision_response"></string>
-
-    <!-- Number of hours between each background provisioning call -->
-    <integer translatable="false" name="config_mobile_hotspot_provision_check_period">24</integer>
-
-    <!-- ComponentName of the service used to run no ui tether provisioning. -->
-    <string translatable="false" name="config_wifi_tether_enable">com.android.settings/.wifi.tether.TetherService</string>
-
-    <!-- No upstream notification is shown when there is a downstream but no upstream that is able
-         to do the tethering. -->
-    <!-- Delay(millisecond) to show no upstream notification after there's no Backhaul. Set delay to
-         "-1" for disable this feature. -->
-    <integer name="delay_to_show_no_upstream_after_no_backhaul">-1</integer>
-
-    <!-- Cellular roaming notification is shown when upstream is cellular network and in roaming
-         state. -->
-    <!-- Config for showing upstream roaming notification. -->
-    <bool name="config_upstream_roaming_notification">false</bool>
-</resources>
diff --git a/packages/Tethering/res/values/overlayable.xml b/packages/Tethering/res/values/overlayable.xml
deleted file mode 100644
index 0ee7a99..0000000
--- a/packages/Tethering/res/values/overlayable.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android">
-    <overlayable name="TetheringConfig">
-        <policy type="product|system|vendor">
-            <!-- Params from config.xml that can be overlaid -->
-            <item type="array" name="config_tether_usb_regexs"/>
-            <item type="array" name="config_tether_ncm_regexs" />
-            <item type="array" name="config_tether_wifi_regexs"/>
-            <item type="array" name="config_tether_wigig_regexs"/>
-            <item type="array" name="config_tether_wifi_p2p_regexs"/>
-            <item type="array" name="config_tether_bluetooth_regexs"/>
-            <item type="array" name="config_tether_dhcp_range"/>
-            <!-- Use the BPF offload for tethering when the kernel has support. True by default.
-                 If the device doesn't want to support tether BPF offload, this should be false.
-                 Note that this setting could be overridden by device config.
-            -->
-            <item type="bool" name="config_tether_enable_bpf_offload"/>
-            <item type="bool" name="config_tether_enable_legacy_dhcp_server"/>
-            <item type="bool" name="config_tether_enable_legacy_wifi_p2p_dedicated_ip"/>
-            <item type="integer" name="config_tether_offload_poll_interval"/>
-            <item type="array" name="config_tether_upstream_types"/>
-            <item type="bool" name="config_tether_upstream_automatic"/>
-            <!-- Configuration values for tethering entitlement check -->
-            <item type="array" name="config_mobile_hotspot_provision_app"/>
-            <item type="string" name="config_mobile_hotspot_provision_app_no_ui"/>
-            <item type="string" name="config_mobile_hotspot_provision_response"/>
-            <item type="integer" name="config_mobile_hotspot_provision_check_period"/>
-            <item type="string" name="config_wifi_tether_enable"/>
-            <!-- Params from config.xml that can be overlaid -->
-        </policy>
-    </overlayable>
-</resources>
diff --git a/packages/Tethering/res/values/strings.xml b/packages/Tethering/res/values/strings.xml
deleted file mode 100644
index d63c7c5..0000000
--- a/packages/Tethering/res/values/strings.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- Shown when the device is tethered -->
-    <!-- String for tethered notification title [CHAR LIMIT=200] -->
-    <string name="tethered_notification_title">Tethering or hotspot active</string>
-    <!-- String for tethered notification message [CHAR LIMIT=200] -->
-    <string name="tethered_notification_message">Tap to set up.</string>
-
-    <!-- This notification is shown when tethering has been disabled on a user's device.
-    The device is managed by the user's employer. Tethering can't be turned on unless the
-    IT administrator allows it. The noun "admin" is another reference for "IT administrator." -->
-    <!-- String for tether disabling notification title [CHAR LIMIT=200] -->
-    <string name="disable_tether_notification_title">Tethering is disabled</string>
-    <!-- String for tether disabling notification message [CHAR LIMIT=200] -->
-    <string name="disable_tether_notification_message">Contact your admin for details</string>
-
-    <!-- This string should be consistent with the "Hotspot & tethering" text in the "Network and
-    Internet" settings page. That is currently the tether_settings_title_all string. -->
-    <!-- String for tether notification channel name [CHAR LIMIT=200] -->
-    <string name="notification_channel_tethering_status">Hotspot &amp; tethering status</string>
-
-    <!-- String for no upstream notification title [CHAR LIMIT=200] -->
-    <string name="no_upstream_notification_title"></string>
-    <!-- String for no upstream notification message [CHAR LIMIT=200] -->
-    <string name="no_upstream_notification_message"></string>
-    <!-- String for no upstream notification disable button [CHAR LIMIT=200] -->
-    <string name="no_upstream_notification_disable_button"></string>
-
-    <!-- String for cellular roaming notification title [CHAR LIMIT=200] -->
-    <string name="upstream_roaming_notification_title"></string>
-    <!-- String for cellular roaming notification message [CHAR LIMIT=500] -->
-    <string name="upstream_roaming_notification_message"></string>
-</resources>
diff --git a/packages/Tethering/src/android/net/dhcp/DhcpServerCallbacks.java b/packages/Tethering/src/android/net/dhcp/DhcpServerCallbacks.java
deleted file mode 100644
index 9fda125..0000000
--- a/packages/Tethering/src/android/net/dhcp/DhcpServerCallbacks.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net.dhcp;
-
-/**
- * Convenience wrapper around IDhcpServerCallbacks.Stub that implements getInterfaceVersion().
- * @hide
- */
-public abstract class DhcpServerCallbacks extends IDhcpServerCallbacks.Stub {
-    /**
-     * Get the version of the aidl interface implemented by the callbacks.
-     */
-    @Override
-    public int getInterfaceVersion() {
-        return IDhcpServerCallbacks.VERSION;
-    }
-
-    @Override
-    public String getInterfaceHash() {
-        return IDhcpServerCallbacks.HASH;
-    }
-}
diff --git a/packages/Tethering/src/android/net/dhcp/DhcpServingParamsParcelExt.java b/packages/Tethering/src/android/net/dhcp/DhcpServingParamsParcelExt.java
deleted file mode 100644
index aaaec17..0000000
--- a/packages/Tethering/src/android/net/dhcp/DhcpServingParamsParcelExt.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net.dhcp;
-
-import static com.android.net.module.util.Inet4AddressUtils.inet4AddressToIntHTH;
-
-import android.net.LinkAddress;
-import android.util.ArraySet;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import java.net.Inet4Address;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Set;
-
-/**
- * Subclass of {@link DhcpServingParamsParcel} with additional utility methods for building.
- *
- * <p>This utility class does not check for validity of the parameters: invalid parameters are
- * reported by the receiving module when unparceling the parcel.
- *
- * @see DhcpServingParams
- * @hide
- */
-public class DhcpServingParamsParcelExt extends DhcpServingParamsParcel {
-    public static final int MTU_UNSET = 0;
-
-    /**
-     * Set the server address and served prefix for the DHCP server.
-     *
-     * <p>This parameter is required.
-     */
-    public DhcpServingParamsParcelExt setServerAddr(@NonNull LinkAddress serverAddr) {
-        this.serverAddr = inet4AddressToIntHTH((Inet4Address) serverAddr.getAddress());
-        this.serverAddrPrefixLength = serverAddr.getPrefixLength();
-        return this;
-    }
-
-    /**
-     * Set the default routers to be advertised to DHCP clients.
-     *
-     * <p>Each router must be inside the served prefix. This may be an empty set, but it must
-     * always be set explicitly.
-     */
-    public DhcpServingParamsParcelExt setDefaultRouters(@NonNull Set<Inet4Address> defaultRouters) {
-        this.defaultRouters = toIntArray(defaultRouters);
-        return this;
-    }
-
-    /**
-     * Set the default routers to be advertised to DHCP clients.
-     *
-     * <p>Each router must be inside the served prefix. This may be an empty list of routers,
-     * but it must always be set explicitly.
-     */
-    public DhcpServingParamsParcelExt setDefaultRouters(@NonNull Inet4Address... defaultRouters) {
-        return setDefaultRouters(newArraySet(defaultRouters));
-    }
-
-    /**
-     * Convenience method to build the parameters with no default router.
-     *
-     * <p>Equivalent to calling {@link #setDefaultRouters(Inet4Address...)} with no address.
-     */
-    public DhcpServingParamsParcelExt setNoDefaultRouter() {
-        return setDefaultRouters();
-    }
-
-    /**
-     * Set the DNS servers to be advertised to DHCP clients.
-     *
-     * <p>This may be an empty set, but it must always be set explicitly.
-     */
-    public DhcpServingParamsParcelExt setDnsServers(@NonNull Set<Inet4Address> dnsServers) {
-        this.dnsServers = toIntArray(dnsServers);
-        return this;
-    }
-
-    /**
-     * Set the DNS servers to be advertised to DHCP clients.
-     *
-     * <p>This may be an empty list of servers, but it must always be set explicitly.
-     */
-    public DhcpServingParamsParcelExt setDnsServers(@NonNull Inet4Address... dnsServers) {
-        return setDnsServers(newArraySet(dnsServers));
-    }
-
-    /**
-     * Convenience method to build the parameters with no DNS server.
-     *
-     * <p>Equivalent to calling {@link #setDnsServers(Inet4Address...)} with no address.
-     */
-    public DhcpServingParamsParcelExt setNoDnsServer() {
-        return setDnsServers();
-    }
-
-    /**
-     * Set excluded addresses that the DHCP server is not allowed to assign to clients.
-     *
-     * <p>This parameter is optional. DNS servers and default routers are always excluded
-     * and do not need to be set here.
-     */
-    public DhcpServingParamsParcelExt setExcludedAddrs(@NonNull Set<Inet4Address> excludedAddrs) {
-        this.excludedAddrs = toIntArray(excludedAddrs);
-        return this;
-    }
-
-    /**
-     * Set excluded addresses that the DHCP server is not allowed to assign to clients.
-     *
-     * <p>This parameter is optional. DNS servers and default routers are always excluded
-     * and do not need to be set here.
-     */
-    public DhcpServingParamsParcelExt setExcludedAddrs(@NonNull Inet4Address... excludedAddrs) {
-        return setExcludedAddrs(newArraySet(excludedAddrs));
-    }
-
-    /**
-     * Set the lease time for leases assigned by the DHCP server.
-     *
-     * <p>This parameter is required.
-     */
-    public DhcpServingParamsParcelExt setDhcpLeaseTimeSecs(long dhcpLeaseTimeSecs) {
-        this.dhcpLeaseTimeSecs = dhcpLeaseTimeSecs;
-        return this;
-    }
-
-    /**
-     * Set the link MTU to be advertised to DHCP clients.
-     *
-     * <p>If set to {@link #MTU_UNSET}, no MTU will be advertised to clients. This parameter
-     * is optional and defaults to {@link #MTU_UNSET}.
-     */
-    public DhcpServingParamsParcelExt setLinkMtu(int linkMtu) {
-        this.linkMtu = linkMtu;
-        return this;
-    }
-
-    /**
-     * Set whether the DHCP server should send the ANDROID_METERED vendor-specific option.
-     *
-     * <p>If not set, the default value is false.
-     */
-    public DhcpServingParamsParcelExt setMetered(boolean metered) {
-        this.metered = metered;
-        return this;
-    }
-
-    /**
-     * Set the client address to tell DHCP server only offer this address.
-     * The client's prefix length is the same as server's.
-     *
-     * <p>If not set, the default value is null.
-     */
-    public DhcpServingParamsParcelExt setSingleClientAddr(@Nullable Inet4Address clientAddr) {
-        this.singleClientAddr = clientAddr == null ? 0 : inet4AddressToIntHTH(clientAddr);
-        return this;
-    }
-
-    /**
-     * Set whether the DHCP server should request a new prefix from IpServer when receiving
-     * DHCPDECLINE message in certain particular link (e.g. there is only one downstream USB
-     * tethering client). If it's false, process DHCPDECLINE message as RFC2131#4.3.3 suggests.
-     *
-     * <p>If not set, the default value is false.
-     */
-    public DhcpServingParamsParcelExt setChangePrefixOnDecline(boolean changePrefixOnDecline) {
-        this.changePrefixOnDecline = changePrefixOnDecline;
-        return this;
-    }
-
-    private static int[] toIntArray(@NonNull Collection<Inet4Address> addrs) {
-        int[] res = new int[addrs.size()];
-        int i = 0;
-        for (Inet4Address addr : addrs) {
-            res[i] = inet4AddressToIntHTH(addr);
-            i++;
-        }
-        return res;
-    }
-
-    private static ArraySet<Inet4Address> newArraySet(Inet4Address... addrs) {
-        ArraySet<Inet4Address> addrSet = new ArraySet<>(addrs.length);
-        Collections.addAll(addrSet, addrs);
-        return addrSet;
-    }
-}
diff --git a/packages/Tethering/src/android/net/ip/DadProxy.java b/packages/Tethering/src/android/net/ip/DadProxy.java
deleted file mode 100644
index e2976b7..0000000
--- a/packages/Tethering/src/android/net/ip/DadProxy.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net.ip;
-
-import android.net.util.InterfaceParams;
-import android.os.Handler;
-
-import androidx.annotation.VisibleForTesting;
-
-/**
- * Basic Duplicate address detection proxy.
- *
- * @hide
- */
-public class DadProxy {
-    private static final String TAG = DadProxy.class.getSimpleName();
-
-    @VisibleForTesting
-    public static NeighborPacketForwarder naForwarder;
-    public static NeighborPacketForwarder nsForwarder;
-
-    public DadProxy(Handler h, InterfaceParams tetheredIface) {
-        naForwarder = new NeighborPacketForwarder(h, tetheredIface,
-                                        NeighborPacketForwarder.ICMPV6_NEIGHBOR_ADVERTISEMENT);
-        nsForwarder = new NeighborPacketForwarder(h, tetheredIface,
-                                        NeighborPacketForwarder.ICMPV6_NEIGHBOR_SOLICITATION);
-    }
-
-    /** Stop NS/NA Forwarders. */
-    public void stop() {
-        naForwarder.stop();
-        nsForwarder.stop();
-    }
-
-    /** Set upstream iface on both forwarders. */
-    public void setUpstreamIface(InterfaceParams upstreamIface) {
-        naForwarder.setUpstreamIface(upstreamIface);
-        nsForwarder.setUpstreamIface(upstreamIface);
-    }
-}
diff --git a/packages/Tethering/src/android/net/ip/IpServer.java b/packages/Tethering/src/android/net/ip/IpServer.java
deleted file mode 100644
index 336124d..0000000
--- a/packages/Tethering/src/android/net/ip/IpServer.java
+++ /dev/null
@@ -1,1422 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net.ip;
-
-import static android.net.RouteInfo.RTN_UNICAST;
-import static android.net.TetheringManager.TetheringRequest.checkStaticAddressConfiguration;
-import static android.net.dhcp.IDhcpServer.STATUS_SUCCESS;
-import static android.net.util.NetworkConstants.RFC7421_PREFIX_LENGTH;
-import static android.net.util.NetworkConstants.asByte;
-import static android.net.util.PrefixUtils.asIpPrefix;
-import static android.net.util.TetheringMessageBase.BASE_IPSERVER;
-import static android.system.OsConstants.RT_SCOPE_UNIVERSE;
-
-import static com.android.net.module.util.Inet4AddressUtils.intToInet4AddressHTH;
-
-import android.net.INetd;
-import android.net.INetworkStackStatusCallback;
-import android.net.IpPrefix;
-import android.net.LinkAddress;
-import android.net.LinkProperties;
-import android.net.MacAddress;
-import android.net.RouteInfo;
-import android.net.TetheredClient;
-import android.net.TetheringManager;
-import android.net.TetheringRequestParcel;
-import android.net.dhcp.DhcpLeaseParcelable;
-import android.net.dhcp.DhcpServerCallbacks;
-import android.net.dhcp.DhcpServingParamsParcel;
-import android.net.dhcp.DhcpServingParamsParcelExt;
-import android.net.dhcp.IDhcpEventCallbacks;
-import android.net.dhcp.IDhcpServer;
-import android.net.ip.IpNeighborMonitor.NeighborEvent;
-import android.net.ip.RouterAdvertisementDaemon.RaParams;
-import android.net.shared.NetdUtils;
-import android.net.shared.RouteUtils;
-import android.net.util.InterfaceParams;
-import android.net.util.InterfaceSet;
-import android.net.util.PrefixUtils;
-import android.net.util.SharedLog;
-import android.os.Build;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.os.RemoteException;
-import android.os.ServiceSpecificException;
-import android.util.Log;
-import android.util.SparseArray;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import com.android.internal.util.MessageUtils;
-import com.android.internal.util.State;
-import com.android.internal.util.StateMachine;
-import com.android.networkstack.tethering.BpfCoordinator;
-import com.android.networkstack.tethering.BpfCoordinator.Ipv6ForwardingRule;
-import com.android.networkstack.tethering.PrivateAddressCoordinator;
-
-import java.io.IOException;
-import java.net.Inet4Address;
-import java.net.Inet6Address;
-import java.net.NetworkInterface;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Objects;
-import java.util.Random;
-import java.util.Set;
-
-/**
- * Provides the interface to IP-layer serving functionality for a given network
- * interface, e.g. for tethering or "local-only hotspot" mode.
- *
- * @hide
- */
-public class IpServer extends StateMachine {
-    public static final int STATE_UNAVAILABLE = 0;
-    public static final int STATE_AVAILABLE   = 1;
-    public static final int STATE_TETHERED    = 2;
-    public static final int STATE_LOCAL_ONLY  = 3;
-
-    /** Get string name of |state|.*/
-    public static String getStateString(int state) {
-        switch (state) {
-            case STATE_UNAVAILABLE: return "UNAVAILABLE";
-            case STATE_AVAILABLE:   return "AVAILABLE";
-            case STATE_TETHERED:    return "TETHERED";
-            case STATE_LOCAL_ONLY:  return "LOCAL_ONLY";
-        }
-        return "UNKNOWN: " + state;
-    }
-
-    private static final byte DOUG_ADAMS = (byte) 42;
-
-    // TODO: have PanService use some visible version of this constant
-    private static final String BLUETOOTH_IFACE_ADDR = "192.168.44.1/24";
-
-    // TODO: have this configurable
-    private static final int DHCP_LEASE_TIME_SECS = 3600;
-
-    private static final MacAddress NULL_MAC_ADDRESS = MacAddress.fromString("00:00:00:00:00:00");
-
-    private static final String TAG = "IpServer";
-    private static final boolean DBG = false;
-    private static final boolean VDBG = false;
-    private static final Class[] sMessageClasses = {
-            IpServer.class
-    };
-    private static final SparseArray<String> sMagicDecoderRing =
-            MessageUtils.findMessageNames(sMessageClasses);
-
-    /** IpServer callback. */
-    public static class Callback {
-        /**
-         * Notify that |who| has changed its tethering state.
-         *
-         * @param who the calling instance of IpServer
-         * @param state one of STATE_*
-         * @param lastError one of TetheringManager.TETHER_ERROR_*
-         */
-        public void updateInterfaceState(IpServer who, int state, int lastError) { }
-
-        /**
-         * Notify that |who| has new LinkProperties.
-         *
-         * @param who the calling instance of IpServer
-         * @param newLp the new LinkProperties to report
-         */
-        public void updateLinkProperties(IpServer who, LinkProperties newLp) { }
-
-        /**
-         * Notify that the DHCP leases changed in one of the IpServers.
-         */
-        public void dhcpLeasesChanged() { }
-
-        /**
-         * Request Tethering change.
-         *
-         * @param tetheringType the downstream type of this IpServer.
-         * @param enabled enable or disable tethering.
-         */
-        public void requestEnableTethering(int tetheringType, boolean enabled) { }
-    }
-
-    /** Capture IpServer dependencies, for injection. */
-    public abstract static class Dependencies {
-        /**
-         * Create a DadProxy instance to be used by IpServer.
-         * To support multiple tethered interfaces concurrently DAD Proxy
-         * needs to be supported per IpServer instead of per upstream.
-         */
-        public DadProxy getDadProxy(Handler handler, InterfaceParams ifParams) {
-            return new DadProxy(handler, ifParams);
-        }
-
-        /** Create an IpNeighborMonitor to be used by this IpServer */
-        public IpNeighborMonitor getIpNeighborMonitor(Handler handler, SharedLog log,
-                IpNeighborMonitor.NeighborEventConsumer consumer) {
-            return new IpNeighborMonitor(handler, log, consumer);
-        }
-
-        /** Create a RouterAdvertisementDaemon instance to be used by IpServer.*/
-        public RouterAdvertisementDaemon getRouterAdvertisementDaemon(InterfaceParams ifParams) {
-            return new RouterAdvertisementDaemon(ifParams);
-        }
-
-        /** Get |ifName|'s interface information.*/
-        public InterfaceParams getInterfaceParams(String ifName) {
-            return InterfaceParams.getByName(ifName);
-        }
-
-        /** Get |ifName|'s interface index. */
-        public int getIfindex(String ifName) {
-            try {
-                return NetworkInterface.getByName(ifName).getIndex();
-            } catch (IOException | NullPointerException e) {
-                Log.e(TAG, "Can't determine interface index for interface " + ifName);
-                return 0;
-            }
-        }
-
-        /** Create a DhcpServer instance to be used by IpServer. */
-        public abstract void makeDhcpServer(String ifName, DhcpServingParamsParcel params,
-                DhcpServerCallbacks cb);
-    }
-
-    // request from the user that it wants to tether
-    public static final int CMD_TETHER_REQUESTED            = BASE_IPSERVER + 1;
-    // request from the user that it wants to untether
-    public static final int CMD_TETHER_UNREQUESTED          = BASE_IPSERVER + 2;
-    // notification that this interface is down
-    public static final int CMD_INTERFACE_DOWN              = BASE_IPSERVER + 3;
-    // notification from the {@link Tethering.TetherMainSM} that it had trouble enabling IP
-    // Forwarding
-    public static final int CMD_IP_FORWARDING_ENABLE_ERROR  = BASE_IPSERVER + 4;
-    // notification from the {@link Tethering.TetherMainSM} SM that it had trouble disabling IP
-    // Forwarding
-    public static final int CMD_IP_FORWARDING_DISABLE_ERROR = BASE_IPSERVER + 5;
-    // notification from the {@link Tethering.TetherMainSM} SM that it had trouble starting
-    // tethering
-    public static final int CMD_START_TETHERING_ERROR       = BASE_IPSERVER + 6;
-    // notification from the {@link Tethering.TetherMainSM} that it had trouble stopping tethering
-    public static final int CMD_STOP_TETHERING_ERROR        = BASE_IPSERVER + 7;
-    // notification from the {@link Tethering.TetherMainSM} that it had trouble setting the DNS
-    // forwarders
-    public static final int CMD_SET_DNS_FORWARDERS_ERROR    = BASE_IPSERVER + 8;
-    // the upstream connection has changed
-    public static final int CMD_TETHER_CONNECTION_CHANGED   = BASE_IPSERVER + 9;
-    // new IPv6 tethering parameters need to be processed
-    public static final int CMD_IPV6_TETHER_UPDATE          = BASE_IPSERVER + 10;
-    // new neighbor cache entry on our interface
-    public static final int CMD_NEIGHBOR_EVENT              = BASE_IPSERVER + 11;
-    // request from DHCP server that it wants to have a new prefix
-    public static final int CMD_NEW_PREFIX_REQUEST          = BASE_IPSERVER + 12;
-    // request from PrivateAddressCoordinator to restart tethering.
-    public static final int CMD_NOTIFY_PREFIX_CONFLICT      = BASE_IPSERVER + 13;
-
-    private final State mInitialState;
-    private final State mLocalHotspotState;
-    private final State mTetheredState;
-    private final State mUnavailableState;
-    private final State mWaitingForRestartState;
-
-    private final SharedLog mLog;
-    private final INetd mNetd;
-    @NonNull
-    private final BpfCoordinator mBpfCoordinator;
-    private final Callback mCallback;
-    private final InterfaceController mInterfaceCtrl;
-    private final PrivateAddressCoordinator mPrivateAddressCoordinator;
-
-    private final String mIfaceName;
-    private final int mInterfaceType;
-    private final LinkProperties mLinkProperties;
-    private final boolean mUsingLegacyDhcp;
-    private final boolean mUsingBpfOffload;
-
-    private final Dependencies mDeps;
-
-    private int mLastError;
-    private int mServingMode;
-    private InterfaceSet mUpstreamIfaceSet;  // may change over time
-    private InterfaceParams mInterfaceParams;
-    // TODO: De-duplicate this with mLinkProperties above. Currently, these link
-    // properties are those selected by the IPv6TetheringCoordinator and relayed
-    // to us. By comparison, mLinkProperties contains the addresses and directly
-    // connected routes that have been formed from these properties iff. we have
-    // succeeded in configuring them and are able to announce them within Router
-    // Advertisements (otherwise, we do not add them to mLinkProperties at all).
-    private LinkProperties mLastIPv6LinkProperties;
-    private RouterAdvertisementDaemon mRaDaemon;
-    private DadProxy mDadProxy;
-
-    // To be accessed only on the handler thread
-    private int mDhcpServerStartIndex = 0;
-    private IDhcpServer mDhcpServer;
-    private RaParams mLastRaParams;
-
-    private LinkAddress mStaticIpv4ServerAddr;
-    private LinkAddress mStaticIpv4ClientAddr;
-
-    @NonNull
-    private List<TetheredClient> mDhcpLeases = Collections.emptyList();
-
-    private int mLastIPv6UpstreamIfindex = 0;
-
-    private class MyNeighborEventConsumer implements IpNeighborMonitor.NeighborEventConsumer {
-        public void accept(NeighborEvent e) {
-            sendMessage(CMD_NEIGHBOR_EVENT, e);
-        }
-    }
-
-    private final IpNeighborMonitor mIpNeighborMonitor;
-
-    private LinkAddress mIpv4Address;
-
-    // TODO: Add a dependency object to pass the data members or variables from the tethering
-    // object. It helps to reduce the arguments of the constructor.
-    public IpServer(
-            String ifaceName, Looper looper, int interfaceType, SharedLog log,
-            INetd netd, @NonNull BpfCoordinator coordinator, Callback callback,
-            boolean usingLegacyDhcp, boolean usingBpfOffload,
-            PrivateAddressCoordinator addressCoordinator, Dependencies deps) {
-        super(ifaceName, looper);
-        mLog = log.forSubComponent(ifaceName);
-        mNetd = netd;
-        mBpfCoordinator = coordinator;
-        mCallback = callback;
-        mInterfaceCtrl = new InterfaceController(ifaceName, mNetd, mLog);
-        mIfaceName = ifaceName;
-        mInterfaceType = interfaceType;
-        mLinkProperties = new LinkProperties();
-        mUsingLegacyDhcp = usingLegacyDhcp;
-        mUsingBpfOffload = usingBpfOffload;
-        mPrivateAddressCoordinator = addressCoordinator;
-        mDeps = deps;
-        resetLinkProperties();
-        mLastError = TetheringManager.TETHER_ERROR_NO_ERROR;
-        mServingMode = STATE_AVAILABLE;
-
-        mIpNeighborMonitor = mDeps.getIpNeighborMonitor(getHandler(), mLog,
-                new MyNeighborEventConsumer());
-
-        // IP neighbor monitor monitors the neighbor events for adding/removing offload
-        // forwarding rules per client. If BPF offload is not supported, don't start listening
-        // for neighbor events. See updateIpv6ForwardingRules, addIpv6ForwardingRule,
-        // removeIpv6ForwardingRule.
-        if (mUsingBpfOffload && !mIpNeighborMonitor.start()) {
-            mLog.e("Failed to create IpNeighborMonitor on " + mIfaceName);
-        }
-
-        mInitialState = new InitialState();
-        mLocalHotspotState = new LocalHotspotState();
-        mTetheredState = new TetheredState();
-        mUnavailableState = new UnavailableState();
-        mWaitingForRestartState = new WaitingForRestartState();
-        addState(mInitialState);
-        addState(mLocalHotspotState);
-        addState(mTetheredState);
-        addState(mWaitingForRestartState, mTetheredState);
-        addState(mUnavailableState);
-
-        setInitialState(mInitialState);
-    }
-
-    /** Interface name which IpServer served.*/
-    public String interfaceName() {
-        return mIfaceName;
-    }
-
-    /**
-     * Tethering downstream type. It would be one of TetheringManager#TETHERING_*.
-     */
-    public int interfaceType() {
-        return mInterfaceType;
-    }
-
-    /** Last error from this IpServer. */
-    public int lastError() {
-        return mLastError;
-    }
-
-    /** Serving mode is the current state of IpServer state machine. */
-    public int servingMode() {
-        return mServingMode;
-    }
-
-    /** The properties of the network link which IpServer is serving. */
-    public LinkProperties linkProperties() {
-        return new LinkProperties(mLinkProperties);
-    }
-
-    /** The address which IpServer is using. */
-    public LinkAddress getAddress() {
-        return mIpv4Address;
-    }
-
-    /**
-     * Get the latest list of DHCP leases that was reported. Must be called on the IpServer looper
-     * thread.
-     */
-    public List<TetheredClient> getAllLeases() {
-        return Collections.unmodifiableList(mDhcpLeases);
-    }
-
-    /** Stop this IpServer. After this is called this IpServer should not be used any more. */
-    public void stop() {
-        sendMessage(CMD_INTERFACE_DOWN);
-    }
-
-    /**
-     * Tethering is canceled. IpServer state machine will be available and wait for
-     * next tethering request.
-     */
-    public void unwanted() {
-        sendMessage(CMD_TETHER_UNREQUESTED);
-    }
-
-    /** Internals. */
-
-    private boolean startIPv4() {
-        return configureIPv4(true);
-    }
-
-    /**
-     * Convenience wrapper around INetworkStackStatusCallback to run callbacks on the IpServer
-     * handler.
-     *
-     * <p>Different instances of this class can be created for each call to IDhcpServer methods,
-     * with different implementations of the callback, to differentiate handling of success/error in
-     * each call.
-     */
-    private abstract class OnHandlerStatusCallback extends INetworkStackStatusCallback.Stub {
-        @Override
-        public void onStatusAvailable(int statusCode) {
-            getHandler().post(() -> callback(statusCode));
-        }
-
-        public abstract void callback(int statusCode);
-
-        @Override
-        public int getInterfaceVersion() {
-            return this.VERSION;
-        }
-
-        @Override
-        public String getInterfaceHash() {
-            return this.HASH;
-        }
-    }
-
-    private class DhcpServerCallbacksImpl extends DhcpServerCallbacks {
-        private final int mStartIndex;
-
-        private DhcpServerCallbacksImpl(int startIndex) {
-            mStartIndex = startIndex;
-        }
-
-        @Override
-        public void onDhcpServerCreated(int statusCode, IDhcpServer server) throws RemoteException {
-            getHandler().post(() -> {
-                // We are on the handler thread: mDhcpServerStartIndex can be read safely.
-                if (mStartIndex != mDhcpServerStartIndex) {
-                     // This start request is obsolete. Explicitly stop the DHCP server to shut
-                     // down its thread. When the |server| binder token goes out of scope, the
-                     // garbage collector will finalize it, which causes the network stack process
-                     // garbage collector to collect the server itself.
-                    try {
-                        server.stop(null);
-                    } catch (RemoteException e) { }
-                    return;
-                }
-
-                if (statusCode != STATUS_SUCCESS) {
-                    mLog.e("Error obtaining DHCP server: " + statusCode);
-                    handleError();
-                    return;
-                }
-
-                mDhcpServer = server;
-                try {
-                    mDhcpServer.startWithCallbacks(new OnHandlerStatusCallback() {
-                        @Override
-                        public void callback(int startStatusCode) {
-                            if (startStatusCode != STATUS_SUCCESS) {
-                                mLog.e("Error starting DHCP server: " + startStatusCode);
-                                handleError();
-                            }
-                        }
-                    }, new DhcpEventCallback());
-                } catch (RemoteException e) {
-                    throw new IllegalStateException(e);
-                }
-            });
-        }
-
-        private void handleError() {
-            mLastError = TetheringManager.TETHER_ERROR_DHCPSERVER_ERROR;
-            transitionTo(mInitialState);
-        }
-    }
-
-    private class DhcpEventCallback extends IDhcpEventCallbacks.Stub {
-        @Override
-        public void onLeasesChanged(List<DhcpLeaseParcelable> leaseParcelables) {
-            final ArrayList<TetheredClient> leases = new ArrayList<>();
-            for (DhcpLeaseParcelable lease : leaseParcelables) {
-                final LinkAddress address = new LinkAddress(
-                        intToInet4AddressHTH(lease.netAddr), lease.prefixLength,
-                        0 /* flags */, RT_SCOPE_UNIVERSE /* as per RFC6724#3.2 */,
-                        lease.expTime /* deprecationTime */, lease.expTime /* expirationTime */);
-
-                final MacAddress macAddress;
-                try {
-                    macAddress = MacAddress.fromBytes(lease.hwAddr);
-                } catch (IllegalArgumentException e) {
-                    Log.wtf(TAG, "Invalid address received from DhcpServer: "
-                            + Arrays.toString(lease.hwAddr));
-                    return;
-                }
-
-                final TetheredClient.AddressInfo addressInfo = new TetheredClient.AddressInfo(
-                        address, lease.hostname);
-                leases.add(new TetheredClient(
-                        macAddress,
-                        Collections.singletonList(addressInfo),
-                        mInterfaceType));
-            }
-
-            getHandler().post(() -> {
-                mDhcpLeases = leases;
-                mCallback.dhcpLeasesChanged();
-            });
-        }
-
-        @Override
-        public void onNewPrefixRequest(@NonNull final IpPrefix currentPrefix) {
-            Objects.requireNonNull(currentPrefix);
-            sendMessage(CMD_NEW_PREFIX_REQUEST, currentPrefix);
-        }
-
-        @Override
-        public int getInterfaceVersion() {
-            return this.VERSION;
-        }
-
-        @Override
-        public String getInterfaceHash() throws RemoteException {
-            return this.HASH;
-        }
-    }
-
-    private RouteInfo getDirectConnectedRoute(@NonNull final LinkAddress ipv4Address) {
-        Objects.requireNonNull(ipv4Address);
-        return new RouteInfo(PrefixUtils.asIpPrefix(ipv4Address), null, mIfaceName, RTN_UNICAST);
-    }
-
-    private DhcpServingParamsParcel makeServingParams(@NonNull final Inet4Address defaultRouter,
-            @NonNull final Inet4Address dnsServer, @NonNull LinkAddress serverAddr,
-            @Nullable Inet4Address clientAddr) {
-        final boolean changePrefixOnDecline =
-                (mInterfaceType == TetheringManager.TETHERING_NCM && clientAddr == null);
-        return new DhcpServingParamsParcelExt()
-            .setDefaultRouters(defaultRouter)
-            .setDhcpLeaseTimeSecs(DHCP_LEASE_TIME_SECS)
-            .setDnsServers(dnsServer)
-            .setServerAddr(serverAddr)
-            .setMetered(true)
-            .setSingleClientAddr(clientAddr)
-            .setChangePrefixOnDecline(changePrefixOnDecline);
-            // TODO: also advertise link MTU
-    }
-
-    private boolean startDhcp(final LinkAddress serverLinkAddr, final LinkAddress clientLinkAddr) {
-        if (mUsingLegacyDhcp) {
-            return true;
-        }
-
-        final Inet4Address addr = (Inet4Address) serverLinkAddr.getAddress();
-        final Inet4Address clientAddr = clientLinkAddr == null ? null :
-                (Inet4Address) clientLinkAddr.getAddress();
-
-        final DhcpServingParamsParcel params = makeServingParams(addr /* defaultRouter */,
-                addr /* dnsServer */, serverLinkAddr, clientAddr);
-        mDhcpServerStartIndex++;
-        mDeps.makeDhcpServer(
-                mIfaceName, params, new DhcpServerCallbacksImpl(mDhcpServerStartIndex));
-        return true;
-    }
-
-    private void stopDhcp() {
-        // Make all previous start requests obsolete so servers are not started later
-        mDhcpServerStartIndex++;
-
-        if (mDhcpServer != null) {
-            try {
-                mDhcpServer.stop(new OnHandlerStatusCallback() {
-                    @Override
-                    public void callback(int statusCode) {
-                        if (statusCode != STATUS_SUCCESS) {
-                            mLog.e("Error stopping DHCP server: " + statusCode);
-                            mLastError = TetheringManager.TETHER_ERROR_DHCPSERVER_ERROR;
-                            // Not much more we can do here
-                        }
-                        mDhcpLeases.clear();
-                        getHandler().post(mCallback::dhcpLeasesChanged);
-                    }
-                });
-                mDhcpServer = null;
-            } catch (RemoteException e) {
-                mLog.e("Error stopping DHCP server", e);
-                // Not much more we can do here
-            }
-        }
-    }
-
-    private boolean configureDhcp(boolean enable, final LinkAddress serverAddr,
-            final LinkAddress clientAddr) {
-        if (enable) {
-            return startDhcp(serverAddr, clientAddr);
-        } else {
-            stopDhcp();
-            return true;
-        }
-    }
-
-    private void stopIPv4() {
-        configureIPv4(false);
-        // NOTE: All of configureIPv4() will be refactored out of existence
-        // into calls to InterfaceController, shared with startIPv4().
-        mInterfaceCtrl.clearIPv4Address();
-        mPrivateAddressCoordinator.releaseDownstream(this);
-        mIpv4Address = null;
-        mStaticIpv4ServerAddr = null;
-        mStaticIpv4ClientAddr = null;
-    }
-
-    private boolean configureIPv4(boolean enabled) {
-        if (VDBG) Log.d(TAG, "configureIPv4(" + enabled + ")");
-
-        if (enabled) {
-            mIpv4Address = requestIpv4Address();
-        }
-
-        if (mIpv4Address == null) {
-            mLog.e("No available ipv4 address");
-            return false;
-        }
-
-        if (mInterfaceType == TetheringManager.TETHERING_BLUETOOTH) {
-            // BT configures the interface elsewhere: only start DHCP.
-            // TODO: make all tethering types behave the same way, and delete the bluetooth
-            // code that calls into NetworkManagementService directly.
-            return configureDhcp(enabled, mIpv4Address, null /* clientAddress */);
-        }
-
-        final IpPrefix ipv4Prefix = asIpPrefix(mIpv4Address);
-
-        final Boolean setIfaceUp;
-        if (mInterfaceType == TetheringManager.TETHERING_WIFI
-                || mInterfaceType == TetheringManager.TETHERING_WIFI_P2P
-                || mInterfaceType == TetheringManager.TETHERING_ETHERNET
-                || mInterfaceType == TetheringManager.TETHERING_WIGIG) {
-            // The WiFi and Ethernet stack has ownership of the interface up/down state.
-            // It is unclear whether the Bluetooth or USB stacks will manage their own
-            // state.
-            setIfaceUp = null;
-        } else {
-            setIfaceUp = enabled;
-        }
-        if (!mInterfaceCtrl.setInterfaceConfiguration(mIpv4Address, setIfaceUp)) {
-            mLog.e("Error configuring interface");
-            if (!enabled) stopDhcp();
-            return false;
-        }
-
-        if (enabled) {
-            mLinkProperties.addLinkAddress(mIpv4Address);
-            mLinkProperties.addRoute(getDirectConnectedRoute(mIpv4Address));
-        } else {
-            mLinkProperties.removeLinkAddress(mIpv4Address);
-            mLinkProperties.removeRoute(getDirectConnectedRoute(mIpv4Address));
-        }
-        return configureDhcp(enabled, mIpv4Address, mStaticIpv4ClientAddr);
-    }
-
-    private LinkAddress requestIpv4Address() {
-        if (mStaticIpv4ServerAddr != null) return mStaticIpv4ServerAddr;
-
-        if (mInterfaceType == TetheringManager.TETHERING_BLUETOOTH) {
-            return new LinkAddress(BLUETOOTH_IFACE_ADDR);
-        }
-
-        return mPrivateAddressCoordinator.requestDownstreamAddress(this);
-    }
-
-    private boolean startIPv6() {
-        mInterfaceParams = mDeps.getInterfaceParams(mIfaceName);
-        if (mInterfaceParams == null) {
-            mLog.e("Failed to find InterfaceParams");
-            stopIPv6();
-            return false;
-        }
-
-        mRaDaemon = mDeps.getRouterAdvertisementDaemon(mInterfaceParams);
-        if (!mRaDaemon.start()) {
-            stopIPv6();
-            return false;
-        }
-
-        // TODO: use ShimUtils instead of explicitly checking the version here.
-        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.R || "S".equals(Build.VERSION.CODENAME)
-                    || "T".equals(Build.VERSION.CODENAME)) {
-            // DAD Proxy starts forwarding packets after IPv6 upstream is present.
-            mDadProxy = mDeps.getDadProxy(getHandler(), mInterfaceParams);
-        }
-
-        return true;
-    }
-
-    private void stopIPv6() {
-        mInterfaceParams = null;
-        setRaParams(null);
-
-        if (mRaDaemon != null) {
-            mRaDaemon.stop();
-            mRaDaemon = null;
-        }
-
-        if (mDadProxy != null) {
-            mDadProxy.stop();
-            mDadProxy = null;
-        }
-    }
-
-    // IPv6TetheringCoordinator sends updates with carefully curated IPv6-only
-    // LinkProperties. These have extraneous data filtered out and only the
-    // necessary prefixes included (per its prefix distribution policy).
-    //
-    // TODO: Evaluate using a data structure than is more directly suited to
-    // communicating only the relevant information.
-    private void updateUpstreamIPv6LinkProperties(LinkProperties v6only, int ttlAdjustment) {
-        if (mRaDaemon == null) return;
-
-        // Avoid unnecessary work on spurious updates.
-        if (Objects.equals(mLastIPv6LinkProperties, v6only)) {
-            return;
-        }
-
-        RaParams params = null;
-        String upstreamIface = null;
-        InterfaceParams upstreamIfaceParams = null;
-        int upstreamIfIndex = 0;
-
-        if (v6only != null) {
-            upstreamIface = v6only.getInterfaceName();
-            upstreamIfaceParams = mDeps.getInterfaceParams(upstreamIface);
-            if (upstreamIfaceParams != null) {
-                upstreamIfIndex = upstreamIfaceParams.index;
-            }
-            params = new RaParams();
-            params.mtu = v6only.getMtu();
-            params.hasDefaultRoute = v6only.hasIpv6DefaultRoute();
-
-            if (params.hasDefaultRoute) params.hopLimit = getHopLimit(upstreamIface, ttlAdjustment);
-
-            for (LinkAddress linkAddr : v6only.getLinkAddresses()) {
-                if (linkAddr.getPrefixLength() != RFC7421_PREFIX_LENGTH) continue;
-
-                final IpPrefix prefix = new IpPrefix(
-                        linkAddr.getAddress(), linkAddr.getPrefixLength());
-                params.prefixes.add(prefix);
-
-                final Inet6Address dnsServer = getLocalDnsIpFor(prefix);
-                if (dnsServer != null) {
-                    params.dnses.add(dnsServer);
-                }
-            }
-
-            // Add upstream index to name mapping for the tether stats usage in the coordinator.
-            // Although this mapping could be added by both class Tethering and IpServer, adding
-            // mapping from IpServer guarantees that the mapping is added before the adding
-            // forwarding rules. That is because there are different state machines in both
-            // classes. It is hard to guarantee the link property update order between multiple
-            // state machines.
-            mBpfCoordinator.addUpstreamNameToLookupTable(upstreamIfIndex, upstreamIface);
-        }
-
-        // If v6only is null, we pass in null to setRaParams(), which handles
-        // deprecation of any existing RA data.
-
-        setRaParams(params);
-        mLastIPv6LinkProperties = v6only;
-
-        updateIpv6ForwardingRules(mLastIPv6UpstreamIfindex, upstreamIfIndex, null);
-        mLastIPv6UpstreamIfindex = upstreamIfIndex;
-        if (mDadProxy != null) {
-            mDadProxy.setUpstreamIface(upstreamIfaceParams);
-        }
-    }
-
-    private void removeRoutesFromLocalNetwork(@NonNull final List<RouteInfo> toBeRemoved) {
-        final int removalFailures = RouteUtils.removeRoutesFromLocalNetwork(
-                mNetd, toBeRemoved);
-        if (removalFailures > 0) {
-            mLog.e(String.format("Failed to remove %d IPv6 routes from local table.",
-                    removalFailures));
-        }
-
-        for (RouteInfo route : toBeRemoved) mLinkProperties.removeRoute(route);
-    }
-
-    private void addRoutesToLocalNetwork(@NonNull final List<RouteInfo> toBeAdded) {
-        try {
-            // It's safe to call networkAddInterface() even if
-            // the interface is already in the local_network.
-            mNetd.networkAddInterface(INetd.LOCAL_NET_ID, mIfaceName);
-            try {
-                // Add routes from local network. Note that adding routes that
-                // already exist does not cause an error (EEXIST is silently ignored).
-                RouteUtils.addRoutesToLocalNetwork(mNetd, mIfaceName, toBeAdded);
-            } catch (IllegalStateException e) {
-                mLog.e("Failed to add IPv4/v6 routes to local table: " + e);
-                return;
-            }
-        } catch (ServiceSpecificException | RemoteException e) {
-            mLog.e("Failed to add " + mIfaceName + " to local table: ", e);
-            return;
-        }
-
-        for (RouteInfo route : toBeAdded) mLinkProperties.addRoute(route);
-    }
-
-    private void configureLocalIPv6Routes(
-            HashSet<IpPrefix> deprecatedPrefixes, HashSet<IpPrefix> newPrefixes) {
-        // [1] Remove the routes that are deprecated.
-        if (!deprecatedPrefixes.isEmpty()) {
-            removeRoutesFromLocalNetwork(getLocalRoutesFor(mIfaceName, deprecatedPrefixes));
-        }
-
-        // [2] Add only the routes that have not previously been added.
-        if (newPrefixes != null && !newPrefixes.isEmpty()) {
-            HashSet<IpPrefix> addedPrefixes = (HashSet) newPrefixes.clone();
-            if (mLastRaParams != null) {
-                addedPrefixes.removeAll(mLastRaParams.prefixes);
-            }
-
-            if (!addedPrefixes.isEmpty()) {
-                addRoutesToLocalNetwork(getLocalRoutesFor(mIfaceName, addedPrefixes));
-            }
-        }
-    }
-
-    private void configureLocalIPv6Dns(
-            HashSet<Inet6Address> deprecatedDnses, HashSet<Inet6Address> newDnses) {
-        // TODO: Is this really necessary? Can we not fail earlier if INetd cannot be located?
-        if (mNetd == null) {
-            if (newDnses != null) newDnses.clear();
-            mLog.e("No netd service instance available; not setting local IPv6 addresses");
-            return;
-        }
-
-        // [1] Remove deprecated local DNS IP addresses.
-        if (!deprecatedDnses.isEmpty()) {
-            for (Inet6Address dns : deprecatedDnses) {
-                if (!mInterfaceCtrl.removeAddress(dns, RFC7421_PREFIX_LENGTH)) {
-                    mLog.e("Failed to remove local dns IP " + dns);
-                }
-
-                mLinkProperties.removeLinkAddress(new LinkAddress(dns, RFC7421_PREFIX_LENGTH));
-            }
-        }
-
-        // [2] Add only the local DNS IP addresses that have not previously been added.
-        if (newDnses != null && !newDnses.isEmpty()) {
-            final HashSet<Inet6Address> addedDnses = (HashSet) newDnses.clone();
-            if (mLastRaParams != null) {
-                addedDnses.removeAll(mLastRaParams.dnses);
-            }
-
-            for (Inet6Address dns : addedDnses) {
-                if (!mInterfaceCtrl.addAddress(dns, RFC7421_PREFIX_LENGTH)) {
-                    mLog.e("Failed to add local dns IP " + dns);
-                    newDnses.remove(dns);
-                }
-
-                mLinkProperties.addLinkAddress(new LinkAddress(dns, RFC7421_PREFIX_LENGTH));
-            }
-        }
-
-        try {
-            mNetd.tetherApplyDnsInterfaces();
-        } catch (ServiceSpecificException | RemoteException e) {
-            mLog.e("Failed to update local DNS caching server");
-            if (newDnses != null) newDnses.clear();
-        }
-    }
-
-    private void addIpv6ForwardingRule(Ipv6ForwardingRule rule) {
-        // Theoretically, we don't need this check because IP neighbor monitor doesn't start if BPF
-        // offload is disabled. Add this check just in case.
-        // TODO: Perhaps remove this protection check.
-        if (!mUsingBpfOffload) return;
-
-        mBpfCoordinator.tetherOffloadRuleAdd(this, rule);
-    }
-
-    private void removeIpv6ForwardingRule(Ipv6ForwardingRule rule) {
-        // TODO: Perhaps remove this protection check.
-        // See the related comment in #addIpv6ForwardingRule.
-        if (!mUsingBpfOffload) return;
-
-        mBpfCoordinator.tetherOffloadRuleRemove(this, rule);
-    }
-
-    private void clearIpv6ForwardingRules() {
-        if (!mUsingBpfOffload) return;
-
-        mBpfCoordinator.tetherOffloadRuleClear(this);
-    }
-
-    private void updateIpv6ForwardingRule(int newIfindex) {
-        // TODO: Perhaps remove this protection check.
-        // See the related comment in #addIpv6ForwardingRule.
-        if (!mUsingBpfOffload) return;
-
-        mBpfCoordinator.tetherOffloadRuleUpdate(this, newIfindex);
-    }
-
-    // Handles all updates to IPv6 forwarding rules. These can currently change only if the upstream
-    // changes or if a neighbor event is received.
-    private void updateIpv6ForwardingRules(int prevUpstreamIfindex, int upstreamIfindex,
-            NeighborEvent e) {
-        // If we no longer have an upstream, clear forwarding rules and do nothing else.
-        if (upstreamIfindex == 0) {
-            clearIpv6ForwardingRules();
-            return;
-        }
-
-        // If the upstream interface has changed, remove all rules and re-add them with the new
-        // upstream interface.
-        if (prevUpstreamIfindex != upstreamIfindex) {
-            updateIpv6ForwardingRule(upstreamIfindex);
-        }
-
-        // If we're here to process a NeighborEvent, do so now.
-        // mInterfaceParams must be non-null or the event would not have arrived.
-        if (e == null) return;
-        if (!(e.ip instanceof Inet6Address) || e.ip.isMulticastAddress()
-                || e.ip.isLoopbackAddress() || e.ip.isLinkLocalAddress()) {
-            return;
-        }
-
-        // When deleting rules, we still need to pass a non-null MAC, even though it's ignored.
-        // Do this here instead of in the Ipv6ForwardingRule constructor to ensure that we never
-        // add rules with a null MAC, only delete them.
-        MacAddress dstMac = e.isValid() ? e.macAddr : NULL_MAC_ADDRESS;
-        Ipv6ForwardingRule rule = new Ipv6ForwardingRule(upstreamIfindex,
-                mInterfaceParams.index, (Inet6Address) e.ip, mInterfaceParams.macAddr, dstMac);
-        if (e.isValid()) {
-            addIpv6ForwardingRule(rule);
-        } else {
-            removeIpv6ForwardingRule(rule);
-        }
-    }
-
-    private void handleNeighborEvent(NeighborEvent e) {
-        if (mInterfaceParams != null
-                && mInterfaceParams.index == e.ifindex
-                && mInterfaceParams.hasMacAddress) {
-            updateIpv6ForwardingRules(mLastIPv6UpstreamIfindex, mLastIPv6UpstreamIfindex, e);
-        }
-    }
-
-    private void handleNewPrefixRequest(@NonNull final IpPrefix currentPrefix) {
-        if (!currentPrefix.contains(mIpv4Address.getAddress())
-                || currentPrefix.getPrefixLength() != mIpv4Address.getPrefixLength()) {
-            Log.e(TAG, "Invalid prefix: " + currentPrefix);
-            return;
-        }
-
-        final LinkAddress deprecatedLinkAddress = mIpv4Address;
-        mIpv4Address = requestIpv4Address();
-        if (mIpv4Address == null) {
-            mLog.e("Fail to request a new downstream prefix");
-            return;
-        }
-        final Inet4Address srvAddr = (Inet4Address) mIpv4Address.getAddress();
-
-        // Add new IPv4 address on the interface.
-        if (!mInterfaceCtrl.addAddress(srvAddr, currentPrefix.getPrefixLength())) {
-            mLog.e("Failed to add new IP " + srvAddr);
-            return;
-        }
-
-        // Remove deprecated routes from local network.
-        removeRoutesFromLocalNetwork(
-                Collections.singletonList(getDirectConnectedRoute(deprecatedLinkAddress)));
-        mLinkProperties.removeLinkAddress(deprecatedLinkAddress);
-
-        // Add new routes to local network.
-        addRoutesToLocalNetwork(
-                Collections.singletonList(getDirectConnectedRoute(mIpv4Address)));
-        mLinkProperties.addLinkAddress(mIpv4Address);
-
-        // Update local DNS caching server with new IPv4 address, otherwise, dnsmasq doesn't
-        // listen on the interface configured with new IPv4 address, that results DNS validation
-        // failure of downstream client even if appropriate routes have been configured.
-        try {
-            mNetd.tetherApplyDnsInterfaces();
-        } catch (ServiceSpecificException | RemoteException e) {
-            mLog.e("Failed to update local DNS caching server");
-            return;
-        }
-        sendLinkProperties();
-
-        // Notify DHCP server that new prefix/route has been applied on IpServer.
-        final Inet4Address clientAddr = mStaticIpv4ClientAddr == null ? null :
-                (Inet4Address) mStaticIpv4ClientAddr.getAddress();
-        final DhcpServingParamsParcel params = makeServingParams(srvAddr /* defaultRouter */,
-                srvAddr /* dnsServer */, mIpv4Address /* serverLinkAddress */, clientAddr);
-        try {
-            mDhcpServer.updateParams(params, new OnHandlerStatusCallback() {
-                    @Override
-                    public void callback(int statusCode) {
-                        if (statusCode != STATUS_SUCCESS) {
-                            mLog.e("Error updating DHCP serving params: " + statusCode);
-                        }
-                    }
-            });
-        } catch (RemoteException e) {
-            mLog.e("Error updating DHCP serving params", e);
-        }
-    }
-
-    private byte getHopLimit(String upstreamIface, int adjustTTL) {
-        try {
-            int upstreamHopLimit = Integer.parseUnsignedInt(
-                    mNetd.getProcSysNet(INetd.IPV6, INetd.CONF, upstreamIface, "hop_limit"));
-            upstreamHopLimit = upstreamHopLimit + adjustTTL;
-            // Cap the hop limit to 255.
-            return (byte) Integer.min(upstreamHopLimit, 255);
-        } catch (Exception e) {
-            mLog.e("Failed to find upstream interface hop limit", e);
-        }
-        return RaParams.DEFAULT_HOPLIMIT;
-    }
-
-    private void setRaParams(RaParams newParams) {
-        if (mRaDaemon != null) {
-            final RaParams deprecatedParams =
-                    RaParams.getDeprecatedRaParams(mLastRaParams, newParams);
-
-            configureLocalIPv6Routes(deprecatedParams.prefixes,
-                    (newParams != null) ? newParams.prefixes : null);
-
-            configureLocalIPv6Dns(deprecatedParams.dnses,
-                    (newParams != null) ? newParams.dnses : null);
-
-            mRaDaemon.buildNewRa(deprecatedParams, newParams);
-        }
-
-        mLastRaParams = newParams;
-    }
-
-    private void logMessage(State state, int what) {
-        mLog.log(state.getName() + " got " + sMagicDecoderRing.get(what, Integer.toString(what)));
-    }
-
-    private void sendInterfaceState(int newInterfaceState) {
-        mServingMode = newInterfaceState;
-        mCallback.updateInterfaceState(this, newInterfaceState, mLastError);
-        sendLinkProperties();
-    }
-
-    private void sendLinkProperties() {
-        mCallback.updateLinkProperties(this, new LinkProperties(mLinkProperties));
-    }
-
-    private void resetLinkProperties() {
-        mLinkProperties.clear();
-        mLinkProperties.setInterfaceName(mIfaceName);
-    }
-
-    private void maybeConfigureStaticIp(final TetheringRequestParcel request) {
-        // Ignore static address configuration if they are invalid or null. In theory, static
-        // addresses should not be invalid here because TetheringManager do not allow caller to
-        // specify invalid static address configuration.
-        if (request == null || request.localIPv4Address == null
-                || request.staticClientAddress == null || !checkStaticAddressConfiguration(
-                request.localIPv4Address, request.staticClientAddress)) {
-            return;
-        }
-
-        mStaticIpv4ServerAddr = request.localIPv4Address;
-        mStaticIpv4ClientAddr = request.staticClientAddress;
-    }
-
-    class InitialState extends State {
-        @Override
-        public void enter() {
-            sendInterfaceState(STATE_AVAILABLE);
-        }
-
-        @Override
-        public boolean processMessage(Message message) {
-            logMessage(this, message.what);
-            switch (message.what) {
-                case CMD_TETHER_REQUESTED:
-                    mLastError = TetheringManager.TETHER_ERROR_NO_ERROR;
-                    switch (message.arg1) {
-                        case STATE_LOCAL_ONLY:
-                            maybeConfigureStaticIp((TetheringRequestParcel) message.obj);
-                            transitionTo(mLocalHotspotState);
-                            break;
-                        case STATE_TETHERED:
-                            maybeConfigureStaticIp((TetheringRequestParcel) message.obj);
-                            transitionTo(mTetheredState);
-                            break;
-                        default:
-                            mLog.e("Invalid tethering interface serving state specified.");
-                    }
-                    break;
-                case CMD_INTERFACE_DOWN:
-                    transitionTo(mUnavailableState);
-                    break;
-                case CMD_IPV6_TETHER_UPDATE:
-                    updateUpstreamIPv6LinkProperties((LinkProperties) message.obj, message.arg1);
-                    break;
-                default:
-                    return NOT_HANDLED;
-            }
-            return HANDLED;
-        }
-    }
-
-    class BaseServingState extends State {
-        @Override
-        public void enter() {
-            if (!startIPv4()) {
-                mLastError = TetheringManager.TETHER_ERROR_IFACE_CFG_ERROR;
-                return;
-            }
-
-            try {
-                NetdUtils.tetherInterface(mNetd, mIfaceName, asIpPrefix(mIpv4Address));
-            } catch (RemoteException | ServiceSpecificException | IllegalStateException e) {
-                mLog.e("Error Tethering", e);
-                mLastError = TetheringManager.TETHER_ERROR_TETHER_IFACE_ERROR;
-                return;
-            }
-
-            if (!startIPv6()) {
-                mLog.e("Failed to startIPv6");
-                // TODO: Make this a fatal error once Bluetooth IPv6 is sorted.
-                return;
-            }
-        }
-
-        @Override
-        public void exit() {
-            // Note that at this point, we're leaving the tethered state.  We can fail any
-            // of these operations, but it doesn't really change that we have to try them
-            // all in sequence.
-            stopIPv6();
-
-            try {
-                NetdUtils.untetherInterface(mNetd, mIfaceName);
-            } catch (RemoteException | ServiceSpecificException e) {
-                mLastError = TetheringManager.TETHER_ERROR_UNTETHER_IFACE_ERROR;
-                mLog.e("Failed to untether interface: " + e);
-            }
-
-            stopIPv4();
-
-            resetLinkProperties();
-        }
-
-        @Override
-        public boolean processMessage(Message message) {
-            logMessage(this, message.what);
-            switch (message.what) {
-                case CMD_TETHER_UNREQUESTED:
-                    transitionTo(mInitialState);
-                    if (DBG) Log.d(TAG, "Untethered (unrequested)" + mIfaceName);
-                    break;
-                case CMD_INTERFACE_DOWN:
-                    transitionTo(mUnavailableState);
-                    if (DBG) Log.d(TAG, "Untethered (ifdown)" + mIfaceName);
-                    break;
-                case CMD_IPV6_TETHER_UPDATE:
-                    updateUpstreamIPv6LinkProperties((LinkProperties) message.obj, message.arg1);
-                    sendLinkProperties();
-                    break;
-                case CMD_IP_FORWARDING_ENABLE_ERROR:
-                case CMD_IP_FORWARDING_DISABLE_ERROR:
-                case CMD_START_TETHERING_ERROR:
-                case CMD_STOP_TETHERING_ERROR:
-                case CMD_SET_DNS_FORWARDERS_ERROR:
-                    mLastError = TetheringManager.TETHER_ERROR_INTERNAL_ERROR;
-                    transitionTo(mInitialState);
-                    break;
-                case CMD_NEW_PREFIX_REQUEST:
-                    handleNewPrefixRequest((IpPrefix) message.obj);
-                    break;
-                case CMD_NOTIFY_PREFIX_CONFLICT:
-                    mLog.i("restart tethering: " + mInterfaceType);
-                    mCallback.requestEnableTethering(mInterfaceType, false /* enabled */);
-                    transitionTo(mWaitingForRestartState);
-                    break;
-                default:
-                    return false;
-            }
-            return true;
-        }
-    }
-
-    // Handling errors in BaseServingState.enter() by transitioning is
-    // problematic because transitioning during a multi-state jump yields
-    // a Log.wtf(). Ultimately, there should be only one ServingState,
-    // and forwarding and NAT rules should be handled by a coordinating
-    // functional element outside of IpServer.
-    class LocalHotspotState extends BaseServingState {
-        @Override
-        public void enter() {
-            super.enter();
-            if (mLastError != TetheringManager.TETHER_ERROR_NO_ERROR) {
-                transitionTo(mInitialState);
-            }
-
-            if (DBG) Log.d(TAG, "Local hotspot " + mIfaceName);
-            sendInterfaceState(STATE_LOCAL_ONLY);
-        }
-
-        @Override
-        public boolean processMessage(Message message) {
-            if (super.processMessage(message)) return true;
-
-            logMessage(this, message.what);
-            switch (message.what) {
-                case CMD_TETHER_REQUESTED:
-                    mLog.e("CMD_TETHER_REQUESTED while in local-only hotspot mode.");
-                    break;
-                case CMD_TETHER_CONNECTION_CHANGED:
-                    // Ignored in local hotspot state.
-                    break;
-                default:
-                    return false;
-            }
-            return true;
-        }
-    }
-
-    // Handling errors in BaseServingState.enter() by transitioning is
-    // problematic because transitioning during a multi-state jump yields
-    // a Log.wtf(). Ultimately, there should be only one ServingState,
-    // and forwarding and NAT rules should be handled by a coordinating
-    // functional element outside of IpServer.
-    class TetheredState extends BaseServingState {
-        @Override
-        public void enter() {
-            super.enter();
-            if (mLastError != TetheringManager.TETHER_ERROR_NO_ERROR) {
-                transitionTo(mInitialState);
-            }
-
-            if (DBG) Log.d(TAG, "Tethered " + mIfaceName);
-            sendInterfaceState(STATE_TETHERED);
-        }
-
-        @Override
-        public void exit() {
-            cleanupUpstream();
-            super.exit();
-        }
-
-        private void cleanupUpstream() {
-            if (mUpstreamIfaceSet == null) return;
-
-            for (String ifname : mUpstreamIfaceSet.ifnames) cleanupUpstreamInterface(ifname);
-            mUpstreamIfaceSet = null;
-            clearIpv6ForwardingRules();
-        }
-
-        private void cleanupUpstreamInterface(String upstreamIface) {
-            // Note that we don't care about errors here.
-            // Sometimes interfaces are gone before we get
-            // to remove their rules, which generates errors.
-            // Just do the best we can.
-            try {
-                mNetd.ipfwdRemoveInterfaceForward(mIfaceName, upstreamIface);
-            } catch (RemoteException | ServiceSpecificException e) {
-                mLog.e("Exception in ipfwdRemoveInterfaceForward: " + e.toString());
-            }
-            try {
-                mNetd.tetherRemoveForward(mIfaceName, upstreamIface);
-            } catch (RemoteException | ServiceSpecificException e) {
-                mLog.e("Exception in disableNat: " + e.toString());
-            }
-        }
-
-        @Override
-        public boolean processMessage(Message message) {
-            if (super.processMessage(message)) return true;
-
-            logMessage(this, message.what);
-            switch (message.what) {
-                case CMD_TETHER_REQUESTED:
-                    mLog.e("CMD_TETHER_REQUESTED while already tethering.");
-                    break;
-                case CMD_TETHER_CONNECTION_CHANGED:
-                    final InterfaceSet newUpstreamIfaceSet = (InterfaceSet) message.obj;
-                    if (noChangeInUpstreamIfaceSet(newUpstreamIfaceSet)) {
-                        if (VDBG) Log.d(TAG, "Connection changed noop - dropping");
-                        break;
-                    }
-
-                    if (newUpstreamIfaceSet == null) {
-                        cleanupUpstream();
-                        break;
-                    }
-
-                    for (String removed : upstreamInterfacesRemoved(newUpstreamIfaceSet)) {
-                        cleanupUpstreamInterface(removed);
-                    }
-
-                    final Set<String> added = upstreamInterfacesAdd(newUpstreamIfaceSet);
-                    // This makes the call to cleanupUpstream() in the error
-                    // path for any interface neatly cleanup all the interfaces.
-                    mUpstreamIfaceSet = newUpstreamIfaceSet;
-
-                    for (String ifname : added) {
-                        try {
-                            mNetd.tetherAddForward(mIfaceName, ifname);
-                            mNetd.ipfwdAddInterfaceForward(mIfaceName, ifname);
-                        } catch (RemoteException | ServiceSpecificException e) {
-                            mLog.e("Exception enabling NAT: " + e.toString());
-                            cleanupUpstream();
-                            mLastError = TetheringManager.TETHER_ERROR_ENABLE_FORWARDING_ERROR;
-                            transitionTo(mInitialState);
-                            return true;
-                        }
-                    }
-                    break;
-                case CMD_NEIGHBOR_EVENT:
-                    handleNeighborEvent((NeighborEvent) message.obj);
-                    break;
-                default:
-                    return false;
-            }
-            return true;
-        }
-
-        private boolean noChangeInUpstreamIfaceSet(InterfaceSet newIfaces) {
-            if (mUpstreamIfaceSet == null && newIfaces == null) return true;
-            if (mUpstreamIfaceSet != null && newIfaces != null) {
-                return mUpstreamIfaceSet.equals(newIfaces);
-            }
-            return false;
-        }
-
-        private Set<String> upstreamInterfacesRemoved(InterfaceSet newIfaces) {
-            if (mUpstreamIfaceSet == null) return new HashSet<>();
-
-            final HashSet<String> removed = new HashSet<>(mUpstreamIfaceSet.ifnames);
-            removed.removeAll(newIfaces.ifnames);
-            return removed;
-        }
-
-        private Set<String> upstreamInterfacesAdd(InterfaceSet newIfaces) {
-            final HashSet<String> added = new HashSet<>(newIfaces.ifnames);
-            if (mUpstreamIfaceSet != null) added.removeAll(mUpstreamIfaceSet.ifnames);
-            return added;
-        }
-    }
-
-    /**
-     * This state is terminal for the per interface state machine.  At this
-     * point, the tethering main state machine should have removed this interface
-     * specific state machine from its list of possible recipients of
-     * tethering requests.  The state machine itself will hang around until
-     * the garbage collector finds it.
-     */
-    class UnavailableState extends State {
-        @Override
-        public void enter() {
-            mIpNeighborMonitor.stop();
-            mLastError = TetheringManager.TETHER_ERROR_NO_ERROR;
-            sendInterfaceState(STATE_UNAVAILABLE);
-        }
-    }
-
-    class WaitingForRestartState extends State {
-        @Override
-        public boolean processMessage(Message message) {
-            logMessage(this, message.what);
-            switch (message.what) {
-                case CMD_TETHER_UNREQUESTED:
-                    transitionTo(mInitialState);
-                    mLog.i("Untethered (unrequested) and restarting " + mIfaceName);
-                    mCallback.requestEnableTethering(mInterfaceType, true /* enabled */);
-                    break;
-                case CMD_INTERFACE_DOWN:
-                    transitionTo(mUnavailableState);
-                    mLog.i("Untethered (interface down) and restarting" + mIfaceName);
-                    mCallback.requestEnableTethering(mInterfaceType, true /* enabled */);
-                    break;
-                default:
-                    return false;
-            }
-            return true;
-        }
-    }
-
-    // Accumulate routes representing "prefixes to be assigned to the local
-    // interface", for subsequent modification of local_network routing.
-    private static ArrayList<RouteInfo> getLocalRoutesFor(
-            String ifname, HashSet<IpPrefix> prefixes) {
-        final ArrayList<RouteInfo> localRoutes = new ArrayList<RouteInfo>();
-        for (IpPrefix ipp : prefixes) {
-            localRoutes.add(new RouteInfo(ipp, null, ifname, RTN_UNICAST));
-        }
-        return localRoutes;
-    }
-
-    // Given a prefix like 2001:db8::/64 return an address like 2001:db8::1.
-    private static Inet6Address getLocalDnsIpFor(IpPrefix localPrefix) {
-        final byte[] dnsBytes = localPrefix.getRawAddress();
-        dnsBytes[dnsBytes.length - 1] = getRandomSanitizedByte(DOUG_ADAMS, asByte(0), asByte(1));
-        try {
-            return Inet6Address.getByAddress(null, dnsBytes, 0);
-        } catch (UnknownHostException e) {
-            Log.wtf(TAG, "Failed to construct Inet6Address from: " + localPrefix);
-            return null;
-        }
-    }
-
-    private static byte getRandomSanitizedByte(byte dflt, byte... excluded) {
-        final byte random = (byte) (new Random()).nextInt();
-        for (int value : excluded) {
-            if (random == value) return dflt;
-        }
-        return random;
-    }
-}
diff --git a/packages/Tethering/src/android/net/ip/NeighborPacketForwarder.java b/packages/Tethering/src/android/net/ip/NeighborPacketForwarder.java
deleted file mode 100644
index 73fc833..0000000
--- a/packages/Tethering/src/android/net/ip/NeighborPacketForwarder.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net.ip;
-
-import static android.system.OsConstants.AF_INET6;
-import static android.system.OsConstants.AF_PACKET;
-import static android.system.OsConstants.ETH_P_IPV6;
-import static android.system.OsConstants.IPPROTO_RAW;
-import static android.system.OsConstants.SOCK_DGRAM;
-import static android.system.OsConstants.SOCK_NONBLOCK;
-import static android.system.OsConstants.SOCK_RAW;
-
-import android.net.util.InterfaceParams;
-import android.net.util.PacketReader;
-import android.net.util.SocketUtils;
-import android.net.util.TetheringUtils;
-import android.os.Handler;
-import android.system.ErrnoException;
-import android.system.Os;
-import android.util.Log;
-
-import java.io.FileDescriptor;
-import java.io.IOException;
-import java.net.Inet6Address;
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-import java.net.SocketException;
-import java.net.UnknownHostException;
-import java.util.Arrays;
-
-/**
- * Basic IPv6 Neighbor Advertisement Forwarder.
- *
- * Forward NA packets from upstream iface to tethered iface
- * and NS packets from tethered iface to upstream iface.
- *
- * @hide
- */
-public class NeighborPacketForwarder extends PacketReader {
-    private final String mTag;
-
-    private FileDescriptor mFd;
-
-    // TODO: get these from NetworkStackConstants.
-    private static final int IPV6_ADDR_LEN = 16;
-    private static final int IPV6_DST_ADDR_OFFSET = 24;
-    private static final int IPV6_HEADER_LEN = 40;
-    private static final int ETH_HEADER_LEN = 14;
-
-    private InterfaceParams mListenIfaceParams, mSendIfaceParams;
-
-    private final int mType;
-    public static final int ICMPV6_NEIGHBOR_ADVERTISEMENT  = 136;
-    public static final int ICMPV6_NEIGHBOR_SOLICITATION = 135;
-
-    public NeighborPacketForwarder(Handler h, InterfaceParams tetheredInterface, int type) {
-        super(h);
-        mTag = NeighborPacketForwarder.class.getSimpleName() + "-"
-                + tetheredInterface.name + "-" + type;
-        mType = type;
-
-        if (mType == ICMPV6_NEIGHBOR_ADVERTISEMENT) {
-            mSendIfaceParams = tetheredInterface;
-        } else {
-            mListenIfaceParams = tetheredInterface;
-        }
-    }
-
-    /** Set new upstream iface and start/stop based on new params. */
-    public void setUpstreamIface(InterfaceParams upstreamParams) {
-        final InterfaceParams oldUpstreamParams;
-
-        if (mType == ICMPV6_NEIGHBOR_ADVERTISEMENT) {
-            oldUpstreamParams = mListenIfaceParams;
-            mListenIfaceParams = upstreamParams;
-        } else {
-            oldUpstreamParams = mSendIfaceParams;
-            mSendIfaceParams = upstreamParams;
-        }
-
-        if (oldUpstreamParams == null && upstreamParams != null) {
-            start();
-        } else if (oldUpstreamParams != null && upstreamParams == null) {
-            stop();
-        } else if (oldUpstreamParams != null && upstreamParams != null
-                   && oldUpstreamParams.index != upstreamParams.index) {
-            stop();
-            start();
-        }
-    }
-
-    // TODO: move NetworkStackUtils.closeSocketQuietly to
-    // frameworks/libs/net/common/device/com/android/net/module/util/[someclass].
-    private void closeSocketQuietly(FileDescriptor fd) {
-        try {
-            SocketUtils.closeSocket(fd);
-        } catch (IOException ignored) {
-        }
-    }
-
-    @Override
-    protected FileDescriptor createFd() {
-        try {
-            // ICMPv6 packets from modem do not have eth header, so RAW socket cannot be used.
-            // To keep uniformity in both directions PACKET socket can be used.
-            mFd = Os.socket(AF_PACKET, SOCK_DGRAM | SOCK_NONBLOCK, 0);
-
-            // TODO: convert setup*Socket to setupICMPv6BpfFilter with filter type?
-            if (mType == ICMPV6_NEIGHBOR_ADVERTISEMENT) {
-                TetheringUtils.setupNaSocket(mFd);
-            } else if (mType == ICMPV6_NEIGHBOR_SOLICITATION) {
-                TetheringUtils.setupNsSocket(mFd);
-            }
-
-            SocketAddress bindAddress = SocketUtils.makePacketSocketAddress(
-                                                        ETH_P_IPV6, mListenIfaceParams.index);
-            Os.bind(mFd, bindAddress);
-        } catch (ErrnoException | SocketException e) {
-            Log.wtf(mTag, "Failed to create  socket", e);
-            closeSocketQuietly(mFd);
-            return null;
-        }
-
-        return mFd;
-    }
-
-    private Inet6Address getIpv6DestinationAddress(byte[] recvbuf) {
-        Inet6Address dstAddr;
-        try {
-            dstAddr = (Inet6Address) Inet6Address.getByAddress(Arrays.copyOfRange(recvbuf,
-                    IPV6_DST_ADDR_OFFSET, IPV6_DST_ADDR_OFFSET + IPV6_ADDR_LEN));
-        } catch (UnknownHostException | ClassCastException impossible) {
-            throw new AssertionError("16-byte array not valid IPv6 address?");
-        }
-        return dstAddr;
-    }
-
-    @Override
-    protected void handlePacket(byte[] recvbuf, int length) {
-        if (mSendIfaceParams == null) {
-            return;
-        }
-
-        // The BPF filter should already have checked the length of the packet, but...
-        if (length < IPV6_HEADER_LEN) {
-            return;
-        }
-        Inet6Address destv6 = getIpv6DestinationAddress(recvbuf);
-        if (!destv6.isMulticastAddress()) {
-            return;
-        }
-        InetSocketAddress dest = new InetSocketAddress(destv6, 0);
-
-        FileDescriptor fd = null;
-        try {
-            fd = Os.socket(AF_INET6, SOCK_RAW | SOCK_NONBLOCK, IPPROTO_RAW);
-            SocketUtils.bindSocketToInterface(fd, mSendIfaceParams.name);
-
-            int ret = Os.sendto(fd, recvbuf, 0, length, 0, dest);
-        } catch (ErrnoException | SocketException e) {
-            Log.e(mTag, "handlePacket error: " + e);
-        } finally {
-            closeSocketQuietly(fd);
-        }
-    }
-}
diff --git a/packages/Tethering/src/android/net/ip/RouterAdvertisementDaemon.java b/packages/Tethering/src/android/net/ip/RouterAdvertisementDaemon.java
deleted file mode 100644
index 7c0b7cc7..0000000
--- a/packages/Tethering/src/android/net/ip/RouterAdvertisementDaemon.java
+++ /dev/null
@@ -1,744 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net.ip;
-
-import static android.net.util.NetworkConstants.IPV6_MIN_MTU;
-import static android.net.util.NetworkConstants.RFC7421_PREFIX_LENGTH;
-import static android.net.util.TetheringUtils.getAllNodesForScopeId;
-import static android.system.OsConstants.AF_INET6;
-import static android.system.OsConstants.IPPROTO_ICMPV6;
-import static android.system.OsConstants.SOCK_RAW;
-import static android.system.OsConstants.SOL_SOCKET;
-import static android.system.OsConstants.SO_SNDTIMEO;
-
-import android.net.IpPrefix;
-import android.net.LinkAddress;
-import android.net.TrafficStats;
-import android.net.util.InterfaceParams;
-import android.net.util.SocketUtils;
-import android.net.util.TetheringUtils;
-import android.system.ErrnoException;
-import android.system.Os;
-import android.system.StructTimeval;
-import android.util.Log;
-
-import com.android.internal.annotations.GuardedBy;
-import com.android.internal.util.TrafficStatsConstants;
-
-import java.io.FileDescriptor;
-import java.io.IOException;
-import java.net.Inet6Address;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.SocketException;
-import java.nio.BufferOverflowException;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Random;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicInteger;
-
-
-/**
- * Basic IPv6 Router Advertisement Daemon.
- *
- * TODO:
- *
- *     - Rewrite using Handler (and friends) so that AlarmManager can deliver
- *       "kick" messages when it's time to send a multicast RA.
- *
- * @hide
- */
-public class RouterAdvertisementDaemon {
-    private static final String TAG = RouterAdvertisementDaemon.class.getSimpleName();
-    private static final byte ICMPV6_ND_ROUTER_SOLICIT = asByte(133);
-    private static final byte ICMPV6_ND_ROUTER_ADVERT  = asByte(134);
-    private static final int MIN_RA_HEADER_SIZE = 16;
-
-    // Summary of various timers and lifetimes.
-    private static final int MIN_RTR_ADV_INTERVAL_SEC = 300;
-    private static final int MAX_RTR_ADV_INTERVAL_SEC = 600;
-    // In general, router, prefix, and DNS lifetimes are all advised to be
-    // greater than or equal to 3 * MAX_RTR_ADV_INTERVAL.  Here, we double
-    // that to allow for multicast packet loss.
-    //
-    // This MAX_RTR_ADV_INTERVAL_SEC and DEFAULT_LIFETIME are also consistent
-    // with the https://tools.ietf.org/html/rfc7772#section-4 discussion of
-    // "approximately 7 RAs per hour".
-    private static final int DEFAULT_LIFETIME = 6 * MAX_RTR_ADV_INTERVAL_SEC;
-    // From https://tools.ietf.org/html/rfc4861#section-10 .
-    private static final int MIN_DELAY_BETWEEN_RAS_SEC = 3;
-    // Both initial and final RAs, but also for changes in RA contents.
-    // From https://tools.ietf.org/html/rfc4861#section-10 .
-    private static final int  MAX_URGENT_RTR_ADVERTISEMENTS = 5;
-
-    private static final int DAY_IN_SECONDS = 86_400;
-
-    private final InterfaceParams mInterface;
-    private final InetSocketAddress mAllNodes;
-
-    // This lock is to protect the RA from being updated while being
-    // transmitted on another thread  (multicast or unicast).
-    //
-    // TODO: This should be handled with a more RCU-like approach.
-    private final Object mLock = new Object();
-    @GuardedBy("mLock")
-    private final byte[] mRA = new byte[IPV6_MIN_MTU];
-    @GuardedBy("mLock")
-    private int mRaLength;
-    @GuardedBy("mLock")
-    private final DeprecatedInfoTracker mDeprecatedInfoTracker;
-    @GuardedBy("mLock")
-    private RaParams mRaParams;
-
-    private volatile FileDescriptor mSocket;
-    private volatile MulticastTransmitter mMulticastTransmitter;
-    private volatile UnicastResponder mUnicastResponder;
-
-    /** Encapsulate the RA parameters for RouterAdvertisementDaemon.*/
-    public static class RaParams {
-        // Tethered traffic will have the hop limit properly decremented.
-        // Consequently, set the hoplimit greater by one than the upstream
-        // unicast hop limit.
-        //
-        // TODO: Dynamically pass down the IPV6_UNICAST_HOPS value from the
-        // upstream interface for more correct behaviour.
-        static final byte DEFAULT_HOPLIMIT = 65;
-
-        public boolean hasDefaultRoute;
-        public byte hopLimit;
-        public int mtu;
-        public HashSet<IpPrefix> prefixes;
-        public HashSet<Inet6Address> dnses;
-
-        public RaParams() {
-            hasDefaultRoute = false;
-            hopLimit = DEFAULT_HOPLIMIT;
-            mtu = IPV6_MIN_MTU;
-            prefixes = new HashSet<IpPrefix>();
-            dnses = new HashSet<Inet6Address>();
-        }
-
-        public RaParams(RaParams other) {
-            hasDefaultRoute = other.hasDefaultRoute;
-            hopLimit = other.hopLimit;
-            mtu = other.mtu;
-            prefixes = (HashSet) other.prefixes.clone();
-            dnses = (HashSet) other.dnses.clone();
-        }
-
-        /**
-         * Returns the subset of RA parameters that become deprecated when
-         * moving from announcing oldRa to announcing newRa.
-         *
-         * Currently only tracks differences in |prefixes| and |dnses|.
-         */
-        public static RaParams getDeprecatedRaParams(RaParams oldRa, RaParams newRa) {
-            RaParams newlyDeprecated = new RaParams();
-
-            if (oldRa != null) {
-                for (IpPrefix ipp : oldRa.prefixes) {
-                    if (newRa == null || !newRa.prefixes.contains(ipp)) {
-                        newlyDeprecated.prefixes.add(ipp);
-                    }
-                }
-
-                for (Inet6Address dns : oldRa.dnses) {
-                    if (newRa == null || !newRa.dnses.contains(dns)) {
-                        newlyDeprecated.dnses.add(dns);
-                    }
-                }
-            }
-
-            return newlyDeprecated;
-        }
-    }
-
-    private static class DeprecatedInfoTracker {
-        private final HashMap<IpPrefix, Integer> mPrefixes = new HashMap<>();
-        private final HashMap<Inet6Address, Integer> mDnses = new HashMap<>();
-
-        Set<IpPrefix> getPrefixes() {
-            return mPrefixes.keySet();
-        }
-
-        void putPrefixes(Set<IpPrefix> prefixes) {
-            for (IpPrefix ipp : prefixes) {
-                mPrefixes.put(ipp, MAX_URGENT_RTR_ADVERTISEMENTS);
-            }
-        }
-
-        void removePrefixes(Set<IpPrefix> prefixes) {
-            for (IpPrefix ipp : prefixes) {
-                mPrefixes.remove(ipp);
-            }
-        }
-
-        Set<Inet6Address> getDnses() {
-            return mDnses.keySet();
-        }
-
-        void putDnses(Set<Inet6Address> dnses) {
-            for (Inet6Address dns : dnses) {
-                mDnses.put(dns, MAX_URGENT_RTR_ADVERTISEMENTS);
-            }
-        }
-
-        void removeDnses(Set<Inet6Address> dnses) {
-            for (Inet6Address dns : dnses) {
-                mDnses.remove(dns);
-            }
-        }
-
-        boolean isEmpty() {
-            return mPrefixes.isEmpty() && mDnses.isEmpty();
-        }
-
-        private boolean decrementCounters() {
-            boolean removed = decrementCounter(mPrefixes);
-            removed |= decrementCounter(mDnses);
-            return removed;
-        }
-
-        private <T> boolean decrementCounter(HashMap<T, Integer> map) {
-            boolean removed = false;
-
-            for (Iterator<Map.Entry<T, Integer>> it = map.entrySet().iterator();
-                    it.hasNext();) {
-                Map.Entry<T, Integer> kv = it.next();
-                if (kv.getValue() == 0) {
-                    it.remove();
-                    removed = true;
-                } else {
-                    kv.setValue(kv.getValue() - 1);
-                }
-            }
-
-            return removed;
-        }
-    }
-
-    public RouterAdvertisementDaemon(InterfaceParams ifParams) {
-        mInterface = ifParams;
-        mAllNodes = new InetSocketAddress(getAllNodesForScopeId(mInterface.index), 0);
-        mDeprecatedInfoTracker = new DeprecatedInfoTracker();
-    }
-
-    /** Build new RA.*/
-    public void buildNewRa(RaParams deprecatedParams, RaParams newParams) {
-        synchronized (mLock) {
-            if (deprecatedParams != null) {
-                mDeprecatedInfoTracker.putPrefixes(deprecatedParams.prefixes);
-                mDeprecatedInfoTracker.putDnses(deprecatedParams.dnses);
-            }
-
-            if (newParams != null) {
-                // Process information that is no longer deprecated.
-                mDeprecatedInfoTracker.removePrefixes(newParams.prefixes);
-                mDeprecatedInfoTracker.removeDnses(newParams.dnses);
-            }
-
-            mRaParams = newParams;
-            assembleRaLocked();
-        }
-
-        maybeNotifyMulticastTransmitter();
-    }
-
-    /** Start router advertisement daemon. */
-    public boolean start() {
-        if (!createSocket()) {
-            return false;
-        }
-
-        mMulticastTransmitter = new MulticastTransmitter();
-        mMulticastTransmitter.start();
-
-        mUnicastResponder = new UnicastResponder();
-        mUnicastResponder.start();
-
-        return true;
-    }
-
-    /** Stop router advertisement daemon. */
-    public void stop() {
-        closeSocket();
-        // Wake up mMulticastTransmitter thread to interrupt a potential 1 day sleep before
-        // the thread's termination.
-        maybeNotifyMulticastTransmitter();
-        mMulticastTransmitter = null;
-        mUnicastResponder = null;
-    }
-
-    @GuardedBy("mLock")
-    private void assembleRaLocked() {
-        final ByteBuffer ra = ByteBuffer.wrap(mRA);
-        ra.order(ByteOrder.BIG_ENDIAN);
-
-        final boolean haveRaParams = (mRaParams != null);
-        boolean shouldSendRA = false;
-
-        try {
-            putHeader(ra, haveRaParams && mRaParams.hasDefaultRoute,
-                    haveRaParams ? mRaParams.hopLimit : RaParams.DEFAULT_HOPLIMIT);
-            putSlla(ra, mInterface.macAddr.toByteArray());
-            mRaLength = ra.position();
-
-            // https://tools.ietf.org/html/rfc5175#section-4 says:
-            //
-            //     "MUST NOT be added to a Router Advertisement message
-            //      if no flags in the option are set."
-            //
-            // putExpandedFlagsOption(ra);
-
-            if (haveRaParams) {
-                putMtu(ra, mRaParams.mtu);
-                mRaLength = ra.position();
-
-                for (IpPrefix ipp : mRaParams.prefixes) {
-                    putPio(ra, ipp, DEFAULT_LIFETIME, DEFAULT_LIFETIME);
-                    mRaLength = ra.position();
-                    shouldSendRA = true;
-                }
-
-                if (mRaParams.dnses.size() > 0) {
-                    putRdnss(ra, mRaParams.dnses, DEFAULT_LIFETIME);
-                    mRaLength = ra.position();
-                    shouldSendRA = true;
-                }
-            }
-
-            for (IpPrefix ipp : mDeprecatedInfoTracker.getPrefixes()) {
-                putPio(ra, ipp, 0, 0);
-                mRaLength = ra.position();
-                shouldSendRA = true;
-            }
-
-            final Set<Inet6Address> deprecatedDnses = mDeprecatedInfoTracker.getDnses();
-            if (!deprecatedDnses.isEmpty()) {
-                putRdnss(ra, deprecatedDnses, 0);
-                mRaLength = ra.position();
-                shouldSendRA = true;
-            }
-        } catch (BufferOverflowException e) {
-            // The packet up to mRaLength  is valid, since it has been updated
-            // progressively as the RA was built. Log an error, and continue
-            // on as best as possible.
-            Log.e(TAG, "Could not construct new RA: " + e);
-        }
-
-        // We have nothing worth announcing; indicate as much to maybeSendRA().
-        if (!shouldSendRA) {
-            mRaLength = 0;
-        }
-    }
-
-    private void maybeNotifyMulticastTransmitter() {
-        final MulticastTransmitter m = mMulticastTransmitter;
-        if (m != null) {
-            m.hup();
-        }
-    }
-
-    private static byte asByte(int value) {
-        return (byte) value;
-    }
-    private static short asShort(int value) {
-        return (short) value;
-    }
-
-    private static void putHeader(ByteBuffer ra, boolean hasDefaultRoute, byte hopLimit) {
-        /**
-            Router Advertisement Message Format
-
-             0                   1                   2                   3
-             0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |     Type      |     Code      |          Checksum             |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            | Cur Hop Limit |M|O|H|Prf|P|R|R|       Router Lifetime         |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |                         Reachable Time                        |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |                          Retrans Timer                        |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |   Options ...
-            +-+-+-+-+-+-+-+-+-+-+-+-
-        */
-        ra.put(ICMPV6_ND_ROUTER_ADVERT)
-                .put(asByte(0))
-                .putShort(asShort(0))
-                .put(hopLimit)
-                // RFC 4191 "high" preference, iff. advertising a default route.
-                .put(hasDefaultRoute ? asByte(0x08) : asByte(0))
-                .putShort(hasDefaultRoute ? asShort(DEFAULT_LIFETIME) : asShort(0))
-                .putInt(0)
-                .putInt(0);
-    }
-
-    private static void putSlla(ByteBuffer ra, byte[] slla) {
-        /**
-            Source/Target Link-layer Address
-
-             0                   1                   2                   3
-             0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |     Type      |    Length     |    Link-Layer Address ...
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        */
-        if (slla == null || slla.length != 6) {
-            // Only IEEE 802.3 6-byte addresses are supported.
-            return;
-        }
-
-        final byte nd_option_slla = 1;
-        final byte slla_num_8octets = 1;
-        ra.put(nd_option_slla)
-            .put(slla_num_8octets)
-            .put(slla);
-    }
-
-    private static void putExpandedFlagsOption(ByteBuffer ra) {
-        /**
-            Router Advertisement Expanded Flags Option
-
-             0                   1                   2                   3
-             0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |     Type      |    Length     |         Bit fields available ..
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            ... for assignment                                              |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-         */
-
-        final byte nd_option__efo = 26;
-        final byte efo_num_8octets = 1;
-
-        ra.put(nd_option__efo)
-            .put(efo_num_8octets)
-            .putShort(asShort(0))
-            .putInt(0);
-    }
-
-    private static void putMtu(ByteBuffer ra, int mtu) {
-        /**
-            MTU
-
-             0                   1                   2                   3
-             0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |     Type      |    Length     |           Reserved            |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |                              MTU                              |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        */
-        final byte nd_option_mtu = 5;
-        final byte mtu_num_8octs = 1;
-        ra.put(nd_option_mtu)
-            .put(mtu_num_8octs)
-            .putShort(asShort(0))
-            .putInt((mtu < IPV6_MIN_MTU) ? IPV6_MIN_MTU : mtu);
-    }
-
-    private static void putPio(ByteBuffer ra, IpPrefix ipp,
-                               int validTime, int preferredTime) {
-        /**
-            Prefix Information
-
-             0                   1                   2                   3
-             0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |     Type      |    Length     | Prefix Length |L|A| Reserved1 |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |                         Valid Lifetime                        |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |                       Preferred Lifetime                      |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |                           Reserved2                           |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |                                                               |
-            +                                                               +
-            |                                                               |
-            +                            Prefix                             +
-            |                                                               |
-            +                                                               +
-            |                                                               |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        */
-        final int prefixLength = ipp.getPrefixLength();
-        if (prefixLength != 64) {
-            return;
-        }
-        final byte nd_option_pio = 3;
-        final byte pio_num_8octets = 4;
-
-        if (validTime < 0) validTime = 0;
-        if (preferredTime < 0) preferredTime = 0;
-        if (preferredTime > validTime) preferredTime = validTime;
-
-        final byte[] addr = ipp.getAddress().getAddress();
-        ra.put(nd_option_pio)
-            .put(pio_num_8octets)
-            .put(asByte(prefixLength))
-            .put(asByte(0xc0)) /* L & A set */
-            .putInt(validTime)
-            .putInt(preferredTime)
-            .putInt(0)
-            .put(addr);
-    }
-
-    private static void putRio(ByteBuffer ra, IpPrefix ipp) {
-        /**
-            Route Information Option
-
-             0                   1                   2                   3
-             0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |     Type      |    Length     | Prefix Length |Resvd|Prf|Resvd|
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |                        Route Lifetime                         |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |                   Prefix (Variable Length)                    |
-            .                                                               .
-            .                                                               .
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-         */
-        final int prefixLength = ipp.getPrefixLength();
-        if (prefixLength > 64) {
-            return;
-        }
-        final byte nd_option_rio = 24;
-        final byte rio_num_8octets = asByte(
-                (prefixLength == 0) ? 1 : (prefixLength <= 8) ? 2 : 3);
-
-        final byte[] addr = ipp.getAddress().getAddress();
-        ra.put(nd_option_rio)
-            .put(rio_num_8octets)
-            .put(asByte(prefixLength))
-            .put(asByte(0x18))
-            .putInt(DEFAULT_LIFETIME);
-
-        // Rely upon an IpPrefix's address being properly zeroed.
-        if (prefixLength > 0) {
-            ra.put(addr, 0, (prefixLength <= 64) ? 8 : 16);
-        }
-    }
-
-    private static void putRdnss(ByteBuffer ra, Set<Inet6Address> dnses, int lifetime) {
-        /**
-            Recursive DNS Server (RDNSS) Option
-
-             0                   1                   2                   3
-             0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |     Type      |     Length    |           Reserved            |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |                           Lifetime                            |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-            |                                                               |
-            :            Addresses of IPv6 Recursive DNS Servers            :
-            |                                                               |
-            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-         */
-
-        final HashSet<Inet6Address> filteredDnses = new HashSet<>();
-        for (Inet6Address dns : dnses) {
-            if ((new LinkAddress(dns, RFC7421_PREFIX_LENGTH)).isGlobalPreferred()) {
-                filteredDnses.add(dns);
-            }
-        }
-        if (filteredDnses.isEmpty()) return;
-
-        final byte nd_option_rdnss = 25;
-        final byte rdnss_num_8octets = asByte(dnses.size() * 2 + 1);
-        ra.put(nd_option_rdnss)
-            .put(rdnss_num_8octets)
-            .putShort(asShort(0))
-            .putInt(lifetime);
-
-        for (Inet6Address dns : filteredDnses) {
-            // NOTE: If the full of list DNS servers doesn't fit in the packet,
-            // this code will cause a buffer overflow and the RA won't include
-            // this instance of the option at all.
-            //
-            // TODO: Consider looking at ra.remaining() to determine how many
-            // DNS servers will fit, and adding only those.
-            ra.put(dns.getAddress());
-        }
-    }
-
-    private boolean createSocket() {
-        final int send_timout_ms = 300;
-
-        final int oldTag = TrafficStats.getAndSetThreadStatsTag(
-                TrafficStatsConstants.TAG_SYSTEM_NEIGHBOR);
-        try {
-            mSocket = Os.socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6);
-            // Setting SNDTIMEO is purely for defensive purposes.
-            Os.setsockoptTimeval(
-                    mSocket, SOL_SOCKET, SO_SNDTIMEO, StructTimeval.fromMillis(send_timout_ms));
-            SocketUtils.bindSocketToInterface(mSocket, mInterface.name);
-            TetheringUtils.setupRaSocket(mSocket, mInterface.index);
-        } catch (ErrnoException | IOException e) {
-            Log.e(TAG, "Failed to create RA daemon socket: " + e);
-            return false;
-        } finally {
-            TrafficStats.setThreadStatsTag(oldTag);
-        }
-
-        return true;
-    }
-
-    private void closeSocket() {
-        if (mSocket != null) {
-            try {
-                SocketUtils.closeSocket(mSocket);
-            } catch (IOException ignored) { }
-        }
-        mSocket = null;
-    }
-
-    private boolean isSocketValid() {
-        final FileDescriptor s = mSocket;
-        return (s != null) && s.valid();
-    }
-
-    private boolean isSuitableDestination(InetSocketAddress dest) {
-        if (mAllNodes.equals(dest)) {
-            return true;
-        }
-
-        final InetAddress destip = dest.getAddress();
-        return (destip instanceof Inet6Address)
-               && destip.isLinkLocalAddress()
-               && (((Inet6Address) destip).getScopeId() == mInterface.index);
-    }
-
-    private void maybeSendRA(InetSocketAddress dest) {
-        if (dest == null || !isSuitableDestination(dest)) {
-            dest = mAllNodes;
-        }
-
-        try {
-            synchronized (mLock) {
-                if (mRaLength < MIN_RA_HEADER_SIZE) {
-                    // No actual RA to send.
-                    return;
-                }
-                Os.sendto(mSocket, mRA, 0, mRaLength, 0, dest);
-            }
-            Log.d(TAG, "RA sendto " + dest.getAddress().getHostAddress());
-        } catch (ErrnoException | SocketException e) {
-            if (isSocketValid()) {
-                Log.e(TAG, "sendto error: " + e);
-            }
-        }
-    }
-
-    private final class UnicastResponder extends Thread {
-        private final InetSocketAddress mSolicitor = new InetSocketAddress(0);
-        // The recycled buffer for receiving Router Solicitations from clients.
-        // If the RS is larger than IPV6_MIN_MTU the packets are truncated.
-        // This is fine since currently only byte 0 is examined anyway.
-        private final byte[] mSolicitation = new byte[IPV6_MIN_MTU];
-
-        @Override
-        public void run() {
-            while (isSocketValid()) {
-                try {
-                    // Blocking receive.
-                    final int rval = Os.recvfrom(
-                            mSocket, mSolicitation, 0, mSolicitation.length, 0, mSolicitor);
-                    // Do the least possible amount of validation.
-                    if (rval < 1 || mSolicitation[0] != ICMPV6_ND_ROUTER_SOLICIT) {
-                        continue;
-                    }
-                } catch (ErrnoException | SocketException e) {
-                    if (isSocketValid()) {
-                        Log.e(TAG, "recvfrom error: " + e);
-                    }
-                    continue;
-                }
-
-                maybeSendRA(mSolicitor);
-            }
-        }
-    }
-
-    // TODO: Consider moving this to run on a provided Looper as a Handler,
-    // with WakeupMessage-style messages providing the timer driven input.
-    private final class MulticastTransmitter extends Thread {
-        private final Random mRandom = new Random();
-        private final AtomicInteger mUrgentAnnouncements = new AtomicInteger(0);
-
-        @Override
-        public void run() {
-            while (isSocketValid()) {
-                try {
-                    Thread.sleep(getNextMulticastTransmitDelayMs());
-                } catch (InterruptedException ignored) {
-                    // Stop sleeping, immediately send an RA, and continue.
-                }
-
-                maybeSendRA(mAllNodes);
-                synchronized (mLock) {
-                    if (mDeprecatedInfoTracker.decrementCounters()) {
-                        // At least one deprecated PIO has been removed;
-                        // reassemble the RA.
-                        assembleRaLocked();
-                    }
-                }
-            }
-        }
-
-        public void hup() {
-            // Set to one fewer that the desired number, because as soon as
-            // the thread interrupt is processed we immediately send an RA
-            // and mUrgentAnnouncements is not examined until the subsequent
-            // sleep interval computation (i.e. this way we send 3 and not 4).
-            mUrgentAnnouncements.set(MAX_URGENT_RTR_ADVERTISEMENTS - 1);
-            interrupt();
-        }
-
-        private int getNextMulticastTransmitDelaySec() {
-            boolean deprecationInProgress = false;
-            synchronized (mLock) {
-                if (mRaLength < MIN_RA_HEADER_SIZE) {
-                    // No actual RA to send; just sleep for 1 day.
-                    return DAY_IN_SECONDS;
-                }
-                deprecationInProgress = !mDeprecatedInfoTracker.isEmpty();
-            }
-
-            final int urgentPending = mUrgentAnnouncements.getAndDecrement();
-            if ((urgentPending > 0) || deprecationInProgress) {
-                return MIN_DELAY_BETWEEN_RAS_SEC;
-            }
-
-            return MIN_RTR_ADV_INTERVAL_SEC + mRandom.nextInt(
-                    MAX_RTR_ADV_INTERVAL_SEC - MIN_RTR_ADV_INTERVAL_SEC);
-        }
-
-        private long getNextMulticastTransmitDelayMs() {
-            return 1000 * (long) getNextMulticastTransmitDelaySec();
-        }
-    }
-}
diff --git a/packages/Tethering/src/android/net/util/BaseNetdUnsolicitedEventListener.java b/packages/Tethering/src/android/net/util/BaseNetdUnsolicitedEventListener.java
deleted file mode 100644
index b1ffdb0..0000000
--- a/packages/Tethering/src/android/net/util/BaseNetdUnsolicitedEventListener.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.net.util;
-
-import android.net.INetdUnsolicitedEventListener;
-
-import androidx.annotation.NonNull;
-
-/**
- * Base {@link INetdUnsolicitedEventListener} that provides no-op implementations which can be
- * overridden.
- */
-public class BaseNetdUnsolicitedEventListener extends INetdUnsolicitedEventListener.Stub {
-
-    @Override
-    public void onInterfaceClassActivityChanged(boolean isActive, int timerLabel, long timestampNs,
-            int uid) { }
-
-    @Override
-    public void onQuotaLimitReached(@NonNull String alertName, @NonNull String ifName) { }
-
-    @Override
-    public void onInterfaceDnsServerInfo(@NonNull String ifName, long lifetimeS,
-            @NonNull String[] servers) { }
-
-    @Override
-    public void onInterfaceAddressUpdated(@NonNull String addr, String ifName, int flags,
-            int scope) { }
-
-    @Override
-    public void onInterfaceAddressRemoved(@NonNull String addr, @NonNull String ifName, int flags,
-            int scope) { }
-
-    @Override
-    public void onInterfaceAdded(@NonNull String ifName) { }
-
-    @Override
-    public void onInterfaceRemoved(@NonNull String ifName) { }
-
-    @Override
-    public void onInterfaceChanged(@NonNull String ifName, boolean up) { }
-
-    @Override
-    public void onInterfaceLinkStateChanged(@NonNull String ifName, boolean up) { }
-
-    @Override
-    public void onRouteChanged(boolean updated, @NonNull String route, @NonNull String gateway,
-            @NonNull String ifName) { }
-
-    @Override
-    public void onStrictCleartextDetected(int uid, @NonNull String hex) { }
-
-    @Override
-    public int getInterfaceVersion() {
-        return INetdUnsolicitedEventListener.VERSION;
-    }
-
-    @Override
-    public String getInterfaceHash() {
-        return INetdUnsolicitedEventListener.HASH;
-    }
-}
diff --git a/packages/Tethering/src/android/net/util/InterfaceSet.java b/packages/Tethering/src/android/net/util/InterfaceSet.java
deleted file mode 100644
index 7589787..0000000
--- a/packages/Tethering/src/android/net/util/InterfaceSet.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net.util;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.StringJoiner;
-
-
-/**
- * @hide
- */
-public class InterfaceSet {
-    public final Set<String> ifnames;
-
-    public InterfaceSet(String... names) {
-        final Set<String> nameSet = new HashSet<>();
-        for (String name : names) {
-            if (name != null) nameSet.add(name);
-        }
-        ifnames = Collections.unmodifiableSet(nameSet);
-    }
-
-    @Override
-    public String toString() {
-        final StringJoiner sj = new StringJoiner(",", "[", "]");
-        for (String ifname : ifnames) sj.add(ifname);
-        return sj.toString();
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        return obj != null
-                && obj instanceof InterfaceSet
-                && ifnames.equals(((InterfaceSet) obj).ifnames);
-    }
-}
diff --git a/packages/Tethering/src/android/net/util/PrefixUtils.java b/packages/Tethering/src/android/net/util/PrefixUtils.java
deleted file mode 100644
index f203e99..0000000
--- a/packages/Tethering/src/android/net/util/PrefixUtils.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net.util;
-
-import android.net.IpPrefix;
-import android.net.LinkAddress;
-import android.net.LinkProperties;
-
-import java.net.Inet4Address;
-import java.net.InetAddress;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-
-/**
- * @hide
- */
-public class PrefixUtils {
-    private static final IpPrefix[] MIN_NON_FORWARDABLE_PREFIXES = {
-            pfx("127.0.0.0/8"),     // IPv4 loopback
-            pfx("169.254.0.0/16"),  // IPv4 link-local, RFC3927#section-8
-            pfx("::/3"),
-            pfx("fe80::/64"),       // IPv6 link-local
-            pfx("fc00::/7"),        // IPv6 ULA
-            pfx("ff02::/8"),        // IPv6 link-local multicast
-    };
-
-    public static final IpPrefix DEFAULT_WIFI_P2P_PREFIX = pfx("192.168.49.0/24");
-
-    /** Get non forwardable prefixes. */
-    public static Set<IpPrefix> getNonForwardablePrefixes() {
-        final HashSet<IpPrefix> prefixes = new HashSet<>();
-        addNonForwardablePrefixes(prefixes);
-        return prefixes;
-    }
-
-    /** Add non forwardable prefixes. */
-    public static void addNonForwardablePrefixes(Set<IpPrefix> prefixes) {
-        Collections.addAll(prefixes, MIN_NON_FORWARDABLE_PREFIXES);
-    }
-
-    /** Get local prefixes from |lp|. */
-    public static Set<IpPrefix> localPrefixesFrom(LinkProperties lp) {
-        final HashSet<IpPrefix> localPrefixes = new HashSet<>();
-        if (lp == null) return localPrefixes;
-
-        for (LinkAddress addr : lp.getAllLinkAddresses()) {
-            if (addr.getAddress().isLinkLocalAddress()) continue;
-            localPrefixes.add(asIpPrefix(addr));
-        }
-        // TODO: Add directly-connected routes as well (ones from which we did
-        // not also form a LinkAddress)?
-
-        return localPrefixes;
-    }
-
-    /** Convert LinkAddress |addr| to IpPrefix. */
-    public static IpPrefix asIpPrefix(LinkAddress addr) {
-        return new IpPrefix(addr.getAddress(), addr.getPrefixLength());
-    }
-
-    /** Convert InetAddress |ip| to IpPrefix. */
-    public static IpPrefix ipAddressAsPrefix(InetAddress ip) {
-        final int bitLength = (ip instanceof Inet4Address)
-                ? NetworkConstants.IPV4_ADDR_BITS
-                : NetworkConstants.IPV6_ADDR_BITS;
-        return new IpPrefix(ip, bitLength);
-    }
-
-    private static IpPrefix pfx(String prefixStr) {
-        return new IpPrefix(prefixStr);
-    }
-}
diff --git a/packages/Tethering/src/android/net/util/TetheringMessageBase.java b/packages/Tethering/src/android/net/util/TetheringMessageBase.java
deleted file mode 100644
index 29c0a81..0000000
--- a/packages/Tethering/src/android/net/util/TetheringMessageBase.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.net.util;
-
-/**
- * This class defines Message.what base addresses for various state machine.
- */
-public class TetheringMessageBase {
-    public static final int BASE_MAIN_SM   = 0;
-    public static final int BASE_IPSERVER = 100;
-
-}
diff --git a/packages/Tethering/src/android/net/util/TetheringUtils.java b/packages/Tethering/src/android/net/util/TetheringUtils.java
deleted file mode 100644
index 53b54f7..0000000
--- a/packages/Tethering/src/android/net/util/TetheringUtils.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.net.util;
-
-import android.net.TetherStatsParcel;
-import android.net.TetheringRequestParcel;
-import android.util.Log;
-
-import androidx.annotation.NonNull;
-
-import java.io.FileDescriptor;
-import java.net.Inet6Address;
-import java.net.SocketException;
-import java.net.UnknownHostException;
-import java.util.Arrays;
-import java.util.Objects;
-
-/**
- * The classes and the methods for tethering utilization.
- *
- * {@hide}
- */
-public class TetheringUtils {
-    public static final byte[] ALL_NODES = new byte[] {
-        (byte) 0xff, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
-    };
-
-    /**
-     * Configures a socket for receiving and sending ICMPv6 neighbor advertisments.
-     * @param fd the socket's {@link FileDescriptor}.
-     */
-    public static native void setupNaSocket(FileDescriptor fd)
-            throws SocketException;
-
-    /**
-     * Configures a socket for receiving and sending ICMPv6 neighbor solicitations.
-     * @param fd the socket's {@link FileDescriptor}.
-     */
-    public static native void setupNsSocket(FileDescriptor fd)
-            throws SocketException;
-
-    /**
-     *  The object which records offload Tx/Rx forwarded bytes/packets.
-     *  TODO: Replace the inner class ForwardedStats of class OffloadHardwareInterface with
-     *  this class as well.
-     */
-    public static class ForwardedStats {
-        public final long rxBytes;
-        public final long rxPackets;
-        public final long txBytes;
-        public final long txPackets;
-
-        public ForwardedStats() {
-            rxBytes = 0;
-            rxPackets = 0;
-            txBytes = 0;
-            txPackets = 0;
-        }
-
-        public ForwardedStats(long rxBytes, long txBytes) {
-            this.rxBytes = rxBytes;
-            this.rxPackets = 0;
-            this.txBytes = txBytes;
-            this.txPackets = 0;
-        }
-
-        public ForwardedStats(long rxBytes, long rxPackets, long txBytes, long txPackets) {
-            this.rxBytes = rxBytes;
-            this.rxPackets = rxPackets;
-            this.txBytes = txBytes;
-            this.txPackets = txPackets;
-        }
-
-        public ForwardedStats(@NonNull TetherStatsParcel tetherStats) {
-            rxBytes = tetherStats.rxBytes;
-            rxPackets = tetherStats.rxPackets;
-            txBytes = tetherStats.txBytes;
-            txPackets = tetherStats.txPackets;
-        }
-
-        public ForwardedStats(@NonNull ForwardedStats other) {
-            rxBytes = other.rxBytes;
-            rxPackets = other.rxPackets;
-            txBytes = other.txBytes;
-            txPackets = other.txPackets;
-        }
-
-        /** Add Tx/Rx bytes/packets and return the result as a new object. */
-        @NonNull
-        public ForwardedStats add(@NonNull ForwardedStats other) {
-            return new ForwardedStats(rxBytes + other.rxBytes, rxPackets + other.rxPackets,
-                    txBytes + other.txBytes, txPackets + other.txPackets);
-        }
-
-        /** Subtract Tx/Rx bytes/packets and return the result as a new object. */
-        @NonNull
-        public ForwardedStats subtract(@NonNull ForwardedStats other) {
-            // TODO: Perhaps throw an exception if any negative difference value just in case.
-            final long rxBytesDiff = Math.max(rxBytes - other.rxBytes, 0);
-            final long rxPacketsDiff = Math.max(rxPackets - other.rxPackets, 0);
-            final long txBytesDiff = Math.max(txBytes - other.txBytes, 0);
-            final long txPacketsDiff = Math.max(txPackets - other.txPackets, 0);
-            return new ForwardedStats(rxBytesDiff, rxPacketsDiff, txBytesDiff, txPacketsDiff);
-        }
-
-        /** Returns the string representation of this object. */
-        @NonNull
-        public String toString() {
-            return String.format("ForwardedStats(rxb: %d, rxp: %d, txb: %d, txp: %d)", rxBytes,
-                    rxPackets, txBytes, txPackets);
-        }
-    }
-
-    /**
-     * Configures a socket for receiving ICMPv6 router solicitations and sending advertisements.
-     * @param fd the socket's {@link FileDescriptor}.
-     * @param ifIndex the interface index.
-     */
-    public static native void setupRaSocket(FileDescriptor fd, int ifIndex)
-            throws SocketException;
-
-    /**
-     * Read s as an unsigned 16-bit integer.
-     */
-    public static int uint16(short s) {
-        return s & 0xffff;
-    }
-
-    /** Check whether two TetheringRequestParcels are the same. */
-    public static boolean isTetheringRequestEquals(final TetheringRequestParcel request,
-            final TetheringRequestParcel otherRequest) {
-        if (request == otherRequest) return true;
-
-        return request != null && otherRequest != null
-                && request.tetheringType == otherRequest.tetheringType
-                && Objects.equals(request.localIPv4Address, otherRequest.localIPv4Address)
-                && Objects.equals(request.staticClientAddress, otherRequest.staticClientAddress)
-                && request.exemptFromEntitlementCheck == otherRequest.exemptFromEntitlementCheck
-                && request.showProvisioningUi == otherRequest.showProvisioningUi;
-    }
-
-    /** Get inet6 address for all nodes given scope ID. */
-    public static Inet6Address getAllNodesForScopeId(int scopeId) {
-        try {
-            return Inet6Address.getByAddress("ff02::1", ALL_NODES, scopeId);
-        } catch (UnknownHostException uhe) {
-            Log.wtf("TetheringUtils", "Failed to construct Inet6Address from "
-                    + Arrays.toString(ALL_NODES) + " and scopedId " + scopeId);
-            return null;
-        }
-    }
-}
diff --git a/packages/Tethering/src/android/net/util/VersionedBroadcastListener.java b/packages/Tethering/src/android/net/util/VersionedBroadcastListener.java
deleted file mode 100644
index e2804ab..0000000
--- a/packages/Tethering/src/android/net/util/VersionedBroadcastListener.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net.util;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.os.Handler;
-import android.util.Log;
-
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.function.Consumer;
-
-
-/**
- * A utility class that runs the provided callback on the provided handler when
- * intents matching the provided filter arrive. Intents received by a stale
- * receiver are safely ignored.
- *
- * Calls to startListening() and stopListening() must happen on the same thread.
- *
- * @hide
- */
-public class VersionedBroadcastListener {
-    private static final boolean DBG = false;
-
-    private final String mTag;
-    private final Context mContext;
-    private final Handler mHandler;
-    private final IntentFilter mFilter;
-    private final Consumer<Intent> mCallback;
-    private final AtomicInteger mGenerationNumber;
-    private BroadcastReceiver mReceiver;
-
-    public VersionedBroadcastListener(String tag, Context ctx, Handler handler,
-            IntentFilter filter, Consumer<Intent> callback) {
-        mTag = tag;
-        mContext = ctx;
-        mHandler = handler;
-        mFilter = filter;
-        mCallback = callback;
-        mGenerationNumber = new AtomicInteger(0);
-    }
-
-    /** Start listening to intent broadcast. */
-    public void startListening() {
-        if (DBG) Log.d(mTag, "startListening");
-        if (mReceiver != null) return;
-
-        mReceiver = new Receiver(mTag, mGenerationNumber, mCallback);
-        mContext.registerReceiver(mReceiver, mFilter, null, mHandler);
-    }
-
-    /** Stop listening to intent broadcast. */
-    public void stopListening() {
-        if (DBG) Log.d(mTag, "stopListening");
-        if (mReceiver == null) return;
-
-        mGenerationNumber.incrementAndGet();
-        mContext.unregisterReceiver(mReceiver);
-        mReceiver = null;
-    }
-
-    private static class Receiver extends BroadcastReceiver {
-        public final String tag;
-        public final AtomicInteger atomicGenerationNumber;
-        public final Consumer<Intent> callback;
-        // Used to verify this receiver is still current.
-        public final int generationNumber;
-
-        Receiver(String tag, AtomicInteger atomicGenerationNumber, Consumer<Intent> callback) {
-            this.tag = tag;
-            this.atomicGenerationNumber = atomicGenerationNumber;
-            this.callback = callback;
-            generationNumber = atomicGenerationNumber.incrementAndGet();
-        }
-
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            final int currentGenerationNumber = atomicGenerationNumber.get();
-
-            if (DBG) {
-                Log.d(tag, "receiver generationNumber=" + generationNumber
-                        + ", current generationNumber=" + currentGenerationNumber);
-            }
-            if (generationNumber != currentGenerationNumber) return;
-
-            callback.accept(intent);
-        }
-    }
-}
diff --git a/packages/Tethering/src/com/android/networkstack/tethering/BpfCoordinator.java b/packages/Tethering/src/com/android/networkstack/tethering/BpfCoordinator.java
deleted file mode 100644
index 20f30ea..0000000
--- a/packages/Tethering/src/com/android/networkstack/tethering/BpfCoordinator.java
+++ /dev/null
@@ -1,778 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.networkstack.tethering;
-
-import static android.net.NetworkStats.DEFAULT_NETWORK_NO;
-import static android.net.NetworkStats.METERED_NO;
-import static android.net.NetworkStats.ROAMING_NO;
-import static android.net.NetworkStats.SET_DEFAULT;
-import static android.net.NetworkStats.TAG_NONE;
-import static android.net.NetworkStats.UID_ALL;
-import static android.net.NetworkStats.UID_TETHERING;
-import static android.net.netstats.provider.NetworkStatsProvider.QUOTA_UNLIMITED;
-
-import static com.android.networkstack.tethering.TetheringConfiguration.DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS;
-
-import android.app.usage.NetworkStatsManager;
-import android.net.INetd;
-import android.net.MacAddress;
-import android.net.NetworkStats;
-import android.net.NetworkStats.Entry;
-import android.net.TetherOffloadRuleParcel;
-import android.net.TetherStatsParcel;
-import android.net.ip.IpServer;
-import android.net.netstats.provider.NetworkStatsProvider;
-import android.net.util.SharedLog;
-import android.net.util.TetheringUtils.ForwardedStats;
-import android.os.ConditionVariable;
-import android.os.Handler;
-import android.os.RemoteException;
-import android.os.ServiceSpecificException;
-import android.text.TextUtils;
-import android.util.Log;
-import android.util.SparseArray;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.util.IndentingPrintWriter;
-
-import java.net.Inet6Address;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Objects;
-
-/**
- *  This coordinator is responsible for providing BPF offload relevant functionality.
- *  - Get tethering stats.
- *  - Set data limit.
- *  - Set global alert.
- *  - Add/remove forwarding rules.
- *
- * @hide
- */
-public class BpfCoordinator {
-    private static final String TAG = BpfCoordinator.class.getSimpleName();
-    private static final int DUMP_TIMEOUT_MS = 10_000;
-
-    @VisibleForTesting
-    enum StatsType {
-        STATS_PER_IFACE,
-        STATS_PER_UID,
-    }
-
-    @NonNull
-    private final Handler mHandler;
-    @NonNull
-    private final INetd mNetd;
-    @NonNull
-    private final SharedLog mLog;
-    @NonNull
-    private final Dependencies mDeps;
-    @Nullable
-    private final BpfTetherStatsProvider mStatsProvider;
-
-    // True if BPF offload is supported, false otherwise. The BPF offload could be disabled by
-    // a runtime resource overlay package or device configuration. This flag is only initialized
-    // in the constructor because it is hard to unwind all existing change once device
-    // configuration is changed. Especially the forwarding rules. Keep the same setting
-    // to make it simpler. See also TetheringConfiguration.
-    private final boolean mIsBpfEnabled;
-
-    // Tracks whether BPF tethering is started or not. This is set by tethering before it
-    // starts the first IpServer and is cleared by tethering shortly before the last IpServer
-    // is stopped. Note that rule updates (especially deletions, but sometimes additions as
-    // well) may arrive when this is false. If they do, they must be communicated to netd.
-    // Changes in data limits may also arrive when this is false, and if they do, they must
-    // also be communicated to netd.
-    private boolean mPollingStarted = false;
-
-    // Tracking remaining alert quota. Unlike limit quota is subject to interface, the alert
-    // quota is interface independent and global for tether offload.
-    private long mRemainingAlertQuota = QUOTA_UNLIMITED;
-
-    // Maps upstream interface index to offloaded traffic statistics.
-    // Always contains the latest total bytes/packets, since each upstream was started, received
-    // from the BPF maps for each interface.
-    private final SparseArray<ForwardedStats> mStats = new SparseArray<>();
-
-    // Maps upstream interface names to interface quotas.
-    // Always contains the latest value received from the framework for each interface, regardless
-    // of whether offload is currently running (or is even supported) on that interface. Only
-    // includes interfaces that have a quota set. Note that this map is used for storing the quota
-    // which is set from the service. Because the service uses the interface name to present the
-    // interface, this map uses the interface name to be the mapping index.
-    private final HashMap<String, Long> mInterfaceQuotas = new HashMap<>();
-
-    // Maps upstream interface index to interface names.
-    // Store all interface name since boot. Used for lookup what interface name it is from the
-    // tether stats got from netd because netd reports interface index to present an interface.
-    // TODO: Remove the unused interface name.
-    private final SparseArray<String> mInterfaceNames = new SparseArray<>();
-
-    // Map of downstream rule maps. Each of these maps represents the IPv6 forwarding rules for a
-    // given downstream. Each map:
-    // - Is owned by the IpServer that is responsible for that downstream.
-    // - Must only be modified by that IpServer.
-    // - Is created when the IpServer adds its first rule, and deleted when the IpServer deletes
-    //   its last rule (or clears its rules).
-    // TODO: Perhaps seal the map and rule operations which communicates with netd into a class.
-    // TODO: Does this need to be a LinkedHashMap or can it just be a HashMap? Also, could it be
-    // a ConcurrentHashMap, in order to avoid the copies in tetherOffloadRuleClear
-    // and tetherOffloadRuleUpdate?
-    // TODO: Perhaps use one-dimensional map and access specific downstream rules via downstream
-    // index. For doing that, IpServer must guarantee that it always has a valid IPv6 downstream
-    // interface index while calling function to clear all rules. IpServer may be calling clear
-    // rules function without a valid IPv6 downstream interface index even if it may have one
-    // before. IpServer would need to call getInterfaceParams() in the constructor instead of when
-    // startIpv6() is called, and make mInterfaceParams final.
-    private final HashMap<IpServer, LinkedHashMap<Inet6Address, Ipv6ForwardingRule>>
-            mIpv6ForwardingRules = new LinkedHashMap<>();
-
-    // Runnable that used by scheduling next polling of stats.
-    private final Runnable mScheduledPollingTask = () -> {
-        updateForwardedStatsFromNetd();
-        maybeSchedulePollingStats();
-    };
-
-    @VisibleForTesting
-    public abstract static class Dependencies {
-        /** Get handler. */
-        @NonNull public abstract Handler getHandler();
-
-        /** Get netd. */
-        @NonNull public abstract INetd getNetd();
-
-        /** Get network stats manager. */
-        @NonNull public abstract NetworkStatsManager getNetworkStatsManager();
-
-        /** Get shared log. */
-        @NonNull public abstract SharedLog getSharedLog();
-
-        /** Get tethering configuration. */
-        @Nullable public abstract TetheringConfiguration getTetherConfig();
-    }
-
-    @VisibleForTesting
-    public BpfCoordinator(@NonNull Dependencies deps) {
-        mDeps = deps;
-        mHandler = mDeps.getHandler();
-        mNetd = mDeps.getNetd();
-        mLog = mDeps.getSharedLog().forSubComponent(TAG);
-        mIsBpfEnabled = isBpfEnabled();
-        BpfTetherStatsProvider provider = new BpfTetherStatsProvider();
-        try {
-            mDeps.getNetworkStatsManager().registerNetworkStatsProvider(
-                    getClass().getSimpleName(), provider);
-        } catch (RuntimeException e) {
-            // TODO: Perhaps not allow to use BPF offload because the reregistration failure
-            // implied that no data limit could be applies on a metered upstream if any.
-            Log.wtf(TAG, "Cannot register offload stats provider: " + e);
-            provider = null;
-        }
-        mStatsProvider = provider;
-    }
-
-    /**
-     * Start BPF tethering offload stats polling when the first upstream is started.
-     * Note that this can be only called on handler thread.
-     * TODO: Perhaps check BPF support before starting.
-     * TODO: Start the stats polling only if there is any client on the downstream.
-     */
-    public void startPolling() {
-        if (mPollingStarted) return;
-
-        if (!mIsBpfEnabled) {
-            mLog.i("Offload disabled");
-            return;
-        }
-
-        mPollingStarted = true;
-        maybeSchedulePollingStats();
-
-        mLog.i("Polling started");
-    }
-
-    /**
-     * Stop BPF tethering offload stats polling.
-     * The data limit cleanup and the tether stats maps cleanup are not implemented here.
-     * These cleanups rely on all IpServers calling #tetherOffloadRuleRemove. After the
-     * last rule is removed from the upstream, #tetherOffloadRuleRemove does the cleanup
-     * functionality.
-     * Note that this can be only called on handler thread.
-     */
-    public void stopPolling() {
-        if (!mPollingStarted) return;
-
-        // Stop scheduled polling tasks and poll the latest stats from BPF maps.
-        if (mHandler.hasCallbacks(mScheduledPollingTask)) {
-            mHandler.removeCallbacks(mScheduledPollingTask);
-        }
-        updateForwardedStatsFromNetd();
-        mPollingStarted = false;
-
-        mLog.i("Polling stopped");
-    }
-
-    /**
-     * Add forwarding rule. After adding the first rule on a given upstream, must add the data
-     * limit on the given upstream.
-     * Note that this can be only called on handler thread.
-     */
-    public void tetherOffloadRuleAdd(
-            @NonNull final IpServer ipServer, @NonNull final Ipv6ForwardingRule rule) {
-        if (!mIsBpfEnabled) return;
-
-        try {
-            // TODO: Perhaps avoid to add a duplicate rule.
-            mNetd.tetherOffloadRuleAdd(rule.toTetherOffloadRuleParcel());
-        } catch (RemoteException | ServiceSpecificException e) {
-            mLog.e("Could not add IPv6 forwarding rule: ", e);
-            return;
-        }
-
-        if (!mIpv6ForwardingRules.containsKey(ipServer)) {
-            mIpv6ForwardingRules.put(ipServer, new LinkedHashMap<Inet6Address,
-                    Ipv6ForwardingRule>());
-        }
-        LinkedHashMap<Inet6Address, Ipv6ForwardingRule> rules = mIpv6ForwardingRules.get(ipServer);
-
-        // Setup the data limit on the given upstream if the first rule is added.
-        final int upstreamIfindex = rule.upstreamIfindex;
-        if (!isAnyRuleOnUpstream(upstreamIfindex)) {
-            // If failed to set a data limit, probably should not use this upstream, because
-            // the upstream may not want to blow through the data limit that was told to apply.
-            // TODO: Perhaps stop the coordinator.
-            boolean success = updateDataLimit(upstreamIfindex);
-            if (!success) {
-                final String iface = mInterfaceNames.get(upstreamIfindex);
-                mLog.e("Setting data limit for " + iface + " failed.");
-            }
-        }
-
-        // Must update the adding rule after calling #isAnyRuleOnUpstream because it needs to
-        // check if it is about adding a first rule for a given upstream.
-        rules.put(rule.address, rule);
-    }
-
-    /**
-     * Remove forwarding rule. After removing the last rule on a given upstream, must clear
-     * data limit, update the last tether stats and remove the tether stats in the BPF maps.
-     * Note that this can be only called on handler thread.
-     */
-    public void tetherOffloadRuleRemove(
-            @NonNull final IpServer ipServer, @NonNull final Ipv6ForwardingRule rule) {
-        if (!mIsBpfEnabled) return;
-
-        try {
-            // TODO: Perhaps avoid to remove a non-existent rule.
-            mNetd.tetherOffloadRuleRemove(rule.toTetherOffloadRuleParcel());
-        } catch (RemoteException | ServiceSpecificException e) {
-            mLog.e("Could not remove IPv6 forwarding rule: ", e);
-            return;
-        }
-
-        LinkedHashMap<Inet6Address, Ipv6ForwardingRule> rules = mIpv6ForwardingRules.get(ipServer);
-        if (rules == null) return;
-
-        // Must remove rules before calling #isAnyRuleOnUpstream because it needs to check if
-        // the last rule is removed for a given upstream. If no rule is removed, return early.
-        // Avoid unnecessary work on a non-existent rule which may have never been added or
-        // removed already.
-        if (rules.remove(rule.address) == null) return;
-
-        // Remove the downstream entry if it has no more rule.
-        if (rules.isEmpty()) {
-            mIpv6ForwardingRules.remove(ipServer);
-        }
-
-        // Do cleanup functionality if there is no more rule on the given upstream.
-        final int upstreamIfindex = rule.upstreamIfindex;
-        if (!isAnyRuleOnUpstream(upstreamIfindex)) {
-            try {
-                final TetherStatsParcel stats =
-                        mNetd.tetherOffloadGetAndClearStats(upstreamIfindex);
-                // Update the last stats delta and delete the local cache for a given upstream.
-                updateQuotaAndStatsFromSnapshot(new TetherStatsParcel[] {stats});
-                mStats.remove(upstreamIfindex);
-            } catch (RemoteException | ServiceSpecificException e) {
-                Log.wtf(TAG, "Exception when cleanup tether stats for upstream index "
-                        + upstreamIfindex + ": ", e);
-            }
-        }
-    }
-
-    /**
-     * Clear all forwarding rules for a given downstream.
-     * Note that this can be only called on handler thread.
-     */
-    public void tetherOffloadRuleClear(@NonNull final IpServer ipServer) {
-        if (!mIsBpfEnabled) return;
-
-        final LinkedHashMap<Inet6Address, Ipv6ForwardingRule> rules = mIpv6ForwardingRules.get(
-                ipServer);
-        if (rules == null) return;
-
-        // Need to build a rule list because the rule map may be changed in the iteration.
-        for (final Ipv6ForwardingRule rule : new ArrayList<Ipv6ForwardingRule>(rules.values())) {
-            tetherOffloadRuleRemove(ipServer, rule);
-        }
-    }
-
-    /**
-     * Update existing forwarding rules to new upstream for a given downstream.
-     * Note that this can be only called on handler thread.
-     */
-    public void tetherOffloadRuleUpdate(@NonNull final IpServer ipServer, int newUpstreamIfindex) {
-        if (!mIsBpfEnabled) return;
-
-        final LinkedHashMap<Inet6Address, Ipv6ForwardingRule> rules = mIpv6ForwardingRules.get(
-                ipServer);
-        if (rules == null) return;
-
-        // Need to build a rule list because the rule map may be changed in the iteration.
-        for (final Ipv6ForwardingRule rule : new ArrayList<Ipv6ForwardingRule>(rules.values())) {
-            // Remove the old rule before adding the new one because the map uses the same key for
-            // both rules. Reversing the processing order causes that the new rule is removed as
-            // unexpected.
-            // TODO: Add new rule first to reduce the latency which has no rule.
-            tetherOffloadRuleRemove(ipServer, rule);
-            tetherOffloadRuleAdd(ipServer, rule.onNewUpstream(newUpstreamIfindex));
-        }
-    }
-
-    /**
-     * Add upstream name to lookup table. The lookup table is used for tether stats interface name
-     * lookup because the netd only reports interface index in BPF tether stats but the service
-     * expects the interface name in NetworkStats object.
-     * Note that this can be only called on handler thread.
-     */
-    public void addUpstreamNameToLookupTable(int upstreamIfindex, @NonNull String upstreamIface) {
-        if (!mIsBpfEnabled) return;
-
-        if (upstreamIfindex == 0 || TextUtils.isEmpty(upstreamIface)) return;
-
-        // The same interface index to name mapping may be added by different IpServer objects or
-        // re-added by reconnection on the same upstream interface. Ignore the duplicate one.
-        final String iface = mInterfaceNames.get(upstreamIfindex);
-        if (iface == null) {
-            mInterfaceNames.put(upstreamIfindex, upstreamIface);
-        } else if (!TextUtils.equals(iface, upstreamIface)) {
-            Log.wtf(TAG, "The upstream interface name " + upstreamIface
-                    + " is different from the existing interface name "
-                    + iface + " for index " + upstreamIfindex);
-        }
-    }
-
-    /**
-     * Dump information.
-     * Block the function until all the data are dumped on the handler thread or timed-out. The
-     * reason is that dumpsys invokes this function on the thread of caller and the data may only
-     * be allowed to be accessed on the handler thread.
-     */
-    public void dump(@NonNull IndentingPrintWriter pw) {
-        final ConditionVariable dumpDone = new ConditionVariable();
-        mHandler.post(() -> {
-            pw.println("mIsBpfEnabled: " + mIsBpfEnabled);
-            pw.println("Polling " + (mPollingStarted ? "started" : "not started"));
-            pw.println("Stats provider " + (mStatsProvider != null
-                    ? "registered" : "not registered"));
-            pw.println("Upstream quota: " + mInterfaceQuotas.toString());
-            pw.println("Polling interval: " + getPollingInterval() + " ms");
-
-            pw.println("Forwarding stats:");
-            pw.increaseIndent();
-            if (mStats.size() == 0) {
-                pw.println("<empty>");
-            } else {
-                dumpStats(pw);
-            }
-            pw.decreaseIndent();
-
-            pw.println("Forwarding rules:");
-            pw.increaseIndent();
-            if (mIpv6ForwardingRules.size() == 0) {
-                pw.println("<empty>");
-            } else {
-                dumpIpv6ForwardingRules(pw);
-            }
-            pw.decreaseIndent();
-
-            dumpDone.open();
-        });
-        if (!dumpDone.block(DUMP_TIMEOUT_MS)) {
-            pw.println("... dump timed-out after " + DUMP_TIMEOUT_MS + "ms");
-        }
-    }
-
-    private void dumpStats(@NonNull IndentingPrintWriter pw) {
-        for (int i = 0; i < mStats.size(); i++) {
-            final int upstreamIfindex = mStats.keyAt(i);
-            final ForwardedStats stats = mStats.get(upstreamIfindex);
-            pw.println(String.format("%d(%s) - %s", upstreamIfindex, mInterfaceNames.get(
-                    upstreamIfindex), stats.toString()));
-        }
-    }
-
-    private void dumpIpv6ForwardingRules(@NonNull IndentingPrintWriter pw) {
-        for (Map.Entry<IpServer, LinkedHashMap<Inet6Address, Ipv6ForwardingRule>> entry :
-                mIpv6ForwardingRules.entrySet()) {
-            IpServer ipServer = entry.getKey();
-            // The rule downstream interface index is paired with the interface name from
-            // IpServer#interfaceName. See #startIPv6, #updateIpv6ForwardingRules in IpServer.
-            final String downstreamIface = ipServer.interfaceName();
-            pw.println("[" + downstreamIface + "]: iif(iface) oif(iface) v6addr srcmac dstmac");
-
-            pw.increaseIndent();
-            LinkedHashMap<Inet6Address, Ipv6ForwardingRule> rules = entry.getValue();
-            for (Ipv6ForwardingRule rule : rules.values()) {
-                final int upstreamIfindex = rule.upstreamIfindex;
-                pw.println(String.format("%d(%s) %d(%s) %s %s %s", upstreamIfindex,
-                        mInterfaceNames.get(upstreamIfindex), rule.downstreamIfindex,
-                        downstreamIface, rule.address, rule.srcMac, rule.dstMac));
-            }
-            pw.decreaseIndent();
-        }
-    }
-
-    /** IPv6 forwarding rule class. */
-    public static class Ipv6ForwardingRule {
-        public final int upstreamIfindex;
-        public final int downstreamIfindex;
-
-        @NonNull
-        public final Inet6Address address;
-        @NonNull
-        public final MacAddress srcMac;
-        @NonNull
-        public final MacAddress dstMac;
-
-        public Ipv6ForwardingRule(int upstreamIfindex, int downstreamIfIndex,
-                @NonNull Inet6Address address, @NonNull MacAddress srcMac,
-                @NonNull MacAddress dstMac) {
-            this.upstreamIfindex = upstreamIfindex;
-            this.downstreamIfindex = downstreamIfIndex;
-            this.address = address;
-            this.srcMac = srcMac;
-            this.dstMac = dstMac;
-        }
-
-        /** Return a new rule object which updates with new upstream index. */
-        @NonNull
-        public Ipv6ForwardingRule onNewUpstream(int newUpstreamIfindex) {
-            return new Ipv6ForwardingRule(newUpstreamIfindex, downstreamIfindex, address, srcMac,
-                    dstMac);
-        }
-
-        /**
-         * Don't manipulate TetherOffloadRuleParcel directly because implementing onNewUpstream()
-         * would be error-prone due to generated stable AIDL classes not having a copy constructor.
-         */
-        @NonNull
-        public TetherOffloadRuleParcel toTetherOffloadRuleParcel() {
-            final TetherOffloadRuleParcel parcel = new TetherOffloadRuleParcel();
-            parcel.inputInterfaceIndex = upstreamIfindex;
-            parcel.outputInterfaceIndex = downstreamIfindex;
-            parcel.destination = address.getAddress();
-            parcel.prefixLength = 128;
-            parcel.srcL2Address = srcMac.toByteArray();
-            parcel.dstL2Address = dstMac.toByteArray();
-            return parcel;
-        }
-
-        @Override
-        public boolean equals(Object o) {
-            if (!(o instanceof Ipv6ForwardingRule)) return false;
-            Ipv6ForwardingRule that = (Ipv6ForwardingRule) o;
-            return this.upstreamIfindex == that.upstreamIfindex
-                    && this.downstreamIfindex == that.downstreamIfindex
-                    && Objects.equals(this.address, that.address)
-                    && Objects.equals(this.srcMac, that.srcMac)
-                    && Objects.equals(this.dstMac, that.dstMac);
-        }
-
-        @Override
-        public int hashCode() {
-            // TODO: if this is ever used in production code, don't pass ifindices
-            // to Objects.hash() to avoid autoboxing overhead.
-            return Objects.hash(upstreamIfindex, downstreamIfindex, address, srcMac, dstMac);
-        }
-    }
-
-    /**
-     * A BPF tethering stats provider to provide network statistics to the system.
-     * Note that this class' data may only be accessed on the handler thread.
-     */
-    @VisibleForTesting
-    class BpfTetherStatsProvider extends NetworkStatsProvider {
-        // The offloaded traffic statistics per interface that has not been reported since the
-        // last call to pushTetherStats. Only the interfaces that were ever tethering upstreams
-        // and has pending tether stats delta are included in this NetworkStats object.
-        private NetworkStats mIfaceStats = new NetworkStats(0L, 0);
-
-        // The same stats as above, but counts network stats per uid.
-        private NetworkStats mUidStats = new NetworkStats(0L, 0);
-
-        @Override
-        public void onRequestStatsUpdate(int token) {
-            mHandler.post(() -> pushTetherStats());
-        }
-
-        @Override
-        public void onSetAlert(long quotaBytes) {
-            mHandler.post(() -> updateAlertQuota(quotaBytes));
-        }
-
-        @Override
-        public void onSetLimit(@NonNull String iface, long quotaBytes) {
-            if (quotaBytes < QUOTA_UNLIMITED) {
-                throw new IllegalArgumentException("invalid quota value " + quotaBytes);
-            }
-
-            mHandler.post(() -> {
-                final Long curIfaceQuota = mInterfaceQuotas.get(iface);
-
-                if (null == curIfaceQuota && QUOTA_UNLIMITED == quotaBytes) return;
-
-                if (quotaBytes == QUOTA_UNLIMITED) {
-                    mInterfaceQuotas.remove(iface);
-                } else {
-                    mInterfaceQuotas.put(iface, quotaBytes);
-                }
-                maybeUpdateDataLimit(iface);
-            });
-        }
-
-        @VisibleForTesting
-        void pushTetherStats() {
-            try {
-                // The token is not used for now. See b/153606961.
-                notifyStatsUpdated(0 /* token */, mIfaceStats, mUidStats);
-
-                // Clear the accumulated tether stats delta after reported. Note that create a new
-                // empty object because NetworkStats#clear is @hide.
-                mIfaceStats = new NetworkStats(0L, 0);
-                mUidStats = new NetworkStats(0L, 0);
-            } catch (RuntimeException e) {
-                mLog.e("Cannot report network stats: ", e);
-            }
-        }
-
-        private void accumulateDiff(@NonNull NetworkStats ifaceDiff,
-                @NonNull NetworkStats uidDiff) {
-            mIfaceStats = mIfaceStats.add(ifaceDiff);
-            mUidStats = mUidStats.add(uidDiff);
-        }
-    }
-
-    private boolean isBpfEnabled() {
-        final TetheringConfiguration config = mDeps.getTetherConfig();
-        return (config != null) ? config.isBpfOffloadEnabled() : true /* default value */;
-    }
-
-    private int getInterfaceIndexFromRules(@NonNull String ifName) {
-        for (LinkedHashMap<Inet6Address, Ipv6ForwardingRule> rules : mIpv6ForwardingRules
-                .values()) {
-            for (Ipv6ForwardingRule rule : rules.values()) {
-                final int upstreamIfindex = rule.upstreamIfindex;
-                if (TextUtils.equals(ifName, mInterfaceNames.get(upstreamIfindex))) {
-                    return upstreamIfindex;
-                }
-            }
-        }
-        return 0;
-    }
-
-    private long getQuotaBytes(@NonNull String iface) {
-        final Long limit = mInterfaceQuotas.get(iface);
-        final long quotaBytes = (limit != null) ? limit : QUOTA_UNLIMITED;
-
-        return quotaBytes;
-    }
-
-    private boolean sendDataLimitToNetd(int ifIndex, long quotaBytes) {
-        if (ifIndex == 0) {
-            Log.wtf(TAG, "Invalid interface index.");
-            return false;
-        }
-
-        try {
-            mNetd.tetherOffloadSetInterfaceQuota(ifIndex, quotaBytes);
-        } catch (RemoteException | ServiceSpecificException e) {
-            mLog.e("Exception when updating quota " + quotaBytes + ": ", e);
-            return false;
-        }
-
-        return true;
-    }
-
-    // Handle the data limit update from the service which is the stats provider registered for.
-    private void maybeUpdateDataLimit(@NonNull String iface) {
-        // Set data limit only on a given upstream which has at least one rule. If we can't get
-        // an interface index for a given interface name, it means either there is no rule for
-        // a given upstream or the interface name is not an upstream which is monitored by the
-        // coordinator.
-        final int ifIndex = getInterfaceIndexFromRules(iface);
-        if (ifIndex == 0) return;
-
-        final long quotaBytes = getQuotaBytes(iface);
-        sendDataLimitToNetd(ifIndex, quotaBytes);
-    }
-
-    // Handle the data limit update while adding forwarding rules.
-    private boolean updateDataLimit(int ifIndex) {
-        final String iface = mInterfaceNames.get(ifIndex);
-        if (iface == null) {
-            mLog.e("Fail to get the interface name for index " + ifIndex);
-            return false;
-        }
-        final long quotaBytes = getQuotaBytes(iface);
-        return sendDataLimitToNetd(ifIndex, quotaBytes);
-    }
-
-    private boolean isAnyRuleOnUpstream(int upstreamIfindex) {
-        for (LinkedHashMap<Inet6Address, Ipv6ForwardingRule> rules : mIpv6ForwardingRules
-                .values()) {
-            for (Ipv6ForwardingRule rule : rules.values()) {
-                if (upstreamIfindex == rule.upstreamIfindex) return true;
-            }
-        }
-        return false;
-    }
-
-    @NonNull
-    private NetworkStats buildNetworkStats(@NonNull StatsType type, int ifIndex,
-            @NonNull final ForwardedStats diff) {
-        NetworkStats stats = new NetworkStats(0L, 0);
-        final String iface = mInterfaceNames.get(ifIndex);
-        if (iface == null) {
-            // TODO: Use Log.wtf once the coordinator owns full control of tether stats from netd.
-            // For now, netd may add the empty stats for the upstream which is not monitored by
-            // the coordinator. Silently ignore it.
-            return stats;
-        }
-        final int uid = (type == StatsType.STATS_PER_UID) ? UID_TETHERING : UID_ALL;
-        // Note that the argument 'metered', 'roaming' and 'defaultNetwork' are not recorded for
-        // network stats snapshot. See NetworkStatsRecorder#recordSnapshotLocked.
-        return stats.addEntry(new Entry(iface, uid, SET_DEFAULT, TAG_NONE, METERED_NO,
-                ROAMING_NO, DEFAULT_NETWORK_NO, diff.rxBytes, diff.rxPackets,
-                diff.txBytes, diff.txPackets, 0L /* operations */));
-    }
-
-    private void updateAlertQuota(long newQuota) {
-        if (newQuota < QUOTA_UNLIMITED) {
-            throw new IllegalArgumentException("invalid quota value " + newQuota);
-        }
-        if (mRemainingAlertQuota == newQuota) return;
-
-        mRemainingAlertQuota = newQuota;
-        if (mRemainingAlertQuota == 0) {
-            mLog.i("onAlertReached");
-            if (mStatsProvider != null) mStatsProvider.notifyAlertReached();
-        }
-    }
-
-    private void updateQuotaAndStatsFromSnapshot(
-            @NonNull final TetherStatsParcel[] tetherStatsList) {
-        long usedAlertQuota = 0;
-        for (TetherStatsParcel tetherStats : tetherStatsList) {
-            final Integer ifIndex = tetherStats.ifIndex;
-            final ForwardedStats curr = new ForwardedStats(tetherStats);
-            final ForwardedStats base = mStats.get(ifIndex);
-            final ForwardedStats diff = (base != null) ? curr.subtract(base) : curr;
-            usedAlertQuota += diff.rxBytes + diff.txBytes;
-
-            // Update the local cache for counting tether stats delta.
-            mStats.put(ifIndex, curr);
-
-            // Update the accumulated tether stats delta to the stats provider for the service
-            // querying.
-            if (mStatsProvider != null) {
-                try {
-                    mStatsProvider.accumulateDiff(
-                            buildNetworkStats(StatsType.STATS_PER_IFACE, ifIndex, diff),
-                            buildNetworkStats(StatsType.STATS_PER_UID, ifIndex, diff));
-                } catch (ArrayIndexOutOfBoundsException e) {
-                    Log.wtf(TAG, "Fail to update the accumulated stats delta for interface index "
-                            + ifIndex + " : ", e);
-                }
-            }
-        }
-
-        if (mRemainingAlertQuota > 0 && usedAlertQuota > 0) {
-            // Trim to zero if overshoot.
-            final long newQuota = Math.max(mRemainingAlertQuota - usedAlertQuota, 0);
-            updateAlertQuota(newQuota);
-        }
-
-        // TODO: Count the used limit quota for notifying data limit reached.
-    }
-
-    private void updateForwardedStatsFromNetd() {
-        final TetherStatsParcel[] tetherStatsList;
-        try {
-            // The reported tether stats are total data usage for all currently-active upstream
-            // interfaces since tethering start.
-            tetherStatsList = mNetd.tetherOffloadGetStats();
-        } catch (RemoteException | ServiceSpecificException e) {
-            mLog.e("Problem fetching tethering stats: ", e);
-            return;
-        }
-        updateQuotaAndStatsFromSnapshot(tetherStatsList);
-    }
-
-    @VisibleForTesting
-    int getPollingInterval() {
-        // The valid range of interval is DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS..max_long.
-        // Ignore the config value is less than the minimum polling interval. Note that the
-        // minimum interval definition is invoked as OffloadController#isPollingStatsNeeded does.
-        // TODO: Perhaps define a minimum polling interval constant.
-        final TetheringConfiguration config = mDeps.getTetherConfig();
-        final int configInterval = (config != null) ? config.getOffloadPollInterval() : 0;
-        return Math.max(DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS, configInterval);
-    }
-
-    private void maybeSchedulePollingStats() {
-        if (!mPollingStarted) return;
-
-        if (mHandler.hasCallbacks(mScheduledPollingTask)) {
-            mHandler.removeCallbacks(mScheduledPollingTask);
-        }
-
-        mHandler.postDelayed(mScheduledPollingTask, getPollingInterval());
-    }
-
-    // Return forwarding rule map. This is used for testing only.
-    // Note that this can be only called on handler thread.
-    @NonNull
-    @VisibleForTesting
-    final HashMap<IpServer, LinkedHashMap<Inet6Address, Ipv6ForwardingRule>>
-            getForwardingRulesForTesting() {
-        return mIpv6ForwardingRules;
-    }
-
-    // Return upstream interface name map. This is used for testing only.
-    // Note that this can be only called on handler thread.
-    @NonNull
-    @VisibleForTesting
-    final SparseArray<String> getInterfaceNamesForTesting() {
-        return mInterfaceNames;
-    }
-}
diff --git a/packages/Tethering/src/com/android/networkstack/tethering/ConnectedClientsTracker.java b/packages/Tethering/src/com/android/networkstack/tethering/ConnectedClientsTracker.java
deleted file mode 100644
index 8a96988..0000000
--- a/packages/Tethering/src/com/android/networkstack/tethering/ConnectedClientsTracker.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.networkstack.tethering;
-
-import static android.net.TetheringManager.TETHERING_WIFI;
-
-import android.net.MacAddress;
-import android.net.TetheredClient;
-import android.net.TetheredClient.AddressInfo;
-import android.net.ip.IpServer;
-import android.net.wifi.WifiClient;
-import android.os.SystemClock;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.annotation.VisibleForTesting;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Tracker for clients connected to downstreams.
- *
- * <p>This class is not thread safe, it is intended to be used only from the tethering handler
- * thread.
- */
-public class ConnectedClientsTracker {
-    private final Clock mClock;
-
-    @NonNull
-    private List<WifiClient> mLastWifiClients = Collections.emptyList();
-    @NonNull
-    private List<TetheredClient> mLastTetheredClients = Collections.emptyList();
-
-    @VisibleForTesting
-    static class Clock {
-        public long elapsedRealtime() {
-            return SystemClock.elapsedRealtime();
-        }
-    }
-
-    public ConnectedClientsTracker() {
-        this(new Clock());
-    }
-
-    @VisibleForTesting
-    ConnectedClientsTracker(Clock clock) {
-        mClock = clock;
-    }
-
-    /**
-     * Update the tracker with new connected clients.
-     *
-     * <p>The new list can be obtained through {@link #getLastTetheredClients()}.
-     * @param ipServers The IpServers used to assign addresses to clients.
-     * @param wifiClients The list of L2-connected WiFi clients. Null for no change since last
-     *                    update.
-     * @return True if the list of clients changed since the last calculation.
-     */
-    public boolean updateConnectedClients(
-            Iterable<IpServer> ipServers, @Nullable List<WifiClient> wifiClients) {
-        final long now = mClock.elapsedRealtime();
-
-        if (wifiClients != null) {
-            mLastWifiClients = wifiClients;
-        }
-        final Set<MacAddress> wifiClientMacs = getClientMacs(mLastWifiClients);
-
-        // Build the list of non-expired leases from all IpServers, grouped by mac address
-        final Map<MacAddress, TetheredClient> clientsMap = new HashMap<>();
-        for (IpServer server : ipServers) {
-            for (TetheredClient client : server.getAllLeases()) {
-                if (client.getTetheringType() == TETHERING_WIFI
-                        && !wifiClientMacs.contains(client.getMacAddress())) {
-                    // Skip leases of WiFi clients that are not (or no longer) L2-connected
-                    continue;
-                }
-                final TetheredClient prunedClient = pruneExpired(client, now);
-                if (prunedClient == null) continue; // All addresses expired
-
-                addLease(clientsMap, prunedClient);
-            }
-        }
-
-        // TODO: add IPv6 addresses from netlink
-
-        // Add connected WiFi clients that do not have any known address
-        for (MacAddress client : wifiClientMacs) {
-            if (clientsMap.containsKey(client)) continue;
-            clientsMap.put(client, new TetheredClient(
-                    client, Collections.emptyList() /* addresses */, TETHERING_WIFI));
-        }
-
-        final HashSet<TetheredClient> clients = new HashSet<>(clientsMap.values());
-        final boolean clientsChanged = clients.size() != mLastTetheredClients.size()
-                || !clients.containsAll(mLastTetheredClients);
-        mLastTetheredClients = Collections.unmodifiableList(new ArrayList<>(clients));
-        return clientsChanged;
-    }
-
-    private static void addLease(Map<MacAddress, TetheredClient> clientsMap, TetheredClient lease) {
-        final TetheredClient aggregateClient = clientsMap.getOrDefault(
-                lease.getMacAddress(), lease);
-        if (aggregateClient == lease) {
-            // This is the first lease with this mac address
-            clientsMap.put(lease.getMacAddress(), lease);
-            return;
-        }
-
-        // Only add the address info; this assumes that the tethering type is the same when the mac
-        // address is the same. If a client is connected through different tethering types with the
-        // same mac address, connected clients callbacks will report all of its addresses under only
-        // one of these tethering types. This keeps the API simple considering that such a scenario
-        // would really be a rare edge case.
-        clientsMap.put(lease.getMacAddress(), aggregateClient.addAddresses(lease));
-    }
-
-    /**
-     * Get the last list of tethered clients, as calculated in {@link #updateConnectedClients}.
-     *
-     * <p>The returned list is immutable.
-     */
-    @NonNull
-    public List<TetheredClient> getLastTetheredClients() {
-        return mLastTetheredClients;
-    }
-
-    private static boolean hasExpiredAddress(List<AddressInfo> addresses, long now) {
-        for (AddressInfo info : addresses) {
-            if (info.getExpirationTime() <= now) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    @Nullable
-    private static TetheredClient pruneExpired(TetheredClient client, long now) {
-        final List<AddressInfo> addresses = client.getAddresses();
-        if (addresses.size() == 0) return null;
-        if (!hasExpiredAddress(addresses, now)) return client;
-
-        final ArrayList<AddressInfo> newAddrs = new ArrayList<>(addresses.size() - 1);
-        for (AddressInfo info : addresses) {
-            if (info.getExpirationTime() > now) {
-                newAddrs.add(info);
-            }
-        }
-
-        if (newAddrs.size() == 0) {
-            return null;
-        }
-        return new TetheredClient(client.getMacAddress(), newAddrs, client.getTetheringType());
-    }
-
-    @NonNull
-    private static Set<MacAddress> getClientMacs(@NonNull List<WifiClient> clients) {
-        final Set<MacAddress> macs = new HashSet<>(clients.size());
-        for (WifiClient c : clients) {
-            macs.add(c.getMacAddress());
-        }
-        return macs;
-    }
-}
diff --git a/packages/Tethering/src/com/android/networkstack/tethering/EntitlementManager.java b/packages/Tethering/src/com/android/networkstack/tethering/EntitlementManager.java
deleted file mode 100644
index bb7322f..0000000
--- a/packages/Tethering/src/com/android/networkstack/tethering/EntitlementManager.java
+++ /dev/null
@@ -1,646 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.networkstack.tethering;
-
-import static android.net.TetheringConstants.EXTRA_ADD_TETHER_TYPE;
-import static android.net.TetheringConstants.EXTRA_PROVISION_CALLBACK;
-import static android.net.TetheringConstants.EXTRA_RUN_PROVISION;
-import static android.net.TetheringConstants.EXTRA_TETHER_PROVISIONING_RESPONSE;
-import static android.net.TetheringConstants.EXTRA_TETHER_SILENT_PROVISIONING_ACTION;
-import static android.net.TetheringConstants.EXTRA_TETHER_SUBID;
-import static android.net.TetheringConstants.EXTRA_TETHER_UI_PROVISIONING_APP_NAME;
-import static android.net.TetheringManager.TETHERING_BLUETOOTH;
-import static android.net.TetheringManager.TETHERING_ETHERNET;
-import static android.net.TetheringManager.TETHERING_INVALID;
-import static android.net.TetheringManager.TETHERING_USB;
-import static android.net.TetheringManager.TETHERING_WIFI;
-import static android.net.TetheringManager.TETHER_ERROR_ENTITLEMENT_UNKNOWN;
-import static android.net.TetheringManager.TETHER_ERROR_NO_ERROR;
-import static android.net.TetheringManager.TETHER_ERROR_PROVISIONING_FAILED;
-
-import android.app.AlarmManager;
-import android.app.PendingIntent;
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.net.util.SharedLog;
-import android.os.Bundle;
-import android.os.ConditionVariable;
-import android.os.Handler;
-import android.os.Parcel;
-import android.os.PersistableBundle;
-import android.os.ResultReceiver;
-import android.os.SystemClock;
-import android.os.SystemProperties;
-import android.provider.Settings;
-import android.telephony.CarrierConfigManager;
-import android.util.SparseIntArray;
-
-import com.android.internal.annotations.VisibleForTesting;
-
-import java.io.PrintWriter;
-import java.util.BitSet;
-
-/**
- * Re-check tethering provisioning for enabled downstream tether types.
- * Reference TetheringManager.TETHERING_{@code *} for each tether type.
- *
- * All methods of this class must be accessed from the thread of tethering
- * state machine.
- * @hide
- */
-public class EntitlementManager {
-    private static final String TAG = EntitlementManager.class.getSimpleName();
-    private static final boolean DBG = false;
-
-    @VisibleForTesting
-    protected static final String DISABLE_PROVISIONING_SYSPROP_KEY = "net.tethering.noprovisioning";
-    private static final String ACTION_PROVISIONING_ALARM =
-            "com.android.networkstack.tethering.PROVISIONING_RECHECK_ALARM";
-
-    private final ComponentName mSilentProvisioningService;
-    private static final int MS_PER_HOUR = 60 * 60 * 1000;
-    private static final int DUMP_TIMEOUT = 10_000;
-
-    // The BitSet is the bit map of each enabled downstream types, ex:
-    // {@link TetheringManager.TETHERING_WIFI}
-    // {@link TetheringManager.TETHERING_USB}
-    // {@link TetheringManager.TETHERING_BLUETOOTH}
-    private final BitSet mCurrentDownstreams;
-    private final BitSet mExemptedDownstreams;
-    private final Context mContext;
-    private final SharedLog mLog;
-    private final SparseIntArray mEntitlementCacheValue;
-    private final Handler mHandler;
-    // Key: TetheringManager.TETHERING_*(downstream).
-    // Value: TetheringManager.TETHER_ERROR_{NO_ERROR or PROVISION_FAILED}(provisioning result).
-    private final SparseIntArray mCurrentEntitlementResults;
-    private final Runnable mPermissionChangeCallback;
-    private PendingIntent mProvisioningRecheckAlarm;
-    private boolean mLastCellularUpstreamPermitted = true;
-    private boolean mUsingCellularAsUpstream = false;
-    private boolean mNeedReRunProvisioningUi = false;
-    private OnUiEntitlementFailedListener mListener;
-    private TetheringConfigurationFetcher mFetcher;
-
-    public EntitlementManager(Context ctx, Handler h, SharedLog log,
-            Runnable callback) {
-        mContext = ctx;
-        mLog = log.forSubComponent(TAG);
-        mCurrentDownstreams = new BitSet();
-        mExemptedDownstreams = new BitSet();
-        mCurrentEntitlementResults = new SparseIntArray();
-        mEntitlementCacheValue = new SparseIntArray();
-        mPermissionChangeCallback = callback;
-        mHandler = h;
-        mContext.registerReceiver(mReceiver, new IntentFilter(ACTION_PROVISIONING_ALARM),
-                null, mHandler);
-        mSilentProvisioningService = ComponentName.unflattenFromString(
-                mContext.getResources().getString(R.string.config_wifi_tether_enable));
-    }
-
-    public void setOnUiEntitlementFailedListener(final OnUiEntitlementFailedListener listener) {
-        mListener = listener;
-    }
-
-    /** Callback fired when UI entitlement failed. */
-    public interface OnUiEntitlementFailedListener {
-        /**
-         * Ui entitlement check fails in |downstream|.
-         *
-         * @param downstream tethering type from TetheringManager.TETHERING_{@code *}.
-         */
-        void onUiEntitlementFailed(int downstream);
-    }
-
-    public void setTetheringConfigurationFetcher(final TetheringConfigurationFetcher fetcher) {
-        mFetcher = fetcher;
-    }
-
-    /** Interface to fetch TetheringConfiguration. */
-    public interface TetheringConfigurationFetcher {
-        /**
-         * Fetch current tethering configuration. This will be called to ensure whether entitlement
-         * check is needed.
-         * @return TetheringConfiguration instance.
-         */
-        TetheringConfiguration fetchTetheringConfiguration();
-    }
-
-    /**
-     * Check if cellular upstream is permitted.
-     */
-    public boolean isCellularUpstreamPermitted() {
-        final TetheringConfiguration config = mFetcher.fetchTetheringConfiguration();
-
-        return isCellularUpstreamPermitted(config);
-    }
-
-    private boolean isCellularUpstreamPermitted(final TetheringConfiguration config) {
-        if (!isTetherProvisioningRequired(config)) return true;
-
-        // If provisioning is required and EntitlementManager doesn't know any downstreams, cellular
-        // upstream should not be enabled. Enable cellular upstream for exempted downstreams only
-        // when there is no non-exempted downstream.
-        if (mCurrentDownstreams.isEmpty()) return !mExemptedDownstreams.isEmpty();
-
-        return mCurrentEntitlementResults.indexOfValue(TETHER_ERROR_NO_ERROR) > -1;
-    }
-
-    /**
-     * Set exempted downstream type. If there is only exempted downstream type active,
-     * corresponding entitlement check will not be run and cellular upstream will be permitted
-     * by default. If a privileged app enables tethering without a provisioning check, and then
-     * another app enables tethering of the same type but does not disable the provisioning check,
-     * then the downstream immediately loses exempt status and a provisioning check is run.
-     * If any non-exempted downstream type is active, the cellular upstream will be gated by the
-     * result of entitlement check from non-exempted downstreams. If entitlement check is still
-     * in progress on non-exempt downstreams, ceullar upstream would default be disabled. When any
-     * non-exempted downstream gets positive entitlement result, ceullar upstream will be enabled.
-     */
-    public void setExemptedDownstreamType(final int type) {
-        mExemptedDownstreams.set(type, true);
-    }
-
-    /**
-     * This is called when tethering starts.
-     * Launch provisioning app if upstream is cellular.
-     *
-     * @param downstreamType tethering type from TetheringManager.TETHERING_{@code *}
-     * @param showProvisioningUi a boolean indicating whether to show the
-     *        provisioning app UI if there is one.
-     */
-    public void startProvisioningIfNeeded(int downstreamType, boolean showProvisioningUi) {
-        if (!isValidDownstreamType(downstreamType)) return;
-
-        mCurrentDownstreams.set(downstreamType, true);
-
-        mExemptedDownstreams.set(downstreamType, false);
-
-        final TetheringConfiguration config = mFetcher.fetchTetheringConfiguration();
-        if (!isTetherProvisioningRequired(config)) return;
-
-        // If upstream is not cellular, provisioning app would not be launched
-        // till upstream change to cellular.
-        if (mUsingCellularAsUpstream) {
-            if (showProvisioningUi) {
-                runUiTetherProvisioning(downstreamType, config);
-            } else {
-                runSilentTetherProvisioning(downstreamType, config);
-            }
-            mNeedReRunProvisioningUi = false;
-        } else {
-            mNeedReRunProvisioningUi |= showProvisioningUi;
-        }
-    }
-
-    /**
-     * Tell EntitlementManager that a given type of tethering has been disabled
-     *
-     * @param type tethering type from TetheringManager.TETHERING_{@code *}
-     */
-    public void stopProvisioningIfNeeded(int downstreamType) {
-        if (!isValidDownstreamType(downstreamType)) return;
-
-        mCurrentDownstreams.set(downstreamType, false);
-        // There are lurking bugs where the notion of "provisioning required" or
-        // "tethering supported" may change without without tethering being notified properly.
-        // Remove the mapping all the time no matter provisioning is required or not.
-        removeDownstreamMapping(downstreamType);
-        mExemptedDownstreams.set(downstreamType, false);
-    }
-
-    /**
-     * Notify EntitlementManager if upstream is cellular or not.
-     *
-     * @param isCellular whether tethering upstream is cellular.
-     */
-    public void notifyUpstream(boolean isCellular) {
-        if (DBG) {
-            mLog.i("notifyUpstream: " + isCellular
-                    + ", mLastCellularUpstreamPermitted: " + mLastCellularUpstreamPermitted
-                    + ", mNeedReRunProvisioningUi: " + mNeedReRunProvisioningUi);
-        }
-        mUsingCellularAsUpstream = isCellular;
-
-        if (mUsingCellularAsUpstream) {
-            final TetheringConfiguration config = mFetcher.fetchTetheringConfiguration();
-            maybeRunProvisioning(config);
-        }
-    }
-
-    /** Run provisioning if needed */
-    public void maybeRunProvisioning() {
-        final TetheringConfiguration config = mFetcher.fetchTetheringConfiguration();
-        maybeRunProvisioning(config);
-    }
-
-    private void maybeRunProvisioning(final TetheringConfiguration config) {
-        if (mCurrentDownstreams.isEmpty() || !isTetherProvisioningRequired(config)) {
-            return;
-        }
-
-        // Whenever any entitlement value changes, all downstreams will re-evaluate whether they
-        // are allowed. Therefore even if the silent check here ends in a failure and the UI later
-        // yields success, then the downstream that got a failure will re-evaluate as a result of
-        // the change and get the new correct value.
-        for (int downstream = mCurrentDownstreams.nextSetBit(0); downstream >= 0;
-                downstream = mCurrentDownstreams.nextSetBit(downstream + 1)) {
-            if (mCurrentEntitlementResults.indexOfKey(downstream) < 0) {
-                if (mNeedReRunProvisioningUi) {
-                    mNeedReRunProvisioningUi = false;
-                    runUiTetherProvisioning(downstream, config);
-                } else {
-                    runSilentTetherProvisioning(downstream, config);
-                }
-            }
-        }
-    }
-
-    /**
-     * Check if the device requires a provisioning check in order to enable tethering.
-     *
-     * @param config an object that encapsulates the various tethering configuration elements.
-     * @return a boolean - {@code true} indicating tether provisioning is required by the carrier.
-     */
-    @VisibleForTesting
-    protected boolean isTetherProvisioningRequired(final TetheringConfiguration config) {
-        if (SystemProperties.getBoolean(DISABLE_PROVISIONING_SYSPROP_KEY, false)
-                || config.provisioningApp.length == 0) {
-            return false;
-        }
-        if (carrierConfigAffirmsEntitlementCheckNotRequired(config)) {
-            return false;
-        }
-        return (config.provisioningApp.length == 2);
-    }
-
-    /**
-     * Re-check tethering provisioning for all enabled tether types.
-     * Reference TetheringManager.TETHERING_{@code *} for each tether type.
-     *
-     * @param config an object that encapsulates the various tethering configuration elements.
-     * Note: this method is only called from @{link Tethering.TetherMainSM} on the handler thread.
-     * If there are new callers from different threads, the logic should move to
-     * @{link Tethering.TetherMainSM} handler to avoid race conditions.
-     */
-    public void reevaluateSimCardProvisioning(final TetheringConfiguration config) {
-        if (DBG) mLog.i("reevaluateSimCardProvisioning");
-
-        if (!mHandler.getLooper().isCurrentThread()) {
-            // Except for test, this log should not appear in normal flow.
-            mLog.log("reevaluateSimCardProvisioning() don't run in TetherMainSM thread");
-        }
-        mEntitlementCacheValue.clear();
-        mCurrentEntitlementResults.clear();
-
-        // TODO: refine provisioning check to isTetherProvisioningRequired() ??
-        if (!config.hasMobileHotspotProvisionApp()
-                || carrierConfigAffirmsEntitlementCheckNotRequired(config)) {
-            evaluateCellularPermission(config);
-            return;
-        }
-
-        if (mUsingCellularAsUpstream) {
-            maybeRunProvisioning(config);
-        }
-    }
-
-    /**
-     * Get carrier configuration bundle.
-     * @param config an object that encapsulates the various tethering configuration elements.
-     * */
-    public PersistableBundle getCarrierConfig(final TetheringConfiguration config) {
-        final CarrierConfigManager configManager = (CarrierConfigManager) mContext
-                .getSystemService(Context.CARRIER_CONFIG_SERVICE);
-        if (configManager == null) return null;
-
-        final PersistableBundle carrierConfig = configManager.getConfigForSubId(
-                config.activeDataSubId);
-
-        if (CarrierConfigManager.isConfigForIdentifiedCarrier(carrierConfig)) {
-            return carrierConfig;
-        }
-
-        return null;
-    }
-
-    // The logic here is aimed solely at confirming that a CarrierConfig exists
-    // and affirms that entitlement checks are not required.
-    //
-    // TODO: find a better way to express this, or alter the checking process
-    // entirely so that this is more intuitive.
-    private boolean carrierConfigAffirmsEntitlementCheckNotRequired(
-            final TetheringConfiguration config) {
-        // Check carrier config for entitlement checks
-        final PersistableBundle carrierConfig = getCarrierConfig(config);
-        if (carrierConfig == null) return false;
-
-        // A CarrierConfigManager was found and it has a config.
-        final boolean isEntitlementCheckRequired = carrierConfig.getBoolean(
-                CarrierConfigManager.KEY_REQUIRE_ENTITLEMENT_CHECKS_BOOL);
-        return !isEntitlementCheckRequired;
-    }
-
-    /**
-     * Run no UI tethering provisioning check.
-     * @param type tethering type from TetheringManager.TETHERING_{@code *}
-     * @param subId default data subscription ID.
-     */
-    @VisibleForTesting
-    protected Intent runSilentTetherProvisioning(int type, final TetheringConfiguration config) {
-        if (DBG) mLog.i("runSilentTetherProvisioning: " + type);
-        // For silent provisioning, settings would stop tethering when entitlement fail.
-        ResultReceiver receiver = buildProxyReceiver(type, false/* notifyFail */, null);
-
-        Intent intent = new Intent();
-        intent.putExtra(EXTRA_ADD_TETHER_TYPE, type);
-        intent.putExtra(EXTRA_RUN_PROVISION, true);
-        intent.putExtra(EXTRA_TETHER_SILENT_PROVISIONING_ACTION, config.provisioningAppNoUi);
-        intent.putExtra(EXTRA_TETHER_PROVISIONING_RESPONSE, config.provisioningResponse);
-        intent.putExtra(EXTRA_PROVISION_CALLBACK, receiver);
-        intent.putExtra(EXTRA_TETHER_SUBID, config.activeDataSubId);
-        intent.setComponent(mSilentProvisioningService);
-        // Only admin user can change tethering and SilentTetherProvisioning don't need to
-        // show UI, it is fine to always start setting's background service as system user.
-        mContext.startService(intent);
-        return intent;
-    }
-
-    private void runUiTetherProvisioning(int type, final TetheringConfiguration config) {
-        ResultReceiver receiver = buildProxyReceiver(type, true/* notifyFail */, null);
-        runUiTetherProvisioning(type, config, receiver);
-    }
-
-    /**
-     * Run the UI-enabled tethering provisioning check.
-     * @param type tethering type from TetheringManager.TETHERING_{@code *}
-     * @param subId default data subscription ID.
-     * @param receiver to receive entitlement check result.
-     */
-    @VisibleForTesting
-    protected Intent runUiTetherProvisioning(int type, final TetheringConfiguration config,
-            ResultReceiver receiver) {
-        if (DBG) mLog.i("runUiTetherProvisioning: " + type);
-
-        Intent intent = new Intent(Settings.ACTION_TETHER_PROVISIONING_UI);
-        intent.putExtra(EXTRA_ADD_TETHER_TYPE, type);
-        intent.putExtra(EXTRA_TETHER_UI_PROVISIONING_APP_NAME, config.provisioningApp);
-        intent.putExtra(EXTRA_PROVISION_CALLBACK, receiver);
-        intent.putExtra(EXTRA_TETHER_SUBID, config.activeDataSubId);
-        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        // Only launch entitlement UI for system user. Entitlement UI should not appear for other
-        // user because only admin user is allowed to change tethering.
-        mContext.startActivity(intent);
-        return intent;
-    }
-
-    // Not needed to check if this don't run on the handler thread because it's private.
-    private void scheduleProvisioningRechecks(final TetheringConfiguration config) {
-        if (mProvisioningRecheckAlarm == null) {
-            final int period = config.provisioningCheckPeriod;
-            if (period <= 0) return;
-
-            Intent intent = new Intent(ACTION_PROVISIONING_ALARM);
-            mProvisioningRecheckAlarm = PendingIntent.getBroadcast(mContext, 0, intent, 0);
-            AlarmManager alarmManager = (AlarmManager) mContext.getSystemService(
-                    Context.ALARM_SERVICE);
-            long periodMs = period * MS_PER_HOUR;
-            long firstAlarmTime = SystemClock.elapsedRealtime() + periodMs;
-            alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME, firstAlarmTime, periodMs,
-                    mProvisioningRecheckAlarm);
-        }
-    }
-
-    private void cancelTetherProvisioningRechecks() {
-        if (mProvisioningRecheckAlarm != null) {
-            AlarmManager alarmManager = (AlarmManager) mContext.getSystemService(
-                    Context.ALARM_SERVICE);
-            alarmManager.cancel(mProvisioningRecheckAlarm);
-            mProvisioningRecheckAlarm = null;
-        }
-    }
-
-    private void evaluateCellularPermission(final TetheringConfiguration config) {
-        final boolean permitted = isCellularUpstreamPermitted(config);
-
-        if (DBG) {
-            mLog.i("Cellular permission change from " + mLastCellularUpstreamPermitted
-                    + " to " + permitted);
-        }
-
-        if (mLastCellularUpstreamPermitted != permitted) {
-            mLog.log("Cellular permission change: " + permitted);
-            mPermissionChangeCallback.run();
-        }
-        // Only schedule periodic re-check when tether is provisioned
-        // and the result is ok.
-        if (permitted && mCurrentEntitlementResults.size() > 0) {
-            scheduleProvisioningRechecks(config);
-        } else {
-            cancelTetherProvisioningRechecks();
-        }
-        mLastCellularUpstreamPermitted = permitted;
-    }
-
-    /**
-     * Add the mapping between provisioning result and tethering type.
-     * Notify UpstreamNetworkMonitor if Cellular permission changes.
-     *
-     * @param type tethering type from TetheringManager.TETHERING_{@code *}
-     * @param resultCode Provisioning result
-     */
-    protected void addDownstreamMapping(int type, int resultCode) {
-        mLog.i("addDownstreamMapping: " + type + ", result: " + resultCode
-                + " ,TetherTypeRequested: " + mCurrentDownstreams.get(type));
-        if (!mCurrentDownstreams.get(type)) return;
-
-        mCurrentEntitlementResults.put(type, resultCode);
-        final TetheringConfiguration config = mFetcher.fetchTetheringConfiguration();
-        evaluateCellularPermission(config);
-    }
-
-    /**
-     * Remove the mapping for input tethering type.
-     * @param type tethering type from TetheringManager.TETHERING_{@code *}
-     */
-    protected void removeDownstreamMapping(int type) {
-        mLog.i("removeDownstreamMapping: " + type);
-        mCurrentEntitlementResults.delete(type);
-        final TetheringConfiguration config = mFetcher.fetchTetheringConfiguration();
-        evaluateCellularPermission(config);
-    }
-
-    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            if (ACTION_PROVISIONING_ALARM.equals(intent.getAction())) {
-                mLog.log("Received provisioning alarm");
-                final TetheringConfiguration config = mFetcher.fetchTetheringConfiguration();
-                reevaluateSimCardProvisioning(config);
-            }
-        }
-    };
-
-    private static boolean isValidDownstreamType(int type) {
-        switch (type) {
-            case TETHERING_BLUETOOTH:
-            case TETHERING_ETHERNET:
-            case TETHERING_USB:
-            case TETHERING_WIFI:
-                return true;
-            default:
-                return false;
-        }
-    }
-
-    /**
-     * Dump the infromation of EntitlementManager.
-     * @param pw {@link PrintWriter} is used to print formatted
-     */
-    public void dump(PrintWriter pw) {
-        final ConditionVariable mWaiting = new ConditionVariable();
-        mHandler.post(() -> {
-            pw.print("isCellularUpstreamPermitted: ");
-            pw.println(isCellularUpstreamPermitted());
-            for (int type = mCurrentDownstreams.nextSetBit(0); type >= 0;
-                    type = mCurrentDownstreams.nextSetBit(type + 1)) {
-                pw.print("Type: ");
-                pw.print(typeString(type));
-                if (mCurrentEntitlementResults.indexOfKey(type) > -1) {
-                    pw.print(", Value: ");
-                    pw.println(errorString(mCurrentEntitlementResults.get(type)));
-                } else {
-                    pw.println(", Value: empty");
-                }
-            }
-            mWaiting.open();
-        });
-        if (!mWaiting.block(DUMP_TIMEOUT)) {
-            pw.println("... dump timed out after " + DUMP_TIMEOUT + "ms");
-        }
-        pw.print("Exempted: [");
-        for (int type = mExemptedDownstreams.nextSetBit(0); type >= 0;
-                type = mExemptedDownstreams.nextSetBit(type + 1)) {
-            pw.print(typeString(type));
-            pw.print(", ");
-        }
-        pw.println("]");
-    }
-
-    private static String typeString(int type) {
-        switch (type) {
-            case TETHERING_BLUETOOTH: return "TETHERING_BLUETOOTH";
-            case TETHERING_INVALID: return "TETHERING_INVALID";
-            case TETHERING_USB: return "TETHERING_USB";
-            case TETHERING_WIFI: return "TETHERING_WIFI";
-            default:
-                return String.format("TETHERING UNKNOWN TYPE (%d)", type);
-        }
-    }
-
-    private static String errorString(int value) {
-        switch (value) {
-            case TETHER_ERROR_ENTITLEMENT_UNKNOWN: return "TETHER_ERROR_ENTITLEMENT_UNKONWN";
-            case TETHER_ERROR_NO_ERROR: return "TETHER_ERROR_NO_ERROR";
-            case TETHER_ERROR_PROVISIONING_FAILED: return "TETHER_ERROR_PROVISIONING_FAILED";
-            default:
-                return String.format("UNKNOWN ERROR (%d)", value);
-        }
-    }
-
-    private ResultReceiver buildProxyReceiver(int type, boolean notifyFail,
-            final ResultReceiver receiver) {
-        ResultReceiver rr = new ResultReceiver(mHandler) {
-            @Override
-            protected void onReceiveResult(int resultCode, Bundle resultData) {
-                int updatedCacheValue = updateEntitlementCacheValue(type, resultCode);
-                addDownstreamMapping(type, updatedCacheValue);
-                if (updatedCacheValue == TETHER_ERROR_PROVISIONING_FAILED && notifyFail) {
-                    mListener.onUiEntitlementFailed(type);
-                }
-                if (receiver != null) receiver.send(updatedCacheValue, null);
-            }
-        };
-
-        return writeToParcel(rr);
-    }
-
-    // Instances of ResultReceiver need to be public classes for remote processes to be able
-    // to load them (otherwise, ClassNotFoundException). For private classes, this method
-    // performs a trick : round-trip parceling any instance of ResultReceiver will return a
-    // vanilla instance of ResultReceiver sharing the binder token with the original receiver.
-    // The binder token has a reference to the original instance of the private class and will
-    // still call its methods, and can be sent over. However it cannot be used for anything
-    // else than sending over a Binder call.
-    // While round-trip parceling is not great, there is currently no other way of generating
-    // a vanilla instance of ResultReceiver because all its fields are private.
-    private ResultReceiver writeToParcel(final ResultReceiver receiver) {
-        Parcel parcel = Parcel.obtain();
-        receiver.writeToParcel(parcel, 0);
-        parcel.setDataPosition(0);
-        ResultReceiver receiverForSending = ResultReceiver.CREATOR.createFromParcel(parcel);
-        parcel.recycle();
-        return receiverForSending;
-    }
-
-    /**
-     * Update the last entitlement value to internal cache
-     *
-     * @param type tethering type from TetheringManager.TETHERING_{@code *}
-     * @param resultCode last entitlement value
-     * @return the last updated entitlement value
-     */
-    private int updateEntitlementCacheValue(int type, int resultCode) {
-        if (DBG) {
-            mLog.i("updateEntitlementCacheValue: " + type + ", result: " + resultCode);
-        }
-        if (resultCode == TETHER_ERROR_NO_ERROR) {
-            mEntitlementCacheValue.put(type, resultCode);
-            return resultCode;
-        } else {
-            mEntitlementCacheValue.put(type, TETHER_ERROR_PROVISIONING_FAILED);
-            return TETHER_ERROR_PROVISIONING_FAILED;
-        }
-    }
-
-    /** Get the last value of the tethering entitlement check. */
-    public void requestLatestTetheringEntitlementResult(int downstream, ResultReceiver receiver,
-            boolean showEntitlementUi) {
-        if (!isValidDownstreamType(downstream)) {
-            receiver.send(TETHER_ERROR_ENTITLEMENT_UNKNOWN, null);
-            return;
-        }
-
-        final TetheringConfiguration config = mFetcher.fetchTetheringConfiguration();
-        if (!isTetherProvisioningRequired(config)) {
-            receiver.send(TETHER_ERROR_NO_ERROR, null);
-            return;
-        }
-
-        final int cacheValue = mEntitlementCacheValue.get(
-                downstream, TETHER_ERROR_ENTITLEMENT_UNKNOWN);
-        if (cacheValue == TETHER_ERROR_NO_ERROR || !showEntitlementUi) {
-            receiver.send(cacheValue, null);
-        } else {
-            ResultReceiver proxy = buildProxyReceiver(downstream, false/* notifyFail */, receiver);
-            runUiTetherProvisioning(downstream, config, proxy);
-        }
-    }
-}
diff --git a/packages/Tethering/src/com/android/networkstack/tethering/IPv6TetheringCoordinator.java b/packages/Tethering/src/com/android/networkstack/tethering/IPv6TetheringCoordinator.java
deleted file mode 100644
index f3dcaa2..0000000
--- a/packages/Tethering/src/com/android/networkstack/tethering/IPv6TetheringCoordinator.java
+++ /dev/null
@@ -1,328 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.networkstack.tethering;
-
-import android.net.IpPrefix;
-import android.net.LinkAddress;
-import android.net.LinkProperties;
-import android.net.Network;
-import android.net.NetworkCapabilities;
-import android.net.RouteInfo;
-import android.net.ip.IpServer;
-import android.net.util.NetworkConstants;
-import android.net.util.SharedLog;
-import android.util.Log;
-
-import java.net.Inet6Address;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.LinkedList;
-import java.util.Random;
-
-
-/**
- * IPv6 tethering is rather different from IPv4 owing to the absence of NAT.
- * This coordinator is responsible for evaluating the dedicated prefixes
- * assigned to the device and deciding how to divvy them up among downstream
- * interfaces.
- *
- * @hide
- */
-public class IPv6TetheringCoordinator {
-    private static final String TAG = IPv6TetheringCoordinator.class.getSimpleName();
-    private static final boolean DBG = false;
-    private static final boolean VDBG = false;
-
-    private static class Downstream {
-        public final IpServer ipServer;
-        public final int mode;  // IpServer.STATE_*
-        // Used to append to a ULA /48, constructing a ULA /64 for local use.
-        public final short subnetId;
-
-        Downstream(IpServer ipServer, int mode, short subnetId) {
-            this.ipServer = ipServer;
-            this.mode = mode;
-            this.subnetId = subnetId;
-        }
-    }
-
-    private final ArrayList<IpServer> mNotifyList;
-    private final SharedLog mLog;
-    // NOTE: mActiveDownstreams is a list and not a hash data structure because
-    // we keep active downstreams in arrival order.  This is done so /64s can
-    // be parceled out on a "first come, first served" basis and a /64 used by
-    // a downstream that is no longer active can be redistributed to any next
-    // waiting active downstream (again, in arrival order).
-    private final LinkedList<Downstream> mActiveDownstreams;
-    private final byte[] mUniqueLocalPrefix;
-    private short mNextSubnetId;
-    private UpstreamNetworkState mUpstreamNetworkState;
-
-    public IPv6TetheringCoordinator(ArrayList<IpServer> notifyList, SharedLog log) {
-        mNotifyList = notifyList;
-        mLog = log.forSubComponent(TAG);
-        mActiveDownstreams = new LinkedList<>();
-        mUniqueLocalPrefix = generateUniqueLocalPrefix();
-        mNextSubnetId = 0;
-    }
-
-    /** Add active downstream to ipv6 tethering candidate list. */
-    public void addActiveDownstream(IpServer downstream, int mode) {
-        if (findDownstream(downstream) == null) {
-            // Adding a new downstream appends it to the list. Adding a
-            // downstream a second time without first removing it has no effect.
-            // We never change the mode of a downstream except by first removing
-            // it and then re-adding it (with its new mode specified);
-            if (mActiveDownstreams.offer(new Downstream(downstream, mode, mNextSubnetId))) {
-                // Make sure subnet IDs are always positive. They are appended
-                // to a ULA /48 to make a ULA /64 for local use.
-                mNextSubnetId = (short) Math.max(0, mNextSubnetId + 1);
-            }
-            updateIPv6TetheringInterfaces();
-        }
-    }
-
-    /** Remove downstream from ipv6 tethering candidate list. */
-    public void removeActiveDownstream(IpServer downstream) {
-        stopIPv6TetheringOn(downstream);
-        if (mActiveDownstreams.remove(findDownstream(downstream))) {
-            updateIPv6TetheringInterfaces();
-        }
-
-        // When tethering is stopping we can reset the subnet counter.
-        if (mNotifyList.isEmpty()) {
-            if (!mActiveDownstreams.isEmpty()) {
-                Log.wtf(TAG, "Tethering notify list empty, IPv6 downstreams non-empty.");
-            }
-            mNextSubnetId = 0;
-        }
-    }
-
-    /**
-     * Call when UpstreamNetworkState may be changed.
-     * If upstream has ipv6 for tethering, update this new UpstreamNetworkState
-     * to IpServer. Otherwise stop ipv6 tethering on downstream interfaces.
-     */
-    public void updateUpstreamNetworkState(UpstreamNetworkState ns) {
-        if (VDBG) {
-            Log.d(TAG, "updateUpstreamNetworkState: " + toDebugString(ns));
-        }
-        if (TetheringInterfaceUtils.getIPv6Interface(ns) == null) {
-            stopIPv6TetheringOnAllInterfaces();
-            setUpstreamNetworkState(null);
-            return;
-        }
-
-        if (mUpstreamNetworkState != null
-                && !ns.network.equals(mUpstreamNetworkState.network)) {
-            stopIPv6TetheringOnAllInterfaces();
-        }
-
-        setUpstreamNetworkState(ns);
-        updateIPv6TetheringInterfaces();
-    }
-
-    private void stopIPv6TetheringOnAllInterfaces() {
-        for (IpServer ipServer : mNotifyList) {
-            stopIPv6TetheringOn(ipServer);
-        }
-    }
-
-    private void setUpstreamNetworkState(UpstreamNetworkState ns) {
-        if (ns == null) {
-            mUpstreamNetworkState = null;
-        } else {
-            // Make a deep copy of the parts we need.
-            mUpstreamNetworkState = new UpstreamNetworkState(
-                    new LinkProperties(ns.linkProperties),
-                    new NetworkCapabilities(ns.networkCapabilities),
-                    new Network(ns.network));
-        }
-
-        mLog.log("setUpstreamNetworkState: " + toDebugString(mUpstreamNetworkState));
-    }
-
-    private void updateIPv6TetheringInterfaces() {
-        for (IpServer ipServer : mNotifyList) {
-            final LinkProperties lp = getInterfaceIPv6LinkProperties(ipServer);
-            ipServer.sendMessage(IpServer.CMD_IPV6_TETHER_UPDATE, getTtlAdjustment(), 0, lp);
-            break;
-        }
-    }
-
-    private int getTtlAdjustment() {
-        if (mUpstreamNetworkState == null || mUpstreamNetworkState.networkCapabilities == null) {
-            return 0;
-        }
-
-        // If upstream is cellular, set the TTL in Router Advertisements to "network-set TTL" - 1
-        // for carrier requirement.
-        if (mUpstreamNetworkState.networkCapabilities.hasTransport(
-                NetworkCapabilities.TRANSPORT_CELLULAR)) {
-            return -1;
-        }
-
-        // For other non-cellular upstream, set TTL as "network-set TTL" + 1 to preventing arbitrary
-        // distinction between tethered and untethered traffic.
-        return 1;
-    }
-
-    private LinkProperties getInterfaceIPv6LinkProperties(IpServer ipServer) {
-        final Downstream ds = findDownstream(ipServer);
-        if (ds == null) return null;
-
-        if (ds.mode == IpServer.STATE_LOCAL_ONLY) {
-            // Build a Unique Locally-assigned Prefix configuration.
-            return getUniqueLocalConfig(mUniqueLocalPrefix, ds.subnetId);
-        }
-
-        // This downstream is in IpServer.STATE_TETHERED mode.
-        if (mUpstreamNetworkState == null || mUpstreamNetworkState.linkProperties == null) {
-            return null;
-        }
-
-        // NOTE: Here, in future, we would have policies to decide how to divvy
-        // up the available dedicated prefixes among downstream interfaces.
-        // At this time we have no such mechanism--we only support tethering
-        // IPv6 toward the oldest (first requested) active downstream.
-
-        final Downstream currentActive = mActiveDownstreams.peek();
-        if (currentActive != null && currentActive.ipServer == ipServer) {
-            final LinkProperties lp = getIPv6OnlyLinkProperties(
-                    mUpstreamNetworkState.linkProperties);
-            if (lp.hasIpv6DefaultRoute() && lp.hasGlobalIpv6Address()) {
-                return lp;
-            }
-        }
-
-        return null;
-    }
-
-    Downstream findDownstream(IpServer ipServer) {
-        for (Downstream ds : mActiveDownstreams) {
-            if (ds.ipServer == ipServer) return ds;
-        }
-        return null;
-    }
-
-    private static LinkProperties getIPv6OnlyLinkProperties(LinkProperties lp) {
-        final LinkProperties v6only = new LinkProperties();
-        if (lp == null) {
-            return v6only;
-        }
-
-        // NOTE: At this time we don't copy over any information about any
-        // stacked links. No current stacked link configuration has IPv6.
-
-        v6only.setInterfaceName(lp.getInterfaceName());
-
-        v6only.setMtu(lp.getMtu());
-
-        for (LinkAddress linkAddr : lp.getLinkAddresses()) {
-            if (linkAddr.isGlobalPreferred() && linkAddr.getPrefixLength() == 64) {
-                v6only.addLinkAddress(linkAddr);
-            }
-        }
-
-        for (RouteInfo routeInfo : lp.getRoutes()) {
-            final IpPrefix destination = routeInfo.getDestination();
-            if ((destination.getAddress() instanceof Inet6Address)
-                    && (destination.getPrefixLength() <= 64)) {
-                v6only.addRoute(routeInfo);
-            }
-        }
-
-        for (InetAddress dnsServer : lp.getDnsServers()) {
-            if (isIPv6GlobalAddress(dnsServer)) {
-                // For now we include ULAs.
-                v6only.addDnsServer(dnsServer);
-            }
-        }
-
-        v6only.setDomains(lp.getDomains());
-
-        return v6only;
-    }
-
-    // TODO: Delete this and switch to LinkAddress#isGlobalPreferred once we
-    // announce our own IPv6 address as DNS server.
-    private static boolean isIPv6GlobalAddress(InetAddress ip) {
-        return (ip instanceof Inet6Address)
-               && !ip.isAnyLocalAddress()
-               && !ip.isLoopbackAddress()
-               && !ip.isLinkLocalAddress()
-               && !ip.isSiteLocalAddress()
-               && !ip.isMulticastAddress();
-    }
-
-    private static LinkProperties getUniqueLocalConfig(byte[] ulp, short subnetId) {
-        final LinkProperties lp = new LinkProperties();
-
-        final IpPrefix local48 = makeUniqueLocalPrefix(ulp, (short) 0, 48);
-        lp.addRoute(new RouteInfo(local48, null, null, RouteInfo.RTN_UNICAST));
-
-        final IpPrefix local64 = makeUniqueLocalPrefix(ulp, subnetId, 64);
-        // Because this is a locally-generated ULA, we don't have an upstream
-        // address. But because the downstream IP address management code gets
-        // its prefix from the upstream's IP address, we create a fake one here.
-        lp.addLinkAddress(new LinkAddress(local64.getAddress(), 64));
-
-        lp.setMtu(NetworkConstants.ETHER_MTU);
-        return lp;
-    }
-
-    private static IpPrefix makeUniqueLocalPrefix(byte[] in6addr, short subnetId, int prefixlen) {
-        final byte[] bytes = Arrays.copyOf(in6addr, in6addr.length);
-        bytes[7] = (byte) (subnetId >> 8);
-        bytes[8] = (byte) subnetId;
-        final InetAddress addr;
-        try {
-            addr = InetAddress.getByAddress(bytes);
-        } catch (UnknownHostException e) {
-            throw new IllegalStateException("Invalid address length: " + bytes.length, e);
-        }
-        return new IpPrefix(addr, prefixlen);
-    }
-
-    // Generates a Unique Locally-assigned Prefix:
-    //
-    //     https://tools.ietf.org/html/rfc4193#section-3.1
-    //
-    // The result is a /48 that can be used for local-only communications.
-    private static byte[] generateUniqueLocalPrefix() {
-        final byte[] ulp = new byte[6];  // 6 = 48bits / 8bits/byte
-        (new Random()).nextBytes(ulp);
-
-        final byte[] in6addr = Arrays.copyOf(ulp, NetworkConstants.IPV6_ADDR_LEN);
-        in6addr[0] = (byte) 0xfd;  // fc00::/7 and L=1
-
-        return in6addr;
-    }
-
-    private static String toDebugString(UpstreamNetworkState ns) {
-        if (ns == null) {
-            return "UpstreamNetworkState{null}";
-        }
-        return ns.toString();
-    }
-
-    private static void stopIPv6TetheringOn(IpServer ipServer) {
-        ipServer.sendMessage(IpServer.CMD_IPV6_TETHER_UPDATE, 0, 0, null);
-    }
-}
diff --git a/packages/Tethering/src/com/android/networkstack/tethering/OffloadController.java b/packages/Tethering/src/com/android/networkstack/tethering/OffloadController.java
deleted file mode 100644
index 88c77b0..0000000
--- a/packages/Tethering/src/com/android/networkstack/tethering/OffloadController.java
+++ /dev/null
@@ -1,811 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.networkstack.tethering;
-
-import static android.net.NetworkStats.DEFAULT_NETWORK_NO;
-import static android.net.NetworkStats.METERED_NO;
-import static android.net.NetworkStats.ROAMING_NO;
-import static android.net.NetworkStats.SET_DEFAULT;
-import static android.net.NetworkStats.TAG_NONE;
-import static android.net.NetworkStats.UID_ALL;
-import static android.net.NetworkStats.UID_TETHERING;
-import static android.net.netstats.provider.NetworkStatsProvider.QUOTA_UNLIMITED;
-import static android.provider.Settings.Global.TETHER_OFFLOAD_DISABLED;
-
-import static com.android.networkstack.tethering.TetheringConfiguration.DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.app.usage.NetworkStatsManager;
-import android.content.ContentResolver;
-import android.net.InetAddresses;
-import android.net.IpPrefix;
-import android.net.LinkAddress;
-import android.net.LinkProperties;
-import android.net.NetworkStats;
-import android.net.NetworkStats.Entry;
-import android.net.RouteInfo;
-import android.net.netlink.ConntrackMessage;
-import android.net.netlink.NetlinkConstants;
-import android.net.netlink.NetlinkSocket;
-import android.net.netstats.provider.NetworkStatsProvider;
-import android.net.util.SharedLog;
-import android.os.Handler;
-import android.provider.Settings;
-import android.system.ErrnoException;
-import android.system.OsConstants;
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.util.IndentingPrintWriter;
-import com.android.networkstack.tethering.OffloadHardwareInterface.ForwardedStats;
-
-import java.net.Inet4Address;
-import java.net.Inet6Address;
-import java.net.InetAddress;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * A class to encapsulate the business logic of programming the tethering
- * hardware offload interface.
- *
- * @hide
- */
-public class OffloadController {
-    private static final String TAG = OffloadController.class.getSimpleName();
-    private static final boolean DBG = false;
-    private static final String ANYIP = "0.0.0.0";
-    private static final ForwardedStats EMPTY_STATS = new ForwardedStats();
-
-    @VisibleForTesting
-    enum StatsType {
-        STATS_PER_IFACE,
-        STATS_PER_UID,
-    }
-
-    private enum UpdateType { IF_NEEDED, FORCE };
-
-    private final Handler mHandler;
-    private final OffloadHardwareInterface mHwInterface;
-    private final ContentResolver mContentResolver;
-    @Nullable
-    private final OffloadTetheringStatsProvider mStatsProvider;
-    private final SharedLog mLog;
-    private final HashMap<String, LinkProperties> mDownstreams;
-    private boolean mConfigInitialized;
-    private boolean mControlInitialized;
-    private LinkProperties mUpstreamLinkProperties;
-    // The complete set of offload-exempt prefixes passed in via Tethering from
-    // all upstream and downstream sources.
-    private Set<IpPrefix> mExemptPrefixes;
-    // A strictly "smaller" set of prefixes, wherein offload-approved prefixes
-    // (e.g. downstream on-link prefixes) have been removed and replaced with
-    // prefixes representing only the locally-assigned IP addresses.
-    private Set<String> mLastLocalPrefixStrs;
-
-    // Maps upstream interface names to offloaded traffic statistics.
-    // Always contains the latest value received from the hardware for each interface, regardless of
-    // whether offload is currently running on that interface.
-    private ConcurrentHashMap<String, ForwardedStats> mForwardedStats =
-            new ConcurrentHashMap<>(16, 0.75F, 1);
-
-    // Maps upstream interface names to interface quotas.
-    // Always contains the latest value received from the framework for each interface, regardless
-    // of whether offload is currently running (or is even supported) on that interface. Only
-    // includes upstream interfaces that have a quota set.
-    private HashMap<String, Long> mInterfaceQuotas = new HashMap<>();
-
-    // Tracking remaining alert quota. Unlike limit quota is subject to interface, the alert
-    // quota is interface independent and global for tether offload. Note that this is only
-    // accessed on the handler thread and in the constructor.
-    private long mRemainingAlertQuota = QUOTA_UNLIMITED;
-    // Runnable that used to schedule the next stats poll.
-    private final Runnable mScheduledPollingTask = () -> {
-        updateStatsForCurrentUpstream();
-        maybeSchedulePollingStats();
-    };
-
-    private int mNatUpdateCallbacksReceived;
-    private int mNatUpdateNetlinkErrors;
-
-    @NonNull
-    private final Dependencies mDeps;
-
-    // TODO: Put more parameters in constructor into dependency object.
-    interface Dependencies {
-        @NonNull
-        TetheringConfiguration getTetherConfig();
-    }
-
-    public OffloadController(Handler h, OffloadHardwareInterface hwi,
-            ContentResolver contentResolver, NetworkStatsManager nsm, SharedLog log,
-            @NonNull Dependencies deps) {
-        mHandler = h;
-        mHwInterface = hwi;
-        mContentResolver = contentResolver;
-        mLog = log.forSubComponent(TAG);
-        mDownstreams = new HashMap<>();
-        mExemptPrefixes = new HashSet<>();
-        mLastLocalPrefixStrs = new HashSet<>();
-        OffloadTetheringStatsProvider provider = new OffloadTetheringStatsProvider();
-        try {
-            nsm.registerNetworkStatsProvider(getClass().getSimpleName(), provider);
-        } catch (RuntimeException e) {
-            Log.wtf(TAG, "Cannot register offload stats provider: " + e);
-            provider = null;
-        }
-        mStatsProvider = provider;
-        mDeps = deps;
-    }
-
-    /** Start hardware offload. */
-    public boolean start() {
-        if (started()) return true;
-
-        if (isOffloadDisabled()) {
-            mLog.i("tethering offload disabled");
-            return false;
-        }
-
-        if (!mConfigInitialized) {
-            mConfigInitialized = mHwInterface.initOffloadConfig();
-            if (!mConfigInitialized) {
-                mLog.i("tethering offload config not supported");
-                stop();
-                return false;
-            }
-        }
-
-        mControlInitialized = mHwInterface.initOffloadControl(
-                // OffloadHardwareInterface guarantees that these callback
-                // methods are called on the handler passed to it, which is the
-                // same as mHandler, as coordinated by the setup in Tethering.
-                new OffloadHardwareInterface.ControlCallback() {
-                    @Override
-                    public void onStarted() {
-                        if (!started()) return;
-                        mLog.log("onStarted");
-                    }
-
-                    @Override
-                    public void onStoppedError() {
-                        if (!started()) return;
-                        mLog.log("onStoppedError");
-                    }
-
-                    @Override
-                    public void onStoppedUnsupported() {
-                        if (!started()) return;
-                        mLog.log("onStoppedUnsupported");
-                        // Poll for statistics and trigger a sweep of tethering
-                        // stats by observers. This might not succeed, but it's
-                        // worth trying anyway. We need to do this because from
-                        // this point on we continue with software forwarding,
-                        // and we need to synchronize stats and limits between
-                        // software and hardware forwarding.
-                        updateStatsForAllUpstreams();
-                        if (mStatsProvider != null) mStatsProvider.pushTetherStats();
-                    }
-
-                    @Override
-                    public void onSupportAvailable() {
-                        if (!started()) return;
-                        mLog.log("onSupportAvailable");
-
-                        // [1] Poll for statistics and trigger a sweep of stats
-                        // by observers. We need to do this to ensure that any
-                        // limits set take into account any software tethering
-                        // traffic that has been happening in the meantime.
-                        updateStatsForAllUpstreams();
-                        if (mStatsProvider != null) mStatsProvider.pushTetherStats();
-                        // [2] (Re)Push all state.
-                        computeAndPushLocalPrefixes(UpdateType.FORCE);
-                        pushAllDownstreamState();
-                        pushUpstreamParameters(null);
-                    }
-
-                    @Override
-                    public void onStoppedLimitReached() {
-                        if (!started()) return;
-                        mLog.log("onStoppedLimitReached");
-
-                        // We cannot reliably determine on which interface the limit was reached,
-                        // because the HAL interface does not specify it. We cannot just use the
-                        // current upstream, because that might have changed since the time that
-                        // the HAL queued the callback.
-                        // TODO: rev the HAL so that it provides an interface name.
-
-                        updateStatsForCurrentUpstream();
-                        if (mStatsProvider != null) {
-                            mStatsProvider.pushTetherStats();
-                            // Push stats to service does not cause the service react to it
-                            // immediately. Inform the service about limit reached.
-                            mStatsProvider.notifyLimitReached();
-                        }
-                    }
-
-                    @Override
-                    public void onNatTimeoutUpdate(int proto,
-                                                   String srcAddr, int srcPort,
-                                                   String dstAddr, int dstPort) {
-                        if (!started()) return;
-                        updateNatTimeout(proto, srcAddr, srcPort, dstAddr, dstPort);
-                    }
-                });
-
-        final boolean isStarted = started();
-        if (!isStarted) {
-            mLog.i("tethering offload control not supported");
-            stop();
-        } else {
-            mLog.log("tethering offload started");
-            mNatUpdateCallbacksReceived = 0;
-            mNatUpdateNetlinkErrors = 0;
-            maybeSchedulePollingStats();
-        }
-        return isStarted;
-    }
-
-    /** Stop hardware offload. */
-    public void stop() {
-        // Completely stops tethering offload. After this method is called, it is no longer safe to
-        // call any HAL method, no callbacks from the hardware will be delivered, and any in-flight
-        // callbacks must be ignored. Offload may be started again by calling start().
-        final boolean wasStarted = started();
-        updateStatsForCurrentUpstream();
-        mUpstreamLinkProperties = null;
-        mHwInterface.stopOffloadControl();
-        mControlInitialized = false;
-        mConfigInitialized = false;
-        if (mHandler.hasCallbacks(mScheduledPollingTask)) {
-            mHandler.removeCallbacks(mScheduledPollingTask);
-        }
-        if (wasStarted) mLog.log("tethering offload stopped");
-    }
-
-    private boolean started() {
-        return mConfigInitialized && mControlInitialized;
-    }
-
-    @VisibleForTesting
-    class OffloadTetheringStatsProvider extends NetworkStatsProvider {
-        // These stats must only ever be touched on the handler thread.
-        @NonNull
-        private NetworkStats mIfaceStats = new NetworkStats(0L, 0);
-        @NonNull
-        private NetworkStats mUidStats = new NetworkStats(0L, 0);
-
-        /**
-         * A helper function that collect tether stats from local hashmap. Note that this does not
-         * invoke binder call.
-         */
-        @VisibleForTesting
-        @NonNull
-        NetworkStats getTetherStats(@NonNull StatsType how) {
-            NetworkStats stats = new NetworkStats(0L, 0);
-            final int uid = (how == StatsType.STATS_PER_UID) ? UID_TETHERING : UID_ALL;
-
-            for (final Map.Entry<String, ForwardedStats> kv : mForwardedStats.entrySet()) {
-                final ForwardedStats value = kv.getValue();
-                final Entry entry = new Entry(kv.getKey(), uid, SET_DEFAULT, TAG_NONE, METERED_NO,
-                        ROAMING_NO, DEFAULT_NETWORK_NO, value.rxBytes, 0L, value.txBytes, 0L, 0L);
-                stats = stats.addEntry(entry);
-            }
-
-            return stats;
-        }
-
-        @Override
-        public void onSetLimit(String iface, long quotaBytes) {
-            // Listen for all iface is necessary since upstream might be changed after limit
-            // is set.
-            mHandler.post(() -> {
-                final Long curIfaceQuota = mInterfaceQuotas.get(iface);
-
-                // If the quota is set to unlimited, the value set to HAL is Long.MAX_VALUE,
-                // which is ~8.4 x 10^6 TiB, no one can actually reach it. Thus, it is not
-                // useful to set it multiple times.
-                // Otherwise, the quota needs to be updated to tell HAL to re-count from now even
-                // if the quota is the same as the existing one.
-                if (null == curIfaceQuota && QUOTA_UNLIMITED == quotaBytes) return;
-
-                if (quotaBytes == QUOTA_UNLIMITED) {
-                    mInterfaceQuotas.remove(iface);
-                } else {
-                    mInterfaceQuotas.put(iface, quotaBytes);
-                }
-                maybeUpdateDataLimit(iface);
-            });
-        }
-
-        /**
-         * Push stats to service, but does not cause a force polling. Note that this can only be
-         * called on the handler thread.
-         */
-        public void pushTetherStats() {
-            // TODO: remove the accumulated stats and report the diff from HAL directly.
-            final NetworkStats ifaceDiff =
-                    getTetherStats(StatsType.STATS_PER_IFACE).subtract(mIfaceStats);
-            final NetworkStats uidDiff =
-                    getTetherStats(StatsType.STATS_PER_UID).subtract(mUidStats);
-            try {
-                notifyStatsUpdated(0 /* token */, ifaceDiff, uidDiff);
-                mIfaceStats = mIfaceStats.add(ifaceDiff);
-                mUidStats = mUidStats.add(uidDiff);
-            } catch (RuntimeException e) {
-                mLog.e("Cannot report network stats: ", e);
-            }
-        }
-
-        @Override
-        public void onRequestStatsUpdate(int token) {
-            // Do not attempt to update stats by querying the offload HAL
-            // synchronously from a different thread than the Handler thread. http://b/64771555.
-            mHandler.post(() -> {
-                updateStatsForCurrentUpstream();
-                pushTetherStats();
-            });
-        }
-
-        @Override
-        public void onSetAlert(long quotaBytes) {
-            // TODO: Ask offload HAL to notify alert without stopping traffic.
-            // Post it to handler thread since it access remaining quota bytes.
-            mHandler.post(() -> {
-                updateAlertQuota(quotaBytes);
-                maybeSchedulePollingStats();
-            });
-        }
-    }
-
-    private String currentUpstreamInterface() {
-        return (mUpstreamLinkProperties != null)
-                ? mUpstreamLinkProperties.getInterfaceName() : null;
-    }
-
-    private void maybeUpdateStats(String iface) {
-        if (TextUtils.isEmpty(iface)) {
-            return;
-        }
-
-        // Always called on the handler thread.
-        //
-        // Use get()/put() instead of updating ForwardedStats in place because we can be called
-        // concurrently with getTetherStats. In combination with the guarantees provided by
-        // ConcurrentHashMap, this ensures that getTetherStats always gets the most recent copy of
-        // the stats for each interface, and does not observe partial writes where rxBytes is
-        // updated and txBytes is not.
-        ForwardedStats diff = mHwInterface.getForwardedStats(iface);
-        final long usedAlertQuota = diff.rxBytes + diff.txBytes;
-        ForwardedStats base = mForwardedStats.get(iface);
-        if (base != null) {
-            diff.add(base);
-        }
-
-        // Update remaining alert quota if it is still positive.
-        if (mRemainingAlertQuota > 0 && usedAlertQuota > 0) {
-            // Trim to zero if overshoot.
-            final long newQuota = Math.max(mRemainingAlertQuota - usedAlertQuota, 0);
-            updateAlertQuota(newQuota);
-        }
-
-        mForwardedStats.put(iface, diff);
-        // diff is a new object, just created by getForwardedStats(). Therefore, anyone reading from
-        // mForwardedStats (i.e., any caller of getTetherStats) will see the new stats immediately.
-    }
-
-    /**
-     * Update remaining alert quota, fire the {@link NetworkStatsProvider#notifyAlertReached()}
-     * callback when it reaches zero. This can be invoked either from service setting the alert, or
-     * {@code maybeUpdateStats} when updating stats. Note that this can be only called on
-     * handler thread.
-     *
-     * @param newQuota non-negative value to indicate the new quota, or
-     *                 {@link NetworkStatsProvider#QUOTA_UNLIMITED} to indicate there is no
-     *                 quota.
-     */
-    private void updateAlertQuota(long newQuota) {
-        if (newQuota < QUOTA_UNLIMITED) {
-            throw new IllegalArgumentException("invalid quota value " + newQuota);
-        }
-        if (mRemainingAlertQuota == newQuota) return;
-
-        mRemainingAlertQuota = newQuota;
-        if (mRemainingAlertQuota == 0) {
-            mLog.i("notifyAlertReached");
-            if (mStatsProvider != null) mStatsProvider.notifyAlertReached();
-        }
-    }
-
-    /**
-     * Schedule polling if needed, this will be stopped if offload has been
-     * stopped or remaining quota reaches zero or upstream is empty.
-     * Note that this can be only called on handler thread.
-     */
-    private void maybeSchedulePollingStats() {
-        if (!isPollingStatsNeeded()) return;
-
-        if (mHandler.hasCallbacks(mScheduledPollingTask)) {
-            mHandler.removeCallbacks(mScheduledPollingTask);
-        }
-        mHandler.postDelayed(mScheduledPollingTask,
-                mDeps.getTetherConfig().getOffloadPollInterval());
-    }
-
-    private boolean isPollingStatsNeeded() {
-        return started() && mRemainingAlertQuota > 0
-                && !TextUtils.isEmpty(currentUpstreamInterface())
-                && mDeps.getTetherConfig() != null
-                && mDeps.getTetherConfig().getOffloadPollInterval()
-                >= DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS;
-    }
-
-    private boolean maybeUpdateDataLimit(String iface) {
-        // setDataLimit may only be called while offload is occurring on this upstream.
-        if (!started() || !TextUtils.equals(iface, currentUpstreamInterface())) {
-            return true;
-        }
-
-        Long limit = mInterfaceQuotas.get(iface);
-        if (limit == null) {
-            limit = Long.MAX_VALUE;
-        }
-
-        return mHwInterface.setDataLimit(iface, limit);
-    }
-
-    private void updateStatsForCurrentUpstream() {
-        maybeUpdateStats(currentUpstreamInterface());
-    }
-
-    private void updateStatsForAllUpstreams() {
-        // In practice, there should only ever be a single digit number of
-        // upstream interfaces over the lifetime of an active tethering session.
-        // Roughly speaking, imagine a very ambitious one or two of each of the
-        // following interface types: [ "rmnet_data", "wlan", "eth", "rndis" ].
-        for (Map.Entry<String, ForwardedStats> kv : mForwardedStats.entrySet()) {
-            maybeUpdateStats(kv.getKey());
-        }
-    }
-
-    /** Set current tethering upstream LinkProperties. */
-    public void setUpstreamLinkProperties(LinkProperties lp) {
-        if (!started() || Objects.equals(mUpstreamLinkProperties, lp)) return;
-
-        final String prevUpstream = currentUpstreamInterface();
-
-        mUpstreamLinkProperties = (lp != null) ? new LinkProperties(lp) : null;
-        // Make sure we record this interface in the ForwardedStats map.
-        final String iface = currentUpstreamInterface();
-        if (!TextUtils.isEmpty(iface)) mForwardedStats.putIfAbsent(iface, EMPTY_STATS);
-
-        maybeSchedulePollingStats();
-
-        // TODO: examine return code and decide what to do if programming
-        // upstream parameters fails (probably just wait for a subsequent
-        // onOffloadEvent() callback to tell us offload is available again and
-        // then reapply all state).
-        computeAndPushLocalPrefixes(UpdateType.IF_NEEDED);
-        pushUpstreamParameters(prevUpstream);
-    }
-
-    /** Set local prefixes. */
-    public void setLocalPrefixes(Set<IpPrefix> localPrefixes) {
-        mExemptPrefixes = localPrefixes;
-
-        if (!started()) return;
-        computeAndPushLocalPrefixes(UpdateType.IF_NEEDED);
-    }
-
-    /** Update current downstream LinkProperties. */
-    public void notifyDownstreamLinkProperties(LinkProperties lp) {
-        final String ifname = lp.getInterfaceName();
-        final LinkProperties oldLp = mDownstreams.put(ifname, new LinkProperties(lp));
-        if (Objects.equals(oldLp, lp)) return;
-
-        if (!started()) return;
-        pushDownstreamState(oldLp, lp);
-    }
-
-    private void pushDownstreamState(LinkProperties oldLp, LinkProperties newLp) {
-        final String ifname = newLp.getInterfaceName();
-        final List<RouteInfo> oldRoutes =
-                (oldLp != null) ? oldLp.getRoutes() : Collections.EMPTY_LIST;
-        final List<RouteInfo> newRoutes = newLp.getRoutes();
-
-        // For each old route, if not in new routes: remove.
-        for (RouteInfo ri : oldRoutes) {
-            if (shouldIgnoreDownstreamRoute(ri)) continue;
-            if (!newRoutes.contains(ri)) {
-                mHwInterface.removeDownstreamPrefix(ifname, ri.getDestination().toString());
-            }
-        }
-
-        // For each new route, if not in old routes: add.
-        for (RouteInfo ri : newRoutes) {
-            if (shouldIgnoreDownstreamRoute(ri)) continue;
-            if (!oldRoutes.contains(ri)) {
-                mHwInterface.addDownstreamPrefix(ifname, ri.getDestination().toString());
-            }
-        }
-    }
-
-    private void pushAllDownstreamState() {
-        for (LinkProperties lp : mDownstreams.values()) {
-            pushDownstreamState(null, lp);
-        }
-    }
-
-    /** Remove downstream interface from offload hardware. */
-    public void removeDownstreamInterface(String ifname) {
-        final LinkProperties lp = mDownstreams.remove(ifname);
-        if (lp == null) return;
-
-        if (!started()) return;
-
-        for (RouteInfo route : lp.getRoutes()) {
-            if (shouldIgnoreDownstreamRoute(route)) continue;
-            mHwInterface.removeDownstreamPrefix(ifname, route.getDestination().toString());
-        }
-    }
-
-    private boolean isOffloadDisabled() {
-        final int defaultDisposition = mHwInterface.getDefaultTetherOffloadDisabled();
-        return (Settings.Global.getInt(
-                mContentResolver, TETHER_OFFLOAD_DISABLED, defaultDisposition) != 0);
-    }
-
-    private boolean pushUpstreamParameters(String prevUpstream) {
-        final String iface = currentUpstreamInterface();
-
-        if (TextUtils.isEmpty(iface)) {
-            final boolean rval = mHwInterface.setUpstreamParameters("", ANYIP, ANYIP, null);
-            // Update stats after we've told the hardware to stop forwarding so
-            // we don't miss packets.
-            maybeUpdateStats(prevUpstream);
-            return rval;
-        }
-
-        // A stacked interface cannot be an upstream for hardware offload.
-        // Consequently, we examine only the primary interface name, look at
-        // getAddresses() rather than getAllAddresses(), and check getRoutes()
-        // rather than getAllRoutes().
-        final ArrayList<String> v6gateways = new ArrayList<>();
-        String v4addr = null;
-        String v4gateway = null;
-
-        for (InetAddress ip : mUpstreamLinkProperties.getAddresses()) {
-            if (ip instanceof Inet4Address) {
-                v4addr = ip.getHostAddress();
-                break;
-            }
-        }
-
-        // Find the gateway addresses of all default routes of either address family.
-        for (RouteInfo ri : mUpstreamLinkProperties.getRoutes()) {
-            if (!ri.hasGateway()) continue;
-
-            final String gateway = ri.getGateway().getHostAddress();
-            final InetAddress address = ri.getDestination().getAddress();
-            if (ri.isDefaultRoute() && address instanceof Inet4Address) {
-                v4gateway = gateway;
-            } else if (ri.isDefaultRoute() && address instanceof Inet6Address) {
-                v6gateways.add(gateway);
-            }
-        }
-
-        boolean success = mHwInterface.setUpstreamParameters(
-                iface, v4addr, v4gateway, (v6gateways.isEmpty() ? null : v6gateways));
-
-        if (!success) {
-            return success;
-        }
-
-        // Update stats after we've told the hardware to change routing so we don't miss packets.
-        maybeUpdateStats(prevUpstream);
-
-        // Data limits can only be set once offload is running on the upstream.
-        success = maybeUpdateDataLimit(iface);
-        if (!success) {
-            // If we failed to set a data limit, don't use this upstream, because we don't want to
-            // blow through the data limit that we were told to apply.
-            mLog.log("Setting data limit for " + iface + " failed, disabling offload.");
-            stop();
-        }
-
-        return success;
-    }
-
-    private boolean computeAndPushLocalPrefixes(UpdateType how) {
-        final boolean force = (how == UpdateType.FORCE);
-        final Set<String> localPrefixStrs = computeLocalPrefixStrings(
-                mExemptPrefixes, mUpstreamLinkProperties);
-        if (!force && mLastLocalPrefixStrs.equals(localPrefixStrs)) return true;
-
-        mLastLocalPrefixStrs = localPrefixStrs;
-        return mHwInterface.setLocalPrefixes(new ArrayList<>(localPrefixStrs));
-    }
-
-    // TODO: Factor in downstream LinkProperties once that information is available.
-    private static Set<String> computeLocalPrefixStrings(
-            Set<IpPrefix> localPrefixes, LinkProperties upstreamLinkProperties) {
-        // Create an editable copy.
-        final Set<IpPrefix> prefixSet = new HashSet<>(localPrefixes);
-
-        // TODO: If a downstream interface (not currently passed in) is reusing
-        // the /64 of the upstream (64share) then:
-        //
-        //     [a] remove that /64 from the local prefixes
-        //     [b] add in /128s for IP addresses on the downstream interface
-        //     [c] add in /128s for IP addresses on the upstream interface
-        //
-        // Until downstream information is available here, simply add /128s from
-        // the upstream network; they'll just be redundant with their /64.
-        if (upstreamLinkProperties != null) {
-            for (LinkAddress linkAddr : upstreamLinkProperties.getLinkAddresses()) {
-                if (!linkAddr.isGlobalPreferred()) continue;
-                final InetAddress ip = linkAddr.getAddress();
-                if (!(ip instanceof Inet6Address)) continue;
-                prefixSet.add(new IpPrefix(ip, 128));
-            }
-        }
-
-        final HashSet<String> localPrefixStrs = new HashSet<>();
-        for (IpPrefix pfx : prefixSet) localPrefixStrs.add(pfx.toString());
-        return localPrefixStrs;
-    }
-
-    private static boolean shouldIgnoreDownstreamRoute(RouteInfo route) {
-        // Ignore any link-local routes.
-        final IpPrefix destination = route.getDestination();
-        final LinkAddress linkAddr = new LinkAddress(destination.getAddress(),
-                destination.getPrefixLength());
-        if (!linkAddr.isGlobalPreferred()) return true;
-
-        return false;
-    }
-
-    /** Dump information. */
-    public void dump(IndentingPrintWriter pw) {
-        if (isOffloadDisabled()) {
-            pw.println("Offload disabled");
-            return;
-        }
-        final boolean isStarted = started();
-        pw.println("Offload HALs " + (isStarted ? "started" : "not started"));
-        LinkProperties lp = mUpstreamLinkProperties;
-        String upstream = (lp != null) ? lp.getInterfaceName() : null;
-        pw.println("Current upstream: " + upstream);
-        pw.println("Exempt prefixes: " + mLastLocalPrefixStrs);
-        pw.println("NAT timeout update callbacks received during the "
-                + (isStarted ? "current" : "last")
-                + " offload session: "
-                + mNatUpdateCallbacksReceived);
-        pw.println("NAT timeout update netlink errors during the "
-                + (isStarted ? "current" : "last")
-                + " offload session: "
-                + mNatUpdateNetlinkErrors);
-    }
-
-    private void updateNatTimeout(
-            int proto, String srcAddr, int srcPort, String dstAddr, int dstPort) {
-        final String protoName = protoNameFor(proto);
-        if (protoName == null) {
-            mLog.e("Unknown NAT update callback protocol: " + proto);
-            return;
-        }
-
-        final Inet4Address src = parseIPv4Address(srcAddr);
-        if (src == null) {
-            mLog.e("Failed to parse IPv4 address: " + srcAddr);
-            return;
-        }
-
-        if (!isValidUdpOrTcpPort(srcPort)) {
-            mLog.e("Invalid src port: " + srcPort);
-            return;
-        }
-
-        final Inet4Address dst = parseIPv4Address(dstAddr);
-        if (dst == null) {
-            mLog.e("Failed to parse IPv4 address: " + dstAddr);
-            return;
-        }
-
-        if (!isValidUdpOrTcpPort(dstPort)) {
-            mLog.e("Invalid dst port: " + dstPort);
-            return;
-        }
-
-        mNatUpdateCallbacksReceived++;
-        final String natDescription = String.format("%s (%s, %s) -> (%s, %s)",
-                protoName, srcAddr, srcPort, dstAddr, dstPort);
-        if (DBG) {
-            mLog.log("NAT timeout update: " + natDescription);
-        }
-
-        final int timeoutSec = connectionTimeoutUpdateSecondsFor(proto);
-        final byte[] msg = ConntrackMessage.newIPv4TimeoutUpdateRequest(
-                proto, src, srcPort, dst, dstPort, timeoutSec);
-
-        try {
-            NetlinkSocket.sendOneShotKernelMessage(OsConstants.NETLINK_NETFILTER, msg);
-        } catch (ErrnoException e) {
-            mNatUpdateNetlinkErrors++;
-            mLog.e("Error updating NAT conntrack entry >" + natDescription + "<: " + e
-                    + ", msg: " + NetlinkConstants.hexify(msg));
-            mLog.log("NAT timeout update callbacks received: " + mNatUpdateCallbacksReceived);
-            mLog.log("NAT timeout update netlink errors: " + mNatUpdateNetlinkErrors);
-        }
-    }
-
-    private static Inet4Address parseIPv4Address(String addrString) {
-        try {
-            final InetAddress ip = InetAddresses.parseNumericAddress(addrString);
-            // TODO: Consider other sanitization steps here, including perhaps:
-            //           not eql to 0.0.0.0
-            //           not within 169.254.0.0/16
-            //           not within ::ffff:0.0.0.0/96
-            //           not within ::/96
-            // et cetera.
-            if (ip instanceof Inet4Address) {
-                return (Inet4Address) ip;
-            }
-        } catch (IllegalArgumentException iae) { }
-        return null;
-    }
-
-    private static String protoNameFor(int proto) {
-        // OsConstants values are not constant expressions; no switch statement.
-        if (proto == OsConstants.IPPROTO_UDP) {
-            return "UDP";
-        } else if (proto == OsConstants.IPPROTO_TCP) {
-            return "TCP";
-        }
-        return null;
-    }
-
-    private static int connectionTimeoutUpdateSecondsFor(int proto) {
-        // TODO: Replace this with more thoughtful work, perhaps reading from
-        // and maybe writing to any required
-        //
-        //     /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_*
-        //     /proc/sys/net/netfilter/nf_conntrack_udp_timeout{,_stream}
-        //
-        // entries.  TBD.
-        if (proto == OsConstants.IPPROTO_TCP) {
-            // Cf. /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established
-            return 432000;
-        } else {
-            // Cf. /proc/sys/net/netfilter/nf_conntrack_udp_timeout_stream
-            return 180;
-        }
-    }
-
-    private static boolean isValidUdpOrTcpPort(int port) {
-        return port > 0 && port < 65536;
-    }
-}
diff --git a/packages/Tethering/src/com/android/networkstack/tethering/OffloadHardwareInterface.java b/packages/Tethering/src/com/android/networkstack/tethering/OffloadHardwareInterface.java
deleted file mode 100644
index 33b9d00..0000000
--- a/packages/Tethering/src/com/android/networkstack/tethering/OffloadHardwareInterface.java
+++ /dev/null
@@ -1,564 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.networkstack.tethering;
-
-import static android.net.netlink.StructNlMsgHdr.NLM_F_DUMP;
-import static android.net.netlink.StructNlMsgHdr.NLM_F_REQUEST;
-import static android.net.util.TetheringUtils.uint16;
-
-import android.annotation.NonNull;
-import android.hardware.tetheroffload.config.V1_0.IOffloadConfig;
-import android.hardware.tetheroffload.control.V1_0.IOffloadControl;
-import android.hardware.tetheroffload.control.V1_0.ITetheringOffloadCallback;
-import android.hardware.tetheroffload.control.V1_0.NatTimeoutUpdate;
-import android.hardware.tetheroffload.control.V1_0.NetworkProtocol;
-import android.hardware.tetheroffload.control.V1_0.OffloadCallbackEvent;
-import android.net.netlink.NetlinkSocket;
-import android.net.netlink.StructNlMsgHdr;
-import android.net.util.SharedLog;
-import android.net.util.SocketUtils;
-import android.os.Handler;
-import android.os.NativeHandle;
-import android.os.RemoteException;
-import android.system.ErrnoException;
-import android.system.Os;
-import android.system.OsConstants;
-
-import com.android.internal.annotations.VisibleForTesting;
-
-import java.io.FileDescriptor;
-import java.io.InterruptedIOException;
-import java.io.IOException;
-import java.net.SocketAddress;
-import java.net.SocketException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.NoSuchElementException;
-
-
-/**
- * Capture tethering dependencies, for injection.
- *
- * @hide
- */
-public class OffloadHardwareInterface {
-    private static final String TAG = OffloadHardwareInterface.class.getSimpleName();
-    private static final String YIELDS = " -> ";
-    // Change this value to control whether tether offload is enabled or
-    // disabled by default in the absence of an explicit Settings value.
-    // See accompanying unittest to distinguish 0 from non-0 values.
-    private static final int DEFAULT_TETHER_OFFLOAD_DISABLED = 0;
-    private static final String NO_INTERFACE_NAME = "";
-    private static final String NO_IPV4_ADDRESS = "";
-    private static final String NO_IPV4_GATEWAY = "";
-    // Reference kernel/uapi/linux/netfilter/nfnetlink_compat.h
-    private static final int NF_NETLINK_CONNTRACK_NEW = 1;
-    private static final int NF_NETLINK_CONNTRACK_UPDATE = 2;
-    private static final int NF_NETLINK_CONNTRACK_DESTROY = 4;
-    // Reference libnetfilter_conntrack/linux_nfnetlink_conntrack.h
-    public static final short NFNL_SUBSYS_CTNETLINK = 1;
-    public static final short IPCTNL_MSG_CT_GET = 1;
-
-    private final long NETLINK_MESSAGE_TIMEOUT_MS = 500;
-
-    private final Handler mHandler;
-    private final SharedLog mLog;
-    private final Dependencies mDeps;
-    private IOffloadControl mOffloadControl;
-    private TetheringOffloadCallback mTetheringOffloadCallback;
-    private ControlCallback mControlCallback;
-
-    /** The callback to notify status of offload management process. */
-    public static class ControlCallback {
-        /** Offload started. */
-        public void onStarted() {}
-        /**
-         * Offload stopped because an error has occurred in lower layer.
-         */
-        public void onStoppedError() {}
-        /**
-         * Offload stopped because the device has moved to a bearer on which hardware offload is
-         * not supported. Subsequent calls to setUpstreamParameters and add/removeDownstream will
-         * likely fail and cannot be presumed to be saved inside of the hardware management process.
-         * Upon receiving #onSupportAvailable(), the caller should reprogram the hardware to begin
-         * offload again.
-         */
-        public void onStoppedUnsupported() {}
-        /** Indicate that offload is able to proivde support for this time. */
-        public void onSupportAvailable() {}
-        /** Offload stopped because of usage limit reached. */
-        public void onStoppedLimitReached() {}
-
-        /** Indicate to update NAT timeout. */
-        public void onNatTimeoutUpdate(int proto,
-                                       String srcAddr, int srcPort,
-                                       String dstAddr, int dstPort) {}
-    }
-
-    /** The object which records Tx/Rx forwarded bytes. */
-    public static class ForwardedStats {
-        public long rxBytes;
-        public long txBytes;
-
-        public ForwardedStats() {
-            rxBytes = 0;
-            txBytes = 0;
-        }
-
-        @VisibleForTesting
-        public ForwardedStats(long rxBytes, long txBytes) {
-            this.rxBytes = rxBytes;
-            this.txBytes = txBytes;
-        }
-
-        /** Add Tx/Rx bytes. */
-        public void add(ForwardedStats other) {
-            rxBytes += other.rxBytes;
-            txBytes += other.txBytes;
-        }
-
-        /** Returns the string representation of this object. */
-        public String toString() {
-            return String.format("rx:%s tx:%s", rxBytes, txBytes);
-        }
-    }
-
-    public OffloadHardwareInterface(Handler h, SharedLog log) {
-        this(h, log, new Dependencies(log));
-    }
-
-    OffloadHardwareInterface(Handler h, SharedLog log, Dependencies deps) {
-        mHandler = h;
-        mLog = log.forSubComponent(TAG);
-        mDeps = deps;
-    }
-
-    /** Capture OffloadHardwareInterface dependencies, for injection. */
-    static class Dependencies {
-        private final SharedLog mLog;
-
-        Dependencies(SharedLog log) {
-            mLog = log;
-        }
-
-        public IOffloadConfig getOffloadConfig() {
-            try {
-                return IOffloadConfig.getService(true /*retry*/);
-            } catch (RemoteException | NoSuchElementException e) {
-                mLog.e("getIOffloadConfig error " + e);
-                return null;
-            }
-        }
-
-        public IOffloadControl getOffloadControl() {
-            try {
-                return IOffloadControl.getService(true /*retry*/);
-            } catch (RemoteException | NoSuchElementException e) {
-                mLog.e("tethering offload control not supported: " + e);
-                return null;
-            }
-        }
-
-        public NativeHandle createConntrackSocket(final int groups) {
-            final FileDescriptor fd;
-            try {
-                fd = NetlinkSocket.forProto(OsConstants.NETLINK_NETFILTER);
-            } catch (ErrnoException e) {
-                mLog.e("Unable to create conntrack socket " + e);
-                return null;
-            }
-
-            final SocketAddress sockAddr = SocketUtils.makeNetlinkSocketAddress(0, groups);
-            try {
-                Os.bind(fd, sockAddr);
-            } catch (ErrnoException | SocketException e) {
-                mLog.e("Unable to bind conntrack socket for groups " + groups + " error: " + e);
-                try {
-                    SocketUtils.closeSocket(fd);
-                } catch (IOException ie) {
-                    // Nothing we can do here
-                }
-                return null;
-            }
-            try {
-                Os.connect(fd, sockAddr);
-            } catch (ErrnoException | SocketException e) {
-                mLog.e("connect to kernel fail for groups " + groups + " error: " + e);
-                try {
-                    SocketUtils.closeSocket(fd);
-                } catch (IOException ie) {
-                    // Nothing we can do here
-                }
-                return null;
-            }
-
-            return new NativeHandle(fd, true);
-        }
-    }
-
-    /** Get default value indicating whether offload is supported. */
-    public int getDefaultTetherOffloadDisabled() {
-        return DEFAULT_TETHER_OFFLOAD_DISABLED;
-    }
-
-    /**
-     * Offload management process need to know conntrack rules to support NAT, but it may not have
-     * permission to create netlink netfilter sockets. Create two netlink netfilter sockets and
-     * share them with offload management process.
-     */
-    public boolean initOffloadConfig() {
-        final IOffloadConfig offloadConfig = mDeps.getOffloadConfig();
-        if (offloadConfig == null) {
-            mLog.e("Could not find IOffloadConfig service");
-            return false;
-        }
-        // Per the IConfigOffload definition:
-        //
-        // h1    provides a file descriptor bound to the following netlink groups
-        //       (NF_NETLINK_CONNTRACK_NEW | NF_NETLINK_CONNTRACK_DESTROY).
-        //
-        // h2    provides a file descriptor bound to the following netlink groups
-        //       (NF_NETLINK_CONNTRACK_UPDATE | NF_NETLINK_CONNTRACK_DESTROY).
-        final NativeHandle h1 = mDeps.createConntrackSocket(
-                NF_NETLINK_CONNTRACK_NEW | NF_NETLINK_CONNTRACK_DESTROY);
-        if (h1 == null) return false;
-
-        sendNetlinkMessage(h1, (short) ((NFNL_SUBSYS_CTNETLINK << 8) | IPCTNL_MSG_CT_GET),
-                           (short) (NLM_F_REQUEST | NLM_F_DUMP));
-
-        final NativeHandle h2 = mDeps.createConntrackSocket(
-                NF_NETLINK_CONNTRACK_UPDATE | NF_NETLINK_CONNTRACK_DESTROY);
-        if (h2 == null) {
-            closeFdInNativeHandle(h1);
-            return false;
-        }
-
-        final CbResults results = new CbResults();
-        try {
-            offloadConfig.setHandles(h1, h2,
-                    (boolean success, String errMsg) -> {
-                        results.mSuccess = success;
-                        results.mErrMsg = errMsg;
-                    });
-        } catch (RemoteException e) {
-            record("initOffloadConfig, setHandles fail", e);
-            return false;
-        }
-        // Explicitly close FDs.
-        closeFdInNativeHandle(h1);
-        closeFdInNativeHandle(h2);
-
-        record("initOffloadConfig, setHandles results:", results);
-        return results.mSuccess;
-    }
-
-    @VisibleForTesting
-    public void sendNetlinkMessage(@NonNull NativeHandle handle, short type, short flags) {
-        final int length = StructNlMsgHdr.STRUCT_SIZE;
-        final byte[] msg = new byte[length];
-        final StructNlMsgHdr nlh = new StructNlMsgHdr();
-        final ByteBuffer byteBuffer = ByteBuffer.wrap(msg);
-        nlh.nlmsg_len = length;
-        nlh.nlmsg_type = type;
-        nlh.nlmsg_flags = flags;
-        nlh.nlmsg_seq = 1;
-        nlh.pack(byteBuffer);
-        try {
-            NetlinkSocket.sendMessage(handle.getFileDescriptor(), msg, 0 /* offset */, length,
-                                      NETLINK_MESSAGE_TIMEOUT_MS);
-        } catch (ErrnoException | InterruptedIOException e) {
-            mLog.e("Unable to send netfilter message, error: " + e);
-        }
-    }
-
-    private void closeFdInNativeHandle(final NativeHandle h) {
-        try {
-            h.close();
-        } catch (IOException | IllegalStateException e) {
-            // IllegalStateException means fd is already closed, do nothing here.
-            // Also nothing we can do if IOException.
-        }
-    }
-
-    /** Initialize the tethering offload HAL. */
-    public boolean initOffloadControl(ControlCallback controlCb) {
-        mControlCallback = controlCb;
-
-        if (mOffloadControl == null) {
-            mOffloadControl = mDeps.getOffloadControl();
-            if (mOffloadControl == null) {
-                mLog.e("tethering IOffloadControl.getService() returned null");
-                return false;
-            }
-        }
-
-        final String logmsg = String.format("initOffloadControl(%s)",
-                (controlCb == null) ? "null"
-                        : "0x" + Integer.toHexString(System.identityHashCode(controlCb)));
-
-        mTetheringOffloadCallback = new TetheringOffloadCallback(mHandler, mControlCallback, mLog);
-        final CbResults results = new CbResults();
-        try {
-            mOffloadControl.initOffload(
-                    mTetheringOffloadCallback,
-                    (boolean success, String errMsg) -> {
-                        results.mSuccess = success;
-                        results.mErrMsg = errMsg;
-                    });
-        } catch (RemoteException e) {
-            record(logmsg, e);
-            return false;
-        }
-
-        record(logmsg, results);
-        return results.mSuccess;
-    }
-
-    /** Stop IOffloadControl. */
-    public void stopOffloadControl() {
-        if (mOffloadControl != null) {
-            try {
-                mOffloadControl.stopOffload(
-                        (boolean success, String errMsg) -> {
-                            if (!success) mLog.e("stopOffload failed: " + errMsg);
-                        });
-            } catch (RemoteException e) {
-                mLog.e("failed to stopOffload: " + e);
-            }
-        }
-        mOffloadControl = null;
-        mTetheringOffloadCallback = null;
-        mControlCallback = null;
-        mLog.log("stopOffloadControl()");
-    }
-
-    /** Get Tx/Rx usage from last query. */
-    public ForwardedStats getForwardedStats(String upstream) {
-        final String logmsg = String.format("getForwardedStats(%s)",  upstream);
-
-        final ForwardedStats stats = new ForwardedStats();
-        try {
-            mOffloadControl.getForwardedStats(
-                    upstream,
-                    (long rxBytes, long txBytes) -> {
-                        stats.rxBytes = (rxBytes > 0) ? rxBytes : 0;
-                        stats.txBytes = (txBytes > 0) ? txBytes : 0;
-                    });
-        } catch (RemoteException e) {
-            record(logmsg, e);
-            return stats;
-        }
-
-        return stats;
-    }
-
-    /** Set local prefixes to offload management process. */
-    public boolean setLocalPrefixes(ArrayList<String> localPrefixes) {
-        final String logmsg = String.format("setLocalPrefixes([%s])",
-                String.join(",", localPrefixes));
-
-        final CbResults results = new CbResults();
-        try {
-            mOffloadControl.setLocalPrefixes(localPrefixes,
-                    (boolean success, String errMsg) -> {
-                        results.mSuccess = success;
-                        results.mErrMsg = errMsg;
-                    });
-        } catch (RemoteException e) {
-            record(logmsg, e);
-            return false;
-        }
-
-        record(logmsg, results);
-        return results.mSuccess;
-    }
-
-    /** Set data limit value to offload management process. */
-    public boolean setDataLimit(String iface, long limit) {
-
-        final String logmsg = String.format("setDataLimit(%s, %d)", iface, limit);
-
-        final CbResults results = new CbResults();
-        try {
-            mOffloadControl.setDataLimit(
-                    iface, limit,
-                    (boolean success, String errMsg) -> {
-                        results.mSuccess = success;
-                        results.mErrMsg = errMsg;
-                    });
-        } catch (RemoteException e) {
-            record(logmsg, e);
-            return false;
-        }
-
-        record(logmsg, results);
-        return results.mSuccess;
-    }
-
-    /** Set upstream parameters to offload management process. */
-    public boolean setUpstreamParameters(
-            String iface, String v4addr, String v4gateway, ArrayList<String> v6gws) {
-        iface = (iface != null) ? iface : NO_INTERFACE_NAME;
-        v4addr = (v4addr != null) ? v4addr : NO_IPV4_ADDRESS;
-        v4gateway = (v4gateway != null) ? v4gateway : NO_IPV4_GATEWAY;
-        v6gws = (v6gws != null) ? v6gws : new ArrayList<>();
-
-        final String logmsg = String.format("setUpstreamParameters(%s, %s, %s, [%s])",
-                iface, v4addr, v4gateway, String.join(",", v6gws));
-
-        final CbResults results = new CbResults();
-        try {
-            mOffloadControl.setUpstreamParameters(
-                    iface, v4addr, v4gateway, v6gws,
-                    (boolean success, String errMsg) -> {
-                        results.mSuccess = success;
-                        results.mErrMsg = errMsg;
-                    });
-        } catch (RemoteException e) {
-            record(logmsg, e);
-            return false;
-        }
-
-        record(logmsg, results);
-        return results.mSuccess;
-    }
-
-    /** Add downstream prefix to offload management process. */
-    public boolean addDownstreamPrefix(String ifname, String prefix) {
-        final String logmsg = String.format("addDownstreamPrefix(%s, %s)", ifname, prefix);
-
-        final CbResults results = new CbResults();
-        try {
-            mOffloadControl.addDownstream(ifname, prefix,
-                    (boolean success, String errMsg) -> {
-                        results.mSuccess = success;
-                        results.mErrMsg = errMsg;
-                    });
-        } catch (RemoteException e) {
-            record(logmsg, e);
-            return false;
-        }
-
-        record(logmsg, results);
-        return results.mSuccess;
-    }
-
-    /** Remove downstream prefix from offload management process. */
-    public boolean removeDownstreamPrefix(String ifname, String prefix) {
-        final String logmsg = String.format("removeDownstreamPrefix(%s, %s)", ifname, prefix);
-
-        final CbResults results = new CbResults();
-        try {
-            mOffloadControl.removeDownstream(ifname, prefix,
-                    (boolean success, String errMsg) -> {
-                        results.mSuccess = success;
-                        results.mErrMsg = errMsg;
-                    });
-        } catch (RemoteException e) {
-            record(logmsg, e);
-            return false;
-        }
-
-        record(logmsg, results);
-        return results.mSuccess;
-    }
-
-    private void record(String msg, Throwable t) {
-        mLog.e(msg + YIELDS + "exception: " + t);
-    }
-
-    private void record(String msg, CbResults results) {
-        final String logmsg = msg + YIELDS + results;
-        if (!results.mSuccess) {
-            mLog.e(logmsg);
-        } else {
-            mLog.log(logmsg);
-        }
-    }
-
-    private static class TetheringOffloadCallback extends ITetheringOffloadCallback.Stub {
-        public final Handler handler;
-        public final ControlCallback controlCb;
-        public final SharedLog log;
-
-        TetheringOffloadCallback(Handler h, ControlCallback cb, SharedLog sharedLog) {
-            handler = h;
-            controlCb = cb;
-            log = sharedLog;
-        }
-
-        @Override
-        public void onEvent(int event) {
-            handler.post(() -> {
-                switch (event) {
-                    case OffloadCallbackEvent.OFFLOAD_STARTED:
-                        controlCb.onStarted();
-                        break;
-                    case OffloadCallbackEvent.OFFLOAD_STOPPED_ERROR:
-                        controlCb.onStoppedError();
-                        break;
-                    case OffloadCallbackEvent.OFFLOAD_STOPPED_UNSUPPORTED:
-                        controlCb.onStoppedUnsupported();
-                        break;
-                    case OffloadCallbackEvent.OFFLOAD_SUPPORT_AVAILABLE:
-                        controlCb.onSupportAvailable();
-                        break;
-                    case OffloadCallbackEvent.OFFLOAD_STOPPED_LIMIT_REACHED:
-                        controlCb.onStoppedLimitReached();
-                        break;
-                    default:
-                        log.e("Unsupported OffloadCallbackEvent: " + event);
-                }
-            });
-        }
-
-        @Override
-        public void updateTimeout(NatTimeoutUpdate params) {
-            handler.post(() -> {
-                controlCb.onNatTimeoutUpdate(
-                        networkProtocolToOsConstant(params.proto),
-                        params.src.addr, uint16(params.src.port),
-                        params.dst.addr, uint16(params.dst.port));
-            });
-        }
-    }
-
-    private static int networkProtocolToOsConstant(int proto) {
-        switch (proto) {
-            case NetworkProtocol.TCP: return OsConstants.IPPROTO_TCP;
-            case NetworkProtocol.UDP: return OsConstants.IPPROTO_UDP;
-            default:
-                // The caller checks this value and will log an error. Just make
-                // sure it won't collide with valid OsContants.IPPROTO_* values.
-                return -Math.abs(proto);
-        }
-    }
-
-    private static class CbResults {
-        boolean mSuccess;
-        String mErrMsg;
-
-        @Override
-        public String toString() {
-            if (mSuccess) {
-                return "ok";
-            } else {
-                return "fail: " + mErrMsg;
-            }
-        }
-    }
-}
diff --git a/packages/Tethering/src/com/android/networkstack/tethering/PrivateAddressCoordinator.java b/packages/Tethering/src/com/android/networkstack/tethering/PrivateAddressCoordinator.java
deleted file mode 100644
index fd9e360..0000000
--- a/packages/Tethering/src/com/android/networkstack/tethering/PrivateAddressCoordinator.java
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.networkstack.tethering;
-
-import static android.net.TetheringManager.TETHERING_WIFI_P2P;
-
-import static java.util.Arrays.asList;
-
-import android.content.Context;
-import android.net.ConnectivityManager;
-import android.net.IpPrefix;
-import android.net.LinkAddress;
-import android.net.LinkProperties;
-import android.net.Network;
-import android.net.ip.IpServer;
-import android.net.util.PrefixUtils;
-import android.util.ArrayMap;
-import android.util.ArraySet;
-
-import androidx.annotation.Nullable;
-
-import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.util.IndentingPrintWriter;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Random;
-import java.util.Set;
-
-/**
- * This class coordinate IP addresses conflict problem.
- *
- * Tethering downstream IP addresses may conflict with network assigned addresses. This
- * coordinator is responsible for recording all of network assigned addresses and dispatched
- * free address to downstream interfaces.
- *
- * This class is not thread-safe and should be accessed on the same tethering internal thread.
- * @hide
- */
-public class PrivateAddressCoordinator {
-    public static final int PREFIX_LENGTH = 24;
-
-    private static final int MAX_UBYTE = 256;
-    private static final int BYTE_MASK = 0xff;
-    // reserved for bluetooth tethering.
-    private static final int BLUETOOTH_RESERVED = 44;
-    private static final int WIFI_P2P_RESERVED = 49;
-    private static final byte DEFAULT_ID = (byte) 42;
-
-    // Upstream monitor would be stopped when tethering is down. When tethering restart, downstream
-    // address may be requested before coordinator get current upstream notification. To ensure
-    // coordinator do not select conflict downstream prefix, mUpstreamPrefixMap would not be cleared
-    // when tethering is down. Instead tethering would remove all deprecated upstreams from
-    // mUpstreamPrefixMap when tethering is starting. See #maybeRemoveDeprecatedUpstreams().
-    private final ArrayMap<Network, List<IpPrefix>> mUpstreamPrefixMap;
-    private final ArraySet<IpServer> mDownstreams;
-    // IANA has reserved the following three blocks of the IP address space for private intranets:
-    // 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
-    // Tethering use 192.168.0.0/16 that has 256 contiguous class C network numbers.
-    private static final String DEFAULT_TETHERING_PREFIX = "192.168.0.0/16";
-    private static final String LEGACY_WIFI_P2P_IFACE_ADDRESS = "192.168.49.1/24";
-    private final IpPrefix mTetheringPrefix;
-    private final ConnectivityManager mConnectivityMgr;
-    private final TetheringConfiguration mConfig;
-
-    public PrivateAddressCoordinator(Context context, TetheringConfiguration config) {
-        mDownstreams = new ArraySet<>();
-        mUpstreamPrefixMap = new ArrayMap<>();
-        mTetheringPrefix = new IpPrefix(DEFAULT_TETHERING_PREFIX);
-        mConnectivityMgr = (ConnectivityManager) context.getSystemService(
-                Context.CONNECTIVITY_SERVICE);
-        mConfig = config;
-    }
-
-    /**
-     * Record a new upstream IpPrefix which may conflict with tethering downstreams.
-     * The downstreams will be notified if a conflict is found.
-     */
-    public void updateUpstreamPrefix(final Network network, final LinkProperties lp) {
-        final ArrayList<IpPrefix> ipv4Prefixes = getIpv4Prefixes(lp.getAllLinkAddresses());
-        if (ipv4Prefixes.isEmpty()) {
-            removeUpstreamPrefix(network);
-            return;
-        }
-
-        mUpstreamPrefixMap.put(network, ipv4Prefixes);
-        handleMaybePrefixConflict(ipv4Prefixes);
-    }
-
-    private ArrayList<IpPrefix> getIpv4Prefixes(final List<LinkAddress> linkAddresses) {
-        final ArrayList<IpPrefix> list = new ArrayList<>();
-        for (LinkAddress address : linkAddresses) {
-            if (!address.isIpv4()) continue;
-
-            list.add(PrefixUtils.asIpPrefix(address));
-        }
-
-        return list;
-    }
-
-    private void handleMaybePrefixConflict(final List<IpPrefix> prefixes) {
-        for (IpServer downstream : mDownstreams) {
-            final IpPrefix target = getDownstreamPrefix(downstream);
-            if (target == null) continue;
-
-            for (IpPrefix source : prefixes) {
-                if (isConflictPrefix(source, target)) {
-                    downstream.sendMessage(IpServer.CMD_NOTIFY_PREFIX_CONFLICT);
-                    break;
-                }
-            }
-        }
-    }
-
-    /** Remove IpPrefix records corresponding to input network. */
-    public void removeUpstreamPrefix(final Network network) {
-        mUpstreamPrefixMap.remove(network);
-    }
-
-    /**
-     * Maybe remove deprecated upstream records, this would be called once tethering started without
-     * any exiting tethered downstream.
-     */
-    public void maybeRemoveDeprecatedUpstreams() {
-        if (mUpstreamPrefixMap.isEmpty()) return;
-
-        // Remove all upstreams that are no longer valid networks
-        final Set<Network> toBeRemoved = new HashSet<>(mUpstreamPrefixMap.keySet());
-        toBeRemoved.removeAll(asList(mConnectivityMgr.getAllNetworks()));
-
-        mUpstreamPrefixMap.removeAll(toBeRemoved);
-    }
-
-    private boolean isReservedSubnet(final int subnet) {
-        return subnet == BLUETOOTH_RESERVED || subnet == WIFI_P2P_RESERVED;
-    }
-
-    /**
-     * Pick a random available address and mark its prefix as in use for the provided IpServer,
-     * returns null if there is no available address.
-     */
-    @Nullable
-    public LinkAddress requestDownstreamAddress(final IpServer ipServer) {
-        if (mConfig.shouldEnableWifiP2pDedicatedIp()
-                && ipServer.interfaceType() == TETHERING_WIFI_P2P) {
-            return new LinkAddress(LEGACY_WIFI_P2P_IFACE_ADDRESS);
-        }
-
-        // Address would be 192.168.[subAddress]/24.
-        final byte[] bytes = mTetheringPrefix.getRawAddress();
-        final int subAddress = getRandomSubAddr();
-        final int subNet = (subAddress >> 8) & BYTE_MASK;
-        bytes[3] = getSanitizedAddressSuffix(subAddress, (byte) 0, (byte) 1, (byte) 0xff);
-        for (int i = 0; i < MAX_UBYTE; i++) {
-            final int newSubNet = (subNet + i) & BYTE_MASK;
-            if (isReservedSubnet(newSubNet)) continue;
-
-            bytes[2] = (byte) newSubNet;
-            final InetAddress addr;
-            try {
-                addr = InetAddress.getByAddress(bytes);
-            } catch (UnknownHostException e) {
-                throw new IllegalStateException("Invalid address, shouldn't happen.", e);
-            }
-
-            final IpPrefix prefix = new IpPrefix(addr, PREFIX_LENGTH);
-            // Check whether this prefix is in use.
-            if (isDownstreamPrefixInUse(prefix)) continue;
-            // Check whether this prefix is conflict with any current upstream network.
-            if (isConflictWithUpstream(prefix)) continue;
-
-            mDownstreams.add(ipServer);
-            return new LinkAddress(addr, PREFIX_LENGTH);
-        }
-
-        // No available address.
-        return null;
-    }
-
-    /** Get random sub address value. Return value is in 0 ~ 0xffff. */
-    @VisibleForTesting
-    public int getRandomSubAddr() {
-        return ((new Random()).nextInt()) & 0xffff; // subNet is in 0 ~ 0xffff.
-    }
-
-    private byte getSanitizedAddressSuffix(final int source, byte... excluded) {
-        final byte subId = (byte) (source & BYTE_MASK);
-        for (byte value : excluded) {
-            if (subId == value) return DEFAULT_ID;
-        }
-
-        return subId;
-    }
-
-    /** Release downstream record for IpServer. */
-    public void releaseDownstream(final IpServer ipServer) {
-        mDownstreams.remove(ipServer);
-    }
-
-    /** Clear current upstream prefixes records. */
-    public void clearUpstreamPrefixes() {
-        mUpstreamPrefixMap.clear();
-    }
-
-    private boolean isConflictWithUpstream(final IpPrefix source) {
-        for (int i = 0; i < mUpstreamPrefixMap.size(); i++) {
-            final List<IpPrefix> list = mUpstreamPrefixMap.valueAt(i);
-            for (IpPrefix target : list) {
-                if (isConflictPrefix(source, target)) return true;
-            }
-        }
-        return false;
-    }
-
-    private boolean isConflictPrefix(final IpPrefix prefix1, final IpPrefix prefix2) {
-        if (prefix2.getPrefixLength() < prefix1.getPrefixLength()) {
-            return prefix2.contains(prefix1.getAddress());
-        }
-
-        return prefix1.contains(prefix2.getAddress());
-    }
-
-    private boolean isDownstreamPrefixInUse(final IpPrefix source) {
-        // This class always generates downstream prefixes with the same prefix length, so
-        // prefixes cannot be contained in each other. They can only be equal to each other.
-        for (IpServer downstream : mDownstreams) {
-            final IpPrefix prefix = getDownstreamPrefix(downstream);
-            if (source.equals(prefix)) return true;
-        }
-        return false;
-    }
-
-    private IpPrefix getDownstreamPrefix(final IpServer downstream) {
-        final LinkAddress address = downstream.getAddress();
-        if (address == null) return null;
-
-        return PrefixUtils.asIpPrefix(address);
-    }
-
-    void dump(final IndentingPrintWriter pw) {
-        pw.println("mUpstreamPrefixMap:");
-        pw.increaseIndent();
-        for (int i = 0; i < mUpstreamPrefixMap.size(); i++) {
-            pw.println(mUpstreamPrefixMap.keyAt(i) + " - " + mUpstreamPrefixMap.valueAt(i));
-        }
-        pw.decreaseIndent();
-        pw.println("mDownstreams:");
-        pw.increaseIndent();
-        for (IpServer ipServer : mDownstreams) {
-            pw.println(ipServer.interfaceType() + " - " + ipServer.getAddress());
-        }
-        pw.decreaseIndent();
-    }
-}
diff --git a/packages/Tethering/src/com/android/networkstack/tethering/Tethering.java b/packages/Tethering/src/com/android/networkstack/tethering/Tethering.java
deleted file mode 100644
index 7dd5290..0000000
--- a/packages/Tethering/src/com/android/networkstack/tethering/Tethering.java
+++ /dev/null
@@ -1,2435 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.networkstack.tethering;
-
-import static android.Manifest.permission.NETWORK_SETTINGS;
-import static android.Manifest.permission.NETWORK_STACK;
-import static android.content.pm.PackageManager.GET_ACTIVITIES;
-import static android.content.pm.PackageManager.PERMISSION_GRANTED;
-import static android.hardware.usb.UsbManager.USB_CONFIGURED;
-import static android.hardware.usb.UsbManager.USB_CONNECTED;
-import static android.hardware.usb.UsbManager.USB_FUNCTION_NCM;
-import static android.hardware.usb.UsbManager.USB_FUNCTION_RNDIS;
-import static android.net.ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED;
-import static android.net.ConnectivityManager.CONNECTIVITY_ACTION;
-import static android.net.ConnectivityManager.EXTRA_NETWORK_INFO;
-import static android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK;
-import static android.net.TetheringManager.ACTION_TETHER_STATE_CHANGED;
-import static android.net.TetheringManager.EXTRA_ACTIVE_LOCAL_ONLY;
-import static android.net.TetheringManager.EXTRA_ACTIVE_TETHER;
-import static android.net.TetheringManager.EXTRA_AVAILABLE_TETHER;
-import static android.net.TetheringManager.EXTRA_ERRORED_TETHER;
-import static android.net.TetheringManager.TETHERING_BLUETOOTH;
-import static android.net.TetheringManager.TETHERING_ETHERNET;
-import static android.net.TetheringManager.TETHERING_INVALID;
-import static android.net.TetheringManager.TETHERING_NCM;
-import static android.net.TetheringManager.TETHERING_USB;
-import static android.net.TetheringManager.TETHERING_WIFI;
-import static android.net.TetheringManager.TETHERING_WIFI_P2P;
-import static android.net.TetheringManager.TETHERING_WIGIG;
-import static android.net.TetheringManager.TETHER_ERROR_INTERNAL_ERROR;
-import static android.net.TetheringManager.TETHER_ERROR_NO_ERROR;
-import static android.net.TetheringManager.TETHER_ERROR_SERVICE_UNAVAIL;
-import static android.net.TetheringManager.TETHER_ERROR_UNAVAIL_IFACE;
-import static android.net.TetheringManager.TETHER_ERROR_UNKNOWN_IFACE;
-import static android.net.TetheringManager.TETHER_ERROR_UNKNOWN_TYPE;
-import static android.net.TetheringManager.TETHER_HARDWARE_OFFLOAD_FAILED;
-import static android.net.TetheringManager.TETHER_HARDWARE_OFFLOAD_STARTED;
-import static android.net.TetheringManager.TETHER_HARDWARE_OFFLOAD_STOPPED;
-import static android.net.util.TetheringMessageBase.BASE_MAIN_SM;
-import static android.net.wifi.WifiManager.EXTRA_WIFI_AP_INTERFACE_NAME;
-import static android.net.wifi.WifiManager.EXTRA_WIFI_AP_MODE;
-import static android.net.wifi.WifiManager.EXTRA_WIFI_AP_STATE;
-import static android.net.wifi.WifiManager.IFACE_IP_MODE_CONFIGURATION_ERROR;
-import static android.net.wifi.WifiManager.IFACE_IP_MODE_LOCAL_ONLY;
-import static android.net.wifi.WifiManager.IFACE_IP_MODE_TETHERED;
-import static android.net.wifi.WifiManager.IFACE_IP_MODE_UNSPECIFIED;
-import static android.net.wifi.WifiManager.WIFI_AP_STATE_DISABLED;
-import static android.telephony.CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED;
-import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
-
-import static com.android.networkstack.tethering.TetheringNotificationUpdater.DOWNSTREAM_NONE;
-
-import android.app.usage.NetworkStatsManager;
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothPan;
-import android.bluetooth.BluetoothProfile;
-import android.bluetooth.BluetoothProfile.ServiceListener;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.PackageManager;
-import android.hardware.usb.UsbManager;
-import android.net.ConnectivityManager;
-import android.net.EthernetManager;
-import android.net.IIntResultListener;
-import android.net.INetd;
-import android.net.ITetheringEventCallback;
-import android.net.IpPrefix;
-import android.net.LinkAddress;
-import android.net.LinkProperties;
-import android.net.Network;
-import android.net.NetworkCapabilities;
-import android.net.NetworkInfo;
-import android.net.TetherStatesParcel;
-import android.net.TetheredClient;
-import android.net.TetheringCallbackStartedParcel;
-import android.net.TetheringConfigurationParcel;
-import android.net.TetheringRequestParcel;
-import android.net.ip.IpServer;
-import android.net.shared.NetdUtils;
-import android.net.util.BaseNetdUnsolicitedEventListener;
-import android.net.util.InterfaceSet;
-import android.net.util.PrefixUtils;
-import android.net.util.SharedLog;
-import android.net.util.TetheringUtils;
-import android.net.util.VersionedBroadcastListener;
-import android.net.wifi.WifiClient;
-import android.net.wifi.WifiManager;
-import android.net.wifi.p2p.WifiP2pGroup;
-import android.net.wifi.p2p.WifiP2pInfo;
-import android.net.wifi.p2p.WifiP2pManager;
-import android.os.Binder;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.os.RemoteCallbackList;
-import android.os.RemoteException;
-import android.os.ResultReceiver;
-import android.os.ServiceSpecificException;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.provider.Settings;
-import android.telephony.PhoneStateListener;
-import android.telephony.TelephonyManager;
-import android.text.TextUtils;
-import android.util.ArrayMap;
-import android.util.Log;
-import android.util.SparseArray;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import com.android.internal.annotations.GuardedBy;
-import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.util.IndentingPrintWriter;
-import com.android.internal.util.MessageUtils;
-import com.android.internal.util.State;
-import com.android.internal.util.StateMachine;
-
-import java.io.FileDescriptor;
-import java.io.PrintWriter;
-import java.net.InetAddress;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.Executor;
-import java.util.concurrent.RejectedExecutionException;
-
-/**
- *
- * This class holds much of the business logic to allow Android devices
- * to act as IP gateways via USB, BT, and WiFi interfaces.
- */
-public class Tethering {
-
-    private static final String TAG = Tethering.class.getSimpleName();
-    private static final boolean DBG = false;
-    private static final boolean VDBG = false;
-
-    private static final Class[] sMessageClasses = {
-            Tethering.class, TetherMainSM.class, IpServer.class
-    };
-    private static final SparseArray<String> sMagicDecoderRing =
-            MessageUtils.findMessageNames(sMessageClasses);
-    // Keep in sync with NETID_UNSET in system/netd/include/netid_client.h
-    private static final int NETID_UNSET = 0;
-
-    private static class TetherState {
-        public final IpServer ipServer;
-        public int lastState;
-        public int lastError;
-
-        TetherState(IpServer ipServer) {
-            this.ipServer = ipServer;
-            // Assume all state machines start out available and with no errors.
-            lastState = IpServer.STATE_AVAILABLE;
-            lastError = TETHER_ERROR_NO_ERROR;
-        }
-
-        public boolean isCurrentlyServing() {
-            switch (lastState) {
-                case IpServer.STATE_TETHERED:
-                case IpServer.STATE_LOCAL_ONLY:
-                    return true;
-                default:
-                    return false;
-            }
-        }
-    }
-
-    /**
-     * Cookie added when registering {@link android.net.TetheringManager.TetheringEventCallback}.
-     */
-    private static class CallbackCookie {
-        public final boolean hasListClientsPermission;
-
-        private CallbackCookie(boolean hasListClientsPermission) {
-            this.hasListClientsPermission = hasListClientsPermission;
-        }
-    }
-
-    private final SharedLog mLog = new SharedLog(TAG);
-    private final RemoteCallbackList<ITetheringEventCallback> mTetheringEventCallbacks =
-            new RemoteCallbackList<>();
-    // Currently active tethering requests per tethering type. Only one of each type can be
-    // requested at a time. After a tethering type is requested, the map keeps tethering parameters
-    // to be used after the interface comes up asynchronously.
-    private final SparseArray<TetheringRequestParcel> mActiveTetheringRequests =
-            new SparseArray<>();
-
-    // used to synchronize public access to members
-    // TODO(b/153621704): remove mPublicSync to make Tethering lock free
-    private final Object mPublicSync;
-    private final Context mContext;
-    private final ArrayMap<String, TetherState> mTetherStates;
-    private final BroadcastReceiver mStateReceiver;
-    private final Looper mLooper;
-    private final StateMachine mTetherMainSM;
-    private final OffloadController mOffloadController;
-    private final UpstreamNetworkMonitor mUpstreamNetworkMonitor;
-    // TODO: Figure out how to merge this and other downstream-tracking objects
-    // into a single coherent structure.
-    // Use LinkedHashSet for predictable ordering order for ConnectedClientsTracker.
-    private final LinkedHashSet<IpServer> mForwardedDownstreams;
-    private final VersionedBroadcastListener mCarrierConfigChange;
-    private final TetheringDependencies mDeps;
-    private final EntitlementManager mEntitlementMgr;
-    private final Handler mHandler;
-    private final INetd mNetd;
-    private final NetdCallback mNetdCallback;
-    private final UserRestrictionActionListener mTetheringRestriction;
-    private final ActiveDataSubIdListener mActiveDataSubIdListener;
-    private final ConnectedClientsTracker mConnectedClientsTracker;
-    private final TetheringThreadExecutor mExecutor;
-    private final TetheringNotificationUpdater mNotificationUpdater;
-    private final UserManager mUserManager;
-    private final BpfCoordinator mBpfCoordinator;
-    private final PrivateAddressCoordinator mPrivateAddressCoordinator;
-    private int mActiveDataSubId = INVALID_SUBSCRIPTION_ID;
-    // All the usage of mTetheringEventCallback should run in the same thread.
-    private ITetheringEventCallback mTetheringEventCallback = null;
-
-    private volatile TetheringConfiguration mConfig;
-    private InterfaceSet mCurrentUpstreamIfaceSet;
-
-    private boolean mRndisEnabled;       // track the RNDIS function enabled state
-    // True iff. WiFi tethering should be started when soft AP is ready.
-    private boolean mWifiTetherRequested;
-    private Network mTetherUpstream;
-    private TetherStatesParcel mTetherStatesParcel;
-    private boolean mDataSaverEnabled = false;
-    private String mWifiP2pTetherInterface = null;
-    private int mOffloadStatus = TETHER_HARDWARE_OFFLOAD_STOPPED;
-
-    @GuardedBy("mPublicSync")
-    private EthernetManager.TetheredInterfaceRequest mEthernetIfaceRequest;
-    @GuardedBy("mPublicSync")
-    private String mConfiguredEthernetIface;
-    @GuardedBy("mPublicSync")
-    private EthernetCallback mEthernetCallback;
-
-    public Tethering(TetheringDependencies deps) {
-        mLog.mark("Tethering.constructed");
-        mDeps = deps;
-        mContext = mDeps.getContext();
-        mNetd = mDeps.getINetd(mContext);
-        mLooper = mDeps.getTetheringLooper();
-        mNotificationUpdater = mDeps.getNotificationUpdater(mContext, mLooper);
-
-        mPublicSync = new Object();
-
-        mTetherStates = new ArrayMap<>();
-        mConnectedClientsTracker = new ConnectedClientsTracker();
-
-        mTetherMainSM = new TetherMainSM("TetherMain", mLooper, deps);
-        mTetherMainSM.start();
-
-        mHandler = mTetherMainSM.getHandler();
-        mOffloadController = mDeps.getOffloadController(mHandler, mLog,
-                new OffloadController.Dependencies() {
-
-                    @Override
-                    public TetheringConfiguration getTetherConfig() {
-                        return mConfig;
-                    }
-                });
-        mUpstreamNetworkMonitor = mDeps.getUpstreamNetworkMonitor(mContext, mTetherMainSM, mLog,
-                TetherMainSM.EVENT_UPSTREAM_CALLBACK);
-        mForwardedDownstreams = new LinkedHashSet<>();
-
-        IntentFilter filter = new IntentFilter();
-        filter.addAction(ACTION_CARRIER_CONFIG_CHANGED);
-        // EntitlementManager will send EVENT_UPSTREAM_PERMISSION_CHANGED when cellular upstream
-        // permission is changed according to entitlement check result.
-        mEntitlementMgr = mDeps.getEntitlementManager(mContext, mHandler, mLog,
-                () -> mTetherMainSM.sendMessage(
-                TetherMainSM.EVENT_UPSTREAM_PERMISSION_CHANGED));
-        mEntitlementMgr.setOnUiEntitlementFailedListener((int downstream) -> {
-            mLog.log("OBSERVED UiEnitlementFailed");
-            stopTethering(downstream);
-        });
-        mEntitlementMgr.setTetheringConfigurationFetcher(() -> {
-            return mConfig;
-        });
-
-        mCarrierConfigChange = new VersionedBroadcastListener(
-                "CarrierConfigChangeListener", mContext, mHandler, filter,
-                (Intent ignored) -> {
-                    mLog.log("OBSERVED carrier config change");
-                    updateConfiguration();
-                    mEntitlementMgr.reevaluateSimCardProvisioning(mConfig);
-                });
-
-        mStateReceiver = new StateReceiver();
-
-        mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
-        mTetheringRestriction = new UserRestrictionActionListener(
-                mUserManager, this, mNotificationUpdater);
-        mExecutor = new TetheringThreadExecutor(mHandler);
-        mActiveDataSubIdListener = new ActiveDataSubIdListener(mExecutor);
-        mNetdCallback = new NetdCallback();
-
-        // Load tethering configuration.
-        updateConfiguration();
-        // It is OK for the configuration to be passed to the PrivateAddressCoordinator at
-        // construction time because the only part of the configuration it uses is
-        // shouldEnableWifiP2pDedicatedIp(), and currently do not support changing that.
-        mPrivateAddressCoordinator = new PrivateAddressCoordinator(mContext, mConfig);
-
-        // Must be initialized after tethering configuration is loaded because BpfCoordinator
-        // constructor needs to use the configuration.
-        mBpfCoordinator = mDeps.getBpfCoordinator(
-                new BpfCoordinator.Dependencies() {
-                    @NonNull
-                    public Handler getHandler() {
-                        return mHandler;
-                    }
-
-                    @NonNull
-                    public INetd getNetd() {
-                        return mNetd;
-                    }
-
-                    @NonNull
-                    public NetworkStatsManager getNetworkStatsManager() {
-                        return mContext.getSystemService(NetworkStatsManager.class);
-                    }
-
-                    @NonNull
-                    public SharedLog getSharedLog() {
-                        return mLog;
-                    }
-
-                    @Nullable
-                    public TetheringConfiguration getTetherConfig() {
-                        return mConfig;
-                    }
-                });
-
-        startStateMachineUpdaters();
-    }
-
-    /**
-     * Start to register callbacks.
-     * Call this function when tethering is ready to handle callback events.
-     */
-    private void startStateMachineUpdaters() {
-        try {
-            mNetd.registerUnsolicitedEventListener(mNetdCallback);
-        } catch (RemoteException e) {
-            mLog.e("Unable to register netd UnsolicitedEventListener");
-        }
-        mCarrierConfigChange.startListening();
-        mContext.getSystemService(TelephonyManager.class).listen(mActiveDataSubIdListener,
-                PhoneStateListener.LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE);
-
-        IntentFilter filter = new IntentFilter();
-        filter.addAction(UsbManager.ACTION_USB_STATE);
-        filter.addAction(CONNECTIVITY_ACTION);
-        filter.addAction(WifiManager.WIFI_AP_STATE_CHANGED_ACTION);
-        filter.addAction(Intent.ACTION_CONFIGURATION_CHANGED);
-        filter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);
-        filter.addAction(UserManager.ACTION_USER_RESTRICTIONS_CHANGED);
-        filter.addAction(ACTION_RESTRICT_BACKGROUND_CHANGED);
-        mContext.registerReceiver(mStateReceiver, filter, null, mHandler);
-
-        final IntentFilter noUpstreamFilter = new IntentFilter();
-        noUpstreamFilter.addAction(TetheringNotificationUpdater.ACTION_DISABLE_TETHERING);
-        mContext.registerReceiver(
-                mStateReceiver, noUpstreamFilter, PERMISSION_MAINLINE_NETWORK_STACK, mHandler);
-
-        final WifiManager wifiManager = getWifiManager();
-        if (wifiManager != null) {
-            wifiManager.registerSoftApCallback(mExecutor, new TetheringSoftApCallback());
-        }
-
-        startTrackDefaultNetwork();
-    }
-
-    private class TetheringThreadExecutor implements Executor {
-        private final Handler mTetherHandler;
-        TetheringThreadExecutor(Handler handler) {
-            mTetherHandler = handler;
-        }
-        @Override
-        public void execute(Runnable command) {
-            if (!mTetherHandler.post(command)) {
-                throw new RejectedExecutionException(mTetherHandler + " is shutting down");
-            }
-        }
-    }
-
-    private class ActiveDataSubIdListener extends PhoneStateListener {
-        ActiveDataSubIdListener(Executor executor) {
-            super(executor);
-        }
-
-        @Override
-        public void onActiveDataSubscriptionIdChanged(int subId) {
-            mLog.log("OBSERVED active data subscription change, from " + mActiveDataSubId
-                    + " to " + subId);
-            if (subId == mActiveDataSubId) return;
-
-            mActiveDataSubId = subId;
-            updateConfiguration();
-            mNotificationUpdater.onActiveDataSubscriptionIdChanged(subId);
-            // To avoid launching unexpected provisioning checks, ignore re-provisioning
-            // when no CarrierConfig loaded yet. Assume reevaluateSimCardProvisioning()
-            // will be triggered again when CarrierConfig is loaded.
-            if (mEntitlementMgr.getCarrierConfig(mConfig) != null) {
-                mEntitlementMgr.reevaluateSimCardProvisioning(mConfig);
-            } else {
-                mLog.log("IGNORED reevaluate provisioning, no carrier config loaded");
-            }
-        }
-    }
-
-    private WifiManager getWifiManager() {
-        return (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
-    }
-
-    // NOTE: This is always invoked on the mLooper thread.
-    private void updateConfiguration() {
-        mConfig = mDeps.generateTetheringConfiguration(mContext, mLog, mActiveDataSubId);
-        mUpstreamNetworkMonitor.updateMobileRequiresDun(mConfig.isDunRequired);
-        reportConfigurationChanged(mConfig.toStableParcelable());
-    }
-
-    private void maybeDunSettingChanged() {
-        final boolean isDunRequired = TetheringConfiguration.checkDunRequired(mContext);
-        if (isDunRequired == mConfig.isDunRequired) return;
-        updateConfiguration();
-    }
-
-    private class NetdCallback extends BaseNetdUnsolicitedEventListener {
-        @Override
-        public void onInterfaceChanged(String ifName, boolean up) {
-            mHandler.post(() -> interfaceStatusChanged(ifName, up));
-        }
-
-        @Override
-        public void onInterfaceLinkStateChanged(String ifName, boolean up) {
-            mHandler.post(() -> interfaceLinkStateChanged(ifName, up));
-        }
-
-        @Override
-        public void onInterfaceAdded(String ifName) {
-            mHandler.post(() -> interfaceAdded(ifName));
-        }
-
-        @Override
-        public void onInterfaceRemoved(String ifName) {
-            mHandler.post(() -> interfaceRemoved(ifName));
-        }
-    }
-
-    private class TetheringSoftApCallback implements WifiManager.SoftApCallback {
-        // TODO: Remove onStateChanged override when this method has default on
-        // WifiManager#SoftApCallback interface.
-        // Wifi listener for state change of the soft AP
-        @Override
-        public void onStateChanged(final int state, final int failureReason) {
-            // Nothing
-        }
-
-        // Called by wifi when the number of soft AP clients changed.
-        @Override
-        public void onConnectedClientsChanged(final List<WifiClient> clients) {
-            updateConnectedClients(clients);
-        }
-    }
-
-    void interfaceStatusChanged(String iface, boolean up) {
-        // Never called directly: only called from interfaceLinkStateChanged.
-        // See NetlinkHandler.cpp: notifyInterfaceChanged.
-        if (VDBG) Log.d(TAG, "interfaceStatusChanged " + iface + ", " + up);
-        synchronized (mPublicSync) {
-            if (up) {
-                maybeTrackNewInterfaceLocked(iface);
-            } else {
-                if (ifaceNameToType(iface) == TETHERING_BLUETOOTH
-                        || ifaceNameToType(iface) == TETHERING_WIGIG) {
-                    stopTrackingInterfaceLocked(iface);
-                } else {
-                    // Ignore usb0 down after enabling RNDIS.
-                    // We will handle disconnect in interfaceRemoved.
-                    // Similarly, ignore interface down for WiFi.  We monitor WiFi AP status
-                    // through the WifiManager.WIFI_AP_STATE_CHANGED_ACTION intent.
-                    if (VDBG) Log.d(TAG, "ignore interface down for " + iface);
-                }
-            }
-        }
-    }
-
-    void interfaceLinkStateChanged(String iface, boolean up) {
-        interfaceStatusChanged(iface, up);
-    }
-
-    private int ifaceNameToType(String iface) {
-        final TetheringConfiguration cfg = mConfig;
-
-        if (cfg.isWifi(iface)) {
-            return TETHERING_WIFI;
-        } else if (cfg.isWigig(iface)) {
-            return TETHERING_WIGIG;
-        } else if (cfg.isWifiP2p(iface)) {
-            return TETHERING_WIFI_P2P;
-        } else if (cfg.isUsb(iface)) {
-            return TETHERING_USB;
-        } else if (cfg.isBluetooth(iface)) {
-            return TETHERING_BLUETOOTH;
-        } else if (cfg.isNcm(iface)) {
-            return TETHERING_NCM;
-        }
-        return TETHERING_INVALID;
-    }
-
-    void interfaceAdded(String iface) {
-        if (VDBG) Log.d(TAG, "interfaceAdded " + iface);
-        synchronized (mPublicSync) {
-            maybeTrackNewInterfaceLocked(iface);
-        }
-    }
-
-    void interfaceRemoved(String iface) {
-        if (VDBG) Log.d(TAG, "interfaceRemoved " + iface);
-        synchronized (mPublicSync) {
-            stopTrackingInterfaceLocked(iface);
-        }
-    }
-
-    void startTethering(final TetheringRequestParcel request, final IIntResultListener listener) {
-        mHandler.post(() -> {
-            final TetheringRequestParcel unfinishedRequest = mActiveTetheringRequests.get(
-                    request.tetheringType);
-            // If tethering is already enabled with a different request,
-            // disable before re-enabling.
-            if (unfinishedRequest != null
-                    && !TetheringUtils.isTetheringRequestEquals(unfinishedRequest, request)) {
-                enableTetheringInternal(request.tetheringType, false /* disabled */, null);
-                mEntitlementMgr.stopProvisioningIfNeeded(request.tetheringType);
-            }
-            mActiveTetheringRequests.put(request.tetheringType, request);
-
-            if (request.exemptFromEntitlementCheck) {
-                mEntitlementMgr.setExemptedDownstreamType(request.tetheringType);
-            } else {
-                mEntitlementMgr.startProvisioningIfNeeded(request.tetheringType,
-                        request.showProvisioningUi);
-            }
-            enableTetheringInternal(request.tetheringType, true /* enabled */, listener);
-        });
-    }
-
-    void stopTethering(int type) {
-        mHandler.post(() -> {
-            mActiveTetheringRequests.remove(type);
-
-            enableTetheringInternal(type, false /* disabled */, null);
-            mEntitlementMgr.stopProvisioningIfNeeded(type);
-        });
-    }
-
-    /**
-     * Enables or disables tethering for the given type. If provisioning is required, it will
-     * schedule provisioning rechecks for the specified interface.
-     */
-    private void enableTetheringInternal(int type, boolean enable,
-            final IIntResultListener listener) {
-        int result = TETHER_ERROR_NO_ERROR;
-        switch (type) {
-            case TETHERING_WIFI:
-                result = setWifiTethering(enable);
-                break;
-            case TETHERING_USB:
-                result = setUsbTethering(enable);
-                break;
-            case TETHERING_BLUETOOTH:
-                setBluetoothTethering(enable, listener);
-                break;
-            case TETHERING_NCM:
-                result = setNcmTethering(enable);
-                break;
-            case TETHERING_ETHERNET:
-                result = setEthernetTethering(enable);
-                break;
-            default:
-                Log.w(TAG, "Invalid tether type.");
-                result = TETHER_ERROR_UNKNOWN_TYPE;
-        }
-
-        // The result of Bluetooth tethering will be sent by #setBluetoothTethering.
-        if (type != TETHERING_BLUETOOTH) {
-            sendTetherResult(listener, result, type);
-        }
-    }
-
-    private void sendTetherResult(final IIntResultListener listener, final int result,
-            final int type) {
-        if (listener != null) {
-            try {
-                listener.onResult(result);
-            } catch (RemoteException e) { }
-        }
-
-        // If changing tethering fail, remove corresponding request
-        // no matter who trigger the start/stop.
-        if (result != TETHER_ERROR_NO_ERROR) mActiveTetheringRequests.remove(type);
-    }
-
-    private int setWifiTethering(final boolean enable) {
-        final long ident = Binder.clearCallingIdentity();
-        try {
-            synchronized (mPublicSync) {
-                final WifiManager mgr = getWifiManager();
-                if (mgr == null) {
-                    mLog.e("setWifiTethering: failed to get WifiManager!");
-                    return TETHER_ERROR_SERVICE_UNAVAIL;
-                }
-                if ((enable && mgr.startTetheredHotspot(null /* use existing softap config */))
-                        || (!enable && mgr.stopSoftAp())) {
-                    mWifiTetherRequested = enable;
-                    return TETHER_ERROR_NO_ERROR;
-                }
-            }
-        } finally {
-            Binder.restoreCallingIdentity(ident);
-        }
-
-        return TETHER_ERROR_INTERNAL_ERROR;
-    }
-
-    private void setBluetoothTethering(final boolean enable, final IIntResultListener listener) {
-        final BluetoothAdapter adapter = mDeps.getBluetoothAdapter();
-        if (adapter == null || !adapter.isEnabled()) {
-            Log.w(TAG, "Tried to enable bluetooth tethering with null or disabled adapter. null: "
-                    + (adapter == null));
-            sendTetherResult(listener, TETHER_ERROR_SERVICE_UNAVAIL, TETHERING_BLUETOOTH);
-            return;
-        }
-
-        adapter.getProfileProxy(mContext, new ServiceListener() {
-            @Override
-            public void onServiceDisconnected(int profile) { }
-
-            @Override
-            public void onServiceConnected(int profile, BluetoothProfile proxy) {
-                // Clear identify is fine because caller already pass tethering permission at
-                // ConnectivityService#startTethering()(or stopTethering) before the control comes
-                // here. Bluetooth will check tethering permission again that there is
-                // Context#getOpPackageName() under BluetoothPan#setBluetoothTethering() to get
-                // caller's package name for permission check.
-                // Calling BluetoothPan#setBluetoothTethering() here means the package name always
-                // be system server. If calling identity is not cleared, that package's uid might
-                // not match calling uid and end up in permission denied.
-                final long identityToken = Binder.clearCallingIdentity();
-                try {
-                    ((BluetoothPan) proxy).setBluetoothTethering(enable);
-                } finally {
-                    Binder.restoreCallingIdentity(identityToken);
-                }
-                // TODO: Enabling bluetooth tethering can fail asynchronously here.
-                // We should figure out a way to bubble up that failure instead of sending success.
-                final int result = (((BluetoothPan) proxy).isTetheringOn() == enable)
-                        ? TETHER_ERROR_NO_ERROR
-                        : TETHER_ERROR_INTERNAL_ERROR;
-                sendTetherResult(listener, result, TETHERING_BLUETOOTH);
-                adapter.closeProfileProxy(BluetoothProfile.PAN, proxy);
-            }
-        }, BluetoothProfile.PAN);
-    }
-
-    private int setEthernetTethering(final boolean enable) {
-        final EthernetManager em = (EthernetManager) mContext.getSystemService(
-                Context.ETHERNET_SERVICE);
-        synchronized (mPublicSync) {
-            if (enable) {
-                if (mEthernetCallback != null) {
-                    Log.d(TAG, "Ethernet tethering already started");
-                    return TETHER_ERROR_NO_ERROR;
-                }
-
-                mEthernetCallback = new EthernetCallback();
-                mEthernetIfaceRequest = em.requestTetheredInterface(mExecutor, mEthernetCallback);
-            } else {
-                stopEthernetTetheringLocked();
-            }
-        }
-        return TETHER_ERROR_NO_ERROR;
-    }
-
-    private void stopEthernetTetheringLocked() {
-        if (mConfiguredEthernetIface != null) {
-            stopTrackingInterfaceLocked(mConfiguredEthernetIface);
-            mConfiguredEthernetIface = null;
-        }
-        if (mEthernetCallback != null) {
-            mEthernetIfaceRequest.release();
-            mEthernetCallback = null;
-            mEthernetIfaceRequest = null;
-        }
-    }
-
-    private class EthernetCallback implements EthernetManager.TetheredInterfaceCallback {
-        @Override
-        public void onAvailable(String iface) {
-            synchronized (mPublicSync) {
-                if (this != mEthernetCallback) {
-                    // Ethernet callback arrived after Ethernet tethering stopped. Ignore.
-                    return;
-                }
-                maybeTrackNewInterfaceLocked(iface, TETHERING_ETHERNET);
-                changeInterfaceState(iface, IpServer.STATE_TETHERED);
-                mConfiguredEthernetIface = iface;
-            }
-        }
-
-        @Override
-        public void onUnavailable() {
-            synchronized (mPublicSync) {
-                if (this != mEthernetCallback) {
-                    // onAvailable called after stopping Ethernet tethering.
-                    return;
-                }
-                stopEthernetTetheringLocked();
-            }
-        }
-    }
-
-    int tether(String iface) {
-        return tether(iface, IpServer.STATE_TETHERED);
-    }
-
-    private int tether(String iface, int requestedState) {
-        if (DBG) Log.d(TAG, "Tethering " + iface);
-        synchronized (mPublicSync) {
-            TetherState tetherState = mTetherStates.get(iface);
-            if (tetherState == null) {
-                Log.e(TAG, "Tried to Tether an unknown iface: " + iface + ", ignoring");
-                return TETHER_ERROR_UNKNOWN_IFACE;
-            }
-            // Ignore the error status of the interface.  If the interface is available,
-            // the errors are referring to past tethering attempts anyway.
-            if (tetherState.lastState != IpServer.STATE_AVAILABLE) {
-                Log.e(TAG, "Tried to Tether an unavailable iface: " + iface + ", ignoring");
-                return TETHER_ERROR_UNAVAIL_IFACE;
-            }
-            // NOTE: If a CMD_TETHER_REQUESTED message is already in the TISM's queue but not yet
-            // processed, this will be a no-op and it will not return an error.
-            //
-            // This code cannot race with untether() because they both synchronize on mPublicSync.
-            // TODO: reexamine the threading and messaging model to totally remove mPublicSync.
-            final int type = tetherState.ipServer.interfaceType();
-            final TetheringRequestParcel request = mActiveTetheringRequests.get(type, null);
-            if (request != null) {
-                mActiveTetheringRequests.delete(type);
-            }
-            tetherState.ipServer.sendMessage(IpServer.CMD_TETHER_REQUESTED, requestedState, 0,
-                    request);
-            return TETHER_ERROR_NO_ERROR;
-        }
-    }
-
-    int untether(String iface) {
-        if (DBG) Log.d(TAG, "Untethering " + iface);
-        synchronized (mPublicSync) {
-            TetherState tetherState = mTetherStates.get(iface);
-            if (tetherState == null) {
-                Log.e(TAG, "Tried to Untether an unknown iface :" + iface + ", ignoring");
-                return TETHER_ERROR_UNKNOWN_IFACE;
-            }
-            if (!tetherState.isCurrentlyServing()) {
-                Log.e(TAG, "Tried to untether an inactive iface :" + iface + ", ignoring");
-                return TETHER_ERROR_UNAVAIL_IFACE;
-            }
-            tetherState.ipServer.sendMessage(IpServer.CMD_TETHER_UNREQUESTED);
-            return TETHER_ERROR_NO_ERROR;
-        }
-    }
-
-    void untetherAll() {
-        stopTethering(TETHERING_WIFI);
-        stopTethering(TETHERING_WIFI_P2P);
-        stopTethering(TETHERING_USB);
-        stopTethering(TETHERING_BLUETOOTH);
-        stopTethering(TETHERING_ETHERNET);
-    }
-
-    int getLastTetherError(String iface) {
-        synchronized (mPublicSync) {
-            TetherState tetherState = mTetherStates.get(iface);
-            if (tetherState == null) {
-                Log.e(TAG, "Tried to getLastTetherError on an unknown iface :" + iface
-                        + ", ignoring");
-                return TETHER_ERROR_UNKNOWN_IFACE;
-            }
-            return tetherState.lastError;
-        }
-    }
-
-    private boolean isProvisioningNeededButUnavailable() {
-        return isTetherProvisioningRequired() && !doesEntitlementPackageExist();
-    }
-
-    boolean isTetherProvisioningRequired() {
-        final TetheringConfiguration cfg = mConfig;
-        return mEntitlementMgr.isTetherProvisioningRequired(cfg);
-    }
-
-    private boolean doesEntitlementPackageExist() {
-        // provisioningApp must contain package and class name.
-        if (mConfig.provisioningApp.length != 2) {
-            return false;
-        }
-
-        final PackageManager pm = mContext.getPackageManager();
-        try {
-            pm.getPackageInfo(mConfig.provisioningApp[0], GET_ACTIVITIES);
-        } catch (PackageManager.NameNotFoundException e) {
-            return false;
-        }
-        return true;
-    }
-
-    // TODO: Figure out how to update for local hotspot mode interfaces.
-    private void sendTetherStateChangedBroadcast() {
-        if (!isTetheringSupported()) return;
-
-        final ArrayList<String> availableList = new ArrayList<>();
-        final ArrayList<String> tetherList = new ArrayList<>();
-        final ArrayList<String> localOnlyList = new ArrayList<>();
-        final ArrayList<String> erroredList = new ArrayList<>();
-        final ArrayList<Integer> lastErrorList = new ArrayList<>();
-
-        final TetheringConfiguration cfg = mConfig;
-        mTetherStatesParcel = new TetherStatesParcel();
-
-        int downstreamTypesMask = DOWNSTREAM_NONE;
-        synchronized (mPublicSync) {
-            for (int i = 0; i < mTetherStates.size(); i++) {
-                TetherState tetherState = mTetherStates.valueAt(i);
-                String iface = mTetherStates.keyAt(i);
-                if (tetherState.lastError != TETHER_ERROR_NO_ERROR) {
-                    erroredList.add(iface);
-                    lastErrorList.add(tetherState.lastError);
-                } else if (tetherState.lastState == IpServer.STATE_AVAILABLE) {
-                    availableList.add(iface);
-                } else if (tetherState.lastState == IpServer.STATE_LOCAL_ONLY) {
-                    localOnlyList.add(iface);
-                } else if (tetherState.lastState == IpServer.STATE_TETHERED) {
-                    if (cfg.isUsb(iface)) {
-                        downstreamTypesMask |= (1 << TETHERING_USB);
-                    } else if (cfg.isWifi(iface)) {
-                        downstreamTypesMask |= (1 << TETHERING_WIFI);
-                    } else if (cfg.isBluetooth(iface)) {
-                        downstreamTypesMask |= (1 << TETHERING_BLUETOOTH);
-                    }
-                    tetherList.add(iface);
-                }
-            }
-        }
-
-        mTetherStatesParcel.availableList = availableList.toArray(new String[0]);
-        mTetherStatesParcel.tetheredList = tetherList.toArray(new String[0]);
-        mTetherStatesParcel.localOnlyList = localOnlyList.toArray(new String[0]);
-        mTetherStatesParcel.erroredIfaceList = erroredList.toArray(new String[0]);
-        mTetherStatesParcel.lastErrorList = new int[lastErrorList.size()];
-        Iterator<Integer> iterator = lastErrorList.iterator();
-        for (int i = 0; i < lastErrorList.size(); i++) {
-            mTetherStatesParcel.lastErrorList[i] = iterator.next().intValue();
-        }
-        reportTetherStateChanged(mTetherStatesParcel);
-
-        final Intent bcast = new Intent(ACTION_TETHER_STATE_CHANGED);
-        bcast.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING);
-        bcast.putStringArrayListExtra(EXTRA_AVAILABLE_TETHER, availableList);
-        bcast.putStringArrayListExtra(EXTRA_ACTIVE_LOCAL_ONLY, localOnlyList);
-        bcast.putStringArrayListExtra(EXTRA_ACTIVE_TETHER, tetherList);
-        bcast.putStringArrayListExtra(EXTRA_ERRORED_TETHER, erroredList);
-        mContext.sendStickyBroadcastAsUser(bcast, UserHandle.ALL);
-        if (DBG) {
-            Log.d(TAG, String.format(
-                    "sendTetherStateChangedBroadcast %s=[%s] %s=[%s] %s=[%s] %s=[%s]",
-                    "avail", TextUtils.join(",", availableList),
-                    "local_only", TextUtils.join(",", localOnlyList),
-                    "tether", TextUtils.join(",", tetherList),
-                    "error", TextUtils.join(",", erroredList)));
-        }
-
-        mNotificationUpdater.onDownstreamChanged(downstreamTypesMask);
-    }
-
-    private class StateReceiver extends BroadcastReceiver {
-        @Override
-        public void onReceive(Context content, Intent intent) {
-            final String action = intent.getAction();
-            if (action == null) return;
-
-            if (action.equals(UsbManager.ACTION_USB_STATE)) {
-                handleUsbAction(intent);
-            } else if (action.equals(CONNECTIVITY_ACTION)) {
-                handleConnectivityAction(intent);
-            } else if (action.equals(WifiManager.WIFI_AP_STATE_CHANGED_ACTION)) {
-                handleWifiApAction(intent);
-            } else if (action.equals(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION)) {
-                handleWifiP2pAction(intent);
-            } else if (action.equals(Intent.ACTION_CONFIGURATION_CHANGED)) {
-                mLog.log("OBSERVED configuration changed");
-                updateConfiguration();
-            } else if (action.equals(UserManager.ACTION_USER_RESTRICTIONS_CHANGED)) {
-                mLog.log("OBSERVED user restrictions changed");
-                handleUserRestrictionAction();
-            } else if (action.equals(ACTION_RESTRICT_BACKGROUND_CHANGED)) {
-                mLog.log("OBSERVED data saver changed");
-                handleDataSaverChanged();
-            } else if (action.equals(TetheringNotificationUpdater.ACTION_DISABLE_TETHERING)) {
-                untetherAll();
-            }
-        }
-
-        private void handleConnectivityAction(Intent intent) {
-            final NetworkInfo networkInfo =
-                    (NetworkInfo) intent.getParcelableExtra(EXTRA_NETWORK_INFO);
-            if (networkInfo == null
-                    || networkInfo.getDetailedState() == NetworkInfo.DetailedState.FAILED) {
-                return;
-            }
-
-            if (VDBG) Log.d(TAG, "Tethering got CONNECTIVITY_ACTION: " + networkInfo.toString());
-            mTetherMainSM.sendMessage(TetherMainSM.CMD_UPSTREAM_CHANGED);
-        }
-
-        private void handleUsbAction(Intent intent) {
-            final boolean usbConnected = intent.getBooleanExtra(USB_CONNECTED, false);
-            final boolean usbConfigured = intent.getBooleanExtra(USB_CONFIGURED, false);
-            final boolean rndisEnabled = intent.getBooleanExtra(USB_FUNCTION_RNDIS, false);
-            final boolean ncmEnabled = intent.getBooleanExtra(USB_FUNCTION_NCM, false);
-
-            mLog.log(String.format("USB bcast connected:%s configured:%s rndis:%s",
-                    usbConnected, usbConfigured, rndisEnabled));
-
-            // There are three types of ACTION_USB_STATE:
-            //
-            //     - DISCONNECTED (USB_CONNECTED and USB_CONFIGURED are 0)
-            //       Meaning: USB connection has ended either because of
-            //       software reset or hard unplug.
-            //
-            //     - CONNECTED (USB_CONNECTED is 1, USB_CONFIGURED is 0)
-            //       Meaning: the first stage of USB protocol handshake has
-            //       occurred but it is not complete.
-            //
-            //     - CONFIGURED (USB_CONNECTED and USB_CONFIGURED are 1)
-            //       Meaning: the USB handshake is completely done and all the
-            //       functions are ready to use.
-            //
-            // For more explanation, see b/62552150 .
-            synchronized (Tethering.this.mPublicSync) {
-                if (!usbConnected && mRndisEnabled) {
-                    // Turn off tethering if it was enabled and there is a disconnect.
-                    tetherMatchingInterfaces(IpServer.STATE_AVAILABLE, TETHERING_USB);
-                    mEntitlementMgr.stopProvisioningIfNeeded(TETHERING_USB);
-                } else if (usbConfigured && rndisEnabled) {
-                    // Tether if rndis is enabled and usb is configured.
-                    tetherMatchingInterfaces(IpServer.STATE_TETHERED, TETHERING_USB);
-                } else if (usbConnected && ncmEnabled) {
-                    tetherMatchingInterfaces(IpServer.STATE_LOCAL_ONLY, TETHERING_NCM);
-                }
-                mRndisEnabled = usbConfigured && rndisEnabled;
-            }
-        }
-
-        private void handleWifiApAction(Intent intent) {
-            final int curState = intent.getIntExtra(EXTRA_WIFI_AP_STATE, WIFI_AP_STATE_DISABLED);
-            final String ifname = intent.getStringExtra(EXTRA_WIFI_AP_INTERFACE_NAME);
-            final int ipmode = intent.getIntExtra(EXTRA_WIFI_AP_MODE, IFACE_IP_MODE_UNSPECIFIED);
-
-            synchronized (Tethering.this.mPublicSync) {
-                switch (curState) {
-                    case WifiManager.WIFI_AP_STATE_ENABLING:
-                        // We can see this state on the way to both enabled and failure states.
-                        break;
-                    case WifiManager.WIFI_AP_STATE_ENABLED:
-                        enableWifiIpServingLocked(ifname, ipmode);
-                        break;
-                    case WifiManager.WIFI_AP_STATE_DISABLING:
-                        // We can see this state on the way to disabled.
-                        break;
-                    case WifiManager.WIFI_AP_STATE_DISABLED:
-                    case WifiManager.WIFI_AP_STATE_FAILED:
-                    default:
-                        disableWifiIpServingLocked(ifname, curState);
-                        break;
-                }
-            }
-        }
-
-        private boolean isGroupOwner(WifiP2pGroup group) {
-            return group != null && group.isGroupOwner()
-                    && !TextUtils.isEmpty(group.getInterface());
-        }
-
-        private void handleWifiP2pAction(Intent intent) {
-            if (mConfig.isWifiP2pLegacyTetheringMode()) return;
-
-            final WifiP2pInfo p2pInfo =
-                    (WifiP2pInfo) intent.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_INFO);
-            final WifiP2pGroup group =
-                    (WifiP2pGroup) intent.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_GROUP);
-
-            if (VDBG) {
-                Log.d(TAG, "WifiP2pAction: P2pInfo: " + p2pInfo + " Group: " + group);
-            }
-
-            synchronized (Tethering.this.mPublicSync) {
-                // if no group is formed, bring it down if needed.
-                if (p2pInfo == null || !p2pInfo.groupFormed) {
-                    disableWifiP2pIpServingLockedIfNeeded(mWifiP2pTetherInterface);
-                    mWifiP2pTetherInterface = null;
-                    return;
-                }
-
-                // If there is a group but the device is not the owner, bail out.
-                if (!isGroupOwner(group)) return;
-
-                // If already serving from the correct interface, nothing to do.
-                if (group.getInterface().equals(mWifiP2pTetherInterface)) return;
-
-                // If already serving from another interface, turn it down first.
-                if (!TextUtils.isEmpty(mWifiP2pTetherInterface)) {
-                    mLog.w("P2P tethered interface " + mWifiP2pTetherInterface
-                            + "is different from current interface "
-                            + group.getInterface() + ", re-tether it");
-                    disableWifiP2pIpServingLockedIfNeeded(mWifiP2pTetherInterface);
-                }
-
-                // Finally bring up serving on the new interface
-                mWifiP2pTetherInterface = group.getInterface();
-                enableWifiIpServingLocked(mWifiP2pTetherInterface, IFACE_IP_MODE_LOCAL_ONLY);
-            }
-        }
-
-        private void handleUserRestrictionAction() {
-            mTetheringRestriction.onUserRestrictionsChanged();
-        }
-
-        private void handleDataSaverChanged() {
-            final ConnectivityManager connMgr = (ConnectivityManager) mContext.getSystemService(
-                    Context.CONNECTIVITY_SERVICE);
-            final boolean isDataSaverEnabled = connMgr.getRestrictBackgroundStatus()
-                    != ConnectivityManager.RESTRICT_BACKGROUND_STATUS_DISABLED;
-
-            if (mDataSaverEnabled == isDataSaverEnabled) return;
-
-            mDataSaverEnabled = isDataSaverEnabled;
-            if (mDataSaverEnabled) {
-                untetherAll();
-            }
-        }
-    }
-
-    @VisibleForTesting
-    boolean isTetheringActive() {
-        return mActiveTetheringRequests.size() > 0;
-    }
-
-    @VisibleForTesting
-    protected static class UserRestrictionActionListener {
-        private final UserManager mUserMgr;
-        private final Tethering mWrapper;
-        private final TetheringNotificationUpdater mNotificationUpdater;
-        public boolean mDisallowTethering;
-
-        public UserRestrictionActionListener(@NonNull UserManager um, @NonNull Tethering wrapper,
-                @NonNull TetheringNotificationUpdater updater) {
-            mUserMgr = um;
-            mWrapper = wrapper;
-            mNotificationUpdater = updater;
-            mDisallowTethering = false;
-        }
-
-        public void onUserRestrictionsChanged() {
-            // getUserRestrictions gets restriction for this process' user, which is the primary
-            // user. This is fine because DISALLOW_CONFIG_TETHERING can only be set on the primary
-            // user. See UserManager.DISALLOW_CONFIG_TETHERING.
-            final Bundle restrictions = mUserMgr.getUserRestrictions();
-            final boolean newlyDisallowed =
-                    restrictions.getBoolean(UserManager.DISALLOW_CONFIG_TETHERING);
-            final boolean prevDisallowed = mDisallowTethering;
-            mDisallowTethering = newlyDisallowed;
-
-            final boolean tetheringDisallowedChanged = (newlyDisallowed != prevDisallowed);
-            if (!tetheringDisallowedChanged) {
-                return;
-            }
-
-            if (!newlyDisallowed) {
-                // Clear the restricted notification when user is allowed to have tethering
-                // function.
-                mNotificationUpdater.tetheringRestrictionLifted();
-                return;
-            }
-
-            if (mWrapper.isTetheringActive()) {
-                // Restricted notification is shown when tethering function is disallowed on
-                // user's device.
-                mNotificationUpdater.notifyTetheringDisabledByRestriction();
-
-                // Untether from all downstreams since tethering is disallowed.
-                mWrapper.untetherAll();
-            }
-            // TODO(b/148139325): send tetheringSupported on restriction change
-        }
-    }
-
-    private void disableWifiIpServingLockedCommon(int tetheringType, String ifname, int apState) {
-        mLog.log("Canceling WiFi tethering request -"
-                + " type=" + tetheringType
-                + " interface=" + ifname
-                + " state=" + apState);
-
-        if (!TextUtils.isEmpty(ifname)) {
-            final TetherState ts = mTetherStates.get(ifname);
-            if (ts != null) {
-                ts.ipServer.unwanted();
-                return;
-            }
-        }
-
-        for (int i = 0; i < mTetherStates.size(); i++) {
-            final IpServer ipServer = mTetherStates.valueAt(i).ipServer;
-            if (ipServer.interfaceType() == tetheringType) {
-                ipServer.unwanted();
-                return;
-            }
-        }
-
-        mLog.log("Error disabling Wi-Fi IP serving; "
-                + (TextUtils.isEmpty(ifname) ? "no interface name specified"
-                                           : "specified interface: " + ifname));
-    }
-
-    private void disableWifiIpServingLocked(String ifname, int apState) {
-        // Regardless of whether we requested this transition, the AP has gone
-        // down.  Don't try to tether again unless we're requested to do so.
-        // TODO: Remove this altogether, once Wi-Fi reliably gives us an
-        // interface name with every broadcast.
-        mWifiTetherRequested = false;
-
-        disableWifiIpServingLockedCommon(TETHERING_WIFI, ifname, apState);
-    }
-
-    private void disableWifiP2pIpServingLockedIfNeeded(String ifname) {
-        if (TextUtils.isEmpty(ifname)) return;
-
-        disableWifiIpServingLockedCommon(TETHERING_WIFI_P2P, ifname, /* fake */ 0);
-    }
-
-    private void enableWifiIpServingLocked(String ifname, int wifiIpMode) {
-        // Map wifiIpMode values to IpServer.Callback serving states, inferring
-        // from mWifiTetherRequested as a final "best guess".
-        final int ipServingMode;
-        switch (wifiIpMode) {
-            case IFACE_IP_MODE_TETHERED:
-                ipServingMode = IpServer.STATE_TETHERED;
-                break;
-            case IFACE_IP_MODE_LOCAL_ONLY:
-                ipServingMode = IpServer.STATE_LOCAL_ONLY;
-                break;
-            default:
-                mLog.e("Cannot enable IP serving in unknown WiFi mode: " + wifiIpMode);
-                return;
-        }
-
-        if (!TextUtils.isEmpty(ifname)) {
-            maybeTrackNewInterfaceLocked(ifname);
-            changeInterfaceState(ifname, ipServingMode);
-        } else {
-            mLog.e(String.format(
-                    "Cannot enable IP serving in mode %s on missing interface name",
-                    ipServingMode));
-        }
-    }
-
-    // TODO: Consider renaming to something more accurate in its description.
-    // This method:
-    //     - allows requesting either tethering or local hotspot serving states
-    //     - handles both enabling and disabling serving states
-    //     - only tethers the first matching interface in listInterfaces()
-    //       order of a given type
-    private void tetherMatchingInterfaces(int requestedState, int interfaceType) {
-        if (VDBG) {
-            Log.d(TAG, "tetherMatchingInterfaces(" + requestedState + ", " + interfaceType + ")");
-        }
-
-        String[] ifaces = null;
-        try {
-            ifaces = mNetd.interfaceGetList();
-        } catch (RemoteException | ServiceSpecificException e) {
-            Log.e(TAG, "Error listing Interfaces", e);
-            return;
-        }
-        String chosenIface = null;
-        if (ifaces != null) {
-            for (String iface : ifaces) {
-                if (ifaceNameToType(iface) == interfaceType) {
-                    chosenIface = iface;
-                    break;
-                }
-            }
-        }
-        if (chosenIface == null) {
-            Log.e(TAG, "could not find iface of type " + interfaceType);
-            return;
-        }
-
-        changeInterfaceState(chosenIface, requestedState);
-    }
-
-    private void changeInterfaceState(String ifname, int requestedState) {
-        final int result;
-        switch (requestedState) {
-            case IpServer.STATE_UNAVAILABLE:
-            case IpServer.STATE_AVAILABLE:
-                result = untether(ifname);
-                break;
-            case IpServer.STATE_TETHERED:
-            case IpServer.STATE_LOCAL_ONLY:
-                result = tether(ifname, requestedState);
-                break;
-            default:
-                Log.wtf(TAG, "Unknown interface state: " + requestedState);
-                return;
-        }
-        if (result != TETHER_ERROR_NO_ERROR) {
-            Log.e(TAG, "unable start or stop tethering on iface " + ifname);
-            return;
-        }
-    }
-
-    TetheringConfiguration getTetheringConfiguration() {
-        return mConfig;
-    }
-
-    boolean hasTetherableConfiguration() {
-        final TetheringConfiguration cfg = mConfig;
-        final boolean hasDownstreamConfiguration =
-                (cfg.tetherableUsbRegexs.length != 0)
-                || (cfg.tetherableWifiRegexs.length != 0)
-                || (cfg.tetherableBluetoothRegexs.length != 0);
-        final boolean hasUpstreamConfiguration = !cfg.preferredUpstreamIfaceTypes.isEmpty()
-                || cfg.chooseUpstreamAutomatically;
-
-        return hasDownstreamConfiguration && hasUpstreamConfiguration;
-    }
-
-    // TODO - update callers to use getTetheringConfiguration(),
-    // which has only final members.
-    String[] getTetherableUsbRegexs() {
-        return copy(mConfig.tetherableUsbRegexs);
-    }
-
-    String[] getTetherableWifiRegexs() {
-        return copy(mConfig.tetherableWifiRegexs);
-    }
-
-    String[] getTetherableBluetoothRegexs() {
-        return copy(mConfig.tetherableBluetoothRegexs);
-    }
-
-    int setUsbTethering(boolean enable) {
-        if (VDBG) Log.d(TAG, "setUsbTethering(" + enable + ")");
-        UsbManager usbManager = (UsbManager) mContext.getSystemService(Context.USB_SERVICE);
-        if (usbManager == null) {
-            mLog.e("setUsbTethering: failed to get UsbManager!");
-            return TETHER_ERROR_SERVICE_UNAVAIL;
-        }
-
-        synchronized (mPublicSync) {
-            usbManager.setCurrentFunctions(enable ? UsbManager.FUNCTION_RNDIS
-                    : UsbManager.FUNCTION_NONE);
-        }
-        return TETHER_ERROR_NO_ERROR;
-    }
-
-    private int setNcmTethering(boolean enable) {
-        if (VDBG) Log.d(TAG, "setNcmTethering(" + enable + ")");
-        UsbManager usbManager = (UsbManager) mContext.getSystemService(Context.USB_SERVICE);
-        synchronized (mPublicSync) {
-            usbManager.setCurrentFunctions(enable ? UsbManager.FUNCTION_NCM
-                    : UsbManager.FUNCTION_NONE);
-        }
-        return TETHER_ERROR_NO_ERROR;
-    }
-
-    // TODO review API - figure out how to delete these entirely.
-    String[] getTetheredIfaces() {
-        ArrayList<String> list = new ArrayList<String>();
-        synchronized (mPublicSync) {
-            for (int i = 0; i < mTetherStates.size(); i++) {
-                TetherState tetherState = mTetherStates.valueAt(i);
-                if (tetherState.lastState == IpServer.STATE_TETHERED) {
-                    list.add(mTetherStates.keyAt(i));
-                }
-            }
-        }
-        return list.toArray(new String[list.size()]);
-    }
-
-    String[] getTetherableIfaces() {
-        ArrayList<String> list = new ArrayList<String>();
-        synchronized (mPublicSync) {
-            for (int i = 0; i < mTetherStates.size(); i++) {
-                TetherState tetherState = mTetherStates.valueAt(i);
-                if (tetherState.lastState == IpServer.STATE_AVAILABLE) {
-                    list.add(mTetherStates.keyAt(i));
-                }
-            }
-        }
-        return list.toArray(new String[list.size()]);
-    }
-
-    String[] getTetheredDhcpRanges() {
-        // TODO: this is only valid for the old DHCP server. Latest search suggests it is only used
-        // by WifiP2pServiceImpl to start dnsmasq: remove/deprecate after migrating callers.
-        return mConfig.legacyDhcpRanges;
-    }
-
-    String[] getErroredIfaces() {
-        ArrayList<String> list = new ArrayList<String>();
-        synchronized (mPublicSync) {
-            for (int i = 0; i < mTetherStates.size(); i++) {
-                TetherState tetherState = mTetherStates.valueAt(i);
-                if (tetherState.lastError != TETHER_ERROR_NO_ERROR) {
-                    list.add(mTetherStates.keyAt(i));
-                }
-            }
-        }
-        return list.toArray(new String[list.size()]);
-    }
-
-    private void logMessage(State state, int what) {
-        mLog.log(state.getName() + " got " + sMagicDecoderRing.get(what, Integer.toString(what)));
-    }
-
-    private boolean upstreamWanted() {
-        if (!mForwardedDownstreams.isEmpty()) return true;
-
-        synchronized (mPublicSync) {
-            return mWifiTetherRequested;
-        }
-    }
-
-    // Needed because the canonical source of upstream truth is just the
-    // upstream interface set, |mCurrentUpstreamIfaceSet|.
-    private boolean pertainsToCurrentUpstream(UpstreamNetworkState ns) {
-        if (ns != null && ns.linkProperties != null && mCurrentUpstreamIfaceSet != null) {
-            for (String ifname : ns.linkProperties.getAllInterfaceNames()) {
-                if (mCurrentUpstreamIfaceSet.ifnames.contains(ifname)) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    class TetherMainSM extends StateMachine {
-        // an interface SM has requested Tethering/Local Hotspot
-        static final int EVENT_IFACE_SERVING_STATE_ACTIVE       = BASE_MAIN_SM + 1;
-        // an interface SM has unrequested Tethering/Local Hotspot
-        static final int EVENT_IFACE_SERVING_STATE_INACTIVE     = BASE_MAIN_SM + 2;
-        // upstream connection change - do the right thing
-        static final int CMD_UPSTREAM_CHANGED                   = BASE_MAIN_SM + 3;
-        // we don't have a valid upstream conn, check again after a delay
-        static final int CMD_RETRY_UPSTREAM                     = BASE_MAIN_SM + 4;
-        // Events from NetworkCallbacks that we process on the main state
-        // machine thread on behalf of the UpstreamNetworkMonitor.
-        static final int EVENT_UPSTREAM_CALLBACK                = BASE_MAIN_SM + 5;
-        // we treated the error and want now to clear it
-        static final int CMD_CLEAR_ERROR                        = BASE_MAIN_SM + 6;
-        static final int EVENT_IFACE_UPDATE_LINKPROPERTIES      = BASE_MAIN_SM + 7;
-        // Events from EntitlementManager to choose upstream again.
-        static final int EVENT_UPSTREAM_PERMISSION_CHANGED      = BASE_MAIN_SM + 8;
-        private final State mInitialState;
-        private final State mTetherModeAliveState;
-
-        private final State mSetIpForwardingEnabledErrorState;
-        private final State mSetIpForwardingDisabledErrorState;
-        private final State mStartTetheringErrorState;
-        private final State mStopTetheringErrorState;
-        private final State mSetDnsForwardersErrorState;
-
-        // This list is a little subtle.  It contains all the interfaces that currently are
-        // requesting tethering, regardless of whether these interfaces are still members of
-        // mTetherStates.  This allows us to maintain the following predicates:
-        //
-        // 1) mTetherStates contains the set of all currently existing, tetherable, link state up
-        //    interfaces.
-        // 2) mNotifyList contains all state machines that may have outstanding tethering state
-        //    that needs to be torn down.
-        //
-        // Because we excise interfaces immediately from mTetherStates, we must maintain mNotifyList
-        // so that the garbage collector does not clean up the state machine before it has a chance
-        // to tear itself down.
-        private final ArrayList<IpServer> mNotifyList;
-        private final IPv6TetheringCoordinator mIPv6TetheringCoordinator;
-        private final OffloadWrapper mOffload;
-
-        private static final int UPSTREAM_SETTLE_TIME_MS     = 10000;
-
-        TetherMainSM(String name, Looper looper, TetheringDependencies deps) {
-            super(name, looper);
-
-            mInitialState = new InitialState();
-            mTetherModeAliveState = new TetherModeAliveState();
-            mSetIpForwardingEnabledErrorState = new SetIpForwardingEnabledErrorState();
-            mSetIpForwardingDisabledErrorState = new SetIpForwardingDisabledErrorState();
-            mStartTetheringErrorState = new StartTetheringErrorState();
-            mStopTetheringErrorState = new StopTetheringErrorState();
-            mSetDnsForwardersErrorState = new SetDnsForwardersErrorState();
-
-            addState(mInitialState);
-            addState(mTetherModeAliveState);
-            addState(mSetIpForwardingEnabledErrorState);
-            addState(mSetIpForwardingDisabledErrorState);
-            addState(mStartTetheringErrorState);
-            addState(mStopTetheringErrorState);
-            addState(mSetDnsForwardersErrorState);
-
-            mNotifyList = new ArrayList<>();
-            mIPv6TetheringCoordinator = deps.getIPv6TetheringCoordinator(mNotifyList, mLog);
-            mOffload = new OffloadWrapper();
-
-            setInitialState(mInitialState);
-        }
-
-        class InitialState extends State {
-            @Override
-            public boolean processMessage(Message message) {
-                logMessage(this, message.what);
-                switch (message.what) {
-                    case EVENT_IFACE_SERVING_STATE_ACTIVE: {
-                        final IpServer who = (IpServer) message.obj;
-                        if (VDBG) Log.d(TAG, "Tether Mode requested by " + who);
-                        handleInterfaceServingStateActive(message.arg1, who);
-                        transitionTo(mTetherModeAliveState);
-                        break;
-                    }
-                    case EVENT_IFACE_SERVING_STATE_INACTIVE: {
-                        final IpServer who = (IpServer) message.obj;
-                        if (VDBG) Log.d(TAG, "Tether Mode unrequested by " + who);
-                        handleInterfaceServingStateInactive(who);
-                        break;
-                    }
-                    case EVENT_IFACE_UPDATE_LINKPROPERTIES:
-                        // Silently ignore these for now.
-                        break;
-                    default:
-                        return NOT_HANDLED;
-                }
-                return HANDLED;
-            }
-        }
-
-        protected boolean turnOnMainTetherSettings() {
-            final TetheringConfiguration cfg = mConfig;
-            try {
-                mNetd.ipfwdEnableForwarding(TAG);
-            } catch (RemoteException | ServiceSpecificException e) {
-                mLog.e(e);
-                transitionTo(mSetIpForwardingEnabledErrorState);
-                return false;
-            }
-
-            // TODO: Randomize DHCPv4 ranges, especially in hotspot mode.
-            // Legacy DHCP server is disabled if passed an empty ranges array
-            final String[] dhcpRanges = cfg.enableLegacyDhcpServer
-                    ? cfg.legacyDhcpRanges : new String[0];
-            try {
-                NetdUtils.tetherStart(mNetd, true /** usingLegacyDnsProxy */, dhcpRanges);
-            } catch (RemoteException | ServiceSpecificException e) {
-                try {
-                    // Stop and retry.
-                    mNetd.tetherStop();
-                    NetdUtils.tetherStart(mNetd, true /** usingLegacyDnsProxy */, dhcpRanges);
-                } catch (RemoteException | ServiceSpecificException ee) {
-                    mLog.e(ee);
-                    transitionTo(mStartTetheringErrorState);
-                    return false;
-                }
-            }
-            mLog.log("SET main tether settings: ON");
-            return true;
-        }
-
-        protected boolean turnOffMainTetherSettings() {
-            try {
-                mNetd.tetherStop();
-            } catch (RemoteException | ServiceSpecificException e) {
-                mLog.e(e);
-                transitionTo(mStopTetheringErrorState);
-                return false;
-            }
-            try {
-                mNetd.ipfwdDisableForwarding(TAG);
-            } catch (RemoteException | ServiceSpecificException e) {
-                mLog.e(e);
-                transitionTo(mSetIpForwardingDisabledErrorState);
-                return false;
-            }
-            transitionTo(mInitialState);
-            mLog.log("SET main tether settings: OFF");
-            return true;
-        }
-
-        protected void chooseUpstreamType(boolean tryCell) {
-            // We rebuild configuration on ACTION_CONFIGURATION_CHANGED, but we
-            // do not currently know how to watch for changes in DUN settings.
-            maybeDunSettingChanged();
-
-            final TetheringConfiguration config = mConfig;
-            final UpstreamNetworkState ns = (config.chooseUpstreamAutomatically)
-                    ? mUpstreamNetworkMonitor.getCurrentPreferredUpstream()
-                    : mUpstreamNetworkMonitor.selectPreferredUpstreamType(
-                            config.preferredUpstreamIfaceTypes);
-            if (ns == null) {
-                if (tryCell) {
-                    mUpstreamNetworkMonitor.registerMobileNetworkRequest();
-                    // We think mobile should be coming up; don't set a retry.
-                } else {
-                    sendMessageDelayed(CMD_RETRY_UPSTREAM, UPSTREAM_SETTLE_TIME_MS);
-                }
-            }
-            setUpstreamNetwork(ns);
-            final Network newUpstream = (ns != null) ? ns.network : null;
-            if (mTetherUpstream != newUpstream) {
-                mTetherUpstream = newUpstream;
-                mUpstreamNetworkMonitor.setCurrentUpstream(mTetherUpstream);
-                reportUpstreamChanged(ns);
-            }
-        }
-
-        protected void setUpstreamNetwork(UpstreamNetworkState ns) {
-            InterfaceSet ifaces = null;
-            if (ns != null) {
-                // Find the interface with the default IPv4 route. It may be the
-                // interface described by linkProperties, or one of the interfaces
-                // stacked on top of it.
-                mLog.i("Looking for default routes on: " + ns.linkProperties);
-                ifaces = TetheringInterfaceUtils.getTetheringInterfaces(ns);
-                mLog.i("Found upstream interface(s): " + ifaces);
-            }
-
-            if (ifaces != null) {
-                setDnsForwarders(ns.network, ns.linkProperties);
-            }
-            notifyDownstreamsOfNewUpstreamIface(ifaces);
-            if (ns != null && pertainsToCurrentUpstream(ns)) {
-                // If we already have UpstreamNetworkState for this network update it immediately.
-                handleNewUpstreamNetworkState(ns);
-            } else if (mCurrentUpstreamIfaceSet == null) {
-                // There are no available upstream networks.
-                handleNewUpstreamNetworkState(null);
-            }
-        }
-
-        protected void setDnsForwarders(final Network network, final LinkProperties lp) {
-            // TODO: Set v4 and/or v6 DNS per available connectivity.
-            final Collection<InetAddress> dnses = lp.getDnsServers();
-            // TODO: Properly support the absence of DNS servers.
-            final String[] dnsServers;
-            if (dnses != null && !dnses.isEmpty()) {
-                dnsServers = new String[dnses.size()];
-                int i = 0;
-                for (InetAddress dns : dnses) {
-                    dnsServers[i++] = dns.getHostAddress();
-                }
-            } else {
-                dnsServers = mConfig.defaultIPv4DNS;
-            }
-            final int netId = (network != null) ? network.getNetId() : NETID_UNSET;
-            try {
-                mNetd.tetherDnsSet(netId, dnsServers);
-                mLog.log(String.format(
-                        "SET DNS forwarders: network=%s dnsServers=%s",
-                        network, Arrays.toString(dnsServers)));
-            } catch (RemoteException | ServiceSpecificException e) {
-                // TODO: Investigate how this can fail and what exactly
-                // happens if/when such failures occur.
-                mLog.e("setting DNS forwarders failed, " + e);
-                transitionTo(mSetDnsForwardersErrorState);
-            }
-        }
-
-        protected void notifyDownstreamsOfNewUpstreamIface(InterfaceSet ifaces) {
-            mCurrentUpstreamIfaceSet = ifaces;
-            for (IpServer ipServer : mNotifyList) {
-                ipServer.sendMessage(IpServer.CMD_TETHER_CONNECTION_CHANGED, ifaces);
-            }
-        }
-
-        protected void handleNewUpstreamNetworkState(UpstreamNetworkState ns) {
-            mIPv6TetheringCoordinator.updateUpstreamNetworkState(ns);
-            mOffload.updateUpstreamNetworkState(ns);
-        }
-
-        private void handleInterfaceServingStateActive(int mode, IpServer who) {
-            if (mNotifyList.indexOf(who) < 0) {
-                mNotifyList.add(who);
-                mIPv6TetheringCoordinator.addActiveDownstream(who, mode);
-            }
-
-            if (mode == IpServer.STATE_TETHERED) {
-                // No need to notify OffloadController just yet as there are no
-                // "offload-able" prefixes to pass along. This will handled
-                // when the TISM informs Tethering of its LinkProperties.
-                mForwardedDownstreams.add(who);
-            } else {
-                mOffload.excludeDownstreamInterface(who.interfaceName());
-                mForwardedDownstreams.remove(who);
-            }
-
-            // If this is a Wi-Fi interface, notify WifiManager of the active serving state.
-            if (who.interfaceType() == TETHERING_WIFI) {
-                final WifiManager mgr = getWifiManager();
-                final String iface = who.interfaceName();
-                switch (mode) {
-                    case IpServer.STATE_TETHERED:
-                        mgr.updateInterfaceIpState(iface, IFACE_IP_MODE_TETHERED);
-                        break;
-                    case IpServer.STATE_LOCAL_ONLY:
-                        mgr.updateInterfaceIpState(iface, IFACE_IP_MODE_LOCAL_ONLY);
-                        break;
-                    default:
-                        Log.wtf(TAG, "Unknown active serving mode: " + mode);
-                        break;
-                }
-            }
-        }
-
-        private void handleInterfaceServingStateInactive(IpServer who) {
-            mNotifyList.remove(who);
-            mIPv6TetheringCoordinator.removeActiveDownstream(who);
-            mOffload.excludeDownstreamInterface(who.interfaceName());
-            mForwardedDownstreams.remove(who);
-            updateConnectedClients(null /* wifiClients */);
-
-            // If this is a Wi-Fi interface, tell WifiManager of any errors
-            // or the inactive serving state.
-            if (who.interfaceType() == TETHERING_WIFI) {
-                if (who.lastError() != TETHER_ERROR_NO_ERROR) {
-                    getWifiManager().updateInterfaceIpState(
-                            who.interfaceName(), IFACE_IP_MODE_CONFIGURATION_ERROR);
-                } else {
-                    getWifiManager().updateInterfaceIpState(
-                            who.interfaceName(), IFACE_IP_MODE_UNSPECIFIED);
-                }
-            }
-        }
-
-        private void addUpstreamPrefixes(final UpstreamNetworkState ns) {
-            mPrivateAddressCoordinator.updateUpstreamPrefix(ns.network, ns.linkProperties);
-        }
-
-        private void removeUpstreamPrefixes(final UpstreamNetworkState ns) {
-            mPrivateAddressCoordinator.removeUpstreamPrefix(ns.network);
-        }
-
-        @VisibleForTesting
-        void handleUpstreamNetworkMonitorCallback(int arg1, Object o) {
-            if (arg1 == UpstreamNetworkMonitor.NOTIFY_LOCAL_PREFIXES) {
-                mOffload.sendOffloadExemptPrefixes((Set<IpPrefix>) o);
-                return;
-            }
-
-            final UpstreamNetworkState ns = (UpstreamNetworkState) o;
-            switch (arg1) {
-                case UpstreamNetworkMonitor.EVENT_ON_LINKPROPERTIES:
-                    addUpstreamPrefixes(ns);
-                    break;
-                case UpstreamNetworkMonitor.EVENT_ON_LOST:
-                    removeUpstreamPrefixes(ns);
-                    break;
-            }
-
-            if (ns == null || !pertainsToCurrentUpstream(ns)) {
-                // TODO: In future, this is where upstream evaluation and selection
-                // could be handled for notifications which include sufficient data.
-                // For example, after CONNECTIVITY_ACTION listening is removed, here
-                // is where we could observe a Wi-Fi network becoming available and
-                // passing validation.
-                if (mCurrentUpstreamIfaceSet == null) {
-                    // If we have no upstream interface, try to run through upstream
-                    // selection again.  If, for example, IPv4 connectivity has shown up
-                    // after IPv6 (e.g., 464xlat became available) we want the chance to
-                    // notice and act accordingly.
-                    chooseUpstreamType(false);
-                }
-                return;
-            }
-
-            switch (arg1) {
-                case UpstreamNetworkMonitor.EVENT_ON_CAPABILITIES:
-                    if (ns.network.equals(mTetherUpstream)) {
-                        mNotificationUpdater.onUpstreamCapabilitiesChanged(ns.networkCapabilities);
-                    }
-                    handleNewUpstreamNetworkState(ns);
-                    break;
-                case UpstreamNetworkMonitor.EVENT_ON_LINKPROPERTIES:
-                    chooseUpstreamType(false);
-                    break;
-                case UpstreamNetworkMonitor.EVENT_ON_LOST:
-                    // TODO: Re-evaluate possible upstreams. Currently upstream
-                    // reevaluation is triggered via received CONNECTIVITY_ACTION
-                    // broadcasts that result in being passed a
-                    // TetherMainSM.CMD_UPSTREAM_CHANGED.
-                    handleNewUpstreamNetworkState(null);
-                    break;
-                default:
-                    mLog.e("Unknown arg1 value: " + arg1);
-                    break;
-            }
-        }
-
-        class TetherModeAliveState extends State {
-            boolean mUpstreamWanted = false;
-            boolean mTryCell = true;
-
-            @Override
-            public void enter() {
-                // If turning on main tether settings fails, we have already
-                // transitioned to an error state; exit early.
-                if (!turnOnMainTetherSettings()) {
-                    return;
-                }
-
-                mPrivateAddressCoordinator.maybeRemoveDeprecatedUpstreams();
-                mUpstreamNetworkMonitor.startObserveAllNetworks();
-
-                // TODO: De-duplicate with updateUpstreamWanted() below.
-                if (upstreamWanted()) {
-                    mUpstreamWanted = true;
-                    mOffload.start();
-                    chooseUpstreamType(true);
-                    mTryCell = false;
-                }
-
-                // TODO: Check the upstream interface if it is managed by BPF offload.
-                mBpfCoordinator.startPolling();
-            }
-
-            @Override
-            public void exit() {
-                mOffload.stop();
-                mUpstreamNetworkMonitor.stop();
-                notifyDownstreamsOfNewUpstreamIface(null);
-                handleNewUpstreamNetworkState(null);
-                if (mTetherUpstream != null) {
-                    mTetherUpstream = null;
-                    reportUpstreamChanged(null);
-                }
-                mBpfCoordinator.stopPolling();
-            }
-
-            private boolean updateUpstreamWanted() {
-                final boolean previousUpstreamWanted = mUpstreamWanted;
-                mUpstreamWanted = upstreamWanted();
-                if (mUpstreamWanted != previousUpstreamWanted) {
-                    if (mUpstreamWanted) {
-                        mOffload.start();
-                    } else {
-                        mOffload.stop();
-                    }
-                }
-                return previousUpstreamWanted;
-            }
-
-            @Override
-            public boolean processMessage(Message message) {
-                logMessage(this, message.what);
-                boolean retValue = true;
-                switch (message.what) {
-                    case EVENT_IFACE_SERVING_STATE_ACTIVE: {
-                        IpServer who = (IpServer) message.obj;
-                        if (VDBG) Log.d(TAG, "Tether Mode requested by " + who);
-                        handleInterfaceServingStateActive(message.arg1, who);
-                        who.sendMessage(IpServer.CMD_TETHER_CONNECTION_CHANGED,
-                                mCurrentUpstreamIfaceSet);
-                        // If there has been a change and an upstream is now
-                        // desired, kick off the selection process.
-                        final boolean previousUpstreamWanted = updateUpstreamWanted();
-                        if (!previousUpstreamWanted && mUpstreamWanted) {
-                            chooseUpstreamType(true);
-                        }
-                        break;
-                    }
-                    case EVENT_IFACE_SERVING_STATE_INACTIVE: {
-                        IpServer who = (IpServer) message.obj;
-                        if (VDBG) Log.d(TAG, "Tether Mode unrequested by " + who);
-                        handleInterfaceServingStateInactive(who);
-
-                        if (mNotifyList.isEmpty()) {
-                            // This transitions us out of TetherModeAliveState,
-                            // either to InitialState or an error state.
-                            turnOffMainTetherSettings();
-                            break;
-                        }
-
-                        if (DBG) {
-                            Log.d(TAG, "TetherModeAlive still has " + mNotifyList.size()
-                                    + " live requests:");
-                            for (IpServer o : mNotifyList) {
-                                Log.d(TAG, "  " + o);
-                            }
-                        }
-                        // If there has been a change and an upstream is no
-                        // longer desired, release any mobile requests.
-                        final boolean previousUpstreamWanted = updateUpstreamWanted();
-                        if (previousUpstreamWanted && !mUpstreamWanted) {
-                            mUpstreamNetworkMonitor.releaseMobileNetworkRequest();
-                        }
-                        break;
-                    }
-                    case EVENT_IFACE_UPDATE_LINKPROPERTIES: {
-                        final LinkProperties newLp = (LinkProperties) message.obj;
-                        if (message.arg1 == IpServer.STATE_TETHERED) {
-                            mOffload.updateDownstreamLinkProperties(newLp);
-                        } else {
-                            mOffload.excludeDownstreamInterface(newLp.getInterfaceName());
-                        }
-                        break;
-                    }
-                    case EVENT_UPSTREAM_PERMISSION_CHANGED:
-                    case CMD_UPSTREAM_CHANGED:
-                        updateUpstreamWanted();
-                        if (!mUpstreamWanted) break;
-
-                        // Need to try DUN immediately if Wi-Fi goes down.
-                        chooseUpstreamType(true);
-                        mTryCell = false;
-                        break;
-                    case CMD_RETRY_UPSTREAM:
-                        updateUpstreamWanted();
-                        if (!mUpstreamWanted) break;
-
-                        chooseUpstreamType(mTryCell);
-                        mTryCell = !mTryCell;
-                        break;
-                    case EVENT_UPSTREAM_CALLBACK: {
-                        updateUpstreamWanted();
-                        if (mUpstreamWanted) {
-                            handleUpstreamNetworkMonitorCallback(message.arg1, message.obj);
-                        }
-                        break;
-                    }
-                    default:
-                        retValue = false;
-                        break;
-                }
-                return retValue;
-            }
-        }
-
-        class ErrorState extends State {
-            private int mErrorNotification;
-
-            @Override
-            public boolean processMessage(Message message) {
-                boolean retValue = true;
-                switch (message.what) {
-                    case EVENT_IFACE_SERVING_STATE_ACTIVE:
-                        IpServer who = (IpServer) message.obj;
-                        who.sendMessage(mErrorNotification);
-                        break;
-                    case CMD_CLEAR_ERROR:
-                        mErrorNotification = TETHER_ERROR_NO_ERROR;
-                        transitionTo(mInitialState);
-                        break;
-                    default:
-                        retValue = false;
-                }
-                return retValue;
-            }
-
-            void notify(int msgType) {
-                mErrorNotification = msgType;
-                for (IpServer ipServer : mNotifyList) {
-                    ipServer.sendMessage(msgType);
-                }
-            }
-
-        }
-
-        class SetIpForwardingEnabledErrorState extends ErrorState {
-            @Override
-            public void enter() {
-                Log.e(TAG, "Error in setIpForwardingEnabled");
-                notify(IpServer.CMD_IP_FORWARDING_ENABLE_ERROR);
-            }
-        }
-
-        class SetIpForwardingDisabledErrorState extends ErrorState {
-            @Override
-            public void enter() {
-                Log.e(TAG, "Error in setIpForwardingDisabled");
-                notify(IpServer.CMD_IP_FORWARDING_DISABLE_ERROR);
-            }
-        }
-
-        class StartTetheringErrorState extends ErrorState {
-            @Override
-            public void enter() {
-                Log.e(TAG, "Error in startTethering");
-                notify(IpServer.CMD_START_TETHERING_ERROR);
-                try {
-                    mNetd.ipfwdDisableForwarding(TAG);
-                } catch (RemoteException | ServiceSpecificException e) { }
-            }
-        }
-
-        class StopTetheringErrorState extends ErrorState {
-            @Override
-            public void enter() {
-                Log.e(TAG, "Error in stopTethering");
-                notify(IpServer.CMD_STOP_TETHERING_ERROR);
-                try {
-                    mNetd.ipfwdDisableForwarding(TAG);
-                } catch (RemoteException | ServiceSpecificException e) { }
-            }
-        }
-
-        class SetDnsForwardersErrorState extends ErrorState {
-            @Override
-            public void enter() {
-                Log.e(TAG, "Error in setDnsForwarders");
-                notify(IpServer.CMD_SET_DNS_FORWARDERS_ERROR);
-                try {
-                    mNetd.tetherStop();
-                } catch (RemoteException | ServiceSpecificException e) { }
-                try {
-                    mNetd.ipfwdDisableForwarding(TAG);
-                } catch (RemoteException | ServiceSpecificException e) { }
-            }
-        }
-
-        // A wrapper class to handle multiple situations where several calls to
-        // the OffloadController need to happen together.
-        //
-        // TODO: This suggests that the interface between OffloadController and
-        // Tethering is in need of improvement. Refactor these calls into the
-        // OffloadController implementation.
-        class OffloadWrapper {
-            public void start() {
-                final int status = mOffloadController.start() ? TETHER_HARDWARE_OFFLOAD_STARTED
-                        : TETHER_HARDWARE_OFFLOAD_FAILED;
-                updateOffloadStatus(status);
-                sendOffloadExemptPrefixes();
-            }
-
-            public void stop() {
-                mOffloadController.stop();
-                updateOffloadStatus(TETHER_HARDWARE_OFFLOAD_STOPPED);
-            }
-
-            public void updateUpstreamNetworkState(UpstreamNetworkState ns) {
-                mOffloadController.setUpstreamLinkProperties(
-                        (ns != null) ? ns.linkProperties : null);
-            }
-
-            public void updateDownstreamLinkProperties(LinkProperties newLp) {
-                // Update the list of offload-exempt prefixes before adding
-                // new prefixes on downstream interfaces to the offload HAL.
-                sendOffloadExemptPrefixes();
-                mOffloadController.notifyDownstreamLinkProperties(newLp);
-            }
-
-            public void excludeDownstreamInterface(String ifname) {
-                // This and other interfaces may be in local-only hotspot mode;
-                // resend all local prefixes to the OffloadController.
-                sendOffloadExemptPrefixes();
-                mOffloadController.removeDownstreamInterface(ifname);
-            }
-
-            public void sendOffloadExemptPrefixes() {
-                sendOffloadExemptPrefixes(mUpstreamNetworkMonitor.getLocalPrefixes());
-            }
-
-            public void sendOffloadExemptPrefixes(final Set<IpPrefix> localPrefixes) {
-                // Add in well-known minimum set.
-                PrefixUtils.addNonForwardablePrefixes(localPrefixes);
-                // Add tragically hardcoded prefixes.
-                localPrefixes.add(PrefixUtils.DEFAULT_WIFI_P2P_PREFIX);
-
-                // Maybe add prefixes or addresses for downstreams, depending on
-                // the IP serving mode of each.
-                for (IpServer ipServer : mNotifyList) {
-                    final LinkProperties lp = ipServer.linkProperties();
-
-                    switch (ipServer.servingMode()) {
-                        case IpServer.STATE_UNAVAILABLE:
-                        case IpServer.STATE_AVAILABLE:
-                            // No usable LinkProperties in these states.
-                            continue;
-                        case IpServer.STATE_TETHERED:
-                            // Only add IPv4 /32 and IPv6 /128 prefixes. The
-                            // directly-connected prefixes will be sent as
-                            // downstream "offload-able" prefixes.
-                            for (LinkAddress addr : lp.getAllLinkAddresses()) {
-                                final InetAddress ip = addr.getAddress();
-                                if (ip.isLinkLocalAddress()) continue;
-                                localPrefixes.add(PrefixUtils.ipAddressAsPrefix(ip));
-                            }
-                            break;
-                        case IpServer.STATE_LOCAL_ONLY:
-                            // Add prefixes covering all local IPs.
-                            localPrefixes.addAll(PrefixUtils.localPrefixesFrom(lp));
-                            break;
-                    }
-                }
-
-                mOffloadController.setLocalPrefixes(localPrefixes);
-            }
-
-            private void updateOffloadStatus(final int newStatus) {
-                if (newStatus == mOffloadStatus) return;
-
-                mOffloadStatus = newStatus;
-                reportOffloadStatusChanged(mOffloadStatus);
-            }
-        }
-    }
-
-    private void startTrackDefaultNetwork() {
-        mUpstreamNetworkMonitor.startTrackDefaultNetwork(mDeps.getDefaultNetworkRequest(),
-                mEntitlementMgr);
-    }
-
-    /** Get the latest value of the tethering entitlement check. */
-    void requestLatestTetheringEntitlementResult(int type, ResultReceiver receiver,
-            boolean showEntitlementUi) {
-        if (receiver == null) return;
-
-        mHandler.post(() -> {
-            mEntitlementMgr.requestLatestTetheringEntitlementResult(type, receiver,
-                    showEntitlementUi);
-        });
-    }
-
-    /** Register tethering event callback */
-    void registerTetheringEventCallback(ITetheringEventCallback callback) {
-        final boolean hasListPermission =
-                hasCallingPermission(NETWORK_SETTINGS)
-                        || hasCallingPermission(PERMISSION_MAINLINE_NETWORK_STACK)
-                        || hasCallingPermission(NETWORK_STACK);
-        mHandler.post(() -> {
-            mTetheringEventCallbacks.register(callback, new CallbackCookie(hasListPermission));
-            final TetheringCallbackStartedParcel parcel = new TetheringCallbackStartedParcel();
-            parcel.tetheringSupported = isTetheringSupported();
-            parcel.upstreamNetwork = mTetherUpstream;
-            parcel.config = mConfig.toStableParcelable();
-            parcel.states =
-                    mTetherStatesParcel != null ? mTetherStatesParcel : emptyTetherStatesParcel();
-            parcel.tetheredClients = hasListPermission
-                    ? mConnectedClientsTracker.getLastTetheredClients()
-                    : Collections.emptyList();
-            parcel.offloadStatus = mOffloadStatus;
-            try {
-                callback.onCallbackStarted(parcel);
-            } catch (RemoteException e) {
-                // Not really very much to do here.
-            }
-        });
-    }
-
-    private TetherStatesParcel emptyTetherStatesParcel() {
-        final TetherStatesParcel parcel = new TetherStatesParcel();
-        parcel.availableList = new String[0];
-        parcel.tetheredList = new String[0];
-        parcel.localOnlyList = new String[0];
-        parcel.erroredIfaceList = new String[0];
-        parcel.lastErrorList = new int[0];
-
-        return parcel;
-    }
-
-    private boolean hasCallingPermission(@NonNull String permission) {
-        return mContext.checkCallingPermission(permission) == PERMISSION_GRANTED;
-    }
-
-    /** Unregister tethering event callback */
-    void unregisterTetheringEventCallback(ITetheringEventCallback callback) {
-        mHandler.post(() -> {
-            mTetheringEventCallbacks.unregister(callback);
-        });
-    }
-
-    private void reportUpstreamChanged(UpstreamNetworkState ns) {
-        final int length = mTetheringEventCallbacks.beginBroadcast();
-        final Network network = (ns != null) ? ns.network : null;
-        final NetworkCapabilities capabilities = (ns != null) ? ns.networkCapabilities : null;
-        try {
-            for (int i = 0; i < length; i++) {
-                try {
-                    mTetheringEventCallbacks.getBroadcastItem(i).onUpstreamChanged(network);
-                } catch (RemoteException e) {
-                    // Not really very much to do here.
-                }
-            }
-        } finally {
-            mTetheringEventCallbacks.finishBroadcast();
-        }
-        // Need to notify capabilities change after upstream network changed because new network's
-        // capabilities should be checked every time.
-        mNotificationUpdater.onUpstreamCapabilitiesChanged(capabilities);
-    }
-
-    private void reportConfigurationChanged(TetheringConfigurationParcel config) {
-        final int length = mTetheringEventCallbacks.beginBroadcast();
-        try {
-            for (int i = 0; i < length; i++) {
-                try {
-                    mTetheringEventCallbacks.getBroadcastItem(i).onConfigurationChanged(config);
-                    // TODO(b/148139325): send tetheringSupported on configuration change
-                } catch (RemoteException e) {
-                    // Not really very much to do here.
-                }
-            }
-        } finally {
-            mTetheringEventCallbacks.finishBroadcast();
-        }
-    }
-
-    private void reportTetherStateChanged(TetherStatesParcel states) {
-        final int length = mTetheringEventCallbacks.beginBroadcast();
-        try {
-            for (int i = 0; i < length; i++) {
-                try {
-                    mTetheringEventCallbacks.getBroadcastItem(i).onTetherStatesChanged(states);
-                } catch (RemoteException e) {
-                    // Not really very much to do here.
-                }
-            }
-        } finally {
-            mTetheringEventCallbacks.finishBroadcast();
-        }
-    }
-
-    private void reportTetherClientsChanged(List<TetheredClient> clients) {
-        final int length = mTetheringEventCallbacks.beginBroadcast();
-        try {
-            for (int i = 0; i < length; i++) {
-                try {
-                    final CallbackCookie cookie =
-                            (CallbackCookie) mTetheringEventCallbacks.getBroadcastCookie(i);
-                    if (!cookie.hasListClientsPermission) continue;
-                    mTetheringEventCallbacks.getBroadcastItem(i).onTetherClientsChanged(clients);
-                } catch (RemoteException e) {
-                    // Not really very much to do here.
-                }
-            }
-        } finally {
-            mTetheringEventCallbacks.finishBroadcast();
-        }
-    }
-
-    private void reportOffloadStatusChanged(final int status) {
-        final int length = mTetheringEventCallbacks.beginBroadcast();
-        try {
-            for (int i = 0; i < length; i++) {
-                try {
-                    mTetheringEventCallbacks.getBroadcastItem(i).onOffloadStatusChanged(status);
-                } catch (RemoteException e) {
-                    // Not really very much to do here.
-                }
-            }
-        } finally {
-            mTetheringEventCallbacks.finishBroadcast();
-        }
-    }
-
-    // if ro.tether.denied = true we default to no tethering
-    // gservices could set the secure setting to 1 though to enable it on a build where it
-    // had previously been turned off.
-    boolean isTetheringSupported() {
-        final int defaultVal = mDeps.isTetheringDenied() ? 0 : 1;
-        final boolean tetherSupported = Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.TETHER_SUPPORTED, defaultVal) != 0;
-        final boolean tetherEnabledInSettings = tetherSupported
-                && !mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_TETHERING);
-
-        return tetherEnabledInSettings && hasTetherableConfiguration()
-                && !isProvisioningNeededButUnavailable();
-    }
-
-    void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter writer, @Nullable String[] args) {
-        // Binder.java closes the resource for us.
-        @SuppressWarnings("resource")
-        final IndentingPrintWriter pw = new IndentingPrintWriter(writer, "  ");
-        if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
-                != PERMISSION_GRANTED) {
-            pw.println("Permission Denial: can't dump.");
-            return;
-        }
-
-        pw.println("Tethering:");
-        pw.increaseIndent();
-
-        pw.println("Configuration:");
-        pw.increaseIndent();
-        final TetheringConfiguration cfg = mConfig;
-        cfg.dump(pw);
-        pw.decreaseIndent();
-
-        pw.println("Entitlement:");
-        pw.increaseIndent();
-        mEntitlementMgr.dump(pw);
-        pw.decreaseIndent();
-
-        synchronized (mPublicSync) {
-            pw.println("Tether state:");
-            pw.increaseIndent();
-            for (int i = 0; i < mTetherStates.size(); i++) {
-                final String iface = mTetherStates.keyAt(i);
-                final TetherState tetherState = mTetherStates.valueAt(i);
-                pw.print(iface + " - ");
-
-                switch (tetherState.lastState) {
-                    case IpServer.STATE_UNAVAILABLE:
-                        pw.print("UnavailableState");
-                        break;
-                    case IpServer.STATE_AVAILABLE:
-                        pw.print("AvailableState");
-                        break;
-                    case IpServer.STATE_TETHERED:
-                        pw.print("TetheredState");
-                        break;
-                    case IpServer.STATE_LOCAL_ONLY:
-                        pw.print("LocalHotspotState");
-                        break;
-                    default:
-                        pw.print("UnknownState");
-                        break;
-                }
-                pw.println(" - lastError = " + tetherState.lastError);
-            }
-            pw.println("Upstream wanted: " + upstreamWanted());
-            pw.println("Current upstream interface(s): " + mCurrentUpstreamIfaceSet);
-            pw.decreaseIndent();
-        }
-
-        pw.println("Hardware offload:");
-        pw.increaseIndent();
-        mOffloadController.dump(pw);
-        pw.decreaseIndent();
-
-        pw.println("BPF offload:");
-        pw.increaseIndent();
-        mBpfCoordinator.dump(pw);
-        pw.decreaseIndent();
-
-        pw.println("Private address coordinator:");
-        pw.increaseIndent();
-        mPrivateAddressCoordinator.dump(pw);
-        pw.decreaseIndent();
-
-        pw.println("Log:");
-        pw.increaseIndent();
-        if (argsContain(args, "--short")) {
-            pw.println("<log removed for brevity>");
-        } else {
-            mLog.dump(fd, pw, args);
-        }
-        pw.decreaseIndent();
-
-        pw.decreaseIndent();
-    }
-
-    private static boolean argsContain(String[] args, String target) {
-        for (String arg : args) {
-            if (target.equals(arg)) return true;
-        }
-        return false;
-    }
-
-    private void updateConnectedClients(final List<WifiClient> wifiClients) {
-        if (mConnectedClientsTracker.updateConnectedClients(mForwardedDownstreams, wifiClients)) {
-            reportTetherClientsChanged(mConnectedClientsTracker.getLastTetheredClients());
-        }
-    }
-
-    private IpServer.Callback makeControlCallback() {
-        return new IpServer.Callback() {
-            @Override
-            public void updateInterfaceState(IpServer who, int state, int lastError) {
-                notifyInterfaceStateChange(who, state, lastError);
-            }
-
-            @Override
-            public void updateLinkProperties(IpServer who, LinkProperties newLp) {
-                notifyLinkPropertiesChanged(who, newLp);
-            }
-
-            @Override
-            public void dhcpLeasesChanged() {
-                updateConnectedClients(null /* wifiClients */);
-            }
-
-            @Override
-            public void requestEnableTethering(int tetheringType, boolean enabled) {
-                enableTetheringInternal(tetheringType, enabled, null);
-            }
-        };
-    }
-
-    // TODO: Move into TetherMainSM.
-    private void notifyInterfaceStateChange(IpServer who, int state, int error) {
-        final String iface = who.interfaceName();
-        synchronized (mPublicSync) {
-            final TetherState tetherState = mTetherStates.get(iface);
-            if (tetherState != null && tetherState.ipServer.equals(who)) {
-                tetherState.lastState = state;
-                tetherState.lastError = error;
-            } else {
-                if (DBG) Log.d(TAG, "got notification from stale iface " + iface);
-            }
-        }
-
-        mLog.log(String.format("OBSERVED iface=%s state=%s error=%s", iface, state, error));
-
-        // If TetherMainSM is in ErrorState, TetherMainSM stays there.
-        // Thus we give a chance for TetherMainSM to recover to InitialState
-        // by sending CMD_CLEAR_ERROR
-        if (error == TETHER_ERROR_INTERNAL_ERROR) {
-            mTetherMainSM.sendMessage(TetherMainSM.CMD_CLEAR_ERROR, who);
-        }
-        int which;
-        switch (state) {
-            case IpServer.STATE_UNAVAILABLE:
-            case IpServer.STATE_AVAILABLE:
-                which = TetherMainSM.EVENT_IFACE_SERVING_STATE_INACTIVE;
-                break;
-            case IpServer.STATE_TETHERED:
-            case IpServer.STATE_LOCAL_ONLY:
-                which = TetherMainSM.EVENT_IFACE_SERVING_STATE_ACTIVE;
-                break;
-            default:
-                Log.wtf(TAG, "Unknown interface state: " + state);
-                return;
-        }
-        mTetherMainSM.sendMessage(which, state, 0, who);
-        sendTetherStateChangedBroadcast();
-    }
-
-    private void notifyLinkPropertiesChanged(IpServer who, LinkProperties newLp) {
-        final String iface = who.interfaceName();
-        final int state;
-        synchronized (mPublicSync) {
-            final TetherState tetherState = mTetherStates.get(iface);
-            if (tetherState != null && tetherState.ipServer.equals(who)) {
-                state = tetherState.lastState;
-            } else {
-                mLog.log("got notification from stale iface " + iface);
-                return;
-            }
-        }
-
-        mLog.log(String.format(
-                "OBSERVED LinkProperties update iface=%s state=%s lp=%s",
-                iface, IpServer.getStateString(state), newLp));
-        final int which = TetherMainSM.EVENT_IFACE_UPDATE_LINKPROPERTIES;
-        mTetherMainSM.sendMessage(which, state, 0, newLp);
-    }
-
-    private void maybeTrackNewInterfaceLocked(final String iface) {
-        // If we don't care about this type of interface, ignore.
-        final int interfaceType = ifaceNameToType(iface);
-        if (interfaceType == TETHERING_INVALID) {
-            mLog.log(iface + " is not a tetherable iface, ignoring");
-            return;
-        }
-        maybeTrackNewInterfaceLocked(iface, interfaceType);
-    }
-
-    private void maybeTrackNewInterfaceLocked(final String iface, int interfaceType) {
-        // If we have already started a TISM for this interface, skip.
-        if (mTetherStates.containsKey(iface)) {
-            mLog.log("active iface (" + iface + ") reported as added, ignoring");
-            return;
-        }
-
-        mLog.log("adding TetheringInterfaceStateMachine for: " + iface);
-        final TetherState tetherState = new TetherState(
-                new IpServer(iface, mLooper, interfaceType, mLog, mNetd, mBpfCoordinator,
-                             makeControlCallback(), mConfig.enableLegacyDhcpServer,
-                             mConfig.isBpfOffloadEnabled(), mPrivateAddressCoordinator,
-                             mDeps.getIpServerDependencies()));
-        mTetherStates.put(iface, tetherState);
-        tetherState.ipServer.start();
-    }
-
-    private void stopTrackingInterfaceLocked(final String iface) {
-        final TetherState tetherState = mTetherStates.get(iface);
-        if (tetherState == null) {
-            mLog.log("attempting to remove unknown iface (" + iface + "), ignoring");
-            return;
-        }
-        tetherState.ipServer.stop();
-        mLog.log("removing TetheringInterfaceStateMachine for: " + iface);
-        mTetherStates.remove(iface);
-    }
-
-    private static String[] copy(String[] strarray) {
-        return Arrays.copyOf(strarray, strarray.length);
-    }
-}
diff --git a/packages/Tethering/src/com/android/networkstack/tethering/TetheringConfiguration.java b/packages/Tethering/src/com/android/networkstack/tethering/TetheringConfiguration.java
deleted file mode 100644
index 5783805..0000000
--- a/packages/Tethering/src/com/android/networkstack/tethering/TetheringConfiguration.java
+++ /dev/null
@@ -1,501 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.networkstack.tethering;
-
-import static android.content.Context.TELEPHONY_SERVICE;
-import static android.net.ConnectivityManager.TYPE_ETHERNET;
-import static android.net.ConnectivityManager.TYPE_MOBILE;
-import static android.net.ConnectivityManager.TYPE_MOBILE_DUN;
-import static android.net.ConnectivityManager.TYPE_MOBILE_HIPRI;
-import static android.provider.DeviceConfig.NAMESPACE_CONNECTIVITY;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.net.TetheringConfigurationParcel;
-import android.net.util.SharedLog;
-import android.provider.DeviceConfig;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-import android.text.TextUtils;
-
-import com.android.internal.annotations.VisibleForTesting;
-
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.StringJoiner;
-
-
-/**
- * A utility class to encapsulate the various tethering configuration elements.
- *
- * This configuration data includes elements describing upstream properties
- * (preferred and required types of upstream connectivity as well as default
- * DNS servers to use if none are available) and downstream properties (such
- * as regular expressions use to match suitable downstream interfaces and the
- * DHCPv4 ranges to use).
- *
- * @hide
- */
-public class TetheringConfiguration {
-    private static final String TAG = TetheringConfiguration.class.getSimpleName();
-
-    private static final String[] EMPTY_STRING_ARRAY = new String[0];
-
-    // Default ranges used for the legacy DHCP server.
-    // USB is  192.168.42.1 and 255.255.255.0
-    // Wifi is 192.168.43.1 and 255.255.255.0
-    // BT is limited to max default of 5 connections. 192.168.44.1 to 192.168.48.1
-    // with 255.255.255.0
-    // P2P is 192.168.49.1 and 255.255.255.0
-    private static final String[] LEGACY_DHCP_DEFAULT_RANGE = {
-        "192.168.42.2", "192.168.42.254", "192.168.43.2", "192.168.43.254",
-        "192.168.44.2", "192.168.44.254", "192.168.45.2", "192.168.45.254",
-        "192.168.46.2", "192.168.46.254", "192.168.47.2", "192.168.47.254",
-        "192.168.48.2", "192.168.48.254", "192.168.49.2", "192.168.49.254",
-    };
-
-    private static final String[] DEFAULT_IPV4_DNS = {"8.8.4.4", "8.8.8.8"};
-
-    /**
-     * Override enabling BPF offload configuration for tethering.
-     */
-    public static final String OVERRIDE_TETHER_ENABLE_BPF_OFFLOAD =
-            "override_tether_enable_bpf_offload";
-
-    /**
-     * Use the old dnsmasq DHCP server for tethering instead of the framework implementation.
-     */
-    public static final String TETHER_ENABLE_LEGACY_DHCP_SERVER =
-            "tether_enable_legacy_dhcp_server";
-
-    public static final String USE_LEGACY_WIFI_P2P_DEDICATED_IP =
-            "use_legacy_wifi_p2p_dedicated_ip";
-
-    /**
-     * Default value that used to periodic polls tether offload stats from tethering offload HAL
-     * to make the data warnings work.
-     */
-    public static final int DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS = 5000;
-
-    public final String[] tetherableUsbRegexs;
-    public final String[] tetherableWifiRegexs;
-    public final String[] tetherableWigigRegexs;
-    public final String[] tetherableWifiP2pRegexs;
-    public final String[] tetherableBluetoothRegexs;
-    public final String[] tetherableNcmRegexs;
-    public final boolean isDunRequired;
-    public final boolean chooseUpstreamAutomatically;
-    public final Collection<Integer> preferredUpstreamIfaceTypes;
-    public final String[] legacyDhcpRanges;
-    public final String[] defaultIPv4DNS;
-    public final boolean enableLegacyDhcpServer;
-
-    public final String[] provisioningApp;
-    public final String provisioningAppNoUi;
-    public final int provisioningCheckPeriod;
-    public final String provisioningResponse;
-
-    public final int activeDataSubId;
-
-    private final int mOffloadPollInterval;
-    // TODO: Add to TetheringConfigurationParcel if required.
-    private final boolean mEnableBpfOffload;
-    private final boolean mEnableWifiP2pDedicatedIp;
-
-    public TetheringConfiguration(Context ctx, SharedLog log, int id) {
-        final SharedLog configLog = log.forSubComponent("config");
-
-        activeDataSubId = id;
-        Resources res = getResources(ctx, activeDataSubId);
-
-        tetherableUsbRegexs = getResourceStringArray(res, R.array.config_tether_usb_regexs);
-        tetherableNcmRegexs = getResourceStringArray(res, R.array.config_tether_ncm_regexs);
-        // TODO: Evaluate deleting this altogether now that Wi-Fi always passes
-        // us an interface name. Careful consideration needs to be given to
-        // implications for Settings and for provisioning checks.
-        tetherableWifiRegexs = getResourceStringArray(res, R.array.config_tether_wifi_regexs);
-        tetherableWigigRegexs = getResourceStringArray(res, R.array.config_tether_wigig_regexs);
-        tetherableWifiP2pRegexs = getResourceStringArray(
-                res, R.array.config_tether_wifi_p2p_regexs);
-        tetherableBluetoothRegexs = getResourceStringArray(
-                res, R.array.config_tether_bluetooth_regexs);
-
-        isDunRequired = checkDunRequired(ctx);
-
-        chooseUpstreamAutomatically = getResourceBoolean(
-                res, R.bool.config_tether_upstream_automatic, false /** defaultValue */);
-        preferredUpstreamIfaceTypes = getUpstreamIfaceTypes(res, isDunRequired);
-
-        legacyDhcpRanges = getLegacyDhcpRanges(res);
-        defaultIPv4DNS = copy(DEFAULT_IPV4_DNS);
-        mEnableBpfOffload = getEnableBpfOffload(res);
-        enableLegacyDhcpServer = getEnableLegacyDhcpServer(res);
-
-        provisioningApp = getResourceStringArray(res, R.array.config_mobile_hotspot_provision_app);
-        provisioningAppNoUi = getResourceString(res,
-                R.string.config_mobile_hotspot_provision_app_no_ui);
-        provisioningCheckPeriod = getResourceInteger(res,
-                R.integer.config_mobile_hotspot_provision_check_period,
-                0 /* No periodic re-check */);
-        provisioningResponse = getResourceString(res,
-                R.string.config_mobile_hotspot_provision_response);
-
-        mOffloadPollInterval = getResourceInteger(res,
-                R.integer.config_tether_offload_poll_interval,
-                DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS);
-
-        mEnableWifiP2pDedicatedIp = getResourceBoolean(res,
-                R.bool.config_tether_enable_legacy_wifi_p2p_dedicated_ip,
-                false /* defaultValue */);
-
-        configLog.log(toString());
-    }
-
-    /** Check whether input interface belong to usb.*/
-    public boolean isUsb(String iface) {
-        return matchesDownstreamRegexs(iface, tetherableUsbRegexs);
-    }
-
-    /** Check whether input interface belong to wifi.*/
-    public boolean isWifi(String iface) {
-        return matchesDownstreamRegexs(iface, tetherableWifiRegexs);
-    }
-
-    /** Check whether input interface belong to wigig.*/
-    public boolean isWigig(String iface) {
-        return matchesDownstreamRegexs(iface, tetherableWigigRegexs);
-    }
-
-    /** Check whether this interface is Wifi P2P interface. */
-    public boolean isWifiP2p(String iface) {
-        return matchesDownstreamRegexs(iface, tetherableWifiP2pRegexs);
-    }
-
-    /** Check whether using legacy mode for wifi P2P. */
-    public boolean isWifiP2pLegacyTetheringMode() {
-        return (tetherableWifiP2pRegexs == null || tetherableWifiP2pRegexs.length == 0);
-    }
-
-    /** Check whether input interface belong to bluetooth.*/
-    public boolean isBluetooth(String iface) {
-        return matchesDownstreamRegexs(iface, tetherableBluetoothRegexs);
-    }
-
-    /** Check if interface is ncm */
-    public boolean isNcm(String iface) {
-        return matchesDownstreamRegexs(iface, tetherableNcmRegexs);
-    }
-
-    /** Check whether no ui entitlement application is available.*/
-    public boolean hasMobileHotspotProvisionApp() {
-        return !TextUtils.isEmpty(provisioningAppNoUi);
-    }
-
-    /** Check whether dedicated wifi p2p address is enabled. */
-    public boolean shouldEnableWifiP2pDedicatedIp() {
-        return mEnableWifiP2pDedicatedIp;
-    }
-
-    /** Does the dumping.*/
-    public void dump(PrintWriter pw) {
-        pw.print("activeDataSubId: ");
-        pw.println(activeDataSubId);
-
-        dumpStringArray(pw, "tetherableUsbRegexs", tetherableUsbRegexs);
-        dumpStringArray(pw, "tetherableWifiRegexs", tetherableWifiRegexs);
-        dumpStringArray(pw, "tetherableWifiP2pRegexs", tetherableWifiP2pRegexs);
-        dumpStringArray(pw, "tetherableBluetoothRegexs", tetherableBluetoothRegexs);
-        dumpStringArray(pw, "tetherableNcmRegexs", tetherableNcmRegexs);
-
-        pw.print("isDunRequired: ");
-        pw.println(isDunRequired);
-
-        pw.print("chooseUpstreamAutomatically: ");
-        pw.println(chooseUpstreamAutomatically);
-        pw.print("legacyPreredUpstreamIfaceTypes: ");
-        pw.println(Arrays.toString(toIntArray(preferredUpstreamIfaceTypes)));
-
-        dumpStringArray(pw, "legacyDhcpRanges", legacyDhcpRanges);
-        dumpStringArray(pw, "defaultIPv4DNS", defaultIPv4DNS);
-
-        pw.print("offloadPollInterval: ");
-        pw.println(mOffloadPollInterval);
-
-        dumpStringArray(pw, "provisioningApp", provisioningApp);
-        pw.print("provisioningAppNoUi: ");
-        pw.println(provisioningAppNoUi);
-
-        pw.print("enableBpfOffload: ");
-        pw.println(mEnableBpfOffload);
-
-        pw.print("enableLegacyDhcpServer: ");
-        pw.println(enableLegacyDhcpServer);
-
-        pw.print("enableWifiP2pDedicatedIp: ");
-        pw.println(mEnableWifiP2pDedicatedIp);
-    }
-
-    /** Returns the string representation of this object.*/
-    public String toString() {
-        final StringJoiner sj = new StringJoiner(" ");
-        sj.add(String.format("activeDataSubId:%d", activeDataSubId));
-        sj.add(String.format("tetherableUsbRegexs:%s", makeString(tetherableUsbRegexs)));
-        sj.add(String.format("tetherableWifiRegexs:%s", makeString(tetherableWifiRegexs)));
-        sj.add(String.format("tetherableWifiP2pRegexs:%s", makeString(tetherableWifiP2pRegexs)));
-        sj.add(String.format("tetherableBluetoothRegexs:%s",
-                makeString(tetherableBluetoothRegexs)));
-        sj.add(String.format("isDunRequired:%s", isDunRequired));
-        sj.add(String.format("chooseUpstreamAutomatically:%s", chooseUpstreamAutomatically));
-        sj.add(String.format("offloadPollInterval:%d", mOffloadPollInterval));
-        sj.add(String.format("preferredUpstreamIfaceTypes:%s",
-                toIntArray(preferredUpstreamIfaceTypes)));
-        sj.add(String.format("provisioningApp:%s", makeString(provisioningApp)));
-        sj.add(String.format("provisioningAppNoUi:%s", provisioningAppNoUi));
-        sj.add(String.format("enableBpfOffload:%s", mEnableBpfOffload));
-        sj.add(String.format("enableLegacyDhcpServer:%s", enableLegacyDhcpServer));
-        return String.format("TetheringConfiguration{%s}", sj.toString());
-    }
-
-    private static void dumpStringArray(PrintWriter pw, String label, String[] values) {
-        pw.print(label);
-        pw.print(": ");
-
-        if (values != null) {
-            final StringJoiner sj = new StringJoiner(", ", "[", "]");
-            for (String value : values) sj.add(value);
-            pw.print(sj.toString());
-        } else {
-            pw.print("null");
-        }
-
-        pw.println();
-    }
-
-    private static String makeString(String[] strings) {
-        if (strings == null) return "null";
-        final StringJoiner sj = new StringJoiner(",", "[", "]");
-        for (String s : strings) sj.add(s);
-        return sj.toString();
-    }
-
-    /** Check whether dun is required. */
-    public static boolean checkDunRequired(Context ctx) {
-        final TelephonyManager tm = (TelephonyManager) ctx.getSystemService(TELEPHONY_SERVICE);
-        // TelephonyManager would uses the active data subscription, which should be the one used
-        // by tethering.
-        return (tm != null) ? tm.isTetheringApnRequired() : false;
-    }
-
-    public int getOffloadPollInterval() {
-        return mOffloadPollInterval;
-    }
-
-    public boolean isBpfOffloadEnabled() {
-        return mEnableBpfOffload;
-    }
-
-    private static Collection<Integer> getUpstreamIfaceTypes(Resources res, boolean dunRequired) {
-        final int[] ifaceTypes = res.getIntArray(R.array.config_tether_upstream_types);
-        final ArrayList<Integer> upstreamIfaceTypes = new ArrayList<>(ifaceTypes.length);
-        for (int i : ifaceTypes) {
-            switch (i) {
-                case TYPE_MOBILE:
-                case TYPE_MOBILE_HIPRI:
-                    if (dunRequired) continue;
-                    break;
-                case TYPE_MOBILE_DUN:
-                    if (!dunRequired) continue;
-                    break;
-            }
-            upstreamIfaceTypes.add(i);
-        }
-
-        // Fix up upstream interface types for DUN or mobile. NOTE: independent
-        // of the value of |dunRequired|, cell data of one form or another is
-        // *always* an upstream, regardless of the upstream interface types
-        // specified by configuration resources.
-        if (dunRequired) {
-            appendIfNotPresent(upstreamIfaceTypes, TYPE_MOBILE_DUN);
-        } else {
-            // Do not modify if a cellular interface type is already present in the
-            // upstream interface types. Add TYPE_MOBILE and TYPE_MOBILE_HIPRI if no
-            // cellular interface types are found in the upstream interface types.
-            // This preserves backwards compatibility and prevents the DUN and default
-            // mobile types incorrectly appearing together, which could happen on
-            // previous releases in the common case where checkDunRequired returned
-            // DUN_UNSPECIFIED.
-            if (!containsOneOf(upstreamIfaceTypes, TYPE_MOBILE, TYPE_MOBILE_HIPRI)) {
-                upstreamIfaceTypes.add(TYPE_MOBILE);
-                upstreamIfaceTypes.add(TYPE_MOBILE_HIPRI);
-            }
-        }
-
-        // Always make sure our good friend Ethernet is present.
-        // TODO: consider unilaterally forcing this at the front.
-        prependIfNotPresent(upstreamIfaceTypes, TYPE_ETHERNET);
-
-        return upstreamIfaceTypes;
-    }
-
-    private static boolean matchesDownstreamRegexs(String iface, String[] regexs) {
-        for (String regex : regexs) {
-            if (iface.matches(regex)) return true;
-        }
-        return false;
-    }
-
-    private static String[] getLegacyDhcpRanges(Resources res) {
-        final String[] fromResource = getResourceStringArray(res, R.array.config_tether_dhcp_range);
-        if ((fromResource.length > 0) && (fromResource.length % 2 == 0)) {
-            return fromResource;
-        }
-        return copy(LEGACY_DHCP_DEFAULT_RANGE);
-    }
-
-    private static String getResourceString(Resources res, final int resId) {
-        try {
-            return res.getString(resId);
-        } catch (Resources.NotFoundException e) {
-            return "";
-        }
-    }
-
-    private static boolean getResourceBoolean(Resources res, int resId, boolean defaultValue) {
-        try {
-            return res.getBoolean(resId);
-        } catch (Resources.NotFoundException e404) {
-            return defaultValue;
-        }
-    }
-
-    private static String[] getResourceStringArray(Resources res, int resId) {
-        try {
-            final String[] strArray = res.getStringArray(resId);
-            return (strArray != null) ? strArray : EMPTY_STRING_ARRAY;
-        } catch (Resources.NotFoundException e404) {
-            return EMPTY_STRING_ARRAY;
-        }
-    }
-
-    private static int getResourceInteger(Resources res, int resId, int defaultValue) {
-        try {
-            return res.getInteger(resId);
-        } catch (Resources.NotFoundException e404) {
-            return defaultValue;
-        }
-    }
-
-    private boolean getEnableBpfOffload(final Resources res) {
-        // Get BPF offload config
-        // Priority 1: Device config
-        // Priority 2: Resource config
-        // Priority 3: Default value
-        final boolean defaultValue = getResourceBoolean(
-                res, R.bool.config_tether_enable_bpf_offload, true /** default value */);
-
-        return getDeviceConfigBoolean(OVERRIDE_TETHER_ENABLE_BPF_OFFLOAD, defaultValue);
-    }
-
-    private boolean getEnableLegacyDhcpServer(final Resources res) {
-        return getResourceBoolean(
-                res, R.bool.config_tether_enable_legacy_dhcp_server, false /** defaultValue */)
-                || getDeviceConfigBoolean(
-                TETHER_ENABLE_LEGACY_DHCP_SERVER, false /** defaultValue */);
-    }
-
-    private boolean getDeviceConfigBoolean(final String name, final boolean defaultValue) {
-        // Due to the limitation of static mock for testing, using #getDeviceConfigProperty instead
-        // of DeviceConfig#getBoolean. If using #getBoolean here, the test can't know that the
-        // returned boolean value comes from device config or default value (because of null
-        // property string). See the test case testBpfOffload{*} in TetheringConfigurationTest.java.
-        final String value = getDeviceConfigProperty(name);
-        return value != null ? Boolean.parseBoolean(value) : defaultValue;
-    }
-
-    @VisibleForTesting
-    protected String getDeviceConfigProperty(String name) {
-        return DeviceConfig.getProperty(NAMESPACE_CONNECTIVITY, name);
-    }
-
-    private Resources getResources(Context ctx, int subId) {
-        if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
-            return getResourcesForSubIdWrapper(ctx, subId);
-        } else {
-            return ctx.getResources();
-        }
-    }
-
-    @VisibleForTesting
-    protected Resources getResourcesForSubIdWrapper(Context ctx, int subId) {
-        return SubscriptionManager.getResourcesForSubId(ctx, subId);
-    }
-
-    private static String[] copy(String[] strarray) {
-        return Arrays.copyOf(strarray, strarray.length);
-    }
-
-    private static void prependIfNotPresent(ArrayList<Integer> list, int value) {
-        if (list.contains(value)) return;
-        list.add(0, value);
-    }
-
-    private static void appendIfNotPresent(ArrayList<Integer> list, int value) {
-        if (list.contains(value)) return;
-        list.add(value);
-    }
-
-    private static boolean containsOneOf(ArrayList<Integer> list, Integer... values) {
-        for (Integer value : values) {
-            if (list.contains(value)) return true;
-        }
-        return false;
-    }
-
-    private static int[] toIntArray(Collection<Integer> values) {
-        final int[] result = new int[values.size()];
-        int index = 0;
-        for (Integer value : values) {
-            result[index++] = value;
-        }
-        return result;
-    }
-
-    /**
-     * Convert this TetheringConfiguration to a TetheringConfigurationParcel.
-     */
-    public TetheringConfigurationParcel toStableParcelable() {
-        final TetheringConfigurationParcel parcel = new TetheringConfigurationParcel();
-        parcel.subId = activeDataSubId;
-        parcel.tetherableUsbRegexs = tetherableUsbRegexs;
-        parcel.tetherableWifiRegexs = tetherableWifiRegexs;
-        parcel.tetherableBluetoothRegexs = tetherableBluetoothRegexs;
-        parcel.isDunRequired = isDunRequired;
-        parcel.chooseUpstreamAutomatically = chooseUpstreamAutomatically;
-
-        parcel.preferredUpstreamIfaceTypes = toIntArray(preferredUpstreamIfaceTypes);
-
-        parcel.legacyDhcpRanges = legacyDhcpRanges;
-        parcel.defaultIPv4DNS = defaultIPv4DNS;
-        parcel.enableLegacyDhcpServer = enableLegacyDhcpServer;
-        parcel.provisioningApp = provisioningApp;
-        parcel.provisioningAppNoUi = provisioningAppNoUi;
-        parcel.provisioningCheckPeriod = provisioningCheckPeriod;
-        return parcel;
-    }
-}
diff --git a/packages/Tethering/src/com/android/networkstack/tethering/TetheringDependencies.java b/packages/Tethering/src/com/android/networkstack/tethering/TetheringDependencies.java
deleted file mode 100644
index 131a5fb..0000000
--- a/packages/Tethering/src/com/android/networkstack/tethering/TetheringDependencies.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.networkstack.tethering;
-
-import android.app.usage.NetworkStatsManager;
-import android.bluetooth.BluetoothAdapter;
-import android.content.Context;
-import android.net.INetd;
-import android.net.NetworkRequest;
-import android.net.ip.IpServer;
-import android.net.util.SharedLog;
-import android.os.Handler;
-import android.os.IBinder;
-import android.os.Looper;
-import android.os.SystemProperties;
-import android.text.TextUtils;
-
-import androidx.annotation.NonNull;
-
-import com.android.internal.util.StateMachine;
-
-import java.util.ArrayList;
-
-
-/**
- * Capture tethering dependencies, for injection.
- *
- * @hide
- */
-public abstract class TetheringDependencies {
-    /**
-     * Get a reference to the BpfCoordinator to be used by tethering.
-     */
-    public @NonNull BpfCoordinator getBpfCoordinator(
-            @NonNull BpfCoordinator.Dependencies deps) {
-        return new BpfCoordinator(deps);
-    }
-
-    /**
-     * Get a reference to the offload hardware interface to be used by tethering.
-     */
-    public OffloadHardwareInterface getOffloadHardwareInterface(Handler h, SharedLog log) {
-        return new OffloadHardwareInterface(h, log);
-    }
-
-    /**
-     * Get a reference to the offload controller to be used by tethering.
-     */
-    @NonNull
-    public OffloadController getOffloadController(@NonNull Handler h,
-            @NonNull SharedLog log, @NonNull OffloadController.Dependencies deps) {
-        final NetworkStatsManager statsManager =
-                (NetworkStatsManager) getContext().getSystemService(Context.NETWORK_STATS_SERVICE);
-        return new OffloadController(h, getOffloadHardwareInterface(h, log),
-                getContext().getContentResolver(), statsManager, log, deps);
-    }
-
-
-    /**
-     * Get a reference to the UpstreamNetworkMonitor to be used by tethering.
-     */
-    public UpstreamNetworkMonitor getUpstreamNetworkMonitor(Context ctx, StateMachine target,
-            SharedLog log, int what) {
-        return new UpstreamNetworkMonitor(ctx, target, log, what);
-    }
-
-    /**
-     * Get a reference to the IPv6TetheringCoordinator to be used by tethering.
-     */
-    public IPv6TetheringCoordinator getIPv6TetheringCoordinator(
-            ArrayList<IpServer> notifyList, SharedLog log) {
-        return new IPv6TetheringCoordinator(notifyList, log);
-    }
-
-    /**
-     * Get dependencies to be used by IpServer.
-     */
-    public abstract IpServer.Dependencies getIpServerDependencies();
-
-    /**
-     * Indicates whether tethering is supported on the device.
-     */
-    public boolean isTetheringSupported() {
-        return true;
-    }
-
-    /**
-     * Get the NetworkRequest that should be fulfilled by the default network.
-     */
-    public abstract NetworkRequest getDefaultNetworkRequest();
-
-    /**
-     * Get a reference to the EntitlementManager to be used by tethering.
-     */
-    public EntitlementManager getEntitlementManager(Context ctx, Handler h, SharedLog log,
-            Runnable callback) {
-        return new EntitlementManager(ctx, h, log, callback);
-    }
-
-    /**
-     * Generate a new TetheringConfiguration according to input sub Id.
-     */
-    public TetheringConfiguration generateTetheringConfiguration(Context ctx, SharedLog log,
-            int subId) {
-        return new TetheringConfiguration(ctx, log, subId);
-    }
-
-    /**
-     * Get a reference to INetd to be used by tethering.
-     */
-    public INetd getINetd(Context context) {
-        return INetd.Stub.asInterface(
-                (IBinder) context.getSystemService(Context.NETD_SERVICE));
-    }
-
-    /**
-     * Get a reference to the TetheringNotificationUpdater to be used by tethering.
-     */
-    public TetheringNotificationUpdater getNotificationUpdater(@NonNull final Context ctx,
-            @NonNull final Looper looper) {
-        return new TetheringNotificationUpdater(ctx, looper);
-    }
-
-    /**
-     * Get tethering thread looper.
-     */
-    public abstract Looper getTetheringLooper();
-
-    /**
-     *  Get Context of TetheringSerice.
-     */
-    public abstract Context getContext();
-
-    /**
-     * Get a reference to BluetoothAdapter to be used by tethering.
-     */
-    public abstract BluetoothAdapter getBluetoothAdapter();
-
-    /**
-     * Get SystemProperties which indicate whether tethering is denied.
-     */
-    public boolean isTetheringDenied() {
-        return TextUtils.equals(SystemProperties.get("ro.tether.denied"), "true");
-    }
-}
diff --git a/packages/Tethering/src/com/android/networkstack/tethering/TetheringInterfaceUtils.java b/packages/Tethering/src/com/android/networkstack/tethering/TetheringInterfaceUtils.java
deleted file mode 100644
index ff38f71..0000000
--- a/packages/Tethering/src/com/android/networkstack/tethering/TetheringInterfaceUtils.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.networkstack.tethering;
-
-import android.annotation.Nullable;
-import android.net.LinkProperties;
-import android.net.NetworkCapabilities;
-import android.net.RouteInfo;
-import android.net.util.InterfaceSet;
-
-import com.android.net.module.util.NetUtils;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-
-/**
- * @hide
- */
-public final class TetheringInterfaceUtils {
-    private static final InetAddress IN6ADDR_ANY = getByAddress(
-            new byte[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0});
-    private static final InetAddress INADDR_ANY = getByAddress(new byte[] {0, 0, 0, 0});
-
-    /**
-     * Get upstream interfaces for tethering based on default routes for IPv4/IPv6.
-     * @return null if there is no usable interface, or a set of at least one interface otherwise.
-     */
-    public static @Nullable InterfaceSet getTetheringInterfaces(UpstreamNetworkState ns) {
-        if (ns == null) {
-            return null;
-        }
-
-        final LinkProperties lp = ns.linkProperties;
-        final String if4 = getInterfaceForDestination(lp, INADDR_ANY);
-        final String if6 = getIPv6Interface(ns);
-
-        return (if4 == null && if6 == null) ? null : new InterfaceSet(if4, if6);
-    }
-
-    /**
-     * Get the upstream interface for IPv6 tethering.
-     * @return null if there is no usable interface, or the interface name otherwise.
-     */
-    public static @Nullable String getIPv6Interface(UpstreamNetworkState ns) {
-        // Broadly speaking:
-        //
-        //     [1] does the upstream have an IPv6 default route?
-        //
-        // and
-        //
-        //     [2] does the upstream have one or more global IPv6 /64s
-        //         dedicated to this device?
-        //
-        // In lieu of Prefix Delegation and other evaluation of whether a
-        // prefix may or may not be dedicated to this device, for now just
-        // check whether the upstream is TRANSPORT_CELLULAR. This works
-        // because "[t]he 3GPP network allocates each default bearer a unique
-        // /64 prefix", per RFC 6459, Section 5.2.
-        final boolean canTether =
-                (ns != null) && (ns.network != null)
-                && (ns.linkProperties != null) && (ns.networkCapabilities != null)
-                // At least one upstream DNS server:
-                && ns.linkProperties.hasIpv6DnsServer()
-                // Minimal amount of IPv6 provisioning:
-                && ns.linkProperties.hasGlobalIpv6Address()
-                // Temporary approximation of "dedicated prefix":
-                && ns.networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR);
-
-        return canTether
-                ? getInterfaceForDestination(ns.linkProperties, IN6ADDR_ANY)
-                : null;
-    }
-
-    private static String getInterfaceForDestination(LinkProperties lp, InetAddress dst) {
-        final RouteInfo ri = (lp != null)
-                ? NetUtils.selectBestRoute(lp.getAllRoutes(), dst)
-                : null;
-        return (ri != null) ? ri.getInterface() : null;
-    }
-
-    private static InetAddress getByAddress(final byte[] addr) {
-        try {
-            return InetAddress.getByAddress(null, addr);
-        } catch (UnknownHostException e) {
-            throw new AssertionError("illegal address length" + addr.length);
-        }
-    }
-}
diff --git a/packages/Tethering/src/com/android/networkstack/tethering/TetheringNotificationUpdater.java b/packages/Tethering/src/com/android/networkstack/tethering/TetheringNotificationUpdater.java
deleted file mode 100644
index a0198cc..0000000
--- a/packages/Tethering/src/com/android/networkstack/tethering/TetheringNotificationUpdater.java
+++ /dev/null
@@ -1,362 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.networkstack.tethering;
-
-import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING;
-import static android.text.TextUtils.isEmpty;
-
-import android.app.Notification;
-import android.app.Notification.Action;
-import android.app.NotificationChannel;
-import android.app.NotificationManager;
-import android.app.PendingIntent;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.res.Configuration;
-import android.content.res.Resources;
-import android.net.NetworkCapabilities;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.os.UserHandle;
-import android.provider.Settings;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-import android.util.SparseArray;
-
-import androidx.annotation.DrawableRes;
-import androidx.annotation.IntDef;
-import androidx.annotation.IntRange;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import com.android.internal.annotations.VisibleForTesting;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/**
- * A class to display tethering-related notifications.
- *
- * <p>This class is not thread safe, it is intended to be used only from the tethering handler
- * thread. However the constructor is an exception, as it is called on another thread ;
- * therefore for thread safety all members of this class MUST either be final or initialized
- * to their default value (0, false or null).
- *
- * @hide
- */
-public class TetheringNotificationUpdater {
-    private static final String TAG = TetheringNotificationUpdater.class.getSimpleName();
-    private static final String CHANNEL_ID = "TETHERING_STATUS";
-    private static final String WIFI_DOWNSTREAM = "WIFI";
-    private static final String USB_DOWNSTREAM = "USB";
-    private static final String BLUETOOTH_DOWNSTREAM = "BT";
-    @VisibleForTesting
-    static final String ACTION_DISABLE_TETHERING =
-            "com.android.server.connectivity.tethering.DISABLE_TETHERING";
-    private static final boolean NOTIFY_DONE = true;
-    private static final boolean NO_NOTIFY = false;
-    @VisibleForTesting
-    static final int EVENT_SHOW_NO_UPSTREAM = 1;
-    // Id to update and cancel restricted notification. Must be unique within the tethering app.
-    @VisibleForTesting
-    static final int RESTRICTED_NOTIFICATION_ID = 1001;
-    // Id to update and cancel no upstream notification. Must be unique within the tethering app.
-    @VisibleForTesting
-    static final int NO_UPSTREAM_NOTIFICATION_ID = 1002;
-    // Id to update and cancel roaming notification. Must be unique within the tethering app.
-    @VisibleForTesting
-    static final int ROAMING_NOTIFICATION_ID = 1003;
-    @VisibleForTesting
-    static final int NO_ICON_ID = 0;
-    @VisibleForTesting
-    static final int DOWNSTREAM_NONE = 0;
-    // Refer to TelephonyManager#getSimCarrierId for more details about carrier id.
-    @VisibleForTesting
-    static final int VERIZON_CARRIER_ID = 1839;
-    private final Context mContext;
-    private final NotificationManager mNotificationManager;
-    private final NotificationChannel mChannel;
-    private final Handler mHandler;
-
-    // WARNING : the constructor is called on a different thread. Thread safety therefore
-    // relies on these values being initialized to 0, false or null, and not any other value. If you
-    // need to change this, you will need to change the thread where the constructor is invoked, or
-    // to introduce synchronization.
-    // Downstream type is one of ConnectivityManager.TETHERING_* constants, 0 1 or 2.
-    // This value has to be made 1 2 and 4, and OR'd with the others.
-    private int mDownstreamTypesMask = DOWNSTREAM_NONE;
-    private boolean mNoUpstream = false;
-    private boolean mRoaming = false;
-
-    // WARNING : this value is not able to being initialized to 0 and must have volatile because
-    // telephony service is not guaranteed that is up before tethering service starts. If telephony
-    // is up later than tethering, TetheringNotificationUpdater will use incorrect and valid
-    // subscription id(0) to query resources. Therefore, initialized subscription id must be
-    // INVALID_SUBSCRIPTION_ID.
-    private volatile int mActiveDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
-
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef(value = {
-            RESTRICTED_NOTIFICATION_ID,
-            NO_UPSTREAM_NOTIFICATION_ID,
-            ROAMING_NOTIFICATION_ID
-    })
-    @interface NotificationId {}
-
-    private static final class MccMncOverrideInfo {
-        public final String visitedMccMnc;
-        public final int homeMcc;
-        public final int homeMnc;
-        MccMncOverrideInfo(String visitedMccMnc, int mcc, int mnc) {
-            this.visitedMccMnc = visitedMccMnc;
-            this.homeMcc = mcc;
-            this.homeMnc = mnc;
-        }
-    }
-
-    private static final SparseArray<MccMncOverrideInfo> sCarrierIdToMccMnc = new SparseArray<>();
-
-    static {
-        sCarrierIdToMccMnc.put(VERIZON_CARRIER_ID, new MccMncOverrideInfo("20404", 311, 480));
-    }
-
-    public TetheringNotificationUpdater(@NonNull final Context context,
-            @NonNull final Looper looper) {
-        mContext = context;
-        mNotificationManager = (NotificationManager) context.createContextAsUser(UserHandle.ALL, 0)
-                .getSystemService(Context.NOTIFICATION_SERVICE);
-        mChannel = new NotificationChannel(
-                CHANNEL_ID,
-                context.getResources().getString(R.string.notification_channel_tethering_status),
-                NotificationManager.IMPORTANCE_LOW);
-        mNotificationManager.createNotificationChannel(mChannel);
-        mHandler = new NotificationHandler(looper);
-    }
-
-    private class NotificationHandler extends Handler {
-        NotificationHandler(Looper looper) {
-            super(looper);
-        }
-
-        @Override
-        public void handleMessage(Message msg) {
-            switch(msg.what) {
-                case EVENT_SHOW_NO_UPSTREAM:
-                    notifyTetheringNoUpstream();
-                    break;
-            }
-        }
-    }
-
-    /** Called when downstream has changed */
-    public void onDownstreamChanged(@IntRange(from = 0, to = 7) final int downstreamTypesMask) {
-        updateActiveNotifications(
-                mActiveDataSubId, downstreamTypesMask, mNoUpstream, mRoaming);
-    }
-
-    /** Called when active data subscription id changed */
-    public void onActiveDataSubscriptionIdChanged(final int subId) {
-        updateActiveNotifications(subId, mDownstreamTypesMask, mNoUpstream, mRoaming);
-    }
-
-    /** Called when upstream network capabilities changed */
-    public void onUpstreamCapabilitiesChanged(@Nullable final NetworkCapabilities capabilities) {
-        final boolean isNoUpstream = (capabilities == null);
-        final boolean isRoaming = capabilities != null
-                && !capabilities.hasCapability(NET_CAPABILITY_NOT_ROAMING);
-        updateActiveNotifications(
-                mActiveDataSubId, mDownstreamTypesMask, isNoUpstream, isRoaming);
-    }
-
-    @NonNull
-    @VisibleForTesting
-    final Handler getHandler() {
-        return mHandler;
-    }
-
-    @NonNull
-    @VisibleForTesting
-    Resources getResourcesForSubId(@NonNull final Context context, final int subId) {
-        final Resources res = SubscriptionManager.getResourcesForSubId(context, subId);
-        final TelephonyManager tm =
-                ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE))
-                        .createForSubscriptionId(mActiveDataSubId);
-        final int carrierId = tm.getSimCarrierId();
-        final String mccmnc = tm.getSimOperator();
-        final MccMncOverrideInfo overrideInfo = sCarrierIdToMccMnc.get(carrierId);
-        if (overrideInfo != null && overrideInfo.visitedMccMnc.equals(mccmnc)) {
-            // Re-configure MCC/MNC value to specific carrier to get right resources.
-            final Configuration config = res.getConfiguration();
-            config.mcc = overrideInfo.homeMcc;
-            config.mnc = overrideInfo.homeMnc;
-            return context.createConfigurationContext(config).getResources();
-        }
-        return res;
-    }
-
-    private void updateActiveNotifications(final int subId, final int downstreamTypes,
-            final boolean noUpstream, final boolean isRoaming) {
-        final boolean tetheringActiveChanged =
-                (downstreamTypes == DOWNSTREAM_NONE) != (mDownstreamTypesMask == DOWNSTREAM_NONE);
-        final boolean subIdChanged = subId != mActiveDataSubId;
-        final boolean upstreamChanged = noUpstream != mNoUpstream;
-        final boolean roamingChanged = isRoaming != mRoaming;
-        final boolean updateAll = tetheringActiveChanged || subIdChanged;
-        mActiveDataSubId = subId;
-        mDownstreamTypesMask = downstreamTypes;
-        mNoUpstream = noUpstream;
-        mRoaming = isRoaming;
-
-        if (updateAll || upstreamChanged) updateNoUpstreamNotification();
-        if (updateAll || roamingChanged) updateRoamingNotification();
-    }
-
-    private void updateNoUpstreamNotification() {
-        final boolean tetheringInactive = mDownstreamTypesMask == DOWNSTREAM_NONE;
-
-        if (tetheringInactive || !mNoUpstream || setupNoUpstreamNotification() == NO_NOTIFY) {
-            clearNotification(NO_UPSTREAM_NOTIFICATION_ID);
-            mHandler.removeMessages(EVENT_SHOW_NO_UPSTREAM);
-        }
-    }
-
-    private void updateRoamingNotification() {
-        final boolean tetheringInactive = mDownstreamTypesMask == DOWNSTREAM_NONE;
-
-        if (tetheringInactive || !mRoaming || setupRoamingNotification() == NO_NOTIFY) {
-            clearNotification(ROAMING_NOTIFICATION_ID);
-        }
-    }
-
-    @VisibleForTesting
-    void tetheringRestrictionLifted() {
-        clearNotification(RESTRICTED_NOTIFICATION_ID);
-    }
-
-    private void clearNotification(@NotificationId final int id) {
-        mNotificationManager.cancel(null /* tag */, id);
-    }
-
-    @VisibleForTesting
-    static String getSettingsPackageName(@NonNull final PackageManager pm) {
-        final Intent settingsIntent = new Intent(Settings.ACTION_SETTINGS);
-        final ComponentName settingsComponent = settingsIntent.resolveActivity(pm);
-        return settingsComponent != null
-                ? settingsComponent.getPackageName() : "com.android.settings";
-    }
-
-    @VisibleForTesting
-    void notifyTetheringDisabledByRestriction() {
-        final Resources res = getResourcesForSubId(mContext, mActiveDataSubId);
-        final String title = res.getString(R.string.disable_tether_notification_title);
-        final String message = res.getString(R.string.disable_tether_notification_message);
-        if (isEmpty(title) || isEmpty(message)) return;
-
-        final PendingIntent pi = PendingIntent.getActivity(
-                mContext.createContextAsUser(UserHandle.CURRENT, 0 /* flags */),
-                0 /* requestCode */,
-                new Intent(Settings.ACTION_TETHER_SETTINGS)
-                        .setPackage(getSettingsPackageName(mContext.getPackageManager()))
-                        .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK),
-                PendingIntent.FLAG_IMMUTABLE,
-                null /* options */);
-
-        showNotification(R.drawable.stat_sys_tether_general, title, message,
-                RESTRICTED_NOTIFICATION_ID, false /* ongoing */, pi, new Action[0]);
-    }
-
-    private void notifyTetheringNoUpstream() {
-        final Resources res = getResourcesForSubId(mContext, mActiveDataSubId);
-        final String title = res.getString(R.string.no_upstream_notification_title);
-        final String message = res.getString(R.string.no_upstream_notification_message);
-        final String disableButton =
-                res.getString(R.string.no_upstream_notification_disable_button);
-        if (isEmpty(title) || isEmpty(message) || isEmpty(disableButton)) return;
-
-        final Intent intent = new Intent(ACTION_DISABLE_TETHERING);
-        intent.setPackage(mContext.getPackageName());
-        final PendingIntent pi = PendingIntent.getBroadcast(
-                mContext.createContextAsUser(UserHandle.CURRENT, 0 /* flags */),
-                0 /* requestCode */,
-                intent,
-                PendingIntent.FLAG_IMMUTABLE);
-        final Action action = new Action.Builder(NO_ICON_ID, disableButton, pi).build();
-
-        showNotification(R.drawable.stat_sys_tether_general, title, message,
-                NO_UPSTREAM_NOTIFICATION_ID, true /* ongoing */, null /* pendingIntent */, action);
-    }
-
-    private boolean setupRoamingNotification() {
-        final Resources res = getResourcesForSubId(mContext, mActiveDataSubId);
-        final boolean upstreamRoamingNotification =
-                res.getBoolean(R.bool.config_upstream_roaming_notification);
-
-        if (!upstreamRoamingNotification) return NO_NOTIFY;
-
-        final String title = res.getString(R.string.upstream_roaming_notification_title);
-        final String message = res.getString(R.string.upstream_roaming_notification_message);
-        if (isEmpty(title) || isEmpty(message)) return NO_NOTIFY;
-
-        final PendingIntent pi = PendingIntent.getActivity(
-                mContext.createContextAsUser(UserHandle.CURRENT, 0 /* flags */),
-                0 /* requestCode */,
-                new Intent(Settings.ACTION_TETHER_SETTINGS)
-                        .setPackage(getSettingsPackageName(mContext.getPackageManager()))
-                        .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK),
-                PendingIntent.FLAG_IMMUTABLE,
-                null /* options */);
-
-        showNotification(R.drawable.stat_sys_tether_general, title, message,
-                ROAMING_NOTIFICATION_ID, true /* ongoing */, pi, new Action[0]);
-        return NOTIFY_DONE;
-    }
-
-    private boolean setupNoUpstreamNotification() {
-        final Resources res = getResourcesForSubId(mContext, mActiveDataSubId);
-        final int delayToShowUpstreamNotification =
-                res.getInteger(R.integer.delay_to_show_no_upstream_after_no_backhaul);
-
-        if (delayToShowUpstreamNotification < 0) return NO_NOTIFY;
-
-        mHandler.sendMessageDelayed(mHandler.obtainMessage(EVENT_SHOW_NO_UPSTREAM),
-                delayToShowUpstreamNotification);
-        return NOTIFY_DONE;
-    }
-
-    private void showNotification(@DrawableRes final int iconId, @NonNull final String title,
-            @NonNull final String message, @NotificationId final int id, final boolean ongoing,
-            @Nullable PendingIntent pi, @NonNull final Action... actions) {
-        final Notification notification =
-                new Notification.Builder(mContext, mChannel.getId())
-                        .setSmallIcon(iconId)
-                        .setContentTitle(title)
-                        .setContentText(message)
-                        .setOngoing(ongoing)
-                        .setColor(mContext.getColor(
-                                android.R.color.system_notification_accent_color))
-                        .setVisibility(Notification.VISIBILITY_PUBLIC)
-                        .setCategory(Notification.CATEGORY_STATUS)
-                        .setContentIntent(pi)
-                        .setActions(actions)
-                        .build();
-
-        mNotificationManager.notify(null /* tag */, id, notification);
-    }
-}
diff --git a/packages/Tethering/src/com/android/networkstack/tethering/TetheringService.java b/packages/Tethering/src/com/android/networkstack/tethering/TetheringService.java
deleted file mode 100644
index 613328d..0000000
--- a/packages/Tethering/src/com/android/networkstack/tethering/TetheringService.java
+++ /dev/null
@@ -1,389 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.networkstack.tethering;
-
-import static android.Manifest.permission.ACCESS_NETWORK_STATE;
-import static android.Manifest.permission.NETWORK_STACK;
-import static android.Manifest.permission.TETHER_PRIVILEGED;
-import static android.content.pm.PackageManager.PERMISSION_GRANTED;
-import static android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK;
-import static android.net.TetheringManager.TETHER_ERROR_NO_ACCESS_TETHERING_PERMISSION;
-import static android.net.TetheringManager.TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION;
-import static android.net.TetheringManager.TETHER_ERROR_NO_ERROR;
-import static android.net.TetheringManager.TETHER_ERROR_UNSUPPORTED;
-import static android.net.dhcp.IDhcpServer.STATUS_UNKNOWN_ERROR;
-
-import android.app.Service;
-import android.bluetooth.BluetoothAdapter;
-import android.content.Context;
-import android.content.Intent;
-import android.net.IIntResultListener;
-import android.net.INetworkStackConnector;
-import android.net.ITetheringConnector;
-import android.net.ITetheringEventCallback;
-import android.net.NetworkCapabilities;
-import android.net.NetworkRequest;
-import android.net.NetworkStack;
-import android.net.TetheringRequestParcel;
-import android.net.dhcp.DhcpServerCallbacks;
-import android.net.dhcp.DhcpServingParamsParcel;
-import android.net.ip.IpServer;
-import android.os.Binder;
-import android.os.HandlerThread;
-import android.os.IBinder;
-import android.os.Looper;
-import android.os.RemoteException;
-import android.os.ResultReceiver;
-import android.provider.Settings;
-import android.util.Log;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import com.android.internal.annotations.VisibleForTesting;
-
-import java.io.FileDescriptor;
-import java.io.PrintWriter;
-
-/**
- * Android service used to manage tethering.
- *
- * <p>The service returns a binder for the system server to communicate with the tethering.
- */
-public class TetheringService extends Service {
-    private static final String TAG = TetheringService.class.getSimpleName();
-
-    private TetheringConnector mConnector;
-
-    @Override
-    public void onCreate() {
-        final TetheringDependencies deps = makeTetheringDependencies();
-        // The Tethering object needs a fully functional context to start, so this can't be done
-        // in the constructor.
-        mConnector = new TetheringConnector(makeTethering(deps), TetheringService.this);
-    }
-
-    /**
-     * Make a reference to Tethering object.
-     */
-    @VisibleForTesting
-    public Tethering makeTethering(TetheringDependencies deps) {
-        System.loadLibrary("tetherutilsjni");
-        return new Tethering(deps);
-    }
-
-    @NonNull
-    @Override
-    public IBinder onBind(Intent intent) {
-        return mConnector;
-    }
-
-    private static class TetheringConnector extends ITetheringConnector.Stub {
-        private final TetheringService mService;
-        private final Tethering mTethering;
-
-        TetheringConnector(Tethering tether, TetheringService service) {
-            mTethering = tether;
-            mService = service;
-        }
-
-        @Override
-        public void tether(String iface, String callerPkg, String callingAttributionTag,
-                IIntResultListener listener) {
-            if (checkAndNotifyCommonError(callerPkg, callingAttributionTag, listener)) return;
-
-            try {
-                listener.onResult(mTethering.tether(iface));
-            } catch (RemoteException e) { }
-        }
-
-        @Override
-        public void untether(String iface, String callerPkg, String callingAttributionTag,
-                IIntResultListener listener) {
-            if (checkAndNotifyCommonError(callerPkg, callingAttributionTag, listener)) return;
-
-            try {
-                listener.onResult(mTethering.untether(iface));
-            } catch (RemoteException e) { }
-        }
-
-        @Override
-        public void setUsbTethering(boolean enable, String callerPkg, String callingAttributionTag,
-                IIntResultListener listener) {
-            if (checkAndNotifyCommonError(callerPkg, callingAttributionTag, listener)) return;
-
-            try {
-                listener.onResult(mTethering.setUsbTethering(enable));
-            } catch (RemoteException e) { }
-        }
-
-        @Override
-        public void startTethering(TetheringRequestParcel request, String callerPkg,
-                String callingAttributionTag, IIntResultListener listener) {
-            if (checkAndNotifyCommonError(callerPkg,
-                    callingAttributionTag,
-                    request.exemptFromEntitlementCheck /* onlyAllowPrivileged */,
-                    listener)) {
-                return;
-            }
-
-            mTethering.startTethering(request, listener);
-        }
-
-        @Override
-        public void stopTethering(int type, String callerPkg, String callingAttributionTag,
-                IIntResultListener listener) {
-            if (checkAndNotifyCommonError(callerPkg, callingAttributionTag, listener)) return;
-
-            try {
-                mTethering.stopTethering(type);
-                listener.onResult(TETHER_ERROR_NO_ERROR);
-            } catch (RemoteException e) { }
-        }
-
-        @Override
-        public void requestLatestTetheringEntitlementResult(int type, ResultReceiver receiver,
-                boolean showEntitlementUi, String callerPkg, String callingAttributionTag) {
-            if (checkAndNotifyCommonError(callerPkg, callingAttributionTag, receiver)) return;
-
-            mTethering.requestLatestTetheringEntitlementResult(type, receiver, showEntitlementUi);
-        }
-
-        @Override
-        public void registerTetheringEventCallback(ITetheringEventCallback callback,
-                String callerPkg) {
-            try {
-                if (!hasTetherAccessPermission()) {
-                    callback.onCallbackStopped(TETHER_ERROR_NO_ACCESS_TETHERING_PERMISSION);
-                    return;
-                }
-                mTethering.registerTetheringEventCallback(callback);
-            } catch (RemoteException e) { }
-        }
-
-        @Override
-        public void unregisterTetheringEventCallback(ITetheringEventCallback callback,
-                String callerPkg) {
-            try {
-                if (!hasTetherAccessPermission()) {
-                    callback.onCallbackStopped(TETHER_ERROR_NO_ACCESS_TETHERING_PERMISSION);
-                    return;
-                }
-                mTethering.unregisterTetheringEventCallback(callback);
-            } catch (RemoteException e) { }
-        }
-
-        @Override
-        public void stopAllTethering(String callerPkg, String callingAttributionTag,
-                IIntResultListener listener) {
-            if (checkAndNotifyCommonError(callerPkg, callingAttributionTag, listener)) return;
-
-            try {
-                mTethering.untetherAll();
-                listener.onResult(TETHER_ERROR_NO_ERROR);
-            } catch (RemoteException e) { }
-        }
-
-        @Override
-        public void isTetheringSupported(String callerPkg, String callingAttributionTag,
-                IIntResultListener listener) {
-            if (checkAndNotifyCommonError(callerPkg, callingAttributionTag, listener)) return;
-
-            try {
-                listener.onResult(TETHER_ERROR_NO_ERROR);
-            } catch (RemoteException e) { }
-        }
-
-        @Override
-        protected void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter writer,
-                    @Nullable String[] args) {
-            mTethering.dump(fd, writer, args);
-        }
-
-        private boolean checkAndNotifyCommonError(final String callerPkg,
-                final String callingAttributionTag, final IIntResultListener listener) {
-            return checkAndNotifyCommonError(callerPkg, callingAttributionTag,
-                    false /* onlyAllowPrivileged */, listener);
-        }
-
-        private boolean checkAndNotifyCommonError(final String callerPkg,
-                final String callingAttributionTag, final boolean onlyAllowPrivileged,
-                final IIntResultListener listener) {
-            try {
-                if (!hasTetherChangePermission(callerPkg, callingAttributionTag,
-                        onlyAllowPrivileged)) {
-                    listener.onResult(TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION);
-                    return true;
-                }
-                if (!mTethering.isTetheringSupported()) {
-                    listener.onResult(TETHER_ERROR_UNSUPPORTED);
-                    return true;
-                }
-            } catch (RemoteException e) {
-                return true;
-            }
-
-            return false;
-        }
-
-        private boolean checkAndNotifyCommonError(final String callerPkg,
-                final String callingAttributionTag, final ResultReceiver receiver) {
-            if (!hasTetherChangePermission(callerPkg, callingAttributionTag,
-                    false /* onlyAllowPrivileged */)) {
-                receiver.send(TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION, null);
-                return true;
-            }
-            if (!mTethering.isTetheringSupported()) {
-                receiver.send(TETHER_ERROR_UNSUPPORTED, null);
-                return true;
-            }
-
-            return false;
-        }
-
-        private boolean hasNetworkStackPermission() {
-            return checkCallingOrSelfPermission(NETWORK_STACK)
-                    || checkCallingOrSelfPermission(PERMISSION_MAINLINE_NETWORK_STACK);
-        }
-
-        private boolean hasTetherPrivilegedPermission() {
-            return checkCallingOrSelfPermission(TETHER_PRIVILEGED);
-        }
-
-        private boolean checkCallingOrSelfPermission(final String permission) {
-            return mService.checkCallingOrSelfPermission(permission) == PERMISSION_GRANTED;
-        }
-
-        private boolean hasTetherChangePermission(final String callerPkg,
-                final String callingAttributionTag, final boolean onlyAllowPrivileged) {
-            if (onlyAllowPrivileged && !hasNetworkStackPermission()) return false;
-
-            if (hasTetherPrivilegedPermission()) return true;
-
-            if (mTethering.isTetherProvisioningRequired()) return false;
-
-            int uid = Binder.getCallingUid();
-
-            // If callerPkg's uid is not same as Binder.getCallingUid(),
-            // checkAndNoteWriteSettingsOperation will return false and the operation will be
-            // denied.
-            return mService.checkAndNoteWriteSettingsOperation(mService, uid, callerPkg,
-                    callingAttributionTag, false /* throwException */);
-        }
-
-        private boolean hasTetherAccessPermission() {
-            if (hasTetherPrivilegedPermission()) return true;
-
-            return mService.checkCallingOrSelfPermission(
-                    ACCESS_NETWORK_STATE) == PERMISSION_GRANTED;
-        }
-    }
-
-    /**
-     * Check if the package is a allowed to write settings. This also accounts that such an access
-     * happened.
-     *
-     * @return {@code true} iff the package is allowed to write settings.
-     */
-    @VisibleForTesting
-    boolean checkAndNoteWriteSettingsOperation(@NonNull Context context, int uid,
-            @NonNull String callingPackage, @Nullable String callingAttributionTag,
-            boolean throwException) {
-        return Settings.checkAndNoteWriteSettingsOperation(context, uid, callingPackage,
-                throwException);
-    }
-
-    /**
-     * An injection method for testing.
-     */
-    @VisibleForTesting
-    public TetheringDependencies makeTetheringDependencies() {
-        return new TetheringDependencies() {
-            @Override
-            public NetworkRequest getDefaultNetworkRequest() {
-                // TODO: b/147280869, add a proper system API to replace this.
-                final NetworkRequest trackDefaultRequest = new NetworkRequest.Builder()
-                        .clearCapabilities()
-                        .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
-                        .addCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED)
-                        .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
-                        .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
-                        .build();
-                return trackDefaultRequest;
-            }
-
-            @Override
-            public Looper getTetheringLooper() {
-                final HandlerThread tetherThread = new HandlerThread("android.tethering");
-                tetherThread.start();
-                return tetherThread.getLooper();
-            }
-
-            @Override
-            public Context getContext() {
-                return TetheringService.this;
-            }
-
-            @Override
-            public IpServer.Dependencies getIpServerDependencies() {
-                return new IpServer.Dependencies() {
-                    @Override
-                    public void makeDhcpServer(String ifName, DhcpServingParamsParcel params,
-                            DhcpServerCallbacks cb) {
-                        try {
-                            final INetworkStackConnector service = getNetworkStackConnector();
-                            if (service == null) return;
-
-                            service.makeDhcpServer(ifName, params, cb);
-                        } catch (RemoteException e) {
-                            Log.e(TAG, "Fail to make dhcp server");
-                            try {
-                                cb.onDhcpServerCreated(STATUS_UNKNOWN_ERROR, null);
-                            } catch (RemoteException re) { }
-                        }
-                    }
-                };
-            }
-
-            // TODO: replace this by NetworkStackClient#getRemoteConnector after refactoring
-            // networkStackClient.
-            static final int NETWORKSTACK_TIMEOUT_MS = 60_000;
-            private INetworkStackConnector getNetworkStackConnector() {
-                IBinder connector;
-                try {
-                    final long before = System.currentTimeMillis();
-                    while ((connector = NetworkStack.getService()) == null) {
-                        if (System.currentTimeMillis() - before > NETWORKSTACK_TIMEOUT_MS) {
-                            Log.wtf(TAG, "Timeout, fail to get INetworkStackConnector");
-                            return null;
-                        }
-                        Thread.sleep(200);
-                    }
-                } catch (InterruptedException e) {
-                    Log.wtf(TAG, "Interrupted, fail to get INetworkStackConnector");
-                    return null;
-                }
-                return INetworkStackConnector.Stub.asInterface(connector);
-            }
-
-            @Override
-            public BluetoothAdapter getBluetoothAdapter() {
-                return BluetoothAdapter.getDefaultAdapter();
-            }
-        };
-    }
-}
diff --git a/packages/Tethering/src/com/android/networkstack/tethering/UpstreamNetworkMonitor.java b/packages/Tethering/src/com/android/networkstack/tethering/UpstreamNetworkMonitor.java
deleted file mode 100644
index b17065c..0000000
--- a/packages/Tethering/src/com/android/networkstack/tethering/UpstreamNetworkMonitor.java
+++ /dev/null
@@ -1,607 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.networkstack.tethering;
-
-import static android.net.ConnectivityManager.TYPE_BLUETOOTH;
-import static android.net.ConnectivityManager.TYPE_ETHERNET;
-import static android.net.ConnectivityManager.TYPE_MOBILE;
-import static android.net.ConnectivityManager.TYPE_MOBILE_DUN;
-import static android.net.ConnectivityManager.TYPE_MOBILE_HIPRI;
-import static android.net.ConnectivityManager.TYPE_WIFI;
-import static android.net.NetworkCapabilities.NET_CAPABILITY_DUN;
-import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET;
-import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED;
-import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VPN;
-import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
-
-import android.content.Context;
-import android.net.ConnectivityManager;
-import android.net.ConnectivityManager.NetworkCallback;
-import android.net.IpPrefix;
-import android.net.LinkProperties;
-import android.net.Network;
-import android.net.NetworkCapabilities;
-import android.net.NetworkRequest;
-import android.net.util.PrefixUtils;
-import android.net.util.SharedLog;
-import android.os.Handler;
-import android.util.Log;
-import android.util.SparseIntArray;
-
-import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.util.StateMachine;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Set;
-
-
-/**
- * A class to centralize all the network and link properties information
- * pertaining to the current and any potential upstream network.
- *
- * The owner of UNM gets it to register network callbacks by calling the
- * following methods :
- * Calling #startTrackDefaultNetwork() to track the system default network.
- * Calling #startObserveAllNetworks() to observe all networks. Listening all
- * networks is necessary while the expression of preferred upstreams remains
- * a list of legacy connectivity types.  In future, this can be revisited.
- * Calling #registerMobileNetworkRequest() to bring up mobile DUN/HIPRI network.
- *
- * The methods and data members of this class are only to be accessed and
- * modified from the tethering main state machine thread. Any other
- * access semantics would necessitate the addition of locking.
- *
- * TODO: Move upstream selection logic here.
- *
- * All callback methods are run on the same thread as the specified target
- * state machine.  This class does not require locking when accessed from this
- * thread.  Access from other threads is not advised.
- *
- * @hide
- */
-public class UpstreamNetworkMonitor {
-    private static final String TAG = UpstreamNetworkMonitor.class.getSimpleName();
-    private static final boolean DBG = false;
-    private static final boolean VDBG = false;
-
-    public static final int EVENT_ON_CAPABILITIES   = 1;
-    public static final int EVENT_ON_LINKPROPERTIES = 2;
-    public static final int EVENT_ON_LOST           = 3;
-    public static final int NOTIFY_LOCAL_PREFIXES   = 10;
-    // This value is used by deprecated preferredUpstreamIfaceTypes selection which is default
-    // disabled.
-    @VisibleForTesting
-    public static final int TYPE_NONE = -1;
-
-    private static final int CALLBACK_LISTEN_ALL = 1;
-    private static final int CALLBACK_DEFAULT_INTERNET = 2;
-    private static final int CALLBACK_MOBILE_REQUEST = 3;
-
-    private static final SparseIntArray sLegacyTypeToTransport = new SparseIntArray();
-    static {
-        sLegacyTypeToTransport.put(TYPE_MOBILE,       NetworkCapabilities.TRANSPORT_CELLULAR);
-        sLegacyTypeToTransport.put(TYPE_MOBILE_DUN,   NetworkCapabilities.TRANSPORT_CELLULAR);
-        sLegacyTypeToTransport.put(TYPE_MOBILE_HIPRI, NetworkCapabilities.TRANSPORT_CELLULAR);
-        sLegacyTypeToTransport.put(TYPE_WIFI,         NetworkCapabilities.TRANSPORT_WIFI);
-        sLegacyTypeToTransport.put(TYPE_BLUETOOTH,    NetworkCapabilities.TRANSPORT_BLUETOOTH);
-        sLegacyTypeToTransport.put(TYPE_ETHERNET,     NetworkCapabilities.TRANSPORT_ETHERNET);
-    }
-
-    private final Context mContext;
-    private final SharedLog mLog;
-    private final StateMachine mTarget;
-    private final Handler mHandler;
-    private final int mWhat;
-    private final HashMap<Network, UpstreamNetworkState> mNetworkMap = new HashMap<>();
-    private HashSet<IpPrefix> mLocalPrefixes;
-    private ConnectivityManager mCM;
-    private EntitlementManager mEntitlementMgr;
-    private NetworkCallback mListenAllCallback;
-    private NetworkCallback mDefaultNetworkCallback;
-    private NetworkCallback mMobileNetworkCallback;
-    private boolean mDunRequired;
-    // Whether the current default upstream is mobile or not.
-    private boolean mIsDefaultCellularUpstream;
-    // The current system default network (not really used yet).
-    private Network mDefaultInternetNetwork;
-    // The current upstream network used for tethering.
-    private Network mTetheringUpstreamNetwork;
-
-    public UpstreamNetworkMonitor(Context ctx, StateMachine tgt, SharedLog log, int what) {
-        mContext = ctx;
-        mTarget = tgt;
-        mHandler = mTarget.getHandler();
-        mLog = log.forSubComponent(TAG);
-        mWhat = what;
-        mLocalPrefixes = new HashSet<>();
-        mIsDefaultCellularUpstream = false;
-    }
-
-    @VisibleForTesting
-    public UpstreamNetworkMonitor(
-            ConnectivityManager cm, StateMachine tgt, SharedLog log, int what) {
-        this((Context) null, tgt, log, what);
-        mCM = cm;
-    }
-
-    /**
-     * Tracking the system default network. This method should be called when system is ready.
-     *
-     * @param defaultNetworkRequest should be the same as ConnectivityService default request
-     * @param entitle a EntitlementManager object to communicate between EntitlementManager and
-     * UpstreamNetworkMonitor
-     */
-    public void startTrackDefaultNetwork(NetworkRequest defaultNetworkRequest,
-            EntitlementManager entitle) {
-
-        // defaultNetworkRequest is not really a "request", just a way of tracking the system
-        // default network. It's guaranteed not to actually bring up any networks because it's
-        // the should be the same request as the ConnectivityService default request, and thus
-        // shares fate with it. We can't use registerDefaultNetworkCallback because it will not
-        // track the system default network if there is a VPN that applies to our UID.
-        if (mDefaultNetworkCallback == null) {
-            mDefaultNetworkCallback = new UpstreamNetworkCallback(CALLBACK_DEFAULT_INTERNET);
-            cm().requestNetwork(defaultNetworkRequest, mDefaultNetworkCallback, mHandler);
-        }
-        if (mEntitlementMgr == null) {
-            mEntitlementMgr = entitle;
-        }
-    }
-
-    /** Listen all networks. */
-    public void startObserveAllNetworks() {
-        stop();
-
-        final NetworkRequest listenAllRequest = new NetworkRequest.Builder()
-                .clearCapabilities().build();
-        mListenAllCallback = new UpstreamNetworkCallback(CALLBACK_LISTEN_ALL);
-        cm().registerNetworkCallback(listenAllRequest, mListenAllCallback, mHandler);
-    }
-
-    /**
-     * Stop tracking candidate tethering upstreams and release mobile network request.
-     * Note: this function is used when tethering is stopped because tethering do not need to
-     * choose upstream anymore. But it would not stop default network tracking because
-     * EntitlementManager may need to know default network to decide whether to request entitlement
-     * check even tethering is not active yet.
-     */
-    public void stop() {
-        releaseMobileNetworkRequest();
-
-        releaseCallback(mListenAllCallback);
-        mListenAllCallback = null;
-
-        mTetheringUpstreamNetwork = null;
-        mNetworkMap.clear();
-    }
-
-    /** Setup or teardown DUN connection according to |dunRequired|. */
-    public void updateMobileRequiresDun(boolean dunRequired) {
-        final boolean valueChanged = (mDunRequired != dunRequired);
-        mDunRequired = dunRequired;
-        if (valueChanged && mobileNetworkRequested()) {
-            releaseMobileNetworkRequest();
-            registerMobileNetworkRequest();
-        }
-    }
-
-    /** Whether mobile network is requested. */
-    public boolean mobileNetworkRequested() {
-        return (mMobileNetworkCallback != null);
-    }
-
-    /** Request mobile network if mobile upstream is permitted. */
-    public void registerMobileNetworkRequest() {
-        if (!isCellularUpstreamPermitted()) {
-            mLog.i("registerMobileNetworkRequest() is not permitted");
-            releaseMobileNetworkRequest();
-            return;
-        }
-        if (mMobileNetworkCallback != null) {
-            mLog.e("registerMobileNetworkRequest() already registered");
-            return;
-        }
-
-        final NetworkRequest mobileUpstreamRequest;
-        if (mDunRequired) {
-            mobileUpstreamRequest = new NetworkRequest.Builder()
-                    .addCapability(NET_CAPABILITY_DUN)
-                    .removeCapability(NET_CAPABILITY_NOT_RESTRICTED)
-                    .addTransportType(TRANSPORT_CELLULAR).build();
-        } else {
-            mobileUpstreamRequest = new NetworkRequest.Builder()
-                    .addCapability(NET_CAPABILITY_INTERNET)
-                    .addTransportType(TRANSPORT_CELLULAR).build();
-        }
-
-        // The existing default network and DUN callbacks will be notified.
-        // Therefore, to avoid duplicate notifications, we only register a no-op.
-        mMobileNetworkCallback = new UpstreamNetworkCallback(CALLBACK_MOBILE_REQUEST);
-
-        // The following use of the legacy type system cannot be removed until
-        // upstream selection no longer finds networks by legacy type.
-        // See also http://b/34364553 .
-        final int legacyType = mDunRequired ? TYPE_MOBILE_DUN : TYPE_MOBILE_HIPRI;
-
-        // TODO: Change the timeout from 0 (no onUnavailable callback) to some
-        // moderate callback timeout. This might be useful for updating some UI.
-        // Additionally, we log a message to aid in any subsequent debugging.
-        mLog.i("requesting mobile upstream network: " + mobileUpstreamRequest);
-
-        cm().requestNetwork(mobileUpstreamRequest, 0, legacyType, mHandler,
-                mMobileNetworkCallback);
-    }
-
-    /** Release mobile network request. */
-    public void releaseMobileNetworkRequest() {
-        if (mMobileNetworkCallback == null) return;
-
-        cm().unregisterNetworkCallback(mMobileNetworkCallback);
-        mMobileNetworkCallback = null;
-    }
-
-    // So many TODOs here, but chief among them is: make this functionality an
-    // integral part of this class such that whenever a higher priority network
-    // becomes available and useful we (a) file a request to keep it up as
-    // necessary and (b) change all upstream tracking state accordingly (by
-    // passing LinkProperties up to Tethering).
-    /**
-     * Select the first available network from |perferredTypes|.
-     */
-    public UpstreamNetworkState selectPreferredUpstreamType(Iterable<Integer> preferredTypes) {
-        final TypeStatePair typeStatePair = findFirstAvailableUpstreamByType(
-                mNetworkMap.values(), preferredTypes, isCellularUpstreamPermitted());
-
-        mLog.log("preferred upstream type: " + typeStatePair.type);
-
-        switch (typeStatePair.type) {
-            case TYPE_MOBILE_DUN:
-            case TYPE_MOBILE_HIPRI:
-                // Tethering just selected mobile upstream in spite of the default network being
-                // not mobile. This can happen because of the priority list.
-                // Notify EntitlementManager to check permission for using mobile upstream.
-                if (!mIsDefaultCellularUpstream) {
-                    mEntitlementMgr.maybeRunProvisioning();
-                }
-                // If we're on DUN, put our own grab on it.
-                registerMobileNetworkRequest();
-                break;
-            case TYPE_NONE:
-                // If we found NONE and mobile upstream is permitted we don't want to do this
-                // as we want any previous requests to keep trying to bring up something we can use.
-                if (!isCellularUpstreamPermitted()) releaseMobileNetworkRequest();
-                break;
-            default:
-                // If we've found an active upstream connection that's not DUN/HIPRI
-                // we should stop any outstanding DUN/HIPRI requests.
-                releaseMobileNetworkRequest();
-                break;
-        }
-
-        return typeStatePair.ns;
-    }
-
-    /**
-     * Get current preferred upstream network. If default network is cellular and DUN is required,
-     * preferred upstream would be DUN otherwise preferred upstream is the same as default network.
-     * Returns null if no current upstream is available.
-     */
-    public UpstreamNetworkState getCurrentPreferredUpstream() {
-        final UpstreamNetworkState dfltState = (mDefaultInternetNetwork != null)
-                ? mNetworkMap.get(mDefaultInternetNetwork)
-                : null;
-        if (isNetworkUsableAndNotCellular(dfltState)) return dfltState;
-
-        if (!isCellularUpstreamPermitted()) return null;
-
-        if (!mDunRequired) return dfltState;
-
-        // Find a DUN network. Note that code in Tethering causes a DUN request
-        // to be filed, but this might be moved into this class in future.
-        return findFirstDunNetwork(mNetworkMap.values());
-    }
-
-    /** Tell UpstreamNetworkMonitor which network is the current upstream of tethering. */
-    public void setCurrentUpstream(Network upstream) {
-        mTetheringUpstreamNetwork = upstream;
-    }
-
-    /** Return local prefixes. */
-    public Set<IpPrefix> getLocalPrefixes() {
-        return (Set<IpPrefix>) mLocalPrefixes.clone();
-    }
-
-    private boolean isCellularUpstreamPermitted() {
-        if (mEntitlementMgr != null) {
-            return mEntitlementMgr.isCellularUpstreamPermitted();
-        } else {
-            // This flow should only happens in testing.
-            return true;
-        }
-    }
-
-    private void handleAvailable(Network network) {
-        if (mNetworkMap.containsKey(network)) return;
-
-        if (VDBG) Log.d(TAG, "onAvailable for " + network);
-        mNetworkMap.put(network, new UpstreamNetworkState(null, null, network));
-    }
-
-    private void handleNetCap(Network network, NetworkCapabilities newNc) {
-        final UpstreamNetworkState prev = mNetworkMap.get(network);
-        if (prev == null || newNc.equals(prev.networkCapabilities)) {
-            // Ignore notifications about networks for which we have not yet
-            // received onAvailable() (should never happen) and any duplicate
-            // notifications (e.g. matching more than one of our callbacks).
-            return;
-        }
-
-        if (VDBG) {
-            Log.d(TAG, String.format("EVENT_ON_CAPABILITIES for %s: %s",
-                    network, newNc));
-        }
-
-        mNetworkMap.put(network, new UpstreamNetworkState(
-                prev.linkProperties, newNc, network));
-        // TODO: If sufficient information is available to select a more
-        // preferable upstream, do so now and notify the target.
-        notifyTarget(EVENT_ON_CAPABILITIES, network);
-    }
-
-    private void handleLinkProp(Network network, LinkProperties newLp) {
-        final UpstreamNetworkState prev = mNetworkMap.get(network);
-        if (prev == null || newLp.equals(prev.linkProperties)) {
-            // Ignore notifications about networks for which we have not yet
-            // received onAvailable() (should never happen) and any duplicate
-            // notifications (e.g. matching more than one of our callbacks).
-            return;
-        }
-
-        if (VDBG) {
-            Log.d(TAG, String.format("EVENT_ON_LINKPROPERTIES for %s: %s",
-                    network, newLp));
-        }
-
-        mNetworkMap.put(network, new UpstreamNetworkState(
-                newLp, prev.networkCapabilities, network));
-        // TODO: If sufficient information is available to select a more
-        // preferable upstream, do so now and notify the target.
-        notifyTarget(EVENT_ON_LINKPROPERTIES, network);
-    }
-
-    private void handleLost(Network network) {
-        // There are few TODOs within ConnectivityService's rematching code
-        // pertaining to spurious onLost() notifications.
-        //
-        // TODO: simplify this, probably if favor of code that:
-        //     - selects a new upstream if mTetheringUpstreamNetwork has
-        //       been lost (by any callback)
-        //     - deletes the entry from the map only when the LISTEN_ALL
-        //       callback gets notified.
-
-        if (!mNetworkMap.containsKey(network)) {
-            // Ignore loss of networks about which we had not previously
-            // learned any information or for which we have already processed
-            // an onLost() notification.
-            return;
-        }
-
-        if (VDBG) Log.d(TAG, "EVENT_ON_LOST for " + network);
-
-        // TODO: If sufficient information is available to select a more
-        // preferable upstream, do so now and notify the target.  Likewise,
-        // if the current upstream network is gone, notify the target of the
-        // fact that we now have no upstream at all.
-        notifyTarget(EVENT_ON_LOST, mNetworkMap.remove(network));
-    }
-
-    private void recomputeLocalPrefixes() {
-        final HashSet<IpPrefix> localPrefixes = allLocalPrefixes(mNetworkMap.values());
-        if (!mLocalPrefixes.equals(localPrefixes)) {
-            mLocalPrefixes = localPrefixes;
-            notifyTarget(NOTIFY_LOCAL_PREFIXES, localPrefixes.clone());
-        }
-    }
-
-    // Fetch (and cache) a ConnectivityManager only if and when we need one.
-    private ConnectivityManager cm() {
-        if (mCM == null) {
-            // MUST call the String variant to be able to write unittests.
-            mCM = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
-        }
-        return mCM;
-    }
-
-    /**
-     * A NetworkCallback class that handles information of interest directly
-     * in the thread on which it is invoked. To avoid locking, this MUST be
-     * run on the same thread as the target state machine's handler.
-     */
-    private class UpstreamNetworkCallback extends NetworkCallback {
-        private final int mCallbackType;
-
-        UpstreamNetworkCallback(int callbackType) {
-            mCallbackType = callbackType;
-        }
-
-        @Override
-        public void onAvailable(Network network) {
-            handleAvailable(network);
-        }
-
-        @Override
-        public void onCapabilitiesChanged(Network network, NetworkCapabilities newNc) {
-            if (mCallbackType == CALLBACK_DEFAULT_INTERNET) {
-                mDefaultInternetNetwork = network;
-                final boolean newIsCellular = isCellular(newNc);
-                if (mIsDefaultCellularUpstream != newIsCellular) {
-                    mIsDefaultCellularUpstream = newIsCellular;
-                    mEntitlementMgr.notifyUpstream(newIsCellular);
-                }
-                return;
-            }
-
-            handleNetCap(network, newNc);
-        }
-
-        @Override
-        public void onLinkPropertiesChanged(Network network, LinkProperties newLp) {
-            if (mCallbackType == CALLBACK_DEFAULT_INTERNET) return;
-
-            handleLinkProp(network, newLp);
-            // Any non-LISTEN_ALL callback will necessarily concern a network that will
-            // also match the LISTEN_ALL callback by construction of the LISTEN_ALL callback.
-            // So it's not useful to do this work for non-LISTEN_ALL callbacks.
-            if (mCallbackType == CALLBACK_LISTEN_ALL) {
-                recomputeLocalPrefixes();
-            }
-        }
-
-        @Override
-        public void onLost(Network network) {
-            if (mCallbackType == CALLBACK_DEFAULT_INTERNET) {
-                mDefaultInternetNetwork = null;
-                mIsDefaultCellularUpstream = false;
-                mEntitlementMgr.notifyUpstream(false);
-                return;
-            }
-
-            handleLost(network);
-            // Any non-LISTEN_ALL callback will necessarily concern a network that will
-            // also match the LISTEN_ALL callback by construction of the LISTEN_ALL callback.
-            // So it's not useful to do this work for non-LISTEN_ALL callbacks.
-            if (mCallbackType == CALLBACK_LISTEN_ALL) {
-                recomputeLocalPrefixes();
-            }
-        }
-    }
-
-    private void releaseCallback(NetworkCallback cb) {
-        if (cb != null) cm().unregisterNetworkCallback(cb);
-    }
-
-    private void notifyTarget(int which, Network network) {
-        notifyTarget(which, mNetworkMap.get(network));
-    }
-
-    private void notifyTarget(int which, Object obj) {
-        mTarget.sendMessage(mWhat, which, 0, obj);
-    }
-
-    private static class TypeStatePair {
-        public int type = TYPE_NONE;
-        public UpstreamNetworkState ns = null;
-    }
-
-    private static TypeStatePair findFirstAvailableUpstreamByType(
-            Iterable<UpstreamNetworkState> netStates, Iterable<Integer> preferredTypes,
-            boolean isCellularUpstreamPermitted) {
-        final TypeStatePair result = new TypeStatePair();
-
-        for (int type : preferredTypes) {
-            NetworkCapabilities nc;
-            try {
-                nc = networkCapabilitiesForType(type);
-            } catch (IllegalArgumentException iae) {
-                Log.e(TAG, "No NetworkCapabilities mapping for legacy type: " + type);
-                continue;
-            }
-            if (!isCellularUpstreamPermitted && isCellular(nc)) {
-                continue;
-            }
-
-            for (UpstreamNetworkState value : netStates) {
-                if (!nc.satisfiedByNetworkCapabilities(value.networkCapabilities)) {
-                    continue;
-                }
-
-                result.type = type;
-                result.ns = value;
-                return result;
-            }
-        }
-
-        return result;
-    }
-
-    private static HashSet<IpPrefix> allLocalPrefixes(Iterable<UpstreamNetworkState> netStates) {
-        final HashSet<IpPrefix> prefixSet = new HashSet<>();
-
-        for (UpstreamNetworkState ns : netStates) {
-            final LinkProperties lp = ns.linkProperties;
-            if (lp == null) continue;
-            prefixSet.addAll(PrefixUtils.localPrefixesFrom(lp));
-        }
-
-        return prefixSet;
-    }
-
-    private static boolean isCellular(UpstreamNetworkState ns) {
-        return (ns != null) && isCellular(ns.networkCapabilities);
-    }
-
-    private static boolean isCellular(NetworkCapabilities nc) {
-        return (nc != null) && nc.hasTransport(TRANSPORT_CELLULAR)
-               && nc.hasCapability(NET_CAPABILITY_NOT_VPN);
-    }
-
-    private static boolean hasCapability(UpstreamNetworkState ns, int netCap) {
-        return (ns != null) && (ns.networkCapabilities != null)
-               && ns.networkCapabilities.hasCapability(netCap);
-    }
-
-    private static boolean isNetworkUsableAndNotCellular(UpstreamNetworkState ns) {
-        return (ns != null) && (ns.networkCapabilities != null) && (ns.linkProperties != null)
-               && !isCellular(ns.networkCapabilities);
-    }
-
-    private static UpstreamNetworkState findFirstDunNetwork(
-            Iterable<UpstreamNetworkState> netStates) {
-        for (UpstreamNetworkState ns : netStates) {
-            if (isCellular(ns) && hasCapability(ns, NET_CAPABILITY_DUN)) return ns;
-        }
-
-        return null;
-    }
-
-    /**
-     * Given a legacy type (TYPE_WIFI, ...) returns the corresponding NetworkCapabilities instance.
-     * This function is used for deprecated legacy type and be disabled by default.
-     */
-    @VisibleForTesting
-    public static NetworkCapabilities networkCapabilitiesForType(int type) {
-        final NetworkCapabilities.Builder builder = new NetworkCapabilities.Builder();
-
-        // Map from type to transports.
-        final int notFound = -1;
-        final int transport = sLegacyTypeToTransport.get(type, notFound);
-        if (transport == notFound) {
-            throw new IllegalArgumentException("unknown legacy type: " + type);
-        }
-        builder.addTransportType(transport);
-
-        if (type == TYPE_MOBILE_DUN) {
-            builder.addCapability(NetworkCapabilities.NET_CAPABILITY_DUN);
-            // DUN is restricted network, see NetworkCapabilities#FORCE_RESTRICTED_CAPABILITIES.
-            builder.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
-        } else {
-            builder.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
-        }
-        return builder.build();
-    }
-}
diff --git a/packages/Tethering/src/com/android/networkstack/tethering/UpstreamNetworkState.java b/packages/Tethering/src/com/android/networkstack/tethering/UpstreamNetworkState.java
deleted file mode 100644
index bab9f84..0000000
--- a/packages/Tethering/src/com/android/networkstack/tethering/UpstreamNetworkState.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.networkstack.tethering;
-
-import android.net.LinkProperties;
-import android.net.Network;
-import android.net.NetworkCapabilities;
-
-import androidx.annotation.NonNull;
-
-/**
- * Snapshot of tethering upstream network state.
- */
-public class UpstreamNetworkState {
-    /** {@link LinkProperties}. */
-    public final LinkProperties linkProperties;
-    /** {@link NetworkCapabilities}. */
-    public final NetworkCapabilities networkCapabilities;
-    /** {@link Network}. */
-    public final Network network;
-
-    /** Constructs a new UpstreamNetworkState. */
-    public UpstreamNetworkState(LinkProperties linkProperties,
-            NetworkCapabilities networkCapabilities, Network network) {
-        this.linkProperties = linkProperties;
-        this.networkCapabilities = networkCapabilities;
-        this.network = network;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return String.format("UpstreamNetworkState{%s, %s, %s}",
-                network == null ? "null" : network,
-                networkCapabilities == null ? "null" : networkCapabilities,
-                linkProperties == null ? "null" : linkProperties);
-    }
-}
diff --git a/packages/Tethering/tests/integration/Android.bp b/packages/Tethering/tests/integration/Android.bp
deleted file mode 100644
index ed69b7d..0000000
--- a/packages/Tethering/tests/integration/Android.bp
+++ /dev/null
@@ -1,85 +0,0 @@
-//
-// Copyright (C) 2020 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-java_defaults {
-    name: "TetheringIntegrationTestsDefaults",
-    srcs: [
-        "src/**/*.java",
-        "src/**/*.kt",
-    ],
-    static_libs: [
-        "NetworkStackApiStableLib",
-        "androidx.test.rules",
-        "frameworks-base-testutils",
-        "mockito-target-extended-minus-junit4",
-        "net-tests-utils",
-        "testables",
-    ],
-    libs: [
-        "android.test.runner",
-        "android.test.base",
-        "android.test.mock",
-    ],
-    jni_libs: [
-        // For mockito extended
-        "libdexmakerjvmtiagent",
-        "libstaticjvmtiagent",
-    ],
-    jarjar_rules: ":NetworkStackJarJarRules",
-}
-
-android_library {
-    name: "TetheringIntegrationTestsLib",
-    platform_apis: true,
-    defaults: ["TetheringIntegrationTestsDefaults"],
-    visibility: ["//cts/tests/tests/tethering"]
-}
-
-android_test {
-    name: "TetheringIntegrationTests",
-    platform_apis: true,
-    defaults: ["TetheringIntegrationTestsDefaults"],
-    test_suites: [
-        "device-tests",
-        "mts",
-    ],
-    compile_multilib: "both",
-}
-
-// Special version of the tethering tests that includes all tests necessary for code coverage
-// purposes. This is currently the union of TetheringTests, TetheringIntegrationTests and
-// NetworkStackTests.
-android_test {
-    name: "TetheringCoverageTests",
-    platform_apis: true,
-    test_suites: ["device-tests", "mts"],
-    test_config: "AndroidTest_Coverage.xml",
-    defaults: ["libnetworkstackutilsjni_deps"],
-    static_libs: [
-        "NetworkStaticLibTestsLib",
-        "NetworkStackTestsLib",
-        "TetheringTestsLib",
-        "TetheringIntegrationTestsLib",
-    ],
-    jni_libs: [
-        // For mockito extended
-        "libdexmakerjvmtiagent",
-        "libstaticjvmtiagent",
-        // For NetworkStackUtils included in NetworkStackBase
-        "libnetworkstackutilsjni",
-    ],
-    compile_multilib: "both",
-    manifest: "AndroidManifest_coverage.xml",
-}
\ No newline at end of file
diff --git a/packages/Tethering/tests/integration/AndroidManifest.xml b/packages/Tethering/tests/integration/AndroidManifest.xml
deleted file mode 100644
index fddfaad..0000000
--- a/packages/Tethering/tests/integration/AndroidManifest.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="com.android.networkstack.tethering.tests.integration">
-
-    <uses-permission android:name="android.permission.INTERNET"/>
-
-    <application android:debuggable="true">
-        <uses-library android:name="android.test.runner" />
-    </application>
-    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
-        android:targetPackage="com.android.networkstack.tethering.tests.integration"
-        android:label="Tethering integration tests">
-    </instrumentation>
-</manifest>
diff --git a/packages/Tethering/tests/integration/AndroidManifest_coverage.xml b/packages/Tethering/tests/integration/AndroidManifest_coverage.xml
deleted file mode 100644
index 06de00d..0000000
--- a/packages/Tethering/tests/integration/AndroidManifest_coverage.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          xmlns:tools="http://schemas.android.com/tools"
-          package="com.android.networkstack.tethering.tests.coverage">
-
-    <application tools:replace="android:label"
-                 android:debuggable="true"
-                 android:label="Tethering coverage tests">
-        <uses-library android:name="android.test.runner" />
-    </application>
-    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
-                     android:targetPackage="com.android.networkstack.tethering.tests.coverage"
-                     android:label="Tethering coverage tests">
-    </instrumentation>
-</manifest>
diff --git a/packages/Tethering/tests/integration/AndroidTest_Coverage.xml b/packages/Tethering/tests/integration/AndroidTest_Coverage.xml
deleted file mode 100644
index 3def209..0000000
--- a/packages/Tethering/tests/integration/AndroidTest_Coverage.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<configuration description="Runs coverage tests for Tethering">
-    <target_preparer class="com.android.tradefed.targetprep.TestAppInstallSetup">
-        <option name="test-file-name" value="TetheringCoverageTests.apk" />
-    </target_preparer>
-
-    <option name="test-tag" value="TetheringCoverageTests" />
-    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
-        <option name="package" value="com.android.networkstack.tethering.tests.coverage" />
-        <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
-        <option name="hidden-api-checks" value="false"/>
-    </test>
-</configuration>
\ No newline at end of file
diff --git a/packages/Tethering/tests/integration/src/android/net/EthernetTetheringTest.java b/packages/Tethering/tests/integration/src/android/net/EthernetTetheringTest.java
deleted file mode 100644
index 64be2d9..0000000
--- a/packages/Tethering/tests/integration/src/android/net/EthernetTetheringTest.java
+++ /dev/null
@@ -1,567 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net;
-
-import static android.Manifest.permission.MANAGE_TEST_NETWORKS;
-import static android.Manifest.permission.NETWORK_SETTINGS;
-import static android.Manifest.permission.TETHER_PRIVILEGED;
-import static android.net.TetheringManager.TETHERING_ETHERNET;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.junit.Assume.assumeFalse;
-import static org.junit.Assume.assumeTrue;
-
-import android.app.UiAutomation;
-import android.content.Context;
-import android.net.EthernetManager.TetheredInterfaceCallback;
-import android.net.EthernetManager.TetheredInterfaceRequest;
-import android.net.TetheringManager.StartTetheringCallback;
-import android.net.TetheringManager.TetheringEventCallback;
-import android.net.TetheringManager.TetheringRequest;
-import android.net.dhcp.DhcpAckPacket;
-import android.net.dhcp.DhcpOfferPacket;
-import android.net.dhcp.DhcpPacket;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.SystemClock;
-import android.os.SystemProperties;
-import android.system.Os;
-import android.util.Log;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.filters.MediumTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.testutils.HandlerUtils;
-import com.android.testutils.TapPacketReader;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.io.FileDescriptor;
-import java.net.Inet4Address;
-import java.net.InterfaceAddress;
-import java.net.NetworkInterface;
-import java.net.SocketException;
-import java.nio.ByteBuffer;
-import java.util.Collection;
-import java.util.List;
-import java.util.Random;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-@RunWith(AndroidJUnit4.class)
-@MediumTest
-public class EthernetTetheringTest {
-
-    private static final String TAG = EthernetTetheringTest.class.getSimpleName();
-    private static final int TIMEOUT_MS = 5000;
-    private static final int PACKET_READ_TIMEOUT_MS = 100;
-    private static final int DHCP_DISCOVER_ATTEMPTS = 10;
-    private static final byte[] DHCP_REQUESTED_PARAMS = new byte[] {
-            DhcpPacket.DHCP_SUBNET_MASK,
-            DhcpPacket.DHCP_ROUTER,
-            DhcpPacket.DHCP_DNS_SERVER,
-            DhcpPacket.DHCP_LEASE_TIME,
-    };
-    private static final String DHCP_HOSTNAME = "testhostname";
-
-    private final Context mContext = InstrumentationRegistry.getContext();
-    private final EthernetManager mEm = mContext.getSystemService(EthernetManager.class);
-    private final TetheringManager mTm = mContext.getSystemService(TetheringManager.class);
-
-    private TestNetworkInterface mTestIface;
-    private HandlerThread mHandlerThread;
-    private Handler mHandler;
-    private TapPacketReader mTapPacketReader;
-
-    private TetheredInterfaceRequester mTetheredInterfaceRequester;
-    private MyTetheringEventCallback mTetheringEventCallback;
-
-    private UiAutomation mUiAutomation =
-            InstrumentationRegistry.getInstrumentation().getUiAutomation();
-    private boolean mRunTests;
-
-    @Before
-    public void setUp() throws Exception {
-        // Needed to create a TestNetworkInterface, to call requestTetheredInterface, and to receive
-        // tethered client callbacks.
-        mUiAutomation.adoptShellPermissionIdentity(
-                MANAGE_TEST_NETWORKS, NETWORK_SETTINGS, TETHER_PRIVILEGED);
-        mRunTests = mTm.isTetheringSupported() && mEm != null;
-        assumeTrue(mRunTests);
-
-        mHandlerThread = new HandlerThread(getClass().getSimpleName());
-        mHandlerThread.start();
-        mHandler = new Handler(mHandlerThread.getLooper());
-        mTetheredInterfaceRequester = new TetheredInterfaceRequester(mHandler, mEm);
-    }
-
-    private void cleanUp() throws Exception {
-        mTm.stopTethering(TETHERING_ETHERNET);
-        if (mTetheringEventCallback != null) {
-            mTetheringEventCallback.awaitInterfaceUntethered();
-            mTetheringEventCallback.unregister();
-            mTetheringEventCallback = null;
-        }
-        if (mTapPacketReader != null) {
-            TapPacketReader reader = mTapPacketReader;
-            mHandler.post(() -> reader.stop());
-            mTapPacketReader = null;
-        }
-        mHandlerThread.quitSafely();
-        mTetheredInterfaceRequester.release();
-        mEm.setIncludeTestInterfaces(false);
-        maybeDeleteTestInterface();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        try {
-            if (mRunTests) cleanUp();
-        } finally {
-            mUiAutomation.dropShellPermissionIdentity();
-        }
-    }
-
-    @Test
-    public void testVirtualEthernetAlreadyExists() throws Exception {
-        // This test requires manipulating packets. Skip if there is a physical Ethernet connected.
-        assumeFalse(mEm.isAvailable());
-
-        mTestIface = createTestInterface();
-        // This must be done now because as soon as setIncludeTestInterfaces(true) is called, the
-        // interface will be placed in client mode, which will delete the link-local address.
-        // At that point NetworkInterface.getByName() will cease to work on the interface, because
-        // starting in R NetworkInterface can no longer see interfaces without IP addresses.
-        int mtu = getMTU(mTestIface);
-
-        Log.d(TAG, "Including test interfaces");
-        mEm.setIncludeTestInterfaces(true);
-
-        final String iface = mTetheredInterfaceRequester.getInterface();
-        assertEquals("TetheredInterfaceCallback for unexpected interface",
-                mTestIface.getInterfaceName(), iface);
-
-        checkVirtualEthernet(mTestIface, mtu);
-    }
-
-    @Test
-    public void testVirtualEthernet() throws Exception {
-        // This test requires manipulating packets. Skip if there is a physical Ethernet connected.
-        assumeFalse(mEm.isAvailable());
-
-        CompletableFuture<String> futureIface = mTetheredInterfaceRequester.requestInterface();
-
-        mEm.setIncludeTestInterfaces(true);
-
-        mTestIface = createTestInterface();
-
-        final String iface = futureIface.get(TIMEOUT_MS, TimeUnit.MILLISECONDS);
-        assertEquals("TetheredInterfaceCallback for unexpected interface",
-                mTestIface.getInterfaceName(), iface);
-
-        checkVirtualEthernet(mTestIface, getMTU(mTestIface));
-    }
-
-    @Test
-    public void testStaticIpv4() throws Exception {
-        assumeFalse(mEm.isAvailable());
-
-        mEm.setIncludeTestInterfaces(true);
-
-        mTestIface = createTestInterface();
-
-        final String iface = mTetheredInterfaceRequester.getInterface();
-        assertEquals("TetheredInterfaceCallback for unexpected interface",
-                mTestIface.getInterfaceName(), iface);
-
-        assertInvalidStaticIpv4Request(iface, null, null);
-        assertInvalidStaticIpv4Request(iface, "2001:db8::1/64", "2001:db8:2::/64");
-        assertInvalidStaticIpv4Request(iface, "192.0.2.2/28", "2001:db8:2::/28");
-        assertInvalidStaticIpv4Request(iface, "2001:db8:2::/28", "192.0.2.2/28");
-        assertInvalidStaticIpv4Request(iface, "192.0.2.2/28", null);
-        assertInvalidStaticIpv4Request(iface, null, "192.0.2.2/28");
-        assertInvalidStaticIpv4Request(iface, "192.0.2.3/27", "192.0.2.2/28");
-
-        final String localAddr = "192.0.2.3/28";
-        final String clientAddr = "192.0.2.2/28";
-        mTetheringEventCallback = enableEthernetTethering(iface,
-                requestWithStaticIpv4(localAddr, clientAddr));
-
-        mTetheringEventCallback.awaitInterfaceTethered();
-        assertInterfaceHasIpAddress(iface, localAddr);
-
-        byte[] client1 = MacAddress.fromString("1:2:3:4:5:6").toByteArray();
-        byte[] client2 = MacAddress.fromString("a:b:c:d:e:f").toByteArray();
-
-        FileDescriptor fd = mTestIface.getFileDescriptor().getFileDescriptor();
-        mTapPacketReader = makePacketReader(fd, getMTU(mTestIface));
-        DhcpResults dhcpResults = runDhcp(fd, client1);
-        assertEquals(new LinkAddress(clientAddr), dhcpResults.ipAddress);
-
-        try {
-            runDhcp(fd, client2);
-            fail("Only one client should get an IP address");
-        } catch (TimeoutException expected) { }
-
-    }
-
-    private boolean isAdbOverNetwork() {
-        // If adb TCP port opened, this test may running by adb over network.
-        return (SystemProperties.getInt("persist.adb.tcp.port", -1) > -1)
-                || (SystemProperties.getInt("service.adb.tcp.port", -1) > -1);
-    }
-
-    @Test
-    public void testPhysicalEthernet() throws Exception {
-        assumeTrue(mEm.isAvailable());
-        // Do not run this test if adb is over network and ethernet is connected.
-        // It is likely the adb run over ethernet, the adb would break when ethernet is switching
-        // from client mode to server mode. See b/160389275.
-        assumeFalse(isAdbOverNetwork());
-
-        // Get an interface to use.
-        final String iface = mTetheredInterfaceRequester.getInterface();
-
-        // Enable Ethernet tethering and check that it starts.
-        mTetheringEventCallback = enableEthernetTethering(iface);
-
-        // There is nothing more we can do on a physical interface without connecting an actual
-        // client, which is not possible in this test.
-    }
-
-    private static final class MyTetheringEventCallback implements TetheringEventCallback {
-        private final TetheringManager mTm;
-        private final CountDownLatch mTetheringStartedLatch = new CountDownLatch(1);
-        private final CountDownLatch mTetheringStoppedLatch = new CountDownLatch(1);
-        private final CountDownLatch mClientConnectedLatch = new CountDownLatch(1);
-        private final String mIface;
-
-        private volatile boolean mInterfaceWasTethered = false;
-        private volatile boolean mUnregistered = false;
-        private volatile Collection<TetheredClient> mClients = null;
-
-        MyTetheringEventCallback(TetheringManager tm, String iface) {
-            mTm = tm;
-            mIface = iface;
-        }
-
-        public void unregister() {
-            mTm.unregisterTetheringEventCallback(this);
-            mUnregistered = true;
-        }
-
-        @Override
-        public void onTetheredInterfacesChanged(List<String> interfaces) {
-            // Ignore stale callbacks registered by previous test cases.
-            if (mUnregistered) return;
-
-            final boolean wasTethered = mTetheringStartedLatch.getCount() == 0;
-            if (!mInterfaceWasTethered && (mIface == null || interfaces.contains(mIface))) {
-                // This interface is being tethered for the first time.
-                Log.d(TAG, "Tethering started: " + interfaces);
-                mInterfaceWasTethered = true;
-                mTetheringStartedLatch.countDown();
-            } else if (mInterfaceWasTethered && !interfaces.contains(mIface)) {
-                Log.d(TAG, "Tethering stopped: " + interfaces);
-                mTetheringStoppedLatch.countDown();
-            }
-        }
-
-        public void awaitInterfaceTethered() throws Exception {
-            assertTrue("Ethernet not tethered after " + TIMEOUT_MS + "ms",
-                    mTetheringStartedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
-        }
-
-        public void awaitInterfaceUntethered() throws Exception {
-            // Don't block teardown if the interface was never tethered.
-            // This is racy because the interface might become tethered right after this check, but
-            // that can only happen in tearDown if startTethering timed out, which likely means
-            // the test has already failed.
-            if (!mInterfaceWasTethered) return;
-
-            assertTrue(mIface + " not untethered after " + TIMEOUT_MS + "ms",
-                    mTetheringStoppedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
-        }
-
-        @Override
-        public void onError(String ifName, int error) {
-            // Ignore stale callbacks registered by previous test cases.
-            if (mUnregistered) return;
-
-            fail("TetheringEventCallback got error:" + error + " on iface " + ifName);
-        }
-
-        @Override
-        public void onClientsChanged(Collection<TetheredClient> clients) {
-            // Ignore stale callbacks registered by previous test cases.
-            if (mUnregistered) return;
-
-            Log.d(TAG, "Got clients changed: " + clients);
-            mClients = clients;
-            if (clients.size() > 0) {
-                mClientConnectedLatch.countDown();
-            }
-        }
-
-        public Collection<TetheredClient> awaitClientConnected() throws Exception {
-            assertTrue("Did not receive client connected callback after " + TIMEOUT_MS + "ms",
-                    mClientConnectedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
-            return mClients;
-        }
-    }
-
-    private MyTetheringEventCallback enableEthernetTethering(String iface,
-            TetheringRequest request) throws Exception {
-        MyTetheringEventCallback callback = new MyTetheringEventCallback(mTm, iface);
-        mTm.registerTetheringEventCallback(mHandler::post, callback);
-
-        StartTetheringCallback startTetheringCallback = new StartTetheringCallback() {
-            @Override
-            public void onTetheringFailed(int resultCode) {
-                fail("Unexpectedly got onTetheringFailed");
-            }
-        };
-        Log.d(TAG, "Starting Ethernet tethering");
-        mTm.startTethering(request, mHandler::post /* executor */,  startTetheringCallback);
-        callback.awaitInterfaceTethered();
-        return callback;
-    }
-
-    private MyTetheringEventCallback enableEthernetTethering(String iface) throws Exception {
-        return enableEthernetTethering(iface,
-                new TetheringRequest.Builder(TETHERING_ETHERNET)
-                .setShouldShowEntitlementUi(false).build());
-    }
-
-    private int getMTU(TestNetworkInterface iface) throws SocketException {
-        NetworkInterface nif = NetworkInterface.getByName(iface.getInterfaceName());
-        assertNotNull("Can't get NetworkInterface object for " + iface.getInterfaceName(), nif);
-        return nif.getMTU();
-    }
-
-    private TapPacketReader makePacketReader(FileDescriptor fd, int mtu) {
-        final TapPacketReader reader = new TapPacketReader(mHandler, fd, mtu);
-        mHandler.post(() -> reader.start());
-        HandlerUtils.waitForIdle(mHandler, TIMEOUT_MS);
-        return reader;
-    }
-
-    private void checkVirtualEthernet(TestNetworkInterface iface, int mtu) throws Exception {
-        FileDescriptor fd = iface.getFileDescriptor().getFileDescriptor();
-        mTapPacketReader = makePacketReader(fd, mtu);
-        mTetheringEventCallback = enableEthernetTethering(iface.getInterfaceName());
-        checkTetheredClientCallbacks(fd);
-    }
-
-    private DhcpResults runDhcp(FileDescriptor fd, byte[] clientMacAddr) throws Exception {
-        // We have to retransmit DHCP requests because IpServer declares itself to be ready before
-        // its DhcpServer is actually started. TODO: fix this race and remove this loop.
-        DhcpPacket offerPacket = null;
-        for (int i = 0; i < DHCP_DISCOVER_ATTEMPTS; i++) {
-            Log.d(TAG, "Sending DHCP discover");
-            sendDhcpDiscover(fd, clientMacAddr);
-            offerPacket = getNextDhcpPacket();
-            if (offerPacket instanceof DhcpOfferPacket) break;
-        }
-        if (!(offerPacket instanceof DhcpOfferPacket)) {
-            throw new TimeoutException("No DHCPOFFER received on interface within timeout");
-        }
-
-        sendDhcpRequest(fd, offerPacket, clientMacAddr);
-        DhcpPacket ackPacket = getNextDhcpPacket();
-        if (!(ackPacket instanceof DhcpAckPacket)) {
-            throw new TimeoutException("No DHCPACK received on interface within timeout");
-        }
-
-        return ackPacket.toDhcpResults();
-    }
-
-    private void checkTetheredClientCallbacks(FileDescriptor fd) throws Exception {
-        // Create a fake client.
-        byte[] clientMacAddr = new byte[6];
-        new Random().nextBytes(clientMacAddr);
-
-        DhcpResults dhcpResults = runDhcp(fd, clientMacAddr);
-
-        final Collection<TetheredClient> clients = mTetheringEventCallback.awaitClientConnected();
-        assertEquals(1, clients.size());
-        final TetheredClient client = clients.iterator().next();
-
-        // Check the MAC address.
-        assertEquals(MacAddress.fromBytes(clientMacAddr), client.getMacAddress());
-        assertEquals(TETHERING_ETHERNET, client.getTetheringType());
-
-        // Check the hostname.
-        assertEquals(1, client.getAddresses().size());
-        TetheredClient.AddressInfo info = client.getAddresses().get(0);
-        assertEquals(DHCP_HOSTNAME, info.getHostname());
-
-        // Check the address is the one that was handed out in the DHCP ACK.
-        assertLinkAddressMatches(dhcpResults.ipAddress, info.getAddress());
-
-        // Check that the lifetime is correct +/- 10s.
-        final long now = SystemClock.elapsedRealtime();
-        final long actualLeaseDuration = (info.getAddress().getExpirationTime() - now) / 1000;
-        final String msg = String.format("IP address should have lifetime of %d, got %d",
-                dhcpResults.leaseDuration, actualLeaseDuration);
-        assertTrue(msg, Math.abs(dhcpResults.leaseDuration - actualLeaseDuration) < 10);
-    }
-
-    private DhcpPacket getNextDhcpPacket() throws ParseException {
-        byte[] packet;
-        while ((packet = mTapPacketReader.popPacket(PACKET_READ_TIMEOUT_MS)) != null) {
-            try {
-                return DhcpPacket.decodeFullPacket(packet, packet.length, DhcpPacket.ENCAP_L2);
-            } catch (DhcpPacket.ParseException e) {
-                // Not a DHCP packet. Continue.
-            }
-        }
-        return null;
-    }
-
-    private static final class TetheredInterfaceRequester implements TetheredInterfaceCallback {
-        private final CountDownLatch mInterfaceAvailableLatch = new CountDownLatch(1);
-        private final Handler mHandler;
-        private final EthernetManager mEm;
-
-        private TetheredInterfaceRequest mRequest;
-        private final CompletableFuture<String> mFuture = new CompletableFuture<>();
-
-        TetheredInterfaceRequester(Handler handler, EthernetManager em) {
-            mHandler = handler;
-            mEm = em;
-        }
-
-        @Override
-        public void onAvailable(String iface) {
-            Log.d(TAG, "Ethernet interface available: " + iface);
-            mFuture.complete(iface);
-        }
-
-        @Override
-        public void onUnavailable() {
-            mFuture.completeExceptionally(new IllegalStateException("onUnavailable received"));
-        }
-
-        public CompletableFuture<String> requestInterface() {
-            assertNull("BUG: more than one tethered interface request", mRequest);
-            Log.d(TAG, "Requesting tethered interface");
-            mRequest = mEm.requestTetheredInterface(mHandler::post, this);
-            return mFuture;
-        }
-
-        public String getInterface() throws Exception {
-            return requestInterface().get(TIMEOUT_MS, TimeUnit.MILLISECONDS);
-        }
-
-        public void release() {
-            if (mRequest != null) {
-                mFuture.obtrudeException(new IllegalStateException("Request already released"));
-                mRequest.release();
-                mRequest = null;
-            }
-        }
-    }
-
-    private void sendDhcpDiscover(FileDescriptor fd, byte[] macAddress) throws Exception {
-        ByteBuffer packet = DhcpPacket.buildDiscoverPacket(DhcpPacket.ENCAP_L2,
-                new Random().nextInt() /* transactionId */, (short) 0 /* secs */,
-                macAddress,  false /* unicast */, DHCP_REQUESTED_PARAMS,
-                false /* rapid commit */,  DHCP_HOSTNAME);
-        sendPacket(fd, packet);
-    }
-
-    private void sendDhcpRequest(FileDescriptor fd, DhcpPacket offerPacket, byte[] macAddress)
-            throws Exception {
-        DhcpResults results = offerPacket.toDhcpResults();
-        Inet4Address clientIp = (Inet4Address) results.ipAddress.getAddress();
-        Inet4Address serverIdentifier = results.serverAddress;
-        ByteBuffer packet = DhcpPacket.buildRequestPacket(DhcpPacket.ENCAP_L2,
-                0 /* transactionId */, (short) 0 /* secs */, DhcpPacket.INADDR_ANY /* clientIp */,
-                false /* broadcast */, macAddress, clientIp /* requestedIpAddress */,
-                serverIdentifier, DHCP_REQUESTED_PARAMS, DHCP_HOSTNAME);
-        sendPacket(fd, packet);
-    }
-
-    private void sendPacket(FileDescriptor fd, ByteBuffer packet) throws Exception {
-        assertNotNull("Only tests on virtual interfaces can send packets", fd);
-        Os.write(fd, packet);
-    }
-
-    public void assertLinkAddressMatches(LinkAddress l1, LinkAddress l2) {
-        // Check all fields except the deprecation and expiry times.
-        String msg = String.format("LinkAddresses do not match. expected: %s actual: %s", l1, l2);
-        assertTrue(msg, l1.isSameAddressAs(l2));
-        assertEquals("LinkAddress flags do not match", l1.getFlags(), l2.getFlags());
-        assertEquals("LinkAddress scope does not match", l1.getScope(), l2.getScope());
-    }
-
-    private TetheringRequest requestWithStaticIpv4(String local, String client) {
-        LinkAddress localAddr = local == null ? null : new LinkAddress(local);
-        LinkAddress clientAddr = client == null ? null : new LinkAddress(client);
-        return new TetheringRequest.Builder(TETHERING_ETHERNET)
-                .setStaticIpv4Addresses(localAddr, clientAddr)
-                .setShouldShowEntitlementUi(false).build();
-    }
-
-    private void assertInvalidStaticIpv4Request(String iface, String local, String client)
-            throws Exception {
-        try {
-            enableEthernetTethering(iface, requestWithStaticIpv4(local, client));
-            fail("Unexpectedly accepted invalid IPv4 configuration: " + local + ", " + client);
-        } catch (IllegalArgumentException | NullPointerException expected) { }
-    }
-
-    private void assertInterfaceHasIpAddress(String iface, String expected) throws Exception {
-        LinkAddress expectedAddr = new LinkAddress(expected);
-        NetworkInterface nif = NetworkInterface.getByName(iface);
-        for (InterfaceAddress ia : nif.getInterfaceAddresses()) {
-            final LinkAddress addr = new LinkAddress(ia.getAddress(), ia.getNetworkPrefixLength());
-            if (expectedAddr.equals(addr)) {
-                return;
-            }
-        }
-        fail("Expected " + iface + " to have IP address " + expected + ", found "
-                + nif.getInterfaceAddresses());
-    }
-
-    private TestNetworkInterface createTestInterface() throws Exception {
-        TestNetworkManager tnm = mContext.getSystemService(TestNetworkManager.class);
-        TestNetworkInterface iface = tnm.createTapInterface();
-        Log.d(TAG, "Created test interface " + iface.getInterfaceName());
-        assertNotNull(NetworkInterface.getByName(iface.getInterfaceName()));
-        return iface;
-    }
-
-    private void maybeDeleteTestInterface() throws Exception {
-        if (mTestIface != null) {
-            mTestIface.getFileDescriptor().close();
-            Log.d(TAG, "Deleted test interface " + mTestIface.getInterfaceName());
-            mTestIface = null;
-        }
-    }
-}
diff --git a/packages/Tethering/tests/privileged/Android.bp b/packages/Tethering/tests/privileged/Android.bp
deleted file mode 100644
index 9217345..0000000
--- a/packages/Tethering/tests/privileged/Android.bp
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-// Copyright (C) 2020 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-java_defaults {
-    name: "TetheringPrivilegedTestsJniDefaults",
-    jni_libs: [
-        "libdexmakerjvmtiagent",
-        "libstaticjvmtiagent",
-        "libtetherutilsjni",
-    ],
-    jni_uses_sdk_apis: true,
-    visibility: ["//visibility:private"],
-}
-
-android_test {
-    name: "TetheringPrivilegedTests",
-    defaults: [
-        "TetheringPrivilegedTestsJniDefaults",
-    ],
-    srcs: [
-        "src/**/*.java",
-        "src/**/*.kt",
-    ],
-    certificate: "networkstack",
-    platform_apis: true,
-    test_suites: [
-        "device-tests",
-        "mts",
-    ],
-    static_libs: [
-        "androidx.test.rules",
-        "net-tests-utils",
-        "TetheringApiCurrentLib",
-    ],
-    compile_multilib: "both",
-}
diff --git a/packages/Tethering/tests/privileged/AndroidManifest.xml b/packages/Tethering/tests/privileged/AndroidManifest.xml
deleted file mode 100644
index 49eba15d..0000000
--- a/packages/Tethering/tests/privileged/AndroidManifest.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="com.android.networkstack.tethering.tests.privileged"
-          android:sharedUserId="android.uid.networkstack">
-
-    <!-- Note: do not add any privileged or signature permissions that are granted
-         to the network stack and its shared uid apps. Otherwise, the test APK will
-         install, but when the device is rebooted, it will bootloop because this
-         test APK is not in the privileged permission allow list -->
-
-    <application android:debuggable="true">
-        <uses-library android:name="android.test.runner" />
-    </application>
-    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
-        android:targetPackage="com.android.networkstack.tethering.tests.privileged"
-        android:label="Tethering privileged tests">
-    </instrumentation>
-</manifest>
diff --git a/packages/Tethering/tests/privileged/src/android/net/ip/DadProxyTest.java b/packages/Tethering/tests/privileged/src/android/net/ip/DadProxyTest.java
deleted file mode 100644
index 747d3e8..0000000
--- a/packages/Tethering/tests/privileged/src/android/net/ip/DadProxyTest.java
+++ /dev/null
@@ -1,338 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net.ip;
-
-import static android.system.OsConstants.IPPROTO_ICMPV6;
-import static android.system.OsConstants.IPPROTO_TCP;
-
-import static com.android.internal.util.BitUtils.uint16;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import android.app.Instrumentation;
-import android.content.Context;
-import android.net.INetd;
-import android.net.InetAddresses;
-import android.net.MacAddress;
-import android.net.TestNetworkInterface;
-import android.net.TestNetworkManager;
-import android.net.util.InterfaceParams;
-import android.net.util.IpUtils;
-import android.net.util.TetheringUtils;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.IBinder;
-import android.os.Looper;
-import android.system.ErrnoException;
-import android.system.Os;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.testutils.TapPacketReader;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-
-import java.io.FileDescriptor;
-import java.nio.ByteBuffer;
-import java.util.concurrent.atomic.AtomicReference;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class DadProxyTest {
-    private static final int DATA_BUFFER_LEN = 4096;
-    private static final int PACKET_TIMEOUT_MS = 5_000;
-
-    // TODO: make NetworkStackConstants accessible to this test and use the constant from there.
-    private static final int ETHER_SRC_ADDR_OFFSET = 6;
-
-    private DadProxy mProxy;
-    TestNetworkInterface mUpstreamTestIface, mTetheredTestIface;
-    private InterfaceParams mUpstreamParams, mTetheredParams;
-    private HandlerThread mHandlerThread;
-    private Handler mHandler;
-    private TapPacketReader mUpstreamPacketReader, mTetheredPacketReader;
-    private FileDescriptor mUpstreamTapFd, mTetheredTapFd;
-
-    private static INetd sNetd;
-
-    @BeforeClass
-    public static void setupOnce() {
-        System.loadLibrary("tetherutilsjni");
-
-        final Instrumentation inst = InstrumentationRegistry.getInstrumentation();
-        final IBinder netdIBinder =
-                (IBinder) inst.getContext().getSystemService(Context.NETD_SERVICE);
-        sNetd = INetd.Stub.asInterface(netdIBinder);
-    }
-
-    @Before
-    public void setUp() throws Exception {
-        MockitoAnnotations.initMocks(this);
-
-        mHandlerThread = new HandlerThread(getClass().getSimpleName());
-        mHandlerThread.start();
-        mHandler = new Handler(mHandlerThread.getLooper());
-
-        setupTapInterfaces();
-
-        // Looper must be prepared here since AndroidJUnitRunner runs tests on separate threads.
-        if (Looper.myLooper() == null) Looper.prepare();
-
-        DadProxy mProxy = setupProxy();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        if (mHandlerThread != null) {
-            mHandler.post(mUpstreamPacketReader::stop); // Also closes the socket
-            mHandler.post(mTetheredPacketReader::stop); // Also closes the socket
-            mUpstreamTapFd = null;
-            mTetheredTapFd = null;
-            mHandlerThread.quitSafely();
-        }
-
-        if (mTetheredParams != null) {
-            sNetd.networkRemoveInterface(INetd.LOCAL_NET_ID, mTetheredParams.name);
-        }
-        if (mUpstreamParams != null) {
-            sNetd.networkRemoveInterface(INetd.LOCAL_NET_ID, mUpstreamParams.name);
-        }
-
-        if (mUpstreamTestIface != null) {
-            try {
-                Os.close(mUpstreamTestIface.getFileDescriptor().getFileDescriptor());
-            } catch (ErrnoException e) { }
-        }
-
-        if (mTetheredTestIface != null) {
-            try {
-                Os.close(mTetheredTestIface.getFileDescriptor().getFileDescriptor());
-            } catch (ErrnoException e) { }
-        }
-    }
-
-    private TestNetworkInterface setupTapInterface() {
-        final Instrumentation inst = InstrumentationRegistry.getInstrumentation();
-        AtomicReference<TestNetworkInterface> iface = new AtomicReference<>();
-
-        inst.getUiAutomation().adoptShellPermissionIdentity();
-        try {
-            final TestNetworkManager tnm = (TestNetworkManager) inst.getContext().getSystemService(
-                    Context.TEST_NETWORK_SERVICE);
-            iface.set(tnm.createTapInterface());
-        } finally {
-            inst.getUiAutomation().dropShellPermissionIdentity();
-        }
-
-        return iface.get();
-    }
-
-    private void setupTapInterfaces() {
-        // Create upstream test iface.
-        mUpstreamTestIface = setupTapInterface();
-        mUpstreamParams = InterfaceParams.getByName(mUpstreamTestIface.getInterfaceName());
-        assertNotNull(mUpstreamParams);
-        mUpstreamTapFd = mUpstreamTestIface.getFileDescriptor().getFileDescriptor();
-        mUpstreamPacketReader = new TapPacketReader(mHandler, mUpstreamTapFd,
-                                                    DATA_BUFFER_LEN);
-        mHandler.post(mUpstreamPacketReader::start);
-
-        // Create tethered test iface.
-        mTetheredTestIface = setupTapInterface();
-        mTetheredParams = InterfaceParams.getByName(mTetheredTestIface.getInterfaceName());
-        assertNotNull(mTetheredParams);
-        mTetheredTapFd = mTetheredTestIface.getFileDescriptor().getFileDescriptor();
-        mTetheredPacketReader = new TapPacketReader(mHandler, mTetheredTapFd,
-                                                    DATA_BUFFER_LEN);
-        mHandler.post(mTetheredPacketReader::start);
-    }
-
-    private static final int IPV6_HEADER_LEN = 40;
-    private static final int ETH_HEADER_LEN = 14;
-    private static final int ICMPV6_NA_NS_LEN = 24;
-    private static final int LL_TARGET_OPTION_LEN = 8;
-    private static final int ICMPV6_CHECKSUM_OFFSET = 2;
-    private static final int ETHER_TYPE_IPV6 = 0x86dd;
-
-    // TODO: move the IpUtils code to frameworks/lib/net and link it statically.
-    private static int checksumFold(int sum) {
-        while (sum > 0xffff) {
-            sum = (sum >> 16) + (sum & 0xffff);
-        }
-        return sum;
-    }
-
-    // TODO: move the IpUtils code to frameworks/lib/net and link it statically.
-    private static short checksumAdjust(short checksum, short oldWord, short newWord) {
-        checksum = (short) ~checksum;
-        int tempSum = checksumFold(uint16(checksum) + uint16(newWord) + 0xffff - uint16(oldWord));
-        return (short) ~tempSum;
-    }
-
-    // TODO: move the IpUtils code to frameworks/lib/net and link it statically.
-    private static short icmpv6Checksum(ByteBuffer buf, int ipOffset, int transportOffset,
-            int transportLen) {
-        // The ICMPv6 checksum is the same as the TCP checksum, except the pseudo-header uses
-        // 58 (ICMPv6) instead of 6 (TCP). Calculate the TCP checksum, and then do an incremental
-        // checksum adjustment  for the change in the next header byte.
-        short checksum = IpUtils.tcpChecksum(buf, ipOffset, transportOffset, transportLen);
-        return checksumAdjust(checksum, (short) IPPROTO_TCP, (short) IPPROTO_ICMPV6);
-    }
-
-    private static ByteBuffer createDadPacket(int type) {
-        // Refer to buildArpPacket()
-        int icmpLen = ICMPV6_NA_NS_LEN
-                + (type == NeighborPacketForwarder.ICMPV6_NEIGHBOR_ADVERTISEMENT
-                ? LL_TARGET_OPTION_LEN : 0);
-        final ByteBuffer buf = ByteBuffer.allocate(icmpLen + IPV6_HEADER_LEN + ETH_HEADER_LEN);
-
-        // Ethernet header.
-        final MacAddress srcMac = MacAddress.fromString("33:33:ff:66:77:88");
-        buf.put(srcMac.toByteArray());
-        final MacAddress dstMac = MacAddress.fromString("01:02:03:04:05:06");
-        buf.put(dstMac.toByteArray());
-        buf.putShort((short) ETHER_TYPE_IPV6);
-
-        // IPv6 header
-        byte[] version = {(byte) 0x60, 0x00, 0x00, 0x00};
-        buf.put(version);                                           // Version
-        buf.putShort((byte) icmpLen);                               // Length
-        buf.put((byte) IPPROTO_ICMPV6);                             // Next header
-        buf.put((byte) 0xff);                                       // Hop limit
-
-        final byte[] target =
-            InetAddresses.parseNumericAddress("fe80::1122:3344:5566:7788").getAddress();
-        final byte[] src;
-        final byte[] dst;
-        if (type == NeighborPacketForwarder.ICMPV6_NEIGHBOR_SOLICITATION) {
-            src = InetAddresses.parseNumericAddress("::").getAddress();
-            dst = InetAddresses.parseNumericAddress("ff02::1:ff66:7788").getAddress();
-        } else {
-            src = target;
-            dst = TetheringUtils.ALL_NODES;
-        }
-        buf.put(src);
-        buf.put(dst);
-
-        // ICMPv6 Header
-        buf.put((byte) type);                                       // Type
-        buf.put((byte) 0x00);                                       // Code
-        buf.putShort((short) 0);                                    // Checksum
-        buf.putInt(0);                                              // Reserved
-        buf.put(target);
-
-        if (type == NeighborPacketForwarder.ICMPV6_NEIGHBOR_ADVERTISEMENT) {
-            //NA packet has LL target address
-            //ICMPv6 Option
-            buf.put((byte) 0x02);                                   // Type
-            buf.put((byte) 0x01);                                   // Length
-            byte[] ll_target = MacAddress.fromString("01:02:03:04:05:06").toByteArray();
-            buf.put(ll_target);
-        }
-
-        // Populate checksum field
-        final int transportOffset = ETH_HEADER_LEN + IPV6_HEADER_LEN;
-        final short checksum = icmpv6Checksum(buf, ETH_HEADER_LEN, transportOffset, icmpLen);
-        buf.putShort(transportOffset + ICMPV6_CHECKSUM_OFFSET, checksum);
-
-        buf.flip();
-        return buf;
-    }
-
-    private DadProxy setupProxy() throws Exception {
-        DadProxy proxy = new DadProxy(mHandler, mTetheredParams);
-        mHandler.post(() -> proxy.setUpstreamIface(mUpstreamParams));
-
-        // Upstream iface is added to local network to simplify test case.
-        // Otherwise the test needs to create and destroy a network for the upstream iface.
-        sNetd.networkAddInterface(INetd.LOCAL_NET_ID, mUpstreamParams.name);
-        sNetd.networkAddInterface(INetd.LOCAL_NET_ID, mTetheredParams.name);
-
-        return proxy;
-    }
-
-    // TODO: change to assert.
-    private boolean waitForPacket(ByteBuffer packet, TapPacketReader reader) {
-        byte[] p;
-
-        while ((p = reader.popPacket(PACKET_TIMEOUT_MS)) != null) {
-            final ByteBuffer buffer = ByteBuffer.wrap(p);
-
-            if (buffer.compareTo(packet) == 0) return true;
-        }
-        return false;
-    }
-
-    private void updateDstMac(ByteBuffer buf, MacAddress mac) {
-        buf.put(mac.toByteArray());
-        buf.rewind();
-    }
-    private void updateSrcMac(ByteBuffer buf, InterfaceParams ifaceParams) {
-        buf.position(ETHER_SRC_ADDR_OFFSET);
-        buf.put(ifaceParams.macAddr.toByteArray());
-        buf.rewind();
-    }
-
-    @Test
-    public void testNaForwardingFromUpstreamToTether() throws Exception {
-        ByteBuffer na = createDadPacket(NeighborPacketForwarder.ICMPV6_NEIGHBOR_ADVERTISEMENT);
-
-        mUpstreamPacketReader.sendResponse(na);
-        updateDstMac(na, MacAddress.fromString("33:33:00:00:00:01"));
-        updateSrcMac(na, mTetheredParams);
-        assertTrue(waitForPacket(na, mTetheredPacketReader));
-    }
-
-    @Test
-    // TODO: remove test once DAD works in both directions.
-    public void testNaForwardingFromTetherToUpstream() throws Exception {
-        ByteBuffer na = createDadPacket(NeighborPacketForwarder.ICMPV6_NEIGHBOR_ADVERTISEMENT);
-
-        mTetheredPacketReader.sendResponse(na);
-        updateDstMac(na, MacAddress.fromString("33:33:00:00:00:01"));
-        updateSrcMac(na, mTetheredParams);
-        assertFalse(waitForPacket(na, mUpstreamPacketReader));
-    }
-
-    @Test
-    public void testNsForwardingFromTetherToUpstream() throws Exception {
-        ByteBuffer ns = createDadPacket(NeighborPacketForwarder.ICMPV6_NEIGHBOR_SOLICITATION);
-
-        mTetheredPacketReader.sendResponse(ns);
-        updateSrcMac(ns, mUpstreamParams);
-        assertTrue(waitForPacket(ns, mUpstreamPacketReader));
-    }
-
-    @Test
-    // TODO: remove test once DAD works in both directions.
-    public void testNsForwardingFromUpstreamToTether() throws Exception {
-        ByteBuffer ns = createDadPacket(NeighborPacketForwarder.ICMPV6_NEIGHBOR_SOLICITATION);
-
-        mUpstreamPacketReader.sendResponse(ns);
-        updateSrcMac(ns, mUpstreamParams);
-        assertFalse(waitForPacket(ns, mTetheredPacketReader));
-    }
-}
diff --git a/packages/Tethering/tests/unit/Android.bp b/packages/Tethering/tests/unit/Android.bp
deleted file mode 100644
index 45c7b65..0000000
--- a/packages/Tethering/tests/unit/Android.bp
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// Copyright (C) 2019 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-// Tests in this folder are included both in unit tests and CTS.
-java_library {
-    name: "TetheringCommonTests",
-    srcs: [
-        "common/**/*.java",
-        "common/**/*.kt"
-    ],
-    static_libs: [
-        "androidx.test.rules",
-        "net-tests-utils",
-    ],
-    // TODO(b/147200698) change sdk_version to module-current and remove framework-minus-apex
-    sdk_version: "core_platform",
-    libs: [
-        "framework-minus-apex",
-        "framework-tethering.impl",
-    ],
-    visibility: ["//cts/tests/tests/tethering"],
-}
-
-java_defaults {
-    name: "TetheringTestsDefaults",
-    srcs: [
-        "src/**/*.java",
-        "src/**/*.kt",
-    ],
-    static_libs: [
-        "TetheringApiCurrentLib",
-        "TetheringCommonTests",
-        "androidx.test.rules",
-        "frameworks-base-testutils",
-        "mockito-target-extended-minus-junit4",
-        "net-tests-utils",
-        "testables",
-    ],
-    // TODO(b/147200698) change sdk_version to module-current and
-    // remove framework-minus-apex, ext, and framework-res
-    sdk_version: "core_platform",
-    libs: [
-        "android.test.runner",
-        "android.test.base",
-        "android.test.mock",
-        "ext",
-        "framework-minus-apex",
-        "framework-res",
-        "framework-tethering.impl",
-        "framework-wifi.stubs.module_lib",
-    ],
-    jni_libs: [
-        // For mockito extended
-        "libdexmakerjvmtiagent",
-        "libstaticjvmtiagent",
-    ],
-    jarjar_rules: "jarjar-rules.txt",
-}
-
-// Library containing the unit tests. This is used by the coverage test target to pull in the
-// unit test code. It is not currently used by the tests themselves because all the build
-// configuration needed by the tests is in the TetheringTestsDefaults rule.
-android_library {
-    name: "TetheringTestsLib",
-    defaults: ["TetheringTestsDefaults"],
-    visibility: [
-        "//frameworks/base/packages/Tethering/tests/integration",
-    ]
-}
-
-android_test {
-    name: "TetheringTests",
-    platform_apis: true,
-    test_suites: [
-        "device-tests",
-        "mts",
-    ],
-    defaults: ["TetheringTestsDefaults"],
-    compile_multilib: "both",
-}
diff --git a/packages/Tethering/tests/unit/AndroidManifest.xml b/packages/Tethering/tests/unit/AndroidManifest.xml
deleted file mode 100644
index 355342f..0000000
--- a/packages/Tethering/tests/unit/AndroidManifest.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2019 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="com.android.networkstack.tethering.tests.unit">
-
-    <application android:debuggable="true">
-        <uses-library android:name="android.test.runner" />
-        <service
-            android:name="com.android.networkstack.tethering.MockTetheringService"
-            android:permission="android.permission.TETHER_PRIVILEGED"
-            android:exported="true">
-            <intent-filter>
-                <action android:name="com.android.networkstack.tethering.TetheringService"/>
-            </intent-filter>
-        </service>
-    </application>
-
-    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
-        android:targetPackage="com.android.networkstack.tethering.tests.unit"
-        android:label="Tethering service tests">
-    </instrumentation>
-</manifest>
diff --git a/packages/Tethering/tests/unit/common/android/net/TetheredClientTest.kt b/packages/Tethering/tests/unit/common/android/net/TetheredClientTest.kt
deleted file mode 100644
index 55c59dd..0000000
--- a/packages/Tethering/tests/unit/common/android/net/TetheredClientTest.kt
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net
-
-import android.net.InetAddresses.parseNumericAddress
-import android.net.TetheredClient.AddressInfo
-import android.net.TetheringManager.TETHERING_BLUETOOTH
-import android.net.TetheringManager.TETHERING_USB
-import android.system.OsConstants.RT_SCOPE_UNIVERSE
-import androidx.test.filters.SmallTest
-import androidx.test.runner.AndroidJUnit4
-import com.android.testutils.assertParcelSane
-import org.junit.Test
-import org.junit.runner.RunWith
-import kotlin.test.assertEquals
-import kotlin.test.assertNotEquals
-
-private val TEST_MACADDR = MacAddress.fromBytes(byteArrayOf(12, 23, 34, 45, 56, 67))
-private val TEST_OTHER_MACADDR = MacAddress.fromBytes(byteArrayOf(23, 34, 45, 56, 67, 78))
-private val TEST_ADDR1 = makeLinkAddress("192.168.113.3", prefixLength = 24, expTime = 123L)
-private val TEST_ADDR2 = makeLinkAddress("fe80::1:2:3", prefixLength = 64, expTime = 456L)
-private val TEST_HOSTNAME = "test_hostname"
-private val TEST_OTHER_HOSTNAME = "test_other_hostname"
-private val TEST_ADDRINFO1 = AddressInfo(TEST_ADDR1, TEST_HOSTNAME)
-private val TEST_ADDRINFO2 = AddressInfo(TEST_ADDR2, null)
-
-private fun makeLinkAddress(addr: String, prefixLength: Int, expTime: Long) = LinkAddress(
-        parseNumericAddress(addr),
-        prefixLength,
-        0 /* flags */,
-        RT_SCOPE_UNIVERSE,
-        expTime /* deprecationTime */,
-        expTime /* expirationTime */)
-
-@RunWith(AndroidJUnit4::class)
-@SmallTest
-class TetheredClientTest {
-    @Test
-    fun testParceling() {
-        assertParcelSane(TEST_ADDRINFO1, fieldCount = 2)
-        assertParcelSane(makeTestClient(), fieldCount = 3)
-    }
-
-    @Test
-    fun testEquals() {
-        assertEquals(makeTestClient(), makeTestClient())
-
-        // Different mac address
-        assertNotEquals(makeTestClient(), TetheredClient(
-                TEST_OTHER_MACADDR,
-                listOf(TEST_ADDRINFO1, TEST_ADDRINFO2),
-                TETHERING_BLUETOOTH))
-
-        // Different hostname
-        assertNotEquals(makeTestClient(), TetheredClient(
-                TEST_MACADDR,
-                listOf(AddressInfo(TEST_ADDR1, TEST_OTHER_HOSTNAME), TEST_ADDRINFO2),
-                TETHERING_BLUETOOTH))
-
-        // Null hostname
-        assertNotEquals(makeTestClient(), TetheredClient(
-                TEST_MACADDR,
-                listOf(AddressInfo(TEST_ADDR1, null), TEST_ADDRINFO2),
-                TETHERING_BLUETOOTH))
-
-        // Missing address
-        assertNotEquals(makeTestClient(), TetheredClient(
-                TEST_MACADDR,
-                listOf(TEST_ADDRINFO2),
-                TETHERING_BLUETOOTH))
-
-        // Different type
-        assertNotEquals(makeTestClient(), TetheredClient(
-                TEST_MACADDR,
-                listOf(TEST_ADDRINFO1, TEST_ADDRINFO2),
-                TETHERING_USB))
-    }
-
-    @Test
-    fun testAddAddresses() {
-        val client1 = TetheredClient(TEST_MACADDR, listOf(TEST_ADDRINFO1), TETHERING_USB)
-        val client2 = TetheredClient(TEST_OTHER_MACADDR, listOf(TEST_ADDRINFO2), TETHERING_USB)
-        assertEquals(TetheredClient(
-                TEST_MACADDR,
-                listOf(TEST_ADDRINFO1, TEST_ADDRINFO2),
-                TETHERING_USB), client1.addAddresses(client2))
-    }
-
-    @Test
-    fun testGetters() {
-        assertEquals(TEST_MACADDR, makeTestClient().macAddress)
-        assertEquals(listOf(TEST_ADDRINFO1, TEST_ADDRINFO2), makeTestClient().addresses)
-        assertEquals(TETHERING_BLUETOOTH, makeTestClient().tetheringType)
-    }
-
-    @Test
-    fun testAddressInfo_Getters() {
-        assertEquals(TEST_ADDR1, TEST_ADDRINFO1.address)
-        assertEquals(TEST_ADDR2, TEST_ADDRINFO2.address)
-        assertEquals(TEST_HOSTNAME, TEST_ADDRINFO1.hostname)
-        assertEquals(null, TEST_ADDRINFO2.hostname)
-    }
-
-    private fun makeTestClient() = TetheredClient(
-            TEST_MACADDR,
-            listOf(TEST_ADDRINFO1, TEST_ADDRINFO2),
-            TETHERING_BLUETOOTH)
-}
\ No newline at end of file
diff --git a/packages/Tethering/tests/unit/jarjar-rules.txt b/packages/Tethering/tests/unit/jarjar-rules.txt
deleted file mode 100644
index ec2d2b0..0000000
--- a/packages/Tethering/tests/unit/jarjar-rules.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-# Don't jar-jar the entire package because this test use some
-# internal classes (like ArrayUtils in com.android.internal.util)
-rule com.android.internal.util.BitUtils* com.android.networkstack.tethering.util.BitUtils@1
-rule com.android.internal.util.IndentingPrintWriter.java* com.android.networkstack.tethering.util.IndentingPrintWriter.java@1
-rule com.android.internal.util.IState.java* com.android.networkstack.tethering.util.IState.java@1
-rule com.android.internal.util.MessageUtils* com.android.networkstack.tethering.util.MessageUtils@1
-rule com.android.internal.util.State* com.android.networkstack.tethering.util.State@1
-rule com.android.internal.util.StateMachine* com.android.networkstack.tethering.util.StateMachine@1
-rule com.android.internal.util.TrafficStatsConstants* com.android.networkstack.tethering.util.TrafficStatsConstants@1
-
-rule android.util.LocalLog* com.android.networkstack.tethering.util.LocalLog@1
diff --git a/packages/Tethering/tests/unit/src/android/net/dhcp/DhcpServingParamsParcelExtTest.java b/packages/Tethering/tests/unit/src/android/net/dhcp/DhcpServingParamsParcelExtTest.java
deleted file mode 100644
index a8857b2..0000000
--- a/packages/Tethering/tests/unit/src/android/net/dhcp/DhcpServingParamsParcelExtTest.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net.dhcp;
-
-import static android.net.InetAddresses.parseNumericAddress;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import android.net.LinkAddress;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.net.Inet4Address;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.stream.Collectors;
-import java.util.stream.IntStream;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class DhcpServingParamsParcelExtTest {
-    private static final Inet4Address TEST_ADDRESS = inet4Addr("192.168.0.123");
-    private static final Inet4Address TEST_CLIENT_ADDRESS = inet4Addr("192.168.0.42");
-    private static final int TEST_ADDRESS_PARCELED = 0xc0a8007b;
-    private static final int TEST_CLIENT_ADDRESS_PARCELED = 0xc0a8002a;
-    private static final int TEST_PREFIX_LENGTH = 17;
-    private static final int TEST_LEASE_TIME_SECS = 120;
-    private static final int TEST_MTU = 1000;
-    private static final Set<Inet4Address> TEST_ADDRESS_SET =
-            new HashSet<Inet4Address>(Arrays.asList(
-            new Inet4Address[] {inet4Addr("192.168.1.123"), inet4Addr("192.168.1.124")}));
-    private static final Set<Integer> TEST_ADDRESS_SET_PARCELED =
-            new HashSet<Integer>(Arrays.asList(new Integer[] {0xc0a8017b, 0xc0a8017c}));
-
-    private DhcpServingParamsParcelExt mParcel;
-
-    @Before
-    public void setUp() {
-        mParcel = new DhcpServingParamsParcelExt();
-    }
-
-    @Test
-    public void testSetServerAddr() {
-        mParcel.setServerAddr(new LinkAddress(TEST_ADDRESS, TEST_PREFIX_LENGTH));
-
-        assertEquals(TEST_ADDRESS_PARCELED, mParcel.serverAddr);
-        assertEquals(TEST_PREFIX_LENGTH, mParcel.serverAddrPrefixLength);
-    }
-
-    @Test
-    public void testSetDefaultRouters() {
-        mParcel.setDefaultRouters(TEST_ADDRESS_SET);
-        assertEquals(TEST_ADDRESS_SET_PARCELED, asSet(mParcel.defaultRouters));
-    }
-
-    @Test
-    public void testSetDnsServers() {
-        mParcel.setDnsServers(TEST_ADDRESS_SET);
-        assertEquals(TEST_ADDRESS_SET_PARCELED, asSet(mParcel.dnsServers));
-    }
-
-    @Test
-    public void testSetExcludedAddrs() {
-        mParcel.setExcludedAddrs(TEST_ADDRESS_SET);
-        assertEquals(TEST_ADDRESS_SET_PARCELED, asSet(mParcel.excludedAddrs));
-    }
-
-    @Test
-    public void testSetDhcpLeaseTimeSecs() {
-        mParcel.setDhcpLeaseTimeSecs(TEST_LEASE_TIME_SECS);
-        assertEquals(TEST_LEASE_TIME_SECS, mParcel.dhcpLeaseTimeSecs);
-    }
-
-    @Test
-    public void testSetLinkMtu() {
-        mParcel.setLinkMtu(TEST_MTU);
-        assertEquals(TEST_MTU, mParcel.linkMtu);
-    }
-
-    @Test
-    public void testSetMetered() {
-        mParcel.setMetered(true);
-        assertTrue(mParcel.metered);
-        mParcel.setMetered(false);
-        assertFalse(mParcel.metered);
-    }
-
-    @Test
-    public void testSetClientAddr() {
-        mParcel.setSingleClientAddr(TEST_CLIENT_ADDRESS);
-        assertEquals(TEST_CLIENT_ADDRESS_PARCELED, mParcel.singleClientAddr);
-    }
-
-    private static Inet4Address inet4Addr(String addr) {
-        return (Inet4Address) parseNumericAddress(addr);
-    }
-
-    private static Set<Integer> asSet(int[] ints) {
-        return IntStream.of(ints).boxed().collect(Collectors.toSet());
-    }
-}
diff --git a/packages/Tethering/tests/unit/src/android/net/ip/IpServerTest.java b/packages/Tethering/tests/unit/src/android/net/ip/IpServerTest.java
deleted file mode 100644
index 1a976ad..0000000
--- a/packages/Tethering/tests/unit/src/android/net/ip/IpServerTest.java
+++ /dev/null
@@ -1,1197 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net.ip;
-
-import static android.net.INetd.IF_STATE_UP;
-import static android.net.RouteInfo.RTN_UNICAST;
-import static android.net.TetheringManager.TETHERING_BLUETOOTH;
-import static android.net.TetheringManager.TETHERING_NCM;
-import static android.net.TetheringManager.TETHERING_USB;
-import static android.net.TetheringManager.TETHERING_WIFI;
-import static android.net.TetheringManager.TETHERING_WIFI_P2P;
-import static android.net.TetheringManager.TETHER_ERROR_ENABLE_FORWARDING_ERROR;
-import static android.net.TetheringManager.TETHER_ERROR_NO_ERROR;
-import static android.net.TetheringManager.TETHER_ERROR_TETHER_IFACE_ERROR;
-import static android.net.dhcp.IDhcpServer.STATUS_SUCCESS;
-import static android.net.ip.IpServer.STATE_AVAILABLE;
-import static android.net.ip.IpServer.STATE_LOCAL_ONLY;
-import static android.net.ip.IpServer.STATE_TETHERED;
-import static android.net.ip.IpServer.STATE_UNAVAILABLE;
-import static android.net.netlink.NetlinkConstants.RTM_DELNEIGH;
-import static android.net.netlink.NetlinkConstants.RTM_NEWNEIGH;
-import static android.net.netlink.StructNdMsg.NUD_FAILED;
-import static android.net.netlink.StructNdMsg.NUD_REACHABLE;
-import static android.net.netlink.StructNdMsg.NUD_STALE;
-
-import static com.android.net.module.util.Inet4AddressUtils.intToInet4AddressHTH;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.ArgumentMatchers.argThat;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.inOrder;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.reset;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.timeout;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.when;
-
-import android.app.usage.NetworkStatsManager;
-import android.net.INetd;
-import android.net.InetAddresses;
-import android.net.InterfaceConfigurationParcel;
-import android.net.IpPrefix;
-import android.net.LinkAddress;
-import android.net.LinkProperties;
-import android.net.MacAddress;
-import android.net.RouteInfo;
-import android.net.TetherOffloadRuleParcel;
-import android.net.TetherStatsParcel;
-import android.net.dhcp.DhcpServerCallbacks;
-import android.net.dhcp.DhcpServingParamsParcel;
-import android.net.dhcp.IDhcpEventCallbacks;
-import android.net.dhcp.IDhcpServer;
-import android.net.dhcp.IDhcpServerCallbacks;
-import android.net.ip.IpNeighborMonitor.NeighborEvent;
-import android.net.ip.IpNeighborMonitor.NeighborEventConsumer;
-import android.net.ip.RouterAdvertisementDaemon.RaParams;
-import android.net.util.InterfaceParams;
-import android.net.util.InterfaceSet;
-import android.net.util.PrefixUtils;
-import android.net.util.SharedLog;
-import android.os.Build;
-import android.os.Handler;
-import android.os.RemoteException;
-import android.os.test.TestLooper;
-import android.text.TextUtils;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.networkstack.tethering.BpfCoordinator;
-import com.android.networkstack.tethering.BpfCoordinator.Ipv6ForwardingRule;
-import com.android.networkstack.tethering.PrivateAddressCoordinator;
-import com.android.networkstack.tethering.TetheringConfiguration;
-import com.android.testutils.DevSdkIgnoreRule;
-import com.android.testutils.DevSdkIgnoreRule.IgnoreAfter;
-import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.ArgumentMatcher;
-import org.mockito.Captor;
-import org.mockito.InOrder;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-import java.net.Inet4Address;
-import java.net.Inet6Address;
-import java.net.InetAddress;
-import java.util.Arrays;
-import java.util.List;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class IpServerTest {
-    @Rule
-    public final DevSdkIgnoreRule mIgnoreRule = new DevSdkIgnoreRule();
-
-    private static final String IFACE_NAME = "testnet1";
-    private static final String UPSTREAM_IFACE = "upstream0";
-    private static final String UPSTREAM_IFACE2 = "upstream1";
-    private static final int UPSTREAM_IFINDEX = 101;
-    private static final int UPSTREAM_IFINDEX2 = 102;
-    private static final String BLUETOOTH_IFACE_ADDR = "192.168.44.1";
-    private static final int BLUETOOTH_DHCP_PREFIX_LENGTH = 24;
-    private static final int DHCP_LEASE_TIME_SECS = 3600;
-    private static final boolean DEFAULT_USING_BPF_OFFLOAD = true;
-
-    private static final InterfaceParams TEST_IFACE_PARAMS = new InterfaceParams(
-            IFACE_NAME, 42 /* index */, MacAddress.ALL_ZEROS_ADDRESS, 1500 /* defaultMtu */);
-    private static final InterfaceParams UPSTREAM_IFACE_PARAMS = new InterfaceParams(
-            UPSTREAM_IFACE, UPSTREAM_IFINDEX, MacAddress.ALL_ZEROS_ADDRESS, 1500 /* defaultMtu */);
-    private static final InterfaceParams UPSTREAM_IFACE_PARAMS2 = new InterfaceParams(
-            UPSTREAM_IFACE2, UPSTREAM_IFINDEX2, MacAddress.ALL_ZEROS_ADDRESS,
-            1500 /* defaultMtu */);
-
-    private static final int MAKE_DHCPSERVER_TIMEOUT_MS = 1000;
-
-    private final LinkAddress mTestAddress = new LinkAddress("192.168.42.5/24");
-    private final IpPrefix mBluetoothPrefix = new IpPrefix("192.168.44.0/24");
-
-    @Mock private INetd mNetd;
-    @Mock private IpServer.Callback mCallback;
-    @Mock private SharedLog mSharedLog;
-    @Mock private IDhcpServer mDhcpServer;
-    @Mock private DadProxy mDadProxy;
-    @Mock private RouterAdvertisementDaemon mRaDaemon;
-    @Mock private IpNeighborMonitor mIpNeighborMonitor;
-    @Mock private IpServer.Dependencies mDependencies;
-    @Mock private PrivateAddressCoordinator mAddressCoordinator;
-    @Mock private NetworkStatsManager mStatsManager;
-    @Mock private TetheringConfiguration mTetherConfig;
-
-    @Captor private ArgumentCaptor<DhcpServingParamsParcel> mDhcpParamsCaptor;
-
-    private final TestLooper mLooper = new TestLooper();
-    private final ArgumentCaptor<LinkProperties> mLinkPropertiesCaptor =
-            ArgumentCaptor.forClass(LinkProperties.class);
-    private IpServer mIpServer;
-    private InterfaceConfigurationParcel mInterfaceConfiguration;
-    private NeighborEventConsumer mNeighborEventConsumer;
-    private BpfCoordinator mBpfCoordinator;
-
-    private void initStateMachine(int interfaceType) throws Exception {
-        initStateMachine(interfaceType, false /* usingLegacyDhcp */, DEFAULT_USING_BPF_OFFLOAD);
-    }
-
-    private void initStateMachine(int interfaceType, boolean usingLegacyDhcp,
-            boolean usingBpfOffload) throws Exception {
-        when(mDependencies.getDadProxy(any(), any())).thenReturn(mDadProxy);
-        when(mDependencies.getRouterAdvertisementDaemon(any())).thenReturn(mRaDaemon);
-        when(mDependencies.getInterfaceParams(IFACE_NAME)).thenReturn(TEST_IFACE_PARAMS);
-        when(mDependencies.getInterfaceParams(UPSTREAM_IFACE)).thenReturn(UPSTREAM_IFACE_PARAMS);
-        when(mDependencies.getInterfaceParams(UPSTREAM_IFACE2)).thenReturn(UPSTREAM_IFACE_PARAMS2);
-
-        when(mDependencies.getIfindex(eq(UPSTREAM_IFACE))).thenReturn(UPSTREAM_IFINDEX);
-        when(mDependencies.getIfindex(eq(UPSTREAM_IFACE2))).thenReturn(UPSTREAM_IFINDEX2);
-
-        mInterfaceConfiguration = new InterfaceConfigurationParcel();
-        mInterfaceConfiguration.flags = new String[0];
-        if (interfaceType == TETHERING_BLUETOOTH) {
-            mInterfaceConfiguration.ipv4Addr = BLUETOOTH_IFACE_ADDR;
-            mInterfaceConfiguration.prefixLength = BLUETOOTH_DHCP_PREFIX_LENGTH;
-        }
-
-        ArgumentCaptor<NeighborEventConsumer> neighborCaptor =
-                ArgumentCaptor.forClass(NeighborEventConsumer.class);
-        doReturn(mIpNeighborMonitor).when(mDependencies).getIpNeighborMonitor(any(), any(),
-                neighborCaptor.capture());
-
-        mIpServer = new IpServer(
-                IFACE_NAME, mLooper.getLooper(), interfaceType, mSharedLog, mNetd, mBpfCoordinator,
-                mCallback, usingLegacyDhcp, usingBpfOffload, mAddressCoordinator, mDependencies);
-        mIpServer.start();
-        mNeighborEventConsumer = neighborCaptor.getValue();
-
-        // Starting the state machine always puts us in a consistent state and notifies
-        // the rest of the world that we've changed from an unknown to available state.
-        mLooper.dispatchAll();
-        reset(mNetd, mCallback);
-
-        when(mRaDaemon.start()).thenReturn(true);
-    }
-
-    private void initTetheredStateMachine(int interfaceType, String upstreamIface)
-            throws Exception {
-        initTetheredStateMachine(interfaceType, upstreamIface, false,
-                DEFAULT_USING_BPF_OFFLOAD);
-    }
-
-    private void initTetheredStateMachine(int interfaceType, String upstreamIface,
-            boolean usingLegacyDhcp, boolean usingBpfOffload) throws Exception {
-        initStateMachine(interfaceType, usingLegacyDhcp, usingBpfOffload);
-        dispatchCommand(IpServer.CMD_TETHER_REQUESTED, STATE_TETHERED);
-        if (upstreamIface != null) {
-            LinkProperties lp = new LinkProperties();
-            lp.setInterfaceName(upstreamIface);
-            dispatchTetherConnectionChanged(upstreamIface, lp, 0);
-        }
-        reset(mNetd, mCallback, mAddressCoordinator);
-        when(mAddressCoordinator.requestDownstreamAddress(any())).thenReturn(mTestAddress);
-    }
-
-    private void setUpDhcpServer() throws Exception {
-        doAnswer(inv -> {
-            final IDhcpServerCallbacks cb = inv.getArgument(2);
-            new Thread(() -> {
-                try {
-                    cb.onDhcpServerCreated(STATUS_SUCCESS, mDhcpServer);
-                } catch (RemoteException e) {
-                    fail(e.getMessage());
-                }
-            }).run();
-            return null;
-        }).when(mDependencies).makeDhcpServer(any(), mDhcpParamsCaptor.capture(), any());
-    }
-
-    @Before public void setUp() throws Exception {
-        MockitoAnnotations.initMocks(this);
-        when(mSharedLog.forSubComponent(anyString())).thenReturn(mSharedLog);
-        when(mAddressCoordinator.requestDownstreamAddress(any())).thenReturn(mTestAddress);
-        when(mTetherConfig.isBpfOffloadEnabled()).thenReturn(true /* default value */);
-
-        mBpfCoordinator = spy(new BpfCoordinator(
-                new BpfCoordinator.Dependencies() {
-                    @NonNull
-                    public Handler getHandler() {
-                        return new Handler(mLooper.getLooper());
-                    }
-
-                    @NonNull
-                    public INetd getNetd() {
-                        return mNetd;
-                    }
-
-                    @NonNull
-                    public NetworkStatsManager getNetworkStatsManager() {
-                        return mStatsManager;
-                    }
-
-                    @NonNull
-                    public SharedLog getSharedLog() {
-                        return mSharedLog;
-                    }
-
-                    @Nullable
-                    public TetheringConfiguration getTetherConfig() {
-                        return mTetherConfig;
-                    }
-                }));
-
-        setUpDhcpServer();
-    }
-
-    @Test
-    public void startsOutAvailable() {
-        when(mDependencies.getIpNeighborMonitor(any(), any(), any()))
-                .thenReturn(mIpNeighborMonitor);
-        mIpServer = new IpServer(IFACE_NAME, mLooper.getLooper(), TETHERING_BLUETOOTH, mSharedLog,
-                mNetd, mBpfCoordinator, mCallback, false /* usingLegacyDhcp */,
-                DEFAULT_USING_BPF_OFFLOAD, mAddressCoordinator, mDependencies);
-        mIpServer.start();
-        mLooper.dispatchAll();
-        verify(mCallback).updateInterfaceState(
-                mIpServer, STATE_AVAILABLE, TETHER_ERROR_NO_ERROR);
-        verify(mCallback).updateLinkProperties(eq(mIpServer), any(LinkProperties.class));
-        verifyNoMoreInteractions(mCallback, mNetd);
-    }
-
-    @Test
-    public void shouldDoNothingUntilRequested() throws Exception {
-        initStateMachine(TETHERING_BLUETOOTH);
-        final int [] noOp_commands = {
-            IpServer.CMD_TETHER_UNREQUESTED,
-            IpServer.CMD_IP_FORWARDING_ENABLE_ERROR,
-            IpServer.CMD_IP_FORWARDING_DISABLE_ERROR,
-            IpServer.CMD_START_TETHERING_ERROR,
-            IpServer.CMD_STOP_TETHERING_ERROR,
-            IpServer.CMD_SET_DNS_FORWARDERS_ERROR,
-            IpServer.CMD_TETHER_CONNECTION_CHANGED
-        };
-        for (int command : noOp_commands) {
-            // None of these commands should trigger us to request action from
-            // the rest of the system.
-            dispatchCommand(command);
-            verifyNoMoreInteractions(mNetd, mCallback);
-        }
-    }
-
-    @Test
-    public void handlesImmediateInterfaceDown() throws Exception {
-        initStateMachine(TETHERING_BLUETOOTH);
-
-        dispatchCommand(IpServer.CMD_INTERFACE_DOWN);
-        verify(mCallback).updateInterfaceState(
-                mIpServer, STATE_UNAVAILABLE, TETHER_ERROR_NO_ERROR);
-        verify(mCallback).updateLinkProperties(eq(mIpServer), any(LinkProperties.class));
-        verifyNoMoreInteractions(mNetd, mCallback);
-    }
-
-    @Test
-    public void canBeTethered() throws Exception {
-        initStateMachine(TETHERING_BLUETOOTH);
-
-        dispatchCommand(IpServer.CMD_TETHER_REQUESTED, STATE_TETHERED);
-        InOrder inOrder = inOrder(mCallback, mNetd);
-        inOrder.verify(mNetd).tetherInterfaceAdd(IFACE_NAME);
-        inOrder.verify(mNetd).networkAddInterface(INetd.LOCAL_NET_ID, IFACE_NAME);
-        // One for ipv4 route, one for ipv6 link local route.
-        inOrder.verify(mNetd, times(2)).networkAddRoute(eq(INetd.LOCAL_NET_ID), eq(IFACE_NAME),
-                any(), any());
-        inOrder.verify(mCallback).updateInterfaceState(
-                mIpServer, STATE_TETHERED, TETHER_ERROR_NO_ERROR);
-        inOrder.verify(mCallback).updateLinkProperties(
-                eq(mIpServer), any(LinkProperties.class));
-        verifyNoMoreInteractions(mNetd, mCallback);
-    }
-
-    @Test
-    public void canUnrequestTethering() throws Exception {
-        initTetheredStateMachine(TETHERING_BLUETOOTH, null);
-
-        dispatchCommand(IpServer.CMD_TETHER_UNREQUESTED);
-        InOrder inOrder = inOrder(mCallback, mNetd, mAddressCoordinator);
-        inOrder.verify(mNetd).tetherApplyDnsInterfaces();
-        inOrder.verify(mNetd).tetherInterfaceRemove(IFACE_NAME);
-        inOrder.verify(mNetd).networkRemoveInterface(INetd.LOCAL_NET_ID, IFACE_NAME);
-        inOrder.verify(mNetd).interfaceSetCfg(argThat(cfg -> IFACE_NAME.equals(cfg.ifName)));
-        inOrder.verify(mAddressCoordinator).releaseDownstream(any());
-        inOrder.verify(mCallback).updateInterfaceState(
-                mIpServer, STATE_AVAILABLE, TETHER_ERROR_NO_ERROR);
-        inOrder.verify(mCallback).updateLinkProperties(
-                eq(mIpServer), any(LinkProperties.class));
-        verifyNoMoreInteractions(mNetd, mCallback, mAddressCoordinator);
-    }
-
-    @Test
-    public void canBeTetheredAsUsb() throws Exception {
-        initStateMachine(TETHERING_USB);
-
-        dispatchCommand(IpServer.CMD_TETHER_REQUESTED, STATE_TETHERED);
-        InOrder inOrder = inOrder(mCallback, mNetd, mAddressCoordinator);
-        inOrder.verify(mAddressCoordinator).requestDownstreamAddress(any());
-        inOrder.verify(mNetd).interfaceSetCfg(argThat(cfg ->
-                  IFACE_NAME.equals(cfg.ifName) && assertContainsFlag(cfg.flags, IF_STATE_UP)));
-        inOrder.verify(mNetd).tetherInterfaceAdd(IFACE_NAME);
-        inOrder.verify(mNetd).networkAddInterface(INetd.LOCAL_NET_ID, IFACE_NAME);
-        inOrder.verify(mNetd, times(2)).networkAddRoute(eq(INetd.LOCAL_NET_ID), eq(IFACE_NAME),
-                any(), any());
-        inOrder.verify(mCallback).updateInterfaceState(
-                mIpServer, STATE_TETHERED, TETHER_ERROR_NO_ERROR);
-        inOrder.verify(mCallback).updateLinkProperties(
-                eq(mIpServer), mLinkPropertiesCaptor.capture());
-        assertIPv4AddressAndDirectlyConnectedRoute(mLinkPropertiesCaptor.getValue());
-        verifyNoMoreInteractions(mNetd, mCallback, mAddressCoordinator);
-    }
-
-    @Test
-    public void canBeTetheredAsWifiP2p() throws Exception {
-        initStateMachine(TETHERING_WIFI_P2P);
-
-        dispatchCommand(IpServer.CMD_TETHER_REQUESTED, STATE_LOCAL_ONLY);
-        InOrder inOrder = inOrder(mCallback, mNetd, mAddressCoordinator);
-        inOrder.verify(mAddressCoordinator).requestDownstreamAddress(any());
-        inOrder.verify(mNetd).interfaceSetCfg(argThat(cfg ->
-                  IFACE_NAME.equals(cfg.ifName) && assertNotContainsFlag(cfg.flags, IF_STATE_UP)));
-        inOrder.verify(mNetd).tetherInterfaceAdd(IFACE_NAME);
-        inOrder.verify(mNetd).networkAddInterface(INetd.LOCAL_NET_ID, IFACE_NAME);
-        inOrder.verify(mNetd, times(2)).networkAddRoute(eq(INetd.LOCAL_NET_ID), eq(IFACE_NAME),
-                any(), any());
-        inOrder.verify(mCallback).updateInterfaceState(
-                mIpServer, STATE_LOCAL_ONLY, TETHER_ERROR_NO_ERROR);
-        inOrder.verify(mCallback).updateLinkProperties(
-                eq(mIpServer), mLinkPropertiesCaptor.capture());
-        assertIPv4AddressAndDirectlyConnectedRoute(mLinkPropertiesCaptor.getValue());
-        verifyNoMoreInteractions(mNetd, mCallback, mAddressCoordinator);
-    }
-
-    @Test
-    public void handlesFirstUpstreamChange() throws Exception {
-        initTetheredStateMachine(TETHERING_BLUETOOTH, null);
-
-        // Telling the state machine about its upstream interface triggers
-        // a little more configuration.
-        dispatchTetherConnectionChanged(UPSTREAM_IFACE);
-        InOrder inOrder = inOrder(mNetd);
-        inOrder.verify(mNetd).tetherAddForward(IFACE_NAME, UPSTREAM_IFACE);
-        inOrder.verify(mNetd).ipfwdAddInterfaceForward(IFACE_NAME, UPSTREAM_IFACE);
-        verifyNoMoreInteractions(mNetd, mCallback);
-    }
-
-    @Test
-    public void handlesChangingUpstream() throws Exception {
-        initTetheredStateMachine(TETHERING_BLUETOOTH, UPSTREAM_IFACE);
-
-        dispatchTetherConnectionChanged(UPSTREAM_IFACE2);
-        InOrder inOrder = inOrder(mNetd);
-        inOrder.verify(mNetd).ipfwdRemoveInterfaceForward(IFACE_NAME, UPSTREAM_IFACE);
-        inOrder.verify(mNetd).tetherRemoveForward(IFACE_NAME, UPSTREAM_IFACE);
-        inOrder.verify(mNetd).tetherAddForward(IFACE_NAME, UPSTREAM_IFACE2);
-        inOrder.verify(mNetd).ipfwdAddInterfaceForward(IFACE_NAME, UPSTREAM_IFACE2);
-        verifyNoMoreInteractions(mNetd, mCallback);
-    }
-
-    @Test
-    public void handlesChangingUpstreamNatFailure() throws Exception {
-        initTetheredStateMachine(TETHERING_WIFI, UPSTREAM_IFACE);
-
-        doThrow(RemoteException.class).when(mNetd).tetherAddForward(IFACE_NAME, UPSTREAM_IFACE2);
-
-        dispatchTetherConnectionChanged(UPSTREAM_IFACE2);
-        InOrder inOrder = inOrder(mNetd);
-        inOrder.verify(mNetd).ipfwdRemoveInterfaceForward(IFACE_NAME, UPSTREAM_IFACE);
-        inOrder.verify(mNetd).tetherRemoveForward(IFACE_NAME, UPSTREAM_IFACE);
-        inOrder.verify(mNetd).tetherAddForward(IFACE_NAME, UPSTREAM_IFACE2);
-        inOrder.verify(mNetd).ipfwdRemoveInterfaceForward(IFACE_NAME, UPSTREAM_IFACE2);
-        inOrder.verify(mNetd).tetherRemoveForward(IFACE_NAME, UPSTREAM_IFACE2);
-    }
-
-    @Test
-    public void handlesChangingUpstreamInterfaceForwardingFailure() throws Exception {
-        initTetheredStateMachine(TETHERING_WIFI, UPSTREAM_IFACE);
-
-        doThrow(RemoteException.class).when(mNetd).ipfwdAddInterfaceForward(
-                IFACE_NAME, UPSTREAM_IFACE2);
-
-        dispatchTetherConnectionChanged(UPSTREAM_IFACE2);
-        InOrder inOrder = inOrder(mNetd);
-        inOrder.verify(mNetd).ipfwdRemoveInterfaceForward(IFACE_NAME, UPSTREAM_IFACE);
-        inOrder.verify(mNetd).tetherRemoveForward(IFACE_NAME, UPSTREAM_IFACE);
-        inOrder.verify(mNetd).tetherAddForward(IFACE_NAME, UPSTREAM_IFACE2);
-        inOrder.verify(mNetd).ipfwdAddInterfaceForward(IFACE_NAME, UPSTREAM_IFACE2);
-        inOrder.verify(mNetd).ipfwdRemoveInterfaceForward(IFACE_NAME, UPSTREAM_IFACE2);
-        inOrder.verify(mNetd).tetherRemoveForward(IFACE_NAME, UPSTREAM_IFACE2);
-    }
-
-    @Test
-    public void canUnrequestTetheringWithUpstream() throws Exception {
-        initTetheredStateMachine(TETHERING_BLUETOOTH, UPSTREAM_IFACE);
-
-        dispatchCommand(IpServer.CMD_TETHER_UNREQUESTED);
-        InOrder inOrder = inOrder(mNetd, mCallback, mAddressCoordinator);
-        inOrder.verify(mNetd).ipfwdRemoveInterfaceForward(IFACE_NAME, UPSTREAM_IFACE);
-        inOrder.verify(mNetd).tetherRemoveForward(IFACE_NAME, UPSTREAM_IFACE);
-        inOrder.verify(mNetd).tetherApplyDnsInterfaces();
-        inOrder.verify(mNetd).tetherInterfaceRemove(IFACE_NAME);
-        inOrder.verify(mNetd).networkRemoveInterface(INetd.LOCAL_NET_ID, IFACE_NAME);
-        inOrder.verify(mNetd).interfaceSetCfg(argThat(cfg -> IFACE_NAME.equals(cfg.ifName)));
-        inOrder.verify(mAddressCoordinator).releaseDownstream(any());
-        inOrder.verify(mCallback).updateInterfaceState(
-                mIpServer, STATE_AVAILABLE, TETHER_ERROR_NO_ERROR);
-        inOrder.verify(mCallback).updateLinkProperties(
-                eq(mIpServer), any(LinkProperties.class));
-        verifyNoMoreInteractions(mNetd, mCallback, mAddressCoordinator);
-    }
-
-    @Test
-    public void interfaceDownLeadsToUnavailable() throws Exception {
-        for (boolean shouldThrow : new boolean[]{true, false}) {
-            initTetheredStateMachine(TETHERING_USB, null);
-
-            if (shouldThrow) {
-                doThrow(RemoteException.class).when(mNetd).tetherInterfaceRemove(IFACE_NAME);
-            }
-            dispatchCommand(IpServer.CMD_INTERFACE_DOWN);
-            InOrder usbTeardownOrder = inOrder(mNetd, mCallback);
-            // Currently IpServer interfaceSetCfg twice to stop IPv4. One just set interface down
-            // Another one is set IPv4 to 0.0.0.0/0 as clearng ipv4 address.
-            usbTeardownOrder.verify(mNetd, times(2)).interfaceSetCfg(
-                    argThat(cfg -> IFACE_NAME.equals(cfg.ifName)));
-            usbTeardownOrder.verify(mCallback).updateInterfaceState(
-                    mIpServer, STATE_UNAVAILABLE, TETHER_ERROR_NO_ERROR);
-            usbTeardownOrder.verify(mCallback).updateLinkProperties(
-                    eq(mIpServer), mLinkPropertiesCaptor.capture());
-            assertNoAddressesNorRoutes(mLinkPropertiesCaptor.getValue());
-        }
-    }
-
-    @Test
-    public void usbShouldBeTornDownOnTetherError() throws Exception {
-        initStateMachine(TETHERING_USB);
-
-        doThrow(RemoteException.class).when(mNetd).tetherInterfaceAdd(IFACE_NAME);
-        dispatchCommand(IpServer.CMD_TETHER_REQUESTED, STATE_TETHERED);
-        InOrder usbTeardownOrder = inOrder(mNetd, mCallback);
-        usbTeardownOrder.verify(mNetd).interfaceSetCfg(
-                argThat(cfg -> IFACE_NAME.equals(cfg.ifName)));
-        usbTeardownOrder.verify(mNetd).tetherInterfaceAdd(IFACE_NAME);
-
-        usbTeardownOrder.verify(mNetd, times(2)).interfaceSetCfg(
-                argThat(cfg -> IFACE_NAME.equals(cfg.ifName)));
-        usbTeardownOrder.verify(mCallback).updateInterfaceState(
-                mIpServer, STATE_AVAILABLE, TETHER_ERROR_TETHER_IFACE_ERROR);
-        usbTeardownOrder.verify(mCallback).updateLinkProperties(
-                eq(mIpServer), mLinkPropertiesCaptor.capture());
-        assertNoAddressesNorRoutes(mLinkPropertiesCaptor.getValue());
-    }
-
-    @Test
-    public void shouldTearDownUsbOnUpstreamError() throws Exception {
-        initTetheredStateMachine(TETHERING_USB, null);
-
-        doThrow(RemoteException.class).when(mNetd).tetherAddForward(anyString(), anyString());
-        dispatchTetherConnectionChanged(UPSTREAM_IFACE);
-        InOrder usbTeardownOrder = inOrder(mNetd, mCallback);
-        usbTeardownOrder.verify(mNetd).tetherAddForward(IFACE_NAME, UPSTREAM_IFACE);
-
-        usbTeardownOrder.verify(mNetd, times(2)).interfaceSetCfg(
-                argThat(cfg -> IFACE_NAME.equals(cfg.ifName)));
-        usbTeardownOrder.verify(mCallback).updateInterfaceState(
-                mIpServer, STATE_AVAILABLE, TETHER_ERROR_ENABLE_FORWARDING_ERROR);
-        usbTeardownOrder.verify(mCallback).updateLinkProperties(
-                eq(mIpServer), mLinkPropertiesCaptor.capture());
-        assertNoAddressesNorRoutes(mLinkPropertiesCaptor.getValue());
-    }
-
-    @Test
-    public void ignoresDuplicateUpstreamNotifications() throws Exception {
-        initTetheredStateMachine(TETHERING_WIFI, UPSTREAM_IFACE);
-
-        verifyNoMoreInteractions(mNetd, mCallback);
-
-        for (int i = 0; i < 5; i++) {
-            dispatchTetherConnectionChanged(UPSTREAM_IFACE);
-            verifyNoMoreInteractions(mNetd, mCallback);
-        }
-    }
-
-    @Test
-    public void startsDhcpServer() throws Exception {
-        initTetheredStateMachine(TETHERING_WIFI, UPSTREAM_IFACE);
-        dispatchTetherConnectionChanged(UPSTREAM_IFACE);
-
-        assertDhcpStarted(PrefixUtils.asIpPrefix(mTestAddress));
-    }
-
-    @Test
-    public void startsDhcpServerOnBluetooth() throws Exception {
-        initTetheredStateMachine(TETHERING_BLUETOOTH, UPSTREAM_IFACE);
-        dispatchTetherConnectionChanged(UPSTREAM_IFACE);
-
-        assertDhcpStarted(mBluetoothPrefix);
-    }
-
-    @Test
-    public void startsDhcpServerOnWifiP2p() throws Exception {
-        initTetheredStateMachine(TETHERING_WIFI_P2P, UPSTREAM_IFACE);
-        dispatchTetherConnectionChanged(UPSTREAM_IFACE);
-
-        assertDhcpStarted(PrefixUtils.asIpPrefix(mTestAddress));
-    }
-
-    @Test
-    public void startsDhcpServerOnNcm() throws Exception {
-        initStateMachine(TETHERING_NCM);
-        dispatchCommand(IpServer.CMD_TETHER_REQUESTED, STATE_LOCAL_ONLY);
-        dispatchTetherConnectionChanged(UPSTREAM_IFACE);
-
-        assertDhcpStarted(new IpPrefix("192.168.42.0/24"));
-    }
-
-    @Test
-    public void testOnNewPrefixRequest() throws Exception {
-        initStateMachine(TETHERING_NCM);
-        dispatchCommand(IpServer.CMD_TETHER_REQUESTED, STATE_LOCAL_ONLY);
-
-        final IDhcpEventCallbacks eventCallbacks;
-        final ArgumentCaptor<IDhcpEventCallbacks> dhcpEventCbsCaptor =
-                 ArgumentCaptor.forClass(IDhcpEventCallbacks.class);
-        verify(mDhcpServer, timeout(MAKE_DHCPSERVER_TIMEOUT_MS).times(1)).startWithCallbacks(
-                any(), dhcpEventCbsCaptor.capture());
-        eventCallbacks = dhcpEventCbsCaptor.getValue();
-        assertDhcpStarted(new IpPrefix("192.168.42.0/24"));
-
-        final ArgumentCaptor<LinkProperties> lpCaptor =
-                ArgumentCaptor.forClass(LinkProperties.class);
-        InOrder inOrder = inOrder(mNetd, mCallback, mAddressCoordinator);
-        inOrder.verify(mAddressCoordinator).requestDownstreamAddress(any());
-        inOrder.verify(mNetd).networkAddInterface(INetd.LOCAL_NET_ID, IFACE_NAME);
-        // One for ipv4 route, one for ipv6 link local route.
-        inOrder.verify(mNetd, times(2)).networkAddRoute(eq(INetd.LOCAL_NET_ID), eq(IFACE_NAME),
-                any(), any());
-        inOrder.verify(mCallback).updateInterfaceState(
-                mIpServer, STATE_LOCAL_ONLY, TETHER_ERROR_NO_ERROR);
-        inOrder.verify(mCallback).updateLinkProperties(eq(mIpServer), lpCaptor.capture());
-        verifyNoMoreInteractions(mCallback, mAddressCoordinator);
-
-        // Simulate the DHCP server receives DHCPDECLINE on MirrorLink and then signals
-        // onNewPrefixRequest callback.
-        final LinkAddress newAddress = new LinkAddress("192.168.100.125/24");
-        when(mAddressCoordinator.requestDownstreamAddress(any())).thenReturn(newAddress);
-        eventCallbacks.onNewPrefixRequest(new IpPrefix("192.168.42.0/24"));
-        mLooper.dispatchAll();
-
-        inOrder.verify(mAddressCoordinator).requestDownstreamAddress(any());
-        inOrder.verify(mNetd).tetherApplyDnsInterfaces();
-        inOrder.verify(mCallback).updateLinkProperties(eq(mIpServer), lpCaptor.capture());
-        verifyNoMoreInteractions(mCallback);
-
-        final LinkProperties linkProperties = lpCaptor.getValue();
-        final List<LinkAddress> linkAddresses = linkProperties.getLinkAddresses();
-        assertEquals(1, linkProperties.getLinkAddresses().size());
-        assertEquals(1, linkProperties.getRoutes().size());
-        final IpPrefix prefix = new IpPrefix(linkAddresses.get(0).getAddress(),
-                linkAddresses.get(0).getPrefixLength());
-        assertNotEquals(prefix, new IpPrefix("192.168.42.0/24"));
-
-        verify(mDhcpServer).updateParams(mDhcpParamsCaptor.capture(), any());
-        assertDhcpServingParams(mDhcpParamsCaptor.getValue(), prefix);
-    }
-
-    @Test
-    public void doesNotStartDhcpServerIfDisabled() throws Exception {
-        initTetheredStateMachine(TETHERING_WIFI, UPSTREAM_IFACE, true /* usingLegacyDhcp */,
-                DEFAULT_USING_BPF_OFFLOAD);
-        dispatchTetherConnectionChanged(UPSTREAM_IFACE);
-
-        verify(mDependencies, never()).makeDhcpServer(any(), any(), any());
-    }
-
-    private InetAddress addr(String addr) throws Exception {
-        return InetAddresses.parseNumericAddress(addr);
-    }
-
-    private void recvNewNeigh(int ifindex, InetAddress addr, short nudState, MacAddress mac) {
-        mNeighborEventConsumer.accept(new NeighborEvent(0, RTM_NEWNEIGH, ifindex, addr,
-                nudState, mac));
-        mLooper.dispatchAll();
-    }
-
-    private void recvDelNeigh(int ifindex, InetAddress addr, short nudState, MacAddress mac) {
-        mNeighborEventConsumer.accept(new NeighborEvent(0, RTM_DELNEIGH, ifindex, addr,
-                nudState, mac));
-        mLooper.dispatchAll();
-    }
-
-    /**
-     * Custom ArgumentMatcher for TetherOffloadRuleParcel. This is needed because generated stable
-     * AIDL classes don't have equals(), so we cannot just use eq(). A custom assert, such as:
-     *
-     * private void checkFooCalled(StableParcelable p, ...) {
-     *     ArgumentCaptor<FooParam> captor = ArgumentCaptor.forClass(FooParam.class);
-     *     verify(mMock).foo(captor.capture());
-     *     Foo foo = captor.getValue();
-     *     assertFooMatchesExpectations(foo);
-     * }
-     *
-     * almost works, but not quite. This is because if the code under test calls foo() twice, the
-     * first call to checkFooCalled() matches both the calls, putting both calls into the captor,
-     * and then fails with TooManyActualInvocations. It also makes it harder to use other mockito
-     * features such as never(), inOrder(), etc.
-     *
-     * This approach isn't great because if the match fails, the error message is unhelpful
-     * (actual: "android.net.TetherOffloadRuleParcel@8c827b0" or some such), but at least it does
-     * work.
-     *
-     * TODO: consider making the error message more readable by adding a method that catching the
-     * AssertionFailedError and throwing a new assertion with more details. See
-     * NetworkMonitorTest#verifyNetworkTested.
-     *
-     * See ConnectivityServiceTest#assertRoutesAdded for an alternative approach which solves the
-     * TooManyActualInvocations problem described above by forcing the caller of the custom assert
-     * method to specify all expected invocations in one call. This is useful when the stable
-     * parcelable class being asserted on has a corresponding Java object (eg., RouteInfo and
-     * RouteInfoParcelable), and the caller can just pass in a list of them. It not useful here
-     * because there is no such object.
-     */
-    private static class TetherOffloadRuleParcelMatcher implements
-            ArgumentMatcher<TetherOffloadRuleParcel> {
-        public final int upstreamIfindex;
-        public final InetAddress dst;
-        public final MacAddress dstMac;
-
-        TetherOffloadRuleParcelMatcher(int upstreamIfindex, InetAddress dst, MacAddress dstMac) {
-            this.upstreamIfindex = upstreamIfindex;
-            this.dst = dst;
-            this.dstMac = dstMac;
-        }
-
-        public boolean matches(TetherOffloadRuleParcel parcel) {
-            return upstreamIfindex == parcel.inputInterfaceIndex
-                    && (TEST_IFACE_PARAMS.index == parcel.outputInterfaceIndex)
-                    && Arrays.equals(dst.getAddress(), parcel.destination)
-                    && (128 == parcel.prefixLength)
-                    && Arrays.equals(TEST_IFACE_PARAMS.macAddr.toByteArray(), parcel.srcL2Address)
-                    && Arrays.equals(dstMac.toByteArray(), parcel.dstL2Address);
-        }
-
-        public String toString() {
-            return String.format("TetherOffloadRuleParcelMatcher(%d, %s, %s",
-                    upstreamIfindex, dst.getHostAddress(), dstMac);
-        }
-    }
-
-    @NonNull
-    private static TetherOffloadRuleParcel matches(
-            int upstreamIfindex, InetAddress dst, MacAddress dstMac) {
-        return argThat(new TetherOffloadRuleParcelMatcher(upstreamIfindex, dst, dstMac));
-    }
-
-    @NonNull
-    private static Ipv6ForwardingRule makeForwardingRule(
-            int upstreamIfindex, @NonNull InetAddress dst, @NonNull MacAddress dstMac) {
-        return new Ipv6ForwardingRule(upstreamIfindex, TEST_IFACE_PARAMS.index,
-                (Inet6Address) dst, TEST_IFACE_PARAMS.macAddr, dstMac);
-    }
-
-    @NonNull
-    private static TetherStatsParcel buildEmptyTetherStatsParcel(int ifIndex) {
-        TetherStatsParcel parcel = new TetherStatsParcel();
-        parcel.ifIndex = ifIndex;
-        return parcel;
-    }
-
-    private void resetNetdAndBpfCoordinator() throws Exception {
-        reset(mNetd, mBpfCoordinator);
-        when(mNetd.tetherOffloadGetStats()).thenReturn(new TetherStatsParcel[0]);
-        when(mNetd.tetherOffloadGetAndClearStats(UPSTREAM_IFINDEX))
-                .thenReturn(buildEmptyTetherStatsParcel(UPSTREAM_IFINDEX));
-        when(mNetd.tetherOffloadGetAndClearStats(UPSTREAM_IFINDEX2))
-                .thenReturn(buildEmptyTetherStatsParcel(UPSTREAM_IFINDEX2));
-    }
-
-    @Test
-    public void addRemoveipv6ForwardingRules() throws Exception {
-        initTetheredStateMachine(TETHERING_WIFI, UPSTREAM_IFACE, false /* usingLegacyDhcp */,
-                DEFAULT_USING_BPF_OFFLOAD);
-
-        final int myIfindex = TEST_IFACE_PARAMS.index;
-        final int notMyIfindex = myIfindex - 1;
-
-        final MacAddress myMac = TEST_IFACE_PARAMS.macAddr;
-        final InetAddress neighA = InetAddresses.parseNumericAddress("2001:db8::1");
-        final InetAddress neighB = InetAddresses.parseNumericAddress("2001:db8::2");
-        final InetAddress neighLL = InetAddresses.parseNumericAddress("fe80::1");
-        final InetAddress neighMC = InetAddresses.parseNumericAddress("ff02::1234");
-        final MacAddress macNull = MacAddress.fromString("00:00:00:00:00:00");
-        final MacAddress macA = MacAddress.fromString("00:00:00:00:00:0a");
-        final MacAddress macB = MacAddress.fromString("11:22:33:00:00:0b");
-
-        resetNetdAndBpfCoordinator();
-        verifyNoMoreInteractions(mBpfCoordinator, mNetd);
-
-        // TODO: Perhaps verify the interaction of tetherOffloadSetInterfaceQuota and
-        // tetherOffloadGetAndClearStats in netd while the rules are changed.
-
-        // Events on other interfaces are ignored.
-        recvNewNeigh(notMyIfindex, neighA, NUD_REACHABLE, macA);
-        verifyNoMoreInteractions(mBpfCoordinator, mNetd);
-
-        // Events on this interface are received and sent to netd.
-        recvNewNeigh(myIfindex, neighA, NUD_REACHABLE, macA);
-        verify(mBpfCoordinator).tetherOffloadRuleAdd(
-                mIpServer, makeForwardingRule(UPSTREAM_IFINDEX, neighA, macA));
-        verify(mNetd).tetherOffloadRuleAdd(matches(UPSTREAM_IFINDEX, neighA, macA));
-        resetNetdAndBpfCoordinator();
-
-        recvNewNeigh(myIfindex, neighB, NUD_REACHABLE, macB);
-        verify(mBpfCoordinator).tetherOffloadRuleAdd(
-                mIpServer, makeForwardingRule(UPSTREAM_IFINDEX, neighB, macB));
-        verify(mNetd).tetherOffloadRuleAdd(matches(UPSTREAM_IFINDEX, neighB, macB));
-        resetNetdAndBpfCoordinator();
-
-        // Link-local and multicast neighbors are ignored.
-        recvNewNeigh(myIfindex, neighLL, NUD_REACHABLE, macA);
-        verifyNoMoreInteractions(mBpfCoordinator, mNetd);
-        recvNewNeigh(myIfindex, neighMC, NUD_REACHABLE, macA);
-        verifyNoMoreInteractions(mBpfCoordinator, mNetd);
-
-        // A neighbor that is no longer valid causes the rule to be removed.
-        // NUD_FAILED events do not have a MAC address.
-        recvNewNeigh(myIfindex, neighA, NUD_FAILED, null);
-        verify(mBpfCoordinator).tetherOffloadRuleRemove(
-                mIpServer, makeForwardingRule(UPSTREAM_IFINDEX, neighA, macNull));
-        verify(mNetd).tetherOffloadRuleRemove(matches(UPSTREAM_IFINDEX, neighA, macNull));
-        resetNetdAndBpfCoordinator();
-
-        // A neighbor that is deleted causes the rule to be removed.
-        recvDelNeigh(myIfindex, neighB, NUD_STALE, macB);
-        verify(mBpfCoordinator).tetherOffloadRuleRemove(
-                mIpServer,  makeForwardingRule(UPSTREAM_IFINDEX, neighB, macNull));
-        verify(mNetd).tetherOffloadRuleRemove(matches(UPSTREAM_IFINDEX, neighB, macNull));
-        resetNetdAndBpfCoordinator();
-
-        // Upstream changes result in updating the rules.
-        recvNewNeigh(myIfindex, neighA, NUD_REACHABLE, macA);
-        recvNewNeigh(myIfindex, neighB, NUD_REACHABLE, macB);
-        resetNetdAndBpfCoordinator();
-
-        InOrder inOrder = inOrder(mNetd);
-        LinkProperties lp = new LinkProperties();
-        lp.setInterfaceName(UPSTREAM_IFACE2);
-        dispatchTetherConnectionChanged(UPSTREAM_IFACE2, lp, -1);
-        verify(mBpfCoordinator).tetherOffloadRuleUpdate(mIpServer, UPSTREAM_IFINDEX2);
-        inOrder.verify(mNetd).tetherOffloadRuleRemove(matches(UPSTREAM_IFINDEX, neighA, macA));
-        inOrder.verify(mNetd).tetherOffloadRuleAdd(matches(UPSTREAM_IFINDEX2, neighA, macA));
-        inOrder.verify(mNetd).tetherOffloadRuleRemove(matches(UPSTREAM_IFINDEX, neighB, macB));
-        inOrder.verify(mNetd).tetherOffloadRuleAdd(matches(UPSTREAM_IFINDEX2, neighB, macB));
-        resetNetdAndBpfCoordinator();
-
-        // When the upstream is lost, rules are removed.
-        dispatchTetherConnectionChanged(null, null, 0);
-        // Clear function is called two times by:
-        // - processMessage CMD_TETHER_CONNECTION_CHANGED for the upstream is lost.
-        // - processMessage CMD_IPV6_TETHER_UPDATE for the IPv6 upstream is lost.
-        // See dispatchTetherConnectionChanged.
-        verify(mBpfCoordinator, times(2)).tetherOffloadRuleClear(mIpServer);
-        verify(mNetd).tetherOffloadRuleRemove(matches(UPSTREAM_IFINDEX2, neighA, macA));
-        verify(mNetd).tetherOffloadRuleRemove(matches(UPSTREAM_IFINDEX2, neighB, macB));
-        resetNetdAndBpfCoordinator();
-
-        // If the upstream is IPv4-only, no rules are added.
-        dispatchTetherConnectionChanged(UPSTREAM_IFACE);
-        resetNetdAndBpfCoordinator();
-        recvNewNeigh(myIfindex, neighA, NUD_REACHABLE, macA);
-        // Clear function is called by #updateIpv6ForwardingRules for the IPv6 upstream is lost.
-        verify(mBpfCoordinator).tetherOffloadRuleClear(mIpServer);
-        verifyNoMoreInteractions(mBpfCoordinator, mNetd);
-
-        // Rules can be added again once upstream IPv6 connectivity is available.
-        lp.setInterfaceName(UPSTREAM_IFACE);
-        dispatchTetherConnectionChanged(UPSTREAM_IFACE, lp, -1);
-        recvNewNeigh(myIfindex, neighB, NUD_REACHABLE, macB);
-        verify(mBpfCoordinator).tetherOffloadRuleAdd(
-                mIpServer, makeForwardingRule(UPSTREAM_IFINDEX, neighB, macB));
-        verify(mNetd).tetherOffloadRuleAdd(matches(UPSTREAM_IFINDEX, neighB, macB));
-        verify(mBpfCoordinator, never()).tetherOffloadRuleAdd(
-                mIpServer, makeForwardingRule(UPSTREAM_IFINDEX, neighA, macA));
-        verify(mNetd, never()).tetherOffloadRuleAdd(matches(UPSTREAM_IFINDEX, neighA, macA));
-
-        // If upstream IPv6 connectivity is lost, rules are removed.
-        resetNetdAndBpfCoordinator();
-        dispatchTetherConnectionChanged(UPSTREAM_IFACE, null, 0);
-        verify(mBpfCoordinator).tetherOffloadRuleClear(mIpServer);
-        verify(mNetd).tetherOffloadRuleRemove(matches(UPSTREAM_IFINDEX, neighB, macB));
-
-        // When the interface goes down, rules are removed.
-        lp.setInterfaceName(UPSTREAM_IFACE);
-        dispatchTetherConnectionChanged(UPSTREAM_IFACE, lp, -1);
-        recvNewNeigh(myIfindex, neighA, NUD_REACHABLE, macA);
-        recvNewNeigh(myIfindex, neighB, NUD_REACHABLE, macB);
-        verify(mBpfCoordinator).tetherOffloadRuleAdd(
-                mIpServer, makeForwardingRule(UPSTREAM_IFINDEX, neighA, macA));
-        verify(mNetd).tetherOffloadRuleAdd(matches(UPSTREAM_IFINDEX, neighA, macA));
-        verify(mBpfCoordinator).tetherOffloadRuleAdd(
-                mIpServer, makeForwardingRule(UPSTREAM_IFINDEX, neighB, macB));
-        verify(mNetd).tetherOffloadRuleAdd(matches(UPSTREAM_IFINDEX, neighB, macB));
-        resetNetdAndBpfCoordinator();
-
-        mIpServer.stop();
-        mLooper.dispatchAll();
-        verify(mBpfCoordinator).tetherOffloadRuleClear(mIpServer);
-        verify(mNetd).tetherOffloadRuleRemove(matches(UPSTREAM_IFINDEX, neighA, macA));
-        verify(mNetd).tetherOffloadRuleRemove(matches(UPSTREAM_IFINDEX, neighB, macB));
-        verify(mIpNeighborMonitor).stop();
-        resetNetdAndBpfCoordinator();
-    }
-
-    @Test
-    public void enableDisableUsingBpfOffload() throws Exception {
-        final int myIfindex = TEST_IFACE_PARAMS.index;
-        final InetAddress neigh = InetAddresses.parseNumericAddress("2001:db8::1");
-        final MacAddress macA = MacAddress.fromString("00:00:00:00:00:0a");
-        final MacAddress macNull = MacAddress.fromString("00:00:00:00:00:00");
-
-        // Expect that rules can be only added/removed when the BPF offload config is enabled.
-        // Note that the BPF offload disabled case is not a realistic test case. Because IP
-        // neighbor monitor doesn't start if BPF offload is disabled, there should have no
-        // neighbor event listening. This is used for testing the protection check just in case.
-        // TODO: Perhaps remove the BPF offload disabled case test once this check isn't needed
-        // anymore.
-
-        // [1] Enable BPF offload.
-        // A neighbor that is added or deleted causes the rule to be added or removed.
-        initTetheredStateMachine(TETHERING_WIFI, UPSTREAM_IFACE, false /* usingLegacyDhcp */,
-                true /* usingBpfOffload */);
-        resetNetdAndBpfCoordinator();
-
-        recvNewNeigh(myIfindex, neigh, NUD_REACHABLE, macA);
-        verify(mBpfCoordinator).tetherOffloadRuleAdd(
-                mIpServer, makeForwardingRule(UPSTREAM_IFINDEX, neigh, macA));
-        verify(mNetd).tetherOffloadRuleAdd(matches(UPSTREAM_IFINDEX, neigh, macA));
-        resetNetdAndBpfCoordinator();
-
-        recvDelNeigh(myIfindex, neigh, NUD_STALE, macA);
-        verify(mBpfCoordinator).tetherOffloadRuleRemove(
-                mIpServer, makeForwardingRule(UPSTREAM_IFINDEX, neigh, macNull));
-        verify(mNetd).tetherOffloadRuleRemove(matches(UPSTREAM_IFINDEX, neigh, macNull));
-        resetNetdAndBpfCoordinator();
-
-        // [2] Disable BPF offload.
-        // A neighbor that is added or deleted doesn’t cause the rule to be added or removed.
-        initTetheredStateMachine(TETHERING_WIFI, UPSTREAM_IFACE, false /* usingLegacyDhcp */,
-                false /* usingBpfOffload */);
-        resetNetdAndBpfCoordinator();
-
-        recvNewNeigh(myIfindex, neigh, NUD_REACHABLE, macA);
-        verify(mBpfCoordinator, never()).tetherOffloadRuleAdd(any(), any());
-        verify(mNetd, never()).tetherOffloadRuleAdd(any());
-        resetNetdAndBpfCoordinator();
-
-        recvDelNeigh(myIfindex, neigh, NUD_STALE, macA);
-        verify(mBpfCoordinator, never()).tetherOffloadRuleRemove(any(), any());
-        verify(mNetd, never()).tetherOffloadRuleRemove(any());
-        resetNetdAndBpfCoordinator();
-    }
-
-    @Test
-    public void doesNotStartIpNeighborMonitorIfBpfOffloadDisabled() throws Exception {
-        initTetheredStateMachine(TETHERING_WIFI, UPSTREAM_IFACE, false /* usingLegacyDhcp */,
-                false /* usingBpfOffload */);
-
-        // IP neighbor monitor doesn't start if BPF offload is disabled.
-        verify(mIpNeighborMonitor, never()).start();
-    }
-
-    private LinkProperties buildIpv6OnlyLinkProperties(final String iface) {
-        final LinkProperties linkProp = new LinkProperties();
-        linkProp.setInterfaceName(iface);
-        linkProp.addLinkAddress(new LinkAddress("2001:db8::1/64"));
-        linkProp.addRoute(new RouteInfo(new IpPrefix("::/0"), null, iface, RTN_UNICAST));
-        final InetAddress dns = InetAddresses.parseNumericAddress("2001:4860:4860::8888");
-        linkProp.addDnsServer(dns);
-
-        return linkProp;
-    }
-
-    @Test
-    public void testAdjustTtlValue() throws Exception {
-        final ArgumentCaptor<RaParams> raParamsCaptor =
-                ArgumentCaptor.forClass(RaParams.class);
-        initTetheredStateMachine(TETHERING_WIFI, UPSTREAM_IFACE);
-        verify(mRaDaemon).buildNewRa(any(), raParamsCaptor.capture());
-        final RaParams noV6Params = raParamsCaptor.getValue();
-        assertEquals(65, noV6Params.hopLimit);
-        reset(mRaDaemon);
-
-        when(mNetd.getProcSysNet(
-                INetd.IPV6, INetd.CONF, UPSTREAM_IFACE, "hop_limit")).thenReturn("64");
-        final LinkProperties lp = buildIpv6OnlyLinkProperties(UPSTREAM_IFACE);
-        dispatchTetherConnectionChanged(UPSTREAM_IFACE, lp, 1);
-        verify(mRaDaemon).buildNewRa(any(), raParamsCaptor.capture());
-        final RaParams nonCellularParams = raParamsCaptor.getValue();
-        assertEquals(65, nonCellularParams.hopLimit);
-        reset(mRaDaemon);
-
-        dispatchTetherConnectionChanged(UPSTREAM_IFACE, null, 0);
-        verify(mRaDaemon).buildNewRa(any(), raParamsCaptor.capture());
-        final RaParams noUpstream = raParamsCaptor.getValue();
-        assertEquals(65, nonCellularParams.hopLimit);
-        reset(mRaDaemon);
-
-        dispatchTetherConnectionChanged(UPSTREAM_IFACE, lp, -1);
-        verify(mRaDaemon).buildNewRa(any(), raParamsCaptor.capture());
-        final RaParams cellularParams = raParamsCaptor.getValue();
-        assertEquals(63, cellularParams.hopLimit);
-        reset(mRaDaemon);
-    }
-
-    @Test
-    public void testStopObsoleteDhcpServer() throws Exception {
-        final ArgumentCaptor<DhcpServerCallbacks> cbCaptor =
-                ArgumentCaptor.forClass(DhcpServerCallbacks.class);
-        doNothing().when(mDependencies).makeDhcpServer(any(), mDhcpParamsCaptor.capture(),
-                cbCaptor.capture());
-        initStateMachine(TETHERING_WIFI);
-        dispatchCommand(IpServer.CMD_TETHER_REQUESTED, STATE_TETHERED);
-        verify(mDhcpServer, never()).startWithCallbacks(any(), any());
-
-        // No stop dhcp server because dhcp server is not created yet.
-        dispatchCommand(IpServer.CMD_TETHER_UNREQUESTED);
-        verify(mDhcpServer, never()).stop(any());
-
-        // Stop obsolete dhcp server.
-        try {
-            final DhcpServerCallbacks cb = cbCaptor.getValue();
-            cb.onDhcpServerCreated(STATUS_SUCCESS, mDhcpServer);
-            mLooper.dispatchAll();
-        } catch (RemoteException e) {
-            fail(e.getMessage());
-        }
-        verify(mDhcpServer).stop(any());
-    }
-
-    private void assertDhcpServingParams(final DhcpServingParamsParcel params,
-            final IpPrefix prefix) {
-        // Last address byte is random
-        assertTrue(prefix.contains(intToInet4AddressHTH(params.serverAddr)));
-        assertEquals(prefix.getPrefixLength(), params.serverAddrPrefixLength);
-        assertEquals(1, params.defaultRouters.length);
-        assertEquals(params.serverAddr, params.defaultRouters[0]);
-        assertEquals(1, params.dnsServers.length);
-        assertEquals(params.serverAddr, params.dnsServers[0]);
-        assertEquals(DHCP_LEASE_TIME_SECS, params.dhcpLeaseTimeSecs);
-        if (mIpServer.interfaceType() == TETHERING_NCM) {
-            assertTrue(params.changePrefixOnDecline);
-        }
-    }
-
-    private void assertDhcpStarted(IpPrefix expectedPrefix) throws Exception {
-        verify(mDependencies, times(1)).makeDhcpServer(eq(IFACE_NAME), any(), any());
-        verify(mDhcpServer, timeout(MAKE_DHCPSERVER_TIMEOUT_MS).times(1)).startWithCallbacks(
-                any(), any());
-        assertDhcpServingParams(mDhcpParamsCaptor.getValue(), expectedPrefix);
-    }
-
-    /**
-     * Send a command to the state machine under test, and run the event loop to idle.
-     *
-     * @param command One of the IpServer.CMD_* constants.
-     * @param arg1 An additional argument to pass.
-     */
-    private void dispatchCommand(int command, int arg1) {
-        mIpServer.sendMessage(command, arg1);
-        mLooper.dispatchAll();
-    }
-
-    /**
-     * Send a command to the state machine under test, and run the event loop to idle.
-     *
-     * @param command One of the IpServer.CMD_* constants.
-     */
-    private void dispatchCommand(int command) {
-        mIpServer.sendMessage(command);
-        mLooper.dispatchAll();
-    }
-
-    /**
-     * Special override to tell the state machine that the upstream interface has changed.
-     *
-     * @see #dispatchCommand(int)
-     * @param upstreamIface String name of upstream interface (or null)
-     * @param v6lp IPv6 LinkProperties of the upstream interface, or null for an IPv4-only upstream.
-     */
-    private void dispatchTetherConnectionChanged(String upstreamIface, LinkProperties v6lp,
-            int ttlAdjustment) {
-        dispatchTetherConnectionChanged(upstreamIface);
-        mIpServer.sendMessage(IpServer.CMD_IPV6_TETHER_UPDATE, ttlAdjustment, 0, v6lp);
-        mLooper.dispatchAll();
-    }
-
-    private void dispatchTetherConnectionChanged(String upstreamIface) {
-        final InterfaceSet ifs = (upstreamIface != null) ? new InterfaceSet(upstreamIface) : null;
-        mIpServer.sendMessage(IpServer.CMD_TETHER_CONNECTION_CHANGED, ifs);
-        mLooper.dispatchAll();
-    }
-
-    private void assertIPv4AddressAndDirectlyConnectedRoute(LinkProperties lp) {
-        // Find the first IPv4 LinkAddress.
-        LinkAddress addr4 = null;
-        for (LinkAddress addr : lp.getLinkAddresses()) {
-            if (!(addr.getAddress() instanceof Inet4Address)) continue;
-            addr4 = addr;
-            break;
-        }
-        assertNotNull("missing IPv4 address", addr4);
-
-        final IpPrefix destination = new IpPrefix(addr4.getAddress(), addr4.getPrefixLength());
-        // Assert the presence of the associated directly connected route.
-        final RouteInfo directlyConnected = new RouteInfo(destination, null, lp.getInterfaceName(),
-                RouteInfo.RTN_UNICAST);
-        assertTrue("missing directly connected route: '" + directlyConnected.toString() + "'",
-                   lp.getRoutes().contains(directlyConnected));
-    }
-
-    private void assertNoAddressesNorRoutes(LinkProperties lp) {
-        assertTrue(lp.getLinkAddresses().isEmpty());
-        assertTrue(lp.getRoutes().isEmpty());
-        // We also check that interface name is non-empty, because we should
-        // never see an empty interface name in any LinkProperties update.
-        assertFalse(TextUtils.isEmpty(lp.getInterfaceName()));
-    }
-
-    private boolean assertContainsFlag(String[] flags, String match) {
-        for (String flag : flags) {
-            if (flag.equals(match)) return true;
-        }
-        fail("Missing flag: " + match);
-        return false;
-    }
-
-    private boolean assertNotContainsFlag(String[] flags, String match) {
-        for (String flag : flags) {
-            if (flag.equals(match)) {
-                fail("Unexpected flag: " + match);
-                return false;
-            }
-        }
-        return true;
-    }
-
-    @Test @IgnoreUpTo(Build.VERSION_CODES.R)
-    public void dadProxyUpdates() throws Exception {
-        InOrder inOrder = inOrder(mDadProxy);
-        initTetheredStateMachine(TETHERING_WIFI, UPSTREAM_IFACE);
-        inOrder.verify(mDadProxy).setUpstreamIface(UPSTREAM_IFACE_PARAMS);
-
-        // Add an upstream without IPv6.
-        dispatchTetherConnectionChanged(UPSTREAM_IFACE, null, 0);
-        inOrder.verify(mDadProxy).setUpstreamIface(null);
-
-        // Add IPv6 to the upstream.
-        LinkProperties lp = new LinkProperties();
-        lp.setInterfaceName(UPSTREAM_IFACE);
-        dispatchTetherConnectionChanged(UPSTREAM_IFACE, lp, 0);
-        inOrder.verify(mDadProxy).setUpstreamIface(UPSTREAM_IFACE_PARAMS);
-
-        // Change upstream.
-        // New linkproperties is needed, otherwise changing the iface has no impact.
-        LinkProperties lp2 = new LinkProperties();
-        lp2.setInterfaceName(UPSTREAM_IFACE2);
-        dispatchTetherConnectionChanged(UPSTREAM_IFACE2, lp2, 0);
-        inOrder.verify(mDadProxy).setUpstreamIface(UPSTREAM_IFACE_PARAMS2);
-
-        // Lose IPv6 on the upstream...
-        dispatchTetherConnectionChanged(UPSTREAM_IFACE2, null, 0);
-        inOrder.verify(mDadProxy).setUpstreamIface(null);
-
-        // ... and regain it on a different upstream.
-        dispatchTetherConnectionChanged(UPSTREAM_IFACE, lp, 0);
-        inOrder.verify(mDadProxy).setUpstreamIface(UPSTREAM_IFACE_PARAMS);
-
-        // Lose upstream.
-        dispatchTetherConnectionChanged(null, null, 0);
-        inOrder.verify(mDadProxy).setUpstreamIface(null);
-
-        // Regain upstream.
-        dispatchTetherConnectionChanged(UPSTREAM_IFACE, lp, 0);
-        inOrder.verify(mDadProxy).setUpstreamIface(UPSTREAM_IFACE_PARAMS);
-
-        // Stop tethering.
-        mIpServer.stop();
-        mLooper.dispatchAll();
-    }
-
-    private void checkDadProxyEnabled(boolean expectEnabled) throws Exception {
-        initTetheredStateMachine(TETHERING_WIFI, UPSTREAM_IFACE);
-        InOrder inOrder = inOrder(mDadProxy);
-        // Add IPv6 to the upstream.
-        LinkProperties lp = new LinkProperties();
-        lp.setInterfaceName(UPSTREAM_IFACE);
-        if (expectEnabled) {
-            inOrder.verify(mDadProxy).setUpstreamIface(UPSTREAM_IFACE_PARAMS);
-        } else {
-            inOrder.verifyNoMoreInteractions();
-        }
-        // Stop tethering.
-        mIpServer.stop();
-        mLooper.dispatchAll();
-        if (expectEnabled) {
-            inOrder.verify(mDadProxy).stop();
-        }
-        else {
-            verify(mDependencies, never()).getDadProxy(any(), any());
-        }
-    }
-    @Test @IgnoreAfter(Build.VERSION_CODES.R)
-    public void testDadProxyUpdates_DisabledUpToR() throws Exception {
-        checkDadProxyEnabled(false);
-    }
-    @Test @IgnoreUpTo(Build.VERSION_CODES.R)
-    public void testDadProxyUpdates_EnabledAfterR() throws Exception {
-        checkDadProxyEnabled(true);
-    }
-}
diff --git a/packages/Tethering/tests/unit/src/android/net/util/InterfaceSetTest.java b/packages/Tethering/tests/unit/src/android/net/util/InterfaceSetTest.java
deleted file mode 100644
index ea084b6..0000000
--- a/packages/Tethering/tests/unit/src/android/net/util/InterfaceSetTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net.util;
-
-import static junit.framework.Assert.assertEquals;
-import static junit.framework.Assert.assertFalse;
-import static junit.framework.Assert.assertTrue;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class InterfaceSetTest {
-    @Test
-    public void testNullNamesIgnored() {
-        final InterfaceSet set = new InterfaceSet(null, "if1", null, "if2", null);
-        assertEquals(2, set.ifnames.size());
-        assertTrue(set.ifnames.contains("if1"));
-        assertTrue(set.ifnames.contains("if2"));
-    }
-
-    @Test
-    public void testToString() {
-        final InterfaceSet set = new InterfaceSet("if1", "if2");
-        final String setString = set.toString();
-        assertTrue(setString.equals("[if1,if2]") || setString.equals("[if2,if1]"));
-    }
-
-    @Test
-    public void testToString_Empty() {
-        final InterfaceSet set = new InterfaceSet(null, null);
-        assertEquals("[]", set.toString());
-    }
-
-    @Test
-    public void testEquals() {
-        assertEquals(new InterfaceSet(null, "if1", "if2"), new InterfaceSet("if2", "if1"));
-        assertEquals(new InterfaceSet(null, null), new InterfaceSet());
-        assertFalse(new InterfaceSet("if1", "if3").equals(new InterfaceSet("if1", "if2")));
-        assertFalse(new InterfaceSet("if1", "if2").equals(new InterfaceSet("if1")));
-        assertFalse(new InterfaceSet().equals(null));
-    }
-}
diff --git a/packages/Tethering/tests/unit/src/android/net/util/TetheringUtilsTest.java b/packages/Tethering/tests/unit/src/android/net/util/TetheringUtilsTest.java
deleted file mode 100644
index 91c7771..0000000
--- a/packages/Tethering/tests/unit/src/android/net/util/TetheringUtilsTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.net.util;
-
-import static android.net.TetheringManager.TETHERING_USB;
-import static android.net.TetheringManager.TETHERING_WIFI;
-
-import static junit.framework.Assert.assertFalse;
-import static junit.framework.Assert.assertTrue;
-
-import android.net.LinkAddress;
-import android.net.TetheringRequestParcel;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.testutils.MiscAsserts;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class TetheringUtilsTest {
-    private static final LinkAddress TEST_SERVER_ADDR = new LinkAddress("192.168.43.1/24");
-    private static final LinkAddress TEST_CLIENT_ADDR = new LinkAddress("192.168.43.5/24");
-    private TetheringRequestParcel mTetheringRequest;
-
-    @Before
-    public void setUp() {
-        mTetheringRequest = makeTetheringRequestParcel();
-    }
-
-    public TetheringRequestParcel makeTetheringRequestParcel() {
-        final TetheringRequestParcel request = new TetheringRequestParcel();
-        request.tetheringType = TETHERING_WIFI;
-        request.localIPv4Address = TEST_SERVER_ADDR;
-        request.staticClientAddress = TEST_CLIENT_ADDR;
-        request.exemptFromEntitlementCheck = false;
-        request.showProvisioningUi = true;
-        return request;
-    }
-
-    @Test
-    public void testIsTetheringRequestEquals() throws Exception {
-        TetheringRequestParcel request = makeTetheringRequestParcel();
-
-        assertTrue(TetheringUtils.isTetheringRequestEquals(mTetheringRequest, mTetheringRequest));
-        assertTrue(TetheringUtils.isTetheringRequestEquals(mTetheringRequest, request));
-        assertTrue(TetheringUtils.isTetheringRequestEquals(null, null));
-        assertFalse(TetheringUtils.isTetheringRequestEquals(mTetheringRequest, null));
-        assertFalse(TetheringUtils.isTetheringRequestEquals(null, mTetheringRequest));
-
-        request = makeTetheringRequestParcel();
-        request.tetheringType = TETHERING_USB;
-        assertFalse(TetheringUtils.isTetheringRequestEquals(mTetheringRequest, request));
-
-        request = makeTetheringRequestParcel();
-        request.localIPv4Address = null;
-        request.staticClientAddress = null;
-        assertFalse(TetheringUtils.isTetheringRequestEquals(mTetheringRequest, request));
-
-        request = makeTetheringRequestParcel();
-        request.exemptFromEntitlementCheck = true;
-        assertFalse(TetheringUtils.isTetheringRequestEquals(mTetheringRequest, request));
-
-        request = makeTetheringRequestParcel();
-        request.showProvisioningUi = false;
-        assertFalse(TetheringUtils.isTetheringRequestEquals(mTetheringRequest, request));
-
-        MiscAsserts.assertFieldCountEquals(5, TetheringRequestParcel.class);
-    }
-}
diff --git a/packages/Tethering/tests/unit/src/android/net/util/VersionedBroadcastListenerTest.java b/packages/Tethering/tests/unit/src/android/net/util/VersionedBroadcastListenerTest.java
deleted file mode 100644
index 5a9b6e3..0000000
--- a/packages/Tethering/tests/unit/src/android/net/util/VersionedBroadcastListenerTest.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net.util;
-
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.reset;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.UserHandle;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.internal.util.test.BroadcastInterceptingContext;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class VersionedBroadcastListenerTest {
-    private static final String TAG = VersionedBroadcastListenerTest.class.getSimpleName();
-    private static final String ACTION_TEST = "action.test.happy.broadcasts";
-
-    @Mock private Context mContext;
-    private BroadcastInterceptingContext mServiceContext;
-    private Handler mHandler;
-    private VersionedBroadcastListener mListener;
-    private int mCallbackCount;
-
-    private void doCallback() {
-        mCallbackCount++;
-    }
-
-    private class MockContext extends BroadcastInterceptingContext {
-        MockContext(Context base) {
-            super(base);
-        }
-    }
-
-    @BeforeClass
-    public static void setUpBeforeClass() throws Exception {
-        if (Looper.myLooper() == null) {
-            Looper.prepare();
-        }
-    }
-
-    @Before public void setUp() throws Exception {
-        MockitoAnnotations.initMocks(this);
-        reset(mContext);
-        mServiceContext = new MockContext(mContext);
-        mHandler = new Handler(Looper.myLooper());
-        mCallbackCount = 0;
-        final IntentFilter filter = new IntentFilter();
-        filter.addAction(ACTION_TEST);
-        mListener = new VersionedBroadcastListener(
-                TAG, mServiceContext, mHandler, filter, (Intent intent) -> doCallback());
-    }
-
-    @After public void tearDown() throws Exception {
-        if (mListener != null) {
-            mListener.stopListening();
-            mListener = null;
-        }
-    }
-
-    private void sendBroadcast() {
-        final Intent intent = new Intent(ACTION_TEST);
-        mServiceContext.sendStickyBroadcastAsUser(intent, UserHandle.ALL);
-    }
-
-    @Test
-    public void testBasicListening() {
-        assertEquals(0, mCallbackCount);
-        mListener.startListening();
-        for (int i = 0; i < 5; i++) {
-            sendBroadcast();
-            assertEquals(i + 1, mCallbackCount);
-        }
-        mListener.stopListening();
-    }
-
-    @Test
-    public void testBroadcastsBeforeStartAreIgnored() {
-        assertEquals(0, mCallbackCount);
-        for (int i = 0; i < 5; i++) {
-            sendBroadcast();
-            assertEquals(0, mCallbackCount);
-        }
-
-        mListener.startListening();
-        sendBroadcast();
-        assertEquals(1, mCallbackCount);
-    }
-
-    @Test
-    public void testBroadcastsAfterStopAreIgnored() {
-        mListener.startListening();
-        sendBroadcast();
-        assertEquals(1, mCallbackCount);
-        mListener.stopListening();
-
-        for (int i = 0; i < 5; i++) {
-            sendBroadcast();
-            assertEquals(1, mCallbackCount);
-        }
-    }
-}
diff --git a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/BpfCoordinatorTest.java b/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/BpfCoordinatorTest.java
deleted file mode 100644
index 64242ae..0000000
--- a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/BpfCoordinatorTest.java
+++ /dev/null
@@ -1,607 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.networkstack.tethering;
-
-import static android.net.NetworkStats.DEFAULT_NETWORK_NO;
-import static android.net.NetworkStats.METERED_NO;
-import static android.net.NetworkStats.ROAMING_NO;
-import static android.net.NetworkStats.SET_DEFAULT;
-import static android.net.NetworkStats.TAG_NONE;
-import static android.net.NetworkStats.UID_ALL;
-import static android.net.NetworkStats.UID_TETHERING;
-import static android.net.netstats.provider.NetworkStatsProvider.QUOTA_UNLIMITED;
-
-import static com.android.networkstack.tethering.BpfCoordinator.StatsType;
-import static com.android.networkstack.tethering.BpfCoordinator.StatsType.STATS_PER_IFACE;
-import static com.android.networkstack.tethering.BpfCoordinator.StatsType.STATS_PER_UID;
-import static com.android.networkstack.tethering.TetheringConfiguration.DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Matchers.anyLong;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.argThat;
-import static org.mockito.Mockito.clearInvocations;
-import static org.mockito.Mockito.inOrder;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.app.usage.NetworkStatsManager;
-import android.net.INetd;
-import android.net.InetAddresses;
-import android.net.MacAddress;
-import android.net.NetworkStats;
-import android.net.TetherOffloadRuleParcel;
-import android.net.TetherStatsParcel;
-import android.net.ip.IpServer;
-import android.net.util.SharedLog;
-import android.os.Handler;
-import android.os.test.TestLooper;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.networkstack.tethering.BpfCoordinator.Ipv6ForwardingRule;
-import com.android.testutils.TestableNetworkStatsProviderCbBinder;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.ArgumentMatcher;
-import org.mockito.InOrder;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-import java.net.Inet6Address;
-import java.net.InetAddress;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.LinkedHashMap;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class BpfCoordinatorTest {
-    private static final int DOWNSTREAM_IFINDEX = 10;
-    private static final MacAddress DOWNSTREAM_MAC = MacAddress.ALL_ZEROS_ADDRESS;
-    private static final InetAddress NEIGH_A = InetAddresses.parseNumericAddress("2001:db8::1");
-    private static final InetAddress NEIGH_B = InetAddresses.parseNumericAddress("2001:db8::2");
-    private static final MacAddress MAC_A = MacAddress.fromString("00:00:00:00:00:0a");
-    private static final MacAddress MAC_B = MacAddress.fromString("11:22:33:00:00:0b");
-
-    @Mock private NetworkStatsManager mStatsManager;
-    @Mock private INetd mNetd;
-    @Mock private IpServer mIpServer;
-    @Mock private TetheringConfiguration mTetherConfig;
-
-    // Late init since methods must be called by the thread that created this object.
-    private TestableNetworkStatsProviderCbBinder mTetherStatsProviderCb;
-    private BpfCoordinator.BpfTetherStatsProvider mTetherStatsProvider;
-    private final ArgumentCaptor<ArrayList> mStringArrayCaptor =
-            ArgumentCaptor.forClass(ArrayList.class);
-    private final TestLooper mTestLooper = new TestLooper();
-    private BpfCoordinator.Dependencies mDeps =
-            new BpfCoordinator.Dependencies() {
-            @NonNull
-            public Handler getHandler() {
-                return new Handler(mTestLooper.getLooper());
-            }
-
-            @NonNull
-            public INetd getNetd() {
-                return mNetd;
-            }
-
-            @NonNull
-            public NetworkStatsManager getNetworkStatsManager() {
-                return mStatsManager;
-            }
-
-            @NonNull
-            public SharedLog getSharedLog() {
-                return new SharedLog("test");
-            }
-
-            @Nullable
-            public TetheringConfiguration getTetherConfig() {
-                return mTetherConfig;
-            }
-    };
-
-    @Before public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        when(mTetherConfig.isBpfOffloadEnabled()).thenReturn(true /* default value */);
-    }
-
-    private void waitForIdle() {
-        mTestLooper.dispatchAll();
-    }
-
-    private void setupFunctioningNetdInterface() throws Exception {
-        when(mNetd.tetherOffloadGetStats()).thenReturn(new TetherStatsParcel[0]);
-    }
-
-    @NonNull
-    private BpfCoordinator makeBpfCoordinator() throws Exception {
-        final BpfCoordinator coordinator = new BpfCoordinator(mDeps);
-        final ArgumentCaptor<BpfCoordinator.BpfTetherStatsProvider>
-                tetherStatsProviderCaptor =
-                ArgumentCaptor.forClass(BpfCoordinator.BpfTetherStatsProvider.class);
-        verify(mStatsManager).registerNetworkStatsProvider(anyString(),
-                tetherStatsProviderCaptor.capture());
-        mTetherStatsProvider = tetherStatsProviderCaptor.getValue();
-        assertNotNull(mTetherStatsProvider);
-        mTetherStatsProviderCb = new TestableNetworkStatsProviderCbBinder();
-        mTetherStatsProvider.setProviderCallbackBinder(mTetherStatsProviderCb);
-        return coordinator;
-    }
-
-    @NonNull
-    private static NetworkStats.Entry buildTestEntry(@NonNull StatsType how,
-            @NonNull String iface, long rxBytes, long rxPackets, long txBytes, long txPackets) {
-        return new NetworkStats.Entry(iface, how == STATS_PER_IFACE ? UID_ALL : UID_TETHERING,
-                SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, rxBytes,
-                rxPackets, txBytes, txPackets, 0L);
-    }
-
-    @NonNull
-    private static TetherStatsParcel buildTestTetherStatsParcel(@NonNull Integer ifIndex,
-            long rxBytes, long rxPackets, long txBytes, long txPackets) {
-        final TetherStatsParcel parcel = new TetherStatsParcel();
-        parcel.ifIndex = ifIndex;
-        parcel.rxBytes = rxBytes;
-        parcel.rxPackets = rxPackets;
-        parcel.txBytes = txBytes;
-        parcel.txPackets = txPackets;
-        return parcel;
-    }
-
-    // Set up specific tether stats list and wait for the stats cache is updated by polling thread
-    // in the coordinator. Beware of that it is only used for the default polling interval.
-    private void setTetherOffloadStatsList(TetherStatsParcel[] tetherStatsList) throws Exception {
-        when(mNetd.tetherOffloadGetStats()).thenReturn(tetherStatsList);
-        mTestLooper.moveTimeForward(DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS);
-        waitForIdle();
-    }
-
-    @Test
-    public void testGetForwardedStats() throws Exception {
-        setupFunctioningNetdInterface();
-
-        final BpfCoordinator coordinator = makeBpfCoordinator();
-        coordinator.startPolling();
-
-        final String wlanIface = "wlan0";
-        final Integer wlanIfIndex = 100;
-        final String mobileIface = "rmnet_data0";
-        final Integer mobileIfIndex = 101;
-
-        // Add interface name to lookup table. In realistic case, the upstream interface name will
-        // be added by IpServer when IpServer has received with a new IPv6 upstream update event.
-        coordinator.addUpstreamNameToLookupTable(wlanIfIndex, wlanIface);
-        coordinator.addUpstreamNameToLookupTable(mobileIfIndex, mobileIface);
-
-        // [1] Both interface stats are changed.
-        // Setup the tether stats of wlan and mobile interface. Note that move forward the time of
-        // the looper to make sure the new tether stats has been updated by polling update thread.
-        setTetherOffloadStatsList(new TetherStatsParcel[] {
-                buildTestTetherStatsParcel(wlanIfIndex, 1000, 100, 2000, 200),
-                buildTestTetherStatsParcel(mobileIfIndex, 3000, 300, 4000, 400)});
-
-        final NetworkStats expectedIfaceStats = new NetworkStats(0L, 2)
-                .addEntry(buildTestEntry(STATS_PER_IFACE, wlanIface, 1000, 100, 2000, 200))
-                .addEntry(buildTestEntry(STATS_PER_IFACE, mobileIface, 3000, 300, 4000, 400));
-
-        final NetworkStats expectedUidStats = new NetworkStats(0L, 2)
-                .addEntry(buildTestEntry(STATS_PER_UID, wlanIface, 1000, 100, 2000, 200))
-                .addEntry(buildTestEntry(STATS_PER_UID, mobileIface, 3000, 300, 4000, 400));
-
-        // Force pushing stats update to verify the stats reported.
-        // TODO: Perhaps make #expectNotifyStatsUpdated to use test TetherStatsParcel object for
-        // verifying the notification.
-        mTetherStatsProvider.pushTetherStats();
-        mTetherStatsProviderCb.expectNotifyStatsUpdated(expectedIfaceStats, expectedUidStats);
-
-        // [2] Only one interface stats is changed.
-        // The tether stats of mobile interface is accumulated and The tether stats of wlan
-        // interface is the same.
-        setTetherOffloadStatsList(new TetherStatsParcel[] {
-                buildTestTetherStatsParcel(wlanIfIndex, 1000, 100, 2000, 200),
-                buildTestTetherStatsParcel(mobileIfIndex, 3010, 320, 4030, 440)});
-
-        final NetworkStats expectedIfaceStatsDiff = new NetworkStats(0L, 2)
-                .addEntry(buildTestEntry(STATS_PER_IFACE, wlanIface, 0, 0, 0, 0))
-                .addEntry(buildTestEntry(STATS_PER_IFACE, mobileIface, 10, 20, 30, 40));
-
-        final NetworkStats expectedUidStatsDiff = new NetworkStats(0L, 2)
-                .addEntry(buildTestEntry(STATS_PER_UID, wlanIface, 0, 0, 0, 0))
-                .addEntry(buildTestEntry(STATS_PER_UID, mobileIface, 10, 20, 30, 40));
-
-        // Force pushing stats update to verify that only diff of stats is reported.
-        mTetherStatsProvider.pushTetherStats();
-        mTetherStatsProviderCb.expectNotifyStatsUpdated(expectedIfaceStatsDiff,
-                expectedUidStatsDiff);
-
-        // [3] Stop coordinator.
-        // Shutdown the coordinator and clear the invocation history, especially the
-        // tetherOffloadGetStats() calls.
-        coordinator.stopPolling();
-        clearInvocations(mNetd);
-
-        // Verify the polling update thread stopped.
-        mTestLooper.moveTimeForward(DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS);
-        waitForIdle();
-        verify(mNetd, never()).tetherOffloadGetStats();
-    }
-
-    @Test
-    public void testOnSetAlert() throws Exception {
-        setupFunctioningNetdInterface();
-
-        final BpfCoordinator coordinator = makeBpfCoordinator();
-        coordinator.startPolling();
-
-        final String mobileIface = "rmnet_data0";
-        final Integer mobileIfIndex = 100;
-        coordinator.addUpstreamNameToLookupTable(mobileIfIndex, mobileIface);
-
-        // Verify that set quota to 0 will immediately triggers a callback.
-        mTetherStatsProvider.onSetAlert(0);
-        waitForIdle();
-        mTetherStatsProviderCb.expectNotifyAlertReached();
-
-        // Verify that notifyAlertReached never fired if quota is not yet reached.
-        when(mNetd.tetherOffloadGetStats()).thenReturn(
-                new TetherStatsParcel[] {buildTestTetherStatsParcel(mobileIfIndex, 0, 0, 0, 0)});
-        mTetherStatsProvider.onSetAlert(100);
-        mTestLooper.moveTimeForward(DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS);
-        waitForIdle();
-        mTetherStatsProviderCb.assertNoCallback();
-
-        // Verify that notifyAlertReached fired when quota is reached.
-        when(mNetd.tetherOffloadGetStats()).thenReturn(
-                new TetherStatsParcel[] {buildTestTetherStatsParcel(mobileIfIndex, 50, 0, 50, 0)});
-        mTestLooper.moveTimeForward(DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS);
-        waitForIdle();
-        mTetherStatsProviderCb.expectNotifyAlertReached();
-
-        // Verify that set quota with UNLIMITED won't trigger any callback.
-        mTetherStatsProvider.onSetAlert(QUOTA_UNLIMITED);
-        mTestLooper.moveTimeForward(DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS);
-        waitForIdle();
-        mTetherStatsProviderCb.assertNoCallback();
-    }
-
-    // The custom ArgumentMatcher simply comes from IpServerTest.
-    // TODO: move both of them into a common utility class for reusing the code.
-    private static class TetherOffloadRuleParcelMatcher implements
-            ArgumentMatcher<TetherOffloadRuleParcel> {
-        public final int upstreamIfindex;
-        public final int downstreamIfindex;
-        public final Inet6Address address;
-        public final MacAddress srcMac;
-        public final MacAddress dstMac;
-
-        TetherOffloadRuleParcelMatcher(@NonNull Ipv6ForwardingRule rule) {
-            upstreamIfindex = rule.upstreamIfindex;
-            downstreamIfindex = rule.downstreamIfindex;
-            address = rule.address;
-            srcMac = rule.srcMac;
-            dstMac = rule.dstMac;
-        }
-
-        public boolean matches(@NonNull TetherOffloadRuleParcel parcel) {
-            return upstreamIfindex == parcel.inputInterfaceIndex
-                    && (downstreamIfindex == parcel.outputInterfaceIndex)
-                    && Arrays.equals(address.getAddress(), parcel.destination)
-                    && (128 == parcel.prefixLength)
-                    && Arrays.equals(srcMac.toByteArray(), parcel.srcL2Address)
-                    && Arrays.equals(dstMac.toByteArray(), parcel.dstL2Address);
-        }
-
-        public String toString() {
-            return String.format("TetherOffloadRuleParcelMatcher(%d, %d, %s, %s, %s",
-                    upstreamIfindex, downstreamIfindex, address.getHostAddress(), srcMac, dstMac);
-        }
-    }
-
-    @NonNull
-    private TetherOffloadRuleParcel matches(@NonNull Ipv6ForwardingRule rule) {
-        return argThat(new TetherOffloadRuleParcelMatcher(rule));
-    }
-
-    @NonNull
-    private static Ipv6ForwardingRule buildTestForwardingRule(
-            int upstreamIfindex, @NonNull InetAddress address, @NonNull MacAddress dstMac) {
-        return new Ipv6ForwardingRule(upstreamIfindex, DOWNSTREAM_IFINDEX, (Inet6Address) address,
-                DOWNSTREAM_MAC, dstMac);
-    }
-
-    @Test
-    public void testSetDataLimit() throws Exception {
-        setupFunctioningNetdInterface();
-
-        final BpfCoordinator coordinator = makeBpfCoordinator();
-
-        final String mobileIface = "rmnet_data0";
-        final Integer mobileIfIndex = 100;
-        coordinator.addUpstreamNameToLookupTable(mobileIfIndex, mobileIface);
-
-        // [1] Default limit.
-        // Set the unlimited quota as default if the service has never applied a data limit for a
-        // given upstream. Note that the data limit only be applied on an upstream which has rules.
-        final Ipv6ForwardingRule rule = buildTestForwardingRule(mobileIfIndex, NEIGH_A, MAC_A);
-        final InOrder inOrder = inOrder(mNetd);
-        coordinator.tetherOffloadRuleAdd(mIpServer, rule);
-        inOrder.verify(mNetd).tetherOffloadRuleAdd(matches(rule));
-        inOrder.verify(mNetd).tetherOffloadSetInterfaceQuota(mobileIfIndex, QUOTA_UNLIMITED);
-        inOrder.verifyNoMoreInteractions();
-
-        // [2] Specific limit.
-        // Applying the data limit boundary {min, 1gb, max, infinity} on current upstream.
-        for (final long quota : new long[] {0, 1048576000, Long.MAX_VALUE, QUOTA_UNLIMITED}) {
-            mTetherStatsProvider.onSetLimit(mobileIface, quota);
-            waitForIdle();
-            inOrder.verify(mNetd).tetherOffloadSetInterfaceQuota(mobileIfIndex, quota);
-            inOrder.verifyNoMoreInteractions();
-        }
-
-        // [3] Invalid limit.
-        // The valid range of quota is 0..max_int64 or -1 (unlimited).
-        final long invalidLimit = Long.MIN_VALUE;
-        try {
-            mTetherStatsProvider.onSetLimit(mobileIface, invalidLimit);
-            waitForIdle();
-            fail("No exception thrown for invalid limit " + invalidLimit + ".");
-        } catch (IllegalArgumentException expected) {
-            assertEquals(expected.getMessage(), "invalid quota value " + invalidLimit);
-        }
-    }
-
-    // TODO: Test the case in which the rules are changed from different IpServer objects.
-    @Test
-    public void testSetDataLimitOnRuleChange() throws Exception {
-        setupFunctioningNetdInterface();
-
-        final BpfCoordinator coordinator = makeBpfCoordinator();
-
-        final String mobileIface = "rmnet_data0";
-        final Integer mobileIfIndex = 100;
-        coordinator.addUpstreamNameToLookupTable(mobileIfIndex, mobileIface);
-
-        // Applying a data limit to the current upstream does not take any immediate action.
-        // The data limit could be only set on an upstream which has rules.
-        final long limit = 12345;
-        final InOrder inOrder = inOrder(mNetd);
-        mTetherStatsProvider.onSetLimit(mobileIface, limit);
-        waitForIdle();
-        inOrder.verify(mNetd, never()).tetherOffloadSetInterfaceQuota(anyInt(), anyLong());
-
-        // Adding the first rule on current upstream immediately sends the quota to netd.
-        final Ipv6ForwardingRule ruleA = buildTestForwardingRule(mobileIfIndex, NEIGH_A, MAC_A);
-        coordinator.tetherOffloadRuleAdd(mIpServer, ruleA);
-        inOrder.verify(mNetd).tetherOffloadRuleAdd(matches(ruleA));
-        inOrder.verify(mNetd).tetherOffloadSetInterfaceQuota(mobileIfIndex, limit);
-        inOrder.verifyNoMoreInteractions();
-
-        // Adding the second rule on current upstream does not send the quota to netd.
-        final Ipv6ForwardingRule ruleB = buildTestForwardingRule(mobileIfIndex, NEIGH_B, MAC_B);
-        coordinator.tetherOffloadRuleAdd(mIpServer, ruleB);
-        inOrder.verify(mNetd).tetherOffloadRuleAdd(matches(ruleB));
-        inOrder.verify(mNetd, never()).tetherOffloadSetInterfaceQuota(anyInt(), anyLong());
-
-        // Removing the second rule on current upstream does not send the quota to netd.
-        coordinator.tetherOffloadRuleRemove(mIpServer, ruleB);
-        inOrder.verify(mNetd).tetherOffloadRuleRemove(matches(ruleB));
-        inOrder.verify(mNetd, never()).tetherOffloadSetInterfaceQuota(anyInt(), anyLong());
-
-        // Removing the last rule on current upstream immediately sends the cleanup stuff to netd.
-        when(mNetd.tetherOffloadGetAndClearStats(mobileIfIndex))
-                .thenReturn(buildTestTetherStatsParcel(mobileIfIndex, 0, 0, 0, 0));
-        coordinator.tetherOffloadRuleRemove(mIpServer, ruleA);
-        inOrder.verify(mNetd).tetherOffloadRuleRemove(matches(ruleA));
-        inOrder.verify(mNetd).tetherOffloadGetAndClearStats(mobileIfIndex);
-        inOrder.verifyNoMoreInteractions();
-    }
-
-    @Test
-    public void testTetherOffloadRuleUpdateAndClear() throws Exception {
-        setupFunctioningNetdInterface();
-
-        final BpfCoordinator coordinator = makeBpfCoordinator();
-
-        final String ethIface = "eth1";
-        final String mobileIface = "rmnet_data0";
-        final Integer ethIfIndex = 100;
-        final Integer mobileIfIndex = 101;
-        coordinator.addUpstreamNameToLookupTable(ethIfIndex, ethIface);
-        coordinator.addUpstreamNameToLookupTable(mobileIfIndex, mobileIface);
-
-        final InOrder inOrder = inOrder(mNetd);
-
-        // Before the rule test, here are the additional actions while the rules are changed.
-        // - After adding the first rule on a given upstream, the coordinator adds a data limit.
-        //   If the service has never applied the data limit, set an unlimited quota as default.
-        // - After removing the last rule on a given upstream, the coordinator gets the last stats.
-        //   Then, it clears the stats and the limit entry from BPF maps.
-        // See tetherOffloadRule{Add, Remove, Clear, Clean}.
-
-        // [1] Adding rules on the upstream Ethernet.
-        // Note that the default data limit is applied after the first rule is added.
-        final Ipv6ForwardingRule ethernetRuleA = buildTestForwardingRule(
-                ethIfIndex, NEIGH_A, MAC_A);
-        final Ipv6ForwardingRule ethernetRuleB = buildTestForwardingRule(
-                ethIfIndex, NEIGH_B, MAC_B);
-
-        coordinator.tetherOffloadRuleAdd(mIpServer, ethernetRuleA);
-        inOrder.verify(mNetd).tetherOffloadRuleAdd(matches(ethernetRuleA));
-        inOrder.verify(mNetd).tetherOffloadSetInterfaceQuota(ethIfIndex, QUOTA_UNLIMITED);
-
-        coordinator.tetherOffloadRuleAdd(mIpServer, ethernetRuleB);
-        inOrder.verify(mNetd).tetherOffloadRuleAdd(matches(ethernetRuleB));
-
-        // [2] Update the existing rules from Ethernet to cellular.
-        final Ipv6ForwardingRule mobileRuleA = buildTestForwardingRule(
-                mobileIfIndex, NEIGH_A, MAC_A);
-        final Ipv6ForwardingRule mobileRuleB = buildTestForwardingRule(
-                mobileIfIndex, NEIGH_B, MAC_B);
-        when(mNetd.tetherOffloadGetAndClearStats(ethIfIndex))
-                .thenReturn(buildTestTetherStatsParcel(ethIfIndex, 10, 20, 30, 40));
-
-        // Update the existing rules for upstream changes. The rules are removed and re-added one
-        // by one for updating upstream interface index by #tetherOffloadRuleUpdate.
-        coordinator.tetherOffloadRuleUpdate(mIpServer, mobileIfIndex);
-        inOrder.verify(mNetd).tetherOffloadRuleRemove(matches(ethernetRuleA));
-        inOrder.verify(mNetd).tetherOffloadRuleAdd(matches(mobileRuleA));
-        inOrder.verify(mNetd).tetherOffloadSetInterfaceQuota(mobileIfIndex, QUOTA_UNLIMITED);
-        inOrder.verify(mNetd).tetherOffloadRuleRemove(matches(ethernetRuleB));
-        inOrder.verify(mNetd).tetherOffloadGetAndClearStats(ethIfIndex);
-        inOrder.verify(mNetd).tetherOffloadRuleAdd(matches(mobileRuleB));
-
-        // [3] Clear all rules for a given IpServer.
-        when(mNetd.tetherOffloadGetAndClearStats(mobileIfIndex))
-                .thenReturn(buildTestTetherStatsParcel(mobileIfIndex, 50, 60, 70, 80));
-        coordinator.tetherOffloadRuleClear(mIpServer);
-        inOrder.verify(mNetd).tetherOffloadRuleRemove(matches(mobileRuleA));
-        inOrder.verify(mNetd).tetherOffloadRuleRemove(matches(mobileRuleB));
-        inOrder.verify(mNetd).tetherOffloadGetAndClearStats(mobileIfIndex);
-
-        // [4] Force pushing stats update to verify that the last diff of stats is reported on all
-        // upstreams.
-        mTetherStatsProvider.pushTetherStats();
-        mTetherStatsProviderCb.expectNotifyStatsUpdated(
-                new NetworkStats(0L, 2)
-                .addEntry(buildTestEntry(STATS_PER_IFACE, ethIface, 10, 20, 30, 40))
-                .addEntry(buildTestEntry(STATS_PER_IFACE, mobileIface, 50, 60, 70, 80)),
-                new NetworkStats(0L, 2)
-                .addEntry(buildTestEntry(STATS_PER_UID, ethIface, 10, 20, 30, 40))
-                .addEntry(buildTestEntry(STATS_PER_UID, mobileIface, 50, 60, 70, 80)));
-    }
-
-    @Test
-    public void testTetheringConfigDisable() throws Exception {
-        setupFunctioningNetdInterface();
-        when(mTetherConfig.isBpfOffloadEnabled()).thenReturn(false);
-
-        final BpfCoordinator coordinator = makeBpfCoordinator();
-        coordinator.startPolling();
-
-        // The tether stats polling task should not be scheduled.
-        mTestLooper.moveTimeForward(DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS);
-        waitForIdle();
-        verify(mNetd, never()).tetherOffloadGetStats();
-
-        // The interface name lookup table can't be added.
-        final String iface = "rmnet_data0";
-        final Integer ifIndex = 100;
-        coordinator.addUpstreamNameToLookupTable(ifIndex, iface);
-        assertEquals(0, coordinator.getInterfaceNamesForTesting().size());
-
-        // The rule can't be added.
-        final InetAddress neigh = InetAddresses.parseNumericAddress("2001:db8::1");
-        final MacAddress mac = MacAddress.fromString("00:00:00:00:00:0a");
-        final Ipv6ForwardingRule rule = buildTestForwardingRule(ifIndex, neigh, mac);
-        coordinator.tetherOffloadRuleAdd(mIpServer, rule);
-        verify(mNetd, never()).tetherOffloadRuleAdd(any());
-        LinkedHashMap<Inet6Address, Ipv6ForwardingRule> rules =
-                coordinator.getForwardingRulesForTesting().get(mIpServer);
-        assertNull(rules);
-
-        // The rule can't be removed. This is not a realistic case because adding rule is not
-        // allowed. That implies no rule could be removed, cleared or updated. Verify these
-        // cases just in case.
-        rules = new LinkedHashMap<Inet6Address, Ipv6ForwardingRule>();
-        rules.put(rule.address, rule);
-        coordinator.getForwardingRulesForTesting().put(mIpServer, rules);
-        coordinator.tetherOffloadRuleRemove(mIpServer, rule);
-        verify(mNetd, never()).tetherOffloadRuleRemove(any());
-        rules = coordinator.getForwardingRulesForTesting().get(mIpServer);
-        assertNotNull(rules);
-        assertEquals(1, rules.size());
-
-        // The rule can't be cleared.
-        coordinator.tetherOffloadRuleClear(mIpServer);
-        verify(mNetd, never()).tetherOffloadRuleRemove(any());
-        rules = coordinator.getForwardingRulesForTesting().get(mIpServer);
-        assertNotNull(rules);
-        assertEquals(1, rules.size());
-
-        // The rule can't be updated.
-        coordinator.tetherOffloadRuleUpdate(mIpServer, rule.upstreamIfindex + 1 /* new */);
-        verify(mNetd, never()).tetherOffloadRuleRemove(any());
-        verify(mNetd, never()).tetherOffloadRuleAdd(any());
-        rules = coordinator.getForwardingRulesForTesting().get(mIpServer);
-        assertNotNull(rules);
-        assertEquals(1, rules.size());
-    }
-
-    @Test
-    public void testTetheringConfigSetPollingInterval() throws Exception {
-        setupFunctioningNetdInterface();
-
-        final BpfCoordinator coordinator = makeBpfCoordinator();
-
-        // [1] The default polling interval.
-        coordinator.startPolling();
-        assertEquals(DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS, coordinator.getPollingInterval());
-        coordinator.stopPolling();
-
-        // [2] Expect the invalid polling interval isn't applied. The valid range of interval is
-        // DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS..max_long.
-        for (final int interval
-                : new int[] {0, 100, DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS - 1}) {
-            when(mTetherConfig.getOffloadPollInterval()).thenReturn(interval);
-            coordinator.startPolling();
-            assertEquals(DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS, coordinator.getPollingInterval());
-            coordinator.stopPolling();
-        }
-
-        // [3] Set a specific polling interval which is larger than default value.
-        // Use a large polling interval to avoid flaky test because the time forwarding
-        // approximation is used to verify the scheduled time of the polling thread.
-        final int pollingInterval = 100_000;
-        when(mTetherConfig.getOffloadPollInterval()).thenReturn(pollingInterval);
-        coordinator.startPolling();
-
-        // Expect the specific polling interval to be applied.
-        assertEquals(pollingInterval, coordinator.getPollingInterval());
-
-        // Start on a new polling time slot.
-        mTestLooper.moveTimeForward(pollingInterval);
-        waitForIdle();
-        clearInvocations(mNetd);
-
-        // Move time forward to 90% polling interval time. Expect that the polling thread has not
-        // scheduled yet.
-        mTestLooper.moveTimeForward((long) (pollingInterval * 0.9));
-        waitForIdle();
-        verify(mNetd, never()).tetherOffloadGetStats();
-
-        // Move time forward to the remaining 10% polling interval time. Expect that the polling
-        // thread has scheduled.
-        mTestLooper.moveTimeForward((long) (pollingInterval * 0.1));
-        waitForIdle();
-        verify(mNetd).tetherOffloadGetStats();
-    }
-}
diff --git a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/ConnectedClientsTrackerTest.kt b/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/ConnectedClientsTrackerTest.kt
deleted file mode 100644
index d915354..0000000
--- a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/ConnectedClientsTrackerTest.kt
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.networkstack.tethering
-
-import android.net.LinkAddress
-import android.net.MacAddress
-import android.net.TetheredClient
-import android.net.TetheredClient.AddressInfo
-import android.net.TetheringManager.TETHERING_USB
-import android.net.TetheringManager.TETHERING_WIFI
-import android.net.ip.IpServer
-import android.net.wifi.WifiClient
-import androidx.test.filters.SmallTest
-import androidx.test.runner.AndroidJUnit4
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.mockito.Mockito.doReturn
-import org.mockito.Mockito.mock
-import kotlin.test.assertEquals
-import kotlin.test.assertFalse
-import kotlin.test.assertTrue
-
-@RunWith(AndroidJUnit4::class)
-@SmallTest
-class ConnectedClientsTrackerTest {
-
-    private val server1 = mock(IpServer::class.java)
-    private val server2 = mock(IpServer::class.java)
-    private val servers = listOf(server1, server2)
-
-    private val clock = TestClock(1324L)
-
-    private val client1Addr = MacAddress.fromString("01:23:45:67:89:0A")
-    private val client1 = TetheredClient(client1Addr, listOf(
-            makeAddrInfo("192.168.43.44/32", null /* hostname */, clock.time + 20)),
-            TETHERING_WIFI)
-    private val wifiClient1 = makeWifiClient(client1Addr)
-    private val client2Addr = MacAddress.fromString("02:34:56:78:90:AB")
-    private val client2Exp30AddrInfo = makeAddrInfo(
-            "192.168.43.45/32", "my_hostname", clock.time + 30)
-    private val client2 = TetheredClient(client2Addr, listOf(
-            client2Exp30AddrInfo,
-            makeAddrInfo("2001:db8:12::34/72", "other_hostname", clock.time + 10)),
-            TETHERING_WIFI)
-    private val wifiClient2 = makeWifiClient(client2Addr)
-    private val client3Addr = MacAddress.fromString("03:45:67:89:0A:BC")
-    private val client3 = TetheredClient(client3Addr,
-            listOf(makeAddrInfo("2001:db8:34::34/72", "other_other_hostname", clock.time + 10)),
-            TETHERING_USB)
-
-    private fun makeAddrInfo(addr: String, hostname: String?, expTime: Long) =
-            LinkAddress(addr).let {
-                AddressInfo(LinkAddress(it.address, it.prefixLength, it.flags, it.scope,
-                        expTime /* deprecationTime */, expTime /* expirationTime */), hostname)
-            }
-
-    @Test
-    fun testUpdateConnectedClients() {
-        doReturn(emptyList<TetheredClient>()).`when`(server1).allLeases
-        doReturn(emptyList<TetheredClient>()).`when`(server2).allLeases
-
-        val tracker = ConnectedClientsTracker(clock)
-        assertFalse(tracker.updateConnectedClients(servers, null))
-
-        // Obtain a lease for client 1
-        doReturn(listOf(client1)).`when`(server1).allLeases
-        assertSameClients(listOf(client1), assertNewClients(tracker, servers, listOf(wifiClient1)))
-
-        // Client 2 L2-connected, no lease yet
-        val client2WithoutAddr = TetheredClient(client2Addr, emptyList(), TETHERING_WIFI)
-        assertSameClients(listOf(client1, client2WithoutAddr),
-                assertNewClients(tracker, servers, listOf(wifiClient1, wifiClient2)))
-
-        // Client 2 lease obtained
-        doReturn(listOf(client1, client2)).`when`(server1).allLeases
-        assertSameClients(listOf(client1, client2), assertNewClients(tracker, servers, null))
-
-        // Client 3 lease obtained
-        doReturn(listOf(client3)).`when`(server2).allLeases
-        assertSameClients(listOf(client1, client2, client3),
-                assertNewClients(tracker, servers, null))
-
-        // Client 2 L2-disconnected
-        assertSameClients(listOf(client1, client3),
-                assertNewClients(tracker, servers, listOf(wifiClient1)))
-
-        // Client 1 L2-disconnected
-        assertSameClients(listOf(client3), assertNewClients(tracker, servers, emptyList()))
-
-        // Client 1 comes back
-        assertSameClients(listOf(client1, client3),
-                assertNewClients(tracker, servers, listOf(wifiClient1)))
-
-        // Leases lost, client 1 still L2-connected
-        doReturn(emptyList<TetheredClient>()).`when`(server1).allLeases
-        doReturn(emptyList<TetheredClient>()).`when`(server2).allLeases
-        assertSameClients(listOf(TetheredClient(client1Addr, emptyList(), TETHERING_WIFI)),
-                assertNewClients(tracker, servers, null))
-    }
-
-    @Test
-    fun testUpdateConnectedClients_LeaseExpiration() {
-        val tracker = ConnectedClientsTracker(clock)
-        doReturn(listOf(client1, client2)).`when`(server1).allLeases
-        doReturn(listOf(client3)).`when`(server2).allLeases
-        assertSameClients(listOf(client1, client2, client3), assertNewClients(
-                tracker, servers, listOf(wifiClient1, wifiClient2)))
-
-        clock.time += 20
-        // Client 3 has no remaining lease: removed
-        val expectedClients = listOf(
-                // Client 1 has no remaining lease but is L2-connected
-                TetheredClient(client1Addr, emptyList(), TETHERING_WIFI),
-                // Client 2 has some expired leases
-                TetheredClient(
-                        client2Addr,
-                        // Only the "t + 30" address is left, the "t + 10" address expired
-                        listOf(client2Exp30AddrInfo),
-                        TETHERING_WIFI))
-        assertSameClients(expectedClients, assertNewClients(tracker, servers, null))
-    }
-
-    private fun assertNewClients(
-        tracker: ConnectedClientsTracker,
-        ipServers: Iterable<IpServer>,
-        wifiClients: List<WifiClient>?
-    ): List<TetheredClient> {
-        assertTrue(tracker.updateConnectedClients(ipServers, wifiClients))
-        return tracker.lastTetheredClients
-    }
-
-    private fun assertSameClients(expected: List<TetheredClient>, actual: List<TetheredClient>) {
-        val expectedSet = HashSet(expected)
-        assertEquals(expected.size, expectedSet.size)
-        assertEquals(expectedSet, HashSet(actual))
-    }
-
-    private fun makeWifiClient(macAddr: MacAddress): WifiClient {
-        // Use a mock WifiClient as the constructor is not part of the WiFi module exported API.
-        return mock(WifiClient::class.java).apply { doReturn(macAddr).`when`(this).macAddress }
-    }
-
-    private class TestClock(var time: Long) : ConnectedClientsTracker.Clock() {
-        override fun elapsedRealtime(): Long {
-            return time
-        }
-    }
-}
diff --git a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/EntitlementManagerTest.java b/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/EntitlementManagerTest.java
deleted file mode 100644
index 354e753..0000000
--- a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/EntitlementManagerTest.java
+++ /dev/null
@@ -1,623 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.networkstack.tethering;
-
-import static android.net.TetheringConstants.EXTRA_ADD_TETHER_TYPE;
-import static android.net.TetheringConstants.EXTRA_PROVISION_CALLBACK;
-import static android.net.TetheringConstants.EXTRA_RUN_PROVISION;
-import static android.net.TetheringConstants.EXTRA_TETHER_PROVISIONING_RESPONSE;
-import static android.net.TetheringConstants.EXTRA_TETHER_SILENT_PROVISIONING_ACTION;
-import static android.net.TetheringConstants.EXTRA_TETHER_SUBID;
-import static android.net.TetheringConstants.EXTRA_TETHER_UI_PROVISIONING_APP_NAME;
-import static android.net.TetheringManager.TETHERING_BLUETOOTH;
-import static android.net.TetheringManager.TETHERING_ETHERNET;
-import static android.net.TetheringManager.TETHERING_INVALID;
-import static android.net.TetheringManager.TETHERING_USB;
-import static android.net.TetheringManager.TETHERING_WIFI;
-import static android.net.TetheringManager.TETHERING_WIFI_P2P;
-import static android.net.TetheringManager.TETHER_ERROR_ENTITLEMENT_UNKNOWN;
-import static android.net.TetheringManager.TETHER_ERROR_NO_ERROR;
-import static android.net.TetheringManager.TETHER_ERROR_PROVISIONING_FAILED;
-import static android.provider.DeviceConfig.NAMESPACE_CONNECTIVITY;
-import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
-
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.anyBoolean;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.inOrder;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.res.Resources;
-import android.net.util.SharedLog;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.PersistableBundle;
-import android.os.ResultReceiver;
-import android.os.SystemProperties;
-import android.os.test.TestLooper;
-import android.provider.DeviceConfig;
-import android.provider.Settings;
-import android.telephony.CarrierConfigManager;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.internal.util.test.BroadcastInterceptingContext;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.InOrder;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.mockito.MockitoSession;
-import org.mockito.quality.Strictness;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public final class EntitlementManagerTest {
-
-    private static final String[] PROVISIONING_APP_NAME = {"some", "app"};
-    private static final String PROVISIONING_NO_UI_APP_NAME = "no_ui_app";
-    private static final String PROVISIONING_APP_RESPONSE = "app_response";
-
-    @Mock private CarrierConfigManager mCarrierConfigManager;
-    @Mock private Context mContext;
-    @Mock private Resources mResources;
-    @Mock private SharedLog mLog;
-    @Mock private EntitlementManager.OnUiEntitlementFailedListener mEntitlementFailedListener;
-
-    // Like so many Android system APIs, these cannot be mocked because it is marked final.
-    // We have to use the real versions.
-    private final PersistableBundle mCarrierConfig = new PersistableBundle();
-    private final TestLooper mLooper = new TestLooper();
-    private Context mMockContext;
-    private Runnable mPermissionChangeCallback;
-
-    private WrappedEntitlementManager mEnMgr;
-    private TetheringConfiguration mConfig;
-    private MockitoSession mMockingSession;
-
-    private class MockContext extends BroadcastInterceptingContext {
-        MockContext(Context base) {
-            super(base);
-        }
-
-        @Override
-        public Resources getResources() {
-            return mResources;
-        }
-    }
-
-    public class WrappedEntitlementManager extends EntitlementManager {
-        public int fakeEntitlementResult = TETHER_ERROR_ENTITLEMENT_UNKNOWN;
-        public int uiProvisionCount = 0;
-        public int silentProvisionCount = 0;
-
-        public WrappedEntitlementManager(Context ctx, Handler h, SharedLog log,
-                Runnable callback) {
-            super(ctx, h, log, callback);
-        }
-
-        public void reset() {
-            fakeEntitlementResult = TETHER_ERROR_ENTITLEMENT_UNKNOWN;
-            uiProvisionCount = 0;
-            silentProvisionCount = 0;
-        }
-
-        @Override
-        protected Intent runUiTetherProvisioning(int type,
-                final TetheringConfiguration config, final ResultReceiver receiver) {
-            Intent intent = super.runUiTetherProvisioning(type, config, receiver);
-            assertUiTetherProvisioningIntent(type, config, receiver, intent);
-            uiProvisionCount++;
-            receiver.send(fakeEntitlementResult, null);
-            return intent;
-        }
-
-        private void assertUiTetherProvisioningIntent(int type, final TetheringConfiguration config,
-                final ResultReceiver receiver, final Intent intent) {
-            assertEquals(Settings.ACTION_TETHER_PROVISIONING_UI, intent.getAction());
-            assertEquals(type, intent.getIntExtra(EXTRA_ADD_TETHER_TYPE, TETHERING_INVALID));
-            final String[] appName = intent.getStringArrayExtra(
-                    EXTRA_TETHER_UI_PROVISIONING_APP_NAME);
-            assertEquals(PROVISIONING_APP_NAME.length, appName.length);
-            for (int i = 0; i < PROVISIONING_APP_NAME.length; i++) {
-                assertEquals(PROVISIONING_APP_NAME[i], appName[i]);
-            }
-            assertEquals(receiver, intent.getParcelableExtra(EXTRA_PROVISION_CALLBACK));
-            assertEquals(config.activeDataSubId,
-                    intent.getIntExtra(EXTRA_TETHER_SUBID, INVALID_SUBSCRIPTION_ID));
-        }
-
-        @Override
-        protected Intent runSilentTetherProvisioning(int type,
-                final TetheringConfiguration config) {
-            Intent intent = super.runSilentTetherProvisioning(type, config);
-            assertSilentTetherProvisioning(type, config, intent);
-            silentProvisionCount++;
-            addDownstreamMapping(type, fakeEntitlementResult);
-            return intent;
-        }
-
-        private void assertSilentTetherProvisioning(int type, final TetheringConfiguration config,
-                final Intent intent) {
-            assertEquals(type, intent.getIntExtra(EXTRA_ADD_TETHER_TYPE, TETHERING_INVALID));
-            assertEquals(true, intent.getBooleanExtra(EXTRA_RUN_PROVISION, false));
-            assertEquals(PROVISIONING_NO_UI_APP_NAME,
-                    intent.getStringExtra(EXTRA_TETHER_SILENT_PROVISIONING_ACTION));
-            assertEquals(PROVISIONING_APP_RESPONSE,
-                    intent.getStringExtra(EXTRA_TETHER_PROVISIONING_RESPONSE));
-            assertTrue(intent.hasExtra(EXTRA_PROVISION_CALLBACK));
-            assertEquals(config.activeDataSubId,
-                    intent.getIntExtra(EXTRA_TETHER_SUBID, INVALID_SUBSCRIPTION_ID));
-        }
-    }
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mMockingSession = mockitoSession()
-                .initMocks(this)
-                .mockStatic(SystemProperties.class)
-                .mockStatic(DeviceConfig.class)
-                .strictness(Strictness.WARN)
-                .startMocking();
-        // Don't disable tethering provisioning unless requested.
-        doReturn(false).when(
-                () -> SystemProperties.getBoolean(
-                eq(EntitlementManager.DISABLE_PROVISIONING_SYSPROP_KEY), anyBoolean()));
-        doReturn(null).when(
-                () -> DeviceConfig.getProperty(eq(NAMESPACE_CONNECTIVITY), anyString()));
-
-        when(mResources.getStringArray(R.array.config_tether_dhcp_range))
-                .thenReturn(new String[0]);
-        when(mResources.getStringArray(R.array.config_tether_usb_regexs))
-                .thenReturn(new String[0]);
-        when(mResources.getStringArray(R.array.config_tether_wifi_regexs))
-                .thenReturn(new String[0]);
-        when(mResources.getStringArray(R.array.config_tether_bluetooth_regexs))
-                .thenReturn(new String[0]);
-        when(mResources.getIntArray(R.array.config_tether_upstream_types))
-                .thenReturn(new int[0]);
-        when(mResources.getBoolean(R.bool.config_tether_enable_legacy_dhcp_server)).thenReturn(
-                false);
-        when(mResources.getString(R.string.config_wifi_tether_enable)).thenReturn("");
-        when(mLog.forSubComponent(anyString())).thenReturn(mLog);
-
-        mMockContext = new MockContext(mContext);
-        mPermissionChangeCallback = spy(() -> { });
-        mEnMgr = new WrappedEntitlementManager(mMockContext, new Handler(mLooper.getLooper()), mLog,
-                mPermissionChangeCallback);
-        mEnMgr.setOnUiEntitlementFailedListener(mEntitlementFailedListener);
-        mConfig = new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
-        mEnMgr.setTetheringConfigurationFetcher(() -> {
-            return mConfig;
-        });
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        mMockingSession.finishMocking();
-    }
-
-    private void setupForRequiredProvisioning() {
-        // Produce some acceptable looking provision app setting if requested.
-        when(mResources.getStringArray(R.array.config_mobile_hotspot_provision_app))
-                .thenReturn(PROVISIONING_APP_NAME);
-        when(mResources.getString(R.string.config_mobile_hotspot_provision_app_no_ui))
-                .thenReturn(PROVISIONING_NO_UI_APP_NAME);
-        when(mResources.getString(R.string.config_mobile_hotspot_provision_response)).thenReturn(
-                PROVISIONING_APP_RESPONSE);
-        // Act like the CarrierConfigManager is present and ready unless told otherwise.
-        when(mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE))
-                .thenReturn(mCarrierConfigManager);
-        when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(mCarrierConfig);
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_REQUIRE_ENTITLEMENT_CHECKS_BOOL, true);
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_CARRIER_CONFIG_APPLIED_BOOL, true);
-        mConfig = new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
-    }
-
-    @Test
-    public void canRequireProvisioning() {
-        setupForRequiredProvisioning();
-        assertTrue(mEnMgr.isTetherProvisioningRequired(mConfig));
-    }
-
-    @Test
-    public void toleratesCarrierConfigManagerMissing() {
-        setupForRequiredProvisioning();
-        when(mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE))
-            .thenReturn(null);
-        mConfig = new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
-        // Couldn't get the CarrierConfigManager, but still had a declared provisioning app.
-        // Therefore provisioning still be required.
-        assertTrue(mEnMgr.isTetherProvisioningRequired(mConfig));
-    }
-
-    @Test
-    public void toleratesCarrierConfigMissing() {
-        setupForRequiredProvisioning();
-        when(mCarrierConfigManager.getConfig()).thenReturn(null);
-        mConfig = new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
-        // We still have a provisioning app configured, so still require provisioning.
-        assertTrue(mEnMgr.isTetherProvisioningRequired(mConfig));
-    }
-
-    @Test
-    public void toleratesCarrierConfigNotLoaded() {
-        setupForRequiredProvisioning();
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_CARRIER_CONFIG_APPLIED_BOOL, false);
-        // We still have a provisioning app configured, so still require provisioning.
-        assertTrue(mEnMgr.isTetherProvisioningRequired(mConfig));
-    }
-
-    @Test
-    public void provisioningNotRequiredWhenAppNotFound() {
-        setupForRequiredProvisioning();
-        when(mResources.getStringArray(R.array.config_mobile_hotspot_provision_app))
-            .thenReturn(null);
-        mConfig = new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
-        assertFalse(mEnMgr.isTetherProvisioningRequired(mConfig));
-        when(mResources.getStringArray(R.array.config_mobile_hotspot_provision_app))
-            .thenReturn(new String[] {"malformedApp"});
-        mConfig = new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
-        assertFalse(mEnMgr.isTetherProvisioningRequired(mConfig));
-    }
-
-    @Test
-    public void testRequestLastEntitlementCacheValue() throws Exception {
-        // 1. Entitlement check is not required.
-        mEnMgr.fakeEntitlementResult = TETHER_ERROR_NO_ERROR;
-        ResultReceiver receiver = new ResultReceiver(null) {
-            @Override
-            protected void onReceiveResult(int resultCode, Bundle resultData) {
-                assertEquals(TETHER_ERROR_NO_ERROR, resultCode);
-            }
-        };
-        mEnMgr.requestLatestTetheringEntitlementResult(TETHERING_WIFI, receiver, true);
-        mLooper.dispatchAll();
-        assertEquals(0, mEnMgr.uiProvisionCount);
-        mEnMgr.reset();
-
-        setupForRequiredProvisioning();
-        // 2. No cache value and don't need to run entitlement check.
-        receiver = new ResultReceiver(null) {
-            @Override
-            protected void onReceiveResult(int resultCode, Bundle resultData) {
-                assertEquals(TETHER_ERROR_ENTITLEMENT_UNKNOWN, resultCode);
-            }
-        };
-        mEnMgr.requestLatestTetheringEntitlementResult(TETHERING_WIFI, receiver, false);
-        mLooper.dispatchAll();
-        assertEquals(0, mEnMgr.uiProvisionCount);
-        mEnMgr.reset();
-        // 3. No cache value and ui entitlement check is needed.
-        mEnMgr.fakeEntitlementResult = TETHER_ERROR_PROVISIONING_FAILED;
-        receiver = new ResultReceiver(null) {
-            @Override
-            protected void onReceiveResult(int resultCode, Bundle resultData) {
-                assertEquals(TETHER_ERROR_PROVISIONING_FAILED, resultCode);
-            }
-        };
-        mEnMgr.requestLatestTetheringEntitlementResult(TETHERING_WIFI, receiver, true);
-        mLooper.dispatchAll();
-        assertEquals(1, mEnMgr.uiProvisionCount);
-        mEnMgr.reset();
-        // 4. Cache value is TETHER_ERROR_PROVISIONING_FAILED and don't need to run entitlement
-        // check.
-        mEnMgr.fakeEntitlementResult = TETHER_ERROR_NO_ERROR;
-        receiver = new ResultReceiver(null) {
-            @Override
-            protected void onReceiveResult(int resultCode, Bundle resultData) {
-                assertEquals(TETHER_ERROR_PROVISIONING_FAILED, resultCode);
-            }
-        };
-        mEnMgr.requestLatestTetheringEntitlementResult(TETHERING_WIFI, receiver, false);
-        mLooper.dispatchAll();
-        assertEquals(0, mEnMgr.uiProvisionCount);
-        mEnMgr.reset();
-        // 5. Cache value is TETHER_ERROR_PROVISIONING_FAILED and ui entitlement check is needed.
-        mEnMgr.fakeEntitlementResult = TETHER_ERROR_NO_ERROR;
-        receiver = new ResultReceiver(null) {
-            @Override
-            protected void onReceiveResult(int resultCode, Bundle resultData) {
-                assertEquals(TETHER_ERROR_NO_ERROR, resultCode);
-            }
-        };
-        mEnMgr.requestLatestTetheringEntitlementResult(TETHERING_WIFI, receiver, true);
-        mLooper.dispatchAll();
-        assertEquals(1, mEnMgr.uiProvisionCount);
-        mEnMgr.reset();
-        // 6. Cache value is TETHER_ERROR_NO_ERROR.
-        mEnMgr.fakeEntitlementResult = TETHER_ERROR_NO_ERROR;
-        receiver = new ResultReceiver(null) {
-            @Override
-            protected void onReceiveResult(int resultCode, Bundle resultData) {
-                assertEquals(TETHER_ERROR_NO_ERROR, resultCode);
-            }
-        };
-        mEnMgr.requestLatestTetheringEntitlementResult(TETHERING_WIFI, receiver, true);
-        mLooper.dispatchAll();
-        assertEquals(0, mEnMgr.uiProvisionCount);
-        mEnMgr.reset();
-        // 7. Test get value for other downstream type.
-        receiver = new ResultReceiver(null) {
-            @Override
-            protected void onReceiveResult(int resultCode, Bundle resultData) {
-                assertEquals(TETHER_ERROR_ENTITLEMENT_UNKNOWN, resultCode);
-            }
-        };
-        mEnMgr.requestLatestTetheringEntitlementResult(TETHERING_USB, receiver, false);
-        mLooper.dispatchAll();
-        assertEquals(0, mEnMgr.uiProvisionCount);
-        mEnMgr.reset();
-        // 8. Test get value for invalid downstream type.
-        mEnMgr.fakeEntitlementResult = TETHER_ERROR_NO_ERROR;
-        receiver = new ResultReceiver(null) {
-            @Override
-            protected void onReceiveResult(int resultCode, Bundle resultData) {
-                assertEquals(TETHER_ERROR_ENTITLEMENT_UNKNOWN, resultCode);
-            }
-        };
-        mEnMgr.requestLatestTetheringEntitlementResult(TETHERING_WIFI_P2P, receiver, true);
-        mLooper.dispatchAll();
-        assertEquals(0, mEnMgr.uiProvisionCount);
-        mEnMgr.reset();
-    }
-
-    private void assertPermissionChangeCallback(InOrder inOrder) {
-        inOrder.verify(mPermissionChangeCallback, times(1)).run();
-    }
-
-    private void assertNoPermissionChange(InOrder inOrder) {
-        inOrder.verifyNoMoreInteractions();
-    }
-
-    @Test
-    public void verifyPermissionResult() {
-        final InOrder inOrder = inOrder(mPermissionChangeCallback);
-        setupForRequiredProvisioning();
-        mEnMgr.notifyUpstream(true);
-        mEnMgr.fakeEntitlementResult = TETHER_ERROR_PROVISIONING_FAILED;
-        mEnMgr.startProvisioningIfNeeded(TETHERING_WIFI, true);
-        mLooper.dispatchAll();
-        // Permitted: true -> false
-        assertPermissionChangeCallback(inOrder);
-        assertFalse(mEnMgr.isCellularUpstreamPermitted());
-
-        mEnMgr.stopProvisioningIfNeeded(TETHERING_WIFI);
-        mLooper.dispatchAll();
-        // Permitted: false -> false
-        assertNoPermissionChange(inOrder);
-
-        mEnMgr.fakeEntitlementResult = TETHER_ERROR_NO_ERROR;
-        mEnMgr.startProvisioningIfNeeded(TETHERING_WIFI, true);
-        mLooper.dispatchAll();
-        // Permitted: false -> true
-        assertPermissionChangeCallback(inOrder);
-        assertTrue(mEnMgr.isCellularUpstreamPermitted());
-    }
-
-    @Test
-    public void verifyPermissionIfAllNotApproved() {
-        final InOrder inOrder = inOrder(mPermissionChangeCallback);
-        setupForRequiredProvisioning();
-        mEnMgr.notifyUpstream(true);
-        mEnMgr.fakeEntitlementResult = TETHER_ERROR_PROVISIONING_FAILED;
-        mEnMgr.startProvisioningIfNeeded(TETHERING_WIFI, true);
-        mLooper.dispatchAll();
-        // Permitted: true -> false
-        assertPermissionChangeCallback(inOrder);
-        assertFalse(mEnMgr.isCellularUpstreamPermitted());
-
-        mEnMgr.fakeEntitlementResult = TETHER_ERROR_PROVISIONING_FAILED;
-        mEnMgr.startProvisioningIfNeeded(TETHERING_USB, true);
-        mLooper.dispatchAll();
-        // Permitted: false -> false
-        assertNoPermissionChange(inOrder);
-        assertFalse(mEnMgr.isCellularUpstreamPermitted());
-
-        mEnMgr.fakeEntitlementResult = TETHER_ERROR_PROVISIONING_FAILED;
-        mEnMgr.startProvisioningIfNeeded(TETHERING_BLUETOOTH, true);
-        mLooper.dispatchAll();
-        // Permitted: false -> false
-        assertNoPermissionChange(inOrder);
-        assertFalse(mEnMgr.isCellularUpstreamPermitted());
-    }
-
-    @Test
-    public void verifyPermissionIfAnyApproved() {
-        final InOrder inOrder = inOrder(mPermissionChangeCallback);
-        setupForRequiredProvisioning();
-        mEnMgr.notifyUpstream(true);
-        mEnMgr.fakeEntitlementResult = TETHER_ERROR_NO_ERROR;
-        mEnMgr.startProvisioningIfNeeded(TETHERING_WIFI, true);
-        mLooper.dispatchAll();
-        // Permitted: true -> true
-        assertNoPermissionChange(inOrder);
-        assertTrue(mEnMgr.isCellularUpstreamPermitted());
-
-        mEnMgr.fakeEntitlementResult = TETHER_ERROR_PROVISIONING_FAILED;
-        mEnMgr.startProvisioningIfNeeded(TETHERING_USB, true);
-        mLooper.dispatchAll();
-        // Permitted: true -> true
-        assertNoPermissionChange(inOrder);
-        assertTrue(mEnMgr.isCellularUpstreamPermitted());
-
-        mEnMgr.stopProvisioningIfNeeded(TETHERING_WIFI);
-        mLooper.dispatchAll();
-        // Permitted: true -> false
-        assertPermissionChangeCallback(inOrder);
-        assertFalse(mEnMgr.isCellularUpstreamPermitted());
-    }
-
-    @Test
-    public void verifyPermissionWhenProvisioningNotStarted() {
-        final InOrder inOrder = inOrder(mPermissionChangeCallback);
-        assertTrue(mEnMgr.isCellularUpstreamPermitted());
-        assertNoPermissionChange(inOrder);
-        setupForRequiredProvisioning();
-        assertFalse(mEnMgr.isCellularUpstreamPermitted());
-        assertNoPermissionChange(inOrder);
-    }
-
-    @Test
-    public void testRunTetherProvisioning() {
-        final InOrder inOrder = inOrder(mPermissionChangeCallback);
-        setupForRequiredProvisioning();
-        // 1. start ui provisioning, upstream is mobile
-        mEnMgr.fakeEntitlementResult = TETHER_ERROR_NO_ERROR;
-        mEnMgr.notifyUpstream(true);
-        mLooper.dispatchAll();
-        mEnMgr.startProvisioningIfNeeded(TETHERING_USB, true);
-        mLooper.dispatchAll();
-        assertEquals(1, mEnMgr.uiProvisionCount);
-        assertEquals(0, mEnMgr.silentProvisionCount);
-        // Permitted: true -> true
-        assertNoPermissionChange(inOrder);
-        assertTrue(mEnMgr.isCellularUpstreamPermitted());
-        mEnMgr.reset();
-
-        // 2. start no-ui provisioning
-        mEnMgr.fakeEntitlementResult = TETHER_ERROR_NO_ERROR;
-        mEnMgr.startProvisioningIfNeeded(TETHERING_WIFI, false);
-        mLooper.dispatchAll();
-        assertEquals(0, mEnMgr.uiProvisionCount);
-        assertEquals(1, mEnMgr.silentProvisionCount);
-        // Permitted: true -> true
-        assertNoPermissionChange(inOrder);
-        assertTrue(mEnMgr.isCellularUpstreamPermitted());
-        mEnMgr.reset();
-
-        // 3. tear down mobile, then start ui provisioning
-        mEnMgr.notifyUpstream(false);
-        mLooper.dispatchAll();
-        mEnMgr.startProvisioningIfNeeded(TETHERING_BLUETOOTH, true);
-        mLooper.dispatchAll();
-        assertEquals(0, mEnMgr.uiProvisionCount);
-        assertEquals(0, mEnMgr.silentProvisionCount);
-        assertNoPermissionChange(inOrder);
-        mEnMgr.reset();
-
-        // 4. switch upstream back to mobile
-        mEnMgr.fakeEntitlementResult = TETHER_ERROR_NO_ERROR;
-        mEnMgr.notifyUpstream(true);
-        mLooper.dispatchAll();
-        assertEquals(1, mEnMgr.uiProvisionCount);
-        assertEquals(0, mEnMgr.silentProvisionCount);
-        // Permitted: true -> true
-        assertNoPermissionChange(inOrder);
-        assertTrue(mEnMgr.isCellularUpstreamPermitted());
-        mEnMgr.reset();
-
-        // 5. tear down mobile, then switch SIM
-        mEnMgr.notifyUpstream(false);
-        mLooper.dispatchAll();
-        mEnMgr.reevaluateSimCardProvisioning(mConfig);
-        assertEquals(0, mEnMgr.uiProvisionCount);
-        assertEquals(0, mEnMgr.silentProvisionCount);
-        assertNoPermissionChange(inOrder);
-        mEnMgr.reset();
-
-        // 6. switch upstream back to mobile again
-        mEnMgr.fakeEntitlementResult = TETHER_ERROR_PROVISIONING_FAILED;
-        mEnMgr.notifyUpstream(true);
-        mLooper.dispatchAll();
-        assertEquals(0, mEnMgr.uiProvisionCount);
-        assertEquals(3, mEnMgr.silentProvisionCount);
-        // Permitted: true -> false
-        assertPermissionChangeCallback(inOrder);
-        assertFalse(mEnMgr.isCellularUpstreamPermitted());
-        mEnMgr.reset();
-
-        // 7. start ui provisioning, upstream is mobile, downstream is ethernet
-        mEnMgr.fakeEntitlementResult = TETHER_ERROR_NO_ERROR;
-        mEnMgr.startProvisioningIfNeeded(TETHERING_ETHERNET, true);
-        mLooper.dispatchAll();
-        assertEquals(1, mEnMgr.uiProvisionCount);
-        assertEquals(0, mEnMgr.silentProvisionCount);
-        // Permitted: false -> true
-        assertPermissionChangeCallback(inOrder);
-        assertTrue(mEnMgr.isCellularUpstreamPermitted());
-        mEnMgr.reset();
-
-        // 8. downstream is invalid
-        mEnMgr.fakeEntitlementResult = TETHER_ERROR_NO_ERROR;
-        mEnMgr.startProvisioningIfNeeded(TETHERING_WIFI_P2P, true);
-        mLooper.dispatchAll();
-        assertEquals(0, mEnMgr.uiProvisionCount);
-        assertEquals(0, mEnMgr.silentProvisionCount);
-        assertNoPermissionChange(inOrder);
-        mEnMgr.reset();
-    }
-
-    @Test
-    public void testCallStopTetheringWhenUiProvisioningFail() {
-        setupForRequiredProvisioning();
-        verify(mEntitlementFailedListener, times(0)).onUiEntitlementFailed(TETHERING_WIFI);
-        mEnMgr.fakeEntitlementResult = TETHER_ERROR_PROVISIONING_FAILED;
-        mEnMgr.notifyUpstream(true);
-        mLooper.dispatchAll();
-        mEnMgr.startProvisioningIfNeeded(TETHERING_WIFI, true);
-        mLooper.dispatchAll();
-        assertEquals(1, mEnMgr.uiProvisionCount);
-        verify(mEntitlementFailedListener, times(1)).onUiEntitlementFailed(TETHERING_WIFI);
-    }
-
-    @Test
-    public void testsetExemptedDownstreamType() throws Exception {
-        setupForRequiredProvisioning();
-        // Cellular upstream is not permitted when no entitlement result.
-        assertFalse(mEnMgr.isCellularUpstreamPermitted());
-
-        // If there is exempted downstream and no other non-exempted downstreams, cellular is
-        // permitted.
-        mEnMgr.setExemptedDownstreamType(TETHERING_WIFI);
-        assertTrue(mEnMgr.isCellularUpstreamPermitted());
-
-        // If second downstream run entitlement check fail, cellular upstream is not permitted.
-        mEnMgr.fakeEntitlementResult = TETHER_ERROR_PROVISIONING_FAILED;
-        mEnMgr.notifyUpstream(true);
-        mLooper.dispatchAll();
-        mEnMgr.startProvisioningIfNeeded(TETHERING_USB, true);
-        mLooper.dispatchAll();
-        assertFalse(mEnMgr.isCellularUpstreamPermitted());
-
-        // When second downstream is down, exempted downstream can use cellular upstream.
-        assertEquals(1, mEnMgr.uiProvisionCount);
-        verify(mEntitlementFailedListener).onUiEntitlementFailed(TETHERING_USB);
-        mEnMgr.stopProvisioningIfNeeded(TETHERING_USB);
-        assertTrue(mEnMgr.isCellularUpstreamPermitted());
-
-        mEnMgr.stopProvisioningIfNeeded(TETHERING_WIFI);
-        assertFalse(mEnMgr.isCellularUpstreamPermitted());
-    }
-}
diff --git a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/IPv6TetheringCoordinatorTest.java b/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/IPv6TetheringCoordinatorTest.java
deleted file mode 100644
index f2b5314..0000000
--- a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/IPv6TetheringCoordinatorTest.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.networkstack.tethering;
-
-import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
-import static android.net.RouteInfo.RTN_UNICAST;
-import static android.net.ip.IpServer.STATE_LOCAL_ONLY;
-import static android.net.ip.IpServer.STATE_TETHERED;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.reset;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.when;
-
-import android.net.InetAddresses;
-import android.net.IpPrefix;
-import android.net.LinkAddress;
-import android.net.LinkProperties;
-import android.net.Network;
-import android.net.NetworkCapabilities;
-import android.net.RouteInfo;
-import android.net.ip.IpServer;
-import android.net.util.SharedLog;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-import java.net.InetAddress;
-import java.util.ArrayList;
-import java.util.List;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class IPv6TetheringCoordinatorTest {
-    private static final String TEST_DNS_SERVER = "2001:4860:4860::8888";
-    private static final String TEST_INTERFACE = "test_rmnet0";
-    private static final String TEST_IPV6_ADDRESS = "2001:db8::1/64";
-    private static final String TEST_IPV4_ADDRESS = "192.168.100.1/24";
-
-    private IPv6TetheringCoordinator mIPv6TetheringCoordinator;
-    private ArrayList<IpServer> mNotifyList;
-
-    @Mock private SharedLog mSharedLog;
-
-    @Before
-    public void setUp() throws Exception {
-        MockitoAnnotations.initMocks(this);
-        when(mSharedLog.forSubComponent(anyString())).thenReturn(mSharedLog);
-        mNotifyList = new ArrayList<IpServer>();
-        mIPv6TetheringCoordinator = new IPv6TetheringCoordinator(mNotifyList, mSharedLog);
-    }
-
-    private UpstreamNetworkState createDualStackUpstream(final int transportType) {
-        final Network network = mock(Network.class);
-        final NetworkCapabilities netCap =
-                new NetworkCapabilities.Builder().addTransportType(transportType).build();
-        final InetAddress dns = InetAddresses.parseNumericAddress(TEST_DNS_SERVER);
-        final LinkProperties linkProp = new LinkProperties();
-        linkProp.setInterfaceName(TEST_INTERFACE);
-        linkProp.addLinkAddress(new LinkAddress(TEST_IPV6_ADDRESS));
-        linkProp.addLinkAddress(new LinkAddress(TEST_IPV4_ADDRESS));
-        linkProp.addRoute(new RouteInfo(new IpPrefix("::/0"), null, TEST_INTERFACE, RTN_UNICAST));
-        linkProp.addRoute(new RouteInfo(new IpPrefix("0.0.0.0/0"), null, TEST_INTERFACE,
-                    RTN_UNICAST));
-        linkProp.addDnsServer(dns);
-        return new UpstreamNetworkState(linkProp, netCap, network);
-    }
-
-    private void assertOnlyOneV6AddressAndNoV4(LinkProperties lp) {
-        assertEquals(lp.getInterfaceName(), TEST_INTERFACE);
-        assertFalse(lp.hasIpv4Address());
-        final List<LinkAddress> addresses = lp.getLinkAddresses();
-        assertEquals(addresses.size(), 1);
-        final LinkAddress v6Address = addresses.get(0);
-        assertEquals(v6Address, new LinkAddress(TEST_IPV6_ADDRESS));
-    }
-
-    @Test
-    public void testUpdateIpv6Upstream() throws Exception {
-        // 1. Add first IpServer.
-        final IpServer firstServer = mock(IpServer.class);
-        mNotifyList.add(firstServer);
-        mIPv6TetheringCoordinator.addActiveDownstream(firstServer, STATE_TETHERED);
-        verify(firstServer).sendMessage(IpServer.CMD_IPV6_TETHER_UPDATE, 0, 0, null);
-        verifyNoMoreInteractions(firstServer);
-
-        // 2. Add second IpServer and it would not have ipv6 tethering.
-        final IpServer secondServer = mock(IpServer.class);
-        mNotifyList.add(secondServer);
-        mIPv6TetheringCoordinator.addActiveDownstream(secondServer, STATE_LOCAL_ONLY);
-        verifyNoMoreInteractions(secondServer);
-        reset(firstServer, secondServer);
-
-        // 3. No upstream.
-        mIPv6TetheringCoordinator.updateUpstreamNetworkState(null);
-        verify(secondServer).sendMessage(IpServer.CMD_IPV6_TETHER_UPDATE, 0, 0, null);
-        reset(firstServer, secondServer);
-
-        // 4. Update ipv6 mobile upstream.
-        final UpstreamNetworkState mobileUpstream = createDualStackUpstream(TRANSPORT_CELLULAR);
-        final ArgumentCaptor<LinkProperties> lp = ArgumentCaptor.forClass(LinkProperties.class);
-        mIPv6TetheringCoordinator.updateUpstreamNetworkState(mobileUpstream);
-        verify(firstServer).sendMessage(eq(IpServer.CMD_IPV6_TETHER_UPDATE), eq(-1), eq(0),
-                lp.capture());
-        final LinkProperties v6OnlyLink = lp.getValue();
-        assertOnlyOneV6AddressAndNoV4(v6OnlyLink);
-        verifyNoMoreInteractions(firstServer);
-        verifyNoMoreInteractions(secondServer);
-        reset(firstServer, secondServer);
-
-        // 5. Remove first IpServer.
-        mNotifyList.remove(firstServer);
-        mIPv6TetheringCoordinator.removeActiveDownstream(firstServer);
-        verify(firstServer).sendMessage(IpServer.CMD_IPV6_TETHER_UPDATE, 0, 0, null);
-        verify(secondServer).sendMessage(eq(IpServer.CMD_IPV6_TETHER_UPDATE), eq(-1), eq(0),
-                lp.capture());
-        final LinkProperties localOnlyLink = lp.getValue();
-        assertNotNull(localOnlyLink);
-        assertNotEquals(localOnlyLink, v6OnlyLink);
-        reset(firstServer, secondServer);
-
-        // 6. Remove second IpServer.
-        mNotifyList.remove(secondServer);
-        mIPv6TetheringCoordinator.removeActiveDownstream(secondServer);
-        verifyNoMoreInteractions(firstServer);
-        verify(secondServer).sendMessage(IpServer.CMD_IPV6_TETHER_UPDATE, 0, 0, null);
-    }
-}
diff --git a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/MockTetheringService.java b/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/MockTetheringService.java
deleted file mode 100644
index 071a290e..0000000
--- a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/MockTetheringService.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.networkstack.tethering;
-
-import static android.Manifest.permission.WRITE_SETTINGS;
-import static android.content.pm.PackageManager.PERMISSION_GRANTED;
-
-import static org.mockito.Mockito.mock;
-
-import android.content.Context;
-import android.content.Intent;
-import android.net.ITetheringConnector;
-import android.os.Binder;
-import android.os.IBinder;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-public class MockTetheringService extends TetheringService {
-    private final Tethering mTethering = mock(Tethering.class);
-
-    @Override
-    public IBinder onBind(Intent intent) {
-        return new MockTetheringConnector(super.onBind(intent));
-    }
-
-    @Override
-    public Tethering makeTethering(TetheringDependencies deps) {
-        return mTethering;
-    }
-
-    @Override
-    boolean checkAndNoteWriteSettingsOperation(@NonNull Context context, int uid,
-            @NonNull String callingPackage, @Nullable String callingAttributionTag,
-            boolean throwException) {
-        // Test this does not verify the calling package / UID, as calling package could be shell
-        // and not match the UID.
-        return context.checkCallingOrSelfPermission(WRITE_SETTINGS) == PERMISSION_GRANTED;
-    }
-
-    public Tethering getTethering() {
-        return mTethering;
-    }
-
-    public class MockTetheringConnector extends Binder {
-        final IBinder mBase;
-        MockTetheringConnector(IBinder base) {
-            mBase = base;
-        }
-
-        public ITetheringConnector getTetheringConnector() {
-            return ITetheringConnector.Stub.asInterface(mBase);
-        }
-
-        public MockTetheringService getService() {
-            return MockTetheringService.this;
-        }
-    }
-}
diff --git a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/OffloadControllerTest.java b/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/OffloadControllerTest.java
deleted file mode 100644
index ce52ae2..0000000
--- a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/OffloadControllerTest.java
+++ /dev/null
@@ -1,827 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.networkstack.tethering;
-
-import static android.net.NetworkStats.DEFAULT_NETWORK_NO;
-import static android.net.NetworkStats.METERED_NO;
-import static android.net.NetworkStats.ROAMING_NO;
-import static android.net.NetworkStats.SET_DEFAULT;
-import static android.net.NetworkStats.TAG_NONE;
-import static android.net.NetworkStats.UID_ALL;
-import static android.net.NetworkStats.UID_TETHERING;
-import static android.net.RouteInfo.RTN_UNICAST;
-import static android.provider.Settings.Global.TETHER_OFFLOAD_DISABLED;
-
-import static com.android.networkstack.tethering.OffloadController.StatsType.STATS_PER_IFACE;
-import static com.android.networkstack.tethering.OffloadController.StatsType.STATS_PER_UID;
-import static com.android.networkstack.tethering.OffloadHardwareInterface.ForwardedStats;
-import static com.android.networkstack.tethering.TetheringConfiguration.DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS;
-import static com.android.testutils.MiscAsserts.assertContainsAll;
-import static com.android.testutils.MiscAsserts.assertThrows;
-import static com.android.testutils.NetworkStatsUtilsKt.assertNetworkStatsEquals;
-
-import static junit.framework.Assert.assertNotNull;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyLong;
-import static org.mockito.Matchers.anyObject;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.clearInvocations;
-import static org.mockito.Mockito.inOrder;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.reset;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.when;
-
-import android.annotation.NonNull;
-import android.app.usage.NetworkStatsManager;
-import android.content.Context;
-import android.content.pm.ApplicationInfo;
-import android.net.ITetheringStatsProvider;
-import android.net.IpPrefix;
-import android.net.LinkAddress;
-import android.net.LinkProperties;
-import android.net.NetworkStats;
-import android.net.NetworkStats.Entry;
-import android.net.RouteInfo;
-import android.net.netstats.provider.NetworkStatsProvider;
-import android.net.util.SharedLog;
-import android.os.Handler;
-import android.os.test.TestLooper;
-import android.provider.Settings;
-import android.provider.Settings.SettingNotFoundException;
-import android.test.mock.MockContentResolver;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.internal.util.test.FakeSettingsProvider;
-import com.android.testutils.TestableNetworkStatsProviderCbBinder;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.InOrder;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-import java.net.InetAddress;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Set;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class OffloadControllerTest {
-    private static final String RNDIS0 = "test_rndis0";
-    private static final String RMNET0 = "test_rmnet_data0";
-    private static final String WLAN0 = "test_wlan0";
-
-    private static final String IPV6_LINKLOCAL = "fe80::/64";
-    private static final String IPV6_DOC_PREFIX = "2001:db8::/64";
-    private static final String IPV6_DISCARD_PREFIX = "100::/64";
-    private static final String USB_PREFIX = "192.168.42.0/24";
-    private static final String WIFI_PREFIX = "192.168.43.0/24";
-    private static final long WAIT_FOR_IDLE_TIMEOUT = 2 * 1000;
-
-    @Mock private OffloadHardwareInterface mHardware;
-    @Mock private ApplicationInfo mApplicationInfo;
-    @Mock private Context mContext;
-    @Mock private NetworkStatsManager mStatsManager;
-    @Mock private TetheringConfiguration mTetherConfig;
-    // Late init since methods must be called by the thread that created this object.
-    private TestableNetworkStatsProviderCbBinder mTetherStatsProviderCb;
-    private OffloadController.OffloadTetheringStatsProvider mTetherStatsProvider;
-    private final ArgumentCaptor<ArrayList> mStringArrayCaptor =
-            ArgumentCaptor.forClass(ArrayList.class);
-    private final ArgumentCaptor<OffloadHardwareInterface.ControlCallback> mControlCallbackCaptor =
-            ArgumentCaptor.forClass(OffloadHardwareInterface.ControlCallback.class);
-    private MockContentResolver mContentResolver;
-    private final TestLooper mTestLooper = new TestLooper();
-    private OffloadController.Dependencies mDeps = new OffloadController.Dependencies() {
-        @Override
-        public TetheringConfiguration getTetherConfig() {
-            return mTetherConfig;
-        }
-    };
-
-    @Before public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        when(mContext.getApplicationInfo()).thenReturn(mApplicationInfo);
-        when(mContext.getPackageName()).thenReturn("OffloadControllerTest");
-        mContentResolver = new MockContentResolver(mContext);
-        mContentResolver.addProvider(Settings.AUTHORITY, new FakeSettingsProvider());
-        when(mContext.getContentResolver()).thenReturn(mContentResolver);
-        FakeSettingsProvider.clearSettingsProvider();
-        when(mTetherConfig.getOffloadPollInterval()).thenReturn(-1); // Disabled.
-    }
-
-    @After public void tearDown() throws Exception {
-        FakeSettingsProvider.clearSettingsProvider();
-    }
-
-    private void setupFunctioningHardwareInterface() {
-        when(mHardware.initOffloadConfig()).thenReturn(true);
-        when(mHardware.initOffloadControl(mControlCallbackCaptor.capture()))
-                .thenReturn(true);
-        when(mHardware.setUpstreamParameters(anyString(), any(), any(), any())).thenReturn(true);
-        when(mHardware.getForwardedStats(any())).thenReturn(new ForwardedStats());
-        when(mHardware.setDataLimit(anyString(), anyLong())).thenReturn(true);
-    }
-
-    private void enableOffload() {
-        Settings.Global.putInt(mContentResolver, TETHER_OFFLOAD_DISABLED, 0);
-    }
-
-    private void setOffloadPollInterval(int interval) {
-        when(mTetherConfig.getOffloadPollInterval()).thenReturn(interval);
-    }
-
-    private void waitForIdle() {
-        mTestLooper.dispatchAll();
-    }
-
-    private OffloadController makeOffloadController() throws Exception {
-        OffloadController offload = new OffloadController(new Handler(mTestLooper.getLooper()),
-                mHardware, mContentResolver, mStatsManager, new SharedLog("test"), mDeps);
-        final ArgumentCaptor<OffloadController.OffloadTetheringStatsProvider>
-                tetherStatsProviderCaptor =
-                ArgumentCaptor.forClass(OffloadController.OffloadTetheringStatsProvider.class);
-        verify(mStatsManager).registerNetworkStatsProvider(anyString(),
-                tetherStatsProviderCaptor.capture());
-        mTetherStatsProvider = tetherStatsProviderCaptor.getValue();
-        assertNotNull(mTetherStatsProvider);
-        mTetherStatsProviderCb = new TestableNetworkStatsProviderCbBinder();
-        mTetherStatsProvider.setProviderCallbackBinder(mTetherStatsProviderCb);
-        return offload;
-    }
-
-    @Test
-    public void testNoSettingsValueDefaultDisabledDoesNotStart() throws Exception {
-        setupFunctioningHardwareInterface();
-        when(mHardware.getDefaultTetherOffloadDisabled()).thenReturn(1);
-        assertThrows(SettingNotFoundException.class, () ->
-                Settings.Global.getInt(mContentResolver, TETHER_OFFLOAD_DISABLED));
-
-        final OffloadController offload = makeOffloadController();
-        offload.start();
-
-        final InOrder inOrder = inOrder(mHardware);
-        inOrder.verify(mHardware, times(1)).getDefaultTetherOffloadDisabled();
-        inOrder.verify(mHardware, never()).initOffloadConfig();
-        inOrder.verify(mHardware, never()).initOffloadControl(
-                any(OffloadHardwareInterface.ControlCallback.class));
-        inOrder.verifyNoMoreInteractions();
-    }
-
-    @Test
-    public void testNoSettingsValueDefaultEnabledDoesStart() throws Exception {
-        setupFunctioningHardwareInterface();
-        when(mHardware.getDefaultTetherOffloadDisabled()).thenReturn(0);
-        assertThrows(SettingNotFoundException.class, () ->
-                Settings.Global.getInt(mContentResolver, TETHER_OFFLOAD_DISABLED));
-
-        final OffloadController offload = makeOffloadController();
-        offload.start();
-
-        final InOrder inOrder = inOrder(mHardware);
-        inOrder.verify(mHardware, times(1)).getDefaultTetherOffloadDisabled();
-        inOrder.verify(mHardware, times(1)).initOffloadConfig();
-        inOrder.verify(mHardware, times(1)).initOffloadControl(
-                any(OffloadHardwareInterface.ControlCallback.class));
-        inOrder.verifyNoMoreInteractions();
-    }
-
-    @Test
-    public void testSettingsAllowsStart() throws Exception {
-        setupFunctioningHardwareInterface();
-        Settings.Global.putInt(mContentResolver, TETHER_OFFLOAD_DISABLED, 0);
-
-        final OffloadController offload = makeOffloadController();
-        offload.start();
-
-        final InOrder inOrder = inOrder(mHardware);
-        inOrder.verify(mHardware, times(1)).getDefaultTetherOffloadDisabled();
-        inOrder.verify(mHardware, times(1)).initOffloadConfig();
-        inOrder.verify(mHardware, times(1)).initOffloadControl(
-                any(OffloadHardwareInterface.ControlCallback.class));
-        inOrder.verifyNoMoreInteractions();
-    }
-
-    @Test
-    public void testSettingsDisablesStart() throws Exception {
-        setupFunctioningHardwareInterface();
-        Settings.Global.putInt(mContentResolver, TETHER_OFFLOAD_DISABLED, 1);
-
-        final OffloadController offload = makeOffloadController();
-        offload.start();
-
-        final InOrder inOrder = inOrder(mHardware);
-        inOrder.verify(mHardware, times(1)).getDefaultTetherOffloadDisabled();
-        inOrder.verify(mHardware, never()).initOffloadConfig();
-        inOrder.verify(mHardware, never()).initOffloadControl(anyObject());
-        inOrder.verifyNoMoreInteractions();
-    }
-
-    @Test
-    public void testSetUpstreamLinkPropertiesWorking() throws Exception {
-        setupFunctioningHardwareInterface();
-        enableOffload();
-
-        final OffloadController offload = makeOffloadController();
-        offload.start();
-
-        final InOrder inOrder = inOrder(mHardware);
-        inOrder.verify(mHardware, times(1)).getDefaultTetherOffloadDisabled();
-        inOrder.verify(mHardware, times(1)).initOffloadConfig();
-        inOrder.verify(mHardware, times(1)).initOffloadControl(
-                any(OffloadHardwareInterface.ControlCallback.class));
-        inOrder.verifyNoMoreInteractions();
-
-        // In reality, the UpstreamNetworkMonitor would have passed down to us
-        // a covering set of local prefixes representing a minimum essential
-        // set plus all the prefixes on networks with network agents.
-        //
-        // We simulate that there, and then add upstream elements one by one
-        // and watch what happens.
-        final Set<IpPrefix> minimumLocalPrefixes = new HashSet<>();
-        for (String s : new String[]{
-                "127.0.0.0/8", "192.0.2.0/24", "fe80::/64", "2001:db8::/64"}) {
-            minimumLocalPrefixes.add(new IpPrefix(s));
-        }
-        offload.setLocalPrefixes(minimumLocalPrefixes);
-        inOrder.verify(mHardware, times(1)).setLocalPrefixes(mStringArrayCaptor.capture());
-        ArrayList<String> localPrefixes = mStringArrayCaptor.getValue();
-        assertEquals(4, localPrefixes.size());
-        assertContainsAll(localPrefixes,
-                "127.0.0.0/8", "192.0.2.0/24", "fe80::/64", "2001:db8::/64");
-        inOrder.verifyNoMoreInteractions();
-
-        offload.setUpstreamLinkProperties(null);
-        // No change in local addresses means no call to setLocalPrefixes().
-        inOrder.verify(mHardware, never()).setLocalPrefixes(mStringArrayCaptor.capture());
-        // This LinkProperties value does not differ from the default upstream.
-        // There should be no extraneous call to setUpstreamParameters().
-        inOrder.verify(mHardware, never()).setUpstreamParameters(
-                anyObject(), anyObject(), anyObject(), anyObject());
-        inOrder.verifyNoMoreInteractions();
-
-        final LinkProperties lp = new LinkProperties();
-
-        final String testIfName = "rmnet_data17";
-        lp.setInterfaceName(testIfName);
-        offload.setUpstreamLinkProperties(lp);
-        // No change in local addresses means no call to setLocalPrefixes().
-        inOrder.verify(mHardware, never()).setLocalPrefixes(mStringArrayCaptor.capture());
-        inOrder.verify(mHardware, times(1)).setUpstreamParameters(
-                eq(testIfName), eq(null), eq(null), eq(null));
-        inOrder.verify(mHardware, times(1)).setDataLimit(eq(testIfName), eq(Long.MAX_VALUE));
-        inOrder.verifyNoMoreInteractions();
-
-        final String ipv4Addr = "192.0.2.5";
-        final String linkAddr = ipv4Addr + "/24";
-        lp.addLinkAddress(new LinkAddress(linkAddr));
-        lp.addRoute(new RouteInfo(new IpPrefix("192.0.2.0/24"), null, null, RTN_UNICAST));
-        offload.setUpstreamLinkProperties(lp);
-        // IPv4 prefixes and addresses on the upstream are simply left as whole
-        // prefixes (already passed in from UpstreamNetworkMonitor code). If a
-        // tethering client sends traffic to the IPv4 default router or other
-        // clients on the upstream this will not be hardware-forwarded, and that
-        // should be fine for now. Ergo: no change in local addresses, no call
-        // to setLocalPrefixes().
-        inOrder.verify(mHardware, never()).setLocalPrefixes(mStringArrayCaptor.capture());
-        inOrder.verify(mHardware, times(1)).setUpstreamParameters(
-                eq(testIfName), eq(ipv4Addr), eq(null), eq(null));
-        inOrder.verify(mHardware, times(1)).getForwardedStats(eq(testIfName));
-        inOrder.verify(mHardware, times(1)).setDataLimit(eq(testIfName), eq(Long.MAX_VALUE));
-        inOrder.verifyNoMoreInteractions();
-
-        final String ipv4Gateway = "192.0.2.1";
-        lp.addRoute(new RouteInfo(null, InetAddress.getByName(ipv4Gateway), null, RTN_UNICAST));
-        offload.setUpstreamLinkProperties(lp);
-        // No change in local addresses means no call to setLocalPrefixes().
-        inOrder.verify(mHardware, never()).setLocalPrefixes(mStringArrayCaptor.capture());
-        inOrder.verify(mHardware, times(1)).setUpstreamParameters(
-                eq(testIfName), eq(ipv4Addr), eq(ipv4Gateway), eq(null));
-        inOrder.verify(mHardware, times(1)).getForwardedStats(eq(testIfName));
-        inOrder.verify(mHardware, times(1)).setDataLimit(eq(testIfName), eq(Long.MAX_VALUE));
-        inOrder.verifyNoMoreInteractions();
-
-        final String ipv6Gw1 = "fe80::cafe";
-        lp.addRoute(new RouteInfo(null, InetAddress.getByName(ipv6Gw1), null, RTN_UNICAST));
-        offload.setUpstreamLinkProperties(lp);
-        // No change in local addresses means no call to setLocalPrefixes().
-        inOrder.verify(mHardware, never()).setLocalPrefixes(mStringArrayCaptor.capture());
-        inOrder.verify(mHardware, times(1)).setUpstreamParameters(
-                eq(testIfName), eq(ipv4Addr), eq(ipv4Gateway), mStringArrayCaptor.capture());
-        inOrder.verify(mHardware, times(1)).getForwardedStats(eq(testIfName));
-        ArrayList<String> v6gws = mStringArrayCaptor.getValue();
-        assertEquals(1, v6gws.size());
-        assertTrue(v6gws.contains(ipv6Gw1));
-        inOrder.verify(mHardware, times(1)).setDataLimit(eq(testIfName), eq(Long.MAX_VALUE));
-        inOrder.verifyNoMoreInteractions();
-
-        final String ipv6Gw2 = "fe80::d00d";
-        lp.addRoute(new RouteInfo(null, InetAddress.getByName(ipv6Gw2), null, RTN_UNICAST));
-        offload.setUpstreamLinkProperties(lp);
-        // No change in local addresses means no call to setLocalPrefixes().
-        inOrder.verify(mHardware, never()).setLocalPrefixes(mStringArrayCaptor.capture());
-        inOrder.verify(mHardware, times(1)).setUpstreamParameters(
-                eq(testIfName), eq(ipv4Addr), eq(ipv4Gateway), mStringArrayCaptor.capture());
-        inOrder.verify(mHardware, times(1)).getForwardedStats(eq(testIfName));
-        v6gws = mStringArrayCaptor.getValue();
-        assertEquals(2, v6gws.size());
-        assertTrue(v6gws.contains(ipv6Gw1));
-        assertTrue(v6gws.contains(ipv6Gw2));
-        inOrder.verify(mHardware, times(1)).setDataLimit(eq(testIfName), eq(Long.MAX_VALUE));
-        inOrder.verifyNoMoreInteractions();
-
-        final LinkProperties stacked = new LinkProperties();
-        stacked.setInterfaceName("stacked");
-        stacked.addLinkAddress(new LinkAddress("192.0.2.129/25"));
-        stacked.addRoute(new RouteInfo(null, InetAddress.getByName("192.0.2.254"), null,
-                RTN_UNICAST));
-        stacked.addRoute(new RouteInfo(null, InetAddress.getByName("fe80::bad:f00"), null,
-                RTN_UNICAST));
-        assertTrue(lp.addStackedLink(stacked));
-        offload.setUpstreamLinkProperties(lp);
-        // No change in local addresses means no call to setLocalPrefixes().
-        inOrder.verify(mHardware, never()).setLocalPrefixes(mStringArrayCaptor.capture());
-        inOrder.verify(mHardware, times(1)).setUpstreamParameters(
-                eq(testIfName), eq(ipv4Addr), eq(ipv4Gateway), mStringArrayCaptor.capture());
-        inOrder.verify(mHardware, times(1)).getForwardedStats(eq(testIfName));
-        v6gws = mStringArrayCaptor.getValue();
-        assertEquals(2, v6gws.size());
-        assertTrue(v6gws.contains(ipv6Gw1));
-        assertTrue(v6gws.contains(ipv6Gw2));
-        inOrder.verify(mHardware, times(1)).setDataLimit(eq(testIfName), eq(Long.MAX_VALUE));
-        inOrder.verifyNoMoreInteractions();
-
-        // Add in some IPv6 upstream info. When there is a tethered downstream
-        // making use of the IPv6 prefix we would expect to see the /64 route
-        // removed from "local prefixes" and /128s added for the upstream IPv6
-        // addresses.  This is not yet implemented, and for now we simply
-        // expect to see these /128s.
-        lp.addRoute(new RouteInfo(new IpPrefix("2001:db8::/64"), null, null, RTN_UNICAST));
-        // "2001:db8::/64" plus "assigned" ASCII in hex
-        lp.addLinkAddress(new LinkAddress("2001:db8::6173:7369:676e:6564/64"));
-        // "2001:db8::/64" plus "random" ASCII in hex
-        lp.addLinkAddress(new LinkAddress("2001:db8::7261:6e64:6f6d/64"));
-        offload.setUpstreamLinkProperties(lp);
-        inOrder.verify(mHardware, times(1)).setLocalPrefixes(mStringArrayCaptor.capture());
-        localPrefixes = mStringArrayCaptor.getValue();
-        assertEquals(6, localPrefixes.size());
-        assertContainsAll(localPrefixes,
-                "127.0.0.0/8", "192.0.2.0/24", "fe80::/64", "2001:db8::/64",
-                "2001:db8::6173:7369:676e:6564/128", "2001:db8::7261:6e64:6f6d/128");
-        // The relevant parts of the LinkProperties have not changed, but at the
-        // moment we do not de-dup upstream LinkProperties this carefully.
-        inOrder.verify(mHardware, times(1)).setUpstreamParameters(
-                eq(testIfName), eq(ipv4Addr), eq(ipv4Gateway), mStringArrayCaptor.capture());
-        v6gws = mStringArrayCaptor.getValue();
-        assertEquals(2, v6gws.size());
-        assertTrue(v6gws.contains(ipv6Gw1));
-        assertTrue(v6gws.contains(ipv6Gw2));
-        inOrder.verify(mHardware, times(1)).getForwardedStats(eq(testIfName));
-        inOrder.verify(mHardware, times(1)).setDataLimit(eq(testIfName), eq(Long.MAX_VALUE));
-        inOrder.verifyNoMoreInteractions();
-
-        // Completely identical LinkProperties updates are de-duped.
-        offload.setUpstreamLinkProperties(lp);
-        // This LinkProperties value does not differ from the default upstream.
-        // There should be no extraneous call to setUpstreamParameters().
-        inOrder.verify(mHardware, never()).setUpstreamParameters(
-                anyObject(), anyObject(), anyObject(), anyObject());
-        inOrder.verifyNoMoreInteractions();
-    }
-
-    private static @NonNull Entry buildTestEntry(@NonNull OffloadController.StatsType how,
-            @NonNull String iface, long rxBytes, long txBytes) {
-        return new Entry(iface, how == STATS_PER_IFACE ? UID_ALL : UID_TETHERING, SET_DEFAULT,
-                TAG_NONE, METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, rxBytes, 0L,
-                txBytes, 0L, 0L);
-    }
-
-    @Test
-    public void testGetForwardedStats() throws Exception {
-        setupFunctioningHardwareInterface();
-        enableOffload();
-
-        final OffloadController offload = makeOffloadController();
-        offload.start();
-
-        final String ethernetIface = "eth1";
-        final String mobileIface = "rmnet_data0";
-
-        when(mHardware.getForwardedStats(eq(ethernetIface))).thenReturn(
-                new ForwardedStats(12345, 54321));
-        when(mHardware.getForwardedStats(eq(mobileIface))).thenReturn(
-                new ForwardedStats(999, 99999));
-
-        InOrder inOrder = inOrder(mHardware);
-
-        final LinkProperties lp = new LinkProperties();
-        lp.setInterfaceName(ethernetIface);
-        offload.setUpstreamLinkProperties(lp);
-        // Previous upstream was null, so no stats are fetched.
-        inOrder.verify(mHardware, never()).getForwardedStats(any());
-
-        lp.setInterfaceName(mobileIface);
-        offload.setUpstreamLinkProperties(lp);
-        // Expect that we fetch stats from the previous upstream.
-        inOrder.verify(mHardware, times(1)).getForwardedStats(eq(ethernetIface));
-
-        lp.setInterfaceName(ethernetIface);
-        offload.setUpstreamLinkProperties(lp);
-        // Expect that we fetch stats from the previous upstream.
-        inOrder.verify(mHardware, times(1)).getForwardedStats(eq(mobileIface));
-
-        // Verify that the fetched stats are stored.
-        final NetworkStats ifaceStats = mTetherStatsProvider.getTetherStats(STATS_PER_IFACE);
-        final NetworkStats uidStats = mTetherStatsProvider.getTetherStats(STATS_PER_UID);
-        final NetworkStats expectedIfaceStats = new NetworkStats(0L, 2)
-                .addEntry(buildTestEntry(STATS_PER_IFACE, mobileIface, 999, 99999))
-                .addEntry(buildTestEntry(STATS_PER_IFACE, ethernetIface, 12345, 54321));
-
-        final NetworkStats expectedUidStats = new NetworkStats(0L, 2)
-                .addEntry(buildTestEntry(STATS_PER_UID, mobileIface, 999, 99999))
-                .addEntry(buildTestEntry(STATS_PER_UID, ethernetIface, 12345, 54321));
-
-        assertNetworkStatsEquals(expectedIfaceStats, ifaceStats);
-        assertNetworkStatsEquals(expectedUidStats, uidStats);
-
-        // Force pushing stats update to verify the stats reported.
-        mTetherStatsProvider.pushTetherStats();
-        mTetherStatsProviderCb.expectNotifyStatsUpdated(expectedIfaceStats, expectedUidStats);
-
-        when(mHardware.getForwardedStats(eq(ethernetIface))).thenReturn(
-                new ForwardedStats(100000, 100000));
-        offload.setUpstreamLinkProperties(null);
-        // Expect that we first clear the HAL's upstream parameters.
-        inOrder.verify(mHardware, times(1)).setUpstreamParameters(
-                eq(""), eq("0.0.0.0"), eq("0.0.0.0"), eq(null));
-        // Expect that we fetch stats from the previous upstream.
-        inOrder.verify(mHardware, times(1)).getForwardedStats(eq(ethernetIface));
-
-        // There is no current upstream, so no stats are fetched.
-        inOrder.verify(mHardware, never()).getForwardedStats(any());
-        inOrder.verifyNoMoreInteractions();
-
-        // Verify that the stored stats is accumulated.
-        final NetworkStats ifaceStatsAccu = mTetherStatsProvider.getTetherStats(STATS_PER_IFACE);
-        final NetworkStats uidStatsAccu = mTetherStatsProvider.getTetherStats(STATS_PER_UID);
-        final NetworkStats expectedIfaceStatsAccu = new NetworkStats(0L, 2)
-                .addEntry(buildTestEntry(STATS_PER_IFACE, mobileIface, 999, 99999))
-                .addEntry(buildTestEntry(STATS_PER_IFACE, ethernetIface, 112345, 154321));
-
-        final NetworkStats expectedUidStatsAccu = new NetworkStats(0L, 2)
-                .addEntry(buildTestEntry(STATS_PER_UID, mobileIface, 999, 99999))
-                .addEntry(buildTestEntry(STATS_PER_UID, ethernetIface, 112345, 154321));
-
-        assertNetworkStatsEquals(expectedIfaceStatsAccu, ifaceStatsAccu);
-        assertNetworkStatsEquals(expectedUidStatsAccu, uidStatsAccu);
-
-        // Verify that only diff of stats is reported.
-        mTetherStatsProvider.pushTetherStats();
-        final NetworkStats expectedIfaceStatsDiff = new NetworkStats(0L, 2)
-                .addEntry(buildTestEntry(STATS_PER_IFACE, mobileIface, 0, 0))
-                .addEntry(buildTestEntry(STATS_PER_IFACE, ethernetIface, 100000, 100000));
-
-        final NetworkStats expectedUidStatsDiff = new NetworkStats(0L, 2)
-                .addEntry(buildTestEntry(STATS_PER_UID, mobileIface, 0, 0))
-                .addEntry(buildTestEntry(STATS_PER_UID, ethernetIface, 100000, 100000));
-        mTetherStatsProviderCb.expectNotifyStatsUpdated(expectedIfaceStatsDiff,
-                expectedUidStatsDiff);
-    }
-
-    @Test
-    public void testSetInterfaceQuota() throws Exception {
-        setupFunctioningHardwareInterface();
-        enableOffload();
-
-        final OffloadController offload = makeOffloadController();
-        offload.start();
-
-        final String ethernetIface = "eth1";
-        final String mobileIface = "rmnet_data0";
-        final long ethernetLimit = 12345;
-        final long mobileLimit = 12345678;
-
-        final LinkProperties lp = new LinkProperties();
-        lp.setInterfaceName(ethernetIface);
-        offload.setUpstreamLinkProperties(lp);
-
-        final InOrder inOrder = inOrder(mHardware);
-        when(mHardware.setUpstreamParameters(any(), any(), any(), any())).thenReturn(true);
-        when(mHardware.setDataLimit(anyString(), anyLong())).thenReturn(true);
-
-        // Applying an interface quota to the current upstream immediately sends it to the hardware.
-        mTetherStatsProvider.onSetLimit(ethernetIface, ethernetLimit);
-        waitForIdle();
-        inOrder.verify(mHardware).setDataLimit(ethernetIface, ethernetLimit);
-        inOrder.verifyNoMoreInteractions();
-
-        // Applying an interface quota to another upstream does not take any immediate action.
-        mTetherStatsProvider.onSetLimit(mobileIface, mobileLimit);
-        waitForIdle();
-        inOrder.verify(mHardware, never()).setDataLimit(anyString(), anyLong());
-
-        // Switching to that upstream causes the quota to be applied if the parameters were applied
-        // correctly.
-        lp.setInterfaceName(mobileIface);
-        offload.setUpstreamLinkProperties(lp);
-        waitForIdle();
-        inOrder.verify(mHardware).setDataLimit(mobileIface, mobileLimit);
-
-        // Setting a limit of ITetheringStatsProvider.QUOTA_UNLIMITED causes the limit to be set
-        // to Long.MAX_VALUE.
-        mTetherStatsProvider.onSetLimit(mobileIface, ITetheringStatsProvider.QUOTA_UNLIMITED);
-        waitForIdle();
-        inOrder.verify(mHardware).setDataLimit(mobileIface, Long.MAX_VALUE);
-
-        // If setting upstream parameters fails, then the data limit is not set.
-        when(mHardware.setUpstreamParameters(any(), any(), any(), any())).thenReturn(false);
-        lp.setInterfaceName(ethernetIface);
-        offload.setUpstreamLinkProperties(lp);
-        mTetherStatsProvider.onSetLimit(mobileIface, mobileLimit);
-        waitForIdle();
-        inOrder.verify(mHardware, never()).setDataLimit(anyString(), anyLong());
-
-        // If setting the data limit fails while changing upstreams, offload is stopped.
-        when(mHardware.setUpstreamParameters(any(), any(), any(), any())).thenReturn(true);
-        when(mHardware.setDataLimit(anyString(), anyLong())).thenReturn(false);
-        lp.setInterfaceName(mobileIface);
-        offload.setUpstreamLinkProperties(lp);
-        mTetherStatsProvider.onSetLimit(mobileIface, mobileLimit);
-        waitForIdle();
-        inOrder.verify(mHardware).getForwardedStats(ethernetIface);
-        inOrder.verify(mHardware).stopOffloadControl();
-    }
-
-    @Test
-    public void testDataLimitCallback() throws Exception {
-        setupFunctioningHardwareInterface();
-        enableOffload();
-
-        final OffloadController offload = makeOffloadController();
-        offload.start();
-
-        OffloadHardwareInterface.ControlCallback callback = mControlCallbackCaptor.getValue();
-        callback.onStoppedLimitReached();
-        mTetherStatsProviderCb.expectNotifyStatsUpdated();
-    }
-
-    @Test
-    public void testAddRemoveDownstreams() throws Exception {
-        setupFunctioningHardwareInterface();
-        enableOffload();
-
-        final OffloadController offload = makeOffloadController();
-        offload.start();
-
-        final InOrder inOrder = inOrder(mHardware);
-        inOrder.verify(mHardware, times(1)).initOffloadConfig();
-        inOrder.verify(mHardware, times(1)).initOffloadControl(
-                any(OffloadHardwareInterface.ControlCallback.class));
-        inOrder.verifyNoMoreInteractions();
-
-        // Tethering makes several calls to setLocalPrefixes() before add/remove
-        // downstream calls are made. This is not tested here; only the behavior
-        // of notifyDownstreamLinkProperties() and removeDownstreamInterface()
-        // are tested.
-
-        // [1] USB tethering is started.
-        final LinkProperties usbLinkProperties = new LinkProperties();
-        usbLinkProperties.setInterfaceName(RNDIS0);
-        usbLinkProperties.addLinkAddress(new LinkAddress("192.168.42.1/24"));
-        usbLinkProperties.addRoute(
-                new RouteInfo(new IpPrefix(USB_PREFIX), null, null, RTN_UNICAST));
-        offload.notifyDownstreamLinkProperties(usbLinkProperties);
-        inOrder.verify(mHardware, times(1)).addDownstreamPrefix(RNDIS0, USB_PREFIX);
-        inOrder.verifyNoMoreInteractions();
-
-        // [2] Routes for IPv6 link-local prefixes should never be added.
-        usbLinkProperties.addRoute(
-                new RouteInfo(new IpPrefix(IPV6_LINKLOCAL), null, null, RTN_UNICAST));
-        offload.notifyDownstreamLinkProperties(usbLinkProperties);
-        inOrder.verify(mHardware, never()).addDownstreamPrefix(eq(RNDIS0), anyString());
-        inOrder.verifyNoMoreInteractions();
-
-        // [3] Add an IPv6 prefix for good measure. Only new offload-able
-        // prefixes should be passed to the HAL.
-        usbLinkProperties.addLinkAddress(new LinkAddress("2001:db8::1/64"));
-        usbLinkProperties.addRoute(
-                new RouteInfo(new IpPrefix(IPV6_DOC_PREFIX), null, null, RTN_UNICAST));
-        offload.notifyDownstreamLinkProperties(usbLinkProperties);
-        inOrder.verify(mHardware, times(1)).addDownstreamPrefix(RNDIS0, IPV6_DOC_PREFIX);
-        inOrder.verifyNoMoreInteractions();
-
-        // [4] Adding addresses doesn't affect notifyDownstreamLinkProperties().
-        // The address is passed in by a separate setLocalPrefixes() invocation.
-        usbLinkProperties.addLinkAddress(new LinkAddress("2001:db8::2/64"));
-        offload.notifyDownstreamLinkProperties(usbLinkProperties);
-        inOrder.verify(mHardware, never()).addDownstreamPrefix(eq(RNDIS0), anyString());
-
-        // [5] Differences in local routes are converted into addDownstream()
-        // and removeDownstream() invocations accordingly.
-        usbLinkProperties.removeRoute(
-                new RouteInfo(new IpPrefix(IPV6_DOC_PREFIX), null, RNDIS0, RTN_UNICAST));
-        usbLinkProperties.addRoute(
-                new RouteInfo(new IpPrefix(IPV6_DISCARD_PREFIX), null, null, RTN_UNICAST));
-        offload.notifyDownstreamLinkProperties(usbLinkProperties);
-        inOrder.verify(mHardware, times(1)).removeDownstreamPrefix(RNDIS0, IPV6_DOC_PREFIX);
-        inOrder.verify(mHardware, times(1)).addDownstreamPrefix(RNDIS0, IPV6_DISCARD_PREFIX);
-        inOrder.verifyNoMoreInteractions();
-
-        // [6] Removing a downstream interface which was never added causes no
-        // interactions with the HAL.
-        offload.removeDownstreamInterface(WLAN0);
-        inOrder.verifyNoMoreInteractions();
-
-        // [7] Removing an active downstream removes all remaining prefixes.
-        offload.removeDownstreamInterface(RNDIS0);
-        inOrder.verify(mHardware, times(1)).removeDownstreamPrefix(RNDIS0, USB_PREFIX);
-        inOrder.verify(mHardware, times(1)).removeDownstreamPrefix(RNDIS0, IPV6_DISCARD_PREFIX);
-        inOrder.verifyNoMoreInteractions();
-    }
-
-    @Test
-    public void testControlCallbackOnStoppedUnsupportedFetchesAllStats() throws Exception {
-        setupFunctioningHardwareInterface();
-        enableOffload();
-
-        final OffloadController offload = makeOffloadController();
-        offload.start();
-
-        // Pretend to set a few different upstreams (only the interface name
-        // matters for this test; we're ignoring IP and route information).
-        final LinkProperties upstreamLp = new LinkProperties();
-        for (String ifname : new String[]{RMNET0, WLAN0, RMNET0}) {
-            upstreamLp.setInterfaceName(ifname);
-            offload.setUpstreamLinkProperties(upstreamLp);
-        }
-
-        // Clear invocation history, especially the getForwardedStats() calls
-        // that happen with setUpstreamParameters().
-        clearInvocations(mHardware);
-
-        OffloadHardwareInterface.ControlCallback callback = mControlCallbackCaptor.getValue();
-        callback.onStoppedUnsupported();
-
-        // Verify forwarded stats behaviour.
-        verify(mHardware, times(1)).getForwardedStats(eq(RMNET0));
-        verify(mHardware, times(1)).getForwardedStats(eq(WLAN0));
-        // TODO: verify the exact stats reported.
-        mTetherStatsProviderCb.expectNotifyStatsUpdated();
-        mTetherStatsProviderCb.assertNoCallback();
-        verifyNoMoreInteractions(mHardware);
-    }
-
-    @Test
-    public void testControlCallbackOnSupportAvailableFetchesAllStatsAndPushesAllParameters()
-            throws Exception {
-        setupFunctioningHardwareInterface();
-        enableOffload();
-
-        final OffloadController offload = makeOffloadController();
-        offload.start();
-
-        // Pretend to set a few different upstreams (only the interface name
-        // matters for this test; we're ignoring IP and route information).
-        final LinkProperties upstreamLp = new LinkProperties();
-        for (String ifname : new String[]{RMNET0, WLAN0, RMNET0}) {
-            upstreamLp.setInterfaceName(ifname);
-            offload.setUpstreamLinkProperties(upstreamLp);
-        }
-
-        // Pretend that some local prefixes and downstreams have been added
-        // (and removed, for good measure).
-        final Set<IpPrefix> minimumLocalPrefixes = new HashSet<>();
-        for (String s : new String[]{
-                "127.0.0.0/8", "192.0.2.0/24", "fe80::/64", "2001:db8::/64"}) {
-            minimumLocalPrefixes.add(new IpPrefix(s));
-        }
-        offload.setLocalPrefixes(minimumLocalPrefixes);
-
-        final LinkProperties usbLinkProperties = new LinkProperties();
-        usbLinkProperties.setInterfaceName(RNDIS0);
-        usbLinkProperties.addLinkAddress(new LinkAddress("192.168.42.1/24"));
-        usbLinkProperties.addRoute(
-                new RouteInfo(new IpPrefix(USB_PREFIX), null, null, RTN_UNICAST));
-        offload.notifyDownstreamLinkProperties(usbLinkProperties);
-
-        final LinkProperties wifiLinkProperties = new LinkProperties();
-        wifiLinkProperties.setInterfaceName(WLAN0);
-        wifiLinkProperties.addLinkAddress(new LinkAddress("192.168.43.1/24"));
-        wifiLinkProperties.addRoute(
-                new RouteInfo(new IpPrefix(WIFI_PREFIX), null, null, RTN_UNICAST));
-        wifiLinkProperties.addRoute(
-                new RouteInfo(new IpPrefix(IPV6_LINKLOCAL), null, null, RTN_UNICAST));
-        // Use a benchmark prefix (RFC 5180 + erratum), since the documentation
-        // prefix is included in the excluded prefix list.
-        wifiLinkProperties.addLinkAddress(new LinkAddress("2001:2::1/64"));
-        wifiLinkProperties.addLinkAddress(new LinkAddress("2001:2::2/64"));
-        wifiLinkProperties.addRoute(
-                new RouteInfo(new IpPrefix("2001:2::/64"), null, null, RTN_UNICAST));
-        offload.notifyDownstreamLinkProperties(wifiLinkProperties);
-
-        offload.removeDownstreamInterface(RNDIS0);
-
-        // Clear invocation history, especially the getForwardedStats() calls
-        // that happen with setUpstreamParameters().
-        clearInvocations(mHardware);
-
-        OffloadHardwareInterface.ControlCallback callback = mControlCallbackCaptor.getValue();
-        callback.onSupportAvailable();
-
-        // Verify forwarded stats behaviour.
-        verify(mHardware, times(1)).getForwardedStats(eq(RMNET0));
-        verify(mHardware, times(1)).getForwardedStats(eq(WLAN0));
-        mTetherStatsProviderCb.expectNotifyStatsUpdated();
-        mTetherStatsProviderCb.assertNoCallback();
-
-        // TODO: verify local prefixes and downstreams are also pushed to the HAL.
-        verify(mHardware, times(1)).setLocalPrefixes(mStringArrayCaptor.capture());
-        ArrayList<String> localPrefixes = mStringArrayCaptor.getValue();
-        assertEquals(4, localPrefixes.size());
-        assertContainsAll(localPrefixes,
-                // TODO: The logic to find and exclude downstream IP prefixes
-                // is currently in Tethering's OffloadWrapper but must be moved
-                // into OffloadController proper. After this, also check for:
-                //     "192.168.43.1/32", "2001:2::1/128", "2001:2::2/128"
-                "127.0.0.0/8", "192.0.2.0/24", "fe80::/64", "2001:db8::/64");
-        verify(mHardware, times(1)).addDownstreamPrefix(WLAN0, "192.168.43.0/24");
-        verify(mHardware, times(1)).addDownstreamPrefix(WLAN0, "2001:2::/64");
-        verify(mHardware, times(1)).setUpstreamParameters(eq(RMNET0), any(), any(), any());
-        verify(mHardware, times(1)).setDataLimit(eq(RMNET0), anyLong());
-        verifyNoMoreInteractions(mHardware);
-    }
-
-    @Test
-    public void testOnSetAlert() throws Exception {
-        setupFunctioningHardwareInterface();
-        enableOffload();
-        setOffloadPollInterval(DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS);
-        final OffloadController offload = makeOffloadController();
-        offload.start();
-
-        // Initialize with fake eth upstream.
-        final String ethernetIface = "eth1";
-        InOrder inOrder = inOrder(mHardware);
-        final LinkProperties lp = new LinkProperties();
-        lp.setInterfaceName(ethernetIface);
-        offload.setUpstreamLinkProperties(lp);
-        // Previous upstream was null, so no stats are fetched.
-        inOrder.verify(mHardware, never()).getForwardedStats(any());
-
-        // Verify that set quota to 0 will immediately triggers an callback.
-        mTetherStatsProvider.onSetAlert(0);
-        waitForIdle();
-        mTetherStatsProviderCb.expectNotifyAlertReached();
-
-        // Verify that notifyAlertReached never fired if quota is not yet reached.
-        when(mHardware.getForwardedStats(eq(ethernetIface))).thenReturn(
-                new ForwardedStats(0, 0));
-        mTetherStatsProvider.onSetAlert(100);
-        mTestLooper.moveTimeForward(DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS);
-        waitForIdle();
-        mTetherStatsProviderCb.assertNoCallback();
-
-        // Verify that notifyAlertReached fired when quota is reached.
-        when(mHardware.getForwardedStats(eq(ethernetIface))).thenReturn(
-                new ForwardedStats(50, 50));
-        mTestLooper.moveTimeForward(DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS);
-        waitForIdle();
-        mTetherStatsProviderCb.expectNotifyAlertReached();
-
-        // Verify that set quota with UNLIMITED won't trigger any callback, and won't fetch
-        // any stats since the polling is stopped.
-        reset(mHardware);
-        mTetherStatsProvider.onSetAlert(NetworkStatsProvider.QUOTA_UNLIMITED);
-        mTestLooper.moveTimeForward(DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS);
-        waitForIdle();
-        mTetherStatsProviderCb.assertNoCallback();
-        verify(mHardware, never()).getForwardedStats(any());
-    }
-}
diff --git a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/OffloadHardwareInterfaceTest.java b/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/OffloadHardwareInterfaceTest.java
deleted file mode 100644
index c543fad..0000000
--- a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/OffloadHardwareInterfaceTest.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.networkstack.tethering;
-
-import static android.net.util.TetheringUtils.uint16;
-import static android.system.OsConstants.SOCK_STREAM;
-import static android.system.OsConstants.AF_UNIX;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.hardware.tetheroffload.config.V1_0.IOffloadConfig;
-import android.hardware.tetheroffload.control.V1_0.IOffloadControl;
-import android.hardware.tetheroffload.control.V1_0.ITetheringOffloadCallback;
-import android.hardware.tetheroffload.control.V1_0.NatTimeoutUpdate;
-import android.hardware.tetheroffload.control.V1_0.NetworkProtocol;
-import android.hardware.tetheroffload.control.V1_0.OffloadCallbackEvent;
-import android.net.netlink.StructNlMsgHdr;
-import android.net.util.SharedLog;
-import android.os.Handler;
-import android.os.NativeHandle;
-import android.os.test.TestLooper;
-import android.system.ErrnoException;
-import android.system.OsConstants;
-import android.system.Os;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-import java.io.FileDescriptor;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public final class OffloadHardwareInterfaceTest {
-    private static final String RMNET0 = "test_rmnet_data0";
-
-    private final TestLooper mTestLooper = new TestLooper();
-
-    private OffloadHardwareInterface mOffloadHw;
-    private ITetheringOffloadCallback mTetheringOffloadCallback;
-    private OffloadHardwareInterface.ControlCallback mControlCallback;
-
-    @Mock private IOffloadConfig mIOffloadConfig;
-    @Mock private IOffloadControl mIOffloadControl;
-    @Mock private NativeHandle mNativeHandle;
-
-    // Random values to test Netlink message.
-    private static final short TEST_TYPE = 184;
-    private static final short TEST_FLAGS = 263;
-
-    class MyDependencies extends OffloadHardwareInterface.Dependencies {
-        MyDependencies(SharedLog log) {
-            super(log);
-        }
-
-        @Override
-        public IOffloadConfig getOffloadConfig() {
-            return mIOffloadConfig;
-        }
-
-        @Override
-        public IOffloadControl getOffloadControl() {
-            return mIOffloadControl;
-        }
-
-        @Override
-        public NativeHandle createConntrackSocket(final int groups) {
-            return mNativeHandle;
-        }
-    }
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        final SharedLog log = new SharedLog("test");
-        mOffloadHw = new OffloadHardwareInterface(new Handler(mTestLooper.getLooper()), log,
-                new MyDependencies(log));
-        mControlCallback = spy(new OffloadHardwareInterface.ControlCallback());
-    }
-
-    private void startOffloadHardwareInterface() throws Exception {
-        mOffloadHw.initOffloadConfig();
-        mOffloadHw.initOffloadControl(mControlCallback);
-        final ArgumentCaptor<ITetheringOffloadCallback> mOffloadCallbackCaptor =
-                ArgumentCaptor.forClass(ITetheringOffloadCallback.class);
-        verify(mIOffloadControl).initOffload(mOffloadCallbackCaptor.capture(), any());
-        mTetheringOffloadCallback = mOffloadCallbackCaptor.getValue();
-    }
-
-    @Test
-    public void testGetForwardedStats() throws Exception {
-        startOffloadHardwareInterface();
-        final OffloadHardwareInterface.ForwardedStats stats = mOffloadHw.getForwardedStats(RMNET0);
-        verify(mIOffloadControl).getForwardedStats(eq(RMNET0), any());
-        assertNotNull(stats);
-    }
-
-    @Test
-    public void testSetLocalPrefixes() throws Exception {
-        startOffloadHardwareInterface();
-        final ArrayList<String> localPrefixes = new ArrayList<>();
-        localPrefixes.add("127.0.0.0/8");
-        localPrefixes.add("fe80::/64");
-        mOffloadHw.setLocalPrefixes(localPrefixes);
-        verify(mIOffloadControl).setLocalPrefixes(eq(localPrefixes), any());
-    }
-
-    @Test
-    public void testSetDataLimit() throws Exception {
-        startOffloadHardwareInterface();
-        final long limit = 12345;
-        mOffloadHw.setDataLimit(RMNET0, limit);
-        verify(mIOffloadControl).setDataLimit(eq(RMNET0), eq(limit), any());
-    }
-
-    @Test
-    public void testSetUpstreamParameters() throws Exception {
-        startOffloadHardwareInterface();
-        final String v4addr = "192.168.10.1";
-        final String v4gateway = "192.168.10.255";
-        final ArrayList<String> v6gws = new ArrayList<>(0);
-        v6gws.add("2001:db8::1");
-        mOffloadHw.setUpstreamParameters(RMNET0, v4addr, v4gateway, v6gws);
-        verify(mIOffloadControl).setUpstreamParameters(eq(RMNET0), eq(v4addr), eq(v4gateway),
-                eq(v6gws), any());
-
-        final ArgumentCaptor<ArrayList<String>> mArrayListCaptor =
-                ArgumentCaptor.forClass(ArrayList.class);
-        mOffloadHw.setUpstreamParameters(null, null, null, null);
-        verify(mIOffloadControl).setUpstreamParameters(eq(""), eq(""), eq(""),
-                mArrayListCaptor.capture(), any());
-        assertEquals(mArrayListCaptor.getValue().size(), 0);
-    }
-
-    @Test
-    public void testUpdateDownstreamPrefix() throws Exception {
-        startOffloadHardwareInterface();
-        final String ifName = "wlan1";
-        final String prefix = "192.168.43.0/24";
-        mOffloadHw.addDownstreamPrefix(ifName, prefix);
-        verify(mIOffloadControl).addDownstream(eq(ifName), eq(prefix), any());
-
-        mOffloadHw.removeDownstreamPrefix(ifName, prefix);
-        verify(mIOffloadControl).removeDownstream(eq(ifName), eq(prefix), any());
-    }
-
-    @Test
-    public void testTetheringOffloadCallback() throws Exception {
-        startOffloadHardwareInterface();
-
-        mTetheringOffloadCallback.onEvent(OffloadCallbackEvent.OFFLOAD_STARTED);
-        mTestLooper.dispatchAll();
-        verify(mControlCallback).onStarted();
-
-        mTetheringOffloadCallback.onEvent(OffloadCallbackEvent.OFFLOAD_STOPPED_ERROR);
-        mTestLooper.dispatchAll();
-        verify(mControlCallback).onStoppedError();
-
-        mTetheringOffloadCallback.onEvent(OffloadCallbackEvent.OFFLOAD_STOPPED_UNSUPPORTED);
-        mTestLooper.dispatchAll();
-        verify(mControlCallback).onStoppedUnsupported();
-
-        mTetheringOffloadCallback.onEvent(OffloadCallbackEvent.OFFLOAD_SUPPORT_AVAILABLE);
-        mTestLooper.dispatchAll();
-        verify(mControlCallback).onSupportAvailable();
-
-        mTetheringOffloadCallback.onEvent(OffloadCallbackEvent.OFFLOAD_STOPPED_LIMIT_REACHED);
-        mTestLooper.dispatchAll();
-        verify(mControlCallback).onStoppedLimitReached();
-
-        final NatTimeoutUpdate tcpParams = buildNatTimeoutUpdate(NetworkProtocol.TCP);
-        mTetheringOffloadCallback.updateTimeout(tcpParams);
-        mTestLooper.dispatchAll();
-        verify(mControlCallback).onNatTimeoutUpdate(eq(OsConstants.IPPROTO_TCP),
-                eq(tcpParams.src.addr),
-                eq(uint16(tcpParams.src.port)),
-                eq(tcpParams.dst.addr),
-                eq(uint16(tcpParams.dst.port)));
-
-        final NatTimeoutUpdate udpParams = buildNatTimeoutUpdate(NetworkProtocol.UDP);
-        mTetheringOffloadCallback.updateTimeout(udpParams);
-        mTestLooper.dispatchAll();
-        verify(mControlCallback).onNatTimeoutUpdate(eq(OsConstants.IPPROTO_UDP),
-                eq(udpParams.src.addr),
-                eq(uint16(udpParams.src.port)),
-                eq(udpParams.dst.addr),
-                eq(uint16(udpParams.dst.port)));
-    }
-
-    @Test
-    public void testNetlinkMessage() throws Exception {
-        FileDescriptor writeSocket = new FileDescriptor();
-        FileDescriptor readSocket = new FileDescriptor();
-        try {
-            Os.socketpair(AF_UNIX, SOCK_STREAM, 0, writeSocket, readSocket);
-        } catch (ErrnoException e) {
-            fail();
-            return;
-        }
-        when(mNativeHandle.getFileDescriptor()).thenReturn(writeSocket);
-
-        mOffloadHw.sendNetlinkMessage(mNativeHandle, TEST_TYPE, TEST_FLAGS);
-
-        ByteBuffer buffer = ByteBuffer.allocate(StructNlMsgHdr.STRUCT_SIZE);
-        int read = Os.read(readSocket, buffer);
-
-        buffer.flip();
-        assertEquals(StructNlMsgHdr.STRUCT_SIZE, buffer.getInt());
-        assertEquals(TEST_TYPE, buffer.getShort());
-        assertEquals(TEST_FLAGS, buffer.getShort());
-        assertEquals(1 /* seq */, buffer.getInt());
-        assertEquals(0 /* pid */, buffer.getInt());
-    }
-
-    private NatTimeoutUpdate buildNatTimeoutUpdate(final int proto) {
-        final NatTimeoutUpdate params = new NatTimeoutUpdate();
-        params.proto = proto;
-        params.src.addr = "192.168.43.200";
-        params.src.port = 100;
-        params.dst.addr = "172.50.46.169";
-        params.dst.port = 150;
-        return params;
-    }
-}
diff --git a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/PrivateAddressCoordinatorTest.java b/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/PrivateAddressCoordinatorTest.java
deleted file mode 100644
index 8e93c2e..0000000
--- a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/PrivateAddressCoordinatorTest.java
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.networkstack.tethering;
-
-import static android.net.TetheringManager.TETHERING_ETHERNET;
-import static android.net.TetheringManager.TETHERING_USB;
-import static android.net.TetheringManager.TETHERING_WIFI;
-import static android.net.TetheringManager.TETHERING_WIFI_P2P;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.reset;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.net.ConnectivityManager;
-import android.net.InetAddresses;
-import android.net.IpPrefix;
-import android.net.LinkAddress;
-import android.net.LinkProperties;
-import android.net.Network;
-import android.net.ip.IpServer;
-import android.net.util.NetworkConstants;
-import android.net.util.PrefixUtils;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-import java.util.List;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public final class PrivateAddressCoordinatorTest {
-    private static final String TEST_MOBILE_IFNAME = "test_rmnet_data0";
-    private static final String TEST_WIFI_IFNAME = "test_wlan0";
-
-    @Mock private IpServer mHotspotIpServer;
-    @Mock private IpServer mUsbIpServer;
-    @Mock private IpServer mEthernetIpServer;
-    @Mock private IpServer mWifiP2pIpServer;
-    @Mock private Context mContext;
-    @Mock private ConnectivityManager mConnectivityMgr;
-    @Mock private TetheringConfiguration mConfig;
-
-    private PrivateAddressCoordinator mPrivateAddressCoordinator;
-    private final IpPrefix mBluetoothPrefix = new IpPrefix("192.168.44.0/24");
-    private final LinkAddress mLegacyWifiP2pAddress = new LinkAddress("192.168.49.1/24");
-    private final Network mWifiNetwork = new Network(1);
-    private final Network mMobileNetwork = new Network(2);
-    private final Network[] mAllNetworks = {mMobileNetwork, mWifiNetwork};
-
-    private void setUpIpServers() throws Exception {
-        when(mUsbIpServer.interfaceType()).thenReturn(TETHERING_USB);
-        when(mEthernetIpServer.interfaceType()).thenReturn(TETHERING_ETHERNET);
-        when(mHotspotIpServer.interfaceType()).thenReturn(TETHERING_WIFI);
-        when(mWifiP2pIpServer.interfaceType()).thenReturn(TETHERING_WIFI_P2P);
-    }
-
-    @Before
-    public void setUp() throws Exception {
-        MockitoAnnotations.initMocks(this);
-
-        when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE)).thenReturn(mConnectivityMgr);
-        when(mConnectivityMgr.getAllNetworks()).thenReturn(mAllNetworks);
-        when(mConfig.shouldEnableWifiP2pDedicatedIp()).thenReturn(false);
-        setUpIpServers();
-        mPrivateAddressCoordinator = spy(new PrivateAddressCoordinator(mContext, mConfig));
-    }
-
-    @Test
-    public void testDownstreamPrefixRequest() throws Exception {
-        LinkAddress address = mPrivateAddressCoordinator.requestDownstreamAddress(
-                mHotspotIpServer);
-        final IpPrefix hotspotPrefix = PrefixUtils.asIpPrefix(address);
-        assertNotEquals(hotspotPrefix, mBluetoothPrefix);
-
-        address = mPrivateAddressCoordinator.requestDownstreamAddress(
-                mHotspotIpServer);
-        final IpPrefix testDupRequest = PrefixUtils.asIpPrefix(address);
-        assertNotEquals(hotspotPrefix, testDupRequest);
-        assertNotEquals(mBluetoothPrefix, testDupRequest);
-        mPrivateAddressCoordinator.releaseDownstream(mHotspotIpServer);
-
-        address = mPrivateAddressCoordinator.requestDownstreamAddress(
-                mUsbIpServer);
-        final IpPrefix usbPrefix = PrefixUtils.asIpPrefix(address);
-        assertNotEquals(usbPrefix, mBluetoothPrefix);
-        assertNotEquals(usbPrefix, hotspotPrefix);
-        mPrivateAddressCoordinator.releaseDownstream(mUsbIpServer);
-    }
-
-    @Test
-    public void testRequestDownstreamAddress() throws Exception {
-        LinkAddress expectedAddress = new LinkAddress("192.168.43.42/24");
-        int fakeSubAddr = 0x2b00;
-        when(mPrivateAddressCoordinator.getRandomSubAddr()).thenReturn(fakeSubAddr);
-        LinkAddress actualAddress = mPrivateAddressCoordinator.requestDownstreamAddress(
-                mHotspotIpServer);
-        assertEquals(actualAddress, expectedAddress);
-        mPrivateAddressCoordinator.releaseDownstream(mHotspotIpServer);
-
-        fakeSubAddr = 0x2b01;
-        when(mPrivateAddressCoordinator.getRandomSubAddr()).thenReturn(fakeSubAddr);
-        actualAddress = mPrivateAddressCoordinator.requestDownstreamAddress(
-                mHotspotIpServer);
-        assertEquals(actualAddress, expectedAddress);
-        mPrivateAddressCoordinator.releaseDownstream(mHotspotIpServer);
-
-        fakeSubAddr = 0x2bff;
-        when(mPrivateAddressCoordinator.getRandomSubAddr()).thenReturn(fakeSubAddr);
-        actualAddress = mPrivateAddressCoordinator.requestDownstreamAddress(
-                mHotspotIpServer);
-        assertEquals(actualAddress, expectedAddress);
-        mPrivateAddressCoordinator.releaseDownstream(mHotspotIpServer);
-
-        expectedAddress = new LinkAddress("192.168.43.5/24");
-        fakeSubAddr = 0x2b05;
-        when(mPrivateAddressCoordinator.getRandomSubAddr()).thenReturn(fakeSubAddr);
-        actualAddress = mPrivateAddressCoordinator.requestDownstreamAddress(
-                mHotspotIpServer);
-        assertEquals(actualAddress, expectedAddress);
-        mPrivateAddressCoordinator.releaseDownstream(mHotspotIpServer);
-    }
-
-    private int getBluetoothSubAddress() {
-        final byte[] rawAddress = mBluetoothPrefix.getRawAddress();
-        int bluetoothSubNet = rawAddress[2] & 0xff;
-        return (bluetoothSubNet << 8) + 0x5;
-    }
-
-    @Test
-    public void testReserveBluetoothPrefix() throws Exception {
-        when(mPrivateAddressCoordinator.getRandomSubAddr()).thenReturn(getBluetoothSubAddress());
-        LinkAddress address = mPrivateAddressCoordinator.requestDownstreamAddress(
-                mHotspotIpServer);
-        final IpPrefix hotspotPrefix = PrefixUtils.asIpPrefix(address);
-        assertNotEquals("Should not get reserved prefix: ", mBluetoothPrefix, hotspotPrefix);
-        mPrivateAddressCoordinator.releaseDownstream(mHotspotIpServer);
-    }
-
-    @Test
-    public void testNoConflictDownstreamPrefix() throws Exception {
-        final int fakeHotspotSubAddr = 0x2b05;
-        final IpPrefix predefinedPrefix = new IpPrefix("192.168.43.0/24");
-        when(mPrivateAddressCoordinator.getRandomSubAddr()).thenReturn(fakeHotspotSubAddr);
-        LinkAddress address = mPrivateAddressCoordinator.requestDownstreamAddress(
-                mHotspotIpServer);
-        final IpPrefix hotspotPrefix = PrefixUtils.asIpPrefix(address);
-        assertEquals("Wrong wifi prefix: ", predefinedPrefix, hotspotPrefix);
-        when(mHotspotIpServer.getAddress()).thenReturn(address);
-
-        address = mPrivateAddressCoordinator.requestDownstreamAddress(
-                mUsbIpServer);
-        final IpPrefix usbPrefix = PrefixUtils.asIpPrefix(address);
-        assertNotEquals(predefinedPrefix, usbPrefix);
-
-        mPrivateAddressCoordinator.releaseDownstream(mHotspotIpServer);
-        mPrivateAddressCoordinator.releaseDownstream(mUsbIpServer);
-        address = mPrivateAddressCoordinator.requestDownstreamAddress(
-                mUsbIpServer);
-        final IpPrefix allowUseFreePrefix = PrefixUtils.asIpPrefix(address);
-        assertEquals("Fail to reselect available prefix: ", predefinedPrefix, allowUseFreePrefix);
-    }
-
-    private LinkProperties buildUpstreamLinkProperties(boolean withIPv4, boolean withIPv6,
-            boolean isMobile) {
-        final String testIface;
-        final String testIpv4Address;
-        if (isMobile) {
-            testIface = TEST_MOBILE_IFNAME;
-            testIpv4Address = "10.0.0.1";
-        } else {
-            testIface = TEST_WIFI_IFNAME;
-            testIpv4Address = "192.168.43.5";
-        }
-
-        final LinkProperties prop = new LinkProperties();
-        prop.setInterfaceName(testIface);
-
-        if (withIPv4) {
-            prop.addLinkAddress(
-                    new LinkAddress(InetAddresses.parseNumericAddress(testIpv4Address),
-                            NetworkConstants.IPV4_ADDR_BITS));
-        }
-
-        if (withIPv6) {
-            prop.addLinkAddress(
-                    new LinkAddress(InetAddresses.parseNumericAddress("2001:db8::"),
-                            NetworkConstants.RFC7421_PREFIX_LENGTH));
-        }
-        return prop;
-    }
-
-    @Test
-    public void testNoConflictUpstreamPrefix() throws Exception {
-        final int fakeHotspotSubId = 43;
-        final int fakeHotspotSubAddr = 0x2b05;
-        final IpPrefix predefinedPrefix = new IpPrefix("192.168.43.0/24");
-        // Force always get subAddress "43.5" for conflict testing.
-        when(mPrivateAddressCoordinator.getRandomSubAddr()).thenReturn(fakeHotspotSubAddr);
-        // 1. Enable hotspot with prefix 192.168.43.0/24
-        final LinkAddress hotspotAddr = mPrivateAddressCoordinator.requestDownstreamAddress(
-                mHotspotIpServer);
-        final IpPrefix hotspotPrefix = PrefixUtils.asIpPrefix(hotspotAddr);
-        assertEquals("Wrong wifi prefix: ", predefinedPrefix, hotspotPrefix);
-        when(mHotspotIpServer.getAddress()).thenReturn(hotspotAddr);
-        // 2. Update v6 only mobile network, hotspot prefix should not be removed.
-        List<String> testConflicts;
-        final LinkProperties v6OnlyMobileProp = buildUpstreamLinkProperties(false, true, true);
-        mPrivateAddressCoordinator.updateUpstreamPrefix(mMobileNetwork, v6OnlyMobileProp);
-        verify(mHotspotIpServer, never()).sendMessage(IpServer.CMD_NOTIFY_PREFIX_CONFLICT);
-        mPrivateAddressCoordinator.removeUpstreamPrefix(mMobileNetwork);
-        // 3. Update v4 only mobile network, hotspot prefix should not be removed.
-        final LinkProperties v4OnlyMobileProp = buildUpstreamLinkProperties(true, false, true);
-        mPrivateAddressCoordinator.updateUpstreamPrefix(mMobileNetwork, v4OnlyMobileProp);
-        verify(mHotspotIpServer, never()).sendMessage(IpServer.CMD_NOTIFY_PREFIX_CONFLICT);
-        // 4. Update v4v6 mobile network, hotspot prefix should not be removed.
-        final LinkProperties v4v6MobileProp = buildUpstreamLinkProperties(true, true, true);
-        mPrivateAddressCoordinator.updateUpstreamPrefix(mMobileNetwork, v4v6MobileProp);
-        verify(mHotspotIpServer, never()).sendMessage(IpServer.CMD_NOTIFY_PREFIX_CONFLICT);
-        // 5. Update v6 only wifi network, hotspot prefix should not be removed.
-        final LinkProperties v6OnlyWifiProp = buildUpstreamLinkProperties(false, true, false);
-        mPrivateAddressCoordinator.updateUpstreamPrefix(mWifiNetwork, v6OnlyWifiProp);
-        verify(mHotspotIpServer, never()).sendMessage(IpServer.CMD_NOTIFY_PREFIX_CONFLICT);
-        mPrivateAddressCoordinator.removeUpstreamPrefix(mWifiNetwork);
-        // 6. Update v4 only wifi network, it conflict with hotspot prefix.
-        final LinkProperties v4OnlyWifiProp = buildUpstreamLinkProperties(true, false, false);
-        mPrivateAddressCoordinator.updateUpstreamPrefix(mWifiNetwork, v4OnlyWifiProp);
-        verify(mHotspotIpServer).sendMessage(IpServer.CMD_NOTIFY_PREFIX_CONFLICT);
-        reset(mHotspotIpServer);
-        // 7. Restart hotspot again and its prefix is different previous.
-        mPrivateAddressCoordinator.releaseDownstream(mHotspotIpServer);
-        final LinkAddress hotspotAddr2 = mPrivateAddressCoordinator.requestDownstreamAddress(
-                mHotspotIpServer);
-        final IpPrefix hotspotPrefix2 = PrefixUtils.asIpPrefix(hotspotAddr2);
-        assertNotEquals(hotspotPrefix, hotspotPrefix2);
-        when(mHotspotIpServer.getAddress()).thenReturn(hotspotAddr2);
-        mPrivateAddressCoordinator.updateUpstreamPrefix(mWifiNetwork, v4OnlyWifiProp);
-        verify(mHotspotIpServer, never()).sendMessage(IpServer.CMD_NOTIFY_PREFIX_CONFLICT);
-        // 7. Usb tethering can be enabled and its prefix is different with conflict one.
-        final LinkAddress usbAddr = mPrivateAddressCoordinator.requestDownstreamAddress(
-                mUsbIpServer);
-        final IpPrefix usbPrefix = PrefixUtils.asIpPrefix(usbAddr);
-        assertNotEquals(predefinedPrefix, usbPrefix);
-        assertNotEquals(hotspotPrefix2, usbPrefix);
-        when(mUsbIpServer.getAddress()).thenReturn(usbAddr);
-        // 8. Disable wifi upstream, then wifi's prefix can be selected again.
-        mPrivateAddressCoordinator.removeUpstreamPrefix(mWifiNetwork);
-        final LinkAddress ethAddr = mPrivateAddressCoordinator.requestDownstreamAddress(
-                mEthernetIpServer);
-        final IpPrefix ethPrefix = PrefixUtils.asIpPrefix(ethAddr);
-        assertEquals(predefinedPrefix, ethPrefix);
-    }
-
-    private int getSubAddress(final byte... ipv4Address) {
-        assertEquals(4, ipv4Address.length);
-
-        int subnet = Byte.toUnsignedInt(ipv4Address[2]);
-        return (subnet << 8) + ipv4Address[3];
-    }
-
-    private void assertReseveredWifiP2pPrefix() throws Exception {
-        LinkAddress address = mPrivateAddressCoordinator.requestDownstreamAddress(
-                mHotspotIpServer);
-        final IpPrefix hotspotPrefix = PrefixUtils.asIpPrefix(address);
-        final IpPrefix legacyWifiP2pPrefix = PrefixUtils.asIpPrefix(mLegacyWifiP2pAddress);
-        assertNotEquals(legacyWifiP2pPrefix, hotspotPrefix);
-        mPrivateAddressCoordinator.releaseDownstream(mHotspotIpServer);
-    }
-
-    @Test
-    public void testEnableLegacyWifiP2PAddress() throws Exception {
-        when(mPrivateAddressCoordinator.getRandomSubAddr()).thenReturn(
-                getSubAddress(mLegacyWifiP2pAddress.getAddress().getAddress()));
-        // No matter #shouldEnableWifiP2pDedicatedIp() is enabled or not, legacy wifi p2p prefix
-        // is resevered.
-        assertReseveredWifiP2pPrefix();
-
-        when(mConfig.shouldEnableWifiP2pDedicatedIp()).thenReturn(true);
-        assertReseveredWifiP2pPrefix();
-
-        // If #shouldEnableWifiP2pDedicatedIp() is enabled, wifi P2P gets the configured address.
-        LinkAddress address = mPrivateAddressCoordinator.requestDownstreamAddress(
-                mWifiP2pIpServer);
-        assertEquals(mLegacyWifiP2pAddress, address);
-        mPrivateAddressCoordinator.releaseDownstream(mWifiP2pIpServer);
-    }
-}
diff --git a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/TetheringConfigurationTest.java b/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/TetheringConfigurationTest.java
deleted file mode 100644
index dc0940c..0000000
--- a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/TetheringConfigurationTest.java
+++ /dev/null
@@ -1,431 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.networkstack.tethering;
-
-import static android.net.ConnectivityManager.TYPE_ETHERNET;
-import static android.net.ConnectivityManager.TYPE_MOBILE;
-import static android.net.ConnectivityManager.TYPE_MOBILE_DUN;
-import static android.net.ConnectivityManager.TYPE_MOBILE_HIPRI;
-import static android.net.ConnectivityManager.TYPE_WIFI;
-import static android.provider.DeviceConfig.NAMESPACE_CONNECTIVITY;
-import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
-
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.net.util.SharedLog;
-import android.provider.DeviceConfig;
-import android.telephony.TelephonyManager;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.internal.util.test.BroadcastInterceptingContext;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoSession;
-import org.mockito.quality.Strictness;
-
-import java.util.Arrays;
-import java.util.Iterator;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class TetheringConfigurationTest {
-    private final SharedLog mLog = new SharedLog("TetheringConfigurationTest");
-
-    private static final String[] PROVISIONING_APP_NAME = {"some", "app"};
-    private static final String PROVISIONING_NO_UI_APP_NAME = "no_ui_app";
-    private static final String PROVISIONING_APP_RESPONSE = "app_response";
-    @Mock private Context mContext;
-    @Mock private TelephonyManager mTelephonyManager;
-    @Mock private Resources mResources;
-    @Mock private Resources mResourcesForSubId;
-    private Context mMockContext;
-    private boolean mHasTelephonyManager;
-    private boolean mEnableLegacyDhcpServer;
-    private MockitoSession mMockingSession;
-
-    private class MockTetheringConfiguration extends TetheringConfiguration {
-        MockTetheringConfiguration(Context ctx, SharedLog log, int id) {
-            super(ctx, log, id);
-        }
-
-        @Override
-        protected Resources getResourcesForSubIdWrapper(Context ctx, int subId) {
-            return mResourcesForSubId;
-        }
-    }
-
-    private class MockContext extends BroadcastInterceptingContext {
-        MockContext(Context base) {
-            super(base);
-        }
-
-        @Override
-        public Resources getResources() {
-            return mResources;
-        }
-
-        @Override
-        public Object getSystemService(String name) {
-            if (Context.TELEPHONY_SERVICE.equals(name)) {
-                return mHasTelephonyManager ? mTelephonyManager : null;
-            }
-            return super.getSystemService(name);
-        }
-    }
-
-    @Before
-    public void setUp() throws Exception {
-        // TODO: use a dependencies class instead of mock statics.
-        mMockingSession = mockitoSession()
-                .initMocks(this)
-                .mockStatic(DeviceConfig.class)
-                .strictness(Strictness.WARN)
-                .startMocking();
-        doReturn(null).when(
-                () -> DeviceConfig.getProperty(eq(NAMESPACE_CONNECTIVITY),
-                eq(TetheringConfiguration.TETHER_ENABLE_LEGACY_DHCP_SERVER)));
-
-        when(mResources.getStringArray(R.array.config_tether_dhcp_range)).thenReturn(
-                new String[0]);
-        when(mResources.getInteger(R.integer.config_tether_offload_poll_interval)).thenReturn(
-                TetheringConfiguration.DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS);
-        when(mResources.getStringArray(R.array.config_tether_usb_regexs)).thenReturn(new String[0]);
-        when(mResources.getStringArray(R.array.config_tether_wifi_regexs))
-                .thenReturn(new String[]{ "test_wlan\\d" });
-        when(mResources.getStringArray(R.array.config_tether_bluetooth_regexs)).thenReturn(
-                new String[0]);
-        when(mResources.getIntArray(R.array.config_tether_upstream_types)).thenReturn(new int[0]);
-        when(mResources.getStringArray(R.array.config_mobile_hotspot_provision_app))
-                .thenReturn(new String[0]);
-        when(mResources.getBoolean(R.bool.config_tether_enable_legacy_dhcp_server)).thenReturn(
-                false);
-        when(mResources.getBoolean(R.bool.config_tether_enable_legacy_wifi_p2p_dedicated_ip))
-                .thenReturn(false);
-        initializeBpfOffloadConfiguration(true, null /* unset */);
-
-        mHasTelephonyManager = true;
-        mMockContext = new MockContext(mContext);
-        mEnableLegacyDhcpServer = false;
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        mMockingSession.finishMocking();
-    }
-
-    private TetheringConfiguration getTetheringConfiguration(int... legacyTetherUpstreamTypes) {
-        when(mResources.getIntArray(R.array.config_tether_upstream_types)).thenReturn(
-                legacyTetherUpstreamTypes);
-        return new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
-    }
-
-    @Test
-    public void testNoTelephonyManagerMeansNoDun() {
-        mHasTelephonyManager = false;
-        final TetheringConfiguration cfg = getTetheringConfiguration(
-                new int[]{TYPE_MOBILE_DUN, TYPE_WIFI});
-        assertFalse(cfg.isDunRequired);
-        assertFalse(cfg.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE_DUN));
-        // Just to prove we haven't clobbered Wi-Fi:
-        assertTrue(cfg.preferredUpstreamIfaceTypes.contains(TYPE_WIFI));
-    }
-
-    @Test
-    public void testDunFromTelephonyManagerMeansDun() {
-        when(mTelephonyManager.isTetheringApnRequired()).thenReturn(true);
-
-        final TetheringConfiguration cfgWifi = getTetheringConfiguration(TYPE_WIFI);
-        final TetheringConfiguration cfgMobileWifiHipri = getTetheringConfiguration(
-                TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI);
-        final TetheringConfiguration cfgWifiDun = getTetheringConfiguration(
-                TYPE_WIFI, TYPE_MOBILE_DUN);
-        final TetheringConfiguration cfgMobileWifiHipriDun = getTetheringConfiguration(
-                TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI, TYPE_MOBILE_DUN);
-
-        for (TetheringConfiguration cfg : Arrays.asList(cfgWifi, cfgMobileWifiHipri,
-                cfgWifiDun, cfgMobileWifiHipriDun)) {
-            String msg = "config=" + cfg.toString();
-            assertTrue(msg, cfg.isDunRequired);
-            assertTrue(msg, cfg.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE_DUN));
-            assertFalse(msg, cfg.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE));
-            assertFalse(msg, cfg.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE_HIPRI));
-            // Just to prove we haven't clobbered Wi-Fi:
-            assertTrue(msg, cfg.preferredUpstreamIfaceTypes.contains(TYPE_WIFI));
-        }
-    }
-
-    @Test
-    public void testDunNotRequiredFromTelephonyManagerMeansNoDun() {
-        when(mTelephonyManager.isTetheringApnRequired()).thenReturn(false);
-
-        final TetheringConfiguration cfgWifi = getTetheringConfiguration(TYPE_WIFI);
-        final TetheringConfiguration cfgMobileWifiHipri = getTetheringConfiguration(
-                TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI);
-        final TetheringConfiguration cfgWifiDun = getTetheringConfiguration(
-                TYPE_WIFI, TYPE_MOBILE_DUN);
-        final TetheringConfiguration cfgWifiMobile = getTetheringConfiguration(
-                TYPE_WIFI, TYPE_MOBILE);
-        final TetheringConfiguration cfgWifiHipri = getTetheringConfiguration(
-                TYPE_WIFI, TYPE_MOBILE_HIPRI);
-        final TetheringConfiguration cfgMobileWifiHipriDun = getTetheringConfiguration(
-                TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI, TYPE_MOBILE_DUN);
-
-        String msg;
-        // TYPE_MOBILE_DUN should be present in none of the combinations.
-        // TYPE_WIFI should not be affected.
-        for (TetheringConfiguration cfg : Arrays.asList(cfgWifi, cfgMobileWifiHipri, cfgWifiDun,
-                cfgWifiMobile, cfgWifiHipri, cfgMobileWifiHipriDun)) {
-            msg = "config=" + cfg.toString();
-            assertFalse(msg, cfg.isDunRequired);
-            assertFalse(msg, cfg.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE_DUN));
-            assertTrue(msg, cfg.preferredUpstreamIfaceTypes.contains(TYPE_WIFI));
-        }
-
-        for (TetheringConfiguration cfg : Arrays.asList(cfgWifi, cfgMobileWifiHipri, cfgWifiDun,
-                cfgMobileWifiHipriDun)) {
-            msg = "config=" + cfg.toString();
-            assertTrue(msg, cfg.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE));
-            assertTrue(msg, cfg.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE_HIPRI));
-        }
-        msg = "config=" + cfgWifiMobile.toString();
-        assertTrue(msg, cfgWifiMobile.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE));
-        assertFalse(msg, cfgWifiMobile.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE_HIPRI));
-        msg = "config=" + cfgWifiHipri.toString();
-        assertFalse(msg, cfgWifiHipri.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE));
-        assertTrue(msg, cfgWifiHipri.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE_HIPRI));
-
-    }
-
-    @Test
-    public void testNoDefinedUpstreamTypesAddsEthernet() {
-        when(mResources.getIntArray(R.array.config_tether_upstream_types)).thenReturn(new int[]{});
-        when(mTelephonyManager.isTetheringApnRequired()).thenReturn(false);
-
-        final TetheringConfiguration cfg = new TetheringConfiguration(
-                mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
-        final Iterator<Integer> upstreamIterator = cfg.preferredUpstreamIfaceTypes.iterator();
-        assertTrue(upstreamIterator.hasNext());
-        assertEquals(TYPE_ETHERNET, upstreamIterator.next().intValue());
-        // The following is because the code always adds some kind of mobile
-        // upstream, be it DUN or, in this case where DUN is NOT required,
-        // make sure there is at least one of MOBILE or HIPRI. With the empty
-        // list of the configuration in this test, it will always add both
-        // MOBILE and HIPRI, in that order.
-        assertTrue(upstreamIterator.hasNext());
-        assertEquals(TYPE_MOBILE, upstreamIterator.next().intValue());
-        assertTrue(upstreamIterator.hasNext());
-        assertEquals(TYPE_MOBILE_HIPRI, upstreamIterator.next().intValue());
-        assertFalse(upstreamIterator.hasNext());
-    }
-
-    @Test
-    public void testDefinedUpstreamTypesSansEthernetAddsEthernet() {
-        when(mResources.getIntArray(R.array.config_tether_upstream_types)).thenReturn(
-                new int[]{TYPE_WIFI, TYPE_MOBILE_HIPRI});
-        when(mTelephonyManager.isTetheringApnRequired()).thenReturn(false);
-
-        final TetheringConfiguration cfg = new TetheringConfiguration(
-                mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
-        final Iterator<Integer> upstreamIterator = cfg.preferredUpstreamIfaceTypes.iterator();
-        assertTrue(upstreamIterator.hasNext());
-        assertEquals(TYPE_ETHERNET, upstreamIterator.next().intValue());
-        assertTrue(upstreamIterator.hasNext());
-        assertEquals(TYPE_WIFI, upstreamIterator.next().intValue());
-        assertTrue(upstreamIterator.hasNext());
-        assertEquals(TYPE_MOBILE_HIPRI, upstreamIterator.next().intValue());
-        assertFalse(upstreamIterator.hasNext());
-    }
-
-    @Test
-    public void testDefinedUpstreamTypesWithEthernetDoesNotAddEthernet() {
-        when(mResources.getIntArray(R.array.config_tether_upstream_types))
-                .thenReturn(new int[]{TYPE_WIFI, TYPE_ETHERNET, TYPE_MOBILE_HIPRI});
-        when(mTelephonyManager.isTetheringApnRequired()).thenReturn(false);
-
-        final TetheringConfiguration cfg = new TetheringConfiguration(
-                mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
-        final Iterator<Integer> upstreamIterator = cfg.preferredUpstreamIfaceTypes.iterator();
-        assertTrue(upstreamIterator.hasNext());
-        assertEquals(TYPE_WIFI, upstreamIterator.next().intValue());
-        assertTrue(upstreamIterator.hasNext());
-        assertEquals(TYPE_ETHERNET, upstreamIterator.next().intValue());
-        assertTrue(upstreamIterator.hasNext());
-        assertEquals(TYPE_MOBILE_HIPRI, upstreamIterator.next().intValue());
-        assertFalse(upstreamIterator.hasNext());
-    }
-
-    private void initializeBpfOffloadConfiguration(
-            final boolean fromRes, final String fromDevConfig) {
-        when(mResources.getBoolean(R.bool.config_tether_enable_bpf_offload)).thenReturn(fromRes);
-        doReturn(fromDevConfig).when(
-                () -> DeviceConfig.getProperty(eq(NAMESPACE_CONNECTIVITY),
-                eq(TetheringConfiguration.OVERRIDE_TETHER_ENABLE_BPF_OFFLOAD)));
-    }
-
-    @Test
-    public void testBpfOffloadEnabledByResource() {
-        initializeBpfOffloadConfiguration(true, null /* unset */);
-        final TetheringConfiguration enableByRes =
-                new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
-        assertTrue(enableByRes.isBpfOffloadEnabled());
-    }
-
-    @Test
-    public void testBpfOffloadEnabledByDeviceConfigOverride() {
-        for (boolean res : new boolean[]{true, false}) {
-            initializeBpfOffloadConfiguration(res, "true");
-            final TetheringConfiguration enableByDevConOverride =
-                    new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
-            assertTrue(enableByDevConOverride.isBpfOffloadEnabled());
-        }
-    }
-
-    @Test
-    public void testBpfOffloadDisabledByResource() {
-        initializeBpfOffloadConfiguration(false, null /* unset */);
-        final TetheringConfiguration disableByRes =
-                new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
-        assertFalse(disableByRes.isBpfOffloadEnabled());
-    }
-
-    @Test
-    public void testBpfOffloadDisabledByDeviceConfigOverride() {
-        for (boolean res : new boolean[]{true, false}) {
-            initializeBpfOffloadConfiguration(res, "false");
-            final TetheringConfiguration disableByDevConOverride =
-                    new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
-            assertFalse(disableByDevConOverride.isBpfOffloadEnabled());
-        }
-    }
-
-    @Test
-    public void testNewDhcpServerDisabled() {
-        when(mResources.getBoolean(R.bool.config_tether_enable_legacy_dhcp_server)).thenReturn(
-                true);
-        doReturn("false").when(
-                () -> DeviceConfig.getProperty(eq(NAMESPACE_CONNECTIVITY),
-                eq(TetheringConfiguration.TETHER_ENABLE_LEGACY_DHCP_SERVER)));
-
-        final TetheringConfiguration enableByRes =
-                new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
-        assertTrue(enableByRes.enableLegacyDhcpServer);
-
-        when(mResources.getBoolean(R.bool.config_tether_enable_legacy_dhcp_server)).thenReturn(
-                false);
-        doReturn("true").when(
-                () -> DeviceConfig.getProperty(eq(NAMESPACE_CONNECTIVITY),
-                eq(TetheringConfiguration.TETHER_ENABLE_LEGACY_DHCP_SERVER)));
-
-        final TetheringConfiguration enableByDevConfig =
-                new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
-        assertTrue(enableByDevConfig.enableLegacyDhcpServer);
-    }
-
-    @Test
-    public void testNewDhcpServerEnabled() {
-        when(mResources.getBoolean(R.bool.config_tether_enable_legacy_dhcp_server)).thenReturn(
-                false);
-        doReturn("false").when(
-                () -> DeviceConfig.getProperty(eq(NAMESPACE_CONNECTIVITY),
-                eq(TetheringConfiguration.TETHER_ENABLE_LEGACY_DHCP_SERVER)));
-
-        final TetheringConfiguration cfg =
-                new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
-
-        assertFalse(cfg.enableLegacyDhcpServer);
-    }
-
-    @Test
-    public void testOffloadIntervalByResource() {
-        final TetheringConfiguration intervalByDefault =
-                new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
-        assertEquals(TetheringConfiguration.DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS,
-                intervalByDefault.getOffloadPollInterval());
-
-        final int[] testOverrides = {0, 3000, -1};
-        for (final int override : testOverrides) {
-            when(mResources.getInteger(R.integer.config_tether_offload_poll_interval)).thenReturn(
-                    override);
-            final TetheringConfiguration overrideByRes =
-                    new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
-            assertEquals(override, overrideByRes.getOffloadPollInterval());
-        }
-    }
-
-    @Test
-    public void testGetResourcesBySubId() {
-        setUpResourceForSubId();
-        final TetheringConfiguration cfg = new TetheringConfiguration(
-                mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
-        assertTrue(cfg.provisioningApp.length == 0);
-        final int anyValidSubId = 1;
-        final MockTetheringConfiguration mockCfg =
-                new MockTetheringConfiguration(mMockContext, mLog, anyValidSubId);
-        assertEquals(mockCfg.provisioningApp[0], PROVISIONING_APP_NAME[0]);
-        assertEquals(mockCfg.provisioningApp[1], PROVISIONING_APP_NAME[1]);
-        assertEquals(mockCfg.provisioningAppNoUi, PROVISIONING_NO_UI_APP_NAME);
-        assertEquals(mockCfg.provisioningResponse, PROVISIONING_APP_RESPONSE);
-    }
-
-    private void setUpResourceForSubId() {
-        when(mResourcesForSubId.getStringArray(
-                R.array.config_tether_dhcp_range)).thenReturn(new String[0]);
-        when(mResourcesForSubId.getStringArray(
-                R.array.config_tether_usb_regexs)).thenReturn(new String[0]);
-        when(mResourcesForSubId.getStringArray(
-                R.array.config_tether_wifi_regexs)).thenReturn(new String[]{ "test_wlan\\d" });
-        when(mResourcesForSubId.getStringArray(
-                R.array.config_tether_bluetooth_regexs)).thenReturn(new String[0]);
-        when(mResourcesForSubId.getIntArray(R.array.config_tether_upstream_types)).thenReturn(
-                new int[0]);
-        when(mResourcesForSubId.getStringArray(
-                R.array.config_mobile_hotspot_provision_app)).thenReturn(PROVISIONING_APP_NAME);
-        when(mResourcesForSubId.getString(R.string.config_mobile_hotspot_provision_app_no_ui))
-                .thenReturn(PROVISIONING_NO_UI_APP_NAME);
-        when(mResourcesForSubId.getString(
-                R.string.config_mobile_hotspot_provision_response)).thenReturn(
-                PROVISIONING_APP_RESPONSE);
-    }
-
-    @Test
-    public void testEnableLegacyWifiP2PAddress() throws Exception {
-        final TetheringConfiguration defaultCfg = new TetheringConfiguration(
-                mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
-        assertFalse(defaultCfg.shouldEnableWifiP2pDedicatedIp());
-
-        when(mResources.getBoolean(R.bool.config_tether_enable_legacy_wifi_p2p_dedicated_ip))
-                .thenReturn(true);
-        final TetheringConfiguration testCfg = new TetheringConfiguration(
-                mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
-        assertTrue(testCfg.shouldEnableWifiP2pDedicatedIp());
-    }
-}
diff --git a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/TetheringNotificationUpdaterTest.kt b/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/TetheringNotificationUpdaterTest.kt
deleted file mode 100644
index 75c819b..0000000
--- a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/TetheringNotificationUpdaterTest.kt
+++ /dev/null
@@ -1,444 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.networkstack.tethering
-
-import android.app.Notification
-import android.app.NotificationManager
-import android.app.PendingIntent
-import android.app.PendingIntent.FLAG_IMMUTABLE
-import android.content.Context
-import android.content.Intent
-import android.content.pm.ActivityInfo
-import android.content.pm.ApplicationInfo
-import android.content.pm.PackageManager
-import android.content.pm.ResolveInfo
-import android.content.res.Resources
-import android.net.ConnectivityManager.TETHERING_WIFI
-import android.net.NetworkCapabilities
-import android.net.NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING
-import android.os.Handler
-import android.os.HandlerThread
-import android.os.Looper
-import android.os.UserHandle
-import android.provider.Settings
-import android.telephony.TelephonyManager
-import androidx.test.filters.SmallTest
-import androidx.test.platform.app.InstrumentationRegistry
-import androidx.test.runner.AndroidJUnit4
-import com.android.internal.util.test.BroadcastInterceptingContext
-import com.android.networkstack.tethering.TetheringNotificationUpdater.ACTION_DISABLE_TETHERING
-import com.android.networkstack.tethering.TetheringNotificationUpdater.DOWNSTREAM_NONE
-import com.android.networkstack.tethering.TetheringNotificationUpdater.EVENT_SHOW_NO_UPSTREAM
-import com.android.networkstack.tethering.TetheringNotificationUpdater.NO_UPSTREAM_NOTIFICATION_ID
-import com.android.networkstack.tethering.TetheringNotificationUpdater.RESTRICTED_NOTIFICATION_ID
-import com.android.networkstack.tethering.TetheringNotificationUpdater.ROAMING_NOTIFICATION_ID
-import com.android.networkstack.tethering.TetheringNotificationUpdater.VERIZON_CARRIER_ID
-import com.android.networkstack.tethering.TetheringNotificationUpdater.getSettingsPackageName
-import com.android.testutils.waitForIdle
-import org.junit.After
-import org.junit.Assert.assertEquals
-import org.junit.Assert.assertNotNull
-import org.junit.Assert.fail
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.mockito.ArgumentCaptor
-import org.mockito.ArgumentMatchers.any
-import org.mockito.ArgumentMatchers.anyInt
-import org.mockito.ArgumentMatchers.eq
-import org.mockito.Mock
-import org.mockito.Mockito.doReturn
-import org.mockito.Mockito.mock
-import org.mockito.Mockito.never
-import org.mockito.Mockito.reset
-import org.mockito.Mockito.times
-import org.mockito.Mockito.verify
-import org.mockito.Mockito.verifyZeroInteractions
-import org.mockito.MockitoAnnotations
-
-const val TEST_SUBID = 1
-const val WIFI_MASK = 1 shl TETHERING_WIFI
-const val TEST_DISALLOW_TITLE = "Tether function is disallowed"
-const val TEST_DISALLOW_MESSAGE = "Please contact your admin"
-const val TEST_NO_UPSTREAM_TITLE = "Hotspot has no internet access"
-const val TEST_NO_UPSTREAM_MESSAGE = "Device cannot connect to internet."
-const val TEST_NO_UPSTREAM_BUTTON = "Turn off hotspot"
-const val TEST_ROAMING_TITLE = "Hotspot is on"
-const val TEST_ROAMING_MESSAGE = "Additional charges may apply while roaming."
-
-@RunWith(AndroidJUnit4::class)
-@SmallTest
-class TetheringNotificationUpdaterTest {
-    // lateinit used here for mocks as they need to be reinitialized between each test and the test
-    // should crash if they are used before being initialized.
-    @Mock private lateinit var mockContext: Context
-    @Mock private lateinit var notificationManager: NotificationManager
-    @Mock private lateinit var telephonyManager: TelephonyManager
-    @Mock private lateinit var testResources: Resources
-
-    // lateinit for these classes under test, as they should be reset to a different instance for
-    // every test but should always be initialized before use (or the test should crash).
-    private lateinit var context: TestContext
-    private lateinit var notificationUpdater: TetheringNotificationUpdater
-
-    // Initializing the following members depends on initializing some of the mocks and
-    // is more logically done in setup().
-    private lateinit var fakeTetheringThread: HandlerThread
-
-    private val ROAMING_CAPABILITIES = NetworkCapabilities()
-    private val HOME_CAPABILITIES = NetworkCapabilities().addCapability(NET_CAPABILITY_NOT_ROAMING)
-    private val NOTIFICATION_ICON_ID = R.drawable.stat_sys_tether_general
-    private val TIMEOUT_MS = 500L
-    private val ACTIVITY_PENDING_INTENT = 0
-    private val BROADCAST_PENDING_INTENT = 1
-
-    private inner class TestContext(c: Context) : BroadcastInterceptingContext(c) {
-        override fun createContextAsUser(user: UserHandle, flags: Int) =
-                if (user == UserHandle.ALL) mockContext else this
-        override fun getSystemService(name: String) =
-                if (name == Context.TELEPHONY_SERVICE) telephonyManager
-                else super.getSystemService(name)
-    }
-
-    private inner class WrappedNotificationUpdater(c: Context, looper: Looper)
-        : TetheringNotificationUpdater(c, looper) {
-        override fun getResourcesForSubId(c: Context, subId: Int) =
-                if (subId == TEST_SUBID) testResources else super.getResourcesForSubId(c, subId)
-    }
-
-    private fun setupResources() {
-        doReturn(5).`when`(testResources)
-                .getInteger(R.integer.delay_to_show_no_upstream_after_no_backhaul)
-        doReturn(true).`when`(testResources)
-                .getBoolean(R.bool.config_upstream_roaming_notification)
-        doReturn(TEST_DISALLOW_TITLE).`when`(testResources)
-                .getString(R.string.disable_tether_notification_title)
-        doReturn(TEST_DISALLOW_MESSAGE).`when`(testResources)
-                .getString(R.string.disable_tether_notification_message)
-        doReturn(TEST_NO_UPSTREAM_TITLE).`when`(testResources)
-                .getString(R.string.no_upstream_notification_title)
-        doReturn(TEST_NO_UPSTREAM_MESSAGE).`when`(testResources)
-                .getString(R.string.no_upstream_notification_message)
-        doReturn(TEST_NO_UPSTREAM_BUTTON).`when`(testResources)
-                .getString(R.string.no_upstream_notification_disable_button)
-        doReturn(TEST_ROAMING_TITLE).`when`(testResources)
-                .getString(R.string.upstream_roaming_notification_title)
-        doReturn(TEST_ROAMING_MESSAGE).`when`(testResources)
-                .getString(R.string.upstream_roaming_notification_message)
-    }
-
-    @Before
-    fun setUp() {
-        MockitoAnnotations.initMocks(this)
-        context = TestContext(InstrumentationRegistry.getInstrumentation().context)
-        doReturn(notificationManager).`when`(mockContext)
-                .getSystemService(Context.NOTIFICATION_SERVICE)
-        fakeTetheringThread = HandlerThread(this::class.java.simpleName)
-        fakeTetheringThread.start()
-        notificationUpdater = WrappedNotificationUpdater(context, fakeTetheringThread.looper)
-        setupResources()
-    }
-
-    @After
-    fun tearDown() {
-        fakeTetheringThread.quitSafely()
-    }
-
-    private fun verifyActivityPendingIntent(intent: Intent, flags: Int) {
-        // Use FLAG_NO_CREATE to verify whether PendingIntent has FLAG_IMMUTABLE flag(forcefully add
-        // the flag in creating arguments). If the described PendingIntent does not already exist,
-        // getActivity() will return null instead of PendingIntent object.
-        val pi = PendingIntent.getActivity(
-                context.createContextAsUser(UserHandle.CURRENT, 0 /* flags */),
-                0 /* requestCode */,
-                intent,
-                flags or FLAG_IMMUTABLE or PendingIntent.FLAG_NO_CREATE,
-                null /* options */)
-        assertNotNull("Activity PendingIntent with FLAG_IMMUTABLE does not exist.", pi)
-    }
-
-    private fun verifyBroadcastPendingIntent(intent: Intent, flags: Int) {
-        // Use FLAG_NO_CREATE to verify whether PendingIntent has FLAG_IMMUTABLE flag(forcefully add
-        // the flag in creating arguments). If the described PendingIntent does not already exist,
-        // getBroadcast() will return null instead of PendingIntent object.
-        val pi = PendingIntent.getBroadcast(
-                context.createContextAsUser(UserHandle.CURRENT, 0 /* flags */),
-                0 /* requestCode */,
-                intent,
-                flags or FLAG_IMMUTABLE or PendingIntent.FLAG_NO_CREATE)
-        assertNotNull("Broadcast PendingIntent with FLAG_IMMUTABLE does not exist.", pi)
-    }
-
-    private fun Notification.title() = this.extras.getString(Notification.EXTRA_TITLE)
-    private fun Notification.text() = this.extras.getString(Notification.EXTRA_TEXT)
-
-    private fun verifyNotification(
-        iconId: Int,
-        title: String,
-        text: String,
-        id: Int,
-        intentSenderType: Int,
-        intent: Intent,
-        flags: Int
-    ) {
-        verify(notificationManager, never()).cancel(any(), eq(id))
-
-        val notificationCaptor = ArgumentCaptor.forClass(Notification::class.java)
-        verify(notificationManager, times(1))
-                .notify(any(), eq(id), notificationCaptor.capture())
-
-        val notification = notificationCaptor.getValue()
-        assertEquals(iconId, notification.smallIcon.resId)
-        assertEquals(title, notification.title())
-        assertEquals(text, notification.text())
-
-        when (intentSenderType) {
-            ACTIVITY_PENDING_INTENT -> verifyActivityPendingIntent(intent, flags)
-            BROADCAST_PENDING_INTENT -> verifyBroadcastPendingIntent(intent, flags)
-        }
-
-        reset(notificationManager)
-    }
-
-    private fun verifyNotificationCancelled(
-        notificationIds: List<Int>,
-        resetAfterVerified: Boolean = true
-    ) {
-        notificationIds.forEach {
-            verify(notificationManager, times(1)).cancel(any(), eq(it))
-        }
-        if (resetAfterVerified) reset(notificationManager)
-    }
-
-    @Test
-    fun testRestrictedNotification() {
-        val settingsIntent = Intent(Settings.ACTION_TETHER_SETTINGS)
-                .setPackage(getSettingsPackageName(context.packageManager))
-                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
-
-        // Set test sub id.
-        notificationUpdater.onActiveDataSubscriptionIdChanged(TEST_SUBID)
-        verifyNotificationCancelled(listOf(NO_UPSTREAM_NOTIFICATION_ID, ROAMING_NOTIFICATION_ID))
-
-        // User restrictions on. Show restricted notification.
-        notificationUpdater.notifyTetheringDisabledByRestriction()
-        verifyNotification(NOTIFICATION_ICON_ID, TEST_DISALLOW_TITLE, TEST_DISALLOW_MESSAGE,
-                RESTRICTED_NOTIFICATION_ID, ACTIVITY_PENDING_INTENT, settingsIntent, FLAG_IMMUTABLE)
-
-        // User restrictions off. Clear notification.
-        notificationUpdater.tetheringRestrictionLifted()
-        verifyNotificationCancelled(listOf(RESTRICTED_NOTIFICATION_ID))
-
-        // No downstream.
-        notificationUpdater.onDownstreamChanged(DOWNSTREAM_NONE)
-        verifyZeroInteractions(notificationManager)
-
-        // User restrictions on again. Show restricted notification.
-        notificationUpdater.notifyTetheringDisabledByRestriction()
-        verifyNotification(NOTIFICATION_ICON_ID, TEST_DISALLOW_TITLE, TEST_DISALLOW_MESSAGE,
-                RESTRICTED_NOTIFICATION_ID, ACTIVITY_PENDING_INTENT, settingsIntent, FLAG_IMMUTABLE)
-    }
-
-    val MAX_BACKOFF_MS = 200L
-    /**
-     * Waits for all messages, including delayed ones, to be processed.
-     *
-     * This will wait until the handler has no more messages to be processed including
-     * delayed ones, or the timeout has expired. It uses an exponential backoff strategy
-     * to wait longer and longer to consume less CPU, with the max granularity being
-     * MAX_BACKOFF_MS.
-     *
-     * @return true if all messages have been processed including delayed ones, false if timeout
-     *
-     * TODO: Move this method to com.android.testutils.HandlerUtils.kt.
-     */
-    private fun Handler.waitForDelayedMessage(what: Int?, timeoutMs: Long) {
-        fun hasMatchingMessages() =
-                if (what == null) hasMessagesOrCallbacks() else hasMessages(what)
-        val expiry = System.currentTimeMillis() + timeoutMs
-        var delay = 5L
-        while (System.currentTimeMillis() < expiry && hasMatchingMessages()) {
-            // None of Handler, Looper, Message and MessageQueue expose any way to retrieve
-            // the time when the next (let alone the last) message will be processed, so
-            // short of examining the internals with reflection sleep() is the only solution.
-            Thread.sleep(delay)
-            delay = (delay * 2)
-                    .coerceAtMost(expiry - System.currentTimeMillis())
-                    .coerceAtMost(MAX_BACKOFF_MS)
-        }
-
-        val timeout = expiry - System.currentTimeMillis()
-        if (timeout <= 0) fail("Delayed message did not process yet after ${timeoutMs}ms")
-        waitForIdle(timeout)
-    }
-
-    @Test
-    fun testNoUpstreamNotification() {
-        val disableIntent = Intent(ACTION_DISABLE_TETHERING).setPackage(context.packageName)
-
-        // Set test sub id.
-        notificationUpdater.onActiveDataSubscriptionIdChanged(TEST_SUBID)
-        verifyNotificationCancelled(listOf(NO_UPSTREAM_NOTIFICATION_ID, ROAMING_NOTIFICATION_ID))
-
-        // Wifi downstream.
-        notificationUpdater.onDownstreamChanged(WIFI_MASK)
-        verifyNotificationCancelled(listOf(NO_UPSTREAM_NOTIFICATION_ID, ROAMING_NOTIFICATION_ID))
-
-        // There is no upstream. Show no upstream notification.
-        notificationUpdater.onUpstreamCapabilitiesChanged(null)
-        notificationUpdater.handler.waitForDelayedMessage(EVENT_SHOW_NO_UPSTREAM, TIMEOUT_MS)
-        verifyNotification(NOTIFICATION_ICON_ID, TEST_NO_UPSTREAM_TITLE, TEST_NO_UPSTREAM_MESSAGE,
-                NO_UPSTREAM_NOTIFICATION_ID, BROADCAST_PENDING_INTENT, disableIntent,
-                FLAG_IMMUTABLE)
-
-        // Same capabilities changed. Nothing happened.
-        notificationUpdater.onUpstreamCapabilitiesChanged(null)
-        verifyZeroInteractions(notificationManager)
-
-        // Upstream come back. Clear no upstream notification.
-        notificationUpdater.onUpstreamCapabilitiesChanged(HOME_CAPABILITIES)
-        verifyNotificationCancelled(listOf(NO_UPSTREAM_NOTIFICATION_ID))
-
-        // No upstream again. Show no upstream notification.
-        notificationUpdater.onUpstreamCapabilitiesChanged(null)
-        notificationUpdater.handler.waitForDelayedMessage(EVENT_SHOW_NO_UPSTREAM, TIMEOUT_MS)
-        verifyNotification(NOTIFICATION_ICON_ID, TEST_NO_UPSTREAM_TITLE, TEST_NO_UPSTREAM_MESSAGE,
-                NO_UPSTREAM_NOTIFICATION_ID, BROADCAST_PENDING_INTENT, disableIntent,
-                FLAG_IMMUTABLE)
-
-        // No downstream.
-        notificationUpdater.onDownstreamChanged(DOWNSTREAM_NONE)
-        verifyNotificationCancelled(listOf(NO_UPSTREAM_NOTIFICATION_ID, ROAMING_NOTIFICATION_ID))
-
-        // Wifi downstream and home capabilities.
-        notificationUpdater.onDownstreamChanged(WIFI_MASK)
-        notificationUpdater.onUpstreamCapabilitiesChanged(HOME_CAPABILITIES)
-        verifyNotificationCancelled(listOf(NO_UPSTREAM_NOTIFICATION_ID, ROAMING_NOTIFICATION_ID))
-
-        // Set R.integer.delay_to_show_no_upstream_after_no_backhaul to -1 and change to no upstream
-        // again. Don't put up no upstream notification.
-        doReturn(-1).`when`(testResources)
-                .getInteger(R.integer.delay_to_show_no_upstream_after_no_backhaul)
-        notificationUpdater.onUpstreamCapabilitiesChanged(null)
-        notificationUpdater.handler.waitForDelayedMessage(EVENT_SHOW_NO_UPSTREAM, TIMEOUT_MS)
-        verifyNotificationCancelled(listOf(NO_UPSTREAM_NOTIFICATION_ID))
-    }
-
-    @Test
-    fun testGetResourcesForSubId() {
-        doReturn(telephonyManager).`when`(telephonyManager).createForSubscriptionId(anyInt())
-        doReturn(1234).`when`(telephonyManager).getSimCarrierId()
-        doReturn("000000").`when`(telephonyManager).getSimOperator()
-
-        val subId = -2 // Use invalid subId to avoid getting resource from cache or real subId.
-        val config = context.resources.configuration
-        var res = notificationUpdater.getResourcesForSubId(context, subId)
-        assertEquals(config.mcc, res.configuration.mcc)
-        assertEquals(config.mnc, res.configuration.mnc)
-
-        doReturn(VERIZON_CARRIER_ID).`when`(telephonyManager).getSimCarrierId()
-        res = notificationUpdater.getResourcesForSubId(context, subId)
-        assertEquals(config.mcc, res.configuration.mcc)
-        assertEquals(config.mnc, res.configuration.mnc)
-
-        doReturn("20404").`when`(telephonyManager).getSimOperator()
-        res = notificationUpdater.getResourcesForSubId(context, subId)
-        assertEquals(311, res.configuration.mcc)
-        assertEquals(480, res.configuration.mnc)
-    }
-
-    @Test
-    fun testRoamingNotification() {
-        val disableIntent = Intent(ACTION_DISABLE_TETHERING).setPackage(context.packageName)
-        val settingsIntent = Intent(Settings.ACTION_TETHER_SETTINGS)
-                .setPackage(getSettingsPackageName(context.packageManager))
-                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
-
-        // Set test sub id.
-        notificationUpdater.onActiveDataSubscriptionIdChanged(TEST_SUBID)
-        verifyNotificationCancelled(listOf(NO_UPSTREAM_NOTIFICATION_ID, ROAMING_NOTIFICATION_ID))
-
-        // Wifi downstream.
-        notificationUpdater.onDownstreamChanged(WIFI_MASK)
-        verifyNotificationCancelled(listOf(NO_UPSTREAM_NOTIFICATION_ID, ROAMING_NOTIFICATION_ID))
-
-        // Upstream capabilities changed to roaming state. Show roaming notification.
-        notificationUpdater.onUpstreamCapabilitiesChanged(ROAMING_CAPABILITIES)
-        verifyNotification(NOTIFICATION_ICON_ID, TEST_ROAMING_TITLE, TEST_ROAMING_MESSAGE,
-                ROAMING_NOTIFICATION_ID, ACTIVITY_PENDING_INTENT, settingsIntent, FLAG_IMMUTABLE)
-
-        // Same capabilities change. Nothing happened.
-        notificationUpdater.onUpstreamCapabilitiesChanged(ROAMING_CAPABILITIES)
-        verifyZeroInteractions(notificationManager)
-
-        // Upstream capabilities changed to home state. Clear roaming notification.
-        notificationUpdater.onUpstreamCapabilitiesChanged(HOME_CAPABILITIES)
-        verifyNotificationCancelled(listOf(ROAMING_NOTIFICATION_ID))
-
-        // Upstream capabilities changed to roaming state again. Show roaming notification.
-        notificationUpdater.onUpstreamCapabilitiesChanged(ROAMING_CAPABILITIES)
-        verifyNotification(NOTIFICATION_ICON_ID, TEST_ROAMING_TITLE, TEST_ROAMING_MESSAGE,
-                ROAMING_NOTIFICATION_ID, ACTIVITY_PENDING_INTENT, settingsIntent, FLAG_IMMUTABLE)
-
-        // No upstream. Clear roaming notification and show no upstream notification.
-        notificationUpdater.onUpstreamCapabilitiesChanged(null)
-        notificationUpdater.handler.waitForDelayedMessage(EVENT_SHOW_NO_UPSTREAM, TIMEOUT_MS)
-        verifyNotificationCancelled(listOf(ROAMING_NOTIFICATION_ID), false)
-        verifyNotification(NOTIFICATION_ICON_ID, TEST_NO_UPSTREAM_TITLE, TEST_NO_UPSTREAM_MESSAGE,
-                NO_UPSTREAM_NOTIFICATION_ID, BROADCAST_PENDING_INTENT, disableIntent,
-                FLAG_IMMUTABLE)
-
-        // No downstream.
-        notificationUpdater.onDownstreamChanged(DOWNSTREAM_NONE)
-        verifyNotificationCancelled(listOf(NO_UPSTREAM_NOTIFICATION_ID, ROAMING_NOTIFICATION_ID))
-
-        // Wifi downstream again.
-        notificationUpdater.onDownstreamChanged(WIFI_MASK)
-        notificationUpdater.handler.waitForDelayedMessage(EVENT_SHOW_NO_UPSTREAM, TIMEOUT_MS)
-        verifyNotificationCancelled(listOf(ROAMING_NOTIFICATION_ID), false)
-        verifyNotification(NOTIFICATION_ICON_ID, TEST_NO_UPSTREAM_TITLE, TEST_NO_UPSTREAM_MESSAGE,
-                NO_UPSTREAM_NOTIFICATION_ID, BROADCAST_PENDING_INTENT, disableIntent,
-                FLAG_IMMUTABLE)
-
-        // Set R.bool.config_upstream_roaming_notification to false and change upstream
-        // network to roaming state again. No roaming notification.
-        doReturn(false).`when`(testResources)
-                .getBoolean(R.bool.config_upstream_roaming_notification)
-        notificationUpdater.onUpstreamCapabilitiesChanged(ROAMING_CAPABILITIES)
-        verifyNotificationCancelled(listOf(NO_UPSTREAM_NOTIFICATION_ID, ROAMING_NOTIFICATION_ID))
-    }
-
-    @Test
-    fun testGetSettingsPackageName() {
-        val defaultSettingsPackageName = "com.android.settings"
-        val testSettingsPackageName = "com.android.test.settings"
-        val pm = mock(PackageManager::class.java)
-        doReturn(null).`when`(pm).resolveActivity(any(), anyInt())
-        assertEquals(defaultSettingsPackageName, getSettingsPackageName(pm))
-
-        val resolveInfo = ResolveInfo().apply {
-            activityInfo = ActivityInfo().apply {
-                name = "test"
-                applicationInfo = ApplicationInfo().apply {
-                    packageName = testSettingsPackageName
-                }
-            }
-        }
-        doReturn(resolveInfo).`when`(pm).resolveActivity(any(), anyInt())
-        assertEquals(testSettingsPackageName, getSettingsPackageName(pm))
-    }
-}
diff --git a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/TetheringServiceTest.java b/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/TetheringServiceTest.java
deleted file mode 100644
index 7bba67b..0000000
--- a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/TetheringServiceTest.java
+++ /dev/null
@@ -1,484 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.networkstack.tethering;
-
-import static android.Manifest.permission.ACCESS_NETWORK_STATE;
-import static android.Manifest.permission.TETHER_PRIVILEGED;
-import static android.Manifest.permission.WRITE_SETTINGS;
-import static android.net.TetheringManager.TETHERING_WIFI;
-import static android.net.TetheringManager.TETHER_ERROR_NO_ACCESS_TETHERING_PERMISSION;
-import static android.net.TetheringManager.TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION;
-import static android.net.TetheringManager.TETHER_ERROR_NO_ERROR;
-
-import static org.junit.Assert.assertEquals;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.reset;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.when;
-
-import android.app.UiAutomation;
-import android.content.Intent;
-import android.net.IIntResultListener;
-import android.net.ITetheringConnector;
-import android.net.ITetheringEventCallback;
-import android.net.TetheringRequestParcel;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.ResultReceiver;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.filters.SmallTest;
-import androidx.test.rule.ServiceTestRule;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.networkstack.tethering.MockTetheringService.MockTetheringConnector;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public final class TetheringServiceTest {
-    private static final String TEST_IFACE_NAME = "test_wlan0";
-    private static final String TEST_CALLER_PKG = "com.android.shell";
-    private static final String TEST_ATTRIBUTION_TAG = null;
-    @Mock private ITetheringEventCallback mITetheringEventCallback;
-    @Rule public ServiceTestRule mServiceTestRule;
-    private Tethering mTethering;
-    private Intent mMockServiceIntent;
-    private ITetheringConnector mTetheringConnector;
-    private UiAutomation mUiAutomation;
-
-    private class TestTetheringResult extends IIntResultListener.Stub {
-        private int mResult = -1; // Default value that does not match any result code.
-        @Override
-        public void onResult(final int resultCode) {
-            mResult = resultCode;
-        }
-
-        public void assertResult(final int expected) {
-            assertEquals(expected, mResult);
-        }
-    }
-
-    private class MyResultReceiver extends ResultReceiver {
-        MyResultReceiver(Handler handler) {
-            super(handler);
-        }
-        private int mResult = -1; // Default value that does not match any result code.
-        @Override
-        protected void onReceiveResult(int resultCode, Bundle resultData) {
-            mResult = resultCode;
-        }
-
-        public void assertResult(int expected) {
-            assertEquals(expected, mResult);
-        }
-    }
-
-    @Before
-    public void setUp() throws Exception {
-        MockitoAnnotations.initMocks(this);
-        mUiAutomation =
-            InstrumentationRegistry.getInstrumentation().getUiAutomation();
-        mServiceTestRule = new ServiceTestRule();
-        mMockServiceIntent = new Intent(
-                InstrumentationRegistry.getTargetContext(),
-                MockTetheringService.class);
-        final MockTetheringConnector mockConnector =
-                (MockTetheringConnector) mServiceTestRule.bindService(mMockServiceIntent);
-        mTetheringConnector = mockConnector.getTetheringConnector();
-        final MockTetheringService service = mockConnector.getService();
-        mTethering = service.getTethering();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        mServiceTestRule.unbindService();
-        mUiAutomation.dropShellPermissionIdentity();
-    }
-
-    private interface TestTetheringCall {
-        void runTetheringCall(TestTetheringResult result) throws Exception;
-    }
-
-    private void runAsNoPermission(final TestTetheringCall test) throws Exception {
-        runTetheringCall(test, new String[0]);
-    }
-
-    private void runAsTetherPrivileged(final TestTetheringCall test) throws Exception {
-        runTetheringCall(test, TETHER_PRIVILEGED);
-    }
-
-    private void runAsAccessNetworkState(final TestTetheringCall test) throws Exception {
-        runTetheringCall(test, ACCESS_NETWORK_STATE);
-    }
-
-    private void runAsWriteSettings(final TestTetheringCall test) throws Exception {
-        runTetheringCall(test, WRITE_SETTINGS);
-    }
-
-    private void runTetheringCall(final TestTetheringCall test, String... permissions)
-            throws Exception {
-        if (permissions.length > 0) mUiAutomation.adoptShellPermissionIdentity(permissions);
-        try {
-            when(mTethering.isTetheringSupported()).thenReturn(true);
-            test.runTetheringCall(new TestTetheringResult());
-        } finally {
-            mUiAutomation.dropShellPermissionIdentity();
-        }
-    }
-
-    private void verifyNoMoreInteractionsForTethering() {
-        verifyNoMoreInteractions(mTethering);
-        verifyNoMoreInteractions(mITetheringEventCallback);
-        reset(mTethering, mITetheringEventCallback);
-    }
-
-    private void runTether(final TestTetheringResult result) throws Exception {
-        when(mTethering.tether(TEST_IFACE_NAME)).thenReturn(TETHER_ERROR_NO_ERROR);
-        mTetheringConnector.tether(TEST_IFACE_NAME, TEST_CALLER_PKG, TEST_ATTRIBUTION_TAG, result);
-        verify(mTethering).isTetheringSupported();
-        verify(mTethering).tether(TEST_IFACE_NAME);
-        result.assertResult(TETHER_ERROR_NO_ERROR);
-    }
-
-    @Test
-    public void testTether() throws Exception {
-        runAsNoPermission((result) -> {
-            mTetheringConnector.tether(TEST_IFACE_NAME, TEST_CALLER_PKG, TEST_ATTRIBUTION_TAG,
-                    result);
-            verify(mTethering).isTetherProvisioningRequired();
-            result.assertResult(TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION);
-            verifyNoMoreInteractionsForTethering();
-        });
-
-        runAsTetherPrivileged((result) -> {
-            runTether(result);
-            verifyNoMoreInteractionsForTethering();
-        });
-
-        runAsWriteSettings((result) -> {
-            runTether(result);
-            verify(mTethering).isTetherProvisioningRequired();
-            verifyNoMoreInteractionsForTethering();
-        });
-    }
-
-    private void runUnTether(final TestTetheringResult result) throws Exception {
-        when(mTethering.untether(TEST_IFACE_NAME)).thenReturn(TETHER_ERROR_NO_ERROR);
-        mTetheringConnector.untether(TEST_IFACE_NAME, TEST_CALLER_PKG, TEST_ATTRIBUTION_TAG,
-                result);
-        verify(mTethering).isTetheringSupported();
-        verify(mTethering).untether(TEST_IFACE_NAME);
-        result.assertResult(TETHER_ERROR_NO_ERROR);
-    }
-
-    @Test
-    public void testUntether() throws Exception {
-        runAsNoPermission((result) -> {
-            mTetheringConnector.untether(TEST_IFACE_NAME, TEST_CALLER_PKG, TEST_ATTRIBUTION_TAG,
-                    result);
-            verify(mTethering).isTetherProvisioningRequired();
-            result.assertResult(TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION);
-            verifyNoMoreInteractionsForTethering();
-        });
-
-        runAsTetherPrivileged((result) -> {
-            runUnTether(result);
-            verifyNoMoreInteractionsForTethering();
-        });
-
-        runAsWriteSettings((result) -> {
-            runUnTether(result);
-            verify(mTethering).isTetherProvisioningRequired();
-            verifyNoMoreInteractionsForTethering();
-        });
-    }
-
-    private void runSetUsbTethering(final TestTetheringResult result) throws Exception {
-        when(mTethering.setUsbTethering(true /* enable */)).thenReturn(TETHER_ERROR_NO_ERROR);
-        mTetheringConnector.setUsbTethering(true /* enable */, TEST_CALLER_PKG,
-                TEST_ATTRIBUTION_TAG, result);
-        verify(mTethering).isTetheringSupported();
-        verify(mTethering).setUsbTethering(true /* enable */);
-        result.assertResult(TETHER_ERROR_NO_ERROR);
-    }
-
-    @Test
-    public void testSetUsbTethering() throws Exception {
-        runAsNoPermission((result) -> {
-            mTetheringConnector.setUsbTethering(true /* enable */, TEST_CALLER_PKG,
-                    TEST_ATTRIBUTION_TAG, result);
-            verify(mTethering).isTetherProvisioningRequired();
-            result.assertResult(TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION);
-            verifyNoMoreInteractionsForTethering();
-        });
-
-        runAsTetherPrivileged((result) -> {
-            runSetUsbTethering(result);
-            verifyNoMoreInteractionsForTethering();
-        });
-
-        runAsWriteSettings((result) -> {
-            runSetUsbTethering(result);
-            verify(mTethering).isTetherProvisioningRequired();
-            verifyNoMoreInteractionsForTethering();
-        });
-
-    }
-
-    private void runStartTethering(final TestTetheringResult result,
-            final TetheringRequestParcel request) throws Exception {
-        mTetheringConnector.startTethering(request, TEST_CALLER_PKG, TEST_ATTRIBUTION_TAG,
-                result);
-        verify(mTethering).isTetheringSupported();
-        verify(mTethering).startTethering(eq(request), eq(result));
-    }
-
-    @Test
-    public void testStartTethering() throws Exception {
-        final TetheringRequestParcel request = new TetheringRequestParcel();
-        request.tetheringType = TETHERING_WIFI;
-
-        runAsNoPermission((result) -> {
-            mTetheringConnector.startTethering(request, TEST_CALLER_PKG, TEST_ATTRIBUTION_TAG,
-                    result);
-            verify(mTethering).isTetherProvisioningRequired();
-            result.assertResult(TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION);
-            verifyNoMoreInteractionsForTethering();
-        });
-
-        runAsTetherPrivileged((result) -> {
-            runStartTethering(result, request);
-            verifyNoMoreInteractionsForTethering();
-        });
-
-        runAsWriteSettings((result) -> {
-            runStartTethering(result, request);
-            verify(mTethering).isTetherProvisioningRequired();
-            verifyNoMoreInteractionsForTethering();
-        });
-    }
-
-    private void runStartTetheringAndVerifyNoPermission(final TestTetheringResult result)
-            throws Exception {
-        final TetheringRequestParcel request = new TetheringRequestParcel();
-        request.tetheringType = TETHERING_WIFI;
-        request.exemptFromEntitlementCheck = true;
-        mTetheringConnector.startTethering(request, TEST_CALLER_PKG, TEST_ATTRIBUTION_TAG,
-                result);
-        result.assertResult(TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION);
-        verifyNoMoreInteractionsForTethering();
-    }
-
-    @Test
-    public void testFailToBypassEntitlementWithoutNeworkStackPermission() throws Exception {
-        final TetheringRequestParcel request = new TetheringRequestParcel();
-        request.tetheringType = TETHERING_WIFI;
-        request.exemptFromEntitlementCheck = true;
-
-        runAsNoPermission((result) -> {
-            runStartTetheringAndVerifyNoPermission(result);
-        });
-
-        runAsTetherPrivileged((result) -> {
-            runStartTetheringAndVerifyNoPermission(result);
-        });
-
-        runAsWriteSettings((result) -> {
-            runStartTetheringAndVerifyNoPermission(result);
-        });
-    }
-
-    private void runStopTethering(final TestTetheringResult result) throws Exception {
-        mTetheringConnector.stopTethering(TETHERING_WIFI, TEST_CALLER_PKG,
-                TEST_ATTRIBUTION_TAG, result);
-        verify(mTethering).isTetheringSupported();
-        verify(mTethering).stopTethering(TETHERING_WIFI);
-        result.assertResult(TETHER_ERROR_NO_ERROR);
-    }
-
-    @Test
-    public void testStopTethering() throws Exception {
-        runAsNoPermission((result) -> {
-            mTetheringConnector.stopTethering(TETHERING_WIFI, TEST_CALLER_PKG,
-                    TEST_ATTRIBUTION_TAG, result);
-            verify(mTethering).isTetherProvisioningRequired();
-            result.assertResult(TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION);
-            verifyNoMoreInteractionsForTethering();
-        });
-
-        runAsTetherPrivileged((result) -> {
-            runStopTethering(result);
-            verifyNoMoreInteractionsForTethering();
-        });
-
-        runAsWriteSettings((result) -> {
-            runStopTethering(result);
-            verify(mTethering).isTetherProvisioningRequired();
-            verifyNoMoreInteractionsForTethering();
-        });
-    }
-
-    private void runRequestLatestTetheringEntitlementResult() throws Exception {
-        final MyResultReceiver result = new MyResultReceiver(null);
-        mTetheringConnector.requestLatestTetheringEntitlementResult(TETHERING_WIFI, result,
-                true /* showEntitlementUi */, TEST_CALLER_PKG, TEST_ATTRIBUTION_TAG);
-        verify(mTethering).isTetheringSupported();
-        verify(mTethering).requestLatestTetheringEntitlementResult(eq(TETHERING_WIFI),
-                eq(result), eq(true) /* showEntitlementUi */);
-    }
-
-    @Test
-    public void testRequestLatestTetheringEntitlementResult() throws Exception {
-        // Run as no permission.
-        final MyResultReceiver result = new MyResultReceiver(null);
-        mTetheringConnector.requestLatestTetheringEntitlementResult(TETHERING_WIFI, result,
-                true /* showEntitlementUi */, TEST_CALLER_PKG, TEST_ATTRIBUTION_TAG);
-        verify(mTethering).isTetherProvisioningRequired();
-        result.assertResult(TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION);
-        verifyNoMoreInteractions(mTethering);
-
-        runAsTetherPrivileged((none) -> {
-            runRequestLatestTetheringEntitlementResult();
-            verifyNoMoreInteractionsForTethering();
-        });
-
-        runAsWriteSettings((none) -> {
-            runRequestLatestTetheringEntitlementResult();
-            verify(mTethering).isTetherProvisioningRequired();
-            verifyNoMoreInteractionsForTethering();
-        });
-    }
-
-    private void runRegisterTetheringEventCallback() throws Exception {
-        mTetheringConnector.registerTetheringEventCallback(mITetheringEventCallback,
-                TEST_CALLER_PKG);
-        verify(mTethering).registerTetheringEventCallback(eq(mITetheringEventCallback));
-    }
-
-    @Test
-    public void testRegisterTetheringEventCallback() throws Exception {
-        runAsNoPermission((result) -> {
-            mTetheringConnector.registerTetheringEventCallback(mITetheringEventCallback,
-                    TEST_CALLER_PKG);
-            verify(mITetheringEventCallback).onCallbackStopped(
-                    TETHER_ERROR_NO_ACCESS_TETHERING_PERMISSION);
-            verifyNoMoreInteractionsForTethering();
-        });
-
-        runAsTetherPrivileged((none) -> {
-            runRegisterTetheringEventCallback();
-            verifyNoMoreInteractionsForTethering();
-        });
-
-        runAsAccessNetworkState((none) -> {
-            runRegisterTetheringEventCallback();
-            verifyNoMoreInteractionsForTethering();
-        });
-    }
-
-    private void runUnregisterTetheringEventCallback() throws Exception {
-        mTetheringConnector.unregisterTetheringEventCallback(mITetheringEventCallback,
-                TEST_CALLER_PKG);
-        verify(mTethering).unregisterTetheringEventCallback(eq(mITetheringEventCallback));
-    }
-
-    @Test
-    public void testUnregisterTetheringEventCallback() throws Exception {
-        runAsNoPermission((result) -> {
-            mTetheringConnector.unregisterTetheringEventCallback(mITetheringEventCallback,
-                    TEST_CALLER_PKG);
-            verify(mITetheringEventCallback).onCallbackStopped(
-                    TETHER_ERROR_NO_ACCESS_TETHERING_PERMISSION);
-            verifyNoMoreInteractionsForTethering();
-        });
-
-        runAsTetherPrivileged((none) -> {
-            runUnregisterTetheringEventCallback();
-            verifyNoMoreInteractionsForTethering();
-        });
-
-        runAsAccessNetworkState((none) -> {
-            runUnregisterTetheringEventCallback();
-            verifyNoMoreInteractionsForTethering();
-        });
-    }
-
-    private void runStopAllTethering(final TestTetheringResult result) throws Exception {
-        mTetheringConnector.stopAllTethering(TEST_CALLER_PKG, TEST_ATTRIBUTION_TAG, result);
-        verify(mTethering).isTetheringSupported();
-        verify(mTethering).untetherAll();
-        result.assertResult(TETHER_ERROR_NO_ERROR);
-    }
-
-    @Test
-    public void testStopAllTethering() throws Exception {
-        runAsNoPermission((result) -> {
-            mTetheringConnector.stopAllTethering(TEST_CALLER_PKG, TEST_ATTRIBUTION_TAG, result);
-            verify(mTethering).isTetherProvisioningRequired();
-            result.assertResult(TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION);
-            verifyNoMoreInteractionsForTethering();
-        });
-
-        runAsTetherPrivileged((result) -> {
-            runStopAllTethering(result);
-            verifyNoMoreInteractionsForTethering();
-        });
-
-        runAsWriteSettings((result) -> {
-            runStopAllTethering(result);
-            verify(mTethering).isTetherProvisioningRequired();
-            verifyNoMoreInteractionsForTethering();
-        });
-    }
-
-    private void runIsTetheringSupported(final TestTetheringResult result) throws Exception {
-        mTetheringConnector.isTetheringSupported(TEST_CALLER_PKG, TEST_ATTRIBUTION_TAG, result);
-        verify(mTethering).isTetheringSupported();
-        result.assertResult(TETHER_ERROR_NO_ERROR);
-    }
-
-    @Test
-    public void testIsTetheringSupported() throws Exception {
-        runAsNoPermission((result) -> {
-            mTetheringConnector.isTetheringSupported(TEST_CALLER_PKG, TEST_ATTRIBUTION_TAG,
-                    result);
-            verify(mTethering).isTetherProvisioningRequired();
-            result.assertResult(TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION);
-            verifyNoMoreInteractionsForTethering();
-        });
-
-        runAsTetherPrivileged((result) -> {
-            runIsTetheringSupported(result);
-            verifyNoMoreInteractionsForTethering();
-        });
-
-        runAsWriteSettings((result) -> {
-            runIsTetheringSupported(result);
-            verify(mTethering).isTetherProvisioningRequired();
-            verifyNoMoreInteractionsForTethering();
-        });
-    }
-}
diff --git a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/TetheringTest.java b/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/TetheringTest.java
deleted file mode 100644
index df57020..0000000
--- a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/TetheringTest.java
+++ /dev/null
@@ -1,1999 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.networkstack.tethering;
-
-import static android.content.pm.PackageManager.GET_ACTIVITIES;
-import static android.hardware.usb.UsbManager.USB_CONFIGURED;
-import static android.hardware.usb.UsbManager.USB_CONNECTED;
-import static android.hardware.usb.UsbManager.USB_FUNCTION_NCM;
-import static android.hardware.usb.UsbManager.USB_FUNCTION_RNDIS;
-import static android.net.ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED;
-import static android.net.ConnectivityManager.RESTRICT_BACKGROUND_STATUS_DISABLED;
-import static android.net.ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED;
-import static android.net.RouteInfo.RTN_UNICAST;
-import static android.net.TetheringManager.ACTION_TETHER_STATE_CHANGED;
-import static android.net.TetheringManager.EXTRA_ACTIVE_LOCAL_ONLY;
-import static android.net.TetheringManager.EXTRA_ACTIVE_TETHER;
-import static android.net.TetheringManager.EXTRA_AVAILABLE_TETHER;
-import static android.net.TetheringManager.TETHERING_ETHERNET;
-import static android.net.TetheringManager.TETHERING_NCM;
-import static android.net.TetheringManager.TETHERING_USB;
-import static android.net.TetheringManager.TETHERING_WIFI;
-import static android.net.TetheringManager.TETHER_ERROR_IFACE_CFG_ERROR;
-import static android.net.TetheringManager.TETHER_ERROR_NO_ERROR;
-import static android.net.TetheringManager.TETHER_ERROR_UNKNOWN_IFACE;
-import static android.net.TetheringManager.TETHER_HARDWARE_OFFLOAD_FAILED;
-import static android.net.TetheringManager.TETHER_HARDWARE_OFFLOAD_STARTED;
-import static android.net.TetheringManager.TETHER_HARDWARE_OFFLOAD_STOPPED;
-import static android.net.dhcp.IDhcpServer.STATUS_SUCCESS;
-import static android.net.wifi.WifiManager.EXTRA_WIFI_AP_INTERFACE_NAME;
-import static android.net.wifi.WifiManager.EXTRA_WIFI_AP_MODE;
-import static android.net.wifi.WifiManager.EXTRA_WIFI_AP_STATE;
-import static android.net.wifi.WifiManager.IFACE_IP_MODE_LOCAL_ONLY;
-import static android.net.wifi.WifiManager.IFACE_IP_MODE_TETHERED;
-import static android.net.wifi.WifiManager.WIFI_AP_STATE_ENABLED;
-import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
-
-import static com.android.net.module.util.Inet4AddressUtils.intToInet4AddressHTH;
-import static com.android.networkstack.tethering.TetheringNotificationUpdater.DOWNSTREAM_NONE;
-import static com.android.networkstack.tethering.UpstreamNetworkMonitor.EVENT_ON_CAPABILITIES;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.ArgumentMatchers.argThat;
-import static org.mockito.ArgumentMatchers.notNull;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.any;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.reset;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.timeout;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.when;
-
-import android.app.usage.NetworkStatsManager;
-import android.bluetooth.BluetoothAdapter;
-import android.content.BroadcastReceiver;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.res.Resources;
-import android.hardware.usb.UsbManager;
-import android.net.ConnectivityManager;
-import android.net.EthernetManager;
-import android.net.EthernetManager.TetheredInterfaceCallback;
-import android.net.EthernetManager.TetheredInterfaceRequest;
-import android.net.IIntResultListener;
-import android.net.INetd;
-import android.net.ITetheringEventCallback;
-import android.net.InetAddresses;
-import android.net.InterfaceConfigurationParcel;
-import android.net.IpPrefix;
-import android.net.LinkAddress;
-import android.net.LinkProperties;
-import android.net.MacAddress;
-import android.net.Network;
-import android.net.NetworkCapabilities;
-import android.net.NetworkRequest;
-import android.net.RouteInfo;
-import android.net.TetherStatesParcel;
-import android.net.TetheredClient;
-import android.net.TetheringCallbackStartedParcel;
-import android.net.TetheringConfigurationParcel;
-import android.net.TetheringRequestParcel;
-import android.net.dhcp.DhcpServerCallbacks;
-import android.net.dhcp.DhcpServingParamsParcel;
-import android.net.dhcp.IDhcpServer;
-import android.net.ip.DadProxy;
-import android.net.ip.IpNeighborMonitor;
-import android.net.ip.IpServer;
-import android.net.ip.RouterAdvertisementDaemon;
-import android.net.util.InterfaceParams;
-import android.net.util.NetworkConstants;
-import android.net.util.SharedLog;
-import android.net.wifi.SoftApConfiguration;
-import android.net.wifi.WifiManager;
-import android.net.wifi.p2p.WifiP2pGroup;
-import android.net.wifi.p2p.WifiP2pInfo;
-import android.net.wifi.p2p.WifiP2pManager;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.PersistableBundle;
-import android.os.RemoteException;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.os.test.TestLooper;
-import android.provider.Settings;
-import android.telephony.CarrierConfigManager;
-import android.telephony.PhoneStateListener;
-import android.telephony.TelephonyManager;
-import android.test.mock.MockContentResolver;
-
-import androidx.annotation.NonNull;
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.internal.util.ArrayUtils;
-import com.android.internal.util.StateMachine;
-import com.android.internal.util.test.BroadcastInterceptingContext;
-import com.android.internal.util.test.FakeSettingsProvider;
-import com.android.testutils.MiscAsserts;
-
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-import java.io.FileDescriptor;
-import java.io.PrintWriter;
-import java.net.Inet4Address;
-import java.net.Inet6Address;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Vector;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class TetheringTest {
-    private static final int IFINDEX_OFFSET = 100;
-
-    private static final String TEST_MOBILE_IFNAME = "test_rmnet_data0";
-    private static final String TEST_XLAT_MOBILE_IFNAME = "v4-test_rmnet_data0";
-    private static final String TEST_USB_IFNAME = "test_rndis0";
-    private static final String TEST_WIFI_IFNAME = "test_wlan0";
-    private static final String TEST_WLAN_IFNAME = "test_wlan1";
-    private static final String TEST_P2P_IFNAME = "test_p2p-p2p0-0";
-    private static final String TEST_NCM_IFNAME = "test_ncm0";
-    private static final String TEST_ETH_IFNAME = "test_eth0";
-    private static final String TETHERING_NAME = "Tethering";
-    private static final String[] PROVISIONING_APP_NAME = {"some", "app"};
-    private static final String PROVISIONING_NO_UI_APP_NAME = "no_ui_app";
-
-    private static final int DHCPSERVER_START_TIMEOUT_MS = 1000;
-
-    @Mock private ApplicationInfo mApplicationInfo;
-    @Mock private Context mContext;
-    @Mock private NetworkStatsManager mStatsManager;
-    @Mock private OffloadHardwareInterface mOffloadHardwareInterface;
-    @Mock private OffloadHardwareInterface.ForwardedStats mForwardedStats;
-    @Mock private Resources mResources;
-    @Mock private TelephonyManager mTelephonyManager;
-    @Mock private UsbManager mUsbManager;
-    @Mock private WifiManager mWifiManager;
-    @Mock private CarrierConfigManager mCarrierConfigManager;
-    @Mock private UpstreamNetworkMonitor mUpstreamNetworkMonitor;
-    @Mock private IPv6TetheringCoordinator mIPv6TetheringCoordinator;
-    @Mock private DadProxy mDadProxy;
-    @Mock private RouterAdvertisementDaemon mRouterAdvertisementDaemon;
-    @Mock private IpNeighborMonitor mIpNeighborMonitor;
-    @Mock private IDhcpServer mDhcpServer;
-    @Mock private INetd mNetd;
-    @Mock private UserManager mUserManager;
-    @Mock private NetworkRequest mNetworkRequest;
-    @Mock private ConnectivityManager mCm;
-    @Mock private EthernetManager mEm;
-    @Mock private TetheringNotificationUpdater mNotificationUpdater;
-    @Mock private BpfCoordinator mBpfCoordinator;
-    @Mock private PackageManager mPackageManager;
-
-    private final MockIpServerDependencies mIpServerDependencies =
-            spy(new MockIpServerDependencies());
-    private final MockTetheringDependencies mTetheringDependencies =
-            new MockTetheringDependencies();
-
-    // Like so many Android system APIs, these cannot be mocked because it is marked final.
-    // We have to use the real versions.
-    private final PersistableBundle mCarrierConfig = new PersistableBundle();
-    private final TestLooper mLooper = new TestLooper();
-
-    private Vector<Intent> mIntents;
-    private BroadcastInterceptingContext mServiceContext;
-    private MockContentResolver mContentResolver;
-    private BroadcastReceiver mBroadcastReceiver;
-    private Tethering mTethering;
-    private PhoneStateListener mPhoneStateListener;
-    private InterfaceConfigurationParcel mInterfaceConfiguration;
-    private TetheringConfiguration mConfig;
-    private EntitlementManager mEntitleMgr;
-    private OffloadController mOffloadCtrl;
-
-    private class TestContext extends BroadcastInterceptingContext {
-        TestContext(Context base) {
-            super(base);
-        }
-
-        @Override
-        public ApplicationInfo getApplicationInfo() {
-            return mApplicationInfo;
-        }
-
-        @Override
-        public ContentResolver getContentResolver() {
-            return mContentResolver;
-        }
-
-        @Override
-        public String getPackageName() {
-            return "TetheringTest";
-        }
-
-        @Override
-        public Resources getResources() {
-            return mResources;
-        }
-
-        @Override
-        public Object getSystemService(String name) {
-            if (Context.WIFI_SERVICE.equals(name)) return mWifiManager;
-            if (Context.USB_SERVICE.equals(name)) return mUsbManager;
-            if (Context.TELEPHONY_SERVICE.equals(name)) return mTelephonyManager;
-            if (Context.USER_SERVICE.equals(name)) return mUserManager;
-            if (Context.NETWORK_STATS_SERVICE.equals(name)) return mStatsManager;
-            if (Context.CONNECTIVITY_SERVICE.equals(name)) return mCm;
-            if (Context.ETHERNET_SERVICE.equals(name)) return mEm;
-            return super.getSystemService(name);
-        }
-
-        @Override
-        public PackageManager getPackageManager() {
-            return mPackageManager;
-        }
-
-        @Override
-        public String getSystemServiceName(Class<?> serviceClass) {
-            if (TelephonyManager.class.equals(serviceClass)) return Context.TELEPHONY_SERVICE;
-            return super.getSystemServiceName(serviceClass);
-        }
-    }
-
-    public class MockIpServerDependencies extends IpServer.Dependencies {
-        @Override
-        public DadProxy getDadProxy(
-                Handler handler, InterfaceParams ifParams) {
-            return mDadProxy;
-        }
-
-        @Override
-        public RouterAdvertisementDaemon getRouterAdvertisementDaemon(
-                InterfaceParams ifParams) {
-            return mRouterAdvertisementDaemon;
-        }
-
-        @Override
-        public InterfaceParams getInterfaceParams(String ifName) {
-            assertTrue("Non-mocked interface " + ifName,
-                    ifName.equals(TEST_USB_IFNAME)
-                            || ifName.equals(TEST_WLAN_IFNAME)
-                            || ifName.equals(TEST_MOBILE_IFNAME)
-                            || ifName.equals(TEST_P2P_IFNAME)
-                            || ifName.equals(TEST_NCM_IFNAME)
-                            || ifName.equals(TEST_ETH_IFNAME));
-            final String[] ifaces = new String[] {
-                    TEST_USB_IFNAME, TEST_WLAN_IFNAME, TEST_MOBILE_IFNAME, TEST_P2P_IFNAME,
-                    TEST_NCM_IFNAME, TEST_ETH_IFNAME};
-            return new InterfaceParams(ifName, ArrayUtils.indexOf(ifaces, ifName) + IFINDEX_OFFSET,
-                    MacAddress.ALL_ZEROS_ADDRESS);
-        }
-
-        @Override
-        public void makeDhcpServer(String ifName, DhcpServingParamsParcel params,
-                DhcpServerCallbacks cb) {
-            new Thread(() -> {
-                try {
-                    cb.onDhcpServerCreated(STATUS_SUCCESS, mDhcpServer);
-                } catch (RemoteException e) {
-                    fail(e.getMessage());
-                }
-            }).run();
-        }
-
-        public IpNeighborMonitor getIpNeighborMonitor(Handler h, SharedLog l,
-                IpNeighborMonitor.NeighborEventConsumer c) {
-            return mIpNeighborMonitor;
-        }
-    }
-
-    // MyTetheringConfiguration is used to override static method for testing.
-    private class MyTetheringConfiguration extends TetheringConfiguration {
-        MyTetheringConfiguration(Context ctx, SharedLog log, int id) {
-            super(ctx, log, id);
-        }
-
-        @Override
-        protected String getDeviceConfigProperty(final String name) {
-            return null;
-        }
-
-        @Override
-        protected Resources getResourcesForSubIdWrapper(Context ctx, int subId) {
-            return mResources;
-        }
-    }
-
-    public class MockTetheringDependencies extends TetheringDependencies {
-        StateMachine mUpstreamNetworkMonitorSM;
-        ArrayList<IpServer> mIpv6CoordinatorNotifyList;
-
-        public void reset() {
-            mUpstreamNetworkMonitorSM = null;
-            mIpv6CoordinatorNotifyList = null;
-        }
-
-        @Override
-        public BpfCoordinator getBpfCoordinator(
-                BpfCoordinator.Dependencies deps) {
-            return mBpfCoordinator;
-        }
-
-        @Override
-        public OffloadHardwareInterface getOffloadHardwareInterface(Handler h, SharedLog log) {
-            return mOffloadHardwareInterface;
-        }
-
-        @Override
-        public OffloadController getOffloadController(Handler h, SharedLog log,
-                OffloadController.Dependencies deps) {
-            mOffloadCtrl = spy(super.getOffloadController(h, log, deps));
-            // Return real object here instead of mock because
-            // testReportFailCallbackIfOffloadNotSupported depend on real OffloadController object.
-            return mOffloadCtrl;
-        }
-
-        @Override
-        public UpstreamNetworkMonitor getUpstreamNetworkMonitor(Context ctx,
-                StateMachine target, SharedLog log, int what) {
-            mUpstreamNetworkMonitorSM = target;
-            return mUpstreamNetworkMonitor;
-        }
-
-        @Override
-        public IPv6TetheringCoordinator getIPv6TetheringCoordinator(
-                ArrayList<IpServer> notifyList, SharedLog log) {
-            mIpv6CoordinatorNotifyList = notifyList;
-            return mIPv6TetheringCoordinator;
-        }
-
-        @Override
-        public IpServer.Dependencies getIpServerDependencies() {
-            return mIpServerDependencies;
-        }
-
-        @Override
-        public NetworkRequest getDefaultNetworkRequest() {
-            return mNetworkRequest;
-        }
-
-        @Override
-        public EntitlementManager getEntitlementManager(Context ctx, Handler h, SharedLog log,
-                Runnable callback) {
-            mEntitleMgr = spy(super.getEntitlementManager(ctx, h, log, callback));
-            return mEntitleMgr;
-        }
-
-        @Override
-        public boolean isTetheringSupported() {
-            return true;
-        }
-
-        @Override
-        public TetheringConfiguration generateTetheringConfiguration(Context ctx, SharedLog log,
-                int subId) {
-            mConfig = spy(new MyTetheringConfiguration(ctx, log, subId));
-            return mConfig;
-        }
-
-        @Override
-        public INetd getINetd(Context context) {
-            return mNetd;
-        }
-
-        @Override
-        public Looper getTetheringLooper() {
-            return mLooper.getLooper();
-        }
-
-        @Override
-        public Context getContext() {
-            return mServiceContext;
-        }
-
-        @Override
-        public BluetoothAdapter getBluetoothAdapter() {
-            // TODO: add test for bluetooth tethering.
-            return null;
-        }
-
-        @Override
-        public TetheringNotificationUpdater getNotificationUpdater(Context ctx, Looper looper) {
-            return mNotificationUpdater;
-        }
-
-        @Override
-        public boolean isTetheringDenied() {
-            return false;
-        }
-    }
-
-    private static UpstreamNetworkState buildMobileUpstreamState(boolean withIPv4,
-            boolean withIPv6, boolean with464xlat) {
-        final LinkProperties prop = new LinkProperties();
-        prop.setInterfaceName(TEST_MOBILE_IFNAME);
-
-        if (withIPv4) {
-            prop.addRoute(new RouteInfo(new IpPrefix(Inet4Address.ANY, 0),
-                    InetAddresses.parseNumericAddress("10.0.0.1"),
-                    TEST_MOBILE_IFNAME, RTN_UNICAST));
-        }
-
-        if (withIPv6) {
-            prop.addDnsServer(InetAddresses.parseNumericAddress("2001:db8::2"));
-            prop.addLinkAddress(
-                    new LinkAddress(InetAddresses.parseNumericAddress("2001:db8::"),
-                            NetworkConstants.RFC7421_PREFIX_LENGTH));
-            prop.addRoute(new RouteInfo(new IpPrefix(Inet6Address.ANY, 0),
-                    InetAddresses.parseNumericAddress("2001:db8::1"),
-                    TEST_MOBILE_IFNAME, RTN_UNICAST));
-        }
-
-        if (with464xlat) {
-            final LinkProperties stackedLink = new LinkProperties();
-            stackedLink.setInterfaceName(TEST_XLAT_MOBILE_IFNAME);
-            stackedLink.addRoute(new RouteInfo(new IpPrefix(Inet4Address.ANY, 0),
-                    InetAddresses.parseNumericAddress("192.0.0.1"),
-                    TEST_XLAT_MOBILE_IFNAME, RTN_UNICAST));
-
-            prop.addStackedLink(stackedLink);
-        }
-
-
-        final NetworkCapabilities capabilities = new NetworkCapabilities()
-                .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
-        return new UpstreamNetworkState(prop, capabilities, new Network(100));
-    }
-
-    private static UpstreamNetworkState buildMobileIPv4UpstreamState() {
-        return buildMobileUpstreamState(true, false, false);
-    }
-
-    private static UpstreamNetworkState buildMobileIPv6UpstreamState() {
-        return buildMobileUpstreamState(false, true, false);
-    }
-
-    private static UpstreamNetworkState buildMobileDualStackUpstreamState() {
-        return buildMobileUpstreamState(true, true, false);
-    }
-
-    private static UpstreamNetworkState buildMobile464xlatUpstreamState() {
-        return buildMobileUpstreamState(false, true, true);
-    }
-
-    // See FakeSettingsProvider#clearSettingsProvider() that this needs to be called before and
-    // after use.
-    @BeforeClass
-    public static void setupOnce() {
-        FakeSettingsProvider.clearSettingsProvider();
-    }
-
-    @AfterClass
-    public static void tearDownOnce() {
-        FakeSettingsProvider.clearSettingsProvider();
-    }
-
-    @Before
-    public void setUp() throws Exception {
-        MockitoAnnotations.initMocks(this);
-        when(mResources.getStringArray(R.array.config_tether_dhcp_range))
-                .thenReturn(new String[0]);
-        when(mResources.getBoolean(R.bool.config_tether_enable_legacy_dhcp_server)).thenReturn(
-                false);
-        when(mNetd.interfaceGetList())
-                .thenReturn(new String[] {
-                        TEST_MOBILE_IFNAME, TEST_WLAN_IFNAME, TEST_USB_IFNAME, TEST_P2P_IFNAME,
-                        TEST_NCM_IFNAME, TEST_ETH_IFNAME});
-        when(mResources.getString(R.string.config_wifi_tether_enable)).thenReturn("");
-        mInterfaceConfiguration = new InterfaceConfigurationParcel();
-        mInterfaceConfiguration.flags = new String[0];
-        when(mRouterAdvertisementDaemon.start())
-                .thenReturn(true);
-        initOffloadConfiguration(true /* offloadConfig */, true /* offloadControl */,
-                0 /* defaultDisabled */);
-        when(mOffloadHardwareInterface.getForwardedStats(any())).thenReturn(mForwardedStats);
-
-        mServiceContext = new TestContext(mContext);
-        mContentResolver = new MockContentResolver(mServiceContext);
-        mContentResolver.addProvider(Settings.AUTHORITY, new FakeSettingsProvider());
-        setTetheringSupported(true /* supported */);
-        mIntents = new Vector<>();
-        mBroadcastReceiver = new BroadcastReceiver() {
-            @Override
-            public void onReceive(Context context, Intent intent) {
-                mIntents.addElement(intent);
-            }
-        };
-        mServiceContext.registerReceiver(mBroadcastReceiver,
-                new IntentFilter(ACTION_TETHER_STATE_CHANGED));
-        mTethering = makeTethering();
-        verify(mStatsManager, times(1)).registerNetworkStatsProvider(anyString(), any());
-        verify(mNetd).registerUnsolicitedEventListener(any());
-        final ArgumentCaptor<PhoneStateListener> phoneListenerCaptor =
-                ArgumentCaptor.forClass(PhoneStateListener.class);
-        verify(mTelephonyManager).listen(phoneListenerCaptor.capture(),
-                eq(PhoneStateListener.LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE));
-        verify(mWifiManager).registerSoftApCallback(any(), any());
-        mPhoneStateListener = phoneListenerCaptor.getValue();
-    }
-
-    private void setTetheringSupported(final boolean supported) {
-        Settings.Global.putInt(mContentResolver, Settings.Global.TETHER_SUPPORTED,
-                supported ? 1 : 0);
-        when(mUserManager.hasUserRestriction(
-                UserManager.DISALLOW_CONFIG_TETHERING)).thenReturn(!supported);
-        // Setup tetherable configuration.
-        when(mResources.getStringArray(R.array.config_tether_usb_regexs))
-                .thenReturn(new String[] { "test_rndis\\d" });
-        when(mResources.getStringArray(R.array.config_tether_wifi_regexs))
-                .thenReturn(new String[]{ "test_wlan\\d" });
-        when(mResources.getStringArray(R.array.config_tether_wifi_p2p_regexs))
-                .thenReturn(new String[]{ "test_p2p-p2p\\d-.*" });
-        when(mResources.getStringArray(R.array.config_tether_bluetooth_regexs))
-                .thenReturn(new String[0]);
-        when(mResources.getStringArray(R.array.config_tether_ncm_regexs))
-                .thenReturn(new String[] { "test_ncm\\d" });
-        when(mResources.getIntArray(R.array.config_tether_upstream_types)).thenReturn(new int[0]);
-        when(mResources.getBoolean(R.bool.config_tether_upstream_automatic)).thenReturn(true);
-    }
-
-    private void initTetheringUpstream(UpstreamNetworkState upstreamState) {
-        when(mUpstreamNetworkMonitor.getCurrentPreferredUpstream()).thenReturn(upstreamState);
-        when(mUpstreamNetworkMonitor.selectPreferredUpstreamType(any())).thenReturn(upstreamState);
-    }
-
-    private Tethering makeTethering() {
-        mTetheringDependencies.reset();
-        return new Tethering(mTetheringDependencies);
-    }
-
-    private TetheringRequestParcel createTetheringRequestParcel(final int type) {
-        return createTetheringRequestParcel(type, null, null, false);
-    }
-
-    private TetheringRequestParcel createTetheringRequestParcel(final int type,
-            final LinkAddress serverAddr, final LinkAddress clientAddr, final boolean exempt) {
-        final TetheringRequestParcel request = new TetheringRequestParcel();
-        request.tetheringType = type;
-        request.localIPv4Address = serverAddr;
-        request.staticClientAddress = clientAddr;
-        request.exemptFromEntitlementCheck = exempt;
-        request.showProvisioningUi = false;
-
-        return request;
-    }
-
-    @After
-    public void tearDown() {
-        mServiceContext.unregisterReceiver(mBroadcastReceiver);
-    }
-
-    private void sendWifiApStateChanged(int state) {
-        final Intent intent = new Intent(WifiManager.WIFI_AP_STATE_CHANGED_ACTION);
-        intent.putExtra(EXTRA_WIFI_AP_STATE, state);
-        mServiceContext.sendStickyBroadcastAsUser(intent, UserHandle.ALL);
-    }
-
-    private void sendWifiApStateChanged(int state, String ifname, int ipmode) {
-        final Intent intent = new Intent(WifiManager.WIFI_AP_STATE_CHANGED_ACTION);
-        intent.putExtra(EXTRA_WIFI_AP_STATE, state);
-        intent.putExtra(EXTRA_WIFI_AP_INTERFACE_NAME, ifname);
-        intent.putExtra(EXTRA_WIFI_AP_MODE, ipmode);
-        mServiceContext.sendStickyBroadcastAsUser(intent, UserHandle.ALL);
-    }
-
-    private static final String[] P2P_RECEIVER_PERMISSIONS_FOR_BROADCAST = {
-            android.Manifest.permission.ACCESS_FINE_LOCATION,
-            android.Manifest.permission.ACCESS_WIFI_STATE
-    };
-
-    private void sendWifiP2pConnectionChanged(
-            boolean isGroupFormed, boolean isGroupOwner, String ifname) {
-        WifiP2pGroup group = null;
-        WifiP2pInfo p2pInfo = new WifiP2pInfo();
-        p2pInfo.groupFormed = isGroupFormed;
-        if (isGroupFormed) {
-            p2pInfo.isGroupOwner = isGroupOwner;
-            group = mock(WifiP2pGroup.class);
-            when(group.isGroupOwner()).thenReturn(isGroupOwner);
-            when(group.getInterface()).thenReturn(ifname);
-        }
-
-        final Intent intent = mock(Intent.class);
-        when(intent.getAction()).thenReturn(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);
-        when(intent.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_INFO)).thenReturn(p2pInfo);
-        when(intent.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_GROUP)).thenReturn(group);
-
-        mServiceContext.sendBroadcastAsUserMultiplePermissions(intent, UserHandle.ALL,
-                P2P_RECEIVER_PERMISSIONS_FOR_BROADCAST);
-    }
-
-    private void sendUsbBroadcast(boolean connected, boolean configured, boolean function,
-            int type) {
-        final Intent intent = new Intent(UsbManager.ACTION_USB_STATE);
-        intent.putExtra(USB_CONNECTED, connected);
-        intent.putExtra(USB_CONFIGURED, configured);
-        if (type == TETHERING_USB) {
-            intent.putExtra(USB_FUNCTION_RNDIS, function);
-        } else {
-            intent.putExtra(USB_FUNCTION_NCM, function);
-        }
-        mServiceContext.sendStickyBroadcastAsUser(intent, UserHandle.ALL);
-    }
-
-    private void sendConfigurationChanged() {
-        final Intent intent = new Intent(Intent.ACTION_CONFIGURATION_CHANGED);
-        mServiceContext.sendStickyBroadcastAsUser(intent, UserHandle.ALL);
-    }
-
-    private void verifyInterfaceServingModeStarted(String ifname) throws Exception {
-        verify(mNetd, times(1)).interfaceSetCfg(any(InterfaceConfigurationParcel.class));
-        verify(mNetd, times(1)).tetherInterfaceAdd(ifname);
-        verify(mNetd, times(1)).networkAddInterface(INetd.LOCAL_NET_ID, ifname);
-        verify(mNetd, times(2)).networkAddRoute(eq(INetd.LOCAL_NET_ID), eq(ifname),
-                anyString(), anyString());
-    }
-
-    private void verifyTetheringBroadcast(String ifname, String whichExtra) {
-        // Verify that ifname is in the whichExtra array of the tether state changed broadcast.
-        final Intent bcast = mIntents.get(0);
-        assertEquals(ACTION_TETHER_STATE_CHANGED, bcast.getAction());
-        final ArrayList<String> ifnames = bcast.getStringArrayListExtra(whichExtra);
-        assertTrue(ifnames.contains(ifname));
-        mIntents.remove(bcast);
-    }
-
-    public void failingLocalOnlyHotspotLegacyApBroadcast(
-            boolean emulateInterfaceStatusChanged) throws Exception {
-        // Emulate externally-visible WifiManager effects, causing the
-        // per-interface state machine to start up, and telling us that
-        // hotspot mode is to be started.
-        if (emulateInterfaceStatusChanged) {
-            mTethering.interfaceStatusChanged(TEST_WLAN_IFNAME, true);
-        }
-        sendWifiApStateChanged(WIFI_AP_STATE_ENABLED);
-        mLooper.dispatchAll();
-
-        // If, and only if, Tethering received an interface status changed then
-        // it creates a IpServer and sends out a broadcast indicating that the
-        // interface is "available".
-        if (emulateInterfaceStatusChanged) {
-            // There is 1 IpServer state change event: STATE_AVAILABLE
-            verify(mNotificationUpdater, times(1)).onDownstreamChanged(DOWNSTREAM_NONE);
-            verifyTetheringBroadcast(TEST_WLAN_IFNAME, EXTRA_AVAILABLE_TETHER);
-            verify(mWifiManager).updateInterfaceIpState(
-                    TEST_WLAN_IFNAME, WifiManager.IFACE_IP_MODE_UNSPECIFIED);
-        }
-        verifyNoMoreInteractions(mNetd);
-        verifyNoMoreInteractions(mWifiManager);
-    }
-
-    private void prepareNcmTethering() {
-        // Emulate startTethering(TETHERING_NCM) called
-        mTethering.startTethering(createTetheringRequestParcel(TETHERING_NCM), null);
-        mLooper.dispatchAll();
-        verify(mUsbManager, times(1)).setCurrentFunctions(UsbManager.FUNCTION_NCM);
-
-        mTethering.interfaceStatusChanged(TEST_NCM_IFNAME, true);
-    }
-
-    private void prepareUsbTethering(UpstreamNetworkState upstreamState) {
-        initTetheringUpstream(upstreamState);
-
-        // Emulate pressing the USB tethering button in Settings UI.
-        mTethering.startTethering(createTetheringRequestParcel(TETHERING_USB), null);
-        mLooper.dispatchAll();
-        verify(mUsbManager, times(1)).setCurrentFunctions(UsbManager.FUNCTION_RNDIS);
-
-        mTethering.interfaceStatusChanged(TEST_USB_IFNAME, true);
-    }
-
-    @Test
-    public void testUsbConfiguredBroadcastStartsTethering() throws Exception {
-        UpstreamNetworkState upstreamState = buildMobileIPv4UpstreamState();
-        prepareUsbTethering(upstreamState);
-
-        // This should produce no activity of any kind.
-        verifyNoMoreInteractions(mNetd);
-
-        // Pretend we then receive USB configured broadcast.
-        sendUsbBroadcast(true, true, true, TETHERING_USB);
-        mLooper.dispatchAll();
-        // Now we should see the start of tethering mechanics (in this case:
-        // tetherMatchingInterfaces() which starts by fetching all interfaces).
-        verify(mNetd, times(1)).interfaceGetList();
-
-        // UpstreamNetworkMonitor should receive selected upstream
-        verify(mUpstreamNetworkMonitor, times(1)).getCurrentPreferredUpstream();
-        verify(mUpstreamNetworkMonitor, times(1)).setCurrentUpstream(upstreamState.network);
-    }
-
-    @Test
-    public void failingLocalOnlyHotspotLegacyApBroadcastWithIfaceStatusChanged() throws Exception {
-        failingLocalOnlyHotspotLegacyApBroadcast(true);
-    }
-
-    @Test
-    public void failingLocalOnlyHotspotLegacyApBroadcastSansIfaceStatusChanged() throws Exception {
-        failingLocalOnlyHotspotLegacyApBroadcast(false);
-    }
-
-    public void workingLocalOnlyHotspotEnrichedApBroadcast(
-            boolean emulateInterfaceStatusChanged) throws Exception {
-        // Emulate externally-visible WifiManager effects, causing the
-        // per-interface state machine to start up, and telling us that
-        // hotspot mode is to be started.
-        if (emulateInterfaceStatusChanged) {
-            mTethering.interfaceStatusChanged(TEST_WLAN_IFNAME, true);
-        }
-        sendWifiApStateChanged(WIFI_AP_STATE_ENABLED, TEST_WLAN_IFNAME, IFACE_IP_MODE_LOCAL_ONLY);
-        mLooper.dispatchAll();
-
-        verifyInterfaceServingModeStarted(TEST_WLAN_IFNAME);
-        verifyTetheringBroadcast(TEST_WLAN_IFNAME, EXTRA_AVAILABLE_TETHER);
-        verify(mNetd, times(1)).ipfwdEnableForwarding(TETHERING_NAME);
-        verify(mNetd, times(1)).tetherStartWithConfiguration(any());
-        verifyNoMoreInteractions(mNetd);
-        verify(mWifiManager).updateInterfaceIpState(
-                TEST_WLAN_IFNAME, WifiManager.IFACE_IP_MODE_UNSPECIFIED);
-        verify(mWifiManager).updateInterfaceIpState(
-                TEST_WLAN_IFNAME, WifiManager.IFACE_IP_MODE_LOCAL_ONLY);
-        verifyNoMoreInteractions(mWifiManager);
-        verifyTetheringBroadcast(TEST_WLAN_IFNAME, EXTRA_ACTIVE_LOCAL_ONLY);
-        verify(mUpstreamNetworkMonitor, times(1)).startObserveAllNetworks();
-        // There are 2 IpServer state change events: STATE_AVAILABLE -> STATE_LOCAL_ONLY
-        verify(mNotificationUpdater, times(2)).onDownstreamChanged(DOWNSTREAM_NONE);
-
-        // Emulate externally-visible WifiManager effects, when hotspot mode
-        // is being torn down.
-        sendWifiApStateChanged(WifiManager.WIFI_AP_STATE_DISABLED);
-        mTethering.interfaceRemoved(TEST_WLAN_IFNAME);
-        mLooper.dispatchAll();
-
-        verify(mNetd, times(1)).tetherApplyDnsInterfaces();
-        verify(mNetd, times(1)).tetherInterfaceRemove(TEST_WLAN_IFNAME);
-        verify(mNetd, times(1)).networkRemoveInterface(INetd.LOCAL_NET_ID, TEST_WLAN_IFNAME);
-        // interfaceSetCfg() called once for enabling and twice disabling IPv4.
-        verify(mNetd, times(3)).interfaceSetCfg(any(InterfaceConfigurationParcel.class));
-        verify(mNetd, times(1)).tetherStop();
-        verify(mNetd, times(1)).ipfwdDisableForwarding(TETHERING_NAME);
-        verify(mWifiManager, times(3)).updateInterfaceIpState(
-                TEST_WLAN_IFNAME, WifiManager.IFACE_IP_MODE_UNSPECIFIED);
-        verifyNoMoreInteractions(mNetd);
-        verifyNoMoreInteractions(mWifiManager);
-        // Asking for the last error after the per-interface state machine
-        // has been reaped yields an unknown interface error.
-        assertEquals(TETHER_ERROR_UNKNOWN_IFACE, mTethering.getLastTetherError(TEST_WLAN_IFNAME));
-    }
-
-    /**
-     * Send CMD_IPV6_TETHER_UPDATE to IpServers as would be done by IPv6TetheringCoordinator.
-     */
-    private void sendIPv6TetherUpdates(UpstreamNetworkState upstreamState) {
-        // IPv6TetheringCoordinator must have been notified of downstream
-        verify(mIPv6TetheringCoordinator, times(1)).addActiveDownstream(
-                argThat(sm -> sm.linkProperties().getInterfaceName().equals(TEST_USB_IFNAME)),
-                eq(IpServer.STATE_TETHERED));
-
-        for (IpServer ipSrv : mTetheringDependencies.mIpv6CoordinatorNotifyList) {
-            UpstreamNetworkState ipv6OnlyState = buildMobileUpstreamState(false, true, false);
-            ipSrv.sendMessage(IpServer.CMD_IPV6_TETHER_UPDATE, 0, 0,
-                    upstreamState.linkProperties.isIpv6Provisioned()
-                            ? ipv6OnlyState.linkProperties
-                            : null);
-        }
-        mLooper.dispatchAll();
-    }
-
-    private void runUsbTethering(UpstreamNetworkState upstreamState) {
-        prepareUsbTethering(upstreamState);
-        sendUsbBroadcast(true, true, true, TETHERING_USB);
-        mLooper.dispatchAll();
-    }
-
-    @Test
-    public void workingMobileUsbTethering_IPv4() throws Exception {
-        UpstreamNetworkState upstreamState = buildMobileIPv4UpstreamState();
-        runUsbTethering(upstreamState);
-
-        verify(mNetd, times(1)).tetherAddForward(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
-        verify(mNetd, times(1)).ipfwdAddInterfaceForward(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
-
-        sendIPv6TetherUpdates(upstreamState);
-        verify(mDadProxy, never()).setUpstreamIface(notNull());
-        verify(mRouterAdvertisementDaemon, never()).buildNewRa(any(), notNull());
-        verify(mDhcpServer, timeout(DHCPSERVER_START_TIMEOUT_MS).times(1)).startWithCallbacks(
-                any(), any());
-    }
-
-    @Test
-    public void workingMobileUsbTethering_IPv4LegacyDhcp() {
-        when(mResources.getBoolean(R.bool.config_tether_enable_legacy_dhcp_server)).thenReturn(
-                true);
-        sendConfigurationChanged();
-        final UpstreamNetworkState upstreamState = buildMobileIPv4UpstreamState();
-        runUsbTethering(upstreamState);
-        sendIPv6TetherUpdates(upstreamState);
-
-        verify(mIpServerDependencies, never()).makeDhcpServer(any(), any(), any());
-    }
-
-    @Test
-    public void workingMobileUsbTethering_IPv6() throws Exception {
-        UpstreamNetworkState upstreamState = buildMobileIPv6UpstreamState();
-        runUsbTethering(upstreamState);
-
-        verify(mNetd, times(1)).tetherAddForward(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
-        verify(mNetd, times(1)).ipfwdAddInterfaceForward(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
-
-        sendIPv6TetherUpdates(upstreamState);
-        // TODO: add interfaceParams to compare in verify.
-        verify(mDadProxy, times(1)).setUpstreamIface(notNull());
-        verify(mRouterAdvertisementDaemon, times(1)).buildNewRa(any(), notNull());
-        verify(mNetd, times(1)).tetherApplyDnsInterfaces();
-    }
-
-    @Test
-    public void workingMobileUsbTethering_DualStack() throws Exception {
-        UpstreamNetworkState upstreamState = buildMobileDualStackUpstreamState();
-        runUsbTethering(upstreamState);
-
-        verify(mNetd, times(1)).tetherAddForward(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
-        verify(mNetd, times(1)).ipfwdAddInterfaceForward(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
-        verify(mRouterAdvertisementDaemon, times(1)).start();
-        verify(mDhcpServer, timeout(DHCPSERVER_START_TIMEOUT_MS).times(1)).startWithCallbacks(
-                any(), any());
-
-        sendIPv6TetherUpdates(upstreamState);
-        verify(mDadProxy, times(1)).setUpstreamIface(notNull());
-        verify(mRouterAdvertisementDaemon, times(1)).buildNewRa(any(), notNull());
-        verify(mNetd, times(1)).tetherApplyDnsInterfaces();
-    }
-
-    @Test
-    public void workingMobileUsbTethering_MultipleUpstreams() throws Exception {
-        UpstreamNetworkState upstreamState = buildMobile464xlatUpstreamState();
-        runUsbTethering(upstreamState);
-
-        verify(mNetd, times(1)).tetherAddForward(TEST_USB_IFNAME, TEST_XLAT_MOBILE_IFNAME);
-        verify(mNetd, times(1)).tetherAddForward(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
-        verify(mDhcpServer, timeout(DHCPSERVER_START_TIMEOUT_MS).times(1)).startWithCallbacks(
-                any(), any());
-        verify(mNetd, times(1)).ipfwdAddInterfaceForward(TEST_USB_IFNAME, TEST_XLAT_MOBILE_IFNAME);
-        verify(mNetd, times(1)).ipfwdAddInterfaceForward(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
-
-        sendIPv6TetherUpdates(upstreamState);
-        verify(mDadProxy, times(1)).setUpstreamIface(notNull());
-        verify(mRouterAdvertisementDaemon, times(1)).buildNewRa(any(), notNull());
-        verify(mNetd, times(1)).tetherApplyDnsInterfaces();
-    }
-
-    @Test
-    public void workingMobileUsbTethering_v6Then464xlat() throws Exception {
-        // Setup IPv6
-        UpstreamNetworkState upstreamState = buildMobileIPv6UpstreamState();
-        runUsbTethering(upstreamState);
-
-        verify(mNetd, times(1)).tetherAddForward(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
-        verify(mDhcpServer, timeout(DHCPSERVER_START_TIMEOUT_MS).times(1)).startWithCallbacks(
-                any(), any());
-        verify(mNetd, times(1)).ipfwdAddInterfaceForward(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
-
-        // Then 464xlat comes up
-        upstreamState = buildMobile464xlatUpstreamState();
-        initTetheringUpstream(upstreamState);
-
-        // Upstream LinkProperties changed: UpstreamNetworkMonitor sends EVENT_ON_LINKPROPERTIES.
-        mTetheringDependencies.mUpstreamNetworkMonitorSM.sendMessage(
-                Tethering.TetherMainSM.EVENT_UPSTREAM_CALLBACK,
-                UpstreamNetworkMonitor.EVENT_ON_LINKPROPERTIES,
-                0,
-                upstreamState);
-        mLooper.dispatchAll();
-
-        // Forwarding is added for 464xlat
-        verify(mNetd, times(1)).tetherAddForward(TEST_USB_IFNAME, TEST_XLAT_MOBILE_IFNAME);
-        verify(mNetd, times(1)).ipfwdAddInterfaceForward(TEST_USB_IFNAME, TEST_XLAT_MOBILE_IFNAME);
-        // Forwarding was not re-added for v6 (still times(1))
-        verify(mNetd, times(1)).tetherAddForward(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
-        verify(mNetd, times(1)).ipfwdAddInterfaceForward(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
-        // DHCP not restarted on downstream (still times(1))
-        verify(mDhcpServer, timeout(DHCPSERVER_START_TIMEOUT_MS).times(1)).startWithCallbacks(
-                any(), any());
-    }
-
-    @Test
-    public void configTetherUpstreamAutomaticIgnoresConfigTetherUpstreamTypes() throws Exception {
-        when(mResources.getBoolean(R.bool.config_tether_upstream_automatic)).thenReturn(true);
-        sendConfigurationChanged();
-
-        // Setup IPv6
-        final UpstreamNetworkState upstreamState = buildMobileIPv6UpstreamState();
-        runUsbTethering(upstreamState);
-
-        // UpstreamNetworkMonitor should choose upstream automatically
-        // (in this specific case: choose the default network).
-        verify(mUpstreamNetworkMonitor, times(1)).getCurrentPreferredUpstream();
-        verify(mUpstreamNetworkMonitor, never()).selectPreferredUpstreamType(any());
-
-        verify(mUpstreamNetworkMonitor, times(1)).setCurrentUpstream(upstreamState.network);
-    }
-
-    private void runNcmTethering() {
-        prepareNcmTethering();
-        sendUsbBroadcast(true, true, true, TETHERING_NCM);
-        mLooper.dispatchAll();
-    }
-
-    @Test
-    public void workingNcmTethering() throws Exception {
-        runNcmTethering();
-
-        verify(mDhcpServer, timeout(DHCPSERVER_START_TIMEOUT_MS).times(1)).startWithCallbacks(
-                any(), any());
-    }
-
-    @Test
-    public void workingNcmTethering_LegacyDhcp() {
-        when(mResources.getBoolean(R.bool.config_tether_enable_legacy_dhcp_server)).thenReturn(
-                true);
-        sendConfigurationChanged();
-        runNcmTethering();
-
-        verify(mIpServerDependencies, never()).makeDhcpServer(any(), any(), any());
-    }
-
-    @Test
-    public void workingLocalOnlyHotspotEnrichedApBroadcastWithIfaceChanged() throws Exception {
-        workingLocalOnlyHotspotEnrichedApBroadcast(true);
-    }
-
-    @Test
-    public void workingLocalOnlyHotspotEnrichedApBroadcastSansIfaceChanged() throws Exception {
-        workingLocalOnlyHotspotEnrichedApBroadcast(false);
-    }
-
-    // TODO: Test with and without interfaceStatusChanged().
-    @Test
-    public void failingWifiTetheringLegacyApBroadcast() throws Exception {
-        when(mWifiManager.startTetheredHotspot(any(SoftApConfiguration.class))).thenReturn(true);
-
-        // Emulate pressing the WiFi tethering button.
-        mTethering.startTethering(createTetheringRequestParcel(TETHERING_WIFI), null);
-        mLooper.dispatchAll();
-        verify(mWifiManager, times(1)).startTetheredHotspot(null);
-        verifyNoMoreInteractions(mWifiManager);
-        verifyNoMoreInteractions(mNetd);
-
-        // Emulate externally-visible WifiManager effects, causing the
-        // per-interface state machine to start up, and telling us that
-        // tethering mode is to be started.
-        mTethering.interfaceStatusChanged(TEST_WLAN_IFNAME, true);
-        sendWifiApStateChanged(WIFI_AP_STATE_ENABLED);
-        mLooper.dispatchAll();
-
-        // There is 1 IpServer state change event: STATE_AVAILABLE
-        verify(mNotificationUpdater, times(1)).onDownstreamChanged(DOWNSTREAM_NONE);
-        verifyTetheringBroadcast(TEST_WLAN_IFNAME, EXTRA_AVAILABLE_TETHER);
-        verify(mWifiManager).updateInterfaceIpState(
-                TEST_WLAN_IFNAME, WifiManager.IFACE_IP_MODE_UNSPECIFIED);
-        verifyNoMoreInteractions(mNetd);
-        verifyNoMoreInteractions(mWifiManager);
-    }
-
-    // TODO: Test with and without interfaceStatusChanged().
-    @Test
-    public void workingWifiTetheringEnrichedApBroadcast() throws Exception {
-        when(mWifiManager.startTetheredHotspot(any(SoftApConfiguration.class))).thenReturn(true);
-
-        // Emulate pressing the WiFi tethering button.
-        mTethering.startTethering(createTetheringRequestParcel(TETHERING_WIFI), null);
-        mLooper.dispatchAll();
-        verify(mWifiManager, times(1)).startTetheredHotspot(null);
-        verifyNoMoreInteractions(mWifiManager);
-        verifyNoMoreInteractions(mNetd);
-
-        // Emulate externally-visible WifiManager effects, causing the
-        // per-interface state machine to start up, and telling us that
-        // tethering mode is to be started.
-        mTethering.interfaceStatusChanged(TEST_WLAN_IFNAME, true);
-        sendWifiApStateChanged(WIFI_AP_STATE_ENABLED, TEST_WLAN_IFNAME, IFACE_IP_MODE_TETHERED);
-        mLooper.dispatchAll();
-
-        verifyInterfaceServingModeStarted(TEST_WLAN_IFNAME);
-        verifyTetheringBroadcast(TEST_WLAN_IFNAME, EXTRA_AVAILABLE_TETHER);
-        verify(mNetd, times(1)).ipfwdEnableForwarding(TETHERING_NAME);
-        verify(mNetd, times(1)).tetherStartWithConfiguration(any());
-        verify(mNetd, times(2)).networkAddRoute(eq(INetd.LOCAL_NET_ID), eq(TEST_WLAN_IFNAME),
-                anyString(), anyString());
-        verifyNoMoreInteractions(mNetd);
-        verify(mWifiManager).updateInterfaceIpState(
-                TEST_WLAN_IFNAME, WifiManager.IFACE_IP_MODE_UNSPECIFIED);
-        verify(mWifiManager).updateInterfaceIpState(
-                TEST_WLAN_IFNAME, WifiManager.IFACE_IP_MODE_TETHERED);
-        verifyNoMoreInteractions(mWifiManager);
-        verifyTetheringBroadcast(TEST_WLAN_IFNAME, EXTRA_ACTIVE_TETHER);
-        verify(mUpstreamNetworkMonitor, times(1)).startObserveAllNetworks();
-        // In tethering mode, in the default configuration, an explicit request
-        // for a mobile network is also made.
-        verify(mUpstreamNetworkMonitor, times(1)).registerMobileNetworkRequest();
-        // There are 2 IpServer state change events: STATE_AVAILABLE -> STATE_TETHERED
-        verify(mNotificationUpdater, times(1)).onDownstreamChanged(DOWNSTREAM_NONE);
-        verify(mNotificationUpdater, times(1)).onDownstreamChanged(eq(1 << TETHERING_WIFI));
-
-        /////
-        // We do not currently emulate any upstream being found.
-        //
-        // This is why there are no calls to verify mNetd.tetherAddForward() or
-        // mNetd.ipfwdAddInterfaceForward().
-        /////
-
-        // Emulate pressing the WiFi tethering button.
-        mTethering.stopTethering(TETHERING_WIFI);
-        mLooper.dispatchAll();
-        verify(mWifiManager, times(1)).stopSoftAp();
-        verifyNoMoreInteractions(mWifiManager);
-        verifyNoMoreInteractions(mNetd);
-
-        // Emulate externally-visible WifiManager effects, when tethering mode
-        // is being torn down.
-        sendWifiApStateChanged(WifiManager.WIFI_AP_STATE_DISABLED);
-        mTethering.interfaceRemoved(TEST_WLAN_IFNAME);
-        mLooper.dispatchAll();
-
-        verify(mNetd, times(1)).tetherApplyDnsInterfaces();
-        verify(mNetd, times(1)).tetherInterfaceRemove(TEST_WLAN_IFNAME);
-        verify(mNetd, times(1)).networkRemoveInterface(INetd.LOCAL_NET_ID, TEST_WLAN_IFNAME);
-        // interfaceSetCfg() called once for enabling and twice for disabling IPv4.
-        verify(mNetd, times(3)).interfaceSetCfg(any(InterfaceConfigurationParcel.class));
-        verify(mNetd, times(1)).tetherStop();
-        verify(mNetd, times(1)).ipfwdDisableForwarding(TETHERING_NAME);
-        verify(mWifiManager, times(3)).updateInterfaceIpState(
-                TEST_WLAN_IFNAME, WifiManager.IFACE_IP_MODE_UNSPECIFIED);
-        verifyNoMoreInteractions(mNetd);
-        verifyNoMoreInteractions(mWifiManager);
-        // Asking for the last error after the per-interface state machine
-        // has been reaped yields an unknown interface error.
-        assertEquals(TETHER_ERROR_UNKNOWN_IFACE, mTethering.getLastTetherError(TEST_WLAN_IFNAME));
-    }
-
-    // TODO: Test with and without interfaceStatusChanged().
-    @Test
-    public void failureEnablingIpForwarding() throws Exception {
-        when(mWifiManager.startTetheredHotspot(any(SoftApConfiguration.class))).thenReturn(true);
-        doThrow(new RemoteException()).when(mNetd).ipfwdEnableForwarding(TETHERING_NAME);
-
-        // Emulate pressing the WiFi tethering button.
-        mTethering.startTethering(createTetheringRequestParcel(TETHERING_WIFI), null);
-        mLooper.dispatchAll();
-        verify(mWifiManager, times(1)).startTetheredHotspot(null);
-        verifyNoMoreInteractions(mWifiManager);
-        verifyNoMoreInteractions(mNetd);
-
-        // Emulate externally-visible WifiManager effects, causing the
-        // per-interface state machine to start up, and telling us that
-        // tethering mode is to be started.
-        mTethering.interfaceStatusChanged(TEST_WLAN_IFNAME, true);
-        sendWifiApStateChanged(WIFI_AP_STATE_ENABLED, TEST_WLAN_IFNAME, IFACE_IP_MODE_TETHERED);
-        mLooper.dispatchAll();
-
-        // We verify get/set called three times here: twice for setup and once during
-        // teardown because all events happen over the course of the single
-        // dispatchAll() above. Note that once the IpServer IPv4 address config
-        // code is refactored the two calls during shutdown will revert to one.
-        verify(mNetd, times(3)).interfaceSetCfg(argThat(p -> TEST_WLAN_IFNAME.equals(p.ifName)));
-        verify(mNetd, times(1)).tetherInterfaceAdd(TEST_WLAN_IFNAME);
-        verify(mNetd, times(1)).networkAddInterface(INetd.LOCAL_NET_ID, TEST_WLAN_IFNAME);
-        verify(mNetd, times(2)).networkAddRoute(eq(INetd.LOCAL_NET_ID), eq(TEST_WLAN_IFNAME),
-                anyString(), anyString());
-        verify(mWifiManager).updateInterfaceIpState(
-                TEST_WLAN_IFNAME, WifiManager.IFACE_IP_MODE_UNSPECIFIED);
-        verify(mWifiManager).updateInterfaceIpState(
-                TEST_WLAN_IFNAME, WifiManager.IFACE_IP_MODE_TETHERED);
-        // There are 3 IpServer state change event:
-        //         STATE_AVAILABLE -> STATE_TETHERED -> STATE_AVAILABLE.
-        verify(mNotificationUpdater, times(2)).onDownstreamChanged(DOWNSTREAM_NONE);
-        verify(mNotificationUpdater, times(1)).onDownstreamChanged(eq(1 << TETHERING_WIFI));
-        verifyTetheringBroadcast(TEST_WLAN_IFNAME, EXTRA_AVAILABLE_TETHER);
-        // This is called, but will throw.
-        verify(mNetd, times(1)).ipfwdEnableForwarding(TETHERING_NAME);
-        // This never gets called because of the exception thrown above.
-        verify(mNetd, times(0)).tetherStartWithConfiguration(any());
-        // When the main state machine transitions to an error state it tells
-        // downstream interfaces, which causes us to tell Wi-Fi about the error
-        // so it can take down AP mode.
-        verify(mNetd, times(1)).tetherApplyDnsInterfaces();
-        verify(mNetd, times(1)).tetherInterfaceRemove(TEST_WLAN_IFNAME);
-        verify(mNetd, times(1)).networkRemoveInterface(INetd.LOCAL_NET_ID, TEST_WLAN_IFNAME);
-        verify(mWifiManager).updateInterfaceIpState(
-                TEST_WLAN_IFNAME, WifiManager.IFACE_IP_MODE_CONFIGURATION_ERROR);
-
-        verifyNoMoreInteractions(mWifiManager);
-        verifyNoMoreInteractions(mNetd);
-    }
-
-    private void runUserRestrictionsChange(
-            boolean currentDisallow, boolean nextDisallow, boolean isTetheringActive,
-            int expectedInteractionsWithShowNotification) throws  Exception {
-        final Bundle newRestrictions = new Bundle();
-        newRestrictions.putBoolean(UserManager.DISALLOW_CONFIG_TETHERING, nextDisallow);
-        final Tethering mockTethering = mock(Tethering.class);
-        when(mockTethering.isTetheringActive()).thenReturn(isTetheringActive);
-        when(mUserManager.getUserRestrictions()).thenReturn(newRestrictions);
-
-        final Tethering.UserRestrictionActionListener ural =
-                new Tethering.UserRestrictionActionListener(
-                        mUserManager, mockTethering, mNotificationUpdater);
-        ural.mDisallowTethering = currentDisallow;
-
-        ural.onUserRestrictionsChanged();
-
-        verify(mNotificationUpdater, times(expectedInteractionsWithShowNotification))
-                .notifyTetheringDisabledByRestriction();
-        verify(mockTethering, times(expectedInteractionsWithShowNotification)).untetherAll();
-    }
-
-    @Test
-    public void testDisallowTetheringWhenTetheringIsNotActive() throws Exception {
-        final boolean isTetheringActive = false;
-        final boolean currDisallow = false;
-        final boolean nextDisallow = true;
-        final int expectedInteractionsWithShowNotification = 0;
-
-        runUserRestrictionsChange(currDisallow, nextDisallow, isTetheringActive,
-                expectedInteractionsWithShowNotification);
-    }
-
-    @Test
-    public void testDisallowTetheringWhenTetheringIsActive() throws Exception {
-        final boolean isTetheringActive = true;
-        final boolean currDisallow = false;
-        final boolean nextDisallow = true;
-        final int expectedInteractionsWithShowNotification = 1;
-
-        runUserRestrictionsChange(currDisallow, nextDisallow, isTetheringActive,
-                expectedInteractionsWithShowNotification);
-    }
-
-    @Test
-    public void testAllowTetheringWhenTetheringIsNotActive() throws Exception {
-        final boolean isTetheringActive = false;
-        final boolean currDisallow = true;
-        final boolean nextDisallow = false;
-        final int expectedInteractionsWithShowNotification = 0;
-
-        runUserRestrictionsChange(currDisallow, nextDisallow, isTetheringActive,
-                expectedInteractionsWithShowNotification);
-    }
-
-    @Test
-    public void testAllowTetheringWhenTetheringIsActive() throws Exception {
-        final boolean isTetheringActive = true;
-        final boolean currDisallow = true;
-        final boolean nextDisallow = false;
-        final int expectedInteractionsWithShowNotification = 0;
-
-        runUserRestrictionsChange(currDisallow, nextDisallow, isTetheringActive,
-                expectedInteractionsWithShowNotification);
-    }
-
-    @Test
-    public void testDisallowTetheringUnchanged() throws Exception {
-        final boolean isTetheringActive = true;
-        final int expectedInteractionsWithShowNotification = 0;
-        boolean currDisallow = true;
-        boolean nextDisallow = true;
-
-        runUserRestrictionsChange(currDisallow, nextDisallow, isTetheringActive,
-                expectedInteractionsWithShowNotification);
-
-        currDisallow = false;
-        nextDisallow = false;
-
-        runUserRestrictionsChange(currDisallow, nextDisallow, isTetheringActive,
-                expectedInteractionsWithShowNotification);
-    }
-
-    private class TestTetheringEventCallback extends ITetheringEventCallback.Stub {
-        private final ArrayList<Network> mActualUpstreams = new ArrayList<>();
-        private final ArrayList<TetheringConfigurationParcel> mTetheringConfigs =
-                new ArrayList<>();
-        private final ArrayList<TetherStatesParcel> mTetherStates = new ArrayList<>();
-        private final ArrayList<Integer> mOffloadStatus = new ArrayList<>();
-
-        // This function will remove the recorded callbacks, so it must be called once for
-        // each callback. If this is called after multiple callback, the order matters.
-        // onCallbackCreated counts as the first call to expectUpstreamChanged with
-        // @see onCallbackCreated.
-        public void expectUpstreamChanged(Network... networks) {
-            if (networks == null) {
-                assertNoUpstreamChangeCallback();
-                return;
-            }
-
-            final ArrayList<Network> expectedUpstreams =
-                    new ArrayList<Network>(Arrays.asList(networks));
-            for (Network upstream : expectedUpstreams) {
-                // throws OOB if no expectations
-                assertEquals(mActualUpstreams.remove(0), upstream);
-            }
-            assertNoUpstreamChangeCallback();
-        }
-
-        // This function will remove the recorded callbacks, so it must be called once
-        // for each callback. If this is called after multiple callback, the order matters.
-        // onCallbackCreated counts as the first call to onConfigurationChanged with
-        // @see onCallbackCreated.
-        public void expectConfigurationChanged(TetheringConfigurationParcel... tetherConfigs) {
-            final ArrayList<TetheringConfigurationParcel> expectedTetherConfig =
-                    new ArrayList<TetheringConfigurationParcel>(Arrays.asList(tetherConfigs));
-            for (TetheringConfigurationParcel config : expectedTetherConfig) {
-                // throws OOB if no expectations
-                final TetheringConfigurationParcel actualConfig = mTetheringConfigs.remove(0);
-                assertTetherConfigParcelEqual(actualConfig, config);
-            }
-            assertNoConfigChangeCallback();
-        }
-
-        public void expectOffloadStatusChanged(final int expectedStatus) {
-            assertOffloadStatusChangedCallback();
-            assertEquals(mOffloadStatus.remove(0), new Integer(expectedStatus));
-        }
-
-        public TetherStatesParcel pollTetherStatesChanged() {
-            assertStateChangeCallback();
-            return mTetherStates.remove(0);
-        }
-
-        @Override
-        public void onUpstreamChanged(Network network) {
-            mActualUpstreams.add(network);
-        }
-
-        @Override
-        public void onConfigurationChanged(TetheringConfigurationParcel config) {
-            mTetheringConfigs.add(config);
-        }
-
-        @Override
-        public void onTetherStatesChanged(TetherStatesParcel states) {
-            mTetherStates.add(states);
-        }
-
-        @Override
-        public void onTetherClientsChanged(List<TetheredClient> clients) {
-            // TODO: check this
-        }
-
-        @Override
-        public void onOffloadStatusChanged(final int status) {
-            mOffloadStatus.add(status);
-        }
-
-        @Override
-        public void onCallbackStarted(TetheringCallbackStartedParcel parcel) {
-            mActualUpstreams.add(parcel.upstreamNetwork);
-            mTetheringConfigs.add(parcel.config);
-            mTetherStates.add(parcel.states);
-            mOffloadStatus.add(parcel.offloadStatus);
-        }
-
-        @Override
-        public void onCallbackStopped(int errorCode) { }
-
-        public void assertNoUpstreamChangeCallback() {
-            assertTrue(mActualUpstreams.isEmpty());
-        }
-
-        public void assertNoConfigChangeCallback() {
-            assertTrue(mTetheringConfigs.isEmpty());
-        }
-
-        public void assertNoStateChangeCallback() {
-            assertTrue(mTetherStates.isEmpty());
-        }
-
-        public void assertStateChangeCallback() {
-            assertFalse(mTetherStates.isEmpty());
-        }
-
-        public void assertOffloadStatusChangedCallback() {
-            assertFalse(mOffloadStatus.isEmpty());
-        }
-
-        public void assertNoCallback() {
-            assertNoUpstreamChangeCallback();
-            assertNoConfigChangeCallback();
-            assertNoStateChangeCallback();
-        }
-
-        private void assertTetherConfigParcelEqual(@NonNull TetheringConfigurationParcel actual,
-                @NonNull TetheringConfigurationParcel expect) {
-            assertEquals(actual.subId, expect.subId);
-            assertArrayEquals(actual.tetherableUsbRegexs, expect.tetherableUsbRegexs);
-            assertArrayEquals(actual.tetherableWifiRegexs, expect.tetherableWifiRegexs);
-            assertArrayEquals(actual.tetherableBluetoothRegexs, expect.tetherableBluetoothRegexs);
-            assertEquals(actual.isDunRequired, expect.isDunRequired);
-            assertEquals(actual.chooseUpstreamAutomatically, expect.chooseUpstreamAutomatically);
-            assertArrayEquals(actual.preferredUpstreamIfaceTypes,
-                    expect.preferredUpstreamIfaceTypes);
-            assertArrayEquals(actual.legacyDhcpRanges, expect.legacyDhcpRanges);
-            assertArrayEquals(actual.defaultIPv4DNS, expect.defaultIPv4DNS);
-            assertEquals(actual.enableLegacyDhcpServer, expect.enableLegacyDhcpServer);
-            assertArrayEquals(actual.provisioningApp, expect.provisioningApp);
-            assertEquals(actual.provisioningAppNoUi, expect.provisioningAppNoUi);
-            assertEquals(actual.provisioningCheckPeriod, expect.provisioningCheckPeriod);
-        }
-    }
-
-    private void assertTetherStatesNotNullButEmpty(final TetherStatesParcel parcel) {
-        assertFalse(parcel == null);
-        assertEquals(0, parcel.availableList.length);
-        assertEquals(0, parcel.tetheredList.length);
-        assertEquals(0, parcel.localOnlyList.length);
-        assertEquals(0, parcel.erroredIfaceList.length);
-        assertEquals(0, parcel.lastErrorList.length);
-        MiscAsserts.assertFieldCountEquals(5, TetherStatesParcel.class);
-    }
-
-    @Test
-    public void testRegisterTetheringEventCallback() throws Exception {
-        TestTetheringEventCallback callback = new TestTetheringEventCallback();
-        TestTetheringEventCallback callback2 = new TestTetheringEventCallback();
-
-        // 1. Register one callback before running any tethering.
-        mTethering.registerTetheringEventCallback(callback);
-        mLooper.dispatchAll();
-        callback.expectUpstreamChanged(new Network[] {null});
-        callback.expectConfigurationChanged(
-                mTethering.getTetheringConfiguration().toStableParcelable());
-        TetherStatesParcel tetherState = callback.pollTetherStatesChanged();
-        assertTetherStatesNotNullButEmpty(tetherState);
-        callback.expectOffloadStatusChanged(TETHER_HARDWARE_OFFLOAD_STOPPED);
-        // 2. Enable wifi tethering.
-        UpstreamNetworkState upstreamState = buildMobileDualStackUpstreamState();
-        initTetheringUpstream(upstreamState);
-        when(mWifiManager.startTetheredHotspot(any(SoftApConfiguration.class))).thenReturn(true);
-        mTethering.interfaceStatusChanged(TEST_WLAN_IFNAME, true);
-        mLooper.dispatchAll();
-        tetherState = callback.pollTetherStatesChanged();
-        assertArrayEquals(tetherState.availableList, new String[] {TEST_WLAN_IFNAME});
-
-        mTethering.startTethering(createTetheringRequestParcel(TETHERING_WIFI), null);
-        sendWifiApStateChanged(WIFI_AP_STATE_ENABLED, TEST_WLAN_IFNAME, IFACE_IP_MODE_TETHERED);
-        mLooper.dispatchAll();
-        tetherState = callback.pollTetherStatesChanged();
-        assertArrayEquals(tetherState.tetheredList, new String[] {TEST_WLAN_IFNAME});
-        callback.expectUpstreamChanged(upstreamState.network);
-        callback.expectOffloadStatusChanged(TETHER_HARDWARE_OFFLOAD_STARTED);
-
-        // 3. Register second callback.
-        mTethering.registerTetheringEventCallback(callback2);
-        mLooper.dispatchAll();
-        callback2.expectUpstreamChanged(upstreamState.network);
-        callback2.expectConfigurationChanged(
-                mTethering.getTetheringConfiguration().toStableParcelable());
-        tetherState = callback2.pollTetherStatesChanged();
-        assertEquals(tetherState.tetheredList, new String[] {TEST_WLAN_IFNAME});
-        callback2.expectOffloadStatusChanged(TETHER_HARDWARE_OFFLOAD_STARTED);
-
-        // 4. Unregister first callback and disable wifi tethering
-        mTethering.unregisterTetheringEventCallback(callback);
-        mLooper.dispatchAll();
-        mTethering.stopTethering(TETHERING_WIFI);
-        sendWifiApStateChanged(WifiManager.WIFI_AP_STATE_DISABLED);
-        mLooper.dispatchAll();
-        tetherState = callback2.pollTetherStatesChanged();
-        assertArrayEquals(tetherState.availableList, new String[] {TEST_WLAN_IFNAME});
-        mLooper.dispatchAll();
-        callback2.expectUpstreamChanged(new Network[] {null});
-        callback2.expectOffloadStatusChanged(TETHER_HARDWARE_OFFLOAD_STOPPED);
-        callback.assertNoCallback();
-    }
-
-    @Test
-    public void testReportFailCallbackIfOffloadNotSupported() throws Exception {
-        final UpstreamNetworkState upstreamState = buildMobileDualStackUpstreamState();
-        TestTetheringEventCallback callback = new TestTetheringEventCallback();
-        mTethering.registerTetheringEventCallback(callback);
-        mLooper.dispatchAll();
-        callback.expectOffloadStatusChanged(TETHER_HARDWARE_OFFLOAD_STOPPED);
-
-        // 1. Offload fail if no OffloadConfig.
-        initOffloadConfiguration(false /* offloadConfig */, true /* offloadControl */,
-                0 /* defaultDisabled */);
-        runUsbTethering(upstreamState);
-        callback.expectOffloadStatusChanged(TETHER_HARDWARE_OFFLOAD_FAILED);
-        runStopUSBTethering();
-        callback.expectOffloadStatusChanged(TETHER_HARDWARE_OFFLOAD_STOPPED);
-        reset(mUsbManager);
-        // 2. Offload fail if no OffloadControl.
-        initOffloadConfiguration(true /* offloadConfig */, false /* offloadControl */,
-                0 /* defaultDisabled */);
-        runUsbTethering(upstreamState);
-        callback.expectOffloadStatusChanged(TETHER_HARDWARE_OFFLOAD_FAILED);
-        runStopUSBTethering();
-        callback.expectOffloadStatusChanged(TETHER_HARDWARE_OFFLOAD_STOPPED);
-        reset(mUsbManager);
-        // 3. Offload fail if disabled by settings.
-        initOffloadConfiguration(true /* offloadConfig */, true /* offloadControl */,
-                1 /* defaultDisabled */);
-        runUsbTethering(upstreamState);
-        callback.expectOffloadStatusChanged(TETHER_HARDWARE_OFFLOAD_FAILED);
-        runStopUSBTethering();
-        callback.expectOffloadStatusChanged(TETHER_HARDWARE_OFFLOAD_STOPPED);
-    }
-
-    private void runStopUSBTethering() {
-        mTethering.stopTethering(TETHERING_USB);
-        mLooper.dispatchAll();
-        mTethering.interfaceRemoved(TEST_USB_IFNAME);
-        mLooper.dispatchAll();
-    }
-
-    private void initOffloadConfiguration(final boolean offloadConfig,
-            final boolean offloadControl, final int defaultDisabled) {
-        when(mOffloadHardwareInterface.initOffloadConfig()).thenReturn(offloadConfig);
-        when(mOffloadHardwareInterface.initOffloadControl(any())).thenReturn(offloadControl);
-        when(mOffloadHardwareInterface.getDefaultTetherOffloadDisabled()).thenReturn(
-                defaultDisabled);
-    }
-
-    @Test
-    public void testMultiSimAware() throws Exception {
-        final TetheringConfiguration initailConfig = mTethering.getTetheringConfiguration();
-        assertEquals(INVALID_SUBSCRIPTION_ID, initailConfig.activeDataSubId);
-
-        final int fakeSubId = 1234;
-        mPhoneStateListener.onActiveDataSubscriptionIdChanged(fakeSubId);
-        final TetheringConfiguration newConfig = mTethering.getTetheringConfiguration();
-        assertEquals(fakeSubId, newConfig.activeDataSubId);
-        verify(mNotificationUpdater, times(1)).onActiveDataSubscriptionIdChanged(eq(fakeSubId));
-    }
-
-    @Test
-    public void testNoDuplicatedEthernetRequest() throws Exception {
-        final TetheredInterfaceRequest mockRequest = mock(TetheredInterfaceRequest.class);
-        when(mEm.requestTetheredInterface(any(), any())).thenReturn(mockRequest);
-        mTethering.startTethering(createTetheringRequestParcel(TETHERING_ETHERNET), null);
-        mLooper.dispatchAll();
-        verify(mEm, times(1)).requestTetheredInterface(any(), any());
-        mTethering.startTethering(createTetheringRequestParcel(TETHERING_ETHERNET), null);
-        mLooper.dispatchAll();
-        verifyNoMoreInteractions(mEm);
-        mTethering.stopTethering(TETHERING_ETHERNET);
-        mLooper.dispatchAll();
-        verify(mockRequest, times(1)).release();
-        mTethering.stopTethering(TETHERING_ETHERNET);
-        mLooper.dispatchAll();
-        verifyNoMoreInteractions(mEm);
-    }
-
-    private void workingWifiP2pGroupOwner(
-            boolean emulateInterfaceStatusChanged) throws Exception {
-        if (emulateInterfaceStatusChanged) {
-            mTethering.interfaceStatusChanged(TEST_P2P_IFNAME, true);
-        }
-        sendWifiP2pConnectionChanged(true, true, TEST_P2P_IFNAME);
-        mLooper.dispatchAll();
-
-        verifyInterfaceServingModeStarted(TEST_P2P_IFNAME);
-        verifyTetheringBroadcast(TEST_P2P_IFNAME, EXTRA_AVAILABLE_TETHER);
-        verify(mNetd, times(1)).ipfwdEnableForwarding(TETHERING_NAME);
-        verify(mNetd, times(1)).tetherStartWithConfiguration(any());
-        verifyNoMoreInteractions(mNetd);
-        verifyTetheringBroadcast(TEST_P2P_IFNAME, EXTRA_ACTIVE_LOCAL_ONLY);
-        verify(mUpstreamNetworkMonitor, times(1)).startObserveAllNetworks();
-        // There are 2 IpServer state change events: STATE_AVAILABLE -> STATE_LOCAL_ONLY
-        verify(mNotificationUpdater, times(2)).onDownstreamChanged(DOWNSTREAM_NONE);
-
-        assertEquals(TETHER_ERROR_NO_ERROR, mTethering.getLastTetherError(TEST_P2P_IFNAME));
-
-        // Emulate externally-visible WifiP2pManager effects, when wifi p2p group
-        // is being removed.
-        sendWifiP2pConnectionChanged(false, true, TEST_P2P_IFNAME);
-        mTethering.interfaceRemoved(TEST_P2P_IFNAME);
-        mLooper.dispatchAll();
-
-        verify(mNetd, times(1)).tetherApplyDnsInterfaces();
-        verify(mNetd, times(1)).tetherInterfaceRemove(TEST_P2P_IFNAME);
-        verify(mNetd, times(1)).networkRemoveInterface(INetd.LOCAL_NET_ID, TEST_P2P_IFNAME);
-        // interfaceSetCfg() called once for enabling and twice for disabling IPv4.
-        verify(mNetd, times(3)).interfaceSetCfg(any(InterfaceConfigurationParcel.class));
-        verify(mNetd, times(1)).tetherStop();
-        verify(mNetd, times(1)).ipfwdDisableForwarding(TETHERING_NAME);
-        verify(mUpstreamNetworkMonitor, never()).getCurrentPreferredUpstream();
-        verify(mUpstreamNetworkMonitor, never()).selectPreferredUpstreamType(any());
-        verifyNoMoreInteractions(mNetd);
-        // Asking for the last error after the per-interface state machine
-        // has been reaped yields an unknown interface error.
-        assertEquals(TETHER_ERROR_UNKNOWN_IFACE, mTethering.getLastTetherError(TEST_P2P_IFNAME));
-    }
-
-    private void workingWifiP2pGroupClient(
-            boolean emulateInterfaceStatusChanged) throws Exception {
-        if (emulateInterfaceStatusChanged) {
-            mTethering.interfaceStatusChanged(TEST_P2P_IFNAME, true);
-        }
-        sendWifiP2pConnectionChanged(true, false, TEST_P2P_IFNAME);
-        mLooper.dispatchAll();
-
-        verify(mNetd, never()).interfaceSetCfg(any(InterfaceConfigurationParcel.class));
-        verify(mNetd, never()).tetherInterfaceAdd(TEST_P2P_IFNAME);
-        verify(mNetd, never()).networkAddInterface(INetd.LOCAL_NET_ID, TEST_P2P_IFNAME);
-        verify(mNetd, never()).ipfwdEnableForwarding(TETHERING_NAME);
-        verify(mNetd, never()).tetherStartWithConfiguration(any());
-
-        // Emulate externally-visible WifiP2pManager effects, when wifi p2p group
-        // is being removed.
-        sendWifiP2pConnectionChanged(false, false, TEST_P2P_IFNAME);
-        mTethering.interfaceRemoved(TEST_P2P_IFNAME);
-        mLooper.dispatchAll();
-
-        verify(mNetd, never()).tetherApplyDnsInterfaces();
-        verify(mNetd, never()).tetherInterfaceRemove(TEST_P2P_IFNAME);
-        verify(mNetd, never()).networkRemoveInterface(INetd.LOCAL_NET_ID, TEST_P2P_IFNAME);
-        verify(mNetd, never()).interfaceSetCfg(any(InterfaceConfigurationParcel.class));
-        verify(mNetd, never()).tetherStop();
-        verify(mNetd, never()).ipfwdDisableForwarding(TETHERING_NAME);
-        verifyNoMoreInteractions(mNetd);
-        // Asking for the last error after the per-interface state machine
-        // has been reaped yields an unknown interface error.
-        assertEquals(TETHER_ERROR_UNKNOWN_IFACE, mTethering.getLastTetherError(TEST_P2P_IFNAME));
-    }
-
-    @Test
-    public void workingWifiP2pGroupOwnerWithIfaceChanged() throws Exception {
-        workingWifiP2pGroupOwner(true);
-    }
-
-    @Test
-    public void workingWifiP2pGroupOwnerSansIfaceChanged() throws Exception {
-        workingWifiP2pGroupOwner(false);
-    }
-
-    private void workingWifiP2pGroupOwnerLegacyMode(
-            boolean emulateInterfaceStatusChanged) throws Exception {
-        // change to legacy mode and update tethering information by chaning SIM
-        when(mResources.getStringArray(R.array.config_tether_wifi_p2p_regexs))
-                .thenReturn(new String[]{});
-        final int fakeSubId = 1234;
-        mPhoneStateListener.onActiveDataSubscriptionIdChanged(fakeSubId);
-
-        if (emulateInterfaceStatusChanged) {
-            mTethering.interfaceStatusChanged(TEST_P2P_IFNAME, true);
-        }
-        sendWifiP2pConnectionChanged(true, true, TEST_P2P_IFNAME);
-        mLooper.dispatchAll();
-
-        verify(mNetd, never()).interfaceSetCfg(any(InterfaceConfigurationParcel.class));
-        verify(mNetd, never()).tetherInterfaceAdd(TEST_P2P_IFNAME);
-        verify(mNetd, never()).networkAddInterface(INetd.LOCAL_NET_ID, TEST_P2P_IFNAME);
-        verify(mNetd, never()).ipfwdEnableForwarding(TETHERING_NAME);
-        verify(mNetd, never()).tetherStartWithConfiguration(any());
-        assertEquals(TETHER_ERROR_UNKNOWN_IFACE, mTethering.getLastTetherError(TEST_P2P_IFNAME));
-    }
-    @Test
-    public void workingWifiP2pGroupOwnerLegacyModeWithIfaceChanged() throws Exception {
-        workingWifiP2pGroupOwnerLegacyMode(true);
-    }
-
-    @Test
-    public void workingWifiP2pGroupOwnerLegacyModeSansIfaceChanged() throws Exception {
-        workingWifiP2pGroupOwnerLegacyMode(false);
-    }
-
-    @Test
-    public void workingWifiP2pGroupClientWithIfaceChanged() throws Exception {
-        workingWifiP2pGroupClient(true);
-    }
-
-    @Test
-    public void workingWifiP2pGroupClientSansIfaceChanged() throws Exception {
-        workingWifiP2pGroupClient(false);
-    }
-
-    private void setDataSaverEnabled(boolean enabled) {
-        final Intent intent = new Intent(ACTION_RESTRICT_BACKGROUND_CHANGED);
-        mServiceContext.sendBroadcastAsUser(intent, UserHandle.ALL);
-
-        final int status = enabled ? RESTRICT_BACKGROUND_STATUS_ENABLED
-                : RESTRICT_BACKGROUND_STATUS_DISABLED;
-        when(mCm.getRestrictBackgroundStatus()).thenReturn(status);
-        mLooper.dispatchAll();
-    }
-
-    @Test
-    public void testDataSaverChanged() {
-        // Start Tethering.
-        final UpstreamNetworkState upstreamState = buildMobileIPv4UpstreamState();
-        runUsbTethering(upstreamState);
-        assertContains(Arrays.asList(mTethering.getTetheredIfaces()), TEST_USB_IFNAME);
-        // Data saver is ON.
-        setDataSaverEnabled(true);
-        // Verify that tethering should be disabled.
-        verify(mUsbManager, times(1)).setCurrentFunctions(UsbManager.FUNCTION_NONE);
-        mTethering.interfaceRemoved(TEST_USB_IFNAME);
-        mLooper.dispatchAll();
-        assertEquals(mTethering.getTetheredIfaces(), new String[0]);
-        reset(mUsbManager);
-
-        runUsbTethering(upstreamState);
-        // Verify that user can start tethering again without turning OFF data saver.
-        assertContains(Arrays.asList(mTethering.getTetheredIfaces()), TEST_USB_IFNAME);
-
-        // If data saver is keep ON with change event, tethering should not be OFF this time.
-        setDataSaverEnabled(true);
-        verify(mUsbManager, times(0)).setCurrentFunctions(UsbManager.FUNCTION_NONE);
-        assertContains(Arrays.asList(mTethering.getTetheredIfaces()), TEST_USB_IFNAME);
-
-        // If data saver is turned OFF, it should not change tethering.
-        setDataSaverEnabled(false);
-        verify(mUsbManager, times(0)).setCurrentFunctions(UsbManager.FUNCTION_NONE);
-        assertContains(Arrays.asList(mTethering.getTetheredIfaces()), TEST_USB_IFNAME);
-    }
-
-    private static <T> void assertContains(Collection<T> collection, T element) {
-        assertTrue(element + " not found in " + collection, collection.contains(element));
-    }
-
-    private class ResultListener extends IIntResultListener.Stub {
-        private final int mExpectedResult;
-        private boolean mHasResult = false;
-        ResultListener(final int expectedResult) {
-            mExpectedResult = expectedResult;
-        }
-
-        @Override
-        public void onResult(final int resultCode) {
-            mHasResult = true;
-            if (resultCode != mExpectedResult) {
-                fail("expected result: " + mExpectedResult + " but actual result: " + resultCode);
-            }
-        }
-
-        public void assertHasResult() {
-            if (!mHasResult) fail("No callback result");
-        }
-    }
-
-    @Test
-    public void testMultipleStartTethering() throws Exception {
-        final LinkAddress serverLinkAddr = new LinkAddress("192.168.20.1/24");
-        final LinkAddress clientLinkAddr = new LinkAddress("192.168.20.42/24");
-        final String serverAddr = "192.168.20.1";
-        final ResultListener firstResult = new ResultListener(TETHER_ERROR_NO_ERROR);
-        final ResultListener secondResult = new ResultListener(TETHER_ERROR_NO_ERROR);
-        final ResultListener thirdResult = new ResultListener(TETHER_ERROR_NO_ERROR);
-
-        // Enable USB tethering and check that Tethering starts USB.
-        mTethering.startTethering(createTetheringRequestParcel(TETHERING_USB,
-                  null, null, false), firstResult);
-        mLooper.dispatchAll();
-        firstResult.assertHasResult();
-        verify(mUsbManager, times(1)).setCurrentFunctions(UsbManager.FUNCTION_RNDIS);
-        verifyNoMoreInteractions(mUsbManager);
-
-        // Enable USB tethering again with the same request and expect no change to USB.
-        mTethering.startTethering(createTetheringRequestParcel(TETHERING_USB,
-                  null, null, false), secondResult);
-        mLooper.dispatchAll();
-        secondResult.assertHasResult();
-        verify(mUsbManager, never()).setCurrentFunctions(UsbManager.FUNCTION_NONE);
-        reset(mUsbManager);
-
-        // Enable USB tethering with a different request and expect that USB is stopped and
-        // started.
-        mTethering.startTethering(createTetheringRequestParcel(TETHERING_USB,
-                  serverLinkAddr, clientLinkAddr, false), thirdResult);
-        mLooper.dispatchAll();
-        thirdResult.assertHasResult();
-        verify(mUsbManager, times(1)).setCurrentFunctions(UsbManager.FUNCTION_NONE);
-        verify(mUsbManager, times(1)).setCurrentFunctions(UsbManager.FUNCTION_RNDIS);
-
-        // Expect that when USB comes up, the DHCP server is configured with the requested address.
-        mTethering.interfaceStatusChanged(TEST_USB_IFNAME, true);
-        sendUsbBroadcast(true, true, true, TETHERING_USB);
-        mLooper.dispatchAll();
-        verify(mDhcpServer, timeout(DHCPSERVER_START_TIMEOUT_MS).times(1)).startWithCallbacks(
-                any(), any());
-        verify(mNetd).interfaceSetCfg(argThat(cfg -> serverAddr.equals(cfg.ipv4Addr)));
-    }
-
-    @Test
-    public void testRequestStaticIp() throws Exception {
-        final LinkAddress serverLinkAddr = new LinkAddress("192.168.0.123/24");
-        final LinkAddress clientLinkAddr = new LinkAddress("192.168.0.42/24");
-        final String serverAddr = "192.168.0.123";
-        final int clientAddrParceled = 0xc0a8002a;
-        final ArgumentCaptor<DhcpServingParamsParcel> dhcpParamsCaptor =
-                ArgumentCaptor.forClass(DhcpServingParamsParcel.class);
-        mTethering.startTethering(createTetheringRequestParcel(TETHERING_USB,
-                  serverLinkAddr, clientLinkAddr, false), null);
-        mLooper.dispatchAll();
-        verify(mUsbManager, times(1)).setCurrentFunctions(UsbManager.FUNCTION_RNDIS);
-        mTethering.interfaceStatusChanged(TEST_USB_IFNAME, true);
-        sendUsbBroadcast(true, true, true, TETHERING_USB);
-        mLooper.dispatchAll();
-        verify(mNetd).interfaceSetCfg(argThat(cfg -> serverAddr.equals(cfg.ipv4Addr)));
-        verify(mIpServerDependencies, times(1)).makeDhcpServer(any(), dhcpParamsCaptor.capture(),
-                any());
-        final DhcpServingParamsParcel params = dhcpParamsCaptor.getValue();
-        assertEquals(serverAddr, intToInet4AddressHTH(params.serverAddr).getHostAddress());
-        assertEquals(24, params.serverAddrPrefixLength);
-        assertEquals(clientAddrParceled, params.singleClientAddr);
-    }
-
-    @Test
-    public void testUpstreamNetworkChanged() {
-        final Tethering.TetherMainSM stateMachine = (Tethering.TetherMainSM)
-                mTetheringDependencies.mUpstreamNetworkMonitorSM;
-        final UpstreamNetworkState upstreamState = buildMobileIPv4UpstreamState();
-        initTetheringUpstream(upstreamState);
-        stateMachine.chooseUpstreamType(true);
-
-        verify(mUpstreamNetworkMonitor, times(1)).setCurrentUpstream(eq(upstreamState.network));
-        verify(mNotificationUpdater, times(1)).onUpstreamCapabilitiesChanged(any());
-    }
-
-    @Test
-    public void testUpstreamCapabilitiesChanged() {
-        final Tethering.TetherMainSM stateMachine = (Tethering.TetherMainSM)
-                mTetheringDependencies.mUpstreamNetworkMonitorSM;
-        final UpstreamNetworkState upstreamState = buildMobileIPv4UpstreamState();
-        initTetheringUpstream(upstreamState);
-        stateMachine.chooseUpstreamType(true);
-
-        stateMachine.handleUpstreamNetworkMonitorCallback(EVENT_ON_CAPABILITIES, upstreamState);
-        // Should have two onUpstreamCapabilitiesChanged().
-        // One is called by reportUpstreamChanged(). One is called by EVENT_ON_CAPABILITIES.
-        verify(mNotificationUpdater, times(2)).onUpstreamCapabilitiesChanged(any());
-        reset(mNotificationUpdater);
-
-        // Verify that onUpstreamCapabilitiesChanged won't be called if not current upstream network
-        // capabilities changed.
-        final UpstreamNetworkState upstreamState2 = new UpstreamNetworkState(
-                upstreamState.linkProperties, upstreamState.networkCapabilities, new Network(101));
-        stateMachine.handleUpstreamNetworkMonitorCallback(EVENT_ON_CAPABILITIES, upstreamState2);
-        verify(mNotificationUpdater, never()).onUpstreamCapabilitiesChanged(any());
-    }
-
-    @Test
-    public void testDumpTetheringLog() throws Exception {
-        final FileDescriptor mockFd = mock(FileDescriptor.class);
-        final PrintWriter mockPw = mock(PrintWriter.class);
-        runUsbTethering(null);
-        mLooper.startAutoDispatch();
-        mTethering.dump(mockFd, mockPw, new String[0]);
-        verify(mConfig).dump(any());
-        verify(mEntitleMgr).dump(any());
-        verify(mOffloadCtrl).dump(any());
-        mLooper.stopAutoDispatch();
-    }
-
-    @Test
-    public void testExemptFromEntitlementCheck() throws Exception {
-        setupForRequiredProvisioning();
-        final TetheringRequestParcel wifiNotExemptRequest =
-                createTetheringRequestParcel(TETHERING_WIFI, null, null, false);
-        mTethering.startTethering(wifiNotExemptRequest, null);
-        mLooper.dispatchAll();
-        verify(mEntitleMgr).startProvisioningIfNeeded(TETHERING_WIFI, false);
-        verify(mEntitleMgr, never()).setExemptedDownstreamType(TETHERING_WIFI);
-        assertFalse(mEntitleMgr.isCellularUpstreamPermitted());
-        mTethering.stopTethering(TETHERING_WIFI);
-        mLooper.dispatchAll();
-        verify(mEntitleMgr).stopProvisioningIfNeeded(TETHERING_WIFI);
-        reset(mEntitleMgr);
-
-        setupForRequiredProvisioning();
-        final TetheringRequestParcel wifiExemptRequest =
-                createTetheringRequestParcel(TETHERING_WIFI, null, null, true);
-        mTethering.startTethering(wifiExemptRequest, null);
-        mLooper.dispatchAll();
-        verify(mEntitleMgr, never()).startProvisioningIfNeeded(TETHERING_WIFI, false);
-        verify(mEntitleMgr).setExemptedDownstreamType(TETHERING_WIFI);
-        assertTrue(mEntitleMgr.isCellularUpstreamPermitted());
-        mTethering.stopTethering(TETHERING_WIFI);
-        mLooper.dispatchAll();
-        verify(mEntitleMgr).stopProvisioningIfNeeded(TETHERING_WIFI);
-        reset(mEntitleMgr);
-
-        // If one app enables tethering without provisioning check first, then another app enables
-        // tethering of the same type but does not disable the provisioning check.
-        setupForRequiredProvisioning();
-        mTethering.startTethering(wifiExemptRequest, null);
-        mLooper.dispatchAll();
-        verify(mEntitleMgr, never()).startProvisioningIfNeeded(TETHERING_WIFI, false);
-        verify(mEntitleMgr).setExemptedDownstreamType(TETHERING_WIFI);
-        assertTrue(mEntitleMgr.isCellularUpstreamPermitted());
-        reset(mEntitleMgr);
-        setupForRequiredProvisioning();
-        mTethering.startTethering(wifiNotExemptRequest, null);
-        mLooper.dispatchAll();
-        verify(mEntitleMgr).startProvisioningIfNeeded(TETHERING_WIFI, false);
-        verify(mEntitleMgr, never()).setExemptedDownstreamType(TETHERING_WIFI);
-        assertFalse(mEntitleMgr.isCellularUpstreamPermitted());
-        mTethering.stopTethering(TETHERING_WIFI);
-        mLooper.dispatchAll();
-        verify(mEntitleMgr).stopProvisioningIfNeeded(TETHERING_WIFI);
-        reset(mEntitleMgr);
-    }
-
-    private void setupForRequiredProvisioning() {
-        // Produce some acceptable looking provision app setting if requested.
-        when(mResources.getStringArray(R.array.config_mobile_hotspot_provision_app))
-                .thenReturn(PROVISIONING_APP_NAME);
-        when(mResources.getString(R.string.config_mobile_hotspot_provision_app_no_ui))
-                .thenReturn(PROVISIONING_NO_UI_APP_NAME);
-        // Act like the CarrierConfigManager is present and ready unless told otherwise.
-        when(mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE))
-                .thenReturn(mCarrierConfigManager);
-        when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(mCarrierConfig);
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_REQUIRE_ENTITLEMENT_CHECKS_BOOL, true);
-        mCarrierConfig.putBoolean(CarrierConfigManager.KEY_CARRIER_CONFIG_APPLIED_BOOL, true);
-        sendConfigurationChanged();
-    }
-
-    private static UpstreamNetworkState buildV4WifiUpstreamState(final String ipv4Address,
-            final int prefixLength, final Network network) {
-        final LinkProperties prop = new LinkProperties();
-        prop.setInterfaceName(TEST_WIFI_IFNAME);
-
-        prop.addLinkAddress(
-                new LinkAddress(InetAddresses.parseNumericAddress(ipv4Address),
-                        prefixLength));
-
-        final NetworkCapabilities capabilities = new NetworkCapabilities()
-                .addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
-        return new UpstreamNetworkState(prop, capabilities, network);
-    }
-
-    @Test
-    public void testHandleIpConflict() throws Exception {
-        final Network wifiNetwork = new Network(200);
-        final Network[] allNetworks = { wifiNetwork };
-        when(mCm.getAllNetworks()).thenReturn(allNetworks);
-        UpstreamNetworkState upstreamNetwork = null;
-        runUsbTethering(upstreamNetwork);
-        final ArgumentCaptor<InterfaceConfigurationParcel> ifaceConfigCaptor =
-                ArgumentCaptor.forClass(InterfaceConfigurationParcel.class);
-        verify(mNetd).interfaceSetCfg(ifaceConfigCaptor.capture());
-        final String ipv4Address = ifaceConfigCaptor.getValue().ipv4Addr;
-        verify(mDhcpServer, timeout(DHCPSERVER_START_TIMEOUT_MS).times(1)).startWithCallbacks(
-                any(), any());
-        reset(mNetd, mUsbManager);
-        upstreamNetwork = buildV4WifiUpstreamState(ipv4Address, 30, wifiNetwork);
-        mTetheringDependencies.mUpstreamNetworkMonitorSM.sendMessage(
-                Tethering.TetherMainSM.EVENT_UPSTREAM_CALLBACK,
-                UpstreamNetworkMonitor.EVENT_ON_LINKPROPERTIES,
-                0,
-                upstreamNetwork);
-        mLooper.dispatchAll();
-        // verify turn off usb tethering
-        verify(mUsbManager).setCurrentFunctions(UsbManager.FUNCTION_NONE);
-        mTethering.interfaceRemoved(TEST_USB_IFNAME);
-        mLooper.dispatchAll();
-        // verify restart usb tethering
-        verify(mUsbManager).setCurrentFunctions(UsbManager.FUNCTION_RNDIS);
-    }
-
-    @Test
-    public void testNoAddressAvailable() throws Exception {
-        final Network wifiNetwork = new Network(200);
-        final Network[] allNetworks = { wifiNetwork };
-        when(mCm.getAllNetworks()).thenReturn(allNetworks);
-        final String upstreamAddress = "192.168.0.100";
-        runUsbTethering(null);
-        verify(mDhcpServer, timeout(DHCPSERVER_START_TIMEOUT_MS).times(1)).startWithCallbacks(
-                any(), any());
-        reset(mUsbManager);
-        final TetheredInterfaceRequest mockRequest = mock(TetheredInterfaceRequest.class);
-        when(mEm.requestTetheredInterface(any(), any())).thenReturn(mockRequest);
-        final ArgumentCaptor<TetheredInterfaceCallback> callbackCaptor =
-                ArgumentCaptor.forClass(TetheredInterfaceCallback.class);
-        mTethering.startTethering(createTetheringRequestParcel(TETHERING_ETHERNET), null);
-        mLooper.dispatchAll();
-        verify(mEm).requestTetheredInterface(any(), callbackCaptor.capture());
-        TetheredInterfaceCallback ethCallback = callbackCaptor.getValue();
-        ethCallback.onAvailable(TEST_ETH_IFNAME);
-        mLooper.dispatchAll();
-        reset(mUsbManager, mEm);
-
-        final UpstreamNetworkState upstreamNetwork = buildV4WifiUpstreamState(
-                upstreamAddress, 16, wifiNetwork);
-        mTetheringDependencies.mUpstreamNetworkMonitorSM.sendMessage(
-                Tethering.TetherMainSM.EVENT_UPSTREAM_CALLBACK,
-                UpstreamNetworkMonitor.EVENT_ON_LINKPROPERTIES,
-                0,
-                upstreamNetwork);
-        mLooper.dispatchAll();
-        // verify turn off usb tethering
-        verify(mUsbManager).setCurrentFunctions(UsbManager.FUNCTION_NONE);
-        // verify turn off ethernet tethering
-        verify(mockRequest).release();
-        mTethering.interfaceRemoved(TEST_USB_IFNAME);
-        ethCallback.onUnavailable();
-        mLooper.dispatchAll();
-        // verify restart usb tethering
-        verify(mUsbManager).setCurrentFunctions(UsbManager.FUNCTION_RNDIS);
-        // verify restart ethernet tethering
-        verify(mEm).requestTetheredInterface(any(), callbackCaptor.capture());
-        ethCallback = callbackCaptor.getValue();
-        ethCallback.onAvailable(TEST_ETH_IFNAME);
-
-        reset(mUsbManager, mEm);
-        when(mNetd.interfaceGetList())
-                .thenReturn(new String[] {
-                        TEST_MOBILE_IFNAME, TEST_WLAN_IFNAME, TEST_USB_IFNAME, TEST_P2P_IFNAME,
-                        TEST_NCM_IFNAME, TEST_ETH_IFNAME});
-
-        mTethering.interfaceStatusChanged(TEST_USB_IFNAME, true);
-        sendUsbBroadcast(true, true, true, TETHERING_USB);
-        mLooper.dispatchAll();
-        assertContains(Arrays.asList(mTethering.getTetherableIfaces()), TEST_USB_IFNAME);
-        assertContains(Arrays.asList(mTethering.getTetherableIfaces()), TEST_ETH_IFNAME);
-        assertEquals(TETHER_ERROR_IFACE_CFG_ERROR, mTethering.getLastTetherError(TEST_USB_IFNAME));
-        assertEquals(TETHER_ERROR_IFACE_CFG_ERROR, mTethering.getLastTetherError(TEST_ETH_IFNAME));
-    }
-
-    @Test
-    public void testProvisioningNeededButUnavailable() throws Exception {
-        assertTrue(mTethering.isTetheringSupported());
-        verify(mPackageManager, never()).getPackageInfo(PROVISIONING_APP_NAME[0], GET_ACTIVITIES);
-
-        setupForRequiredProvisioning();
-        assertTrue(mTethering.isTetheringSupported());
-        verify(mPackageManager).getPackageInfo(PROVISIONING_APP_NAME[0], GET_ACTIVITIES);
-        reset(mPackageManager);
-
-        doThrow(PackageManager.NameNotFoundException.class).when(mPackageManager).getPackageInfo(
-                PROVISIONING_APP_NAME[0], GET_ACTIVITIES);
-        setupForRequiredProvisioning();
-        assertFalse(mTethering.isTetheringSupported());
-        verify(mPackageManager).getPackageInfo(PROVISIONING_APP_NAME[0], GET_ACTIVITIES);
-    }
-
-    // TODO: Test that a request for hotspot mode doesn't interfere with an
-    // already operating tethering mode interface.
-}
diff --git a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/UpstreamNetworkMonitorTest.java b/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/UpstreamNetworkMonitorTest.java
deleted file mode 100644
index 232588c7..0000000
--- a/packages/Tethering/tests/unit/src/com/android/networkstack/tethering/UpstreamNetworkMonitorTest.java
+++ /dev/null
@@ -1,800 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.networkstack.tethering;
-
-import static android.net.ConnectivityManager.TYPE_MOBILE_DUN;
-import static android.net.ConnectivityManager.TYPE_MOBILE_HIPRI;
-import static android.net.ConnectivityManager.TYPE_WIFI;
-import static android.net.NetworkCapabilities.NET_CAPABILITY_DUN;
-import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET;
-import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
-import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
-
-import static com.android.networkstack.tethering.UpstreamNetworkMonitor.TYPE_NONE;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Mockito.any;
-import static org.mockito.Mockito.anyInt;
-import static org.mockito.Mockito.anyString;
-import static org.mockito.Mockito.eq;
-import static org.mockito.Mockito.reset;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.net.ConnectivityManager;
-import android.net.ConnectivityManager.NetworkCallback;
-import android.net.IConnectivityManager;
-import android.net.IpPrefix;
-import android.net.LinkAddress;
-import android.net.LinkProperties;
-import android.net.Network;
-import android.net.NetworkCapabilities;
-import android.net.NetworkRequest;
-import android.net.util.SharedLog;
-import android.os.Handler;
-import android.os.Message;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.internal.util.State;
-import com.android.internal.util.StateMachine;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class UpstreamNetworkMonitorTest {
-    private static final int EVENT_UNM_UPDATE = 1;
-
-    private static final boolean INCLUDES = true;
-    private static final boolean EXCLUDES = false;
-
-    // Actual contents of the request don't matter for this test. The lack of
-    // any specific TRANSPORT_* is sufficient to identify this request.
-    private static final NetworkRequest sDefaultRequest = new NetworkRequest.Builder().build();
-
-    @Mock private Context mContext;
-    @Mock private EntitlementManager mEntitleMgr;
-    @Mock private IConnectivityManager mCS;
-    @Mock private SharedLog mLog;
-
-    private TestStateMachine mSM;
-    private TestConnectivityManager mCM;
-    private UpstreamNetworkMonitor mUNM;
-
-    @Before public void setUp() throws Exception {
-        MockitoAnnotations.initMocks(this);
-        reset(mContext);
-        reset(mCS);
-        reset(mLog);
-        when(mLog.forSubComponent(anyString())).thenReturn(mLog);
-        when(mEntitleMgr.isCellularUpstreamPermitted()).thenReturn(true);
-
-        mCM = spy(new TestConnectivityManager(mContext, mCS));
-        mSM = new TestStateMachine();
-        mUNM = new UpstreamNetworkMonitor(
-                (ConnectivityManager) mCM, mSM, mLog, EVENT_UNM_UPDATE);
-    }
-
-    @After public void tearDown() throws Exception {
-        if (mSM != null) {
-            mSM.quit();
-            mSM = null;
-        }
-    }
-
-    @Test
-    public void testStopWithoutStartIsNonFatal() {
-        mUNM.stop();
-        mUNM.stop();
-        mUNM.stop();
-    }
-
-    @Test
-    public void testDoesNothingBeforeTrackDefaultAndStarted() throws Exception {
-        assertTrue(mCM.hasNoCallbacks());
-        assertFalse(mUNM.mobileNetworkRequested());
-
-        mUNM.updateMobileRequiresDun(true);
-        assertTrue(mCM.hasNoCallbacks());
-        mUNM.updateMobileRequiresDun(false);
-        assertTrue(mCM.hasNoCallbacks());
-    }
-
-    @Test
-    public void testDefaultNetworkIsTracked() throws Exception {
-        assertTrue(mCM.hasNoCallbacks());
-        mUNM.startTrackDefaultNetwork(sDefaultRequest, mEntitleMgr);
-
-        mUNM.startObserveAllNetworks();
-        assertEquals(1, mCM.trackingDefault.size());
-
-        mUNM.stop();
-        assertTrue(mCM.onlyHasDefaultCallbacks());
-    }
-
-    @Test
-    public void testListensForAllNetworks() throws Exception {
-        assertTrue(mCM.listening.isEmpty());
-
-        mUNM.startTrackDefaultNetwork(sDefaultRequest, mEntitleMgr);
-        mUNM.startObserveAllNetworks();
-        assertFalse(mCM.listening.isEmpty());
-        assertTrue(mCM.isListeningForAll());
-
-        mUNM.stop();
-        assertTrue(mCM.onlyHasDefaultCallbacks());
-    }
-
-    @Test
-    public void testCallbacksRegistered() {
-        mUNM.startTrackDefaultNetwork(sDefaultRequest, mEntitleMgr);
-        verify(mCM, times(1)).requestNetwork(
-                eq(sDefaultRequest), any(NetworkCallback.class), any(Handler.class));
-        mUNM.startObserveAllNetworks();
-        verify(mCM, times(1)).registerNetworkCallback(
-                any(NetworkRequest.class), any(NetworkCallback.class), any(Handler.class));
-
-        mUNM.stop();
-        verify(mCM, times(1)).unregisterNetworkCallback(any(NetworkCallback.class));
-    }
-
-    @Test
-    public void testRequestsMobileNetwork() throws Exception {
-        assertFalse(mUNM.mobileNetworkRequested());
-        assertEquals(0, mCM.requested.size());
-
-        mUNM.startObserveAllNetworks();
-        assertFalse(mUNM.mobileNetworkRequested());
-        assertEquals(0, mCM.requested.size());
-
-        mUNM.updateMobileRequiresDun(false);
-        assertFalse(mUNM.mobileNetworkRequested());
-        assertEquals(0, mCM.requested.size());
-
-        mUNM.registerMobileNetworkRequest();
-        assertTrue(mUNM.mobileNetworkRequested());
-        assertUpstreamTypeRequested(TYPE_MOBILE_HIPRI);
-        assertFalse(isDunRequested());
-
-        mUNM.stop();
-        assertFalse(mUNM.mobileNetworkRequested());
-        assertTrue(mCM.hasNoCallbacks());
-    }
-
-    @Test
-    public void testDuplicateMobileRequestsIgnored() throws Exception {
-        assertFalse(mUNM.mobileNetworkRequested());
-        assertEquals(0, mCM.requested.size());
-
-        mUNM.startObserveAllNetworks();
-        verify(mCM, times(1)).registerNetworkCallback(
-                any(NetworkRequest.class), any(NetworkCallback.class), any(Handler.class));
-        assertFalse(mUNM.mobileNetworkRequested());
-        assertEquals(0, mCM.requested.size());
-
-        mUNM.updateMobileRequiresDun(true);
-        mUNM.registerMobileNetworkRequest();
-        verify(mCM, times(1)).requestNetwork(
-                any(NetworkRequest.class), anyInt(), anyInt(), any(Handler.class),
-                any(NetworkCallback.class));
-
-        assertTrue(mUNM.mobileNetworkRequested());
-        assertUpstreamTypeRequested(TYPE_MOBILE_DUN);
-        assertTrue(isDunRequested());
-
-        // Try a few things that must not result in any state change.
-        mUNM.registerMobileNetworkRequest();
-        mUNM.updateMobileRequiresDun(true);
-        mUNM.registerMobileNetworkRequest();
-
-        assertTrue(mUNM.mobileNetworkRequested());
-        assertUpstreamTypeRequested(TYPE_MOBILE_DUN);
-        assertTrue(isDunRequested());
-
-        mUNM.stop();
-        verify(mCM, times(2)).unregisterNetworkCallback(any(NetworkCallback.class));
-
-        verifyNoMoreInteractions(mCM);
-    }
-
-    @Test
-    public void testRequestsDunNetwork() throws Exception {
-        assertFalse(mUNM.mobileNetworkRequested());
-        assertEquals(0, mCM.requested.size());
-
-        mUNM.startObserveAllNetworks();
-        assertFalse(mUNM.mobileNetworkRequested());
-        assertEquals(0, mCM.requested.size());
-
-        mUNM.updateMobileRequiresDun(true);
-        assertFalse(mUNM.mobileNetworkRequested());
-        assertEquals(0, mCM.requested.size());
-
-        mUNM.registerMobileNetworkRequest();
-        assertTrue(mUNM.mobileNetworkRequested());
-        assertUpstreamTypeRequested(TYPE_MOBILE_DUN);
-        assertTrue(isDunRequested());
-
-        mUNM.stop();
-        assertFalse(mUNM.mobileNetworkRequested());
-        assertTrue(mCM.hasNoCallbacks());
-    }
-
-    @Test
-    public void testUpdateMobileRequiresDun() throws Exception {
-        mUNM.startObserveAllNetworks();
-
-        // Test going from no-DUN to DUN correctly re-registers callbacks.
-        mUNM.updateMobileRequiresDun(false);
-        mUNM.registerMobileNetworkRequest();
-        assertTrue(mUNM.mobileNetworkRequested());
-        assertUpstreamTypeRequested(TYPE_MOBILE_HIPRI);
-        assertFalse(isDunRequested());
-        mUNM.updateMobileRequiresDun(true);
-        assertTrue(mUNM.mobileNetworkRequested());
-        assertUpstreamTypeRequested(TYPE_MOBILE_DUN);
-        assertTrue(isDunRequested());
-
-        // Test going from DUN to no-DUN correctly re-registers callbacks.
-        mUNM.updateMobileRequiresDun(false);
-        assertTrue(mUNM.mobileNetworkRequested());
-        assertUpstreamTypeRequested(TYPE_MOBILE_HIPRI);
-        assertFalse(isDunRequested());
-
-        mUNM.stop();
-        assertFalse(mUNM.mobileNetworkRequested());
-    }
-
-    @Test
-    public void testSelectPreferredUpstreamType() throws Exception {
-        final Collection<Integer> preferredTypes = new ArrayList<>();
-        preferredTypes.add(TYPE_WIFI);
-
-        mUNM.startTrackDefaultNetwork(sDefaultRequest, mEntitleMgr);
-        mUNM.startObserveAllNetworks();
-        // There are no networks, so there is nothing to select.
-        assertSatisfiesLegacyType(TYPE_NONE, mUNM.selectPreferredUpstreamType(preferredTypes));
-
-        final TestNetworkAgent wifiAgent = new TestNetworkAgent(mCM, TRANSPORT_WIFI);
-        wifiAgent.fakeConnect();
-        // WiFi is up, we should prefer it.
-        assertSatisfiesLegacyType(TYPE_WIFI, mUNM.selectPreferredUpstreamType(preferredTypes));
-        wifiAgent.fakeDisconnect();
-        // There are no networks, so there is nothing to select.
-        assertSatisfiesLegacyType(TYPE_NONE, mUNM.selectPreferredUpstreamType(preferredTypes));
-
-        final TestNetworkAgent cellAgent = new TestNetworkAgent(mCM, TRANSPORT_CELLULAR);
-        cellAgent.fakeConnect();
-        assertSatisfiesLegacyType(TYPE_NONE, mUNM.selectPreferredUpstreamType(preferredTypes));
-
-        preferredTypes.add(TYPE_MOBILE_DUN);
-        // This is coupled with preferred types in TetheringConfiguration.
-        mUNM.updateMobileRequiresDun(true);
-        // DUN is available, but only use regular cell: no upstream selected.
-        assertSatisfiesLegacyType(TYPE_NONE, mUNM.selectPreferredUpstreamType(preferredTypes));
-        preferredTypes.remove(TYPE_MOBILE_DUN);
-        // No WiFi, but our preferred flavour of cell is up.
-        preferredTypes.add(TYPE_MOBILE_HIPRI);
-        // This is coupled with preferred types in TetheringConfiguration.
-        mUNM.updateMobileRequiresDun(false);
-        assertSatisfiesLegacyType(TYPE_MOBILE_HIPRI,
-                mUNM.selectPreferredUpstreamType(preferredTypes));
-        // Check to see we filed an explicit request.
-        assertEquals(1, mCM.requested.size());
-        NetworkRequest netReq = (NetworkRequest) mCM.requested.values().toArray()[0];
-        assertTrue(netReq.networkCapabilities.hasTransport(TRANSPORT_CELLULAR));
-        assertFalse(netReq.networkCapabilities.hasCapability(NET_CAPABILITY_DUN));
-        // mobile is not permitted, we should not use HIPRI.
-        when(mEntitleMgr.isCellularUpstreamPermitted()).thenReturn(false);
-        assertSatisfiesLegacyType(TYPE_NONE, mUNM.selectPreferredUpstreamType(preferredTypes));
-        assertEquals(0, mCM.requested.size());
-        // mobile change back to permitted, HIRPI should come back
-        when(mEntitleMgr.isCellularUpstreamPermitted()).thenReturn(true);
-        assertSatisfiesLegacyType(TYPE_MOBILE_HIPRI,
-                mUNM.selectPreferredUpstreamType(preferredTypes));
-
-        wifiAgent.fakeConnect();
-        // WiFi is up, and we should prefer it over cell.
-        assertSatisfiesLegacyType(TYPE_WIFI, mUNM.selectPreferredUpstreamType(preferredTypes));
-        assertEquals(0, mCM.requested.size());
-
-        preferredTypes.remove(TYPE_MOBILE_HIPRI);
-        preferredTypes.add(TYPE_MOBILE_DUN);
-        // This is coupled with preferred types in TetheringConfiguration.
-        mUNM.updateMobileRequiresDun(true);
-        assertSatisfiesLegacyType(TYPE_WIFI, mUNM.selectPreferredUpstreamType(preferredTypes));
-
-        final TestNetworkAgent dunAgent = new TestNetworkAgent(mCM, TRANSPORT_CELLULAR);
-        dunAgent.networkCapabilities.addCapability(NET_CAPABILITY_DUN);
-        dunAgent.fakeConnect();
-
-        // WiFi is still preferred.
-        assertSatisfiesLegacyType(TYPE_WIFI, mUNM.selectPreferredUpstreamType(preferredTypes));
-
-        // WiFi goes down, cell and DUN are still up but only DUN is preferred.
-        wifiAgent.fakeDisconnect();
-        assertSatisfiesLegacyType(TYPE_MOBILE_DUN,
-                mUNM.selectPreferredUpstreamType(preferredTypes));
-        // Check to see we filed an explicit request.
-        assertEquals(1, mCM.requested.size());
-        netReq = (NetworkRequest) mCM.requested.values().toArray()[0];
-        assertTrue(netReq.networkCapabilities.hasTransport(TRANSPORT_CELLULAR));
-        assertTrue(netReq.networkCapabilities.hasCapability(NET_CAPABILITY_DUN));
-        // mobile is not permitted, we should not use DUN.
-        when(mEntitleMgr.isCellularUpstreamPermitted()).thenReturn(false);
-        assertSatisfiesLegacyType(TYPE_NONE, mUNM.selectPreferredUpstreamType(preferredTypes));
-        assertEquals(0, mCM.requested.size());
-        // mobile change back to permitted, DUN should come back
-        when(mEntitleMgr.isCellularUpstreamPermitted()).thenReturn(true);
-        assertSatisfiesLegacyType(TYPE_MOBILE_DUN,
-                mUNM.selectPreferredUpstreamType(preferredTypes));
-    }
-
-    @Test
-    public void testGetCurrentPreferredUpstream() throws Exception {
-        mUNM.startTrackDefaultNetwork(sDefaultRequest, mEntitleMgr);
-        mUNM.startObserveAllNetworks();
-        mUNM.updateMobileRequiresDun(false);
-
-        // [0] Mobile connects, DUN not required -> mobile selected.
-        final TestNetworkAgent cellAgent = new TestNetworkAgent(mCM, TRANSPORT_CELLULAR);
-        cellAgent.fakeConnect();
-        mCM.makeDefaultNetwork(cellAgent);
-        assertEquals(cellAgent.networkId, mUNM.getCurrentPreferredUpstream().network);
-
-        // [1] Mobile connects but not permitted -> null selected
-        when(mEntitleMgr.isCellularUpstreamPermitted()).thenReturn(false);
-        assertEquals(null, mUNM.getCurrentPreferredUpstream());
-        when(mEntitleMgr.isCellularUpstreamPermitted()).thenReturn(true);
-
-        // [2] WiFi connects but not validated/promoted to default -> mobile selected.
-        final TestNetworkAgent wifiAgent = new TestNetworkAgent(mCM, TRANSPORT_WIFI);
-        wifiAgent.fakeConnect();
-        assertEquals(cellAgent.networkId, mUNM.getCurrentPreferredUpstream().network);
-
-        // [3] WiFi validates and is promoted to the default network -> WiFi selected.
-        mCM.makeDefaultNetwork(wifiAgent);
-        assertEquals(wifiAgent.networkId, mUNM.getCurrentPreferredUpstream().network);
-
-        // [4] DUN required, no other changes -> WiFi still selected
-        mUNM.updateMobileRequiresDun(true);
-        assertEquals(wifiAgent.networkId, mUNM.getCurrentPreferredUpstream().network);
-
-        // [5] WiFi no longer validated, mobile becomes default, DUN required -> null selected.
-        mCM.makeDefaultNetwork(cellAgent);
-        assertEquals(null, mUNM.getCurrentPreferredUpstream());
-        // TODO: make sure that a DUN request has been filed. This is currently
-        // triggered by code over in Tethering, but once that has been moved
-        // into UNM we should test for this here.
-
-        // [6] DUN network arrives -> DUN selected
-        final TestNetworkAgent dunAgent = new TestNetworkAgent(mCM, TRANSPORT_CELLULAR);
-        dunAgent.networkCapabilities.addCapability(NET_CAPABILITY_DUN);
-        dunAgent.networkCapabilities.removeCapability(NET_CAPABILITY_INTERNET);
-        dunAgent.fakeConnect();
-        assertEquals(dunAgent.networkId, mUNM.getCurrentPreferredUpstream().network);
-
-        // [7] Mobile is not permitted -> null selected
-        when(mEntitleMgr.isCellularUpstreamPermitted()).thenReturn(false);
-        assertEquals(null, mUNM.getCurrentPreferredUpstream());
-    }
-
-    @Test
-    public void testLocalPrefixes() throws Exception {
-        mUNM.startTrackDefaultNetwork(sDefaultRequest, mEntitleMgr);
-        mUNM.startObserveAllNetworks();
-
-        // [0] Test minimum set of local prefixes.
-        Set<IpPrefix> local = mUNM.getLocalPrefixes();
-        assertTrue(local.isEmpty());
-
-        final Set<String> alreadySeen = new HashSet<>();
-
-        // [1] Pretend Wi-Fi connects.
-        final TestNetworkAgent wifiAgent = new TestNetworkAgent(mCM, TRANSPORT_WIFI);
-        final LinkProperties wifiLp = wifiAgent.linkProperties;
-        wifiLp.setInterfaceName("wlan0");
-        final String[] wifi_addrs = {
-                "fe80::827a:bfff:fe6f:374d", "100.112.103.18",
-                "2001:db8:4:fd00:827a:bfff:fe6f:374d",
-                "2001:db8:4:fd00:6dea:325a:fdae:4ef4",
-                "fd6a:a640:60bf:e985::123",  // ULA address for good measure.
-        };
-        for (String addrStr : wifi_addrs) {
-            final String cidr = addrStr.contains(":") ? "/64" : "/20";
-            wifiLp.addLinkAddress(new LinkAddress(addrStr + cidr));
-        }
-        wifiAgent.fakeConnect();
-        wifiAgent.sendLinkProperties();
-
-        local = mUNM.getLocalPrefixes();
-        assertPrefixSet(local, INCLUDES, alreadySeen);
-        final String[] wifiLinkPrefixes = {
-                // Link-local prefixes are excluded and dealt with elsewhere.
-                "100.112.96.0/20", "2001:db8:4:fd00::/64", "fd6a:a640:60bf:e985::/64",
-        };
-        assertPrefixSet(local, INCLUDES, wifiLinkPrefixes);
-        Collections.addAll(alreadySeen, wifiLinkPrefixes);
-        assertEquals(alreadySeen.size(), local.size());
-
-        // [2] Pretend mobile connects.
-        final TestNetworkAgent cellAgent = new TestNetworkAgent(mCM, TRANSPORT_CELLULAR);
-        final LinkProperties cellLp = cellAgent.linkProperties;
-        cellLp.setInterfaceName("rmnet_data0");
-        final String[] cell_addrs = {
-                "10.102.211.48", "2001:db8:0:1:b50e:70d9:10c9:433d",
-        };
-        for (String addrStr : cell_addrs) {
-            final String cidr = addrStr.contains(":") ? "/64" : "/27";
-            cellLp.addLinkAddress(new LinkAddress(addrStr + cidr));
-        }
-        cellAgent.fakeConnect();
-        cellAgent.sendLinkProperties();
-
-        local = mUNM.getLocalPrefixes();
-        assertPrefixSet(local, INCLUDES, alreadySeen);
-        final String[] cellLinkPrefixes = { "10.102.211.32/27", "2001:db8:0:1::/64" };
-        assertPrefixSet(local, INCLUDES, cellLinkPrefixes);
-        Collections.addAll(alreadySeen, cellLinkPrefixes);
-        assertEquals(alreadySeen.size(), local.size());
-
-        // [3] Pretend DUN connects.
-        final TestNetworkAgent dunAgent = new TestNetworkAgent(mCM, TRANSPORT_CELLULAR);
-        dunAgent.networkCapabilities.addCapability(NET_CAPABILITY_DUN);
-        dunAgent.networkCapabilities.removeCapability(NET_CAPABILITY_INTERNET);
-        final LinkProperties dunLp = dunAgent.linkProperties;
-        dunLp.setInterfaceName("rmnet_data1");
-        final String[] dun_addrs = {
-                "192.0.2.48", "2001:db8:1:2:b50e:70d9:10c9:433d",
-        };
-        for (String addrStr : dun_addrs) {
-            final String cidr = addrStr.contains(":") ? "/64" : "/27";
-            dunLp.addLinkAddress(new LinkAddress(addrStr + cidr));
-        }
-        dunAgent.fakeConnect();
-        dunAgent.sendLinkProperties();
-
-        local = mUNM.getLocalPrefixes();
-        assertPrefixSet(local, INCLUDES, alreadySeen);
-        final String[] dunLinkPrefixes = { "192.0.2.32/27", "2001:db8:1:2::/64" };
-        assertPrefixSet(local, INCLUDES, dunLinkPrefixes);
-        Collections.addAll(alreadySeen, dunLinkPrefixes);
-        assertEquals(alreadySeen.size(), local.size());
-
-        // [4] Pretend Wi-Fi disconnected.  It's addresses/prefixes should no
-        // longer be included (should be properly removed).
-        wifiAgent.fakeDisconnect();
-        local = mUNM.getLocalPrefixes();
-        assertPrefixSet(local, EXCLUDES, wifiLinkPrefixes);
-        assertPrefixSet(local, INCLUDES, cellLinkPrefixes);
-        assertPrefixSet(local, INCLUDES, dunLinkPrefixes);
-
-        // [5] Pretend mobile disconnected.
-        cellAgent.fakeDisconnect();
-        local = mUNM.getLocalPrefixes();
-        assertPrefixSet(local, EXCLUDES, wifiLinkPrefixes);
-        assertPrefixSet(local, EXCLUDES, cellLinkPrefixes);
-        assertPrefixSet(local, INCLUDES, dunLinkPrefixes);
-
-        // [6] Pretend DUN disconnected.
-        dunAgent.fakeDisconnect();
-        local = mUNM.getLocalPrefixes();
-        assertTrue(local.isEmpty());
-    }
-
-    @Test
-    public void testSelectMobileWhenMobileIsNotDefault() {
-        final Collection<Integer> preferredTypes = new ArrayList<>();
-        // Mobile has higher pirority than wifi.
-        preferredTypes.add(TYPE_MOBILE_HIPRI);
-        preferredTypes.add(TYPE_WIFI);
-        mUNM.startTrackDefaultNetwork(sDefaultRequest, mEntitleMgr);
-        mUNM.startObserveAllNetworks();
-        // Setup wifi and make wifi as default network.
-        final TestNetworkAgent wifiAgent = new TestNetworkAgent(mCM, TRANSPORT_WIFI);
-        wifiAgent.fakeConnect();
-        mCM.makeDefaultNetwork(wifiAgent);
-        // Setup mobile network.
-        final TestNetworkAgent cellAgent = new TestNetworkAgent(mCM, TRANSPORT_CELLULAR);
-        cellAgent.fakeConnect();
-
-        assertSatisfiesLegacyType(TYPE_MOBILE_HIPRI,
-                mUNM.selectPreferredUpstreamType(preferredTypes));
-        verify(mEntitleMgr, times(1)).maybeRunProvisioning();
-    }
-
-    private void assertSatisfiesLegacyType(int legacyType, UpstreamNetworkState ns) {
-        if (legacyType == TYPE_NONE) {
-            assertTrue(ns == null);
-            return;
-        }
-
-        final NetworkCapabilities nc =
-                UpstreamNetworkMonitor.networkCapabilitiesForType(legacyType);
-        assertTrue(nc.satisfiedByNetworkCapabilities(ns.networkCapabilities));
-    }
-
-    private void assertUpstreamTypeRequested(int upstreamType) throws Exception {
-        assertEquals(1, mCM.requested.size());
-        assertEquals(1, mCM.legacyTypeMap.size());
-        assertEquals(Integer.valueOf(upstreamType),
-                mCM.legacyTypeMap.values().iterator().next());
-    }
-
-    private boolean isDunRequested() {
-        for (NetworkRequest req : mCM.requested.values()) {
-            if (req.networkCapabilities.hasCapability(NET_CAPABILITY_DUN)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    public static class TestConnectivityManager extends ConnectivityManager {
-        public Map<NetworkCallback, Handler> allCallbacks = new HashMap<>();
-        public Set<NetworkCallback> trackingDefault = new HashSet<>();
-        public TestNetworkAgent defaultNetwork = null;
-        public Map<NetworkCallback, NetworkRequest> listening = new HashMap<>();
-        public Map<NetworkCallback, NetworkRequest> requested = new HashMap<>();
-        public Map<NetworkCallback, Integer> legacyTypeMap = new HashMap<>();
-
-        private int mNetworkId = 100;
-
-        public TestConnectivityManager(Context ctx, IConnectivityManager svc) {
-            super(ctx, svc);
-        }
-
-        boolean hasNoCallbacks() {
-            return allCallbacks.isEmpty()
-                    && trackingDefault.isEmpty()
-                    && listening.isEmpty()
-                    && requested.isEmpty()
-                    && legacyTypeMap.isEmpty();
-        }
-
-        boolean onlyHasDefaultCallbacks() {
-            return (allCallbacks.size() == 1)
-                    && (trackingDefault.size() == 1)
-                    && listening.isEmpty()
-                    && requested.isEmpty()
-                    && legacyTypeMap.isEmpty();
-        }
-
-        boolean isListeningForAll() {
-            final NetworkCapabilities empty = new NetworkCapabilities();
-            empty.clearAll();
-
-            for (NetworkRequest req : listening.values()) {
-                if (req.networkCapabilities.equalRequestableCapabilities(empty)) {
-                    return true;
-                }
-            }
-            return false;
-        }
-
-        int getNetworkId() {
-            return ++mNetworkId;
-        }
-
-        void makeDefaultNetwork(TestNetworkAgent agent) {
-            if (Objects.equals(defaultNetwork, agent)) return;
-
-            final TestNetworkAgent formerDefault = defaultNetwork;
-            defaultNetwork = agent;
-
-            for (NetworkCallback cb : trackingDefault) {
-                if (defaultNetwork != null) {
-                    cb.onAvailable(defaultNetwork.networkId);
-                    cb.onCapabilitiesChanged(
-                            defaultNetwork.networkId, defaultNetwork.networkCapabilities);
-                    cb.onLinkPropertiesChanged(
-                            defaultNetwork.networkId, defaultNetwork.linkProperties);
-                }
-            }
-        }
-
-        @Override
-        public void requestNetwork(NetworkRequest req, NetworkCallback cb, Handler h) {
-            assertFalse(allCallbacks.containsKey(cb));
-            allCallbacks.put(cb, h);
-            if (sDefaultRequest.equals(req)) {
-                assertFalse(trackingDefault.contains(cb));
-                trackingDefault.add(cb);
-            } else {
-                assertFalse(requested.containsKey(cb));
-                requested.put(cb, req);
-            }
-        }
-
-        @Override
-        public void requestNetwork(NetworkRequest req, NetworkCallback cb) {
-            fail("Should never be called.");
-        }
-
-        @Override
-        public void requestNetwork(NetworkRequest req,
-                int timeoutMs, int legacyType, Handler h, NetworkCallback cb) {
-            assertFalse(allCallbacks.containsKey(cb));
-            allCallbacks.put(cb, h);
-            assertFalse(requested.containsKey(cb));
-            requested.put(cb, req);
-            assertFalse(legacyTypeMap.containsKey(cb));
-            if (legacyType != ConnectivityManager.TYPE_NONE) {
-                legacyTypeMap.put(cb, legacyType);
-            }
-        }
-
-        @Override
-        public void registerNetworkCallback(NetworkRequest req, NetworkCallback cb, Handler h) {
-            assertFalse(allCallbacks.containsKey(cb));
-            allCallbacks.put(cb, h);
-            assertFalse(listening.containsKey(cb));
-            listening.put(cb, req);
-        }
-
-        @Override
-        public void registerNetworkCallback(NetworkRequest req, NetworkCallback cb) {
-            fail("Should never be called.");
-        }
-
-        @Override
-        public void registerDefaultNetworkCallback(NetworkCallback cb, Handler h) {
-            fail("Should never be called.");
-        }
-
-        @Override
-        public void registerDefaultNetworkCallback(NetworkCallback cb) {
-            fail("Should never be called.");
-        }
-
-        @Override
-        public void unregisterNetworkCallback(NetworkCallback cb) {
-            if (trackingDefault.contains(cb)) {
-                trackingDefault.remove(cb);
-            } else if (listening.containsKey(cb)) {
-                listening.remove(cb);
-            } else if (requested.containsKey(cb)) {
-                requested.remove(cb);
-                legacyTypeMap.remove(cb);
-            } else {
-                fail("Unexpected callback removed");
-            }
-            allCallbacks.remove(cb);
-
-            assertFalse(allCallbacks.containsKey(cb));
-            assertFalse(trackingDefault.contains(cb));
-            assertFalse(listening.containsKey(cb));
-            assertFalse(requested.containsKey(cb));
-        }
-    }
-
-    public static class TestNetworkAgent {
-        public final TestConnectivityManager cm;
-        public final Network networkId;
-        public final int transportType;
-        public final NetworkCapabilities networkCapabilities;
-        public final LinkProperties linkProperties;
-
-        public TestNetworkAgent(TestConnectivityManager cm, int transportType) {
-            this.cm = cm;
-            this.networkId = new Network(cm.getNetworkId());
-            this.transportType = transportType;
-            networkCapabilities = new NetworkCapabilities();
-            networkCapabilities.addTransportType(transportType);
-            networkCapabilities.addCapability(NET_CAPABILITY_INTERNET);
-            linkProperties = new LinkProperties();
-        }
-
-        public void fakeConnect() {
-            for (NetworkCallback cb : cm.listening.keySet()) {
-                cb.onAvailable(networkId);
-                cb.onCapabilitiesChanged(networkId, copy(networkCapabilities));
-                cb.onLinkPropertiesChanged(networkId, copy(linkProperties));
-            }
-        }
-
-        public void fakeDisconnect() {
-            for (NetworkCallback cb : cm.listening.keySet()) {
-                cb.onLost(networkId);
-            }
-        }
-
-        public void sendLinkProperties() {
-            for (NetworkCallback cb : cm.listening.keySet()) {
-                cb.onLinkPropertiesChanged(networkId, copy(linkProperties));
-            }
-        }
-
-        @Override
-        public String toString() {
-            return String.format("TestNetworkAgent: %s %s", networkId, networkCapabilities);
-        }
-    }
-
-    public static class TestStateMachine extends StateMachine {
-        public final ArrayList<Message> messages = new ArrayList<>();
-        private final State mLoggingState = new LoggingState();
-
-        class LoggingState extends State {
-            @Override public void enter() {
-                messages.clear();
-            }
-
-            @Override public void exit() {
-                messages.clear();
-            }
-
-            @Override public boolean processMessage(Message msg) {
-                messages.add(msg);
-                return true;
-            }
-        }
-
-        public TestStateMachine() {
-            super("UpstreamNetworkMonitor.TestStateMachine");
-            addState(mLoggingState);
-            setInitialState(mLoggingState);
-            super.start();
-        }
-    }
-
-    static NetworkCapabilities copy(NetworkCapabilities nc) {
-        return new NetworkCapabilities(nc);
-    }
-
-    static LinkProperties copy(LinkProperties lp) {
-        return new LinkProperties(lp);
-    }
-
-    static void assertPrefixSet(Set<IpPrefix> prefixes, boolean expectation, String... expected) {
-        final Set<String> expectedSet = new HashSet<>();
-        Collections.addAll(expectedSet, expected);
-        assertPrefixSet(prefixes, expectation, expectedSet);
-    }
-
-    static void assertPrefixSet(Set<IpPrefix> prefixes, boolean expectation, Set<String> expected) {
-        for (String expectedPrefix : expected) {
-            final String errStr = expectation ? "did not find" : "found";
-            assertEquals(
-                    String.format("Failed expectation: %s prefix: %s", errStr, expectedPrefix),
-                    expectation, prefixes.contains(new IpPrefix(expectedPrefix)));
-        }
-    }
-}
diff --git a/packages/VpnDialogs/AndroidManifest.xml b/packages/VpnDialogs/AndroidManifest.xml
index 693ca52..569617a 100644
--- a/packages/VpnDialogs/AndroidManifest.xml
+++ b/packages/VpnDialogs/AndroidManifest.xml
@@ -23,6 +23,9 @@
     <uses-permission android:name="android.permission.CONTROL_ALWAYS_ON_VPN" />
     <uses-permission android:name="android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS"/>
 
+    <!-- Query all packages on device on R+ -->
+    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
+
     <application android:label="VpnDialogs"
                  android:allowBackup="false">
 
diff --git a/packages/overlays/AccentColorAmethystOverlay/Android.mk b/packages/overlays/AccentColorAmethystOverlay/Android.mk
new file mode 100644
index 0000000..cd10ca3
--- /dev/null
+++ b/packages/overlays/AccentColorAmethystOverlay/Android.mk
@@ -0,0 +1,29 @@
+#
+#  Copyright (C) 2020, The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_RRO_THEME := AccentColorAmethyst
+
+LOCAL_PRODUCT_MODULE := true
+
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
+
+LOCAL_PACKAGE_NAME := AccentColorAmethystOverlay
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_RRO_PACKAGE)
diff --git a/packages/overlays/AccentColorAmethystOverlay/AndroidManifest.xml b/packages/overlays/AccentColorAmethystOverlay/AndroidManifest.xml
new file mode 100644
index 0000000..e5a8826
--- /dev/null
+++ b/packages/overlays/AccentColorAmethystOverlay/AndroidManifest.xml
@@ -0,0 +1,26 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.theme.color.amethyst"
+    android:versionCode="1"
+    android:versionName="1.0">
+    <overlay android:targetPackage="android" android:category="android.theme.customization.accent_color" android:priority="1"/>
+
+    <application android:label="@string/accent_color_overlay" android:hasCode="false"/>
+</manifest>
+
diff --git a/packages/overlays/AccentColorAmethystOverlay/res/values/colors_device_defaults.xml b/packages/overlays/AccentColorAmethystOverlay/res/values/colors_device_defaults.xml
new file mode 100644
index 0000000..e17aebc
--- /dev/null
+++ b/packages/overlays/AccentColorAmethystOverlay/res/values/colors_device_defaults.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<resources>
+    <color name="accent_device_default_light">#A03EFF</color>
+    <color name="accent_device_default_dark">#BD78FF</color>
+</resources>
+
diff --git a/packages/overlays/AccentColorAmethystOverlay/res/values/strings.xml b/packages/overlays/AccentColorAmethystOverlay/res/values/strings.xml
new file mode 100644
index 0000000..ecfa2a8
--- /dev/null
+++ b/packages/overlays/AccentColorAmethystOverlay/res/values/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Black accent color name application label. [CHAR LIMIT=50] -->
+    <string name="accent_color_overlay" translatable="false">Amethyst</string>
+</resources>
+
+
diff --git a/packages/overlays/AccentColorAquamarineOverlay/Android.mk b/packages/overlays/AccentColorAquamarineOverlay/Android.mk
new file mode 100644
index 0000000..09ae450
--- /dev/null
+++ b/packages/overlays/AccentColorAquamarineOverlay/Android.mk
@@ -0,0 +1,29 @@
+#
+#  Copyright (C) 2020, The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_RRO_THEME := AccentColorAquamarine
+
+LOCAL_PRODUCT_MODULE := true
+
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
+
+LOCAL_PACKAGE_NAME := AccentColorAquamarineOverlay
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_RRO_PACKAGE)
diff --git a/packages/overlays/AccentColorAquamarineOverlay/AndroidManifest.xml b/packages/overlays/AccentColorAquamarineOverlay/AndroidManifest.xml
new file mode 100644
index 0000000..27e2470
--- /dev/null
+++ b/packages/overlays/AccentColorAquamarineOverlay/AndroidManifest.xml
@@ -0,0 +1,26 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.theme.color.aquamarine"
+    android:versionCode="1"
+    android:versionName="1.0">
+    <overlay android:targetPackage="android" android:category="android.theme.customization.accent_color" android:priority="1"/>
+
+    <application android:label="@string/accent_color_overlay" android:hasCode="false"/>
+</manifest>
+
diff --git a/packages/overlays/AccentColorAquamarineOverlay/res/values/colors_device_defaults.xml b/packages/overlays/AccentColorAquamarineOverlay/res/values/colors_device_defaults.xml
new file mode 100644
index 0000000..2e69b5d
--- /dev/null
+++ b/packages/overlays/AccentColorAquamarineOverlay/res/values/colors_device_defaults.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<resources>
+    <color name="accent_device_default_light">#23847D</color>
+    <color name="accent_device_default_dark">#1AFFCB</color>
+</resources>
+
diff --git a/packages/overlays/AccentColorAquamarineOverlay/res/values/strings.xml b/packages/overlays/AccentColorAquamarineOverlay/res/values/strings.xml
new file mode 100644
index 0000000..918ba50
--- /dev/null
+++ b/packages/overlays/AccentColorAquamarineOverlay/res/values/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Black accent color name application label. [CHAR LIMIT=50] -->
+    <string name="accent_color_overlay" translatable="false">Aquamarine</string>
+</resources>
+
+
diff --git a/packages/overlays/AccentColorCarbonOverlay/Android.mk b/packages/overlays/AccentColorCarbonOverlay/Android.mk
new file mode 100644
index 0000000..5641e8e
--- /dev/null
+++ b/packages/overlays/AccentColorCarbonOverlay/Android.mk
@@ -0,0 +1,29 @@
+#
+#  Copyright 2018, The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_RRO_THEME := AccentColorCarbon
+
+LOCAL_PRODUCT_MODULE := true
+
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
+
+LOCAL_PACKAGE_NAME := AccentColorCarbonOverlay
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_RRO_PACKAGE)
diff --git a/packages/overlays/AccentColorCarbonOverlay/AndroidManifest.xml b/packages/overlays/AccentColorCarbonOverlay/AndroidManifest.xml
new file mode 100644
index 0000000..d7779f5
--- /dev/null
+++ b/packages/overlays/AccentColorCarbonOverlay/AndroidManifest.xml
@@ -0,0 +1,23 @@
+<!--
+  ~ Copyright (C) 2020 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.theme.color.carbon"
+    android:versionCode="1"
+    android:versionName="1.0">
+    <overlay android:targetPackage="android" android:category="android.theme.customization.accent_color" android:priority="1"/>
+
+    <application android:label="@string/accent_color_overlay_name" android:hasCode="false"/>
+</manifest>
diff --git a/packages/overlays/AccentColorCarbonOverlay/res/values/colors_device_defaults.xml b/packages/overlays/AccentColorCarbonOverlay/res/values/colors_device_defaults.xml
new file mode 100644
index 0000000..1fef363
--- /dev/null
+++ b/packages/overlays/AccentColorCarbonOverlay/res/values/colors_device_defaults.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright (C) 2020 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<resources>
+    <color name="accent_device_default_light">#434E58</color>
+    <color name="accent_device_default_dark">#3DDCFF</color>
+</resources>
diff --git a/packages/overlays/AccentColorCarbonOverlay/res/values/strings.xml b/packages/overlays/AccentColorCarbonOverlay/res/values/strings.xml
new file mode 100644
index 0000000..dcd53e8
--- /dev/null
+++ b/packages/overlays/AccentColorCarbonOverlay/res/values/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2020 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Black accent color name application label. [CHAR LIMIT=50] -->
+    <string name="accent_color_overlay_name" translatable="false">Carbon</string>
+</resources>
+
diff --git a/packages/overlays/AccentColorPaletteOverlay/Android.mk b/packages/overlays/AccentColorPaletteOverlay/Android.mk
new file mode 100644
index 0000000..e207f61
--- /dev/null
+++ b/packages/overlays/AccentColorPaletteOverlay/Android.mk
@@ -0,0 +1,29 @@
+#
+#  Copyright 2018, The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_RRO_THEME := AccentColorPalette
+
+LOCAL_PRODUCT_MODULE := true
+
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
+
+LOCAL_PACKAGE_NAME := AccentColorPaletteOverlay
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_RRO_PACKAGE)
diff --git a/packages/overlays/AccentColorPaletteOverlay/AndroidManifest.xml b/packages/overlays/AccentColorPaletteOverlay/AndroidManifest.xml
new file mode 100644
index 0000000..dd089de
--- /dev/null
+++ b/packages/overlays/AccentColorPaletteOverlay/AndroidManifest.xml
@@ -0,0 +1,23 @@
+<!--
+  ~ Copyright (C) 2020 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.theme.color.palette"
+    android:versionCode="1"
+    android:versionName="1.0">
+    <overlay android:targetPackage="android" android:category="android.theme.customization.accent_color" android:priority="1"/>
+
+    <application android:label="@string/accent_color_overlay" android:hasCode="false"/>
+</manifest>
diff --git a/packages/overlays/AccentColorPaletteOverlay/res/values/colors_device_defaults.xml b/packages/overlays/AccentColorPaletteOverlay/res/values/colors_device_defaults.xml
new file mode 100644
index 0000000..cea0539
--- /dev/null
+++ b/packages/overlays/AccentColorPaletteOverlay/res/values/colors_device_defaults.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright (C) 2020 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<resources>
+    <color name="accent_device_default_light">#c01668</color>
+    <color name="accent_device_default_dark">#ffb6d9</color>
+</resources>
diff --git a/packages/overlays/AccentColorPaletteOverlay/res/values/strings.xml b/packages/overlays/AccentColorPaletteOverlay/res/values/strings.xml
new file mode 100644
index 0000000..ed267b03
--- /dev/null
+++ b/packages/overlays/AccentColorPaletteOverlay/res/values/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2020 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Black accent color name application label. [CHAR LIMIT=50] -->
+    <string name="accent_color_overlay" translatable="false">Palette</string>
+</resources>
+
diff --git a/packages/overlays/AccentColorSandOverlay/Android.mk b/packages/overlays/AccentColorSandOverlay/Android.mk
new file mode 100644
index 0000000..c37455a
--- /dev/null
+++ b/packages/overlays/AccentColorSandOverlay/Android.mk
@@ -0,0 +1,29 @@
+#
+#  Copyright 2018, The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_RRO_THEME := AccentColorSand
+
+LOCAL_PRODUCT_MODULE := true
+
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
+
+LOCAL_PACKAGE_NAME := AccentColorSandOverlay
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_RRO_PACKAGE)
diff --git a/packages/overlays/AccentColorSandOverlay/AndroidManifest.xml b/packages/overlays/AccentColorSandOverlay/AndroidManifest.xml
new file mode 100644
index 0000000..c323cc9
--- /dev/null
+++ b/packages/overlays/AccentColorSandOverlay/AndroidManifest.xml
@@ -0,0 +1,23 @@
+<!--
+  ~ Copyright (C) 2020 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.theme.color.sand"
+    android:versionCode="1"
+    android:versionName="1.0">
+    <overlay android:targetPackage="android" android:category="android.theme.customization.accent_color" android:priority="1"/>
+
+    <application android:label="@string/accent_color_overlay" android:hasCode="false"/>
+</manifest>
diff --git a/packages/overlays/AccentColorSandOverlay/res/values/colors_device_defaults.xml b/packages/overlays/AccentColorSandOverlay/res/values/colors_device_defaults.xml
new file mode 100644
index 0000000..7fb514e
--- /dev/null
+++ b/packages/overlays/AccentColorSandOverlay/res/values/colors_device_defaults.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright (C) 2020 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<resources>
+    <color name="accent_device_default_light">#795548</color>
+    <color name="accent_device_default_dark">#c8ac94</color>
+</resources>
diff --git a/packages/overlays/AccentColorSandOverlay/res/values/strings.xml b/packages/overlays/AccentColorSandOverlay/res/values/strings.xml
new file mode 100644
index 0000000..20a26cb
--- /dev/null
+++ b/packages/overlays/AccentColorSandOverlay/res/values/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2020 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Black accent color name application label. [CHAR LIMIT=50] -->
+    <string name="accent_color_overlay" translatable="false">Sand</string>
+</resources>
+
diff --git a/packages/overlays/AccentColorTangerineOverlay/Android.mk b/packages/overlays/AccentColorTangerineOverlay/Android.mk
new file mode 100644
index 0000000..0d676bb
--- /dev/null
+++ b/packages/overlays/AccentColorTangerineOverlay/Android.mk
@@ -0,0 +1,29 @@
+#
+#  Copyright (C) 2020, The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_RRO_THEME := AccentColorTangerine
+
+LOCAL_PRODUCT_MODULE := true
+
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
+
+LOCAL_PACKAGE_NAME := AccentColorTangerineOverlay
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_RRO_PACKAGE)
diff --git a/packages/overlays/AccentColorTangerineOverlay/AndroidManifest.xml b/packages/overlays/AccentColorTangerineOverlay/AndroidManifest.xml
new file mode 100644
index 0000000..024d4cd
--- /dev/null
+++ b/packages/overlays/AccentColorTangerineOverlay/AndroidManifest.xml
@@ -0,0 +1,25 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.theme.color.tangerine"
+    android:versionCode="1"
+    android:versionName="1.0">
+    <overlay android:targetPackage="android" android:category="android.theme.customization.accent_color" android:priority="1"/>
+
+    <application android:label="@string/accent_color_overlay" android:hasCode="false"/>
+</manifest>
diff --git a/packages/overlays/AccentColorTangerineOverlay/res/values/colors_device_defaults.xml b/packages/overlays/AccentColorTangerineOverlay/res/values/colors_device_defaults.xml
new file mode 100644
index 0000000..ee663cf
--- /dev/null
+++ b/packages/overlays/AccentColorTangerineOverlay/res/values/colors_device_defaults.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<resources>
+    <color name="accent_device_default_light">#C85125</color>
+    <color name="accent_device_default_dark">#F19D7D</color>
+</resources>
+
diff --git a/packages/overlays/AccentColorTangerineOverlay/res/values/strings.xml b/packages/overlays/AccentColorTangerineOverlay/res/values/strings.xml
new file mode 100644
index 0000000..4e8d8e6
--- /dev/null
+++ b/packages/overlays/AccentColorTangerineOverlay/res/values/strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Black accent color name application label. [CHAR LIMIT=50] -->
+    <string name="accent_color_overlay" translatable="false">Tangerine</string>
+</resources>
+
+
+
diff --git a/packages/overlays/Android.mk b/packages/overlays/Android.mk
index 50e1030..ab41e0f 100644
--- a/packages/overlays/Android.mk
+++ b/packages/overlays/Android.mk
@@ -24,9 +24,15 @@
 	AccentColorSpaceOverlay \
 	AccentColorGreenOverlay \
 	AccentColorPurpleOverlay \
+	AccentColorPaletteOverlay \
+	AccentColorCarbonOverlay \
+	AccentColorSandOverlay \
+	AccentColorAmethystOverlay \
+	AccentColorAquamarineOverlay \
+	AccentColorTangerineOverlay \
 	DisplayCutoutEmulationCornerOverlay \
 	DisplayCutoutEmulationDoubleOverlay \
-        DisplayCutoutEmulationHoleOverlay \
+    DisplayCutoutEmulationHoleOverlay \
 	DisplayCutoutEmulationTallOverlay \
 	DisplayCutoutEmulationWaterfallOverlay \
 	FontNotoSerifSourceOverlay \
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-eu/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-eu/strings.xml
deleted file mode 100644
index 93ef2c8..0000000
--- a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-eu/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2020 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"Ur-jauzi moduko mozketa"</string>
-</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-gu/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-gu/strings.xml
deleted file mode 100644
index 03672fe..0000000
--- a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-gu/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2020 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"વૉટરફૉલ કટઆઉટ"</string>
-</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-kk/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-kk/strings.xml
deleted file mode 100644
index bb0dfe9..0000000
--- a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-kk/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2020 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"Сарқырама ойығы"</string>
-</resources>
diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_screenrecord.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_screenrecord.xml
new file mode 100644
index 0000000..a875a23
--- /dev/null
+++ b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_screenrecord.xml
@@ -0,0 +1,18 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="@android:color/white" android:pathData="M4.13,17.62c-0.25,0-0.5-0.13-0.64-0.35c-1.98-3.2-1.98-7.33,0-10.53c0.22-0.35,0.68-0.46,1.03-0.24 c0.35,0.22,0.46,0.68,0.24,1.03c-1.68,2.72-1.68,6.23,0,8.95c0.22,0.35,0.11,0.81-0.24,1.03C4.4,17.58,4.27,17.62,4.13,17.62z M17.51,4.53c0.22-0.35,0.11-0.81-0.24-1.03c-3.2-1.98-7.33-1.98-10.53,0C6.39,3.71,6.28,4.17,6.49,4.53 c0.22,0.35,0.68,0.46,1.03,0.24c2.72-1.68,6.23-1.68,8.95,0c0.12,0.08,0.26,0.11,0.39,0.11C17.12,4.88,17.36,4.76,17.51,4.53z M17.26,20.51c0.35-0.22,0.46-0.68,0.24-1.03c-0.22-0.35-0.68-0.46-1.03-0.24c-2.72,1.68-6.23,1.68-8.95,0 c-0.35-0.22-0.81-0.11-1.03,0.24c-0.22,0.35-0.11,0.81,0.24,1.03c1.6,0.99,3.43,1.49,5.26,1.49S15.66,21.5,17.26,20.51z M20.51,17.26c1.98-3.2,1.98-7.33,0-10.53c-0.22-0.35-0.68-0.46-1.03-0.24c-0.35,0.22-0.46,0.68-0.24,1.03 c1.68,2.72,1.68,6.23,0,8.95c-0.22,0.35-0.11,0.81,0.24,1.03c0.12,0.08,0.26,0.11,0.39,0.11C20.12,17.62,20.36,17.49,20.51,17.26z M16,12c0-2.21-1.79-4-4-4c-2.21,0-4,1.79-4,4c0,2.21,1.79,4,4,4C14.21,16,16,14.21,16,12z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_screenrecord.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_screenrecord.xml
new file mode 100644
index 0000000..1a7c63c
--- /dev/null
+++ b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_screenrecord.xml
@@ -0,0 +1,18 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="@android:color/white" android:pathData="M12,16c-2.21,0-4-1.79-4-4c0-2.21,1.79-4,4-4c2.21,0,4,1.79,4,4C16,14.21,14.21,16,12,16z M4.7,17.36 c0.48-0.28,0.64-0.89,0.37-1.37c-1.39-2.41-1.42-5.41-0.08-7.84c0.27-0.48,0.09-1.09-0.39-1.36C4.11,6.52,3.5,6.7,3.23,7.18 c-1.67,3.04-1.64,6.8,0.1,9.81c0.19,0.32,0.52,0.5,0.87,0.5C4.37,17.49,4.54,17.45,4.7,17.36z M8.01,5.06 c2.4-1.39,5.41-1.42,7.84-0.08c0.48,0.27,1.09,0.09,1.36-0.39c0.27-0.48,0.09-1.09-0.39-1.36c-3.04-1.67-6.8-1.64-9.81,0.1 C6.53,3.61,6.37,4.22,6.64,4.7c0.19,0.32,0.52,0.5,0.87,0.5C7.68,5.2,7.85,5.16,8.01,5.06z M20.77,16.82 c1.67-3.04,1.64-6.8-0.1-9.81c-0.28-0.48-0.89-0.64-1.37-0.37c-0.48,0.28-0.64,0.89-0.37,1.37c1.39,2.41,1.42,5.41,0.08,7.84 c-0.27,0.48-0.09,1.09,0.39,1.36c0.15,0.08,0.32,0.12,0.48,0.12C20.24,17.33,20.58,17.15,20.77,16.82z M16.99,20.67 c0.48-0.28,0.64-0.89,0.37-1.37c-0.28-0.48-0.89-0.64-1.37-0.37c-2.41,1.39-5.41,1.42-7.84,0.08c-0.48-0.27-1.09-0.09-1.36,0.39 c-0.27,0.48-0.09,1.09,0.39,1.36C8.67,21.59,10.34,22,12,22C13.73,22,15.46,21.55,16.99,20.67z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackKaiAndroidOverlay/Android.mk b/packages/overlays/IconPackKaiAndroidOverlay/Android.mk
new file mode 100644
index 0000000..11bd8b8
--- /dev/null
+++ b/packages/overlays/IconPackKaiAndroidOverlay/Android.mk
@@ -0,0 +1,28 @@
+#
+#  Copyright (C) 2020, The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_RRO_THEME := IconPackKaiAndroid
+
+LOCAL_PRODUCT_MODULE := true
+
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
+
+LOCAL_PACKAGE_NAME := IconPackKaiAndroidOverlay
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_RRO_PACKAGE)
diff --git a/packages/overlays/IconPackKaiAndroidOverlay/AndroidManifest.xml b/packages/overlays/IconPackKaiAndroidOverlay/AndroidManifest.xml
new file mode 100644
index 0000000..f722d21
--- /dev/null
+++ b/packages/overlays/IconPackKaiAndroidOverlay/AndroidManifest.xml
@@ -0,0 +1,22 @@
+<!--
+  ~ Copyright (C) 2020 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.theme.icon_pack.kai.android"
+    android:versionCode="1"
+    android:versionName="1.0">
+    <overlay android:targetPackage="android" android:category="android.theme.customization.icon_pack.android" android:priority="1"/>
+    <application android:label="Kai" android:hasCode="false"/>
+</manifest>
diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_audio_alarm.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_audio_alarm.xml
new file mode 100644
index 0000000..683e2b6
--- /dev/null
+++ b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_audio_alarm.xml
@@ -0,0 +1,34 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:tint="?android:attr/colorControlNormal"
+        android:viewportWidth="24"
+        android:viewportHeight="24">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,4.01c-6.86,0 -9,4.44 -9,8.99c0,4.59 2.12,8.99 9,8.99c6.86,0 9,-4.44 9,-8.99C21,8.41 18.88,4.01 12,4.01zM12,20.49C11.44,20.5 4.5,21.06 4.5,13c0,-2.3 0.59,-7.49 7.5,-7.49c0.56,-0.01 7.5,-0.56 7.5,7.49C19.5,21.02 12.53,20.49 12,20.49z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M2.0575,5.6559l4.6068,-3.8442l0.961,1.1517l-4.6068,3.8442z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.3786,2.9637l0.961,-1.1517l4.6068,3.8442l-0.961,1.1517z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.5,8H11v4.88c0,0.4 0.16,0.78 0.44,1.06l3.1,3.1l1.06,-1.06l-3.1,-3.1V8z"/>
+</vector>
diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml
new file mode 100644
index 0000000..3fd9f79
--- /dev/null
+++ b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml
@@ -0,0 +1,225 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:aapt="http://schemas.android.com/aapt">
+    <aapt:attr name="android:drawable">
+        <vector
+            android:width="24dp"
+            android:height="24dp"
+            android:viewportWidth="24"
+            android:viewportHeight="24">
+            <group android:name="_R_G">
+                <group android:name="_R_G_L_0_G">
+                    <path
+                        android:name="_R_G_L_0_G_D_0_P_0"
+                        android:fillAlpha="1"
+                        android:fillColor="#000000"
+                        android:fillType="nonZero"
+                        android:pathData=" M5 13.5 C4.93,13.5 3.5,13.59 3.5,12 C3.5,10.41 4.95,10.5 5,10.5 C5.07,10.5 6.5,10.41 6.5,12 C6.5,13.59 5.05,13.5 5,13.5c " />
+                    <path
+                        android:name="_R_G_L_0_G_D_1_P_0"
+                        android:fillAlpha="1"
+                        android:fillColor="#000000"
+                        android:fillType="nonZero"
+                        android:pathData=" M19 13.5 C18.93,13.5 17.5,13.59 17.5,12 C17.5,10.41 18.95,10.5 19,10.5 C19.07,10.5 20.5,10.41 20.5,12 C20.5,13.59 19.05,13.5 19,13.5c " />
+                    <path
+                        android:name="_R_G_L_0_G_D_2_P_0"
+                        android:pathData=" M6.06 17.94 C6.06,17.94 16.32,7.68 16.32,7.68 C16.42,7.58 16.42,7.42 16.32,7.32 C16.32,7.32 12.18,3.18 12.18,3.18 C12.02,3.02 11.75,3.13 11.75,3.35 C11.75,3.35 11.75,12.25 11.75,12.25 "
+                        android:strokeWidth="1.5"
+                        android:strokeAlpha="1"
+                        android:strokeColor="#000000" />
+                    <path
+                        android:name="_R_G_L_0_G_D_3_P_0"
+                        android:pathData=" M11.75 11.69 C11.75,11.69 11.75,20.59 11.75,20.59 C11.75,20.81 12.02,20.92 12.18,20.77 C12.18,20.77 16.32,16.62 16.32,16.62 C16.42,16.52 16.42,16.36 16.32,16.27 C16.32,16.27 6.06,6 6.06,6 "
+                        android:strokeWidth="1.5"
+                        android:strokeAlpha="1"
+                        android:strokeColor="#000000" />
+                </group>
+            </group>
+            <group android:name="time_group" />
+        </vector>
+    </aapt:attr>
+    <target android:name="_R_G_L_0_G_D_0_P_0">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="17"
+                    android:propertyName="fillAlpha"
+                    android:startOffset="0"
+                    android:valueFrom="1"
+                    android:valueTo="0.5"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="233"
+                    android:propertyName="fillAlpha"
+                    android:startOffset="17"
+                    android:valueFrom="0.5"
+                    android:valueTo="0.5"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="17"
+                    android:propertyName="fillAlpha"
+                    android:startOffset="250"
+                    android:valueFrom="0.5"
+                    android:valueTo="1"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="233"
+                    android:propertyName="fillAlpha"
+                    android:startOffset="267"
+                    android:valueFrom="1"
+                    android:valueTo="1"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="17"
+                    android:propertyName="fillAlpha"
+                    android:startOffset="500"
+                    android:valueFrom="1"
+                    android:valueTo="0.5"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="233"
+                    android:propertyName="fillAlpha"
+                    android:startOffset="517"
+                    android:valueFrom="0.5"
+                    android:valueTo="0.5"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="17"
+                    android:propertyName="fillAlpha"
+                    android:startOffset="750"
+                    android:valueFrom="0.5"
+                    android:valueTo="1"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="_R_G_L_0_G_D_1_P_0">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="250"
+                    android:propertyName="fillAlpha"
+                    android:startOffset="0"
+                    android:valueFrom="1"
+                    android:valueTo="1"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="17"
+                    android:propertyName="fillAlpha"
+                    android:startOffset="250"
+                    android:valueFrom="1"
+                    android:valueTo="0.5"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="233"
+                    android:propertyName="fillAlpha"
+                    android:startOffset="267"
+                    android:valueFrom="0.5"
+                    android:valueTo="0.5"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="17"
+                    android:propertyName="fillAlpha"
+                    android:startOffset="500"
+                    android:valueFrom="0.5"
+                    android:valueTo="1"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="233"
+                    android:propertyName="fillAlpha"
+                    android:startOffset="517"
+                    android:valueFrom="1"
+                    android:valueTo="1"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="17"
+                    android:propertyName="fillAlpha"
+                    android:startOffset="750"
+                    android:valueFrom="1"
+                    android:valueTo="0.5"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="time_group">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="1017"
+                    android:propertyName="translateX"
+                    android:startOffset="0"
+                    android:valueFrom="0"
+                    android:valueTo="1"
+                    android:valueType="floatType" />
+            </set>
+        </aapt:attr>
+    </target>
+</animated-vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml
new file mode 100644
index 0000000..1978993
--- /dev/null
+++ b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml
@@ -0,0 +1,203 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:aapt="http://schemas.android.com/aapt">
+    <aapt:attr name="android:drawable">
+        <vector
+            android:width="24dp"
+            android:height="24dp"
+            android:viewportWidth="24"
+            android:viewportHeight="24">
+            <group android:name="_R_G">
+                <group android:name="_R_G_L_0_G">
+                    <path
+                        android:name="_R_G_L_0_G_D_0_P_0"
+                        android:fillAlpha="1"
+                        android:fillColor="#000000"
+                        android:fillType="nonZero"
+                        android:pathData=" M12.01 11.09 C9.98,11.09 10.1,12.92 10.1,13 C10.1,13.07 9.98,14.91 12.01,14.91 C14.03,14.91 13.92,13.08 13.92,13 C13.92,12.93 14.03,11.09 12.01,11.09c " />
+                    <path
+                        android:name="_R_G_L_0_G_D_1_P_0"
+                        android:pathData=" M8.46 16.55 C8.31,16.39 4.7,13.21 8.46,9.45 C12.22,5.69 15.43,9.33 15.55,9.45 C15.71,9.61 19.31,12.79 15.55,16.55 "
+                        android:strokeWidth="1.5"
+                        android:strokeAlpha="1"
+                        android:strokeColor="#000000" />
+                    <path
+                        android:name="_R_G_L_0_G_D_2_P_0"
+                        android:pathData=" M5.76 19.25 C5.48,18.97 -0.86,13.37 5.76,6.75 C12.39,0.11 18.04,6.54 18.25,6.75 C18.53,7.03 24.87,12.63 18.25,19.26 "
+                        android:strokeWidth="1.5"
+                        android:strokeAlpha="1"
+                        android:strokeColor="#000000" />
+                </group>
+            </group>
+            <group android:name="time_group" />
+        </vector>
+    </aapt:attr>
+    <target android:name="_R_G_L_0_G_D_0_P_0">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="17"
+                    android:propertyName="fillAlpha"
+                    android:startOffset="0"
+                    android:valueFrom="1"
+                    android:valueTo="0.5"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="583"
+                    android:propertyName="fillAlpha"
+                    android:startOffset="17"
+                    android:valueFrom="0.5"
+                    android:valueTo="0.5"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="17"
+                    android:propertyName="fillAlpha"
+                    android:startOffset="600"
+                    android:valueFrom="0.5"
+                    android:valueTo="1"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="_R_G_L_0_G_D_1_P_0">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="200"
+                    android:propertyName="strokeAlpha"
+                    android:startOffset="0"
+                    android:valueFrom="1"
+                    android:valueTo="1"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="17"
+                    android:propertyName="strokeAlpha"
+                    android:startOffset="200"
+                    android:valueFrom="1"
+                    android:valueTo="0.5"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="583"
+                    android:propertyName="strokeAlpha"
+                    android:startOffset="217"
+                    android:valueFrom="0.5"
+                    android:valueTo="0.5"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="17"
+                    android:propertyName="strokeAlpha"
+                    android:startOffset="800"
+                    android:valueFrom="0.5"
+                    android:valueTo="1"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="_R_G_L_0_G_D_2_P_0">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="400"
+                    android:propertyName="strokeAlpha"
+                    android:startOffset="0"
+                    android:valueFrom="1"
+                    android:valueTo="1"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="17"
+                    android:propertyName="strokeAlpha"
+                    android:startOffset="400"
+                    android:valueFrom="1"
+                    android:valueTo="0.5"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="600"
+                    android:propertyName="strokeAlpha"
+                    android:startOffset="417"
+                    android:valueFrom="0.5"
+                    android:valueTo="0.5"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="17"
+                    android:propertyName="strokeAlpha"
+                    android:startOffset="1017"
+                    android:valueFrom="0.5"
+                    android:valueTo="1"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="time_group">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="1250"
+                    android:propertyName="translateX"
+                    android:startOffset="0"
+                    android:valueFrom="0"
+                    android:valueTo="1"
+                    android:valueType="floatType" />
+            </set>
+        </aapt:attr>
+    </target>
+</animated-vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_screenshot.xml
new file mode 100644
index 0000000..4184a1e
--- /dev/null
+++ b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_screenshot.xml
@@ -0,0 +1,30 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M16.75,1h-9.5C6.01,1 5,2.01 5,3.25v17.5C5,21.99 6.01,23 7.25,23h9.5c1.24,0 2.25,-1.01 2.25,-2.25V3.25C19,2.01 17.99,1 16.75,1zM7.25,2.5h9.5c0.41,0 0.75,0.34 0.75,0.75v1h-11v-1C6.5,2.84 6.84,2.5 7.25,2.5zM17.5,5.75v12.5h-11V5.75H17.5zM16.75,21.5h-9.5c-0.41,0 -0.75,-0.34 -0.75,-0.75v-1h11v1C17.5,21.16 17.16,21.5 16.75,21.5z"/>
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M9.5,11V8.5H12V7H8.75C8.34,7 8,7.34 8,7.75V11H9.5z"/>
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M12,17h3.25c0.41,0 0.75,-0.34 0.75,-0.75V13h-1.5v2.5H12V17z"/>
+</vector>
diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml
new file mode 100644
index 0000000..4a06d83
--- /dev/null
+++ b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml
@@ -0,0 +1,182 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:aapt="http://schemas.android.com/aapt">
+    <aapt:attr name="android:drawable">
+        <vector
+            android:width="24dp"
+            android:height="24dp"
+            android:viewportWidth="24"
+            android:viewportHeight="24">
+            <group android:name="_R_G">
+                <group android:name="_R_G_L_0_G">
+                    <path
+                        android:name="_R_G_L_0_G_D_0_P_0"
+                        android:pathData=" M13.82 18.52 C13.29,18.05 11.85,17.07 10.19,18.53 "
+                        android:strokeWidth="1.5"
+                        android:strokeAlpha="0.3"
+                        android:strokeColor="#000000" />
+                    <path
+                        android:name="_R_G_L_0_G_D_1_P_0"
+                        android:pathData=" M16.84 14.8 C15.45,13.55 11.6,10.89 7.17,14.81 "
+                        android:strokeWidth="1.5"
+                        android:strokeAlpha="0.3"
+                        android:strokeColor="#000000" />
+                    <path
+                        android:name="_R_G_L_0_G_D_2_P_0"
+                        android:pathData=" M19.87 11.08 C17.6,9.05 11.36,4.73 4.15,11.09 "
+                        android:strokeWidth="1.5"
+                        android:strokeAlpha="0.3"
+                        android:strokeColor="#000000" />
+                    <path
+                        android:name="_R_G_L_0_G_D_3_P_0"
+                        android:pathData=" M22.89 7.36 C19.75,4.55 11.11,-1.44 1.12,7.38 "
+                        android:strokeWidth="1.5"
+                        android:strokeAlpha="0.3"
+                        android:strokeColor="#000000" />
+                </group>
+            </group>
+            <group android:name="time_group" />
+        </vector>
+    </aapt:attr>
+    <target android:name="_R_G_L_0_G_D_0_P_0">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="150"
+                    android:propertyName="strokeAlpha"
+                    android:startOffset="0"
+                    android:valueFrom="0.3"
+                    android:valueTo="0.3"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="17"
+                    android:propertyName="strokeAlpha"
+                    android:startOffset="150"
+                    android:valueFrom="0.3"
+                    android:valueTo="1"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="_R_G_L_0_G_D_1_P_0">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="317"
+                    android:propertyName="strokeAlpha"
+                    android:startOffset="0"
+                    android:valueFrom="0.3"
+                    android:valueTo="0.3"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="17"
+                    android:propertyName="strokeAlpha"
+                    android:startOffset="317"
+                    android:valueFrom="0.3"
+                    android:valueTo="1"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="_R_G_L_0_G_D_2_P_0">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="483"
+                    android:propertyName="strokeAlpha"
+                    android:startOffset="0"
+                    android:valueFrom="0.3"
+                    android:valueTo="0.3"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="17"
+                    android:propertyName="strokeAlpha"
+                    android:startOffset="483"
+                    android:valueFrom="0.3"
+                    android:valueTo="1"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="_R_G_L_0_G_D_3_P_0">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="650"
+                    android:propertyName="strokeAlpha"
+                    android:startOffset="0"
+                    android:valueFrom="0.3"
+                    android:valueTo="0.3"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="17"
+                    android:propertyName="strokeAlpha"
+                    android:startOffset="650"
+                    android:valueFrom="0.3"
+                    android:valueTo="1"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="time_group">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="850"
+                    android:propertyName="translateX"
+                    android:startOffset="0"
+                    android:valueFrom="0"
+                    android:valueTo="1"
+                    android:valueType="floatType" />
+            </set>
+        </aapt:attr>
+    </target>
+</animated-vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_work_apps_off.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_work_apps_off.xml
new file mode 100644
index 0000000..845545d
--- /dev/null
+++ b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_work_apps_off.xml
@@ -0,0 +1,19 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="32dp" android:viewportHeight="24" android:viewportWidth="24" android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="@android:color/white" android:pathData="M19.5,19.5l-6-6L12,12L7.5,7.5L6,6L2.81,2.81L1.75,3.87l2.17,2.17C2.83,6.2,2,7.12,2,8.25v10.5C2,19.99,3.01,21,4.25,21 h14.63l1.25,1.25l1.06-1.06l-0.44-0.44L19.5,19.5z M4.25,19.5c-0.41,0-0.75-0.34-0.75-0.75V8.25c0-0.41,0.34-0.75,0.75-0.75h1.13 l5.27,5.27c-0.09,0.19-0.15,0.42-0.15,0.73c0,1.59,1.43,1.5,1.5,1.5c0.02,0,0.38,0.02,0.74-0.14l4.64,4.64H4.25z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M9.62,7.5h10.13c0.41,0,0.75,0.34,0.75,0.75v10.13l1.28,1.28c0.13-0.28,0.22-0.58,0.22-0.91V8.25C22,7.01,20.99,6,19.75,6 H16c0,0,0,0,0,0c0-2.05-0.95-4-4-4C9.01,2,8.04,3.9,8.01,5.89L9.62,7.5z M12,3.5c0.54-0.01,2.5-0.11,2.5,2.5c0,0,0,0,0,0h-5 c0,0,0,0,0,0C9.5,3.39,11.45,3.48,12,3.5z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_screenshot.xml
new file mode 100644
index 0000000..4184a1e
--- /dev/null
+++ b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_screenshot.xml
@@ -0,0 +1,30 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M16.75,1h-9.5C6.01,1 5,2.01 5,3.25v17.5C5,21.99 6.01,23 7.25,23h9.5c1.24,0 2.25,-1.01 2.25,-2.25V3.25C19,2.01 17.99,1 16.75,1zM7.25,2.5h9.5c0.41,0 0.75,0.34 0.75,0.75v1h-11v-1C6.5,2.84 6.84,2.5 7.25,2.5zM17.5,5.75v12.5h-11V5.75H17.5zM16.75,21.5h-9.5c-0.41,0 -0.75,-0.34 -0.75,-0.75v-1h11v1C17.5,21.16 17.16,21.5 16.75,21.5z"/>
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M9.5,11V8.5H12V7H8.75C8.34,7 8,7.34 8,7.75V11H9.5z"/>
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M12,17h3.25c0.41,0 0.75,-0.34 0.75,-0.75V13h-1.5v2.5H12V17z"/>
+</vector>
diff --git a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_select.xml b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_select.xml
new file mode 100644
index 0000000..f949a0c
--- /dev/null
+++ b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_select.xml
@@ -0,0 +1,24 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M15.38,12.5h-1.25V8.12C14.13,6.95 13.18,6 12,6S9.88,6.95 9.88,8.12v7.9L7.91,15.5c-0.39,-0.1 -1.23,-0.36 -2.56,0.97c-0.29,0.29 -0.29,0.75 -0.01,1.05l3.79,3.98c0,0 0,0 0,0.01c1.37,1.41 3.28,1.51 4.04,1.49h2.2c2.12,0.06 5.25,-1.01 5.25,-5.25C20.63,13.19 17.11,12.46 15.38,12.5zM15.38,21.5h-2.25c-0.44,0.01 -1.93,-0.02 -2.92,-1.03l-3.27,-3.43c0.17,-0.1 0.38,-0.13 0.58,-0.08l2.91,0.78c0.47,0.12 0.94,-0.23 0.94,-0.72v-8.9c0,-0.34 0.28,-0.62 0.62,-0.62s0.62,0.28 0.62,0.62v5.12c0,0.41 0.33,0.75 0.75,0.75h2.05c1.26,-0.03 3.7,0.37 3.7,3.75C19.13,21.14 16.66,21.53 15.38,21.5zM3,8.25c0.41,0 0.75,0.34 0.75,0.75S3.41,9.75 3,9.75S2.25,9.41 2.25,9S2.59,8.25 3,8.25zM6,8.25c0.41,0 0.75,0.34 0.75,0.75S6.41,9.75 6,9.75C5.59,9.75 5.25,9.41 5.25,9S5.59,8.25 6,8.25zM18,8.25c0.41,0 0.75,0.34 0.75,0.75S18.41,9.75 18,9.75S17.25,9.41 17.25,9S17.59,8.25 18,8.25zM21,8.25c0.41,0 0.75,0.34 0.75,0.75S21.41,9.75 21,9.75S20.25,9.41 20.25,9S20.59,8.25 21,8.25zM12,2.25c0.41,0 0.75,0.34 0.75,0.75S12.41,3.75 12,3.75S11.25,3.41 11.25,3S11.59,2.25 12,2.25zM15,2.25c0.41,0 0.75,0.34 0.75,0.75S15.41,3.75 15,3.75S14.25,3.41 14.25,3S14.59,2.25 15,2.25zM3,2.25c0.41,0 0.75,0.34 0.75,0.75S3.41,3.75 3,3.75S2.25,3.41 2.25,3S2.59,2.25 3,2.25zM6,2.25c0.41,0 0.75,0.34 0.75,0.75S6.41,3.75 6,3.75C5.59,3.75 5.25,3.41 5.25,3S5.59,2.25 6,2.25zM9,2.25c0.41,0 0.75,0.34 0.75,0.75S9.41,3.75 9,3.75S8.25,3.41 8.25,3S8.59,2.25 9,2.25zM18,2.25c0.41,0 0.75,0.34 0.75,0.75S18.41,3.75 18,3.75S17.25,3.41 17.25,3S17.59,2.25 18,2.25zM21,2.25c0.41,0 0.75,0.34 0.75,0.75S21.41,3.75 21,3.75S20.25,3.41 20.25,3S20.59,2.25 21,2.25zM3,5.25c0.41,0 0.75,0.34 0.75,0.75c0,0.41 -0.34,0.75 -0.75,0.75S2.25,6.41 2.25,6C2.25,5.59 2.59,5.25 3,5.25zM21,5.25c0.41,0 0.75,0.34 0.75,0.75c0,0.41 -0.34,0.75 -0.75,0.75S20.25,6.41 20.25,6C20.25,5.59 20.59,5.25 21,5.25z"/>
+</vector>
diff --git a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_share.xml b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_share.xml
new file mode 100644
index 0000000..af0e60c
--- /dev/null
+++ b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_share.xml
@@ -0,0 +1,31 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillAlpha="0.24" android:fillColor="#3C00FF" android:pathData="M0,0v24h24V0H0z M22,22H2V2h20V22z" android:strokeAlpha="0.24" android:strokeWidth="1"/>
+  <path android:fillColor="#0081FF" android:pathData="M18,2.1c1.05,0,1.9,0.85,1.9,1.9v16c0,1.05-0.85,1.9-1.9,1.9H6c-1.05,0-1.9-0.85-1.9-1.9V4 c0-1.05,0.85-1.9,1.9-1.9H18 M18,2H6C4.9,2,4,2.9,4,4v16c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2V4C20,2.9,19.1,2,18,2L18,2z"/>
+  <path android:fillColor="#0081FF" android:pathData="M20,4.1c1.05,0,1.9,0.85,1.9,1.9v12c0,1.05-0.85,1.9-1.9,1.9H4c-1.05,0-1.9-0.85-1.9-1.9V6 c0-1.05,0.85-1.9,1.9-1.9H20 M20,4H4C2.9,4,2,4.9,2,6v12c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V6C22,4.9,21.1,4,20,4L20,4z"/>
+  <path android:fillColor="#0081FF" android:pathData="M19,3.1c1.05,0,1.9,0.85,1.9,1.9v14c0,1.05-0.85,1.9-1.9,1.9H5c-1.05,0-1.9-0.85-1.9-1.9V5 c0-1.05,0.85-1.9,1.9-1.9H19 M19,3H5C3.9,3,3,3.9,3,5v14c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V5C21,3.9,20.1,3,19,3L19,3z"/>
+  <path android:fillColor="#0081FF" android:pathData="M12,6.1c3.25,0,5.9,2.65,5.9,5.9s-2.65,5.9-5.9,5.9S6.1,15.25,6.1,12S8.75,6.1,12,6.1 M12,6 c-3.31,0-6,2.69-6,6s2.69,6,6,6c3.31,0,6-2.69,6-6S15.31,6,12,6L12,6z"/>
+  <path android:fillColor="#0081FF" android:pathData="M21.9,2.1v19.8H2.1V2.1H21.9 M22,2H2v20h20V2L22,2z"/>
+  <path android:fillColor="#0081FF" android:pathData="M12,2.1c5.46,0,9.9,4.44,9.9,9.9s-4.44,9.9-9.9,9.9S2.1,17.46,2.1,12S6.54,2.1,12,2.1 M12,2 C6.48,2,2,6.48,2,12s4.48,10,10,10s10-4.48,10-10S17.52,2,12,2L12,2z"/>
+  <path android:pathData="M 2 2 L 22 22" android:strokeColor="#0081FF" android:strokeMiterLimit="10" android:strokeWidth="0.1"/>
+  <path android:pathData="M 22 2 L 2 22" android:strokeColor="#0081FF" android:strokeMiterLimit="10" android:strokeWidth="0.1"/>
+  <path android:fillColor="@android:color/white" android:pathData="M17.88,3.5l0.06,0l0.04,0H18l0.04,0l0.02,0l0.06,0c1.38,0,1.38,1.01,1.38,1.5s0,1.5-1.38,1.5l-0.06,0l-0.04,0H18l-0.04,0 l-0.02,0l-0.06,0C16.5,6.5,16.5,5.49,16.5,5S16.5,3.5,17.88,3.5 M17.88,2C17.33,2,15,2.15,15,5c0,2.85,2.31,3,2.88,3 c0.06,0,0.11,0,0.12,0c0.01,0,0.05,0,0.12,0C18.67,8,21,7.85,21,5c0-2.85-2.31-3-2.88-3C18.06,2,18.01,2,18,2 C17.99,2,17.95,2,17.88,2L17.88,2z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M17.88,17.5l0.06,0l0.04,0H18l0.04,0l0.02,0l0.06,0c1.38,0,1.38,1.01,1.38,1.5s0,1.5-1.38,1.5l-0.06,0l-0.04,0H18l-0.04,0 l-0.02,0l-0.06,0c-1.38,0-1.38-1.01-1.38-1.5S16.5,17.5,17.88,17.5 M17.88,16C17.33,16,15,16.15,15,19c0,2.85,2.31,3,2.88,3 c0.06,0,0.11,0,0.12,0c0.01,0,0.05,0,0.12,0c0.56,0,2.88-0.15,2.88-3c0-2.85-2.31-3-2.88-3c-0.06,0-0.11,0-0.12,0 C17.99,16,17.95,16,17.88,16L17.88,16z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M5.88,10.5l0.06,0l0.04,0H6l0.04,0l0.02,0l0.06,0c1.38,0,1.38,1.01,1.38,1.5s0,1.5-1.38,1.5l-0.06,0l-0.04,0H6l-0.04,0 l-0.02,0l-0.06,0C4.5,13.5,4.5,12.49,4.5,12S4.5,10.5,5.88,10.5 M5.88,9C5.33,9,3,9.15,3,12c0,2.85,2.31,3,2.88,3 c0.06,0,0.11,0,0.12,0c0.01,0,0.05,0,0.12,0C6.67,15,9,14.85,9,12c0-2.85-2.31-3-2.88-3C6.06,9,6.01,9,6,9C5.99,9,5.95,9,5.88,9 L5.88,9z"/>
+  <path android:pathData="M 16.01 6.16 L 8 10.83" android:strokeColor="#000000" android:strokeMiterLimit="10" android:strokeWidth="1.5"/>
+  <path android:pathData="M 16.06 17.87 L 8.19 13.28" android:strokeColor="#000000" android:strokeMiterLimit="10" android:strokeWidth="1.5"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_accessibility_generic.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_accessibility_generic.xml
new file mode 100644
index 0000000..900a3a6
--- /dev/null
+++ b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_accessibility_generic.xml
@@ -0,0 +1,22 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="@android:color/white" android:pathData="M 8 22 C 8.55228474983 22 9 22.4477152502 9 23 C 9 23.5522847498 8.55228474983 24 8 24 C 7.44771525017 24 7 23.5522847498 7 23 C 7 22.4477152502 7.44771525017 22 8 22 Z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M 12 22 C 12.5522847498 22 13 22.4477152502 13 23 C 13 23.5522847498 12.5522847498 24 12 24 C 11.4477152502 24 11 23.5522847498 11 23 C 11 22.4477152502 11.4477152502 22 12 22 Z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M 16 22 C 16.5522847498 22 17 22.4477152502 17 23 C 17 23.5522847498 16.5522847498 24 16 24 C 15.4477152502 24 15 23.5522847498 15 23 C 15 22.4477152502 15.4477152502 22 16 22 Z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M 12 0 C 13.1045694997 0 14 0.895430500338 14 2 C 14 3.10456949966 13.1045694997 4 12 4 C 10.8954305003 4 10 3.10456949966 10 2 C 10 0.895430500338 10.8954305003 0 12 0 Z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M15,20V7c2-0.17,4.14-0.5,6-1l-0.5-2c-2.61,0.7-5.67,1-8.5,1S6.11,4.7,3.5,4L3,6c1.86,0.5,4,0.83,6,1v13h2v-6h2v6H15z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_restore.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_restore.xml
new file mode 100644
index 0000000..c3ab52f
--- /dev/null
+++ b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_restore.xml
@@ -0,0 +1,19 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="@android:color/white" android:pathData="M12.98,3C10.03,2.93,4,4.16,4,12v0.19L1.78,9.97l-1.06,1.06l3.5,3.5c0.29,0.29,0.77,0.29,1.06,0l3.5-3.5L7.72,9.97 L5.5,12.19V12c0-6.75,4.97-7.5,7.5-7.5c6.79,0,7.5,4.95,7.5,7.5c0,7.92-6.98,7.5-7.5,7.5c-2.13,0-4.19-0.46-5.67-2.01l-1.08,1.04 c2.24,2.34,5.41,2.5,6.76,2.48c3.65,0.1,9-1.66,9-9C22,4.09,15.94,2.93,12.98,3z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M12.25,7v5c0,0.2,0.08,0.39,0.22,0.53l3.5,3.5l1.06-1.06l-3.28-3.28V7H12.25z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_force_stop.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_force_stop.xml
new file mode 100644
index 0000000..e663f50
--- /dev/null
+++ b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_force_stop.xml
@@ -0,0 +1,20 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="@android:color/white" android:pathData="M22.4,19.87L12.65,3.12c-0.27-0.46-1.03-0.46-1.3,0L1.6,19.87C1.31,20.37,1.67,21,2.25,21h19.5 C22.33,21,22.69,20.37,22.4,19.87z M3.55,19.5L12,4.99l8.45,14.51H3.55z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M 11.25 10 H 12.75 V 15 H 11.25 V 10 Z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M 12 16.5 C 12.4142135624 16.5 12.75 16.8357864376 12.75 17.25 C 12.75 17.6642135624 12.4142135624 18 12 18 C 11.5857864376 18 11.25 17.6642135624 11.25 17.25 C 11.25 16.8357864376 11.5857864376 16.5 12 16.5 Z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_gestures.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_gestures.xml
new file mode 100644
index 0000000..45bbcb1
--- /dev/null
+++ b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_gestures.xml
@@ -0,0 +1,19 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="@android:color/white" android:pathData="M17.5,18.25h-11V5.75h11V7H19V3.25C19,2.01,17.99,1,16.75,1h-9.5C6.01,1,5,2.01,5,3.25v17.5C5,21.99,6.01,23,7.25,23h9.5 c1.24,0,2.25-1.01,2.25-2.25V17h-1.5V18.25z M7.25,2.5h9.5c0.41,0,0.75,0.34,0.75,0.75v1h-11v-1C6.5,2.84,6.84,2.5,7.25,2.5z M16.75,21.5h-9.5c-0.41,0-0.75-0.34-0.75-0.75v-1h11v1C17.5,21.16,17.16,21.5,16.75,21.5z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M21.33,11.33l-1.78-0.89l-0.89-1.78c-0.25-0.51-1.09-0.51-1.34,0l-0.89,1.78l-1.78,0.89c-0.25,0.13-0.42,0.39-0.42,0.67 s0.16,0.54,0.42,0.67l1.78,0.89l0.89,1.78c0.13,0.25,0.39,0.41,0.67,0.41s0.54-0.16,0.67-0.41l0.89-1.78l1.78-0.89 c0.25-0.13,0.42-0.39,0.42-0.67S21.59,11.46,21.33,11.33z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/Android.mk b/packages/overlays/IconPackKaiSystemUIOverlay/Android.mk
new file mode 100644
index 0000000..5e55f7d
--- /dev/null
+++ b/packages/overlays/IconPackKaiSystemUIOverlay/Android.mk
@@ -0,0 +1,29 @@
+#
+#  Copyright (C) 2020, The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_RRO_THEME := IconPackKaiSystemUI
+
+LOCAL_PRODUCT_MODULE := true
+
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
+
+LOCAL_PACKAGE_NAME := IconPackKaiSystemUIOverlay
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_RRO_PACKAGE)
diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_lock.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_lock.xml
new file mode 100644
index 0000000..fbe5f09
--- /dev/null
+++ b/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_lock.xml
@@ -0,0 +1,318 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:aapt="http://schemas.android.com/aapt">
+    <aapt:attr name="android:drawable">
+        <vector
+            android:width="24dp"
+            android:height="32dp"
+            android:viewportWidth="24"
+            android:viewportHeight="32">
+            <group android:name="_R_G">
+                <group
+                    android:name="_R_G_L_2_G_T_1"
+                    android:translateX="12"
+                    android:translateY="19.001">
+                    <group
+                        android:name="_R_G_L_2_G"
+                        android:translateX="-12"
+                        android:translateY="-15.001">
+                        <path
+                            android:name="_R_G_L_2_G_D_0_P_0"
+                            android:pathData=" M17.75 21.25 C17.75,21.25 6.25,21.25 6.25,21.25 C5.42,21.25 4.75,20.58 4.75,19.75 C4.75,19.75 4.75,10.25 4.75,10.25 C4.75,9.42 5.42,8.75 6.25,8.75 C6.25,8.75 17.75,8.75 17.75,8.75 C18.58,8.75 19.25,9.42 19.25,10.25 C19.25,10.25 19.25,19.75 19.25,19.75 C19.25,20.58 18.58,21.25 17.75,21.25c "
+                            android:strokeWidth="1.5"
+                            android:strokeAlpha="1"
+                            android:strokeColor="#000000" />
+                    </group>
+                </group>
+                <group
+                    android:name="_R_G_L_1_G_N_4_T_1"
+                    android:translateX="12"
+                    android:translateY="19.001">
+                    <group
+                        android:name="_R_G_L_1_G_N_4_T_0"
+                        android:translateX="-12"
+                        android:translateY="-15.001">
+                        <group
+                            android:name="_R_G_L_1_G"
+                            android:pivotX="11.903"
+                            android:pivotY="14.897"
+                            android:scaleX="1"
+                            android:scaleY="1">
+                            <path
+                                android:name="_R_G_L_1_G_D_0_P_0"
+                                android:pathData=" M12 17 C11.91,17 10,17.12 10,15 C10,12.88 11.93,13 12,13 C12.09,13 14,12.88 14,15 C14,17.12 12.07,17 12,17c "
+                                android:strokeWidth="1.5"
+                                android:strokeAlpha="1"
+                                android:strokeColor="#000000" />
+                        </group>
+                    </group>
+                </group>
+                <group
+                    android:name="_R_G_L_0_G_N_4_T_1"
+                    android:translateX="12"
+                    android:translateY="19.001">
+                    <group
+                        android:name="_R_G_L_0_G_N_4_T_0"
+                        android:translateX="-12"
+                        android:translateY="-15.001">
+                        <group android:name="_R_G_L_0_G">
+                            <path
+                                android:name="_R_G_L_0_G_D_0_P_0"
+                                android:pathData=" M22.13 5.86 C22.13,5.86 22.13,5.62 22.13,5.62 C22.13,1.31 18.12,1.83 18.25,1.83 C18.42,1.83 14.75,1.64 14.75,5.62 C14.75,5.62 14.75,8.99 14.75,8.99 "
+                                android:strokeWidth="1.5"
+                                android:strokeAlpha="1"
+                                android:strokeColor="#000000" />
+                        </group>
+                    </group>
+                </group>
+            </group>
+            <group android:name="time_group" />
+        </vector>
+    </aapt:attr>
+    <target android:name="_R_G_L_2_G_T_1">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="400"
+                    android:propertyName="translateY"
+                    android:startOffset="0"
+                    android:valueFrom="19.001"
+                    android:valueTo="19.001"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="67"
+                    android:propertyName="translateY"
+                    android:startOffset="400"
+                    android:valueFrom="19.001"
+                    android:valueTo="20.5"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="83"
+                    android:propertyName="translateY"
+                    android:startOffset="467"
+                    android:valueFrom="20.5"
+                    android:valueTo="19.001"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="_R_G_L_1_G">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="450"
+                    android:propertyName="scaleX"
+                    android:startOffset="0"
+                    android:valueFrom="1"
+                    android:valueTo="1"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="450"
+                    android:propertyName="scaleY"
+                    android:startOffset="0"
+                    android:valueFrom="1"
+                    android:valueTo="1"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="67"
+                    android:propertyName="scaleX"
+                    android:startOffset="450"
+                    android:valueFrom="1"
+                    android:valueTo="1.1"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="67"
+                    android:propertyName="scaleY"
+                    android:startOffset="450"
+                    android:valueFrom="1"
+                    android:valueTo="1.1"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="183"
+                    android:propertyName="scaleX"
+                    android:startOffset="517"
+                    android:valueFrom="1.1"
+                    android:valueTo="1"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="183"
+                    android:propertyName="scaleY"
+                    android:startOffset="517"
+                    android:valueFrom="1.1"
+                    android:valueTo="1"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="_R_G_L_1_G_N_4_T_1">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="400"
+                    android:propertyName="translateY"
+                    android:startOffset="0"
+                    android:valueFrom="19.001"
+                    android:valueTo="19.001"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="67"
+                    android:propertyName="translateY"
+                    android:startOffset="400"
+                    android:valueFrom="19.001"
+                    android:valueTo="20.5"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="83"
+                    android:propertyName="translateY"
+                    android:startOffset="467"
+                    android:valueFrom="20.5"
+                    android:valueTo="19.001"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="_R_G_L_0_G_D_0_P_0">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="317"
+                    android:propertyName="pathData"
+                    android:startOffset="0"
+                    android:valueFrom="M22.13 5.86 C22.13,5.86 22.13,5.62 22.13,5.62 C22.13,1.31 18.12,1.83 18.25,1.83 C18.42,1.83 14.75,1.64 14.75,5.62 C14.75,5.62 14.75,8.99 14.75,8.99 "
+                    android:valueTo="M8.25 3.59 C8.25,3.59 8.25,2.75 8.25,2.75 C8.25,-1.23 11.87,-1 12,-1 C12.17,-1 15.75,-1.23 15.75,2.75 C15.75,2.75 15.75,9 15.75,9 "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="133"
+                    android:propertyName="pathData"
+                    android:startOffset="317"
+                    android:valueFrom="M8.25 3.59 C8.25,3.59 8.25,2.75 8.25,2.75 C8.25,-1.23 11.87,-1 12,-1 C12.17,-1 15.75,-1.23 15.75,2.75 C15.75,2.75 15.75,9 15.75,9 "
+                    android:valueTo="M8.25 8.75 C8.25,8.75 8.25,5.62 8.25,5.62 C8.25,1.64 11.87,1.88 12,1.88 C12.17,1.88 15.75,1.65 15.75,5.62 C15.75,5.62 15.75,9 15.75,9 "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="_R_G_L_0_G_N_4_T_1">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="400"
+                    android:propertyName="translateY"
+                    android:startOffset="0"
+                    android:valueFrom="19.001"
+                    android:valueTo="19.001"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="67"
+                    android:propertyName="translateY"
+                    android:startOffset="400"
+                    android:valueFrom="19.001"
+                    android:valueTo="20.5"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="83"
+                    android:propertyName="translateY"
+                    android:startOffset="467"
+                    android:valueFrom="20.5"
+                    android:valueTo="19.001"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="time_group">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="733"
+                    android:propertyName="translateX"
+                    android:startOffset="0"
+                    android:valueFrom="0"
+                    android:valueTo="1"
+                    android:valueType="floatType" />
+            </set>
+        </aapt:attr>
+    </target>
+</animated-vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_scanning.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_scanning.xml
new file mode 100644
index 0000000..e27284d1
--- /dev/null
+++ b/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_scanning.xml
@@ -0,0 +1,18 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="32dp" android:width="24dp" android:viewportHeight="32" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_2_G" android:translateY="4" android:pivotX="12" android:pivotY="12" android:scaleX="1" android:scaleY="1"><path android:name="_R_G_L_2_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="1.5" android:strokeAlpha="1" android:pathData=" M17.75 21.25 C17.75,21.25 6.25,21.25 6.25,21.25 C5.42,21.25 4.75,20.58 4.75,19.75 C4.75,19.75 4.75,10.25 4.75,10.25 C4.75,9.42 5.42,8.75 6.25,8.75 C6.25,8.75 17.75,8.75 17.75,8.75 C18.58,8.75 19.25,9.42 19.25,10.25 C19.25,10.25 19.25,19.75 19.25,19.75 C19.25,20.58 18.58,21.25 17.75,21.25c "/></group><group android:name="_R_G_L_1_G_N_3_T_0" android:translateY="4" android:pivotX="12" android:pivotY="12" android:scaleX="1" android:scaleY="1"><group android:name="_R_G_L_1_G" android:pivotX="11.903" android:pivotY="14.897" android:scaleX="1" android:scaleY="1"><path android:name="_R_G_L_1_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="1.5" android:strokeAlpha="1" android:pathData=" M12 17 C11.91,17 10,17.12 10,15 C10,12.88 11.93,13 12,13 C12.09,13 14,12.88 14,15 C14,17.12 12.07,17 12,17c "/></group></group><group android:name="_R_G_L_0_G_N_3_T_0" android:translateY="4" android:pivotX="12" android:pivotY="12" android:scaleX="1" android:scaleY="1"><group android:name="_R_G_L_0_G_T_1" android:translateX="12" android:translateY="12"><group android:name="_R_G_L_0_G" android:translateX="-12" android:translateY="-12"><path android:name="_R_G_L_0_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="1.5" android:strokeAlpha="1" android:pathData=" M8.25 8.75 C8.25,8.75 8.25,5.62 8.25,5.62 C8.25,1.64 11.87,1.88 12,1.88 C12.17,1.88 15.75,1.65 15.75,5.62 C15.75,5.62 15.75,9 15.75,9 "/></group></group></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_2_G"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="scaleX" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="scaleX" android:duration="67" android:startOffset="0" android:valueFrom="1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="67" android:startOffset="0" android:valueFrom="1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="117" android:startOffset="67" android:valueFrom="1" android:valueTo="0.6" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="117" android:startOffset="67" android:valueFrom="1" android:valueTo="0.6" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="333" android:startOffset="183" android:valueFrom="0.6" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="333" android:startOffset="183" android:valueFrom="0.6" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G_N_3_T_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="scaleX" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="150" android:startOffset="0" android:valueFrom="M8.25 8.75 C8.25,8.75 8.25,5.62 8.25,5.62 C8.25,1.64 11.87,1.88 12,1.88 C12.17,1.88 15.75,1.65 15.75,5.62 C15.75,5.62 15.75,9 15.75,9 " android:valueTo="M8.25 5.82 C8.25,5.82 8.25,5.62 8.25,5.62 C8.25,1.64 11.87,1.88 12,1.88 C12.17,1.88 15.75,1.65 15.75,5.62 C15.75,5.62 15.76,6.07 15.76,6.07 " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="117" android:startOffset="150" android:valueFrom="M8.25 5.82 C8.25,5.82 8.25,5.62 8.25,5.62 C8.25,1.64 11.87,1.88 12,1.88 C12.17,1.88 15.75,1.65 15.75,5.62 C15.75,5.62 15.76,6.07 15.76,6.07 " android:valueTo="M8.25 8.75 C8.25,8.75 8.25,5.62 8.25,5.62 C8.25,1.64 11.87,1.88 12,1.88 C12.17,1.88 15.75,1.65 15.75,5.62 C15.75,5.62 15.75,9 15.75,9 " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateXY" android:duration="150" android:startOffset="0" android:propertyXName="translateX" android:propertyYName="translateY" android:pathData="M 12,12C 12,12.42409592866898 12,14.545 12,14.545"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateXY" android:duration="117" android:startOffset="150" android:propertyXName="translateX" android:propertyYName="translateY" android:pathData="M 12,14.545C 12,14.545 12,12.42409592866898 12,12"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_N_3_T_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="scaleX" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="717" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_to_error.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_to_error.xml
new file mode 100644
index 0000000..ad9daba
--- /dev/null
+++ b/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_to_error.xml
@@ -0,0 +1,18 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="24dp" android:width="24dp" android:viewportHeight="24" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_2_G" android:pivotX="12" android:pivotY="15.001" android:rotation="0"><path android:name="_R_G_L_2_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="1.5" android:strokeAlpha="1" android:pathData=" M17.75 21.25 C17.75,21.25 6.25,21.25 6.25,21.25 C5.42,21.25 4.75,20.58 4.75,19.75 C4.75,19.75 4.75,10.25 4.75,10.25 C4.75,9.42 5.42,8.75 6.25,8.75 C6.25,8.75 17.75,8.75 17.75,8.75 C18.58,8.75 19.25,9.42 19.25,10.25 C19.25,10.25 19.25,19.75 19.25,19.75 C19.25,20.58 18.58,21.25 17.75,21.25c "/></group><group android:name="_R_G_L_1_G_N_3_T_0" android:pivotX="12" android:pivotY="15.001" android:rotation="0"><group android:name="_R_G_L_1_G"><path android:name="_R_G_L_1_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="1.5" android:strokeAlpha="1" android:pathData=" M12 17 C11.91,17 10,17.12 10,15 C10,12.88 11.93,13 12,13 C12.09,13 14,12.88 14,15 C14,17.12 12.07,17 12,17c "/></group></group><group android:name="_R_G_L_0_G_N_3_T_0" android:pivotX="12" android:pivotY="15.001" android:rotation="0"><group android:name="_R_G_L_0_G"><path android:name="_R_G_L_0_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="1.5" android:strokeAlpha="1" android:pathData=" M8.25 8.75 C8.25,8.75 8.25,5.62 8.25,5.62 C8.25,1.64 11.87,1.88 12,1.88 C12.17,1.88 15.75,1.65 15.75,5.62 C15.75,5.62 15.75,9 15.75,9 "/></group></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_2_G"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="rotation" android:duration="117" android:startOffset="0" android:valueFrom="0" android:valueTo="-10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.465,0 0.558,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="117" android:valueFrom="-10" android:valueTo="10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.51,0 0.531,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="217" android:valueFrom="10" android:valueTo="-5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.469,0 0.599,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="167" android:startOffset="317" android:valueFrom="-5" android:valueTo="0" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.384,0 0.565,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G_N_3_T_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="rotation" android:duration="117" android:startOffset="0" android:valueFrom="0" android:valueTo="-10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.465,0 0.558,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="117" android:valueFrom="-10" android:valueTo="10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.51,0 0.531,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="217" android:valueFrom="10" android:valueTo="-5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.469,0 0.599,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="167" android:startOffset="317" android:valueFrom="-5" android:valueTo="0" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.384,0 0.565,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_N_3_T_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="rotation" android:duration="117" android:startOffset="0" android:valueFrom="0" android:valueTo="-10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.465,0 0.558,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="117" android:valueFrom="-10" android:valueTo="10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.51,0 0.531,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="217" android:valueFrom="10" android:valueTo="-5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.469,0 0.599,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="167" android:startOffset="317" android:valueFrom="-5" android:valueTo="0" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.384,0 0.565,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="717" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_unlock.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_unlock.xml
new file mode 100644
index 0000000..abca59b
--- /dev/null
+++ b/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_unlock.xml
@@ -0,0 +1,296 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:aapt="http://schemas.android.com/aapt">
+    <aapt:attr name="android:drawable">
+        <vector
+            android:width="24dp"
+            android:height="32dp"
+            android:viewportWidth="24"
+            android:viewportHeight="32">
+            <group android:name="_R_G">
+                <group
+                    android:name="_R_G_L_2_G_T_1"
+                    android:translateX="12"
+                    android:translateY="19.001">
+                    <group
+                        android:name="_R_G_L_2_G"
+                        android:translateX="-12"
+                        android:translateY="-15.001">
+                        <path
+                            android:name="_R_G_L_2_G_D_0_P_0"
+                            android:pathData=" M17.75 21.25 C17.75,21.25 6.25,21.25 6.25,21.25 C5.42,21.25 4.75,20.58 4.75,19.75 C4.75,19.75 4.75,10.25 4.75,10.25 C4.75,9.42 5.42,8.75 6.25,8.75 C6.25,8.75 17.75,8.75 17.75,8.75 C18.58,8.75 19.25,9.42 19.25,10.25 C19.25,10.25 19.25,19.75 19.25,19.75 C19.25,20.58 18.58,21.25 17.75,21.25c "
+                            android:strokeWidth="1.5"
+                            android:strokeAlpha="1"
+                            android:strokeColor="#000000" />
+                    </group>
+                </group>
+                <group
+                    android:name="_R_G_L_1_G_N_4_T_1"
+                    android:translateX="12"
+                    android:translateY="19.001">
+                    <group
+                        android:name="_R_G_L_1_G_N_4_T_0"
+                        android:translateX="-12"
+                        android:translateY="-15.001">
+                        <group
+                            android:name="_R_G_L_1_G"
+                            android:pivotX="11.903"
+                            android:pivotY="14.897"
+                            android:scaleX="1"
+                            android:scaleY="1">
+                            <path
+                                android:name="_R_G_L_1_G_D_0_P_0"
+                                android:pathData=" M12 17 C11.91,17 10,17.12 10,15 C10,12.88 11.93,13 12,13 C12.09,13 14,12.88 14,15 C14,17.12 12.07,17 12,17c "
+                                android:strokeWidth="1.5"
+                                android:strokeAlpha="1"
+                                android:strokeColor="#000000" />
+                        </group>
+                    </group>
+                </group>
+                <group
+                    android:name="_R_G_L_0_G_N_4_T_1"
+                    android:translateX="12"
+                    android:translateY="19.001">
+                    <group
+                        android:name="_R_G_L_0_G_N_4_T_0"
+                        android:translateX="-12"
+                        android:translateY="-15.001">
+                        <group android:name="_R_G_L_0_G">
+                            <path
+                                android:name="_R_G_L_0_G_D_0_P_0"
+                                android:pathData=" M8.25 8.75 C8.25,8.75 8.25,5.62 8.25,5.62 C8.25,1.64 11.87,1.88 12,1.88 C12.17,1.88 15.75,1.65 15.75,5.62 C15.75,5.62 15.75,9 15.75,9 "
+                                android:strokeWidth="1.5"
+                                android:strokeAlpha="1"
+                                android:strokeColor="#000000" />
+                        </group>
+                    </group>
+                </group>
+            </group>
+            <group android:name="time_group" />
+        </vector>
+    </aapt:attr>
+    <target android:name="_R_G_L_2_G_T_1">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="133"
+                    android:propertyName="translateY"
+                    android:startOffset="0"
+                    android:valueFrom="19.001"
+                    android:valueTo="17.5"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="133"
+                    android:propertyName="translateY"
+                    android:startOffset="133"
+                    android:valueFrom="17.5"
+                    android:valueTo="20"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="100"
+                    android:propertyName="translateY"
+                    android:startOffset="267"
+                    android:valueFrom="20"
+                    android:valueTo="19.001"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="_R_G_L_1_G">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="100"
+                    android:propertyName="scaleX"
+                    android:startOffset="0"
+                    android:valueFrom="1"
+                    android:valueTo="0.8200000000000001"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.418,0 0.565,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="100"
+                    android:propertyName="scaleY"
+                    android:startOffset="0"
+                    android:valueFrom="1"
+                    android:valueTo="0.8200000000000001"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.418,0 0.565,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="283"
+                    android:propertyName="scaleX"
+                    android:startOffset="100"
+                    android:valueFrom="0.8200000000000001"
+                    android:valueTo="1"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.535,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="283"
+                    android:propertyName="scaleY"
+                    android:startOffset="100"
+                    android:valueFrom="0.8200000000000001"
+                    android:valueTo="1"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.535,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="_R_G_L_1_G_N_4_T_1">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="133"
+                    android:propertyName="translateY"
+                    android:startOffset="0"
+                    android:valueFrom="19.001"
+                    android:valueTo="17.5"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="133"
+                    android:propertyName="translateY"
+                    android:startOffset="133"
+                    android:valueFrom="17.5"
+                    android:valueTo="20"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="100"
+                    android:propertyName="translateY"
+                    android:startOffset="267"
+                    android:valueFrom="20"
+                    android:valueTo="19.001"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="_R_G_L_0_G_D_0_P_0">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="67"
+                    android:propertyName="pathData"
+                    android:startOffset="0"
+                    android:valueFrom="M8.25 8.75 C8.25,8.75 8.25,5.62 8.25,5.62 C8.25,1.64 11.87,1.88 12,1.88 C12.17,1.88 15.75,1.65 15.75,5.62 C15.75,5.62 15.75,9 15.75,9 "
+                    android:valueTo="M8.25 3.59 C8.25,3.59 8.25,2.75 8.25,2.75 C8.25,-1.23 11.87,-1 12,-1 C12.17,-1 15.75,-1.23 15.75,2.75 C15.75,2.75 15.75,9 15.75,9 "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="333"
+                    android:propertyName="pathData"
+                    android:startOffset="67"
+                    android:valueFrom="M8.25 3.59 C8.25,3.59 8.25,2.75 8.25,2.75 C8.25,-1.23 11.87,-1 12,-1 C12.17,-1 15.75,-1.23 15.75,2.75 C15.75,2.75 15.75,9 15.75,9 "
+                    android:valueTo="M22.13 5.86 C22.13,5.86 22.13,5.62 22.13,5.62 C22.13,1.31 18.12,1.83 18.25,1.83 C18.42,1.83 14.75,1.64 14.75,5.62 C14.75,5.62 14.75,8.99 14.75,8.99 "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="_R_G_L_0_G_N_4_T_1">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="133"
+                    android:propertyName="translateY"
+                    android:startOffset="0"
+                    android:valueFrom="19.001"
+                    android:valueTo="17.5"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="133"
+                    android:propertyName="translateY"
+                    android:startOffset="133"
+                    android:valueFrom="17.5"
+                    android:valueTo="20"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+                <objectAnimator
+                    android:duration="100"
+                    android:propertyName="translateY"
+                    android:startOffset="267"
+                    android:valueFrom="20"
+                    android:valueTo="19.001"
+                    android:valueType="floatType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="time_group">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="733"
+                    android:propertyName="translateX"
+                    android:startOffset="0"
+                    android:valueFrom="0"
+                    android:valueTo="1"
+                    android:valueType="floatType" />
+            </set>
+        </aapt:attr>
+    </target>
+</animated-vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_brightness_thumb.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_brightness_thumb.xml
new file mode 100644
index 0000000..372059e
--- /dev/null
+++ b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_brightness_thumb.xml
@@ -0,0 +1,20 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="?android:attr/colorBackgroundFloating" android:pathData="M18.72,9.53C18.58,9.39,18.5,9.2,18.5,9V5.5H15c-0.2,0-0.39-0.08-0.53-0.22L12,2.81L9.53,5.28 C9.39,5.42,9.2,5.5,9,5.5H5.5V9c0,0.2-0.08,0.39-0.22,0.53L2.81,12l2.47,2.47C5.42,14.61,5.5,14.8,5.5,15v3.5H9 c0.2,0,0.39,0.08,0.53,0.22L12,21.19l2.47-2.47c0.14-0.14,0.33-0.22,0.53-0.22h3.5V15c0-0.2,0.08-0.39,0.22-0.53L21.19,12 L18.72,9.53z M12,17c-2.76,0-5-2.24-5-5s2.24-5,5-5s5,2.24,5,5S14.76,17,12,17z"/>
+  <path android:fillColor="?android:attr/colorControlActivated" android:pathData="M22.78,11.47L20,8.69V4.75C20,4.34,19.66,4,19.25,4h-3.94l-2.78-2.78c-0.29-0.29-0.77-0.29-1.06,0L8.69,4H4.75 C4.34,4,4,4.34,4,4.75v3.94l-2.78,2.78c-0.29,0.29-0.29,0.77,0,1.06L4,15.31v3.94C4,19.66,4.34,20,4.75,20h3.94l2.78,2.78 C11.62,22.93,11.81,23,12,23s0.38-0.07,0.53-0.22L15.31,20h3.94c0.41,0,0.75-0.34,0.75-0.75v-3.94l2.78-2.78 C23.07,12.24,23.07,11.76,22.78,11.47z M18.72,14.47C18.58,14.61,18.5,14.8,18.5,15v3.5H15c-0.2,0-0.39,0.08-0.53,0.22L12,21.19 l-2.47-2.47C9.39,18.58,9.2,18.5,9,18.5H5.5V15c0-0.2-0.08-0.39-0.22-0.53L2.81,12l2.47-2.47C5.42,9.39,5.5,9.2,5.5,9V5.5H9 c0.2,0,0.39-0.08,0.53-0.22L12,2.81l2.47,2.47C14.61,5.42,14.8,5.5,15,5.5h3.5V9c0,0.2,0.08,0.39,0.22,0.53L21.19,12L18.72,14.47z"/>
+  <path android:fillColor="?android:attr/colorControlActivated" android:pathData="M 12 7 C 14.7614237492 7 17 9.23857625085 17 12 C 17 14.7614237492 14.7614237492 17 12 17 C 9.23857625085 17 7 14.7614237492 7 12 C 7 9.23857625085 9.23857625085 7 12 7 Z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_screenrecord.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_screenrecord.xml
new file mode 100644
index 0000000..a379f9a
--- /dev/null
+++ b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_screenrecord.xml
@@ -0,0 +1,18 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="@android:color/white" android:pathData="M12,16c-2.21,0-4-1.79-4-4c0-2.21,1.79-4,4-4c2.21,0,4,1.79,4,4C16,14.21,14.21,16,12,16z M6.64,4.87 C8.47,3.65,10.66,3.47,12,3.5c1.35-0.03,3.54,0.15,5.36,1.37l1.08-1.08C16.92,2.68,14.83,2,12,2C9.18,2,7.1,2.69,5.57,3.8 L6.64,4.87z M3.5,12c0-2.4,0.55-4.11,1.38-5.36L3.8,5.57C2.52,7.37,2,9.66,2,12c0,2.34,0.51,4.64,1.79,6.44l1.08-1.08 C4.05,16.11,3.5,14.4,3.5,12z M20.5,12c0,2.4-0.55,4.11-1.38,5.36l1.07,1.07c1.28-1.8,1.8-4.09,1.8-6.43 c0-2.34-0.51-4.64-1.79-6.44l-1.08,1.08C19.95,7.88,20.5,9.6,20.5,12z M17.36,19.13c-1.82,1.22-4.02,1.4-5.36,1.37 c-1.35,0.03-3.54-0.15-5.36-1.37l-1.08,1.08C7.08,21.32,9.17,22,12,22c2.82,0,4.9-0.69,6.43-1.8L17.36,19.13z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_screenshot.xml
new file mode 100644
index 0000000..4184a1e
--- /dev/null
+++ b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_screenshot.xml
@@ -0,0 +1,30 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M16.75,1h-9.5C6.01,1 5,2.01 5,3.25v17.5C5,21.99 6.01,23 7.25,23h9.5c1.24,0 2.25,-1.01 2.25,-2.25V3.25C19,2.01 17.99,1 16.75,1zM7.25,2.5h9.5c0.41,0 0.75,0.34 0.75,0.75v1h-11v-1C6.5,2.84 6.84,2.5 7.25,2.5zM17.5,5.75v12.5h-11V5.75H17.5zM16.75,21.5h-9.5c-0.41,0 -0.75,-0.34 -0.75,-0.75v-1h11v1C17.5,21.16 17.16,21.5 16.75,21.5z"/>
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M9.5,11V8.5H12V7H8.75C8.34,7 8,7.34 8,7.75V11H9.5z"/>
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M12,17h3.25c0.41,0 0.75,-0.34 0.75,-0.75V13h-1.5v2.5H12V17z"/>
+</vector>
diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml
new file mode 100644
index 0000000..e5486dd
--- /dev/null
+++ b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml
@@ -0,0 +1,69 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:aapt="http://schemas.android.com/aapt">
+    <aapt:attr name="android:drawable">
+        <vector
+            android:width="24dp"
+            android:height="24dp"
+            android:viewportWidth="24"
+            android:viewportHeight="24">
+            <group android:name="_R_G">
+                <group android:name="_R_G_L_0_G">
+                    <path
+                        android:name="_R_G_L_0_G_D_0_P_0"
+                        android:pathData=" M4.54 15.47 C4.54,15.47 12.01,8 12.01,8 C12.01,8 19.48,15.47 19.48,15.47 "
+                        android:strokeWidth="1.5"
+                        android:strokeAlpha="1"
+                        android:strokeColor="#000000" />
+                </group>
+            </group>
+            <group android:name="time_group" />
+        </vector>
+    </aapt:attr>
+    <target android:name="_R_G_L_0_G_D_0_P_0">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="250"
+                    android:propertyName="pathData"
+                    android:startOffset="0"
+                    android:valueFrom="M4.54 15.47 C4.54,15.47 12.01,8 12.01,8 C12.01,8 19.48,15.47 19.48,15.47 "
+                    android:valueTo="M4.53 8.44 C4.53,8.44 11.98,16 11.98,16 C11.98,16 19.48,8.44 19.48,8.44 "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.4,0 0.2,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="time_group">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="267"
+                    android:propertyName="translateX"
+                    android:startOffset="0"
+                    android:valueFrom="0"
+                    android:valueTo="1"
+                    android:valueType="floatType" />
+            </set>
+        </aapt:attr>
+    </target>
+</animated-vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml
new file mode 100644
index 0000000..e9dc04f
--- /dev/null
+++ b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml
@@ -0,0 +1,69 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:aapt="http://schemas.android.com/aapt">
+    <aapt:attr name="android:drawable">
+        <vector
+            android:width="24dp"
+            android:height="24dp"
+            android:viewportWidth="24"
+            android:viewportHeight="24">
+            <group android:name="_R_G">
+                <group android:name="_R_G_L_0_G">
+                    <path
+                        android:name="_R_G_L_0_G_D_0_P_0"
+                        android:pathData=" M4.53 8.44 C4.53,8.44 11.98,16 11.98,16 C11.98,16 19.48,8.44 19.48,8.44 "
+                        android:strokeWidth="1.5"
+                        android:strokeAlpha="1"
+                        android:strokeColor="#000000" />
+                </group>
+            </group>
+            <group android:name="time_group" />
+        </vector>
+    </aapt:attr>
+    <target android:name="_R_G_L_0_G_D_0_P_0">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="250"
+                    android:propertyName="pathData"
+                    android:startOffset="0"
+                    android:valueFrom="M4.53 8.44 C4.53,8.44 11.98,16 11.98,16 C11.98,16 19.48,8.44 19.48,8.44 "
+                    android:valueTo="M4.54 15.47 C4.54,15.47 12.01,8 12.01,8 C12.01,8 19.48,15.47 19.48,15.47 "
+                    android:valueType="pathType">
+                    <aapt:attr name="android:interpolator">
+                        <pathInterpolator android:pathData="M 0.0,0.0 c0.4,0 0.2,1 1.0,1.0" />
+                    </aapt:attr>
+                </objectAnimator>
+            </set>
+        </aapt:attr>
+    </target>
+    <target android:name="time_group">
+        <aapt:attr name="android:animation">
+            <set android:ordering="together">
+                <objectAnimator
+                    android:duration="267"
+                    android:propertyName="translateX"
+                    android:startOffset="0"
+                    android:valueFrom="0"
+                    android:valueTo="1"
+                    android:valueType="floatType" />
+            </set>
+        </aapt:attr>
+    </target>
+</animated-vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_screenrecord.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_screenrecord.xml
new file mode 100644
index 0000000..a875a23
--- /dev/null
+++ b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_screenrecord.xml
@@ -0,0 +1,18 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="@android:color/white" android:pathData="M4.13,17.62c-0.25,0-0.5-0.13-0.64-0.35c-1.98-3.2-1.98-7.33,0-10.53c0.22-0.35,0.68-0.46,1.03-0.24 c0.35,0.22,0.46,0.68,0.24,1.03c-1.68,2.72-1.68,6.23,0,8.95c0.22,0.35,0.11,0.81-0.24,1.03C4.4,17.58,4.27,17.62,4.13,17.62z M17.51,4.53c0.22-0.35,0.11-0.81-0.24-1.03c-3.2-1.98-7.33-1.98-10.53,0C6.39,3.71,6.28,4.17,6.49,4.53 c0.22,0.35,0.68,0.46,1.03,0.24c2.72-1.68,6.23-1.68,8.95,0c0.12,0.08,0.26,0.11,0.39,0.11C17.12,4.88,17.36,4.76,17.51,4.53z M17.26,20.51c0.35-0.22,0.46-0.68,0.24-1.03c-0.22-0.35-0.68-0.46-1.03-0.24c-2.72,1.68-6.23,1.68-8.95,0 c-0.35-0.22-0.81-0.11-1.03,0.24c-0.22,0.35-0.11,0.81,0.24,1.03c1.6,0.99,3.43,1.49,5.26,1.49S15.66,21.5,17.26,20.51z M20.51,17.26c1.98-3.2,1.98-7.33,0-10.53c-0.22-0.35-0.68-0.46-1.03-0.24c-0.35,0.22-0.46,0.68-0.24,1.03 c1.68,2.72,1.68,6.23,0,8.95c-0.22,0.35-0.11,0.81,0.24,1.03c0.12,0.08,0.26,0.11,0.39,0.11C20.12,17.62,20.36,17.49,20.51,17.26z M16,12c0-2.21-1.79-4-4-4c-2.21,0-4,1.79-4,4c0,2.21,1.79,4,4,4C14.21,16,16,14.21,16,12z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackSamAndroidOverlay/Android.mk b/packages/overlays/IconPackSamAndroidOverlay/Android.mk
new file mode 100644
index 0000000..3a65af1
--- /dev/null
+++ b/packages/overlays/IconPackSamAndroidOverlay/Android.mk
@@ -0,0 +1,28 @@
+#
+#  Copyright (C) 2020, The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_RRO_THEME := IconPackSamAndroid
+
+LOCAL_PRODUCT_MODULE := true
+
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
+
+LOCAL_PACKAGE_NAME := IconPackSamAndroidOverlay
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_RRO_PACKAGE)
diff --git a/packages/overlays/IconPackSamAndroidOverlay/AndroidManifest.xml b/packages/overlays/IconPackSamAndroidOverlay/AndroidManifest.xml
new file mode 100644
index 0000000..7c5a8a2
--- /dev/null
+++ b/packages/overlays/IconPackSamAndroidOverlay/AndroidManifest.xml
@@ -0,0 +1,22 @@
+<!--
+  ~ Copyright (C) 2020 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.theme.icon_pack.sam.android"
+    android:versionCode="1"
+    android:versionName="1.0">
+    <overlay android:targetPackage="android" android:category="android.theme.customization.icon_pack.android" android:priority="1"/>
+    <application android:label="Sam" android:hasCode="false"/>
+</manifest>
diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_audio_alarm.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_audio_alarm.xml
new file mode 100644
index 0000000..bc271b8
--- /dev/null
+++ b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_audio_alarm.xml
@@ -0,0 +1,31 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:tint="?android:attr/colorControlNormal"
+        android:viewportWidth="24"
+        android:viewportHeight="24">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M21.18,5.01l-3.07,-2.56c-0.42,-0.35 -1.05,-0.3 -1.41,0.13v0C16.34,3 16.4,3.63 16.82,3.99l3.07,2.56c0.42,0.35 1.05,0.3 1.41,-0.13C21.66,6 21.6,5.37 21.18,5.01z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M4.1,6.55l3.07,-2.56C7.6,3.63 7.66,3 7.3,2.58l0,0C6.95,2.15 6.32,2.1 5.9,2.45L2.82,5.01C2.4,5.37 2.34,6 2.7,6.42l0,0C3.05,6.85 3.68,6.9 4.1,6.55z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,4c-4.97,0 -9,4.03 -9,9c0,4.97 4.03,9 9,9s9,-4.03 9,-9C21,8.03 16.97,4 12,4zM15.5,16.5L15.5,16.5c-0.39,0.39 -1.03,0.39 -1.42,0L11.58,14C11.21,13.62 11,13.11 11,12.58V9c0,-0.55 0.45,-1 1,-1s1,0.45 1,1v3.59l2.5,2.49C15.89,15.47 15.89,16.11 15.5,16.5z"/>
+</vector>
diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml
new file mode 100644
index 0000000..c2e4fdf
--- /dev/null
+++ b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml
@@ -0,0 +1,18 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="24dp" android:width="24dp" android:viewportHeight="24" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_0_G"><path android:name="_R_G_L_0_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M6.51 12 C6.51,11.17 5.83,10.5 5.01,10.5 C4.18,10.5 3.51,11.17 3.51,12 C3.51,12.83 4.18,13.5 5.01,13.5 C5.83,13.5 6.51,12.83 6.51,12c "/><path android:name="_R_G_L_0_G_D_1_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M19.01 10.5 C18.18,10.5 17.51,11.17 17.51,12 C17.51,12.83 18.18,13.5 19.01,13.5 C19.83,13.5 20.51,12.83 20.51,12 C20.51,11.17 19.83,10.5 19.01,10.5c "/><path android:name="_R_G_L_0_G_D_2_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M17.01 7.5 C17.01,5.02 14.99,3 12.51,3 C12.51,3 12.01,3 12.01,3 C11.45,3 11.01,3.45 11.01,4 C11.01,4 11.01,12 11.01,12 C11.01,12 12.51,12 12.51,12 C14.99,12 17.01,9.99 17.01,7.5c "/><path android:name="_R_G_L_0_G_D_3_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M17.01 16.5 C17.01,14.02 14.99,12 12.51,12 C12.51,12 11.01,12 11.01,12 C11.01,12 11.01,20 11.01,20 C11.01,20.55 11.45,21 12.01,21 C12.01,21 12.51,21 12.51,21 C14.99,21 17.01,18.99 17.01,16.5c "/><path android:name="_R_G_L_0_G_D_4_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M5.44 6 C5.44,6 11.44,12 11.44,12 "/><path android:name="_R_G_L_0_G_D_5_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M5.44 18 C5.44,18 11.44,12 11.44,12 "/></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="0" android:valueFrom="1" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="233" android:startOffset="17" android:valueFrom="0.5" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="250" android:valueFrom="0.5" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="233" android:startOffset="267" android:valueFrom="1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="500" android:valueFrom="1" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="233" android:startOffset="517" android:valueFrom="0.5" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="750" android:valueFrom="0.5" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_D_1_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="fillAlpha" android:duration="250" android:startOffset="0" android:valueFrom="1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="250" android:valueFrom="1" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="233" android:startOffset="267" android:valueFrom="0.5" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="500" android:valueFrom="0.5" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="233" android:startOffset="517" android:valueFrom="1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="750" android:valueFrom="1" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="1017" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml
new file mode 100644
index 0000000..59b519c
--- /dev/null
+++ b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml
@@ -0,0 +1,18 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="24dp" android:width="24dp" android:viewportHeight="24" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_0_G"><path android:name="_R_G_L_0_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M12 11 C10.9,11 10,11.9 10,13 C10,13.55 10.23,14.05 10.59,14.41 C10.95,14.77 11.45,15 12,15 C12.55,15 13.05,14.77 13.41,14.41 C13.77,14.05 14,13.55 14,13 C14,11.9 13.1,11 12,11c "/><path android:name="_R_G_L_0_G_D_1_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M7.82 15.74 C7.3,14.96 7,14.01 7,13 C7,10.24 9.24,8 12,8 C14.76,8 17,10.24 17,13 C17,14.02 16.7,14.96 16.18,15.75 "/><path android:name="_R_G_L_0_G_D_2_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M4.88 18.5 C3.7,16.98 3,15.07 3,13 C3,8.03 7.03,4 12,4 C16.97,4 21,8.03 21,13 C21,15.07 20.3,16.98 19.12,18.5 "/></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="0" android:valueFrom="1" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="583" android:startOffset="17" android:valueFrom="0.5" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="600" android:valueFrom="0.5" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_D_1_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="strokeAlpha" android:duration="200" android:startOffset="0" android:valueFrom="1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="strokeAlpha" android:duration="17" android:startOffset="200" android:valueFrom="1" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="strokeAlpha" android:duration="583" android:startOffset="217" android:valueFrom="0.5" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="strokeAlpha" android:duration="17" android:startOffset="800" android:valueFrom="0.5" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_D_2_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="strokeAlpha" android:duration="400" android:startOffset="0" android:valueFrom="1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="strokeAlpha" android:duration="17" android:startOffset="400" android:valueFrom="1" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="strokeAlpha" android:duration="583" android:startOffset="417" android:valueFrom="0.5" android:valueTo="0.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="strokeAlpha" android:duration="17" android:startOffset="1000" android:valueFrom="0.5" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="1250" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_screenshot.xml
new file mode 100644
index 0000000..b5d4555
--- /dev/null
+++ b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_screenshot.xml
@@ -0,0 +1,30 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M8.75,11c0.41,0 0.75,-0.34 0.75,-0.75V8.5h1.75C11.66,8.5 12,8.16 12,7.75C12,7.34 11.66,7 11.25,7H9C8.45,7 8,7.45 8,8v2.25C8,10.66 8.34,11 8.75,11z"/>
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M12.75,17H15c0.55,0 1,-0.45 1,-1v-2.25c0,-0.41 -0.34,-0.75 -0.75,-0.75s-0.75,0.34 -0.75,0.75v1.75h-1.75c-0.41,0 -0.75,0.34 -0.75,0.75C12,16.66 12.34,17 12.75,17z"/>
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M16,1H8C6.34,1 5,2.34 5,4v16c0,1.65 1.35,3 3,3h8c1.65,0 3,-1.35 3,-3V4C19,2.34 17.66,1 16,1zM17,18H7V6h10V18z"/>
+</vector>
diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml
new file mode 100644
index 0000000..b3b0f51
--- /dev/null
+++ b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml
@@ -0,0 +1,18 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="24dp" android:width="24dp" android:viewportHeight="24" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_4_G"><path android:name="_R_G_L_4_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M12 4 C8.62,4 5.2,5.18 2.77,7.16 C1.89,7.87 1.73,9.16 2.47,10.03 C2.47,10.03 10.47,19.29 10.47,19.29 C11.27,20.24 12.73,20.24 13.53,19.29 C13.53,19.29 21.54,10.03 21.54,10.03 C22.27,9.16 22.11,7.87 21.23,7.16 C18.8,5.18 15.38,4 12,4c "/></group><group android:name="_R_G_L_3_G"><path android:name="_R_G_L_3_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="0" android:fillType="nonZero" android:pathData=" M12.01 13 C9.91,13 7.91,13.9 6.61,15.4 C6.61,15.4 9.69,19.16 9.69,19.16 C10.89,20.63 13.13,20.63 14.33,19.16 C14.33,19.16 17.41,15.4 17.41,15.4 C16.11,13.9 14.11,13 12.01,13c "/></group><group android:name="_R_G_L_2_G"><path android:name="_R_G_L_2_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="0" android:fillType="nonZero" android:pathData=" M12.01 10 C9.21,10 6.51,11.2 4.81,13.2 C4.81,13.2 9.69,19.16 9.69,19.16 C10.89,20.63 13.13,20.63 14.33,19.16 C14.33,19.16 19.21,13.2 19.21,13.2 C17.51,11.2 14.81,10 12.01,10c "/></group><group android:name="_R_G_L_1_G"><path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="0" android:fillType="nonZero" android:pathData=" M12 7 C8.5,7 5.2,8.5 3,11 C3,11 9.68,19.16 9.68,19.16 C10.88,20.63 13.12,20.63 14.32,19.16 C14.32,19.16 21,11 21,11 C18.8,8.5 15.5,7 12,7c "/></group><group android:name="_R_G_L_0_G"><path android:name="_R_G_L_0_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="0" android:fillType="nonZero" android:pathData=" M12.01 4 C8.63,4 5.21,5.18 2.78,7.16 C1.89,7.87 1.74,9.16 2.47,10.03 C2.47,10.03 10.48,19.29 10.48,19.29 C11.28,20.24 12.74,20.24 13.54,19.29 C13.54,19.29 21.54,10.03 21.54,10.03 C22.27,9.16 22.12,7.87 21.24,7.16 C18.81,5.18 15.39,4 12.01,4c "/></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_3_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="fillAlpha" android:duration="150" android:startOffset="0" android:valueFrom="0" android:valueTo="0" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="150" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_2_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="fillAlpha" android:duration="317" android:startOffset="0" android:valueFrom="0" android:valueTo="0" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="317" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="fillAlpha" android:duration="483" android:startOffset="0" android:valueFrom="0" android:valueTo="0" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="483" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="fillAlpha" android:duration="650" android:startOffset="0" android:valueFrom="0" android:valueTo="0" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="fillAlpha" android:duration="17" android:startOffset="650" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="850" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_work_apps_off.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_work_apps_off.xml
new file mode 100644
index 0000000..0e534e0
--- /dev/null
+++ b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_work_apps_off.xml
@@ -0,0 +1,19 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="32dp" android:viewportHeight="24" android:viewportWidth="24" android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="@android:color/white" android:pathData="M21.81,18.98C21.92,18.67,22,18.35,22,18V9c0-1.66-1.34-3-3-3h-3c0-2.21-1.79-4-4-4c-1.95,0-3.57,1.4-3.92,3.24 L21.81,18.98z M12,4c1.1,0,2,0.9,2,2h-4C10,4.9,10.9,4,12,4z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M20.56,20.55l-17-17c0,0,0,0,0,0L3.45,3.44c-0.39-0.39-1.02-0.39-1.41,0s-0.39,1.02,0,1.41l1.53,1.53 C2.64,6.89,2,7.87,2,9v9c0,1.66,1.34,3,3,3h13.18l0.96,0.96c0.2,0.2,0.45,0.29,0.71,0.29s0.51-0.1,0.71-0.29 C20.94,21.57,20.94,20.94,20.56,20.55C20.56,20.55,20.56,20.55,20.56,20.55z M12,15c-0.83,0-1.5-0.67-1.5-1.5 c0-0.06,0.01-0.11,0.02-0.16l1.65,1.65C12.11,14.99,12.06,15,12,15z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_screenshot.xml
new file mode 100644
index 0000000..b5d4555
--- /dev/null
+++ b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_screenshot.xml
@@ -0,0 +1,30 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M8.75,11c0.41,0 0.75,-0.34 0.75,-0.75V8.5h1.75C11.66,8.5 12,8.16 12,7.75C12,7.34 11.66,7 11.25,7H9C8.45,7 8,7.45 8,8v2.25C8,10.66 8.34,11 8.75,11z"/>
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M12.75,17H15c0.55,0 1,-0.45 1,-1v-2.25c0,-0.41 -0.34,-0.75 -0.75,-0.75s-0.75,0.34 -0.75,0.75v1.75h-1.75c-0.41,0 -0.75,0.34 -0.75,0.75C12,16.66 12.34,17 12.75,17z"/>
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M16,1H8C6.34,1 5,2.34 5,4v16c0,1.65 1.35,3 3,3h8c1.65,0 3,-1.35 3,-3V4C19,2.34 17.66,1 16,1zM17,18H7V6h10V18z"/>
+</vector>
diff --git a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_select.xml b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_select.xml
new file mode 100644
index 0000000..86a15e6
--- /dev/null
+++ b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_select.xml
@@ -0,0 +1,24 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M18.45,14.43l-3.23,-1.61c-0.42,-0.21 -0.88,-0.32 -1.34,-0.32H13.5v-5C13.5,6.67 12.83,6 12,6s-1.5,0.67 -1.5,1.5v9.12c0,0.32 -0.29,0.55 -0.6,0.49l-2.84,-0.6c-0.37,-0.08 -0.76,0.04 -1.03,0.31C5.6,17.26 5.6,17.96 6.04,18.4l3.71,3.71c0.56,0.57 1.33,0.89 2.12,0.89h4.82c1.49,0 2.76,-1.1 2.97,-2.58l0.41,-2.89C20.26,16.26 19.6,15.01 18.45,14.43zM3,8.25c0.41,0 0.75,0.34 0.75,0.75S3.41,9.75 3,9.75S2.25,9.41 2.25,9S2.59,8.25 3,8.25zM6,8.25c0.41,0 0.75,0.34 0.75,0.75S6.41,9.75 6,9.75C5.59,9.75 5.25,9.41 5.25,9S5.59,8.25 6,8.25zM18,8.25c0.41,0 0.75,0.34 0.75,0.75S18.41,9.75 18,9.75S17.25,9.41 17.25,9S17.59,8.25 18,8.25zM21,8.25c0.41,0 0.75,0.34 0.75,0.75S21.41,9.75 21,9.75S20.25,9.41 20.25,9S20.59,8.25 21,8.25zM12,2.25c0.41,0 0.75,0.34 0.75,0.75S12.41,3.75 12,3.75S11.25,3.41 11.25,3S11.59,2.25 12,2.25zM15,2.25c0.41,0 0.75,0.34 0.75,0.75S15.41,3.75 15,3.75S14.25,3.41 14.25,3S14.59,2.25 15,2.25zM3,2.25c0.41,0 0.75,0.34 0.75,0.75S3.41,3.75 3,3.75S2.25,3.41 2.25,3S2.59,2.25 3,2.25zM6,2.25c0.41,0 0.75,0.34 0.75,0.75S6.41,3.75 6,3.75C5.59,3.75 5.25,3.41 5.25,3S5.59,2.25 6,2.25zM9,2.25c0.41,0 0.75,0.34 0.75,0.75S9.41,3.75 9,3.75S8.25,3.41 8.25,3S8.59,2.25 9,2.25zM18,2.25c0.41,0 0.75,0.34 0.75,0.75S18.41,3.75 18,3.75S17.25,3.41 17.25,3S17.59,2.25 18,2.25zM21,2.25c0.41,0 0.75,0.34 0.75,0.75S21.41,3.75 21,3.75S20.25,3.41 20.25,3S20.59,2.25 21,2.25zM3,5.25c0.41,0 0.75,0.34 0.75,0.75c0,0.41 -0.34,0.75 -0.75,0.75S2.25,6.41 2.25,6C2.25,5.59 2.59,5.25 3,5.25zM21,5.25c0.41,0 0.75,0.34 0.75,0.75c0,0.41 -0.34,0.75 -0.75,0.75S20.25,6.41 20.25,6C20.25,5.59 20.59,5.25 21,5.25z"/>
+</vector>
diff --git a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_share.xml b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_share.xml
new file mode 100644
index 0000000..4aaa659
--- /dev/null
+++ b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_share.xml
@@ -0,0 +1,31 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillAlpha="0.24" android:fillColor="#3C00FF" android:pathData="M0,0v24h24V0H0z M22,22H2V2h20V22z" android:strokeAlpha="0.24" android:strokeWidth="1"/>
+  <path android:fillColor="#0081FF" android:pathData="M18,2.1c1.05,0,1.9,0.85,1.9,1.9v16c0,1.05-0.85,1.9-1.9,1.9H6c-1.05,0-1.9-0.85-1.9-1.9V4 c0-1.05,0.85-1.9,1.9-1.9H18 M18,2H6C4.9,2,4,2.9,4,4v16c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2V4C20,2.9,19.1,2,18,2L18,2z"/>
+  <path android:fillColor="#0081FF" android:pathData="M20,4.1c1.05,0,1.9,0.85,1.9,1.9v12c0,1.05-0.85,1.9-1.9,1.9H4c-1.05,0-1.9-0.85-1.9-1.9V6 c0-1.05,0.85-1.9,1.9-1.9H20 M20,4H4C2.9,4,2,4.9,2,6v12c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V6C22,4.9,21.1,4,20,4L20,4z"/>
+  <path android:fillColor="#0081FF" android:pathData="M19,3.1c1.05,0,1.9,0.85,1.9,1.9v14c0,1.05-0.85,1.9-1.9,1.9H5c-1.05,0-1.9-0.85-1.9-1.9V5 c0-1.05,0.85-1.9,1.9-1.9H19 M19,3H5C3.9,3,3,3.9,3,5v14c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V5C21,3.9,20.1,3,19,3L19,3z"/>
+  <path android:fillColor="#0081FF" android:pathData="M12,6.1c3.25,0,5.9,2.65,5.9,5.9s-2.65,5.9-5.9,5.9S6.1,15.25,6.1,12S8.75,6.1,12,6.1 M12,6 c-3.31,0-6,2.69-6,6s2.69,6,6,6c3.31,0,6-2.69,6-6S15.31,6,12,6L12,6z"/>
+  <path android:fillColor="#0081FF" android:pathData="M21.9,2.1v19.8H2.1V2.1H21.9 M22,2H2v20h20V2L22,2z"/>
+  <path android:fillColor="#0081FF" android:pathData="M12,2.1c5.46,0,9.9,4.44,9.9,9.9s-4.44,9.9-9.9,9.9S2.1,17.46,2.1,12S6.54,2.1,12,2.1 M12,2 C6.48,2,2,6.48,2,12s4.48,10,10,10s10-4.48,10-10S17.52,2,12,2L12,2z"/>
+  <path android:pathData="M 2 2 L 22 22" android:strokeColor="#0081FF" android:strokeMiterLimit="10" android:strokeWidth="0.1"/>
+  <path android:pathData="M 22 2 L 2 22" android:strokeColor="#0081FF" android:strokeMiterLimit="10" android:strokeWidth="0.1"/>
+  <path android:pathData="M 18 5 L 6 12" android:strokeColor="#000000" android:strokeMiterLimit="10" android:strokeWidth="2"/>
+  <path android:pathData="M 18 19 L 6 12" android:strokeColor="#000000" android:strokeMiterLimit="10" android:strokeWidth="2"/>
+  <path android:fillColor="@android:color/white" android:pathData="M 18 2 C 19.6568542495 2 21 3.34314575051 21 5 C 21 6.65685424949 19.6568542495 8 18 8 C 16.3431457505 8 15 6.65685424949 15 5 C 15 3.34314575051 16.3431457505 2 18 2 Z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M 18 16 C 19.6568542495 16 21 17.3431457505 21 19 C 21 20.6568542495 19.6568542495 22 18 22 C 16.3431457505 22 15 20.6568542495 15 19 C 15 17.3431457505 16.3431457505 16 18 16 Z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M 6 9 C 7.65685424949 9 9 10.3431457505 9 12 C 9 13.6568542495 7.65685424949 15 6 15 C 4.34314575051 15 3 13.6568542495 3 12 C 3 10.3431457505 4.34314575051 9 6 9 Z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_accessibility_generic.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_accessibility_generic.xml
new file mode 100644
index 0000000..3be42b3
--- /dev/null
+++ b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_accessibility_generic.xml
@@ -0,0 +1,22 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="@android:color/white" android:pathData="M20.75,4.99c-0.14-0.55-0.69-0.87-1.24-0.75C17.13,4.77,14.48,5,12,5S6.87,4.77,4.49,4.24c-0.55-0.12-1.1,0.2-1.24,0.75 c-0.14,0.56,0.2,1.13,0.75,1.26C5.61,6.61,7.35,6.86,9,7v12c0,0.55,0.45,1,1,1s1-0.45,1-1v-4c0-0.55,0.45-1,1-1s1,0.45,1,1v4 c0,0.55,0.45,1,1,1s1-0.45,1-1V7c1.65-0.14,3.39-0.39,4.99-0.75C20.55,6.12,20.89,5.55,20.75,4.99z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M 12 0 C 13.1045694997 0 14 0.895430500338 14 2 C 14 3.10456949966 13.1045694997 4 12 4 C 10.8954305003 4 10 3.10456949966 10 2 C 10 0.895430500338 10.8954305003 0 12 0 Z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M 8 22 C 8.55228474983 22 9 22.4477152502 9 23 C 9 23.5522847498 8.55228474983 24 8 24 C 7.44771525017 24 7 23.5522847498 7 23 C 7 22.4477152502 7.44771525017 22 8 22 Z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M 12 22 C 12.5522847498 22 13 22.4477152502 13 23 C 13 23.5522847498 12.5522847498 24 12 24 C 11.4477152502 24 11 23.5522847498 11 23 C 11 22.4477152502 11.4477152502 22 12 22 Z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M 16 22 C 16.5522847498 22 17 22.4477152502 17 23 C 17 23.5522847498 16.5522847498 24 16 24 C 15.4477152502 24 15 23.5522847498 15 23 C 15 22.4477152502 15.4477152502 22 16 22 Z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_restore.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_restore.xml
new file mode 100644
index 0000000..c41ec18
--- /dev/null
+++ b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_restore.xml
@@ -0,0 +1,19 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="@android:color/white" android:pathData="M13,3c-4.76,0-8.64,3.69-8.97,8.37l-1.12-1.12c-0.39-0.39-1.02-0.39-1.41,0c-0.39,0.39-0.39,1.02,0,1.41l2.08,2.09 c0.78,0.78,2.05,0.78,2.83,0l2.09-2.09c0.39-0.39,0.39-1.02,0-1.41l0,0c-0.39-0.39-1.02-0.39-1.41,0L6.04,11.3 c0.36-3.64,3.5-6.46,7.28-6.29c3.63,0.16,6.63,3.25,6.68,6.88c0.06,3.92-3.09,7.11-7,7.11c-1.61,0-3.1-0.55-4.28-1.47 c-0.4-0.31-0.96-0.28-1.32,0.08c-0.42,0.42-0.39,1.13,0.08,1.5c1.71,1.33,3.91,2.06,6.29,1.87c4.2-0.35,7.67-3.7,8.16-7.88 C22.58,7.63,18.33,3,13,3z M4.69,12.03L4.66,12h0.05C4.7,12.01,4.7,12.02,4.69,12.03z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M13,7c-0.55,0-1,0.45-1,1v3.58c0,0.53,0.21,1.04,0.58,1.41l2.5,2.51c0.39,0.39,1.02,0.39,1.42,0l0,0 c0.39-0.39,0.39-1.02,0-1.42L14,11.59V8C14,7.45,13.55,7,13,7z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_force_stop.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_force_stop.xml
new file mode 100644
index 0000000..f3dd2a1
--- /dev/null
+++ b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_force_stop.xml
@@ -0,0 +1,20 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="@android:color/white" android:pathData="M21.26,18L13.73,4.99c-0.77-1.33-2.69-1.33-3.46,0L2.74,18c-0.77,1.33,0.19,3,1.73,3h15.06C21.07,21,22.03,19.33,21.26,18 z M4.47,19L12,5.99L19.53,19H4.47z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M11,11v3c0,0.55,0.45,1,1,1c0.55,0,1-0.45,1-1v-3c0-0.55-0.45-1-1-1C11.45,10,11,10.45,11,11z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M 12 16 C 12.5522847498 16 13 16.4477152502 13 17 C 13 17.5522847498 12.5522847498 18 12 18 C 11.4477152502 18 11 17.5522847498 11 17 C 11 16.4477152502 11.4477152502 16 12 16 Z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_gestures.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_gestures.xml
new file mode 100644
index 0000000..f992127
--- /dev/null
+++ b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_gestures.xml
@@ -0,0 +1,20 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="@android:color/white" android:pathData="M18,17c-0.55,0-1,0.45-1,1H7V6h10c0,0.55,0.45,1,1,1s1-0.45,1-1V4c0-1.66-1.34-3-3-3H8C6.34,1,5,2.34,5,4v16 c0,1.65,1.35,3,3,3h8c1.65,0,3-1.35,3-3v-2C19,17.45,18.55,17,18,17z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M21.8,8.68l-0.49-0.23c-0.34-0.16-0.61-0.43-0.77-0.77L20.32,7.2c-0.13-0.27-0.51-0.27-0.63,0l-0.23,0.49 c-0.16,0.34-0.43,0.61-0.77,0.77L18.2,8.68c-0.27,0.13-0.27,0.51,0,0.63l0.49,0.23c0.34,0.16,0.61,0.43,0.77,0.77l0.23,0.49 c0.13,0.27,0.51,0.27,0.63,0l0.23-0.49c0.16-0.34,0.43-0.61,0.77-0.77l0.49-0.23C22.07,9.19,22.07,8.81,21.8,8.68z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M19.7,12.53l-0.95-0.45c-0.36-0.17-0.65-0.46-0.82-0.82l-0.45-0.95c-0.19-0.4-0.76-0.4-0.95,0l-0.45,0.95 c-0.17,0.36-0.46,0.65-0.82,0.82l-0.95,0.45c-0.4,0.19-0.4,0.76,0,0.95l0.95,0.45c0.36,0.17,0.65,0.46,0.82,0.82l0.45,0.95 c0.19,0.4,0.76,0.4,0.95,0l0.45-0.95c0.17-0.36,0.46-0.65,0.82-0.82l0.95-0.45C20.1,13.29,20.1,12.71,19.7,12.53z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackSamSystemUIOverlay/Android.mk b/packages/overlays/IconPackSamSystemUIOverlay/Android.mk
new file mode 100644
index 0000000..9f65a4c
--- /dev/null
+++ b/packages/overlays/IconPackSamSystemUIOverlay/Android.mk
@@ -0,0 +1,29 @@
+#
+#  Copyright (C) 2020, The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_RRO_THEME := IconPackSamSystemUI
+
+LOCAL_PRODUCT_MODULE := true
+
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
+
+LOCAL_PACKAGE_NAME := IconPackSamSystemUIOverlay
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_RRO_PACKAGE)
diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_lock.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_lock.xml
new file mode 100644
index 0000000..8d9d0152
--- /dev/null
+++ b/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_lock.xml
@@ -0,0 +1,18 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="32dp" android:width="24dp" android:viewportHeight="32" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_1_G_T_1" android:translateX="12.006" android:translateY="19.001"><group android:name="_R_G_L_1_G" android:translateX="-12.006" android:translateY="-15"><path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c  M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c "/></group></group><group android:name="_R_G_L_0_G_N_3_T_1" android:translateX="12.006" android:translateY="19.001"><group android:name="_R_G_L_0_G_N_3_T_0" android:translateX="-12.006" android:translateY="-15"><group android:name="_R_G_L_0_G"><path android:name="_R_G_L_0_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M14.95 10 C14.95,10 14.95,5.28 14.95,5.28 C14.95,3.35 16.47,1.94 18.39,1.97 C20.41,2.01 21.85,3.13 21.85,5.06 C21.85,5.06 21.85,5.06 21.85,5.06 "/></group></group></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_1_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="450" android:startOffset="0" android:valueFrom=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c " android:valueTo=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="67" android:startOffset="450" android:valueFrom=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c " android:valueTo=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17.37 C10.7,17.37 9.64,16.31 9.64,15 C9.64,13.69 10.7,12.63 12.01,12.63 C13.31,12.63 14.38,13.69 14.38,15 C14.38,16.31 13.31,17.37 12.01,17.37c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="183" android:startOffset="517" android:valueFrom=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17.37 C10.7,17.37 9.64,16.31 9.64,15 C9.64,13.69 10.7,12.63 12.01,12.63 C13.31,12.63 14.38,13.69 14.38,15 C14.38,16.31 13.31,17.37 12.01,17.37c " android:valueTo=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateY" android:duration="400" android:startOffset="0" android:valueFrom="19.001" android:valueTo="19.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="67" android:startOffset="400" android:valueFrom="19.001" android:valueTo="20.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="83" android:startOffset="467" android:valueFrom="20.5" android:valueTo="19.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="317" android:startOffset="0" android:valueFrom="M14.95 10 C14.95,10 14.95,5.28 14.95,5.28 C14.95,3.35 16.47,1.94 18.39,1.97 C20.41,2.01 21.85,3.13 21.85,5.06 C21.85,5.06 21.85,5.06 21.85,5.06 " android:valueTo="M15.54 10 C15.54,10 15.54,2.5 15.54,2.5 C15.54,0.57 13.97,-1 12.04,-1 C10.11,-1 8.54,0.57 8.54,2.5 C8.54,2.5 8.54,3.38 8.54,3.38 " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="133" android:startOffset="317" android:valueFrom="M15.54 10 C15.54,10 15.54,2.5 15.54,2.5 C15.54,0.57 13.97,-1 12.04,-1 C10.11,-1 8.54,0.57 8.54,2.5 C8.54,2.5 8.54,3.38 8.54,3.38 " android:valueTo="M15.54 10 C15.54,10 15.54,5.5 15.54,5.5 C15.54,3.57 13.97,2 12.04,2 C10.11,2 8.54,3.57 8.54,5.5 C8.54,5.5 8.54,10 8.54,10 " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_N_3_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateY" android:duration="400" android:startOffset="0" android:valueFrom="19.001" android:valueTo="19.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="67" android:startOffset="400" android:valueFrom="19.001" android:valueTo="20.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="83" android:startOffset="467" android:valueFrom="20.5" android:valueTo="19.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="767" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_scanning.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_scanning.xml
new file mode 100644
index 0000000..27564a0
--- /dev/null
+++ b/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_scanning.xml
@@ -0,0 +1,18 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="32dp" android:width="24dp" android:viewportHeight="32" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_1_G" android:translateY="4.001000000000001" android:pivotX="12.006" android:pivotY="15" android:scaleX="1" android:scaleY="1"><path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c  M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c "/></group><group android:name="_R_G_L_0_G_N_3_T_0" android:translateY="4.001000000000001" android:pivotX="12.006" android:pivotY="15" android:scaleX="1" android:scaleY="1"><group android:name="_R_G_L_0_G_T_1" android:translateX="12" android:translateY="12"><group android:name="_R_G_L_0_G" android:translateX="-12" android:translateY="-12"><path android:name="_R_G_L_0_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M15.54 10 C15.54,10 15.54,5.5 15.54,5.5 C15.54,3.57 13.97,2 12.04,2 C10.11,2 8.54,3.57 8.54,5.5 C8.54,5.5 8.54,10 8.54,10 "/></group></group></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_1_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="67" android:startOffset="0" android:valueFrom=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c " android:valueTo=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="117" android:startOffset="67" android:valueFrom=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c " android:valueTo=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 16.32 C11.28,16.32 10.69,15.73 10.69,15 C10.69,14.27 11.28,13.69 12.01,13.69 C12.73,13.69 13.32,14.27 13.32,15 C13.32,15.73 12.73,16.32 12.01,16.32c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="333" android:startOffset="183" android:valueFrom=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 16.32 C11.28,16.32 10.69,15.73 10.69,15 C10.69,14.27 11.28,13.69 12.01,13.69 C12.73,13.69 13.32,14.27 13.32,15 C13.32,15.73 12.73,16.32 12.01,16.32c " android:valueTo=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="scaleX" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="150" android:startOffset="0" android:valueFrom="M15.54 10 C15.54,10 15.54,5.5 15.54,5.5 C15.54,3.57 13.97,2 12.04,2 C10.11,2 8.54,3.57 8.54,5.5 C8.54,5.5 8.54,10 8.54,10 " android:valueTo="M15.55 7.75 C15.55,7.75 15.54,5.5 15.54,5.5 C15.54,3.57 13.97,2 12.04,2 C10.11,2 8.54,3.57 8.54,5.5 C8.54,5.5 8.55,7.75 8.55,7.75 " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="117" android:startOffset="150" android:valueFrom="M15.55 7.75 C15.55,7.75 15.54,5.5 15.54,5.5 C15.54,3.57 13.97,2 12.04,2 C10.11,2 8.54,3.57 8.54,5.5 C8.54,5.5 8.55,7.75 8.55,7.75 " android:valueTo="M15.54 10 C15.54,10 15.54,5.5 15.54,5.5 C15.54,3.57 13.97,2 12.04,2 C10.11,2 8.54,3.57 8.54,5.5 C8.54,5.5 8.54,10 8.54,10 " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateXY" android:duration="150" android:startOffset="0" android:propertyXName="translateX" android:propertyYName="translateY" android:pathData="M 12,12C 12,12.41666665673256 12,14.5 12,14.5"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateXY" android:duration="117" android:startOffset="150" android:propertyXName="translateX" android:propertyYName="translateY" android:pathData="M 12,14.5C 12,14.5 12,12.41666665673256 12,12"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_N_3_T_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="scaleX" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="767" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_to_error.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_to_error.xml
new file mode 100644
index 0000000..e3c48aa
--- /dev/null
+++ b/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_to_error.xml
@@ -0,0 +1,18 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="24dp" android:width="24dp" android:viewportHeight="24" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_1_G" android:translateY="0.0009999999999994458" android:pivotX="12.006" android:pivotY="15" android:rotation="0"><path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c  M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c "/></group><group android:name="_R_G_L_0_G_N_3_T_0" android:translateY="0.0009999999999994458" android:pivotX="12.006" android:pivotY="15" android:rotation="0"><group android:name="_R_G_L_0_G"><path android:name="_R_G_L_0_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M15.54 10 C15.54,10 15.54,5.5 15.54,5.5 C15.54,3.57 13.97,2 12.04,2 C10.11,2 8.54,3.57 8.54,5.5 C8.54,5.5 8.54,10 8.54,10 "/></group></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_1_G"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="rotation" android:duration="117" android:startOffset="0" android:valueFrom="0" android:valueTo="-10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.465,0 0.558,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="117" android:valueFrom="-10" android:valueTo="10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.51,0 0.531,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="217" android:valueFrom="10" android:valueTo="-5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.469,0 0.599,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="167" android:startOffset="317" android:valueFrom="-5" android:valueTo="0" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.384,0 0.565,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_N_3_T_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="rotation" android:duration="117" android:startOffset="0" android:valueFrom="0" android:valueTo="-10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.465,0 0.558,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="117" android:valueFrom="-10" android:valueTo="10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.51,0 0.531,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="217" android:valueFrom="10" android:valueTo="-5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.469,0 0.599,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="167" android:startOffset="317" android:valueFrom="-5" android:valueTo="0" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.384,0 0.565,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="767" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_unlock.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_unlock.xml
new file mode 100644
index 0000000..9b97c04
--- /dev/null
+++ b/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_unlock.xml
@@ -0,0 +1,18 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="32dp" android:width="24dp" android:viewportHeight="32" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_1_G_T_1" android:translateX="12.006" android:translateY="19.001"><group android:name="_R_G_L_1_G" android:translateX="-12.006" android:translateY="-15"><path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c  M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c "/></group></group><group android:name="_R_G_L_0_G_N_3_T_1" android:translateX="12.006" android:translateY="19.001"><group android:name="_R_G_L_0_G_N_3_T_0" android:translateX="-12.006" android:translateY="-15"><group android:name="_R_G_L_0_G"><path android:name="_R_G_L_0_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M15.54 10 C15.54,10 15.54,5.5 15.54,5.5 C15.54,3.57 13.97,2 12.04,2 C10.11,2 8.54,3.57 8.54,5.5 C8.54,5.5 8.54,10 8.54,10 "/></group></group></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_1_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="100" android:startOffset="0" android:valueFrom=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c " android:valueTo=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 16.83 C11,16.83 10.18,16.01 10.18,15 C10.18,13.99 11,13.17 12.01,13.17 C13.02,13.17 13.83,13.99 13.83,15 C13.83,16.01 13.02,16.83 12.01,16.83c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="283" android:startOffset="100" android:valueFrom=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 16.83 C11,16.83 10.18,16.01 10.18,15 C10.18,13.99 11,13.17 12.01,13.17 C13.02,13.17 13.83,13.99 13.83,15 C13.83,16.01 13.02,16.83 12.01,16.83c " android:valueTo=" M17.01 8 C17.01,8 7.01,8 7.01,8 C5.36,8 4.01,9.35 4.01,11 C4.01,11 4.01,19 4.01,19 C4.01,20.65 5.36,22 7.01,22 C7.01,22 17.01,22 17.01,22 C18.66,22 20.01,20.65 20.01,19 C20.01,19 20.01,11 20.01,11 C20.01,9.35 18.66,8 17.01,8c M12.01 17 C10.9,17 10.01,16.1 10.01,15 C10.01,13.9 10.9,13 12.01,13 C13.11,13 14.01,13.9 14.01,15 C14.01,16.1 13.11,17 12.01,17c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateY" android:duration="133" android:startOffset="0" android:valueFrom="19.001" android:valueTo="17.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="133" android:startOffset="133" android:valueFrom="17.5" android:valueTo="20" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="100" android:startOffset="267" android:valueFrom="20" android:valueTo="19.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="67" android:startOffset="0" android:valueFrom="M15.54 10 C15.54,10 15.54,5.5 15.54,5.5 C15.54,3.57 13.97,2 12.04,2 C10.11,2 8.54,3.57 8.54,5.5 C8.54,5.5 8.54,10 8.54,10 " android:valueTo="M15.54 10 C15.54,10 15.54,2.5 15.54,2.5 C15.54,0.57 13.97,-1 12.04,-1 C10.11,-1 8.54,0.57 8.54,2.5 C8.54,2.5 8.54,3.38 8.54,3.38 " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="333" android:startOffset="67" android:valueFrom="M15.54 10 C15.54,10 15.54,2.5 15.54,2.5 C15.54,0.57 13.97,-1 12.04,-1 C10.11,-1 8.54,0.57 8.54,2.5 C8.54,2.5 8.54,3.38 8.54,3.38 " android:valueTo="M14.95 10 C14.95,10 14.95,5.28 14.95,5.28 C14.95,3.35 16.47,1.94 18.39,1.97 C20.41,2.01 21.85,3.13 21.85,5.06 C21.85,5.06 21.85,5.06 21.85,5.06 " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_N_3_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateY" android:duration="133" android:startOffset="0" android:valueFrom="19.001" android:valueTo="17.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="133" android:startOffset="133" android:valueFrom="17.5" android:valueTo="20" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="100" android:startOffset="267" android:valueFrom="20" android:valueTo="19.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="767" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_brightness_thumb.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_brightness_thumb.xml
new file mode 100644
index 0000000..681fd3a
--- /dev/null
+++ b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_brightness_thumb.xml
@@ -0,0 +1,20 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="?android:attr/colorBackgroundFloating" android:pathData="M19.77,11.3l-1.48-1.48C18.11,9.63,18,9.38,18,9.11V7c0-0.55-0.45-1-1-1h-2.11c-0.26,0-0.51-0.11-0.7-0.29 l-1.48-1.48c-0.39-0.39-1.02-0.39-1.41,0L9.82,5.71C9.63,5.89,9.38,6,9.11,6H7C6.45,6,6,6.45,6,7v2.11c0,0.26-0.1,0.52-0.29,0.71 L4.23,11.3c-0.39,0.39-0.39,1.02,0,1.41l1.48,1.48C5.89,14.38,6,14.63,6,14.9V17c0,0.55,0.45,1,1,1h2.11c0.26,0,0.52,0.1,0.7,0.29 l1.48,1.48c0.39,0.39,1.02,0.39,1.41,0l1.48-1.48c0.19-0.18,0.44-0.29,0.71-0.29H17c0.55,0,1-0.45,1-1v-2.11 c0-0.26,0.11-0.52,0.29-0.7l1.48-1.48C20.16,12.32,20.16,11.68,19.77,11.3z M12,17c-2.76,0-5-2.24-5-5s2.24-5,5-5s5,2.24,5,5 S14.76,17,12,17z"/>
+  <path android:fillColor="?android:attr/colorControlActivated" android:pathData="M 12 7 C 14.7614237492 7 17 9.23857625085 17 12 C 17 14.7614237492 14.7614237492 17 12 17 C 9.23857625085 17 7 14.7614237492 7 12 C 7 9.23857625085 9.23857625085 7 12 7 Z"/>
+  <path android:fillColor="?android:attr/colorControlActivated" android:pathData="M21.19,9.88l-0.9-0.9C20.1,8.8,20,8.54,20,8.28V7c0-1.66-1.34-3-3-3h-1.28c-0.27,0-0.52-0.11-0.71-0.29l-0.9-0.9 c-1.17-1.17-3.07-1.17-4.24,0l-0.9,0.9C8.79,3.89,8.54,4,8.28,4H7C5.34,4,4,5.34,4,7v1.28c0,0.26-0.11,0.52-0.29,0.7l-0.9,0.9 c-1.17,1.17-1.17,3.07,0,4.24l0.9,0.9C3.89,15.2,4,15.46,4,15.72V17c0,1.66,1.34,3,3,3h1.28c0.27,0,0.52,0.11,0.71,0.29l0.9,0.9 c1.17,1.17,3.07,1.17,4.24,0l0.9-0.9C15.2,20.11,15.46,20,15.72,20H17c1.66,0,3-1.34,3-3v-1.28c0-0.27,0.11-0.52,0.29-0.71 l0.9-0.9C22.36,12.95,22.36,11.05,21.19,9.88z M19.77,12.71l-1.48,1.48c-0.18,0.18-0.29,0.44-0.29,0.7V17c0,0.55-0.45,1-1,1h-2.11 c-0.27,0-0.52,0.11-0.71,0.29l-1.48,1.48c-0.39,0.39-1.02,0.39-1.41,0l-1.48-1.48C9.63,18.1,9.37,18,9.11,18H7c-0.55,0-1-0.45-1-1 v-2.1c0-0.27-0.11-0.52-0.29-0.71l-1.48-1.48c-0.39-0.39-0.39-1.02,0-1.41l1.48-1.48C5.9,9.63,6,9.37,6,9.11V7c0-0.55,0.45-1,1-1 h2.11c0.27,0,0.52-0.11,0.71-0.29l1.48-1.48c0.39-0.39,1.02-0.39,1.41,0l1.48,1.48C14.38,5.89,14.63,6,14.89,6H17 c0.55,0,1,0.45,1,1v2.11c0,0.27,0.11,0.52,0.29,0.71l1.48,1.48C20.16,11.68,20.16,12.32,19.77,12.71z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_screenrecord.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_screenrecord.xml
new file mode 100644
index 0000000..1a7c63c
--- /dev/null
+++ b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_screenrecord.xml
@@ -0,0 +1,18 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="@android:color/white" android:pathData="M12,16c-2.21,0-4-1.79-4-4c0-2.21,1.79-4,4-4c2.21,0,4,1.79,4,4C16,14.21,14.21,16,12,16z M4.7,17.36 c0.48-0.28,0.64-0.89,0.37-1.37c-1.39-2.41-1.42-5.41-0.08-7.84c0.27-0.48,0.09-1.09-0.39-1.36C4.11,6.52,3.5,6.7,3.23,7.18 c-1.67,3.04-1.64,6.8,0.1,9.81c0.19,0.32,0.52,0.5,0.87,0.5C4.37,17.49,4.54,17.45,4.7,17.36z M8.01,5.06 c2.4-1.39,5.41-1.42,7.84-0.08c0.48,0.27,1.09,0.09,1.36-0.39c0.27-0.48,0.09-1.09-0.39-1.36c-3.04-1.67-6.8-1.64-9.81,0.1 C6.53,3.61,6.37,4.22,6.64,4.7c0.19,0.32,0.52,0.5,0.87,0.5C7.68,5.2,7.85,5.16,8.01,5.06z M20.77,16.82 c1.67-3.04,1.64-6.8-0.1-9.81c-0.28-0.48-0.89-0.64-1.37-0.37c-0.48,0.28-0.64,0.89-0.37,1.37c1.39,2.41,1.42,5.41,0.08,7.84 c-0.27,0.48-0.09,1.09,0.39,1.36c0.15,0.08,0.32,0.12,0.48,0.12C20.24,17.33,20.58,17.15,20.77,16.82z M16.99,20.67 c0.48-0.28,0.64-0.89,0.37-1.37c-0.28-0.48-0.89-0.64-1.37-0.37c-2.41,1.39-5.41,1.42-7.84,0.08c-0.48-0.27-1.09-0.09-1.36,0.39 c-0.27,0.48-0.09,1.09,0.39,1.36C8.67,21.59,10.34,22,12,22C13.73,22,15.46,21.55,16.99,20.67z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_screenshot.xml
new file mode 100644
index 0000000..b5d4555
--- /dev/null
+++ b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_screenshot.xml
@@ -0,0 +1,30 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M8.75,11c0.41,0 0.75,-0.34 0.75,-0.75V8.5h1.75C11.66,8.5 12,8.16 12,7.75C12,7.34 11.66,7 11.25,7H9C8.45,7 8,7.45 8,8v2.25C8,10.66 8.34,11 8.75,11z"/>
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M12.75,17H15c0.55,0 1,-0.45 1,-1v-2.25c0,-0.41 -0.34,-0.75 -0.75,-0.75s-0.75,0.34 -0.75,0.75v1.75h-1.75c-0.41,0 -0.75,0.34 -0.75,0.75C12,16.66 12.34,17 12.75,17z"/>
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M16,1H8C6.34,1 5,2.34 5,4v16c0,1.65 1.35,3 3,3h8c1.65,0 3,-1.35 3,-3V4C19,2.34 17.66,1 16,1zM17,18H7V6h10V18z"/>
+</vector>
diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml
new file mode 100644
index 0000000..86ddf7a
--- /dev/null
+++ b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml
@@ -0,0 +1,18 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="24dp" android:width="24dp" android:viewportHeight="24" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_0_G_T_1" android:translateX="12" android:translateY="11.1"><group android:name="_R_G_L_0_G" android:translateX="-12" android:translateY="-12"><path android:name="_R_G_L_0_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M5.27 9.97 C5.27,9.97 10.59,15.27 10.59,15.27 C11.31,16.03 12.66,16.03 13.42,15.27 C13.42,15.27 18.7,9.97 18.7,9.97 "/></group></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="250" android:startOffset="0" android:valueFrom="M5.27 9.97 C5.27,9.97 10.59,15.27 10.59,15.27 C11.31,16.03 12.66,16.03 13.42,15.27 C13.42,15.27 18.7,9.97 18.7,9.97 " android:valueTo="M5.28 14.94 C5.28,14.94 10.59,9.64 10.59,9.64 C11.37,8.86 12.63,8.86 13.41,9.64 C13.41,9.64 18.72,14.94 18.72,14.94 " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.4,0 0.2,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateY" android:duration="250" android:startOffset="0" android:valueFrom="11.1" android:valueTo="12" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.4,0 0.2,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="267" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml
new file mode 100644
index 0000000..8a7766a
--- /dev/null
+++ b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml
@@ -0,0 +1,18 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="24dp" android:width="24dp" android:viewportHeight="24" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_0_G_T_1" android:translateX="12" android:translateY="12"><group android:name="_R_G_L_0_G" android:translateX="-12" android:translateY="-12"><path android:name="_R_G_L_0_G_D_0_P_0" android:strokeColor="#000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M5.28 14.94 C5.28,14.94 10.59,9.64 10.59,9.64 C11.37,8.86 12.63,8.86 13.41,9.64 C13.41,9.64 18.72,14.94 18.72,14.94 "/></group></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="250" android:startOffset="0" android:valueFrom="M5.28 14.94 C5.28,14.94 10.59,9.64 10.59,9.64 C11.37,8.86 12.63,8.86 13.41,9.64 C13.41,9.64 18.72,14.94 18.72,14.94 " android:valueTo="M5.27 9.97 C5.27,9.97 10.59,15.27 10.59,15.27 C11.31,16.03 12.66,16.03 13.42,15.27 C13.42,15.27 18.7,9.97 18.7,9.97 " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.4,0 0.2,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateY" android:duration="250" android:startOffset="0" android:valueFrom="12" android:valueTo="11.1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.4,0 0.2,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="267" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackVictorAndroidOverlay/Android.mk b/packages/overlays/IconPackVictorAndroidOverlay/Android.mk
new file mode 100644
index 0000000..9c900da
--- /dev/null
+++ b/packages/overlays/IconPackVictorAndroidOverlay/Android.mk
@@ -0,0 +1,28 @@
+#
+#  Copyright (C) 2020, The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_RRO_THEME := IconPackVictorAndroid
+
+LOCAL_PRODUCT_MODULE := true
+
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
+
+LOCAL_PACKAGE_NAME := IconPackVictorAndroidOverlay
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_RRO_PACKAGE)
diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_audio_alarm.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_audio_alarm.xml
new file mode 100644
index 0000000..46be781
--- /dev/null
+++ b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_audio_alarm.xml
@@ -0,0 +1,34 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:tint="?android:attr/colorControlNormal"
+        android:viewportWidth="24"
+        android:viewportHeight="24">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12.5,8l-1.5,0l0,5.5l3.54,3.54l1.06,-1.07l-3.1,-3.09z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M2.0575,5.6557l4.6068,-3.8442l0.961,1.1517l-4.6068,3.8442z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M16.3786,2.9637l0.961,-1.1517l4.6068,3.8442l-0.961,1.1517z"/>
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M12,4c-4.97,0 -9,4.03 -9,9s4.03,9 9,9s9,-4.03 9,-9S16.97,4 12,4zM12,20.5c-4.14,0 -7.5,-3.36 -7.5,-7.5S7.86,5.5 12,5.5s7.5,3.36 7.5,7.5S16.14,20.5 12,20.5z"/>
+</vector>
diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_dnd.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_dnd.xml
new file mode 100644
index 0000000..ef71006
--- /dev/null
+++ b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_dnd.xml
@@ -0,0 +1,19 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="17dp" android:viewportHeight="24" android:viewportWidth="24" android:width="17dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="@android:color/white" android:pathData="M 7 11.25 H 17 V 12.75 H 7 V 11.25 Z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2,2,6.48,2,12s4.48,10,10,10s10-4.48,10-10S17.52,2,12,2z M12,20.5c-4.69,0-8.5-3.81-8.5-8.5S7.31,3.5,12,3.5 c4.69,0,8.5,3.81,8.5,8.5S16.69,20.5,12,20.5z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_screenshot.xml
new file mode 100644
index 0000000..cbd22c6
--- /dev/null
+++ b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_screenshot.xml
@@ -0,0 +1,30 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M17.59,1H6.41L5,2.41v19.17L6.41,23h11.17L19,21.59V2.41L17.59,1zM17.5,2.5v1.75h-11V2.5H17.5zM17.5,5.75v12.5h-11V5.75H17.5zM6.5,21.5v-1.75h11v1.75H6.5z"/>
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M9.5,11l0,-2.5l2.5,0l0,-1.5l-4,0l0,4z"/>
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M12,17l4,0l0,-4l-1.5,0l0,2.5l-2.5,0z"/>
+</vector>
diff --git a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_screenshot.xml
new file mode 100644
index 0000000..cbd22c6
--- /dev/null
+++ b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_screenshot.xml
@@ -0,0 +1,30 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M17.59,1H6.41L5,2.41v19.17L6.41,23h11.17L19,21.59V2.41L17.59,1zM17.5,2.5v1.75h-11V2.5H17.5zM17.5,5.75v12.5h-11V5.75H17.5zM6.5,21.5v-1.75h11v1.75H6.5z"/>
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M9.5,11l0,-2.5l2.5,0l0,-1.5l-4,0l0,4z"/>
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M12,17l4,0l0,-4l-1.5,0l0,2.5l-2.5,0z"/>
+</vector>
diff --git a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_select.xml b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_select.xml
new file mode 100644
index 0000000..05597dd
--- /dev/null
+++ b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_select.xml
@@ -0,0 +1,24 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20.25,2.25h1.5v1.5h-1.5V2.25zM18.75,3.75h-1.5v-1.5h1.5V3.75zM15.75,3.75h-1.5v-1.5h1.5V3.75zM12.75,3.75h-1.5v-1.5h1.5V3.75zM9.75,3.75h-1.5v-1.5h1.5V3.75zM6.75,3.75h-1.5v-1.5h1.5V3.75zM2.25,2.25h1.5v1.5h-1.5V2.25zM2.25,5.25h1.5v1.5h-1.5V5.25zM2.25,8.25h1.5v1.5h-1.5V8.25zM18.75,9.75h-1.5v-1.5h1.5V9.75zM6.75,9.75h-1.5v-1.5h1.5V9.75zM20.25,8.25h1.5v1.5h-1.5V8.25zM20.25,5.25h1.5v1.5h-1.5V5.25zM16.07,12.5h-1.94V8.12C14.13,6.95 13.18,6 12,6S9.88,6.95 9.88,8.12v7.9l-3.22,-0.86l-1.82,1.82L10.56,23h8.6l1.57,-7.96L16.07,12.5zM17.92,21.5H11.2l-4.27,-4.49l0.18,-0.18l4.28,1.14V8.12c0,-0.34 0.28,-0.62 0.62,-0.62s0.62,0.28 0.62,0.62V14h3.06l3.35,1.83L17.92,21.5z"/>
+</vector>
diff --git a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_share.xml b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_share.xml
new file mode 100644
index 0000000..2ddb128
--- /dev/null
+++ b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_share.xml
@@ -0,0 +1,31 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillAlpha="0.24" android:fillColor="#3C00FF" android:pathData="M0,0v24h24V0H0z M22,22H2V2h20V22z" android:strokeAlpha="0.24" android:strokeWidth="1"/>
+  <path android:fillColor="#0081FF" android:pathData="M18,2.1c1.05,0,1.9,0.85,1.9,1.9v16c0,1.05-0.85,1.9-1.9,1.9H6c-1.05,0-1.9-0.85-1.9-1.9V4 c0-1.05,0.85-1.9,1.9-1.9H18 M18,2H6C4.9,2,4,2.9,4,4v16c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2V4C20,2.9,19.1,2,18,2L18,2z"/>
+  <path android:fillColor="#0081FF" android:pathData="M20,4.1c1.05,0,1.9,0.85,1.9,1.9v12c0,1.05-0.85,1.9-1.9,1.9H4c-1.05,0-1.9-0.85-1.9-1.9V6 c0-1.05,0.85-1.9,1.9-1.9H20 M20,4H4C2.9,4,2,4.9,2,6v12c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V6C22,4.9,21.1,4,20,4L20,4z"/>
+  <path android:fillColor="#0081FF" android:pathData="M19,3.1c1.05,0,1.9,0.85,1.9,1.9v14c0,1.05-0.85,1.9-1.9,1.9H5c-1.05,0-1.9-0.85-1.9-1.9V5 c0-1.05,0.85-1.9,1.9-1.9H19 M19,3H5C3.9,3,3,3.9,3,5v14c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V5C21,3.9,20.1,3,19,3L19,3z"/>
+  <path android:fillColor="#0081FF" android:pathData="M12,6.1c3.25,0,5.9,2.65,5.9,5.9s-2.65,5.9-5.9,5.9S6.1,15.25,6.1,12S8.75,6.1,12,6.1 M12,6 c-3.31,0-6,2.69-6,6s2.69,6,6,6c3.31,0,6-2.69,6-6S15.31,6,12,6L12,6z"/>
+  <path android:fillColor="#0081FF" android:pathData="M21.9,2.1v19.8H2.1V2.1H21.9 M22,2H2v20h20V2L22,2z"/>
+  <path android:fillColor="#0081FF" android:pathData="M12,2.1c5.46,0,9.9,4.44,9.9,9.9s-4.44,9.9-9.9,9.9S2.1,17.46,2.1,12S6.54,2.1,12,2.1 M12,2 C6.48,2,2,6.48,2,12s4.48,10,10,10s10-4.48,10-10S17.52,2,12,2L12,2z"/>
+  <path android:pathData="M 2 2 L 22 22" android:strokeColor="#0081FF" android:strokeMiterLimit="10" android:strokeWidth="0.1"/>
+  <path android:pathData="M 22 2 L 2 22" android:strokeColor="#0081FF" android:strokeMiterLimit="10" android:strokeWidth="0.1"/>
+  <path android:fillColor="@android:color/white" android:pathData="M18,3.5c0.83,0,1.5,0.67,1.5,1.5S18.83,6.5,18,6.5S16.5,5.83,16.5,5S17.17,3.5,18,3.5 M18,2c-1.66,0-3,1.34-3,3 s1.34,3,3,3s3-1.34,3-3S19.66,2,18,2L18,2z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M18,17.5c0.83,0,1.5,0.67,1.5,1.5s-0.67,1.5-1.5,1.5s-1.5-0.67-1.5-1.5S17.17,17.5,18,17.5 M18,16c-1.66,0-3,1.34-3,3 s1.34,3,3,3s3-1.34,3-3S19.66,16,18,16L18,16z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M6,10.5c0.83,0,1.5,0.67,1.5,1.5S6.83,13.5,6,13.5S4.5,12.83,4.5,12S5.17,10.5,6,10.5 M6,9c-1.66,0-3,1.34-3,3s1.34,3,3,3 s3-1.34,3-3S7.66,9,6,9L6,9z"/>
+  <path android:pathData="M 16.01 6.16 L 8 10.83" android:strokeColor="#000000" android:strokeMiterLimit="10" android:strokeWidth="1.5"/>
+  <path android:pathData="M 16.06 17.87 L 8.19 13.28" android:strokeColor="#000000" android:strokeMiterLimit="10" android:strokeWidth="1.5"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_accessibility_generic.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_accessibility_generic.xml
new file mode 100644
index 0000000..7f80c7d
--- /dev/null
+++ b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_accessibility_generic.xml
@@ -0,0 +1,19 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="@android:color/white" android:pathData="M20.5,4c-2.61,0.7-5.67,1-8.5,1S6.11,4.7,3.5,4L3,6c1.86,0.5,4,0.83,6,1v13h2v-6h2v6h2V7c2-0.17,4.14-0.5,6-1L20.5,4z M12,4c1.1,0,2-0.9,2-2c0-1.1-0.9-2-2-2s-2,0.9-2,2C10,3.1,10.9,4,12,4"/>
+  <path android:fillColor="@android:color/white" android:pathData="M7,24h2v-2H7V24z M11,24h2v-2h-2V24z M15,24h2v-2h-2V24z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml
new file mode 100644
index 0000000..3a6836b
--- /dev/null
+++ b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml
@@ -0,0 +1,19 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="@android:color/white" android:pathData="M 7 11.25 H 17 V 12.75 H 7 V 11.25 Z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2,2,6.48,2,12s4.48,10,10,10s10-4.48,10-10S17.52,2,12,2z M12,20.5c-4.69,0-8.5-3.81-8.5-8.5S7.31,3.5,12,3.5 c4.69,0,8.5,3.81,8.5,8.5S16.69,20.5,12,20.5z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_restore.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_restore.xml
new file mode 100644
index 0000000..c41ec18
--- /dev/null
+++ b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_restore.xml
@@ -0,0 +1,19 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="@android:color/white" android:pathData="M13,3c-4.76,0-8.64,3.69-8.97,8.37l-1.12-1.12c-0.39-0.39-1.02-0.39-1.41,0c-0.39,0.39-0.39,1.02,0,1.41l2.08,2.09 c0.78,0.78,2.05,0.78,2.83,0l2.09-2.09c0.39-0.39,0.39-1.02,0-1.41l0,0c-0.39-0.39-1.02-0.39-1.41,0L6.04,11.3 c0.36-3.64,3.5-6.46,7.28-6.29c3.63,0.16,6.63,3.25,6.68,6.88c0.06,3.92-3.09,7.11-7,7.11c-1.61,0-3.1-0.55-4.28-1.47 c-0.4-0.31-0.96-0.28-1.32,0.08c-0.42,0.42-0.39,1.13,0.08,1.5c1.71,1.33,3.91,2.06,6.29,1.87c4.2-0.35,7.67-3.7,8.16-7.88 C22.58,7.63,18.33,3,13,3z M4.69,12.03L4.66,12h0.05C4.7,12.01,4.7,12.02,4.69,12.03z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M13,7c-0.55,0-1,0.45-1,1v3.58c0,0.53,0.21,1.04,0.58,1.41l2.5,2.51c0.39,0.39,1.02,0.39,1.42,0l0,0 c0.39-0.39,0.39-1.02,0-1.42L14,11.59V8C14,7.45,13.55,7,13,7z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_force_stop.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_force_stop.xml
new file mode 100644
index 0000000..ad873c2
--- /dev/null
+++ b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_force_stop.xml
@@ -0,0 +1,20 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="@android:color/white" android:pathData="M12.65,3.12h-1.3L1.6,19.87L2.25,21h19.5l0.65-1.13L12.65,3.12z M3.55,19.5L12,4.99l8.45,14.51H3.55z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M 11.25 10 H 12.75 V 15 H 11.25 V 10 Z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M 11.25 16.5 H 12.75 V 18 H 11.25 V 16.5 Z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_gestures.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_gestures.xml
new file mode 100644
index 0000000..45a3b24
--- /dev/null
+++ b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_gestures.xml
@@ -0,0 +1,20 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="@android:color/white" android:pathData="M17.5,18.25h-11V5.75h11V7H19V2.41L17.59,1H6.41L5,2.41v19.17L6.41,23h11.17L19,21.59V17h-1.5V18.25z M17.5,2.5v1.75h-11 V2.5H17.5z M6.5,21.5v-1.75h11v1.75H6.5z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M 17.41 10 L 16.59 10 L 15.99 11.99 L 14 12.59 L 14 13.41 L 15.99 14.01 L 16.59 16 L 17.41 16 L 18.01 14.01 L 20 13.41 L 20 12.59 L 18.01 11.99 Z"/>
+  <path android:fillColor="@android:color/white" android:pathData="M 20.78 8.22 L 20.23 7 L 19.77 7 L 19.22 8.22 L 18 8.77 L 18 9.23 L 19.22 9.78 L 19.77 11 L 20.23 11 L 20.78 9.78 L 22 9.23 L 22 8.77 Z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/Android.mk b/packages/overlays/IconPackVictorSystemUIOverlay/Android.mk
new file mode 100644
index 0000000..bd16eed
--- /dev/null
+++ b/packages/overlays/IconPackVictorSystemUIOverlay/Android.mk
@@ -0,0 +1,29 @@
+#
+#  Copyright (C) 2020, The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_RRO_THEME := IconPackVictorSystemUI
+
+LOCAL_PRODUCT_MODULE := true
+
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
+
+LOCAL_PACKAGE_NAME := IconPackVictorSystemUIOverlay
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_RRO_PACKAGE)
diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_lock.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_lock.xml
new file mode 100644
index 0000000..2c2239f
--- /dev/null
+++ b/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_lock.xml
@@ -0,0 +1,18 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="32dp" android:width="24dp" android:viewportHeight="32" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_2_G_N_1_T_0" android:translateX="12" android:translateY="16"><group android:name="_R_G_L_2_G_T_1" android:translateY="3.001"><group android:name="_R_G_L_2_G" android:translateX="-12" android:translateY="-15"><path android:name="_R_G_L_2_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M5.5 8 C5.5,8 4,9.5 4,9.5 C4,9.5 4,20.5 4,20.5 C4,20.5 5.5,22 5.5,22 C5.5,22 18.5,22 18.5,22 C18.5,22 20,20.5 20,20.5 C20,20.5 20,9.5 20,9.5 C20,9.5 18.5,8 18.5,8 C18.5,8 5.5,8 5.5,8c  M18.5 20.5 C18.5,20.5 5.5,20.5 5.5,20.5 C5.5,20.5 5.5,9.5 5.5,9.5 C5.5,9.5 18.5,9.5 18.5,9.5 C18.5,9.5 18.5,20.5 18.5,20.5c "/></group></group></group><group android:name="_R_G_L_1_G_N_5_N_1_T_0" android:translateX="12" android:translateY="16"><group android:name="_R_G_L_1_G_N_5_T_1" android:translateY="3.001"><group android:name="_R_G_L_1_G_N_5_T_0" android:translateX="-12" android:translateY="-15"><group android:name="_R_G_L_1_G" android:pivotX="12" android:pivotY="15" android:scaleX="1" android:scaleY="1"><path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M12 17 C13.1,17 14,16.1 14,15 C14,13.9 13.1,13 12,13 C10.9,13 10,13.9 10,15 C10,16.1 10.9,17 12,17c "/></group></group></group></group><group android:name="_R_G_L_0_G_N_5_N_1_T_0" android:translateX="12" android:translateY="16"><group android:name="_R_G_L_0_G_N_5_T_1" android:translateY="3.001"><group android:name="_R_G_L_0_G_N_5_T_0" android:translateX="-12" android:translateY="-15"><group android:name="_R_G_L_0_G" android:translateY="-0.0009999999999994458"><path android:name="_R_G_L_0_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M21.06 3.52 C21.06,3.52 15.99,3.53 15.99,3.53 C15.99,3.53 16,8 16,8 C16,8 14.5,8 14.5,8 C14.5,8 14.5,3.53 14.5,3.53 C14.5,3.53 15.98,2.02 15.98,2.02 C15.98,2.02 20.94,2.01 20.94,2.01 C20.94,2.01 22.44,3.54 22.44,3.54 C22.44,3.54 22.44,6.15 22.44,6.15 C22.44,6.15 21.04,6.16 21.04,6.16 C21.04,6.16 21.06,3.52 21.06,3.52c "/></group></group></group></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_2_G_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateY" android:duration="400" android:startOffset="0" android:valueFrom="3.001" android:valueTo="3.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="67" android:startOffset="400" android:valueFrom="3.001" android:valueTo="4.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="83" android:startOffset="467" android:valueFrom="4.5" android:valueTo="3.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="scaleX" android:duration="450" android:startOffset="0" android:valueFrom="1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="450" android:startOffset="0" android:valueFrom="1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="67" android:startOffset="450" android:valueFrom="1" android:valueTo="1.1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="67" android:startOffset="450" android:valueFrom="1" android:valueTo="1.1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="183" android:startOffset="517" android:valueFrom="1.1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="183" android:startOffset="517" android:valueFrom="1.1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G_N_5_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateY" android:duration="400" android:startOffset="0" android:valueFrom="3.001" android:valueTo="3.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="67" android:startOffset="400" android:valueFrom="3.001" android:valueTo="4.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="83" android:startOffset="467" android:valueFrom="4.5" android:valueTo="3.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="100" android:startOffset="0" android:valueFrom="M21.06 3.52 C21.06,3.52 15.99,3.53 15.99,3.53 C15.99,3.53 16,8 16,8 C16,8 14.5,8 14.5,8 C14.5,8 14.5,3.53 14.5,3.53 C14.5,3.53 15.98,2.02 15.98,2.02 C15.98,2.02 20.94,2.01 20.94,2.01 C20.94,2.01 22.44,3.54 22.44,3.54 C22.44,3.54 22.44,6.15 22.44,6.15 C22.44,6.15 21.04,6.16 21.04,6.16 C21.04,6.16 21.06,3.52 21.06,3.52c " android:valueTo="M16.25 3.52 C16.25,3.52 15.99,3.53 15.99,3.53 C15.99,3.53 16,8 16,8 C16,8 14.5,8 14.5,8 C14.5,8 14.5,3.53 14.5,3.53 C14.5,3.53 15.68,2 15.68,2 C15.68,2 16.51,2 16.51,2 C16.51,2 17.58,3.53 17.58,3.53 C17.58,3.53 17.62,6.15 17.62,6.15 C17.62,6.15 16.26,6.16 16.26,6.16 C16.26,6.16 16.25,3.52 16.25,3.52c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.833,0.833 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="17" android:startOffset="100" android:valueFrom="M16.25 3.52 C16.25,3.52 15.99,3.53 15.99,3.53 C15.99,3.53 16,8 16,8 C16,8 14.5,8 14.5,8 C14.5,8 14.5,3.53 14.5,3.53 C14.5,3.53 15.68,2 15.68,2 C15.68,2 16.51,2 16.51,2 C16.51,2 17.58,3.53 17.58,3.53 C17.58,3.53 17.62,6.15 17.62,6.15 C17.62,6.15 16.26,6.16 16.26,6.16 C16.26,6.16 16.25,3.52 16.25,3.52c " android:valueTo="M15.98 3.51 C15.98,3.51 14.5,3.53 14.5,3.53 C14.5,3.53 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,3.53 16,3.53 C16,3.53 15.98,2.02 15.98,2.02 C15.98,2.02 14.5,2.01 14.5,2.01 C14.5,2.01 14.48,3.51 14.48,3.51 C14.48,3.51 14.48,6.17 14.48,6.17 C14.48,6.17 15.98,6.17 15.98,6.17 C15.98,6.17 15.98,3.51 15.98,3.51c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="233" android:startOffset="117" android:valueFrom="M15.98 3.51 C15.98,3.51 14.5,3.53 14.5,3.53 C14.5,3.53 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,3.53 16,3.53 C16,3.53 15.98,2.02 15.98,2.02 C15.98,2.02 14.5,2.01 14.5,2.01 C14.5,2.01 14.48,3.51 14.48,3.51 C14.48,3.51 14.48,6.17 14.48,6.17 C14.48,6.17 15.98,6.17 15.98,6.17 C15.98,6.17 15.98,3.51 15.98,3.51c " android:valueTo="M9.5 0.95 C9.5,0.95 14.5,0.95 14.5,0.95 C14.5,0.95 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,0.95 16,0.95 C16,0.95 14.5,-0.55 14.5,-0.55 C14.5,-0.55 9.5,-0.55 9.5,-0.55 C9.5,-0.55 8,0.95 8,0.95 C8,0.95 8,5.05 8,5.05 C8,5.05 9.5,5.05 9.5,5.05 C9.5,5.05 9.5,0.95 9.5,0.95c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="67" android:startOffset="350" android:valueFrom="M9.5 0.95 C9.5,0.95 14.5,0.95 14.5,0.95 C14.5,0.95 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,0.95 16,0.95 C16,0.95 14.5,-0.55 14.5,-0.55 C14.5,-0.55 9.5,-0.55 9.5,-0.55 C9.5,-0.55 8,0.95 8,0.95 C8,0.95 8,5.05 8,5.05 C8,5.05 9.5,5.05 9.5,5.05 C9.5,5.05 9.5,0.95 9.5,0.95c " android:valueTo="M9.5 3.5 C9.5,3.5 14.5,3.5 14.5,3.5 C14.5,3.5 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,3.5 16,3.5 C16,3.5 14.5,2 14.5,2 C14.5,2 9.5,2 9.5,2 C9.5,2 8,3.5 8,3.5 C8,3.5 8,8 8,8 C8,8 9.5,8 9.5,8 C9.5,8 9.5,3.5 9.5,3.5c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_N_5_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateY" android:duration="400" android:startOffset="0" android:valueFrom="3.001" android:valueTo="3.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="67" android:startOffset="400" android:valueFrom="3.001" android:valueTo="4.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="83" android:startOffset="467" android:valueFrom="4.5" android:valueTo="3.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="767" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_scanning.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_scanning.xml
new file mode 100644
index 0000000..64a9f8c
--- /dev/null
+++ b/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_scanning.xml
@@ -0,0 +1,18 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="32dp" android:width="24dp" android:viewportHeight="32" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_2_G" android:translateY="4.001000000000001" android:pivotX="12" android:pivotY="15" android:scaleX="1" android:scaleY="1"><path android:name="_R_G_L_2_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M5.5 8 C5.5,8 4,9.5 4,9.5 C4,9.5 4,20.5 4,20.5 C4,20.5 5.5,22 5.5,22 C5.5,22 18.5,22 18.5,22 C18.5,22 20,20.5 20,20.5 C20,20.5 20,9.5 20,9.5 C20,9.5 18.5,8 18.5,8 C18.5,8 5.5,8 5.5,8c  M18.5 20.5 C18.5,20.5 5.5,20.5 5.5,20.5 C5.5,20.5 5.5,9.5 5.5,9.5 C5.5,9.5 18.5,9.5 18.5,9.5 C18.5,9.5 18.5,20.5 18.5,20.5c "/></group><group android:name="_R_G_L_1_G_N_3_T_0" android:translateY="4.001000000000001" android:pivotX="12" android:pivotY="15" android:scaleX="1" android:scaleY="1"><group android:name="_R_G_L_1_G" android:pivotX="12" android:pivotY="15" android:scaleX="1" android:scaleY="1"><path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M12 17 C13.1,17 14,16.1 14,15 C14,13.9 13.1,13 12,13 C10.9,13 10,13.9 10,15 C10,16.1 10.9,17 12,17c "/></group></group><group android:name="_R_G_L_0_G_N_3_T_0" android:translateY="4.001000000000001" android:pivotX="12" android:pivotY="15" android:scaleX="1" android:scaleY="1"><group android:name="_R_G_L_0_G_T_1" android:translateX="12" android:translateY="12"><group android:name="_R_G_L_0_G" android:translateX="-12" android:translateY="-12"><path android:name="_R_G_L_0_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M9.5 3.5 C9.5,3.5 14.5,3.5 14.5,3.5 C14.5,3.5 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,3.5 16,3.5 C16,3.5 14.5,2 14.5,2 C14.5,2 9.5,2 9.5,2 C9.5,2 8,3.5 8,3.5 C8,3.5 8,8 8,8 C8,8 9.5,8 9.5,8 C9.5,8 9.5,3.5 9.5,3.5c "/></group></group></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_2_G"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="scaleX" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="scaleX" android:duration="67" android:startOffset="0" android:valueFrom="1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="67" android:startOffset="0" android:valueFrom="1" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="117" android:startOffset="67" android:valueFrom="1" android:valueTo="0.6" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="117" android:startOffset="67" android:valueFrom="1" android:valueTo="0.6" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="333" android:startOffset="183" android:valueFrom="0.6" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="333" android:startOffset="183" android:valueFrom="0.6" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G_N_3_T_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="scaleX" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="150" android:startOffset="0" android:valueFrom="M9.5 3.5 C9.5,3.5 14.5,3.5 14.5,3.5 C14.5,3.5 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,3.5 16,3.5 C16,3.5 14.5,2 14.5,2 C14.5,2 9.5,2 9.5,2 C9.5,2 8,3.5 8,3.5 C8,3.5 8,8 8,8 C8,8 9.5,8 9.5,8 C9.5,8 9.5,3.5 9.5,3.5c " android:valueTo="M9.5 3.5 C9.5,3.5 14.5,3.5 14.5,3.5 C14.5,3.5 14.51,6.34 14.51,6.34 C14.51,6.34 16.01,6.34 16.01,6.34 C16.01,6.34 16,3.5 16,3.5 C16,3.5 14.5,2 14.5,2 C14.5,2 9.5,2 9.5,2 C9.5,2 8,3.5 8,3.5 C8,3.5 8.01,6.34 8.01,6.34 C8.01,6.34 9.51,6.34 9.51,6.34 C9.51,6.34 9.5,3.5 9.5,3.5c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="117" android:startOffset="150" android:valueFrom="M9.5 3.5 C9.5,3.5 14.5,3.5 14.5,3.5 C14.5,3.5 14.51,6.34 14.51,6.34 C14.51,6.34 16.01,6.34 16.01,6.34 C16.01,6.34 16,3.5 16,3.5 C16,3.5 14.5,2 14.5,2 C14.5,2 9.5,2 9.5,2 C9.5,2 8,3.5 8,3.5 C8,3.5 8.01,6.34 8.01,6.34 C8.01,6.34 9.51,6.34 9.51,6.34 C9.51,6.34 9.5,3.5 9.5,3.5c " android:valueTo="M9.5 3.5 C9.5,3.5 14.5,3.5 14.5,3.5 C14.5,3.5 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,3.5 16,3.5 C16,3.5 14.5,2 14.5,2 C14.5,2 9.5,2 9.5,2 C9.5,2 8,3.5 8,3.5 C8,3.5 8,8 8,8 C8,8 9.5,8 9.5,8 C9.5,8 9.5,3.5 9.5,3.5c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateXY" android:duration="150" android:startOffset="0" android:propertyXName="translateX" android:propertyYName="translateY" android:pathData="M 12,12C 12,12.42409592866898 12,14.545 12,14.545"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateXY" android:duration="117" android:startOffset="150" android:propertyXName="translateX" android:propertyYName="translateY" android:pathData="M 12,14.545C 12,14.545 12,12.42409592866898 12,12"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_N_3_T_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="scaleX" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="83" android:startOffset="0" android:valueFrom="1" android:valueTo="0.96" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="183" android:startOffset="83" android:valueFrom="0.96" android:valueTo="1.28" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="250" android:startOffset="267" android:valueFrom="1.28" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="767" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_to_error.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_to_error.xml
new file mode 100644
index 0000000..76b1e2d
--- /dev/null
+++ b/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_to_error.xml
@@ -0,0 +1,18 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="24dp" android:width="24dp" android:viewportHeight="24" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_2_G" android:translateY="0.0009999999999994458" android:pivotX="12" android:pivotY="15" android:rotation="0"><path android:name="_R_G_L_2_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M5.5 8 C5.5,8 4,9.5 4,9.5 C4,9.5 4,20.5 4,20.5 C4,20.5 5.5,22 5.5,22 C5.5,22 18.5,22 18.5,22 C18.5,22 20,20.5 20,20.5 C20,20.5 20,9.5 20,9.5 C20,9.5 18.5,8 18.5,8 C18.5,8 5.5,8 5.5,8c  M18.5 20.5 C18.5,20.5 5.5,20.5 5.5,20.5 C5.5,20.5 5.5,9.5 5.5,9.5 C5.5,9.5 18.5,9.5 18.5,9.5 C18.5,9.5 18.5,20.5 18.5,20.5c "/></group><group android:name="_R_G_L_1_G_N_3_T_0" android:translateY="0.0009999999999994458" android:pivotX="12" android:pivotY="15" android:rotation="0"><group android:name="_R_G_L_1_G"><path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M12 17 C13.1,17 14,16.1 14,15 C14,13.9 13.1,13 12,13 C10.9,13 10,13.9 10,15 C10,16.1 10.9,17 12,17c "/></group></group><group android:name="_R_G_L_0_G_N_3_T_0" android:translateY="0.0009999999999994458" android:pivotX="12" android:pivotY="15" android:rotation="0"><group android:name="_R_G_L_0_G" android:translateY="-0.0009999999999994458"><path android:name="_R_G_L_0_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M9.5 3.5 C9.5,3.5 14.5,3.5 14.5,3.5 C14.5,3.5 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,3.5 16,3.5 C16,3.5 14.5,2 14.5,2 C14.5,2 9.5,2 9.5,2 C9.5,2 8,3.5 8,3.5 C8,3.5 8,8 8,8 C8,8 9.5,8 9.5,8 C9.5,8 9.5,3.5 9.5,3.5c "/></group></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_2_G"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="rotation" android:duration="117" android:startOffset="0" android:valueFrom="0" android:valueTo="-10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.465,0 0.558,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="117" android:valueFrom="-10" android:valueTo="10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.51,0 0.531,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="217" android:valueFrom="10" android:valueTo="-5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.469,0 0.599,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="167" android:startOffset="317" android:valueFrom="-5" android:valueTo="0" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.384,0 0.565,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G_N_3_T_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="rotation" android:duration="117" android:startOffset="0" android:valueFrom="0" android:valueTo="-10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.465,0 0.558,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="117" android:valueFrom="-10" android:valueTo="10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.51,0 0.531,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="217" android:valueFrom="10" android:valueTo="-5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.469,0 0.599,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="167" android:startOffset="317" android:valueFrom="-5" android:valueTo="0" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.384,0 0.565,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_N_3_T_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="rotation" android:duration="117" android:startOffset="0" android:valueFrom="0" android:valueTo="-10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.465,0 0.558,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="117" android:valueFrom="-10" android:valueTo="10" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.51,0 0.531,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="100" android:startOffset="217" android:valueFrom="10" android:valueTo="-5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.469,0 0.599,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="rotation" android:duration="167" android:startOffset="317" android:valueFrom="-5" android:valueTo="0" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.384,0 0.565,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="767" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_unlock.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_unlock.xml
new file mode 100644
index 0000000..2d0e4bd
--- /dev/null
+++ b/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_unlock.xml
@@ -0,0 +1,18 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="32dp" android:width="24dp" android:viewportHeight="32" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_2_G_N_1_T_0" android:translateX="12" android:translateY="16"><group android:name="_R_G_L_2_G_T_1" android:translateY="3.001"><group android:name="_R_G_L_2_G" android:translateX="-12" android:translateY="-15"><path android:name="_R_G_L_2_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M5.5 8 C5.5,8 4,9.5 4,9.5 C4,9.5 4,20.5 4,20.5 C4,20.5 5.5,22 5.5,22 C5.5,22 18.5,22 18.5,22 C18.5,22 20,20.5 20,20.5 C20,20.5 20,9.5 20,9.5 C20,9.5 18.5,8 18.5,8 C18.5,8 5.5,8 5.5,8c  M18.5 20.5 C18.5,20.5 5.5,20.5 5.5,20.5 C5.5,20.5 5.5,9.5 5.5,9.5 C5.5,9.5 18.5,9.5 18.5,9.5 C18.5,9.5 18.5,20.5 18.5,20.5c "/></group></group></group><group android:name="_R_G_L_1_G_N_8_N_1_T_0" android:translateX="12" android:translateY="16"><group android:name="_R_G_L_1_G_N_8_T_1" android:translateY="3.001"><group android:name="_R_G_L_1_G_N_8_T_0" android:translateX="-12" android:translateY="-15"><group android:name="_R_G_L_1_G" android:pivotX="12" android:pivotY="15" android:scaleX="1" android:scaleY="1"><path android:name="_R_G_L_1_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M12 17 C13.1,17 14,16.1 14,15 C14,13.9 13.1,13 12,13 C10.9,13 10,13.9 10,15 C10,16.1 10.9,17 12,17c "/></group></group></group></group><group android:name="_R_G_L_0_G_N_8_N_1_T_0" android:translateX="12" android:translateY="16"><group android:name="_R_G_L_0_G_N_8_T_1" android:translateY="3.001"><group android:name="_R_G_L_0_G_N_8_T_0" android:translateX="-12" android:translateY="-15"><group android:name="_R_G_L_0_G" android:translateY="-0.0009999999999994458"><path android:name="_R_G_L_0_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M9.5 3.5 C9.5,3.5 14.5,3.5 14.5,3.5 C14.5,3.5 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,3.5 16,3.5 C16,3.5 14.5,2 14.5,2 C14.5,2 9.5,2 9.5,2 C9.5,2 8,3.5 8,3.5 C8,3.5 8,8 8,8 C8,8 9.5,8 9.5,8 C9.5,8 9.5,3.5 9.5,3.5c "/></group></group></group></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_2_G_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateY" android:duration="133" android:startOffset="0" android:valueFrom="3.001" android:valueTo="1.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="133" android:startOffset="133" android:valueFrom="1.5" android:valueTo="4" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="100" android:startOffset="267" android:valueFrom="4" android:valueTo="3.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="scaleX" android:duration="100" android:startOffset="0" android:valueFrom="1" android:valueTo="0.8200000000000001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="100" android:startOffset="0" android:valueFrom="1" android:valueTo="0.8200000000000001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleX" android:duration="283" android:startOffset="100" android:valueFrom="0.8200000000000001" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="scaleY" android:duration="283" android:startOffset="100" android:valueFrom="0.8200000000000001" android:valueTo="1" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_1_G_N_8_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateY" android:duration="133" android:startOffset="0" android:valueFrom="3.001" android:valueTo="1.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="133" android:startOffset="133" android:valueFrom="1.5" android:valueTo="4" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="100" android:startOffset="267" android:valueFrom="4" android:valueTo="3.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="67" android:startOffset="0" android:valueFrom="M9.5 3.5 C9.5,3.5 14.5,3.5 14.5,3.5 C14.5,3.5 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,3.5 16,3.5 C16,3.5 14.5,2 14.5,2 C14.5,2 9.5,2 9.5,2 C9.5,2 8,3.5 8,3.5 C8,3.5 8,8 8,8 C8,8 9.5,8 9.5,8 C9.5,8 9.5,3.5 9.5,3.5c " android:valueTo="M9.5 0.95 C9.5,0.95 14.5,0.95 14.5,0.95 C14.5,0.95 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,0.95 16,0.95 C16,0.95 14.5,-0.55 14.5,-0.55 C14.5,-0.55 9.5,-0.55 9.5,-0.55 C9.5,-0.55 8,0.95 8,0.95 C8,0.95 8,5.05 8,5.05 C8,5.05 9.5,5.05 9.5,5.05 C9.5,5.05 9.5,0.95 9.5,0.95c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="117" android:startOffset="67" android:valueFrom="M9.5 0.95 C9.5,0.95 14.5,0.95 14.5,0.95 C14.5,0.95 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,0.95 16,0.95 C16,0.95 14.5,-0.55 14.5,-0.55 C14.5,-0.55 9.5,-0.55 9.5,-0.55 C9.5,-0.55 8,0.95 8,0.95 C8,0.95 8,5.05 8,5.05 C8,5.05 9.5,5.05 9.5,5.05 C9.5,5.05 9.5,0.95 9.5,0.95c " android:valueTo="M15.98 3.51 C15.98,3.51 14.5,3.53 14.5,3.53 C14.5,3.53 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,3.53 16,3.53 C16,3.53 15.98,2.02 15.98,2.02 C15.98,2.02 14.5,2.01 14.5,2.01 C14.5,2.01 14.48,3.51 14.48,3.51 C14.48,3.51 14.48,6.17 14.48,6.17 C14.48,6.17 15.98,6.17 15.98,6.17 C15.98,6.17 15.98,3.51 15.98,3.51c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="17" android:startOffset="183" android:valueFrom="M15.98 3.51 C15.98,3.51 14.5,3.53 14.5,3.53 C14.5,3.53 14.5,8 14.5,8 C14.5,8 16,8 16,8 C16,8 16,3.53 16,3.53 C16,3.53 15.98,2.02 15.98,2.02 C15.98,2.02 14.5,2.01 14.5,2.01 C14.5,2.01 14.48,3.51 14.48,3.51 C14.48,3.51 14.48,6.17 14.48,6.17 C14.48,6.17 15.98,6.17 15.98,6.17 C15.98,6.17 15.98,3.51 15.98,3.51c " android:valueTo="M16.25 3.52 C16.25,3.52 15.99,3.53 15.99,3.53 C15.99,3.53 16,8 16,8 C16,8 14.5,8 14.5,8 C14.5,8 14.5,3.53 14.5,3.53 C14.5,3.53 15.68,2 15.68,2 C15.68,2 16.51,2 16.51,2 C16.51,2 17.58,3.53 17.58,3.53 C17.58,3.53 17.62,6.15 17.62,6.15 C17.62,6.15 16.26,6.16 16.26,6.16 C16.26,6.16 16.25,3.52 16.25,3.52c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="pathData" android:duration="183" android:startOffset="200" android:valueFrom="M16.25 3.52 C16.25,3.52 15.99,3.53 15.99,3.53 C15.99,3.53 16,8 16,8 C16,8 14.5,8 14.5,8 C14.5,8 14.5,3.53 14.5,3.53 C14.5,3.53 15.68,2 15.68,2 C15.68,2 16.51,2 16.51,2 C16.51,2 17.58,3.53 17.58,3.53 C17.58,3.53 17.62,6.15 17.62,6.15 C17.62,6.15 16.26,6.16 16.26,6.16 C16.26,6.16 16.25,3.52 16.25,3.52c " android:valueTo="M21.06 3.52 C21.06,3.52 15.99,3.53 15.99,3.53 C15.99,3.53 16,8 16,8 C16,8 14.5,8 14.5,8 C14.5,8 14.5,3.53 14.5,3.53 C14.5,3.53 15.98,2.02 15.98,2.02 C15.98,2.02 20.94,2.01 20.94,2.01 C20.94,2.01 22.44,3.54 22.44,3.54 C22.44,3.54 22.44,6.15 22.44,6.15 C22.44,6.15 21.04,6.16 21.04,6.16 C21.04,6.16 21.06,3.52 21.06,3.52c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="_R_G_L_0_G_N_8_T_1"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateY" android:duration="133" android:startOffset="0" android:valueFrom="3.001" android:valueTo="1.5" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="133" android:startOffset="133" android:valueFrom="1.5" android:valueTo="4" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator><objectAnimator android:propertyName="translateY" android:duration="100" android:startOffset="267" android:valueFrom="4" android:valueTo="3.001" android:valueType="floatType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="767" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_brightness_thumb.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_brightness_thumb.xml
new file mode 100644
index 0000000..4121433
--- /dev/null
+++ b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_brightness_thumb.xml
@@ -0,0 +1,20 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="?android:attr/colorBackgroundFloating" android:pathData="M18.5,9.31V5.5h-3.81L12,2.81L9.31,5.5H5.5v3.81L2.81,12l2.69,2.69v3.81h3.81L12,21.19l2.69-2.69h3.81 v-3.81L21.19,12L18.5,9.31z M12,17c-2.76,0-5-2.24-5-5s2.24-5,5-5s5,2.24,5,5S14.76,17,12,17z"/>
+  <path android:fillColor="?android:attr/colorControlActivated" android:pathData="M20,8.69V4.71L19.29,4h-3.98L12.5,1.19h-1L8.69,4H4.71L4,4.71v3.98L1.19,11.5v1L4,15.31v3.98L4.71,20h3.98l2.81,2.81h1 L15.31,20h3.98L20,19.29v-3.98l2.81-2.81v-1L20,8.69z M18.5,14.69v3.81h-3.81L12,21.19L9.31,18.5H5.5v-3.81L2.81,12L5.5,9.31V5.5 h3.81L12,2.81l2.69,2.69h3.81v3.81L21.19,12L18.5,14.69z"/>
+  <path android:fillColor="?android:attr/colorControlActivated" android:pathData="M 12 7 C 14.7614237492 7 17 9.23857625085 17 12 C 17 14.7614237492 14.7614237492 17 12 17 C 9.23857625085 17 7 14.7614237492 7 12 C 7 9.23857625085 9.23857625085 7 12 7 Z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_screenrecord.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_screenrecord.xml
new file mode 100644
index 0000000..653dfe5
--- /dev/null
+++ b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_screenrecord.xml
@@ -0,0 +1,18 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector android:height="24dp" android:tint="?android:attr/colorControlNormal" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+  <path android:fillColor="@android:color/white" android:pathData="M12,16c-2.21,0-4-1.79-4-4c0-2.21,1.79-4,4-4c2.21,0,4,1.79,4,4C16,14.21,14.21,16,12,16z M6.94,5.18 C8.36,4.13,10.1,3.5,11.99,3.5c1.9,0,3.64,0.63,5.06,1.69l1.07-1.07C16.42,2.8,14.3,2,11.99,2C9.68,2,7.57,2.79,5.88,4.11 L6.94,5.18z M20.48,11.99c0,1.89-0.63,3.63-1.68,5.05l1.07,1.07c1.31-1.69,2.11-3.81,2.11-6.11c0-2.3-0.79-4.41-2.1-6.1l-1.07,1.07 C19.86,8.37,20.48,10.1,20.48,11.99z M3.5,11.99c0-1.89,0.63-3.63,1.68-5.05L4.11,5.88C2.79,7.57,2,9.68,2,11.99 c0,2.31,0.8,4.43,2.12,6.12l1.07-1.07C4.13,15.63,3.5,13.89,3.5,11.99z M17.04,18.8c-1.41,1.05-3.15,1.68-5.05,1.68 c-1.89,0-3.62-0.62-5.03-1.67l-1.07,1.07c1.69,1.31,3.8,2.1,6.1,2.1c2.31,0,4.42-0.79,6.11-2.11L17.04,18.8z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_screenshot.xml
new file mode 100644
index 0000000..cbd22c6
--- /dev/null
+++ b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_screenshot.xml
@@ -0,0 +1,30 @@
+<!--
+   Copyright (C) 2020 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M17.59,1H6.41L5,2.41v19.17L6.41,23h11.17L19,21.59V2.41L17.59,1zM17.5,2.5v1.75h-11V2.5H17.5zM17.5,5.75v12.5h-11V5.75H17.5zM6.5,21.5v-1.75h11v1.75H6.5z"/>
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M9.5,11l0,-2.5l2.5,0l0,-1.5l-4,0l0,4z"/>
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M12,17l4,0l0,-4l-1.5,0l0,2.5l-2.5,0z"/>
+</vector>
diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml
new file mode 100644
index 0000000..e7f7a25
--- /dev/null
+++ b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml
@@ -0,0 +1,18 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="24dp" android:width="24dp" android:viewportHeight="24" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_0_G"><path android:name="_R_G_L_0_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M12.01 14.87 C12.01,14.87 12,14.85 12,14.85 C12,14.85 5.05,7.94 5.05,7.94 C5.05,7.94 3.98,9.03 3.98,9.03 C3.98,9.03 10.98,15.99 10.98,15.99 C10.98,15.99 12.03,16 12.03,16 C12.03,16 13.05,16 13.05,16 C13.05,16 19.98,9.01 19.98,9.01 C19.98,9.01 18.94,7.97 18.94,7.97 C18.94,7.97 12.01,14.87 12.01,14.87c "/></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="250" android:startOffset="0" android:valueFrom="M12.01 14.87 C12.01,14.87 12,14.85 12,14.85 C12,14.85 5.05,7.94 5.05,7.94 C5.05,7.94 3.98,9.03 3.98,9.03 C3.98,9.03 10.98,15.99 10.98,15.99 C10.98,15.99 12.03,16 12.03,16 C12.03,16 13.05,16 13.05,16 C13.05,16 19.98,9.01 19.98,9.01 C19.98,9.01 18.94,7.97 18.94,7.97 C18.94,7.97 12.01,14.87 12.01,14.87c " android:valueTo="M13 8 C13,8 11,8 11,8 C11,8 4,15 4,15 C4,15 5.06,16.06 5.06,16.06 C5.06,16.06 11.76,9.36 11.76,9.36 C11.76,9.36 12,9.12 12,9.12 C12,9.12 12.25,9.37 12.25,9.37 C12.25,9.37 18.94,16.06 18.94,16.06 C18.94,16.06 20,15 20,15 C20,15 13,8 13,8c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.4,0 0.2,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="267" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file
diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml
new file mode 100644
index 0000000..deaaf82
--- /dev/null
+++ b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml
@@ -0,0 +1,18 @@
+<!--
+/**
+ * Copyright (C) 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vector android:height="24dp" android:width="24dp" android:viewportHeight="24" android:viewportWidth="24"><group android:name="_R_G"><group android:name="_R_G_L_0_G"><path android:name="_R_G_L_0_G_D_0_P_0" android:fillColor="#000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M13 8 C13,8 11,8 11,8 C11,8 4,15 4,15 C4,15 5.06,16.06 5.06,16.06 C5.06,16.06 11.76,9.36 11.76,9.36 C11.76,9.36 12,9.12 12,9.12 C12,9.12 12.25,9.37 12.25,9.37 C12.25,9.37 18.94,16.06 18.94,16.06 C18.94,16.06 20,15 20,15 C20,15 13,8 13,8c "/></group></group><group android:name="time_group"/></vector></aapt:attr><target android:name="_R_G_L_0_G_D_0_P_0"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="pathData" android:duration="250" android:startOffset="0" android:valueFrom="M13 8 C13,8 11,8 11,8 C11,8 4,15 4,15 C4,15 5.06,16.06 5.06,16.06 C5.06,16.06 11.76,9.36 11.76,9.36 C11.76,9.36 12,9.12 12,9.12 C12,9.12 12.25,9.37 12.25,9.37 C12.25,9.37 18.94,16.06 18.94,16.06 C18.94,16.06 20,15 20,15 C20,15 13,8 13,8c " android:valueTo="M12.01 14.87 C12.01,14.87 12,14.85 12,14.85 C12,14.85 5.05,7.94 5.05,7.94 C5.05,7.94 3.98,9.03 3.98,9.03 C3.98,9.03 10.98,15.99 10.98,15.99 C10.98,15.99 12.03,16 12.03,16 C12.03,16 13.05,16 13.05,16 C13.05,16 19.98,9.01 19.98,9.01 C19.98,9.01 18.94,7.97 18.94,7.97 C18.94,7.97 12.01,14.87 12.01,14.87c " android:valueType="pathType"><aapt:attr name="android:interpolator"><pathInterpolator android:pathData="M 0.0,0.0 c0.4,0 0.2,1 1.0,1.0"/></aapt:attr></objectAnimator></set></aapt:attr></target><target android:name="time_group"><aapt:attr name="android:animation"><set android:ordering="together"><objectAnimator android:propertyName="translateX" android:duration="267" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/></set></aapt:attr></target></animated-vector>
\ No newline at end of file
diff --git a/packages/overlays/IconShapeHeartOverlay/AndroidManifest.xml b/packages/overlays/IconShapeHeartOverlay/AndroidManifest.xml
index 82bff7d..8fb19df 100644
--- a/packages/overlays/IconShapeHeartOverlay/AndroidManifest.xml
+++ b/packages/overlays/IconShapeHeartOverlay/AndroidManifest.xml
@@ -21,6 +21,7 @@
     android:versionName="1.0">
 <overlay
         android:targetPackage="android"
+        android:targetName="IconShapeCustomization"
         android:category="android.theme.customization.adaptive_icon_shape"
         android:priority="1"/>
 
diff --git a/packages/overlays/IconShapePebbleOverlay/AndroidManifest.xml b/packages/overlays/IconShapePebbleOverlay/AndroidManifest.xml
index d719a97..6842dde 100644
--- a/packages/overlays/IconShapePebbleOverlay/AndroidManifest.xml
+++ b/packages/overlays/IconShapePebbleOverlay/AndroidManifest.xml
@@ -21,6 +21,7 @@
     android:versionName="1.0">
 <overlay
         android:targetPackage="android"
+        android:targetName="IconShapeCustomization"
         android:category="android.theme.customization.adaptive_icon_shape"
         android:priority="1"/>
 
diff --git a/rs/java/android/renderscript/Font.java b/rs/java/android/renderscript/Font.java
index df9d801..e47ec4b 100644
--- a/rs/java/android/renderscript/Font.java
+++ b/rs/java/android/renderscript/Font.java
@@ -19,6 +19,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.res.AssetManager;
 import android.content.res.Resources;
+import android.os.Build;
 import android.os.Environment;
 
 import java.io.File;
@@ -237,7 +238,7 @@
      *
      * Returns default font if no match could be found.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     static public Font create(RenderScript rs, Resources res, String familyName, Style fontStyle, float pointSize) {
         String fileName = getFontFileName(familyName, fontStyle);
         String fontPath = Environment.getRootDirectory().getAbsolutePath();
diff --git a/rs/java/android/renderscript/Mesh.java b/rs/java/android/renderscript/Mesh.java
index 826225a..1a4d1fd 100644
--- a/rs/java/android/renderscript/Mesh.java
+++ b/rs/java/android/renderscript/Mesh.java
@@ -17,6 +17,7 @@
 package android.renderscript;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 import java.util.Vector;
 
@@ -606,7 +607,7 @@
         *              channels are present in the mesh
         *
         **/
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public TriangleMeshBuilder(RenderScript rs, int vtxSize, int flags) {
             mRS = rs;
             mVtxCount = 0;
@@ -663,7 +664,7 @@
         * @return this
         *
         **/
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public TriangleMeshBuilder addVertex(float x, float y) {
             if (mVtxSize != 2) {
                 throw new IllegalStateException("add mistmatch with declared components.");
@@ -769,7 +770,7 @@
         *
         * @return this
         **/
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public TriangleMeshBuilder addTriangle(int idx1, int idx2, int idx3) {
             if((idx1 >= mMaxIndex) || (idx1 < 0) ||
                (idx2 >= mMaxIndex) || (idx2 < 0) ||
@@ -802,7 +803,7 @@
         *                             accessible memory
         *
         **/
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public Mesh create(boolean uploadToBufferObject) {
             Element.Builder b = new Element.Builder(mRS);
             b.add(Element.createVector(mRS,
diff --git a/rs/java/android/renderscript/ProgramStore.java b/rs/java/android/renderscript/ProgramStore.java
index 7e61347..1952b88 100644
--- a/rs/java/android/renderscript/ProgramStore.java
+++ b/rs/java/android/renderscript/ProgramStore.java
@@ -17,6 +17,7 @@
 package android.renderscript;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 
 /**
@@ -308,7 +309,7 @@
     *
     *  @param rs Context to which the program will belong.
     **/
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static ProgramStore BLEND_ALPHA_DEPTH_NONE(RenderScript rs) {
         if(rs.mProgramStore_BLEND_ALPHA_DEPTH_NO_DEPTH == null) {
             ProgramStore.Builder builder = new ProgramStore.Builder(rs);
diff --git a/services/Android.bp b/services/Android.bp
index ef52c2a..f40f7cf 100644
--- a/services/Android.bp
+++ b/services/Android.bp
@@ -83,6 +83,7 @@
         "services.voiceinteraction",
         "services.wifi",
         "service-blobstore",
+        "service-connectivity",
         "service-jobscheduler",
         "android.hidl.base-V1.0-java",
     ],
diff --git a/services/backup/OWNERS b/services/backup/OWNERS
index 7c7e742..3c5268c 100644
--- a/services/backup/OWNERS
+++ b/services/backup/OWNERS
@@ -1,7 +1,6 @@
 # Bug component: 656484
 
 aabhinav@google.com
-alsutton@google.com
 bryanmawhinney@google.com
 jstemmer@google.com
 nathch@google.com
diff --git a/services/core/Android.bp b/services/core/Android.bp
index 776c8f5..4b9d0f1 100644
--- a/services/core/Android.bp
+++ b/services/core/Android.bp
@@ -1,6 +1,7 @@
 filegroup {
     name: "services.core-sources",
     srcs: ["java/**/*.java"],
+    exclude_srcs: [":connectivity-service-srcs"],
     path: "java",
     visibility: ["//frameworks/base/services"],
 }
@@ -132,6 +133,7 @@
         "netd_aidl_interfaces-platform-java",
         "overlayable_policy_aidl-java",
         "SurfaceFlingerProperties",
+        "com.android.sysprop.watchdog",
     ],
 }
 
@@ -176,3 +178,50 @@
     name: "protolog.conf.json.gz",
     src: ":services.core.json.gz",
 }
+
+// TODO: Move connectivity service sources to independent directory.
+filegroup {
+    name: "connectivity-service-srcs",
+    srcs: [
+        "java/com/android/server/ConnectivityService.java",
+        "java/com/android/server/ConnectivityServiceInitializer.java",
+        "java/com/android/server/TestNetworkService.java",
+        "java/com/android/server/connectivity/AutodestructReference.java",
+        "java/com/android/server/connectivity/ConnectivityConstants.java",
+        "java/com/android/server/connectivity/DataConnectionStats.java",
+        "java/com/android/server/connectivity/DefaultNetworkMetrics.java",
+        "java/com/android/server/connectivity/DnsManager.java",
+        "java/com/android/server/connectivity/IpConnectivityEventBuilder.java",
+        "java/com/android/server/connectivity/IpConnectivityMetrics.java",
+        "java/com/android/server/connectivity/KeepaliveTracker.java",
+        "java/com/android/server/connectivity/LingerMonitor.java",
+        "java/com/android/server/connectivity/MockableSystemProperties.java",
+        "java/com/android/server/connectivity/MultipathPolicyTracker.java",
+        "java/com/android/server/connectivity/Nat464Xlat.java",
+        "java/com/android/server/connectivity/NetdEventListenerService.java",
+        "java/com/android/server/connectivity/NetworkAgentInfo.java",
+        "java/com/android/server/connectivity/NetworkDiagnostics.java",
+        "java/com/android/server/connectivity/NetworkNotificationManager.java",
+        "java/com/android/server/connectivity/NetworkRanker.java",
+        "java/com/android/server/connectivity/PermissionMonitor.java",
+        "java/com/android/server/connectivity/ProxyTracker.java",
+        "java/com/android/server/connectivity/TcpKeepaliveController.java",
+        "java/com/android/server/connectivity/Vpn.java",
+        "java/com/android/server/connectivity/VpnIkev2Utils.java",
+        "java/com/android/server/net/LockdownVpnTracker.java",
+    ],
+}
+
+java_library {
+    name: "service-connectivity",
+    srcs: [
+        ":connectivity-service-srcs",
+    ],
+    installable: true,
+    libs: [
+        "android.net.ipsec.ike",
+        "services.core",
+        "services.net",
+        "unsupportedappusage",
+    ],
+}
diff --git a/services/core/java/android/content/pm/PackageManagerInternal.java b/services/core/java/android/content/pm/PackageManagerInternal.java
index b241bd1..ad1986a 100644
--- a/services/core/java/android/content/pm/PackageManagerInternal.java
+++ b/services/core/java/android/content/pm/PackageManagerInternal.java
@@ -69,6 +69,7 @@
     public static final int PACKAGE_WIFI = 13;
     public static final int PACKAGE_COMPANION = 14;
     public static final int PACKAGE_RETAIL_DEMO = 15;
+    public static final int PACKAGE_OVERLAY_CONFIG_SIGNATURE = 16;
 
     @IntDef(flag = true, prefix = "RESOLVE_", value = {
             RESOLVE_NON_BROWSER_ONLY,
diff --git a/services/core/java/com/android/server/BluetoothAirplaneModeListener.java b/services/core/java/com/android/server/BluetoothAirplaneModeListener.java
index 31cd5d5..4d9680c 100644
--- a/services/core/java/com/android/server/BluetoothAirplaneModeListener.java
+++ b/services/core/java/com/android/server/BluetoothAirplaneModeListener.java
@@ -16,22 +16,14 @@
 
 package com.android.server;
 
-import android.bluetooth.BluetoothA2dp;
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothHearingAid;
-import android.bluetooth.BluetoothProfile;
-import android.bluetooth.BluetoothProfile.ServiceListener;
 import android.content.Context;
-import android.content.res.Resources;
 import android.database.ContentObserver;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
 import android.provider.Settings;
 import android.util.Log;
-import android.widget.Toast;
 
-import com.android.internal.R;
 import com.android.internal.annotations.VisibleForTesting;
 
 /**
@@ -53,7 +45,7 @@
 
     private final BluetoothManagerService mBluetoothManager;
     private final BluetoothAirplaneModeHandler mHandler;
-    private AirplaneModeHelper mAirplaneHelper;
+    private BluetoothModeChangeHelper mAirplaneHelper;
 
     @VisibleForTesting int mToastCount = 0;
 
@@ -97,7 +89,7 @@
      * Call after boot complete
      */
     @VisibleForTesting
-    void start(AirplaneModeHelper helper) {
+    void start(BluetoothModeChangeHelper helper) {
         Log.i(TAG, "start");
         mAirplaneHelper = helper;
         mToastCount = mAirplaneHelper.getSettingsInt(TOAST_COUNT);
@@ -141,118 +133,4 @@
         }
         return true;
     }
-
-    /**
-     * Helper class that handles callout and callback methods without
-     * complex logic.
-     */
-    @VisibleForTesting
-    public static class AirplaneModeHelper {
-        private volatile BluetoothA2dp mA2dp;
-        private volatile BluetoothHearingAid mHearingAid;
-        private final BluetoothAdapter mAdapter;
-        private final Context mContext;
-
-        AirplaneModeHelper(Context context) {
-            mAdapter = BluetoothAdapter.getDefaultAdapter();
-            mContext = context;
-
-            mAdapter.getProfileProxy(mContext, mProfileServiceListener, BluetoothProfile.A2DP);
-            mAdapter.getProfileProxy(mContext, mProfileServiceListener,
-                    BluetoothProfile.HEARING_AID);
-        }
-
-        private final ServiceListener mProfileServiceListener = new ServiceListener() {
-            @Override
-            public void onServiceConnected(int profile, BluetoothProfile proxy) {
-                // Setup Bluetooth profile proxies
-                switch (profile) {
-                    case BluetoothProfile.A2DP:
-                        mA2dp = (BluetoothA2dp) proxy;
-                        break;
-                    case BluetoothProfile.HEARING_AID:
-                        mHearingAid = (BluetoothHearingAid) proxy;
-                        break;
-                    default:
-                        break;
-                }
-            }
-
-            @Override
-            public void onServiceDisconnected(int profile) {
-                // Clear Bluetooth profile proxies
-                switch (profile) {
-                    case BluetoothProfile.A2DP:
-                        mA2dp = null;
-                        break;
-                    case BluetoothProfile.HEARING_AID:
-                        mHearingAid = null;
-                        break;
-                    default:
-                        break;
-                }
-            }
-        };
-
-        @VisibleForTesting
-        public boolean isA2dpOrHearingAidConnected() {
-            return isA2dpConnected() || isHearingAidConnected();
-        }
-
-        @VisibleForTesting
-        public boolean isBluetoothOn() {
-            final BluetoothAdapter adapter = mAdapter;
-            if (adapter == null) {
-                return false;
-            }
-            return adapter.getLeState() == BluetoothAdapter.STATE_ON;
-        }
-
-        @VisibleForTesting
-        public boolean isAirplaneModeOn() {
-            return Settings.Global.getInt(mContext.getContentResolver(),
-                    Settings.Global.AIRPLANE_MODE_ON, 0) == 1;
-        }
-
-        @VisibleForTesting
-        public void onAirplaneModeChanged(BluetoothManagerService managerService) {
-            managerService.onAirplaneModeChanged();
-        }
-
-        @VisibleForTesting
-        public int getSettingsInt(String name) {
-            return Settings.Global.getInt(mContext.getContentResolver(),
-                    name, 0);
-        }
-
-        @VisibleForTesting
-        public void setSettingsInt(String name, int value) {
-            Settings.Global.putInt(mContext.getContentResolver(),
-                    name, value);
-        }
-
-        @VisibleForTesting
-        public void showToastMessage() {
-            Resources r = mContext.getResources();
-            final CharSequence text = r.getString(
-                    R.string.bluetooth_airplane_mode_toast, 0);
-            Toast.makeText(mContext, text, Toast.LENGTH_LONG).show();
-        }
-
-        private boolean isA2dpConnected() {
-            final BluetoothA2dp a2dp = mA2dp;
-            if (a2dp == null) {
-                return false;
-            }
-            return a2dp.getConnectedDevices().size() > 0;
-        }
-
-        private boolean isHearingAidConnected() {
-            final BluetoothHearingAid hearingAid = mHearingAid;
-            if (hearingAid == null) {
-                return false;
-            }
-            return hearingAid.getConnectedDevices().size() > 0;
-        }
-    };
 }
diff --git a/services/core/java/com/android/server/BluetoothDeviceConfigListener.java b/services/core/java/com/android/server/BluetoothDeviceConfigListener.java
new file mode 100644
index 0000000..2dcf82f
--- /dev/null
+++ b/services/core/java/com/android/server/BluetoothDeviceConfigListener.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server;
+
+import android.provider.DeviceConfig;
+
+/**
+ * The BluetoothDeviceConfigListener handles system device config change callback and checks
+ * whether we need to inform BluetoothManagerService on this change.
+ *
+ * The information of device config change would not be passed to the BluetoothManagerService
+ * when Bluetooth is on and Bluetooth is in one of the following situations:
+ *   1. Bluetooth A2DP is connected.
+ *   2. Bluetooth Hearing Aid profile is connected.
+ */
+class BluetoothDeviceConfigListener {
+    private static final String TAG = "BluetoothDeviceConfigListener";
+
+    BluetoothManagerService mService;
+
+    BluetoothDeviceConfigListener(BluetoothManagerService service) {
+        mService = service;
+        DeviceConfig.addOnPropertiesChangedListener(
+                DeviceConfig.NAMESPACE_BLUETOOTH,
+                (Runnable r) -> r.run(),
+                mDeviceConfigChangedListener);
+    }
+
+    private final DeviceConfig.OnPropertiesChangedListener mDeviceConfigChangedListener =
+            new DeviceConfig.OnPropertiesChangedListener() {
+                @Override
+                public void onPropertiesChanged(DeviceConfig.Properties properties) {
+                    if (!properties.getNamespace().equals(DeviceConfig.NAMESPACE_BLUETOOTH)) {
+                        return;
+                    }
+                    boolean foundInit = false;
+                    for (String name : properties.getKeyset()) {
+                        if (name.startsWith("INIT_")) {
+                            foundInit = true;
+                            break;
+                        }
+                    }
+                    if (!foundInit) {
+                        return;
+                    }
+                    mService.onInitFlagsChanged();
+                }
+            };
+
+}
diff --git a/services/core/java/com/android/server/BluetoothManagerService.java b/services/core/java/com/android/server/BluetoothManagerService.java
index bb567b4..e919f39 100644
--- a/services/core/java/com/android/server/BluetoothManagerService.java
+++ b/services/core/java/com/android/server/BluetoothManagerService.java
@@ -23,7 +23,9 @@
 import android.app.ActivityManager;
 import android.app.AppGlobals;
 import android.app.AppOpsManager;
+import android.bluetooth.BluetoothA2dp;
 import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothHearingAid;
 import android.bluetooth.BluetoothProfile;
 import android.bluetooth.BluetoothProtoEnums;
 import android.bluetooth.IBluetooth;
@@ -63,7 +65,6 @@
 import android.os.UserManager;
 import android.os.UserManagerInternal;
 import android.os.UserManagerInternal.UserRestrictionsListener;
-import android.provider.DeviceConfig;
 import android.provider.Settings;
 import android.provider.Settings.SettingNotFoundException;
 import android.text.TextUtils;
@@ -116,6 +117,7 @@
     // Delay for retrying enable and disable in msec
     private static final int ENABLE_DISABLE_DELAY_MS = 300;
     private static final int DELAY_BEFORE_RESTART_DUE_TO_INIT_FLAGS_CHANGED_MS = 300;
+    private static final int DELAY_FOR_RETRY_INIT_FLAG_CHECK_MS = 86400;
 
     private static final int MESSAGE_ENABLE = 1;
     private static final int MESSAGE_DISABLE = 2;
@@ -175,8 +177,12 @@
     private int mWaitForEnableRetry;
     private int mWaitForDisableRetry;
 
+    private BluetoothModeChangeHelper mBluetoothModeChangeHelper;
+
     private BluetoothAirplaneModeListener mBluetoothAirplaneModeListener;
 
+    private BluetoothDeviceConfigListener mBluetoothDeviceConfigListener;
+
     // used inside handler thread
     private boolean mQuietEnable = false;
     private boolean mEnable;
@@ -281,29 +287,13 @@
                 }
             };
 
-    private final DeviceConfig.OnPropertiesChangedListener mDeviceConfigChangedListener =
-            new DeviceConfig.OnPropertiesChangedListener() {
-                @Override
-                public void onPropertiesChanged(DeviceConfig.Properties properties) {
-                    if (!properties.getNamespace().equals(DeviceConfig.NAMESPACE_BLUETOOTH)) {
-                        return;
-                    }
-                    boolean foundInit = false;
-                    for (String name : properties.getKeyset()) {
-                        if (name.startsWith("INIT_")) {
-                            foundInit = true;
-                            break;
-                        }
-                    }
-                    if (!foundInit) {
-                        return;
-                    }
-                    mHandler.removeMessages(MESSAGE_INIT_FLAGS_CHANGED);
-                    mHandler.sendEmptyMessageDelayed(
-                            MESSAGE_INIT_FLAGS_CHANGED,
-                            DELAY_BEFORE_RESTART_DUE_TO_INIT_FLAGS_CHANGED_MS);
-                }
-            };
+    @VisibleForTesting
+    public void onInitFlagsChanged() {
+        mHandler.removeMessages(MESSAGE_INIT_FLAGS_CHANGED);
+        mHandler.sendEmptyMessageDelayed(
+                MESSAGE_INIT_FLAGS_CHANGED,
+                DELAY_BEFORE_RESTART_DUE_TO_INIT_FLAGS_CHANGED_MS);
+    }
 
     public boolean onFactoryReset() {
         // Wait for stable state if bluetooth is temporary state.
@@ -451,6 +441,15 @@
                         mHandler.sendMessage(msg);
                     }
                 }
+            } else if (BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED.equals(action)
+                    || BluetoothHearingAid.ACTION_CONNECTION_STATE_CHANGED.equals(action)) {
+                final int state = intent.getIntExtra(BluetoothProfile.EXTRA_STATE,
+                        BluetoothProfile.STATE_CONNECTED);
+                if (mHandler.hasMessages(MESSAGE_INIT_FLAGS_CHANGED)
+                        && state == BluetoothProfile.STATE_DISCONNECTED
+                        && !mBluetoothModeChangeHelper.isA2dpOrHearingAidConnected()) {
+                    onInitFlagsChanged();
+                }
             }
         }
     };
@@ -501,6 +500,8 @@
         filter.addAction(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED);
         filter.addAction(BluetoothAdapter.ACTION_BLUETOOTH_ADDRESS_CHANGED);
         filter.addAction(Intent.ACTION_SETTING_RESTORED);
+        filter.addAction(BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED);
+        filter.addAction(BluetoothHearingAid.ACTION_CONNECTION_STATE_CHANGED);
         filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
         mContext.registerReceiver(mReceiver, filter);
 
@@ -535,10 +536,6 @@
             Slog.w(TAG, "Unable to resolve SystemUI's UID.");
         }
         mSystemUiUid = systemUiUid;
-        DeviceConfig.addOnPropertiesChangedListener(
-                DeviceConfig.NAMESPACE_BLUETOOTH,
-                (Runnable r) -> r.run(),
-                mDeviceConfigChangedListener);
     }
 
     /**
@@ -1368,10 +1365,12 @@
             Message getMsg = mHandler.obtainMessage(MESSAGE_GET_NAME_AND_ADDRESS);
             mHandler.sendMessage(getMsg);
         }
+
+        mBluetoothModeChangeHelper = new BluetoothModeChangeHelper(mContext);
         if (mBluetoothAirplaneModeListener != null) {
-            mBluetoothAirplaneModeListener.start(
-                    new BluetoothAirplaneModeListener.AirplaneModeHelper(mContext));
+            mBluetoothAirplaneModeListener.start(mBluetoothModeChangeHelper);
         }
+        mBluetoothDeviceConfigListener = new BluetoothDeviceConfigListener(this);
     }
 
     /**
@@ -2214,6 +2213,12 @@
                         Slog.d(TAG, "MESSAGE_INIT_FLAGS_CHANGED");
                     }
                     mHandler.removeMessages(MESSAGE_INIT_FLAGS_CHANGED);
+                    if (mBluetoothModeChangeHelper.isA2dpOrHearingAidConnected()) {
+                        mHandler.sendEmptyMessageDelayed(
+                                MESSAGE_INIT_FLAGS_CHANGED,
+                                DELAY_FOR_RETRY_INIT_FLAG_CHECK_MS);
+                        break;
+                    }
                     if (mBluetooth != null && isEnabled()) {
                         restartForReason(
                                 BluetoothProtoEnums.ENABLE_DISABLE_REASON_INIT_FLAGS_CHANGED);
diff --git a/services/core/java/com/android/server/BluetoothModeChangeHelper.java b/services/core/java/com/android/server/BluetoothModeChangeHelper.java
new file mode 100644
index 0000000..242fa84
--- /dev/null
+++ b/services/core/java/com/android/server/BluetoothModeChangeHelper.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server;
+
+import android.bluetooth.BluetoothA2dp;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothHearingAid;
+import android.bluetooth.BluetoothProfile;
+import android.bluetooth.BluetoothProfile.ServiceListener;
+import android.content.Context;
+import android.content.res.Resources;
+import android.provider.Settings;
+import android.widget.Toast;
+
+import com.android.internal.R;
+import com.android.internal.annotations.VisibleForTesting;
+
+/**
+ * Helper class that handles callout and callback methods without
+ * complex logic.
+ */
+public class BluetoothModeChangeHelper {
+    private volatile BluetoothA2dp mA2dp;
+    private volatile BluetoothHearingAid mHearingAid;
+    private final BluetoothAdapter mAdapter;
+    private final Context mContext;
+
+    BluetoothModeChangeHelper(Context context) {
+        mAdapter = BluetoothAdapter.getDefaultAdapter();
+        mContext = context;
+
+        mAdapter.getProfileProxy(mContext, mProfileServiceListener, BluetoothProfile.A2DP);
+        mAdapter.getProfileProxy(mContext, mProfileServiceListener,
+                BluetoothProfile.HEARING_AID);
+    }
+
+    private final ServiceListener mProfileServiceListener = new ServiceListener() {
+        @Override
+        public void onServiceConnected(int profile, BluetoothProfile proxy) {
+            // Setup Bluetooth profile proxies
+            switch (profile) {
+                case BluetoothProfile.A2DP:
+                    mA2dp = (BluetoothA2dp) proxy;
+                    break;
+                case BluetoothProfile.HEARING_AID:
+                    mHearingAid = (BluetoothHearingAid) proxy;
+                    break;
+                default:
+                    break;
+            }
+        }
+
+        @Override
+        public void onServiceDisconnected(int profile) {
+            // Clear Bluetooth profile proxies
+            switch (profile) {
+                case BluetoothProfile.A2DP:
+                    mA2dp = null;
+                    break;
+                case BluetoothProfile.HEARING_AID:
+                    mHearingAid = null;
+                    break;
+                default:
+                    break;
+            }
+        }
+    };
+
+    @VisibleForTesting
+    public boolean isA2dpOrHearingAidConnected() {
+        return isA2dpConnected() || isHearingAidConnected();
+    }
+
+    @VisibleForTesting
+    public boolean isBluetoothOn() {
+        final BluetoothAdapter adapter = mAdapter;
+        if (adapter == null) {
+            return false;
+        }
+        return adapter.getLeState() == BluetoothAdapter.STATE_ON;
+    }
+
+    @VisibleForTesting
+    public boolean isAirplaneModeOn() {
+        return Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.AIRPLANE_MODE_ON, 0) == 1;
+    }
+
+    @VisibleForTesting
+    public void onAirplaneModeChanged(BluetoothManagerService managerService) {
+        managerService.onAirplaneModeChanged();
+    }
+
+    @VisibleForTesting
+    public int getSettingsInt(String name) {
+        return Settings.Global.getInt(mContext.getContentResolver(),
+                name, 0);
+    }
+
+    @VisibleForTesting
+    public void setSettingsInt(String name, int value) {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                name, value);
+    }
+
+    @VisibleForTesting
+    public void showToastMessage() {
+        Resources r = mContext.getResources();
+        final CharSequence text = r.getString(
+                R.string.bluetooth_airplane_mode_toast, 0);
+        Toast.makeText(mContext, text, Toast.LENGTH_LONG).show();
+    }
+
+    private boolean isA2dpConnected() {
+        final BluetoothA2dp a2dp = mA2dp;
+        if (a2dp == null) {
+            return false;
+        }
+        return a2dp.getConnectedDevices().size() > 0;
+    }
+
+    private boolean isHearingAidConnected() {
+        final BluetoothHearingAid hearingAid = mHearingAid;
+        if (hearingAid == null) {
+            return false;
+        }
+        return hearingAid.getConnectedDevices().size() > 0;
+    }
+}
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index 8a1baf2..f056117 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -65,7 +65,6 @@
 import android.annotation.Nullable;
 import android.app.AppOpsManager;
 import android.app.BroadcastOptions;
-import android.app.NotificationManager;
 import android.app.PendingIntent;
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
@@ -156,11 +155,8 @@
 import android.os.PowerManager;
 import android.os.Process;
 import android.os.RemoteException;
-import android.os.ResultReceiver;
 import android.os.ServiceManager;
 import android.os.ServiceSpecificException;
-import android.os.ShellCallback;
-import android.os.ShellCommand;
 import android.os.SystemClock;
 import android.os.SystemProperties;
 import android.os.UserHandle;
@@ -195,6 +191,7 @@
 import com.android.internal.util.LocationPermissionChecker;
 import com.android.internal.util.MessageUtils;
 import com.android.internal.util.XmlUtils;
+import com.android.modules.utils.BasicShellCommandHandler;
 import com.android.server.am.BatteryStatsService;
 import com.android.server.connectivity.AutodestructReference;
 import com.android.server.connectivity.DataConnectionStats;
@@ -932,13 +929,6 @@
         }
 
         /**
-         * @see ServiceManager#checkService(String)
-         */
-        public boolean hasService(@NonNull String name) {
-            return ServiceManager.checkService(name) != null;
-        }
-
-        /**
          * @see IpConnectivityMetrics.Logger
          */
         public IpConnectivityMetrics.Logger getMetricsLogger() {
@@ -1081,7 +1071,8 @@
 
         // Do the same for Ethernet, since it's often not specified in the configs, although many
         // devices can use it via USB host adapters.
-        if (mNetConfigs[TYPE_ETHERNET] == null && mDeps.hasService(Context.ETHERNET_SERVICE)) {
+        if (mNetConfigs[TYPE_ETHERNET] == null
+                && mContext.getSystemService(Context.ETHERNET_SERVICE) != null) {
             mLegacyTypeTracker.addSupportedType(TYPE_ETHERNET);
             mNetworksDefined++;
         }
@@ -1115,24 +1106,26 @@
         intentFilter.addAction(Intent.ACTION_USER_ADDED);
         intentFilter.addAction(Intent.ACTION_USER_REMOVED);
         intentFilter.addAction(Intent.ACTION_USER_UNLOCKED);
-        mContext.registerReceiverAsUser(
+
+        final Context userAllContext = mContext.createContextAsUser(UserHandle.ALL, 0 /* flags */);
+        userAllContext.registerReceiver(
                 mIntentReceiver,
-                UserHandle.ALL,
                 intentFilter,
                 null /* broadcastPermission */,
                 mHandler);
-        mContext.registerReceiverAsUser(mUserPresentReceiver, UserHandle.SYSTEM,
-                new IntentFilter(Intent.ACTION_USER_PRESENT), null, null);
+        mContext.createContextAsUser(UserHandle.SYSTEM, 0 /* flags */).registerReceiver(
+                mUserPresentReceiver,
+                new IntentFilter(Intent.ACTION_USER_PRESENT),
+                null /* broadcastPermission */,
+                null /* scheduler */);
 
         // Listen to package add and removal events for all users.
         intentFilter = new IntentFilter();
-        intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
         intentFilter.addAction(Intent.ACTION_PACKAGE_REPLACED);
         intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
         intentFilter.addDataScheme("package");
-        mContext.registerReceiverAsUser(
+        userAllContext.registerReceiver(
                 mIntentReceiver,
-                UserHandle.ALL,
                 intentFilter,
                 null /* broadcastPermission */,
                 mHandler);
@@ -1140,8 +1133,8 @@
         // Listen to lockdown VPN reset.
         intentFilter = new IntentFilter();
         intentFilter.addAction(LockdownVpnTracker.ACTION_LOCKDOWN_RESET);
-        mContext.registerReceiverAsUser(
-                mIntentReceiver, UserHandle.ALL, intentFilter, NETWORK_STACK, mHandler);
+        userAllContext.registerReceiver(
+                mIntentReceiver, intentFilter, NETWORK_STACK, mHandler);
 
         try {
             mNMS.registerObserver(mDataActivityObserver);
@@ -1156,8 +1149,7 @@
         dataConnectionStats.startMonitoring();
 
         mKeepaliveTracker = new KeepaliveTracker(mContext, mHandler);
-        mNotifier = new NetworkNotificationManager(mContext, mTelephonyManager,
-                mContext.getSystemService(NotificationManager.class));
+        mNotifier = new NetworkNotificationManager(mContext, mTelephonyManager);
 
         final int dailyLimit = Settings.Global.getInt(mContext.getContentResolver(),
                 Settings.Global.NETWORK_SWITCH_NOTIFICATION_DAILY_LIMIT,
@@ -1173,7 +1165,7 @@
 
         mMultipathPolicyTracker = new MultipathPolicyTracker(mContext, mHandler);
 
-        mDnsManager = new DnsManager(mContext, mDnsResolver, mSystemProperties);
+        mDnsManager = new DnsManager(mContext, mDnsResolver);
         registerPrivateDnsSettingsCallbacks();
     }
 
@@ -1925,10 +1917,13 @@
         }
         if (DBG) log("Adding legacy route " + bestRoute +
                 " for UID/PID " + uid + "/" + Binder.getCallingPid());
+
+        final String dst = bestRoute.getDestinationLinkAddress().toString();
+        final String nextHop = bestRoute.hasGateway()
+                ? bestRoute.getGateway().getHostAddress() : "";
         try {
-            mNMS.addLegacyRouteForNetId(netId, bestRoute, uid);
-        } catch (Exception e) {
-            // never crash - catch them all
+            mNetd.networkAddLegacyRoute(netId, bestRoute.getInterface(), dst, nextHop , uid);
+        } catch (RemoteException | ServiceSpecificException e) {
             if (DBG) loge("Exception trying to add a route: " + e);
             return false;
         }
@@ -2304,10 +2299,21 @@
     }
 
     /**
-     * Called when the system is ready and ConnectivityService can initialize remaining components.
+     * Called by SystemServer through ConnectivityManager when the system is ready.
+     */
+    @Override
+    public void systemReady() {
+        if (Binder.getCallingUid() != Process.SYSTEM_UID) {
+            throw new SecurityException("Calling Uid is not system uid.");
+        }
+        systemReadyInternal();
+    }
+
+    /**
+     * Called when ConnectivityService can initialize remaining components.
      */
     @VisibleForTesting
-    public void systemReady() {
+    public void systemReadyInternal() {
         // Let PermissionMonitor#startMonitoring() running in the beginning of the systemReady
         // before MultipathPolicyTracker.start(). Since mApps in PermissionMonitor needs to be
         // populated first to ensure that listening network request which is sent by
@@ -2430,9 +2436,9 @@
 
         try {
             if (VDBG || DDBG) log("Setting MTU size: " + iface + ", " + mtu);
-            mNMS.setMtu(iface, mtu);
-        } catch (Exception e) {
-            Slog.e(TAG, "exception in setMtu()" + e);
+            mNetd.interfaceSetMtu(iface, mtu);
+        } catch (RemoteException | ServiceSpecificException e) {
+            Slog.e(TAG, "exception in interfaceSetMtu()" + e);
         }
     }
 
@@ -2464,12 +2470,11 @@
             loge("Can't set TCP buffer sizes:" + e);
         }
 
-        Integer rwndValue = Settings.Global.getInt(mContext.getContentResolver(),
-            Settings.Global.TCP_DEFAULT_INIT_RWND,
+        final Integer rwndValue = Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.TCP_DEFAULT_INIT_RWND,
                     mSystemProperties.getInt("net.tcp.default_init_rwnd", 0));
-        final String sysctlKey = "sys.sysctl.tcp_def_init_rwnd";
         if (rwndValue != 0) {
-            mSystemProperties.set(sysctlKey, rwndValue.toString());
+            mSystemProperties.setTcpInitRwnd(rwndValue);
         }
     }
 
@@ -2692,10 +2697,16 @@
     /**
      * Return an array of all current NetworkRequest sorted by request id.
      */
-    private NetworkRequestInfo[] requestsSortedById() {
+    @VisibleForTesting
+    protected NetworkRequestInfo[] requestsSortedById() {
         NetworkRequestInfo[] requests = new NetworkRequestInfo[0];
         requests = mNetworkRequests.values().toArray(requests);
-        Arrays.sort(requests, Comparator.comparingInt(nri -> nri.request.requestId));
+        // Sort the array based off the NRI containing the min requestId in its requests.
+        Arrays.sort(requests,
+                Comparator.comparingInt(nri -> Collections.min(nri.mRequests,
+                        Comparator.comparingInt(req -> req.requestId)).requestId
+                )
+        );
         return requests;
     }
 
@@ -2760,6 +2771,7 @@
                         networkCapabilities = new NetworkCapabilities(networkCapabilities);
                         networkCapabilities.restrictCapabilitesForTestNetwork(nai.creatorUid);
                     }
+                    processCapabilitiesFromAgent(nai, networkCapabilities);
                     updateCapabilities(nai.getCurrentScore(), nai, networkCapabilities);
                     break;
                 }
@@ -2798,6 +2810,31 @@
                     mKeepaliveTracker.handleEventSocketKeepalive(nai, msg);
                     break;
                 }
+                case NetworkAgent.EVENT_UNDERLYING_NETWORKS_CHANGED: {
+                    if (!nai.supportsUnderlyingNetworks()) {
+                        Log.wtf(TAG, "Non-virtual networks cannot have underlying networks");
+                        break;
+                    }
+                    final ArrayList<Network> underlying;
+                    try {
+                        underlying = ((Bundle) msg.obj).getParcelableArrayList(
+                                NetworkAgent.UNDERLYING_NETWORKS_KEY);
+                    } catch (NullPointerException | ClassCastException e) {
+                        break;
+                    }
+                    final Network[] oldUnderlying = nai.declaredUnderlyingNetworks;
+                    nai.declaredUnderlyingNetworks = (underlying != null)
+                            ? underlying.toArray(new Network[0]) : null;
+
+                    if (!Arrays.equals(oldUnderlying, nai.declaredUnderlyingNetworks)) {
+                        if (DBG) {
+                            log(nai.toShortString() + " changed underlying networks to "
+                                    + Arrays.toString(nai.declaredUnderlyingNetworks));
+                        }
+                        updateCapabilities(nai.getCurrentScore(), nai, nai.networkCapabilities);
+                        notifyIfacesChangedForNetworkStats();
+                    }
+                }
             }
         }
 
@@ -3383,7 +3420,7 @@
         }
         mLegacyTypeTracker.remove(nai, wasDefault);
         if (!nai.networkCapabilities.hasTransport(TRANSPORT_VPN)) {
-            updateAllVpnsCapabilities();
+            propagateUnderlyingNetworkCapabilities();
         }
         rematchAllNetworksAndRequests();
         mLingerMonitor.noteDisconnect(nai);
@@ -3998,13 +4035,11 @@
                     settingsPkgName + ".wifi.WifiNoInternetDialog");
         }
 
-        PendingIntent pendingIntent = PendingIntent.getActivityAsUser(
-                mContext,
+        PendingIntent pendingIntent = PendingIntent.getActivity(
+                mContext.createContextAsUser(UserHandle.CURRENT, 0 /* flags */),
                 0 /* requestCode */,
                 intent,
-                PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE,
-                null /* options */,
-                UserHandle.CURRENT);
+                PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE);
 
         mNotifier.showNotification(nai.network.netId, type, nai, null, pendingIntent, highPriority);
     }
@@ -4695,10 +4730,9 @@
             if (mLockdownEnabled) {
                 return new VpnInfo[0];
             }
-
             List<VpnInfo> infoList = new ArrayList<>();
-            for (int i = 0; i < mVpns.size(); i++) {
-                VpnInfo info = createVpnInfo(mVpns.valueAt(i));
+            for (NetworkAgentInfo nai : mNetworkAgentInfos.values()) {
+                VpnInfo info = createVpnInfo(nai);
                 if (info != null) {
                     infoList.add(info);
                 }
@@ -4711,13 +4745,10 @@
      * @return VPN information for accounting, or null if we can't retrieve all required
      *         information, e.g underlying ifaces.
      */
-    @Nullable
-    private VpnInfo createVpnInfo(Vpn vpn) {
-        VpnInfo info = vpn.getVpnInfo();
-        if (info == null) {
-            return null;
-        }
-        Network[] underlyingNetworks = vpn.getUnderlyingNetworks();
+    private VpnInfo createVpnInfo(NetworkAgentInfo nai) {
+        if (!nai.isVPN()) return null;
+
+        Network[] underlyingNetworks = nai.declaredUnderlyingNetworks;
         // see VpnService.setUnderlyingNetworks()'s javadoc about how to interpret
         // the underlyingNetworks list.
         if (underlyingNetworks == null) {
@@ -4726,23 +4757,33 @@
                 underlyingNetworks = new Network[] { defaultNai.network };
             }
         }
-        if (underlyingNetworks != null && underlyingNetworks.length > 0) {
-            List<String> interfaces = new ArrayList<>();
-            for (Network network : underlyingNetworks) {
-                LinkProperties lp = getLinkProperties(network);
-                if (lp != null) {
-                    for (String iface : lp.getAllInterfaceNames()) {
-                        if (!TextUtils.isEmpty(iface)) {
-                            interfaces.add(iface);
-                        }
-                    }
+
+        if (ArrayUtils.isEmpty(underlyingNetworks)) return null;
+
+        List<String> interfaces = new ArrayList<>();
+        for (Network network : underlyingNetworks) {
+            NetworkAgentInfo underlyingNai = getNetworkAgentInfoForNetwork(network);
+            if (underlyingNai == null) continue;
+            LinkProperties lp = underlyingNai.linkProperties;
+            for (String iface : lp.getAllInterfaceNames()) {
+                if (!TextUtils.isEmpty(iface)) {
+                    interfaces.add(iface);
                 }
             }
-            if (!interfaces.isEmpty()) {
-                info.underlyingIfaces = interfaces.toArray(new String[interfaces.size()]);
-            }
         }
-        return info.underlyingIfaces == null ? null : info;
+
+        if (interfaces.isEmpty()) return null;
+
+        VpnInfo info = new VpnInfo();
+        info.ownerUid = nai.networkCapabilities.getOwnerUid();
+        info.vpnIface = nai.linkProperties.getInterfaceName();
+        // Must be non-null or NetworkStatsService will crash.
+        // Cannot happen in production code because Vpn only registers the NetworkAgent after the
+        // tun or ipsec interface is created.
+        if (info.vpnIface == null) return null;
+        info.underlyingIfaces = interfaces.toArray(new String[0]);
+
+        return info;
     }
 
     /**
@@ -4765,35 +4806,21 @@
     }
 
     /**
-     * Ask all VPN objects to recompute and update their capabilities.
+     * Ask all networks with underlying networks to recompute and update their capabilities.
      *
-     * When underlying networks change, VPNs may have to update capabilities to reflect things
-     * like the metered bit, their transports, and so on. This asks the VPN objects to update
-     * their capabilities, and as this will cause them to send messages to the ConnectivityService
-     * handler thread through their agent, this is asynchronous. When the capabilities objects
-     * are computed they will be up-to-date as they are computed synchronously from here and
-     * this is running on the ConnectivityService thread.
+     * When underlying networks change, such networks may have to update capabilities to reflect
+     * things like the metered bit, their transports, and so on. The capabilities are calculated
+     * immediately. This method runs on the ConnectivityService thread.
      */
-    private void updateAllVpnsCapabilities() {
-        Network defaultNetwork = getNetwork(getDefaultNetwork());
-        synchronized (mVpns) {
-            for (int i = 0; i < mVpns.size(); i++) {
-                final Vpn vpn = mVpns.valueAt(i);
-                NetworkCapabilities nc = vpn.updateCapabilities(defaultNetwork);
-                updateVpnCapabilities(vpn, nc);
+    private void propagateUnderlyingNetworkCapabilities() {
+        ensureRunningOnConnectivityServiceThread();
+        for (NetworkAgentInfo nai : mNetworkAgentInfos.values()) {
+            if (nai.supportsUnderlyingNetworks()) {
+                updateCapabilities(nai.getCurrentScore(), nai, nai.networkCapabilities);
             }
         }
     }
 
-    private void updateVpnCapabilities(Vpn vpn, @Nullable NetworkCapabilities nc) {
-        ensureRunningOnConnectivityServiceThread();
-        NetworkAgentInfo vpnNai = getNetworkAgentInfoForNetId(vpn.getNetId());
-        if (vpnNai == null || nc == null) {
-            return;
-        }
-        updateCapabilities(vpnNai.getCurrentScore(), vpnNai, nc);
-    }
-
     @Override
     public boolean updateLockdownVpn() {
         if (Binder.getCallingUid() != Process.SYSTEM_UID) {
@@ -5104,7 +5131,7 @@
         }
     }
 
-    private void onUserStart(int userId) {
+    private void onUserStarted(int userId) {
         synchronized (mVpns) {
             Vpn userVpn = mVpns.get(userId);
             if (userVpn != null) {
@@ -5119,7 +5146,7 @@
         }
     }
 
-    private void onUserStop(int userId) {
+    private void onUserStopped(int userId) {
         synchronized (mVpns) {
             Vpn userVpn = mVpns.get(userId);
             if (userVpn == null) {
@@ -5133,28 +5160,22 @@
 
     private void onUserAdded(int userId) {
         mPermissionMonitor.onUserAdded(userId);
-        Network defaultNetwork = getNetwork(getDefaultNetwork());
         synchronized (mVpns) {
             final int vpnsSize = mVpns.size();
             for (int i = 0; i < vpnsSize; i++) {
                 Vpn vpn = mVpns.valueAt(i);
                 vpn.onUserAdded(userId);
-                NetworkCapabilities nc = vpn.updateCapabilities(defaultNetwork);
-                updateVpnCapabilities(vpn, nc);
             }
         }
     }
 
     private void onUserRemoved(int userId) {
         mPermissionMonitor.onUserRemoved(userId);
-        Network defaultNetwork = getNetwork(getDefaultNetwork());
         synchronized (mVpns) {
             final int vpnsSize = mVpns.size();
             for (int i = 0; i < vpnsSize; i++) {
                 Vpn vpn = mVpns.valueAt(i);
                 vpn.onUserRemoved(userId);
-                NetworkCapabilities nc = vpn.updateCapabilities(defaultNetwork);
-                updateVpnCapabilities(vpn, nc);
             }
         }
     }
@@ -5236,9 +5257,9 @@
             if (userId == UserHandle.USER_NULL) return;
 
             if (Intent.ACTION_USER_STARTED.equals(action)) {
-                onUserStart(userId);
+                onUserStarted(userId);
             } else if (Intent.ACTION_USER_STOPPED.equals(action)) {
-                onUserStop(userId);
+                onUserStopped(userId);
             } else if (Intent.ACTION_USER_ADDED.equals(action)) {
                 onUserAdded(userId);
             } else if (Intent.ACTION_USER_REMOVED.equals(action)) {
@@ -5263,7 +5284,9 @@
             // Try creating lockdown tracker, since user present usually means
             // unlocked keystore.
             updateLockdownVpn();
-            mContext.unregisterReceiver(this);
+            // Use the same context that registered receiver before to unregister it. Because use
+            // different context to unregister receiver will cause exception.
+            context.unregisterReceiver(this);
         }
     };
 
@@ -5345,6 +5368,12 @@
         }
     }
 
+    private void ensureAllNetworkRequestsHaveType(List<NetworkRequest> requests) {
+        for (int i = 0; i < requests.size(); i++) {
+            ensureNetworkRequestHasType(requests.get(i));
+        }
+    }
+
     private void ensureNetworkRequestHasType(NetworkRequest request) {
         if (request.type == NetworkRequest.Type.NONE) {
             throw new IllegalArgumentException(
@@ -5356,8 +5385,11 @@
      * Tracks info about the requester.
      * Also used to notice when the calling process dies so we can self-expire
      */
-    private class NetworkRequestInfo implements IBinder.DeathRecipient {
+    @VisibleForTesting
+    protected class NetworkRequestInfo implements IBinder.DeathRecipient {
+        final List<NetworkRequest> mRequests;
         final NetworkRequest request;
+
         // The network currently satisfying this request, or null if none. Must only be touched
         // on the handler thread. This only makes sense for network requests and not for listens,
         // as defined by NetworkRequest#isRequest(). For listens, this is always null.
@@ -5372,7 +5404,8 @@
 
         NetworkRequestInfo(NetworkRequest r, PendingIntent pi) {
             request = r;
-            ensureNetworkRequestHasType(request);
+            mRequests = initializeRequests(r);
+            ensureAllNetworkRequestsHaveType(mRequests);
             mPendingIntent = pi;
             messenger = null;
             mBinder = null;
@@ -5385,7 +5418,8 @@
             super();
             messenger = m;
             request = r;
-            ensureNetworkRequestHasType(request);
+            mRequests = initializeRequests(r);
+            ensureAllNetworkRequestsHaveType(mRequests);
             mBinder = binder;
             mPid = getCallingPid();
             mUid = getCallingUid();
@@ -5403,6 +5437,26 @@
             this(r, null);
         }
 
+        private List<NetworkRequest> initializeRequests(NetworkRequest r) {
+            final ArrayList<NetworkRequest> tempRequests = new ArrayList<>();
+            tempRequests.add(new NetworkRequest(r));
+            return Collections.unmodifiableList(tempRequests);
+        }
+
+        private NetworkRequest getSatisfiedRequest() {
+            if (mSatisfier == null) {
+                return null;
+            }
+
+            for (NetworkRequest req : mRequests) {
+                if (mSatisfier.isSatisfyingRequest(req.requestId)) {
+                    return req;
+                }
+            }
+
+            return null;
+        }
+
         private void enforceRequestCountLimit() {
             synchronized (mUidToNetworkRequestCount) {
                 int networkRequests = mUidToNetworkRequestCount.get(mUid, 0) + 1;
@@ -5420,14 +5474,16 @@
             }
         }
 
+        @Override
         public void binderDied() {
             log("ConnectivityService NetworkRequestInfo binderDied(" +
-                    request + ", " + mBinder + ")");
-            releaseNetworkRequest(request);
+                    mRequests + ", " + mBinder + ")");
+            releaseNetworkRequest(mRequests);
         }
 
+        @Override
         public String toString() {
-            return "uid/pid:" + mUid + "/" + mPid + " " + request
+            return "uid/pid:" + mUid + "/" + mPid + " " + mRequests
                     + (mPendingIntent == null ? "" : " to trigger " + mPendingIntent);
         }
     }
@@ -5747,6 +5803,12 @@
         return mNextNetworkProviderId.getAndIncrement();
     }
 
+    private void releaseNetworkRequest(List<NetworkRequest> networkRequests) {
+        for (int i = 0; i < networkRequests.size(); i++) {
+            releaseNetworkRequest(networkRequests.get(i));
+        }
+    }
+
     @Override
     public void releaseNetworkRequest(NetworkRequest networkRequest) {
         ensureNetworkRequestHasType(networkRequest);
@@ -5838,7 +5900,6 @@
     @GuardedBy("mBlockedAppUids")
     private final HashSet<Integer> mBlockedAppUids = new HashSet<>();
 
-    // Note: if mDefaultRequest is changed, NetworkMonitor needs to be updated.
     @NonNull
     private final NetworkRequest mDefaultRequest;
     // The NetworkAgentInfo currently satisfying the default request, if any.
@@ -5910,13 +5971,29 @@
             int currentScore, NetworkAgentConfig networkAgentConfig, int providerId) {
         if (networkCapabilities.hasTransport(TRANSPORT_TEST)) {
             enforceAnyPermissionOf(Manifest.permission.MANAGE_TEST_NETWORKS);
+        } else {
+            enforceNetworkFactoryPermission();
+        }
+
+        final int uid = Binder.getCallingUid();
+        final long token = Binder.clearCallingIdentity();
+        try {
+            return registerNetworkAgentInternal(messenger, networkInfo, linkProperties,
+                    networkCapabilities, currentScore, networkAgentConfig, providerId, uid);
+        } finally {
+            Binder.restoreCallingIdentity(token);
+        }
+    }
+
+    private Network registerNetworkAgentInternal(Messenger messenger, NetworkInfo networkInfo,
+            LinkProperties linkProperties, NetworkCapabilities networkCapabilities,
+            int currentScore, NetworkAgentConfig networkAgentConfig, int providerId, int uid) {
+        if (networkCapabilities.hasTransport(TRANSPORT_TEST)) {
             // Strictly, sanitizing here is unnecessary as the capabilities will be sanitized in
             // the call to mixInCapabilities below anyway, but sanitizing here means the NAI never
             // sees capabilities that may be malicious, which might prevent mistakes in the future.
             networkCapabilities = new NetworkCapabilities(networkCapabilities);
-            networkCapabilities.restrictCapabilitesForTestNetwork(Binder.getCallingUid());
-        } else {
-            enforceNetworkFactoryPermission();
+            networkCapabilities.restrictCapabilitesForTestNetwork(uid);
         }
 
         LinkProperties lp = new LinkProperties(linkProperties);
@@ -5927,9 +6004,10 @@
         final NetworkAgentInfo nai = new NetworkAgentInfo(messenger, new AsyncChannel(),
                 new Network(mNetIdManager.reserveNetId()), new NetworkInfo(networkInfo), lp, nc,
                 currentScore, mContext, mTrackerHandler, new NetworkAgentConfig(networkAgentConfig),
-                this, mNetd, mDnsResolver, mNMS, providerId, Binder.getCallingUid());
+                this, mNetd, mDnsResolver, mNMS, providerId, uid);
 
         // Make sure the LinkProperties and NetworkCapabilities reflect what the agent info says.
+        processCapabilitiesFromAgent(nai, nc);
         nai.getAndSetNetworkCapabilities(mixInCapabilities(nai, nc));
         processLinkPropertiesFromAgent(nai, nai.linkProperties);
 
@@ -5937,13 +6015,8 @@
         final String name = TextUtils.isEmpty(extraInfo)
                 ? nai.networkCapabilities.getSsid() : extraInfo;
         if (DBG) log("registerNetworkAgent " + nai);
-        final long token = Binder.clearCallingIdentity();
-        try {
-            mDeps.getNetworkStack().makeNetworkMonitor(
-                    nai.network, name, new NetworkMonitorCallbacks(nai));
-        } finally {
-            Binder.restoreCallingIdentity(token);
-        }
+        mDeps.getNetworkStack().makeNetworkMonitor(
+                nai.network, name, new NetworkMonitorCallbacks(nai));
         // NetworkAgentInfo registration will finish when the NetworkMonitor is created.
         // If the network disconnects or sends any other event before that, messages are deferred by
         // NetworkAgent until nai.asyncChannel.connect(), which will be called when finalizing the
@@ -5970,6 +6043,12 @@
         updateUids(nai, null, nai.networkCapabilities);
     }
 
+    /**
+     * Called when receiving LinkProperties directly from a NetworkAgent.
+     * Stores into |nai| any data coming from the agent that might also be written to the network's
+     * LinkProperties by ConnectivityService itself. This ensures that the data provided by the
+     * agent is not lost when updateLinkProperties is called.
+     */
     private void processLinkPropertiesFromAgent(NetworkAgentInfo nai, LinkProperties lp) {
         lp.ensureDirectlyConnectedRoutes();
         nai.clatd.setNat64PrefixFromRa(lp.getNat64Prefix());
@@ -6080,7 +6159,7 @@
             for (final String iface : interfaceDiff.added) {
                 try {
                     if (DBG) log("Adding iface " + iface + " to network " + netId);
-                    mNMS.addInterfaceToNetwork(iface, netId);
+                    mNetd.networkAddInterface(netId, iface);
                     wakeupModifyInterface(iface, caps, true);
                     bs.noteNetworkInterfaceType(iface, legacyType);
                 } catch (Exception e) {
@@ -6092,7 +6171,7 @@
             try {
                 if (DBG) log("Removing iface " + iface + " from network " + netId);
                 wakeupModifyInterface(iface, caps, false);
-                mNMS.removeInterfaceFromNetwork(iface, netId);
+                mNetd.networkRemoveInterface(netId, iface);
             } catch (Exception e) {
                 loge("Exception removing interface: " + e);
             }
@@ -6195,20 +6274,12 @@
             return;  // no updating necessary
         }
 
-        final NetworkAgentInfo defaultNai = getDefaultNetwork();
-        final boolean isDefaultNetwork = (defaultNai != null && defaultNai.network.netId == netId);
-
         if (DBG) {
             final Collection<InetAddress> dnses = newLp.getDnsServers();
             log("Setting DNS servers for network " + netId + " to " + dnses);
         }
         try {
             mDnsManager.noteDnsServersForNetwork(netId, newLp);
-            // TODO: netd should listen on [::1]:53 and proxy queries to the current
-            // default network, and we should just set net.dns1 to ::1, not least
-            // because applications attempting to use net.dns resolvers will bypass
-            // the privacy protections of things like DNS-over-TLS.
-            if (isDefaultNetwork) mDnsManager.setDefaultDnsSystemProperties(newLp.getDnsServers());
             mDnsManager.flushVmDnsCache();
         } catch (Exception e) {
             loge("Exception in setDnsConfigurationForNetwork: " + e);
@@ -6266,14 +6337,38 @@
         final int newPermission = getNetworkPermission(newNc);
         if (oldPermission != newPermission && nai.created && !nai.isVPN()) {
             try {
-                mNMS.setNetworkPermission(nai.network.netId, newPermission);
-            } catch (RemoteException e) {
-                loge("Exception in setNetworkPermission: " + e);
+                mNetd.networkSetPermissionForNetwork(nai.network.netId, newPermission);
+            } catch (RemoteException | ServiceSpecificException e) {
+                loge("Exception in networkSetPermissionForNetwork: " + e);
             }
         }
     }
 
     /**
+     * Called when receiving NetworkCapabilities directly from a NetworkAgent.
+     * Stores into |nai| any data coming from the agent that might also be written to the network's
+     * NetworkCapabilities by ConnectivityService itself. This ensures that the data provided by the
+     * agent is not lost when updateCapabilities is called.
+     */
+    private void processCapabilitiesFromAgent(NetworkAgentInfo nai, NetworkCapabilities nc) {
+        nai.declaredMetered = !nc.hasCapability(NET_CAPABILITY_NOT_METERED);
+    }
+
+    /** Propagates to |nc| the capabilities declared by the underlying networks of |nai|. */
+    private void mixInUnderlyingCapabilities(NetworkAgentInfo nai, NetworkCapabilities nc) {
+        Network[] underlyingNetworks = nai.declaredUnderlyingNetworks;
+        Network defaultNetwork = getNetwork(getDefaultNetwork());
+        if (underlyingNetworks == null && defaultNetwork != null) {
+            // null underlying networks means to track the default.
+            underlyingNetworks = new Network[] { defaultNetwork };
+        }
+
+        // TODO(b/124469351): Get capabilities directly from ConnectivityService instead.
+        final ConnectivityManager cm = mContext.getSystemService(ConnectivityManager.class);
+        Vpn.applyUnderlyingCapabilities(cm, underlyingNetworks, nc, nai.declaredMetered);
+    }
+
+    /**
      * Augments the NetworkCapabilities passed in by a NetworkAgent with capabilities that are
      * maintained here that the NetworkAgent is not aware of (e.g., validated, captive portal,
      * and foreground status).
@@ -6326,6 +6421,10 @@
             newNc.addCapability(NET_CAPABILITY_NOT_ROAMING);
         }
 
+        if (nai.supportsUnderlyingNetworks()) {
+            mixInUnderlyingCapabilities(nai, newNc);
+        }
+
         return newNc;
     }
 
@@ -6405,7 +6504,7 @@
         if (!newNc.hasTransport(TRANSPORT_VPN)) {
             // Tell VPNs about updated capabilities, since they may need to
             // bubble those changes through.
-            updateAllVpnsCapabilities();
+            propagateUnderlyingNetworkCapabilities();
         }
 
         if (!newNc.equalsTransportTypes(prevNc)) {
@@ -6438,8 +6537,8 @@
                 && !nai.networkAgentConfig.allowBypass
                 && nc.getOwnerUid() != Process.SYSTEM_UID
                 && lp.getInterfaceName() != null
-                && (lp.hasIPv4DefaultRoute() || lp.hasIpv4UnreachableDefaultRoute())
-                && (lp.hasIPv6DefaultRoute() || lp.hasIpv6UnreachableDefaultRoute());
+                && (lp.hasIpv4DefaultRoute() || lp.hasIpv4UnreachableDefaultRoute())
+                && (lp.hasIpv6DefaultRoute() || lp.hasIpv6UnreachableDefaultRoute());
     }
 
     private void updateUids(NetworkAgentInfo nai, NetworkCapabilities prevNc,
@@ -6710,11 +6809,11 @@
 
         try {
             if (null != newNetwork) {
-                mNMS.setDefaultNetId(newNetwork.network.netId);
+                mNetd.networkSetDefault(newNetwork.network.netId);
             } else {
-                mNMS.clearDefaultNetId();
+                mNetd.networkClearDefault();
             }
-        } catch (Exception e) {
+        } catch (RemoteException | ServiceSpecificException e) {
             loge("Exception setting default network :" + e);
         }
 
@@ -6723,11 +6822,9 @@
                 ? newNetwork.linkProperties.getHttpProxy() : null);
         updateTcpBufferSizes(null != newNetwork
                 ? newNetwork.linkProperties.getTcpBufferSizes() : null);
-        mDnsManager.setDefaultDnsSystemProperties(null != newNetwork
-                ? newNetwork.linkProperties.getDnsServers() : Collections.EMPTY_LIST);
         notifyIfacesChangedForNetworkStats();
         // Fix up the NetworkCapabilities of any VPNs that don't specify underlying networks.
-        updateAllVpnsCapabilities();
+        propagateUnderlyingNetworkCapabilities();
     }
 
     private void processListenRequests(@NonNull final NetworkAgentInfo nai) {
@@ -6774,7 +6871,7 @@
             }
 
             public String toString() {
-                return mRequest.request.requestId + " : "
+                return mRequest.mRequests.get(0).requestId + " : "
                         + (null != mOldNetwork ? mOldNetwork.network.netId : "null")
                         + " → " + (null != mNewNetwork ? mNewNetwork.network.netId : "null");
             }
@@ -7189,7 +7286,7 @@
                 // onCapabilitiesUpdated being sent in updateAllVpnCapabilities below as
                 // the VPN would switch from its default, blank capabilities to those
                 // that reflect the capabilities of its underlying networks.
-                updateAllVpnsCapabilities();
+                propagateUnderlyingNetworkCapabilities();
             }
             networkAgent.created = true;
         }
@@ -7231,8 +7328,8 @@
             // doing.
             updateSignalStrengthThresholds(networkAgent, "CONNECT", null);
 
-            if (networkAgent.isVPN()) {
-                updateAllVpnsCapabilities();
+            if (networkAgent.supportsUnderlyingNetworks()) {
+                propagateUnderlyingNetworkCapabilities();
             }
 
             // Consider network even though it is not yet validated.
@@ -7489,13 +7586,6 @@
             throwIfLockdownEnabled();
             success = mVpns.get(user).setUnderlyingNetworks(networks);
         }
-        if (success) {
-            mHandler.post(() -> {
-                // Update VPN's capabilities based on updated underlying network set.
-                updateAllVpnsCapabilities();
-                notifyIfacesChangedForNetworkStats();
-            });
-        }
         return success;
     }
 
@@ -7659,14 +7749,14 @@
     }
 
     @Override
-    public void onShellCommand(@NonNull FileDescriptor in, @NonNull FileDescriptor out,
-            FileDescriptor err, @NonNull String[] args, ShellCallback callback,
-            @NonNull ResultReceiver resultReceiver) {
-        (new ShellCmd()).exec(this, in, out, err, args, callback, resultReceiver);
+    public int handleShellCommand(@NonNull ParcelFileDescriptor in,
+            @NonNull ParcelFileDescriptor out, @NonNull ParcelFileDescriptor err,
+            @NonNull String[] args) {
+        return new ShellCmd().exec(this, in.getFileDescriptor(), out.getFileDescriptor(),
+                err.getFileDescriptor(), args);
     }
 
-    private class ShellCmd extends ShellCommand {
-
+    private class ShellCmd extends BasicShellCommandHandler {
         @Override
         public int onCommand(String cmd) {
             if (cmd == null) {
@@ -8171,13 +8261,12 @@
             return false;
         }
 
-        final Network[] underlyingNetworks;
-        synchronized (mVpns) {
-            final Vpn vpn = getVpnIfOwner(callbackUid);
-            underlyingNetworks = (vpn == null) ? null : vpn.getUnderlyingNetworks();
-        }
-        if (underlyingNetworks != null) {
-            if (Arrays.asList(underlyingNetworks).contains(nai.network)) return true;
+        for (NetworkAgentInfo virtual : mNetworkAgentInfos.values()) {
+            if (virtual.supportsUnderlyingNetworks()
+                    && virtual.networkCapabilities.getOwnerUid() == callbackUid
+                    && ArrayUtils.contains(virtual.declaredUnderlyingNetworks, nai.network)) {
+                return true;
+            }
         }
 
         // Administrator UIDs also contains the Owner UID
diff --git a/services/core/java/com/android/server/ConnectivityServiceInitializer.java b/services/core/java/com/android/server/ConnectivityServiceInitializer.java
new file mode 100644
index 0000000..2bc8925
--- /dev/null
+++ b/services/core/java/com/android/server/ConnectivityServiceInitializer.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server;
+
+import static android.os.IServiceManager.DUMP_FLAG_PRIORITY_HIGH;
+import static android.os.IServiceManager.DUMP_FLAG_PRIORITY_NORMAL;
+
+import android.content.Context;
+import android.net.INetworkPolicyManager;
+import android.net.INetworkStatsService;
+import android.os.INetworkManagementService;
+import android.os.ServiceManager;
+import android.util.Log;
+
+/**
+ * Connectivity service initializer for core networking. This is called by system server to create
+ * a new instance of ConnectivityService.
+ */
+public final class ConnectivityServiceInitializer extends SystemService {
+    private static final String TAG = ConnectivityServiceInitializer.class.getSimpleName();
+    private final ConnectivityService mConnectivity;
+
+    public ConnectivityServiceInitializer(Context context) {
+        super(context);
+        // TODO: Define formal APIs to get the needed services.
+        mConnectivity = new ConnectivityService(context, getNetworkManagementService(),
+                getNetworkStatsService(), getNetworkPolicyManager());
+    }
+
+    @Override
+    public void onStart() {
+        Log.i(TAG, "Registering " + Context.CONNECTIVITY_SERVICE);
+        publishBinderService(Context.CONNECTIVITY_SERVICE, mConnectivity,
+                /* allowIsolated= */ false, DUMP_FLAG_PRIORITY_HIGH | DUMP_FLAG_PRIORITY_NORMAL);
+    }
+
+    private INetworkManagementService getNetworkManagementService() {
+        return INetworkManagementService.Stub.asInterface(
+               ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE));
+    }
+
+    private INetworkStatsService getNetworkStatsService() {
+        return INetworkStatsService.Stub.asInterface(
+                ServiceManager.getService(Context.NETWORK_STATS_SERVICE));
+    }
+
+    private INetworkPolicyManager getNetworkPolicyManager() {
+        return INetworkPolicyManager.Stub.asInterface(
+                ServiceManager.getService(Context.NETWORK_POLICY_SERVICE));
+    }
+
+}
diff --git a/services/core/java/com/android/server/MountServiceIdler.java b/services/core/java/com/android/server/MountServiceIdler.java
index 6bc1a57..0f4c94b 100644
--- a/services/core/java/com/android/server/MountServiceIdler.java
+++ b/services/core/java/com/android/server/MountServiceIdler.java
@@ -113,6 +113,7 @@
         JobInfo.Builder builder = new JobInfo.Builder(MOUNT_JOB_ID, sIdleService);
         builder.setRequiresDeviceIdle(true);
         builder.setRequiresBatteryNotLow(true);
+        builder.setRequiresCharging(true);
         builder.setMinimumLatency(nextScheduleTime);
         tm.schedule(builder.build());
     }
diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java
index ea14fad..1c99465 100644
--- a/services/core/java/com/android/server/NetworkManagementService.java
+++ b/services/core/java/com/android/server/NetworkManagementService.java
@@ -945,17 +945,6 @@
     }
 
     @Override
-    public void setMtu(String iface, int mtu) {
-        NetworkStack.checkNetworkStackPermission(mContext);
-
-        try {
-            mNetdService.interfaceSetMtu(iface, mtu);
-        } catch (RemoteException | ServiceSpecificException e) {
-            throw new IllegalStateException(e);
-        }
-    }
-
-    @Override
     public void shutdown() {
         // TODO: remove from aidl if nobody calls externally
         mContext.enforceCallingOrSelfPermission(SHUTDOWN, TAG);
@@ -1985,16 +1974,6 @@
         pw.println("]");
     }
 
-    @Override
-    public void addInterfaceToNetwork(String iface, int netId) {
-        modifyInterfaceInNetwork(MODIFY_OPERATION_ADD, netId, iface);
-    }
-
-    @Override
-    public void removeInterfaceFromNetwork(String iface, int netId) {
-        modifyInterfaceInNetwork(MODIFY_OPERATION_REMOVE, netId, iface);
-    }
-
     private void modifyInterfaceInNetwork(boolean add, int netId, String iface) {
         NetworkStack.checkNetworkStackPermission(mContext);
         try {
@@ -2030,39 +2009,6 @@
     }
 
     @Override
-    public void setDefaultNetId(int netId) {
-        NetworkStack.checkNetworkStackPermission(mContext);
-
-        try {
-            mNetdService.networkSetDefault(netId);
-        } catch (RemoteException | ServiceSpecificException e) {
-            throw new IllegalStateException(e);
-        }
-    }
-
-    @Override
-    public void clearDefaultNetId() {
-        NetworkStack.checkNetworkStackPermission(mContext);
-
-        try {
-            mNetdService.networkClearDefault();
-        } catch (RemoteException | ServiceSpecificException e) {
-            throw new IllegalStateException(e);
-        }
-    }
-
-    @Override
-    public void setNetworkPermission(int netId, int permission) {
-        NetworkStack.checkNetworkStackPermission(mContext);
-
-        try {
-            mNetdService.networkSetPermissionForNetwork(netId, permission);
-        } catch (RemoteException | ServiceSpecificException e) {
-            throw new IllegalStateException(e);
-        }
-    }
-
-    @Override
     public void allowProtect(int uid) {
         NetworkStack.checkNetworkStackPermission(mContext);
 
diff --git a/services/core/java/com/android/server/OWNERS b/services/core/java/com/android/server/OWNERS
index 8099f8f..3d1e709a 100644
--- a/services/core/java/com/android/server/OWNERS
+++ b/services/core/java/com/android/server/OWNERS
@@ -7,3 +7,6 @@
 
 # Zram writeback
 per-file ZramWriteback.java = minchan@google.com, rajekumar@google.com, srnvs@google.com
+
+# Userspace reboot
+per-file UserspaceRebootLogger.java = ioffe@google.com, tomcherry@google.com
diff --git a/services/core/java/com/android/server/RescueParty.java b/services/core/java/com/android/server/RescueParty.java
index 829fca6..9fc8f0b 100644
--- a/services/core/java/com/android/server/RescueParty.java
+++ b/services/core/java/com/android/server/RescueParty.java
@@ -454,10 +454,14 @@
         public boolean mayObservePackage(String packageName) {
             PackageManager pm = mContext.getPackageManager();
             try {
-                // A package is a Mainline module if this is non-null
+                // A package is a module if this is non-null
                 if (pm.getModuleInfo(packageName, 0) != null) {
                     return true;
                 }
+            } catch (PackageManager.NameNotFoundException ignore) {
+            }
+
+            try {
                 ApplicationInfo info = pm.getApplicationInfo(packageName, 0);
                 return (info.flags & PERSISTENT_MASK) == PERSISTENT_MASK;
             } catch (PackageManager.NameNotFoundException e) {
diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java
index 1147db5..70ef44c 100644
--- a/services/core/java/com/android/server/StorageManagerService.java
+++ b/services/core/java/com/android/server/StorageManagerService.java
@@ -1391,12 +1391,13 @@
                     final int oldState = vol.state;
                     final int newState = state;
                     vol.state = newState;
+                    final VolumeInfo vInfo = new VolumeInfo(vol);
                     final SomeArgs args = SomeArgs.obtain();
-                    args.arg1 = vol;
+                    args.arg1 = vInfo;
                     args.arg2 = oldState;
                     args.arg3 = newState;
                     mHandler.obtainMessage(H_VOLUME_STATE_CHANGED, args).sendToTarget();
-                    onVolumeStateChangedLocked(vol, oldState, newState);
+                    onVolumeStateChangedLocked(vInfo, oldState, newState);
                 }
             }
         }
diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java
index 208c943..1cdc95a 100644
--- a/services/core/java/com/android/server/TelephonyRegistry.java
+++ b/services/core/java/com/android/server/TelephonyRegistry.java
@@ -34,7 +34,6 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.pm.PackageManager;
-import android.net.LinkProperties;
 import android.os.Binder;
 import android.os.Build;
 import android.os.Bundle;
@@ -46,8 +45,6 @@
 import android.os.UserHandle;
 import android.provider.DeviceConfig;
 import android.telephony.Annotation;
-import android.telephony.Annotation.ApnType;
-import android.telephony.Annotation.DataFailureCause;
 import android.telephony.Annotation.RadioPowerState;
 import android.telephony.Annotation.SrvccState;
 import android.telephony.BarringInfo;
@@ -63,7 +60,6 @@
 import android.telephony.CellSignalStrengthNr;
 import android.telephony.CellSignalStrengthTdscdma;
 import android.telephony.CellSignalStrengthWcdma;
-import android.telephony.DataFailCause;
 import android.telephony.DisconnectCause;
 import android.telephony.LocationAccessPolicy;
 import android.telephony.PhoneCapability;
@@ -81,7 +77,9 @@
 import android.telephony.data.ApnSetting;
 import android.telephony.emergency.EmergencyNumber;
 import android.telephony.ims.ImsReasonInfo;
+import android.util.ArrayMap;
 import android.util.LocalLog;
+import android.util.Pair;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.app.IBatteryStats;
@@ -89,6 +87,7 @@
 import com.android.internal.telephony.IPhoneStateListener;
 import com.android.internal.telephony.ITelephonyRegistry;
 import com.android.internal.telephony.TelephonyPermissions;
+import com.android.internal.telephony.util.TelephonyUtils;
 import com.android.internal.util.ArrayUtils;
 import com.android.internal.util.DumpUtils;
 import com.android.internal.util.FrameworkStatsLog;
@@ -303,13 +302,18 @@
     @RadioPowerState
     private int mRadioPowerState = TelephonyManager.RADIO_POWER_UNAVAILABLE;
 
-    private final LocalLog mLocalLog = new LocalLog(100);
+    private final LocalLog mLocalLog = new LocalLog(200);
 
-    private final LocalLog mListenLog = new LocalLog(100);
+    private final LocalLog mListenLog = new LocalLog(00);
 
-    // Per-phoneMap of APN Type to DataConnectionState
-    private List<Map<Integer, PreciseDataConnectionState>> mPreciseDataConnectionStates =
-            new ArrayList<Map<Integer, PreciseDataConnectionState>>();
+    /**
+     * Per-phone map of precise data connection state. The key of the map is the pair of transport
+     * type and APN setting. This is the cache to prevent redundant callbacks to the listeners.
+     * A precise data connection with state {@link TelephonyManager#DATA_DISCONNECTED} removes
+     * its entry from the map.
+     */
+    private List<Map<Pair<Integer, ApnSetting>, PreciseDataConnectionState>>
+            mPreciseDataConnectionStates;
 
     static final int ENFORCE_COARSE_LOCATION_PERMISSION_MASK =
             PhoneStateListener.LISTEN_REGISTRATION_FAILURE
@@ -522,7 +526,7 @@
             mRingingCallState[i] = PreciseCallState.PRECISE_CALL_STATE_IDLE;
             mForegroundCallState[i] = PreciseCallState.PRECISE_CALL_STATE_IDLE;
             mBackgroundCallState[i] = PreciseCallState.PRECISE_CALL_STATE_IDLE;
-            mPreciseDataConnectionStates.add(new HashMap<Integer, PreciseDataConnectionState>());
+            mPreciseDataConnectionStates.add(new ArrayMap<>());
             mBarringInfo.add(i, new BarringInfo());
             mTelephonyDisplayInfos[i] = null;
         }
@@ -611,7 +615,7 @@
             mRingingCallState[i] = PreciseCallState.PRECISE_CALL_STATE_IDLE;
             mForegroundCallState[i] = PreciseCallState.PRECISE_CALL_STATE_IDLE;
             mBackgroundCallState[i] = PreciseCallState.PRECISE_CALL_STATE_IDLE;
-            mPreciseDataConnectionStates.add(new HashMap<Integer, PreciseDataConnectionState>());
+            mPreciseDataConnectionStates.add(new ArrayMap<>());
             mBarringInfo.add(i, new BarringInfo());
             mTelephonyDisplayInfos[i] = null;
         }
@@ -1600,10 +1604,12 @@
         if (!checkNotifyPermission("notifyDisplayInfoChanged()")) {
             return;
         }
+        String str = "notifyDisplayInfoChanged: PhoneId=" + phoneId + " subId=" + subId
+                + " telephonyDisplayInfo=" + telephonyDisplayInfo;
         if (VDBG) {
-            log("notifyDisplayInfoChanged: PhoneId=" + phoneId
-                    + " subId=" + subId + " telephonyDisplayInfo=" + telephonyDisplayInfo);
+            log(str);
         }
+        mLocalLog.log(str);
         synchronized (mRecords) {
             if (validatePhoneId(phoneId)) {
                 mTelephonyDisplayInfos[phoneId] = telephonyDisplayInfo;
@@ -1688,42 +1694,29 @@
      *
      * @param phoneId the phoneId carrying the data connection
      * @param subId the subscriptionId for the data connection
-     * @param apnType the apn type bitmask, defined with {@code ApnSetting#TYPE_*} flags.
      * @param preciseState a PreciseDataConnectionState that has info about the data connection
      */
     @Override
-    public void notifyDataConnectionForSubscriber(
-            int phoneId, int subId, @ApnType int apnType, PreciseDataConnectionState preciseState) {
+    public void notifyDataConnectionForSubscriber(int phoneId, int subId,
+            @NonNull PreciseDataConnectionState preciseState) {
         if (!checkNotifyPermission("notifyDataConnection()" )) {
             return;
         }
 
-        String apn = "";
-        int state = TelephonyManager.DATA_UNKNOWN;
-        int networkType = TelephonyManager.NETWORK_TYPE_UNKNOWN;
-        LinkProperties linkProps = null;
+        ApnSetting apnSetting = preciseState.getApnSetting();
 
-        if (preciseState != null) {
-            apn = preciseState.getDataConnectionApn();
-            state = preciseState.getState();
-            networkType = preciseState.getNetworkType();
-            linkProps = preciseState.getDataConnectionLinkProperties();
-        }
-        if (VDBG) {
-            log("notifyDataConnectionForSubscriber: subId=" + subId
-                    + " state=" + state + "' apn='" + apn
-                    + "' apnType=" + apnType + " networkType=" + networkType
-                    + "' preciseState=" + preciseState);
-        }
+        int apnTypes = apnSetting.getApnTypeBitmask();
+        int state = preciseState.getState();
+        int networkType = preciseState.getNetworkType();
 
         synchronized (mRecords) {
             if (validatePhoneId(phoneId)) {
                 // We only call the callback when the change is for default APN type.
-                if ((ApnSetting.TYPE_DEFAULT & apnType) != 0
+                if ((ApnSetting.TYPE_DEFAULT & apnTypes) != 0
                         && (mDataConnectionState[phoneId] != state
                         || mDataConnectionNetworkType[phoneId] != networkType)) {
                     String str = "onDataConnectionStateChanged("
-                            + dataStateToString(state)
+                            + TelephonyUtils.dataStateToString(state)
                             + ", " + getNetworkTypeName(networkType)
                             + ") subId=" + subId + ", phoneId=" + phoneId;
                     log(str);
@@ -1748,19 +1741,13 @@
                     mDataConnectionNetworkType[phoneId] = networkType;
                 }
 
-                boolean needsNotify = false;
-                // State has been cleared for this APN Type
-                if (preciseState == null) {
-                    // We try clear the state and check if the state was previously not cleared
-                    needsNotify = mPreciseDataConnectionStates.get(phoneId).remove(apnType) != null;
-                } else {
-                    // We need to check to see if the state actually changed
-                    PreciseDataConnectionState oldPreciseState =
-                            mPreciseDataConnectionStates.get(phoneId).put(apnType, preciseState);
-                    needsNotify = !preciseState.equals(oldPreciseState);
-                }
-
-                if (needsNotify) {
+                Pair<Integer, ApnSetting> key = Pair.create(preciseState.getTransportType(),
+                        preciseState.getApnSetting());
+                PreciseDataConnectionState oldState = mPreciseDataConnectionStates.get(phoneId)
+                        .remove(key);
+                log("Jack: oldState=" + oldState);
+                log("Jack: newState=" + preciseState);
+                if (!Objects.equals(oldState, preciseState)) {
                     for (Record r : mRecords) {
                         if (r.matchPhoneStateListenerEvent(
                                 PhoneStateListener.LISTEN_PRECISE_DATA_CONNECTION_STATE)
@@ -1772,54 +1759,22 @@
                             }
                         }
                     }
+                    handleRemoveListLocked();
+
+                    broadcastDataConnectionStateChanged(phoneId, subId, preciseState);
+
+                    String str = "notifyDataConnectionForSubscriber: phoneId=" + phoneId + " subId="
+                            + subId + " " + preciseState;
+                    log(str);
+                    mLocalLog.log(str);
+                }
+
+                // If the state is disconnected, it would be the end of life cycle of a data
+                // connection, so remove it from the cache.
+                if (preciseState.getState() != TelephonyManager.DATA_DISCONNECTED) {
+                    mPreciseDataConnectionStates.get(phoneId).put(key, preciseState);
                 }
             }
-            handleRemoveListLocked();
-        }
-
-        broadcastDataConnectionStateChanged(state, apn, apnType, subId);
-    }
-
-    /**
-     * Stub to satisfy the ITelephonyRegistry aidl interface; do not use this function.
-     * @see #notifyDataConnectionFailedForSubscriber
-     */
-    public void notifyDataConnectionFailed(String apnType) {
-        loge("This function should not be invoked");
-    }
-
-    private void notifyDataConnectionFailedForSubscriber(int phoneId, int subId, int apnType) {
-        if (!checkNotifyPermission("notifyDataConnectionFailed()")) {
-            return;
-        }
-        if (VDBG) {
-            log("notifyDataConnectionFailedForSubscriber: subId=" + subId
-                    + " apnType=" + apnType);
-        }
-        synchronized (mRecords) {
-            if (validatePhoneId(phoneId)) {
-                mPreciseDataConnectionStates.get(phoneId).put(
-                        apnType,
-                        new PreciseDataConnectionState(
-                                TelephonyManager.DATA_UNKNOWN,
-                                TelephonyManager.NETWORK_TYPE_UNKNOWN,
-                                apnType, null, null,
-                                DataFailCause.NONE, null));
-                for (Record r : mRecords) {
-                    if (r.matchPhoneStateListenerEvent(
-                            PhoneStateListener.LISTEN_PRECISE_DATA_CONNECTION_STATE)
-                            && idMatch(r.subId, subId, phoneId)) {
-                        try {
-                            r.callback.onPreciseDataConnectionStateChanged(
-                                    mPreciseDataConnectionStates.get(phoneId).get(apnType));
-                        } catch (RemoteException ex) {
-                            mRemoveList.add(r.binder);
-                        }
-                    }
-                }
-            }
-
-            handleRemoveListLocked();
         }
     }
 
@@ -1969,42 +1924,6 @@
     }
 
     @Override
-    public void notifyPreciseDataConnectionFailed(int phoneId, int subId, @ApnType int apnType,
-            String apn, @DataFailureCause int failCause) {
-        if (!checkNotifyPermission("notifyPreciseDataConnectionFailed()")) {
-            return;
-        }
-
-        // precise notify invokes imprecise notify
-        notifyDataConnectionFailedForSubscriber(phoneId, subId, apnType);
-
-        synchronized (mRecords) {
-            if (validatePhoneId(phoneId)) {
-                mPreciseDataConnectionStates.get(phoneId).put(
-                        apnType,
-                        new PreciseDataConnectionState(
-                                TelephonyManager.DATA_UNKNOWN,
-                                TelephonyManager.NETWORK_TYPE_UNKNOWN,
-                                apnType, null, null,
-                                failCause, null));
-                for (Record r : mRecords) {
-                    if (r.matchPhoneStateListenerEvent(
-                            PhoneStateListener.LISTEN_PRECISE_DATA_CONNECTION_STATE)
-                            && idMatch(r.subId, subId, phoneId)) {
-                        try {
-                            r.callback.onPreciseDataConnectionStateChanged(
-                                    mPreciseDataConnectionStates.get(phoneId).get(apnType));
-                        } catch (RemoteException ex) {
-                            mRemoveList.add(r.binder);
-                        }
-                    }
-                }
-            }
-            handleRemoveListLocked();
-        }
-    }
-
-    @Override
     public void notifySrvccStateChanged(int subId, @SrvccState int state) {
         if (!checkNotifyPermission("notifySrvccStateChanged()")) {
             return;
@@ -2184,20 +2103,20 @@
         synchronized (mRecords) {
             if (validatePhoneId(phoneId)) {
                 mOutgoingCallEmergencyNumber[phoneId] = emergencyNumber;
-                for (Record r : mRecords) {
-                    if (r.matchPhoneStateListenerEvent(
-                            PhoneStateListener.LISTEN_OUTGOING_EMERGENCY_CALL)
-                                    && idMatch(r.subId, subId, phoneId)) {
-                        try {
-                            r.callback.onOutgoingEmergencyCall(emergencyNumber);
-                        } catch (RemoteException ex) {
-                            mRemoveList.add(r.binder);
-                        }
+            }
+            for (Record r : mRecords) {
+                // Send to all listeners regardless of subscription
+                if (r.matchPhoneStateListenerEvent(
+                        PhoneStateListener.LISTEN_OUTGOING_EMERGENCY_CALL)) {
+                    try {
+                        r.callback.onOutgoingEmergencyCall(emergencyNumber, subId);
+                    } catch (RemoteException ex) {
+                        mRemoveList.add(r.binder);
                     }
                 }
             }
-            handleRemoveListLocked();
         }
+        handleRemoveListLocked();
     }
 
     @Override
@@ -2210,11 +2129,11 @@
             if (validatePhoneId(phoneId)) {
                 mOutgoingSmsEmergencyNumber[phoneId] = emergencyNumber;
                 for (Record r : mRecords) {
+                    // Send to all listeners regardless of subscription
                     if (r.matchPhoneStateListenerEvent(
-                            PhoneStateListener.LISTEN_OUTGOING_EMERGENCY_SMS)
-                                    && idMatch(r.subId, subId, phoneId)) {
+                            PhoneStateListener.LISTEN_OUTGOING_EMERGENCY_SMS)) {
                         try {
-                            r.callback.onOutgoingEmergencySms(emergencyNumber);
+                            r.callback.onOutgoingEmergencySms(emergencyNumber, subId);
                         } catch (RemoteException ex) {
                             mRemoveList.add(r.binder);
                         }
@@ -2378,10 +2297,10 @@
                 pw.println("mOutgoingCallEmergencyNumber=" + mOutgoingCallEmergencyNumber[i]);
                 pw.println("mOutgoingSmsEmergencyNumber=" + mOutgoingSmsEmergencyNumber[i]);
                 pw.println("mBarringInfo=" + mBarringInfo.get(i));
+                pw.println("mTelephonyDisplayInfo=" + mTelephonyDisplayInfos[i]);
                 pw.decreaseIndent();
             }
             pw.println("mCarrierNetworkChangeState=" + mCarrierNetworkChangeState);
-
             pw.println("mPhoneCapability=" + mPhoneCapability);
             pw.println("mActiveDataSubId=" + mActiveDataSubId);
             pw.println("mRadioPowerState=" + mRadioPowerState);
@@ -2574,16 +2493,18 @@
         }
     }
 
-    private void broadcastDataConnectionStateChanged(int state, String apn,
-                                                     int apnType, int subId) {
+    private void broadcastDataConnectionStateChanged(int slotIndex, int subId,
+            @NonNull PreciseDataConnectionState pdcs) {
         // Note: not reporting to the battery stats service here, because the
         // status bar takes care of that after taking into account all of the
         // required info.
         Intent intent = new Intent(ACTION_ANY_DATA_CONNECTION_STATE_CHANGED);
-        intent.putExtra(PHONE_CONSTANTS_STATE_KEY, dataStateToString(state));
-        intent.putExtra(PHONE_CONSTANTS_DATA_APN_KEY, apn);
+        intent.putExtra(PHONE_CONSTANTS_STATE_KEY,
+                TelephonyUtils.dataStateToString(pdcs.getState()));
+        intent.putExtra(PHONE_CONSTANTS_DATA_APN_KEY, pdcs.getApnSetting().getApnName());
         intent.putExtra(PHONE_CONSTANTS_DATA_APN_TYPE_KEY,
-                ApnSetting.getApnTypesStringFromBitmask(apnType));
+                ApnSetting.getApnTypesStringFromBitmask(pdcs.getApnSetting().getApnTypeBitmask()));
+        intent.putExtra(PHONE_CONSTANTS_SLOT_KEY, slotIndex);
         intent.putExtra(PHONE_CONSTANTS_SUBSCRIPTION_KEY, subId);
         mContext.sendBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.READ_PHONE_STATE);
     }
@@ -2938,24 +2859,9 @@
     }
 
     /**
-     * Convert TelephonyManager.DATA_* to string.
-     *
-     * @return The data state in string format.
-     */
-    private static String dataStateToString(int state) {
-        switch (state) {
-            case TelephonyManager.DATA_DISCONNECTED: return "DISCONNECTED";
-            case TelephonyManager.DATA_CONNECTING: return "CONNECTING";
-            case TelephonyManager.DATA_CONNECTED: return "CONNECTED";
-            case TelephonyManager.DATA_SUSPENDED: return "SUSPENDED";
-        }
-        return "UNKNOWN(" + state + ")";
-    }
-
-    /**
      * Returns a string representation of the radio technology (network type)
      * currently in use on the device.
-     * @param subId for which network type is returned
+     * @param type for which network type is returned
      * @return the name of the radio technology
      *
      */
diff --git a/services/core/java/com/android/server/UserspaceRebootLogger.java b/services/core/java/com/android/server/UserspaceRebootLogger.java
index 2403b63..89327b5 100644
--- a/services/core/java/com/android/server/UserspaceRebootLogger.java
+++ b/services/core/java/com/android/server/UserspaceRebootLogger.java
@@ -59,7 +59,7 @@
      */
     public static void noteUserspaceRebootWasRequested() {
         if (!PowerManager.isRebootingUserspaceSupportedImpl()) {
-            Slog.wtf(TAG, "Userspace reboot is not supported.");
+            Slog.wtf(TAG, "noteUserspaceRebootWasRequested: Userspace reboot is not supported.");
             return;
         }
 
@@ -77,7 +77,7 @@
      */
     public static void noteUserspaceRebootSuccess() {
         if (!PowerManager.isRebootingUserspaceSupportedImpl()) {
-            Slog.wtf(TAG, "Userspace reboot is not supported.");
+            Slog.wtf(TAG, "noteUserspaceRebootSuccess: Userspace reboot is not supported.");
             return;
         }
 
@@ -88,11 +88,11 @@
     /**
      * Returns {@code true} if {@code UserspaceRebootReported} atom should be logged.
      *
-     * <p>This call should only be made on devices supporting userspace reboot.
+     * <p>On devices that do not support userspace reboot this method will always return {@code
+     * false}.
      */
     public static boolean shouldLogUserspaceRebootEvent() {
         if (!PowerManager.isRebootingUserspaceSupportedImpl()) {
-            Slog.wtf(TAG, "Userspace reboot is not supported.");
             return false;
         }
 
@@ -110,7 +110,7 @@
      */
     public static void logEventAsync(boolean userUnlocked, Executor executor) {
         if (!PowerManager.isRebootingUserspaceSupportedImpl()) {
-            Slog.wtf(TAG, "Userspace reboot is not supported.");
+            Slog.wtf(TAG, "logEventAsync: Userspace reboot is not supported.");
             return;
         }
 
diff --git a/services/core/java/com/android/server/VcnManagementService.java b/services/core/java/com/android/server/VcnManagementService.java
new file mode 100644
index 0000000..165b6a1
--- /dev/null
+++ b/services/core/java/com/android/server/VcnManagementService.java
@@ -0,0 +1,183 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server;
+
+import static java.util.Objects.requireNonNull;
+
+import android.annotation.NonNull;
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.NetworkProvider;
+import android.net.NetworkRequest;
+import android.net.vcn.IVcnManagementService;
+import android.net.vcn.VcnConfig;
+import android.os.HandlerThread;
+import android.os.Looper;
+import android.os.ParcelUuid;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.annotations.VisibleForTesting.Visibility;
+
+/**
+ * VcnManagementService manages Virtual Carrier Network profiles and lifecycles.
+ *
+ * <pre>The internal structure of the VCN Management subsystem is as follows:
+ *
+ * +------------------------+ 1:1                                 +--------------------------------+
+ * |  VcnManagementService  | ------------ Creates -------------> |  TelephonySubscriptionManager  |
+ * |                        |                                     |                                |
+ * | Manages configs and    |                                     | Tracks subscriptions, carrier  |
+ * | VcnInstance lifecycles | <--- Notifies of subscription & --- | privilege changes, caches maps |
+ * +------------------------+      carrier privilege changes      +--------------------------------+
+ *      | 1:N          ^
+ *      |              |
+ *      |              +-------------------------------+
+ *      +---------------+                              |
+ *                      |                              |
+ *         Creates when config present,                |
+ *        subscription group active, and               |
+ *      providing app is carrier privileged     Notifies of safe
+ *                      |                      mode state changes
+ *                      v                              |
+ * +-----------------------------------------------------------------------+
+ * |                              VcnInstance                              |
+ * |                                                                       |
+ * |   Manages tunnel lifecycles based on fulfillable NetworkRequest(s)    |
+ * |                        and overall safe-mode                          |
+ * +-----------------------------------------------------------------------+
+ *                      | 1:N                          ^
+ *              Creates to fulfill                     |
+ *           NetworkRequest(s), tears        Notifies of VcnTunnel
+ *          down when no longer needed   teardown (e.g. Network reaped)
+ *                      |                 and safe-mode timer changes
+ *                      v                              |
+ * +-----------------------------------------------------------------------+
+ * |                               VcnTunnel                               |
+ * |                                                                       |
+ * |       Manages a single (IKEv2) tunnel session and NetworkAgent,       |
+ * |  handles mobility events, (IPsec) Tunnel setup and safe-mode timers   |
+ * +-----------------------------------------------------------------------+
+ *                      | 1:1                          ^
+ *                      |                              |
+ *          Creates upon instantiation      Notifies of changes in
+ *                      |                 selected underlying network
+ *                      |                     or its properties
+ *                      v                              |
+ * +-----------------------------------------------------------------------+
+ * |                       UnderlyingNetworkTracker                        |
+ * |                                                                       |
+ * | Manages lifecycle of underlying physical networks, filing requests to |
+ * | bring them up, and releasing them as they become no longer necessary  |
+ * +-----------------------------------------------------------------------+
+ * </pre>
+ *
+ * @hide
+ */
+public class VcnManagementService extends IVcnManagementService.Stub {
+    @NonNull private static final String TAG = VcnManagementService.class.getSimpleName();
+
+    public static final boolean VDBG = false; // STOPSHIP: if true
+
+    /* Binder context for this service */
+    @NonNull private final Context mContext;
+    @NonNull private final Dependencies mDeps;
+
+    @NonNull private final Looper mLooper;
+    @NonNull private final VcnNetworkProvider mNetworkProvider;
+
+    @VisibleForTesting(visibility = Visibility.PRIVATE)
+    VcnManagementService(@NonNull Context context, @NonNull Dependencies deps) {
+        mContext = requireNonNull(context, "Missing context");
+        mDeps = requireNonNull(deps, "Missing dependencies");
+
+        mLooper = mDeps.getLooper();
+        mNetworkProvider = new VcnNetworkProvider(mContext, mLooper);
+    }
+
+    // Package-visibility for SystemServer to create instances.
+    static VcnManagementService create(@NonNull Context context) {
+        return new VcnManagementService(context, new Dependencies());
+    }
+
+    /** External dependencies used by VcnManagementService, for injection in tests */
+    @VisibleForTesting(visibility = Visibility.PRIVATE)
+    public static class Dependencies {
+        private HandlerThread mHandlerThread;
+
+        /** Retrieves a looper for the VcnManagementService */
+        public Looper getLooper() {
+            if (mHandlerThread == null) {
+                synchronized (this) {
+                    if (mHandlerThread == null) {
+                        mHandlerThread = new HandlerThread(TAG);
+                        mHandlerThread.start();
+                    }
+                }
+            }
+            return mHandlerThread.getLooper();
+        }
+    }
+
+    /** Notifies the VcnManagementService that external dependencies can be set up. */
+    public void systemReady() {
+        // TODO: Retrieve existing profiles from KeyStore
+
+        mContext.getSystemService(ConnectivityManager.class)
+                .registerNetworkProvider(mNetworkProvider);
+    }
+
+    /**
+     * Sets a VCN config for a given subscription group.
+     *
+     * <p>Implements the IVcnManagementService Binder interface.
+     */
+    @Override
+    public void setVcnConfig(@NonNull ParcelUuid subscriptionGroup, @NonNull VcnConfig config) {
+        requireNonNull(subscriptionGroup, "subscriptionGroup was null");
+        requireNonNull(config, "config was null");
+
+        // TODO: Store VCN configuration, trigger startup as necessary
+    }
+
+    /**
+     * Clears the VcnManagementService for a given subscription group.
+     *
+     * <p>Implements the IVcnManagementService Binder interface.
+     */
+    @Override
+    public void clearVcnConfig(@NonNull ParcelUuid subscriptionGroup) {
+        requireNonNull(subscriptionGroup, "subscriptionGroup was null");
+
+        // TODO: Clear VCN configuration, trigger teardown as necessary
+    }
+
+    /**
+     * Network provider for VCN networks.
+     *
+     * @hide
+     */
+    public class VcnNetworkProvider extends NetworkProvider {
+        VcnNetworkProvider(Context context, Looper looper) {
+            super(context, looper, VcnNetworkProvider.class.getSimpleName());
+        }
+
+        @Override
+        public void onNetworkRequested(@NonNull NetworkRequest request, int score, int providerId) {
+            // TODO: Handle network requests - Ensure VCN started, and start appropriate tunnels.
+        }
+    }
+}
diff --git a/services/core/java/com/android/server/VibratorService.java b/services/core/java/com/android/server/VibratorService.java
index a153d41..0ee30f9 100644
--- a/services/core/java/com/android/server/VibratorService.java
+++ b/services/core/java/com/android/server/VibratorService.java
@@ -1589,25 +1589,20 @@
             mWakeLock.setWorkSource(mTmpWorkSource);
         }
 
-        private long delayLocked(long duration) {
+        private void delayLocked(long wakeUpTime) {
             Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "delayLocked");
             try {
-                long durationRemaining = duration;
-                if (duration > 0) {
-                    final long bedtime = duration + SystemClock.uptimeMillis();
-                    do {
-                        try {
-                            this.wait(durationRemaining);
-                        }
-                        catch (InterruptedException e) { }
-                        if (mForceStop) {
-                            break;
-                        }
-                        durationRemaining = bedtime - SystemClock.uptimeMillis();
-                    } while (durationRemaining > 0);
-                    return duration - durationRemaining;
+                long durationRemaining = wakeUpTime - SystemClock.uptimeMillis();
+                while (durationRemaining > 0) {
+                    try {
+                        this.wait(durationRemaining);
+                    }
+                    catch (InterruptedException e) { }
+                    if (mForceStop) {
+                        break;
+                    }
+                    durationRemaining = wakeUpTime - SystemClock.uptimeMillis();
                 }
-                return 0;
             } finally {
                 Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR);
             }
@@ -1641,7 +1636,8 @@
                     final int repeat = mWaveform.getRepeatIndex();
 
                     int index = 0;
-                    long onDuration = 0;
+                    long nextStepStartTime = SystemClock.uptimeMillis();
+                    long nextVibratorStopTime = 0;
                     while (!mForceStop) {
                         if (index < len) {
                             final int amplitude = amplitudes[index];
@@ -1650,25 +1646,31 @@
                                 continue;
                             }
                             if (amplitude != 0) {
-                                if (onDuration <= 0) {
+                                long now = SystemClock.uptimeMillis();
+                                if (nextVibratorStopTime <= now) {
                                     // Telling the vibrator to start multiple times usually causes
                                     // effects to feel "choppy" because the motor resets at every on
                                     // command.  Instead we figure out how long our next "on" period
                                     // is going to be, tell the motor to stay on for the full
                                     // duration, and then wake up to change the amplitude at the
                                     // appropriate intervals.
-                                    onDuration = getTotalOnDuration(timings, amplitudes, index - 1,
-                                            repeat);
+                                    long onDuration = getTotalOnDuration(
+                                            timings, amplitudes, index - 1, repeat);
                                     doVibratorOn(onDuration, amplitude, mUid, mAttrs);
+                                    nextVibratorStopTime = now + onDuration;
                                 } else {
+                                    // Vibrator is already ON, so just change its amplitude.
                                     doVibratorSetAmplitude(amplitude);
                                 }
                             }
 
-                            long waitTime = delayLocked(duration);
-                            if (amplitude != 0) {
-                                onDuration -= waitTime;
-                            }
+                            // We wait until the time this waveform step was supposed to end,
+                            // calculated from the time it was supposed to start. All start times
+                            // are calculated from the waveform original start time by adding the
+                            // input durations. Any scheduling or processing delay should not affect
+                            // this step's perceived total duration. They will be amortized here.
+                            nextStepStartTime += duration;
+                            delayLocked(nextStepStartTime);
                         } else if (repeat < 0) {
                             break;
                         } else {
diff --git a/services/core/java/com/android/server/Watchdog.java b/services/core/java/com/android/server/Watchdog.java
index 17c0970..630548d 100644
--- a/services/core/java/com/android/server/Watchdog.java
+++ b/services/core/java/com/android/server/Watchdog.java
@@ -23,7 +23,9 @@
 import android.content.IntentFilter;
 import android.hidl.manager.V1_0.IServiceManager;
 import android.os.Binder;
+import android.os.Build;
 import android.os.Debug;
+import android.os.FileUtils;
 import android.os.Handler;
 import android.os.IPowerManager;
 import android.os.Looper;
@@ -31,10 +33,12 @@
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.os.SystemClock;
+import android.os.SystemProperties;
 import android.util.EventLog;
 import android.util.Log;
 import android.util.Slog;
 import android.util.SparseArray;
+import android.sysprop.WatchdogProperties;
 
 import com.android.internal.os.ProcessCpuTracker;
 import com.android.internal.os.ZygoteConnectionConstants;
@@ -42,12 +46,16 @@
 import com.android.server.am.ActivityManagerService;
 import com.android.server.wm.SurfaceAnimationThread;
 
+import java.io.BufferedReader;
 import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
 import java.util.HashSet;
 import java.util.List;
 
@@ -75,6 +83,12 @@
     private static final int WAITED_HALF = 2;
     private static final int OVERDUE = 3;
 
+    // Track watchdog timeout history and break the crash loop if there is.
+    private static final String TIMEOUT_HISTORY_FILE = "/data/system/watchdog-timeout-history.txt";
+    private static final String PROP_FATAL_LOOP_COUNT = "framework_watchdog.fatal_count";
+    private static final String PROP_FATAL_LOOP_WINDOWS_SECS =
+            "framework_watchdog.fatal_window.second";
+
     // Which native processes to dump into dropbox's stack traces
     public static final String[] NATIVE_STACKS_OF_INTEREST = new String[] {
         "/system/bin/audioserver",
@@ -99,6 +113,7 @@
             "android.hardware.audio@4.0::IDevicesFactory",
             "android.hardware.audio@5.0::IDevicesFactory",
             "android.hardware.audio@6.0::IDevicesFactory",
+            "android.hardware.audio@7.0::IDevicesFactory",
             "android.hardware.biometrics.face@1.0::IBiometricsFace",
             "android.hardware.biometrics.fingerprint@2.1::IBiometricsFingerprint",
             "android.hardware.bluetooth@1.0::IBluetoothHci",
@@ -688,6 +703,10 @@
                 Slog.w(TAG, "*** WATCHDOG KILLING SYSTEM PROCESS: " + subject);
                 WatchdogDiagnostics.diagnoseCheckers(blockedCheckers);
                 Slog.w(TAG, "*** GOODBYE!");
+                if (!Build.IS_USER && isCrashLoopFound()
+                        && !WatchdogProperties.is_fatal_ignore().orElse(false)) {
+                    breakCrashLoop();
+                }
                 Process.killProcess(Process.myPid());
                 System.exit(10);
             }
@@ -705,4 +724,107 @@
             Slog.w(TAG, "Failed to write to /proc/sysrq-trigger", e);
         }
     }
+
+    private void resetTimeoutHistory() {
+        writeTimeoutHistory(new ArrayList<String>());
+    }
+
+    private void writeTimeoutHistory(Iterable<String> crashHistory) {
+        String data = String.join(",", crashHistory);
+
+        try (FileWriter writer = new FileWriter(TIMEOUT_HISTORY_FILE)) {
+            writer.write(SystemProperties.get("ro.boottime.zygote"));
+            writer.write(":");
+            writer.write(data);
+        } catch (IOException e) {
+            Slog.e(TAG, "Failed to write file " + TIMEOUT_HISTORY_FILE, e);
+        }
+    }
+
+    private String[] readTimeoutHistory() {
+        final String[] emptyStringArray = {};
+
+        try (BufferedReader reader = new BufferedReader(new FileReader(TIMEOUT_HISTORY_FILE))) {
+            String line = reader.readLine();
+            if (line == null) {
+                return emptyStringArray;
+            }
+
+            String[] data = line.trim().split(":");
+            String boottime = data.length >= 1 ? data[0] : "";
+            String history = data.length >= 2 ? data[1] : "";
+            if (SystemProperties.get("ro.boottime.zygote").equals(boottime) && !history.isEmpty()) {
+                return history.split(",");
+            } else {
+                return emptyStringArray;
+            }
+        } catch (FileNotFoundException e) {
+            return emptyStringArray;
+        } catch (IOException e) {
+            Slog.e(TAG, "Failed to read file " + TIMEOUT_HISTORY_FILE, e);
+            return emptyStringArray;
+        }
+    }
+
+    private boolean hasActiveUsbConnection() {
+        try {
+            final String state = FileUtils.readTextFile(
+                    new File("/sys/class/android_usb/android0/state"),
+                    128 /*max*/, null /*ellipsis*/).trim();
+            if ("CONFIGURED".equals(state)) {
+                return true;
+            }
+        } catch (IOException e) {
+            Slog.w(TAG, "Failed to determine if device was on USB", e);
+        }
+        return false;
+    }
+
+    private boolean isCrashLoopFound() {
+        int fatalCount = WatchdogProperties.fatal_count().orElse(0);
+        long fatalWindowMs = TimeUnit.SECONDS.toMillis(
+                WatchdogProperties.fatal_window_second().orElse(0));
+        if (fatalCount == 0 || fatalWindowMs == 0) {
+            if (fatalCount != fatalWindowMs) {
+                Slog.w(TAG, String.format("sysprops '%s' and '%s' should be set or unset together",
+                            PROP_FATAL_LOOP_COUNT, PROP_FATAL_LOOP_WINDOWS_SECS));
+            }
+            return false;
+        }
+
+        // new-history = [last (fatalCount - 1) items in old-history] + [nowMs].
+        long nowMs = SystemClock.elapsedRealtime(); // Time since boot including deep sleep.
+        String[] rawCrashHistory = readTimeoutHistory();
+        ArrayList<String> crashHistory = new ArrayList<String>(Arrays.asList(Arrays.copyOfRange(
+                        rawCrashHistory,
+                        Math.max(0, rawCrashHistory.length - fatalCount - 1),
+                        rawCrashHistory.length)));
+        // Something wrong here.
+        crashHistory.add(String.valueOf(nowMs));
+        writeTimeoutHistory(crashHistory);
+
+        // Returns false if the device has an active USB connection.
+        if (hasActiveUsbConnection()) {
+            return false;
+        }
+
+        long firstCrashMs;
+        try {
+            firstCrashMs = Long.parseLong(crashHistory.get(0));
+        } catch (NumberFormatException t) {
+            Slog.w(TAG, "Failed to parseLong " + crashHistory.get(0), t);
+            resetTimeoutHistory();
+            return false;
+        }
+        return crashHistory.size() >= fatalCount && nowMs - firstCrashMs < fatalWindowMs;
+    }
+
+    private void breakCrashLoop() {
+        try (FileWriter kmsg = new FileWriter("/dev/kmsg_debug", /* append= */ true)) {
+            kmsg.append("Fatal reset to escape the system_server crashing loop\n");
+        } catch (IOException e) {
+            Slog.w(TAG, "Failed to append to kmsg", e);
+        }
+        doSysRq('c');
+    }
 }
diff --git a/services/core/java/com/android/server/adb/AdbShellCommand.java b/services/core/java/com/android/server/adb/AdbShellCommand.java
index 7691852..d7e95df 100644
--- a/services/core/java/com/android/server/adb/AdbShellCommand.java
+++ b/services/core/java/com/android/server/adb/AdbShellCommand.java
@@ -16,7 +16,7 @@
 
 package com.android.server.adb;
 
-import android.os.BasicShellCommandHandler;
+import com.android.modules.utils.BasicShellCommandHandler;
 
 import java.io.PrintWriter;
 import java.util.Objects;
diff --git a/services/core/java/com/android/server/am/ActivityManagerConstants.java b/services/core/java/com/android/server/am/ActivityManagerConstants.java
index 135ac9a..7be843f 100644
--- a/services/core/java/com/android/server/am/ActivityManagerConstants.java
+++ b/services/core/java/com/android/server/am/ActivityManagerConstants.java
@@ -19,6 +19,7 @@
 import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_POWER_QUICK;
 
 import android.app.ActivityThread;
+import android.content.ComponentName;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.database.ContentObserver;
@@ -336,6 +337,11 @@
      */
     public int PENDINGINTENT_WARNING_THRESHOLD =  DEFAULT_PENDINGINTENT_WARNING_THRESHOLD;
 
+    /**
+     * Component names of the services which will keep critical code path of the host warm
+     */
+    public final ArraySet<ComponentName> KEEP_WARMING_SERVICES = new ArraySet<ComponentName>();
+
     private List<String> mDefaultImperceptibleKillExemptPackages;
     private List<Integer> mDefaultImperceptibleKillExemptProcStates;
 
@@ -442,6 +448,10 @@
                 .boxed().collect(Collectors.toList());
         IMPERCEPTIBLE_KILL_EXEMPT_PACKAGES.addAll(mDefaultImperceptibleKillExemptPackages);
         IMPERCEPTIBLE_KILL_EXEMPT_PROC_STATES.addAll(mDefaultImperceptibleKillExemptProcStates);
+        KEEP_WARMING_SERVICES.addAll(Arrays.stream(
+                context.getResources().getStringArray(
+                        com.android.internal.R.array.config_keep_warming_services))
+                .map(ComponentName::unflattenFromString).collect(Collectors.toSet()));
     }
 
     public void start(ContentResolver resolver) {
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 09c0ba37..d990c1e 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -3318,6 +3318,10 @@
     @Override
     public boolean setProcessMemoryTrimLevel(String process, int userId, int level)
             throws RemoteException {
+        if (!isCallerShell()) {
+            EventLog.writeEvent(0x534e4554, 160390416, Binder.getCallingUid(), "");
+            throw new SecurityException("Only shell can call it");
+        }
         synchronized (this) {
             final ProcessRecord app = findProcessLocked(process, userId, "setProcessMemoryTrimLevel");
             if (app == null) {
diff --git a/services/core/java/com/android/server/am/CoreSettingsObserver.java b/services/core/java/com/android/server/am/CoreSettingsObserver.java
index 8527ae9..2661dd6 100644
--- a/services/core/java/com/android/server/am/CoreSettingsObserver.java
+++ b/services/core/java/com/android/server/am/CoreSettingsObserver.java
@@ -92,7 +92,7 @@
         sGlobalSettingToTypeMap.put(
                 Settings.Global.GLOBAL_SETTINGS_ANGLE_GL_DRIVER_SELECTION_VALUES, String.class);
         sGlobalSettingToTypeMap.put(
-                Settings.Global.GLOBAL_SETTINGS_ANGLE_WHITELIST, String.class);
+                Settings.Global.GLOBAL_SETTINGS_ANGLE_ALLOWLIST, String.class);
         sGlobalSettingToTypeMap.put(
                 Settings.Global.GLOBAL_SETTINGS_SHOW_ANGLE_IN_USE_DIALOG_BOX, String.class);
         sGlobalSettingToTypeMap.put(Settings.Global.ENABLE_GPU_DEBUG_LAYERS, int.class);
@@ -105,9 +105,9 @@
         sGlobalSettingToTypeMap.put(
                 Settings.Global.GAME_DRIVER_PRERELEASE_OPT_IN_APPS, String.class);
         sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_OPT_OUT_APPS, String.class);
-        sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_BLACKLIST, String.class);
-        sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_WHITELIST, String.class);
-        sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_BLACKLISTS, String.class);
+        sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_DENYLIST, String.class);
+        sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_ALLOWLIST, String.class);
+        sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_DENYLISTS, String.class);
         sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_SPHAL_LIBRARIES, String.class);
         // add other global settings here...
 
diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java
index 14ba4af..a2e8216 100644
--- a/services/core/java/com/android/server/am/OomAdjuster.java
+++ b/services/core/java/com/android/server/am/OomAdjuster.java
@@ -76,7 +76,11 @@
 import android.app.usage.UsageEvents;
 import android.compat.annotation.ChangeId;
 import android.compat.annotation.EnabledAfter;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
 import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
 import android.content.pm.ServiceInfo;
 import android.os.Debug;
 import android.os.Handler;
@@ -265,6 +269,43 @@
 
     void initSettings() {
         mCachedAppOptimizer.init();
+        if (mService.mConstants.KEEP_WARMING_SERVICES.size() > 0) {
+            final IntentFilter filter = new IntentFilter(Intent.ACTION_USER_SWITCHED);
+            mService.mContext.registerReceiverForAllUsers(new BroadcastReceiver() {
+                @Override
+                public void onReceive(Context context, Intent intent) {
+                    synchronized (mService) {
+                        handleUserSwitchedLocked();
+                    }
+                }
+            }, filter, null, mService.mHandler);
+        }
+    }
+
+    /**
+     * Update the keep-warming service flags upon user switches
+     */
+    @VisibleForTesting
+    @GuardedBy("mService")
+    void handleUserSwitchedLocked() {
+        final ArraySet<ComponentName> warmServices = mService.mConstants.KEEP_WARMING_SERVICES;
+        final ArrayList<ProcessRecord> processes = mProcessList.mLruProcesses;
+        for (int i = processes.size() - 1; i >= 0; i--) {
+            final ProcessRecord app = processes.get(i);
+            boolean includeWarmPkg = false;
+            for (int j = warmServices.size() - 1; j >= 0; j--) {
+                if (app.pkgList.containsKey(warmServices.valueAt(j).getPackageName())) {
+                    includeWarmPkg = true;
+                    break;
+                }
+            }
+            if (!includeWarmPkg) {
+                continue;
+            }
+            for (int j = app.numberOfRunningServices() - 1; j >= 0; j--) {
+                app.getRunningServiceAt(j).updateKeepWarmLocked();
+            }
+        }
     }
 
     /**
@@ -1470,7 +1511,7 @@
                                 "Raise procstate to started service: " + app);
                     }
                 }
-                if (app.hasShownUi && !app.getCachedIsHomeProcess()) {
+                if (!s.mKeepWarming && app.hasShownUi && !app.getCachedIsHomeProcess()) {
                     // If this process has shown some UI, let it immediately
                     // go to the LRU list because it may be pretty heavy with
                     // UI stuff.  We'll tag it with a label just to help
@@ -1479,7 +1520,8 @@
                         app.adjType = "cch-started-ui-services";
                     }
                 } else {
-                    if (now < (s.lastActivity + mConstants.MAX_SERVICE_INACTIVITY)) {
+                    if (s.mKeepWarming
+                            || now < (s.lastActivity + mConstants.MAX_SERVICE_INACTIVITY)) {
                         // This service has seen some activity within
                         // recent memory, so we will keep its process ahead
                         // of the background processes.
diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java
index 5a0ea75..88b0c3b 100644
--- a/services/core/java/com/android/server/am/ProcessList.java
+++ b/services/core/java/com/android/server/am/ProcessList.java
@@ -2940,25 +2940,26 @@
         if ((expecting == null) || (old == expecting)) {
             mProcessNames.remove(name, uid);
         }
-        if (old != null && old.uidRecord != null) {
-            old.uidRecord.numProcs--;
-            old.uidRecord.procRecords.remove(old);
-            if (old.uidRecord.numProcs == 0) {
+        final ProcessRecord record = expecting != null ? expecting : old;
+        if (record != null && record.uidRecord != null) {
+            final UidRecord uidRecord = record.uidRecord;
+            uidRecord.numProcs--;
+            uidRecord.procRecords.remove(record);
+            if (uidRecord.numProcs == 0) {
                 // No more processes using this uid, tell clients it is gone.
                 if (DEBUG_UID_OBSERVERS) Slog.i(TAG_UID_OBSERVERS,
-                        "No more processes in " + old.uidRecord);
-                mService.enqueueUidChangeLocked(old.uidRecord, -1, UidRecord.CHANGE_GONE);
+                        "No more processes in " + uidRecord);
+                mService.enqueueUidChangeLocked(uidRecord, -1, UidRecord.CHANGE_GONE);
                 EventLogTags.writeAmUidStopped(uid);
                 mActiveUids.remove(uid);
                 mService.noteUidProcessState(uid, ActivityManager.PROCESS_STATE_NONEXISTENT,
                         ActivityManager.PROCESS_CAPABILITY_NONE);
             }
-            old.uidRecord = null;
+            record.uidRecord = null;
         }
         mIsolatedProcesses.remove(uid);
         mGlobalIsolatedUids.freeIsolatedUidLocked(uid);
         // Remove the (expected) ProcessRecord from the app zygote
-        final ProcessRecord record = expecting != null ? expecting : old;
         if (record != null && record.appZygote) {
             removeProcessFromAppZygoteLocked(record);
         }
diff --git a/services/core/java/com/android/server/am/ServiceRecord.java b/services/core/java/com/android/server/am/ServiceRecord.java
index 9c96e6e..fc17dde 100644
--- a/services/core/java/com/android/server/am/ServiceRecord.java
+++ b/services/core/java/com/android/server/am/ServiceRecord.java
@@ -40,6 +40,7 @@
 import android.util.proto.ProtoOutputStream;
 import android.util.proto.ProtoUtils;
 
+import com.android.internal.annotations.GuardedBy;
 import com.android.internal.app.procstats.ServiceState;
 import com.android.internal.os.BatteryStatsImpl;
 import com.android.server.LocalServices;
@@ -146,6 +147,8 @@
 
     private int lastStartId;    // identifier of most recent start request.
 
+    boolean mKeepWarming; // Whether or not it'll keep critical code path of the host warm
+
     static class StartItem {
         final ServiceRecord sr;
         final boolean taskRemoved;
@@ -514,6 +517,7 @@
         lastActivity = SystemClock.uptimeMillis();
         userId = UserHandle.getUserId(appInfo.uid);
         createdFromFg = callerIsFg;
+        updateKeepWarmLocked();
     }
 
     public ServiceState getTracker() {
@@ -732,6 +736,14 @@
         }
     }
 
+    @GuardedBy("ams")
+    void updateKeepWarmLocked() {
+        mKeepWarming = ams.mConstants.KEEP_WARMING_SERVICES.contains(name)
+                && (ams.mUserController.getCurrentUserId() == userId
+                || ams.isSingleton(processName, appInfo, instanceName.getClassName(),
+                        serviceInfo.flags));
+    }
+
     public AppBindRecord retrieveAppBindingLocked(Intent intent,
             ProcessRecord app) {
         Intent.FilterComparison filter = new Intent.FilterComparison(intent);
diff --git a/services/core/java/com/android/server/am/SettingsToPropertiesMapper.java b/services/core/java/com/android/server/am/SettingsToPropertiesMapper.java
index 60e59e3..28afcbb 100644
--- a/services/core/java/com/android/server/am/SettingsToPropertiesMapper.java
+++ b/services/core/java/com/android/server/am/SettingsToPropertiesMapper.java
@@ -85,6 +85,7 @@
         DeviceConfig.NAMESPACE_INTELLIGENCE_CONTENT_SUGGESTIONS,
         DeviceConfig.NAMESPACE_MEDIA_NATIVE,
         DeviceConfig.NAMESPACE_NETD_NATIVE,
+        DeviceConfig.NAMESPACE_PROFCOLLECT_NATIVE_BOOT,
         DeviceConfig.NAMESPACE_RUNTIME_NATIVE,
         DeviceConfig.NAMESPACE_RUNTIME_NATIVE_BOOT,
         DeviceConfig.NAMESPACE_STORAGE_NATIVE_BOOT,
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index 2991339..8be24a6 100755
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -3987,7 +3987,7 @@
     /** @see AudioManager#playSoundEffect(int, float) */
     public void playSoundEffectVolume(int effectType, float volume) {
         // do not try to play the sound effect if the system stream is muted
-        if (isStreamMutedByRingerOrZenMode(STREAM_SYSTEM)) {
+        if (isStreamMute(STREAM_SYSTEM)) {
             return;
         }
 
diff --git a/services/core/java/com/android/server/biometrics/BiometricServiceBase.java b/services/core/java/com/android/server/biometrics/BiometricServiceBase.java
index ff8c628..7cdd3b3 100644
--- a/services/core/java/com/android/server/biometrics/BiometricServiceBase.java
+++ b/services/core/java/com/android/server/biometrics/BiometricServiceBase.java
@@ -284,10 +284,12 @@
         @Override
         public int handleFailedAttempt() {
             final int lockoutMode = getLockoutMode();
-            if (lockoutMode == AuthenticationClient.LOCKOUT_PERMANENT) {
-                mPerformanceStats.permanentLockout++;
-            } else if (lockoutMode == AuthenticationClient.LOCKOUT_TIMED) {
-                mPerformanceStats.lockout++;
+            if (mPerformanceStats != null) {
+                if (lockoutMode == AuthenticationClient.LOCKOUT_PERMANENT) {
+                    mPerformanceStats.permanentLockout++;
+                } else if (lockoutMode == AuthenticationClient.LOCKOUT_TIMED) {
+                    mPerformanceStats.lockout++;
+                }
             }
 
             // Failing multiple times will continue to push out the lockout time
@@ -730,10 +732,12 @@
         if (client != null && client.onAuthenticated(identifier, authenticated, token)) {
             removeClient(client);
         }
-        if (authenticated) {
-            mPerformanceStats.accept++;
-        } else {
-            mPerformanceStats.reject++;
+        if (mPerformanceStats != null) {
+            if (authenticated) {
+                mPerformanceStats.accept++;
+            } else {
+                mPerformanceStats.reject++;
+            }
         }
     }
 
diff --git a/services/core/java/com/android/server/compat/CompatChange.java b/services/core/java/com/android/server/compat/CompatChange.java
index 2e9818d..ff31931 100644
--- a/services/core/java/com/android/server/compat/CompatChange.java
+++ b/services/core/java/com/android/server/compat/CompatChange.java
@@ -18,7 +18,7 @@
 
 import android.annotation.Nullable;
 import android.compat.annotation.ChangeId;
-import android.compat.annotation.EnabledAfter;
+import android.compat.annotation.EnabledSince;
 import android.content.pm.ApplicationInfo;
 
 import com.android.internal.compat.CompatibilityChangeInfo;
@@ -43,8 +43,8 @@
      * A change ID to be used only in the CTS test for this SystemApi
      */
     @ChangeId
-    @EnabledAfter(targetSdkVersion = 1234) // Needs to be > test APK targetSdkVersion.
-    private static final long CTS_SYSTEM_API_CHANGEID = 149391281; // This is a bug id.
+    @EnabledSince(targetSdkVersion = 1235) // Needs to be > test APK targetSdkVersion.
+    static final long CTS_SYSTEM_API_CHANGEID = 149391281; // This is a bug id.
 
     /**
      * Callback listener for when compat changes are updated for a package.
@@ -63,7 +63,7 @@
     private Map<String, Boolean> mPackageOverrides;
 
     public CompatChange(long changeId) {
-        this(changeId, null, -1, false, false, null);
+        this(changeId, null, -1, -1, false, false, null);
     }
 
     /**
@@ -71,11 +71,14 @@
      * @param name Short descriptive name.
      * @param enableAfterTargetSdk {@code targetSdkVersion} restriction. See {@link EnabledAfter};
      *                             -1 if the change is always enabled.
+     * @param enableSinceTargetSdk {@code targetSdkVersion} restriction. See {@link EnabledSince};
+     *                             -1 if the change is always enabled.
      * @param disabled If {@code true}, overrides any {@code enableAfterTargetSdk} set.
      */
     public CompatChange(long changeId, @Nullable String name, int enableAfterTargetSdk,
-            boolean disabled, boolean loggingOnly, String description) {
-        super(changeId, name, enableAfterTargetSdk, disabled, loggingOnly, description);
+            int enableSinceTargetSdk, boolean disabled, boolean loggingOnly, String description) {
+        super(changeId, name, enableAfterTargetSdk, enableSinceTargetSdk, disabled, loggingOnly,
+              description);
     }
 
     /**
@@ -83,7 +86,8 @@
      */
     public CompatChange(Change change) {
         super(change.getId(), change.getName(), change.getEnableAfterTargetSdk(),
-                change.getDisabled(), change.getLoggingOnly(), change.getDescription());
+                change.getEnableSinceTargetSdk(), change.getDisabled(), change.getLoggingOnly(),
+                change.getDescription());
     }
 
     void registerListener(ChangeListener listener) {
@@ -145,8 +149,8 @@
         if (getDisabled()) {
             return false;
         }
-        if (getEnableAfterTargetSdk() != -1) {
-            return app.targetSdkVersion > getEnableAfterTargetSdk();
+        if (getEnableSinceTargetSdk() != -1) {
+            return app.targetSdkVersion >= getEnableSinceTargetSdk();
         }
         return true;
     }
@@ -167,8 +171,8 @@
         if (getName() != null) {
             sb.append("; name=").append(getName());
         }
-        if (getEnableAfterTargetSdk() != -1) {
-            sb.append("; enableAfterTargetSdk=").append(getEnableAfterTargetSdk());
+        if (getEnableSinceTargetSdk() != -1) {
+            sb.append("; enableSinceTargetSdk=").append(getEnableSinceTargetSdk());
         }
         if (getDisabled()) {
             sb.append("; disabled");
diff --git a/services/core/java/com/android/server/compat/CompatConfig.java b/services/core/java/com/android/server/compat/CompatConfig.java
index aeaa1fe..d80c58b 100644
--- a/services/core/java/com/android/server/compat/CompatConfig.java
+++ b/services/core/java/com/android/server/compat/CompatConfig.java
@@ -192,16 +192,19 @@
     }
 
     /**
-     * Returns the minimum sdk version for which this change should be enabled (or 0 if it is not
+     * Returns the maximum sdk version for which this change can be opted in (or -1 if it is not
      * target sdk gated).
      */
-    int minTargetSdkForChangeId(long changeId) {
+    int maxTargetSdkForChangeIdOptIn(long changeId) {
         synchronized (mChanges) {
             CompatChange c = mChanges.get(changeId);
             if (c == null) {
-                return 0;
+                return -1;
             }
-            return c.getEnableAfterTargetSdk();
+            if (c.getEnableSinceTargetSdk() != -1) {
+                return c.getEnableSinceTargetSdk() - 1;
+            }
+            return -1;
         }
     }
 
@@ -318,7 +321,7 @@
         }
     }
 
-    private long[] getAllowedChangesAfterTargetSdkForPackage(String packageName,
+    private long[] getAllowedChangesSinceTargetSdkForPackage(String packageName,
                                                              int targetSdkVersion)
                     throws RemoteException {
         LongArray allowed = new LongArray();
@@ -326,7 +329,7 @@
             for (int i = 0; i < mChanges.size(); ++i) {
                 try {
                     CompatChange change = mChanges.valueAt(i);
-                    if (change.getEnableAfterTargetSdk() != targetSdkVersion) {
+                    if (change.getEnableSinceTargetSdk() != targetSdkVersion) {
                         continue;
                     }
                     OverrideAllowedState allowedState =
@@ -345,14 +348,14 @@
     }
 
     /**
-     * Enables all changes with enabledAfterTargetSdk == {@param targetSdkVersion} for
+     * Enables all changes with enabledSinceTargetSdk == {@param targetSdkVersion} for
      * {@param packageName}.
      *
      * @return The number of changes that were toggled.
      */
     int enableTargetSdkChangesForPackage(String packageName, int targetSdkVersion)
             throws RemoteException {
-        long[] changes = getAllowedChangesAfterTargetSdkForPackage(packageName, targetSdkVersion);
+        long[] changes = getAllowedChangesSinceTargetSdkForPackage(packageName, targetSdkVersion);
         for (long changeId : changes) {
             addOverride(changeId, packageName, true);
         }
@@ -361,14 +364,14 @@
 
 
     /**
-     * Disables all changes with enabledAfterTargetSdk == {@param targetSdkVersion} for
+     * Disables all changes with enabledSinceTargetSdk == {@param targetSdkVersion} for
      * {@param packageName}.
      *
      * @return The number of changes that were toggled.
      */
     int disableTargetSdkChangesForPackage(String packageName, int targetSdkVersion)
             throws RemoteException {
-        long[] changes = getAllowedChangesAfterTargetSdkForPackage(packageName, targetSdkVersion);
+        long[] changes = getAllowedChangesSinceTargetSdkForPackage(packageName, targetSdkVersion);
         for (long changeId : changes) {
             addOverride(changeId, packageName, false);
         }
@@ -448,12 +451,7 @@
             CompatibilityChangeInfo[] changeInfos = new CompatibilityChangeInfo[mChanges.size()];
             for (int i = 0; i < mChanges.size(); ++i) {
                 CompatChange change = mChanges.valueAt(i);
-                changeInfos[i] = new CompatibilityChangeInfo(change.getId(),
-                        change.getName(),
-                        change.getEnableAfterTargetSdk(),
-                        change.getDisabled(),
-                        change.getLoggingOnly(),
-                        change.getDescription());
+                changeInfos[i] = new CompatibilityChangeInfo(change);
             }
             return changeInfos;
         }
diff --git a/services/core/java/com/android/server/compat/OverrideValidatorImpl.java b/services/core/java/com/android/server/compat/OverrideValidatorImpl.java
index 08d2664..79a13ca 100644
--- a/services/core/java/com/android/server/compat/OverrideValidatorImpl.java
+++ b/services/core/java/com/android/server/compat/OverrideValidatorImpl.java
@@ -58,7 +58,7 @@
 
         boolean debuggableBuild = mAndroidBuildClassifier.isDebuggableBuild();
         boolean finalBuild = mAndroidBuildClassifier.isFinalBuild();
-        int minTargetSdk = mCompatConfig.minTargetSdkForChangeId(changeId);
+        int maxTargetSdk = mCompatConfig.maxTargetSdkForChangeIdOptIn(changeId);
         boolean disabled = mCompatConfig.isDisabled(changeId);
 
         // Allow any override for userdebug or eng builds.
@@ -82,16 +82,16 @@
         }
         // Allow overriding any change for debuggable apps on non-final builds.
         if (!finalBuild) {
-            return new OverrideAllowedState(ALLOWED, appTargetSdk, minTargetSdk);
+            return new OverrideAllowedState(ALLOWED, appTargetSdk, maxTargetSdk);
         }
         // Do not allow overriding default enabled changes on user builds
-        if (minTargetSdk == -1 && !disabled) {
-            return new OverrideAllowedState(DISABLED_NON_TARGET_SDK, appTargetSdk, minTargetSdk);
+        if (maxTargetSdk == -1 && !disabled) {
+            return new OverrideAllowedState(DISABLED_NON_TARGET_SDK, appTargetSdk, maxTargetSdk);
         }
         // Only allow to opt-in for a targetSdk gated change.
-        if (disabled || appTargetSdk <= minTargetSdk) {
-            return new OverrideAllowedState(ALLOWED, appTargetSdk, minTargetSdk);
+        if (disabled || appTargetSdk <= maxTargetSdk) {
+            return new OverrideAllowedState(ALLOWED, appTargetSdk, maxTargetSdk);
         }
-        return new OverrideAllowedState(DISABLED_TARGET_SDK_TOO_HIGH, appTargetSdk, minTargetSdk);
+        return new OverrideAllowedState(DISABLED_TARGET_SDK_TOO_HIGH, appTargetSdk, maxTargetSdk);
     }
 }
diff --git a/services/core/java/com/android/server/compat/PlatformCompat.java b/services/core/java/com/android/server/compat/PlatformCompat.java
index 92fce8a..2c19a2d 100644
--- a/services/core/java/com/android/server/compat/PlatformCompat.java
+++ b/services/core/java/com/android/server/compat/PlatformCompat.java
@@ -59,8 +59,8 @@
     private final ChangeReporter mChangeReporter;
     private final CompatConfig mCompatConfig;
 
-    private static int sMinTargetSdk = Build.VERSION_CODES.P;
-    private static int sMaxTargetSdk = Build.VERSION_CODES.Q;
+    private static int sMinTargetSdk = Build.VERSION_CODES.Q;
+    private static int sMaxTargetSdk = Build.VERSION_CODES.R;
 
     public PlatformCompat(Context context) {
         mContext = context;
@@ -375,9 +375,12 @@
         if (change.getLoggingOnly()) {
             return false;
         }
-        if (change.getEnableAfterTargetSdk() > 0) {
-            if (change.getEnableAfterTargetSdk() < sMinTargetSdk
-                    || change.getEnableAfterTargetSdk() > sMaxTargetSdk) {
+        if (change.getId() == CompatChange.CTS_SYSTEM_API_CHANGEID) {
+            return false;
+        }
+        if (change.getEnableSinceTargetSdk() > 0) {
+            if (change.getEnableSinceTargetSdk() < sMinTargetSdk
+                    || change.getEnableSinceTargetSdk() > sMaxTargetSdk) {
                 return false;
             }
         }
diff --git a/services/core/java/com/android/server/connectivity/DataConnectionStats.java b/services/core/java/com/android/server/connectivity/DataConnectionStats.java
index 3e61920..fbd089c 100644
--- a/services/core/java/com/android/server/connectivity/DataConnectionStats.java
+++ b/services/core/java/com/android/server/connectivity/DataConnectionStats.java
@@ -19,13 +19,12 @@
 import static android.telephony.AccessNetworkConstants.TRANSPORT_TYPE_WWAN;
 import static android.telephony.NetworkRegistrationInfo.DOMAIN_PS;
 
+import android.annotation.NonNull;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.net.ConnectivityManager;
 import android.os.Handler;
-import android.os.Looper;
 import android.os.RemoteException;
 import android.telephony.NetworkRegistrationInfo;
 import android.telephony.PhoneStateListener;
@@ -37,6 +36,9 @@
 import com.android.internal.app.IBatteryStats;
 import com.android.server.am.BatteryStatsService;
 
+import java.util.concurrent.Executor;
+import java.util.concurrent.RejectedExecutionException;
+
 public class DataConnectionStats extends BroadcastReceiver {
     private static final String TAG = "DataConnectionStats";
     private static final boolean DEBUG = false;
@@ -50,13 +52,13 @@
     private SignalStrength mSignalStrength;
     private ServiceState mServiceState;
     private int mDataState = TelephonyManager.DATA_DISCONNECTED;
-    private int mNrState = NetworkRegistrationInfo.NR_STATE_NONE;
 
     public DataConnectionStats(Context context, Handler listenerHandler) {
         mContext = context;
         mBatteryStats = BatteryStatsService.getService();
         mListenerHandler = listenerHandler;
-        mPhoneStateListener = new PhoneStateListenerImpl(listenerHandler.getLooper());
+        mPhoneStateListener =
+                new PhoneStateListenerImpl(new PhoneStateListenerExecutor(listenerHandler));
     }
 
     public void startMonitoring() {
@@ -70,8 +72,6 @@
 
         IntentFilter filter = new IntentFilter();
         filter.addAction(Intent.ACTION_SIM_STATE_CHANGED);
-        filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
-        filter.addAction(ConnectivityManager.INET_CONDITION_ACTION);
         mContext.registerReceiver(this, filter, null /* broadcastPermission */, mListenerHandler);
     }
 
@@ -81,10 +81,7 @@
         if (action.equals(Intent.ACTION_SIM_STATE_CHANGED)) {
             updateSimState(intent);
             notePhoneDataConnectionState();
-        } else if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION) ||
-                action.equals(ConnectivityManager.INET_CONDITION_ACTION)) {
-            notePhoneDataConnectionState();
-       }
+        }
     }
 
     private void notePhoneDataConnectionState() {
@@ -102,7 +99,7 @@
                 : regInfo.getAccessNetworkTechnology();
         // If the device is in NSA NR connection the networkType will report as LTE.
         // For cell dwell rate metrics, this should report NR instead.
-        if (mNrState == NetworkRegistrationInfo.NR_STATE_CONNECTED) {
+        if (regInfo != null && regInfo.getNrState() == NetworkRegistrationInfo.NR_STATE_CONNECTED) {
             networkType = TelephonyManager.NETWORK_TYPE_NR;
         }
         if (DEBUG) Log.d(TAG, String.format("Noting data connection for network type %s: %svisible",
@@ -146,9 +143,24 @@
                 && mServiceState.getState() != ServiceState.STATE_POWER_OFF;
     }
 
+    private static class PhoneStateListenerExecutor implements Executor {
+        @NonNull
+        private final Handler mHandler;
+
+        PhoneStateListenerExecutor(@NonNull Handler handler) {
+            mHandler = handler;
+        }
+        @Override
+        public void execute(Runnable command) {
+            if (!mHandler.post(command)) {
+                throw new RejectedExecutionException(mHandler + " is shutting down");
+            }
+        }
+    }
+
     private class PhoneStateListenerImpl extends PhoneStateListener {
-        PhoneStateListenerImpl(Looper looper) {
-            super(looper);
+        PhoneStateListenerImpl(Executor executor) {
+            super(executor);
         }
 
         @Override
@@ -159,7 +171,6 @@
         @Override
         public void onServiceStateChanged(ServiceState state) {
             mServiceState = state;
-            mNrState = state.getNrState();
             notePhoneDataConnectionState();
         }
 
diff --git a/services/core/java/com/android/server/connectivity/DnsManager.java b/services/core/java/com/android/server/connectivity/DnsManager.java
index cf6a7f6..c789186 100644
--- a/services/core/java/com/android/server/connectivity/DnsManager.java
+++ b/services/core/java/com/android/server/connectivity/DnsManager.java
@@ -50,7 +50,6 @@
 
 import java.net.InetAddress;
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -238,24 +237,21 @@
     private final Context mContext;
     private final ContentResolver mContentResolver;
     private final IDnsResolver mDnsResolver;
-    private final MockableSystemProperties mSystemProperties;
     private final ConcurrentHashMap<Integer, PrivateDnsConfig> mPrivateDnsMap;
     // TODO: Replace the Map with SparseArrays.
     private final Map<Integer, PrivateDnsValidationStatuses> mPrivateDnsValidationMap;
     private final Map<Integer, LinkProperties> mLinkPropertiesMap;
     private final Map<Integer, int[]> mTransportsMap;
 
-    private int mNumDnsEntries;
     private int mSampleValidity;
     private int mSuccessThreshold;
     private int mMinSamples;
     private int mMaxSamples;
 
-    public DnsManager(Context ctx, IDnsResolver dnsResolver, MockableSystemProperties sp) {
+    public DnsManager(Context ctx, IDnsResolver dnsResolver) {
         mContext = ctx;
         mContentResolver = mContext.getContentResolver();
         mDnsResolver = dnsResolver;
-        mSystemProperties = sp;
         mPrivateDnsMap = new ConcurrentHashMap<>();
         mPrivateDnsValidationMap = new HashMap<>();
         mLinkPropertiesMap = new HashMap<>();
@@ -409,18 +405,6 @@
         }
     }
 
-    public void setDefaultDnsSystemProperties(Collection<InetAddress> dnses) {
-        int last = 0;
-        for (InetAddress dns : dnses) {
-            ++last;
-            setNetDnsProperty(last, dns.getHostAddress());
-        }
-        for (int i = last + 1; i <= mNumDnsEntries; ++i) {
-            setNetDnsProperty(i, "");
-        }
-        mNumDnsEntries = last;
-    }
-
     /**
      * Flush DNS caches and events work before boot has completed.
      */
@@ -476,16 +460,6 @@
         return Settings.Global.getInt(mContentResolver, which, dflt);
     }
 
-    private void setNetDnsProperty(int which, String value) {
-        final String key = "net.dns" + which;
-        // Log and forget errors setting unsupported properties.
-        try {
-            mSystemProperties.set(key, value);
-        } catch (Exception e) {
-            Slog.e(TAG, "Error setting unsupported net.dns property: ", e);
-        }
-    }
-
     private static String getPrivateDnsMode(ContentResolver cr) {
         String mode = getStringSetting(cr, PRIVATE_DNS_MODE);
         if (TextUtils.isEmpty(mode)) mode = getStringSetting(cr, PRIVATE_DNS_DEFAULT_MODE);
diff --git a/services/core/java/com/android/server/connectivity/KeepaliveTracker.java b/services/core/java/com/android/server/connectivity/KeepaliveTracker.java
index 01fa9e7..8625a6f 100644
--- a/services/core/java/com/android/server/connectivity/KeepaliveTracker.java
+++ b/services/core/java/com/android/server/connectivity/KeepaliveTracker.java
@@ -47,7 +47,6 @@
 import android.net.NetworkUtils;
 import android.net.SocketKeepalive.InvalidSocketException;
 import android.net.TcpKeepalivePacketData;
-import android.net.util.IpUtils;
 import android.net.util.KeepaliveUtils;
 import android.os.Binder;
 import android.os.Handler;
@@ -63,6 +62,7 @@
 import com.android.internal.R;
 import com.android.internal.util.HexDump;
 import com.android.internal.util.IndentingPrintWriter;
+import com.android.net.module.util.IpUtils;
 
 import java.io.FileDescriptor;
 import java.net.InetAddress;
diff --git a/services/core/java/com/android/server/connectivity/LingerMonitor.java b/services/core/java/com/android/server/connectivity/LingerMonitor.java
index 04c000f..f99f4c6 100644
--- a/services/core/java/com/android/server/connectivity/LingerMonitor.java
+++ b/services/core/java/com/android/server/connectivity/LingerMonitor.java
@@ -159,8 +159,11 @@
 
     @VisibleForTesting
     protected PendingIntent createNotificationIntent() {
-        return PendingIntent.getActivityAsUser(mContext, 0, CELLULAR_SETTINGS,
-                PendingIntent.FLAG_CANCEL_CURRENT, null, UserHandle.CURRENT);
+        return PendingIntent.getActivity(
+                mContext.createContextAsUser(UserHandle.CURRENT, 0 /* flags */),
+                0 /* requestCode */,
+                CELLULAR_SETTINGS,
+                PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE);
     }
 
     // Removes any notification that was put up as a result of switching to nai.
diff --git a/services/core/java/com/android/server/connectivity/MockableSystemProperties.java b/services/core/java/com/android/server/connectivity/MockableSystemProperties.java
index 77b86d8..ef76734 100644
--- a/services/core/java/com/android/server/connectivity/MockableSystemProperties.java
+++ b/services/core/java/com/android/server/connectivity/MockableSystemProperties.java
@@ -17,6 +17,7 @@
 package com.android.server.connectivity;
 
 import android.os.SystemProperties;
+import android.sysprop.NetworkProperties;
 
 public class MockableSystemProperties {
 
@@ -31,8 +32,10 @@
     public boolean getBoolean(String key, boolean def) {
         return SystemProperties.getBoolean(key, def);
     }
-
-    public void set(String key, String value) {
-        SystemProperties.set(key, value);
+    /**
+     * Set net.tcp_def_init_rwnd to the tcp initial receive window size.
+     */
+    public void setTcpInitRwnd(int value) {
+        NetworkProperties.tcp_init_rwnd(value);
     }
 }
diff --git a/services/core/java/com/android/server/connectivity/MultipathPolicyTracker.java b/services/core/java/com/android/server/connectivity/MultipathPolicyTracker.java
index d548871..17828a0 100644
--- a/services/core/java/com/android/server/connectivity/MultipathPolicyTracker.java
+++ b/services/core/java/com/android/server/connectivity/MultipathPolicyTracker.java
@@ -95,7 +95,11 @@
 
     private static final boolean DBG = false;
 
+    // This context is for the current user.
     private final Context mContext;
+    // This context is for all users, so register a BroadcastReceiver which can receive intents from
+    // all users.
+    private final Context mUserAllContext;
     private final Handler mHandler;
     private final Clock mClock;
     private final Dependencies mDeps;
@@ -132,6 +136,7 @@
 
     public MultipathPolicyTracker(Context ctx, Handler handler, Dependencies deps) {
         mContext = ctx;
+        mUserAllContext = ctx.createContextAsUser(UserHandle.ALL, 0 /* flags */);
         mHandler = handler;
         mClock = deps.getClock();
         mDeps = deps;
@@ -155,8 +160,8 @@
 
         final IntentFilter intentFilter = new IntentFilter();
         intentFilter.addAction(Intent.ACTION_CONFIGURATION_CHANGED);
-        mContext.registerReceiverAsUser(
-                mConfigChangeReceiver, UserHandle.ALL, intentFilter, null, mHandler);
+        mUserAllContext.registerReceiver(
+                mConfigChangeReceiver, intentFilter, null /* broadcastPermission */, mHandler);
     }
 
     public void shutdown() {
@@ -167,7 +172,7 @@
         }
         mMultipathTrackers.clear();
         mResolver.unregisterContentObserver(mSettingsObserver);
-        mContext.unregisterReceiver(mConfigChangeReceiver);
+        mUserAllContext.unregisterReceiver(mConfigChangeReceiver);
     }
 
     // Called on an arbitrary binder thread.
diff --git a/services/core/java/com/android/server/connectivity/Nat464Xlat.java b/services/core/java/com/android/server/connectivity/Nat464Xlat.java
index 3091a71..163788f 100644
--- a/services/core/java/com/android/server/connectivity/Nat464Xlat.java
+++ b/services/core/java/com/android/server/connectivity/Nat464Xlat.java
@@ -21,7 +21,7 @@
 import android.net.IDnsResolver;
 import android.net.INetd;
 import android.net.InetAddresses;
-import android.net.InterfaceConfiguration;
+import android.net.InterfaceConfigurationParcel;
 import android.net.IpPrefix;
 import android.net.LinkAddress;
 import android.net.LinkProperties;
@@ -447,9 +447,10 @@
 
     private LinkAddress getLinkAddress(String iface) {
         try {
-            InterfaceConfiguration config = mNMService.getInterfaceConfig(iface);
-            return config.getLinkAddress();
-        } catch (RemoteException | IllegalStateException e) {
+            final InterfaceConfigurationParcel config = mNetd.interfaceGetCfg(iface);
+            return new LinkAddress(
+                    InetAddresses.parseNumericAddress(config.ipv4Addr), config.prefixLength);
+        } catch (IllegalArgumentException | RemoteException | ServiceSpecificException e) {
             Slog.e(TAG, "Error getting link properties: " + e);
             return null;
         }
diff --git a/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java b/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java
index a9f62d9..3270dd5 100644
--- a/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java
+++ b/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java
@@ -132,6 +132,16 @@
     // TODO: make this private with a getter.
     public NetworkCapabilities networkCapabilities;
     public final NetworkAgentConfig networkAgentConfig;
+
+    // Underlying networks declared by the agent. Only set if supportsUnderlyingNetworks is true.
+    // The networks in this list might be declared by a VPN app using setUnderlyingNetworks and are
+    // not guaranteed to be current or correct, or even to exist.
+    public @Nullable Network[] declaredUnderlyingNetworks;
+
+    // Whether this network is always metered even if its underlying networks are unmetered.
+    // Only relevant if #supportsUnderlyingNetworks is true.
+    public boolean declaredMetered;
+
     // Indicates if netd has been told to create this Network. From this point on the appropriate
     // routing rules are setup and routes are added so packets can begin flowing over the Network.
     // This is a sticky bit; once set it is never cleared.
@@ -474,10 +484,16 @@
                         networkCapabilities);
     }
 
+    /** Whether this network is a VPN. */
     public boolean isVPN() {
         return networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_VPN);
     }
 
+    /** Whether this network might have underlying networks. Currently only true for VPNs. */
+    public boolean supportsUnderlyingNetworks() {
+        return isVPN();
+    }
+
     private int getCurrentScore(boolean pretendValidated) {
         // TODO: We may want to refactor this into a NetworkScore class that takes a base score from
         // the NetworkAgent and signals from the NetworkAgent and uses those signals to modify the
diff --git a/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java b/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java
index 34b0aa2..7f4fb40 100644
--- a/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java
+++ b/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java
@@ -21,6 +21,7 @@
 import static android.net.NetworkCapabilities.TRANSPORT_VPN;
 import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
 
+import android.annotation.NonNull;
 import android.app.Notification;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
@@ -42,7 +43,6 @@
 import com.android.internal.R;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.messages.nano.SystemMessageProto.SystemMessage;
-import com.android.internal.notification.SystemNotificationChannels;
 
 public class NetworkNotificationManager {
 
@@ -73,18 +73,29 @@
 
     private static final String TAG = NetworkNotificationManager.class.getSimpleName();
     private static final boolean DBG = true;
-    private static final boolean VDBG = false;
 
+    // Notification channels used by ConnectivityService mainline module, it should be aligned with
+    // SystemNotificationChannels so the channels are the same as the ones used as the system
+    // server.
+    public static final String NOTIFICATION_CHANNEL_NETWORK_STATUS = "NETWORK_STATUS";
+    public static final String NOTIFICATION_CHANNEL_NETWORK_ALERTS = "NETWORK_ALERTS";
+    public static final String NOTIFICATION_CHANNEL_VPN = "VPN";
+
+    // The context is for the current user (system server)
     private final Context mContext;
     private final TelephonyManager mTelephonyManager;
+    // The notification manager is created from a context for User.ALL, so notifications
+    // will be sent to all users.
     private final NotificationManager mNotificationManager;
     // Tracks the types of notifications managed by this instance, from creation to cancellation.
     private final SparseIntArray mNotificationTypeMap;
 
-    public NetworkNotificationManager(Context c, TelephonyManager t, NotificationManager n) {
+    public NetworkNotificationManager(@NonNull final Context c, @NonNull final TelephonyManager t) {
         mContext = c;
         mTelephonyManager = t;
-        mNotificationManager = n;
+        mNotificationManager =
+                (NotificationManager) c.createContextAsUser(UserHandle.ALL, 0 /* flags */)
+                        .getSystemService(Context.NOTIFICATION_SERVICE);
         mNotificationTypeMap = new SparseIntArray();
     }
 
@@ -253,8 +264,7 @@
         // the tag.
         final boolean hasPreviousNotification = previousNotifyType != null;
         final String channelId = (highPriority && !hasPreviousNotification)
-                ? SystemNotificationChannels.NETWORK_ALERTS
-                : SystemNotificationChannels.NETWORK_STATUS;
+                ? NOTIFICATION_CHANNEL_NETWORK_ALERTS : NOTIFICATION_CHANNEL_NETWORK_STATUS;
         Notification.Builder builder = new Notification.Builder(mContext, channelId)
                 .setWhen(System.currentTimeMillis())
                 .setShowWhen(notifyType == NotificationType.NETWORK_SWITCH)
@@ -282,7 +292,7 @@
 
         mNotificationTypeMap.put(id, eventId);
         try {
-            mNotificationManager.notifyAsUser(tag, eventId, notification, UserHandle.ALL);
+            mNotificationManager.notify(tag, eventId, notification);
         } catch (NullPointerException npe) {
             Slog.d(TAG, "setNotificationVisible: visible notificationManager error", npe);
         }
@@ -311,7 +321,7 @@
                    nameOf(eventId)));
         }
         try {
-            mNotificationManager.cancelAsUser(tag, eventId, UserHandle.ALL);
+            mNotificationManager.cancel(tag, eventId);
         } catch (NullPointerException npe) {
             Slog.d(TAG, String.format(
                     "failed to clear notification tag=%s event=%s", tag, nameOf(eventId)), npe);
@@ -325,7 +335,8 @@
     public void setProvNotificationVisible(boolean visible, int id, String action) {
         if (visible) {
             Intent intent = new Intent(action);
-            PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, 0, intent, 0);
+            PendingIntent pendingIntent = PendingIntent.getBroadcast(
+                    mContext, 0 /* requestCode */, intent, PendingIntent.FLAG_IMMUTABLE);
             showNotification(id, NotificationType.SIGN_IN, null, null, pendingIntent, false);
         } else {
             clearNotification(id);
diff --git a/services/core/java/com/android/server/connectivity/PacManager.java b/services/core/java/com/android/server/connectivity/PacManager.java
index de302fc..198de78 100644
--- a/services/core/java/com/android/server/connectivity/PacManager.java
+++ b/services/core/java/com/android/server/connectivity/PacManager.java
@@ -154,7 +154,7 @@
         mNetThreadHandler = new Handler(netThread.getLooper());
 
         mPacRefreshIntent = PendingIntent.getBroadcast(
-                context, 0, new Intent(ACTION_PAC_REFRESH), 0);
+                context, 0, new Intent(ACTION_PAC_REFRESH), PendingIntent.FLAG_IMMUTABLE);
         context.registerReceiver(new PacRefreshIntentReceiver(),
                 new IntentFilter(ACTION_PAC_REFRESH));
         mConnectivityHandler = handler;
diff --git a/services/core/java/com/android/server/connectivity/PermissionMonitor.java b/services/core/java/com/android/server/connectivity/PermissionMonitor.java
index a75a80a..4c63eb4 100644
--- a/services/core/java/com/android/server/connectivity/PermissionMonitor.java
+++ b/services/core/java/com/android/server/connectivity/PermissionMonitor.java
@@ -174,7 +174,7 @@
             netdPermsUids.put(uid, netdPermsUids.get(uid) | otherNetdPerms);
         }
 
-        List<UserInfo> users = mUserManager.getUsers(true);  // exclude dying users
+        List<UserInfo> users = mUserManager.getAliveUsers();
         if (users != null) {
             for (UserInfo user : users) {
                 mUsers.add(user.id);
diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java
index 9817abf..234dcc9 100644
--- a/services/core/java/com/android/server/connectivity/Vpn.java
+++ b/services/core/java/com/android/server/connectivity/Vpn.java
@@ -25,19 +25,21 @@
 import static android.net.RouteInfo.RTN_THROW;
 import static android.net.RouteInfo.RTN_UNREACHABLE;
 
+import static com.android.internal.util.Preconditions.checkArgument;
 import static com.android.internal.util.Preconditions.checkNotNull;
+import static com.android.server.connectivity.NetworkNotificationManager.NOTIFICATION_CHANNEL_VPN;
 
 import android.Manifest;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.UserIdInt;
-import android.app.AppGlobals;
 import android.app.AppOpsManager;
 import android.app.Notification;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
+import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
@@ -77,6 +79,7 @@
 import android.net.ipsec.ike.IkeSession;
 import android.net.ipsec.ike.IkeSessionCallback;
 import android.net.ipsec.ike.IkeSessionParams;
+import android.net.ipsec.ike.exceptions.IkeProtocolException;
 import android.os.Binder;
 import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
@@ -108,9 +111,7 @@
 import com.android.internal.net.VpnConfig;
 import com.android.internal.net.VpnInfo;
 import com.android.internal.net.VpnProfile;
-import com.android.internal.notification.SystemNotificationChannels;
 import com.android.internal.util.ArrayUtils;
-import com.android.server.ConnectivityService;
 import com.android.server.DeviceIdleInternal;
 import com.android.server.LocalServices;
 import com.android.server.net.BaseNetworkObserver;
@@ -121,7 +122,6 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.math.BigInteger;
 import java.net.Inet4Address;
 import java.net.Inet6Address;
 import java.net.InetAddress;
@@ -142,6 +142,7 @@
 import java.util.concurrent.Executor;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
+import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.atomic.AtomicInteger;
 
 /**
@@ -150,36 +151,13 @@
 public class Vpn {
     private static final String NETWORKTYPE = "VPN";
     private static final String TAG = "Vpn";
+    private static final String VPN_PROVIDER_NAME_BASE = "VpnNetworkProvider:";
     private static final boolean LOGD = true;
 
     // Length of time (in milliseconds) that an app hosting an always-on VPN is placed on
     // the device idle allowlist during service launch and VPN bootstrap.
     private static final long VPN_LAUNCH_IDLE_ALLOWLIST_DURATION_MS = 60 * 1000;
 
-    // Settings for how much of the address space should be routed so that Vpn considers
-    // "most" of the address space is routed. This is used to determine whether this Vpn
-    // should be marked with the INTERNET capability.
-    private static final long MOST_IPV4_ADDRESSES_COUNT;
-    private static final BigInteger MOST_IPV6_ADDRESSES_COUNT;
-    static {
-        // 85% of the address space must be routed for Vpn to consider this VPN to provide
-        // INTERNET access.
-        final int howManyPercentIsMost = 85;
-
-        final long twoPower32 = 1L << 32;
-        MOST_IPV4_ADDRESSES_COUNT = twoPower32 * howManyPercentIsMost / 100;
-        final BigInteger twoPower128 = BigInteger.ONE.shiftLeft(128);
-        MOST_IPV6_ADDRESSES_COUNT = twoPower128
-                .multiply(BigInteger.valueOf(howManyPercentIsMost))
-                .divide(BigInteger.valueOf(100));
-    }
-    // How many routes to evaluate before bailing and declaring this Vpn should provide
-    // the INTERNET capability. This is necessary because computing the address space is
-    // O(n²) and this is running in the system service, so a limit is needed to alleviate
-    // the risk of attack.
-    // This is taken as a total of IPv4 + IPV6 routes for simplicity, but the algorithm
-    // is actually O(n²)+O(n²).
-    private static final int MAX_ROUTES_TO_EVALUATE = 150;
     private static final String LOCKDOWN_ALLOWLIST_SETTING_NAME =
             Settings.Secure.ALWAYS_ON_VPN_LOCKDOWN_WHITELIST;
     /**
@@ -196,12 +174,17 @@
     // automated reconnection
 
     private final Context mContext;
+    private final ConnectivityManager mConnectivityManager;
+    // The context is for specific user which is created from mUserId
+    private final Context mUserIdContext;
     @VisibleForTesting final Dependencies mDeps;
     private final NetworkInfo mNetworkInfo;
+    private int mLegacyState;
     @VisibleForTesting protected String mPackage;
     private int mOwnerUID;
     private boolean mIsPackageTargetingAtLeastQ;
-    private String mInterface;
+    @VisibleForTesting
+    protected String mInterface;
     private Connection mConnection;
 
     /** Tracks the runners for all VPN types managed by the platform (eg. LegacyVpn, PlatformVpn) */
@@ -212,6 +195,7 @@
     private final INetworkManagementService mNetd;
     @VisibleForTesting
     protected VpnConfig mConfig;
+    private final NetworkProvider mNetworkProvider;
     @VisibleForTesting
     protected NetworkAgent mNetworkAgent;
     private final Looper mLooper;
@@ -378,8 +362,8 @@
             }
         }
 
-        public boolean checkInterfacePresent(final Vpn vpn, final String iface) {
-            return vpn.jniCheck(iface) == 0;
+        public boolean isInterfacePresent(final Vpn vpn, final String iface) {
+            return vpn.jniCheck(iface) != 0;
         }
     }
 
@@ -395,6 +379,8 @@
             int userId, @NonNull KeyStore keyStore, SystemServices systemServices,
             Ikev2SessionCreator ikev2SessionCreator) {
         mContext = context;
+        mConnectivityManager = mContext.getSystemService(ConnectivityManager.class);
+        mUserIdContext = context.createContextAsUser(UserHandle.of(userId), 0 /* flags */);
         mDeps = deps;
         mNetd = netService;
         mUserId = userId;
@@ -412,12 +398,16 @@
             Log.wtf(TAG, "Problem registering observer", e);
         }
 
+        mNetworkProvider = new NetworkProvider(context, looper, VPN_PROVIDER_NAME_BASE + mUserId);
+        // This constructor is called in onUserStart and registers the provider. The provider
+        // will be unregistered in onUserStop.
+        mConnectivityManager.registerNetworkProvider(mNetworkProvider);
+        mLegacyState = LegacyVpnInfo.STATE_DISCONNECTED;
         mNetworkInfo = new NetworkInfo(ConnectivityManager.TYPE_VPN, 0 /* subtype */, NETWORKTYPE,
                 "" /* subtypeName */);
         mNetworkCapabilities = new NetworkCapabilities();
         mNetworkCapabilities.addTransportType(NetworkCapabilities.TRANSPORT_VPN);
         mNetworkCapabilities.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN);
-        updateCapabilities(null /* defaultNetwork */);
 
         loadAlwaysOnPackage(keyStore);
     }
@@ -435,11 +425,39 @@
      * Update current state, dispatching event to listeners.
      */
     @VisibleForTesting
+    @GuardedBy("this")
     protected void updateState(DetailedState detailedState, String reason) {
         if (LOGD) Log.d(TAG, "setting state=" + detailedState + ", reason=" + reason);
+        mLegacyState = LegacyVpnInfo.stateFromNetworkInfo(detailedState);
         mNetworkInfo.setDetailedState(detailedState, reason, null);
-        if (mNetworkAgent != null) {
-            mNetworkAgent.sendNetworkInfo(mNetworkInfo);
+        // TODO : only accept transitions when the agent is in the correct state (non-null for
+        // CONNECTED, DISCONNECTED and FAILED, null for CONNECTED).
+        // This will require a way for tests to pretend the VPN is connected that's not
+        // calling this method with CONNECTED.
+        // It will also require audit of where the code calls this method with DISCONNECTED
+        // with a null agent, which it was doing historically to make sure the agent is
+        // disconnected as this was a no-op if the agent was null.
+        switch (detailedState) {
+            case CONNECTED:
+                if (null != mNetworkAgent) {
+                    mNetworkAgent.markConnected();
+                }
+                break;
+            case DISCONNECTED:
+            case FAILED:
+                if (null != mNetworkAgent) {
+                    mNetworkAgent.unregister();
+                    mNetworkAgent = null;
+                }
+                break;
+            case CONNECTING:
+                if (null != mNetworkAgent) {
+                    throw new IllegalStateException("VPN can only go to CONNECTING state when"
+                            + " the agent is null.");
+                }
+                break;
+            default:
+                throw new IllegalArgumentException("Illegal state argument " + detailedState);
         }
         updateAlwaysOnNotification(detailedState);
     }
@@ -467,7 +485,7 @@
         final boolean isAlwaysMetered = mIsPackageTargetingAtLeastQ && mConfig.isMetered;
 
         applyUnderlyingCapabilities(
-                mContext.getSystemService(ConnectivityManager.class),
+                mConnectivityManager,
                 underlyingNetworks,
                 mNetworkCapabilities,
                 isAlwaysMetered);
@@ -477,10 +495,10 @@
 
     @VisibleForTesting
     public static void applyUnderlyingCapabilities(
-            ConnectivityManager cm,
-            Network[] underlyingNetworks,
-            NetworkCapabilities caps,
-            boolean isAlwaysMetered) {
+            @NonNull final ConnectivityManager cm,
+            @Nullable final Network[] underlyingNetworks,
+            @NonNull final NetworkCapabilities caps,
+            final boolean isAlwaysMetered) {
         int[] transportTypes = new int[] { NetworkCapabilities.TRANSPORT_VPN };
         int downKbps = NetworkCapabilities.LINK_BANDWIDTH_UNSPECIFIED;
         int upKbps = NetworkCapabilities.LINK_BANDWIDTH_UNSPECIFIED;
@@ -856,7 +874,7 @@
             Intent serviceIntent = new Intent(VpnConfig.SERVICE_INTERFACE);
             serviceIntent.setPackage(alwaysOnPackage);
             try {
-                return mContext.startServiceAsUser(serviceIntent, UserHandle.of(mUserId)) != null;
+                return mUserIdContext.startService(serviceIntent) != null;
             } catch (RuntimeException e) {
                 Log.e(TAG, "VpnService " + serviceIntent + " failed to start", e);
                 return false;
@@ -964,7 +982,7 @@
     /** Prepare the VPN for the given package. Does not perform permission checks. */
     @GuardedBy("this")
     private void prepareInternal(String newPackage) {
-        long token = Binder.clearCallingIdentity();
+        final long token = Binder.clearCallingIdentity();
         try {
             // Reset the interface.
             if (mInterface != null) {
@@ -1007,7 +1025,7 @@
             }
             mConfig = null;
 
-            updateState(DetailedState.IDLE, "prepare");
+            updateState(DetailedState.DISCONNECTED, "prepare");
             setVpnForcedLocked(mLockdown);
         } finally {
             Binder.restoreCallingIdentity(token);
@@ -1027,20 +1045,21 @@
 
         final long token = Binder.clearCallingIdentity();
         try {
-            final int[] toChange;
+            final String[] toChange;
 
             // Clear all AppOps if the app is being unauthorized.
             switch (vpnType) {
                 case VpnManager.TYPE_VPN_NONE:
-                    toChange = new int[] {
-                            AppOpsManager.OP_ACTIVATE_VPN, AppOpsManager.OP_ACTIVATE_PLATFORM_VPN
+                    toChange = new String[] {
+                            AppOpsManager.OPSTR_ACTIVATE_VPN,
+                            AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN
                     };
                     break;
                 case VpnManager.TYPE_VPN_PLATFORM:
-                    toChange = new int[] {AppOpsManager.OP_ACTIVATE_PLATFORM_VPN};
+                    toChange = new String[] {AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN};
                     break;
                 case VpnManager.TYPE_VPN_SERVICE:
-                    toChange = new int[] {AppOpsManager.OP_ACTIVATE_VPN};
+                    toChange = new String[] {AppOpsManager.OPSTR_ACTIVATE_VPN};
                     break;
                 default:
                     Log.wtf(TAG, "Unrecognized VPN type while granting authorization");
@@ -1049,9 +1068,9 @@
 
             final AppOpsManager appOpMgr =
                     (AppOpsManager) mContext.getSystemService(Context.APP_OPS_SERVICE);
-            for (final int appOp : toChange) {
+            for (final String appOpStr : toChange) {
                 appOpMgr.setMode(
-                        appOp,
+                        appOpStr,
                         uid,
                         packageName,
                         vpnType == VpnManager.TYPE_VPN_NONE
@@ -1077,21 +1096,22 @@
         }
     }
 
-    private static boolean doesPackageHaveAppop(Context context, String packageName, int appop) {
+    private static boolean doesPackageHaveAppop(Context context, String packageName,
+            String appOpStr) {
         final AppOpsManager appOps =
                 (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
 
         // Verify that the caller matches the given package and has the required permission.
-        return appOps.noteOpNoThrow(appop, Binder.getCallingUid(), packageName)
-                == AppOpsManager.MODE_ALLOWED;
+        return appOps.noteOpNoThrow(appOpStr, Binder.getCallingUid(), packageName,
+                null /* attributionTag */, null /* message */) == AppOpsManager.MODE_ALLOWED;
     }
 
     private static boolean isVpnServicePreConsented(Context context, String packageName) {
-        return doesPackageHaveAppop(context, packageName, AppOpsManager.OP_ACTIVATE_VPN);
+        return doesPackageHaveAppop(context, packageName, AppOpsManager.OPSTR_ACTIVATE_VPN);
     }
 
     private static boolean isVpnProfilePreConsented(Context context, String packageName) {
-        return doesPackageHaveAppop(context, packageName, AppOpsManager.OP_ACTIVATE_PLATFORM_VPN)
+        return doesPackageHaveAppop(context, packageName, AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN)
                 || isVpnServicePreConsented(context, packageName);
     }
 
@@ -1128,7 +1148,13 @@
         return mNetworkInfo;
     }
 
-    public int getNetId() {
+    /**
+     * Return netId of current running VPN network.
+     *
+     * @return a netId if there is a running VPN network or NETID_UNSET if there is no running VPN
+     *         network or network is null.
+     */
+    public synchronized int getNetId() {
         final NetworkAgent agent = mNetworkAgent;
         if (null == agent) return NETID_UNSET;
         final Network network = agent.getNetwork();
@@ -1234,7 +1260,8 @@
         // behaves the same as when it uses the default network.
         mNetworkCapabilities.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
 
-        mNetworkInfo.setDetailedState(DetailedState.CONNECTING, null, null);
+        mLegacyState = LegacyVpnInfo.STATE_CONNECTING;
+        updateState(DetailedState.CONNECTING, "agentConnect");
 
         NetworkAgentConfig networkAgentConfig = new NetworkAgentConfig();
         networkAgentConfig.allowBypass = mConfig.allowBypass && !mLockdown;
@@ -1243,26 +1270,40 @@
         mNetworkCapabilities.setAdministratorUids(new int[] {mOwnerUID});
         mNetworkCapabilities.setUids(createUserAndRestrictedProfilesRanges(mUserId,
                 mConfig.allowedApplications, mConfig.disallowedApplications));
-        long token = Binder.clearCallingIdentity();
-        try {
-            mNetworkAgent = new NetworkAgent(mLooper, mContext, NETWORKTYPE /* logtag */,
-                    mNetworkInfo, mNetworkCapabilities, lp,
-                    ConnectivityConstants.VPN_DEFAULT_SCORE, networkAgentConfig,
-                    NetworkProvider.ID_VPN) {
-                            @Override
-                            public void unwanted() {
-                                // We are user controlled, not driven by NetworkRequest.
-                            }
-                        };
-        } finally {
-            Binder.restoreCallingIdentity(token);
+
+        // Only apps targeting Q and above can explicitly declare themselves as metered.
+        // These VPNs are assumed metered unless they state otherwise.
+        if (mIsPackageTargetingAtLeastQ && mConfig.isMetered) {
+            mNetworkCapabilities.removeCapability(NET_CAPABILITY_NOT_METERED);
+        } else {
+            mNetworkCapabilities.addCapability(NET_CAPABILITY_NOT_METERED);
         }
+
+        mNetworkAgent = new NetworkAgent(mContext, mLooper, NETWORKTYPE /* logtag */,
+                mNetworkCapabilities, lp,
+                ConnectivityConstants.VPN_DEFAULT_SCORE, networkAgentConfig, mNetworkProvider) {
+            @Override
+            public void unwanted() {
+                // We are user controlled, not driven by NetworkRequest.
+            }
+        };
+        Binder.withCleanCallingIdentity(() -> {
+            try {
+                mNetworkAgent.register();
+            } catch (final Exception e) {
+                // If register() throws, don't keep an unregistered agent.
+                mNetworkAgent = null;
+                throw e;
+            }
+        });
+        mNetworkAgent.setUnderlyingNetworks((mConfig.underlyingNetworks != null)
+                ? Arrays.asList(mConfig.underlyingNetworks) : null);
         mNetworkInfo.setIsAvailable(true);
         updateState(DetailedState.CONNECTED, "agentConnect");
     }
 
     private boolean canHaveRestrictedProfile(int userId) {
-        long token = Binder.clearCallingIdentity();
+        final long token = Binder.clearCallingIdentity();
         try {
             return UserManager.get(mContext).canHaveRestrictedProfile(userId);
         } finally {
@@ -1272,19 +1313,12 @@
 
     private void agentDisconnect(NetworkAgent networkAgent) {
         if (networkAgent != null) {
-            NetworkInfo networkInfo = new NetworkInfo(mNetworkInfo);
-            networkInfo.setIsAvailable(false);
-            networkInfo.setDetailedState(DetailedState.DISCONNECTED, null, null);
-            networkAgent.sendNetworkInfo(networkInfo);
+            networkAgent.unregister();
         }
     }
 
     private void agentDisconnect() {
-        if (mNetworkInfo.isConnected()) {
-            mNetworkInfo.setIsAvailable(false);
-            updateState(DetailedState.DISCONNECTED, "agentDisconnect");
-            mNetworkAgent = null;
-        }
+        updateState(DetailedState.DISCONNECTED, "agentDisconnect");
     }
 
     /**
@@ -1309,21 +1343,22 @@
         // Check if the service is properly declared.
         Intent intent = new Intent(VpnConfig.SERVICE_INTERFACE);
         intent.setClassName(mPackage, config.user);
-        long token = Binder.clearCallingIdentity();
+        final long token = Binder.clearCallingIdentity();
         try {
             // Restricted users are not allowed to create VPNs, they are tied to Owner
             enforceNotRestrictedUser();
 
-            ResolveInfo info = AppGlobals.getPackageManager().resolveService(intent,
-                    null, 0, mUserId);
+            final PackageManager packageManager = mUserIdContext.getPackageManager();
+            if (packageManager == null) {
+                throw new UnsupportedOperationException("Cannot get PackageManager.");
+            }
+            final ResolveInfo info = packageManager.resolveService(intent, 0 /* flags */);
             if (info == null) {
                 throw new SecurityException("Cannot find " + config.user);
             }
             if (!BIND_VPN_SERVICE.equals(info.serviceInfo.permission)) {
                 throw new SecurityException(config.user + " does not require " + BIND_VPN_SERVICE);
             }
-        } catch (RemoteException e) {
-            throw new SecurityException("Cannot find " + config.user);
         } finally {
             Binder.restoreCallingIdentity(token);
         }
@@ -1372,6 +1407,8 @@
                     && updateLinkPropertiesInPlaceIfPossible(mNetworkAgent, oldConfig)) {
                 // Keep mNetworkAgent unchanged
             } else {
+                // Initialize the state for a new agent, while keeping the old one connected
+                // in case this new connection fails.
                 mNetworkAgent = null;
                 updateState(DetailedState.CONNECTING, "establish");
                 // Set up forwarding and DNS rules.
@@ -1463,7 +1500,7 @@
             final long token = Binder.clearCallingIdentity();
             List<UserInfo> users;
             try {
-                users = UserManager.get(mContext).getUsers(true);
+                users = UserManager.get(mContext).getAliveUsers();
             } finally {
                 Binder.restoreCallingIdentity(token);
             }
@@ -1555,12 +1592,13 @@
                     try {
                         addUserToRanges(existingRanges, userId, mConfig.allowedApplications,
                                 mConfig.disallowedApplications);
-                        // ConnectivityService will call {@link #updateCapabilities} and apply
-                        // those for VPN network.
                         mNetworkCapabilities.setUids(existingRanges);
                     } catch (Exception e) {
                         Log.wtf(TAG, "Failed to add restricted user to owner", e);
                     }
+                    if (mNetworkAgent != null) {
+                        mNetworkAgent.sendNetworkCapabilities(mNetworkCapabilities);
+                    }
                 }
                 setVpnForcedLocked(mLockdown);
             }
@@ -1583,12 +1621,13 @@
                         final List<UidRange> removedRanges =
                                 uidRangesForUser(userId, existingRanges);
                         existingRanges.removeAll(removedRanges);
-                        // ConnectivityService will call {@link #updateCapabilities} and
-                        // apply those for VPN network.
                         mNetworkCapabilities.setUids(existingRanges);
                     } catch (Exception e) {
                         Log.wtf(TAG, "Failed to remove restricted user to owner", e);
                     }
+                    if (mNetworkAgent != null) {
+                        mNetworkAgent.sendNetworkCapabilities(mNetworkCapabilities);
+                    }
                 }
                 setVpnForcedLocked(mLockdown);
             }
@@ -1600,11 +1639,14 @@
      */
     public synchronized void onUserStopped() {
         // Switch off networking lockdown (if it was enabled)
-        setLockdown(false);
+        setVpnForcedLocked(false);
         mAlwaysOn = false;
 
         // Quit any active connections
         agentDisconnect();
+
+        // The provider has been registered in the constructor, which is called in onUserStart.
+        mConnectivityManager.unregisterNetworkProvider(mNetworkProvider);
     }
 
     /**
@@ -1706,7 +1748,7 @@
     /**
      * Return the configuration of the currently running VPN.
      */
-    public VpnConfig getVpnConfig() {
+    public synchronized VpnConfig getVpnConfig() {
         enforceControlPermission();
         return mConfig;
     }
@@ -1837,6 +1879,8 @@
                 }
             }
         }
+        mNetworkAgent.setUnderlyingNetworks((mConfig.underlyingNetworks != null)
+                ? Arrays.asList(mConfig.underlyingNetworks) : null);
         return true;
     }
 
@@ -1912,9 +1956,10 @@
         final UserHandle user = UserHandle.of(mUserId);
         final long token = Binder.clearCallingIdentity();
         try {
-            final NotificationManager notificationManager = NotificationManager.from(mContext);
+            final NotificationManager notificationManager =
+                    mUserIdContext.getSystemService(NotificationManager.class);
             if (!visible) {
-                notificationManager.cancelAsUser(TAG, SystemMessage.NOTE_VPN_DISCONNECTED, user);
+                notificationManager.cancel(TAG, SystemMessage.NOTE_VPN_DISCONNECTED);
                 return;
             }
             final Intent intent = new Intent();
@@ -1925,7 +1970,7 @@
             final PendingIntent configIntent = mSystemServices.pendingIntentGetActivityAsUser(
                     intent, PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT, user);
             final Notification.Builder builder =
-                    new Notification.Builder(mContext, SystemNotificationChannels.VPN)
+                    new Notification.Builder(mContext, NOTIFICATION_CHANNEL_VPN)
                             .setSmallIcon(R.drawable.vpn_connected)
                             .setContentTitle(mContext.getString(R.string.vpn_lockdown_disconnected))
                             .setContentText(mContext.getString(R.string.vpn_lockdown_config))
@@ -1934,8 +1979,7 @@
                             .setVisibility(Notification.VISIBILITY_PUBLIC)
                             .setOngoing(true)
                             .setColor(mContext.getColor(R.color.system_notification_accent_color));
-            notificationManager.notifyAsUser(TAG, SystemMessage.NOTE_VPN_DISCONNECTED,
-                    builder.build(), user);
+            notificationManager.notify(TAG, SystemMessage.NOTE_VPN_DISCONNECTED, builder.build());
         } finally {
             Binder.restoreCallingIdentity(token);
         }
@@ -1960,36 +2004,42 @@
          */
         public PendingIntent pendingIntentGetActivityAsUser(
                 Intent intent, int flags, UserHandle user) {
-            return PendingIntent.getActivityAsUser(mContext, 0 /*request*/, intent, flags,
-                    null /*options*/, user);
+            return PendingIntent.getActivity(
+                    mContext.createContextAsUser(user, 0 /* flags */), 0 /* requestCode */,
+                    intent, flags);
         }
 
         /**
          * @see Settings.Secure#putStringForUser
          */
         public void settingsSecurePutStringForUser(String key, String value, int userId) {
-            Settings.Secure.putStringForUser(mContext.getContentResolver(), key, value, userId);
+            Settings.Secure.putString(getContentResolverAsUser(userId), key, value);
         }
 
         /**
          * @see Settings.Secure#putIntForUser
          */
         public void settingsSecurePutIntForUser(String key, int value, int userId) {
-            Settings.Secure.putIntForUser(mContext.getContentResolver(), key, value, userId);
+            Settings.Secure.putInt(getContentResolverAsUser(userId), key, value);
         }
 
         /**
          * @see Settings.Secure#getStringForUser
          */
         public String settingsSecureGetStringForUser(String key, int userId) {
-            return Settings.Secure.getStringForUser(mContext.getContentResolver(), key, userId);
+            return Settings.Secure.getString(getContentResolverAsUser(userId), key);
         }
 
         /**
          * @see Settings.Secure#getIntForUser
          */
         public int settingsSecureGetIntForUser(String key, int def, int userId) {
-            return Settings.Secure.getIntForUser(mContext.getContentResolver(), key, def, userId);
+            return Settings.Secure.getInt(getContentResolverAsUser(userId), key, def);
+        }
+
+        private ContentResolver getContentResolverAsUser(int userId) {
+            return mContext.createContextAsUser(
+                    UserHandle.of(userId), 0 /* flags */).getContentResolver();
         }
 
         public boolean isCallerSystem() {
@@ -2037,7 +2087,7 @@
      */
     public void startLegacyVpn(VpnProfile profile, KeyStore keyStore, LinkProperties egress) {
         enforceControlPermission();
-        long token = Binder.clearCallingIdentity();
+        final long token = Binder.clearCallingIdentity();
         try {
             startLegacyVpnPrivileged(profile, keyStore, egress);
         } finally {
@@ -2144,7 +2194,11 @@
                 break;
         }
 
-        // Prepare arguments for mtpd.
+        // Prepare arguments for mtpd. MTU/MRU calculated conservatively. Only IPv4 supported
+        // because LegacyVpn.
+        // 1500 - 60 (Carrier-internal IPv6 + UDP + GTP) - 10 (PPP) - 16 (L2TP) - 8 (UDP)
+        //   - 77 (IPsec w/ SHA-2 512, 256b trunc-len, AES-CBC) - 8 (UDP encap) - 20 (IPv4)
+        //   - 28 (464xlat)
         String[] mtpd = null;
         switch (profile.type) {
             case VpnProfile.TYPE_PPTP:
@@ -2152,7 +2206,7 @@
                     iface, "pptp", profile.server, "1723",
                     "name", profile.username, "password", profile.password,
                     "linkname", "vpn", "refuse-eap", "nodefaultroute",
-                    "usepeerdns", "idle", "1800", "mtu", "1400", "mru", "1400",
+                    "usepeerdns", "idle", "1800", "mtu", "1270", "mru", "1270",
                     (profile.mppe ? "+mppe" : "nomppe"),
                 };
                 break;
@@ -2162,7 +2216,7 @@
                     iface, "l2tp", profile.server, "1701", profile.l2tpSecret,
                     "name", profile.username, "password", profile.password,
                     "linkname", "vpn", "refuse-eap", "nodefaultroute",
-                    "usepeerdns", "idle", "1800", "mtu", "1400", "mru", "1400",
+                    "usepeerdns", "idle", "1800", "mtu", "1270", "mru", "1270",
                 };
                 break;
         }
@@ -2246,7 +2300,7 @@
 
         final LegacyVpnInfo info = new LegacyVpnInfo();
         info.key = mConfig.user;
-        info.state = LegacyVpnInfo.stateFromNetworkInfo(mNetworkInfo);
+        info.state = mLegacyState;
         if (mNetworkInfo.isConnected()) {
             info.intent = mStatusIntent;
         }
@@ -2301,7 +2355,7 @@
         void onChildTransformCreated(
                 @NonNull Network network, @NonNull IpSecTransform transform, int direction);
 
-        void onSessionLost(@NonNull Network network);
+        void onSessionLost(@NonNull Network network, @Nullable Exception exception);
     }
 
     /**
@@ -2369,7 +2423,6 @@
             // When restricted to test networks, select any network with TRANSPORT_TEST. Since the
             // creator of the profile and the test network creator both have MANAGE_TEST_NETWORKS,
             // this is considered safe.
-            final ConnectivityManager cm = ConnectivityManager.from(mContext);
             final NetworkRequest req;
 
             if (mProfile.isRestrictedToTestNetworks()) {
@@ -2378,10 +2431,17 @@
                         .addTransportType(NetworkCapabilities.TRANSPORT_TEST)
                         .build();
             } else {
-                req = cm.getDefaultRequest();
+                // Basically, the request here is referring to the default request which is defined
+                // in ConnectivityService. Ideally, ConnectivityManager should provide an new API
+                // which can provide the status of physical network even though there is a virtual
+                // network. b/147280869 is used for tracking the new API.
+                // TODO: Use the new API to register default physical network.
+                req = new NetworkRequest.Builder()
+                        .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
+                        .build();
             }
 
-            cm.requestNetwork(req, mNetworkCallback);
+            mConnectivityManager.requestNetwork(req, mNetworkCallback);
         }
 
         private boolean isActiveNetwork(@Nullable Network network) {
@@ -2458,7 +2518,7 @@
                 networkAgent.sendLinkProperties(lp);
             } catch (Exception e) {
                 Log.d(TAG, "Error in ChildOpened for network " + network, e);
-                onSessionLost(network);
+                onSessionLost(network, e);
             }
         }
 
@@ -2488,7 +2548,7 @@
                 mIpSecManager.applyTunnelModeTransform(mTunnelIface, direction, transform);
             } catch (IOException e) {
                 Log.d(TAG, "Transform application failed for network " + network, e);
-                onSessionLost(network);
+                onSessionLost(network, e);
             }
         }
 
@@ -2546,11 +2606,20 @@
                     Log.d(TAG, "Ike Session started for network " + network);
                 } catch (Exception e) {
                     Log.i(TAG, "Setup failed for network " + network + ". Aborting", e);
-                    onSessionLost(network);
+                    onSessionLost(network, e);
                 }
             });
         }
 
+        /** Marks the state as FAILED, and disconnects. */
+        private void markFailedAndDisconnect(Exception exception) {
+            synchronized (Vpn.this) {
+                updateState(DetailedState.FAILED, exception.getMessage());
+            }
+
+            disconnectVpnRunner();
+        }
+
         /**
          * Handles loss of a session
          *
@@ -2560,7 +2629,7 @@
          * <p>This method MUST always be called on the mExecutor thread in order to ensure
          * consistency of the Ikev2VpnRunner fields.
          */
-        public void onSessionLost(@NonNull Network network) {
+        public void onSessionLost(@NonNull Network network, @Nullable Exception exception) {
             if (!isActiveNetwork(network)) {
                 Log.d(TAG, "onSessionLost() called for obsolete network " + network);
 
@@ -2572,6 +2641,27 @@
                 return;
             }
 
+            if (exception instanceof IkeProtocolException) {
+                final IkeProtocolException ikeException = (IkeProtocolException) exception;
+
+                switch (ikeException.getErrorType()) {
+                    case IkeProtocolException.ERROR_TYPE_NO_PROPOSAL_CHOSEN: // Fallthrough
+                    case IkeProtocolException.ERROR_TYPE_INVALID_KE_PAYLOAD: // Fallthrough
+                    case IkeProtocolException.ERROR_TYPE_AUTHENTICATION_FAILED: // Fallthrough
+                    case IkeProtocolException.ERROR_TYPE_SINGLE_PAIR_REQUIRED: // Fallthrough
+                    case IkeProtocolException.ERROR_TYPE_FAILED_CP_REQUIRED: // Fallthrough
+                    case IkeProtocolException.ERROR_TYPE_TS_UNACCEPTABLE:
+                        // All the above failures are configuration errors, and are terminal
+                        markFailedAndDisconnect(exception);
+                        return;
+                    // All other cases possibly recoverable.
+                }
+            } else if (exception instanceof IllegalArgumentException) {
+                // Failed to build IKE/ChildSessionParams; fatal profile configuration error
+                markFailedAndDisconnect(exception);
+                return;
+            }
+
             mActiveNetwork = null;
 
             // Close all obsolete state, but keep VPN alive incase a usable network comes up.
@@ -2621,28 +2711,37 @@
         }
 
         /**
-         * Cleans up all Ikev2VpnRunner internal state
+         * Disconnects and shuts down this VPN.
+         *
+         * <p>This method resets all internal Ikev2VpnRunner state, but unless called via
+         * VpnRunner#exit(), this Ikev2VpnRunner will still be listed as the active VPN of record
+         * until the next VPN is started, or the Ikev2VpnRunner is explicitly exited. This is
+         * necessary to ensure that the detailed state is shown in the Settings VPN menus; if the
+         * active VPN is cleared, Settings VPNs will not show the resultant state or errors.
          *
          * <p>This method MUST always be called on the mExecutor thread in order to ensure
          * consistency of the Ikev2VpnRunner fields.
          */
-        private void shutdownVpnRunner() {
+        private void disconnectVpnRunner() {
             mActiveNetwork = null;
             mIsRunning = false;
 
             resetIkeState();
 
-            final ConnectivityManager cm = ConnectivityManager.from(mContext);
-            cm.unregisterNetworkCallback(mNetworkCallback);
+            mConnectivityManager.unregisterNetworkCallback(mNetworkCallback);
 
             mExecutor.shutdown();
         }
 
         @Override
         public void exitVpnRunner() {
-            mExecutor.execute(() -> {
-                shutdownVpnRunner();
-            });
+            try {
+                mExecutor.execute(() -> {
+                    disconnectVpnRunner();
+                });
+            } catch (RejectedExecutionException ignored) {
+                // The Ikev2VpnRunner has already shut down.
+            }
         }
     }
 
@@ -2691,6 +2790,8 @@
 
         LegacyVpnRunner(VpnConfig config, String[] racoon, String[] mtpd, VpnProfile profile) {
             super(TAG);
+            checkArgument(racoon != null || mtpd != null, "Arguments to racoon and mtpd "
+                    + "must not both be null");
             mConfig = config;
             mDaemons = new String[] {"racoon", "mtpd"};
             // TODO: clear arguments from memory once launched
@@ -2708,12 +2809,14 @@
             mProfile = profile;
 
             if (!TextUtils.isEmpty(mOuterInterface)) {
-                final ConnectivityManager cm = ConnectivityManager.from(mContext);
-                for (Network network : cm.getAllNetworks()) {
-                    final LinkProperties lp = cm.getLinkProperties(network);
+                for (Network network : mConnectivityManager.getAllNetworks()) {
+                    final LinkProperties lp = mConnectivityManager.getLinkProperties(network);
                     if (lp != null && lp.getAllInterfaceNames().contains(mOuterInterface)) {
-                        final NetworkInfo networkInfo = cm.getNetworkInfo(network);
-                        if (networkInfo != null) mOuterConnection.set(networkInfo.getType());
+                        final NetworkInfo netInfo = mConnectivityManager.getNetworkInfo(network);
+                        if (netInfo != null) {
+                            mOuterConnection.set(netInfo.getType());
+                            break;
+                        }
                     }
                 }
             }
@@ -2844,15 +2947,6 @@
                 }
                 new File("/data/misc/vpn/abort").delete();
 
-                // Check if we need to restart any of the daemons.
-                boolean restart = false;
-                for (String[] arguments : mArguments) {
-                    restart = restart || (arguments != null);
-                }
-                if (!restart) {
-                    agentDisconnect();
-                    return;
-                }
                 updateState(DetailedState.CONNECTING, "execute");
 
                 // Start the daemon with arguments.
@@ -2944,7 +3038,7 @@
                     checkInterruptAndDelay(false);
 
                     // Check if the interface is gone while we are waiting.
-                    if (mDeps.checkInterfacePresent(Vpn.this, mConfig.interfaze)) {
+                    if (!mDeps.isInterfacePresent(Vpn.this, mConfig.interfaze)) {
                         throw new IllegalStateException(mConfig.interfaze + " is gone");
                     }
 
diff --git a/services/core/java/com/android/server/connectivity/VpnIkev2Utils.java b/services/core/java/com/android/server/connectivity/VpnIkev2Utils.java
index 103f659..62630300 100644
--- a/services/core/java/com/android/server/connectivity/VpnIkev2Utils.java
+++ b/services/core/java/com/android/server/connectivity/VpnIkev2Utils.java
@@ -270,13 +270,13 @@
         @Override
         public void onClosed() {
             Log.d(mTag, "IkeClosed for network " + mNetwork);
-            mCallback.onSessionLost(mNetwork); // Server requested session closure. Retry?
+            mCallback.onSessionLost(mNetwork, null); // Server requested session closure. Retry?
         }
 
         @Override
         public void onClosedExceptionally(@NonNull IkeException exception) {
             Log.d(mTag, "IkeClosedExceptionally for network " + mNetwork, exception);
-            mCallback.onSessionLost(mNetwork);
+            mCallback.onSessionLost(mNetwork, exception);
         }
 
         @Override
@@ -306,13 +306,13 @@
         @Override
         public void onClosed() {
             Log.d(mTag, "ChildClosed for network " + mNetwork);
-            mCallback.onSessionLost(mNetwork);
+            mCallback.onSessionLost(mNetwork, null);
         }
 
         @Override
         public void onClosedExceptionally(@NonNull IkeException exception) {
             Log.d(mTag, "ChildClosedExceptionally for network " + mNetwork, exception);
-            mCallback.onSessionLost(mNetwork);
+            mCallback.onSessionLost(mNetwork, exception);
         }
 
         @Override
@@ -349,7 +349,7 @@
         @Override
         public void onLost(@NonNull Network network) {
             Log.d(mTag, "Tearing down; lost network: " + network);
-            mCallback.onSessionLost(network);
+            mCallback.onSessionLost(network, null);
         }
     }
 
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java
index 1058000..24661d6 100644
--- a/services/core/java/com/android/server/display/DisplayManagerService.java
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java
@@ -2548,8 +2548,7 @@
         public boolean requestPowerState(DisplayPowerRequest request,
                 boolean waitForNegativeProximity) {
             synchronized (mSyncRoot) {
-                return mDisplayPowerController.requestPowerState(request,
-                        waitForNegativeProximity);
+                return mDisplayPowerController.requestPowerState(request, waitForNegativeProximity);
             }
         }
 
@@ -2677,6 +2676,10 @@
             return getDisplayedContentSampleInternal(displayId, maxFrames, timestamp);
         }
 
+        @Override
+        public void ignoreProximitySensorUntilChanged() {
+            mDisplayPowerController.ignoreProximitySensorUntilChanged();
+        }
     }
 
     class DesiredDisplayModeSpecsObserver
diff --git a/services/core/java/com/android/server/display/DisplayModeDirector.java b/services/core/java/com/android/server/display/DisplayModeDirector.java
index 144c27d..baa43cfd 100644
--- a/services/core/java/com/android/server/display/DisplayModeDirector.java
+++ b/services/core/java/com/android/server/display/DisplayModeDirector.java
@@ -120,7 +120,6 @@
     public void start(SensorManager sensorManager) {
         mSettingsObserver.observe();
         mDisplayObserver.observe();
-        mSettingsObserver.observe();
         mBrightnessObserver.observe(sensorManager);
         synchronized (mLock) {
             // We may have a listener already registered before the call to start, so go ahead and
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
index 9411c562..7c0f419 100644
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
@@ -117,6 +117,7 @@
     private static final int MSG_CONFIGURE_BRIGHTNESS = 5;
     private static final int MSG_SET_TEMPORARY_BRIGHTNESS = 6;
     private static final int MSG_SET_TEMPORARY_AUTO_BRIGHTNESS_ADJUSTMENT = 7;
+    private static final int MSG_IGNORE_PROXIMITY = 8;
 
     private static final int PROXIMITY_UNKNOWN = -1;
     private static final int PROXIMITY_NEGATIVE = 0;
@@ -263,6 +264,11 @@
     // go to sleep by the user.  While true, the screen remains off.
     private boolean mWaitingForNegativeProximity;
 
+    // True if the device should not take into account the proximity sensor
+    // until either the proximity sensor state changes, or there is no longer a
+    // request to listen to proximity sensor.
+    private boolean mIgnoreProximityUntilChanged;
+
     // The actual proximity sensor threshold value.
     private float mProximityThreshold;
 
@@ -760,8 +766,7 @@
 
             if (mPowerRequest == null) {
                 mPowerRequest = new DisplayPowerRequest(mPendingRequestLocked);
-                mWaitingForNegativeProximity = mPendingWaitForNegativeProximityLocked;
-                mPendingWaitForNegativeProximityLocked = false;
+                updatePendingProximityRequestsLocked();
                 mPendingRequestChangedLocked = false;
                 mustInitialize = true;
                 // Assume we're on and bright until told otherwise, since that's the state we turn
@@ -770,8 +775,7 @@
             } else if (mPendingRequestChangedLocked) {
                 previousPolicy = mPowerRequest.policy;
                 mPowerRequest.copyFrom(mPendingRequestLocked);
-                mWaitingForNegativeProximity |= mPendingWaitForNegativeProximityLocked;
-                mPendingWaitForNegativeProximityLocked = false;
+                updatePendingProximityRequestsLocked();
                 mPendingRequestChangedLocked = false;
                 mDisplayReadyLocked = false;
             } else {
@@ -822,9 +826,16 @@
         // Apply the proximity sensor.
         if (mProximitySensor != null) {
             if (mPowerRequest.useProximitySensor && state != Display.STATE_OFF) {
+                // At this point the policy says that the screen should be on, but we've been
+                // asked to listen to the prox sensor to adjust the display state, so lets make
+                // sure the sensor is on.
                 setProximitySensorEnabled(true);
                 if (!mScreenOffBecauseOfProximity
-                        && mProximity == PROXIMITY_POSITIVE) {
+                        && mProximity == PROXIMITY_POSITIVE
+                        && !mIgnoreProximityUntilChanged) {
+                    // Prox sensor already reporting "near" so we should turn off the screen.
+                    // Also checked that we aren't currently set to ignore the proximity sensor
+                    // temporarily.
                     mScreenOffBecauseOfProximity = true;
                     sendOnProximityPositiveWithWakelock();
                 }
@@ -832,18 +843,28 @@
                     && mScreenOffBecauseOfProximity
                     && mProximity == PROXIMITY_POSITIVE
                     && state != Display.STATE_OFF) {
+                // The policy says that we should have the screen on, but it's off due to the prox
+                // and we've been asked to wait until the screen is far from the user to turn it
+                // back on. Let keep the prox sensor on so we can tell when it's far again.
                 setProximitySensorEnabled(true);
             } else {
+                // We haven't been asked to use the prox sensor and we're not waiting on the screen
+                // to turn back on...so lets shut down the prox sensor.
                 setProximitySensorEnabled(false);
                 mWaitingForNegativeProximity = false;
             }
+
             if (mScreenOffBecauseOfProximity
-                    && mProximity != PROXIMITY_POSITIVE) {
+                    && (mProximity != PROXIMITY_POSITIVE || mIgnoreProximityUntilChanged)) {
+                // The screen *was* off due to prox being near, but now it's "far" so lets turn
+                // the screen back on.  Also turn it back on if we've been asked to ignore the
+                // prox sensor temporarily.
                 mScreenOffBecauseOfProximity = false;
                 sendOnProximityNegativeWithWakelock();
             }
         } else {
             mWaitingForNegativeProximity = false;
+            mIgnoreProximityUntilChanged = false;
         }
         if (mScreenOffBecauseOfProximity) {
             state = Display.STATE_OFF;
@@ -1181,6 +1202,14 @@
         sendUpdatePowerState();
     }
 
+    /**
+     * Ignores the proximity sensor until the sensor state changes, but only if the sensor is
+     * currently enabled and forcing the screen to be dark.
+     */
+    public void ignoreProximitySensorUntilChanged() {
+        mHandler.sendEmptyMessage(MSG_IGNORE_PROXIMITY);
+    }
+
     public void setBrightnessConfiguration(BrightnessConfiguration c) {
         Message msg = mHandler.obtainMessage(MSG_CONFIGURE_BRIGHTNESS, c);
         msg.sendToTarget();
@@ -1529,6 +1558,7 @@
                 // Register the listener.
                 // Proximity sensor state already cleared initially.
                 mProximitySensorEnabled = true;
+                mIgnoreProximityUntilChanged = false;
                 mSensorManager.registerListener(mProximitySensorListener, mProximitySensor,
                         SensorManager.SENSOR_DELAY_NORMAL, mHandler);
             }
@@ -1538,6 +1568,7 @@
                 // Clear the proximity sensor state for next time.
                 mProximitySensorEnabled = false;
                 mProximity = PROXIMITY_UNKNOWN;
+                mIgnoreProximityUntilChanged = false;
                 mPendingProximity = PROXIMITY_UNKNOWN;
                 mHandler.removeMessages(MSG_PROXIMITY_SENSOR_DEBOUNCED);
                 mSensorManager.unregisterListener(mProximitySensorListener);
@@ -1580,6 +1611,11 @@
                 && mPendingProximityDebounceTime >= 0) {
             final long now = SystemClock.uptimeMillis();
             if (mPendingProximityDebounceTime <= now) {
+                if (mProximity != mPendingProximity) {
+                    // if the status of the sensor changed, stop ignoring.
+                    mIgnoreProximityUntilChanged = false;
+                    Slog.i(TAG, "No longer ignoring proximity [" + mPendingProximity + "]");
+                }
                 // Sensor reading accepted.  Apply the change then release the wake lock.
                 mProximity = mPendingProximity;
                 updatePowerState();
@@ -1723,6 +1759,27 @@
         }
     }
 
+    private void updatePendingProximityRequestsLocked() {
+        mWaitingForNegativeProximity |= mPendingWaitForNegativeProximityLocked;
+        mPendingWaitForNegativeProximityLocked = false;
+
+        if (mIgnoreProximityUntilChanged) {
+            // Also, lets stop waiting for negative proximity if we're ignoring it.
+            mWaitingForNegativeProximity = false;
+        }
+    }
+
+    private void ignoreProximitySensorUntilChangedInternal() {
+        if (!mIgnoreProximityUntilChanged
+                && mPowerRequest.useProximitySensor
+                && mProximity == PROXIMITY_POSITIVE) {
+            // Only ignore if it is still reporting positive (near)
+            mIgnoreProximityUntilChanged = true;
+            Slog.i(TAG, "Ignoring proximity");
+            updatePowerState();
+        }
+    }
+
     private final Runnable mOnStateChangedRunnable = new Runnable() {
         @Override
         public void run() {
@@ -1961,6 +2018,10 @@
                     mTemporaryAutoBrightnessAdjustment = Float.intBitsToFloat(msg.arg1);
                     updatePowerState();
                     break;
+
+                case MSG_IGNORE_PROXIMITY:
+                    ignoreProximitySensorUntilChangedInternal();
+                    break;
             }
         }
     }
diff --git a/services/core/java/com/android/server/gpu/GpuService.java b/services/core/java/com/android/server/gpu/GpuService.java
index 8a3c963..c0617ca 100644
--- a/services/core/java/com/android/server/gpu/GpuService.java
+++ b/services/core/java/com/android/server/gpu/GpuService.java
@@ -29,8 +29,6 @@
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.database.ContentObserver;
-import android.gamedriver.GameDriverProto.Blacklist;
-import android.gamedriver.GameDriverProto.Blacklists;
 import android.net.Uri;
 import android.os.Build;
 import android.os.Handler;
@@ -40,6 +38,8 @@
 import android.provider.DeviceConfig.Properties;
 import android.provider.Settings;
 import android.text.TextUtils;
+import android.updatabledriver.UpdatableDriverProto.Denylist;
+import android.updatabledriver.UpdatableDriverProto.Denylists;
 import android.util.Base64;
 import android.util.Slog;
 
@@ -65,7 +65,7 @@
 
     private static final String PROD_DRIVER_PROPERTY = "ro.gfx.driver.0";
     private static final String DEV_DRIVER_PROPERTY = "ro.gfx.driver.1";
-    private static final String GAME_DRIVER_WHITELIST_FILENAME = "whitelist.txt";
+    private static final String GAME_DRIVER_ALLOWLIST_FILENAME = "allowlist.txt";
     private static final int BASE64_FLAGS = Base64.NO_PADDING | Base64.NO_WRAP;
 
     private final Context mContext;
@@ -81,7 +81,7 @@
     private SettingsObserver mSettingsObserver;
     private DeviceConfigListener mDeviceConfigListener;
     @GuardedBy("mLock")
-    private Blacklists mBlacklists;
+    private Denylists mDenylists;
 
     public GpuService(Context context) {
         super(context);
@@ -118,19 +118,19 @@
             mSettingsObserver = new SettingsObserver();
             mDeviceConfigListener = new DeviceConfigListener();
             fetchGameDriverPackageProperties();
-            processBlacklists();
-            setBlacklist();
+            processDenylists();
+            setDenylist();
             fetchDeveloperDriverPackageProperties();
         }
     }
 
     private final class SettingsObserver extends ContentObserver {
-        private final Uri mGameDriverBlackUri =
-                Settings.Global.getUriFor(Settings.Global.GAME_DRIVER_BLACKLISTS);
+        private final Uri mGameDriverDenylistsUri =
+                Settings.Global.getUriFor(Settings.Global.GAME_DRIVER_DENYLISTS);
 
         SettingsObserver() {
             super(new Handler());
-            mContentResolver.registerContentObserver(mGameDriverBlackUri, false, this,
+            mContentResolver.registerContentObserver(mGameDriverDenylistsUri, false, this,
                     UserHandle.USER_ALL);
         }
 
@@ -140,9 +140,9 @@
                 return;
             }
 
-            if (mGameDriverBlackUri.equals(uri)) {
-                processBlacklists();
-                setBlacklist();
+            if (mGameDriverDenylistsUri.equals(uri)) {
+                processDenylists();
+                setDenylist();
             }
         }
     }
@@ -157,10 +157,10 @@
         @Override
         public void onPropertiesChanged(Properties properties) {
             synchronized (mDeviceConfigLock) {
-                if (properties.getKeyset().contains(Settings.Global.GAME_DRIVER_BLACKLISTS)) {
-                    parseBlacklists(
-                            properties.getString(Settings.Global.GAME_DRIVER_BLACKLISTS, ""));
-                    setBlacklist();
+                if (properties.getKeyset().contains(Settings.Global.GAME_DRIVER_DENYLISTS)) {
+                    parseDenylists(
+                            properties.getString(Settings.Global.GAME_DRIVER_DENYLISTS, ""));
+                    setDenylist();
                 }
             }
         }
@@ -187,7 +187,7 @@
                 case ACTION_PACKAGE_REMOVED:
                     if (isProdDriver) {
                         fetchGameDriverPackageProperties();
-                        setBlacklist();
+                        setDenylist();
                     } else if (isDevDriver) {
                         fetchDeveloperDriverPackageProperties();
                     }
@@ -239,17 +239,17 @@
             return;
         }
 
-        // Reset the whitelist.
+        // Reset the allowlist.
         Settings.Global.putString(mContentResolver,
-                                  Settings.Global.GAME_DRIVER_WHITELIST, "");
+                                  Settings.Global.GAME_DRIVER_ALLOWLIST, "");
         mGameDriverVersionCode = driverInfo.longVersionCode;
 
         try {
             final Context driverContext = mContext.createPackageContext(mProdDriverPackageName,
                                                                         Context.CONTEXT_RESTRICTED);
 
-            assetToSettingsGlobal(mContext, driverContext, GAME_DRIVER_WHITELIST_FILENAME,
-                    Settings.Global.GAME_DRIVER_WHITELIST, ",");
+            assetToSettingsGlobal(mContext, driverContext, GAME_DRIVER_ALLOWLIST_FILENAME,
+                    Settings.Global.GAME_DRIVER_ALLOWLIST, ",");
         } catch (PackageManager.NameNotFoundException e) {
             if (DEBUG) {
                 Slog.w(TAG, "driver package '" + mProdDriverPackageName + "' not installed");
@@ -257,48 +257,48 @@
         }
     }
 
-    private void processBlacklists() {
+    private void processDenylists() {
         String base64String = DeviceConfig.getProperty(DeviceConfig.NAMESPACE_GAME_DRIVER,
-                Settings.Global.GAME_DRIVER_BLACKLISTS);
+                Settings.Global.GAME_DRIVER_DENYLISTS);
         if (base64String == null) {
             base64String =
                     Settings.Global.getString(mContentResolver,
-                                              Settings.Global.GAME_DRIVER_BLACKLISTS);
+                                              Settings.Global.GAME_DRIVER_DENYLISTS);
         }
-        parseBlacklists(base64String != null ? base64String : "");
+        parseDenylists(base64String != null ? base64String : "");
     }
 
-    private void parseBlacklists(String base64String) {
+    private void parseDenylists(String base64String) {
         synchronized (mLock) {
-            // Reset all blacklists
-            mBlacklists = null;
+            // Reset all denylists
+            mDenylists = null;
             try {
-                mBlacklists = Blacklists.parseFrom(Base64.decode(base64String, BASE64_FLAGS));
+                mDenylists = Denylists.parseFrom(Base64.decode(base64String, BASE64_FLAGS));
             } catch (IllegalArgumentException e) {
                 if (DEBUG) {
-                    Slog.w(TAG, "Can't parse blacklist, skip and continue...");
+                    Slog.w(TAG, "Can't parse denylist, skip and continue...");
                 }
             } catch (InvalidProtocolBufferException e) {
                 if (DEBUG) {
-                    Slog.w(TAG, "Can't parse blacklist, skip and continue...");
+                    Slog.w(TAG, "Can't parse denylist, skip and continue...");
                 }
             }
         }
     }
 
-    private void setBlacklist() {
+    private void setDenylist() {
         Settings.Global.putString(mContentResolver,
-                                  Settings.Global.GAME_DRIVER_BLACKLIST, "");
+                                  Settings.Global.GAME_DRIVER_DENYLIST, "");
         synchronized (mLock) {
-            if (mBlacklists == null) {
+            if (mDenylists == null) {
                 return;
             }
-            List<Blacklist> blacklists = mBlacklists.getBlacklistsList();
-            for (Blacklist blacklist : blacklists) {
-                if (blacklist.getVersionCode() == mGameDriverVersionCode) {
+            List<Denylist> denylists = mDenylists.getDenylistsList();
+            for (Denylist denylist : denylists) {
+                if (denylist.getVersionCode() == mGameDriverVersionCode) {
                     Settings.Global.putString(mContentResolver,
-                            Settings.Global.GAME_DRIVER_BLACKLIST,
-                            String.join(",", blacklist.getPackageNamesList()));
+                            Settings.Global.GAME_DRIVER_DENYLIST,
+                            String.join(",", denylist.getPackageNamesList()));
                     return;
                 }
             }
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecController.java b/services/core/java/com/android/server/hdmi/HdmiCecController.java
index 66652ca..5352840 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecController.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecController.java
@@ -16,6 +16,8 @@
 
 package com.android.server.hdmi;
 
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.hardware.hdmi.HdmiPortInfo;
 import android.hardware.tv.cec.V1_0.CecMessage;
 import android.hardware.tv.cec.V1_0.HotplugEvent;
@@ -725,6 +727,7 @@
         private IHdmiCec mHdmiCec;
         private final Object mLock = new Object();
         private int mPhysicalAddress = INVALID_PHYSICAL_ADDRESS;
+        @Nullable private HdmiCecCallback mCallback;
 
         @Override
         public String nativeInit() {
@@ -733,7 +736,7 @@
 
         boolean connectToHal() {
             try {
-                mHdmiCec = IHdmiCec.getService();
+                mHdmiCec = IHdmiCec.getService(true);
                 try {
                     mHdmiCec.linkToDeath(this, HDMI_CEC_HAL_DEATH_COOKIE);
                 } catch (RemoteException e) {
@@ -747,7 +750,8 @@
         }
 
         @Override
-        public void setCallback(HdmiCecCallback callback) {
+        public void setCallback(@NonNull HdmiCecCallback callback) {
+            mCallback = callback;
             try {
                 mHdmiCec.setCallback(callback);
             } catch (RemoteException e) {
@@ -887,6 +891,10 @@
             if (cookie == HDMI_CEC_HAL_DEATH_COOKIE) {
                 HdmiLogger.error(TAG, "Service died cokkie : " + cookie + "; reconnecting");
                 connectToHal();
+                // Reconnect the callback
+                if (mCallback != null) {
+                    setCallback(mCallback);
+                }
             }
         }
 
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
index 611b8c6..ab289ea 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
@@ -708,17 +708,17 @@
     private byte[] getSupportedShortAudioDescriptorsFromConfig(
             List<DeviceConfig> deviceConfig, @AudioCodec int[] audioFormatCodes) {
         DeviceConfig deviceConfigToUse = null;
+        String audioDeviceName = SystemProperties.get(
+                Constants.PROPERTY_SYSTEM_AUDIO_MODE_AUDIO_PORT,
+                "VX_AUDIO_DEVICE_IN_HDMI_ARC");
         for (DeviceConfig device : deviceConfig) {
-            // TODO(amyjojo) use PROPERTY_SYSTEM_AUDIO_MODE_AUDIO_PORT to get the audio device name
-            if (device.name.equals("VX_AUDIO_DEVICE_IN_HDMI_ARC")) {
+            if (device.name.equals(audioDeviceName)) {
                 deviceConfigToUse = device;
                 break;
             }
         }
         if (deviceConfigToUse == null) {
-            // TODO(amyjojo) use PROPERTY_SYSTEM_AUDIO_MODE_AUDIO_PORT to get the audio device name
-            Slog.w(TAG, "sadConfig.xml does not have required device info for "
-                        + "VX_AUDIO_DEVICE_IN_HDMI_ARC");
+            Slog.w(TAG, "sadConfig.xml does not have required device info for " + audioDeviceName);
             return new byte[0];
         }
         HashMap<Integer, byte[]> map = new HashMap<>();
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
index b749031..b2d694b 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
@@ -1668,6 +1668,7 @@
         if (avr == null) {
             return;
         }
+        setArcStatus(false);
 
         // Seq #44.
         removeAction(RequestArcInitiationAction.class);
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecMessageValidator.java b/services/core/java/com/android/server/hdmi/HdmiCecMessageValidator.java
index 28bd97e..ea24532 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecMessageValidator.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecMessageValidator.java
@@ -122,17 +122,51 @@
         addValidationInfo(Constants.MESSAGE_RECORD_STATUS,
                 new RecordStatusInfoValidator(), DEST_DIRECT);
 
-        // TODO: Handle messages for the Timer Programming.
+        addValidationInfo(
+                Constants.MESSAGE_CLEAR_ANALOG_TIMER, new AnalogueTimerValidator(), DEST_DIRECT);
+        addValidationInfo(
+                Constants.MESSAGE_CLEAR_DIGITAL_TIMER, new DigitalTimerValidator(), DEST_DIRECT);
+        addValidationInfo(
+                Constants.MESSAGE_CLEAR_EXTERNAL_TIMER, new ExternalTimerValidator(), DEST_DIRECT);
+        addValidationInfo(
+                Constants.MESSAGE_SET_ANALOG_TIMER, new AnalogueTimerValidator(), DEST_DIRECT);
+        addValidationInfo(
+                Constants.MESSAGE_SET_DIGITAL_TIMER, new DigitalTimerValidator(), DEST_DIRECT);
+        addValidationInfo(
+                Constants.MESSAGE_SET_EXTERNAL_TIMER, new ExternalTimerValidator(), DEST_DIRECT);
+        addValidationInfo(
+                Constants.MESSAGE_SET_TIMER_PROGRAM_TITLE, new AsciiValidator(1, 14), DEST_DIRECT);
+        addValidationInfo(
+                Constants.MESSAGE_TIMER_CLEARED_STATUS,
+                new TimerClearedStatusValidator(),
+                DEST_DIRECT);
+        addValidationInfo(Constants.MESSAGE_TIMER_STATUS, new TimerStatusValidator(), DEST_DIRECT);
 
         // Messages for the System Information.
         FixedLengthValidator oneByteValidator = new FixedLengthValidator(1);
         addValidationInfo(Constants.MESSAGE_CEC_VERSION, oneByteValidator, DEST_DIRECT);
         addValidationInfo(Constants.MESSAGE_SET_MENU_LANGUAGE,
-                new FixedLengthValidator(3), DEST_BROADCAST);
+                new AsciiValidator(3), DEST_BROADCAST);
 
-        // TODO: Handle messages for the Deck Control.
+        ParameterValidator statusRequestValidator = new OneByteRangeValidator(0x01, 0x03);
+        addValidationInfo(
+                Constants.MESSAGE_DECK_CONTROL, new OneByteRangeValidator(0x01, 0x04), DEST_DIRECT);
+        addValidationInfo(
+                Constants.MESSAGE_DECK_STATUS, new OneByteRangeValidator(0x11, 0x1F), DEST_DIRECT);
+        addValidationInfo(Constants.MESSAGE_GIVE_DECK_STATUS, statusRequestValidator, DEST_DIRECT);
+        addValidationInfo(Constants.MESSAGE_PLAY, new PlayModeValidator(), DEST_DIRECT);
 
         // TODO: Handle messages for the Tuner Control.
+        addValidationInfo(
+                Constants.MESSAGE_GIVE_TUNER_DEVICE_STATUS, statusRequestValidator, DEST_DIRECT);
+        addValidationInfo(
+                Constants.MESSAGE_SELECT_ANALOG_SERVICE,
+                new SelectAnalogueServiceValidator(),
+                DEST_DIRECT);
+        addValidationInfo(
+                Constants.MESSAGE_SELECT_DIGITAL_SERVICE,
+                new SelectDigitalServiceValidator(),
+                DEST_DIRECT);
 
         // Messages for the Vendor Specific Commands.
         VariableLengthValidator maxLengthValidator = new VariableLengthValidator(0, 14);
@@ -148,20 +182,26 @@
                 maxLengthValidator, DEST_ALL | SRC_UNREGISTERED);
 
         // Messages for the OSD.
-        addValidationInfo(Constants.MESSAGE_SET_OSD_STRING, maxLengthValidator, DEST_DIRECT);
-        addValidationInfo(Constants.MESSAGE_SET_OSD_NAME, maxLengthValidator, DEST_DIRECT);
+        addValidationInfo(Constants.MESSAGE_SET_OSD_STRING, new OsdStringValidator(), DEST_DIRECT);
+        addValidationInfo(Constants.MESSAGE_SET_OSD_NAME, new AsciiValidator(1, 14), DEST_DIRECT);
 
         // Messages for the Device Menu Control.
-        addValidationInfo(Constants.MESSAGE_MENU_REQUEST, oneByteValidator, DEST_DIRECT);
-        addValidationInfo(Constants.MESSAGE_MENU_STATUS, oneByteValidator, DEST_DIRECT);
+        addValidationInfo(
+                Constants.MESSAGE_MENU_REQUEST, new OneByteRangeValidator(0x00, 0x02), DEST_DIRECT);
+        addValidationInfo(
+                Constants.MESSAGE_MENU_STATUS, new OneByteRangeValidator(0x00, 0x01), DEST_DIRECT);
 
         // Messages for the Remote Control Passthrough.
-        // TODO: Parse the first parameter and determine if it can have the next parameter.
-        addValidationInfo(Constants.MESSAGE_USER_CONTROL_PRESSED,
-                new VariableLengthValidator(1, 2), DEST_DIRECT);
+        addValidationInfo(
+                Constants.MESSAGE_USER_CONTROL_PRESSED,
+                new UserControlPressedValidator(),
+                DEST_DIRECT);
 
         // Messages for the Power Status.
-        addValidationInfo(Constants.MESSAGE_REPORT_POWER_STATUS, oneByteValidator, DEST_DIRECT);
+        addValidationInfo(
+                Constants.MESSAGE_REPORT_POWER_STATUS,
+                new OneByteRangeValidator(0x00, 0x03),
+                DEST_DIRECT);
 
         // Messages for the General Protocol.
         addValidationInfo(Constants.MESSAGE_FEATURE_ABORT,
@@ -173,12 +213,20 @@
                 new FixedLengthValidator(3), DEST_DIRECT);
         addValidationInfo(Constants.MESSAGE_REQUEST_SHORT_AUDIO_DESCRIPTOR,
                 oneByteValidator, DEST_DIRECT);
-        addValidationInfo(Constants.MESSAGE_SET_SYSTEM_AUDIO_MODE, oneByteValidator, DEST_ALL);
-        addValidationInfo(Constants.MESSAGE_SYSTEM_AUDIO_MODE_STATUS,
-                oneByteValidator, DEST_DIRECT);
+        addValidationInfo(
+                Constants.MESSAGE_SET_SYSTEM_AUDIO_MODE,
+                new OneByteRangeValidator(0x00, 0x01),
+                DEST_ALL);
+        addValidationInfo(
+                Constants.MESSAGE_SYSTEM_AUDIO_MODE_STATUS,
+                new OneByteRangeValidator(0x00, 0x01),
+                DEST_DIRECT);
 
         // Messages for the Audio Rate Control.
-        addValidationInfo(Constants.MESSAGE_SET_AUDIO_RATE, oneByteValidator, DEST_DIRECT);
+        addValidationInfo(
+                Constants.MESSAGE_SET_AUDIO_RATE,
+                new OneByteRangeValidator(0x00, 0x06),
+                DEST_DIRECT);
 
         // All Messages for the ARC have no parameters.
 
@@ -299,6 +347,381 @@
         return (value >= min && value <= max);
     }
 
+    /**
+     * Check if the given value is a valid Display Control. A valid value is one which falls within
+     * the range description defined in CEC 1.4 Specification : Operand Descriptions (Section 17)
+     *
+     * @param value Display Control
+     * @return true if the Display Control is valid
+     */
+    private boolean isValidDisplayControl(int value) {
+        value = value & 0xFF;
+        return (value == 0x00 || value == 0x40 || value == 0x80 || value == 0xC0);
+    }
+
+    /**
+     * Check if the given params has valid ASCII characters.
+     * A valid ASCII character is a printable character. It should fall within range description
+     * defined in CEC 1.4 Specification : Operand Descriptions (Section 17)
+     *
+     * @param params parameter consisting of string
+     * @param offset Start offset of string
+     * @param maxLength Maximum length of string to be evaluated
+     * @return true if the given type is valid
+     */
+    private boolean isValidAsciiString(byte[] params, int offset, int maxLength) {
+        for (int i = offset; i < params.length && i < maxLength; i++) {
+            if (!isWithinRange(params[i], 0x20, 0x7E)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Check if the given value is a valid day of month. A valid value is one which falls within the
+     * range description defined in CEC 1.4 Specification : Operand Descriptions (Section 17)
+     *
+     * @param value day of month
+     * @return true if the day of month is valid
+     */
+    private boolean isValidDayOfMonth(int value) {
+        return isWithinRange(value, 1, 31);
+    }
+
+    /**
+     * Check if the given value is a valid month of year. A valid value is one which falls within
+     * the range description defined in CEC 1.4 Specification : Operand Descriptions (Section 17)
+     *
+     * @param value month of year
+     * @return true if the month of year is valid
+     */
+    private boolean isValidMonthOfYear(int value) {
+        return isWithinRange(value, 1, 12);
+    }
+
+    /**
+     * Check if the given value is a valid hour. A valid value is one which falls within the range
+     * description defined in CEC 1.4 Specification : Operand Descriptions (Section 17)
+     *
+     * @param value hour
+     * @return true if the hour is valid
+     */
+    private boolean isValidHour(int value) {
+        return isWithinRange(value, 0, 23);
+    }
+
+    /**
+     * Check if the given value is a valid minute. A valid value is one which falls within the range
+     * description defined in CEC 1.4 Specification : Operand Descriptions (Section 17)
+     *
+     * @param value minute
+     * @return true if the minute is valid
+     */
+    private boolean isValidMinute(int value) {
+        return isWithinRange(value, 0, 59);
+    }
+
+    /**
+     * Check if the given value is a valid duration hours. A valid value is one which falls within
+     * the range description defined in CEC 1.4 Specification : Operand Descriptions (Section 17)
+     *
+     * @param value duration hours
+     * @return true if the duration hours is valid
+     */
+    private boolean isValidDurationHours(int value) {
+        return isWithinRange(value, 0, 99);
+    }
+
+    /**
+     * Check if the given value is a valid recording sequence. A valid value is adheres to range
+     * description defined in CEC 1.4 Specification : Operand Descriptions (Section 17)
+     *
+     * @param value recording sequence
+     * @return true if the given recording sequence is valid
+     */
+    private boolean isValidRecordingSequence(int value) {
+        value = value & 0xFF;
+        // Validate bit 7 is set to zero
+        if ((value & 0x80) != 0x00) {
+            return false;
+        }
+        // Validate than not more than one bit is set
+        return (Integer.bitCount(value) <= 1);
+    }
+
+    /**
+     * Check if the given value is a valid analogue broadcast type. A valid value is one which falls
+     * within the range description defined in CEC 1.4 Specification : Operand Descriptions (Section
+     * 17)
+     *
+     * @param value analogue broadcast type
+     * @return true if the analogue broadcast type is valid
+     */
+    private boolean isValidAnalogueBroadcastType(int value) {
+        return isWithinRange(value, 0x00, 0x02);
+    }
+
+    /**
+     * Check if the given value is a valid analogue frequency. A valid value is one which falls
+     * within the range description defined in CEC 1.4 Specification : Operand Descriptions (Section
+     * 17)
+     *
+     * @param value analogue frequency
+     * @return true if the analogue frequency is valid
+     */
+    private boolean isValidAnalogueFrequency(int value) {
+        value = value & 0xFFFF;
+        return (value != 0x000 && value != 0xFFFF);
+    }
+
+    /**
+     * Check if the given value is a valid broadcast system. A valid value is one which falls within
+     * the range description defined in CEC 1.4 Specification : Operand Descriptions (Section 17)
+     *
+     * @param value broadcast system
+     * @return true if the broadcast system is valid
+     */
+    private boolean isValidBroadcastSystem(int value) {
+        return isWithinRange(value, 0, 31);
+    }
+
+    /**
+     * Check if the given value is a ARIB type. A valid value is one which falls within the range
+     * description defined in CEC 1.4 Specification : Operand Descriptions (Section 17)
+     *
+     * @param value Digital Broadcast System
+     * @return true if the Digital Broadcast System is ARIB type
+     */
+    private boolean isAribDbs(int value) {
+        return (value == 0x00 || isWithinRange(value, 0x08, 0x0A));
+    }
+
+    /**
+     * Check if the given value is a ATSC type. A valid value is one which falls within the range
+     * description defined in CEC 1.4 Specification : Operand Descriptions (Section 17)
+     *
+     * @param value Digital Broadcast System
+     * @return true if the Digital Broadcast System is ATSC type
+     */
+    private boolean isAtscDbs(int value) {
+        return (value == 0x01 || isWithinRange(value, 0x10, 0x12));
+    }
+
+    /**
+     * Check if the given value is a DVB type. A valid value is one which falls within the range
+     * description defined in CEC 1.4 Specification : Operand Descriptions (Section 17)
+     *
+     * @param value Digital Broadcast System
+     * @return true if the Digital Broadcast System is DVB type
+     */
+    private boolean isDvbDbs(int value) {
+        return (value == 0x02 || isWithinRange(value, 0x18, 0x1B));
+    }
+
+    /**
+     * Check if the given value is a valid Digital Broadcast System. A valid value is one which
+     * falls within the range description defined in CEC 1.4 Specification : Operand Descriptions
+     * (Section 17)
+     *
+     * @param value Digital Broadcast System
+     * @return true if the Digital Broadcast System is valid
+     */
+    private boolean isValidDigitalBroadcastSystem(int value) {
+        return (isAribDbs(value) || isAtscDbs(value) || isDvbDbs(value));
+    }
+
+    /**
+     * Check if the given value is a valid Channel Identifier. A valid value is one which falls
+     * within the range description defined in CEC 1.4 Specification : Operand Descriptions (Section
+     * 17)
+     *
+     * @param params Channel Identifier parameters
+     * @param offset start offset of Channel Identifier
+     * @return true if the Channel Identifier is valid
+     */
+    private boolean isValidChannelIdentifier(byte[] params, int offset) {
+        // First 6 bits contain Channel Number Format
+        int channelNumberFormat = params[offset] & 0xFC;
+        if (channelNumberFormat == 0x04) {
+            // Validate it contains 1-part Channel Number data (16 bits)
+            return params.length - offset >= 3;
+        } else if (channelNumberFormat == 0x08) {
+            // Validate it contains Major Channel Number and Minor Channel Number (26 bits)
+            return params.length - offset >= 4;
+        }
+        return false;
+    }
+
+    /**
+     * Check if the given value is a valid Digital Service Identification. A valid value is one
+     * which falls within the range description defined in CEC 1.4 Specification : Operand
+     * Descriptions (Section 17)
+     *
+     * @param params Digital Timer Message parameters
+     * @param offset start offset of Digital Service Identification
+     * @return true if the Digital Service Identification is valid
+     */
+    private boolean isValidDigitalServiceIdentification(byte[] params, int offset) {
+        // MSB contains Service Identification Method
+        int serviceIdentificationMethod = params[offset] & 0x80;
+        // Last 7 bits contains Digital Broadcast System
+        int digitalBroadcastSystem = params[offset] & 0x7F;
+        offset = offset + 1;
+        if (serviceIdentificationMethod == 0x00) {
+            // Services identified by Digital IDs
+            if (isAribDbs(digitalBroadcastSystem)) {
+                // Validate ARIB type have 6 byte data
+                return params.length - offset >= 6;
+            } else if (isAtscDbs(digitalBroadcastSystem)) {
+                // Validate ATSC type have 4 byte data
+                return params.length - offset >= 4;
+            } else if (isDvbDbs(digitalBroadcastSystem)) {
+                // Validate DVB type have 6 byte data
+                return params.length - offset >= 6;
+            }
+        } else if (serviceIdentificationMethod == 0x80) {
+            // Services identified by Channel
+            if (isValidDigitalBroadcastSystem(digitalBroadcastSystem)) {
+                return isValidChannelIdentifier(params, offset);
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Check if the given value is a valid External Plug. A valid value is one which falls within
+     * the range description defined in CEC 1.4 Specification : Operand Descriptions (Section 17)
+     *
+     * @param value External Plug
+     * @return true if the External Plug is valid
+     */
+    private boolean isValidExternalPlug(int value) {
+        return isWithinRange(value, 1, 255);
+    }
+
+    /**
+     * Check if the given value is a valid External Source. A valid value is one which falls within
+     * the range description defined in CEC 1.4 Specification : Operand Descriptions (Section 17)
+     *
+     * @param value External Source Specifier
+     * @return true if the External Source is valid
+     */
+    private boolean isValidExternalSource(byte[] params, int offset) {
+        int externalSourceSpecifier = params[offset];
+        offset = offset + 1;
+        if (externalSourceSpecifier == 0x04) {
+            // External Plug
+            return isValidExternalPlug(params[offset]);
+        } else if (externalSourceSpecifier == 0x05) {
+            // External Physical Address
+            // Validate it contains 2 bytes Physical Address
+            if (params.length - offset >= 2) {
+                return isValidPhysicalAddress(params, offset);
+            }
+        }
+        return false;
+    }
+
+    private boolean isValidProgrammedInfo(int programedInfo) {
+        return (isWithinRange(programedInfo, 0x00, 0x0B));
+    }
+
+    private boolean isValidNotProgrammedErrorInfo(int nonProgramedErrorInfo) {
+        return (isWithinRange(nonProgramedErrorInfo, 0x00, 0x0E));
+    }
+
+    private boolean isValidTimerStatusData(byte[] params, int offset) {
+        int programedIndicator = params[offset] & 0x10;
+        boolean durationAvailable = false;
+        if (programedIndicator == 0x10) {
+            // Programmed
+            int programedInfo = params[offset] & 0x0F;
+            if (isValidProgrammedInfo(programedInfo)) {
+                if (programedInfo == 0x09 || programedInfo == 0x0B) {
+                    durationAvailable = true;
+                } else {
+                    return true;
+                }
+            }
+        } else {
+            // Non programmed
+            int nonProgramedErrorInfo = params[offset] & 0x0F;
+            if (isValidNotProgrammedErrorInfo(nonProgramedErrorInfo)) {
+                if (nonProgramedErrorInfo == 0x0E) {
+                    durationAvailable = true;
+                } else {
+                    return true;
+                }
+            }
+        }
+        offset = offset + 1;
+        // Duration Available (2 bytes)
+        if (durationAvailable && params.length - offset >= 2) {
+            return (isValidDurationHours(params[offset]) && isValidMinute(params[offset + 1]));
+        }
+        return false;
+    }
+
+    /**
+     * Check if the given value is a valid Play mode. A valid value is one which falls within the
+     * range description defined in CEC 1.4 Specification : Operand Descriptions (Section 17)
+     *
+     * @param value Play mode
+     * @return true if the Play mode is valid
+     */
+    private boolean isValidPlayMode(int value) {
+        return (isWithinRange(value, 0x05, 0x07)
+                || isWithinRange(value, 0x09, 0x0B)
+                || isWithinRange(value, 0x15, 0x17)
+                || isWithinRange(value, 0x19, 0x1B)
+                || isWithinRange(value, 0x24, 0x25)
+                || (value == 0x20));
+    }
+
+    /**
+     * Check if the given value is a valid UI Broadcast type. A valid value is one which falls
+     * within the range description defined in CEC 1.4 Specification : Operand Descriptions (Section
+     * 17)
+     *
+     * @param value UI Broadcast type
+     * @return true if the UI Broadcast type is valid
+     */
+    private boolean isValidUiBroadcastType(int value) {
+        return ((value == 0x00)
+                || (value == 0x01)
+                || (value == 0x10)
+                || (value == 0x20)
+                || (value == 0x30)
+                || (value == 0x40)
+                || (value == 0x50)
+                || (value == 0x60)
+                || (value == 0x70)
+                || (value == 0x80)
+                || (value == 0x90)
+                || (value == 0x91)
+                || (value == 0xA0));
+    }
+
+    /**
+     * Check if the given value is a valid UI Sound Presenation Control. A valid value is one which
+     * falls within the range description defined in CEC 1.4 Specification : Operand Descriptions
+     * (Section 17)
+     *
+     * @param value UI Sound Presenation Control
+     * @return true if the UI Sound Presenation Control is valid
+     */
+    private boolean isValidUiSoundPresenationControl(int value) {
+        value = value & 0xFF;
+        return ((value == 0x20)
+                || (value == 0x30)
+                || (value == 0x80)
+                || (value == 0x90)
+                || (value == 0xA0)
+                || (isWithinRange(value, 0xB1, 0xB3))
+                || (isWithinRange(value, 0xC1, 0xC3)));
+    }
+
     private class PhysicalAddressValidator implements ParameterValidator {
         @Override
         public int isValid(byte[] params) {
@@ -359,4 +782,249 @@
                             || params[0] == 0x1F);
         }
     }
+
+    /**
+     * Check if the given parameters represents printable characters.
+     * A valid parameter should lie within the range description of ASCII defined in CEC 1.4
+     * Specification : Operand Descriptions (Section 17)
+     */
+    private class AsciiValidator implements ParameterValidator {
+        private final int mMinLength;
+        private final int mMaxLength;
+
+        AsciiValidator(int length) {
+            mMinLength = length;
+            mMaxLength = length;
+        }
+
+        AsciiValidator(int minLength, int maxLength) {
+            mMinLength = minLength;
+            mMaxLength = maxLength;
+        }
+
+        @Override
+        public int isValid(byte[] params) {
+            // If the length is longer than expected, we assume it's OK since the parameter can be
+            // extended in the future version.
+            if (params.length < mMinLength) {
+                return ERROR_PARAMETER_SHORT;
+            }
+            return toErrorCode(isValidAsciiString(params, 0, mMaxLength));
+        }
+    }
+
+    /**
+     * Check if the given parameters is valid OSD String.
+     * A valid parameter should lie within the range description of ASCII defined in CEC 1.4
+     * Specification : Operand Descriptions (Section 17)
+     */
+    private class OsdStringValidator implements ParameterValidator {
+        @Override
+        public int isValid(byte[] params) {
+            // If the length is longer than expected, we assume it's OK since the parameter can be
+            // extended in the future version.
+            if (params.length < 2) {
+                return ERROR_PARAMETER_SHORT;
+            }
+            return toErrorCode(
+                    // Display Control
+                    isValidDisplayControl(params[0])
+                    // OSD String
+                    && isValidAsciiString(params, 1, 14));
+        }
+    }
+
+    /** Check if the given parameters are one byte parameters and within range. */
+    private class OneByteRangeValidator implements ParameterValidator {
+        private final int mMinValue, mMaxValue;
+
+        OneByteRangeValidator(int minValue, int maxValue) {
+            mMinValue = minValue;
+            mMaxValue = maxValue;
+        }
+
+        @Override
+        public int isValid(byte[] params) {
+            if (params.length < 1) {
+                return ERROR_PARAMETER_SHORT;
+            }
+            return toErrorCode(isWithinRange(params[0], mMinValue, mMaxValue));
+        }
+    }
+
+    /**
+     * Check if the given Analogue Timer message parameters are valid. Valid parameters should
+     * adhere to message description of Analogue Timer defined in CEC 1.4 Specification : Message
+     * Descriptions for Timer Programming Feature (CEC Table 12)
+     */
+    private class AnalogueTimerValidator implements ParameterValidator {
+        @Override
+        public int isValid(byte[] params) {
+            if (params.length < 11) {
+                return ERROR_PARAMETER_SHORT;
+            }
+            return toErrorCode(
+                    isValidDayOfMonth(params[0]) // Day of Month
+                            && isValidMonthOfYear(params[1]) // Month of Year
+                            && isValidHour(params[2]) // Start Time - Hour
+                            && isValidMinute(params[3]) // Start Time - Minute
+                            && isValidDurationHours(params[4]) // Duration - Duration Hours
+                            && isValidMinute(params[5]) // Duration - Minute
+                            && isValidRecordingSequence(params[6]) // Recording Sequence
+                            && isValidAnalogueBroadcastType(params[7]) // Analogue Broadcast Type
+                            && isValidAnalogueFrequency(
+                                    HdmiUtils.twoBytesToInt(params, 8)) // Analogue Frequency
+                            && isValidBroadcastSystem(params[10])); // Broadcast System
+        }
+    }
+
+    /**
+     * Check if the given Digital Timer message parameters are valid. Valid parameters should adhere
+     * to message description of Digital Timer defined in CEC 1.4 Specification : Message
+     * Descriptions for Timer Programming Feature (CEC Table 12)
+     */
+    private class DigitalTimerValidator implements ParameterValidator {
+        @Override
+        public int isValid(byte[] params) {
+            if (params.length < 11) {
+                return ERROR_PARAMETER_SHORT;
+            }
+            return toErrorCode(
+                    isValidDayOfMonth(params[0]) // Day of Month
+                            && isValidMonthOfYear(params[1]) // Month of Year
+                            && isValidHour(params[2]) // Start Time - Hour
+                            && isValidMinute(params[3]) // Start Time - Minute
+                            && isValidDurationHours(params[4]) // Duration - Duration Hours
+                            && isValidMinute(params[5]) // Duration - Minute
+                            && isValidRecordingSequence(params[6]) // Recording Sequence
+                            && isValidDigitalServiceIdentification(
+                                    params, 7)); // Digital Service Identification
+        }
+    }
+
+    /**
+     * Check if the given External Timer message parameters are valid. Valid parameters should
+     * adhere to message description of External Timer defined in CEC 1.4 Specification : Message
+     * Descriptions for Timer Programming Feature (CEC Table 12)
+     */
+    private class ExternalTimerValidator implements ParameterValidator {
+        @Override
+        public int isValid(byte[] params) {
+            if (params.length < 9) {
+                return ERROR_PARAMETER_SHORT;
+            }
+            return toErrorCode(
+                    isValidDayOfMonth(params[0]) // Day of Month
+                            && isValidMonthOfYear(params[1]) // Month of Year
+                            && isValidHour(params[2]) // Start Time - Hour
+                            && isValidMinute(params[3]) // Start Time - Minute
+                            && isValidDurationHours(params[4]) // Duration - Duration Hours
+                            && isValidMinute(params[5]) // Duration - Minute
+                            && isValidRecordingSequence(params[6]) // Recording Sequence
+                            && isValidExternalSource(params, 7)); // External Source
+        }
+    }
+
+    /**
+     * Check if the given timer cleared status parameter is valid. A valid parameter should lie
+     * within the range description defined in CEC 1.4 Specification : Operand Descriptions
+     * (Section 17)
+     */
+    private class TimerClearedStatusValidator implements ParameterValidator {
+        @Override
+        public int isValid(byte[] params) {
+            if (params.length < 1) {
+                return ERROR_PARAMETER_SHORT;
+            }
+            return toErrorCode(isWithinRange(params[0], 0x00, 0x02) || (params[0] & 0xFF) == 0x80);
+        }
+    }
+
+    /**
+     * Check if the given timer status data parameter is valid. A valid parameter should lie within
+     * the range description defined in CEC 1.4 Specification : Operand Descriptions (Section 17)
+     */
+    private class TimerStatusValidator implements ParameterValidator {
+        @Override
+        public int isValid(byte[] params) {
+            if (params.length < 1) {
+                return ERROR_PARAMETER_SHORT;
+            }
+            return toErrorCode(isValidTimerStatusData(params, 0));
+        }
+    }
+
+    /**
+     * Check if the given play mode parameter is valid. A valid parameter should lie within the
+     * range description defined in CEC 1.4 Specification : Operand Descriptions (Section 17)
+     */
+    private class PlayModeValidator implements ParameterValidator {
+        @Override
+        public int isValid(byte[] params) {
+            if (params.length < 1) {
+                return ERROR_PARAMETER_SHORT;
+            }
+            return toErrorCode(isValidPlayMode(params[0]));
+        }
+    }
+
+    /**
+     * Check if the given select analogue service parameter is valid. A valid parameter should lie
+     * within the range description defined in CEC 1.4 Specification : Operand Descriptions
+     * (Section 17)
+     */
+    private class SelectAnalogueServiceValidator implements ParameterValidator {
+        @Override
+        public int isValid(byte[] params) {
+            if (params.length < 4) {
+                return ERROR_PARAMETER_SHORT;
+            }
+            return toErrorCode(isValidAnalogueBroadcastType(params[0])
+                    && isValidAnalogueFrequency(HdmiUtils.twoBytesToInt(params, 1))
+                    && isValidBroadcastSystem(params[3]));
+        }
+    }
+
+    /**
+     * Check if the given select digital service parameter is valid. A valid parameter should lie
+     * within the range description defined in CEC 1.4 Specification : Operand Descriptions
+     * (Section 17)
+     */
+    private class SelectDigitalServiceValidator implements ParameterValidator {
+        @Override
+        public int isValid(byte[] params) {
+            if (params.length < 4) {
+                return ERROR_PARAMETER_SHORT;
+            }
+            return toErrorCode(isValidDigitalServiceIdentification(params, 0));
+        }
+    }
+
+    /** Check if the given user control press parameter is valid. */
+    private class UserControlPressedValidator implements ParameterValidator {
+        @Override
+        public int isValid(byte[] params) {
+            if (params.length < 1) {
+                return ERROR_PARAMETER_SHORT;
+            }
+            if (params.length == 1) {
+                return OK;
+            }
+            int uiCommand = params[0];
+            switch (uiCommand) {
+                case HdmiCecKeycode.CEC_KEYCODE_PLAY_FUNCTION:
+                    return toErrorCode(isValidPlayMode(params[1]));
+                case HdmiCecKeycode.CEC_KEYCODE_TUNE_FUNCTION:
+                    return (params.length >= 4
+                            ? toErrorCode(isValidChannelIdentifier(params, 1))
+                            : ERROR_PARAMETER_SHORT);
+                case HdmiCecKeycode.CEC_KEYCODE_SELECT_BROADCAST_TYPE:
+                    return toErrorCode(isValidUiBroadcastType(params[1]));
+                case HdmiCecKeycode.CEC_KEYCODE_SELECT_SOUND_PRESENTATION:
+                    return toErrorCode(isValidUiSoundPresenationControl(params[1]));
+                default:
+                    return OK;
+            }
+        }
+    }
 }
diff --git a/services/core/java/com/android/server/inputmethod/OWNERS b/services/core/java/com/android/server/inputmethod/OWNERS
index 25ef9fa..c09ade9 100644
--- a/services/core/java/com/android/server/inputmethod/OWNERS
+++ b/services/core/java/com/android/server/inputmethod/OWNERS
@@ -4,3 +4,4 @@
 yukawa@google.com
 tarandeep@google.com
 lumark@google.com
+roosa@google.com
diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
index c4f8441..2a8a895 100644
--- a/services/core/java/com/android/server/lights/LightsService.java
+++ b/services/core/java/com/android/server/lights/LightsService.java
@@ -555,8 +555,8 @@
         @Override
         public synchronized ILights get() {
             if (mInstance == null) {
-                IBinder binder = Binder.allowBlocking(ServiceManager.waitForDeclaredService(
-                        "android.hardware.light.ILights/default"));
+                IBinder binder = Binder.allowBlocking(
+                        ServiceManager.waitForDeclaredService(ILights.DESCRIPTOR + "/default"));
                 if (binder != null) {
                     mInstance = ILights.Stub.asInterface(binder);
                     try {
diff --git a/services/core/java/com/android/server/location/LocationShellCommand.java b/services/core/java/com/android/server/location/LocationShellCommand.java
index 909873f..3464704 100644
--- a/services/core/java/com/android/server/location/LocationShellCommand.java
+++ b/services/core/java/com/android/server/location/LocationShellCommand.java
@@ -16,9 +16,10 @@
 
 package com.android.server.location;
 
-import android.os.BasicShellCommandHandler;
 import android.os.UserHandle;
 
+import com.android.modules.utils.BasicShellCommandHandler;
+
 import java.io.PrintWriter;
 import java.util.Objects;
 
diff --git a/services/core/java/com/android/server/location/gnss/GnssNetworkConnectivityHandler.java b/services/core/java/com/android/server/location/gnss/GnssNetworkConnectivityHandler.java
index 531aef6..6f3756c 100644
--- a/services/core/java/com/android/server/location/gnss/GnssNetworkConnectivityHandler.java
+++ b/services/core/java/com/android/server/location/gnss/GnssNetworkConnectivityHandler.java
@@ -86,7 +86,7 @@
 
     // Default time limit in milliseconds for the ConnectivityManager to find a suitable
     // network with SUPL connectivity or report an error.
-    private static final int SUPL_NETWORK_REQUEST_TIMEOUT_MILLIS = 10 * 1000;
+    private static final int SUPL_NETWORK_REQUEST_TIMEOUT_MILLIS = 20 * 1000;
 
     private static final int HASH_MAP_INITIAL_CAPACITY_TO_TRACK_CONNECTED_NETWORKS = 5;
 
diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java
index cef5cb6..4563a2d 100644
--- a/services/core/java/com/android/server/locksettings/LockSettingsService.java
+++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java
@@ -154,6 +154,7 @@
 import java.util.Map;
 import java.util.NoSuchElementException;
 import java.util.Objects;
+import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
@@ -261,7 +262,13 @@
 
         @Override
         public void onStart() {
-            AndroidKeyStoreProvider.install();
+            Optional<Boolean> keystore2_enabled =
+                    android.sysprop.Keystore2Properties.keystore2_enabled();
+            if (keystore2_enabled.isPresent() && keystore2_enabled.get()) {
+                android.security.keystore2.AndroidKeyStoreProvider.install();
+            } else {
+                AndroidKeyStoreProvider.install();
+            }
             mLockSettingsService = new LockSettingsService(getContext());
             publishBinderService("lock_settings", mLockSettingsService);
         }
@@ -542,7 +549,8 @@
 
         public @NonNull ManagedProfilePasswordCache getManagedProfilePasswordCache() {
             try {
-                java.security.KeyStore ks = java.security.KeyStore.getInstance("AndroidKeyStore");
+                java.security.KeyStore ks = java.security.KeyStore.getInstance(
+                        SyntheticPasswordCrypto.androidKeystoreProviderName());
                 ks.load(null);
                 return new ManagedProfilePasswordCache(ks, getUserManager());
             } catch (Exception e) {
@@ -1284,7 +1292,8 @@
         byte[] encryptedPassword = Arrays.copyOfRange(storedData, PROFILE_KEY_IV_SIZE,
                 storedData.length);
         byte[] decryptionResult;
-        java.security.KeyStore keyStore = java.security.KeyStore.getInstance("AndroidKeyStore");
+        java.security.KeyStore keyStore = java.security.KeyStore.getInstance(
+                SyntheticPasswordCrypto.androidKeystoreProviderName());
         keyStore.load(null);
         SecretKey decryptionKey = (SecretKey) keyStore.getKey(
                 LockPatternUtils.PROFILE_KEY_NAME_DECRYPT + userId, null);
@@ -1743,7 +1752,8 @@
             KeyGenerator keyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES);
             keyGenerator.init(new SecureRandom());
             SecretKey secretKey = keyGenerator.generateKey();
-            java.security.KeyStore keyStore = java.security.KeyStore.getInstance("AndroidKeyStore");
+            java.security.KeyStore keyStore = java.security.KeyStore.getInstance(
+                    SyntheticPasswordCrypto.androidKeystoreProviderName());
             keyStore.load(null);
             try {
                 keyStore.setEntry(
@@ -2299,7 +2309,8 @@
     private void removeKeystoreProfileKey(int targetUserId) {
         Slog.i(TAG, "Remove keystore profile key for user: " + targetUserId);
         try {
-            java.security.KeyStore keyStore = java.security.KeyStore.getInstance("AndroidKeyStore");
+            java.security.KeyStore keyStore = java.security.KeyStore.getInstance(
+                    SyntheticPasswordCrypto.androidKeystoreProviderName());
             keyStore.load(null);
             keyStore.deleteEntry(LockPatternUtils.PROFILE_KEY_NAME_ENCRYPT + targetUserId);
             keyStore.deleteEntry(LockPatternUtils.PROFILE_KEY_NAME_DECRYPT + targetUserId);
diff --git a/services/core/java/com/android/server/locksettings/SyntheticPasswordCrypto.java b/services/core/java/com/android/server/locksettings/SyntheticPasswordCrypto.java
index 9246311..6d420a9 100644
--- a/services/core/java/com/android/server/locksettings/SyntheticPasswordCrypto.java
+++ b/services/core/java/com/android/server/locksettings/SyntheticPasswordCrypto.java
@@ -18,6 +18,7 @@
 
 import android.security.keystore.KeyProperties;
 import android.security.keystore.KeyProtection;
+import android.security.keystore2.AndroidKeyStoreProvider;
 import android.util.Slog;
 
 import java.io.ByteArrayOutputStream;
@@ -125,7 +126,7 @@
 
     public static byte[] decryptBlobV1(String keyAlias, byte[] blob, byte[] applicationId) {
         try {
-            KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
+            KeyStore keyStore = KeyStore.getInstance(androidKeystoreProviderName());
             keyStore.load(null);
 
             SecretKey decryptionKey = (SecretKey) keyStore.getKey(keyAlias, null);
@@ -140,9 +141,24 @@
         }
     }
 
+    /**
+     * TODO This function redirects keystore access to the legacy keystore during a transitional
+     *      phase during which not all calling code has been adjusted to use Keystore 2.0.
+     *      This can be reverted to a constant of "AndroidKeyStore" when b/171305684 is complete.
+     *      The specific bug for this component is b/171305115.
+     */
+    static String androidKeystoreProviderName() {
+        if (AndroidKeyStoreProvider.isInstalled()) {
+            return "AndroidKeyStoreLegacy";
+        } else {
+            return "AndroidKeystore";
+        }
+
+    }
+
     public static byte[] decryptBlob(String keyAlias, byte[] blob, byte[] applicationId) {
         try {
-            KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
+            KeyStore keyStore = KeyStore.getInstance(androidKeystoreProviderName());
             keyStore.load(null);
 
             SecretKey decryptionKey = (SecretKey) keyStore.getKey(keyAlias, null);
@@ -166,7 +182,7 @@
             KeyGenerator keyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES);
             keyGenerator.init(AES_KEY_LENGTH * 8, new SecureRandom());
             SecretKey secretKey = keyGenerator.generateKey();
-            KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
+            KeyStore keyStore = KeyStore.getInstance(androidKeystoreProviderName());
             keyStore.load(null);
             KeyProtection.Builder builder = new KeyProtection.Builder(KeyProperties.PURPOSE_DECRYPT)
                     .setBlockModes(KeyProperties.BLOCK_MODE_GCM)
@@ -196,7 +212,7 @@
     public static void destroyBlobKey(String keyAlias) {
         KeyStore keyStore;
         try {
-            keyStore = KeyStore.getInstance("AndroidKeyStore");
+            keyStore = KeyStore.getInstance(androidKeystoreProviderName());
             keyStore.load(null);
             keyStore.deleteEntry(keyAlias);
             Slog.i(TAG, "SP key deleted: " + keyAlias);
diff --git a/services/core/java/com/android/server/locksettings/recoverablekeystore/KeyStoreProxyImpl.java b/services/core/java/com/android/server/locksettings/recoverablekeystore/KeyStoreProxyImpl.java
index 285e722..9857fb6 100644
--- a/services/core/java/com/android/server/locksettings/recoverablekeystore/KeyStoreProxyImpl.java
+++ b/services/core/java/com/android/server/locksettings/recoverablekeystore/KeyStoreProxyImpl.java
@@ -16,24 +16,39 @@
 
 package com.android.server.locksettings.recoverablekeystore;
 
+import android.security.keystore2.AndroidKeyStoreProvider;
+
 import java.io.IOException;
-import java.security.cert.CertificateException;
 import java.security.Key;
 import java.security.KeyStore;
 import java.security.KeyStoreException;
 import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchAlgorithmException;
 import java.security.UnrecoverableKeyException;
+import java.security.cert.CertificateException;
 
 /**
  * Implementation of {@link KeyStoreProxy} that delegates all method calls to the {@link KeyStore}.
  */
 public class KeyStoreProxyImpl implements KeyStoreProxy {
 
-    private static final String ANDROID_KEY_STORE_PROVIDER = "AndroidKeyStore";
     private final KeyStore mKeyStore;
 
     /**
+     * TODO This function redirects keystore access to the legacy keystore during a transitional
+     *      phase during which not all calling code has been adjusted to use Keystore 2.0.
+     *      This can be reverted to a constant of "AndroidKeyStore" when b/171305684 is complete.
+     *      The specific bug for this component is b/171305545.
+     */
+    static String androidKeystoreProviderName() {
+        if (AndroidKeyStoreProvider.isInstalled()) {
+            return "AndroidKeyStoreLegacy";
+        } else {
+            return "AndroidKeyStore";
+        }
+
+    }
+
+    /**
      * A new instance, delegating to {@code keyStore}.
      */
     public KeyStoreProxyImpl(KeyStore keyStore) {
@@ -69,7 +84,7 @@
      * @throws KeyStoreException if there was a problem getting or initializing the key store.
      */
     public static KeyStore getAndLoadAndroidKeyStore() throws KeyStoreException {
-        KeyStore keyStore = KeyStore.getInstance(ANDROID_KEY_STORE_PROVIDER);
+        KeyStore keyStore = KeyStore.getInstance(androidKeystoreProviderName());
         try {
             keyStore.load(/*param=*/ null);
         } catch (CertificateException | IOException | NoSuchAlgorithmException e) {
diff --git a/services/core/java/com/android/server/locksettings/recoverablekeystore/PlatformKeyManager.java b/services/core/java/com/android/server/locksettings/recoverablekeystore/PlatformKeyManager.java
index 0761cde..569b709 100644
--- a/services/core/java/com/android/server/locksettings/recoverablekeystore/PlatformKeyManager.java
+++ b/services/core/java/com/android/server/locksettings/recoverablekeystore/PlatformKeyManager.java
@@ -86,8 +86,6 @@
     private final KeyStoreProxy mKeyStore;
     private final RecoverableKeyStoreDb mDatabase;
 
-    private static final String ANDROID_KEY_STORE_PROVIDER = "AndroidKeyStore";
-
     /**
      * A new instance operating on behalf of {@code userId}, storing its prefs in the location
      * defined by {@code context}.
@@ -486,7 +484,7 @@
      * @throws KeyStoreException if there was a problem getting or initializing the key store.
      */
     private static KeyStore getAndLoadAndroidKeyStore() throws KeyStoreException {
-        KeyStore keyStore = KeyStore.getInstance(ANDROID_KEY_STORE_PROVIDER);
+        KeyStore keyStore = KeyStore.getInstance(KeyStoreProxyImpl.androidKeystoreProviderName());
         try {
             keyStore.load(/*param=*/ null);
         } catch (CertificateException | IOException | NoSuchAlgorithmException e) {
diff --git a/services/core/java/com/android/server/net/LockdownVpnTracker.java b/services/core/java/com/android/server/net/LockdownVpnTracker.java
index 05f2808..64c3c28 100644
--- a/services/core/java/com/android/server/net/LockdownVpnTracker.java
+++ b/services/core/java/com/android/server/net/LockdownVpnTracker.java
@@ -16,8 +16,11 @@
 
 package com.android.server.net;
 
+import static android.net.ConnectivityManager.TYPE_NONE;
 import static android.provider.Settings.ACTION_VPN_SETTINGS;
 
+import static com.android.server.connectivity.NetworkNotificationManager.NOTIFICATION_CHANNEL_VPN;
+
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.app.Notification;
@@ -25,7 +28,6 @@
 import android.app.PendingIntent;
 import android.content.Context;
 import android.content.Intent;
-import android.net.ConnectivityManager;
 import android.net.LinkAddress;
 import android.net.LinkProperties;
 import android.net.NetworkInfo;
@@ -42,7 +44,6 @@
 import com.android.internal.messages.nano.SystemMessageProto.SystemMessage;
 import com.android.internal.net.VpnConfig;
 import com.android.internal.net.VpnProfile;
-import com.android.internal.notification.SystemNotificationChannels;
 import com.android.server.ConnectivityService;
 import com.android.server.EventLogTags;
 import com.android.server.connectivity.Vpn;
@@ -65,6 +66,7 @@
 
     @NonNull private final Context mContext;
     @NonNull private final ConnectivityService mConnService;
+    @NonNull private final NotificationManager mNotificationManager;
     @NonNull private final Handler mHandler;
     @NonNull private final Vpn mVpn;
     @NonNull private final VpnProfile mProfile;
@@ -93,13 +95,16 @@
         mHandler = Objects.requireNonNull(handler);
         mVpn = Objects.requireNonNull(vpn);
         mProfile = Objects.requireNonNull(profile);
+        mNotificationManager = mContext.getSystemService(NotificationManager.class);
 
         final Intent configIntent = new Intent(ACTION_VPN_SETTINGS);
-        mConfigIntent = PendingIntent.getActivity(mContext, 0, configIntent, 0);
+        mConfigIntent = PendingIntent.getActivity(mContext, 0 /* requestCode */, configIntent,
+                PendingIntent.FLAG_IMMUTABLE);
 
         final Intent resetIntent = new Intent(ACTION_LOCKDOWN_RESET);
         resetIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
-        mResetIntent = PendingIntent.getBroadcast(mContext, 0, resetIntent, 0);
+        mResetIntent = PendingIntent.getBroadcast(mContext, 0 /* requestCode */, resetIntent,
+                PendingIntent.FLAG_IMMUTABLE);
     }
 
     /**
@@ -120,12 +125,11 @@
         final boolean egressChanged = egressProp == null
                 || !TextUtils.equals(mAcceptedEgressIface, egressProp.getInterfaceName());
 
-        final String egressTypeName = (egressInfo == null) ?
-                null : ConnectivityManager.getNetworkTypeName(egressInfo.getType());
+        final int egressType = (egressInfo == null) ? TYPE_NONE : egressInfo.getType();
         final String egressIface = (egressProp == null) ?
                 null : egressProp.getInterfaceName();
-        Slog.d(TAG, "handleStateChanged: egress=" + egressTypeName +
-                " " + mAcceptedEgressIface + "->" + egressIface);
+        Slog.d(TAG, "handleStateChanged: egress=" + egressType
+                + " " + mAcceptedEgressIface + "->" + egressIface);
 
         if (egressDisconnected || egressChanged) {
             mAcceptedEgressIface = null;
@@ -136,7 +140,6 @@
             return;
         }
 
-        final int egressType = egressInfo.getType();
         if (vpnInfo.getDetailedState() == DetailedState.FAILED) {
             EventLogTags.writeLockdownVpnError(egressType);
         }
@@ -252,7 +255,7 @@
 
     private void showNotification(int titleRes, int iconRes) {
         final Notification.Builder builder =
-                new Notification.Builder(mContext, SystemNotificationChannels.VPN)
+                new Notification.Builder(mContext, NOTIFICATION_CHANNEL_VPN)
                         .setWhen(0)
                         .setSmallIcon(iconRes)
                         .setContentTitle(mContext.getString(titleRes))
@@ -264,11 +267,11 @@
                         .setColor(mContext.getColor(
                                 com.android.internal.R.color.system_notification_accent_color));
 
-        NotificationManager.from(mContext).notify(null, SystemMessage.NOTE_VPN_STATUS,
+        mNotificationManager.notify(null /* tag */, SystemMessage.NOTE_VPN_STATUS,
                 builder.build());
     }
 
     private void hideNotification() {
-        NotificationManager.from(mContext).cancel(null, SystemMessage.NOTE_VPN_STATUS);
+        mNotificationManager.cancel(null, SystemMessage.NOTE_VPN_STATUS);
     }
 }
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index 2d7e79a..e8f4826 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -96,7 +96,9 @@
 import static com.android.internal.util.XmlUtils.readIntAttribute;
 import static com.android.internal.util.XmlUtils.readLongAttribute;
 import static com.android.internal.util.XmlUtils.readStringAttribute;
+import static com.android.internal.util.XmlUtils.readThisIntArrayXml;
 import static com.android.internal.util.XmlUtils.writeBooleanAttribute;
+import static com.android.internal.util.XmlUtils.writeIntArrayXml;
 import static com.android.internal.util.XmlUtils.writeIntAttribute;
 import static com.android.internal.util.XmlUtils.writeLongAttribute;
 import static com.android.internal.util.XmlUtils.writeStringAttribute;
@@ -229,6 +231,7 @@
 import com.android.internal.util.FastXmlSerializer;
 import com.android.internal.util.IndentingPrintWriter;
 import com.android.internal.util.StatLogger;
+import com.android.internal.util.XmlUtils;
 import com.android.server.EventLogTags;
 import com.android.server.LocalServices;
 import com.android.server.ServiceThread;
@@ -239,6 +242,7 @@
 import libcore.io.IoUtils;
 
 import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
 import org.xmlpull.v1.XmlSerializer;
 
 import java.io.File;
@@ -313,7 +317,8 @@
     private static final int VERSION_ADDED_NETWORK_ID = 9;
     private static final int VERSION_SWITCH_UID = 10;
     private static final int VERSION_ADDED_CYCLE = 11;
-    private static final int VERSION_LATEST = VERSION_ADDED_CYCLE;
+    private static final int VERSION_ADDED_NETWORK_TYPES = 12;
+    private static final int VERSION_LATEST = VERSION_ADDED_NETWORK_TYPES;
 
     @VisibleForTesting
     public static final int TYPE_WARNING = SystemMessage.NOTE_NET_WARNING;
@@ -332,6 +337,7 @@
     private static final String TAG_WHITELIST = "whitelist";
     private static final String TAG_RESTRICT_BACKGROUND = "restrict-background";
     private static final String TAG_REVOKED_RESTRICT_BACKGROUND = "revoked-restrict-background";
+    private static final String TAG_XML_UTILS_INT_ARRAY = "int-array";
 
     private static final String ATTR_VERSION = "version";
     private static final String ATTR_RESTRICT_BACKGROUND = "restrictBackground";
@@ -360,6 +366,8 @@
     private static final String ATTR_USAGE_BYTES = "usageBytes";
     private static final String ATTR_USAGE_TIME = "usageTime";
     private static final String ATTR_OWNER_PACKAGE = "ownerPackage";
+    private static final String ATTR_NETWORK_TYPES = "networkTypes";
+    private static final String ATTR_XML_UTILS_NAME = "name";
 
     private static final String ACTION_ALLOW_BACKGROUND =
             "com.android.server.net.action.ALLOW_BACKGROUND";
@@ -518,8 +526,9 @@
     private final SparseBooleanArray mRestrictBackgroundAllowlistRevokedUids =
             new SparseBooleanArray();
 
+    final Object mMeteredIfacesLock = new Object();
     /** Set of ifaces that are metered. */
-    @GuardedBy("mNetworkPoliciesSecondLock")
+    @GuardedBy("mMeteredIfacesLock")
     private ArraySet<String> mMeteredIfaces = new ArraySet<>();
     /** Set of over-limit templates that have been notified. */
     @GuardedBy("mNetworkPoliciesSecondLock")
@@ -550,6 +559,10 @@
     /** Set of all merged subscriberId as of last update */
     @GuardedBy("mNetworkPoliciesSecondLock")
     private List<String[]> mMergedSubscriberIds = new ArrayList<>();
+    /** Map from subId to carrierConfig as of last update */
+    @GuardedBy("mNetworkPoliciesSecondLock")
+    private final SparseArray<PersistableBundle> mSubIdToCarrierConfig =
+            new SparseArray<PersistableBundle>();
 
     /**
      * Indicates the uids restricted by admin from accessing metered data. It's a mapping from
@@ -1177,7 +1190,7 @@
             final long totalBytes = getTotalBytes(policy.template, cycleStart, cycleEnd);
 
             // Carrier might want to manage notifications themselves
-            final PersistableBundle config = mCarrierConfigManager.getConfigForSubId(subId);
+            final PersistableBundle config = mSubIdToCarrierConfig.get(subId);
             if (!CarrierConfigManager.isConfigForIdentifiedCarrier(config)) {
                 if (LOGV) Slog.v(TAG, "isConfigForIdentifiedCarrier returned false");
                 // Don't show notifications until we confirm that the loaded config is from an
@@ -1822,8 +1835,11 @@
 
         final List<String[]> mergedSubscriberIdsList = new ArrayList();
         final SparseArray<String> subIdToSubscriberId = new SparseArray<>(subList.size());
+        final SparseArray<PersistableBundle> subIdToCarrierConfig =
+                new SparseArray<PersistableBundle>();
         for (final SubscriptionInfo sub : subList) {
-            final TelephonyManager tmSub = tm.createForSubscriptionId(sub.getSubscriptionId());
+            final int subId = sub.getSubscriptionId();
+            final TelephonyManager tmSub = tm.createForSubscriptionId(subId);
             final String subscriberId = tmSub.getSubscriberId();
             if (!TextUtils.isEmpty(subscriberId)) {
                 subIdToSubscriberId.put(tmSub.getSubscriptionId(), subscriberId);
@@ -1834,6 +1850,13 @@
             final String[] mergedSubscriberId = ArrayUtils.defeatNullable(
                     tmSub.getMergedImsisFromGroup());
             mergedSubscriberIdsList.add(mergedSubscriberId);
+
+            final PersistableBundle config = mCarrierConfigManager.getConfigForSubId(subId);
+            if (config != null) {
+                subIdToCarrierConfig.put(subId, config);
+            } else {
+                Slog.e(TAG, "Missing CarrierConfig for subId " + subId);
+            }
         }
 
         synchronized (mNetworkPoliciesSecondLock) {
@@ -1844,6 +1867,12 @@
             }
 
             mMergedSubscriberIds = mergedSubscriberIdsList;
+
+            mSubIdToCarrierConfig.clear();
+            for (int i = 0; i < subIdToCarrierConfig.size(); i++) {
+                mSubIdToCarrierConfig.put(subIdToCarrierConfig.keyAt(i),
+                        subIdToCarrierConfig.valueAt(i));
+            }
         }
 
         Trace.traceEnd(TRACE_TAG_NETWORK);
@@ -1972,13 +2001,15 @@
         }
 
         // Remove quota from any interfaces that are no longer metered.
-        for (int i = mMeteredIfaces.size() - 1; i >= 0; i--) {
-            final String iface = mMeteredIfaces.valueAt(i);
-            if (!newMeteredIfaces.contains(iface)) {
-                removeInterfaceQuotaAsync(iface);
+        synchronized (mMeteredIfacesLock) {
+            for (int i = mMeteredIfaces.size() - 1; i >= 0; i--) {
+                final String iface = mMeteredIfaces.valueAt(i);
+                if (!newMeteredIfaces.contains(iface)) {
+                    removeInterfaceQuotaAsync(iface);
+                }
             }
+            mMeteredIfaces = newMeteredIfaces;
         }
-        mMeteredIfaces = newMeteredIfaces;
 
         final ContentResolver cr = mContext.getContentResolver();
         final boolean quotaEnabled = Settings.Global.getInt(cr,
@@ -2030,7 +2061,10 @@
             mSubscriptionOpportunisticQuota.put(subId, quotaBytes);
         }
 
-        final String[] meteredIfaces = mMeteredIfaces.toArray(new String[mMeteredIfaces.size()]);
+        final String[] meteredIfaces;
+        synchronized (mMeteredIfacesLock) {
+            meteredIfaces = mMeteredIfaces.toArray(new String[mMeteredIfaces.size()]);
+        }
         mHandler.obtainMessage(MSG_METERED_IFACES_CHANGED, meteredIfaces).sendToTarget();
 
         mHandler.obtainMessage(MSG_ADVISE_PERSIST_THRESHOLD, lowestRule).sendToTarget();
@@ -2158,7 +2192,7 @@
                 }
             }
         } else {
-            final PersistableBundle config = mCarrierConfigManager.getConfigForSubId(subId);
+            final PersistableBundle config = mSubIdToCarrierConfig.get(subId);
             final int currentCycleDay;
             if (policy.cycleRule.isMonthly()) {
                 currentCycleDay = policy.cycleRule.start.getDayOfMonth();
@@ -2311,13 +2345,25 @@
                         }
 
                         final int subId = readIntAttribute(in, ATTR_SUB_ID);
+                        final String ownerPackage = readStringAttribute(in, ATTR_OWNER_PACKAGE);
+
+                        if (version >= VERSION_ADDED_NETWORK_TYPES) {
+                            final int depth = in.getDepth();
+                            while (XmlUtils.nextElementWithin(in, depth)) {
+                                if (TAG_XML_UTILS_INT_ARRAY.equals(in.getName())
+                                        && ATTR_NETWORK_TYPES.equals(
+                                                readStringAttribute(in, ATTR_XML_UTILS_NAME))) {
+                                    final int[] networkTypes =
+                                            readThisIntArrayXml(in, TAG_XML_UTILS_INT_ARRAY, null);
+                                    builder.setNetworkTypes(networkTypes);
+                                }
+                            }
+                        }
+
                         final SubscriptionPlan plan = builder.build();
                         mSubscriptionPlans.put(subId, ArrayUtils.appendElement(
                                 SubscriptionPlan.class, mSubscriptionPlans.get(subId), plan));
-
-                        final String ownerPackage = readStringAttribute(in, ATTR_OWNER_PACKAGE);
                         mSubscriptionPlansOwner.put(subId, ownerPackage);
-
                     } else if (TAG_UID_POLICY.equals(tag)) {
                         final int uid = readIntAttribute(in, ATTR_UID);
                         final int policy = readIntAttribute(in, ATTR_POLICY);
@@ -2513,6 +2559,9 @@
                     writeIntAttribute(out, ATTR_LIMIT_BEHAVIOR, plan.getDataLimitBehavior());
                     writeLongAttribute(out, ATTR_USAGE_BYTES, plan.getDataUsageBytes());
                     writeLongAttribute(out, ATTR_USAGE_TIME, plan.getDataUsageTime());
+                    try {
+                        writeIntArrayXml(plan.getNetworkTypes(), ATTR_NETWORK_TYPES, out);
+                    } catch (XmlPullParserException ignored) { }
                     out.endTag(null, TAG_SUBSCRIPTION_PLAN);
                 }
             }
@@ -3310,7 +3359,8 @@
             // let in core system components (like the Settings app).
             final String ownerPackage = mSubscriptionPlansOwner.get(subId);
             if (Objects.equals(ownerPackage, callingPackage)
-                    || (UserHandle.getCallingAppId() == android.os.Process.SYSTEM_UID)) {
+                    || (UserHandle.getCallingAppId() == android.os.Process.SYSTEM_UID)
+                    || (UserHandle.getCallingAppId() == android.os.Process.PHONE_UID)) {
                 return mSubscriptionPlans.get(subId);
             } else {
                 Log.w(TAG, "Not returning plans because caller " + callingPackage
@@ -3436,7 +3486,10 @@
                 fout.print("Restrict background: "); fout.println(mRestrictBackground);
                 fout.print("Restrict power: "); fout.println(mRestrictPower);
                 fout.print("Device idle: "); fout.println(mDeviceIdleMode);
-                fout.print("Metered ifaces: "); fout.println(mMeteredIfaces);
+                synchronized (mMeteredIfacesLock) {
+                    fout.print("Metered ifaces: ");
+                    fout.println(mMeteredIfaces);
+                }
 
                 fout.println();
                 fout.print("mRestrictBackgroundLowPowerMode: " + mRestrictBackgroundLowPowerMode);
@@ -3867,7 +3920,7 @@
                         // quick check: if this uid doesn't have INTERNET permission, it
                         // doesn't have network access anyway, so it is a waste to mess
                         // with it here.
-                        if (hasInternetPermissionUL(uid)) {
+                        if (hasInternetPermissionUL(uid) && !isUidForegroundOnRestrictPowerUL(uid)) {
                             uidRules.put(uid, FIREWALL_RULE_DENY);
                         }
                     }
@@ -4632,7 +4685,7 @@
                 }
                 case MSG_LIMIT_REACHED: {
                     final String iface = (String) msg.obj;
-                    synchronized (mNetworkPoliciesSecondLock) {
+                    synchronized (mMeteredIfacesLock) {
                         // fast return if not needed.
                         if (!mMeteredIfaces.contains(iface)) {
                             return true;
@@ -5274,7 +5327,7 @@
                 isBackgroundRestricted = mRestrictBackground;
             }
             final boolean isNetworkMetered;
-            synchronized (mNetworkPoliciesSecondLock) {
+            synchronized (mMeteredIfacesLock) {
                 isNetworkMetered = mMeteredIfaces.contains(ifname);
             }
             final boolean ret = isUidNetworkingBlockedInternal(uid, uidRules, isNetworkMetered,
diff --git a/services/core/java/com/android/server/net/NetworkStatsAccess.java b/services/core/java/com/android/server/net/NetworkStatsAccess.java
index 7c1c1c7..ddc5ef2 100644
--- a/services/core/java/com/android/server/net/NetworkStatsAccess.java
+++ b/services/core/java/com/android/server/net/NetworkStatsAccess.java
@@ -24,10 +24,10 @@
 import android.Manifest;
 import android.annotation.IntDef;
 import android.app.AppOpsManager;
-import android.app.admin.DeviceAdminInfo;
 import android.app.admin.DevicePolicyManagerInternal;
 import android.content.Context;
 import android.content.pm.PackageManager;
+import android.os.Process;
 import android.os.UserHandle;
 import android.telephony.TelephonyManager;
 
@@ -111,12 +111,12 @@
         boolean hasCarrierPrivileges = tm != null &&
                 tm.checkCarrierPrivilegesForPackageAnyPhone(callingPackage) ==
                         TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS;
-        boolean isDeviceOwner = dpmi != null && dpmi.isActiveAdminWithPolicy(callingUid,
-                DeviceAdminInfo.USES_POLICY_DEVICE_OWNER);
+        boolean isDeviceOwner = dpmi != null && dpmi.isActiveDeviceOwner(callingUid);
+        final int appId = UserHandle.getAppId(callingUid);
         if (hasCarrierPrivileges || isDeviceOwner
-                || UserHandle.getAppId(callingUid) == android.os.Process.SYSTEM_UID) {
-            // Carrier-privileged apps and device owners, and the system can access data usage for
-            // all apps on the device.
+                || appId == Process.SYSTEM_UID || appId == Process.NETWORK_STACK_UID) {
+            // Carrier-privileged apps and device owners, and the system (including the
+            // network stack) can access data usage for all apps on the device.
             return NetworkStatsAccess.Level.DEVICE;
         }
 
@@ -126,8 +126,9 @@
             return NetworkStatsAccess.Level.DEVICESUMMARY;
         }
 
-        boolean isProfileOwner = dpmi != null && dpmi.isActiveAdminWithPolicy(callingUid,
-                DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);
+        //TODO(b/169395065) Figure out if this flow makes sense in Device Owner mode.
+        boolean isProfileOwner = dpmi != null && (dpmi.isActiveProfileOwner(callingUid)
+                || dpmi.isActiveDeviceOwner(callingUid));
         if (isProfileOwner) {
             // Apps with the AppOps permission, profile owners, and apps with the privileged
             // permission can access data usage for all apps in this user/profile.
diff --git a/services/core/java/com/android/server/net/NetworkStatsService.java b/services/core/java/com/android/server/net/NetworkStatsService.java
index 71e7c8a..81a6641 100644
--- a/services/core/java/com/android/server/net/NetworkStatsService.java
+++ b/services/core/java/com/android/server/net/NetworkStatsService.java
@@ -552,7 +552,8 @@
 
         //  schedule periodic pall alarm based on {@link NetworkStatsSettings#getPollInterval()}.
         final PendingIntent pollIntent =
-                PendingIntent.getBroadcast(mContext, 0, new Intent(ACTION_NETWORK_STATS_POLL), 0);
+                PendingIntent.getBroadcast(mContext, 0, new Intent(ACTION_NETWORK_STATS_POLL),
+                        PendingIntent.FLAG_IMMUTABLE);
 
         final long currentRealtime = SystemClock.elapsedRealtime();
         mAlarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME, currentRealtime,
@@ -1083,12 +1084,10 @@
             return nativeIfaceStats;
         } else {
             // When tethering offload is in use, nativeIfaceStats does not contain usage from
-            // offload, add it back here.
-            // When tethering offload is not in use, nativeIfaceStats contains tethering usage.
-            // this does not cause double-counting of tethering traffic, because
-            // NetdTetheringStatsProvider returns zero NetworkStats
-            // when called with STATS_PER_IFACE.
-            return nativeIfaceStats + getTetherStats(iface, type);
+            // offload, add it back here. Note that the included statistics might be stale
+            // since polling newest stats from hardware might impact system health and not
+            // suitable for TrafficStats API use cases.
+            return nativeIfaceStats + getProviderIfaceStats(iface, type);
         }
     }
 
@@ -1099,39 +1098,28 @@
             return nativeTotalStats;
         } else {
             // Refer to comment in getIfaceStats
-            return nativeTotalStats + getTetherStats(IFACE_ALL, type);
+            return nativeTotalStats + getProviderIfaceStats(IFACE_ALL, type);
         }
     }
 
-    private long getTetherStats(String iface, int type) {
-        final NetworkStats tetherSnapshot;
-        final long token = Binder.clearCallingIdentity();
-        try {
-            tetherSnapshot = getNetworkStatsTethering(STATS_PER_IFACE);
-        } catch (RemoteException e) {
-            Slog.w(TAG, "Error get TetherStats: " + e);
-            return 0;
-        } finally {
-            Binder.restoreCallingIdentity(token);
-        }
-        HashSet<String> limitIfaces;
+    private long getProviderIfaceStats(@Nullable String iface, int type) {
+        final NetworkStats providerSnapshot = getNetworkStatsFromProviders(STATS_PER_IFACE);
+        final HashSet<String> limitIfaces;
         if (iface == IFACE_ALL) {
             limitIfaces = null;
         } else {
-            limitIfaces = new HashSet<String>();
+            limitIfaces = new HashSet<>();
             limitIfaces.add(iface);
         }
-        NetworkStats.Entry entry = tetherSnapshot.getTotal(null, limitIfaces);
-        if (LOGD) Slog.d(TAG, "TetherStats: iface=" + iface + " type=" + type +
-                " entry=" + entry);
+        final NetworkStats.Entry entry = providerSnapshot.getTotal(null, limitIfaces);
         switch (type) {
-            case 0: // TYPE_RX_BYTES
+            case TrafficStats.TYPE_RX_BYTES:
                 return entry.rxBytes;
-            case 1: // TYPE_RX_PACKETS
+            case TrafficStats.TYPE_RX_PACKETS:
                 return entry.rxPackets;
-            case 2: // TYPE_TX_BYTES
+            case TrafficStats.TYPE_TX_BYTES:
                 return entry.txBytes;
-            case 3: // TYPE_TX_PACKETS
+            case TrafficStats.TYPE_TX_PACKETS:
                 return entry.txPackets;
             default:
                 return 0;
@@ -1428,14 +1416,6 @@
         final NetworkStats devSnapshot = readNetworkStatsSummaryDev();
         Trace.traceEnd(TRACE_TAG_NETWORK);
 
-        // Tethering snapshot for dev and xt stats. Counts per-interface data from tethering stats
-        // providers that isn't already counted by dev and XT stats.
-        Trace.traceBegin(TRACE_TAG_NETWORK, "snapshotTether");
-        final NetworkStats tetherSnapshot = getNetworkStatsTethering(STATS_PER_IFACE);
-        Trace.traceEnd(TRACE_TAG_NETWORK);
-        xtSnapshot.combineAllValues(tetherSnapshot);
-        devSnapshot.combineAllValues(tetherSnapshot);
-
         // Snapshot for dev/xt stats from all custom stats providers. Counts per-interface data
         // from stats providers that isn't already counted by dev and XT stats.
         Trace.traceBegin(TRACE_TAG_NETWORK, "snapshotStatsProvider");
@@ -1510,29 +1490,7 @@
         final boolean persistUid = (flags & FLAG_PERSIST_UID) != 0;
         final boolean persistForce = (flags & FLAG_PERSIST_FORCE) != 0;
 
-        // Request asynchronous stats update from all providers for next poll. And wait a bit of
-        // time to allow providers report-in given that normally binder call should be fast. Note
-        // that size of list might be changed because addition/removing at the same time. For
-        // addition, the stats of the missed provider can only be collected in next poll;
-        // for removal, wait might take up to MAX_STATS_PROVIDER_POLL_WAIT_TIME_MS
-        // once that happened.
-        // TODO: request with a valid token.
-        Trace.traceBegin(TRACE_TAG_NETWORK, "provider.requestStatsUpdate");
-        final int registeredCallbackCount = mStatsProviderCbList.size();
-        mStatsProviderSem.drainPermits();
-        invokeForAllStatsProviderCallbacks(
-                (cb) -> cb.mProvider.onRequestStatsUpdate(0 /* unused */));
-        try {
-            mStatsProviderSem.tryAcquire(registeredCallbackCount,
-                    MAX_STATS_PROVIDER_POLL_WAIT_TIME_MS, TimeUnit.MILLISECONDS);
-        } catch (InterruptedException e) {
-            // Strictly speaking it's possible a provider happened to deliver between the timeout
-            // and the log, and that doesn't matter too much as this is just a debug log.
-            Log.d(TAG, "requestStatsUpdate - providers responded "
-                    + mStatsProviderSem.availablePermits()
-                    + "/" + registeredCallbackCount + " : " + e);
-        }
-        Trace.traceEnd(TRACE_TAG_NETWORK);
+        performPollFromProvidersLocked();
 
         // TODO: consider marking "untrusted" times in historical stats
         final long currentTime = mClock.millis();
@@ -1577,6 +1535,33 @@
         Trace.traceEnd(TRACE_TAG_NETWORK);
     }
 
+    @GuardedBy("mStatsLock")
+    private void performPollFromProvidersLocked() {
+        // Request asynchronous stats update from all providers for next poll. And wait a bit of
+        // time to allow providers report-in given that normally binder call should be fast. Note
+        // that size of list might be changed because addition/removing at the same time. For
+        // addition, the stats of the missed provider can only be collected in next poll;
+        // for removal, wait might take up to MAX_STATS_PROVIDER_POLL_WAIT_TIME_MS
+        // once that happened.
+        // TODO: request with a valid token.
+        Trace.traceBegin(TRACE_TAG_NETWORK, "provider.requestStatsUpdate");
+        final int registeredCallbackCount = mStatsProviderCbList.size();
+        mStatsProviderSem.drainPermits();
+        invokeForAllStatsProviderCallbacks(
+                (cb) -> cb.mProvider.onRequestStatsUpdate(0 /* unused */));
+        try {
+            mStatsProviderSem.tryAcquire(registeredCallbackCount,
+                    MAX_STATS_PROVIDER_POLL_WAIT_TIME_MS, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            // Strictly speaking it's possible a provider happened to deliver between the timeout
+            // and the log, and that doesn't matter too much as this is just a debug log.
+            Log.d(TAG, "requestStatsUpdate - providers responded "
+                    + mStatsProviderSem.availablePermits()
+                    + "/" + registeredCallbackCount + " : " + e);
+        }
+        Trace.traceEnd(TRACE_TAG_NETWORK);
+    }
+
     /**
      * Sample recent statistics summary into {@link EventLog}.
      */
@@ -1930,9 +1915,13 @@
     }
 
     /**
-     * Return snapshot of current tethering statistics. Will return empty
-     * {@link NetworkStats} if any problems are encountered.
+     * Return snapshot of current non-offloaded tethering statistics. Will return empty
+     * {@link NetworkStats} if any problems are encountered, or queried by {@code STATS_PER_IFACE}
+     * since it is already included by {@link #nativeGetIfaceStat}.
+     * See {@code OffloadTetheringStatsProvider} for offloaded tethering stats.
      */
+    // TODO: Remove this by implementing {@link NetworkStatsProvider} for non-offloaded
+    //  tethering stats.
     private NetworkStats getNetworkStatsTethering(int how) throws RemoteException {
         try {
             return mNetworkManager.getNetworkStatsTethering(how);
@@ -2225,13 +2214,6 @@
         }
     }
 
-    private static int TYPE_RX_BYTES;
-    private static int TYPE_RX_PACKETS;
-    private static int TYPE_TX_BYTES;
-    private static int TYPE_TX_PACKETS;
-    private static int TYPE_TCP_RX_PACKETS;
-    private static int TYPE_TCP_TX_PACKETS;
-
     private static native long nativeGetTotalStat(int type, boolean useBpfStats);
     private static native long nativeGetIfaceStat(String iface, int type, boolean useBpfStats);
     private static native long nativeGetUidStat(int uid, int type, boolean useBpfStats);
diff --git a/services/core/java/com/android/server/net/NetworkStatsSubscriptionsMonitor.java b/services/core/java/com/android/server/net/NetworkStatsSubscriptionsMonitor.java
index d202a2a..5646c75 100644
--- a/services/core/java/com/android/server/net/NetworkStatsSubscriptionsMonitor.java
+++ b/services/core/java/com/android/server/net/NetworkStatsSubscriptionsMonitor.java
@@ -30,6 +30,7 @@
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.util.Log;
+import android.util.Pair;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.CollectionUtils;
@@ -94,39 +95,41 @@
         // also needed to track CBRS.
         final List<Integer> newSubs = getActiveSubIdList(mSubscriptionManager);
 
-        for (final int subId : newSubs) {
-            final RatTypeListener match = CollectionUtils.find(mRatListeners,
-                    it -> it.mSubId == subId);
-            if (match != null) continue;
+        // IMSI is needed for every newly added sub. Listener stores subscriberId into it to
+        // prevent binder call to telephony when querying RAT. Keep listener registration with empty
+        // IMSI is meaningless since the RAT type changed is ambiguous for multi-SIM if reported
+        // with empty IMSI. So filter the subs w/o a valid IMSI to prevent such registration.
+        final List<Pair<Integer, String>> filteredNewSubs =
+                CollectionUtils.mapNotNull(newSubs, subId -> {
+                    final String subscriberId = mTeleManager.getSubscriberId(subId);
+                    return TextUtils.isEmpty(subscriberId) ? null : new Pair(subId, subscriberId);
+                });
 
-            // Create listener for every newly added sub. Also store subscriberId into it to
-            // prevent binder call to telephony when querying RAT. If the subscriberId is empty
-            // for any reason, such as SIM PIN locked, skip registration.
-            // SubscriberId will be unavailable again if 1. modem crashed 2. reboot
-            // 3. re-insert SIM. If that happens, the listeners will be eventually synchronized
-            // with active sub list once all subscriberIds are ready.
-            final String subscriberId = mTeleManager.getSubscriberId(subId);
-            if (TextUtils.isEmpty(subscriberId)) {
-                Log.d(NetworkStatsService.TAG, "Empty subscriberId for newly added sub "
-                        + subId + ", skip listener registration");
+        for (final Pair<Integer, String> sub : filteredNewSubs) {
+            // Fully match listener with subId and IMSI, since in some rare cases, IMSI might be
+            // suddenly change regardless of subId, such as switch IMSI feature in modem side.
+            // If that happens, register new listener with new IMSI and remove old one later.
+            if (CollectionUtils.find(mRatListeners,
+                    it -> it.equalsKey(sub.first, sub.second)) != null) {
                 continue;
             }
+
             final RatTypeListener listener =
-                    new RatTypeListener(mExecutor, this, subId, subscriberId);
+                    new RatTypeListener(mExecutor, this, sub.first, sub.second);
             mRatListeners.add(listener);
 
             // Register listener to the telephony manager that associated with specific sub.
-            mTeleManager.createForSubscriptionId(subId)
+            mTeleManager.createForSubscriptionId(sub.first)
                     .listen(listener, PhoneStateListener.LISTEN_SERVICE_STATE);
-            Log.d(NetworkStatsService.TAG, "RAT type listener registered for sub " + subId);
+            Log.d(NetworkStatsService.TAG, "RAT type listener registered for sub " + sub.first);
         }
 
         for (final RatTypeListener listener : new ArrayList<>(mRatListeners)) {
-            // If the new list contains the subId of the listener, keeps it.
-            final Integer match = CollectionUtils.find(newSubs, it -> it == listener.mSubId);
-            if (match != null) continue;
-
-            handleRemoveRatTypeListener(listener);
+            // If there is no subId and IMSI matched the listener, removes it.
+            if (CollectionUtils.find(filteredNewSubs,
+                    it -> listener.equalsKey(it.first, it.second)) == null) {
+                handleRemoveRatTypeListener(listener);
+            }
         }
     }
 
@@ -232,5 +235,9 @@
         public int getSubId() {
             return mSubId;
         }
+
+        boolean equalsKey(int subId, @NonNull String subscriberId) {
+            return mSubId == subId && TextUtils.equals(mSubscriberId, subscriberId);
+        }
     }
 }
diff --git a/services/core/java/com/android/server/om/IdmapManager.java b/services/core/java/com/android/server/om/IdmapManager.java
index d6b1b27..eeb2655 100644
--- a/services/core/java/com/android/server/om/IdmapManager.java
+++ b/services/core/java/com/android/server/om/IdmapManager.java
@@ -27,6 +27,7 @@
 import android.os.Build.VERSION_CODES;
 import android.os.OverlayablePolicy;
 import android.os.SystemProperties;
+import android.text.TextUtils;
 import android.util.Slog;
 
 import java.io.IOException;
@@ -53,11 +54,20 @@
     }
 
     private final IdmapDaemon mIdmapDaemon;
-    private final OverlayableInfoCallback mOverlayableCallback;
+    private final PackageManagerHelper mPackageManager;
 
-    IdmapManager(final IdmapDaemon idmapDaemon, final OverlayableInfoCallback verifyCallback) {
-        mOverlayableCallback = verifyCallback;
+    /**
+     * Package name of the reference package defined in 'overlay-config-signature' tag of
+     * SystemConfig or empty String if tag not defined. This package is vetted on scan by
+     * PackageManagerService that it's a system package and is used to check if overlay matches
+     * its signature in order to fulfill the config_signature policy.
+     */
+    private final String mConfigSignaturePackage;
+
+    IdmapManager(final IdmapDaemon idmapDaemon, final PackageManagerHelper packageManager) {
+        mPackageManager = packageManager;
         mIdmapDaemon = idmapDaemon;
+        mConfigSignaturePackage = packageManager.getConfigSignaturePackage();
     }
 
     /**
@@ -139,7 +149,7 @@
         int fulfilledPolicies = OverlayablePolicy.PUBLIC;
 
         // Overlay matches target signature
-        if (mOverlayableCallback.signaturesMatching(targetPackage.packageName,
+        if (mPackageManager.signaturesMatching(targetPackage.packageName,
                 overlayPackage.packageName, userId)) {
             fulfilledPolicies |= OverlayablePolicy.SIGNATURE;
         }
@@ -149,6 +159,16 @@
             fulfilledPolicies |= OverlayablePolicy.ACTOR_SIGNATURE;
         }
 
+        // If SystemConfig defines 'overlay-config-signature' package, given that
+        // this package is vetted by OverlayManagerService that it's a
+        // preinstalled package, check if overlay matches its signature.
+        if (!TextUtils.isEmpty(mConfigSignaturePackage)
+                && mPackageManager.signaturesMatching(mConfigSignaturePackage,
+                                                           overlayPackage.packageName,
+                                                           userId)) {
+            fulfilledPolicies |= OverlayablePolicy.CONFIG_SIGNATURE;
+        }
+
         // Vendor partition (/vendor)
         if (ai.isVendor()) {
             return fulfilledPolicies | OverlayablePolicy.VENDOR_PARTITION;
@@ -183,12 +203,12 @@
         String targetOverlayableName = overlayPackage.targetOverlayableName;
         if (targetOverlayableName != null) {
             try {
-                OverlayableInfo overlayableInfo = mOverlayableCallback.getOverlayableForTarget(
+                OverlayableInfo overlayableInfo = mPackageManager.getOverlayableForTarget(
                         targetPackage.packageName, targetOverlayableName, userId);
                 if (overlayableInfo != null && overlayableInfo.actor != null) {
                     String actorPackageName = OverlayActorEnforcer.getPackageNameForActor(
-                            overlayableInfo.actor, mOverlayableCallback.getNamedActors()).first;
-                    if (mOverlayableCallback.signaturesMatching(actorPackageName,
+                            overlayableInfo.actor, mPackageManager.getNamedActors()).first;
+                    if (mPackageManager.signaturesMatching(actorPackageName,
                             overlayPackage.packageName, userId)) {
                         return true;
                     }
diff --git a/services/core/java/com/android/server/om/OverlayActorEnforcer.java b/services/core/java/com/android/server/om/OverlayActorEnforcer.java
index 2bc3499..8c03c6c 100644
--- a/services/core/java/com/android/server/om/OverlayActorEnforcer.java
+++ b/services/core/java/com/android/server/om/OverlayActorEnforcer.java
@@ -45,7 +45,7 @@
     // By default, the reason is not logged to prevent leaks of why it failed
     private static final boolean DEBUG_REASON = false;
 
-    private final OverlayableInfoCallback mOverlayableCallback;
+    private final PackageManagerHelper mPackageManager;
 
     /**
      * @return nullable actor result with {@link ActorState} failure status
@@ -79,8 +79,8 @@
         return Pair.create(packageName, ActorState.ALLOWED);
     }
 
-    public OverlayActorEnforcer(@NonNull OverlayableInfoCallback overlayableCallback) {
-        mOverlayableCallback = overlayableCallback;
+    public OverlayActorEnforcer(@NonNull PackageManagerHelper packageManager) {
+        mPackageManager = packageManager;
     }
 
     void enforceActor(@NonNull OverlayInfo overlayInfo, @NonNull String methodName,
@@ -110,7 +110,7 @@
                 return ActorState.ALLOWED;
         }
 
-        String[] callingPackageNames = mOverlayableCallback.getPackagesForUid(callingUid);
+        String[] callingPackageNames = mPackageManager.getPackagesForUid(callingUid);
         if (ArrayUtils.isEmpty(callingPackageNames)) {
             return ActorState.NO_PACKAGES_FOR_UID;
         }
@@ -125,12 +125,12 @@
 
         if (TextUtils.isEmpty(targetOverlayableName)) {
             try {
-                if (mOverlayableCallback.doesTargetDefineOverlayable(targetPackageName, userId)) {
+                if (mPackageManager.doesTargetDefineOverlayable(targetPackageName, userId)) {
                     return ActorState.MISSING_TARGET_OVERLAYABLE_NAME;
                 } else {
                     // If there's no overlayable defined, fallback to the legacy permission check
                     try {
-                        mOverlayableCallback.enforcePermission(
+                        mPackageManager.enforcePermission(
                                 android.Manifest.permission.CHANGE_OVERLAY_PACKAGES, methodName);
 
                         // If the previous method didn't throw, check passed
@@ -146,7 +146,7 @@
 
         OverlayableInfo targetOverlayable;
         try {
-            targetOverlayable = mOverlayableCallback.getOverlayableForTarget(targetPackageName,
+            targetOverlayable = mPackageManager.getOverlayableForTarget(targetPackageName,
                     targetOverlayableName, userId);
         } catch (IOException e) {
             return ActorState.UNABLE_TO_GET_TARGET;
@@ -160,7 +160,7 @@
         if (TextUtils.isEmpty(actor)) {
             // If there's no actor defined, fallback to the legacy permission check
             try {
-                mOverlayableCallback.enforcePermission(
+                mPackageManager.enforcePermission(
                         android.Manifest.permission.CHANGE_OVERLAY_PACKAGES, methodName);
 
                 // If the previous method didn't throw, check passed
@@ -170,7 +170,7 @@
             }
         }
 
-        Map<String, Map<String, String>> namedActors = mOverlayableCallback.getNamedActors();
+        Map<String, Map<String, String>> namedActors = mPackageManager.getNamedActors();
         Pair<String, ActorState> actorUriPair = getPackageNameForActor(actor, namedActors);
         ActorState actorUriState = actorUriPair.second;
         if (actorUriState != ActorState.ALLOWED) {
@@ -178,7 +178,7 @@
         }
 
         String packageName = actorUriPair.first;
-        PackageInfo packageInfo = mOverlayableCallback.getPackageInfo(packageName, userId);
+        PackageInfo packageInfo = mPackageManager.getPackageInfo(packageName, userId);
         if (packageInfo == null) {
             return ActorState.MISSING_APP_INFO;
         }
diff --git a/services/core/java/com/android/server/om/OverlayManagerService.java b/services/core/java/com/android/server/om/OverlayManagerService.java
index 3968153..0f8c9c7 100644
--- a/services/core/java/com/android/server/om/OverlayManagerService.java
+++ b/services/core/java/com/android/server/om/OverlayManagerService.java
@@ -1053,8 +1053,7 @@
         }
     }
 
-    private static final class PackageManagerHelperImpl implements PackageManagerHelper,
-            OverlayableInfoCallback {
+    private static final class PackageManagerHelperImpl implements PackageManagerHelper  {
 
         private final Context mContext;
         private final IPackageManager mPackageManager;
@@ -1127,6 +1126,14 @@
             return overlays;
         }
 
+        @Override
+        public String getConfigSignaturePackage() {
+            final String[] pkgs = mPackageManagerInternal.getKnownPackageNames(
+                    PackageManagerInternal.PACKAGE_OVERLAY_CONFIG_SIGNATURE,
+                    UserHandle.USER_SYSTEM);
+            return (pkgs.length == 0) ? null : pkgs[0];
+        }
+
         @Nullable
         @Override
         public OverlayableInfo getOverlayableForTarget(@NonNull String packageName,
diff --git a/services/core/java/com/android/server/om/OverlayableInfoCallback.java b/services/core/java/com/android/server/om/OverlayableInfoCallback.java
deleted file mode 100644
index 5066ecd..0000000
--- a/services/core/java/com/android/server/om/OverlayableInfoCallback.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server.om;
-
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.content.om.OverlayableInfo;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-
-import com.android.server.pm.PackageManagerServiceUtils;
-
-import java.io.IOException;
-import java.util.Map;
-
-/**
- * Delegate to the system for querying information about overlayables and packages.
- */
-public interface OverlayableInfoCallback {
-
-    /**
-     * Read from the APK and AndroidManifest of a package to return the overlayable defined for
-     * a given name.
-     *
-     * @throws IOException if the target can't be read
-     */
-    @Nullable
-    OverlayableInfo getOverlayableForTarget(@NonNull String packageName,
-            @NonNull String targetOverlayableName, int userId)
-            throws IOException;
-
-    /**
-     * @see PackageManager#getPackagesForUid(int)
-     */
-    @Nullable
-    String[] getPackagesForUid(int uid);
-
-    /**
-     * @param userId user to filter package visibility by
-     * @see PackageManager#getPackageInfo(String, int)
-     */
-    @Nullable
-    PackageInfo getPackageInfo(@NonNull String packageName, int userId);
-
-    /**
-     * @return map of system pre-defined, uniquely named actors; keys are namespace,
-     * value maps actor name to package name
-     */
-    @NonNull
-    Map<String, Map<String, String>> getNamedActors();
-
-    /**
-     * @return true if the target package has declared an overlayable
-     */
-    boolean doesTargetDefineOverlayable(String targetPackageName, int userId) throws IOException;
-
-    /**
-     * @throws SecurityException containing message if the caller doesn't have the given
-     *                           permission
-     */
-    void enforcePermission(String permission, String message) throws SecurityException;
-
-    /**
-     * @return true if {@link PackageManagerServiceUtils#compareSignatures} run on both packages
-     *     in the system returns {@link PackageManager#SIGNATURE_MATCH}
-     */
-    boolean signaturesMatching(@NonNull String pkgName1, @NonNull String pkgName2, int userId);
-}
diff --git a/services/core/java/com/android/server/om/PackageManagerHelper.java b/services/core/java/com/android/server/om/PackageManagerHelper.java
index ec9c5e6..b1a8b4e 100644
--- a/services/core/java/com/android/server/om/PackageManagerHelper.java
+++ b/services/core/java/com/android/server/om/PackageManagerHelper.java
@@ -17,11 +17,17 @@
 package com.android.server.om;
 
 import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.content.om.OverlayableInfo;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManagerInternal;
 
+import com.android.server.pm.PackageManagerServiceUtils;
+
+import java.io.IOException;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Delegate for {@link PackageManager} and {@link PackageManagerInternal} functionality,
@@ -30,7 +36,65 @@
  * @hide
  */
 interface PackageManagerHelper {
-    PackageInfo getPackageInfo(@NonNull String packageName, int userId);
-    boolean signaturesMatching(@NonNull String pkgName1, @NonNull String pkgName2, int userId);
+    /**
+     * @return true if the target package has declared an overlayable
+     */
+    boolean doesTargetDefineOverlayable(String targetPackageName, int userId) throws IOException;
+
+    /**
+     * @throws SecurityException containing message if the caller doesn't have the given
+     *                           permission
+     */
+    void enforcePermission(String permission, String message) throws SecurityException;
+
+    /**
+     * Returns the package name of the reference package defined in 'overlay-config-signature' tag
+     * of SystemConfig. This package is vetted on scan by PackageManagerService that it's a system
+     * package and is used to check if overlay matches its signature in order to fulfill the
+     * config_signature policy.
+     */
+    @Nullable
+    String getConfigSignaturePackage();
+
+    /**
+     * @return map of system pre-defined, uniquely named actors; keys are namespace,
+     * value maps actor name to package name
+     */
+    @NonNull
+    Map<String, Map<String, String>> getNamedActors();
+
+    /**
+     * @see PackageManagerInternal#getOverlayPackages(int)
+     */
     List<PackageInfo> getOverlayPackages(int userId);
+
+    /**
+     * Read from the APK and AndroidManifest of a package to return the overlayable defined for
+     * a given name.
+     *
+     * @throws IOException if the target can't be read
+     */
+    @Nullable
+    OverlayableInfo getOverlayableForTarget(@NonNull String packageName,
+            @NonNull String targetOverlayableName, int userId)
+            throws IOException;
+
+    /**
+     * @see PackageManager#getPackagesForUid(int)
+     */
+    @Nullable
+    String[] getPackagesForUid(int uid);
+
+    /**
+     * @param userId user to filter package visibility by
+     * @see PackageManager#getPackageInfo(String, int)
+     */
+    @Nullable
+    PackageInfo getPackageInfo(@NonNull String packageName, int userId);
+
+    /**
+     * @return true if {@link PackageManagerServiceUtils#compareSignatures} run on both packages
+     *     in the system returns {@link PackageManager#SIGNATURE_MATCH}
+     */
+    boolean signaturesMatching(@NonNull String pkgName1, @NonNull String pkgName2, int userId);
 }
diff --git a/services/core/java/com/android/server/os/TEST_MAPPING b/services/core/java/com/android/server/os/TEST_MAPPING
index 502f1e8..d937af1 100644
--- a/services/core/java/com/android/server/os/TEST_MAPPING
+++ b/services/core/java/com/android/server/os/TEST_MAPPING
@@ -1,7 +1,51 @@
 {
   "presubmit": [
     {
+      "file_patterns": ["Bugreport[^/]*\\.java"],
+      "name": "BugreportManagerTestCases",
+      "options": [
+        {
+          "exclude-annotation": "androidx.test.filters.LargeTest"
+        }
+      ]
+    },
+    {
+      "file_patterns": ["Bugreport[^/]*\\.java"],
+      "name": "CtsBugreportTestCases",
+      "options": [
+        {
+          "exclude-annotation": "androidx.test.filters.LargeTest"
+        }
+      ]
+    },
+    {
       "name": "CtsUsbTests"
+    },
+    {
+      "file_patterns": ["Bugreport[^/]*\\.java"],
+      "name": "ShellTests",
+      "options": [
+        {
+          "exclude-annotation": "androidx.test.filters.LargeTest"
+        },
+        {
+          "exclude-annotation": "androidx.test.filters.FlakyTest"
+        }
+      ]
+    }
+  ],
+  "postsubmit": [
+    {
+      "file_patterns": ["Bugreport[^/]*\\.java"],
+      "name": "BugreportManagerTestCases"
+    },
+    {
+      "file_patterns": ["Bugreport[^/]*\\.java"],
+      "name": "CtsBugreportTestCases"
+    },
+    {
+      "file_patterns": ["Bugreport[^/]*\\.java"],
+      "name": "ShellTests"
     }
   ]
 }
diff --git a/services/core/java/com/android/server/pm/ApexManager.java b/services/core/java/com/android/server/pm/ApexManager.java
index e12cb8f..f116a24 100644
--- a/services/core/java/com/android/server/pm/ApexManager.java
+++ b/services/core/java/com/android/server/pm/ApexManager.java
@@ -352,6 +352,11 @@
     public abstract boolean destroyCeSnapshotsNotSpecified(int userId, int[] retainRollbackIds);
 
     /**
+     * Inform apexd that the boot has completed.
+     */
+    public abstract void markBootCompleted();
+
+    /**
      * Dumps various state information to the provided {@link PrintWriter} object.
      *
      * @param pw the {@link PrintWriter} object to send information to.
@@ -883,6 +888,15 @@
             }
         }
 
+        @Override
+        public void markBootCompleted() {
+            try {
+                waitForApexService().markBootCompleted();
+            } catch (RemoteException re) {
+                Slog.e(TAG, "Unable to contact apexservice", re);
+            }
+        }
+
         /**
          * Dump information about the packages contained in a particular cache
          * @param packagesCache the cache to print information about.
@@ -1130,6 +1144,11 @@
         }
 
         @Override
+        public void markBootCompleted() {
+            // No-op
+        }
+
+        @Override
         void dump(PrintWriter pw, String packageName) {
             // No-op
         }
diff --git a/services/core/java/com/android/server/pm/AppsFilter.java b/services/core/java/com/android/server/pm/AppsFilter.java
index c3c2e5e..069a00f 100644
--- a/services/core/java/com/android/server/pm/AppsFilter.java
+++ b/services/core/java/com/android/server/pm/AppsFilter.java
@@ -547,9 +547,9 @@
         final boolean newIsForceQueryable =
                 mForceQueryable.contains(newPkgSetting.appId)
                         /* shared user that is already force queryable */
-                        || newPkg.isForceQueryable()
-                        || newPkgSetting.forceQueryableOverride
+                        || newPkgSetting.forceQueryableOverride /* adb override */
                         || (newPkgSetting.isSystem() && (mSystemAppsQueryable
+                        || newPkg.isForceQueryable()
                         || ArrayUtils.contains(mForceQueryableByDevicePackageNames,
                         newPkg.getPackageName())));
         if (newIsForceQueryable
diff --git a/services/core/java/com/android/server/pm/BackgroundDexOptService.java b/services/core/java/com/android/server/pm/BackgroundDexOptService.java
index 0dfa081..48ec9b4 100644
--- a/services/core/java/com/android/server/pm/BackgroundDexOptService.java
+++ b/services/core/java/com/android/server/pm/BackgroundDexOptService.java
@@ -337,6 +337,7 @@
     private int idleOptimizePackages(PackageManagerService pm, ArraySet<String> pkgs,
             long lowStorageThreshold) {
         ArraySet<String> updatedPackages = new ArraySet<>();
+        ArraySet<String> updatedPackagesDueToSecondaryDex = new ArraySet<>();
 
         try {
             final boolean supportSecondaryDex = supportSecondaryDex();
@@ -391,11 +392,14 @@
             }
 
             int secondaryResult = optimizePackages(pm, pkgs, lowStorageThreshold,
-                    /*isForPrimaryDex*/ false, updatedPackages);
+                    /*isForPrimaryDex*/ false, updatedPackagesDueToSecondaryDex);
             return secondaryResult;
         } finally {
             // Always let the pinner service know about changes.
             notifyPinService(updatedPackages);
+            // Only notify IORap the primary dex opt, because we don't want to
+            // invalidate traces unnecessary due to b/161633001 and that it's
+            // better to have a trace than no trace at all.
             notifyPackagesUpdated(updatedPackages);
         }
     }
diff --git a/services/core/java/com/android/server/pm/OWNERS b/services/core/java/com/android/server/pm/OWNERS
index e48862e..cca2b83 100644
--- a/services/core/java/com/android/server/pm/OWNERS
+++ b/services/core/java/com/android/server/pm/OWNERS
@@ -45,17 +45,17 @@
 per-file SELinuxMMAC.java = cbrubaker@google.com, jeffv@google.com, jgalenson@google.com, nnk@google.com
 
 # shortcuts
-per-file LauncherAppsService.java = omakoto@google.com, yamasani@google.com
-per-file ShareTargetInfo.java = omakoto@google.com, yamasani@google.com
-per-file ShortcutBitmapSaver.java = omakoto@google.com, yamasani@google.com
-per-file ShortcutDumpFiles.java = omakoto@google.com, yamasani@google.com
-per-file ShortcutLauncher.java = omakoto@google.com, yamasani@google.com
-per-file ShortcutNonPersistentUser.java = omakoto@google.com, yamasani@google.com
-per-file ShortcutPackage.java = omakoto@google.com, yamasani@google.com
-per-file ShortcutPackageInfo.java = omakoto@google.com, yamasani@google.com
-per-file ShortcutPackageItem.java = omakoto@google.com, yamasani@google.com
-per-file ShortcutParser.java = omakoto@google.com, yamasani@google.com
-per-file ShortcutRequestPinProcessor.java = omakoto@google.com, yamasani@google.com
-per-file ShortcutService.java = omakoto@google.com, yamasani@google.com
-per-file ShortcutUser.java = omakoto@google.com, yamasani@google.com
+per-file LauncherAppsService.java = omakoto@google.com, yamasani@google.com, sunnygoyal@google.com, mett@google.com, pinyaoting@google.com
+per-file ShareTargetInfo.java = omakoto@google.com, yamasani@google.com, sunnygoyal@google.com, mett@google.com, pinyaoting@google.com
+per-file ShortcutBitmapSaver.java = omakoto@google.com, yamasani@google.com, sunnygoyal@google.com, mett@google.com, pinyaoting@google.com
+per-file ShortcutDumpFiles.java = omakoto@google.com, yamasani@google.com, sunnygoyal@google.com, mett@google.com, pinyaoting@google.com
+per-file ShortcutLauncher.java = omakoto@google.com, yamasani@google.com, sunnygoyal@google.com, mett@google.com, pinyaoting@google.com
+per-file ShortcutNonPersistentUser.java = omakoto@google.com, yamasani@google.com, sunnygoyal@google.com, mett@google.com, pinyaoting@google.com
+per-file ShortcutPackage.java = omakoto@google.com, yamasani@google.com, sunnygoyal@google.com, mett@google.com, pinyaoting@google.com
+per-file ShortcutPackageInfo.java = omakoto@google.com, yamasani@google.com, sunnygoyal@google.com, mett@google.com, pinyaoting@google.com
+per-file ShortcutPackageItem.java = omakoto@google.com, yamasani@google.com, sunnygoyal@google.com, mett@google.com, pinyaoting@google.com
+per-file ShortcutParser.java = omakoto@google.com, yamasani@google.com, sunnygoyal@google.com, mett@google.com, pinyaoting@google.com
+per-file ShortcutRequestPinProcessor.java = omakoto@google.com, yamasani@google.com, sunnygoyal@google.com, mett@google.com, pinyaoting@google.com
+per-file ShortcutService.java = omakoto@google.com, yamasani@google.com, sunnygoyal@google.com, mett@google.com, pinyaoting@google.com
+per-file ShortcutUser.java = omakoto@google.com, yamasani@google.com, sunnygoyal@google.com, mett@google.com, pinyaoting@google.com
 
diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java
index 994cec2..90d9834 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerSession.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java
@@ -943,6 +943,23 @@
         }
     }
 
+    private ParcelFileDescriptor openTargetInternal(String path, int flags, int mode)
+            throws IOException, ErrnoException {
+        // TODO: this should delegate to DCS so the system process avoids
+        // holding open FDs into containers.
+        final FileDescriptor fd = Os.open(path, flags, mode);
+        return new ParcelFileDescriptor(fd);
+    }
+
+    private ParcelFileDescriptor createRevocableFdInternal(RevocableFileDescriptor fd,
+            ParcelFileDescriptor pfd) throws IOException {
+        int releasedFdInt = pfd.detachFd();
+        FileDescriptor releasedFd = new FileDescriptor();
+        releasedFd.setInt$(releasedFdInt);
+        fd.init(mContext, releasedFd);
+        return fd.getRevocableFileDescriptor();
+    }
+
     private ParcelFileDescriptor doWriteInternal(String name, long offsetBytes, long lengthBytes,
             ParcelFileDescriptor incomingFd) throws IOException {
         // Quick sanity check of state, and allocate a pipe for ourselves. We
@@ -975,21 +992,20 @@
                 Binder.restoreCallingIdentity(identity);
             }
 
-            // TODO: this should delegate to DCS so the system process avoids
-            // holding open FDs into containers.
-            final FileDescriptor targetFd = Os.open(target.getAbsolutePath(),
+            ParcelFileDescriptor targetPfd = openTargetInternal(target.getAbsolutePath(),
                     O_CREAT | O_WRONLY, 0644);
             Os.chmod(target.getAbsolutePath(), 0644);
 
             // If caller specified a total length, allocate it for them. Free up
             // cache space to grow, if needed.
             if (stageDir != null && lengthBytes > 0) {
-                mContext.getSystemService(StorageManager.class).allocateBytes(targetFd, lengthBytes,
+                mContext.getSystemService(StorageManager.class).allocateBytes(
+                        targetPfd.getFileDescriptor(), lengthBytes,
                         PackageHelper.translateAllocateFlags(params.installFlags));
             }
 
             if (offsetBytes > 0) {
-                Os.lseek(targetFd, offsetBytes, OsConstants.SEEK_SET);
+                Os.lseek(targetPfd.getFileDescriptor(), offsetBytes, OsConstants.SEEK_SET);
             }
 
             if (incomingFd != null) {
@@ -999,8 +1015,9 @@
                 // inserted above to hold the session active.
                 try {
                     final Int64Ref last = new Int64Ref(0);
-                    FileUtils.copy(incomingFd.getFileDescriptor(), targetFd, lengthBytes, null,
-                            Runnable::run, (long progress) -> {
+                    FileUtils.copy(incomingFd.getFileDescriptor(), targetPfd.getFileDescriptor(),
+                            lengthBytes, null, Runnable::run,
+                            (long progress) -> {
                                 if (params.sizeBytes > 0) {
                                     final long delta = progress - last.value;
                                     last.value = progress;
@@ -1011,7 +1028,7 @@
                                 }
                             });
                 } finally {
-                    IoUtils.closeQuietly(targetFd);
+                    IoUtils.closeQuietly(targetPfd);
                     IoUtils.closeQuietly(incomingFd);
 
                     // We're done here, so remove the "bridge" that was holding
@@ -1027,12 +1044,11 @@
                 }
                 return null;
             } else if (PackageInstaller.ENABLE_REVOCABLE_FD) {
-                fd.init(mContext, targetFd);
-                return fd.getRevocableFileDescriptor();
+                return createRevocableFdInternal(fd, targetPfd);
             } else {
-                bridge.setTargetFile(targetFd);
+                bridge.setTargetFile(targetPfd);
                 bridge.start();
-                return new ParcelFileDescriptor(bridge.getClientSocket());
+                return bridge.getClientSocket();
             }
 
         } catch (ErrnoException e) {
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 81748b2..7fa3225 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -120,6 +120,7 @@
 import static com.android.server.pm.InstructionSets.getDexCodeInstructionSets;
 import static com.android.server.pm.InstructionSets.getPreferredInstructionSet;
 import static com.android.server.pm.PackageManagerServiceCompilerMapping.getDefaultCompilerFilter;
+import static com.android.server.pm.PackageManagerServiceUtils.comparePackageSignatures;
 import static com.android.server.pm.PackageManagerServiceUtils.compareSignatures;
 import static com.android.server.pm.PackageManagerServiceUtils.compressedFileExists;
 import static com.android.server.pm.PackageManagerServiceUtils.decompressFile;
@@ -280,6 +281,7 @@
 import android.os.storage.VolumeInfo;
 import android.os.storage.VolumeRecord;
 import android.permission.IPermissionManager;
+import android.provider.ContactsContract;
 import android.provider.DeviceConfig;
 import android.provider.Settings.Global;
 import android.provider.Settings.Secure;
@@ -1113,6 +1115,7 @@
         public @Nullable String storageManagerPackage;
         public @Nullable String defaultTextClassifierPackage;
         public @Nullable String systemTextClassifierPackage;
+        public @Nullable String overlayConfigSignaturePackage;
         public ViewCompiler viewCompiler;
         public @Nullable String wellbeingPackage;
         public @Nullable String retailDemoPackage;
@@ -1645,6 +1648,7 @@
     final @Nullable String mServicesExtensionPackageName;
     final @Nullable String mSharedSystemSharedLibraryPackageName;
     final @Nullable String mRetailDemoPackage;
+    final @Nullable String mOverlayConfigSignaturePackage;
 
     private final PackageUsage mPackageUsage = new PackageUsage();
     private final CompilerStats mCompilerStats = new CompilerStats();
@@ -2807,6 +2811,7 @@
         mIncidentReportApproverPackage = testParams.incidentReportApproverPackage;
         mServicesExtensionPackageName = testParams.servicesExtensionPackageName;
         mSharedSystemSharedLibraryPackageName = testParams.sharedSystemSharedLibraryPackageName;
+        mOverlayConfigSignaturePackage = testParams.overlayConfigSignaturePackage;
 
         mResolveComponentName = testParams.resolveComponentName;
         mPackages.putAll(testParams.packages);
@@ -3372,6 +3377,7 @@
             mAppPredictionServicePackage = getAppPredictionServicePackageName();
             mIncidentReportApproverPackage = getIncidentReportApproverPackageName();
             mRetailDemoPackage = getRetailDemoPackageName();
+            mOverlayConfigSignaturePackage = getOverlayConfigSignaturePackageName();
 
             // Now that we know all of the shared libraries, update all clients to have
             // the correct library paths.
@@ -3648,6 +3654,8 @@
         PackageParser.readConfigUseRoundIcon(mContext.getResources());
 
         mServiceStartWithDelay = SystemClock.uptimeMillis() + (60 * 1000L);
+
+        Slog.i(TAG, "Fix for b/169414761 is applied");
     }
 
     /**
@@ -4198,13 +4206,9 @@
         Iterator<ResolveInfo> iter = matches.iterator();
         while (iter.hasNext()) {
             final ResolveInfo rInfo = iter.next();
-            final PackageSetting ps = mSettings.mPackages.get(rInfo.activityInfo.packageName);
-            if (ps != null) {
-                final PermissionsState permissionsState = ps.getPermissionsState();
-                if (permissionsState.hasPermission(Manifest.permission.INSTALL_PACKAGES, 0)
-                        || Build.IS_ENG) {
-                    continue;
-                }
+            if (checkPermission(Manifest.permission.INSTALL_PACKAGES,
+                    rInfo.activityInfo.packageName, 0) == PERMISSION_GRANTED || Build.IS_ENG) {
+                continue;
             }
             iter.remove();
         }
@@ -4380,8 +4384,24 @@
             final int[] gids = (flags & PackageManager.GET_GIDS) == 0
                     ? EMPTY_INT_ARRAY : permissionsState.computeGids(userId);
             // Compute granted permissions only if package has requested permissions
-            final Set<String> permissions = ArrayUtils.isEmpty(p.getRequestedPermissions())
+            Set<String> permissions = ArrayUtils.isEmpty(p.getRequestedPermissions())
                     ? Collections.emptySet() : permissionsState.getPermissions(userId);
+            if (state.instantApp) {
+                permissions = new ArraySet<>(permissions);
+                permissions.removeIf(permissionName -> {
+                    BasePermission permission = mPermissionManager.getPermissionTEMP(
+                            permissionName);
+                    if (permission == null) {
+                        return true;
+                    }
+                    if (!permission.isInstant()) {
+                        EventLog.writeEvent(0x534e4554, "140256621", UserHandle.getUid(userId,
+                                ps.appId), permissionName);
+                        return true;
+                    }
+                    return false;
+                });
+            }
 
             PackageInfo packageInfo = PackageInfoUtils.generate(p, gids, flags,
                     ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId, ps);
@@ -8579,10 +8599,9 @@
     private void addPackageHoldingPermissions(ArrayList<PackageInfo> list, PackageSetting ps,
             String[] permissions, boolean[] tmp, int flags, int userId) {
         int numMatch = 0;
-        final PermissionsState permissionsState = ps.getPermissionsState();
         for (int i=0; i<permissions.length; i++) {
             final String permission = permissions[i];
-            if (permissionsState.hasPermission(permission, userId)) {
+            if (checkPermission(permission, ps.name, userId) == PERMISSION_GRANTED) {
                 tmp[i] = true;
                 numMatch++;
             } else {
@@ -10545,7 +10564,7 @@
                     continue;
                 }
                 final PackageSetting staticLibPkgSetting = getPackageSetting(
-                        toStaticSharedLibraryPackageName(sharedLibraryInfo.getPackageName(),
+                        toStaticSharedLibraryPackageName(sharedLibraryInfo.getName(),
                                 sharedLibraryInfo.getLongVersion()));
                 if (staticLibPkgSetting == null) {
                     Slog.wtf(TAG, "Shared lib without setting: " + sharedLibraryInfo);
@@ -11095,6 +11114,8 @@
                 mSettings.addRenamedPackageLPw(parsedPackage.getRealPackage(),
                         originalPkgSetting.name);
                 mTransferredPackages.add(originalPkgSetting.name);
+            } else {
+                mSettings.removeRenamedPackageLPw(parsedPackage.getPackageName());
             }
         }
         if (pkgSetting.sharedUser != null) {
@@ -12095,12 +12116,8 @@
                 if (sharedUserSetting != null && sharedUserSetting.isPrivileged()) {
                     // Exempt SharedUsers signed with the platform key.
                     PackageSetting platformPkgSetting = mSettings.mPackages.get("android");
-                    if ((platformPkgSetting.signatures.mSigningDetails
-                            != PackageParser.SigningDetails.UNKNOWN)
-                            && (compareSignatures(
-                                    platformPkgSetting.signatures.mSigningDetails.signatures,
-                            pkg.getSigningDetails().signatures)
-                                            != PackageManager.SIGNATURE_MATCH)) {
+                    if (!comparePackageSignatures(platformPkgSetting,
+                            pkg.getSigningDetails().signatures)) {
                         throw new PackageManagerException("Apps that share a user with a " +
                                 "privileged app must themselves be marked as privileged. " +
                                 pkg.getPackageName() + " shares privileged user " +
@@ -12147,12 +12164,8 @@
                     if (pkg.getTargetSdkVersion() < Build.VERSION_CODES.Q) {
                         final PackageSetting platformPkgSetting =
                                 mSettings.getPackageLPr("android");
-                        if ((platformPkgSetting.signatures.mSigningDetails
-                                    != PackageParser.SigningDetails.UNKNOWN)
-                                && (compareSignatures(
-                                        platformPkgSetting.signatures.mSigningDetails.signatures,
-                                pkg.getSigningDetails().signatures)
-                                    != PackageManager.SIGNATURE_MATCH)) {
+                        if (!comparePackageSignatures(platformPkgSetting,
+                                pkg.getSigningDetails().signatures)) {
                             throw new PackageManagerException("Overlay "
                                     + pkg.getPackageName()
                                     + " must target Q or later, "
@@ -12161,24 +12174,36 @@
                     }
 
                     // A non-preloaded overlay package, without <overlay android:targetName>, will
-                    // only be used if it is signed with the same certificate as its target. If the
-                    // target is already installed, check this here to augment the last line of
-                    // defence which is OMS.
+                    // only be used if it is signed with the same certificate as its target OR if
+                    // it is signed with the same certificate as a reference package declared
+                    // in 'overlay-config-signature' tag of SystemConfig.
+                    // If the target is already installed or 'overlay-config-signature' tag in
+                    // SystemConfig is set, check this here to augment the last line of defense
+                    // which is OMS.
                     if (pkg.getOverlayTargetName() == null) {
                         final PackageSetting targetPkgSetting =
                                 mSettings.getPackageLPr(pkg.getOverlayTarget());
                         if (targetPkgSetting != null) {
-                            if ((targetPkgSetting.signatures.mSigningDetails
-                                        != PackageParser.SigningDetails.UNKNOWN)
-                                    && (compareSignatures(
-                                            targetPkgSetting.signatures.mSigningDetails.signatures,
-                                    pkg.getSigningDetails().signatures)
-                                        != PackageManager.SIGNATURE_MATCH)) {
-                                throw new PackageManagerException("Overlay "
-                                        + pkg.getPackageName() + " and target "
-                                        + pkg.getOverlayTarget() + " signed with"
-                                        + " different certificates, and the overlay lacks"
-                                        + " <overlay android:targetName>");
+                            if (!comparePackageSignatures(targetPkgSetting,
+                                    pkg.getSigningDetails().signatures)) {
+                                // check reference signature
+                                if (mOverlayConfigSignaturePackage == null) {
+                                    throw new PackageManagerException("Overlay "
+                                            + pkg.getPackageName() + " and target "
+                                            + pkg.getOverlayTarget() + " signed with"
+                                            + " different certificates, and the overlay lacks"
+                                            + " <overlay android:targetName>");
+                                }
+                                final PackageSetting refPkgSetting =
+                                        mSettings.getPackageLPr(mOverlayConfigSignaturePackage);
+                                if (!comparePackageSignatures(refPkgSetting,
+                                        pkg.getSigningDetails().signatures)) {
+                                    throw new PackageManagerException("Overlay "
+                                            + pkg.getPackageName() + " signed with a different "
+                                            + "certificate than both the reference package and "
+                                            + "target " + pkg.getOverlayTarget() + ", and the "
+                                            + "overlay lacks <overlay android:targetName>");
+                                }
                             }
                         }
                     }
@@ -19185,6 +19210,14 @@
         final int flags = action.flags;
         final boolean systemApp = isSystemApp(ps);
 
+        // We need to get the permission state before package state is (potentially) destroyed.
+        final SparseBooleanArray hadSuspendAppsPermission = new SparseBooleanArray();
+        // allUserHandles could be null, so call mUserManager.getUserIds() directly which is cached anyway.
+        for (int userId : mUserManager.getUserIds()) {
+            hadSuspendAppsPermission.put(userId, checkPermission(Manifest.permission.SUSPEND_APPS,
+                    packageName, userId) == PERMISSION_GRANTED);
+        }
+
         final int userId = user == null ? UserHandle.USER_ALL : user.getIdentifier();
 
         if ((!systemApp || (flags & PackageManager.DELETE_SYSTEM_APP) != 0)
@@ -19251,8 +19284,7 @@
             affectedUserIds = resolveUserIds(userId);
         }
         for (final int affectedUserId : affectedUserIds) {
-            if (ps.getPermissionsState().hasPermission(Manifest.permission.SUSPEND_APPS,
-                    affectedUserId)) {
+            if (hadSuspendAppsPermission.get(affectedUserId)) {
                 unsuspendForSuspendingPackage(packageName, affectedUserId);
                 removeAllDistractingPackageRestrictions(affectedUserId);
             }
@@ -20711,6 +20743,11 @@
         return ensureSystemPackageName(contentCaptureServiceComponentName.getPackageName());
     }
 
+    public String getOverlayConfigSignaturePackageName() {
+        return ensureSystemPackageName(SystemConfig.getInstance()
+                .getOverlayConfigSignaturePackage());
+    }
+
     @Nullable
     private String getRetailDemoPackageName() {
         final String predefinedPkgName = mContext.getString(R.string.config_retailDemoPackage);
@@ -21017,8 +21054,8 @@
                 pkgSetting.setEnabled(newState, userId, callingPackage);
                 if ((newState == COMPONENT_ENABLED_STATE_DISABLED_USER
                         || newState == COMPONENT_ENABLED_STATE_DISABLED)
-                        && pkgSetting.getPermissionsState().hasPermission(
-                                Manifest.permission.SUSPEND_APPS, userId)) {
+                        && checkPermission(Manifest.permission.SUSPEND_APPS, packageName, userId)
+                        == PERMISSION_GRANTED) {
                     // This app should not generally be allowed to get disabled by the UI, but if it
                     // ever does, we don't want to end up with some of the user's apps permanently
                     // suspended.
@@ -24227,6 +24264,8 @@
                     return TextUtils.isEmpty(mRetailDemoPackage)
                             ? ArrayUtils.emptyArray(String.class)
                             : new String[] {mRetailDemoPackage};
+                case PackageManagerInternal.PACKAGE_OVERLAY_CONFIG_SIGNATURE:
+                    return filterOnlySystemPackages(getOverlayConfigSignaturePackageName());
                 default:
                     return ArrayUtils.emptyArray(String.class);
             }
@@ -25400,6 +25439,32 @@
         }
     }
 
+    @Override
+    public void grantImplicitAccess(int recipientUid, String visibleAuthority) {
+        // This API is exposed temporarily to only the contacts provider. (b/158688602)
+        final int callingUid = Binder.getCallingUid();
+        ProviderInfo contactsProvider = resolveContentProviderInternal(
+                        ContactsContract.AUTHORITY, 0, UserHandle.getUserId(callingUid));
+        if (contactsProvider == null || contactsProvider.applicationInfo == null
+                || !UserHandle.isSameApp(contactsProvider.applicationInfo.uid, callingUid)) {
+            throw new SecurityException(callingUid + " is not allow to call grantImplicitAccess");
+        }
+        final int userId = UserHandle.getUserId(recipientUid);
+        final long token = Binder.clearCallingIdentity();
+        final ProviderInfo providerInfo;
+        try {
+            providerInfo = resolveContentProvider(visibleAuthority, 0 /*flags*/, userId);
+        } finally {
+            Binder.restoreCallingIdentity(token);
+        }
+        if (providerInfo == null) {
+            return;
+        }
+        int visibleUid = providerInfo.applicationInfo.uid;
+        mPmInternal.grantImplicitAccess(userId, null /*Intent*/, UserHandle.getAppId(recipientUid),
+                visibleUid, false);
+    }
+
     boolean canHaveOatDir(String packageName) {
         synchronized (mLock) {
             AndroidPackage p = mPackages.get(packageName);
diff --git a/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java b/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java
index 03f4708..de0e4b5 100644
--- a/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java
+++ b/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java
@@ -488,6 +488,18 @@
     }
 
     /**
+     * Returns true if the signature set of the package is identical to the specified signature
+     * set or if the signing details of the package are unknown.
+     */
+    public static boolean comparePackageSignatures(PackageSetting pkgSetting,
+            Signature[] signatures) {
+        return pkgSetting.signatures.mSigningDetails
+                == PackageParser.SigningDetails.UNKNOWN
+                || compareSignatures(pkgSetting.signatures.mSigningDetails.signatures, signatures)
+                == PackageManager.SIGNATURE_MATCH;
+    }
+
+    /**
      * Used for backward compatibility to make sure any packages with
      * certificate chains get upgraded to the new style. {@code existingSigs}
      * will be in the old format (since they were stored on disk from before the
diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
index 09682c6..bb5a953 100644
--- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
+++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
@@ -104,6 +104,7 @@
 import com.android.internal.content.PackageHelper;
 import com.android.internal.util.ArrayUtils;
 import com.android.internal.util.IndentingPrintWriter;
+import com.android.internal.util.Preconditions;
 import com.android.server.LocalServices;
 import com.android.server.SystemConfig;
 import com.android.server.pm.PackageManagerShellCommandDataLoader.Metadata;
@@ -139,7 +140,7 @@
     private static final String STDIN_PATH = "-";
     /** Path where ART profiles snapshots are dumped for the shell user */
     private final static String ART_PROFILE_SNAPSHOT_DEBUG_LOCATION = "/data/misc/profman/";
-    private static final int DEFAULT_WAIT_MS = 60 * 1000;
+    private static final int DEFAULT_STAGED_READY_TIMEOUT_MS = 60 * 1000;
     private static final String TAG = "PackageManagerShellCommand";
 
     final IPackageManager mInterface;
@@ -455,9 +456,20 @@
         return 1;
     }
 
-    private int runRollbackApp() {
+    private int runRollbackApp() throws RemoteException {
         final PrintWriter pw = getOutPrintWriter();
 
+        String opt;
+        long stagedReadyTimeoutMs = DEFAULT_STAGED_READY_TIMEOUT_MS;
+        while ((opt = getNextOption()) != null) {
+            switch (opt) {
+                case "--staged-ready-timeout":
+                    stagedReadyTimeoutMs = Long.parseLong(getNextArgRequired());
+                    break;
+                default:
+                    throw new IllegalArgumentException("Unknown option: " + opt);
+            }
+        }
         final String packageName = getNextArgRequired();
         if (packageName == null) {
             pw.println("Error: package name not specified");
@@ -465,11 +477,10 @@
         }
 
         final LocalIntentReceiver receiver = new LocalIntentReceiver();
+        RollbackInfo rollback = null;
         try {
             IRollbackManager rm = IRollbackManager.Stub.asInterface(
                     ServiceManager.getService(Context.ROLLBACK_SERVICE));
-
-            RollbackInfo rollback = null;
             for (RollbackInfo r : (List<RollbackInfo>) rm.getAvailableRollbacks().getList()) {
                 for (PackageRollbackInfo info : r.getPackages()) {
                     if (packageName.equals(info.getPackageName())) {
@@ -494,14 +505,21 @@
         final Intent result = receiver.getResult();
         final int status = result.getIntExtra(RollbackManager.EXTRA_STATUS,
                 RollbackManager.STATUS_FAILURE);
-        if (status == RollbackManager.STATUS_SUCCESS) {
-            pw.println("Success");
-            return 0;
-        } else {
+
+        if (status != RollbackManager.STATUS_SUCCESS) {
             pw.println("Failure ["
                     + result.getStringExtra(RollbackManager.EXTRA_STATUS_MESSAGE) + "]");
             return 1;
         }
+
+        if (rollback.isStaged() && stagedReadyTimeoutMs > 0) {
+            final int committedSessionId = rollback.getCommittedSessionId();
+            return doWaitForStagedSessionReady(committedSessionId, stagedReadyTimeoutMs, pw);
+        }
+
+        pw.println("Success");
+        return 0;
+
     }
 
     private void setParamsSize(InstallParams params, List<String> inPaths) {
@@ -1042,7 +1060,9 @@
                 + "; isStaged = " + session.isStaged()
                 + "; isReady = " + session.isStagedSessionReady()
                 + "; isApplied = " + session.isStagedSessionApplied()
-                + "; isFailed = " + session.isStagedSessionFailed() + ";");
+                + "; isFailed = " + session.isStagedSessionFailed()
+                + "; errorMsg = " + session.getStagedSessionErrorMessage()
+                + ";");
     }
 
     private Intent parseIntentAndUser() throws URISyntaxException {
@@ -1304,11 +1324,12 @@
             }
             abandonSession = false;
 
-            if (!params.sessionParams.isStaged || !params.mWaitForStagedSessionReady) {
-                pw.println("Success");
-                return 0;
+            if (params.sessionParams.isStaged && params.stagedReadyTimeoutMs > 0) {
+                return doWaitForStagedSessionReady(sessionId, params.stagedReadyTimeoutMs, pw);
             }
-            return doWaitForStagedSessionRead(sessionId, params.timeoutMs, pw);
+
+            pw.println("Success");
+            return 0;
         } finally {
             if (abandonSession) {
                 try {
@@ -1319,11 +1340,9 @@
         }
     }
 
-    private int doWaitForStagedSessionRead(int sessionId, long timeoutMs, PrintWriter pw)
+    private int doWaitForStagedSessionReady(int sessionId, long timeoutMs, PrintWriter pw)
               throws RemoteException {
-        if (timeoutMs <= 0) {
-            timeoutMs = DEFAULT_WAIT_MS;
-        }
+        Preconditions.checkArgument(timeoutMs > 0);
         PackageInstaller.SessionInfo si = mInterface.getPackageInstaller()
                 .getSessionInfo(sessionId);
         if (si == null) {
@@ -1373,25 +1392,14 @@
     private int runInstallCommit() throws RemoteException {
         final PrintWriter pw = getOutPrintWriter();
         String opt;
-        boolean waitForStagedSessionReady = true;
-        long timeoutMs = -1;
+        long stagedReadyTimeoutMs = DEFAULT_STAGED_READY_TIMEOUT_MS;
         while ((opt = getNextOption()) != null) {
             switch (opt) {
-                case "--wait":
-                    waitForStagedSessionReady = true;
-                    // If there is only one remaining argument, then it represents the sessionId, we
-                    // shouldn't try to parse it as timeoutMs.
-                    if (getRemainingArgsCount() > 1) {
-                        try {
-                            timeoutMs = Long.parseLong(peekNextArg());
-                            getNextArg();
-                        } catch (NumberFormatException ignore) {
-                        }
-                    }
+                case "--staged-ready-timeout":
+                    stagedReadyTimeoutMs = Long.parseLong(getNextArgRequired());
                     break;
-                case "--no-wait":
-                    waitForStagedSessionReady = false;
-                    break;
+                default:
+                    throw new IllegalArgumentException("Unknown option: " + opt);
             }
         }
         final int sessionId = Integer.parseInt(getNextArg());
@@ -1400,11 +1408,11 @@
         }
         final PackageInstaller.SessionInfo si = mInterface.getPackageInstaller()
                 .getSessionInfo(sessionId);
-        if (si == null || !si.isStaged() || !waitForStagedSessionReady) {
-            pw.println("Success");
-            return 0;
+        if (si != null && si.isStaged() && stagedReadyTimeoutMs > 0) {
+            return doWaitForStagedSessionReady(sessionId, stagedReadyTimeoutMs, pw);
         }
-        return doWaitForStagedSessionRead(sessionId, timeoutMs, pw);
+        pw.println("Success");
+        return 0;
     }
 
     private int runInstallCreate() throws RemoteException {
@@ -2735,8 +2743,7 @@
         SessionParams sessionParams;
         String installerPackageName;
         int userId = UserHandle.USER_ALL;
-        boolean mWaitForStagedSessionReady = true;
-        long timeoutMs = DEFAULT_WAIT_MS;
+        long stagedReadyTimeoutMs = DEFAULT_STAGED_READY_TIMEOUT_MS;
     }
 
     private InstallParams makeInstallParams() {
@@ -2865,16 +2872,8 @@
                     }
                     sessionParams.installFlags |= PackageManager.INSTALL_ENABLE_ROLLBACK;
                     break;
-                case "--wait":
-                    params.mWaitForStagedSessionReady = true;
-                    try {
-                        params.timeoutMs = Long.parseLong(peekNextArg());
-                        getNextArg();
-                    } catch (NumberFormatException ignore) {
-                    }
-                    break;
-                case "--no-wait":
-                    params.mWaitForStagedSessionReady = false;
+                case "--staged-ready-timeout":
+                    params.stagedReadyTimeoutMs = Long.parseLong(getNextArgRequired());
                     break;
                 case "--skip-verification":
                     sessionParams.installFlags |= PackageManager.INSTALL_DISABLE_VERIFICATION;
@@ -3597,7 +3596,7 @@
         pw.println("       [--preload] [--instant] [--full] [--dont-kill]");
         pw.println("       [--enable-rollback]");
         pw.println("       [--force-uuid internal|UUID] [--pkg PACKAGE] [-S BYTES]");
-        pw.println("       [--apex] [--wait TIMEOUT]");
+        pw.println("       [--apex] [--staged-ready-timeout TIMEOUT]");
         pw.println("       [PATH [SPLIT...]|-]");
         pw.println("    Install an application.  Must provide the apk data to install, either as");
         pw.println("    file path(s) or '-' to read from stdin.  Options are:");
@@ -3625,9 +3624,11 @@
         pw.println("          3=device setup, 4=user request");
         pw.println("      --force-uuid: force install on to disk volume with given UUID");
         pw.println("      --apex: install an .apex file, not an .apk");
-        pw.println("      --wait: when performing staged install, wait TIMEOUT milliseconds");
-        pw.println("          for pre-reboot verification to complete. If TIMEOUT is not");
-        pw.println("          specified it will wait for " + DEFAULT_WAIT_MS + " milliseconds.");
+        pw.println("      --staged-ready-timeout: By default, staged sessions wait "
+                + DEFAULT_STAGED_READY_TIMEOUT_MS);
+        pw.println("          milliseconds for pre-reboot verification to complete when");
+        pw.println("          performing staged install. This flag is used to alter the waiting");
+        pw.println("          time. You can skip the waiting time by specifying a TIMEOUT of '0'");
         pw.println("");
         pw.println("  install-existing [--user USER_ID|all|current]");
         pw.println("       [--instant] [--full] [--wait] [--restrict-permissions] PACKAGE");
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index a0feb94..0f5d978 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -476,6 +476,10 @@
         return mRenamedPackages.put(pkgName, origPkgName);
     }
 
+    void removeRenamedPackageLPw(String pkgName) {
+        mRenamedPackages.remove(pkgName);
+    }
+
     public boolean canPropagatePermissionToInstantApp(String permName) {
         return mPermissions.canPropagatePermissionToInstantApp(permName);
     }
diff --git a/services/core/java/com/android/server/pm/StagingManager.java b/services/core/java/com/android/server/pm/StagingManager.java
index e2bd1f1..33433db 100644
--- a/services/core/java/com/android/server/pm/StagingManager.java
+++ b/services/core/java/com/android/server/pm/StagingManager.java
@@ -164,6 +164,7 @@
         public void onBootPhase(int phase) {
             if (phase == SystemService.PHASE_BOOT_COMPLETED && sStagingManager != null) {
                 sStagingManager.markStagedSessionsAsSuccessful();
+                sStagingManager.markBootCompleted();
             }
         }
     }
@@ -179,6 +180,10 @@
         }
     }
 
+    private void markBootCompleted() {
+        mApexManager.markBootCompleted();
+    }
+
     /**
      * Validates the signature used to sign the container of the new apex package
      *
@@ -600,13 +605,14 @@
             // If checkpoint is supported, then we only resume sessions if we are in checkpointing
             // mode. If not, we fail all sessions.
             if (supportsCheckpoint() && !needsCheckpoint()) {
-                String errorMsg = "Reverting back to safe state. Marking " + session.sessionId
-                        + " as failed";
-                if (!TextUtils.isEmpty(mFailureReason)) {
-                    errorMsg = errorMsg + ": " + mFailureReason;
+                String revertMsg = "Reverting back to safe state. Marking "
+                        + session.sessionId + " as failed.";
+                final String reasonForRevert = getReasonForRevert();
+                if (!TextUtils.isEmpty(reasonForRevert)) {
+                    revertMsg += " Reason for revert: " + reasonForRevert;
                 }
-                Slog.d(TAG, errorMsg);
-                session.setStagedSessionFailed(SessionInfo.STAGED_SESSION_UNKNOWN, errorMsg);
+                Slog.d(TAG, revertMsg);
+                session.setStagedSessionFailed(SessionInfo.STAGED_SESSION_UNKNOWN, revertMsg);
                 return;
             }
         } catch (RemoteException e) {
@@ -710,6 +716,16 @@
         }
     }
 
+    private String getReasonForRevert() {
+        if (!TextUtils.isEmpty(mFailureReason)) {
+            return mFailureReason;
+        }
+        if (!TextUtils.isEmpty(mNativeFailureReason)) {
+            return "Session reverted due to crashing native process: " + mNativeFailureReason;
+        }
+        return "";
+    }
+
     private List<String> findAPKsInDir(File stageDir) {
         List<String> ret = new ArrayList<>();
         if (stageDir != null && stageDir.exists()) {
diff --git a/services/core/java/com/android/server/pm/permission/OWNERS b/services/core/java/com/android/server/pm/permission/OWNERS
index 01dc01e..0e88862 100644
--- a/services/core/java/com/android/server/pm/permission/OWNERS
+++ b/services/core/java/com/android/server/pm/permission/OWNERS
@@ -1,4 +1,5 @@
 moltmann@google.com
+zhanghai@google.com
 per-file DefaultPermissionGrantPolicy.java = hackbod@android.com
 per-file DefaultPermissionGrantPolicy.java = jsharkey@android.com
 per-file DefaultPermissionGrantPolicy.java = svetoslavganov@google.com
@@ -7,3 +8,4 @@
 per-file DefaultPermissionGrantPolicy.java = patb@google.com
 per-file DefaultPermissionGrantPolicy.java = eugenesusla@google.com
 per-file DefaultPermissionGrantPolicy.java = moltmann@google.com
+per-file DefaultPermissionGrantPolicy.java = zhanghai@google.com
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 0890b92..a4ed4e3 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -934,6 +934,8 @@
             }
         }
 
+        final boolean handledByPowerManager = mPowerManagerInternal.interceptPowerKeyDown(event);
+
         GestureLauncherService gestureService = LocalServices.getService(
                 GestureLauncherService.class);
         boolean gesturedServiceIntercepted = false;
@@ -953,7 +955,8 @@
         // If the power key has still not yet been handled, then detect short
         // press, long press, or multi press and decide what to do.
         mPowerKeyHandled = hungUp || mScreenshotChordVolumeDownKeyTriggered
-                || mA11yShortcutChordVolumeUpKeyTriggered || gesturedServiceIntercepted;
+                || mA11yShortcutChordVolumeUpKeyTriggered || gesturedServiceIntercepted
+                || handledByPowerManager;
         if (!mPowerKeyHandled) {
             if (interactive) {
                 // When interactive, we're already awake.
diff --git a/services/core/java/com/android/server/power/AttentionDetector.java b/services/core/java/com/android/server/power/AttentionDetector.java
index b69c450..cbdfc56 100644
--- a/services/core/java/com/android/server/power/AttentionDetector.java
+++ b/services/core/java/com/android/server/power/AttentionDetector.java
@@ -75,6 +75,12 @@
     /** Default value in absence of {@link DeviceConfig} override. */
     static final long DEFAULT_POST_DIM_CHECK_DURATION_MILLIS = 0;
 
+    /**
+     * DeviceConfig flag name, describes the limit of how long the device can remain unlocked due to
+     * attention checking.
+     */
+    static final String KEY_MAX_EXTENSION_MILLIS = "max_extension_millis";
+
     private Context mContext;
 
     private boolean mIsSettingEnabled;
@@ -85,11 +91,11 @@
     private final Runnable mOnUserAttention;
 
     /**
-     * The maximum time, in millis, that the phone can stay unlocked because of attention events,
-     * triggered by any user.
+     * The default value for the maximum time, in millis, that the phone can stay unlocked because
+     * of attention events, triggered by any user.
      */
     @VisibleForTesting
-    protected long mMaximumExtensionMillis;
+    protected long mDefaultMaximumExtensionMillis;
 
     private final Object mLock;
 
@@ -162,7 +168,7 @@
         mContentResolver = context.getContentResolver();
         mAttentionManager = LocalServices.getService(AttentionManagerInternal.class);
         mWindowManager = LocalServices.getService(WindowManagerInternal.class);
-        mMaximumExtensionMillis = context.getResources().getInteger(
+        mDefaultMaximumExtensionMillis = context.getResources().getInteger(
                 com.android.internal.R.integer.config_attentionMaximumExtension);
 
         try {
@@ -196,7 +202,7 @@
 
         final long now = SystemClock.uptimeMillis();
         final long whenToCheck = nextScreenDimming - getPreDimCheckDurationMillis();
-        final long whenToStopExtending = mLastUserActivityTime + mMaximumExtensionMillis;
+        final long whenToStopExtending = mLastUserActivityTime + getMaxExtensionMillis();
         if (now < whenToCheck) {
             if (DEBUG) {
                 Slog.d(TAG, "Do not check for attention yet, wait " + (whenToCheck - now));
@@ -309,7 +315,7 @@
     public void dump(PrintWriter pw) {
         pw.println("AttentionDetector:");
         pw.println(" mIsSettingEnabled=" + mIsSettingEnabled);
-        pw.println(" mMaximumExtensionMillis=" + mMaximumExtensionMillis);
+        pw.println(" mMaxExtensionMillis=" + getMaxExtensionMillis());
         pw.println(" preDimCheckDurationMillis=" + getPreDimCheckDurationMillis());
         pw.println(" postDimCheckDurationMillis=" + mLastPostDimTimeout);
         pw.println(" mLastUserActivityTime(excludingAttention)=" + mLastUserActivityTime);
@@ -348,6 +354,21 @@
         return mLastPostDimTimeout;
     }
 
+    /** How long the device can remain unlocked due to attention checking. */
+    @VisibleForTesting
+    protected long getMaxExtensionMillis() {
+        final long millis = DeviceConfig.getLong(NAMESPACE_ATTENTION_MANAGER_SERVICE,
+                KEY_MAX_EXTENSION_MILLIS,
+                mDefaultMaximumExtensionMillis);
+
+        if (millis < 0 || millis > 60 * 60 * 1000) { // 1 hour
+            Slog.w(TAG, "Bad flag value supplied for: " + KEY_MAX_EXTENSION_MILLIS);
+            return mDefaultMaximumExtensionMillis;
+        }
+
+        return millis;
+    }
+
     @VisibleForTesting
     final class AttentionCallbackInternalImpl extends AttentionCallbackInternal {
         private final int mId;
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
index 691ae23..1d949dc 100644
--- a/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
@@ -85,6 +85,7 @@
 import android.util.TimeUtils;
 import android.util.proto.ProtoOutputStream;
 import android.view.Display;
+import android.view.KeyEvent;
 
 import com.android.internal.BrightnessSynchronizer;
 import com.android.internal.annotations.VisibleForTesting;
@@ -5425,6 +5426,29 @@
         }
     }
 
+    /**
+     * If the user presses power while the proximity sensor is enabled and keeping
+     * the screen off, then turn the screen back on by telling display manager to
+     * ignore the proximity sensor.  We don't turn off the proximity sensor because
+     * we still want it to be reenabled if it's state changes.
+     *
+     * @return True if the proximity sensor was successfully ignored and we should
+     * consume the key event.
+     */
+    private boolean interceptPowerKeyDownInternal(KeyEvent event) {
+        synchronized (mLock) {
+            // DisplayPowerController only reports proximity positive (near) if it's
+            // positive and the proximity wasn't already being ignored. So it reliably
+            // also tells us that we're not already ignoring the proximity sensor.
+            if (mDisplayPowerRequest.useProximitySensor && mProximityPositive) {
+                mDisplayManagerInternal.ignoreProximitySensorUntilChanged();
+                return true;
+            }
+        }
+
+        return false;
+    }
+
     @VisibleForTesting
     final class LocalService extends PowerManagerInternal {
         @Override
@@ -5561,5 +5585,10 @@
         public WakeData getLastWakeup() {
             return getLastWakeupInternal();
         }
+
+        @Override
+        public boolean interceptPowerKeyDown(KeyEvent event) {
+            return interceptPowerKeyDownInternal(event);
+        }
     }
 }
diff --git a/services/core/java/com/android/server/telecom/InternalServiceRepository.java b/services/core/java/com/android/server/telecom/InternalServiceRepository.java
new file mode 100644
index 0000000..76ea5c7
--- /dev/null
+++ b/services/core/java/com/android/server/telecom/InternalServiceRepository.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.telecom;
+
+import android.content.Context;
+import android.os.Binder;
+import android.os.Process;
+
+import com.android.internal.telecom.IDeviceIdleControllerAdapter;
+import com.android.internal.telecom.IInternalServiceRetriever;
+import com.android.server.DeviceIdleInternal;
+
+/**
+ * The Telecom APK can not access services stored in LocalService directly and since it is in the
+ * SYSTEM process, it also can not use the *Manager interfaces
+ * (see {@link Context#enforceCallingPermission(String, String)}). Instead, we must wrap these local
+ * services in binder interfaces to allow Telecom access.
+ */
+public class InternalServiceRepository extends IInternalServiceRetriever.Stub {
+
+    private final IDeviceIdleControllerAdapter.Stub mDeviceIdleControllerAdapter =
+            new IDeviceIdleControllerAdapter.Stub() {
+        @Override
+        public void exemptAppTemporarilyForEvent(String packageName, long duration, int userHandle,
+                String reason) {
+            mDeviceIdleController.addPowerSaveTempWhitelistApp(Process.myUid(), packageName,
+                    duration, userHandle, true /*sync*/, reason);
+        }
+    };
+
+    private final DeviceIdleInternal mDeviceIdleController;
+
+    public InternalServiceRepository(DeviceIdleInternal deviceIdleController) {
+        mDeviceIdleController = deviceIdleController;
+    }
+
+    @Override
+    public IDeviceIdleControllerAdapter getDeviceIdleController() {
+        ensureSystemProcess();
+        return mDeviceIdleControllerAdapter;
+    }
+
+    private void ensureSystemProcess() {
+        if (Binder.getCallingUid() != Process.SYSTEM_UID) {
+            // Correctness check - this should never happen.
+            throw new SecurityException("SYSTEM ONLY API.");
+        }
+    }
+}
diff --git a/services/core/java/com/android/server/telecom/TelecomLoaderService.java b/services/core/java/com/android/server/telecom/TelecomLoaderService.java
index a853529..52ad893 100644
--- a/services/core/java/com/android/server/telecom/TelecomLoaderService.java
+++ b/services/core/java/com/android/server/telecom/TelecomLoaderService.java
@@ -35,7 +35,10 @@
 import android.util.Slog;
 
 import com.android.internal.annotations.GuardedBy;
+import com.android.internal.telecom.ITelecomLoader;
+import com.android.internal.telecom.ITelecomService;
 import com.android.internal.telephony.SmsApplication;
+import com.android.server.DeviceIdleInternal;
 import com.android.server.LocalServices;
 import com.android.server.SystemService;
 import com.android.server.pm.UserManagerService;
@@ -53,16 +56,13 @@
         @Override
         public void onServiceConnected(ComponentName name, IBinder service) {
             // Normally, we would listen for death here, but since telecom runs in the same process
-            // as this loader (process="system") thats redundant here.
+            // as this loader (process="system") that's redundant here.
             try {
-                service.linkToDeath(new IBinder.DeathRecipient() {
-                    @Override
-                    public void binderDied() {
-                        connectToTelecom();
-                    }
-                }, 0);
+                ITelecomLoader telecomLoader = ITelecomLoader.Stub.asInterface(service);
+                ITelecomService telecomService = telecomLoader.createTelecomService(mServiceRepo);
+
                 SmsApplication.getDefaultMmsApplication(mContext, false);
-                ServiceManager.addService(Context.TELECOM_SERVICE, service);
+                ServiceManager.addService(Context.TELECOM_SERVICE, telecomService.asBinder());
 
                 synchronized (mLock) {
                     final PermissionManagerServiceInternal permissionManager =
@@ -114,6 +114,8 @@
     @GuardedBy("mLock")
     private TelecomServiceConnection mServiceConnection;
 
+    private InternalServiceRepository mServiceRepo;
+
     public TelecomLoaderService(Context context) {
         super(context);
         mContext = context;
@@ -129,6 +131,8 @@
         if (phase == PHASE_ACTIVITY_MANAGER_READY) {
             registerDefaultAppNotifier();
             registerCarrierConfigChangedReceiver();
+            // core services will have already been loaded.
+            setupServiceRepository();
             connectToTelecom();
         }
     }
@@ -154,6 +158,11 @@
         }
     }
 
+    private void setupServiceRepository() {
+        DeviceIdleInternal deviceIdleInternal = getLocalService(DeviceIdleInternal.class);
+        mServiceRepo = new InternalServiceRepository(deviceIdleInternal);
+    }
+
 
     private void registerDefaultAppProviders() {
         final PermissionManagerServiceInternal permissionManager =
diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorService.java b/services/core/java/com/android/server/timedetector/TimeDetectorService.java
index ed6424c..6dac6b1 100644
--- a/services/core/java/com/android/server/timedetector/TimeDetectorService.java
+++ b/services/core/java/com/android/server/timedetector/TimeDetectorService.java
@@ -25,6 +25,7 @@
 import android.content.ContentResolver;
 import android.content.Context;
 import android.database.ContentObserver;
+import android.os.Binder;
 import android.os.Handler;
 import android.provider.Settings;
 
@@ -64,9 +65,8 @@
     @NonNull private final TimeDetectorStrategy mTimeDetectorStrategy;
 
     private static TimeDetectorService create(@NonNull Context context) {
-        TimeDetectorStrategy timeDetectorStrategy = new TimeDetectorStrategyImpl();
-        TimeDetectorStrategyCallbackImpl callback = new TimeDetectorStrategyCallbackImpl(context);
-        timeDetectorStrategy.initialize(callback);
+        TimeDetectorStrategyImpl.Callback callback = new TimeDetectorStrategyCallbackImpl(context);
+        TimeDetectorStrategy timeDetectorStrategy = new TimeDetectorStrategyImpl(callback);
 
         Handler handler = FgThread.getHandler();
         TimeDetectorService timeDetectorService =
@@ -102,11 +102,16 @@
     }
 
     @Override
-    public void suggestManualTime(@NonNull ManualTimeSuggestion timeSignal) {
+    public boolean suggestManualTime(@NonNull ManualTimeSuggestion timeSignal) {
         enforceSuggestManualTimePermission();
         Objects.requireNonNull(timeSignal);
 
-        mHandler.post(() -> mTimeDetectorStrategy.suggestManualTime(timeSignal));
+        long token = Binder.clearCallingIdentity();
+        try {
+            return mTimeDetectorStrategy.suggestManualTime(timeSignal);
+        } finally {
+            Binder.restoreCallingIdentity(token);
+        }
     }
 
     @Override
@@ -120,7 +125,7 @@
     /** Internal method for handling the auto time setting being changed. */
     @VisibleForTesting
     public void handleAutoTimeDetectionChanged() {
-        mHandler.post(mTimeDetectorStrategy::handleAutoTimeDetectionChanged);
+        mHandler.post(mTimeDetectorStrategy::handleAutoTimeConfigChanged);
     }
 
     @Override
diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorStrategy.java b/services/core/java/com/android/server/timedetector/TimeDetectorStrategy.java
index a5fba4e..abd4c8c 100644
--- a/services/core/java/com/android/server/timedetector/TimeDetectorStrategy.java
+++ b/services/core/java/com/android/server/timedetector/TimeDetectorStrategy.java
@@ -16,6 +16,7 @@
 
 package com.android.server.timedetector;
 
+import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.app.timedetector.ManualTimeSuggestion;
@@ -24,6 +25,8 @@
 import android.os.TimestampedValue;
 
 import java.io.PrintWriter;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 
 /**
  * The interface for the class that implements the time detection algorithm used by the
@@ -37,57 +40,41 @@
  */
 public interface TimeDetectorStrategy {
 
-    /**
-     * The interface used by the strategy to interact with the surrounding service.
-     *
-     * <p>Note: Because the system properties-derived value {@link #isAutoTimeDetectionEnabled()}
-     * can be modified independently and from different threads (and processes!). its use is prone
-     * to race conditions. That will be true until the responsibility for setting their values is
-     * moved to {@link TimeDetectorStrategy}. There are similar issues with
-     * {@link #systemClockMillis()} while any process can modify the system clock.
-     */
-    interface Callback {
+    @IntDef({ ORIGIN_TELEPHONY, ORIGIN_MANUAL, ORIGIN_NETWORK })
+    @Retention(RetentionPolicy.SOURCE)
+    @interface Origin {}
 
-        /**
-         * The absolute threshold below which the system clock need not be updated. i.e. if setting
-         * the system clock would adjust it by less than this (either backwards or forwards) then it
-         * need not be set.
-         */
-        int systemClockUpdateThresholdMillis();
+    /** Used when a time value originated from a telephony signal. */
+    @Origin
+    int ORIGIN_TELEPHONY = 1;
 
-        /** Returns true if automatic time detection is enabled. */
-        boolean isAutoTimeDetectionEnabled();
+    /** Used when a time value originated from a user / manual settings. */
+    @Origin
+    int ORIGIN_MANUAL = 2;
 
-        /** Acquire a suitable wake lock. Must be followed by {@link #releaseWakeLock()} */
-        void acquireWakeLock();
+    /** Used when a time value originated from a network signal. */
+    @Origin
+    int ORIGIN_NETWORK = 3;
 
-        /** Returns the elapsedRealtimeMillis clock value. */
-        long elapsedRealtimeMillis();
-
-        /** Returns the system clock value. */
-        long systemClockMillis();
-
-        /** Sets the device system clock. The WakeLock must be held. */
-        void setSystemClock(long newTimeMillis);
-
-        /** Release the wake lock acquired by a call to {@link #acquireWakeLock()}. */
-        void releaseWakeLock();
-    }
-
-    /** Initialize the strategy. */
-    void initialize(@NonNull Callback callback);
-
-    /** Process the suggested time from telephony sources. */
+    /** Processes the suggested time from telephony sources. */
     void suggestTelephonyTime(@NonNull TelephonyTimeSuggestion timeSuggestion);
 
-    /** Process the suggested manually entered time. */
-    void suggestManualTime(@NonNull ManualTimeSuggestion timeSuggestion);
+    /**
+     * Processes the suggested manually entered time. Returns {@code false} if the suggestion was
+     * invalid, or the device configuration prevented the suggestion being used, {@code true} if the
+     * suggestion was accepted. A suggestion that is valid but does not change the time because it
+     * matches the current device time is considered accepted.
+     */
+    boolean suggestManualTime(@NonNull ManualTimeSuggestion timeSuggestion);
 
-    /** Process the suggested time from network sources. */
+    /** Processes the suggested time from network sources. */
     void suggestNetworkTime(@NonNull NetworkTimeSuggestion timeSuggestion);
 
-    /** Handle the auto-time setting being toggled on or off. */
-    void handleAutoTimeDetectionChanged();
+    /**
+     * Handles the auto-time configuration changing For example, when the auto-time setting is
+     * toggled on or off.
+     */
+    void handleAutoTimeConfigChanged();
 
     /** Dump debug information. */
     void dump(@NonNull PrintWriter pw, @Nullable String[] args);
@@ -102,4 +89,38 @@
         return (referenceClockMillisNow - timeValue.getReferenceTimeMillis())
                 + timeValue.getValue();
     }
+
+    /**
+     * Converts one of the {@code ORIGIN_} constants to a human readable string suitable for config
+     * and debug usage. Throws an {@link IllegalArgumentException} if the value is unrecognized.
+     */
+    static String originToString(@Origin int origin) {
+        switch (origin) {
+            case ORIGIN_MANUAL:
+                return "manual";
+            case ORIGIN_NETWORK:
+                return "network";
+            case ORIGIN_TELEPHONY:
+                return "telephony";
+            default:
+                throw new IllegalArgumentException("origin=" + origin);
+        }
+    }
+
+    /**
+     * Converts a human readable config string to one of the {@code ORIGIN_} constants.
+     * Throws an {@link IllegalArgumentException} if the value is unrecognized.
+     */
+    static @Origin int stringToOrigin(String originString) {
+        switch (originString) {
+            case "manual":
+                return ORIGIN_MANUAL;
+            case "network":
+                return ORIGIN_NETWORK;
+            case "telephony":
+                return ORIGIN_TELEPHONY;
+            default:
+                throw new IllegalArgumentException("originString=" + originString);
+        }
+    }
 }
diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorStrategyCallbackImpl.java b/services/core/java/com/android/server/timedetector/TimeDetectorStrategyCallbackImpl.java
index 19484db..5b6de05 100644
--- a/services/core/java/com/android/server/timedetector/TimeDetectorStrategyCallbackImpl.java
+++ b/services/core/java/com/android/server/timedetector/TimeDetectorStrategyCallbackImpl.java
@@ -16,28 +16,40 @@
 
 package com.android.server.timedetector;
 
+import static com.android.server.timedetector.TimeDetectorStrategy.stringToOrigin;
+
 import android.annotation.NonNull;
 import android.app.AlarmManager;
 import android.content.ContentResolver;
 import android.content.Context;
+import android.os.Build;
+import android.os.Environment;
 import android.os.PowerManager;
 import android.os.SystemClock;
 import android.os.SystemProperties;
 import android.provider.Settings;
 import android.util.Slog;
 
+import java.time.Instant;
 import java.util.Objects;
 
 /**
- * The real implementation of {@link TimeDetectorStrategy.Callback} used on device.
+ * The real implementation of {@link TimeDetectorStrategyImpl.Callback} used on device.
  */
-public final class TimeDetectorStrategyCallbackImpl implements TimeDetectorStrategy.Callback {
+public final class TimeDetectorStrategyCallbackImpl implements TimeDetectorStrategyImpl.Callback {
 
     private final static String TAG = "timedetector.TimeDetectorStrategyCallbackImpl";
 
     private static final int SYSTEM_CLOCK_UPDATE_THRESHOLD_MILLIS_DEFAULT = 2 * 1000;
 
     /**
+     * Time in the past. If automatic time suggestion is before this point, it's
+     * incorrect for sure.
+     */
+    private static final Instant TIME_LOWER_BOUND = Instant.ofEpochMilli(
+            Long.max(Environment.getRootDirectory().lastModified(), Build.TIME));
+
+    /**
      * If a newly calculated system clock time and the current system clock time differs by this or
      * more the system clock will actually be updated. Used to prevent the system clock being set
      * for only minor differences.
@@ -48,6 +60,7 @@
     @NonNull private final ContentResolver mContentResolver;
     @NonNull private final PowerManager.WakeLock mWakeLock;
     @NonNull private final AlarmManager mAlarmManager;
+    @NonNull private final int[] mOriginPriorities;
 
     public TimeDetectorStrategyCallbackImpl(@NonNull Context context) {
         mContext = Objects.requireNonNull(context);
@@ -62,6 +75,15 @@
         mSystemClockUpdateThresholdMillis =
                 SystemProperties.getInt("ro.sys.time_detector_update_diff",
                         SYSTEM_CLOCK_UPDATE_THRESHOLD_MILLIS_DEFAULT);
+
+        // TODO(b/172230856): Obtain these values from configuration.
+        String[] originStrings = { "telephony", "network" };
+        int[] origins = new int[originStrings.length];
+        for (int i = 0; i < originStrings.length; i++) {
+            int origin = stringToOrigin(originStrings[i]);
+            origins[i] = origin;
+        }
+        mOriginPriorities = origins;
     }
 
     @Override
@@ -79,6 +101,16 @@
     }
 
     @Override
+    public Instant autoTimeLowerBound() {
+        return TIME_LOWER_BOUND;
+    }
+
+    @Override
+    public int[] getAutoOriginPriorities() {
+        return mOriginPriorities;
+    }
+
+    @Override
     public void acquireWakeLock() {
         if (mWakeLock.isHeld()) {
             Slog.wtf(TAG, "WakeLock " + mWakeLock + " already held");
diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java b/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java
index 88de340..36a3ddd 100644
--- a/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java
+++ b/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java
@@ -16,7 +16,8 @@
 
 package com.android.server.timedetector;
 
-import android.annotation.IntDef;
+import static com.android.server.timedetector.TimeDetectorStrategy.originToString;
+
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.app.AlarmManager;
@@ -34,8 +35,8 @@
 import com.android.server.timezonedetector.ReferenceWithHistory;
 
 import java.io.PrintWriter;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
+import java.time.Instant;
+import java.util.Arrays;
 
 /**
  * An implementation of {@link TimeDetectorStrategy} that passes telephony and manual suggestions to
@@ -63,22 +64,6 @@
     static final long MAX_UTC_TIME_AGE_MILLIS =
             TELEPHONY_BUCKET_COUNT * TELEPHONY_BUCKET_SIZE_MILLIS;
 
-    @IntDef({ ORIGIN_TELEPHONY, ORIGIN_MANUAL, ORIGIN_NETWORK })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface Origin {}
-
-    /** Used when a time value originated from a telephony signal. */
-    @Origin
-    private static final int ORIGIN_TELEPHONY = 1;
-
-    /** Used when a time value originated from a user / manual settings. */
-    @Origin
-    private static final int ORIGIN_MANUAL = 2;
-
-    /** Used when a time value originated from a network signal. */
-    @Origin
-    private static final int ORIGIN_NETWORK = 3;
-
     /**
      * CLOCK_PARANOIA: The maximum difference allowed between the expected system clock time and the
      * actual system clock time before a warning is logged. Used to help identify situations where
@@ -99,8 +84,8 @@
     @NonNull
     private final LocalLog mTimeChangesLog = new LocalLog(30, false /* useLocalTimestamps */);
 
-    // @NonNull after initialize()
-    private Callback mCallback;
+    @NonNull
+    private final Callback mCallback;
 
     // Used to store the last time the system clock state was set automatically. It is used to
     // detect (and log) issues with the realtime clock or whether the clock is being set without
@@ -122,26 +107,77 @@
     private final ReferenceWithHistory<NetworkTimeSuggestion> mLastNetworkSuggestion =
             new ReferenceWithHistory<>(KEEP_SUGGESTION_HISTORY_SIZE);
 
-    @Override
-    public void initialize(@NonNull Callback callback) {
+    /**
+     * The interface used by the strategy to interact with the surrounding service.
+     *
+     * <p>Note: Because the system properties-derived value {@link #isAutoTimeDetectionEnabled()}
+     * can be modified independently and from different threads (and processes!), its use is prone
+     * to race conditions. That will be true until the responsibility for setting their values is
+     * moved to {@link TimeDetectorStrategy}. There are similar issues with
+     * {@link #systemClockMillis()} while any process can modify the system clock.
+     */
+    public interface Callback {
+
+        /**
+         * The absolute threshold below which the system clock need not be updated. i.e. if setting
+         * the system clock would adjust it by less than this (either backwards or forwards) then it
+         * need not be set.
+         */
+        int systemClockUpdateThresholdMillis();
+
+        /** Returns true if automatic time detection is enabled. */
+        boolean isAutoTimeDetectionEnabled();
+
+        /**
+         * Returns a lower bound for valid automatic times. It is guaranteed to be in the past,
+         * i.e. it is unrelated to the current system clock time.
+         * It holds no other meaning; it could be related to when the device system image was built,
+         * or could be updated by a mainline module.
+         */
+        @NonNull
+        Instant autoTimeLowerBound();
+
+        /**
+         * Returns the order to look at time suggestions when automatically detecting time.
+         * See {@code #ORIGIN_} constants
+         */
+        @Origin int[] getAutoOriginPriorities();
+
+        /** Acquire a suitable wake lock. Must be followed by {@link #releaseWakeLock()} */
+        void acquireWakeLock();
+
+        /** Returns the elapsedRealtimeMillis clock value. */
+        long elapsedRealtimeMillis();
+
+        /** Returns the system clock value. */
+        long systemClockMillis();
+
+        /** Sets the device system clock. The WakeLock must be held. */
+        void setSystemClock(long newTimeMillis);
+
+        /** Release the wake lock acquired by a call to {@link #acquireWakeLock()}. */
+        void releaseWakeLock();
+    }
+
+    TimeDetectorStrategyImpl(@NonNull Callback callback) {
         mCallback = callback;
     }
 
     @Override
-    public synchronized void suggestManualTime(@NonNull ManualTimeSuggestion suggestion) {
+    public synchronized boolean suggestManualTime(@NonNull ManualTimeSuggestion suggestion) {
         final TimestampedValue<Long> newUtcTime = suggestion.getUtcTime();
 
         if (!validateSuggestionTime(newUtcTime, suggestion)) {
-            return;
+            return false;
         }
 
         String cause = "Manual time suggestion received: suggestion=" + suggestion;
-        setSystemClockIfRequired(ORIGIN_MANUAL, newUtcTime, cause);
+        return setSystemClockIfRequired(ORIGIN_MANUAL, newUtcTime, cause);
     }
 
     @Override
     public synchronized void suggestNetworkTime(@NonNull NetworkTimeSuggestion timeSuggestion) {
-        if (!validateSuggestionTime(timeSuggestion.getUtcTime(), timeSuggestion)) {
+        if (!validateAutoSuggestionTime(timeSuggestion.getUtcTime(), timeSuggestion)) {
             return;
         }
 
@@ -175,9 +211,12 @@
             return;
         }
 
-        // Perform validation / input filtering and record the validated suggestion against the
-        // slotIndex.
-        if (!validateAndStoreTelephonySuggestion(timeSuggestion)) {
+        if (!validateAutoSuggestionTime(timeSuggestion.getUtcTime(), timeSuggestion)) {
+            return;
+        }
+
+        // Perform input filtering and record the validated suggestion against the slotIndex.
+        if (!storeTelephonySuggestion(timeSuggestion)) {
             return;
         }
 
@@ -188,12 +227,12 @@
     }
 
     @Override
-    public synchronized void handleAutoTimeDetectionChanged() {
+    public synchronized void handleAutoTimeConfigChanged() {
         boolean enabled = mCallback.isAutoTimeDetectionEnabled();
         // When automatic time detection is enabled we update the system clock instantly if we can.
         // Conversely, when automatic time detection is disabled we leave the clock as it is.
         if (enabled) {
-            String reason = "Auto time zone detection setting enabled.";
+            String reason = "Auto time zone detection config changed.";
             doAutoTimeDetection(reason);
         } else {
             // CLOCK_PARANOIA: We are losing "control" of the system clock so we cannot predict what
@@ -236,14 +275,9 @@
     }
 
     @GuardedBy("this")
-    private boolean validateAndStoreTelephonySuggestion(
+    private boolean storeTelephonySuggestion(
             @NonNull TelephonyTimeSuggestion suggestion) {
         TimestampedValue<Long> newUtcTime = suggestion.getUtcTime();
-        if (!validateSuggestionTime(newUtcTime, suggestion)) {
-            // There's probably nothing useful we can do: elsewhere we assume that reference
-            // times are in the past so just stop here.
-            return false;
-        }
 
         int slotIndex = suggestion.getSlotIndex();
         TelephonyTimeSuggestion previousSuggestion = mSuggestionBySlotIndex.get(slotIndex);
@@ -294,6 +328,26 @@
         return true;
     }
 
+    private boolean validateAutoSuggestionTime(
+            @NonNull TimestampedValue<Long> newUtcTime, @NonNull Object suggestion)  {
+        return validateSuggestionTime(newUtcTime, suggestion)
+                && validateSuggestionAgainstLowerBound(newUtcTime, suggestion);
+    }
+
+    private boolean validateSuggestionAgainstLowerBound(
+            @NonNull TimestampedValue<Long> newUtcTime, @NonNull Object suggestion) {
+        Instant lowerBound = mCallback.autoTimeLowerBound();
+
+        // Suggestion is definitely wrong if it comes before lower time bound.
+        if (lowerBound.isAfter(Instant.ofEpochMilli(newUtcTime.getValue()))) {
+            Slog.w(LOG_TAG, "Suggestion points to time before lower bound, skipping it. "
+                    + "suggestion=" + suggestion + ", lower bound=" + lowerBound);
+            return false;
+        }
+
+        return true;
+    }
+
     @GuardedBy("this")
     private void doAutoTimeDetection(@NonNull String detectionReason) {
         if (!mCallback.isAutoTimeDetectionEnabled()) {
@@ -301,33 +355,44 @@
             return;
         }
 
-        // Android devices currently prioritize any telephony over network signals. There are
-        // carrier compliance tests that would need to be changed before we could ignore NITZ or
-        // prefer NTP generally. This check is cheap on devices without telephony hardware.
-        TelephonyTimeSuggestion bestTelephonySuggestion = findBestTelephonySuggestion();
-        if (bestTelephonySuggestion != null) {
-            final TimestampedValue<Long> newUtcTime = bestTelephonySuggestion.getUtcTime();
-            String cause = "Found good telephony suggestion."
-                    + ", bestTelephonySuggestion=" + bestTelephonySuggestion
-                    + ", detectionReason=" + detectionReason;
-            setSystemClockIfRequired(ORIGIN_TELEPHONY, newUtcTime, cause);
-            return;
-        }
+        // Try the different origins one at a time.
+        int[] originPriorities = mCallback.getAutoOriginPriorities();
+        for (int origin : originPriorities) {
+            TimestampedValue<Long> newUtcTime = null;
+            String cause = null;
+            if (origin == ORIGIN_TELEPHONY) {
+                TelephonyTimeSuggestion bestTelephonySuggestion = findBestTelephonySuggestion();
+                if (bestTelephonySuggestion != null) {
+                    newUtcTime = bestTelephonySuggestion.getUtcTime();
+                    cause = "Found good telephony suggestion."
+                            + ", bestTelephonySuggestion=" + bestTelephonySuggestion
+                            + ", detectionReason=" + detectionReason;
+                }
+            } else if (origin == ORIGIN_NETWORK) {
+                NetworkTimeSuggestion networkSuggestion = findLatestValidNetworkSuggestion();
+                if (networkSuggestion != null) {
+                    newUtcTime = networkSuggestion.getUtcTime();
+                    cause = "Found good network suggestion."
+                            + ", networkSuggestion=" + networkSuggestion
+                            + ", detectionReason=" + detectionReason;
+                }
+            } else {
+                Slog.w(LOG_TAG, "Unknown or unsupported origin=" + origin
+                        + " in " + Arrays.toString(originPriorities)
+                        + ": Skipping");
+            }
 
-        // There is no good telephony suggestion, try network.
-        NetworkTimeSuggestion networkSuggestion = findLatestValidNetworkSuggestion();
-        if (networkSuggestion != null) {
-            final TimestampedValue<Long> newUtcTime = networkSuggestion.getUtcTime();
-            String cause = "Found good network suggestion."
-                    + ", networkSuggestion=" + networkSuggestion
-                    + ", detectionReason=" + detectionReason;
-            setSystemClockIfRequired(ORIGIN_NETWORK, newUtcTime, cause);
-            return;
+            // Update the system clock if a good suggestion has been found.
+            if (newUtcTime != null) {
+                setSystemClockIfRequired(origin, newUtcTime, cause);
+                return;
+            }
         }
 
         if (DBG) {
-            Slog.d(LOG_TAG, "Could not determine time: No best telephony or network suggestion."
-                    + " detectionReason=" + detectionReason);
+            Slog.d(LOG_TAG, "Could not determine time: No suggestion found in"
+                    + " originPriorities=" + Arrays.toString(originPriorities)
+                    + ", detectionReason=" + detectionReason);
         }
     }
 
@@ -412,7 +477,7 @@
         // Validate first.
         TimestampedValue<Long> utcTime = timeSuggestion.getUtcTime();
         if (!validateSuggestionUtcTime(elapsedRealtimeMillis, utcTime)) {
-            Slog.w(LOG_TAG, "Existing suggestion found to be invalid "
+            Slog.w(LOG_TAG, "Existing suggestion found to be invalid"
                     + " elapsedRealtimeMillis=" + elapsedRealtimeMillis
                     + ", timeSuggestion=" + timeSuggestion);
             return TELEPHONY_INVALID_SCORE;
@@ -453,7 +518,7 @@
     }
 
     @GuardedBy("this")
-    private void setSystemClockIfRequired(
+    private boolean setSystemClockIfRequired(
             @Origin int origin, @NonNull TimestampedValue<Long> time, @NonNull String cause) {
 
         boolean isOriginAutomatic = isOriginAutomatic(origin);
@@ -461,27 +526,27 @@
             if (!mCallback.isAutoTimeDetectionEnabled()) {
                 if (DBG) {
                     Slog.d(LOG_TAG, "Auto time detection is not enabled."
-                            + " origin=" + origin
+                            + " origin=" + originToString(origin)
                             + ", time=" + time
                             + ", cause=" + cause);
                 }
-                return;
+                return false;
             }
         } else {
             if (mCallback.isAutoTimeDetectionEnabled()) {
                 if (DBG) {
                     Slog.d(LOG_TAG, "Auto time detection is enabled."
-                            + " origin=" + origin
+                            + " origin=" + originToString(origin)
                             + ", time=" + time
                             + ", cause=" + cause);
                 }
-                return;
+                return false;
             }
         }
 
         mCallback.acquireWakeLock();
         try {
-            setSystemClockUnderWakeLock(origin, time, cause);
+            return setSystemClockUnderWakeLock(origin, time, cause);
         } finally {
             mCallback.releaseWakeLock();
         }
@@ -492,8 +557,8 @@
     }
 
     @GuardedBy("this")
-    private void setSystemClockUnderWakeLock(
-            int origin, @NonNull TimestampedValue<Long> newTime, @NonNull Object cause) {
+    private boolean setSystemClockUnderWakeLock(
+            @Origin int origin, @NonNull TimestampedValue<Long> newTime, @NonNull String cause) {
 
         long elapsedRealtimeMillis = mCallback.elapsedRealtimeMillis();
         boolean isOriginAutomatic = isOriginAutomatic(origin);
@@ -536,7 +601,7 @@
                         + " systemClockUpdateThreshold=" + systemClockUpdateThreshold
                         + " absTimeDifference=" + absTimeDifference);
             }
-            return;
+            return true;
         }
 
         mCallback.setSystemClock(newSystemClockMillis);
@@ -556,6 +621,7 @@
         } else {
             mLastAutoSystemClockTimeSet = null;
         }
+        return true;
     }
 
     /**
diff --git a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorService.java b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorService.java
index fc52584..0b85052 100644
--- a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorService.java
+++ b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorService.java
@@ -24,6 +24,7 @@
 import android.content.ContentResolver;
 import android.content.Context;
 import android.database.ContentObserver;
+import android.os.Binder;
 import android.os.Handler;
 import android.os.ResultReceiver;
 import android.os.ShellCallback;
@@ -95,11 +96,16 @@
     }
 
     @Override
-    public void suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion timeZoneSuggestion) {
+    public boolean suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion timeZoneSuggestion) {
         enforceSuggestManualTimeZonePermission();
         Objects.requireNonNull(timeZoneSuggestion);
 
-        mHandler.post(() -> mTimeZoneDetectorStrategy.suggestManualTimeZone(timeZoneSuggestion));
+        long token = Binder.clearCallingIdentity();
+        try {
+            return mTimeZoneDetectorStrategy.suggestManualTimeZone(timeZoneSuggestion);
+        } finally {
+            Binder.restoreCallingIdentity(token);
+        }
     }
 
     @Override
diff --git a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategy.java b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategy.java
index e0b3ad5..7f22e6c 100644
--- a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategy.java
+++ b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategy.java
@@ -37,9 +37,13 @@
 public interface TimeZoneDetectorStrategy {
 
     /**
-     * Suggests a time zone for the device using manually-entered (i.e. user sourced) information.
+     * Suggests a time zone for the device, determined from the user's manually entered information.
+     * Returns {@code false} if the suggestion was invalid, or the device configuration prevented
+     * the suggestion being used, {@code true} if the suggestion was accepted. A suggestion that is
+     * valid but does not change the time zone because it matches the current device time zone is
+     * considered accepted.
      */
-    void suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion suggestion);
+    boolean suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion suggestion);
 
     /**
      * Suggests a time zone for the device, or withdraws a previous suggestion if
diff --git a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategyImpl.java b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategyImpl.java
index d318b1a..69a2b54 100644
--- a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategyImpl.java
+++ b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategyImpl.java
@@ -199,12 +199,13 @@
     }
 
     @Override
-    public synchronized void suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion suggestion) {
+    public synchronized boolean suggestManualTimeZone(
+            @NonNull ManualTimeZoneSuggestion suggestion) {
         Objects.requireNonNull(suggestion);
 
         String timeZoneId = suggestion.getZoneId();
         String cause = "Manual time suggestion received: suggestion=" + suggestion;
-        setDeviceTimeZoneIfRequired(ORIGIN_MANUAL, timeZoneId, cause);
+        return setDeviceTimeZoneIfRequired(ORIGIN_MANUAL, timeZoneId, cause);
     }
 
     @Override
@@ -305,7 +306,7 @@
     }
 
     @GuardedBy("this")
-    private void setDeviceTimeZoneIfRequired(
+    private boolean setDeviceTimeZoneIfRequired(
             @Origin int origin, @NonNull String newZoneId, @NonNull String cause) {
         Objects.requireNonNull(newZoneId);
         Objects.requireNonNull(cause);
@@ -319,7 +320,7 @@
                             + ", newZoneId=" + newZoneId
                             + ", cause=" + cause);
                 }
-                return;
+                return false;
             }
         } else {
             if (mCallback.isAutoTimeZoneDetectionEnabled()) {
@@ -329,7 +330,7 @@
                             + ", newZoneId=" + newZoneId
                             + ", cause=" + cause);
                 }
-                return;
+                return false;
             }
         }
 
@@ -346,7 +347,7 @@
                         + ", newZoneId=" + newZoneId
                         + ", cause=" + cause);
             }
-            return;
+            return true;
         }
 
         mCallback.setDeviceTimeZone(newZoneId);
@@ -359,6 +360,7 @@
             Slog.d(LOG_TAG, msg);
         }
         mTimeZoneChangesLog.log(msg);
+        return true;
     }
 
     private static boolean isOriginAutomatic(@Origin int origin) {
diff --git a/services/core/java/com/android/server/trust/TrustManagerService.java b/services/core/java/com/android/server/trust/TrustManagerService.java
index 2394baf..fd3c1f9 100644
--- a/services/core/java/com/android/server/trust/TrustManagerService.java
+++ b/services/core/java/com/android/server/trust/TrustManagerService.java
@@ -1469,7 +1469,7 @@
             if (userId > 0) {
                 return userId;
             } else {
-                Slog.wtf(TAG, "EXTRA_USER_HANDLE missing or invalid, value=" + userId);
+                Log.w(TAG, "EXTRA_USER_HANDLE missing or invalid, value=" + userId);
                 return -100;
             }
         }
diff --git a/services/core/java/com/android/server/vcn/OWNERS b/services/core/java/com/android/server/vcn/OWNERS
new file mode 100644
index 0000000..33b9f0f
--- /dev/null
+++ b/services/core/java/com/android/server/vcn/OWNERS
@@ -0,0 +1,7 @@
+set noparent
+
+benedictwong@google.com
+ckesting@google.com
+evitayan@google.com
+nharold@google.com
+jchalard@google.com
\ No newline at end of file
diff --git a/services/core/java/com/android/server/vcn/UnderlyingNetworkTracker.java b/services/core/java/com/android/server/vcn/UnderlyingNetworkTracker.java
new file mode 100644
index 0000000..e1feb5a
--- /dev/null
+++ b/services/core/java/com/android/server/vcn/UnderlyingNetworkTracker.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.vcn;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.net.LinkProperties;
+import android.net.Network;
+import android.net.NetworkCapabilities;
+import android.os.Handler;
+import android.os.ParcelUuid;
+
+import java.util.Objects;
+
+/**
+ * Tracks a set of Networks underpinning a VcnGatewayConnection.
+ *
+ * <p>A single UnderlyingNetworkTracker is built to serve a SINGLE VCN Gateway Connection, and MUST
+ * be torn down with the VcnGatewayConnection in order to ensure underlying networks are allowed to
+ * be reaped.
+ *
+ * @hide
+ */
+public class UnderlyingNetworkTracker extends Handler {
+    @NonNull private static final String TAG = UnderlyingNetworkTracker.class.getSimpleName();
+
+    @NonNull private final VcnContext mVcnContext;
+    @NonNull private final ParcelUuid mSubscriptionGroup;
+    @NonNull private final UnderlyingNetworkTrackerCallback mCb;
+    @NonNull private final Dependencies mDeps;
+
+    public UnderlyingNetworkTracker(
+            @NonNull VcnContext vcnContext,
+            @NonNull ParcelUuid subscriptionGroup,
+            @NonNull UnderlyingNetworkTrackerCallback cb) {
+        this(vcnContext, subscriptionGroup, cb, new Dependencies());
+    }
+
+    private UnderlyingNetworkTracker(
+            @NonNull VcnContext vcnContext,
+            @NonNull ParcelUuid subscriptionGroup,
+            @NonNull UnderlyingNetworkTrackerCallback cb,
+            @NonNull Dependencies deps) {
+        super(Objects.requireNonNull(vcnContext, "Missing vcnContext").getLooper());
+        mVcnContext = vcnContext;
+        mSubscriptionGroup = Objects.requireNonNull(subscriptionGroup, "Missing subscriptionGroup");
+        mCb = Objects.requireNonNull(cb, "Missing cb");
+        mDeps = Objects.requireNonNull(deps, "Missing deps");
+    }
+
+    /** Tears down this Tracker, and releases all underlying network requests. */
+    public void teardown() {}
+
+    /** An record of a single underlying network, caching relevant fields. */
+    public static class UnderlyingNetworkRecord {
+        @NonNull public final Network network;
+        @NonNull public final NetworkCapabilities networkCapabilities;
+        @NonNull public final LinkProperties linkProperties;
+        public final boolean blocked;
+
+        private UnderlyingNetworkRecord(
+                @NonNull Network network,
+                @NonNull NetworkCapabilities networkCapabilities,
+                @NonNull LinkProperties linkProperties,
+                boolean blocked) {
+            this.network = network;
+            this.networkCapabilities = networkCapabilities;
+            this.linkProperties = linkProperties;
+            this.blocked = blocked;
+        }
+    }
+
+    /** Callbacks for being notified of the changes in, or to the selected underlying network. */
+    public interface UnderlyingNetworkTrackerCallback {
+        /**
+         * Fired when a new underlying network is selected, or properties have changed.
+         *
+         * <p>This callback does NOT signal a mobility event.
+         *
+         * @param underlying The details of the new underlying network
+         */
+        void onSelectedUnderlyingNetworkChanged(@Nullable UnderlyingNetworkRecord underlying);
+    }
+
+    private static class Dependencies {}
+}
diff --git a/services/core/java/com/android/server/vcn/Vcn.java b/services/core/java/com/android/server/vcn/Vcn.java
new file mode 100644
index 0000000..d51d16b
--- /dev/null
+++ b/services/core/java/com/android/server/vcn/Vcn.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.vcn;
+
+import android.annotation.NonNull;
+import android.net.NetworkRequest;
+import android.net.vcn.VcnConfig;
+import android.os.Handler;
+import android.os.Message;
+import android.os.ParcelUuid;
+
+import java.util.Objects;
+
+/**
+ * Represents an single instance of a VCN.
+ *
+ * <p>Each Vcn instance manages all tunnels for a given subscription group, including per-capability
+ * networks, network selection, and multi-homing.
+ *
+ * @hide
+ */
+public class Vcn extends Handler {
+    private static final String TAG = Vcn.class.getSimpleName();
+
+    @NonNull private final VcnContext mVcnContext;
+    @NonNull private final ParcelUuid mSubscriptionGroup;
+    @NonNull private final Dependencies mDeps;
+
+    @NonNull private VcnConfig mConfig;
+
+    public Vcn(
+            @NonNull VcnContext vcnContext,
+            @NonNull ParcelUuid subscriptionGroup,
+            @NonNull VcnConfig config) {
+        this(vcnContext, subscriptionGroup, config, new Dependencies());
+    }
+
+    private Vcn(
+            @NonNull VcnContext vcnContext,
+            @NonNull ParcelUuid subscriptionGroup,
+            @NonNull VcnConfig config,
+            @NonNull Dependencies deps) {
+        super(Objects.requireNonNull(vcnContext, "Missing vcnContext").getLooper());
+        mVcnContext = vcnContext;
+        mSubscriptionGroup = Objects.requireNonNull(subscriptionGroup, "Missing subscriptionGroup");
+        mDeps = Objects.requireNonNull(deps, "Missing deps");
+
+        mConfig = Objects.requireNonNull(config, "Missing config");
+    }
+
+    /** Asynchronously updates the configuration and triggers a re-evaluation of Networks */
+    public void updateConfig(@NonNull VcnConfig config) {
+        Objects.requireNonNull(config, "Missing config");
+        // TODO: Proxy to handler, and make config there.
+    }
+
+    /** Asynchronously tears down this Vcn instance, along with all tunnels and Networks */
+    public void teardown() {
+        // TODO: Proxy to handler, and teardown there.
+    }
+
+    /** Notifies this Vcn instance of a new NetworkRequest */
+    public void onNetworkRequested(@NonNull NetworkRequest request, int score, int providerId) {
+        Objects.requireNonNull(request, "Missing request");
+
+        // TODO: Proxy to handler, and handle there.
+    }
+
+    @Override
+    public void handleMessage(@NonNull Message msg) {
+        // TODO: Do something
+    }
+
+    /** Retrieves the network score for a VCN Network */
+    private int getNetworkScore() {
+        // TODO: STOPSHIP (b/173549607): Make this use new NetworkSelection, or some magic "max in
+        //                               subGrp" value
+        return 52;
+    }
+
+    private static class Dependencies {}
+}
diff --git a/services/core/java/com/android/server/vcn/VcnContext.java b/services/core/java/com/android/server/vcn/VcnContext.java
new file mode 100644
index 0000000..8ab52931
--- /dev/null
+++ b/services/core/java/com/android/server/vcn/VcnContext.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.vcn;
+
+import android.annotation.NonNull;
+import android.content.Context;
+import android.os.Looper;
+
+import com.android.server.VcnManagementService.VcnNetworkProvider;
+
+import java.util.Objects;
+
+/**
+ * A simple class to pass around context information.
+ *
+ * @hide
+ */
+public class VcnContext {
+    @NonNull private final Context mContext;
+    @NonNull private final Looper mLooper;
+    @NonNull private final VcnNetworkProvider mVcnNetworkProvider;
+
+    public VcnContext(
+            @NonNull Context context,
+            @NonNull Looper looper,
+            @NonNull VcnNetworkProvider vcnNetworkProvider) {
+        mContext = Objects.requireNonNull(context, "Missing context");
+        mLooper = Objects.requireNonNull(looper, "Missing looper");
+        mVcnNetworkProvider = Objects.requireNonNull(vcnNetworkProvider, "Missing networkProvider");
+    }
+
+    @NonNull
+    public Context getContext() {
+        return mContext;
+    }
+
+    @NonNull
+    public Looper getLooper() {
+        return mLooper;
+    }
+
+    @NonNull
+    public VcnNetworkProvider getVcnNetworkProvider() {
+        return mVcnNetworkProvider;
+    }
+}
diff --git a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java
new file mode 100644
index 0000000..49c9b32
--- /dev/null
+++ b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.vcn;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.net.vcn.VcnGatewayConnectionConfig;
+import android.os.Handler;
+import android.os.ParcelUuid;
+
+import com.android.server.vcn.UnderlyingNetworkTracker.UnderlyingNetworkRecord;
+import com.android.server.vcn.UnderlyingNetworkTracker.UnderlyingNetworkTrackerCallback;
+
+import java.util.Objects;
+
+/**
+ * A single VCN Gateway Connection, providing a single public-facing VCN network.
+ *
+ * <p>This class handles mobility events, performs retries, and tracks safe-mode conditions.
+ *
+ * @hide
+ */
+public class VcnGatewayConnection extends Handler implements UnderlyingNetworkTrackerCallback {
+    private static final String TAG = VcnGatewayConnection.class.getSimpleName();
+
+    @NonNull private final VcnContext mVcnContext;
+    @NonNull private final ParcelUuid mSubscriptionGroup;
+    @NonNull private final UnderlyingNetworkTracker mUnderlyingNetworkTracker;
+    @NonNull private final VcnGatewayConnectionConfig mConnectionConfig;
+    @NonNull private final Dependencies mDeps;
+
+    public VcnGatewayConnection(
+            @NonNull VcnContext vcnContext,
+            @NonNull ParcelUuid subscriptionGroup,
+            @NonNull VcnGatewayConnectionConfig connectionConfig) {
+        this(vcnContext, subscriptionGroup, connectionConfig, new Dependencies());
+    }
+
+    private VcnGatewayConnection(
+            @NonNull VcnContext vcnContext,
+            @NonNull ParcelUuid subscriptionGroup,
+            @NonNull VcnGatewayConnectionConfig connectionConfig,
+            @NonNull Dependencies deps) {
+        super(Objects.requireNonNull(vcnContext, "Missing vcnContext").getLooper());
+        mVcnContext = vcnContext;
+        mSubscriptionGroup = Objects.requireNonNull(subscriptionGroup, "Missing subscriptionGroup");
+        mConnectionConfig = Objects.requireNonNull(connectionConfig, "Missing connectionConfig");
+        mDeps = Objects.requireNonNull(deps, "Missing deps");
+
+        mUnderlyingNetworkTracker =
+                mDeps.newUnderlyingNetworkTracker(mVcnContext, subscriptionGroup, this);
+    }
+
+    /** Tears down this GatewayConnection, and any resources used */
+    public void teardown() {
+        mUnderlyingNetworkTracker.teardown();
+    }
+
+    private static class Dependencies {
+        public UnderlyingNetworkTracker newUnderlyingNetworkTracker(
+                VcnContext vcnContext,
+                ParcelUuid subscriptionGroup,
+                UnderlyingNetworkTrackerCallback callback) {
+            return new UnderlyingNetworkTracker(vcnContext, subscriptionGroup, callback);
+        }
+    }
+
+    @Override
+    public void onSelectedUnderlyingNetworkChanged(@Nullable UnderlyingNetworkRecord underlying) {}
+}
diff --git a/services/core/java/com/android/server/vcn/util/PersistableBundleUtils.java b/services/core/java/com/android/server/vcn/util/PersistableBundleUtils.java
new file mode 100644
index 0000000..5c1b5ff
--- /dev/null
+++ b/services/core/java/com/android/server/vcn/util/PersistableBundleUtils.java
@@ -0,0 +1,341 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.vcn.util;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.os.ParcelUuid;
+import android.os.PersistableBundle;
+
+import com.android.internal.util.HexDump;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Objects;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+
+/** @hide */
+public class PersistableBundleUtils {
+    private static final String LIST_KEY_FORMAT = "LIST_ITEM_%d";
+    private static final String COLLECTION_SIZE_KEY = "COLLECTION_LENGTH";
+    private static final String MAP_KEY_FORMAT = "MAP_KEY_%d";
+    private static final String MAP_VALUE_FORMAT = "MAP_VALUE_%d";
+
+    private static final String PARCEL_UUID_KEY = "PARCEL_UUID";
+    private static final String BYTE_ARRAY_KEY = "BYTE_ARRAY_KEY";
+    private static final String INTEGER_KEY = "INTEGER_KEY";
+
+    /**
+     * Functional interface to convert an object of the specified type to a PersistableBundle.
+     *
+     * @param <T> the type of the source object
+     */
+    public interface Serializer<T> {
+        /**
+         * Converts this object to a PersistableBundle.
+         *
+         * @return the PersistableBundle representation of this object
+         */
+        PersistableBundle toPersistableBundle(T obj);
+    }
+
+    /**
+     * Functional interface used to create an object of the specified type from a PersistableBundle.
+     *
+     * @param <T> the type of the resultant object
+     */
+    public interface Deserializer<T> {
+        /**
+         * Creates an instance of specified type from a PersistableBundle representation.
+         *
+         * @param in the PersistableBundle representation
+         * @return an instance of the specified type
+         */
+        T fromPersistableBundle(PersistableBundle in);
+    }
+
+    /** Serializer to convert an integer to a PersistableBundle. */
+    public static final Serializer<Integer> INTEGER_SERIALIZER =
+            (i) -> {
+                final PersistableBundle result = new PersistableBundle();
+                result.putInt(INTEGER_KEY, i);
+                return result;
+            };
+
+    /** Deserializer to convert a PersistableBundle to an integer. */
+    public static final Deserializer<Integer> INTEGER_DESERIALIZER =
+            (bundle) -> {
+                Objects.requireNonNull(bundle, "PersistableBundle is null");
+                return bundle.getInt(INTEGER_KEY);
+            };
+
+    /**
+     * Converts a ParcelUuid to a PersistableBundle.
+     *
+     * <p>To avoid key collisions, NO additional key/value pairs should be added to the returned
+     * PersistableBundle object.
+     *
+     * @param uuid a ParcelUuid instance to persist
+     * @return the PersistableBundle instance
+     */
+    public static PersistableBundle fromParcelUuid(ParcelUuid uuid) {
+        final PersistableBundle result = new PersistableBundle();
+
+        result.putString(PARCEL_UUID_KEY, uuid.toString());
+
+        return result;
+    }
+
+    /**
+     * Converts from a PersistableBundle to a ParcelUuid.
+     *
+     * @param bundle the PersistableBundle containing the ParcelUuid
+     * @return the ParcelUuid instance
+     */
+    public static ParcelUuid toParcelUuid(PersistableBundle bundle) {
+        return ParcelUuid.fromString(bundle.getString(PARCEL_UUID_KEY));
+    }
+
+    /**
+     * Converts from a list of Persistable objects to a single PersistableBundle.
+     *
+     * <p>To avoid key collisions, NO additional key/value pairs should be added to the returned
+     * PersistableBundle object.
+     *
+     * @param <T> the type of the objects to convert to the PersistableBundle
+     * @param in the list of objects to be serialized into a PersistableBundle
+     * @param serializer an implementation of the {@link Serializer} functional interface that
+     *     converts an object of type T to a PersistableBundle
+     */
+    @NonNull
+    public static <T> PersistableBundle fromList(
+            @NonNull List<T> in, @NonNull Serializer<T> serializer) {
+        final PersistableBundle result = new PersistableBundle();
+
+        result.putInt(COLLECTION_SIZE_KEY, in.size());
+        for (int i = 0; i < in.size(); i++) {
+            final String key = String.format(LIST_KEY_FORMAT, i);
+            result.putPersistableBundle(key, serializer.toPersistableBundle(in.get(i)));
+        }
+        return result;
+    }
+
+    /**
+     * Converts from a PersistableBundle to a list of objects.
+     *
+     * @param <T> the type of the objects to convert from a PersistableBundle
+     * @param in the PersistableBundle containing the persisted list
+     * @param deserializer an implementation of the {@link Deserializer} functional interface that
+     *     builds the relevant type of objects.
+     */
+    @NonNull
+    public static <T> List<T> toList(
+            @NonNull PersistableBundle in, @NonNull Deserializer<T> deserializer) {
+        final int listLength = in.getInt(COLLECTION_SIZE_KEY);
+        final ArrayList<T> result = new ArrayList<>(listLength);
+
+        for (int i = 0; i < listLength; i++) {
+            final String key = String.format(LIST_KEY_FORMAT, i);
+            final PersistableBundle item = in.getPersistableBundle(key);
+
+            result.add(deserializer.fromPersistableBundle(item));
+        }
+        return result;
+    }
+
+    // TODO: b/170513329 Delete #fromByteArray and #toByteArray once BaseBundle#putByteArray and
+    // BaseBundle#getByteArray are exposed.
+
+    /**
+     * Converts a byte array to a PersistableBundle.
+     *
+     * <p>To avoid key collisions, NO additional key/value pairs should be added to the returned
+     * PersistableBundle object.
+     *
+     * @param array a byte array instance to persist
+     * @return the PersistableBundle instance
+     */
+    public static PersistableBundle fromByteArray(byte[] array) {
+        final PersistableBundle result = new PersistableBundle();
+
+        result.putString(BYTE_ARRAY_KEY, HexDump.toHexString(array));
+
+        return result;
+    }
+
+    /**
+     * Converts from a PersistableBundle to a byte array.
+     *
+     * @param bundle the PersistableBundle containing the byte array
+     * @return the byte array instance
+     */
+    public static byte[] toByteArray(PersistableBundle bundle) {
+        Objects.requireNonNull(bundle, "PersistableBundle is null");
+
+        String hex = bundle.getString(BYTE_ARRAY_KEY);
+        if (hex == null || hex.length() % 2 != 0) {
+            throw new IllegalArgumentException("PersistableBundle contains invalid byte array");
+        }
+
+        return HexDump.hexStringToByteArray(hex);
+    }
+
+    /**
+     * Converts from a Map of Persistable objects to a single PersistableBundle.
+     *
+     * <p>To avoid key collisions, NO additional key/value pairs should be added to the returned
+     * PersistableBundle object.
+     *
+     * @param <K> the type of the map-key to convert to the PersistableBundle
+     * @param <V> the type of the map-value to convert to the PersistableBundle
+     * @param in the Map of objects implementing the {@link Persistable} interface
+     * @param keySerializer an implementation of the {@link Serializer} functional interface that
+     *     converts a map-key of type T to a PersistableBundle
+     * @param valueSerializer an implementation of the {@link Serializer} functional interface that
+     *     converts a map-value of type E to a PersistableBundle
+     */
+    @NonNull
+    public static <K, V> PersistableBundle fromMap(
+            @NonNull Map<K, V> in,
+            @NonNull Serializer<K> keySerializer,
+            @NonNull Serializer<V> valueSerializer) {
+        final PersistableBundle result = new PersistableBundle();
+
+        result.putInt(COLLECTION_SIZE_KEY, in.size());
+        int i = 0;
+        for (Entry<K, V> entry : in.entrySet()) {
+            final String keyKey = String.format(MAP_KEY_FORMAT, i);
+            final String valueKey = String.format(MAP_VALUE_FORMAT, i);
+            result.putPersistableBundle(keyKey, keySerializer.toPersistableBundle(entry.getKey()));
+            result.putPersistableBundle(
+                    valueKey, valueSerializer.toPersistableBundle(entry.getValue()));
+
+            i++;
+        }
+
+        return result;
+    }
+
+    /**
+     * Converts from a PersistableBundle to a Map of objects.
+     *
+     * <p>In an attempt to preserve ordering, the returned map will be a LinkedHashMap. However, the
+     * guarantees on the ordering can only ever be as strong as the map that was serialized in
+     * {@link fromMap()}. If the initial map that was serialized had no ordering guarantees, the
+     * deserialized map similarly may be of a non-deterministic order.
+     *
+     * @param <K> the type of the map-key to convert from a PersistableBundle
+     * @param <V> the type of the map-value to convert from a PersistableBundle
+     * @param in the PersistableBundle containing the persisted Map
+     * @param keyDeserializer an implementation of the {@link Deserializer} functional interface
+     *     that builds the relevant type of map-key.
+     * @param valueDeserializer an implementation of the {@link Deserializer} functional interface
+     *     that builds the relevant type of map-value.
+     * @return An instance of the parsed map as a LinkedHashMap (in an attempt to preserve
+     *     ordering).
+     */
+    @NonNull
+    public static <K, V> LinkedHashMap<K, V> toMap(
+            @NonNull PersistableBundle in,
+            @NonNull Deserializer<K> keyDeserializer,
+            @NonNull Deserializer<V> valueDeserializer) {
+        final int mapSize = in.getInt(COLLECTION_SIZE_KEY);
+        final LinkedHashMap<K, V> result = new LinkedHashMap<>(mapSize);
+
+        for (int i = 0; i < mapSize; i++) {
+            final String keyKey = String.format(MAP_KEY_FORMAT, i);
+            final String valueKey = String.format(MAP_VALUE_FORMAT, i);
+            final PersistableBundle keyBundle = in.getPersistableBundle(keyKey);
+            final PersistableBundle valueBundle = in.getPersistableBundle(valueKey);
+
+            final K key = keyDeserializer.fromPersistableBundle(keyBundle);
+            final V value = valueDeserializer.fromPersistableBundle(valueBundle);
+            result.put(key, value);
+        }
+        return result;
+    }
+
+    /**
+     * Ensures safe reading and writing of {@link PersistableBundle}s to and from disk.
+     *
+     * <p>This class will enforce exclusion between reads and writes using the standard semantics of
+     * a ReadWriteLock. Specifically, concurrent readers ARE allowed, but reads/writes from/to the
+     * file are mutually exclusive. In other words, for an unbounded number n, the acceptable states
+     * are n readers, OR 1 writer (but not both).
+     */
+    public static class LockingReadWriteHelper {
+        private final ReadWriteLock mDiskLock = new ReentrantReadWriteLock();
+        private final String mPath;
+
+        public LockingReadWriteHelper(@NonNull String path) {
+            mPath = Objects.requireNonNull(path, "fileName was null");
+        }
+
+        /**
+         * Reads the {@link PersistableBundle} from the disk.
+         *
+         * @return the PersistableBundle, if the file existed, or null otherwise
+         */
+        @Nullable
+        public PersistableBundle readFromDisk() throws IOException {
+            try {
+                mDiskLock.readLock().lock();
+                final File file = new File(mPath);
+                if (!file.exists()) {
+                    return null;
+                }
+
+                try (FileInputStream fis = new FileInputStream(file)) {
+                    return PersistableBundle.readFromStream(fis);
+                }
+            } finally {
+                mDiskLock.readLock().unlock();
+            }
+        }
+
+        /**
+         * Writes a {@link PersistableBundle} to disk.
+         *
+         * @param bundle the {@link PersistableBundle} to write to disk
+         */
+        public void writeToDisk(@NonNull PersistableBundle bundle) throws IOException {
+            Objects.requireNonNull(bundle, "bundle was null");
+
+            try {
+                mDiskLock.writeLock().lock();
+                final File file = new File(mPath);
+                if (!file.exists()) {
+                    file.getParentFile().mkdirs();
+                }
+
+                try (FileOutputStream fos = new FileOutputStream(file)) {
+                    bundle.writeToStream(fos);
+                }
+            } finally {
+                mDiskLock.writeLock().unlock();
+            }
+        }
+    }
+}
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index b79953e..cfbc77c 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -4578,15 +4578,6 @@
             return false;
         }
 
-        // Check if the activity is on a sleeping display, and if it can turn it ON.
-        if (getDisplay().isSleeping()) {
-            final boolean canTurnScreenOn = !mSetToSleep || canTurnScreenOn()
-                    || canShowWhenLocked() || containsDismissKeyguardWindow();
-            if (!canTurnScreenOn) {
-                return false;
-            }
-        }
-
         // Now check whether it's really visible depending on Keyguard state, and update
         // {@link ActivityStack} internal states.
         // Inform the method if this activity is the top activity of this stack, but exclude the
@@ -4597,6 +4588,12 @@
         final boolean visibleIgnoringDisplayStatus = stack.checkKeyguardVisibility(this,
                 visibleIgnoringKeyguard, isTop && isTopNotPinnedStack);
 
+        // Check if the activity is on a sleeping display, and if it can turn it ON.
+        // TODO(b/163993448): Do not make activity visible before display awake.
+        if (visibleIgnoringDisplayStatus && getDisplay().isSleeping()) {
+            return !mSetToSleep || canTurnScreenOn();
+        }
+
         return visibleIgnoringDisplayStatus;
     }
 
diff --git a/services/core/java/com/android/server/wm/ActivityStack.java b/services/core/java/com/android/server/wm/ActivityStack.java
index e9768a2..2b785c5 100644
--- a/services/core/java/com/android/server/wm/ActivityStack.java
+++ b/services/core/java/com/android/server/wm/ActivityStack.java
@@ -1704,8 +1704,9 @@
         // If the most recent activity was noHistory but was only stopped rather
         // than stopped+finished because the device went to sleep, we need to make
         // sure to finish it as we're making a new activity topmost.
-        if (shouldSleepActivities() && mLastNoHistoryActivity != null &&
-                !mLastNoHistoryActivity.finishing) {
+        if (shouldSleepActivities() && mLastNoHistoryActivity != null
+                && !mLastNoHistoryActivity.finishing
+                && mLastNoHistoryActivity != next) {
             if (DEBUG_STATES) Slog.d(TAG_STATES,
                     "no-history finish of " + mLastNoHistoryActivity + " on new resume");
             mLastNoHistoryActivity.finishIfPossible("resume-no-history", false /* oomAdj */);
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java
index b378621..35ccc43 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -1481,9 +1481,10 @@
             // anyone interested in this piece of information.
             final ActivityStack homeStack = targetTask.getDisplayArea().getRootHomeTask();
             final boolean homeTaskVisible = homeStack != null && homeStack.shouldBeVisible(null);
+            final ActivityRecord top = targetTask.getTopNonFinishingActivity();
+            final boolean visible = top != null && top.isVisible();
             mService.getTaskChangeNotificationController().notifyActivityRestartAttempt(
-                    targetTask.getTaskInfo(), homeTaskVisible, clearedTask,
-                    targetTask.getTopNonFinishingActivity().isVisible());
+                    targetTask.getTaskInfo(), homeTaskVisible, clearedTask, visible);
         }
     }
 
diff --git a/services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java b/services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java
index c4e03f5..aa76a07 100644
--- a/services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java
+++ b/services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java
@@ -16,8 +16,6 @@
 
 package com.android.server.wm;
 
-import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
-
 import static com.android.server.wm.ActivityStack.TAG_VISIBILITY;
 import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_VISIBILITY;
 
@@ -174,12 +172,7 @@
         }
 
         final int windowingMode = mContiner.getWindowingMode();
-        if (windowingMode == WINDOWING_MODE_FREEFORM) {
-            // The visibility of tasks and the activities they contain in freeform stack are
-            // determined individually unlike other stacks where the visibility or fullscreen
-            // status of an activity in a previous task affects other.
-            mBehindFullscreenActivity = !mContainerShouldBeVisible;
-        } else if (!mBehindFullscreenActivity && mContiner.isActivityTypeHome()
+        if (!mBehindFullscreenActivity && mContiner.isActivityTypeHome()
                 && r.isRootOfTask()) {
             if (DEBUG_VISIBILITY) Slog.v(TAG_VISIBILITY, "Home task: at " + mContiner
                     + " stackShouldBeVisible=" + mContainerShouldBeVisible
diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java
index 39aa60b..0d2f57e 100644
--- a/services/core/java/com/android/server/wm/RootWindowContainer.java
+++ b/services/core/java/com/android/server/wm/RootWindowContainer.java
@@ -3246,7 +3246,7 @@
             int numTaskContainers = display.getTaskDisplayAreaCount();
             for (int tdaNdx = 0; tdaNdx < numTaskContainers; tdaNdx++) {
                 final TaskDisplayArea taskDisplayArea = display.getTaskDisplayAreaAt(tdaNdx);
-                final int numStacks = display.getStackCount();
+                final int numStacks = taskDisplayArea.getStackCount();
                 for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) {
                     final ActivityStack stack = taskDisplayArea.getStackAt(stackNdx);
                     stack.finishVoiceTask(session);
diff --git a/services/core/jni/Android.bp b/services/core/jni/Android.bp
index e897274..8392370 100644
--- a/services/core/jni/Android.bp
+++ b/services/core/jni/Android.bp
@@ -26,7 +26,6 @@
         "stats/SubsystemSleepStatePuller.cpp",
         "com_android_server_adb_AdbDebuggingManager.cpp",
         "com_android_server_am_BatteryStatsService.cpp",
-        "com_android_server_connectivity_Vpn.cpp",
         "com_android_server_ConsumerIrService.cpp",
         "com_android_server_devicepolicy_CryptoTestHelper.cpp",
         "com_android_server_gpu_GpuService.cpp",
@@ -60,6 +59,8 @@
         "com_android_server_pm_PackageManagerShellCommandDataLoader.cpp",
         "onload.cpp",
         ":lib_networkStatsFactory_native",
+        // TODO: move the file below to the connectivity APEX
+        "com_android_server_connectivity_Vpn.cpp",
     ],
 
     include_dirs: [
@@ -161,9 +162,10 @@
         "android.frameworks.schedulerservice@1.0",
         "android.frameworks.sensorservice@1.0",
         "android.frameworks.stats@1.0",
+        "android.system.suspend.control-cpp",
+        "android.system.suspend.control.internal-cpp",
         "android.system.suspend@1.0",
         "service.incremental",
-        "suspend_control_aidl_interface-cpp",
     ],
 
     static_libs: [
diff --git a/services/core/jni/com_android_server_SystemServer.cpp b/services/core/jni/com_android_server_SystemServer.cpp
index 76b1713..43f50bf 100644
--- a/services/core/jni/com_android_server_SystemServer.cpp
+++ b/services/core/jni/com_android_server_SystemServer.cpp
@@ -23,6 +23,7 @@
 #include <jni.h>
 #include <nativehelper/JNIHelp.h>
 
+#include <android/hidl/manager/1.2/IServiceManager.h>
 #include <binder/IServiceManager.h>
 #include <hidl/HidlTransportSupport.h>
 #include <incremental_service.h>
@@ -64,6 +65,7 @@
     using ::android::frameworks::stats::V1_0::IStats;
     using ::android::frameworks::stats::V1_0::implementation::StatsHal;
     using ::android::hardware::configureRpcThreadpool;
+    using ::android::hidl::manager::V1_0::IServiceManager;
 
     status_t err;
 
@@ -74,15 +76,22 @@
 
     sp<ISensorManager> sensorService = new SensorManager(vm);
     err = sensorService->registerAsService();
-    ALOGE_IF(err != OK, "Cannot register %s: %d", ISensorManager::descriptor, err);
+    LOG_ALWAYS_FATAL_IF(err != OK, "Cannot register %s: %d", ISensorManager::descriptor, err);
 
     sp<ISchedulingPolicyService> schedulingService = new SchedulingPolicyService();
-    err = schedulingService->registerAsService();
-    ALOGE_IF(err != OK, "Cannot register %s: %d", ISchedulingPolicyService::descriptor, err);
+    if (IServiceManager::Transport::HWBINDER ==
+        hardware::defaultServiceManager1_2()->getTransport(ISchedulingPolicyService::descriptor,
+                                                           "default")) {
+        err = schedulingService->registerAsService("default");
+        LOG_ALWAYS_FATAL_IF(err != OK, "Cannot register %s: %d",
+                            ISchedulingPolicyService::descriptor, err);
+    } else {
+        ALOGW("%s is deprecated. Skipping registration.", ISchedulingPolicyService::descriptor);
+    }
 
     sp<IStats> statsHal = new StatsHal();
     err = statsHal->registerAsService();
-    ALOGE_IF(err != OK, "Cannot register %s: %d", IStats::descriptor, err);
+    LOG_ALWAYS_FATAL_IF(err != OK, "Cannot register %s: %d", IStats::descriptor, err);
 }
 
 static void android_server_SystemServer_initZygoteChildHeapProfiling(JNIEnv* /* env */,
diff --git a/services/core/jni/com_android_server_am_BatteryStatsService.cpp b/services/core/jni/com_android_server_am_BatteryStatsService.cpp
index b08868e..0034286 100644
--- a/services/core/jni/com_android_server_am_BatteryStatsService.cpp
+++ b/services/core/jni/com_android_server_am_BatteryStatsService.cpp
@@ -17,7 +17,6 @@
 #define LOG_TAG "BatteryStatsService"
 //#define LOG_NDEBUG 0
 
-#include <climits>
 #include <errno.h>
 #include <fcntl.h>
 #include <inttypes.h>
@@ -28,6 +27,7 @@
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <unistd.h>
+#include <climits>
 #include <unordered_map>
 #include <utility>
 
@@ -46,15 +46,16 @@
 #include <utils/misc.h>
 #include <utils/Log.h>
 
+using android::hardware::hidl_vec;
 using android::hardware::Return;
 using android::hardware::Void;
-using android::system::suspend::BnSuspendCallback;
+using android::hardware::power::stats::V1_0::IPowerStats;
 using android::hardware::power::V1_0::PowerStatePlatformSleepState;
 using android::hardware::power::V1_0::PowerStateVoter;
 using android::hardware::power::V1_0::Status;
 using android::hardware::power::V1_1::PowerStateSubsystem;
 using android::hardware::power::V1_1::PowerStateSubsystemSleepState;
-using android::hardware::hidl_vec;
+using android::system::suspend::BnSuspendCallback;
 using android::system::suspend::ISuspendControlService;
 using IPowerV1_1 = android::hardware::power::V1_1::IPower;
 using IPowerV1_0 = android::hardware::power::V1_0::IPower;
@@ -62,10 +63,9 @@
 namespace android
 {
 
-#define LAST_RESUME_REASON "/sys/kernel/wakeup_reasons/last_resume_reason"
-#define MAX_REASON_SIZE 512
-
 static bool wakeup_init = false;
+static std::mutex mReasonsMutex;
+static std::vector<std::string> mWakeupReasons;
 static sem_t wakeup_sem;
 extern sp<IPowerV1_0> getPowerHalHidlV1_0();
 extern sp<IPowerV1_1> getPowerHalHidlV1_1();
@@ -84,7 +84,8 @@
     gPowerStatsHalStateNames = {};
 std::vector<uint32_t> gPowerStatsHalPlatformIds = {};
 std::vector<uint32_t> gPowerStatsHalSubsystemIds = {};
-sp<android::hardware::power::stats::V1_0::IPowerStats> gPowerStatsHalV1_0 = nullptr;
+sp<IPowerStats> gPowerStatsHalV1_0 = nullptr;
+
 std::function<void(JNIEnv*, jobject)> gGetLowPowerStatsImpl = {};
 std::function<jint(JNIEnv*, jobject)> gGetPlatformLowPowerStatsImpl = {};
 std::function<jint(JNIEnv*, jobject)> gGetSubsystemLowPowerStatsImpl = {};
@@ -115,9 +116,25 @@
 sp<PowerHalDeathRecipient> gDeathRecipient = new PowerHalDeathRecipient();
 
 class WakeupCallback : public BnSuspendCallback {
-   public:
-    binder::Status notifyWakeup(bool success) override {
+public:
+    binder::Status notifyWakeup(bool success,
+                                const std::vector<std::string>& wakeupReasons) override {
         ALOGI("In wakeup_callback: %s", success ? "resumed from suspend" : "suspend aborted");
+        bool reasonsCaptured = false;
+        {
+            std::unique_lock<std::mutex> reasonsLock(mReasonsMutex, std::defer_lock);
+            if (reasonsLock.try_lock() && mWakeupReasons.empty()) {
+                mWakeupReasons = wakeupReasons;
+                reasonsCaptured = true;
+            }
+        }
+        if (!reasonsCaptured) {
+            ALOGE("Failed to write wakeup reasons. Reasons dropped:");
+            for (auto wakeupReason : wakeupReasons) {
+                ALOGE("\t%s", wakeupReason.c_str());
+            }
+        }
+
         int ret = sem_post(&wakeup_sem);
         if (ret < 0) {
             char buf[80];
@@ -157,8 +174,6 @@
 
     // Wait for wakeup.
     ALOGV("Waiting for wakeup...");
-    // TODO(b/116747600): device can suspend and wakeup after sem_wait() finishes and before wakeup
-    // reason is recorded, i.e. BatteryStats might occasionally miss wakeup events.
     int ret = sem_wait(&wakeup_sem);
     if (ret < 0) {
         char buf[80];
@@ -168,20 +183,27 @@
         return 0;
     }
 
-    FILE *fp = fopen(LAST_RESUME_REASON, "r");
-    if (fp == NULL) {
-        ALOGE("Failed to open %s", LAST_RESUME_REASON);
-        return -1;
-    }
-
     char* mergedreason = (char*)env->GetDirectBufferAddress(outBuf);
     int remainreasonlen = (int)env->GetDirectBufferCapacity(outBuf);
 
     ALOGV("Reading wakeup reasons");
+    std::vector<std::string> wakeupReasons;
+    {
+        std::unique_lock<std::mutex> reasonsLock(mReasonsMutex, std::defer_lock);
+        if (reasonsLock.try_lock() && !mWakeupReasons.empty()) {
+            wakeupReasons = std::move(mWakeupReasons);
+            mWakeupReasons.clear();
+        }
+    }
+
+    if (wakeupReasons.empty()) {
+        return 0;
+    }
+
     char* mergedreasonpos = mergedreason;
-    char reasonline[128];
     int i = 0;
-    while (fgets(reasonline, sizeof(reasonline), fp) != NULL) {
+    for (auto wakeupReason : wakeupReasons) {
+        auto reasonline = const_cast<char*>(wakeupReason.c_str());
         char* pos = reasonline;
         char* endPos;
         int len;
@@ -238,10 +260,6 @@
         *mergedreasonpos = 0;
     }
 
-    if (fclose(fp) != 0) {
-        ALOGE("Failed to close %s", LAST_RESUME_REASON);
-        return -1;
-    }
     return mergedreasonpos - mergedreason;
 }
 
@@ -340,7 +358,7 @@
 // The caller must be holding gPowerHalMutex.
 static bool getPowerStatsHalLocked() {
     if (gPowerStatsHalV1_0 == nullptr) {
-        gPowerStatsHalV1_0 = android::hardware::power::stats::V1_0::IPowerStats::getService();
+        gPowerStatsHalV1_0 = IPowerStats::getService();
         if (gPowerStatsHalV1_0 == nullptr) {
             ALOGE("Unable to get power.stats HAL service.");
             return false;
@@ -833,7 +851,7 @@
 static void setUpPowerStatsLocked() {
     // First see if power.stats HAL is available. Fall back to power HAL if
     // power.stats HAL is unavailable.
-    if (android::hardware::power::stats::V1_0::IPowerStats::getService() != nullptr) {
+    if (IPowerStats::getService() != nullptr) {
         ALOGI("Using power.stats HAL");
         gGetLowPowerStatsImpl = getPowerStatsHalLowPowerData;
         gGetPlatformLowPowerStatsImpl = getPowerStatsHalPlatformData;
diff --git a/services/core/jni/com_android_server_net_NetworkStatsService.cpp b/services/core/jni/com_android_server_net_NetworkStatsService.cpp
index 0275f3e..10b248a 100644
--- a/services/core/jni/com_android_server_net_NetworkStatsService.cpp
+++ b/services/core/jni/com_android_server_net_NetworkStatsService.cpp
@@ -215,21 +215,6 @@
 };
 
 int register_android_server_net_NetworkStatsService(JNIEnv* env) {
-    jclass netStatsService = env->FindClass("com/android/server/net/NetworkStatsService");
-    jfieldID rxBytesId = env->GetStaticFieldID(netStatsService, "TYPE_RX_BYTES", "I");
-    jfieldID rxPacketsId = env->GetStaticFieldID(netStatsService, "TYPE_RX_PACKETS", "I");
-    jfieldID txBytesId = env->GetStaticFieldID(netStatsService, "TYPE_TX_BYTES", "I");
-    jfieldID txPacketsId = env->GetStaticFieldID(netStatsService, "TYPE_TX_PACKETS", "I");
-    jfieldID tcpRxPacketsId = env->GetStaticFieldID(netStatsService, "TYPE_TCP_RX_PACKETS", "I");
-    jfieldID tcpTxPacketsId = env->GetStaticFieldID(netStatsService, "TYPE_TCP_TX_PACKETS", "I");
-
-    env->SetStaticIntField(netStatsService, rxBytesId, RX_BYTES);
-    env->SetStaticIntField(netStatsService, rxPacketsId, RX_PACKETS);
-    env->SetStaticIntField(netStatsService, txBytesId, TX_BYTES);
-    env->SetStaticIntField(netStatsService, txPacketsId, TX_PACKETS);
-    env->SetStaticIntField(netStatsService, tcpRxPacketsId, TCP_RX_PACKETS);
-    env->SetStaticIntField(netStatsService, tcpTxPacketsId, TCP_TX_PACKETS);
-
     return jniRegisterNativeMethods(env, "com/android/server/net/NetworkStatsService", gMethods,
                                     NELEM(gMethods));
 }
diff --git a/services/core/jni/com_android_server_power_PowerManagerService.cpp b/services/core/jni/com_android_server_power_PowerManagerService.cpp
index 4698383..5fde550 100644
--- a/services/core/jni/com_android_server_power_PowerManagerService.cpp
+++ b/services/core/jni/com_android_server_power_PowerManagerService.cpp
@@ -24,6 +24,7 @@
 #include <android/hardware/power/Mode.h>
 #include <android/system/suspend/1.0/ISystemSuspend.h>
 #include <android/system/suspend/ISuspendControlService.h>
+#include <android/system/suspend/internal/ISuspendControlServiceInternal.h>
 #include <nativehelper/JNIHelp.h>
 #include "jni.h"
 
@@ -355,6 +356,8 @@
 
 static sp<ISystemSuspend> gSuspendHal = nullptr;
 static sp<ISuspendControlService> gSuspendControl = nullptr;
+static sp<system::suspend::internal::ISuspendControlServiceInternal> gSuspendControlInternal =
+        nullptr;
 static sp<IWakeLock> gSuspendBlocker = nullptr;
 static std::mutex gSuspendMutex;
 
@@ -379,10 +382,22 @@
     return gSuspendControl;
 }
 
+sp<system::suspend::internal::ISuspendControlServiceInternal> getSuspendControlInternal() {
+    static std::once_flag suspendControlFlag;
+    std::call_once(suspendControlFlag, []() {
+        gSuspendControlInternal =
+                waitForService<system::suspend::internal::ISuspendControlServiceInternal>(
+                        String16("suspend_control_internal"));
+        LOG_ALWAYS_FATAL_IF(gSuspendControlInternal == nullptr);
+    });
+    return gSuspendControlInternal;
+}
+
 void enableAutoSuspend() {
     static bool enabled = false;
     if (!enabled) {
-        sp<ISuspendControlService> suspendControl = getSuspendControl();
+        sp<system::suspend::internal::ISuspendControlServiceInternal> suspendControl =
+                getSuspendControlInternal();
         suspendControl->enableAutosuspend(&enabled);
     }
 
@@ -515,7 +530,7 @@
 
 static bool nativeForceSuspend(JNIEnv* /* env */, jclass /* clazz */) {
     bool retval = false;
-    getSuspendControl()->forceSuspend(&retval);
+    getSuspendControlInternal()->forceSuspend(&retval);
     return retval;
 }
 
diff --git a/services/core/xsd/platform-compat-config.xsd b/services/core/xsd/platform-compat-config.xsd
index 5a4c682..9924708 100644
--- a/services/core/xsd/platform-compat-config.xsd
+++ b/services/core/xsd/platform-compat-config.xsd
@@ -29,6 +29,7 @@
                 <xs:attribute type="xs:boolean" name="disabled"/>
                 <xs:attribute type="xs:boolean" name="loggingOnly"/>
                 <xs:attribute type="xs:int" name="enableAfterTargetSdk"/>
+                <xs:attribute type="xs:int" name="enableSinceTargetSdk"/>
                 <xs:attribute type="xs:string" name="description"/>
             </xs:extension>
         </xs:simpleContent>
diff --git a/services/core/xsd/platform-compat-schema/current.txt b/services/core/xsd/platform-compat-schema/current.txt
index 7def58d..e3640ed 100644
--- a/services/core/xsd/platform-compat-schema/current.txt
+++ b/services/core/xsd/platform-compat-schema/current.txt
@@ -6,6 +6,7 @@
     method public String getDescription();
     method public boolean getDisabled();
     method public int getEnableAfterTargetSdk();
+    method public int getEnableSinceTargetSdk();
     method public long getId();
     method public boolean getLoggingOnly();
     method public String getName();
@@ -13,6 +14,7 @@
     method public void setDescription(String);
     method public void setDisabled(boolean);
     method public void setEnableAfterTargetSdk(int);
+    method public void setEnableSinceTargetSdk(int);
     method public void setId(long);
     method public void setLoggingOnly(boolean);
     method public void setName(String);
diff --git a/services/core/xsd/vts/Android.mk b/services/core/xsd/vts/Android.mk
deleted file mode 100644
index 6dc2c43..0000000
--- a/services/core/xsd/vts/Android.mk
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# Copyright (C) 2019 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VtsValidateDefaultPermissions
-include test/vts/tools/build/Android.host_config.mk
diff --git a/services/core/xsd/vts/AndroidTest.xml b/services/core/xsd/vts/AndroidTest.xml
deleted file mode 100644
index 4f3b2ef..0000000
--- a/services/core/xsd/vts/AndroidTest.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2019 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<configuration description="Config for VTS VtsValidateDefaultPermissions.">
-    <option name="config-descriptor:metadata" key="plan" value="vts-treble" />
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
-        <option name="abort-on-push-failure" value="false"/>
-        <option name="push-group" value="HostDrivenTest.push"/>
-        <option name="push" value="DATA/etc/default-permissions.xsd->/data/local/tmp/default-permissions.xsd"/>
-    </target_preparer>
-    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
-        <option name="test-module-name" value="VtsValidateDefaultPermissions"/>
-        <option name="binary-test-source" value="_32bit::DATA/nativetest/vts_defaultPermissions_validate_test/vts_defaultPermissions_validate_test" />
-        <option name="binary-test-source" value="_64bit::DATA/nativetest64/vts_defaultPermissions_validate_test/vts_defaultPermissions_validate_test" />
-        <option name="binary-test-type" value="gtest"/>
-        <option name="test-timeout" value="30s"/>
-    </test>
-</configuration>
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index c6b93d6..faf3f06 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -480,38 +480,38 @@
     private static final int STATUS_BAR_DISABLE2_MASK =
             StatusBarManager.DISABLE2_QUICK_SETTINGS;
 
-    private static final Set<String> SECURE_SETTINGS_WHITELIST;
-    private static final Set<String> SECURE_SETTINGS_DEVICEOWNER_WHITELIST;
-    private static final Set<String> GLOBAL_SETTINGS_WHITELIST;
+    private static final Set<String> SECURE_SETTINGS_ALLOWLIST;
+    private static final Set<String> SECURE_SETTINGS_DEVICEOWNER_ALLOWLIST;
+    private static final Set<String> GLOBAL_SETTINGS_ALLOWLIST;
     private static final Set<String> GLOBAL_SETTINGS_DEPRECATED;
-    private static final Set<String> SYSTEM_SETTINGS_WHITELIST;
+    private static final Set<String> SYSTEM_SETTINGS_ALLOWLIST;
     private static final Set<Integer> DA_DISALLOWED_POLICIES;
     // A collection of user restrictions that are deprecated and should simply be ignored.
     private static final Set<String> DEPRECATED_USER_RESTRICTIONS;
     private static final String AB_DEVICE_KEY = "ro.build.ab_update";
 
     static {
-        SECURE_SETTINGS_WHITELIST = new ArraySet<>();
-        SECURE_SETTINGS_WHITELIST.add(Settings.Secure.DEFAULT_INPUT_METHOD);
-        SECURE_SETTINGS_WHITELIST.add(Settings.Secure.SKIP_FIRST_USE_HINTS);
-        SECURE_SETTINGS_WHITELIST.add(Settings.Secure.INSTALL_NON_MARKET_APPS);
+        SECURE_SETTINGS_ALLOWLIST = new ArraySet<>();
+        SECURE_SETTINGS_ALLOWLIST.add(Settings.Secure.DEFAULT_INPUT_METHOD);
+        SECURE_SETTINGS_ALLOWLIST.add(Settings.Secure.SKIP_FIRST_USE_HINTS);
+        SECURE_SETTINGS_ALLOWLIST.add(Settings.Secure.INSTALL_NON_MARKET_APPS);
 
-        SECURE_SETTINGS_DEVICEOWNER_WHITELIST = new ArraySet<>();
-        SECURE_SETTINGS_DEVICEOWNER_WHITELIST.addAll(SECURE_SETTINGS_WHITELIST);
-        SECURE_SETTINGS_DEVICEOWNER_WHITELIST.add(Settings.Secure.LOCATION_MODE);
+        SECURE_SETTINGS_DEVICEOWNER_ALLOWLIST = new ArraySet<>();
+        SECURE_SETTINGS_DEVICEOWNER_ALLOWLIST.addAll(SECURE_SETTINGS_ALLOWLIST);
+        SECURE_SETTINGS_DEVICEOWNER_ALLOWLIST.add(Settings.Secure.LOCATION_MODE);
 
-        GLOBAL_SETTINGS_WHITELIST = new ArraySet<>();
-        GLOBAL_SETTINGS_WHITELIST.add(Settings.Global.ADB_ENABLED);
-        GLOBAL_SETTINGS_WHITELIST.add(Settings.Global.ADB_WIFI_ENABLED);
-        GLOBAL_SETTINGS_WHITELIST.add(Settings.Global.AUTO_TIME);
-        GLOBAL_SETTINGS_WHITELIST.add(Settings.Global.AUTO_TIME_ZONE);
-        GLOBAL_SETTINGS_WHITELIST.add(Settings.Global.DATA_ROAMING);
-        GLOBAL_SETTINGS_WHITELIST.add(Settings.Global.USB_MASS_STORAGE_ENABLED);
-        GLOBAL_SETTINGS_WHITELIST.add(Settings.Global.WIFI_SLEEP_POLICY);
-        GLOBAL_SETTINGS_WHITELIST.add(Settings.Global.STAY_ON_WHILE_PLUGGED_IN);
-        GLOBAL_SETTINGS_WHITELIST.add(Settings.Global.WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN);
-        GLOBAL_SETTINGS_WHITELIST.add(Settings.Global.PRIVATE_DNS_MODE);
-        GLOBAL_SETTINGS_WHITELIST.add(Settings.Global.PRIVATE_DNS_SPECIFIER);
+        GLOBAL_SETTINGS_ALLOWLIST = new ArraySet<>();
+        GLOBAL_SETTINGS_ALLOWLIST.add(Settings.Global.ADB_ENABLED);
+        GLOBAL_SETTINGS_ALLOWLIST.add(Settings.Global.ADB_WIFI_ENABLED);
+        GLOBAL_SETTINGS_ALLOWLIST.add(Settings.Global.AUTO_TIME);
+        GLOBAL_SETTINGS_ALLOWLIST.add(Settings.Global.AUTO_TIME_ZONE);
+        GLOBAL_SETTINGS_ALLOWLIST.add(Settings.Global.DATA_ROAMING);
+        GLOBAL_SETTINGS_ALLOWLIST.add(Settings.Global.USB_MASS_STORAGE_ENABLED);
+        GLOBAL_SETTINGS_ALLOWLIST.add(Settings.Global.WIFI_SLEEP_POLICY);
+        GLOBAL_SETTINGS_ALLOWLIST.add(Settings.Global.STAY_ON_WHILE_PLUGGED_IN);
+        GLOBAL_SETTINGS_ALLOWLIST.add(Settings.Global.WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN);
+        GLOBAL_SETTINGS_ALLOWLIST.add(Settings.Global.PRIVATE_DNS_MODE);
+        GLOBAL_SETTINGS_ALLOWLIST.add(Settings.Global.PRIVATE_DNS_SPECIFIER);
 
         GLOBAL_SETTINGS_DEPRECATED = new ArraySet<>();
         GLOBAL_SETTINGS_DEPRECATED.add(Settings.Global.BLUETOOTH_ON);
@@ -520,11 +520,11 @@
         GLOBAL_SETTINGS_DEPRECATED.add(Settings.Global.NETWORK_PREFERENCE);
         GLOBAL_SETTINGS_DEPRECATED.add(Settings.Global.WIFI_ON);
 
-        SYSTEM_SETTINGS_WHITELIST = new ArraySet<>();
-        SYSTEM_SETTINGS_WHITELIST.add(Settings.System.SCREEN_BRIGHTNESS);
-        SYSTEM_SETTINGS_WHITELIST.add(Settings.System.SCREEN_BRIGHTNESS_FLOAT);
-        SYSTEM_SETTINGS_WHITELIST.add(Settings.System.SCREEN_BRIGHTNESS_MODE);
-        SYSTEM_SETTINGS_WHITELIST.add(Settings.System.SCREEN_OFF_TIMEOUT);
+        SYSTEM_SETTINGS_ALLOWLIST = new ArraySet<>();
+        SYSTEM_SETTINGS_ALLOWLIST.add(Settings.System.SCREEN_BRIGHTNESS);
+        SYSTEM_SETTINGS_ALLOWLIST.add(Settings.System.SCREEN_BRIGHTNESS_FLOAT);
+        SYSTEM_SETTINGS_ALLOWLIST.add(Settings.System.SCREEN_BRIGHTNESS_MODE);
+        SYSTEM_SETTINGS_ALLOWLIST.add(Settings.System.SCREEN_OFF_TIMEOUT);
 
         DA_DISALLOWED_POLICIES = new ArraySet<>();
         DA_DISALLOWED_POLICIES.add(DeviceAdminInfo.USES_POLICY_DISABLE_CAMERA);
@@ -1231,13 +1231,13 @@
         String startUserSessionMessage = null;
         String endUserSessionMessage = null;
 
-        // The whitelist of packages that can access cross profile calendar APIs.
-        // This whitelist should be in default an empty list, which indicates that no package
-        // is whitelisted.
+        // The allowlist of packages that can access cross profile calendar APIs.
+        // This allowlist should be in default an empty list, which indicates that no package
+        // is allowed.
         List<String> mCrossProfileCalendarPackages = Collections.emptyList();
 
-        // The whitelist of packages that the admin has enabled to be able to request consent from
-        // the user to communicate cross-profile. By default, no packages are whitelisted, which is
+        // The allowlist of packages that the admin has enabled to be able to request consent from
+        // the user to communicate cross-profile. By default, no packages are allowed, which is
         // represented as an empty list.
         List<String> mCrossProfilePackages = Collections.emptyList();
 
@@ -2818,7 +2818,7 @@
 
         final IIntentSender.Stub mLocalSender = new IIntentSender.Stub() {
             @Override
-            public void send(int code, Intent intent, String resolvedType, IBinder whitelistToken,
+            public void send(int code, Intent intent, String resolvedType, IBinder allowlistToken,
                     IIntentReceiver finishedReceiver, String requiredPermission, Bundle options) {
                 final int status = intent.getIntExtra(
                         PackageInstaller.EXTRA_STATUS, PackageInstaller.STATUS_FAILURE);
@@ -7067,7 +7067,7 @@
      */
     @Override
     public boolean setAlwaysOnVpnPackage(ComponentName who, String vpnPackage, boolean lockdown,
-            List<String> lockdownWhitelist)
+            List<String> lockdownAllowlist)
             throws SecurityException {
         enforceProfileOrDeviceOwner(who);
 
@@ -7079,10 +7079,10 @@
                         DevicePolicyManager.ERROR_VPN_PACKAGE_NOT_FOUND, vpnPackage);
             }
 
-            if (vpnPackage != null && lockdown && lockdownWhitelist != null) {
-                for (String packageName : lockdownWhitelist) {
+            if (vpnPackage != null && lockdown && lockdownAllowlist != null) {
+                for (String packageName : lockdownAllowlist) {
                     if (!isPackageInstalledForUser(packageName, userId)) {
-                        Slog.w(LOG_TAG, "Non-existent package in VPN whitelist: " + packageName);
+                        Slog.w(LOG_TAG, "Non-existent package in VPN allowlist: " + packageName);
                         throw new ServiceSpecificException(
                                 DevicePolicyManager.ERROR_VPN_PACKAGE_NOT_FOUND, packageName);
                     }
@@ -7090,7 +7090,7 @@
             }
             // If some package is uninstalled after the check above, it will be ignored by CM.
             if (!mInjector.getConnectivityManager().setAlwaysOnVpnPackageForUser(
-                    userId, vpnPackage, lockdown, lockdownWhitelist)) {
+                    userId, vpnPackage, lockdown, lockdownAllowlist)) {
                 throw new UnsupportedOperationException();
             }
             DevicePolicyEventLogger
@@ -7098,7 +7098,7 @@
                     .setAdmin(who)
                     .setStrings(vpnPackage)
                     .setBoolean(lockdown)
-                    .setInt(lockdownWhitelist != null ? lockdownWhitelist.size() : 0)
+                    .setInt(lockdownAllowlist != null ? lockdownAllowlist.size() : 0)
                     .write();
         });
         synchronized (getLockObject()) {
@@ -7151,7 +7151,7 @@
     }
 
     @Override
-    public List<String> getAlwaysOnVpnLockdownWhitelist(ComponentName admin)
+    public List<String> getAlwaysOnVpnLockdownAllowlist(ComponentName admin)
             throws SecurityException {
         enforceProfileOrDeviceOwner(admin);
 
@@ -11911,7 +11911,7 @@
                 return;
             }
 
-            if (!GLOBAL_SETTINGS_WHITELIST.contains(setting)
+            if (!GLOBAL_SETTINGS_ALLOWLIST.contains(setting)
                     && !UserManager.isDeviceInDemoMode(mContext)) {
                 throw new SecurityException(String.format(
                         "Permission denial: device owners cannot update %1$s", setting));
@@ -11939,7 +11939,7 @@
         synchronized (getLockObject()) {
             getActiveAdminForCallerLocked(who, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);
 
-            if (!SYSTEM_SETTINGS_WHITELIST.contains(setting)) {
+            if (!SYSTEM_SETTINGS_ALLOWLIST.contains(setting)) {
                 throw new SecurityException(String.format(
                         "Permission denial: device owners cannot update %1$s", setting));
             }
@@ -12083,12 +12083,12 @@
             getActiveAdminForCallerLocked(who, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);
 
             if (isDeviceOwner(who, callingUserId)) {
-                if (!SECURE_SETTINGS_DEVICEOWNER_WHITELIST.contains(setting)
+                if (!SECURE_SETTINGS_DEVICEOWNER_ALLOWLIST.contains(setting)
                         && !isCurrentUserDemo()) {
                     throw new SecurityException(String.format(
                             "Permission denial: Device owners cannot update %1$s", setting));
                 }
-            } else if (!SECURE_SETTINGS_WHITELIST.contains(setting) && !isCurrentUserDemo()) {
+            } else if (!SECURE_SETTINGS_ALLOWLIST.contains(setting) && !isCurrentUserDemo()) {
                 throw new SecurityException(String.format(
                         "Permission denial: Profile owners cannot update %1$s", setting));
             }
@@ -12474,6 +12474,22 @@
         }
 
         @Override
+        public boolean isActiveDeviceOwner(int uid) {
+            synchronized (getLockObject()) {
+                return getActiveAdminWithPolicyForUidLocked(
+                        null, DeviceAdminInfo.USES_POLICY_DEVICE_OWNER, uid) != null;
+            }
+        }
+
+        @Override
+        public boolean isActiveProfileOwner(int uid) {
+            synchronized (getLockObject()) {
+                return getActiveAdminWithPolicyForUidLocked(
+                        null, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER, uid) != null;
+            }
+        }
+
+        @Override
         public boolean isActiveSupervisionApp(int uid) {
             synchronized (getLockObject()) {
                 final ActiveAdmin admin = getActiveAdminWithPolicyForUidLocked(
@@ -13859,7 +13875,7 @@
     @Override
     public void markProfileOwnerOnOrganizationOwnedDevice(ComponentName who, int userId) {
         // As the caller is the system, it must specify the component name of the profile owner
-        // as a sanity / safety check.
+        // as a safety check.
         Objects.requireNonNull(who);
 
         if (!mHasFeature) {
@@ -13895,7 +13911,7 @@
     @GuardedBy("getLockObject()")
     private void markProfileOwnerOnOrganizationOwnedDeviceUncheckedLocked(
             ComponentName who, int userId) {
-        // Sanity check: Make sure that the user has a profile owner and that the specified
+        // Make sure that the user has a profile owner and that the specified
         // component is the profile owner of that user.
         if (!isProfileOwner(who, userId)) {
             throw new IllegalArgumentException(String.format(
diff --git a/services/incremental/IncrementalService.cpp b/services/incremental/IncrementalService.cpp
index f7082a9..f3940e6 100644
--- a/services/incremental/IncrementalService.cpp
+++ b/services/incremental/IncrementalService.cpp
@@ -305,6 +305,7 @@
     }
     mJobCondition.notify_all();
     mJobProcessor.join();
+    mLooper->wake();
     mCmdLooperThread.join();
     mTimedQueue->stop();
     // Ensure that mounts are destroyed while the service is still valid.
@@ -1377,7 +1378,7 @@
 }
 
 void IncrementalService::runCmdLooper() {
-    constexpr auto kTimeoutMsecs = 1000;
+    constexpr auto kTimeoutMsecs = -1;
     while (mRunning.load(std::memory_order_relaxed)) {
         mLooper->pollAll(kTimeoutMsecs);
     }
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 4552bc6..2ba94e8 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -47,7 +47,9 @@
 import android.database.sqlite.SQLiteGlobal;
 import android.graphics.GraphicsStatsService;
 import android.hardware.display.DisplayManagerInternal;
+import android.net.ConnectivityManager;
 import android.net.ConnectivityModuleConnector;
+import android.net.IConnectivityManager;
 import android.net.NetworkStackClient;
 import android.os.BaseBundle;
 import android.os.Binder;
@@ -103,7 +105,6 @@
 import com.android.server.clipboard.ClipboardService;
 import com.android.server.compat.PlatformCompat;
 import com.android.server.compat.PlatformCompatNative;
-import com.android.server.connectivity.IpConnectivityMetrics;
 import com.android.server.contentcapture.ContentCaptureManagerInternal;
 import com.android.server.coverage.CoverageService;
 import com.android.server.devicepolicy.DevicePolicyManagerService;
@@ -302,6 +303,10 @@
             "com.android.server.blob.BlobStoreManagerService";
     private static final String ROLLBACK_MANAGER_SERVICE_CLASS =
             "com.android.server.rollback.RollbackManagerService";
+    private static final String CONNECTIVITY_SERVICE_INITIALIZER_CLASS =
+            "com.android.server.ConnectivityServiceInitializer";
+    private static final String IP_CONNECTIVITY_METRICS_CLASS =
+            "com.android.server.connectivity.IpConnectivityMetrics";
 
     private static final String TETHERING_CONNECTOR_CLASS = "android.net.ITetheringConnector";
 
@@ -1013,9 +1018,10 @@
         IStorageManager storageManager = null;
         NetworkManagementService networkManagement = null;
         IpSecService ipSecService = null;
+        VcnManagementService vcnManagement = null;
         NetworkStatsService networkStats = null;
         NetworkPolicyManagerService networkPolicy = null;
-        ConnectivityService connectivity = null;
+        IConnectivityManager connectivity = null;
         NsdService serviceDiscovery = null;
         WindowManagerService wm = null;
         SerialService serial = null;
@@ -1205,7 +1211,7 @@
             }
 
             t.traceBegin("IpConnectivityMetrics");
-            mSystemServiceManager.startService(IpConnectivityMetrics.class);
+            mSystemServiceManager.startService(IP_CONNECTIVITY_METRICS_CLASS);
             t.traceEnd();
 
             t.traceBegin("NetworkWatchlistService");
@@ -1220,7 +1226,7 @@
             mSystemServiceManager.startService(IorapForwardingService.class);
             t.traceEnd();
 
-            if (Build.IS_DEBUGGABLE) {
+            if (Build.IS_DEBUGGABLE && ProfcollectForwardingService.enabled()) {
                 t.traceBegin("ProfcollectForwardingService");
                 mSystemServiceManager.startService(ProfcollectForwardingService.class);
                 t.traceEnd();
@@ -1448,6 +1454,15 @@
             }
             t.traceEnd();
 
+            t.traceBegin("StartVcnManagementService");
+            try {
+                vcnManagement = VcnManagementService.create(context);
+                ServiceManager.addService(Context.VCN_MANAGEMENT_SERVICE, vcnManagement);
+            } catch (Throwable e) {
+                reportWtf("starting VCN Management Service", e);
+            }
+            t.traceEnd();
+
             t.traceBegin("StartTextServicesManager");
             mSystemServiceManager.startService(TextServicesManagerService.Lifecycle.class);
             t.traceEnd();
@@ -1531,16 +1546,15 @@
             }
 
             t.traceBegin("StartConnectivityService");
-            try {
-                connectivity = new ConnectivityService(
-                        context, networkManagement, networkStats, networkPolicy);
-                ServiceManager.addService(Context.CONNECTIVITY_SERVICE, connectivity,
-                        /* allowIsolated= */ false,
-                        DUMP_FLAG_PRIORITY_HIGH | DUMP_FLAG_PRIORITY_NORMAL);
-                networkPolicy.bindConnectivityManager(connectivity);
-            } catch (Throwable e) {
-                reportWtf("starting Connectivity Service", e);
-            }
+            // This has to be called after NetworkManagementService, NetworkStatsService
+            // and NetworkPolicyManager because ConnectivityService needs to take these
+            // services to initialize.
+            // TODO: Dynamically load service-connectivity.jar by using startServiceFromJar.
+            mSystemServiceManager.startService(CONNECTIVITY_SERVICE_INITIALIZER_CLASS);
+            connectivity = IConnectivityManager.Stub.asInterface(
+                    ServiceManager.getService(Context.CONNECTIVITY_SERVICE));
+            // TODO: Use ConnectivityManager instead of ConnectivityService.
+            networkPolicy.bindConnectivityManager(connectivity);
             t.traceEnd();
 
             t.traceBegin("StartNsdService");
@@ -2217,7 +2231,6 @@
         final NetworkManagementService networkManagementF = networkManagement;
         final NetworkStatsService networkStatsF = networkStats;
         final NetworkPolicyManagerService networkPolicyF = networkPolicy;
-        final ConnectivityService connectivityF = connectivity;
         final CountryDetectorService countryDetectorF = countryDetector;
         final NetworkTimeUpdateService networkTimeUpdaterF = networkTimeUpdater;
         final InputManagerService inputManagerF = inputManager;
@@ -2225,7 +2238,10 @@
         final MediaRouterService mediaRouterF = mediaRouter;
         final MmsServiceBroker mmsServiceF = mmsService;
         final IpSecService ipSecServiceF = ipSecService;
+        final VcnManagementService vcnManagementF = vcnManagement;
         final WindowManagerService windowManagerF = wm;
+        final ConnectivityManager connectivityF = (ConnectivityManager)
+                context.getSystemService(Context.CONNECTIVITY_SERVICE);
 
         // We now tell the activity manager it is okay to run third party
         // code.  It will call back into us once it has gotten to the state
@@ -2311,6 +2327,15 @@
                 reportWtf("making IpSec Service ready", e);
             }
             t.traceEnd();
+            t.traceBegin("MakeVcnManagementServiceReady");
+            try {
+                if (vcnManagementF != null) {
+                    vcnManagementF.systemReady();
+                }
+            } catch (Throwable e) {
+                reportWtf("making VcnManagementService ready", e);
+            }
+            t.traceEnd();
             t.traceBegin("MakeNetworkStatsServiceReady");
             try {
                 if (networkStatsF != null) {
diff --git a/services/net/Android.bp b/services/net/Android.bp
index afea1a0..29bf374 100644
--- a/services/net/Android.bp
+++ b/services/net/Android.bp
@@ -22,13 +22,14 @@
 
 // Version of services.net for usage by the wifi mainline module.
 // Note: This is compiled against module_current.
-// TODO(b/145825329): This should be moved to networkstack-client,
+// TODO(b/172457099): This should be moved to networkstack-client,
 // with dependencies moved to frameworks/libs/net right.
 java_library {
     name: "services.net-module-wifi",
     srcs: [
         ":framework-services-net-module-wifi-shared-srcs",
         ":net-module-utils-srcs",
+        ":net-utils-services-common-srcs",
         "java/android/net/ip/IpClientCallbacks.java",
         "java/android/net/ip/IpClientManager.java",
         "java/android/net/ip/IpClientUtil.java",
@@ -39,6 +40,7 @@
         "java/android/net/TcpKeepalivePacketData.java",
     ],
     sdk_version: "module_current",
+    min_sdk_version: "30",
     libs: [
         "unsupportedappusage",
         "framework-wifi-util-lib",
@@ -49,7 +51,6 @@
         "netd_aidl_interface-V3-java",
         "netlink-client",
         "networkstack-client",
-        "net-utils-services-common",
     ],
     apex_available: [
         "com.android.wifi",
@@ -66,5 +67,8 @@
         ":framework-annotations",
         "java/android/net/util/NetworkConstants.java",
     ],
-    visibility: ["//frameworks/base/packages/Tethering"],
+    visibility: [
+        "//frameworks/base/packages/Tethering",
+        "//packages/modules/Connectivity/Tethering"
+    ],
 }
diff --git a/services/net/TEST_MAPPING b/services/net/TEST_MAPPING
new file mode 100644
index 0000000..7025dd1
--- /dev/null
+++ b/services/net/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "imports": [
+    {
+      "path": "frameworks/base/core/java/android/net"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/services/net/java/android/net/TcpKeepalivePacketData.java b/services/net/java/android/net/TcpKeepalivePacketData.java
index c0c386b..4875c7c 100644
--- a/services/net/java/android/net/TcpKeepalivePacketData.java
+++ b/services/net/java/android/net/TcpKeepalivePacketData.java
@@ -19,11 +19,12 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
-import android.net.util.IpUtils;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.system.OsConstants;
 
+import com.android.net.module.util.IpUtils;
+
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.nio.ByteBuffer;
diff --git a/services/people/java/com/android/server/people/data/AbstractProtoDiskReadWriter.java b/services/people/java/com/android/server/people/data/AbstractProtoDiskReadWriter.java
index c03a5a7..e4daddc 100644
--- a/services/people/java/com/android/server/people/data/AbstractProtoDiskReadWriter.java
+++ b/services/people/java/com/android/server/people/data/AbstractProtoDiskReadWriter.java
@@ -185,22 +185,23 @@
      * is useful for when device is powering off.
      */
     @MainThread
-    synchronized void saveImmediately(@NonNull String fileName, @NonNull T data) {
-        mScheduledFileDataMap.put(fileName, data);
+    void saveImmediately(@NonNull String fileName, @NonNull T data) {
+        synchronized (this) {
+            mScheduledFileDataMap.put(fileName, data);
+        }
         triggerScheduledFlushEarly();
     }
 
     @MainThread
-    private synchronized void triggerScheduledFlushEarly() {
-        if (mScheduledFileDataMap.isEmpty() || mScheduledExecutorService.isShutdown()) {
-            return;
-        }
-        // Cancel existing future.
-        if (mScheduledFuture != null) {
-
-            // We shouldn't need to interrupt as this method and threaded task
-            // #flushScheduledData are both synchronized.
-            mScheduledFuture.cancel(true);
+    private void triggerScheduledFlushEarly() {
+        synchronized (this) {
+            if (mScheduledFileDataMap.isEmpty() || mScheduledExecutorService.isShutdown()) {
+                return;
+            }
+            // Cancel existing future.
+            if (mScheduledFuture != null) {
+                mScheduledFuture.cancel(true);
+            }
         }
 
         // Submit flush and blocks until it completes. Blocking will prevent the device from
diff --git a/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java b/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java
index ddd1f75..0d878b4 100644
--- a/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java
+++ b/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java
@@ -28,7 +28,9 @@
 import android.os.Looper;
 import android.os.RemoteException;
 import android.os.ServiceManager;
-import android.os.SystemProperties;
+import android.os.UpdateEngine;
+import android.os.UpdateEngineCallback;
+import android.provider.DeviceConfig;
 import android.util.Log;
 
 import com.android.server.IoThread;
@@ -66,6 +68,14 @@
         sSelfService = this;
     }
 
+    /**
+     * Check whether profcollect is enabled through device config.
+     */
+    public static boolean enabled() {
+        return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PROFCOLLECT_NATIVE_BOOT, "enabled",
+            false);
+    }
+
     @Override
     public void onStart() {
         if (DEBUG) {
@@ -198,6 +208,7 @@
     // Event observers
     private void registerObservers() {
         registerAppLaunchObserver();
+        registerOTAObserver();
     }
 
     private final AppLaunchObserver mAppLaunchObserver = new AppLaunchObserver();
@@ -215,8 +226,8 @@
         }
 
         // Sample for a fraction of app launches.
-        int traceFrequency =
-                SystemProperties.getInt("persist.profcollectd.applaunch_trace_freq", 2);
+        int traceFrequency = DeviceConfig.getInt(DeviceConfig.NAMESPACE_PROFCOLLECT_NATIVE_BOOT,
+                "applaunch_trace_freq", 2);
         int randomNum = ThreadLocalRandom.current().nextInt(100);
         if (randomNum < traceFrequency) {
             try {
@@ -261,4 +272,33 @@
             // Ignored
         }
     }
+
+    private void registerOTAObserver() {
+        UpdateEngine updateEngine = new UpdateEngine();
+        updateEngine.bind(new UpdateEngineCallback() {
+            @Override
+            public void onStatusUpdate(int status, float percent) {
+                if (status == UpdateEngine.UpdateStatusConstants.UPDATED_NEED_REBOOT) {
+                    packProfileReport();
+                }
+            }
+
+            @Override
+            public void onPayloadApplicationComplete(int errorCode) {
+                // Ignored
+            }
+        });
+    }
+
+    private void packProfileReport() {
+        if (mIProfcollect == null) {
+            return;
+        }
+
+        try {
+            mIProfcollect.CreateProfileReport();
+        } catch (RemoteException e) {
+            Log.e(LOG_TAG, e.getMessage());
+        }
+    }
 }
diff --git a/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java b/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java
index ec56e1e..bd37e58 100644
--- a/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java
+++ b/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java
@@ -41,6 +41,7 @@
 import static com.android.server.backup.testing.Utils.transferStreamedData;
 
 import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
@@ -2814,8 +2815,8 @@
     }
 
     private static IterableSubject assertDirectory(Path directory) throws IOException {
-        return assertThat(oneTimeIterable(Files.newDirectoryStream(directory).iterator()))
-                .named("directory " + directory);
+        return assertWithMessage("directory " + directory).that(
+                oneTimeIterable(Files.newDirectoryStream(directory).iterator()));
     }
 
     private static void assertJournalDoesNotContain(
diff --git a/services/robotests/backup/src/com/android/server/backup/testing/TestUtils.java b/services/robotests/backup/src/com/android/server/backup/testing/TestUtils.java
index 3fe1f3f..3114a75 100644
--- a/services/robotests/backup/src/com/android/server/backup/testing/TestUtils.java
+++ b/services/robotests/backup/src/com/android/server/backup/testing/TestUtils.java
@@ -17,6 +17,7 @@
 package com.android.server.backup.testing;
 
 import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
 
 import static org.robolectric.Shadows.shadowOf;
 
@@ -95,8 +96,8 @@
      * logcat before that.
      */
     public static void assertLogcatAtMost(String tag, int level) {
-        assertThat(ShadowLog.getLogsForTag(tag).stream().allMatch(logItem -> logItem.type <= level))
-                .named("All logs <= " + level)
+        assertWithMessage("All logs <= " + level).that(
+                ShadowLog.getLogsForTag(tag).stream().allMatch(logItem -> logItem.type <= level))
                 .isTrue();
     }
 
@@ -105,8 +106,8 @@
      * logcat before that.
      */
     public static void assertLogcatAtLeast(String tag, int level) {
-        assertThat(ShadowLog.getLogsForTag(tag).stream().anyMatch(logItem -> logItem.type >= level))
-                .named("Any log >= " + level)
+        assertWithMessage("Any log >= " + level).that(
+                ShadowLog.getLogsForTag(tag).stream().anyMatch(logItem -> logItem.type >= level))
                 .isTrue();
     }
 
@@ -121,11 +122,10 @@
      * that uses logcat before that.
      */
     public static void assertLogcat(String tag, int... logs) {
-        assertThat(
+        assertWithMessage("Log items (specified per level)").that(
                         ShadowLog.getLogsForTag(tag).stream()
                                 .map(logItem -> logItem.type)
                                 .collect(toSet()))
-                .named("Log items (specified per level)")
                 .containsExactly(IntStream.of(logs).boxed().toArray());
     }
 
@@ -135,15 +135,13 @@
 
     /** Declare shadow {@link ShadowEventLog} to use this. */
     public static void assertEventLogged(int tag, Object... values) {
-        assertThat(ShadowEventLog.getEntries())
-                .named("Event logs")
+        assertWithMessage("Event logs").that(ShadowEventLog.getEntries())
                 .contains(new ShadowEventLog.Entry(tag, Arrays.asList(values)));
     }
 
     /** Declare shadow {@link ShadowEventLog} to use this. */
     public static void assertEventNotLogged(int tag, Object... values) {
-        assertThat(ShadowEventLog.getEntries())
-                .named("Event logs")
+        assertWithMessage("Event logs").that(ShadowEventLog.getEntries())
                 .doesNotContain(new ShadowEventLog.Entry(tag, Arrays.asList(values)));
     }
 
diff --git a/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java b/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java
index fde40aa..2a267c4 100644
--- a/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java
+++ b/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java
@@ -84,6 +84,7 @@
 import android.os.IBinder;
 import android.os.PowerManagerInternal;
 import android.os.SystemClock;
+import android.os.UserHandle;
 import android.platform.test.annotations.Presubmit;
 import android.util.ArrayMap;
 import android.util.ArraySet;
@@ -130,6 +131,7 @@
     private static final int MOCKAPP5_UID = MOCKAPP_UID + 4;
     private static final String MOCKAPP5_PROCESSNAME = "test #5";
     private static final String MOCKAPP5_PACKAGENAME = "com.android.test.test5";
+    private static final int MOCKAPP2_UID_OTHER = MOCKAPP2_UID + UserHandle.PER_USER_RANGE;
     private static Context sContext;
     private static PackageManagerInternal sPackageManagerInternal;
     private static ActivityManagerService sService;
@@ -168,6 +170,8 @@
                 mock(SparseArray.class));
         setFieldValue(ActivityManagerService.class, sService, "mOomAdjProfiler",
                 mock(OomAdjProfiler.class));
+        setFieldValue(ActivityManagerService.class, sService, "mUserController",
+                mock(UserController.class));
         doReturn(new ActivityManagerService.ProcessChangeItem()).when(sService)
                 .enqueueProcessChangeItemLocked(anyInt(), anyInt());
         sService.mOomAdjuster = new OomAdjuster(sService, sService.mProcessList,
@@ -1621,6 +1625,117 @@
         assertEquals(SERVICE_ADJ, app.setAdj);
     }
 
+    @SuppressWarnings("GuardedBy")
+    @Test
+    public void testUpdateOomAdj_DoAll_Service_KeepWarmingList() {
+        final ProcessRecord app = spy(makeDefaultProcessRecord(MOCKAPP_PID, MOCKAPP_UID,
+                MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
+        final ProcessRecord app2 = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID_OTHER,
+                MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
+        final int userOwner = 0;
+        final int userOther = 1;
+        final int cachedAdj1 = CACHED_APP_MIN_ADJ + ProcessList.CACHED_APP_IMPORTANCE_LEVELS;
+        final int cachedAdj2 = cachedAdj1 + ProcessList.CACHED_APP_IMPORTANCE_LEVELS * 2;
+        doReturn(userOwner).when(sService.mUserController).getCurrentUserId();
+
+        final ArrayList<ProcessRecord> lru = sService.mProcessList.mLruProcesses;
+        lru.clear();
+        lru.add(app2);
+        lru.add(app);
+
+        final ComponentName cn = ComponentName.unflattenFromString(
+                MOCKAPP_PACKAGENAME + "/.TestService");
+        final ComponentName cn2 = ComponentName.unflattenFromString(
+                MOCKAPP2_PACKAGENAME + "/.TestService");
+        final long now = SystemClock.uptimeMillis();
+
+        sService.mConstants.KEEP_WARMING_SERVICES.clear();
+        final ServiceInfo si = mock(ServiceInfo.class);
+        si.applicationInfo = mock(ApplicationInfo.class);
+        ServiceRecord s = spy(new ServiceRecord(sService, null, cn, cn, null, 0, null,
+                si, false, null));
+        doReturn(new ArrayMap<IBinder, ArrayList<ConnectionRecord>>()).when(s).getConnections();
+        s.startRequested = true;
+        s.lastActivity = now;
+
+        app.setCached(false);
+        app.startService(s);
+        app.hasShownUi = true;
+
+        final ServiceInfo si2 = mock(ServiceInfo.class);
+        si2.applicationInfo = mock(ApplicationInfo.class);
+        si2.applicationInfo.uid = MOCKAPP2_UID_OTHER;
+        ServiceRecord s2 = spy(new ServiceRecord(sService, null, cn2, cn2, null, 0, null,
+                si2, false, null));
+        doReturn(new ArrayMap<IBinder, ArrayList<ConnectionRecord>>()).when(s2).getConnections();
+        s2.startRequested = true;
+        s2.lastActivity = now - sService.mConstants.MAX_SERVICE_INACTIVITY - 1;
+
+        app2.setCached(false);
+        app2.startService(s2);
+        app2.hasShownUi = false;
+
+        sService.mWakefulness = PowerManagerInternal.WAKEFULNESS_AWAKE;
+        sService.mOomAdjuster.updateOomAdjLocked(OomAdjuster.OOM_ADJ_REASON_NONE);
+
+        assertProcStates(app, true, PROCESS_STATE_SERVICE, cachedAdj1, "cch-started-ui-services");
+        assertProcStates(app2, true, PROCESS_STATE_SERVICE, cachedAdj2, "cch-started-services");
+
+        app.setProcState = PROCESS_STATE_NONEXISTENT;
+        app.adjType = null;
+        app.setAdj = UNKNOWN_ADJ;
+        app.hasShownUi = false;
+        sService.mOomAdjuster.updateOomAdjLocked(OomAdjuster.OOM_ADJ_REASON_NONE);
+
+        assertProcStates(app, false, PROCESS_STATE_SERVICE, SERVICE_ADJ, "started-services");
+
+        app.setCached(false);
+        app.setProcState = PROCESS_STATE_NONEXISTENT;
+        app.adjType = null;
+        app.setAdj = UNKNOWN_ADJ;
+        s.lastActivity = now - sService.mConstants.MAX_SERVICE_INACTIVITY - 1;
+        sService.mOomAdjuster.updateOomAdjLocked(OomAdjuster.OOM_ADJ_REASON_NONE);
+
+        assertProcStates(app, true, PROCESS_STATE_SERVICE, cachedAdj1, "cch-started-services");
+
+        app.stopService(s);
+        app.setProcState = PROCESS_STATE_NONEXISTENT;
+        app.adjType = null;
+        app.setAdj = UNKNOWN_ADJ;
+        app.hasShownUi = true;
+        sService.mConstants.KEEP_WARMING_SERVICES.add(cn);
+        sService.mConstants.KEEP_WARMING_SERVICES.add(cn2);
+        s = spy(new ServiceRecord(sService, null, cn, cn, null, 0, null,
+                si, false, null));
+        doReturn(new ArrayMap<IBinder, ArrayList<ConnectionRecord>>()).when(s).getConnections();
+        s.startRequested = true;
+        s.lastActivity = now;
+
+        app.startService(s);
+        sService.mOomAdjuster.updateOomAdjLocked(OomAdjuster.OOM_ADJ_REASON_NONE);
+
+        assertProcStates(app, false, PROCESS_STATE_SERVICE, SERVICE_ADJ, "started-services");
+        assertProcStates(app2, true, PROCESS_STATE_SERVICE, cachedAdj1, "cch-started-services");
+
+        app.setCached(true);
+        app.setProcState = PROCESS_STATE_NONEXISTENT;
+        app.adjType = null;
+        app.setAdj = UNKNOWN_ADJ;
+        app.hasShownUi = false;
+        s.lastActivity = now - sService.mConstants.MAX_SERVICE_INACTIVITY - 1;
+        sService.mOomAdjuster.updateOomAdjLocked(OomAdjuster.OOM_ADJ_REASON_NONE);
+
+        assertProcStates(app, false, PROCESS_STATE_SERVICE, SERVICE_ADJ, "started-services");
+        assertProcStates(app2, true, PROCESS_STATE_SERVICE, cachedAdj1, "cch-started-services");
+
+        doReturn(userOther).when(sService.mUserController).getCurrentUserId();
+        sService.mOomAdjuster.handleUserSwitchedLocked();
+
+        sService.mOomAdjuster.updateOomAdjLocked(OomAdjuster.OOM_ADJ_REASON_NONE);
+        assertProcStates(app, true, PROCESS_STATE_SERVICE, cachedAdj1, "cch-started-services");
+        assertProcStates(app2, false, PROCESS_STATE_SERVICE, SERVICE_ADJ, "started-services");
+    }
+
     private ProcessRecord makeDefaultProcessRecord(int pid, int uid, String processName,
             String packageName, boolean hasShownUi) {
         long now = SystemClock.uptimeMillis();
@@ -1747,4 +1862,12 @@
         assertEquals(expectedAdj, app.setAdj);
         assertEquals(expectedSchedGroup, app.setSchedGroup);
     }
+
+    private void assertProcStates(ProcessRecord app, boolean expectedCached,
+            int expectedProcState, int expectedAdj, String expectedAdjType) {
+        assertEquals(expectedCached, app.isCached());
+        assertEquals(expectedProcState, app.setProcState);
+        assertEquals(expectedAdj, app.setAdj);
+        assertEquals(expectedAdjType, app.adjType);
+    }
 }
diff --git a/services/tests/mockingservicestests/src/com/android/server/location/LocationFudgerTest.java b/services/tests/mockingservicestests/src/com/android/server/location/LocationFudgerTest.java
index a0f48c6..d67eddd 100644
--- a/services/tests/mockingservicestests/src/com/android/server/location/LocationFudgerTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/location/LocationFudgerTest.java
@@ -79,7 +79,7 @@
             Location coarse = mFudger.createCoarse(fine);
 
             assertThat(coarse).isNotNull();
-            assertThat(coarse).isNotSameAs(fine);
+            assertThat(coarse).isNotSameInstanceAs(fine);
             assertThat(coarse.hasBearing()).isFalse();
             assertThat(coarse.hasSpeed()).isFalse();
             assertThat(coarse.hasAltitude()).isFalse();
diff --git a/services/tests/servicestests/src/com/android/server/BluetoothAirplaneModeListenerTest.java b/services/tests/servicestests/src/com/android/server/BluetoothAirplaneModeListenerTest.java
index 968a402..3ace3f4 100644
--- a/services/tests/servicestests/src/com/android/server/BluetoothAirplaneModeListenerTest.java
+++ b/services/tests/servicestests/src/com/android/server/BluetoothAirplaneModeListenerTest.java
@@ -27,8 +27,6 @@
 import androidx.test.filters.MediumTest;
 import androidx.test.runner.AndroidJUnit4;
 
-import com.android.server.BluetoothAirplaneModeListener.AirplaneModeHelper;
-
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -41,7 +39,7 @@
     private Context mContext;
     private BluetoothAirplaneModeListener mBluetoothAirplaneModeListener;
     private BluetoothAdapter mBluetoothAdapter;
-    private AirplaneModeHelper mHelper;
+    private BluetoothModeChangeHelper mHelper;
 
     @Mock BluetoothManagerService mBluetoothManagerService;
 
@@ -49,7 +47,7 @@
     public void setUp() throws Exception {
         mContext = InstrumentationRegistry.getTargetContext();
 
-        mHelper = mock(AirplaneModeHelper.class);
+        mHelper = mock(BluetoothModeChangeHelper.class);
         when(mHelper.getSettingsInt(BluetoothAirplaneModeListener.TOAST_COUNT))
                 .thenReturn(BluetoothAirplaneModeListener.MAX_TOAST_COUNT);
         doNothing().when(mHelper).setSettingsInt(anyString(), anyInt());
diff --git a/services/tests/servicestests/src/com/android/server/compat/CompatConfigBuilder.java b/services/tests/servicestests/src/com/android/server/compat/CompatConfigBuilder.java
index 2cbe7be..870fe4a 100644
--- a/services/tests/servicestests/src/com/android/server/compat/CompatConfigBuilder.java
+++ b/services/tests/servicestests/src/com/android/server/compat/CompatConfigBuilder.java
@@ -39,58 +39,79 @@
         return new CompatConfigBuilder(buildClassifier, context);
     }
 
-    CompatConfigBuilder addTargetSdkChangeWithId(int sdk, long id) {
-        mChanges.add(new CompatChange(id, "", sdk, false, false, ""));
+    CompatConfigBuilder addEnableAfterSdkChangeWithId(int sdk, long id) {
+        mChanges.add(new CompatChange(id, "", sdk, -1, false, false, ""));
         return this;
     }
 
-    CompatConfigBuilder addTargetSdkDisabledChangeWithId(int sdk, long id) {
-        mChanges.add(new CompatChange(id, "", sdk, true, false, ""));
+    CompatConfigBuilder addEnableAfterSdkChangeWithIdAndName(int sdk, long id, String name) {
+        mChanges.add(new CompatChange(id, name, sdk, -1, false, false, ""));
         return this;
     }
 
-    CompatConfigBuilder addTargetSdkChangeWithIdAndName(int sdk, long id, String name) {
-        mChanges.add(new CompatChange(id, name, sdk, false, false, ""));
+    CompatConfigBuilder addEnableAfterSdkChangeWithIdDefaultDisabled(int sdk, long id) {
+        mChanges.add(new CompatChange(id, "", sdk, -1, true, false, ""));
         return this;
     }
 
-    CompatConfigBuilder addTargetSdkChangeWithIdAndDescription(int sdk, long id,
+    CompatConfigBuilder addEnableAfterSdkChangeWithIdAndDescription(int sdk, long id,
             String description) {
-        mChanges.add(new CompatChange(id, "", sdk, false, false, description));
+        mChanges.add(new CompatChange(id, "", sdk, -1, false, false, description));
+        return this;
+    }
+
+    CompatConfigBuilder addEnableSinceSdkChangeWithId(int sdk, long id) {
+        mChanges.add(new CompatChange(id, "", -1, sdk, false, false, ""));
+        return this;
+    }
+
+    CompatConfigBuilder addEnableSinceSdkChangeWithIdAndName(int sdk, long id, String name) {
+        mChanges.add(new CompatChange(id, name, -1, sdk, false, false, ""));
+        return this;
+    }
+
+    CompatConfigBuilder addEnableSinceSdkChangeWithIdDefaultDisabled(int sdk, long id) {
+        mChanges.add(new CompatChange(id, "", -1, sdk, true, false, ""));
+        return this;
+    }
+
+    CompatConfigBuilder addEnableSinceSdkChangeWithIdAndDescription(int sdk, long id,
+            String description) {
+        mChanges.add(new CompatChange(id, "", -1, sdk, false, false, description));
         return this;
     }
 
     CompatConfigBuilder addEnabledChangeWithId(long id) {
-        mChanges.add(new CompatChange(id, "", -1, false, false, ""));
+        mChanges.add(new CompatChange(id, "", -1, -1, false, false, ""));
         return this;
     }
 
     CompatConfigBuilder addEnabledChangeWithIdAndName(long id, String name) {
-        mChanges.add(new CompatChange(id, name, -1, false, false, ""));
+        mChanges.add(new CompatChange(id, name, -1, -1, false, false, ""));
         return this;
     }
     CompatConfigBuilder addEnabledChangeWithIdAndDescription(long id, String description) {
-        mChanges.add(new CompatChange(id, "", -1, false, false, description));
+        mChanges.add(new CompatChange(id, "", -1, -1, false, false, description));
         return this;
     }
 
     CompatConfigBuilder addDisabledChangeWithId(long id) {
-        mChanges.add(new CompatChange(id, "", -1, true, false, ""));
+        mChanges.add(new CompatChange(id, "", -1, -1, true, false, ""));
         return this;
     }
 
     CompatConfigBuilder addDisabledChangeWithIdAndName(long id, String name) {
-        mChanges.add(new CompatChange(id, name, -1, true, false, ""));
+        mChanges.add(new CompatChange(id, name, -1, -1, true, false, ""));
         return this;
     }
 
     CompatConfigBuilder addDisabledChangeWithIdAndDescription(long id, String description) {
-        mChanges.add(new CompatChange(id, "", -1, true, false, description));
+        mChanges.add(new CompatChange(id, "", -1, -1, true, false, description));
         return this;
     }
 
     CompatConfigBuilder addLoggingOnlyChangeWithId(long id) {
-        mChanges.add(new CompatChange(id, "", -1, false, true, ""));
+        mChanges.add(new CompatChange(id, "", -1, -1, false, true, ""));
         return this;
     }
 
diff --git a/services/tests/servicestests/src/com/android/server/compat/CompatConfigTest.java b/services/tests/servicestests/src/com/android/server/compat/CompatConfigTest.java
index 8be9213..e588370 100644
--- a/services/tests/servicestests/src/com/android/server/compat/CompatConfigTest.java
+++ b/services/tests/servicestests/src/com/android/server/compat/CompatConfigTest.java
@@ -98,7 +98,7 @@
     @Test
     public void testTargetSdkChangeDisabled() throws Exception {
         CompatConfig compatConfig = CompatConfigBuilder.create(mBuildClassifier, mContext)
-                .addTargetSdkChangeWithId(2, 1234L)
+                .addEnableAfterSdkChangeWithId(2, 1234L)
                 .build();
 
         assertThat(compatConfig.isChangeEnabled(1234L,
@@ -109,7 +109,7 @@
     @Test
     public void testTargetSdkChangeEnabled() throws Exception {
         CompatConfig compatConfig = CompatConfigBuilder.create(mBuildClassifier, mContext)
-                .addTargetSdkChangeWithId(2, 1234L)
+                .addEnableAfterSdkChangeWithId(2, 1234L)
                 .build();
 
         assertThat(compatConfig.isChangeEnabled(1234L,
@@ -119,7 +119,7 @@
     @Test
     public void testDisabledOverrideTargetSdkChange() throws Exception {
         CompatConfig compatConfig = CompatConfigBuilder.create(mBuildClassifier, mContext)
-                .addTargetSdkDisabledChangeWithId(2, 1234L)
+                .addEnableAfterSdkChangeWithIdDefaultDisabled(2, 1234L)
                 .build();
 
         assertThat(compatConfig.isChangeEnabled(1234L,
@@ -293,8 +293,8 @@
         CompatConfig compatConfig = CompatConfigBuilder.create(mBuildClassifier, mContext)
                 .addEnabledChangeWithId(1L)
                 .addDisabledChangeWithId(2L)
-                .addTargetSdkChangeWithId(3, 3L)
-                .addTargetSdkChangeWithId(4, 4L)
+                .addEnableSinceSdkChangeWithId(3, 3L)
+                .addEnableSinceSdkChangeWithId(4, 4L)
                 .build();
         ApplicationInfo applicationInfo = ApplicationInfoBuilder.create()
                 .withPackageName("foo.bar")
@@ -314,8 +314,8 @@
         CompatConfig compatConfig = CompatConfigBuilder.create(mBuildClassifier, mContext)
                 .addEnabledChangeWithId(1L)
                 .addDisabledChangeWithId(2L)
-                .addTargetSdkChangeWithId(3, 3L)
-                .addTargetSdkChangeWithId(4, 4L)
+                .addEnableSinceSdkChangeWithId(3, 3L)
+                .addEnableSinceSdkChangeWithId(4, 4L)
                 .build();
         ApplicationInfo applicationInfo = ApplicationInfoBuilder.create()
                 .withPackageName("foo.bar")
diff --git a/services/tests/servicestests/src/com/android/server/compat/OverrideValidatorImplTest.java b/services/tests/servicestests/src/com/android/server/compat/OverrideValidatorImplTest.java
index d45589d..c53b29a 100644
--- a/services/tests/servicestests/src/com/android/server/compat/OverrideValidatorImplTest.java
+++ b/services/tests/servicestests/src/com/android/server/compat/OverrideValidatorImplTest.java
@@ -87,9 +87,9 @@
     public void getOverrideAllowedState_debugBuildAnyChangeDebugApp_allowOverride()
             throws Exception {
         CompatConfig config = CompatConfigBuilder.create(debuggableBuild(), mContext)
-                    .addTargetSdkChangeWithId(TARGET_SDK_BEFORE, 1)
-                    .addTargetSdkChangeWithId(TARGET_SDK, 2)
-                    .addTargetSdkChangeWithId(TARGET_SDK_AFTER, 3)
+                    .addEnableAfterSdkChangeWithId(TARGET_SDK_BEFORE, 1)
+                    .addEnableAfterSdkChangeWithId(TARGET_SDK, 2)
+                    .addEnableAfterSdkChangeWithId(TARGET_SDK_AFTER, 3)
                     .addEnabledChangeWithId(4)
                     .addDisabledChangeWithId(5)
                     .addLoggingOnlyChangeWithId(6).build();
@@ -131,9 +131,9 @@
     public void getOverrideAllowedState_debugBuildAnyChangeReleaseApp_allowOverride()
             throws Exception {
         CompatConfig config = CompatConfigBuilder.create(debuggableBuild(), mContext)
-                    .addTargetSdkChangeWithId(TARGET_SDK_BEFORE, 1)
-                    .addTargetSdkChangeWithId(TARGET_SDK, 2)
-                    .addTargetSdkChangeWithId(TARGET_SDK_AFTER, 3)
+                    .addEnableAfterSdkChangeWithId(TARGET_SDK_BEFORE, 1)
+                    .addEnableAfterSdkChangeWithId(TARGET_SDK, 2)
+                    .addEnableAfterSdkChangeWithId(TARGET_SDK_AFTER, 3)
                     .addEnabledChangeWithId(4)
                     .addDisabledChangeWithId(5)
                     .addLoggingOnlyChangeWithId(6).build();
@@ -174,9 +174,9 @@
     public void getOverrideAllowedState_betaBuildTargetSdkChangeDebugApp_allowOverride()
             throws Exception {
         CompatConfig config = CompatConfigBuilder.create(betaBuild(), mContext)
-                        .addTargetSdkChangeWithId(TARGET_SDK_BEFORE, 1)
-                        .addTargetSdkChangeWithId(TARGET_SDK, 2)
-                        .addTargetSdkChangeWithId(TARGET_SDK_AFTER, 3)
+                        .addEnableAfterSdkChangeWithId(TARGET_SDK_BEFORE, 1)
+                        .addEnableAfterSdkChangeWithId(TARGET_SDK, 2)
+                        .addEnableAfterSdkChangeWithId(TARGET_SDK_AFTER, 3)
                         .addDisabledChangeWithId(4).build();
         IOverrideValidator overrideValidator = config.getOverrideValidator();
         when(mPackageManager.getApplicationInfo(eq(PACKAGE_NAME), anyInt()))
@@ -245,9 +245,9 @@
     public void getOverrideAllowedState_betaBuildAnyChangeReleaseApp_rejectOverride()
             throws Exception {
         CompatConfig config = CompatConfigBuilder.create(betaBuild(), mContext)
-                        .addTargetSdkChangeWithId(TARGET_SDK_BEFORE, 1)
-                        .addTargetSdkChangeWithId(TARGET_SDK, 2)
-                        .addTargetSdkChangeWithId(TARGET_SDK_AFTER, 3)
+                        .addEnableAfterSdkChangeWithId(TARGET_SDK_BEFORE, 1)
+                        .addEnableAfterSdkChangeWithId(TARGET_SDK, 2)
+                        .addEnableAfterSdkChangeWithId(TARGET_SDK_AFTER, 3)
                         .addEnabledChangeWithId(4)
                         .addDisabledChangeWithId(5)
                         .addLoggingOnlyChangeWithId(6).build();
@@ -288,8 +288,8 @@
     public void getOverrideAllowedState_finalBuildTargetSdkChangeDebugAppOptin_allowOverride()
             throws Exception {
         CompatConfig config = CompatConfigBuilder.create(finalBuild(), mContext)
-                        .addTargetSdkChangeWithId(TARGET_SDK_AFTER, 1)
-                        .addTargetSdkChangeWithId(TARGET_SDK, 2).build();
+                        .addEnableAfterSdkChangeWithId(TARGET_SDK_AFTER, 1)
+                        .addEnableAfterSdkChangeWithId(TARGET_SDK, 2).build();
         IOverrideValidator overrideValidator = config.getOverrideValidator();
         when(mPackageManager.getApplicationInfo(eq(PACKAGE_NAME), anyInt()))
                 .thenReturn(ApplicationInfoBuilder.create()
@@ -313,7 +313,7 @@
     public void getOverrideAllowedState_finalBuildTargetSdkChangeDebugAppOptout_rejectOverride()
             throws Exception {
         CompatConfig config = CompatConfigBuilder.create(finalBuild(), mContext)
-                        .addTargetSdkChangeWithId(TARGET_SDK_BEFORE, 1).build();
+                        .addEnableAfterSdkChangeWithId(TARGET_SDK_BEFORE, 1).build();
         IOverrideValidator overrideValidator = config.getOverrideValidator();
         when(mPackageManager.getApplicationInfo(eq(PACKAGE_NAME), anyInt()))
                 .thenReturn(ApplicationInfoBuilder.create()
@@ -371,9 +371,9 @@
     public void getOverrideAllowedState_finalBuildAnyChangeReleaseApp_rejectOverride()
             throws Exception {
         CompatConfig config = CompatConfigBuilder.create(finalBuild(), mContext)
-                        .addTargetSdkChangeWithId(TARGET_SDK_BEFORE, 1)
-                        .addTargetSdkChangeWithId(TARGET_SDK, 2)
-                        .addTargetSdkChangeWithId(TARGET_SDK_AFTER, 3)
+                        .addEnableAfterSdkChangeWithId(TARGET_SDK_BEFORE, 1)
+                        .addEnableAfterSdkChangeWithId(TARGET_SDK, 2)
+                        .addEnableAfterSdkChangeWithId(TARGET_SDK_AFTER, 3)
                         .addEnabledChangeWithId(4)
                         .addDisabledChangeWithId(5)
                         .addLoggingOnlyChangeWithId(6).build();
diff --git a/services/tests/servicestests/src/com/android/server/compat/PlatformCompatTest.java b/services/tests/servicestests/src/com/android/server/compat/PlatformCompatTest.java
index cef02ff..64014ba 100644
--- a/services/tests/servicestests/src/com/android/server/compat/PlatformCompatTest.java
+++ b/services/tests/servicestests/src/com/android/server/compat/PlatformCompatTest.java
@@ -84,22 +84,22 @@
         mCompatConfig = CompatConfigBuilder.create(mBuildClassifier, mContext)
                 .addEnabledChangeWithId(1L)
                 .addDisabledChangeWithIdAndName(2L, "change2")
-                .addTargetSdkChangeWithIdAndDescription(Build.VERSION_CODES.O, 3L, "description")
-                .addTargetSdkChangeWithId(Build.VERSION_CODES.P, 4L)
-                .addTargetSdkChangeWithId(Build.VERSION_CODES.Q, 5L)
-                .addTargetSdkChangeWithId(Build.VERSION_CODES.R, 6L)
+                .addEnableAfterSdkChangeWithIdAndDescription(Build.VERSION_CODES.O, 3L, "desc")
+                .addEnableAfterSdkChangeWithId(Build.VERSION_CODES.P, 4L)
+                .addEnableAfterSdkChangeWithId(Build.VERSION_CODES.Q, 5L)
+                .addEnableAfterSdkChangeWithId(Build.VERSION_CODES.R, 6L)
                 .addLoggingOnlyChangeWithId(7L)
                 .build();
         mPlatformCompat = new PlatformCompat(mContext, mCompatConfig);
         assertThat(mPlatformCompat.listAllChanges()).asList().containsExactly(
-                new CompatibilityChangeInfo(1L, "", -1, false, false, ""),
-                new CompatibilityChangeInfo(2L, "change2", -1, true, false, ""),
-                new CompatibilityChangeInfo(3L, "", Build.VERSION_CODES.O, false, false,
-                        "description"),
-                new CompatibilityChangeInfo(4L, "", Build.VERSION_CODES.P, false, false, ""),
-                new CompatibilityChangeInfo(5L, "", Build.VERSION_CODES.Q, false, false, ""),
-                new CompatibilityChangeInfo(6L, "", Build.VERSION_CODES.R, false, false, ""),
-                new CompatibilityChangeInfo(7L, "", -1, false, true, ""));
+                new CompatibilityChangeInfo(1L, "", -1, -1, false, false, ""),
+                new CompatibilityChangeInfo(2L, "change2", -1, -1, true, false, ""),
+                new CompatibilityChangeInfo(3L, "", Build.VERSION_CODES.O, -1, false, false,
+                        "desc"),
+                new CompatibilityChangeInfo(4L, "", Build.VERSION_CODES.P, -1, false, false, ""),
+                new CompatibilityChangeInfo(5L, "", Build.VERSION_CODES.Q, -1, false, false, ""),
+                new CompatibilityChangeInfo(6L, "", Build.VERSION_CODES.R, -1, false, false, ""),
+                new CompatibilityChangeInfo(7L, "", -1, -1, false, true, ""));
     }
 
     @Test
@@ -107,18 +107,18 @@
         mCompatConfig = CompatConfigBuilder.create(mBuildClassifier, mContext)
                 .addEnabledChangeWithId(1L)
                 .addDisabledChangeWithIdAndName(2L, "change2")
-                .addTargetSdkChangeWithIdAndDescription(Build.VERSION_CODES.O, 3L, "description")
-                .addTargetSdkChangeWithId(Build.VERSION_CODES.P, 4L)
-                .addTargetSdkChangeWithId(Build.VERSION_CODES.Q, 5L)
-                .addTargetSdkChangeWithId(Build.VERSION_CODES.R, 6L)
+                .addEnableAfterSdkChangeWithIdAndDescription(Build.VERSION_CODES.O, 3L, "desc")
+                .addEnableAfterSdkChangeWithId(Build.VERSION_CODES.P, 4L)
+                .addEnableAfterSdkChangeWithId(Build.VERSION_CODES.Q, 5L)
+                .addEnableAfterSdkChangeWithId(Build.VERSION_CODES.R, 6L)
                 .addLoggingOnlyChangeWithId(7L)
                 .build();
         mPlatformCompat = new PlatformCompat(mContext, mCompatConfig);
         assertThat(mPlatformCompat.listUIChanges()).asList().containsExactly(
-                new CompatibilityChangeInfo(1L, "", -1, false, false, ""),
-                new CompatibilityChangeInfo(2L, "change2", -1, true, false, ""),
-                new CompatibilityChangeInfo(4L, "", Build.VERSION_CODES.P, false, false, ""),
-                new CompatibilityChangeInfo(5L, "", Build.VERSION_CODES.Q, false, false, ""));
+                new CompatibilityChangeInfo(1L, "", -1, -1, false, false, ""),
+                new CompatibilityChangeInfo(2L, "change2", -1, -1, true, false, ""),
+                new CompatibilityChangeInfo(4L, "", Build.VERSION_CODES.P, -1, false, false, ""),
+                new CompatibilityChangeInfo(5L, "", Build.VERSION_CODES.Q, -1, false, false, ""));
     }
 
     @Test
diff --git a/services/tests/servicestests/src/com/android/server/display/color/GlobalSaturationTintControllerTest.java b/services/tests/servicestests/src/com/android/server/display/color/GlobalSaturationTintControllerTest.java
index 7b88a0e..4f0cb32 100644
--- a/services/tests/servicestests/src/com/android/server/display/color/GlobalSaturationTintControllerTest.java
+++ b/services/tests/servicestests/src/com/android/server/display/color/GlobalSaturationTintControllerTest.java
@@ -32,9 +32,11 @@
     public void setAndGetMatrix() {
         final GlobalSaturationTintController tintController = new GlobalSaturationTintController();
         tintController.setMatrix(50);
-        assertThat(tintController.getMatrix()).hasValuesWithin(0.00001f)
-                .of(new float[]{0.6155f, 0.1155f, 0.1155f, 0.0f, 0.3575f, 0.85749996f, 0.3575f,
-                        0.0f, 0.036f, 0.036f, 0.536f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f});
+        assertThat(tintController.getMatrix()).usingTolerance(0.00001f)
+                .containsExactly(
+                        0.6155f, 0.1155f, 0.1155f, 0.0f, 0.3575f, 0.85749996f, 0.3575f,
+                        0.0f, 0.036f, 0.036f, 0.536f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f)
+                .inOrder();
     }
 
     @Test
@@ -43,6 +45,7 @@
         tintController.setMatrix(100);
         final float[] matrix = new float[16];
         Matrix.setIdentityM(matrix, 0);
-        assertThat(tintController.getMatrix()).hasValuesWithin(0.00001f).of(matrix);
+        assertThat(tintController.getMatrix()).usingTolerance(0.00001f)
+                .containsExactly(matrix).inOrder();
     }
 }
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecMessageValidatorTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecMessageValidatorTest.java
new file mode 100644
index 0000000..63d7dbd
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecMessageValidatorTest.java
@@ -0,0 +1,517 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.hdmi;
+
+import static com.android.server.hdmi.HdmiCecMessageValidator.ERROR_DESTINATION;
+import static com.android.server.hdmi.HdmiCecMessageValidator.ERROR_PARAMETER;
+import static com.android.server.hdmi.HdmiCecMessageValidator.ERROR_PARAMETER_SHORT;
+import static com.android.server.hdmi.HdmiCecMessageValidator.ERROR_SOURCE;
+import static com.android.server.hdmi.HdmiCecMessageValidator.OK;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.os.test.TestLooper;
+import android.platform.test.annotations.Presubmit;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+
+import com.google.common.truth.IntegerSubject;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+/** Tests for {@link com.android.server.hdmi.HdmiCecMessageValidator} class. */
+@SmallTest
+@Presubmit
+@RunWith(JUnit4.class)
+public class HdmiCecMessageValidatorTest {
+
+    private HdmiCecMessageValidator mHdmiCecMessageValidator;
+    private TestLooper mTestLooper = new TestLooper();
+
+    @Before
+    public void setUp() throws Exception {
+        HdmiControlService mHdmiControlService = new HdmiControlService(
+                InstrumentationRegistry.getTargetContext());
+
+        mHdmiControlService.setIoLooper(mTestLooper.getLooper());
+        mHdmiCecMessageValidator = new HdmiCecMessageValidator(mHdmiControlService);
+    }
+
+    @Test
+    public void isValid_giveDevicePowerStatus() {
+        assertMessageValidity("04:8F").isEqualTo(OK);
+
+        assertMessageValidity("0F:8F").isEqualTo(ERROR_DESTINATION);
+        assertMessageValidity("F4:8F").isEqualTo(ERROR_SOURCE);
+    }
+
+    @Test
+    public void isValid_reportPowerStatus() {
+        assertMessageValidity("04:90:00").isEqualTo(OK);
+        assertMessageValidity("04:90:03:05").isEqualTo(OK);
+
+        assertMessageValidity("0F:90:00").isEqualTo(ERROR_DESTINATION);
+        assertMessageValidity("F0:90").isEqualTo(ERROR_SOURCE);
+        assertMessageValidity("04:90").isEqualTo(ERROR_PARAMETER_SHORT);
+        assertMessageValidity("04:90:04").isEqualTo(ERROR_PARAMETER);
+    }
+
+    @Test
+    public void isValid_menuRequest() {
+        assertMessageValidity("40:8D:00").isEqualTo(OK);
+        assertMessageValidity("40:8D:02:04").isEqualTo(OK);
+
+        assertMessageValidity("0F:8D:00").isEqualTo(ERROR_DESTINATION);
+        assertMessageValidity("F0:8D").isEqualTo(ERROR_SOURCE);
+        assertMessageValidity("40:8D").isEqualTo(ERROR_PARAMETER_SHORT);
+        assertMessageValidity("40:8D:03").isEqualTo(ERROR_PARAMETER);
+    }
+
+    @Test
+    public void isValid_menuStatus() {
+        assertMessageValidity("40:8E:00").isEqualTo(OK);
+        assertMessageValidity("40:8E:01:00").isEqualTo(OK);
+
+        assertMessageValidity("0F:8E:00").isEqualTo(ERROR_DESTINATION);
+        assertMessageValidity("F0:8E").isEqualTo(ERROR_SOURCE);
+        assertMessageValidity("40:8E").isEqualTo(ERROR_PARAMETER_SHORT);
+        assertMessageValidity("40:8E:02").isEqualTo(ERROR_PARAMETER);
+    }
+
+    @Test
+    public void isValid_setSystemAudioMode() {
+        assertMessageValidity("40:72:00").isEqualTo(OK);
+        assertMessageValidity("4F:72:01:03").isEqualTo(OK);
+
+        assertMessageValidity("F0:72").isEqualTo(ERROR_SOURCE);
+        assertMessageValidity("40:72").isEqualTo(ERROR_PARAMETER_SHORT);
+        assertMessageValidity("40:72:02").isEqualTo(ERROR_PARAMETER);
+    }
+
+    @Test
+    public void isValid_systemAudioModeStatus() {
+        assertMessageValidity("40:7E:00").isEqualTo(OK);
+        assertMessageValidity("40:7E:01:01").isEqualTo(OK);
+
+        assertMessageValidity("0F:7E:00").isEqualTo(ERROR_DESTINATION);
+        assertMessageValidity("F0:7E").isEqualTo(ERROR_SOURCE);
+        assertMessageValidity("40:7E").isEqualTo(ERROR_PARAMETER_SHORT);
+        assertMessageValidity("40:7E:02").isEqualTo(ERROR_PARAMETER);
+    }
+
+    @Test
+    public void isValid_setAudioRate() {
+        assertMessageValidity("40:9A:00").isEqualTo(OK);
+        assertMessageValidity("40:9A:03").isEqualTo(OK);
+        assertMessageValidity("40:9A:06:02").isEqualTo(OK);
+
+        assertMessageValidity("0F:9A:00").isEqualTo(ERROR_DESTINATION);
+        assertMessageValidity("F0:9A").isEqualTo(ERROR_SOURCE);
+        assertMessageValidity("40:9A").isEqualTo(ERROR_PARAMETER_SHORT);
+        assertMessageValidity("40:9A:07").isEqualTo(ERROR_PARAMETER);
+    }
+
+    @Test
+    public void isValid_setTimerProgramTitle() {
+        assertMessageValidity("40:67:47:61:6D:65:20:6F:66:20:54:68:72:6F:6E:65:73").isEqualTo(OK);
+        assertMessageValidity("40:67:4A").isEqualTo(OK);
+
+        assertMessageValidity("4F:67:47:4F:54").isEqualTo(ERROR_DESTINATION);
+        assertMessageValidity("F4:67:47:4F:54").isEqualTo(ERROR_SOURCE);
+        assertMessageValidity("40:67").isEqualTo(ERROR_PARAMETER_SHORT);
+        assertMessageValidity("40:67:47:9A:54").isEqualTo(ERROR_PARAMETER);
+    }
+
+    @Test
+    public void isValid_setMenuLanguage() {
+        assertMessageValidity("4F:32:53:50:41").isEqualTo(OK);
+        assertMessageValidity("0F:32:45:4E:47:8C:49:D3:48").isEqualTo(OK);
+
+        assertMessageValidity("40:32:53:50:41").isEqualTo(ERROR_DESTINATION);
+        assertMessageValidity("F0:32").isEqualTo(ERROR_SOURCE);
+        assertMessageValidity("4F:32:45:55").isEqualTo(ERROR_PARAMETER_SHORT);
+        assertMessageValidity("4F:32:19:7F:83").isEqualTo(ERROR_PARAMETER);
+    }
+
+    @Test
+    public void isValid_setOsdString() {
+        assertMessageValidity("40:64:80:41").isEqualTo(OK);
+        // Even though the parameter string in this message is longer than 14 bytes, it is accepted
+        // as this parameter might be extended in future versions.
+        assertMessageValidity("04:64:00:4C:69:76:69:6E:67:52:6F:6F:6D:20:54:56:C4").isEqualTo(OK);
+
+        assertMessageValidity("4F:64:40:41").isEqualTo(ERROR_DESTINATION);
+        assertMessageValidity("F0:64:C0:41").isEqualTo(ERROR_SOURCE);
+        assertMessageValidity("40:64:00").isEqualTo(ERROR_PARAMETER_SHORT);
+        // Invalid Display Control
+        assertMessageValidity("40:64:20:4C:69:76").isEqualTo(ERROR_PARAMETER);
+        // Invalid ASCII characters
+        assertMessageValidity("40:64:40:4C:69:7F").isEqualTo(ERROR_PARAMETER);
+    }
+
+    @Test
+    public void isValid_setOsdName() {
+        assertMessageValidity("40:47:4C:69:76:69:6E:67:52:6F:6F:6D:54:56").isEqualTo(OK);
+        assertMessageValidity("40:47:54:56").isEqualTo(OK);
+
+        assertMessageValidity("4F:47:54:56").isEqualTo(ERROR_DESTINATION);
+        assertMessageValidity("F0:47:54:56").isEqualTo(ERROR_SOURCE);
+        assertMessageValidity("40:47").isEqualTo(ERROR_PARAMETER_SHORT);
+        assertMessageValidity("40:47:4C:69:7F").isEqualTo(ERROR_PARAMETER);
+    }
+
+    @Test
+    public void isValid_recordStatus() {
+        assertMessageValidity("40:0A:01").isEqualTo(OK);
+        assertMessageValidity("40:0A:13").isEqualTo(OK);
+        assertMessageValidity("40:0A:1F:04:01").isEqualTo(OK);
+
+        assertMessageValidity("0F:0A:01").isEqualTo(ERROR_DESTINATION);
+        assertMessageValidity("F0:0A:01").isEqualTo(ERROR_SOURCE);
+        assertMessageValidity("40:0A").isEqualTo(ERROR_PARAMETER_SHORT);
+        assertMessageValidity("40:0A:00").isEqualTo(ERROR_PARAMETER);
+        assertMessageValidity("40:0A:0F").isEqualTo(ERROR_PARAMETER);
+        assertMessageValidity("40:0A:1D").isEqualTo(ERROR_PARAMETER);
+        assertMessageValidity("40:0A:30").isEqualTo(ERROR_PARAMETER);
+    }
+
+    @Test
+    public void isValid_setAnalogueTimer_clearAnalogueTimer() {
+        assertMessageValidity("04:33:0C:08:10:1E:04:30:08:00:13:AD:06").isEqualTo(OK);
+        assertMessageValidity("04:34:04:0C:16:0F:08:37:00:02:EA:60:03:34").isEqualTo(OK);
+
+        assertMessageValidity("0F:33:0C:08:10:1E:04:30:08:00:13:AD:06")
+                .isEqualTo(ERROR_DESTINATION);
+        assertMessageValidity("F0:34:04:0C:16:0F:08:37:00:02:EA:60:03").isEqualTo(ERROR_SOURCE);
+        assertMessageValidity("04:33:0C:08:10:1E:04:30:08:13:AD:06")
+                .isEqualTo(ERROR_PARAMETER_SHORT);
+        // Out of range Day of Month
+        assertMessageValidity("04:34:20:0C:16:0F:08:37:00:02:EA:60:03").isEqualTo(ERROR_PARAMETER);
+        // Out of range Month of Year
+        assertMessageValidity("04:33:0C:00:10:1E:04:30:08:00:13:AD:06").isEqualTo(ERROR_PARAMETER);
+        // Out of range Start Time - Hour
+        assertMessageValidity("04:34:04:0C:18:0F:08:37:00:02:EA:60:03").isEqualTo(ERROR_PARAMETER);
+        // Out of range Start Time - Minute
+        assertMessageValidity("04:33:0C:08:10:50:04:30:08:00:13:AD:06").isEqualTo(ERROR_PARAMETER);
+        // Out of range Duration - Duration Hours
+        assertMessageValidity("04:34:04:0C:16:0F:64:37:00:02:EA:60:03").isEqualTo(ERROR_PARAMETER);
+        // Out of range Duration - Minute
+        assertMessageValidity("04:33:0C:08:10:1E:04:64:08:00:13:AD:06").isEqualTo(ERROR_PARAMETER);
+        // Invalid Recording Sequence
+        assertMessageValidity("04:34:04:0C:16:0F:08:37:88:02:EA:60:03").isEqualTo(ERROR_PARAMETER);
+        // Invalid Recording Sequence
+        assertMessageValidity("04:33:0C:08:10:1E:04:30:A2:00:13:AD:06").isEqualTo(ERROR_PARAMETER);
+        // Out of range Analogue Broadcast Type
+        assertMessageValidity("04:34:04:0C:16:0F:08:37:00:03:EA:60:03").isEqualTo(ERROR_PARAMETER);
+        // Out of range Analogue Frequency
+        assertMessageValidity("04:33:0C:08:10:1E:04:30:08:00:FF:FF:06").isEqualTo(ERROR_PARAMETER);
+        // Out of range Broadcast System
+        assertMessageValidity("04:34:04:0C:16:0F:08:37:00:02:EA:60:20").isEqualTo(ERROR_PARAMETER);
+    }
+
+    @Test
+    public void isValid_setDigitalTimer_clearDigitalTimer() {
+        // Services identified by Digital IDs - ARIB Broadcast System
+        assertMessageValidity("04:99:0C:08:15:05:04:1E:00:00:C4:C2:11:D8:75:30").isEqualTo(OK);
+        // Service identified by Digital IDs - ATSC Broadcast System
+        assertMessageValidity("04:97:1E:07:12:20:50:28:01:01:8B:5E:39:5A").isEqualTo(OK);
+        // Service identified by Digital IDs - DVB Broadcast System
+        assertMessageValidity("04:99:05:0C:06:0A:19:3B:40:19:8B:44:03:11:04:FC").isEqualTo(OK);
+        // Service identified by Channel - 1 part channel number
+        assertMessageValidity("04:97:12:06:0C:2D:5A:19:08:91:04:00:B1").isEqualTo(OK);
+        // Service identified by Channel - 2 part channel number
+        assertMessageValidity("04:99:15:09:00:0F:00:2D:04:82:09:C8:72:C8").isEqualTo(OK);
+
+        assertMessageValidity("4F:97:0C:08:15:05:04:1E:00:00:C4:C2:11:D8:75:30")
+                .isEqualTo(ERROR_DESTINATION);
+        assertMessageValidity("F0:99:15:09:00:0F:00:2D:04:82:09:C8:72:C8").isEqualTo(ERROR_SOURCE);
+        assertMessageValidity("04:97:1E:12:20:58:01:01:8B:5E:39:5A")
+                .isEqualTo(ERROR_PARAMETER_SHORT);
+        // Out of range Day of Month
+        assertMessageValidity("04:99:24:0C:06:0A:19:3B:40:19:8B:44:03:11:04:FC")
+                .isEqualTo(ERROR_PARAMETER);
+        // Out of range Month of Year
+        assertMessageValidity("04:97:12:10:0C:2D:5A:19:08:91:04:00:B1").isEqualTo(ERROR_PARAMETER);
+        // Out of range Start Time - Hour
+        assertMessageValidity("04:99:0C:08:20:05:04:1E:00:00:C4:C2:11:D8:75:30")
+                .isEqualTo(ERROR_PARAMETER);
+        // Out of range Start Time - Minute
+        assertMessageValidity("04:97:15:09:00:4B:00:2D:04:82:09:C8:72:C8")
+                .isEqualTo(ERROR_PARAMETER);
+        // Out of range Duration - Duration Hours
+        assertMessageValidity("04:99:1E:07:12:20:78:28:01:01:8B:5E:39:5A")
+                .isEqualTo(ERROR_PARAMETER);
+        // Out of range Duration - Minute
+        assertMessageValidity("04:97:05:0C:06:0A:19:48:40:19:8B:44:03:11:04:FC")
+                .isEqualTo(ERROR_PARAMETER);
+        // Invalid Recording Sequence
+        assertMessageValidity("04:99:12:06:0C:2D:5A:19:90:91:04:00:B1").isEqualTo(ERROR_PARAMETER);
+        // Invalid Recording Sequence
+        assertMessageValidity("04:97:0C:08:15:05:04:1E:21:00:C4:C2:11:D8:75:30")
+                .isEqualTo(ERROR_PARAMETER);
+
+        // Invalid Digital Broadcast System
+        assertMessageValidity("04:99:1E:07:12:20:50:28:01:04:8B:5E:39:5A")
+                .isEqualTo(ERROR_PARAMETER);
+        // Invalid Digital Broadcast System
+        assertMessageValidity("04:97:05:0C:06:0A:19:3B:40:93:8B:44:03:11:04:FC")
+                .isEqualTo(ERROR_PARAMETER);
+        // Insufficient data for ARIB Broadcast system
+        assertMessageValidity("04:99:0C:08:15:05:04:1E:00:00:C4:C2:11:D8:75")
+                .isEqualTo(ERROR_PARAMETER);
+        // Insufficient data for ATSC Broadcast system
+        assertMessageValidity("04:97:1E:07:12:20:50:28:01:01:8B:5E:39").isEqualTo(ERROR_PARAMETER);
+        // Insufficient data for DVB Broadcast system
+        assertMessageValidity("04:99:05:0C:06:0A:19:3B:40:19:8B:44:03:11:04")
+                .isEqualTo(ERROR_PARAMETER);
+        // Insufficient data for 2 part channel number
+        assertMessageValidity("04:97:15:09:00:0F:00:2D:04:82:09:C8:72").isEqualTo(ERROR_PARAMETER);
+        // Invalid Channel Number format
+        assertMessageValidity("04:99:12:06:0C:2D:5A:19:08:91:0D:00:B1").isEqualTo(ERROR_PARAMETER);
+    }
+
+    @Test
+    public void isValid_setExternalTimer_clearExternalTimer() {
+        assertMessageValidity("40:A1:0C:08:15:05:04:1E:02:04:20").isEqualTo(OK);
+        assertMessageValidity("40:A2:14:09:12:28:4B:19:10:05:10:00").isEqualTo(OK);
+
+        assertMessageValidity("4F:A1:0C:08:15:05:04:1E:02:04:20").isEqualTo(ERROR_DESTINATION);
+        assertMessageValidity("F4:A2:14:09:12:28:4B:19:10:05:10:00").isEqualTo(ERROR_SOURCE);
+        assertMessageValidity("40:A1:0C:08:15:05:04:1E:02:04").isEqualTo(ERROR_PARAMETER_SHORT);
+        // Out of range Day of Month
+        assertMessageValidity("40:A2:28:09:12:28:4B:19:10:05:10:00").isEqualTo(ERROR_PARAMETER);
+        // Out of range Month of Year
+        assertMessageValidity("40:A1:0C:0F:15:05:04:1E:02:04:20").isEqualTo(ERROR_PARAMETER);
+        // Out of range Start Time - Hour
+        assertMessageValidity("40:A2:14:09:1A:28:4B:19:10:05:10:00").isEqualTo(ERROR_PARAMETER);
+        // Out of range Start Time - Minute
+        assertMessageValidity("40:A1:0C:08:15:48:04:1E:02:04:20").isEqualTo(ERROR_PARAMETER);
+        // Out of range Duration - Duration Hours
+        assertMessageValidity("40:A2:14:09:12:28:66:19:10:05:10:00").isEqualTo(ERROR_PARAMETER);
+        // Out of range Duration - Minute
+        assertMessageValidity("40:A1:0C:08:15:05:04:3F:02:04:20").isEqualTo(ERROR_PARAMETER);
+        // Invalid Recording Sequence
+        assertMessageValidity("40:A2:14:09:12:28:4B:19:84:05:10:00").isEqualTo(ERROR_PARAMETER);
+        // Invalid Recording Sequence
+        assertMessageValidity("40:A1:0C:08:15:05:04:1E:14:04:20").isEqualTo(ERROR_PARAMETER);
+        // Invalid external source specifier
+        assertMessageValidity("40:A2:14:09:12:28:4B:19:10:08:10:00").isEqualTo(ERROR_PARAMETER);
+        // Invalid External PLug
+        assertMessageValidity("04:A1:0C:08:15:05:04:1E:02:04:00").isEqualTo(ERROR_PARAMETER);
+    }
+
+    @Test
+    public void isValid_timerClearedStatus() {
+        assertMessageValidity("40:43:01:7E").isEqualTo(OK);
+        assertMessageValidity("40:43:80").isEqualTo(OK);
+
+        assertMessageValidity("4F:43:01").isEqualTo(ERROR_DESTINATION);
+        assertMessageValidity("F0:43:80").isEqualTo(ERROR_SOURCE);
+        assertMessageValidity("40:43").isEqualTo(ERROR_PARAMETER_SHORT);
+        assertMessageValidity("40:43:03").isEqualTo(ERROR_PARAMETER);
+    }
+
+    @Test
+    public void isValid_timerStatus() {
+        // Programmed - Space available
+        assertMessageValidity("40:35:58").isEqualTo(OK);
+        // Programmed - Not enough space available
+        assertMessageValidity("40:35:B9:32:1C:4F").isEqualTo(OK);
+        // Not programmed - Date out of range
+        assertMessageValidity("40:35:82:3B").isEqualTo(OK);
+        // Not programmed - Duplicate
+        assertMessageValidity("40:35:EE:52:0C").isEqualTo(OK);
+
+        assertMessageValidity("4F:35:58").isEqualTo(ERROR_DESTINATION);
+        assertMessageValidity("F0:35:82").isEqualTo(ERROR_SOURCE);
+        assertMessageValidity("40:35").isEqualTo(ERROR_PARAMETER_SHORT);
+        // Programmed - Invalid programmed info
+        assertMessageValidity("40:35:BD").isEqualTo(ERROR_PARAMETER);
+        // Non programmed - Invalid not programmed error info
+        assertMessageValidity("40:35:DE").isEqualTo(ERROR_PARAMETER);
+        // Programmed - Might not be enough space available - Invalid duration hours
+        assertMessageValidity("40:35:BB:96:1C").isEqualTo(ERROR_PARAMETER);
+        // Not programmed - Duplicate - Invalid duration minutes
+        assertMessageValidity("40:35:EE:52:4A").isEqualTo(ERROR_PARAMETER);
+    }
+
+    @Test
+    public void isValid_deckControl() {
+        assertMessageValidity("40:42:01:6E").isEqualTo(OK);
+        assertMessageValidity("40:42:04").isEqualTo(OK);
+
+        assertMessageValidity("4F:42:01").isEqualTo(ERROR_DESTINATION);
+        assertMessageValidity("F0:42:04").isEqualTo(ERROR_SOURCE);
+        assertMessageValidity("40:42").isEqualTo(ERROR_PARAMETER_SHORT);
+        assertMessageValidity("40:42:05").isEqualTo(ERROR_PARAMETER);
+    }
+
+    @Test
+    public void isValid_deckStatus() {
+        assertMessageValidity("40:1B:11:58").isEqualTo(OK);
+        assertMessageValidity("40:1B:1F").isEqualTo(OK);
+
+        assertMessageValidity("4F:1B:11").isEqualTo(ERROR_DESTINATION);
+        assertMessageValidity("F0:1B:1F").isEqualTo(ERROR_SOURCE);
+        assertMessageValidity("40:1B").isEqualTo(ERROR_PARAMETER_SHORT);
+        assertMessageValidity("40:1B:10").isEqualTo(ERROR_PARAMETER);
+        assertMessageValidity("40:1B:20").isEqualTo(ERROR_PARAMETER);
+    }
+
+    @Test
+    public void isValid_statusRequest() {
+        assertMessageValidity("40:08:01").isEqualTo(OK);
+        assertMessageValidity("40:08:02:5C").isEqualTo(OK);
+        assertMessageValidity("40:1A:01:F8").isEqualTo(OK);
+        assertMessageValidity("40:1A:03").isEqualTo(OK);
+
+        assertMessageValidity("4F:08:01").isEqualTo(ERROR_DESTINATION);
+        assertMessageValidity("F0:08:03").isEqualTo(ERROR_SOURCE);
+        assertMessageValidity("4F:1A:01").isEqualTo(ERROR_DESTINATION);
+        assertMessageValidity("F0:1A:03").isEqualTo(ERROR_SOURCE);
+        assertMessageValidity("40:08").isEqualTo(ERROR_PARAMETER_SHORT);
+        assertMessageValidity("40:1A").isEqualTo(ERROR_PARAMETER_SHORT);
+        assertMessageValidity("40:08:00").isEqualTo(ERROR_PARAMETER);
+        assertMessageValidity("40:08:05").isEqualTo(ERROR_PARAMETER);
+        assertMessageValidity("40:1A:00").isEqualTo(ERROR_PARAMETER);
+        assertMessageValidity("40:1A:04").isEqualTo(ERROR_PARAMETER);
+    }
+
+    @Test
+    public void isValid_play() {
+        assertMessageValidity("40:41:16:E3").isEqualTo(OK);
+        assertMessageValidity("40:41:20").isEqualTo(OK);
+
+        assertMessageValidity("4F:41:16").isEqualTo(ERROR_DESTINATION);
+        assertMessageValidity("F0:41:20").isEqualTo(ERROR_SOURCE);
+        assertMessageValidity("40:41").isEqualTo(ERROR_PARAMETER_SHORT);
+        assertMessageValidity("40:41:04").isEqualTo(ERROR_PARAMETER);
+        assertMessageValidity("40:41:18").isEqualTo(ERROR_PARAMETER);
+        assertMessageValidity("40:41:23").isEqualTo(ERROR_PARAMETER);
+        assertMessageValidity("40:41:26").isEqualTo(ERROR_PARAMETER);
+    }
+
+    @Test
+    public void isValid_selectAnalogueService() {
+        assertMessageValidity("40:92:00:13:0F:00:96").isEqualTo(OK);
+        assertMessageValidity("40:92:02:EA:60:1F").isEqualTo(OK);
+
+        assertMessageValidity("4F:92:00:13:0F:00").isEqualTo(ERROR_DESTINATION);
+        assertMessageValidity("F0:92:02:EA:60:1F").isEqualTo(ERROR_SOURCE);
+        assertMessageValidity("40:92:00:13:0F").isEqualTo(ERROR_PARAMETER_SHORT);
+        // Invalid Analogue Broadcast type
+        assertMessageValidity("40:92:03:EA:60:1F").isEqualTo(ERROR_PARAMETER);
+        // Invalid Analogue Frequency
+        assertMessageValidity("40:92:00:FF:FF:00").isEqualTo(ERROR_PARAMETER);
+        // Invalid Broadcast system
+        assertMessageValidity("40:92:02:EA:60:20").isEqualTo(ERROR_PARAMETER);
+    }
+
+    @Test
+    public void isValid_selectDigitalService() {
+        assertMessageValidity("40:93:00:11:CE:90:0F:00:78").isEqualTo(OK);
+        assertMessageValidity("40:93:10:13:0B:34:38").isEqualTo(OK);
+        assertMessageValidity("40:93:9A:06:F9:D3:E6").isEqualTo(OK);
+        assertMessageValidity("40:93:91:09:F4:40:C8").isEqualTo(OK);
+
+        assertMessageValidity("4F:93:00:11:CE:90:0F:00:78").isEqualTo(ERROR_DESTINATION);
+        assertMessageValidity("F0:93:10:13:0B:34:38").isEqualTo(ERROR_SOURCE);
+        assertMessageValidity("40:93:9A:06:F9").isEqualTo(ERROR_PARAMETER_SHORT);
+        // Invalid Digital Broadcast System
+        assertMessageValidity("40:93:14:11:CE:90:0F:00:78").isEqualTo(ERROR_PARAMETER);
+        // Invalid Digital Broadcast System
+        assertMessageValidity("40:93:A0:07:95:F1").isEqualTo(ERROR_PARAMETER);
+        // Insufficient data for ARIB Broadcast system
+        assertMessageValidity("40:93:00:11:CE:90:0F:00").isEqualTo(ERROR_PARAMETER);
+        // Insufficient data for ATSC Broadcast system
+        assertMessageValidity("40:93:10:13:0B:34").isEqualTo(ERROR_PARAMETER);
+        // Insufficient data for DVB Broadcast system
+        assertMessageValidity("40:93:18:BE:77:00:7D:01").isEqualTo(ERROR_PARAMETER);
+        // Invalid channel number format
+        assertMessageValidity("40:93:9A:10:F9:D3").isEqualTo(ERROR_PARAMETER);
+        // Insufficient data for 2 part channel number
+        assertMessageValidity("40:93:91:09:F4:40").isEqualTo(ERROR_PARAMETER);
+    }
+
+    @Test
+    public void isValid_UserControlPressed() {
+        assertMessageValidity("40:44:07").isEqualTo(OK);
+        assertMessageValidity("40:44:52:A7").isEqualTo(OK);
+
+        assertMessageValidity("40:44:60").isEqualTo(OK);
+        assertMessageValidity("40:44:60:1A").isEqualTo(OK);
+
+        assertMessageValidity("40:44:67").isEqualTo(OK);
+        assertMessageValidity("40:44:67:04:00:B1").isEqualTo(OK);
+        assertMessageValidity("40:44:67:09:C8:72:C8").isEqualTo(OK);
+
+        assertMessageValidity("40:44:68").isEqualTo(OK);
+        assertMessageValidity("40:44:68:93").isEqualTo(OK);
+        assertMessageValidity("40:44:69").isEqualTo(OK);
+        assertMessageValidity("40:44:69:7C").isEqualTo(OK);
+        assertMessageValidity("40:44:6A").isEqualTo(OK);
+        assertMessageValidity("40:44:6A:B4").isEqualTo(OK);
+
+        assertMessageValidity("40:44:56").isEqualTo(OK);
+        assertMessageValidity("40:44:56:60").isEqualTo(OK);
+
+        assertMessageValidity("40:44:57").isEqualTo(OK);
+        assertMessageValidity("40:44:57:A0").isEqualTo(OK);
+
+        assertMessageValidity("4F:44:07").isEqualTo(ERROR_DESTINATION);
+        assertMessageValidity("F0:44:52:A7").isEqualTo(ERROR_SOURCE);
+        assertMessageValidity("40:44").isEqualTo(ERROR_PARAMETER_SHORT);
+        assertMessageValidity("40:44:67:04:B1").isEqualTo(ERROR_PARAMETER_SHORT);
+        // Invalid Play mode
+        assertMessageValidity("40:44:60:04").isEqualTo(ERROR_PARAMETER);
+        assertMessageValidity("40:44:60:08").isEqualTo(ERROR_PARAMETER);
+        assertMessageValidity("40:44:60:26").isEqualTo(ERROR_PARAMETER);
+        // Invalid Channel Identifier - Channel number format
+        assertMessageValidity("40:44:67:11:8A:42").isEqualTo(ERROR_PARAMETER);
+        // Insufficient data for 2 - part channel number
+        assertMessageValidity("40:44:67:09:C8:72").isEqualTo(ERROR_PARAMETER);
+        // Invalid UI Broadcast type
+        assertMessageValidity("40:44:56:11").isEqualTo(ERROR_PARAMETER);
+        // Invalid UI Sound Presentation Control
+        assertMessageValidity("40:44:57:40").isEqualTo(ERROR_PARAMETER);
+    }
+
+    private IntegerSubject assertMessageValidity(String message) {
+        return assertThat(mHdmiCecMessageValidator.isValid(buildMessage(message)));
+    }
+
+    /**
+     * Build a CEC message from a hex byte string with bytes separated by {@code :}.
+     *
+     * <p>This format is used by both cec-client and www.cec-o-matic.com
+     */
+    private static HdmiCecMessage buildMessage(String message) {
+        String[] parts = message.split(":");
+        int src = Integer.parseInt(parts[0].substring(0, 1), 16);
+        int dest = Integer.parseInt(parts[0].substring(1, 2), 16);
+        int opcode = Integer.parseInt(parts[1], 16);
+        byte[] params = new byte[parts.length - 2];
+        for (int i = 0; i < params.length; i++) {
+            params[i] = (byte) Integer.parseInt(parts[i + 2], 16);
+        }
+        return new HdmiCecMessage(src, dest, opcode, params);
+    }
+}
diff --git a/services/tests/servicestests/src/com/android/server/integrity/IntegrityFileManagerTest.java b/services/tests/servicestests/src/com/android/server/integrity/IntegrityFileManagerTest.java
index 41be54a..f26e094 100644
--- a/services/tests/servicestests/src/com/android/server/integrity/IntegrityFileManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/integrity/IntegrityFileManagerTest.java
@@ -194,7 +194,7 @@
         assertThat(rulesFetched.size())
                 .isEqualTo(INDEXING_BLOCK_SIZE * 2 + unindexedRuleCount);
         assertThat(rulesFetched)
-                .containsAllOf(
+                .containsAtLeast(
                         getPackageNameIndexedRule(installedPackageName),
                         getAppCertificateIndexedRule(installedAppCertificate));
     }
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelperTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelperTest.java
index 6921bb2..8d5687c 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelperTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelperTest.java
@@ -71,7 +71,7 @@
         Map<String, Pair<SecretKey, byte[]>> filteredKeys =
                 mHelper.keepOnlyWhitelistedInsecureKeys(rawKeys);
         assertThat(filteredKeys.entrySet()).containsExactlyElementsIn(expectedResult.entrySet());
-        assertThat(filteredKeys.entrySet()).containsAllIn(rawKeys.entrySet());
+        assertThat(filteredKeys.entrySet()).containsAtLeastElementsIn(rawKeys.entrySet());
     }
 
     @Test
@@ -85,7 +85,7 @@
         Map<String, Pair<SecretKey, byte[]>> filteredKeys =
                 mHelper.keepOnlyWhitelistedInsecureKeys(rawKeys);
         assertThat(filteredKeys.entrySet()).containsExactlyElementsIn(expectedResult.entrySet());
-        assertThat(rawKeys.entrySet()).containsAllIn(filteredKeys.entrySet());
+        assertThat(rawKeys.entrySet()).containsAtLeastElementsIn(filteredKeys.entrySet());
     }
 
     @Test
@@ -100,7 +100,7 @@
         Map<String, Pair<SecretKey, byte[]>> filteredKeys =
                 mHelper.keepOnlyWhitelistedInsecureKeys(rawKeys);
         assertThat(filteredKeys.entrySet()).containsExactlyElementsIn(expectedResult.entrySet());
-        assertThat(rawKeys.entrySet()).containsAllIn(filteredKeys.entrySet());
+        assertThat(rawKeys.entrySet()).containsAtLeastElementsIn(filteredKeys.entrySet());
     }
 
     @Test
@@ -122,7 +122,7 @@
         Map<String, Pair<SecretKey, byte[]>> filteredKeys =
                 mHelper.keepOnlyWhitelistedInsecureKeys(rawKeys);
         assertThat(filteredKeys.entrySet()).containsExactlyElementsIn(expectedResult.entrySet());
-        assertThat(rawKeys.entrySet()).containsAllIn(filteredKeys.entrySet());
+        assertThat(rawKeys.entrySet()).containsAtLeastElementsIn(filteredKeys.entrySet());
     }
 
     @Test
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/certificate/CertXmlTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/certificate/CertXmlTest.java
index 9836c64..b0cb2ea 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/certificate/CertXmlTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/certificate/CertXmlTest.java
@@ -70,7 +70,7 @@
         CertXml certXml = CertXml.parse(certXmlBytes);
         List<X509Certificate> endpointCerts = certXml.getAllEndpointCerts();
         assertThat(endpointCerts).hasSize(3);
-        assertThat(endpointCerts).containsAllOf(TestData.LEAF_CERT_1, TestData.LEAF_CERT_2);
+        assertThat(endpointCerts).containsAtLeast(TestData.LEAF_CERT_1, TestData.LEAF_CERT_2);
     }
 
     @Test
diff --git a/services/tests/servicestests/src/com/android/server/om/OverlayActorEnforcerTests.kt b/services/tests/servicestests/src/com/android/server/om/OverlayActorEnforcerTests.kt
index e08eea2..0839273 100644
--- a/services/tests/servicestests/src/com/android/server/om/OverlayActorEnforcerTests.kt
+++ b/services/tests/servicestests/src/com/android/server/om/OverlayActorEnforcerTests.kt
@@ -160,7 +160,7 @@
         private val hasPermission: Boolean = false,
         private val overlayableInfo: OverlayableInfo? = null,
         private vararg val packageNames: String = arrayOf("com.test.actor.one")
-    ) : OverlayableInfoCallback {
+    ) : PackageManagerHelper {
 
         override fun getNamedActors() = if (isActor) {
             mapOf(NAMESPACE to mapOf(ACTOR_NAME to ACTOR_PKG_NAME))
@@ -195,6 +195,14 @@
             }
         }
 
+        override fun getConfigSignaturePackage(): String {
+            throw UnsupportedOperationException()
+        }
+
+        override fun getOverlayPackages(userId: Int): MutableList<PackageInfo> {
+            throw UnsupportedOperationException()
+        }
+
         override fun signaturesMatching(pkgName1: String, pkgName2: String, userId: Int): Boolean {
             throw UnsupportedOperationException()
         }
diff --git a/services/tests/servicestests/src/com/android/server/om/OverlayManagerServiceImplRebootTests.java b/services/tests/servicestests/src/com/android/server/om/OverlayManagerServiceImplRebootTests.java
index b7692f9..391611b 100644
--- a/services/tests/servicestests/src/com/android/server/om/OverlayManagerServiceImplRebootTests.java
+++ b/services/tests/servicestests/src/com/android/server/om/OverlayManagerServiceImplRebootTests.java
@@ -35,8 +35,8 @@
 @RunWith(AndroidJUnit4.class)
 public class OverlayManagerServiceImplRebootTests extends OverlayManagerServiceImplTestsBase {
 
-    private static final String OVERLAY = "com.dummy.overlay";
-    private static final String TARGET = "com.dummy.target";
+    private static final String OVERLAY = "com.test.overlay";
+    private static final String TARGET = "com.test.target";
     private static final int USER = 0;
 
     private static final String OVERLAY2 = OVERLAY + "2";
@@ -44,9 +44,9 @@
     @Test
     public void testUpdateOverlaysForUser() {
         final OverlayManagerServiceImpl impl = getImpl();
-        addSystemPackage(target(TARGET), USER);
-        addSystemPackage(target("some.other.target"), USER);;
-        addSystemPackage(overlay(OVERLAY, TARGET), USER);
+        addPackage(target(TARGET), USER);
+        addPackage(target("some.other.target"), USER);
+        addPackage(overlay(OVERLAY, TARGET), USER);
 
         // do nothing, expect no change
         final List<String> a = impl.updateOverlaysForUser(USER);
@@ -54,7 +54,7 @@
         assertTrue(a.contains(TARGET));
 
         // upgrade overlay, keep target
-        addSystemPackage(overlay(OVERLAY, TARGET), USER);
+        addPackage(overlay(OVERLAY, TARGET), USER);
 
         final List<String> b = impl.updateOverlaysForUser(USER);
         assertEquals(1, b.size());
@@ -66,7 +66,7 @@
         assertTrue(c.contains(TARGET));
 
         // upgrade overlay, switch to new target
-        addSystemPackage(overlay(OVERLAY, "some.other.target"), USER);
+        addPackage(overlay(OVERLAY, "some.other.target"), USER);
         final List<String> d = impl.updateOverlaysForUser(USER);
         assertEquals(2, d.size());
         assertTrue(d.containsAll(Arrays.asList(TARGET, "some.other.target")));
diff --git a/services/tests/servicestests/src/com/android/server/om/OverlayManagerServiceImplTests.java b/services/tests/servicestests/src/com/android/server/om/OverlayManagerServiceImplTests.java
index f4c5506..4f882ce 100644
--- a/services/tests/servicestests/src/com/android/server/om/OverlayManagerServiceImplTests.java
+++ b/services/tests/servicestests/src/com/android/server/om/OverlayManagerServiceImplTests.java
@@ -19,6 +19,7 @@
 import static android.content.om.OverlayInfo.STATE_DISABLED;
 import static android.content.om.OverlayInfo.STATE_ENABLED;
 import static android.content.om.OverlayInfo.STATE_MISSING_TARGET;
+import static android.os.OverlayablePolicy.CONFIG_SIGNATURE;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
@@ -38,8 +39,8 @@
 @RunWith(AndroidJUnit4.class)
 public class OverlayManagerServiceImplTests extends OverlayManagerServiceImplTestsBase {
 
-    private static final String OVERLAY = "com.dummy.overlay";
-    private static final String TARGET = "com.dummy.target";
+    private static final String OVERLAY = "com.test.overlay";
+    private static final String TARGET = "com.test.target";
     private static final int USER = 0;
 
     private static final String OVERLAY2 = OVERLAY + "2";
@@ -49,6 +50,10 @@
     private static final String OVERLAY3 = OVERLAY + "3";
     private static final int USER3 = USER2 + 1;
 
+    private static final String CONFIG_SIGNATURE_REFERENCE_PKG = "com.test.ref";
+    private static final String CERT_CONFIG_OK = "config_certificate_ok";
+    private static final String CERT_CONFIG_NOK = "config_certificate_nok";
+
     @Test
     public void testGetOverlayInfo() {
         installNewPackage(overlay(OVERLAY, TARGET), USER);
@@ -144,7 +149,7 @@
         installNewPackage(overlay(OVERLAY, TARGET), USER);
         assertState(STATE_MISSING_TARGET, OVERLAY, USER);
 
-        final DummyDeviceState.PackageBuilder target = target(TARGET);
+        final FakeDeviceState.PackageBuilder target = target(TARGET);
         installNewPackage(target, USER);
         assertState(STATE_DISABLED, OVERLAY, USER);
 
@@ -164,9 +169,9 @@
 
     @Test
     public void testOnOverlayPackageUpgraded() {
-        final DummyListener listener = getListener();
-        final DummyDeviceState.PackageBuilder target = target(TARGET);
-        final DummyDeviceState.PackageBuilder overlay = overlay(OVERLAY, TARGET);
+        final FakeListener listener = getListener();
+        final FakeDeviceState.PackageBuilder target = target(TARGET);
+        final FakeDeviceState.PackageBuilder overlay = overlay(OVERLAY, TARGET);
         installNewPackage(target, USER);
         installNewPackage(overlay, USER);
         listener.count = 0;
@@ -176,7 +181,7 @@
         // upgrade to a version where the overlay has changed its target
         // expect once for the old target package, once for the new target package
         listener.count = 0;
-        final DummyDeviceState.PackageBuilder overlay2 = overlay(OVERLAY, "some.other.target");
+        final FakeDeviceState.PackageBuilder overlay2 = overlay(OVERLAY, "some.other.target");
         upgradePackage(overlay2, USER);
         assertEquals(3, listener.count);
 
@@ -188,7 +193,7 @@
     @Test
     public void testListener() {
         final OverlayManagerServiceImpl impl = getImpl();
-        final DummyListener listener = getListener();
+        final FakeListener listener = getListener();
         installNewPackage(overlay(OVERLAY, TARGET), USER);
         assertEquals(1, listener.count);
         listener.count = 0;
@@ -204,4 +209,87 @@
         impl.setEnabled(OVERLAY, true, USER);
         assertEquals(0, listener.count);
     }
+
+    @Test
+    public void testConfigSignaturePolicyOk() {
+        setConfigSignaturePackageName(CONFIG_SIGNATURE_REFERENCE_PKG);
+        reinitializeImpl();
+
+        addPackage(target(CONFIG_SIGNATURE_REFERENCE_PKG).setCertificate(CERT_CONFIG_OK), USER);
+        installNewPackage(target(TARGET), USER);
+        installNewPackage(overlay(OVERLAY, TARGET).setCertificate(CERT_CONFIG_OK), USER);
+
+        final FakeIdmapDaemon idmapd = getIdmapd();
+        final FakeDeviceState state = getState();
+        String overlayPath = state.select(OVERLAY, USER).apkPath;
+        assertTrue(idmapd.idmapExists(overlayPath, USER));
+
+        FakeIdmapDaemon.IdmapHeader idmap = idmapd.getIdmap(overlayPath);
+        assertTrue((CONFIG_SIGNATURE & idmap.policies) == CONFIG_SIGNATURE);
+    }
+
+    @Test
+    public void testConfigSignaturePolicyCertNok() {
+        setConfigSignaturePackageName(CONFIG_SIGNATURE_REFERENCE_PKG);
+        reinitializeImpl();
+
+        addPackage(target(CONFIG_SIGNATURE_REFERENCE_PKG).setCertificate(CERT_CONFIG_OK), USER);
+        installNewPackage(target(TARGET), USER);
+        installNewPackage(overlay(OVERLAY, TARGET).setCertificate(CERT_CONFIG_NOK), USER);
+
+        final FakeIdmapDaemon idmapd = getIdmapd();
+        final FakeDeviceState state = getState();
+        String overlayPath = state.select(OVERLAY, USER).apkPath;
+        assertTrue(idmapd.idmapExists(overlayPath, USER));
+
+        FakeIdmapDaemon.IdmapHeader idmap = idmapd.getIdmap(overlayPath);
+        assertTrue((CONFIG_SIGNATURE & idmap.policies) == 0);
+    }
+
+    @Test
+    public void testConfigSignaturePolicyNoConfig() {
+        addPackage(target(CONFIG_SIGNATURE_REFERENCE_PKG).setCertificate(CERT_CONFIG_OK), USER);
+        installNewPackage(target(TARGET), USER);
+        installNewPackage(overlay(OVERLAY, TARGET).setCertificate(CERT_CONFIG_NOK), USER);
+
+        final FakeIdmapDaemon idmapd = getIdmapd();
+        final FakeDeviceState state = getState();
+        String overlayPath = state.select(OVERLAY, USER).apkPath;
+        assertTrue(idmapd.idmapExists(overlayPath, USER));
+
+        FakeIdmapDaemon.IdmapHeader idmap = idmapd.getIdmap(overlayPath);
+        assertTrue((CONFIG_SIGNATURE & idmap.policies) == 0);
+    }
+
+    @Test
+    public void testConfigSignaturePolicyNoRefPkg() {
+        installNewPackage(target(TARGET), USER);
+        installNewPackage(overlay(OVERLAY, TARGET).setCertificate(CERT_CONFIG_NOK), USER);
+
+        final FakeIdmapDaemon idmapd = getIdmapd();
+        final FakeDeviceState state = getState();
+        String overlayPath = state.select(OVERLAY, USER).apkPath;
+        assertTrue(idmapd.idmapExists(overlayPath, USER));
+
+        FakeIdmapDaemon.IdmapHeader idmap = idmapd.getIdmap(overlayPath);
+        assertTrue((CONFIG_SIGNATURE & idmap.policies) == 0);
+    }
+
+    @Test
+    public void testConfigSignaturePolicyRefPkgNotSystem() {
+        setConfigSignaturePackageName(CONFIG_SIGNATURE_REFERENCE_PKG);
+        reinitializeImpl();
+
+        addPackage(app(CONFIG_SIGNATURE_REFERENCE_PKG).setCertificate(CERT_CONFIG_OK), USER);
+        installNewPackage(target(TARGET), USER);
+        installNewPackage(overlay(OVERLAY, TARGET).setCertificate(CERT_CONFIG_NOK), USER);
+
+        final FakeIdmapDaemon idmapd = getIdmapd();
+        final FakeDeviceState state = getState();
+        String overlayPath = state.select(OVERLAY, USER).apkPath;
+        assertTrue(idmapd.idmapExists(overlayPath, USER));
+
+        FakeIdmapDaemon.IdmapHeader idmap = idmapd.getIdmap(overlayPath);
+        assertTrue((CONFIG_SIGNATURE & idmap.policies) == 0);
+    }
 }
diff --git a/services/tests/servicestests/src/com/android/server/om/OverlayManagerServiceImplTestsBase.java b/services/tests/servicestests/src/com/android/server/om/OverlayManagerServiceImplTestsBase.java
index 733310b..006dda0 100644
--- a/services/tests/servicestests/src/com/android/server/om/OverlayManagerServiceImplTestsBase.java
+++ b/services/tests/servicestests/src/com/android/server/om/OverlayManagerServiceImplTestsBase.java
@@ -27,6 +27,7 @@
 import android.content.om.OverlayableInfo;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageInfo;
+import android.text.TextUtils;
 import android.util.ArrayMap;
 import android.util.ArraySet;
 
@@ -47,18 +48,19 @@
 /** Base class for creating {@link OverlayManagerServiceImplTests} tests. */
 class OverlayManagerServiceImplTestsBase {
     private OverlayManagerServiceImpl mImpl;
-    private DummyDeviceState mState;
-    private DummyListener mListener;
-    private DummyPackageManagerHelper mPackageManager;
-    private DummyIdmapDaemon mIdmapDaemon;
+    private FakeDeviceState mState;
+    private FakeListener mListener;
+    private FakePackageManagerHelper mPackageManager;
+    private FakeIdmapDaemon mIdmapDaemon;
     private OverlayConfig mOverlayConfig;
+    private String mConfigSignaturePackageName;
 
     @Before
     public void setUp() {
-        mState = new DummyDeviceState();
-        mListener = new DummyListener();
-        mPackageManager = new DummyPackageManagerHelper(mState);
-        mIdmapDaemon = new DummyIdmapDaemon(mState);
+        mState = new FakeDeviceState();
+        mListener = new FakeListener();
+        mPackageManager = new FakePackageManagerHelper(mState);
+        mIdmapDaemon = new FakeIdmapDaemon(mState);
         mOverlayConfig = mock(OverlayConfig.class);
         when(mOverlayConfig.getPriority(any())).thenReturn(OverlayConfig.DEFAULT_PRIORITY);
         when(mOverlayConfig.isEnabled(any())).thenReturn(false);
@@ -79,10 +81,22 @@
         return mImpl;
     }
 
-    DummyListener getListener() {
+    FakeListener getListener() {
         return mListener;
     }
 
+    FakeIdmapDaemon getIdmapd() {
+        return mIdmapDaemon;
+    }
+
+    FakeDeviceState getState() {
+        return mState;
+    }
+
+    void setConfigSignaturePackageName(String packageName) {
+        mConfigSignaturePackageName = packageName;
+    }
+
     void assertState(@State int expected, final String overlayPackageName, int userId) {
         final OverlayInfo info = mImpl.getOverlayInfo(overlayPackageName, userId);
         if (info == null) {
@@ -102,22 +116,27 @@
         assertEquals(expected, actual);
     }
 
-    DummyDeviceState.PackageBuilder target(String packageName) {
-        return new DummyDeviceState.PackageBuilder(packageName, null /* targetPackageName */,
-                null /* targetOverlayableName */);
+    FakeDeviceState.PackageBuilder app(String packageName) {
+        return new FakeDeviceState.PackageBuilder(packageName, null /* targetPackageName */,
+                null /* targetOverlayableName */, "data");
     }
 
-    DummyDeviceState.PackageBuilder overlay(String packageName, String targetPackageName) {
+    FakeDeviceState.PackageBuilder target(String packageName) {
+        return new FakeDeviceState.PackageBuilder(packageName, null /* targetPackageName */,
+                null /* targetOverlayableName */, "");
+    }
+
+    FakeDeviceState.PackageBuilder overlay(String packageName, String targetPackageName) {
         return overlay(packageName, targetPackageName, null /* targetOverlayableName */);
     }
 
-    DummyDeviceState.PackageBuilder overlay(String packageName, String targetPackageName,
+    FakeDeviceState.PackageBuilder overlay(String packageName, String targetPackageName,
             String targetOverlayableName) {
-        return new DummyDeviceState.PackageBuilder(packageName, targetPackageName,
-                targetOverlayableName);
+        return new FakeDeviceState.PackageBuilder(packageName, targetPackageName,
+                targetOverlayableName, "");
     }
 
-    void addSystemPackage(DummyDeviceState.PackageBuilder pkg, int userId) {
+    void addPackage(FakeDeviceState.PackageBuilder pkg, int userId) {
         mState.add(pkg, userId);
     }
 
@@ -136,7 +155,7 @@
      *
      * @throws IllegalStateException if the package is currently installed
      */
-    void installNewPackage(DummyDeviceState.PackageBuilder pkg, int userId) {
+    void installNewPackage(FakeDeviceState.PackageBuilder pkg, int userId) {
         if (mState.select(pkg.packageName, userId) != null) {
             throw new IllegalStateException("package " + pkg.packageName + " already installed");
         }
@@ -159,8 +178,8 @@
      *
      * @throws IllegalStateException if the package is not currently installed
      */
-    void upgradePackage(DummyDeviceState.PackageBuilder pkg, int userId) {
-        final DummyDeviceState.Package replacedPackage = mState.select(pkg.packageName, userId);
+    void upgradePackage(FakeDeviceState.PackageBuilder pkg, int userId) {
+        final FakeDeviceState.Package replacedPackage = mState.select(pkg.packageName, userId);
         if (replacedPackage == null) {
             throw new IllegalStateException("package " + pkg.packageName + " not installed");
         }
@@ -185,7 +204,7 @@
      * @throws IllegalStateException if the package is not currently installed
      */
     void uninstallPackage(String packageName, int userId) {
-        final DummyDeviceState.Package pkg = mState.select(packageName, userId);
+        final FakeDeviceState.Package pkg = mState.select(packageName, userId);
         if (pkg == null) {
             throw new IllegalStateException("package " + packageName+ " not installed");
         }
@@ -198,7 +217,7 @@
     }
 
     /** Represents the state of packages installed on a fake device. */
-    static class DummyDeviceState {
+    static class FakeDeviceState {
         private ArrayMap<String, Package> mPackages = new ArrayMap<>();
 
         void add(PackageBuilder pkgBuilder, int userId) {
@@ -242,15 +261,17 @@
             private String packageName;
             private String targetPackage;
             private String certificate = "[default]";
+            private String partition;
             private int version = 0;
             private ArrayList<String> overlayableNames = new ArrayList<>();
             private String targetOverlayableName;
 
             private PackageBuilder(String packageName, String targetPackage,
-                    String targetOverlayableName) {
+                    String targetOverlayableName, String partition) {
                 this.packageName = packageName;
                 this.targetPackage = targetPackage;
                 this.targetOverlayableName = targetOverlayableName;
+                this.partition = partition;
             }
 
             PackageBuilder setCertificate(String certificate) {
@@ -269,9 +290,19 @@
             }
 
             Package build() {
-                final String apkPath = String.format("%s/%s/base.apk",
-                        targetPackage == null ? "/system/app/:" : "/vendor/overlay/:",
-                        packageName);
+                String path = "";
+                if (TextUtils.isEmpty(partition)) {
+                    if (targetPackage == null) {
+                        path = "/system/app";
+                    } else {
+                        path = "/vendor/overlay";
+                    }
+                } else {
+                    String type = targetPackage == null ? "app" : "overlay";
+                    path = String.format("%s/%s", partition, type);
+                }
+
+                final String apkPath = String.format("%s/%s/base.apk", path, packageName);
                 final Package newPackage = new Package(packageName, targetPackage,
                         targetOverlayableName, version, apkPath, certificate);
                 newPackage.overlayableNames.addAll(overlayableNames);
@@ -302,17 +333,16 @@
         }
     }
 
-    static final class DummyPackageManagerHelper implements PackageManagerHelper,
-            OverlayableInfoCallback {
-        private final DummyDeviceState mState;
+    final class FakePackageManagerHelper implements PackageManagerHelper {
+        private final FakeDeviceState mState;
 
-        private DummyPackageManagerHelper(DummyDeviceState state) {
+        private FakePackageManagerHelper(FakeDeviceState state) {
             mState = state;
         }
 
         @Override
         public PackageInfo getPackageInfo(@NonNull String packageName, int userId) {
-            final DummyDeviceState.Package pkg = mState.select(packageName, userId);
+            final FakeDeviceState.Package pkg = mState.select(packageName, userId);
             if (pkg == null) {
                 return null;
             }
@@ -323,15 +353,15 @@
             pi.packageName = pkg.packageName;
             pi.overlayTarget = pkg.targetPackageName;
             pi.targetOverlayableName = pkg.targetOverlayableName;
-            pi.overlayCategory = "dummy-category-" + pkg.targetPackageName;
+            pi.overlayCategory = "Fake-category-" + pkg.targetPackageName;
             return pi;
         }
 
         @Override
         public boolean signaturesMatching(@NonNull String packageName1,
                 @NonNull String packageName2, int userId) {
-            final DummyDeviceState.Package pkg1 = mState.select(packageName1, userId);
-            final DummyDeviceState.Package pkg2 = mState.select(packageName2, userId);
+            final FakeDeviceState.Package pkg1 = mState.select(packageName1, userId);
+            final FakeDeviceState.Package pkg2 = mState.select(packageName2, userId);
             return pkg1 != null && pkg2 != null && pkg1.certificate.equals(pkg2.certificate);
         }
 
@@ -343,11 +373,16 @@
                     .collect(Collectors.toList());
         }
 
+        @Override
+        public @NonNull String getConfigSignaturePackage() {
+            return mConfigSignaturePackageName;
+        }
+
         @Nullable
         @Override
         public OverlayableInfo getOverlayableForTarget(@NonNull String packageName,
                 @NonNull String targetOverlayableName, int userId) {
-            final DummyDeviceState.Package pkg = mState.select(packageName, userId);
+            final FakeDeviceState.Package pkg = mState.select(packageName, userId);
             if (pkg == null || !pkg.overlayableNames.contains(targetOverlayableName)) {
                 return null;
             }
@@ -368,7 +403,7 @@
 
         @Override
         public boolean doesTargetDefineOverlayable(String targetPackageName, int userId) {
-            final DummyDeviceState.Package pkg = mState.select(targetPackageName, userId);
+            final FakeDeviceState.Package pkg = mState.select(targetPackageName, userId);
             return pkg != null && pkg.overlayableNames.contains(targetPackageName);
         }
 
@@ -378,16 +413,16 @@
         }
     }
 
-    static class DummyIdmapDaemon extends IdmapDaemon {
-        private final DummyDeviceState mState;
+    static class FakeIdmapDaemon extends IdmapDaemon {
+        private final FakeDeviceState mState;
         private final ArrayMap<String, IdmapHeader> mIdmapFiles = new ArrayMap<>();
 
-        DummyIdmapDaemon(DummyDeviceState state) {
+        FakeIdmapDaemon(FakeDeviceState state) {
             this.mState = state;
         }
 
         private int getCrc(@NonNull final String path) {
-            final DummyDeviceState.Package pkg = mState.selectFromPath(path);
+            final FakeDeviceState.Package pkg = mState.selectFromPath(path);
             Assert.assertNotNull(pkg);
             return pkg.versionCode;
         }
@@ -451,7 +486,7 @@
         }
     }
 
-    static class DummyListener implements OverlayManagerServiceImpl.OverlayChangeListener {
+    static class FakeListener implements OverlayManagerServiceImpl.OverlayChangeListener {
         public int count;
 
         public void onOverlaysChanged(@NonNull String targetPackage, int userId) {
diff --git a/services/tests/servicestests/src/com/android/server/om/OverlayManagerSettingsTests.java b/services/tests/servicestests/src/com/android/server/om/OverlayManagerSettingsTests.java
index 146f60a..9ef7557 100644
--- a/services/tests/servicestests/src/com/android/server/om/OverlayManagerSettingsTests.java
+++ b/services/tests/servicestests/src/com/android/server/om/OverlayManagerSettingsTests.java
@@ -50,55 +50,55 @@
     private OverlayManagerSettings mSettings;
 
     private static final OverlayInfo OVERLAY_A0 = new OverlayInfo(
-            "com.dummy.overlay_a",
-            "com.dummy.target",
+            "com.test.overlay_a",
+            "com.test.target",
             null,
             "some-category",
-            "/data/app/com.dummy.overlay_a-1/base.apk",
+            "/data/app/com.test.overlay_a-1/base.apk",
             STATE_DISABLED,
             0,
             0,
             true);
 
     private static final OverlayInfo OVERLAY_B0 = new OverlayInfo(
-            "com.dummy.overlay_b",
-            "com.dummy.target",
+            "com.test.overlay_b",
+            "com.test.target",
             null,
             "some-category",
-            "/data/app/com.dummy.overlay_b-1/base.apk",
+            "/data/app/com.test.overlay_b-1/base.apk",
             STATE_DISABLED,
             0,
             0,
             true);
 
     private static final OverlayInfo OVERLAY_C0 = new OverlayInfo(
-            "com.dummy.overlay_c",
-            "com.dummy.target",
+            "com.test.overlay_c",
+            "com.test.target",
             null,
             "some-category",
-            "/data/app/com.dummy.overlay_c-1/base.apk",
+            "/data/app/com.test.overlay_c-1/base.apk",
             STATE_DISABLED,
             0,
             0,
             true);
 
     private static final OverlayInfo OVERLAY_A1 = new OverlayInfo(
-            "com.dummy.overlay_a",
-            "com.dummy.target",
+            "com.test.overlay_a",
+            "com.test.target",
             null,
             "some-category",
-            "/data/app/com.dummy.overlay_a-1/base.apk",
+            "/data/app/com.test.overlay_a-1/base.apk",
             STATE_DISABLED,
             1,
             0,
             true);
 
     private static final OverlayInfo OVERLAY_B1 = new OverlayInfo(
-            "com.dummy.overlay_b",
-            "com.dummy.target",
+            "com.test.overlay_b",
+            "com.test.target",
             null,
             "some-category",
-            "/data/app/com.dummy.overlay_b-1/base.apk",
+            "/data/app/com.test.overlay_b-1/base.apk",
             STATE_DISABLED,
             1,
             0,
@@ -230,11 +230,11 @@
         assertListsAreEqual(list, OVERLAY_A0, OVERLAY_C0, OVERLAY_B0);
 
         OverlayInfo otherTarget = new OverlayInfo(
-                "com.dummy.overlay_other",
-                "com.dummy.some.other.target",
+                "com.test.overlay_other",
+                "com.test.some.other.target",
                 null,
                 "some-category",
-                "/data/app/com.dummy.overlay_other-1/base.apk",
+                "/data/app/com.test.overlay_other-1/base.apk",
                 STATE_DISABLED,
                 0,
                 0,
@@ -350,7 +350,7 @@
         ByteArrayInputStream is = new ByteArrayInputStream(xml.getBytes("utf-8"));
 
         mSettings.restore(is);
-        assertDoesNotContain(mSettings, "com.dummy.overlay", 0);
+        assertDoesNotContain(mSettings, "com.test.overlay", 0);
     }
 
     @Test
@@ -359,27 +359,27 @@
         final String xml =
                 "<?xml version='1.0' encoding='utf-8' standalone='yes'?>\n"
                 + "<overlays version='" + version + "'>\n"
-                + "<item packageName='com.dummy.overlay'\n"
+                + "<item packageName='com.test.overlay'\n"
                 + "      userId='1234'\n"
-                + "      targetPackageName='com.dummy.target'\n"
-                + "      baseCodePath='/data/app/com.dummy.overlay-1/base.apk'\n"
+                + "      targetPackageName='com.test.target'\n"
+                + "      baseCodePath='/data/app/com.test.overlay-1/base.apk'\n"
                 + "      state='" + STATE_DISABLED + "'\n"
                 + "      isEnabled='false'\n"
-                + "      category='dummy-category'\n"
+                + "      category='test-category'\n"
                 + "      isStatic='false'\n"
                 + "      priority='0' />\n"
                 + "</overlays>\n";
         ByteArrayInputStream is = new ByteArrayInputStream(xml.getBytes("utf-8"));
 
         mSettings.restore(is);
-        OverlayInfo oi = mSettings.getOverlayInfo("com.dummy.overlay", 1234);
+        OverlayInfo oi = mSettings.getOverlayInfo("com.test.overlay", 1234);
         assertNotNull(oi);
-        assertEquals("com.dummy.overlay", oi.packageName);
-        assertEquals("com.dummy.target", oi.targetPackageName);
-        assertEquals("/data/app/com.dummy.overlay-1/base.apk", oi.baseCodePath);
+        assertEquals("com.test.overlay", oi.packageName);
+        assertEquals("com.test.target", oi.targetPackageName);
+        assertEquals("/data/app/com.test.overlay-1/base.apk", oi.baseCodePath);
         assertEquals(1234, oi.userId);
         assertEquals(STATE_DISABLED, oi.state);
-        assertFalse(mSettings.getEnabled("com.dummy.overlay", 1234));
+        assertFalse(mSettings.getEnabled("com.test.overlay", 1234));
     }
 
     @Test
diff --git a/services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java b/services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java
index 2623094..37aedac 100644
--- a/services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java
@@ -365,7 +365,25 @@
     }
 
     @Test
-    public void testForceQueryable_DoesntFilter() throws Exception {
+    public void testForceQueryable_SystemDoesntFilter() throws Exception {
+        final AppsFilter appsFilter =
+                new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null);
+        simulateAddBasicAndroid(appsFilter);
+        appsFilter.onSystemReady();
+
+        PackageSetting target = simulateAddPackage(appsFilter,
+                pkg("com.some.package").setForceQueryable(true), DUMMY_TARGET_APPID,
+                setting -> setting.setPkgFlags(ApplicationInfo.FLAG_SYSTEM));
+        PackageSetting calling = simulateAddPackage(appsFilter,
+                pkg("com.some.other.package"), DUMMY_CALLING_APPID);
+
+        assertFalse(appsFilter.shouldFilterApplication(DUMMY_CALLING_APPID, calling, target,
+                SYSTEM_USER));
+    }
+
+
+    @Test
+    public void testForceQueryable_NonSystemFilters() throws Exception {
         final AppsFilter appsFilter =
                 new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null);
         simulateAddBasicAndroid(appsFilter);
@@ -376,7 +394,7 @@
         PackageSetting calling = simulateAddPackage(appsFilter,
                 pkg("com.some.other.package"), DUMMY_CALLING_APPID);
 
-        assertFalse(appsFilter.shouldFilterApplication(DUMMY_CALLING_APPID, calling, target,
+        assertTrue(appsFilter.shouldFilterApplication(DUMMY_CALLING_APPID, calling, target,
                 SYSTEM_USER));
     }
 
diff --git a/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
index 44bb58f..22b0715 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
@@ -639,7 +639,7 @@
         UserInfo user1 = createUser("User 1", 0);
         UserInfo user2 = createUser("User 2", 0);
         long[] serialNumbersOfUsers = mUserManager.getSerialNumbersOfUsers(false);
-        assertThat(serialNumbersOfUsers).asList().containsAllOf(
+        assertThat(serialNumbersOfUsers).asList().containsAtLeast(
                 (long) user1.serialNumber, (long) user2.serialNumber);
     }
 
diff --git a/services/tests/servicestests/src/com/android/server/power/AttentionDetectorTest.java b/services/tests/servicestests/src/com/android/server/power/AttentionDetectorTest.java
index e7e8aca..4381bfd 100644
--- a/services/tests/servicestests/src/com/android/server/power/AttentionDetectorTest.java
+++ b/services/tests/servicestests/src/com/android/server/power/AttentionDetectorTest.java
@@ -21,6 +21,7 @@
 
 import static com.android.server.power.AttentionDetector.DEFAULT_POST_DIM_CHECK_DURATION_MILLIS;
 import static com.android.server.power.AttentionDetector.DEFAULT_PRE_DIM_CHECK_DURATION_MILLIS;
+import static com.android.server.power.AttentionDetector.KEY_MAX_EXTENSION_MILLIS;
 import static com.android.server.power.AttentionDetector.KEY_POST_DIM_CHECK_DURATION_MILLIS;
 import static com.android.server.power.AttentionDetector.KEY_PRE_DIM_CHECK_DURATION_MILLIS;
 
@@ -87,6 +88,7 @@
         when(mWindowManagerInternal.isKeyguardShowingAndNotOccluded()).thenReturn(false);
         mAttentionDetector = new TestableAttentionDetector();
         mRealAttentionDetector = new AttentionDetector(mOnUserAttention, new Object());
+        mRealAttentionDetector.mDefaultMaximumExtensionMillis = 900_000L;
         mAttentionDetector.onWakefulnessChangeStarted(PowerManagerInternal.WAKEFULNESS_AWAKE);
         mAttentionDetector.setAttentionServiceSupported(true);
         mNextDimming = SystemClock.uptimeMillis() + 3000L;
@@ -98,6 +100,10 @@
         Settings.Secure.putIntForUser(getContext().getContentResolver(),
                 Settings.Secure.ADAPTIVE_SLEEP, 1, UserHandle.USER_CURRENT);
         mAttentionDetector.updateEnabledFromSettings(getContext());
+
+        DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE,
+                KEY_MAX_EXTENSION_MILLIS,
+                Long.toString(10_000L), false);
     }
 
     @After
@@ -111,6 +117,9 @@
         DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE,
                 KEY_POST_DIM_CHECK_DURATION_MILLIS,
                 Long.toString(DEFAULT_POST_DIM_CHECK_DURATION_MILLIS), false);
+        DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE,
+                KEY_MAX_EXTENSION_MILLIS,
+                Long.toString(mRealAttentionDetector.mDefaultMaximumExtensionMillis), false);
     }
 
     @Test
@@ -393,6 +402,42 @@
                 DEFAULT_POST_DIM_CHECK_DURATION_MILLIS);
     }
 
+    @Test
+    public void testGetMaxExtensionMillis_handlesGoodFlagValue() {
+        DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE,
+                KEY_MAX_EXTENSION_MILLIS, "123", false);
+        assertThat(mRealAttentionDetector.getMaxExtensionMillis()).isEqualTo(123);
+    }
+
+    @Test
+    public void testGetMaxExtensionMillis_rejectsNegativeValue() {
+        DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE,
+                KEY_MAX_EXTENSION_MILLIS, "-50", false);
+        assertThat(mRealAttentionDetector.getMaxExtensionMillis()).isEqualTo(
+                mRealAttentionDetector.mDefaultMaximumExtensionMillis);
+    }
+
+    @Test
+    public void testGetMaxExtensionMillis_rejectsTooBigValue() {
+        DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE,
+                KEY_MAX_EXTENSION_MILLIS, "9900000", false);
+        assertThat(mRealAttentionDetector.getMaxExtensionMillis()).isEqualTo(
+                mRealAttentionDetector.mDefaultMaximumExtensionMillis);
+    }
+
+    @Test
+    public void testGetMaxExtensionMillis_handlesBadFlagValue() {
+        DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE,
+                KEY_MAX_EXTENSION_MILLIS, "20000k", false);
+        assertThat(mRealAttentionDetector.getMaxExtensionMillis()).isEqualTo(
+                mRealAttentionDetector.mDefaultMaximumExtensionMillis);
+
+        DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE,
+                KEY_MAX_EXTENSION_MILLIS, "0.25", false);
+        assertThat(mRealAttentionDetector.getMaxExtensionMillis()).isEqualTo(
+                mRealAttentionDetector.mDefaultMaximumExtensionMillis);
+    }
+
     private long registerAttention() {
         mPreDimCheckDuration = 4000L;
         mAttentionDetector.onUserActivity(SystemClock.uptimeMillis(),
@@ -409,7 +454,6 @@
             mWindowManager = mWindowManagerInternal;
             mPackageManager = AttentionDetectorTest.this.mPackageManager;
             mContentResolver = getContext().getContentResolver();
-            mMaximumExtensionMillis = 10000L;
         }
 
         void setAttentionServiceSupported(boolean supported) {
diff --git a/services/tests/servicestests/src/com/android/server/rollback/RollbackStoreTest.java b/services/tests/servicestests/src/com/android/server/rollback/RollbackStoreTest.java
index 102d5bb..cc32d5c 100644
--- a/services/tests/servicestests/src/com/android/server/rollback/RollbackStoreTest.java
+++ b/services/tests/servicestests/src/com/android/server/rollback/RollbackStoreTest.java
@@ -48,41 +48,25 @@
     private static final String INSTALLER = "some.installer";
 
     private static final Correspondence<VersionedPackage, VersionedPackage> VER_PKG_CORR =
-            new Correspondence<VersionedPackage, VersionedPackage>() {
-                @Override
-                public boolean compare(VersionedPackage a, VersionedPackage b) {
-                    if (a == null || b == null) {
-                        return a == b;
-                    }
-                    return a.equals(b);
+            Correspondence.from((VersionedPackage a, VersionedPackage b) -> {
+                if (a == null || b == null) {
+                    return a == b;
                 }
-
-                @Override
-                public String toString() {
-                    return "is the same as";
-                }
-            };
+                return a.equals(b);
+            }, "is the same as");
 
     private static final Correspondence<PackageRollbackInfo.RestoreInfo,
             PackageRollbackInfo.RestoreInfo>
             RESTORE_INFO_CORR =
-            new Correspondence<PackageRollbackInfo.RestoreInfo, PackageRollbackInfo.RestoreInfo>() {
-                @Override
-                public boolean compare(PackageRollbackInfo.RestoreInfo a,
-                        PackageRollbackInfo.RestoreInfo b) {
-                    if (a == null || b == null) {
-                        return a == b;
-                    }
-                    return a.userId == b.userId
-                            && a.appId == b.appId
-                            && Objects.equals(a.seInfo, b.seInfo);
+            Correspondence.from((PackageRollbackInfo.RestoreInfo a,
+                    PackageRollbackInfo.RestoreInfo b) -> {
+                if (a == null || b == null) {
+                    return a == b;
                 }
-
-                @Override
-                public String toString() {
-                    return "is the same as";
-                }
-            };
+                return a.userId == b.userId
+                        && a.appId == b.appId
+                        && Objects.equals(a.seInfo, b.seInfo);
+            }, "is the same as");
 
     private static final String JSON_ROLLBACK_NO_EXT = "{'info':{'rollbackId':123,'packages':"
             + "[{'versionRolledBackFrom':{'packageName':'blah','longVersionCode':55},"
diff --git a/services/tests/servicestests/src/com/android/server/storage/DiskStatsFileLoggerTest.java b/services/tests/servicestests/src/com/android/server/storage/DiskStatsFileLoggerTest.java
index 46224cb..8fb2e68 100644
--- a/services/tests/servicestests/src/com/android/server/storage/DiskStatsFileLoggerTest.java
+++ b/services/tests/servicestests/src/com/android/server/storage/DiskStatsFileLoggerTest.java
@@ -132,7 +132,7 @@
                     appSizes.getLong(i), cacheSizes.getLong(i));
             apps.add(app);
         }
-        assertThat(apps).containsAllOf(new AppSizeGrouping("com.test.app", 1100, 20),
+        assertThat(apps).containsAtLeast(new AppSizeGrouping("com.test.app", 1100, 20),
                 new AppSizeGrouping("com.test.app2", 11, 2));
     }
 
diff --git a/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java b/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java
index 2eeeb3e..22addf9 100644
--- a/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java
@@ -132,15 +132,14 @@
         doNothing().when(mMockContext).enforceCallingOrSelfPermission(anyString(), any());
 
         ManualTimeSuggestion manualTimeSuggestion = createManualTimeSuggestion();
-        mTimeDetectorService.suggestManualTime(manualTimeSuggestion);
-        mTestHandler.assertTotalMessagesEnqueued(1);
+
+        assertTrue(mTimeDetectorService.suggestManualTime(manualTimeSuggestion));
+        mStubbedTimeDetectorStrategy.verifySuggestManualTimeCalled(manualTimeSuggestion);
 
         verify(mMockContext).enforceCallingOrSelfPermission(
                 eq(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE),
                 anyString());
 
-        mTestHandler.waitForMessagesToBeProcessed();
-        mStubbedTimeDetectorStrategy.verifySuggestManualTimeCalled(manualTimeSuggestion);
     }
 
     @Test(expected = SecurityException.class)
@@ -227,17 +226,14 @@
         private boolean mDumpCalled;
 
         @Override
-        public void initialize(Callback ignored) {
-        }
-
-        @Override
         public void suggestTelephonyTime(TelephonyTimeSuggestion timeSuggestion) {
             mLastTelephonySuggestion = timeSuggestion;
         }
 
         @Override
-        public void suggestManualTime(ManualTimeSuggestion timeSuggestion) {
+        public boolean suggestManualTime(ManualTimeSuggestion timeSuggestion) {
             mLastManualSuggestion = timeSuggestion;
+            return true;
         }
 
         @Override
@@ -246,7 +242,7 @@
         }
 
         @Override
-        public void handleAutoTimeDetectionChanged() {
+        public void handleAutoTimeConfigChanged() {
             mHandleAutoTimeDetectionChangedCalled = true;
         }
 
@@ -267,11 +263,11 @@
             assertEquals(expectedSuggestion, mLastTelephonySuggestion);
         }
 
-        public void verifySuggestManualTimeCalled(ManualTimeSuggestion expectedSuggestion) {
+        void verifySuggestManualTimeCalled(ManualTimeSuggestion expectedSuggestion) {
             assertEquals(expectedSuggestion, mLastManualSuggestion);
         }
 
-        public void verifySuggestNetworkTimeCalled(NetworkTimeSuggestion expectedSuggestion) {
+        void verifySuggestNetworkTimeCalled(NetworkTimeSuggestion expectedSuggestion) {
             assertEquals(expectedSuggestion, mLastNetworkSuggestion);
         }
 
diff --git a/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorStrategyImplTest.java b/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorStrategyImplTest.java
index 803b245..c23fb80 100644
--- a/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorStrategyImplTest.java
+++ b/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorStrategyImplTest.java
@@ -16,6 +16,9 @@
 
 package com.android.server.timedetector;
 
+import static com.android.server.timedetector.TimeDetectorStrategy.ORIGIN_NETWORK;
+import static com.android.server.timedetector.TimeDetectorStrategy.ORIGIN_TELEPHONY;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
@@ -25,32 +28,39 @@
 import android.app.timedetector.ManualTimeSuggestion;
 import android.app.timedetector.NetworkTimeSuggestion;
 import android.app.timedetector.TelephonyTimeSuggestion;
-import android.icu.util.Calendar;
-import android.icu.util.GregorianCalendar;
-import android.icu.util.TimeZone;
 import android.os.TimestampedValue;
 
 import androidx.test.runner.AndroidJUnit4;
 
+import com.android.server.timedetector.TimeDetectorStrategy.Origin;
+
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
 import java.time.Duration;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
 
 @RunWith(AndroidJUnit4.class)
 public class TimeDetectorStrategyImplTest {
 
-    private static final TimestampedValue<Long> ARBITRARY_CLOCK_INITIALIZATION_INFO =
+    private static final Instant TIME_LOWER_BOUND = createUtcTime(2009, 1, 1, 12, 0, 0);
+
+    private static final TimestampedValue<Instant> ARBITRARY_CLOCK_INITIALIZATION_INFO =
             new TimestampedValue<>(
                     123456789L /* realtimeClockMillis */,
-                    createUtcTime(2008, 5, 23, 12, 0, 0));
+                    createUtcTime(2010, 5, 23, 12, 0, 0));
+
+    // This is the traditional ordering for time detection on Android.
+    private static final @Origin int [] PROVIDERS_PRIORITY = { ORIGIN_TELEPHONY, ORIGIN_NETWORK };
 
     /**
      * An arbitrary time, very different from the {@link #ARBITRARY_CLOCK_INITIALIZATION_INFO}
      * time. Can be used as the basis for time suggestions.
      */
-    private static final long ARBITRARY_TEST_TIME_MILLIS = createUtcTime(2018, 1, 1, 12, 0, 0);
+    private static final Instant ARBITRARY_TEST_TIME = createUtcTime(2018, 1, 1, 12, 0, 0);
 
     private static final int ARBITRARY_SLOT_INDEX = 123456;
 
@@ -67,10 +77,10 @@
                 .pokeAutoTimeDetectionEnabled(true);
 
         int slotIndex = ARBITRARY_SLOT_INDEX;
-        long testTimeMillis = ARBITRARY_TEST_TIME_MILLIS;
+        Instant testTime = ARBITRARY_TEST_TIME;
 
         TelephonyTimeSuggestion timeSuggestion =
-                mScript.generateTelephonyTimeSuggestion(slotIndex, testTimeMillis);
+                mScript.generateTelephonyTimeSuggestion(slotIndex, testTime);
         mScript.simulateTimePassing()
                 .simulateTelephonyTimeSuggestion(timeSuggestion);
 
@@ -106,9 +116,9 @@
         // Send the first time signal. It should be used.
         {
             TelephonyTimeSuggestion timeSuggestion1 =
-                    mScript.generateTelephonyTimeSuggestion(slotIndex, ARBITRARY_TEST_TIME_MILLIS);
+                    mScript.generateTelephonyTimeSuggestion(slotIndex, ARBITRARY_TEST_TIME);
 
-            // Increment the the device clocks to simulate the passage of time.
+            // Increment the device clocks to simulate the passage of time.
             mScript.simulateTimePassing(clockIncrementMillis);
 
             long expectedSystemClockMillis1 =
@@ -157,13 +167,13 @@
         // uses the lowest slotIndex when multiple telephony suggestions are available.
         int slotIndex1 = ARBITRARY_SLOT_INDEX;
         int slotIndex2 = ARBITRARY_SLOT_INDEX + 1;
-        long slotIndex1TimeMillis = ARBITRARY_TEST_TIME_MILLIS;
-        long slotIndex2TimeMillis = ARBITRARY_TEST_TIME_MILLIS + Duration.ofDays(1).toMillis();
+        Instant slotIndex1Time = ARBITRARY_TEST_TIME;
+        Instant slotIndex2Time = ARBITRARY_TEST_TIME.plus(Duration.ofDays(1));
 
         // Make a suggestion with slotIndex2.
         {
             TelephonyTimeSuggestion slotIndex2TimeSuggestion =
-                    mScript.generateTelephonyTimeSuggestion(slotIndex2, slotIndex2TimeMillis);
+                    mScript.generateTelephonyTimeSuggestion(slotIndex2, slotIndex2Time);
             mScript.simulateTimePassing();
 
             long expectedSystemClockMillis =
@@ -180,7 +190,7 @@
         // Now make a different suggestion with slotIndex1.
         {
             TelephonyTimeSuggestion slotIndex1TimeSuggestion =
-                    mScript.generateTelephonyTimeSuggestion(slotIndex1, slotIndex1TimeMillis);
+                    mScript.generateTelephonyTimeSuggestion(slotIndex1, slotIndex1Time);
             mScript.simulateTimePassing();
 
             long expectedSystemClockMillis =
@@ -198,7 +208,7 @@
         // slotIndex1 suggestion will still "win".
         {
             TelephonyTimeSuggestion slotIndex2TimeSuggestion =
-                    mScript.generateTelephonyTimeSuggestion(slotIndex2, slotIndex2TimeMillis);
+                    mScript.generateTelephonyTimeSuggestion(slotIndex2, slotIndex2Time);
             mScript.simulateTimePassing();
 
             mScript.simulateTelephonyTimeSuggestion(slotIndex2TimeSuggestion)
@@ -213,7 +223,7 @@
         // is in an older "bucket".
         {
             TelephonyTimeSuggestion slotIndex2TimeSuggestion =
-                    mScript.generateTelephonyTimeSuggestion(slotIndex2, slotIndex2TimeMillis);
+                    mScript.generateTelephonyTimeSuggestion(slotIndex2, slotIndex2Time);
             mScript.simulateTimePassing();
 
             long expectedSystemClockMillis =
@@ -232,7 +242,7 @@
 
         int slotIndex = ARBITRARY_SLOT_INDEX;
         TelephonyTimeSuggestion timeSuggestion =
-                mScript.generateTelephonyTimeSuggestion(slotIndex, ARBITRARY_TEST_TIME_MILLIS);
+                mScript.generateTelephonyTimeSuggestion(slotIndex, ARBITRARY_TEST_TIME);
         mScript.simulateTimePassing()
                 .simulateTelephonyTimeSuggestion(timeSuggestion)
                 .verifySystemClockWasNotSetAndResetCallTracking()
@@ -246,11 +256,11 @@
                 .pokeThresholds(systemClockUpdateThreshold)
                 .pokeAutoTimeDetectionEnabled(true);
 
-        long testTimeMillis = ARBITRARY_TEST_TIME_MILLIS;
+        Instant testTime = ARBITRARY_TEST_TIME;
         int slotIndex = ARBITRARY_SLOT_INDEX;
 
         TelephonyTimeSuggestion timeSuggestion1 =
-                mScript.generateTelephonyTimeSuggestion(slotIndex, testTimeMillis);
+                mScript.generateTelephonyTimeSuggestion(slotIndex, testTime);
         TimestampedValue<Long> utcTime1 = timeSuggestion1.getUtcTime();
 
         // Initialize the strategy / device with a time set from a telephony suggestion.
@@ -300,6 +310,23 @@
     }
 
     @Test
+    public void telephonyTimeSuggestion_ignoredWhenReferencedTimeIsInThePast() {
+        mScript.pokeFakeClocks(ARBITRARY_CLOCK_INITIALIZATION_INFO)
+                .pokeAutoTimeDetectionEnabled(true);
+
+        int slotIndex = ARBITRARY_SLOT_INDEX;
+        Instant suggestedTime = TIME_LOWER_BOUND.minus(Duration.ofDays(1));
+
+        TelephonyTimeSuggestion timeSuggestion =
+                mScript.generateTelephonyTimeSuggestion(
+                        slotIndex, suggestedTime);
+
+        mScript.simulateTelephonyTimeSuggestion(timeSuggestion)
+                .verifySystemClockWasNotSetAndResetCallTracking()
+                .assertLatestTelephonySuggestion(slotIndex, null);
+    }
+
+    @Test
     public void testSuggestTelephonyTime_timeDetectionToggled() {
         final int clockIncrementMillis = 100;
         final int systemClockUpdateThreshold = 2000;
@@ -308,9 +335,9 @@
                 .pokeAutoTimeDetectionEnabled(false);
 
         int slotIndex = ARBITRARY_SLOT_INDEX;
-        long testTimeMillis = ARBITRARY_TEST_TIME_MILLIS;
+        Instant testTime = ARBITRARY_TEST_TIME;
         TelephonyTimeSuggestion timeSuggestion1 =
-                mScript.generateTelephonyTimeSuggestion(slotIndex, testTimeMillis);
+                mScript.generateTelephonyTimeSuggestion(slotIndex, testTime);
         TimestampedValue<Long> utcTime1 = timeSuggestion1.getUtcTime();
 
         // Simulate time passing.
@@ -366,9 +393,9 @@
                 .pokeAutoTimeDetectionEnabled(true);
 
         int slotIndex = ARBITRARY_SLOT_INDEX;
-        long testTimeMillis = ARBITRARY_TEST_TIME_MILLIS;
+        Instant testTime = ARBITRARY_TEST_TIME;
         TelephonyTimeSuggestion telephonySuggestion =
-                mScript.generateTelephonyTimeSuggestion(slotIndex, testTimeMillis);
+                mScript.generateTelephonyTimeSuggestion(slotIndex, testTime);
 
         mScript.simulateTimePassing();
 
@@ -397,13 +424,13 @@
                 .pokeAutoTimeDetectionEnabled(false);
 
         ManualTimeSuggestion timeSuggestion =
-                mScript.generateManualTimeSuggestion(ARBITRARY_TEST_TIME_MILLIS);
+                mScript.generateManualTimeSuggestion(ARBITRARY_TEST_TIME);
 
         mScript.simulateTimePassing();
 
         long expectedSystemClockMillis =
                 mScript.calculateTimeInMillisForNow(timeSuggestion.getUtcTime());
-        mScript.simulateManualTimeSuggestion(timeSuggestion)
+        mScript.simulateManualTimeSuggestion(timeSuggestion, true /* expectedResult */)
                 .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis);
     }
 
@@ -416,9 +443,9 @@
         int slotIndex = ARBITRARY_SLOT_INDEX;
 
         // Simulate a telephony suggestion.
-        long testTimeMillis = ARBITRARY_TEST_TIME_MILLIS;
+        Instant testTime = ARBITRARY_TEST_TIME;
         TelephonyTimeSuggestion telephonyTimeSuggestion =
-                mScript.generateTelephonyTimeSuggestion(slotIndex, testTimeMillis);
+                mScript.generateTelephonyTimeSuggestion(slotIndex, testTime);
 
         // Simulate the passage of time.
         mScript.simulateTimePassing();
@@ -441,14 +468,14 @@
         mScript.simulateTimePassing();
 
         // Simulate a manual suggestion 1 day different from the auto suggestion.
-        long manualTimeMillis = testTimeMillis + Duration.ofDays(1).toMillis();
+        Instant manualTime = testTime.plus(Duration.ofDays(1));
         ManualTimeSuggestion manualTimeSuggestion =
-                mScript.generateManualTimeSuggestion(manualTimeMillis);
+                mScript.generateManualTimeSuggestion(manualTime);
         mScript.simulateTimePassing();
 
         long expectedManualClockMillis =
                 mScript.calculateTimeInMillisForNow(manualTimeSuggestion.getUtcTime());
-        mScript.simulateManualTimeSuggestion(manualTimeSuggestion)
+        mScript.simulateManualTimeSuggestion(manualTimeSuggestion, true /* expectedResult */)
                 .verifySystemClockWasSetAndResetCallTracking(expectedManualClockMillis)
                 .assertLatestTelephonySuggestion(slotIndex, telephonyTimeSuggestion);
 
@@ -469,29 +496,39 @@
                 .assertLatestTelephonySuggestion(slotIndex, telephonyTimeSuggestion);
     }
 
-    /**
-     * Manual suggestions should be ignored if auto time is enabled.
-     */
     @Test
-    public void testSuggestManualTime_autoTimeEnabled() {
+    public void manualTimeSuggestion_isIgnored_whenAutoTimeEnabled() {
         mScript.pokeFakeClocks(ARBITRARY_CLOCK_INITIALIZATION_INFO)
                 .pokeAutoTimeDetectionEnabled(true);
 
         ManualTimeSuggestion timeSuggestion =
-                mScript.generateManualTimeSuggestion(ARBITRARY_TEST_TIME_MILLIS);
+                mScript.generateManualTimeSuggestion(ARBITRARY_TEST_TIME);
 
         mScript.simulateTimePassing()
-                .simulateManualTimeSuggestion(timeSuggestion)
+                .simulateManualTimeSuggestion(timeSuggestion, false /* expectedResult */)
                 .verifySystemClockWasNotSetAndResetCallTracking();
     }
 
     @Test
+    public void manualTimeSuggestion_ignoresTimeLowerBound() {
+        mScript.pokeFakeClocks(ARBITRARY_CLOCK_INITIALIZATION_INFO)
+                .pokeAutoTimeDetectionEnabled(false);
+        Instant suggestedTime = TIME_LOWER_BOUND.minus(Duration.ofDays(1));
+
+        ManualTimeSuggestion timeSuggestion =
+                mScript.generateManualTimeSuggestion(suggestedTime);
+
+        mScript.simulateManualTimeSuggestion(timeSuggestion, true /* expectedResult */)
+                .verifySystemClockWasSetAndResetCallTracking(suggestedTime.toEpochMilli());
+    }
+
+    @Test
     public void testSuggestNetworkTime_autoTimeEnabled() {
         mScript.pokeFakeClocks(ARBITRARY_CLOCK_INITIALIZATION_INFO)
                 .pokeAutoTimeDetectionEnabled(true);
 
         NetworkTimeSuggestion timeSuggestion =
-                mScript.generateNetworkTimeSuggestion(ARBITRARY_TEST_TIME_MILLIS);
+                mScript.generateNetworkTimeSuggestion(ARBITRARY_TEST_TIME);
 
         mScript.simulateTimePassing();
 
@@ -507,7 +544,7 @@
                 .pokeAutoTimeDetectionEnabled(false);
 
         NetworkTimeSuggestion timeSuggestion =
-                mScript.generateNetworkTimeSuggestion(ARBITRARY_TEST_TIME_MILLIS);
+                mScript.generateNetworkTimeSuggestion(ARBITRARY_TEST_TIME);
 
         mScript.simulateTimePassing()
                 .simulateNetworkTimeSuggestion(timeSuggestion)
@@ -520,16 +557,16 @@
                 .pokeAutoTimeDetectionEnabled(true);
 
         // Three obviously different times that could not be mistaken for each other.
-        long networkTimeMillis1 = ARBITRARY_TEST_TIME_MILLIS;
-        long networkTimeMillis2 = ARBITRARY_TEST_TIME_MILLIS + Duration.ofDays(30).toMillis();
-        long telephonyTimeMillis = ARBITRARY_TEST_TIME_MILLIS + Duration.ofDays(60).toMillis();
+        Instant networkTime1 = ARBITRARY_TEST_TIME;
+        Instant networkTime2 = ARBITRARY_TEST_TIME.plus(Duration.ofDays(30));
+        Instant telephonyTime = ARBITRARY_TEST_TIME.plus(Duration.ofDays(60));
         // A small increment used to simulate the passage of time, but not enough to interfere with
         // macro-level time changes associated with suggestion age.
         final long smallTimeIncrementMillis = 101;
 
         // A network suggestion is made. It should be used because there is no telephony suggestion.
         NetworkTimeSuggestion networkTimeSuggestion1 =
-                mScript.generateNetworkTimeSuggestion(networkTimeMillis1);
+                mScript.generateNetworkTimeSuggestion(networkTime1);
         mScript.simulateTimePassing(smallTimeIncrementMillis)
                 .simulateNetworkTimeSuggestion(networkTimeSuggestion1)
                 .verifySystemClockWasSetAndResetCallTracking(
@@ -548,7 +585,7 @@
         // Now a telephony suggestion is made. Telephony suggestions are prioritized over network
         // suggestions so it should "win".
         TelephonyTimeSuggestion telephonyTimeSuggestion =
-                mScript.generateTelephonyTimeSuggestion(ARBITRARY_SLOT_INDEX, telephonyTimeMillis);
+                mScript.generateTelephonyTimeSuggestion(ARBITRARY_SLOT_INDEX, telephonyTime);
         mScript.simulateTimePassing(smallTimeIncrementMillis)
                 .simulateTelephonyTimeSuggestion(telephonyTimeSuggestion)
                 .verifySystemClockWasSetAndResetCallTracking(
@@ -568,7 +605,7 @@
         // Now another network suggestion is made. Telephony suggestions are prioritized over
         // network suggestions so the latest telephony suggestion should still "win".
         NetworkTimeSuggestion networkTimeSuggestion2 =
-                mScript.generateNetworkTimeSuggestion(networkTimeMillis2);
+                mScript.generateNetworkTimeSuggestion(networkTime2);
         mScript.simulateTimePassing(smallTimeIncrementMillis)
                 .simulateNetworkTimeSuggestion(networkTimeSuggestion2)
                 .verifySystemClockWasNotSetAndResetCallTracking();
@@ -612,16 +649,98 @@
         assertNull(mScript.peekBestTelephonySuggestion());
     }
 
+    @Test
+    public void networkTimeSuggestion_ignoredWhenReferencedTimeIsInThePast() {
+        mScript.pokeFakeClocks(ARBITRARY_CLOCK_INITIALIZATION_INFO)
+                .pokeAutoTimeDetectionEnabled(true);
+
+        Instant suggestedTime = TIME_LOWER_BOUND.minus(Duration.ofDays(1));
+        NetworkTimeSuggestion timeSuggestion = mScript
+                .generateNetworkTimeSuggestion(suggestedTime);
+
+        mScript.simulateNetworkTimeSuggestion(timeSuggestion)
+                .verifySystemClockWasNotSetAndResetCallTracking()
+                .assertLatestNetworkSuggestion(null);
+    }
+
+    @Test
+    public void whenAllTimeSuggestionsAreAvailable_higherPriorityWins_lowerPriorityComesFirst() {
+        mScript.pokeFakeClocks(ARBITRARY_CLOCK_INITIALIZATION_INFO)
+                .pokeAutoTimeDetectionEnabled(true);
+
+        Instant networkTime = ARBITRARY_TEST_TIME;
+        Instant telephonyTime = ARBITRARY_TEST_TIME.plus(Duration.ofDays(30));
+
+        NetworkTimeSuggestion networkTimeSuggestion =
+                mScript.generateNetworkTimeSuggestion(networkTime);
+        TelephonyTimeSuggestion telephonyTimeSuggestion =
+                mScript.generateTelephonyTimeSuggestion(ARBITRARY_SLOT_INDEX, telephonyTime);
+
+        mScript.simulateNetworkTimeSuggestion(networkTimeSuggestion)
+                .simulateTelephonyTimeSuggestion(telephonyTimeSuggestion)
+                .assertLatestNetworkSuggestion(networkTimeSuggestion)
+                .assertLatestTelephonySuggestion(ARBITRARY_SLOT_INDEX, telephonyTimeSuggestion)
+                .verifySystemClockWasSetAndResetCallTracking(telephonyTime.toEpochMilli());
+    }
+
+    @Test
+    public void whenAllTimeSuggestionsAreAvailable_higherPriorityWins_higherPriorityComesFirst() {
+        mScript.pokeFakeClocks(ARBITRARY_CLOCK_INITIALIZATION_INFO)
+                .pokeAutoTimeDetectionEnabled(true);
+
+        Instant networkTime = ARBITRARY_TEST_TIME;
+        Instant telephonyTime = ARBITRARY_TEST_TIME.plus(Duration.ofDays(30));
+
+        NetworkTimeSuggestion networkTimeSuggestion =
+                mScript.generateNetworkTimeSuggestion(networkTime);
+        TelephonyTimeSuggestion telephonyTimeSuggestion =
+                mScript.generateTelephonyTimeSuggestion(ARBITRARY_SLOT_INDEX, telephonyTime);
+
+        mScript.simulateTelephonyTimeSuggestion(telephonyTimeSuggestion)
+                .simulateNetworkTimeSuggestion(networkTimeSuggestion)
+                .assertLatestNetworkSuggestion(networkTimeSuggestion)
+                .assertLatestTelephonySuggestion(ARBITRARY_SLOT_INDEX, telephonyTimeSuggestion)
+                .verifySystemClockWasSetAndResetCallTracking(telephonyTime.toEpochMilli());
+    }
+
+    @Test
+    public void whenHighestPrioritySuggestionIsNotAvailable_fallbacksToNext() {
+        mScript.pokeFakeClocks(ARBITRARY_CLOCK_INITIALIZATION_INFO)
+                .pokeAutoTimeDetectionEnabled(true);
+
+        NetworkTimeSuggestion timeSuggestion =
+                mScript.generateNetworkTimeSuggestion(ARBITRARY_TEST_TIME);
+
+        mScript.simulateNetworkTimeSuggestion(timeSuggestion)
+                .assertLatestNetworkSuggestion(timeSuggestion)
+                .verifySystemClockWasSetAndResetCallTracking(ARBITRARY_TEST_TIME.toEpochMilli());
+    }
+
+    @Test
+    public void suggestionsFromSourceNotListedInPrioritiesList_areIgnored() {
+        mScript.pokeFakeClocks(ARBITRARY_CLOCK_INITIALIZATION_INFO)
+                .pokeAutoTimeDetectionEnabled(true)
+                .pokeAutoOriginPriorities(new int[]{ORIGIN_TELEPHONY});
+
+        NetworkTimeSuggestion timeSuggestion = mScript.generateNetworkTimeSuggestion(
+                ARBITRARY_TEST_TIME);
+
+        mScript.simulateNetworkTimeSuggestion(timeSuggestion)
+                .assertLatestNetworkSuggestion(timeSuggestion)
+                .verifySystemClockWasNotSetAndResetCallTracking();
+    }
+
     /**
      * A fake implementation of TimeDetectorStrategy.Callback. Besides tracking changes and behaving
      * like the real thing should, it also asserts preconditions.
      */
-    private static class FakeCallback implements TimeDetectorStrategy.Callback {
+    private static class FakeCallback implements TimeDetectorStrategyImpl.Callback {
         private boolean mAutoTimeDetectionEnabled;
         private boolean mWakeLockAcquired;
         private long mElapsedRealtimeMillis;
         private long mSystemClockMillis;
         private int mSystemClockUpdateThresholdMillis = 2000;
+        private int[] mAutoOriginPriorities = PROVIDERS_PRIORITY;
 
         // Tracking operations.
         private boolean mSystemClockWasSet;
@@ -637,6 +756,16 @@
         }
 
         @Override
+        public Instant autoTimeLowerBound() {
+            return TIME_LOWER_BOUND;
+        }
+
+        @Override
+        public int[] getAutoOriginPriorities() {
+            return mAutoOriginPriorities;
+        }
+
+        @Override
         public void acquireWakeLock() {
             if (mWakeLockAcquired) {
                 fail("Wake lock already acquired");
@@ -685,6 +814,10 @@
             mAutoTimeDetectionEnabled = enabled;
         }
 
+        void pokeAutoOriginPriorities(@Origin int[] autoOriginPriorities) {
+            mAutoOriginPriorities = autoOriginPriorities;
+        }
+
         long peekElapsedRealtimeMillis() {
             return mElapsedRealtimeMillis;
         }
@@ -703,7 +836,10 @@
         }
 
         void verifySystemClockNotSet() {
-            assertFalse(mSystemClockWasSet);
+            assertFalse(
+                    String.format("System clock was manipulated and set to %s(=%s)",
+                            Instant.ofEpochMilli(mSystemClockMillis), mSystemClockMillis),
+                    mSystemClockWasSet);
         }
 
         void verifySystemClockWasSet(long expectedSystemClockMillis) {
@@ -731,9 +867,7 @@
 
         Script() {
             mFakeCallback = new FakeCallback();
-            mTimeDetectorStrategy = new TimeDetectorStrategyImpl();
-            mTimeDetectorStrategy.initialize(mFakeCallback);
-
+            mTimeDetectorStrategy = new TimeDetectorStrategyImpl(mFakeCallback);
         }
 
         Script pokeAutoTimeDetectionEnabled(boolean enabled) {
@@ -741,9 +875,9 @@
             return this;
         }
 
-        Script pokeFakeClocks(TimestampedValue<Long> timeInfo) {
+        Script pokeFakeClocks(TimestampedValue<Instant> timeInfo) {
             mFakeCallback.pokeElapsedRealtimeMillis(timeInfo.getReferenceTimeMillis());
-            mFakeCallback.pokeSystemClockMillis(timeInfo.getValue());
+            mFakeCallback.pokeSystemClockMillis(timeInfo.getValue().toEpochMilli());
             return this;
         }
 
@@ -752,6 +886,11 @@
             return this;
         }
 
+        Script pokeAutoOriginPriorities(@Origin int[] autoOriginPriorites) {
+            mFakeCallback.pokeAutoOriginPriorities(autoOriginPriorites);
+            return this;
+        }
+
         long peekElapsedRealtimeMillis() {
             return mFakeCallback.peekElapsedRealtimeMillis();
         }
@@ -765,8 +904,15 @@
             return this;
         }
 
-        Script simulateManualTimeSuggestion(ManualTimeSuggestion timeSuggestion) {
-            mTimeDetectorStrategy.suggestManualTime(timeSuggestion);
+        Script simulateManualTimeSuggestion(
+                ManualTimeSuggestion timeSuggestion, boolean expectedResult) {
+            String errorMessage = expectedResult
+                    ? "Manual time suggestion was ignored, but expected to be accepted."
+                    : "Manual time suggestion was accepted, but expected to be ignored.";
+            assertEquals(
+                    errorMessage,
+                    expectedResult,
+                    mTimeDetectorStrategy.suggestManualTime(timeSuggestion));
             return this;
         }
 
@@ -777,7 +923,7 @@
 
         Script simulateAutoTimeDetectionToggle() {
             mFakeCallback.simulateAutoTimeZoneDetectionToggle();
-            mTimeDetectorStrategy.handleAutoTimeDetectionChanged();
+            mTimeDetectorStrategy.handleAutoTimeConfigChanged();
             return this;
         }
 
@@ -809,7 +955,10 @@
          * White box test info: Asserts the latest suggestion for the slotIndex is as expected.
          */
         Script assertLatestTelephonySuggestion(int slotIndex, TelephonyTimeSuggestion expected) {
-            assertEquals(expected, mTimeDetectorStrategy.getLatestTelephonySuggestion(slotIndex));
+            assertEquals(
+                    "Expected to see " + expected + " at slotIndex=" + slotIndex + ", but got "
+                            + mTimeDetectorStrategy.getLatestTelephonySuggestion(slotIndex),
+                    expected, mTimeDetectorStrategy.getLatestTelephonySuggestion(slotIndex));
             return this;
         }
 
@@ -841,9 +990,11 @@
          * Generates a ManualTimeSuggestion using the current elapsed realtime clock for the
          * reference time.
          */
-        ManualTimeSuggestion generateManualTimeSuggestion(long timeMillis) {
+        ManualTimeSuggestion generateManualTimeSuggestion(Instant suggestedTime) {
             TimestampedValue<Long> utcTime =
-                    new TimestampedValue<>(mFakeCallback.peekElapsedRealtimeMillis(), timeMillis);
+                    new TimestampedValue<>(
+                            mFakeCallback.peekElapsedRealtimeMillis(),
+                            suggestedTime.toEpochMilli());
             return new ManualTimeSuggestion(utcTime);
         }
 
@@ -851,21 +1002,33 @@
          * Generates a {@link TelephonyTimeSuggestion} using the current elapsed realtime clock for
          * the reference time.
          */
-        TelephonyTimeSuggestion generateTelephonyTimeSuggestion(int slotIndex, Long timeMillis) {
-            TimestampedValue<Long> time = null;
-            if (timeMillis != null) {
-                time = new TimestampedValue<>(peekElapsedRealtimeMillis(), timeMillis);
-            }
+        TelephonyTimeSuggestion generateTelephonyTimeSuggestion(int slotIndex, long timeMillis) {
+            TimestampedValue<Long> time =
+                    new TimestampedValue<>(peekElapsedRealtimeMillis(), timeMillis);
             return createTelephonyTimeSuggestion(slotIndex, time);
         }
 
         /**
+         * Generates a {@link TelephonyTimeSuggestion} using the current elapsed realtime clock for
+         * the reference time.
+         */
+        TelephonyTimeSuggestion generateTelephonyTimeSuggestion(
+                int slotIndex, Instant suggestedTime) {
+            if (suggestedTime == null) {
+                return createTelephonyTimeSuggestion(slotIndex, null);
+            }
+            return generateTelephonyTimeSuggestion(slotIndex, suggestedTime.toEpochMilli());
+        }
+
+        /**
          * Generates a NetworkTimeSuggestion using the current elapsed realtime clock for the
          * reference time.
          */
-        NetworkTimeSuggestion generateNetworkTimeSuggestion(long timeMillis) {
+        NetworkTimeSuggestion generateNetworkTimeSuggestion(Instant suggestedTime) {
             TimestampedValue<Long> utcTime =
-                    new TimestampedValue<>(mFakeCallback.peekElapsedRealtimeMillis(), timeMillis);
+                    new TimestampedValue<>(
+                            mFakeCallback.peekElapsedRealtimeMillis(),
+                            suggestedTime.toEpochMilli());
             return new NetworkTimeSuggestion(utcTime);
         }
 
@@ -885,11 +1048,9 @@
                 .build();
     }
 
-    private static long createUtcTime(int year, int monthInYear, int day, int hourOfDay, int minute,
-            int second) {
-        Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("Etc/UTC"));
-        cal.clear();
-        cal.set(year, monthInYear - 1, day, hourOfDay, minute, second);
-        return cal.getTimeInMillis();
+    private static Instant createUtcTime(int year, int monthInYear, int day, int hourOfDay,
+            int minute, int second) {
+        return LocalDateTime.of(year, monthInYear, day, hourOfDay, minute, second)
+                .toInstant(ZoneOffset.UTC);
     }
 }
diff --git a/services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorServiceTest.java b/services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorServiceTest.java
index da34e1b..baec558 100644
--- a/services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorServiceTest.java
@@ -96,15 +96,16 @@
         doNothing().when(mMockContext).enforceCallingOrSelfPermission(anyString(), any());
 
         ManualTimeZoneSuggestion timeZoneSuggestion = createManualTimeZoneSuggestion();
-        mTimeZoneDetectorService.suggestManualTimeZone(timeZoneSuggestion);
-        mTestHandler.assertTotalMessagesEnqueued(1);
+
+        boolean expectedResult = true; // The test strategy always returns true.
+        assertEquals(expectedResult,
+                mTimeZoneDetectorService.suggestManualTimeZone(timeZoneSuggestion));
+
+        mStubbedTimeZoneDetectorStrategy.verifySuggestManualTimeZoneCalled(timeZoneSuggestion);
 
         verify(mMockContext).enforceCallingOrSelfPermission(
                 eq(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE),
                 anyString());
-
-        mTestHandler.waitForMessagesToBeProcessed();
-        mStubbedTimeZoneDetectorStrategy.verifySuggestManualTimeZoneCalled(timeZoneSuggestion);
     }
 
     @Test(expected = SecurityException.class)
@@ -187,8 +188,9 @@
         private boolean mDumpCalled;
 
         @Override
-        public void suggestManualTimeZone(ManualTimeZoneSuggestion timeZoneSuggestion) {
+        public boolean suggestManualTimeZone(ManualTimeZoneSuggestion timeZoneSuggestion) {
             mLastManualSuggestion = timeZoneSuggestion;
+            return true;
         }
 
         @Override
diff --git a/services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorStrategyImplTest.java b/services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorStrategyImplTest.java
index 30bb12e..1fbe781 100644
--- a/services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorStrategyImplTest.java
+++ b/services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorStrategyImplTest.java
@@ -98,7 +98,7 @@
                 .initializeAutoTimeZoneDetection(true)
                 .initializeTimeZoneSetting(ARBITRARY_TIME_ZONE_ID);
 
-        script.suggestTelephonyTimeZone(slotIndex1TimeZoneSuggestion)
+        script.simulateTelephonyTimeZoneSuggestion(slotIndex1TimeZoneSuggestion)
                 .verifyTimeZoneNotSet();
 
         // Assert internal service state.
@@ -111,7 +111,7 @@
         assertEquals(expectedSlotIndex1ScoredSuggestion,
                 mTimeZoneDetectorStrategy.findBestTelephonySuggestionForTests());
 
-        script.suggestTelephonyTimeZone(slotIndex2TimeZoneSuggestion)
+        script.simulateTelephonyTimeZoneSuggestion(slotIndex2TimeZoneSuggestion)
                 .verifyTimeZoneNotSet();
 
         // Assert internal service state.
@@ -144,8 +144,7 @@
         {
             TelephonyTimeZoneSuggestion lowQualitySuggestion =
                     testCase.createSuggestion(SLOT_INDEX1, "America/New_York");
-
-            script.suggestTelephonyTimeZone(lowQualitySuggestion)
+            script.simulateTelephonyTimeZoneSuggestion(lowQualitySuggestion)
                     .verifyTimeZoneNotSet();
 
             // Assert internal service state.
@@ -162,7 +161,7 @@
         {
             TelephonyTimeZoneSuggestion goodQualitySuggestion =
                     testCase2.createSuggestion(SLOT_INDEX1, "Europe/London");
-            script.suggestTelephonyTimeZone(goodQualitySuggestion)
+            script.simulateTelephonyTimeZoneSuggestion(goodQualitySuggestion)
                     .verifyTimeZoneSetAndReset(goodQualitySuggestion);
 
             // Assert internal service state.
@@ -179,7 +178,7 @@
         {
             TelephonyTimeZoneSuggestion lowQualitySuggestion2 =
                     testCase.createSuggestion(SLOT_INDEX1, "America/Los_Angeles");
-            script.suggestTelephonyTimeZone(lowQualitySuggestion2)
+            script.simulateTelephonyTimeZoneSuggestion(lowQualitySuggestion2)
                     .verifyTimeZoneNotSet();
 
             // Assert internal service state.
@@ -208,7 +207,7 @@
 
             TelephonyTimeZoneSuggestion suggestion =
                     testCase.createSuggestion(SLOT_INDEX1, "Europe/London");
-            script.suggestTelephonyTimeZone(suggestion);
+            script.simulateTelephonyTimeZoneSuggestion(suggestion);
 
             // When time zone detection is not enabled, the time zone suggestion will not be set
             // regardless of the score.
@@ -288,7 +287,7 @@
                 new QualifiedTelephonyTimeZoneSuggestion(
                         zoneSlotIndex1Suggestion, testCase.expectedScore);
 
-        script.suggestTelephonyTimeZone(zoneSlotIndex1Suggestion);
+        script.simulateTelephonyTimeZoneSuggestion(zoneSlotIndex1Suggestion);
         if (testCase.expectedScore >= TELEPHONY_SCORE_USAGE_THRESHOLD) {
             script.verifyTimeZoneSetAndReset(zoneSlotIndex1Suggestion);
         } else {
@@ -324,8 +323,8 @@
                 .initializeTimeZoneSetting(ARBITRARY_TIME_ZONE_ID)
                 // Initialize the latest suggestions as empty so we don't need to worry about nulls
                 // below for the first loop.
-                .suggestTelephonyTimeZone(emptySlotIndex1Suggestion)
-                .suggestTelephonyTimeZone(emptySlotIndex2Suggestion)
+                .simulateTelephonyTimeZoneSuggestion(emptySlotIndex1Suggestion)
+                .simulateTelephonyTimeZoneSuggestion(emptySlotIndex2Suggestion)
                 .resetState();
 
         for (SuggestionTestCase testCase : TEST_CASES) {
@@ -341,7 +340,7 @@
                             testCase.expectedScore);
 
             // Start the test by making a suggestion for slotIndex1.
-            script.suggestTelephonyTimeZone(zoneSlotIndex1Suggestion);
+            script.simulateTelephonyTimeZoneSuggestion(zoneSlotIndex1Suggestion);
             if (testCase.expectedScore >= TELEPHONY_SCORE_USAGE_THRESHOLD) {
                 script.verifyTimeZoneSetAndReset(zoneSlotIndex1Suggestion);
             } else {
@@ -358,7 +357,7 @@
 
             // SlotIndex2 then makes an alternative suggestion with an identical score. SlotIndex1's
             // suggestion should still "win" if it is above the required threshold.
-            script.suggestTelephonyTimeZone(zoneSlotIndex2Suggestion);
+            script.simulateTelephonyTimeZoneSuggestion(zoneSlotIndex2Suggestion);
             script.verifyTimeZoneNotSet();
 
             // Assert internal service state.
@@ -373,7 +372,7 @@
             // Withdrawing slotIndex1's suggestion should leave slotIndex2 as the new winner. Since
             // the zoneId is different, the time zone setting should be updated if the score is high
             // enough.
-            script.suggestTelephonyTimeZone(emptySlotIndex1Suggestion);
+            script.simulateTelephonyTimeZoneSuggestion(emptySlotIndex1Suggestion);
             if (testCase.expectedScore >= TELEPHONY_SCORE_USAGE_THRESHOLD) {
                 script.verifyTimeZoneSetAndReset(zoneSlotIndex2Suggestion);
             } else {
@@ -389,7 +388,7 @@
                     mTimeZoneDetectorStrategy.findBestTelephonySuggestionForTests());
 
             // Reset the state for the next loop.
-            script.suggestTelephonyTimeZone(emptySlotIndex2Suggestion)
+            script.simulateTelephonyTimeZoneSuggestion(emptySlotIndex2Suggestion)
                     .verifyTimeZoneNotSet();
             assertEquals(expectedEmptySlotIndex1ScoredSuggestion,
                     mTimeZoneDetectorStrategy.getLatestTelephonySuggestion(SLOT_INDEX1));
@@ -417,10 +416,10 @@
                 testCase.createSuggestion(SLOT_INDEX1, "America/New_York");
 
         // Initialization.
-        script.suggestTelephonyTimeZone(losAngelesSuggestion)
+        script.simulateTelephonyTimeZoneSuggestion(losAngelesSuggestion)
                 .verifyTimeZoneSetAndReset(losAngelesSuggestion);
         // Suggest it again - it should not be set because it is already set.
-        script.suggestTelephonyTimeZone(losAngelesSuggestion)
+        script.simulateTelephonyTimeZoneSuggestion(losAngelesSuggestion)
                 .verifyTimeZoneNotSet();
 
         // Toggling time zone detection should set the device time zone only if the current setting
@@ -433,7 +432,7 @@
         // Simulate a user turning auto detection off, a new suggestion being made while auto
         // detection is off, and the user turning it on again.
         script.autoTimeZoneDetectionEnabled(false)
-                .suggestTelephonyTimeZone(newYorkSuggestion)
+                .simulateTelephonyTimeZoneSuggestion(newYorkSuggestion)
                 .verifyTimeZoneNotSet();
         // Latest suggestion should be used.
         script.autoTimeZoneDetectionEnabled(true)
@@ -447,7 +446,8 @@
                 .initializeAutoTimeZoneDetection(true);
 
         // Auto time zone detection is enabled so the manual suggestion should be ignored.
-        script.suggestManualTimeZone(createManualSuggestion("Europe/Paris"))
+        script.simulateManualTimeZoneSuggestion(
+                createManualSuggestion("Europe/Paris"), false /* expectedResult */)
             .verifyTimeZoneNotSet();
     }
 
@@ -460,7 +460,7 @@
 
         // Auto time zone detection is disabled so the manual suggestion should be used.
         ManualTimeZoneSuggestion manualSuggestion = createManualSuggestion("Europe/Paris");
-        script.suggestManualTimeZone(manualSuggestion)
+        script.simulateManualTimeZoneSuggestion(manualSuggestion, true /* expectedResult */)
             .verifyTimeZoneSetAndReset(manualSuggestion);
     }
 
@@ -603,14 +603,16 @@
         /**
          * Simulates the time zone detection strategy receiving a telephony-originated suggestion.
          */
-        Script suggestTelephonyTimeZone(TelephonyTimeZoneSuggestion timeZoneSuggestion) {
+        Script simulateTelephonyTimeZoneSuggestion(TelephonyTimeZoneSuggestion timeZoneSuggestion) {
             mTimeZoneDetectorStrategy.suggestTelephonyTimeZone(timeZoneSuggestion);
             return this;
         }
 
         /** Simulates the time zone detection strategy receiving a user-originated suggestion. */
-        Script suggestManualTimeZone(ManualTimeZoneSuggestion manualTimeZoneSuggestion) {
-            mTimeZoneDetectorStrategy.suggestManualTimeZone(manualTimeZoneSuggestion);
+        Script simulateManualTimeZoneSuggestion(
+                ManualTimeZoneSuggestion manualTimeZoneSuggestion, boolean expectedResult) {
+            assertEquals(expectedResult,
+                    mTimeZoneDetectorStrategy.suggestManualTimeZone(manualTimeZoneSuggestion));
             return this;
         }
 
diff --git a/services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/TunerResourceManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/TunerResourceManagerServiceTest.java
index f934323..2372dd2 100644
--- a/services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/TunerResourceManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/TunerResourceManagerServiceTest.java
@@ -81,9 +81,7 @@
 
     // A correspondence to compare a FrontendResource and a TunerFrontendInfo.
     private static final Correspondence<FrontendResource, TunerFrontendInfo> FR_TFI_COMPARE =
-            new Correspondence<FrontendResource, TunerFrontendInfo>() {
-            @Override
-            public boolean compare(FrontendResource actual, TunerFrontendInfo expected) {
+            Correspondence.from((FrontendResource actual, TunerFrontendInfo expected) -> {
                 if (actual == null || expected == null) {
                     return (actual == null) && (expected == null);
                 }
@@ -91,13 +89,7 @@
                 return actual.getId() == expected.getId()
                         && actual.getType() == expected.getFrontendType()
                         && actual.getExclusiveGroupId() == expected.getExclusiveGroupId();
-            }
-
-            @Override
-            public String toString() {
-                return "is correctly configured from ";
-            }
-        };
+            },  "is correctly configured from ");
 
     @Before
     public void setUp() throws Exception {
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/ShortcutHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/ShortcutHelperTest.java
index eca71b6..e5ae2d3 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/ShortcutHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/ShortcutHelperTest.java
@@ -305,6 +305,7 @@
         //when(mShortcutServiceInternal.isSharingShortcut(anyInt(), anyString(), anyString(),
          //       anyString(), anyInt(), any())).thenReturn(true);
 
-        assertThat(mShortcutHelper.getValidShortcutInfo("a", "p", UserHandle.SYSTEM)).isSameAs(si);
+        assertThat(mShortcutHelper.getValidShortcutInfo("a", "p", UserHandle.SYSTEM))
+                .isSameInstanceAs(si);
     }
 }
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
index c7b45ef..6ab0697 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
@@ -1100,6 +1100,34 @@
     }
 
     /**
+     * Verify the visibility of a show-when-locked and dismiss keyguard activity on sleeping
+     * display.
+     */
+    @Test
+    public void testDisplaySleeping_activityInvisible() {
+        final KeyguardController keyguardController =
+                mActivity.mStackSupervisor.getKeyguardController();
+        doReturn(true).when(keyguardController).isKeyguardLocked();
+        final ActivityRecord topActivity = new ActivityBuilder(mService).setTask(mTask).build();
+        topActivity.mVisibleRequested = true;
+        topActivity.nowVisible = true;
+        topActivity.setState(RESUMED, "test" /*reason*/);
+        doReturn(true).when(topActivity).containsDismissKeyguardWindow();
+        doCallRealMethod().when(mRootWindowContainer).ensureActivitiesVisible(
+                any() /* starting */, anyInt() /* configChanges */,
+                anyBoolean() /* preserveWindows */, anyBoolean() /* notifyClients */);
+        topActivity.setShowWhenLocked(true);
+
+        // Verify the top activity is occluded keyguard.
+        assertEquals(topActivity, mStack.topRunningActivity());
+        assertTrue(mStack.topActivityOccludesKeyguard());
+
+        final DisplayContent display = mActivity.mDisplayContent;
+        doReturn(true).when(display).isSleeping();
+        assertFalse(topActivity.shouldBeVisible());
+    }
+
+    /**
      * Verify that complete finish request for a show-when-locked activity must ensure the
      * keyguard occluded state being updated.
      */
diff --git a/services/usb/java/com/android/server/usb/MtpNotificationManager.java b/services/usb/java/com/android/server/usb/MtpNotificationManager.java
index 462ee19..39f2f29 100644
--- a/services/usb/java/com/android/server/usb/MtpNotificationManager.java
+++ b/services/usb/java/com/android/server/usb/MtpNotificationManager.java
@@ -64,12 +64,13 @@
 
     private final Context mContext;
     private final OnOpenInAppListener mListener;
+    private final Receiver mReceiver;
 
     MtpNotificationManager(Context context, OnOpenInAppListener listener) {
         mContext = context;
         mListener = listener;
-        final Receiver receiver = new Receiver();
-        context.registerReceiver(receiver, new IntentFilter(ACTION_OPEN_IN_APPS));
+        mReceiver = new Receiver();
+        context.registerReceiver(mReceiver, new IntentFilter(ACTION_OPEN_IN_APPS));
     }
 
     void showNotification(UsbDevice device) {
@@ -154,4 +155,8 @@
     static interface OnOpenInAppListener {
         void onOpenInApp(UsbDevice device);
     }
+
+    public void unregister() {
+        mContext.unregisterReceiver(mReceiver);
+    }
 }
diff --git a/services/usb/java/com/android/server/usb/UsbProfileGroupSettingsManager.java b/services/usb/java/com/android/server/usb/UsbProfileGroupSettingsManager.java
index d7b6b5d..26ee03c 100644
--- a/services/usb/java/com/android/server/usb/UsbProfileGroupSettingsManager.java
+++ b/services/usb/java/com/android/server/usb/UsbProfileGroupSettingsManager.java
@@ -261,6 +261,15 @@
     }
 
     /**
+     * Unregister all broadcast receivers. Must be called explicitly before
+     * object deletion.
+     */
+    public void unregisterReceivers() {
+        mPackageMonitor.unregister();
+        mMtpNotificationManager.unregister();
+    }
+
+    /**
      * Remove all defaults and denied packages for a user.
      *
      * @param userToRemove The user
diff --git a/services/usb/java/com/android/server/usb/UsbSettingsManager.java b/services/usb/java/com/android/server/usb/UsbSettingsManager.java
index 7b677ee..8e53ff4 100644
--- a/services/usb/java/com/android/server/usb/UsbSettingsManager.java
+++ b/services/usb/java/com/android/server/usb/UsbSettingsManager.java
@@ -124,6 +124,7 @@
             if (mSettingsByProfileGroup.indexOfKey(userToRemove.getIdentifier()) >= 0) {
                 // The user to remove is the parent user of the group. The parent is the last user
                 // that gets removed. All state will be removed with the user
+                mSettingsByProfileGroup.get(userToRemove.getIdentifier()).unregisterReceivers();
                 mSettingsByProfileGroup.remove(userToRemove.getIdentifier());
             } else {
                 // We cannot find the parent user of the user that is removed, hence try to remove
diff --git a/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl b/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
deleted file mode 100644
index 45e4c69..0000000
--- a/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net.wifi;
-
-/** @hide */
-parcelable WifiApiServiceInfo {
-    String name;
-    IBinder binder;
-}
diff --git a/startop/iorap/src/com/google/android/startop/iorap/EventSequenceValidator.java b/startop/iorap/src/com/google/android/startop/iorap/EventSequenceValidator.java
index 67e1b44..9b7a62b 100644
--- a/startop/iorap/src/com/google/android/startop/iorap/EventSequenceValidator.java
+++ b/startop/iorap/src/com/google/android/startop/iorap/EventSequenceValidator.java
@@ -96,7 +96,8 @@
  */
 public class EventSequenceValidator implements ActivityMetricsLaunchObserver {
   static final String TAG = "EventSequenceValidator";
-
+  /** $> adb shell 'setprop log.tag.EventSequenceValidator VERBOSE' */
+  public static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
   private State state = State.INIT;
   private long accIntentStartedEvents = 0;
 
@@ -255,9 +256,11 @@
   }
 
   private void logWarningWithStackTrace(String log) {
-    StringWriter sw = new StringWriter();
-    PrintWriter pw = new PrintWriter(sw);
-    new Throwable("EventSequenceValidator#getStackTrace").printStackTrace(pw);
-    Log.d(TAG, String.format("%s\n%s", log, sw));
+    if (DEBUG) {
+      StringWriter sw = new StringWriter();
+      PrintWriter pw = new PrintWriter(sw);
+      new Throwable("EventSequenceValidator#getStackTrace").printStackTrace(pw);
+      Log.wtf(TAG, String.format("%s\n%s", log, sw));
+    }
   }
 }
diff --git a/startop/iorap/tests/src/com/google/android/startop/iorap/ParcelablesTest.kt b/startop/iorap/tests/src/com/google/android/startop/iorap/ParcelablesTest.kt
index 8fa0cde..150577a 100644
--- a/startop/iorap/tests/src/com/google/android/startop/iorap/ParcelablesTest.kt
+++ b/startop/iorap/tests/src/com/google/android/startop/iorap/ParcelablesTest.kt
@@ -124,7 +124,7 @@
     data class InputData<T : Parcelable>(val valid: T, val validCopy: T, val validOther: T) {
         val kls = valid.javaClass
         init {
-            assertThat(valid).isNotSameAs(validCopy)
+            assertThat(valid).isNotSameInstanceAs(validCopy)
             // Don't use isInstanceOf because of phantom warnings in intellij about Class!
             assertThat(validCopy.javaClass).isEqualTo(valid.javaClass)
             assertThat(validOther.javaClass).isEqualTo(valid.javaClass)
diff --git a/telecomm/java/android/telecom/Call.java b/telecomm/java/android/telecom/Call.java
index 0469fa5..1238e7b 100755
--- a/telecomm/java/android/telecom/Call.java
+++ b/telecomm/java/android/telecom/Call.java
@@ -966,6 +966,32 @@
         /**
          * Gets the verification status for the phone number of an incoming call as identified in
          * ATIS-1000082.
+         * <p>
+         * For incoming calls, the number verification status indicates whether the device was
+         * able to verify the authenticity of the calling number using the STIR process outlined
+         * in ATIS-1000082.  {@link Connection#VERIFICATION_STATUS_NOT_VERIFIED} indicates that
+         * the network was not able to use STIR to verify the caller's number (i.e. nothing is
+         * known regarding the authenticity of the number.
+         * {@link Connection#VERIFICATION_STATUS_PASSED} indicates that the network was able to
+         * use STIR to verify the caller's number.  This indicates that the network has a high
+         * degree of confidence that the incoming call actually originated from the indicated
+         * number.  {@link Connection#VERIFICATION_STATUS_FAILED} indicates that the network's
+         * STIR verification did not pass.  This indicates that the incoming call may not
+         * actually be from the indicated number.  This could occur if, for example, the caller
+         * is using an impersonated phone number.
+         * <p>
+         * A {@link CallScreeningService} can use this information to help determine if an
+         * incoming call is potentially an unwanted call.  A verification status of
+         * {@link Connection#VERIFICATION_STATUS_FAILED} indicates that an incoming call may not
+         * actually be from the number indicated on the call (i.e. impersonated number) and that it
+         * should potentially be blocked.  Likewise,
+         * {@link Connection#VERIFICATION_STATUS_PASSED} can be used as a positive signal to
+         * help clarify that the incoming call is originating from the indicated number and it
+         * is less likely to be an undesirable call.
+         * <p>
+         * An {@link InCallService} can use this information to provide a visual indicator to the
+         * user regarding the verification status of a call and to help identify calls from
+         * potentially impersonated numbers.
          * @return the verification status.
          */
         public @Connection.VerificationStatus int getCallerNumberVerificationStatus() {
@@ -1442,8 +1468,11 @@
 
         /**
          * Writes the string {@param input} into the outgoing text stream for this RTT call. Since
-         * RTT transmits text in real-time, this method should be called once for each character
-         * the user enters into the device.
+         * RTT transmits text in real-time, this method should be called once for each user action.
+         * For example, when the user enters text as discrete characters using the keyboard, this
+         * method should be called once for each character. However, if the user enters text by
+         * pasting or autocomplete, the entire contents of the pasted or autocompleted text should
+         * be sent in one call to this method.
          *
          * This method is not thread-safe -- calling it from multiple threads simultaneously may
          * lead to interleaved text.
@@ -1657,7 +1686,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public void enterBackgroundAudioProcessing() {
         if (mState != STATE_ACTIVE && mState != STATE_RINGING) {
             throw new IllegalStateException("Call must be active or ringing");
@@ -1678,7 +1706,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public void exitBackgroundAudioProcessing(boolean shouldRing) {
         if (mState != STATE_AUDIO_PROCESSING) {
             throw new IllegalStateException("Call must in the audio processing state");
@@ -2111,7 +2138,13 @@
 
     /**
      * Obtains a list of canned, pre-configured message responses to present to the user as
-     * ways of rejecting this {@code Call} using via a text message.
+     * ways of rejecting an incoming {@code Call} using via a text message.
+     * <p>
+     * <em>Note:</em> Since canned responses may be loaded from the file system, they are not
+     * guaranteed to be present when this {@link Call} is first added to the {@link InCallService}
+     * via {@link InCallService#onCallAdded(Call)}.  The callback
+     * {@link Call.Callback#onCannedTextResponsesLoaded(Call, List)} will be called when/if canned
+     * responses for the call become available.
      *
      * @see #reject(boolean, String)
      *
diff --git a/telecomm/java/android/telecom/CallScreeningService.java b/telecomm/java/android/telecom/CallScreeningService.java
index 4d9311c..7988b03 100644
--- a/telecomm/java/android/telecom/CallScreeningService.java
+++ b/telecomm/java/android/telecom/CallScreeningService.java
@@ -21,7 +21,6 @@
 import android.annotation.RequiresPermission;
 import android.annotation.SdkConstant;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.app.Service;
 import android.content.ComponentName;
 import android.content.Intent;
@@ -64,7 +63,7 @@
  *     </li>
  * </ol>
  * <p>
- * <h2>Becoming the {@link CallScreeningService}</h2>
+ * <h2>Becoming the CallScreeningService</h2>
  * Telecom will bind to a single app chosen by the user which implements the
  * {@link CallScreeningService} API when there are new incoming and outgoing calls.
  * <p>
@@ -90,7 +89,27 @@
  *         }
  *     }
  * }
+ * }
  * </pre>
+ *
+ * <h2>CallScreeningService Lifecycle</h2>
+ *
+ * The framework binds to the {@link CallScreeningService} implemented by the user-chosen app
+ * filling the {@link android.app.role.RoleManager#ROLE_CALL_SCREENING} role when incoming calls are
+ * received (prior to ringing) and when outgoing calls are placed.  The platform calls the
+ * {@link #onScreenCall(Call.Details)} method to provide your service with details about the call.
+ * <p>
+ * For incoming calls, the {@link CallScreeningService} must call
+ * {@link #respondToCall(Call.Details, CallResponse)} within 5 seconds of being bound to indicate to
+ * the platform whether the call should be blocked or not.  Your app must do this even if it is
+ * primarily performing caller ID operations and not screening calls.  It is important to perform
+ * screening operations in a timely matter as the user's device will not begin ringing until the
+ * response is received (or the timeout is hit).  A {@link CallScreeningService} may choose to
+ * perform local database lookups to help determine if a call should be screened or not; care should
+ * be taken to ensure the timeout is not repeatedly hit, causing delays in the incoming call flow.
+ * <p>
+ * If your app provides a caller ID experience, it should launch an activity to show the caller ID
+ * information from {@link #onScreenCall(Call.Details)}.
  */
 public abstract class CallScreeningService extends Service {
     /**
@@ -303,7 +322,6 @@
              * @hide
              */
             @SystemApi
-            @TestApi
             @RequiresPermission(Manifest.permission.CAPTURE_AUDIO_OUTPUT)
             public @NonNull Builder setShouldScreenCallViaAudioProcessing(
                     boolean shouldScreenCallViaAudioProcessing) {
@@ -339,7 +357,7 @@
     }
 
     /**
-     * Called when a new incoming or outgoing call is added which is not in the user's contact list.
+     * Called when a new incoming or outgoing call is added.
      * <p>
      * A {@link CallScreeningService} must indicate whether an incoming call is allowed or not by
      * calling
@@ -347,21 +365,32 @@
      * Your app can tell if a call is an incoming call by checking to see if
      * {@link Call.Details#getCallDirection()} is {@link Call.Details#DIRECTION_INCOMING}.
      * <p>
-     * Note: The {@link Call.Details} instance provided to a call screening service will only have
-     * the following properties set.  The rest of the {@link Call.Details} properties will be set to
-     * their default value or {@code null}.
+     * <em>Note:</em> A {@link CallScreeningService} must respond to a call within 5 seconds.  After
+     * this time, the framework will unbind from the {@link CallScreeningService} and ignore its
+     * response.
+     * <p>
+     * <em>Note:</em> The {@link Call.Details} instance provided to a call screening service will
+     * only have the following properties set.  The rest of the {@link Call.Details} properties will
+     * be set to their default value or {@code null}.
      * <ul>
      *     <li>{@link Call.Details#getCallDirection()}</li>
+     *     <li>{@link Call.Details#getCallerNumberVerificationStatus()}</li>
      *     <li>{@link Call.Details#getConnectTimeMillis()}</li>
      *     <li>{@link Call.Details#getCreationTimeMillis()}</li>
      *     <li>{@link Call.Details#getHandle()}</li>
-     *     <li>{@link Call.Details#getHandlePresentation()}</li>
      * </ul>
      * <p>
      * Only calls where the {@link Call.Details#getHandle() handle} {@link Uri#getScheme() scheme}
      * is {@link PhoneAccount#SCHEME_TEL} are passed for call
      * screening.  Further, only calls which are not in the user's contacts are passed for
-     * screening.  For outgoing calls, no post-dial digits are passed.
+     * screening, unless the {@link CallScreeningService} has been granted
+     * {@link Manifest.permission#READ_CONTACTS} permission by the user.  For outgoing calls, no
+     * post-dial digits are passed.
+     * <p>
+     * Calls with a {@link Call.Details#getHandlePresentation()} of
+     * {@link TelecomManager#PRESENTATION_RESTRICTED}, {@link TelecomManager#PRESENTATION_UNKNOWN}
+     * or {@link TelecomManager#PRESENTATION_PAYPHONE} presentation are not provided to the
+     * {@link CallScreeningService}.
      *
      * @param callDetails Information about a new call, see {@link Call.Details}.
      */
@@ -376,6 +405,13 @@
      * <p>
      * Calls to this method are ignored unless the {@link Call.Details#getCallDirection()} is
      * {@link Call.Details#DIRECTION_INCOMING}.
+     * <p>
+     * For incoming calls, a {@link CallScreeningService} MUST call this method within 5 seconds of
+     * {@link #onScreenCall(Call.Details)} being invoked by the platform.
+     * <p>
+     * Calls which are blocked/rejected will be logged to the system call log with a call type of
+     * {@link android.provider.CallLog.Calls#BLOCKED_TYPE} and
+     * {@link android.provider.CallLog.Calls#BLOCK_REASON_CALL_SCREENING_SERVICE} block reason.
      *
      * @param callDetails The call to allow.
      *                    <p>
diff --git a/telecomm/java/android/telecom/CallerInfo.java b/telecomm/java/android/telecom/CallerInfo.java
index fb6f994..2983e63 100644
--- a/telecomm/java/android/telecom/CallerInfo.java
+++ b/telecomm/java/android/telecom/CallerInfo.java
@@ -27,6 +27,7 @@
 import android.location.Country;
 import android.location.CountryDetector;
 import android.net.Uri;
+import android.os.Build;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Data;
@@ -186,7 +187,7 @@
     private boolean mIsVoiceMail;
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public CallerInfo() {
         // TODO: Move all the basic initialization here?
         mIsEmergency = false;
@@ -347,7 +348,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static CallerInfo getCallerInfo(Context context, Uri contactRef) {
         CallerInfo info = null;
         ContentResolver cr = CallerInfoAsyncQuery.getCurrentProfileContentResolver(context);
@@ -374,7 +375,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static CallerInfo getCallerInfo(Context context, String number) {
         if (VDBG) Log.v(TAG, "getCallerInfo() based on number...");
 
@@ -395,7 +396,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static CallerInfo getCallerInfo(Context context, String number, int subId) {
 
         if (TextUtils.isEmpty(number)) {
@@ -405,7 +406,8 @@
         // Change the callerInfo number ONLY if it is an emergency number
         // or if it is the voicemail number.  If it is either, take a
         // shortcut and skip the query.
-        if (PhoneNumberUtils.isLocalEmergencyNumber(context, number)) {
+        TelephonyManager tm = context.getSystemService(TelephonyManager.class);
+        if (tm.isEmergencyNumber(number)) {
             return new CallerInfo().markAsEmergency(context);
         } else if (PhoneNumberUtils.isVoiceMailNumber(null, subId, number)) {
             return new CallerInfo().markAsVoiceMail(context, subId);
diff --git a/telecomm/java/android/telecom/CallerInfoAsyncQuery.java b/telecomm/java/android/telecom/CallerInfoAsyncQuery.java
index 4a81a8e..a9e1a8f 100644
--- a/telecomm/java/android/telecom/CallerInfoAsyncQuery.java
+++ b/telecomm/java/android/telecom/CallerInfoAsyncQuery.java
@@ -34,6 +34,7 @@
 import android.provider.ContactsContract.PhoneLookup;
 import android.telephony.PhoneNumberUtils;
 import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 
 import java.util.ArrayList;
@@ -481,7 +482,8 @@
         cw.subId = subId;
 
         // check to see if these are recognized numbers, and use shortcuts if we can.
-        if (PhoneNumberUtils.isLocalEmergencyNumber(context, number)) {
+        TelephonyManager tm = context.getSystemService(TelephonyManager.class);
+        if (tm.isEmergencyNumber(number)) {
             cw.event = EVENT_EMERGENCY_NUMBER;
         } else if (PhoneNumberUtils.isVoiceMailNumber(context, subId, number)) {
             cw.event = EVENT_VOICEMAIL_NUMBER;
diff --git a/telecomm/java/android/telecom/Conference.java b/telecomm/java/android/telecom/Conference.java
index 39c3ff9..dc2fb94 100644
--- a/telecomm/java/android/telecom/Conference.java
+++ b/telecomm/java/android/telecom/Conference.java
@@ -24,7 +24,6 @@
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.SystemClock;
@@ -137,7 +136,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public final @NonNull String getTelecomCallId() {
         return mTelecomCallId;
     }
@@ -609,7 +607,6 @@
      * @return The primary connection.
      * @hide
      */
-    @TestApi
     @SystemApi
     public Connection getPrimaryConnection() {
         if (mUnmodifiableChildConnections == null || mUnmodifiableChildConnections.isEmpty()) {
@@ -1012,7 +1009,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(MODIFY_PHONE_STATE)
     public void setConferenceState(boolean isConference) {
         mIsMultiparty = isConference;
@@ -1067,7 +1063,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(MODIFY_PHONE_STATE)
     public final void setAddress(@NonNull Uri address,
             @TelecomManager.Presentation int presentation) {
@@ -1155,7 +1150,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public final void setCallerDisplayName(@NonNull String callerDisplayName,
             @TelecomManager.Presentation int presentation) {
         Log.d(this, "setCallerDisplayName %s", callerDisplayName);
diff --git a/telecomm/java/android/telecom/Connection.java b/telecomm/java/android/telecom/Connection.java
old mode 100755
new mode 100644
index 00b7116..724a9e4
--- a/telecomm/java/android/telecom/Connection.java
+++ b/telecomm/java/android/telecom/Connection.java
@@ -25,7 +25,6 @@
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.app.Notification;
 import android.bluetooth.BluetoothDevice;
 import android.compat.annotation.UnsupportedAppUsage;
@@ -307,7 +306,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int CAPABILITY_SPEED_UP_MT_AUDIO = 0x00040000;
 
     /**
@@ -345,7 +343,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int CAPABILITY_CONFERENCE_HAS_NO_CHILDREN = 0x00200000;
 
     /**
@@ -417,7 +414,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int PROPERTY_EMERGENCY_CALLBACK_MODE = 1<<0;
 
     /**
@@ -428,7 +424,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int PROPERTY_GENERIC_CONFERENCE = 1<<1;
 
     /**
@@ -480,7 +475,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int PROPERTY_IS_DOWNGRADED_CONFERENCE = 1<<6;
 
     /**
@@ -524,7 +518,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int PROPERTY_REMOTELY_HOSTED = 1 << 11;
 
     /**
@@ -702,7 +695,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final String EXTRA_DISABLE_ADD_CALL =
             "android.telecom.extra.DISABLE_ADD_CALL";
 
@@ -775,6 +767,19 @@
             "android.telecom.extra.AUDIO_CODEC";
 
     /**
+     * Float connection extra key used to store the audio codec bitrate in kbps for the current
+     * {@link Connection}.
+     */
+    public static final String EXTRA_AUDIO_CODEC_BITRATE_KBPS =
+            "android.telecom.extra.AUDIO_CODEC_BITRATE_KBPS";
+
+    /**
+     * Float connection extra key used to store the audio codec bandwidth in khz for the current
+     * {@link Connection}.
+     */
+    public static final String EXTRA_AUDIO_CODEC_BANDWIDTH_KHZ =
+            "android.telecom.extra.AUDIO_CODEC_BANDWIDTH_KHZ";
+    /**
      * Connection event used to inform Telecom that it should play the on hold tone.  This is used
      * to play a tone when the peer puts the current call on hold.  Sent to Telecom via
      * {@link #sendConnectionEvent(String, Bundle)}.
@@ -2054,7 +2059,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public final @Nullable String getTelecomCallId() {
         return mTelecomCallId;
     }
@@ -2171,7 +2175,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public final @IntRange(from = 0) long getConnectTimeMillis() {
         return mConnectTimeMillis;
     }
@@ -2196,7 +2199,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public final @ElapsedRealtimeLong long getConnectionStartElapsedRealtimeMillis() {
         return mConnectElapsedTimeMillis;
     }
@@ -2279,7 +2281,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public void setTelecomCallId(@NonNull String callId) {
         mTelecomCallId = callId;
     }
@@ -2628,7 +2629,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(MODIFY_PHONE_STATE)
     public final void setConnectTimeMillis(@IntRange(from = 0) long connectTimeMillis) {
         mConnectTimeMillis = connectTimeMillis;
@@ -2651,7 +2651,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(MODIFY_PHONE_STATE)
     public final void setConnectionStartElapsedRealtimeMillis(
             @ElapsedRealtimeLong long connectElapsedTimeMillis) {
@@ -2722,7 +2721,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public final void resetConnectionTime() {
         for (Listener l : mListeners) {
             l.onConnectionTimeReset(this);
@@ -3505,7 +3503,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public void setPhoneAccountHandle(@NonNull PhoneAccountHandle phoneAccountHandle) {
         if (mPhoneAccountHandle != phoneAccountHandle) {
             mPhoneAccountHandle = phoneAccountHandle;
@@ -3524,7 +3521,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public @Nullable PhoneAccountHandle getPhoneAccountHandle() {
         return mPhoneAccountHandle;
     }
@@ -3590,7 +3586,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public void setCallDirection(@Call.Details.CallDirection int callDirection) {
         mCallDirection = callDirection;
     }
diff --git a/telecomm/java/android/telecom/ConnectionRequest.java b/telecomm/java/android/telecom/ConnectionRequest.java
index 6d7ceca..b73ef9b 100644
--- a/telecomm/java/android/telecom/ConnectionRequest.java
+++ b/telecomm/java/android/telecom/ConnectionRequest.java
@@ -327,7 +327,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public @Nullable String getTelecomCallId() {
         return mTelecomCallId;
     }
diff --git a/telecomm/java/android/telecom/DisconnectCause.java b/telecomm/java/android/telecom/DisconnectCause.java
index f7fe1ba..1472a4a 100644
--- a/telecomm/java/android/telecom/DisconnectCause.java
+++ b/telecomm/java/android/telecom/DisconnectCause.java
@@ -16,7 +16,6 @@
 
 package android.telecom;
 
-import android.annotation.SystemApi;
 import android.media.ToneGenerator;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -97,10 +96,7 @@
      *
      * This reason code is only used for communication between a {@link ConnectionService} and
      * Telecom and should not be surfaced to the user.
-     *
-     * @hide
      */
-    @SystemApi
     public static final String REASON_EMULATING_SINGLE_CALL = "EMULATING_SINGLE_CALL";
 
     /**
diff --git a/telecomm/java/android/telecom/InCallService.java b/telecomm/java/android/telecom/InCallService.java
index 982e5f3..07de617 100644
--- a/telecomm/java/android/telecom/InCallService.java
+++ b/telecomm/java/android/telecom/InCallService.java
@@ -680,6 +680,7 @@
     public static abstract class VideoCall {
 
         /** @hide */
+        @SuppressWarnings("HiddenAbstractMethod")
         public abstract void destroy();
 
         /**
diff --git a/telecomm/java/android/telecom/Log.java b/telecomm/java/android/telecom/Log.java
index a90d053..2a4fdcb 100644
--- a/telecomm/java/android/telecom/Log.java
+++ b/telecomm/java/android/telecom/Log.java
@@ -102,7 +102,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static void i(String prefix, String format, Object... args) {
         if (INFO) {
             android.util.Slog.i(TAG, buildMessage(prefix, format, args));
@@ -133,7 +133,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static void w(String prefix, String format, Object... args) {
         if (WARN) {
             android.util.Slog.w(TAG, buildMessage(prefix, format, args));
diff --git a/telecomm/java/android/telecom/PhoneAccount.java b/telecomm/java/android/telecom/PhoneAccount.java
index c20e5ad..5024ae2 100644
--- a/telecomm/java/android/telecom/PhoneAccount.java
+++ b/telecomm/java/android/telecom/PhoneAccount.java
@@ -21,13 +21,13 @@
 import android.annotation.NonNull;
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.content.Intent;
 import android.graphics.drawable.Icon;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Parcel;
 import android.os.Parcelable;
+import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 
 import java.util.ArrayList;
@@ -48,12 +48,20 @@
 public final class PhoneAccount implements Parcelable {
 
     /**
-     * String extra which determines the order in which {@link PhoneAccount}s are sorted
+     * Integer extra which determines the order in which {@link PhoneAccount}s are sorted
      *
      * This is an extras key set via {@link Builder#setExtras} which determines the order in which
      * {@link PhoneAccount}s from the same {@link ConnectionService} are sorted. The accounts
-     * are sorted by this key via standard lexicographical order, and this ordering is used to
+     * are sorted in ascending order by this key, and this ordering is used to
      * determine priority when a call can be placed via multiple accounts.
+     *
+     * When multiple {@link PhoneAccount}s are supplied with the same sort order key, no ordering is
+     * guaranteed between those {@link PhoneAccount}s. Additionally, no ordering is guaranteed
+     * between {@link PhoneAccount}s that do not supply this extra, and all such accounts
+     * will be sorted after the accounts that do supply this extra.
+     *
+     * An example of a sort order key is slot index (see {@link TelephonyManager#getSlotIndex()}),
+     * which is the one used by the cell Telephony stack.
      * @hide
      */
     @SystemApi
@@ -626,7 +634,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         @RequiresPermission(MODIFY_PHONE_STATE)
         public @NonNull Builder setGroupId(@NonNull String groupId) {
             if (groupId != null) {
diff --git a/telecomm/java/android/telecom/PhoneAccountSuggestionService.java b/telecomm/java/android/telecom/PhoneAccountSuggestionService.java
index ba3822c..8a91b9e 100644
--- a/telecomm/java/android/telecom/PhoneAccountSuggestionService.java
+++ b/telecomm/java/android/telecom/PhoneAccountSuggestionService.java
@@ -19,7 +19,6 @@
 import android.annotation.NonNull;
 import android.annotation.SdkConstant;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.app.Service;
 import android.content.Intent;
 import android.os.IBinder;
@@ -57,7 +56,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public class PhoneAccountSuggestionService extends Service {
     /**
      * The {@link Intent} that must be declared in the {@code intent-filter} element of the
diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java
index 1f3740b..da2d4d8 100644
--- a/telecomm/java/android/telecom/TelecomManager.java
+++ b/telecomm/java/android/telecom/TelecomManager.java
@@ -25,7 +25,6 @@
 import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.ComponentName;
 import android.content.Context;
@@ -33,6 +32,7 @@
 import android.net.Uri;
 import android.os.Build;
 import android.os.Bundle;
+import android.os.Process;
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.os.UserHandle;
@@ -693,7 +693,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final int TTY_MODE_OFF = 0;
 
@@ -703,7 +702,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final int TTY_MODE_FULL = 1;
 
@@ -714,7 +712,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final int TTY_MODE_HCO = 2;
 
@@ -725,7 +722,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final int TTY_MODE_VCO = 3;
 
@@ -736,7 +732,6 @@
      * TTY mode.
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final String ACTION_CURRENT_TTY_MODE_CHANGED =
             "android.telecom.action.CURRENT_TTY_MODE_CHANGED";
@@ -759,7 +754,6 @@
      * plugged into the device.
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final String EXTRA_CURRENT_TTY_MODE =
             "android.telecom.extra.CURRENT_TTY_MODE";
@@ -771,7 +765,6 @@
      * preferred TTY mode.
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final String ACTION_TTY_PREFERRED_MODE_CHANGED =
             "android.telecom.action.TTY_PREFERRED_MODE_CHANGED";
@@ -790,7 +783,6 @@
      * </ul>
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final String EXTRA_TTY_PREFERRED_MODE =
             "android.telecom.extra.TTY_PREFERRED_MODE";
@@ -992,8 +984,6 @@
      * <p>
      * If no {@link PhoneAccount} fits the criteria above, this method will return {@code null}.
      *
-     * Requires permission: {@link android.Manifest.permission#READ_PHONE_STATE}
-     *
      * @param uriScheme The URI scheme.
      * @return The {@link PhoneAccountHandle} corresponding to the account to be used.
      */
@@ -1045,7 +1035,6 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
-    @TestApi
     @SystemApi
     public void setUserSelectedOutgoingPhoneAccount(@Nullable PhoneAccountHandle accountHandle) {
         try {
@@ -1171,8 +1160,6 @@
      * calls. The returned list includes only those accounts which have been explicitly enabled
      * by the user.
      *
-     * Requires permission: {@link android.Manifest.permission#READ_PHONE_STATE}
-     *
      * @see #EXTRA_PHONE_ACCOUNT_HANDLE
      * @return A list of {@code PhoneAccountHandle} objects.
      */
@@ -1219,7 +1206,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(READ_PRIVILEGED_PHONE_STATE)
     public @NonNull List<PhoneAccountHandle> getCallCapablePhoneAccounts(
             boolean includeDisabledAccounts) {
@@ -1242,7 +1228,7 @@
      * @hide
      */
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public List<PhoneAccountHandle> getPhoneAccountsForPackage() {
         try {
             if (isServiceConnected()) {
@@ -1370,7 +1356,7 @@
      * @hide
      */
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public void clearPhoneAccounts() {
         clearAccounts();
     }
@@ -1380,7 +1366,7 @@
      * @hide
      */
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public void clearAccounts() {
         try {
             if (isServiceConnected()) {
@@ -1412,7 +1398,7 @@
      * @hide
      */
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public ComponentName getDefaultPhoneApp() {
         try {
             if (isServiceConnected()) {
@@ -1450,7 +1436,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(READ_PRIVILEGED_PHONE_STATE)
     public @Nullable String getDefaultDialerPackage(@NonNull UserHandle userHandle) {
         try {
@@ -1474,9 +1459,6 @@
      *         the specified package does not correspond to an installed dialer, or is already
      *         the default dialer.
      *
-     * Requires permission: {@link android.Manifest.permission#MODIFY_PHONE_STATE}
-     * Requires permission: {@link android.Manifest.permission#WRITE_SECURE_SETTINGS}
-     *
      * @hide
      * @deprecated Use
      * {@link android.app.role.RoleManager#addRoleHolderAsUser(String, String, int, UserHandle,
@@ -1520,8 +1502,6 @@
      * Return whether a given phone number is the configured voicemail number for a
      * particular phone account.
      *
-     * Requires permission: {@link android.Manifest.permission#READ_PHONE_STATE}
-     *
      * @param accountHandle The handle for the account to check the voicemail number against
      * @param number The number to look up.
      */
@@ -1541,8 +1521,6 @@
     /**
      * Return the voicemail number for a given phone account.
      *
-     * Requires permission: {@link android.Manifest.permission#READ_PHONE_STATE}
-     *
      * @param accountHandle The handle for the phone account.
      * @return The voicemail number for the phone account, and {@code null} if one has not been
      *         configured.
@@ -1594,8 +1572,6 @@
     /**
      * Returns whether there is an ongoing phone call (can be in dialing, ringing, active or holding
      * states) originating from either a manager or self-managed {@link ConnectionService}.
-     * <p>
-     * Requires permission: {@link android.Manifest.permission#READ_PHONE_STATE}
      *
      * @return {@code true} if there is an ongoing call in either a managed or self-managed
      *      {@link ConnectionService}, {@code false} otherwise.
@@ -1614,14 +1590,36 @@
     }
 
     /**
+     * Returns whether the caller has {@link InCallService} access for companion apps.
+     *
+     * A companion app is an app associated with a physical wearable device via the
+     * {@link android.companion.CompanionDeviceManager} API.
+     *
+     * @return {@code true} if the caller has {@link InCallService} access for
+     *      companion app; {@code false} otherwise.
+     */
+    public boolean hasCompanionInCallServiceAccess() {
+        try {
+            if (isServiceConnected()) {
+                return getTelecomService().hasCompanionInCallServiceAccess(
+                        mContext.getOpPackageName());
+            }
+        } catch (RemoteException e) {
+            Log.e(TAG, "RemoteException calling hasCompanionInCallServiceAccess().", e);
+            if (!isSystemProcess()) {
+                e.rethrowAsRuntimeException();
+            }
+        }
+        return false;
+    }
+
+    /**
      * Returns whether there is an ongoing call originating from a managed
      * {@link ConnectionService}.  An ongoing call can be in dialing, ringing, active or holding
      * states.
      * <p>
      * If you also need to know if there are ongoing self-managed calls, use {@link #isInCall()}
      * instead.
-     * <p>
-     * Requires permission: {@link android.Manifest.permission#READ_PHONE_STATE}
      *
      * @return {@code true} if there is an ongoing call in a managed {@link ConnectionService},
      *      {@code false} otherwise.
@@ -1674,7 +1672,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(anyOf = {
             READ_PRIVILEGED_PHONE_STATE,
             android.Manifest.permission.READ_PHONE_STATE
@@ -1696,8 +1693,6 @@
      * If there is a ringing call, calling this method rejects the ringing call.  Otherwise the
      * foreground call is ended.
      * <p>
-     * Requires permission {@link android.Manifest.permission#ANSWER_PHONE_CALLS}.
-     * <p>
      * Note: this method CANNOT be used to end ongoing emergency calls and will return {@code false}
      * if an attempt is made to end an emergency call.
      *
@@ -1727,9 +1722,6 @@
      * the incoming call requests.  This means, for example, that an incoming call requesting
      * {@link VideoProfile#STATE_BIDIRECTIONAL} will be answered, accepting that state.
      *
-     * Requires permission: {@link android.Manifest.permission#MODIFY_PHONE_STATE} or
-     * {@link android.Manifest.permission#ANSWER_PHONE_CALLS}
-     *
      * @deprecated Companion apps for wearable devices should use the {@link InCallService} API
      * instead.
      */
@@ -1752,9 +1744,6 @@
      * If there is a ringing incoming call, this method accepts the call on behalf of the user,
      * with the specified video state.
      *
-     * Requires permission: {@link android.Manifest.permission#MODIFY_PHONE_STATE} or
-     * {@link android.Manifest.permission#ANSWER_PHONE_CALLS}
-     *
      * @param videoState The desired video state to answer the call with.
      * @deprecated Companion apps for wearable devices should use the {@link InCallService} API
      * instead.
@@ -1832,7 +1821,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(READ_PRIVILEGED_PHONE_STATE)
     public @TtyMode int getCurrentTtyMode() {
         try {
@@ -1967,8 +1955,6 @@
      * Requires that the method-caller be set as the system dialer app.
      * </p>
      *
-     * Requires permission: {@link android.Manifest.permission#MODIFY_PHONE_STATE}
-     *
      * @param dialString The digits to dial.
      * @return True if the digits were processed as an MMI code, false otherwise.
      */
@@ -1993,8 +1979,6 @@
      * Requires that the method-caller be set as the system dialer app.
      * </p>
      *
-     * Requires permission: {@link android.Manifest.permission#MODIFY_PHONE_STATE}
-     *
      * @param accountHandle The handle for the account the MMI code should apply to.
      * @param dialString The digits to dial.
      * @return True if the digits were processed as an MMI code, false otherwise.
@@ -2014,8 +1998,8 @@
     }
 
     /**
-     * Requires permission: {@link android.Manifest.permission#MODIFY_PHONE_STATE}
-     *
+     * Returns a URI (with the content:// scheme) specific to the specified {@link PhoneAccount}
+     * for ADN content retrieval.
      * @param accountHandle The handle for the account to derive an adn query URI for or
      * {@code null} to return a URI which will use the default account.
      * @return The URI (with the content:// scheme) specific to the specified {@link PhoneAccount}
@@ -2039,8 +2023,6 @@
      * <p>
      * Requires that the method-caller be set as the system dialer app.
      * </p>
-     *
-     * Requires permission: {@link android.Manifest.permission#MODIFY_PHONE_STATE}
      */
     @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
     public void cancelMissedCallsNotification() {
@@ -2246,7 +2228,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @NonNull
     public Intent createLaunchEmergencyDialerIntent(@Nullable String number) {
         ITelecomService service = getTelecomService();
@@ -2399,7 +2380,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
     public boolean isInEmergencyCall() {
         try {
@@ -2429,6 +2409,10 @@
         }
     }
 
+    private boolean isSystemProcess() {
+        return Process.myUid() == Process.SYSTEM_UID;
+    }
+
     private ITelecomService getTelecomService() {
         if (mTelecomServiceOverride != null) {
             return mTelecomServiceOverride;
diff --git a/telecomm/java/com/android/internal/telecom/IDeviceIdleControllerAdapter.aidl b/telecomm/java/com/android/internal/telecom/IDeviceIdleControllerAdapter.aidl
new file mode 100644
index 0000000..50bbf4c
--- /dev/null
+++ b/telecomm/java/com/android/internal/telecom/IDeviceIdleControllerAdapter.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.internal.telecom;
+
+/*
+ * Adapter interface for using DeviceIdleController, since the PowerWhitelistManager is not
+ * directly accessible in the SYSTEM process.
+ */
+interface IDeviceIdleControllerAdapter {
+    void exemptAppTemporarilyForEvent(String packageName, long duration, int userHandle,
+            String reason);
+}
\ No newline at end of file
diff --git a/telecomm/java/com/android/internal/telecom/IInternalServiceRetriever.aidl b/telecomm/java/com/android/internal/telecom/IInternalServiceRetriever.aidl
new file mode 100644
index 0000000..b560106
--- /dev/null
+++ b/telecomm/java/com/android/internal/telecom/IInternalServiceRetriever.aidl
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.internal.telecom;
+
+import com.android.internal.telecom.IDeviceIdleControllerAdapter;
+
+/*
+ * Interface used to retrieve services that are only accessible via LocalService in the SYSTEM
+ * process.
+ */
+interface IInternalServiceRetriever {
+    IDeviceIdleControllerAdapter getDeviceIdleController();
+}
diff --git a/telecomm/java/com/android/internal/telecom/ITelecomLoader.aidl b/telecomm/java/com/android/internal/telecom/ITelecomLoader.aidl
new file mode 100644
index 0000000..eda0f5b
--- /dev/null
+++ b/telecomm/java/com/android/internal/telecom/ITelecomLoader.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.internal.telecom;
+
+import com.android.internal.telecom.ITelecomService;
+import com.android.internal.telecom.IInternalServiceRetriever;
+
+/*
+ * Internal interface for getting an instance of the ITelecomService for external publication.
+ * Allows the TelecomLoaderService to pass additional dependencies required for creation.
+ */
+interface ITelecomLoader {
+    ITelecomService createTelecomService(IInternalServiceRetriever retriever);
+}
diff --git a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl
index 7c6f1df..6dc096d 100644
--- a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl
+++ b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl
@@ -179,6 +179,11 @@
     boolean isInCall(String callingPackage, String callingFeatureId);
 
     /**
+     * @see TelecomServiceImpl#hasCompanionInCallServiceAccess
+     */
+    boolean hasCompanionInCallServiceAccess(String callingPackage);
+
+    /**
      * @see TelecomServiceImpl#isInManagedCall
      */
     boolean isInManagedCall(String callingPackage, String callingFeatureId);
@@ -191,7 +196,7 @@
     /**
      * @see TelecomServiceImpl#getCallState
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     int getCallState();
 
     /**
diff --git a/telephony/api/system-current.txt b/telephony/api/system-current.txt
deleted file mode 100644
index 8228d30..0000000
--- a/telephony/api/system-current.txt
+++ /dev/null
@@ -1,1994 +0,0 @@
-// Signature format: 2.0
-package android.telephony {
-
-  public final class AccessNetworkConstants {
-    field public static final int TRANSPORT_TYPE_INVALID = -1; // 0xffffffff
-  }
-
-  public static final class AccessNetworkConstants.NgranBands {
-    method public static int getFrequencyRangeGroup(int);
-    field public static final int FREQUENCY_RANGE_GROUP_1 = 1; // 0x1
-    field public static final int FREQUENCY_RANGE_GROUP_2 = 2; // 0x2
-    field public static final int FREQUENCY_RANGE_GROUP_UNKNOWN = 0; // 0x0
-  }
-
-  public final class BarringInfo implements android.os.Parcelable {
-    ctor public BarringInfo();
-    method @NonNull public android.telephony.BarringInfo createLocationInfoSanitizedCopy();
-  }
-
-  public final class CallAttributes implements android.os.Parcelable {
-    ctor public CallAttributes(@NonNull android.telephony.PreciseCallState, int, @NonNull android.telephony.CallQuality);
-    method public int describeContents();
-    method @NonNull public android.telephony.CallQuality getCallQuality();
-    method public int getNetworkType();
-    method @NonNull public android.telephony.PreciseCallState getPreciseCallState();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CallAttributes> CREATOR;
-  }
-
-  public final class CallQuality implements android.os.Parcelable {
-    ctor public CallQuality(int, int, int, int, int, int, int, int, int, int, int);
-    ctor public CallQuality(int, int, int, int, int, int, int, int, int, int, int, boolean, boolean, boolean);
-    method public int describeContents();
-    method public int getAverageRelativeJitter();
-    method public int getAverageRoundTripTime();
-    method public int getCallDuration();
-    method public int getCodecType();
-    method public int getDownlinkCallQualityLevel();
-    method public int getMaxRelativeJitter();
-    method public int getNumRtpPacketsNotReceived();
-    method public int getNumRtpPacketsReceived();
-    method public int getNumRtpPacketsTransmitted();
-    method public int getNumRtpPacketsTransmittedLost();
-    method public int getUplinkCallQualityLevel();
-    method public boolean isIncomingSilenceDetectedAtCallSetup();
-    method public boolean isOutgoingSilenceDetectedAtCallSetup();
-    method public boolean isRtpInactivityDetected();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CALL_QUALITY_BAD = 4; // 0x4
-    field public static final int CALL_QUALITY_EXCELLENT = 0; // 0x0
-    field public static final int CALL_QUALITY_FAIR = 2; // 0x2
-    field public static final int CALL_QUALITY_GOOD = 1; // 0x1
-    field public static final int CALL_QUALITY_NOT_AVAILABLE = 5; // 0x5
-    field public static final int CALL_QUALITY_POOR = 3; // 0x3
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CallQuality> CREATOR;
-  }
-
-  public class CarrierConfigManager {
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getDefaultCarrierServicePackageName();
-    method @NonNull public static android.os.PersistableBundle getDefaultConfig();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void overrideConfig(int, @Nullable android.os.PersistableBundle);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void updateConfigForPhoneId(int, String);
-    field public static final String KEY_CARRIER_SETUP_APP_STRING = "carrier_setup_app_string";
-    field public static final String KEY_SUPPORT_CDMA_1X_VOICE_CALLS_BOOL = "support_cdma_1x_voice_calls_bool";
-  }
-
-  public static final class CarrierConfigManager.Wifi {
-    field public static final String KEY_HOTSPOT_MAX_CLIENT_COUNT = "wifi.hotspot_maximum_client_count";
-    field public static final String KEY_PREFIX = "wifi.";
-  }
-
-  public final class CarrierRestrictionRules implements android.os.Parcelable {
-    method @NonNull public java.util.List<java.lang.Boolean> areCarrierIdentifiersAllowed(@NonNull java.util.List<android.service.carrier.CarrierIdentifier>);
-    method public int describeContents();
-    method @NonNull public java.util.List<android.service.carrier.CarrierIdentifier> getAllowedCarriers();
-    method public int getDefaultCarrierRestriction();
-    method @NonNull public java.util.List<android.service.carrier.CarrierIdentifier> getExcludedCarriers();
-    method public int getMultiSimPolicy();
-    method public boolean isAllCarriersAllowed();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CARRIER_RESTRICTION_DEFAULT_ALLOWED = 1; // 0x1
-    field public static final int CARRIER_RESTRICTION_DEFAULT_NOT_ALLOWED = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CarrierRestrictionRules> CREATOR;
-    field public static final int MULTISIM_POLICY_NONE = 0; // 0x0
-    field public static final int MULTISIM_POLICY_ONE_VALID_SIM_MUST_BE_PRESENT = 1; // 0x1
-  }
-
-  public static final class CarrierRestrictionRules.Builder {
-    ctor public CarrierRestrictionRules.Builder();
-    method @NonNull public android.telephony.CarrierRestrictionRules build();
-    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setAllCarriersAllowed();
-    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setAllowedCarriers(@NonNull java.util.List<android.service.carrier.CarrierIdentifier>);
-    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setDefaultCarrierRestriction(int);
-    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setExcludedCarriers(@NonNull java.util.List<android.service.carrier.CarrierIdentifier>);
-    method @NonNull public android.telephony.CarrierRestrictionRules.Builder setMultiSimPolicy(int);
-  }
-
-  public class CbGeoUtils {
-  }
-
-  public static class CbGeoUtils.Circle implements android.telephony.CbGeoUtils.Geometry {
-    ctor public CbGeoUtils.Circle(@NonNull android.telephony.CbGeoUtils.LatLng, double);
-    method public boolean contains(@NonNull android.telephony.CbGeoUtils.LatLng);
-    method @NonNull public android.telephony.CbGeoUtils.LatLng getCenter();
-    method public double getRadius();
-  }
-
-  public static interface CbGeoUtils.Geometry {
-    method public boolean contains(@NonNull android.telephony.CbGeoUtils.LatLng);
-  }
-
-  public static class CbGeoUtils.LatLng {
-    ctor public CbGeoUtils.LatLng(double, double);
-    method public double distance(@NonNull android.telephony.CbGeoUtils.LatLng);
-    method @NonNull public android.telephony.CbGeoUtils.LatLng subtract(@NonNull android.telephony.CbGeoUtils.LatLng);
-    field public final double lat;
-    field public final double lng;
-  }
-
-  public static class CbGeoUtils.Polygon implements android.telephony.CbGeoUtils.Geometry {
-    ctor public CbGeoUtils.Polygon(@NonNull java.util.List<android.telephony.CbGeoUtils.LatLng>);
-    method public boolean contains(@NonNull android.telephony.CbGeoUtils.LatLng);
-    method @NonNull public java.util.List<android.telephony.CbGeoUtils.LatLng> getVertices();
-  }
-
-  public abstract class CellBroadcastService extends android.app.Service {
-    ctor public CellBroadcastService();
-    method @NonNull @WorkerThread public abstract CharSequence getCellBroadcastAreaInfo(int);
-    method public android.os.IBinder onBind(@Nullable android.content.Intent);
-    method public abstract void onCdmaCellBroadcastSms(int, @NonNull byte[], int);
-    method public abstract void onCdmaScpMessage(int, @NonNull java.util.List<android.telephony.cdma.CdmaSmsCbProgramData>, @NonNull String, @NonNull java.util.function.Consumer<android.os.Bundle>);
-    method public abstract void onGsmCellBroadcastSms(int, @NonNull byte[]);
-    field public static final String CELL_BROADCAST_SERVICE_INTERFACE = "android.telephony.CellBroadcastService";
-  }
-
-  public abstract class CellIdentity implements android.os.Parcelable {
-    method @NonNull public abstract android.telephony.CellLocation asCellLocation();
-    method @NonNull public abstract android.telephony.CellIdentity sanitizeLocationInfo();
-  }
-
-  public final class CellIdentityCdma extends android.telephony.CellIdentity {
-    method @NonNull public android.telephony.cdma.CdmaCellLocation asCellLocation();
-    method @NonNull public android.telephony.CellIdentityCdma sanitizeLocationInfo();
-  }
-
-  public final class CellIdentityGsm extends android.telephony.CellIdentity {
-    method @NonNull public android.telephony.gsm.GsmCellLocation asCellLocation();
-    method @NonNull public android.telephony.CellIdentityGsm sanitizeLocationInfo();
-  }
-
-  public final class CellIdentityLte extends android.telephony.CellIdentity {
-    method @NonNull public android.telephony.gsm.GsmCellLocation asCellLocation();
-    method @NonNull public android.telephony.CellIdentityLte sanitizeLocationInfo();
-  }
-
-  public final class CellIdentityNr extends android.telephony.CellIdentity {
-    method @NonNull public android.telephony.CellLocation asCellLocation();
-    method @NonNull public android.telephony.CellIdentityNr sanitizeLocationInfo();
-  }
-
-  public final class CellIdentityTdscdma extends android.telephony.CellIdentity {
-    method @NonNull public android.telephony.gsm.GsmCellLocation asCellLocation();
-    method @NonNull public android.telephony.CellIdentityTdscdma sanitizeLocationInfo();
-  }
-
-  public final class CellIdentityWcdma extends android.telephony.CellIdentity {
-    method @NonNull public android.telephony.gsm.GsmCellLocation asCellLocation();
-    method @NonNull public android.telephony.CellIdentityWcdma sanitizeLocationInfo();
-  }
-
-  public final class DataFailCause {
-    field @Deprecated public static final int VSNCP_APN_UNATHORIZED = 2238; // 0x8be
-  }
-
-  public final class DataSpecificRegistrationInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public android.telephony.LteVopsSupportInfo getLteVopsSupportInfo();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.DataSpecificRegistrationInfo> CREATOR;
-  }
-
-  public final class ImsiEncryptionInfo implements android.os.Parcelable {
-    method public int describeContents();
-    method @Nullable public String getKeyIdentifier();
-    method @Nullable public java.security.PublicKey getPublicKey();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ImsiEncryptionInfo> CREATOR;
-  }
-
-  public final class LteVopsSupportInfo implements android.os.Parcelable {
-    ctor public LteVopsSupportInfo(int, int);
-    method public int describeContents();
-    method public int getEmcBearerSupport();
-    method public int getVopsSupport();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.LteVopsSupportInfo> CREATOR;
-    field public static final int LTE_STATUS_NOT_AVAILABLE = 1; // 0x1
-    field public static final int LTE_STATUS_NOT_SUPPORTED = 3; // 0x3
-    field public static final int LTE_STATUS_SUPPORTED = 2; // 0x2
-  }
-
-  public class MbmsDownloadSession implements java.lang.AutoCloseable {
-    field public static final String MBMS_DOWNLOAD_SERVICE_ACTION = "android.telephony.action.EmbmsDownload";
-  }
-
-  public class MbmsGroupCallSession implements java.lang.AutoCloseable {
-    field public static final String MBMS_GROUP_CALL_SERVICE_ACTION = "android.telephony.action.EmbmsGroupCall";
-  }
-
-  public class MbmsStreamingSession implements java.lang.AutoCloseable {
-    field public static final String MBMS_STREAMING_SERVICE_ACTION = "android.telephony.action.EmbmsStreaming";
-  }
-
-  public final class NetworkRegistrationInfo implements android.os.Parcelable {
-    method @Nullable public android.telephony.DataSpecificRegistrationInfo getDataSpecificInfo();
-    method public int getRegistrationState();
-    method public int getRejectCause();
-    method public int getRoamingType();
-    method public boolean isEmergencyEnabled();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int REGISTRATION_STATE_DENIED = 3; // 0x3
-    field public static final int REGISTRATION_STATE_HOME = 1; // 0x1
-    field public static final int REGISTRATION_STATE_NOT_REGISTERED_OR_SEARCHING = 0; // 0x0
-    field public static final int REGISTRATION_STATE_NOT_REGISTERED_SEARCHING = 2; // 0x2
-    field public static final int REGISTRATION_STATE_ROAMING = 5; // 0x5
-    field public static final int REGISTRATION_STATE_UNKNOWN = 4; // 0x4
-  }
-
-  public static final class NetworkRegistrationInfo.Builder {
-    ctor public NetworkRegistrationInfo.Builder();
-    method @NonNull public android.telephony.NetworkRegistrationInfo build();
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setAccessNetworkTechnology(int);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setAvailableServices(@NonNull java.util.List<java.lang.Integer>);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setCellIdentity(@Nullable android.telephony.CellIdentity);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setDomain(int);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setEmergencyOnly(boolean);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setRegisteredPlmn(@Nullable String);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setRegistrationState(int);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setRejectCause(int);
-    method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setTransportType(int);
-  }
-
-  public abstract class NetworkService extends android.app.Service {
-    ctor public NetworkService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method @Nullable public abstract android.telephony.NetworkService.NetworkServiceProvider onCreateNetworkServiceProvider(int);
-    field public static final String SERVICE_INTERFACE = "android.telephony.NetworkService";
-  }
-
-  public abstract class NetworkService.NetworkServiceProvider implements java.lang.AutoCloseable {
-    ctor public NetworkService.NetworkServiceProvider(int);
-    method public abstract void close();
-    method public final int getSlotIndex();
-    method public final void notifyNetworkRegistrationInfoChanged();
-    method public void requestNetworkRegistrationInfo(int, @NonNull android.telephony.NetworkServiceCallback);
-  }
-
-  public class NetworkServiceCallback {
-    method public void onRequestNetworkRegistrationInfoComplete(int, @Nullable android.telephony.NetworkRegistrationInfo);
-    field public static final int RESULT_ERROR_BUSY = 3; // 0x3
-    field public static final int RESULT_ERROR_FAILED = 5; // 0x5
-    field public static final int RESULT_ERROR_ILLEGAL_STATE = 4; // 0x4
-    field public static final int RESULT_ERROR_INVALID_ARG = 2; // 0x2
-    field public static final int RESULT_ERROR_UNSUPPORTED = 1; // 0x1
-    field public static final int RESULT_SUCCESS = 0; // 0x0
-  }
-
-  public interface NumberVerificationCallback {
-    method public default void onCallReceived(@NonNull String);
-    method public default void onVerificationFailed(int);
-    field public static final int REASON_CONCURRENT_REQUESTS = 4; // 0x4
-    field public static final int REASON_IN_ECBM = 5; // 0x5
-    field public static final int REASON_IN_EMERGENCY_CALL = 6; // 0x6
-    field public static final int REASON_NETWORK_NOT_AVAILABLE = 2; // 0x2
-    field public static final int REASON_TIMED_OUT = 1; // 0x1
-    field public static final int REASON_TOO_MANY_CALLS = 3; // 0x3
-    field public static final int REASON_UNSPECIFIED = 0; // 0x0
-  }
-
-  public final class PhoneNumberRange implements android.os.Parcelable {
-    ctor public PhoneNumberRange(@NonNull String, @NonNull String, @NonNull String, @NonNull String);
-    method public int describeContents();
-    method public boolean matches(@NonNull String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.PhoneNumberRange> CREATOR;
-  }
-
-  public class PhoneNumberUtils {
-    method @NonNull public static String getUsernameFromUriNumber(@NonNull String);
-    method public static boolean isUriNumber(@Nullable String);
-    method public static boolean isVoiceMailNumber(@NonNull android.content.Context, int, @Nullable String);
-  }
-
-  public final class PreciseCallState implements android.os.Parcelable {
-    ctor public PreciseCallState(int, int, int, int, int);
-    method public int describeContents();
-    method public int getBackgroundCallState();
-    method public int getForegroundCallState();
-    method public int getRingingCallState();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.PreciseCallState> CREATOR;
-    field public static final int PRECISE_CALL_STATE_ACTIVE = 1; // 0x1
-    field public static final int PRECISE_CALL_STATE_ALERTING = 4; // 0x4
-    field public static final int PRECISE_CALL_STATE_DIALING = 3; // 0x3
-    field public static final int PRECISE_CALL_STATE_DISCONNECTED = 7; // 0x7
-    field public static final int PRECISE_CALL_STATE_DISCONNECTING = 8; // 0x8
-    field public static final int PRECISE_CALL_STATE_HOLDING = 2; // 0x2
-    field public static final int PRECISE_CALL_STATE_IDLE = 0; // 0x0
-    field public static final int PRECISE_CALL_STATE_INCOMING = 5; // 0x5
-    field public static final int PRECISE_CALL_STATE_NOT_VALID = -1; // 0xffffffff
-    field public static final int PRECISE_CALL_STATE_WAITING = 6; // 0x6
-  }
-
-  public final class PreciseDataConnectionState implements android.os.Parcelable {
-    method @Deprecated @NonNull public String getDataConnectionApn();
-    method @Deprecated public int getDataConnectionApnTypeBitMask();
-    method @Deprecated public int getDataConnectionFailCause();
-    method @Deprecated public int getDataConnectionState();
-  }
-
-  public final class PreciseDisconnectCause {
-    field public static final int ACCESS_CLASS_BLOCKED = 260; // 0x104
-    field public static final int ACCESS_INFORMATION_DISCARDED = 43; // 0x2b
-    field public static final int ACM_LIMIT_EXCEEDED = 68; // 0x44
-    field public static final int BEARER_CAPABILITY_NOT_AUTHORIZED = 57; // 0x39
-    field public static final int BEARER_NOT_AVAIL = 58; // 0x3a
-    field public static final int BEARER_SERVICE_NOT_IMPLEMENTED = 65; // 0x41
-    field public static final int BUSY = 17; // 0x11
-    field public static final int CALL_BARRED = 240; // 0xf0
-    field public static final int CALL_REJECTED = 21; // 0x15
-    field public static final int CDMA_ACCESS_BLOCKED = 1009; // 0x3f1
-    field public static final int CDMA_ACCESS_FAILURE = 1006; // 0x3ee
-    field public static final int CDMA_DROP = 1001; // 0x3e9
-    field public static final int CDMA_INTERCEPT = 1002; // 0x3ea
-    field public static final int CDMA_LOCKED_UNTIL_POWER_CYCLE = 1000; // 0x3e8
-    field public static final int CDMA_NOT_EMERGENCY = 1008; // 0x3f0
-    field public static final int CDMA_PREEMPTED = 1007; // 0x3ef
-    field public static final int CDMA_REORDER = 1003; // 0x3eb
-    field public static final int CDMA_RETRY_ORDER = 1005; // 0x3ed
-    field public static final int CDMA_SO_REJECT = 1004; // 0x3ec
-    field public static final int CHANNEL_NOT_AVAIL = 44; // 0x2c
-    field public static final int CHANNEL_UNACCEPTABLE = 6; // 0x6
-    field public static final int CONDITIONAL_IE_ERROR = 100; // 0x64
-    field public static final int DESTINATION_OUT_OF_ORDER = 27; // 0x1b
-    field public static final int ERROR_UNSPECIFIED = 65535; // 0xffff
-    field public static final int FACILITY_REJECTED = 29; // 0x1d
-    field public static final int FDN_BLOCKED = 241; // 0xf1
-    field public static final int IMEI_NOT_ACCEPTED = 243; // 0xf3
-    field public static final int IMSI_UNKNOWN_IN_VLR = 242; // 0xf2
-    field public static final int INCOMING_CALLS_BARRED_WITHIN_CUG = 55; // 0x37
-    field public static final int INCOMPATIBLE_DESTINATION = 88; // 0x58
-    field public static final int INFORMATION_ELEMENT_NON_EXISTENT = 99; // 0x63
-    field public static final int INTERWORKING_UNSPECIFIED = 127; // 0x7f
-    field public static final int INVALID_MANDATORY_INFORMATION = 96; // 0x60
-    field public static final int INVALID_NUMBER_FORMAT = 28; // 0x1c
-    field public static final int INVALID_TRANSACTION_IDENTIFIER = 81; // 0x51
-    field public static final int MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 101; // 0x65
-    field public static final int MESSAGE_TYPE_NON_IMPLEMENTED = 97; // 0x61
-    field public static final int MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 98; // 0x62
-    field public static final int NETWORK_DETACH = 261; // 0x105
-    field public static final int NETWORK_OUT_OF_ORDER = 38; // 0x26
-    field public static final int NETWORK_REJECT = 252; // 0xfc
-    field public static final int NETWORK_RESP_TIMEOUT = 251; // 0xfb
-    field public static final int NORMAL = 16; // 0x10
-    field public static final int NORMAL_UNSPECIFIED = 31; // 0x1f
-    field public static final int NOT_VALID = -1; // 0xffffffff
-    field public static final int NO_ANSWER_FROM_USER = 19; // 0x13
-    field public static final int NO_CIRCUIT_AVAIL = 34; // 0x22
-    field public static final int NO_DISCONNECT_CAUSE_AVAILABLE = 0; // 0x0
-    field public static final int NO_ROUTE_TO_DESTINATION = 3; // 0x3
-    field public static final int NO_USER_RESPONDING = 18; // 0x12
-    field public static final int NO_VALID_SIM = 249; // 0xf9
-    field public static final int NUMBER_CHANGED = 22; // 0x16
-    field public static final int OEM_CAUSE_1 = 61441; // 0xf001
-    field public static final int OEM_CAUSE_10 = 61450; // 0xf00a
-    field public static final int OEM_CAUSE_11 = 61451; // 0xf00b
-    field public static final int OEM_CAUSE_12 = 61452; // 0xf00c
-    field public static final int OEM_CAUSE_13 = 61453; // 0xf00d
-    field public static final int OEM_CAUSE_14 = 61454; // 0xf00e
-    field public static final int OEM_CAUSE_15 = 61455; // 0xf00f
-    field public static final int OEM_CAUSE_2 = 61442; // 0xf002
-    field public static final int OEM_CAUSE_3 = 61443; // 0xf003
-    field public static final int OEM_CAUSE_4 = 61444; // 0xf004
-    field public static final int OEM_CAUSE_5 = 61445; // 0xf005
-    field public static final int OEM_CAUSE_6 = 61446; // 0xf006
-    field public static final int OEM_CAUSE_7 = 61447; // 0xf007
-    field public static final int OEM_CAUSE_8 = 61448; // 0xf008
-    field public static final int OEM_CAUSE_9 = 61449; // 0xf009
-    field public static final int ONLY_DIGITAL_INFORMATION_BEARER_AVAILABLE = 70; // 0x46
-    field public static final int OPERATOR_DETERMINED_BARRING = 8; // 0x8
-    field public static final int OUT_OF_SRV = 248; // 0xf8
-    field public static final int PREEMPTION = 25; // 0x19
-    field public static final int PROTOCOL_ERROR_UNSPECIFIED = 111; // 0x6f
-    field public static final int QOS_NOT_AVAIL = 49; // 0x31
-    field public static final int RADIO_ACCESS_FAILURE = 253; // 0xfd
-    field public static final int RADIO_INTERNAL_ERROR = 250; // 0xfa
-    field public static final int RADIO_LINK_FAILURE = 254; // 0xfe
-    field public static final int RADIO_LINK_LOST = 255; // 0xff
-    field public static final int RADIO_OFF = 247; // 0xf7
-    field public static final int RADIO_RELEASE_ABNORMAL = 259; // 0x103
-    field public static final int RADIO_RELEASE_NORMAL = 258; // 0x102
-    field public static final int RADIO_SETUP_FAILURE = 257; // 0x101
-    field public static final int RADIO_UPLINK_FAILURE = 256; // 0x100
-    field public static final int RECOVERY_ON_TIMER_EXPIRED = 102; // 0x66
-    field public static final int REQUESTED_FACILITY_NOT_IMPLEMENTED = 69; // 0x45
-    field public static final int REQUESTED_FACILITY_NOT_SUBSCRIBED = 50; // 0x32
-    field public static final int RESOURCES_UNAVAILABLE_OR_UNSPECIFIED = 47; // 0x2f
-    field public static final int SEMANTICALLY_INCORRECT_MESSAGE = 95; // 0x5f
-    field public static final int SERVICE_OPTION_NOT_AVAILABLE = 63; // 0x3f
-    field public static final int SERVICE_OR_OPTION_NOT_IMPLEMENTED = 79; // 0x4f
-    field public static final int STATUS_ENQUIRY = 30; // 0x1e
-    field public static final int SWITCHING_CONGESTION = 42; // 0x2a
-    field public static final int TEMPORARY_FAILURE = 41; // 0x29
-    field public static final int UNOBTAINABLE_NUMBER = 1; // 0x1
-    field public static final int USER_NOT_MEMBER_OF_CUG = 87; // 0x57
-  }
-
-  public class ServiceState implements android.os.Parcelable {
-    method @Nullable public android.telephony.NetworkRegistrationInfo getNetworkRegistrationInfo(int, int);
-    method @NonNull public java.util.List<android.telephony.NetworkRegistrationInfo> getNetworkRegistrationInfoListForDomain(int);
-    method @NonNull public java.util.List<android.telephony.NetworkRegistrationInfo> getNetworkRegistrationInfoListForTransportType(int);
-    field public static final int ROAMING_TYPE_DOMESTIC = 2; // 0x2
-    field public static final int ROAMING_TYPE_INTERNATIONAL = 3; // 0x3
-    field public static final int ROAMING_TYPE_NOT_ROAMING = 0; // 0x0
-    field public static final int ROAMING_TYPE_UNKNOWN = 1; // 0x1
-  }
-
-  public final class SmsCbCmasInfo implements android.os.Parcelable {
-    ctor public SmsCbCmasInfo(int, int, int, int, int, int);
-    method public int describeContents();
-    method public int getCategory();
-    method public int getCertainty();
-    method public int getMessageClass();
-    method public int getResponseType();
-    method public int getSeverity();
-    method public int getUrgency();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CMAS_CATEGORY_CBRNE = 10; // 0xa
-    field public static final int CMAS_CATEGORY_ENV = 7; // 0x7
-    field public static final int CMAS_CATEGORY_FIRE = 5; // 0x5
-    field public static final int CMAS_CATEGORY_GEO = 0; // 0x0
-    field public static final int CMAS_CATEGORY_HEALTH = 6; // 0x6
-    field public static final int CMAS_CATEGORY_INFRA = 9; // 0x9
-    field public static final int CMAS_CATEGORY_MET = 1; // 0x1
-    field public static final int CMAS_CATEGORY_OTHER = 11; // 0xb
-    field public static final int CMAS_CATEGORY_RESCUE = 4; // 0x4
-    field public static final int CMAS_CATEGORY_SAFETY = 2; // 0x2
-    field public static final int CMAS_CATEGORY_SECURITY = 3; // 0x3
-    field public static final int CMAS_CATEGORY_TRANSPORT = 8; // 0x8
-    field public static final int CMAS_CATEGORY_UNKNOWN = -1; // 0xffffffff
-    field public static final int CMAS_CERTAINTY_LIKELY = 1; // 0x1
-    field public static final int CMAS_CERTAINTY_OBSERVED = 0; // 0x0
-    field public static final int CMAS_CERTAINTY_UNKNOWN = -1; // 0xffffffff
-    field public static final int CMAS_CLASS_CHILD_ABDUCTION_EMERGENCY = 3; // 0x3
-    field public static final int CMAS_CLASS_CMAS_EXERCISE = 5; // 0x5
-    field public static final int CMAS_CLASS_EXTREME_THREAT = 1; // 0x1
-    field public static final int CMAS_CLASS_OPERATOR_DEFINED_USE = 6; // 0x6
-    field public static final int CMAS_CLASS_PRESIDENTIAL_LEVEL_ALERT = 0; // 0x0
-    field public static final int CMAS_CLASS_REQUIRED_MONTHLY_TEST = 4; // 0x4
-    field public static final int CMAS_CLASS_SEVERE_THREAT = 2; // 0x2
-    field public static final int CMAS_CLASS_UNKNOWN = -1; // 0xffffffff
-    field public static final int CMAS_RESPONSE_TYPE_ASSESS = 6; // 0x6
-    field public static final int CMAS_RESPONSE_TYPE_AVOID = 5; // 0x5
-    field public static final int CMAS_RESPONSE_TYPE_EVACUATE = 1; // 0x1
-    field public static final int CMAS_RESPONSE_TYPE_EXECUTE = 3; // 0x3
-    field public static final int CMAS_RESPONSE_TYPE_MONITOR = 4; // 0x4
-    field public static final int CMAS_RESPONSE_TYPE_NONE = 7; // 0x7
-    field public static final int CMAS_RESPONSE_TYPE_PREPARE = 2; // 0x2
-    field public static final int CMAS_RESPONSE_TYPE_SHELTER = 0; // 0x0
-    field public static final int CMAS_RESPONSE_TYPE_UNKNOWN = -1; // 0xffffffff
-    field public static final int CMAS_SEVERITY_EXTREME = 0; // 0x0
-    field public static final int CMAS_SEVERITY_SEVERE = 1; // 0x1
-    field public static final int CMAS_SEVERITY_UNKNOWN = -1; // 0xffffffff
-    field public static final int CMAS_URGENCY_EXPECTED = 1; // 0x1
-    field public static final int CMAS_URGENCY_IMMEDIATE = 0; // 0x0
-    field public static final int CMAS_URGENCY_UNKNOWN = -1; // 0xffffffff
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SmsCbCmasInfo> CREATOR;
-  }
-
-  public final class SmsCbEtwsInfo implements android.os.Parcelable {
-    ctor public SmsCbEtwsInfo(int, boolean, boolean, boolean, @Nullable byte[]);
-    method public int describeContents();
-    method @Nullable public byte[] getPrimaryNotificationSignature();
-    method public long getPrimaryNotificationTimestamp();
-    method public int getWarningType();
-    method public boolean isEmergencyUserAlert();
-    method public boolean isPopupAlert();
-    method public boolean isPrimary();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SmsCbEtwsInfo> CREATOR;
-    field public static final int ETWS_WARNING_TYPE_EARTHQUAKE = 0; // 0x0
-    field public static final int ETWS_WARNING_TYPE_EARTHQUAKE_AND_TSUNAMI = 2; // 0x2
-    field public static final int ETWS_WARNING_TYPE_OTHER_EMERGENCY = 4; // 0x4
-    field public static final int ETWS_WARNING_TYPE_TEST_MESSAGE = 3; // 0x3
-    field public static final int ETWS_WARNING_TYPE_TSUNAMI = 1; // 0x1
-    field public static final int ETWS_WARNING_TYPE_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public final class SmsCbLocation implements android.os.Parcelable {
-    ctor public SmsCbLocation(@NonNull String, int, int);
-    method public int describeContents();
-    method public int getCid();
-    method public int getLac();
-    method @NonNull public String getPlmn();
-    method public boolean isInLocationArea(@NonNull android.telephony.SmsCbLocation);
-    method public boolean isInLocationArea(@Nullable String, int, int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SmsCbLocation> CREATOR;
-  }
-
-  public final class SmsCbMessage implements android.os.Parcelable {
-    ctor public SmsCbMessage(int, int, int, @NonNull android.telephony.SmsCbLocation, int, @Nullable String, int, @Nullable String, int, @Nullable android.telephony.SmsCbEtwsInfo, @Nullable android.telephony.SmsCbCmasInfo, int, @Nullable java.util.List<android.telephony.CbGeoUtils.Geometry>, long, int, int);
-    method @NonNull public static android.telephony.SmsCbMessage createFromCursor(@NonNull android.database.Cursor);
-    method public int describeContents();
-    method @Nullable public android.telephony.SmsCbCmasInfo getCmasWarningInfo();
-    method @NonNull public android.content.ContentValues getContentValues();
-    method public int getDataCodingScheme();
-    method @Nullable public android.telephony.SmsCbEtwsInfo getEtwsWarningInfo();
-    method public int getGeographicalScope();
-    method @NonNull public java.util.List<android.telephony.CbGeoUtils.Geometry> getGeometries();
-    method @Nullable public String getLanguageCode();
-    method @NonNull public android.telephony.SmsCbLocation getLocation();
-    method public int getMaximumWaitingDuration();
-    method @Nullable public String getMessageBody();
-    method public int getMessageFormat();
-    method public int getMessagePriority();
-    method public long getReceivedTime();
-    method public int getSerialNumber();
-    method public int getServiceCategory();
-    method public int getSlotIndex();
-    method public int getSubscriptionId();
-    method public boolean isCmasMessage();
-    method public boolean isEmergencyMessage();
-    method public boolean isEtwsMessage();
-    method public boolean needGeoFencingCheck();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SmsCbMessage> CREATOR;
-    field public static final int GEOGRAPHICAL_SCOPE_CELL_WIDE = 3; // 0x3
-    field public static final int GEOGRAPHICAL_SCOPE_CELL_WIDE_IMMEDIATE = 0; // 0x0
-    field public static final int GEOGRAPHICAL_SCOPE_LOCATION_AREA_WIDE = 2; // 0x2
-    field public static final int GEOGRAPHICAL_SCOPE_PLMN_WIDE = 1; // 0x1
-    field public static final int MAXIMUM_WAIT_TIME_NOT_SET = 255; // 0xff
-    field public static final int MESSAGE_FORMAT_3GPP = 1; // 0x1
-    field public static final int MESSAGE_FORMAT_3GPP2 = 2; // 0x2
-    field public static final int MESSAGE_PRIORITY_EMERGENCY = 3; // 0x3
-    field public static final int MESSAGE_PRIORITY_INTERACTIVE = 1; // 0x1
-    field public static final int MESSAGE_PRIORITY_NORMAL = 0; // 0x0
-    field public static final int MESSAGE_PRIORITY_URGENT = 2; // 0x2
-  }
-
-  public final class SmsManager {
-    method public boolean disableCellBroadcastRange(int, int, int);
-    method public boolean enableCellBroadcastRange(int, int, int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getPremiumSmsConsent(@NonNull String);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getSmsCapacityOnIcc();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void sendMultipartTextMessageWithoutPersisting(String, String, java.util.List<java.lang.String>, java.util.List<android.app.PendingIntent>, java.util.List<android.app.PendingIntent>);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setPremiumSmsConsent(@NonNull String, int);
-    field public static final int PREMIUM_SMS_CONSENT_ALWAYS_ALLOW = 3; // 0x3
-    field public static final int PREMIUM_SMS_CONSENT_ASK_USER = 1; // 0x1
-    field public static final int PREMIUM_SMS_CONSENT_NEVER_ALLOW = 2; // 0x2
-    field public static final int PREMIUM_SMS_CONSENT_UNKNOWN = 0; // 0x0
-  }
-
-  public class SmsMessage {
-    method @Nullable public static android.telephony.SmsMessage createFromNativeSmsSubmitPdu(@NonNull byte[], boolean);
-    method @Nullable public static android.telephony.SmsMessage.SubmitPdu getSmsPdu(int, int, @Nullable String, @NonNull String, @NonNull String, long);
-    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public static byte[] getSubmitPduEncodedMessage(boolean, @NonNull String, @NonNull String, int, @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0, to=255) int, @IntRange(from=1, to=255) int, @IntRange(from=1, to=255) int);
-  }
-
-  public class SubscriptionInfo implements android.os.Parcelable {
-    method public boolean areUiccApplicationsEnabled();
-    method @Nullable public java.util.List<android.telephony.UiccAccessRule> getAccessRules();
-    method public int getProfileClass();
-    method public boolean isGroupDisabled();
-  }
-
-  public class SubscriptionManager {
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean canDisablePhysicalSubscription();
-    method public boolean canManageSubscription(@NonNull android.telephony.SubscriptionInfo, @NonNull String);
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int[] getActiveSubscriptionIdList();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.SubscriptionInfo getActiveSubscriptionInfoForIcc(@NonNull String);
-    method public java.util.List<android.telephony.SubscriptionInfo> getAvailableSubscriptionInfoList();
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int[] getCompleteActiveSubscriptionIdList();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getEnabledSubscriptionId(int);
-    method @NonNull public static android.content.res.Resources getResourcesForSubId(@NonNull android.content.Context, int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isSubscriptionEnabled(int);
-    method public void requestEmbeddedSubscriptionInfoListRefresh();
-    method public void requestEmbeddedSubscriptionInfoListRefresh(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultDataSubId(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultSmsSubId(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultVoiceSubscriptionId(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setPreferredDataSubscriptionId(int, boolean, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<java.lang.Integer>);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setSubscriptionEnabled(int, boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setUiccApplicationsEnabled(int, boolean);
-    field @RequiresPermission(android.Manifest.permission.MANAGE_SUBSCRIPTION_PLANS) public static final String ACTION_SUBSCRIPTION_PLANS_CHANGED = "android.telephony.action.SUBSCRIPTION_PLANS_CHANGED";
-    field @NonNull public static final android.net.Uri ADVANCED_CALLING_ENABLED_CONTENT_URI;
-    field @Deprecated public static final int PROFILE_CLASS_DEFAULT;
-    field public static final int PROFILE_CLASS_OPERATIONAL;
-    field public static final int PROFILE_CLASS_PROVISIONING;
-    field public static final int PROFILE_CLASS_TESTING;
-    field public static final int PROFILE_CLASS_UNSET;
-    field @NonNull public static final android.net.Uri VT_ENABLED_CONTENT_URI;
-    field @NonNull public static final android.net.Uri WFC_ENABLED_CONTENT_URI;
-    field @NonNull public static final android.net.Uri WFC_MODE_CONTENT_URI;
-    field @NonNull public static final android.net.Uri WFC_ROAMING_ENABLED_CONTENT_URI;
-    field @NonNull public static final android.net.Uri WFC_ROAMING_MODE_CONTENT_URI;
-  }
-
-  public final class TelephonyHistogram implements android.os.Parcelable {
-    ctor public TelephonyHistogram(int, int, int);
-    ctor public TelephonyHistogram(android.telephony.TelephonyHistogram);
-    ctor public TelephonyHistogram(android.os.Parcel);
-    method public void addTimeTaken(int);
-    method public int describeContents();
-    method public int getAverageTime();
-    method public int getBucketCount();
-    method public int[] getBucketCounters();
-    method public int[] getBucketEndPoints();
-    method public int getCategory();
-    method public int getId();
-    method public int getMaxTime();
-    method public int getMinTime();
-    method public int getSampleCount();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.TelephonyHistogram> CREATOR;
-    field public static final int TELEPHONY_CATEGORY_RIL = 1; // 0x1
-  }
-
-  public class TelephonyManager {
-    method @Deprecated @RequiresPermission(android.Manifest.permission.CALL_PHONE) public void call(String, String);
-    method public int checkCarrierPrivilegesForPackage(String);
-    method public int checkCarrierPrivilegesForPackageAnyPhone(String);
-    method public void dial(String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean disableDataConnectivity();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean enableDataConnectivity();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean enableModemForSlot(int, boolean);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void enableVideoCalling(boolean);
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getAidForAppType(int);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.List<android.service.carrier.CarrierIdentifier> getAllowedCarriers(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public long getAllowedNetworkTypes();
-    method @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public android.content.ComponentName getAndUpdateDefaultRespondViaMessageApplication();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.ImsiEncryptionInfo getCarrierInfoForImsiEncryption(int);
-    method public java.util.List<java.lang.String> getCarrierPackageNamesForIntent(android.content.Intent);
-    method public java.util.List<java.lang.String> getCarrierPackageNamesForIntentAndPhone(android.content.Intent, int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getCarrierPrivilegeStatus(int);
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.List<java.lang.String> getCarrierPrivilegedPackagesForAllActiveSubscriptions();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.CarrierRestrictionRules getCarrierRestrictionRules();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String getCdmaMdn();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String getCdmaMdn(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String getCdmaMin();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String getCdmaMin(int);
-    method public String getCdmaPrlVersion();
-    method public int getCurrentPhoneType();
-    method public int getCurrentPhoneType(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getDataActivationState();
-    method @Deprecated public boolean getDataEnabled();
-    method @Deprecated public boolean getDataEnabled(int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public android.content.ComponentName getDefaultRespondViaMessageApplication();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getDeviceSoftwareVersion(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean getEmergencyCallbackMode();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getEmergencyNumberDbVersion();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getIsimDomain();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getIsimIst();
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.Map<java.lang.Integer,java.lang.Integer> getLogicalToPhysicalSlotMapping();
-    method public int getMaxNumberOfSimultaneouslyActiveSims();
-    method public static long getMaxNumberVerificationTimeoutMillis();
-    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String[] getMergedImsisFromGroup();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public long getPreferredNetworkTypeBitmask();
-    method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public int getRadioPowerState();
-    method public int getSimApplicationState();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getSimApplicationState(int);
-    method public int getSimCardState();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getSimCardState(int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.Locale getSimLocale();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public long getSupportedRadioAccessFamily();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public java.util.List<android.telephony.TelephonyHistogram> getTelephonyHistograms();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.UiccSlotInfo[] getUiccSlotsInfo();
-    method @Nullable public android.os.Bundle getVisualVoicemailSettings();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getVoiceActivationState();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handlePinMmi(String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handlePinMmiForSubscriber(int, String);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean iccCloseLogicalChannelBySlot(int, int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannelBySlot(int, @Nullable String, int);
-    method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String iccTransmitApduBasicChannelBySlot(int, int, int, int, int, int, @Nullable String);
-    method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String iccTransmitApduLogicalChannelBySlot(int, int, int, int, int, int, int, @Nullable String);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isAnyRadioPoweredOn();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isApnMetered(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isApplicationOnUicc(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isDataConnectionAllowed();
-    method public boolean isDataConnectivityPossible();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isDataEnabledForApn(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isEmergencyAssistanceEnabled();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public boolean isIccLockEnabled();
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isIdle();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isLteCdmaEvdoGsmWcdmaEnabled();
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isOffhook();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isOpportunisticNetworkEnabled();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isPotentialEmergencyNumber(@NonNull String);
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isRadioOn();
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isRinging();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean isTetheringApnRequired();
-    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isVideoCallingEnabled();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isVisualVoicemailEnabled(android.telecom.PhoneAccountHandle);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean matchesCurrentSimOperator(@NonNull String, int, @Nullable String);
-    method public boolean needsOtaServiceProvisioning();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void notifyOtaEmergencyNumberDbInstalled();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean rebootRadio();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void reportDefaultNetworkStatus(boolean);
-    method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.MODIFY_PHONE_STATE}) public void requestCellInfoUpdate(@NonNull android.os.WorkSource, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.TelephonyManager.CellInfoCallback);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void requestNumberVerification(@NonNull android.telephony.PhoneNumberRange, long, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.NumberVerificationCallback);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void resetAllCarrierActions();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void resetCarrierKeysForImsiEncryption();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public void resetIms(int);
-    method @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION) public void resetOtaEmergencyNumberDbFilePath();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean resetRadioConfig();
-    method @RequiresPermission(android.Manifest.permission.CONNECTIVITY_INTERNAL) public void resetSettings();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int setAllowedCarriers(int, java.util.List<android.service.carrier.CarrierIdentifier>);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setAllowedNetworkTypes(long);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCarrierDataEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int setCarrierRestrictionRules(@NonNull android.telephony.CarrierRestrictionRules);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataActivationState(int);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataEnabled(int, boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataRoamingEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setMultiSimCarrierRestriction(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setOpportunisticNetworkState(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setPreferredNetworkTypeBitmask(long);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setRadio(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setRadioEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setRadioPower(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSimPowerState(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSimPowerStateForSlot(int, int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSystemSelectionChannels(@NonNull java.util.List<android.telephony.RadioAccessSpecifier>, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSystemSelectionChannels(@NonNull java.util.List<android.telephony.RadioAccessSpecifier>);
-    method @Deprecated public void setVisualVoicemailEnabled(android.telecom.PhoneAccountHandle, boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoiceActivationState(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void shutdownAllRadios();
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean supplyPin(String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int[] supplyPinReportResult(String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean supplyPuk(String, String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int[] supplyPukReportResult(String, String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean switchSlots(int[]);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void toggleRadioOnOff();
-    method @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION) public void updateOtaEmergencyNumberDbFilePath(@NonNull android.os.ParcelFileDescriptor);
-    method public void updateServiceLocation();
-    field @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static final String ACTION_ANOMALY_REPORTED = "android.telephony.action.ANOMALY_REPORTED";
-    field public static final String ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED = "android.intent.action.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED";
-    field public static final String ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED = "android.intent.action.ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED";
-    field public static final String ACTION_EMERGENCY_ASSISTANCE = "android.telephony.action.EMERGENCY_ASSISTANCE";
-    field public static final String ACTION_EMERGENCY_CALLBACK_MODE_CHANGED = "android.intent.action.EMERGENCY_CALLBACK_MODE_CHANGED";
-    field public static final String ACTION_EMERGENCY_CALL_STATE_CHANGED = "android.intent.action.EMERGENCY_CALL_STATE_CHANGED";
-    field public static final String ACTION_REQUEST_OMADM_CONFIGURATION_UPDATE = "com.android.omadm.service.CONFIGURATION_UPDATE";
-    field public static final String ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS = "android.telephony.action.SHOW_NOTICE_ECM_BLOCK_OTHERS";
-    field public static final String ACTION_SIM_APPLICATION_STATE_CHANGED = "android.telephony.action.SIM_APPLICATION_STATE_CHANGED";
-    field public static final String ACTION_SIM_CARD_STATE_CHANGED = "android.telephony.action.SIM_CARD_STATE_CHANGED";
-    field public static final String ACTION_SIM_SLOT_STATUS_CHANGED = "android.telephony.action.SIM_SLOT_STATUS_CHANGED";
-    field public static final int CARRIER_PRIVILEGE_STATUS_ERROR_LOADING_RULES = -2; // 0xfffffffe
-    field public static final int CARRIER_PRIVILEGE_STATUS_HAS_ACCESS = 1; // 0x1
-    field public static final int CARRIER_PRIVILEGE_STATUS_NO_ACCESS = 0; // 0x0
-    field public static final int CARRIER_PRIVILEGE_STATUS_RULES_NOT_LOADED = -1; // 0xffffffff
-    field public static final String EXTRA_ANOMALY_DESCRIPTION = "android.telephony.extra.ANOMALY_DESCRIPTION";
-    field public static final String EXTRA_ANOMALY_ID = "android.telephony.extra.ANOMALY_ID";
-    field public static final String EXTRA_PHONE_IN_ECM_STATE = "android.telephony.extra.PHONE_IN_ECM_STATE";
-    field public static final String EXTRA_PHONE_IN_EMERGENCY_CALL = "android.telephony.extra.PHONE_IN_EMERGENCY_CALL";
-    field public static final String EXTRA_SIM_STATE = "android.telephony.extra.SIM_STATE";
-    field public static final String EXTRA_VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL = "android.telephony.extra.VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL";
-    field public static final String EXTRA_VOICEMAIL_SCRAMBLED_PIN_STRING = "android.telephony.extra.VOICEMAIL_SCRAMBLED_PIN_STRING";
-    field public static final int INVALID_EMERGENCY_NUMBER_DB_VERSION = -1; // 0xffffffff
-    field public static final int KEY_TYPE_EPDG = 1; // 0x1
-    field public static final int KEY_TYPE_WLAN = 2; // 0x2
-    field public static final long NETWORK_TYPE_BITMASK_1xRTT = 64L; // 0x40L
-    field public static final long NETWORK_TYPE_BITMASK_CDMA = 8L; // 0x8L
-    field public static final long NETWORK_TYPE_BITMASK_EDGE = 2L; // 0x2L
-    field public static final long NETWORK_TYPE_BITMASK_EHRPD = 8192L; // 0x2000L
-    field public static final long NETWORK_TYPE_BITMASK_EVDO_0 = 16L; // 0x10L
-    field public static final long NETWORK_TYPE_BITMASK_EVDO_A = 32L; // 0x20L
-    field public static final long NETWORK_TYPE_BITMASK_EVDO_B = 2048L; // 0x800L
-    field public static final long NETWORK_TYPE_BITMASK_GPRS = 1L; // 0x1L
-    field public static final long NETWORK_TYPE_BITMASK_GSM = 32768L; // 0x8000L
-    field public static final long NETWORK_TYPE_BITMASK_HSDPA = 128L; // 0x80L
-    field public static final long NETWORK_TYPE_BITMASK_HSPA = 512L; // 0x200L
-    field public static final long NETWORK_TYPE_BITMASK_HSPAP = 16384L; // 0x4000L
-    field public static final long NETWORK_TYPE_BITMASK_HSUPA = 256L; // 0x100L
-    field public static final long NETWORK_TYPE_BITMASK_IWLAN = 131072L; // 0x20000L
-    field public static final long NETWORK_TYPE_BITMASK_LTE = 4096L; // 0x1000L
-    field public static final long NETWORK_TYPE_BITMASK_LTE_CA = 262144L; // 0x40000L
-    field public static final long NETWORK_TYPE_BITMASK_NR = 524288L; // 0x80000L
-    field public static final long NETWORK_TYPE_BITMASK_TD_SCDMA = 65536L; // 0x10000L
-    field public static final long NETWORK_TYPE_BITMASK_UMTS = 4L; // 0x4L
-    field public static final long NETWORK_TYPE_BITMASK_UNKNOWN = 0L; // 0x0L
-    field public static final int RADIO_POWER_OFF = 0; // 0x0
-    field public static final int RADIO_POWER_ON = 1; // 0x1
-    field public static final int RADIO_POWER_UNAVAILABLE = 2; // 0x2
-    field public static final int SET_CARRIER_RESTRICTION_ERROR = 2; // 0x2
-    field public static final int SET_CARRIER_RESTRICTION_NOT_SUPPORTED = 1; // 0x1
-    field public static final int SET_CARRIER_RESTRICTION_SUCCESS = 0; // 0x0
-    field public static final int SIM_ACTIVATION_STATE_ACTIVATED = 2; // 0x2
-    field public static final int SIM_ACTIVATION_STATE_ACTIVATING = 1; // 0x1
-    field public static final int SIM_ACTIVATION_STATE_DEACTIVATED = 3; // 0x3
-    field public static final int SIM_ACTIVATION_STATE_RESTRICTED = 4; // 0x4
-    field public static final int SIM_ACTIVATION_STATE_UNKNOWN = 0; // 0x0
-    field public static final int SIM_STATE_LOADED = 10; // 0xa
-    field public static final int SIM_STATE_PRESENT = 11; // 0xb
-    field public static final int SRVCC_STATE_HANDOVER_CANCELED = 3; // 0x3
-    field public static final int SRVCC_STATE_HANDOVER_COMPLETED = 1; // 0x1
-    field public static final int SRVCC_STATE_HANDOVER_FAILED = 2; // 0x2
-    field public static final int SRVCC_STATE_HANDOVER_NONE = -1; // 0xffffffff
-    field public static final int SRVCC_STATE_HANDOVER_STARTED = 0; // 0x0
-  }
-
-  public final class UiccAccessRule implements android.os.Parcelable {
-    ctor public UiccAccessRule(byte[], @Nullable String, long);
-    method public int describeContents();
-    method public int getCarrierPrivilegeStatus(android.content.pm.PackageInfo);
-    method public int getCarrierPrivilegeStatus(android.content.pm.Signature, String);
-    method public String getCertificateHexString();
-    method @Nullable public String getPackageName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.UiccAccessRule> CREATOR;
-  }
-
-  public class UiccSlotInfo implements android.os.Parcelable {
-    ctor @Deprecated public UiccSlotInfo(boolean, boolean, String, int, int, boolean);
-    method public int describeContents();
-    method public String getCardId();
-    method public int getCardStateInfo();
-    method public boolean getIsActive();
-    method public boolean getIsEuicc();
-    method public boolean getIsExtendedApduSupported();
-    method public int getLogicalSlotIdx();
-    method public boolean isRemovable();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CARD_STATE_INFO_ABSENT = 1; // 0x1
-    field public static final int CARD_STATE_INFO_ERROR = 3; // 0x3
-    field public static final int CARD_STATE_INFO_PRESENT = 2; // 0x2
-    field public static final int CARD_STATE_INFO_RESTRICTED = 4; // 0x4
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.UiccSlotInfo> CREATOR;
-  }
-
-  public abstract class VisualVoicemailService extends android.app.Service {
-    method public static final void sendVisualVoicemailSms(android.content.Context, android.telecom.PhoneAccountHandle, String, short, String, android.app.PendingIntent);
-    method public static final void setSmsFilterSettings(android.content.Context, android.telecom.PhoneAccountHandle, android.telephony.VisualVoicemailSmsFilterSettings);
-  }
-
-}
-
-package android.telephony.cdma {
-
-  public final class CdmaSmsCbProgramData implements android.os.Parcelable {
-    method public int describeContents();
-    method public int getCategory();
-    method public int getOperation();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CATEGORY_CMAS_CHILD_ABDUCTION_EMERGENCY = 4099; // 0x1003
-    field public static final int CATEGORY_CMAS_EXTREME_THREAT = 4097; // 0x1001
-    field public static final int CATEGORY_CMAS_LAST_RESERVED_VALUE = 4351; // 0x10ff
-    field public static final int CATEGORY_CMAS_PRESIDENTIAL_LEVEL_ALERT = 4096; // 0x1000
-    field public static final int CATEGORY_CMAS_SEVERE_THREAT = 4098; // 0x1002
-    field public static final int CATEGORY_CMAS_TEST_MESSAGE = 4100; // 0x1004
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.cdma.CdmaSmsCbProgramData> CREATOR;
-    field public static final int OPERATION_ADD_CATEGORY = 1; // 0x1
-    field public static final int OPERATION_CLEAR_CATEGORIES = 2; // 0x2
-    field public static final int OPERATION_DELETE_CATEGORY = 0; // 0x0
-  }
-
-}
-
-package android.telephony.data {
-
-  public final class DataCallResponse implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public java.util.List<android.net.LinkAddress> getAddresses();
-    method public int getCause();
-    method @NonNull public java.util.List<java.net.InetAddress> getDnsAddresses();
-    method @NonNull public java.util.List<java.net.InetAddress> getGatewayAddresses();
-    method public int getId();
-    method @NonNull public String getInterfaceName();
-    method public int getLinkStatus();
-    method @Deprecated public int getMtu();
-    method public int getMtuV4();
-    method public int getMtuV6();
-    method @NonNull public java.util.List<java.net.InetAddress> getPcscfAddresses();
-    method public int getProtocolType();
-    method public int getSuggestedRetryTime();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.DataCallResponse> CREATOR;
-    field public static final int LINK_STATUS_ACTIVE = 2; // 0x2
-    field public static final int LINK_STATUS_DORMANT = 1; // 0x1
-    field public static final int LINK_STATUS_INACTIVE = 0; // 0x0
-    field public static final int LINK_STATUS_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public static final class DataCallResponse.Builder {
-    ctor public DataCallResponse.Builder();
-    method @NonNull public android.telephony.data.DataCallResponse build();
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setAddresses(@NonNull java.util.List<android.net.LinkAddress>);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setCause(int);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setDnsAddresses(@NonNull java.util.List<java.net.InetAddress>);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setGatewayAddresses(@NonNull java.util.List<java.net.InetAddress>);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setId(int);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setInterfaceName(@NonNull String);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setLinkStatus(int);
-    method @Deprecated @NonNull public android.telephony.data.DataCallResponse.Builder setMtu(int);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setMtuV4(int);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setMtuV6(int);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setPcscfAddresses(@NonNull java.util.List<java.net.InetAddress>);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setProtocolType(int);
-    method @NonNull public android.telephony.data.DataCallResponse.Builder setSuggestedRetryTime(int);
-  }
-
-  public final class DataProfile implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public String getApn();
-    method public int getAuthType();
-    method public int getBearerBitmask();
-    method @Deprecated public int getMtu();
-    method public int getMtuV4();
-    method public int getMtuV6();
-    method @Nullable public String getPassword();
-    method public int getProfileId();
-    method public int getProtocolType();
-    method public int getRoamingProtocolType();
-    method public int getSupportedApnTypesBitmask();
-    method public int getType();
-    method @Nullable public String getUserName();
-    method public boolean isEnabled();
-    method public boolean isPersistent();
-    method public boolean isPreferred();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.DataProfile> CREATOR;
-    field public static final int TYPE_3GPP = 1; // 0x1
-    field public static final int TYPE_3GPP2 = 2; // 0x2
-    field public static final int TYPE_COMMON = 0; // 0x0
-  }
-
-  public static final class DataProfile.Builder {
-    ctor public DataProfile.Builder();
-    method @NonNull public android.telephony.data.DataProfile build();
-    method @NonNull public android.telephony.data.DataProfile.Builder enable(boolean);
-    method @NonNull public android.telephony.data.DataProfile.Builder setApn(@NonNull String);
-    method @NonNull public android.telephony.data.DataProfile.Builder setAuthType(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setBearerBitmask(int);
-    method @Deprecated @NonNull public android.telephony.data.DataProfile.Builder setMtu(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setMtuV4(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setMtuV6(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setPassword(@NonNull String);
-    method @NonNull public android.telephony.data.DataProfile.Builder setPersistent(boolean);
-    method @NonNull public android.telephony.data.DataProfile.Builder setPreferred(boolean);
-    method @NonNull public android.telephony.data.DataProfile.Builder setProfileId(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setProtocolType(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setRoamingProtocolType(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setSupportedApnTypesBitmask(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setType(int);
-    method @NonNull public android.telephony.data.DataProfile.Builder setUserName(@NonNull String);
-  }
-
-  public abstract class DataService extends android.app.Service {
-    ctor public DataService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method @Nullable public abstract android.telephony.data.DataService.DataServiceProvider onCreateDataServiceProvider(int);
-    field public static final int REQUEST_REASON_HANDOVER = 3; // 0x3
-    field public static final int REQUEST_REASON_NORMAL = 1; // 0x1
-    field public static final int REQUEST_REASON_SHUTDOWN = 2; // 0x2
-    field public static final int REQUEST_REASON_UNKNOWN = 0; // 0x0
-    field public static final String SERVICE_INTERFACE = "android.telephony.data.DataService";
-  }
-
-  public abstract class DataService.DataServiceProvider implements java.lang.AutoCloseable {
-    ctor public DataService.DataServiceProvider(int);
-    method public abstract void close();
-    method public void deactivateDataCall(int, int, @Nullable android.telephony.data.DataServiceCallback);
-    method public final int getSlotIndex();
-    method public final void notifyDataCallListChanged(java.util.List<android.telephony.data.DataCallResponse>);
-    method public void requestDataCallList(@NonNull android.telephony.data.DataServiceCallback);
-    method public void setDataProfile(@NonNull java.util.List<android.telephony.data.DataProfile>, boolean, @NonNull android.telephony.data.DataServiceCallback);
-    method public void setInitialAttachApn(@NonNull android.telephony.data.DataProfile, boolean, @NonNull android.telephony.data.DataServiceCallback);
-    method public void setupDataCall(int, @NonNull android.telephony.data.DataProfile, boolean, boolean, int, @Nullable android.net.LinkProperties, @NonNull android.telephony.data.DataServiceCallback);
-  }
-
-  public class DataServiceCallback {
-    method public void onDataCallListChanged(@NonNull java.util.List<android.telephony.data.DataCallResponse>);
-    method public void onDeactivateDataCallComplete(int);
-    method public void onRequestDataCallListComplete(int, @NonNull java.util.List<android.telephony.data.DataCallResponse>);
-    method public void onSetDataProfileComplete(int);
-    method public void onSetInitialAttachApnComplete(int);
-    method public void onSetupDataCallComplete(int, @Nullable android.telephony.data.DataCallResponse);
-    field public static final int RESULT_ERROR_BUSY = 3; // 0x3
-    field public static final int RESULT_ERROR_ILLEGAL_STATE = 4; // 0x4
-    field public static final int RESULT_ERROR_INVALID_ARG = 2; // 0x2
-    field public static final int RESULT_ERROR_UNSUPPORTED = 1; // 0x1
-    field public static final int RESULT_SUCCESS = 0; // 0x0
-  }
-
-  public abstract class QualifiedNetworksService extends android.app.Service {
-    ctor public QualifiedNetworksService();
-    method @NonNull public abstract android.telephony.data.QualifiedNetworksService.NetworkAvailabilityProvider onCreateNetworkAvailabilityProvider(int);
-    field public static final String QUALIFIED_NETWORKS_SERVICE_INTERFACE = "android.telephony.data.QualifiedNetworksService";
-  }
-
-  public abstract class QualifiedNetworksService.NetworkAvailabilityProvider implements java.lang.AutoCloseable {
-    ctor public QualifiedNetworksService.NetworkAvailabilityProvider(int);
-    method public abstract void close();
-    method public final int getSlotIndex();
-    method public final void updateQualifiedNetworkTypes(int, @NonNull java.util.List<java.lang.Integer>);
-  }
-
-}
-
-package android.telephony.euicc {
-
-  public final class DownloadableSubscription implements android.os.Parcelable {
-    method public java.util.List<android.telephony.UiccAccessRule> getAccessRules();
-    method @Nullable public String getCarrierName();
-  }
-
-  public static final class DownloadableSubscription.Builder {
-    ctor public DownloadableSubscription.Builder();
-    ctor public DownloadableSubscription.Builder(android.telephony.euicc.DownloadableSubscription);
-    method public android.telephony.euicc.DownloadableSubscription build();
-    method public android.telephony.euicc.DownloadableSubscription.Builder setAccessRules(java.util.List<android.telephony.UiccAccessRule>);
-    method public android.telephony.euicc.DownloadableSubscription.Builder setCarrierName(String);
-    method public android.telephony.euicc.DownloadableSubscription.Builder setConfirmationCode(String);
-    method public android.telephony.euicc.DownloadableSubscription.Builder setEncodedActivationCode(String);
-  }
-
-  public class EuiccCardManager {
-    method public void authenticateServer(String, String, byte[], byte[], byte[], byte[], java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
-    method public void cancelSession(String, byte[], @android.telephony.euicc.EuiccCardManager.CancelReason int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
-    method public void deleteProfile(String, String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
-    method public void disableProfile(String, String, boolean, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
-    method public void listNotifications(String, @android.telephony.euicc.EuiccNotification.Event int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.telephony.euicc.EuiccNotification[]>);
-    method public void loadBoundProfilePackage(String, byte[], java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
-    method public void prepareDownload(String, @Nullable byte[], byte[], byte[], byte[], java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
-    method public void removeNotificationFromList(String, int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
-    method public void requestAllProfiles(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.service.euicc.EuiccProfileInfo[]>);
-    method public void requestDefaultSmdpAddress(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.String>);
-    method public void requestEuiccChallenge(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
-    method public void requestEuiccInfo1(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
-    method public void requestEuiccInfo2(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<byte[]>);
-    method public void requestProfile(String, String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.service.euicc.EuiccProfileInfo>);
-    method public void requestRulesAuthTable(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.telephony.euicc.EuiccRulesAuthTable>);
-    method public void requestSmdsAddress(String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.String>);
-    method public void resetMemory(String, @android.telephony.euicc.EuiccCardManager.ResetOption int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
-    method public void retrieveNotification(String, int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.telephony.euicc.EuiccNotification>);
-    method public void retrieveNotificationList(String, @android.telephony.euicc.EuiccNotification.Event int, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.telephony.euicc.EuiccNotification[]>);
-    method public void setDefaultSmdpAddress(String, String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
-    method public void setNickname(String, String, String, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<java.lang.Void>);
-    method public void switchToProfile(String, String, boolean, java.util.concurrent.Executor, android.telephony.euicc.EuiccCardManager.ResultCallback<android.service.euicc.EuiccProfileInfo>);
-    field public static final int CANCEL_REASON_END_USER_REJECTED = 0; // 0x0
-    field public static final int CANCEL_REASON_POSTPONED = 1; // 0x1
-    field public static final int CANCEL_REASON_PPR_NOT_ALLOWED = 3; // 0x3
-    field public static final int CANCEL_REASON_TIMEOUT = 2; // 0x2
-    field public static final int RESET_OPTION_DELETE_FIELD_LOADED_TEST_PROFILES = 2; // 0x2
-    field public static final int RESET_OPTION_DELETE_OPERATIONAL_PROFILES = 1; // 0x1
-    field public static final int RESET_OPTION_RESET_DEFAULT_SMDP_ADDRESS = 4; // 0x4
-    field public static final int RESULT_CALLER_NOT_ALLOWED = -3; // 0xfffffffd
-    field public static final int RESULT_EUICC_NOT_FOUND = -2; // 0xfffffffe
-    field public static final int RESULT_OK = 0; // 0x0
-    field public static final int RESULT_UNKNOWN_ERROR = -1; // 0xffffffff
-  }
-
-  @IntDef(prefix={"CANCEL_REASON_"}, value={android.telephony.euicc.EuiccCardManager.CANCEL_REASON_END_USER_REJECTED, android.telephony.euicc.EuiccCardManager.CANCEL_REASON_POSTPONED, android.telephony.euicc.EuiccCardManager.CANCEL_REASON_TIMEOUT, android.telephony.euicc.EuiccCardManager.CANCEL_REASON_PPR_NOT_ALLOWED}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccCardManager.CancelReason {
-  }
-
-  @IntDef(flag=true, prefix={"RESET_OPTION_"}, value={android.telephony.euicc.EuiccCardManager.RESET_OPTION_DELETE_OPERATIONAL_PROFILES, android.telephony.euicc.EuiccCardManager.RESET_OPTION_DELETE_FIELD_LOADED_TEST_PROFILES, android.telephony.euicc.EuiccCardManager.RESET_OPTION_RESET_DEFAULT_SMDP_ADDRESS}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccCardManager.ResetOption {
-  }
-
-  public static interface EuiccCardManager.ResultCallback<T> {
-    method public void onComplete(int, T);
-  }
-
-  public class EuiccManager {
-    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void continueOperation(android.content.Intent, android.os.Bundle);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void eraseSubscriptions(@NonNull android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void eraseSubscriptions(@android.telephony.euicc.EuiccCardManager.ResetOption int, @NonNull android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void getDefaultDownloadableSubscriptionList(android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void getDownloadableSubscriptionMetadata(android.telephony.euicc.DownloadableSubscription, android.app.PendingIntent);
-    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public int getOtaStatus();
-    method @NonNull @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public java.util.List<java.lang.String> getSupportedCountries();
-    method @NonNull @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public java.util.List<java.lang.String> getUnsupportedCountries();
-    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public boolean isSupportedCountry(@NonNull String);
-    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void setSupportedCountries(@NonNull java.util.List<java.lang.String>);
-    method @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void setUnsupportedCountries(@NonNull java.util.List<java.lang.String>);
-    field public static final String ACTION_DELETE_SUBSCRIPTION_PRIVILEGED = "android.telephony.euicc.action.DELETE_SUBSCRIPTION_PRIVILEGED";
-    field @RequiresPermission(android.Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public static final String ACTION_OTA_STATUS_CHANGED = "android.telephony.euicc.action.OTA_STATUS_CHANGED";
-    field public static final String ACTION_PROVISION_EMBEDDED_SUBSCRIPTION = "android.telephony.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION";
-    field public static final String ACTION_RENAME_SUBSCRIPTION_PRIVILEGED = "android.telephony.euicc.action.RENAME_SUBSCRIPTION_PRIVILEGED";
-    field public static final String ACTION_TOGGLE_SUBSCRIPTION_PRIVILEGED = "android.telephony.euicc.action.TOGGLE_SUBSCRIPTION_PRIVILEGED";
-    field public static final int EUICC_ACTIVATION_TYPE_ACCOUNT_REQUIRED = 4; // 0x4
-    field public static final int EUICC_ACTIVATION_TYPE_BACKUP = 2; // 0x2
-    field public static final int EUICC_ACTIVATION_TYPE_DEFAULT = 1; // 0x1
-    field public static final int EUICC_ACTIVATION_TYPE_TRANSFER = 3; // 0x3
-    field public static final int EUICC_OTA_FAILED = 2; // 0x2
-    field public static final int EUICC_OTA_IN_PROGRESS = 1; // 0x1
-    field public static final int EUICC_OTA_NOT_NEEDED = 4; // 0x4
-    field public static final int EUICC_OTA_STATUS_UNAVAILABLE = 5; // 0x5
-    field public static final int EUICC_OTA_SUCCEEDED = 3; // 0x3
-    field public static final String EXTRA_ACTIVATION_TYPE = "android.telephony.euicc.extra.ACTIVATION_TYPE";
-    field public static final String EXTRA_EMBEDDED_SUBSCRIPTION_DOWNLOADABLE_SUBSCRIPTIONS = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_DOWNLOADABLE_SUBSCRIPTIONS";
-    field public static final String EXTRA_ENABLE_SUBSCRIPTION = "android.telephony.euicc.extra.ENABLE_SUBSCRIPTION";
-    field public static final String EXTRA_FORCE_PROVISION = "android.telephony.euicc.extra.FORCE_PROVISION";
-    field public static final String EXTRA_FROM_SUBSCRIPTION_ID = "android.telephony.euicc.extra.FROM_SUBSCRIPTION_ID";
-    field public static final String EXTRA_PHYSICAL_SLOT_ID = "android.telephony.euicc.extra.PHYSICAL_SLOT_ID";
-    field public static final String EXTRA_SUBSCRIPTION_ID = "android.telephony.euicc.extra.SUBSCRIPTION_ID";
-    field public static final String EXTRA_SUBSCRIPTION_NICKNAME = "android.telephony.euicc.extra.SUBSCRIPTION_NICKNAME";
-  }
-
-  @IntDef(prefix={"EUICC_OTA_"}, value={android.telephony.euicc.EuiccManager.EUICC_OTA_IN_PROGRESS, android.telephony.euicc.EuiccManager.EUICC_OTA_FAILED, android.telephony.euicc.EuiccManager.EUICC_OTA_SUCCEEDED, android.telephony.euicc.EuiccManager.EUICC_OTA_NOT_NEEDED, android.telephony.euicc.EuiccManager.EUICC_OTA_STATUS_UNAVAILABLE}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccManager.OtaStatus {
-  }
-
-  public final class EuiccNotification implements android.os.Parcelable {
-    ctor public EuiccNotification(int, String, @android.telephony.euicc.EuiccNotification.Event int, @Nullable byte[]);
-    method public int describeContents();
-    method @Nullable public byte[] getData();
-    method @android.telephony.euicc.EuiccNotification.Event public int getEvent();
-    method public int getSeq();
-    method public String getTargetAddr();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @android.telephony.euicc.EuiccNotification.Event public static final int ALL_EVENTS = 15; // 0xf
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.euicc.EuiccNotification> CREATOR;
-    field public static final int EVENT_DELETE = 8; // 0x8
-    field public static final int EVENT_DISABLE = 4; // 0x4
-    field public static final int EVENT_ENABLE = 2; // 0x2
-    field public static final int EVENT_INSTALL = 1; // 0x1
-  }
-
-  @IntDef(flag=true, prefix={"EVENT_"}, value={android.telephony.euicc.EuiccNotification.EVENT_INSTALL, android.telephony.euicc.EuiccNotification.EVENT_ENABLE, android.telephony.euicc.EuiccNotification.EVENT_DISABLE, android.telephony.euicc.EuiccNotification.EVENT_DELETE}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccNotification.Event {
-  }
-
-  public final class EuiccRulesAuthTable implements android.os.Parcelable {
-    method public int describeContents();
-    method public int findIndex(@android.service.euicc.EuiccProfileInfo.PolicyRule int, android.service.carrier.CarrierIdentifier);
-    method public boolean hasPolicyRuleFlag(int, @android.telephony.euicc.EuiccRulesAuthTable.PolicyRuleFlag int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.euicc.EuiccRulesAuthTable> CREATOR;
-    field public static final int POLICY_RULE_FLAG_CONSENT_REQUIRED = 1; // 0x1
-  }
-
-  public static final class EuiccRulesAuthTable.Builder {
-    ctor public EuiccRulesAuthTable.Builder(int);
-    method public android.telephony.euicc.EuiccRulesAuthTable.Builder add(int, java.util.List<android.service.carrier.CarrierIdentifier>, int);
-    method public android.telephony.euicc.EuiccRulesAuthTable build();
-  }
-
-  @IntDef(flag=true, prefix={"POLICY_RULE_FLAG_"}, value={android.telephony.euicc.EuiccRulesAuthTable.POLICY_RULE_FLAG_CONSENT_REQUIRED}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EuiccRulesAuthTable.PolicyRuleFlag {
-  }
-
-}
-
-package android.telephony.ims {
-
-  public final class ImsCallForwardInfo implements android.os.Parcelable {
-    ctor public ImsCallForwardInfo(int, int, int, int, @NonNull String, int);
-    method public int describeContents();
-    method public int getCondition();
-    method public String getNumber();
-    method public int getServiceClass();
-    method public int getStatus();
-    method public int getTimeSeconds();
-    method public int getToA();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CDIV_CF_REASON_ALL = 4; // 0x4
-    field public static final int CDIV_CF_REASON_ALL_CONDITIONAL = 5; // 0x5
-    field public static final int CDIV_CF_REASON_BUSY = 1; // 0x1
-    field public static final int CDIV_CF_REASON_NOT_LOGGED_IN = 6; // 0x6
-    field public static final int CDIV_CF_REASON_NOT_REACHABLE = 3; // 0x3
-    field public static final int CDIV_CF_REASON_NO_REPLY = 2; // 0x2
-    field public static final int CDIV_CF_REASON_UNCONDITIONAL = 0; // 0x0
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsCallForwardInfo> CREATOR;
-    field public static final int STATUS_ACTIVE = 1; // 0x1
-    field public static final int STATUS_NOT_ACTIVE = 0; // 0x0
-    field public static final int TYPE_OF_ADDRESS_INTERNATIONAL = 145; // 0x91
-    field public static final int TYPE_OF_ADDRESS_UNKNOWN = 129; // 0x81
-  }
-
-  public final class ImsCallProfile implements android.os.Parcelable {
-    ctor public ImsCallProfile();
-    ctor public ImsCallProfile(int, int);
-    ctor public ImsCallProfile(int, int, android.os.Bundle, android.telephony.ims.ImsStreamMediaProfile);
-    method public int describeContents();
-    method public String getCallExtra(String);
-    method public String getCallExtra(String, String);
-    method public boolean getCallExtraBoolean(String);
-    method public boolean getCallExtraBoolean(String, boolean);
-    method public int getCallExtraInt(String);
-    method public int getCallExtraInt(String, int);
-    method public android.os.Bundle getCallExtras();
-    method public int getCallType();
-    method public static int getCallTypeFromVideoState(int);
-    method public int getCallerNumberVerificationStatus();
-    method public int getEmergencyCallRouting();
-    method public int getEmergencyServiceCategories();
-    method @NonNull public java.util.List<java.lang.String> getEmergencyUrns();
-    method public android.telephony.ims.ImsStreamMediaProfile getMediaProfile();
-    method @NonNull public android.os.Bundle getProprietaryCallExtras();
-    method public int getRestrictCause();
-    method public int getServiceType();
-    method public static int getVideoStateFromCallType(int);
-    method public static int getVideoStateFromImsCallProfile(android.telephony.ims.ImsCallProfile);
-    method public boolean hasKnownUserIntentEmergency();
-    method public boolean isEmergencyCallTesting();
-    method public boolean isVideoCall();
-    method public boolean isVideoPaused();
-    method public static int presentationToOir(int);
-    method public void setCallExtra(String, String);
-    method public void setCallExtraBoolean(String, boolean);
-    method public void setCallExtraInt(String, int);
-    method public void setCallRestrictCause(int);
-    method public void setCallerNumberVerificationStatus(int);
-    method public void setEmergencyCallRouting(int);
-    method public void setEmergencyCallTesting(boolean);
-    method public void setEmergencyServiceCategories(int);
-    method public void setEmergencyUrns(@NonNull java.util.List<java.lang.String>);
-    method public void setHasKnownUserIntentEmergency(boolean);
-    method public void updateCallExtras(android.telephony.ims.ImsCallProfile);
-    method public void updateCallType(android.telephony.ims.ImsCallProfile);
-    method public void updateMediaProfile(android.telephony.ims.ImsCallProfile);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CALL_RESTRICT_CAUSE_DISABLED = 2; // 0x2
-    field public static final int CALL_RESTRICT_CAUSE_HD = 3; // 0x3
-    field public static final int CALL_RESTRICT_CAUSE_NONE = 0; // 0x0
-    field public static final int CALL_RESTRICT_CAUSE_RAT = 1; // 0x1
-    field public static final int CALL_TYPE_VIDEO_N_VOICE = 3; // 0x3
-    field public static final int CALL_TYPE_VOICE = 2; // 0x2
-    field public static final int CALL_TYPE_VOICE_N_VIDEO = 1; // 0x1
-    field public static final int CALL_TYPE_VS = 8; // 0x8
-    field public static final int CALL_TYPE_VS_RX = 10; // 0xa
-    field public static final int CALL_TYPE_VS_TX = 9; // 0x9
-    field public static final int CALL_TYPE_VT = 4; // 0x4
-    field public static final int CALL_TYPE_VT_NODIR = 7; // 0x7
-    field public static final int CALL_TYPE_VT_RX = 6; // 0x6
-    field public static final int CALL_TYPE_VT_TX = 5; // 0x5
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsCallProfile> CREATOR;
-    field public static final int DIALSTRING_NORMAL = 0; // 0x0
-    field public static final int DIALSTRING_SS_CONF = 1; // 0x1
-    field public static final int DIALSTRING_USSD = 2; // 0x2
-    field public static final String EXTRA_ADDITIONAL_CALL_INFO = "AdditionalCallInfo";
-    field public static final String EXTRA_ADDITIONAL_SIP_INVITE_FIELDS = "android.telephony.ims.extra.ADDITIONAL_SIP_INVITE_FIELDS";
-    field public static final String EXTRA_CALL_DISCONNECT_CAUSE = "android.telephony.ims.extra.CALL_DISCONNECT_CAUSE";
-    field public static final String EXTRA_CALL_NETWORK_TYPE = "android.telephony.ims.extra.CALL_NETWORK_TYPE";
-    field @Deprecated public static final String EXTRA_CALL_RAT_TYPE = "CallRadioTech";
-    field public static final String EXTRA_CHILD_NUMBER = "ChildNum";
-    field public static final String EXTRA_CNA = "cna";
-    field public static final String EXTRA_CNAP = "cnap";
-    field public static final String EXTRA_CODEC = "Codec";
-    field public static final String EXTRA_DIALSTRING = "dialstring";
-    field public static final String EXTRA_DISPLAY_TEXT = "DisplayText";
-    field public static final String EXTRA_EMERGENCY_CALL = "e_call";
-    field public static final String EXTRA_FORWARDED_NUMBER = "android.telephony.ims.extra.FORWARDED_NUMBER";
-    field public static final String EXTRA_IS_CALL_PULL = "CallPull";
-    field public static final String EXTRA_OI = "oi";
-    field public static final String EXTRA_OIR = "oir";
-    field public static final String EXTRA_REMOTE_URI = "remote_uri";
-    field public static final String EXTRA_USSD = "ussd";
-    field public static final int OIR_DEFAULT = 0; // 0x0
-    field public static final int OIR_PRESENTATION_NOT_RESTRICTED = 2; // 0x2
-    field public static final int OIR_PRESENTATION_PAYPHONE = 4; // 0x4
-    field public static final int OIR_PRESENTATION_RESTRICTED = 1; // 0x1
-    field public static final int OIR_PRESENTATION_UNKNOWN = 3; // 0x3
-    field public static final int SERVICE_TYPE_EMERGENCY = 2; // 0x2
-    field public static final int SERVICE_TYPE_NONE = 0; // 0x0
-    field public static final int SERVICE_TYPE_NORMAL = 1; // 0x1
-    field public static final int VERIFICATION_STATUS_FAILED = 2; // 0x2
-    field public static final int VERIFICATION_STATUS_NOT_VERIFIED = 0; // 0x0
-    field public static final int VERIFICATION_STATUS_PASSED = 1; // 0x1
-  }
-
-  public class ImsCallSessionListener {
-    method public void callQualityChanged(@NonNull android.telephony.CallQuality);
-    method public void callSessionConferenceExtendFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionConferenceExtendReceived(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile);
-    method public void callSessionConferenceExtended(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile);
-    method public void callSessionConferenceStateUpdated(android.telephony.ims.ImsConferenceState);
-    method @Deprecated public void callSessionHandover(int, int, android.telephony.ims.ImsReasonInfo);
-    method @Deprecated public void callSessionHandoverFailed(int, int, android.telephony.ims.ImsReasonInfo);
-    method public void callSessionHeld(android.telephony.ims.ImsCallProfile);
-    method public void callSessionHoldFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionHoldReceived(android.telephony.ims.ImsCallProfile);
-    method public void callSessionInitiated(android.telephony.ims.ImsCallProfile);
-    method public void callSessionInitiatedFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionInviteParticipantsRequestDelivered();
-    method public void callSessionInviteParticipantsRequestFailed(android.telephony.ims.ImsReasonInfo);
-    method @Deprecated public void callSessionMayHandover(int, int);
-    method public void callSessionMergeComplete(android.telephony.ims.stub.ImsCallSessionImplBase);
-    method public void callSessionMergeFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionMergeStarted(android.telephony.ims.stub.ImsCallSessionImplBase, android.telephony.ims.ImsCallProfile);
-    method public void callSessionMultipartyStateChanged(boolean);
-    method public void callSessionProgressing(android.telephony.ims.ImsStreamMediaProfile);
-    method public void callSessionRemoveParticipantsRequestDelivered();
-    method public void callSessionRemoveParticipantsRequestFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionResumeFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionResumeReceived(android.telephony.ims.ImsCallProfile);
-    method public void callSessionResumed(android.telephony.ims.ImsCallProfile);
-    method public void callSessionRttAudioIndicatorChanged(@NonNull android.telephony.ims.ImsStreamMediaProfile);
-    method public void callSessionRttMessageReceived(String);
-    method public void callSessionRttModifyRequestReceived(android.telephony.ims.ImsCallProfile);
-    method public void callSessionRttModifyResponseReceived(int);
-    method public void callSessionSuppServiceReceived(android.telephony.ims.ImsSuppServiceNotification);
-    method public void callSessionTerminated(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionTtyModeReceived(int);
-    method public void callSessionUpdateFailed(android.telephony.ims.ImsReasonInfo);
-    method public void callSessionUpdateReceived(android.telephony.ims.ImsCallProfile);
-    method public void callSessionUpdated(android.telephony.ims.ImsCallProfile);
-    method public void callSessionUssdMessageReceived(int, String);
-    method public void onHandover(int, int, @Nullable android.telephony.ims.ImsReasonInfo);
-    method public void onHandoverFailed(int, int, @NonNull android.telephony.ims.ImsReasonInfo);
-    method public void onMayHandover(int, int);
-  }
-
-  public final class ImsConferenceState implements android.os.Parcelable {
-    method public int describeContents();
-    method public static int getConnectionStateForStatus(String);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsConferenceState> CREATOR;
-    field public static final String DISPLAY_TEXT = "display-text";
-    field public static final String ENDPOINT = "endpoint";
-    field public static final String SIP_STATUS_CODE = "sipstatuscode";
-    field public static final String STATUS = "status";
-    field public static final String STATUS_ALERTING = "alerting";
-    field public static final String STATUS_CONNECTED = "connected";
-    field public static final String STATUS_CONNECT_FAIL = "connect-fail";
-    field public static final String STATUS_DIALING_IN = "dialing-in";
-    field public static final String STATUS_DIALING_OUT = "dialing-out";
-    field public static final String STATUS_DISCONNECTED = "disconnected";
-    field public static final String STATUS_DISCONNECTING = "disconnecting";
-    field public static final String STATUS_MUTED_VIA_FOCUS = "muted-via-focus";
-    field public static final String STATUS_ON_HOLD = "on-hold";
-    field public static final String STATUS_PENDING = "pending";
-    field public static final String STATUS_SEND_ONLY = "sendonly";
-    field public static final String STATUS_SEND_RECV = "sendrecv";
-    field public static final String USER = "user";
-    field public final java.util.HashMap<java.lang.String,android.os.Bundle> mParticipants;
-  }
-
-  public final class ImsException extends java.lang.Exception {
-    ctor public ImsException(@Nullable String);
-    ctor public ImsException(@Nullable String, int);
-    ctor public ImsException(@Nullable String, int, @Nullable Throwable);
-  }
-
-  public final class ImsExternalCallState implements android.os.Parcelable {
-    ctor public ImsExternalCallState(@NonNull String, @NonNull android.net.Uri, @Nullable android.net.Uri, boolean, int, int, boolean);
-    method public int describeContents();
-    method @NonNull public android.net.Uri getAddress();
-    method public int getCallId();
-    method public int getCallState();
-    method public int getCallType();
-    method @Nullable public android.net.Uri getLocalAddress();
-    method public boolean isCallHeld();
-    method public boolean isCallPullable();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CALL_STATE_CONFIRMED = 1; // 0x1
-    field public static final int CALL_STATE_TERMINATED = 2; // 0x2
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsExternalCallState> CREATOR;
-  }
-
-  public class ImsMmTelManager implements android.telephony.ims.RegistrationManager {
-    method @Deprecated @NonNull @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public static android.telephony.ims.ImsMmTelManager createForSubscriptionId(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getFeatureState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>) throws android.telephony.ims.ImsException;
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getRegistrationState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getVoWiFiRoamingModeSetting();
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isAvailable(int, int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isCapable(int, int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void isSupported(int, int, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>) throws android.telephony.ims.ImsException;
-    method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void registerImsRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ImsMmTelManager.RegistrationCallback) throws android.telephony.ims.ImsException;
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setAdvancedCallingSettingEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setRttCapabilitySetting(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiModeSetting(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiNonPersistent(boolean, int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiRoamingModeSetting(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiRoamingSettingEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiSettingEnabled(boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVtSettingEnabled(boolean);
-    method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.ImsMmTelManager.RegistrationCallback);
-  }
-
-  @Deprecated public static class ImsMmTelManager.RegistrationCallback extends android.telephony.ims.RegistrationManager.RegistrationCallback {
-    ctor @Deprecated public ImsMmTelManager.RegistrationCallback();
-  }
-
-  public final class ImsReasonInfo implements android.os.Parcelable {
-    field public static final String EXTRA_MSG_SERVICE_NOT_AUTHORIZED = "Forbidden. Not Authorized for Service";
-  }
-
-  public class ImsService extends android.app.Service {
-    ctor public ImsService();
-    method public android.telephony.ims.feature.MmTelFeature createMmTelFeature(int);
-    method public android.telephony.ims.feature.RcsFeature createRcsFeature(int);
-    method public void disableIms(int);
-    method public void enableIms(int);
-    method public android.telephony.ims.stub.ImsConfigImplBase getConfig(int);
-    method public android.telephony.ims.stub.ImsRegistrationImplBase getRegistration(int);
-    method public final void onUpdateSupportedImsFeatures(android.telephony.ims.stub.ImsFeatureConfiguration) throws android.os.RemoteException;
-    method public android.telephony.ims.stub.ImsFeatureConfiguration querySupportedImsFeatures();
-    method public void readyForFeatureCreation();
-  }
-
-  public final class ImsSsData implements android.os.Parcelable {
-    ctor public ImsSsData(int, int, int, int, int);
-    method public int describeContents();
-    method @Nullable public java.util.List<android.telephony.ims.ImsCallForwardInfo> getCallForwardInfo();
-    method public int getRequestType();
-    method public int getResult();
-    method public int getServiceClass();
-    method public int getServiceType();
-    method @NonNull public java.util.List<android.telephony.ims.ImsSsInfo> getSuppServiceInfo();
-    method public int getTeleserviceType();
-    method public boolean isTypeBarring();
-    method public boolean isTypeCf();
-    method public boolean isTypeClip();
-    method public boolean isTypeClir();
-    method public boolean isTypeColp();
-    method public boolean isTypeColr();
-    method public boolean isTypeCw();
-    method public boolean isTypeIcb();
-    method public boolean isTypeInterrogation();
-    method public boolean isTypeUnConditional();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsSsData> CREATOR;
-    field public static final int RESULT_SUCCESS = 0; // 0x0
-    field public static final int SERVICE_CLASS_DATA = 2; // 0x2
-    field public static final int SERVICE_CLASS_DATA_CIRCUIT_ASYNC = 32; // 0x20
-    field public static final int SERVICE_CLASS_DATA_CIRCUIT_SYNC = 16; // 0x10
-    field public static final int SERVICE_CLASS_DATA_PACKET_ACCESS = 64; // 0x40
-    field public static final int SERVICE_CLASS_DATA_PAD = 128; // 0x80
-    field public static final int SERVICE_CLASS_FAX = 4; // 0x4
-    field public static final int SERVICE_CLASS_NONE = 0; // 0x0
-    field public static final int SERVICE_CLASS_SMS = 8; // 0x8
-    field public static final int SERVICE_CLASS_VOICE = 1; // 0x1
-    field public static final int SS_ACTIVATION = 0; // 0x0
-    field public static final int SS_ALL_BARRING = 18; // 0x12
-    field public static final int SS_ALL_DATA_TELESERVICES = 3; // 0x3
-    field public static final int SS_ALL_TELESERVICES_EXCEPT_SMS = 5; // 0x5
-    field public static final int SS_ALL_TELESEVICES = 1; // 0x1
-    field public static final int SS_ALL_TELE_AND_BEARER_SERVICES = 0; // 0x0
-    field public static final int SS_BAIC = 16; // 0x10
-    field public static final int SS_BAIC_ROAMING = 17; // 0x11
-    field public static final int SS_BAOC = 13; // 0xd
-    field public static final int SS_BAOIC = 14; // 0xe
-    field public static final int SS_BAOIC_EXC_HOME = 15; // 0xf
-    field public static final int SS_CFU = 0; // 0x0
-    field public static final int SS_CFUT = 6; // 0x6
-    field public static final int SS_CF_ALL = 4; // 0x4
-    field public static final int SS_CF_ALL_CONDITIONAL = 5; // 0x5
-    field public static final int SS_CF_BUSY = 1; // 0x1
-    field public static final int SS_CF_NOT_REACHABLE = 3; // 0x3
-    field public static final int SS_CF_NO_REPLY = 2; // 0x2
-    field public static final int SS_CLIP = 7; // 0x7
-    field public static final int SS_CLIR = 8; // 0x8
-    field public static final int SS_CNAP = 11; // 0xb
-    field public static final int SS_COLP = 9; // 0x9
-    field public static final int SS_COLR = 10; // 0xa
-    field public static final int SS_DEACTIVATION = 1; // 0x1
-    field public static final int SS_ERASURE = 4; // 0x4
-    field public static final int SS_INCOMING_BARRING = 20; // 0x14
-    field public static final int SS_INCOMING_BARRING_ANONYMOUS = 22; // 0x16
-    field public static final int SS_INCOMING_BARRING_DN = 21; // 0x15
-    field public static final int SS_INTERROGATION = 2; // 0x2
-    field public static final int SS_OUTGOING_BARRING = 19; // 0x13
-    field public static final int SS_REGISTRATION = 3; // 0x3
-    field public static final int SS_SMS_SERVICES = 4; // 0x4
-    field public static final int SS_TELEPHONY = 2; // 0x2
-    field public static final int SS_WAIT = 12; // 0xc
-  }
-
-  public static final class ImsSsData.Builder {
-    ctor public ImsSsData.Builder(int, int, int, int, int);
-    method @NonNull public android.telephony.ims.ImsSsData build();
-    method @NonNull public android.telephony.ims.ImsSsData.Builder setCallForwardingInfo(@NonNull java.util.List<android.telephony.ims.ImsCallForwardInfo>);
-    method @NonNull public android.telephony.ims.ImsSsData.Builder setSuppServiceInfo(@NonNull java.util.List<android.telephony.ims.ImsSsInfo>);
-  }
-
-  public final class ImsSsInfo implements android.os.Parcelable {
-    ctor @Deprecated public ImsSsInfo(int, @Nullable String);
-    method public int describeContents();
-    method public int getClirInterrogationStatus();
-    method public int getClirOutgoingState();
-    method @Deprecated public String getIcbNum();
-    method @Nullable public String getIncomingCommunicationBarringNumber();
-    method public int getProvisionStatus();
-    method public int getStatus();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CLIR_OUTGOING_DEFAULT = 0; // 0x0
-    field public static final int CLIR_OUTGOING_INVOCATION = 1; // 0x1
-    field public static final int CLIR_OUTGOING_SUPPRESSION = 2; // 0x2
-    field public static final int CLIR_STATUS_NOT_PROVISIONED = 0; // 0x0
-    field public static final int CLIR_STATUS_PROVISIONED_PERMANENT = 1; // 0x1
-    field public static final int CLIR_STATUS_TEMPORARILY_ALLOWED = 4; // 0x4
-    field public static final int CLIR_STATUS_TEMPORARILY_RESTRICTED = 3; // 0x3
-    field public static final int CLIR_STATUS_UNKNOWN = 2; // 0x2
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsSsInfo> CREATOR;
-    field public static final int DISABLED = 0; // 0x0
-    field public static final int ENABLED = 1; // 0x1
-    field public static final int NOT_REGISTERED = -1; // 0xffffffff
-    field public static final int SERVICE_NOT_PROVISIONED = 0; // 0x0
-    field public static final int SERVICE_PROVISIONED = 1; // 0x1
-    field public static final int SERVICE_PROVISIONING_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public static final class ImsSsInfo.Builder {
-    ctor public ImsSsInfo.Builder(int);
-    method @NonNull public android.telephony.ims.ImsSsInfo build();
-    method @NonNull public android.telephony.ims.ImsSsInfo.Builder setClirInterrogationStatus(int);
-    method @NonNull public android.telephony.ims.ImsSsInfo.Builder setClirOutgoingState(int);
-    method @NonNull public android.telephony.ims.ImsSsInfo.Builder setIncomingCommunicationBarringNumber(@NonNull String);
-    method @NonNull public android.telephony.ims.ImsSsInfo.Builder setProvisionStatus(int);
-  }
-
-  public final class ImsStreamMediaProfile implements android.os.Parcelable {
-    ctor public ImsStreamMediaProfile(int, int, int, int, int);
-    method public void copyFrom(android.telephony.ims.ImsStreamMediaProfile);
-    method public int describeContents();
-    method public int getAudioDirection();
-    method public int getAudioQuality();
-    method public int getRttMode();
-    method public int getVideoDirection();
-    method public int getVideoQuality();
-    method public boolean isReceivingRttAudio();
-    method public boolean isRttCall();
-    method public void setReceivingRttAudio(boolean);
-    method public void setRttMode(int);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final int AUDIO_QUALITY_AMR = 1; // 0x1
-    field public static final int AUDIO_QUALITY_AMR_WB = 2; // 0x2
-    field public static final int AUDIO_QUALITY_EVRC = 4; // 0x4
-    field public static final int AUDIO_QUALITY_EVRC_B = 5; // 0x5
-    field public static final int AUDIO_QUALITY_EVRC_NW = 7; // 0x7
-    field public static final int AUDIO_QUALITY_EVRC_WB = 6; // 0x6
-    field public static final int AUDIO_QUALITY_EVS_FB = 20; // 0x14
-    field public static final int AUDIO_QUALITY_EVS_NB = 17; // 0x11
-    field public static final int AUDIO_QUALITY_EVS_SWB = 19; // 0x13
-    field public static final int AUDIO_QUALITY_EVS_WB = 18; // 0x12
-    field public static final int AUDIO_QUALITY_G711A = 13; // 0xd
-    field public static final int AUDIO_QUALITY_G711AB = 15; // 0xf
-    field public static final int AUDIO_QUALITY_G711U = 11; // 0xb
-    field public static final int AUDIO_QUALITY_G722 = 14; // 0xe
-    field public static final int AUDIO_QUALITY_G723 = 12; // 0xc
-    field public static final int AUDIO_QUALITY_G729 = 16; // 0x10
-    field public static final int AUDIO_QUALITY_GSM_EFR = 8; // 0x8
-    field public static final int AUDIO_QUALITY_GSM_FR = 9; // 0x9
-    field public static final int AUDIO_QUALITY_GSM_HR = 10; // 0xa
-    field public static final int AUDIO_QUALITY_NONE = 0; // 0x0
-    field public static final int AUDIO_QUALITY_QCELP13K = 3; // 0x3
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsStreamMediaProfile> CREATOR;
-    field public static final int DIRECTION_INACTIVE = 0; // 0x0
-    field public static final int DIRECTION_INVALID = -1; // 0xffffffff
-    field public static final int DIRECTION_RECEIVE = 1; // 0x1
-    field public static final int DIRECTION_SEND = 2; // 0x2
-    field public static final int DIRECTION_SEND_RECEIVE = 3; // 0x3
-    field public static final int RTT_MODE_DISABLED = 0; // 0x0
-    field public static final int RTT_MODE_FULL = 1; // 0x1
-    field public static final int VIDEO_QUALITY_NONE = 0; // 0x0
-    field public static final int VIDEO_QUALITY_QCIF = 1; // 0x1
-    field public static final int VIDEO_QUALITY_QVGA_LANDSCAPE = 2; // 0x2
-    field public static final int VIDEO_QUALITY_QVGA_PORTRAIT = 4; // 0x4
-    field public static final int VIDEO_QUALITY_VGA_LANDSCAPE = 8; // 0x8
-    field public static final int VIDEO_QUALITY_VGA_PORTRAIT = 16; // 0x10
-  }
-
-  public final class ImsSuppServiceNotification implements android.os.Parcelable {
-    ctor public ImsSuppServiceNotification(int, int, int, int, String, String[]);
-    method public int describeContents();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsSuppServiceNotification> CREATOR;
-    field public final int code;
-    field public final String[] history;
-    field public final int index;
-    field public final int notificationType;
-    field public final String number;
-    field public final int type;
-  }
-
-  public class ImsUtListener {
-    method public void onLineIdentificationSupplementaryServiceResponse(int, @NonNull android.telephony.ims.ImsSsInfo);
-    method public void onSupplementaryServiceIndication(android.telephony.ims.ImsSsData);
-    method public void onUtConfigurationCallBarringQueried(int, android.telephony.ims.ImsSsInfo[]);
-    method public void onUtConfigurationCallForwardQueried(int, android.telephony.ims.ImsCallForwardInfo[]);
-    method public void onUtConfigurationCallWaitingQueried(int, android.telephony.ims.ImsSsInfo[]);
-    method @Deprecated public void onUtConfigurationQueried(int, android.os.Bundle);
-    method public void onUtConfigurationQueryFailed(int, android.telephony.ims.ImsReasonInfo);
-    method public void onUtConfigurationUpdateFailed(int, android.telephony.ims.ImsReasonInfo);
-    method public void onUtConfigurationUpdated(int);
-    field @Deprecated public static final String BUNDLE_KEY_CLIR = "queryClir";
-    field @Deprecated public static final String BUNDLE_KEY_SSINFO = "imsSsInfo";
-  }
-
-  public abstract class ImsVideoCallProvider {
-    ctor public ImsVideoCallProvider();
-    method public void changeCallDataUsage(long);
-    method public void changeCameraCapabilities(android.telecom.VideoProfile.CameraCapabilities);
-    method public void changePeerDimensions(int, int);
-    method public void changeVideoQuality(int);
-    method public void handleCallSessionEvent(int);
-    method public abstract void onRequestCallDataUsage();
-    method public abstract void onRequestCameraCapabilities();
-    method public abstract void onSendSessionModifyRequest(android.telecom.VideoProfile, android.telecom.VideoProfile);
-    method public abstract void onSendSessionModifyResponse(android.telecom.VideoProfile);
-    method public abstract void onSetCamera(String);
-    method public void onSetCamera(String, int);
-    method public abstract void onSetDeviceOrientation(int);
-    method public abstract void onSetDisplaySurface(android.view.Surface);
-    method public abstract void onSetPauseImage(android.net.Uri);
-    method public abstract void onSetPreviewSurface(android.view.Surface);
-    method public abstract void onSetZoom(float);
-    method public void receiveSessionModifyRequest(android.telecom.VideoProfile);
-    method public void receiveSessionModifyResponse(int, android.telecom.VideoProfile, android.telecom.VideoProfile);
-  }
-
-  public class ProvisioningManager {
-    method @NonNull public static android.telephony.ims.ProvisioningManager createForSubscriptionId(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public int getProvisioningIntValue(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public boolean getProvisioningStatusForCapability(int, int);
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public String getProvisioningStringValue(int);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @WorkerThread public boolean getRcsProvisioningStatusForCapability(int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void notifyRcsAutoConfigurationReceived(@NonNull byte[], boolean);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void registerProvisioningChangedCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ProvisioningManager.Callback) throws android.telephony.ims.ImsException;
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public int setProvisioningIntValue(int, int);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public void setProvisioningStatusForCapability(int, int, boolean);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public int setProvisioningStringValue(int, @NonNull String);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) @WorkerThread public void setRcsProvisioningStatusForCapability(int, boolean);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void unregisterProvisioningChangedCallback(@NonNull android.telephony.ims.ProvisioningManager.Callback);
-    field public static final int KEY_VOICE_OVER_WIFI_ENTITLEMENT_ID = 67; // 0x43
-    field public static final int KEY_VOICE_OVER_WIFI_MODE_OVERRIDE = 27; // 0x1b
-    field public static final int KEY_VOICE_OVER_WIFI_ROAMING_ENABLED_OVERRIDE = 26; // 0x1a
-    field public static final int PROVISIONING_VALUE_DISABLED = 0; // 0x0
-    field public static final int PROVISIONING_VALUE_ENABLED = 1; // 0x1
-    field public static final String STRING_QUERY_RESULT_ERROR_GENERIC = "STRING_QUERY_RESULT_ERROR_GENERIC";
-    field public static final String STRING_QUERY_RESULT_ERROR_NOT_READY = "STRING_QUERY_RESULT_ERROR_NOT_READY";
-  }
-
-  public static class ProvisioningManager.Callback {
-    ctor public ProvisioningManager.Callback();
-    method public void onProvisioningIntChanged(int, int);
-    method public void onProvisioningStringChanged(int, @NonNull String);
-  }
-
-  public class RcsUceAdapter {
-    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setUceSettingEnabled(boolean) throws android.telephony.ims.ImsException;
-  }
-
-}
-
-package android.telephony.ims.feature {
-
-  public final class CapabilityChangeRequest implements android.os.Parcelable {
-    method public void addCapabilitiesToDisableForTech(int, int);
-    method public void addCapabilitiesToEnableForTech(int, int);
-    method public int describeContents();
-    method public java.util.List<android.telephony.ims.feature.CapabilityChangeRequest.CapabilityPair> getCapabilitiesToDisable();
-    method public java.util.List<android.telephony.ims.feature.CapabilityChangeRequest.CapabilityPair> getCapabilitiesToEnable();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.feature.CapabilityChangeRequest> CREATOR;
-  }
-
-  public static class CapabilityChangeRequest.CapabilityPair {
-    ctor public CapabilityChangeRequest.CapabilityPair(int, int);
-    method public int getCapability();
-    method public int getRadioTech();
-  }
-
-  public abstract class ImsFeature {
-    ctor public ImsFeature();
-    method public abstract void changeEnabledCapabilities(android.telephony.ims.feature.CapabilityChangeRequest, android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy);
-    method public int getFeatureState();
-    method public final int getSlotIndex();
-    method public abstract void onFeatureReady();
-    method public abstract void onFeatureRemoved();
-    method public final void setFeatureState(int);
-    field public static final int CAPABILITY_ERROR_GENERIC = -1; // 0xffffffff
-    field public static final int CAPABILITY_SUCCESS = 0; // 0x0
-    field public static final int FEATURE_EMERGENCY_MMTEL = 0; // 0x0
-    field public static final int FEATURE_MMTEL = 1; // 0x1
-    field public static final int FEATURE_RCS = 2; // 0x2
-    field public static final int STATE_INITIALIZING = 1; // 0x1
-    field public static final int STATE_READY = 2; // 0x2
-    field public static final int STATE_UNAVAILABLE = 0; // 0x0
-  }
-
-  @Deprecated public static class ImsFeature.Capabilities {
-    field @Deprecated protected int mCapabilities;
-  }
-
-  protected static class ImsFeature.CapabilityCallbackProxy {
-    method public void onChangeCapabilityConfigurationError(int, int, int);
-  }
-
-  public class MmTelFeature extends android.telephony.ims.feature.ImsFeature {
-    ctor public MmTelFeature();
-    method public void changeEnabledCapabilities(@NonNull android.telephony.ims.feature.CapabilityChangeRequest, @NonNull android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy);
-    method @Nullable public android.telephony.ims.ImsCallProfile createCallProfile(int, int);
-    method @Nullable public android.telephony.ims.stub.ImsCallSessionImplBase createCallSession(@NonNull android.telephony.ims.ImsCallProfile);
-    method @NonNull public android.telephony.ims.stub.ImsEcbmImplBase getEcbm();
-    method @NonNull public android.telephony.ims.stub.ImsMultiEndpointImplBase getMultiEndpoint();
-    method @NonNull public android.telephony.ims.stub.ImsSmsImplBase getSmsImplementation();
-    method @NonNull public android.telephony.ims.stub.ImsUtImplBase getUt();
-    method public final void notifyCapabilitiesStatusChanged(@NonNull android.telephony.ims.feature.MmTelFeature.MmTelCapabilities);
-    method public final void notifyIncomingCall(@NonNull android.telephony.ims.stub.ImsCallSessionImplBase, @NonNull android.os.Bundle);
-    method public final void notifyRejectedCall(@NonNull android.telephony.ims.ImsCallProfile, @NonNull android.telephony.ims.ImsReasonInfo);
-    method public final void notifyVoiceMessageCountUpdate(int);
-    method public void onFeatureReady();
-    method public void onFeatureRemoved();
-    method public boolean queryCapabilityConfiguration(int, int);
-    method @NonNull public final android.telephony.ims.feature.MmTelFeature.MmTelCapabilities queryCapabilityStatus();
-    method public void setUiTtyMode(int, @Nullable android.os.Message);
-    method public int shouldProcessCall(@NonNull String[]);
-    field public static final String EXTRA_IS_UNKNOWN_CALL = "android.telephony.ims.feature.extra.IS_UNKNOWN_CALL";
-    field public static final String EXTRA_IS_USSD = "android.telephony.ims.feature.extra.IS_USSD";
-    field public static final int PROCESS_CALL_CSFB = 1; // 0x1
-    field public static final int PROCESS_CALL_IMS = 0; // 0x0
-  }
-
-  public static class MmTelFeature.MmTelCapabilities extends android.telephony.ims.feature.ImsFeature.Capabilities {
-    ctor public MmTelFeature.MmTelCapabilities();
-    ctor @Deprecated public MmTelFeature.MmTelCapabilities(android.telephony.ims.feature.ImsFeature.Capabilities);
-    ctor public MmTelFeature.MmTelCapabilities(int);
-    method public final void addCapabilities(int);
-    method public final boolean isCapable(int);
-    method public final void removeCapabilities(int);
-  }
-
-  public class RcsFeature extends android.telephony.ims.feature.ImsFeature {
-    ctor public RcsFeature();
-    method public void changeEnabledCapabilities(@NonNull android.telephony.ims.feature.CapabilityChangeRequest, @NonNull android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy);
-    method public void onFeatureReady();
-    method public void onFeatureRemoved();
-  }
-
-}
-
-package android.telephony.ims.stub {
-
-  public class ImsCallSessionImplBase implements java.lang.AutoCloseable {
-    ctor public ImsCallSessionImplBase();
-    method public void accept(int, android.telephony.ims.ImsStreamMediaProfile);
-    method public void close();
-    method public void deflect(String);
-    method public void extendToConference(String[]);
-    method public String getCallId();
-    method public android.telephony.ims.ImsCallProfile getCallProfile();
-    method public android.telephony.ims.ImsVideoCallProvider getImsVideoCallProvider();
-    method public android.telephony.ims.ImsCallProfile getLocalCallProfile();
-    method public String getProperty(String);
-    method public android.telephony.ims.ImsCallProfile getRemoteCallProfile();
-    method public int getState();
-    method public void hold(android.telephony.ims.ImsStreamMediaProfile);
-    method public void inviteParticipants(String[]);
-    method public boolean isInCall();
-    method public boolean isMultiparty();
-    method public void merge();
-    method public void reject(int);
-    method public void removeParticipants(String[]);
-    method public void resume(android.telephony.ims.ImsStreamMediaProfile);
-    method public void sendDtmf(char, android.os.Message);
-    method public void sendRttMessage(String);
-    method public void sendRttModifyRequest(android.telephony.ims.ImsCallProfile);
-    method public void sendRttModifyResponse(boolean);
-    method public void sendUssd(String);
-    method public void setListener(android.telephony.ims.ImsCallSessionListener);
-    method public void setMute(boolean);
-    method public void start(String, android.telephony.ims.ImsCallProfile);
-    method public void startConference(String[], android.telephony.ims.ImsCallProfile);
-    method public void startDtmf(char);
-    method public void stopDtmf();
-    method public void terminate(int);
-    method public void update(int, android.telephony.ims.ImsStreamMediaProfile);
-    field public static final int USSD_MODE_NOTIFY = 0; // 0x0
-    field public static final int USSD_MODE_REQUEST = 1; // 0x1
-  }
-
-  public static class ImsCallSessionImplBase.State {
-    method public static String toString(int);
-    field public static final int ESTABLISHED = 4; // 0x4
-    field public static final int ESTABLISHING = 3; // 0x3
-    field public static final int IDLE = 0; // 0x0
-    field public static final int INITIATED = 1; // 0x1
-    field public static final int INVALID = -1; // 0xffffffff
-    field public static final int NEGOTIATING = 2; // 0x2
-    field public static final int REESTABLISHING = 6; // 0x6
-    field public static final int RENEGOTIATING = 5; // 0x5
-    field public static final int TERMINATED = 8; // 0x8
-    field public static final int TERMINATING = 7; // 0x7
-  }
-
-  public class ImsConfigImplBase {
-    ctor public ImsConfigImplBase();
-    method public int getConfigInt(int);
-    method public String getConfigString(int);
-    method public final void notifyProvisionedValueChanged(int, int);
-    method public final void notifyProvisionedValueChanged(int, String);
-    method public void notifyRcsAutoConfigurationReceived(@NonNull byte[], boolean);
-    method public int setConfig(int, int);
-    method public int setConfig(int, String);
-    field public static final int CONFIG_RESULT_FAILED = 1; // 0x1
-    field public static final int CONFIG_RESULT_SUCCESS = 0; // 0x0
-    field public static final int CONFIG_RESULT_UNKNOWN = -1; // 0xffffffff
-  }
-
-  public class ImsEcbmImplBase {
-    ctor public ImsEcbmImplBase();
-    method public final void enteredEcbm();
-    method public void exitEmergencyCallbackMode();
-    method public final void exitedEcbm();
-  }
-
-  public final class ImsFeatureConfiguration implements android.os.Parcelable {
-    method public int describeContents();
-    method public java.util.Set<android.telephony.ims.stub.ImsFeatureConfiguration.FeatureSlotPair> getServiceFeatures();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.stub.ImsFeatureConfiguration> CREATOR;
-  }
-
-  public static class ImsFeatureConfiguration.Builder {
-    ctor public ImsFeatureConfiguration.Builder();
-    method public android.telephony.ims.stub.ImsFeatureConfiguration.Builder addFeature(int, int);
-    method public android.telephony.ims.stub.ImsFeatureConfiguration build();
-  }
-
-  public static final class ImsFeatureConfiguration.FeatureSlotPair {
-    ctor public ImsFeatureConfiguration.FeatureSlotPair(int, int);
-    field public final int featureType;
-    field public final int slotId;
-  }
-
-  public class ImsMultiEndpointImplBase {
-    ctor public ImsMultiEndpointImplBase();
-    method public final void onImsExternalCallStateUpdate(java.util.List<android.telephony.ims.ImsExternalCallState>);
-    method public void requestImsExternalCallStateInfo();
-  }
-
-  public class ImsRegistrationImplBase {
-    ctor public ImsRegistrationImplBase();
-    method public final void onDeregistered(android.telephony.ims.ImsReasonInfo);
-    method public final void onRegistered(int);
-    method public final void onRegistering(int);
-    method public final void onSubscriberAssociatedUriChanged(android.net.Uri[]);
-    method public final void onTechnologyChangeFailed(int, android.telephony.ims.ImsReasonInfo);
-    field public static final int REGISTRATION_TECH_IWLAN = 1; // 0x1
-    field public static final int REGISTRATION_TECH_LTE = 0; // 0x0
-    field public static final int REGISTRATION_TECH_NONE = -1; // 0xffffffff
-  }
-
-  public class ImsSmsImplBase {
-    ctor public ImsSmsImplBase();
-    method public void acknowledgeSms(int, @IntRange(from=0, to=65535) int, int);
-    method public void acknowledgeSmsReport(int, @IntRange(from=0, to=65535) int, int);
-    method public String getSmsFormat();
-    method public void onReady();
-    method @Deprecated public final void onSendSmsResult(int, @IntRange(from=0, to=65535) int, int, int) throws java.lang.RuntimeException;
-    method public final void onSendSmsResultError(int, @IntRange(from=0, to=65535) int, int, int, int) throws java.lang.RuntimeException;
-    method public final void onSendSmsResultSuccess(int, @IntRange(from=0, to=65535) int) throws java.lang.RuntimeException;
-    method public final void onSmsReceived(int, String, byte[]) throws java.lang.RuntimeException;
-    method @Deprecated public final void onSmsStatusReportReceived(int, @IntRange(from=0, to=65535) int, String, byte[]) throws java.lang.RuntimeException;
-    method public final void onSmsStatusReportReceived(int, String, byte[]) throws java.lang.RuntimeException;
-    method public void sendSms(int, @IntRange(from=0, to=65535) int, String, String, boolean, byte[]);
-    field public static final int DELIVER_STATUS_ERROR_GENERIC = 2; // 0x2
-    field public static final int DELIVER_STATUS_ERROR_NO_MEMORY = 3; // 0x3
-    field public static final int DELIVER_STATUS_ERROR_REQUEST_NOT_SUPPORTED = 4; // 0x4
-    field public static final int DELIVER_STATUS_OK = 1; // 0x1
-    field public static final int RESULT_NO_NETWORK_ERROR = -1; // 0xffffffff
-    field public static final int SEND_STATUS_ERROR = 2; // 0x2
-    field public static final int SEND_STATUS_ERROR_FALLBACK = 4; // 0x4
-    field public static final int SEND_STATUS_ERROR_RETRY = 3; // 0x3
-    field public static final int SEND_STATUS_OK = 1; // 0x1
-    field public static final int STATUS_REPORT_STATUS_ERROR = 2; // 0x2
-    field public static final int STATUS_REPORT_STATUS_OK = 1; // 0x1
-  }
-
-  public class ImsUtImplBase {
-    ctor public ImsUtImplBase();
-    method public void close();
-    method public int queryCallBarring(int);
-    method public int queryCallBarringForServiceClass(int, int);
-    method public int queryCallForward(int, String);
-    method public int queryCallWaiting();
-    method public int queryClip();
-    method public int queryClir();
-    method public int queryColp();
-    method public int queryColr();
-    method public void setListener(android.telephony.ims.ImsUtListener);
-    method public int transact(android.os.Bundle);
-    method public int updateCallBarring(int, int, String[]);
-    method public int updateCallBarringForServiceClass(int, int, String[], int);
-    method public int updateCallForward(int, int, String, int, int);
-    method public int updateCallWaiting(boolean, int);
-    method public int updateClip(boolean);
-    method public int updateClir(int);
-    method public int updateColp(boolean);
-    method public int updateColr(int);
-  }
-
-}
-
-package android.telephony.mbms {
-
-  public static class DownloadRequest.Builder {
-    method public android.telephony.mbms.DownloadRequest.Builder setServiceId(String);
-  }
-
-  public final class FileInfo implements android.os.Parcelable {
-    ctor public FileInfo(android.net.Uri, String);
-  }
-
-  public final class FileServiceInfo extends android.telephony.mbms.ServiceInfo implements android.os.Parcelable {
-    ctor public FileServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date, java.util.List<android.telephony.mbms.FileInfo>);
-  }
-
-  public class MbmsDownloadReceiver extends android.content.BroadcastReceiver {
-    field public static final int RESULT_APP_NOTIFICATION_ERROR = 6; // 0x6
-    field public static final int RESULT_BAD_TEMP_FILE_ROOT = 3; // 0x3
-    field public static final int RESULT_DOWNLOAD_FINALIZATION_ERROR = 4; // 0x4
-    field public static final int RESULT_INVALID_ACTION = 1; // 0x1
-    field public static final int RESULT_MALFORMED_INTENT = 2; // 0x2
-    field public static final int RESULT_OK = 0; // 0x0
-    field public static final int RESULT_TEMP_FILE_GENERATION_ERROR = 5; // 0x5
-  }
-
-  public final class StreamingServiceInfo extends android.telephony.mbms.ServiceInfo implements android.os.Parcelable {
-    ctor public StreamingServiceInfo(java.util.Map<java.util.Locale,java.lang.String>, String, java.util.List<java.util.Locale>, String, java.util.Date, java.util.Date);
-  }
-
-  public final class UriPathPair implements android.os.Parcelable {
-    method public int describeContents();
-    method public android.net.Uri getContentUri();
-    method public android.net.Uri getFilePathUri();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.mbms.UriPathPair> CREATOR;
-  }
-
-}
-
-package android.telephony.mbms.vendor {
-
-  public class MbmsDownloadServiceBase extends android.os.Binder implements android.os.IInterface {
-    ctor public MbmsDownloadServiceBase();
-    method public int addProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener) throws android.os.RemoteException;
-    method public int addStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener) throws android.os.RemoteException;
-    method public android.os.IBinder asBinder();
-    method public int cancelDownload(android.telephony.mbms.DownloadRequest) throws android.os.RemoteException;
-    method public void dispose(int) throws android.os.RemoteException;
-    method public int download(android.telephony.mbms.DownloadRequest) throws android.os.RemoteException;
-    method public int initialize(int, android.telephony.mbms.MbmsDownloadSessionCallback) throws android.os.RemoteException;
-    method @NonNull public java.util.List<android.telephony.mbms.DownloadRequest> listPendingDownloads(int) throws android.os.RemoteException;
-    method public void onAppCallbackDied(int, int);
-    method public boolean onTransact(int, android.os.Parcel, android.os.Parcel, int) throws android.os.RemoteException;
-    method public int removeProgressListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadProgressListener) throws android.os.RemoteException;
-    method public int removeStatusListener(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStatusListener) throws android.os.RemoteException;
-    method public int requestDownloadState(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo) throws android.os.RemoteException;
-    method public int requestUpdateFileServices(int, java.util.List<java.lang.String>) throws android.os.RemoteException;
-    method public int resetDownloadKnowledge(android.telephony.mbms.DownloadRequest) throws android.os.RemoteException;
-    method public int setTempFileRootDirectory(int, String) throws android.os.RemoteException;
-  }
-
-  public class MbmsGroupCallServiceBase extends android.app.Service {
-    ctor public MbmsGroupCallServiceBase();
-    method public void dispose(int) throws android.os.RemoteException;
-    method public int initialize(@NonNull android.telephony.mbms.MbmsGroupCallSessionCallback, int) throws android.os.RemoteException;
-    method public void onAppCallbackDied(int, int);
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public int startGroupCall(int, long, @NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.lang.Integer>, @NonNull android.telephony.mbms.GroupCallCallback);
-    method public void stopGroupCall(int, long);
-    method public void updateGroupCall(int, long, @NonNull java.util.List<java.lang.Integer>, @NonNull java.util.List<java.lang.Integer>);
-  }
-
-  public class MbmsStreamingServiceBase extends android.os.Binder implements android.os.IInterface {
-    ctor public MbmsStreamingServiceBase();
-    method public android.os.IBinder asBinder();
-    method public void dispose(int) throws android.os.RemoteException;
-    method @Nullable public android.net.Uri getPlaybackUri(int, String) throws android.os.RemoteException;
-    method public int initialize(android.telephony.mbms.MbmsStreamingSessionCallback, int) throws android.os.RemoteException;
-    method public void onAppCallbackDied(int, int);
-    method public boolean onTransact(int, android.os.Parcel, android.os.Parcel, int) throws android.os.RemoteException;
-    method public int requestUpdateStreamingServices(int, java.util.List<java.lang.String>) throws android.os.RemoteException;
-    method public int startStreaming(int, String, android.telephony.mbms.StreamingServiceCallback) throws android.os.RemoteException;
-    method public void stopStreaming(int, String) throws android.os.RemoteException;
-  }
-
-  public class VendorUtils {
-    ctor public VendorUtils();
-    method public static android.content.ComponentName getAppReceiverFromPackageName(android.content.Context, String);
-    field public static final String ACTION_CLEANUP = "android.telephony.mbms.action.CLEANUP";
-    field public static final String ACTION_DOWNLOAD_RESULT_INTERNAL = "android.telephony.mbms.action.DOWNLOAD_RESULT_INTERNAL";
-    field public static final String ACTION_FILE_DESCRIPTOR_REQUEST = "android.telephony.mbms.action.FILE_DESCRIPTOR_REQUEST";
-    field public static final String EXTRA_FD_COUNT = "android.telephony.mbms.extra.FD_COUNT";
-    field public static final String EXTRA_FINAL_URI = "android.telephony.mbms.extra.FINAL_URI";
-    field public static final String EXTRA_FREE_URI_LIST = "android.telephony.mbms.extra.FREE_URI_LIST";
-    field public static final String EXTRA_PAUSED_LIST = "android.telephony.mbms.extra.PAUSED_LIST";
-    field public static final String EXTRA_PAUSED_URI_LIST = "android.telephony.mbms.extra.PAUSED_URI_LIST";
-    field public static final String EXTRA_SERVICE_ID = "android.telephony.mbms.extra.SERVICE_ID";
-    field public static final String EXTRA_TEMP_FILES_IN_USE = "android.telephony.mbms.extra.TEMP_FILES_IN_USE";
-    field public static final String EXTRA_TEMP_FILE_ROOT = "android.telephony.mbms.extra.TEMP_FILE_ROOT";
-    field public static final String EXTRA_TEMP_LIST = "android.telephony.mbms.extra.TEMP_LIST";
-  }
-
-}
-
diff --git a/telephony/api/system-removed.txt b/telephony/api/system-removed.txt
deleted file mode 100644
index c7fd304..0000000
--- a/telephony/api/system-removed.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-// Signature format: 2.0
-package android.telephony {
-
-  public final class PreciseDataConnectionState implements android.os.Parcelable {
-    method @Deprecated @Nullable public android.net.LinkProperties getDataConnectionLinkProperties();
-    method @Deprecated public int getDataConnectionNetworkType();
-  }
-
-  public class TelephonyManager {
-    method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void answerRingingCall();
-    method @Deprecated @RequiresPermission(android.Manifest.permission.CALL_PHONE) public boolean endCall();
-    method @Deprecated public void silenceRinger();
-  }
-
-}
-
-package android.telephony.data {
-
-  public final class DataCallResponse implements android.os.Parcelable {
-    ctor public DataCallResponse(int, int, int, int, int, @Nullable String, @Nullable java.util.List<android.net.LinkAddress>, @Nullable java.util.List<java.net.InetAddress>, @Nullable java.util.List<java.net.InetAddress>, @Nullable java.util.List<java.net.InetAddress>, int);
-  }
-
-}
-
diff --git a/telephony/common/com/android/internal/telephony/CarrierAppUtils.java b/telephony/common/com/android/internal/telephony/CarrierAppUtils.java
index e57b030..d1412b7 100644
--- a/telephony/common/com/android/internal/telephony/CarrierAppUtils.java
+++ b/telephony/common/com/android/internal/telephony/CarrierAppUtils.java
@@ -32,6 +32,7 @@
 import android.util.Log;
 
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.telephony.util.TelephonyUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -124,11 +125,7 @@
     }
 
     private static boolean isUpdatedSystemApp(ApplicationInfo ai) {
-        if ((ai.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
-            return true;
-        }
-
-        return false;
+        return (ai.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0;
     }
 
     /**
@@ -318,7 +315,7 @@
                 String[] packageNames = new String[enabledCarrierPackages.size()];
                 enabledCarrierPackages.toArray(packageNames);
                 permissionManager.grantDefaultPermissionsToEnabledCarrierApps(packageNames,
-                        UserHandle.of(userId), Runnable::run, isSuccess -> { });
+                        UserHandle.of(userId), TelephonyUtils.DIRECT_EXECUTOR, isSuccess -> { });
             }
         } catch (PackageManager.NameNotFoundException e) {
             Log.w(TAG, "Could not reach PackageManager", e);
diff --git a/telephony/common/com/android/internal/telephony/SmsApplication.java b/telephony/common/com/android/internal/telephony/SmsApplication.java
index b35b323..b8b60da 100644
--- a/telephony/common/com/android/internal/telephony/SmsApplication.java
+++ b/telephony/common/com/android/internal/telephony/SmsApplication.java
@@ -35,6 +35,7 @@
 import android.net.Uri;
 import android.os.AsyncTask;
 import android.os.Binder;
+import android.os.Build;
 import android.os.Process;
 import android.os.UserHandle;
 import android.provider.Telephony;
@@ -89,7 +90,7 @@
         /**
          * Name of this SMS app for display.
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private String mApplicationName;
 
         /**
@@ -580,7 +581,7 @@
      * Sets the specified package as the default SMS/MMS application. The caller of this method
      * needs to have permission to set AppOps and write to secure settings.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static void setDefaultApplication(String packageName, Context context) {
         setDefaultApplicationAsUser(packageName, context, getIncomingUserId(context));
     }
@@ -849,7 +850,7 @@
         sSmsPackageMonitor.register(context, context.getMainLooper(), UserHandle.ALL);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static void configurePreferredActivity(PackageManager packageManager,
             ComponentName componentName) {
         // Add the four activity preferences we want to direct to this app.
@@ -887,7 +888,7 @@
      * Returns SmsApplicationData for this package if this package is capable of being set as the
      * default SMS application.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static SmsApplicationData getSmsApplicationData(String packageName, Context context) {
         Collection<SmsApplicationData> applications = getApplicationCollection(context);
         return getApplicationForPackage(applications, packageName);
@@ -959,7 +960,7 @@
      * @param updateIfNeeded update the default app if there is no valid default app configured.
      * @return component name of the app and class to direct Respond Via Message intent to
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static ComponentName getDefaultRespondViaMessageApplication(Context context,
             boolean updateIfNeeded) {
         int userId = getIncomingUserId(context);
@@ -1060,7 +1061,7 @@
      * <p>
      * Caller must pass in the correct user context if calling from a singleton service.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static boolean shouldWriteMessageForPackage(String packageName, Context context) {
         return !isDefaultSmsApplication(context, packageName);
     }
diff --git a/telephony/common/com/android/internal/telephony/util/TelephonyUtils.java b/telephony/common/com/android/internal/telephony/util/TelephonyUtils.java
index 6826974..02d7410 100644
--- a/telephony/common/com/android/internal/telephony/util/TelephonyUtils.java
+++ b/telephony/common/com/android/internal/telephony/util/TelephonyUtils.java
@@ -15,6 +15,8 @@
  */
 package com.android.internal.telephony.util;
 
+import static android.telephony.Annotation.DataState;
+
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.content.Context;
@@ -26,11 +28,13 @@
 import android.os.PersistableBundle;
 import android.os.RemoteException;
 import android.os.SystemProperties;
+import android.telephony.TelephonyManager;
 
 import java.io.PrintWriter;
 import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Supplier;
 
@@ -41,6 +45,8 @@
     public static boolean IS_USER = "user".equals(android.os.Build.TYPE);
     public static boolean IS_DEBUGGABLE = SystemProperties.getInt("ro.debuggable", 0) == 1;
 
+    public static final Executor DIRECT_EXECUTOR = Runnable::run;
+
     /**
      * Verify that caller holds {@link android.Manifest.permission#DUMP}.
      *
@@ -154,4 +160,22 @@
         } catch (InterruptedException ignored) {
         }
     }
+
+    /**
+     * Convert data state to string
+     *
+     * @return The data state in string format.
+     */
+    public static String dataStateToString(@DataState int state) {
+        switch (state) {
+            case TelephonyManager.DATA_DISCONNECTED: return "DISCONNECTED";
+            case TelephonyManager.DATA_CONNECTING: return "CONNECTING";
+            case TelephonyManager.DATA_CONNECTED: return "CONNECTED";
+            case TelephonyManager.DATA_SUSPENDED: return "SUSPENDED";
+            case TelephonyManager.DATA_DISCONNECTING: return "DISCONNECTING";
+            case TelephonyManager.DATA_UNKNOWN: return "UNKNOWN";
+        }
+        // This is the error case. The well-defined value for UNKNOWN is -1.
+        return "UNKNOWN(" + state + ")";
+    }
 }
diff --git a/telephony/common/com/google/android/mms/ContentType.java b/telephony/common/com/google/android/mms/ContentType.java
index 4a971dd..2aec86f 100644
--- a/telephony/common/com/google/android/mms/ContentType.java
+++ b/telephony/common/com/google/android/mms/ContentType.java
@@ -18,6 +18,7 @@
 package com.google.android.mms;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 import java.util.ArrayList;
 
@@ -176,17 +177,17 @@
         return (null != contentType) && sSupportedContentTypes.contains(contentType);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static boolean isSupportedImageType(String contentType) {
         return isImageType(contentType) && isSupportedType(contentType);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static boolean isSupportedAudioType(String contentType) {
         return isAudioType(contentType) && isSupportedType(contentType);
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static boolean isSupportedVideoType(String contentType) {
         return isVideoType(contentType) && isSupportedType(contentType);
     }
diff --git a/telephony/common/com/google/android/mms/MmsException.java b/telephony/common/com/google/android/mms/MmsException.java
index 24bceb3..db6d1d1 100644
--- a/telephony/common/com/google/android/mms/MmsException.java
+++ b/telephony/common/com/google/android/mms/MmsException.java
@@ -18,6 +18,7 @@
 package com.google.android.mms;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 /**
  * A generic exception that is thrown by the Mms client.
@@ -59,7 +60,7 @@
      * @param message the detail message.
      * @param cause the cause.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public MmsException(String message, Throwable cause) {
         super(message, cause);
     }
diff --git a/telephony/common/com/google/android/mms/pdu/AcknowledgeInd.java b/telephony/common/com/google/android/mms/pdu/AcknowledgeInd.java
index 8693385..3eda60b 100644
--- a/telephony/common/com/google/android/mms/pdu/AcknowledgeInd.java
+++ b/telephony/common/com/google/android/mms/pdu/AcknowledgeInd.java
@@ -18,6 +18,7 @@
 package com.google.android.mms.pdu;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 import com.google.android.mms.InvalidHeaderValueException;
 
@@ -68,7 +69,7 @@
      * @param value the value
      * @throws InvalidHeaderValueException if the value is invalid.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setReportAllowed(int value) throws InvalidHeaderValueException {
         mPduHeaders.setOctet(value, PduHeaders.REPORT_ALLOWED);
     }
diff --git a/telephony/common/com/google/android/mms/pdu/DeliveryInd.java b/telephony/common/com/google/android/mms/pdu/DeliveryInd.java
index 8fb6a75..ca1f2eb 100644
--- a/telephony/common/com/google/android/mms/pdu/DeliveryInd.java
+++ b/telephony/common/com/google/android/mms/pdu/DeliveryInd.java
@@ -18,6 +18,7 @@
 package com.google.android.mms.pdu;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 import com.google.android.mms.InvalidHeaderValueException;
 
@@ -53,7 +54,7 @@
      *
      * @return the value
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public long getDate() {
         return mPduHeaders.getLongInteger(PduHeaders.DATE);
     }
diff --git a/telephony/common/com/google/android/mms/pdu/EncodedStringValue.java b/telephony/common/com/google/android/mms/pdu/EncodedStringValue.java
index 8c0380f..8b01cb3 100644
--- a/telephony/common/com/google/android/mms/pdu/EncodedStringValue.java
+++ b/telephony/common/com/google/android/mms/pdu/EncodedStringValue.java
@@ -18,6 +18,7 @@
 package com.google.android.mms.pdu;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.util.Log;
 
 import java.io.ByteArrayOutputStream;
@@ -237,7 +238,7 @@
     /**
      * Extract an EncodedStringValue[] from a given String.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static EncodedStringValue[] extract(String src) {
         String[] values = src.split(";");
 
diff --git a/telephony/common/com/google/android/mms/pdu/MultimediaMessagePdu.java b/telephony/common/com/google/android/mms/pdu/MultimediaMessagePdu.java
index 42a89c6..45ba481 100644
--- a/telephony/common/com/google/android/mms/pdu/MultimediaMessagePdu.java
+++ b/telephony/common/com/google/android/mms/pdu/MultimediaMessagePdu.java
@@ -18,6 +18,7 @@
 package com.google.android.mms.pdu;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 import com.google.android.mms.InvalidHeaderValueException;
 
@@ -116,7 +117,7 @@
      * @param value the value
      * @throws NullPointerException if the value is null.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void addTo(EncodedStringValue value) {
         mPduHeaders.appendEncodedStringValue(value, PduHeaders.TO);
     }
@@ -137,7 +138,7 @@
      * @param value the value
      * @throws InvalidHeaderValueException if the value is invalid.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setPriority(int value) throws InvalidHeaderValueException {
         mPduHeaders.setOctet(value, PduHeaders.PRIORITY);
     }
@@ -157,7 +158,7 @@
      *
      * @param value the value
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setDate(long value) {
         mPduHeaders.setLongInteger(value, PduHeaders.DATE);
     }
diff --git a/telephony/common/com/google/android/mms/pdu/NotifyRespInd.java b/telephony/common/com/google/android/mms/pdu/NotifyRespInd.java
index ebd81af..16d8395 100644
--- a/telephony/common/com/google/android/mms/pdu/NotifyRespInd.java
+++ b/telephony/common/com/google/android/mms/pdu/NotifyRespInd.java
@@ -18,6 +18,7 @@
 package com.google.android.mms.pdu;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 import com.google.android.mms.InvalidHeaderValueException;
 
@@ -72,7 +73,7 @@
      * @throws InvalidHeaderValueException if the value is invalid.
      *         RuntimeException if an undeclared error occurs.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setReportAllowed(int value) throws InvalidHeaderValueException {
         mPduHeaders.setOctet(value, PduHeaders.REPORT_ALLOWED);
     }
diff --git a/telephony/common/com/google/android/mms/pdu/PduBody.java b/telephony/common/com/google/android/mms/pdu/PduBody.java
index f7f285f..e76738b 100644
--- a/telephony/common/com/google/android/mms/pdu/PduBody.java
+++ b/telephony/common/com/google/android/mms/pdu/PduBody.java
@@ -18,6 +18,7 @@
 package com.google.android.mms.pdu;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -113,7 +114,7 @@
      * @param index index of the part to return
      * @return part at the specified index
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public PduPart removePart(int index) {
         return mParts.remove(index);
     }
@@ -142,7 +143,7 @@
      * @param part the part object
      * @return index the index of the first occurrence of the part in this body
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getPartIndex(PduPart part) {
         return mParts.indexOf(part);
     }
diff --git a/telephony/common/com/google/android/mms/pdu/PduPart.java b/telephony/common/com/google/android/mms/pdu/PduPart.java
index 8dd976b..aead141 100644
--- a/telephony/common/com/google/android/mms/pdu/PduPart.java
+++ b/telephony/common/com/google/android/mms/pdu/PduPart.java
@@ -19,6 +19,7 @@
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.net.Uri;
+import android.os.Build;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -164,7 +165,7 @@
     /**
      * @return The length of the data, if this object have data, else 0.
      */
-     @UnsupportedAppUsage
+     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
      public int getDataLength() {
          if(mPartData != null){
              return mPartData.length;
diff --git a/telephony/common/com/google/android/mms/pdu/SendReq.java b/telephony/common/com/google/android/mms/pdu/SendReq.java
index 6e2f2da..8b5a617 100644
--- a/telephony/common/com/google/android/mms/pdu/SendReq.java
+++ b/telephony/common/com/google/android/mms/pdu/SendReq.java
@@ -18,6 +18,7 @@
 package com.google.android.mms.pdu;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.util.Log;
 
 import com.google.android.mms.InvalidHeaderValueException;
@@ -150,7 +151,7 @@
      * @param value the value
      * @throws NullPointerException if the value is null.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setCc(EncodedStringValue[] value) {
         mPduHeaders.setEncodedStringValues(value, PduHeaders.CC);
     }
diff --git a/telephony/common/com/google/android/mms/util/AbstractCache.java b/telephony/common/com/google/android/mms/util/AbstractCache.java
index 25862e7..8b9ee43 100644
--- a/telephony/common/com/google/android/mms/util/AbstractCache.java
+++ b/telephony/common/com/google/android/mms/util/AbstractCache.java
@@ -18,6 +18,7 @@
 package com.google.android.mms.util;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.util.Log;
 
 import java.util.HashMap;
@@ -64,7 +65,7 @@
         return false;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public V get(K key) {
         if (LOCAL_LOGV) {
             Log.v(TAG, "Trying to get " + key + " from cache.");
diff --git a/telephony/common/com/google/android/mms/util/DownloadDrmHelper.java b/telephony/common/com/google/android/mms/util/DownloadDrmHelper.java
index 0f9390d..d0e3398 100644
--- a/telephony/common/com/google/android/mms/util/DownloadDrmHelper.java
+++ b/telephony/common/com/google/android/mms/util/DownloadDrmHelper.java
@@ -20,6 +20,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.drm.DrmManagerClient;
+import android.os.Build;
 import android.util.Log;
 
 public class DownloadDrmHelper {
@@ -73,7 +74,7 @@
      * Modifies the file extension for a DRM Forward Lock file NOTE: This
      * function shouldn't be called if the file shouldn't be DRM converted
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static String modifyDrmFwLockFileExtension(String filename) {
         if (filename != null) {
             int extensionIndex;
diff --git a/telephony/common/com/google/android/mms/util/SqliteWrapper.java b/telephony/common/com/google/android/mms/util/SqliteWrapper.java
index 31fe4d7..e2d62f8 100644
--- a/telephony/common/com/google/android/mms/util/SqliteWrapper.java
+++ b/telephony/common/com/google/android/mms/util/SqliteWrapper.java
@@ -25,6 +25,7 @@
 import android.database.Cursor;
 import android.database.sqlite.SQLiteException;
 import android.net.Uri;
+import android.os.Build;
 import android.util.Log;
 import android.widget.Toast;
 
@@ -79,7 +80,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static boolean requery(Context context, Cursor cursor) {
         try {
             return cursor.requery();
diff --git a/telephony/framework-telephony-jarjar-rules.txt b/telephony/framework-telephony-jarjar-rules.txt
deleted file mode 100644
index 212eba1..0000000
--- a/telephony/framework-telephony-jarjar-rules.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-rule android.telephony.Annotation* android.telephony.framework.Annotation@1
-rule android.util.RecurrenceRule* android.telephony.RecurrenceRule@1
-rule com.android.i18n.phonenumbers.** com.android.telephony.framework.phonenumbers.@1
-rule com.android.internal.os.SomeArgs* android.telephony.SomeArgs@1
-rule com.android.internal.util.BitwiseInputStream* android.telephony.BitwiseInputStream@1
-rule com.android.internal.util.BitwiseOutputStream* android.telephony.BitwiseOutputStream@1
-rule com.android.internal.util.Preconditions* android.telephony.Preconditions@1
-rule com.android.internal.util.IndentingPrintWriter* android.telephony.IndentingPrintWriter@1
-rule com.android.internal.util.HexDump* android.telephony.HexDump@1
diff --git a/telephony/java/android/service/euicc/EuiccProfileInfo.java b/telephony/java/android/service/euicc/EuiccProfileInfo.java
index 92e4197..8ec500b 100644
--- a/telephony/java/android/service/euicc/EuiccProfileInfo.java
+++ b/telephony/java/android/service/euicc/EuiccProfileInfo.java
@@ -20,6 +20,7 @@
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.service.carrier.CarrierIdentifier;
@@ -146,7 +147,7 @@
      * @deprecated - Do not use.
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public EuiccProfileInfo(String iccid, @Nullable UiccAccessRule[] accessRules,
             @Nullable String nickname) {
         if (!TextUtils.isDigitsOnly(iccid)) {
diff --git a/telephony/java/android/service/euicc/GetDefaultDownloadableSubscriptionListResult.java b/telephony/java/android/service/euicc/GetDefaultDownloadableSubscriptionListResult.java
index 2382f65..58e1d08 100644
--- a/telephony/java/android/service/euicc/GetDefaultDownloadableSubscriptionListResult.java
+++ b/telephony/java/android/service/euicc/GetDefaultDownloadableSubscriptionListResult.java
@@ -18,6 +18,7 @@
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.telephony.euicc.DownloadableSubscription;
@@ -50,7 +51,7 @@
      * @deprecated - Do no use. Use getResult() instead.
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final int result;
 
     @Nullable
diff --git a/telephony/java/android/service/euicc/GetDownloadableSubscriptionMetadataResult.java b/telephony/java/android/service/euicc/GetDownloadableSubscriptionMetadataResult.java
index d0fb511..6417c0d 100644
--- a/telephony/java/android/service/euicc/GetDownloadableSubscriptionMetadataResult.java
+++ b/telephony/java/android/service/euicc/GetDownloadableSubscriptionMetadataResult.java
@@ -18,6 +18,7 @@
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.telephony.euicc.DownloadableSubscription;
@@ -47,7 +48,7 @@
      * @deprecated - Do no use. Use getResult() instead.
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final int result;
 
     @Nullable
diff --git a/telephony/java/android/service/euicc/IDeleteSubscriptionCallback.aidl b/telephony/java/android/service/euicc/IDeleteSubscriptionCallback.aidl
index aff8f1b..a55f019 100644
--- a/telephony/java/android/service/euicc/IDeleteSubscriptionCallback.aidl
+++ b/telephony/java/android/service/euicc/IDeleteSubscriptionCallback.aidl
@@ -18,6 +18,6 @@
 
 /** @hide */
 oneway interface IDeleteSubscriptionCallback {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void onComplete(int result);
 }
\ No newline at end of file
diff --git a/telephony/java/android/service/euicc/IEraseSubscriptionsCallback.aidl b/telephony/java/android/service/euicc/IEraseSubscriptionsCallback.aidl
index 34b53cc..da26045 100644
--- a/telephony/java/android/service/euicc/IEraseSubscriptionsCallback.aidl
+++ b/telephony/java/android/service/euicc/IEraseSubscriptionsCallback.aidl
@@ -18,6 +18,6 @@
 
 /** @hide */
 oneway interface IEraseSubscriptionsCallback {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void onComplete(int result);
 }
\ No newline at end of file
diff --git a/telephony/java/android/service/euicc/IGetDefaultDownloadableSubscriptionListCallback.aidl b/telephony/java/android/service/euicc/IGetDefaultDownloadableSubscriptionListCallback.aidl
index ad69ef1..db73f8e 100644
--- a/telephony/java/android/service/euicc/IGetDefaultDownloadableSubscriptionListCallback.aidl
+++ b/telephony/java/android/service/euicc/IGetDefaultDownloadableSubscriptionListCallback.aidl
@@ -20,6 +20,6 @@
 
 /** @hide */
 oneway interface IGetDefaultDownloadableSubscriptionListCallback {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void onComplete(in GetDefaultDownloadableSubscriptionListResult result);
 }
\ No newline at end of file
diff --git a/telephony/java/android/service/euicc/IGetDownloadableSubscriptionMetadataCallback.aidl b/telephony/java/android/service/euicc/IGetDownloadableSubscriptionMetadataCallback.aidl
index 01f187e..102ee30 100644
--- a/telephony/java/android/service/euicc/IGetDownloadableSubscriptionMetadataCallback.aidl
+++ b/telephony/java/android/service/euicc/IGetDownloadableSubscriptionMetadataCallback.aidl
@@ -20,6 +20,6 @@
 
 /** @hide */
 oneway interface IGetDownloadableSubscriptionMetadataCallback {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void onComplete(in GetDownloadableSubscriptionMetadataResult result);
 }
\ No newline at end of file
diff --git a/telephony/java/android/service/euicc/IGetEidCallback.aidl b/telephony/java/android/service/euicc/IGetEidCallback.aidl
index e405a98..c47cf13 100644
--- a/telephony/java/android/service/euicc/IGetEidCallback.aidl
+++ b/telephony/java/android/service/euicc/IGetEidCallback.aidl
@@ -18,6 +18,6 @@
 
 /** @hide */
 oneway interface IGetEidCallback {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void onSuccess(String eid);
 }
\ No newline at end of file
diff --git a/telephony/java/android/service/euicc/IGetEuiccInfoCallback.aidl b/telephony/java/android/service/euicc/IGetEuiccInfoCallback.aidl
index c061182..291c058d 100644
--- a/telephony/java/android/service/euicc/IGetEuiccInfoCallback.aidl
+++ b/telephony/java/android/service/euicc/IGetEuiccInfoCallback.aidl
@@ -20,6 +20,6 @@
 
 /** @hide */
 oneway interface IGetEuiccInfoCallback {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void onSuccess(in EuiccInfo euiccInfo);
 }
\ No newline at end of file
diff --git a/telephony/java/android/service/euicc/IGetEuiccProfileInfoListCallback.aidl b/telephony/java/android/service/euicc/IGetEuiccProfileInfoListCallback.aidl
index 0485f7b..eadddb1 100644
--- a/telephony/java/android/service/euicc/IGetEuiccProfileInfoListCallback.aidl
+++ b/telephony/java/android/service/euicc/IGetEuiccProfileInfoListCallback.aidl
@@ -20,6 +20,6 @@
 
 /** @hide */
 oneway interface IGetEuiccProfileInfoListCallback {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void onComplete(in GetEuiccProfileInfoListResult result);
 }
\ No newline at end of file
diff --git a/telephony/java/android/service/euicc/IRetainSubscriptionsForFactoryResetCallback.aidl b/telephony/java/android/service/euicc/IRetainSubscriptionsForFactoryResetCallback.aidl
index 340401f..ade1ccd 100644
--- a/telephony/java/android/service/euicc/IRetainSubscriptionsForFactoryResetCallback.aidl
+++ b/telephony/java/android/service/euicc/IRetainSubscriptionsForFactoryResetCallback.aidl
@@ -18,6 +18,6 @@
 
 /** @hide */
 oneway interface IRetainSubscriptionsForFactoryResetCallback {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void onComplete(int result);
 }
\ No newline at end of file
diff --git a/telephony/java/android/service/euicc/ISwitchToSubscriptionCallback.aidl b/telephony/java/android/service/euicc/ISwitchToSubscriptionCallback.aidl
index b8f984d..1b4b658 100644
--- a/telephony/java/android/service/euicc/ISwitchToSubscriptionCallback.aidl
+++ b/telephony/java/android/service/euicc/ISwitchToSubscriptionCallback.aidl
@@ -18,6 +18,6 @@
 
 /** @hide */
 oneway interface ISwitchToSubscriptionCallback {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void onComplete(int result);
 }
\ No newline at end of file
diff --git a/telephony/java/android/service/euicc/IUpdateSubscriptionNicknameCallback.aidl b/telephony/java/android/service/euicc/IUpdateSubscriptionNicknameCallback.aidl
index 0aa6697..fda7349 100644
--- a/telephony/java/android/service/euicc/IUpdateSubscriptionNicknameCallback.aidl
+++ b/telephony/java/android/service/euicc/IUpdateSubscriptionNicknameCallback.aidl
@@ -18,6 +18,6 @@
 
 /** @hide */
 oneway interface IUpdateSubscriptionNicknameCallback {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void onComplete(int result);
 }
\ No newline at end of file
diff --git a/telephony/java/android/telephony/AccessNetworkConstants.java b/telephony/java/android/telephony/AccessNetworkConstants.java
index 39a7543..d012971 100644
--- a/telephony/java/android/telephony/AccessNetworkConstants.java
+++ b/telephony/java/android/telephony/AccessNetworkConstants.java
@@ -18,7 +18,6 @@
 
 import android.annotation.IntDef;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.hardware.radio.V1_1.GeranBands;
 import android.hardware.radio.V1_5.AccessNetwork;
 import android.hardware.radio.V1_5.EutranBands;
@@ -49,7 +48,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static final int TRANSPORT_TYPE_INVALID = -1;
 
     /**
@@ -438,7 +436,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public static final int FREQUENCY_RANGE_GROUP_UNKNOWN = 0;
 
         /**
@@ -447,7 +444,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public static final int FREQUENCY_RANGE_GROUP_1 = 1;
 
         /**
@@ -456,7 +452,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public static final int FREQUENCY_RANGE_GROUP_2 = 2;
 
         /**
@@ -481,7 +476,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public static @FrequencyRangeGroup int getFrequencyRangeGroup(@NgranBand int band) {
             switch (band) {
                 case BAND_1:
diff --git a/telephony/java/android/telephony/BarringInfo.java b/telephony/java/android/telephony/BarringInfo.java
index 92423a2..e9698ad 100644
--- a/telephony/java/android/telephony/BarringInfo.java
+++ b/telephony/java/android/telephony/BarringInfo.java
@@ -252,7 +252,6 @@
     private SparseArray<BarringServiceInfo> mBarringServiceInfos;
 
     /** @hide */
-    @TestApi
     @SystemApi
     public BarringInfo() {
         mBarringServiceInfos = new SparseArray<>();
diff --git a/telephony/java/android/telephony/BinderCacheManager.java b/telephony/java/android/telephony/BinderCacheManager.java
new file mode 100644
index 0000000..0d3e2fe
--- /dev/null
+++ b/telephony/java/android/telephony/BinderCacheManager.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony;
+
+import android.annotation.NonNull;
+import android.os.IBinder;
+import android.os.IInterface;
+import android.os.RemoteException;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.NoSuchElementException;
+import java.util.concurrent.atomic.AtomicReference;
+
+/**
+ * Keeps track of the connection to a Binder node, refreshes the cache if the node dies, and lets
+ * interested parties register listeners on the node to be notified when the node has died via the
+ * registered {@link Runnable}.
+ * @param <T> The IInterface representing the Binder type that this manager will be managing the
+ *           cache of.
+ * @hide
+ */
+public class BinderCacheManager<T extends IInterface> {
+
+    /**
+     * Factory class for creating new IInterfaces in the case that {@link #getBinder()} is
+     * called and there is no active binder available.
+     * @param <T> The IInterface that should be cached and returned to the caller when
+     * {@link #getBinder()} is called until the Binder node dies.
+     */
+    public interface BinderInterfaceFactory<T> {
+        /**
+         * @return A new instance of the Binder node, which will be cached until it dies.
+         */
+        T create();
+    }
+
+    /**
+     * Tracks the cached Binder node as well as the listeners that were associated with that
+     * Binder node during its lifetime. If the Binder node dies, the listeners will be called and
+     * then this tracker will be unlinked and cleaned up.
+     */
+    private class BinderDeathTracker implements IBinder.DeathRecipient {
+
+        private final T mConnection;
+        private final HashMap<Object, Runnable> mListeners = new HashMap<>();
+
+        /**
+         * Create a tracker to cache the Binder node and add the ability to listen for the cached
+         * interface's death.
+         */
+        BinderDeathTracker(@NonNull T connection) {
+            mConnection = connection;
+            try {
+                mConnection.asBinder().linkToDeath(this, 0 /*flags*/);
+            } catch (RemoteException e) {
+                // isAlive will return false.
+            }
+        }
+
+        public boolean addListener(Object key, Runnable r) {
+            synchronized (mListeners) {
+                if (!isAlive()) return false;
+                mListeners.put(key, r);
+                return true;
+            }
+        }
+
+        public void removeListener(Object runnableKey) {
+            synchronized (mListeners) {
+                mListeners.remove(runnableKey);
+            }
+        }
+
+        @Override
+        public void binderDied() {
+            ArrayList<Runnable> listeners;
+            synchronized (mListeners) {
+                listeners = new ArrayList<>(mListeners.values());
+                mListeners.clear();
+                try {
+                    mConnection.asBinder().unlinkToDeath(this, 0 /*flags*/);
+                } catch (NoSuchElementException e) {
+                    // No need to worry about this, this means the death recipient was never linked.
+                }
+            }
+            listeners.forEach(Runnable::run);
+        }
+
+        /**
+         * @return The cached Binder.
+         */
+        public T getConnection() {
+            return mConnection;
+        }
+
+        /**
+         * @return true if the cached Binder is alive at the time of calling, false otherwise.
+         */
+        public boolean isAlive() {
+            return mConnection.asBinder().isBinderAlive();
+        }
+    }
+
+    private final BinderInterfaceFactory<T> mBinderInterfaceFactory;
+    private final AtomicReference<BinderDeathTracker> mCachedConnection;
+
+    /**
+     * Create a new instance, which manages a cached IInterface and creates new ones using the
+     * provided factory when the cached IInterface dies.
+     * @param factory The factory used to create new Instances of the cached IInterface when it
+     *                dies.
+     */
+    public BinderCacheManager(BinderInterfaceFactory<T> factory) {
+        mBinderInterfaceFactory = factory;
+        mCachedConnection = new AtomicReference<>();
+    }
+
+    /**
+     * Get the binder node connection and add a Runnable to be run if this Binder dies. Once this
+     * Runnable is run, the Runnable itself is discarded and must be added again.
+     * <p>
+     * Note: There should be no assumptions here as to which Thread this Runnable is called on. If
+     * the Runnable should be called on a specific thread, it should be up to the caller to handle
+     * that in the runnable implementation.
+     * @param runnableKey The Key associated with this runnable so that it can be removed later
+     *                    using {@link #removeRunnable(Object)} if needed.
+     * @param deadRunnable The runnable that will be run if the cached Binder node dies.
+     * @return T if the runnable was added or {@code null} if the connection is not alive right now
+     * and the associated runnable was never added.
+     */
+    public T listenOnBinder(Object runnableKey, Runnable deadRunnable) {
+        if (runnableKey == null || deadRunnable == null) return null;
+        BinderDeathTracker tracker = getTracker();
+        if (tracker == null) return null;
+
+        boolean addSucceeded = tracker.addListener(runnableKey, deadRunnable);
+        return addSucceeded ? tracker.getConnection() : null;
+    }
+
+    /**
+     * @return The cached Binder node. May return null if the requested Binder node is not currently
+     * available.
+     */
+    public T getBinder() {
+        BinderDeathTracker tracker = getTracker();
+        return (tracker != null) ? tracker.getConnection() : null;
+    }
+
+    /**
+     * Removes a previously registered runnable associated with the returned  cached Binder node
+     * using the key it was registered with in {@link #listenOnBinder} if the runnable still exists.
+     * @param runnableKey The key that was used to register the Runnable earlier.
+     * @return The cached Binder node that the runnable used to registered to or null if the cached
+     * Binder node is not alive anymore.
+     */
+    public T removeRunnable(Object runnableKey) {
+        if (runnableKey == null) return null;
+        BinderDeathTracker tracker = getTracker();
+        if (tracker == null) return null;
+        tracker.removeListener(runnableKey);
+        return tracker.getConnection();
+    }
+
+    /**
+     * @return The BinderDeathTracker container, which contains the cached IInterface instance or
+     * null if it is not available right now.
+     */
+    private BinderDeathTracker getTracker() {
+        return mCachedConnection.updateAndGet((oldVal) -> {
+            BinderDeathTracker tracker = oldVal;
+            // Update cache if no longer alive. BinderDied will eventually be called on the tracker,
+            // which will call listeners & clean up.
+            if (tracker == null || !tracker.isAlive()) {
+                T binder = mBinderInterfaceFactory.create();
+                tracker = (binder != null) ? new BinderDeathTracker(binder) : null;
+
+            }
+            return (tracker != null && tracker.isAlive()) ? tracker : null;
+        });
+    }
+
+}
diff --git a/telephony/java/android/telephony/CallForwardingInfo.java b/telephony/java/android/telephony/CallForwardingInfo.java
index 7e777fa..aeac36e 100644
--- a/telephony/java/android/telephony/CallForwardingInfo.java
+++ b/telephony/java/android/telephony/CallForwardingInfo.java
@@ -20,6 +20,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SuppressLint;
+import android.annotation.SystemApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -33,50 +34,14 @@
  * Defines the call forwarding information.
  * @hide
  */
+@SystemApi
 public final class CallForwardingInfo implements Parcelable {
     private static final String TAG = "CallForwardingInfo";
 
     /**
-     * Indicates the call forwarding status is inactive.
-     *
-     * @hide
-     */
-    public static final int STATUS_INACTIVE = 0;
-
-    /**
-     * Indicates the call forwarding status is active.
-     *
-     * @hide
-     */
-    public static final int STATUS_ACTIVE = 1;
-
-    /**
-     * Indicates the call forwarding could not be enabled because the recipient is not on
-     * Fixed Dialing Number (FDN) list.
-     *
-     * @hide
-     */
-    public static final int STATUS_FDN_CHECK_FAILURE = 2;
-
-    /**
-     * Indicates the call forwarding status is with an unknown error.
-     *
-     * @hide
-     */
-    public static final int STATUS_UNKNOWN_ERROR = 3;
-
-    /**
-     * Indicates the call forwarding is not supported (e.g. called via CDMA).
-     *
-     * @hide
-     */
-    public static final int STATUS_NOT_SUPPORTED = 4;
-
-    /**
-     * Indicates the call forwarding reason is "unconditional".
+     * Indicates that call forwarding reason is "unconditional".
      * Reference: 3GPP TS 27.007 version 10.3.0 Release 10 - 7.11 Call forwarding number
      *            and conditions +CCFC
-     * @hide
      */
     public static final int REASON_UNCONDITIONAL = 0;
 
@@ -84,7 +49,6 @@
      * Indicates the call forwarding status is "busy".
      * Reference: 3GPP TS 27.007 version 10.3.0 Release 10 - 7.11 Call forwarding number
      *            and conditions +CCFC
-     * @hide
      */
     public static final int REASON_BUSY = 1;
 
@@ -92,7 +56,6 @@
      * Indicates the call forwarding reason is "no reply".
      * Reference: 3GPP TS 27.007 version 10.3.0 Release 10 - 7.11 Call forwarding number
      *            and conditions +CCFC
-     * @hide
      */
     public static final int REASON_NO_REPLY = 2;
 
@@ -100,7 +63,6 @@
      * Indicates the call forwarding reason is "not reachable".
      * Reference: 3GPP TS 27.007 version 10.3.0 Release 10 - 7.11 Call forwarding number
      *            and conditions +CCFC
-     * @hide
      */
     public static final int REASON_NOT_REACHABLE = 3;
 
@@ -109,7 +71,6 @@
      * simultaneously (unconditional, busy, no reply, and not reachable).
      * Reference: 3GPP TS 27.007 version 10.3.0 Release 10 - 7.11 Call forwarding number
      *            and conditions +CCFC
-     * @hide
      */
     public static final int REASON_ALL = 4;
 
@@ -118,28 +79,14 @@
      * forwarding reasons simultaneously (busy, no reply, and not reachable).
      * Reference: 3GPP TS 27.007 version 10.3.0 Release 10 - 7.11 Call forwarding number
      *            and conditions +CCFC
-     * @hide
      */
     public static final int REASON_ALL_CONDITIONAL = 5;
 
     /**
-     * Call forwarding function status
-     */
-    @IntDef(prefix = { "STATUS_" }, value = {
-        STATUS_ACTIVE,
-        STATUS_INACTIVE,
-        STATUS_UNKNOWN_ERROR,
-        STATUS_NOT_SUPPORTED,
-        STATUS_FDN_CHECK_FAILURE
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface CallForwardingStatus {
-    }
-
-    /**
      * Call forwarding reason types
+     * @hide
      */
-    @IntDef(flag = true, prefix = { "REASON_" }, value = {
+    @IntDef(prefix = { "REASON_" }, value = {
         REASON_UNCONDITIONAL,
         REASON_BUSY,
         REASON_NO_REPLY,
@@ -152,9 +99,9 @@
     }
 
     /**
-     * The call forwarding status.
+     * Whether call forwarding is enabled for this reason.
      */
-    private int mStatus;
+    private boolean mEnabled;
 
     /**
      * The call forwarding reason indicates the condition under which calls will be forwarded.
@@ -178,39 +125,35 @@
     /**
      * Construct a CallForwardingInfo.
      *
-     * @param status the call forwarding status
+     * @param enabled Whether to enable call forwarding for the reason specified
+     *                in {@link #getReason()}.
      * @param reason the call forwarding reason
      * @param number the phone number to which calls will be forwarded
      * @param timeSeconds the timeout (in seconds) before the forwarding is attempted
-     * @hide
      */
-    public CallForwardingInfo(@CallForwardingStatus int status, @CallForwardingReason int reason,
+    public CallForwardingInfo(boolean enabled, @CallForwardingReason int reason,
             @Nullable String number, int timeSeconds) {
-        mStatus = status;
+        mEnabled = enabled;
         mReason = reason;
         mNumber = number;
         mTimeSeconds = timeSeconds;
     }
 
     /**
-     * Returns the call forwarding status.
+     * Whether call forwarding is enabled for the reason from {@link #getReason()}.
      *
-     * @return the call forwarding status.
-     *
-     * @hide
+     * @return {@code true} if enabled, {@code false} otherwise.
      */
-    public @CallForwardingStatus int getStatus() {
-        return mStatus;
+    public boolean isEnabled() {
+        return mEnabled;
     }
 
     /**
      * Returns the call forwarding reason. The call forwarding reason indicates the condition
-     * under which calls will be forwarded.  For example, {@link #REASON_NO_REPLY} indicates
-     * that calls will be forward to {@link #getNumber()} when the user fails to answer the call.
+     * under which calls will be forwarded. For example, {@link #REASON_NO_REPLY} indicates
+     * that calls will be forwarded when the user fails to answer the call.
      *
      * @return the call forwarding reason.
-     *
-     * @hide
      */
     public @CallForwardingReason int getReason() {
         return mReason;
@@ -220,9 +163,7 @@
      * Returns the phone number to which calls will be forwarded.
      *
      * @return the number calls will be forwarded to, or {@code null} if call forwarding
-     * is being disabled.
-     *
-     * @hide
+     *         is disabled.
      */
     @Nullable
     public String getNumber() {
@@ -230,16 +171,14 @@
     }
 
     /**
-     * Gets the timeout (in seconds) before the forwarding is attempted. For example,
+     * Gets the timeout (in seconds) before forwarding is attempted. For example,
      * if {@link #REASON_NO_REPLY} is the call forwarding reason, the device will wait this
-     * duration of time before forwarding the call to {@link #getNumber()}.
+     * duration of time before forwarding the call to the number returned by {@link #getNumber()}.
      *
      * Reference: 3GPP TS 27.007 version 10.3.0 Release 10
      *            7.11 Call forwarding number and conditions +CCFC
      *
      * @return the timeout (in seconds) before the forwarding is attempted.
-     *
-     * @hide
      */
     @SuppressLint("MethodNameUnits")
     public int getTimeoutSeconds() {
@@ -257,14 +196,14 @@
     @Override
     public void writeToParcel(Parcel out, int flags) {
         out.writeString(mNumber);
-        out.writeInt(mStatus);
+        out.writeBoolean(mEnabled);
         out.writeInt(mReason);
         out.writeInt(mTimeSeconds);
     }
 
     private CallForwardingInfo(Parcel in) {
         mNumber = in.readString();
-        mStatus = in.readInt();
+        mEnabled = in.readBoolean();
         mReason = in.readInt();
         mTimeSeconds = in.readInt();
     }
@@ -281,7 +220,7 @@
         }
 
         CallForwardingInfo other = (CallForwardingInfo) o;
-        return mStatus == other.mStatus
+        return mEnabled == other.mEnabled
                 && mNumber == other.mNumber
                 && mReason == other.mReason
                 && mTimeSeconds == other.mTimeSeconds;
@@ -292,7 +231,7 @@
      */
     @Override
     public int hashCode() {
-        return Objects.hash(mStatus, mNumber, mReason, mTimeSeconds);
+        return Objects.hash(mEnabled, mNumber, mReason, mTimeSeconds);
     }
 
     public static final @NonNull Parcelable.Creator<CallForwardingInfo> CREATOR =
@@ -313,7 +252,7 @@
      */
     @Override
     public String toString() {
-        return "[CallForwardingInfo: status=" + mStatus
+        return "[CallForwardingInfo: enabled=" + mEnabled
                 + ", reason= " + mReason
                 + ", timeSec= " + mTimeSeconds + " seconds"
                 + ", number=" + Rlog.pii(TAG, mNumber) + "]";
diff --git a/telephony/java/android/telephony/CallQuality.java b/telephony/java/android/telephony/CallQuality.java
index 1c82e96..ff6a9bb 100644
--- a/telephony/java/android/telephony/CallQuality.java
+++ b/telephony/java/android/telephony/CallQuality.java
@@ -20,7 +20,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -41,7 +40,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class CallQuality implements Parcelable {
 
     // Constants representing the call quality level (see #CallQuality);
diff --git a/telephony/java/android/telephony/CarrierBandwidth.aidl b/telephony/java/android/telephony/CarrierBandwidth.aidl
new file mode 100644
index 0000000..d0861b8
--- /dev/null
+++ b/telephony/java/android/telephony/CarrierBandwidth.aidl
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.telephony;
+parcelable CarrierBandwidth;
\ No newline at end of file
diff --git a/telephony/java/android/telephony/CarrierBandwidth.java b/telephony/java/android/telephony/CarrierBandwidth.java
new file mode 100644
index 0000000..17747a3
--- /dev/null
+++ b/telephony/java/android/telephony/CarrierBandwidth.java
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.SystemApi;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.util.Objects;
+
+/**
+ * Defines downlink and uplink capacity of a network in kbps
+ * @hide
+ */
+@SystemApi
+public final class CarrierBandwidth implements Parcelable {
+    /**
+     * Any field that is not reported shall be set to INVALID
+     */
+    public static final int INVALID = -1;
+
+    /**
+     * Estimated downlink capacity in kbps of the primary carrier.
+     * This bandwidth estimate shall be the estimated maximum sustainable link bandwidth.
+     * This will be {@link #INVALID} if the network is not connected
+     */
+    private int mPrimaryDownlinkCapacityKbps;
+
+    /**
+     * Estimated uplink capacity in kbps of the primary carrier.
+     * This bandwidth estimate shall be the estimated maximum sustainable link bandwidth.
+     * This will be {@link #INVALID} if the network is not connected
+     */
+    private int mPrimaryUplinkCapacityKbps;
+
+    /**
+     * Estimated downlink capacity in kbps of the secondary carrier in a dual connected network.
+     * This bandwidth estimate shall be the estimated maximum sustainable link bandwidth.
+     * This will be {@link #INVALID} if the network is not connected
+     */
+    private int mSecondaryDownlinkCapacityKbps;
+
+    /**
+     * Estimated uplink capacity in kbps of the secondary carrier in a dual connected network.
+     * This bandwidth estimate shall be the estimated maximum sustainable link bandwidth.
+     * This will be {@link #INVALID} if the network is not connected
+     */
+    private int mSecondaryUplinkCapacityKbps;
+
+    /** @hide **/
+    public CarrierBandwidth(Parcel in) {
+        mPrimaryDownlinkCapacityKbps = in.readInt();
+        mPrimaryUplinkCapacityKbps = in.readInt();
+        mSecondaryDownlinkCapacityKbps = in.readInt();
+        mSecondaryUplinkCapacityKbps = in.readInt();
+    }
+
+    /** @hide **/
+    public CarrierBandwidth() {
+        mPrimaryDownlinkCapacityKbps = INVALID;
+        mPrimaryUplinkCapacityKbps = INVALID;
+        mSecondaryDownlinkCapacityKbps = INVALID;
+        mSecondaryUplinkCapacityKbps = INVALID;
+    }
+
+    /**
+     * Constructor.
+     *
+     * @param primaryDownlinkCapacityKbps Estimated downlink capacity in kbps of
+     *        the primary carrier.
+     * @param primaryUplinkCapacityKbps Estimated uplink capacity in kbps of
+     *        the primary carrier.
+     * @param secondaryDownlinkCapacityKbps Estimated downlink capacity in kbps of
+     *        the secondary carrier
+     * @param secondaryUplinkCapacityKbps Estimated uplink capacity in kbps of
+     *        the secondary carrier
+     */
+    public CarrierBandwidth(int primaryDownlinkCapacityKbps, int primaryUplinkCapacityKbps,
+            int secondaryDownlinkCapacityKbps, int secondaryUplinkCapacityKbps) {
+        mPrimaryDownlinkCapacityKbps = primaryDownlinkCapacityKbps;
+        mPrimaryUplinkCapacityKbps = primaryUplinkCapacityKbps;
+        mSecondaryDownlinkCapacityKbps = secondaryDownlinkCapacityKbps;
+        mSecondaryUplinkCapacityKbps = secondaryUplinkCapacityKbps;
+    }
+
+    /**
+     * Retrieves the upstream bandwidth for the primary network in Kbps.  This always only refers to
+     * the estimated first hop transport bandwidth.
+     * This will be INVALID if the network is not connected
+     *
+     * @return The estimated first hop upstream (device to network) bandwidth.
+     */
+    public int getPrimaryDownlinkCapacityKbps() {
+        return mPrimaryDownlinkCapacityKbps;
+    }
+
+    /**
+     * Retrieves the downstream bandwidth for the primary network in Kbps.  This always only refers
+     * to the estimated first hop transport bandwidth.
+     * This will be INVALID if the network is not connected
+     *
+     * @return The estimated first hop downstream (network to device) bandwidth.
+     */
+    public int getPrimaryUplinkCapacityKbps() {
+        return mPrimaryUplinkCapacityKbps;
+    }
+
+    /**
+     * Retrieves the upstream bandwidth for the secondary network in Kbps.  This always only refers
+     * to the estimated first hop transport bandwidth.
+     * This will be INVALID if the network is not connected
+     *
+     * @return The estimated first hop upstream (device to network) bandwidth.
+     */
+    public int getSecondaryDownlinkCapacityKbps() {
+        return mSecondaryDownlinkCapacityKbps;
+    }
+
+    /**
+     * Retrieves the downstream bandwidth for the secondary network in Kbps.  This always only
+     * refers to the estimated first hop transport bandwidth.
+     * This will be INVALID if the network is not connected
+     *
+     * @return The estimated first hop downstream (network to device) bandwidth.
+     */
+    public int getSecondaryUplinkCapacityKbps() {
+        return mSecondaryUplinkCapacityKbps;
+    }
+
+    @NonNull
+    @Override
+    public String toString() {
+        return "CarrierBandwidth: {primaryDownlinkCapacityKbps=" + mPrimaryDownlinkCapacityKbps
+                + " primaryUplinkCapacityKbps=" + mPrimaryUplinkCapacityKbps
+                + " secondaryDownlinkCapacityKbps=" + mSecondaryDownlinkCapacityKbps
+                + " secondaryUplinkCapacityKbps=" + mSecondaryUplinkCapacityKbps
+                + "}";
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(
+                mPrimaryDownlinkCapacityKbps,
+                mPrimaryUplinkCapacityKbps,
+                mSecondaryDownlinkCapacityKbps,
+                mSecondaryUplinkCapacityKbps);
+    }
+
+    @Override
+    public boolean equals(@Nullable Object o) {
+        if (o == null || !(o instanceof CallQuality) || hashCode() != o.hashCode()) {
+            return false;
+        }
+        if (this == o) {
+            return true;
+        }
+        CarrierBandwidth s = (CarrierBandwidth) o;
+        return (mPrimaryDownlinkCapacityKbps == s.mPrimaryDownlinkCapacityKbps
+                && mPrimaryUplinkCapacityKbps == s.mPrimaryUplinkCapacityKbps
+                && mSecondaryDownlinkCapacityKbps == s.mSecondaryDownlinkCapacityKbps
+                && mSecondaryDownlinkCapacityKbps == s.mSecondaryDownlinkCapacityKbps);
+    }
+
+    /**
+     * {@link Parcelable#describeContents}
+     */
+    public int describeContents() {
+        return 0;
+    }
+
+    /**
+     * {@link Parcelable#writeToParcel}
+     * @hide
+     */
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeInt(mPrimaryDownlinkCapacityKbps);
+        dest.writeInt(mPrimaryUplinkCapacityKbps);
+        dest.writeInt(mSecondaryDownlinkCapacityKbps);
+        dest.writeInt(mSecondaryUplinkCapacityKbps);
+    }
+
+    public static final @android.annotation.NonNull Parcelable.Creator<CarrierBandwidth> CREATOR =
+            new Parcelable.Creator() {
+            public CarrierBandwidth createFromParcel(Parcel in) {
+                return new CarrierBandwidth(in);
+            }
+
+            public CarrierBandwidth[] newArray(int size) {
+                return new CarrierBandwidth[size];
+            }
+    };
+}
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
old mode 100755
new mode 100644
index f2dae23..92febd9
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -23,10 +23,10 @@
 import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.ComponentName;
 import android.content.Context;
+import android.os.Build;
 import android.os.PersistableBundle;
 import android.os.RemoteException;
 import android.service.carrier.CarrierService;
@@ -79,6 +79,30 @@
      */
     public static final int SERVICE_CLASS_VOICE = ImsSsData.SERVICE_CLASS_VOICE;
 
+    /**
+     * Only send USSD over IMS while CS is out of service, otherwise send USSD over CS.
+     * {@link #KEY_CARRIER_USSD_METHOD_INT}
+     */
+    public static final int USSD_OVER_CS_PREFERRED   = 0;
+
+    /**
+     * Send USSD over IMS or CS while IMS is out of service or silent redial over CS if needed.
+     * {@link #KEY_CARRIER_USSD_METHOD_INT}
+     */
+    public static final int USSD_OVER_IMS_PREFERRED  = 1;
+
+    /**
+     * Only send USSD over CS.
+     * {@link #KEY_CARRIER_USSD_METHOD_INT}
+     */
+    public static final int USSD_OVER_CS_ONLY        = 2;
+
+    /**
+     * Only send USSD over IMS and disallow silent redial over CS.
+     * {@link #KEY_CARRIER_USSD_METHOD_INT}
+     */
+    public static final int USSD_OVER_IMS_ONLY       = 3;
+
     private final Context mContext;
 
     /**
@@ -584,6 +608,20 @@
     public static final String KEY_CARRIER_VT_AVAILABLE_BOOL = "carrier_vt_available_bool";
 
     /**
+     * Specify the method of selection for UE sending USSD requests. The default value is
+     * {@link #USSD_OVER_CS_PREFERRED}.
+     * <p> Available options:
+     * <ul>
+     *   <li>0: {@link #USSD_OVER_CS_PREFERRED} </li>
+     *   <li>1: {@link #USSD_OVER_IMS_PREFERRED} </li>
+     *   <li>2: {@link #USSD_OVER_CS_ONLY} </li>
+     *   <li>3: {@link #USSD_OVER_IMS_ONLY} </li>
+     * </ul>
+     */
+    public static final String KEY_CARRIER_USSD_METHOD_INT =
+            "carrier_ussd_method_int";
+
+    /**
      * Flag specifying whether to show an alert dialog for 5G disable when the user disables VoLTE.
      * By default this value is {@code false}.
      *
@@ -1703,6 +1741,15 @@
             "hide_lte_plus_data_icon_bool";
 
     /**
+     * The combined channel bandwidth threshold (non-inclusive) in KHz required to display the
+     * LTE+ data icon. It is 20000 by default, meaning the LTE+ icon will be shown if the device is
+     * using carrier aggregation and the combined channel bandwidth is strictly greater than 20 MHz.
+     * @hide
+     */
+    public static final String KEY_LTE_PLUS_THRESHOLD_BANDWIDTH_KHZ_INT =
+            "lte_plus_threshold_bandwidth_khz_int";
+
+    /**
      * The string is used to filter redundant string from PLMN Network Name that's supplied by
      * specific carrier.
      *
@@ -2677,7 +2724,7 @@
      * Key identifying if voice call barring notification is required to be shown to the user.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String KEY_DISABLE_VOICE_BARRING_NOTIFICATION_BOOL =
             "disable_voice_barring_notification_bool";
 
@@ -3786,11 +3833,26 @@
         public static final String KEY_WIFI_OFF_DEFERRING_TIME_MILLIS_INT =
                 KEY_PREFIX + "wifi_off_deferring_time_millis_int";
 
+        /**
+         * A boolean flag specifying whether or not this carrier requires one IMS registration for
+         * all IMS services (MMTEL and RCS).
+         * <p>
+         * If set to {@code true}, the IMS Service must use one IMS registration for all IMS
+         * services. If set to {@code false}, IMS services may use separate IMS registrations for
+         * MMTEL and RCS.
+         * <p>
+         * The default value for this configuration is {@code false}.
+         * @see android.telephony.ims.SipDelegateManager
+         */
+        public static final String KEY_IMS_SINGLE_REGISTRATION_REQUIRED_BOOL =
+                KEY_PREFIX + "ims_single_registration_required_bool";
+
         private Ims() {}
 
         private static PersistableBundle getDefaults() {
             PersistableBundle defaults = new PersistableBundle();
             defaults.putInt(KEY_WIFI_OFF_DEFERRING_TIME_MILLIS_INT, 4000);
+            defaults.putBoolean(KEY_IMS_SINGLE_REGISTRATION_REQUIRED_BOOL, false);
             return defaults;
         }
     }
@@ -3923,6 +3985,16 @@
     public static final String KEY_DEFAULT_PREFERRED_APN_NAME_STRING =
             "default_preferred_apn_name_string";
 
+    /**
+     * For Android 11, provide a temporary solution for OEMs to use the lower of the two MTU values
+     * for IPv4 and IPv6 if both are sent.
+     * TODO: remove in later release
+     *
+     * @hide
+     */
+    public static final String KEY_USE_LOWER_MTU_VALUE_IF_BOTH_RECEIVED =
+            "use_lower_mtu_value_if_both_received";
+
     /** The default value for every variable. */
     private final static PersistableBundle sDefaults;
 
@@ -3944,6 +4016,7 @@
         sDefaults.putBoolean(KEY_CARRIER_SETTINGS_ENABLE_BOOL, false);
         sDefaults.putBoolean(KEY_CARRIER_VOLTE_AVAILABLE_BOOL, false);
         sDefaults.putBoolean(KEY_CARRIER_VT_AVAILABLE_BOOL, false);
+        sDefaults.putInt(KEY_CARRIER_USSD_METHOD_INT, USSD_OVER_CS_PREFERRED);
         sDefaults.putBoolean(KEY_VOLTE_5G_LIMITED_ALERT_DIALOG_BOOL, false);
         sDefaults.putBoolean(KEY_NOTIFY_HANDOVER_VIDEO_FROM_WIFI_TO_LTE_BOOL, false);
         sDefaults.putBoolean(KEY_ALLOW_MERGING_RTT_CALLS_BOOL, false);
@@ -4293,6 +4366,7 @@
         sDefaults.putString(KEY_OPERATOR_NAME_FILTER_PATTERN_STRING, "");
         sDefaults.putString(KEY_SHOW_CARRIER_DATA_ICON_PATTERN_STRING, "");
         sDefaults.putBoolean(KEY_HIDE_LTE_PLUS_DATA_ICON_BOOL, true);
+        sDefaults.putInt(KEY_LTE_PLUS_THRESHOLD_BANDWIDTH_KHZ_INT, 20000);
         sDefaults.putBoolean(KEY_NR_ENABLED_BOOL, true);
         sDefaults.putBoolean(KEY_LTE_ENABLED_BOOL, true);
         sDefaults.putBoolean(KEY_SUPPORT_TDSCDMA_BOOL, false);
@@ -4440,7 +4514,7 @@
                 });
         sDefaults.putBoolean(KEY_SUPPORT_WPS_OVER_IMS_BOOL, true);
         sDefaults.putAll(Ims.getDefaults());
-        sDefaults.putStringArray(KEY_CARRIER_CERTIFICATE_STRING_ARRAY, null);
+        sDefaults.putStringArray(KEY_CARRIER_CERTIFICATE_STRING_ARRAY, new String[0]);
          sDefaults.putBoolean(KEY_FORMAT_INCOMING_NUMBER_TO_NATIONAL_FOR_JP_BOOL, false);
         sDefaults.putIntArray(KEY_DISCONNECT_CAUSE_PLAY_BUSYTONE_INT_ARRAY,
                 new int[] {4 /* BUSY */});
@@ -4463,6 +4537,7 @@
         sDefaults.putStringArray(KEY_MISSED_INCOMING_CALL_SMS_PATTERN_STRING_ARRAY, new String[0]);
         sDefaults.putBoolean(KEY_DISABLE_DUN_APN_WHILE_ROAMING_WITH_PRESET_APN_BOOL, false);
         sDefaults.putString(KEY_DEFAULT_PREFERRED_APN_NAME_STRING, "");
+        sDefaults.putBoolean(KEY_USE_LOWER_MTU_VALUE_IF_BOTH_RECEIVED, false);
     }
 
     /**
@@ -4543,7 +4618,6 @@
      */
     @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
     @SystemApi
-    @TestApi
     public void overrideConfig(int subscriptionId, @Nullable PersistableBundle overrideValues) {
         overrideConfig(subscriptionId, overrideValues, false);
     }
@@ -4718,7 +4792,7 @@
      */
     @NonNull
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public static PersistableBundle getDefaultConfig() {
         return new PersistableBundle(sDefaults);
     }
diff --git a/telephony/java/android/telephony/CdmaEriInformation.java b/telephony/java/android/telephony/CdmaEriInformation.java
deleted file mode 100644
index fd0b905..0000000
--- a/telephony/java/android/telephony/CdmaEriInformation.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/**
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.telephony;
-
-import android.annotation.IntDef;
-import android.annotation.NonNull;
-import android.annotation.SystemApi;
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/**
- * CDMA ERI (Enhanced Roaming Indicator) information.
- *
- * This contains the following ERI information
- *
- * 1. ERI (Enhanced Roaming Indicator) icon index. The number is assigned by
- *    3GPP2 C.R1001-H v1.0 Table 8.1-1. Additionally carriers define their own
- *    ERI icon index.
- * 2. CDMA ERI icon mode. This represents how the icon should be displayed.
- *    Its one of the following CDMA ERI icon mode
- *    {@link android.telephony.CdmaEriInformation#ERI_ICON_MODE_NORMAL}
- *    {@link android.telephony.CdmaEriInformation#ERI_ICON_MODE_FLASH}
- *
- * @hide
- */
-public final class CdmaEriInformation implements Parcelable {
-    /** @hide */
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef(prefix = {"ERI_"}, value = {
-                ERI_ON,
-                ERI_OFF,
-                ERI_FLASH
-            })
-    public @interface EriIconIndex {}
-
-    /**
-     * ERI (Enhanced Roaming Indicator) is ON i.e value 0 defined by
-     * 3GPP2 C.R1001-H v1.0 Table 8.1-1.
-     */
-    public static final int ERI_ON = 0;
-
-    /**
-     * ERI (Enhanced Roaming Indicator) is OFF i.e value 1 defined by
-     * 3GPP2 C.R1001-H v1.0 Table 8.1-1.
-     */
-    public static final int ERI_OFF = 1;
-
-    /**
-     * ERI (Enhanced Roaming Indicator) is FLASH i.e value 2 defined by
-     * 3GPP2 C.R1001-H v1.0 Table 8.1-1.
-     */
-    public static final int ERI_FLASH = 2;
-
-    /** @hide */
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef(prefix = {"ERI_ICON_MODE_"}, value = {
-                ERI_ICON_MODE_NORMAL,
-                ERI_ICON_MODE_FLASH
-            })
-    public @interface EriIconMode {}
-
-    /**
-     * ERI (Enhanced Roaming Indicator) icon mode is normal. This constant represents that
-     * the ERI icon should be displayed normally.
-     *
-     * Note: ERI is defined 3GPP2 C.R1001-H Table 8.1-1
-     */
-    public static final int ERI_ICON_MODE_NORMAL = 0;
-
-    /**
-     * ERI (Enhanced Roaming Indicator) icon mode flash. This constant represents that
-     * the ERI icon should be flashing.
-     *
-     * Note: ERI is defined 3GPP2 C.R1001-H Table 8.1-1
-     */
-    public static final int ERI_ICON_MODE_FLASH = 1;
-
-    private @EriIconIndex int mIconIndex;
-    private @EriIconMode int mIconMode;
-
-    /**
-     * Creates CdmaEriInformation from iconIndex and iconMode
-     *
-     * @hide
-     */
-    public CdmaEriInformation(@EriIconIndex int iconIndex, @EriIconMode int iconMode) {
-        mIconIndex = iconIndex;
-        mIconMode = iconMode;
-    }
-
-    /** Gets the ERI icon index */
-    public @EriIconIndex int getEriIconIndex() {
-        return mIconIndex;
-    }
-
-    /**
-     * Sets the ERI icon index
-     *
-     * @hide
-     */
-    public void setEriIconIndex(@EriIconIndex int iconIndex) {
-        mIconIndex = iconIndex;
-    }
-
-    /** Gets the ERI icon mode */
-    public @EriIconMode int getEriIconMode() {
-        return mIconMode;
-    }
-
-    /**
-     * Sets the ERI icon mode
-     *
-     * @hide
-     */
-    public void setEriIconMode(@EriIconMode int iconMode) {
-        mIconMode = iconMode;
-    }
-    /** Implement the Parcelable interface */
-    @Override
-    public void writeToParcel(@NonNull Parcel dest, int flags) {
-        dest.writeInt(mIconIndex);
-        dest.writeInt(mIconMode);
-    }
-
-    /** Implement the Parcelable interface */
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    /**
-     * Construct a CdmaEriInformation object from the given parcel
-     */
-    private CdmaEriInformation(Parcel in) {
-        mIconIndex = in.readInt();
-        mIconMode = in.readInt();
-    }
-
-    /** Implement the Parcelable interface */
-    public static final @android.annotation.NonNull Parcelable.Creator<CdmaEriInformation> CREATOR =
-            new Parcelable.Creator<CdmaEriInformation>() {
-        @Override
-        public CdmaEriInformation createFromParcel(Parcel in) {
-            return new CdmaEriInformation(in);
-        }
-
-        @Override
-        public CdmaEriInformation[] newArray(int size) {
-            return new CdmaEriInformation[size];
-        }
-    };
-}
diff --git a/telephony/java/android/telephony/CellIdentityGsm.java b/telephony/java/android/telephony/CellIdentityGsm.java
index 849c613..376a5be 100644
--- a/telephony/java/android/telephony/CellIdentityGsm.java
+++ b/telephony/java/android/telephony/CellIdentityGsm.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.telephony.gsm.GsmCellLocation;
 import android.text.TextUtils;
@@ -56,7 +57,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public CellIdentityGsm() {
         super(TAG, CellInfo.TYPE_GSM, null, null, null, null);
         mLac = CellInfo.UNAVAILABLE;
diff --git a/telephony/java/android/telephony/CellIdentityLte.java b/telephony/java/android/telephony/CellIdentityLte.java
index e6279dc..bcf58e5 100644
--- a/telephony/java/android/telephony/CellIdentityLte.java
+++ b/telephony/java/android/telephony/CellIdentityLte.java
@@ -65,7 +65,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public CellIdentityLte() {
         super(TAG, CellInfo.TYPE_LTE, null, null, null, null);
         mCi = CellInfo.UNAVAILABLE;
diff --git a/telephony/java/android/telephony/CellIdentityNr.java b/telephony/java/android/telephony/CellIdentityNr.java
index 067b98a..3923c756 100644
--- a/telephony/java/android/telephony/CellIdentityNr.java
+++ b/telephony/java/android/telephony/CellIdentityNr.java
@@ -37,7 +37,7 @@
     private static final String TAG = "CellIdentityNr";
 
     private static final int MAX_PCI = 1007;
-    private static final int MAX_TAC = 65535;
+    private static final int MAX_TAC = 16777215; // 0xffffff
     private static final int MAX_NRARFCN = 3279165;
     private static final long MAX_NCI = 68719476735L;
 
@@ -65,7 +65,7 @@
     /**
      *
      * @param pci Physical Cell Id in range [0, 1007].
-     * @param tac 16-bit Tracking Area Code.
+     * @param tac 24-bit Tracking Area Code.
      * @param nrArfcn NR Absolute Radio Frequency Channel Number, in range [0, 3279165].
      * @param bands Bands used by the cell. Band number defined in 3GPP TS 38.101-1 and TS 38.101-2.
      * @param mccStr 3-digit Mobile Country Code in string format.
@@ -138,7 +138,11 @@
     @NonNull
     @Override
     public CellLocation asCellLocation() {
-        return new GsmCellLocation();
+        GsmCellLocation cl = new GsmCellLocation();
+        int tac = mTac != CellInfo.UNAVAILABLE ? mTac : -1;
+        cl.setLacAndCid(tac, -1);
+        cl.setPsc(0);
+        return cl;
     }
 
     @Override
@@ -211,9 +215,9 @@
 
     /**
      * Get the tracking area code.
-     * @return a 16 bit integer or {@link CellInfo#UNAVAILABLE} if unknown.
+     * @return a 24 bit integer or {@link CellInfo#UNAVAILABLE} if unknown.
      */
-    @IntRange(from = 0, to = 65535)
+    @IntRange(from = 0, to = 16777215)
     public int getTac() {
         return mTac;
     }
diff --git a/telephony/java/android/telephony/CellInfoCdma.java b/telephony/java/android/telephony/CellInfoCdma.java
index 1bef681..3ce99fa 100644
--- a/telephony/java/android/telephony/CellInfoCdma.java
+++ b/telephony/java/android/telephony/CellInfoCdma.java
@@ -36,7 +36,7 @@
     private CellSignalStrengthCdma mCellSignalStrengthCdma;
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public CellInfoCdma() {
         super();
         mCellIdentityCdma = new CellIdentityCdma();
diff --git a/telephony/java/android/telephony/CellInfoGsm.java b/telephony/java/android/telephony/CellInfoGsm.java
index c19521f..e296e61 100644
--- a/telephony/java/android/telephony/CellInfoGsm.java
+++ b/telephony/java/android/telephony/CellInfoGsm.java
@@ -18,6 +18,7 @@
 
 import android.annotation.NonNull;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -35,7 +36,7 @@
     private CellSignalStrengthGsm mCellSignalStrengthGsm;
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public CellInfoGsm() {
         super();
         mCellIdentityGsm = new CellIdentityGsm();
diff --git a/telephony/java/android/telephony/CellInfoLte.java b/telephony/java/android/telephony/CellInfoLte.java
index 320925e..6f81234 100644
--- a/telephony/java/android/telephony/CellInfoLte.java
+++ b/telephony/java/android/telephony/CellInfoLte.java
@@ -39,7 +39,7 @@
     private CellConfigLte mCellConfig;
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public CellInfoLte() {
         super();
         mCellIdentityLte = new CellIdentityLte();
diff --git a/telephony/java/android/telephony/CellLocation.java b/telephony/java/android/telephony/CellLocation.java
index cdf7351..e595002 100644
--- a/telephony/java/android/telephony/CellLocation.java
+++ b/telephony/java/android/telephony/CellLocation.java
@@ -29,7 +29,10 @@
 
 /**
  * Abstract class that represents the location of the device.  {@more}
+ *
+ * @deprecated use {@link android.telephony.CellIdentity CellIdentity}.
  */
+@Deprecated
 public abstract class CellLocation {
 
     /**
@@ -95,12 +98,14 @@
     /**
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract void fillInNotifierBundle(Bundle bundle);
 
     /**
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract boolean isEmpty();
 
@@ -108,6 +113,7 @@
      * Invalidate this object.  The location area code and the cell id are set to -1.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract void setStateInvalid();
 
     /**
diff --git a/telephony/java/android/telephony/CellSignalStrength.java b/telephony/java/android/telephony/CellSignalStrength.java
index 2e7bde3..e089657 100644
--- a/telephony/java/android/telephony/CellSignalStrength.java
+++ b/telephony/java/android/telephony/CellSignalStrength.java
@@ -17,6 +17,7 @@
 package android.telephony;
 
 import android.annotation.IntRange;
+import android.annotation.SystemApi;
 import android.os.PersistableBundle;
 
 /**
@@ -155,11 +156,12 @@
 
     /**
      * Returns the number of signal strength levels.
-     * @return Number of signal strength levels, enforced to be 5
+     * @return Number of signal strength levels, currently defined in the HAL as 5.
      *
      * @hide
      */
-    public static final int getNumSignalStrengthLevels() {
+    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
+    public static int getNumSignalStrengthLevels() {
         return NUM_SIGNAL_STRENGTH_BINS;
     }
 }
diff --git a/telephony/java/android/telephony/CellSignalStrengthGsm.java b/telephony/java/android/telephony/CellSignalStrengthGsm.java
index 9d55f10..51e1ebc 100644
--- a/telephony/java/android/telephony/CellSignalStrengthGsm.java
+++ b/telephony/java/android/telephony/CellSignalStrengthGsm.java
@@ -53,7 +53,7 @@
     private int mLevel;
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public CellSignalStrengthGsm() {
         setDefaultValues();
     }
@@ -158,7 +158,8 @@
      *
      * Asu is calculated based on 3GPP RSSI. Refer to 3GPP 27.007 (Ver 10.3.0) Sec 8.69
      *
-     * @return RSSI in ASU 0..31, 99, or UNAVAILABLE
+     * @return RSSI in ASU 0..31, 99, or
+     *         {@link android.telephony.CellInfo#UNAVAILABLE UNAVAILABLE}.
      */
     @Override
     public int getAsuLevel() {
diff --git a/telephony/java/android/telephony/CellSignalStrengthLte.java b/telephony/java/android/telephony/CellSignalStrengthLte.java
index c26936e..47a8f72 100644
--- a/telephony/java/android/telephony/CellSignalStrengthLte.java
+++ b/telephony/java/android/telephony/CellSignalStrengthLte.java
@@ -18,6 +18,7 @@
 
 import android.annotation.IntRange;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.PersistableBundle;
@@ -107,7 +108,7 @@
     private int mParametersUseForLevel;
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public CellSignalStrengthLte() {
         setDefaultValues();
     }
diff --git a/telephony/java/android/telephony/DataSpecificRegistrationInfo.java b/telephony/java/android/telephony/DataSpecificRegistrationInfo.java
index e91d6fc9..597fe8f 100644
--- a/telephony/java/android/telephony/DataSpecificRegistrationInfo.java
+++ b/telephony/java/android/telephony/DataSpecificRegistrationInfo.java
@@ -19,7 +19,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -31,7 +30,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class DataSpecificRegistrationInfo implements Parcelable {
     /**
      * @hide
diff --git a/telephony/java/android/telephony/ImsManager.java b/telephony/java/android/telephony/ImsManager.java
index 3984bd7..42d7707 100644
--- a/telephony/java/android/telephony/ImsManager.java
+++ b/telephony/java/android/telephony/ImsManager.java
@@ -19,9 +19,15 @@
 import android.annotation.NonNull;
 import android.annotation.SdkConstant;
 import android.annotation.SuppressLint;
+import android.annotation.SystemApi;
 import android.annotation.SystemService;
 import android.content.Context;
+import android.telephony.BinderCacheManager;
 import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyFrameworkInitializer;
+import android.telephony.ims.aidl.IImsRcsController;
+
+import com.android.internal.telephony.ITelephony;
 
 /**
  * Provides access to information about Telephony IMS services on the device.
@@ -29,8 +35,6 @@
 @SystemService(Context.TELEPHONY_IMS_SERVICE)
 public class ImsManager {
 
-    private Context mContext;
-
     /**
      * <p>Broadcast Action: Indicates that a previously allowed IMS operation was rejected by the
      * network due to the network returning a "forbidden" response. This may be due to a
@@ -86,6 +90,14 @@
     public static final String EXTRA_WFC_REGISTRATION_FAILURE_MESSAGE =
             "android.telephony.ims.extra.WFC_REGISTRATION_FAILURE_MESSAGE";
 
+    // Cache Telephony Binder interfaces, one cache per process.
+    private static final BinderCacheManager<ITelephony> sTelephonyCache =
+            new BinderCacheManager<>(ImsManager::getITelephonyInterface);
+    private static final BinderCacheManager<IImsRcsController> sRcsCache =
+            new BinderCacheManager<>(ImsManager::getIImsRcsControllerInterface);
+
+    private final Context mContext;
+
     /**
      * Use {@link Context#getSystemService(String)} to get an instance of this class.
      * @hide
@@ -107,7 +119,7 @@
             throw new IllegalArgumentException("Invalid subscription ID: " + subscriptionId);
         }
 
-        return new ImsRcsManager(mContext, subscriptionId);
+        return new ImsRcsManager(mContext, subscriptionId, sRcsCache);
     }
 
     /**
@@ -123,6 +135,44 @@
             throw new IllegalArgumentException("Invalid subscription ID: " + subscriptionId);
         }
 
-        return new ImsMmTelManager(subscriptionId);
+        return new ImsMmTelManager(subscriptionId, sTelephonyCache);
+    }
+
+    /**
+     * Create an instance of {@link SipDelegateManager} for the subscription id specified.
+     * <p>
+     * Allows an IMS application to forward SIP traffic through the device's IMS service,
+     * which is used for cellular carriers that require the device to share a single IMS
+     * registration for both MMTEL and RCS features.
+     * @param subscriptionId The ID of the subscription that this {@link SipDelegateManager} will
+     *                       be bound to.
+     * @throws IllegalArgumentException if the subscription is invalid.
+     * @return a {@link SipDelegateManager} instance for the specified subscription ID.
+     * @hide
+     */
+    @SystemApi
+    @NonNull
+    public SipDelegateManager getSipDelegateManager(int subscriptionId) {
+        if (!SubscriptionManager.isValidSubscriptionId(subscriptionId)) {
+            throw new IllegalArgumentException("Invalid subscription ID: " + subscriptionId);
+        }
+
+        return new SipDelegateManager(mContext, subscriptionId, sRcsCache);
+    }
+
+    private static IImsRcsController getIImsRcsControllerInterface() {
+        return IImsRcsController.Stub.asInterface(
+                TelephonyFrameworkInitializer
+                        .getTelephonyServiceManager()
+                        .getTelephonyImsServiceRegisterer()
+                        .get());
+    }
+
+    private static ITelephony getITelephonyInterface() {
+        return ITelephony.Stub.asInterface(
+                TelephonyFrameworkInitializer
+                        .getTelephonyServiceManager()
+                        .getTelephonyServiceRegisterer()
+                        .get());
     }
 }
diff --git a/telephony/java/android/telephony/LteVopsSupportInfo.java b/telephony/java/android/telephony/LteVopsSupportInfo.java
index 7994c1b..83e41bf 100644
--- a/telephony/java/android/telephony/LteVopsSupportInfo.java
+++ b/telephony/java/android/telephony/LteVopsSupportInfo.java
@@ -20,7 +20,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -33,7 +32,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class LteVopsSupportInfo implements Parcelable {
 
     /**@hide*/
diff --git a/telephony/java/android/telephony/NetworkRegistrationInfo.java b/telephony/java/android/telephony/NetworkRegistrationInfo.java
index aee1e84..8507d85 100644
--- a/telephony/java/android/telephony/NetworkRegistrationInfo.java
+++ b/telephony/java/android/telephony/NetworkRegistrationInfo.java
@@ -20,7 +20,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.telephony.AccessNetworkConstants.TransportType;
@@ -71,37 +71,37 @@
      * Not registered. The device is not currently searching a new operator to register.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public static final int REGISTRATION_STATE_NOT_REGISTERED_OR_SEARCHING = 0;
     /**
      * Registered on home network.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public static final int REGISTRATION_STATE_HOME = 1;
     /**
      * Not registered. The device is currently searching a new operator to register.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public static final int REGISTRATION_STATE_NOT_REGISTERED_SEARCHING = 2;
     /**
      * Registration denied.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public static final int REGISTRATION_STATE_DENIED = 3;
     /**
      * Registration state is unknown.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public static final int REGISTRATION_STATE_UNKNOWN = 4;
     /**
      * Registered on roaming network.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public static final int REGISTRATION_STATE_ROAMING = 5;
 
     /** @hide */
@@ -370,7 +370,6 @@
      * Get the 5G NR connection state.
      *
      * @return the 5G NR connection state.
-     * @hide
      */
     public @NRState int getNrState() {
         return mNrState;
@@ -386,7 +385,7 @@
      *
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public @RegistrationState int getRegistrationState() {
         return mRegistrationState;
     }
@@ -451,7 +450,7 @@
      * @return the current network roaming type.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public @ServiceState.RoamingType int getRoamingType() {
         return mRoamingType;
     }
@@ -460,7 +459,7 @@
      * @return Whether emergency is enabled.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public boolean isEmergencyEnabled() { return mEmergencyOnly; }
 
     /**
@@ -498,7 +497,7 @@
      * 10.5.3.6 for UMTS, 3GPP TS 24.301 9.9.3.9 for LTE, and 3GPP2 A.S0001 6.2.2.44 for CDMA
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public int getRejectCause() {
         return mRejectCause;
     }
@@ -545,7 +544,7 @@
      * @hide
      */
     @Nullable
-    @SystemApi @TestApi
+    @SystemApi
     public DataSpecificRegistrationInfo getDataSpecificInfo() {
         return mDataSpecificInfo;
     }
@@ -637,7 +636,8 @@
                 .append(" cellIdentity=").append(mCellIdentity)
                 .append(" voiceSpecificInfo=").append(mVoiceSpecificInfo)
                 .append(" dataSpecificInfo=").append(mDataSpecificInfo)
-                .append(" nrState=").append(nrStateToString(mNrState))
+                .append(" nrState=").append(Build.IS_DEBUGGABLE
+                        ? nrStateToString(mNrState) : "****")
                 .append(" rRplmn=").append(mRplmn)
                 .append(" isUsingCarrierAggregation=").append(mIsUsingCarrierAggregation)
                 .append("}").toString();
@@ -680,7 +680,7 @@
      * @hide
      */
     @Override
-    @SystemApi @TestApi
+    @SystemApi
     public void writeToParcel(Parcel dest, int flags) {
         dest.writeInt(mDomain);
         dest.writeInt(mTransportType);
@@ -772,7 +772,7 @@
      * </code></pre>
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public static final class Builder {
         @Domain
         private int mDomain;
@@ -877,7 +877,7 @@
          * @return The same instance of the builder.
          * @hide
          */
-        @SystemApi @TestApi
+        @SystemApi
         public @NonNull Builder setEmergencyOnly(boolean emergencyOnly) {
             mEmergencyOnly = emergencyOnly;
             return this;
@@ -891,7 +891,7 @@
          * @return The same instance of the builder.
          * @hide
          */
-        @SystemApi @TestApi
+        @SystemApi
         public @NonNull Builder setAvailableServices(
                 @NonNull @ServiceType List<Integer> availableServices) {
             mAvailableServices = availableServices;
@@ -906,7 +906,7 @@
          * @return The same instance of the builder.
          * @hide
          */
-        @SystemApi @TestApi
+        @SystemApi
         public @NonNull Builder setCellIdentity(@Nullable CellIdentity cellIdentity) {
             mCellIdentity = cellIdentity;
             return this;
@@ -929,7 +929,7 @@
          * @return the NetworkRegistrationInfo object.
          * @hide
          */
-        @SystemApi @TestApi
+        @SystemApi
         public @NonNull NetworkRegistrationInfo build() {
             return new NetworkRegistrationInfo(mDomain, mTransportType, mRegistrationState,
                     mAccessNetworkTechnology, mRejectCause, mEmergencyOnly, mAvailableServices,
diff --git a/telephony/java/android/telephony/PhoneNumberFormattingTextWatcher.java b/telephony/java/android/telephony/PhoneNumberFormattingTextWatcher.java
index d4ed860..24dfbd0 100644
--- a/telephony/java/android/telephony/PhoneNumberFormattingTextWatcher.java
+++ b/telephony/java/android/telephony/PhoneNumberFormattingTextWatcher.java
@@ -17,6 +17,7 @@
 package android.telephony;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.text.Editable;
 import android.text.Selection;
 import android.text.TextWatcher;
@@ -50,7 +51,7 @@
      */
     private boolean mStopFormatting;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private AsYouTypeFormatter mFormatter;
 
     /**
diff --git a/telephony/java/android/telephony/PhoneNumberUtils.java b/telephony/java/android/telephony/PhoneNumberUtils.java
index ec99408..ed09d53 100644
--- a/telephony/java/android/telephony/PhoneNumberUtils.java
+++ b/telephony/java/android/telephony/PhoneNumberUtils.java
@@ -27,6 +27,7 @@
 import android.content.res.Resources;
 import android.database.Cursor;
 import android.net.Uri;
+import android.os.Build;
 import android.os.PersistableBundle;
 import android.provider.Contacts;
 import android.provider.ContactsContract;
@@ -1832,7 +1833,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @Deprecated
     public static boolean isPotentialEmergencyNumber(int subId, String number) {
         // Check against the emergency numbers listed by the RIL / SIM,
@@ -2108,7 +2109,7 @@
      * @hide
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static boolean isPotentialLocalEmergencyNumber(Context context, String number) {
         return isPotentialLocalEmergencyNumber(context, getDefaultVoiceSubId(), number);
     }
@@ -2138,7 +2139,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @Deprecated
     public static boolean isPotentialLocalEmergencyNumber(Context context, int subId,
             String number) {
@@ -2239,7 +2240,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static boolean isVoiceMailNumber(@NonNull Context context, int subId,
             @Nullable String number) {
         String vmNumber, mdn;
@@ -2728,7 +2728,6 @@
      * @return true if number contains @
      */
     @SystemApi
-    @TestApi
     public static boolean isUriNumber(@Nullable String number) {
         // Note we allow either "@" or "%40" to indicate a URI, in case
         // the passed-in string is URI-escaped.  (Neither "@" nor "%40"
@@ -2747,7 +2746,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public static @NonNull String getUsernameFromUriNumber(@NonNull String number) {
         // The delimiter between username and domain name can be
         // either "@" or "%40" (the URI-escaped equivalent.)
diff --git a/telephony/java/android/telephony/PinResult.java b/telephony/java/android/telephony/PinResult.java
index c2a4f33..b8c1ffe 100644
--- a/telephony/java/android/telephony/PinResult.java
+++ b/telephony/java/android/telephony/PinResult.java
@@ -19,6 +19,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.SystemApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -27,10 +28,16 @@
 import java.util.Objects;
 
 /**
- * Holds the result from a pin attempt.
+ * Holds the result from a PIN attempt.
+ *
+ * @see TelephonyManager#supplyIccLockPin
+ * @see TelephonyManager#supplyIccLockPuk
+ * @see TelephonyManager#setIccLockEnabled
+ * @see TelephonyManager#changeIccLockPin
  *
  * @hide
  */
+@SystemApi
 public final class PinResult implements Parcelable {
     /** @hide */
     @IntDef({
@@ -64,24 +71,24 @@
     private static final PinResult sFailedResult =
             new PinResult(PinResult.PIN_RESULT_TYPE_FAILURE, -1);
 
-    private final @PinResultType int mType;
+    private final @PinResultType int mResult;
 
     private final int mAttemptsRemaining;
 
     /**
-     * Returns either success, incorrect or failure.
+     * Returns the result of the PIN attempt.
      *
-     * @see #PIN_RESULT_TYPE_SUCCESS
-     * @see #PIN_RESULT_TYPE_INCORRECT
-     * @see #PIN_RESULT_TYPE_FAILURE
-     * @return The result type of the pin attempt.
+     * @return The result of the PIN attempt.
      */
-    public @PinResultType int getType() {
-        return mType;
+    public @PinResultType int getResult() {
+        return mResult;
     }
 
     /**
-     * The number of pin attempts remaining.
+     * Returns the number of PIN attempts remaining.
+     * This will be set when {@link #getResult} is {@link #PIN_RESULT_TYPE_INCORRECT}.
+     * Indicates the number of attempts at entering the PIN before the SIM will be locked and
+     * require a PUK unlock to be performed.
      *
      * @return Number of attempts remaining.
      */
@@ -89,22 +96,32 @@
         return mAttemptsRemaining;
     }
 
+    /**
+     * Used to indicate a failed PIN attempt result.
+     *
+     * @return default PinResult for failure.
+     *
+     * @hide
+     */
     @NonNull
     public static PinResult getDefaultFailedResult() {
         return sFailedResult;
     }
 
     /**
-     * PinResult constructor
+     * PinResult constructor.
      *
-     * @param type The type of pin result.
+     * @param result The pin result value.
      * @see #PIN_RESULT_TYPE_SUCCESS
      * @see #PIN_RESULT_TYPE_INCORRECT
      * @see #PIN_RESULT_TYPE_FAILURE
+     * @see #PIN_RESULT_TYPE_ABORTED
      * @param attemptsRemaining Number of pin attempts remaining.
+     *
+     * @hide
      */
-    public PinResult(@PinResultType int type, int attemptsRemaining) {
-        mType = type;
+    public PinResult(@PinResultType int result, int attemptsRemaining) {
+        mResult = result;
         mAttemptsRemaining = attemptsRemaining;
     }
 
@@ -114,7 +131,7 @@
      * @hide
      */
     private PinResult(Parcel in) {
-        mType = in.readInt();
+        mResult = in.readInt();
         mAttemptsRemaining = in.readInt();
     }
 
@@ -124,11 +141,11 @@
     @NonNull
     @Override
     public String toString() {
-        return "type: " + getType() + ", attempts remaining: " + getAttemptsRemaining();
+        return "result: " + getResult() + ", attempts remaining: " + getAttemptsRemaining();
     }
 
     /**
-     * Required to be Parcelable
+     * Describe the contents of this object.
      */
     @Override
     public int describeContents() {
@@ -136,15 +153,17 @@
     }
 
     /**
-     * Required to be Parcelable
+     * Write this object to a Parcel.
      */
     @Override
     public void writeToParcel(@NonNull Parcel out, int flags) {
-        out.writeInt(mType);
+        out.writeInt(mResult);
         out.writeInt(mAttemptsRemaining);
     }
 
-    /** Required to be Parcelable */
+    /**
+     * Parcel creator class.
+     */
     public static final @NonNull Parcelable.Creator<PinResult> CREATOR = new Creator<PinResult>() {
         public PinResult createFromParcel(Parcel in) {
             return new PinResult(in);
@@ -156,7 +175,7 @@
 
     @Override
     public int hashCode() {
-        return Objects.hash(mAttemptsRemaining, mType);
+        return Objects.hash(mAttemptsRemaining, mResult);
     }
 
     @Override
@@ -171,7 +190,7 @@
             return false;
         }
         PinResult other = (PinResult) obj;
-        return (mType == other.mType
+        return (mResult == other.mResult
                 && mAttemptsRemaining == other.mAttemptsRemaining);
     }
 }
diff --git a/telephony/java/android/telephony/PreciseDataConnectionState.java b/telephony/java/android/telephony/PreciseDataConnectionState.java
index b682bdd..9ea624b 100644
--- a/telephony/java/android/telephony/PreciseDataConnectionState.java
+++ b/telephony/java/android/telephony/PreciseDataConnectionState.java
@@ -28,11 +28,15 @@
 import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
+import android.telephony.AccessNetworkConstants.TransportType;
 import android.telephony.Annotation.ApnType;
 import android.telephony.Annotation.DataFailureCause;
 import android.telephony.Annotation.DataState;
 import android.telephony.Annotation.NetworkType;
 import android.telephony.data.ApnSetting;
+import android.telephony.data.DataCallResponse;
+
+import com.android.internal.telephony.util.TelephonyUtils;
 
 import java.util.Objects;
 
@@ -53,14 +57,13 @@
  *
  */
 public final class PreciseDataConnectionState implements Parcelable {
-
-    private @DataState int mState = TelephonyManager.DATA_UNKNOWN;
-    private @NetworkType int mNetworkType = TelephonyManager.NETWORK_TYPE_UNKNOWN;
-    private @DataFailureCause int mFailCause = DataFailCause.NONE;
-    private @ApnType int mApnTypes = ApnSetting.TYPE_NONE;
-    private String mApn = "";
-    private LinkProperties mLinkProperties = null;
-    private ApnSetting mApnSetting = null;
+    private final @TransportType int mTransportType;
+    private final int mId;
+    private final @DataState int mState;
+    private final @NetworkType int mNetworkType;
+    private final @DataFailureCause int mFailCause;
+    private final LinkProperties mLinkProperties;
+    private final ApnSetting mApnSetting;
 
     /**
      * Constructor
@@ -70,67 +73,61 @@
      */
     @TestApi
     @Deprecated
-    @UnsupportedAppUsage // (maxTargetSdk = Build.VERSION_CODES.Q)
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) // (maxTargetSdk = Build.VERSION_CODES.Q)
     // FIXME: figure out how to remove the UnsupportedAppUsage and delete this constructor
     public PreciseDataConnectionState(@DataState int state,
                                       @NetworkType int networkType,
                                       @ApnType int apnTypes, @NonNull String apn,
                                       @Nullable LinkProperties linkProperties,
                                       @DataFailureCause int failCause) {
-        this(state, networkType, apnTypes, apn, linkProperties, failCause, null);
+        this(AccessNetworkConstants.TRANSPORT_TYPE_INVALID, -1, state, networkType,
+                linkProperties, failCause, new ApnSetting.Builder()
+                        .setApnTypeBitmask(apnTypes)
+                        .setApnName(apn)
+                        .setEntryName(apn)
+                        .build());
     }
 
 
     /**
      * Constructor of PreciseDataConnectionState
      *
-     * @param state the state of the data connection
-     * @param networkType the access network that is/would carry this data connection
-     * @param apnTypes the APN types that this data connection carries
-     * @param apn the APN of this data connection
-     * @param linkProperties if the data connection is connected, the properties of the connection
-     * @param failCause in case a procedure related to this data connection fails, a non-zero error
+     * @param transportType The transport of the data connection
+     * @param id The id of the data connection
+     * @param state The state of the data connection
+     * @param networkType The access network that is/would carry this data connection
+     * @param linkProperties If the data connection is connected, the properties of the connection
+     * @param failCause In case a procedure related to this data connection fails, a non-zero error
      *        code indicating the cause of the failure.
-     * @param apnSetting if there is a valid APN for this Data Connection, then the APN Settings;
+     * @param apnSetting If there is a valid APN for this Data Connection, then the APN Settings;
      *        if there is no valid APN setting for the specific type, then this will be null
-     * @hide
      */
-    public PreciseDataConnectionState(@DataState int state,
-                                      @NetworkType int networkType,
-                                      @ApnType int apnTypes, @NonNull String apn,
-                                      @Nullable LinkProperties linkProperties,
-                                      @DataFailureCause int failCause,
-                                      @Nullable ApnSetting apnSetting) {
+    private PreciseDataConnectionState(@TransportType int transportType, int id,
+            @DataState int state, @NetworkType int networkType,
+            @Nullable LinkProperties linkProperties, @DataFailureCause int failCause,
+            @Nullable ApnSetting apnSetting) {
+        mTransportType = transportType;
+        mId = id;
         mState = state;
         mNetworkType = networkType;
-        mApnTypes = apnTypes;
-        mApn = apn;
         mLinkProperties = linkProperties;
         mFailCause = failCause;
         mApnSetting = apnSetting;
     }
 
     /**
-     * Empty Constructor
-     *
-     * @hide
-     */
-    public PreciseDataConnectionState() {
-    }
-
-    /**
      * Construct a PreciseDataConnectionState object from the given parcel.
      *
      * @hide
      */
     private PreciseDataConnectionState(Parcel in) {
+        mTransportType = in.readInt();
+        mId = in.readInt();
         mState = in.readInt();
         mNetworkType = in.readInt();
-        mApnTypes = in.readInt();
-        mApn = in.readString();
-        mLinkProperties = (LinkProperties) in.readParcelable(null);
+        mLinkProperties = in.readParcelable(LinkProperties.class.getClassLoader());
         mFailCause = in.readInt();
-        mApnSetting = (ApnSetting) in.readParcelable(null);
+        mApnSetting = in.readParcelable(ApnSetting.class.getClassLoader());
     }
 
     /**
@@ -160,29 +157,38 @@
     }
 
     /**
-     * Returns the high-level state of this data connection.
+     * @return The transport type of this data connection.
+     */
+    public @TransportType int getTransportType() {
+        return mTransportType;
+    }
+
+    /**
+     * @return The unique id of the data connection
+     *
+     * Note this is the id assigned in {@link DataCallResponse}.
+     * The id remains the same for data connection handover between
+     * {@link AccessNetworkConstants#TRANSPORT_TYPE_WLAN} and
+     * {@link AccessNetworkConstants#TRANSPORT_TYPE_WWAN}
+     *
+     * @hide
+     */
+    @SystemApi
+    public int getId() {
+        return mId;
+    }
+
+    /**
+     * @return The high-level state of this data connection.
      */
     public @DataState int getState() {
         return mState;
     }
 
     /**
-     * Returns the network type associated with this data connection.
+     * Get the network type associated with this data connection.
      *
-     * @deprecated use {@link getNetworkType()}
-     * @hide
-     * @removed Removed from the R preview SDK but was never part of the stable API surface.
-     */
-    @Deprecated
-    @SystemApi
-    public @NetworkType int getDataConnectionNetworkType() {
-        return mNetworkType;
-    }
-
-    /**
-     * Returns the network type associated with this data connection.
-     *
-     * Return the current/latest (radio) bearer technology that carries this data connection.
+     * @return The current/latest (radio) bearer technology that carries this data connection.
      * For a variety of reasons, the network type can change during the life of the data
      * connection, and this information is not reliable unless the physical link is currently
      * active; (there is currently no mechanism to know whether the physical link is active at
@@ -202,7 +208,7 @@
     @Deprecated
     @SystemApi
     public @ApnType int getDataConnectionApnTypeBitMask() {
-        return mApnTypes;
+        return (mApnSetting != null) ? mApnSetting.getApnTypeBitmask() : ApnSetting.TYPE_NONE;
     }
 
     /**
@@ -215,21 +221,7 @@
     @SystemApi
     @Deprecated
     public String getDataConnectionApn() {
-        return mApn;
-    }
-
-    /**
-     * Get the properties of the network link {@link LinkProperties}.
-     *
-     * @deprecated use {@link #getLinkProperties()}
-     * @hide
-     * @removed Removed from the R preview SDK but was never part of the stable API surface.
-     */
-    @Deprecated
-    @SystemApi
-    @Nullable
-    public LinkProperties getDataConnectionLinkProperties() {
-        return mLinkProperties;
+        return (mApnSetting != null) ? mApnSetting.getApnName() : "";
     }
 
     /**
@@ -265,7 +257,9 @@
     /**
      * Return the APN Settings for this data connection.
      *
-     * @return the ApnSetting that was used to configure this data connection.
+     * @return the ApnSetting that was used to configure this data connection. Note that a data
+     * connection cannot be established without a valid {@link ApnSetting}. The return value would
+     * never be {@code null} even though it has {@link Nullable} annotation.
      */
     public @Nullable ApnSetting getApnSetting() {
         return mApnSetting;
@@ -278,10 +272,10 @@
 
     @Override
     public void writeToParcel(@NonNull Parcel out, int flags) {
+        out.writeInt(mTransportType);
+        out.writeInt(mId);
         out.writeInt(mState);
         out.writeInt(mNetworkType);
-        out.writeInt(mApnTypes);
-        out.writeString(mApn);
         out.writeParcelable(mLinkProperties, flags);
         out.writeInt(mFailCause);
         out.writeParcelable(mApnSetting, flags);
@@ -301,24 +295,23 @@
 
     @Override
     public int hashCode() {
-        return Objects.hash(mState, mNetworkType, mApnTypes, mApn, mLinkProperties,
-                mFailCause, mApnSetting);
+        return Objects.hash(mTransportType, mId, mState, mNetworkType, mFailCause,
+                mLinkProperties, mApnSetting);
     }
 
+
     @Override
-    public boolean equals(@Nullable Object obj) {
-
-        if (!(obj instanceof PreciseDataConnectionState)) {
-            return false;
-        }
-
-        PreciseDataConnectionState other = (PreciseDataConnectionState) obj;
-        return Objects.equals(mApn, other.mApn) && mApnTypes == other.mApnTypes
-                && mFailCause == other.mFailCause
-                && Objects.equals(mLinkProperties, other.mLinkProperties)
-                && mNetworkType == other.mNetworkType
-                && mState == other.mState
-                && Objects.equals(mApnSetting, other.mApnSetting);
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        PreciseDataConnectionState that = (PreciseDataConnectionState) o;
+        return mTransportType == that.mTransportType
+                && mId == that.mId
+                && mState == that.mState
+                && mNetworkType == that.mNetworkType
+                && mFailCause == that.mFailCause
+                && Objects.equals(mLinkProperties, that.mLinkProperties)
+                && Objects.equals(mApnSetting, that.mApnSetting);
     }
 
     @NonNull
@@ -326,14 +319,137 @@
     public String toString() {
         StringBuilder sb = new StringBuilder();
 
-        sb.append("Data Connection state: " + mState);
-        sb.append(", Network type: " + mNetworkType);
-        sb.append(", APN types: " + ApnSetting.getApnTypesStringFromBitmask(mApnTypes));
-        sb.append(", APN: " + mApn);
-        sb.append(", Link properties: " + mLinkProperties);
-        sb.append(", Fail cause: " + DataFailCause.toString(mFailCause));
-        sb.append(", Apn Setting: " + mApnSetting);
+        sb.append(" state: " + TelephonyUtils.dataStateToString(mState));
+        sb.append(", transport: "
+                + AccessNetworkConstants.transportTypeToString(mTransportType));
+        sb.append(", id: " + mId);
+        sb.append(", network type: " + TelephonyManager.getNetworkTypeName(mNetworkType));
+        sb.append(", APN Setting: " + mApnSetting);
+        sb.append(", link properties: " + mLinkProperties);
+        sb.append(", fail cause: " + DataFailCause.toString(mFailCause));
 
         return sb.toString();
     }
+
+    /**
+     * {@link PreciseDataConnectionState} builder
+     *
+     * @hide
+     */
+    public static final class Builder {
+        /** The transport type of the data connection */
+        private @TransportType int mTransportType = AccessNetworkConstants.TRANSPORT_TYPE_INVALID;
+
+        /**
+         * The unique ID of the data connection. This is the id assigned in
+         * {@link DataCallResponse)}.
+         */
+        private int mId = -1;
+
+        /** The state of the data connection */
+        private @DataState int mState = TelephonyManager.DATA_UNKNOWN;
+
+        /** The network type associated with this data connection */
+        private @NetworkType int mNetworkType = TelephonyManager.NETWORK_TYPE_UNKNOWN;
+
+        /** If the data connection is connected, the properties of the connection */
+        private @Nullable LinkProperties mLinkProperties = null;
+
+        /**
+         * In case a procedure related to this data connection fails, a non-zero error code
+         * indicating the cause of the failure.
+         */
+        private @DataFailureCause int mFailCause = DataFailCause.NONE;
+
+        /** The APN Setting for this data connection */
+        private @Nullable ApnSetting mApnSetting = null;
+
+        /**
+         * Set the transport type of the data connection.
+         *
+         * @param transportType The transport type of the data connection
+         * @return The builder
+         */
+        public @NonNull Builder setTransportType(@TransportType int transportType) {
+            mTransportType = transportType;
+            return this;
+        }
+
+        /**
+         * Set the id of the data connection.
+         *
+         * @param id The id of the data connection
+         * @return The builder
+         */
+        public @NonNull Builder setId(int id) {
+            mId = id;
+            return this;
+        }
+
+        /**
+         * Set the state of the data connection.
+         *
+         * @param state The state of the data connection
+         * @return The builder
+         */
+        public @NonNull Builder setState(@DataState int state) {
+            mState = state;
+            return this;
+        }
+
+        /**
+         * Set the network type associated with this data connection.
+         *
+         * @param networkType The network type
+         * @return The builder
+         */
+        public @NonNull Builder setNetworkType(@NetworkType int networkType) {
+            mNetworkType = networkType;
+            return this;
+        }
+
+        /**
+         * Set the link properties of the connection.
+         *
+         * @param linkProperties Link properties
+         * @return The builder
+         */
+        public @NonNull Builder setLinkProperties(LinkProperties linkProperties) {
+            mLinkProperties = linkProperties;
+            return this;
+        }
+
+        /**
+         * Set the fail cause of the data connection.
+         *
+         * @param failCause In case a procedure related to this data connection fails, a non-zero
+         * error code indicating the cause of the failure.
+         * @return The builder
+         */
+        public @NonNull Builder setFailCause(@DataFailureCause int failCause) {
+            mFailCause = failCause;
+            return this;
+        }
+
+        /**
+         * Set the APN Setting for this data connection.
+         *
+         * @param apnSetting APN setting
+         * @return This builder
+         */
+        public @NonNull Builder setApnSetting(@NonNull ApnSetting apnSetting) {
+            mApnSetting = apnSetting;
+            return this;
+        }
+
+        /**
+         * Build the {@link PreciseDataConnectionState} instance.
+         *
+         * @return The {@link PreciseDataConnectionState} instance
+         */
+        public PreciseDataConnectionState build() {
+            return new PreciseDataConnectionState(mTransportType, mId, mState, mNetworkType,
+                    mLinkProperties, mFailCause, mApnSetting);
+        }
+    }
 }
diff --git a/telephony/java/android/telephony/RadioAccessFamily.java b/telephony/java/android/telephony/RadioAccessFamily.java
index 90ddf2c..f1e9011 100644
--- a/telephony/java/android/telephony/RadioAccessFamily.java
+++ b/telephony/java/android/telephony/RadioAccessFamily.java
@@ -92,7 +92,7 @@
      * {@link TelephonyManager.NetworkTypeBitMask}. It's a bit mask value to represent the support
      *                          type.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public RadioAccessFamily(int phoneId, int radioAccessFamily) {
         mPhoneId = phoneId;
         mRadioAccessFamily = radioAccessFamily;
@@ -103,7 +103,7 @@
      *
      * @return phone ID
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getPhoneId() {
         return mPhoneId;
     }
@@ -113,7 +113,7 @@
      *
      * @return radio access family
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public @TelephonyManager.NetworkTypeBitMask int getRadioAccessFamily() {
         return mRadioAccessFamily;
     }
@@ -168,7 +168,7 @@
         }
     };
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @TelephonyManager.NetworkTypeBitMask
     public static int getRafFromNetworkType(@PrefNetworkMode int type) {
         switch (type) {
diff --git a/telephony/java/android/telephony/ServiceState.java b/telephony/java/android/telephony/ServiceState.java
index 3e74647..dedb1af 100644
--- a/telephony/java/android/telephony/ServiceState.java
+++ b/telephony/java/android/telephony/ServiceState.java
@@ -956,7 +956,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static String rilRadioTechnologyToString(int rt) {
         String rtString;
 
@@ -1102,7 +1102,8 @@
                     .append(", isUsingCarrierAggregation=").append(isUsingCarrierAggregation())
                     .append(", mLteEarfcnRsrpBoost=").append(mLteEarfcnRsrpBoost)
                     .append(", mNetworkRegistrationInfos=").append(mNetworkRegistrationInfos)
-                    .append(", mNrFrequencyRange=").append(mNrFrequencyRange)
+                    .append(", mNrFrequencyRange=").append(Build.IS_DEBUGGABLE
+                            ? mNrFrequencyRange : FREQUENCY_RANGE_UNKNOWN)
                     .append(", mOperatorAlphaLongRaw=").append(mOperatorAlphaLongRaw)
                     .append(", mOperatorAlphaShortRaw=").append(mOperatorAlphaShortRaw)
                     .append(", mIsDataRoamingFromRegistration=")
@@ -1167,7 +1168,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setVoiceRegState(int state) {
         mVoiceRegState = state;
         if (DBG) Rlog.d(LOG_TAG, "[ServiceState] setVoiceRegState=" + mVoiceRegState);
@@ -1198,7 +1199,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setVoiceRoaming(boolean roaming) {
         setVoiceRoamingType(roaming ? ROAMING_TYPE_UNKNOWN : ROAMING_TYPE_NOT_ROAMING);
     }
@@ -1219,7 +1220,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setDataRoaming(boolean dataRoaming) {
         setDataRoamingType(dataRoaming ? ROAMING_TYPE_UNKNOWN : ROAMING_TYPE_NOT_ROAMING);
     }
@@ -1291,7 +1292,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setOperatorAlphaLong(@Nullable String longName) {
         mOperatorAlphaLong = longName;
     }
@@ -1476,7 +1477,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getRilVoiceRadioTechnology() {
         NetworkRegistrationInfo wwanRegInfo = getNetworkRegistrationInfo(
                 NetworkRegistrationInfo.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
@@ -1486,7 +1487,7 @@
         return RIL_RADIO_TECHNOLOGY_UNKNOWN;
     }
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getRilDataRadioTechnology() {
         return networkTypeToRilRadioTechnology(getDataNetworkType());
     }
@@ -1763,7 +1764,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static boolean bitmaskHasTech(int bearerBitmask, int radioTech) {
         if (bearerBitmask == 0) {
             return true;
@@ -1849,7 +1850,7 @@
      * voice SS. The voice SS is only used if it is IN_SERVICE (otherwise the base SS is returned).
      * @hide
      * */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static ServiceState mergeServiceStates(ServiceState baseSs, ServiceState voiceSs) {
         if (voiceSs.mVoiceRegState != STATE_IN_SERVICE) {
             return baseSs;
diff --git a/telephony/java/android/telephony/SignalStrength.java b/telephony/java/android/telephony/SignalStrength.java
index 1376cdd..7bd0bc0 100644
--- a/telephony/java/android/telephony/SignalStrength.java
+++ b/telephony/java/android/telephony/SignalStrength.java
@@ -287,11 +287,9 @@
     }
 
     /**
-     * Copy constructors
+     * This constructor is used to create a copy of an existing SignalStrength object.
      *
      * @param s Source SignalStrength
-     *
-     * @hide
      */
     public SignalStrength(@NonNull SignalStrength s) {
         copyFrom(s);
diff --git a/telephony/java/android/telephony/SmsManager.java b/telephony/java/android/telephony/SmsManager.java
index d6ce40c..bcc2c67 100644
--- a/telephony/java/android/telephony/SmsManager.java
+++ b/telephony/java/android/telephony/SmsManager.java
@@ -408,6 +408,9 @@
      *  <code>RESULT_RIL_NO_RESOURCES</code><br>
      *  <code>RESULT_RIL_CANCELLED</code><br>
      *  <code>RESULT_RIL_SIM_ABSENT</code><br>
+     *  <code>RESULT_RIL_SIMULTANEOUS_SMS_AND_CALL_NOT_ALLOWED</code><br>
+     *  <code>RESULT_RIL_ACCESS_BARRED</code><br>
+     *  <code>RESULT_RIL_BLOCKED_DUE_TO_CALL</code><br>
      *  For <code>RESULT_ERROR_GENERIC_FAILURE</code> or any of the RESULT_RIL errors,
      *  the sentIntent may include the extra "errorCode" containing a radio technology specific
      *  value, generally only useful for troubleshooting.<br>
@@ -520,6 +523,9 @@
      *  <code>RESULT_RIL_NO_RESOURCES</code><br>
      *  <code>RESULT_RIL_CANCELLED</code><br>
      *  <code>RESULT_RIL_SIM_ABSENT</code><br>
+     *  <code>RESULT_RIL_SIMULTANEOUS_SMS_AND_CALL_NOT_ALLOWED</code><br>
+     *  <code>RESULT_RIL_ACCESS_BARRED</code><br>
+     *  <code>RESULT_RIL_BLOCKED_DUE_TO_CALL</code><br>
      *  For <code>RESULT_ERROR_GENERIC_FAILURE</code> or any of the RESULT_RIL errors,
      *  the sentIntent may include the extra "errorCode" containing a radio technology specific
      *  value, generally only useful for troubleshooting.<br>
@@ -550,7 +556,7 @@
      * @throws IllegalArgumentException if destinationAddress or text are empty
      * {@hide}
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void sendTextMessage(
             String destinationAddress, String scAddress, String text,
             PendingIntent sentIntent, PendingIntent deliveryIntent,
@@ -921,6 +927,9 @@
      *  <code>RESULT_RIL_NO_RESOURCES</code><br>
      *  <code>RESULT_RIL_CANCELLED</code><br>
      *  <code>RESULT_RIL_SIM_ABSENT</code><br>
+     *  <code>RESULT_RIL_SIMULTANEOUS_SMS_AND_CALL_NOT_ALLOWED</code><br>
+     *  <code>RESULT_RIL_ACCESS_BARRED</code><br>
+     *  <code>RESULT_RIL_BLOCKED_DUE_TO_CALL</code><br>
      *  For <code>RESULT_ERROR_GENERIC_FAILURE</code> or any of the RESULT_RIL errors,
      *  the sentIntent may include the extra "errorCode" containing a radio technology specific
      *  value, generally only useful for troubleshooting.<br>
@@ -1179,6 +1188,9 @@
      *  <code>RESULT_RIL_NO_RESOURCES</code><br>
      *  <code>RESULT_RIL_CANCELLED</code><br>
      *  <code>RESULT_RIL_SIM_ABSENT</code><br>
+     *  <code>RESULT_RIL_SIMULTANEOUS_SMS_AND_CALL_NOT_ALLOWED</code><br>
+     *  <code>RESULT_RIL_ACCESS_BARRED</code><br>
+     *  <code>RESULT_RIL_BLOCKED_DUE_TO_CALL</code><br>
      *  For <code>RESULT_ERROR_GENERIC_FAILURE</code> or any of the RESULT_RIL errors,
      *  the sentIntent may include the extra "errorCode" containing a radio technology specific
      *  value, generally only useful for troubleshooting.<br>
@@ -1378,6 +1390,9 @@
      *  <code>RESULT_RIL_NO_RESOURCES</code><br>
      *  <code>RESULT_RIL_CANCELLED</code><br>
      *  <code>RESULT_RIL_SIM_ABSENT</code><br>
+     *  <code>RESULT_RIL_SIMULTANEOUS_SMS_AND_CALL_NOT_ALLOWED</code><br>
+     *  <code>RESULT_RIL_ACCESS_BARRED</code><br>
+     *  <code>RESULT_RIL_BLOCKED_DUE_TO_CALL</code><br>
      *  For <code>RESULT_ERROR_GENERIC_FAILURE</code> or any of the RESULT_RIL errors,
      *  the sentIntent may include the extra "errorCode" containing a radio technology specific
      *  value, generally only useful for troubleshooting.<br>
@@ -1721,6 +1736,7 @@
      *
      * {@hide}
      */
+    @UnsupportedAppUsage
     @RequiresPermission(Manifest.permission.ACCESS_MESSAGES_ON_ICC)
     public boolean deleteMessageFromIcc(int messageIndex) {
         boolean success = false;
@@ -2091,17 +2107,25 @@
     }
 
     /**
-     * Gets the total capacity of SMS storage on RUIM and SIM cards
-     * <p>
-     * This is the number of 176 byte EF-SMS records which can be stored on the RUIM or SIM card.
-     * <p>
-     * See 3GPP TS 31.102 - 4.2.25 - EF-SMS for more information
+     * Gets the total capacity of SMS storage on the SIM card.
      *
-     * @return the total number of SMS records which can be stored on the RUIM or SIM cards.
-     * @hide
+     * <p>
+     * This is the number of 176 byte EF-SMS records which can be stored on the SIM card.
+     * See 3GPP TS 31.102 - 4.2.25 - EF-SMS for more information.
+     * </p>
+     *
+     * <p class="note"><strong>Note:</strong> This method will never trigger an SMS disambiguation
+     * dialog. If this method is called on a device that has multiple active subscriptions, this
+     * {@link SmsManager} instance has been created with {@link #getDefault()}, and no user-defined
+     * default subscription is defined, the subscription ID associated with this method will be
+     * INVALID, which will result in the operation being completed on the subscription associated
+     * with logical slot 0. Use {@link #getSmsManagerForSubscriptionId(int)} to ensure the operation
+     * is performed on the correct subscription.
+     * </p>
+     *
+     * @return the total number of SMS records which can be stored on the SIM card.
      */
-    @SystemApi
-    @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
+    @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
     public int getSmsCapacityOnIcc() {
         int ret = 0;
         try {
@@ -2110,7 +2134,7 @@
                 ret = iccISms.getSmsCapacityOnIccForSubscriber(getSubscriptionId());
             }
         } catch (RemoteException ex) {
-            //ignore it
+            throw new RuntimeException(ex);
         }
         return ret;
     }
@@ -2199,7 +2223,10 @@
             RESULT_RIL_OPERATION_NOT_ALLOWED,
             RESULT_RIL_NO_RESOURCES,
             RESULT_RIL_CANCELLED,
-            RESULT_RIL_SIM_ABSENT
+            RESULT_RIL_SIM_ABSENT,
+            RESULT_RIL_SIMULTANEOUS_SMS_AND_CALL_NOT_ALLOWED,
+            RESULT_RIL_ACCESS_BARRED,
+            RESULT_RIL_BLOCKED_DUE_TO_CALL
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface Result {}
@@ -2464,6 +2491,21 @@
      */
     public static final int RESULT_RIL_SIM_ABSENT = 120;
 
+    /**
+     * 1X voice and SMS are not allowed simulteneously.
+     */
+    public static final int RESULT_RIL_SIMULTANEOUS_SMS_AND_CALL_NOT_ALLOWED = 121;
+
+    /**
+     * Access is barred.
+     */
+    public static final int RESULT_RIL_ACCESS_BARRED = 122;
+
+    /**
+     * SMS is blocked due to call control, e.g., resource unavailable in the SMR entity.
+     */
+    public static final int RESULT_RIL_BLOCKED_DUE_TO_CALL = 123;
+
     // SMS receiving results sent as a "result" extra in {@link Intents.SMS_REJECTED_ACTION}
 
     /**
@@ -2506,13 +2548,12 @@
     /**
      * Send an MMS message
      *
-     * <p class="note"><strong>Note:</strong> This method will never trigger an SMS disambiguation
-     * dialog. If this method is called on a device that has multiple active subscriptions, this
-     * {@link SmsManager} instance has been created with {@link #getDefault()}, and no user-defined
-     * default subscription is defined, the subscription ID associated with this message will be
-     * INVALID, which will result in the operation being completed on the subscription associated
-     * with logical slot 0. Use {@link #getSmsManagerForSubscriptionId(int)} to ensure the
-     * operation is performed on the correct subscription.
+     * <p class="note"><strong>Note:</strong> If {@link #getDefault()} is used to instantiate this
+     * manager on a multi-SIM device, this operation may fail sending the MMS message because no
+     * suitable default subscription could be found. In this case, if {@code sentIntent} is
+     * non-null, then the {@link PendingIntent} will be sent with an error code
+     * {@code RESULT_NO_DEFAULT_SMS_APP}. See {@link #getDefault()} for more information on the
+     * conditions where this operation may fail.
      * </p>
      *
      * @param context application context
@@ -2531,21 +2572,30 @@
         }
         MmsManager m = (MmsManager) context.getSystemService(Context.MMS_SERVICE);
         if (m != null) {
-            m.sendMultimediaMessage(getSubscriptionId(), contentUri, locationUrl, configOverrides,
-                    sentIntent, 0L /* messageId */);
+            resolveSubscriptionForOperation(new SubscriptionResolverResult() {
+                @Override
+                public void onSuccess(int subId) {
+                    m.sendMultimediaMessage(subId, contentUri, locationUrl, configOverrides,
+                            sentIntent, 0L /* messageId */);
+                }
+
+                @Override
+                public void onFailure() {
+                    notifySmsError(sentIntent, RESULT_NO_DEFAULT_SMS_APP);
+                }
+            });
         }
     }
 
     /**
      * Download an MMS message from carrier by a given location URL
      *
-     * <p class="note"><strong>Note:</strong> This method will never trigger an SMS disambiguation
-     * dialog. If this method is called on a device that has multiple active subscriptions, this
-     * {@link SmsManager} instance has been created with {@link #getDefault()}, and no user-defined
-     * default subscription is defined, the subscription ID associated with this message will be
-     * INVALID, which will result in the operation being completed on the subscription associated
-     * with logical slot 0. Use {@link #getSmsManagerForSubscriptionId(int)} to ensure the
-     * operation is performed on the correct subscription.
+     * <p class="note"><strong>Note:</strong> If {@link #getDefault()} is used to instantiate this
+     * manager on a multi-SIM device, this operation may fail downloading the MMS message because no
+     * suitable default subscription could be found. In this case, if {@code downloadedIntent} is
+     * non-null, then the {@link PendingIntent} will be sent with an error code
+     * {@code RESULT_NO_DEFAULT_SMS_APP}. See {@link #getDefault()} for more information on the
+     * conditions where this operation may fail.
      * </p>
      *
      * @param context application context
@@ -2568,8 +2618,18 @@
         }
         MmsManager m = (MmsManager) context.getSystemService(Context.MMS_SERVICE);
         if (m != null) {
-            m.downloadMultimediaMessage(getSubscriptionId(), locationUrl, contentUri,
-                    configOverrides, downloadedIntent, 0L /* messageId */);
+            resolveSubscriptionForOperation(new SubscriptionResolverResult() {
+                @Override
+                public void onSuccess(int subId) {
+                    m.downloadMultimediaMessage(subId, locationUrl, contentUri, configOverrides,
+                            downloadedIntent, 0L /* messageId */);
+                }
+
+                @Override
+                public void onFailure() {
+                    notifySmsError(downloadedIntent, RESULT_NO_DEFAULT_SMS_APP);
+                }
+            });
         }
     }
 
diff --git a/telephony/java/android/telephony/SmsMessage.java b/telephony/java/android/telephony/SmsMessage.java
index 717a9b1..cfb29f1 100644
--- a/telephony/java/android/telephony/SmsMessage.java
+++ b/telephony/java/android/telephony/SmsMessage.java
@@ -29,6 +29,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.res.Resources;
 import android.os.Binder;
+import android.os.Build;
 import android.text.TextUtils;
 
 import com.android.internal.telephony.GsmAlphabet;
@@ -133,7 +134,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private int mSubId = 0;
 
     /** set Subscription information
@@ -1054,7 +1055,7 @@
      *
      * @return true if Cdma format should be used for MO SMS, false otherwise.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static boolean useCdmaFormatForMoSms(int subId) {
         SmsManager smsManager = SmsManager.getSmsManagerForSubscriptionId(subId);
         if (!smsManager.isImsSmsSupported()) {
diff --git a/telephony/java/android/telephony/SubscriptionInfo.java b/telephony/java/android/telephony/SubscriptionInfo.java
index 11667c8..8307c03 100644
--- a/telephony/java/android/telephony/SubscriptionInfo.java
+++ b/telephony/java/android/telephony/SubscriptionInfo.java
@@ -30,6 +30,7 @@
 import android.graphics.PorterDuffColorFilter;
 import android.graphics.Rect;
 import android.graphics.Typeface;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.ParcelUuid;
 import android.os.Parcelable;
@@ -354,7 +355,7 @@
      * Sets the name displayed to the user that identifies this subscription
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setDisplayName(CharSequence name) {
         this.mDisplayName = name;
     }
@@ -379,7 +380,7 @@
      * NAME_SOURCE_USER_INPUT.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getNameSource() {
         return this.mNameSource;
     }
@@ -446,7 +447,7 @@
      * Sets the color displayed to the user that identifies this subscription
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setIconTint(int iconTint) {
         this.mIconTint = iconTint;
     }
diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java
index a71a965..83e63ef 100644
--- a/telephony/java/android/telephony/SubscriptionManager.java
+++ b/telephony/java/android/telephony/SubscriptionManager.java
@@ -32,7 +32,6 @@
 import android.annotation.SuppressAutoDoc;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
-import android.annotation.TestApi;
 import android.app.PendingIntent;
 import android.app.PropertyInvalidatedCache;
 import android.compat.annotation.UnsupportedAppUsage;
@@ -128,7 +127,7 @@
     public static final int MAX_SUBSCRIPTION_ID_VALUE = DEFAULT_SUBSCRIPTION_ID - 1;
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final Uri CONTENT_URI = SimInfo.CONTENT_URI;
 
     /** @hide */
@@ -279,7 +278,6 @@
      */
     @NonNull
     @SystemApi
-    @TestApi
     public static final Uri WFC_ENABLED_CONTENT_URI = Uri.withAppendedPath(CONTENT_URI, "wfc");
 
     /**
@@ -299,7 +297,6 @@
      */
     @NonNull
     @SystemApi
-    @TestApi
     public static final Uri ADVANCED_CALLING_ENABLED_CONTENT_URI = Uri.withAppendedPath(
             CONTENT_URI, "advanced_calling");
 
@@ -318,7 +315,6 @@
      */
     @NonNull
     @SystemApi
-    @TestApi
     public static final Uri WFC_MODE_CONTENT_URI = Uri.withAppendedPath(CONTENT_URI, "wfc_mode");
 
     /**
@@ -336,7 +332,6 @@
      */
     @NonNull
     @SystemApi
-    @TestApi
     public static final Uri WFC_ROAMING_MODE_CONTENT_URI = Uri.withAppendedPath(
             CONTENT_URI, "wfc_roaming_mode");
 
@@ -356,7 +351,6 @@
      */
     @NonNull
     @SystemApi
-    @TestApi
     public static final Uri VT_ENABLED_CONTENT_URI = Uri.withAppendedPath(
             CONTENT_URI, "vt_enabled");
 
@@ -375,7 +369,6 @@
      */
     @NonNull
     @SystemApi
-    @TestApi
     public static final Uri WFC_ROAMING_ENABLED_CONTENT_URI = Uri.withAppendedPath(
             CONTENT_URI, "wfc_roaming_enabled");
 
@@ -1372,6 +1365,7 @@
      * include those that were inserted before, maybe empty but not null.
      * @hide
      */
+    @NonNull
     @UnsupportedAppUsage
     public List<SubscriptionInfo> getAllSubscriptionInfoList() {
         if (VDBG) logd("[getAllSubscriptionInfoList]+");
@@ -1389,7 +1383,7 @@
         }
 
         if (result == null) {
-            result = new ArrayList<>();
+            result = Collections.emptyList();
         }
         return result;
     }
@@ -1833,7 +1827,7 @@
      * @return the number of records updated
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int setDisplayNumber(String number, int subId) {
         if (number == null) {
             logd("[setDisplayNumber]- fail");
@@ -1851,7 +1845,7 @@
      * @return the number of records updated
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int setDataRoaming(int roaming, int subId) {
         if (VDBG) logd("[setDataRoaming]+ roaming:" + roaming + " subId:" + subId);
         return setSubscriptionPropertyHelper(subId, "setDataRoaming",
@@ -1966,7 +1960,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
     public void setDefaultVoiceSubscriptionId(int subscriptionId) {
         if (VDBG) logd("setDefaultVoiceSubId sub id = " + subscriptionId);
@@ -1997,13 +1990,13 @@
      * @return the SubscriptionInfo for the default voice subscription.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public SubscriptionInfo getDefaultVoiceSubscriptionInfo() {
         return getActiveSubscriptionInfo(getDefaultVoiceSubscriptionId());
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static int getDefaultVoicePhoneId() {
         return getPhoneId(getDefaultVoiceSubscriptionId());
     }
@@ -2055,7 +2048,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getDefaultSmsPhoneId() {
         return getPhoneId(getDefaultSmsSubscriptionId());
     }
@@ -2189,7 +2182,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static boolean isValidPhoneId(int phoneId) {
         return phoneId >= 0 && phoneId < TelephonyManager.getDefault().getActiveModemCount();
     }
@@ -2208,7 +2201,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static void putPhoneIdAndSubIdExtra(Intent intent, int phoneId, int subId) {
         if (VDBG) logd("putPhoneIdAndSubIdExtra: phoneId=" + phoneId + " subId=" + subId);
         intent.putExtra(EXTRA_SLOT_INDEX, phoneId);
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 4b5399e..44aa6bc 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -85,8 +85,6 @@
 import android.telephony.emergency.EmergencyNumber.EmergencyServiceCategories;
 import android.telephony.ims.ImsMmTelManager;
 import android.telephony.ims.aidl.IImsConfig;
-import android.telephony.ims.aidl.IImsMmTelFeature;
-import android.telephony.ims.aidl.IImsRcsFeature;
 import android.telephony.ims.aidl.IImsRegistration;
 import android.telephony.ims.feature.MmTelFeature;
 import android.telephony.ims.stub.ImsRegistrationImplBase;
@@ -94,11 +92,12 @@
 import android.util.Log;
 import android.util.Pair;
 
-import com.android.ims.internal.IImsServiceFeatureCallback;
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.telephony.CellNetworkScanResult;
 import com.android.internal.telephony.IBooleanConsumer;
+import com.android.internal.telephony.ICallForwardingInfoCallback;
+import com.android.internal.telephony.IIntegerConsumer;
 import com.android.internal.telephony.INumberVerificationCallback;
 import com.android.internal.telephony.IOns;
 import com.android.internal.telephony.IPhoneSubInfo;
@@ -306,6 +305,8 @@
     private static boolean sServiceHandleCacheEnabled = true;
 
     @GuardedBy("sCacheLock")
+    private static ITelephony sITelephony;
+    @GuardedBy("sCacheLock")
     private static IPhoneSubInfo sIPhoneSubInfo;
     @GuardedBy("sCacheLock")
     private static ISub sISub;
@@ -1884,8 +1885,8 @@
      *
      * <p>Starting with API level 29, persistent device identifiers are guarded behind additional
      * restrictions, and apps are recommended to use resettable identifiers (see <a
-     * href="c"> Best practices for unique identifiers</a>). This method can be invoked if one of
-     * the following requirements is met:
+     * href="/training/articles/user-data-ids">Best practices for unique identifiers</a>). This
+     * method can be invoked if one of the following requirements is met:
      * <ul>
      *     <li>If the calling app has been granted the READ_PRIVILEGED_PHONE_STATE permission; this
      *     is a privileged permission that can only be granted to apps preloaded on the device.
@@ -1937,8 +1938,8 @@
      *
      * <p>Starting with API level 29, persistent device identifiers are guarded behind additional
      * restrictions, and apps are recommended to use resettable identifiers (see <a
-     * href="c"> Best practices for unique identifiers</a>). This method can be invoked if one of
-     * the following requirements is met:
+     * href="/training/articles/user-data-ids">Best practices for unique identifiers</a>). This
+     * method can be invoked if one of the following requirements is met:
      * <ul>
      *     <li>If the calling app has been granted the READ_PRIVILEGED_PHONE_STATE permission; this
      *     is a privileged permission that can only be granted to apps preloaded on the device.
@@ -2006,8 +2007,8 @@
      *
      * <p>Starting with API level 29, persistent device identifiers are guarded behind additional
      * restrictions, and apps are recommended to use resettable identifiers (see <a
-     * href="c"> Best practices for unique identifiers</a>). This method can be invoked if one of
-     * the following requirements is met:
+     * href="/training/articles/user-data-ids">Best practices for unique identifiers</a>). This
+     * method can be invoked if one of the following requirements is met:
      * <ul>
      *     <li>If the calling app has been granted the READ_PRIVILEGED_PHONE_STATE permission; this
      *     is a privileged permission that can only be granted to apps preloaded on the device.
@@ -2084,8 +2085,8 @@
      *
      * <p>Starting with API level 29, persistent device identifiers are guarded behind additional
      * restrictions, and apps are recommended to use resettable identifiers (see <a
-     * href="c"> Best practices for unique identifiers</a>). This method can be invoked if one of
-     * the following requirements is met:
+     * href="/training/articles/user-data-ids">Best practices for unique identifiers</a>). This
+     * method can be invoked if one of the following requirements is met:
      * <ul>
      *     <li>If the calling app has been granted the READ_PRIVILEGED_PHONE_STATE permission; this
      *     is a privileged permission that can only be granted to apps preloaded on the device.
@@ -2122,8 +2123,8 @@
      *
      * <p>Starting with API level 29, persistent device identifiers are guarded behind additional
      * restrictions, and apps are recommended to use resettable identifiers (see <a
-     * href="c"> Best practices for unique identifiers</a>). This method can be invoked if one of
-     * the following requirements is met:
+     * href="/training/articles/user-data-ids">Best practices for unique identifiers</a>). This
+     * method can be invoked if one of the following requirements is met:
      * <ul>
      *     <li>If the calling app has been granted the READ_PRIVILEGED_PHONE_STATE permission; this
      *     is a privileged permission that can only be granted to apps preloaded on the device.
@@ -2206,8 +2207,8 @@
      *
      * <p>Starting with API level 29, persistent device identifiers are guarded behind additional
      * restrictions, and apps are recommended to use resettable identifiers (see <a
-     * href="c"> Best practices for unique identifiers</a>). This method can be invoked if one of
-     * the following requirements is met:
+     * href="/training/articles/user-data-ids">Best practices for unique identifiers</a>). This
+     * method can be invoked if one of the following requirements is met:
      * <ul>
      *     <li>If the calling app has been granted the READ_PRIVILEGED_PHONE_STATE permission; this
      *     is a privileged permission that can only be granted to apps preloaded on the device.
@@ -2243,8 +2244,8 @@
      *
      * <p>Starting with API level 29, persistent device identifiers are guarded behind additional
      * restrictions, and apps are recommended to use resettable identifiers (see <a
-     * href="c"> Best practices for unique identifiers</a>). This method can be invoked if one of
-     * the following requirements is met:
+     * href="/training/articles/user-data-ids">Best practices for unique identifiers</a>). This
+     * method can be invoked if one of the following requirements is met:
      * <ul>
      *     <li>If the calling app has been granted the READ_PRIVILEGED_PHONE_STATE permission; this
      *     is a privileged permission that can only be granted to apps preloaded on the device.
@@ -2801,9 +2802,13 @@
     /** Current network is IWLAN */
     public static final int NETWORK_TYPE_IWLAN = TelephonyProtoEnums.NETWORK_TYPE_IWLAN; // = 18.
     /** Current network is LTE_CA {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int NETWORK_TYPE_LTE_CA = TelephonyProtoEnums.NETWORK_TYPE_LTE_CA; // = 19.
-    /** Current network is NR(New Radio) 5G. */
+    /**
+     * Current network is NR (New Radio) 5G.
+     * This will only be returned for 5G SA.
+     * For 5G NSA, the network type will be {@link #NETWORK_TYPE_LTE}.
+     */
     public static final int NETWORK_TYPE_NR = TelephonyProtoEnums.NETWORK_TYPE_NR; // 20.
 
     private static final @NetworkType int[] NETWORK_TYPES = {
@@ -2830,11 +2835,13 @@
     };
 
     /**
-     * Return a collection of all network types
-     * @return network types
+     * Returns an array of all valid network types.
+     *
+     * @return An integer array containing all valid network types in no particular order.
      *
      * @hide
      */
+    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
     public static @NonNull @NetworkType int[] getAllNetworkTypes() {
         return NETWORK_TYPES;
     }
@@ -3719,8 +3726,8 @@
      *
      * <p>Starting with API level 29, persistent device identifiers are guarded behind additional
      * restrictions, and apps are recommended to use resettable identifiers (see <a
-     * href="c"> Best practices for unique identifiers</a>). This method can be invoked if one of
-     * the following requirements is met:
+     * href="/training/articles/user-data-ids">Best practices for unique identifiers</a>). This
+     * method can be invoked if one of the following requirements is met:
      * <ul>
      *     <li>If the calling app has been granted the READ_PRIVILEGED_PHONE_STATE permission; this
      *     is a privileged permission that can only be granted to apps preloaded on the device.
@@ -3757,8 +3764,8 @@
      *
      * <p>Starting with API level 29, persistent device identifiers are guarded behind additional
      * restrictions, and apps are recommended to use resettable identifiers (see <a
-     * href="c"> Best practices for unique identifiers</a>). This method can be invoked if one of
-     * the following requirements is met:
+     * href="/training/articles/user-data-ids">Best practices for unique identifiers</a>). This
+     * method can be invoked if one of the following requirements is met:
      * <ul>
      *     <li>If the calling app has been granted the READ_PRIVILEGED_PHONE_STATE permission; this
      *     is a privileged permission that can only be granted to apps preloaded on the device.
@@ -4011,8 +4018,8 @@
      *
      * <p>Starting with API level 29, persistent device identifiers are guarded behind additional
      * restrictions, and apps are recommended to use resettable identifiers (see <a
-     * href="c"> Best practices for unique identifiers</a>). This method can be invoked if one of
-     * the following requirements is met:
+     * href="/training/articles/user-data-ids">Best practices for unique identifiers</a>). This
+     * method can be invoked if one of the following requirements is met:
      * <ul>
      *     <li>If the calling app has been granted the READ_PRIVILEGED_PHONE_STATE permission; this
      *     is a privileged permission that can only be granted to apps preloaded on the device.
@@ -4050,8 +4057,8 @@
      *
      * <p>Starting with API level 29, persistent device identifiers are guarded behind additional
      * restrictions, and apps are recommended to use resettable identifiers (see <a
-     * href="c"> Best practices for unique identifiers</a>). This method can be invoked if one of
-     * the following requirements is met:
+     * href="/training/articles/user-data-ids">Best practices for unique identifiers</a>). This
+     * method can be invoked if one of the following requirements is met:
      * <ul>
      *     <li>If the calling app has been granted the READ_PRIVILEGED_PHONE_STATE permission; this
      *     is a privileged permission that can only be granted to apps preloaded on the device.
@@ -4180,7 +4187,7 @@
         }
     }
 
-   /**
+    /**
      * @param keyAvailability bitmask that defines the availabilty of keys for a type.
      * @param keyType the key type which is being checked. (WLAN, EPDG)
      * @return true if the digit at position keyType is 1, else false.
@@ -4649,7 +4656,7 @@
      * be implemented instead.
      */
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public void setVisualVoicemailEnabled(PhoneAccountHandle phoneAccountHandle, boolean enabled){
     }
 
@@ -4664,7 +4671,7 @@
      */
     @SystemApi
     @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public boolean isVisualVoicemailEnabled(PhoneAccountHandle phoneAccountHandle){
         return false;
     }
@@ -4683,7 +4690,7 @@
      * @hide
      */
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     @Nullable
     public Bundle getVisualVoicemailSettings(){
         try {
@@ -5500,29 +5507,38 @@
     }
 
     /**
-     * Convert data state to string
-     *
-     * @return The data state in string format.
      * @hide
      */
-    public static String dataStateToString(@DataState int state) {
-        switch (state) {
-            case DATA_DISCONNECTED: return "DISCONNECTED";
-            case DATA_CONNECTING: return "CONNECTING";
-            case DATA_CONNECTED: return "CONNECTED";
-            case DATA_SUSPENDED: return "SUSPENDED";
-            case DATA_DISCONNECTING: return "DISCONNECTING";
-        }
-        return "UNKNOWN(" + state + ")";
-    }
-
-   /**
-    * @hide
-    */
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
     private ITelephony getITelephony() {
-        return ITelephony.Stub.asInterface(TelephonyFrameworkInitializer
-                .getTelephonyServiceManager().getTelephonyServiceRegisterer().get());
+        // Keeps cache disabled until test fixes are checked into AOSP.
+        if (!sServiceHandleCacheEnabled) {
+            return ITelephony.Stub.asInterface(
+                    TelephonyFrameworkInitializer
+                            .getTelephonyServiceManager()
+                            .getTelephonyServiceRegisterer()
+                            .get());
+        }
+
+        if (sITelephony == null) {
+            ITelephony temp = ITelephony.Stub.asInterface(
+                    TelephonyFrameworkInitializer
+                            .getTelephonyServiceManager()
+                            .getTelephonyServiceRegisterer()
+                            .get());
+            synchronized (sCacheLock) {
+                if (sITelephony == null && temp != null) {
+                    try {
+                        sITelephony = temp;
+                        sITelephony.asBinder().linkToDeath(sServiceDeath, 0);
+                    } catch (Exception e) {
+                        // something has gone horribly wrong
+                        sITelephony = null;
+                    }
+                }
+            }
+        }
+        return sITelephony;
     }
 
     private IOns getIOns() {
@@ -5587,27 +5603,78 @@
         }
     }
 
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = {"ERI_"}, value = {
+            ERI_ON,
+            ERI_OFF,
+            ERI_FLASH
+    })
+    public @interface EriIconIndex {}
+
     /**
-     * Get the CDMA ERI (Enhanced Roaming Indicator) information
+     * ERI (Enhanced Roaming Indicator) is ON i.e value 0 defined by
+     * 3GPP2 C.R1001-H v1.0 Table 8.1-1.
+     */
+    public static final int ERI_ON = 0;
+
+    /**
+     * ERI (Enhanced Roaming Indicator) is OFF i.e value 1 defined by
+     * 3GPP2 C.R1001-H v1.0 Table 8.1-1.
+     */
+    public static final int ERI_OFF = 1;
+
+    /**
+     * ERI (Enhanced Roaming Indicator) is FLASH i.e value 2 defined by
+     * 3GPP2 C.R1001-H v1.0 Table 8.1-1.
+     */
+    public static final int ERI_FLASH = 2;
+
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = {"ERI_ICON_MODE_"}, value = {
+            ERI_ICON_MODE_NORMAL,
+            ERI_ICON_MODE_FLASH
+    })
+    public @interface EriIconMode {}
+
+    /**
+     * ERI (Enhanced Roaming Indicator) icon mode is normal. This constant represents that
+     * the ERI icon should be displayed normally.
      *
-     * Returns {@link android.telephony#CdmaEriInformation}
-     *
+     * Note: ERI is defined 3GPP2 C.R1001-H Table 8.1-1
      * @hide
      */
+    public static final int ERI_ICON_MODE_NORMAL = 0;
+
+    /**
+     * ERI (Enhanced Roaming Indicator) icon mode flash. This constant represents that
+     * the ERI icon should be flashing.
+     *
+     * Note: ERI is defined 3GPP2 C.R1001-H Table 8.1-1
+     * @hide
+     */
+    public static final int ERI_ICON_MODE_FLASH = 1;
+
+    /**
+     * Returns the CDMA ERI icon display number. The number is assigned by
+     * 3GPP2 C.R1001-H v1.0 Table 8.1-1. Additionally carriers define their own ERI display numbers.
+     * Defined values are {@link #ERI_ON}, {@link #ERI_OFF}, and {@link #ERI_FLASH}.
+     * @hide
+     */
+    @SystemApi
     @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
-    @NonNull
-    public CdmaEriInformation getCdmaEriInformation() {
-        return new CdmaEriInformation(
-               getCdmaEriIconIndex(getSubId()), getCdmaEriIconMode(getSubId()));
+    public @EriIconIndex int getCdmaEnhancedRoamingIndicatorDisplayNumber() {
+        return getCdmaEriIconIndex(getSubId());
     }
 
     /**
-     * Returns the CDMA ERI icon index to display for a subscription
+     * Returns the CDMA ERI icon index to display for a subscription.
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     @UnsupportedAppUsage
-    public int getCdmaEriIconIndex(int subId) {
+    public @EriIconIndex int getCdmaEriIconIndex(int subId) {
         try {
             ITelephony telephony = getITelephony();
             if (telephony == null)
@@ -5631,7 +5698,7 @@
      */
     @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     @UnsupportedAppUsage
-    public int getCdmaEriIconMode(int subId) {
+    public @EriIconMode int getCdmaEriIconMode(int subId) {
         try {
             ITelephony telephony = getITelephony();
             if (telephony == null)
@@ -6659,7 +6726,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean nvResetConfig(int resetType) {
         try {
             ITelephony telephony = getITelephony();
@@ -6928,7 +6995,7 @@
      * @return The value at the given index of settings.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static int getIntAtIndex(android.content.ContentResolver cr,
             String name, int index)
             throws android.provider.Settings.SettingNotFoundException {
@@ -6961,7 +7028,7 @@
      * @return true if the value was set, false on database errors
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static boolean putIntAtIndex(android.content.ContentResolver cr,
             String name, int index, int value) {
         String data = "";
@@ -7033,7 +7100,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static String getTelephonyProperty(String property, String defaultVal) {
         String propVal = SystemProperties.get(property);
         return TextUtils.isEmpty(propVal) ? defaultVal : propVal;
@@ -7326,87 +7393,13 @@
     }
 
     /**
-     * Returns the {@link IImsMmTelFeature} that corresponds to the given slot Id and MMTel
-     * feature or {@link null} if the service is not available. If an MMTelFeature is available, the
-     * {@link IImsServiceFeatureCallback} callback is registered as a listener for feature updates.
-     * @param slotIndex The SIM slot that we are requesting the {@link IImsMmTelFeature} for.
-     * @param callback Listener that will send updates to ImsManager when there are updates to
-     * ImsServiceController.
-     * @return {@link IImsMmTelFeature} interface for the feature specified or {@code null} if
-     * it is unavailable.
-     * @hide
-     */
-    public @Nullable IImsMmTelFeature getImsMmTelFeatureAndListen(int slotIndex,
-            IImsServiceFeatureCallback callback) {
-        try {
-            ITelephony telephony = getITelephony();
-            if (telephony != null) {
-                return telephony.getMmTelFeatureAndListen(slotIndex, callback);
-            }
-        } catch (RemoteException e) {
-            Rlog.e(TAG, "getImsMmTelFeatureAndListen, RemoteException: "
-                    + e.getMessage());
-        }
-        return null;
-    }
-
-    /**
-     * Returns the {@link IImsRcsFeature} that corresponds to the given slot Id and RCS
-     * feature for emergency calling or {@link null} if the service is not available. If an
-     * RcsFeature is available, the {@link IImsServiceFeatureCallback} callback is registered as a
-     * listener for feature updates.
-     * @param slotIndex The SIM slot that we are requesting the {@link IImsRcsFeature} for.
-     * @param callback Listener that will send updates to ImsManager when there are updates to
-     * ImsServiceController.
-     * @return {@link IImsRcsFeature} interface for the feature specified or {@code null} if
-     * it is unavailable.
-     * @hide
-     */
-    public @Nullable IImsRcsFeature getImsRcsFeatureAndListen(int slotIndex,
-            IImsServiceFeatureCallback callback) {
-        try {
-            ITelephony telephony = getITelephony();
-            if (telephony != null) {
-                return telephony.getRcsFeatureAndListen(slotIndex, callback);
-            }
-        } catch (RemoteException e) {
-            Rlog.e(TAG, "getImsRcsFeatureAndListen, RemoteException: "
-                    + e.getMessage());
-        }
-        return null;
-    }
-
-    /**
-     * Unregister a IImsServiceFeatureCallback previously associated with an ImsFeature through
-     * {@link #getImsMmTelFeatureAndListen(int, IImsServiceFeatureCallback)} or
-     * {@link #getImsRcsFeatureAndListen(int, IImsServiceFeatureCallback)}.
-     * @param slotIndex The SIM slot associated with the callback.
-     * @param featureType The {@link android.telephony.ims.feature.ImsFeature.FeatureType}
-     *                    associated with the callback.
-     * @param callback The callback to be unregistered.
-     * @hide
-     */
-    public void unregisterImsFeatureCallback(int slotIndex, int featureType,
-            IImsServiceFeatureCallback callback) {
-        try {
-            ITelephony telephony = getITelephony();
-            if (telephony != null) {
-                telephony.unregisterImsFeatureCallback(slotIndex, featureType, callback);
-            }
-        } catch (RemoteException e) {
-            Rlog.e(TAG, "unregisterImsFeatureCallback, RemoteException: "
-                    + e.getMessage());
-        }
-    }
-
-    /**
      * @return the {@IImsRegistration} interface that corresponds with the slot index and feature.
      * @param slotIndex The SIM slot corresponding to the ImsService ImsRegistration is active for.
      * @param feature An integer indicating the feature that we wish to get the ImsRegistration for.
      * Corresponds to features defined in ImsFeature.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public @Nullable IImsRegistration getImsRegistration(int slotIndex, int feature) {
         try {
             ITelephony telephony = getITelephony();
@@ -7426,7 +7419,7 @@
      * Corresponds to features defined in ImsFeature.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public @Nullable IImsConfig getImsConfig(int slotIndex, int feature) {
         try {
             ITelephony telephony = getITelephony();
@@ -7445,7 +7438,7 @@
      * @param Registration state
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setImsRegistrationState(boolean registered) {
         try {
             ITelephony telephony = getITelephony();
@@ -8112,7 +8105,7 @@
      * @deprecated Use {@link #setPreferredNetworkTypeBitmask} instead.
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean setPreferredNetworkType(int subId, @PrefNetworkMode int networkType) {
         try {
             ITelephony telephony = getITelephony();
@@ -8374,13 +8367,13 @@
     /**
      * Values used to return status for hasCarrierPrivileges call.
      */
-    /** @hide */ @SystemApi @TestApi
+    /** @hide */ @SystemApi
     public static final int CARRIER_PRIVILEGE_STATUS_HAS_ACCESS = 1;
-    /** @hide */ @SystemApi @TestApi
+    /** @hide */ @SystemApi
     public static final int CARRIER_PRIVILEGE_STATUS_NO_ACCESS = 0;
-    /** @hide */ @SystemApi @TestApi
+    /** @hide */ @SystemApi
     public static final int CARRIER_PRIVILEGE_STATUS_RULES_NOT_LOADED = -1;
-    /** @hide */ @SystemApi @TestApi
+    /** @hide */ @SystemApi
     public static final int CARRIER_PRIVILEGE_STATUS_ERROR_LOADING_RULES = -2;
 
     /**
@@ -8486,7 +8479,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean setRoamingOverride(List<String> gsmRoamingList,
             List<String> gsmNonRoamingList, List<String> cdmaRoamingList,
             List<String> cdmaNonRoamingList) {
@@ -8582,8 +8575,7 @@
 
     /** @hide */
     @SystemApi
-    @TestApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public int checkCarrierPrivilegesForPackage(String pkgName) {
         try {
             ITelephony telephony = getITelephony();
@@ -8599,7 +8591,7 @@
 
     /** @hide */
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public int checkCarrierPrivilegesForPackageAnyPhone(String pkgName) {
         try {
             ITelephony telephony = getITelephony();
@@ -8615,7 +8607,6 @@
 
     /** @hide */
     @SystemApi
-    @TestApi
     public List<String> getCarrierPackageNamesForIntent(Intent intent) {
         return getCarrierPackageNamesForIntentAndPhone(intent, getPhoneId());
     }
@@ -8676,7 +8667,7 @@
 
     /** @hide */
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public void dial(String number) {
         try {
             ITelephony telephony = getITelephony();
@@ -8735,7 +8726,7 @@
      */
     @Deprecated
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public void silenceRinger() {
         // No-op
     }
@@ -8834,9 +8825,13 @@
         return false;
     }
 
-    /** @hide */
+    /**
+     * @deprecated use {@link #supplyIccLockPin(String)} instead.
+     * @hide
+     */
     @SystemApi
     @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
+    @Deprecated
     public int[] supplyPinReportResult(String pin) {
         try {
             ITelephony telephony = getITelephony();
@@ -8848,65 +8843,91 @@
         return new int[0];
     }
 
-    /** @hide */
+    /**
+     * @deprecated use {@link #supplyIccLockPuk(String, String)} instead.
+     * @hide
+     */
     @SystemApi
     @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
+    @Deprecated
     public int[] supplyPukReportResult(String puk, String pin) {
         try {
             ITelephony telephony = getITelephony();
             if (telephony != null)
                 return telephony.supplyPukReportResultForSubscriber(getSubId(), puk, pin);
         } catch (RemoteException e) {
-            Log.e(TAG, "Error calling ITelephony#]", e);
+            Log.e(TAG, "Error calling ITelephony#supplyPukReportResultForSubscriber", e);
         }
         return new int[0];
     }
 
     /**
-     * Used when the user attempts to enter their pin.
+     * Supplies a PIN to unlock the ICC and returns the corresponding {@link PinResult}.
+     * Used when the user enters their ICC unlock PIN to attempt an unlock.
      *
-     * @param pin The user entered pin.
-     * @return The result of the pin.
+     * @param pin The user entered PIN.
+     * @return The result of the PIN.
+     * @throws SecurityException if the caller doesn't have the permission.
+     * @throws IllegalStateException if the Telephony process is not currently available.
+     *
+     * <p>Requires Permission:
+     * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE} or that the calling
+     * app has carrier privileges (see {@link #hasCarrierPrivileges}).
      *
      * @hide
      */
-    @Nullable
+    @SystemApi
+    @NonNull
     @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
-    public PinResult supplyPinReportPinResult(@NonNull String pin) {
+    public PinResult supplyIccLockPin(@NonNull String pin) {
         try {
             ITelephony telephony = getITelephony();
             if (telephony != null) {
                 int[] result = telephony.supplyPinReportResultForSubscriber(getSubId(), pin);
                 return new PinResult(result[0], result[1]);
+            } else {
+                throw new IllegalStateException("telephony service is null.");
             }
         } catch (RemoteException e) {
-            Log.e(TAG, "Error calling ITelephony#supplyPinReportResultForSubscriber", e);
+            Log.e(TAG, "Error calling ITelephony#supplyIccLockPin", e);
+            e.rethrowFromSystemServer();
         }
-        return null;
+        return PinResult.getDefaultFailedResult();
     }
 
     /**
-     * Used when the user attempts to enter the puk or their pin.
+     * Supplies a PUK and PIN to unlock the ICC and returns the corresponding {@link PinResult}.
+     * Used when the user enters their ICC unlock PUK and PIN to attempt an unlock.
      *
-     * @param puk The product unblocking key.
-     * @param pin The user entered pin.
-     * @return The result of the pin.
+     * @param puk The product unlocking key.
+     * @param pin The user entered PIN.
+     * @return The result of the PUK and PIN.
+     * @throws SecurityException if the caller doesn't have the permission.
+     * @throws IllegalStateException if the Telephony process is not currently available.
+     *
+     * <p>Requires Permission:
+     * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE} or that the calling
+     * app has carrier privileges (see {@link #hasCarrierPrivileges}).
      *
      * @hide
      */
-    @Nullable
+    @SystemApi
+    @NonNull
     @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
-    public PinResult supplyPukReportPinResult(@NonNull String puk, @NonNull String pin) {
+    public PinResult supplyIccLockPuk(@NonNull String puk, @NonNull String pin) {
         try {
             ITelephony telephony = getITelephony();
             if (telephony != null) {
                 int[] result = telephony.supplyPukReportResultForSubscriber(getSubId(), puk, pin);
                 return new PinResult(result[0], result[1]);
+            } else {
+                throw new IllegalStateException("telephony service is null.");
             }
         } catch (RemoteException e) {
-            Log.e(TAG, "Error calling ITelephony#]", e);
+            Log.e(TAG, "Error calling ITelephony#supplyIccLockPuk", e);
+            e.rethrowFromSystemServer();
         }
-        return null;
+        return PinResult.getDefaultFailedResult();
     }
 
     /**
@@ -9248,8 +9269,10 @@
      * app has carrier privileges (see {@link #hasCarrierPrivileges}).
      *
      * @param enable Whether to enable mobile data.
+     * @deprecated use setDataEnabledForReason with reason DATA_ENABLED_REASON_USER instead.
      *
      */
+    @Deprecated
     @SuppressAutoDoc // Blocked by b/72967236 - no support for carrier privileges
     @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
     public void setDataEnabled(boolean enable) {
@@ -9258,19 +9281,16 @@
 
     /**
      * @hide
-     * @deprecated use {@link #setDataEnabled(boolean)} instead.
+     * @deprecated use {@link #setDataEnabledForReason(int, boolean)} instead.
     */
     @SystemApi
     @Deprecated
     @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
     public void setDataEnabled(int subId, boolean enable) {
         try {
-            Log.d(TAG, "setDataEnabled: enabled=" + enable);
-            ITelephony telephony = getITelephony();
-            if (telephony != null)
-                telephony.setUserDataEnabled(subId, enable);
-        } catch (RemoteException e) {
-            Log.e(TAG, "Error calling ITelephony#setUserDataEnabled", e);
+            setDataEnabledForReason(subId, DATA_ENABLED_REASON_USER, enable);
+        } catch (RuntimeException e) {
+            Log.e(TAG, "Error calling setDataEnabledForReason e:" + e);
         }
     }
 
@@ -9344,11 +9364,22 @@
      * <p>If this object has been created with {@link #createForSubscriptionId}, applies to the
      * given subId. Otherwise, applies to {@link SubscriptionManager#getDefaultSubscriptionId()}
      *
-     * @return one of {@link #CDMA_ROAMING_MODE_RADIO_DEFAULT}, {@link #CDMA_ROAMING_MODE_HOME},
-     * {@link #CDMA_ROAMING_MODE_AFFILIATED}, {@link #CDMA_ROAMING_MODE_ANY}.
+     * @return the CDMA roaming mode.
+     * @throws SecurityException if the caller does not have the permission.
+     * @throws IllegalStateException if the Telephony process is not currently available.
+     *
+     * @see #CDMA_ROAMING_MODE_RADIO_DEFAULT
+     * @see #CDMA_ROAMING_MODE_HOME
+     * @see #CDMA_ROAMING_MODE_AFFILIATED
+     * @see #CDMA_ROAMING_MODE_ANY
+     *
+     * <p>Requires permission:
+     * {@link android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE READ_PRIVILEGED_PHONE_STATE}
+     * or that the calling app has carrier privileges (see {@link #hasCarrierPrivileges}).
      *
      * @hide
      */
+    @SystemApi
     @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public @CdmaRoamingMode int getCdmaRoamingMode() {
         int mode = CDMA_ROAMING_MODE_RADIO_DEFAULT;
@@ -9356,9 +9387,12 @@
             ITelephony telephony = getITelephony();
             if (telephony != null) {
                 mode = telephony.getCdmaRoamingMode(getSubId());
+            } else {
+                throw new IllegalStateException("telephony service is null.");
             }
         } catch (RemoteException ex) {
             Log.e(TAG, "Error calling ITelephony#getCdmaRoamingMode", ex);
+            ex.rethrowFromSystemServer();
         }
         return mode;
     }
@@ -9369,29 +9403,40 @@
      * <p>If this object has been created with {@link #createForSubscriptionId}, applies to the
      * given subId. Otherwise, applies to {@link SubscriptionManager#getDefaultSubscriptionId()}
      *
-     * @param mode should be one of {@link #CDMA_ROAMING_MODE_RADIO_DEFAULT},
-     * {@link #CDMA_ROAMING_MODE_HOME}, {@link #CDMA_ROAMING_MODE_AFFILIATED},
-     * {@link #CDMA_ROAMING_MODE_ANY}.
+     * @param mode CDMA roaming mode.
+     * @throws SecurityException if the caller does not have the permission.
+     * @throws IllegalStateException if the Telephony process or radio is not currently available.
      *
-     * @return {@code true} if successed.
+     * @see #CDMA_ROAMING_MODE_RADIO_DEFAULT
+     * @see #CDMA_ROAMING_MODE_HOME
+     * @see #CDMA_ROAMING_MODE_AFFILIATED
+     * @see #CDMA_ROAMING_MODE_ANY
+     *
+     * <p>Requires Permission:
+     * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE} or that the calling
+     * app has carrier privileges (see {@link #hasCarrierPrivileges}).
      *
      * @hide
      */
+    @SystemApi
     @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
-    public boolean setCdmaRoamingMode(@CdmaRoamingMode int mode) {
+    public void setCdmaRoamingMode(@CdmaRoamingMode int mode) {
         try {
             ITelephony telephony = getITelephony();
             if (telephony != null) {
-                return telephony.setCdmaRoamingMode(getSubId(), mode);
+                boolean result = telephony.setCdmaRoamingMode(getSubId(), mode);
+                if (!result) throw new IllegalStateException("radio is unavailable.");
+            } else {
+                throw new IllegalStateException("telephony service is null.");
             }
         } catch (RemoteException ex) {
             Log.e(TAG, "Error calling ITelephony#setCdmaRoamingMode", ex);
+            ex.rethrowFromSystemServer();
         }
-        return false;
     }
 
     /** @hide */
-    @IntDef(flag = true, prefix = { "CDMA_SUBSCRIPTION_" }, value = {
+    @IntDef(prefix = { "CDMA_SUBSCRIPTION_" }, value = {
             CDMA_SUBSCRIPTION_UNKNOWN,
             CDMA_SUBSCRIPTION_RUIM_SIM,
             CDMA_SUBSCRIPTION_NV
@@ -9399,48 +9444,94 @@
     @Retention(RetentionPolicy.SOURCE)
     public @interface CdmaSubscription{}
 
-    /** Used for CDMA subscription mode, it'll be UNKNOWN if there is no Subscription source.
+    /**
+     * Used for CDMA subscription mode, it'll be UNKNOWN if there is no Subscription source.
      * @hide
      */
+    @SystemApi
     public static final int CDMA_SUBSCRIPTION_UNKNOWN  = -1;
 
-    /** Used for CDMA subscription mode: RUIM/SIM (default)
+    /**
+     * Used for CDMA subscription mode: RUIM/SIM (default)
      * @hide
      */
+    @SystemApi
     public static final int CDMA_SUBSCRIPTION_RUIM_SIM = 0;
 
-    /** Used for CDMA subscription mode: NV -> non-volatile memory
+    /**
+     * Used for CDMA subscription mode: NV -> non-volatile memory
      * @hide
      */
+    @SystemApi
     public static final int CDMA_SUBSCRIPTION_NV       = 1;
 
-    /** @hide */
-    public static final int PREFERRED_CDMA_SUBSCRIPTION = CDMA_SUBSCRIPTION_RUIM_SIM;
-
     /**
-     * Sets the subscription mode for CDMA phone to the given mode {@code mode}.
+     * Gets the subscription mode for CDMA phone.
      *
-     * @param mode CDMA subscription mode
-     *
-     * @return {@code true} if successed.
+     * @return the CDMA subscription mode.
+     * @throws SecurityException if the caller does not have the permission.
+     * @throws IllegalStateException if the Telephony process or radio is not currently available.
      *
      * @see #CDMA_SUBSCRIPTION_UNKNOWN
      * @see #CDMA_SUBSCRIPTION_RUIM_SIM
      * @see #CDMA_SUBSCRIPTION_NV
      *
+     * <p>Requires Permission:
+     * {@link android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE READ_PRIVILEGED_PHONE_STATE}
+     * or that the calling app has carrier privileges (see {@link #hasCarrierPrivileges}).
+     *
      * @hide
      */
-    @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
-    public boolean setCdmaSubscriptionMode(@CdmaSubscription int mode) {
+    @SystemApi
+    @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
+    public @CdmaSubscription int getCdmaSubscriptionMode() {
+        int mode = CDMA_SUBSCRIPTION_RUIM_SIM;
         try {
             ITelephony telephony = getITelephony();
             if (telephony != null) {
-                return telephony.setCdmaSubscriptionMode(getSubId(), mode);
+                mode = telephony.getCdmaSubscriptionMode(getSubId());
+            } else {
+                throw new IllegalStateException("telephony service is null.");
+            }
+        } catch (RemoteException ex) {
+            Log.e(TAG, "Error calling ITelephony#getCdmaSubscriptionMode", ex);
+            ex.rethrowFromSystemServer();
+        }
+        return mode;
+    }
+
+    /**
+     * Sets the subscription mode for CDMA phone to the given mode {@code mode}.
+     *
+     * @param mode CDMA subscription mode.
+     * @throws SecurityException if the caller does not have the permission.
+     * @throws IllegalStateException if the Telephony process is not currently available.
+     *
+     * @see #CDMA_SUBSCRIPTION_UNKNOWN
+     * @see #CDMA_SUBSCRIPTION_RUIM_SIM
+     * @see #CDMA_SUBSCRIPTION_NV
+     *
+     * <p>Requires Permission:
+     * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE} or that the calling
+     * app has carrier privileges (see {@link #hasCarrierPrivileges}).
+     *
+     * @hide
+     */
+    @SystemApi
+    @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
+    public void setCdmaSubscriptionMode(@CdmaSubscription int mode) {
+        try {
+            ITelephony telephony = getITelephony();
+            if (telephony != null) {
+                boolean result = telephony.setCdmaSubscriptionMode(getSubId(), mode);
+                if (!result) throw new IllegalStateException("radio is unavailable.");
+            } else {
+                throw new IllegalStateException("telephony service is null.");
             }
         } catch (RemoteException ex) {
             Log.e(TAG, "Error calling ITelephony#setCdmaSubscriptionMode", ex);
+            ex.rethrowFromSystemServer();
         }
-        return false;
     }
 
     /**
@@ -9478,15 +9569,12 @@
     @Deprecated
     @SystemApi
     public boolean getDataEnabled(int subId) {
-        boolean retVal = false;
         try {
-            ITelephony telephony = getITelephony();
-            if (telephony != null)
-                retVal = telephony.isUserDataEnabled(subId);
-        } catch (RemoteException | NullPointerException e) {
-            Log.e(TAG, "Error calling ITelephony#isUserDataEnabled", e);
+            return isDataEnabledForReason(DATA_ENABLED_REASON_USER);
+        } catch (RuntimeException e) {
+            Log.e(TAG, "Error calling isDataEnabledForReason e:" + e);
         }
-        return retVal;
+        return false;
     }
 
     /**
@@ -9782,7 +9870,7 @@
     *
     * @hide
     */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setSimOperatorNumericForPhone(int phoneId, String numeric) {
         if (SubscriptionManager.isValidPhoneId(phoneId)) {
             List<String> newList = updateTelephonyProperty(
@@ -10121,7 +10209,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(Manifest.permission.INTERACT_ACROSS_USERS)
     public @Nullable ComponentName getAndUpdateDefaultRespondViaMessageApplication() {
         return SmsApplication.getDefaultRespondViaMessageApplication(mContext, true);
@@ -10134,7 +10221,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(Manifest.permission.INTERACT_ACROSS_USERS)
     public @Nullable ComponentName getDefaultRespondViaMessageApplication() {
         return SmsApplication.getDefaultRespondViaMessageApplication(mContext, false);
@@ -10156,7 +10242,7 @@
      * @param name the alphabetic name of current registered operator.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setNetworkOperatorNameForPhone(int phoneId, String name) {
         if (SubscriptionManager.isValidPhoneId(phoneId)) {
             List<String> newList = updateTelephonyProperty(
@@ -10181,7 +10267,7 @@
      * @param operator the numeric name (MCC+MNC) of current registered operator
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setNetworkOperatorNumericForPhone(int phoneId, String numeric) {
         if (SubscriptionManager.isValidPhoneId(phoneId)) {
             List<String> newList = updateTelephonyProperty(
@@ -10206,7 +10292,7 @@
      * @param isRoaming is network in romaing state or not
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setNetworkRoamingForPhone(int phoneId, boolean isRoaming) {
         if (SubscriptionManager.isValidPhoneId(phoneId)) {
             List<Boolean> newList = updateTelephonyProperty(
@@ -10235,7 +10321,7 @@
      * @param type the network type currently in use on the device for data transmission
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setDataNetworkTypeForPhone(int phoneId, int type) {
         if (SubscriptionManager.isValidPhoneId(phoneId)) {
             List<String> newList = updateTelephonyProperty(
@@ -10417,22 +10503,31 @@
      * <p>If this object has been created with {@link #createForSubscriptionId}, applies to the
      * given subId. Otherwise, applies to {@link SubscriptionManager#getDefaultSubscriptionId()}
      *
+     * If you want continuous updates of service state info, register a {@link PhoneStateListener}
+     * via {@link #listen} with the {@link PhoneStateListener#LISTEN_SERVICE_STATE} event.
+     *
      * <p>Requires Permission: {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
      * or that the calling app has carrier privileges (see {@link #hasCarrierPrivileges})
      * and {@link android.Manifest.permission#ACCESS_COARSE_LOCATION}.
+     *
+     * May return {@code null} when the subscription is inactive or when there was an error
+     * communicating with the phone process.
      */
     @SuppressAutoDoc // Blocked by b/72967236 - no support for carrier privileges
     @RequiresPermission(allOf = {
             Manifest.permission.READ_PHONE_STATE,
             Manifest.permission.ACCESS_COARSE_LOCATION
     })
-    public ServiceState getServiceState() {
+    public @Nullable ServiceState getServiceState() {
         return getServiceStateForSubscriber(getSubId());
     }
 
     /**
      * Returns the service state information on specified subscription. Callers require
      * either READ_PRIVILEGED_PHONE_STATE or READ_PHONE_STATE to retrieve the information.
+     *
+     * May return {@code null} when the subscription is inactive or when there was an error
+     * communicating with the phone process.
      * @hide
      */
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
@@ -10459,9 +10554,9 @@
      * @param accountHandle The handle for the {@link PhoneAccount} for which to retrieve the
      * voicemail ringtone.
      * @return The URI for the ringtone to play when receiving a voicemail from a specific
-     * PhoneAccount.
+     * PhoneAccount. May be {@code null} if no ringtone is set.
      */
-    public Uri getVoicemailRingtoneUri(PhoneAccountHandle accountHandle) {
+    public @Nullable Uri getVoicemailRingtoneUri(PhoneAccountHandle accountHandle) {
         try {
             ITelephony service = getITelephony();
             if (service != null) {
@@ -11037,19 +11132,18 @@
      *
      * @param enabled control enable or disable carrier data.
      * @see #resetAllCarrierActions()
+     * @deprecated use {@link #setDataEnabledForReason(int, boolean) with
+     * reason {@link #DATA_ENABLED_REASON_CARRIER}} instead.
      * @hide
      */
+    @Deprecated
     @SystemApi
     @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
     public void setCarrierDataEnabled(boolean enabled) {
         try {
-            ITelephony service = getITelephony();
-            if (service != null) {
-                service.carrierActionSetMeteredApnsEnabled(
-                        getSubId(SubscriptionManager.getDefaultDataSubscriptionId()), enabled);
-            }
-        } catch (RemoteException e) {
-            Log.e(TAG, "Error calling ITelephony#setCarrierDataEnabled", e);
+            setDataEnabledForReason(DATA_ENABLED_REASON_CARRIER, enabled);
+        } catch (RuntimeException e) {
+            Log.e(TAG, "Error calling setDataEnabledForReason e:" + e);
         }
     }
 
@@ -11135,21 +11229,145 @@
     /**
      * Policy control of data connection. Usually used when data limit is passed.
      * @param enabled True if enabling the data, otherwise disabling.
+     * @deprecated use {@link #setDataEnabledForReason(int, boolean) with
+     * reason {@link #DATA_ENABLED_REASON_POLICY}} instead.
      * @hide
      */
+    @Deprecated
     @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
     public void setPolicyDataEnabled(boolean enabled) {
         try {
+            setDataEnabledForReason(DATA_ENABLED_REASON_POLICY, enabled);
+        } catch (RuntimeException e) {
+            Log.e(TAG, "Error calling setDataEnabledForReason e:" + e);
+        }
+    }
+
+    /** @hide */
+    @IntDef({
+            DATA_ENABLED_REASON_USER,
+            DATA_ENABLED_REASON_POLICY,
+            DATA_ENABLED_REASON_CARRIER,
+            DATA_ENABLED_REASON_THERMAL
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface DataEnabledReason{}
+
+    /**
+     * To indicate that user enabled or disabled data.
+     */
+    public static final int DATA_ENABLED_REASON_USER = 0;
+
+    /**
+     * To indicate that data control due to policy. Usually used when data limit is passed.
+     * Policy data on/off won't affect user settings but will bypass the
+     * settings and turns off data internally if set to {@code false}.
+     */
+    public static final int DATA_ENABLED_REASON_POLICY = 1;
+
+    /**
+     * To indicate enable or disable carrier data by the system based on carrier signalling or
+     * carrier privileged apps. Carrier data on/off won't affect user settings but will bypass the
+     * settings and turns off data internally if set to {@code false}.
+     */
+    public static final int DATA_ENABLED_REASON_CARRIER = 2;
+
+    /**
+     * To indicate enable or disable data by thermal service.
+     * Thermal data on/off won't affect user settings but will bypass the
+     * settings and turns off data internally if set to {@code false}.
+     */
+    public static final int DATA_ENABLED_REASON_THERMAL = 3;
+
+    /**
+     * Control of data connection and provide the reason triggering the data connection control.
+     * This can be called for following reasons
+     * <ol>
+     * <li>data limit is passed {@link #DATA_ENABLED_REASON_POLICY}
+     * <li>data disabled by carrier {@link #DATA_ENABLED_REASON_CARRIER}
+     * <li>data disabled by user {@link #DATA_ENABLED_REASON_USER}
+     * <li>data disabled due to thermal {@link #DATA_ENABLED_REASON_THERMAL}
+     * </ol>
+     * If any of the reason is off, then it will result in
+     * bypassing user preference and result in data to be turned off.
+     *
+     * <p>If this object has been created with {@link #createForSubscriptionId}, applies
+     *      to the given subId. Otherwise, applies to
+     * {@link SubscriptionManager#getDefaultDataSubscriptionId()}
+     *
+     *
+     * @param reason the reason the data enable change is taking place
+     * @param enabled True if enabling the data, otherwise disabling.
+     *
+     * <p>Requires Permission:
+     * The calling app has carrier privileges (see {@link #hasCarrierPrivileges}) if the reason is
+     * {@link #DATA_ENABLED_REASON_USER} or {@link #DATA_ENABLED_REASON_CARRIER} or the call app
+     * has {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE} irrespective of
+     * the reason.
+     * @throws IllegalStateException if the Telephony process is not currently available.
+     */
+    @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
+    public void setDataEnabledForReason(@DataEnabledReason int reason, boolean enabled) {
+        setDataEnabledForReason(getSubId(), reason, enabled);
+    }
+
+    private void setDataEnabledForReason(int subId, @DataEnabledReason int reason,
+            boolean enabled) {
+        try {
             ITelephony service = getITelephony();
             if (service != null) {
-                service.setPolicyDataEnabled(enabled, getSubId());
+                service.setDataEnabledForReason(subId, reason, enabled);
+            } else {
+                throw new IllegalStateException("telephony service is null.");
             }
-        } catch (RemoteException e) {
-            Log.e(TAG, "Error calling ITelephony#setPolicyDataEnabled", e);
+        } catch (RemoteException ex) {
+            Log.e(TAG, "Telephony#setDataEnabledForReason RemoteException", ex);
+            ex.rethrowFromSystemServer();
         }
     }
 
     /**
+     * Return whether data is enabled for certain reason .
+     *
+     * If {@link #isDataEnabledForReason} returns false, it means in data enablement for a
+     * specific reason is turned off. If any of the reason is off, then it will result in
+     * bypassing user preference and result in data to be turned off. Call
+     * {@link #isDataConnectionAllowed} in order to know whether
+     * data connection is allowed on the device.
+     *
+     * <p>If this object has been created with {@link #createForSubscriptionId}, applies
+     *      to the given subId. Otherwise, applies to
+     * {@link SubscriptionManager#getDefaultDataSubscriptionId()}
+     *
+     * @param reason the reason the data enable change is taking place
+     * @return whether data is enabled for a reason.
+     * <p>Requires Permission:
+     * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} or
+     * {@link android.Manifest.permission#ACCESS_NETWORK_STATE}
+     * @throws IllegalStateException if the Telephony process is not currently available.
+     */
+    @RequiresPermission(anyOf = {android.Manifest.permission.ACCESS_NETWORK_STATE,
+            android.Manifest.permission.READ_PHONE_STATE})
+    public boolean isDataEnabledForReason(@DataEnabledReason int reason) {
+        return isDataEnabledForReason(getSubId(), reason);
+    }
+
+    private boolean isDataEnabledForReason(int subId, @DataEnabledReason int reason) {
+        try {
+            ITelephony service = getITelephony();
+            if (service != null) {
+                return service.isDataEnabledForReason(subId, reason);
+            } else {
+                throw new IllegalStateException("telephony service is null.");
+            }
+        } catch (RemoteException ex) {
+            Log.e(TAG, "Telephony#isDataEnabledForReason RemoteException", ex);
+            ex.rethrowFromSystemServer();
+        }
+        return false;
+    }
+
+    /**
      * Get Client request stats which will contain statistical information
      * on each request made by client.
      * Callers require either READ_PRIVILEGED_PHONE_STATE or
@@ -11284,10 +11502,14 @@
      *   <LI>And possibly others.</LI>
      * </UL>
      * @return {@code true} if the overall data connection is allowed; {@code false} if not.
-     * @hide
+     * <p>Requires Permission:
+     * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} or
+     * {@link android.Manifest.permission#ACCESS_NETWORK_STATE} or
+     * android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE
      */
-    @SystemApi
-    @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
+    @RequiresPermission(anyOf = {android.Manifest.permission.ACCESS_NETWORK_STATE,
+            android.Manifest.permission.READ_PHONE_STATE,
+            android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE})
     public boolean isDataConnectionAllowed() {
         boolean retVal = false;
         try {
@@ -11725,12 +11947,13 @@
      * @hide
      */
     @SystemApi
+    @TestApi
     @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public @NetworkTypeBitMask long getSupportedRadioAccessFamily() {
         try {
             ITelephony telephony = getITelephony();
             if (telephony != null) {
-                return (long) telephony.getRadioAccessFamily(getSlotIndex(), getOpPackageName());
+                return telephony.getRadioAccessFamily(getSlotIndex(), getOpPackageName());
             } else {
                 // This can happen when the ITelephony interface is not up yet.
                 return NETWORK_TYPE_BITMASK_UNKNOWN;
@@ -11749,7 +11972,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     public static final int INVALID_EMERGENCY_NUMBER_DB_VERSION = -1;
 
@@ -11789,7 +12011,6 @@
      */
     @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION)
     @SystemApi
-    @TestApi
     public void updateOtaEmergencyNumberDbFilePath(
             @NonNull ParcelFileDescriptor otaParcelFileDescriptor) {
         try {
@@ -11815,7 +12036,6 @@
      */
     @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION)
     @SystemApi
-    @TestApi
     public void resetOtaEmergencyNumberDbFilePath() {
         try {
             ITelephony telephony = getITelephony();
@@ -12036,7 +12256,6 @@
      *
      * @hide
      */
-    @TestApi
     @SystemApi
     @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public int getEmergencyNumberDbVersion() {
@@ -12703,7 +12922,7 @@
      *  1) User data is turned on, or
      *  2) APN is un-metered for this subscription, or
      *  3) APN type is whitelisted. E.g. MMS is whitelisted if
-     *  {@link #setAlwaysAllowMmsData(boolean)} is turned on.
+     *  {@link #MOBILE_DATA_POLICY_MMS_ALWAYS_ALLOWED} is enabled.
      *
      * @param apnType Value indicating the apn type. Apn types are defined in {@link ApnSetting}.
      * @return whether data is enabled for a apn type.
@@ -12764,7 +12983,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
     public void setSystemSelectionChannels(@NonNull List<RadioAccessSpecifier> specifiers,
             @NonNull @CallbackExecutor Executor executor,
@@ -12782,7 +13000,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
     public void setSystemSelectionChannels(@NonNull List<RadioAccessSpecifier> specifiers) {
         Objects.requireNonNull(specifiers, "Specifiers must not be null.");
@@ -12844,218 +13061,402 @@
     }
 
     /**
-     * Gets the voice call forwarding info {@link CallForwardingInfo}, given the call forward
-     * reason.
+     * Callback to be used with {@link #getCallForwarding}
+     * @hide
+     */
+    @SystemApi
+    public interface CallForwardingInfoCallback {
+        /**
+         * Indicates that the operation was successful.
+         */
+        int RESULT_SUCCESS = 0;
+
+        /**
+         * Indicates that setting or retrieving the call forwarding info failed with an unknown
+         * error.
+         */
+        int RESULT_ERROR_UNKNOWN = 1;
+
+        /**
+         * Indicates that call forwarding is not enabled because the recipient is not on a
+         * Fixed Dialing Number (FDN) list.
+         */
+        int RESULT_ERROR_FDN_CHECK_FAILURE = 2;
+
+        /**
+         * Indicates that call forwarding is not supported on the network at this time.
+         */
+        int RESULT_ERROR_NOT_SUPPORTED = 3;
+
+        /**
+         * Call forwarding errors
+         * @hide
+         */
+        @IntDef(prefix = { "RESULT_ERROR_" }, value = {
+                RESULT_ERROR_UNKNOWN,
+                RESULT_ERROR_NOT_SUPPORTED,
+                RESULT_ERROR_FDN_CHECK_FAILURE
+        })
+        @Retention(RetentionPolicy.SOURCE)
+        @interface CallForwardingError{
+        }
+        /**
+         * Called when the call forwarding info is successfully retrieved from the network.
+         * @param info information about how calls are forwarded
+         */
+        void onCallForwardingInfoAvailable(@NonNull CallForwardingInfo info);
+
+        /**
+         * Called when there was an error retrieving the call forwarding information.
+         * @param error
+         */
+        void onError(@CallForwardingError int error);
+    }
+
+    /**
+     * Gets the voice call forwarding info for a given call forwarding reason.
      *
-     * @param callForwardingReason the call forwarding reasons
+     * This method queries the network for the currently set call forwarding configuration for the
+     * provided call forwarding reason. When the network has provided its response, the result will
+     * be supplied via the provided {@link Executor} on the provided
+     * {@link CallForwardingInfoCallback}.
+     *
+     * @param callForwardingReason the call forwarding reason to query.
+     * @param executor The executor on which to execute the callback once the result is ready.
+     * @param callback The callback the results should be delivered on.
      *
      * @throws IllegalArgumentException if callForwardingReason is not any of
-     * {@link CallForwardingInfo.REASON_UNCONDITIONAL}, {@link CallForwardingInfo.REASON_BUSY},
-     * {@link CallForwardingInfo.REASON_NO_REPLY}, {@link CallForwardingInfo.REASON_NOT_REACHABLE},
-     * {@link CallForwardingInfo.REASON_ALL}, {@link CallForwardingInfo.REASON_ALL_CONDITIONAL}
-     *
-     * @return {@link CallForwardingInfo} with the status {@link CallForwardingInfo#STATUS_ACTIVE}
-     * or {@link CallForwardingInfo#STATUS_INACTIVE} and the target phone number to forward calls
-     * to, if it's available. Otherwise, it will return a {@link CallForwardingInfo} with status
-     * {@link CallForwardingInfo#STATUS_UNKNOWN_ERROR},
-     * {@link CallForwardingInfo#STATUS_NOT_SUPPORTED},
-     * or {@link CallForwardingInfo#STATUS_FDN_CHECK_FAILURE} depending on the situation.
+     * {@link CallForwardingInfo#REASON_UNCONDITIONAL}, {@link CallForwardingInfo#REASON_BUSY},
+     * {@link CallForwardingInfo#REASON_NO_REPLY}, {@link CallForwardingInfo#REASON_NOT_REACHABLE},
+     * {@link CallForwardingInfo#REASON_ALL}, or {@link CallForwardingInfo#REASON_ALL_CONDITIONAL}
      *
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
-    @NonNull
-    public CallForwardingInfo getCallForwarding(@CallForwardingReason int callForwardingReason) {
+    @SystemApi
+    public void getCallForwarding(@CallForwardingReason int callForwardingReason,
+            @NonNull Executor executor, @NonNull CallForwardingInfoCallback callback) {
         if (callForwardingReason < CallForwardingInfo.REASON_UNCONDITIONAL
                 || callForwardingReason > CallForwardingInfo.REASON_ALL_CONDITIONAL) {
             throw new IllegalArgumentException("callForwardingReason is out of range");
         }
+
+        ICallForwardingInfoCallback internalCallback = new ICallForwardingInfoCallback.Stub() {
+            @Override
+            public void onCallForwardingInfoAvailable(CallForwardingInfo info) {
+                executor.execute(() ->
+                        Binder.withCleanCallingIdentity(() ->
+                                callback.onCallForwardingInfoAvailable(info)));
+            }
+
+            @Override
+            public void onError(int error) {
+                executor.execute(() ->
+                        Binder.withCleanCallingIdentity(() ->
+                                callback.onError(error)));
+            }
+        };
+
         try {
             ITelephony telephony = getITelephony();
             if (telephony != null) {
-                return telephony.getCallForwarding(getSubId(), callForwardingReason);
+                telephony.getCallForwarding(getSubId(), callForwardingReason, internalCallback);
             }
         } catch (RemoteException ex) {
             Rlog.e(TAG, "getCallForwarding RemoteException", ex);
-        } catch (NullPointerException ex) {
-            Rlog.e(TAG, "getCallForwarding NPE", ex);
+            ex.rethrowAsRuntimeException();
         }
-        return new CallForwardingInfo(
-                CallForwardingInfo.STATUS_UNKNOWN_ERROR, 0 /* reason */, null /* number */,
-                        0 /* timeout */);
     }
 
     /**
-     * Sets the voice call forwarding info including status (enable/disable), call forwarding
-     * reason, the number to forward, and the timeout before the forwarding is attempted.
+     * Sets voice call forwarding behavior as described by the provided {@link CallForwardingInfo}.
      *
-     * @param callForwardingInfo {@link CallForwardingInfo} to setup the call forwarding.
-     * Enabling if {@link CallForwardingInfo#getStatus()} returns
-     * {@link CallForwardingInfo#STATUS_ACTIVE}; Disabling if
-     * {@link CallForwardingInfo#getStatus()} returns {@link CallForwardingInfo#STATUS_INACTIVE}.
+     * This method will enable call forwarding if the provided {@link CallForwardingInfo} returns
+     * {@code true} from its {@link CallForwardingInfo#isEnabled()} method, and disables call
+     * forwarding otherwise.
      *
-     * @throws IllegalArgumentException if any of the following for parameter callForwardingInfo:
-     * 0) it is {@code null}.
-     * 1) {@link CallForwardingInfo#getStatus()} returns neither
-     * {@link CallForwardingInfo#STATUS_ACTIVE} nor {@link CallForwardingInfo#STATUS_INACTIVE}.
-     * 2) {@link CallForwardingInfo#getReason()} is not any of
-     * {@link CallForwardingInfo.REASON_UNCONDITIONAL}, {@link CallForwardingInfo.REASON_BUSY},
-     * {@link CallForwardingInfo.REASON_NO_REPLY}, {@link CallForwardingInfo.REASON_NOT_REACHABLE},
-     * {@link CallForwardingInfo.REASON_ALL}, {@link CallForwardingInfo.REASON_ALL_CONDITIONAL}
-     * 3) {@link CallForwardingInfo#getNumber()} returns {@code null}.
-     * 4) {@link CallForwardingInfo#getTimeoutSeconds()} doesn't return a positive value.
+     * If you wish to be notified about the results of this operation, provide an {@link Executor}
+     * and {@link Consumer<Integer>} to be notified asynchronously when the operation completes.
      *
-     * @return {@code true} to indicate it was set successfully; {@code false} otherwise.
+     * @param callForwardingInfo Info about whether calls should be forwarded and where they
+     *                           should be forwarded to.
+     * @param executor The executor on which the listener will be called. Must be non-null if
+     *                 {@code listener} is non-null.
+     * @param resultListener Asynchronous listener that'll be called when the operation completes.
+     *                      Called with {@link CallForwardingInfoCallback#RESULT_SUCCESS} if the
+     *                      operation succeeded and an error code from
+     *                      {@link CallForwardingInfoCallback} it failed.
      *
+     * @throws IllegalArgumentException if any of the following are true for the parameter
+     * callForwardingInfo:
+     * <ul>
+     * <li>it is {@code null}.</li>
+     * <li>{@link CallForwardingInfo#getReason()} is not any of:
+     *     <ul>
+     *         <li>{@link CallForwardingInfo#REASON_UNCONDITIONAL}</li>
+     *         <li>{@link CallForwardingInfo#REASON_BUSY}</li>
+     *         <li>{@link CallForwardingInfo#REASON_NO_REPLY}</li>
+     *         <li>{@link CallForwardingInfo#REASON_NOT_REACHABLE}</li>
+     *         <li>{@link CallForwardingInfo#REASON_ALL}</li>
+     *         <li>{@link CallForwardingInfo#REASON_ALL_CONDITIONAL}</li>
+     *     </ul>
+     * <li>{@link CallForwardingInfo#getNumber()} returns {@code null} when enabling call
+     * forwarding</li>
+     * <li>{@link CallForwardingInfo#getTimeoutSeconds()} returns a non-positive value when
+     * enabling call forwarding</li>
+     * </ul>
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
-    public boolean setCallForwarding(@NonNull CallForwardingInfo callForwardingInfo) {
+    @SystemApi
+    public void setCallForwarding(@NonNull CallForwardingInfo callForwardingInfo,
+            @Nullable @CallbackExecutor Executor executor,
+            @Nullable @CallForwardingInfoCallback.CallForwardingError
+                    Consumer<Integer> resultListener) {
         if (callForwardingInfo == null) {
             throw new IllegalArgumentException("callForwardingInfo is null");
         }
-        int callForwardingStatus = callForwardingInfo.getStatus();
-        if (callForwardingStatus != CallForwardingInfo.STATUS_ACTIVE
-                && callForwardingStatus != CallForwardingInfo.STATUS_INACTIVE) {
-            throw new IllegalArgumentException(
-                    "callForwardingStatus is neither active nor inactive");
-        }
         int callForwardingReason = callForwardingInfo.getReason();
         if (callForwardingReason < CallForwardingInfo.REASON_UNCONDITIONAL
                 || callForwardingReason > CallForwardingInfo.REASON_ALL_CONDITIONAL) {
             throw new IllegalArgumentException("callForwardingReason is out of range");
         }
-        if (callForwardingInfo.getNumber() == null) {
-            throw new IllegalArgumentException("callForwarding number is null");
+        if (callForwardingInfo.isEnabled()) {
+            if (callForwardingInfo.getNumber() == null) {
+                throw new IllegalArgumentException("callForwarding number is null");
+            }
+            if (callForwardingInfo.getTimeoutSeconds() <= 0) {
+                throw new IllegalArgumentException("callForwarding timeout isn't positive");
+            }
         }
-        if (callForwardingInfo.getTimeoutSeconds() <= 0) {
-            throw new IllegalArgumentException("callForwarding timeout isn't positive");
+        if (resultListener != null) {
+            Objects.requireNonNull(executor);
         }
+
+        IIntegerConsumer internalCallback = new IIntegerConsumer.Stub() {
+            @Override
+            public void accept(int result) {
+                executor.execute(() ->
+                        Binder.withCleanCallingIdentity(() -> resultListener.accept(result)));
+            }
+        };
+
         try {
             ITelephony telephony = getITelephony();
             if (telephony != null) {
-                return telephony.setCallForwarding(getSubId(), callForwardingInfo);
+                telephony.setCallForwarding(getSubId(), callForwardingInfo, internalCallback);
             }
         } catch (RemoteException ex) {
             Rlog.e(TAG, "setCallForwarding RemoteException", ex);
+            ex.rethrowAsRuntimeException();
         } catch (NullPointerException ex) {
             Rlog.e(TAG, "setCallForwarding NPE", ex);
+            throw ex;
         }
-        return false;
     }
 
     /**
-     * Indicates the call waiting status is active.
+     * Indicates that call waiting is enabled.
      *
      * @hide
      */
-    public static final int CALL_WAITING_STATUS_ACTIVE = 1;
+    @SystemApi
+    public static final int CALL_WAITING_STATUS_ENABLED = 1;
 
     /**
-     * Indicates the call waiting status is inactive.
+     * Indicates that call waiting is disabled.
      *
      * @hide
      */
-    public static final int CALL_WAITING_STATUS_INACTIVE = 2;
+    @SystemApi
+    public static final int CALL_WAITING_STATUS_DISABLED = 2;
 
     /**
-     * Indicates the call waiting status is with an unknown error.
+     * Indicates there was an unknown error retrieving the call waiting status.
      *
      * @hide
      */
+    @SystemApi
     public static final int CALL_WAITING_STATUS_UNKNOWN_ERROR = 3;
 
     /**
-     * Indicates the call waiting is not supported (e.g. called via CDMA).
+     * Indicates the call waiting is not supported on the current network.
      *
      * @hide
      */
+    @SystemApi
     public static final int CALL_WAITING_STATUS_NOT_SUPPORTED = 4;
 
     /**
-     * Call waiting function status
-     *
      * @hide
      */
     @IntDef(prefix = { "CALL_WAITING_STATUS_" }, value = {
-        CALL_WAITING_STATUS_ACTIVE,
-        CALL_WAITING_STATUS_INACTIVE,
-        CALL_WAITING_STATUS_NOT_SUPPORTED,
-        CALL_WAITING_STATUS_UNKNOWN_ERROR
+            CALL_WAITING_STATUS_ENABLED,
+            CALL_WAITING_STATUS_DISABLED,
+            CALL_WAITING_STATUS_UNKNOWN_ERROR,
+            CALL_WAITING_STATUS_NOT_SUPPORTED,
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface CallWaitingStatus {
     }
 
     /**
-     * Gets the status of voice call waiting function. Call waiting function enables the waiting
-     * for the incoming call when it reaches the user who is busy to make another call and allows
-     * users to decide whether to switch to the incoming call.
+     * Retrieves the call waiting status of this device from the network.
      *
-     * @return the status of call waiting function.
+     * When call waiting is enabled, an incoming call that arrives when the user is already on
+     * an active call will be held in a waiting state while the user is notified instead of being
+     * rejected with a busy signal.
+     *
+     * @param executor The executor on which the result listener will be called.
+     * @param resultListener A {@link Consumer} that will be called with the result fetched
+     *                       from the network. The result will be one of:
+     *                       <ul>
+     *                          <li>{@link #CALL_WAITING_STATUS_ENABLED}}</li>
+     *                          <li>{@link #CALL_WAITING_STATUS_DISABLED}}</li>
+     *                          <li>{@link #CALL_WAITING_STATUS_UNKNOWN_ERROR}}</li>
+     *                          <li>{@link #CALL_WAITING_STATUS_NOT_SUPPORTED}}</li>
+     *                       </ul>
      * @hide
      */
+    @SystemApi
     @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
-    public @CallWaitingStatus int getCallWaitingStatus() {
+    public void getCallWaitingStatus(@NonNull Executor executor,
+            @NonNull @CallWaitingStatus Consumer<Integer> resultListener) {
+        Objects.requireNonNull(executor);
+        Objects.requireNonNull(resultListener);
+
+        IIntegerConsumer internalCallback = new IIntegerConsumer.Stub() {
+            @Override
+            public void accept(int result) {
+                executor.execute(() -> Binder.withCleanCallingIdentity(
+                        () -> resultListener.accept(result)));
+            }
+        };
+
         try {
             ITelephony telephony = getITelephony();
             if (telephony != null) {
-                return telephony.getCallWaitingStatus(getSubId());
+                telephony.getCallWaitingStatus(getSubId(), internalCallback);
             }
         } catch (RemoteException ex) {
             Rlog.e(TAG, "getCallWaitingStatus RemoteException", ex);
+            ex.rethrowAsRuntimeException();
         } catch (NullPointerException ex) {
             Rlog.e(TAG, "getCallWaitingStatus NPE", ex);
+            throw ex;
         }
-        return CALL_WAITING_STATUS_UNKNOWN_ERROR;
     }
 
     /**
-     * Sets the status for voice call waiting function. Call waiting function enables the waiting
-     * for the incoming call when it reaches the user who is busy to make another call and allows
-     * users to decide whether to switch to the incoming call.
+     * Sets the call waiting status of this device with the network.
      *
-     * @param isEnable {@code true} to enable; {@code false} to disable.
-     * @return {@code true} to indicate it was set successfully; {@code false} otherwise.
+     * If you wish to be notified about the results of this operation, provide an {@link Executor}
+     * and {@link Consumer<Integer>} to be notified asynchronously when the operation completes.
      *
+     * @see #getCallWaitingStatus for a description of the call waiting functionality.
+     *
+     * @param enabled {@code true} to enable; {@code false} to disable.
+     * @param executor The executor on which the listener will be called. Must be non-null if
+     *                 {@code listener} is non-null.
+     * @param resultListener Asynchronous listener that'll be called when the operation completes.
+     *                       Called with the new call waiting status (either
+     *                       {@link #CALL_WAITING_STATUS_ENABLED} or
+     *                       {@link #CALL_WAITING_STATUS_DISABLED} if the operation succeeded and
+     *                       {@link #CALL_WAITING_STATUS_NOT_SUPPORTED} or
+     *                       {@link #CALL_WAITING_STATUS_UNKNOWN_ERROR} if it failed.
      * @hide
      */
+    @SystemApi
     @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
-    public boolean setCallWaitingStatus(boolean isEnable) {
+    public void setCallWaitingEnabled(boolean enabled, @Nullable Executor executor,
+            @Nullable Consumer<Integer> resultListener) {
+        if (resultListener != null) {
+            Objects.requireNonNull(executor);
+        }
+
+        IIntegerConsumer internalCallback = new IIntegerConsumer.Stub() {
+            @Override
+            public void accept(int result) {
+                executor.execute(() ->
+                        Binder.withCleanCallingIdentity(() -> resultListener.accept(result)));
+            }
+        };
+
         try {
             ITelephony telephony = getITelephony();
             if (telephony != null) {
-                return telephony.setCallWaitingStatus(getSubId(), isEnable);
+                telephony.setCallWaitingStatus(getSubId(), enabled, internalCallback);
             }
         } catch (RemoteException ex) {
             Rlog.e(TAG, "setCallWaitingStatus RemoteException", ex);
+            ex.rethrowAsRuntimeException();
         } catch (NullPointerException ex) {
             Rlog.e(TAG, "setCallWaitingStatus NPE", ex);
+            throw ex;
         }
-        return false;
     }
 
     /**
-     * Set allowing mobile data during voice call. This is used for allowing data on the non-default
-     * data SIM. When a voice call is placed on the non-default data SIM on DSDS devices, users will
-     * not be able to use mobile data. By calling this API, data will be temporarily enabled on the
-     * non-default data SIM during the life cycle of the voice call.
+     * Controls whether mobile data  on the non-default SIM is allowed during a voice call.
      *
-     * @param allow {@code true} if allowing using data during voice call, {@code false} if
-     * disallowed.
+     * This is used for allowing data on the non-default data SIM when a voice call is placed on
+     * the non-default data SIM on DSDS devices. If this policy is disabled, users will not be able
+     * to use mobile data via the non-default data SIM during the call, which may mean no mobile
+     * data at all since some modem implementations disallow mobile data via the default data SIM
+     * during voice calls.
+     * If this policy is enabled, data will be temporarily enabled on the non-default data SIM
+     * during any voice calls.
      *
-     * @return {@code true} if operation is successful. otherwise {@code false}.
-     *
-     * @throws SecurityException if the caller doesn't have the permission.
-     *
+     * This policy can be enabled and disabled via {@link #setMobileDataPolicyEnabledStatus}.
      * @hide
      */
+    @SystemApi
+    @TestApi
+    public static final int MOBILE_DATA_POLICY_DATA_ON_NON_DEFAULT_DURING_VOICE_CALL = 1;
+
+    /**
+     * Controls whether MMS messages bypass the user-specified "mobile data" toggle.
+     *
+     * When enabled, requests for connections to the MMS APN will be accepted by telephony even if
+     * the user has turned "mobile data" off on this specific sim card. {@link #isDataEnabledForApn}
+     * will also return true for {@link ApnSetting#TYPE_MMS}.
+     * When disabled, the MMS APN will be governed by the same rules as all other APNs.
+     *
+     * This policy can be enabled and disabled via {@link #setMobileDataPolicyEnabledStatus}.
+     * @hide
+     */
+    @SystemApi
+    @TestApi
+    public static final int MOBILE_DATA_POLICY_MMS_ALWAYS_ALLOWED = 2;
+
+    /**
+     * @hide
+     */
+    @IntDef(prefix = { "MOBILE_DATA_POLICY_" }, value = {
+            MOBILE_DATA_POLICY_DATA_ON_NON_DEFAULT_DURING_VOICE_CALL,
+            MOBILE_DATA_POLICY_MMS_ALWAYS_ALLOWED,
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface MobileDataPolicy { }
+
+    /**
+     * Enables or disables a piece of mobile data policy.
+     *
+     * Enables or disables the mobile data policy specified in {@code policy}. See the detailed
+     * description of each policy constant for what they do.
+     *
+     * @param policy The data policy to enable.
+     * @param enabled Whether to enable or disable the policy.
+     * @hide
+     */
+    @SystemApi
+    @TestApi
     @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
-    public boolean setDataAllowedDuringVoiceCall(boolean allow) {
+    public void setMobileDataPolicyEnabledStatus(@MobileDataPolicy int policy, boolean enabled) {
         try {
             ITelephony service = getITelephony();
             if (service != null) {
-                return service.setDataAllowedDuringVoiceCall(getSubId(), allow);
+                service.setMobileDataPolicyEnabledStatus(getSubId(), policy, enabled);
             }
         } catch (RemoteException ex) {
             // This could happen if binder process crashes.
@@ -13063,27 +13464,23 @@
                 ex.rethrowAsRuntimeException();
             }
         }
-        return false;
     }
 
     /**
-     * Check whether data is allowed during voice call. This is used for allowing data on the
-     * non-default data SIM. When a voice call is placed on the non-default data SIM on DSDS
-     * devices, users will not be able to use mobile data. By calling this API, data will be
-     * temporarily enabled on the non-default data SIM during the life cycle of the voice call.
+     * Fetches the status of a piece of mobile data policy.
      *
-     * @return {@code true} if data is allowed during voice call.
-     *
-     * @throws SecurityException if the caller doesn't have the permission.
-     *
+     * @param policy The data policy that you want the status for.
+     * @return {@code true} if enabled, {@code false} otherwise.
      * @hide
      */
+    @SystemApi
+    @TestApi
     @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
-    public boolean isDataAllowedInVoiceCall() {
+    public boolean isMobileDataPolicyEnabled(@MobileDataPolicy int policy) {
         try {
             ITelephony service = getITelephony();
             if (service != null) {
-                return service.isDataAllowedInVoiceCall(getSubId());
+                return service.isMobileDataPolicyEnabled(getSubId(), policy);
             }
         } catch (RemoteException ex) {
             // This could happen if binder process crashes.
@@ -13095,43 +13492,22 @@
     }
 
     /**
-     * Set whether the specific sim card always allows MMS connection. If true, MMS network
-     * request will be accepted by telephony even if user turns "mobile data" off
-     * on this specific sim card.
-     *
-     * @param alwaysAllow whether Mms data is always allowed.
-     * @return whether operation is successful.
-     *
-     * @hide
-     */
-    @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
-    public boolean setAlwaysAllowMmsData(boolean alwaysAllow) {
-        try {
-            ITelephony service = getITelephony();
-            if (service != null) {
-                return service.setAlwaysAllowMmsData(getSubId(), alwaysAllow);
-            }
-        } catch (RemoteException ex) {
-            if (!isSystemProcess()) {
-                ex.rethrowAsRuntimeException();
-            }
-        }
-        return false;
-    }
-
-    /**
-     * The IccLock state or password was changed successfully.
+     * Indicates that the ICC PIN lock state or PIN was changed successfully.
      * @hide
      */
     public static final int CHANGE_ICC_LOCK_SUCCESS = Integer.MAX_VALUE;
 
     /**
-     * Check whether ICC pin lock is enabled.
-     * This is a sync call which returns the cached pin enabled state.
+     * Check whether ICC PIN lock is enabled.
+     * This is a sync call which returns the cached PIN enabled state.
      *
-     * @return {@code true} if ICC lock enabled, {@code false} if ICC lock disabled.
-     *
+     * @return {@code true} if ICC PIN lock enabled, {@code false} if disabled.
      * @throws SecurityException if the caller doesn't have the permission.
+     * @throws IllegalStateException if the Telephony process is not currently available.
+     *
+     * <p>Requires Permission:
+     * {@link android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE READ_PRIVILEGED_PHONE_STATE}
+     * or that the calling app has carrier privileges (see {@link #hasCarrierPrivileges}).
      *
      * @hide
      */
@@ -13143,81 +13519,124 @@
             ITelephony telephony = getITelephony();
             if (telephony != null) {
                 return telephony.isIccLockEnabled(getSubId());
+            } else {
+                throw new IllegalStateException("telephony service is null.");
             }
         } catch (RemoteException e) {
             Log.e(TAG, "isIccLockEnabled RemoteException", e);
+            e.rethrowFromSystemServer();
         }
         return false;
     }
 
     /**
-     * Set the ICC pin lock enabled or disabled.
+     * Enable or disable the ICC PIN lock.
      *
-     * If enable/disable ICC pin lock successfully, a value of {@link Integer#MAX_VALUE} is
-     * returned.
-     * If an incorrect old password is specified, the return value will indicate how many more
-     * attempts the user can make to change the password before the SIM is locked.
-     * Using PUK code to unlock SIM if enter the incorrect old password 3 times.
-     *
-     * @param enabled    "true" for locked, "false" for unlocked.
-     * @param password   needed to change the ICC pin state, aka. Pin1
-     * @return an integer representing the status of IccLock enabled or disabled in the following
-     * three cases:
-     *   - {@link TelephonyManager#CHANGE_ICC_LOCK_SUCCESS} if enabled or disabled IccLock
-     *   successfully.
-     *   - Positive number and zero for remaining password attempts.
-     *   - Negative number for other failure cases (such like enabling/disabling PIN failed).
-     *
+     * @param enabled "true" for locked, "false" for unlocked.
+     * @param pin needed to change the ICC PIN lock, aka. Pin1.
+     * @return the result of enabling or disabling the ICC PIN lock.
      * @throws SecurityException if the caller doesn't have the permission.
+     * @throws IllegalStateException if the Telephony process is not currently available.
+     *
+     * <p>Requires Permission:
+     * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE} or that the calling
+     * app has carrier privileges (see {@link #hasCarrierPrivileges}).
      *
      * @hide
      */
+    @SystemApi
+    @NonNull
     @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
-    public int setIccLockEnabled(boolean enabled, @NonNull String password) {
-        checkNotNull(password, "setIccLockEnabled password can't be null.");
+    public PinResult setIccLockEnabled(boolean enabled, @NonNull String pin) {
+        checkNotNull(pin, "setIccLockEnabled pin can't be null.");
         try {
             ITelephony telephony = getITelephony();
             if (telephony != null) {
-                return telephony.setIccLockEnabled(getSubId(), enabled, password);
+                int result = telephony.setIccLockEnabled(getSubId(), enabled, pin);
+                if (result == CHANGE_ICC_LOCK_SUCCESS) {
+                    return new PinResult(PinResult.PIN_RESULT_TYPE_SUCCESS, 0);
+                } else if (result < 0) {
+                    return PinResult.getDefaultFailedResult();
+                } else {
+                    return new PinResult(PinResult.PIN_RESULT_TYPE_INCORRECT, result);
+                }
+            } else {
+                throw new IllegalStateException("telephony service is null.");
             }
         } catch (RemoteException e) {
             Log.e(TAG, "setIccLockEnabled RemoteException", e);
+            e.rethrowFromSystemServer();
         }
-        return 0;
+        return PinResult.getDefaultFailedResult();
     }
 
     /**
-     * Change the ICC password used in ICC pin lock.
+     * Change the ICC lock PIN.
      *
-     * If the password was changed successfully, a value of {@link Integer#MAX_VALUE} is returned.
-     * If an incorrect old password is specified, the return value will indicate how many more
-     * attempts the user can make to change the password before the SIM is locked.
-     * Using PUK code to unlock SIM if enter the incorrect old password 3 times.
-     *
-     * @param oldPassword is the old password
-     * @param newPassword is the new password
-     * @return an integer representing the status of IccLock changed in the following three cases:
-     *   - {@link TelephonyManager#CHANGE_ICC_LOCK_SUCCESS} if changed IccLock successfully.
-     *   - Positive number and zero for remaining password attempts.
-     *   - Negative number for other failure cases (such like enabling/disabling PIN failed).
-     *
+     * @param oldPin is the old PIN
+     * @param newPin is the new PIN
+     * @return The result of changing the ICC lock PIN.
      * @throws SecurityException if the caller doesn't have the permission.
+     * @throws IllegalStateException if the Telephony process is not currently available.
+     *
+     * <p>Requires Permission:
+     * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE} or that the calling
+     * app has carrier privileges (see {@link #hasCarrierPrivileges}).
      *
      * @hide
      */
+    @SystemApi
+    @NonNull
     @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
-    public int changeIccLockPassword(@NonNull String oldPassword, @NonNull String newPassword) {
-        checkNotNull(oldPassword, "changeIccLockPassword oldPassword can't be null.");
-        checkNotNull(newPassword, "changeIccLockPassword newPassword can't be null.");
+    public PinResult changeIccLockPin(@NonNull String oldPin, @NonNull String newPin) {
+        checkNotNull(oldPin, "changeIccLockPin oldPin can't be null.");
+        checkNotNull(newPin, "changeIccLockPin newPin can't be null.");
         try {
             ITelephony telephony = getITelephony();
             if (telephony != null) {
-                return telephony.changeIccLockPassword(getSubId(), oldPassword, newPassword);
+                int result = telephony.changeIccLockPassword(getSubId(), oldPin, newPin);
+                if (result == CHANGE_ICC_LOCK_SUCCESS) {
+                    return new PinResult(PinResult.PIN_RESULT_TYPE_SUCCESS, 0);
+                } else if (result < 0) {
+                    return PinResult.getDefaultFailedResult();
+                } else {
+                    return new PinResult(PinResult.PIN_RESULT_TYPE_INCORRECT, result);
+                }
+            } else {
+                throw new IllegalStateException("telephony service is null.");
             }
         } catch (RemoteException e) {
-            Log.e(TAG, "changeIccLockPassword RemoteException", e);
+            Log.e(TAG, "changeIccLockPin RemoteException", e);
+            e.rethrowFromSystemServer();
         }
-        return 0;
+        return PinResult.getDefaultFailedResult();
+    }
+
+    /**
+     * Get carrier bandwidth. In case of Dual connected network this will report
+     * bandwidth per primary and secondary network.
+     * @return CarrierBandwidth with bandwidth of both primary and secondary carrier.
+     * @throws IllegalStateException if the Telephony process is not currently available.
+     * @hide
+     */
+    @SystemApi
+    @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
+    @NonNull
+    public CarrierBandwidth getCarrierBandwidth() {
+        try {
+            ITelephony service = getITelephony();
+            if (service != null) {
+                return service.getCarrierBandwidth(getSubId());
+            } else {
+                throw new IllegalStateException("telephony service is null.");
+            }
+        } catch (RemoteException ex) {
+            Log.e(TAG, "getCarrierBandwidth RemoteException", ex);
+            ex.rethrowFromSystemServer();
+        }
+
+        //Should not reach. Adding return statement to make compiler happy
+        return null;
     }
 
     /**
@@ -13239,6 +13658,149 @@
         }
     }
 
+    /**
+     * No error. Operation succeeded.
+     * @hide
+     */
+    @SystemApi
+    public static final int ENABLE_NR_DUAL_CONNECTIVITY_SUCCESS = 0;
+
+    /**
+     * NR Dual connectivity enablement is not supported.
+     * @hide
+     */
+    @SystemApi
+    public static final int ENABLE_NR_DUAL_CONNECTIVITY_NOT_SUPPORTED = 1;
+
+    /**
+     * Radio is not available.
+     * @hide
+     */
+    @SystemApi
+    public static final int ENABLE_NR_DUAL_CONNECTIVITY_RADIO_NOT_AVAILABLE = 2;
+
+    /**
+     * Internal Radio error.
+     * @hide
+     */
+    @SystemApi
+    public static final int ENABLE_NR_DUAL_CONNECTIVITY_RADIO_ERROR = 3;
+
+    /**
+     * Currently in invalid state. Not able to process the request.
+     * @hide
+     */
+    @SystemApi
+    public static final int ENABLE_NR_DUAL_CONNECTIVITY_INVALID_STATE = 4;
+
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = {"ENABLE_NR_DUAL_CONNECTIVITY"}, value = {
+            ENABLE_NR_DUAL_CONNECTIVITY_SUCCESS,
+            ENABLE_NR_DUAL_CONNECTIVITY_NOT_SUPPORTED,
+            ENABLE_NR_DUAL_CONNECTIVITY_INVALID_STATE,
+            ENABLE_NR_DUAL_CONNECTIVITY_RADIO_NOT_AVAILABLE,
+            ENABLE_NR_DUAL_CONNECTIVITY_RADIO_ERROR})
+    public @interface EnableNrDualConnectivityResult {}
+
+    /**
+     * Enable NR dual connectivity. Enabled state does not mean dual connectivity
+     * is active. It means device is allowed to connect to both primary and secondary.
+     *
+     * @hide
+     */
+    @SystemApi
+    public static final int NR_DUAL_CONNECTIVITY_ENABLE = 1;
+
+    /**
+     * Disable NR dual connectivity. Disabled state does not mean the secondary cell is released.
+     * Modem will release it only if the current bearer is released to avoid radio link failure.
+     * @hide
+     */
+    @SystemApi
+    public static final int NR_DUAL_CONNECTIVITY_DISABLE = 2;
+
+    /**
+     * Disable NR dual connectivity and force the secondary cell to be released if dual connectivity
+     * was active. This will result in radio link failure.
+     * @hide
+     */
+    @SystemApi
+    public static final int NR_DUAL_CONNECTIVITY_DISABLE_IMMEDIATE = 3;
+
+    /**
+     * @hide
+     */
+    @IntDef(prefix = { "NR_DUAL_CONNECTIVITY_" }, value = {
+            NR_DUAL_CONNECTIVITY_ENABLE,
+            NR_DUAL_CONNECTIVITY_DISABLE,
+            NR_DUAL_CONNECTIVITY_DISABLE_IMMEDIATE,
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface NrDualConnectivityState {
+    }
+
+    /**
+     * Enable/Disable E-UTRA-NR Dual Connectivity.
+     *
+     * @param nrDualConnectivityState expected NR dual connectivity state
+     * This can be passed following states
+     * <ol>
+     * <li>Enable NR dual connectivity {@link #NR_DUAL_CONNECTIVITY_ENABLE}
+     * <li>Disable NR dual connectivity {@link #NR_DUAL_CONNECTIVITY_DISABLE}
+     * <li>Disable NR dual connectivity and force secondary cell to be released
+     * {@link #NR_DUAL_CONNECTIVITY_DISABLE_IMMEDIATE}
+     * </ol>
+     * @return operation result.
+     * <p>Requires Permission:
+     * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}
+     * @throws IllegalStateException if the Telephony process is not currently available.
+     * @hide
+     */
+    @SystemApi
+    public @EnableNrDualConnectivityResult int setNrDualConnectivityState(
+            @NrDualConnectivityState int nrDualConnectivityState) {
+        try {
+            ITelephony telephony = getITelephony();
+            if (telephony != null) {
+                return telephony.setNrDualConnectivityState(getSubId(), nrDualConnectivityState);
+            } else {
+                throw new IllegalStateException("telephony service is null.");
+            }
+        } catch (RemoteException ex) {
+            Rlog.e(TAG, "setNrDualConnectivityState RemoteException", ex);
+            ex.rethrowFromSystemServer();
+        }
+
+        return ENABLE_NR_DUAL_CONNECTIVITY_INVALID_STATE;
+    }
+
+    /**
+     * Is E-UTRA-NR Dual Connectivity enabled.
+     * @return true if dual connectivity is enabled else false. Enabled state does not mean dual
+     * connectivity is active. It means the device is allowed to connect to both primary and
+     * secondary cell.
+     * <p>Requires Permission:
+     * {@link android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE READ_PRIVILEGED_PHONE_STATE}
+     * @throws IllegalStateException if the Telephony process is not currently available.
+     * @hide
+     */
+    @SystemApi
+    public boolean isNrDualConnectivityEnabled() {
+        try {
+            ITelephony telephony = getITelephony();
+            if (telephony != null) {
+                return telephony.isNrDualConnectivityEnabled(getSubId());
+            } else {
+                throw new IllegalStateException("telephony service is null.");
+            }
+        } catch (RemoteException ex) {
+            Rlog.e(TAG, "isNRDualConnectivityEnabled RemoteException", ex);
+            ex.rethrowFromSystemServer();
+        }
+        return false;
+    }
+
     private static class DeathRecipient implements IBinder.DeathRecipient {
         @Override
         public void binderDied() {
@@ -13253,6 +13815,10 @@
     */
     private static void resetServiceCache() {
         synchronized (sCacheLock) {
+            if (sITelephony != null) {
+                sITelephony.asBinder().unlinkToDeath(sServiceDeath, 0);
+                sITelephony = null;
+            }
             if (sISub != null) {
                 sISub.asBinder().unlinkToDeath(sServiceDeath, 0);
                 sISub = null;
@@ -13269,9 +13835,9 @@
         }
     }
 
-   /**
-    * @hide
-    */
+    /**
+     * @hide
+     */
     static IPhoneSubInfo getSubscriberInfoService() {
         // Keeps cache disabled until test fixes are checked into AOSP.
         if (!sServiceHandleCacheEnabled) {
@@ -13390,6 +13956,15 @@
     }
 
     /**
+     * Setup sITelephony for testing.
+     * @hide
+     */
+    @VisibleForTesting
+    public static void setupITelephonyForTest(ITelephony telephony) {
+        sITelephony = telephony;
+    }
+
+    /**
      * Whether device can connect to 5G network when two SIMs are active.
      * @hide
      * TODO b/153669716: remove or make system API.
@@ -13405,4 +13980,36 @@
             return true;
         }
     }
+
+    /**
+     * Returns a list of the equivalent home PLMNs (EF_EHPLMN) from the USIM app.
+     *
+     * <p>Requires Permission: {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
+     * or that the calling app has carrier privileges (see {@link #hasCarrierPrivileges}).
+     *
+     * @return A list of equivalent home PLMNs. Returns an empty list if EF_EHPLMN is empty or
+     * does not exist on the SIM card.
+     *
+     * @throws IllegalStateException if the Telephony process is not currently available.
+     * @throws SecurityException if the caller doesn't have the permission.
+     *
+     */
+    @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+    public @NonNull List<String> getEquivalentHomePlmns() {
+        try {
+            ITelephony telephony = getITelephony();
+            if (telephony != null) {
+                return telephony.getEquivalentHomePlmns(getSubId(), mContext.getOpPackageName(),
+                        getAttributionTag());
+            } else {
+                throw new IllegalStateException("telephony service is null.");
+            }
+        } catch (RemoteException ex) {
+            if (!isSystemProcess()) {
+                ex.rethrowAsRuntimeException();
+            }
+        }
+
+        return Collections.emptyList();
+    }
 }
diff --git a/telephony/java/android/telephony/cdma/CdmaCellLocation.java b/telephony/java/android/telephony/cdma/CdmaCellLocation.java
index 9bc39a0..d808cab 100644
--- a/telephony/java/android/telephony/cdma/CdmaCellLocation.java
+++ b/telephony/java/android/telephony/cdma/CdmaCellLocation.java
@@ -23,7 +23,10 @@
 
 /**
  * Represents the cell location on a CDMA phone.
+ *
+ * @deprecated use {@link android.telephony.CellIdentity CellIdentity}.
  */
+@Deprecated
 public class CdmaCellLocation extends CellLocation {
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
     private int mBaseStationId = -1;
diff --git a/telephony/java/android/telephony/data/ApnSetting.java b/telephony/java/android/telephony/data/ApnSetting.java
index e60ae89..ff9329e 100644
--- a/telephony/java/android/telephony/data/ApnSetting.java
+++ b/telephony/java/android/telephony/data/ApnSetting.java
@@ -1214,12 +1214,16 @@
         return false;
     }
 
-    // TODO - if we have this function we should also have hashCode.
-    // Also should handle changes in type order and perhaps case-insensitivity.
+    @Override
+    public int hashCode() {
+        return Objects.hash(mApnName, mProxyAddress, mProxyPort, mMmsc, mMmsProxyAddress,
+                mMmsProxyPort, mUser, mPassword, mAuthType, mApnTypeBitmask, mId, mOperatorNumeric,
+                mProtocol, mRoamingProtocol, mMtu, mCarrierEnabled, mNetworkTypeBitmask, mProfileId,
+                mPersistent, mMaxConns, mWaitTime, mMaxConnsTime, mMvnoType, mMvnoMatchData,
+                mApnSetId, mCarrierId, mSkip464Xlat);
+    }
 
-    /**
-     * @hide
-     */
+    @Override
     public boolean equals(Object o) {
         if (o instanceof ApnSetting == false) {
             return false;
diff --git a/telephony/java/android/telephony/data/DataCallResponse.java b/telephony/java/android/telephony/data/DataCallResponse.java
index 242c2e9..ca9bf3c 100644
--- a/telephony/java/android/telephony/data/DataCallResponse.java
+++ b/telephony/java/android/telephony/data/DataCallResponse.java
@@ -67,8 +67,60 @@
     /** Indicates the data connection is active with physical link up. */
     public static final int LINK_STATUS_ACTIVE = 2;
 
+    /** {@hide} */
+    @IntDef(prefix = "HANDOVER_FAILURE_MODE_", value = {
+            HANDOVER_FAILURE_MODE_LEGACY,
+            HANDOVER_FAILURE_MODE_DO_FALLBACK,
+            HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_HANDOVER,
+            HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_SETUP_NORMAL
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface HandoverFailureMode {}
+
+    /**
+     * Data handover failure mode is unknown.
+     */
+    public static final int HANDOVER_FAILURE_MODE_UNKNOWN = -1;
+
+    /**
+     * Perform fallback to the source data transport on data handover failure using
+     * the legacy logic, which is fallback if the fail cause is
+     * {@link DataFailCause#HANDOFF_PREFERENCE_CHANGED}.
+     */
+    public static final int HANDOVER_FAILURE_MODE_LEGACY = 0;
+
+    /**
+     * Perform fallback to the source data transport on data handover failure.
+     */
+    public static final int HANDOVER_FAILURE_MODE_DO_FALLBACK = 1;
+
+    /**
+     * Do not perform fallback to the source data transport on data handover failure.
+     * Framework will retry setting up a new data connection by sending
+     * {@link DataService#REQUEST_REASON_HANDOVER} request to the underlying {@link DataService}.
+     */
+    public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_HANDOVER = 2;
+
+    /**
+     * Do not perform fallback to the source transport on data handover failure.
+     * Framework will retry setting up a new data connection by sending
+     * {@link DataService#REQUEST_REASON_NORMAL} request to the underlying {@link DataService}.
+     */
+    public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_SETUP_NORMAL = 3;
+
+    /**
+     * Indicates that data retry interval is not specified. Platform can determine when to
+     * perform data setup appropriately.
+     */
+    public static final int RETRY_INTERVAL_UNDEFINED = -1;
+
+    /**
+     * Indicates that the pdu session id is not set.
+     */
+    public static final int PDU_SESSION_ID_NOT_SET = 0;
+
     private final @DataFailureCause int mCause;
-    private final int mSuggestedRetryTime;
+    private final long mSuggestedRetryTime;
     private final int mId;
     private final @LinkStatus int mLinkStatus;
     private final @ProtocolType int mProtocolType;
@@ -80,6 +132,8 @@
     private final int mMtu;
     private final int mMtuV4;
     private final int mMtuV6;
+    private final @HandoverFailureMode int mHandoverFailureMode;
+    private final int mPduSessionId;
 
     /**
      * @param cause Data call fail cause. {@link DataFailCause#NONE} indicates no error.
@@ -126,14 +180,16 @@
         mPcscfAddresses = (pcscfAddresses == null)
                 ? new ArrayList<>() : new ArrayList<>(pcscfAddresses);
         mMtu = mMtuV4 = mMtuV6 = mtu;
+        mHandoverFailureMode = HANDOVER_FAILURE_MODE_LEGACY;
+        mPduSessionId = PDU_SESSION_ID_NOT_SET;
     }
 
-    /** @hide */
-    private DataCallResponse(@DataFailureCause int cause, int suggestedRetryTime, int id,
+    private DataCallResponse(@DataFailureCause int cause, long suggestedRetryTime, int id,
             @LinkStatus int linkStatus, @ProtocolType int protocolType,
             @Nullable String interfaceName, @Nullable List<LinkAddress> addresses,
             @Nullable List<InetAddress> dnsAddresses, @Nullable List<InetAddress> gatewayAddresses,
-            @Nullable List<InetAddress> pcscfAddresses, int mtu, int mtuV4, int mtuV6) {
+            @Nullable List<InetAddress> pcscfAddresses, int mtu, int mtuV4, int mtuV6,
+            @HandoverFailureMode int handoverFailureMode, int pduSessionId) {
         mCause = cause;
         mSuggestedRetryTime = suggestedRetryTime;
         mId = id;
@@ -151,13 +207,15 @@
         mMtu = mtu;
         mMtuV4 = mtuV4;
         mMtuV6 = mtuV6;
+        mHandoverFailureMode = handoverFailureMode;
+        mPduSessionId = pduSessionId;
     }
 
     /** @hide */
     @VisibleForTesting
     public DataCallResponse(Parcel source) {
         mCause = source.readInt();
-        mSuggestedRetryTime = source.readInt();
+        mSuggestedRetryTime = source.readLong();
         mId = source.readInt();
         mLinkStatus = source.readInt();
         mProtocolType = source.readInt();
@@ -173,6 +231,8 @@
         mMtu = source.readInt();
         mMtuV4 = source.readInt();
         mMtuV6 = source.readInt();
+        mHandoverFailureMode = source.readInt();
+        mPduSessionId = source.readInt();
     }
 
     /**
@@ -183,8 +243,22 @@
 
     /**
      * @return The suggested data retry time in milliseconds.
+     *
+     * @deprecated Use {@link #getRetryIntervalMillis()} instead.
      */
-    public int getSuggestedRetryTime() { return mSuggestedRetryTime; }
+    @Deprecated
+    public int getSuggestedRetryTime() {
+        return (int) mSuggestedRetryTime;
+    }
+
+    /**
+     * @return The network suggested data retry interval in milliseconds. {@code Long.MAX_VALUE}
+     * indicates data retry should not occur. {@link #RETRY_INTERVAL_UNDEFINED} indicates network
+     * did not suggest any retry interval.
+     */
+    public long getRetryIntervalMillis() {
+        return mSuggestedRetryTime;
+    }
 
     /**
      * @return The unique id of the data connection.
@@ -262,6 +336,20 @@
         return mMtuV6;
     }
 
+    /**
+     * @return The data handover failure mode.
+     */
+    public @HandoverFailureMode int getHandoverFailureMode() {
+        return mHandoverFailureMode;
+    }
+
+    /**
+     * @return The pdu session id
+     */
+    public int getPduSessionId() {
+        return mPduSessionId;
+    }
+
     @NonNull
     @Override
     public String toString() {
@@ -280,6 +368,8 @@
            .append(" mtu=").append(getMtu())
            .append(" mtuV4=").append(getMtuV4())
            .append(" mtuV6=").append(getMtuV6())
+           .append(" handoverFailureMode=").append(getHandoverFailureMode())
+           .append(" pduSessionId=").append(getPduSessionId())
            .append("}");
         return sb.toString();
     }
@@ -309,14 +399,16 @@
                 && mPcscfAddresses.containsAll(other.mPcscfAddresses)
                 && mMtu == other.mMtu
                 && mMtuV4 == other.mMtuV4
-                && mMtuV6 == other.mMtuV6;
+                && mMtuV6 == other.mMtuV6
+                && mHandoverFailureMode == other.mHandoverFailureMode
+                && mPduSessionId == other.mPduSessionId;
     }
 
     @Override
     public int hashCode() {
         return Objects.hash(mCause, mSuggestedRetryTime, mId, mLinkStatus, mProtocolType,
                 mInterfaceName, mAddresses, mDnsAddresses, mGatewayAddresses, mPcscfAddresses,
-                mMtu, mMtuV4, mMtuV6);
+                mMtu, mMtuV4, mMtuV6, mHandoverFailureMode, mPduSessionId);
     }
 
     @Override
@@ -327,7 +419,7 @@
     @Override
     public void writeToParcel(Parcel dest, int flags) {
         dest.writeInt(mCause);
-        dest.writeInt(mSuggestedRetryTime);
+        dest.writeLong(mSuggestedRetryTime);
         dest.writeInt(mId);
         dest.writeInt(mLinkStatus);
         dest.writeInt(mProtocolType);
@@ -339,6 +431,8 @@
         dest.writeInt(mMtu);
         dest.writeInt(mMtuV4);
         dest.writeInt(mMtuV6);
+        dest.writeInt(mHandoverFailureMode);
+        dest.writeInt(mPduSessionId);
     }
 
     public static final @android.annotation.NonNull Parcelable.Creator<DataCallResponse> CREATOR =
@@ -355,6 +449,25 @@
             };
 
     /**
+     * Convert handover failure mode to string.
+     *
+     * @param handoverFailureMode Handover failure mode
+     * @return Handover failure mode in string
+     *
+     * @hide
+     */
+    public static String failureModeToString(@HandoverFailureMode int handoverFailureMode) {
+        switch (handoverFailureMode) {
+            case HANDOVER_FAILURE_MODE_UNKNOWN: return "unknown";
+            case HANDOVER_FAILURE_MODE_LEGACY: return "legacy";
+            case HANDOVER_FAILURE_MODE_DO_FALLBACK: return "fallback";
+            case HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_HANDOVER: return "retry handover";
+            case HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_SETUP_NORMAL: return "retry setup new one";
+            default: return Integer.toString(handoverFailureMode);
+        }
+    }
+
+    /**
      * Provides a convenient way to set the fields of a {@link DataCallResponse} when creating a new
      * instance.
      *
@@ -371,7 +484,7 @@
     public static final class Builder {
         private @DataFailureCause int mCause;
 
-        private int mSuggestedRetryTime;
+        private long mSuggestedRetryTime = RETRY_INTERVAL_UNDEFINED;
 
         private int mId;
 
@@ -395,6 +508,10 @@
 
         private int mMtuV6;
 
+        private @HandoverFailureMode int mHandoverFailureMode = HANDOVER_FAILURE_MODE_LEGACY;
+
+        private int mPduSessionId = PDU_SESSION_ID_NOT_SET;
+
         /**
          * Default constructor for Builder.
          */
@@ -417,9 +534,23 @@
          *
          * @param suggestedRetryTime The suggested data retry time in milliseconds.
          * @return The same instance of the builder.
+         *
+         * @deprecated Use {@link #setRetryIntervalMillis(long)} instead.
          */
+        @Deprecated
         public @NonNull Builder setSuggestedRetryTime(int suggestedRetryTime) {
-            mSuggestedRetryTime = suggestedRetryTime;
+            mSuggestedRetryTime = (long) suggestedRetryTime;
+            return this;
+        }
+
+        /**
+         * Set the network suggested data retry interval.
+         *
+         * @param retryIntervalMillis The suggested data retry interval in milliseconds.
+         * @return The same instance of the builder.
+         */
+        public @NonNull Builder setRetryIntervalMillis(long retryIntervalMillis) {
+            mSuggestedRetryTime = retryIntervalMillis;
             return this;
         }
 
@@ -553,6 +684,28 @@
         }
 
         /**
+         * Set data handover failure mode for the data call response.
+         *
+         * @param failureMode Handover failure mode.
+         * @return The same instance of the builder.
+         */
+        public @NonNull Builder setHandoverFailureMode(@HandoverFailureMode int failureMode) {
+            mHandoverFailureMode = failureMode;
+            return this;
+        }
+
+        /**
+         * Set pdu session id.
+         *
+         * @param pduSessionId Pdu Session Id of the data call.
+         * @return The same instance of the builder.
+         */
+        public @NonNull Builder setPduSessionId(int pduSessionId) {
+            mPduSessionId = pduSessionId;
+            return this;
+        }
+
+        /**
          * Build the DataCallResponse.
          *
          * @return the DataCallResponse object.
@@ -560,7 +713,7 @@
         public @NonNull DataCallResponse build() {
             return new DataCallResponse(mCause, mSuggestedRetryTime, mId, mLinkStatus,
                     mProtocolType, mInterfaceName, mAddresses, mDnsAddresses, mGatewayAddresses,
-                    mPcscfAddresses, mMtu, mMtuV4, mMtuV6);
+                    mPcscfAddresses, mMtu, mMtuV4, mMtuV6, mHandoverFailureMode, mPduSessionId);
         }
     }
 }
diff --git a/telephony/java/android/telephony/data/DataService.java b/telephony/java/android/telephony/data/DataService.java
index f56bbe1..7768597 100644
--- a/telephony/java/android/telephony/data/DataService.java
+++ b/telephony/java/android/telephony/data/DataService.java
@@ -17,6 +17,7 @@
 package android.telephony.data;
 
 import android.annotation.IntDef;
+import android.annotation.IntRange;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SdkConstant;
@@ -30,7 +31,7 @@
 import android.os.Looper;
 import android.os.Message;
 import android.os.RemoteException;
-import android.telephony.AccessNetworkConstants;
+import android.util.Log;
 import android.util.SparseArray;
 
 import com.android.internal.annotations.VisibleForTesting;
@@ -104,6 +105,8 @@
     private static final int DATA_SERVICE_REQUEST_REGISTER_DATA_CALL_LIST_CHANGED      = 9;
     private static final int DATA_SERVICE_REQUEST_UNREGISTER_DATA_CALL_LIST_CHANGED    = 10;
     private static final int DATA_SERVICE_INDICATION_DATA_CALL_LIST_CHANGED            = 11;
+    private static final int DATA_SERVICE_REQUEST_START_HANDOVER                       = 12;
+    private static final int DATA_SERVICE_REQUEST_CANCEL_HANDOVER                      = 13;
 
     private final HandlerThread mHandlerThread;
 
@@ -147,7 +150,7 @@
          * the provided callback to notify the platform.
          *
          * @param accessNetworkType Access network type that the data call will be established on.
-         *        Must be one of {@link AccessNetworkConstants.AccessNetworkType}.
+         *        Must be one of {@link android.telephony.AccessNetworkConstants.AccessNetworkType}.
          * @param dataProfile Data profile used for data call setup. See {@link DataProfile}
          * @param isRoaming True if the device is data roaming.
          * @param allowRoaming True if data roaming is allowed by the user.
@@ -158,10 +161,9 @@
          * @param callback The result callback for this request.
          */
         public void setupDataCall(int accessNetworkType, @NonNull DataProfile dataProfile,
-                                  boolean isRoaming, boolean allowRoaming,
-                                  @SetupDataReason int reason,
-                                  @Nullable LinkProperties linkProperties,
-                                  @NonNull DataServiceCallback callback) {
+                boolean isRoaming, boolean allowRoaming,
+                @SetupDataReason int reason, @Nullable LinkProperties linkProperties,
+                @NonNull DataServiceCallback callback) {
             // The default implementation is to return unsupported.
             if (callback != null) {
                 callback.onSetupDataCallComplete(DataServiceCallback.RESULT_ERROR_UNSUPPORTED,
@@ -170,6 +172,37 @@
         }
 
         /**
+         * Setup a data connection. The data service provider must implement this method to support
+         * establishing a packet data connection. When completed or error, the service must invoke
+         * the provided callback to notify the platform.
+         *
+         * @param accessNetworkType Access network type that the data call will be established on.
+         *        Must be one of {@link android.telephony.AccessNetworkConstants.AccessNetworkType}.
+         * @param dataProfile Data profile used for data call setup. See {@link DataProfile}
+         * @param isRoaming True if the device is data roaming.
+         * @param allowRoaming True if data roaming is allowed by the user.
+         * @param reason The reason for data setup. Must be {@link #REQUEST_REASON_NORMAL} or
+         *        {@link #REQUEST_REASON_HANDOVER}.
+         * @param linkProperties If {@code reason} is {@link #REQUEST_REASON_HANDOVER}, this is the
+         *        link properties of the existing data connection, otherwise null.
+         * @param pduSessionId The pdu session id to be used for this data call.
+         *                     The standard range of values are 1-15 while 0 means no pdu session id
+         *                     was attached to this call.  Reference: 3GPP TS 24.007 section
+         *                     11.2.3.1b.
+         * @param callback The result callback for this request.
+         */
+        public void setupDataCall(int accessNetworkType, @NonNull DataProfile dataProfile,
+                boolean isRoaming, boolean allowRoaming,
+                @SetupDataReason int reason,
+                @Nullable LinkProperties linkProperties,
+                @IntRange(from = 0, to = 15) int pduSessionId,
+                @NonNull DataServiceCallback callback) {
+            /* Call the old version since the new version isn't supported */
+            setupDataCall(accessNetworkType, dataProfile, isRoaming, allowRoaming, reason,
+                    linkProperties, callback);
+        }
+
+        /**
          * Deactivate a data connection. The data service provider must implement this method to
          * support data connection tear down. When completed or error, the service must invoke the
          * provided callback to notify the platform.
@@ -224,6 +257,53 @@
         }
 
         /**
+         * Indicates that a handover has begun.  This is called on the source transport.
+         *
+         * Any resources being transferred cannot be released while a
+         * handover is underway.
+         *
+         * If a handover was unsuccessful, then the framework calls
+         * {@link DataService#cancelHandover}.  The target transport retains ownership over any of
+         * the resources being transferred.
+         *
+         * If a handover was successful, the framework calls {@link DataService#deactivateDataCall}
+         * with reason {@link DataService.REQUEST_REASON_HANDOVER}. The target transport now owns
+         * the transferred resources and is responsible for releasing them.
+         *
+         * @param cid The identifier of the data call which is provided in {@link DataCallResponse}
+         * @param callback The result callback for this request.
+         */
+        public void startHandover(int cid, @NonNull DataServiceCallback callback) {
+            // The default implementation is to return unsupported.
+            if (callback != null) {
+                Log.d(TAG, "startHandover: " + cid);
+                callback.onHandoverStarted(DataServiceCallback.RESULT_ERROR_UNSUPPORTED);
+            } else {
+                Log.e(TAG, "startHandover: " + cid + ", callback is null");
+            }
+        }
+
+        /**
+         * Indicates that a handover was cancelled after a call to
+         * {@link DataService#startHandover}. This is called on the source transport.
+         *
+         * Since the handover was unsuccessful, the source transport retains ownership over any of
+         * the resources being transferred and is still responsible for releasing them.
+         *
+         * @param cid The identifier of the data call which is provided in {@link DataCallResponse}
+         * @param callback The result callback for this request.
+         */
+        public void cancelHandover(int cid, @NonNull DataServiceCallback callback) {
+            // The default implementation is to return unsupported.
+            if (callback != null) {
+                Log.d(TAG, "cancelHandover: " + cid);
+                callback.onHandoverCancelled(DataServiceCallback.RESULT_ERROR_UNSUPPORTED);
+            } else {
+                Log.e(TAG, "cancelHandover: " + cid + ", callback is null");
+            }
+        }
+
+        /**
          * Get the active data call list.
          *
          * @param callback The result callback for this request.
@@ -278,16 +358,18 @@
         public final boolean allowRoaming;
         public final int reason;
         public final LinkProperties linkProperties;
+        public final int pduSessionId;
         public final IDataServiceCallback callback;
         SetupDataCallRequest(int accessNetworkType, DataProfile dataProfile, boolean isRoaming,
                              boolean allowRoaming, int reason, LinkProperties linkProperties,
-                             IDataServiceCallback callback) {
+                             int pduSessionId, IDataServiceCallback callback) {
             this.accessNetworkType = accessNetworkType;
             this.dataProfile = dataProfile;
             this.isRoaming = isRoaming;
             this.allowRoaming = allowRoaming;
             this.linkProperties = linkProperties;
             this.reason = reason;
+            this.pduSessionId = pduSessionId;
             this.callback = callback;
         }
     }
@@ -327,6 +409,16 @@
         }
     }
 
+    private static final class BeginCancelHandoverRequest {
+        public final int cid;
+        public final IDataServiceCallback callback;
+        BeginCancelHandoverRequest(int cid,
+                IDataServiceCallback callback) {
+            this.cid = cid;
+            this.callback = callback;
+        }
+    }
+
     private static final class DataCallListChangedIndication {
         public final List<DataCallResponse> dataCallList;
         public final IDataServiceCallback callback;
@@ -377,7 +469,7 @@
                     serviceProvider.setupDataCall(setupDataCallRequest.accessNetworkType,
                             setupDataCallRequest.dataProfile, setupDataCallRequest.isRoaming,
                             setupDataCallRequest.allowRoaming, setupDataCallRequest.reason,
-                            setupDataCallRequest.linkProperties,
+                            setupDataCallRequest.linkProperties, setupDataCallRequest.pduSessionId,
                             (setupDataCallRequest.callback != null)
                                     ? new DataServiceCallback(setupDataCallRequest.callback)
                                     : null);
@@ -438,6 +530,20 @@
                         loge("Failed to call onDataCallListChanged. " + e);
                     }
                     break;
+                case DATA_SERVICE_REQUEST_START_HANDOVER:
+                    if (serviceProvider == null) break;
+                    BeginCancelHandoverRequest bReq = (BeginCancelHandoverRequest) message.obj;
+                    serviceProvider.startHandover(bReq.cid,
+                            (bReq.callback != null)
+                                    ? new DataServiceCallback(bReq.callback) : null);
+                    break;
+                case DATA_SERVICE_REQUEST_CANCEL_HANDOVER:
+                    if (serviceProvider == null) break;
+                    BeginCancelHandoverRequest cReq = (BeginCancelHandoverRequest) message.obj;
+                    serviceProvider.cancelHandover(cReq.cid,
+                            (cReq.callback != null)
+                                    ? new DataServiceCallback(cReq.callback) : null);
+                    break;
             }
         }
     }
@@ -506,11 +612,11 @@
 
         @Override
         public void setupDataCall(int slotIndex, int accessNetworkType, DataProfile dataProfile,
-                                  boolean isRoaming, boolean allowRoaming, int reason,
-                                  LinkProperties linkProperties, IDataServiceCallback callback) {
+                boolean isRoaming, boolean allowRoaming, int reason,
+                LinkProperties linkProperties, int pduSessionId, IDataServiceCallback callback) {
             mHandler.obtainMessage(DATA_SERVICE_REQUEST_SETUP_DATA_CALL, slotIndex, 0,
                     new SetupDataCallRequest(accessNetworkType, dataProfile, isRoaming,
-                            allowRoaming, reason, linkProperties, callback))
+                            allowRoaming, reason, linkProperties, pduSessionId, callback))
                     .sendToTarget();
         }
 
@@ -566,6 +672,29 @@
             mHandler.obtainMessage(DATA_SERVICE_REQUEST_UNREGISTER_DATA_CALL_LIST_CHANGED,
                     slotIndex, 0, callback).sendToTarget();
         }
+
+        @Override
+        public void startHandover(int slotIndex, int cid, IDataServiceCallback callback) {
+            if (callback == null) {
+                loge("startHandover: callback is null");
+                return;
+            }
+            BeginCancelHandoverRequest req = new BeginCancelHandoverRequest(cid, callback);
+            mHandler.obtainMessage(DATA_SERVICE_REQUEST_START_HANDOVER,
+                    slotIndex, 0, req)
+                    .sendToTarget();
+        }
+
+        @Override
+        public void cancelHandover(int slotIndex, int cid, IDataServiceCallback callback) {
+            if (callback == null) {
+                loge("cancelHandover: callback is null");
+                return;
+            }
+            BeginCancelHandoverRequest req = new BeginCancelHandoverRequest(cid, callback);
+            mHandler.obtainMessage(DATA_SERVICE_REQUEST_CANCEL_HANDOVER,
+                    slotIndex, 0, req).sendToTarget();
+        }
     }
 
     private void log(String s) {
diff --git a/telephony/java/android/telephony/data/DataServiceCallback.java b/telephony/java/android/telephony/data/DataServiceCallback.java
index 72b68e4..eef0e01 100644
--- a/telephony/java/android/telephony/data/DataServiceCallback.java
+++ b/telephony/java/android/telephony/data/DataServiceCallback.java
@@ -79,7 +79,7 @@
      * @param response Setup data call response.
      */
     public void onSetupDataCallComplete(@ResultCode int result,
-                                        @Nullable DataCallResponse response) {
+            @Nullable DataCallResponse response) {
         if (mCallback != null) {
             try {
                 if (DBG) Rlog.d(TAG, "onSetupDataCallComplete");
@@ -156,7 +156,7 @@
      * set it to an empty list.
      */
     public void onRequestDataCallListComplete(@ResultCode int result,
-                                              @NonNull List<DataCallResponse> dataCallList) {
+            @NonNull List<DataCallResponse> dataCallList) {
         if (mCallback != null) {
             try {
                 mCallback.onRequestDataCallListComplete(result, dataCallList);
@@ -186,4 +186,66 @@
             Rlog.e(TAG, "onDataCallListChanged: callback is null!");
         }
     }
+
+    /**
+     * Called to indicate result for the request {@link DataService#startHandover}.
+     *
+     * @param result The result code. Must be one of the {@link ResultCode}
+     */
+    public void onHandoverStarted(@ResultCode int result) {
+        if (mCallback != null) {
+            try {
+                if (DBG) Rlog.d(TAG, "onHandoverStarted");
+                mCallback.onHandoverStarted(result);
+            } catch (RemoteException e) {
+                Rlog.e(TAG, "Failed to onHandoverStarted on the remote");
+            }
+        } else {
+            Rlog.e(TAG, "onHandoverStarted: callback is null!");
+        }
+    }
+
+    /**
+     * Called to indicate result for the request {@link DataService#cancelHandover}.
+     *
+     * @param result The result code. Must be one of the {@link ResultCode}
+     */
+    public void onHandoverCancelled(@ResultCode int result) {
+        if (mCallback != null) {
+            try {
+                if (DBG) Rlog.d(TAG, "onHandoverCancelled");
+                mCallback.onHandoverCancelled(result);
+            } catch (RemoteException e) {
+                Rlog.e(TAG, "Failed to onHandoverCancelled on the remote");
+            }
+        } else {
+            Rlog.e(TAG, "onHandoverCancelled: callback is null!");
+        }
+    }
+
+    /**
+     * Get the result code as a string
+     *
+     * @param resultCode The result code. Must be one of the {@link ResultCode}
+     * @return the string representation
+     *
+     * @hide
+     */
+    @NonNull
+    public static String resultCodeToString(@DataServiceCallback.ResultCode int resultCode) {
+        switch(resultCode) {
+            case RESULT_SUCCESS:
+                return "RESULT_SUCCESS";
+            case RESULT_ERROR_UNSUPPORTED:
+                return "RESULT_ERROR_UNSUPPORTED";
+            case RESULT_ERROR_INVALID_ARG:
+                return "RESULT_ERROR_INVALID_ARG";
+            case RESULT_ERROR_BUSY:
+                return "RESULT_ERROR_BUSY";
+            case RESULT_ERROR_ILLEGAL_STATE:
+                return "RESULT_ERROR_ILLEGAL_STATE";
+            default:
+                return "Missing case for result code=" + resultCode;
+        }
+    }
 }
diff --git a/telephony/java/android/telephony/data/IDataService.aidl b/telephony/java/android/telephony/data/IDataService.aidl
index 9c74dcc..33226fe 100644
--- a/telephony/java/android/telephony/data/IDataService.aidl
+++ b/telephony/java/android/telephony/data/IDataService.aidl
@@ -29,7 +29,7 @@
     void removeDataServiceProvider(int slotId);
     void setupDataCall(int slotId, int accessNetwork, in DataProfile dataProfile, boolean isRoaming,
                        boolean allowRoaming, int reason, in LinkProperties linkProperties,
-                       IDataServiceCallback callback);
+                       int pduSessionId, IDataServiceCallback callback);
     void deactivateDataCall(int slotId, int cid, int reason, IDataServiceCallback callback);
     void setInitialAttachApn(int slotId, in DataProfile dataProfile, boolean isRoaming,
                              IDataServiceCallback callback);
@@ -38,4 +38,6 @@
     void requestDataCallList(int slotId, IDataServiceCallback callback);
     void registerForDataCallListChanged(int slotId, IDataServiceCallback callback);
     void unregisterForDataCallListChanged(int slotId, IDataServiceCallback callback);
+    void startHandover(int slotId, int cid, IDataServiceCallback callback);
+    void cancelHandover(int slotId, int cid, IDataServiceCallback callback);
 }
diff --git a/telephony/java/android/telephony/data/IDataServiceCallback.aidl b/telephony/java/android/telephony/data/IDataServiceCallback.aidl
index cec757d..d296e7b 100644
--- a/telephony/java/android/telephony/data/IDataServiceCallback.aidl
+++ b/telephony/java/android/telephony/data/IDataServiceCallback.aidl
@@ -30,4 +30,6 @@
     void onSetDataProfileComplete(int result);
     void onRequestDataCallListComplete(int result, in List<DataCallResponse> dataCallList);
     void onDataCallListChanged(in List<DataCallResponse> dataCallList);
+    void onHandoverStarted(int result);
+    void onHandoverCancelled(int result);
 }
diff --git a/telephony/java/android/telephony/euicc/DownloadableSubscription.java b/telephony/java/android/telephony/euicc/DownloadableSubscription.java
index 23d46ba..52b31d7 100644
--- a/telephony/java/android/telephony/euicc/DownloadableSubscription.java
+++ b/telephony/java/android/telephony/euicc/DownloadableSubscription.java
@@ -19,6 +19,7 @@
 import android.annotation.SystemApi;
 import android.app.PendingIntent;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.telephony.UiccAccessRule;
@@ -61,7 +62,7 @@
      */
     @Nullable
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final String encodedActivationCode;
 
     @Nullable private String confirmationCode;
@@ -191,7 +192,7 @@
      * @deprecated - Do not use.
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setCarrierName(String carrierName) {
         this.carrierName = carrierName;
     }
@@ -238,7 +239,7 @@
      * @deprecated - Do not use.
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setAccessRules(UiccAccessRule[] accessRules) {
         this.accessRules = Arrays.asList(accessRules);
     }
diff --git a/telephony/java/android/telephony/euicc/EuiccInfo.java b/telephony/java/android/telephony/euicc/EuiccInfo.java
index 467d268..08de205 100644
--- a/telephony/java/android/telephony/euicc/EuiccInfo.java
+++ b/telephony/java/android/telephony/euicc/EuiccInfo.java
@@ -17,6 +17,7 @@
 
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -44,7 +45,7 @@
             };
 
     @Nullable
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final String osVersion;
 
     /**
diff --git a/telephony/java/android/telephony/gsm/GsmCellLocation.java b/telephony/java/android/telephony/gsm/GsmCellLocation.java
index 30cea0e..2eee4ce 100644
--- a/telephony/java/android/telephony/gsm/GsmCellLocation.java
+++ b/telephony/java/android/telephony/gsm/GsmCellLocation.java
@@ -23,7 +23,10 @@
 
 /**
  * Represents the cell location on a GSM phone.
+ *
+ * @deprecated use {@link android.telephony.CellIdentity CellIdentity}.
  */
+@Deprecated
 public class GsmCellLocation extends CellLocation {
     private int mLac;
     private int mCid;
@@ -55,7 +58,7 @@
     }
 
     /**
-     * @return gsm cell id, -1 if unknown, 0xffff max legal value
+     * @return gsm cell id, -1 if unknown or invalid, 0xffff max legal value
      */
     public int getCid() {
         return mCid;
diff --git a/telephony/java/android/telephony/ims/AudioCodecAttributes.aidl b/telephony/java/android/telephony/ims/AudioCodecAttributes.aidl
new file mode 100644
index 0000000..bbab548
--- /dev/null
+++ b/telephony/java/android/telephony/ims/AudioCodecAttributes.aidl
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package android.telephony.ims;
+
+parcelable AudioCodecAttributes;
diff --git a/telephony/java/android/telephony/ims/AudioCodecAttributes.java b/telephony/java/android/telephony/ims/AudioCodecAttributes.java
new file mode 100644
index 0000000..7b6ab00
--- /dev/null
+++ b/telephony/java/android/telephony/ims/AudioCodecAttributes.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims;
+
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.util.Range;
+
+/**
+ * Parcelable object to handle audio codec attributes.
+ * It provides the audio codec bitrate, bandwidth and their upper/lower bound.
+ *
+ * @hide
+ */
+@SystemApi
+public final class AudioCodecAttributes implements Parcelable {
+    // The audio codec bitrate in kbps.
+    private float mBitrateKbps;
+    // The range of the audio codec bitrate in kbps.
+    private Range<Float> mBitrateRangeKbps;
+    // The audio codec bandwidth in kHz.
+    private float mBandwidthKhz;
+    // The range of the audio codec bandwidth in kHz.
+    private Range<Float> mBandwidthRangeKhz;
+
+
+    /**
+     * Constructor.
+     *
+     * @param bitrateKbps        The audio codec bitrate in kbps.
+     * @param bitrateRangeKbps  The range of the audio codec bitrate in kbps.
+     * @param bandwidthKhz      The audio codec bandwidth in kHz.
+     * @param bandwidthRangeKhz The range of the audio codec bandwidth in kHz.
+     */
+
+    public AudioCodecAttributes(float bitrateKbps, @NonNull Range<Float> bitrateRangeKbps,
+            float bandwidthKhz, @NonNull Range<Float> bandwidthRangeKhz) {
+        mBitrateKbps = bitrateKbps;
+        mBitrateRangeKbps = bitrateRangeKbps;
+        mBandwidthKhz = bandwidthKhz;
+        mBandwidthRangeKhz = bandwidthRangeKhz;
+    }
+
+    private AudioCodecAttributes(Parcel in) {
+        mBitrateKbps = in.readFloat();
+        mBitrateRangeKbps = new Range<>(in.readFloat(), in.readFloat());
+        mBandwidthKhz = in.readFloat();
+        mBandwidthRangeKhz = new Range<>(in.readFloat(), in.readFloat());
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel out, int flags) {
+        out.writeFloat(mBitrateKbps);
+        out.writeFloat(mBitrateRangeKbps.getLower());
+        out.writeFloat(mBitrateRangeKbps.getUpper());
+        out.writeFloat(mBandwidthKhz);
+        out.writeFloat(mBandwidthRangeKhz.getLower());
+        out.writeFloat(mBandwidthRangeKhz.getUpper());
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    public static final @NonNull Creator<AudioCodecAttributes> CREATOR =
+            new Creator<AudioCodecAttributes>() {
+                @Override
+                public AudioCodecAttributes createFromParcel(Parcel in) {
+                    return new AudioCodecAttributes(in);
+                }
+
+                @Override
+                public AudioCodecAttributes[] newArray(int size) {
+                    return new AudioCodecAttributes[size];
+                }
+            };
+
+    /**
+     * @return the exact value of the audio codec bitrate in kbps.
+     */
+    public float getBitrateKbps() {
+        return mBitrateKbps;
+    }
+
+    /**
+     * @return the range of the audio codec bitrate in kbps
+     */
+    public @NonNull Range<Float> getBitrateRangeKbps() {
+        return mBitrateRangeKbps;
+    }
+
+    /**
+     * @return the exact value of the audio codec bandwidth in kHz.
+     */
+    public float getBandwidthKhz() {
+        return mBandwidthKhz;
+    }
+
+    /**
+     * @return the range of the audio codec bandwidth in kHz.
+     */
+    public @NonNull Range<Float> getBandwidthRangeKhz() {
+        return mBandwidthRangeKhz;
+    }
+
+    @NonNull
+    @Override
+    public String toString() {
+        return "{ bitrateKbps=" + mBitrateKbps
+                + ", bitrateRangeKbps=" + mBitrateRangeKbps
+                + ", bandwidthKhz=" + mBandwidthKhz
+                + ", bandwidthRangeKhz=" + mBandwidthRangeKhz + " }";
+    }
+}
diff --git a/telephony/java/android/telephony/ims/DelegateMessageCallback.java b/telephony/java/android/telephony/ims/DelegateMessageCallback.java
new file mode 100644
index 0000000..0d82a54
--- /dev/null
+++ b/telephony/java/android/telephony/ims/DelegateMessageCallback.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims;
+
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
+import android.telephony.ims.stub.SipDelegate;
+
+/**
+ * Callback interface provided to the SipTransport implementation to notify a remote application of
+ * the following:
+ * <ul>
+ *     <li>A new incoming SIP message associated with the feature tags the SipDelegate registered
+ *     with has been received or an in-dialog request to this SipDelegate has been received.</li>
+ *     <li>Acknowledge that an outgoing SIP message from the RCS application has been sent
+ *     successfully or notify the application of the reason why it was not sent</li>
+ * </ul>
+ * @hide
+ */
+@SystemApi
+public interface DelegateMessageCallback {
+
+    /**
+     * Send a new incoming SIP message to the remote application for processing.
+     */
+    void onMessageReceived(@NonNull SipMessage message);
+
+    /**
+     * Notify the remote application that a previous request to send a SIP message using
+     * {@link SipDelegate#sendMessage} has succeeded.
+     *
+     * @param viaTransactionId The transaction ID found in the via header field of the
+     *         previously sent {@link SipMessage}.
+     */
+    void onMessageSent(@NonNull String viaTransactionId);
+
+    /**
+     * Notify the remote application that a previous request to send a SIP message using
+     * {@link SipDelegate#sendMessage} has failed.
+     *
+     * @param viaTransactionId The Transaction ID found in the via header field of the previously
+     *         sent {@link SipMessage}.
+     * @param reason The reason for the failure.
+     */
+    void onMessageSendFailure(@NonNull String viaTransactionId,
+            @SipDelegateManager.MessageFailureReason int reason);
+}
diff --git a/telephony/java/android/telephony/ims/DelegateRegistrationState.aidl b/telephony/java/android/telephony/ims/DelegateRegistrationState.aidl
new file mode 100644
index 0000000..756ea92
--- /dev/null
+++ b/telephony/java/android/telephony/ims/DelegateRegistrationState.aidl
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims;
+
+parcelable DelegateRegistrationState;
diff --git a/telephony/java/android/telephony/ims/DelegateRegistrationState.java b/telephony/java/android/telephony/ims/DelegateRegistrationState.java
new file mode 100644
index 0000000..3558a9b
--- /dev/null
+++ b/telephony/java/android/telephony/ims/DelegateRegistrationState.java
@@ -0,0 +1,321 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims;
+
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.SuppressLint;
+import android.annotation.SystemApi;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.util.ArraySet;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.Objects;
+import java.util.Set;
+
+/**
+ * Contains the full state of the IMS feature tags associated with a SipDelegate and managed by the
+ * ImsService.
+ * @hide
+ */
+@SystemApi
+public final class DelegateRegistrationState implements Parcelable {
+
+    /**
+     * This feature tag has been deregistered for an unknown reason. Outgoing out-of-dialog SIP
+     * messages associated with feature tags that are not registered will fail.
+     */
+    public static final int DEREGISTERED_REASON_UNKNOWN = 0;
+
+    /**
+     * This feature tag has been deregistered because it is not provisioned to be used on this radio
+     * access technology or PDN. Outgoing out-of-dialog SIP messages associated with feature tags
+     * that are not registered will fail.
+     * <p>
+     * There may be new incoming SIP dialog requests on a feature that that is not provisioned. It
+     * is still expected that the SipDelegateConnection responds to the request.
+     */
+    public static final int DEREGISTERED_REASON_NOT_PROVISIONED = 1;
+
+    /**
+     * This feature tag has been deregistered because IMS has been deregistered. All outgoing SIP
+     * messages will fail until IMS registration occurs.
+     */
+    public static final int DEREGISTERED_REASON_NOT_REGISTERED = 2;
+
+    /**
+     * This feature tag is being deregistered because the PDN that the IMS registration is on is
+     *changing.
+     * All open SIP dialogs need to be closed before the PDN change can proceed.
+     */
+    public static final int DEREGISTERING_REASON_PDN_CHANGE = 3;
+
+    /**
+     * This feature tag is being deregistered due to a provisioning change. This can be triggered by
+     * many things, such as a provisioning change triggered by the carrier network, a radio access
+     * technology change by the modem causing a different set of feature tags to be provisioned, or
+     * a user triggered hange, such as data being enabled/disabled.
+     * <p>
+     * All open SIP dialogs associated with the new deprovisioned feature tag need to be closed
+     * before the IMS registration modification can proceed.
+     */
+    public static final int DEREGISTERING_REASON_PROVISIONING_CHANGE = 4;
+
+    /**
+     * This feature tag is deregistering because the SipDelegate associated with this feature tag
+     * needs to change its supported feature set.
+     * <p>
+     * All open SIP Dialogs associated with this feature tag must be closed before this operation
+     * can proceed.
+     */
+    public static final int DEREGISTERING_REASON_FEATURE_TAGS_CHANGING = 5;
+
+    /**
+     * This feature tag is deregistering because the SipDelegate is in the process of being
+     * destroyed.
+     * <p>
+     * All open SIP Dialogs associated with this feature tag must be closed before this operation
+     * can proceed.
+     */
+    public static final int DEREGISTERING_REASON_DESTROY_PENDING = 6;
+
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = "DEREGISTERED_REASON_", value = {
+            DEREGISTERED_REASON_UNKNOWN,
+            DEREGISTERED_REASON_NOT_PROVISIONED,
+            DEREGISTERED_REASON_NOT_REGISTERED
+    })
+    public @interface DeregisteredReason {}
+
+
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = "DEREGISTERING_REASON_", value = {
+            DEREGISTERING_REASON_PDN_CHANGE,
+            DEREGISTERING_REASON_PROVISIONING_CHANGE,
+            DEREGISTERING_REASON_FEATURE_TAGS_CHANGING,
+            DEREGISTERING_REASON_DESTROY_PENDING
+    })
+    public @interface DeregisteringReason {}
+
+    private ArraySet<String> mRegisteredTags = new ArraySet<>();
+    private final ArraySet<FeatureTagState> mDeregisteringTags = new ArraySet<>();
+    private final ArraySet<FeatureTagState> mDeregisteredTags = new ArraySet<>();
+
+    /**
+     * Builder used to create new instances of {@link DelegateRegistrationState}.
+     */
+    public static final class Builder {
+
+        private final DelegateRegistrationState mState;
+
+        /* Create a new instance of {@link Builder} */
+        public Builder() {
+            mState = new DelegateRegistrationState();
+        }
+
+        /**
+         * Add a feature tag that is currently included in the current network IMS Registration.
+         * @param featureTag The IMS media feature tag included in the current IMS registration.
+         * @return The in-progress Builder instance for RegistrationState.
+         */
+        public @NonNull Builder addRegisteredFeatureTag(@NonNull String featureTag) {
+            mState.mRegisteredTags.add(featureTag);
+            return this;
+        }
+
+        /**
+         * Add a list of feature tags that are currently included in the current network IMS
+         * Registration.
+         * @param featureTags The IMS media feature tags included in the current IMS registration.
+         * @return The in-progress Builder instance for RegistrationState.
+         */
+        @SuppressLint("MissingGetterMatchingBuilder")
+        public @NonNull Builder addRegisteredFeatureTags(@NonNull Set<String> featureTags) {
+            mState.mRegisteredTags.addAll(featureTags);
+            return this;
+        }
+
+        /**
+         * Add a feature tag that is in the current network IMS Registration, but is in the progress
+         * of being deregistered and requires action from the RCS application before the IMS
+         * registration can be modified.
+         *
+         * See {@link DeregisteringReason} for more information regarding what is required by the
+         * RCS application to proceed.
+         *
+         * @param featureTag The media feature tag that has limited or no availability due to its
+         *         current deregistering state.
+         * @param reason The reason why the media feature tag has moved to the deregistering state.
+         *         The availability of the feature tag depends on the {@link DeregisteringReason}.
+         * @return The in-progress Builder instance for RegistrationState.
+         */
+        public @NonNull Builder addDeregisteringFeatureTag(@NonNull String featureTag,
+                @DeregisteringReason int reason) {
+            mState.mDeregisteringTags.add(new FeatureTagState(featureTag, reason));
+            return this;
+        }
+
+        /**
+         * Add a feature tag that is currently not included in the network RCS registration. See
+         * {@link DeregisteredReason} for more information regarding the reason for why the feature
+         * tag is not registered.
+         * @param featureTag The media feature tag that is not registered.
+         * @param reason The reason why the media feature tag has been deregistered.
+         * @return The in-progress Builder instance for RegistrationState.
+         */
+        public @NonNull Builder addDeregisteredFeatureTag(@NonNull String featureTag,
+                @DeregisteredReason int reason) {
+            mState.mDeregisteredTags.add(new FeatureTagState(featureTag, reason));
+            return this;
+        }
+
+        /**
+         * @return the finalized instance.
+         */
+        public @NonNull DelegateRegistrationState build() {
+            return mState;
+        }
+    }
+
+    /**
+     * The builder should be used to construct a new instance of this class.
+     */
+    private DelegateRegistrationState() {}
+
+    /**
+     * Used for unparcelling only.
+     */
+    private DelegateRegistrationState(Parcel source) {
+        mRegisteredTags = (ArraySet<String>) source.readArraySet(null);
+        readStateFromParcel(source, mDeregisteringTags);
+        readStateFromParcel(source, mDeregisteredTags);
+    }
+
+    /**
+     * Get the feature tags that this SipDelegate is associated with that are currently part of the
+     * network IMS registration. SIP Messages both in and out of a SIP Dialog may be sent and
+     * received using these feature tags.
+     * @return A Set of feature tags that the SipDelegate has associated with that are included in
+     * the network IMS registration.
+     */
+    public @NonNull Set<String> getRegisteredFeatureTags() {
+        return new ArraySet<>(mRegisteredTags);
+    }
+
+    /**
+     * Get the feature tags that this SipDelegate is associated with that are currently part of the
+     * network IMS registration but are in the process of being deregistered.
+     * <p>
+     * Any incoming SIP messages associated with a feature tag included in this list will still be
+     * delivered. Outgoing SIP messages that are still in-dialog will be delivered to the
+     * SipDelegate, but outgoing out-of-dialog SIP messages with  a feature tag that is included in
+     * this list will fail.
+     * <p>
+     * The SipDelegate will stay in this state for a limited period of time while it waits for the
+     * RCS application to perform a specific action. More details on the actions that can cause this
+     * state as well as the expected response are included in the reason codes and can be found in
+     * {@link DeregisteringReason}.
+     * @return A Set of feature tags that the SipDelegate has associated with that are included in
+     * the network IMS registration but are in the process of deregistering.
+     */
+    public @NonNull Set<FeatureTagState> getDeregisteringFeatureTags() {
+        return new ArraySet<>(mDeregisteringTags);
+    }
+
+    /**
+     * Get the list of feature tags that are associated with this SipDelegate but are not currently
+     * included in the network IMS registration.
+     * <p>
+     * See {@link DeregisteredReason} codes for more information related to the reasons why this may
+     * occur.
+     * <p>
+     * Due to network race conditions, there may still be onditions where an incoming out-of-dialog
+     * SIP message is delivered for a feature tag that is considered deregistered. Due to this
+     * condition, in-dialog outgoing SIP messages for deregistered feature tags will still be
+     * allowed as long as they are in response to a dialog started by a remote party. Any outgoing
+     * out-of-dialog SIP messages associated with feature tags included in this list will fail to be
+     * sent.
+     * @return A list of feature tags that the SipDelegate has associated with that not included in
+     * the network IMS registration.
+     */
+    public @NonNull Set<FeatureTagState> getDeregisteredFeatureTags() {
+        return new ArraySet<>(mDeregisteredTags);
+    }
+
+
+    public static final @NonNull Creator<DelegateRegistrationState> CREATOR =
+            new Creator<DelegateRegistrationState>() {
+        @Override
+        public DelegateRegistrationState createFromParcel(Parcel source) {
+            return new DelegateRegistrationState(source);
+        }
+
+        @Override
+        public DelegateRegistrationState[] newArray(int size) {
+            return new DelegateRegistrationState[size];
+        }
+    };
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel dest, int flags) {
+        dest.writeArraySet(mRegisteredTags);
+        writeStateToParcel(dest, mDeregisteringTags);
+        writeStateToParcel(dest, mDeregisteredTags);
+    }
+
+    private void writeStateToParcel(Parcel dest, Set<FeatureTagState> state) {
+        dest.writeInt(state.size());
+        for (FeatureTagState s : state) {
+            dest.writeString(s.getFeatureTag());
+            dest.writeInt(s.getState());
+        }
+    }
+
+    private void readStateFromParcel(Parcel source, Set<FeatureTagState> emptyState) {
+        int len = source.readInt();
+        for (int i = 0; i < len; i++) {
+            String ft = source.readString();
+            int reason = source.readInt();
+
+            emptyState.add(new FeatureTagState(ft, reason));
+        }
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        DelegateRegistrationState that = (DelegateRegistrationState) o;
+        return mRegisteredTags.equals(that.mRegisteredTags)
+                && mDeregisteringTags.equals(that.mDeregisteringTags)
+                && mDeregisteredTags.equals(that.mDeregisteredTags);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(mRegisteredTags, mDeregisteringTags, mDeregisteredTags);
+    }
+}
diff --git a/telephony/java/android/telephony/ims/DelegateRequest.aidl b/telephony/java/android/telephony/ims/DelegateRequest.aidl
new file mode 100644
index 0000000..60c990f
--- /dev/null
+++ b/telephony/java/android/telephony/ims/DelegateRequest.aidl
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims;
+
+parcelable DelegateRequest;
diff --git a/telephony/java/android/telephony/ims/DelegateRequest.java b/telephony/java/android/telephony/ims/DelegateRequest.java
new file mode 100644
index 0000000..c322d92
--- /dev/null
+++ b/telephony/java/android/telephony/ims/DelegateRequest.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims;
+
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.telephony.ims.stub.SipDelegate;
+import android.util.ArraySet;
+
+import java.util.ArrayList;
+import java.util.Objects;
+import java.util.Set;
+
+/**
+ * Contains information required for the creation of a {@link SipDelegate} and the associated
+ * SipDelegateConnection given back to the requesting application.
+ * @hide
+ */
+@SystemApi
+public final class DelegateRequest implements Parcelable {
+
+    private final ArrayList<String> mFeatureTags;
+
+    /**
+     * Create a new DelegateRequest, which will be used to create a SipDelegate by the ImsService.
+     * @param featureTags The list of IMS feature tags that will be associated with the SipDelegate
+     *                    created using this DelegateRequest. All feature tags are expected to be in
+     *                    the format defined in RCC.07 section 2.6.1.3.
+     */
+    public DelegateRequest(@NonNull Set<String> featureTags) {
+        if (featureTags == null) {
+            throw new IllegalStateException("Invalid arguments, featureTags List can not be null");
+        }
+        mFeatureTags = new ArrayList<>(featureTags);
+    }
+
+    /**
+     * @return the list of IMS feature tag associated with this DelegateRequest in the format
+     * defined in RCC.07 section 2.6.1.3.
+     */
+    public @NonNull Set<String> getFeatureTags() {
+        return new ArraySet<>(mFeatureTags);
+    }
+
+    /**
+     * Internal constructor used only for unparcelling.
+     */
+    private DelegateRequest(Parcel in) {
+        mFeatureTags = new ArrayList<>();
+        in.readList(mFeatureTags, null /*classLoader*/);
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel dest, int flags) {
+        dest.writeList(mFeatureTags);
+    }
+
+    public static final @NonNull Creator<DelegateRequest> CREATOR = new Creator<DelegateRequest>() {
+        @Override
+        public DelegateRequest createFromParcel(Parcel source) {
+            return new DelegateRequest(source);
+        }
+
+        @Override
+        public DelegateRequest[] newArray(int size) {
+            return new DelegateRequest[size];
+        }
+    };
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        DelegateRequest that = (DelegateRequest) o;
+        return mFeatureTags.equals(that.mFeatureTags);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(mFeatureTags);
+    }
+
+    @Override
+    public String toString() {
+        return "DelegateRequest{mFeatureTags=" + mFeatureTags + '}';
+    }
+}
diff --git a/telephony/java/android/telephony/ims/DelegateStateCallback.java b/telephony/java/android/telephony/ims/DelegateStateCallback.java
new file mode 100644
index 0000000..fb65949
--- /dev/null
+++ b/telephony/java/android/telephony/ims/DelegateStateCallback.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.SystemApi;
+import android.telephony.ims.stub.SipDelegate;
+import android.telephony.ims.stub.SipTransportImplBase;
+
+import java.util.Set;
+
+/**
+ * Callback interface to notify a remote application of the following:
+ * <ul>
+ *     <li>the {@link SipDelegate} associated with this callback has been created or destroyed in
+ *         response to a creation or destruction request from the framework</li>
+ *     <li>the SIP IMS configuration associated with this {@link SipDelegate} has changed</li>
+ *     <li>the IMS registration of the feature tags associated with this {@link SipDelegate} have
+ *         changed.</li>
+ * </ul>
+ * @hide
+ */
+@SystemApi
+public interface DelegateStateCallback {
+
+    /**
+     * This must be called by the ImsService after {@link SipTransportImplBase#createSipDelegate} is
+     * called by the framework to notify the framework and remote application that the
+     * {@link SipDelegate} has been successfully created.
+     *  @param delegate The SipDelegate created to service the DelegateRequest.
+     * @param deniedTags A Set of {@link FeatureTagState}s, which contain the feature tags
+     *    associated with this {@link SipDelegate} that have no access to send/receive SIP messages
+     *    as well as a reason for why the feature tag is denied. For more information on the reason
+     *    why the feature tag was denied access, see the
+     *    {@link SipDelegateManager.DeniedReason} reasons. This is considered a permanent denial due
+     *    to this {@link SipDelegate} not supporting a feature or this ImsService already
+     *    implementing this feature elsewhere. If all features of this {@link SipDelegate} are
+     *    denied, this method should still be called.
+     */
+    void onCreated(@NonNull SipDelegate delegate, @Nullable Set<FeatureTagState> deniedTags);
+
+    /**
+     * This must be called by the ImsService after the framework calls
+     * {@link SipTransportImplBase#destroySipDelegate} to notify the framework and remote
+     * application that the procedure to destroy the {@link SipDelegate} has been completed.
+     * @param reasonCode The reason for closing this delegate.
+     */
+    void onDestroyed(@SipDelegateManager.SipDelegateDestroyReason int reasonCode);
+
+    /**
+     * Call to notify the remote application of a configuration change associated with this
+     * {@link SipDelegate}.
+     * <p>
+     * The remote application will not be able to proceed sending SIP messages until after this
+     * configuration is sent the first time, so this configuration should be sent as soon as the
+     * {@link SipDelegate} has access to these configuration parameters.
+     * <p>
+     * Incoming SIP messages should not be routed to the remote application until AFTER this
+     * configuration change is sent to ensure that the remote application can respond correctly.
+     * Similarly, if there is an event that triggers the IMS configuration to change, incoming SIP
+     * messages routing should be delayed until the {@link SipDelegate} sends the IMS configuration
+     * change event to reduce conditions where the remote application is using a stale IMS
+     * configuration.
+     */
+    void onImsConfigurationChanged(@NonNull SipDelegateImsConfiguration config);
+
+    /**
+     * Call to notify the remote application that the {@link SipDelegate} has modified the IMS
+     * registration state of the RCS feature tags that were requested as part of the initial
+     * {@link DelegateRequest}.
+     * <p>
+     * See {@link DelegateRegistrationState} for more information about how IMS Registration state
+     * should be communicated the associated SipDelegateConnection in cases such as
+     * IMS deregistration, handover, PDN change, provisioning changes, etc…
+     * <p>
+     * Note: Even after the status of the feature tags are updated here to deregistered, the
+     * SipDelegate must still be able to handle these messages and call
+     * {@link DelegateMessageCallback#onMessageSendFailure} to notify the RCS application that the
+     * message was not sent.
+     *
+     * @param registrationState The current network IMS registration state for all feature tags
+     *         associated with this SipDelegate.
+     */
+    void onFeatureTagRegistrationChanged(@NonNull DelegateRegistrationState registrationState);
+}
diff --git a/telephony/java/android/telephony/ims/FeatureTagState.aidl b/telephony/java/android/telephony/ims/FeatureTagState.aidl
new file mode 100644
index 0000000..bce5574
--- /dev/null
+++ b/telephony/java/android/telephony/ims/FeatureTagState.aidl
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims;
+
+parcelable FeatureTagState;
diff --git a/telephony/java/android/telephony/ims/FeatureTagState.java b/telephony/java/android/telephony/ims/FeatureTagState.java
new file mode 100644
index 0000000..3622065
--- /dev/null
+++ b/telephony/java/android/telephony/ims/FeatureTagState.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims;
+
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.telephony.ims.stub.DelegateConnectionStateCallback;
+import android.telephony.ims.stub.SipDelegate;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * Maps an IMS media feature tag 3gpp universal resource name (URN) previously mapped to a
+ * {@link SipDelegate} in the associated {@link DelegateRequest} to its current availability
+ * state as set by the ImsService managing the related IMS registration.
+ *
+ * This class is only used to report more information about a IMS feature tag that is not fully
+ * available at this time.
+ * <p>
+ * Please see {@link DelegateRegistrationState}, {@link DelegateStateCallback}, and
+ * {@link DelegateConnectionStateCallback} for more information about how this class is used to
+ * convey the state of IMS feature tags that were requested by {@link DelegateRequest} but are not
+ * currently available.
+ * @hide
+ */
+@SystemApi
+public final class FeatureTagState implements Parcelable {
+
+    private final String mFeatureTag;
+    private final int mState;
+
+    /**
+     * Associate an IMS feature tag with its current state. See {@link DelegateRegistrationState}
+     * and {@link DelegateConnectionStateCallback#onFeatureTagStatusChanged(
+     * DelegateRegistrationState, List)} and
+     * {@link DelegateStateCallback#onCreated(SipDelegate, java.util.Set)} for examples on how and
+     * when this is used.
+     *
+     * @param featureTag The IMS feature tag that is deregistered, in the process of
+     *                   deregistering, or denied.
+     * @param state The {@link DelegateRegistrationState.DeregisteredReason},
+     *         {@link DelegateRegistrationState.DeregisteringReason}, or
+     *         {@link SipDelegateManager.DeniedReason} associated with this feature tag.
+     */
+    public FeatureTagState(@NonNull String featureTag, int state) {
+        mFeatureTag = featureTag;
+        mState = state;
+    }
+
+    /**
+     * Used for constructing instances during un-parcelling.
+     */
+    private FeatureTagState(Parcel source) {
+        mFeatureTag = source.readString();
+        mState = source.readInt();
+    }
+
+    /**
+     * @return The IMS feature tag string that is in the process of deregistering,
+     * deregistered, or denied.
+     */
+    public @NonNull String getFeatureTag() {
+        return mFeatureTag;
+    }
+
+    /**
+     * @return The reason for why the feature tag is currently in the process of deregistering,
+     * has been deregistered, or has been denied. See {@link DelegateRegistrationState} and
+     * {@link DelegateConnectionStateCallback} for more information.
+     */
+    public int getState() {
+        return mState;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel dest, int flags) {
+        dest.writeString(mFeatureTag);
+        dest.writeInt(mState);
+    }
+
+    public static final @NonNull Creator<FeatureTagState> CREATOR = new Creator<FeatureTagState>() {
+        @Override
+        public FeatureTagState createFromParcel(Parcel source) {
+            return new FeatureTagState(source);
+        }
+
+        @Override
+        public FeatureTagState[] newArray(int size) {
+            return new FeatureTagState[size];
+        }
+    };
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        FeatureTagState that = (FeatureTagState) o;
+        return mState == that.mState
+                && mFeatureTag.equals(that.mFeatureTag);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(mFeatureTag, mState);
+    }
+
+    @Override
+    public String toString() {
+        return "FeatureTagState{" + "mFeatureTag='" + mFeatureTag + ", mState=" + mState + '}';
+    }
+}
diff --git a/telephony/java/android/telephony/ims/ImsCallForwardInfo.java b/telephony/java/android/telephony/ims/ImsCallForwardInfo.java
index d53a2e6..1c2cac2 100644
--- a/telephony/java/android/telephony/ims/ImsCallForwardInfo.java
+++ b/telephony/java/android/telephony/ims/ImsCallForwardInfo.java
@@ -19,8 +19,8 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -33,7 +33,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class ImsCallForwardInfo implements Parcelable {
 
     /**
@@ -130,26 +129,26 @@
     public @interface TypeOfAddress{}
 
     /**@hide*/
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public @CallForwardReasons int mCondition;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public @CallForwardStatus int mStatus;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public @TypeOfAddress int mToA;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public @ImsSsData.ServiceClassFlags int mServiceClass;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public String mNumber;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int mTimeSeconds;
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ImsCallForwardInfo() {
     }
 
diff --git a/telephony/java/android/telephony/ims/ImsCallProfile.java b/telephony/java/android/telephony/ims/ImsCallProfile.java
index f31fcf4..1b51936 100644
--- a/telephony/java/android/telephony/ims/ImsCallProfile.java
+++ b/telephony/java/android/telephony/ims/ImsCallProfile.java
@@ -21,6 +21,7 @@
 import android.annotation.SystemApi;
 import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -28,6 +29,8 @@
 import android.telephony.emergency.EmergencyNumber;
 import android.telephony.emergency.EmergencyNumber.EmergencyCallRouting;
 import android.telephony.emergency.EmergencyNumber.EmergencyServiceCategories;
+import android.telephony.ims.feature.MmTelFeature;
+import android.util.ArraySet;
 import android.util.Log;
 
 import com.android.internal.annotations.VisibleForTesting;
@@ -37,7 +40,10 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * A Parcelable object to handle the IMS call profile, which provides the service, call type, and
@@ -48,7 +54,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class ImsCallProfile implements Parcelable {
     private static final String TAG = "ImsCallProfile";
 
@@ -357,10 +362,10 @@
     /** @hide */
     public int mServiceType;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int mCallType;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public @CallRestrictCause int mRestrictCause = CALL_RESTRICT_CAUSE_NONE;
 
     /**
@@ -445,6 +450,8 @@
     /** Indicates if we have known the intent of the user for the call is emergency */
     private boolean mHasKnownUserIntentEmergency = false;
 
+    private Set<RtpHeaderExtensionType> mAcceptedRtpHeaderExtensionTypes = new ArraySet<>();
+
     /**
      * Extras associated with this {@link ImsCallProfile}.
      * <p>
@@ -468,10 +475,10 @@
      * a {@link android.os.Binder}.
      */
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Bundle mCallExtras;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ImsStreamMediaProfile mMediaProfile;
 
     /** @hide */
@@ -683,6 +690,7 @@
         out.writeBoolean(mHasKnownUserIntentEmergency);
         out.writeInt(mRestrictCause);
         out.writeInt(mCallerNumberVerificationStatus);
+        out.writeArray(mAcceptedRtpHeaderExtensionTypes.toArray());
     }
 
     private void readFromParcel(Parcel in) {
@@ -697,9 +705,13 @@
         mHasKnownUserIntentEmergency = in.readBoolean();
         mRestrictCause = in.readInt();
         mCallerNumberVerificationStatus = in.readInt();
+        Object[] accepted = in.readArray(RtpHeaderExtensionType.class.getClassLoader());
+        mAcceptedRtpHeaderExtensionTypes = Arrays.stream(accepted)
+                .map(o -> (RtpHeaderExtensionType) o).collect(Collectors.toSet());
     }
 
-    public static final @android.annotation.NonNull Creator<ImsCallProfile> CREATOR = new Creator<ImsCallProfile>() {
+    public static final @android.annotation.NonNull Creator<ImsCallProfile> CREATOR =
+            new Creator<ImsCallProfile>() {
         @Override
         public ImsCallProfile createFromParcel(Parcel in) {
             return new ImsCallProfile(in);
@@ -824,7 +836,7 @@
      * See {@link #presentationToOir(int)}.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static int presentationToOIR(int presentation) {
         switch (presentation) {
             case PhoneConstants.PRESENTATION_RESTRICTED:
@@ -1086,4 +1098,33 @@
     public boolean hasKnownUserIntentEmergency() {
         return mHasKnownUserIntentEmergency;
     }
+
+    /**
+     * Gets the {@link RtpHeaderExtensionType}s which have been accepted by both ends of the call.
+     * <p>
+     * According to RFC8285, RTP header extensions available to a call are determined using the
+     * offer/accept phase of the SDP protocol (see RFC4566).
+     * <p>
+     * The offered header extension types supported by the framework and exposed to the
+     * {@link ImsService} via {@link MmTelFeature#changeOfferedRtpHeaderExtensionTypes(Set)}.
+     *
+     * @return the {@link RtpHeaderExtensionType}s which were accepted by the other end of the call.
+     */
+    public @NonNull Set<RtpHeaderExtensionType> getAcceptedRtpHeaderExtensionTypes() {
+        return mAcceptedRtpHeaderExtensionTypes;
+    }
+
+    /**
+     * Sets the accepted {@link RtpHeaderExtensionType}s for this call.
+     * <p>
+     * According to RFC8285, RTP header extensions available to a call are determined using the
+     * offer/accept phase of the SDP protocol (see RFC4566).
+     *
+     * @param rtpHeaderExtensions
+     */
+    public void setAcceptedRtpHeaderExtensionTypes(@NonNull Set<RtpHeaderExtensionType>
+            rtpHeaderExtensions) {
+        mAcceptedRtpHeaderExtensionTypes.clear();
+        mAcceptedRtpHeaderExtensionTypes.addAll(rtpHeaderExtensions);
+    }
 }
diff --git a/telephony/java/android/telephony/ims/ImsCallSession.java b/telephony/java/android/telephony/ims/ImsCallSession.java
index 8857b9b..a3efb79 100755
--- a/telephony/java/android/telephony/ims/ImsCallSession.java
+++ b/telephony/java/android/telephony/ims/ImsCallSession.java
@@ -22,11 +22,16 @@
 import android.os.RemoteException;
 import android.telephony.CallQuality;
 import android.telephony.ims.aidl.IImsCallSessionListener;
+import android.util.ArraySet;
 import android.util.Log;
 
 import com.android.ims.internal.IImsCallSession;
 import com.android.ims.internal.IImsVideoCallProvider;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
 /**
  * Provides the call initiation/termination, and media exchange between two IMS endpoints.
  * It directly communicates with IMS service which implements the IMS protocol behavior.
@@ -468,11 +473,31 @@
         }
 
         /**
+         * Informs the framework of a DTMF digit which was received from the network.
+         * <p>
+         * According to <a href="http://tools.ietf.org/html/rfc2833">RFC 2833 sec 3.10</a>,
+         * event 0 ~ 9 maps to decimal value 0 ~ 9, '*' to 10, '#' to 11, event 'A' ~ 'D' to
+         * 12 ~ 15.
+         * @param digit the DTMF digit
+         */
+        public void callSessionDtmfReceived(char digit) {
+            // no-op
+        }
+
+        /**
          * Called when the IMS service reports a change to the call quality.
          */
         public void callQualityChanged(CallQuality callQuality) {
             // no-op
         }
+
+        /**
+         * Called when the IMS service reports incoming RTP header extension data.
+         */
+        public void callSessionRtpHeaderExtensionsReceived(
+                @NonNull Set<RtpHeaderExtension> extensions) {
+            // no-op
+        }
     }
 
     private final IImsCallSession miSession;
@@ -1119,6 +1144,31 @@
     }
 
     /**
+     * Requests that {@code rtpHeaderExtensions} are sent as a header extension with the next
+     * RTP packet sent by the IMS stack.
+     * <p>
+     * The {@link RtpHeaderExtensionType}s negotiated during SDP (Session Description Protocol)
+     * signalling determine the {@link RtpHeaderExtension}s which can be sent using this method.
+     * See RFC8285 for more information.
+     * <p>
+     * By specification, the RTP header extension is an unacknowledged transmission and there is no
+     * guarantee that the header extension will be delivered by the network to the other end of the
+     * call.
+     * @param rtpHeaderExtensions The header extensions to be included in the next RTP header.
+     */
+    public void sendRtpHeaderExtensions(@NonNull Set<RtpHeaderExtension> rtpHeaderExtensions) {
+        if (mClosed) {
+            return;
+        }
+
+        try {
+            miSession.sendRtpHeaderExtensions(
+                    new ArrayList<RtpHeaderExtension>(rtpHeaderExtensions));
+        } catch (RemoteException e) {
+        }
+    }
+
+    /**
      * A listener type for receiving notification on IMS call session events.
      * When an event is generated for an {@link IImsCallSession},
      * the application is notified by having one of the methods called on
@@ -1477,6 +1527,17 @@
         }
 
         /**
+         * DTMF digit received.
+         * @param dtmf The DTMF digit.
+         */
+        @Override
+        public void callSessionDtmfReceived(char dtmf) {
+            if (mListener != null) {
+                mListener.callSessionDtmfReceived(dtmf);
+            }
+        }
+
+        /**
          * Call quality updated
          */
         @Override
@@ -1485,6 +1546,19 @@
                 mListener.callQualityChanged(callQuality);
             }
         }
+
+        /**
+         * RTP header extension data received.
+         * @param extensions The header extension data.
+         */
+        @Override
+        public void callSessionRtpHeaderExtensionsReceived(
+                @NonNull List<RtpHeaderExtension> extensions) {
+            if (mListener != null) {
+                mListener.callSessionRtpHeaderExtensionsReceived(
+                        new ArraySet<RtpHeaderExtension>(extensions));
+            }
+        }
     }
 
     /**
diff --git a/telephony/java/android/telephony/ims/ImsCallSessionListener.java b/telephony/java/android/telephony/ims/ImsCallSessionListener.java
index d21a051..86bb5d9 100644
--- a/telephony/java/android/telephony/ims/ImsCallSessionListener.java
+++ b/telephony/java/android/telephony/ims/ImsCallSessionListener.java
@@ -19,7 +19,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.RemoteException;
 import android.telephony.Annotation;
 import android.telephony.CallQuality;
@@ -29,6 +28,10 @@
 
 import com.android.ims.internal.IImsCallSession;
 
+import java.util.ArrayList;
+import java.util.Objects;
+import java.util.Set;
+
 /**
  * Listener interface for notifying the Framework's {@link ImsCallSession} for updates to an ongoing
  * IMS call.
@@ -40,7 +43,6 @@
 // TODO: APIs in here do not conform to API guidelines yet. This can be changed if
 // ImsCallSessionListenerConverter is also changed.
 @SystemApi
-@TestApi
 public class ImsCallSessionListener {
 
     private final IImsCallSessionListener mListener;
@@ -685,6 +687,59 @@
     }
 
     /**
+     * The {@link ImsService} calls this method to inform the framework of a DTMF digit which was
+     * received from the network.
+     * <p>
+     * According to <a href="http://tools.ietf.org/html/rfc2833">RFC 2833 sec 3.10</a>,
+     * event 0 ~ 9 maps to decimal value 0 ~ 9, '*' to 10, '#' to 11, event 'A' ~ 'D' to 12 ~ 15.
+     * <p>
+     * <em>Note:</em> Alpha DTMF digits are converted from lower-case to upper-case.
+     *
+     * @param dtmf The DTMF digit received, '0'-'9', *, #, A, B, C, or D.
+     * @throws IllegalArgumentException If an invalid DTMF character is provided.
+     */
+    public void callSessionDtmfReceived(char dtmf) {
+        if (!(dtmf >= '0' && dtmf <= '9'
+                || dtmf >= 'A' && dtmf <= 'D'
+                || dtmf >= 'a' && dtmf <= 'd'
+                || dtmf == '*'
+                || dtmf == '#')) {
+            throw new IllegalArgumentException("DTMF digit must be 0-9, *, #, A, B, C, D");
+        }
+        try {
+            mListener.callSessionDtmfReceived(Character.toUpperCase(dtmf));
+        } catch (RemoteException e) {
+            e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * The {@link ImsService} calls this method to inform the framework of RTP header extension data
+     * which was received from the network.
+     * <p>
+     * The set of {@link RtpHeaderExtension} data are identified by local identifiers which were
+     * negotiated during SDP signalling.  See RFC8285,
+     * {@link ImsCallProfile#getAcceptedRtpHeaderExtensionTypes()} and
+     * {@link RtpHeaderExtensionType} for more information.
+     * <p>
+     * By specification, the RTP header extension is an unacknowledged transmission and there is no
+     * guarantee that the header extension will be delivered by the network to the other end of the
+     * call.
+     *
+     * @param extensions The RTP header extension data received.
+     */
+    public void callSessionRtpHeaderExtensionsReceived(
+            @NonNull Set<RtpHeaderExtension> extensions) {
+        Objects.requireNonNull(extensions, "extensions are required.");
+        try {
+            mListener.callSessionRtpHeaderExtensionsReceived(
+                    new ArrayList<RtpHeaderExtension>(extensions));
+        } catch (RemoteException e) {
+            e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
      * Notifies the result of transfer request.
      * @hide
      */
diff --git a/telephony/java/android/telephony/ims/ImsConferenceState.java b/telephony/java/android/telephony/ims/ImsConferenceState.java
index 9bf2f44..1fa5f52 100644
--- a/telephony/java/android/telephony/ims/ImsConferenceState.java
+++ b/telephony/java/android/telephony/ims/ImsConferenceState.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Bundle;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -38,7 +37,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class ImsConferenceState implements Parcelable {
     private static final String TAG = "ImsConferenceState";
     /**
diff --git a/telephony/java/android/telephony/ims/ImsException.java b/telephony/java/android/telephony/ims/ImsException.java
index 1c3d58d..50fb828 100644
--- a/telephony/java/android/telephony/ims/ImsException.java
+++ b/telephony/java/android/telephony/ims/ImsException.java
@@ -19,7 +19,6 @@
 import android.annotation.IntDef;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.content.pm.PackageManager;
 import android.telephony.SubscriptionManager;
 import android.text.TextUtils;
@@ -83,7 +82,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public ImsException(@Nullable String message) {
         super(getMessage(message, CODE_ERROR_UNSPECIFIED));
     }
@@ -94,7 +92,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public ImsException(@Nullable String message, @ImsErrorCode int code) {
         super(getMessage(message, code));
         mCode = code;
@@ -108,7 +105,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public ImsException(@Nullable String message, @ImsErrorCode  int code,
             @Nullable Throwable cause) {
         super(getMessage(message, code), cause);
diff --git a/telephony/java/android/telephony/ims/ImsExternalCallState.java b/telephony/java/android/telephony/ims/ImsExternalCallState.java
index 7d73165..c663e39 100644
--- a/telephony/java/android/telephony/ims/ImsExternalCallState.java
+++ b/telephony/java/android/telephony/ims/ImsExternalCallState.java
@@ -20,7 +20,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.net.Uri;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -35,7 +34,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class ImsExternalCallState implements Parcelable {
 
     private static final String TAG = "ImsExternalCallState";
@@ -51,8 +49,7 @@
     public static final int CALL_STATE_TERMINATED = 2;
 
     /**@hide*/
-    @IntDef(flag = true,
-            value = {
+    @IntDef(value = {
                     CALL_STATE_CONFIRMED,
                     CALL_STATE_TERMINATED
             },
@@ -61,8 +58,7 @@
     public @interface ExternalCallState {}
 
     /**@hide*/
-    @IntDef(flag = true,
-            value = {
+    @IntDef(value = {
                     ImsCallProfile.CALL_TYPE_VOICE,
                     ImsCallProfile.CALL_TYPE_VT_TX,
                     ImsCallProfile.CALL_TYPE_VT_RX,
diff --git a/telephony/java/android/telephony/ims/ImsMmTelManager.java b/telephony/java/android/telephony/ims/ImsMmTelManager.java
index f6c14e6..d1a893f 100644
--- a/telephony/java/android/telephony/ims/ImsMmTelManager.java
+++ b/telephony/java/android/telephony/ims/ImsMmTelManager.java
@@ -25,11 +25,11 @@
 import android.annotation.SuppressAutoDoc;
 import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Binder;
 import android.os.RemoteException;
 import android.os.ServiceSpecificException;
 import android.telephony.AccessNetworkConstants;
+import android.telephony.BinderCacheManager;
 import android.telephony.CarrierConfigManager;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyFrameworkInitializer;
@@ -59,6 +59,7 @@
  * manager.
  */
 public class ImsMmTelManager implements RegistrationManager {
+    private static final String TAG = "ImsMmTelManager";
 
     /**
      * @hide
@@ -96,7 +97,7 @@
      */
     // Do not add to this class, add to RegistrationManager.RegistrationCallback instead.
     @Deprecated
-    @SystemApi @TestApi
+    @SystemApi
     public static class RegistrationCallback extends RegistrationManager.RegistrationCallback {
 
         /**
@@ -213,6 +214,7 @@
     }
 
     private final int mSubId;
+    private final BinderCacheManager<ITelephony> mBinderCache;
 
     /**
      * Create an instance of {@link ImsMmTelManager} for the subscription id specified.
@@ -230,7 +232,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @Deprecated
     @SuppressAutoDoc // No support for device / profile owner or carrier privileges (b/72967236).
     @RequiresPermission(anyOf = {
@@ -243,7 +244,8 @@
             throw new IllegalArgumentException("Invalid subscription ID");
         }
 
-        return new ImsMmTelManager(subId);
+        return new ImsMmTelManager(subId, new BinderCacheManager<>(
+                ImsMmTelManager::getITelephonyInterface));
     }
 
     /**
@@ -251,8 +253,9 @@
      * @hide
      */
     @VisibleForTesting
-    public ImsMmTelManager(int subId) {
+    public ImsMmTelManager(int subId, BinderCacheManager<ITelephony> binderCache) {
         mSubId = subId;
+        mBinderCache = binderCache;
     }
 
     /**
@@ -279,7 +282,7 @@
      * @hide
      */
     @Deprecated
-    @SystemApi @TestApi
+    @SystemApi
     @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public void registerImsRegistrationCallback(@NonNull @CallbackExecutor Executor executor,
             @NonNull RegistrationCallback c) throws ImsException {
@@ -365,7 +368,7 @@
      * @hide
      */
     @Deprecated
-    @SystemApi @TestApi
+    @SystemApi
     @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public void unregisterImsRegistrationCallback(@NonNull RegistrationCallback c) {
         if (c == null) {
@@ -421,7 +424,7 @@
      * @hide
      */
     @Override
-    @SystemApi @TestApi
+    @SystemApi
     @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public void getRegistrationState(@NonNull @CallbackExecutor Executor executor,
             @NonNull @ImsRegistrationState Consumer<Integer> stateCallback) {
@@ -680,7 +683,7 @@
      * @hide
      */
     @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
-    @SystemApi @TestApi
+    @SystemApi
     public void setAdvancedCallingSettingEnabled(boolean isEnabled) {
         ITelephony iTelephony = getITelephony();
         if (iTelephony == null) {
@@ -724,7 +727,7 @@
      * @hide
      */
     @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
-    @SystemApi @TestApi
+    @SystemApi
     public boolean isCapable(@MmTelFeature.MmTelCapabilities.MmTelCapability int capability,
             @ImsRegistrationImplBase.ImsRegistrationTech int imsRegTech) {
         ITelephony iTelephony = getITelephony();
@@ -757,7 +760,7 @@
      *         otherwise.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public boolean isAvailable(@MmTelFeature.MmTelCapabilities.MmTelCapability int capability,
             @ImsRegistrationImplBase.ImsRegistrationTech int imsRegTech) {
@@ -789,7 +792,7 @@
      * available.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public void isSupported(@MmTelFeature.MmTelCapabilities.MmTelCapability int capability,
             @AccessNetworkConstants.TransportType int transportType,
@@ -809,7 +812,7 @@
         }
 
         try {
-            getITelephony().isMmTelCapabilitySupported(mSubId, new IIntegerConsumer.Stub() {
+            iTelephony.isMmTelCapabilitySupported(mSubId, new IIntegerConsumer.Stub() {
                 @Override
                 public void accept(int result) {
                     executor.execute(() -> callback.accept(result == 1));
@@ -878,7 +881,7 @@
      * @see #isVtSettingEnabled()
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
     public void setVtSettingEnabled(boolean isEnabled) {
         ITelephony iTelephony = getITelephony();
@@ -953,7 +956,7 @@
      * @see #isVoWiFiSettingEnabled()
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
     public void setVoWiFiSettingEnabled(boolean isEnabled) {
         ITelephony iTelephony = getITelephony();
@@ -1031,7 +1034,7 @@
      * @see #isVoWiFiRoamingSettingEnabled()
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
     public void setVoWiFiRoamingSettingEnabled(boolean isEnabled) {
         ITelephony iTelephony = getITelephony();
@@ -1068,7 +1071,7 @@
      * @see #setVoWiFiSettingEnabled(boolean)
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
     public void setVoWiFiNonPersistent(boolean isCapable, int mode) {
         ITelephony iTelephony = getITelephony();
@@ -1151,7 +1154,7 @@
      * @see #getVoWiFiModeSetting()
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
     public void setVoWiFiModeSetting(@WiFiCallingMode int mode) {
         ITelephony iTelephony = getITelephony();
@@ -1187,7 +1190,7 @@
      * @see #setVoWiFiRoamingSettingEnabled(boolean)
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public @WiFiCallingMode int getVoWiFiRoamingModeSetting() {
         ITelephony iTelephony = getITelephony();
@@ -1223,7 +1226,7 @@
      * @see #getVoWiFiRoamingModeSetting()
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
     public void setVoWiFiRoamingModeSetting(@WiFiCallingMode int mode) {
         ITelephony iTelephony = getITelephony();
@@ -1257,7 +1260,7 @@
      * @param isEnabled if true RTT should be enabled during calls made on this subscription.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
     public void setRttCapabilitySetting(boolean isEnabled) {
         ITelephony iTelephony = getITelephony();
@@ -1337,7 +1340,7 @@
      * the IMS service is not available.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public void getFeatureState(@NonNull @CallbackExecutor Executor executor,
             @NonNull @ImsFeature.ImsState Consumer<Integer> callback) throws ImsException {
@@ -1368,7 +1371,11 @@
         }
     }
 
-    private static ITelephony getITelephony() {
+    private ITelephony getITelephony() {
+        return mBinderCache.getBinder();
+    }
+
+    private static ITelephony getITelephonyInterface() {
         ITelephony binder = ITelephony.Stub.asInterface(
                 TelephonyFrameworkInitializer
                         .getTelephonyServiceManager()
diff --git a/telephony/java/android/telephony/ims/ImsRcsManager.java b/telephony/java/android/telephony/ims/ImsRcsManager.java
index 94407f1..0d8e5bc 100644
--- a/telephony/java/android/telephony/ims/ImsRcsManager.java
+++ b/telephony/java/android/telephony/ims/ImsRcsManager.java
@@ -26,15 +26,15 @@
 import android.os.Binder;
 import android.os.IBinder;
 import android.os.RemoteException;
+import android.os.ServiceSpecificException;
 import android.provider.Settings;
 import android.telephony.AccessNetworkConstants;
+import android.telephony.BinderCacheManager;
 import android.telephony.CarrierConfigManager;
-import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyFrameworkInitializer;
 import android.telephony.ims.aidl.IImsCapabilityCallback;
 import android.telephony.ims.aidl.IImsRcsController;
 import android.telephony.ims.feature.ImsFeature;
-import android.telephony.ims.feature.RcsFeature;
 import android.telephony.ims.stub.ImsRegistrationImplBase;
 import android.util.Log;
 
@@ -77,7 +77,7 @@
             "android.telephony.ims.action.SHOW_CAPABILITY_DISCOVERY_OPT_IN";
 
     /**
-     * Receives RCS availability status updates from the ImsService.
+     * Receives RCS Feature availability status updates from the ImsService.
      *
      * @see #isAvailable(int)
      * @see #registerRcsAvailabilityCallback(Executor, AvailabilityCallback)
@@ -101,8 +101,7 @@
 
                 long callingIdentity = Binder.clearCallingIdentity();
                 try {
-                    mExecutor.execute(() -> mLocalCallback.onAvailabilityChanged(
-                            new RcsFeature.RcsImsCapabilities(config)));
+                    mExecutor.execute(() -> mLocalCallback.onAvailabilityChanged(config));
                 } finally {
                     restoreCallingIdentity(callingIdentity);
                 }
@@ -137,7 +136,7 @@
          *
          * @param capabilities The new availability of the capabilities.
          */
-        public void onAvailabilityChanged(@NonNull RcsFeature.RcsImsCapabilities capabilities) {
+        public void onAvailabilityChanged(@RcsUceAdapter.RcsImsCapabilityFlag int capabilities) {
         }
 
         /**@hide*/
@@ -152,14 +151,17 @@
 
     private final int mSubId;
     private final Context mContext;
+    private final BinderCacheManager<IImsRcsController> mBinderCache;
 
     /**
      * Use {@link ImsManager#getImsRcsManager(int)} to create an instance of this class.
      * @hide
      */
-    public ImsRcsManager(Context context, int subId) {
+    public ImsRcsManager(Context context, int subId,
+            BinderCacheManager<IImsRcsController> binderCache) {
         mSubId = subId;
         mContext = context;
+        mBinderCache = binderCache;
     }
 
     /**
@@ -197,6 +199,8 @@
         c.setExecutor(executor);
         try {
             imsRcsController.registerImsRegistrationCallback(mSubId, c.getBinder());
+        } catch (ServiceSpecificException e) {
+            throw new ImsException(e.toString(), e.errorCode);
         } catch (RemoteException | IllegalStateException e) {
             throw new ImsException(e.getMessage(), ImsException.CODE_ERROR_SERVICE_UNAVAILABLE);
         }
@@ -332,6 +336,9 @@
         c.setExecutor(executor);
         try {
             imsRcsController.registerRcsAvailabilityCallback(mSubId, c.getBinder());
+
+        } catch (ServiceSpecificException e) {
+            throw new ImsException(e.toString(), e.errorCode);
         } catch (RemoteException e) {
             Log.e(TAG, "Error calling IImsRcsController#registerRcsAvailabilityCallback", e);
             throw new ImsException("Remote IMS Service is not available",
@@ -394,7 +401,7 @@
      * @hide
      */
     @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
-    public boolean isCapable(@RcsFeature.RcsImsCapabilities.RcsImsCapabilityFlag int capability,
+    public boolean isCapable(@RcsUceAdapter.RcsImsCapabilityFlag int capability,
             @ImsRegistrationImplBase.ImsRegistrationTech int radioTech) throws ImsException {
         IImsRcsController imsRcsController = getIImsRcsController();
         if (imsRcsController == null) {
@@ -428,7 +435,7 @@
      * @hide
      */
     @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
-    public boolean isAvailable(@RcsFeature.RcsImsCapabilities.RcsImsCapabilityFlag int capability)
+    public boolean isAvailable(@RcsUceAdapter.RcsImsCapabilityFlag int capability)
             throws ImsException {
         IImsRcsController imsRcsController = getIImsRcsController();
         if (imsRcsController == null) {
diff --git a/telephony/java/android/telephony/ims/ImsReasonInfo.java b/telephony/java/android/telephony/ims/ImsReasonInfo.java
index 30389a290..184477a 100644
--- a/telephony/java/android/telephony/ims/ImsReasonInfo.java
+++ b/telephony/java/android/telephony/ims/ImsReasonInfo.java
@@ -1353,7 +1353,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ImsReasonInfo(int code, int extraCode) {
         mCode = code;
         mExtraCode = extraCode;
diff --git a/telephony/java/android/telephony/ims/ImsService.java b/telephony/java/android/telephony/ims/ImsService.java
index da7311c..9ab5aeb 100644
--- a/telephony/java/android/telephony/ims/ImsService.java
+++ b/telephony/java/android/telephony/ims/ImsService.java
@@ -16,8 +16,10 @@
 
 package android.telephony.ims;
 
+import android.annotation.LongDef;
+import android.annotation.Nullable;
+import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.app.Service;
 import android.content.Intent;
 import android.os.IBinder;
@@ -29,18 +31,25 @@
 import android.telephony.ims.aidl.IImsRegistration;
 import android.telephony.ims.aidl.IImsServiceController;
 import android.telephony.ims.aidl.IImsServiceControllerListener;
+import android.telephony.ims.aidl.ISipTransport;
 import android.telephony.ims.feature.ImsFeature;
 import android.telephony.ims.feature.MmTelFeature;
 import android.telephony.ims.feature.RcsFeature;
 import android.telephony.ims.stub.ImsConfigImplBase;
 import android.telephony.ims.stub.ImsFeatureConfiguration;
 import android.telephony.ims.stub.ImsRegistrationImplBase;
+import android.telephony.ims.stub.SipTransportImplBase;
 import android.util.Log;
 import android.util.SparseArray;
 
 import com.android.ims.internal.IImsFeatureStatusCallback;
 import com.android.internal.annotations.VisibleForTesting;
 
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * Main ImsService implementation, which binds via the Telephony ImsResolver. Services that extend
  * ImsService must register the service in their AndroidManifest to be detected by the framework.
@@ -92,12 +101,66 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public class ImsService extends Service {
 
     private static final String LOG_TAG = "ImsService";
 
     /**
+     * This ImsService supports the capability to place emergency calls over MMTEL.
+     * <p>
+     * Note: This should never be set by {@link #getImsServiceCapabilities()}, as whether it is
+     * there or not depends on whether or not {@link ImsFeature#FEATURE_EMERGENCY_MMTEL} is defined
+     * for this ImsService. If it is set, it will be removed during sanitization before the final
+     * capabilities bitfield is sent back to the framework.
+     * @hide This is encoded into the {@link ImsFeature#FEATURE_EMERGENCY_MMTEL}, but we will be
+     * adding other capabilities in a central location, so track this capability here as well.
+     */
+    public static final long CAPABILITY_EMERGENCY_OVER_MMTEL = 1 << 0;
+
+    /**
+     * This ImsService supports the capability to create SIP delegates for other IMS applications
+     * to use to proxy SIP messaging traffic through it.
+     * <p>
+     * In order for the framework to report SipDelegate creation as being available for this
+     * ImsService implementation, this ImsService must report this capability flag in
+     * {@link #getImsServiceCapabilities()}, {@link #getSipTransport(int)} must not return null, and
+     * this ImsService MUST report the ability to create both {@link ImsFeature#FEATURE_MMTEL} and
+     * {@link ImsFeature#FEATURE_RCS} features.
+     */
+    public static final long CAPABILITY_SIP_DELEGATE_CREATION = 1 << 1;
+
+    /**
+     * Used for internal correctness checks of capabilities set by the ImsService implementation and
+     * tracks the index of the largest defined flag in the capabilities long.
+     * @hide
+     */
+    public static final long CAPABILITY_MAX_INDEX =
+            Long.numberOfTrailingZeros(CAPABILITY_SIP_DELEGATE_CREATION);
+
+    /**
+     * @hide
+     */
+    @LongDef(flag = true,
+            prefix = "CAPABILITY_",
+            value = {
+                    // CAPABILITY_EMERGENCY_OVER_MMTEL is not included here because it is managed by
+                    // whether or not ImsFeature.FEATURE_EMERGENCY_MMTEL feature is set and should
+                    // not be set by users of ImsService.
+                    CAPABILITY_SIP_DELEGATE_CREATION
+            })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface ImsServiceCapability {}
+
+    /**
+     * Used for logging purposes, see {@link #getCapabilitiesString(long)}
+     * @hide
+     */
+    private static final Map<Long, String> CAPABILITIES_LOG_MAP = new HashMap<Long, String>() {{
+            put(CAPABILITY_EMERGENCY_OVER_MMTEL, "EMERGENCY_OVER_MMTEL");
+            put(CAPABILITY_SIP_DELEGATE_CREATION, "SIP_DELEGATE_CREATION");
+        }};
+
+    /**
      * The intent that must be defined as an intent-filter in the AndroidManifest of the ImsService.
      * @hide
      */
@@ -169,6 +232,17 @@
         }
 
         @Override
+        public long getImsServiceCapabilities() {
+            long caps = ImsService.this.getImsServiceCapabilities();
+            long sanitizedCaps = sanitizeCapabilities(caps);
+            if (caps != sanitizedCaps) {
+                Log.w(LOG_TAG, "removing invalid bits from field: 0x"
+                        + Long.toHexString(caps ^ sanitizedCaps));
+            }
+            return sanitizedCaps;
+        }
+
+        @Override
         public void notifyImsServiceReadyForFeatureCreation() {
             ImsService.this.readyForFeatureCreation();
         }
@@ -186,6 +260,12 @@
         }
 
         @Override
+        public ISipTransport getSipTransport(int slotId) {
+            SipTransportImplBase s = ImsService.this.getSipTransport(slotId);
+            return s != null ? s.getBinder() : null;
+        }
+
+        @Override
         public void enableIms(int slotId) {
             ImsService.this.enableIms(slotId);
         }
@@ -339,6 +419,20 @@
     }
 
     /**
+     * The optional capabilities that this ImsService supports.
+     * <p>
+     * This should be a static configuration and should not change at runtime.
+     * @return The optional static capabilities of this ImsService implementation.
+     */
+    // ImsService follows a different convention, since it is a stub class. The on* methods are
+    // final and call back into the framework with a state update.
+    @SuppressLint("OnNameExpected")
+    public @ImsServiceCapability long getImsServiceCapabilities() {
+        // Stub implementation to be implemented by ImsService.
+        return 0L;
+    }
+
+    /**
      * The ImsService has been bound and is ready for ImsFeature creation based on the Features that
      * the ImsService has registered for with the framework, either in the manifest or via
      * {@link #querySupportedImsFeatures()}.
@@ -409,4 +503,63 @@
     public ImsRegistrationImplBase getRegistration(int slotId) {
         return new ImsRegistrationImplBase();
     }
-}
\ No newline at end of file
+
+    /**
+     * Return the {@link SipTransportImplBase} implementation associated with the provided slot.
+     * <p>
+     * This is an optional interface used for devices that must support IMS single registration and
+     * proxy SIP traffic to remote IMS applications. If this is not supported for this IMS service,
+     * this method should return {@code null}. If this feature is supported, then this method must
+     * never be {@code null} and the optional ImsService capability flag
+     * {@link #CAPABILITY_SIP_DELEGATE_CREATION} must be set in
+     * {@link #getImsServiceCapabilities()}. Otherwise the framework will assume this feature is not
+     * supported for this ImsService.
+     * @param slotId The slot that is associated with the SipTransport implementation.
+     * @return the SipTransport implementation for the specified slot.
+     */
+    // ImsService follows a different convention, since it is a stub class. The on* methods are
+    // final and call back into the framework with a state update.
+    @SuppressLint("OnNameExpected")
+    public @Nullable SipTransportImplBase getSipTransport(int slotId) {
+        // Stub implementation for ImsServices that do not support SipTransport.
+        return null;
+    }
+
+    private static long sanitizeCapabilities(@ImsServiceCapability long caps) {
+        long filter = 0xFFFFFFFFFFFFFFFFL;
+        // pad the "allowed" set with zeros
+        filter <<= CAPABILITY_MAX_INDEX + 1;
+        // remove values above the allowed set.
+        caps &= ~filter;
+        // CAPABILITY_EMERGENCY_OVER_MMTEL should also not be set here, will be set by telephony
+        // internally.
+        caps &= ~CAPABILITY_EMERGENCY_OVER_MMTEL;
+        return caps;
+    }
+
+    /**
+     * @return A string representation of the ImsService capabilities for logging.
+     * @hide
+     */
+    public static String getCapabilitiesString(@ImsServiceCapability long caps) {
+        StringBuffer result = new StringBuffer();
+        result.append("capabilities={ ");
+        // filter incrementally fills 0s from  left to right. This is used to keep filtering out
+        // more bits in the long until the remaining leftmost bits are all zero.
+        long filter = 0xFFFFFFFFFFFFFFFFL;
+        // position of iterator to potentially print capability.
+        long i = 0;
+        while ((caps & filter) != 0 && i <= 63) {
+            long bitToCheck = (1L << i);
+            if ((caps & bitToCheck) != 0) {
+                result.append(CAPABILITIES_LOG_MAP.getOrDefault(bitToCheck, bitToCheck + "?"));
+                result.append(" ");
+            }
+            // shift left by one and fill in another 1 on the leftmost bit.
+            filter <<= 1;
+            i++;
+        }
+        result.append("}");
+        return result.toString();
+    }
+}
diff --git a/telephony/java/android/telephony/ims/ImsSsData.java b/telephony/java/android/telephony/ims/ImsSsData.java
index 70bf0c5..868dea6a 100644
--- a/telephony/java/android/telephony/ims/ImsSsData.java
+++ b/telephony/java/android/telephony/ims/ImsSsData.java
@@ -19,7 +19,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -37,7 +36,6 @@
  * {@hide}
  */
 @SystemApi
-@TestApi
 public final class ImsSsData implements Parcelable {
 
     private static final String TAG = ImsSsData.class.getCanonicalName();
@@ -74,7 +72,7 @@
 
 
     /**@hide*/
-    @IntDef(flag = true, prefix = {"SS_"}, value = {
+    @IntDef(prefix = {"SS_"}, value = {
             SS_ACTIVATION,
             SS_DEACTIVATION,
             SS_INTERROGATION,
@@ -91,7 +89,7 @@
     public static final int SS_ERASURE = 4;
 
     /**@hide*/
-    @IntDef(flag = true, prefix = {"SS_"}, value = {
+    @IntDef(prefix = {"SS_"}, value = {
             SS_ALL_TELE_AND_BEARER_SERVICES,
             SS_ALL_TELESEVICES,
             SS_TELEPHONY,
@@ -192,7 +190,7 @@
     public static final int RESULT_SUCCESS = 0;
 
     /** @hide */
-    @IntDef(flag = true, prefix = { "SS_" }, value = {
+    @IntDef(prefix = { "SS_" }, value = {
             SS_CFU,
             SS_CF_BUSY,
             SS_CF_NO_REPLY,
diff --git a/telephony/java/android/telephony/ims/ImsSsInfo.java b/telephony/java/android/telephony/ims/ImsSsInfo.java
index 9cce95f..bc53b62 100644
--- a/telephony/java/android/telephony/ims/ImsSsInfo.java
+++ b/telephony/java/android/telephony/ims/ImsSsInfo.java
@@ -20,8 +20,8 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -38,7 +38,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class ImsSsInfo implements Parcelable {
 
     /**@hide*/
@@ -157,10 +156,10 @@
 
     // 0: disabled, 1: enabled
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int mStatus;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public String mIcbNum;
     /** @hide */
     public int mProvisionStatus = SERVICE_PROVISIONING_UNKNOWN;
@@ -168,7 +167,7 @@
     private int mClirOutgoingState = CLIR_OUTGOING_DEFAULT;
 
     /**@hide*/
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ImsSsInfo() {
     }
 
diff --git a/telephony/java/android/telephony/ims/ImsStreamMediaProfile.java b/telephony/java/android/telephony/ims/ImsStreamMediaProfile.java
index b70fd64..d924bae 100644
--- a/telephony/java/android/telephony/ims/ImsStreamMediaProfile.java
+++ b/telephony/java/android/telephony/ims/ImsStreamMediaProfile.java
@@ -17,9 +17,10 @@
 package android.telephony.ims;
 
 import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -30,7 +31,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class ImsStreamMediaProfile implements Parcelable {
     private static final String TAG = "ImsStreamMediaProfile";
 
@@ -86,16 +86,19 @@
 
     // Audio related information
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int mAudioQuality;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int mAudioDirection;
+    // Audio codec attributes
+    private AudioCodecAttributes mAudioCodecAttributes;
+
     // Video related information
     /** @hide */
     public int mVideoQuality;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int mVideoDirection;
     // Rtt related information
     /** @hide */
@@ -166,7 +169,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ImsStreamMediaProfile() {
         mAudioQuality = AUDIO_QUALITY_NONE;
         mAudioDirection = DIRECTION_SEND_RECEIVE;
@@ -192,6 +195,7 @@
     public void copyFrom(ImsStreamMediaProfile profile) {
         mAudioQuality = profile.mAudioQuality;
         mAudioDirection = profile.mAudioDirection;
+        mAudioCodecAttributes = profile.mAudioCodecAttributes;
         mVideoQuality = profile.mVideoQuality;
         mVideoDirection = profile.mVideoDirection;
         mRttMode = profile.mRttMode;
@@ -200,12 +204,13 @@
     @NonNull
     @Override
     public String toString() {
-        return "{ audioQuality=" + mAudioQuality +
-                ", audioDirection=" + mAudioDirection +
-                ", videoQuality=" + mVideoQuality +
-                ", videoDirection=" + mVideoDirection +
-                ", rttMode=" + mRttMode +
-                ", hasRttAudioSpeech=" + mIsReceivingRttAudio + " }";
+        return "{ audioQuality=" + mAudioQuality
+                + ", audioDirection=" + mAudioDirection
+                + ", audioCodecAttribute=" + mAudioCodecAttributes
+                + ", videoQuality=" + mVideoQuality
+                + ", videoDirection=" + mVideoDirection
+                + ", rttMode=" + mRttMode
+                + ", hasRttAudioSpeech=" + mIsReceivingRttAudio + " }";
     }
 
     @Override
@@ -217,6 +222,7 @@
     public void writeToParcel(Parcel out, int flags) {
         out.writeInt(mAudioQuality);
         out.writeInt(mAudioDirection);
+        out.writeTypedObject(mAudioCodecAttributes, flags);
         out.writeInt(mVideoQuality);
         out.writeInt(mVideoDirection);
         out.writeInt(mRttMode);
@@ -226,6 +232,7 @@
     private void readFromParcel(Parcel in) {
         mAudioQuality = in.readInt();
         mAudioDirection = in.readInt();
+        mAudioCodecAttributes = in.readTypedObject(AudioCodecAttributes.CREATOR);
         mVideoQuality = in.readInt();
         mVideoDirection = in.readInt();
         mRttMode = in.readInt();
@@ -276,6 +283,23 @@
         return mAudioDirection;
     }
 
+    /**
+     * Get the audio codec attributes {@link AudioCodecAttributes} which may be {@code null} if
+     * ImsService doesn't support this information.
+     * @return audio codec attributes
+     */
+    public @Nullable AudioCodecAttributes getAudioCodecAttributes() {
+        return mAudioCodecAttributes;
+    }
+
+    /**
+     * Set the audio codec attributes {@link AudioCodecAttributes} which includes bitrate and
+     * bandwidth information.
+     */
+    public void setAudioCodecAttributes(@NonNull AudioCodecAttributes audioCodecAttributes) {
+        mAudioCodecAttributes = audioCodecAttributes;
+    }
+
     public int getVideoQuality() {
         return mVideoQuality;
     }
diff --git a/telephony/java/android/telephony/ims/ImsSuppServiceNotification.java b/telephony/java/android/telephony/ims/ImsSuppServiceNotification.java
index f67f68e..1630368 100644
--- a/telephony/java/android/telephony/ims/ImsSuppServiceNotification.java
+++ b/telephony/java/android/telephony/ims/ImsSuppServiceNotification.java
@@ -19,7 +19,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -32,7 +31,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class ImsSuppServiceNotification implements Parcelable {
     private static final String TAG = "ImsSuppServiceNotification";
 
diff --git a/telephony/java/android/telephony/ims/ImsUtListener.java b/telephony/java/android/telephony/ims/ImsUtListener.java
index 460a032..baa0576 100644
--- a/telephony/java/android/telephony/ims/ImsUtListener.java
+++ b/telephony/java/android/telephony/ims/ImsUtListener.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Bundle;
 import android.os.RemoteException;
 import android.telephony.ims.stub.ImsUtImplBase;
@@ -34,7 +33,6 @@
 // DO NOT remove or change the existing APIs, only add new ones to this Base implementation or you
 // will break other implementations of ImsUt maintained by other ImsServices.
 @SystemApi
-@TestApi
 public class ImsUtListener {
 
     /**
diff --git a/telephony/java/android/telephony/ims/ImsVideoCallProvider.java b/telephony/java/android/telephony/ims/ImsVideoCallProvider.java
index 569c6d5..64bdcbb 100644
--- a/telephony/java/android/telephony/ims/ImsVideoCallProvider.java
+++ b/telephony/java/android/telephony/ims/ImsVideoCallProvider.java
@@ -17,14 +17,13 @@
 package android.telephony.ims;
 
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
 import android.os.RemoteException;
-import android.telecom.Connection;
 import android.telecom.VideoProfile;
 import android.telecom.VideoProfile.CameraCapabilities;
 import android.view.Surface;
@@ -37,7 +36,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public abstract class ImsVideoCallProvider {
     private static final int MSG_SET_CALLBACK = 1;
     private static final int MSG_SET_CAMERA = 2;
@@ -182,7 +180,7 @@
      * Returns binder object which can be used across IPC methods.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public final IImsVideoCallProvider getInterface() {
         return mBinder;
     }
diff --git a/telephony/java/android/telephony/ims/ProvisioningManager.java b/telephony/java/android/telephony/ims/ProvisioningManager.java
index 2a073a1..0fe76a04 100644
--- a/telephony/java/android/telephony/ims/ProvisioningManager.java
+++ b/telephony/java/android/telephony/ims/ProvisioningManager.java
@@ -23,7 +23,6 @@
 import android.annotation.RequiresPermission;
 import android.annotation.StringDef;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.annotation.WorkerThread;
 import android.os.Binder;
 import android.os.RemoteException;
@@ -59,7 +58,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public class ProvisioningManager {
 
     /**@hide*/
diff --git a/telephony/java/android/telephony/ims/RcsContactPresenceTuple.aidl b/telephony/java/android/telephony/ims/RcsContactPresenceTuple.aidl
new file mode 100644
index 0000000..a704702
--- /dev/null
+++ b/telephony/java/android/telephony/ims/RcsContactPresenceTuple.aidl
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package android.telephony.ims;
+
+parcelable RcsContactPresenceTuple;
diff --git a/telephony/java/android/telephony/ims/RcsContactPresenceTuple.java b/telephony/java/android/telephony/ims/RcsContactPresenceTuple.java
new file mode 100644
index 0000000..b0aaa92
--- /dev/null
+++ b/telephony/java/android/telephony/ims/RcsContactPresenceTuple.java
@@ -0,0 +1,360 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.StringDef;
+import android.net.Uri;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Represents a PIDF tuple element that is part of the presence element returned from the carrier
+ * network during a SUBSCRIBE request. See RFC3863 for more information.
+ * @hide
+ */
+public class RcsContactPresenceTuple implements Parcelable {
+
+    /** The service id of the MMTEL */
+    public static final String SERVICE_ID_MMTEL = "org.3gpp.urn:urn-7:3gpp-service.ims.icsi.mmtel";
+
+    /** The service capabilities is available. */
+    public static final String TUPLE_BASIC_STATUS_OPEN = "open";
+
+    /** The service capabilities is unavailable. */
+    public static final String TUPLE_BASIC_STATUS_CLOSED = "closed";
+
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @StringDef(prefix = "TUPLE_BASIC_STATUS_", value = {
+        TUPLE_BASIC_STATUS_OPEN,
+        TUPLE_BASIC_STATUS_CLOSED
+    })
+    public @interface BasicStatus {}
+
+    /**
+     * An optional addition to the PIDF Presence Tuple containing service capabilities, which is
+     * defined in the servcaps element. See RFC5196, section 3.2.1.
+     */
+    public static class ServiceCapabilities implements Parcelable {
+
+        /** The service can simultaneously send and receive data. */
+        public static final String DUPLEX_MODE_FULL = "full";
+
+        /** The service can alternate between sending and receiving data.*/
+        public static final String DUPLEX_MODE_HALF = "half";
+
+        /** The service can only receive data. */
+        public static final String DUPLEX_MODE_RECEIVE_ONLY = "receive-only";
+
+        /** The service can only send data. */
+        public static final String DUPLEX_MODE_SEND_ONLY = "send-only";
+
+        /** @hide */
+        @Retention(RetentionPolicy.SOURCE)
+        @StringDef(prefix = "DUPLEX_MODE_", value = {
+            DUPLEX_MODE_FULL,
+            DUPLEX_MODE_HALF,
+            DUPLEX_MODE_RECEIVE_ONLY,
+            DUPLEX_MODE_SEND_ONLY
+        })
+        public @interface DuplexMode {}
+
+        /**
+         * Builder to help construct {@link ServiceCapabilities} instances.
+         */
+        public static class Builder {
+
+            private ServiceCapabilities mCapabilities;
+
+            /**
+             * Create the ServiceCapabilities builder, which can be used to set service capabilities
+             * as well as custom capability extensions.
+             * @param isAudioCapable Whether the audio is capable or not.
+             * @param isVideoCapable Whether the video is capable or not.
+             */
+            public Builder(boolean isAudioCapable, boolean isVideoCapable) {
+                mCapabilities = new ServiceCapabilities(isAudioCapable, isVideoCapable);
+            }
+
+            /**
+             * Add the supported duplex mode.
+             * @param mode The supported duplex mode
+             */
+            public Builder addSupportedDuplexMode(@NonNull @DuplexMode String mode) {
+                mCapabilities.mSupportedDuplexModeList.add(mode);
+                return this;
+            }
+
+            /**
+             * Add the unsupported duplex mode.
+             * @param mode The unsupported duplex mode
+             */
+            public Builder addUnsupportedDuplexMode(@NonNull @DuplexMode String mode) {
+                mCapabilities.mUnsupportedDuplexModeList.add(mode);
+                return this;
+            }
+
+            /**
+             * @return the ServiceCapabilities instance.
+             */
+            public ServiceCapabilities build() {
+                return mCapabilities;
+            }
+        }
+
+        private final boolean mIsAudioCapable;
+        private final boolean mIsVideoCapable;
+        private final @DuplexMode List<String> mSupportedDuplexModeList = new ArrayList<>();
+        private final @DuplexMode List<String> mUnsupportedDuplexModeList = new ArrayList<>();
+
+        /**
+         * Use {@link Builder} to build an instance of this interface.
+         * @param isAudioCapable Whether the audio is capable.
+         * @param isVideoCapable Whether the video is capable.
+         */
+        ServiceCapabilities(boolean isAudioCapable, boolean isVideoCapable) {
+            mIsAudioCapable = isAudioCapable;
+            mIsVideoCapable = isVideoCapable;
+        }
+
+        private ServiceCapabilities(Parcel in) {
+            mIsAudioCapable = in.readBoolean();
+            mIsVideoCapable = in.readBoolean();
+            in.readStringList(mSupportedDuplexModeList);
+            in.readStringList(mUnsupportedDuplexModeList);
+        }
+        @Override
+        public void writeToParcel(@NonNull Parcel out, int flags) {
+            out.writeBoolean(mIsAudioCapable);
+            out.writeBoolean(mIsVideoCapable);
+            out.writeStringList(mSupportedDuplexModeList);
+            out.writeStringList(mUnsupportedDuplexModeList);
+        }
+
+        @Override
+        public int describeContents() {
+            return 0;
+        }
+
+        public static final @NonNull Creator<ServiceCapabilities> CREATOR =
+                new Creator<ServiceCapabilities>() {
+                    @Override
+                    public ServiceCapabilities createFromParcel(Parcel in) {
+                        return new ServiceCapabilities(in);
+                    }
+
+                    @Override
+                    public ServiceCapabilities[] newArray(int size) {
+                        return new ServiceCapabilities[size];
+                    }
+                };
+
+        /**
+         * Query the audio capable.
+         * @return true if the audio is capable, false otherwise.
+         */
+        public boolean isAudioCapable() {
+            return mIsAudioCapable;
+        }
+
+        /**
+         * Query the video capable.
+         * @return true if the video is capable, false otherwise.
+         */
+        public boolean isVideoCapable() {
+            return mIsVideoCapable;
+        }
+
+        /**
+         * Get the supported duplex mode list.
+         * @return The list of supported duplex mode
+         */
+        public @NonNull @DuplexMode List<String> getSupportedDuplexModes() {
+            return Collections.unmodifiableList(mSupportedDuplexModeList);
+        }
+
+        /**
+         * Get the unsupported duplex mode list.
+         * @return The list of unsupported duplex mode
+         */
+        public @NonNull @DuplexMode List<String> getUnsupportedDuplexModes() {
+            return Collections.unmodifiableList(mUnsupportedDuplexModeList);
+        }
+    }
+
+    /**
+     * Builder to help construct {@link RcsContactPresenceTuple} instances.
+     */
+    public static class Builder {
+
+        private RcsContactPresenceTuple mPresenceTuple;
+
+        /**
+         * Builds a RcsContactPresenceTuple instance.
+         * @param serviceId The OMA Presence service-id associated with this capability. See the
+         * OMA Presence SIMPLE specification v1.1, section 10.5.1.
+         * @param serviceVersion The OMA Presence version associated with the service capability.
+         * See the OMA Presence SIMPLE specification v1.1, section 10.5.1.
+         */
+        public Builder(@NonNull @BasicStatus String status, @NonNull String serviceId,
+                @NonNull String serviceVersion) {
+            mPresenceTuple = new RcsContactPresenceTuple(status, serviceId, serviceVersion);
+        }
+
+        /**
+         * The optional SIP Contact URI associated with the PIDF tuple element.
+         */
+        public Builder addContactUri(@NonNull Uri contactUri) {
+            mPresenceTuple.mContactUri = contactUri;
+            return this;
+        }
+
+        /**
+         * The optional timestamp indicating the data and time of the status change of this tuple.
+         * See RFC3863, section 4.1.7 for more information on the expected format.
+         */
+        public Builder addTimeStamp(@NonNull String timestamp) {
+            mPresenceTuple.mTimestamp = timestamp;
+            return this;
+        }
+
+        /**
+         * An optional parameter containing the description element of the service-description. See
+         * OMA Presence SIMPLE specification v1.1
+         */
+        public Builder addDescription(@NonNull String description) {
+            mPresenceTuple.mServiceDescription = description;
+            return this;
+        }
+
+        /**
+         * An optional parameter containing the service capabilities of the presence tuple if they
+         * are present in the servcaps element.
+         */
+        public Builder addServiceCapabilities(@NonNull ServiceCapabilities caps) {
+            mPresenceTuple.mServiceCapabilities = caps;
+            return this;
+        }
+
+        /**
+         * @return the constructed instance.
+         */
+        public RcsContactPresenceTuple build() {
+            return mPresenceTuple;
+        }
+    }
+
+    private Uri mContactUri;
+    private String mTimestamp;
+    private @BasicStatus String mStatus;
+
+    // The service information in the service-description element.
+    private String mServiceId;
+    private String mServiceVersion;
+    private String mServiceDescription;
+
+    private ServiceCapabilities mServiceCapabilities;
+
+    private RcsContactPresenceTuple(@NonNull @BasicStatus String status, @NonNull String serviceId,
+            @NonNull String serviceVersion) {
+        mStatus = status;
+        mServiceId = serviceId;
+        mServiceVersion = serviceVersion;
+    }
+
+    private RcsContactPresenceTuple(Parcel in) {
+        mContactUri = in.readParcelable(Uri.class.getClassLoader());
+        mTimestamp = in.readString();
+        mStatus = in.readString();
+        mServiceId = in.readString();
+        mServiceVersion = in.readString();
+        mServiceDescription = in.readString();
+        mServiceCapabilities = in.readParcelable(ServiceCapabilities.class.getClassLoader());
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel out, int flags) {
+        out.writeParcelable(mContactUri, flags);
+        out.writeString(mTimestamp);
+        out.writeString(mStatus);
+        out.writeString(mServiceId);
+        out.writeString(mServiceVersion);
+        out.writeString(mServiceDescription);
+        out.writeParcelable(mServiceCapabilities, flags);
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    public static final @NonNull Creator<RcsContactPresenceTuple> CREATOR =
+            new Creator<RcsContactPresenceTuple>() {
+                @Override
+                public RcsContactPresenceTuple createFromParcel(Parcel in) {
+                    return new RcsContactPresenceTuple(in);
+                }
+
+                @Override
+                public RcsContactPresenceTuple[] newArray(int size) {
+                    return new RcsContactPresenceTuple[size];
+                }
+            };
+
+    /** @return the status of the tuple element. */
+    public @NonNull @BasicStatus String getStatus() {
+        return mStatus;
+    }
+
+    /** @return the service-id element of the service-description */
+    public @NonNull String getServiceId() {
+        return mServiceId;
+    }
+
+    /** @return the version element of the service-description */
+    public @NonNull String getServiceVersion() {
+        return mServiceVersion;
+    }
+
+    /** @return the SIP URI contained in the contact element of the tuple if it exists. */
+    public @Nullable Uri getContactUri() {
+        return mContactUri;
+    }
+
+    /** @return the timestamp element contained in the tuple if it exists */
+    public @Nullable String getTimestamp() {
+        return mTimestamp;
+    }
+
+    /** @return the description element contained in the service-description if it exists */
+    public @Nullable String getServiceDescription() {
+        return mServiceDescription;
+    }
+
+    /** @return the {@link ServiceCapabilities} of the tuple if it exists. */
+    public @Nullable ServiceCapabilities getServiceCapabilities() {
+        return mServiceCapabilities;
+    }
+}
diff --git a/telephony/java/android/telephony/ims/RcsContactTerminatedReason.aidl b/telephony/java/android/telephony/ims/RcsContactTerminatedReason.aidl
new file mode 100644
index 0000000..cd1ee84
--- /dev/null
+++ b/telephony/java/android/telephony/ims/RcsContactTerminatedReason.aidl
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package android.telephony.ims;
+
+parcelable RcsContactTerminatedReason;
diff --git a/telephony/java/android/telephony/ims/RcsContactTerminatedReason.java b/telephony/java/android/telephony/ims/RcsContactTerminatedReason.java
new file mode 100644
index 0000000..ee02564
--- /dev/null
+++ b/telephony/java/android/telephony/ims/RcsContactTerminatedReason.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims;
+
+import android.annotation.NonNull;
+import android.net.Uri;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * When the resource for the presence subscribe event has been terminated, the method
+ * SubscribeResponseCallback#onResourceTerminated wil be called with a list of
+ * RcsContactTerminatedReason.
+ * @hide
+ */
+public final class RcsContactTerminatedReason implements Parcelable {
+    private final Uri mContactUri;
+    private final String mReason;
+
+    public RcsContactTerminatedReason(Uri contact, String reason) {
+        mContactUri = contact;
+        mReason = reason;
+    }
+
+    private RcsContactTerminatedReason(Parcel in) {
+        mContactUri = in.readParcelable(Uri.class.getClassLoader());
+        mReason = in.readString();
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel out, int flags) {
+        out.writeParcelable(mContactUri, flags);
+        out.writeString(mReason);
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    public static final @NonNull Creator<RcsContactTerminatedReason> CREATOR =
+            new Creator<RcsContactTerminatedReason>() {
+                @Override
+                public RcsContactTerminatedReason createFromParcel(Parcel in) {
+                    return new RcsContactTerminatedReason(in);
+                }
+
+                @Override
+                public RcsContactTerminatedReason[] newArray(int size) {
+                    return new RcsContactTerminatedReason[size];
+                }
+            };
+
+    public Uri getContactUri() {
+        return mContactUri;
+    }
+
+    public String getReason() {
+        return mReason;
+    }
+}
diff --git a/telephony/java/android/telephony/ims/RcsContactUceCapability.java b/telephony/java/android/telephony/ims/RcsContactUceCapability.java
index dc36edf..5848be8 100644
--- a/telephony/java/android/telephony/ims/RcsContactUceCapability.java
+++ b/telephony/java/android/telephony/ims/RcsContactUceCapability.java
@@ -16,7 +16,7 @@
 
 package android.telephony.ims;
 
-import android.annotation.LongDef;
+import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.net.Uri;
@@ -27,9 +27,7 @@
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 /**
  * Contains the User Capability Exchange capabilities corresponding to a contact's URI.
@@ -37,114 +35,87 @@
  */
 public final class RcsContactUceCapability implements Parcelable {
 
-    /** Supports 1-to-1 chat */
-    public static final int CAPABILITY_CHAT_STANDALONE = (1 << 0);
-    /** Supports group chat */
-    public static final int CAPABILITY_CHAT_SESSION = (1 << 1);
-    /** Supports full store and forward group chat information. */
-    public static final int CAPABILITY_CHAT_SESSION_STORE_FORWARD = (1 << 2);
-    /**
-     * Supports file transfer via Message Session Relay Protocol (MSRP) without Store and Forward.
-     */
-    public static final int CAPABILITY_FILE_TRANSFER = (1 << 3);
-    /** Supports File Transfer Thumbnail */
-    public static final int CAPABILITY_FILE_TRANSFER_THUMBNAIL = (1 << 4);
-    /** Supports File Transfer with Store and Forward */
-    public static final int CAPABILITY_FILE_TRANSFER_STORE_FORWARD = (1 << 5);
-    /** Supports File Transfer via HTTP */
-    public static final int CAPABILITY_FILE_TRANSFER_HTTP = (1 << 6);
-    /** Supports file transfer via SMS */
-    public static final int CAPABILITY_FILE_TRANSFER_SMS = (1 << 7);
-    /** Supports image sharing */
-    public static final int CAPABILITY_IMAGE_SHARE = (1 << 8);
-    /** Supports video sharing during a circuit-switch call (IR.74)*/
-    public static final int CAPABILITY_VIDEO_SHARE_DURING_CS_CALL = (1 << 9);
-    /** Supports video share outside of voice call (IR.84) */
-    public static final int CAPABILITY_VIDEO_SHARE = (1 << 10);
-    /** Supports social presence information */
-    public static final int CAPABILITY_SOCIAL_PRESENCE = (1 << 11);
-    /** Supports capability discovery via presence */
-    public static final int CAPABILITY_DISCOVERY_VIA_PRESENCE = (1 << 12);
-    /** Supports IP Voice calling over LTE or IWLAN (IR.92/IR.51) */
-    public static final int CAPABILITY_IP_VOICE_CALL = (1 << 13);
-    /** Supports IP video calling (IR.94) */
-    public static final int CAPABILITY_IP_VIDEO_CALL = (1 << 14);
-    /** Supports Geolocation PUSH during 1-to-1 or multiparty chat */
-    public static final int CAPABILITY_GEOLOCATION_PUSH = (1 << 15);
-    /** Supports Geolocation PUSH via SMS for fallback.  */
-    public static final int CAPABILITY_GEOLOCATION_PUSH_SMS = (1 << 16);
-    /** Supports Geolocation pull. */
-    public static final int CAPABILITY_GEOLOCATION_PULL = (1 << 17);
-    /** Supports Geolocation pull using file transfer support. */
-    public static final int CAPABILITY_GEOLOCATION_PULL_FILE_TRANSFER = (1 << 18);
-    /** Supports RCS voice calling */
-    public static final int CAPABILITY_RCS_VOICE_CALL = (1 << 19);
-    /** Supports RCS video calling */
-    public static final int CAPABILITY_RCS_VIDEO_CALL = (1 << 20);
-    /** Supports RCS video calling, where video media can not be dropped. */
-    public static final int CAPABILITY_RCS_VIDEO_ONLY_CALL = (1 << 21);
-    /** Supports call composer, where outgoing calls can be enriched with pre-call content.*/
-    public static final int CAPABILITY_CALL_COMPOSER = (1 << 22);
-    /** Supports post call information that is included in the call if the call is missed.*/
-    public static final int CAPABILITY_POST_CALL = (1 << 23);
-    /** Supports sharing a map where the user can draw, share markers, and share their position. */
-    public static final int CAPABILITY_SHARED_MAP = (1 << 24);
-    /** Supports sharing a canvas, where users can draw, add images, and change background colors.*/
-    public static final int CAPABILITY_SHARED_SKETCH = (1 << 25);
-    /** Supports communication with Chatbots. */
-    public static final int CAPABILITY_CHAT_BOT = (1 << 26);
-    /** Supports Chatbot roles. */
-    public static final int CAPABILITY_CHAT_BOT_ROLE = (1 << 27);
-    /** Supports the unidirectional plug-ins framework. */
-    public static final int CAPABILITY_PLUG_IN = (1 << 28);
-    /** Supports standalone Chatbot communication. */
-    public static final int CAPABILITY_STANDALONE_CHAT_BOT = (1 << 29);
-    /** Supports MMTEL based call composer. */
-    public static final int CAPABILITY_MMTEL_CALL_COMPOSER = (1 << 30);
+    /** Contains presence information associated with the contact */
+    public static final int CAPABILITY_MECHANISM_PRESENCE = 1;
 
+    /** Contains OPTIONS information associated with the contact */
+    public static final int CAPABILITY_MECHANISM_OPTIONS = 2;
 
-
-    /** @hide*/
+    /** @hide */
     @Retention(RetentionPolicy.SOURCE)
-    @LongDef(prefix = "CAPABILITY_", flag = true, value = {
-            CAPABILITY_CHAT_STANDALONE,
-            CAPABILITY_CHAT_SESSION,
-            CAPABILITY_CHAT_SESSION_STORE_FORWARD,
-            CAPABILITY_FILE_TRANSFER,
-            CAPABILITY_FILE_TRANSFER_THUMBNAIL,
-            CAPABILITY_FILE_TRANSFER_STORE_FORWARD,
-            CAPABILITY_FILE_TRANSFER_HTTP,
-            CAPABILITY_FILE_TRANSFER_SMS,
-            CAPABILITY_IMAGE_SHARE,
-            CAPABILITY_VIDEO_SHARE_DURING_CS_CALL,
-            CAPABILITY_VIDEO_SHARE,
-            CAPABILITY_SOCIAL_PRESENCE,
-            CAPABILITY_DISCOVERY_VIA_PRESENCE,
-            CAPABILITY_IP_VOICE_CALL,
-            CAPABILITY_IP_VIDEO_CALL,
-            CAPABILITY_GEOLOCATION_PUSH,
-            CAPABILITY_GEOLOCATION_PUSH_SMS,
-            CAPABILITY_GEOLOCATION_PULL,
-            CAPABILITY_GEOLOCATION_PULL_FILE_TRANSFER,
-            CAPABILITY_RCS_VOICE_CALL,
-            CAPABILITY_RCS_VIDEO_CALL,
-            CAPABILITY_RCS_VIDEO_ONLY_CALL,
-            CAPABILITY_CALL_COMPOSER,
-            CAPABILITY_POST_CALL,
-            CAPABILITY_SHARED_MAP,
-            CAPABILITY_SHARED_SKETCH,
-            CAPABILITY_CHAT_BOT,
-            CAPABILITY_CHAT_BOT_ROLE,
-            CAPABILITY_PLUG_IN,
-            CAPABILITY_STANDALONE_CHAT_BOT,
-            CAPABILITY_MMTEL_CALL_COMPOSER
+    @IntDef(prefix = "CAPABILITY_MECHANISM_", value = {
+        CAPABILITY_MECHANISM_PRESENCE,
+        CAPABILITY_MECHANISM_OPTIONS
     })
-    public @interface CapabilityFlag {}
+    public @interface CapabilityMechanism {}
 
     /**
-     * Builder to help construct {@link RcsContactUceCapability} instances.
+     * The capabilities of this contact were requested recently enough to still be considered in
+     * the availability window.
      */
-    public static class Builder {
+    public static final int SOURCE_TYPE_NETWORK = 0;
+
+    /**
+     * The capabilities of this contact were retrieved from the cached information in the Enhanced
+     * Address Book.
+     */
+    public static final int SOURCE_TYPE_CACHED = 1;
+
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = "SOURCE_TYPE_", value = {
+        SOURCE_TYPE_NETWORK,
+        SOURCE_TYPE_CACHED
+    })
+    public @interface SourceType {}
+
+    /**
+     * The requested contact was found to be offline when queried. This is only applicable to
+     * contact capabilities that were queried via OPTIONS requests and the network returned a
+     * 408/480 response.
+     */
+    public static final int REQUEST_RESULT_NOT_ONLINE = 0;
+
+    /**
+     * Capability information for the requested contact was not found. The contact should not be
+     * considered an RCS user.
+     */
+    public static final int REQUEST_RESULT_NOT_FOUND = 1;
+
+    /**
+     * Capability information for the requested contact was found successfully.
+     */
+    public static final int REQUEST_RESULT_FOUND = 2;
+
+    /**
+     * Capability information for the requested contact has expired and can not be refreshed due to
+     * a temporary network error. This is a temporary error and the capabilities of the contact
+     * should be queried again at a later time.
+     */
+    public static final int REQUEST_RESULT_UNKNOWN = 3;
+
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = "REQUEST_RESULT_", value = {
+        REQUEST_RESULT_NOT_ONLINE,
+        REQUEST_RESULT_NOT_FOUND,
+        REQUEST_RESULT_FOUND,
+        REQUEST_RESULT_UNKNOWN
+    })
+    public @interface RequestResult {}
+
+    /**
+     * The base class of {@link OptionsBuilder} and {@link PresenceBuilder}
+     */
+    public static abstract class RcsUcsCapabilityBuilder {
+        public abstract @NonNull RcsContactUceCapability build();
+    }
+
+    /**
+     * Builder to help construct {@link RcsContactUceCapability} instances when capabilities were
+     * queried through SIP OPTIONS.
+     */
+    public static class OptionsBuilder extends RcsUcsCapabilityBuilder {
 
         private final RcsContactUceCapability mCapabilities;
 
@@ -153,112 +124,133 @@
          * capability extensions.
          * @param contact The contact URI that the capabilities are attached to.
          */
-        public Builder(@NonNull Uri contact) {
-            mCapabilities = new RcsContactUceCapability(contact);
+        public OptionsBuilder(@NonNull Uri contact) {
+            mCapabilities = new RcsContactUceCapability(contact, CAPABILITY_MECHANISM_OPTIONS,
+                    SOURCE_TYPE_NETWORK);
         }
 
         /**
-         * Add a UCE capability bit-field as well as the associated URI that the framework should
-         * use for those services. This is mainly used for capabilities that may use a URI separate
-         * from the contact's URI, for example the URI to use for VT calls.
-         * @param type The capability to map to a service URI that is different from the contact's
-         *         URI.
+         * Set the result of the capabilities request.
+         * @param requestResult the request result
+         * @return this OptionBuilder
          */
-        public @NonNull Builder add(@CapabilityFlag long type, @NonNull Uri serviceUri) {
-            mCapabilities.mCapabilities |= type;
-            // Put each of these capabilities into the map separately.
-            for (long shift = 0; shift < Integer.SIZE; shift++) {
-                long cap = type & (1 << shift);
-                if (cap != 0) {
-                    mCapabilities.mServiceMap.put(cap, serviceUri);
-                    // remove that capability from the field.
-                    type &= ~cap;
-                }
-                if (type == 0) {
-                    // no need to keep going, end early.
-                    break;
-                }
-            }
+        public @NonNull OptionsBuilder setRequestResult(@RequestResult int requestResult) {
+            mCapabilities.mRequestResult = requestResult;
             return this;
         }
 
         /**
-         * Add a UCE capability flag that this contact supports.
-         * @param type the capability that the contact supports.
+         * Add the feature tag into the capabilities instance.
+         * @param tag the supported feature tag
+         * @return this OptionBuilder
          */
-        public @NonNull Builder add(@CapabilityFlag long type) {
-            mCapabilities.mCapabilities |= type;
+        public @NonNull OptionsBuilder addFeatureTag(String tag) {
+            mCapabilities.mFeatureTags.add(tag);
             return this;
         }
 
         /**
-         * Add a carrier specific service tag.
-         * @param extension A string containing a carrier specific service tag that is an extension
-         *         of the {@link CapabilityFlag}s that are defined here.
+         * Add the list of feature tag into the capabilities instance.
+         * @param tags the list of the supported feature tags
+         * @return this OptionBuilder
          */
-        public @NonNull Builder add(@NonNull String extension) {
-            mCapabilities.mExtensionTags.add(extension);
+        public @NonNull OptionsBuilder addFeatureTags(List<String> tags) {
+            mCapabilities.mFeatureTags.addAll(tags);
             return this;
         }
 
         /**
          * @return the constructed instance.
          */
+        @Override
+        public @NonNull RcsContactUceCapability build() {
+            return mCapabilities;
+        }
+    }
+
+    /**
+     * Builder to help construct {@link RcsContactUceCapability} instances when capabilities were
+     * queried through a presence server.
+     */
+    public static class PresenceBuilder extends RcsUcsCapabilityBuilder {
+
+        private final RcsContactUceCapability mCapabilities;
+
+        /**
+         * Create the builder, which can be used to set UCE capabilities as well as custom
+         * capability extensions.
+         * @param contact The contact URI that the capabilities are attached to.
+         * @param sourceType The type where the capabilities of this contact were retrieved from.
+         * @param requestResult the request result
+         */
+        public PresenceBuilder(@NonNull Uri contact, @SourceType int sourceType,
+                @RequestResult int requestResult) {
+            mCapabilities = new RcsContactUceCapability(contact, CAPABILITY_MECHANISM_PRESENCE,
+                sourceType);
+            mCapabilities.mRequestResult = requestResult;
+        }
+
+        /**
+         * Add the {@link RcsContactPresenceTuple} into the capabilities instance.
+         * @param tuple The {@link RcsContactPresenceTuple} to be added into.
+         * @return this PresenceBuilder
+         */
+        public @NonNull PresenceBuilder addCapabilityTuple(RcsContactPresenceTuple tuple) {
+            mCapabilities.mPresenceTuples.add(tuple);
+            return this;
+        }
+
+        /**
+         * Add the list of {@link RcsContactPresenceTuple} into the capabilities instance.
+         * @param tuples The list of the {@link RcsContactPresenceTuple} to be added into.
+         * @return this PresenceBuilder
+         */
+        public @NonNull PresenceBuilder addCapabilityTuples(List<RcsContactPresenceTuple> tuples) {
+            mCapabilities.mPresenceTuples.addAll(tuples);
+            return this;
+        }
+
+        /**
+         * @return the RcsContactUceCapability instance.
+         */
+        @Override
         public @NonNull RcsContactUceCapability build() {
             return mCapabilities;
         }
     }
 
     private final Uri mContactUri;
-    private long mCapabilities;
-    private List<String> mExtensionTags = new ArrayList<>();
-    private Map<Long, Uri> mServiceMap = new HashMap<>();
+    private @SourceType int mSourceType;
+    private @CapabilityMechanism int mCapabilityMechanism;
+    private @RequestResult int mRequestResult;
 
-    /**
-     * Use {@link Builder} to build an instance of this interface.
-     * @param contact The URI associated with this capability information.
-     * @hide
-     */
-    RcsContactUceCapability(@NonNull Uri contact) {
-        mContactUri = contact;
+    private final List<String> mFeatureTags = new ArrayList<>();
+    private final List<RcsContactPresenceTuple> mPresenceTuples = new ArrayList<>();
+
+    private RcsContactUceCapability(@NonNull Uri contactUri, @CapabilityMechanism int mechanism,
+            @SourceType int sourceType) {
+        mContactUri = contactUri;
+        mCapabilityMechanism = mechanism;
+        mSourceType = sourceType;
     }
 
     private RcsContactUceCapability(Parcel in) {
         mContactUri = in.readParcelable(Uri.class.getClassLoader());
-        mCapabilities = in.readLong();
-        in.readStringList(mExtensionTags);
-        // read mServiceMap as key,value pair
-        int mapSize = in.readInt();
-        for (int i = 0; i < mapSize; i++) {
-            mServiceMap.put(in.readLong(), in.readParcelable(Uri.class.getClassLoader()));
-        }
+        mCapabilityMechanism = in.readInt();
+        mSourceType = in.readInt();
+        mRequestResult = in.readInt();
+        in.readStringList(mFeatureTags);
+        in.readParcelableList(mPresenceTuples, RcsContactPresenceTuple.class.getClassLoader());
     }
 
-    public static final @NonNull Creator<RcsContactUceCapability> CREATOR =
-            new Creator<RcsContactUceCapability>() {
-        @Override
-        public RcsContactUceCapability createFromParcel(Parcel in) {
-            return new RcsContactUceCapability(in);
-        }
-
-        @Override
-        public RcsContactUceCapability[] newArray(int size) {
-            return new RcsContactUceCapability[size];
-        }
-    };
-
     @Override
     public void writeToParcel(@NonNull Parcel out, int flags) {
-        out.writeParcelable(mContactUri, 0);
-        out.writeLong(mCapabilities);
-        out.writeStringList(mExtensionTags);
-        // write mServiceMap as key,value pairs
-        int mapSize = mServiceMap.keySet().size();
-        out.writeInt(mapSize);
-        for (long key : mServiceMap.keySet()) {
-            out.writeLong(key);
-            out.writeParcelable(mServiceMap.get(key), 0);
-        }
+        out.writeParcelable(mContactUri, flags);
+        out.writeInt(mCapabilityMechanism);
+        out.writeInt(mSourceType);
+        out.writeInt(mRequestResult);
+        out.writeStringList(mFeatureTags);
+        out.writeParcelableList(mPresenceTuples, flags);
     }
 
     @Override
@@ -266,49 +258,87 @@
         return 0;
     }
 
+    public static final @NonNull Creator<RcsContactUceCapability> CREATOR =
+            new Creator<RcsContactUceCapability>() {
+                @Override
+                public RcsContactUceCapability createFromParcel(Parcel in) {
+                    return new RcsContactUceCapability(in);
+                }
+
+                @Override
+                public RcsContactUceCapability[] newArray(int size) {
+                    return new RcsContactUceCapability[size];
+                }
+            };
+
     /**
-     * Query for a capability
-     * @param type The capability flag to query.
-     * @return true if the capability flag specified is set, false otherwise.
+     * @return The mechanism used to get the capabilities.
      */
-    public boolean isCapable(@CapabilityFlag long type) {
-        return (mCapabilities & type) > 0;
+    public @CapabilityMechanism int getCapabilityMechanism() {
+        return mCapabilityMechanism;
     }
 
     /**
-     * @return true if the extension service tag is set, false otherwise.
-     */
-    public boolean isCapable(@NonNull String extensionTag) {
-        return mExtensionTags.contains(extensionTag);
-    }
-
-    /**
-     * @return An immutable list containing all of the extension tags that have been set as capable.
-     * @throws UnsupportedOperationException if this list is modified.
-     */
-    public @NonNull List<String> getCapableExtensionTags() {
-        return Collections.unmodifiableList(mExtensionTags);
-    }
-
-    /**
-     * Retrieves the {@link Uri} associated with the capability being queried.
+     * @return The feature tags present in the OPTIONS response from the network.
      * <p>
-     * This will typically be the contact {@link Uri} available via {@link #getContactUri()} unless
-     * a different service {@link Uri} was associated with this capability using
-     * {@link Builder#add(long, Uri)}.
-     *
-     * @return a String containing the {@link Uri} associated with the service tag or
-     * {@code null} if this capability is not set as capable.
-     * @see #isCapable(long)
+     * Note: this is only populated if {@link #getCapabilityMechanism} is
+     * {@link CAPABILITY_MECHANISM_OPTIONS}
      */
-    public @Nullable Uri getServiceUri(@CapabilityFlag long type) {
-        Uri result = mServiceMap.getOrDefault(type, null);
-        // If the capability is capable, but does not have a service URI associated, use the default
-        // contact URI.
-        if (result == null) {
-            return isCapable(type) ? getContactUri() : null;
+    public @NonNull List<String> getOptionsFeatureTags() {
+        if (mCapabilityMechanism != CAPABILITY_MECHANISM_OPTIONS) {
+            return Collections.emptyList();
         }
-        return result;
+        return Collections.unmodifiableList(mFeatureTags);
+    }
+
+    /**
+     * @return The tuple elements associated with the presence element portion of the PIDF document
+     * contained in the NOTIFY response from the network.
+     * <p>
+     * Note: this is only populated if {@link #getCapabilityMechanism} is
+     * {@link CAPABILITY_MECHANISM_PRESENCE}
+     */
+    public @NonNull List<RcsContactPresenceTuple> getPresenceTuples() {
+        if (mCapabilityMechanism != CAPABILITY_MECHANISM_PRESENCE) {
+            return Collections.emptyList();
+        }
+        return Collections.unmodifiableList(mPresenceTuples);
+    }
+
+    /**
+     * Get the RcsContactPresenceTuple associated with the given service id.
+     * @param serviceId The service id to get the presence tuple.
+     * @return The RcsContactPresenceTuple which has the given service id.
+     *
+     * <p>
+     * Note: this is only populated if {@link #getCapabilityMechanism} is
+     * {@link CAPABILITY_MECHANISM_PRESENCE}
+     */
+    public @Nullable RcsContactPresenceTuple getPresenceTuple(String serviceId) {
+        if (mCapabilityMechanism != CAPABILITY_MECHANISM_PRESENCE) {
+            return null;
+        }
+        for (RcsContactPresenceTuple tuple : mPresenceTuples) {
+            if (tuple.getServiceId().equals(serviceId)) {
+                return tuple;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * @return the source of the data that was used to populate the capabilities of the requested
+     * contact.
+     */
+    public @SourceType int getSourceType() {
+        return mSourceType;
+    }
+
+    /**
+     * @return the result of querying the capabilities of the requested contact.
+     */
+    public @RequestResult int getRequestResult() {
+        return mRequestResult;
     }
 
     /**
diff --git a/telephony/java/android/telephony/ims/RcsUceAdapter.java b/telephony/java/android/telephony/ims/RcsUceAdapter.java
index a427d05..8d7742b 100644
--- a/telephony/java/android/telephony/ims/RcsUceAdapter.java
+++ b/telephony/java/android/telephony/ims/RcsUceAdapter.java
@@ -22,12 +22,12 @@
 import android.annotation.NonNull;
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.content.Context;
 import android.net.Uri;
 import android.os.Binder;
 import android.os.IBinder;
 import android.os.RemoteException;
+import android.os.ServiceSpecificException;
 import android.telephony.TelephonyFrameworkInitializer;
 import android.telephony.ims.aidl.IImsRcsController;
 import android.telephony.ims.aidl.IRcsUceControllerCallback;
@@ -48,43 +48,74 @@
     private static final String TAG = "RcsUceAdapter";
 
     /**
+     * This carrier supports User Capability Exchange as, defined by the framework using
+     * SIP OPTIONS. If set, the RcsFeature should support capability exchange. If not set, this
+     * RcsFeature should not publish capabilities or service capability requests.
+     * @hide
+     */
+    public static final int CAPABILITY_TYPE_OPTIONS_UCE = 1 << 0;
+
+    /**
+     * This carrier supports User Capability Exchange as, defined by the framework using a
+     * presence server. If set, the RcsFeature should support capability exchange. If not set, this
+     * RcsFeature should not publish capabilities or service capability requests.
+     * @hide
+     */
+    public static final int CAPABILITY_TYPE_PRESENCE_UCE = 1 << 1;
+
+    /**@hide*/
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = "CAPABILITY_TYPE_", value = {
+            CAPABILITY_TYPE_OPTIONS_UCE,
+            CAPABILITY_TYPE_PRESENCE_UCE
+    })
+    public @interface RcsImsCapabilityFlag {}
+
+    /**
      * An unknown error has caused the request to fail.
      * @hide
      */
     public static final int ERROR_GENERIC_FAILURE = 1;
+
     /**
      * The carrier network does not have UCE support enabled for this subscriber.
      * @hide
      */
     public static final int ERROR_NOT_ENABLED = 2;
+
     /**
      * The data network that the device is connected to does not support UCE currently (e.g. it is
      * 1x only currently).
      * @hide
      */
     public static final int ERROR_NOT_AVAILABLE = 3;
+
     /**
      * The network has responded with SIP 403 error and a reason "User not registered."
      * @hide
      */
     public static final int ERROR_NOT_REGISTERED = 4;
+
     /**
      * The network has responded to this request with a SIP 403 error and reason "not authorized for
      * presence" for this subscriber.
      * @hide
      */
     public static final int ERROR_NOT_AUTHORIZED = 5;
+
     /**
      * The network has responded to this request with a SIP 403 error and no reason.
      * @hide
      */
     public static final int ERROR_FORBIDDEN = 6;
+
     /**
      * The contact URI requested is not provisioned for VoLTE or it is not known as an IMS
      * subscriber to the carrier network.
      * @hide
      */
     public static final int ERROR_NOT_FOUND = 7;
+
     /**
      * The capabilities request contained too many URIs for the carrier network to handle. Retry
      * with a lower number of contact numbers. The number varies per carrier.
@@ -92,26 +123,31 @@
      */
     // TODO: Try to integrate this into the API so that the service will split based on carrier.
     public static final int ERROR_REQUEST_TOO_LARGE = 8;
+
     /**
      * The network did not respond to the capabilities request before the request timed out.
      * @hide
      */
     public static final int ERROR_REQUEST_TIMEOUT = 10;
+
     /**
      * The request failed due to the service having insufficient memory.
      * @hide
      */
     public static final int ERROR_INSUFFICIENT_MEMORY = 11;
+
     /**
      * The network was lost while trying to complete the request.
      * @hide
      */
     public static final int ERROR_LOST_NETWORK = 12;
+
     /**
-     * The request has failed because the same request has already been added to the queue.
+     * The network is temporarily unavailable or busy. Retries should only be done after the retry
+     * time returned in {@link CapabilitiesCallback#onError} has elapsed.
      * @hide
      */
-    public static final int ERROR_ALREADY_IN_QUEUE = 13;
+    public static final int ERROR_SERVER_UNAVAILABLE = 13;
 
     /**@hide*/
     @Retention(RetentionPolicy.SOURCE)
@@ -127,11 +163,90 @@
             ERROR_REQUEST_TIMEOUT,
             ERROR_INSUFFICIENT_MEMORY,
             ERROR_LOST_NETWORK,
-            ERROR_ALREADY_IN_QUEUE
+            ERROR_SERVER_UNAVAILABLE
     })
     public @interface ErrorCode {}
 
     /**
+     * A capability update has been requested due to the Entity Tag (ETag) expiring.
+     * @hide
+     */
+    public static final int CAPABILITY_UPDATE_TRIGGER_ETAG_EXPIRED = 0;
+    /**
+     * A capability update has been requested due to moving to LTE with VoPS disabled.
+     * @hide
+     */
+    public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_LTE_VOPS_DISABLED = 1;
+    /**
+     * A capability update has been requested due to moving to LTE with VoPS enabled.
+     * @hide
+     */
+    public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_LTE_VOPS_ENABLED = 2;
+    /**
+     * A capability update has been requested due to moving to eHRPD.
+     * @hide
+     */
+    public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_EHRPD = 3;
+    /**
+     * A capability update has been requested due to moving to HSPA+.
+     * @hide
+     */
+    public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_HSPAPLUS = 4;
+    /**
+     * A capability update has been requested due to moving to 3G.
+     * @hide
+     */
+    public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_3G = 5;
+    /**
+     * A capability update has been requested due to moving to 2G.
+     * @hide
+     */
+    public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_2G = 6;
+    /**
+     * A capability update has been requested due to moving to WLAN
+     * @hide
+     */
+    public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_WLAN = 7;
+    /**
+     * A capability update has been requested due to moving to IWLAN
+     * @hide
+     */
+    public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_IWLAN = 8;
+    /**
+     * A capability update has been requested but the reason is unknown.
+     * @hide
+     */
+    public static final int CAPABILITY_UPDATE_TRIGGER_UNKNOWN = 9;
+    /**
+     * A capability update has been requested due to moving to 5G NR with VoPS disabled.
+     * @hide
+     */
+    public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_NR5G_VOPS_DISABLED = 10;
+    /**
+     * A capability update has been requested due to moving to 5G NR with VoPS enabled.
+     * @hide
+     */
+    public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_NR5G_VOPS_ENABLED = 11;
+
+    /**@hide*/
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = "ERROR_", value = {
+            CAPABILITY_UPDATE_TRIGGER_ETAG_EXPIRED,
+            CAPABILITY_UPDATE_TRIGGER_MOVE_TO_LTE_VOPS_DISABLED,
+            CAPABILITY_UPDATE_TRIGGER_MOVE_TO_LTE_VOPS_ENABLED,
+            CAPABILITY_UPDATE_TRIGGER_MOVE_TO_EHRPD,
+            CAPABILITY_UPDATE_TRIGGER_MOVE_TO_HSPAPLUS,
+            CAPABILITY_UPDATE_TRIGGER_MOVE_TO_3G,
+            CAPABILITY_UPDATE_TRIGGER_MOVE_TO_2G,
+            CAPABILITY_UPDATE_TRIGGER_MOVE_TO_WLAN,
+            CAPABILITY_UPDATE_TRIGGER_MOVE_TO_IWLAN,
+            CAPABILITY_UPDATE_TRIGGER_UNKNOWN,
+            CAPABILITY_UPDATE_TRIGGER_MOVE_TO_NR5G_VOPS_DISABLED,
+            CAPABILITY_UPDATE_TRIGGER_MOVE_TO_NR5G_VOPS_ENABLED
+    })
+    public @interface StackPublishTriggerType {}
+
+    /**
      * The last publish has resulted in a "200 OK" response or the device is using SIP OPTIONS for
      * UCE.
      * @hide
@@ -206,7 +321,7 @@
             public void onPublishStateChanged(int publishState) {
                 if (mLocalCallback == null) return;
 
-                long callingIdentity = Binder.clearCallingIdentity();
+                final long callingIdentity = Binder.clearCallingIdentity();
                 try {
                     mExecutor.execute(() -> mLocalCallback.onChanged(publishState));
                 } finally {
@@ -239,38 +354,51 @@
     }
 
     /**
-     * Provides a one-time callback for the response to a UCE request. After this callback is called
-     * by the framework, the reference to this callback will be discarded on the service side.
+     * A callback for the response to a UCE request. The method
+     * {@link CapabilitiesCallback#onCapabilitiesReceived} will be called zero or more times as the
+     * capabilities are received for each requested contact.
+     * <p>
+     * This request will take a varying amount of time depending on if the contacts requested are
+     * cached or if it requires a network query. The timeout time of these requests can vary
+     * depending on the network, however in poor cases it could take up to a minute for a request
+     * to timeout. In that time only a subset of capabilities may have been retrieved.
+     * <p>
+     * After {@link CapabilitiesCallback#onComplete} or {@link CapabilitiesCallback#onError} has
+     * been called, the reference to this callback will be discarded on the service side.
      * @see #requestCapabilities(Executor, List, CapabilitiesCallback)
      * @hide
      */
-    public static class CapabilitiesCallback {
+    public interface CapabilitiesCallback {
 
         /**
-         * Notify this application that the pending capability request has returned successfully.
+         * Notify this application that the pending capability request has returned successfully
+         * for one or more of the requested contacts.
          * @param contactCapabilities List of capabilities associated with each contact requested.
          */
-        public void onCapabilitiesReceived(
-                @NonNull List<RcsContactUceCapability> contactCapabilities) {
+        void onCapabilitiesReceived(@NonNull List<RcsContactUceCapability> contactCapabilities);
 
-        }
+        /**
+         * The pending request has completed successfully due to all requested contacts information
+         * being delivered.
+         */
+        void onComplete();
 
         /**
          * The pending request has resulted in an error and may need to be retried, depending on the
          * error code.
          * @param errorCode The reason for the framework being unable to process the request.
+         * @param retryAfterMilliseconds The time in milliseconds the requesting application should
+         * wait before retrying, if non-zero.
          */
-        public void onError(@ErrorCode int errorCode) {
-
-        }
+        void onError(@ErrorCode int errorCode, long retryAfterMilliseconds);
     }
 
     private final Context mContext;
     private final int mSubId;
 
     /**
-     * Not to be instantiated directly, use
-     * {@link ImsRcsManager#getUceAdapter()} to instantiate this manager class.
+     * Not to be instantiated directly, use {@link ImsRcsManager#getUceAdapter()} to instantiate
+     * this manager class.
      * @hide
      */
     RcsUceAdapter(Context context, int subId) {
@@ -281,6 +409,9 @@
     /**
      * Request the User Capability Exchange capabilities for one or more contacts.
      * <p>
+     * This will return the cached capabilities of the contact and will not perform a capability
+     * poll on the network unless there are contacts being queried with stale information.
+     * <p>
      * Be sure to check the availability of this feature using
      * {@link ImsRcsManager#isAvailable(int)} and ensuring
      * {@link RcsFeature.RcsImsCapabilities#CAPABILITY_TYPE_OPTIONS_UCE} or
@@ -303,7 +434,7 @@
             @NonNull List<Uri> contactNumbers,
             @NonNull CapabilitiesCallback c) throws ImsException {
         if (c == null) {
-            throw new IllegalArgumentException("Must include a non-null AvailabilityCallback.");
+            throw new IllegalArgumentException("Must include a non-null CapabilitiesCallback.");
         }
         if (executor == null) {
             throw new IllegalArgumentException("Must include a non-null Executor.");
@@ -322,7 +453,7 @@
         IRcsUceControllerCallback internalCallback = new IRcsUceControllerCallback.Stub() {
             @Override
             public void onCapabilitiesReceived(List<RcsContactUceCapability> contactCapabilities) {
-                long callingIdentity = Binder.clearCallingIdentity();
+                final long callingIdentity = Binder.clearCallingIdentity();
                 try {
                     executor.execute(() ->
                             c.onCapabilitiesReceived(contactCapabilities));
@@ -331,10 +462,19 @@
                 }
             }
             @Override
-            public void onError(int errorCode) {
-                long callingIdentity = Binder.clearCallingIdentity();
+            public void onComplete() {
+                final long callingIdentity = Binder.clearCallingIdentity();
                 try {
-                    executor.execute(() -> c.onError(errorCode));
+                    executor.execute(() -> c.onComplete());
+                } finally {
+                    restoreCallingIdentity(callingIdentity);
+                }
+            }
+            @Override
+            public void onError(int errorCode, long retryAfterMilliseconds) {
+                final long callingIdentity = Binder.clearCallingIdentity();
+                try {
+                    executor.execute(() -> c.onError(errorCode, retryAfterMilliseconds));
                 } finally {
                     restoreCallingIdentity(callingIdentity);
                 }
@@ -344,6 +484,8 @@
         try {
             imsRcsController.requestCapabilities(mSubId, mContext.getOpPackageName(),
                     mContext.getAttributionTag(), contactNumbers, internalCallback);
+        } catch (ServiceSpecificException e) {
+            throw new ImsException(e.toString(), e.errorCode);
         } catch (RemoteException e) {
             Log.e(TAG, "Error calling IImsRcsController#requestCapabilities", e);
             throw new ImsException("Remote IMS Service is not available",
@@ -352,6 +494,90 @@
     }
 
     /**
+     * Ignore the device cache and perform a capability discovery for one contact, also called
+     * "availability fetch."
+     * <p>
+     * This will always perform a query to the network as long as requests are over the carrier
+     * availability fetch throttling threshold. If too many network requests are sent too quickly,
+     * #ERROR_TOO_MANY_REQUESTS will be returned.
+     *
+     * <p>
+     * Be sure to check the availability of this feature using
+     * {@link ImsRcsManager#isAvailable(int)} and ensuring
+     * {@link RcsFeature.RcsImsCapabilities#CAPABILITY_TYPE_OPTIONS_UCE} or
+     * {@link RcsFeature.RcsImsCapabilities#CAPABILITY_TYPE_PRESENCE_UCE} is
+     * enabled or else this operation will fail with
+     * {@link #ERROR_NOT_AVAILABLE} or {@link #ERROR_NOT_ENABLED}.
+     *
+     * @param contactNumber The contact of the capabilities is being requested for.
+     * @param c A one-time callback for when the request for capabilities completes or there is
+     * an error processing the request.
+     * @hide
+     */
+    @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
+    public void requestNetworkAvailability(@NonNull @CallbackExecutor Executor executor,
+            @NonNull Uri contactNumber, @NonNull CapabilitiesCallback c) throws ImsException {
+        if (executor == null) {
+            throw new IllegalArgumentException("Must include a non-null Executor.");
+        }
+        if (contactNumber == null) {
+            throw new IllegalArgumentException("Must include non-null contact number.");
+        }
+        if (c == null) {
+            throw new IllegalArgumentException("Must include a non-null CapabilitiesCallback.");
+        }
+
+        IImsRcsController imsRcsController = getIImsRcsController();
+        if (imsRcsController == null) {
+            Log.e(TAG, "requestNetworkAvailability: IImsRcsController is null");
+            throw new ImsException("Cannot find remote IMS service",
+                    ImsException.CODE_ERROR_SERVICE_UNAVAILABLE);
+        }
+
+        IRcsUceControllerCallback internalCallback = new IRcsUceControllerCallback.Stub() {
+            @Override
+            public void onCapabilitiesReceived(List<RcsContactUceCapability> contactCapabilities) {
+                final long callingIdentity = Binder.clearCallingIdentity();
+                try {
+                    executor.execute(() ->
+                            c.onCapabilitiesReceived(contactCapabilities));
+                } finally {
+                    restoreCallingIdentity(callingIdentity);
+                }
+            }
+            @Override
+            public void onComplete() {
+                final long callingIdentity = Binder.clearCallingIdentity();
+                try {
+                    executor.execute(() -> c.onComplete());
+                } finally {
+                    restoreCallingIdentity(callingIdentity);
+                }
+            }
+            @Override
+            public void onError(int errorCode, long retryAfterMilliseconds) {
+                final long callingIdentity = Binder.clearCallingIdentity();
+                try {
+                    executor.execute(() -> c.onError(errorCode, retryAfterMilliseconds));
+                } finally {
+                    restoreCallingIdentity(callingIdentity);
+                }
+            }
+        };
+
+        try {
+            imsRcsController.requestNetworkAvailability(mSubId, mContext.getOpPackageName(),
+                    mContext.getAttributionTag(), contactNumber, internalCallback);
+        } catch (ServiceSpecificException e) {
+            throw new ImsException(e.toString(), e.errorCode);
+        } catch (RemoteException e) {
+            Log.e(TAG, "Error calling IImsRcsController#requestNetworkAvailability", e);
+            throw new ImsException("Remote IMS Service is not available",
+                    ImsException.CODE_ERROR_SERVICE_UNAVAILABLE);
+        }
+    }
+
+    /**
      * Gets the last publish result from the UCE service if the device is using an RCS presence
      * server.
      * @return The last publish result from the UCE service. If the device is using SIP OPTIONS,
@@ -373,7 +599,7 @@
 
         try {
             return imsRcsController.getUcePublishState(mSubId);
-        } catch (android.os.ServiceSpecificException e) {
+        } catch (ServiceSpecificException e) {
             throw new ImsException(e.getMessage(), e.errorCode);
         } catch (RemoteException e) {
             Log.e(TAG, "Error calling IImsRcsController#getUcePublishState", e);
@@ -420,7 +646,7 @@
         c.setExecutor(executor);
         try {
             imsRcsController.registerUcePublishStateCallback(mSubId, c.getBinder());
-        } catch (android.os.ServiceSpecificException e) {
+        } catch (ServiceSpecificException e) {
             throw new ImsException(e.getMessage(), e.errorCode);
         } catch (RemoteException e) {
             Log.e(TAG, "Error calling IImsRcsController#registerUcePublishStateCallback", e);
@@ -519,7 +745,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
     public void setUceSettingEnabled(boolean isEnabled) throws ImsException {
         IImsRcsController imsRcsController = getIImsRcsController();
diff --git a/telephony/java/android/telephony/ims/RtpHeaderExtension.aidl b/telephony/java/android/telephony/ims/RtpHeaderExtension.aidl
new file mode 100644
index 0000000..cbf79d3
--- /dev/null
+++ b/telephony/java/android/telephony/ims/RtpHeaderExtension.aidl
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims;
+
+parcelable RtpHeaderExtension;
\ No newline at end of file
diff --git a/telephony/java/android/telephony/ims/RtpHeaderExtension.java b/telephony/java/android/telephony/ims/RtpHeaderExtension.java
new file mode 100644
index 0000000..f9ab701
--- /dev/null
+++ b/telephony/java/android/telephony/ims/RtpHeaderExtension.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims;
+
+import android.annotation.IntRange;
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.util.Arrays;
+import java.util.Objects;
+
+/**
+ * A representation of an RTP header extension.
+ * <p>
+ * Per RFC8285, an RTP header extension consists of both a local identifier in the range 1-14, an
+ * 8-bit length indicator and a number of extension data bytes equivalent to the stated length.
+ * @hide
+ */
+@SystemApi
+public final class RtpHeaderExtension implements Parcelable {
+    private int mLocalIdentifier;
+    private byte[] mExtensionData;
+
+    /**
+     * Creates a new {@link RtpHeaderExtension}.
+     * @param localIdentifier The local identifier for this RTP header extension.
+     * @param extensionData The data for this RTP header extension.
+     * @throws IllegalArgumentException if {@code extensionId} is not in the range 1-14.
+     * @throws NullPointerException if {@code extensionData} is null.
+     */
+    public RtpHeaderExtension(@IntRange(from = 1, to = 14) int localIdentifier,
+            @NonNull byte[] extensionData) {
+        if (localIdentifier < 1 || localIdentifier > 13) {
+            throw new IllegalArgumentException("localIdentifier must be in range 1-14");
+        }
+        if (extensionData == null) {
+            throw new NullPointerException("extensionDa is required.");
+        }
+        mLocalIdentifier = localIdentifier;
+        mExtensionData = extensionData;
+    }
+
+    /**
+     * Creates a new instance of {@link RtpHeaderExtension} from a parcel.
+     * @param in The parceled data to read.
+     */
+    private RtpHeaderExtension(@NonNull Parcel in) {
+        mLocalIdentifier = in.readInt();
+        mExtensionData = in.createByteArray();
+    }
+
+    /**
+     * The local identifier for the RTP header extension.
+     * <p>
+     * Per RFC8285, the extension ID is a value in the range 1-14 (0 is reserved for padding and
+     * 15 is reserved for the one-byte header form.
+     * <p>
+     * Within the current call, this extension ID will match one of the
+     * {@link RtpHeaderExtensionType#getLocalIdentifier()}s.
+     *
+     * @return The local identifier for this RTP header extension.
+     */
+    @IntRange(from = 1, to = 14)
+    public int getLocalIdentifier() {
+        return mLocalIdentifier;
+    }
+
+    /**
+     * The data payload for the RTP header extension.
+     * <p>
+     * Per RFC8285 Sec 4.3, an RTP header extension includes an 8-bit length field which indicate
+     * how many bytes of data are present in the RTP header extension.  The extension includes this
+     * many bytes of actual data.
+     * <p>
+     * We represent this as a byte array who's length is equivalent to the 8-bit length field.
+     * @return RTP header extension data payload.  The payload may be up to 255 bytes in length.
+     */
+    public @NonNull byte[] getExtensionData() {
+        return mExtensionData;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel dest, int flags) {
+        dest.writeInt(mLocalIdentifier);
+        dest.writeByteArray(mExtensionData);
+    }
+
+    public static final @NonNull Creator<RtpHeaderExtension> CREATOR =
+            new Creator<RtpHeaderExtension>() {
+                @Override
+                public RtpHeaderExtension createFromParcel(@NonNull Parcel in) {
+                    return new RtpHeaderExtension(in);
+                }
+
+                @Override
+                public RtpHeaderExtension[] newArray(int size) {
+                    return new RtpHeaderExtension[size];
+                }
+            };
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        RtpHeaderExtension that = (RtpHeaderExtension) o;
+        return mLocalIdentifier == that.mLocalIdentifier
+                && Arrays.equals(mExtensionData, that.mExtensionData);
+    }
+
+    @Override
+    public int hashCode() {
+        int result = Objects.hash(mLocalIdentifier);
+        result = 31 * result + Arrays.hashCode(mExtensionData);
+        return result;
+    }
+}
diff --git a/telephony/java/android/telephony/ims/RtpHeaderExtensionType.aidl b/telephony/java/android/telephony/ims/RtpHeaderExtensionType.aidl
new file mode 100644
index 0000000..3e62fff
--- /dev/null
+++ b/telephony/java/android/telephony/ims/RtpHeaderExtensionType.aidl
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims;
+
+parcelable RtpHeaderExtensionType;
\ No newline at end of file
diff --git a/telephony/java/android/telephony/ims/RtpHeaderExtensionType.java b/telephony/java/android/telephony/ims/RtpHeaderExtensionType.java
new file mode 100644
index 0000000..e1d39c2
--- /dev/null
+++ b/telephony/java/android/telephony/ims/RtpHeaderExtensionType.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims;
+
+import android.annotation.IntRange;
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
+import android.net.Uri;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.util.Objects;
+
+/**
+ * Defines a mapping between a local identifier and a {@link Uri} which identifies an RTP header
+ * extension.
+ * <p>
+ * According to RFC8285, SDP (Session Description Protocol) signalling for a call provides a means
+ * for the supported RTP header extensions for a call to be negotiated at call initiation time.
+ * The types of RTP header extensions potentially usable in a session are identified by a local
+ * identifier ({@link #getLocalIdentifier()}) when RTP header extensions are present on RTP packets.
+ * A {@link Uri} ({@link #getUri()}) provides a unique identifier for the RTP header extension
+ * format which parties in a call can use to identify supported RTP header extensions.
+ * @hide
+ */
+@SystemApi
+public final class RtpHeaderExtensionType implements Parcelable {
+    private int mLocalIdentifier;
+    private Uri mUri;
+
+    /**
+     * Create a new RTP header extension type.
+     * @param localIdentifier the local identifier.
+     * @param uri the {@link Uri} identifying the RTP header extension type.
+     * @throws IllegalArgumentException if {@code localIdentifier} is out of the expected range.
+     * @throws NullPointerException if {@code uri} is null.
+     */
+    public RtpHeaderExtensionType(@IntRange(from = 1, to = 14) int localIdentifier,
+            @NonNull Uri uri) {
+        if (localIdentifier < 1 || localIdentifier > 13) {
+            throw new IllegalArgumentException("localIdentifier must be in range 1-14");
+        }
+        if (uri == null) {
+            throw new NullPointerException("uri is required.");
+        }
+        mLocalIdentifier = localIdentifier;
+        mUri = uri;
+    }
+
+    private RtpHeaderExtensionType(Parcel in) {
+        mLocalIdentifier = in.readInt();
+        mUri = in.readParcelable(Uri.class.getClassLoader());
+    }
+
+    public static final @NonNull Creator<RtpHeaderExtensionType> CREATOR =
+            new Creator<RtpHeaderExtensionType>() {
+                @Override
+                public RtpHeaderExtensionType createFromParcel(@NonNull Parcel in) {
+                    return new RtpHeaderExtensionType(in);
+                }
+
+                @Override
+                public @NonNull RtpHeaderExtensionType[] newArray(int size) {
+                    return new RtpHeaderExtensionType[size];
+                }
+            };
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel dest, int flags) {
+        dest.writeInt(mLocalIdentifier);
+        dest.writeParcelable(mUri, flags);
+    }
+
+    /**
+     * The local identifier for this RTP header extension type.
+     * <p>
+     * {@link RtpHeaderExtension}s which indicate a {@link RtpHeaderExtension#getLocalIdentifier()}
+     * matching this local identifier will have the format specified by {@link #getUri()}.
+     * <p>
+     * Per RFC8285, the extension ID is a value in the range 1-14 (0 is reserved for padding and
+     * 15 is reserved for the one-byte header form.
+     *
+     * @return The local identifier associated with this {@link #getUri()}.
+     */
+    public @IntRange(from = 1, to = 14) int getLocalIdentifier() {
+        return mLocalIdentifier;
+    }
+
+    /**
+     * A {@link Uri} which identifies the format of the RTP extension header.
+     * <p>
+     * According to RFC8285 section 5, URIs MUST be absolute and SHOULD contain a month/date pair
+     * in the form mmyyyy to indicate versioning of the extension.  Extension headers defined in an
+     * RFC are typically defined using URNs starting with {@code urn:ietf:params:rtp-hdrext:}.
+     * For example, RFC6464 defines {@code urn:ietf:params:rtp-hdrext:ssrc-audio-level} which is an
+     * RTP header extension for communicating client to mixer audio level indications.
+     *
+     * @return A unique {@link Uri} identifying the format of the RTP extension header.
+     */
+    public @NonNull Uri getUri() {
+        return mUri;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        RtpHeaderExtensionType that = (RtpHeaderExtensionType) o;
+        return mLocalIdentifier == that.mLocalIdentifier
+                && mUri.equals(that.mUri);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(mLocalIdentifier, mUri);
+    }
+}
diff --git a/telephony/java/android/telephony/ims/SipDelegateConnection.java b/telephony/java/android/telephony/ims/SipDelegateConnection.java
new file mode 100644
index 0000000..c3cc1ed
--- /dev/null
+++ b/telephony/java/android/telephony/ims/SipDelegateConnection.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims;
+
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
+import android.telephony.ims.stub.SipDelegate;
+
+/**
+ * Represents a connection to the remote {@link SipDelegate} that is managed by the
+ * {@link ImsService} implementing IMS for the subscription that is associated with it.
+ * <p>
+ * The remote delegate will handle messages sent by this {@link SipDelegateConnection}, notifying
+ * the associated {@link DelegateMessageCallback} when the message was either sent successfully or
+ * failed to be sent.
+ * <p>
+ * It is also the responsibility of this {@link SipDelegateConnection} to acknowledge when incoming
+ * SIP messages have been received successfully via
+ * {@link DelegateMessageCallback#onMessageReceived(SipMessage)} or when there was an error
+ * receiving the message using {@link #notifyMessageReceived(String)} and
+ * {@link #notifyMessageReceiveError(String, int)}.
+ *
+ * @see SipDelegateManager#createSipDelegate
+ * @hide
+ */
+@SystemApi
+public interface SipDelegateConnection {
+
+    /**
+     * Send a SIP message to the SIP delegate to be sent over the carrier’s network. The
+     * {@link SipMessage} will either be acknowledged with
+     * {@link DelegateMessageCallback#onMessageSent(String)} upon successful sending of this message
+     * or {@link DelegateMessageCallback#onMessageSendFailure(String, int)} if there was an error
+     * sending the message.
+     * @param sipMessage The SipMessage to be sent.
+     * @param configVersion The SipDelegateImsConfiguration version used to construct the
+     *                      SipMessage. See {@link SipDelegateImsConfiguration#getVersion} for more
+     */
+    void sendMessage(@NonNull SipMessage sipMessage, long configVersion);
+
+    /**
+     * Notify the {@link SipDelegate} that a SIP message received from
+     * {@link DelegateMessageCallback#onMessageReceived(SipMessage)} has been received successfully
+     * and is being processed.
+     * @param viaTransactionId Per RFC3261 Sec 8.1.1.7 the transaction ID associated with the Via
+     *         branch parameter.
+     */
+    void notifyMessageReceived(@NonNull String viaTransactionId);
+
+    /**
+     * Notify the SIP delegate that the SIP message has been received from
+     * {@link DelegateMessageCallback#onMessageReceived(SipMessage)}, however there was an error
+     * processing it.
+     * @param viaTransactionId Per RFC3261 Sec 8.1.1.7 the transaction ID associated with the Via
+     *         branch parameter.
+     * @param reason The reason why the error occurred.
+     */
+    void notifyMessageReceiveError(@NonNull String viaTransactionId,
+            @SipDelegateManager.MessageFailureReason int reason);
+}
diff --git a/telephony/java/android/telephony/ims/SipDelegateImsConfiguration.aidl b/telephony/java/android/telephony/ims/SipDelegateImsConfiguration.aidl
new file mode 100644
index 0000000..44ae1b1
--- /dev/null
+++ b/telephony/java/android/telephony/ims/SipDelegateImsConfiguration.aidl
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims;
+
+parcelable SipDelegateImsConfiguration;
diff --git a/telephony/java/android/telephony/ims/SipDelegateImsConfiguration.java b/telephony/java/android/telephony/ims/SipDelegateImsConfiguration.java
new file mode 100644
index 0000000..eddbb10
--- /dev/null
+++ b/telephony/java/android/telephony/ims/SipDelegateImsConfiguration.java
@@ -0,0 +1,518 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.StringDef;
+import android.annotation.SuppressLint;
+import android.annotation.SystemApi;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.os.PersistableBundle;
+import android.telephony.ims.stub.SipDelegate;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * The IMS registration and other attributes that the {@link SipDelegateConnection} used by the
+ * IMS application will need to be aware of to correctly generate outgoing {@link SipMessage}s.
+ * <p>
+ * The IMS service must generate new instances of this configuration as the IMS configuration
+ * managed by the IMS service changes. Along with each {@link SipDelegateImsConfiguration} instance
+ * containing the configuration is the "version", which should be incremented every time a new
+ * {@link SipDelegateImsConfiguration} instance is created. The {@link SipDelegateConnection} will
+ * include the version of the {@link SipDelegateImsConfiguration} instance that it used in order for
+ * the {@link SipDelegate} to easily identify if the IMS application used a now stale configuration
+ * to generate the {@link SipMessage} and return
+ * {@link SipDelegateManager#MESSAGE_FAILURE_REASON_STALE_IMS_CONFIGURATION} in
+ * {@link DelegateMessageCallback#onMessageSendFailure(String, int)} so that the IMS application can
+ * regenerate that {@link SipMessage} using the correct {@link SipDelegateImsConfiguration}
+ * instance.
+ * <p>
+ * Every time the IMS configuration state changes in the IMS service, a full configuration should
+ * be generated. The new  {@link SipDelegateImsConfiguration} instance should not be an incremental
+ * update.
+ * @hide
+ */
+@SystemApi
+public final class SipDelegateImsConfiguration implements Parcelable {
+
+    /**
+     * IPV4 Address type.
+     * <p>
+     * Used as a potential value for {@link #KEY_SIP_CONFIG_IPTYPE_STRING}.
+     */
+    public static final String IPTYPE_IPV4 = "IPV4";
+
+    /**
+     * IPV6 Address type.
+     * <p>
+     * Used as a potential value for {@link #KEY_SIP_CONFIG_IPTYPE_STRING}.
+     */
+    public static final String IPTYPE_IPV6 = "IPV6";
+
+    /**
+     * The SIP transport uses UDP.
+     * <p>
+     * Used as a potential value for {@link #KEY_SIP_CONFIG_TRANSPORT_TYPE_STRING}.
+     */
+    public static final String SIP_TRANSPORT_UDP = "UDP";
+
+    /**
+     * The SIP transport uses TCP.
+     * <p>
+     * Used as a potential value for {@link #KEY_SIP_CONFIG_TRANSPORT_TYPE_STRING}.
+     */
+    public static final String SIP_TRANSPORT_TCP = "TCP";
+
+    /**
+     * Flag specifying if SIP compact form is enabled
+     */
+    public static final String KEY_SIP_CONFIG_IS_COMPACT_FORM_ENABLED_BOOL =
+            "sip_config_is_compact_form_enabled_bool";
+
+    /**
+     * Flag specifying if SIP keepalives are enabled
+     */
+    public static final String KEY_SIP_CONFIG_IS_KEEPALIVE_ENABLED_BOOL =
+            "sip_config_is_keepalive_enabled_bool";
+
+    /**
+     * Maximum SIP payload to be sent on UDP. If the SIP message payload is greater than max udp
+     * payload size, then TCP must be used
+     */
+    public static final String KEY_SIP_CONFIG_MAX_PAYLOAD_SIZE_ON_UDP_INT =
+            "sip_config_udp_max_payload_size_int";
+
+    /**
+     * Transport protocol used for SIP signaling.
+     * Available options are: {@link #SIP_TRANSPORT_UDP }, {@link #SIP_TRANSPORT_TCP }
+     */
+    public static final String KEY_SIP_CONFIG_TRANSPORT_TYPE_STRING =
+            "sip_config_protocol_type_string";
+
+    /**
+     * IMS public user identifier string
+     */
+    public static final String KEY_SIP_CONFIG_UE_PUBLIC_USER_ID_STRING =
+            "sip_config_ue_public_user_id_string";
+
+    /**
+     * IMS private user identifier string
+     */
+    public static final String KEY_SIP_CONFIG_UE_PRIVATE_USER_ID_STRING =
+            "sip_config_ue_private_user_id_string";
+
+    /**
+     * IMS home domain string
+     */
+    public static final String KEY_SIP_CONFIG_HOME_DOMAIN_STRING = "sip_config_home_domain_string";
+
+    /**
+     * IMEI string. Application can include the Instance-ID feature tag " +sip.instance" in the
+     * Contact header with a value of the device IMEI in the form "urn:gsma:imei:<device IMEI>".
+     */
+    public static final String KEY_SIP_CONFIG_IMEI_STRING = "sip_config_imei_string";
+
+    /**
+     * IP address type for SIP signaling.
+     * Available options are: {@link #IPTYPE_IPV6}, {@link #IPTYPE_IPV4}
+     */
+    public static final String KEY_SIP_CONFIG_IPTYPE_STRING = "sip_config_iptype_string";
+
+    /**
+     * Local IPaddress used for SIP signaling.
+     */
+    public static final String KEY_SIP_CONFIG_UE_DEFAULT_IPADDRESS_STRING =
+            "sip_config_ue_default_ipaddress_string";
+
+    /**
+     * Local port used for sending SIP traffic
+     */
+    public static final String KEY_SIP_CONFIG_UE_DEFAULT_PORT_INT =
+            "sip_config_ue_default_port_int";
+
+    /**
+     * SIP server / PCSCF default ip address
+     */
+    public static final String KEY_SIP_CONFIG_SERVER_DEFAULT_IPADDRESS_STRING =
+            "sip_config_server_default_ipaddress_string";
+
+    /**
+     * SIP server / PCSCF port used for sending SIP traffic
+     */
+    public static final String KEY_SIP_CONFIG_SERVER_DEFAULT_PORT_INT =
+            "sip_config_server_default_port_int";
+
+    /**
+     * Flag specifying if Network Address Translation is enabled and UE is behind a NAT.
+     */
+    public static final String KEY_SIP_CONFIG_IS_NAT_ENABLED_BOOL =
+            "sip_config_is_nat_enabled_bool";
+
+    /**
+     * UE's public IPaddress when UE is behind a NAT.
+     * <p>
+     * This key will not exist if {@link #KEY_SIP_CONFIG_IS_NAT_ENABLED_BOOL} is {@code false}.
+     */
+    public static final String KEY_SIP_CONFIG_UE_PUBLIC_IPADDRESS_WITH_NAT_STRING =
+            "sip_config_ue_public_ipaddress_with_nat_string";
+
+    /**
+     * UE's public SIP port when UE is behind a NAT.
+     * <p>
+     * This key will not exist if {@link #KEY_SIP_CONFIG_IS_NAT_ENABLED_BOOL} is {@code false}.
+     */
+    public static final String KEY_SIP_CONFIG_UE_PUBLIC_PORT_WITH_NAT_INT =
+            "sip_config_ue_public_port_with_nat_int";
+
+    /**
+     * Flag specifying if Globally routable user-agent uri (GRUU) is enabled as per TS 23.808
+     */
+    public static final String KEY_SIP_CONFIG_IS_GRUU_ENABLED_BOOL =
+            "sip_config_is_gruu_enabled_bool";
+
+    /**
+     * UE's Globally routable user-agent uri if this feature is enabled.
+     * <p>
+     * This key will not exist if {@link #KEY_SIP_CONFIG_IS_GRUU_ENABLED_BOOL} is {@code false}.
+     */
+    public static final String KEY_SIP_CONFIG_UE_PUBLIC_GRUU_STRING =
+            "sip_config_ue_public_gruu_string";
+
+    /**
+     * Flag specifying if SIP over IPSec is enabled.
+     */
+    public static final String KEY_SIP_CONFIG_IS_IPSEC_ENABLED_BOOL =
+            "sip_config_is_ipsec_enabled_bool";
+    /**
+     * UE's SIP port used to send traffic when IPSec is enabled.
+     * <p>
+     * This key will not exist if {@link #KEY_SIP_CONFIG_IS_IPSEC_ENABLED_BOOL} is {@code false}.
+     */
+    public static final String KEY_SIP_CONFIG_UE_IPSEC_CLIENT_PORT_INT =
+            "sip_config_ue_ipsec_client_port_int";
+
+    /**
+     * UE's SIP port used to receive traffic when IPSec is enabled.
+     * <p>
+     * This key will not exist if {@link #KEY_SIP_CONFIG_IS_IPSEC_ENABLED_BOOL} is {@code false}.
+     */
+    public static final String KEY_SIP_CONFIG_UE_IPSEC_SERVER_PORT_INT =
+            "sip_config_ue_ipsec_server_port_int";
+
+    /**
+     * UE's SIP port used for the previous IPsec security association if IPSec is enabled.
+     * <p>
+     * This key will not exist if {@link #KEY_SIP_CONFIG_IS_IPSEC_ENABLED_BOOL} is {@code false}.
+     */
+    public static final String KEY_SIP_CONFIG_UE_IPSEC_OLD_CLIENT_PORT_INT =
+            "sip_config_ue_ipsec_old_client_port_int";
+
+    /**
+     * Port number used by the SIP server to send SIP traffic when IPSec is enabled.
+     * <p>
+     * This key will not exist if {@link #KEY_SIP_CONFIG_IS_IPSEC_ENABLED_BOOL} is {@code false}.
+     */
+    public static final String KEY_SIP_CONFIG_SERVER_IPSEC_CLIENT_PORT_INT =
+            "sip_config_server_ipsec_client_port_int";
+
+    /**
+     * Port number used by the SIP server to receive incoming SIP traffic when IPSec is enabled.
+     * <p>
+     * This key will not exist if {@link #KEY_SIP_CONFIG_IS_IPSEC_ENABLED_BOOL} is {@code false}.
+     */
+    public static final String KEY_SIP_CONFIG_SERVER_IPSEC_SERVER_PORT_INT =
+            "sip_config_server_ipsec_server_port_int";
+
+    /**
+     * Port number used by the SIP server to send SIP traffic on the previous IPSec security
+     * association when IPSec is enabled.
+     * <p>
+     * This key will not exist if {@link #KEY_SIP_CONFIG_IS_IPSEC_ENABLED_BOOL} is {@code false}.
+     */
+    public static final String KEY_SIP_CONFIG_SERVER_IPSEC_OLD_CLIENT_PORT_INT =
+            "sip_config_server_ipsec_old_client_port_int";
+    /**
+     * SIP Authentication header string
+     */
+    public static final String KEY_SIP_CONFIG_AUTHENTICATION_HEADER_STRING =
+            "sip_config_auhentication_header_string";
+
+    /**
+     * SIP Authentication nonce string
+     */
+    public static final String KEY_SIP_CONFIG_AUTHENTICATION_NONCE_STRING =
+            "sip_config_authentication_nonce_string";
+
+    /**
+     * SIP service route header string
+     */
+    public static final String KEY_SIP_CONFIG_SERVICE_ROUTE_HEADER_STRING =
+            "sip_config_service_route_header_string";
+
+    /**
+     * SIP security verify header string
+     */
+    public static final String KEY_SIP_CONFIG_SECURITY_VERIFY_HEADER_STRING =
+            "sip_config_security_verify_header_string";
+
+    /**
+     * SIP Path header string
+     */
+    public static final String KEY_SIP_CONFIG_PATH_HEADER_STRING =
+            "sip_config_path_header_string";
+
+    /**
+     * SIP User part string in contact header
+     */
+    public static final String KEY_SIP_CONFIG_URI_USER_PART_STRING =
+            "sip_config_uri_user_part_string";
+
+    /**
+     * SIP P-access-network-info header string
+     */
+    public static final String KEY_SIP_CONFIG_P_ACCESS_NETWORK_INFO_HEADER_STRING =
+            "sip_config_p_access_network_info_header_string";
+
+    /**
+     * SIP P-last-access-network-info header string
+     */
+    public static final String KEY_SIP_CONFIG_P_LAST_ACCESS_NETWORK_INFO_HEADER_STRING =
+            "sip_config_p_last_access_network_info_header_string";
+
+    /**
+     * SIP P-associated-uri header string
+     */
+    public static final String KEY_SIP_CONFIG_P_ASSOCIATED_URI_HEADER_STRING =
+            "sip_config_p_associated_uri_header_string";
+
+    /**@hide*/
+    @StringDef(prefix = "KEY_SIP_CONFIG", suffix = "_STRING", value = {
+            KEY_SIP_CONFIG_TRANSPORT_TYPE_STRING,
+            KEY_SIP_CONFIG_UE_PUBLIC_USER_ID_STRING,
+            KEY_SIP_CONFIG_UE_PRIVATE_USER_ID_STRING,
+            KEY_SIP_CONFIG_HOME_DOMAIN_STRING,
+            KEY_SIP_CONFIG_IMEI_STRING,
+            KEY_SIP_CONFIG_IPTYPE_STRING,
+            KEY_SIP_CONFIG_UE_DEFAULT_IPADDRESS_STRING,
+            KEY_SIP_CONFIG_SERVER_DEFAULT_IPADDRESS_STRING,
+            KEY_SIP_CONFIG_UE_PUBLIC_IPADDRESS_WITH_NAT_STRING,
+            KEY_SIP_CONFIG_UE_PUBLIC_GRUU_STRING,
+            KEY_SIP_CONFIG_AUTHENTICATION_HEADER_STRING,
+            KEY_SIP_CONFIG_AUTHENTICATION_NONCE_STRING,
+            KEY_SIP_CONFIG_SERVICE_ROUTE_HEADER_STRING,
+            KEY_SIP_CONFIG_SECURITY_VERIFY_HEADER_STRING,
+            KEY_SIP_CONFIG_PATH_HEADER_STRING,
+            KEY_SIP_CONFIG_URI_USER_PART_STRING,
+            KEY_SIP_CONFIG_P_ACCESS_NETWORK_INFO_HEADER_STRING,
+            KEY_SIP_CONFIG_P_LAST_ACCESS_NETWORK_INFO_HEADER_STRING,
+            KEY_SIP_CONFIG_P_ASSOCIATED_URI_HEADER_STRING
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface StringConfigKey {}
+
+    /**@hide*/
+    @StringDef(prefix = "KEY_SIP_CONFIG", suffix = "_INT", value = {
+            KEY_SIP_CONFIG_MAX_PAYLOAD_SIZE_ON_UDP_INT,
+            KEY_SIP_CONFIG_UE_DEFAULT_PORT_INT,
+            KEY_SIP_CONFIG_SERVER_DEFAULT_PORT_INT,
+            KEY_SIP_CONFIG_UE_PUBLIC_PORT_WITH_NAT_INT,
+            KEY_SIP_CONFIG_UE_IPSEC_CLIENT_PORT_INT,
+            KEY_SIP_CONFIG_UE_IPSEC_SERVER_PORT_INT,
+            KEY_SIP_CONFIG_UE_IPSEC_OLD_CLIENT_PORT_INT,
+            KEY_SIP_CONFIG_SERVER_IPSEC_CLIENT_PORT_INT,
+            KEY_SIP_CONFIG_SERVER_IPSEC_SERVER_PORT_INT,
+            KEY_SIP_CONFIG_SERVER_IPSEC_OLD_CLIENT_PORT_INT
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface IntConfigKey {}
+
+    /**@hide*/
+    @StringDef(prefix = "KEY_SIP_CONFIG", suffix = "_BOOL", value = {
+            KEY_SIP_CONFIG_IS_COMPACT_FORM_ENABLED_BOOL,
+            KEY_SIP_CONFIG_IS_KEEPALIVE_ENABLED_BOOL,
+            KEY_SIP_CONFIG_IS_NAT_ENABLED_BOOL,
+            KEY_SIP_CONFIG_IS_GRUU_ENABLED_BOOL,
+            KEY_SIP_CONFIG_IS_IPSEC_ENABLED_BOOL
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface BooleanConfigKey {}
+
+    /**
+     * Builder class to be used when constructing a new SipDelegateImsConfiguration.
+     */
+    public static final class Builder {
+        private final long mVersion;
+        private final PersistableBundle mBundle;
+
+        /**
+         * Creates an empty implementation of SipDelegateImsConfiguration.
+         * @param version The version associated with the SipDelegateImsConfiguration being built.
+         *                See {@link #getVersion} for more information.
+         */
+        public Builder(int version) {
+            mVersion = version;
+            mBundle = new PersistableBundle();
+        }
+        /**
+         * Clones an existing implementation of SipDelegateImsConfiguration to handle situations
+         * where only a small number of parameters have changed from the previous configuration.
+         * <p>
+         * Automatically increments the version of this configuration by 1. See {@link #getVersion}
+         * for more information.
+         */
+        public Builder(@NonNull SipDelegateImsConfiguration config) {
+            mVersion = config.getVersion() + 1;
+            mBundle = config.copyBundle();
+        }
+        /**
+         * Put a string value into this configuration bundle for the given key.
+         */
+        // getString is available below.
+        @SuppressLint("MissingGetterMatchingBuilder")
+        public @NonNull Builder addString(@NonNull @StringConfigKey String key,
+                @NonNull String value) {
+            mBundle.putString(key, value);
+            return this;
+        }
+
+        /**
+         * Replace the existing default value with a new value for a given key.
+         */
+        // getInt is available below.
+        @SuppressLint("MissingGetterMatchingBuilder")
+        public @NonNull Builder addInt(@NonNull @IntConfigKey String key, int value) {
+            mBundle.putInt(key, value);
+            return this;
+        }
+
+        /**
+         * Replace the existing default value with a new value for a given key.
+         */
+        // getBoolean is available below.
+        @SuppressLint("MissingGetterMatchingBuilder")
+        public @NonNull Builder addBoolean(@NonNull @BooleanConfigKey String key, boolean value) {
+            mBundle.putBoolean(key, value);
+            return this;
+        }
+
+        /**
+         * @return a new SipDelegateImsConfiguration from this Builder.
+         */
+        public @NonNull SipDelegateImsConfiguration build() {
+            return new SipDelegateImsConfiguration(mVersion, mBundle);
+        }
+    }
+
+    private final long mVersion;
+    private final PersistableBundle mBundle;
+
+    private SipDelegateImsConfiguration(long version, PersistableBundle bundle) {
+        mVersion = version;
+        mBundle = bundle;
+    }
+
+    private SipDelegateImsConfiguration(Parcel source) {
+        mVersion = source.readLong();
+        mBundle = source.readPersistableBundle();
+    }
+
+    /**
+     * @return {@code true} if this configuration object has a an entry for the key specified,
+     * {@code false} if it does not.
+     */
+    public boolean containsKey(@NonNull String key) {
+        return mBundle.containsKey(key);
+    }
+
+    /**
+     * @return the string value associated with a given key or {@code null} if it doesn't exist.
+     */
+    public @Nullable @StringConfigKey String getString(@NonNull String key) {
+        return mBundle.getString(key);
+    }
+
+    /**
+     * @return the integer value associated with a given key if it exists or the supplied default
+     * value if it does not.
+     */
+    public @IntConfigKey int getInt(@NonNull String key, int defaultValue) {
+        if (!mBundle.containsKey(key)) {
+            return defaultValue;
+        }
+        return mBundle.getInt(key);
+    }
+
+    /**
+     * @return the boolean value associated with a given key or the supplied default value if the
+     * value doesn't exist in the bundle.
+     */
+    public @BooleanConfigKey boolean getBoolean(@NonNull String key, boolean defaultValue) {
+        if (!mBundle.containsKey(key)) {
+            return defaultValue;
+        }
+        return mBundle.getBoolean(key);
+    }
+
+    /**
+     * @return a shallow copy of the full configuration.
+     */
+    public @NonNull PersistableBundle copyBundle() {
+        return new PersistableBundle(mBundle);
+    }
+
+    /**
+     * An integer representing the version number of this SipDelegateImsConfiguration.
+     * {@link SipMessage}s that are created using this configuration will also have a this
+     * version number associated with them, which will allow the IMS service to validate that the
+     * {@link SipMessage} was using the latest configuration during creation and not a stale
+     * configuration due to race conditions between the configuration being updated and the RCS
+     * application not receiving the updated configuration before generating a new message.
+     *
+     * @return the version number associated with this {@link SipDelegateImsConfiguration}.
+     */
+    public long getVersion() {
+        return mVersion;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel dest, int flags) {
+        dest.writeLong(mVersion);
+        dest.writePersistableBundle(mBundle);
+    }
+
+    public static final @NonNull Creator<SipDelegateImsConfiguration> CREATOR =
+            new Creator<SipDelegateImsConfiguration>() {
+        @Override
+        public SipDelegateImsConfiguration createFromParcel(Parcel source) {
+            return new SipDelegateImsConfiguration(source);
+        }
+
+        @Override
+        public SipDelegateImsConfiguration[] newArray(int size) {
+            return new SipDelegateImsConfiguration[size];
+        }
+    };
+}
diff --git a/telephony/java/android/telephony/ims/SipDelegateManager.java b/telephony/java/android/telephony/ims/SipDelegateManager.java
new file mode 100644
index 0000000..2ec88ff
--- /dev/null
+++ b/telephony/java/android/telephony/ims/SipDelegateManager.java
@@ -0,0 +1,375 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims;
+
+import android.Manifest;
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.RequiresPermission;
+import android.annotation.SystemApi;
+import android.content.Context;
+import android.os.RemoteException;
+import android.os.ServiceSpecificException;
+import android.telephony.BinderCacheManager;
+import android.telephony.CarrierConfigManager;
+import android.telephony.ims.aidl.IImsRcsController;
+import android.telephony.ims.aidl.SipDelegateConnectionAidlWrapper;
+import android.telephony.ims.stub.DelegateConnectionMessageCallback;
+import android.telephony.ims.stub.DelegateConnectionStateCallback;
+import android.telephony.ims.stub.SipDelegate;
+
+import com.android.internal.annotations.VisibleForTesting;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.concurrent.Executor;
+
+/**
+ * Manages the creation and destruction of SipDelegates for the {@link ImsService} managing IMS
+ * for the subscription ID that this SipDelegateManager has been created for.
+ *
+ * This allows multiple IMS applications to forward SIP messages to/from their application for the
+ * purposes of providing a single IMS registration to the carrier's IMS network from potentially
+ * many IMS stacks implementing a subset of the supported MMTEL/RCS features.
+ * @hide
+ */
+@SystemApi
+public class SipDelegateManager {
+
+    /**
+     * The SIP message has failed being sent or received for an unknown reason.
+     * <p>
+     * The caller should retry a message that failed with this response.
+     */
+    public static final int MESSAGE_FAILURE_REASON_UNKNOWN = 0;
+
+    /**
+     * The remote service associated with this connection has died and the message was not
+     * properly sent/received.
+     * <p>
+     * This is considered a permanent error and the system will automatically begin the teardown and
+     * destruction of the SipDelegate. No further messages should be sent on this transport.
+     */
+    public static final int MESSAGE_FAILURE_REASON_DELEGATE_DEAD = 1;
+
+    /**
+     * The message has not been sent/received because the delegate is in the process of closing and
+     * has become unavailable. No further messages should be sent/received on this delegate.
+     */
+    public static final int MESSAGE_FAILURE_REASON_DELEGATE_CLOSED = 2;
+
+    /**
+     * The SIP message has an invalid start line and the message can not be sent.
+     */
+    public static final int MESSAGE_FAILURE_REASON_INVALID_START_LINE = 3;
+
+    /**
+     * One or more of the header fields in the header section of the outgoing SIP message is invalid
+     * and the SIP message can not be sent.
+     */
+    public static final int MESSAGE_FAILURE_REASON_INVALID_HEADER_FIELDS = 4;
+
+    /**
+     * The body content of the SIP message is invalid and the message can not be sent.
+     */
+    public static final int MESSAGE_FAILURE_REASON_INVALID_BODY_CONTENT = 5;
+
+    /**
+     * The feature tag associated with the outgoing message does not match any known feature tags
+     * and this message can not be sent.
+     */
+    public static final int MESSAGE_FAILURE_REASON_INVALID_FEATURE_TAG = 6;
+
+    /**
+     * The feature tag associated with the outgoing message is not enabled for the associated
+     * SipDelegateConnection and can not be sent.
+     */
+    public static final int MESSAGE_FAILURE_REASON_TAG_NOT_ENABLED_FOR_DELEGATE = 7;
+
+    /**
+     * The link to the network has been lost and the outgoing message has failed to send.
+     * <p>
+     * This message should be retried when connectivity to the network is re-established. See
+     * {@link android.net.ConnectivityManager.NetworkCallback} for how this can be determined.
+     */
+    public static final int MESSAGE_FAILURE_REASON_NETWORK_NOT_AVAILABLE = 8;
+
+    /**
+     * The outgoing SIP message has not been sent due to the SipDelegate not being registered for
+     * IMS at this time.
+     * <p>
+     * This is considered a temporary failure, the message should not be retried until an IMS
+     * registration change callback is received via
+     * {@link DelegateConnectionStateCallback#onFeatureTagStatusChanged}
+     */
+    public static final int MESSAGE_FAILURE_REASON_NOT_REGISTERED = 9;
+
+    /**
+     * The outgoing SIP message has not been sent because the {@link SipDelegateImsConfiguration}
+     * version associated with the outgoing {@link SipMessage} is now stale and has failed
+     * validation checks.
+     * <p>
+     * The @link SipMessage} should be recreated using the newest
+     * {@link SipDelegateImsConfiguration} and sent again.
+     */
+    public static final int MESSAGE_FAILURE_REASON_STALE_IMS_CONFIGURATION = 10;
+
+    /**
+     * The outgoing SIP message has not been sent because the internal state of the associated
+     * {@link SipDelegate} is changing and has temporarily brought the transport down.
+     * <p>
+     * This is considered a temporary error and the {@link SipDelegateConnection} should resend the
+     * message once {@link DelegateRegistrationState#DEREGISTERING_REASON_FEATURE_TAGS_CHANGING} is
+     * no longer reported.
+     */
+    public static final int MESSAGE_FAILURE_REASON_INTERNAL_DELEGATE_STATE_TRANSITION = 11;
+
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = "MESSAGE_FAILURE_REASON_", value = {
+            MESSAGE_FAILURE_REASON_UNKNOWN,
+            MESSAGE_FAILURE_REASON_DELEGATE_DEAD,
+            MESSAGE_FAILURE_REASON_DELEGATE_CLOSED,
+            MESSAGE_FAILURE_REASON_INVALID_START_LINE,
+            MESSAGE_FAILURE_REASON_INVALID_HEADER_FIELDS,
+            MESSAGE_FAILURE_REASON_INVALID_BODY_CONTENT,
+            MESSAGE_FAILURE_REASON_INVALID_FEATURE_TAG,
+            MESSAGE_FAILURE_REASON_TAG_NOT_ENABLED_FOR_DELEGATE,
+            MESSAGE_FAILURE_REASON_NETWORK_NOT_AVAILABLE,
+            MESSAGE_FAILURE_REASON_NOT_REGISTERED,
+            MESSAGE_FAILURE_REASON_STALE_IMS_CONFIGURATION,
+            MESSAGE_FAILURE_REASON_INTERNAL_DELEGATE_STATE_TRANSITION
+    })
+    public @interface MessageFailureReason {}
+
+
+    /**
+     * Access to use this feature tag has been denied for an unknown reason.
+     */
+    public static final int DENIED_REASON_UNKNOWN = 0;
+
+    /**
+     * This feature tag is allowed to be used by this SipDelegateConnection, but it is in use by
+     * another SipDelegateConnection and can not be associated with this delegate. The feature tag
+     * will stay in this state until the feature tag is release by the other application.
+     */
+    public static final int DENIED_REASON_IN_USE_BY_ANOTHER_DELEGATE = 1;
+
+    /**
+     * Access to use this feature tag has been denied because this application does not have the
+     * permissions required to access this feature tag.
+     */
+    public static final int DENIED_REASON_NOT_ALLOWED = 2;
+
+    /**
+     * Access to use this feature tag has been denied because single registration is not allowed by
+     * the carrier at this time. The application should fall back to dual registration if
+     * applicable.
+     */
+    public static final int DENIED_REASON_SINGLE_REGISTRATION_NOT_ALLOWED = 3;
+
+    /**
+     * This feature tag is not recognized as a valid feature tag by the SipDelegate and has been
+     * denied.
+     */
+    public static final int DENIED_REASON_INVALID = 4;
+
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = "DENIED_REASON_", value = {
+            DENIED_REASON_UNKNOWN,
+            DENIED_REASON_IN_USE_BY_ANOTHER_DELEGATE,
+            DENIED_REASON_NOT_ALLOWED,
+            DENIED_REASON_SINGLE_REGISTRATION_NOT_ALLOWED,
+            DENIED_REASON_INVALID
+    })
+    public @interface DeniedReason {}
+
+    /**
+     * The SipDelegate has closed due to an unknown reason.
+     */
+    public static final int SIP_DELEGATE_DESTROY_REASON_UNKNOWN = 0;
+
+    /**
+     * The SipDelegate has closed because the IMS service has died unexpectedly.
+     */
+    public static final int SIP_DELEGATE_DESTROY_REASON_SERVICE_DEAD = 1;
+
+    /**
+     * The SipDelegate has closed because the IMS application has requested that the connection be
+     * destroyed.
+     */
+    public static final int SIP_DELEGATE_DESTROY_REASON_REQUESTED_BY_APP = 2;
+
+    /**
+     * The SipDelegate has been closed due to the user disabling RCS.
+     */
+    public static final int SIP_DELEGATE_DESTROY_REASON_USER_DISABLED_RCS = 3;
+
+    /**
+     * The SipDelegate has been closed due to the subscription associated with this delegate being
+     * torn down.
+     */
+    public static final int SIP_DELEGATE_DESTROY_REASON_SUBSCRIPTION_TORN_DOWN = 4;
+
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = "SIP_DELEGATE_DESTROY_REASON", value = {
+            SIP_DELEGATE_DESTROY_REASON_UNKNOWN,
+            SIP_DELEGATE_DESTROY_REASON_SERVICE_DEAD,
+            SIP_DELEGATE_DESTROY_REASON_REQUESTED_BY_APP,
+            SIP_DELEGATE_DESTROY_REASON_USER_DISABLED_RCS,
+            SIP_DELEGATE_DESTROY_REASON_SUBSCRIPTION_TORN_DOWN
+    })
+    public @interface SipDelegateDestroyReason {}
+
+    private final Context mContext;
+    private final int mSubId;
+    private final BinderCacheManager<IImsRcsController> mBinderCache;
+
+    /**
+     * Only visible for testing. To instantiate an instance of this class, please use
+     * {@link ImsManager#getSipDelegateManager(int)}.
+     * @hide
+     */
+    @VisibleForTesting
+    public SipDelegateManager(Context context, int subId,
+            BinderCacheManager<IImsRcsController> binderCache) {
+        mContext = context;
+        mSubId = subId;
+        mBinderCache = binderCache;
+    }
+
+    /**
+     * Determines if creating SIP delegates are supported for the subscription specified.
+     * <p>
+     * If SIP delegates are not supported on this device or the carrier associated with this
+     * subscription, creating a SIP delegate will always fail, as this feature is not supported.
+     * @return true if this device supports creating a SIP delegate and the carrier associated with
+     * this subscription supports single registration, false if creating SIP delegates is not
+     * supported.
+     * @throws ImsException If the remote ImsService is not available for any reason or the
+     * subscription associated with this instance is no longer active. See
+     * {@link ImsException#getCode()} for more information.
+     *
+     * @see CarrierConfigManager.Ims#KEY_IMS_SINGLE_REGISTRATION_REQUIRED_BOOL
+     */
+    @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
+    public boolean isSupported() throws ImsException {
+        try {
+            IImsRcsController controller = mBinderCache.getBinder();
+            if (controller == null) {
+                throw new ImsException("Telephony server is down",
+                        ImsException.CODE_ERROR_SERVICE_UNAVAILABLE);
+            }
+            return controller.isSipDelegateSupported(mSubId);
+        } catch (ServiceSpecificException e) {
+            throw new ImsException(e.getMessage(), e.errorCode);
+        } catch (RemoteException e) {
+            throw new ImsException(e.getMessage(),
+                    ImsException.CODE_ERROR_SERVICE_UNAVAILABLE);
+        }
+    }
+
+    /**
+     * Request that the ImsService implementation create a SipDelegate, which will configure the
+     * ImsService to forward SIP traffic that matches the filtering criteria set in supplied
+     * {@link DelegateRequest} to the application that the supplied callbacks are registered for.
+     * <p>
+     * This API requires that the caller is running as part of a long-running process and will
+     * always be available to handle incoming messages. One mechanism that can be used for this is
+     * the {@link android.service.carrier.CarrierMessagingClientService}, which the framework keeps
+     * a persistent binding to when the app is the default SMS application.
+     * <p>
+     * Note: the ability to create SipDelegates is only available applications running as the
+     * primary user.
+     * @param request The parameters that are associated with the SipDelegate creation request that
+     *                will be used to create the SipDelegate connection.
+     * @param executor The executor that will be used to call the callbacks associated with this
+     *          SipDelegate.
+     * @param dc The callback that will be used to notify the listener of the creation/destruction
+     *           of the remote SipDelegate as well as changes to the state of the remote SipDelegate
+     *           connection.
+     * @param mc The callback that will be used to notify the listener of new incoming SIP messages
+     *           as well as the status of messages that were sent by the associated
+     *           SipDelegateConnection.
+     * @throws ImsException Thrown if there was a problem communicating with the ImsService
+     * associated with this SipDelegateManager. See {@link ImsException#getCode()}.
+     */
+    @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
+    public void createSipDelegate(@NonNull DelegateRequest request, @NonNull Executor executor,
+            @NonNull DelegateConnectionStateCallback dc,
+            @NonNull DelegateConnectionMessageCallback mc) throws ImsException {
+        if (request == null || executor == null || dc == null || mc == null) {
+            throw new IllegalArgumentException("Invalid arguments passed into createSipDelegate");
+        }
+        try {
+            SipDelegateConnectionAidlWrapper wrapper =
+                    new SipDelegateConnectionAidlWrapper(executor, dc, mc);
+            IImsRcsController controller = mBinderCache.listenOnBinder(wrapper,
+                    wrapper::binderDied);
+            if (controller == null) {
+                throw new ImsException("Telephony server is down",
+                        ImsException.CODE_ERROR_SERVICE_UNAVAILABLE);
+            }
+            controller.createSipDelegate(mSubId, request, mContext.getOpPackageName(),
+                    wrapper.getStateCallbackBinder(), wrapper.getMessageCallbackBinder());
+        } catch (ServiceSpecificException e) {
+            throw new ImsException(e.getMessage(), e.errorCode);
+        } catch (RemoteException e) {
+            throw new ImsException(e.getMessage(),
+                    ImsException.CODE_ERROR_SERVICE_UNAVAILABLE);
+        }
+    }
+
+    /**
+     * Destroy a previously created {@link SipDelegateConnection} that was created using
+     * {@link #createSipDelegate}.
+     * <p>
+     * This will also clean up all related callbacks in the associated ImsService.
+     * @param delegateConnection The SipDelegateConnection to destroy.
+     * @param reason The reason for why this SipDelegateConnection was destroyed.
+     */
+    @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
+    public void destroySipDelegate(@NonNull SipDelegateConnection delegateConnection,
+            @SipDelegateDestroyReason int reason) {
+
+        if (delegateConnection == null) {
+            throw new IllegalArgumentException("invalid argument passed into destroySipDelegate");
+        }
+        if (delegateConnection instanceof SipDelegateConnectionAidlWrapper) {
+            SipDelegateConnectionAidlWrapper w =
+                    (SipDelegateConnectionAidlWrapper) delegateConnection;
+            try {
+                IImsRcsController c = mBinderCache.removeRunnable(w);
+                c.destroySipDelegate(mSubId, w.getSipDelegateBinder(), reason);
+            } catch (RemoteException e) {
+                // Connection to telephony died, but this will signal destruction of SipDelegate
+                // eventually anyway, so return normally.
+                try {
+                    w.getStateCallbackBinder().onDestroyed(
+                            SipDelegateManager.SIP_DELEGATE_DESTROY_REASON_REQUESTED_BY_APP);
+                } catch (RemoteException ignore) {
+                    // Local to process.
+                }
+            }
+        } else {
+            throw new IllegalArgumentException("Unknown SipDelegateConnection implementation passed"
+                    + " into this method");
+        }
+    }
+}
diff --git a/telephony/java/android/telephony/ims/SipMessage.aidl b/telephony/java/android/telephony/ims/SipMessage.aidl
new file mode 100644
index 0000000..5140f8a
--- /dev/null
+++ b/telephony/java/android/telephony/ims/SipMessage.aidl
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims;
+
+parcelable SipMessage;
diff --git a/telephony/java/android/telephony/ims/SipMessage.java b/telephony/java/android/telephony/ims/SipMessage.java
new file mode 100644
index 0000000..1539224
--- /dev/null
+++ b/telephony/java/android/telephony/ims/SipMessage.java
@@ -0,0 +1,177 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims;
+
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
+import android.os.Build;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.util.Arrays;
+import java.util.Objects;
+
+/**
+ * Represents a partially encoded SIP message. See RFC 3261 for more information on how SIP
+ * messages are structured and used.
+ * <p>
+ * The SIP message is represented in a partially encoded form in order to allow for easier
+ * verification and should not be used as a generic SIP message container.
+ * @hide
+ */
+@SystemApi
+public final class SipMessage implements Parcelable {
+    // Should not be set to true for production!
+    private static final boolean IS_DEBUGGING = Build.IS_ENG;
+
+    private static final String[] SIP_REQUEST_METHODS = new String[] {"INVITE", "ACK", "OPTIONS",
+            "BYE", "CANCEL", "REGISTER"};
+
+    private final String mStartLine;
+    private final String mHeaderSection;
+    private final byte[] mContent;
+
+    /**
+     * Represents a partially encoded SIP message.
+     *
+     * @param startLine The start line of the message, containing either the request-line or
+     *                  status-line.
+     * @param headerSection A String containing the full unencoded SIP message header.
+     * @param content UTF-8 encoded SIP message body.
+     */
+    public SipMessage(@NonNull String startLine, @NonNull String headerSection,
+            @NonNull byte[] content) {
+        if (startLine == null || headerSection == null || content == null) {
+            throw new IllegalArgumentException("One or more null parameters entered");
+        }
+        mStartLine = startLine;
+        mHeaderSection = headerSection;
+        mContent = content;
+    }
+
+    /**
+     * Private constructor used only for unparcelling.
+     */
+    private SipMessage(Parcel source) {
+        mStartLine = source.readString();
+        mHeaderSection = source.readString();
+        mContent = new byte[source.readInt()];
+        source.readByteArray(mContent);
+    }
+    /**
+     * @return The start line of the SIP message, which contains either the request-line or
+     * status-line.
+     */
+    public @NonNull String getStartLine() {
+        return mStartLine;
+    }
+
+    /**
+     * @return The full, unencoded header section of the SIP message.
+     */
+    public @NonNull String getHeaderSection() {
+        return mHeaderSection;
+    }
+
+    /**
+     * @return only the UTF-8 encoded SIP message body.
+     */
+    public @NonNull byte[] getContent() {
+        return mContent;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel dest, int flags) {
+        dest.writeString(mStartLine);
+        dest.writeString(mHeaderSection);
+        dest.writeInt(mContent.length);
+        dest.writeByteArray(mContent);
+    }
+
+    public static final @NonNull Creator<SipMessage> CREATOR = new Creator<SipMessage>() {
+        @Override
+        public SipMessage createFromParcel(Parcel source) {
+            return new SipMessage(source);
+        }
+
+        @Override
+        public SipMessage[] newArray(int size) {
+            return new SipMessage[size];
+        }
+    };
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder();
+        b.append("StartLine: [");
+        if (IS_DEBUGGING) {
+            b.append(mStartLine);
+        } else {
+            b.append(sanitizeStartLineRequest(mStartLine));
+        }
+        b.append("], [");
+        b.append("Header: [");
+        if (IS_DEBUGGING) {
+            b.append(mHeaderSection);
+        } else {
+            // only identify transaction id/call ID when it is available.
+            b.append("***");
+        }
+        b.append("], ");
+        b.append("Content: [NOT SHOWN]");
+        return b.toString();
+    }
+
+    /**
+     * Start lines containing requests are formatted: METHOD SP Request-URI SP SIP-Version CRLF.
+     * Detect if this is a REQUEST and redact Request-URI portion here, as it contains PII.
+     */
+    private String sanitizeStartLineRequest(String startLine) {
+        String[] splitLine = startLine.split(" ");
+        if (splitLine == null || splitLine.length == 0)  {
+            return "(INVALID STARTLINE)";
+        }
+        for (String method : SIP_REQUEST_METHODS) {
+            if (splitLine[0].contains(method)) {
+                return splitLine[0] + " <Request-URI> " + splitLine[2];
+            }
+        }
+        return startLine;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        SipMessage that = (SipMessage) o;
+        return mStartLine.equals(that.mStartLine)
+                && mHeaderSection.equals(that.mHeaderSection)
+                && Arrays.equals(mContent, that.mContent);
+    }
+
+    @Override
+    public int hashCode() {
+        int result = Objects.hash(mStartLine, mHeaderSection);
+        result = 31 * result + Arrays.hashCode(mContent);
+        return result;
+    }
+}
diff --git a/telephony/java/android/telephony/ims/aidl/ICapabilityExchangeEventListener.aidl b/telephony/java/android/telephony/ims/aidl/ICapabilityExchangeEventListener.aidl
new file mode 100644
index 0000000..a4ffbef
--- /dev/null
+++ b/telephony/java/android/telephony/ims/aidl/ICapabilityExchangeEventListener.aidl
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims.aidl;
+
+import android.net.Uri;
+import android.telephony.ims.aidl.IOptionsRequestCallback;
+
+import java.util.List;
+
+/**
+ * Listener interface for the ImsService to use to notify the framework of UCE events.
+ * {@hide}
+ */
+oneway interface ICapabilityExchangeEventListener {
+    /**
+     * Trigger the framework to provide a capability update using
+     * {@link RcsCapabilityExchangeImplBase#publishCapabilities}.
+     * <p>
+     * This is typically used when trying to generate an initial PUBLISH for a new
+     * subscription to the network. The device will cache all presence publications
+     * after boot until this method is called the first time.
+     * @param publishTriggerType {@link StackPublishTriggerType} The reason for the
+     * capability update request.
+     * @throws ImsException If this {@link RcsPresenceExchangeImplBase} instance is
+     * not currently connected to the framework. This can happen if the
+     * {@link RcsFeature} is not {@link ImsFeature#STATE_READY} and the
+     * {@link RcsFeature} has not received the
+     * {@link ImsFeature#onFeatureReady()} callback. This may also happen in rare
+     * cases when the Telephony stack has crashed.
+     */
+    void onRequestPublishCapabilities(int publishTriggerType);
+
+    /**
+     * Notify the framework that the device's capabilities have been unpublished from the network.
+     *
+     * @throws ImsException If this {@link RcsPresenceExchangeImplBase} instance is not currently
+     * connected to the framework. This can happen if the {@link RcsFeature} is not
+     * {@link ImsFeature#STATE_READY} and the {@link RcsFeature} has not received the
+     * {@link ImsFeature#onFeatureReady()} callback. This may also happen in rare cases when the
+     * Telephony stack has crashed.
+     */
+    void onUnpublish();
+
+    /**
+     * Inform the framework of a query for this device's UCE capabilities.
+     * <p>
+     * The framework will respond via the
+     * {@link IOptionsRequestCallback#respondToCapabilityRequest} or
+     * {@link IOptionsRequestCallback#respondToCapabilityRequestWithError} method.
+     * @param contactUri The URI associated with the remote contact that is requesting capabilities.
+     * @param remoteCapabilities The remote contact's capability information.
+     * @throws ImsException If this {@link RcsSipOptionsImplBase} instance is not currently
+     * connected to the framework. This can happen if the {@link RcsFeature} is not
+     * {@link ImsFeature#STATE_READY} and the {@link RcsFeature} has not received
+     * the {@link ImsFeature#onFeatureReady()} callback. This may also happen in rare cases when
+     * the Telephony stack has crashed.
+     */
+    void onRemoteCapabilityRequest(in Uri contactUri,
+            in List<String> remoteCapabilities,
+            IOptionsRequestCallback cb);
+}
diff --git a/telephony/java/android/telephony/ims/aidl/IImsCallSessionListener.aidl b/telephony/java/android/telephony/ims/aidl/IImsCallSessionListener.aidl
index 36d2067..ed895b7 100644
--- a/telephony/java/android/telephony/ims/aidl/IImsCallSessionListener.aidl
+++ b/telephony/java/android/telephony/ims/aidl/IImsCallSessionListener.aidl
@@ -21,9 +21,12 @@
 import android.telephony.ims.ImsCallProfile;
 import android.telephony.ims.ImsReasonInfo;
 import android.telephony.ims.ImsConferenceState;
+import android.telephony.ims.RtpHeaderExtension;
 import com.android.ims.internal.IImsCallSession;
 import android.telephony.ims.ImsSuppServiceNotification;
 
+import java.util.List;
+
 /**
  * A listener type for receiving notification on IMS call session events.
  * When an event is generated for an {@link IImsCallSession}, the application is notified
@@ -153,9 +156,17 @@
     void callSessionTransferred();
     void callSessionTransferFailed(in ImsReasonInfo reasonInfo);
 
+    void callSessionDtmfReceived(char dtmf);
+
     /**
      * Notifies of a change to the call quality.
      * @param callQuality then updated call quality
      */
     void callQualityChanged(in CallQuality callQuality);
+
+    /**
+     * Notifies of incoming RTP header extensions from the network.
+     * @param extensions the RTP header extensions received.
+     */
+    void callSessionRtpHeaderExtensionsReceived(in List<RtpHeaderExtension> extensions);
 }
diff --git a/telephony/java/android/telephony/ims/aidl/IImsMmTelFeature.aidl b/telephony/java/android/telephony/ims/aidl/IImsMmTelFeature.aidl
index b9a6b3c..37fec7a 100644
--- a/telephony/java/android/telephony/ims/aidl/IImsMmTelFeature.aidl
+++ b/telephony/java/android/telephony/ims/aidl/IImsMmTelFeature.aidl
@@ -21,6 +21,7 @@
 import android.telephony.ims.aidl.IImsSmsListener;
 import android.telephony.ims.aidl.IImsCapabilityCallback;
 import android.telephony.ims.feature.CapabilityChangeRequest;
+import android.telephony.ims.RtpHeaderExtensionType;
 
 import android.telephony.ims.ImsCallProfile;
 import com.android.ims.internal.IImsCallSession;
@@ -29,6 +30,8 @@
 import com.android.ims.internal.IImsRegistrationListener;
 import com.android.ims.internal.IImsUt;
 
+import java.util.List;
+
 /**
  * See MmTelFeature for more information.
  * {@hide}
@@ -37,6 +40,7 @@
     void setListener(IImsMmTelListener l);
     int getFeatureState();
     ImsCallProfile createCallProfile(int callSessionType, int callType);
+    void changeOfferedRtpHeaderExtensionTypes(in List<RtpHeaderExtensionType> types);
     IImsCallSession createCallSession(in ImsCallProfile profile);
     int shouldProcessCall(in String[] uris);
     IImsUt getUtInterface();
diff --git a/telephony/java/android/telephony/ims/aidl/IImsMmTelListener.aidl b/telephony/java/android/telephony/ims/aidl/IImsMmTelListener.aidl
index 7bbe30a..5246470 100644
--- a/telephony/java/android/telephony/ims/aidl/IImsMmTelListener.aidl
+++ b/telephony/java/android/telephony/ims/aidl/IImsMmTelListener.aidl
@@ -27,8 +27,11 @@
  * See MmTelFeature#Listener for more information.
  * {@hide}
  */
-oneway interface IImsMmTelListener {
+ // This interface is not considered oneway because we need to ensure that these operations are
+ // processed by telephony before the control flow returns to the ImsService to perform
+ // operations on the IImsCallSession.
+interface IImsMmTelListener {
     void onIncomingCall(IImsCallSession c, in Bundle extras);
     void onRejectedCall(in ImsCallProfile callProfile, in ImsReasonInfo reason);
-    void onVoiceMessageCountUpdate(int count);
+    oneway void onVoiceMessageCountUpdate(int count);
 }
diff --git a/telephony/java/android/telephony/ims/aidl/IImsRcsController.aidl b/telephony/java/android/telephony/ims/aidl/IImsRcsController.aidl
index 9e46142..c6d9a86 100644
--- a/telephony/java/android/telephony/ims/aidl/IImsRcsController.aidl
+++ b/telephony/java/android/telephony/ims/aidl/IImsRcsController.aidl
@@ -17,11 +17,18 @@
 package android.telephony.ims.aidl;
 
 import android.net.Uri;
+import android.telephony.ims.DelegateRequest;
 import android.telephony.ims.aidl.IImsCapabilityCallback;
+import android.telephony.ims.aidl.IImsRegistrationCallback;
 import android.telephony.ims.aidl.IRcsUceControllerCallback;
 import android.telephony.ims.aidl.IRcsUcePublishStateCallback;
-import android.telephony.ims.aidl.IImsRegistrationCallback;
+import android.telephony.ims.aidl.IRcsUcePublishStateCallback;
+import android.telephony.ims.aidl.ISipDelegate;
+import android.telephony.ims.aidl.ISipDelegateMessageCallback;
+import android.telephony.ims.aidl.ISipDelegateConnectionStateCallback;
 
+import com.android.ims.ImsFeatureContainer;
+import com.android.ims.internal.IImsServiceFeatureCallback;
 import com.android.internal.telephony.IIntegerConsumer;
 
 /**
@@ -45,9 +52,23 @@
     // ImsUceAdapter specific
     void requestCapabilities(int subId, String callingPackage, String callingFeatureId,
             in List<Uri> contactNumbers, IRcsUceControllerCallback c);
+    void requestNetworkAvailability(int subId, String callingPackage,
+            String callingFeatureId, in Uri contactNumber,
+            IRcsUceControllerCallback c);
     int getUcePublishState(int subId);
     boolean isUceSettingEnabled(int subId, String callingPackage, String callingFeatureId);
     void setUceSettingEnabled(int subId, boolean isEnabled);
     void registerUcePublishStateCallback(int subId, IRcsUcePublishStateCallback c);
     void unregisterUcePublishStateCallback(int subId, IRcsUcePublishStateCallback c);
+
+    // SipDelegateManager
+    boolean isSipDelegateSupported(int subId);
+    void createSipDelegate(int subId, in DelegateRequest request, String packageName,
+            ISipDelegateConnectionStateCallback delegateState,
+            ISipDelegateMessageCallback delegateMessage);
+    void destroySipDelegate(int subId, ISipDelegate connection, int reason);
+
+    // Internal commands that should not be made public
+    void registerRcsFeatureCallback(int slotId, in IImsServiceFeatureCallback callback);
+    void unregisterImsFeatureCallback(in IImsServiceFeatureCallback callback);
 }
diff --git a/telephony/java/android/telephony/ims/aidl/IImsRcsFeature.aidl b/telephony/java/android/telephony/ims/aidl/IImsRcsFeature.aidl
index 4b98b79..b47e3c7 100644
--- a/telephony/java/android/telephony/ims/aidl/IImsRcsFeature.aidl
+++ b/telephony/java/android/telephony/ims/aidl/IImsRcsFeature.aidl
@@ -18,8 +18,12 @@
 
 import android.net.Uri;
 import android.telephony.ims.RcsContactUceCapability;
+import android.telephony.ims.aidl.ICapabilityExchangeEventListener;
 import android.telephony.ims.aidl.IImsCapabilityCallback;
+import android.telephony.ims.aidl.IOptionsResponseCallback;
+import android.telephony.ims.aidl.IPublishResponseCallback;
 import android.telephony.ims.aidl.IRcsFeatureListener;
+import android.telephony.ims.aidl.ISubscribeResponseCallback;
 import android.telephony.ims.feature.CapabilityChangeRequest;
 
 import java.util.List;
@@ -40,6 +44,12 @@
             IImsCapabilityCallback c);
     oneway void queryCapabilityConfiguration(int capability, int radioTech,
             IImsCapabilityCallback c);
+    // RcsCapabilityExchangeImplBase specific api
+    oneway void setCapabilityExchangeEventListener(ICapabilityExchangeEventListener listener);
+    oneway void publishCapabilities(in String pidfXml, IPublishResponseCallback cb);
+    oneway void subscribeForCapabilities(in List<Uri> uris, ISubscribeResponseCallback cb);
+    oneway void sendOptionsCapabilityRequest(in Uri contactUri,
+            in List<String> myCapabilities, IOptionsResponseCallback cb);
     // RcsPresenceExchangeImplBase specific api
     oneway void requestCapabilities(in List<Uri> uris, int operationToken);
     oneway void updateCapabilities(in RcsContactUceCapability capabilities, int operationToken);
@@ -50,4 +60,4 @@
             in RcsContactUceCapability ownCapabilities, int operationToken);
     oneway void respondToCapabilityRequestWithError(in Uri contactUri, int code, in String reason,
             int operationToken);
-}
\ No newline at end of file
+}
diff --git a/telephony/java/android/telephony/ims/aidl/IImsServiceController.aidl b/telephony/java/android/telephony/ims/aidl/IImsServiceController.aidl
index c956cbc..c6966b3 100644
--- a/telephony/java/android/telephony/ims/aidl/IImsServiceController.aidl
+++ b/telephony/java/android/telephony/ims/aidl/IImsServiceController.aidl
@@ -21,6 +21,7 @@
 import android.telephony.ims.aidl.IImsConfig;
 import android.telephony.ims.aidl.IImsRegistration;
 import android.telephony.ims.aidl.IImsServiceControllerListener;
+import android.telephony.ims.aidl.ISipTransport;
 import android.telephony.ims.stub.ImsFeatureConfiguration;
 
 import com.android.ims.internal.IImsFeatureStatusCallback;
@@ -34,6 +35,7 @@
     IImsMmTelFeature createMmTelFeature(int slotId);
     IImsRcsFeature createRcsFeature(int slotId);
     ImsFeatureConfiguration querySupportedImsFeatures();
+    long getImsServiceCapabilities();
     void addFeatureStatusCallback(int slotId, int featureType, in IImsFeatureStatusCallback c);
     void removeFeatureStatusCallback(int slotId, int featureType, in IImsFeatureStatusCallback c);
     // Synchronous call to ensure the ImsService is ready before continuing with feature creation.
@@ -41,6 +43,7 @@
     void removeImsFeature(int slotId, int featureType);
     IImsConfig getConfig(int slotId);
     IImsRegistration getRegistration(int slotId);
+    ISipTransport getSipTransport(int slotId);
     oneway void enableIms(int slotId);
     oneway void disableIms(int slotId);
 }
diff --git a/telephony/java/android/telephony/ims/aidl/IOptionsRequestCallback.aidl b/telephony/java/android/telephony/ims/aidl/IOptionsRequestCallback.aidl
new file mode 100644
index 0000000..d55670d
--- /dev/null
+++ b/telephony/java/android/telephony/ims/aidl/IOptionsRequestCallback.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims.aidl;
+
+import android.telephony.ims.RcsContactUceCapability;
+
+/**
+ * Interface used by the framework to respond to OPTIONS requests.
+ * {@hide}
+ */
+oneway interface IOptionsRequestCallback {
+    /**
+     * Respond to a remote capability request from the contact specified with the capabilities
+     * of this device.
+     * @param ownCapabilities The capabilities of this device.
+     */
+    void respondToCapabilityRequest(in RcsContactUceCapability ownCapabilities);
+
+    /**
+     * Respond to a remote capability request from the contact specified with the
+     * specified error.
+     * @param contactUri A URI containing the remote contact.
+     * @param code The SIP response code to respond with.
+     * @param reason A non-null String containing the reason associated with the SIP code.
+     */
+    void respondToCapabilityRequestWithError(int code, String reason);
+}
diff --git a/telephony/java/android/telephony/ims/aidl/IOptionsResponseCallback.aidl b/telephony/java/android/telephony/ims/aidl/IOptionsResponseCallback.aidl
new file mode 100644
index 0000000..a8c8329
--- /dev/null
+++ b/telephony/java/android/telephony/ims/aidl/IOptionsResponseCallback.aidl
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims.aidl;
+
+import java.util.List;
+
+/**
+ * Interface used by the framework to receive the response from the remote user
+ * through {@link RcsCapabilityExchangeImplBase#sendOptionsCapabilityRequest}
+ * {@hide}
+ */
+oneway interface IOptionsResponseCallback {
+    void onCommandError(int code);
+    void onNetworkResponse(int code, String reason, in List<String> theirCaps);
+}
diff --git a/telephony/java/android/telephony/ims/aidl/IPublishResponseCallback.aidl b/telephony/java/android/telephony/ims/aidl/IPublishResponseCallback.aidl
new file mode 100644
index 0000000..481e7f8
--- /dev/null
+++ b/telephony/java/android/telephony/ims/aidl/IPublishResponseCallback.aidl
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims.aidl;
+
+import java.util.List;
+
+/**
+ * Interface used by the framework to receive the response of the publish
+ * request through {@link RcsCapabilityExchangeImplBase#publishCapabilities}
+ * {@hide}
+ */
+oneway interface IPublishResponseCallback {
+    void onCommandError(int code);
+    void onNetworkResponse(int code, String reason);
+}
diff --git a/telephony/java/android/telephony/ims/aidl/IRcsUceControllerCallback.aidl b/telephony/java/android/telephony/ims/aidl/IRcsUceControllerCallback.aidl
index 5975930..0f627b9 100644
--- a/telephony/java/android/telephony/ims/aidl/IRcsUceControllerCallback.aidl
+++ b/telephony/java/android/telephony/ims/aidl/IRcsUceControllerCallback.aidl
@@ -25,5 +25,6 @@
  */
 oneway interface IRcsUceControllerCallback {
     void onCapabilitiesReceived(in List<RcsContactUceCapability> contactCapabilities);
-    void onError(int errorCode);
+    void onComplete();
+    void onError(int errorCode, long retryAfterMilliseconds);
 }
diff --git a/telephony/java/android/telephony/ims/aidl/ISipDelegate.aidl b/telephony/java/android/telephony/ims/aidl/ISipDelegate.aidl
new file mode 100644
index 0000000..5d6766a6
--- /dev/null
+++ b/telephony/java/android/telephony/ims/aidl/ISipDelegate.aidl
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims.aidl;
+
+import android.telephony.ims.SipMessage;
+
+/**
+ * See {@link SipDelegate} and {@link SipDelegateConnection} for docs regarding this callback.
+ * {@hide}
+ */
+oneway interface ISipDelegate {
+    void sendMessage(in SipMessage sipMessage, long configVersion);
+    void notifyMessageReceived(in String viaTransactionId);
+    void notifyMessageReceiveError(in String viaTransactionId, int reason);
+
+    // only used by SipDelegate.
+    void closeDialog(in String callId);
+}
diff --git a/telephony/java/android/telephony/ims/aidl/ISipDelegateConnectionStateCallback.aidl b/telephony/java/android/telephony/ims/aidl/ISipDelegateConnectionStateCallback.aidl
new file mode 100644
index 0000000..ddfcb99
--- /dev/null
+++ b/telephony/java/android/telephony/ims/aidl/ISipDelegateConnectionStateCallback.aidl
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims.aidl;
+
+import android.telephony.ims.DelegateRegistrationState;
+import android.telephony.ims.FeatureTagState;
+import android.telephony.ims.SipDelegateImsConfiguration;
+import android.telephony.ims.aidl.ISipDelegate;
+
+/**
+ * See {@link SipDelegateConnectionStateCallback} for docs regarding this callback.
+ * {@hide}
+ */
+oneway interface ISipDelegateConnectionStateCallback {
+    void onCreated(ISipDelegate c);
+    void onFeatureTagStatusChanged(in DelegateRegistrationState registrationState,
+                in List<FeatureTagState> deniedFeatureTags);
+    void onImsConfigurationChanged(in SipDelegateImsConfiguration registeredSipConfig);
+    void onDestroyed(int reason);
+}
diff --git a/telephony/java/android/telephony/ims/aidl/ISipDelegateMessageCallback.aidl b/telephony/java/android/telephony/ims/aidl/ISipDelegateMessageCallback.aidl
new file mode 100644
index 0000000..30b7d6c
--- /dev/null
+++ b/telephony/java/android/telephony/ims/aidl/ISipDelegateMessageCallback.aidl
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims.aidl;
+
+import android.telephony.ims.SipMessage;
+
+/**
+ * See {@link DelegateMessageCallback} and {@link DelegateConnectionMessageCallback} for docs
+ * regarding this callback.
+ * {@hide}
+ */
+oneway interface ISipDelegateMessageCallback {
+   void onMessageReceived(in SipMessage message);
+   void onMessageSent(in String viaTransactionId);
+   void onMessageSendFailure(in String viaTransactionId, int reason);
+}
diff --git a/telephony/java/android/telephony/ims/aidl/ISipDelegateStateCallback.aidl b/telephony/java/android/telephony/ims/aidl/ISipDelegateStateCallback.aidl
new file mode 100644
index 0000000..609ee26
--- /dev/null
+++ b/telephony/java/android/telephony/ims/aidl/ISipDelegateStateCallback.aidl
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims.aidl;
+
+import android.telephony.ims.DelegateRegistrationState;
+import android.telephony.ims.FeatureTagState;
+import android.telephony.ims.SipDelegateImsConfiguration;
+import android.telephony.ims.aidl.ISipDelegate;
+
+/**
+ * See {@link SipDelegateStateCallback} for docs regarding this callback.
+ * {@hide}
+ */
+oneway interface ISipDelegateStateCallback {
+    void onCreated(ISipDelegate c, in List<FeatureTagState> deniedFeatureTags);
+    void onFeatureTagRegistrationChanged(in DelegateRegistrationState registrationState);
+    void onImsConfigurationChanged(in SipDelegateImsConfiguration registeredSipConfig);
+    void onDestroyed(int reason);
+}
diff --git a/telephony/java/android/telephony/ims/aidl/ISipTransport.aidl b/telephony/java/android/telephony/ims/aidl/ISipTransport.aidl
new file mode 100644
index 0000000..3438587
--- /dev/null
+++ b/telephony/java/android/telephony/ims/aidl/ISipTransport.aidl
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims.aidl;
+
+import android.telephony.ims.DelegateRequest;
+import android.telephony.ims.aidl.ISipDelegate;
+import android.telephony.ims.aidl.ISipDelegateMessageCallback;
+import android.telephony.ims.aidl.ISipDelegateStateCallback;
+
+/**
+ * Interface for commands to the SIP Transport implementation.
+ * {@hide}
+ */
+oneway interface ISipTransport {
+    void createSipDelegate(int subId, in DelegateRequest request, ISipDelegateStateCallback dc,
+            ISipDelegateMessageCallback mc);
+    void destroySipDelegate(ISipDelegate delegate, int reason);
+}
diff --git a/telephony/java/android/telephony/ims/aidl/ISubscribeResponseCallback.aidl b/telephony/java/android/telephony/ims/aidl/ISubscribeResponseCallback.aidl
new file mode 100644
index 0000000..4deaba1
--- /dev/null
+++ b/telephony/java/android/telephony/ims/aidl/ISubscribeResponseCallback.aidl
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims.aidl;
+
+import android.net.Uri;
+import android.telephony.ims.RcsContactTerminatedReason;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Interface used by the framework to receive the response of the subscribe
+ * request through {@link RcsCapabilityExchangeImplBase#subscribeForCapabilities}
+ * {@hide}
+ */
+oneway interface ISubscribeResponseCallback {
+    void onCommandError(int code);
+    void onNetworkResponse(int code, in String reason);
+    void onNotifyCapabilitiesUpdate(in List<String> pidfXmls);
+    void onResourceTerminated(in List<RcsContactTerminatedReason> uriTerminatedReason);
+    void onTerminated(in String reason, in String retryAfter);
+}
diff --git a/telephony/java/android/telephony/ims/aidl/RcsOptionsResponseAidlWrapper.java b/telephony/java/android/telephony/ims/aidl/RcsOptionsResponseAidlWrapper.java
new file mode 100644
index 0000000..47a96af
--- /dev/null
+++ b/telephony/java/android/telephony/ims/aidl/RcsOptionsResponseAidlWrapper.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims.aidl;
+
+import android.os.RemoteException;
+import android.telephony.ims.ImsException;
+import android.telephony.ims.stub.RcsCapabilityExchangeImplBase.OptionsResponseCallback;
+
+import java.util.List;
+
+/**
+ * Implementation of the callback OptionsResponseCallback by wrapping the internal AIDL from
+ * telephony.
+ * @hide
+ */
+public class RcsOptionsResponseAidlWrapper implements OptionsResponseCallback {
+
+    private final IOptionsResponseCallback mResponseBinder;
+
+    public RcsOptionsResponseAidlWrapper(IOptionsResponseCallback responseBinder) {
+        mResponseBinder = responseBinder;
+    }
+
+    @Override
+    public void onCommandError(int code) {
+        try {
+            mResponseBinder.onCommandError(code);
+        } catch (RemoteException e) {
+        }
+    }
+
+    @Override
+    public void onNetworkResponse(int code, String reason, List<String> theirCaps)
+            throws ImsException {
+        try {
+            mResponseBinder.onNetworkResponse(code, reason, theirCaps);
+        } catch (RemoteException e) {
+        }
+    }
+}
diff --git a/telephony/java/android/telephony/ims/aidl/RcsPublishResponseAidlWrapper.java b/telephony/java/android/telephony/ims/aidl/RcsPublishResponseAidlWrapper.java
new file mode 100644
index 0000000..22985d0
--- /dev/null
+++ b/telephony/java/android/telephony/ims/aidl/RcsPublishResponseAidlWrapper.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims.aidl;
+
+import android.os.RemoteException;
+import android.telephony.ims.ImsException;
+import android.telephony.ims.stub.RcsCapabilityExchangeImplBase.PublishResponseCallback;
+
+/**
+ * Implementation of the callback PublishResponseCallback by wrapping the internal AIDL from
+ * telephony.
+ * @hide
+ */
+public class RcsPublishResponseAidlWrapper implements PublishResponseCallback {
+
+    private final IPublishResponseCallback mResponseBinder;
+
+    public RcsPublishResponseAidlWrapper(IPublishResponseCallback responseBinder) {
+        mResponseBinder = responseBinder;
+    }
+
+    @Override
+    public void onCommandError(int code) {
+        try {
+            mResponseBinder.onCommandError(code);
+        } catch (RemoteException e) {
+        }
+    }
+
+    @Override
+    public void onNetworkResponse(int code, String reason) throws ImsException {
+        try {
+            mResponseBinder.onNetworkResponse(code, reason);
+        } catch (RemoteException e) {
+        }
+    }
+}
diff --git a/telephony/java/android/telephony/ims/aidl/RcsSubscribeResponseAidlWrapper.java b/telephony/java/android/telephony/ims/aidl/RcsSubscribeResponseAidlWrapper.java
new file mode 100644
index 0000000..37588ed
--- /dev/null
+++ b/telephony/java/android/telephony/ims/aidl/RcsSubscribeResponseAidlWrapper.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims.aidl;
+
+import android.net.Uri;
+import android.os.RemoteException;
+import android.telephony.ims.ImsException;
+import android.telephony.ims.RcsContactTerminatedReason;
+import android.telephony.ims.stub.RcsCapabilityExchangeImplBase.SubscribeResponseCallback;
+import android.util.Pair;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Implementation of the callback OptionsResponseCallback by wrapping the internal AIDL from
+ * telephony.
+ * @hide
+ */
+public class RcsSubscribeResponseAidlWrapper implements SubscribeResponseCallback {
+
+    private final ISubscribeResponseCallback mResponseBinder;
+
+    public RcsSubscribeResponseAidlWrapper(ISubscribeResponseCallback responseBinder) {
+        mResponseBinder = responseBinder;
+    }
+
+    @Override
+    public void onCommandError(int code) {
+        try {
+            mResponseBinder.onCommandError(code);
+        } catch (RemoteException e) {
+        }
+    }
+
+    @Override
+    public void onNetworkResponse(int code, String reason) throws ImsException {
+        try {
+            mResponseBinder.onNetworkResponse(code, reason);
+        } catch (RemoteException e) {
+        }
+    }
+
+    @Override
+    public void onNotifyCapabilitiesUpdate(List<String> pidfXmls) throws ImsException {
+        try {
+            mResponseBinder.onNotifyCapabilitiesUpdate(pidfXmls);
+        } catch (RemoteException e) {
+        }
+    }
+
+    @Override
+    public void onResourceTerminated(List<Pair<Uri, String>> uriTerminatedReason)
+            throws ImsException {
+        try {
+            mResponseBinder.onResourceTerminated(getTerminatedReasonList(uriTerminatedReason));
+        } catch (RemoteException e) {
+        }
+    }
+
+    private List<RcsContactTerminatedReason> getTerminatedReasonList(
+            List<Pair<Uri, String>> uriTerminatedReason) {
+        List<RcsContactTerminatedReason> uriTerminatedReasonList = new ArrayList<>();
+        if (uriTerminatedReason != null) {
+            for (Pair<Uri, String> pair : uriTerminatedReason) {
+                RcsContactTerminatedReason reason =
+                        new RcsContactTerminatedReason(pair.first, pair.second);
+                uriTerminatedReasonList.add(reason);
+            }
+        }
+        return uriTerminatedReasonList;
+    }
+
+    @Override
+    public void onTerminated(String reason, String retryAfter) throws ImsException {
+        try {
+            mResponseBinder.onTerminated(reason, retryAfter);
+        } catch (RemoteException e) {
+        }
+    }
+}
diff --git a/telephony/java/android/telephony/ims/aidl/SipDelegateAidlWrapper.java b/telephony/java/android/telephony/ims/aidl/SipDelegateAidlWrapper.java
new file mode 100644
index 0000000..522ad81
--- /dev/null
+++ b/telephony/java/android/telephony/ims/aidl/SipDelegateAidlWrapper.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims.aidl;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.os.Binder;
+import android.os.RemoteException;
+import android.telephony.ims.DelegateMessageCallback;
+import android.telephony.ims.DelegateRegistrationState;
+import android.telephony.ims.DelegateStateCallback;
+import android.telephony.ims.FeatureTagState;
+import android.telephony.ims.SipDelegateImsConfiguration;
+import android.telephony.ims.SipDelegateManager;
+import android.telephony.ims.SipMessage;
+import android.telephony.ims.stub.SipDelegate;
+
+import java.util.ArrayList;
+import java.util.Set;
+import java.util.concurrent.Executor;
+
+/**
+ * Implementation of callbacks by wrapping the internal AIDL from telephony. Also implements
+ * ISipDelegate internally when {@link DelegateStateCallback#onCreated(SipDelegate, Set)} is called
+ * in order to trampoline events back to telephony.
+ * @hide
+ */
+public class SipDelegateAidlWrapper implements DelegateStateCallback, DelegateMessageCallback {
+
+    private final ISipDelegate.Stub mDelegateBinder = new ISipDelegate.Stub() {
+        @Override
+        public void sendMessage(SipMessage sipMessage, long configVersion) {
+            SipDelegate d = mDelegate;
+            final long token = Binder.clearCallingIdentity();
+            try {
+                mExecutor.execute(() -> d.sendMessage(sipMessage, configVersion));
+            } finally {
+                Binder.restoreCallingIdentity(token);
+            }
+        }
+
+        @Override
+        public void notifyMessageReceived(String viaTransactionId)  {
+            SipDelegate d = mDelegate;
+            final long token = Binder.clearCallingIdentity();
+            try {
+                mExecutor.execute(() -> d.notifyMessageReceived(viaTransactionId));
+            } finally {
+                Binder.restoreCallingIdentity(token);
+            }
+
+        }
+
+        @Override
+        public void notifyMessageReceiveError(String viaTransactionId, int reason) {
+            SipDelegate d = mDelegate;
+            final long token = Binder.clearCallingIdentity();
+            try {
+                mExecutor.execute(() -> d.notifyMessageReceiveError(viaTransactionId, reason));
+            } finally {
+                Binder.restoreCallingIdentity(token);
+            }
+
+        }
+
+        @Override
+        public void closeDialog(String callId)  {
+            SipDelegate d = mDelegate;
+            final long token = Binder.clearCallingIdentity();
+            try {
+                mExecutor.execute(() -> d.closeDialog(callId));
+            } finally {
+                Binder.restoreCallingIdentity(token);
+            }
+        }
+    };
+
+    private final ISipDelegateMessageCallback mMessageBinder;
+    private final ISipDelegateStateCallback mStateBinder;
+    private final Executor mExecutor;
+
+    private volatile SipDelegate mDelegate;
+
+    public SipDelegateAidlWrapper(Executor executor, ISipDelegateStateCallback stateBinder,
+            ISipDelegateMessageCallback messageBinder) {
+        mExecutor = executor;
+        mStateBinder = stateBinder;
+        mMessageBinder = messageBinder;
+    }
+
+    @Override
+    public void onMessageReceived(SipMessage message) {
+        try {
+            mMessageBinder.onMessageReceived(message);
+        } catch (RemoteException e) {
+            // BinderDied will be called on SipTransport instance to trigger destruction. Notify
+            // failure message failure locally for now.
+            SipDelegate d = mDelegate;
+            if (d != null) {
+                notifyLocalMessageFailedToBeReceived(message,
+                        SipDelegateManager.MESSAGE_FAILURE_REASON_DELEGATE_DEAD);
+            }
+        }
+    }
+
+    @Override
+    public void onMessageSent(String viaTransactionId) {
+        try {
+            mMessageBinder.onMessageSent(viaTransactionId);
+        } catch (RemoteException e) {
+            // BinderDied will trigger destroySipDelegate, so just ignore this locally.
+        }
+    }
+
+    @Override
+    public void onMessageSendFailure(String viaTransactionId, int reason) {
+        try {
+            mMessageBinder.onMessageSendFailure(viaTransactionId, reason);
+        } catch (RemoteException e) {
+            // BinderDied will trigger destroySipDelegate, so just ignore this locally.
+        }
+    }
+
+    @Override
+    public void onCreated(@NonNull SipDelegate delegate,
+            @Nullable Set<FeatureTagState> deniedTags) {
+        mDelegate = delegate;
+        try {
+            mStateBinder.onCreated(mDelegateBinder, new ArrayList<>(deniedTags));
+        } catch (RemoteException e) {
+            // BinderDied will trigger destroySipDelegate, so just ignore this locally.
+        }
+    }
+
+    @Override
+    public void onFeatureTagRegistrationChanged(DelegateRegistrationState registrationState) {
+        try {
+            mStateBinder.onFeatureTagRegistrationChanged(registrationState);
+        } catch (RemoteException e) {
+            // BinderDied will trigger destroySipDelegate, so just ignore this locally.
+        }
+    }
+
+    @Override
+    public void onImsConfigurationChanged(@NonNull SipDelegateImsConfiguration config) {
+        try {
+            mStateBinder.onImsConfigurationChanged(config);
+        } catch (RemoteException e) {
+            // BinderDied will trigger destroySipDelegate, so just ignore this locally.
+        }
+    }
+
+    @Override
+    public void onDestroyed(int reasonCode) {
+        mDelegate = null;
+        try {
+            mStateBinder.onDestroyed(reasonCode);
+        } catch (RemoteException e) {
+            // Do not worry about this if the remote side is already dead.
+        }
+    }
+
+    public SipDelegate getDelegate()  {
+        return mDelegate;
+    }
+
+    public ISipDelegate getDelegateBinder() {
+        return mDelegateBinder;
+    }
+
+    private void notifyLocalMessageFailedToBeReceived(SipMessage m, int reason) {
+        //TODO: parse transaction ID or throw IllegalArgumentException if the SipMessage
+        // transaction ID can not be parsed.
+        SipDelegate d = mDelegate;
+        if (d != null) {
+            mExecutor.execute(() -> d.notifyMessageReceiveError(null, reason));
+        }
+    }
+}
diff --git a/telephony/java/android/telephony/ims/aidl/SipDelegateConnectionAidlWrapper.java b/telephony/java/android/telephony/ims/aidl/SipDelegateConnectionAidlWrapper.java
new file mode 100644
index 0000000..29ba8e2
--- /dev/null
+++ b/telephony/java/android/telephony/ims/aidl/SipDelegateConnectionAidlWrapper.java
@@ -0,0 +1,260 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims.aidl;
+
+import android.os.Binder;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.telephony.ims.DelegateRegistrationState;
+import android.telephony.ims.FeatureTagState;
+import android.telephony.ims.SipDelegateConnection;
+import android.telephony.ims.SipDelegateImsConfiguration;
+import android.telephony.ims.SipDelegateManager;
+import android.telephony.ims.SipMessage;
+import android.telephony.ims.stub.DelegateConnectionMessageCallback;
+import android.telephony.ims.stub.DelegateConnectionStateCallback;
+import android.telephony.ims.stub.SipDelegate;
+import android.util.ArraySet;
+import android.util.Log;
+
+import java.util.List;
+import java.util.NoSuchElementException;
+import java.util.concurrent.Executor;
+import java.util.concurrent.atomic.AtomicReference;
+
+/**
+ * Wrapper class implementing {@link SipDelegateConnection} using AIDL, which is returned to the
+ * local process. Also holds a reference to incoming connection message and state AIDL impl to
+ * trampoline events to callbacks as well as notify the local process in the event that the remote
+ * process becomes unavailable.
+ * <p>
+ * When the remote {@link SipDelegate} is created, this instance tracks the
+ * {@link ISipDelegate} associated with it and implements the
+ * {@link SipDelegateConnection} sent back to the local callback.
+ * @hide
+ */
+public class SipDelegateConnectionAidlWrapper implements SipDelegateConnection,
+        IBinder.DeathRecipient {
+    private static final String LOG_TAG = "SipDelegateCAW";
+
+    private final ISipDelegateConnectionStateCallback.Stub mStateBinder =
+            new ISipDelegateConnectionStateCallback.Stub() {
+        @Override
+        public void onCreated(ISipDelegate c) {
+            associateSipDelegate(c);
+            final long token = Binder.clearCallingIdentity();
+            try {
+                mExecutor.execute(() ->
+                        mStateCallback.onCreated(SipDelegateConnectionAidlWrapper.this));
+            } finally {
+                Binder.restoreCallingIdentity(token);
+            }
+        }
+
+        @Override
+        public void onFeatureTagStatusChanged(DelegateRegistrationState registrationState,
+                List<FeatureTagState> deniedFeatureTags) {
+            final long token = Binder.clearCallingIdentity();
+            try {
+                mExecutor.execute(() ->
+                        mStateCallback.onFeatureTagStatusChanged(registrationState,
+                                new ArraySet<>(deniedFeatureTags)));
+            } finally {
+                Binder.restoreCallingIdentity(token);
+            }
+        }
+
+        @Override
+        public void onImsConfigurationChanged(SipDelegateImsConfiguration registeredSipConfig) {
+            final long token = Binder.clearCallingIdentity();
+            try {
+                mExecutor.execute(() ->
+                        mStateCallback.onImsConfigurationChanged(registeredSipConfig));
+            } finally {
+                Binder.restoreCallingIdentity(token);
+            }
+        }
+
+        @Override
+        public void onDestroyed(int reason) {
+            invalidateSipDelegateBinder();
+            final long token = Binder.clearCallingIdentity();
+            try {
+                mExecutor.execute(() ->
+                        mStateCallback.onDestroyed(reason));
+            } finally {
+                Binder.restoreCallingIdentity(token);
+            }
+        }
+    };
+
+    private final ISipDelegateMessageCallback.Stub mMessageBinder =
+            new ISipDelegateMessageCallback.Stub() {
+                @Override
+                public void onMessageReceived(SipMessage message) {
+                    final long token = Binder.clearCallingIdentity();
+                    try {
+                        mExecutor.execute(() ->
+                                mMessageCallback.onMessageReceived(message));
+                    } finally {
+                        Binder.restoreCallingIdentity(token);
+                    }
+                }
+
+                @Override
+                public void onMessageSent(String viaTransactionId) {
+                    final long token = Binder.clearCallingIdentity();
+                    try {
+                        mExecutor.execute(() ->
+                                mMessageCallback.onMessageSent(viaTransactionId));
+                    } finally {
+                        Binder.restoreCallingIdentity(token);
+                    }
+                }
+
+                @Override
+                public void onMessageSendFailure(String viaTransactionId, int reason) {
+                    final long token = Binder.clearCallingIdentity();
+                    try {
+                        mExecutor.execute(() ->
+                                mMessageCallback.onMessageSendFailure(viaTransactionId, reason));
+                    } finally {
+                        Binder.restoreCallingIdentity(token);
+                    }
+                }
+            };
+
+
+    private final Executor mExecutor;
+    private final DelegateConnectionStateCallback mStateCallback;
+    private final DelegateConnectionMessageCallback mMessageCallback;
+    private final AtomicReference<ISipDelegate> mDelegateBinder =
+            new AtomicReference<>();
+
+    /**
+     * Wrap the local state and message callbacks, calling the implementation of these interfaces
+     * when the remote process calls these methods.
+     */
+    public SipDelegateConnectionAidlWrapper(Executor executor,
+            DelegateConnectionStateCallback stateCallback,
+            DelegateConnectionMessageCallback messageCallback) {
+        mExecutor = executor;
+        mStateCallback = stateCallback;
+        mMessageCallback = messageCallback;
+    }
+
+    @Override
+    public void sendMessage(SipMessage sipMessage, long configVersion) {
+        try {
+            ISipDelegate conn = getSipDelegateBinder();
+            if (conn == null) {
+                notifyLocalMessageFailedToSend(sipMessage,
+                        SipDelegateManager.MESSAGE_FAILURE_REASON_DELEGATE_CLOSED);
+                return;
+            }
+            conn.sendMessage(sipMessage, configVersion);
+        } catch (RemoteException e) {
+            notifyLocalMessageFailedToSend(sipMessage,
+                        SipDelegateManager.MESSAGE_FAILURE_REASON_DELEGATE_DEAD);
+        }
+    }
+
+    @Override
+    public void notifyMessageReceived(String viaTransactionId) {
+        try {
+            ISipDelegate conn = getSipDelegateBinder();
+            if (conn == null) {
+                return;
+            }
+            conn.notifyMessageReceived(viaTransactionId);
+        } catch (RemoteException e) {
+            // Nothing to do here, app will eventually get remote death callback.
+        }
+    }
+
+    @Override
+    public void notifyMessageReceiveError(String viaTransactionId, int reason) {
+        try {
+            ISipDelegate conn = getSipDelegateBinder();
+            if (conn == null) {
+                return;
+            }
+            conn.notifyMessageReceiveError(viaTransactionId, reason);
+        } catch (RemoteException e) {
+            // Nothing to do here, app will eventually get remote death callback.
+        }
+    }
+
+    // Also called upon IImsRcsController death (telephony process dies).
+    @Override
+    public void binderDied() {
+        invalidateSipDelegateBinder();
+        mExecutor.execute(() -> mStateCallback.onDestroyed(
+                SipDelegateManager.SIP_DELEGATE_DESTROY_REASON_SERVICE_DEAD));
+    }
+
+    /**
+     * @return Implementation of state binder.
+     */
+    public ISipDelegateConnectionStateCallback getStateCallbackBinder() {
+        return mStateBinder;
+    }
+
+    /**
+     * @return Implementation of message binder.
+     */
+    public ISipDelegateMessageCallback getMessageCallbackBinder() {
+        return mMessageBinder;
+    }
+
+    /**
+     * @return The ISipDelegateConnection associated with this wrapper.
+     */
+    public ISipDelegate getSipDelegateBinder() {
+        return mDelegateBinder.get();
+    }
+
+    private void associateSipDelegate(ISipDelegate c) {
+        if (c != null) {
+            try {
+                c.asBinder().linkToDeath(this, 0 /*flags*/);
+            } catch (RemoteException e) {
+                // already dead.
+                c = null;
+            }
+        }
+        mDelegateBinder.set(c);
+    }
+
+    private void invalidateSipDelegateBinder() {
+        ISipDelegate oldVal = mDelegateBinder.getAndUpdate((unused) -> null);
+        if (oldVal != null) {
+            try {
+                oldVal.asBinder().unlinkToDeath(this, 0 /*flags*/);
+            } catch (NoSuchElementException e) {
+                Log.i(LOG_TAG, "invalidateSipDelegateBinder: " + e);
+            }
+        }
+    }
+
+    private void notifyLocalMessageFailedToSend(SipMessage m, int reason) {
+        //TODO: parse transaction ID or throw IllegalArgumentException if the SipMessage
+        // transaction ID can not be parsed.
+        mExecutor.execute(() ->
+                mMessageCallback.onMessageSendFailure(null, reason));
+    }
+}
diff --git a/telephony/java/android/telephony/ims/compat/ImsService.java b/telephony/java/android/telephony/ims/compat/ImsService.java
index 41d1d72..303ba18 100644
--- a/telephony/java/android/telephony/ims/compat/ImsService.java
+++ b/telephony/java/android/telephony/ims/compat/ImsService.java
@@ -20,6 +20,7 @@
 import android.app.Service;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Intent;
+import android.os.Build;
 import android.os.IBinder;
 import android.telephony.CarrierConfigManager;
 import android.telephony.ims.compat.feature.ImsFeature;
@@ -86,7 +87,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected final IBinder mImsServiceController = new IImsServiceController.Stub() {
 
         @Override
@@ -122,7 +123,7 @@
         }
     };
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ImsService() {
     }
 
diff --git a/telephony/java/android/telephony/ims/compat/feature/ImsFeature.java b/telephony/java/android/telephony/ims/compat/feature/ImsFeature.java
index 5a9e8e2..6038a18 100644
--- a/telephony/java/android/telephony/ims/compat/feature/ImsFeature.java
+++ b/telephony/java/android/telephony/ims/compat/feature/ImsFeature.java
@@ -19,6 +19,7 @@
 import android.annotation.IntDef;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
+import android.os.Build;
 import android.os.IInterface;
 import android.os.RemoteException;
 import android.telephony.SubscriptionManager;
@@ -78,12 +79,12 @@
         mSlotId = slotId;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getFeatureState() {
         return mState;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected final void setFeatureState(@ImsState int state) {
         if (mState != state) {
             mState = state;
diff --git a/telephony/java/android/telephony/ims/compat/feature/MMTelFeature.java b/telephony/java/android/telephony/ims/compat/feature/MMTelFeature.java
index b52c371..d32e9b7f5 100644
--- a/telephony/java/android/telephony/ims/compat/feature/MMTelFeature.java
+++ b/telephony/java/android/telephony/ims/compat/feature/MMTelFeature.java
@@ -18,6 +18,7 @@
 
 import android.app.PendingIntent;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Message;
 import android.os.RemoteException;
 import android.telephony.ims.ImsCallProfile;
@@ -48,7 +49,7 @@
     // Lock for feature synchronization
     private final Object mLock = new Object();
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public MMTelFeature() {
     }
 
diff --git a/telephony/java/android/telephony/ims/compat/stub/ImsCallSessionImplBase.java b/telephony/java/android/telephony/ims/compat/stub/ImsCallSessionImplBase.java
index 06aa642..8dcd711 100755
--- a/telephony/java/android/telephony/ims/compat/stub/ImsCallSessionImplBase.java
+++ b/telephony/java/android/telephony/ims/compat/stub/ImsCallSessionImplBase.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Message;
 import android.os.RemoteException;
 import android.telephony.CallQuality;
@@ -29,11 +30,14 @@
 import android.telephony.ims.ImsReasonInfo;
 import android.telephony.ims.ImsStreamMediaProfile;
 import android.telephony.ims.ImsSuppServiceNotification;
+import android.telephony.ims.RtpHeaderExtension;
 import android.telephony.ims.aidl.IImsCallSessionListener;
 
 import com.android.ims.internal.IImsCallSession;
 import com.android.ims.internal.IImsVideoCallProvider;
 
+import java.util.List;
+
 /**
  * Compat implementation of ImsCallSessionImplBase for older implementations.
  *
@@ -45,7 +49,7 @@
 
 public class ImsCallSessionImplBase extends IImsCallSession.Stub {
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ImsCallSessionImplBase() {
     }
 
@@ -404,6 +408,15 @@
     }
 
     /**
+     * Device sends RTP header extensions.
+     * @param headerExtensions The header extensions to send.
+     */
+    @Override
+    public void sendRtpHeaderExtensions(@NonNull List<RtpHeaderExtension> headerExtensions) {
+        // no-op; not supported in compat layer.
+    }
+
+    /**
      * There are two different ImsCallSessionListeners that need to reconciled here, we need to
      * convert the "old" version of the com.android.ims.internal.IImsCallSessionListener to the
      * "new" version of the Listener android.telephony.ims.ImsCallSessionListener when calling
diff --git a/telephony/java/android/telephony/ims/compat/stub/ImsConfigImplBase.java b/telephony/java/android/telephony/ims/compat/stub/ImsConfigImplBase.java
index 0c72646..a8278ae 100644
--- a/telephony/java/android/telephony/ims/compat/stub/ImsConfigImplBase.java
+++ b/telephony/java/android/telephony/ims/compat/stub/ImsConfigImplBase.java
@@ -19,6 +19,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.Intent;
+import android.os.Build;
 import android.os.RemoteException;
 import android.util.Log;
 
@@ -59,7 +60,7 @@
 
     ImsConfigStub mImsConfigStub;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ImsConfigImplBase(Context context) {
         mImsConfigStub = new ImsConfigStub(this, context);
     }
@@ -164,7 +165,7 @@
     public void setVideoQuality(int quality, ImsConfigListener listener) throws RemoteException {
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public IImsConfig getIImsConfig() { return mImsConfigStub; }
 
     /**
diff --git a/telephony/java/android/telephony/ims/compat/stub/ImsUtListenerImplBase.java b/telephony/java/android/telephony/ims/compat/stub/ImsUtListenerImplBase.java
index ce291d4..c689460 100644
--- a/telephony/java/android/telephony/ims/compat/stub/ImsUtListenerImplBase.java
+++ b/telephony/java/android/telephony/ims/compat/stub/ImsUtListenerImplBase.java
@@ -17,6 +17,7 @@
 package android.telephony.ims.compat.stub;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.RemoteException;
 import android.telephony.ims.ImsCallForwardInfo;
@@ -40,7 +41,7 @@
 
 public class ImsUtListenerImplBase extends IImsUtListener.Stub {
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ImsUtListenerImplBase() {
     }
 
diff --git a/telephony/java/android/telephony/ims/feature/CapabilityChangeRequest.java b/telephony/java/android/telephony/ims/feature/CapabilityChangeRequest.java
index 1918bcb..87a6873 100644
--- a/telephony/java/android/telephony/ims/feature/CapabilityChangeRequest.java
+++ b/telephony/java/android/telephony/ims/feature/CapabilityChangeRequest.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.telephony.ims.stub.ImsRegistrationImplBase;
@@ -29,12 +28,11 @@
 import java.util.Set;
 
 /**
- * Request to send to IMS provider, which will try to enable/disable capabilities that are added to
- * the request.
+ * Used by the framework to enable and disable MMTEL and RCS capabilities. See
+ * MmTelFeature#changeEnabledCapabilities and RcsFeature#changeEnabledCapabilities.
  * {@hide}
  */
 @SystemApi
-@TestApi
 public final class CapabilityChangeRequest implements Parcelable {
 
     /**
diff --git a/telephony/java/android/telephony/ims/feature/ImsFeature.java b/telephony/java/android/telephony/ims/feature/ImsFeature.java
index e5779b3..96ca022 100644
--- a/telephony/java/android/telephony/ims/feature/ImsFeature.java
+++ b/telephony/java/android/telephony/ims/feature/ImsFeature.java
@@ -44,7 +44,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public abstract class ImsFeature {
 
     private static final String LOG_TAG = "ImsFeature";
@@ -62,19 +61,19 @@
      * CSFB for emergency calling.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public static final int FEATURE_EMERGENCY_MMTEL = 0;
     /**
      * This feature supports the MMTEL feature.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public static final int FEATURE_MMTEL = 1;
     /**
      * This feature supports the RCS feature.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public static final int FEATURE_RCS = 2;
     /**
      * Total number of features defined
@@ -124,7 +123,7 @@
      * during this time will result in an {@link IllegalStateException}.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public static final int STATE_UNAVAILABLE = 0;
     /**
      * This {@link ImsFeature} state is initializing and should not be communicated with. This will
@@ -132,14 +131,14 @@
      * during this time will result in an {@link IllegalStateException}.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public static final int STATE_INITIALIZING = 1;
     /**
      * This {@link ImsFeature} is ready for communication. Do not attempt to call framework methods
      * until {@see #onFeatureReady()} is called.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public static final int STATE_READY = 2;
 
     /**
@@ -169,13 +168,13 @@
      * The capability was unable to be changed.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public static final int CAPABILITY_ERROR_GENERIC = -1;
     /**
      * The capability was able to be changed.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public static final int CAPABILITY_SUCCESS = 0;
 
     /**
@@ -349,7 +348,7 @@
      * subscription IDs associated with this slot.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public final int getSlotIndex() {
         return mSlotId;
     }
@@ -359,7 +358,7 @@
      * or {@link #STATE_UNAVAILABLE} if it has not been updated  yet.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public @ImsState int getFeatureState() {
         synchronized (mLock) {
             return mState;
@@ -373,7 +372,7 @@
      * {@link #STATE_INITIALIZING}, or {@link #STATE_READY}.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public final void setFeatureState(@ImsState int state) {
         synchronized (mLock) {
             if (mState != state) {
@@ -510,6 +509,7 @@
      * @return true if the capability is enabled, false otherwise.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract boolean queryCapabilityConfiguration(int capability, int radioTech);
 
     /**
@@ -548,5 +548,6 @@
      * @return Binder instance that the framework will use to communicate with this feature.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     protected abstract IInterface getBinder();
 }
diff --git a/telephony/java/android/telephony/ims/feature/MmTelFeature.java b/telephony/java/android/telephony/ims/feature/MmTelFeature.java
index 01d468c..e570fb6 100644
--- a/telephony/java/android/telephony/ims/feature/MmTelFeature.java
+++ b/telephony/java/android/telephony/ims/feature/MmTelFeature.java
@@ -20,7 +20,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Bundle;
 import android.os.Message;
 import android.os.RemoteException;
@@ -28,6 +27,8 @@
 import android.telephony.ims.ImsCallProfile;
 import android.telephony.ims.ImsCallSession;
 import android.telephony.ims.ImsReasonInfo;
+import android.telephony.ims.ImsService;
+import android.telephony.ims.RtpHeaderExtensionType;
 import android.telephony.ims.aidl.IImsCapabilityCallback;
 import android.telephony.ims.aidl.IImsMmTelFeature;
 import android.telephony.ims.aidl.IImsMmTelListener;
@@ -38,6 +39,7 @@
 import android.telephony.ims.stub.ImsRegistrationImplBase;
 import android.telephony.ims.stub.ImsSmsImplBase;
 import android.telephony.ims.stub.ImsUtImplBase;
+import android.util.ArraySet;
 
 import com.android.ims.internal.IImsCallSession;
 import com.android.ims.internal.IImsEcbm;
@@ -46,6 +48,8 @@
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
+import java.util.List;
+import java.util.Set;
 
 /**
  * Base implementation for Voice and SMS (IR-92) and Video (IR-94) IMS support.
@@ -60,7 +64,7 @@
     /**
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public MmTelFeature() {
     }
 
@@ -94,6 +98,18 @@
         }
 
         @Override
+        public void changeOfferedRtpHeaderExtensionTypes(List<RtpHeaderExtensionType> types)
+                throws RemoteException {
+            synchronized (mLock) {
+                try {
+                    MmTelFeature.this.changeOfferedRtpHeaderExtensionTypes(new ArraySet<>(types));
+                } catch (Exception e) {
+                    throw new RemoteException(e.getMessage());
+                }
+            }
+        }
+
+        @Override
         public IImsCallSession createCallSession(ImsCallProfile profile) throws RemoteException {
             synchronized (mLock) {
                 return createCallSessionInterface(profile);
@@ -228,7 +244,7 @@
          * @see #removeCapabilities(int)
          * @hide
          */
-        @SystemApi @TestApi
+        @SystemApi
         public MmTelCapabilities() {
             super();
         }
@@ -237,7 +253,7 @@
          * @hide
          */
         @Deprecated
-        @SystemApi @TestApi
+        @SystemApi
         public MmTelCapabilities(Capabilities c) {
             mCapabilities = c.mCapabilities;
         }
@@ -248,7 +264,7 @@
          *                     bitfield.
          * @hide
          */
-        @SystemApi @TestApi
+        @SystemApi
         public MmTelCapabilities(@MmTelCapability int capabilities) {
             super(capabilities);
         }
@@ -285,35 +301,36 @@
         public static final int CAPABILITY_TYPE_SMS = 1 << 3;
 
         /**
-        * @hide
-        */
+         * @hide
+         */
         @Override
-        @SystemApi @TestApi
+        @SystemApi
         public final void addCapabilities(@MmTelCapability int capabilities) {
             super.addCapabilities(capabilities);
         }
 
         /**
-        * @hide
-        */
+         * @hide
+         */
         @Override
-        @SystemApi @TestApi
+        @SystemApi
         public final void removeCapabilities(@MmTelCapability int capability) {
             super.removeCapabilities(capability);
         }
 
         /**
-        * @hide
-        */
+         * @param capabilities a bitmask of one or more {@link MmTelCapability}.
+         *
+         * @return true if all queried capabilities are true, otherwise false.
+         */
         @Override
-        @SystemApi @TestApi
         public final boolean isCapable(@MmTelCapability int capabilities) {
             return super.isCapable(capabilities);
         }
 
         /**
-        * @hide
-        */
+         * @hide
+         */
         @NonNull
         @Override
         public String toString() {
@@ -374,14 +391,14 @@
      * outgoing call as IMS.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public static final int PROCESS_CALL_IMS = 0;
     /**
      * To be returned by {@link #shouldProcessCall(String[])} when the telephony framework should
      * not process the outgoing call as IMS and should instead use circuit switch.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public static final int PROCESS_CALL_CSFB = 1;
 
     /** @hide */
@@ -399,7 +416,7 @@
      * This is an optional boolean flag.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String EXTRA_IS_USSD = "android.telephony.ims.feature.extra.IS_USSD";
 
     /**
@@ -412,7 +429,7 @@
      * This is an optional boolean flag.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public static final String EXTRA_IS_UNKNOWN_CALL =
             "android.telephony.ims.feature.extra.IS_UNKNOWN_CALL";
 
@@ -452,7 +469,7 @@
      * @hide
      */
     @Override
-    @SystemApi @TestApi
+    @SystemApi
     public @NonNull final MmTelCapabilities queryCapabilityStatus() {
         return new MmTelCapabilities(super.queryCapabilityStatus());
     }
@@ -467,7 +484,7 @@
      * {@link #changeEnabledCapabilities}) should also show the status as disabled.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public final void notifyCapabilitiesStatusChanged(@NonNull MmTelCapabilities c) {
         if (c == null) {
             throw new IllegalArgumentException("MmTelCapabilities must be non-null!");
@@ -482,7 +499,7 @@
      * {@link #EXTRA_IS_UNKNOWN_CALL} and {@link #EXTRA_IS_USSD} above.
       * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public final void notifyIncomingCall(@NonNull ImsCallSessionImplBase c,
             @NonNull Bundle extras) {
         if (c == null || extras == null) {
@@ -508,7 +525,7 @@
      * @param reason The {@link ImsReasonInfo} call rejection reason.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public final void notifyRejectedCall(@NonNull ImsCallProfile callProfile,
             @NonNull ImsReasonInfo reason) {
         if (callProfile == null || reason == null) {
@@ -547,7 +564,7 @@
      * @link count the new Voice Message count.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public final void notifyVoiceMessageCountUpdate(int count) {
         IImsMmTelListener listener = getListener();
         if (listener == null) {
@@ -570,7 +587,7 @@
      * @hide
      */
     @Override
-    @SystemApi @TestApi
+    @SystemApi
     public boolean queryCapabilityConfiguration(@MmTelCapabilities.MmTelCapability int capability,
             @ImsRegistrationImplBase.ImsRegistrationTech int radioTech) {
         // Base implementation - Override to provide functionality
@@ -591,7 +608,7 @@
      * * @hide
      */
     @Override
-    @SystemApi @TestApi
+    @SystemApi
     public void changeEnabledCapabilities(@NonNull CapabilityChangeRequest request,
             @NonNull CapabilityCallbackProxy c) {
         // Base implementation, no-op
@@ -616,13 +633,31 @@
      * @return a {@link ImsCallProfile} object
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public @Nullable ImsCallProfile createCallProfile(int callSessionType, int callType) {
         // Base Implementation - Should be overridden
         return null;
     }
 
     /**
+     * Called by the framework to report a change to the RTP header extension types which should be
+     * offered during SDP negotiation (see RFC8285 for more information).
+     * <p>
+     * The {@link ImsService} should report the RTP header extensions which were accepted during
+     * SDP negotiation using {@link ImsCallProfile#setAcceptedRtpHeaderExtensionTypes(Set)}.
+     *
+     * @param extensionTypes The RTP header extensions the framework wishes to offer during
+     *                       outgoing and incoming call setup.  An empty list indicates that there
+     *                       are no framework defined RTP header extension types to offer.
+     * @hide
+     */
+    @SystemApi
+    public void changeOfferedRtpHeaderExtensionTypes(
+            @NonNull Set<RtpHeaderExtensionType> extensionTypes) {
+        // Base implementation - should be overridden if RTP header extension handling is supported.
+    }
+
+    /**
      * @hide
      */
     public IImsCallSession createCallSessionInterface(ImsCallProfile profile)
@@ -639,7 +674,7 @@
      * @param profile a call profile to make the call
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public @Nullable ImsCallSessionImplBase createCallSession(@NonNull ImsCallProfile profile) {
         // Base Implementation - Should be overridden
         return null;
@@ -658,7 +693,7 @@
      *        call will be placed over IMS or via CSFB.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public @ProcessCallResult int shouldProcessCall(@NonNull String[] numbers) {
         return PROCESS_CALL_IMS;
     }
@@ -693,7 +728,7 @@
      * configuration.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public @NonNull ImsUtImplBase getUt() {
         // Base Implementation - Should be overridden
         return new ImsUtImplBase();
@@ -704,7 +739,7 @@
      * calls that support it.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public @NonNull ImsEcbmImplBase getEcbm() {
         // Base Implementation - Should be overridden
         return new ImsEcbmImplBase();
@@ -715,7 +750,7 @@
      * package processing for multi-endpoint.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public @NonNull ImsMultiEndpointImplBase getMultiEndpoint() {
         // Base Implementation - Should be overridden
         return new ImsMultiEndpointImplBase();
@@ -743,7 +778,7 @@
      * }
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public void setUiTtyMode(int mode, @Nullable Message onCompleteMessage) {
         // Base Implementation - Should be overridden
     }
@@ -779,7 +814,7 @@
      * Provider.
      * @hide
      */
-    @SystemApi @TestApi
+    @SystemApi
     public @NonNull ImsSmsImplBase getSmsImplementation() {
         return new ImsSmsImplBase();
     }
@@ -793,7 +828,7 @@
      * @hide
      */
     @Override
-    @SystemApi @TestApi
+    @SystemApi
     public void onFeatureRemoved() {
         // Base Implementation - Should be overridden
     }
@@ -803,7 +838,7 @@
      * @hide
      */
     @Override
-    @SystemApi @TestApi
+    @SystemApi
     public void onFeatureReady() {
         // Base Implementation - Should be overridden
     }
diff --git a/telephony/java/android/telephony/ims/feature/RcsFeature.java b/telephony/java/android/telephony/ims/feature/RcsFeature.java
index 98b0bcf..5de2ddc 100644
--- a/telephony/java/android/telephony/ims/feature/RcsFeature.java
+++ b/telephony/java/android/telephony/ims/feature/RcsFeature.java
@@ -20,16 +20,25 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.net.Uri;
 import android.os.RemoteException;
 import android.telephony.ims.RcsContactUceCapability;
+import android.telephony.ims.RcsUceAdapter;
+import android.telephony.ims.aidl.ICapabilityExchangeEventListener;
 import android.telephony.ims.aidl.IImsCapabilityCallback;
 import android.telephony.ims.aidl.IImsRcsFeature;
+import android.telephony.ims.aidl.IOptionsResponseCallback;
+import android.telephony.ims.aidl.IPublishResponseCallback;
 import android.telephony.ims.aidl.IRcsFeatureListener;
+import android.telephony.ims.aidl.ISubscribeResponseCallback;
+import android.telephony.ims.aidl.RcsOptionsResponseAidlWrapper;
+import android.telephony.ims.aidl.RcsPublishResponseAidlWrapper;
+import android.telephony.ims.aidl.RcsSubscribeResponseAidlWrapper;
 import android.telephony.ims.stub.ImsRegistrationImplBase;
-import android.telephony.ims.stub.RcsPresenceExchangeImplBase;
-import android.telephony.ims.stub.RcsSipOptionsImplBase;
+import android.telephony.ims.stub.RcsCapabilityExchangeImplBase;
+import android.telephony.ims.stub.RcsCapabilityExchangeImplBase.OptionsResponseCallback;
+import android.telephony.ims.stub.RcsCapabilityExchangeImplBase.PublishResponseCallback;
+import android.telephony.ims.stub.RcsCapabilityExchangeImplBase.SubscribeResponseCallback;
 import android.util.Log;
 
 import com.android.internal.telephony.util.TelephonyUtils;
@@ -50,7 +59,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public class RcsFeature extends ImsFeature {
 
     private static final String LOG_TAG = "RcsFeature";
@@ -66,9 +74,14 @@
             mExecutor = executor;
         }
 
+        /**
+         * @deprecated This method is deprecated. Please call the method
+         * setCapabilityExchangeEventListener instead.
+         */
         @Override
+        @Deprecated
         public void setListener(IRcsFeatureListener listener) {
-            mReference.setListener(listener);
+            Log.w(LOG_TAG, "The method setListener is deprecated");
         }
 
         @Override
@@ -108,44 +121,66 @@
             return executeMethodAsyncForResult(mReference::getFeatureState, "getFeatureState");
         }
 
+        // RcsCapabilityExchangeImplBase specific APIs
+        @Override
+        public void setCapabilityExchangeEventListener(
+                @NonNull ICapabilityExchangeEventListener listener) throws RemoteException {
+            executeMethodAsync(() -> mReference.setCapabilityExchangeEventListener(listener),
+                    "setCapabilityExchangeEventListener");
+        }
+
+        @Override
+        public void publishCapabilities(@NonNull String pidfXml,
+                @NonNull IPublishResponseCallback callback) throws RemoteException {
+            PublishResponseCallback callbackWrapper = new RcsPublishResponseAidlWrapper(callback);
+            executeMethodAsync(() -> mReference.getCapabilityExchangeImplBaseInternal()
+                    .publishCapabilities(pidfXml, callbackWrapper), "publishCapabilities");
+        }
+
+        @Override
+        public void subscribeForCapabilities(@NonNull List<Uri> uris,
+                @NonNull ISubscribeResponseCallback callback) throws RemoteException {
+            SubscribeResponseCallback wrapper = new RcsSubscribeResponseAidlWrapper(callback);
+            executeMethodAsync(() -> mReference.getCapabilityExchangeImplBaseInternal()
+                    .subscribeForCapabilities(uris, wrapper), "subscribeForCapabilities");
+        }
+
+        @Override
+        public void sendOptionsCapabilityRequest(@NonNull Uri contactUri,
+                @NonNull List<String> myCapabilities, @NonNull IOptionsResponseCallback callback)
+                throws RemoteException {
+            OptionsResponseCallback callbackWrapper = new RcsOptionsResponseAidlWrapper(callback);
+            executeMethodAsync(() -> mReference.getCapabilityExchangeImplBaseInternal()
+                    .sendOptionsCapabilityRequest(contactUri, myCapabilities, callbackWrapper),
+                    "sendOptionsCapabilityRequest");
+        }
+
         // RcsPresenceExchangeImplBase specific APIS
         @Override
         public void requestCapabilities(List<Uri> uris, int operationToken) throws RemoteException {
-            executeMethodAsync(() -> mReference.getPresenceExchangeInternal()
-                    .requestCapabilities(uris, operationToken), "requestCapabilities");
+            throw new RemoteException("Unsupported operation: requestCapabilities");
         }
         @Override
         public void updateCapabilities(RcsContactUceCapability capabilities, int operationToken)
                 throws RemoteException {
-            executeMethodAsync(() -> mReference.getPresenceExchangeInternal()
-                            .updateCapabilities(capabilities, operationToken),
-                    "updateCapabilities");
-
+            throw new RemoteException("Unsupported operation: updateCapabilities");
         }
         // RcsSipOptionsImplBase specific APIS
         @Override
         public void sendCapabilityRequest(Uri contactUri, RcsContactUceCapability capabilities,
                 int operationToken) throws RemoteException {
-            executeMethodAsync(() -> mReference.getOptionsExchangeInternal()
-                            .sendCapabilityRequest(contactUri, capabilities, operationToken),
-                    "sendCapabilityRequest");
-
+            throw new RemoteException("Unsupported operation: sendCapabilityRequest");
         }
         @Override
         public void respondToCapabilityRequest(String contactUri,
                 RcsContactUceCapability ownCapabilities, int operationToken)
                 throws RemoteException {
-            executeMethodAsync(() -> mReference.getOptionsExchangeInternal()
-                            .respondToCapabilityRequest(contactUri, ownCapabilities,
-                                    operationToken), "respondToCapabilityRequest");
-
+            throw new RemoteException("Unsupported operation: respondToCapabilityRequest");
         }
         @Override
         public void respondToCapabilityRequestWithError(Uri contactUri, int code, String reason,
                 int operationToken) throws RemoteException {
-            executeMethodAsync(() -> mReference.getOptionsExchangeInternal()
-                            .respondToCapabilityRequestWithError(contactUri, code, reason,
-                                    operationToken), "respondToCapabilityRequestWithError");
+            throw new RemoteException("Unsupported operation: respondToCapabilityRequestWithError");
         }
 
         // Call the methods with a clean calling identity on the executor and wait indefinitely for
@@ -184,8 +219,8 @@
      * Contains the capabilities defined and supported by a {@link RcsFeature} in the
      * form of a bitmask. The capabilities that are used in the RcsFeature are
      * defined as:
-     * {@link RcsImsCapabilityFlag#CAPABILITY_TYPE_OPTIONS_UCE}
-     * {@link RcsImsCapabilityFlag#CAPABILITY_TYPE_PRESENCE_UCE}
+     * {@link RcsUceAdatper.RcsImsCapabilityFlag#CAPABILITY_TYPE_OPTIONS_UCE}
+     * {@link RceUceAdapter.RcsImsCapabilityFlag#CAPABILITY_TYPE_PRESENCE_UCE}
      *
      * The enabled capabilities of this RcsFeature will be set by the framework
      * using {@link #changeEnabledCapabilities(CapabilityChangeRequest, CapabilityCallbackProxy)}.
@@ -225,7 +260,7 @@
          */
         public static final int CAPABILITY_TYPE_PRESENCE_UCE =  1 << 1;
 
-        public RcsImsCapabilities(@RcsImsCapabilityFlag int capabilities) {
+        public RcsImsCapabilities(@RcsUceAdapter.RcsImsCapabilityFlag int capabilities) {
             super(capabilities);
         }
 
@@ -234,25 +269,24 @@
         }
 
         @Override
-        public void addCapabilities(@RcsImsCapabilityFlag int capabilities) {
+        public void addCapabilities(@RcsUceAdapter.RcsImsCapabilityFlag int capabilities) {
             super.addCapabilities(capabilities);
         }
 
         @Override
-        public void removeCapabilities(@RcsImsCapabilityFlag int capabilities) {
+        public void removeCapabilities(@RcsUceAdapter.RcsImsCapabilityFlag int capabilities) {
             super.removeCapabilities(capabilities);
         }
 
         @Override
-        public boolean isCapable(@RcsImsCapabilityFlag int capabilities) {
+        public boolean isCapable(@RcsUceAdapter.RcsImsCapabilityFlag int capabilities) {
             return super.isCapable(capabilities);
         }
     }
 
     private final RcsFeatureBinder mImsRcsBinder;
-    private IRcsFeatureListener mListenerBinder;
-    private RcsPresenceExchangeImplBase mPresExchange;
-    private RcsSipOptionsImplBase mSipOptions;
+    private RcsCapabilityExchangeImplBase mCapabilityExchangeImpl;
+    private ICapabilityExchangeEventListener mCapExchangeEventListener;
 
     /**
      * Create a new RcsFeature.
@@ -316,7 +350,7 @@
      * @hide
      */
     public boolean queryCapabilityConfiguration(
-            @RcsImsCapabilities.RcsImsCapabilityFlag int capability,
+            @RcsUceAdapter.RcsImsCapabilityFlag int capability,
             @ImsRegistrationImplBase.ImsRegistrationTech int radioTech) {
         // Base Implementation - Override to provide functionality
         return false;
@@ -344,37 +378,22 @@
     }
 
     /**
-     * Retrieve the implementation of SIP OPTIONS for this {@link RcsFeature}.
-     * <p>
-     * Will only be requested by the framework if capability exchange via SIP OPTIONS is
-     * configured as capable during a
+     * Retrieve the implementation of UCE for this {@link RcsFeature}, which can use either
+     * presence or OPTIONS for capability exchange.
+     *
+     * Will only be requested by the framework if capability exchange is configured
+     * as capable during a
      * {@link #changeEnabledCapabilities(CapabilityChangeRequest, CapabilityCallbackProxy)}
      * operation and the RcsFeature sets the status of the capability to true using
      * {@link #notifyCapabilitiesStatusChanged(RcsImsCapabilities)}.
      *
-     * @return An instance of {@link RcsSipOptionsImplBase} that implements SIP options exchange if
-     * it is supported by the device.
-     * @hide
-     */
-    public @NonNull RcsSipOptionsImplBase getOptionsExchangeImpl() {
-        // Base Implementation, override to implement functionality
-        return new RcsSipOptionsImplBase();
-    }
-
-    /**
-     * Retrieve the implementation of UCE presence for this {@link RcsFeature}.
-     * Will only be requested by the framework if presence exchang is configured as capable during
-     * a {@link #changeEnabledCapabilities(CapabilityChangeRequest, CapabilityCallbackProxy)}
-     * operation and the RcsFeature sets the status of the capability to true using
-     * {@link #notifyCapabilitiesStatusChanged(RcsImsCapabilities)}.
-     *
-     * @return An instance of {@link RcsPresenceExchangeImplBase} that implements presence
+     * @return An instance of {@link RcsCapabilityExchangeImplBase} that implements presence
      * exchange if it is supported by the device.
      * @hide
      */
-    public @NonNull RcsPresenceExchangeImplBase getPresenceExchangeImpl() {
-        // Base Implementation, override to implement functionality.
-        return new RcsPresenceExchangeImplBase();
+    public @NonNull RcsCapabilityExchangeImplBase createCapabilityExchangeImpl() {
+        // Base Implementation, override to implement functionality
+        return new RcsCapabilityExchangeImplBase();
     }
 
     /**{@inheritDoc}*/
@@ -397,39 +416,20 @@
         return mImsRcsBinder;
     }
 
-    /**@hide*/
-    public IRcsFeatureListener getListener() {
-        synchronized (mLock) {
-            return mListenerBinder;
+    private void setCapabilityExchangeEventListener(ICapabilityExchangeEventListener listener) {
+        mCapExchangeEventListener = listener;
+        if (mCapExchangeEventListener != null) {
+            onFeatureReady();
         }
     }
 
-    private void setListener(IRcsFeatureListener listener) {
+    private RcsCapabilityExchangeImplBase getCapabilityExchangeImplBaseInternal() {
         synchronized (mLock) {
-            mListenerBinder = listener;
-            if (mListenerBinder != null) {
-                onFeatureReady();
+            if (mCapabilityExchangeImpl == null) {
+                mCapabilityExchangeImpl = createCapabilityExchangeImpl();
+                mCapabilityExchangeImpl.setEventListener(mCapExchangeEventListener);
             }
-        }
-    }
-
-    private RcsPresenceExchangeImplBase getPresenceExchangeInternal() {
-        synchronized (mLock) {
-            if (mPresExchange == null) {
-                mPresExchange = getPresenceExchangeImpl();
-                mPresExchange.initialize(this);
-            }
-            return mPresExchange;
-        }
-    }
-
-    private RcsSipOptionsImplBase getOptionsExchangeInternal() {
-        synchronized (mLock) {
-            if (mSipOptions == null) {
-                mSipOptions = getOptionsExchangeImpl();
-                mSipOptions.initialize(this);
-            }
-            return mSipOptions;
+            return mCapabilityExchangeImpl;
         }
     }
 }
diff --git a/telephony/java/android/telephony/ims/stub/DelegateConnectionMessageCallback.java b/telephony/java/android/telephony/ims/stub/DelegateConnectionMessageCallback.java
new file mode 100644
index 0000000..eefe849
--- /dev/null
+++ b/telephony/java/android/telephony/ims/stub/DelegateConnectionMessageCallback.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims.stub;
+
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
+import android.telephony.ims.SipDelegateConnection;
+import android.telephony.ims.SipDelegateManager;
+import android.telephony.ims.SipMessage;
+
+/**
+ * The callback associated with a {@link SipDelegateConnection}, which handles newly received
+ * messages as well as the result of sending a SIP message.
+ * @hide
+ */
+@SystemApi
+public interface DelegateConnectionMessageCallback {
+
+    /**
+     * A new {@link SipMessage} has been received from the delegate.
+     * @param message the {@link SipMessage} routed to this RCS application.
+     */
+    void onMessageReceived(@NonNull SipMessage message);
+
+    /**
+     * A message previously sent to the SIP delegate using
+     * {@link SipDelegateConnection#sendMessage} has been successfully sent.
+     * @param viaTransactionId The transaction ID found in the via header field of the
+     *                         previously sent {@link SipMessage}.
+     */
+    void onMessageSent(@NonNull String viaTransactionId);
+
+    /**
+     * A message previously sent to the SIP delegate using
+     * {@link SipDelegateConnection#sendMessage} has failed to be sent.
+     * @param viaTransactionId The Transaction ID found in the via header field of the
+     *                         previously sent {@link SipMessage}.
+     * @param reason The reason for the failure.
+     */
+    void onMessageSendFailure(@NonNull String viaTransactionId,
+            @SipDelegateManager.MessageFailureReason int reason);
+}
diff --git a/telephony/java/android/telephony/ims/stub/DelegateConnectionStateCallback.java b/telephony/java/android/telephony/ims/stub/DelegateConnectionStateCallback.java
new file mode 100644
index 0000000..02218ea
--- /dev/null
+++ b/telephony/java/android/telephony/ims/stub/DelegateConnectionStateCallback.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims.stub;
+
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
+import android.telephony.ims.DelegateRegistrationState;
+import android.telephony.ims.DelegateRequest;
+import android.telephony.ims.FeatureTagState;
+import android.telephony.ims.SipDelegateConnection;
+import android.telephony.ims.SipDelegateImsConfiguration;
+import android.telephony.ims.SipDelegateManager;
+
+import java.util.Set;
+
+/**
+ * The callback associated with a {@link SipDelegateConnection} that manages the state of the
+ * SipDelegateConnection.
+ * <p>
+ * After {@link SipDelegateManager#createSipDelegate} is used to request a new
+ * {@link SipDelegateConnection} be created, {@link #onCreated} will be called with the
+ * {@link SipDelegateConnection} instance that must be used to communicate with the remote
+ * {@link SipDelegate}.
+ * <p>
+ * After, {@link #onFeatureTagStatusChanged} will always be called at least once with the current
+ * status of the feature tags that have been requested. The application may receive multiple
+ * {@link #onFeatureTagStatusChanged} callbacks over the lifetime of the associated
+ * {@link SipDelegateConnection}, which will signal changes to how SIP messages associated with
+ * those feature tags will be handled.
+ * <p>
+ * In order to start sending SIP messages, the SIP configuration parameters will need to be
+ * received, so the messaging application should make no assumptions about these parameters and wait
+ * until {@link #onImsConfigurationChanged(SipDelegateImsConfiguration)} has been called. This is
+ * guaranteed to happen after the first {@link #onFeatureTagStatusChanged} if there is at least one
+ * feature tag that has been successfully associated with the {@link SipDelegateConnection}. If all
+ * feature tags were denied, no IMS configuration will be sent.
+ * <p>
+ * The {@link SipDelegateConnection} will stay associated with this RCS application until either the
+ * RCS application calls {@link SipDelegateManager#destroySipDelegate} or telephony destroys the
+ * {@link SipDelegateConnection}. In both cases, {@link #onDestroyed(int)}  will be called.
+ * Telephony destroying the {@link SipDelegateConnection} instance is rare and will only happen in
+ * rare cases, such as if telephony itself or IMS service dies unexpectedly. See
+ * {@link SipDelegateManager.SipDelegateDestroyReason} reasons for more information on all of the
+ * cases that will trigger the {@link SipDelegateConnection} to be destroyed.
+ *
+ * @hide
+ */
+@SystemApi
+public interface DelegateConnectionStateCallback {
+
+    /**
+     * A {@link SipDelegateConnection} has been successfully created for the
+     * {@link DelegateRequest} used when calling {@link SipDelegateManager#createSipDelegate}.
+     */
+    void onCreated(@NonNull SipDelegateConnection c);
+
+    /**
+     * The status of the RCS feature tags that were requested as part of the initial
+     * {@link DelegateRequest}.
+     * <p>
+     * There are four states that each RCS feature tag can be in: registered, deregistering,
+     * deregistered, and denied.
+     * <p>
+     * When a feature tag is considered registered, SIP messages associated with that feature tag
+     * may be sent and received freely.
+     * <p>
+     * When a feature tag is deregistering, the network IMS registration still contains the feature
+     * tag, however the IMS service and associated {@link SipDelegate} is in the progress of
+     * modifying the IMS registration to remove this feature tag and requires the application to
+     * perform an action before the IMS registration can change. The specific action required for
+     * the SipDelegate to continue modifying the IMS registration can be found in the definition of
+     * each {@link DelegateRegistrationState.DeregisteringReason}.
+     * <p>
+     * When a feature tag is in the deregistered state, new out-of-dialog SIP messages for that
+     * feature tag will be rejected, however due to network race conditions, the RCS application
+     * should still be able to handle new out-of-dialog SIP requests from the network. This may not
+     * be possible, however, if the IMS registration itself was lost. See the
+     * {@link DelegateRegistrationState.DeregisteredReason} reasons for more information on how SIP
+     * messages are handled in each of these cases.
+     * <p>
+     * If a feature tag is denied, no incoming messages will be routed to the associated
+     * {@link DelegateConnectionMessageCallback} and all outgoing SIP messages related to this
+     * feature tag will be rejected. See {@link SipDelegateManager.DeniedReason}
+     * reasons for more information about the conditions when this will happen.
+     * <p>
+     * The set of feature tags contained in the registered, deregistering, deregistered, and denied
+     * lists will always equal the set of feature tags requested in the initial
+     * {@link DelegateRequest}.
+     * <p>
+     * Transitions of feature tags from registered, deregistering, and deregistered and vice-versa
+     * may happen quite often, however transitions to/from denied are rare and only occur if the
+     * user has changed the role of your application to add/remove support for one or more requested
+     * feature tags or carrier provisioning has enabled or disabled single registration entirely.
+     * Please see {@link SipDelegateManager.DeniedReason} reasons for an explanation of each of
+     * these cases as well as what may cause them to change.
+     *
+     * @param registrationState The new IMS registration state of each of the feature tags
+     *     associated with the {@link SipDelegate}.
+     * @param deniedFeatureTags A list of {@link FeatureTagState} objects, each containing a feature
+     *     tag associated with this {@link SipDelegateConnection} that has no access to
+     *     send/receive SIP messages as well as a reason for why the feature tag is denied. For more
+     *     information on the reason why the feature tag was denied access, see the
+     *     {@link SipDelegateManager.DeniedReason} reasons.
+     */
+    void onFeatureTagStatusChanged(@NonNull DelegateRegistrationState registrationState,
+            @NonNull Set<FeatureTagState> deniedFeatureTags);
+
+
+    /**
+     * IMS configuration of the underlying IMS stack used by this IMS application for construction
+     * of the SIP messages that will be sent over the carrier's network.
+     * <p>
+     * There should never be assumptions made about the configuration of the underling IMS stack and
+     * the IMS application should wait for this indication before sending out any outgoing SIP
+     * messages.
+     * <p>
+     * Configuration may change due to IMS registration changes as well as
+     * other optional events on the carrier network. If IMS stack is already registered at the time
+     * of callback registration, then this method shall be invoked with the current configuration.
+     * Otherwise, there may be a delay in this method being called if initial IMS registration has
+     * not compleed yet.
+     *
+     * @param registeredSipConfig The configuration of the IMS stack registered on the IMS network.
+     */
+    void onImsConfigurationChanged(@NonNull SipDelegateImsConfiguration registeredSipConfig);
+
+    /**
+     * The previously created {@link SipDelegateConnection} instance delivered via
+     * {@link #onCreated(SipDelegateConnection)} has been destroyed. This interface should no longer
+     * be used for any SIP message handling.
+     *
+     * @param reason The reason for the failure.
+     */
+    void onDestroyed(@SipDelegateManager.SipDelegateDestroyReason int reason);
+}
diff --git a/telephony/java/android/telephony/ims/stub/ImsCallSessionImplBase.java b/telephony/java/android/telephony/ims/stub/ImsCallSessionImplBase.java
index 8f738d2..a3a6cb8 100644
--- a/telephony/java/android/telephony/ims/stub/ImsCallSessionImplBase.java
+++ b/telephony/java/android/telephony/ims/stub/ImsCallSessionImplBase.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Message;
 import android.os.RemoteException;
 import android.telephony.ims.ImsCallProfile;
@@ -27,10 +26,17 @@
 import android.telephony.ims.ImsReasonInfo;
 import android.telephony.ims.ImsStreamMediaProfile;
 import android.telephony.ims.ImsVideoCallProvider;
+import android.telephony.ims.RtpHeaderExtension;
+import android.telephony.ims.RtpHeaderExtensionType;
 import android.telephony.ims.aidl.IImsCallSessionListener;
+import android.util.ArraySet;
 
 import com.android.ims.internal.IImsCallSession;
 import com.android.ims.internal.IImsVideoCallProvider;
+
+import java.util.List;
+import java.util.Set;
+
 /**
  * Base implementation of IImsCallSession, which implements stub versions of the methods available.
  *
@@ -39,7 +45,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 // DO NOT remove or change the existing APIs, only add new ones to this Base implementation or you
 // will break other implementations of ImsCallSession maintained by other ImsServices.
 public class ImsCallSessionImplBase implements AutoCloseable {
@@ -279,6 +284,12 @@
         public void sendRttMessage(String rttMessage) {
             ImsCallSessionImplBase.this.sendRttMessage(rttMessage);
         }
+
+        @Override
+        public void sendRtpHeaderExtensions(@NonNull List<RtpHeaderExtension> extensions) {
+            ImsCallSessionImplBase.this.sendRtpHeaderExtensions(
+                    new ArraySet<RtpHeaderExtension>(extensions));
+        }
     };
 
     /**
@@ -638,6 +649,22 @@
     public void sendRttMessage(String rttMessage) {
     }
 
+    /**
+     * Device requests that {@code rtpHeaderExtensions} are sent as a header extension with the next
+     * RTP packet sent by the IMS stack.
+     * <p>
+     * The {@link RtpHeaderExtensionType}s negotiated during SDP (Session Description Protocol)
+     * signalling determine the {@link RtpHeaderExtension}s which can be sent using this method.
+     * See RFC8285 for more information.
+     * <p>
+     * By specification, the RTP header extension is an unacknowledged transmission and there is no
+     * guarantee that the header extension will be delivered by the network to the other end of the
+     * call.
+     * @param rtpHeaderExtensions The RTP header extensions to be included in the next RTP header.
+     */
+    public void sendRtpHeaderExtensions(@NonNull Set<RtpHeaderExtension> rtpHeaderExtensions) {
+    }
+
     /** @hide */
     public IImsCallSession getServiceImpl() {
         return mServiceImpl;
diff --git a/telephony/java/android/telephony/ims/stub/ImsConfigImplBase.java b/telephony/java/android/telephony/ims/stub/ImsConfigImplBase.java
index 4ef44d3..e0290a5 100644
--- a/telephony/java/android/telephony/ims/stub/ImsConfigImplBase.java
+++ b/telephony/java/android/telephony/ims/stub/ImsConfigImplBase.java
@@ -19,7 +19,6 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.content.Context;
 import android.os.PersistableBundle;
 import android.os.RemoteException;
@@ -51,7 +50,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public class ImsConfigImplBase {
 
     private static final String TAG = "ImsConfigImplBase";
diff --git a/telephony/java/android/telephony/ims/stub/ImsEcbmImplBase.java b/telephony/java/android/telephony/ims/stub/ImsEcbmImplBase.java
index 4a3a2ea..06c35ea 100644
--- a/telephony/java/android/telephony/ims/stub/ImsEcbmImplBase.java
+++ b/telephony/java/android/telephony/ims/stub/ImsEcbmImplBase.java
@@ -17,7 +17,6 @@
 package android.telephony.ims.stub;
 
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.RemoteException;
 import android.util.Log;
 
@@ -34,7 +33,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public class ImsEcbmImplBase {
     private static final String TAG = "ImsEcbmImplBase";
 
diff --git a/telephony/java/android/telephony/ims/stub/ImsFeatureConfiguration.java b/telephony/java/android/telephony/ims/stub/ImsFeatureConfiguration.java
index 4e7307e..cd9ebbf 100644
--- a/telephony/java/android/telephony/ims/stub/ImsFeatureConfiguration.java
+++ b/telephony/java/android/telephony/ims/stub/ImsFeatureConfiguration.java
@@ -19,7 +19,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.telephony.ims.feature.ImsFeature;
@@ -36,7 +35,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class ImsFeatureConfiguration implements Parcelable {
 
     public static final class FeatureSlotPair {
diff --git a/telephony/java/android/telephony/ims/stub/ImsMultiEndpointImplBase.java b/telephony/java/android/telephony/ims/stub/ImsMultiEndpointImplBase.java
index 0ae5bba..d002903 100644
--- a/telephony/java/android/telephony/ims/stub/ImsMultiEndpointImplBase.java
+++ b/telephony/java/android/telephony/ims/stub/ImsMultiEndpointImplBase.java
@@ -17,7 +17,6 @@
 package android.telephony.ims.stub;
 
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.RemoteException;
 import android.telephony.ims.ImsExternalCallState;
 import android.util.Log;
@@ -38,7 +37,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public class ImsMultiEndpointImplBase {
     private static final String TAG = "MultiEndpointImplBase";
 
diff --git a/telephony/java/android/telephony/ims/stub/ImsRegistrationImplBase.java b/telephony/java/android/telephony/ims/stub/ImsRegistrationImplBase.java
index 2cdf70e..153d687 100644
--- a/telephony/java/android/telephony/ims/stub/ImsRegistrationImplBase.java
+++ b/telephony/java/android/telephony/ims/stub/ImsRegistrationImplBase.java
@@ -17,8 +17,9 @@
 package android.telephony.ims.stub;
 
 import android.annotation.IntDef;
+import android.annotation.IntRange;
+import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.net.Uri;
 import android.os.RemoteException;
 import android.telephony.ims.ImsReasonInfo;
@@ -40,7 +41,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public class ImsRegistrationImplBase {
 
     private static final String LOG_TAG = "ImsRegistrationImplBase";
@@ -49,8 +49,7 @@
      * @hide
      */
     // Defines the underlying radio technology type that we have registered for IMS over.
-    @IntDef(flag = true,
-            value = {
+    @IntDef(value = {
                     REGISTRATION_TECH_NONE,
                     REGISTRATION_TECH_LTE,
                     REGISTRATION_TECH_IWLAN
@@ -128,6 +127,57 @@
     }
 
     /**
+     * Called by the framework to request that the ImsService perform the network registration
+     * of all SIP delegates associated with this ImsService.
+     * <p>
+     * If the SIP delegate feature tag configuration has changed, then this method will be
+     * called in order to let the ImsService know that it can pick up these changes in the IMS
+     * registration.
+     * @hide
+     */
+    public void updateSipDelegateRegistration() {
+        // Stub implementation, ImsService should implement this
+    }
+
+
+    /**
+     * Called by the framework to request that the ImsService perform the network deregistration of
+     * all SIP delegates associated with this ImsService.
+     * <p>
+     * This is typically called in situations where the user has changed the configuration of the
+     * device (for example, the default messaging application) and the framework is reconfiguring
+     * the tags associated with each IMS application.
+     * <p>
+     * This should not affect the registration of features managed by the ImsService itself, such as
+     * feature tags related to MMTEL registration.
+     * @hide
+     */
+    public void triggerSipDelegateDeregistration() {
+        // Stub implementation, ImsService should implement this
+    }
+
+    /**
+     * Called by the framework to notify the ImsService that a SIP delegate connection has received
+     * a SIP message containing a permanent failure response (such as a 403) or an indication that a
+     * SIP response timer has timed out in response to an outgoing SIP message. This method will be
+     * called when this condition occurs to trigger the ImsService to tear down the full IMS
+     * registration and re-register again.
+     *
+     * @param sipCode The SIP error code that represents a permanent failure that was received in
+     *    response to a request generated by the IMS application. See RFC3261 7.2 for the general
+     *    classes of responses available here, however the codes that generate this condition may
+     *    be carrier specific.
+     * @param sipReason The reason associated with the SIP error code. {@code null} if there was no
+     *    reason associated with the error.
+     * @hide
+     */
+    public void triggerNetworkReregistration(@IntRange(from = 100, to = 699) int sipCode,
+            @Nullable String sipReason) {
+        // Stub implementation, ImsService should implement this
+    }
+
+
+    /**
      * Notify the framework that the device is connected to the IMS network.
      *
      * @param imsRadioTech the radio access technology. Valid values are defined as
diff --git a/telephony/java/android/telephony/ims/stub/ImsSmsImplBase.java b/telephony/java/android/telephony/ims/stub/ImsSmsImplBase.java
index a9a33c0..2783e29 100644
--- a/telephony/java/android/telephony/ims/stub/ImsSmsImplBase.java
+++ b/telephony/java/android/telephony/ims/stub/ImsSmsImplBase.java
@@ -19,7 +19,6 @@
 import android.annotation.IntDef;
 import android.annotation.IntRange;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.RemoteException;
 import android.telephony.SmsManager;
 import android.telephony.SmsMessage;
@@ -38,7 +37,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public class ImsSmsImplBase {
     private static final String LOG_TAG = "SmsImplBase";
 
diff --git a/telephony/java/android/telephony/ims/stub/ImsUtImplBase.java b/telephony/java/android/telephony/ims/stub/ImsUtImplBase.java
index 8564f7a..f5219d5 100644
--- a/telephony/java/android/telephony/ims/stub/ImsUtImplBase.java
+++ b/telephony/java/android/telephony/ims/stub/ImsUtImplBase.java
@@ -20,7 +20,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Bundle;
 import android.os.RemoteException;
 import android.telephony.ims.ImsUtListener;
@@ -40,7 +39,6 @@
 // DO NOT remove or change the existing APIs, only add new ones to this Base implementation or you
 // will break other implementations of ImsUt maintained by other ImsServices.
 @SystemApi
-@TestApi
 public class ImsUtImplBase {
     /**
      * Bar all incoming calls. (See 3GPP TS 24.611)
diff --git a/telephony/java/android/telephony/ims/stub/RcsCapabilityExchange.java b/telephony/java/android/telephony/ims/stub/RcsCapabilityExchange.java
index fda295a..0b13efb 100644
--- a/telephony/java/android/telephony/ims/stub/RcsCapabilityExchange.java
+++ b/telephony/java/android/telephony/ims/stub/RcsCapabilityExchange.java
@@ -87,12 +87,8 @@
 
     /** @hide */
     protected final IRcsFeatureListener getListener() throws ImsException {
-        IRcsFeatureListener listener = mFeature.getListener();
-        if (listener == null) {
-            throw new ImsException("Connection to Framework has not been established, wait for "
-                    + "onFeatureReady().", ImsException.CODE_ERROR_SERVICE_UNAVAILABLE);
-        }
-        return mFeature.getListener();
+        throw new ImsException("This method is deprecated.",
+                ImsException.CODE_ERROR_UNSUPPORTED_OPERATION);
     }
 
     /**
diff --git a/telephony/java/android/telephony/ims/stub/RcsCapabilityExchangeImplBase.java b/telephony/java/android/telephony/ims/stub/RcsCapabilityExchangeImplBase.java
new file mode 100644
index 0000000..b5704bf
--- /dev/null
+++ b/telephony/java/android/telephony/ims/stub/RcsCapabilityExchangeImplBase.java
@@ -0,0 +1,338 @@
+/*
+ * Copyright (c) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims.stub;
+
+import android.annotation.IntDef;
+import android.annotation.IntRange;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.net.Uri;
+import android.telephony.ims.ImsException;
+import android.telephony.ims.aidl.ICapabilityExchangeEventListener;
+import android.util.Log;
+import android.util.Pair;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.List;
+
+/**
+ * Base class for different types of Capability exchange.
+ * @hide
+ */
+public class RcsCapabilityExchangeImplBase {
+
+    private static final String LOG_TAG = "RcsCapExchangeImplBase";
+
+    /**
+     * Service is unknown.
+     */
+    public static final int COMMAND_CODE_SERVICE_UNKNOWN = 0;
+
+    /**
+     * The command failed with an unknown error.
+     */
+    public static final int COMMAND_CODE_GENERIC_FAILURE = 1;
+
+    /**
+     * Invalid parameter(s).
+     */
+    public static final int COMMAND_CODE_INVALID_PARAM = 2;
+
+    /**
+     * Fetch error.
+     */
+    public static final int COMMAND_CODE_FETCH_ERROR = 3;
+
+    /**
+     * Request timed out.
+     */
+    public static final int COMMAND_CODE_REQUEST_TIMEOUT = 4;
+
+    /**
+     * Failure due to insufficient memory available.
+     */
+    public static final int COMMAND_CODE_INSUFFICIENT_MEMORY = 5;
+
+    /**
+     * Network connection is lost.
+     * @hide
+     */
+    public static final int COMMAND_CODE_LOST_NETWORK_CONNECTION = 6;
+
+    /**
+     * Requested feature/resource is not supported.
+     * @hide
+     */
+    public static final int COMMAND_CODE_NOT_SUPPORTED = 7;
+
+    /**
+     * Contact or resource is not found.
+     */
+    public static final int COMMAND_CODE_NOT_FOUND = 8;
+
+    /**
+     * Service is not available.
+     */
+    public static final int COMMAND_CODE_SERVICE_UNAVAILABLE = 9;
+
+    /**
+     * Command resulted in no change in state, ignoring.
+     */
+    public static final int COMMAND_CODE_NO_CHANGE = 10;
+
+    /**@hide*/
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = "COMMAND_CODE_", value = {
+            COMMAND_CODE_SERVICE_UNKNOWN,
+            COMMAND_CODE_GENERIC_FAILURE,
+            COMMAND_CODE_INVALID_PARAM,
+            COMMAND_CODE_FETCH_ERROR,
+            COMMAND_CODE_REQUEST_TIMEOUT,
+            COMMAND_CODE_INSUFFICIENT_MEMORY,
+            COMMAND_CODE_LOST_NETWORK_CONNECTION,
+            COMMAND_CODE_NOT_SUPPORTED,
+            COMMAND_CODE_NOT_FOUND,
+            COMMAND_CODE_SERVICE_UNAVAILABLE,
+            COMMAND_CODE_NO_CHANGE
+    })
+    public @interface CommandCode {}
+
+    /**
+     * Interface used by the framework to receive the response of the publish request.
+     */
+    public interface PublishResponseCallback {
+        /**
+         * Notify the framework that the command associated with this callback has failed.
+         *
+         * @param code The reason why the associated command has failed.
+         * @throws ImsException If this {@link RcsCapabilityExchangeImplBase} instance is
+         * not currently connected to the framework. This can happen if the {@link RcsFeature}
+         * is not {@link ImsFeature#STATE_READY} and the {@link RcsFeature} has not received
+         * the {@link ImsFeature#onFeatureReady()} callback. This may also happen in rare cases
+         * when the Telephony stack has crashed.
+         */
+        void onCommandError(@CommandCode int code) throws ImsException;
+
+
+        /**
+         * Provide the framework with a subsequent network response update to
+         * {@link #publishCapabilities(String, PublishResponseCallback)}.
+         *
+         * @param code The SIP response code sent from the network for the operation
+         * token specified.
+         * @param reason The optional reason response from the network. If the network
+         *  provided no reason with the code, the string should be empty.
+         * @throws ImsException If this {@link RcsCapabilityExchangeImplBase} instance is
+         * not currently connected to the framework. This can happen if the {@link RcsFeature}
+         * is not {@link ImsFeature#STATE_READY} and the {@link RcsFeature} has not received
+         * the {@link ImsFeature#onFeatureReady()} callback. This may also happen in rare cases
+         * when the Telephony stack has crashed.
+         */
+        void onNetworkResponse(@IntRange(from = 100, to = 699) int code,
+                @NonNull String reason) throws ImsException;
+    }
+
+    /**
+     * Interface used by the framework to respond to OPTIONS requests.
+     */
+    public interface OptionsResponseCallback {
+        /**
+         * Notify the framework that the command associated with this callback has failed.
+         *
+         * @param code The reason why the associated command has failed.
+         * @throws ImsException If this {@link RcsCapabilityExchangeImplBase} instance is
+         * not currently connected to the framework. This can happen if the
+         * {@link RcsFeature} is not {@link ImsFeature#STATE_READY} and the {@link RcsFeature}
+         * has not received the {@link ImsFeature#onFeatureReady()} callback. This may also happen
+         * in rare cases when the Telephony stack has crashed.
+         */
+        void onCommandError(@CommandCode int code) throws ImsException;
+
+        /**
+         * Send the response of a SIP OPTIONS capability exchange to the framework.
+         * @param code The SIP response code that was sent by the network in response
+         * to the request sent by {@link #sendOptionsCapabilityRequest}.
+         * @param reason The optional SIP response reason sent by the network.
+         * If none was sent, this should be an empty string.
+         * @param theirCaps the contact's UCE capabilities associated with the
+         * capability request.
+         * @throws ImsException If this {@link RcsSipOptionsImplBase} instance is not
+         * currently connected to the framework. This can happen if the
+         * {@link RcsFeature} is not {@link ImsFeature#STATE_READY} and the
+         * {@link RcsFeature} has not received the
+         * {@link ImsFeature#onFeatureReady()} callback. This may also happen in rare
+         * cases when the Telephony stack has crashed.
+         */
+        void onNetworkResponse(int code, @NonNull String reason,
+                @Nullable List<String> theirCaps) throws ImsException;
+    }
+
+    /**
+     * Interface used by the framework to receive the response of the subscribe request.
+     */
+    public interface SubscribeResponseCallback {
+        /**
+         * Notify the framework that the command associated with this callback has failed.
+         *
+         * @param code The reason why the associated command has failed.
+         * @throws ImsException If this {@link RcsCapabilityExchangeImplBase} instance is
+         * not currently connected to the framework. This can happen if the
+         * {@link RcsFeature} is not
+         * {@link ImsFeature#STATE_READY} and the {@link RcsFeature} has not received
+         * the {@link ImsFeature#onFeatureReady()} callback. This may also happen in
+         * rare cases when the Telephony stack has crashed.
+         */
+        void onCommandError(@CommandCode int code) throws ImsException;
+
+        /**
+         * Notify the framework of the response to the SUBSCRIBE request from
+         * {@link #subscribeForCapabilities(List<Uri>, SubscribeResponseCallback)}.
+         *
+         * @param code The SIP response code sent from the network for the operation
+         * token specified.
+         * @param reason The optional reason response from the network. If the network
+         *  provided no reason with the code, the string should be empty.
+         * @throws ImsException If this {@link RcsCapabilityExchangeImplBase} instance is
+         * not currently connected to the framework. This can happen if the
+         * {@link RcsFeature} is not {@link ImsFeature#STATE_READY} and the
+         * {@link RcsFeature} has not received the {@link ImsFeature#onFeatureReady()} callback.
+         * This may also happen in rare cases when the Telephony stack has crashed.
+         */
+        void onNetworkResponse(@IntRange(from = 100, to = 699) int code,
+                @NonNull String reason) throws ImsException;
+
+        /**
+         * Provides the framework with latest XML PIDF documents included in the
+         * network response for the requested  contacts' capabilities requested by the
+         * Framework  using {@link #requestCapabilities(List, int)}. This should be
+         * called every time a new NOTIFY event is received with new capability
+         * information.
+         *
+         * @throws ImsException If this {@link RcsCapabilityExchangeImplBase} instance is
+         * not currently
+         * connected to the framework. This can happen if the {@link RcsFeature} is not
+         * {@link ImsFeature#STATE_READY} and the {@link RcsFeature} has not received
+         * the {@link ImsFeature#onFeatureReady()} callback. This may also happen in
+         * rare cases when the
+         * Telephony stack has crashed.
+         */
+        void onNotifyCapabilitiesUpdate(@NonNull List<String> pidfXmls) throws ImsException;
+
+        /**
+         * A resource in the resource list for the presence subscribe event has been terminated.
+         * <p>
+         * This allows the framework to know that there will not be any capability information for
+         * a specific contact URI that they subscribed for.
+         */
+        void onResourceTerminated(
+                @NonNull List<Pair<Uri, String>> uriTerminatedReason) throws ImsException;
+
+        /**
+         * The subscription associated with a previous #requestCapabilities operation
+         * has been terminated. This will mostly be due to the subscription expiring,
+         * but may also happen due to an error.
+         * <p>
+         * This allows the framework to know that there will no longer be any
+         * capability updates for the requested operationToken.
+         */
+        void onTerminated(String reason, String retryAfter) throws ImsException;
+    }
+
+
+    private ICapabilityExchangeEventListener mListener;
+
+    /**
+     * Set the event listener to send the request to Framework.
+     */
+    public void setEventListener(ICapabilityExchangeEventListener listener) {
+        mListener = listener;
+    }
+
+    /**
+     * Get the event listener.
+     */
+    public ICapabilityExchangeEventListener getEventListener() {
+        return mListener;
+    }
+
+    /**
+     * The user capabilities of one or multiple contacts have been requested by the framework.
+     * <p>
+     * The response from the network to the SUBSCRIBE request must be sent back to the framework
+     * using {@link #onSubscribeNetworkResponse(int, String, int)}. As NOTIFY requests come in from
+     * the network, the requested contact’s capabilities should be sent back to the framework using
+     * {@link #onSubscribeNotifyRequest} and {@link onSubscribeResourceTerminated}
+     * should be called with the presence information for the contacts specified.
+     * <p>
+     * Once the subscription is terminated, {@link #onSubscriptionTerminated} must be called for
+     * the framework to finish listening for NOTIFY responses.
+     * @param uris A {@link List} of the {@link Uri}s that the framework is requesting the UCE
+     * capabilities for.
+     * @param cb The callback of the subscribe request.
+     */
+    public void subscribeForCapabilities(@NonNull List<Uri> uris,
+            @NonNull SubscribeResponseCallback cb) {
+        // Stub - to be implemented by service
+        Log.w(LOG_TAG, "subscribeForCapabilities called with no implementation.");
+        try {
+            cb.onCommandError(COMMAND_CODE_NOT_SUPPORTED);
+        } catch (ImsException e) {
+            // Do not do anything, this is a stub implementation.
+        }
+    }
+
+    /**
+     * The capabilities of this device have been updated and should be published to the network.
+     * <p>
+     * If this operation succeeds, network response updates should be sent to the framework using
+     * {@link #onNetworkResponse(int, String)}.
+     * @param pidfXml The XML PIDF document containing the capabilities of this device to be sent
+     * to the carrier’s presence server.
+     * @param cb The callback of the publish request
+     */
+    public void publishCapabilities(@NonNull String pidfXml, @NonNull PublishResponseCallback cb) {
+        // Stub - to be implemented by service
+        Log.w(LOG_TAG, "publishCapabilities called with no implementation.");
+        try {
+            cb.onCommandError(COMMAND_CODE_NOT_SUPPORTED);
+        } catch (ImsException e) {
+            // Do not do anything, this is a stub implementation.
+        }
+    }
+
+    /**
+     * Push one's own capabilities to a remote user via the SIP OPTIONS presence exchange mechanism
+     * in order to receive the capabilities of the remote user in response.
+     * <p>
+     * The implementer must call {@link #onNetworkResponse} to send the response of this
+     * query back to the framework.
+     * @param contactUri The URI of the remote user that we wish to get the capabilities of.
+     * @param myCapabilities The capabilities of this device to send to the remote user.
+     * @param callback The callback of this request which is sent from the remote user.
+     */
+    public void sendOptionsCapabilityRequest(@NonNull Uri contactUri,
+            @NonNull List<String> myCapabilities, @NonNull OptionsResponseCallback callback) {
+        // Stub - to be implemented by service
+        Log.w(LOG_TAG, "sendOptionsCapabilityRequest called with no implementation.");
+        try {
+            callback.onCommandError(COMMAND_CODE_NOT_SUPPORTED);
+        } catch (ImsException e) {
+            // Do not do anything, this is a stub implementation.
+        }
+    }
+}
diff --git a/telephony/java/android/telephony/ims/stub/SipDelegate.java b/telephony/java/android/telephony/ims/stub/SipDelegate.java
new file mode 100644
index 0000000..d7e7b62
--- /dev/null
+++ b/telephony/java/android/telephony/ims/stub/SipDelegate.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims.stub;
+
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
+import android.telephony.ims.DelegateMessageCallback;
+import android.telephony.ims.ImsService;
+import android.telephony.ims.SipDelegateImsConfiguration;
+import android.telephony.ims.SipDelegateManager;
+import android.telephony.ims.SipMessage;
+
+/**
+ * The {@link SipDelegate} is implemented by the {@link ImsService} and allows a privileged
+ * IMS application to use this delegate to send SIP messages as well as acknowledge the receipt of
+ * incoming SIP messages delivered to the application over the existing IMS registration, allowing
+ * for a single IMS registration for multiple IMS applications.
+ * <p>
+ * Once the SIP delegate is created for that application,
+ * {@link ImsRegistrationImplBase#updateSipDelegateRegistration()} will be called, indicating that
+ * the application is finished setting up SipDelegates and the existing IMS registration may be
+ * modified to include the features managed by these SipDelegates.
+ * <p>
+ * This SipDelegate will need to notify the remote application of the registration of these features
+ * as well as the associated {@link SipDelegateImsConfiguration} before the application can start
+ * sending/receiving SIP messages via the transport. See
+ * {@link android.telephony.ims.DelegateStateCallback} for more information.
+ * @hide
+ */
+@SystemApi
+public interface SipDelegate {
+
+    /**
+     * The framework calls this method when a remote RCS application wishes to send a new outgoing
+     * SIP message.
+     * <p>
+     * Once sent, this SIP delegate should notify the remote application of the success or
+     * failure using {@link DelegateMessageCallback#onMessageSent(String)} or
+     * {@link DelegateMessageCallback#onMessageSendFailure(String, int)}.
+     * @param message The SIP message to be sent over the operator’s network.
+     * @param configVersion The SipDelegateImsConfiguration version used to construct the
+     *         SipMessage. See {@link SipDelegateImsConfiguration} for more information. If the
+     *         version specified here does not match the most recently constructed
+     *         {@link SipDelegateImsConfiguration}, this message should fail validation checks and
+     *         {@link DelegateMessageCallback#onMessageSendFailure} should be called with code
+     *         {@link SipDelegateManager#MESSAGE_FAILURE_REASON_STALE_IMS_CONFIGURATION}.
+     */
+    void sendMessage(@NonNull SipMessage message, long configVersion);
+
+    /**
+     * The framework is requesting that routing resources associated with the SIP dialog using the
+     * provided Call-ID to be cleaned up.
+     * <p>
+     * Typically a SIP Dialog close event will be signalled by that dialog receiving a BYE or 200 OK
+     * message, however, in some cases, the framework will request that the ImsService close the
+     * dialog due to the open dialog holding up an event such as applying a provisioning change or
+     * handing over to another transport type.
+     * @param callId The call-ID header value associated with the ongoing SIP Dialog that the
+     *         framework is requesting be closed.
+     */
+    void closeDialog(@NonNull String callId);
+
+    /**
+     * The remote application has received the SIP message and is processing it.
+     * @param viaTransactionId The Transaction ID found in the via header field of the
+     *                         previously sent {@link SipMessage}.
+     */
+    void notifyMessageReceived(@NonNull String viaTransactionId);
+
+    /**
+     * The remote application has either not received the SIP message or there was an error
+     * processing it.
+     * @param viaTransactionId The Transaction ID found in the via header field of the
+     *                         previously sent {@link SipMessage}.
+     * @param reason The reason why the message was not correctly received.
+     */
+    void notifyMessageReceiveError(@NonNull String viaTransactionId,
+            @SipDelegateManager.MessageFailureReason int reason);
+}
diff --git a/telephony/java/android/telephony/ims/stub/SipTransportImplBase.java b/telephony/java/android/telephony/ims/stub/SipTransportImplBase.java
new file mode 100644
index 0000000..1f74c09
--- /dev/null
+++ b/telephony/java/android/telephony/ims/stub/SipTransportImplBase.java
@@ -0,0 +1,181 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims.stub;
+
+import android.annotation.NonNull;
+import android.annotation.SuppressLint;
+import android.annotation.SystemApi;
+import android.os.Binder;
+import android.os.IBinder;
+import android.telephony.ims.DelegateMessageCallback;
+import android.telephony.ims.DelegateRequest;
+import android.telephony.ims.DelegateStateCallback;
+import android.telephony.ims.SipDelegateManager;
+import android.telephony.ims.aidl.ISipDelegate;
+import android.telephony.ims.aidl.ISipDelegateMessageCallback;
+import android.telephony.ims.aidl.ISipDelegateStateCallback;
+import android.telephony.ims.aidl.ISipTransport;
+import android.telephony.ims.aidl.SipDelegateAidlWrapper;
+import android.util.Log;
+
+import java.util.ArrayList;
+import java.util.Objects;
+import java.util.concurrent.Executor;
+
+/**
+ * The ImsService implements this class to manage the creation and destruction of
+ * {@link SipDelegate}s.
+ *
+ * {@link SipDelegate}s allow the ImsService to forward SIP traffic generated and consumed by IMS
+ * applications as a delegate to the associated carrier's IMS Network in order to support using a
+ * single IMS registration for all MMTEL and RCS signalling traffic.
+ * @hide
+ */
+@SystemApi
+public class SipTransportImplBase {
+    private static final String LOG_TAG = "SipTransportIB";
+
+    private IBinder.DeathRecipient mDeathRecipient = new IBinder.DeathRecipient() {
+        @Override
+        public void binderDied() {
+            mBinderExecutor.execute(() -> binderDiedInternal());
+        }
+    };
+
+    private final ISipTransport.Stub mSipTransportImpl = new ISipTransport.Stub() {
+        @Override
+        public void createSipDelegate(int subId, DelegateRequest request,
+                ISipDelegateStateCallback dc, ISipDelegateMessageCallback mc) {
+            final long token = Binder.clearCallingIdentity();
+            try {
+                mBinderExecutor.execute(() -> createSipDelegateInternal(subId, request, dc, mc));
+            } finally {
+                Binder.restoreCallingIdentity(token);
+            }
+        }
+
+        @Override
+        public void destroySipDelegate(ISipDelegate delegate, int reason) {
+            final long token = Binder.clearCallingIdentity();
+            try {
+                mBinderExecutor.execute(() -> destroySipDelegateInternal(delegate, reason));
+            } finally {
+                Binder.restoreCallingIdentity(token);
+            }
+        }
+    };
+
+    private final Executor mBinderExecutor;
+    private final ArrayList<SipDelegateAidlWrapper> mDelegates = new ArrayList<>();
+
+    /**
+     * Create an implementation of SipTransportImplBase.
+     *
+     * @param executor The executor that remote calls from the framework will be called on. This
+     *                 includes the methods here as well as the methods in {@link SipDelegate}.
+     */
+    public SipTransportImplBase(@NonNull Executor executor) {
+        if (executor == null) {
+            throw new IllegalArgumentException("executor must not be null");
+        }
+
+        mBinderExecutor = executor;
+    }
+
+    /**
+     * Called by the Telephony framework to request the creation of a new {@link SipDelegate}.
+     * <p>
+     * The implementation must call
+     * {@link DelegateStateCallback#onCreated(SipDelegate, java.util.Set)} with
+     * the {@link SipDelegate} that is associated with the {@link DelegateRequest}.
+     * <p>
+     * This method will be called on the Executor specified in
+     * {@link SipTransportImplBase#SipTransportImplBase(Executor)}.
+     *
+     * @param subscriptionId The subscription ID associated with the requested {@link SipDelegate}.
+     * @param request A SIP delegate request containing the parameters that the remote RCS
+     * application wishes to use.
+     * @param dc A callback back to the remote application to be used to communicate state callbacks
+     *           for the SipDelegate.
+     * @param mc A callback back to the remote application to be used to send SIP messages to the
+     *           remote application and acknowledge the sending of outgoing SIP messages.
+     */
+    // executor used is defined in the constructor.
+    @SuppressLint("ExecutorRegistration")
+    public void createSipDelegate(int subscriptionId, @NonNull DelegateRequest request,
+            @NonNull DelegateStateCallback dc, @NonNull DelegateMessageCallback mc) {
+        throw new UnsupportedOperationException("createSipDelegate not implemented!");
+    }
+
+    /**
+     * Destroys the SipDelegate associated with a remote IMS application.
+     * <p>
+     * After the delegate is destroyed, {@link DelegateStateCallback#onDestroyed(int)} must be
+     * called to notify listeners of its destruction to release associated resources.
+     * <p>
+     * This method will be called on the Executor specified in
+     * {@link SipTransportImplBase#SipTransportImplBase(Executor)}.
+     * @param delegate The delegate to be destroyed.
+     * @param reason The reason the remote connection to this {@link SipDelegate} is being
+     *         destroyed.
+     */
+    public void destroySipDelegate(@NonNull SipDelegate delegate,
+            @SipDelegateManager.SipDelegateDestroyReason int reason) {
+        throw new UnsupportedOperationException("destroySipDelegate not implemented!");
+    }
+
+    private void createSipDelegateInternal(int subId, DelegateRequest r,
+            ISipDelegateStateCallback cb, ISipDelegateMessageCallback mc) {
+        SipDelegateAidlWrapper wrapper = new SipDelegateAidlWrapper(mBinderExecutor, cb, mc);
+        mDelegates.add(wrapper);
+        createSipDelegate(subId, r, wrapper, wrapper);
+    }
+
+    private void destroySipDelegateInternal(ISipDelegate d, int reason) {
+        SipDelegateAidlWrapper result = null;
+        for (SipDelegateAidlWrapper w : mDelegates) {
+            if (Objects.equals(d, w.getDelegateBinder())) {
+                result = w;
+                break;
+            }
+        }
+
+        if (result != null) {
+            mDelegates.remove(result);
+            destroySipDelegate(result.getDelegate(), reason);
+        } else {
+            Log.w(LOG_TAG, "destroySipDelegateInternal, could not findSipDelegate corresponding to "
+                    + d);
+        }
+    }
+
+    private void binderDiedInternal() {
+        for (SipDelegateAidlWrapper w : mDelegates) {
+            destroySipDelegate(w.getDelegate(),
+                    SipDelegateManager.SIP_DELEGATE_DESTROY_REASON_SERVICE_DEAD);
+        }
+        mDelegates.clear();
+    }
+
+    /**
+     * @return The IInterface used by the framework.
+     * @hide
+     */
+    public ISipTransport getBinder() {
+        return mSipTransportImpl;
+    }
+}
diff --git a/telephony/java/android/telephony/mbms/DownloadRequest.java b/telephony/java/android/telephony/mbms/DownloadRequest.java
index ac258cd..eb59f87 100644
--- a/telephony/java/android/telephony/mbms/DownloadRequest.java
+++ b/telephony/java/android/telephony/mbms/DownloadRequest.java
@@ -19,7 +19,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Parcel;
@@ -186,7 +185,6 @@
          * @hide
          */
         @SystemApi
-        @TestApi
         public Builder setServiceId(String serviceId) {
             fileServiceId = serviceId;
             return this;
diff --git a/telephony/java/android/telephony/mbms/FileInfo.java b/telephony/java/android/telephony/mbms/FileInfo.java
index ada2872..e52b2ce 100644
--- a/telephony/java/android/telephony/mbms/FileInfo.java
+++ b/telephony/java/android/telephony/mbms/FileInfo.java
@@ -17,7 +17,6 @@
 package android.telephony.mbms;
 
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.net.Uri;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -50,7 +49,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public FileInfo(Uri uri, String mimeType) {
         this.uri = uri;
         this.mimeType = mimeType;
diff --git a/telephony/java/android/telephony/mbms/FileServiceInfo.java b/telephony/java/android/telephony/mbms/FileServiceInfo.java
index 8c79ab6..8777e7f 100644
--- a/telephony/java/android/telephony/mbms/FileServiceInfo.java
+++ b/telephony/java/android/telephony/mbms/FileServiceInfo.java
@@ -17,7 +17,6 @@
 package android.telephony.mbms;
 
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -36,7 +35,6 @@
 
     /** @hide */
     @SystemApi
-    @TestApi
     public FileServiceInfo(Map<Locale, String> newNames, String newClassName,
             List<Locale> newLocales, String newServiceId, Date start, Date end,
             List<FileInfo> newFiles) {
diff --git a/telephony/java/android/telephony/mbms/StreamingServiceInfo.java b/telephony/java/android/telephony/mbms/StreamingServiceInfo.java
index 8ad1d89..316e8656 100644
--- a/telephony/java/android/telephony/mbms/StreamingServiceInfo.java
+++ b/telephony/java/android/telephony/mbms/StreamingServiceInfo.java
@@ -17,7 +17,6 @@
 package android.telephony.mbms;
 
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -42,7 +41,6 @@
      * @hide
      */
     @SystemApi
-    @TestApi
     public StreamingServiceInfo(Map<Locale, String> names, String className,
             List<Locale> locales, String serviceId, Date start, Date end) {
         super(names, className, locales, serviceId, start, end);
diff --git a/telephony/java/android/telephony/mbms/UriPathPair.java b/telephony/java/android/telephony/mbms/UriPathPair.java
index f53d7e0..9258919 100644
--- a/telephony/java/android/telephony/mbms/UriPathPair.java
+++ b/telephony/java/android/telephony/mbms/UriPathPair.java
@@ -17,7 +17,6 @@
 package android.telephony.mbms;
 
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.content.ContentResolver;
 import android.net.Uri;
 import android.os.Parcel;
@@ -30,7 +29,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public final class UriPathPair implements Parcelable {
     private final Uri mFilePathUri;
     private final Uri mContentUri;
diff --git a/telephony/java/android/telephony/mbms/vendor/IMbmsStreamingService.aidl b/telephony/java/android/telephony/mbms/vendor/IMbmsStreamingService.aidl
index c1401272..a4abfac 100755
--- a/telephony/java/android/telephony/mbms/vendor/IMbmsStreamingService.aidl
+++ b/telephony/java/android/telephony/mbms/vendor/IMbmsStreamingService.aidl
@@ -26,17 +26,17 @@
  */
 interface IMbmsStreamingService
 {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     int initialize(IMbmsStreamingSessionCallback callback, int subId);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     int requestUpdateStreamingServices(int subId, in List<String> serviceClasses);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     int startStreaming(int subId, String serviceId,
             IStreamingServiceCallback callback);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     Uri getPlaybackUri(int subId, String serviceId);
 
     void stopStreaming(int subId, String serviceId);
diff --git a/telephony/java/android/telephony/mbms/vendor/MbmsDownloadServiceBase.java b/telephony/java/android/telephony/mbms/vendor/MbmsDownloadServiceBase.java
index 3053ea0..ffc1d2e 100644
--- a/telephony/java/android/telephony/mbms/vendor/MbmsDownloadServiceBase.java
+++ b/telephony/java/android/telephony/mbms/vendor/MbmsDownloadServiceBase.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.content.Intent;
 import android.os.Binder;
 import android.os.IBinder;
@@ -45,7 +44,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public class MbmsDownloadServiceBase extends IMbmsDownloadService.Stub {
     private final Map<IBinder, DownloadStatusListener> mDownloadStatusListenerBinderMap =
             new HashMap<>();
@@ -576,7 +574,6 @@
     // Following two methods exist to workaround b/124210145
     /** @hide */
     @SystemApi
-    @TestApi
     @Override
     public android.os.IBinder asBinder() {
         return super.asBinder();
@@ -584,7 +581,6 @@
 
     /** @hide */
     @SystemApi
-    @TestApi
     @Override
     public boolean onTransact(int code, android.os.Parcel data, android.os.Parcel reply,
             int flags) throws RemoteException {
diff --git a/telephony/java/android/telephony/mbms/vendor/MbmsGroupCallServiceBase.java b/telephony/java/android/telephony/mbms/vendor/MbmsGroupCallServiceBase.java
index 1335b52..e5b18bb 100644
--- a/telephony/java/android/telephony/mbms/vendor/MbmsGroupCallServiceBase.java
+++ b/telephony/java/android/telephony/mbms/vendor/MbmsGroupCallServiceBase.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.app.Service;
 import android.content.Intent;
 import android.os.Binder;
@@ -41,7 +40,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public class MbmsGroupCallServiceBase extends Service {
     private final IBinder mInterface = new Stub() {
         @Override
diff --git a/telephony/java/android/telephony/mbms/vendor/MbmsStreamingServiceBase.java b/telephony/java/android/telephony/mbms/vendor/MbmsStreamingServiceBase.java
index cced447..e169b16 100644
--- a/telephony/java/android/telephony/mbms/vendor/MbmsStreamingServiceBase.java
+++ b/telephony/java/android/telephony/mbms/vendor/MbmsStreamingServiceBase.java
@@ -18,7 +18,6 @@
 
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Binder;
@@ -39,7 +38,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public class MbmsStreamingServiceBase extends IMbmsStreamingService.Stub {
     /**
      * Initialize streaming service for this app and subId, registering the listener.
@@ -299,7 +297,6 @@
     // Following two methods exist to workaround b/124210145
     /** @hide */
     @SystemApi
-    @TestApi
     @Override
     public android.os.IBinder asBinder() {
         return super.asBinder();
@@ -307,7 +304,6 @@
 
     /** @hide */
     @SystemApi
-    @TestApi
     @Override
     public boolean onTransact(int code, android.os.Parcel data, android.os.Parcel reply,
             int flags) throws RemoteException {
diff --git a/telephony/java/android/telephony/mbms/vendor/VendorUtils.java b/telephony/java/android/telephony/mbms/vendor/VendorUtils.java
index f1cac8c..a43f122 100644
--- a/telephony/java/android/telephony/mbms/vendor/VendorUtils.java
+++ b/telephony/java/android/telephony/mbms/vendor/VendorUtils.java
@@ -17,7 +17,6 @@
 package android.telephony.mbms.vendor;
 
 import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
@@ -35,7 +34,6 @@
  * @hide
  */
 @SystemApi
-@TestApi
 public class VendorUtils {
 
     /**
diff --git a/telephony/java/com/android/ims/ImsConfigListener.aidl b/telephony/java/com/android/ims/ImsConfigListener.aidl
index 4f229df..df8144c 100644
--- a/telephony/java/com/android/ims/ImsConfigListener.aidl
+++ b/telephony/java/com/android/ims/ImsConfigListener.aidl
@@ -47,7 +47,7 @@
      *
      * @return void.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void onSetFeatureResponse(int feature, int network, int value, int status);
 
     /**
diff --git a/telephony/java/com/android/ims/ImsFeatureContainer.aidl b/telephony/java/com/android/ims/ImsFeatureContainer.aidl
new file mode 100644
index 0000000..9706f20
--- /dev/null
+++ b/telephony/java/com/android/ims/ImsFeatureContainer.aidl
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.ims;
+
+parcelable ImsFeatureContainer;
\ No newline at end of file
diff --git a/telephony/java/com/android/ims/ImsFeatureContainer.java b/telephony/java/com/android/ims/ImsFeatureContainer.java
new file mode 100644
index 0000000..80c1d43
--- /dev/null
+++ b/telephony/java/com/android/ims/ImsFeatureContainer.java
@@ -0,0 +1,185 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.ims;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.os.IBinder;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.telephony.ims.ImsService;
+import android.telephony.ims.aidl.IImsConfig;
+import android.telephony.ims.aidl.IImsRegistration;
+import android.telephony.ims.aidl.ISipTransport;
+import android.telephony.ims.feature.ImsFeature;
+
+import java.util.Objects;
+
+/**
+ * Contains an IBinder linking to the appropriate ImsFeature as well as the associated
+ * interfaces.
+ * @hide
+ */
+public final class ImsFeatureContainer implements Parcelable {
+    /**
+     * ImsFeature that is being tracked.
+     */
+    public final IBinder imsFeature;
+
+    /**
+     * IImsConfig interface that should be associated with the ImsFeature.
+     */
+    public final android.telephony.ims.aidl.IImsConfig imsConfig;
+
+    /**
+     * IImsRegistration interface that should be associated with this ImsFeature.
+     */
+    public final IImsRegistration imsRegistration;
+
+    /**
+     * An optional interface containing the SIP transport implementation from the ImsService.
+     */
+    public final ISipTransport sipTransport;
+
+    /**
+     * State of the feature that is being tracked.
+     */
+    private @ImsFeature.ImsState int mState = ImsFeature.STATE_UNAVAILABLE;
+
+    /**
+     * Capabilities of this ImsService.
+     */
+    private @ImsService.ImsServiceCapability long mCapabilities;
+    /**
+     * Contains the ImsFeature IBinder as well as the ImsService interfaces associated with
+     * that feature.
+     * @param iFace IBinder connection to the ImsFeature.
+     * @param iConfig IImsConfig interface associated with the ImsFeature.
+     * @param iReg IImsRegistration interface associated with the ImsFeature
+     * @param initialCaps The initial capabilities that the ImsService supports.
+     */
+    public ImsFeatureContainer(@NonNull IBinder iFace, @NonNull IImsConfig iConfig,
+            @NonNull IImsRegistration iReg, @Nullable ISipTransport transport, long initialCaps) {
+        imsFeature = iFace;
+        imsConfig = iConfig;
+        imsRegistration = iReg;
+        sipTransport = transport;
+        mCapabilities = initialCaps;
+    }
+
+    /**
+     * Create an ImsFeatureContainer from a Parcel.
+     */
+    private ImsFeatureContainer(Parcel in) {
+        imsFeature = in.readStrongBinder();
+        imsConfig = IImsConfig.Stub.asInterface(in.readStrongBinder());
+        imsRegistration = IImsRegistration.Stub.asInterface(in.readStrongBinder());
+        sipTransport = ISipTransport.Stub.asInterface(in.readStrongBinder());
+        mState = in.readInt();
+        mCapabilities = in.readLong();
+    }
+
+    /**
+     * @return the capabilties that are associated with the ImsService that this ImsFeature
+     * belongs to.
+     */
+    public @ImsService.ImsServiceCapability long getCapabilities() {
+        return mCapabilities;
+    }
+
+    /**
+     * Update the capabilities that are associated with the ImsService that this ImsFeature
+     * belongs to.
+     */
+    public void setCapabilities(@ImsService.ImsServiceCapability long caps) {
+        mCapabilities = caps;
+    }
+
+    /**
+     * @return The state of the ImsFeature.
+     */
+    public @ImsFeature.ImsState int getState() {
+        return mState;
+    }
+
+    /**
+     * Set the state that is associated with the ImsService that this ImsFeature
+     * belongs to.
+     */
+    public void setState(@ImsFeature.ImsState int state) {
+        mState = state;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        ImsFeatureContainer that = (ImsFeatureContainer) o;
+        return imsFeature.equals(that.imsFeature) &&
+                imsConfig.equals(that.imsConfig) &&
+                imsRegistration.equals(that.imsRegistration) &&
+                sipTransport.equals(that.sipTransport) &&
+                mState == that.getState() &&
+                mCapabilities == that.getCapabilities();
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(imsFeature, imsConfig, imsRegistration, sipTransport, mState,
+                mCapabilities);
+    }
+
+    @Override
+    public String toString() {
+        return "FeatureContainer{" +
+                "imsFeature=" + imsFeature +
+                ", imsConfig=" + imsConfig +
+                ", imsRegistration=" + imsRegistration +
+                ", sipTransport=" + sipTransport +
+                ", state=" + ImsFeature.STATE_LOG_MAP.get(mState) +
+                ", capabilities = " + ImsService.getCapabilitiesString(mCapabilities) +
+                '}';
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeStrongBinder(imsFeature);
+        dest.writeStrongInterface(imsConfig);
+        dest.writeStrongInterface(imsRegistration);
+        dest.writeStrongInterface(sipTransport);
+        dest.writeInt(mState);
+        dest.writeLong(mCapabilities);
+    }
+
+
+    public static final Creator<ImsFeatureContainer> CREATOR = new Creator<ImsFeatureContainer>() {
+        @Override
+        public ImsFeatureContainer createFromParcel(Parcel source) {
+            return new ImsFeatureContainer(source);
+        }
+
+        @Override
+        public ImsFeatureContainer[] newArray(int size) {
+            return new ImsFeatureContainer[size];
+        }
+    };
+}
diff --git a/telephony/java/com/android/ims/ImsUtInterface.java b/telephony/java/com/android/ims/ImsUtInterface.java
index 4a5380e..5dfbce3 100644
--- a/telephony/java/com/android/ims/ImsUtInterface.java
+++ b/telephony/java/com/android/ims/ImsUtInterface.java
@@ -17,6 +17,7 @@
 package com.android.ims;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Handler;
 import android.os.Message;
 import android.telephony.ims.ImsCallForwardInfo;
@@ -124,7 +125,7 @@
      * Retrieves the configuration of the call forward.
      * The return value of ((AsyncResult)result.obj) is an array of {@link ImsCallForwardInfo}.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void queryCallForward(int condition, String number, Message result);
 
     /**
diff --git a/telephony/java/com/android/ims/internal/IImsCallSession.aidl b/telephony/java/com/android/ims/internal/IImsCallSession.aidl
index ab14e82..e3a8aee 100644
--- a/telephony/java/com/android/ims/internal/IImsCallSession.aidl
+++ b/telephony/java/com/android/ims/internal/IImsCallSession.aidl
@@ -20,6 +20,8 @@
 import android.telephony.ims.aidl.IImsCallSessionListener;
 import android.telephony.ims.ImsCallProfile;
 import android.telephony.ims.ImsStreamMediaProfile;
+import android.telephony.ims.RtpHeaderExtension;
+
 import com.android.ims.internal.IImsVideoCallProvider;
 
 /**
@@ -297,4 +299,10 @@
      * @param rttMessage RTT message to be sent
      */
     void sendRttMessage(in String rttMessage);
+
+    /*
+     * Device sends RTP header extension(s).
+     * @param extensions the header extensions to be sent
+     */
+    void sendRtpHeaderExtensions(in List<RtpHeaderExtension> extensions);
 }
diff --git a/telephony/java/com/android/ims/internal/IImsCallSessionListener.aidl b/telephony/java/com/android/ims/internal/IImsCallSessionListener.aidl
index 1c62cc4..8afd856 100644
--- a/telephony/java/com/android/ims/internal/IImsCallSessionListener.aidl
+++ b/telephony/java/com/android/ims/internal/IImsCallSessionListener.aidl
@@ -34,47 +34,47 @@
     /**
      * Notifies the result of the basic session operation (setup / terminate).
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void callSessionProgressing(in IImsCallSession session, in ImsStreamMediaProfile profile);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void callSessionStarted(in IImsCallSession session, in ImsCallProfile profile);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void callSessionStartFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void callSessionTerminated(in IImsCallSession session, in ImsReasonInfo reasonInfo);
 
     /**
      * Notifies the result of the call hold/resume operation.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void callSessionHeld(in IImsCallSession session, in ImsCallProfile profile);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void callSessionHoldFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void callSessionHoldReceived(in IImsCallSession session, in ImsCallProfile profile);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void callSessionResumed(in IImsCallSession session, in ImsCallProfile profile);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void callSessionResumeFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void callSessionResumeReceived(in IImsCallSession session, in ImsCallProfile profile);
 
     /**
      * Notifies the result of call merge operation.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void callSessionMergeStarted(in IImsCallSession session,
             in IImsCallSession newSession, in ImsCallProfile profile);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void callSessionMergeComplete(in IImsCallSession session);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void callSessionMergeFailed(in IImsCallSession session,
             in ImsReasonInfo reasonInfo);
 
     /**
      * Notifies the result of call upgrade / downgrade or any other call updates.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void callSessionUpdated(in IImsCallSession session,
             in ImsCallProfile profile);
     void callSessionUpdateFailed(in IImsCallSession session,
@@ -95,9 +95,9 @@
     /**
      * Notifies the result of the participant invitation / removal to/from the conference session.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void callSessionInviteParticipantsRequestDelivered(in IImsCallSession session);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void callSessionInviteParticipantsRequestFailed(in IImsCallSession session,
             in ImsReasonInfo reasonInfo);
     void callSessionRemoveParticipantsRequestDelivered(in IImsCallSession session);
@@ -107,7 +107,7 @@
     /**
      * Notifies the changes of the conference info. in the conference session.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void callSessionConferenceStateUpdated(in IImsCallSession session,
             in ImsConferenceState state);
 
@@ -120,10 +120,10 @@
     /**
      * Notifies of handover information for this call
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void callSessionHandover(in IImsCallSession session,
             in int srcAccessTech, in int targetAccessTech, in ImsReasonInfo reasonInfo);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void callSessionHandoverFailed(in IImsCallSession session,
             in int srcAccessTech, in int targetAccessTech, in ImsReasonInfo reasonInfo);
     void callSessionMayHandover(in IImsCallSession session,
@@ -137,7 +137,7 @@
      * - {@link com.android.internal.telephony.Phone#TTY_MODE_HCO}
      * - {@link com.android.internal.telephony.Phone#TTY_MODE_VCO}
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void callSessionTtyModeReceived(in IImsCallSession session, in int mode);
 
     /**
@@ -146,13 +146,13 @@
      * @param session The call session.
      * @param isMultiParty {@code true} if the session became multiparty, {@code false} otherwise.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void callSessionMultipartyStateChanged(in IImsCallSession session, in boolean isMultiParty);
 
     /**
      * Notifies the supplementary service information for the current session.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void callSessionSuppServiceReceived(in IImsCallSession session,
          in ImsSuppServiceNotification suppSrvNotification);
 
diff --git a/telephony/java/com/android/ims/internal/IImsRegistrationListener.aidl b/telephony/java/com/android/ims/internal/IImsRegistrationListener.aidl
index a7a62a6..216b45c 100644
--- a/telephony/java/com/android/ims/internal/IImsRegistrationListener.aidl
+++ b/telephony/java/com/android/ims/internal/IImsRegistrationListener.aidl
@@ -32,7 +32,7 @@
      *
      * @deprecated see {@link registrationConnectedWithRadioTech}
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void registrationConnected();
 
     /**
@@ -48,7 +48,7 @@
      * @param imsRadioTech the radio access technology. Valid values are {@code
      * RIL_RADIO_TECHNOLOGY_*} defined in {@link ServiceState}.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void registrationConnectedWithRadioTech(int imsRadioTech);
 
     /**
@@ -57,14 +57,14 @@
      * @param imsRadioTech the radio access technology. Valid values are {@code
      * RIL_RADIO_TECHNOLOGY_*} defined in {@link ServiceState}.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void registrationProgressingWithRadioTech(int imsRadioTech);
 
 
     /**
      * Notifies the application when the device is disconnected from the IMS network.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void registrationDisconnected(in ImsReasonInfo imsReasonInfo);
 
     /**
@@ -98,7 +98,7 @@
      * @param enabledFeatures features enabled as defined in com.android.ims.ImsConfig#FeatureConstants.
      * @param disabledFeatures features disabled as defined in com.android.ims.ImsConfig#FeatureConstants.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void registrationFeatureCapabilityChanged(int serviceClass,
             in int[] enabledFeatures, in int[] disabledFeatures);
 
@@ -106,13 +106,13 @@
      * Updates the application with the waiting voice message count.
      * @param count The number of waiting voice messages.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void voiceMessageCountUpdate(int count);
 
     /**
      * Notifies the application when the list of URIs associated with IMS client is updated.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void registrationAssociatedUriChanged(in Uri[] uris);
 
     /**
@@ -123,6 +123,6 @@
      *         attempted.
      * @param imsReasonInfo Reason for the failure.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void registrationChangeFailed(in int targetAccessTech, in ImsReasonInfo imsReasonInfo);
 }
diff --git a/telephony/java/com/android/ims/internal/IImsServiceFeatureCallback.aidl b/telephony/java/com/android/ims/internal/IImsServiceFeatureCallback.aidl
index 9a9cf53..f5f67bd 100644
--- a/telephony/java/com/android/ims/internal/IImsServiceFeatureCallback.aidl
+++ b/telephony/java/com/android/ims/internal/IImsServiceFeatureCallback.aidl
@@ -16,13 +16,18 @@
 
 package com.android.ims.internal;
 
+import com.android.ims.ImsFeatureContainer;
 /**
- *  Interface from ImsResolver to ImsServiceProxy in ImsManager.
- * Callback to ImsManager when a feature changes in the ImsServiceController.
+ *  Interface from ImsResolver to FeatureConnections.
+ * Callback to FeatureConnections when a feature's status changes.
  * {@hide}
  */
 oneway interface IImsServiceFeatureCallback {
-    void imsFeatureCreated(int slotId, int feature);
-    void imsFeatureRemoved(int slotId, int feature);
-    void imsStatusChanged(int slotId, int feature, int status);
+    void imsFeatureCreated(in ImsFeatureContainer feature);
+    // Reason defined in FeatureConnector.UnavailableReason
+    void imsFeatureRemoved(int reason);
+    // Status defined in ImsFeature.ImsState.
+    void imsStatusChanged(int status);
+    //Capabilities defined in ImsService.ImsServiceCapability
+    void updateCapabilities(long capabilities);
 }
\ No newline at end of file
diff --git a/telephony/java/com/android/ims/internal/IImsUtListener.aidl b/telephony/java/com/android/ims/internal/IImsUtListener.aidl
index 9a12cee..604adf8 100644
--- a/telephony/java/com/android/ims/internal/IImsUtListener.aidl
+++ b/telephony/java/com/android/ims/internal/IImsUtListener.aidl
@@ -31,38 +31,38 @@
     /**
      * Notifies the result of the supplementary service configuration udpate.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void utConfigurationUpdated(in IImsUt ut, int id);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void utConfigurationUpdateFailed(in IImsUt ut, int id, in ImsReasonInfo error);
 
     /**
      * Notifies the result of the supplementary service configuration query.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void utConfigurationQueried(in IImsUt ut, int id, in Bundle ssInfo);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void utConfigurationQueryFailed(in IImsUt ut, int id, in ImsReasonInfo error);
 
     void lineIdentificationSupplementaryServiceResponse(int id, in ImsSsInfo config);
     /**
      * Notifies the status of the call barring supplementary service.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void utConfigurationCallBarringQueried(in IImsUt ut,
             int id, in ImsSsInfo[] cbInfo);
 
     /**
      * Notifies the status of the call forwarding supplementary service.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void utConfigurationCallForwardQueried(in IImsUt ut,
             int id, in ImsCallForwardInfo[] cfInfo);
 
     /**
      * Notifies the status of the call waiting supplementary service.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void utConfigurationCallWaitingQueried(in IImsUt ut,
             int id, in ImsSsInfo[] cwInfo);
 
diff --git a/telephony/java/com/android/ims/internal/IImsVideoCallCallback.aidl b/telephony/java/com/android/ims/internal/IImsVideoCallCallback.aidl
index cf8d637..5d575ab 100644
--- a/telephony/java/com/android/ims/internal/IImsVideoCallCallback.aidl
+++ b/telephony/java/com/android/ims/internal/IImsVideoCallCallback.aidl
@@ -31,25 +31,25 @@
  * {@hide}
  */
 oneway interface IImsVideoCallCallback {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void receiveSessionModifyRequest(in VideoProfile videoProfile);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void receiveSessionModifyResponse(int status, in VideoProfile requestedProfile,
         in VideoProfile responseProfile);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void handleCallSessionEvent(int event);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void changePeerDimensions(int width, int height);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void changeCallDataUsage(long dataUsage);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void changeCameraCapabilities(in VideoProfile.CameraCapabilities cameraCapabilities);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void changeVideoQuality(int videoQuality);
 }
diff --git a/telephony/java/com/android/ims/internal/IImsVideoCallProvider.aidl b/telephony/java/com/android/ims/internal/IImsVideoCallProvider.aidl
index 4d20bd6..44d8389 100644
--- a/telephony/java/com/android/ims/internal/IImsVideoCallProvider.aidl
+++ b/telephony/java/com/android/ims/internal/IImsVideoCallProvider.aidl
@@ -41,7 +41,7 @@
  * @hide
  */
 oneway interface IImsVideoCallProvider {
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void setCallback(IImsVideoCallCallback callback);
 
     void setCamera(String cameraId, int uid);
diff --git a/telephony/java/com/android/internal/telephony/ICallForwardingInfoCallback.aidl b/telephony/java/com/android/internal/telephony/ICallForwardingInfoCallback.aidl
new file mode 100644
index 0000000..4d3b9f4
--- /dev/null
+++ b/telephony/java/com/android/internal/telephony/ICallForwardingInfoCallback.aidl
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.internal.telephony;
+
+import android.telephony.CallForwardingInfo;
+
+// Callback interface for the getCallForwarding API in TelephonyManager.
+oneway interface ICallForwardingInfoCallback {
+    void onCallForwardingInfoAvailable(in CallForwardingInfo info);
+    void onError(int error);
+}
\ No newline at end of file
diff --git a/telephony/java/com/android/internal/telephony/ICarrierConfigLoader.aidl b/telephony/java/com/android/internal/telephony/ICarrierConfigLoader.aidl
index 76ebc0f..89620ea 100644
--- a/telephony/java/com/android/internal/telephony/ICarrierConfigLoader.aidl
+++ b/telephony/java/com/android/internal/telephony/ICarrierConfigLoader.aidl
@@ -24,7 +24,7 @@
 interface ICarrierConfigLoader {
 
     /** @deprecated Use {@link #getConfigForSubIdWithFeature(int, String, String) instead */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     PersistableBundle getConfigForSubId(int subId, String callingPackage);
 
     PersistableBundle getConfigForSubIdWithFeature(int subId, String callingPackage,
diff --git a/telephony/java/com/android/internal/telephony/IPhoneSubInfo.aidl b/telephony/java/com/android/internal/telephony/IPhoneSubInfo.aidl
index 28ef235..09f9b42 100644
--- a/telephony/java/com/android/internal/telephony/IPhoneSubInfo.aidl
+++ b/telephony/java/com/android/internal/telephony/IPhoneSubInfo.aidl
@@ -25,7 +25,7 @@
 interface IPhoneSubInfo {
 
     /** @deprecated Use {@link #getDeviceIdWithFeature(String, String) instead */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     String getDeviceId(String callingPackage);
 
     /**
diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl
index ae1b5c1..9f675f6 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -31,6 +31,7 @@
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.CallForwardingInfo;
+import android.telephony.CarrierBandwidth;
 import android.telephony.CarrierRestrictionRules;
 import android.telephony.CellIdentity;
 import android.telephony.CellInfo;
@@ -58,6 +59,7 @@
 import com.android.ims.internal.IImsServiceFeatureCallback;
 import com.android.internal.telephony.CellNetworkScanResult;
 import com.android.internal.telephony.IBooleanConsumer;
+import com.android.internal.telephony.ICallForwardingInfoCallback;
 import com.android.internal.telephony.IIntegerConsumer;
 import com.android.internal.telephony.INumberVerificationCallback;
 import com.android.internal.telephony.OperatorInfo;
@@ -95,7 +97,7 @@
     void call(String callingPackage, String number);
 
     /** @deprecated Use {@link #isRadioOnWithFeature(String, String) instead */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean isRadioOn(String callingPackage);
 
     /**
@@ -109,7 +111,7 @@
     /**
      * @deprecated Use {@link #isRadioOnForSubscriberWithFeature(int, String, String) instead
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean isRadioOnForSubscriber(int subId, String callingPackage);
 
     /**
@@ -189,7 +191,7 @@
      * @param subId user preferred subId.
      * @return true if MMI command is executed.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean handlePinMmiForSubscriber(int subId, String dialString);
 
     /**
@@ -613,7 +615,7 @@
      *            successful iccOpenLogicalChannel.
      * @return true if the channel was closed successfully.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean iccCloseLogicalChannel(int subId, int channel);
 
     /**
@@ -655,7 +657,7 @@
      * @return The APDU response from the ICC card with the status appended at
      *            the end.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     String iccTransmitApduLogicalChannel(int subId, int channel, int cla, int instruction,
             int p1, int p2, int p3, String data);
 
@@ -828,22 +830,14 @@
      *  as well as registering the MmTelFeature for callbacks using the IImsServiceFeatureCallback
      *  interface.
      */
-    IImsMmTelFeature getMmTelFeatureAndListen(int slotId, in IImsServiceFeatureCallback callback);
-
-    /**
-     *  Get IImsRcsFeature binder from ImsResolver that corresponds to the subId and RCS feature
-     *  as well as registering the RcsFeature for callbacks using the IImsServiceFeatureCallback
-     *  interface.
-     */
-    IImsRcsFeature getRcsFeatureAndListen(int slotId, in IImsServiceFeatureCallback callback);
+    void registerMmTelFeatureCallback(int slotId, in IImsServiceFeatureCallback callback);
 
     /**
      * Unregister a callback that was previously registered through
-     * {@link #getMmTelFeatureAndListen} or {@link #getRcsFeatureAndListen}. This should always be
-     * called when the callback is no longer being used.
+     * {@link #registerMmTelFeatureCallback}. This should always be called when the callback is no
+     * longer being used.
      */
-    void unregisterImsFeatureCallback(int slotId, int featureType,
-            in IImsServiceFeatureCallback callback);
+    void unregisterImsFeatureCallback(in IImsServiceFeatureCallback callback);
 
     /**
     * Returns the IImsRegistration associated with the slot and feature specified.
@@ -862,6 +856,11 @@
             in int[] featureTypes, in String packageName);
 
     /**
+     *  @return true if the ImsService cleared any carrier ImsService overrides, false otherwise.
+     */
+    boolean clearCarrierImsServiceOverride(int slotIndex);
+
+    /**
     * @return the package name of the carrier/device ImsService associated with this slot.
     */
     String getBoundImsServicePackage(int slotIndex, boolean isCarrierImsService, int featureType);
@@ -982,13 +981,6 @@
     boolean setPreferredNetworkType(int subId, int networkType);
 
     /**
-     * User enable/disable Mobile Data.
-     *
-     * @param enable true to turn on, else false
-     */
-    void setUserDataEnabled(int subId, boolean enable);
-
-    /**
      * Get the user enabled state of Mobile Data.
      *
      * TODO: remove and use isUserDataEnabled.
@@ -1009,12 +1001,29 @@
     boolean isUserDataEnabled(int subId);
 
     /**
-     * Get the overall enabled state of Mobile Data.
-     *
+     * Check if data is enabled on the device. It can be disabled by
+     * user, carrier, policy or thermal.
      * @return true on enabled
      */
     boolean isDataEnabled(int subId);
 
+    /**
+     * Control of data connection and provide the reason triggering the data connection control.
+     *
+     * @param subId user preferred subId.
+     * @param reason the reason the data enable change is taking place
+     * @param enable true to turn on, else false
+     */
+     void setDataEnabledForReason(int subId, int reason, boolean enable);
+
+    /**
+     * Return whether data is enabled for certain reason
+     * @param subId user preferred subId.       .
+     * @param reason the reason the data enable change is taking place
+     * @return true on enabled
+    */
+    boolean isDataEnabledForReason(int subId, int reason);
+
      /**
      * Checks if manual network selection is allowed.
      *
@@ -1612,15 +1621,6 @@
     int getCarrierIdFromMccMnc(int slotIndex, String mccmnc, boolean isSubscriptionMccMnc);
 
     /**
-     * Action set from carrier signalling broadcast receivers to enable/disable metered apns
-     * Permissions android.Manifest.permission.MODIFY_PHONE_STATE is required
-     * @param subId the subscription ID that this action applies to.
-     * @param enabled control enable or disable metered apns.
-     * @hide
-     */
-    void carrierActionSetMeteredApnsEnabled(int subId, boolean visible);
-
-    /**
      * Action set from carrier signalling broadcast receivers to enable/disable radio
      * Permissions android.Manifest.permission.MODIFY_PHONE_STATE is required
      * @param subId the subscription ID that this action applies to.
@@ -1647,86 +1647,15 @@
      */
     void carrierActionResetAll(int subId);
 
-    /**
-     * Gets the voice call forwarding info {@link CallForwardingInfo}, given the call forward
-     * reason.
-     *
-     * @param callForwardingReason the call forwarding reasons which are the bitwise-OR combination
-     * of the following constants:
-     * <ol>
-     * <li>{@link CallForwardingInfo#REASON_BUSY} </li>
-     * <li>{@link CallForwardingInfo#REASON_NO_REPLY} </li>
-     * <li>{@link CallForwardingInfo#REASON_NOT_REACHABLE} </li>
-     * </ol>
-     *
-     * @throws IllegalArgumentException if callForwardingReason is not a bitwise-OR combination
-     * of {@link CallForwardingInfo.REASON_BUSY}, {@link CallForwardingInfo.REASON_BUSY},
-     * {@link CallForwardingInfo.REASON_NOT_REACHABLE}
-     *
-     * @return {@link CallForwardingInfo} with the status {@link CallForwardingInfo#STATUS_ACTIVE}
-     * or {@link CallForwardingInfo#STATUS_INACTIVE} and the target phone number to forward calls
-     * to, if it's available. Otherwise, it will return a {@link CallForwardingInfo} with status
-     * {@link CallForwardingInfo#STATUS_NOT_SUPPORTED} or
-     * {@link CallForwardingInfo#STATUS_FDN_CHECK_FAILURE} depending on the situation.
-     *
-     * @hide
-     */
-    CallForwardingInfo getCallForwarding(int subId, int callForwardingReason);
+    void getCallForwarding(int subId, int callForwardingReason,
+            ICallForwardingInfoCallback callback);
 
-    /**
-     * Sets the voice call forwarding info including status (enable/disable), call forwarding
-     * reason, the number to forward, and the timeout before the forwarding is attempted.
-     *
-     * @param callForwardingInfo {@link CallForwardingInfo} to setup the call forwarding.
-     * Enabling if {@link CallForwardingInfo#getStatus()} returns
-     * {@link CallForwardingInfo#STATUS_ACTIVE}; Disabling if
-     * {@link CallForwardingInfo#getStatus()} returns {@link CallForwardingInfo#STATUS_INACTIVE}.
-     *
-     * @throws IllegalArgumentException if any of the following:
-     * 0) callForwardingInfo is null.
-     * 1) {@link CallForwardingInfo#getStatus()} for callForwardingInfo returns neither
-     * {@link CallForwardingInfo#STATUS_ACTIVE} nor {@link CallForwardingInfo#STATUS_INACTIVE}.
-     * 2) {@link CallForwardingInfo#getReason()} for callForwardingInfo doesn't return the
-     * bitwise-OR combination of {@link CallForwardingInfo.REASON_BUSY},
-     * {@link CallForwardingInfo.REASON_BUSY}, {@link CallForwardingInfo.REASON_NOT_REACHABLE}
-     * 3) {@link CallForwardingInfo#getNumber()} for callForwardingInfo returns null.
-     * 4) {@link CallForwardingInfo#getTimeout()} for callForwardingInfo returns nagetive value.
-     *
-     * @return {@code true} to indicate it was set successfully; {@code false} otherwise.
-     *
-     * @hide
-     */
-    boolean setCallForwarding(int subId, in CallForwardingInfo callForwardingInfo);
+    void setCallForwarding(int subId, in CallForwardingInfo callForwardingInfo,
+            IIntegerConsumer callback);
 
-    /**
-     * Gets the status of voice call waiting function. Call waiting function enables the waiting
-     * for the incoming call when it reaches the user who is busy to make another call and allows
-     * users to decide whether to switch to the incoming call.
-     *
-     * @return the status of call waiting function.
-     * @hide
-     */
-    int getCallWaitingStatus(int subId);
+    void getCallWaitingStatus(int subId, IIntegerConsumer callback);
 
-    /**
-     * Sets the status for voice call waiting function. Call waiting function enables the waiting
-     * for the incoming call when it reaches the user who is busy to make another call and allows
-     * users to decide whether to switch to the incoming call.
-     *
-     * @param isEnable {@code true} to enable; {@code false} to disable.
-     * @return {@code true} to indicate it was set successfully; {@code false} otherwise.
-     *
-     * @hide
-     */
-    boolean setCallWaitingStatus(int subId, boolean isEnable);
-
-    /**
-     * Policy control of data connection. Usually used when data limit is passed.
-     * @param enabled True if enabling the data, otherwise disabling.
-     * @param subId Subscription index
-     * @hide
-     */
-    void setPolicyDataEnabled(boolean enabled, int subId);
+    void setCallWaitingStatus(int subId, boolean enabled, IIntegerConsumer callback);
 
     /**
      * Get Client request stats which will contain statistical information
@@ -1875,6 +1804,14 @@
     boolean setCdmaRoamingMode(int subId, int mode);
 
     /**
+     * Gets the subscription mode for the CDMA phone with the subscription id {@code subId}.
+     *
+     * @param the subscription id.
+     * @return the subscription mode for CDMA phone.
+     */
+    int getCdmaSubscriptionMode(int subId);
+
+    /**
      * Sets the subscription mode for CDMA phone with the subscription {@code subId} to the given
      * subscription mode {@code mode}.
      *
@@ -2241,21 +2178,9 @@
      */
     String getMmsUAProfUrl(int subId);
 
-    /**
-     * Set allowing mobile data during voice call.
-     */
-    boolean setDataAllowedDuringVoiceCall(int subId, boolean allow);
+    void setMobileDataPolicyEnabledStatus(int subscriptionId, int policy, boolean enabled);
 
-    /**
-     * Check whether data is allowed during voice call. Note this is for dual sim device that
-     * data might be disabled on non-default data subscription but explicitly turned on by settings.
-     */
-    boolean isDataAllowedInVoiceCall(int subId);
-
-    /**
-     * Set whether a subscription always allows MMS connection.
-     */
-    boolean setAlwaysAllowMmsData(int subId, boolean allow);
+    boolean isMobileDataPolicyEnabled(int subscriptionId, int policy);
 
     /**
      * Command line command to enable or disable handling of CEP data for test purposes.
@@ -2297,4 +2222,34 @@
      * Whether device can connect to 5G network when two SIMs are active.
      */
     boolean canConnectTo5GInDsdsMode();
+
+    /**
+     * Returns a list of the equivalent home PLMNs (EF_EHPLMN) from the USIM app.
+     *
+     * @return A list of equivalent home PLMNs. Returns an empty list if EF_EHPLMN is empty or
+     * does not exist on the SIM card.
+     */
+    List<String> getEquivalentHomePlmns(int subId, String callingPackage, String callingFeatureId);
+
+    /**
+     * Enable/Disable E-UTRA-NR Dual Connectivity
+     * @return operation result. See TelephonyManager.EnableNrDualConnectivityResult for
+     * details
+     * @param subId the id of the subscription
+     * @param enable enable/disable dual connectivity
+     */
+    int setNrDualConnectivityState(int subId, int nrDualConnectivityState);
+
+    /**
+     * Is E-UTRA-NR Dual Connectivity enabled
+     * @param subId the id of the subscription
+     * @return true if dual connectivity is enabled else false
+     */
+    boolean isNrDualConnectivityEnabled(int subId);
+
+    /**
+     * Get carrier bandwidth per primary and secondary carrier
+     * @return CarrierBandwidth with bandwidth of both primary and secondary carrier.
+     */
+    CarrierBandwidth getCarrierBandwidth(int subId);
 }
diff --git a/telephony/java/com/android/internal/telephony/OperatorInfo.java b/telephony/java/com/android/internal/telephony/OperatorInfo.java
index 2ca4598..a6f0f66 100644
--- a/telephony/java/com/android/internal/telephony/OperatorInfo.java
+++ b/telephony/java/com/android/internal/telephony/OperatorInfo.java
@@ -35,37 +35,37 @@
         FORBIDDEN;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private String mOperatorAlphaLong;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private String mOperatorAlphaShort;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private String mOperatorNumeric;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private State mState = State.UNKNOWN;
     private int mRan = AccessNetworkType.UNKNOWN;
 
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public String
     getOperatorAlphaLong() {
         return mOperatorAlphaLong;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public String
     getOperatorAlphaShort() {
         return mOperatorAlphaShort;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public String
     getOperatorNumeric() {
         return mOperatorNumeric;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public State
     getState() {
         return mState;
@@ -75,7 +75,7 @@
         return mRan;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     OperatorInfo(String operatorAlphaLong,
                 String operatorAlphaShort,
                 String operatorNumeric,
@@ -97,7 +97,7 @@
         mRan = ran;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public OperatorInfo(String operatorAlphaLong,
                 String operatorAlphaShort,
                 String operatorNumeric,
@@ -124,7 +124,7 @@
     /**
      * See state strings defined in ril.h RIL_REQUEST_QUERY_AVAILABLE_NETWORKS
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static State rilStateToState(String s) {
         if (s.equals("unknown")) {
             return State.UNKNOWN;
@@ -180,7 +180,7 @@
      * Implement the Parcelable interface
      * Method to deserialize a OperatorInfo object, or an array thereof.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final Creator<OperatorInfo> CREATOR =
             new Creator<OperatorInfo>() {
                 @Override
diff --git a/telephony/java/com/android/internal/telephony/RILConstants.java b/telephony/java/com/android/internal/telephony/RILConstants.java
index d524299..9d4072f 100644
--- a/telephony/java/com/android/internal/telephony/RILConstants.java
+++ b/telephony/java/com/android/internal/telephony/RILConstants.java
@@ -30,77 +30,96 @@
 
     // from RIL_Errno
     int SUCCESS = 0;
-    int RADIO_NOT_AVAILABLE = 1;              /* If radio did not start or is resetting */
+    int RADIO_NOT_AVAILABLE = 1;                    /* If radio did not start or is resetting */
     int GENERIC_FAILURE = 2;
-    int PASSWORD_INCORRECT = 3;               /* for PIN/PIN2 methods only! */
-    int SIM_PIN2 = 4;                         /* Operation requires SIM PIN2 to be entered */
-    int SIM_PUK2 = 5;                         /* Operation requires SIM PIN2 to be entered */
+    int PASSWORD_INCORRECT = 3;                     /* for PIN/PIN2 methods only! */
+    int SIM_PIN2 = 4;                               /* Operation requires SIM PIN2 to be entered */
+    int SIM_PUK2 = 5;                               /* Operation requires SIM PIN2 to be entered */
     int REQUEST_NOT_SUPPORTED = 6;
     int REQUEST_CANCELLED = 7;
-    int OP_NOT_ALLOWED_DURING_VOICE_CALL = 8; /* data operation is not allowed during voice call in
-                                                 class C */
-    int OP_NOT_ALLOWED_BEFORE_REG_NW = 9;     /* request is not allowed before device registers to
-                                                 network */
-    int SMS_SEND_FAIL_RETRY = 10;             /* send sms fail and need retry */
-    int SIM_ABSENT = 11;                      /* ICC card is absent */
-    int SUBSCRIPTION_NOT_AVAILABLE = 12;      /* fail to find CDMA subscription from specified
-                                                 location */
-    int MODE_NOT_SUPPORTED = 13;              /* HW does not support preferred network type */
-    int FDN_CHECK_FAILURE = 14;               /* send operation barred error when FDN is enabled */
-    int ILLEGAL_SIM_OR_ME = 15;               /* network selection failure due
-                                                 to wrong SIM/ME and no
-                                                 retries needed */
-    int MISSING_RESOURCE = 16;                /* no logical channel available */
-    int NO_SUCH_ELEMENT = 17;                 /* application not found on SIM */
-    int DIAL_MODIFIED_TO_USSD = 18;           /* DIAL request modified to USSD */
-    int DIAL_MODIFIED_TO_SS = 19;             /* DIAL request modified to SS */
-    int DIAL_MODIFIED_TO_DIAL = 20;           /* DIAL request modified to DIAL with different data*/
-    int USSD_MODIFIED_TO_DIAL = 21;           /* USSD request modified to DIAL */
-    int USSD_MODIFIED_TO_SS = 22;             /* USSD request modified to SS */
-    int USSD_MODIFIED_TO_USSD = 23;           /* USSD request modified to different USSD request */
-    int SS_MODIFIED_TO_DIAL = 24;             /* SS request modified to DIAL */
-    int SS_MODIFIED_TO_USSD = 25;             /* SS request modified to USSD */
-    int SUBSCRIPTION_NOT_SUPPORTED = 26;      /* Subscription not supported */
-    int SS_MODIFIED_TO_SS = 27;               /* SS request modified to different SS request */
-    int SIM_ALREADY_POWERED_OFF = 29;         /* SAP: 0x03, Error card aleready powered off */
-    int SIM_ALREADY_POWERED_ON = 30;          /* SAP: 0x05, Error card already powered on */
-    int SIM_DATA_NOT_AVAILABLE = 31;          /* SAP: 0x06, Error data not available */
+    int OP_NOT_ALLOWED_DURING_VOICE_CALL = 8;       /* data operation is not allowed during voice
+                                                       call in class C */
+    int OP_NOT_ALLOWED_BEFORE_REG_NW = 9;           /* request is not allowed before device
+                                                       registers to network */
+    int SMS_SEND_FAIL_RETRY = 10;                   /* send sms fail and need retry */
+    int SIM_ABSENT = 11;                            /* ICC card is absent */
+    int SUBSCRIPTION_NOT_AVAILABLE = 12;            /* fail to find CDMA subscription from specified
+                                                       location */
+    int MODE_NOT_SUPPORTED = 13;                    /* HW does not support preferred network type */
+    int FDN_CHECK_FAILURE = 14;                     /* send operation barred error when FDN is
+                                                       enabled */
+    int ILLEGAL_SIM_OR_ME = 15;                     /* network selection failure due to wrong
+                                                       SIM/ME and no retries needed */
+    int MISSING_RESOURCE = 16;                      /* no logical channel available */
+    int NO_SUCH_ELEMENT = 17;                       /* application not found on SIM */
+    int DIAL_MODIFIED_TO_USSD = 18;                 /* DIAL request modified to USSD */
+    int DIAL_MODIFIED_TO_SS = 19;                   /* DIAL request modified to SS */
+    int DIAL_MODIFIED_TO_DIAL = 20;                 /* DIAL request modified to DIAL with
+                                                       different data*/
+    int USSD_MODIFIED_TO_DIAL = 21;                 /* USSD request modified to DIAL */
+    int USSD_MODIFIED_TO_SS = 22;                   /* USSD request modified to SS */
+    int USSD_MODIFIED_TO_USSD = 23;                 /* USSD request modified to different USSD
+                                                       request */
+    int SS_MODIFIED_TO_DIAL = 24;                   /* SS request modified to DIAL */
+    int SS_MODIFIED_TO_USSD = 25;                   /* SS request modified to USSD */
+    int SUBSCRIPTION_NOT_SUPPORTED = 26;            /* Subscription not supported */
+    int SS_MODIFIED_TO_SS = 27;                     /* SS request modified to different SS
+                                                       request */
+    int SIM_ALREADY_POWERED_OFF = 29;               /* SAP: 0x03, Error card aleready powered off */
+    int SIM_ALREADY_POWERED_ON = 30;                /* SAP: 0x05, Error card already powered on */
+    int SIM_DATA_NOT_AVAILABLE = 31;                /* SAP: 0x06, Error data not available */
     int SIM_SAP_CONNECT_FAILURE = 32;
     int SIM_SAP_MSG_SIZE_TOO_LARGE = 33;
     int SIM_SAP_MSG_SIZE_TOO_SMALL = 34;
     int SIM_SAP_CONNECT_OK_CALL_ONGOING = 35;
-    int LCE_NOT_SUPPORTED = 36;               /* Link Capacity Estimation (LCE) not supported */
-    int NO_MEMORY = 37;                       /* Not sufficient memory to process the request */
-    int INTERNAL_ERR = 38;                    /* Hit unexpected vendor internal error scenario */
-    int SYSTEM_ERR = 39;                      /* Hit platform or system error */
-    int MODEM_ERR = 40;                       /* Hit unexpected modem error */
-    int INVALID_STATE = 41;                   /* Unexpected request for the current state */
-    int NO_RESOURCES = 42;                    /* Not sufficient resource to process the request */
-    int SIM_ERR = 43;                         /* Received error from SIM card */
-    int INVALID_ARGUMENTS = 44;               /* Received invalid arguments in request */
-    int INVALID_SIM_STATE = 45;               /* Can not process the request in current SIM state */
-    int INVALID_MODEM_STATE = 46;             /* Can not process the request in current Modem state */
-    int INVALID_CALL_ID = 47;                 /* Received invalid call id in request */
-    int NO_SMS_TO_ACK = 48;                   /* ACK received when there is no SMS to ack */
-    int NETWORK_ERR = 49;                     /* Received error from network */
-    int REQUEST_RATE_LIMITED = 50;            /* Operation denied due to overly-frequent requests */
-    int SIM_BUSY = 51;                        /* SIM is busy */
-    int SIM_FULL = 52;                        /* The target EF is full */
-    int NETWORK_REJECT = 53;                  /* Request is rejected by network */
-    int OPERATION_NOT_ALLOWED = 54;           /* Not allowed the request now */
-    int EMPTY_RECORD = 55;                    /* The request record is empty */
-    int INVALID_SMS_FORMAT = 56;              /* Invalid sms format */
-    int ENCODING_ERR = 57;                    /* Message not encoded properly */
-    int INVALID_SMSC_ADDRESS = 58;            /* SMSC address specified is invalid */
-    int NO_SUCH_ENTRY = 59;                   /* No such entry present to perform the request */
-    int NETWORK_NOT_READY = 60;               /* Network is not ready to perform the request */
-    int NOT_PROVISIONED = 61;                 /* Device doesnot have this value provisioned */
-    int NO_SUBSCRIPTION = 62;                 /* Device doesnot have subscription */
-    int NO_NETWORK_FOUND = 63;                /* Network cannot be found */
-    int DEVICE_IN_USE = 64;                   /* Operation cannot be performed because the device
-                                                 is currently in use */
-    int ABORTED = 65;                         /* Operation aborted */
-    int INVALID_RESPONSE = 66;                /* Invalid response sent by vendor code */
+    int LCE_NOT_SUPPORTED = 36;                     /* Link Capacity Estimation (LCE) not
+                                                       supported */
+    int NO_MEMORY = 37;                             /* Not sufficient memory to process the
+                                                       request */
+    int INTERNAL_ERR = 38;                          /* Hit unexpected vendor internal error
+                                                       scenario */
+    int SYSTEM_ERR = 39;                            /* Hit platform or system error */
+    int MODEM_ERR = 40;                             /* Hit unexpected modem error */
+    int INVALID_STATE = 41;                         /* Unexpected request for the current state */
+    int NO_RESOURCES = 42;                          /* Not sufficient resource to process the
+                                                       request */
+    int SIM_ERR = 43;                               /* Received error from SIM card */
+    int INVALID_ARGUMENTS = 44;                     /* Received invalid arguments in request */
+    int INVALID_SIM_STATE = 45;                     /* Can not process the request in current SIM
+                                                       state */
+    int INVALID_MODEM_STATE = 46;                   /* Can not process the request in current Modem
+                                                       state */
+    int INVALID_CALL_ID = 47;                       /* Received invalid call id in request */
+    int NO_SMS_TO_ACK = 48;                         /* ACK received when there is no SMS to ack */
+    int NETWORK_ERR = 49;                           /* Received error from network */
+    int REQUEST_RATE_LIMITED = 50;                  /* Operation denied due to overly-frequent
+                                                       requests */
+    int SIM_BUSY = 51;                              /* SIM is busy */
+    int SIM_FULL = 52;                              /* The target EF is full */
+    int NETWORK_REJECT = 53;                        /* Request is rejected by network */
+    int OPERATION_NOT_ALLOWED = 54;                 /* Not allowed the request now */
+    int EMPTY_RECORD = 55;                          /* The request record is empty */
+    int INVALID_SMS_FORMAT = 56;                    /* Invalid sms format */
+    int ENCODING_ERR = 57;                          /* Message not encoded properly */
+    int INVALID_SMSC_ADDRESS = 58;                  /* SMSC address specified is invalid */
+    int NO_SUCH_ENTRY = 59;                         /* No such entry present to perform the
+                                                       request */
+    int NETWORK_NOT_READY = 60;                     /* Network is not ready to perform the
+                                                       request */
+    int NOT_PROVISIONED = 61;                       /* Device doesnot have this value
+                                                       provisioned */
+    int NO_SUBSCRIPTION = 62;                       /* Device doesnot have subscription */
+    int NO_NETWORK_FOUND = 63;                      /* Network cannot be found */
+    int DEVICE_IN_USE = 64;                         /* Operation cannot be performed because the
+                                                       device is currently in use */
+    int ABORTED = 65;                               /* Operation aborted */
+    int INVALID_RESPONSE = 66;                      /* Invalid response sent by vendor code */
+    int SIMULTANEOUS_SMS_AND_CALL_NOT_ALLOWED = 67; /* 1X voice and SMS are not allowed
+                                                       simulteneously */
+    int ACCESS_BARRED = 68;                         /* SMS access is barred */
+    int BLOCKED_DUE_TO_CALL = 69;                   /* SMS is blocked due to call control */
+    int RF_HARDWARE_ISSUE = 70;                     /* RF HW issue is detected */
+    int NO_RF_CALIBRATION_INFO = 71;                /* No RF calibration in device */
 
     // Below is list of OEM specific error codes which can by used by OEMs in case they don't want to
     // reveal particular replacement for Generic failure
@@ -494,6 +513,12 @@
     int RIL_REQUEST_SET_SYSTEM_SELECTION_CHANNELS = 210;
     int RIL_REQUEST_GET_BARRING_INFO = 211;
     int RIL_REQUEST_ENTER_SIM_DEPERSONALIZATION = 212;
+    int RIL_REQUEST_ENABLE_NR_DUAL_CONNECTIVITY = 213;
+    int RIL_REQUEST_IS_NR_DUAL_CONNECTIVITY_ENABLED = 214;
+    int RIL_REQUEST_ALLOCATE_PDU_SESSION_ID = 215;
+    int RIL_REQUEST_RELEASE_PDU_SESSION_ID = 216;
+    int RIL_REQUEST_START_HANDOVER = 217;
+    int RIL_REQUEST_CANCEL_HANDOVER = 218;
 
     /* Responses begin */
     int RIL_RESPONSE_ACKNOWLEDGEMENT = 800;
@@ -551,6 +576,7 @@
     int RIL_UNSOL_CARRIER_INFO_IMSI_ENCRYPTION = 1048;
     int RIL_UNSOL_NETWORK_SCAN_RESULT = 1049;
     int RIL_UNSOL_KEEPALIVE_STATUS = 1050;
+    int RIL_UNSOL_UNTHROTTLE_APN = 1052;
 
     /* The following unsols are not defined in RIL.h */
     int RIL_UNSOL_HAL_NON_RIL_BASE = 1100;
diff --git a/telephony/java/com/android/internal/telephony/Sms7BitEncodingTranslator.java b/telephony/java/com/android/internal/telephony/Sms7BitEncodingTranslator.java
index f8ab87d..2109c6a 100644
--- a/telephony/java/com/android/internal/telephony/Sms7BitEncodingTranslator.java
+++ b/telephony/java/com/android/internal/telephony/Sms7BitEncodingTranslator.java
@@ -19,6 +19,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.res.Resources;
 import android.content.res.XmlResourceParser;
+import android.os.Build;
 import android.util.SparseIntArray;
 
 import com.android.internal.telephony.cdma.sms.UserData;
@@ -28,15 +29,15 @@
 
 public class Sms7BitEncodingTranslator {
     private static final String TAG = "Sms7BitEncodingTranslator";
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final boolean DBG = TelephonyUtils.IS_DEBUGGABLE;
     private static boolean mIs7BitTranslationTableLoaded = false;
     private static SparseIntArray mTranslationTable = null;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static SparseIntArray mTranslationTableCommon = null;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static SparseIntArray mTranslationTableGSM = null;
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static SparseIntArray mTranslationTableCDMA = null;
 
     // Parser variables
diff --git a/telephony/java/com/android/internal/telephony/SmsMessageBase.java b/telephony/java/com/android/internal/telephony/SmsMessageBase.java
index 084882b..6d46ed3 100644
--- a/telephony/java/com/android/internal/telephony/SmsMessageBase.java
+++ b/telephony/java/com/android/internal/telephony/SmsMessageBase.java
@@ -39,18 +39,18 @@
             Pattern.compile("\\s*(\"[^\"]*\"|[^<>\"]+)\\s*<([^<>]+)>\\s*");
 
     /** {@hide} The address of the SMSC. May be null */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected String mScAddress;
 
     /** {@hide} The address of the sender */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected SmsAddress mOriginatingAddress;
 
     /** {@hide} The address of the receiver */
     protected SmsAddress mRecipientAddress;
 
     /** {@hide} The message body as a string. May be null if the message isn't text */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected String mMessageBody;
 
     /** {@hide} */
@@ -76,21 +76,21 @@
     protected byte[] mUserData;
 
     /** {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected SmsHeader mUserDataHeader;
 
     // "Message Waiting Indication Group"
     // 23.038 Section 4
     /** {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected boolean mIsMwi;
 
     /** {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected boolean mMwiSense;
 
     /** {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected boolean mMwiDontStore;
 
     /**
@@ -104,7 +104,7 @@
     protected int mIndexOnIcc = -1;
 
     /** TP-Message-Reference - Message Reference of sent message. @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int mMessageRef;
 
     @UnsupportedAppUsage
diff --git a/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java b/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java
index a34e474..f636276 100644
--- a/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java
+++ b/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java
@@ -233,7 +233,7 @@
      *         null on encode error.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static SubmitPdu getSubmitPdu(String scAddr, String destAddr, String message,
             boolean statusReportRequested, SmsHeader smsHeader, int priority) {
 
@@ -316,7 +316,7 @@
      * @return a <code>SubmitPdu</code> containing null SC address and the encoded message. Returns
      *         null on encode error.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static SubmitPdu getSubmitPdu(String destAddr, UserData userData,
             boolean statusReportRequested, int priority) {
         return privateGetSubmitPdu(destAddr, statusReportRequested, userData, priority);
diff --git a/telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java b/telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java
index d186fcf..851bc02 100644
--- a/telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java
+++ b/telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java
@@ -18,6 +18,7 @@
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.res.Resources;
+import android.os.Build;
 import android.telephony.SmsCbCmasInfo;
 import android.telephony.cdma.CdmaSmsCbProgramData;
 import android.telephony.cdma.CdmaSmsCbProgramResults;
@@ -1919,7 +1920,7 @@
      * @return the number of bits to read from the stream
      * @throws CodingException if the specified encoding is not supported
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static int getBitsForNumFields(int msgEncoding, int numFields)
             throws CodingException {
         switch (msgEncoding) {
diff --git a/telephony/java/com/android/internal/telephony/gsm/SmsCbHeader.java b/telephony/java/com/android/internal/telephony/gsm/SmsCbHeader.java
index d190345..7e2cc6a 100644
--- a/telephony/java/com/android/internal/telephony/gsm/SmsCbHeader.java
+++ b/telephony/java/com/android/internal/telephony/gsm/SmsCbHeader.java
@@ -17,6 +17,7 @@
 package com.android.internal.telephony.gsm;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.telephony.SmsCbCmasInfo;
 import android.telephony.SmsCbEtwsInfo;
 
@@ -111,7 +112,7 @@
     private final int mSerialNumber;
 
     /** The Message Identifier in 3GPP is the same as the Service Category in CDMA. */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final int mMessageIdentifier;
 
     private final int mDataCodingScheme;
@@ -130,7 +131,7 @@
     /** CMAS warning notification info. */
     private final SmsCbCmasInfo mCmasInfo;
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public SmsCbHeader(byte[] pdu) throws IllegalArgumentException {
         if (pdu == null || pdu.length < PDU_HEADER_LENGTH) {
             throw new IllegalArgumentException("Illegal PDU");
@@ -228,17 +229,17 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getGeographicalScope() {
         return mGeographicalScope;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getSerialNumber() {
         return mSerialNumber;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getServiceCategory() {
         return mMessageIdentifier;
     }
@@ -251,12 +252,12 @@
         return mDataCodingSchemeStructedData;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getPageIndex() {
         return mPageIndex;
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getNumberOfPages() {
         return mNrOfPages;
     }
diff --git a/telephony/java/com/android/internal/telephony/gsm/SmsMessage.java b/telephony/java/com/android/internal/telephony/gsm/SmsMessage.java
index e3df903..b51e8d3d 100644
--- a/telephony/java/com/android/internal/telephony/gsm/SmsMessage.java
+++ b/telephony/java/com/android/internal/telephony/gsm/SmsMessage.java
@@ -266,7 +266,7 @@
      *         encoded message. Returns null on encode error.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static SubmitPdu getSubmitPdu(String scAddress,
             String destinationAddress, String message,
             boolean statusReportRequested, byte[] header, int encoding,
@@ -292,7 +292,7 @@
      *         encoded message. Returns null on encode error.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static SubmitPdu getSubmitPdu(String scAddress,
             String destinationAddress, String message,
             boolean statusReportRequested, byte[] header, int encoding,
@@ -491,7 +491,7 @@
      * @return a <code>SubmitPdu</code> containing the encoded SC address if applicable and the
      *         encoded message. Returns null on encode error.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static SubmitPdu getSubmitPdu(String scAddress,
             String destinationAddress, String message,
             boolean statusReportRequested, int validityPeriod) {
@@ -774,9 +774,9 @@
     }
 
     private static class PduParser {
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         byte mPdu[];
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         int mCur;
         SmsHeader mUserDataHeader;
         byte[] mUserData;
@@ -1168,14 +1168,14 @@
     }
 
     /** {@inheritDoc} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @Override
     public int getStatus() {
         return mStatus;
     }
 
     /** {@inheritDoc} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @Override
     public boolean isStatusReportMessage() {
         return mIsStatusReportMessage;
diff --git a/telephony/java/com/android/internal/telephony/uicc/IccUtils.java b/telephony/java/com/android/internal/telephony/uicc/IccUtils.java
index 1d13692..d79225f 100644
--- a/telephony/java/com/android/internal/telephony/uicc/IccUtils.java
+++ b/telephony/java/com/android/internal/telephony/uicc/IccUtils.java
@@ -21,6 +21,7 @@
 import android.content.res.Resources.NotFoundException;
 import android.graphics.Bitmap;
 import android.graphics.Color;
+import android.os.Build;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.telephony.GsmAlphabet;
@@ -385,7 +386,7 @@
         return GsmAlphabet.gsm8BitUnpackedToString(data, offset, length, defaultCharset.trim());
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static int
     hexCharToInt(char c) {
         if (c >= '0' && c <= '9') return (c - '0');
diff --git a/test-mock/api/test-current.txt b/test-mock/api/test-current.txt
index 32ca250..79d746a 100644
--- a/test-mock/api/test-current.txt
+++ b/test-mock/api/test-current.txt
@@ -6,21 +6,12 @@
   }
 
   @Deprecated public class MockPackageManager extends android.content.pm.PackageManager {
-    method public void addOnPermissionsChangeListener(android.content.pm.PackageManager.OnPermissionsChangedListener);
-    method public boolean arePermissionsIndividuallyControlled();
-    method public String getDefaultBrowserPackageNameAsUser(int);
     method public int getInstallReason(String, android.os.UserHandle);
     method public java.util.List<android.content.pm.ApplicationInfo> getInstalledApplicationsAsUser(int, int);
-    method public java.util.List<android.content.pm.PackageInfo> getInstalledPackagesAsUser(int, int);
     method public String[] getNamesForUids(int[]);
     method public String getPermissionControllerPackageName();
-    method public int getPermissionFlags(String, String, android.os.UserHandle);
     method @NonNull public String getServicesSystemSharedLibraryPackageName();
     method @NonNull public String getSharedSystemSharedLibraryPackageName();
-    method public void grantRuntimePermission(String, String, android.os.UserHandle);
-    method public void removeOnPermissionsChangeListener(android.content.pm.PackageManager.OnPermissionsChangedListener);
-    method public void revokeRuntimePermission(String, String, android.os.UserHandle);
-    method public void updatePermissionFlags(String, String, int, int, android.os.UserHandle);
   }
 
 }
diff --git a/tests/PlatformCompatGating/src/com/android/tests/gating/PlatformCompatCommandNotInstalledTest.kt b/tests/PlatformCompatGating/src/com/android/tests/gating/PlatformCompatCommandNotInstalledTest.kt
index 0f62c4f..e9227e94 100644
--- a/tests/PlatformCompatGating/src/com/android/tests/gating/PlatformCompatCommandNotInstalledTest.kt
+++ b/tests/PlatformCompatGating/src/com/android/tests/gating/PlatformCompatCommandNotInstalledTest.kt
@@ -107,7 +107,10 @@
     fun ParcelFileDescriptor.text() = FileReader(fileDescriptor).readText()
 
     @After
-    fun resetIdentity() = uiAutomation.dropShellPermissionIdentity()
+    fun resetChangeIdAndIdentity() {
+        command("am compat reset $TEST_CHANGE_ID $TEST_PKG")
+        uiAutomation.dropShellPermissionIdentity()
+    }
 
     @Test
     fun execute() {
diff --git a/tests/RollbackTest/Android.bp b/tests/RollbackTest/Android.bp
index 2be4ae6..a23df92 100644
--- a/tests/RollbackTest/Android.bp
+++ b/tests/RollbackTest/Android.bp
@@ -29,7 +29,12 @@
     name: "StagedRollbackTest",
     srcs: ["StagedRollbackTest/src/**/*.java"],
     libs: ["tradefed"],
-    static_libs: ["testng", "compatibility-tradefed", "RollbackTestLib"],
+    static_libs: [
+        "compatibility-tradefed",
+        "frameworks-base-hostutils",
+        "RollbackTestLib",
+        "testng",
+    ],
     test_suites: ["general-tests"],
     test_config: "StagedRollbackTest.xml",
     data: [":com.android.apex.apkrollback.test_v1"],
@@ -39,7 +44,7 @@
     name: "NetworkStagedRollbackTest",
     srcs: ["NetworkStagedRollbackTest/src/**/*.java"],
     libs: ["tradefed"],
-    static_libs: ["RollbackTestLib"],
+    static_libs: ["RollbackTestLib", "frameworks-base-hostutils"],
     test_suites: ["general-tests"],
     test_config: "NetworkStagedRollbackTest.xml",
 }
diff --git a/tests/RollbackTest/NetworkStagedRollbackTest/src/com/android/tests/rollback/host/NetworkStagedRollbackTest.java b/tests/RollbackTest/NetworkStagedRollbackTest/src/com/android/tests/rollback/host/NetworkStagedRollbackTest.java
index 61d7c76..fb4a2b2 100644
--- a/tests/RollbackTest/NetworkStagedRollbackTest/src/com/android/tests/rollback/host/NetworkStagedRollbackTest.java
+++ b/tests/RollbackTest/NetworkStagedRollbackTest/src/com/android/tests/rollback/host/NetworkStagedRollbackTest.java
@@ -26,6 +26,7 @@
 
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -57,6 +58,9 @@
 
     private WatchdogEventLogger mLogger = new WatchdogEventLogger();
 
+    @Rule
+    public AbandonSessionsRule mHostTestRule = new AbandonSessionsRule(this);
+
     @Before
     public void setUp() throws Exception {
         runPhase("cleanUp");
diff --git a/tests/RollbackTest/StagedRollbackTest/src/com/android/tests/rollback/host/StagedRollbackTest.java b/tests/RollbackTest/StagedRollbackTest/src/com/android/tests/rollback/host/StagedRollbackTest.java
index 9169ef5..be74e33 100644
--- a/tests/RollbackTest/StagedRollbackTest/src/com/android/tests/rollback/host/StagedRollbackTest.java
+++ b/tests/RollbackTest/StagedRollbackTest/src/com/android/tests/rollback/host/StagedRollbackTest.java
@@ -34,6 +34,7 @@
 
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -87,6 +88,9 @@
 
     private WatchdogEventLogger mLogger = new WatchdogEventLogger();
 
+    @Rule
+    public AbandonSessionsRule mHostTestRule = new AbandonSessionsRule(this);
+
     @Before
     public void setUp() throws Exception {
         deleteFiles("/system/apex/" + APK_IN_APEX_TESTAPEX_NAME + "*.apex",
diff --git a/tests/StagedInstallTest/Android.bp b/tests/StagedInstallTest/Android.bp
index c3fdd69..b001fe1 100644
--- a/tests/StagedInstallTest/Android.bp
+++ b/tests/StagedInstallTest/Android.bp
@@ -23,8 +23,18 @@
 java_test_host {
     name: "StagedInstallInternalTest",
     srcs: ["src/**/*.java"],
-    libs: ["tradefed"],
-    static_libs: ["testng", "compatibility-tradefed"],
+    libs: ["tradefed", "cts-shim-host-lib"],
+    static_libs: [
+        "testng",
+        "compatibility-tradefed",
+        "module_test_util",
+        "frameworks-base-hostutils",
+        "cts-install-lib-host",
+    ],
+    data: [
+        ":com.android.apex.cts.shim.v2_prebuilt",
+        ":TestAppAv1",
+    ],
     test_suites: ["general-tests"],
     test_config: "StagedInstallInternalTest.xml",
 }
diff --git a/tests/StagedInstallTest/src/com/android/tests/stagedinstallinternal/host/StagedInstallInternalTest.java b/tests/StagedInstallTest/src/com/android/tests/stagedinstallinternal/host/StagedInstallInternalTest.java
index 9b432f7..407c65b 100644
--- a/tests/StagedInstallTest/src/com/android/tests/stagedinstallinternal/host/StagedInstallInternalTest.java
+++ b/tests/StagedInstallTest/src/com/android/tests/stagedinstallinternal/host/StagedInstallInternalTest.java
@@ -16,26 +16,44 @@
 
 package com.android.tests.stagedinstallinternal.host;
 
+import static com.android.cts.shim.lib.ShimPackage.SHIM_APEX_PACKAGE_NAME;
+
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeTrue;
+
+import android.cts.install.lib.host.InstallUtilsHost;
 
 import com.android.ddmlib.Log;
+import com.android.tests.rollback.host.AbandonSessionsRule;
+import com.android.tests.util.ModuleTestUtils;
 import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
 import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
 import com.android.tradefed.util.ProcessInfo;
 
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.io.File;
+
 @RunWith(DeviceJUnit4ClassRunner.class)
 public class StagedInstallInternalTest extends BaseHostJUnit4Test {
 
     private static final String TAG = StagedInstallInternalTest.class.getSimpleName();
     private static final long SYSTEM_SERVER_TIMEOUT_MS = 60 * 1000;
-    private boolean mWasRoot = false;
+
+    @Rule
+    public AbandonSessionsRule mHostTestRule = new AbandonSessionsRule(this);
+
+    private static final String SHIM_V2 = "com.android.apex.cts.shim.v2.apex";
+    private static final String APK_A = "TestAppAv1.apk";
+
+    private final ModuleTestUtils mTestUtils = new ModuleTestUtils(this);
+    private final InstallUtilsHost mHostUtils = new InstallUtilsHost(this);
 
     /**
      * Runs the given phase of a test by calling into the device.
@@ -62,21 +80,11 @@
 
     @Before
     public void setUp() throws Exception {
-        mWasRoot = getDevice().isAdbRoot();
-        if (!mWasRoot) {
-            getDevice().enableAdbRoot();
-        }
         cleanUp();
-        // Abandon all staged sessions
-        getDevice().executeShellCommand("pm install-abandon $(pm get-stagedsessions --only-ready "
-                + "--only-parent --only-sessionid)");
     }
 
     @After
     public void tearDown() throws Exception {
-        if (!mWasRoot) {
-            getDevice().disableAdbRoot();
-        }
         cleanUp();
     }
 
@@ -87,16 +95,106 @@
         runPhase("testSystemServerRestartDoesNotAffectStagedSessions_Verify");
     }
 
+    // Test waiting time for staged session to be ready using adb staged install can be altered
+    @Test
+    public void testAdbStagdReadyTimeoutFlagWorks() throws Exception {
+        assumeTrue("Device does not support updating APEX",
+                mHostUtils.isApexUpdateSupported());
+
+        final File apexFile = mTestUtils.getTestFile(SHIM_V2);
+        final String output = getDevice().executeAdbCommand("install", "--staged",
+                "--staged-ready-timeout", "60000", apexFile.getAbsolutePath());
+        assertThat(output).contains("Reboot device to apply staged session");
+        final String sessionId = getDevice().executeShellCommand(
+                "pm get-stagedsessions --only-ready --only-parent --only-sessionid").trim();
+        assertThat(sessionId).isNotEmpty();
+    }
+
+    // Test adb staged installation wait for session to be ready by default
+    @Test
+    public void testAdbStagedInstallWaitsTillReadyByDefault() throws Exception {
+        assumeTrue("Device does not support updating APEX",
+                mHostUtils.isApexUpdateSupported());
+
+        final File apexFile = mTestUtils.getTestFile(SHIM_V2);
+        final String output = getDevice().executeAdbCommand("install", "--staged",
+                apexFile.getAbsolutePath());
+        assertThat(output).contains("Reboot device to apply staged session");
+        final String sessionId = getDevice().executeShellCommand(
+                "pm get-stagedsessions --only-ready --only-parent --only-sessionid").trim();
+        assertThat(sessionId).isNotEmpty();
+    }
+
+    // Test we can skip waiting for staged session to be ready
+    @Test
+    public void testAdbStagedReadyWaitCanBeSkipped() throws Exception {
+        assumeTrue("Device does not support updating APEX",
+                mHostUtils.isApexUpdateSupported());
+
+        final File apexFile = mTestUtils.getTestFile(SHIM_V2);
+        final String output = getDevice().executeAdbCommand("install", "--staged",
+                "--staged-ready-timeout", "0", apexFile.getAbsolutePath());
+        assertThat(output).doesNotContain("Reboot device to apply staged session");
+        assertThat(output).contains("Success");
+        final String sessionId = getDevice().executeShellCommand(
+                "pm get-stagedsessions --only-ready --only-parent --only-sessionid").trim();
+        assertThat(sessionId).isEmpty();
+    }
+
+    // Test rollback-app command waits for staged sessions to be ready
+    @Test
+    public void testAdbRollbackAppWaitsForStagedReady() throws Exception {
+        assumeTrue("Device does not support updating APEX",
+                mHostUtils.isApexUpdateSupported());
+
+        final File apexFile = mTestUtils.getTestFile(SHIM_V2);
+        String output = getDevice().executeAdbCommand("install", "--staged",
+                "--enable-rollback", apexFile.getAbsolutePath());
+        assertThat(output).contains("Reboot device to apply staged session");
+        getDevice().reboot();
+        output = getDevice().executeShellCommand("pm rollback-app " + SHIM_APEX_PACKAGE_NAME);
+        assertThat(output).contains("Reboot device to apply staged session");
+        final String sessionId = getDevice().executeShellCommand(
+                "pm get-stagedsessions --only-ready --only-parent --only-sessionid").trim();
+        assertThat(sessionId).isNotEmpty();
+    }
+
+    @Test
+    public void testAdbInstallMultiPackageCommandWorks() throws Exception {
+        assumeTrue("Device does not support updating APEX",
+                mHostUtils.isApexUpdateSupported());
+
+        final File apexFile = mTestUtils.getTestFile(SHIM_V2);
+        final File apkFile = mTestUtils.getTestFile(APK_A);
+        final String output = getDevice().executeAdbCommand("install-multi-package",
+                apexFile.getAbsolutePath(), apkFile.getAbsolutePath());
+        assertThat(output).contains("Created parent session");
+        assertThat(output).contains("Created child session");
+        assertThat(output).contains("Success. Reboot device to apply staged session");
+
+        // Ensure there is only one parent session
+        String[] sessionIds = getDevice().executeShellCommand(
+                "pm get-stagedsessions --only-ready --only-parent --only-sessionid").split("\n");
+        assertThat(sessionIds.length).isEqualTo(1);
+        // Ensure there are two children session
+        sessionIds = getDevice().executeShellCommand(
+                "pm get-stagedsessions --only-ready --only-sessionid").split("\n");
+        assertThat(sessionIds.length).isEqualTo(3);
+    }
+
     private void restartSystemServer() throws Exception {
         // Restart the system server
-        long oldStartTime = getDevice().getProcessByName("system_server").getStartTime();
+        final long oldStartTime = getDevice().getProcessByName("system_server").getStartTime();
+
+        getDevice().enableAdbRoot(); // Need root to restart system server
         assertThat(getDevice().executeShellCommand("am restart")).contains("Restart the system");
+        getDevice().disableAdbRoot();
 
         // Wait for new system server process to start
-        long start = System.currentTimeMillis();
+        final long start = System.currentTimeMillis();
         long newStartTime = oldStartTime;
         while (System.currentTimeMillis() < start + SYSTEM_SERVER_TIMEOUT_MS) {
-            ProcessInfo newPs = getDevice().getProcessByName("system_server");
+            final ProcessInfo newPs = getDevice().getProcessByName("system_server");
             if (newPs != null) {
                 newStartTime = newPs.getStartTime();
                 if (newStartTime != oldStartTime) {
diff --git a/tests/net/Android.bp b/tests/net/Android.bp
index 124b660..a762219 100644
--- a/tests/net/Android.bp
+++ b/tests/net/Android.bp
@@ -50,6 +50,7 @@
     platform_apis: true,
     test_suites: ["device-tests"],
     certificate: "platform",
+    jarjar_rules: "jarjar-rules.txt",
     static_libs: [
         "androidx.test.rules",
         "FrameworksNetCommonTests",
@@ -59,10 +60,12 @@
         "mockito-target-minus-junit4",
         "net-tests-utils",
         "platform-test-annotations",
+        "service-connectivity",
         "services.core",
         "services.net",
     ],
     libs: [
+        "android.net.ipsec.ike.stubs.module_lib",
         "android.test.runner",
         "android.test.base",
         "android.test.mock",
diff --git a/tests/net/TEST_MAPPING b/tests/net/TEST_MAPPING
index 005cbe9..89fc6ea 100644
--- a/tests/net/TEST_MAPPING
+++ b/tests/net/TEST_MAPPING
@@ -8,5 +8,10 @@
     {
       "name": "FrameworksNetDeflakeTest"
     }
+  ],
+  "imports": [
+    {
+      "path": "cts/tests/tests/net"
+    }
   ]
 }
\ No newline at end of file
diff --git a/tests/net/common/Android.bp b/tests/net/common/Android.bp
index 46d680f..373aac6 100644
--- a/tests/net/common/Android.bp
+++ b/tests/net/common/Android.bp
@@ -25,6 +25,7 @@
         "junit",
         "mockito-target-minus-junit4",
         "net-tests-utils",
+        "net-utils-framework-common",
         "platform-test-annotations",
     ],
     libs: [
diff --git a/tests/net/common/java/android/net/LinkPropertiesTest.java b/tests/net/common/java/android/net/LinkPropertiesTest.java
index 3c3076f..550953d 100644
--- a/tests/net/common/java/android/net/LinkPropertiesTest.java
+++ b/tests/net/common/java/android/net/LinkPropertiesTest.java
@@ -32,7 +32,6 @@
 import static org.junit.Assert.fail;
 
 import android.net.LinkProperties.ProvisioningChange;
-import android.net.util.LinkPropertiesUtils.CompareResult;
 import android.os.Build;
 import android.system.OsConstants;
 import android.util.ArraySet;
@@ -41,6 +40,7 @@
 import androidx.test.filters.SmallTest;
 import androidx.test.runner.AndroidJUnit4;
 
+import com.android.net.module.util.LinkPropertiesUtils.CompareResult;
 import com.android.testutils.DevSdkIgnoreRule;
 import com.android.testutils.DevSdkIgnoreRule.IgnoreAfter;
 import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo;
@@ -52,7 +52,6 @@
 import java.net.Inet4Address;
 import java.net.Inet6Address;
 import java.net.InetAddress;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -447,23 +446,21 @@
         assertEquals(3, lp.getRoutes().size());
         assertAllRoutesHaveInterface("wlan0", lp);
 
-        // Check comparisons work.
+        // Check routes are updated correctly when calling setInterfaceName.
         LinkProperties lp2 = new LinkProperties(lp);
         assertAllRoutesHaveInterface("wlan0", lp2);
-        // LinkProperties#compareAllRoutes exists both in R and before R, but the return type
-        // changed in R, so a test compiled with the R version of LinkProperties cannot run on Q.
-        if (isAtLeastR()) {
-            assertEquals(0, lp.compareAllRoutes(lp2).added.size());
-            assertEquals(0, lp.compareAllRoutes(lp2).removed.size());
-        }
+        final CompareResult<RouteInfo> cr1 =
+                new CompareResult<>(lp.getAllRoutes(), lp2.getAllRoutes());
+        assertEquals(0, cr1.added.size());
+        assertEquals(0, cr1.removed.size());
 
         lp2.setInterfaceName("p2p0");
         assertAllRoutesHaveInterface("p2p0", lp2);
         assertAllRoutesNotHaveInterface("wlan0", lp2);
-        if (isAtLeastR()) {
-            assertEquals(3, lp.compareAllRoutes(lp2).added.size());
-            assertEquals(3, lp.compareAllRoutes(lp2).removed.size());
-        }
+        final CompareResult<RouteInfo> cr2 =
+                new CompareResult<>(lp.getAllRoutes(), lp2.getAllRoutes());
+        assertEquals(3, cr2.added.size());
+        assertEquals(3, cr2.removed.size());
 
         // Remove route with incorrect interface, no route removed.
         lp.removeRoute(new RouteInfo(prefix2, null, null));
@@ -954,28 +951,6 @@
         assertTrue(rmnet3.getAllRoutes().isEmpty());
         rmnet3.ensureDirectlyConnectedRoutes();
         assertEqualRoutes(Collections.singletonList(directRoute3), rmnet3.getAllRoutes());
-
-    }
-
-    @Test @IgnoreUpTo(Build.VERSION_CODES.Q)
-    public void testCompareResult() {
-        // Either adding or removing items
-        compareResult(Arrays.asList(1, 2, 3, 4), Arrays.asList(1),
-                Arrays.asList(2, 3, 4), new ArrayList<>());
-        compareResult(Arrays.asList(1, 2), Arrays.asList(3, 2, 1, 4),
-                new ArrayList<>(), Arrays.asList(3, 4));
-
-
-        // adding and removing items at the same time
-        compareResult(Arrays.asList(1, 2, 3, 4), Arrays.asList(2, 3, 4, 5),
-                Arrays.asList(1), Arrays.asList(5));
-        compareResult(Arrays.asList(1, 2, 3), Arrays.asList(4, 5, 6),
-                Arrays.asList(1, 2, 3), Arrays.asList(4, 5, 6));
-
-        // null cases
-        compareResult(Arrays.asList(1, 2, 3), null, Arrays.asList(1, 2, 3), new ArrayList<>());
-        compareResult(null, Arrays.asList(3, 2, 1), new ArrayList<>(), Arrays.asList(1, 2, 3));
-        compareResult(null, null, new ArrayList<>(), new ArrayList<>());
     }
 
     private void assertEqualRoutes(Collection<RouteInfo> expected, Collection<RouteInfo> actual) {
@@ -987,13 +962,6 @@
         assertEquals(expectedSet, actualSet);
     }
 
-    private <T> void compareResult(List<T> oldItems, List<T> newItems, List<T> expectRemoved,
-            List<T> expectAdded) {
-        CompareResult<T> result = new CompareResult<>(oldItems, newItems);
-        assertEquals(new ArraySet<>(expectAdded), new ArraySet<>(result.added));
-        assertEquals(new ArraySet<>(expectRemoved), (new ArraySet<>(result.removed)));
-    }
-
     private static LinkProperties makeLinkPropertiesForParceling() {
         LinkProperties source = new LinkProperties();
         source.setInterfaceName(NAME);
diff --git a/tests/net/common/java/android/net/MatchAllNetworkSpecifierTest.kt b/tests/net/common/java/android/net/MatchAllNetworkSpecifierTest.kt
index a50f046..a5e44d5 100644
--- a/tests/net/common/java/android/net/MatchAllNetworkSpecifierTest.kt
+++ b/tests/net/common/java/android/net/MatchAllNetworkSpecifierTest.kt
@@ -19,13 +19,19 @@
 import android.net.wifi.aware.DiscoverySession
 import android.net.wifi.aware.PeerHandle
 import android.net.wifi.aware.WifiAwareNetworkSpecifier
+import android.os.Build
 import androidx.test.filters.SmallTest
 import androidx.test.runner.AndroidJUnit4
 
 import com.android.testutils.assertParcelSane
+import com.android.testutils.DevSdkIgnoreRule
+import com.android.testutils.DevSdkIgnoreRule.IgnoreAfter
+import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo
 
 import java.lang.IllegalStateException
 
+import org.junit.Assert.assertFalse
+import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.mockito.Mockito
@@ -33,18 +39,37 @@
 @RunWith(AndroidJUnit4::class)
 @SmallTest
 class MatchAllNetworkSpecifierTest {
+    @Rule @JvmField
+    val ignoreRule: DevSdkIgnoreRule = DevSdkIgnoreRule()
+
+    private val specifier = MatchAllNetworkSpecifier()
+    private val discoverySession = Mockito.mock(DiscoverySession::class.java)
+    private val peerHandle = Mockito.mock(PeerHandle::class.java)
+    private val wifiAwareNetworkSpecifier = WifiAwareNetworkSpecifier.Builder(discoverySession,
+            peerHandle).build()
+
     @Test
     fun testParcel() {
         assertParcelSane(MatchAllNetworkSpecifier(), 0)
     }
 
+    @Test
+    @IgnoreUpTo(Build.VERSION_CODES.Q)
+    @IgnoreAfter(Build.VERSION_CODES.R)
+    // Only run this test on Android R.
+    // The method - satisfiedBy() has changed to canBeSatisfiedBy() starting from Android R, so the
+    // method - canBeSatisfiedBy() cannot be found when running this test on Android Q.
+    fun testCanBeSatisfiedBy_OnlyForR() {
+        // MatchAllNetworkSpecifier didn't follow its parent class to change the satisfiedBy() to
+        // canBeSatisfiedBy(), so if a caller calls MatchAllNetworkSpecifier#canBeSatisfiedBy(), the
+        // NetworkSpecifier#canBeSatisfiedBy() will be called actually, and false will be returned.
+        // Although it's not meeting the expectation, the behavior still needs to be verified.
+        assertFalse(specifier.canBeSatisfiedBy(wifiAwareNetworkSpecifier))
+    }
+
     @Test(expected = IllegalStateException::class)
+    @IgnoreUpTo(Build.VERSION_CODES.R)
     fun testCanBeSatisfiedBy() {
-        val specifier = MatchAllNetworkSpecifier()
-        val discoverySession = Mockito.mock(DiscoverySession::class.java)
-        val peerHandle = Mockito.mock(PeerHandle::class.java)
-        val wifiAwareNetworkSpecifier = WifiAwareNetworkSpecifier.Builder(discoverySession,
-                peerHandle).build()
         specifier.canBeSatisfiedBy(wifiAwareNetworkSpecifier)
     }
 }
diff --git a/tests/net/common/java/android/net/NetworkCapabilitiesTest.java b/tests/net/common/java/android/net/NetworkCapabilitiesTest.java
index e169312..6b7ea66 100644
--- a/tests/net/common/java/android/net/NetworkCapabilitiesTest.java
+++ b/tests/net/common/java/android/net/NetworkCapabilitiesTest.java
@@ -30,6 +30,7 @@
 import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VPN;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_OEM_PAID;
+import static android.net.NetworkCapabilities.NET_CAPABILITY_OEM_PRIVATE;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_PARTIAL_CONNECTIVITY;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_WIFI_P2P;
@@ -358,6 +359,33 @@
         assertFalse(nr.satisfiedByNetworkCapabilities(new NetworkCapabilities()));
     }
 
+    @Test @IgnoreUpTo(Build.VERSION_CODES.R)
+    public void testOemPrivate() {
+        NetworkCapabilities nc = new NetworkCapabilities();
+        // By default OEM_PRIVATE is neither in the unwanted or required lists and the network is
+        // not restricted.
+        assertFalse(nc.hasUnwantedCapability(NET_CAPABILITY_OEM_PRIVATE));
+        assertFalse(nc.hasCapability(NET_CAPABILITY_OEM_PRIVATE));
+        nc.maybeMarkCapabilitiesRestricted();
+        assertTrue(nc.hasCapability(NET_CAPABILITY_NOT_RESTRICTED));
+
+        // Adding OEM_PRIVATE to capability list should make network restricted.
+        nc.addCapability(NET_CAPABILITY_OEM_PRIVATE);
+        nc.addCapability(NET_CAPABILITY_INTERNET);  // Combine with unrestricted capability.
+        nc.maybeMarkCapabilitiesRestricted();
+        assertTrue(nc.hasCapability(NET_CAPABILITY_OEM_PRIVATE));
+        assertFalse(nc.hasCapability(NET_CAPABILITY_NOT_RESTRICTED));
+
+        // Now let's make request for OEM_PRIVATE network.
+        NetworkCapabilities nr = new NetworkCapabilities();
+        nr.addCapability(NET_CAPABILITY_OEM_PRIVATE);
+        nr.maybeMarkCapabilitiesRestricted();
+        assertTrue(nr.satisfiedByNetworkCapabilities(nc));
+
+        // Request fails for network with the default capabilities.
+        assertFalse(nr.satisfiedByNetworkCapabilities(new NetworkCapabilities()));
+    }
+
     @Test
     public void testUnwantedCapabilities() {
         NetworkCapabilities network = new NetworkCapabilities();
diff --git a/tests/net/common/java/android/net/OemNetworkPreferencesTest.java b/tests/net/common/java/android/net/OemNetworkPreferencesTest.java
new file mode 100644
index 0000000..cade5ba
--- /dev/null
+++ b/tests/net/common/java/android/net/OemNetworkPreferencesTest.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.net;
+
+import static com.android.testutils.MiscAsserts.assertThrows;
+import static com.android.testutils.ParcelUtils.assertParcelSane;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import android.os.Build;
+import android.util.SparseArray;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo;
+import com.android.testutils.DevSdkIgnoreRunner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@IgnoreUpTo(Build.VERSION_CODES.R)
+@RunWith(DevSdkIgnoreRunner.class)
+@SmallTest
+public class OemNetworkPreferencesTest {
+
+    private static final int TEST_PREF = OemNetworkPreferences.OEM_NETWORK_PREFERENCE_DEFAULT;
+    private static final String TEST_PACKAGE = "com.google.apps.contacts";
+
+    private final List<String> mPackages = new ArrayList<>();
+    private final OemNetworkPreferences.Builder mBuilder = new OemNetworkPreferences.Builder();
+
+    @Before
+    public void beforeEachTestMethod() {
+        mPackages.add(TEST_PACKAGE);
+    }
+
+    @Test
+    public void builderAddNetworkPreferenceRequiresNonNullPackages() {
+        assertThrows(NullPointerException.class,
+                () -> mBuilder.addNetworkPreference(TEST_PREF, null));
+    }
+
+    @Test
+    public void getNetworkPreferencesReturnsCorrectValue() {
+        final int expectedNumberOfMappings = 1;
+        mBuilder.addNetworkPreference(TEST_PREF, mPackages);
+
+        final SparseArray<List<String>> networkPreferences =
+                mBuilder.build().getNetworkPreferences();
+
+        assertEquals(expectedNumberOfMappings, networkPreferences.size());
+        assertEquals(mPackages.size(), networkPreferences.get(TEST_PREF).size());
+        assertEquals(mPackages.get(0), networkPreferences.get(TEST_PREF).get(0));
+    }
+
+    @Test
+    public void getNetworkPreferencesReturnsUnmodifiableValue() {
+        final String newPackage = "new.com.google.apps.contacts";
+        mBuilder.addNetworkPreference(TEST_PREF, mPackages);
+
+        final SparseArray<List<String>> networkPreferences =
+                mBuilder.build().getNetworkPreferences();
+
+        assertThrows(UnsupportedOperationException.class,
+                () -> networkPreferences.get(TEST_PREF).set(mPackages.size() - 1, newPackage));
+
+        assertThrows(UnsupportedOperationException.class,
+                () -> networkPreferences.get(TEST_PREF).add(newPackage));
+    }
+
+    @Test
+    public void toStringReturnsCorrectValue() {
+        mBuilder.addNetworkPreference(TEST_PREF, mPackages);
+
+        final String networkPreferencesString = mBuilder.build().getNetworkPreferences().toString();
+
+        assertTrue(networkPreferencesString.contains(Integer.toString(TEST_PREF)));
+        assertTrue(networkPreferencesString.contains(TEST_PACKAGE));
+    }
+
+    @Test
+    public void testOemNetworkPreferencesParcelable() {
+        mBuilder.addNetworkPreference(TEST_PREF, mPackages);
+
+        final OemNetworkPreferences prefs = mBuilder.build();
+
+        assertParcelSane(prefs, 1 /* fieldCount */);
+    }
+}
diff --git a/tests/net/integration/Android.bp b/tests/net/integration/Android.bp
index 874bd4b..69742b9 100644
--- a/tests/net/integration/Android.bp
+++ b/tests/net/integration/Android.bp
@@ -32,6 +32,7 @@
         "kotlin-reflect",
         "mockito-target-extended-minus-junit4",
         "net-tests-utils",
+        "service-connectivity",
         "services.core",
         "services.net",
         "testables",
@@ -59,6 +60,7 @@
         "net-tests-utils",
     ],
     libs: [
+        "service-connectivity",
         "services.core",
         "services.net",
     ],
diff --git a/tests/net/integration/src/com/android/server/net/integrationtests/ConnectivityServiceIntegrationTest.kt b/tests/net/integration/src/com/android/server/net/integrationtests/ConnectivityServiceIntegrationTest.kt
index bc069e1..70f6386 100644
--- a/tests/net/integration/src/com/android/server/net/integrationtests/ConnectivityServiceIntegrationTest.kt
+++ b/tests/net/integration/src/com/android/server/net/integrationtests/ConnectivityServiceIntegrationTest.kt
@@ -167,7 +167,7 @@
         cm = ConnectivityManager(context, service)
         context.addMockSystemService(Context.CONNECTIVITY_SERVICE, cm)
 
-        service.systemReady()
+        service.systemReadyInternal()
     }
 
     private inner class TestConnectivityService(deps: Dependencies) : ConnectivityService(
@@ -200,7 +200,8 @@
         nsInstrumentation.addHttpResponse(HttpResponse(httpProbeUrl, responseCode = 204))
         nsInstrumentation.addHttpResponse(HttpResponse(httpsProbeUrl, responseCode = 204))
 
-        val na = NetworkAgentWrapper(TRANSPORT_CELLULAR, LinkProperties(), context)
+        val na = NetworkAgentWrapper(TRANSPORT_CELLULAR, LinkProperties(), null /* ncTemplate */,
+                context)
         networkStackClient.verifyNetworkMonitorCreated(na.network, TEST_TIMEOUT_MS)
 
         na.addCapability(NET_CAPABILITY_INTERNET)
@@ -238,7 +239,7 @@
 
         val lp = LinkProperties()
         lp.captivePortalApiUrl = Uri.parse(apiUrl)
-        val na = NetworkAgentWrapper(TRANSPORT_CELLULAR, lp, context)
+        val na = NetworkAgentWrapper(TRANSPORT_CELLULAR, lp, null /* ncTemplate */, context)
         networkStackClient.verifyNetworkMonitorCreated(na.network, TEST_TIMEOUT_MS)
 
         na.addCapability(NET_CAPABILITY_INTERNET)
diff --git a/tests/net/integration/util/com/android/server/NetworkAgentWrapper.java b/tests/net/integration/util/com/android/server/NetworkAgentWrapper.java
index c895420..2a24d1a 100644
--- a/tests/net/integration/util/com/android/server/NetworkAgentWrapper.java
+++ b/tests/net/integration/util/com/android/server/NetworkAgentWrapper.java
@@ -72,12 +72,12 @@
     private long mKeepaliveResponseDelay = 0L;
     private Integer mExpectedKeepaliveSlot = null;
 
-    public NetworkAgentWrapper(int transport, LinkProperties linkProperties, Context context)
-            throws Exception {
+    public NetworkAgentWrapper(int transport, LinkProperties linkProperties,
+            NetworkCapabilities ncTemplate, Context context) throws Exception {
         final int type = transportToLegacyType(transport);
         final String typeName = ConnectivityManager.getNetworkTypeName(type);
         mNetworkInfo = new NetworkInfo(type, 0, typeName, "Mock");
-        mNetworkCapabilities = new NetworkCapabilities();
+        mNetworkCapabilities = (ncTemplate != null) ? ncTemplate : new NetworkCapabilities();
         mNetworkCapabilities.addCapability(NET_CAPABILITY_NOT_SUSPENDED);
         mNetworkCapabilities.addTransportType(transport);
         switch (transport) {
@@ -213,7 +213,7 @@
 
     public void connect() {
         assertNotEquals("MockNetworkAgents can only be connected once",
-                getNetworkInfo().getDetailedState(), NetworkInfo.DetailedState.CONNECTED);
+                mNetworkInfo.getDetailedState(), NetworkInfo.DetailedState.CONNECTED);
         mNetworkInfo.setDetailedState(NetworkInfo.DetailedState.CONNECTED, null, null);
         mNetworkAgent.sendNetworkInfo(mNetworkInfo);
     }
@@ -268,10 +268,6 @@
         return mNetworkAgent;
     }
 
-    public NetworkInfo getNetworkInfo() {
-        return mNetworkInfo;
-    }
-
     public NetworkCapabilities getNetworkCapabilities() {
         return mNetworkCapabilities;
     }
diff --git a/tests/net/integration/util/com/android/server/TestNetIdManager.kt b/tests/net/integration/util/com/android/server/TestNetIdManager.kt
index eb290dc..938a694 100644
--- a/tests/net/integration/util/com/android/server/TestNetIdManager.kt
+++ b/tests/net/integration/util/com/android/server/TestNetIdManager.kt
@@ -35,4 +35,5 @@
     private val nextId = AtomicInteger(MAX_NET_ID)
     override fun reserveNetId() = nextId.decrementAndGet()
     override fun releaseNetId(id: Int) = Unit
+    fun peekNextNetId() = nextId.get() - 1
 }
diff --git a/tests/net/jarjar-rules.txt b/tests/net/jarjar-rules.txt
new file mode 100644
index 0000000..ca88672
--- /dev/null
+++ b/tests/net/jarjar-rules.txt
@@ -0,0 +1,2 @@
+# Module library in frameworks/libs/net
+rule com.android.net.module.util.** android.net.frameworktests.util.@1
diff --git a/tests/net/java/android/net/IpSecAlgorithmTest.java b/tests/net/java/android/net/IpSecAlgorithmTest.java
index 8e9d08c..2e1c29a 100644
--- a/tests/net/java/android/net/IpSecAlgorithmTest.java
+++ b/tests/net/java/android/net/IpSecAlgorithmTest.java
@@ -16,34 +16,50 @@
 
 package android.net;
 
+import static android.net.IpSecAlgorithm.ALGO_TO_REQUIRED_FIRST_SDK;
+
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
 
+import android.content.res.Resources;
+import android.os.Build;
 import android.os.Parcel;
 
 import androidx.test.filters.SmallTest;
 import androidx.test.runner.AndroidJUnit4;
 
+import com.android.internal.util.CollectionUtils;
+
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
 import java.util.AbstractMap.SimpleEntry;
 import java.util.Arrays;
+import java.util.HashSet;
 import java.util.Map.Entry;
 import java.util.Random;
+import java.util.Set;
 
 /** Unit tests for {@link IpSecAlgorithm}. */
 @SmallTest
 @RunWith(AndroidJUnit4.class)
 public class IpSecAlgorithmTest {
-
     private static final byte[] KEY_MATERIAL;
 
+    private final Resources mMockResources = mock(Resources.class);
+
     static {
         KEY_MATERIAL = new byte[128];
         new Random().nextBytes(KEY_MATERIAL);
     };
 
+    private static byte[] generateKey(int keyLenInBits) {
+        return Arrays.copyOf(KEY_MATERIAL, keyLenInBits / 8);
+    }
+
     @Test
     public void testNoTruncLen() throws Exception {
         Entry<String, Integer>[] authAndAeadList =
@@ -53,7 +69,7 @@
                     new SimpleEntry<>(IpSecAlgorithm.AUTH_HMAC_SHA256, 256),
                     new SimpleEntry<>(IpSecAlgorithm.AUTH_HMAC_SHA384, 384),
                     new SimpleEntry<>(IpSecAlgorithm.AUTH_HMAC_SHA512, 512),
-                    new SimpleEntry<>(IpSecAlgorithm.AUTH_CRYPT_AES_GCM, 224)
+                    new SimpleEntry<>(IpSecAlgorithm.AUTH_CRYPT_AES_GCM, 224),
                 };
 
         // Expect auth and aead algorithms to throw errors if trunclen is omitted.
@@ -70,6 +86,52 @@
         new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, Arrays.copyOf(KEY_MATERIAL, 256 / 8));
     }
 
+    private void checkAuthKeyAndTruncLenValidation(String algoName, int keyLen, int truncLen)
+            throws Exception {
+        new IpSecAlgorithm(algoName, generateKey(keyLen), truncLen);
+
+        try {
+            new IpSecAlgorithm(algoName, generateKey(keyLen));
+            fail("Expected exception on unprovided auth trunclen");
+        } catch (IllegalArgumentException pass) {
+        }
+
+        try {
+            new IpSecAlgorithm(algoName, generateKey(keyLen + 8), truncLen);
+            fail("Invalid key length not validated");
+        } catch (IllegalArgumentException pass) {
+        }
+
+        try {
+            new IpSecAlgorithm(algoName, generateKey(keyLen), truncLen + 1);
+            fail("Invalid truncation length not validated");
+        } catch (IllegalArgumentException pass) {
+        }
+    }
+
+    private void checkCryptKeyLenValidation(String algoName, int keyLen) throws Exception {
+        new IpSecAlgorithm(algoName, generateKey(keyLen));
+
+        try {
+            new IpSecAlgorithm(algoName, generateKey(keyLen + 8));
+            fail("Invalid key length not validated");
+        } catch (IllegalArgumentException pass) {
+        }
+    }
+
+    @Test
+    public void testValidationForAlgosAddedInS() throws Exception {
+        if (Build.VERSION.FIRST_SDK_INT <= Build.VERSION_CODES.R) {
+            return;
+        }
+
+        for (int len : new int[] {160, 224, 288}) {
+            checkCryptKeyLenValidation(IpSecAlgorithm.CRYPT_AES_CTR, len);
+        }
+        checkAuthKeyAndTruncLenValidation(IpSecAlgorithm.AUTH_AES_XCBC, 128, 96);
+        checkAuthKeyAndTruncLenValidation(IpSecAlgorithm.AUTH_CRYPT_CHACHA20_POLY1305, 288, 128);
+    }
+
     @Test
     public void testTruncLenValidation() throws Exception {
         for (int truncLen : new int[] {256, 512}) {
@@ -127,4 +189,37 @@
         assertTrue("Parcel/Unparcel failed!", IpSecAlgorithm.equals(init, fin));
         p.recycle();
     }
+
+    private static Set<String> getMandatoryAlgos() {
+        return CollectionUtils.filter(
+                ALGO_TO_REQUIRED_FIRST_SDK.keySet(),
+                i -> Build.VERSION.FIRST_SDK_INT >= ALGO_TO_REQUIRED_FIRST_SDK.get(i));
+    }
+
+    private static Set<String> getOptionalAlgos() {
+        return CollectionUtils.filter(
+                ALGO_TO_REQUIRED_FIRST_SDK.keySet(),
+                i -> Build.VERSION.FIRST_SDK_INT < ALGO_TO_REQUIRED_FIRST_SDK.get(i));
+    }
+
+    @Test
+    public void testGetSupportedAlgorithms() throws Exception {
+        assertTrue(IpSecAlgorithm.getSupportedAlgorithms().containsAll(getMandatoryAlgos()));
+        assertTrue(ALGO_TO_REQUIRED_FIRST_SDK.keySet().containsAll(
+                IpSecAlgorithm.getSupportedAlgorithms()));
+    }
+
+    @Test
+    public void testLoadAlgos() throws Exception {
+        final Set<String> optionalAlgoSet = getOptionalAlgos();
+        final String[] optionalAlgos = optionalAlgoSet.toArray(new String[0]);
+
+        doReturn(optionalAlgos).when(mMockResources)
+                .getStringArray(com.android.internal.R.array.config_optionalIpSecAlgorithms);
+
+        final Set<String> enabledAlgos = new HashSet<>(IpSecAlgorithm.loadAlgos(mMockResources));
+        final Set<String> expectedAlgos = ALGO_TO_REQUIRED_FIRST_SDK.keySet();
+
+        assertEquals(expectedAlgos, enabledAlgos);
+    }
 }
diff --git a/tests/net/java/android/net/ipmemorystore/ParcelableTests.java b/tests/net/java/android/net/ipmemorystore/ParcelableTests.java
index 02f52865..603c875 100644
--- a/tests/net/java/android/net/ipmemorystore/ParcelableTests.java
+++ b/tests/net/java/android/net/ipmemorystore/ParcelableTests.java
@@ -19,6 +19,8 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
+import android.net.networkstack.aidl.quirks.IPv6ProvisioningLossQuirk;
+import android.net.networkstack.aidl.quirks.IPv6ProvisioningLossQuirkParcelable;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -46,7 +48,7 @@
         builder.setAssignedV4Address((Inet4Address) Inet4Address.getByName("1.2.3.4"));
         // lease will expire in two hours
         builder.setAssignedV4AddressExpiry(System.currentTimeMillis() + 7_200_000);
-        // groupHint stays null this time around
+        // cluster stays null this time around
         builder.setDnsAddresses(Collections.emptyList());
         builder.setMtu(18);
         in = builder.build();
@@ -69,7 +71,7 @@
         // Verify that this test does not miss any new field added later.
         // If any field is added to NetworkAttributes it must be tested here for parceling
         // roundtrip.
-        assertEquals(5, Arrays.stream(NetworkAttributes.class.getDeclaredFields())
+        assertEquals(6, Arrays.stream(NetworkAttributes.class.getDeclaredFields())
                 .filter(f -> !Modifier.isStatic(f.getModifiers())).count());
     }
 
@@ -104,6 +106,22 @@
         assertEquals(in.confidence, out.confidence, 0.01f /* delta */);
     }
 
+    @Test
+    public void testIPv6ProvisioningLossQuirkParceling() throws Exception {
+        final NetworkAttributes.Builder builder = new NetworkAttributes.Builder();
+        final IPv6ProvisioningLossQuirkParcelable parcelable =
+                new IPv6ProvisioningLossQuirkParcelable();
+        final long expiry = System.currentTimeMillis() + 7_200_000;
+
+        parcelable.detectionCount = 3;
+        parcelable.quirkExpiry = expiry; // quirk info will expire in two hours
+        builder.setIpv6ProvLossQuirk(IPv6ProvisioningLossQuirk.fromStableParcelable(parcelable));
+        final NetworkAttributes in = builder.build();
+
+        final NetworkAttributes out = new NetworkAttributes(parcelingRoundTrip(in.toParcelable()));
+        assertEquals(out.ipv6ProvisioningLossQuirk, in.ipv6ProvisioningLossQuirk);
+    }
+
     private <T extends Parcelable> T parcelingRoundTrip(final T in) throws Exception {
         final Parcel p = Parcel.obtain();
         in.writeToParcel(p, /* flags */ 0);
diff --git a/tests/net/java/android/net/util/IpUtilsTest.java b/tests/net/java/android/net/util/IpUtilsTest.java
deleted file mode 100644
index 193d85d..0000000
--- a/tests/net/java/android/net/util/IpUtilsTest.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net.util;
-
-import static org.junit.Assert.assertEquals;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.nio.ByteBuffer;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class IpUtilsTest {
-
-    private static final int IPV4_HEADER_LENGTH = 20;
-    private static final int IPV6_HEADER_LENGTH = 40;
-    private static final int TCP_HEADER_LENGTH = 20;
-    private static final int UDP_HEADER_LENGTH = 8;
-    private static final int IP_CHECKSUM_OFFSET = 10;
-    private static final int TCP_CHECKSUM_OFFSET = 16;
-    private static final int UDP_CHECKSUM_OFFSET = 6;
-
-    private int getUnsignedByte(ByteBuffer buf, int offset) {
-        return buf.get(offset) & 0xff;
-    }
-
-    private int getChecksum(ByteBuffer buf, int offset) {
-        return getUnsignedByte(buf, offset) * 256 + getUnsignedByte(buf, offset + 1);
-    }
-
-    private void assertChecksumEquals(int expected, short actual) {
-        assertEquals(Integer.toHexString(expected), Integer.toHexString(actual & 0xffff));
-    }
-
-    // Generate test packets using Python code like this::
-    //
-    // from scapy import all as scapy
-    //
-    // def JavaPacketDefinition(bytes):
-    //   out = "        ByteBuffer packet = ByteBuffer.wrap(new byte[] {\n            "
-    //   for i in xrange(len(bytes)):
-    //     out += "(byte) 0x%02x" % ord(bytes[i])
-    //     if i < len(bytes) - 1:
-    //       if i % 4 == 3:
-    //         out += ",\n            "
-    //       else:
-    //         out += ", "
-    //   out += "\n        });"
-    //   return out
-    //
-    // packet = (scapy.IPv6(src="2001:db8::1", dst="2001:db8::2") /
-    //           scapy.UDP(sport=12345, dport=7) /
-    //           "hello")
-    // print JavaPacketDefinition(str(packet))
-
-    @Test
-    public void testIpv6TcpChecksum() throws Exception {
-        // packet = (scapy.IPv6(src="2001:db8::1", dst="2001:db8::2", tc=0x80) /
-        //           scapy.TCP(sport=12345, dport=7,
-        //                     seq=1692871236, ack=128376451, flags=16,
-        //                     window=32768) /
-        //           "hello, world")
-        ByteBuffer packet = ByteBuffer.wrap(new byte[] {
-            (byte) 0x68, (byte) 0x00, (byte) 0x00, (byte) 0x00,
-            (byte) 0x00, (byte) 0x20, (byte) 0x06, (byte) 0x40,
-            (byte) 0x20, (byte) 0x01, (byte) 0x0d, (byte) 0xb8,
-            (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
-            (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
-            (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01,
-            (byte) 0x20, (byte) 0x01, (byte) 0x0d, (byte) 0xb8,
-            (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
-            (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
-            (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x02,
-            (byte) 0x30, (byte) 0x39, (byte) 0x00, (byte) 0x07,
-            (byte) 0x64, (byte) 0xe7, (byte) 0x2a, (byte) 0x44,
-            (byte) 0x07, (byte) 0xa6, (byte) 0xde, (byte) 0x83,
-            (byte) 0x50, (byte) 0x10, (byte) 0x80, (byte) 0x00,
-            (byte) 0xee, (byte) 0x71, (byte) 0x00, (byte) 0x00,
-            (byte) 0x68, (byte) 0x65, (byte) 0x6c, (byte) 0x6c,
-            (byte) 0x6f, (byte) 0x2c, (byte) 0x20, (byte) 0x77,
-            (byte) 0x6f, (byte) 0x72, (byte) 0x6c, (byte) 0x64
-        });
-
-        // Check that a valid packet has checksum 0.
-        int transportLen = packet.limit() - IPV6_HEADER_LENGTH;
-        assertEquals(0, IpUtils.tcpChecksum(packet, 0, IPV6_HEADER_LENGTH, transportLen));
-
-        // Check that we can calculate the checksum from scratch.
-        int sumOffset = IPV6_HEADER_LENGTH + TCP_CHECKSUM_OFFSET;
-        int sum = getUnsignedByte(packet, sumOffset) * 256 + getUnsignedByte(packet, sumOffset + 1);
-        assertEquals(0xee71, sum);
-
-        packet.put(sumOffset, (byte) 0);
-        packet.put(sumOffset + 1, (byte) 0);
-        assertChecksumEquals(sum, IpUtils.tcpChecksum(packet, 0, IPV6_HEADER_LENGTH, transportLen));
-
-        // Check that writing the checksum back into the packet results in a valid packet.
-        packet.putShort(
-            sumOffset,
-            IpUtils.tcpChecksum(packet, 0, IPV6_HEADER_LENGTH, transportLen));
-        assertEquals(0, IpUtils.tcpChecksum(packet, 0, IPV6_HEADER_LENGTH, transportLen));
-    }
-
-    @Test
-    public void testIpv4UdpChecksum() {
-        // packet = (scapy.IP(src="192.0.2.1", dst="192.0.2.2", tos=0x40) /
-        //           scapy.UDP(sport=32012, dport=4500) /
-        //           "\xff")
-        ByteBuffer packet = ByteBuffer.wrap(new byte[] {
-            (byte) 0x45, (byte) 0x40, (byte) 0x00, (byte) 0x1d,
-            (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00,
-            (byte) 0x40, (byte) 0x11, (byte) 0xf6, (byte) 0x8b,
-            (byte) 0xc0, (byte) 0x00, (byte) 0x02, (byte) 0x01,
-            (byte) 0xc0, (byte) 0x00, (byte) 0x02, (byte) 0x02,
-            (byte) 0x7d, (byte) 0x0c, (byte) 0x11, (byte) 0x94,
-            (byte) 0x00, (byte) 0x09, (byte) 0xee, (byte) 0x36,
-            (byte) 0xff
-        });
-
-        // Check that a valid packet has IP checksum 0 and UDP checksum 0xffff (0 is not a valid
-        // UDP checksum, so the udpChecksum rewrites 0 to 0xffff).
-        assertEquals(0, IpUtils.ipChecksum(packet, 0));
-        assertEquals((short) 0xffff, IpUtils.udpChecksum(packet, 0, IPV4_HEADER_LENGTH));
-
-        // Check that we can calculate the checksums from scratch.
-        final int ipSumOffset = IP_CHECKSUM_OFFSET;
-        final int ipSum = getChecksum(packet, ipSumOffset);
-        assertEquals(0xf68b, ipSum);
-
-        packet.put(ipSumOffset, (byte) 0);
-        packet.put(ipSumOffset + 1, (byte) 0);
-        assertChecksumEquals(ipSum, IpUtils.ipChecksum(packet, 0));
-
-        final int udpSumOffset = IPV4_HEADER_LENGTH + UDP_CHECKSUM_OFFSET;
-        final int udpSum = getChecksum(packet, udpSumOffset);
-        assertEquals(0xee36, udpSum);
-
-        packet.put(udpSumOffset, (byte) 0);
-        packet.put(udpSumOffset + 1, (byte) 0);
-        assertChecksumEquals(udpSum, IpUtils.udpChecksum(packet, 0, IPV4_HEADER_LENGTH));
-
-        // Check that writing the checksums back into the packet results in a valid packet.
-        packet.putShort(ipSumOffset, IpUtils.ipChecksum(packet, 0));
-        packet.putShort(udpSumOffset, IpUtils.udpChecksum(packet, 0, IPV4_HEADER_LENGTH));
-        assertEquals(0, IpUtils.ipChecksum(packet, 0));
-        assertEquals((short) 0xffff, IpUtils.udpChecksum(packet, 0, IPV4_HEADER_LENGTH));
-    }
-}
diff --git a/tests/net/java/com/android/server/ConnectivityServiceTest.java b/tests/net/java/com/android/server/ConnectivityServiceTest.java
index 862e552..95419cf 100644
--- a/tests/net/java/com/android/server/ConnectivityServiceTest.java
+++ b/tests/net/java/com/android/server/ConnectivityServiceTest.java
@@ -18,6 +18,8 @@
 
 import static android.Manifest.permission.CHANGE_NETWORK_STATE;
 import static android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS;
+import static android.content.Intent.ACTION_USER_ADDED;
+import static android.content.Intent.ACTION_USER_REMOVED;
 import static android.content.pm.PackageInfo.REQUESTED_PERMISSION_GRANTED;
 import static android.content.pm.PackageManager.GET_PERMISSIONS;
 import static android.content.pm.PackageManager.MATCH_ANY_USER;
@@ -147,6 +149,7 @@
 import android.net.ConnectivityManager.TooManyRequestsException;
 import android.net.ConnectivityThread;
 import android.net.DataStallReportParcelable;
+import android.net.EthernetManager;
 import android.net.IConnectivityDiagnosticsCallback;
 import android.net.IDnsResolver;
 import android.net.IIpConnectivityMetrics;
@@ -157,7 +160,7 @@
 import android.net.INetworkPolicyManager;
 import android.net.INetworkStatsService;
 import android.net.InetAddresses;
-import android.net.InterfaceConfiguration;
+import android.net.InterfaceConfigurationParcel;
 import android.net.IpPrefix;
 import android.net.IpSecManager;
 import android.net.IpSecManager.UdpEncapsulationSocket;
@@ -250,6 +253,7 @@
 import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.AdditionalAnswers;
 import org.mockito.ArgumentCaptor;
 import org.mockito.InOrder;
 import org.mockito.Mock;
@@ -257,7 +261,10 @@
 import org.mockito.Spy;
 import org.mockito.stubbing.Answer;
 
+import java.io.FileDescriptor;
 import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
 import java.net.DatagramSocket;
 import java.net.Inet4Address;
 import java.net.Inet6Address;
@@ -313,11 +320,14 @@
     private static final long TIMESTAMP = 1234L;
 
     private static final int NET_ID = 110;
+    // Set a non-zero value to verify the flow to set tcp init rwnd value.
+    private static final int TEST_TCP_INIT_RWND = 60;
 
     private static final String CLAT_PREFIX = "v4-";
     private static final String MOBILE_IFNAME = "test_rmnet_data0";
     private static final String WIFI_IFNAME = "test_wlan0";
     private static final String WIFI_WOL_IFNAME = "test_wlan_wol";
+    private static final String VPN_IFNAME = "tun10042";
     private static final String TEST_PACKAGE_NAME = "com.android.test.package";
     private static final String[] EMPTY_STRING_ARRAY = new String[0];
 
@@ -335,6 +345,7 @@
     private INetworkPolicyListener mPolicyListener;
     private WrappedMultinetworkPolicyTracker mPolicyTracker;
     private HandlerThread mAlarmManagerThread;
+    private TestNetIdManager mNetIdManager;
 
     @Mock IIpConnectivityMetrics mIpConnectivityMetrics;
     @Mock IpConnectivityMetrics.Logger mMetricsService;
@@ -355,6 +366,8 @@
     @Mock LocationManager mLocationManager;
     @Mock AppOpsManager mAppOpsManager;
     @Mock TelephonyManager mTelephonyManager;
+    @Mock MockableSystemProperties mSystemProperties;
+    @Mock EthernetManager mEthernetManager;
 
     private ArgumentCaptor<ResolverParamsParcel> mResolverParamsParcelCaptor =
             ArgumentCaptor.forClass(ResolverParamsParcel.class);
@@ -442,10 +455,18 @@
             if (Context.LOCATION_SERVICE.equals(name)) return mLocationManager;
             if (Context.APP_OPS_SERVICE.equals(name)) return mAppOpsManager;
             if (Context.TELEPHONY_SERVICE.equals(name)) return mTelephonyManager;
+            if (Context.ETHERNET_SERVICE.equals(name)) return mEthernetManager;
             return super.getSystemService(name);
         }
 
         @Override
+        public Context createContextAsUser(UserHandle user, int flags) {
+            final Context asUser = mock(Context.class, AdditionalAnswers.delegatesTo(this));
+            doReturn(user).when(asUser).getUser();
+            return asUser;
+        }
+
+        @Override
         public ContentResolver getContentResolver() {
             return mContentResolver;
         }
@@ -603,12 +624,17 @@
         private String mRedirectUrl;
 
         TestNetworkAgentWrapper(int transport) throws Exception {
-            this(transport, new LinkProperties());
+            this(transport, new LinkProperties(), null);
         }
 
         TestNetworkAgentWrapper(int transport, LinkProperties linkProperties)
                 throws Exception {
-            super(transport, linkProperties, mServiceContext);
+            this(transport, linkProperties, null);
+        }
+
+        private TestNetworkAgentWrapper(int transport, LinkProperties linkProperties,
+                NetworkCapabilities ncTemplate) throws Exception {
+            super(transport, linkProperties, ncTemplate, mServiceContext);
 
             // Waits for the NetworkAgent to be registered, which includes the creation of the
             // NetworkMonitor.
@@ -1003,46 +1029,38 @@
         }
     }
 
+    private Set<UidRange> uidRangesForUid(int uid) {
+        final ArraySet<UidRange> ranges = new ArraySet<>();
+        ranges.add(new UidRange(uid, uid));
+        return ranges;
+    }
+
     private static Looper startHandlerThreadAndReturnLooper() {
         final HandlerThread handlerThread = new HandlerThread("MockVpnThread");
         handlerThread.start();
         return handlerThread.getLooper();
     }
 
-    private class MockVpn extends Vpn {
-        // TODO : the interactions between this mock and the mock network agent are too
-        // hard to get right at this moment, because it's unclear in which case which
-        // target needs to get a method call or both, and in what order. It's because
-        // MockNetworkAgent wants to manage its own NetworkCapabilities, but the Vpn
-        // parent class of MockVpn agent wants that responsibility.
-        // That being said inside the test it should be possible to make the interactions
-        // harder to get wrong with precise speccing, judicious comments, helper methods
-        // and a few sprinkled assertions.
-
-        private boolean mConnected = false;
+    private class MockVpn extends Vpn implements TestableNetworkCallback.HasNetwork {
         // Careful ! This is different from mNetworkAgent, because MockNetworkAgent does
         // not inherit from NetworkAgent.
         private TestNetworkAgentWrapper mMockNetworkAgent;
-        private int mVpnType = VpnManager.TYPE_VPN_SERVICE;
+        private boolean mAgentRegistered = false;
 
+        private int mVpnType = VpnManager.TYPE_VPN_SERVICE;
         private VpnInfo mVpnInfo;
-        private Network[] mUnderlyingNetworks;
 
         public MockVpn(int userId) {
             super(startHandlerThreadAndReturnLooper(), mServiceContext, mNetworkManagementService,
                     userId, mock(KeyStore.class));
-        }
-
-        public void setNetworkAgent(TestNetworkAgentWrapper agent) {
-            agent.waitForIdle(TIMEOUT_MS);
-            mMockNetworkAgent = agent;
-            mNetworkAgent = agent.getNetworkAgent();
-            mNetworkCapabilities.set(agent.getNetworkCapabilities());
+            mConfig = new VpnConfig();
         }
 
         public void setUids(Set<UidRange> uids) {
             mNetworkCapabilities.setUids(uids);
-            updateCapabilities(null /* defaultNetwork */);
+            if (mAgentRegistered) {
+                mMockNetworkAgent.setNetworkCapabilities(mNetworkCapabilities, true);
+            }
         }
 
         public void setVpnType(int vpnType) {
@@ -1050,21 +1068,13 @@
         }
 
         @Override
+        public Network getNetwork() {
+            return (mMockNetworkAgent == null) ? null : mMockNetworkAgent.getNetwork();
+        }
+
+        @Override
         public int getNetId() {
-            if (mMockNetworkAgent == null) {
-                return NETID_UNSET;
-            }
-            return mMockNetworkAgent.getNetwork().netId;
-        }
-
-        @Override
-        public boolean appliesToUid(int uid) {
-            return mConnected;  // Trickery to simplify testing.
-        }
-
-        @Override
-        protected boolean isCallerEstablishedOwnerLocked() {
-            return mConnected;  // Similar trickery
+            return (mMockNetworkAgent == null) ? NETID_UNSET : mMockNetworkAgent.getNetwork().netId;
         }
 
         @Override
@@ -1072,41 +1082,76 @@
             return mVpnType;
         }
 
-        private void connect(boolean isAlwaysMetered) {
+        private void registerAgent(boolean isAlwaysMetered, Set<UidRange> uids, LinkProperties lp)
+                throws Exception {
+            if (mAgentRegistered) throw new IllegalStateException("already registered");
+            setUids(uids);
+            if (!isAlwaysMetered) mNetworkCapabilities.addCapability(NET_CAPABILITY_NOT_METERED);
+            mInterface = VPN_IFNAME;
+            mMockNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_VPN, lp,
+                    mNetworkCapabilities);
+            mMockNetworkAgent.waitForIdle(TIMEOUT_MS);
+            verify(mNetworkManagementService, times(1))
+                    .addVpnUidRanges(eq(mMockVpn.getNetId()), eq(uids.toArray(new UidRange[0])));
+            verify(mNetworkManagementService, never())
+                    .removeVpnUidRanges(eq(mMockVpn.getNetId()), any());
+            mAgentRegistered = true;
             mNetworkCapabilities.set(mMockNetworkAgent.getNetworkCapabilities());
-            mConnected = true;
-            mConfig = new VpnConfig();
-            mConfig.isMetered = isAlwaysMetered;
+            mNetworkAgent = mMockNetworkAgent.getNetworkAgent();
         }
 
-        public void connectAsAlwaysMetered() {
-            connect(true /* isAlwaysMetered */);
+        private void registerAgent(Set<UidRange> uids) throws Exception {
+            registerAgent(false /* isAlwaysMetered */, uids, new LinkProperties());
         }
 
-        public void connect() {
-            connect(false /* isAlwaysMetered */);
+        private void connect(boolean validated, boolean hasInternet, boolean isStrictMode) {
+            mMockNetworkAgent.connect(validated, hasInternet, isStrictMode);
         }
 
-        @Override
-        public NetworkCapabilities updateCapabilities(Network defaultNetwork) {
-            if (!mConnected) return null;
-            super.updateCapabilities(defaultNetwork);
-            // Because super.updateCapabilities will update the capabilities of the agent but
-            // not the mock agent, the mock agent needs to know about them.
-            copyCapabilitiesToNetworkAgent();
-            return new NetworkCapabilities(mNetworkCapabilities);
+        private void connect(boolean validated) {
+            mMockNetworkAgent.connect(validated);
         }
 
-        private void copyCapabilitiesToNetworkAgent() {
-            if (null != mMockNetworkAgent) {
-                mMockNetworkAgent.setNetworkCapabilities(mNetworkCapabilities,
-                        false /* sendToConnectivityService */);
-            }
+        private TestNetworkAgentWrapper getAgent() {
+            return mMockNetworkAgent;
+        }
+
+        public void establish(LinkProperties lp, int uid, Set<UidRange> ranges, boolean validated,
+                boolean hasInternet, boolean isStrictMode) throws Exception {
+            mNetworkCapabilities.setOwnerUid(uid);
+            mNetworkCapabilities.setAdministratorUids(new int[]{uid});
+            registerAgent(false, ranges, lp);
+            connect(validated, hasInternet, isStrictMode);
+            waitForIdle();
+        }
+
+        public void establish(LinkProperties lp, int uid, Set<UidRange> ranges) throws Exception {
+            establish(lp, uid, ranges, true, true, false);
+        }
+
+        public void establishForMyUid(LinkProperties lp) throws Exception {
+            final int uid = Process.myUid();
+            establish(lp, uid, uidRangesForUid(uid), true, true, false);
+        }
+
+        public void establishForMyUid(boolean validated, boolean hasInternet, boolean isStrictMode)
+                throws Exception {
+            final int uid = Process.myUid();
+            establish(new LinkProperties(), uid, uidRangesForUid(uid), validated, hasInternet,
+                    isStrictMode);
+        }
+
+        public void establishForMyUid() throws Exception {
+            establishForMyUid(new LinkProperties());
+        }
+
+        public void sendLinkProperties(LinkProperties lp) {
+            mMockNetworkAgent.sendLinkProperties(lp);
         }
 
         public void disconnect() {
-            mConnected = false;
-            mConfig = null;
+            if (mMockNetworkAgent != null) mMockNetworkAgent.disconnect();
+            mAgentRegistered = false;
         }
 
         @Override
@@ -1119,18 +1164,6 @@
         private synchronized void setVpnInfo(VpnInfo vpnInfo) {
             mVpnInfo = vpnInfo;
         }
-
-        @Override
-        public synchronized Network[] getUnderlyingNetworks() {
-            if (mUnderlyingNetworks != null) return mUnderlyingNetworks;
-
-            return super.getUnderlyingNetworks();
-        }
-
-        /** Don't override behavior for {@link Vpn#setUnderlyingNetworks}. */
-        private synchronized void overrideUnderlyingNetworks(Network[] underlyingNetworks) {
-            mUnderlyingNetworks = underlyingNetworks;
-        }
     }
 
     private void mockVpn(int uid) {
@@ -1193,12 +1226,14 @@
 
     @Before
     public void setUp() throws Exception {
+        mNetIdManager = new TestNetIdManager();
+
         mContext = InstrumentationRegistry.getContext();
 
         MockitoAnnotations.initMocks(this);
         when(mMetricsService.defaultNetworkMetrics()).thenReturn(mDefaultNetworkMetrics);
 
-        when(mUserManager.getUsers(eq(true))).thenReturn(
+        when(mUserManager.getAliveUsers()).thenReturn(
                 Arrays.asList(new UserInfo[] {
                         new UserInfo(VPN_USER, "", 0),
                 }));
@@ -1246,7 +1281,7 @@
         // Create local CM before sending system ready so that we can answer
         // getSystemService() correctly.
         mCm = new WrappedConnectivityManager(InstrumentationRegistry.getContext(), mService);
-        mService.systemReady();
+        mService.systemReadyInternal();
         mockVpn(Process.myUid());
         mCm.bindProcessToNetwork(null);
 
@@ -1257,21 +1292,20 @@
     }
 
     private ConnectivityService.Dependencies makeDependencies() {
-        final MockableSystemProperties systemProperties = spy(new MockableSystemProperties());
-        when(systemProperties.getInt("net.tcp.default_init_rwnd", 0)).thenReturn(0);
-        when(systemProperties.getBoolean("ro.radio.noril", false)).thenReturn(false);
-
+        doReturn(TEST_TCP_INIT_RWND).when(mSystemProperties)
+                .getInt("net.tcp.default_init_rwnd", 0);
+        doReturn(false).when(mSystemProperties).getBoolean("ro.radio.noril", false);
+        doNothing().when(mSystemProperties).setTcpInitRwnd(anyInt());
         final ConnectivityService.Dependencies deps = mock(ConnectivityService.Dependencies.class);
         doReturn(mCsHandlerThread).when(deps).makeHandlerThread();
-        doReturn(new TestNetIdManager()).when(deps).makeNetIdManager();
+        doReturn(mNetIdManager).when(deps).makeNetIdManager();
         doReturn(mNetworkStack).when(deps).getNetworkStack();
-        doReturn(systemProperties).when(deps).getSystemProperties();
+        doReturn(mSystemProperties).when(deps).getSystemProperties();
         doReturn(mock(ProxyTracker.class)).when(deps).makeProxyTracker(any(), any());
         doReturn(mMetricsService).when(deps).getMetricsLogger();
         doReturn(true).when(deps).queryUserAccess(anyInt(), anyInt());
         doReturn(mIpConnectivityMetrics).when(deps).getIpConnectivityMetrics();
         doReturn(mBatteryStatsService).when(deps).getBatteryStatsService();
-        doReturn(true).when(deps).hasService(Context.ETHERNET_SERVICE);
         doAnswer(inv -> {
             mPolicyTracker = new WrappedMultinetworkPolicyTracker(
                     inv.getArgument(0), inv.getArgument(1), inv.getArgument(2));
@@ -1322,6 +1356,9 @@
             mEthernetNetworkAgent.disconnect();
             mEthernetNetworkAgent = null;
         }
+        mMockVpn.disconnect();
+        waitForIdle();
+
         FakeSettingsProvider.clearSettingsProvider();
 
         mCsHandlerThread.quitSafely();
@@ -3205,20 +3242,12 @@
         waitForIdle();
         assertEquals(null, mCm.getActiveNetwork());
 
-        final int uid = Process.myUid();
-        final TestNetworkAgentWrapper
-                vpnNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_VPN);
-        final ArraySet<UidRange> ranges = new ArraySet<>();
-        ranges.add(new UidRange(uid, uid));
-        mMockVpn.setNetworkAgent(vpnNetworkAgent);
-        mMockVpn.setUids(ranges);
-        vpnNetworkAgent.connect(true);
-        mMockVpn.connect();
-        defaultNetworkCallback.expectAvailableThenValidatedCallbacks(vpnNetworkAgent);
+        mMockVpn.establishForMyUid();
+        defaultNetworkCallback.expectAvailableThenValidatedCallbacks(mMockVpn);
         assertEquals(defaultNetworkCallback.getLastAvailableNetwork(), mCm.getActiveNetwork());
 
-        vpnNetworkAgent.disconnect();
-        defaultNetworkCallback.expectCallback(CallbackEntry.LOST, vpnNetworkAgent);
+        mMockVpn.disconnect();
+        defaultNetworkCallback.expectCallback(CallbackEntry.LOST, mMockVpn);
         waitForIdle();
         assertEquals(null, mCm.getActiveNetwork());
     }
@@ -4795,13 +4824,52 @@
         mCm.unregisterNetworkCallback(networkCallback);
     }
 
+    private <T> void assertSameElementsNoDuplicates(T[] expected, T[] actual) {
+        // Easier to implement than a proper "assertSameElements" method that also correctly deals
+        // with duplicates.
+        final String msg = Arrays.toString(expected) + " != " + Arrays.toString(actual);
+        assertEquals(msg, expected.length, actual.length);
+        Set expectedSet = new ArraySet<>(Arrays.asList(expected));
+        assertEquals("expected contains duplicates", expectedSet.size(), expected.length);
+        // actual cannot have duplicates because it's the same length and has the same elements.
+        Set actualSet = new ArraySet<>(Arrays.asList(actual));
+        assertEquals(expectedSet, actualSet);
+    }
+
+    private void expectForceUpdateIfaces(Network[] networks, String defaultIface,
+            Integer vpnUid, String vpnIfname, String[] underlyingIfaces) throws Exception {
+        ArgumentCaptor<Network[]> networksCaptor = ArgumentCaptor.forClass(Network[].class);
+        ArgumentCaptor<VpnInfo[]> vpnInfosCaptor = ArgumentCaptor.forClass(VpnInfo[].class);
+
+        verify(mStatsService, atLeastOnce()).forceUpdateIfaces(networksCaptor.capture(),
+                any(NetworkState[].class), eq(defaultIface), vpnInfosCaptor.capture());
+
+        assertSameElementsNoDuplicates(networksCaptor.getValue(), networks);
+
+        VpnInfo[] infos = vpnInfosCaptor.getValue();
+        if (vpnUid != null) {
+            assertEquals("Should have exactly one VPN:", 1, infos.length);
+            VpnInfo info = infos[0];
+            assertEquals("Unexpected VPN owner:", (int) vpnUid, info.ownerUid);
+            assertEquals("Unexpected VPN interface:", vpnIfname, info.vpnIface);
+            assertSameElementsNoDuplicates(underlyingIfaces, info.underlyingIfaces);
+        } else {
+            assertEquals(0, infos.length);
+            return;
+        }
+    }
+
+    private void expectForceUpdateIfaces(Network[] networks, String defaultIface) throws Exception {
+        expectForceUpdateIfaces(networks, defaultIface, null, null, new String[0]);
+    }
+
     @Test
     public void testStatsIfacesChanged() throws Exception {
         mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR);
         mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI);
 
-        Network[] onlyCell = new Network[] {mCellNetworkAgent.getNetwork()};
-        Network[] onlyWifi = new Network[] {mWiFiNetworkAgent.getNetwork()};
+        final Network[] onlyCell = new Network[] {mCellNetworkAgent.getNetwork()};
+        final Network[] onlyWifi = new Network[] {mWiFiNetworkAgent.getNetwork()};
 
         LinkProperties cellLp = new LinkProperties();
         cellLp.setInterfaceName(MOBILE_IFNAME);
@@ -4812,9 +4880,7 @@
         mCellNetworkAgent.connect(false);
         mCellNetworkAgent.sendLinkProperties(cellLp);
         waitForIdle();
-        verify(mStatsService, atLeastOnce())
-                .forceUpdateIfaces(eq(onlyCell), any(NetworkState[].class), eq(MOBILE_IFNAME),
-                        eq(new VpnInfo[0]));
+        expectForceUpdateIfaces(onlyCell, MOBILE_IFNAME);
         reset(mStatsService);
 
         // Default network switch should update ifaces.
@@ -4822,32 +4888,24 @@
         mWiFiNetworkAgent.sendLinkProperties(wifiLp);
         waitForIdle();
         assertEquals(wifiLp, mService.getActiveLinkProperties());
-        verify(mStatsService, atLeastOnce())
-                .forceUpdateIfaces(eq(onlyWifi), any(NetworkState[].class), eq(WIFI_IFNAME),
-                        eq(new VpnInfo[0]));
+        expectForceUpdateIfaces(onlyWifi, WIFI_IFNAME);
         reset(mStatsService);
 
         // Disconnect should update ifaces.
         mWiFiNetworkAgent.disconnect();
         waitForIdle();
-        verify(mStatsService, atLeastOnce())
-                .forceUpdateIfaces(eq(onlyCell), any(NetworkState[].class),
-                        eq(MOBILE_IFNAME), eq(new VpnInfo[0]));
+        expectForceUpdateIfaces(onlyCell, MOBILE_IFNAME);
         reset(mStatsService);
 
         // Metered change should update ifaces
         mCellNetworkAgent.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
         waitForIdle();
-        verify(mStatsService, atLeastOnce())
-                .forceUpdateIfaces(eq(onlyCell), any(NetworkState[].class), eq(MOBILE_IFNAME),
-                        eq(new VpnInfo[0]));
+        expectForceUpdateIfaces(onlyCell, MOBILE_IFNAME);
         reset(mStatsService);
 
         mCellNetworkAgent.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
         waitForIdle();
-        verify(mStatsService, atLeastOnce())
-                .forceUpdateIfaces(eq(onlyCell), any(NetworkState[].class), eq(MOBILE_IFNAME),
-                        eq(new VpnInfo[0]));
+        expectForceUpdateIfaces(onlyCell, MOBILE_IFNAME);
         reset(mStatsService);
 
         // Captive portal change shouldn't update ifaces
@@ -4861,9 +4919,130 @@
         // Roaming change should update ifaces
         mCellNetworkAgent.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING);
         waitForIdle();
-        verify(mStatsService, atLeastOnce())
-                .forceUpdateIfaces(eq(onlyCell), any(NetworkState[].class), eq(MOBILE_IFNAME),
-                        eq(new VpnInfo[0]));
+        expectForceUpdateIfaces(onlyCell, MOBILE_IFNAME);
+        reset(mStatsService);
+
+        // Test VPNs.
+        final LinkProperties lp = new LinkProperties();
+        lp.setInterfaceName(VPN_IFNAME);
+
+        mMockVpn.establishForMyUid(lp);
+
+        final Network[] cellAndVpn = new Network[] {
+                mCellNetworkAgent.getNetwork(), mMockVpn.getNetwork()};
+
+        // A VPN with default (null) underlying networks sets the underlying network's interfaces...
+        expectForceUpdateIfaces(cellAndVpn, MOBILE_IFNAME, Process.myUid(), VPN_IFNAME,
+                new String[]{MOBILE_IFNAME});
+
+        // ...and updates them as the default network switches.
+        mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI);
+        mWiFiNetworkAgent.connect(false);
+        mWiFiNetworkAgent.sendLinkProperties(wifiLp);
+        final Network[] onlyNull = new Network[]{null};
+        final Network[] wifiAndVpn = new Network[] {
+                mWiFiNetworkAgent.getNetwork(), mMockVpn.getNetwork()};
+        final Network[] cellAndWifi = new Network[] {
+                mCellNetworkAgent.getNetwork(), mWiFiNetworkAgent.getNetwork()};
+        final Network[] cellNullAndWifi = new Network[] {
+                mCellNetworkAgent.getNetwork(), null, mWiFiNetworkAgent.getNetwork()};
+
+        waitForIdle();
+        assertEquals(wifiLp, mService.getActiveLinkProperties());
+        expectForceUpdateIfaces(wifiAndVpn, WIFI_IFNAME, Process.myUid(), VPN_IFNAME,
+                new String[]{WIFI_IFNAME});
+        reset(mStatsService);
+
+        // A VPN that sets its underlying networks passes the underlying interfaces, and influences
+        // the default interface sent to NetworkStatsService by virtue of applying to the system
+        // server UID (or, in this test, to the test's UID). This is the reason for sending
+        // MOBILE_IFNAME even though the default network is wifi.
+        // TODO: fix this to pass in the actual default network interface. Whether or not the VPN
+        // applies to the system server UID should not have any bearing on network stats.
+        mService.setUnderlyingNetworksForVpn(onlyCell);
+        waitForIdle();
+        expectForceUpdateIfaces(wifiAndVpn, MOBILE_IFNAME, Process.myUid(), VPN_IFNAME,
+                new String[]{MOBILE_IFNAME});
+        reset(mStatsService);
+
+        mService.setUnderlyingNetworksForVpn(cellAndWifi);
+        waitForIdle();
+        expectForceUpdateIfaces(wifiAndVpn, MOBILE_IFNAME, Process.myUid(), VPN_IFNAME,
+                new String[]{MOBILE_IFNAME, WIFI_IFNAME});
+        reset(mStatsService);
+
+        // Null underlying networks are ignored.
+        mService.setUnderlyingNetworksForVpn(cellNullAndWifi);
+        waitForIdle();
+        expectForceUpdateIfaces(wifiAndVpn, MOBILE_IFNAME, Process.myUid(), VPN_IFNAME,
+                new String[]{MOBILE_IFNAME, WIFI_IFNAME});
+        reset(mStatsService);
+
+        // If an underlying network disconnects, that interface should no longer be underlying.
+        // This doesn't actually work because disconnectAndDestroyNetwork only notifies
+        // NetworkStatsService before the underlying network is actually removed. So the underlying
+        // network will only be removed if notifyIfacesChangedForNetworkStats is called again. This
+        // could result in incorrect data usage measurements if the interface used by the
+        // disconnected network is reused by a system component that does not register an agent for
+        // it (e.g., tethering).
+        mCellNetworkAgent.disconnect();
+        waitForIdle();
+        assertNull(mService.getLinkProperties(mCellNetworkAgent.getNetwork()));
+        expectForceUpdateIfaces(wifiAndVpn, MOBILE_IFNAME, Process.myUid(), VPN_IFNAME,
+                new String[]{MOBILE_IFNAME, WIFI_IFNAME});
+
+        // Confirm that we never tell NetworkStatsService that cell is no longer the underlying
+        // network for the VPN...
+        verify(mStatsService, never()).forceUpdateIfaces(any(Network[].class),
+                any(NetworkState[].class), any() /* anyString() doesn't match null */,
+                argThat(infos -> infos[0].underlyingIfaces.length == 1
+                        && WIFI_IFNAME.equals(infos[0].underlyingIfaces[0])));
+        verifyNoMoreInteractions(mStatsService);
+        reset(mStatsService);
+
+        // ... but if something else happens that causes notifyIfacesChangedForNetworkStats to be
+        // called again, it does. For example, connect Ethernet, but with a low score, such that it
+        // does not become the default network.
+        mEthernetNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_ETHERNET);
+        mEthernetNetworkAgent.adjustScore(-40);
+        mEthernetNetworkAgent.connect(false);
+        waitForIdle();
+        verify(mStatsService).forceUpdateIfaces(any(Network[].class),
+                any(NetworkState[].class), any() /* anyString() doesn't match null */,
+                argThat(vpnInfos -> vpnInfos[0].underlyingIfaces.length == 1
+                        && WIFI_IFNAME.equals(vpnInfos[0].underlyingIfaces[0])));
+        mEthernetNetworkAgent.disconnect();
+        waitForIdle();
+        reset(mStatsService);
+
+        // When a VPN declares no underlying networks (i.e., no connectivity), getAllVpnInfo
+        // does not return the VPN, so CS does not pass it to NetworkStatsService. This causes
+        // NetworkStatsFactory#adjustForTunAnd464Xlat not to attempt any VPN data migration, which
+        // is probably a performance improvement (though it's very unlikely that a VPN would declare
+        // no underlying networks).
+        // Also, for the same reason as above, the active interface passed in is null.
+        mService.setUnderlyingNetworksForVpn(new Network[0]);
+        waitForIdle();
+        expectForceUpdateIfaces(wifiAndVpn, null);
+        reset(mStatsService);
+
+        // Specifying only a null underlying network is the same as no networks.
+        mService.setUnderlyingNetworksForVpn(onlyNull);
+        waitForIdle();
+        expectForceUpdateIfaces(wifiAndVpn, null);
+        reset(mStatsService);
+
+        // Specifying networks that are all disconnected is the same as specifying no networks.
+        mService.setUnderlyingNetworksForVpn(onlyCell);
+        waitForIdle();
+        expectForceUpdateIfaces(wifiAndVpn, null);
+        reset(mStatsService);
+
+        // Passing in null again means follow the default network again.
+        mService.setUnderlyingNetworksForVpn(null);
+        waitForIdle();
+        expectForceUpdateIfaces(wifiAndVpn, WIFI_IFNAME, Process.myUid(), VPN_IFNAME,
+                new String[]{WIFI_IFNAME});
         reset(mStatsService);
     }
 
@@ -4987,22 +5166,22 @@
         // simulate that situation and check if ConnectivityService could filter that case.
         mWiFiNetworkAgent.mNetworkMonitor.forceReevaluation(Process.myUid());
         waitForIdle();
-        verify(mNotificationManager, timeout(TIMEOUT_MS).times(1)).notifyAsUser(anyString(),
-                eq(NotificationType.PRIVATE_DNS_BROKEN.eventId), any(), eq(UserHandle.ALL));
+        verify(mNotificationManager, timeout(TIMEOUT_MS).times(1)).notify(anyString(),
+                eq(NotificationType.PRIVATE_DNS_BROKEN.eventId), any());
         // If private DNS resolution successful, the PRIVATE_DNS_BROKEN notification shouldn't be
         // shown.
         mWiFiNetworkAgent.setNetworkValid(true /* isStrictMode */);
         mWiFiNetworkAgent.mNetworkMonitor.forceReevaluation(Process.myUid());
         waitForIdle();
-        verify(mNotificationManager, timeout(TIMEOUT_MS).times(1)).cancelAsUser(anyString(),
-                eq(NotificationType.PRIVATE_DNS_BROKEN.eventId), eq(UserHandle.ALL));
+        verify(mNotificationManager, timeout(TIMEOUT_MS).times(1)).cancel(anyString(),
+                eq(NotificationType.PRIVATE_DNS_BROKEN.eventId));
         // If private DNS resolution failed again, the PRIVATE_DNS_BROKEN notification should be
         // shown again.
         mWiFiNetworkAgent.setNetworkInvalid(true /* isStrictMode */);
         mWiFiNetworkAgent.mNetworkMonitor.forceReevaluation(Process.myUid());
         waitForIdle();
-        verify(mNotificationManager, timeout(TIMEOUT_MS).times(2)).notifyAsUser(anyString(),
-                eq(NotificationType.PRIVATE_DNS_BROKEN.eventId), any(), eq(UserHandle.ALL));
+        verify(mNotificationManager, timeout(TIMEOUT_MS).times(2)).notify(anyString(),
+                eq(NotificationType.PRIVATE_DNS_BROKEN.eventId), any());
     }
 
     @Test
@@ -5219,6 +5398,58 @@
     }
 
     @Test
+    public void testVpnConnectDisconnectUnderlyingNetwork() throws Exception {
+        final TestNetworkCallback callback = new TestNetworkCallback();
+        final NetworkRequest request = new NetworkRequest.Builder()
+                .removeCapability(NET_CAPABILITY_NOT_VPN).build();
+
+        mCm.registerNetworkCallback(request, callback);
+
+        // Bring up a VPN that specifies an underlying network that does not exist yet.
+        // Note: it's sort of meaningless for a VPN app to declare a network that doesn't exist yet,
+        // (and doing so is difficult without using reflection) but it's good to test that the code
+        // behaves approximately correctly.
+        mMockVpn.establishForMyUid(false, true, false);
+        final Network wifiNetwork = new Network(mNetIdManager.peekNextNetId());
+        mService.setUnderlyingNetworksForVpn(new Network[]{wifiNetwork});
+        callback.expectAvailableCallbacksUnvalidated(mMockVpn);
+        assertTrue(mCm.getNetworkCapabilities(mMockVpn.getNetwork())
+                .hasTransport(TRANSPORT_VPN));
+        assertFalse(mCm.getNetworkCapabilities(mMockVpn.getNetwork())
+                .hasTransport(TRANSPORT_WIFI));
+
+        // Make that underlying network connect, and expect to see its capabilities immediately
+        // reflected in the VPN's capabilities.
+        mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI);
+        assertEquals(wifiNetwork, mWiFiNetworkAgent.getNetwork());
+        mWiFiNetworkAgent.connect(false);
+        // TODO: the callback for the VPN happens before any callbacks are called for the wifi
+        // network that has just connected. There appear to be two issues here:
+        // 1. The VPN code will accept an underlying network as soon as getNetworkCapabilities() for
+        //    it returns non-null (which happens very early, during handleRegisterNetworkAgent).
+        //    This is not correct because that that point the network is not connected and cannot
+        //    pass any traffic.
+        // 2. When a network connects, updateNetworkInfo propagates underlying network capabilities
+        //    before rematching networks.
+        // Given that this scenario can't really happen, this is probably fine for now.
+        callback.expectCallback(CallbackEntry.NETWORK_CAPS_UPDATED, mMockVpn);
+        callback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
+        assertTrue(mCm.getNetworkCapabilities(mMockVpn.getNetwork())
+                .hasTransport(TRANSPORT_VPN));
+        assertTrue(mCm.getNetworkCapabilities(mMockVpn.getNetwork())
+                .hasTransport(TRANSPORT_WIFI));
+
+        // Disconnect the network, and expect to see the VPN capabilities change accordingly.
+        mWiFiNetworkAgent.disconnect();
+        callback.expectCallback(CallbackEntry.LOST, mWiFiNetworkAgent);
+        callback.expectCapabilitiesThat(mMockVpn, (nc) ->
+                nc.getTransportTypes().length == 1 && nc.hasTransport(TRANSPORT_VPN));
+
+        mMockVpn.disconnect();
+        mCm.unregisterNetworkCallback(callback);
+    }
+
+    @Test
     public void testVpnNetworkActive() throws Exception {
         final int uid = Process.myUid();
 
@@ -5252,42 +5483,32 @@
         vpnNetworkCallback.assertNoCallback();
         assertEquals(defaultCallback.getLastAvailableNetwork(), mCm.getActiveNetwork());
 
-        final TestNetworkAgentWrapper
-                vpnNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_VPN);
-        final ArraySet<UidRange> ranges = new ArraySet<>();
-        ranges.add(new UidRange(uid, uid));
-        mMockVpn.setNetworkAgent(vpnNetworkAgent);
-        mMockVpn.setUids(ranges);
+        final Set<UidRange> ranges = uidRangesForUid(uid);
+        mMockVpn.registerAgent(ranges);
+        mService.setUnderlyingNetworksForVpn(new Network[0]);
+
         // VPN networks do not satisfy the default request and are automatically validated
         // by NetworkMonitor
         assertFalse(NetworkMonitorUtils.isValidationRequired(
-                vpnNetworkAgent.getNetworkCapabilities()));
-        vpnNetworkAgent.setNetworkValid(false /* isStrictMode */);
+                mMockVpn.getAgent().getNetworkCapabilities()));
+        mMockVpn.getAgent().setNetworkValid(false /* isStrictMode */);
 
-        vpnNetworkAgent.connect(false);
-        mMockVpn.connect();
-        mMockVpn.setUnderlyingNetworks(new Network[0]);
+        mMockVpn.connect(false);
 
-        genericNetworkCallback.expectAvailableCallbacksUnvalidated(vpnNetworkAgent);
+        genericNetworkCallback.expectAvailableThenValidatedCallbacks(mMockVpn);
         genericNotVpnNetworkCallback.assertNoCallback();
         wifiNetworkCallback.assertNoCallback();
-        vpnNetworkCallback.expectAvailableCallbacksUnvalidated(vpnNetworkAgent);
-        defaultCallback.expectAvailableCallbacksUnvalidated(vpnNetworkAgent);
-        assertEquals(defaultCallback.getLastAvailableNetwork(), mCm.getActiveNetwork());
-
-        genericNetworkCallback.expectCallback(CallbackEntry.NETWORK_CAPS_UPDATED, vpnNetworkAgent);
-        genericNotVpnNetworkCallback.assertNoCallback();
-        vpnNetworkCallback.expectCapabilitiesThat(vpnNetworkAgent, nc -> null == nc.getUids());
-        defaultCallback.expectCallback(CallbackEntry.NETWORK_CAPS_UPDATED, vpnNetworkAgent);
+        vpnNetworkCallback.expectAvailableThenValidatedCallbacks(mMockVpn);
+        defaultCallback.expectAvailableThenValidatedCallbacks(mMockVpn);
         assertEquals(defaultCallback.getLastAvailableNetwork(), mCm.getActiveNetwork());
 
         ranges.clear();
-        vpnNetworkAgent.setUids(ranges);
+        mMockVpn.setUids(ranges);
 
-        genericNetworkCallback.expectCallback(CallbackEntry.LOST, vpnNetworkAgent);
+        genericNetworkCallback.expectCallback(CallbackEntry.LOST, mMockVpn);
         genericNotVpnNetworkCallback.assertNoCallback();
         wifiNetworkCallback.assertNoCallback();
-        vpnNetworkCallback.expectCallback(CallbackEntry.LOST, vpnNetworkAgent);
+        vpnNetworkCallback.expectCallback(CallbackEntry.LOST, mMockVpn);
 
         // TODO : The default network callback should actually get a LOST call here (also see the
         // comment below for AVAILABLE). This is because ConnectivityService does not look at UID
@@ -5295,19 +5516,18 @@
         // can't currently update their UIDs without disconnecting, so this does not matter too
         // much, but that is the reason the test here has to check for an update to the
         // capabilities instead of the expected LOST then AVAILABLE.
-        defaultCallback.expectCallback(CallbackEntry.NETWORK_CAPS_UPDATED, vpnNetworkAgent);
+        defaultCallback.expectCallback(CallbackEntry.NETWORK_CAPS_UPDATED, mMockVpn);
 
         ranges.add(new UidRange(uid, uid));
         mMockVpn.setUids(ranges);
-        vpnNetworkAgent.setUids(ranges);
 
-        genericNetworkCallback.expectAvailableCallbacksValidated(vpnNetworkAgent);
+        genericNetworkCallback.expectAvailableCallbacksValidated(mMockVpn);
         genericNotVpnNetworkCallback.assertNoCallback();
         wifiNetworkCallback.assertNoCallback();
-        vpnNetworkCallback.expectAvailableCallbacksValidated(vpnNetworkAgent);
+        vpnNetworkCallback.expectAvailableCallbacksValidated(mMockVpn);
         // TODO : Here like above, AVAILABLE would be correct, but because this can't actually
         // happen outside of the test, ConnectivityService does not rematch callbacks.
-        defaultCallback.expectCallback(CallbackEntry.NETWORK_CAPS_UPDATED, vpnNetworkAgent);
+        defaultCallback.expectCallback(CallbackEntry.NETWORK_CAPS_UPDATED, mMockVpn);
 
         mWiFiNetworkAgent.disconnect();
 
@@ -5317,13 +5537,13 @@
         vpnNetworkCallback.assertNoCallback();
         defaultCallback.assertNoCallback();
 
-        vpnNetworkAgent.disconnect();
+        mMockVpn.disconnect();
 
-        genericNetworkCallback.expectCallback(CallbackEntry.LOST, vpnNetworkAgent);
+        genericNetworkCallback.expectCallback(CallbackEntry.LOST, mMockVpn);
         genericNotVpnNetworkCallback.assertNoCallback();
         wifiNetworkCallback.assertNoCallback();
-        vpnNetworkCallback.expectCallback(CallbackEntry.LOST, vpnNetworkAgent);
-        defaultCallback.expectCallback(CallbackEntry.LOST, vpnNetworkAgent);
+        vpnNetworkCallback.expectCallback(CallbackEntry.LOST, mMockVpn);
+        defaultCallback.expectCallback(CallbackEntry.LOST, mMockVpn);
         assertEquals(null, mCm.getActiveNetwork());
 
         mCm.unregisterNetworkCallback(genericNetworkCallback);
@@ -5345,20 +5565,13 @@
         defaultCallback.expectAvailableThenValidatedCallbacks(mWiFiNetworkAgent);
         assertEquals(defaultCallback.getLastAvailableNetwork(), mCm.getActiveNetwork());
 
-        TestNetworkAgentWrapper
-                vpnNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_VPN);
-        final ArraySet<UidRange> ranges = new ArraySet<>();
-        ranges.add(new UidRange(uid, uid));
-        mMockVpn.setNetworkAgent(vpnNetworkAgent);
-        mMockVpn.setUids(ranges);
-        vpnNetworkAgent.connect(true /* validated */, false /* hasInternet */,
+        mMockVpn.establishForMyUid(true /* validated */, false /* hasInternet */,
                 false /* isStrictMode */);
-        mMockVpn.connect();
 
         defaultCallback.assertNoCallback();
         assertEquals(defaultCallback.getLastAvailableNetwork(), mCm.getActiveNetwork());
 
-        vpnNetworkAgent.disconnect();
+        mMockVpn.disconnect();
         defaultCallback.assertNoCallback();
 
         mCm.unregisterNetworkCallback(defaultCallback);
@@ -5377,21 +5590,14 @@
         defaultCallback.expectAvailableThenValidatedCallbacks(mWiFiNetworkAgent);
         assertEquals(defaultCallback.getLastAvailableNetwork(), mCm.getActiveNetwork());
 
-        TestNetworkAgentWrapper
-                vpnNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_VPN);
-        final ArraySet<UidRange> ranges = new ArraySet<>();
-        ranges.add(new UidRange(uid, uid));
-        mMockVpn.setNetworkAgent(vpnNetworkAgent);
-        mMockVpn.setUids(ranges);
-        vpnNetworkAgent.connect(true /* validated */, true /* hasInternet */,
+        mMockVpn.establishForMyUid(true /* validated */, true /* hasInternet */,
                 false /* isStrictMode */);
-        mMockVpn.connect();
 
-        defaultCallback.expectAvailableThenValidatedCallbacks(vpnNetworkAgent);
+        defaultCallback.expectAvailableThenValidatedCallbacks(mMockVpn);
         assertEquals(defaultCallback.getLastAvailableNetwork(), mCm.getActiveNetwork());
 
-        vpnNetworkAgent.disconnect();
-        defaultCallback.expectCallback(CallbackEntry.LOST, vpnNetworkAgent);
+        mMockVpn.disconnect();
+        defaultCallback.expectCallback(CallbackEntry.LOST, mMockVpn);
         defaultCallback.expectAvailableCallbacksValidated(mWiFiNetworkAgent);
 
         mCm.unregisterNetworkCallback(defaultCallback);
@@ -5409,44 +5615,36 @@
         callback.assertNoCallback();
 
         // Bring up a VPN that has the INTERNET capability, initially unvalidated.
-        final int uid = Process.myUid();
-        final TestNetworkAgentWrapper
-                vpnNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_VPN);
-        final ArraySet<UidRange> ranges = new ArraySet<>();
-        ranges.add(new UidRange(uid, uid));
-        mMockVpn.setNetworkAgent(vpnNetworkAgent);
-        mMockVpn.setUids(ranges);
-        vpnNetworkAgent.connect(false /* validated */, true /* hasInternet */,
+        mMockVpn.establishForMyUid(false /* validated */, true /* hasInternet */,
                 false /* isStrictMode */);
-        mMockVpn.connect();
 
         // Even though the VPN is unvalidated, it becomes the default network for our app.
-        callback.expectAvailableCallbacksUnvalidated(vpnNetworkAgent);
+        callback.expectAvailableCallbacksUnvalidated(mMockVpn);
         callback.assertNoCallback();
 
-        assertTrue(vpnNetworkAgent.getScore() > mEthernetNetworkAgent.getScore());
-        assertEquals(ConnectivityConstants.VPN_DEFAULT_SCORE, vpnNetworkAgent.getScore());
-        assertEquals(vpnNetworkAgent.getNetwork(), mCm.getActiveNetwork());
+        assertTrue(mMockVpn.getAgent().getScore() > mEthernetNetworkAgent.getScore());
+        assertEquals(ConnectivityConstants.VPN_DEFAULT_SCORE, mMockVpn.getAgent().getScore());
+        assertEquals(mMockVpn.getNetwork(), mCm.getActiveNetwork());
 
-        NetworkCapabilities nc = mCm.getNetworkCapabilities(vpnNetworkAgent.getNetwork());
+        NetworkCapabilities nc = mCm.getNetworkCapabilities(mMockVpn.getNetwork());
         assertFalse(nc.hasCapability(NET_CAPABILITY_VALIDATED));
         assertTrue(nc.hasCapability(NET_CAPABILITY_INTERNET));
 
         assertFalse(NetworkMonitorUtils.isValidationRequired(
-                vpnNetworkAgent.getNetworkCapabilities()));
+                mMockVpn.getAgent().getNetworkCapabilities()));
         assertTrue(NetworkMonitorUtils.isPrivateDnsValidationRequired(
-                vpnNetworkAgent.getNetworkCapabilities()));
+                mMockVpn.getAgent().getNetworkCapabilities()));
 
         // Pretend that the VPN network validates.
-        vpnNetworkAgent.setNetworkValid(false /* isStrictMode */);
-        vpnNetworkAgent.mNetworkMonitor.forceReevaluation(Process.myUid());
+        mMockVpn.getAgent().setNetworkValid(false /* isStrictMode */);
+        mMockVpn.getAgent().mNetworkMonitor.forceReevaluation(Process.myUid());
         // Expect to see the validated capability, but no other changes, because the VPN is already
         // the default network for the app.
-        callback.expectCapabilitiesWith(NET_CAPABILITY_VALIDATED, vpnNetworkAgent);
+        callback.expectCapabilitiesWith(NET_CAPABILITY_VALIDATED, mMockVpn);
         callback.assertNoCallback();
 
-        vpnNetworkAgent.disconnect();
-        callback.expectCallback(CallbackEntry.LOST, vpnNetworkAgent);
+        mMockVpn.disconnect();
+        callback.expectCallback(CallbackEntry.LOST, mMockVpn);
         callback.expectAvailableCallbacksValidated(mEthernetNetworkAgent);
     }
 
@@ -5468,21 +5666,15 @@
         mCellNetworkAgent.addCapability(NET_CAPABILITY_NOT_SUSPENDED);
         mCellNetworkAgent.connect(true);
 
-        final TestNetworkAgentWrapper vpnNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_VPN);
-        final ArraySet<UidRange> ranges = new ArraySet<>();
-        ranges.add(new UidRange(uid, uid));
-        mMockVpn.setNetworkAgent(vpnNetworkAgent);
-        mMockVpn.connect();
-        mMockVpn.setUids(ranges);
-        vpnNetworkAgent.connect(true /* validated */, false /* hasInternet */,
+        mMockVpn.establishForMyUid(true /* validated */, false /* hasInternet */,
                 false /* isStrictMode */);
 
-        vpnNetworkCallback.expectAvailableCallbacks(vpnNetworkAgent.getNetwork(),
+        vpnNetworkCallback.expectAvailableCallbacks(mMockVpn.getNetwork(),
                 false /* suspended */, false /* validated */, false /* blocked */, TIMEOUT_MS);
-        vpnNetworkCallback.expectCapabilitiesThat(vpnNetworkAgent.getNetwork(), TIMEOUT_MS,
+        vpnNetworkCallback.expectCapabilitiesThat(mMockVpn.getNetwork(), TIMEOUT_MS,
                 nc -> nc.hasCapability(NET_CAPABILITY_VALIDATED));
 
-        final NetworkCapabilities nc = mCm.getNetworkCapabilities(vpnNetworkAgent.getNetwork());
+        final NetworkCapabilities nc = mCm.getNetworkCapabilities(mMockVpn.getNetwork());
         assertTrue(nc.hasTransport(TRANSPORT_VPN));
         assertTrue(nc.hasTransport(TRANSPORT_CELLULAR));
         assertFalse(nc.hasTransport(TRANSPORT_WIFI));
@@ -5504,18 +5696,11 @@
         mCm.registerNetworkCallback(vpnNetworkRequest, vpnNetworkCallback);
         vpnNetworkCallback.assertNoCallback();
 
-        final TestNetworkAgentWrapper
-                vpnNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_VPN);
-        final ArraySet<UidRange> ranges = new ArraySet<>();
-        ranges.add(new UidRange(uid, uid));
-        mMockVpn.setNetworkAgent(vpnNetworkAgent);
-        mMockVpn.connect();
-        mMockVpn.setUids(ranges);
-        vpnNetworkAgent.connect(true /* validated */, false /* hasInternet */,
+        mMockVpn.establishForMyUid(true /* validated */, false /* hasInternet */,
                 false /* isStrictMode */);
 
-        vpnNetworkCallback.expectAvailableThenValidatedCallbacks(vpnNetworkAgent);
-        nc = mCm.getNetworkCapabilities(vpnNetworkAgent.getNetwork());
+        vpnNetworkCallback.expectAvailableThenValidatedCallbacks(mMockVpn);
+        nc = mCm.getNetworkCapabilities(mMockVpn.getNetwork());
         assertTrue(nc.hasTransport(TRANSPORT_VPN));
         assertFalse(nc.hasTransport(TRANSPORT_CELLULAR));
         assertFalse(nc.hasTransport(TRANSPORT_WIFI));
@@ -5532,7 +5717,7 @@
         mService.setUnderlyingNetworksForVpn(
                 new Network[] { mCellNetworkAgent.getNetwork() });
 
-        vpnNetworkCallback.expectCapabilitiesThat(vpnNetworkAgent,
+        vpnNetworkCallback.expectCapabilitiesThat(mMockVpn,
                 (caps) -> caps.hasTransport(TRANSPORT_VPN)
                 && caps.hasTransport(TRANSPORT_CELLULAR) && !caps.hasTransport(TRANSPORT_WIFI)
                 && !caps.hasCapability(NET_CAPABILITY_NOT_METERED)
@@ -5546,7 +5731,7 @@
         mService.setUnderlyingNetworksForVpn(
                 new Network[] { mCellNetworkAgent.getNetwork(), mWiFiNetworkAgent.getNetwork() });
 
-        vpnNetworkCallback.expectCapabilitiesThat(vpnNetworkAgent,
+        vpnNetworkCallback.expectCapabilitiesThat(mMockVpn,
                 (caps) -> caps.hasTransport(TRANSPORT_VPN)
                 && caps.hasTransport(TRANSPORT_CELLULAR) && caps.hasTransport(TRANSPORT_WIFI)
                 && !caps.hasCapability(NET_CAPABILITY_NOT_METERED)
@@ -5556,7 +5741,7 @@
         mService.setUnderlyingNetworksForVpn(
                 new Network[] { mCellNetworkAgent.getNetwork() });
 
-        vpnNetworkCallback.expectCapabilitiesThat(vpnNetworkAgent,
+        vpnNetworkCallback.expectCapabilitiesThat(mMockVpn,
                 (caps) -> caps.hasTransport(TRANSPORT_VPN)
                 && caps.hasTransport(TRANSPORT_CELLULAR) && !caps.hasTransport(TRANSPORT_WIFI)
                 && !caps.hasCapability(NET_CAPABILITY_NOT_METERED)
@@ -5564,27 +5749,27 @@
 
         // Remove NOT_SUSPENDED from the only network and observe VPN is now suspended.
         mCellNetworkAgent.removeCapability(NET_CAPABILITY_NOT_SUSPENDED);
-        vpnNetworkCallback.expectCapabilitiesThat(vpnNetworkAgent,
+        vpnNetworkCallback.expectCapabilitiesThat(mMockVpn,
                 (caps) -> caps.hasTransport(TRANSPORT_VPN)
                 && caps.hasTransport(TRANSPORT_CELLULAR) && !caps.hasTransport(TRANSPORT_WIFI)
                 && !caps.hasCapability(NET_CAPABILITY_NOT_METERED)
                 && !caps.hasCapability(NET_CAPABILITY_NOT_SUSPENDED));
-        vpnNetworkCallback.expectCallback(CallbackEntry.SUSPENDED, vpnNetworkAgent);
+        vpnNetworkCallback.expectCallback(CallbackEntry.SUSPENDED, mMockVpn);
 
         // Add NOT_SUSPENDED again and observe VPN is no longer suspended.
         mCellNetworkAgent.addCapability(NET_CAPABILITY_NOT_SUSPENDED);
-        vpnNetworkCallback.expectCapabilitiesThat(vpnNetworkAgent,
+        vpnNetworkCallback.expectCapabilitiesThat(mMockVpn,
                 (caps) -> caps.hasTransport(TRANSPORT_VPN)
                 && caps.hasTransport(TRANSPORT_CELLULAR) && !caps.hasTransport(TRANSPORT_WIFI)
                 && !caps.hasCapability(NET_CAPABILITY_NOT_METERED)
                 && caps.hasCapability(NET_CAPABILITY_NOT_SUSPENDED));
-        vpnNetworkCallback.expectCallback(CallbackEntry.RESUMED, vpnNetworkAgent);
+        vpnNetworkCallback.expectCallback(CallbackEntry.RESUMED, mMockVpn);
 
         // Use Wifi but not cell. Note the VPN is now unmetered and not suspended.
         mService.setUnderlyingNetworksForVpn(
                 new Network[] { mWiFiNetworkAgent.getNetwork() });
 
-        vpnNetworkCallback.expectCapabilitiesThat(vpnNetworkAgent,
+        vpnNetworkCallback.expectCapabilitiesThat(mMockVpn,
                 (caps) -> caps.hasTransport(TRANSPORT_VPN)
                 && !caps.hasTransport(TRANSPORT_CELLULAR) && caps.hasTransport(TRANSPORT_WIFI)
                 && caps.hasCapability(NET_CAPABILITY_NOT_METERED)
@@ -5594,7 +5779,7 @@
         mService.setUnderlyingNetworksForVpn(
                 new Network[] { mCellNetworkAgent.getNetwork(), mWiFiNetworkAgent.getNetwork() });
 
-        vpnNetworkCallback.expectCapabilitiesThat(vpnNetworkAgent,
+        vpnNetworkCallback.expectCapabilitiesThat(mMockVpn,
                 (caps) -> caps.hasTransport(TRANSPORT_VPN)
                 && caps.hasTransport(TRANSPORT_CELLULAR) && caps.hasTransport(TRANSPORT_WIFI)
                 && !caps.hasCapability(NET_CAPABILITY_NOT_METERED)
@@ -5607,7 +5792,7 @@
         // Stop using WiFi. The VPN is suspended again.
         mService.setUnderlyingNetworksForVpn(
                 new Network[] { mCellNetworkAgent.getNetwork() });
-        vpnNetworkCallback.expectCapabilitiesThat(vpnNetworkAgent,
+        vpnNetworkCallback.expectCapabilitiesThat(mMockVpn,
                 (caps) -> caps.hasTransport(TRANSPORT_VPN)
                 && caps.hasTransport(TRANSPORT_CELLULAR)
                 && !caps.hasCapability(NET_CAPABILITY_NOT_METERED)
@@ -5621,7 +5806,7 @@
         mService.setUnderlyingNetworksForVpn(
                 new Network[] { mCellNetworkAgent.getNetwork(), mWiFiNetworkAgent.getNetwork() });
 
-        vpnNetworkCallback.expectCapabilitiesThat(vpnNetworkAgent,
+        vpnNetworkCallback.expectCapabilitiesThat(mMockVpn,
                 (caps) -> caps.hasTransport(TRANSPORT_VPN)
                 && caps.hasTransport(TRANSPORT_CELLULAR) && caps.hasTransport(TRANSPORT_WIFI)
                 && !caps.hasCapability(NET_CAPABILITY_NOT_METERED)
@@ -5632,14 +5817,14 @@
         // Disconnect cell. Receive update without even removing the dead network from the
         // underlying networks – it's dead anyway. Not metered any more.
         mCellNetworkAgent.disconnect();
-        vpnNetworkCallback.expectCapabilitiesThat(vpnNetworkAgent,
+        vpnNetworkCallback.expectCapabilitiesThat(mMockVpn,
                 (caps) -> caps.hasTransport(TRANSPORT_VPN)
                 && !caps.hasTransport(TRANSPORT_CELLULAR) && caps.hasTransport(TRANSPORT_WIFI)
                 && caps.hasCapability(NET_CAPABILITY_NOT_METERED));
 
         // Disconnect wifi too. No underlying networks means this is now metered.
         mWiFiNetworkAgent.disconnect();
-        vpnNetworkCallback.expectCapabilitiesThat(vpnNetworkAgent,
+        vpnNetworkCallback.expectCapabilitiesThat(mMockVpn,
                 (caps) -> caps.hasTransport(TRANSPORT_VPN)
                 && !caps.hasTransport(TRANSPORT_CELLULAR) && !caps.hasTransport(TRANSPORT_WIFI)
                 && !caps.hasCapability(NET_CAPABILITY_NOT_METERED));
@@ -5660,18 +5845,11 @@
         mCm.registerNetworkCallback(vpnNetworkRequest, vpnNetworkCallback);
         vpnNetworkCallback.assertNoCallback();
 
-        final TestNetworkAgentWrapper
-                vpnNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_VPN);
-        final ArraySet<UidRange> ranges = new ArraySet<>();
-        ranges.add(new UidRange(uid, uid));
-        mMockVpn.setNetworkAgent(vpnNetworkAgent);
-        mMockVpn.connect();
-        mMockVpn.setUids(ranges);
-        vpnNetworkAgent.connect(true /* validated */, false /* hasInternet */,
+        mMockVpn.establishForMyUid(true /* validated */, false /* hasInternet */,
                 false /* isStrictMode */);
 
-        vpnNetworkCallback.expectAvailableThenValidatedCallbacks(vpnNetworkAgent);
-        nc = mCm.getNetworkCapabilities(vpnNetworkAgent.getNetwork());
+        vpnNetworkCallback.expectAvailableThenValidatedCallbacks(mMockVpn);
+        nc = mCm.getNetworkCapabilities(mMockVpn.getNetwork());
         assertTrue(nc.hasTransport(TRANSPORT_VPN));
         assertFalse(nc.hasTransport(TRANSPORT_CELLULAR));
         assertFalse(nc.hasTransport(TRANSPORT_WIFI));
@@ -5683,7 +5861,7 @@
         mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR);
         mCellNetworkAgent.connect(true);
 
-        vpnNetworkCallback.expectCapabilitiesThat(vpnNetworkAgent,
+        vpnNetworkCallback.expectCapabilitiesThat(mMockVpn,
                 (caps) -> caps.hasTransport(TRANSPORT_VPN)
                 && caps.hasTransport(TRANSPORT_CELLULAR) && !caps.hasTransport(TRANSPORT_WIFI)
                 && !caps.hasCapability(NET_CAPABILITY_NOT_METERED));
@@ -5693,7 +5871,7 @@
         mWiFiNetworkAgent.addCapability(NET_CAPABILITY_NOT_METERED);
         mWiFiNetworkAgent.connect(true);
 
-        vpnNetworkCallback.expectCapabilitiesThat(vpnNetworkAgent,
+        vpnNetworkCallback.expectCapabilitiesThat(mMockVpn,
                 (caps) -> caps.hasTransport(TRANSPORT_VPN)
                 && !caps.hasTransport(TRANSPORT_CELLULAR) && caps.hasTransport(TRANSPORT_WIFI)
                 && caps.hasCapability(NET_CAPABILITY_NOT_METERED));
@@ -5705,7 +5883,7 @@
         // Disconnect wifi too. Now we have no default network.
         mWiFiNetworkAgent.disconnect();
 
-        vpnNetworkCallback.expectCapabilitiesThat(vpnNetworkAgent,
+        vpnNetworkCallback.expectCapabilitiesThat(mMockVpn,
                 (caps) -> caps.hasTransport(TRANSPORT_VPN)
                 && !caps.hasTransport(TRANSPORT_CELLULAR) && !caps.hasTransport(TRANSPORT_WIFI)
                 && !caps.hasCapability(NET_CAPABILITY_NOT_METERED));
@@ -5714,6 +5892,75 @@
     }
 
     @Test
+    public void testVpnRestrictedUsers() throws Exception {
+        // NETWORK_SETTINGS is necessary to see the UID ranges in NetworkCapabilities.
+        mServiceContext.setPermission(Manifest.permission.NETWORK_SETTINGS,
+                PERMISSION_GRANTED);
+
+        final NetworkRequest request = new NetworkRequest.Builder()
+                .removeCapability(NET_CAPABILITY_NOT_VPN)
+                .build();
+        final TestNetworkCallback callback = new TestNetworkCallback();
+        mCm.registerNetworkCallback(request, callback);
+
+        // Bring up a VPN
+        mMockVpn.establishForMyUid();
+        callback.expectAvailableThenValidatedCallbacks(mMockVpn);
+        callback.assertNoCallback();
+
+        final int uid = Process.myUid();
+        NetworkCapabilities nc = mCm.getNetworkCapabilities(mMockVpn.getNetwork());
+        assertNotNull("nc=" + nc, nc.getUids());
+        assertEquals(nc.getUids(), uidRangesForUid(uid));
+
+        // Set an underlying network and expect to see the VPN transports change.
+        mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI);
+        mWiFiNetworkAgent.connect(true);
+        callback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
+        callback.expectCapabilitiesThat(mMockVpn, (caps)
+                -> caps.hasTransport(TRANSPORT_VPN)
+                && caps.hasTransport(TRANSPORT_WIFI));
+        callback.expectCapabilitiesThat(mWiFiNetworkAgent, (caps)
+                -> caps.hasCapability(NET_CAPABILITY_VALIDATED));
+
+        // Create a fake restricted profile whose parent is our user ID.
+        final int userId = UserHandle.getUserId(uid);
+        final int restrictedUserId = userId + 1;
+        final UserInfo info = new UserInfo(restrictedUserId, "user", UserInfo.FLAG_RESTRICTED);
+        info.restrictedProfileParentId = userId;
+        assertTrue(info.isRestricted());
+        when(mUserManager.getUserInfo(restrictedUserId)).thenReturn(info);
+        final Intent addedIntent = new Intent(ACTION_USER_ADDED);
+        addedIntent.putExtra(Intent.EXTRA_USER_HANDLE, restrictedUserId);
+
+        // Send a USER_ADDED broadcast for it.
+        // The BroadcastReceiver for this broadcast checks that is being run on the handler thread.
+        final Handler handler = new Handler(mCsHandlerThread.getLooper());
+        handler.post(() -> mServiceContext.sendBroadcast(addedIntent));
+
+        // Expect that the VPN UID ranges contain both |uid| and the UID range for the newly-added
+        // restricted user.
+        callback.expectCapabilitiesThat(mMockVpn, (caps)
+                -> caps.getUids().size() == 2
+                && caps.getUids().contains(new UidRange(uid, uid))
+                && caps.getUids().contains(UidRange.createForUser(restrictedUserId))
+                && caps.hasTransport(TRANSPORT_VPN)
+                && caps.hasTransport(TRANSPORT_WIFI));
+
+        // Send a USER_REMOVED broadcast and expect to lose the UID range for the restricted user.
+        final Intent removedIntent = new Intent(ACTION_USER_REMOVED);
+        removedIntent.putExtra(Intent.EXTRA_USER_HANDLE, restrictedUserId);
+        handler.post(() -> mServiceContext.sendBroadcast(removedIntent));
+
+        // Expect that the VPN gains the UID range for the restricted user.
+        callback.expectCapabilitiesThat(mMockVpn, (caps)
+                -> caps.getUids().size() == 1
+                && caps.getUids().contains(new UidRange(uid, uid))
+                && caps.hasTransport(TRANSPORT_VPN)
+                && caps.hasTransport(TRANSPORT_WIFI));
+    }
+
+    @Test
     public void testIsActiveNetworkMeteredOverWifi() throws Exception {
         // Returns true by default when no network is available.
         assertTrue(mCm.isActiveNetworkMetered());
@@ -5748,18 +5995,10 @@
         assertTrue(mCm.isActiveNetworkMetered());
 
         // Connect VPN network. By default it is using current default network (Cell).
-        TestNetworkAgentWrapper
-                vpnNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_VPN);
-        final ArraySet<UidRange> ranges = new ArraySet<>();
-        final int uid = Process.myUid();
-        ranges.add(new UidRange(uid, uid));
-        mMockVpn.setNetworkAgent(vpnNetworkAgent);
-        mMockVpn.setUids(ranges);
-        vpnNetworkAgent.connect(true);
-        mMockVpn.connect();
-        waitForIdle();
+        mMockVpn.establishForMyUid();
+
         // Ensure VPN is now the active network.
-        assertEquals(vpnNetworkAgent.getNetwork(), mCm.getActiveNetwork());
+        assertEquals(mMockVpn.getNetwork(), mCm.getActiveNetwork());
 
         // Expect VPN to be metered.
         assertTrue(mCm.isActiveNetworkMetered());
@@ -5770,7 +6009,7 @@
         mWiFiNetworkAgent.connect(true);
         waitForIdle();
         // VPN should still be the active network.
-        assertEquals(vpnNetworkAgent.getNetwork(), mCm.getActiveNetwork());
+        assertEquals(mMockVpn.getNetwork(), mCm.getActiveNetwork());
 
         // Expect VPN to be unmetered as it should now be using WiFi (new default).
         assertFalse(mCm.isActiveNetworkMetered());
@@ -5788,7 +6027,6 @@
         // VPN without any underlying networks is treated as metered.
         assertTrue(mCm.isActiveNetworkMetered());
 
-        vpnNetworkAgent.disconnect();
         mMockVpn.disconnect();
     }
 
@@ -5809,18 +6047,10 @@
         assertFalse(mCm.isActiveNetworkMetered());
 
         // Connect VPN network.
-        TestNetworkAgentWrapper
-                vpnNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_VPN);
-        final ArraySet<UidRange> ranges = new ArraySet<>();
-        final int uid = Process.myUid();
-        ranges.add(new UidRange(uid, uid));
-        mMockVpn.setNetworkAgent(vpnNetworkAgent);
-        mMockVpn.setUids(ranges);
-        vpnNetworkAgent.connect(true);
-        mMockVpn.connect();
-        waitForIdle();
+        mMockVpn.establishForMyUid();
+
         // Ensure VPN is now the active network.
-        assertEquals(vpnNetworkAgent.getNetwork(), mCm.getActiveNetwork());
+        assertEquals(mMockVpn.getNetwork(), mCm.getActiveNetwork());
         // VPN is using Cell
         mService.setUnderlyingNetworksForVpn(
                 new Network[] { mCellNetworkAgent.getNetwork() });
@@ -5860,7 +6090,6 @@
         // VPN without underlying networks is treated as metered.
         assertTrue(mCm.isActiveNetworkMetered());
 
-        vpnNetworkAgent.disconnect();
         mMockVpn.disconnect();
     }
 
@@ -5875,17 +6104,11 @@
         assertFalse(mCm.isActiveNetworkMetered());
 
         // Connect VPN network.
-        TestNetworkAgentWrapper
-                vpnNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_VPN);
-        final ArraySet<UidRange> ranges = new ArraySet<>();
-        final int uid = Process.myUid();
-        ranges.add(new UidRange(uid, uid));
-        mMockVpn.setNetworkAgent(vpnNetworkAgent);
-        mMockVpn.setUids(ranges);
-        vpnNetworkAgent.connect(true);
-        mMockVpn.connectAsAlwaysMetered();
+        mMockVpn.registerAgent(true /* isAlwaysMetered */, uidRangesForUid(Process.myUid()),
+                new LinkProperties());
+        mMockVpn.connect(true);
         waitForIdle();
-        assertEquals(vpnNetworkAgent.getNetwork(), mCm.getActiveNetwork());
+        assertEquals(mMockVpn.getNetwork(), mCm.getActiveNetwork());
 
         // VPN is tracking current platform default (WiFi).
         mService.setUnderlyingNetworksForVpn(null);
@@ -5909,7 +6132,7 @@
 
         assertTrue(mCm.isActiveNetworkMetered());
 
-        vpnNetworkAgent.disconnect();
+        mMockVpn.disconnect();
     }
 
     @Test
@@ -6018,23 +6241,23 @@
         mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR);
         mCellNetworkAgent.connect(true);
         trustedCallback.expectAvailableThenValidatedCallbacks(mCellNetworkAgent);
-        verify(mNetworkManagementService).setDefaultNetId(eq(mCellNetworkAgent.getNetwork().netId));
-        reset(mNetworkManagementService);
+        verify(mMockNetd).networkSetDefault(eq(mCellNetworkAgent.getNetwork().netId));
+        reset(mMockNetd);
 
         mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI);
         mWiFiNetworkAgent.connect(true);
         trustedCallback.expectAvailableDoubleValidatedCallbacks(mWiFiNetworkAgent);
-        verify(mNetworkManagementService).setDefaultNetId(eq(mWiFiNetworkAgent.getNetwork().netId));
-        reset(mNetworkManagementService);
+        verify(mMockNetd).networkSetDefault(eq(mWiFiNetworkAgent.getNetwork().netId));
+        reset(mMockNetd);
 
         mWiFiNetworkAgent.removeCapability(NET_CAPABILITY_TRUSTED);
         trustedCallback.expectAvailableCallbacksValidated(mCellNetworkAgent);
-        verify(mNetworkManagementService).setDefaultNetId(eq(mCellNetworkAgent.getNetwork().netId));
-        reset(mNetworkManagementService);
+        verify(mMockNetd).networkSetDefault(eq(mCellNetworkAgent.getNetwork().netId));
+        reset(mMockNetd);
 
         mCellNetworkAgent.removeCapability(NET_CAPABILITY_TRUSTED);
         trustedCallback.expectCallback(CallbackEntry.LOST, mCellNetworkAgent);
-        verify(mNetworkManagementService).clearDefaultNetId();
+        verify(mMockNetd).networkClearDefault();
 
         mCm.unregisterNetworkCallback(trustedCallback);
     }
@@ -6071,12 +6294,13 @@
     }
 
     /**
-     * Make simulated InterfaceConfig for Nat464Xlat to query clat lower layer info.
+     * Make simulated InterfaceConfigParcel for Nat464Xlat to query clat lower layer info.
      */
-    private InterfaceConfiguration getClatInterfaceConfig(LinkAddress la) {
-        InterfaceConfiguration cfg = new InterfaceConfiguration();
-        cfg.setHardwareAddress("11:22:33:44:55:66");
-        cfg.setLinkAddress(la);
+    private InterfaceConfigurationParcel getClatInterfaceConfigParcel(LinkAddress la) {
+        final InterfaceConfigurationParcel cfg = new InterfaceConfigurationParcel();
+        cfg.hwAddr = "11:22:33:44:55:66";
+        cfg.ipv4Addr = la.getAddress().getHostAddress();
+        cfg.prefixLength = la.getPrefixLength();
         return cfg;
     }
 
@@ -6138,6 +6362,7 @@
         verify(mMockNetd, times(1)).networkCreatePhysical(eq(cellNetId), anyInt());
         assertRoutesAdded(cellNetId, ipv6Subnet, defaultRoute);
         verify(mMockDnsResolver, times(1)).createNetworkCache(eq(cellNetId));
+        verify(mMockNetd, times(1)).networkAddInterface(cellNetId, MOBILE_IFNAME);
         verify(mBatteryStatsService).noteNetworkInterfaceType(cellLp.getInterfaceName(),
                 TYPE_MOBILE);
 
@@ -6146,7 +6371,7 @@
 
         // Switching default network updates TCP buffer sizes.
         verifyTcpBufferSizeChange(ConnectivityService.DEFAULT_TCP_BUFFER_SIZES);
-
+        verify(mSystemProperties, times(1)).setTcpInitRwnd(eq(TEST_TCP_INIT_RWND));
         // Add an IPv4 address. Expect prefix discovery to be stopped. Netd doesn't tell us that
         // the NAT64 prefix was removed because one was never discovered.
         cellLp.addLinkAddress(myIpv4);
@@ -6166,8 +6391,8 @@
         reset(mNetworkManagementService);
         reset(mMockNetd);
         reset(mMockDnsResolver);
-        when(mNetworkManagementService.getInterfaceConfig(CLAT_PREFIX + MOBILE_IFNAME))
-                .thenReturn(getClatInterfaceConfig(myIpv4));
+        when(mMockNetd.interfaceGetCfg(CLAT_PREFIX + MOBILE_IFNAME))
+                .thenReturn(getClatInterfaceConfigParcel(myIpv4));
 
         // Remove IPv4 address. Expect prefix discovery to be started again.
         cellLp.removeLinkAddress(myIpv4);
@@ -6194,7 +6419,7 @@
                 .getStackedLinks();
         assertEquals(makeClatLinkProperties(myIpv4), stackedLps.get(0));
         assertRoutesAdded(cellNetId, stackedDefault);
-
+        verify(mMockNetd, times(1)).networkAddInterface(cellNetId, CLAT_PREFIX + MOBILE_IFNAME);
         // Change trivial linkproperties and see if stacked link is preserved.
         cellLp.addDnsServer(InetAddress.getByName("8.8.8.8"));
         mCellNetworkAgent.sendLinkProperties(cellLp);
@@ -6216,7 +6441,8 @@
                     TYPE_MOBILE);
         }
         reset(mMockNetd);
-
+        when(mMockNetd.interfaceGetCfg(CLAT_PREFIX + MOBILE_IFNAME))
+                .thenReturn(getClatInterfaceConfigParcel(myIpv4));
         // Change the NAT64 prefix without first removing it.
         // Expect clatd to be stopped and started with the new prefix.
         mService.mNetdEventCallback.onNat64PrefixEvent(cellNetId, true /* added */,
@@ -6225,6 +6451,7 @@
                 (lp) -> lp.getStackedLinks().size() == 0);
         verify(mMockNetd, times(1)).clatdStop(MOBILE_IFNAME);
         assertRoutesRemoved(cellNetId, stackedDefault);
+        verify(mMockNetd, times(1)).networkRemoveInterface(cellNetId, CLAT_PREFIX + MOBILE_IFNAME);
 
         verify(mMockNetd, times(1)).clatdStart(MOBILE_IFNAME, kOtherNat64Prefix.toString());
         networkCallback.expectLinkPropertiesThat(mCellNetworkAgent,
@@ -6233,6 +6460,7 @@
         networkCallback.expectLinkPropertiesThat(mCellNetworkAgent,
                 (lp) -> lp.getStackedLinks().size() == 1);
         assertRoutesAdded(cellNetId, stackedDefault);
+        verify(mMockNetd, times(1)).networkAddInterface(cellNetId, CLAT_PREFIX + MOBILE_IFNAME);
         reset(mMockNetd);
 
         // Add ipv4 address, expect that clatd and prefix discovery are stopped and stacked
@@ -6257,14 +6485,14 @@
         // The interface removed callback happens but has no effect after stop is called.
         clat.interfaceRemoved(CLAT_PREFIX + MOBILE_IFNAME);
         networkCallback.assertNoCallback();
-
+        verify(mMockNetd, times(1)).networkRemoveInterface(cellNetId, CLAT_PREFIX + MOBILE_IFNAME);
         verifyNoMoreInteractions(mMockNetd);
         verifyNoMoreInteractions(mMockDnsResolver);
         reset(mNetworkManagementService);
         reset(mMockNetd);
         reset(mMockDnsResolver);
-        when(mNetworkManagementService.getInterfaceConfig(CLAT_PREFIX + MOBILE_IFNAME))
-                .thenReturn(getClatInterfaceConfig(myIpv4));
+        when(mMockNetd.interfaceGetCfg(CLAT_PREFIX + MOBILE_IFNAME))
+                .thenReturn(getClatInterfaceConfigParcel(myIpv4));
 
         // Stopping prefix discovery causes netd to tell us that the NAT64 prefix is gone.
         mService.mNetdEventCallback.onNat64PrefixEvent(cellNetId, false /* added */,
@@ -6290,6 +6518,7 @@
         networkCallback.expectLinkPropertiesThat(mCellNetworkAgent,
                 (lp) -> lp.getStackedLinks().size() == 1 && lp.getNat64Prefix() != null);
         assertRoutesAdded(cellNetId, stackedDefault);
+        verify(mMockNetd, times(1)).networkAddInterface(cellNetId, CLAT_PREFIX + MOBILE_IFNAME);
 
         // NAT64 prefix is removed. Expect that clat is stopped.
         mService.mNetdEventCallback.onNat64PrefixEvent(cellNetId, false /* added */,
@@ -6302,8 +6531,9 @@
         verify(mMockNetd, times(1)).clatdStop(MOBILE_IFNAME);
         networkCallback.expectLinkPropertiesThat(mCellNetworkAgent,
                 (lp) -> lp.getStackedLinks().size() == 0);
+        verify(mMockNetd, times(1)).networkRemoveInterface(cellNetId, CLAT_PREFIX + MOBILE_IFNAME);
+        verify(mMockNetd, times(1)).interfaceGetCfg(CLAT_PREFIX + MOBILE_IFNAME);
         verifyNoMoreInteractions(mMockNetd);
-
         // Clean up.
         mCellNetworkAgent.disconnect();
         networkCallback.expectCallback(CallbackEntry.LOST, mCellNetworkAgent);
@@ -6583,14 +6813,14 @@
         mCellNetworkAgent.connect(false);
         networkCallback.expectAvailableCallbacksUnvalidated(mCellNetworkAgent);
         verifyTcpBufferSizeChange(ConnectivityService.DEFAULT_TCP_BUFFER_SIZES);
-
+        verify(mSystemProperties, times(1)).setTcpInitRwnd(eq(TEST_TCP_INIT_RWND));
         // Change link Properties should have updated tcp buffer size.
         LinkProperties lp = new LinkProperties();
         lp.setTcpBufferSizes(testTcpBufferSizes);
         mCellNetworkAgent.sendLinkProperties(lp);
         networkCallback.expectCallback(CallbackEntry.LINK_PROPERTIES_CHANGED, mCellNetworkAgent);
         verifyTcpBufferSizeChange(testTcpBufferSizes);
-
+        verify(mSystemProperties, times(2)).setTcpInitRwnd(eq(TEST_TCP_INIT_RWND));
         // Clean up.
         mCellNetworkAgent.disconnect();
         networkCallback.expectCallback(CallbackEntry.LOST, mCellNetworkAgent);
@@ -6634,34 +6864,21 @@
         waitForIdle();
         assertNull(mService.getProxyForNetwork(null));
 
-        // Set up a VPN network with a proxy
-        final int uid = Process.myUid();
-        final TestNetworkAgentWrapper
-                vpnNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_VPN);
-        final ArraySet<UidRange> ranges = new ArraySet<>();
-        ranges.add(new UidRange(uid, uid));
-        mMockVpn.setUids(ranges);
+        // Connect a VPN network with a proxy.
         LinkProperties testLinkProperties = new LinkProperties();
         testLinkProperties.setHttpProxy(testProxyInfo);
-        vpnNetworkAgent.sendLinkProperties(testLinkProperties);
-        waitForIdle();
-
-        // Connect to VPN with proxy
-        mMockVpn.setNetworkAgent(vpnNetworkAgent);
-        vpnNetworkAgent.connect(true);
-        mMockVpn.connect();
-        waitForIdle();
+        mMockVpn.establishForMyUid(testLinkProperties);
 
         // Test that the VPN network returns a proxy, and the WiFi does not.
-        assertEquals(testProxyInfo, mService.getProxyForNetwork(vpnNetworkAgent.getNetwork()));
+        assertEquals(testProxyInfo, mService.getProxyForNetwork(mMockVpn.getNetwork()));
         assertEquals(testProxyInfo, mService.getProxyForNetwork(null));
         assertNull(mService.getProxyForNetwork(mWiFiNetworkAgent.getNetwork()));
 
         // Test that the VPN network returns no proxy when it is set to null.
         testLinkProperties.setHttpProxy(null);
-        vpnNetworkAgent.sendLinkProperties(testLinkProperties);
+        mMockVpn.sendLinkProperties(testLinkProperties);
         waitForIdle();
-        assertNull(mService.getProxyForNetwork(vpnNetworkAgent.getNetwork()));
+        assertNull(mService.getProxyForNetwork(mMockVpn.getNetwork()));
         assertNull(mService.getProxyForNetwork(null));
 
         // Set WiFi proxy and check that the vpn proxy is still null.
@@ -6672,7 +6889,7 @@
 
         // Disconnect from VPN and check that the active network, which is now the WiFi, has the
         // correct proxy setting.
-        vpnNetworkAgent.disconnect();
+        mMockVpn.disconnect();
         waitForIdle();
         assertEquals(mWiFiNetworkAgent.getNetwork(), mCm.getActiveNetwork());
         assertEquals(testProxyInfo, mService.getProxyForNetwork(mWiFiNetworkAgent.getNetwork()));
@@ -6687,17 +6904,17 @@
         lp.addRoute(new RouteInfo(new IpPrefix(Inet6Address.ANY, 0), RTN_UNREACHABLE));
         // The uid range needs to cover the test app so the network is visible to it.
         final Set<UidRange> vpnRange = Collections.singleton(UidRange.createForUser(VPN_USER));
-        final TestNetworkAgentWrapper vpnNetworkAgent = establishVpn(lp, VPN_UID, vpnRange);
+        mMockVpn.establish(lp, VPN_UID, vpnRange);
 
-        // Connected VPN should have interface rules set up. There are two expected invocations,
-        // one during VPN uid update, one during VPN LinkProperties update
+        // A connected VPN should have interface rules set up. There are two expected invocations,
+        // one during the VPN initial connection, one during the VPN LinkProperties update.
         ArgumentCaptor<int[]> uidCaptor = ArgumentCaptor.forClass(int[].class);
         verify(mMockNetd, times(2)).firewallAddUidInterfaceRules(eq("tun0"), uidCaptor.capture());
         assertContainsExactly(uidCaptor.getAllValues().get(0), APP1_UID, APP2_UID);
         assertContainsExactly(uidCaptor.getAllValues().get(1), APP1_UID, APP2_UID);
         assertTrue(mService.mPermissionMonitor.getVpnUidRanges("tun0").equals(vpnRange));
 
-        vpnNetworkAgent.disconnect();
+        mMockVpn.disconnect();
         waitForIdle();
 
         // Disconnected VPN should have interface rules removed
@@ -6714,8 +6931,7 @@
         lp.addRoute(new RouteInfo(new IpPrefix(Inet4Address.ANY, 0), null));
         // The uid range needs to cover the test app so the network is visible to it.
         final Set<UidRange> vpnRange = Collections.singleton(UidRange.createForUser(VPN_USER));
-        final TestNetworkAgentWrapper vpnNetworkAgent = establishVpn(
-                lp, Process.SYSTEM_UID, vpnRange);
+        mMockVpn.establish(lp, Process.SYSTEM_UID, vpnRange);
 
         // Legacy VPN should not have interface rules set up
         verify(mMockNetd, never()).firewallAddUidInterfaceRules(any(), any());
@@ -6730,8 +6946,7 @@
         lp.addRoute(new RouteInfo(new IpPrefix(Inet6Address.ANY, 0), RTN_UNREACHABLE));
         // The uid range needs to cover the test app so the network is visible to it.
         final Set<UidRange> vpnRange = Collections.singleton(UidRange.createForUser(VPN_USER));
-        final TestNetworkAgentWrapper vpnNetworkAgent = establishVpn(
-                lp, Process.SYSTEM_UID, vpnRange);
+        mMockVpn.establish(lp, Process.SYSTEM_UID, vpnRange);
 
         // IPv6 unreachable route should not be misinterpreted as a default route
         verify(mMockNetd, never()).firewallAddUidInterfaceRules(any(), any());
@@ -6745,7 +6960,7 @@
         lp.addRoute(new RouteInfo(new IpPrefix(Inet6Address.ANY, 0), null));
         // The uid range needs to cover the test app so the network is visible to it.
         final Set<UidRange> vpnRange = Collections.singleton(UidRange.createForUser(VPN_USER));
-        final TestNetworkAgentWrapper vpnNetworkAgent = establishVpn(lp, VPN_UID, vpnRange);
+        mMockVpn.establish(lp, VPN_UID, vpnRange);
 
         // Connected VPN should have interface rules set up. There are two expected invocations,
         // one during VPN uid update, one during VPN LinkProperties update
@@ -6757,7 +6972,7 @@
         reset(mMockNetd);
         InOrder inOrder = inOrder(mMockNetd);
         lp.setInterfaceName("tun1");
-        vpnNetworkAgent.sendLinkProperties(lp);
+        mMockVpn.sendLinkProperties(lp);
         waitForIdle();
         // VPN handover (switch to a new interface) should result in rules being updated (old rules
         // removed first, then new rules added)
@@ -6770,7 +6985,7 @@
         lp = new LinkProperties();
         lp.setInterfaceName("tun1");
         lp.addRoute(new RouteInfo(new IpPrefix("192.0.2.0/24"), null, "tun1"));
-        vpnNetworkAgent.sendLinkProperties(lp);
+        mMockVpn.sendLinkProperties(lp);
         waitForIdle();
         // VPN not routing everything should no longer have interface filtering rules
         verify(mMockNetd).firewallRemoveUidInterfaceRules(uidCaptor.capture());
@@ -6781,7 +6996,7 @@
         lp.setInterfaceName("tun1");
         lp.addRoute(new RouteInfo(new IpPrefix(Inet4Address.ANY, 0), RTN_UNREACHABLE));
         lp.addRoute(new RouteInfo(new IpPrefix(Inet6Address.ANY, 0), null));
-        vpnNetworkAgent.sendLinkProperties(lp);
+        mMockVpn.sendLinkProperties(lp);
         waitForIdle();
         // Back to routing all IPv6 traffic should have filtering rules
         verify(mMockNetd).firewallAddUidInterfaceRules(eq("tun1"), uidCaptor.capture());
@@ -6796,8 +7011,7 @@
         lp.addRoute(new RouteInfo(new IpPrefix(Inet6Address.ANY, 0), null));
         // The uid range needs to cover the test app so the network is visible to it.
         final UidRange vpnRange = UidRange.createForUser(VPN_USER);
-        final TestNetworkAgentWrapper vpnNetworkAgent = establishVpn(lp, VPN_UID,
-                Collections.singleton(vpnRange));
+        mMockVpn.establish(lp, VPN_UID, Collections.singleton(vpnRange));
 
         reset(mMockNetd);
         InOrder inOrder = inOrder(mMockNetd);
@@ -6806,7 +7020,7 @@
         final Set<UidRange> newRanges = new HashSet<>(Arrays.asList(
                 new UidRange(vpnRange.start, APP1_UID - 1),
                 new UidRange(APP1_UID + 1, vpnRange.stop)));
-        vpnNetworkAgent.setUids(newRanges);
+        mMockVpn.setUids(newRanges);
         waitForIdle();
 
         ArgumentCaptor<int[]> uidCaptor = ArgumentCaptor.forClass(int[].class);
@@ -6947,7 +7161,7 @@
     private void setupConnectionOwnerUid(int vpnOwnerUid, @VpnManager.VpnType int vpnType)
             throws Exception {
         final Set<UidRange> vpnRange = Collections.singleton(UidRange.createForUser(VPN_USER));
-        establishVpn(new LinkProperties(), vpnOwnerUid, vpnRange);
+        mMockVpn.establish(new LinkProperties(), vpnOwnerUid, vpnRange);
         mMockVpn.setVpnType(vpnType);
 
         final VpnInfo vpnInfo = new VpnInfo();
@@ -7028,19 +7242,6 @@
         mService.getConnectionOwnerUid(getTestConnectionInfo());
     }
 
-    private TestNetworkAgentWrapper establishVpn(
-            LinkProperties lp, int ownerUid, Set<UidRange> vpnRange) throws Exception {
-        final TestNetworkAgentWrapper
-                vpnNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_VPN, lp);
-        vpnNetworkAgent.getNetworkCapabilities().setOwnerUid(ownerUid);
-        mMockVpn.setNetworkAgent(vpnNetworkAgent);
-        mMockVpn.connect();
-        mMockVpn.setUids(vpnRange);
-        vpnNetworkAgent.connect(true);
-        waitForIdle();
-        return vpnNetworkAgent;
-    }
-
     private static PackageInfo buildPackageInfo(boolean hasSystemPermission, int uid) {
         final PackageInfo packageInfo = new PackageInfo();
         if (hasSystemPermission) {
@@ -7220,22 +7421,23 @@
 
         setupLocationPermissions(Build.VERSION_CODES.Q, true, AppOpsManager.OPSTR_FINE_LOCATION,
                 Manifest.permission.ACCESS_FINE_LOCATION);
+
+        mMockVpn.establishForMyUid();
+
+        // Wait for networks to connect and broadcasts to be sent before removing permissions.
+        waitForIdle();
         mServiceContext.setPermission(android.Manifest.permission.NETWORK_STACK, PERMISSION_DENIED);
 
-        // setUp() calls mockVpn() which adds a VPN with the Test Runner's uid. Configure it to be
-        // active
-        final VpnInfo info = new VpnInfo();
-        info.ownerUid = Process.myUid();
-        info.vpnIface = "interface";
-        mMockVpn.setVpnInfo(info);
-        mMockVpn.overrideUnderlyingNetworks(new Network[] {network});
+        assertTrue(mService.setUnderlyingNetworksForVpn(new Network[] {network}));
+        waitForIdle();
         assertTrue(
                 "Active VPN permission not applied",
                 mService.checkConnectivityDiagnosticsPermissions(
                         Process.myPid(), Process.myUid(), naiWithoutUid,
                         mContext.getOpPackageName()));
 
-        mMockVpn.overrideUnderlyingNetworks(null);
+        assertTrue(mService.setUnderlyingNetworksForVpn(null));
+        waitForIdle();
         assertFalse(
                 "VPN shouldn't receive callback on non-underlying network",
                 mService.checkConnectivityDiagnosticsPermissions(
@@ -7256,8 +7458,6 @@
                 Manifest.permission.ACCESS_FINE_LOCATION);
         mServiceContext.setPermission(android.Manifest.permission.NETWORK_STACK, PERMISSION_DENIED);
 
-        // Disconnect mock vpn so the uid check on NetworkAgentInfo is tested
-        mMockVpn.disconnect();
         assertTrue(
                 "NetworkCapabilities administrator uid permission not applied",
                 mService.checkConnectivityDiagnosticsPermissions(
@@ -7460,4 +7660,39 @@
 
         mCm.unregisterNetworkCallback(networkCallback);
     }
+
+    @Test
+    public void testDumpDoesNotCrash() {
+        StringWriter stringWriter = new StringWriter();
+
+        mService.dump(new FileDescriptor(), new PrintWriter(stringWriter), new String[0]);
+
+        assertFalse(stringWriter.toString().isEmpty());
+    }
+
+    @Test
+    public void testRequestsSortedByIdSortsCorrectly() {
+        final TestNetworkCallback genericNetworkCallback = new TestNetworkCallback();
+        final TestNetworkCallback wifiNetworkCallback = new TestNetworkCallback();
+        final TestNetworkCallback cellNetworkCallback = new TestNetworkCallback();
+        final NetworkRequest genericRequest = new NetworkRequest.Builder()
+                .clearCapabilities().build();
+        final NetworkRequest wifiRequest = new NetworkRequest.Builder()
+                .addTransportType(TRANSPORT_WIFI).build();
+        final NetworkRequest cellRequest = new NetworkRequest.Builder()
+                .addTransportType(TRANSPORT_CELLULAR).build();
+        mCm.registerNetworkCallback(genericRequest, genericNetworkCallback);
+        mCm.registerNetworkCallback(wifiRequest, wifiNetworkCallback);
+        mCm.registerNetworkCallback(cellRequest, cellNetworkCallback);
+
+        ConnectivityService.NetworkRequestInfo[] nriOutput = mService.requestsSortedById();
+
+        assertTrue(nriOutput.length > 1);
+        for (int i = 0; i < nriOutput.length - 1; i++) {
+            boolean isRequestIdInOrder =
+                    nriOutput[i].mRequests.get(0).requestId
+                            < nriOutput[i + 1].mRequests.get(0).requestId;
+            assertTrue(isRequestIdInOrder);
+        }
+    }
 }
diff --git a/tests/net/java/com/android/server/connectivity/DnsManagerTest.java b/tests/net/java/com/android/server/connectivity/DnsManagerTest.java
index 753dbf8..f5b85ca 100644
--- a/tests/net/java/com/android/server/connectivity/DnsManagerTest.java
+++ b/tests/net/java/com/android/server/connectivity/DnsManagerTest.java
@@ -98,7 +98,6 @@
 
     @Mock Context mCtx;
     @Mock IDnsResolver mMockDnsResolver;
-    @Mock MockableSystemProperties mSystemProperties;
 
     private void assertResolverOptionsEquals(
             @NonNull ResolverOptionsParcel actual,
@@ -137,7 +136,7 @@
         mContentResolver.addProvider(Settings.AUTHORITY,
                 new FakeSettingsProvider());
         when(mCtx.getContentResolver()).thenReturn(mContentResolver);
-        mDnsManager = new DnsManager(mCtx, mMockDnsResolver, mSystemProperties);
+        mDnsManager = new DnsManager(mCtx, mMockDnsResolver);
 
         // Clear the private DNS settings
         Settings.Global.putString(mContentResolver, PRIVATE_DNS_DEFAULT_MODE, "");
@@ -159,7 +158,6 @@
         // Send a validation event that is tracked on the alternate netId
         mDnsManager.updateTransportsForNetwork(TEST_NETID, TEST_TRANSPORT_TYPES);
         mDnsManager.noteDnsServersForNetwork(TEST_NETID, lp);
-        mDnsManager.setDefaultDnsSystemProperties(lp.getDnsServers());
         mDnsManager.flushVmDnsCache();
         mDnsManager.updateTransportsForNetwork(TEST_NETID_ALTERNATE, TEST_TRANSPORT_TYPES);
         mDnsManager.noteDnsServersForNetwork(TEST_NETID_ALTERNATE, lp);
@@ -196,7 +194,6 @@
                     }));
         mDnsManager.updateTransportsForNetwork(TEST_NETID, TEST_TRANSPORT_TYPES);
         mDnsManager.noteDnsServersForNetwork(TEST_NETID, lp);
-        mDnsManager.setDefaultDnsSystemProperties(lp.getDnsServers());
         mDnsManager.flushVmDnsCache();
         fixedLp = new LinkProperties(lp);
         mDnsManager.updatePrivateDnsStatus(TEST_NETID, fixedLp);
@@ -232,7 +229,6 @@
         lp.addDnsServer(InetAddress.getByName("3.3.3.3"));
         mDnsManager.updateTransportsForNetwork(TEST_NETID, TEST_TRANSPORT_TYPES);
         mDnsManager.noteDnsServersForNetwork(TEST_NETID, lp);
-        mDnsManager.setDefaultDnsSystemProperties(lp.getDnsServers());
         mDnsManager.flushVmDnsCache();
         mDnsManager.updatePrivateDnsValidation(
                 new DnsManager.PrivateDnsValidationUpdate(TEST_NETID,
@@ -246,7 +242,6 @@
                 mDnsManager.getPrivateDnsConfig());
         mDnsManager.updateTransportsForNetwork(TEST_NETID, TEST_TRANSPORT_TYPES);
         mDnsManager.noteDnsServersForNetwork(TEST_NETID, lp);
-        mDnsManager.setDefaultDnsSystemProperties(lp.getDnsServers());
         mDnsManager.flushVmDnsCache();
         mDnsManager.updatePrivateDnsValidation(
                 new DnsManager.PrivateDnsValidationUpdate(TEST_NETID_UNTRACKED,
@@ -295,7 +290,6 @@
                 mDnsManager.getPrivateDnsConfig());
         mDnsManager.updateTransportsForNetwork(TEST_NETID, TEST_TRANSPORT_TYPES);
         mDnsManager.noteDnsServersForNetwork(TEST_NETID, lp);
-        mDnsManager.setDefaultDnsSystemProperties(lp.getDnsServers());
         mDnsManager.flushVmDnsCache();
         mDnsManager.updatePrivateDnsValidation(
                 new DnsManager.PrivateDnsValidationUpdate(TEST_NETID,
@@ -341,7 +335,6 @@
         lp.addDnsServer(InetAddress.getByName("4.4.4.4"));
         mDnsManager.updateTransportsForNetwork(TEST_NETID, TEST_TRANSPORT_TYPES);
         mDnsManager.noteDnsServersForNetwork(TEST_NETID, lp);
-        mDnsManager.setDefaultDnsSystemProperties(lp.getDnsServers());
         mDnsManager.flushVmDnsCache();
 
         final ArgumentCaptor<ResolverParamsParcel> resolverParamsParcelCaptor =
diff --git a/tests/net/java/com/android/server/connectivity/MultipathPolicyTrackerTest.java b/tests/net/java/com/android/server/connectivity/MultipathPolicyTrackerTest.java
index de1028c..c53462c 100644
--- a/tests/net/java/com/android/server/connectivity/MultipathPolicyTrackerTest.java
+++ b/tests/net/java/com/android/server/connectivity/MultipathPolicyTrackerTest.java
@@ -34,6 +34,7 @@
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.argThat;
 import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
@@ -53,6 +54,7 @@
 import android.net.StringNetworkSpecifier;
 import android.net.TelephonyNetworkSpecifier;
 import android.os.Handler;
+import android.os.UserHandle;
 import android.provider.Settings;
 import android.telephony.TelephonyManager;
 import android.test.mock.MockContentResolver;
@@ -91,6 +93,7 @@
     private static final int POLICY_SNOOZED = -100;
 
     @Mock private Context mContext;
+    @Mock private Context mUserAllContext;
     @Mock private Resources mResources;
     @Mock private Handler mHandler;
     @Mock private MultipathPolicyTracker.Dependencies mDeps;
@@ -127,8 +130,11 @@
 
         when(mContext.getResources()).thenReturn(mResources);
         when(mContext.getApplicationInfo()).thenReturn(new ApplicationInfo());
-        when(mContext.registerReceiverAsUser(mConfigChangeReceiverCaptor.capture(),
-                any(), argThat(f -> f.hasAction(ACTION_CONFIGURATION_CHANGED)), any(), any()))
+        doReturn(UserHandle.ALL.getIdentifier()).when(mUserAllContext).getUserId();
+        when(mContext.createContextAsUser(eq(UserHandle.ALL), anyInt()))
+                .thenReturn(mUserAllContext);
+        when(mUserAllContext.registerReceiver(mConfigChangeReceiverCaptor.capture(),
+                argThat(f -> f.hasAction(ACTION_CONFIGURATION_CHANGED)), any(), any()))
                 .thenReturn(null);
 
         when(mDeps.getClock()).thenReturn(mClock);
diff --git a/tests/net/java/com/android/server/connectivity/Nat464XlatTest.java b/tests/net/java/com/android/server/connectivity/Nat464XlatTest.java
index 5046b65..4f65b67 100644
--- a/tests/net/java/com/android/server/connectivity/Nat464XlatTest.java
+++ b/tests/net/java/com/android/server/connectivity/Nat464XlatTest.java
@@ -29,7 +29,7 @@
 import android.net.ConnectivityManager;
 import android.net.IDnsResolver;
 import android.net.INetd;
-import android.net.InterfaceConfiguration;
+import android.net.InterfaceConfigurationParcel;
 import android.net.IpPrefix;
 import android.net.LinkAddress;
 import android.net.LinkProperties;
@@ -68,7 +68,6 @@
     @Mock IDnsResolver mDnsResolver;
     @Mock INetd mNetd;
     @Mock INetworkManagementService mNms;
-    @Mock InterfaceConfiguration mConfig;
     @Mock NetworkAgentInfo mNai;
 
     TestLooper mLooper;
@@ -106,9 +105,10 @@
         when(mNai.connService()).thenReturn(mConnectivity);
         when(mNai.netAgentConfig()).thenReturn(mAgentConfig);
         when(mNai.handler()).thenReturn(mHandler);
-
-        when(mNms.getInterfaceConfig(eq(STACKED_IFACE))).thenReturn(mConfig);
-        when(mConfig.getLinkAddress()).thenReturn(ADDR);
+        final InterfaceConfigurationParcel mConfig = new InterfaceConfigurationParcel();
+        when(mNetd.interfaceGetCfg(eq(STACKED_IFACE))).thenReturn(mConfig);
+        mConfig.ipv4Addr = ADDR.getAddress().getHostAddress();
+        mConfig.prefixLength =  ADDR.getPrefixLength();
     }
 
     private void assertRequiresClat(boolean expected, NetworkAgentInfo nai) {
@@ -213,7 +213,7 @@
         nat.interfaceLinkStateChanged(STACKED_IFACE, true);
         mLooper.dispatchNext();
 
-        verify(mNms).getInterfaceConfig(eq(STACKED_IFACE));
+        verify(mNetd).interfaceGetCfg(eq(STACKED_IFACE));
         verify(mConnectivity).handleUpdateLinkProperties(eq(mNai), c.capture());
         assertFalse(c.getValue().getStackedLinks().isEmpty());
         assertTrue(c.getValue().getAllInterfaceNames().contains(STACKED_IFACE));
@@ -353,7 +353,7 @@
         nat.interfaceLinkStateChanged(STACKED_IFACE, true);
         mLooper.dispatchNext();
 
-        verify(mNms).getInterfaceConfig(eq(STACKED_IFACE));
+        verify(mNetd).interfaceGetCfg(eq(STACKED_IFACE));
         verify(mConnectivity, times(1)).handleUpdateLinkProperties(eq(mNai), c.capture());
         assertFalse(c.getValue().getStackedLinks().isEmpty());
         assertTrue(c.getValue().getAllInterfaceNames().contains(STACKED_IFACE));
diff --git a/tests/net/java/com/android/server/connectivity/NetworkNotificationManagerTest.java b/tests/net/java/com/android/server/connectivity/NetworkNotificationManagerTest.java
index 47db5d4..b47be97 100644
--- a/tests/net/java/com/android/server/connectivity/NetworkNotificationManagerTest.java
+++ b/tests/net/java/com/android/server/connectivity/NetworkNotificationManagerTest.java
@@ -22,6 +22,7 @@
 import static org.mockito.Mockito.anyInt;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.eq;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.reset;
 import static org.mockito.Mockito.times;
@@ -36,6 +37,7 @@
 import android.content.res.Resources;
 import android.net.NetworkCapabilities;
 import android.net.NetworkInfo;
+import android.os.UserHandle;
 import android.telephony.TelephonyManager;
 
 import androidx.test.filters.SmallTest;
@@ -47,6 +49,7 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.AdditionalAnswers;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
@@ -104,17 +107,22 @@
         when(mCtx.getResources()).thenReturn(mResources);
         when(mCtx.getPackageManager()).thenReturn(mPm);
         when(mCtx.getApplicationInfo()).thenReturn(new ApplicationInfo());
+        final Context asUserCtx = mock(Context.class, AdditionalAnswers.delegatesTo(mCtx));
+        doReturn(UserHandle.ALL).when(asUserCtx).getUser();
+        when(mCtx.createContextAsUser(eq(UserHandle.ALL), anyInt())).thenReturn(asUserCtx);
+        when(mCtx.getSystemService(eq(Context.NOTIFICATION_SERVICE)))
+                .thenReturn(mNotificationManager);
         when(mNetworkInfo.getExtraInfo()).thenReturn("extra");
         when(mResources.getColor(anyInt(), any())).thenReturn(0xFF607D8B);
 
-        mManager = new NetworkNotificationManager(mCtx, mTelephonyManager, mNotificationManager);
+        mManager = new NetworkNotificationManager(mCtx, mTelephonyManager);
     }
 
     private void verifyTitleByNetwork(final int id, final NetworkAgentInfo nai, final int title) {
         final String tag = NetworkNotificationManager.tagFor(id);
         mManager.showNotification(id, PRIVATE_DNS_BROKEN, nai, null, null, true);
         verify(mNotificationManager, times(1))
-                .notifyAsUser(eq(tag), eq(PRIVATE_DNS_BROKEN.eventId), any(), any());
+                .notify(eq(tag), eq(PRIVATE_DNS_BROKEN.eventId), any());
         final int transportType = NetworkNotificationManager.approximateTransportType(nai);
         if (transportType == NetworkCapabilities.TRANSPORT_WIFI) {
             verify(mResources, times(1)).getString(title, eq(any()));
@@ -164,8 +172,8 @@
             final int id = ids.get(i);
             final int eventId = types.get(i).eventId;
             final String tag = NetworkNotificationManager.tagFor(id);
-            verify(mNotificationManager, times(1)).notifyAsUser(eq(tag), eq(eventId), any(), any());
-            verify(mNotificationManager, times(1)).cancelAsUser(eq(tag), eq(eventId), any());
+            verify(mNotificationManager, times(1)).notify(eq(tag), eq(eventId), any());
+            verify(mNotificationManager, times(1)).cancel(eq(tag), eq(eventId));
         }
     }
 
@@ -174,13 +182,13 @@
         mManager.showNotification(100, NO_INTERNET, mCellNai, mWifiNai, null, false);
         mManager.showNotification(101, LOST_INTERNET, mCellNai, mWifiNai, null, false);
 
-        verify(mNotificationManager, never()).notifyAsUser(any(), anyInt(), any(), any());
+        verify(mNotificationManager, never()).notify(any(), anyInt(), any());
 
         mManager.showNotification(102, NO_INTERNET, mWifiNai, mCellNai, null, false);
 
         final int eventId = NO_INTERNET.eventId;
         final String tag = NetworkNotificationManager.tagFor(102);
-        verify(mNotificationManager, times(1)).notifyAsUser(eq(tag), eq(eventId), any(), any());
+        verify(mNotificationManager, times(1)).notify(eq(tag), eq(eventId), any());
     }
 
     @Test
@@ -191,7 +199,7 @@
         mManager.showNotification(103, LOST_INTERNET, mWifiNai, mCellNai, null, false);
         mManager.showNotification(104, NETWORK_SWITCH, mWifiNai, mCellNai, null, false);
 
-        verify(mNotificationManager, never()).notifyAsUser(any(), anyInt(), any(), any());
+        verify(mNotificationManager, never()).notify(any(), anyInt(), any());
     }
 
     @Test
@@ -201,19 +209,16 @@
 
         // Show first NO_INTERNET
         mManager.showNotification(id, NO_INTERNET, mWifiNai, mCellNai, null, false);
-        verify(mNotificationManager, times(1))
-                .notifyAsUser(eq(tag), eq(NO_INTERNET.eventId), any(), any());
+        verify(mNotificationManager, times(1)).notify(eq(tag), eq(NO_INTERNET.eventId), any());
 
         // Captive portal detection triggers SIGN_IN a bit later, clearing the previous NO_INTERNET
         mManager.showNotification(id, SIGN_IN, mWifiNai, mCellNai, null, false);
-        verify(mNotificationManager, times(1))
-                .cancelAsUser(eq(tag), eq(NO_INTERNET.eventId), any());
-        verify(mNotificationManager, times(1))
-                .notifyAsUser(eq(tag), eq(SIGN_IN.eventId), any(), any());
+        verify(mNotificationManager, times(1)).cancel(eq(tag), eq(NO_INTERNET.eventId));
+        verify(mNotificationManager, times(1)).notify(eq(tag), eq(SIGN_IN.eventId), any());
 
         // Network disconnects
         mManager.clearNotification(id);
-        verify(mNotificationManager, times(1)).cancelAsUser(eq(tag), eq(SIGN_IN.eventId), any());
+        verify(mNotificationManager, times(1)).cancel(eq(tag), eq(SIGN_IN.eventId));
     }
 
     @Test
@@ -223,18 +228,17 @@
 
         // Show first SIGN_IN
         mManager.showNotification(id, SIGN_IN, mWifiNai, mCellNai, null, false);
-        verify(mNotificationManager, times(1))
-                .notifyAsUser(eq(tag), eq(SIGN_IN.eventId), any(), any());
+        verify(mNotificationManager, times(1)).notify(eq(tag), eq(SIGN_IN.eventId), any());
         reset(mNotificationManager);
 
         // NO_INTERNET arrives after, but is ignored.
         mManager.showNotification(id, NO_INTERNET, mWifiNai, mCellNai, null, false);
-        verify(mNotificationManager, never()).cancelAsUser(any(), anyInt(), any());
-        verify(mNotificationManager, never()).notifyAsUser(any(), anyInt(), any(), any());
+        verify(mNotificationManager, never()).cancel(any(), anyInt());
+        verify(mNotificationManager, never()).notify(any(), anyInt(), any());
 
         // Network disconnects
         mManager.clearNotification(id);
-        verify(mNotificationManager, times(1)).cancelAsUser(eq(tag), eq(SIGN_IN.eventId), any());
+        verify(mNotificationManager, times(1)).cancel(eq(tag), eq(SIGN_IN.eventId));
     }
 
     @Test
@@ -246,24 +250,20 @@
         // to previous type or not. If they are equal then clear the notification; if they are not
         // equal then return.
         mManager.showNotification(id, NO_INTERNET, mWifiNai, mCellNai, null, false);
-        verify(mNotificationManager, times(1))
-                .notifyAsUser(eq(tag), eq(NO_INTERNET.eventId), any(), any());
+        verify(mNotificationManager, times(1)).notify(eq(tag), eq(NO_INTERNET.eventId), any());
 
         // Previous notification is NO_INTERNET and given type is NO_INTERNET too. The notification
         // should be cleared.
         mManager.clearNotification(id, NO_INTERNET);
-        verify(mNotificationManager, times(1))
-                .cancelAsUser(eq(tag), eq(NO_INTERNET.eventId), any());
+        verify(mNotificationManager, times(1)).cancel(eq(tag), eq(NO_INTERNET.eventId));
 
         // SIGN_IN is popped-up.
         mManager.showNotification(id, SIGN_IN, mWifiNai, mCellNai, null, false);
-        verify(mNotificationManager, times(1))
-                .notifyAsUser(eq(tag), eq(SIGN_IN.eventId), any(), any());
+        verify(mNotificationManager, times(1)).notify(eq(tag), eq(SIGN_IN.eventId), any());
 
         // The notification type is not matching previous one, PARTIAL_CONNECTIVITY won't be
         // cleared.
         mManager.clearNotification(id, PARTIAL_CONNECTIVITY);
-        verify(mNotificationManager, never())
-                .cancelAsUser(eq(tag), eq(PARTIAL_CONNECTIVITY.eventId), any());
+        verify(mNotificationManager, never()).cancel(eq(tag), eq(PARTIAL_CONNECTIVITY.eventId));
     }
 }
diff --git a/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java b/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java
index 5a29c2c..de35f91 100644
--- a/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java
+++ b/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java
@@ -123,7 +123,7 @@
         MockitoAnnotations.initMocks(this);
         when(mContext.getPackageManager()).thenReturn(mPackageManager);
         when(mContext.getSystemService(eq(Context.USER_SERVICE))).thenReturn(mUserManager);
-        when(mUserManager.getUsers(eq(true))).thenReturn(
+        when(mUserManager.getAliveUsers()).thenReturn(
                 Arrays.asList(new UserInfo[] {
                         new UserInfo(MOCK_USER1, "", 0),
                         new UserInfo(MOCK_USER2, "", 0),
diff --git a/tests/net/java/com/android/server/connectivity/VpnTest.java b/tests/net/java/com/android/server/connectivity/VpnTest.java
index e8c4ee9..d0db55f 100644
--- a/tests/net/java/com/android/server/connectivity/VpnTest.java
+++ b/tests/net/java/com/android/server/connectivity/VpnTest.java
@@ -20,6 +20,7 @@
 import static android.content.pm.UserInfo.FLAG_MANAGED_PROFILE;
 import static android.content.pm.UserInfo.FLAG_PRIMARY;
 import static android.content.pm.UserInfo.FLAG_RESTRICTED;
+import static android.net.ConnectivityManager.NetworkCallback;
 import static android.net.NetworkCapabilities.LINK_BANDWIDTH_UNSPECIFIED;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_CONGESTED;
@@ -40,12 +41,16 @@
 import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.argThat;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.atLeastOnce;
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.inOrder;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.timeout;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
@@ -66,6 +71,7 @@
 import android.net.InetAddresses;
 import android.net.IpPrefix;
 import android.net.IpSecManager;
+import android.net.IpSecTunnelInterfaceResponse;
 import android.net.LinkProperties;
 import android.net.LocalSocket;
 import android.net.Network;
@@ -75,14 +81,16 @@
 import android.net.UidRange;
 import android.net.VpnManager;
 import android.net.VpnService;
+import android.net.ipsec.ike.IkeSessionCallback;
+import android.net.ipsec.ike.exceptions.IkeProtocolException;
 import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
 import android.os.ConditionVariable;
 import android.os.INetworkManagementService;
-import android.os.Looper;
 import android.os.Process;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.os.test.TestLooper;
 import android.provider.Settings;
 import android.security.Credentials;
 import android.security.KeyStore;
@@ -93,6 +101,7 @@
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.internal.R;
+import com.android.internal.net.LegacyVpnInfo;
 import com.android.internal.net.VpnConfig;
 import com.android.internal.net.VpnProfile;
 import com.android.server.IpSecService;
@@ -100,7 +109,9 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.AdditionalAnswers;
 import org.mockito.Answers;
+import org.mockito.ArgumentCaptor;
 import org.mockito.InOrder;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
@@ -150,6 +161,11 @@
     private static final String TEST_VPN_IDENTITY = "identity";
     private static final byte[] TEST_VPN_PSK = "psk".getBytes();
 
+    private static final Network TEST_NETWORK = new Network(Integer.MAX_VALUE);
+    private static final String TEST_IFACE_NAME = "TEST_IFACE";
+    private static final int TEST_TUNNEL_RESOURCE_ID = 0x2345;
+    private static final long TEST_TIMEOUT_MS = 500L;
+
     /**
      * Names and UIDs for some fake packages. Important points:
      *  - UID is ordered increasing.
@@ -203,10 +219,14 @@
         when(mContext.getOpPackageName()).thenReturn(TEST_VPN_PKG);
         when(mContext.getSystemService(eq(Context.USER_SERVICE))).thenReturn(mUserManager);
         when(mContext.getSystemService(eq(Context.APP_OPS_SERVICE))).thenReturn(mAppOps);
+        when(mContext.getSystemServiceName(NotificationManager.class))
+                .thenReturn(Context.NOTIFICATION_SERVICE);
         when(mContext.getSystemService(eq(Context.NOTIFICATION_SERVICE)))
                 .thenReturn(mNotificationManager);
         when(mContext.getSystemService(eq(Context.CONNECTIVITY_SERVICE)))
                 .thenReturn(mConnectivityManager);
+        when(mContext.getSystemServiceName(eq(ConnectivityManager.class)))
+                .thenReturn(Context.CONNECTIVITY_SERVICE);
         when(mContext.getSystemService(eq(Context.IPSEC_SERVICE))).thenReturn(mIpSecManager);
         when(mContext.getString(R.string.config_customVpnAlwaysOnDisconnectedDialogComponent))
                 .thenReturn(Resources.getSystem().getString(
@@ -225,8 +245,15 @@
         doNothing().when(mNetService).registerObserver(any());
 
         // Deny all appops by default.
-        when(mAppOps.noteOpNoThrow(anyInt(), anyInt(), anyString()))
+        when(mAppOps.noteOpNoThrow(anyString(), anyInt(), anyString(), any(), any()))
                 .thenReturn(AppOpsManager.MODE_IGNORED);
+
+        // Setup IpSecService
+        final IpSecTunnelInterfaceResponse tunnelResp =
+                new IpSecTunnelInterfaceResponse(
+                        IpSecManager.Status.OK, TEST_TUNNEL_RESOURCE_ID, TEST_IFACE_NAME);
+        when(mIpSecService.createTunnelInterface(any(), any(), any(), any(), any()))
+                .thenReturn(tunnelResp);
     }
 
     @Test
@@ -566,7 +593,7 @@
     }
 
     @Test
-    public void testNotificationShownForAlwaysOnApp() {
+    public void testNotificationShownForAlwaysOnApp() throws Exception {
         final UserHandle userHandle = UserHandle.of(primaryUser.id);
         final Vpn vpn = createVpn(primaryUser.id);
         setMockedUsers(primaryUser);
@@ -575,31 +602,27 @@
 
         // Don't show a notification for regular disconnected states.
         vpn.updateState(DetailedState.DISCONNECTED, TAG);
-        order.verify(mNotificationManager, atLeastOnce())
-                .cancelAsUser(anyString(), anyInt(), eq(userHandle));
+        order.verify(mNotificationManager, atLeastOnce()).cancel(anyString(), anyInt());
 
         // Start showing a notification for disconnected once always-on.
         vpn.setAlwaysOnPackage(PKGS[0], false, null, mKeyStore);
-        order.verify(mNotificationManager)
-                .notifyAsUser(anyString(), anyInt(), any(), eq(userHandle));
+        order.verify(mNotificationManager).notify(anyString(), anyInt(), any());
 
         // Stop showing the notification once connected.
         vpn.updateState(DetailedState.CONNECTED, TAG);
-        order.verify(mNotificationManager).cancelAsUser(anyString(), anyInt(), eq(userHandle));
+        order.verify(mNotificationManager).cancel(anyString(), anyInt());
 
         // Show the notification if we disconnect again.
         vpn.updateState(DetailedState.DISCONNECTED, TAG);
-        order.verify(mNotificationManager)
-                .notifyAsUser(anyString(), anyInt(), any(), eq(userHandle));
+        order.verify(mNotificationManager).notify(anyString(), anyInt(), any());
 
         // Notification should be cleared after unsetting always-on package.
         vpn.setAlwaysOnPackage(null, false, null, mKeyStore);
-        order.verify(mNotificationManager).cancelAsUser(anyString(), anyInt(), eq(userHandle));
+        order.verify(mNotificationManager).cancel(anyString(), anyInt());
     }
 
     @Test
     public void testCapabilities() {
-        final Vpn vpn = createVpn(primaryUser.id);
         setMockedUsers(primaryUser);
 
         final Network mobile = new Network(1);
@@ -709,26 +732,27 @@
         assertEquals(expected, vpn.getProfileNameForPackage(TEST_VPN_PKG));
     }
 
-    private Vpn createVpnAndSetupUidChecks(int... grantedOps) throws Exception {
+    private Vpn createVpnAndSetupUidChecks(String... grantedOps) throws Exception {
         return createVpnAndSetupUidChecks(primaryUser, grantedOps);
     }
 
-    private Vpn createVpnAndSetupUidChecks(UserInfo user, int... grantedOps) throws Exception {
+    private Vpn createVpnAndSetupUidChecks(UserInfo user, String... grantedOps) throws Exception {
         final Vpn vpn = createVpn(user.id);
         setMockedUsers(user);
 
         when(mPackageManager.getPackageUidAsUser(eq(TEST_VPN_PKG), anyInt()))
                 .thenReturn(Process.myUid());
 
-        for (final int op : grantedOps) {
-            when(mAppOps.noteOpNoThrow(op, Process.myUid(), TEST_VPN_PKG))
+        for (final String opStr : grantedOps) {
+            when(mAppOps.noteOpNoThrow(opStr, Process.myUid(), TEST_VPN_PKG,
+                    null /* attributionTag */, null /* message */))
                     .thenReturn(AppOpsManager.MODE_ALLOWED);
         }
 
         return vpn;
     }
 
-    private void checkProvisionVpnProfile(Vpn vpn, boolean expectedResult, int... checkedOps) {
+    private void checkProvisionVpnProfile(Vpn vpn, boolean expectedResult, String... checkedOps) {
         assertEquals(expectedResult, vpn.provisionVpnProfile(TEST_VPN_PKG, mVpnProfile, mKeyStore));
 
         // The profile should always be stored, whether or not consent has been previously granted.
@@ -739,8 +763,9 @@
                         eq(Process.SYSTEM_UID),
                         eq(0));
 
-        for (final int checkedOp : checkedOps) {
-            verify(mAppOps).noteOpNoThrow(checkedOp, Process.myUid(), TEST_VPN_PKG);
+        for (final String checkedOpStr : checkedOps) {
+            verify(mAppOps).noteOpNoThrow(checkedOpStr, Process.myUid(), TEST_VPN_PKG,
+                    null /* attributionTag */, null /* message */);
         }
     }
 
@@ -748,11 +773,11 @@
     public void testProvisionVpnProfileNoIpsecTunnels() throws Exception {
         when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_IPSEC_TUNNELS))
                 .thenReturn(false);
-        final Vpn vpn = createVpnAndSetupUidChecks(AppOpsManager.OP_ACTIVATE_PLATFORM_VPN);
+        final Vpn vpn = createVpnAndSetupUidChecks(AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN);
 
         try {
             checkProvisionVpnProfile(
-                    vpn, true /* expectedResult */, AppOpsManager.OP_ACTIVATE_PLATFORM_VPN);
+                    vpn, true /* expectedResult */, AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN);
             fail("Expected exception due to missing feature");
         } catch (UnsupportedOperationException expected) {
         }
@@ -760,10 +785,10 @@
 
     @Test
     public void testProvisionVpnProfilePreconsented() throws Exception {
-        final Vpn vpn = createVpnAndSetupUidChecks(AppOpsManager.OP_ACTIVATE_PLATFORM_VPN);
+        final Vpn vpn = createVpnAndSetupUidChecks(AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN);
 
         checkProvisionVpnProfile(
-                vpn, true /* expectedResult */, AppOpsManager.OP_ACTIVATE_PLATFORM_VPN);
+                vpn, true /* expectedResult */, AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN);
     }
 
     @Test
@@ -773,19 +798,19 @@
         // Expect that both the ACTIVATE_VPN and ACTIVATE_PLATFORM_VPN were tried, but the caller
         // had neither.
         checkProvisionVpnProfile(vpn, false /* expectedResult */,
-                AppOpsManager.OP_ACTIVATE_PLATFORM_VPN, AppOpsManager.OP_ACTIVATE_VPN);
+                AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN, AppOpsManager.OPSTR_ACTIVATE_VPN);
     }
 
     @Test
     public void testProvisionVpnProfileVpnServicePreconsented() throws Exception {
-        final Vpn vpn = createVpnAndSetupUidChecks(AppOpsManager.OP_ACTIVATE_VPN);
+        final Vpn vpn = createVpnAndSetupUidChecks(AppOpsManager.OPSTR_ACTIVATE_VPN);
 
-        checkProvisionVpnProfile(vpn, true /* expectedResult */, AppOpsManager.OP_ACTIVATE_VPN);
+        checkProvisionVpnProfile(vpn, true /* expectedResult */, AppOpsManager.OPSTR_ACTIVATE_VPN);
     }
 
     @Test
     public void testProvisionVpnProfileTooLarge() throws Exception {
-        final Vpn vpn = createVpnAndSetupUidChecks(AppOpsManager.OP_ACTIVATE_PLATFORM_VPN);
+        final Vpn vpn = createVpnAndSetupUidChecks(AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN);
 
         final VpnProfile bigProfile = new VpnProfile("");
         bigProfile.name = new String(new byte[Vpn.MAX_VPN_PROFILE_SIZE_BYTES + 1]);
@@ -801,7 +826,7 @@
     public void testProvisionVpnProfileRestrictedUser() throws Exception {
         final Vpn vpn =
                 createVpnAndSetupUidChecks(
-                        restrictedProfileA, AppOpsManager.OP_ACTIVATE_PLATFORM_VPN);
+                        restrictedProfileA, AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN);
 
         try {
             vpn.provisionVpnProfile(TEST_VPN_PKG, mVpnProfile, mKeyStore);
@@ -824,7 +849,7 @@
     public void testDeleteVpnProfileRestrictedUser() throws Exception {
         final Vpn vpn =
                 createVpnAndSetupUidChecks(
-                        restrictedProfileA, AppOpsManager.OP_ACTIVATE_PLATFORM_VPN);
+                        restrictedProfileA, AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN);
 
         try {
             vpn.deleteVpnProfile(TEST_VPN_PKG, mKeyStore);
@@ -847,7 +872,7 @@
 
     @Test
     public void testStartVpnProfile() throws Exception {
-        final Vpn vpn = createVpnAndSetupUidChecks(AppOpsManager.OP_ACTIVATE_PLATFORM_VPN);
+        final Vpn vpn = createVpnAndSetupUidChecks(AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN);
 
         when(mKeyStore.get(vpn.getProfileNameForPackage(TEST_VPN_PKG)))
                 .thenReturn(mVpnProfile.encode());
@@ -857,14 +882,16 @@
         verify(mKeyStore).get(eq(vpn.getProfileNameForPackage(TEST_VPN_PKG)));
         verify(mAppOps)
                 .noteOpNoThrow(
-                        eq(AppOpsManager.OP_ACTIVATE_PLATFORM_VPN),
+                        eq(AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN),
                         eq(Process.myUid()),
-                        eq(TEST_VPN_PKG));
+                        eq(TEST_VPN_PKG),
+                        eq(null) /* attributionTag */,
+                        eq(null) /* message */);
     }
 
     @Test
     public void testStartVpnProfileVpnServicePreconsented() throws Exception {
-        final Vpn vpn = createVpnAndSetupUidChecks(AppOpsManager.OP_ACTIVATE_VPN);
+        final Vpn vpn = createVpnAndSetupUidChecks(AppOpsManager.OPSTR_ACTIVATE_VPN);
 
         when(mKeyStore.get(vpn.getProfileNameForPackage(TEST_VPN_PKG)))
                 .thenReturn(mVpnProfile.encode());
@@ -872,7 +899,8 @@
         vpn.startVpnProfile(TEST_VPN_PKG, mKeyStore);
 
         // Verify that the the ACTIVATE_VPN appop was checked, but no error was thrown.
-        verify(mAppOps).noteOpNoThrow(AppOpsManager.OP_ACTIVATE_VPN, Process.myUid(), TEST_VPN_PKG);
+        verify(mAppOps).noteOpNoThrow(AppOpsManager.OPSTR_ACTIVATE_VPN, Process.myUid(),
+                TEST_VPN_PKG, null /* attributionTag */, null /* message */);
     }
 
     @Test
@@ -888,10 +916,13 @@
         // Verify both appops were checked.
         verify(mAppOps)
                 .noteOpNoThrow(
-                        eq(AppOpsManager.OP_ACTIVATE_PLATFORM_VPN),
+                        eq(AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN),
                         eq(Process.myUid()),
-                        eq(TEST_VPN_PKG));
-        verify(mAppOps).noteOpNoThrow(AppOpsManager.OP_ACTIVATE_VPN, Process.myUid(), TEST_VPN_PKG);
+                        eq(TEST_VPN_PKG),
+                        eq(null) /* attributionTag */,
+                        eq(null) /* message */);
+        verify(mAppOps).noteOpNoThrow(AppOpsManager.OPSTR_ACTIVATE_VPN, Process.myUid(),
+                TEST_VPN_PKG, null /* attributionTag */, null /* message */);
 
         // Keystore should never have been accessed.
         verify(mKeyStore, never()).get(any());
@@ -899,7 +930,7 @@
 
     @Test
     public void testStartVpnProfileMissingProfile() throws Exception {
-        final Vpn vpn = createVpnAndSetupUidChecks(AppOpsManager.OP_ACTIVATE_PLATFORM_VPN);
+        final Vpn vpn = createVpnAndSetupUidChecks(AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN);
 
         when(mKeyStore.get(vpn.getProfileNameForPackage(TEST_VPN_PKG))).thenReturn(null);
 
@@ -912,16 +943,18 @@
         verify(mKeyStore).get(vpn.getProfileNameForPackage(TEST_VPN_PKG));
         verify(mAppOps)
                 .noteOpNoThrow(
-                        eq(AppOpsManager.OP_ACTIVATE_PLATFORM_VPN),
+                        eq(AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN),
                         eq(Process.myUid()),
-                        eq(TEST_VPN_PKG));
+                        eq(TEST_VPN_PKG),
+                        eq(null) /* attributionTag */,
+                        eq(null) /* message */);
     }
 
     @Test
     public void testStartVpnProfileRestrictedUser() throws Exception {
         final Vpn vpn =
                 createVpnAndSetupUidChecks(
-                        restrictedProfileA, AppOpsManager.OP_ACTIVATE_PLATFORM_VPN);
+                        restrictedProfileA, AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN);
 
         try {
             vpn.startVpnProfile(TEST_VPN_PKG, mKeyStore);
@@ -934,7 +967,7 @@
     public void testStopVpnProfileRestrictedUser() throws Exception {
         final Vpn vpn =
                 createVpnAndSetupUidChecks(
-                        restrictedProfileA, AppOpsManager.OP_ACTIVATE_PLATFORM_VPN);
+                        restrictedProfileA, AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN);
 
         try {
             vpn.stopVpnProfile(TEST_VPN_PKG);
@@ -950,7 +983,7 @@
         assertTrue(vpn.setPackageAuthorization(TEST_VPN_PKG, VpnManager.TYPE_VPN_SERVICE));
         verify(mAppOps)
                 .setMode(
-                        eq(AppOpsManager.OP_ACTIVATE_VPN),
+                        eq(AppOpsManager.OPSTR_ACTIVATE_VPN),
                         eq(Process.myUid()),
                         eq(TEST_VPN_PKG),
                         eq(AppOpsManager.MODE_ALLOWED));
@@ -963,7 +996,7 @@
         assertTrue(vpn.setPackageAuthorization(TEST_VPN_PKG, VpnManager.TYPE_VPN_PLATFORM));
         verify(mAppOps)
                 .setMode(
-                        eq(AppOpsManager.OP_ACTIVATE_PLATFORM_VPN),
+                        eq(AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN),
                         eq(Process.myUid()),
                         eq(TEST_VPN_PKG),
                         eq(AppOpsManager.MODE_ALLOWED));
@@ -976,24 +1009,70 @@
         assertTrue(vpn.setPackageAuthorization(TEST_VPN_PKG, VpnManager.TYPE_VPN_NONE));
         verify(mAppOps)
                 .setMode(
-                        eq(AppOpsManager.OP_ACTIVATE_VPN),
+                        eq(AppOpsManager.OPSTR_ACTIVATE_VPN),
                         eq(Process.myUid()),
                         eq(TEST_VPN_PKG),
                         eq(AppOpsManager.MODE_IGNORED));
         verify(mAppOps)
                 .setMode(
-                        eq(AppOpsManager.OP_ACTIVATE_PLATFORM_VPN),
+                        eq(AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN),
                         eq(Process.myUid()),
                         eq(TEST_VPN_PKG),
                         eq(AppOpsManager.MODE_IGNORED));
     }
 
+    private NetworkCallback triggerOnAvailableAndGetCallback() {
+        final ArgumentCaptor<NetworkCallback> networkCallbackCaptor =
+                ArgumentCaptor.forClass(NetworkCallback.class);
+        verify(mConnectivityManager, timeout(TEST_TIMEOUT_MS))
+                .requestNetwork(any(), networkCallbackCaptor.capture());
+
+        final NetworkCallback cb = networkCallbackCaptor.getValue();
+        cb.onAvailable(TEST_NETWORK);
+        return cb;
+    }
+
+    @Test
+    public void testStartPlatformVpnAuthenticationFailed() throws Exception {
+        final ArgumentCaptor<IkeSessionCallback> captor =
+                ArgumentCaptor.forClass(IkeSessionCallback.class);
+        final IkeProtocolException exception = mock(IkeProtocolException.class);
+        when(exception.getErrorType())
+                .thenReturn(IkeProtocolException.ERROR_TYPE_AUTHENTICATION_FAILED);
+
+        final Vpn vpn = startLegacyVpn(createVpn(primaryUser.id), (mVpnProfile));
+        final NetworkCallback cb = triggerOnAvailableAndGetCallback();
+
+        // Wait for createIkeSession() to be called before proceeding in order to ensure consistent
+        // state
+        verify(mIkev2SessionCreator, timeout(TEST_TIMEOUT_MS))
+                .createIkeSession(any(), any(), any(), any(), captor.capture(), any());
+        final IkeSessionCallback ikeCb = captor.getValue();
+        ikeCb.onClosedExceptionally(exception);
+
+        verify(mConnectivityManager, timeout(TEST_TIMEOUT_MS)).unregisterNetworkCallback(eq(cb));
+        assertEquals(LegacyVpnInfo.STATE_FAILED, vpn.getLegacyVpnInfo().state);
+    }
+
+    @Test
+    public void testStartPlatformVpnIllegalArgumentExceptionInSetup() throws Exception {
+        when(mIkev2SessionCreator.createIkeSession(any(), any(), any(), any(), any(), any()))
+                .thenThrow(new IllegalArgumentException());
+        final Vpn vpn = startLegacyVpn(createVpn(primaryUser.id), mVpnProfile);
+        final NetworkCallback cb = triggerOnAvailableAndGetCallback();
+
+        // Wait for createIkeSession() to be called before proceeding in order to ensure consistent
+        // state
+        verify(mConnectivityManager, timeout(TEST_TIMEOUT_MS)).unregisterNetworkCallback(eq(cb));
+        assertEquals(LegacyVpnInfo.STATE_FAILED, vpn.getLegacyVpnInfo().state);
+    }
+
     private void setAndVerifyAlwaysOnPackage(Vpn vpn, int uid, boolean lockdownEnabled) {
         assertTrue(vpn.setAlwaysOnPackage(TEST_VPN_PKG, lockdownEnabled, null, mKeyStore));
 
         verify(mKeyStore).get(eq(vpn.getProfileNameForPackage(TEST_VPN_PKG)));
         verify(mAppOps).setMode(
-                eq(AppOpsManager.OP_ACTIVATE_PLATFORM_VPN), eq(uid), eq(TEST_VPN_PKG),
+                eq(AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN), eq(uid), eq(TEST_VPN_PKG),
                 eq(AppOpsManager.MODE_ALLOWED));
 
         verify(mSystemServices).settingsSecurePutStringForUser(
@@ -1024,8 +1103,7 @@
         // a subsequent CL.
     }
 
-    public Vpn startLegacyVpn(final VpnProfile vpnProfile) throws Exception {
-        final Vpn vpn = createVpn(primaryUser.id);
+    private Vpn startLegacyVpn(final Vpn vpn, final VpnProfile vpnProfile) throws Exception {
         setMockedUsers(primaryUser);
 
         // Dummy egress interface
@@ -1042,7 +1120,7 @@
 
     @Test
     public void testStartPlatformVpn() throws Exception {
-        startLegacyVpn(mVpnProfile);
+        startLegacyVpn(createVpn(primaryUser.id), mVpnProfile);
         // TODO: Test the Ikev2VpnRunner started up properly. Relies on utility methods added in
         // a subsequent patch.
     }
@@ -1077,7 +1155,7 @@
                     legacyRunnerReady.open();
                     return new Network(102);
                 });
-        final Vpn vpn = startLegacyVpn(profile);
+        final Vpn vpn = startLegacyVpn(createVpn(primaryUser.id), profile);
         final TestDeps deps = (TestDeps) vpn.mDeps;
         try {
             // udppsk and 1701 are the values for TYPE_L2TP_IPSEC_PSK
@@ -1090,7 +1168,7 @@
                     new String[] { EGRESS_IFACE, "l2tp", expectedAddr, "1701", profile.l2tpSecret,
                             "name", profile.username, "password", profile.password,
                             "linkname", "vpn", "refuse-eap", "nodefaultroute", "usepeerdns",
-                            "idle", "1800", "mtu", "1400", "mru", "1400" },
+                            "idle", "1800", "mtu", "1270", "mru", "1270" },
                     deps.mtpdArgs.get(10, TimeUnit.SECONDS));
             // Now wait for the runner to be ready before testing for the route.
             legacyRunnerReady.block(10_000);
@@ -1198,7 +1276,7 @@
         }
 
         @Override
-        public boolean checkInterfacePresent(final Vpn vpn, final String iface) {
+        public boolean isInterfacePresent(final Vpn vpn, final String iface) {
             return true;
         }
     }
@@ -1207,8 +1285,17 @@
      * Mock some methods of vpn object.
      */
     private Vpn createVpn(@UserIdInt int userId) {
-        return new Vpn(Looper.myLooper(), mContext, new TestDeps(), mNetService,
+        final Context asUserContext = mock(Context.class, AdditionalAnswers.delegatesTo(mContext));
+        doReturn(UserHandle.of(userId)).when(asUserContext).getUser();
+        when(mContext.createContextAsUser(eq(UserHandle.of(userId)), anyInt()))
+                .thenReturn(asUserContext);
+        final TestLooper testLooper = new TestLooper();
+        final Vpn vpn = new Vpn(testLooper.getLooper(), mContext, new TestDeps(), mNetService,
                 userId, mKeyStore, mSystemServices, mIkev2SessionCreator);
+        verify(mConnectivityManager, times(1)).registerNetworkProvider(argThat(
+                provider -> provider.getName().contains("VpnNetworkProvider")
+        ));
+        return vpn;
     }
 
     private static void assertBlocked(Vpn vpn, int... uids) {
@@ -1238,15 +1325,14 @@
          * @see UserManagerService#getUsers(boolean)
          */
         doAnswer(invocation -> {
-            final boolean excludeDying = (boolean) invocation.getArguments()[0];
             final ArrayList<UserInfo> result = new ArrayList<>(users.length);
             for (UserInfo ui : users) {
-                if (!excludeDying || (ui.isEnabled() && !ui.partial)) {
+                if (ui.isEnabled() && !ui.partial) {
                     result.add(ui);
                 }
             }
             return result;
-        }).when(mUserManager).getUsers(anyBoolean());
+        }).when(mUserManager).getAliveUsers();
 
         doAnswer(invocation -> {
             final int id = (int) invocation.getArguments()[0];
diff --git a/tests/net/java/com/android/server/net/NetworkStatsAccessTest.java b/tests/net/java/com/android/server/net/NetworkStatsAccessTest.java
index 858358c..8b730af 100644
--- a/tests/net/java/com/android/server/net/NetworkStatsAccessTest.java
+++ b/tests/net/java/com/android/server/net/NetworkStatsAccessTest.java
@@ -22,7 +22,6 @@
 import android.Manifest;
 import android.Manifest.permission;
 import android.app.AppOpsManager;
-import android.app.admin.DeviceAdminInfo;
 import android.app.admin.DevicePolicyManagerInternal;
 import android.content.Context;
 import android.content.pm.PackageManager;
@@ -167,13 +166,11 @@
     }
 
     private void setIsDeviceOwner(boolean isOwner) {
-        when(mDpmi.isActiveAdminWithPolicy(TEST_UID, DeviceAdminInfo.USES_POLICY_DEVICE_OWNER))
-                .thenReturn(isOwner);
+        when(mDpmi.isActiveDeviceOwner(TEST_UID)).thenReturn(isOwner);
     }
 
     private void setIsProfileOwner(boolean isOwner) {
-        when(mDpmi.isActiveAdminWithPolicy(TEST_UID, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER))
-                .thenReturn(isOwner);
+        when(mDpmi.isActiveProfileOwner(TEST_UID)).thenReturn(isOwner);
     }
 
     private void setHasAppOpsPermission(int appOpsMode, boolean hasPermission) {
diff --git a/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java b/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java
index 7abe189..cd9406c 100644
--- a/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java
+++ b/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java
@@ -35,7 +35,6 @@
 import static android.net.NetworkStats.SET_ALL;
 import static android.net.NetworkStats.SET_DEFAULT;
 import static android.net.NetworkStats.SET_FOREGROUND;
-import static android.net.NetworkStats.STATS_PER_IFACE;
 import static android.net.NetworkStats.STATS_PER_UID;
 import static android.net.NetworkStats.TAG_ALL;
 import static android.net.NetworkStats.TAG_NONE;
@@ -994,7 +993,7 @@
     public void testTethering() throws Exception {
         // pretend first mobile network comes online
         expectDefaultSettings();
-        NetworkState[] states = new NetworkState[] {buildMobile3gState(IMSI_1)};
+        final NetworkState[] states = new NetworkState[]{buildMobile3gState(IMSI_1)};
         expectNetworkStatsSummary(buildEmptyStats());
         expectNetworkStatsUidDetail(buildEmptyStats());
 
@@ -1004,23 +1003,39 @@
         incrementCurrentTime(HOUR_IN_MILLIS);
         expectDefaultSettings();
 
+        // Register custom provider and retrieve callback.
+        final TestableNetworkStatsProviderBinder provider =
+                new TestableNetworkStatsProviderBinder();
+        final INetworkStatsProviderCallback cb =
+                mService.registerNetworkStatsProvider("TEST-TETHERING-OFFLOAD", provider);
+        assertNotNull(cb);
+        final long now = getElapsedRealtime();
+
         // Traffic seen by kernel counters (includes software tethering).
-        final NetworkStats ifaceStats = new NetworkStats(getElapsedRealtime(), 1)
+        final NetworkStats swIfaceStats = new NetworkStats(now, 1)
                 .insertEntry(TEST_IFACE, 1536L, 12L, 384L, 3L);
         // Hardware tethering traffic, not seen by kernel counters.
-        final NetworkStats tetherStatsHardware = new NetworkStats(getElapsedRealtime(), 1)
-                .insertEntry(TEST_IFACE, 512L, 4L, 128L, 1L);
+        final NetworkStats tetherHwIfaceStats = new NetworkStats(now, 1)
+                .insertEntry(new NetworkStats.Entry(TEST_IFACE, UID_ALL, SET_DEFAULT,
+                        TAG_NONE, METERED_YES, ROAMING_NO, DEFAULT_NETWORK_YES,
+                        512L, 4L, 128L, 1L, 0L));
+        final NetworkStats tetherHwUidStats = new NetworkStats(now, 1)
+                .insertEntry(new NetworkStats.Entry(TEST_IFACE, UID_TETHERING, SET_DEFAULT,
+                        TAG_NONE, METERED_YES, ROAMING_NO, DEFAULT_NETWORK_YES,
+                        512L, 4L, 128L, 1L, 0L));
+        cb.notifyStatsUpdated(0 /* unused */, tetherHwIfaceStats, tetherHwUidStats);
 
-        // Traffic for UID_RED.
-        final NetworkStats uidStats = new NetworkStats(getElapsedRealtime(), 1)
+        // Fake some traffic done by apps on the device (as opposed to tethering), and record it
+        // into UID stats (as opposed to iface stats).
+        final NetworkStats localUidStats = new NetworkStats(now, 1)
                 .insertEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 128L, 2L, 128L, 2L, 0L);
-        // All tethering traffic, both hardware and software.
-        final NetworkStats tetherStats = new NetworkStats(getElapsedRealtime(), 1)
-                .insertEntry(TEST_IFACE, UID_TETHERING, SET_DEFAULT, TAG_NONE, 1920L, 14L, 384L, 2L,
+        // Software per-uid tethering traffic.
+        final NetworkStats tetherSwUidStats = new NetworkStats(now, 1)
+                .insertEntry(TEST_IFACE, UID_TETHERING, SET_DEFAULT, TAG_NONE, 1408L, 10L, 256L, 1L,
                         0L);
 
-        expectNetworkStatsSummary(ifaceStats, tetherStatsHardware);
-        expectNetworkStatsUidDetail(uidStats, tetherStats);
+        expectNetworkStatsSummary(swIfaceStats);
+        expectNetworkStatsUidDetail(localUidStats, tetherSwUidStats);
         forcePollAndWaitForIdle();
 
         // verify service recorded history
@@ -1362,12 +1377,6 @@
     }
 
     private void expectNetworkStatsSummary(NetworkStats summary) throws Exception {
-        expectNetworkStatsSummary(summary, new NetworkStats(0L, 0));
-    }
-
-    private void expectNetworkStatsSummary(NetworkStats summary, NetworkStats tetherStats)
-            throws Exception {
-        expectNetworkStatsTethering(STATS_PER_IFACE, tetherStats);
         expectNetworkStatsSummaryDev(summary.clone());
         expectNetworkStatsSummaryXt(summary.clone());
     }
@@ -1380,11 +1389,6 @@
         when(mStatsFactory.readNetworkStatsSummaryXt()).thenReturn(summary);
     }
 
-    private void expectNetworkStatsTethering(int how, NetworkStats stats)
-            throws Exception {
-        when(mNetManager.getNetworkStatsTethering(how)).thenReturn(stats);
-    }
-
     private void expectNetworkStatsUidDetail(NetworkStats detail) throws Exception {
         expectNetworkStatsUidDetail(detail, new NetworkStats(0L, 0));
     }
diff --git a/tests/net/java/com/android/server/net/NetworkStatsSubscriptionsMonitorTest.java b/tests/net/java/com/android/server/net/NetworkStatsSubscriptionsMonitorTest.java
index 8f09377..6d2c7dc 100644
--- a/tests/net/java/com/android/server/net/NetworkStatsSubscriptionsMonitorTest.java
+++ b/tests/net/java/com/android/server/net/NetworkStatsSubscriptionsMonitorTest.java
@@ -21,6 +21,7 @@
 import static org.junit.Assert.fail;
 import static org.mockito.Mockito.any;
 import static org.mockito.Mockito.anyInt;
+import static org.mockito.Mockito.clearInvocations;
 import static org.mockito.Mockito.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
@@ -150,7 +151,7 @@
     }
 
     private void assertRatTypeChangedForSub(String subscriberId, int ratType) {
-        assertEquals(mMonitor.getRatTypeForSubscriberId(subscriberId), ratType);
+        assertEquals(ratType, mMonitor.getRatTypeForSubscriberId(subscriberId));
         final ArgumentCaptor<Integer> typeCaptor = ArgumentCaptor.forClass(Integer.class);
         // Verify callback with the subscriberId and the RAT type should be as expected.
         // It will fail if get a callback with an unexpected RAT type.
@@ -302,26 +303,84 @@
         reset(mDelegate);
 
         // Set IMSI to null again to simulate somehow IMSI is not available, such as
-        // modem crash. Verify service should not unregister listener.
+        // modem crash. Verify service should unregister listener.
         updateSubscriberIdForTestSub(TEST_SUBID1, null);
-        verify(mTelephonyManager, never()).listen(any(), anyInt());
-        assertRatTypeNotChangedForSub(TEST_IMSI1, TelephonyManager.NETWORK_TYPE_UMTS);
+        verify(mTelephonyManager, times(1)).listen(eq(ratTypeListenerCaptor.getValue()),
+                eq(PhoneStateListener.LISTEN_NONE));
+        assertRatTypeChangedForSub(TEST_IMSI1, TelephonyManager.NETWORK_TYPE_UNKNOWN);
         reset(mDelegate);
+        clearInvocations(mTelephonyManager);
 
-        // Set RAT type of sim1 to LTE. Verify RAT type of sim1 is still changed even if the IMSI
-        // is not available. The monitor keeps the listener even if the IMSI disappears because
-        // the IMSI can never change for any given subId, therefore even if the IMSI is updated
-        // to null, the monitor should continue accepting updates of the RAT type. However,
-        // telephony is never actually supposed to do this, if the IMSI disappears there should
-        // not be updates, but it's still the right thing to do theoretically.
-        setRatTypeForSub(ratTypeListenerCaptor.getAllValues(), TEST_SUBID1,
+        // Simulate somehow IMSI is back. Verify service will register with
+        // another listener and fire callback accordingly.
+        final ArgumentCaptor<RatTypeListener> ratTypeListenerCaptor2 =
+                ArgumentCaptor.forClass(RatTypeListener.class);
+        updateSubscriberIdForTestSub(TEST_SUBID1, TEST_IMSI1);
+        verify(mTelephonyManager, times(1)).listen(ratTypeListenerCaptor2.capture(),
+                eq(PhoneStateListener.LISTEN_SERVICE_STATE));
+        assertRatTypeNotChangedForSub(TEST_IMSI1, TelephonyManager.NETWORK_TYPE_UNKNOWN);
+        reset(mDelegate);
+        clearInvocations(mTelephonyManager);
+
+        // Set RAT type of sim1 to LTE. Verify RAT type of sim1 still works.
+        setRatTypeForSub(ratTypeListenerCaptor2.getAllValues(), TEST_SUBID1,
                 TelephonyManager.NETWORK_TYPE_LTE);
         assertRatTypeChangedForSub(TEST_IMSI1, TelephonyManager.NETWORK_TYPE_LTE);
         reset(mDelegate);
 
         mMonitor.stop();
+        verify(mTelephonyManager, times(1)).listen(eq(ratTypeListenerCaptor2.getValue()),
+                eq(PhoneStateListener.LISTEN_NONE));
+        assertRatTypeChangedForSub(TEST_IMSI1, TelephonyManager.NETWORK_TYPE_UNKNOWN);
+    }
+
+    /**
+     * Verify that when IMSI suddenly changed for a given subId, the service will register a new
+     * listener and unregister the old one, and report changes on updated IMSI. This is for modem
+     * feature that may be enabled for certain carrier, which changes to use a different IMSI while
+     * roaming on certain networks for multi-IMSI SIM cards, but the subId stays the same.
+     */
+    @Test
+    public void testSubscriberIdChanged() {
+        mMonitor.start();
+        // Insert sim1, verify RAT type is NETWORK_TYPE_UNKNOWN, and never get any callback
+        // before changing RAT type.
+        addTestSub(TEST_SUBID1, TEST_IMSI1);
+        final ArgumentCaptor<RatTypeListener> ratTypeListenerCaptor =
+                ArgumentCaptor.forClass(RatTypeListener.class);
+        verify(mTelephonyManager, times(1)).listen(ratTypeListenerCaptor.capture(),
+                eq(PhoneStateListener.LISTEN_SERVICE_STATE));
+        assertRatTypeNotChangedForSub(TEST_IMSI1, TelephonyManager.NETWORK_TYPE_UNKNOWN);
+
+        // Set RAT type of sim1 to UMTS.
+        // Verify RAT type of sim1 changes accordingly.
+        setRatTypeForSub(ratTypeListenerCaptor.getAllValues(), TEST_SUBID1,
+                TelephonyManager.NETWORK_TYPE_UMTS);
+        assertRatTypeChangedForSub(TEST_IMSI1, TelephonyManager.NETWORK_TYPE_UMTS);
+        reset(mDelegate);
+        clearInvocations(mTelephonyManager);
+
+        // Simulate IMSI of sim1 changed to IMSI2. Verify the service will register with
+        // another listener and remove the old one. The RAT type of new IMSI stays at
+        // NETWORK_TYPE_UNKNOWN until received initial callback from telephony.
+        final ArgumentCaptor<RatTypeListener> ratTypeListenerCaptor2 =
+                ArgumentCaptor.forClass(RatTypeListener.class);
+        updateSubscriberIdForTestSub(TEST_SUBID1, TEST_IMSI2);
+        verify(mTelephonyManager, times(1)).listen(ratTypeListenerCaptor2.capture(),
+                eq(PhoneStateListener.LISTEN_SERVICE_STATE));
         verify(mTelephonyManager, times(1)).listen(eq(ratTypeListenerCaptor.getValue()),
                 eq(PhoneStateListener.LISTEN_NONE));
         assertRatTypeChangedForSub(TEST_IMSI1, TelephonyManager.NETWORK_TYPE_UNKNOWN);
+        assertRatTypeNotChangedForSub(TEST_IMSI2, TelephonyManager.NETWORK_TYPE_UNKNOWN);
+        reset(mDelegate);
+
+        // Set RAT type of sim1 to UMTS for new listener to simulate the initial callback received
+        // from telephony after registration. Verify RAT type of sim1 changes with IMSI2
+        // accordingly.
+        setRatTypeForSub(ratTypeListenerCaptor2.getAllValues(), TEST_SUBID1,
+                TelephonyManager.NETWORK_TYPE_UMTS);
+        assertRatTypeNotChangedForSub(TEST_IMSI1, TelephonyManager.NETWORK_TYPE_UNKNOWN);
+        assertRatTypeChangedForSub(TEST_IMSI2, TelephonyManager.NETWORK_TYPE_UMTS);
+        reset(mDelegate);
     }
 }
diff --git a/tests/net/java/com/android/server/net/ipmemorystore/NetworkAttributesTest.java b/tests/net/java/com/android/server/net/ipmemorystore/NetworkAttributesTest.java
index fb84611..ebbc0ef 100644
--- a/tests/net/java/com/android/server/net/ipmemorystore/NetworkAttributesTest.java
+++ b/tests/net/java/com/android/server/net/ipmemorystore/NetworkAttributesTest.java
@@ -19,6 +19,7 @@
 import static org.junit.Assert.assertEquals;
 
 import android.net.ipmemorystore.NetworkAttributes;
+import android.net.networkstack.aidl.quirks.IPv6ProvisioningLossQuirk;
 
 import androidx.test.filters.SmallTest;
 import androidx.test.runner.AndroidJUnit4;
@@ -52,6 +53,8 @@
         }
         assertEquals(sum, NetworkAttributes.TOTAL_WEIGHT, EPSILON);
 
+        final IPv6ProvisioningLossQuirk ipv6ProvisioningLossQuirk =
+                new IPv6ProvisioningLossQuirk(3, System.currentTimeMillis() + 7_200_000);
         // Use directly the constructor with all attributes, and make sure that when compared
         // to itself the score is a clean 1.0f.
         final NetworkAttributes na =
@@ -61,7 +64,7 @@
                         "some hint",
                         Arrays.asList(Inet4Address.getByAddress(new byte[] {5, 6, 7, 8}),
                                 Inet4Address.getByAddress(new byte[] {9, 0, 1, 2})),
-                        98);
+                        98, ipv6ProvisioningLossQuirk);
         assertEquals(1.0f, na.getNetworkGroupSamenessConfidence(na), EPSILON);
     }
 }
diff --git a/tests/utils/hostutils/src/com/android/internal/util/test/SystemPreparer.java b/tests/utils/hostutils/src/com/android/internal/util/test/SystemPreparer.java
index f30c35a..1139fd6 100644
--- a/tests/utils/hostutils/src/com/android/internal/util/test/SystemPreparer.java
+++ b/tests/utils/hostutils/src/com/android/internal/util/test/SystemPreparer.java
@@ -16,6 +16,7 @@
 
 package com.android.internal.util.test;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 import com.android.tradefed.device.DeviceNotAvailableException;
@@ -114,6 +115,24 @@
         return this;
     }
 
+    /** Stages multiple APEXs within the host test jar onto the device. */
+    public SystemPreparer stageMultiplePackages(String[] resourcePaths, String[] packageNames)
+            throws DeviceNotAvailableException, IOException {
+        assertEquals(resourcePaths.length, packageNames.length);
+        final ITestDevice device = mDeviceProvider.getDevice();
+        final String[] adbCommandLine = new String[resourcePaths.length + 2];
+        adbCommandLine[0] = "install-multi-package";
+        adbCommandLine[1] = "--staged";
+        for (int i = 0; i < resourcePaths.length; i++) {
+            final File tmpFile = copyResourceToTemp(resourcePaths[i]);
+            adbCommandLine[i + 2] = tmpFile.getAbsolutePath();
+            mInstalledPackages.add(packageNames[i]);
+        }
+        final String output = device.executeAdbCommand(adbCommandLine);
+        assertTrue(output.contains("Success. Reboot device to apply staged session"));
+        return this;
+    }
+
     /** Sets the enable state of an overlay package. */
     public SystemPreparer setOverlayEnabled(String packageName, boolean enabled)
             throws DeviceNotAvailableException {
@@ -182,11 +201,29 @@
         return this;
     }
 
+    private static @Nullable String getFileExtension(@Nullable String path) {
+        if (path == null) {
+            return null;
+        }
+        final int lastDot = path.lastIndexOf('.');
+        if (lastDot >= 0) {
+            return path.substring(lastDot + 1);
+        } else {
+            return null;
+        }
+    }
+
     /** Copies a file within the host test jar to a temporary file on the host machine. */
     private File copyResourceToTemp(String resourcePath) throws IOException {
-        final File tempFile = mHostTempFolder.newFile();
+        final String ext = getFileExtension(resourcePath);
+        final File tempFile;
+        if (ext != null) {
+            tempFile = File.createTempFile("junit", "." + ext, mHostTempFolder.getRoot());
+        } else {
+            tempFile = mHostTempFolder.newFile();
+        }
         final ClassLoader classLoader = getClass().getClassLoader();
-        try (InputStream assetIs = classLoader.getResource(resourcePath).openStream();
+        try (InputStream assetIs = classLoader.getResourceAsStream(resourcePath);
              FileOutputStream assetOs = new FileOutputStream(tempFile)) {
             if (assetIs == null) {
                 throw new IllegalStateException("Failed to find resource " + resourcePath);
diff --git a/tests/utils/hostutils/src/com/android/tests/rollback/host/AbandonSessionsRule.java b/tests/utils/hostutils/src/com/android/tests/rollback/host/AbandonSessionsRule.java
new file mode 100644
index 0000000..b086213
--- /dev/null
+++ b/tests/utils/hostutils/src/com/android/tests/rollback/host/AbandonSessionsRule.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.tests.rollback.host;
+
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
+
+import org.junit.rules.ExternalResource;
+
+public class AbandonSessionsRule extends ExternalResource {
+    private final BaseHostJUnit4Test mHost;
+
+    public AbandonSessionsRule(BaseHostJUnit4Test host) {
+        mHost = host;
+    }
+
+    @Override
+    protected void before() throws Throwable {
+        abandonSessions(mHost.getDevice());
+    }
+
+    @Override
+    protected void after() {
+        try {
+            abandonSessions(mHost.getDevice());
+        } catch (Exception ignore) {
+        }
+    }
+
+    /**
+     * Abandons all sessions to prevent interference in our tests.
+     */
+    private static void abandonSessions(ITestDevice device) throws Exception {
+        // No point in abandoning applied or failed sessions. We care about ready sessions only.
+        String cmdListReadySessions =
+                "pm list staged-sessions --only-sessionid --only-parent --only-ready";
+        String output = device.executeShellCommand(cmdListReadySessions);
+        if (output.trim().isEmpty()) {
+            // No sessions to abandon
+            return;
+        }
+        // Ensure we have sufficient privilege to abandon sessions from other apps
+        device.enableAdbRoot();
+        device.executeShellCommand("for i in $(" + cmdListReadySessions
+                + "); do pm install-abandon $i; done");
+        device.disableAdbRoot();
+    }
+}
diff --git a/tests/vcn/Android.bp b/tests/vcn/Android.bp
new file mode 100644
index 0000000..f967bf0
--- /dev/null
+++ b/tests/vcn/Android.bp
@@ -0,0 +1,27 @@
+//########################################################################
+// Build FrameworksVcnTests package
+//########################################################################
+
+android_test {
+    name: "FrameworksVcnTests",
+    srcs: [
+        "java/**/*.java",
+        "java/**/*.kt",
+    ],
+    platform_apis: true,
+    test_suites: ["device-tests"],
+    certificate: "platform",
+    static_libs: [
+        "androidx.test.rules",
+        "frameworks-base-testutils",
+        "framework-protos",
+        "mockito-target-minus-junit4",
+        "platform-test-annotations",
+        "services.core",
+    ],
+    libs: [
+        "android.test.runner",
+        "android.test.base",
+        "android.test.mock",
+    ],
+}
diff --git a/tests/vcn/AndroidManifest.xml b/tests/vcn/AndroidManifest.xml
new file mode 100644
index 0000000..2ad9aac
--- /dev/null
+++ b/tests/vcn/AndroidManifest.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2020 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.android.frameworks.tests.vcn">
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <instrumentation
+        android:name="androidx.test.runner.AndroidJUnitRunner"
+        android:targetPackage="com.android.frameworks.tests.vcn"
+        android:label="Frameworks VCN Tests" />
+</manifest>
diff --git a/tests/vcn/AndroidTest.xml b/tests/vcn/AndroidTest.xml
new file mode 100644
index 0000000..dc521fd
--- /dev/null
+++ b/tests/vcn/AndroidTest.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2020 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Runs VCN Tests.">
+    <target_preparer class="com.android.tradefed.targetprep.TestAppInstallSetup">
+        <option name="test-file-name" value="FrameworksVcnTests.apk" />
+    </target_preparer>
+
+    <option name="test-suite-tag" value="apct" />
+    <option name="test-tag" value="FrameworksVcnTests" />
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="com.android.frameworks.tests.vcn" />
+        <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
+        <option name="hidden-api-checks" value="false"/>
+    </test>
+</configuration>
diff --git a/tests/vcn/OWNERS b/tests/vcn/OWNERS
new file mode 100644
index 0000000..33b9f0f
--- /dev/null
+++ b/tests/vcn/OWNERS
@@ -0,0 +1,7 @@
+set noparent
+
+benedictwong@google.com
+ckesting@google.com
+evitayan@google.com
+nharold@google.com
+jchalard@google.com
\ No newline at end of file
diff --git a/tests/vcn/TEST_MAPPING b/tests/vcn/TEST_MAPPING
new file mode 100644
index 0000000..54fa411
--- /dev/null
+++ b/tests/vcn/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "presubmit": [
+    {
+      "name": "FrameworksVcnTests"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/tests/vcn/java/com/android/server/VcnManagementServiceTest.java b/tests/vcn/java/com/android/server/VcnManagementServiceTest.java
new file mode 100644
index 0000000..c91fdbf
--- /dev/null
+++ b/tests/vcn/java/com/android/server/VcnManagementServiceTest.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server;
+
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.os.test.TestLooper;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/** Tests for {@link VcnManagementService}. */
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public class VcnManagementServiceTest {
+    private final Context mMockContext = mock(Context.class);
+    private final VcnManagementService.Dependencies mMockDeps =
+            mock(VcnManagementService.Dependencies.class);
+    private final TestLooper mTestLooper = new TestLooper();
+    private final ConnectivityManager mConnMgr = mock(ConnectivityManager.class);
+    private final VcnManagementService mVcnMgmtSvc;
+
+    public VcnManagementServiceTest() {
+        doReturn(Context.CONNECTIVITY_SERVICE)
+                .when(mMockContext)
+                .getSystemServiceName(ConnectivityManager.class);
+        doReturn(mConnMgr).when(mMockContext).getSystemService(Context.CONNECTIVITY_SERVICE);
+
+        doReturn(mTestLooper.getLooper()).when(mMockDeps).getLooper();
+        mVcnMgmtSvc = new VcnManagementService(mMockContext, mMockDeps);
+    }
+
+    @Test
+    public void testSystemReady() throws Exception {
+        mVcnMgmtSvc.systemReady();
+
+        verify(mConnMgr)
+                .registerNetworkProvider(any(VcnManagementService.VcnNetworkProvider.class));
+    }
+}
diff --git a/tests/vcn/java/com/android/server/vcn/util/PersistableBundleUtilsTest.java b/tests/vcn/java/com/android/server/vcn/util/PersistableBundleUtilsTest.java
new file mode 100644
index 0000000..a44a734
--- /dev/null
+++ b/tests/vcn/java/com/android/server/vcn/util/PersistableBundleUtilsTest.java
@@ -0,0 +1,214 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.vcn.util;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+
+import android.os.PersistableBundle;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Objects;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public class PersistableBundleUtilsTest {
+    private static final String TEST_KEY = "testKey";
+    private static final String TEST_STRING_PREFIX = "testString";
+    private static final int[] TEST_INT_ARRAY = new int[] {0, 1, 2, 3, 4};
+
+    private static final int NUM_COLLECTION_ENTRIES = 10;
+
+    private static class TestKey {
+        private static final String TEST_INTEGER_KEY =
+                "mTestInteger"; // Purposely colliding with keys of test class to ensure namespacing
+        private final int mTestInteger;
+
+        TestKey(int testInteger) {
+            mTestInteger = testInteger;
+        }
+
+        TestKey(PersistableBundle in) {
+            mTestInteger = in.getInt(TEST_INTEGER_KEY);
+        }
+
+        public PersistableBundle toPersistableBundle() {
+            final PersistableBundle result = new PersistableBundle();
+
+            result.putInt(TEST_INTEGER_KEY, mTestInteger);
+
+            return result;
+        }
+
+        @Override
+        public int hashCode() {
+            return Objects.hash(mTestInteger);
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (!(o instanceof TestKey)) {
+                return false;
+            }
+
+            final TestKey other = (TestKey) o;
+            return mTestInteger == other.mTestInteger;
+        }
+    }
+
+    private static class TestClass {
+        private static final String TEST_INTEGER_KEY = "mTestInteger";
+        private final int mTestInteger;
+
+        private static final String TEST_INT_ARRAY_KEY = "mTestIntArray";
+        private final int[] mTestIntArray;
+
+        private static final String TEST_STRING_KEY = "mTestString";
+        private final String mTestString;
+
+        private static final String TEST_PERSISTABLE_BUNDLE_KEY = "mTestPersistableBundle";
+        private final PersistableBundle mTestPersistableBundle;
+
+        TestClass(
+                int testInteger,
+                int[] testIntArray,
+                String testString,
+                PersistableBundle testPersistableBundle) {
+            mTestInteger = testInteger;
+            mTestIntArray = testIntArray;
+            mTestString = testString;
+            mTestPersistableBundle = testPersistableBundle;
+        }
+
+        TestClass(PersistableBundle in) {
+            mTestInteger = in.getInt(TEST_INTEGER_KEY);
+            mTestIntArray = in.getIntArray(TEST_INT_ARRAY_KEY);
+            mTestString = in.getString(TEST_STRING_KEY);
+            mTestPersistableBundle = in.getPersistableBundle(TEST_PERSISTABLE_BUNDLE_KEY);
+        }
+
+        public PersistableBundle toPersistableBundle() {
+            final PersistableBundle result = new PersistableBundle();
+
+            result.putInt(TEST_INTEGER_KEY, mTestInteger);
+            result.putIntArray(TEST_INT_ARRAY_KEY, mTestIntArray);
+            result.putString(TEST_STRING_KEY, mTestString);
+            result.putPersistableBundle(TEST_PERSISTABLE_BUNDLE_KEY, mTestPersistableBundle);
+
+            return result;
+        }
+
+        @Override
+        public int hashCode() {
+            return Objects.hash(
+                    mTestInteger,
+                    Arrays.hashCode(mTestIntArray),
+                    mTestString,
+                    mTestPersistableBundle);
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (!(o instanceof TestClass)) {
+                return false;
+            }
+
+            final TestClass other = (TestClass) o;
+
+            // TODO: Add a proper equals() to PersistableBundle. But in the meantime, force
+            // TODO: unparcelling in order to allow test comparison.
+            if (mTestPersistableBundle.size() != other.mTestPersistableBundle.size()) {
+                return false;
+            }
+
+            return mTestInteger == other.mTestInteger
+                    && Arrays.equals(mTestIntArray, other.mTestIntArray)
+                    && mTestString.equals(other.mTestString)
+                    && mTestPersistableBundle.kindofEquals(other.mTestPersistableBundle);
+        }
+    }
+
+    @Test
+    public void testListConversionLossless() throws Exception {
+        final List<TestClass> sourceList = new ArrayList<>();
+        for (int i = 0; i < NUM_COLLECTION_ENTRIES; i++) {
+            final PersistableBundle innerBundle = new PersistableBundle();
+            innerBundle.putInt(TEST_KEY, i);
+
+            sourceList.add(new TestClass(i, TEST_INT_ARRAY, TEST_STRING_PREFIX + i, innerBundle));
+        }
+
+        final PersistableBundle bundled =
+                PersistableBundleUtils.fromList(sourceList, TestClass::toPersistableBundle);
+        final List<TestClass> resultList = PersistableBundleUtils.toList(bundled, TestClass::new);
+
+        assertEquals(sourceList, resultList);
+    }
+
+    @Test
+    public void testMapConversionLossless() throws Exception {
+        final LinkedHashMap<TestKey, TestClass> sourceMap = new LinkedHashMap<>();
+        for (int i = 0; i < NUM_COLLECTION_ENTRIES; i++) {
+            final TestKey key = new TestKey(i * i);
+
+            final PersistableBundle innerBundle = new PersistableBundle();
+            innerBundle.putInt(TEST_KEY, i);
+            final TestClass value =
+                    new TestClass(i, TEST_INT_ARRAY, TEST_STRING_PREFIX + i, innerBundle);
+
+            sourceMap.put(key, value);
+        }
+
+        final PersistableBundle bundled =
+                PersistableBundleUtils.fromMap(
+                        sourceMap, TestKey::toPersistableBundle, TestClass::toPersistableBundle);
+        final LinkedHashMap<TestKey, TestClass> resultList =
+                PersistableBundleUtils.toMap(bundled, TestKey::new, TestClass::new);
+
+        assertEquals(sourceMap, resultList);
+    }
+
+    @Test
+    public void testByteArrayConversionLossless() {
+        final byte[] byteArray = "testByteArrayConversionLossless".getBytes();
+
+        PersistableBundle bundle = PersistableBundleUtils.fromByteArray(byteArray);
+        byte[] result = PersistableBundleUtils.toByteArray(bundle);
+
+        assertArrayEquals(byteArray, result);
+    }
+
+    @Test
+    public void testIntegerConversionLossless() throws Exception {
+        final int testInt = 1;
+        final PersistableBundle integerBundle =
+                PersistableBundleUtils.INTEGER_SERIALIZER.toPersistableBundle(testInt);
+        final int result =
+                PersistableBundleUtils.INTEGER_DESERIALIZER.fromPersistableBundle(integerBundle);
+
+        assertEquals(testInt, result);
+    }
+}
diff --git a/tools/aapt2/DominatorTree_test.cpp b/tools/aapt2/DominatorTree_test.cpp
index 3e49034..52949da 100644
--- a/tools/aapt2/DominatorTree_test.cpp
+++ b/tools/aapt2/DominatorTree_test.cpp
@@ -198,5 +198,33 @@
   EXPECT_EQ(expected, printer.ToString(&tree));
 }
 
+TEST(DominatorTreeTest, MccMncIsPeertoLocale) {
+  const ConfigDescription default_config = {};
+  const ConfigDescription de_config = test::ParseConfigOrDie("de");
+  const ConfigDescription fr_config = test::ParseConfigOrDie("fr");
+  const ConfigDescription mcc_config = test::ParseConfigOrDie("mcc262");
+  const ConfigDescription mcc_fr_config = test::ParseConfigOrDie("mcc262-fr");
+  const ConfigDescription mnc_config = test::ParseConfigOrDie("mnc2");
+  const ConfigDescription mnc_fr_config = test::ParseConfigOrDie("mnc2-fr");
+  std::vector<std::unique_ptr<ResourceConfigValue>> configs;
+  configs.push_back(util::make_unique<ResourceConfigValue>(default_config, ""));
+  configs.push_back(util::make_unique<ResourceConfigValue>(de_config, ""));
+  configs.push_back(util::make_unique<ResourceConfigValue>(fr_config, ""));
+  configs.push_back(util::make_unique<ResourceConfigValue>(mcc_config, ""));
+  configs.push_back(util::make_unique<ResourceConfigValue>(mcc_fr_config, ""));
+  configs.push_back(util::make_unique<ResourceConfigValue>(mnc_config, ""));
+  configs.push_back(util::make_unique<ResourceConfigValue>(mnc_fr_config, ""));
+  DominatorTree tree(configs);
+  PrettyPrinter printer;
+  std::string expected =
+      "<default>\n"
+      "de\n"
+      "fr\n"
+      "mcc262\n"
+      "mcc262-fr\n"
+      "mnc2\n"
+      "mnc2-fr\n";
+  EXPECT_EQ(expected, printer.ToString(&tree));
+}
 
 }  // namespace aapt
diff --git a/tools/aapt2/Resources.proto b/tools/aapt2/Resources.proto
index ab9ce66..b1e1a77 100644
--- a/tools/aapt2/Resources.proto
+++ b/tools/aapt2/Resources.proto
@@ -168,6 +168,7 @@
     ODM = 6;
     OEM = 7;
     ACTOR = 8;
+    CONFIG_SIGNATURE = 9;
   }
 
   // The location of the <item> declaration in source.
diff --git a/tools/aapt2/format/binary/TableFlattener_test.cpp b/tools/aapt2/format/binary/TableFlattener_test.cpp
index 59627ce..6932baf 100644
--- a/tools/aapt2/format/binary/TableFlattener_test.cpp
+++ b/tools/aapt2/format/binary/TableFlattener_test.cpp
@@ -776,6 +776,7 @@
   OverlayableItem overlayable_item_three(group_one);
   overlayable_item_three.policies |= PolicyFlags::SIGNATURE;
   overlayable_item_three.policies |= PolicyFlags::ACTOR_SIGNATURE;
+  overlayable_item_three.policies |= PolicyFlags::CONFIG_SIGNATURE;
 
   std::unique_ptr<ResourceTable> table =
       test::ResourceTableBuilder()
@@ -830,7 +831,8 @@
   EXPECT_EQ(result_overlayable.overlayable->name, "OtherName");
   EXPECT_EQ(result_overlayable.overlayable->actor, "overlay://customization");
   EXPECT_EQ(result_overlayable.policies, PolicyFlags::SIGNATURE
-                                           | PolicyFlags::ACTOR_SIGNATURE);
+                                           | PolicyFlags::ACTOR_SIGNATURE
+                                           | PolicyFlags::CONFIG_SIGNATURE);
 }
 
 TEST_F(TableFlattenerTest, FlattenOverlayableNoPolicyFails) {
diff --git a/tools/aapt2/format/proto/ProtoDeserialize.cpp b/tools/aapt2/format/proto/ProtoDeserialize.cpp
index 2fd01d7..7eb8ebd 100644
--- a/tools/aapt2/format/proto/ProtoDeserialize.cpp
+++ b/tools/aapt2/format/proto/ProtoDeserialize.cpp
@@ -404,6 +404,9 @@
       case pb::OverlayableItem::ACTOR:
         out_overlayable->policies |= PolicyFlags::ACTOR_SIGNATURE;
         break;
+      case pb::OverlayableItem::CONFIG_SIGNATURE:
+        out_overlayable->policies |= PolicyFlags::CONFIG_SIGNATURE;
+        break;
       default:
         *out_error = "unknown overlayable policy";
         return false;
diff --git a/tools/aapt2/format/proto/ProtoSerialize.cpp b/tools/aapt2/format/proto/ProtoSerialize.cpp
index ba6df22..831229f 100644
--- a/tools/aapt2/format/proto/ProtoSerialize.cpp
+++ b/tools/aapt2/format/proto/ProtoSerialize.cpp
@@ -325,6 +325,9 @@
   if (overlayable_item.policies & PolicyFlags::ACTOR_SIGNATURE) {
     pb_overlayable_item->add_policy(pb::OverlayableItem::ACTOR);
   }
+  if (overlayable_item.policies & PolicyFlags::CONFIG_SIGNATURE) {
+    pb_overlayable_item->add_policy(pb::OverlayableItem::CONFIG_SIGNATURE);
+  }
 
   if (source_pool != nullptr) {
     SerializeSourceToPb(overlayable_item.source, source_pool,
diff --git a/tools/aapt2/optimize/ResourceDeduper_test.cpp b/tools/aapt2/optimize/ResourceDeduper_test.cpp
index 048e318..888de40 100644
--- a/tools/aapt2/optimize/ResourceDeduper_test.cpp
+++ b/tools/aapt2/optimize/ResourceDeduper_test.cpp
@@ -52,9 +52,11 @@
           .Build();
 
   ASSERT_TRUE(ResourceDeduper().Consume(context.get(), table.get()));
+  EXPECT_THAT(table, HasValue("android:string/dedupe", default_config));
   EXPECT_THAT(table, Not(HasValue("android:string/dedupe", ldrtl_config)));
   EXPECT_THAT(table, Not(HasValue("android:string/dedupe", land_config)));
 
+  EXPECT_THAT(table, HasValue("android:string/dedupe2", default_config));
   EXPECT_THAT(table, HasValue("android:string/dedupe2", ldrtl_v21_config));
   EXPECT_THAT(table, Not(HasValue("android:string/dedupe2", ldrtl_config)));
 
@@ -151,4 +153,24 @@
   EXPECT_THAT(table, HasValue("android:string/keep", fr_rCA_config));
 }
 
+TEST(ResourceDeduperTest, MccMncValuesAreKept) {
+  std::unique_ptr<IAaptContext> context = test::ContextBuilder().Build();
+  const ConfigDescription default_config = {};
+  const ConfigDescription mcc_config = test::ParseConfigOrDie("mcc262");
+  const ConfigDescription mnc_config = test::ParseConfigOrDie("mnc2");
+
+  std::unique_ptr<ResourceTable> table =
+      test::ResourceTableBuilder()
+          .AddString("android:string/keep", ResourceId{}, default_config, "keep")
+          .AddString("android:string/keep", ResourceId{}, mcc_config, "keep")
+          .AddString("android:string/keep", ResourceId{}, mnc_config, "keep")
+          .Build();
+
+  ASSERT_TRUE(ResourceDeduper().Consume(context.get(), table.get()));
+  EXPECT_THAT(table, HasValue("android:string/keep", default_config));
+  EXPECT_THAT(table, HasValue("android:string/keep", mcc_config));
+  EXPECT_THAT(table, HasValue("android:string/keep", mnc_config));
+}
+
+
 }  // namespace aapt
diff --git a/tools/hiddenapi/generate_hiddenapi_lists.py b/tools/hiddenapi/generate_hiddenapi_lists.py
index da64402..28ff606 100755
--- a/tools/hiddenapi/generate_hiddenapi_lists.py
+++ b/tools/hiddenapi/generate_hiddenapi_lists.py
@@ -15,7 +15,7 @@
 # limitations under the License.
 """Generate API lists for non-SDK API enforcement."""
 import argparse
-from collections import defaultdict
+from collections import defaultdict, namedtuple
 import functools
 import os
 import re
@@ -54,16 +54,21 @@
 FLAGS_API_LIST_SET = set(FLAGS_API_LIST)
 ALL_FLAGS_SET = set(ALL_FLAGS)
 
-# Suffix used in command line args to express that only known and
-# otherwise unassigned entries should be assign the given flag.
+# Option specified after one of FLAGS_API_LIST to indicate that
+# only known and otherwise unassigned entries should be assign the
+# given flag.
 # For example, the max-target-P list is checked in as it was in P,
 # but signatures have changes since then. The flag instructs this
 # script to skip any entries which do not exist any more.
-FLAG_IGNORE_CONFLICTS_SUFFIX = "-ignore-conflicts"
+FLAG_IGNORE_CONFLICTS = "ignore-conflicts"
 
-# Suffix used in command line args to express that all apis within a given set
-# of packages should be assign the given flag.
-FLAG_PACKAGES_SUFFIX = "-packages"
+# Option specified after one of FLAGS_API_LIST to express that all
+# apis within a given set of packages should be assign the given flag.
+FLAG_PACKAGES = "packages"
+
+# Option specified after one of FLAGS_API_LIST to indicate an extra
+# tag that should be added to the matching APIs.
+FLAG_TAG = "tag"
 
 # Regex patterns of fields/methods used in serialization. These are
 # considered public API despite being hidden.
@@ -86,6 +91,17 @@
 IS_SERIALIZATION = lambda api, flags: SERIALIZATION_REGEX.match(api)
 
 
+class StoreOrderedOptions(argparse.Action):
+    """An argparse action that stores a number of option arguments in the order that
+    they were specified.
+    """
+    def __call__(self, parser, args, values, option_string = None):
+        items = getattr(args, self.dest, None)
+        if items is None:
+            items = []
+        items.append([option_string.lstrip('-'), values])
+        setattr(args, self.dest, items)
+
 def get_args():
     """Parses command line arguments.
 
@@ -98,17 +114,19 @@
         help='CSV files to be merged into output')
 
     for flag in ALL_FLAGS:
-        ignore_conflicts_flag = flag + FLAG_IGNORE_CONFLICTS_SUFFIX
-        packages_flag = flag + FLAG_PACKAGES_SUFFIX
-        parser.add_argument('--' + flag, dest=flag, nargs='*', default=[], metavar='TXT_FILE',
-            help='lists of entries with flag "' + flag + '"')
-        parser.add_argument('--' + ignore_conflicts_flag, dest=ignore_conflicts_flag, nargs='*',
-            default=[], metavar='TXT_FILE',
-            help='lists of entries with flag "' + flag +
-                 '". skip entry if missing or flag conflict.')
-        parser.add_argument('--' + packages_flag, dest=packages_flag, nargs='*',
-            default=[], metavar='TXT_FILE',
-            help='lists of packages to be added to ' + flag + ' list')
+        parser.add_argument('--' + flag, dest='ordered_flags', metavar='TXT_FILE',
+            action=StoreOrderedOptions, help='lists of entries with flag "' + flag + '"')
+    parser.add_argument('--' + FLAG_IGNORE_CONFLICTS, dest='ordered_flags', nargs=0,
+        action=StoreOrderedOptions, help='Indicates that only known and otherwise unassigned '
+        'entries should be assign the given flag. Must follow a list of entries and applies '
+        'to the preceding such list.')
+    parser.add_argument('--' + FLAG_PACKAGES, dest='ordered_flags', nargs=0,
+        action=StoreOrderedOptions, help='Indicates that the previous list of entries '
+        'is a list of packages. All members in those packages will be given the flag. '
+        'Must follow a list of entries and applies to the preceding such list.')
+    parser.add_argument('--' + FLAG_TAG, dest='ordered_flags', nargs=1,
+        action=StoreOrderedOptions, help='Adds an extra tag to the previous list of entries. '
+        'Must follow a list of entries and applies to the preceding such list.')
 
     return parser.parse_args()
 
@@ -170,11 +188,10 @@
     def _check_entries_set(self, keys_subset, source):
         assert isinstance(keys_subset, set)
         assert keys_subset.issubset(self._dict_keyset), (
-            "Error processing: {}\n"
-            "The following entries were unexpected:\n"
+            "Error: {} specifies signatures not present in code:\n"
             "{}"
             "Please visit go/hiddenapi for more information.").format(
-                source, "".join(map(lambda x: "  " + str(x), keys_subset - self._dict_keyset)))
+                source, "".join(map(lambda x: "  " + str(x) + "\n", keys_subset - self._dict_keyset)))
 
     def _check_flags_set(self, flags_subset, source):
         assert isinstance(flags_subset, set)
@@ -258,7 +275,7 @@
                 flags.append(FLAG_SDK)
             self._dict[csv[0]].update(flags)
 
-    def assign_flag(self, flag, apis, source="<unknown>"):
+    def assign_flag(self, flag, apis, source="<unknown>", tag = None):
         """Assigns a flag to given subset of entries.
 
         Args:
@@ -278,11 +295,44 @@
         # Iterate over the API subset, find each entry in dict and assign the flag to it.
         for api in apis:
             self._dict[api].add(flag)
+            if tag:
+                self._dict[api].add(tag)
+
+
+FlagFile = namedtuple('FlagFile', ('flag', 'file', 'ignore_conflicts', 'packages', 'tag'))
+
+def parse_ordered_flags(ordered_flags):
+    r = []
+    currentflag, file, ignore_conflicts, packages, tag = None, None, False, False, None
+    for flag_value in ordered_flags:
+        flag, value = flag_value[0], flag_value[1]
+        if flag in ALL_FLAGS_SET:
+            if currentflag:
+                r.append(FlagFile(currentflag, file, ignore_conflicts, packages, tag))
+                ignore_conflicts, packages, tag = False, False, None
+            currentflag = flag
+            file = value
+        else:
+            if currentflag is None:
+                raise argparse.ArgumentError('--%s is only allowed after one of %s' % (
+                    flag, ' '.join(['--%s' % f for f in ALL_FLAGS_SET])))
+            if flag == FLAG_IGNORE_CONFLICTS:
+                ignore_conflicts = True
+            elif flag == FLAG_PACKAGES:
+                packages = True
+            elif flag == FLAG_TAG:
+                tag = value[0]
+
+
+    if currentflag:
+        r.append(FlagFile(currentflag, file, ignore_conflicts, packages, tag))
+    return r
 
 
 def main(argv):
     # Parse arguments.
     args = vars(get_args())
+    flagfiles = parse_ordered_flags(args['ordered_flags'])
 
     # Initialize API->flags dictionary.
     flags = FlagsDict()
@@ -300,28 +350,28 @@
     flags.assign_flag(FLAG_SDK, flags.filter_apis(IS_SERIALIZATION))
 
     # (2) Merge text files with a known flag into the dictionary.
-    for flag in ALL_FLAGS:
-        for filename in args[flag]:
-            flags.assign_flag(flag, read_lines(filename), filename)
+    for info in flagfiles:
+        if (not info.ignore_conflicts) and (not info.packages):
+            flags.assign_flag(info.flag, read_lines(info.file), info.file, info.tag)
 
     # Merge text files where conflicts should be ignored.
     # This will only assign the given flag if:
     # (a) the entry exists, and
     # (b) it has not been assigned any other flag.
     # Because of (b), this must run after all strict assignments have been performed.
-    for flag in ALL_FLAGS:
-        for filename in args[flag + FLAG_IGNORE_CONFLICTS_SUFFIX]:
-            valid_entries = flags.get_valid_subset_of_unassigned_apis(read_lines(filename))
-            flags.assign_flag(flag, valid_entries, filename)
+    for info in flagfiles:
+        if info.ignore_conflicts:
+            valid_entries = flags.get_valid_subset_of_unassigned_apis(read_lines(info.file))
+            flags.assign_flag(info.flag, valid_entries, filename, info.tag)
 
     # All members in the specified packages will be assigned the appropriate flag.
-    for flag in ALL_FLAGS:
-        for filename in args[flag + FLAG_PACKAGES_SUFFIX]:
-            packages_needing_list = set(read_lines(filename))
+    for info in flagfiles:
+        if info.packages:
+            packages_needing_list = set(read_lines(info.file))
             should_add_signature_to_list = lambda sig,lists: extract_package(
                 sig) in packages_needing_list and not lists
             valid_entries = flags.filter_apis(should_add_signature_to_list)
-            flags.assign_flag(flag, valid_entries)
+            flags.assign_flag(info.flag, valid_entries, info.file, info.tag)
 
     # Mark all remaining entries as blocked.
     flags.assign_flag(FLAG_BLOCKED, flags.filter_apis(HAS_NO_API_LIST_ASSIGNED))
diff --git a/tools/stats_log_api_gen/Android.bp b/tools/stats_log_api_gen/Android.bp
index e3b6db0..c0893f7 100644
--- a/tools/stats_log_api_gen/Android.bp
+++ b/tools/stats_log_api_gen/Android.bp
@@ -126,6 +126,9 @@
         host: {
             static_libs: ["libstatssocket"],
         },
+        darwin: {
+            enabled: false,
+        },
     },
 }
 
diff --git a/tools/stats_log_api_gen/Collation.cpp b/tools/stats_log_api_gen/Collation.cpp
index a230de4..2608097 100644
--- a/tools/stats_log_api_gen/Collation.cpp
+++ b/tools/stats_log_api_gen/Collation.cpp
@@ -20,7 +20,7 @@
 
 #include <map>
 
-#include "frameworks/base/cmds/statsd/src/atoms.pb.h"
+#include "frameworks/proto_logging/stats/atoms.pb.h"
 
 namespace android {
 namespace stats_log_api_gen {
diff --git a/tools/stats_log_api_gen/Collation.h b/tools/stats_log_api_gen/Collation.h
index 10b34ec..3deb3ae 100644
--- a/tools/stats_log_api_gen/Collation.h
+++ b/tools/stats_log_api_gen/Collation.h
@@ -24,7 +24,7 @@
 #include <set>
 #include <vector>
 
-#include "frameworks/base/cmds/statsd/src/atom_field_options.pb.h"
+#include "frameworks/proto_logging/stats/atom_field_options.pb.h"
 
 namespace android {
 namespace stats_log_api_gen {
diff --git a/tools/stats_log_api_gen/main.cpp b/tools/stats_log_api_gen/main.cpp
index b888ce9..416dfdd 100644
--- a/tools/stats_log_api_gen/main.cpp
+++ b/tools/stats_log_api_gen/main.cpp
@@ -9,7 +9,7 @@
 #include <vector>
 
 #include "Collation.h"
-#include "frameworks/base/cmds/statsd/src/atoms.pb.h"
+#include "frameworks/proto_logging/stats/atoms.pb.h"
 #include "java_writer.h"
 #include "java_writer_q.h"
 #include "native_writer.h"
diff --git a/tools/stats_log_api_gen/test.proto b/tools/stats_log_api_gen/test.proto
index aaa488e..a3ea785 100644
--- a/tools/stats_log_api_gen/test.proto
+++ b/tools/stats_log_api_gen/test.proto
@@ -16,8 +16,8 @@
 
 syntax = "proto2";
 
-import "frameworks/base/cmds/statsd/src/atoms.proto";
-import "frameworks/base/cmds/statsd/src/atom_field_options.proto";
+import "frameworks/proto_logging/stats/atoms.proto";
+import "frameworks/proto_logging/stats/atom_field_options.proto";
 
 package android.stats_log_api_gen;
 
diff --git a/wifi/Android.bp b/wifi/Android.bp
index 1cc5073..8b89959 100644
--- a/wifi/Android.bp
+++ b/wifi/Android.bp
@@ -76,25 +76,34 @@
     "//packages/apps/Settings/tests/robotests", // TODO(b/161767237): remove
 ]
 
-// wifi-service needs pre-jarjared version of framework-wifi so it can reference copied utility
-// classes before they are renamed.
-java_library {
-    name: "framework-wifi-pre-jarjar",
+// defaults shared between `framework-wifi` & `framework-wifi-pre-jarjar`
+// java_sdk_library `framework-wifi` needs sources to generate stubs, so it cannot reuse
+// `framework-wifi-pre-jarjar`
+java_defaults {
+    name: "framework-wifi-defaults",
     defaults: ["wifi-module-sdk-version-defaults"],
-    sdk_version: "module_current",
     static_libs: [
         "framework-wifi-util-lib",
         "android.hardware.wifi-V1.0-java-constants",
+        "modules-utils-build",
     ],
     libs: [
-        "framework-annotations-lib",
         "unsupportedappusage", // for android.compat.annotation.UnsupportedAppUsage
     ],
     srcs: [
         ":framework-wifi-updatable-sources",
         ":framework-wifi-util-lib-aidls",
     ],
-    // java_api_finder must accompany `srcs`
+}
+
+// wifi-service needs pre-jarjared version of framework-wifi so it can reference copied utility
+// classes before they are renamed.
+java_library {
+    name: "framework-wifi-pre-jarjar",
+    defaults: ["framework-wifi-defaults"],
+    sdk_version: "module_current",
+    libs: ["framework-annotations-lib"],
+    // java_api_finder must accompany `srcs` (`srcs` defined in `framework-wifi-defaults`)
     plugins: ["java_api_finder"],
     installable: false,
     visibility: [
@@ -108,18 +117,7 @@
     name: "framework-wifi",
     defaults: [
         "framework-module-defaults",
-        "wifi-module-sdk-version-defaults",
-    ],
-    static_libs: [
-        "framework-wifi-util-lib",
-        "android.hardware.wifi-V1.0-java-constants",
-    ],
-    libs: [
-        "unsupportedappusage", // for android.compat.annotation.UnsupportedAppUsage
-    ],
-    srcs: [
-        ":framework-wifi-updatable-sources",
-        ":framework-wifi-util-lib-aidls",
+        "framework-wifi-defaults",
     ],
 
     jarjar_rules: ":wifi-jarjar-rules",
diff --git a/wifi/aidl-export/android/net/wifi/p2p/nsd/WifiP2pServiceInfo.aidl b/wifi/aidl-export/android/net/wifi/p2p/nsd/WifiP2pServiceInfo.aidl
index cf2cb4a..57055f7 100644
--- a/wifi/aidl-export/android/net/wifi/p2p/nsd/WifiP2pServiceInfo.aidl
+++ b/wifi/aidl-export/android/net/wifi/p2p/nsd/WifiP2pServiceInfo.aidl
@@ -14,6 +14,6 @@
  * limitations under the License.
  */
 
-package android.net.wifi.p2p.servicediscovery;
+package android.net.wifi.p2p.nsd;
 
 parcelable WifiP2pServiceInfo;
diff --git a/wifi/aidl-export/android/net/wifi/p2p/nsd/WifiP2pServiceRequest.aidl b/wifi/aidl-export/android/net/wifi/p2p/nsd/WifiP2pServiceRequest.aidl
index d5a1e8f..e4d28bb 100644
--- a/wifi/aidl-export/android/net/wifi/p2p/nsd/WifiP2pServiceRequest.aidl
+++ b/wifi/aidl-export/android/net/wifi/p2p/nsd/WifiP2pServiceRequest.aidl
@@ -14,6 +14,6 @@
  * limitations under the License.
  */
 
-package android.net.wifi.p2p.servicediscovery;
+package android.net.wifi.p2p.nsd;
 
 parcelable WifiP2pServiceRequest;
diff --git a/wifi/jarjar-rules.txt b/wifi/jarjar-rules.txt
index e253ae2..75b5e72 100644
--- a/wifi/jarjar-rules.txt
+++ b/wifi/jarjar-rules.txt
@@ -36,6 +36,7 @@
 rule android.net.ipmemorystore.NetworkAttributesParcelable* com.android.wifi.x.@0
 rule android.net.ipmemorystore.SameL3NetworkResponseParcelable* com.android.wifi.x.@0
 rule android.net.ipmemorystore.StatusParcelable* com.android.wifi.x.@0
+rule android.net.networkstack.aidl.** com.android.wifi.x.@0
 
 # Net utils (includes Network Stack helper classes).
 rule android.net.DhcpResults* com.android.wifi.x.@0
@@ -70,7 +71,6 @@
 rule android.net.util.InterfaceParams* com.android.wifi.x.@0
 rule android.net.util.SharedLog* com.android.wifi.x.@0
 rule android.net.util.NetUtils* com.android.wifi.x.@0
-rule android.net.util.IpUtils* com.android.wifi.x.@0
 
 rule androidx.annotation.** com.android.wifi.x.@0
 
@@ -89,8 +89,6 @@
 rule android.util.LocalLog* com.android.wifi.x.@0
 rule android.util.Rational* com.android.wifi.x.@0
 
-rule android.os.BasicShellCommandHandler* com.android.wifi.x.@0
-
 # Use our statically linked bouncy castle library
 rule org.bouncycastle.** com.android.wifi.x.@0
 # Use our statically linked protobuf library
@@ -124,3 +122,4 @@
 rule com.android.internal.util.Protocol* com.android.wifi.x.@0
 
 rule com.android.net.module.util.** com.android.wifi.x.@0
+rule com.android.modules.utils.** com.android.wifi.x.@0
diff --git a/wifi/java/android/net/wifi/IWifiManager.aidl b/wifi/java/android/net/wifi/IWifiManager.aidl
index 5063ad6..3f79364 100644
--- a/wifi/java/android/net/wifi/IWifiManager.aidl
+++ b/wifi/java/android/net/wifi/IWifiManager.aidl
@@ -187,7 +187,7 @@
 
     void factoryReset(String packageName);
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     Network getCurrentNetwork();
 
     byte[] retrieveBackupData();
diff --git a/wifi/java/android/net/wifi/RttManager.java b/wifi/java/android/net/wifi/RttManager.java
index 73c52ab..034defb 100644
--- a/wifi/java/android/net/wifi/RttManager.java
+++ b/wifi/java/android/net/wifi/RttManager.java
@@ -173,7 +173,7 @@
 
     /** @deprecated Use the new {@link android.net.wifi.RttManager#getRttCapabilities()} API.*/
     @Deprecated
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public Capabilities getCapabilities() {
         throw new UnsupportedOperationException(
                 "getCapabilities is not supported in the adaptation layer");
diff --git a/wifi/java/android/net/wifi/ScanResult.java b/wifi/java/android/net/wifi/ScanResult.java
index aa3a139..c269ba6 100644
--- a/wifi/java/android/net/wifi/ScanResult.java
+++ b/wifi/java/android/net/wifi/ScanResult.java
@@ -22,6 +22,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.net.wifi.WifiAnnotations.ChannelWidth;
 import android.net.wifi.WifiAnnotations.WifiStandard;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -375,7 +376,7 @@
      * @deprecated use is80211mcResponder() instead
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean is80211McRTTResponder;
 
     /**
@@ -712,47 +713,47 @@
      */
     public static class InformationElement {
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final int EID_SSID = 0;
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final int EID_SUPPORTED_RATES = 1;
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final int EID_TIM = 5;
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final int EID_BSS_LOAD = 11;
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final int EID_ERP = 42;
         /** @hide */
         public static final int EID_HT_CAPABILITIES = 45;
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final int EID_RSN = 48;
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final int EID_EXTENDED_SUPPORTED_RATES = 50;
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final int EID_HT_OPERATION = 61;
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final int EID_INTERWORKING = 107;
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final int EID_ROAMING_CONSORTIUM = 111;
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final int EID_EXTENDED_CAPS = 127;
         /** @hide */
         public static final int EID_VHT_CAPABILITIES = 191;
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final int EID_VHT_OPERATION = 192;
         /** @hide */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final int EID_VSA = 221;
         /** @hide */
         public static final int EID_EXTENSION_PRESENT = 255;
diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java
index 71f0ab8..8c32d18 100644
--- a/wifi/java/android/net/wifi/WifiConfiguration.java
+++ b/wifi/java/android/net/wifi/WifiConfiguration.java
@@ -873,7 +873,7 @@
      * @hide
      * Number of reports indicating no Internet Access
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int numNoInternetAccessReports;
 
     /**
@@ -893,7 +893,7 @@
      * this configuration and selects "don't ask again".
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean noInternetAccessExpected;
 
     /**
@@ -933,7 +933,7 @@
      * @deprecated only kept for @UnsupportedAppUsage
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean selfAdded;
 
     /**
diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java
index fb6af5b..b7f4c96 100644
--- a/wifi/java/android/net/wifi/WifiManager.java
+++ b/wifi/java/android/net/wifi/WifiManager.java
@@ -1047,7 +1047,7 @@
      * @see #ACTION_LINK_CONFIGURATION_CHANGED
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final String LINK_CONFIGURATION_CHANGED_ACTION =
             "android.net.wifi.LINK_CONFIGURATION_CHANGED";
 
@@ -1256,7 +1256,7 @@
      * change is significant enough to change the RSSI signal level.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int RSSI_LEVELS = 5;
 
     //TODO (b/146346676): This needs to be removed, not used in the code.
diff --git a/wifi/java/android/net/wifi/WifiScanner.java b/wifi/java/android/net/wifi/WifiScanner.java
index 94771ac..4163c88 100644
--- a/wifi/java/android/net/wifi/WifiScanner.java
+++ b/wifi/java/android/net/wifi/WifiScanner.java
@@ -1239,7 +1239,7 @@
      * @param bssidInfos access points to watch
      */
     @Deprecated
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public void configureWifiChange(
             int rssiSampleSize,                             /* sample size for RSSI averaging */
             int lostApSampleSize,                           /* samples to confirm AP's loss */
@@ -1273,7 +1273,7 @@
      *                 provided on {@link #stopTrackingWifiChange}
      */
     @Deprecated
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public void startTrackingWifiChange(WifiChangeListener listener) {
         throw new UnsupportedOperationException();
     }
@@ -1284,7 +1284,7 @@
      * #stopTrackingWifiChange}
      */
     @Deprecated
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public void stopTrackingWifiChange(WifiChangeListener listener) {
         throw new UnsupportedOperationException();
     }
@@ -1292,7 +1292,7 @@
     /** @hide */
     @SystemApi
     @Deprecated
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public void configureWifiChange(WifiChangeSettings settings) {
         throw new UnsupportedOperationException();
     }
@@ -1348,7 +1348,7 @@
      *                 also be provided on {@link #stopTrackingBssids}
      */
     @Deprecated
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public void startTrackingBssids(BssidInfo[] bssidInfos,
                                     int apLostThreshold, BssidListener listener) {
         throw new UnsupportedOperationException();
@@ -1359,7 +1359,7 @@
      * @param listener same object provided in {@link #startTrackingBssids}
      */
     @Deprecated
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public void stopTrackingBssids(BssidListener listener) {
         throw new UnsupportedOperationException();
     }
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pConfig.java b/wifi/java/android/net/wifi/p2p/WifiP2pConfig.java
index d479892..d3a6bac 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pConfig.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pConfig.java
@@ -23,6 +23,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.net.MacAddress;
 import android.net.wifi.WpsInfo;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.text.TextUtils;
@@ -138,7 +139,7 @@
     public int groupOwnerIntent = GROUP_OWNER_INTENT_AUTO;
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int netId = WifiP2pGroup.NETWORK_ID_PERSISTENT;
 
     /**
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pDevice.java b/wifi/java/android/net/wifi/p2p/WifiP2pDevice.java
index 710175f..567637a 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pDevice.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pDevice.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.util.Log;
@@ -185,7 +186,7 @@
      *  Note: The events formats can be looked up in the wpa_supplicant code
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public WifiP2pDevice(String string) throws IllegalArgumentException {
         String[] tokens = string.split("[ \n]");
         Matcher match;
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pDeviceList.java b/wifi/java/android/net/wifi/p2p/WifiP2pDeviceList.java
index ededf67..e7866e6 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pDeviceList.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pDeviceList.java
@@ -17,6 +17,7 @@
 package android.net.wifi.p2p;
 
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.text.TextUtils;
@@ -83,7 +84,7 @@
      * @param device to be updated
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void update(WifiP2pDevice device) {
         updateSupplicantDetails(device);
         mDevices.get(device.deviceAddress).status = device.status;
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pManager.java b/wifi/java/android/net/wifi/p2p/WifiP2pManager.java
index 724ccf0..5a27087 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pManager.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pManager.java
@@ -399,7 +399,7 @@
     public static final int CANCEL_CONNECT_SUCCEEDED                = BASE + 12;
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int CREATE_GROUP                            = BASE + 13;
     /** @hide */
     public static final int CREATE_GROUP_FAILED                     = BASE + 14;
@@ -1105,7 +1105,7 @@
             }
         }
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         private int putListener(Object listener) {
             if (listener == null) return INVALID_LISTENER_KEY;
             int key;
@@ -1417,7 +1417,7 @@
      * {@link ActionListener#onSuccess} or {@link ActionListener#onFailure}.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void startWps(Channel c, WpsInfo wps, ActionListener listener) {
         checkChannel(c);
         c.mAsyncChannel.sendMessage(START_WPS, 0, c.putListener(listener), wps);
@@ -1698,7 +1698,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @RequiresPermission(android.Manifest.permission.CONFIGURE_WIFI_DISPLAY)
     public void setWFDInfo(@NonNull Channel c, @NonNull WifiP2pWfdInfo wfdInfo,
             @Nullable ActionListener listener) {
diff --git a/wifi/java/android/net/wifi/p2p/nsd/WifiP2pServiceInfo.java b/wifi/java/android/net/wifi/p2p/nsd/WifiP2pServiceInfo.java
index 37b442b..5d018e7 100644
--- a/wifi/java/android/net/wifi/p2p/nsd/WifiP2pServiceInfo.java
+++ b/wifi/java/android/net/wifi/p2p/nsd/WifiP2pServiceInfo.java
@@ -170,7 +170,7 @@
     }
 
     /** Implement the Parcelable interface {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final @android.annotation.NonNull Creator<WifiP2pServiceInfo> CREATOR =
         new Creator<WifiP2pServiceInfo>() {
             public WifiP2pServiceInfo createFromParcel(Parcel in) {
diff --git a/wifi/java/android/net/wifi/p2p/nsd/WifiP2pServiceRequest.java b/wifi/java/android/net/wifi/p2p/nsd/WifiP2pServiceRequest.java
index 68cbb88..dea0477 100644
--- a/wifi/java/android/net/wifi/p2p/nsd/WifiP2pServiceRequest.java
+++ b/wifi/java/android/net/wifi/p2p/nsd/WifiP2pServiceRequest.java
@@ -265,7 +265,7 @@
     }
 
     /** Implement the Parcelable interface {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final @android.annotation.NonNull Creator<WifiP2pServiceRequest> CREATOR =
         new Creator<WifiP2pServiceRequest>() {
             public WifiP2pServiceRequest createFromParcel(Parcel in) {
diff --git a/wifi/tests/Android.bp b/wifi/tests/Android.bp
index 6a39959..b710a14 100644
--- a/wifi/tests/Android.bp
+++ b/wifi/tests/Android.bp
@@ -31,10 +31,11 @@
     static_libs: [
         "androidx.test.rules",
         "core-test-rules",
+        "frameworks-base-testutils",
         "guava",
         "mockito-target-minus-junit4",
+        "modules-utils-build",
         "net-tests-utils",
-        "frameworks-base-testutils",
         "truth-prebuilt",
     ],
 
@@ -47,4 +48,8 @@
         "device-tests",
         "mts",
     ],
+
+    // static libs used by both framework-wifi & FrameworksWifiApiTests. Need to rename test usage
+    // to a different package name to prevent conflict with the copy in production code.
+    jarjar_rules: "test-jarjar-rules.txt",
 }
diff --git a/wifi/tests/src/android/net/wifi/SoftApConfigurationTest.java b/wifi/tests/src/android/net/wifi/SoftApConfigurationTest.java
index 1a44270..31e508c 100644
--- a/wifi/tests/src/android/net/wifi/SoftApConfigurationTest.java
+++ b/wifi/tests/src/android/net/wifi/SoftApConfigurationTest.java
@@ -80,12 +80,12 @@
         assertThat(original.getMaxNumberOfClients()).isEqualTo(0);
 
         SoftApConfiguration unparceled = parcelUnparcel(original);
-        assertThat(unparceled).isNotSameAs(original);
+        assertThat(unparceled).isNotSameInstanceAs(original);
         assertThat(unparceled).isEqualTo(original);
         assertThat(unparceled.hashCode()).isEqualTo(original.hashCode());
 
         SoftApConfiguration copy = new SoftApConfiguration.Builder(original).build();
-        assertThat(copy).isNotSameAs(original);
+        assertThat(copy).isNotSameInstanceAs(original);
         assertThat(copy).isEqualTo(original);
         assertThat(copy.hashCode()).isEqualTo(original.hashCode());
     }
@@ -104,12 +104,12 @@
         assertThat(original.getMaxNumberOfClients()).isEqualTo(0);
 
         SoftApConfiguration unparceled = parcelUnparcel(original);
-        assertThat(unparceled).isNotSameAs(original);
+        assertThat(unparceled).isNotSameInstanceAs(original);
         assertThat(unparceled).isEqualTo(original);
         assertThat(unparceled.hashCode()).isEqualTo(original.hashCode());
 
         SoftApConfiguration copy = new SoftApConfiguration.Builder(original).build();
-        assertThat(copy).isNotSameAs(original);
+        assertThat(copy).isNotSameInstanceAs(original);
         assertThat(copy).isEqualTo(original);
         assertThat(copy.hashCode()).isEqualTo(original.hashCode());
     }
@@ -145,12 +145,12 @@
         assertThat(original.getAllowedClientList()).isEqualTo(testAllowedClientList);
 
         SoftApConfiguration unparceled = parcelUnparcel(original);
-        assertThat(unparceled).isNotSameAs(original);
+        assertThat(unparceled).isNotSameInstanceAs(original);
         assertThat(unparceled).isEqualTo(original);
         assertThat(unparceled.hashCode()).isEqualTo(original.hashCode());
 
         SoftApConfiguration copy = new SoftApConfiguration.Builder(original).build();
-        assertThat(copy).isNotSameAs(original);
+        assertThat(copy).isNotSameInstanceAs(original);
         assertThat(copy).isEqualTo(original);
         assertThat(copy.hashCode()).isEqualTo(original.hashCode());
     }
@@ -171,12 +171,12 @@
 
 
         SoftApConfiguration unparceled = parcelUnparcel(original);
-        assertThat(unparceled).isNotSameAs(original);
+        assertThat(unparceled).isNotSameInstanceAs(original);
         assertThat(unparceled).isEqualTo(original);
         assertThat(unparceled.hashCode()).isEqualTo(original.hashCode());
 
         SoftApConfiguration copy = new SoftApConfiguration.Builder(original).build();
-        assertThat(copy).isNotSameAs(original);
+        assertThat(copy).isNotSameInstanceAs(original);
         assertThat(copy).isEqualTo(original);
         assertThat(copy.hashCode()).isEqualTo(original.hashCode());
     }
@@ -198,12 +198,12 @@
 
 
         SoftApConfiguration unparceled = parcelUnparcel(original);
-        assertThat(unparceled).isNotSameAs(original);
+        assertThat(unparceled).isNotSameInstanceAs(original);
         assertThat(unparceled).isEqualTo(original);
         assertThat(unparceled.hashCode()).isEqualTo(original.hashCode());
 
         SoftApConfiguration copy = new SoftApConfiguration.Builder(original).build();
-        assertThat(copy).isNotSameAs(original);
+        assertThat(copy).isNotSameInstanceAs(original);
         assertThat(copy).isEqualTo(original);
         assertThat(copy.hashCode()).isEqualTo(original.hashCode());
     }
diff --git a/wifi/tests/test-jarjar-rules.txt b/wifi/tests/test-jarjar-rules.txt
new file mode 100644
index 0000000..41b97ab
--- /dev/null
+++ b/wifi/tests/test-jarjar-rules.txt
@@ -0,0 +1 @@
+rule com.android.modules.utils.** com.android.wifi.test.x.@0